ZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYWxsYXJjaC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9hbGxhcmNoLmJiY2xhc3MKaW5kZXggMjA4Y2RlNi4uZGRjMmE4NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9hbGxhcmNoLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9hbGxhcmNoLmJiY2xhc3MKQEAgLTE3LDYgKzE3LDcgQEAKIAogICAgICAgICAjIFNldCB0aGVzZSB0byBhIGNvbW1vbiBzZXQgb2YgdmFsdWVzLCB3ZSBzaG91bGRuJ3QgYmUgdXNpbmcgdGhlbSBvdGhlciB0aGF0IGZvciBXT1JLRElSIGRpcmVjdG9yeQogICAgICAgICAjIG5hbWluZyBhbnl3YXkKKyAgICAgICAgZC5zZXRWYXIoImJhc2VsaWIiLCAibGliIikKICAgICAgICAgZC5zZXRWYXIoIlRBUkdFVF9BUkNIIiwgImFsbGFyY2giKQogICAgICAgICBkLnNldFZhcigiVEFSR0VUX09TIiwgImxpbnV4IikKICAgICAgICAgZC5zZXRWYXIoIlRBUkdFVF9DQ19BUkNIIiwgIm5vbmUiKQpAQCAtNDEsNiArNDIsMTAgQEAKICAgICAgICAgZC5zZXRWYXIoIkVYQ0xVREVfRlJPTV9TSExJQlMiLCAiMSIpCiAgICAgICAgIGQuc2V0VmFyKCJJTkhJQklUX1BBQ0tBR0VfREVCVUdfU1BMSVQiLCAiMSIpCiAgICAgICAgIGQuc2V0VmFyKCJJTkhJQklUX1BBQ0tBR0VfU1RSSVAiLCAiMSIpCisKKyAgICAgICAgIyBUaGVzZSBtdWx0aWxpYiB2YWx1ZXMgc2hvdWxkbid0IGNoYW5nZSBhbGxhcmNoIHBhY2thZ2VzIHNvIGV4Y2x1ZGUgdGhlbQorICAgICAgICBkLnNldFZhckZsYWcoImVtaXRfcGtnZGF0YSIsICJ2YXJkZXBzZXhjbHVkZSIsICJNVUxUSUxJQl9WQVJJQU5UUyIpCisgICAgICAgIGQuc2V0VmFyRmxhZygid3JpdGVfc3BlY2ZpbGUiLCAidmFyZGVwc2V4Y2x1ZGUiLCAiTVVMVElMSUJTIikKICAgICBlbGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ3BhY2thZ2Vncm91cCcsIGQpIGFuZCBub3QgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnbmF0aXZlc2RrJywgZCk6CiAgICAgICAgIGJiLmVycm9yKCJQbGVhc2UgZW5zdXJlIHJlY2lwZSAlcyBzZXRzIFBBQ0tBR0VfQVJDSCBiZWZvcmUgaW5oZXJpdCBwYWNrYWdlZ3JvdXAiICUgZC5nZXRWYXIoIkZJTEUiLCBUcnVlKSkKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYXJjaGl2ZXIuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYXJjaGl2ZXIuYmJjbGFzcwppbmRleCAyZjNiMjc4Li45MjM5OTgzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2FyY2hpdmVyLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9hcmNoaXZlci5iYmNsYXNzCkBAIC0xMzIsNyArMTMyLDI2IEBACiAKICAgICBhcl9vdXRkaXIgPSBkLmdldFZhcignQVJDSElWRVJfT1VURElSJywgVHJ1ZSkKICAgICBiYi5ub3RlKCdBcmNoaXZpbmcgdGhlIG9yaWdpbmFsIHNvdXJjZS4uLicpCi0gICAgZmV0Y2ggPSBiYi5mZXRjaDIuRmV0Y2goW10sIGQpCisgICAgdXJscyA9IGQuZ2V0VmFyKCJTUkNfVVJJIiwgVHJ1ZSkuc3BsaXQoKQorICAgICMgZGVzdHN1ZmZpeCAoZ2l0IGZldGNoZXIpIGFuZCBzdWJkaXIgKGV2ZXJ5dGhpbmcgZWxzZSkgYXJlIGFsbG93ZWQgdG8gYmUKKyAgICAjIGFic29sdXRlIHBhdGhzIChmb3IgZXhhbXBsZSwgZGVzdHN1ZmZpeD0ke1N9L2Zvb2JhcikuCisgICAgIyBUaGF0IG1lc3NlcyB3aXRoIHVucGFja2luZyBpbnNpZGUgb3VyIHRtcGRpciBiZWxvdywgYmVjYXVzZSB0aGUgZmV0Y2hlcnMKKyAgICAjIHdpbGwgdGhlbiB1bnBhY2sgaW4gdGhhdCBkaXJlY3RvcnkgYW5kIGNvbXBsZXRlbHkgaWdub3JlIHRoZSB0bXBkaXIuCisgICAgIyBUaGF0IGJyZWFrcyBwYXJhbGxlbCB0YXNrcyByZWx5aW5nIG9uICR7U30sIGxpa2UgZG9fY29tcGlsZS4KKyAgICAjCisgICAgIyBUbyBzb2x2ZSB0aGlzLCB3ZSByZW1vdmUgdGhlc2UgcGFyYW1ldGVycyBmcm9tIGFsbCBVUkxzLgorICAgICMgV2UgZG8gdGhpcyBldmVuIGZvciByZWxhdGl2ZSBwYXRocyBiZWNhdXNlIGl0IG1ha2VzIHRoZSBjb250ZW50IG9mIHRoZQorICAgICMgYXJjaGl2ZXMgbW9yZSB1c2VmdWwgKG5vIGV4dHJhIHBhdGhzIHRoYXQgYXJlIG9ubHkgdXNlZCBkdXJpbmcKKyAgICAjIGNvbXBpbGF0aW9uKS4KKyAgICBmb3IgaSwgdXJsIGluIGVudW1lcmF0ZSh1cmxzKToKKyAgICAgICAgZGVjb2RlZCA9IGJiLmZldGNoMi5kZWNvZGV1cmwodXJsKQorICAgICAgICBmb3IgcGFyYW0gaW4gKCdkZXN0c3VmZml4JywgJ3N1YmRpcicpOgorICAgICAgICAgICAgaWYgcGFyYW0gaW4gZGVjb2RlZFs1XToKKyAgICAgICAgICAgICAgICBkZWwgZGVjb2RlZFs1XVtwYXJhbV0KKyAgICAgICAgZW5jb2RlZCA9IGJiLmZldGNoMi5lbmNvZGV1cmwoZGVjb2RlZCkKKyAgICAgICAgdXJsc1tpXSA9IGVuY29kZWQKKyAgICBmZXRjaCA9IGJiLmZldGNoMi5GZXRjaCh1cmxzLCBkKQorICAgIHRhcmJhbGxfc3VmZml4ID0ge30KICAgICBmb3IgdXJsIGluIGZldGNoLnVybHM6CiAgICAgICAgIGxvY2FsID0gZmV0Y2gubG9jYWxwYXRoKHVybCkucnN0cmlwKCIvIik7CiAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGxvY2FsKToKQEAgLTE0MCw3ICsxNTksMjEgQEAKICAgICAgICAgZWxpZiBvcy5wYXRoLmlzZGlyKGxvY2FsKToKICAgICAgICAgICAgIHRtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAoZGlyPWQuZ2V0VmFyKCdBUkNISVZFUl9XT1JLRElSJywgVHJ1ZSkpCiAgICAgICAgICAgICBmZXRjaC51bnBhY2sodG1wZGlyLCAodXJsLCkpCi0gICAgICAgICAgICBjcmVhdGVfdGFyYmFsbChkLCB0bXBkaXIgKyAnLy4nLCAnJywgYXJfb3V0ZGlyKQorICAgICAgICAgICAgIyBUbyBoYW5kbGUgcmVjaXBlcyB3aXRoIG1vcmUgdGhhbiBvbmUgc291cmNlLCB3ZSBhZGQgdGhlICJuYW1lIgorICAgICAgICAgICAgIyBVUkwgcGFyYW1ldGVyIGFzIHN1ZmZpeC4gV2UgdHJlYXQgaXQgYXMgYW4gZXJyb3Igd2hlbgorICAgICAgICAgICAgIyB0aGVyZSdzIG1vcmUgdGhhbiBvbmUgVVJMIHdpdGhvdXQgYSBuYW1lLCBvciBhIG5hbWUgZ2V0cyByZXVzZWQuCisgICAgICAgICAgICAjIFRoaXMgaXMgYW4gYWRkaXRpb25hbCBzYWZldHkgbmV0LCBpbiBwcmFjdGljZSB0aGUgbmFtZSBoYXMKKyAgICAgICAgICAgICMgdG8gYmUgc2V0IHdoZW4gdXNpbmcgdGhlIGdpdCBmZXRjaGVyLCBvdGhlcndpc2UgU1JDUkVWIGNhbm5vdAorICAgICAgICAgICAgIyBiZSBzZXQgc2VwYXJhdGVseSBmb3IgZWFjaCBVUkwuCisgICAgICAgICAgICBwYXJhbXMgPSBiYi5mZXRjaDIuZGVjb2RldXJsKHVybClbNV0KKyAgICAgICAgICAgIG5hbWUgPSBwYXJhbXMuZ2V0KCduYW1lJywgJycpCisgICAgICAgICAgICBpZiBuYW1lIGluIHRhcmJhbGxfc3VmZml4OgorICAgICAgICAgICAgICAgIGlmIG5vdCBuYW1lOgorICAgICAgICAgICAgICAgICAgICBiYi5mYXRhbCgiQ2Fubm90IGRldGVybWluZSBhcmNoaXZlIG5hbWVzIGZvciBvcmlnaW5hbCBzb3VyY2UgYmVjYXVzZSAnbmFtZScgVVJMIHBhcmFtZXRlciBpcyB1bnNldCBpbiBtb3JlIHRoYW4gb25lIFVSTC4gQWRkIGl0IHRvIGF0IGxlYXN0IG9uZSBvZiB0aGVzZTogJXMgJXMiICUgKHRhcmJhbGxfc3VmZml4W25hbWVdLCB1cmwpKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGJiLmZhdGFsKCJDYW5ub3QgZGV0ZXJtaW5lIGFyY2hpdmUgbmFtZXMgZm9yIG9yaWdpbmFsIHNvdXJjZSBiZWNhdXNlICduYW1lPScgVVJMIHBhcmFtZXRlciAnJXMnIGlzIHVzZWQgdHdpY2UuIE1ha2UgaXQgdW5pcXVlIGluOiAlcyAlcyIgJSAodGFyYmFsbF9zdWZmaXhbbmFtZV0sIHVybCkpCisgICAgICAgICAgICB0YXJiYWxsX3N1ZmZpeFtuYW1lXSA9IHVybAorICAgICAgICAgICAgY3JlYXRlX3RhcmJhbGwoZCwgdG1wZGlyICsgJy8uJywgbmFtZSwgYXJfb3V0ZGlyKQogCiAgICAgIyBFbWl0IHBhdGNoIHNlcmllcyBmaWxlcyBmb3IgJ29yaWdpbmFsJwogICAgIGJiLm5vdGUoJ1dyaXRpbmcgcGF0Y2ggc2VyaWVzIGZpbGVzLi4uJykKQEAgLTI3MCw5ICszMDMsMTAgQEAKICAgICAgICAgcmV0dXJuCiAgICAgYXJfb3V0ZGlyID0gZC5nZXRWYXIoJ0FSQ0hJVkVSX09VVERJUicsIFRydWUpCiAgICAgYXJfd29ya2RpciA9IGQuZ2V0VmFyKCdBUkNISVZFUl9XT1JLRElSJywgVHJ1ZSkKKyAgICBwbiA9IGQuZ2V0VmFyKCdQTicsIFRydWUpCiAKICAgICAjIFRoZSBrZXJuZWwgY2xhc3MgZnVuY3Rpb25zIHJlcXVpcmUgaXQgdG8gYmUgb24gd29yay1zaGFyZWQsIHNvIHdlIGRvbnQgY2hhbmdlIFdPUktESVIKLSAgICBpZiBub3QgYmIuZGF0YS5pbmhlcml0c19jbGFzcygna2VybmVsLXlvY3RvJywgZCk6CisgICAgaWYgbm90IChiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdrZXJuZWwteW9jdG8nLCBkKSBvciBwbi5zdGFydHN3aXRoKCdnY2Mtc291cmNlJykpOgogICAgICAgICAjIENoYW5nZSB0aGUgV09SS0RJUiB0byBtYWtlIGRvX3VucGFjayBkb19wYXRjaCBydW4gaW4gYW5vdGhlciBkaXIuCiAgICAgICAgIGQuc2V0VmFyKCdXT1JLRElSJywgYXJfd29ya2RpcikKIApAQCAtMjkwLDcgKzMyNCw3IEBACiAgICAgICAgIG9lLnBhdGguY29weXRyZWUoc3JjLCBzcmNfb3JpZykKIAogICAgICMgTWFrZSBzdXJlIGdjYyBhbmQga2VybmVsIHNvdXJjZXMgYXJlIHBhdGNoZWQgb25seSBvbmNlCi0gICAgaWYgbm90ICgoZC5nZXRWYXIoJ1NSQ19VUkknLCBUcnVlKSA9PSAiIiBvciBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdrZXJuZWwteW9jdG8nLCBkKSkpOgorICAgIGlmIG5vdCAoZC5nZXRWYXIoJ1NSQ19VUkknLCBUcnVlKSA9PSAiIiBvciAoYmIuZGF0YS5pbmhlcml0c19jbGFzcygna2VybmVsLXlvY3RvJywgZCkgb3IgcG4uc3RhcnRzd2l0aCgnZ2NjLXNvdXJjZScpKSk6CiAgICAgICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnZG9fcGF0Y2gnLCBkKQogCiAgICAgIyBDcmVhdGUgdGhlIHBhdGNoZXMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYXV0b3Rvb2xzLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2F1dG90b29scy5iYmNsYXNzCmluZGV4IDY2NDlmNWQuLmM0M2VhOWEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYXV0b3Rvb2xzLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9hdXRvdG9vbHMuYmJjbGFzcwpAQCAtMTksMTUgKzE5LDEzIEBACiAKICAgICByZXR1cm4gZGVwcyArICdnbnUtY29uZmlnLW5hdGl2ZSAnCiAKLUVYVFJBX09FTUFLRSA9ICIiCi0KIERFUEVORFNfcHJlcGVuZCA9ICIke0BhdXRvdG9vbHNfZGVwX3ByZXBlbmQoZCl9ICIKIAogaW5oZXJpdCBzaXRlaW5mbwogCiAjIFNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mIHNoZWxsIHNjcmlwdHMgd2l0aCB2YXJpYWJsZXMgZGVmaW5lZCB0byBzdXBwbHkgdGVzdAogIyByZXN1bHRzIGZvciBhdXRvY29uZiB0ZXN0cyB3ZSBjYW5ub3QgcnVuIGF0IGJ1aWxkIHRpbWUuCi1leHBvcnQgQ09ORklHX1NJVEUgPSAiJHtAc2l0ZWluZm9fZ2V0X2ZpbGVzKGQsIEZhbHNlKX0iCitleHBvcnQgQ09ORklHX1NJVEUgPSAiJHtAc2l0ZWluZm9fZ2V0X2ZpbGVzKGQpfSIKIAogYWNwYXRocyA9ICJkZWZhdWx0IgogRVhUUkFfQVVUT1JFQ09ORiA9ICItLWV4Y2x1ZGU9YXV0b3BvaW50IgpAQCAtNzcsNiArNzUsOCBAQAogCQkgICR7QGFwcGVuZF9saWJ0b29sX3N5c3Jvb3QoZCl9IgogQ09ORklHVVJFT1BUX0RFUFRSQUNLID89ICItLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZyIKIAorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgPz0gIiIKKwogQVVUT1RPT0xTX1NDUklQVF9QQVRIID89ICIke1N9IgogQ09ORklHVVJFX1NDUklQVCA/PSAiJHtBVVRPVE9PTFNfU0NSSVBUX1BBVEh9L2NvbmZpZ3VyZSIKIApAQCAtODUsNyArODUsNyBAQAogb2VfcnVuY29uZiAoKSB7CiAJIyBVc2UgcmVsYXRpdmUgcGF0aCB0byBhdm9pZCBidWlsZHBhdGhzIGluIGZpbGVzCiAJY2Znc2NyaXB0X25hbWU9ImBiYXNlbmFtZSAke0NPTkZJR1VSRV9TQ1JJUFR9YCIKLQljZmdzY3JpcHQ9YHB5dGhvbiAtYyAiaW1wb3J0IG9zOyBwcmludCBvcy5wYXRoLnJlbHBhdGgob3MucGF0aC5kaXJuYW1lKCcke0NPTkZJR1VSRV9TQ1JJUFR9JyksICcuJykiYC8kY2Znc2NyaXB0X25hbWUKKwljZmdzY3JpcHQ9YHB5dGhvbjMgLWMgImltcG9ydCBvczsgcHJpbnQob3MucGF0aC5yZWxwYXRoKG9zLnBhdGguZGlybmFtZSgnJHtDT05GSUdVUkVfU0NSSVBUfScpLCAnLicpKSJgLyRjZmdzY3JpcHRfbmFtZQogCWlmIFsgLXggIiRjZmdzY3JpcHQiIF0gOyB0aGVuCiAJCWJibm90ZSAiUnVubmluZyAkY2Znc2NyaXB0ICR7Q09ORklHVVJFT1BUU30gJHtFWFRSQV9PRUNPTkZ9ICRAIgogCQlpZiAhICR7Q0FDSEVEX0NPTkZJR1VSRVZBUlN9ICRjZmdzY3JpcHQgJHtDT05GSUdVUkVPUFRTfSAke0VYVFJBX09FQ09ORn0gIiRAIjsgdGhlbgpAQCAtMTI5LDEyICsxMjksMTYgQEAKIAogRVhUUkFDT05GRlVOQ1MgPz89ICIiCiAKK0VYVFJBX09FQ09ORl9hcHBlbmQgPSAiICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30iCisKIGRvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gImF1dG90b29sc19wcmVjb25maWd1cmUgYXV0b3Rvb2xzX2NvcHlfYWNsb2NhbHMgJHtFWFRSQUNPTkZGVU5DU30iCiBkb19jb25maWd1cmVbcG9zdGZ1bmNzXSArPSAiYXV0b3Rvb2xzX3Bvc3Rjb25maWd1cmUiCiAKLUFDTE9DQUxESVIgPSAiJHtCfS9hY2xvY2FsLWNvcHkiCitBQ0xPQ0FMRElSID0gIiR7V09SS0RJUn0vYWNsb2NhbC1jb3B5IgogCiBweXRob24gYXV0b3Rvb2xzX2NvcHlfYWNsb2NhbHMgKCkgeworICAgIGltcG9ydCBjb3B5CisKICAgICBzID0gZC5nZXRWYXIoIkFVVE9UT09MU19TQ1JJUFRfUEFUSCIsIFRydWUpCiAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHMgKyAiL2NvbmZpZ3VyZS5pbiIpIGFuZCBub3Qgb3MucGF0aC5leGlzdHMocyArICIvY29uZmlndXJlLmFjIik6CiAgICAgICAgIGlmIG5vdCBkLmdldFZhcigiQVVUT1RPT0xTX0NPUFlBQ0xPQ0FMIiwgRmFsc2UpOgpAQCAtMTYzLDM2ICsxNjcsNjMgQEAKICAgICBpZiBzdGFydCBpcyBOb25lOgogICAgICAgICBiYi5mYXRhbCgiQ291bGRuJ3QgZmluZCBvdXJzZWxmIGluIEJCX1RBU0tERVBEQVRBPyIpCiAKLSAgICAjIFdlIG5lZWQgdG8gZmluZCBjb25maWd1cmUgdGFza3Mgd2hpY2ggYXJlIGVpdGhlciBmcm9tIDx0YXJnZXQ+IC0+IDx0YXJnZXQ+Ci0gICAgIyBvciA8bmF0aXZlPiAtPiA8bmF0aXZlPiBidXQgbm90IDx0YXJnZXQ+IC0+IDxuYXRpdmU+IHVubGVzcyB0aGV5J3JlIGRpcmVjdAotICAgICMgZGVwZW5kZW5jaWVzLiBUaGlzIG1pcnJvcnMgd2hhdCB3b3VsZCBnZXQgcmVzdG9yZWQgZnJvbSBzc3RhdGUuCi0gICAgZG9uZSA9IFtzdGFydF0KLSAgICBuZXh0ID0gW3N0YXJ0XQorICAgICMgV2UgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIG00IGZpbGVzIHdlIG5lZWQgdG8gZXhwb3NlIHRvIHRoaXMgZG9fY29uZmlndXJlIHRhc2suCisgICAgIyBUaGlzIG5lZWRzIHRvIG1hdGNoIHdoYXQgd291bGQgZ2V0IHJlc3RvcmVkIGZyb20gc3N0YXRlLCB3aGljaCBpcyBjb250cm9sbGVkIAorICAgICMgdWx0aW1hdGVseSBieSBjYWxscyBmcm9tIGJpdGJha2UgdG8gc2V0c2NlbmVfZGVwdmFsaWQoKS4KKyAgICAjIFRoYXQgZnVuY3Rpb24gZXhwZWN0cyBhIHNldHNjZW5lIGRlcGVuZGVuY3kgdHJlZS4gV2UgYnVpbGQgYSBkZXBlbmRlbmN5IHRyZWUgCisgICAgIyBjb25kZW5zZWQgdG8gZG9fcG9wdWxhdGVfc3lzcm9vdCAtPiBkb19wb3B1bGF0ZV9zeXNyb290IGRlcGVuZGVuY2llcywgc2ltaWxhciB0byAKKyAgICAjIHRoYXQgdXNlZCBieSBzZXRzY2VuZSB0YXNrcy4gV2UgY2FuIHRoZW4gY2FsbCBpbnRvIHNldHNjZW5lX2RlcHZhbGlkKCkgYW5kIGRlY2lkZQorICAgICMgd2hpY2ggZGVwZW5kZW5jaWVzIHdlIGNhbiAic2VlIiBhbmQgc2hvdWxkIGV4cG9zZSB0aGUgbTQgZmlsZXMgZm9yLgorICAgIHNldHNjZW5lZGVwcyA9IGNvcHkuZGVlcGNvcHkodGFza2RlcGRhdGEpCisKKyAgICBzdGFydCA9IHNldChbc3RhcnRdKQorCisgICAgIyBDcmVhdGUgY29sbGFwc2VkIGRvX3BvcHVsYXRlX3N5c3Jvb3QgLT4gZG9fcG9wdWxhdGVfc3lzcm9vdCB0cmVlCisgICAgZm9yIGRlcCBpbiB0YXNrZGVwZGF0YToKKyAgICAgICAgZGF0YSA9IHNldHNjZW5lZGVwc1tkZXBdICAgICAgICAKKyAgICAgICAgaWYgZGF0YVsxXSAhPSAiZG9fcG9wdWxhdGVfc3lzcm9vdCI6CisgICAgICAgICAgICBmb3IgZGVwMiBpbiBzZXRzY2VuZWRlcHM6CisgICAgICAgICAgICAgICAgZGF0YTIgPSBzZXRzY2VuZWRlcHNbZGVwMl0KKyAgICAgICAgICAgICAgICBpZiBkZXAgaW4gZGF0YTJbM106CisgICAgICAgICAgICAgICAgICAgIGRhdGEyWzNdLnVwZGF0ZShzZXRzY2VuZWRlcHNbZGVwXVszXSkKKyAgICAgICAgICAgICAgICAgICAgZGF0YTJbM10ucmVtb3ZlKGRlcCkKKyAgICAgICAgICAgIGlmIGRlcCBpbiBzdGFydDoKKyAgICAgICAgICAgICAgICBzdGFydC51cGRhdGUoc2V0c2NlbmVkZXBzW2RlcF1bM10pCisgICAgICAgICAgICAgICAgc3RhcnQucmVtb3ZlKGRlcCkKKyAgICAgICAgICAgIGRlbCBzZXRzY2VuZWRlcHNbZGVwXQorCisgICAgIyBSZW1vdmUgY2lyY3VsYXIgcmVmZXJlbmNlcworICAgIGZvciBkZXAgaW4gc2V0c2NlbmVkZXBzOgorICAgICAgICBpZiBkZXAgaW4gc2V0c2NlbmVkZXBzW2RlcF1bM106CisgICAgICAgICAgICBzZXRzY2VuZWRlcHNbZGVwXVszXS5yZW1vdmUoZGVwKQorCisgICAgIyBEaXJlY3QgZGVwZW5kZW5jaWVzIHNob3VsZCBiZSBwcmVzZW50IGFuZCBjYW4gYmUgZGVwZW5kZWQgdXBvbgorICAgIGZvciBkZXAgaW4gc3RhcnQ6CisgICAgICAgIGNvbmZpZ3VyZWRlcHMuYXBwZW5kKHNldHNjZW5lZGVwc1tkZXBdWzBdKQorCisgICAgIyBDYWxsIGludG8gc2V0c2NlbmVfZGVwdmFsaWQgZm9yIGVhY2ggc3ViLWRlcGVuZGVuY3kgYW5kIG9ubHkgY29weSBtNCBmaWxlcworICAgICMgZm9yIG9uZXMgdGhhdCB3b3VsZCBiZSByZXN0b3JlZCBmcm9tIHNzdGF0ZS4KKyAgICBkb25lID0gbGlzdChzdGFydCkKKyAgICBuZXh0ID0gbGlzdChzdGFydCkKICAgICB3aGlsZSBuZXh0OgogICAgICAgICBuZXcgPSBbXQogICAgICAgICBmb3IgZGVwIGluIG5leHQ6Ci0gICAgICAgICAgICBkYXRhID0gdGFza2RlcGRhdGFbZGVwXQorICAgICAgICAgICAgZGF0YSA9IHNldHNjZW5lZGVwc1tkZXBdCiAgICAgICAgICAgICBmb3IgZGF0YWRlcCBpbiBkYXRhWzNdOgogICAgICAgICAgICAgICAgIGlmIGRhdGFkZXAgaW4gZG9uZToKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBpZiAobm90IGRhdGFbMF0uZW5kc3dpdGgoIi1uYXRpdmUiKSkgYW5kIHRhc2tkZXBkYXRhW2RhdGFkZXBdWzBdLmVuZHN3aXRoKCItbmF0aXZlIikgYW5kIGRlcCAhPSBzdGFydDoKKyAgICAgICAgICAgICAgICB0YXNrZGVwcyA9IHt9CisgICAgICAgICAgICAgICAgdGFza2RlcHNbZGVwXSA9IHNldHNjZW5lZGVwc1tkZXBdWzoyXQorICAgICAgICAgICAgICAgIHRhc2tkZXBzW2RhdGFkZXBdID0gc2V0c2NlbmVkZXBzW2RhdGFkZXBdWzoyXQorICAgICAgICAgICAgICAgIHJldHZhbCA9IHNldHNjZW5lX2RlcHZhbGlkKGRhdGFkZXAsIHRhc2tkZXBzLCBbXSwgZCkKKyAgICAgICAgICAgICAgICBpZiByZXR2YWw6CisgICAgICAgICAgICAgICAgICAgIGJiLm5vdGUoIlNraXBwaW5nIHNldHNjZW5lIGRlcGVuZGVuY3kgJXMgZm9yIG00IG1hY3JvIGNvcHlpbmciICUgZGF0YWRlcCkKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBkb25lLmFwcGVuZChkYXRhZGVwKQogICAgICAgICAgICAgICAgIG5ldy5hcHBlbmQoZGF0YWRlcCkKLSAgICAgICAgICAgICAgICBpZiB0YXNrZGVwZGF0YVtkYXRhZGVwXVsxXSA9PSAiZG9fY29uZmlndXJlIjoKLSAgICAgICAgICAgICAgICAgICAgY29uZmlndXJlZGVwcy5hcHBlbmQodGFza2RlcGRhdGFbZGF0YWRlcF1bMF0pCisgICAgICAgICAgICAgICAgY29uZmlndXJlZGVwcy5hcHBlbmQoc2V0c2NlbmVkZXBzW2RhdGFkZXBdWzBdKQogICAgICAgICBuZXh0ID0gbmV3CiAKLSAgICAjY29uZmlndXJlZGVwczIgPSBbXQotICAgICNmb3IgZGVwIGluIHRhc2tkZXBkYXRhOgotICAgICMgICAgZGF0YSA9IHRhc2tkZXBkYXRhW2RlcF0KLSAgICAjICAgIGlmIGRhdGFbMV0gPT0gImRvX2NvbmZpZ3VyZSIgYW5kIGRhdGFbMF0gIT0gcG46Ci0gICAgIyAgICAgICAgY29uZmlndXJlZGVwczIuYXBwZW5kKGRhdGFbMF0pCi0gICAgI2NvbmZpZ3VyZWRlcHMuc29ydCgpCi0gICAgI2NvbmZpZ3VyZWRlcHMyLnNvcnQoKQotICAgICNiYi53YXJuKHN0cihjb25maWd1cmVkZXBzKSkKLSAgICAjYmIud2FybihzdHIoY29uZmlndXJlZGVwczIpKQotCiAgICAgY3AgPSBbXQogICAgIGlmIG5vZGVwczoKICAgICAgICAgYmIud2FybigiYXV0b3Rvb2xzOiBVbmFibGUgdG8gZmluZCB0YXNrIGRlcGVuZGVuY2llcywgLWIgYmVpbmcgdXNlZD8gUHVsbGluZyBpbiBhbGwgbTQgZmlsZXMiKQpAQCAtMjIyLDExICsyNTMsMTQgQEAKICAgICAgICAgdCA9IG9zLnBhdGguam9pbihhY2xvY2FsZGlyLCBvcy5wYXRoLmJhc2VuYW1lKGMpKQogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHModCk6CiAgICAgICAgICAgICBvcy5zeW1saW5rKGMsIHQpCi0gICAgICAgICAgICAKLSAgICBkLnNldFZhcigiQ09ORklHX1NJVEUiLCBzaXRlaW5mb19nZXRfZmlsZXMoZCwgRmFsc2UpKQorCisgICAgIyBSZWZyZXNoIHZhcmlhYmxlIHdpdGggY2FjaGUgZmlsZXMKKyAgICBkLnNldFZhcigiQ09ORklHX1NJVEUiLCBzaXRlaW5mb19nZXRfZmlsZXMoZCwgYWNsb2NhbGNhY2hlPVRydWUpKQogfQogYXV0b3Rvb2xzX2NvcHlfYWNsb2NhbHNbdmFyZGVwc2V4Y2x1ZGVdICs9ICJNQUNISU5FIFNES19BUkNIIEJVSUxEX0FSQ0ggU0RLX09TIEJCX1RBU0tERVBEQVRBIgogCitDT05GSUdVUkVfRklMRVMgPSAiJHtTfS9jb25maWd1cmUuaW4gJHtTfS9jb25maWd1cmUuYWMgJHtTfS9jb25maWcuaC5pbiAke1N9L2FjaW5jbHVkZS5tNCBNYWtlZmlsZS5hbSIKKwogYXV0b3Rvb2xzX2RvX2NvbmZpZ3VyZSgpIHsKIAkjIFdBUk5JTkc6IGdyb3NzIGhhY2sgZm9sbG93czoKIAkjIEFuIGF1dG90b29scyBidWlsdCBwYWNrYWdlIGdlbmVyYWxseSBuZWVkcyB0aGVzZSBzY3JpcHRzLCBob3dldmVyIG9ubHkKQEAgLTIzNiw2ICsyNzAsOSBAQAogCSMgZm9yIGEgcGFja2FnZSB3aG9zZSBhdXRvdG9vbHMgYXJlIG9sZCwgb24gYW4geDg2XzY0IG1hY2hpbmUsIHdoaWNoIHRoZSBvbGQKIAkjIGNvbmZpZy5zdWIgZG9lcyBub3Qgc3VwcG9ydC4gIFdvcmsgYXJvdW5kIHRoaXMgYnkgaW5zdGFsbGluZyB0aGVtIG1hbnVhbGx5CiAJIyByZWdhcmRsZXNzLgorCisJUFJVTkVfTTQ9IiIKKwogCWZvciBhYyBpbiBgZmluZCAke1N9IC1pZ25vcmVfcmVhZGRpcl9yYWNlIC1uYW1lIGNvbmZpZ3VyZS5pbiAtbyAtbmFtZSBjb25maWd1cmUuYWNgOyBkbwogCQlybSAtZiBgZGlybmFtZSAkYWNgL2NvbmZpZ3VyZQogCWRvbmUKQEAgLTI0Niw3ICsyODMsNyBAQAogCQlpZiBbIHgiJHthY3BhdGhzfSIgPSB4ZGVmYXVsdCBdOyB0aGVuCiAJCQlhY3BhdGhzPQogCQkJZm9yIGkgaW4gYGZpbmQgJHtBVVRPVE9PTFNfU0NSSVBUX1BBVEh9IC1pZ25vcmVfcmVhZGRpcl9yYWNlIC1tYXhkZXB0aCAyIC1uYW1lIFwqLm00fGdyZXAgLXYgJ2FjbG9jYWwubTQnfCBcCi0JCQkJZ3JlcCAtdiAnYWNpbmNsdWRlLm00JyB8IGdyZXAgLXYgJ2FjbG9jYWwtY29weScgfCBzZWQgLWUgJ3MsXCguKi9cKS4qJCxcMSwnfHNvcnQgLXVgOyBkbworCQkJCWdyZXAgLXYgJ2FjaW5jbHVkZS5tNCcgfCBzZWQgLWUgJ3MsXCguKi9cKS4qJCxcMSwnfHNvcnQgLXVgOyBkbwogCQkJCWFjcGF0aHM9IiRhY3BhdGhzIC1JICRpIgogCQkJZG9uZQogCQllbHNlCkBAIC0yODUsMTcgKzMyMiwyMiBAQAogCQkJCQljcCAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dldHRleHQvcG8vcmVtb3ZlLXBvdGNkYXRlLnNpbiAke1N9L3BvLwogCQkJCWZpCiAJCQlmaQotCQkJZm9yIGkgaW4gZ2V0dGV4dC5tNCBpY29udi5tNCBsaWItbGQubTQgbGliLWxpbmsubTQgbGliLXByZWZpeC5tNCBubHMubTQgcG8ubTQgcHJvZ3Rlc3QubTQ7IGRvCi0JCQkJZm9yIGogaW4gYGZpbmQgJHtTfSAtaWdub3JlX3JlYWRkaXJfcmFjZSAtbmFtZSAkaSB8IGdyZXAgLXYgYWNsb2NhbC1jb3B5YDsgZG8KLQkJCQkJcm0gJGoKLQkJCQlkb25lCi0JCQlkb25lCisJCQlQUlVORV9NND0iJFBSVU5FX000IGdldHRleHQubTQgaWNvbnYubTQgbGliLWxkLm00IGxpYi1saW5rLm00IGxpYi1wcmVmaXgubTQgbmxzLm00IHBvLm00IHByb2d0ZXN0Lm00IgogCQlmaQogCQlta2RpciAtcCBtNAogCQlpZiBncmVwICJeW1s6c3BhY2U6XV0qW0FJXVtDVF1fUFJPR19JTlRMVE9PTCIgJENPTkZJR1VSRV9BQyA+L2Rldi9udWxsOyB0aGVuCisJCQlpZiAhIGVjaG8gIiR7REVQRU5EU30iIHwgZ3JlcCAtcSBpbnRsdG9vbC1uYXRpdmU7IHRoZW4KKwkJCQliYndhcm4gIk1pc3NpbmcgREVQRU5EUyBvbiBpbnRsdG9vbC1uYXRpdmUiCisJCQlmaQorCQkJUFJVTkVfTTQ9IiRQUlVORV9NNCBpbnRsdG9vbC5tNCIKIAkJCWJibm90ZSBFeGVjdXRpbmcgaW50bHRvb2xpemUgLS1jb3B5IC0tZm9yY2UgLS1hdXRvbWFrZQogCQkJaW50bHRvb2xpemUgLS1jb3B5IC0tZm9yY2UgLS1hdXRvbWFrZQogCQlmaQorCisJCWZvciBpIGluICRQUlVORV9NNDsgZG8KKwkJCWZpbmQgJHtTfSAtaWdub3JlX3JlYWRkaXJfcmFjZSAtbmFtZSAkaSAtZGVsZXRlCisJCWRvbmUKKwogCQliYm5vdGUgRXhlY3V0aW5nIEFDTE9DQUw9XCIkQUNMT0NBTFwiIGF1dG9yZWNvbmYgLS12ZXJib3NlIC0taW5zdGFsbCAtLWZvcmNlICR7RVhUUkFfQVVUT1JFQ09ORn0gJGFjcGF0aHMKIAkJQUNMT0NBTD0iJEFDTE9DQUwiIGF1dG9yZWNvbmYgLVdjcm9zcyAtLXZlcmJvc2UgLS1pbnN0YWxsIC0tZm9yY2UgJHtFWFRSQV9BVVRPUkVDT05GfSAkYWNwYXRocyB8fCBkaWUgImF1dG9yZWNvbmYgZXhlY3V0aW9uIGZhaWxlZC4iCiAJCWNkICRvbGRkaXIKQEAgLTMwNyw2ICszNDksMTAgQEAKIAlmaQogfQogCithdXRvdG9vbHNfZG9fY29tcGlsZSgpIHsKKyAgICBvZV9ydW5tYWtlCit9CisKIGF1dG90b29sc19kb19pbnN0YWxsKCkgewogCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAogCSMgSW5mbyBkaXIgbGlzdGluZyBpc24ndCBpbnRlcmVzdGluZyBhdCB0aGlzIHBvaW50IHNvIHJlbW92ZSBpdCBpZiBpdCBleGlzdHMuCkBAIC0zMTcsNiArMzYzLDYgQEAKIAogaW5oZXJpdCBzaXRlY29uZmlnCiAKLUVYUE9SVF9GVU5DVElPTlMgZG9fY29uZmlndXJlIGRvX2luc3RhbGwKK0VYUE9SVF9GVU5DVElPTlMgZG9fY29uZmlndXJlIGRvX2NvbXBpbGUgZG9faW5zdGFsbAogCiBCID0gIiR7V09SS0RJUn0vYnVpbGQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Jhc2UuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYmFzZS5iYmNsYXNzCmluZGV4IGE3Y2EzYTYuLjAyNGZlNDMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYmFzZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYmFzZS5iYmNsYXNzCkBAIC0xMCw3ICsxMCw3IEBACiBpbmhlcml0IG1ldGFkYXRhX3NjbQogaW5oZXJpdCBsb2dnaW5nCiAKLU9FX0lNUE9SVFMgKz0gIm9zIHN5cyB0aW1lIG9lLnBhdGggb2UudXRpbHMgb2UuZGF0YSBvZS5wYWNrYWdlIG9lLnBhY2thZ2Vncm91cCBvZS5zc3RhdGVzaWcgb2UubHNiIG9lLmNhY2hlZHBhdGgiCitPRV9JTVBPUlRTICs9ICJvcyBzeXMgdGltZSBvZS5wYXRoIG9lLnV0aWxzIG9lLnR5cGVzIG9lLnBhY2thZ2Ugb2UucGFja2FnZWdyb3VwIG9lLnNzdGF0ZXNpZyBvZS5sc2Igb2UuY2FjaGVkcGF0aCIKIE9FX0lNUE9SVFNbdHlwZV0gPSAibGlzdCIKIAogZGVmIG9lX2ltcG9ydChkKToKQEAgLTEwNSwxMiArMTA1LDE1IEBACiAgICAgICAgICMgYW55IG90aGVycyBzaG91bGQgYmUgY292ZXJlZCBieSBTUkNfVVJJLgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBwYXRoID0gYmIuZmV0Y2guZGVjb2RldXJsKHVybClbMl0KKyAgICAgICAgICAgIGlmIG5vdCBwYXRoOgorICAgICAgICAgICAgICAgIHJhaXNlIGJiLmZldGNoLk1hbGZvcm1lZFVybCh1cmwpCisKICAgICAgICAgICAgIGlmIHBhdGhbMF0gPT0gJy8nOgogICAgICAgICAgICAgICAgIGlmIHBhdGguc3RhcnRzd2l0aCh0bXBkaXIpOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIGZpbGVsaXN0LmFwcGVuZChwYXRoICsgIjoiICsgc3RyKG9zLnBhdGguZXhpc3RzKHBhdGgpKSkKICAgICAgICAgZXhjZXB0IGJiLmZldGNoLk1hbGZvcm1lZFVybDoKLSAgICAgICAgICAgIHJhaXNlIGJiLmJ1aWxkLkZ1bmNGYWlsZWQoZC5nZXRWYXIoJ1BOJywgVHJ1ZSkgKyAiOiBMSUNfRklMRVNfQ0hLU1VNIGNvbnRhaW5zIGFuIGludmFsaWQgVVJMOiAiICsgdXJsKQorICAgICAgICAgICAgYmIuZmF0YWwoZC5nZXRWYXIoJ1BOJywgVHJ1ZSkgKyAiOiBMSUNfRklMRVNfQ0hLU1VNIGNvbnRhaW5zIGFuIGludmFsaWQgVVJMOiAiICsgdXJsKQogICAgIHJldHVybiAiICIuam9pbihmaWxlbGlzdCkKIAogYWRkdGFzayBmZXRjaApAQCAtMTI4LDMwICsxMzEsMjggQEAKICAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoMi5GZXRjaChzcmNfdXJpLCBkKQogICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKICAgICBleGNlcHQgYmIuZmV0Y2gyLkJCRmV0Y2hFeGNlcHRpb24gYXMgZToKLSAgICAgICAgcmFpc2UgYmIuYnVpbGQuRnVuY0ZhaWxlZChlKQorICAgICAgICBiYi5mYXRhbChzdHIoZSkpCiB9CiAKIGFkZHRhc2sgdW5wYWNrIGFmdGVyIGRvX2ZldGNoCiBkb191bnBhY2tbZGlyc10gPSAiJHtXT1JLRElSfSIKKworcHl0aG9uICgpIHsKKyAgICBpZiBkLmdldFZhcignUycsIFRydWUpICE9IGQuZ2V0VmFyKCdXT1JLRElSJywgVHJ1ZSk6CisgICAgICAgIGQuc2V0VmFyRmxhZygnZG9fdW5wYWNrJywgJ2NsZWFuZGlycycsICcke1N9JykKKyAgICBlbHNlOgorICAgICAgICBkLnNldFZhckZsYWcoJ2RvX3VucGFjaycsICdjbGVhbmRpcnMnLCBvcy5wYXRoLmpvaW4oJyR7U30nLCAncGF0Y2hlcycpKQorfQogcHl0aG9uIGJhc2VfZG9fdW5wYWNrKCkgewogICAgIHNyY191cmkgPSAoZC5nZXRWYXIoJ1NSQ19VUkknLCBUcnVlKSBvciAiIikuc3BsaXQoKQogICAgIGlmIGxlbihzcmNfdXJpKSA9PSAwOgogICAgICAgICByZXR1cm4KIAotICAgIHJvb3RkaXIgPSBkLmdldFZhcignV09SS0RJUicsIFRydWUpCi0KLSAgICAjIEVuc3VyZSB0aGF0IHdlIGNsZWFudXAgJHtTfS9wYXRjaGVzCi0gICAgIyBUT0RPOiBJbnZlc3RpZ2F0ZSBpZiB3ZSBjYW4gcmVtb3ZlCi0gICAgIyB0aGUgZW50aXJlICR7U30gaW4gdGhpcyBjYXNlLgotICAgIHNfZGlyID0gZC5nZXRWYXIoJ1MnLCBUcnVlKQotICAgIHBfZGlyID0gb3MucGF0aC5qb2luKHNfZGlyLCAncGF0Y2hlcycpCi0gICAgYmIudXRpbHMucmVtb3ZlKHBfZGlyLCBUcnVlKQotCiAgICAgdHJ5OgogICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2gyLkZldGNoKHNyY191cmksIGQpCi0gICAgICAgIGZldGNoZXIudW5wYWNrKHJvb3RkaXIpCisgICAgICAgIGZldGNoZXIudW5wYWNrKGQuZ2V0VmFyKCdXT1JLRElSJywgVHJ1ZSkpCiAgICAgZXhjZXB0IGJiLmZldGNoMi5CQkZldGNoRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgIHJhaXNlIGJiLmJ1aWxkLkZ1bmNGYWlsZWQoZSkKKyAgICAgICAgYmIuZmF0YWwoc3RyKGUpKQogfQogCiBkZWYgcGtnYXJjaF9tYXBwaW5nKGQpOgpAQCAtMzA4LDcgKzMwOSw3IEBACiB9CiAKIGFkZHRhc2sgaW5zdGFsbCBhZnRlciBkb19jb21waWxlCi1kb19pbnN0YWxsW2RpcnNdID0gIiR7RH0gJHtCfSIKK2RvX2luc3RhbGxbZGlyc10gPSAiJHtCfSIKICMgUmVtb3ZlIGFuZCByZS1jcmVhdGUgJHtEfSBzbyB0aGF0IGlzIGl0IGd1YXJhbnRlZWQgdG8gYmUgZW1wdHkKIGRvX2luc3RhbGxbY2xlYW5kaXJzXSA9ICIke0R9IgogCkBAIC00MzAsMTIgKzQzMSw2IEBACiAgICAgICAgIGFwcGVuZFZhcignUkRFUEVORFNfJHtQTn0nLCBleHRyYXJkZXBzKQogICAgICAgICBhcHBlbmRWYXIoJ1BBQ0tBR0VDT05GSUdfQ09ORkFSR1MnLCBleHRyYWNvbmYpCiAKLSAgICAgICAgIyBUT0RPOiBvbmNlIGFsbCByZWNpcGVzL2NsYXNzZXMgYWJ1c2luZyBFWFRSQV9PRUNPTkYKLSAgICAgICAgIyB0byBnZXQgUEFDS0FHRUNPTkZJRyBvcHRpb25zIGFyZSBmaXhlZCB0byB1c2UgUEFDS0FHRUNPTkZJR19DT05GQVJHUwotICAgICAgICAjIG1vdmUgdGhpcyBhcHBlbmRWYXIgdG8gYXV0b3Rvb2xzLmJiY2xhc3MuCi0gICAgICAgIGlmIG5vdCBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdjbWFrZScsIGQpOgotICAgICAgICAgICAgYXBwZW5kVmFyKCdFWFRSQV9PRUNPTkYnLCBleHRyYWNvbmYpCi0KICAgICBwbiA9IGQuZ2V0VmFyKCdQTicsIFRydWUpCiAgICAgbGljZW5zZSA9IGQuZ2V0VmFyKCdMSUNFTlNFJywgVHJ1ZSkKICAgICBpZiBsaWNlbnNlID09ICJJTlZBTElEIjoKQEAgLTQ3Nyw3ICs0NzIsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoImluY29tcGF0aWJsZSB3aXRoIG1hY2hpbmUgJXMgKG5vdCBpbiBDT01QQVRJQkxFX01BQ0hJTkUpIiAlIGQuZ2V0VmFyKCdNQUNISU5FJywgVHJ1ZSkpCiAKLSAgICBzb3VyY2VfbWlycm9yX2ZldGNoID0gZC5nZXRWYXIoJ1NPVVJDRV9NSVJST1JfRkVUQ0gnLCAwKQorICAgIHNvdXJjZV9taXJyb3JfZmV0Y2ggPSBkLmdldFZhcignU09VUkNFX01JUlJPUl9GRVRDSCcsIEZhbHNlKQogICAgIGlmIG5vdCBzb3VyY2VfbWlycm9yX2ZldGNoOgogICAgICAgICBuZWVkX2hvc3QgPSBkLmdldFZhcignQ09NUEFUSUJMRV9IT1NUJywgVHJ1ZSkKICAgICAgICAgaWYgbmVlZF9ob3N0OgpAQCAtNDkwLDcgKzQ4NSw3IEBACiAKICAgICAgICAgY2hlY2tfbGljZW5zZSA9IEZhbHNlIGlmIHBuLnN0YXJ0c3dpdGgoIm5hdGl2ZXNkay0iKSBlbHNlIFRydWUKICAgICAgICAgZm9yIHQgaW4gWyItbmF0aXZlIiwgIi1jcm9zcy0ke1RBUkdFVF9BUkNIfSIsICItY3Jvc3MtaW5pdGlhbC0ke1RBUkdFVF9BUkNIfSIsCi0gICAgICAgICAgICAgICItY3Jvc3NzZGstJHtTREtfQVJDSH0iLCAiLWNyb3Nzc2RrLWluaXRpYWwtJHtTREtfQVJDSH0iLAorICAgICAgICAgICAgICAiLWNyb3Nzc2RrLSR7U0RLX1NZU30iLCAiLWNyb3Nzc2RrLWluaXRpYWwtJHtTREtfU1lTfSIsCiAgICAgICAgICAgICAgICItY3Jvc3MtY2FuYWRpYW4tJHtUUkFOU0xBVEVEX1RBUkdFVF9BUkNIfSJdOgogICAgICAgICAgICAgaWYgcG4uZW5kc3dpdGgoZC5leHBhbmQodCkpOgogICAgICAgICAgICAgICAgIGNoZWNrX2xpY2Vuc2UgPSBGYWxzZQpAQCAtNTQyLDYgKzUzNywxOSBAQAogICAgICAgICAgICAgICAgIGlmIHBuIGluIGluY29tcGF0d2w6CiAgICAgICAgICAgICAgICAgICAgIGJiLm5vdGUoIklOQ0xVRElORyAiICsgcG4gKyAiIGFzIGJ1aWxkYWJsZSBkZXNwaXRlIElOQ09NUEFUSUJMRV9MSUNFTlNFIGJlY2F1c2UgaXQgaGFzIGJlZW4gd2hpdGVsaXN0ZWQiKQogCisgICAgICAgICMgVHJ5IHRvIHZlcmlmeSBwZXItcGFja2FnZSAoTElDRU5TRV88cGtnPikgdmFsdWVzLiBMSUNFTlNFIHNob3VsZCBiZSBhCisgICAgICAgICMgc3VwZXJzZXQgb2YgYWxsIHBlci1wYWNrYWdlIGxpY2Vuc2VzLiBXZSBkbyBub3QgZG8gYWR2YW5jZWQgKHBhdHRlcm4pCisgICAgICAgICMgbWF0Y2hpbmcgb2YgbGljZW5zZSBleHByZXNzaW9ucyAtIGp1c3QgY2hlY2sgdGhhdCBhbGwgbGljZW5zZSBzdHJpbmdzCisgICAgICAgICMgaW4gTElDRU5TRV88cGtnPiBhcmUgZm91bmQgaW4gTElDRU5TRS4KKyAgICAgICAgbGljZW5zZV9zZXQgPSBvZS5saWNlbnNlLmxpc3RfbGljZW5zZXMobGljZW5zZSkKKyAgICAgICAgZm9yIHBrZyBpbiBkLmdldFZhcignUEFDS0FHRVMnLCBUcnVlKS5zcGxpdCgpOgorICAgICAgICAgICAgcGtnX2xpY2Vuc2UgPSBkLmdldFZhcignTElDRU5TRV8nICsgcGtnLCBUcnVlKQorICAgICAgICAgICAgaWYgcGtnX2xpY2Vuc2U6CisgICAgICAgICAgICAgICAgdW5saXN0ZWQgPSBvZS5saWNlbnNlLmxpc3RfbGljZW5zZXMocGtnX2xpY2Vuc2UpIC0gbGljZW5zZV9zZXQKKyAgICAgICAgICAgICAgICBpZiB1bmxpc3RlZDoKKyAgICAgICAgICAgICAgICAgICAgYmIud2FybigiTElDRU5TRV8lcyBpbmNsdWRlcyBsaWNlbnNlcyAoJXMpIHRoYXQgYXJlIG5vdCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpc3RlZCBpbiBMSUNFTlNFIiAlIChwa2csICcgJy5qb2luKHVubGlzdGVkKSkpCisKICAgICBuZWVkc3JjcmV2ID0gRmFsc2UKICAgICBzcmN1cmkgPSBkLmdldFZhcignU1JDX1VSSScsIFRydWUpCiAgICAgZm9yIHVyaSBpbiBzcmN1cmkuc3BsaXQoKToKQEAgLTU2Niw2ICs1NzQsMTAgQEAKICAgICAgICAgICAgIG5lZWRzcmNyZXYgPSBUcnVlCiAgICAgICAgICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX2ZldGNoJywgJ2RlcGVuZHMnLCAnIG1lcmN1cmlhbC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCcpCiAKKyAgICAgICAgIyBQZXJmb3JjZSBwYWNrYWdlcyBzdXBwb3J0IFNSQ1JFViA9ICIke0FVVE9SRVZ9IgorICAgICAgICBlbGlmIHNjaGVtZSA9PSAicDQiOgorICAgICAgICAgICAgbmVlZHNyY3JldiA9IFRydWUKKwogICAgICAgICAjIE9TQyBwYWNrYWdlcyBzaG91bGQgREVQRU5EIG9uIG9zYy1uYXRpdmUKICAgICAgICAgZWxpZiBzY2hlbWUgPT0gIm9zYyI6CiAgICAgICAgICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX2ZldGNoJywgJ2RlcGVuZHMnLCAnIG9zYy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCcpCkBAIC02NTgsOCArNjcwLDggQEAKICAgICB0cnk6CiAgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaDIuRmV0Y2goc3JjX3VyaSwgZCkKICAgICAgICAgZmV0Y2hlci5jbGVhbigpCi0gICAgZXhjZXB0IGJiLmZldGNoMi5CQkZldGNoRXhjZXB0aW9uLCBlOgotICAgICAgICByYWlzZSBiYi5idWlsZC5GdW5jRmFpbGVkKGUpCisgICAgZXhjZXB0IGJiLmZldGNoMi5CQkZldGNoRXhjZXB0aW9uIGFzIGU6CisgICAgICAgIGJiLmZhdGFsKHN0cihlKSkKIH0KIGRvX2NsZWFuYWxsW25vc3RhbXBdID0gIjEiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYmFzaC1jb21wbGV0aW9uLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Jhc2gtY29tcGxldGlvbi5iYmNsYXNzCmluZGV4IDc0YTg3OGUuLjgwZWU5YjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYmFzaC1jb21wbGV0aW9uLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9iYXNoLWNvbXBsZXRpb24uYmJjbGFzcwpAQCAtMSwzICsxLDUgQEAKK0RFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgYmFzaC1jb21wbGV0aW9uIgorCiBQQUNLQUdFUyArPSAiJHtQTn0tYmFzaC1jb21wbGV0aW9uIgogCiBGSUxFU18ke1BOfS1iYXNoLWNvbXBsZXRpb24gPSAiJHtkYXRhZGlyfS9iYXNoLWNvbXBsZXRpb24gJHtzeXNjb25mZGlyfS9iYXNoX2NvbXBsZXRpb24uZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYnVpbGRoaXN0b3J5LmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2J1aWxkaGlzdG9yeS5iYmNsYXNzCmluZGV4IDU4MWQ1MzIuLjNhNWJjMmMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYnVpbGRoaXN0b3J5LmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9idWlsZGhpc3RvcnkuYmJjbGFzcwpAQCAtNTcsNiArNTcsOSBAQAogIyBjbGFzcy4KIEJVSUxESElTVE9SWV9QUkVTRVJWRSA9ICJsYXRlc3QgbGF0ZXN0X3NyY3JldiIKIAorUEFUQ0hfR0lUX1VTRVJfRU1BSUwgPz0gImJ1aWxkaGlzdG9yeUBvZSIKK1BBVENIX0dJVF9VU0VSX05BTUUgPz0gIk9wZW5FbWJlZGRlZCIKKwogIwogIyBXcml0ZSBvdXQgbWV0YWRhdGEgYWJvdXQgdGhpcyBwYWNrYWdlIGZvciBjb21wYXJpc29uIHdoZW4gd3JpdGluZyBmdXR1cmUgcGFja2FnZXMKICMKQEAgLTE0NSw3ICsxNDgsNyBAQAogICAgICAgICAgICAgICAgIGVsaWYgbmFtZSA9PSAiUkNPTkZMSUNUUyI6CiAgICAgICAgICAgICAgICAgICAgIHBrZ2luZm8ucmNvbmZsaWN0cyA9IHZhbHVlCiAgICAgICAgICAgICAgICAgZWxpZiBuYW1lID09ICJQS0dTSVpFIjoKLSAgICAgICAgICAgICAgICAgICAgcGtnaW5mby5zaXplID0gbG9uZyh2YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgcGtnaW5mby5zaXplID0gaW50KHZhbHVlKQogICAgICAgICAgICAgICAgIGVsaWYgbmFtZSA9PSAiRklMRVMiOgogICAgICAgICAgICAgICAgICAgICBwa2dpbmZvLmZpbGVzID0gdmFsdWUKICAgICAgICAgICAgICAgICBlbGlmIG5hbWUgPT0gIkZJTEVMSVNUIjoKQEAgLTIzMyw3ICsyMzYsNyBAQAogICAgICAgICAgICAgICAgIGtleSA9IGl0ZW1bMF0KICAgICAgICAgICAgICAgICBpZiBrZXkuZW5kc3dpdGgoJ18nICsgcGtnKToKICAgICAgICAgICAgICAgICAgICAga2V5ID0ga2V5WzotbGVuKHBrZyktMV0KLSAgICAgICAgICAgICAgICBwa2dkYXRhW2tleV0gPSBpdGVtWzFdLmRlY29kZSgndXRmLTgnKS5kZWNvZGUoJ3N0cmluZ19lc2NhcGUnKQorICAgICAgICAgICAgICAgIHBrZ2RhdGFba2V5XSA9IGl0ZW1bMV0KIAogICAgICAgICBwa2dlID0gcGtnZGF0YS5nZXQoJ1BLR0UnLCAnMCcpCiAgICAgICAgIHBrZ3YgPSBwa2dkYXRhWydQS0dWJ10KQEAgLTI3NCw3ICsyNzcsNyBAQAogICAgICAgICAjIEdhdGhlciBpbmZvcm1hdGlvbiBhYm91dCBwYWNrYWdlZCBmaWxlcwogICAgICAgICB2YWwgPSBwa2dkYXRhLmdldCgnRklMRVNfSU5GTycsICcnKQogICAgICAgICBkaWN0dmFsID0ganNvbi5sb2Fkcyh2YWwpCi0gICAgICAgIGZpbGVsaXN0ID0gZGljdHZhbC5rZXlzKCkKKyAgICAgICAgZmlsZWxpc3QgPSBsaXN0KGRpY3R2YWwua2V5cygpKQogICAgICAgICBmaWxlbGlzdC5zb3J0KCkKICAgICAgICAgcGtnaW5mby5maWxlbGlzdCA9ICIgIi5qb2luKGZpbGVsaXN0KQogCkBAIC0yODgsMTQgKzI5MSwxMiBAQAogCiAKIGRlZiB3cml0ZV9yZWNpcGVoaXN0b3J5KHJjcGluZm8sIGQpOgotICAgIGltcG9ydCBjb2RlY3MKLQogICAgIGJiLmRlYnVnKDIsICJXcml0aW5nIHJlY2lwZSBoaXN0b3J5IikKIAogICAgIHBrZ2hpc3RkaXIgPSBkLmdldFZhcignQlVJTERISVNUT1JZX0RJUl9QQUNLQUdFJywgVHJ1ZSkKIAogICAgIGluZm9maWxlID0gb3MucGF0aC5qb2luKHBrZ2hpc3RkaXIsICJsYXRlc3QiKQotICAgIHdpdGggY29kZWNzLm9wZW4oaW5mb2ZpbGUsICJ3IiwgZW5jb2Rpbmc9J3V0ZjgnKSBhcyBmOgorICAgIHdpdGggb3BlbihpbmZvZmlsZSwgInciKSBhcyBmOgogICAgICAgICBpZiByY3BpbmZvLnBlICE9ICIwIjoKICAgICAgICAgICAgIGYud3JpdGUodSJQRSA9ICVzXG4iICUgIHJjcGluZm8ucGUpCiAgICAgICAgIGYud3JpdGUodSJQViA9ICVzXG4iICUgIHJjcGluZm8ucHYpCkBAIC0zMDUsOCArMzA2LDYgQEAKIAogCiBkZWYgd3JpdGVfcGtnaGlzdG9yeShwa2dpbmZvLCBkKToKLSAgICBpbXBvcnQgY29kZWNzCi0KICAgICBiYi5kZWJ1ZygyLCAiV3JpdGluZyBwYWNrYWdlIGhpc3RvcnkgZm9yIHBhY2thZ2UgJXMiICUgcGtnaW5mby5uYW1lKQogCiAgICAgcGtnaGlzdGRpciA9IGQuZ2V0VmFyKCdCVUlMREhJU1RPUllfRElSX1BBQ0tBR0UnLCBUcnVlKQpAQCAtMzE2LDIyICszMTUsMjAgQEAKICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHBrZ3BhdGgpCiAKICAgICBpbmZvZmlsZSA9IG9zLnBhdGguam9pbihwa2dwYXRoLCAibGF0ZXN0IikKLSAgICB3aXRoIGNvZGVjcy5vcGVuKGluZm9maWxlLCAidyIsIGVuY29kaW5nPSd1dGY4JykgYXMgZjoKKyAgICB3aXRoIG9wZW4oaW5mb2ZpbGUsICJ3IikgYXMgZjoKICAgICAgICAgaWYgcGtnaW5mby5wZSAhPSAiMCI6CiAgICAgICAgICAgICBmLndyaXRlKHUiUEUgPSAlc1xuIiAlICBwa2dpbmZvLnBlKQogICAgICAgICBmLndyaXRlKHUiUFYgPSAlc1xuIiAlICBwa2dpbmZvLnB2KQogICAgICAgICBmLndyaXRlKHUiUFIgPSAlc1xuIiAlICBwa2dpbmZvLnByKQogCi0gICAgICAgIHBrZ3ZhcnMgPSB7fQotICAgICAgICBwa2d2YXJzWydQS0cnXSA9IHBrZ2luZm8ucGtnIGlmIHBrZ2luZm8ucGtnICE9IHBrZ2luZm8ubmFtZSBlbHNlICcnCi0gICAgICAgIHBrZ3ZhcnNbJ1BLR0UnXSA9IHBrZ2luZm8ucGtnZSBpZiBwa2dpbmZvLnBrZ2UgIT0gcGtnaW5mby5wZSBlbHNlICcnCi0gICAgICAgIHBrZ3ZhcnNbJ1BLR1YnXSA9IHBrZ2luZm8ucGtndiBpZiBwa2dpbmZvLnBrZ3YgIT0gcGtnaW5mby5wdiBlbHNlICcnCi0gICAgICAgIHBrZ3ZhcnNbJ1BLR1InXSA9IHBrZ2luZm8ucGtnciBpZiBwa2dpbmZvLnBrZ3IgIT0gcGtnaW5mby5wciBlbHNlICcnCi0gICAgICAgIGZvciBwa2d2YXIgaW4gcGtndmFyczoKLSAgICAgICAgICAgIHZhbCA9IHBrZ3ZhcnNbcGtndmFyXQotICAgICAgICAgICAgaWYgdmFsOgotICAgICAgICAgICAgICAgIGYud3JpdGUodSIlcyA9ICVzXG4iICUgKHBrZ3ZhciwgdmFsKSkKLQorICAgICAgICBpZiBwa2dpbmZvLnBrZyAhPSBwa2dpbmZvLm5hbWU6CisgICAgICAgICAgICBmLndyaXRlKHUiUEtHID0gJXNcbiIgJSBwa2dpbmZvLnBrZykKKyAgICAgICAgaWYgcGtnaW5mby5wa2dlICE9IHBrZ2luZm8ucGU6CisgICAgICAgICAgICBmLndyaXRlKHUiUEtHRSA9ICVzXG4iICUgcGtnaW5mby5wa2dlKQorICAgICAgICBpZiBwa2dpbmZvLnBrZ3YgIT0gcGtnaW5mby5wdjoKKyAgICAgICAgICAgIGYud3JpdGUodSJQS0dWID0gJXNcbiIgJSBwa2dpbmZvLnBrZ3YpCisgICAgICAgIGlmIHBrZ2luZm8ucGtnciAhPSBwa2dpbmZvLnByOgorICAgICAgICAgICAgZi53cml0ZSh1IlBLR1IgPSAlc1xuIiAlIHBrZ2luZm8ucGtncikKICAgICAgICAgZi53cml0ZSh1IlJQUk9WSURFUyA9ICVzXG4iICUgIHBrZ2luZm8ucnByb3ZpZGVzKQogICAgICAgICBmLndyaXRlKHUiUkRFUEVORFMgPSAlc1xuIiAlICBwa2dpbmZvLnJkZXBlbmRzKQogICAgICAgICBmLndyaXRlKHUiUlJFQ09NTUVORFMgPSAlc1xuIiAlICBwa2dpbmZvLnJyZWNvbW1lbmRzKQpAQCAtMzQ5LDcgKzM0Niw3IEBACiAgICAgICAgIGZpbGV2YXJwYXRoID0gb3MucGF0aC5qb2luKHBrZ3BhdGgsICJsYXRlc3QuJXMiICUgZmlsZXZhcikKICAgICAgICAgdmFsID0gcGtnaW5mby5maWxldmFyc1tmaWxldmFyXQogICAgICAgICBpZiB2YWw6Ci0gICAgICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKGZpbGV2YXJwYXRoLCAidyIsIGVuY29kaW5nPSd1dGY4JykgYXMgZjoKKyAgICAgICAgICAgIHdpdGggb3BlbihmaWxldmFycGF0aCwgInciKSBhcyBmOgogICAgICAgICAgICAgICAgIGYud3JpdGUodmFsKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZmlsZXZhcnBhdGgpOgpAQCAtNTY1LDExICs1NjIsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgdGFza3NpemVzW3Rhc2tdID0gb3JpZ3RvdGFsICsgZnNpemUKICAgICAgICAgICAgICAgICAgICAgZmlsZXNpemVzW2ZuXSA9IGZzaXplCiAgICAgICAgIHdpdGggb3BlbihkLmV4cGFuZCgnJHtCVUlMREhJU1RPUllfRElSX1NES30vc3N0YXRlLXBhY2thZ2Utc2l6ZXMudHh0JyksICd3JykgYXMgZjoKLSAgICAgICAgICAgIGZpbGVzaXplc19zb3J0ZWQgPSBzb3J0ZWQoZmlsZXNpemVzLml0ZW1zKCksIGtleT1vcGVyYXRvci5pdGVtZ2V0dGVyKDEpLCByZXZlcnNlPVRydWUpCisgICAgICAgICAgICBmaWxlc2l6ZXNfc29ydGVkID0gc29ydGVkKGZpbGVzaXplcy5pdGVtcygpLCBrZXk9b3BlcmF0b3IuaXRlbWdldHRlcigxLCAwKSwgcmV2ZXJzZT1UcnVlKQogICAgICAgICAgICAgZm9yIGZuLCBzaXplIGluIGZpbGVzaXplc19zb3J0ZWQ6CiAgICAgICAgICAgICAgICAgZi53cml0ZSgnJTEwZCBLaUIgJXNcbicgJSAoc2l6ZSwgZm4pKQogICAgICAgICB3aXRoIG9wZW4oZC5leHBhbmQoJyR7QlVJTERISVNUT1JZX0RJUl9TREt9L3NzdGF0ZS10YXNrLXNpemVzLnR4dCcpLCAndycpIGFzIGY6Ci0gICAgICAgICAgICB0YXNrc2l6ZXNfc29ydGVkID0gc29ydGVkKHRhc2tzaXplcy5pdGVtcygpLCBrZXk9b3BlcmF0b3IuaXRlbWdldHRlcigxKSwgcmV2ZXJzZT1UcnVlKQorICAgICAgICAgICAgdGFza3NpemVzX3NvcnRlZCA9IHNvcnRlZCh0YXNrc2l6ZXMuaXRlbXMoKSwga2V5PW9wZXJhdG9yLml0ZW1nZXR0ZXIoMSwgMCksIHJldmVyc2U9VHJ1ZSkKICAgICAgICAgICAgIGZvciB0YXNrLCBzaXplIGluIHRhc2tzaXplc19zb3J0ZWQ6CiAgICAgICAgICAgICAgICAgZi53cml0ZSgnJTEwZCBLaUIgJXNcbicgJSAoc2l6ZSwgdGFzaykpCiB9CkBAIC02NDUsNyArNjQyLDcgQEAKICAgICBzZGt2YXJzID0gIkRJU1RSTyBESVNUUk9fVkVSU0lPTiBTREtfTkFNRSBTREtfVkVSU0lPTiBTREtNQUNISU5FIFNES0lNQUdFX0ZFQVRVUkVTIEJBRF9SRUNPTU1FTkRBVElPTlMgTk9fUkVDT01NRU5EQVRJT05TIFBBQ0tBR0VfRVhDTFVERSIKICAgICBpZiBkLmdldFZhcignQkJfQ1VSUkVOVFRBU0snLCBUcnVlKSA9PSAncG9wdWxhdGVfc2RrX2V4dCc6CiAgICAgICAgICMgRXh0ZW5zaWJsZSBTREsgdXNlcyBzb21lIGFkZGl0aW9uYWwgdmFyaWFibGVzCi0gICAgICAgIHNka3ZhcnMgKz0gIiBTREtfTE9DQUxfQ09ORl9XSElURUxJU1QgU0RLX0xPQ0FMX0NPTkZfQkxBQ0tMSVNUIFNES19JTkhFUklUX0JMQUNLTElTVCBTREtfVVBEQVRFX1VSTCBTREtfRVhUX1RZUEUgU0RLX1JFQ1JERVBfVEFTS1MiCisgICAgICAgIHNka3ZhcnMgKz0gIiBTREtfTE9DQUxfQ09ORl9XSElURUxJU1QgU0RLX0xPQ0FMX0NPTkZfQkxBQ0tMSVNUIFNES19JTkhFUklUX0JMQUNLTElTVCBTREtfVVBEQVRFX1VSTCBTREtfRVhUX1RZUEUgU0RLX1JFQ1JERVBfVEFTS1MgU0RLX0lOQ0xVREVfUEtHREFUQSBTREtfSU5DTFVERV9UT09MQ0hBSU4iCiAgICAgbGlzdHZhcnMgPSAiU0RLSU1BR0VfRkVBVFVSRVMgQkFEX1JFQ09NTUVOREFUSU9OUyBQQUNLQUdFX0VYQ0xVREUgU0RLX0xPQ0FMX0NPTkZfV0hJVEVMSVNUIFNES19MT0NBTF9DT05GX0JMQUNLTElTVCBTREtfSU5IRVJJVF9CTEFDS0xJU1QiCiAgICAgcmV0dXJuIG91dHB1dHZhcnMoc2RrdmFycywgbGlzdHZhcnMsIGQpCiAKQEAgLTcxNCwxNSArNzExLDkgQEAKIAkJCWdpdCB0YWcgLWYgYnVpbGQtbWludXMtMiBidWlsZC1taW51cy0xID4gL2Rldi9udWxsIDI+JjEgfHwgdHJ1ZQogCQkJZ2l0IHRhZyAtZiBidWlsZC1taW51cy0xID4gL2Rldi9udWxsIDI+JjEgfHwgdHJ1ZQogCQlmaQotCQkjIElmIHRoZSB1c2VyIGhhc24ndCBzZXQgdXAgdGhlaXIgbmFtZS9lbWFpbCwgc2V0IHNvbWUgZGVmYXVsdHMKLQkJIyBqdXN0IGZvciB0aGlzIHJlcG8gKG90aGVyd2lzZSB0aGUgY29tbWl0IHdpbGwgZmFpbCB3aXRoIG9sZGVyCi0JCSMgdmVyc2lvbnMgb2YgZ2l0KQotCQlpZiAhIGdpdCBjb25maWcgdXNlci5lbWFpbCA+IC9kZXYvbnVsbCA7IHRoZW4KLQkJCWdpdCBjb25maWcgLS1sb2NhbCB1c2VyLmVtYWlsICJidWlsZGhpc3RvcnlAJHtESVNUUk99IgotCQlmaQotCQlpZiAhIGdpdCBjb25maWcgdXNlci5uYW1lID4gL2Rldi9udWxsIDsgdGhlbgotCQkJZ2l0IGNvbmZpZyAtLWxvY2FsIHVzZXIubmFtZSAiYnVpbGRoaXN0b3J5IgotCQlmaQorCisJCWNoZWNrX2dpdF9jb25maWcKKwogCQkjIENoZWNrIGlmIHRoZXJlIGFyZSBuZXcvY2hhbmdlZCBmaWxlcyB0byBjb21taXQgKG90aGVyIHRoYW4gbWV0YWRhdGEtcmV2cykKIAkJcmVwb3N0YXR1cz1gZ2l0IHN0YXR1cyAtLXBvcmNlbGFpbiB8IGdyZXAgLXYgIiBtZXRhZGF0YS1yZXZzJCJgCiAJCUhPU1ROQU1FPWBob3N0bmFtZSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCkBAIC04NDIsNyArODMzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyMgU1JDUkVWXyVzID0gIiVzIlxuJyAlIChuYW1lLCBvcmlnX3NyY3JldikpCiAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJ1NSQ1JFVl8lcyA9ICIlcyJcbicgJSAobmFtZSwgc3JjcmV2KSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZi53cml0ZSgnU1JDUkVWID0gIiVzIlxuJyAlIHNyY3JldnMuaXRlcnZhbHVlcygpLm5leHQoKSkKKyAgICAgICAgICAgICAgICBmLndyaXRlKCdTUkNSRVYgPSAiJXMiXG4nICUgc3JjcmV2cy52YWx1ZXMoKSkKICAgICAgICAgICAgIGlmIGxlbih0YWdfc3JjcmV2cykgPiAwOgogICAgICAgICAgICAgICAgIGZvciBuYW1lLCBzcmNyZXYgaW4gdGFnX3NyY3JldnMuaXRlbXMoKToKICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnIyB0YWdfJXMgPSAiJXMiXG4nICUgKG5hbWUsIHNyY3JldikpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2J1aWxkc3RhdHMtc3VtbWFyeS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9idWlsZHN0YXRzLXN1bW1hcnkuYmJjbGFzcwppbmRleCBkNzMzNTBiLi5iODZhYmNjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2J1aWxkc3RhdHMtc3VtbWFyeS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYnVpbGRzdGF0cy1zdW1tYXJ5LmJiY2xhc3MKQEAgLTMwLDcgKzMwLDExIEBACiAgICAgICAgICAgICAgICAgaGVhZGVyX3ByaW50ZWQgPSBUcnVlCiAgICAgICAgICAgICAgICAgYmIubm90ZSgiQnVpbGQgY29tcGxldGlvbiBzdW1tYXJ5OiIpCiAKLSAgICAgICAgICAgIGJiLm5vdGUoIiAgezB9OiB7MX0lIHNzdGF0ZSByZXVzZSAoezJ9IHNldHNjZW5lLCB7M30gc2NyYXRjaCkiLmZvcm1hdCh0LCAxMDAqbGVuKHNzdGF0ZSkvKGxlbihzc3RhdGUpK2xlbihub19zc3RhdGUpKSwgbGVuKHNzdGF0ZSksIGxlbihub19zc3RhdGUpKSkKKyAgICAgICAgICAgIHNzdGF0ZV9jb3VudCA9IGxlbihzc3RhdGUpCisgICAgICAgICAgICBub19zc3RhdGVfY291bnQgPSBsZW4obm9fc3N0YXRlKQorICAgICAgICAgICAgdG90YWxfY291bnQgPSBzc3RhdGVfY291bnQgKyBub19zc3RhdGVfY291bnQKKyAgICAgICAgICAgIGJiLm5vdGUoIiAgezB9OiB7MTouMWZ9JSBzc3RhdGUgcmV1c2UoezJ9IHNldHNjZW5lLCB7M30gc2NyYXRjaCkiLmZvcm1hdCgKKyAgICAgICAgICAgICAgICB0LCByb3VuZCgxMDAgKiBzc3RhdGVfY291bnQgLyB0b3RhbF9jb3VudCwgMSksIHNzdGF0ZV9jb3VudCwgbm9fc3N0YXRlX2NvdW50KSkKIH0KIGFkZGhhbmRsZXIgYnVpbGRzdGF0c19zdW1tYXJ5CiBidWlsZHN0YXRzX3N1bW1hcnlbZXZlbnRtYXNrXSA9ICJiYi5ldmVudC5CdWlsZENvbXBsZXRlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYnVpbGRzdGF0cy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9idWlsZHN0YXRzLmJiY2xhc3MKaW5kZXggMzRlY2IwMy4uNTk5YTIxOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9idWlsZHN0YXRzLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9idWlsZHN0YXRzLmJiY2xhc3MKQEAgLTE2Myw4ICsxNjMsMTMgQEAKICAgICAgICAgICAgIGJzID0gb3MucGF0aC5qb2luKGJzZGlyLCAiYnVpbGRfc3RhdHMiKQogICAgICAgICAgICAgd2l0aCBvcGVuKGJzLCAiYSIpIGFzIGY6CiAgICAgICAgICAgICAgICAgcm9vdGZzID0gZC5nZXRWYXIoJ0lNQUdFX1JPT1RGUycsIFRydWUpCi0gICAgICAgICAgICAgICAgcm9vdGZzX3NpemUgPSBzdWJwcm9jZXNzLlBvcGVuKFsiZHUiLCAiLXNoIiwgcm9vdGZzXSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkuc3Rkb3V0LnJlYWQoKQotICAgICAgICAgICAgICAgIGYud3JpdGUoIlVuY29tcHJlc3NlZCBSb290ZnMgc2l6ZTogJXMiICUgcm9vdGZzX3NpemUpCisgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcihyb290ZnMpOgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICByb290ZnNfc2l6ZSA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsiZHUiLCAiLXNoIiwgcm9vdGZzXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKS5kZWNvZGUoJ3V0Zi04JykKKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoIlVuY29tcHJlc3NlZCBSb290ZnMgc2l6ZTogJXMiICUgcm9vdGZzX3NpemUpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgICAgICAgICBiYi53YXJuKCJGYWlsZWQgdG8gZ2V0IHJvb3RmcyBzaXplOiAlcyIgJSBlcnIub3V0cHV0LmRlY29kZSgndXRmLTgnKSkKIAogICAgIGVsaWYgaXNpbnN0YW5jZShlLCBiYi5idWlsZC5UYXNrRmFpbGVkKToKICAgICAgICAgIyBDYW4gaGF2ZSBhIGZhaWx1cmUgYmVmb3JlIFRhc2tTdGFydGVkIHNvIG5lZWQgdG8gbWtkaXIgaGVyZSB0b28KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY2NhY2hlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2NjYWNoZS5iYmNsYXNzCmluZGV4IDJjZGNlNDYuLjJlOTgzN2MgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY2NhY2hlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jY2FjaGUuYmJjbGFzcwpAQCAtNCw1ICs0LDMgQEAKIAogZG9fY29uZmlndXJlW2RpcnNdID0rICIke0NDQUNIRV9ESVJ9IgogZG9fa2VybmVsX2NvbmZpZ21lW2RpcnNdID0rICIke0NDQUNIRV9ESVJ9IgotCi1kb19jbGVhbltjbGVhbmRpcnNdICs9ICIke0NDQUNIRV9ESVJ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jaHJwYXRoLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2NocnBhdGguYmJjbGFzcwppbmRleCA5YzY4ODU1Li4zYjVjZDM3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2NocnBhdGguYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2NocnBhdGguYmJjbGFzcwpAQCAtNSwxNSArNSwxNyBAQAogICAgIGltcG9ydCBzdWJwcm9jZXNzIGFzIHN1YgogCiAgICAgcCA9IHN1Yi5Qb3BlbihbY21kLCAnLWwnLCBmcGF0aF0sc3Rkb3V0PXN1Yi5QSVBFLHN0ZGVycj1zdWIuUElQRSkKLSAgICBlcnIsIG91dCA9IHAuY29tbXVuaWNhdGUoKQotICAgICMgSWYgcmV0dXJuZWQgc3VjY2Vzc2Z1bGx5LCBwcm9jZXNzIHN0ZGVyciBmb3IgcmVzdWx0cworICAgIG91dCwgZXJyID0gcC5jb21tdW5pY2F0ZSgpCisgICAgIyBJZiByZXR1cm5lZCBzdWNjZXNzZnVsbHksIHByb2Nlc3Mgc3Rkb3V0IGZvciByZXN1bHRzCiAgICAgaWYgcC5yZXR1cm5jb2RlICE9IDA6CiAgICAgICAgIHJldHVybgogCisgICAgb3V0ID0gb3V0LmRlY29kZSgndXRmLTgnKQorCiAgICAgIyBIYW5kbGUgUlVOUEFUSCBhcyB3ZWxsIGFzIFJQQVRICi0gICAgZXJyID0gZXJyLnJlcGxhY2UoIlJVTlBBVEg9IiwiUlBBVEg9IikKKyAgICBvdXQgPSBvdXQucmVwbGFjZSgiUlVOUEFUSD0iLCJSUEFUSD0iKQogICAgICMgVGhyb3cgYXdheSBldmVyeXRoaW5nIG90aGVyIHRoYW4gdGhlIHJwYXRoIGxpc3QKLSAgICBjdXJyX3JwYXRoID0gZXJyLnBhcnRpdGlvbigiUlBBVEg9IilbMl0KKyAgICBjdXJyX3JwYXRoID0gb3V0LnBhcnRpdGlvbigiUlBBVEg9IilbMl0KICAgICAjYmIubm90ZSgiQ3VycmVudCBycGF0aCBmb3IgJXMgaXMgJXMiICUgKGZwYXRoLCBjdXJyX3JwYXRoLnN0cmlwKCkpKQogICAgIHJwYXRocyA9IGN1cnJfcnBhdGguc3BsaXQoIjoiKQogICAgIG5ld19ycGF0aHMgPSBbXQpAQCAtMzcsMTggKzM5LDE3IEBACiAgICAgICAgIHAgPSBzdWIuUG9wZW4oW2NtZCwgJy1yJywgYXJncywgZnBhdGhdLHN0ZG91dD1zdWIuUElQRSxzdGRlcnI9c3ViLlBJUEUpCiAgICAgICAgIG91dCwgZXJyID0gcC5jb21tdW5pY2F0ZSgpCiAgICAgICAgIGlmIHAucmV0dXJuY29kZSAhPSAwOgotICAgICAgICAgICAgYmIuZXJyb3IoIiVzOiBjaHJwYXRoIGNvbW1hbmQgZmFpbGVkIHdpdGggZXhpdCBjb2RlICVkOlxuJXMlcyIgJSAoZC5nZXRWYXIoJ1BOJywgVHJ1ZSksIHAucmV0dXJuY29kZSwgb3V0LCBlcnIpKQotICAgICAgICAgICAgcmFpc2UgYmIuYnVpbGQuRnVuY0ZhaWxlZAorICAgICAgICAgICAgYmIuZmF0YWwoIiVzOiBjaHJwYXRoIGNvbW1hbmQgZmFpbGVkIHdpdGggZXhpdCBjb2RlICVkOlxuJXMlcyIgJSAoZC5nZXRWYXIoJ1BOJywgVHJ1ZSksIHAucmV0dXJuY29kZSwgb3V0LCBlcnIpKQogCiBkZWYgcHJvY2Vzc19maWxlX2RhcndpbihjbWQsIGZwYXRoLCByb290ZGlyLCBiYXNlcHJlZml4LCB0bXBkaXIsIGQpOgogICAgIGltcG9ydCBzdWJwcm9jZXNzIGFzIHN1YgogCiAgICAgcCA9IHN1Yi5Qb3BlbihbZC5leHBhbmQoIiR7SE9TVF9QUkVGSVh9b3Rvb2wiKSwgJy1MJywgZnBhdGhdLHN0ZG91dD1zdWIuUElQRSxzdGRlcnI9c3ViLlBJUEUpCi0gICAgZXJyLCBvdXQgPSBwLmNvbW11bmljYXRlKCkKLSAgICAjIElmIHJldHVybmVkIHN1Y2Nlc3NmdWxseSwgcHJvY2VzcyBzdGRlcnIgZm9yIHJlc3VsdHMKKyAgICBvdXQsIGVyciA9IHAuY29tbXVuaWNhdGUoKQorICAgICMgSWYgcmV0dXJuZWQgc3VjY2Vzc2Z1bGx5LCBwcm9jZXNzIHN0ZG91dCBmb3IgcmVzdWx0cwogICAgIGlmIHAucmV0dXJuY29kZSAhPSAwOgogICAgICAgICByZXR1cm4KLSAgICBmb3IgbCBpbiBlcnIuc3BsaXQoIlxuIik6CisgICAgZm9yIGwgaW4gb3V0LnNwbGl0KCJcbiIpOgogICAgICAgICBpZiAiKGNvbXBhdGliaWxpdHkiIG5vdCBpbiBsOgogICAgICAgICAgICAgY29udGludWUKICAgICAgICAgcnBhdGggPSBsLnBhcnRpdGlvbigiKGNvbXBhdGliaWxpdHkiKVswXS5zdHJpcCgpCkBAIC01Nyw3ICs1OCw3IEBACiAKICAgICAgICAgbmV3cGF0aCA9ICJAbG9hZGVyX3BhdGgvIiArIG9zLnBhdGgucmVscGF0aChycGF0aCwgb3MucGF0aC5kaXJuYW1lKGZwYXRoLnJlcGxhY2Uocm9vdGRpciwgIi8iKSkpCiAgICAgICAgIHAgPSBzdWIuUG9wZW4oW2QuZXhwYW5kKCIke0hPU1RfUFJFRklYfWluc3RhbGxfbmFtZV90b29sIiksICctY2hhbmdlJywgcnBhdGgsIG5ld3BhdGgsIGZwYXRoXSxzdGRvdXQ9c3ViLlBJUEUsc3RkZXJyPXN1Yi5QSVBFKQotICAgICAgICBlcnIsIG91dCA9IHAuY29tbXVuaWNhdGUoKQorICAgICAgICBvdXQsIGVyciA9IHAuY29tbXVuaWNhdGUoKQogCiBkZWYgcHJvY2Vzc19kaXIgKHJvb3RkaXIsIGRpcmVjdG9yeSwgZCk6CiAgICAgaW1wb3J0IHN0YXQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY21ha2UuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY21ha2UuYmJjbGFzcwppbmRleCAwMmYzMTNhLi4zZTc2MmRlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2NtYWtlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jbWFrZS5iYmNsYXNzCkBAIC04NCw2ICs4NCw4IEBACiAKIGFkZHRhc2sgZ2VuZXJhdGVfdG9vbGNoYWluX2ZpbGUgYWZ0ZXIgZG9fcGF0Y2ggYmVmb3JlIGRvX2NvbmZpZ3VyZQogCitDT05GSUdVUkVfRklMRVMgPSAiQ01ha2VMaXN0cy50eHQiCisKIGNtYWtlX2RvX2NvbmZpZ3VyZSgpIHsKIAlpZiBbICIke09FQ01BS0VfQlVJTERQQVRIfSIgXTsgdGhlbgogCQliYm5vdGUgImNtYWtlLmJiY2xhc3Mgbm8gbG9uZ2VyIHVzZXMgT0VDTUFLRV9CVUlMRFBBVEguICBUaGUgZGVmYXVsdCBiZWhhdmlvdXIgaXMgbm93IG91dC1vZi10cmVlIGJ1aWxkcyB3aXRoIEI9V09SS0RJUi9idWlsZC4iCkBAIC0xMDgsMjUgKzExMCwyNyBAQAogCSAgJHtPRUNNQUtFX1NJVEVGSUxFfSBcCiAJICAke09FQ01BS0VfU09VUkNFUEFUSH0gXAogCSAgLURDTUFLRV9JTlNUQUxMX1BSRUZJWDpQQVRIPSR7cHJlZml4fSBcCi0JICAtRENNQUtFX0lOU1RBTExfQklORElSOlBBVEg9JHtiaW5kaXJ9IFwKLQkgIC1EQ01BS0VfSU5TVEFMTF9TQklORElSOlBBVEg9JHtzYmluZGlyfSBcCi0JICAtRENNQUtFX0lOU1RBTExfTElCRVhFQ0RJUjpQQVRIPSR7bGliZXhlY2Rpcn0gXAorCSAgLURDTUFLRV9JTlNUQUxMX0JJTkRJUjpQQVRIPSR7QG9zLnBhdGgucmVscGF0aChkLmdldFZhcignYmluZGlyJywgVHJ1ZSksIGQuZ2V0VmFyKCdwcmVmaXgnLCBUcnVlKSl9IFwKKwkgIC1EQ01BS0VfSU5TVEFMTF9TQklORElSOlBBVEg9JHtAb3MucGF0aC5yZWxwYXRoKGQuZ2V0VmFyKCdzYmluZGlyJywgVHJ1ZSksIGQuZ2V0VmFyKCdwcmVmaXgnLCBUcnVlKSl9IFwKKwkgIC1EQ01BS0VfSU5TVEFMTF9MSUJFWEVDRElSOlBBVEg9JHtAb3MucGF0aC5yZWxwYXRoKGQuZ2V0VmFyKCdsaWJleGVjZGlyJywgVHJ1ZSksIGQuZ2V0VmFyKCdwcmVmaXgnLCBUcnVlKSl9IFwKIAkgIC1EQ01BS0VfSU5TVEFMTF9TWVNDT05GRElSOlBBVEg9JHtzeXNjb25mZGlyfSBcCi0JICAtRENNQUtFX0lOU1RBTExfU0hBUkVEU1RBVEVESVI6UEFUSD0ke3NoYXJlZHN0YXRlZGlyfSBcCisJICAtRENNQUtFX0lOU1RBTExfU0hBUkVEU1RBVEVESVI6UEFUSD0ke0Bvcy5wYXRoLnJlbHBhdGgoZC5nZXRWYXIoJ3NoYXJlZHN0YXRlZGlyJywgVHJ1ZSksIGQuICBnZXRWYXIoJ3ByZWZpeCcsIFRydWUpKX0gXAogCSAgLURDTUFLRV9JTlNUQUxMX0xPQ0FMU1RBVEVESVI6UEFUSD0ke2xvY2Fsc3RhdGVkaXJ9IFwKLQkgIC1EQ01BS0VfSU5TVEFMTF9MSUJESVI6UEFUSD0ke2xpYmRpcn0gXAotCSAgLURDTUFLRV9JTlNUQUxMX0lOQ0xVREVESVI6UEFUSD0ke2luY2x1ZGVkaXJ9IFwKLQkgIC1EQ01BS0VfSU5TVEFMTF9EQVRBUk9PVERJUjpQQVRIPSR7ZGF0YWRpcn0gXAorCSAgLURDTUFLRV9JTlNUQUxMX0xJQkRJUjpQQVRIPSR7QG9zLnBhdGgucmVscGF0aChkLmdldFZhcignbGliZGlyJywgVHJ1ZSksIGQuZ2V0VmFyKCdwcmVmaXgnLCBUcnVlKSl9IFwKKwkgIC1EQ01BS0VfSU5TVEFMTF9JTkNMVURFRElSOlBBVEg9JHtAb3MucGF0aC5yZWxwYXRoKGQuZ2V0VmFyKCdpbmNsdWRlZGlyJywgVHJ1ZSksIGQuZ2V0VmFyKCdwcmVmaXgnLCBUcnVlKSl9IFwKKwkgIC1EQ01BS0VfSU5TVEFMTF9EQVRBUk9PVERJUjpQQVRIPSR7QG9zLnBhdGgucmVscGF0aChkLmdldFZhcignZGF0YWRpcicsIFRydWUpLCBkLmdldFZhcigncHJlZml4JywgVHJ1ZSkpfSBcCiAJICAtRENNQUtFX0lOU1RBTExfU09fTk9fRVhFPTAgXAogCSAgLURDTUFLRV9UT09MQ0hBSU5fRklMRT0ke1dPUktESVJ9L3Rvb2xjaGFpbi5jbWFrZSBcCiAJICAtRENNQUtFX1ZFUkJPU0VfTUFLRUZJTEU9MSBcCisJICAtRENNQUtFX05PX1NZU1RFTV9GUk9NX0lNUE9SVEVEPTEgXAogCSAgJHtFWFRSQV9PRUNNQUtFfSBcCiAJICAtV25vLWRldgogfQogCitkb19jb21waWxlW3Byb2dyZXNzXSA9ICJwZXJjZW50IgogY21ha2VfZG9fY29tcGlsZSgpICB7CiAJY2QgJHtCfQotCWJhc2VfZG9fY29tcGlsZQorCWJhc2VfZG9fY29tcGlsZSBWRVJCT1NFPTEKIH0KIAogY21ha2VfZG9faW5zdGFsbCgpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY21sMS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jbWwxLmJiY2xhc3MKaW5kZXggYjVkYzAyOC4uNTgzNDgwNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jbWwxLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jbWwxLmJiY2xhc3MKQEAgLTQyLDYgKzQyLDcgQEAKIH0KIGRvX21lbnVjb25maWdbZGVwZW5kc10gKz0gIm5jdXJzZXMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCiBkb19tZW51Y29uZmlnW25vc3RhbXBdID0gIjEiCitkb19tZW51Y29uZmlnW2RpcnNdID0gIiR7Qn0iCiBhZGR0YXNrIG1lbnVjb25maWcgYWZ0ZXIgZG9fY29uZmlndXJlCiAKIHB5dGhvbiBkb19kaWZmY29uZmlnKCkgewpAQCAtNzMsNCArNzQsNSBAQAogfQogCiBkb19kaWZmY29uZmlnW25vc3RhbXBdID0gIjEiCitkb19kaWZmY29uZmlnW2RpcnNdID0gIiR7Qn0iCiBhZGR0YXNrIGRpZmZjb25maWcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY29yZS1pbWFnZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jb3JlLWltYWdlLmJiY2xhc3MKaW5kZXggNzA1Y2FkOC4uODQzMTQ0MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jb3JlLWltYWdlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jb3JlLWltYWdlLmJiY2xhc3MKQEAgLTIsOSArMiw2IEBACiAjCiAjIENvcHlyaWdodCAoQykgMjAwNy0yMDExIExpbnV4IEZvdW5kYXRpb24KIAotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vTElDRU5TRTttZDU9NGQ5MmNkMzczYWJkYTM5MzdjMmJjNDdmYmM0OWQ2OTAgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9DT1BZSU5HLk1JVDttZDU9M2RhOWNmYmNiNzg4YzgwYTAzODQzNjFiNGRlMjA0MjAiCi0KICMgSU1BR0VfRkVBVFVSRVMgY29udHJvbCBjb250ZW50IG9mIHRoZSBjb3JlIHJlZmVyZW5jZSBpbWFnZXMKICMgCiAjIEJ5IGRlZmF1bHQgd2UgaW5zdGFsbCBwYWNrYWdlZ3JvdXAtY29yZS1ib290IGFuZCBwYWNrYWdlZ3JvdXAtYmFzZS1leHRlbmRlZCBwYWNrYWdlczsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY3Jvc3MtY2FuYWRpYW4uYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY3Jvc3MtY2FuYWRpYW4uYmJjbGFzcwppbmRleCBlMDdiMWJkLi4yMTkyMWIzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Nyb3NzLWNhbmFkaWFuLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jcm9zcy1jYW5hZGlhbi5iYmNsYXNzCkBAIC0xNSw3ICsxNSw4IEBACiAjIFVwZGF0ZSBCQVNFX1BBQ0tBR0VfQVJDSCBhbmQgUEFDS0FHRV9BUkNIUwogIwogUEFDS0FHRV9BUkNIID0gIiR7U0RLX0FSQ0h9LSR7U0RLUEtHU1VGRklYfSIKLUNBTkFESUFORVhUUkFPUyA9ICJsaW51eC11Y2xpYmMgbGludXgtbXVzbCIKK0JBU0VDQU5BRElBTkVYVFJBT1MgPz0gImxpbnV4LXVjbGliYyBsaW51eC1tdXNsIgorQ0FOQURJQU5FWFRSQU9TID0gIiR7QkFTRUNBTkFESUFORVhUUkFPU30iCiBDQU5BRElBTkVYVFJBVkVORE9SID0gIiIKIE1PRElGWVRPUyA/Pz0gIjEiCiBweXRob24gKCkgewpAQCAtMzQsOCArMzUsMTMgQEAKIAogICAgIHRvcyA9IGQuZ2V0VmFyKCJUQVJHRVRfT1MiLCBUcnVlKQogICAgIHdoaXRlbGlzdCA9IFtdCisgICAgZXh0cmFsaWJjcyA9IFsiIl0KKyAgICBpZiAidWNsaWJjIiBpbiBkLmdldFZhcigiQkFTRUNBTkFESUFORVhUUkFPUyIsIFRydWUpOgorICAgICAgICBleHRyYWxpYmNzLmFwcGVuZCgidWNsaWJjIikKKyAgICBpZiAibXVzbCIgaW4gZC5nZXRWYXIoIkJBU0VDQU5BRElBTkVYVFJBT1MiLCBUcnVlKToKKyAgICAgICAgZXh0cmFsaWJjcy5hcHBlbmQoIm11c2wiKQogICAgIGZvciB2YXJpYW50IGluIFsiIiwgInNwZSIsICJ4MzIiLCAiZWFiaSIsICJuMzIiXToKLSAgICAgICAgZm9yIGxpYmMgaW4gWyIiLCAidWNsaWJjIiwgIm11c2wiXToKKyAgICAgICAgZm9yIGxpYmMgaW4gZXh0cmFsaWJjczoKICAgICAgICAgICAgIGVudHJ5ID0gImxpbnV4IgogICAgICAgICAgICAgaWYgdmFyaWFudCBhbmQgbGliYzoKICAgICAgICAgICAgICAgICBlbnRyeSA9IGVudHJ5ICsgIi0iICsgbGliYyArIHZhcmlhbnQKQEAgLTU5LDE1ICs2NSwyMiBAQAogICAgIGlmIHRhcmNoID09ICJ4ODZfNjQiOgogICAgICAgICBkLnNldFZhcigiTElCQ0VYVEVOU0lPTiIsICIiKQogICAgICAgICBkLnNldFZhcigiQUJJRVhURU5TSU9OIiwgIiIpCi0gICAgICAgIGQuYXBwZW5kVmFyKCJDQU5BRElBTkVYVFJBT1MiLCAiIGxpbnV4LWdudXgzMiBsaW51eC11Y2xpYmN4MzIgbGludXgtbXVzbHgzMiIpCisgICAgICAgIGQuYXBwZW5kVmFyKCJDQU5BRElBTkVYVFJBT1MiLCAiIGxpbnV4LWdudXgzMiIpCisgICAgICAgIGZvciBleHRyYW9zIGluIGQuZ2V0VmFyKCJCQVNFQ0FOQURJQU5FWFRSQU9TIiwgVHJ1ZSkuc3BsaXQoKToKKyAgICAgICAgICAgIGQuYXBwZW5kVmFyKCJDQU5BRElBTkVYVFJBT1MiLCAiICIgKyBleHRyYW9zICsgIngzMiIpCiAgICAgZWxpZiB0YXJjaCA9PSAicG93ZXJwYyI6CiAgICAgICAgICMgUG93ZXJQQyBjYW4gYnVpbGQgImxpbnV4IiBhbmQgImxpbnV4LWdudXNwZSIKICAgICAgICAgZC5zZXRWYXIoIkxJQkNFWFRFTlNJT04iLCAiIikKICAgICAgICAgZC5zZXRWYXIoIkFCSUVYVEVOU0lPTiIsICIiKQotICAgICAgICBkLmFwcGVuZFZhcigiQ0FOQURJQU5FWFRSQU9TIiwgIiBsaW51eC1nbnVzcGUgbGludXgtdWNsaWJjc3BlIGxpbnV4LW11c2xzcGUiKQorICAgICAgICBkLmFwcGVuZFZhcigiQ0FOQURJQU5FWFRSQU9TIiwgIiBsaW51eC1nbnVzcGUiKQorICAgICAgICBmb3IgZXh0cmFvcyBpbiBkLmdldFZhcigiQkFTRUNBTkFESUFORVhUUkFPUyIsIFRydWUpLnNwbGl0KCk6CisgICAgICAgICAgICBkLmFwcGVuZFZhcigiQ0FOQURJQU5FWFRSQU9TIiwgIiAiICsgZXh0cmFvcyArICJzcGUiKQogICAgIGVsaWYgdGFyY2ggPT0gIm1pcHM2NCI6Ci0gICAgICAgIGQuYXBwZW5kVmFyKCJDQU5BRElBTkVYVFJBT1MiLCAiIGxpbnV4LWdudW4zMiBsaW51eC11Y2xpYmNuMzIgbGludXgtbXVzbG4zMiIpCisgICAgICAgIGQuYXBwZW5kVmFyKCJDQU5BRElBTkVYVFJBT1MiLCAiIGxpbnV4LWdudW4zMiIpCisgICAgICAgIGZvciBleHRyYW9zIGluIGQuZ2V0VmFyKCJCQVNFQ0FOQURJQU5FWFRSQU9TIiwgVHJ1ZSkuc3BsaXQoKToKKyAgICAgICAgICAgIGQuYXBwZW5kVmFyKCJDQU5BRElBTkVYVFJBT1MiLCAiICIgKyBleHRyYW9zICsgIm4zMiIpCiAgICAgaWYgdGFyY2ggPT0gImFybSIgb3IgdGFyY2ggPT0gImFybWViIjoKKyAgICAgICAgZC5hcHBlbmRWYXIoIkNBTkFESUFORVhUUkFPUyIsICIgbGludXgtZ251ZWFiaSBsaW51eC1tdXNsZWFiaSBsaW51eC11Y2xpYmNlYWJpIikKICAgICAgICAgZC5zZXRWYXIoIlRBUkdFVF9PUyIsICJsaW51eC1nbnVlYWJpIikKICAgICBlbHNlOgogICAgICAgICBkLnNldFZhcigiVEFSR0VUX09TIiwgImxpbnV4IikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY3Jvc3MuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY3Jvc3MuYmJjbGFzcwppbmRleCA4MWQxYzlkLi4wMWIwOTMzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Nyb3NzLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jcm9zcy5iYmNsYXNzCkBAIC0xNyw2ICsxNyw4IEBACiBIT1NUX0xEX0FSQ0ggPSAiJHtCVUlMRF9MRF9BUkNIfSIKIEhPU1RfQVNfQVJDSCA9ICIke0JVSUxEX0FTX0FSQ0h9IgogCitleHBvcnQgbHRfY3Zfc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWMgPSAiJHtsaWJkaXJ9ICR7YmFzZV9saWJkaXJ9IC9saWIgL2xpYjY0IC91c3IvbGliIC91c3IvbGliNjQiCisKIFNUQUdJTkdfRElSX0hPU1QgPSAiJHtTVEFHSU5HX0RJUn0vJHtIT1NUX0FSQ0h9JHtIT1NUX1ZFTkRPUn0tJHtIT1NUX09TfSIKIAogUEFDS0FHRV9BUkNIID0gIiR7QlVJTERfQVJDSH0iCkBAIC02OCw0ICs3MCwxNiBAQAogCiBVU0VfTkxTID0gIm5vIgogCitleHBvcnQgQ0MgPSAiJHtCVUlMRF9DQ30iCitleHBvcnQgQ1hYID0gIiR7QlVJTERfQ1hYfSIKK2V4cG9ydCBGQyA9ICIke0JVSUxEX0ZDfSIKK2V4cG9ydCBDUFAgPSAiJHtCVUlMRF9DUFB9IgorZXhwb3J0IExEID0gIiR7QlVJTERfTER9IgorZXhwb3J0IENDTEQgPSAiJHtCVUlMRF9DQ0xEfSIKK2V4cG9ydCBBUiA9ICIke0JVSUxEX0FSfSIKK2V4cG9ydCBBUyA9ICIke0JVSUxEX0FTfSIKK2V4cG9ydCBSQU5MSUIgPSAiJHtCVUlMRF9SQU5MSUJ9IgorZXhwb3J0IFNUUklQID0gIiR7QlVJTERfU1RSSVB9IgorZXhwb3J0IE5NID0gIiR7QlVJTERfTk19IgorCiBpbmhlcml0IG5vcGFja2FnZXMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY3ZlLWNoZWNrLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2N2ZS1jaGVjay5iYmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0MjVhNDAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2N2ZS1jaGVjay5iYmNsYXNzCkBAIC0wLDAgKzEsMjY1IEBACisjIFRoaXMgY2xhc3MgaXMgdXNlZCB0byBjaGVjayByZWNpcGVzIGFnYWluc3QgcHVibGljIENWRXMuCisjCisjIEluIG9yZGVyIHRvIHVzZSB0aGlzIGNsYXNzIGp1c3QgaW5oZXJpdCB0aGUgY2xhc3MgaW4gdGhlCisjIGxvY2FsLmNvbmYgZmlsZSBhbmQgaXQgd2lsbCBhZGQgdGhlIGN2ZV9jaGVjayB0YXNrIGZvcgorIyBldmVyeSByZWNpcGUuIFRoZSB0YXNrIGNhbiBiZSB1c2VkIHBlciByZWNpcGUsIHBlciBpbWFnZSwKKyMgb3IgdXNpbmcgdGhlIHNwZWNpYWwgY2FzZXMgIndvcmxkIiBhbmQgInVuaXZlcnNlIi4gVGhlCisjIGN2ZV9jaGVjayB0YXNrIHdpbGwgcHJpbnQgYSB3YXJuaW5nIGZvciBldmVyeSB1bnBhdGNoZWQKKyMgQ1ZFIGZvdW5kIGFuZCBnZW5lcmF0ZSBhIGZpbGUgaW4gdGhlIHJlY2lwZSBXT1JLRElSL2N2ZQorIyBkaXJlY3RvcnkuIElmIGFuIGltYWdlIGlzIGJ1aWxkIGl0IHdpbGwgZ2VuZXJhdGUgYSByZXBvcnQKKyMgaW4gREVQTE9ZX0RJUl9JTUFHRSBmb3IgYWxsIHRoZSBwYWNrYWdlcyB1c2VkLgorIworIyBFeGFtcGxlOgorIyAgIGJpdGJha2UgLWMgY3ZlX2NoZWNrIG9wZW5zc2wKKyMgICBiaXRiYWtlIGNvcmUtaW1hZ2Utc2F0bworIyAgIGJpdGJha2UgLWsgLWMgY3ZlX2NoZWNrIHVuaXZlcnNlCisjCisjIERJU0NMQUlNRVIKKyMKKyMgVGhpcyBjbGFzcy90b29sIGlzIG1lYW50IHRvIGJlIHVzZWQgYXMgc3VwcG9ydCBhbmQgbm90CisjIHRoZSBvbmx5IG1ldGhvZCB0byBjaGVjayBhZ2FpbnN0IENWRXMuIFJ1bm5pbmcgdGhpcyB0b29sCisjIGRvZXNuJ3QgZ3VhcmFudGVlIHlvdXIgcGFja2FnZXMgYXJlIGZyZWUgb2YgQ1ZFcy4KKworQ1ZFX0NIRUNLX0RCX0RJUiA/PSAiJHtETF9ESVJ9L0NWRV9DSEVDSyIKK0NWRV9DSEVDS19EQl9GSUxFID89ICIke0NWRV9DSEVDS19EQl9ESVJ9L252ZC5kYiIKKworQ1ZFX0NIRUNLX0xPQ0FMX0RJUiA/PSAiJHtXT1JLRElSfS9jdmUiCitDVkVfQ0hFQ0tfTE9DQUxfRklMRSA/PSAiJHtDVkVfQ0hFQ0tfTE9DQUxfRElSfS9jdmUubG9nIgorQ1ZFX0NIRUNLX1RNUF9GSUxFID89ICIke1RNUERJUn0vY3ZlX2NoZWNrIgorCitDVkVfQ0hFQ0tfRElSID8/PSAiJHtERVBMT1lfRElSfS9jdmUiCitDVkVfQ0hFQ0tfTUFOSUZFU1QgPz0gIiR7REVQTE9ZX0RJUl9JTUFHRX0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LmN2ZSIKK0NWRV9DSEVDS19DT1BZX0ZJTEVTID8/PSAiMSIKK0NWRV9DSEVDS19DUkVBVEVfTUFOSUZFU1QgPz89ICIxIgorCisjIFdoaXRlbGlzdCBmb3IgcGFja2FnZXMgKFBOKQorQ1ZFX0NIRUNLX1BOX1dISVRFTElTVCA9ICJcCisgICAgZ2xpYmMtbG9jYWxlIFwKKyIKKworIyBXaGl0ZWxpc3QgZm9yIENWRSBhbmQgdmVyc2lvbiBvZiBwYWNrYWdlCitDVkVfQ0hFQ0tfQ1ZFX1dISVRFTElTVCA9ICJ7XAorICAgICdDVkUtMjAxNC0yNTI0JzogKCc2LjMnLCksIFwKK30iCisKK3B5dGhvbiBkb19jdmVfY2hlY2sgKCkgeworICAgICIiIgorICAgIENoZWNrIHJlY2lwZSBmb3IgcGF0Y2hlZCBhbmQgdW5wYXRjaGVkIENWRXMKKyAgICAiIiIKKworICAgIGlmIG9zLnBhdGguZXhpc3RzKGQuZ2V0VmFyKCJDVkVfQ0hFQ0tfVE1QX0ZJTEUiLCBUcnVlKSk6CisgICAgICAgIHBhdGNoZWRfY3ZlcyA9IGdldF9wYXRjaGVzX2N2ZXMoZCkKKyAgICAgICAgcGF0Y2hlZCwgdW5wYXRjaGVkID0gY2hlY2tfY3ZlcyhkLCBwYXRjaGVkX2N2ZXMpCisgICAgICAgIGlmIHBhdGNoZWQgb3IgdW5wYXRjaGVkOgorICAgICAgICAgICAgY3ZlX2RhdGEgPSBnZXRfY3ZlX2luZm8oZCwgcGF0Y2hlZCArIHVucGF0Y2hlZCkKKyAgICAgICAgICAgIGN2ZV93cml0ZV9kYXRhKGQsIHBhdGNoZWQsIHVucGF0Y2hlZCwgY3ZlX2RhdGEpCisgICAgZWxzZToKKyAgICAgICAgYmIubm90ZSgiRmFpbGVkIHRvIHVwZGF0ZSBDVkUgZGF0YWJhc2UsIHNraXBwaW5nIENWRSBjaGVjayIpCit9CisKK2FkZHRhc2sgY3ZlX2NoZWNrIGFmdGVyIGRvX3VucGFjayBiZWZvcmUgZG9fYnVpbGQKK2RvX2N2ZV9jaGVja1tkZXBlbmRzXSA9ICJjdmUtY2hlY2stdG9vbC1uYXRpdmU6ZG9fcG9wdWxhdGVfY3ZlX2RiIgorZG9fY3ZlX2NoZWNrW25vc3RhbXBdID0gIjEiCisKK3B5dGhvbiBjdmVfY2hlY2tfY2xlYW51cCAoKSB7CisgICAgIiIiCisgICAgRGVsZXRlIHRoZSBmaWxlIHVzZWQgdG8gZ2F0aGVyIGFsbCB0aGUgQ1ZFIGluZm9ybWF0aW9uLgorICAgICIiIgorCisgICAgYmIudXRpbHMucmVtb3ZlKGUuZGF0YS5nZXRWYXIoIkNWRV9DSEVDS19UTVBfRklMRSIsIFRydWUpKQorfQorCithZGRoYW5kbGVyIGN2ZV9jaGVja19jbGVhbnVwCitjdmVfY2hlY2tfY2xlYW51cFtldmVudG1hc2tdID0gImJiLmNvb2tlci5Db29rZXJFeGl0IgorCitweXRob24gY3ZlX2NoZWNrX3dyaXRlX3Jvb3Rmc19tYW5pZmVzdCAoKSB7CisgICAgIiIiCisgICAgQ3JlYXRlIENWRSBtYW5pZmVzdCB3aGVuIGJ1aWxkaW5nIGFuIGltYWdlCisgICAgIiIiCisKKyAgICBpbXBvcnQgc2h1dGlsCisKKyAgICBpZiBvcy5wYXRoLmV4aXN0cyhkLmdldFZhcigiQ1ZFX0NIRUNLX1RNUF9GSUxFIiwgVHJ1ZSkpOgorICAgICAgICBiYi5ub3RlKCJXcml0aW5nIHJvb3RmcyBDVkUgbWFuaWZlc3QiKQorICAgICAgICBkZXBsb3lfZGlyID0gZC5nZXRWYXIoIkRFUExPWV9ESVJfSU1BR0UiLCBUcnVlKQorICAgICAgICBsaW5rX25hbWUgPSBkLmdldFZhcigiSU1BR0VfTElOS19OQU1FIiwgVHJ1ZSkKKyAgICAgICAgbWFuaWZlc3RfbmFtZSA9IGQuZ2V0VmFyKCJDVkVfQ0hFQ0tfTUFOSUZFU1QiLCBUcnVlKQorICAgICAgICBjdmVfdG1wX2ZpbGUgPSBkLmdldFZhcigiQ1ZFX0NIRUNLX1RNUF9GSUxFIiwgVHJ1ZSkKKworICAgICAgICBzaHV0aWwuY29weWZpbGUoY3ZlX3RtcF9maWxlLCBtYW5pZmVzdF9uYW1lKQorCisgICAgICAgIGlmIG1hbmlmZXN0X25hbWUgYW5kIG9zLnBhdGguZXhpc3RzKG1hbmlmZXN0X25hbWUpOgorICAgICAgICAgICAgbWFuaWZlc3RfbGluayA9IG9zLnBhdGguam9pbihkZXBsb3lfZGlyLCAiJXMuY3ZlIiAlIGxpbmtfbmFtZSkKKyAgICAgICAgICAgICMgSWYgd2UgYWxyZWFkeSBoYXZlIGFub3RoZXIgbWFuaWZlc3QsIHVwZGF0ZSBzeW1saW5rcworICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMob3MucGF0aC5yZWFscGF0aChtYW5pZmVzdF9saW5rKSk6CisgICAgICAgICAgICAgICAgb3MucmVtb3ZlKG1hbmlmZXN0X2xpbmspCisgICAgICAgICAgICBvcy5zeW1saW5rKG9zLnBhdGguYmFzZW5hbWUobWFuaWZlc3RfbmFtZSksIG1hbmlmZXN0X2xpbmspCisgICAgICAgICAgICBiYi5wbGFpbigiSW1hZ2UgQ1ZFIHJlcG9ydCBzdG9yZWQgaW46ICVzIiAlIG1hbmlmZXN0X25hbWUpCit9CisKK1JPT1RGU19QT1NUUFJPQ0VTU19DT01NQU5EX3ByZXBlbmQgPSAiJHtAJ2N2ZV9jaGVja193cml0ZV9yb290ZnNfbWFuaWZlc3Q7ICcgaWYgZC5nZXRWYXIoJ0NWRV9DSEVDS19DUkVBVEVfTUFOSUZFU1QnLCBUcnVlKSA9PSAnMScgZWxzZSAnJ30iCisKK2RlZiBnZXRfcGF0Y2hlc19jdmVzKGQpOgorICAgICIiIgorICAgIEdldCBwYXRjaGVzIHRoYXQgc29sdmUgQ1ZFcyB1c2luZyB0aGUgIkNWRTogIiB0YWcuCisgICAgIiIiCisKKyAgICBpbXBvcnQgcmUKKworICAgIHBuID0gZC5nZXRWYXIoIlBOIiwgVHJ1ZSkKKyAgICBjdmVfbWF0Y2ggPSByZS5jb21waWxlKCJDVkU6KCBDVkVcLVxkezR9XC1cZCspKyIpCisgICAgcGF0Y2hlZF9jdmVzID0gc2V0KCkKKyAgICBiYi5kZWJ1ZygyLCAiTG9va2luZyBmb3IgcGF0Y2hlcyB0aGF0IHNvbHZlcyBDVkVzIGZvciAlcyIgJSBwbikKKyAgICBmb3IgdXJsIGluIHNyY19wYXRjaGVzKGQpOgorICAgICAgICBwYXRjaF9maWxlID0gYmIuZmV0Y2guZGVjb2RldXJsKHVybClbMl0KKyAgICAgICAgd2l0aCBvcGVuKHBhdGNoX2ZpbGUsICJyIiwgZW5jb2Rpbmc9InV0Zi04IikgYXMgZjoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBwYXRjaF90ZXh0ID0gZi5yZWFkKCkKKyAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6CisgICAgICAgICAgICAgICAgYmIuZGVidWcoMSwgIkZhaWxlZCB0byByZWFkIHBhdGNoICVzIHVzaW5nIFVURi04IGVuY29kaW5nIgorICAgICAgICAgICAgICAgICAgICAgICAgIiB0cnlpbmcgd2l0aCBpc284ODU5LTEiICUgIHBhdGNoX2ZpbGUpCisgICAgICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGNoX2ZpbGUsICJyIiwgZW5jb2Rpbmc9Imlzbzg4NTktMSIpIGFzIGY6CisgICAgICAgICAgICAgICAgICAgIHBhdGNoX3RleHQgPSBmLnJlYWQoKQorCisgICAgICAgICMgU2VhcmNoIGZvciB0aGUgIkNWRTogIiBsaW5lCisgICAgICAgIG1hdGNoID0gY3ZlX21hdGNoLnNlYXJjaChwYXRjaF90ZXh0KQorICAgICAgICBpZiBtYXRjaDoKKyAgICAgICAgICAgICMgR2V0IG9ubHkgdGhlIENWRXMgd2l0aG91dCB0aGUgIkNWRTogIiB0YWcKKyAgICAgICAgICAgIGN2ZXMgPSBwYXRjaF90ZXh0W21hdGNoLnN0YXJ0KCkrNTptYXRjaC5lbmQoKV0KKyAgICAgICAgICAgIGZvciBjdmUgaW4gY3Zlcy5zcGxpdCgpOgorICAgICAgICAgICAgICAgIGJiLmRlYnVnKDIsICJQYXRjaCAlcyBzb2x2ZXMgJXMiICUgKHBhdGNoX2ZpbGUsIGN2ZSkpCisgICAgICAgICAgICAgICAgcGF0Y2hlZF9jdmVzLmFkZChjdmUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBiYi5kZWJ1ZygyLCAiUGF0Y2ggJXMgZG9lc24ndCBzb2x2ZSBDVkVzIiAlIHBhdGNoX2ZpbGUpCisKKyAgICByZXR1cm4gcGF0Y2hlZF9jdmVzCisKK2RlZiBjaGVja19jdmVzKGQsIHBhdGNoZWRfY3Zlcyk6CisgICAgIiIiCisgICAgUnVuIGN2ZS1jaGVjay10b29sIGxvb2tpbmcgZm9yIHBhdGNoZWQgYW5kIHVucGF0Y2hlZCBDVkVzLgorICAgICIiIgorCisgICAgaW1wb3J0IGFzdCwgY3N2LCB0ZW1wZmlsZSwgc3VicHJvY2VzcywgaW8KKworICAgIGN2ZXNfcGF0Y2hlZCA9IFtdCisgICAgY3Zlc191bnBhdGNoZWQgPSBbXQorICAgIGJwbiA9IGQuZ2V0VmFyKCJCUE4iLCBUcnVlKQorICAgIHB2ID0gZC5nZXRWYXIoIlBWIiwgVHJ1ZSkuc3BsaXQoImdpdCsiKVswXQorICAgIGN2ZXMgPSAiICIuam9pbihwYXRjaGVkX2N2ZXMpCisgICAgY3ZlX2RiX2RpciA9IGQuZ2V0VmFyKCJDVkVfQ0hFQ0tfREJfRElSIiwgVHJ1ZSkKKyAgICBjdmVfd2hpdGVsaXN0ID0gYXN0LmxpdGVyYWxfZXZhbChkLmdldFZhcigiQ1ZFX0NIRUNLX0NWRV9XSElURUxJU1QiLCBUcnVlKSkKKyAgICBjdmVfY21kID0gImN2ZS1jaGVjay10b29sIgorICAgIGNtZCA9IFtjdmVfY21kLCAiLS1uby1odG1sIiwgIi0tY3N2IiwgIi0tbm90LWFmZmVjdGVkIiwgIi10IiwgImZhdXgiLCAiLWQiLCBjdmVfZGJfZGlyXQorCisgICAgIyBJZiB0aGUgcmVjaXBlIGhhcyBiZWVuIHdoaXRsaXN0ZWQgd2UgcmV0dXJuIGVtcHR5IGxpc3RzCisgICAgaWYgZC5nZXRWYXIoIlBOIiwgVHJ1ZSkgaW4gZC5nZXRWYXIoIkNWRV9DSEVDS19QTl9XSElURUxJU1QiLCBUcnVlKS5zcGxpdCgpOgorICAgICAgICBiYi5ub3RlKCJSZWNpcGUgaGFzIGJlZW4gd2hpdGVsaXN0ZWQsIHNraXBwaW5nIGNoZWNrIikKKyAgICAgICAgcmV0dXJuIChbXSwgW10pCisKKyAgICAjIEl0IGlzIG5lZWRlZCB0byBleHBvcnQgdGhlIHByb3hpZXMgdG8gZG93bmxvYWQgdGhlIGRhdGFiYXNlIHVzaW5nIEhUVFAKKyAgICBiYi51dGlscy5leHBvcnRfcHJveGllcyhkKQorCisgICAgdHJ5OgorICAgICAgICAjIFdyaXRlIHRoZSBmYXV4IENTViBmaWxlIHRvIGJlIHVzZWQgd2l0aCBjdmUtY2hlY2stdG9vbAorICAgICAgICBmZCwgZmF1eCA9IHRlbXBmaWxlLm1rc3RlbXAocHJlZml4PSJjdmUtZmF1eC0iKQorICAgICAgICB3aXRoIG9zLmZkb3BlbihmZCwgInciKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSgiJXMsJXMsJXMsIiAlIChicG4sIHB2LCBjdmVzKSkKKyAgICAgICAgY21kLmFwcGVuZChmYXV4KQorCisgICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKS5kZWNvZGUoInV0Zi04IikKKyAgICAgICAgYmIuZGVidWcoMiwgIk91dHB1dCBvZiBjb21tYW5kICVzOlxuJXMiICUgKCJcbiIuam9pbihjbWQpLCBvdXRwdXQpKQorICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlOgorICAgICAgICBiYi53YXJuKCJDb3VsZG4ndCBjaGVjayBmb3IgQ1ZFczogJXMgKG91dHB1dCAlcykiICUgKGUsIGUub3V0cHV0KSkKKyAgICBmaW5hbGx5OgorICAgICAgICBvcy5yZW1vdmUoZmF1eCkKKworICAgIGZvciByb3cgaW4gY3N2LnJlYWRlcihpby5TdHJpbmdJTyhvdXRwdXQpKToKKyAgICAgICAgIyBUaGlyZCByb3cgaGFzIHRoZSB1bnBhdGNoZWQgQ1ZFcworICAgICAgICBpZiByb3dbMl06CisgICAgICAgICAgICBmb3IgY3ZlIGluIHJvd1syXS5zcGxpdCgpOgorICAgICAgICAgICAgICAgICMgU2tpcCBpZiB0aGUgQ1ZFIGhhcyBiZWVuIHdoaXRsaXN0ZWQgZm9yIHRoZSBjdXJyZW50IHZlcnNpb24KKyAgICAgICAgICAgICAgICBpZiBwdiBpbiBjdmVfd2hpdGVsaXN0LmdldChjdmUsW10pOgorICAgICAgICAgICAgICAgICAgICBiYi5ub3RlKCIlcy0lcyBoYXMgYmVlbiB3aGl0ZWxpc3RlZCBmb3IgJXMiICUgKGJwbiwgcHYsIGN2ZSkpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgY3Zlc191bnBhdGNoZWQuYXBwZW5kKGN2ZSkKKyAgICAgICAgICAgICAgICAgICAgYmIuZGVidWcoMiwgIiVzLSVzIGlzIG5vdCBwYXRjaGVkIGZvciAlcyIgJSAoYnBuLCBwdiwgY3ZlKSkKKyAgICAgICAgIyBGb3VydGggcm93IGhhcyBwYXRjaGVkIENWRXMKKyAgICAgICAgaWYgcm93WzNdOgorICAgICAgICAgICAgZm9yIGN2ZSBpbiByb3dbM10uc3BsaXQoKToKKyAgICAgICAgICAgICAgICBjdmVzX3BhdGNoZWQuYXBwZW5kKGN2ZSkKKyAgICAgICAgICAgICAgICBiYi5kZWJ1ZygyLCAiJXMtJXMgaXMgcGF0Y2hlZCBmb3IgJXMiICUgKGJwbiwgcHYsIGN2ZSkpCisKKyAgICByZXR1cm4gKGN2ZXNfcGF0Y2hlZCwgY3Zlc191bnBhdGNoZWQpCisKK2RlZiBnZXRfY3ZlX2luZm8oZCwgY3Zlcyk6CisgICAgIiIiCisgICAgR2V0IENWRSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBkYXRhYmFzZSB1c2VkIGJ5IGN2ZS1jaGVjay10b29sLgorCisgICAgVW5mb3J0dW5hdGVseSB0aGUgb25seSB3YXkgdG8gZ2V0IENWRSBpbmZvIGlzIHNldCB0aGUgb3V0cHV0IHRvCisgICAgaHRtbCAoaGFyZCB0byBwYXJzZSkgb3IgcXVlcnkgZGlyZWN0bHkgdGhlIGRhdGFiYXNlLgorICAgICIiIgorCisgICAgdHJ5OgorICAgICAgICBpbXBvcnQgc3FsaXRlMworICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgZnJvbSBweXNxbGl0ZTIgaW1wb3J0IGRiYXBpMiBhcyBzcWxpdGUzCisKKyAgICBjdmVfZGF0YSA9IHt9CisgICAgZGJfZmlsZSA9IGQuZ2V0VmFyKCJDVkVfQ0hFQ0tfREJfRklMRSIsIFRydWUpCisgICAgcGxhY2Vob2xkZXIgPSAiLCIuam9pbigiPyIgKiBsZW4oY3ZlcykpCisgICAgcXVlcnkgPSAiU0VMRUNUICogRlJPTSBOVkQgV0hFUkUgaWQgSU4gKCVzKSIgJSBwbGFjZWhvbGRlcgorICAgIGNvbm4gPSBzcWxpdGUzLmNvbm5lY3QoZGJfZmlsZSkKKyAgICBjdXIgPSBjb25uLmN1cnNvcigpCisgICAgZm9yIHJvdyBpbiBjdXIuZXhlY3V0ZShxdWVyeSwgdHVwbGUoY3ZlcykpOgorICAgICAgICBjdmVfZGF0YVtyb3dbMF1dID0ge30KKyAgICAgICAgY3ZlX2RhdGFbcm93WzBdXVsic3VtbWFyeSJdID0gcm93WzFdCisgICAgICAgIGN2ZV9kYXRhW3Jvd1swXV1bInNjb3JlIl0gPSByb3dbMl0KKyAgICAgICAgY3ZlX2RhdGFbcm93WzBdXVsibW9kaWZpZWQiXSA9IHJvd1szXQorICAgICAgICBjdmVfZGF0YVtyb3dbMF1dWyJ2ZWN0b3IiXSA9IHJvd1s0XQorICAgIGNvbm4uY2xvc2UoKQorCisgICAgcmV0dXJuIGN2ZV9kYXRhCisKK2RlZiBjdmVfd3JpdGVfZGF0YShkLCBwYXRjaGVkLCB1bnBhdGNoZWQsIGN2ZV9kYXRhKToKKyAgICAiIiIKKyAgICBXcml0ZSBDVkUgaW5mb3JtYXRpb24gaW4gV09SS0RJUjsgYW5kIHRvIENWRV9DSEVDS19ESVIsIGFuZAorICAgIENWRSBtYW5pZmVzdCBpZiBlbmFibGVkLgorICAgICIiIgorCisgICAgY3ZlX2ZpbGUgPSBkLmdldFZhcigiQ1ZFX0NIRUNLX0xPQ0FMX0ZJTEUiLCBUcnVlKQorICAgIG52ZF9saW5rID0gImh0dHBzOi8vd2ViLm52ZC5uaXN0Lmdvdi92aWV3L3Z1bG4vZGV0YWlsP3Z1bG5JZD0iCisgICAgd3JpdGVfc3RyaW5nID0gIiIKKyAgICBmaXJzdF9hbGVydCA9IFRydWUKKyAgICBiYi51dGlscy5ta2RpcmhpZXIoZC5nZXRWYXIoIkNWRV9DSEVDS19MT0NBTF9ESVIiLCBUcnVlKSkKKworICAgIGZvciBjdmUgaW4gc29ydGVkKGN2ZV9kYXRhKToKKyAgICAgICAgd3JpdGVfc3RyaW5nICs9ICJQQUNLQUdFIE5BTUU6ICVzXG4iICUgZC5nZXRWYXIoIlBOIiwgVHJ1ZSkKKyAgICAgICAgd3JpdGVfc3RyaW5nICs9ICJQQUNLQUdFIFZFUlNJT046ICVzXG4iICUgZC5nZXRWYXIoIlBWIiwgVHJ1ZSkKKyAgICAgICAgd3JpdGVfc3RyaW5nICs9ICJDVkU6ICVzXG4iICUgY3ZlCisgICAgICAgIGlmIGN2ZSBpbiBwYXRjaGVkOgorICAgICAgICAgICAgd3JpdGVfc3RyaW5nICs9ICJDVkUgU1RBVFVTOiBQYXRjaGVkXG4iCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB3cml0ZV9zdHJpbmcgKz0gIkNWRSBTVEFUVVM6IFVucGF0Y2hlZFxuIgorICAgICAgICAgICAgaWYgZmlyc3RfYWxlcnQ6CisgICAgICAgICAgICAgICAgYmIud2FybigiRm91bmQgdW5wYXRjaGVkIENWRSwgZm9yIG1vcmUgaW5mb3JtYXRpb24gY2hlY2sgJXMiICUgY3ZlX2ZpbGUpCisgICAgICAgICAgICAgICAgZmlyc3RfYWxlcnQgPSBGYWxzZQorICAgICAgICB3cml0ZV9zdHJpbmcgKz0gIkNWRSBTVU1NQVJZOiAlc1xuIiAlIGN2ZV9kYXRhW2N2ZV1bInN1bW1hcnkiXQorICAgICAgICB3cml0ZV9zdHJpbmcgKz0gIkNWU1MgdjIgQkFTRSBTQ09SRTogJXNcbiIgJSBjdmVfZGF0YVtjdmVdWyJzY29yZSJdCisgICAgICAgIHdyaXRlX3N0cmluZyArPSAiVkVDVE9SOiAlc1xuIiAlIGN2ZV9kYXRhW2N2ZV1bInZlY3RvciJdCisgICAgICAgIHdyaXRlX3N0cmluZyArPSAiTU9SRSBJTkZPUk1BVElPTjogJXMlc1xuXG4iICUgKG52ZF9saW5rLCBjdmUpCisKKyAgICB3aXRoIG9wZW4oY3ZlX2ZpbGUsICJ3IikgYXMgZjoKKyAgICAgICAgYmIubm90ZSgiV3JpdGluZyBmaWxlICVzIHdpdGggQ1ZFIGluZm9ybWF0aW9uIiAlIGN2ZV9maWxlKQorICAgICAgICBmLndyaXRlKHdyaXRlX3N0cmluZykKKworICAgIGlmIGQuZ2V0VmFyKCJDVkVfQ0hFQ0tfQ09QWV9GSUxFUyIsIFRydWUpID09ICIxIjoKKyAgICAgICAgY3ZlX2RpciA9IGQuZ2V0VmFyKCJDVkVfQ0hFQ0tfRElSIiwgVHJ1ZSkKKyAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKGN2ZV9kaXIpCisgICAgICAgIGRlcGxveV9maWxlID0gb3MucGF0aC5qb2luKGN2ZV9kaXIsIGQuZ2V0VmFyKCJQTiIsIFRydWUpKQorICAgICAgICB3aXRoIG9wZW4oZGVwbG95X2ZpbGUsICJ3IikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUod3JpdGVfc3RyaW5nKQorCisgICAgaWYgZC5nZXRWYXIoIkNWRV9DSEVDS19DUkVBVEVfTUFOSUZFU1QiLCBUcnVlKSA9PSAiMSI6CisgICAgICAgIHdpdGggb3BlbihkLmdldFZhcigiQ1ZFX0NIRUNLX1RNUF9GSUxFIiwgVHJ1ZSksICJhIikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoIiVzIiAlIHdyaXRlX3N0cmluZykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGV2c2hlbGwuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGV2c2hlbGwuYmJjbGFzcwppbmRleCAzNDFkOWMwLi5iZTcxYWZmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2RldnNoZWxsLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kZXZzaGVsbC5iYmNsYXNzCkBAIC02NSw5ICs2NSw2IEBACiAgICAgICAgIG9zLmR1cDIobSwgc3lzLnN0ZG91dC5maWxlbm8oKSkKICAgICAgICAgb3MuZHVwMihtLCBzeXMuc3RkZXJyLmZpbGVubygpKQogCi0gICAgICAgIHN5cy5zdGRvdXQgPSBvcy5mZG9wZW4oc3lzLnN0ZG91dC5maWxlbm8oKSwgJ3cnLCAwKQotICAgICAgICBzeXMuc3RkaW4gPSBvcy5mZG9wZW4oc3lzLnN0ZGluLmZpbGVubygpLCAncicsIDApCi0KICAgICAgICAgYmIudXRpbHMubm9uYmxvY2tpbmdmZChzeXMuc3Rkb3V0KQogICAgICAgICBiYi51dGlscy5ub25ibG9ja2luZ2ZkKHN5cy5zdGRlcnIpCiAgICAgICAgIGJiLnV0aWxzLm5vbmJsb2NraW5nZmQoc3lzLnN0ZGluKQpAQCAtOTMsNiArOTAsNyBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBwcm9tcHQgPSBwczEKICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUocHJvbXB0KQorICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCiAKICAgICAgICAgIyBSZXN0b3JlIEN0cmwrQyBzaW5jZSBiaXRiYWtlIG1hc2tzIHRoaXMKICAgICAgICAgZGVmIHNpZ25hbF9oYW5kbGVyKHNpZ25hbCwgZnJhbWUpOgpAQCAtMTE0LDYgKzExMiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIGV4Y2VwdCBFT0ZFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcbiIpCisgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQogICAgICAgICAgICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgSU9FcnJvcikgYXMgZToKICAgICAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyA9PSAxMToKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Rpc3Ryb2RhdGEuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGlzdHJvZGF0YS5iYmNsYXNzCmluZGV4IDUxYmZjMWUuLmZiYjc0MDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGlzdHJvZGF0YS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGlzdHJvZGF0YS5iYmNsYXNzCkBAIC0xLDQgKzEsMyBAQAotaW5jbHVkZSBjb25mL2Rpc3Ryby9pbmNsdWRlL3BhY2thZ2VfcmVnZXguaW5jCiBpbmNsdWRlIGNvbmYvZGlzdHJvL2luY2x1ZGUvdXBzdHJlYW1fdHJhY2tpbmcuaW5jCiBpbmNsdWRlIGNvbmYvZGlzdHJvL2luY2x1ZGUvZGlzdHJvX2FsaWFzLmluYwogaW5jbHVkZSBjb25mL2Rpc3Ryby9pbmNsdWRlL21haW50YWluZXJzLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kaXN0dXRpbHMtY29tbW9uLWJhc2UuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGlzdHV0aWxzLWNvbW1vbi1iYXNlLmJiY2xhc3MKaW5kZXggMDg1MTFmNS4uODI0YTFiNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kaXN0dXRpbHMtY29tbW9uLWJhc2UuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Rpc3R1dGlscy1jb21tb24tYmFzZS5iYmNsYXNzCkBAIC0xLDcgKzEsMyBAQAotaW5oZXJpdCBweXRob24tZGlyCi0KLUVYVFJBX09FTUFLRSA9ICIiCi0KIGV4cG9ydCBTVEFHSU5HX0lOQ0RJUgogZXhwb3J0IFNUQUdJTkdfTElCRElSCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGlzdHV0aWxzLW5hdGl2ZS1iYXNlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Rpc3R1dGlscy1uYXRpdmUtYmFzZS5iYmNsYXNzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDljYjk1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGlzdHV0aWxzLW5hdGl2ZS1iYXNlLmJiY2xhc3MKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLWluaGVyaXQgZGlzdHV0aWxzLWNvbW1vbi1iYXNlCi0KLURFUEVORFMgICs9ICIke0BbIiR7UFlUSE9OX1BOfS1uYXRpdmUiLCAiIl1bKGQuZ2V0VmFyKCdQQUNLQUdFUycsIFRydWUpID09ICcnKV19IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kaXN0dXRpbHMtdG9vbHMuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGlzdHV0aWxzLXRvb2xzLmJiY2xhc3MKaW5kZXggOGQ5YjNmNy4uM2VmOWNjNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kaXN0dXRpbHMtdG9vbHMuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Rpc3R1dGlscy10b29scy5iYmNsYXNzCkBAIC04LDE0ICs4LDEyIEBACiBkaXN0dXRpbHNfZG9fY29tcGlsZSgpIHsKICAgICAgICAgIFNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKICAgICAgICAgIFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKLSAgICAgICAgIEJVSUxEX1NZUz0ke0JVSUxEX1NZU30gSE9TVF9TWVM9JHtIT1NUX1NZU30gXAogICAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UFlUSE9OX1BOfS1uYXRpdmUvJHtQWVRIT05fUE59IHNldHVwLnB5IGJ1aWxkICR7RElTVFVUSUxTX0JVSUxEX0FSR1N9IHx8IFwKICAgICAgICAgIGJiZmF0YWxfbG9nICIke1BZVEhPTl9QTn0gc2V0dXAucHkgYnVpbGRfZXh0IGV4ZWN1dGlvbiBmYWlsZWQuIgogfQogCiBkaXN0dXRpbHNfc3RhZ2VfaGVhZGVycygpIHsKICAgICAgICAgaW5zdGFsbCAtZCAke1NUQUdJTkdfRElSX0hPU1R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0KLSAgICAgICAgQlVJTERfU1lTPSR7QlVJTERfU1lTfSBIT1NUX1NZUz0ke0hPU1RfU1lTfSBcCiAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsX2hlYWRlcnMgJHtESVNUVVRJTFNfU1RBR0VfSEVBREVSU19BUkdTfSB8fCBcCiAgICAgICAgIGJiZmF0YWxfbG9nICIke1BZVEhPTl9QTn0gc2V0dXAucHkgaW5zdGFsbF9oZWFkZXJzIGV4ZWN1dGlvbiBmYWlsZWQuIgogfQpAQCAtMjUsNyArMjMsNiBAQAogICAgICAgICBTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCiAgICAgICAgIGluc3RhbGwgLWQgJHtTVEFHSU5HX0RJUl9IT1NUfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9CiAgICAgICAgIFBZVEhPTlBBVEg9JHtTVEFHSU5HX0RJUl9IT1NUfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IFwKLSAgICAgICAgQlVJTERfU1lTPSR7QlVJTERfU1lTfSBIT1NUX1NZUz0ke0hPU1RfU1lTfSBcCiAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsICR7RElTVFVUSUxTX1NUQUdFX0FMTF9BUkdTfSB8fCBcCiAgICAgICAgIGJiZmF0YWxfbG9nICIke1BZVEhPTl9QTn0gc2V0dXAucHkgaW5zdGFsbCAoc3RhZ2UpIGV4ZWN1dGlvbiBmYWlsZWQuIgogfQpAQCAtMzcsNyArMzQsNiBAQAogICAgICAgICBTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCiAgICAgICAgIFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKICAgICAgICAgUFlUSE9OUEFUSD0ke0R9LyR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IFwKLSAgICAgICAgQlVJTERfU1lTPSR7QlVJTERfU1lTfSBIT1NUX1NZUz0ke0hPU1RfU1lTfSBcCiAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsIC0taW5zdGFsbC1saWI9JHtEfS8ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSAke0RJU1RVVElMU19JTlNUQUxMX0FSR1N9IHx8IFwKICAgICAgICAgYmJmYXRhbF9sb2cgIiR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsIGV4ZWN1dGlvbiBmYWlsZWQuIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Rpc3R1dGlscy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kaXN0dXRpbHMuYmJjbGFzcwppbmRleCBkYTQ4YTJlLi44NTc1NzJkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Rpc3R1dGlscy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGlzdHV0aWxzLmJiY2xhc3MKQEAgLTEwLDE0ICsxMCwxMiBAQAogZGlzdHV0aWxzX2RvX2NvbXBpbGUoKSB7CiAgICAgICAgICBTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCiAgICAgICAgICBTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgICBCVUlMRF9TWVM9JHtCVUlMRF9TWVN9IEhPU1RfU1lTPSR7SE9TVF9TWVN9IFwKICAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBzZXR1cC5weSBidWlsZCAke0RJU1RVVElMU19CVUlMRF9BUkdTfSB8fCBcCiAgICAgICAgICBiYmZhdGFsX2xvZyAiJHtQWVRIT05fUE59IHNldHVwLnB5IGJ1aWxkIGV4ZWN1dGlvbiBmYWlsZWQuIgogfQogCiBkaXN0dXRpbHNfc3RhZ2VfaGVhZGVycygpIHsKICAgICAgICAgaW5zdGFsbCAtZCAke1NUQUdJTkdfRElSX0hPU1R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0KLSAgICAgICAgQlVJTERfU1lTPSR7QlVJTERfU1lTfSBIT1NUX1NZUz0ke0hPU1RfU1lTfSBcCiAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsX2hlYWRlcnMgJHtESVNUVVRJTFNfU1RBR0VfSEVBREVSU19BUkdTfSB8fCBcCiAgICAgICAgIGJiZmF0YWxfbG9nICIke1BZVEhPTl9QTn0gc2V0dXAucHkgaW5zdGFsbF9oZWFkZXJzIGV4ZWN1dGlvbiBmYWlsZWQuIgogfQpAQCAtMjcsNyArMjUsNiBAQAogICAgICAgICBTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCiAgICAgICAgIGluc3RhbGwgLWQgJHtTVEFHSU5HX0RJUl9IT1NUfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9CiAgICAgICAgIFBZVEhPTlBBVEg9JHtTVEFHSU5HX0RJUl9IT1NUfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IFwKLSAgICAgICAgQlVJTERfU1lTPSR7QlVJTERfU1lTfSBIT1NUX1NZUz0ke0hPU1RfU1lTfSBcCiAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsICR7RElTVFVUSUxTX1NUQUdFX0FMTF9BUkdTfSB8fCBcCiAgICAgICAgIGJiZmF0YWxfbG9nICIke1BZVEhPTl9QTn0gc2V0dXAucHkgaW5zdGFsbCAoc3RhZ2UpIGV4ZWN1dGlvbiBmYWlsZWQuIgogfQpAQCAtMzcsNyArMzQsNiBAQAogICAgICAgICBTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCiAgICAgICAgIFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKICAgICAgICAgUFlUSE9OUEFUSD0ke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gXAotICAgICAgICBCVUlMRF9TWVM9JHtCVUlMRF9TWVN9IEhPU1RfU1lTPSR7SE9TVF9TWVN9IFwKICAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UFlUSE9OX1BOfS1uYXRpdmUvJHtQWVRIT05fUE59IHNldHVwLnB5IGluc3RhbGwgLS1pbnN0YWxsLWxpYj0ke0R9LyR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9ICR7RElTVFVUSUxTX0lOU1RBTExfQVJHU30gfHwgXAogICAgICAgICBiYmZhdGFsX2xvZyAiJHtQWVRIT05fUE59IHNldHVwLnB5IGluc3RhbGwgZXhlY3V0aW9uIGZhaWxlZC4iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGlzdHV0aWxzMy1iYXNlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Rpc3R1dGlsczMtYmFzZS5iYmNsYXNzCmluZGV4IDJhMDkzZDMuLjgyYWI2YTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGlzdHV0aWxzMy1iYXNlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kaXN0dXRpbHMzLWJhc2UuYmJjbGFzcwpAQCAtMSw4ICsxLDUgQEAKIERFUEVORFMgICs9ICIke0BbIiR7UFlUSE9OX1BOfS1uYXRpdmUgJHtQWVRIT05fUE59IiwgIiJdWyhkLmdldFZhcignUEFDS0FHRVMnLCBUcnVlKSA9PSAnJyldfSIKIFJERVBFTkRTXyR7UE59ICs9ICIke0BbJycsICcke1BZVEhPTl9QTn0tY29yZSddWycke0NMQVNTT1ZFUlJJREV9JyA9PSAnY2xhc3MtdGFyZ2V0J119IgogCi1QWVRIT05fQkFTRVZFUlNJT04gPSAiMy41IgotUFlUSE9OX0FCSSA9ICJtIgotCiBpbmhlcml0IGRpc3R1dGlscy1jb21tb24tYmFzZSBweXRob24zbmF0aXZlCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGlzdHV0aWxzMy1uYXRpdmUtYmFzZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kaXN0dXRpbHMzLW5hdGl2ZS1iYXNlLmJiY2xhc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiOWExYTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kaXN0dXRpbHMzLW5hdGl2ZS1iYXNlLmJiY2xhc3MKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLVBZVEhPTl9CQVNFVkVSU0lPTiA9ICIzLjUiCi1QWVRIT05fQUJJID0gIm0iCi0KLWluaGVyaXQgZGlzdHV0aWxzLW5hdGl2ZS1iYXNlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Rpc3R1dGlsczMuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGlzdHV0aWxzMy5iYmNsYXNzCmluZGV4IDRmNmNhNDQuLmE2NzIwYzUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGlzdHV0aWxzMy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGlzdHV0aWxzMy5iYmNsYXNzCkBAIC05LDE0ICs5LDggQEAKICAgICAtLWluc3RhbGwtZGF0YT0ke0R9LyR7ZGF0YWRpcn0iCiAKIGRpc3R1dGlsczNfZG9fY29tcGlsZSgpIHsKLSAgICAgICAgaWYgWyAke0JVSUxEX1NZU30gIT0gJHtIT1NUX1NZU30gXTsgdGhlbgotICAgICAgICAgICAgICAgIFNZUz0ke01BQ0hJTkV9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBTWVM9JHtIT1NUX1NZU30KLSAgICAgICAgZmkKICAgICAgICAgU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAogICAgICAgICBTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgIEJVSUxEX1NZUz0ke0JVSUxEX1NZU30gSE9TVF9TWVM9JHtTWVN9IFwKICAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UFlUSE9OX1BOfS1uYXRpdmUvJHtQWVRIT05fUE59IHNldHVwLnB5IFwKICAgICAgICAgYnVpbGQgJHtESVNUVVRJTFNfQlVJTERfQVJHU30gfHwgXAogICAgICAgICBiYmZhdGFsX2xvZyAiJHtQWVRIT05fUE59IHNldHVwLnB5IGJ1aWxkX2V4dCBleGVjdXRpb24gZmFpbGVkLiIKQEAgLTI1LDI4ICsxOSwxNiBAQAogCiBkaXN0dXRpbHMzX3N0YWdlX2hlYWRlcnMoKSB7CiAgICAgICAgIGluc3RhbGwgLWQgJHtTVEFHSU5HX0RJUl9IT1NUfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9Ci0gICAgICAgIGlmIFsgJHtCVUlMRF9TWVN9ICE9ICR7SE9TVF9TWVN9IF07IHRoZW4KLSAgICAgICAgICAgICAgICBTWVM9JHtNQUNISU5FfQotICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgU1lTPSR7SE9TVF9TWVN9Ci0gICAgICAgIGZpCi0gICAgICAgIEJVSUxEX1NZUz0ke0JVSUxEX1NZU30gSE9TVF9TWVM9JHtTWVN9IFwKICAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UFlUSE9OX1BOfS1uYXRpdmUvJHtQWVRIT05fUE59IHNldHVwLnB5IGluc3RhbGxfaGVhZGVycyAke0RJU1RVVElMU19TVEFHRV9IRUFERVJTX0FSR1N9IHx8IFwKICAgICAgICAgYmJmYXRhbF9sb2cgIiR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsX2hlYWRlcnMgZXhlY3V0aW9uIGZhaWxlZC4iCiB9CiBkaXN0dXRpbHMzX3N0YWdlX2hlYWRlcnNbdmFyZGVwc2V4Y2x1ZGVdID0gIk1BQ0hJTkUiCiAKIGRpc3R1dGlsczNfc3RhZ2VfYWxsKCkgewotICAgICAgICBpZiBbICR7QlVJTERfU1lTfSAhPSAke0hPU1RfU1lTfSBdOyB0aGVuCi0gICAgICAgICAgICAgICAgU1lTPSR7TUFDSElORX0KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFNZUz0ke0hPU1RfU1lTfQotICAgICAgICBmaQogICAgICAgICBTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCiAgICAgICAgIFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKICAgICAgICAgaW5zdGFsbCAtZCAke1NUQUdJTkdfRElSX0hPU1R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0KICAgICAgICAgUFlUSE9OUEFUSD0ke1NUQUdJTkdfRElSX0hPU1R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gXAotICAgICAgICBCVUlMRF9TWVM9JHtCVUlMRF9TWVN9IEhPU1RfU1lTPSR7U1lTfSBcCiAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsICR7RElTVFVUSUxTX1NUQUdFX0FMTF9BUkdTfSB8fCBcCiAgICAgICAgIGJiZmF0YWxfbG9nICIke1BZVEhPTl9QTn0gc2V0dXAucHkgaW5zdGFsbCAoc3RhZ2UpIGV4ZWN1dGlvbiBmYWlsZWQuIgogfQpAQCAtNTQsMTUgKzM2LDkgQEAKIAogZGlzdHV0aWxzM19kb19pbnN0YWxsKCkgewogICAgICAgICBpbnN0YWxsIC1kICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfQotICAgICAgICBpZiBbICR7QlVJTERfU1lTfSAhPSAke0hPU1RfU1lTfSBdOyB0aGVuCi0gICAgICAgICAgICAgICAgU1lTPSR7TUFDSElORX0KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFNZUz0ke0hPU1RfU1lTfQotICAgICAgICBmaQogICAgICAgICBTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCiAgICAgICAgIFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKICAgICAgICAgUFlUSE9OUEFUSD0ke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gXAotICAgICAgICBCVUlMRF9TWVM9JHtCVUlMRF9TWVN9IEhPU1RfU1lTPSR7U1lTfSBcCiAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsIC0taW5zdGFsbC1saWI9JHtEfS8ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSAke0RJU1RVVElMU19JTlNUQUxMX0FSR1N9IHx8IFwKICAgICAgICAgYmJmYXRhbF9sb2cgIiR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsIGV4ZWN1dGlvbiBmYWlsZWQuIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2V4dGVybmFsc3JjLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2V4dGVybmFsc3JjLmJiY2xhc3MKaW5kZXggZGE3ZWI0Ny4uMzE5MDhjMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9leHRlcm5hbHNyYy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZXh0ZXJuYWxzcmMuYmJjbGFzcwpAQCAtMjksNiArMjksMjMgQEAKIAogcHl0aG9uICgpIHsKICAgICBleHRlcm5hbHNyYyA9IGQuZ2V0VmFyKCdFWFRFUk5BTFNSQycsIFRydWUpCisKKyAgICAjIElmIHRoaXMgaXMgdGhlIGJhc2UgcmVjaXBlIGFuZCBFWFRFUk5BTFNSQyBpcyBzZXQgZm9yIGl0IG9yIGFueSBvZiBpdHMKKyAgICAjIGRlcml2YXRpdmVzLCB0aGVuIGVuYWJsZSBCQl9ET05UX0NBQ0hFIHRvIGZvcmNlIHRoZSByZWNpcGUgdG8gYWx3YXlzIGJlCisgICAgIyByZS1wYXJzZWQgc28gdGhhdCB0aGUgZmlsZS1jaGVja3N1bXMgZnVuY3Rpb24gZm9yIGRvX2NvbXBpbGUgaXMgcnVuIGV2ZXJ5CisgICAgIyB0aW1lLgorICAgIGJwbiA9IGQuZ2V0VmFyKCdCUE4nLCBUcnVlKQorICAgIGlmIGJwbiA9PSBkLmdldFZhcignUE4nLCBUcnVlKToKKyAgICAgICAgY2xhc3NleHRlbmQgPSAoZC5nZXRWYXIoJ0JCQ0xBU1NFWFRFTkQnLCBUcnVlKSBvciAnJykuc3BsaXQoKQorICAgICAgICBpZiAoZXh0ZXJuYWxzcmMgb3IKKyAgICAgICAgICAgICAgICAoJ25hdGl2ZScgaW4gY2xhc3NleHRlbmQgYW5kCisgICAgICAgICAgICAgICAgIGQuZ2V0VmFyKCdFWFRFUk5BTFNSQ19wbi0lcy1uYXRpdmUnICUgYnBuLCBUcnVlKSkgb3IKKyAgICAgICAgICAgICAgICAoJ25hdGl2ZXNkaycgaW4gY2xhc3NleHRlbmQgYW5kCisgICAgICAgICAgICAgICAgIGQuZ2V0VmFyKCdFWFRFUk5BTFNSQ19wbi1uYXRpdmVzZGstJXMnICUgYnBuLCBUcnVlKSkgb3IKKyAgICAgICAgICAgICAgICAoJ2Nyb3NzJyBpbiBjbGFzc2V4dGVuZCBhbmQKKyAgICAgICAgICAgICAgICAgZC5nZXRWYXIoJ0VYVEVSTkFMU1JDX3BuLSVzLWNyb3NzJyAlIGJwbiwgVHJ1ZSkpKToKKyAgICAgICAgICAgIGQuc2V0VmFyKCdCQl9ET05UX0NBQ0hFJywgJzEnKQorCiAgICAgaWYgZXh0ZXJuYWxzcmM6CiAgICAgICAgIGQuc2V0VmFyKCdTJywgZXh0ZXJuYWxzcmMpCiAgICAgICAgIGV4dGVybmFsc3JjYnVpbGQgPSBkLmdldFZhcignRVhURVJOQUxTUkNfQlVJTEQnLCBUcnVlKQpAQCAtODUsMTAgKzEwMiw4IEBACiAgICAgICAgIGQucHJlcGVuZFZhckZsYWcoJ2RvX2NvbXBpbGUnLCAncHJlZnVuY3MnLCAiZXh0ZXJuYWxzcmNfY29tcGlsZV9wcmVmdW5jICIpCiAgICAgICAgIGQucHJlcGVuZFZhckZsYWcoJ2RvX2NvbmZpZ3VyZScsICdwcmVmdW5jcycsICJleHRlcm5hbHNyY19jb25maWd1cmVfcHJlZnVuYyAiKQogCi0gICAgICAgICMgRm9yY2UgdGhlIHJlY2lwZSB0byBiZSBhbHdheXMgcmUtcGFyc2VkIHNvIHRoYXQgdGhlIGZpbGVfY2hlY2tzdW1zCi0gICAgICAgICMgZnVuY3Rpb24gaXMgcnVuIGV2ZXJ5IHRpbWUKLSAgICAgICAgZC5zZXRWYXIoJ0JCX0RPTlRfQ0FDSEUnLCAnMScpCiAgICAgICAgIGQuc2V0VmFyRmxhZygnZG9fY29tcGlsZScsICdmaWxlLWNoZWNrc3VtcycsICcke0BzcmN0cmVlX2hhc2hfZmlsZXMoZCl9JykKKyAgICAgICAgZC5zZXRWYXJGbGFnKCdkb19jb25maWd1cmUnLCAnZmlsZS1jaGVja3N1bXMnLCAnJHtAc3JjdHJlZV9jb25maWd1cmVfaGFzaF9maWxlcyhkKX0nKQogCiAgICAgICAgICMgV2UgZG9uJ3Qgd2FudCB0aGUgd29ya2RpciB0byBnbyBhd2F5CiAgICAgICAgIGQuYXBwZW5kVmFyKCdSTV9XT1JLX0VYQ0xVREUnLCAnICcgKyBkLmdldFZhcignUE4nLCBUcnVlKSkKQEAgLTE0NSwxMCArMTYwLDMxIEBACiAgICAgICAgICAgICBlbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQogICAgICAgICAgICAgZW52WydHSVRfSU5ERVhfRklMRSddID0gdG1wX2luZGV4Lm5hbWUKICAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsnZ2l0JywgJ2FkZCcsICcuJ10sIGN3ZD1zX2RpciwgZW52PWVudikKLSAgICAgICAgICAgIHNoYTEgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbJ2dpdCcsICd3cml0ZS10cmVlJ10sIGN3ZD1zX2RpciwgZW52PWVudikKKyAgICAgICAgICAgIHNoYTEgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbJ2dpdCcsICd3cml0ZS10cmVlJ10sIGN3ZD1zX2RpciwgZW52PWVudikuZGVjb2RlKCJ1dGYtOCIpCiAgICAgICAgIHdpdGggb3BlbihvZV9oYXNoX2ZpbGUsICd3JykgYXMgZm9iajoKICAgICAgICAgICAgIGZvYmoud3JpdGUoc2hhMSkKICAgICAgICAgcmV0ID0gb2VfaGFzaF9maWxlICsgJzpUcnVlJwogICAgIGVsc2U6CiAgICAgICAgIHJldCA9IGQuZ2V0VmFyKCdFWFRFUk5BTFNSQycsIFRydWUpICsgJy8qOlRydWUnCiAgICAgcmV0dXJuIHJldAorCitkZWYgc3JjdHJlZV9jb25maWd1cmVfaGFzaF9maWxlcyhkKToKKyAgICAiIiIKKyAgICBHZXQgdGhlIGxpc3Qgb2YgZmlsZXMgdGhhdCBzaG91bGQgdHJpZ2dlciBkb19jb25maWd1cmUgdG8gcmUtZXhlY3V0ZSwKKyAgICBiYXNlZCBvbiB0aGUgdmFsdWUgb2YgQ09ORklHVVJFX0ZJTEVTCisgICAgIiIiCisgICAgaW5fZmlsZXMgPSAoZC5nZXRWYXIoJ0NPTkZJR1VSRV9GSUxFUycsIFRydWUpIG9yICcnKS5zcGxpdCgpCisgICAgb3V0X2l0ZW1zID0gW10KKyAgICBzZWFyY2hfZmlsZXMgPSBbXQorICAgIGZvciBlbnRyeSBpbiBpbl9maWxlczoKKyAgICAgICAgaWYgZW50cnkuc3RhcnRzd2l0aCgnLycpOgorICAgICAgICAgICAgb3V0X2l0ZW1zLmFwcGVuZCgnJXM6JXMnICUgKGVudHJ5LCBvcy5wYXRoLmV4aXN0cyhlbnRyeSkpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VhcmNoX2ZpbGVzLmFwcGVuZChlbnRyeSkKKyAgICBpZiBzZWFyY2hfZmlsZXM6CisgICAgICAgIHNfZGlyID0gZC5nZXRWYXIoJ0VYVEVSTkFMU1JDJywgVHJ1ZSkKKyAgICAgICAgZm9yIHJvb3QsIF8sIGZpbGVzIGluIG9zLndhbGsoc19kaXIpOgorICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgaWYgZiBpbiBzZWFyY2hfZmlsZXM6CisgICAgICAgICAgICAgICAgICAgIG91dF9pdGVtcy5hcHBlbmQoJyVzOlRydWUnICUgb3MucGF0aC5qb2luKHJvb3QsIGYpKQorICAgIHJldHVybiAnICcuam9pbihvdXRfaXRlbXMpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dvYmplY3QtaW50cm9zcGVjdGlvbi1kYXRhLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dvYmplY3QtaW50cm9zcGVjdGlvbi1kYXRhLmJiY2xhc3MKaW5kZXggYjFiZGQyNi4uMmVmNjg0NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nb2JqZWN0LWludHJvc3BlY3Rpb24tZGF0YS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ29iamVjdC1pbnRyb3NwZWN0aW9uLWRhdGEuYmJjbGFzcwpAQCAtMyw3ICszLDUgQEAKICMKICMgSXQgc2hvdWxkIGJlIHVzZWQgaW4gcmVjaXBlcyB0byBkZXRlcm1pbmUgd2hldGhlciBpbnRyb3NwZWN0aW9uIGRhdGEgc2hvdWxkIGJlIGJ1aWx0LAogIyBzbyB0aGF0IHFlbXUgdXNlIGNhbiBiZSBhdm9pZGVkIHdoZW4gbmVjZXNzYXJ5LgotR0lfREFUQV9FTkFCTEVEID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnZ29iamVjdC1pbnRyb3NwZWN0aW9uLWRhdGEnLCBcCitHSV9EQVRBX0VOQUJMRUQgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnZ29iamVjdC1pbnRyb3NwZWN0aW9uLWRhdGEnLCBcCiAgICAgICAgICAgICAgICAgICAgICAgYmIudXRpbHMuY29udGFpbnMoJ01BQ0hJTkVfRkVBVFVSRVMnLCAncWVtdS11c2VybW9kZScsICdUcnVlJywgJ0ZhbHNlJywgZCksICdGYWxzZScsIGQpfSIKLQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dvYmplY3QtaW50cm9zcGVjdGlvbi5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nb2JqZWN0LWludHJvc3BlY3Rpb24uYmJjbGFzcwppbmRleCAyZDczZTQwLi4zNzM4OWNiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dvYmplY3QtaW50cm9zcGVjdGlvbi5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ29iamVjdC1pbnRyb3NwZWN0aW9uLmJiY2xhc3MKQEAgLTEsMjIgKzEsMjggQEAKICMgSW5oZXJpdCB0aGlzIGNsYXNzIGluIHJlY2lwZXMgdG8gZW5hYmxlIGJ1aWxkaW5nIHRoZWlyIGludHJvc3BlY3Rpb24gZmlsZXMKIAotIyBUaGlzIHNldHMgdXAgYXV0b2NvbmYtYmFzZWQgcmVjaXBlcyB0byBidWlsZCBpbnRyb3NwZWN0aW9uIGRhdGEgKG9yIG5vdCksCisjIHB5dGhvbjNuYXRpdmUgaXMgaW5oZXJpdGVkIHRvIHByZXZlbnQgaW50cm9zcGVjdGlvbiB0b29scyBiZWluZyBydW4gd2l0aAorIyBob3N0J3MgcHl0aG9uIDMgKHRoZXkgbmVlZCB0byBiZSBydW4gd2l0aCBuYXRpdmUgcHl0aG9uIDMpCisjCisjIFRoaXMgYWxzbyBzZXRzIHVwIGF1dG9jb25mLWJhc2VkIHJlY2lwZXMgdG8gYnVpbGQgaW50cm9zcGVjdGlvbiBkYXRhIChvciBub3QpLAogIyBkZXBlbmRpbmcgb24gZGlzdHJvIGFuZCBtYWNoaW5lIGZlYXR1cmVzIChzZWUgZ29iamVjdC1pbnRyb3NwZWN0aW9uLWRhdGEgY2xhc3MpLgotaW5oZXJpdCBnb2JqZWN0LWludHJvc3BlY3Rpb24tZGF0YQotRVhUUkFfT0VDT05GX3ByZXBlbmQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0dJX0RBVEFfRU5BQkxFRCcsICdUcnVlJywgJy0tZW5hYmxlLWludHJvc3BlY3Rpb24nLCAnLS1kaXNhYmxlLWludHJvc3BlY3Rpb24nLCBkKX0gIgoraW5oZXJpdCBweXRob24zbmF0aXZlIGdvYmplY3QtaW50cm9zcGVjdGlvbi1kYXRhCitFWFRSQV9PRUNPTkZfcHJlcGVuZF9jbGFzcy10YXJnZXQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0dJX0RBVEFfRU5BQkxFRCcsICdUcnVlJywgJy0tZW5hYmxlLWludHJvc3BlY3Rpb24nLCAnLS1kaXNhYmxlLWludHJvc3BlY3Rpb24nLCBkKX0gIgorCisjIFdoZW4gYnVpbGRpbmcgbmF0aXZlIHJlY2lwZXMsIGRpc2FibGUgaW50cm9zcGVjdGlvbiwgYXMgaXQgaXMgbm90IG5lY2Vzc2FyeSwKKyMgcHVsbHMgaW4gYWRkaXRpb25hbCBkZXBlbmRlbmNpZXMsIGFuZCBtYWtlcyBidWlsZCB0aW1lcyBsb25nZXIKK0VYVFJBX09FQ09ORl9wcmVwZW5kX2NsYXNzLW5hdGl2ZSA9ICItLWRpc2FibGUtaW50cm9zcGVjdGlvbiAiCitFWFRSQV9PRUNPTkZfcHJlcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiLS1kaXNhYmxlLWludHJvc3BlY3Rpb24gIgogCiBVTktOT1dOX0NPTkZJR1VSRV9XSElURUxJU1RfYXBwZW5kID0gIiAtLWVuYWJsZS1pbnRyb3NwZWN0aW9uIC0tZGlzYWJsZS1pbnRyb3NwZWN0aW9uIgogCiAjIEdlbmVyYXRpbmcgaW50cm9zcGVjdGlvbiBkYXRhIGRlcGVuZHMgb24gYSBjb21iaW5hdGlvbiBvZiBuYXRpdmUgYW5kIHRhcmdldAogIyBpbnRyb3NwZWN0aW9uIHRvb2xzLCBhbmQgcWVtdSB0byBydW4gdGhlIHRhcmdldCB0b29scy4KLURFUEVORFNfYXBwZW5kID0gIiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ29iamVjdC1pbnRyb3NwZWN0aW9uLW5hdGl2ZSBxZW11LW5hdGl2ZSIKK0RFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGdvYmplY3QtaW50cm9zcGVjdGlvbi1uYXRpdmUgcWVtdS1uYXRpdmUiCiAKLSMgVGhpcyBpcyBuZWNlc3NhcnkgZm9yIHB5dGhvbiBzY3JpcHRzIHRvIHN1Y2NlZWQgLSBkaXN0dXRpbHMgZmFpbHMgaWYgdGhlc2UKLSMgYXJlIG5vdCBzZXQKLWV4cG9ydCBCVUlMRF9TWVMKLWV4cG9ydCBIT1NUX1NZUwotZXhwb3J0IFNUQUdJTkdfSU5DRElSCi1leHBvcnQgU1RBR0lOR19MSUJESVIKKyMgRXZlbiB0aG91Z2ggaW50cm9zcGVjdGlvbiBpcyBkaXNhYmxlZCBvbiAtbmF0aXZlLCBnb2JqZWN0LWludHJvc3BlY3Rpb24gcGFja2FnZSBpcyBzdGlsbAorIyBuZWVkZWQgZm9yIG00IG1hY3Jvcy4KK0RFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLW5hdGl2ZSIKK0RFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLW5hdGl2ZSIKIAogIyBUaGlzIGlzIHVzZWQgYnkgaW50cm9zcGVjdGlvbiB0b29scyB0byBmaW5kIC5naXIgaW5jbHVkZXMKIGV4cG9ydCBYREdfREFUQV9ESVJTID0gIiR7U1RBR0lOR19EQVRBRElSfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ3J1Yi1lZmkuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ3J1Yi1lZmkuYmJjbGFzcwppbmRleCA0Y2UzZDI4Li4xNzQxN2JhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dydWItZWZpLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ncnViLWVmaS5iYmNsYXNzCkBAIC00NSw2ICs0NSw4IEBACiAJCUdSVUJfSU1BR0U9ImJvb3R4NjQuZWZpIgogCWZpCiAJaW5zdGFsbCAtbSAwNjQ0ICR7REVQTE9ZX0RJUl9JTUFHRX0vJHtHUlVCX0lNQUdFfSAke0RFU1R9JHtFRklESVJ9CisJRUZJUEFUSD0kKGVjaG8gIiR7RUZJRElSfSIgfCBzZWQgJ3MvXC8vXFwvZycpCisJcHJpbnRmICdmczA6JXNcJXNcbicgIiRFRklQQVRIIiAiJEdSVUJfSU1BR0UiID4ke0RFU1R9L3N0YXJ0dXAubnNoCiAKIAlpbnN0YWxsIC1tIDA2NDQgJHtHUlVCX0NGR30gJHtERVNUfSR7RUZJRElSfS9ncnViLmNmZwogfQpAQCAtNTcsNyArNTksNyBAQAogCWNwICRpc29fZGlyLyR7RUZJRElSfS8qICR7RUZJSU1HRElSfSR7RUZJRElSfQogCWNwICRpc29fZGlyL3ZtbGludXogJHtFRklJTUdESVJ9CiAJRUZJUEFUSD0kKGVjaG8gIiR7RUZJRElSfSIgfCBzZWQgJ3MvXC8vXFwvZycpCi0JZWNobyAiZnMwOiR7RUZJUEFUSH1cXCR7R1JVQl9JTUFHRX0iID4gJHtFRklJTUdESVJ9L3N0YXJ0dXAubnNoCisJcHJpbnRmICdmczA6JXNcJXNcbicgIiRFRklQQVRIIiAiJEdSVUJfSU1BR0UiID4gJHtFRklJTUdESVJ9L3N0YXJ0dXAubnNoCiAJaWYgWyAtZiAiJGlzb19kaXIvaW5pdHJkIiBdIDsgdGhlbgogCQljcCAkaXNvX2Rpci9pbml0cmQgJHtFRklJTUdESVJ9CiAJZmkKQEAgLTg4LDEyICs5MCwxMiBAQAogCiAgICAgY2ZpbGUgPSBkLmdldFZhcignR1JVQl9DRkcnLCBUcnVlKQogICAgIGlmIG5vdCBjZmlsZToKLSAgICAgICAgcmFpc2UgYmIuYnVpbGQuRnVuY0ZhaWxlZCgnVW5hYmxlIHRvIHJlYWQgR1JVQl9DRkcnKQorICAgICAgICBiYi5mYXRhbCgnVW5hYmxlIHRvIHJlYWQgR1JVQl9DRkcnKQogCiAgICAgdHJ5OgotICAgICAgICAgY2ZnZmlsZSA9IGZpbGUoY2ZpbGUsICd3JykKKyAgICAgICAgIGNmZ2ZpbGUgPSBvcGVuKGNmaWxlLCAndycpCiAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgIHJhaXNlIGJiLmJ1aWxkLmZ1bmNGYWlsZWQoJ1VuYWJsZSB0byBvcGVuICVzJyAlIChjZmlsZSkpCisgICAgICAgIGJiLmZhdGFsKCdVbmFibGUgdG8gb3BlbiAlcycgJSBjZmlsZSkKIAogICAgIGNmZ2ZpbGUud3JpdGUoJyMgQXV0b21hdGljYWxseSBjcmVhdGVkIGJ5IE9FXG4nKQogCkBAIC0xMTIsNyArMTE0LDcgQEAKIAogICAgIHJvb3QgPSBkLmdldFZhcignR1JVQl9ST09UJywgVHJ1ZSkKICAgICBpZiBub3Qgcm9vdDoKLSAgICAgICAgcmFpc2UgYmIuYnVpbGQuRnVuY0ZhaWxlZCgnR1JVQl9ST09UIG5vdCBkZWZpbmVkJykKKyAgICAgICAgYmIuZmF0YWwoJ0dSVUJfUk9PVCBub3QgZGVmaW5lZCcpCiAKICAgICBpZiBnZnhzZXJpYWwgPT0gIjEiOgogICAgICAgICBidHlwZXMgPSBbIFsgIiBncmFwaGljcyBjb25zb2xlIiwgIiIgXSwKQEAgLTEyNSw3ICsxMjcsNyBAQAogCiAgICAgICAgIG92ZXJyaWRlcyA9IGxvY2FsZGF0YS5nZXRWYXIoJ09WRVJSSURFUycsIFRydWUpCiAgICAgICAgIGlmIG5vdCBvdmVycmlkZXM6Ci0gICAgICAgICAgICByYWlzZSBiYi5idWlsZC5GdW5jRmFpbGVkKCdPVkVSUklERVMgbm90IGRlZmluZWQnKQorICAgICAgICAgICAgYmIuZmF0YWwoJ09WRVJSSURFUyBub3QgZGVmaW5lZCcpCiAKICAgICAgICAgZm9yIGJ0eXBlIGluIGJ0eXBlczoKICAgICAgICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoJ09WRVJSSURFUycsIGxhYmVsICsgJzonICsgb3ZlcnJpZGVzKQpAQCAtMTQ0LDcgKzE0Niw4IEBACiAKICAgICAgICAgICAgIGlmIGFwcGVuZDoKICAgICAgICAgICAgICAgICBhcHBlbmQgPSByZXBsYWNlX3Jvb3Rmc191dWlkKGQsIGFwcGVuZCkKLSAgICAgICAgICAgICAgICBjZmdmaWxlLndyaXRlKCclcycgJSAoYXBwZW5kKSkKKyAgICAgICAgICAgICAgICBjZmdmaWxlLndyaXRlKCcgJXMnICUgKGFwcGVuZCkpCisKICAgICAgICAgICAgIGNmZ2ZpbGUud3JpdGUoJyAlcycgJSBidHlwZVsxXSkKICAgICAgICAgICAgIGNmZ2ZpbGUud3JpdGUoJ1xuJykKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ndGstZG9jLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2d0ay1kb2MuYmJjbGFzcwppbmRleCBlMzJmOThkLi4yOTdlYWM2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2d0ay1kb2MuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2d0ay1kb2MuYmJjbGFzcwpAQCAtMSwyNSArMSw2OSBAQAotIyBIZWxwZXIgY2xhc3MgdG8gcHVsbCBpbiB0aGUgcmlnaHQgZ3RrLWRvYyBkZXBlbmRlbmNpZXMgYW5kIGRpc2FibGUKLSMgZ3RrLWRvYy4KKyMgSGVscGVyIGNsYXNzIHRvIHB1bGwgaW4gdGhlIHJpZ2h0IGd0ay1kb2MgZGVwZW5kZW5jaWVzIGFuZCBjb25maWd1cmUKKyMgZ3RrLWRvYyB0byBlbmFibGUgb3IgZGlzYWJsZSBkb2N1bWVudGF0aW9uIGJ1aWxkaW5nICh3aGljaCByZXF1cmllcyB0aGUKKyMgdXNlIG9mIHVzZXJtb2RlIHFlbXUpLgorCisjIFRoaXMgdmFyaWFibGUgaXMgc2V0IHRvIFRydWUgaWYgYXBpLWRvY3VtZW50YXRpb24gaXMgaW4KKyMgRElTVFJPX0ZFQVRVUkVTIGFuZCBxZW11LXVzZXJtb2RlIGlzIGluIE1BQ0hJTkVfRkVBVFVSRVMsIGFuZCBGYWxzZSBvdGhlcndpc2UuCiAjCi0jIExvbmctdGVybSBpdCB3b3VsZCBiZSBncmVhdCBpZiB0aGlzIGNsYXNzIGNvdWxkIGJlIHRvZ2dsZWQgYmV0d2VlbgotIyBndGstZG9jLXN0dWItbmF0aXZlIGFuZCB0aGUgcmVhbCBndGstZG9jLW5hdGl2ZSwgd2hpY2ggd291bGQgZW5hYmxlCi0jIHJlLWdlbmVyYXRpb24gb2YgZG9jdW1lbnRhdGlvbi4gIEZvciBub3csIHdlJ2xsIG1ha2UgZG8gd2l0aCB0aGlzIHdoaWNoCi0jIHBhY2thZ2VzIHVwIGFueSBleGlzdGluZyBkb2N1bWVudGF0aW9uIChzbyBmcm9tIHRhcmJhbGwgYnVpbGRzKS4KKyMgSXQgc2hvdWxkIGJlIHVzZWQgaW4gcmVjaXBlcyB0byBkZXRlcm1pbmUgd2hldGhlciBndGstZG9jIGJhc2VkIGRvY3VtZW50YXRpb24gc2hvdWxkIGJlIGJ1aWx0LAorIyBzbyB0aGF0IHFlbXUgdXNlIGNhbiBiZSBhdm9pZGVkIHdoZW4gbmVjZXNzYXJ5LgorR1RLRE9DX0VOQUJMRUQgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYXBpLWRvY3VtZW50YXRpb24nLCBcCisgICAgICAgICAgICAgICAgICAgICAgYmIudXRpbHMuY29udGFpbnMoJ01BQ0hJTkVfRkVBVFVSRVMnLCAncWVtdS11c2VybW9kZScsICdUcnVlJywgJ0ZhbHNlJywgZCksICdGYWxzZScsIGQpfSIKKworRVhUUkFfT0VDT05GX3ByZXBlbmRfY2xhc3MtdGFyZ2V0ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHVEtET0NfRU5BQkxFRCcsICdUcnVlJywgJy0tZW5hYmxlLWd0ay1kb2MgLS1lbmFibGUtZ3RrLWRvYy1odG1sIC0tZGlzYWJsZS1ndGstZG9jLXBkZicsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWRpc2FibGUtZ3RrLWRvYycsIGQpfSAiCisKKyMgV2hlbiBidWlsZGluZyBuYXRpdmUgcmVjaXBlcywgZGlzYWJsZSBndGtkb2MsIGFzIGl0IGlzIG5vdCBuZWNlc3NhcnksCisjIHB1bGxzIGluIGFkZGl0aW9uYWwgZGVwZW5kZW5jaWVzLCBhbmQgbWFrZXMgYnVpbGQgdGltZXMgbG9uZ2VyCitFWFRSQV9PRUNPTkZfcHJlcGVuZF9jbGFzcy1uYXRpdmUgPSAiLS1kaXNhYmxlLWd0ay1kb2MgIgorRVhUUkFfT0VDT05GX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIi0tZGlzYWJsZS1ndGstZG9jICIKKworREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBndGstZG9jLW5hdGl2ZSBxZW11LW5hdGl2ZSIKKworIyBFdmVuIHRob3VnaCBndGtkb2MgaXMgZGlzYWJsZWQgb24gLW5hdGl2ZSwgZ3RrLWRvYyBwYWNrYWdlIGlzIHN0aWxsCisjIG5lZWRlZCBmb3IgbTQgbWFjcm9zLgorREVQRU5EU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBndGstZG9jLW5hdGl2ZSIKK0RFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgZ3RrLWRvYy1uYXRpdmUiCiAKICMgVGhlIGRvY3VtZW50YXRpb24gZGlyZWN0b3J5LCB3aGVyZSB0aGUgaW5mcmFzdHJ1Y3R1cmUgd2lsbCBiZSBjb3BpZWQuCiAjIGd0a2RvY2l6ZSBoYXMgYSBkZWZhdWx0IG9mICIuIiBzbyB0byBoYW5kbGUgb3V0LW9mLXRyZWUgYnVpbGRzIHNldCB0aGlzIHRvICRTLgogR1RLRE9DX0RPQ0RJUiA/PSAiJHtTfSIKIAotREVQRU5EU19hcHBlbmQgPSAiIGd0ay1kb2Mtc3R1Yi1uYXRpdmUiCi0KLUVYVFJBX09FQ09ORl9hcHBlbmQgPSAiXAotICAtLWRpc2FibGUtZ3RrLWRvYyBcCi0gIC0tZGlzYWJsZS1ndGstZG9jLWh0bWwgXAotICAtLWRpc2FibGUtZ3RrLWRvYy1wZGYgXAotIgotCiBkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0JKCBjZCAke1N9OyBndGtkb2NpemUgLS1kb2NkaXIgJHtHVEtET0NfRE9DRElSfSApCisJKCBjZCAke1N9OyBndGtkb2NpemUgLS1kb2NkaXIgJHtHVEtET0NfRE9DRElSfSB8fCB0cnVlICkKIH0KIAoraW5oZXJpdCBxZW11CisKK2V4cG9ydCBTVEFHSU5HX0RJUl9IT1NUCisKK2RvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy10YXJnZXQgKCkgeworCisgICAgICAgICMgV3JpdGUgb3V0IGEgcWVtdSB3cmFwcGVyIHRoYXQgd2lsbCBiZSBnaXZlbiB0byBndGtkb2Mtc2NhbmdvYmogc28gdGhhdCBpdAorICAgICAgICAjIGNhbiBydW4gdGFyZ2V0IGhlbHBlciBiaW5hcmllcyB0aHJvdWdoIHRoYXQuCisgICAgICAgIHFlbXVfYmluYXJ5PSIke0BxZW11X3dyYXBwZXJfY21kbGluZShkLCAnJFNUQUdJTkdfRElSX0hPU1QnLCBbJ1wkR0lSX0VYVFJBX0xJQlNfUEFUSCcsJyRTVEFHSU5HX0RJUl9IT1NULyR7bGliZGlyfScsJyRTVEFHSU5HX0RJUl9IT1NULyR7YmFzZV9saWJkaXJ9J10pfSIKKyAgICAgICAgY2F0ID4gJHtCfS9ndGtkb2MtcWVtdXdyYXBwZXIgPDwgRU9GCisjIS9iaW4vc2gKKyMgVXNlIGEgbW9kdWxlcyBkaXJlY3Rvcnkgd2hpY2ggZG9lc24ndCBleGlzdCBzbyB3ZSBkb24ndCBsb2FkIHJhbmRvbSB0aGluZ3MKKyMgd2hpY2ggbWF5IHRoZW4gZ2V0IGRlbGV0ZWQgKG9yIHRoZWlyIGRlcGVuZGVuY2llcykgYW5kIHBvdGVudGlhbGx5IHNlZ2ZhdWx0CitleHBvcnQgR0lPX01PRFVMRV9ESVI9JHtTVEFHSU5HX0xJQkRJUn0vZ2lvL21vZHVsZXMtZHVtbXkKKworR0lSX0VYVFJBX0xJQlNfUEFUSD1cYGZpbmQgJHtCfSAtbmFtZSAubGlic3wgdHIgJ1xuJyAnOidcYFwkR0lSX0VYVFJBX0xJQlNfUEFUSAorCitpZiB0ZXN0IC1kICIubGlicyI7IHRoZW4KKyAgICAkcWVtdV9iaW5hcnkgIi5saWJzL1wkQCIKK2Vsc2UKKyAgICAkcWVtdV9iaW5hcnkgIlwkQCIKK2ZpCisKK2lmIFsgXCQ/IC1uZSAwIF07IHRoZW4KKyAgICBlY2hvICJJZiB0aGUgYWJvdmUgZXJyb3IgbWVzc2FnZSBpcyBhYm91dCBtaXNzaW5nIC5zbyBsaWJyYXJpZXMsIHRoZW4gc2V0dGluZyB1cCBHSVJfRVhUUkFfTElCU19QQVRIIGluIHRoZSByZWNpcGUgc2hvdWxkIGhlbHAuIgorICAgIGVjaG8gIih0eXBpY2FsbHkgbGlrZSB0aGlzOiBHSVJfRVhUUkFfTElCU19QQVRIPVwiJCIie0J9L3NvbWV0aGluZy8ubGlic1wiICkiCisgICAgZXhpdCAxCitmaQorRU9GCisgICAgICAgIGNobW9kICt4ICR7Qn0vZ3RrZG9jLXFlbXV3cmFwcGVyCit9CisKKwogaW5oZXJpdCBwa2djb25maWcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ3RrLWltbW9kdWxlcy1jYWNoZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ndGstaW1tb2R1bGVzLWNhY2hlLmJiY2xhc3MKaW5kZXggYzA5OWNkMy4uZWJiYzlkZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ndGstaW1tb2R1bGVzLWNhY2hlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ndGstaW1tb2R1bGVzLWNhY2hlLmJiY2xhc3MKQEAgLTE1LDcgKzE1LDggQEAKICAgICAgICAgICAgICR7QHFlbXVfcnVuX2JpbmFyeShkLCAnJEQnLCAnJHtiaW5kaXJ9L2d0ay1xdWVyeS1pbW1vZHVsZXMtMi4wJyl9IFwKICAgICAgICAgICAgICAgICAkSU1GSUxFUyA+ICREJHtsaWJkaXJ9L2d0ay0yLjAvMi4xMC4wL2ltbW9kdWxlcy5jYWNoZSAyPi9kZXYvbnVsbCAmJgogICAgICAgICAgICAgICAgIHNlZCAtaSAtZSAiczokRDo6IiAkRCR7bGliZGlyfS9ndGstMi4wLzIuMTAuMC9pbW1vZHVsZXMuY2FjaGUKLSAgICAgICAgZWxpZiBbIC14ICREJHtiaW5kaXJ9L2d0ay1xdWVyeS1pbW1vZHVsZXMtMy4wIF07IHRoZW4KKyAgICAgICAgZmkKKyAgICAgICAgaWYgWyAteCAkRCR7YmluZGlyfS9ndGstcXVlcnktaW1tb2R1bGVzLTMuMCBdOyB0aGVuCiAgICAgICAgICAgICBJTUZJTEVTPSQobHMgJEQke2xpYmRpcn0vZ3RrLTMuMC8qL2ltbW9kdWxlcy8qLnNvKQogICAgICAgICAgICAgJHtAcWVtdV9ydW5fYmluYXJ5KGQsICckRCcsICcke2JpbmRpcn0vZ3RrLXF1ZXJ5LWltbW9kdWxlcy0zLjAnKX0gXAogICAgICAgICAgICAgICAgICRJTUZJTEVTID4gJEQke2xpYmRpcn0vZ3RrLTMuMC8zLjAuMC9pbW1vZHVsZXMuY2FjaGUgMj4vZGV2L251bGwgJiYKQEAgLTQwLDcgKzQxLDggQEAKICAgICAgICAgICAgICR7QHFlbXVfcnVuX2JpbmFyeShkLCAnJEQnLCAnJHtiaW5kaXJ9L2d0ay1xdWVyeS1pbW1vZHVsZXMtMi4wJyl9IFwKICAgICAgICAgICAgICAgICAkSU1GSUxFUyA+ICREJHtsaWJkaXJ9L2d0ay0yLjAvMi4xMC4wL2ltbW9kdWxlcy5jYWNoZSAyPi9kZXYvbnVsbCAmJgogICAgICAgICAgICAgICAgIHNlZCAtaSAtZSAiczokRDo6IiAkRCR7bGliZGlyfS9ndGstMi4wLzIuMTAuMC9pbW1vZHVsZXMuY2FjaGUKLSAgICAgICAgZWxpZiBbIC14ICREJHtiaW5kaXJ9L2d0ay1xdWVyeS1pbW1vZHVsZXMtMy4wIF07IHRoZW4KKyAgICAgICAgZmkKKyAgICAgICAgaWYgWyAteCAkRCR7YmluZGlyfS9ndGstcXVlcnktaW1tb2R1bGVzLTMuMCBdOyB0aGVuCiAgICAgICAgICAgICBJTUZJTEVTPSQobHMgJEQke2xpYmRpcn0vZ3RrLTMuMC8qL2ltbW9kdWxlcy8qLnNvKQogICAgICAgICAgICAgJHtAcWVtdV9ydW5fYmluYXJ5KGQsICckRCcsICcke2JpbmRpcn0vZ3RrLXF1ZXJ5LWltbW9kdWxlcy0zLjAnKX0gXAogICAgICAgICAgICAgICAgICRJTUZJTEVTID4gJEQke2xpYmRpcn0vZ3RrLTMuMC8zLjAuMC9pbW1vZHVsZXMuY2FjaGUgMj4vZGV2L251bGwgJiYKQEAgLTgyLDYgKzg0LDYgQEAKICAgICAgICAgZ3RraW1tb2R1bGVzX2NoZWNrID0gZC5nZXRWYXIoJ0dUS0lNTU9EVUxFU19QQUNLQUdFUycsIEZhbHNlKQogICAgICAgICBpZiBub3QgZ3RraW1tb2R1bGVzX2NoZWNrOgogICAgICAgICAgICAgYmJfZmlsZW5hbWUgPSBkLmdldFZhcignRklMRScsIEZhbHNlKQotICAgICAgICAgICAgcmFpc2UgYmIuYnVpbGQuRnVuY0ZhaWxlZCgiRVJST1I6ICVzIGluaGVyaXRzIGd0ay1pbW1vZHVsZXMtY2FjaGUgYnV0IGRvZXNuJ3Qgc2V0IEdUS0lNTU9EVUxFU19QQUNLQUdFUyIgJSBiYl9maWxlbmFtZSkKKyAgICAgICAgICAgIGJiLmZhdGFsKCJFUlJPUjogJXMgaW5oZXJpdHMgZ3RrLWltbW9kdWxlcy1jYWNoZSBidXQgZG9lc24ndCBzZXQgR1RLSU1NT0RVTEVTX1BBQ0tBR0VTIiAlIGJiX2ZpbGVuYW1lKQogfQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2d1bW1pYm9vdC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ndW1taWJvb3QuYmJjbGFzcwppbmRleCAxZWJiOTQ2Li40ZjJkZWE2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2d1bW1pYm9vdC5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ3VtbWlib290LmJiY2xhc3MKQEAgLTM0LDYgKzM0LDggQEAKICAgICAgICAgaW5zdGFsbCAtZCAke0RFU1R9L2xvYWRlcgogICAgICAgICBpbnN0YWxsIC1kICR7REVTVH0vbG9hZGVyL2VudHJpZXMKICAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7REVQTE9ZX0RJUl9JTUFHRX0vJHtFRklfSU1BR0V9ICR7REVTVH0ke0VGSURJUn0vJHtERVNUX0VGSV9JTUFHRX0KKyAgICAgICAgRUZJUEFUSD0kKGVjaG8gIiR7RUZJRElSfSIgfCBzZWQgJ3MvXC8vXFwvZycpCisgICAgICAgIHByaW50ZiAnZnMwOiVzXCVzXG4nICIkRUZJUEFUSCIgIiRERVNUX0VGSV9JTUFHRSIgPiR7REVTVH0vc3RhcnR1cC5uc2gKICAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7R1VNTUlCT09UX0NGR30gJHtERVNUfS9sb2FkZXIvbG9hZGVyLmNvbmYKICAgICAgICAgZm9yIGkgaW4gJHtHVU1NSUJPT1RfRU5UUklFU307IGRvCiAgICAgICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtpfSAke0RFU1R9L2xvYWRlci9lbnRyaWVzCkBAIC03Miw3ICs3NCw3IEBACiAgICAgdHJ5OgogICAgICAgICAgY2ZnZmlsZSA9IG9wZW4oY2ZpbGUsICd3JykKICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgcmFpc2UgYmIuYnVpbGQuZnVuY0ZhaWxlZCgnVW5hYmxlIHRvIG9wZW4gJXMnICUgKGNmaWxlKSkKKyAgICAgICAgYmIuZmF0YWwoJ1VuYWJsZSB0byBvcGVuICVzJyAlIGNmaWxlKQogCiAgICAgY2ZnZmlsZS53cml0ZSgnIyBBdXRvbWF0aWNhbGx5IGNyZWF0ZWQgYnkgT0VcbicpCiAgICAgY2ZnZmlsZS53cml0ZSgnZGVmYXVsdCAlc1xuJyAlIChsYWJlbHMuc3BsaXQoKVswXSkpCkBAIC04OCwxNCArOTAsMTQgQEAKIAogICAgICAgICBvdmVycmlkZXMgPSBsb2NhbGRhdGEuZ2V0VmFyKCdPVkVSUklERVMnLCBUcnVlKQogICAgICAgICBpZiBub3Qgb3ZlcnJpZGVzOgotICAgICAgICAgICAgcmFpc2UgYmIuYnVpbGQuRnVuY0ZhaWxlZCgnT1ZFUlJJREVTIG5vdCBkZWZpbmVkJykKKyAgICAgICAgICAgIGJiLmZhdGFsKCdPVkVSUklERVMgbm90IGRlZmluZWQnKQogCiAgICAgICAgIGVudHJ5ZmlsZSA9ICIlcy8lcy5jb25mIiAlIChzLCBsYWJlbCkKICAgICAgICAgZC5hcHBlbmRWYXIoIkdVTU1JQk9PVF9FTlRSSUVTIiwgIiAiICsgZW50cnlmaWxlKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBlbnRyeWNmZyA9IG9wZW4oZW50cnlmaWxlLCAidyIpCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgcmFpc2UgYmIuYnVpbGQuZnVuY0ZhaWxlZCgnVW5hYmxlIHRvIG9wZW4gJXMnICUgKGVudHJ5ZmlsZSkpCisgICAgICAgICAgICBiYi5mYXRhbCgnVW5hYmxlIHRvIG9wZW4gJXMnICUgZW50cnlmaWxlKQogICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCdPVkVSUklERVMnLCBsYWJlbCArICc6JyArIG92ZXJyaWRlcykKICAgICAgICAgYmIuZGF0YS51cGRhdGVfZGF0YShsb2NhbGRhdGEpCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaWNlY2MuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaWNlY2MuYmJjbGFzcwppbmRleCBlMWMwNmM0Li5hODM3ODk0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ljZWNjLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pY2VjYy5iYmNsYXNzCkBAIC00Nyw3ICs0Nyw4IEBACiAKICAgICAjIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uIGJ5IHRoZSBzaGVsbCBpZiBuZWNlc3NhcnkKICAgICBpZiAnYCcgaW4ga2VybmVsX2NjIG9yICckKCcgaW4ga2VybmVsX2NjOgotICAgICAgICBrZXJuZWxfY2MgPSBvcy5wb3BlbigiZWNobyAlcyIgJSBrZXJuZWxfY2MpLnJlYWQoKVs6LTFdCisgICAgICAgIGltcG9ydCBzdWJwcm9jZXNzCisgICAgICAgIGtlcm5lbF9jYyA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCJlY2hvICVzIiAlIGtlcm5lbF9jYywgc2hlbGw9VHJ1ZSkuZGVjb2RlKCJ1dGYtOCIpWzotMV0KIAogICAgIGtlcm5lbF9jYyA9IGQuZXhwYW5kKGtlcm5lbF9jYykKICAgICBrZXJuZWxfY2MgPSBrZXJuZWxfY2MucmVwbGFjZSgnY2NhY2hlJywgJycpLnN0cmlwKCkKQEAgLTIyMCw5ICsyMjEsMTQgQEAKICAgICAjIFBBVEggb3IgaWNlY2MtY3JlYXRlLWVudiBzY3JpcHQgd2lsbCBzaWxlbnRseSBjcmVhdGUgYW4gaW52YWxpZAogICAgICMgY29tcGlsZXIgZW52aXJvbm1lbnQgcGFja2FnZS4KICAgICB0ID0gaWNlY2NfZ2V0X3Rvb2woYmIsIGQsIHRvb2wpCi0gICAgaWYgdCBhbmQgb3MucG9wZW4oInJlYWRsaW5rIC1mICVzIiAlIHQpLnJlYWQoKVs6LTFdID09IGdldF9pY2VjYyhkKToKLSAgICAgICAgYmIuZXJyb3IoIiVzIGlzIGEgc3ltbGluayB0byAlcyBpbiBQQVRIIGFuZCB0aGlzIHByZXZlbnRzIGljZWNjIGZyb20gd29ya2luZyIgJSAodCwgZ2V0X2ljZWNjKGQpKSkKLSAgICAgICAgcmV0dXJuICIiCisgICAgaWYgdDoKKyAgICAgICAgaW1wb3J0IHN1YnByb2Nlc3MKKyAgICAgICAgbGlua19wYXRoID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoInJlYWRsaW5rIC1mICVzIiAlIHQsIHNoZWxsPVRydWUpLmRlY29kZSgidXRmLTgiKVs6LTFdCisgICAgICAgIGlmIGxpbmtfcGF0aCA9PSBnZXRfaWNlY2MoZCk6CisgICAgICAgICAgICBiYi5lcnJvcigiJXMgaXMgYSBzeW1saW5rIHRvICVzIGluIFBBVEggYW5kIHRoaXMgcHJldmVudHMgaWNlY2MgZnJvbSB3b3JraW5nIiAlICh0LCBnZXRfaWNlY2MoZCkpKQorICAgICAgICAgICAgcmV0dXJuICIiCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gdAogICAgIGVsc2U6CiAgICAgICAgIHJldHVybiB0CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UtYnVpbGRpbmZvLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlLWJ1aWxkaW5mby5iYmNsYXNzCmluZGV4IDE5N2IyNDIuLjMwMDNmNWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UtYnVpbGRpbmZvLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1idWlsZGluZm8uYmJjbGFzcwpAQCAtMzIsNyArMzIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGVsbD1UcnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCiAgICAgICAgIHJldHVybiAiIgotICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciwgZXg6CisgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGV4OgogICAgICAgICAjIFNpbGVudGx5IHRyZWF0IGVycm9ycyBhcyAibW9kaWZpZWQiLCB3aXRob3V0IGNoZWNraW5nIGZvciB0aGUKICAgICAgICAgIyAoZXhwZWN0ZWQpIHJldHVybiBjb2RlIDEgaW4gYSBtb2RpZmllZCBnaXQgcmVwby4gRm9yIGV4YW1wbGUsIHdlIGdldAogICAgICAgICAjIG91dHB1dCBhbmQgYSAxMjkgcmV0dXJuIGNvZGUgd2hlbiBhIGxheWVyIGlzbid0IGEgZ2l0IHJlcG8gYXQgYWxsLgpAQCAtNzEsNyArNzEsOSBAQAogTGF5ZXIgUmV2aXNpb25zOiAgICAgIHwKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAnJycsCi0gICAgICAgICAgICBnZXRfbGF5ZXJfcmV2cyhkKQorICAgICAgICAgICAgZ2V0X2xheWVyX3JldnMoZCksCisgICAgICAgICAgICAnJycKKycnJwogICAgICAgICkpCiB9CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UtbGl2ZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1saXZlLmJiY2xhc3MKaW5kZXggYzhhODYxMC4uNGE2MzRkYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1saXZlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1saXZlLmJiY2xhc3MKQEAgLTQzLDcgKzQzLDcgQEAKIElOSVRSRF9JTUFHRV9MSVZFID89ICJjb3JlLWltYWdlLW1pbmltYWwtaW5pdHJhbWZzIgogSU5JVFJEX0xJVkUgPz0gIiR7REVQTE9ZX0RJUl9JTUFHRX0vJHtJTklUUkRfSU1BR0VfTElWRX0tJHtNQUNISU5FfS5jcGlvLmd6IgogCi1ST09URlMgPz0gIiR7REVQTE9ZX0RJUl9JTUFHRX0vJHtJTUFHRV9MSU5LX05BTUV9LmV4dDQiCitST09URlMgPz0gIiR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX0xJTktfTkFNRX0uZXh0NCIKIAogSU1BR0VfVFlQRURFUF9saXZlID0gImV4dDQiCiBJTUFHRV9UWVBFREVQX2lzbyA9ICJleHQ0IgpAQCAtNTYsNyArNTYsNyBAQAogICAgIGlmIGltYWdlX2IgPT0gaW5pdHJkX2k6CiAgICAgICAgIGJiLmVycm9yKCdJTklUUkRfSU1BR0VfTElWRSAlcyBjYW5ub3QgdXNlIGltYWdlIGxpdmUsIGhkZGltZyBvciBpc28uJyAlIGluaXRyZF9pKQogICAgICAgICBiYi5mYXRhbCgnQ2hlY2sgSU1BR0VfRlNUWVBFUyBhbmQgSU5JVFJBTUZTX0ZTVFlQRVMgc2V0dGluZ3MuJykKLSAgICBlbHNlOgorICAgIGVsaWYgaW5pdHJkX2k6CiAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fYm9vdGltZycsICdkZXBlbmRzJywgJyAlczpkb19pbWFnZV9jb21wbGV0ZScgJSBpbml0cmRfaSkKIH0KIApAQCAtMTQ0LDE0ICsxNDQsMTQgQEAKIAlpZiBbICIke1BDQklPU30iID0gIjEiIF0gJiYgWyAiJHtFRkl9IiAhPSAiMSIgXSA7IHRoZW4KIAkJIyBQQ0JJT1Mgb25seSBtZWRpYQogCQlta2lzb2ZzIC1WICR7Qk9PVElNR19WT0xVTUVfSUR9IFwKLQkJICAgICAgICAtbyAke0RFUExPWV9ESVJfSU1BR0V9LyR7SU1BR0VfTkFNRX0uaXNvIFwKKwkJICAgICAgICAtbyAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfS5pc28gXAogCQkJLWIgJHtJU09fQk9PVElNR30gLWMgJHtJU09fQk9PVENBVH0gXAogCQkJJG1raXNvZnNfY29tcHJlc3Nfb3B0cyBcCiAJCQkke01LSVNPRlNfT1BUSU9OU30gJG1raXNvZnNfaXNvX2xldmVsICR7SVNPRElSfQogCWVsc2UKIAkJIyBFRkkgb25seSBPUiBFRkkrUENCSU9TCiAJCW1raXNvZnMgLUEgJHtCT09USU1HX1ZPTFVNRV9JRH0gLVYgJHtCT09USU1HX1ZPTFVNRV9JRH0gXAotCQkgICAgICAgIC1vICR7REVQTE9ZX0RJUl9JTUFHRX0vJHtJTUFHRV9OQU1FfS5pc28gXAorCQkgICAgICAgIC1vICR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9LmlzbyBcCiAJCQktYiAke0lTT19CT09USU1HfSAtYyAke0lTT19CT09UQ0FUfSBcCiAJCQkkbWtpc29mc19jb21wcmVzc19vcHRzICR7TUtJU09GU19PUFRJT05TfSAkbWtpc29mc19pc29fbGV2ZWwgXAogCQkJLWVsdG9yaXRvLWFsdC1ib290IC1lbHRvcml0by1wbGF0Zm9ybSBlZmkgXApAQCAtMTYwLDcgKzE2MCw3IEBACiAJCWlzb2h5YnJpZF9hcmdzPSItdSIKIAlmaQogCi0JaXNvaHlicmlkICRpc29oeWJyaWRfYXJncyAke0RFUExPWV9ESVJfSU1BR0V9LyR7SU1BR0VfTkFNRX0uaXNvCisJaXNvaHlicmlkICRpc29oeWJyaWRfYXJncyAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfS5pc28KIH0KIAogYnVpbGRfZmF0X2ltZygpIHsKQEAgLTIwMiwxMiArMjAyLDYgQEAKIAkjIERldGVybWluZSB0aGUgZmluYWwgc2l6ZSBpbiBibG9ja3MgYWNjb3VudGluZyBmb3Igc29tZSBwYWRkaW5nCiAJQkxPQ0tTPSQoZXhwciAkKGV4cHIgJFNFQ1RPUlMgLyAyKSArICR7Qk9PVElNR19FWFRSQV9TUEFDRX0pCiAKLQkjIEVuc3VyZSB0b3RhbCBzZWN0b3JzIGlzIGFuIGludGVncmFsIG51bWJlciBvZiBzZWN0b3JzIHBlcgotCSMgdHJhY2sgb3IgbWNvcHkgd2lsbCBjb21wbGFpbi4gU2VjdG9ycyBhcmUgNTEyIGJ5dGVzLCBhbmQgd2UKLQkjIGdlbmVyYXRlIGltYWdlcyB3aXRoIDMyIHNlY3RvcnMgcGVyIHRyYWNrLiBUaGlzIGNhbGN1bGF0aW9uIGlzCi0JIyBkb25lIGluIGJsb2NrcywgdGh1cyB0aGUgbW9kIGJ5IDE2IGluc3RlYWQgb2YgMzIuCi0JQkxPQ0tTPSQoZXhwciAkQkxPQ0tTICsgJChleHByIDE2IC0gJChleHByICRCTE9DS1MgJSAxNikpKQotCiAJIyBta2Rvc2ZzIHdpbGwgc29tZXRpbWVzIHVzZSBGQVQxNiB3aGVuIGl0IGlzIG5vdCBhcHByb3ByaWF0ZSwKIAkjIHJlc3VsdGluZyBpbiBhIGJvb3QgZmFpbHVyZSBmcm9tIFNZU0xJTlVYLiBVc2UgRkFUMzIgZm9yCiAJIyBpbWFnZXMgbGFyZ2VyIHRoYW4gNTEyTUIsIG90aGVyd2lzZSBsZXQgbWtkb3NmcyBkZWNpZGUuCkBAIC0yNTgsMTMgKzI1MiwxMyBAQAogCQkJZmkKIAkJZmkKIAotCQlidWlsZF9mYXRfaW1nICR7SERERElSfSAke0RFUExPWV9ESVJfSU1BR0V9LyR7SU1BR0VfTkFNRX0uaGRkaW1nCisJCWJ1aWxkX2ZhdF9pbWcgJHtIRERESVJ9ICR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9LmhkZGltZwogCiAJCWlmIFsgIiR7UENCSU9TfSIgPSAiMSIgXTsgdGhlbgogCQkJc3lzbGludXhfaGRkaW1nX2luc3RhbGwKIAkJZmkKIAotCQljaG1vZCA2NDQgJHtERVBMT1lfRElSX0lNQUdFfS8ke0lNQUdFX05BTUV9LmhkZGltZworCQljaG1vZCA2NDQgJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0uaGRkaW1nCiAJZmkKIH0KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1zd2FiLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlLXN3YWIuYmJjbGFzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmIwMmNhZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlLXN3YWIuYmJjbGFzcworKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLUhPU1RfREFUQSA/PSAiJHtUTVBESVJ9L2hvc3QtY29udGFtaW5hdGlvbi1kYXRhLyIKLVNXQUJCRVJfUkVQT1JUID89ICIke0xPR19ESVJ9L3N3YWJiZXIvIgotU1dBQkJFUl9MT0dTID89ICIke0xPR19ESVJ9L2NvbnRhbWluYXRpb24tbG9ncyIKLVRSQUNFX0xPR0RJUiA/PSAiJHtTV0FCQkVSX0xPR1N9LyR7UEFDS0FHRV9BUkNIfSIKLVRSQUNFX0xPR0ZJTEUgPSAiJHtUUkFDRV9MT0dESVJ9LyR7UE59LSR7UFZ9IgotCi1TV0FCX09SSUdfVEFTSyA6PSAiJHtCQl9ERUZBVUxUX1RBU0t9IgotQkJfREVGQVVMVF9UQVNLID0gImdlbmVyYXRlX3N3YWJiZXJfcmVwb3J0IgotCi0jIFNldmVyYWwgcmVjaXBlcyBkb24ndCBidWlsZCB3aXRoIHBhcmFsbGVsIG1ha2Ugd2hlbiBydW4gdW5kZXIgc3RyYWNlCi0jIElkZWFsbHkgdGhlc2Ugc2hvdWxkIGJlIGZpeGVkIGJ1dCBhcyBhIHRlbXBvcmFyeSBtZWFzdXJlIGRpc2FibGUgcGFyYWxsZWwKLSMgYnVpbGRzIGZvciB0cm91Ymxlc29tZSByZWNpcGVzCi1QQVJBTExFTF9NQUtFX3BuLW9wZW5zc2wgPSAiIgotUEFSQUxMRUxfTUFLRV9wbi1nbGliYyA9ICIiCi1QQVJBTExFTF9NQUtFX3BuLWdsaWItMi4wID0gIiIKLVBBUkFMTEVMX01BS0VfcG4tbGlieG1sMiA9ICIiCi1QQVJBTExFTF9NQUtFX3BuLXJlYWRsaW5lID0gIiIKLVBBUkFMTEVMX01BS0VfcG4tdXRpbC1saW51eCA9ICIiCi1QQVJBTExFTF9NQUtFX3BuLWJpbnV0aWxzID0gIiIKLVBBUkFMTEVMX01BS0VfcG4tYmlzb24gPSAiIgotUEFSQUxMRUxfTUFLRV9wbi1jbWFrZSA9ICIiCi1QQVJBTExFTF9NQUtFX3BuLWVsZnV0aWxzID0gIiIKLVBBUkFMTEVMX01BS0VfcG4tZ2NjID0gIiIKLVBBUkFMTEVMX01BS0VfcG4tZ2NjLXJ1bnRpbWUgPSAiIgotUEFSQUxMRUxfTUFLRV9wbi1tNCA9ICIiCi1QQVJBTExFTF9NQUtFX3BuLW9wa2cgPSAiIgotUEFSQUxMRUxfTUFLRV9wbi1wa2djb25maWcgPSAiIgotUEFSQUxMRUxfTUFLRV9wbi1wcmVsaW5rID0gIiIKLVBBUkFMTEVMX01BS0VfcG4tcnBtID0gIiIKLVBBUkFMTEVMX01BS0VfcG4tdGNsID0gIiIKLVBBUkFMTEVMX01BS0VfcG4tYmVlY3J5cHQgPSAiIgotUEFSQUxMRUxfTUFLRV9wbi1jdXJsID0gIiIKLVBBUkFMTEVMX01BS0VfcG4tZ21wID0gIiIKLVBBUkFMTEVMX01BS0VfcG4tbGlibXBjID0gIiIKLVBBUkFMTEVMX01BS0VfcG4tbGlieHNsdCA9ICIiCi1QQVJBTExFTF9NQUtFX3BuLWx6byA9ICIiCi1QQVJBTExFTF9NQUtFX3BuLXBvcHQgPSAiIgotUEFSQUxMRUxfTUFLRV9wbi1saW51eC13cnMgPSAiIgotUEFSQUxMRUxfTUFLRV9wbi1saWJnY3J5cHQgPSAiIgotUEFSQUxMRUxfTUFLRV9wbi1ncGdtZSA9ICIiCi1QQVJBTExFTF9NQUtFX3BuLXVkZXYgPSAiIgotUEFSQUxMRUxfTUFLRV9wbi1nbnV0bHMgPSAiIgotCi1weXRob24oKSB7Ci0gICAgIyBOT1RFOiBJdCBtaWdodCBiZSB1c2VmdWwgdG8gZGV0ZWN0IGhvc3QgaW5mZWN0aW9uIG9uIG5hdGl2ZSBhbmQgY3Jvc3MKLSAgICAjIHBhY2thZ2VzIGJ1dCBhcyBpdCB0dXJucyBvdXQgdG8gYmUgcHJldHR5IGhhcmQgdG8gZG8gdGhpcyBmb3IgYWxsIG5hdGl2ZQotICAgICMgYW5kIGNyb3NzIHBhY2thZ2VzIHdoaWNoIGFyZW4ndCBzd2FiYmVyLW5hdGl2ZSBvciBvbmUgb2YgaXRzIGRlcGVuZGVuY2llcwotICAgICMgSSBoYXZlIGlnbm9yZWQgdGhlbSBmb3Igbm93Li4uCi0gICAgaWYgbm90IGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ25hdGl2ZScsIGQpIGFuZCBub3QgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnbmF0aXZlc2RrJywgZCkgYW5kIG5vdCBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdjcm9zcycsIGQpOgotICAgICAgICBkZXBzID0gKGQuZ2V0VmFyRmxhZygnZG9fc2V0c2NlbmUnLCAnZGVwZW5kcycsIFRydWUpIG9yICIiKS5zcGxpdCgpCi0gICAgICAgIGRlcHMuYXBwZW5kKCdzdHJhY2UtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QnKQotICAgICAgICBkLnNldFZhckZsYWcoJ2RvX3NldHNjZW5lJywgJ2RlcGVuZHMnLCAiICIuam9pbihkZXBzKSkKLSAgICAgICAgbG9nZGlyID0gZC5leHBhbmQoIiR7VFJBQ0VfTE9HRElSfSIpCi0gICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihsb2dkaXIpCi0gICAgZWxzZToKLSAgICAgICAgZC5zZXRWYXIoJ1NUUkFDRUZVTkMnLCAnJykKLX0KLQotU1RSQUNFUElEID0gIiR7QG9zLmdldHBpZCgpfSIKLVNUUkFDRUZVTkMgPSAiaW1hZ2Vzd2FiX2F0dGFjaHN0cmFjZSIKLQotZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiJHtTVFJBQ0VGVU5DfSIKLWRvX2NvbXBpbGVbcHJlZnVuY3NdICs9ICIke1NUUkFDRUZVTkN9IgotCi1pbWFnZXN3YWJfYXR0YWNoc3RyYWNlICgpIHsKLQlTVFJBQ0U9YHdoaWNoIHN0cmFjZWAKLQotCWlmIFsgLXggIiRTVFJBQ0UiIF07IHRoZW4KLQkJc3dhYmJlci1zdHJhY2UtYXR0YWNoICIkU1RSQUNFIC1mIC1vICR7VFJBQ0VfTE9HRklMRX0tJHtCQl9DVVJSRU5UVEFTS30ubG9nIC1lIHRyYWNlPW9wZW4sZXhlY3ZlIC1wICR7U1RSQUNFUElEfSIgIiR7VFJBQ0VfTE9HRklMRX0tdHJhY2VhdHRhY2gtJHtCQl9DVVJSRU5UVEFTS30ubG9nIgotCWZpCi19Ci0KLWRvX2dlbmVyYXRlX3N3YWJiZXJfcmVwb3J0ICgpIHsKLQotCXVwZGF0ZV9kaXN0cm8gJHtIT1NUX0RBVEF9Ci0KLQkjIFN3YWJiZXIgY2FuJ3QgY3JlYXRlIHRoZSBkaXJlY3RvcnkgZm9yIHVzCi0JbWtkaXIgLXAgJHtTV0FCQkVSX1JFUE9SVH0KLQotCVJFUE9SVFNUQU1QPSR7U1dBQl9PUklHX1RBU0t9LWBkYXRlICslMm0lMmQlMkglMk0lWWAKLQotCWlmIFsgYHdoaWNoIGNjYWNoZWAgXSA7IHRoZW4KLQkJQ0NBQ0hFX0RJUj1gKCBjY2FjaGUgLXMgfCBncmVwICJjYWNoZSBkaXJlY3RvcnkiIHwgZ3JlcCAtbyAnW14gXSokJyAyPiAvZGV2L251bGwgKWAKLSAJZmkKLQotCWlmIFsgIiQobHMgLUEgJHtIT1NUX0RBVEF9KSIgXTsgdGhlbgotCQllY2hvICJHZW5lcmF0aW5nIHN3YWJiZXIgcmVwb3J0IgotCQlzd2FiYmVyIC1kICR7SE9TVF9EQVRBfSAtbCAke1NXQUJCRVJfTE9HU30gLW8gJHtTV0FCQkVSX1JFUE9SVH0vcmVwb3J0LSR7UkVQT1JUU1RBTVB9LnR4dCAtciAke1NXQUJCRVJfUkVQT1JUfS9leHRyYV9yZXBvcnQtJHtSRVBPUlRTVEFNUH0udHh0IC1jIGFsbCAtcCAke1RPUERJUn0gLWYgJHtPRVJPT1R9L21ldGEvY29uZi9zd2FiYmVyICR7VE9QRElSfSAke09FUk9PVH0gJHtDQ0FDSEVfRElSfQotCWVsc2UKLQkJZWNobyAiTm8gaG9zdCBkYXRhLCBjYW5ub3QgZ2VuZXJhdGUgc3dhYmJlciByZXBvcnQuIgotCWZpCi19Ci1hZGR0YXNrIGdlbmVyYXRlX3N3YWJiZXJfcmVwb3J0IGFmdGVyIGRvXyR7U1dBQl9PUklHX1RBU0t9Ci1kb19nZW5lcmF0ZV9zd2FiYmVyX3JlcG9ydFtkZXBlbmRzXSA9ICJzd2FiYmVyLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS12bS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS12bS5iYmNsYXNzCmluZGV4IDQ3ZjczMjYuLjJmMzVkNmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2Utdm0uYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlLXZtLmJiY2xhc3MKQEAgLTIzLDIzICsyMywyNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c2xpbnV4LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0ZWQtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10b29scy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtQTn06ZG9faW1hZ2VfZXh0NCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtQTn06ZG9faW1hZ2VfJHtWTV9ST09URlNfVFlQRX0gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKIAotSU1BR0VfVFlQRURFUF92bWRrID0gImV4dDQiCi1JTUFHRV9UWVBFREVQX3ZkaSA9ICJleHQ0IgotSU1BR0VfVFlQRURFUF9xY293MiA9ICJleHQ0IgotSU1BR0VfVFlQRURFUF9oZGRkaXJlY3QgPSAiZXh0NCIKK0lNQUdFX1RZUEVERVBfdm1kayA9ICIke1ZNX1JPT1RGU19UWVBFfSIKK0lNQUdFX1RZUEVERVBfdmRpID0gIiR7Vk1fUk9PVEZTX1RZUEV9IgorSU1BR0VfVFlQRURFUF9xY293MiA9ICIke1ZNX1JPT1RGU19UWVBFfSIKK0lNQUdFX1RZUEVERVBfaGRkZGlyZWN0ID0gIiR7Vk1fUk9PVEZTX1RZUEV9IgogSU1BR0VfVFlQRVNfTUFTS0VEICs9ICJ2bWRrIHZkaSBxY293MiBoZGRkaXJlY3QiCiAKLVJPT1RGUyA/PSAiJHtERVBMT1lfRElSX0lNQUdFfS8ke0lNQUdFX0xJTktfTkFNRX0uZXh0NCIKK1ZNX1JPT1RGU19UWVBFID89ICJleHQ0IgorUk9PVEZTID89ICIke0lNR0RFUExPWURJUn0vJHtJTUFHRV9MSU5LX05BTUV9LiR7Vk1fUk9PVEZTX1RZUEV9IgogCiAjIFVzZWQgYnkgYm9vdGxvYWRlcgogTEFCRUxTX1ZNID89ICJib290IgogUk9PVF9WTSA/PSAicm9vdD0vZGV2L3NkYTIiCiAjIFVzaW5nIGFuIGluaXRyYW1mcyBpcyBvcHRpb25hbC4gRW5hYmxlIGl0IGJ5IHNldHRpbmcgSU5JVFJEX0lNQUdFX1ZNLgogSU5JVFJEX0lNQUdFX1ZNID89ICIiCi1JTklUUkRfVk0gPz0gIiR7QCcke0RFUExPWV9ESVJfSU1BR0V9LyR7SU5JVFJEX0lNQUdFX1ZNfS0ke01BQ0hJTkV9LmNwaW8uZ3onIGlmICcke0lOSVRSRF9JTUFHRV9WTX0nIGVsc2UgJyd9IgorSU5JVFJEX1ZNID89ICIke0AnJHtJTUdERVBMT1lESVJ9LyR7SU5JVFJEX0lNQUdFX1ZNfS0ke01BQ0hJTkV9LmNwaW8uZ3onIGlmICcke0lOSVRSRF9JTUFHRV9WTX0nIGVsc2UgJyd9IgogZG9fYm9vdGRpcmVjdGRpc2tbZGVwZW5kc10gKz0gIiR7QCcke0lOSVRSRF9JTUFHRV9WTX06ZG9faW1hZ2VfY29tcGxldGUnIGlmICcke0lOSVRSRF9JTUFHRV9WTX0nIGVsc2UgJyd9IgogCiBCT09URERfVk9MVU1FX0lEICAgPz0gImJvb3QiCkBAIC01MSw3ICs1Miw3IEBACiBidWlsZF9ib290X2RkKCkgewogCUhERERJUj0iJHtTfS9oZGQvYm9vdCIKIAlIRERJTUc9IiR7U30vaGRkLmltYWdlIgotCUlNQUdFPSR7REVQTE9ZX0RJUl9JTUFHRX0vJHtJTUFHRV9OQU1FfS5oZGRkaXJlY3QKKwlJTUFHRT0ke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfS5oZGRkaXJlY3QKIAogCXBvcHVsYXRlX2tlcm5lbCAkSERERElSCiAKQEAgLTY1LDEyICs2Niw2IEBACiAJQkxPQ0tTPWBkdSAtYmtzICRIRERESVIgfCBjdXQgLWYgMWAKIAlCTE9DS1M9YGV4cHIgJEJMT0NLUyArICR7Qk9PVEREX0VYVFJBX1NQQUNFfWAKIAotCSMgRW5zdXJlIHRvdGFsIHNlY3RvcnMgaXMgYW4gaW50ZWdyYWwgbnVtYmVyIG9mIHNlY3RvcnMgcGVyCi0JIyB0cmFjayBvciBtY29weSB3aWxsIGNvbXBsYWluLiBTZWN0b3JzIGFyZSA1MTIgYnl0ZXMsIGFuZCB3ZQotCSMgZ2VuZXJhdGUgaW1hZ2VzIHdpdGggMzIgc2VjdG9ycyBwZXIgdHJhY2suIFRoaXMgY2FsY3VsYXRpb24gaXMKLQkjIGRvbmUgaW4gYmxvY2tzLCB0aHVzIHRoZSBtb2QgYnkgMTYgaW5zdGVhZCBvZiAzMi4KLQlCTE9DS1M9JChleHByICRCTE9DS1MgKyAkKGV4cHIgMTYgLSAkKGV4cHIgJEJMT0NLUyAlIDE2KSkpCi0KIAkjIFJlbW92ZSBpdCBzaW5jZSBta2Rvc2ZzIHdvdWxkIGZhaWwgd2hlbiBpdCBleGlzdHMKIAlybSAtZiAkSERESU1HCiAJbWtkb3NmcyAtbiAke0JPT1RERF9WT0xVTUVfSUR9IC1TIDUxMiAtQyAkSERESU1HICRCTE9DS1MgCkBAIC0xMDksOSArMTA0LDkgQEAKIAlkZCBpZj0kSERESU1HIG9mPSRJTUFHRSBjb252PW5vdHJ1bmMgc2Vlaz0xIGJzPTUxMgogCWRkIGlmPSR7Uk9PVEZTfSBvZj0kSU1BR0UgY29udj1ub3RydW5jIHNlZWs9JE9GRlNFVCBicz01MTIKIAotCWNkICR7REVQTE9ZX0RJUl9JTUFHRX0KLQlybSAtZiAke0RFUExPWV9ESVJfSU1BR0V9LyR7SU1BR0VfTElOS19OQU1FfS5oZGRkaXJlY3QKLQlsbiAtcyAke0lNQUdFX05BTUV9LmhkZGRpcmVjdCAke0RFUExPWV9ESVJfSU1BR0V9LyR7SU1BR0VfTElOS19OQU1FfS5oZGRkaXJlY3QKKwljZCAke0lNR0RFUExPWURJUn0KKworCWxuIC1zZiAke0lNQUdFX05BTUV9LmhkZGRpcmVjdCAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9MSU5LX05BTUV9LmhkZGRpcmVjdAogfSAKIAogcHl0aG9uIGRvX2Jvb3RkaXJlY3RkaXNrKCkgewpAQCAtMTQ2LDggKzE0MSw5IEBACiAKIHJ1bl9xZW11X2ltZyAoKXsKICAgICB0eXBlPSIkMSIKLSAgICBxZW11LWltZyBjb252ZXJ0IC1PICR0eXBlICR7REVQTE9ZX0RJUl9JTUFHRX0vJHtJTUFHRV9MSU5LX05BTUV9LmhkZGRpcmVjdCAke0RFUExPWV9ESVJfSU1BR0V9LyR7SU1BR0VfTkFNRX0uJHR5cGUKLSAgICBsbiAtc2YgJHtJTUFHRV9OQU1FfS4kdHlwZSAke0RFUExPWV9ESVJfSU1BR0V9LyR7SU1BR0VfTElOS19OQU1FfS4kdHlwZQorICAgIHFlbXUtaW1nIGNvbnZlcnQgLU8gJHR5cGUgJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTElOS19OQU1FfS5oZGRkaXJlY3QgJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0uJHR5cGUKKworICAgIGxuIC1zZiAke0lNQUdFX05BTUV9LiR0eXBlICR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX0xJTktfTkFNRX0uJHR5cGUKIH0KIGNyZWF0ZV92bWRrX2ltYWdlICgpIHsKICAgICBydW5fcWVtdV9pbWcgdm1kawpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS5iYmNsYXNzCmluZGV4IDhiZmQyNDEuLjYxMTFmNmQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlLmJiY2xhc3MKQEAgLTc0LDYgKzc0LDggQEAKIGV4cG9ydCBQQUNLQUdFX0lOU1RBTEwgPz0gIiR7SU1BR0VfSU5TVEFMTH0gJHtST09URlNfQk9PVFNUUkFQX0lOU1RBTEx9ICR7RkVBVFVSRV9JTlNUQUxMfSIKIFBBQ0tBR0VfSU5TVEFMTF9BVFRFTVBUT05MWSA/PSAiJHtGRUFUVVJFX0lOU1RBTExfT1BUSU9OQUx9IgogCitJTUdERVBMT1lESVIgPSAiJHtXT1JLRElSfS9kZXBsb3ktJHtQTn0taW1hZ2UtY29tcGxldGUiCisKICMgSW1hZ2VzIGFyZSBnZW5lcmFsbHkgYnVpbHQgZXhwbGljaXRseSwgZG8gbm90IG5lZWQgdG8gYmUgcGFydCBvZiB3b3JsZC4KIEVYQ0xVREVfRlJPTV9XT1JMRCA9ICIxIgogCkBAIC0xMTQsMTEgKzExNiwxMSBAQAogCiBkZWYgcm9vdGZzX3ZhcmlhYmxlcyhkKToKICAgICBmcm9tIG9lLnJvb3RmcyBpbXBvcnQgdmFyaWFibGVfZGVwZW5kcwotICAgIHZhcmlhYmxlcyA9IFsnSU1BR0VfREVWSUNFX1RBQkxFUycsJ0JVSUxEX0lNQUdFU19GUk9NX0ZFRURTJywnSU1BR0VfVFlQRVNfTUFTS0VEJywnSU1BR0VfUk9PVEZTX0FMSUdOTUVOVCcsJ0lNQUdFX09WRVJIRUFEX0ZBQ1RPUicsJ0lNQUdFX1JPT1RGU19TSVpFJywnSU1BR0VfUk9PVEZTX0VYVFJBX1NQQUNFJywKLSAgICAgICAgICAgICAgICAgJ0lNQUdFX1JPT1RGU19NQVhTSVpFJywnSU1BR0VfTkFNRScsJ0lNQUdFX0xJTktfTkFNRScsJ0lNQUdFX01BTklGRVNUJywnREVQTE9ZX0RJUl9JTUFHRScsJ1JNX09MRF9JTUFHRScsJ0lNQUdFX0ZTVFlQRVMnLCdJTUFHRV9JTlNUQUxMX0NPTVBMRU1FTlRBUlknLCdJTUFHRV9MSU5HVUFTJywKKyAgICB2YXJpYWJsZXMgPSBbJ0lNQUdFX0RFVklDRV9UQUJMRScsJ0lNQUdFX0RFVklDRV9UQUJMRVMnLCdCVUlMRF9JTUFHRVNfRlJPTV9GRUVEUycsJ0lNQUdFX1RZUEVTX01BU0tFRCcsJ0lNQUdFX1JPT1RGU19BTElHTk1FTlQnLCdJTUFHRV9PVkVSSEVBRF9GQUNUT1InLCdJTUFHRV9ST09URlNfU0laRScsJ0lNQUdFX1JPT1RGU19FWFRSQV9TUEFDRScsCisgICAgICAgICAgICAgICAgICdJTUFHRV9ST09URlNfTUFYU0laRScsJ0lNQUdFX05BTUUnLCdJTUFHRV9MSU5LX05BTUUnLCdJTUFHRV9NQU5JRkVTVCcsJ0RFUExPWV9ESVJfSU1BR0UnLCdJTUFHRV9GU1RZUEVTJywnSU1BR0VfSU5TVEFMTF9DT01QTEVNRU5UQVJZJywnSU1BR0VfTElOR1VBUycsCiAgICAgICAgICAgICAgICAgICdNVUxUSUxJQlJFX0FMTE9XX1JFUCcsJ01VTFRJTElCX1RFTVBfUk9PVEZTJywnTVVMVElMSUJfVkFSSUFOVFMnLCdNVUxUSUxJQlMnLCdBTExfTVVMVElMSUJfUEFDS0FHRV9BUkNIUycsJ01VTFRJTElCX0dMT0JBTF9WQVJJQU5UUycsJ0JBRF9SRUNPTU1FTkRBVElPTlMnLCdOT19SRUNPTU1FTkRBVElPTlMnLAogICAgICAgICAgICAgICAgICAnUEFDS0FHRV9BUkNIUycsJ1BBQ0tBR0VfQ0xBU1NFUycsJ1RBUkdFVF9WRU5ET1InLCdUQVJHRVRfQVJDSCcsJ1RBUkdFVF9PUycsJ09WRVJSSURFUycsJ0JCRVhURU5EVkFSSUFOVCcsJ0ZFRURfREVQTE9ZRElSX0JBU0VfVVJJJywnSU5URVJDRVBUX0RJUicsJ1VTRV9ERVZGUycsCi0gICAgICAgICAgICAgICAgICdDT01QUkVTU0lPTlRZUEVTJywgJ0lNQUdFX0dFTl9ERUJVR0ZTJywgJ1JPT1RGU19ST19VTk5FRURFRCddCisgICAgICAgICAgICAgICAgICdDT05WRVJTSU9OVFlQRVMnLCAnSU1BR0VfR0VOX0RFQlVHRlMnLCAnUk9PVEZTX1JPX1VOTkVFREVEJywgJ0lNR0RFUExPWURJUicsICdQQUNLQUdFX0VYQ0xVREVfQ09NUExFTUVOVEFSWSddCiAgICAgdmFyaWFibGVzLmV4dGVuZChyb290ZnNfY29tbWFuZF92YXJpYWJsZXMoZCkpCiAgICAgdmFyaWFibGVzLmV4dGVuZCh2YXJpYWJsZV9kZXBlbmRzKGQpKQogICAgIHJldHVybiAiICIuam9pbih2YXJpYWJsZXMpCkBAIC0xNjYsNyArMTY4LDcgQEAKICAgICAgICAgaWYgdGVtcDoKICAgICAgICAgICAgIGJiLmZhdGFsKCIlcyBjb250YWlucyBjb25mbGljdGluZyBJTUFHRV9GRUFUVVJFUyAlcyAlcyIgJSAoZC5nZXRWYXIoJ1BOJywgVHJ1ZSksIGZlYXR1cmUsICcgJy5qb2luKGxpc3QodGVtcCkpKSkKIAotICAgIGQuc2V0VmFyKCdJTUFHRV9GRUFUVVJFUycsICcgJy5qb2luKGxpc3QocmVtYWluX2ZlYXR1cmVzKSkpCisgICAgZC5zZXRWYXIoJ0lNQUdFX0ZFQVRVUkVTJywgJyAnLmpvaW4oc29ydGVkKGxpc3QocmVtYWluX2ZlYXR1cmVzKSkpKQogCiAgICAgY2hlY2tfaW1hZ2VfZmVhdHVyZXMoZCkKICAgICBpbml0cmFtZnNfaW1hZ2UgPSBkLmdldFZhcignSU5JVFJBTUZTX0lNQUdFJywgVHJ1ZSkgb3IgIiIKQEAgLTE5OCw2ICsyMDAsMTcgQEAKICAgICBmcm9tIG9lLnJvb3RmcyBpbXBvcnQgY3JlYXRlX3Jvb3RmcwogICAgIGZyb20gb2UubWFuaWZlc3QgaW1wb3J0IGNyZWF0ZV9tYW5pZmVzdAogCisgICAgIyBOT1RFOiBpZiB5b3UgYWRkLCByZW1vdmUgb3Igc2lnbmlmaWNhbnRseSByZWZhY3RvciB0aGUgc3RhZ2VzIG9mIHRoaXMKKyAgICAjIHByb2Nlc3MgdGhlbiB5b3Ugc2hvdWxkIHJlY2FsY3VsYXRlIHRoZSB3ZWlnaHRpbmdzIGhlcmUuIFRoaXMgaXMgcXVpdGUKKyAgICAjIGVhc3kgdG8gZG8gLSBqdXN0IGNoYW5nZSB0aGUgTXVsdGlTdGFnZVByb2dyZXNzUmVwb3J0ZXIgbGluZSB0ZW1wb3JhcmlseQorICAgICMgdG8gcGFzcyBkZWJ1Zz1UcnVlIGFzIHRoZSBsYXN0IHBhcmFtZXRlciBhbmQgeW91J2xsIGdldCBhIHByaW50b3V0IG9mCisgICAgIyB0aGUgd2VpZ2h0aW5ncyBhcyB3ZWxsIGFzIGEgbWFwIHRvIHRoZSBsaW5lcyB3aGVyZSBuZXh0X3N0YWdlKCkgd2FzCisgICAgIyBjYWxsZWQuIE9mIGNvdXJzZSB0aGlzIGlzbid0IGNyaXRpY2FsLCBidXQgaXQgaGVscHMgdG8ga2VlcCB0aGUgcHJvZ3Jlc3MKKyAgICAjIHJlcG9ydGluZyBhY2N1cmF0ZS4KKyAgICBzdGFnZV93ZWlnaHRzID0gWzEsIDIwMywgMzU0LCAxODYsIDY1LCA0MjI4LCAxLCAzNTMsIDQ5LCAzMzAsIDM4MiwgMjMsIDFdCisgICAgcHJvZ3Jlc3NfcmVwb3J0ZXIgPSBiYi5wcm9ncmVzcy5NdWx0aVN0YWdlUHJvZ3Jlc3NSZXBvcnRlcihkLCBzdGFnZV93ZWlnaHRzKQorICAgIHByb2dyZXNzX3JlcG9ydGVyLm5leHRfc3RhZ2UoKQorCiAgICAgIyBIYW5kbGUgcGFja2FnZSBleGNsdXNpb25zCiAgICAgZXhjbF9wa2dzID0gZC5nZXRWYXIoIlBBQ0tBR0VfRVhDTFVERSIsIFRydWUpLnNwbGl0KCkKICAgICBpbnN0X3BrZ3MgPSBkLmdldFZhcigiUEFDS0FHRV9JTlNUQUxMIiwgVHJ1ZSkuc3BsaXQoKQpAQCAtMjMwLDExICsyNDMsMTUgQEAKICAgICAjIEdlbmVyYXRlIHRoZSBpbml0aWFsIG1hbmlmZXN0CiAgICAgY3JlYXRlX21hbmlmZXN0KGQpCiAKLSAgICAjIEdlbmVyYXRlIHJvb3RmcwotICAgIGNyZWF0ZV9yb290ZnMoZCkKKyAgICBwcm9ncmVzc19yZXBvcnRlci5uZXh0X3N0YWdlKCkKKworICAgICMgZ2VuZXJhdGUgcm9vdGZzCisgICAgY3JlYXRlX3Jvb3RmcyhkLCBwcm9ncmVzc19yZXBvcnRlcj1wcm9ncmVzc19yZXBvcnRlcikKKworICAgIHByb2dyZXNzX3JlcG9ydGVyLmZpbmlzaCgpCiB9CiBkb19yb290ZnNbZGlyc10gPSAiJHtUT1BESVJ9IgotZG9fcm9vdGZzW2NsZWFuZGlyc10gKz0gIiR7U30iCitkb19yb290ZnNbY2xlYW5kaXJzXSArPSAiJHtTfSAke0lNR0RFUExPWURJUn0iCiBkb19yb290ZnNbdW1hc2tdID0gIjAyMiIKIGFkZHRhc2sgcm9vdGZzIGJlZm9yZSBkb19idWlsZAogCkBAIC0yNTgsOCArMjc1LDQzIEBACiB9CiBkb19pbWFnZV9jb21wbGV0ZVtkaXJzXSA9ICIke1RPUERJUn0iCiBkb19pbWFnZV9jb21wbGV0ZVt1bWFza10gPSAiMDIyIgorU1NUQVRFVEFTS1MgKz0gImRvX2ltYWdlX2NvbXBsZXRlIgorU1NUQVRFX1NLSVBfQ1JFQVRJT05fdGFzay1pbWFnZS1jb21wbGV0ZSA9ICcxJworZG9faW1hZ2VfY29tcGxldGVbc3N0YXRlLWlucHV0ZGlyc10gPSAiJHtJTUdERVBMT1lESVJ9IgorZG9faW1hZ2VfY29tcGxldGVbc3N0YXRlLW91dHB1dGRpcnNdID0gIiR7REVQTE9ZX0RJUl9JTUFHRX0iCitkb19pbWFnZV9jb21wbGV0ZVtzdGFtcC1leHRyYS1pbmZvXSA9ICIke01BQ0hJTkV9IgogYWRkdGFzayBkb19pbWFnZV9jb21wbGV0ZSBhZnRlciBkb19pbWFnZSBiZWZvcmUgZG9fYnVpbGQKIAorIyBBZGQgaW1hZ2UtbGV2ZWwgUUEvc2FuaXR5IGNoZWNrcyB0byBJTUFHRV9RQV9DT01NQU5EUworIworIyBJTUFHRV9RQV9DT01NQU5EUyArPSAiIFwKKyMgICAgIGltYWdlX2NoZWNrX2V2ZXJ5dGhpbmdfb2sgXAorIyAiCisjIFRoaXMgdGFzayBydW5zIGFsbCBmdW5jdGlvbnMgaW4gSU1BR0VfUUFfQ09NTUFORFMgYWZ0ZXIgdGhlIGltYWdlCisjIGNvbnN0cnVjdGlvbiBoYXMgY29tcGxldGVkIGluIG9yZGVyIHRvIHZhbGlkYXRlIHRoZSByZXN1bHRpbmcgaW1hZ2UuCitmYWtlcm9vdCBweXRob24gZG9faW1hZ2VfcWEgKCkgeworICAgIGZyb20gb2UudXRpbHMgaW1wb3J0IEltYWdlUUFGYWlsZWQKKworICAgIHFhX2NtZHMgPSAoZC5nZXRWYXIoJ0lNQUdFX1FBX0NPTU1BTkRTJywgVHJ1ZSkgb3IgJycpLnNwbGl0KCkKKyAgICBxYW1zZyA9ICIiCisKKyAgICBmb3IgY21kIGluIHFhX2NtZHM6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYyhjbWQsIGQpCisgICAgICAgIGV4Y2VwdCBvZS51dGlscy5JbWFnZVFBRmFpbGVkIGFzIGU6CisgICAgICAgICAgICBxYW1zZyA9IHFhbXNnICsgJ1x0SW1hZ2UgUUEgZnVuY3Rpb24gJXMgZmFpbGVkOiAlc1xuJyAlIChlLm5hbWUsIGUuZGVzY3JpcHRpb24pCisgICAgICAgIGV4Y2VwdCBiYi5idWlsZC5GdW5jRmFpbGVkIGFzIGU6CisgICAgICAgICAgICBxYW1zZyA9IHFhbXNnICsgJ1x0SW1hZ2UgUUEgZnVuY3Rpb24gJXMgZmFpbGVkJyAlIGUubmFtZQorICAgICAgICAgICAgaWYgZS5sb2dmaWxlOgorICAgICAgICAgICAgICAgIHFhbXNnID0gcWFtc2cgKyAnIChsb2cgZmlsZSBpcyBsb2NhdGVkIGF0ICVzKScgJSBlLmxvZ2ZpbGUKKyAgICAgICAgICAgIHFhbXNnID0gcWFtc2cgKyAnXG4nCisKKyAgICBpZiBxYW1zZzoKKyAgICAgICAgaW1nbmFtZSA9IGQuZ2V0VmFyKCdJTUFHRV9OQU1FJywgVHJ1ZSkKKyAgICAgICAgYmIuZmF0YWwoIlFBIGVycm9ycyBmb3VuZCB3aGlsc3QgdmFsaWRhdGluZyBpbWFnZTogJXNcbiVzIiAlIChpbWduYW1lLCBxYW1zZykpCit9CithZGR0YXNrIGRvX2ltYWdlX3FhIGFmdGVyIGRvX2ltYWdlX2NvbXBsZXRlIGJlZm9yZSBkb19idWlsZAorCiAjCiAjIFdyaXRlIGVudmlyb25tZW50IHZhcmlhYmxlcyB1c2VkIGJ5IHdpYwogIyB0byB0bXAvc3lzcm9vdHMvPG1hY2hpbmU+L2ltZ2RhdGEvPGltYWdlPi5lbnYKQEAgLTI4Nyw2ICszMzksNyBAQAogICAgIGQuYXBwZW5kVmFyKCdJTUFHRV9ST09URlMnLCAnLWRiZycpCiAgICAgZC5hcHBlbmRWYXIoJ0lNQUdFX0xJTktfTkFNRScsICctZGJnJykKICAgICBkLmFwcGVuZFZhcignSU1BR0VfTkFNRScsJy1kYmcnKQorICAgIGQuc2V0VmFyKCdJTUFHRV9CVUlMRElOR19ERUJVR0ZTJywgJ3RydWUnKQogICAgIGRlYnVnZnNfaW1hZ2VfZnN0eXBlcyA9IGQuZ2V0VmFyKCdJTUFHRV9GU1RZUEVTX0RFQlVHRlMnLCBUcnVlKQogICAgIGlmIGRlYnVnZnNfaW1hZ2VfZnN0eXBlczoKICAgICAgICAgZC5zZXRWYXIoJ0lNQUdFX0ZTVFlQRVMnLCBkZWJ1Z2ZzX2ltYWdlX2ZzdHlwZXMpCkBAIC0yOTcsOCArMzUwLDE2IEBACiAKIHB5dGhvbiAoKSB7CiAgICAgdmFyZGVwcyA9IHNldCgpCi0gICAgY3R5cGVzID0gZC5nZXRWYXIoJ0NPTVBSRVNTSU9OVFlQRVMnLCBUcnVlKS5zcGxpdCgpCi0gICAgb2xkX292ZXJyaWRlcyA9IGQuZ2V0VmFyKCdPVkVSUklERVMnLCAwKQorICAgICMgV2UgYWxsb3cgQ09OVkVSU0lPTlRZUEVTIHRvIGhhdmUgZHVwbGljYXRlcy4gVGhhdCBhdm9pZHMgYnJlYWtpbmcKKyAgICAjIGRlcml2ZWQgZGlzdHJvcyB3aGVuIE9FLWNvcmUgb3Igc29tZSBvdGhlciBsYXllciBpbmRlcGVuZGVudGx5IGFkZHMKKyAgICAjIHRoZSBzYW1lIHR5cGUuIFRoZXJlIGlzIHN0aWxsIG9ubHkgb25lIGNvbW1hbmQgZm9yIGVhY2ggdHlwZSwgYnV0CisgICAgIyBwcmVzdW1hYmx5IHRoZSBjb21tYW5kcyB3aWxsIGRvIHRoZSBzYW1lIHdoZW4gdGhlIHR5cGUgaXMgdGhlIHNhbWUsCisgICAgIyBldmVuIHdoZW4gYWRkZWQgaW4gZGlmZmVyZW50IHBsYWNlcy4KKyAgICAjCisgICAgIyBXaXRob3V0IGRlLWR1cGxpY2F0aW9uLCBnZW5fY29udmVyc2lvbl9jbWRzKCkgYmVsb3cKKyAgICAjIHdvdWxkIGNyZWF0ZSB0aGUgc2FtZSBjb21wcmVzc2lvbiBjb21tYW5kIG11bHRpcGxlIHRpbWVzLgorICAgIGN0eXBlcyA9IHNldChkLmdldFZhcignQ09OVkVSU0lPTlRZUEVTJywgVHJ1ZSkuc3BsaXQoKSkKKyAgICBvbGRfb3ZlcnJpZGVzID0gZC5nZXRWYXIoJ09WRVJSSURFUycsIEZhbHNlKQogCiAgICAgZGVmIF9pbWFnZV9iYXNlX3R5cGUodHlwZSk6CiAgICAgICAgIGJhc2V0eXBlID0gdHlwZQpAQCAtMzU0LDYgKzQxNSw3IEBACiAgICAgZC5hcHBlbmRWYXJGbGFnKCdkb19pbWFnZScsICd2YXJkZXBzJywgJyAnLmpvaW4odmFyZGVwcykpCiAKICAgICBtYXNrZWR0eXBlcyA9IChkLmdldFZhcignSU1BR0VfVFlQRVNfTUFTS0VEJywgVHJ1ZSkgb3IgIiIpLnNwbGl0KCkKKyAgICBtYXNrZWR0eXBlcyA9IFtkYmcgKyB0IGZvciB0IGluIG1hc2tlZHR5cGVzIGZvciBkYmcgaW4gKCIiLCAiZGVidWdmc18iKV0KIAogICAgIGZvciB0IGluIGJhc2V0eXBlczoKICAgICAgICAgdmFyZGVwcyA9IHNldCgpCkBAIC0zODYsMjEgKzQ0OCwzMCBAQAogICAgICAgICAgICAgY21kcy5hcHBlbmQoIlx0IiArIGltYWdlX2NtZCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGJiLmZhdGFsKCJObyBJTUFHRV9DTUQgZGVmaW5lZCBmb3IgSU1BR0VfRlNUWVBFUyBlbnRyeSAnJXMnIC0gcG9zc2libHkgaW52YWxpZCB0eXBlIG5hbWUgb3IgbWlzc2luZyBzdXBwb3J0IGNsYXNzIiAlIHQpCi0gICAgICAgIGNtZHMuYXBwZW5kKGxvY2FsZGF0YS5leHBhbmQoIlx0Y2QgJHtERVBMT1lfRElSX0lNQUdFfSIpKQorICAgICAgICBjbWRzLmFwcGVuZChsb2NhbGRhdGEuZXhwYW5kKCJcdGNkICR7SU1HREVQTE9ZRElSfSIpKQorCisgICAgICAgICMgU2luY2UgYSBjb3B5IG9mIElNQUdFX0NNRF94eHggd2lsbCBiZSBpbmxpbmVkIHdpdGhpbiBkb19pbWFnZV94eHgsCisgICAgICAgICMgcHJldmVudCBhIHJlZHVuZGFudCBjb3B5IG9mIElNQUdFX0NNRF94eHggYmVpbmcgZW1pdHRlZCBhcyBhIGZ1bmN0aW9uLgorICAgICAgICBkLmRlbFZhckZsYWcoJ0lNQUdFX0NNRF8nICsgcmVhbHQsICdmdW5jJykKIAogICAgICAgICBybV90bXBfaW1hZ2VzID0gc2V0KCkKICAgICAgICAgZGVmIGdlbl9jb252ZXJzaW9uX2NtZHMoYnQpOgogICAgICAgICAgICAgZm9yIGN0eXBlIGluIGN0eXBlczoKLSAgICAgICAgICAgICAgICBpZiBidC5lbmRzd2l0aCgiLiIgKyBjdHlwZSk6CisgICAgICAgICAgICAgICAgaWYgYnRbYnQuZmluZCgnLicpICsgMTpdID09IGN0eXBlOgogICAgICAgICAgICAgICAgICAgICB0eXBlID0gYnRbMDotbGVuKGN0eXBlKSAtIDFdCiAgICAgICAgICAgICAgICAgICAgIGlmIHR5cGUuc3RhcnRzd2l0aCgiZGVidWdmc18iKToKICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSB0eXBlWzg6XQogICAgICAgICAgICAgICAgICAgICAjIENyZWF0ZSBpbnB1dCBpbWFnZSBmaXJzdC4KICAgICAgICAgICAgICAgICAgICAgZ2VuX2NvbnZlcnNpb25fY21kcyh0eXBlKQogICAgICAgICAgICAgICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCd0eXBlJywgdHlwZSkKLSAgICAgICAgICAgICAgICAgICAgY21kcy5hcHBlbmQoIlx0IiArIGxvY2FsZGF0YS5nZXRWYXIoIkNPTVBSRVNTX0NNRF8iICsgY3R5cGUsIFRydWUpKQorICAgICAgICAgICAgICAgICAgICBjbWQgPSAiXHQiICsgKGxvY2FsZGF0YS5nZXRWYXIoIkNPTlZFUlNJT05fQ01EXyIgKyBjdHlwZSwgVHJ1ZSkgb3IgbG9jYWxkYXRhLmdldFZhcigiQ09NUFJFU1NfQ01EXyIgKyBjdHlwZSwgVHJ1ZSkpCisgICAgICAgICAgICAgICAgICAgIGlmIGNtZCBub3QgaW4gY21kczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNtZHMuYXBwZW5kKGNtZCkKKyAgICAgICAgICAgICAgICAgICAgdmFyZGVwcy5hZGQoJ0NPTlZFUlNJT05fQ01EXycgKyBjdHlwZSkKICAgICAgICAgICAgICAgICAgICAgdmFyZGVwcy5hZGQoJ0NPTVBSRVNTX0NNRF8nICsgY3R5cGUpCi0gICAgICAgICAgICAgICAgICAgIHN1YmltYWdlcy5hcHBlbmQodHlwZSArICIuIiArIGN0eXBlKQorICAgICAgICAgICAgICAgICAgICBzdWJpbWFnZSA9IHR5cGUgKyAiLiIgKyBjdHlwZQorICAgICAgICAgICAgICAgICAgICBpZiBzdWJpbWFnZSBub3QgaW4gc3ViaW1hZ2VzOgorICAgICAgICAgICAgICAgICAgICAgICAgc3ViaW1hZ2VzLmFwcGVuZChzdWJpbWFnZSkKICAgICAgICAgICAgICAgICAgICAgaWYgdHlwZSBub3QgaW4gYWxsdHlwZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICBybV90bXBfaW1hZ2VzLmFkZChsb2NhbGRhdGEuZXhwYW5kKCIke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSIpKQogCkBAIC00NjcsNiArNTM4LDEyIEBACiAgICAgYmFzZV9zaXplICs9IHJvb3Rmc19hbGlnbm1lbnQgLSAxCiAgICAgYmFzZV9zaXplIC09IGJhc2Vfc2l6ZSAlIHJvb3Rmc19hbGlnbm1lbnQKIAorICAgICMgRG8gbm90IGNoZWNrIGltYWdlIHNpemUgb2YgdGhlIGRlYnVnZnMgaW1hZ2UuIFRoaXMgaXMgbm90IHN1cHBvc2VkCisgICAgIyB0byBiZSBkZXBsb3llZCwgZXRjLiBzbyBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gbGltaXQgdGhlIHNpemUKKyAgICAjIG9mIHRoZSBkZWJ1Zy4KKyAgICBpZiAoZC5nZXRWYXIoJ0lNQUdFX0JVSUxESU5HX0RFQlVHRlMnLCBUcnVlKSBvciAiIikgPT0gInRydWUiOgorICAgICAgICByZXR1cm4gYmFzZV9zaXplCisKICAgICAjIENoZWNrIHRoZSByb290ZnMgc2l6ZSBhZ2FpbnN0IElNQUdFX1JPT1RGU19NQVhTSVpFIChpZiBzZXQpCiAgICAgaWYgcm9vdGZzX21heHNpemU6CiAgICAgICAgIHJvb3Rmc19tYXhzaXplX2ludCA9IGludChyb290ZnNfbWF4c2l6ZSkKQEAgLTQ5NSwyOCArNTcyLDI2IEBACiAjCiBweXRob24gY3JlYXRlX3N5bWxpbmtzKCkgewogCi0gICAgZGVwbG95X2RpciA9IGQuZ2V0VmFyKCdERVBMT1lfRElSX0lNQUdFJywgVHJ1ZSkKKyAgICBkZXBsb3lfZGlyID0gZC5nZXRWYXIoJ0lNR0RFUExPWURJUicsIFRydWUpCiAgICAgaW1nX25hbWUgPSBkLmdldFZhcignSU1BR0VfTkFNRScsIFRydWUpCiAgICAgbGlua19uYW1lID0gZC5nZXRWYXIoJ0lNQUdFX0xJTktfTkFNRScsIFRydWUpCiAgICAgbWFuaWZlc3RfbmFtZSA9IGQuZ2V0VmFyKCdJTUFHRV9NQU5JRkVTVCcsIFRydWUpCiAgICAgdGFza25hbWUgPSBkLmdldFZhcigiQkJfQ1VSUkVOVFRBU0siLCBUcnVlKQogICAgIHN1YmltYWdlcyA9IChkLmdldFZhckZsYWcoImRvXyIgKyB0YXNrbmFtZSwgJ3N1YmltYWdlcycsIEZhbHNlKSBvciAiIikuc3BsaXQoKQogICAgIGltZ3N1ZmZpeCA9IGQuZ2V0VmFyRmxhZygiZG9fIiArIHRhc2tuYW1lLCAnaW1nc3VmZml4JywgVHJ1ZSkgb3IgZC5leHBhbmQoIiR7SU1BR0VfTkFNRV9TVUZGSVh9LiIpCi0gICAgb3MuY2hkaXIoZGVwbG95X2RpcikKIAogICAgIGlmIG5vdCBsaW5rX25hbWU6CiAgICAgICAgIHJldHVybgogICAgIGZvciB0eXBlIGluIHN1YmltYWdlczoKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoaW1nX25hbWUgKyBpbWdzdWZmaXggKyB0eXBlKToKLSAgICAgICAgICAgIGRzdCA9IGRlcGxveV9kaXIgKyAiLyIgKyBsaW5rX25hbWUgKyAiLiIgKyB0eXBlCi0gICAgICAgICAgICBzcmMgPSBpbWdfbmFtZSArIGltZ3N1ZmZpeCArIHR5cGUKKyAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKGRlcGxveV9kaXIsIGxpbmtfbmFtZSArICIuIiArIHR5cGUpCisgICAgICAgIHNyYyA9IGltZ19uYW1lICsgaW1nc3VmZml4ICsgdHlwZQorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oZGVwbG95X2Rpciwgc3JjKSk6CiAgICAgICAgICAgICBiYi5ub3RlKCJDcmVhdGluZyBzeW1saW5rOiAlcyAtPiAlcyIgJSAoZHN0LCBzcmMpKQogICAgICAgICAgICAgaWYgb3MucGF0aC5pc2xpbmsoZHN0KToKLSAgICAgICAgICAgICAgICBpZiBkLmdldFZhcignUk1fT0xEX0lNQUdFJywgVHJ1ZSkgPT0gIjEiIGFuZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLnJlYWxwYXRoKGRzdCkpOgotICAgICAgICAgICAgICAgICAgICBvcy5yZW1vdmUob3MucGF0aC5yZWFscGF0aChkc3QpKQogICAgICAgICAgICAgICAgIG9zLnJlbW92ZShkc3QpCiAgICAgICAgICAgICBvcy5zeW1saW5rKHNyYywgZHN0KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYmIubm90ZSgiU2tpcHBpbmcgc3ltbGluaywgc291cmNlIGRvZXMgbm90IGV4aXN0OiAlcyAtPiAlcyIgJSAoZHN0LCBzcmMpKQogfQogCiBNVUxUSUxJQlJFX0FMTE9XX1JFUCA9LiAiJHtiYXNlX2JpbmRpcn18JHtiYXNlX3NiaW5kaXJ9fCR7YmluZGlyfXwke3NiaW5kaXJ9fCR7bGliZXhlY2Rpcn18JHtzeXNjb25mZGlyfXwke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXZ8L2xpYi9tb2R1bGVzL1teL10qL21vZHVsZXMuKnwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlX3R5cGVzLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlX3R5cGVzLmJiY2xhc3MKaW5kZXggNTNhZjdjYS4uMWNlODMzNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZV90eXBlcy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXMuYmJjbGFzcwpAQCAtMTEsNDEgKzExLDQwIEBACiAKIGRlZiBpbWFnZXR5cGVzX2dldGRlcGVuZHMoZCk6CiAgICAgZGVmIGFkZGRlcChkZXBzdHIsIGRlcHMpOgotICAgICAgICBmb3IgaSBpbiAoZGVwc3RyIG9yICIiKS5zcGxpdCgpOgotICAgICAgICAgICAgaWYgaSBub3QgaW4gZGVwczoKLSAgICAgICAgICAgICAgICBkZXBzLmFwcGVuZChpKQorICAgICAgICBmb3IgZCBpbiAoZGVwc3RyIG9yICIiKS5zcGxpdCgpOgorICAgICAgICAgICAgIyBBZGQgdGFzayBkZXBlbmRlbmN5IGlmIG5vdCBhbHJlYWR5IHByZXNlbnQKKyAgICAgICAgICAgIGlmICI6IiBub3QgaW4gZDoKKyAgICAgICAgICAgICAgICBkICs9ICI6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKKyAgICAgICAgICAgIGRlcHMuYWRkKGQpCiAKLSAgICBkZXBzID0gW10KLSAgICBjdHlwZXMgPSBkLmdldFZhcignQ09NUFJFU1NJT05UWVBFUycsIFRydWUpLnNwbGl0KCkKICAgICBmc3R5cGVzID0gc2V0KChkLmdldFZhcignSU1BR0VfRlNUWVBFUycsIFRydWUpIG9yICIiKS5zcGxpdCgpKQogICAgIGZzdHlwZXMgfD0gc2V0KChkLmdldFZhcignSU1BR0VfRlNUWVBFU19ERUJVR0ZTJywgVHJ1ZSkgb3IgIiIpLnNwbGl0KCkpCi0gICAgZm9yIHR5cGUgaW4gZnN0eXBlczoKLSAgICAgICAgaWYgdHlwZSBpbiBbInZtZGsiLCAidmRpIiwgInFjb3cyIiwgImhkZGRpcmVjdCIsICJsaXZlIiwgImlzbyIsICJoZGRpbWciXToKLSAgICAgICAgICAgIHR5cGUgPSAiZXh0NCIKLSAgICAgICAgYmFzZXR5cGUgPSB0eXBlCi0gICAgICAgIGZvciBjdHlwZSBpbiBjdHlwZXM6Ci0gICAgICAgICAgICBpZiB0eXBlLmVuZHN3aXRoKCIuIiArIGN0eXBlKToKLSAgICAgICAgICAgICAgICBiYXNldHlwZSA9IHR5cGVbOi1sZW4oIi4iICsgY3R5cGUpXQotICAgICAgICAgICAgICAgIGFkZGRlcChkLmdldFZhcigiQ09NUFJFU1NfREVQRU5EU18lcyIgJSBjdHlwZSwgVHJ1ZSksIGRlcHMpCi0gICAgICAgICAgICAgICAgYnJlYWsKKworICAgIGRlcHMgPSBzZXQoKQorICAgIGZvciB0eXBlc3RyaW5nIGluIGZzdHlwZXM6CisgICAgICAgIHR5cGVzID0gdHlwZXN0cmluZy5zcGxpdCgiLiIpCisgICAgICAgIGJhc2V0eXBlLCByZXN0dHlwZXMgPSB0eXBlc1swXSwgdHlwZXNbMTpdCisKKyAgICAgICAgYWRkZGVwKGQuZ2V0VmFyKCdJTUFHRV9ERVBFTkRTXyVzJyAlIGJhc2V0eXBlLCBUcnVlKSAsIGRlcHMpCiAgICAgICAgIGZvciB0eXBlZGVwZW5kcyBpbiAoZC5nZXRWYXIoIklNQUdFX1RZUEVERVBfJXMiICUgYmFzZXR5cGUsIFRydWUpIG9yICIiKS5zcGxpdCgpOgogICAgICAgICAgICAgYWRkZGVwKGQuZ2V0VmFyKCdJTUFHRV9ERVBFTkRTXyVzJyAlIHR5cGVkZXBlbmRzLCBUcnVlKSAsIGRlcHMpCi0gICAgICAgIGFkZGRlcChkLmdldFZhcignSU1BR0VfREVQRU5EU18lcycgJSBiYXNldHlwZSwgVHJ1ZSkgLCBkZXBzKQorICAgICAgICBmb3IgY3R5cGUgaW4gcmVzdHR5cGVzOgorICAgICAgICAgICAgYWRkZGVwKGQuZ2V0VmFyKCJDT05WRVJTSU9OX0RFUEVORFNfJXMiICUgY3R5cGUsIFRydWUpLCBkZXBzKQorICAgICAgICAgICAgYWRkZGVwKGQuZ2V0VmFyKCJDT01QUkVTU19ERVBFTkRTXyVzIiAlIGN0eXBlLCBUcnVlKSwgZGVwcykKIAotICAgIGRlcHN0ciA9ICIiCi0gICAgZm9yIGRlcCBpbiBkZXBzOgotICAgICAgICBkZXBzdHIgKz0gIiAiICsgZGVwICsgIjpkb19wb3B1bGF0ZV9zeXNyb290IgotICAgIHJldHVybiBkZXBzdHIKKyAgICAjIFNvcnQgdGhlIHNldCBzbyB0aGF0IG9yZGVyaW5nIGlzIGNvbnNpc3RhbnQKKyAgICByZXR1cm4gIiAiLmpvaW4oc29ydGVkKGRlcHMpKQogCi0KLVhaX0NPTVBSRVNTSU9OX0xFVkVMID89ICItZSAtNiIKK1haX0NPTVBSRVNTSU9OX0xFVkVMID89ICItMyIKIFhaX0lOVEVHUklUWV9DSEVDSyA/PSAiY3JjMzIiCiBYWl9USFJFQURTID89ICItVCAwIgogCi1KRkZTMl9TVU1fRVhUUkFfQVJHUyA/PSAiIgotSU1BR0VfQ01EX2pmZnMyID0gIm1rZnMuamZmczIgLS1yb290PSR7SU1BR0VfUk9PVEZTfSAtLWZha2V0aW1lIC0tb3V0cHV0PSR7REVQTE9ZX0RJUl9JTUFHRX0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LmpmZnMyICR7RVhUUkFfSU1BR0VDTUR9IgorWklQX0NPTVBSRVNTSU9OX0xFVkVMID89ICItOSIKIAotSU1BR0VfQ01EX2NyYW1mcyA9ICJta2ZzLmNyYW1mcyAke0lNQUdFX1JPT1RGU30gJHtERVBMT1lfRElSX0lNQUdFfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uY3JhbWZzICR7RVhUUkFfSU1BR0VDTUR9IgorSkZGUzJfU1VNX0VYVFJBX0FSR1MgPz0gIiIKK0lNQUdFX0NNRF9qZmZzMiA9ICJta2ZzLmpmZnMyIC0tcm9vdD0ke0lNQUdFX1JPT1RGU30gLS1mYWtldGltZSAtLW91dHB1dD0ke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LmpmZnMyICR7RVhUUkFfSU1BR0VDTUR9IgorCitJTUFHRV9DTURfY3JhbWZzID0gIm1rZnMuY3JhbWZzICR7SU1BR0VfUk9PVEZTfSAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LmNyYW1mcyAke0VYVFJBX0lNQUdFQ01EfSIKIAogb2VfbWtleHQyMzRmcyAoKSB7CiAJZnN0eXBlPSQxCkBAIC02NSw4ICs2NCw4IEBACiAJCWV2YWwgQ09VTlQ9XCIkTUlOX0NPVU5UXCIKIAlmaQogCSMgQ3JlYXRlIGEgc3BhcnNlIGltYWdlIGJsb2NrCi0JZGQgaWY9L2Rldi96ZXJvIG9mPSR7REVQTE9ZX0RJUl9JTUFHRX0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiRmc3R5cGUgc2Vlaz0kUk9PVEZTX1NJWkUgY291bnQ9JENPVU5UIGJzPTEwMjQKLQlta2ZzLiRmc3R5cGUgLUYgJGV4dHJhX2ltYWdlY21kICR7REVQTE9ZX0RJUl9JTUFHRX0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiRmc3R5cGUgLWQgJHtJTUFHRV9ST09URlN9CisJZGQgaWY9L2Rldi96ZXJvIG9mPSR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJGZzdHlwZSBzZWVrPSRST09URlNfU0laRSBjb3VudD0kQ09VTlQgYnM9MTAyNAorCW1rZnMuJGZzdHlwZSAtRiAkZXh0cmFfaW1hZ2VjbWQgJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4kZnN0eXBlIC1kICR7SU1BR0VfUk9PVEZTfQogfQogCiBJTUFHRV9DTURfZXh0MiA9ICJvZV9ta2V4dDIzNGZzIGV4dDIgJHtFWFRSQV9JTUFHRUNNRH0iCkBAIC03NiwxNiArNzUsMTYgQEAKIE1JTl9CVFJGU19TSVpFID89ICIxNjM4NCIKIElNQUdFX0NNRF9idHJmcyAoKSB7CiAJaWYgWyAke1JPT1RGU19TSVpFfSAtZ3QgJHtNSU5fQlRSRlNfU0laRX0gXTsgdGhlbgotCQlkZCBpZj0vZGV2L3plcm8gb2Y9JHtERVBMT1lfRElSX0lNQUdFfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uYnRyZnMgY291bnQ9JHtST09URlNfU0laRX0gYnM9MTAyNAotCQlta2ZzLmJ0cmZzICR7RVhUUkFfSU1BR0VDTUR9IC1yICR7SU1BR0VfUk9PVEZTfSAke0RFUExPWV9ESVJfSU1BR0V9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS5idHJmcworCQlkZCBpZj0vZGV2L3plcm8gb2Y9JHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS5idHJmcyBjb3VudD0ke1JPT1RGU19TSVpFfSBicz0xMDI0CisJCW1rZnMuYnRyZnMgJHtFWFRSQV9JTUFHRUNNRH0gLXIgJHtJTUFHRV9ST09URlN9ICR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uYnRyZnMKIAllbHNlCiAJCWJiZmF0YWwgIlJvb3RmcyBpcyB0b28gc21hbGwgZm9yIEJUUkZTIChSb290ZnMgQWN0dWFsIFNpemU6ICR7Uk9PVEZTX1NJWkV9LCBCVFJGUyBNaW5pbXVtIFNpemU6ICR7TUlOX0JUUkZTX1NJWkV9KSIKIAlmaQogfQogCi1JTUFHRV9DTURfc3F1YXNoZnMgPSAibWtzcXVhc2hmcyAke0lNQUdFX1JPT1RGU30gJHtERVBMT1lfRElSX0lNQUdFfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uc3F1YXNoZnMgJHtFWFRSQV9JTUFHRUNNRH0gLW5vYXBwZW5kIgotSU1BR0VfQ01EX3NxdWFzaGZzLXh6ID0gIm1rc3F1YXNoZnMgJHtJTUFHRV9ST09URlN9ICR7REVQTE9ZX0RJUl9JTUFHRX0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LnNxdWFzaGZzLXh6ICR7RVhUUkFfSU1BR0VDTUR9IC1ub2FwcGVuZCAtY29tcCB4eiIKLUlNQUdFX0NNRF9zcXVhc2hmcy1sem8gPSAibWtzcXVhc2hmcyAke0lNQUdFX1JPT1RGU30gJHtERVBMT1lfRElSX0lNQUdFfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uc3F1YXNoZnMtbHpvICR7RVhUUkFfSU1BR0VDTUR9IC1ub2FwcGVuZCAtY29tcCBsem8iCitJTUFHRV9DTURfc3F1YXNoZnMgPSAibWtzcXVhc2hmcyAke0lNQUdFX1JPT1RGU30gJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS5zcXVhc2hmcyAke0VYVFJBX0lNQUdFQ01EfSAtbm9hcHBlbmQiCitJTUFHRV9DTURfc3F1YXNoZnMteHogPSAibWtzcXVhc2hmcyAke0lNQUdFX1JPT1RGU30gJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS5zcXVhc2hmcy14eiAke0VYVFJBX0lNQUdFQ01EfSAtbm9hcHBlbmQgLWNvbXAgeHoiCitJTUFHRV9DTURfc3F1YXNoZnMtbHpvID0gIm1rc3F1YXNoZnMgJHtJTUFHRV9ST09URlN9ICR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uc3F1YXNoZnMtbHpvICR7RVhUUkFfSU1BR0VDTUR9IC1ub2FwcGVuZCAtY29tcCBsem8iCiAKICMgQnkgZGVmYXVsdCwgdGFyIGZyb20gdGhlIGhvc3QgaXMgdXNlZCwgd2hpY2ggY2FuIGJlIHF1aXRlIG9sZC4gSWYKICMgeW91IG5lZWQgc3BlY2lhbCBwYXJhbWV0ZXJzIChsaWtlIC0teGF0dHJzKSB3aGljaCBhcmUgb25seSBzdXBwb3J0ZWQKQEAgLTk4LDE4ICs5NywyNSBAQAogIyBJbiBwcmFjdGljZSwgaXQgdHVybmVkIG91dCB0byBiZSBub3QgbmVlZGVkIHdoZW4gY3JlYXRpbmcgYXJjaGl2ZXMgYW5kCiAjIHJlcXVpcmVkIHdoZW4gZXh0cmFjdGluZywgYnV0IGl0IHNlZW1zIHBydWRlbnQgdG8gdXNlIGl0IGluIGJvdGggY2FzZXMuCiBJTUFHRV9DTURfVEFSID89ICJ0YXIiCi1JTUFHRV9DTURfdGFyID0gIiR7SU1BR0VfQ01EX1RBUn0gLWN2ZiAke0RFUExPWV9ESVJfSU1BR0V9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS50YXIgLUMgJHtJTUFHRV9ST09URlN9IC4iCitJTUFHRV9DTURfdGFyID0gIiR7SU1BR0VfQ01EX1RBUn0gLWN2ZiAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LnRhciAtQyAke0lNQUdFX1JPT1RGU30gLiIKIAogZG9faW1hZ2VfY3Bpb1tjbGVhbmRpcnNdICs9ICIke1dPUktESVJ9L2NwaW9fYXBwZW5kIgogSU1BR0VfQ01EX2NwaW8gKCkgewotCShjZCAke0lNQUdFX1JPT1RGU30gJiYgZmluZCAuIHwgY3BpbyAtbyAtSCBuZXdjID4ke0RFUExPWV9ESVJfSU1BR0V9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS5jcGlvKQotCWlmIFsgISAtTCAke0lNQUdFX1JPT1RGU30vaW5pdCAtYSAhIC1lICR7SU1BR0VfUk9PVEZTfS9pbml0IF07IHRoZW4KLQkJaWYgWyAtTCAke0lNQUdFX1JPT1RGU30vc2Jpbi9pbml0IC1vIC1lICR7SU1BR0VfUk9PVEZTfS9zYmluL2luaXQgXTsgdGhlbgotCQkJbG4gLXNmIC9zYmluL2luaXQgJHtXT1JLRElSfS9jcGlvX2FwcGVuZC9pbml0Ci0JCWVsc2UKLQkJCXRvdWNoICR7V09SS0RJUn0vY3Bpb19hcHBlbmQvaW5pdAorCShjZCAke0lNQUdFX1JPT1RGU30gJiYgZmluZCAuIHwgY3BpbyAtbyAtSCBuZXdjID4ke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LmNwaW8pCisJIyBXZSBvbmx5IG5lZWQgdGhlIC9pbml0IHN5bWxpbmsgaWYgd2UncmUgYnVpbGRpbmcgdGhlIHJlYWwKKwkjIGltYWdlLiBUaGUgLWRiZyBpbWFnZSBkb2Vzbid0IG5lZWQgaXQhIEJ5IGJlaW5nIGNsZXZlcgorCSMgYWJvdXQgdGhpcyB3ZSBhbHNvIGF2b2lkICd0b3VjaCcgYmVsb3cgZmFpbGluZywgYXMgaXQKKwkjIG1pZ2h0IGJlIHRyeWluZyB0byB0b3VjaCAvc2Jpbi9pbml0IG9uIHRoZSBob3N0IHNpbmNlIGJvdGgKKwkjIHRoZSBub3JtYWwgYW5kIHRoZSAtZGJnIGltYWdlIHNoYXJlIHRoZSBzYW1lIFdPUktESVIKKwlpZiBbICIke0lNQUdFX0JVSUxESU5HX0RFQlVHRlN9IiAhPSAidHJ1ZSIgXTsgdGhlbgorCQlpZiBbICEgLUwgJHtJTUFHRV9ST09URlN9L2luaXQgXSAmJiBbICEgLWUgJHtJTUFHRV9ST09URlN9L2luaXQgXTsgdGhlbgorCQkJaWYgWyAtTCAke0lNQUdFX1JPT1RGU30vc2Jpbi9pbml0IF0gfHwgWyAtZSAke0lNQUdFX1JPT1RGU30vc2Jpbi9pbml0IF07IHRoZW4KKwkJCQlsbiAtc2YgL3NiaW4vaW5pdCAke1dPUktESVJ9L2NwaW9fYXBwZW5kL2luaXQKKwkJCWVsc2UKKwkJCQl0b3VjaCAke1dPUktESVJ9L2NwaW9fYXBwZW5kL2luaXQKKwkJCWZpCisJCQkoY2QgICR7V09SS0RJUn0vY3Bpb19hcHBlbmQgJiYgZWNobyAuL2luaXQgfCBjcGlvIC1vQSAtSCBuZXdjIC1GICR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uY3BpbykKIAkJZmkKLQkJKGNkICAke1dPUktESVJ9L2NwaW9fYXBwZW5kICYmIGVjaG8gLi9pbml0IHwgY3BpbyAtb0EgLUggbmV3YyAtRiAke0RFUExPWV9ESVJfSU1BR0V9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS5jcGlvKQogCWZpCiB9CiAKQEAgLTExNyw4ICsxMjMsOCBAQAogRUxGX0FQUEVORCA/PSAicmFtZGlza19zaXplPTMyNzY4IHJvb3Q9L2Rldi9yYW0wIHJ3IGNvbnNvbGU9IgogCiBJTUFHRV9DTURfZWxmICgpIHsKLQl0ZXN0IC1mICR7REVQTE9ZX0RJUl9JTUFHRX0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LmVsZiAmJiBybSAtZiAke0RFUExPWV9ESVJfSU1BR0V9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS5lbGYKLQlta2VsZkltYWdlIC0ta2VybmVsPSR7RUxGX0tFUk5FTH0gLS1pbml0cmQ9JHtERVBMT1lfRElSX0lNQUdFfS8ke0lNQUdFX0xJTktfTkFNRX0uY3Bpby5neiAtLW91dHB1dD0ke0RFUExPWV9ESVJfSU1BR0V9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS5lbGYgLS1hcHBlbmQ9JyR7RUxGX0FQUEVORH0nICR7RVhUUkFfSU1BR0VDTUR9CisJdGVzdCAtZiAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LmVsZiAmJiBybSAtZiAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LmVsZgorCW1rZWxmSW1hZ2UgLS1rZXJuZWw9JHtFTEZfS0VSTkVMfSAtLWluaXRyZD0ke0RFUExPWV9ESVJfSU1BR0V9LyR7SU1BR0VfTElOS19OQU1FfS5jcGlvLmd6IC0tb3V0cHV0PSR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uZWxmIC0tYXBwZW5kPScke0VMRl9BUFBFTkR9JyAke0VYVFJBX0lNQUdFQ01EfQogfQogCiBJTUFHRV9UWVBFREVQX2VsZiA9ICJjcGlvLmd6IgpAQCAtMTM2LDIwICsxNDIsMjAgQEAKIAogCWVjaG8gXFt1Ymlmc1xdID4gdWJpbml6ZSR7dm5hbWV9LSR7SU1BR0VfTkFNRX0uY2ZnCiAJZWNobyBtb2RlPXViaSA+PiB1YmluaXplJHt2bmFtZX0tJHtJTUFHRV9OQU1FfS5jZmcKLQllY2hvIGltYWdlPSR7REVQTE9ZX0RJUl9JTUFHRX0vJHtJTUFHRV9OQU1FfSR7dm5hbWV9JHtJTUFHRV9OQU1FX1NVRkZJWH0udWJpZnMgPj4gdWJpbml6ZSR7dm5hbWV9LSR7SU1BR0VfTkFNRX0uY2ZnCisJZWNobyBpbWFnZT0ke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7dm5hbWV9JHtJTUFHRV9OQU1FX1NVRkZJWH0udWJpZnMgPj4gdWJpbml6ZSR7dm5hbWV9LSR7SU1BR0VfTkFNRX0uY2ZnCiAJZWNobyB2b2xfaWQ9MCA+PiB1YmluaXplJHt2bmFtZX0tJHtJTUFHRV9OQU1FfS5jZmcKIAllY2hvIHZvbF90eXBlPWR5bmFtaWMgPj4gdWJpbml6ZSR7dm5hbWV9LSR7SU1BR0VfTkFNRX0uY2ZnCiAJZWNobyB2b2xfbmFtZT0ke1VCSV9WT0xOQU1FfSA+PiB1YmluaXplJHt2bmFtZX0tJHtJTUFHRV9OQU1FfS5jZmcKIAllY2hvIHZvbF9mbGFncz1hdXRvcmVzaXplID4+IHViaW5pemUke3ZuYW1lfS0ke0lNQUdFX05BTUV9LmNmZwotCW1rZnMudWJpZnMgLXIgJHtJTUFHRV9ST09URlN9IC1vICR7REVQTE9ZX0RJUl9JTUFHRX0vJHtJTUFHRV9OQU1FfSR7dm5hbWV9JHtJTUFHRV9OQU1FX1NVRkZJWH0udWJpZnMgJHtta3ViaWZzX2FyZ3N9Ci0JdWJpbml6ZSAtbyAke0RFUExPWV9ESVJfSU1BR0V9LyR7SU1BR0VfTkFNRX0ke3ZuYW1lfSR7SU1BR0VfTkFNRV9TVUZGSVh9LnViaSAke3ViaW5pemVfYXJnc30gdWJpbml6ZSR7dm5hbWV9LSR7SU1BR0VfTkFNRX0uY2ZnCisJbWtmcy51YmlmcyAtciAke0lNQUdFX1JPT1RGU30gLW8gJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke3ZuYW1lfSR7SU1BR0VfTkFNRV9TVUZGSVh9LnViaWZzICR7bWt1Ymlmc19hcmdzfQorCXViaW5pemUgLW8gJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke3ZuYW1lfSR7SU1BR0VfTkFNRV9TVUZGSVh9LnViaSAke3ViaW5pemVfYXJnc30gdWJpbml6ZSR7dm5hbWV9LSR7SU1BR0VfTkFNRX0uY2ZnCiAKIAkjIENsZWFudXAgY2ZnIGZpbGUKLQltdiB1YmluaXplJHt2bmFtZX0tJHtJTUFHRV9OQU1FfS5jZmcgJHtERVBMT1lfRElSX0lNQUdFfS8KKwltdiB1YmluaXplJHt2bmFtZX0tJHtJTUFHRV9OQU1FfS5jZmcgJHtJTUdERVBMT1lESVJ9LwogCiAJIyBDcmVhdGUgb3duIHN5bWxpbmtzIGZvciAnbmFtZWQnIHZvbHVtZXMKIAlpZiBbIC1uICIkdm5hbWUiIF07IHRoZW4KLQkJY2QgJHtERVBMT1lfRElSX0lNQUdFfQorCQljZCAke0lNR0RFUExPWURJUn0KIAkJaWYgWyAtZSAke0lNQUdFX05BTUV9JHt2bmFtZX0ke0lNQUdFX05BTUVfU1VGRklYfS51YmlmcyBdOyB0aGVuCiAJCQlsbiAtc2YgJHtJTUFHRV9OQU1FfSR7dm5hbWV9JHtJTUFHRV9OQU1FX1NVRkZJWH0udWJpZnMgXAogCQkJJHtJTUFHRV9MSU5LX05BTUV9JHt2bmFtZX0udWJpZnMKQEAgLTE3Niw5ICsxODIsOSBAQAogCW11bHRpdWJpX21rZnMgIiR7TUtVQklGU19BUkdTfSIgIiR7VUJJTklaRV9BUkdTfSIKIH0KIAotSU1BR0VfQ01EX3ViaWZzID0gIm1rZnMudWJpZnMgLXIgJHtJTUFHRV9ST09URlN9IC1vICR7REVQTE9ZX0RJUl9JTUFHRX0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LnViaWZzICR7TUtVQklGU19BUkdTfSIKK0lNQUdFX0NNRF91YmlmcyA9ICJta2ZzLnViaWZzIC1yICR7SU1BR0VfUk9PVEZTfSAtbyAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LnViaWZzICR7TUtVQklGU19BUkdTfSIKIAotV0tTX0ZJTEUgPz0gIiR7SU1BR0VfQkFTRU5BTUV9LiR7TUFDSElORX0ud2tzIgorV0tTX0ZJTEUgPz89ICIke0lNQUdFX0JBU0VOQU1FfS4ke01BQ0hJTkV9LndrcyIKIFdLU19GSUxFUyA/PSAiJHtXS1NfRklMRX0gJHtJTUFHRV9CQVNFTkFNRX0ud2tzIgogV0tTX1NFQVJDSF9QQVRIID89ICIke1RISVNESVJ9OiR7QCc6Jy5qb2luKCclcy9zY3JpcHRzL2xpYi93aWMvY2FubmVkLXdrcycgJSBsIGZvciBsIGluICcke0JCUEFUSH06JHtDT1JFQkFTRX0nLnNwbGl0KCc6JykpfSIKIFdLU19GVUxMX1BBVEggPSAiJHtAd2tzX3NlYXJjaCgnJHtXS1NfRklMRVN9Jy5zcGxpdCgpLCAnJHtXS1NfU0VBUkNIX1BBVEh9Jykgb3IgJyd9IgpAQCAtMTkzLDIyICsxOTksNzYgQEAKICAgICAgICAgICAgIGlmIHNlYXJjaGVkOgogICAgICAgICAgICAgICAgIHJldHVybiBzZWFyY2hlZAogCitXSUNfQ1JFQVRFX0VYVFJBX0FSR1MgPz0gIiIKKwogSU1BR0VfQ01EX3dpYyAoKSB7Ci0Jb3V0PSIke0RFUExPWV9ESVJfSU1BR0V9LyR7SU1BR0VfTkFNRX0iCisJb3V0PSIke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSIKIAl3a3M9IiR7V0tTX0ZVTExfUEFUSH0iCiAJaWYgWyAteiAiJHdrcyIgXTsgdGhlbgogCQliYmZhdGFsICJObyBraWNrc3RhcnQgZmlsZXMgZnJvbSBXS1NfRklMRVMgd2VyZSBmb3VuZDogJHtXS1NfRklMRVN9LiBQbGVhc2Ugc2V0IFdLU19GSUxFIG9yIFdLU19GSUxFUyBhcHByb3ByaWF0ZWx5LiIKIAlmaQogCi0JQlVJTERESVI9IiR7VE9QRElSfSIgd2ljIGNyZWF0ZSAiJHdrcyIgLS12YXJzICIke1NUQUdJTkdfRElSX1RBUkdFVH0vaW1nZGF0YS8iIC1lICIke0lNQUdFX0JBU0VOQU1FfSIgLW8gIiRvdXQvIgorCUJVSUxERElSPSIke1RPUERJUn0iIHdpYyBjcmVhdGUgIiR3a3MiIC0tdmFycyAiJHtTVEFHSU5HX0RJUl9UQVJHRVR9L2ltZ2RhdGEvIiAtZSAiJHtJTUFHRV9CQVNFTkFNRX0iIC1vICIkb3V0LyIgJHtXSUNfQ1JFQVRFX0VYVFJBX0FSR1N9CiAJbXYgIiRvdXQvYnVpbGQvJChiYXNlbmFtZSAiJHt3a3MlLndrc30iKSIqLmRpcmVjdCAiJG91dCR7SU1BR0VfTkFNRV9TVUZGSVh9LndpYyIKIAlybSAtcmYgIiRvdXQvIgogfQogSU1BR0VfQ01EX3dpY1t2YXJkZXBzZXhjbHVkZV0gPSAiV0tTX0ZVTExfUEFUSCBXS1NfRklMRVMiCiAKICMgUmVidWlsZCB3aGVuIHRoZSB3a3MgZmlsZSBvciB2YXJzIGluIFdJQ1ZBUlMgY2hhbmdlCi1VU0lOR19XSUMgPSAiJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdJTUFHRV9GU1RZUEVTJywgJ3dpYyAnICsgJyAnLmpvaW4oJ3dpYy4lcycgJSBjIGZvciBjIGluICcke0NPTVBSRVNTSU9OVFlQRVN9Jy5zcGxpdCgpKSwgJzEnLCAnJywgZCl9IgotZG9faW1hZ2Vfd2ljW2ZpbGUtY2hlY2tzdW1zXSArPSAiJHtAJyR7V0tTX0ZVTExfUEFUSH06JXMnICUgb3MucGF0aC5leGlzdHMoJyR7V0tTX0ZVTExfUEFUSH0nKSBpZiAnJHtVU0lOR19XSUN9JyBlbHNlICcnfSIKK1VTSU5HX1dJQyA9ICIke0BiYi51dGlscy5jb250YWluc19hbnkoJ0lNQUdFX0ZTVFlQRVMnLCAnd2ljICcgKyAnICcuam9pbignd2ljLiVzJyAlIGMgZm9yIGMgaW4gJyR7Q09OVkVSU0lPTlRZUEVTfScuc3BsaXQoKSksICcxJywgJycsIGQpfSIKK1dLU19GSUxFX0NIRUNLU1VNID0gIiR7QCcke1dLU19GVUxMX1BBVEh9OiVzJyAlIG9zLnBhdGguZXhpc3RzKCcke1dLU19GVUxMX1BBVEh9JykgaWYgJyR7VVNJTkdfV0lDfScgZWxzZSAnJ30iCitkb19pbWFnZV93aWNbZmlsZS1jaGVja3N1bXNdICs9ICIke1dLU19GSUxFX0NIRUNLU1VNfSIKKworcHl0aG9uICgpIHsKKyAgICBpZiBkLmdldFZhcignVVNJTkdfV0lDJywgVHJ1ZSkgYW5kICdkb19ib290aW1nJyBpbiBkOgorICAgICAgICBiYi5idWlsZC5hZGR0YXNrKCdkb19pbWFnZV93aWMnLCAnJywgJ2RvX2Jvb3RpbWcnLCBkKQorfQorCitweXRob24gZG9fd3JpdGVfd2tzX3RlbXBsYXRlICgpIHsKKyAgICAiIiJXcml0ZSBvdXQgZXhwYW5kZWQgdGVtcGxhdGUgY29udGVudHMgdG8gV0tTX0ZVTExfUEFUSC4iIiIKKyAgICBpbXBvcnQgcmUKKworICAgIHRlbXBsYXRlX2JvZHkgPSBkLmdldFZhcignX1dLU19URU1QTEFURScsIFRydWUpCisKKyAgICAjIFJlbW92ZSBhbnkgcmVtbmFudCB2YXJpYWJsZSByZWZlcmVuY2VzIGxlZnQgYmVoaW5kIGJ5IHRoZSBleHBhbnNpb24KKyAgICAjIGR1ZSB0byB1bmRlZmluZWQgdmFyaWFibGVzCisgICAgZXhwYW5kX3Zhcl9yZWdleHAgPSByZS5jb21waWxlKHIiXCR7W157fUBcblx0IDpdK30iKQorICAgIHdoaWxlIFRydWU6CisgICAgICAgIG5ld19ib2R5ID0gcmUuc3ViKGV4cGFuZF92YXJfcmVnZXhwLCAnJywgdGVtcGxhdGVfYm9keSkKKyAgICAgICAgaWYgbmV3X2JvZHkgPT0gdGVtcGxhdGVfYm9keToKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0ZW1wbGF0ZV9ib2R5ID0gbmV3X2JvZHkKKworICAgIHdrc19maWxlID0gZC5nZXRWYXIoJ1dLU19GVUxMX1BBVEgnLCBUcnVlKQorICAgIHdpdGggb3Blbih3a3NfZmlsZSwgJ3cnKSBhcyBmOgorICAgICAgICBmLndyaXRlKHRlbXBsYXRlX2JvZHkpCit9CisKK3B5dGhvbiAoKSB7CisgICAgaWYgZC5nZXRWYXIoJ1VTSU5HX1dJQycsIFRydWUpOgorICAgICAgICB3a3NfZmlsZV91ID0gZC5nZXRWYXIoJ1dLU19GVUxMX1BBVEgnLCBGYWxzZSkKKyAgICAgICAgd2tzX2ZpbGUgPSBkLmV4cGFuZCh3a3NfZmlsZV91KQorICAgICAgICBiYXNlLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KHdrc19maWxlKQorICAgICAgICBpZiBleHQgPT0gJy5pbicgYW5kIG9zLnBhdGguZXhpc3RzKHdrc19maWxlKToKKyAgICAgICAgICAgIHdrc19vdXRfZmlsZSA9IG9zLnBhdGguam9pbihkLmdldFZhcignV09SS0RJUicsIFRydWUpLCBvcy5wYXRoLmJhc2VuYW1lKGJhc2UpKQorICAgICAgICAgICAgZC5zZXRWYXIoJ1dLU19GVUxMX1BBVEgnLCB3a3Nfb3V0X2ZpbGUpCisgICAgICAgICAgICBkLnNldFZhcignV0tTX1RFTVBMQVRFX1BBVEgnLCB3a3NfZmlsZV91KQorICAgICAgICAgICAgZC5zZXRWYXIoJ1dLU19GSUxFX0NIRUNLU1VNJywgJyR7V0tTX1RFTVBMQVRFX1BBVEh9OlRydWUnKQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHdrc19maWxlLCAncicpIGFzIGY6CisgICAgICAgICAgICAgICAgICAgIGJvZHkgPSBmLnJlYWQoKQorICAgICAgICAgICAgZXhjZXB0IChJT0Vycm9yLCBPU0Vycm9yKSBhcyBleGM6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIFByZXZpb3VzbHksIEkgdXNlZCBleHBhbmRXaXRoUmVmcyB0byBnZXQgdGhlIGRlcGVuZGVuY3kgbGlzdAorICAgICAgICAgICAgICAgICMgYW5kIGFkZCBpdCB0byBXSUNWQVJTLCBidXQgdGhlcmUncyBubyBwb2ludCByZS1wYXJzaW5nIHRoZQorICAgICAgICAgICAgICAgICMgZmlsZSBpbiBwcm9jZXNzX3drc190ZW1wbGF0ZSBhcyB3ZWxsLCBzbyBqdXN0IHB1dCBpdCBpbgorICAgICAgICAgICAgICAgICMgYSB2YXJpYWJsZSBhbmQgbGV0IHRoZSBtZXRhZGF0YSBkZWFsIHdpdGggdGhlIGRlcHMuCisgICAgICAgICAgICAgICAgZC5zZXRWYXIoJ19XS1NfVEVNUExBVEUnLCBib2R5KQorICAgICAgICAgICAgICAgIGJiLmJ1aWxkLmFkZHRhc2soJ2RvX3dyaXRlX3drc190ZW1wbGF0ZScsICdkb19pbWFnZV93aWMnLCBOb25lLCBkKQorfQogCiBFWFRSQV9JTUFHRUNNRCA9ICIiCiAKQEAgLTI2MiwyNSArMzIyLDM1IEBACiAgICAgd2ljIHdpYy5neiB3aWMuYnoyIHdpYy5sem1hIFwKICIKIAotQ09NUFJFU1NJT05UWVBFUyA9ICJneiBiejIgbHptYSB4eiBsejQgc3VtIG1kNXN1bSBzaGExc3VtIHNoYTIyNHN1bSBzaGEyNTZzdW0gc2hhMzg0c3VtIHNoYTUxMnN1bSIKLUNPTVBSRVNTX0NNRF9sem1hID0gImx6bWEgLWsgLWYgLTcgJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0iCi1DT01QUkVTU19DTURfZ3ogPSAiZ3ppcCAtZiAtOSAtYyAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSA+ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9Lmd6IgotQ09NUFJFU1NfQ01EX2J6MiA9ICJwYnppcDIgLWYgLWsgJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0iCi1DT01QUkVTU19DTURfeHogPSAieHogLWYgLWsgLWMgJHtYWl9DT01QUkVTU0lPTl9MRVZFTH0gJHtYWl9USFJFQURTfSAtLWNoZWNrPSR7WFpfSU5URUdSSVRZX0NIRUNLfSAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSA+ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9Lnh6IgotQ09NUFJFU1NfQ01EX2x6NCA9ICJsejRjIC05IC1jICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9ID4gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0ubHo0IgotQ09NUFJFU1NfQ01EX3N1bSA9ICJzdW10b29sIC1pICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9IC1vICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9LnN1bSAke0pGRlMyX1NVTV9FWFRSQV9BUkdTfSIKLUNPTVBSRVNTX0NNRF9tZDVzdW0gPSAibWQ1c3VtICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9ID4gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0ubWQ1c3VtIgotQ09NUFJFU1NfQ01EX3NoYTFzdW0gPSAic2hhMXN1bSAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSA+ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9LnNoYTFzdW0iCi1DT01QUkVTU19DTURfc2hhMjI0c3VtID0gInNoYTIyNHN1bSAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSA+ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9LnNoYTIyNHN1bSIKLUNPTVBSRVNTX0NNRF9zaGEyNTZzdW0gPSAic2hhMjU2c3VtICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9ID4gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0uc2hhMjU2c3VtIgotQ09NUFJFU1NfQ01EX3NoYTM4NHN1bSA9ICJzaGEzODRzdW0gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0gPiAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfS5zaGEzODRzdW0iCi1DT01QUkVTU19DTURfc2hhNTEyc3VtID0gInNoYTUxMnN1bSAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSA+ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9LnNoYTUxMnN1bSIKLUNPTVBSRVNTX0RFUEVORFNfbHptYSA9ICJ4ei1uYXRpdmUiCi1DT01QUkVTU19ERVBFTkRTX2d6ID0gIiIKLUNPTVBSRVNTX0RFUEVORFNfYnoyID0gInBiemlwMi1uYXRpdmUiCi1DT01QUkVTU19ERVBFTkRTX3h6ID0gInh6LW5hdGl2ZSIKLUNPTVBSRVNTX0RFUEVORFNfbHo0ID0gImx6NC1uYXRpdmUiCi1DT01QUkVTU19ERVBFTkRTX3N1bSA9ICJtdGQtdXRpbHMtbmF0aXZlIgorIyBDb21wcmVzc2lvbiBpcyBhIHNwZWNpYWwgY2FzZSBvZiBjb252ZXJzaW9uLiBUaGUgb2xkIHZhcmlhYmxlCisjIG5hbWVzIGFyZSBzdGlsbCBzdXBwb3J0ZWQgZm9yIGJhY2t3YXJkLWNvbXBhdGliaWxpdHkuIFdoZW4gZGVmaW5pbmcKKyMgbmV3IGNvbXByZXNzaW9uIG9yIGNvbnZlcnNpb24gY29tbWFuZHMsIHVzZSBDT05WRVJTSU9OVFlQRVMgYW5kCisjIENPTlZFUlNJT05fQ01EL0RFUEVORFMuCitDT01QUkVTU0lPTlRZUEVTID89ICIiCisKK0NPTlZFUlNJT05UWVBFUyA9ICJneiBiejIgbHptYSB4eiBsejQgemlwIHN1bSBtZDVzdW0gc2hhMXN1bSBzaGEyMjRzdW0gc2hhMjU2c3VtIHNoYTM4NHN1bSBzaGE1MTJzdW0gYm1hcCAke0NPTVBSRVNTSU9OVFlQRVN9IgorQ09OVkVSU0lPTl9DTURfbHptYSA9ICJsem1hIC1rIC1mIC03ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9IgorQ09OVkVSU0lPTl9DTURfZ3ogPSAiZ3ppcCAtZiAtOSAtYyAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSA+ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9Lmd6IgorQ09OVkVSU0lPTl9DTURfYnoyID0gInBiemlwMiAtZiAtayAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSIKK0NPTlZFUlNJT05fQ01EX3h6ID0gInh6IC1mIC1rIC1jICR7WFpfQ09NUFJFU1NJT05fTEVWRUx9ICR7WFpfVEhSRUFEU30gLS1jaGVjaz0ke1haX0lOVEVHUklUWV9DSEVDS30gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0gPiAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfS54eiIKK0NPTlZFUlNJT05fQ01EX2x6NCA9ICJsejRjIC05IC1jICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9ID4gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0ubHo0IgorQ09OVkVSU0lPTl9DTURfemlwID0gInppcCAke1pJUF9DT01QUkVTU0lPTl9MRVZFTH0gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0uemlwICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9IgorQ09OVkVSU0lPTl9DTURfc3VtID0gInN1bXRvb2wgLWkgJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0gLW8gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0uc3VtICR7SkZGUzJfU1VNX0VYVFJBX0FSR1N9IgorQ09OVkVSU0lPTl9DTURfbWQ1c3VtID0gIm1kNXN1bSAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSA+ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9Lm1kNXN1bSIKK0NPTlZFUlNJT05fQ01EX3NoYTFzdW0gPSAic2hhMXN1bSAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSA+ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9LnNoYTFzdW0iCitDT05WRVJTSU9OX0NNRF9zaGEyMjRzdW0gPSAic2hhMjI0c3VtICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9ID4gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0uc2hhMjI0c3VtIgorQ09OVkVSU0lPTl9DTURfc2hhMjU2c3VtID0gInNoYTI1NnN1bSAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSA+ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9LnNoYTI1NnN1bSIKK0NPTlZFUlNJT05fQ01EX3NoYTM4NHN1bSA9ICJzaGEzODRzdW0gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0gPiAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfS5zaGEzODRzdW0iCitDT05WRVJTSU9OX0NNRF9zaGE1MTJzdW0gPSAic2hhNTEyc3VtICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9ID4gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0uc2hhNTEyc3VtIgorQ09OVkVSU0lPTl9DTURfYm1hcCA9ICJibWFwdG9vbCBjcmVhdGUgJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0gLW8gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0uYm1hcCIKK0NPTlZFUlNJT05fREVQRU5EU19sem1hID0gInh6LW5hdGl2ZSIKK0NPTlZFUlNJT05fREVQRU5EU19neiA9ICIiCitDT05WRVJTSU9OX0RFUEVORFNfYnoyID0gInBiemlwMi1uYXRpdmUiCitDT05WRVJTSU9OX0RFUEVORFNfeHogPSAieHotbmF0aXZlIgorQ09OVkVSU0lPTl9ERVBFTkRTX2x6NCA9ICJsejQtbmF0aXZlIgorQ09OVkVSU0lPTl9ERVBFTkRTX3ppcCA9ICJ6aXAtbmF0aXZlIgorQ09OVkVSU0lPTl9ERVBFTkRTX3N1bSA9ICJtdGQtdXRpbHMtbmF0aXZlIgorQ09OVkVSU0lPTl9ERVBFTkRTX2JtYXAgPSAiYm1hcC10b29scy1uYXRpdmUiCiAKIFJVTk5BQkxFX0lNQUdFX1RZUEVTID89ICJleHQyIGV4dDMgZXh0NCIKIFJVTk5BQkxFX01BQ0hJTkVfUEFUVEVSTlMgPz0gInFlbXUiCkBAIC0yOTYsNCArMzY2LDQgQEAKIAogIyBUaGUgV0lDVkFSUyB2YXJpYWJsZSBpcyB1c2VkIHRvIGRlZmluZSBsaXN0IG9mIGJpdGJha2UgdmFyaWFibGVzIHVzZWQgaW4gd2ljIGNvZGUKICMgdmFyaWFibGVzIGZyb20gdGhpcyBsaXN0IGlzIHdyaXR0ZW4gdG8gPGltYWdlPi5lbnYgZmlsZQotV0lDVkFSUyA/PSAiQkJMQVlFUlMgREVQTE9ZX0RJUl9JTUFHRSBIRERESVIgSU1BR0VfQkFTRU5BTUUgSU1BR0VfQk9PVF9GSUxFUyBJTUFHRV9MSU5LX05BTUUgSU1BR0VfUk9PVEZTIElOSVRSQU1GU19GU1RZUEVTIElOSVRSRCBJU09ESVIgTUFDSElORV9BUkNIIFJPT1RGU19TSVpFIFNUQUdJTkdfREFUQURJUiBTVEFHSU5HX0RJUl9OQVRJVkUgU1RBR0lOR19MSUJESVIgVEFSR0VUX1NZUyIKK1dJQ1ZBUlMgPz0gIkJCTEFZRVJTIElNR0RFUExPWURJUiBERVBMT1lfRElSX0lNQUdFIEhERERJUiBJTUFHRV9CQVNFTkFNRSBJTUFHRV9CT09UX0ZJTEVTIElNQUdFX0xJTktfTkFNRSBJTUFHRV9ST09URlMgSU5JVFJBTUZTX0ZTVFlQRVMgSU5JVFJEIElTT0RJUiBNQUNISU5FX0FSQ0ggUk9PVEZTX1NJWkUgU1RBR0lOR19EQVRBRElSIFNUQUdJTkdfRElSX05BVElWRSBTVEFHSU5HX0xJQkRJUiBUQVJHRVRfU1lTIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZV90eXBlc191Ym9vdC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZV90eXBlc191Ym9vdC5iYmNsYXNzCmluZGV4IDE5ZTRhYTIuLjZjOGMxZmYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXNfdWJvb3QuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlX3R5cGVzX3Vib290LmJiY2xhc3MKQEAgLTIsMjUgKzIsMjUgQEAKIAogb2VfbWtpbWFnZSAoKSB7CiAgICAgbWtpbWFnZSAtQSAke1VCT09UX0FSQ0h9IC1PIGxpbnV4IC1UIHJhbWRpc2sgLUMgJDIgLW4gJHtJTUFHRV9OQU1FfSBcCi0gICAgICAgIC1kICR7REVQTE9ZX0RJUl9JTUFHRX0vJDEgJHtERVBMT1lfRElSX0lNQUdFfS8kMS51LWJvb3QKKyAgICAgICAgLWQgJHtJTUdERVBMT1lESVJ9LyQxICR7SU1HREVQTE9ZRElSfS8kMS51LWJvb3QKICAgICBpZiBbIHgkMyA9IHgiY2xlYW4iIF07IHRoZW4KICAgICAgICAgcm0gJDEKICAgICBmaQogfQogCi1DT01QUkVTU0lPTlRZUEVTICs9ICJnei51LWJvb3QgYnoyLnUtYm9vdCBsem1hLnUtYm9vdCB1LWJvb3QiCitDT05WRVJTSU9OVFlQRVMgKz0gImd6LnUtYm9vdCBiejIudS1ib290IGx6bWEudS1ib290IHUtYm9vdCIKIAotQ09NUFJFU1NfREVQRU5EU191LWJvb3QgPSAidS1ib290LW1raW1hZ2UtbmF0aXZlIgotQ09NUFJFU1NfQ01EX3UtYm9vdCAgICAgID0gIm9lX21raW1hZ2UgJHtJTUFHRV9OQU1FfS5yb290ZnMuJHt0eXBlfSBub25lIgorQ09OVkVSU0lPTl9ERVBFTkRTX3UtYm9vdCA9ICJ1LWJvb3QtbWtpbWFnZS1uYXRpdmUiCitDT05WRVJTSU9OX0NNRF91LWJvb3QgICAgICA9ICJvZV9ta2ltYWdlICR7SU1BR0VfTkFNRX0ucm9vdGZzLiR7dHlwZX0gbm9uZSIKIAotQ09NUFJFU1NfREVQRU5EU19nei51LWJvb3QgPSAidS1ib290LW1raW1hZ2UtbmF0aXZlIgotQ09NUFJFU1NfQ01EX2d6LnUtYm9vdCAgICAgID0gIiR7Q09NUFJFU1NfQ01EX2d6fTsgb2VfbWtpbWFnZSAke0lNQUdFX05BTUV9LnJvb3Rmcy4ke3R5cGV9Lmd6IGd6aXAgY2xlYW4iCitDT05WRVJTSU9OX0RFUEVORFNfZ3oudS1ib290ID0gInUtYm9vdC1ta2ltYWdlLW5hdGl2ZSIKK0NPTlZFUlNJT05fQ01EX2d6LnUtYm9vdCAgICAgID0gIiR7Q09OVkVSU0lPTl9DTURfZ3p9OyBvZV9ta2ltYWdlICR7SU1BR0VfTkFNRX0ucm9vdGZzLiR7dHlwZX0uZ3ogZ3ppcCBjbGVhbiIKIAotQ09NUFJFU1NfREVQRU5EU19iejIudS1ib290ID0gInUtYm9vdC1ta2ltYWdlLW5hdGl2ZSIKLUNPTVBSRVNTX0NNRF9iejIudS1ib290ICAgICAgPSAiJHtDT01QUkVTU19DTURfYnoyfTsgb2VfbWtpbWFnZSAke0lNQUdFX05BTUV9LnJvb3Rmcy4ke3R5cGV9LmJ6MiBiemlwMiBjbGVhbiIKK0NPTlZFUlNJT05fREVQRU5EU19iejIudS1ib290ID0gInUtYm9vdC1ta2ltYWdlLW5hdGl2ZSIKK0NPTlZFUlNJT05fQ01EX2J6Mi51LWJvb3QgICAgICA9ICIke0NPTlZFUlNJT05fQ01EX2J6Mn07IG9lX21raW1hZ2UgJHtJTUFHRV9OQU1FfS5yb290ZnMuJHt0eXBlfS5iejIgYnppcDIgY2xlYW4iCiAKLUNPTVBSRVNTX0RFUEVORFNfbHptYS51LWJvb3QgPSAidS1ib290LW1raW1hZ2UtbmF0aXZlIgotQ09NUFJFU1NfQ01EX2x6bWEudS1ib290ICAgICAgPSAiJHtDT01QUkVTU19DTURfbHptYX07IG9lX21raW1hZ2UgJHtJTUFHRV9OQU1FfS5yb290ZnMuJHt0eXBlfS5sem1hIGx6bWEgY2xlYW4iCitDT05WRVJTSU9OX0RFUEVORFNfbHptYS51LWJvb3QgPSAidS1ib290LW1raW1hZ2UtbmF0aXZlIgorQ09OVkVSU0lPTl9DTURfbHptYS51LWJvb3QgICAgICA9ICIke0NPTlZFUlNJT05fQ01EX2x6bWF9OyBvZV9ta2ltYWdlICR7SU1BR0VfTkFNRX0ucm9vdGZzLiR7dHlwZX0ubHptYSBsem1hIGNsZWFuIgogCiBJTUFHRV9UWVBFUyArPSAiZXh0Mi51LWJvb3QgZXh0Mi5nei51LWJvb3QgZXh0Mi5iejIudS1ib290IGV4dDIubHptYS51LWJvb3QgZXh0My5nei51LWJvb3QgZXh0NC5nei51LWJvb3QgY3Bpby5nei51LWJvb3QiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW5zYW5lLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2luc2FuZS5iYmNsYXNzCmluZGV4IGM1N2IyMTcuLjFkNzM3NzggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW5zYW5lLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbnNhbmUuYmJjbGFzcwpAQCAtNTQsOCArNTQsOCBAQAogIyBmZWVsIGZyZWUgdG8gYWRkIGFuZCBjb3JyZWN0LgogIwogIyAgICAgICAgICAgVEFSR0VUX09TICBUQVJHRVRfQVJDSCAgIE1BQ0hJTkUsIE9TQUJJLCBBQklWRVJTSU9OLCBMaXR0bGUgRW5kaWFuLCAzMmJpdD8KLWRlZiBwYWNrYWdlX3FhX2dldF9tYWNoaW5lX2RpY3QoKToKLSAgICByZXR1cm4geworZGVmIHBhY2thZ2VfcWFfZ2V0X21hY2hpbmVfZGljdChkKToKKyAgICBtYWNoZGF0YSA9IHsKICAgICAgICAgICAgICJkYXJ3aW45IiA6IHsgCiAgICAgICAgICAgICAgICAgICAgICAgICAiYXJtIiA6ICAgICAgICg0MCwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICB9LApAQCAtNjYsNiArNjYsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgImk1ODYiIDogICAgICAoMywgICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAieDg2XzY0IjogICAgICg2MiwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDY0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICJlcGlwaGFueSI6ICAgKDQ2NDMsICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHMiOiAgICAgICAoIDgsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAibWlwc2VsIjogICAgICggOCwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgImxpbnV4IiA6IHsgCiAgICAgICAgICAgICAgICAgICAgICAgICAiYWFyY2g2NCIgOiAgICgxODMsICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDY0KSwKQEAgLTg3LDYgKzg5LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAibWlwc2VsIjogICAgICggOCwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzNjQiOiAgICAgKCA4LCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgNjQpLAogICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHM2NGVsIjogICAoIDgsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCisgICAgICAgICAgICAgICAgICAgICAgICAibWlwc2lzYTMycjYiOiAgICggOCwgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzaXNhMzJyNmVsIjogKCA4LCAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHNpc2E2NHI2IjogICAoIDgsICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICA2NCksCisgICAgICAgICAgICAgICAgICAgICAgICAibWlwc2lzYTY0cjZlbCI6ICggOCwgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDY0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICJuaW9zMiI6ICAgICAgKDExMywgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgInMzOTAiOiAgICAgICAoMjIsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAic2g0IjogICAgICAgICg0MiwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKQEAgLTE2OCwxOCArMTc0LDMyIEBACiAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgfQogCisgICAgIyBBZGQgaW4gYW55IGV4dHJhIHVzZXIgc3VwcGxpZWQgZGF0YSB3aGljaCBtYXkgY29tZSBmcm9tIGEgQlNQIGxheWVyLCByZW1vdmluZyB0aGUKKyAgICAjIG5lZWQgdG8gYWx3YXlzIGNoYW5nZSB0aGlzIGNsYXNzIGRpcmVjdGx5CisgICAgZXh0cmFfbWFjaGRhdGEgPSAoZC5nZXRWYXIoIlBBQ0tBR0VRQV9FWFRSQV9NQUNIREVGRlVOQ1MiLCBUcnVlKSBvciAiIikuc3BsaXQoKQorICAgIGZvciBtIGluIGV4dHJhX21hY2hkYXRhOgorICAgICAgICBjYWxsID0gbSArICIobWFjaGRhdGEsIGQpIgorICAgICAgICBsb2NzID0geyAibWFjaGRhdGEiIDogbWFjaGRhdGEsICJkIiA6IGR9CisgICAgICAgIG1hY2hkYXRhID0gYmIudXRpbHMuYmV0dGVyX2V2YWwoY2FsbCwgbG9jcykKIAotZGVmIHBhY2thZ2VfcWFfY2xlYW5fcGF0aChwYXRoLGQpOgotICAgICIiIiBSZW1vdmUgdGhlIGNvbW1vbiBwcmVmaXggZnJvbSB0aGUgcGF0aC4gSW4gdGhpcyBjYXNlIGl0IGlzIHRoZSBUTVBESVIiIiIKLSAgICByZXR1cm4gcGF0aC5yZXBsYWNlKGQuZ2V0VmFyKCJUTVBESVIiLCBUcnVlKSArICIvIiwgIiIpCisgICAgcmV0dXJuIG1hY2hkYXRhCisKKworZGVmIHBhY2thZ2VfcWFfY2xlYW5fcGF0aChwYXRoLCBkLCBwa2c9Tm9uZSk6CisgICAgIiIiCisgICAgUmVtb3ZlIHJlZHVuZGFudCBwYXRocyBmcm9tIHRoZSBwYXRoIGZvciBkaXNwbGF5LiAgSWYgcGtnIGlzbid0IHNldCB0aGVuCisgICAgVE1QRElSIGlzIHN0cmlwcGVkLCBvdGhlcndpc2UgUEtHREVTVC9wa2cgaXMgc3RyaXBwZWQuCisgICAgIiIiCisgICAgaWYgcGtnOgorICAgICAgICBwYXRoID0gcGF0aC5yZXBsYWNlKG9zLnBhdGguam9pbihkLmdldFZhcigiUEtHREVTVCIsIFRydWUpLCBwa2cpLCAiLyIpCisgICAgcmV0dXJuIHBhdGgucmVwbGFjZShkLmdldFZhcigiVE1QRElSIiwgVHJ1ZSksICIvIikucmVwbGFjZSgiLy8iLCAiLyIpCiAKIGRlZiBwYWNrYWdlX3FhX3dyaXRlX2Vycm9yKHR5cGUsIGVycm9yLCBkKToKICAgICBsb2dmaWxlID0gZC5nZXRWYXIoJ1FBX0xPR0ZJTEUnLCBUcnVlKQogICAgIGlmIGxvZ2ZpbGU6CiAgICAgICAgIHAgPSBkLmdldFZhcignUCcsIFRydWUpCi0gICAgICAgIGYgPSBmaWxlKCBsb2dmaWxlLCAiYSsiKQotICAgICAgICBwcmludCA+PiBmLCAiJXM6ICVzIFslc10iICUgKHAsIGVycm9yLCB0eXBlKQotICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgd2l0aCBvcGVuKGxvZ2ZpbGUsICJhKyIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKCIlczogJXMgWyVzXVxuIiAlIChwLCBlcnJvciwgdHlwZSkpCiAKIGRlZiBwYWNrYWdlX3FhX2hhbmRsZV9lcnJvcihlcnJvcl9jbGFzcywgZXJyb3JfbXNnLCBkKToKICAgICBwYWNrYWdlX3FhX3dyaXRlX2Vycm9yKGVycm9yX2NsYXNzLCBlcnJvcl9tc2csIGQpCkBAIC00MDAsNyArNDIwLDcgQEAKICAgICAgICAgc3lzcm9vdF9wYXRoX3VzciA9IHN5c3Jvb3RfcGF0aCArIGV4ZWNfcHJlZml4CiAKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgbGRkX291dHB1dCA9IGJiLnByb2Nlc3MuUG9wZW4oWyJwcmVsaW5rLXJ0bGQiLCAiLS1yb290Iiwgc3lzcm9vdF9wYXRoLCBwYXRoXSwgc3Rkb3V0PXN1Yi5QSVBFKS5zdGRvdXQucmVhZCgpCisgICAgICAgICAgICBsZGRfb3V0cHV0ID0gYmIucHJvY2Vzcy5Qb3BlbihbInByZWxpbmstcnRsZCIsICItLXJvb3QiLCBzeXNyb290X3BhdGgsIHBhdGhdLCBzdGRvdXQ9c3ViLlBJUEUpLnN0ZG91dC5yZWFkKCkuZGVjb2RlKCJ1dGYtOCIpCiAgICAgICAgIGV4Y2VwdCBiYi5wcm9jZXNzLkNtZEVycm9yOgogICAgICAgICAgICAgZXJyb3JfbXNnID0gcG4gKyAiOiBwcmVsaW5rLXJ0bGQgYWJvcnRlZCB3aGVuIHByb2Nlc3NpbmcgJXMiICUgcGF0aAogICAgICAgICAgICAgcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoInVuc2FmZS1yZWZlcmVuY2VzLWluLWJpbmFyaWVzIiwgZXJyb3JfbXNnLCBkKQpAQCAtNDk1LDYgKzUxNSw4IEBACiAgICAgIiIiCiAgICAgQ2hlY2sgaWYgYXJjaHMgYXJlIGNvbXBhdGlibGUKICAgICAiIiIKKyAgICBpbXBvcnQgcmUKKwogICAgIGlmIG5vdCBlbGY6CiAgICAgICAgIHJldHVybgogCkBAIC01MjAsMTUgKzU0MiwxNSBAQAogCiAgICAgI2lmIHRoaXMgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24sIHRoZW4gZml4IHRoZSBkaWN0IGFib3ZlCiAgICAgKG1hY2hpbmUsIG9zYWJpLCBhYml2ZXJzaW9uLCBsaXR0bGVlbmRpYW4sIGJpdHMpIFwKLSAgICAgICAgPSBwYWNrYWdlX3FhX2dldF9tYWNoaW5lX2RpY3QoKVt0YXJnZXRfb3NdW3RhcmdldF9hcmNoXQorICAgICAgICA9IHBhY2thZ2VfcWFfZ2V0X21hY2hpbmVfZGljdChkKVt0YXJnZXRfb3NdW3RhcmdldF9hcmNoXQogCiAgICAgIyBDaGVjayB0aGUgYXJjaGl0ZWN0dXJlIGFuZCBlbmRpYW5uZXMgb2YgdGhlIGJpbmFyeQotICAgIGlmIG5vdCAoKG1hY2hpbmUgPT0gZWxmLm1hY2hpbmUoKSkgb3IgXAotICAgICAgICAoKCgidmlydHVhbC9rZXJuZWwiIGluIHByb3ZpZGVzKSBvciBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCJtb2R1bGUiLCBkKSApIGFuZCAodGFyZ2V0X29zID09ICJsaW51eC1nbnV4MzIiIG9yIHRhcmdldF9vcyA9PSAibGludXgtZ251bjMyIikpKToKLSAgICAgICAgcGFja2FnZV9xYV9hZGRfbWVzc2FnZShtZXNzYWdlcywgImFyY2giLCAiQXJjaGl0ZWN0dXJlIGRpZCBub3QgbWF0Y2ggKCVkIHRvICVkKSBvbiAlcyIgJSBcCi0gICAgICAgICAgICAgICAgIChtYWNoaW5lLCBlbGYubWFjaGluZSgpLCBwYWNrYWdlX3FhX2NsZWFuX3BhdGgocGF0aCxkKSkpCi0gICAgZWxpZiBub3QgKChiaXRzID09IGVsZi5hYmlTaXplKCkpIG9yICBcCi0gICAgICAgICgoKCJ2aXJ0dWFsL2tlcm5lbCIgaW4gcHJvdmlkZXMpIG9yIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoIm1vZHVsZSIsIGQpICkgYW5kICh0YXJnZXRfb3MgPT0gImxpbnV4LWdudXgzMiIgb3IgdGFyZ2V0X29zID09ICJsaW51eC1nbnVuMzIiKSkpOgorICAgIGlzXzMyID0gKCgidmlydHVhbC9rZXJuZWwiIGluIHByb3ZpZGVzKSBvciBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCJtb2R1bGUiLCBkKSkgYW5kIFwKKyAgICAgICAgICAgICh0YXJnZXRfb3MgPT0gImxpbnV4LWdudXgzMiIgb3IgcmUubWF0Y2goJ21pcHM2NC4qMzInLCBkLmdldFZhcignREVGQVVMVFRVTkUnLCBUcnVlKSkpCisgICAgaWYgbm90ICgobWFjaGluZSA9PSBlbGYubWFjaGluZSgpKSBvciBpc18zMik6CisgICAgICAgIHBhY2thZ2VfcWFfYWRkX21lc3NhZ2UobWVzc2FnZXMsICJhcmNoIiwgIkFyY2hpdGVjdHVyZSBkaWQgbm90IG1hdGNoICglcywgZXhwZWN0ZWQgJXMpIG9uICVzIiAlIFwKKyAgICAgICAgICAgICAgICAgKG9lLnFhLmVsZl9tYWNoaW5lX3RvX3N0cmluZyhlbGYubWFjaGluZSgpKSwgb2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKG1hY2hpbmUpLCBwYWNrYWdlX3FhX2NsZWFuX3BhdGgocGF0aCxkKSkpCisgICAgZWxpZiBub3QgKChiaXRzID09IGVsZi5hYmlTaXplKCkpIG9yIGlzXzMyKToKICAgICAgICAgcGFja2FnZV9xYV9hZGRfbWVzc2FnZShtZXNzYWdlcywgImFyY2giLCAiQml0IHNpemUgZGlkIG5vdCBtYXRjaCAoJWQgdG8gJWQpICVzIG9uICVzIiAlIFwKICAgICAgICAgICAgICAgICAgKGJpdHMsIGVsZi5hYmlTaXplKCksIGJwbiwgcGFja2FnZV9xYV9jbGVhbl9wYXRoKHBhdGgsZCkpKQogICAgIGVsaWYgbm90IGxpdHRsZWVuZGlhbiA9PSBlbGYuaXNMaXR0bGVFbmRpYW4oKToKQEAgLTY3MiwyMyArNjk0LDI0IEBACiAgICAgICAgICAgICAgICAgdHJpbW1lZCA9IHBhdGgucmVwbGFjZShvcy5wYXRoLmpvaW4gKGQuZ2V0VmFyKCJQS0dERVNUIiwgVHJ1ZSksIG5hbWUpLCAiIikKICAgICAgICAgICAgICAgICBwYWNrYWdlX3FhX2FkZF9tZXNzYWdlKG1lc3NhZ2VzLCAic3ltbGluay10by1zeXNyb290IiwgIlN5bWxpbmsgJXMgaW4gJXMgcG9pbnRzIHRvIFRNUERJUiIgJSAodHJpbW1lZCwgbmFtZSkpCiAKLWRlZiBwYWNrYWdlX3FhX2NoZWNrX2xpY2Vuc2Uod29ya2RpciwgZCk6CisjIENoZWNrIGxpY2Vuc2UgdmFyaWFibGVzCitkb19wb3B1bGF0ZV9saWNbcG9zdGZ1bmNzXSArPSAicG9wdWxhdGVfbGljX3FhX2NoZWNrc3VtIgorcHl0aG9uIHBvcHVsYXRlX2xpY19xYV9jaGVja3N1bSgpIHsKICAgICAiIiIKLSAgICBDaGVjayBmb3IgY2hhbmdlcyBpbiB0aGUgbGljZW5zZSBmaWxlcyAKKyAgICBDaGVjayBmb3IgY2hhbmdlcyBpbiB0aGUgbGljZW5zZSBmaWxlcy4KICAgICAiIiIKICAgICBpbXBvcnQgdGVtcGZpbGUKICAgICBzYW5lID0gVHJ1ZQogCi0gICAgbGljX2ZpbGVzID0gZC5nZXRWYXIoJ0xJQ19GSUxFU19DSEtTVU0nLCBUcnVlKQorICAgIGxpY19maWxlcyA9IGQuZ2V0VmFyKCdMSUNfRklMRVNfQ0hLU1VNJywgVHJ1ZSkgb3IgJycKICAgICBsaWMgPSBkLmdldFZhcignTElDRU5TRScsIFRydWUpCiAgICAgcG4gPSBkLmdldFZhcignUE4nLCBUcnVlKQogCiAgICAgaWYgbGljID09ICJDTE9TRUQiOgogICAgICAgICByZXR1cm4KIAotICAgIGlmIG5vdCBsaWNfZmlsZXM6Ci0gICAgICAgIHBhY2thZ2VfcWFfaGFuZGxlX2Vycm9yKCJsaWNlbnNlLWNoZWNrc3VtIiwgcG4gKyAiOiBSZWNpcGUgZmlsZSBkb2VzIG5vdCBoYXZlIGxpY2Vuc2UgZmlsZSBpbmZvcm1hdGlvbiAoTElDX0ZJTEVTX0NIS1NVTSkiLCBkKQotICAgICAgICByZXR1cm4KKyAgICBpZiBub3QgbGljX2ZpbGVzIGFuZCBkLmdldFZhcignU1JDX1VSSScsIFRydWUpOgorICAgICAgICBzYW5lID0gcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoImxpY2Vuc2UtY2hlY2tzdW0iLCBwbiArICI6IFJlY2lwZSBmaWxlIGZldGNoZXMgZmlsZXMgYW5kIGRvZXMgbm90IGhhdmUgbGljZW5zZSBmaWxlIGluZm9ybWF0aW9uIChMSUNfRklMRVNfQ0hLU1VNKSIsIGQpCiAKICAgICBzcmNkaXIgPSBkLmdldFZhcignUycsIFRydWUpCiAKQEAgLTY5Niw3ICs3MTksNyBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICAodHlwZSwgaG9zdCwgcGF0aCwgdXNlciwgcHN3ZCwgcGFybSkgPSBiYi5mZXRjaC5kZWNvZGV1cmwodXJsKQogICAgICAgICBleGNlcHQgYmIuZmV0Y2guTWFsZm9ybWVkVXJsOgotICAgICAgICAgICAgcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoImxpY2Vuc2UtY2hlY2tzdW0iLCBwbiArICI6IExJQ19GSUxFU19DSEtTVU0gY29udGFpbnMgYW4gaW52YWxpZCBVUkw6ICIgKyB1cmwsIGQpCisgICAgICAgICAgICBzYW5lID0gcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoImxpY2Vuc2UtY2hlY2tzdW0iLCBwbiArICI6IExJQ19GSUxFU19DSEtTVU0gY29udGFpbnMgYW4gaW52YWxpZCBVUkw6ICIgKyB1cmwsIGQpCiAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBzcmNsaWNmaWxlID0gb3MucGF0aC5qb2luKHNyY2RpciwgcGF0aCkKICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKHNyY2xpY2ZpbGUpOgpAQCAtNzIwLDcgKzc0Myw3IEBACiAgICAgICAgICAgICBsaW5lc291dCA9IDAKICAgICAgICAgICAgIGZvciBsaW5lIGluIGZpOgogICAgICAgICAgICAgICAgIGxpbmVubyArPSAxCi0gICAgICAgICAgICAgICAgaWYgKGxpbmVubyA+PSBiZWdpbmxpbmUpOiAKKyAgICAgICAgICAgICAgICBpZiAobGluZW5vID49IGJlZ2lubGluZSk6CiAgICAgICAgICAgICAgICAgICAgIGlmICgobGluZW5vIDw9IGVuZGxpbmUpIG9yIG5vdCBlbmRsaW5lKToKICAgICAgICAgICAgICAgICAgICAgICAgIGZvLndyaXRlKGxpbmUpCiAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lc291dCArPSAxCkBAIC03NTIsNyArNzc1LDExIEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIG1zZyA9IHBuICsgIjogTElDX0ZJTEVTX0NIS1NVTSBpcyBub3Qgc3BlY2lmaWVkIGZvciAiICsgIHVybAogICAgICAgICAgICAgICAgIG1zZyA9IG1zZyArICJcbiIgKyBwbiArICI6IFRoZSBtZDUgY2hlY2tzdW0gaXMgIiArIG1kNWNoa3N1bQotICAgICAgICAgICAgcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoImxpY2Vuc2UtY2hlY2tzdW0iLCBtc2csIGQpCisgICAgICAgICAgICBzYW5lID0gcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoImxpY2Vuc2UtY2hlY2tzdW0iLCBtc2csIGQpCisKKyAgICBpZiBub3Qgc2FuZToKKyAgICAgICAgYmIuZmF0YWwoIkZhdGFsIFFBIGVycm9ycyBmb3VuZCwgZmFpbGluZyB0YXNrLiIpCit9CiAKIGRlZiBwYWNrYWdlX3FhX2NoZWNrX3N0YWdlZChwYXRoLGQpOgogICAgICIiIgpAQCAtOTg0LDEyICsxMDExLDEyIEBACiAgICAgcmV0dXJuIHNhbmUKIAogZGVmIHBhY2thZ2VfcWFfY2hlY2tfZW5jb2Rpbmcoa2V5cywgZW5jb2RlLCBkKToKLSAgICBkZWYgY2hlY2tfZW5jb2Rpbmcoa2V5LGVuYyk6CisgICAgZGVmIGNoZWNrX2VuY29kaW5nKGtleSwgZW5jKToKICAgICAgICAgc2FuZSA9IFRydWUKICAgICAgICAgdmFsdWUgPSBkLmdldFZhcihrZXksIFRydWUpCiAgICAgICAgIGlmIHZhbHVlOgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHMgPSB1bmljb2RlKHZhbHVlLCBlbmMpCisgICAgICAgICAgICAgICAgcyA9IHZhbHVlLmVuY29kZShlbmMpCiAgICAgICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgZXJyb3JfbXNnID0gIiVzIGhhcyBub24gJXMgY2hhcmFjdGVycyIgJSAoa2V5LGVuYykKICAgICAgICAgICAgICAgICBzYW5lID0gRmFsc2UKQEAgLTEyMDgsMTIgKzEyMzUsNiBAQAogTWlzc2luZyBpbmhlcml0IGdldHRleHQ/IiIiICUgKGd0LCBjb25maWcpKQogCiAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gICAgIyBDaGVjayBsaWNlbnNlIHZhcmlhYmxlcwotICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0gICAgcGFja2FnZV9xYV9jaGVja19saWNlbnNlKHdvcmtkaXIsIGQpCi0KLSAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAjIENoZWNrIHVucmVjb2duaXNlZCBjb25maWd1cmUgb3B0aW9ucyAod2l0aCBhIHdoaXRlIGxpc3QpCiAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygiYXV0b3Rvb2xzIiwgZCk6CkBAIC0xMjIxLDcgKzEyNDIsNyBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmbGFnID0gIldBUk5JTkc6IHVucmVjb2duaXplZCBvcHRpb25zOiIKICAgICAgICAgICAgIGxvZyA9IG9zLnBhdGguam9pbihkLmdldFZhcignQicsIFRydWUpLCAnY29uZmlnLmxvZycpCi0gICAgICAgICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbJ2dyZXAnLCAnLUYnLCBmbGFnLCBsb2ddKS5yZXBsYWNlKCcsICcsICcgJykKKyAgICAgICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsnZ3JlcCcsICctRicsIGZsYWcsIGxvZ10pLmRlY29kZSgidXRmLTgiKS5yZXBsYWNlKCcsICcsICcgJykKICAgICAgICAgICAgIG9wdGlvbnMgPSBzZXQoKQogICAgICAgICAgICAgZm9yIGxpbmUgaW4gb3V0cHV0LnNwbGl0bGluZXMoKToKICAgICAgICAgICAgICAgICBvcHRpb25zIHw9IHNldChsaW5lLnBhcnRpdGlvbihmbGFnKVsyXS5zcGxpdCgpKQpAQCAtMTI1MCwxMCArMTI3MSw5IEBACiB9CiAKIHB5dGhvbiBkb19xYV91bnBhY2soKSB7Ci0gICAgYmIubm90ZSgiQ2hlY2tpbmcgaGFzICR7U30gYmVlbiBjcmVhdGVkIikKLQorICAgIHNyY191cmkgPSBkLmdldFZhcignU1JDX1VSSScsIFRydWUpCiAgICAgc19kaXIgPSBkLmdldFZhcignUycsIFRydWUpCi0gICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNfZGlyKToKKyAgICBpZiBzcmNfdXJpIGFuZCBub3Qgb3MucGF0aC5leGlzdHMoc19kaXIpOgogICAgICAgICBiYi53YXJuKCclczogdGhlIGRpcmVjdG9yeSAlcyAoJXMpIHBvaW50ZWQgdG8gYnkgdGhlIFMgdmFyaWFibGUgZG9lc25cJ3QgZXhpc3QgLSBwbGVhc2Ugc2V0IFMgd2l0aGluIHRoZSByZWNpcGUgdG8gcG9pbnQgdG8gd2hlcmUgdGhlIHNvdXJjZSBoYXMgYmVlbiB1bnBhY2tlZCB0bycgJSAoZC5nZXRWYXIoJ1BOJywgVHJ1ZSksIGQuZ2V0VmFyKCdTJywgRmFsc2UpLCBzX2RpcikpCiB9CiAKQEAgLTEyNjEsOCArMTI4MSw4IEBACiAjYWRkdGFzayBxYV9zdGFnaW5nIGFmdGVyIGRvX3BvcHVsYXRlX3N5c3Jvb3QgYmVmb3JlIGRvX2J1aWxkCiBkb19wb3B1bGF0ZV9zeXNyb290W3Bvc3RmdW5jc10gKz0gImRvX3FhX3N0YWdpbmcgIgogCi0jIENoZWNrIGJyb2tlbiBjb25maWcubG9nIGZpbGVzLCBmb3IgcGFja2FnZXMgcmVxdWlyaW5nIEdldHRleHQgd2hpY2ggZG9uJ3QKLSMgaGF2ZSBpdCBpbiBERVBFTkRTIGFuZCBmb3IgY29ycmVjdCBMSUNfRklMRVNfQ0hLU1VNCisjIENoZWNrIGJyb2tlbiBjb25maWcubG9nIGZpbGVzLCBmb3IgcGFja2FnZXMgcmVxdWlyaW5nIEdldHRleHQgd2hpY2gKKyMgZG9uJ3QgaGF2ZSBpdCBpbiBERVBFTkRTLgogI2FkZHRhc2sgcWFfY29uZmlndXJlIGFmdGVyIGRvX2NvbmZpZ3VyZSBiZWZvcmUgZG9fY29tcGlsZQogZG9fY29uZmlndXJlW3Bvc3RmdW5jc10gKz0gImRvX3FhX2NvbmZpZ3VyZSAiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWFyY2guYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWFyY2guYmJjbGFzcwppbmRleCAzZWQ1OTg2Li5lYTk3NmM2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1hcmNoLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtYXJjaC5iYmNsYXNzCkBAIC0xNCw3ICsxNCw3IEBACiAgICAgICAgICAgICAgICBwYXJpc2MgczM5MCAgdjg1MCBcCiAgICAgICAgICAgICAgICBhdnIzMiBibGFja2ZpbiBcCiAgICAgICAgICAgICAgICBtaWNyb2JsYXplIFwKLSAgICAgICAgICAgICAgIG5pb3MyIgorICAgICAgICAgICAgICAgbmlvczIgYXJjIHh0ZW5zYSIKIAogZGVmIG1hcF9rZXJuZWxfYXJjaChhLCBkKToKICAgICBpbXBvcnQgcmUKQEAgLTI1LDcgKzI1LDcgQEAKICAgICBlbGlmIHJlLm1hdGNoKCdhcm1lYiQnLCBhKTogICAgICAgICAgICAgICAgIHJldHVybiAnYXJtJwogICAgIGVsaWYgcmUubWF0Y2goJ2FhcmNoNjQkJywgYSk6ICAgICAgICAgICAgICAgcmV0dXJuICdhcm02NCcKICAgICBlbGlmIHJlLm1hdGNoKCdhYXJjaDY0X2JlJCcsIGEpOiAgICAgICAgICAgIHJldHVybiAnYXJtNjQnCi0gICAgZWxpZiByZS5tYXRjaCgnbWlwcyhlbHw2NHw2NGVsKSQnLCBhKTogICAgICByZXR1cm4gJ21pcHMnCisgICAgZWxpZiByZS5tYXRjaCgnbWlwcyhpc2F8KSgzMnw2NHwpKHI2fCkoZWx8KSQnLCBhKTogICAgICByZXR1cm4gJ21pcHMnCiAgICAgZWxpZiByZS5tYXRjaCgncChwY3xvd2VycGMpKHw2NCknLCBhKTogICAgICByZXR1cm4gJ3Bvd2VycGMnCiAgICAgZWxpZiByZS5tYXRjaCgnc2goM3w0KSQnLCBhKTogICAgICAgICAgICAgICByZXR1cm4gJ3NoJwogICAgIGVsaWYgcmUubWF0Y2goJ2JmaW4nLCBhKTogICAgICAgICAgICAgICAgICAgcmV0dXJuICdibGFja2ZpbicKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWZpdGltYWdlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1maXRpbWFnZS5iYmNsYXNzCmluZGV4IDMzMjM4NGQuLjA1YmUxZjAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWZpdGltYWdlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtZml0aW1hZ2UuYmJjbGFzcwpAQCAtMSw0ICsxLDQgQEAKLWluaGVyaXQga2VybmVsLXVib290Citpbmhlcml0IGtlcm5lbC11Ym9vdCB1Ym9vdC1zaWduCiAKIHB5dGhvbiBfX2Fub255bW91cyAoKSB7CiAgICAga2VybmVsdHlwZXMgPSBkLmdldFZhcignS0VSTkVMX0lNQUdFVFlQRVMnLCBUcnVlKSBvciAiIgpAQCAtNywxNyArNywyOCBAQAogICAgICAgICBkZXBlbmRzID0gIiVzIHUtYm9vdC1ta2ltYWdlLW5hdGl2ZSBkdGMtbmF0aXZlIiAlIGRlcGVuZHMKICAgICAgICAgZC5zZXRWYXIoIkRFUEVORFMiLCBkZXBlbmRzKQogCisgICAgICAgIGlmIGQuZ2V0VmFyKCJVQk9PVF9BUkNIIiwgVHJ1ZSkgPT0gIng4NiI6CisgICAgICAgICAgICByZXBsYWNlbWVudHR5cGUgPSAiYnpJbWFnZSIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlcGxhY2VtZW50dHlwZSA9ICJ6SW1hZ2UiCisKIAkjIE92ZXJyaWRlIEtFUk5FTF9JTUFHRVRZUEVfRk9SX01BS0UgdmFyaWFibGUsIHdoaWNoIGlzIGludGVybmFsCiAJIyB0byBrZXJuZWwuYmJjbGFzcyAuIFdlIGhhdmUgdG8gb3ZlcnJpZGUgaXQsIHNpbmNlIHdlIHBhY2sgekltYWdlCiAJIyAoYXQgbGVhc3QgZm9yIG5vdykgaW50byB0aGUgZml0SW1hZ2UgLgogICAgICAgICB0eXBlZm9ybWFrZSA9IGQuZ2V0VmFyKCJLRVJORUxfSU1BR0VUWVBFX0ZPUl9NQUtFIiwgVHJ1ZSkgb3IgIiIKICAgICAgICAgaWYgJ2ZpdEltYWdlJyBpbiB0eXBlZm9ybWFrZS5zcGxpdCgpOgotICAgICAgICAgICAgZC5zZXRWYXIoJ0tFUk5FTF9JTUFHRVRZUEVfRk9SX01BS0UnLCB0eXBlZm9ybWFrZS5yZXBsYWNlKCdmaXRJbWFnZScsICd6SW1hZ2UnKSkKKyAgICAgICAgICAgIGQuc2V0VmFyKCdLRVJORUxfSU1BR0VUWVBFX0ZPUl9NQUtFJywgdHlwZWZvcm1ha2UucmVwbGFjZSgnZml0SW1hZ2UnLCByZXBsYWNlbWVudHR5cGUpKQogCiAgICAgICAgIGltYWdlID0gZC5nZXRWYXIoJ0lOSVRSQU1GU19JTUFHRScsIFRydWUpCiAgICAgICAgIGlmIGltYWdlOgogICAgICAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCdkb19hc3NlbWJsZV9maXRpbWFnZV9pbml0cmFtZnMnLCAnZGVwZW5kcycsICcgJHtJTklUUkFNRlNfSU1BR0V9OmRvX2ltYWdlX2NvbXBsZXRlJykKIAorICAgICAgICAjIFZlcmlmaWVkIGJvb3Qgd2lsbCBzaWduIHRoZSBmaXRJbWFnZSBhbmQgYXBwZW5kIHRoZSBwdWJsaWMga2V5IHRvCisgICAgICAgICMgVS1ib290IGR0Yi4gV2UgZW5zdXJlIHRoZSBVLUJvb3QgZHRiIGlzIGRlcGxveWVkIGJlZm9yZSBhc3NlbWJsaW5nCisgICAgICAgICMgdGhlIGZpdEltYWdlOgorICAgICAgICBpZiBkLmdldFZhcignVUJPT1RfU0lHTl9FTkFCTEUnLCBUcnVlKToKKyAgICAgICAgICAgIHVib290X3BuID0gZC5nZXRWYXIoJ1BSRUZFUlJFRF9QUk9WSURFUl91LWJvb3QnLCBUcnVlKSBvciAndS1ib290JworICAgICAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCdkb19hc3NlbWJsZV9maXRpbWFnZScsICdkZXBlbmRzJywgJyAlczpkb19kZXBsb3knICUgdWJvb3RfcG4pCiB9CiAKICMgT3B0aW9ucyBmb3IgdGhlIGRldmljZSB0cmVlIGNvbXBpbGVyIHBhc3NlZCB0byBta2ltYWdlICctRCcgZmVhdHVyZToKQEAgLTEzMiw2ICsxNDMsMzMgQEAKIH0KIAogIworIyBFbWl0IHRoZSBmaXRJbWFnZSBJVFMgc2V0dXAgc2VjdGlvbgorIworIyAkMSAuLi4gLml0cyBmaWxlbmFtZQorIyAkMiAuLi4gSW1hZ2UgY291bnRlcgorIyAkMyAuLi4gUGF0aCB0byBzZXR1cCBpbWFnZQorZml0aW1hZ2VfZW1pdF9zZWN0aW9uX3NldHVwKCkgeworCisJc2V0dXBfY3N1bT0ic2hhMSIKKworCWNhdCA8PCBFT0YgPj4gJHsxfQorICAgICAgICAgICAgICAgIHNldHVwQCR7Mn0geworICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSAiTGludXggc2V0dXAuYmluIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSAvaW5jYmluLygiJHszfSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9ICJ4ODZfc2V0dXAiOworICAgICAgICAgICAgICAgICAgICAgICAgYXJjaCA9ICIke1VCT09UX0FSQ0h9IjsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9zID0gImxpbnV4IjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzaW9uID0gIm5vbmUiOworICAgICAgICAgICAgICAgICAgICAgICAgbG9hZCA9IDwweDAwMDkwMDAwPjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5ID0gPDB4MDAwOTAwMDA+OworICAgICAgICAgICAgICAgICAgICAgICAgaGFzaEAxIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxnbyA9ICIke3NldHVwX2NzdW19IjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgfTsKK0VPRgorfQorCisjCiAjIEVtaXQgdGhlIGZpdEltYWdlIElUUyByYW1kaXNrIHNlY3Rpb24KICMKICMgJDEgLi4uIC5pdHMgZmlsZW5hbWUKQEAgLTE5MywyOSArMjMxLDM0IEBACiAjICQyIC4uLiBMaW51eCBrZXJuZWwgSUQKICMgJDMgLi4uIERUQiBpbWFnZSBJRAogIyAkNCAuLi4gcmFtZGlzayBJRAorIyAkNSAuLi4gY29uZmlnIElECiBmaXRpbWFnZV9lbWl0X3NlY3Rpb25fY29uZmlnKCkgewogCiAJY29uZl9jc3VtPSJzaGExIgorCWlmIFsgLW4gIiR7VUJPT1RfU0lHTl9FTkFCTEV9IiBdIDsgdGhlbgorCQljb25mX3NpZ25fa2V5bmFtZT0iJHtVQk9PVF9TSUdOX0tFWU5BTUV9IgorCWZpCiAKIAkjIFRlc3QgaWYgd2UgaGF2ZSBhbnkgRFRCcyBhdCBhbGwKLQlpZiBbIC16ICIkezN9IiAtYSAteiAiJHs0fSIgXSA7IHRoZW4KLQkJY29uZl9kZXNjPSJCb290IExpbnV4IGtlcm5lbCIKLQkJZmR0X2xpbmU9IiIKLQkJcmFtZGlza19saW5lPSIiCi0JZWxpZiBbIC16ICIkezR9IiBdOyB0aGVuCi0JCWNvbmZfZGVzYz0iQm9vdCBMaW51eCBrZXJuZWwgd2l0aCBGRFQgYmxvYiIKKwljb25mX2Rlc2M9IkxpbnV4IGtlcm5lbCIKKwlrZXJuZWxfbGluZT0ia2VybmVsID0gXCJrZXJuZWxAJHsyfVwiOyIKKwlmZHRfbGluZT0iIgorCXJhbWRpc2tfbGluZT0iIgorCisJaWYgWyAtbiAiJHszfSIgXTsgdGhlbgorCQljb25mX2Rlc2M9IiR7Y29uZl9kZXNjfSwgRkRUIGJsb2IiCiAJCWZkdF9saW5lPSJmZHQgPSBcImZkdEAkezN9XCI7IgotCQlyYW1kaXNrX2xpbmU9IiIKLQllbGlmIFsgLXogIiR7M30iIF07IHRoZW4KLQkJY29uZl9kZXNjPSJCb290IExpbnV4IGtlcm5lbCB3aXRoIHJhbWRpc2siCi0JCWZkdF9saW5lPSIiCi0JCXJhbWRpc2tfbGluZT0icmFtZGlzayA9IFwicmFtZGlza0AkezR9XCI7IgotCWVsc2UKLQkJY29uZl9kZXNjPSJCb290IExpbnV4IGtlcm5lbCB3aXRoIEZEVCBibG9iLCByYW1kaXNrIgotCQlmZHRfbGluZT0iZmR0ID0gXCJmZHRAJHszfVwiOyIKKwlmaQorCisJaWYgWyAtbiAiJHs0fSIgXTsgdGhlbgorCQljb25mX2Rlc2M9IiR7Y29uZl9kZXNjfSwgcmFtZGlzayIKIAkJcmFtZGlza19saW5lPSJyYW1kaXNrID0gXCJyYW1kaXNrQCR7NH1cIjsiCiAJZmkKLQlrZXJuZWxfbGluZT0ia2VybmVsID0gXCJrZXJuZWxAJHsyfVwiOyIKKworCWlmIFsgLW4gIiR7NX0iIF07IHRoZW4KKwkJY29uZl9kZXNjPSIke2NvbmZfZGVzY30sIHNldHVwIgorCQlzZXR1cF9saW5lPSJzZXR1cCA9IFwic2V0dXBAJHs1fVwiOyIKKwlmaQogCiAJY2F0IDw8IEVPRiA+PiAkezF9CiAgICAgICAgICAgICAgICAgZGVmYXVsdCA9ICJjb25mQDEiOwpAQCAtMjI0LDkgKzI2Nyw0MCBAQAogCQkJJHtrZXJuZWxfbGluZX0KIAkJCSR7ZmR0X2xpbmV9CiAJCQkke3JhbWRpc2tfbGluZX0KKwkJCSR7c2V0dXBfbGluZX0KICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2hAMSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsZ28gPSAiJHtjb25mX2NzdW19IjsKICAgICAgICAgICAgICAgICAgICAgICAgIH07CitFT0YKKworCWlmIFsgISAteiAiJHtjb25mX3NpZ25fa2V5bmFtZX0iIF0gOyB0aGVuCisKKwkJc2lnbl9saW5lPSJzaWduLWltYWdlcyA9IFwia2VybmVsXCIiCisKKwkJaWYgWyAtbiAiJHszfSIgXTsgdGhlbgorCQkJc2lnbl9saW5lPSIke3NpZ25fbGluZX0sIFwiZmR0XCIiCisJCWZpCisKKwkJaWYgWyAtbiAiJHs0fSIgXTsgdGhlbgorCQkJc2lnbl9saW5lPSIke3NpZ25fbGluZX0sIFwicmFtZGlza1wiIgorCQlmaQorCisJCWlmIFsgLW4gIiR7NX0iIF07IHRoZW4KKwkJCXNpZ25fbGluZT0iJHtzaWduX2xpbmV9LCBcInNldHVwXCIiCisJCWZpCisKKwkJc2lnbl9saW5lPSIke3NpZ25fbGluZX07IgorCisJCWNhdCA8PCBFT0YgPj4gJHsxfQorICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlQDEgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGdvID0gIiR7Y29uZl9jc3VtfSxyc2EyMDQ4IjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5LW5hbWUtaGludCA9ICIke2NvbmZfc2lnbl9rZXluYW1lfSI7CisJCQkJJHtzaWduX2xpbmV9CisgICAgICAgICAgICAgICAgICAgICAgICB9OworRU9GCisJZmkKKworCWNhdCA8PCBFT0YgPj4gJHsxfQogICAgICAgICAgICAgICAgIH07CiBFT0YKIH0KQEAgLTI0MSw2ICszMTUsNyBAQAogCWtlcm5lbGNvdW50PTEKIAlkdGJjb3VudD0iIgogCXJhbWRpc2tjb3VudD0kezN9CisJc2V0dXBjb3VudD0iIgogCXJtIC1mICR7MX0gYXJjaC8ke0FSQ0h9L2Jvb3QvJHsyfQogCiAJZml0aW1hZ2VfZW1pdF9maXRfaGVhZGVyICR7MX0KQEAgLTI3NCw3ICszNDksMTUgQEAKIAlmaQogCiAJIwotCSMgU3RlcCAzOiBQcmVwYXJlIGEgcmFtZGlzayBzZWN0aW9uLgorCSMgU3RlcCAzOiBQcmVwYXJlIGEgc2V0dXAgc2VjdGlvbi4gKEZvciB4ODYpCisJIworCWlmIHRlc3QgLWUgYXJjaC8ke0FSQ0h9L2Jvb3Qvc2V0dXAuYmluIDsgdGhlbgorCQlzZXR1cGNvdW50PTEKKwkJZml0aW1hZ2VfZW1pdF9zZWN0aW9uX3NldHVwICR7MX0gIiR7c2V0dXBjb3VudH0iIGFyY2gvJHtBUkNIfS9ib290L3NldHVwLmJpbgorCWZpCisKKwkjCisJIyBTdGVwIDQ6IFByZXBhcmUgYSByYW1kaXNrIHNlY3Rpb24uCiAJIwogCWlmIFsgIngke3JhbWRpc2tjb3VudH0iID0gIngxIiBdIDsgdGhlbgogCQkjIEZpbmQgYW5kIHVzZSB0aGUgZmlyc3QgaW5pdHJhbWZzIGltYWdlIGFyY2hpdmUgdHlwZSB3ZSBmaW5kCkBAIC0yOTIsMjYgKzM3NSwzOSBAQAogCiAJIyBGb3JjZSB0aGUgZmlyc3QgS2VybmVsIGFuZCBEVEIgaW4gdGhlIGRlZmF1bHQgY29uZmlnCiAJa2VybmVsY291bnQ9MQotCWR0YmNvdW50PTEKKwlpZiB0ZXN0IC1uICIke2R0YmNvdW50fSI7IHRoZW4KKwkJZHRiY291bnQ9MQorCWZpCiAKIAkjCi0JIyBTdGVwIDQ6IFByZXBhcmUgYSBjb25maWd1cmF0aW9ucyBzZWN0aW9uCisJIyBTdGVwIDU6IFByZXBhcmUgYSBjb25maWd1cmF0aW9ucyBzZWN0aW9uCiAJIwogCWZpdGltYWdlX2VtaXRfc2VjdGlvbl9tYWludCAkezF9IGNvbmZzdGFydAogCi0JZml0aW1hZ2VfZW1pdF9zZWN0aW9uX2NvbmZpZyAkezF9ICR7a2VybmVsY291bnR9ICR7ZHRiY291bnR9ICR7cmFtZGlza2NvdW50fQorCWZpdGltYWdlX2VtaXRfc2VjdGlvbl9jb25maWcgJHsxfSAiJHtrZXJuZWxjb3VudH0iICIke2R0YmNvdW50fSIgIiR7cmFtZGlza2NvdW50fSIgIiR7c2V0dXBjb3VudH0iCiAKIAlmaXRpbWFnZV9lbWl0X3NlY3Rpb25fbWFpbnQgJHsxfSBzZWN0ZW5kCiAKIAlmaXRpbWFnZV9lbWl0X3NlY3Rpb25fbWFpbnQgJHsxfSBmaXRlbmQKIAogCSMKLQkjIFN0ZXAgNTogQXNzZW1ibGUgdGhlIGltYWdlCisJIyBTdGVwIDY6IEFzc2VtYmxlIHRoZSBpbWFnZQogCSMKIAl1Ym9vdC1ta2ltYWdlIFwKIAkJJHtAJy1EICIke1VCT09UX01LSU1BR0VfRFRDT1BUU30iJyBpZiBsZW4oJyR7VUJPT1RfTUtJTUFHRV9EVENPUFRTfScpIGVsc2UgJyd9IFwKIAkJLWYgJHsxfSBcCiAJCWFyY2gvJHtBUkNIfS9ib290LyR7Mn0KKworCSMKKwkjIFN0ZXAgNzogU2lnbiB0aGUgaW1hZ2UgYW5kIGFkZCBwdWJsaWMga2V5IHRvIFUtQm9vdCBkdGIKKwkjCisJaWYgWyAieCR7VUJPT1RfU0lHTl9FTkFCTEV9IiA9ICJ4MSIgXSA7IHRoZW4KKwkJdWJvb3QtbWtpbWFnZSBcCisJCQkke0AnLUQgIiR7VUJPT1RfTUtJTUFHRV9EVENPUFRTfSInIGlmIGxlbignJHtVQk9PVF9NS0lNQUdFX0RUQ09QVFN9JykgZWxzZSAnJ30gXAorCQkJLUYgLWsgIiR7VUJPT1RfU0lHTl9LRVlESVJ9IiBcCisJCQktSyAiJHtERVBMT1lfRElSX0lNQUdFfS8ke1VCT09UX0RUQl9CSU5BUll9IiBcCisJCQktciBhcmNoLyR7QVJDSH0vYm9vdC8kezJ9CisJZmkKIH0KIAogZG9fYXNzZW1ibGVfZml0aW1hZ2UoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1tb2R1bGUtc3BsaXQuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLW1vZHVsZS1zcGxpdC5iYmNsYXNzCmluZGV4IGUxYTcwZTYuLjA4ZDIyNjIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLW1vZHVsZS1zcGxpdC5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLW1vZHVsZS1zcGxpdC5iYmNsYXNzCkBAIC0zMCwxNiArMzAsMTIgQEAKIAogS0VSTkVMX01PRFVMRVNfTUVUQV9QQUNLQUdFID89ICJrZXJuZWwtbW9kdWxlcyIKIAorS0VSTkVMX01PRFVMRV9QQUNLQUdFX1BSRUZJWCA/PSAiIgorCiBweXRob24gc3BsaXRfa2VybmVsX21vZHVsZV9wYWNrYWdlcyAoKSB7CiAgICAgaW1wb3J0IHJlCiAKICAgICBtb2RpbmZvZXhwID0gcmUuY29tcGlsZSgiKFtePV0rKT0oLiopIikKLSAgICBrZXJ2ZXJyZXhwID0gcmUuY29tcGlsZSgnXiguKi1oaC4qKVtcLlwrXS4qJCcpCi0gICAgZGVwbW9kcGF0MCA9IHJlLmNvbXBpbGUoIl4oLipcLms/byk6Li4qJCIpCi0gICAgZGVwbW9kcGF0MSA9IHJlLmNvbXBpbGUoIl4oLipcLms/byk6XHMqKC4qXC5rP28pXHMqJCIpCi0gICAgZGVwbW9kcGF0MiA9IHJlLmNvbXBpbGUoIl4oLipcLms/byk6XHMqKC4qXC5rP28pXHMqXFxcJCIpCi0gICAgZGVwbW9kcGF0MyA9IHJlLmNvbXBpbGUoIl5cdCguKlwuaz9vKVxzKlxcXCQiKQotICAgIGRlcG1vZHBhdDQgPSByZS5jb21waWxlKCJeXHQoLipcLms/bylccyokIikKIAogICAgIGRlZiBleHRyYWN0X21vZGluZm8oZmlsZSk6CiAgICAgICAgIGltcG9ydCB0ZW1wZmlsZSwgc3VicHJvY2VzcwpAQCAtNjEsNjggKzU3LDYgQEAKICAgICAgICAgICAgIHZhbHNbbS5ncm91cCgxKV0gPSBtLmdyb3VwKDIpCiAgICAgICAgIHJldHVybiB2YWxzCiAKLSAgICBkZWYgcGFyc2VfZGVwbW9kKCk6Ci0KLSAgICAgICAgZHZhciA9IGQuZ2V0VmFyKCdQS0dEJywgVHJ1ZSkKLQotICAgICAgICBrZXJuZWx2ZXIgPSBkLmdldFZhcignS0VSTkVMX1ZFUlNJT04nLCBUcnVlKQotICAgICAgICBrZXJuZWx2ZXJfc3RyaXBwZWQgPSBrZXJuZWx2ZXIKLSAgICAgICAgbSA9IGtlcnZlcnJleHAubWF0Y2goa2VybmVsdmVyKQotICAgICAgICBpZiBtOgotICAgICAgICAgICAga2VybmVsdmVyX3N0cmlwcGVkID0gbS5ncm91cCgxKQotICAgICAgICBzdGFnaW5nX2tlcm5lbF9kaXIgPSBkLmdldFZhcigiU1RBR0lOR19LRVJORUxfQlVJTERESVIiLCBUcnVlKQotICAgICAgICBzeXN0ZW1fbWFwX2ZpbGUgPSAiJXMvYm9vdC9TeXN0ZW0ubWFwLSVzIiAlIChkdmFyLCBrZXJuZWx2ZXIpCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzeXN0ZW1fbWFwX2ZpbGUpOgotICAgICAgICAgICAgc3lzdGVtX21hcF9maWxlID0gIiVzL1N5c3RlbS5tYXAtJXMiICUgKHN0YWdpbmdfa2VybmVsX2Rpciwga2VybmVsdmVyKQotICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHN5c3RlbV9tYXBfZmlsZSk6Ci0gICAgICAgICAgICAgICAgYmIuZmF0YWwoIlN5c3RlbS5tYXAtJXMgZG9lcyBub3QgZXhpc3QgaW4gJyVzL2Jvb3QnIG5vciBTVEFHSU5HX0tFUk5FTF9CVUlMRERJUiAnJXMnIiAlIChrZXJuZWx2ZXIsIGR2YXIsIHN0YWdpbmdfa2VybmVsX2RpcikpCi0KLSAgICAgICAgY21kID0gImRlcG1vZCAtbiAtYSAtYiAlcyAtRiAlcyAlcyIgJSAoZHZhciwgc3lzdGVtX21hcF9maWxlLCBrZXJuZWx2ZXJfc3RyaXBwZWQpCi0gICAgICAgIGYgPSBvcy5wb3BlbihjbWQsICdyJykKLQotICAgICAgICBkZXBzID0ge30KLSAgICAgICAgbGluZSA9IGYucmVhZGxpbmUoKQotICAgICAgICB3aGlsZSBsaW5lOgotICAgICAgICAgICAgaWYgbm90IGRlcG1vZHBhdDAubWF0Y2gobGluZSk6Ci0gICAgICAgICAgICAgICAgbGluZSA9IGYucmVhZGxpbmUoKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBtMSA9IGRlcG1vZHBhdDEubWF0Y2gobGluZSkKLSAgICAgICAgICAgIGlmIG0xOgotICAgICAgICAgICAgICAgIGRlcHNbbTEuZ3JvdXAoMSldID0gbTEuZ3JvdXAoMikuc3BsaXQoKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBtMiA9IGRlcG1vZHBhdDIubWF0Y2gobGluZSkKLSAgICAgICAgICAgICAgICBpZiBtMjoKLSAgICAgICAgICAgICAgICAgICAgZGVwc1ttMi5ncm91cCgxKV0gPSBtMi5ncm91cCgyKS5zcGxpdCgpCi0gICAgICAgICAgICAgICAgICAgIGxpbmUgPSBmLnJlYWRsaW5lKCkKLSAgICAgICAgICAgICAgICAgICAgbTMgPSBkZXBtb2RwYXQzLm1hdGNoKGxpbmUpCi0gICAgICAgICAgICAgICAgICAgIHdoaWxlIG0zOgotICAgICAgICAgICAgICAgICAgICAgICAgZGVwc1ttMi5ncm91cCgxKV0uZXh0ZW5kKG0zLmdyb3VwKDEpLnNwbGl0KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBsaW5lID0gZi5yZWFkbGluZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICBtMyA9IGRlcG1vZHBhdDMubWF0Y2gobGluZSkKLSAgICAgICAgICAgICAgICAgICAgbTQgPSBkZXBtb2RwYXQ0Lm1hdGNoKGxpbmUpCi0gICAgICAgICAgICAgICAgICAgIGRlcHNbbTIuZ3JvdXAoMSldLmV4dGVuZChtNC5ncm91cCgxKS5zcGxpdCgpKQotICAgICAgICAgICAgbGluZSA9IGYucmVhZGxpbmUoKQotICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgcmV0dXJuIGRlcHMKLQotICAgIGRlZiBnZXRfZGVwZW5kZW5jaWVzKGZpbGUsIHBhdHRlcm4sIGZvcm1hdCk6Ci0gICAgICAgICMgZmlsZSBubyBsb25nZXIgaW5jbHVkZXMgUEtHRAotICAgICAgICBmaWxlID0gZmlsZS5yZXBsYWNlKGQuZ2V0VmFyKCdQS0dEJywgVHJ1ZSkgb3IgJycsICcnLCAxKQotICAgICAgICAjIGluc3RlYWQgaXMgcHJlZml4ZWQgd2l0aCAvbGliL21vZHVsZXMvJHtLRVJORUxfVkVSU0lPTn0KLSAgICAgICAgZmlsZSA9IGZpbGUucmVwbGFjZSgiL2xpYi9tb2R1bGVzLyVzLyIgJSBkLmdldFZhcignS0VSTkVMX1ZFUlNJT04nLCBUcnVlKSBvciAnJywgJycsIDEpCi0KLSAgICAgICAgaWYgZmlsZSBpbiBtb2R1bGVfZGVwczoKLSAgICAgICAgICAgIGRlcGVuZGVuY2llcyA9IFtdCi0gICAgICAgICAgICBmb3IgaSBpbiBtb2R1bGVfZGVwc1tmaWxlXToKLSAgICAgICAgICAgICAgICBtID0gcmUubWF0Y2gocGF0dGVybiwgb3MucGF0aC5iYXNlbmFtZShpKSkKLSAgICAgICAgICAgICAgICBpZiBub3QgbToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBvbiA9IGxlZ2l0aW1pemVfcGFja2FnZV9uYW1lKG0uZ3JvdXAoMSkpCi0gICAgICAgICAgICAgICAgZGVwZW5kZW5jeV9wa2cgPSBmb3JtYXQgJSBvbgotICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoZGVwZW5kZW5jeV9wa2cpCi0gICAgICAgICAgICByZXR1cm4gZGVwZW5kZW5jaWVzCi0gICAgICAgIHJldHVybiBbXQotCiAgICAgZGVmIGZyb2JfbWV0YWRhdGEoZmlsZSwgcGtnLCBwYXR0ZXJuLCBmb3JtYXQsIGJhc2VuYW1lKToKICAgICAgICAgdmFscyA9IGV4dHJhY3RfbW9kaW5mbyhmaWxlKQogCkBAIC0xNzEsNyArMTA1LDEzIEBACiAgICAgICAgICAgICBkLnNldFZhcignREVTQ1JJUFRJT05fJyArIHBrZywgb2xkX2Rlc2MgKyAiOyAiICsgdmFsc1siZGVzY3JpcHRpb24iXSkKIAogICAgICAgICByZGVwZW5kcyA9IGJiLnV0aWxzLmV4cGxvZGVfZGVwX3ZlcnNpb25zMihkLmdldFZhcignUkRFUEVORFNfJyArIHBrZywgVHJ1ZSkgb3IgIiIpCi0gICAgICAgIGZvciBkZXAgaW4gZ2V0X2RlcGVuZGVuY2llcyhmaWxlLCBwYXR0ZXJuLCBmb3JtYXQpOgorICAgICAgICBtb2RpbmZvX2RlcHMgPSBbXQorICAgICAgICBpZiAiZGVwZW5kcyIgaW4gdmFscyBhbmQgdmFsc1siZGVwZW5kcyJdICE9ICIiOgorICAgICAgICAgICAgZm9yIGRlcCBpbiB2YWxzWyJkZXBlbmRzIl0uc3BsaXQoIiwiKToKKyAgICAgICAgICAgICAgICBvbiA9IGxlZ2l0aW1pemVfcGFja2FnZV9uYW1lKGRlcCkKKyAgICAgICAgICAgICAgICBkZXBlbmRlbmN5X3BrZyA9IGZvcm1hdCAlIG9uCisgICAgICAgICAgICAgICAgbW9kaW5mb19kZXBzLmFwcGVuZChkZXBlbmRlbmN5X3BrZykKKyAgICAgICAgZm9yIGRlcCBpbiBtb2RpbmZvX2RlcHM6CiAgICAgICAgICAgICBpZiBub3QgZGVwIGluIHJkZXBlbmRzOgogICAgICAgICAgICAgICAgIHJkZXBlbmRzW2RlcF0gPSBbXQogICAgICAgICBkLnNldFZhcignUkRFUEVORFNfJyArIHBrZywgYmIudXRpbHMuam9pbl9kZXBzKHJkZXBlbmRzLCBjb21tYXNlcD1GYWxzZSkpCkBAIC0xNzksOSArMTE5LDEwIEBACiAgICAgICAgICMgQXZvaWQgYXV0b21hdGljIC1kZXYgcmVjb21tZW5kYXRpb25zIGZvciBtb2R1bGVzIGVuZGluZyB3aXRoIC1kZXYuCiAgICAgICAgIGQuc2V0VmFyRmxhZygnUlJFQ09NTUVORFNfJyArIHBrZywgJ25vZGVwcnJlY3MnLCAxKQogCi0gICAgbW9kdWxlX2RlcHMgPSBwYXJzZV9kZXBtb2QoKQogICAgIG1vZHVsZV9yZWdleCA9ICdeKC4qKVwuaz9vJCcKLSAgICBtb2R1bGVfcGF0dGVybiA9ICdrZXJuZWwtbW9kdWxlLSVzJworCisgICAgbW9kdWxlX3BhdHRlcm5fcHJlZml4ID0gZC5nZXRWYXIoJ0tFUk5FTF9NT0RVTEVfUEFDS0FHRV9QUkVGSVgnLCBUcnVlKQorICAgIG1vZHVsZV9wYXR0ZXJuID0gbW9kdWxlX3BhdHRlcm5fcHJlZml4ICsgJ2tlcm5lbC1tb2R1bGUtJXMnCiAKICAgICBwb3N0aW5zdCA9IGQuZ2V0VmFyKCdwa2dfcG9zdGluc3RfbW9kdWxlcycsIFRydWUpCiAgICAgcG9zdHJtID0gZC5nZXRWYXIoJ3BrZ19wb3N0cm1fbW9kdWxlcycsIFRydWUpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC11aW1hZ2UuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLXVpbWFnZS5iYmNsYXNzCmluZGV4IDJhMTg3ZjUuLjM0MDUwM2EgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLXVpbWFnZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLXVpbWFnZS5iYmNsYXNzCkBAIC0xNCw4ICsxNCw3IEBACiAgICAgICAgIGlmIGQuZ2V0VmFyKCJLRUVQVUlNQUdFIiwgVHJ1ZSkgIT0gJ3llcyc6CiAgICAgICAgICAgICB0eXBlZm9ybWFrZSA9IGQuZ2V0VmFyKCJLRVJORUxfSU1BR0VUWVBFX0ZPUl9NQUtFIiwgVHJ1ZSkgb3IgIiIKICAgICAgICAgICAgIGlmICJ1SW1hZ2UiIGluIHR5cGVmb3JtYWtlLnNwbGl0KCk6Ci0gICAgICAgICAgICAgICAgdHlwZWZvcm1ha2UucmVwbGFjZSgndUltYWdlJywgJ3ZtbGludXgnKQotICAgICAgICAgICAgZC5zZXRWYXIoJ0tFUk5FTF9JTUFHRVRZUEVfRk9SX01BS0UnLCB0eXBlZm9ybWFrZSkKKyAgICAgICAgICAgICAgICBkLnNldFZhcignS0VSTkVMX0lNQUdFVFlQRV9GT1JfTUFLRScsIHR5cGVmb3JtYWtlLnJlcGxhY2UoJ3VJbWFnZScsICd2bWxpbnV4JykpCiB9CiAKIGRvX3Vib290X21raW1hZ2UoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC15b2N0by5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwteW9jdG8uYmJjbGFzcwppbmRleCBmODZiM2VmLi42MTYwYTI5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC15b2N0by5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLXlvY3RvLmJiY2xhc3MKQEAgLTEsNSArMSw3IEBACiAjIHJlbW92ZSB0YXNrcyB0aGF0IG1vZGlmeSB0aGUgc291cmNlIHRyZWUgaW4gY2FzZSBleHRlcm5hbHNyYyBpcyBpbmhlcml0ZWQKLVNSQ1RSRUVDT1ZFUkVEVEFTS1MgKz0gImRvX2tlcm5lbF9jb25maWdtZSBkb192YWxpZGF0ZV9icmFuY2hlcyBkb19rZXJuZWxfY29uZmlnY2hlY2sgZG9fa2VybmVsX2NoZWNrb3V0IGRvX3NoYXJlZF93b3JrZGlyIGRvX2ZldGNoIGRvX3VucGFjayBkb19wYXRjaCIKK1NSQ1RSRUVDT1ZFUkVEVEFTS1MgKz0gImRvX2tlcm5lbF9jb25maWdtZSBkb192YWxpZGF0ZV9icmFuY2hlcyBkb19rZXJuZWxfY29uZmlnY2hlY2sgZG9fa2VybmVsX2NoZWNrb3V0IGRvX2ZldGNoIGRvX3VucGFjayBkb19wYXRjaCIKK1BBVENIX0dJVF9VU0VSX0VNQUlMID89ICJrZXJuZWwteW9jdG9Ab2UiCitQQVRDSF9HSVRfVVNFUl9OQU1FID89ICJPcGVuRW1iZWRkZWQiCiAKICMgcmV0dXJucyBsb2NhbCAoYWJzb2x1dGUpIHBhdGggbmFtZXMgZm9yIGFsbCB2YWxpZCBwYXRjaGVzIGluIHRoZQogIyBzcmNfdXJpCkBAIC0xMTksNzIgKzEyMSw1NCBAQAogCXBhdGNoZXM9IiR7QCIgIi5qb2luKGZpbmRfcGF0Y2hlcyhkKSl9IgogCWZlYXRfZGlycz0iJHtAIiAiLmpvaW4oZmluZF9rZXJuZWxfZmVhdHVyZV9kaXJzKGQpKX0iCiAKLQkjIGFkZCBhbnkgZXhwbGljaXRseSByZWZlcmVuY2VkIGZlYXR1cmVzIG9udG8gdGhlIGVuZCBvZiB0aGUgZmVhdHVyZQotCSMgbGlzdCB0aGF0IGlzIHBhc3NlZCB0byB0aGUga2VybmVsIGJ1aWxkIHNjcmlwdHMuCi0JaWYgWyAtbiAiJHtLRVJORUxfRkVBVFVSRVN9IiBdOyB0aGVuCi0JCWZvciBmZWF0IGluICR7S0VSTkVMX0ZFQVRVUkVTfTsgZG8KLQkJCWFkZG9uX2ZlYXR1cmVzPSIkYWRkb25fZmVhdHVyZXMgLS1mZWF0dXJlICRmZWF0IgotCQlkb25lCi0JZmkKLQogCSMgY2hlY2sgZm9yIGZlYXR1cmUgZGlyZWN0b3JpZXMvcmVwb3MvYnJhbmNoZXMgdGhhdCB3ZXJlIHBhcnQgb2YgdGhlCiAJIyBTUkNfVVJJLiBJZiB0aGV5IHdlcmUgc3VwcGxpZWQsIHdlIGNvbnZlcnQgdGhlbSBpbnRvIGluY2x1ZGUgZGlyZWN0aXZlcwogCSMgZm9yIHRoZSB1cGRhdGUgcGFydCBvZiB0aGUgcHJvY2VzcwotCWlmIFsgLW4gIiR7ZmVhdF9kaXJzfSIgXTsgdGhlbgotCSAgICBmb3IgZiBpbiAke2ZlYXRfZGlyc307IGRvCisJZm9yIGYgaW4gJHtmZWF0X2RpcnN9OyBkbwogCQlpZiBbIC1kICIke1dPUktESVJ9LyRmL21ldGEiIF07IHRoZW4KLQkJICAgIGluY2x1ZGVzPSIkaW5jbHVkZXMgLUkke1dPUktESVJ9LyRmL21ldGEiCi0JCWVsaWYgWyAtZCAiJHtXT1JLRElSfS8kZiIgXTsgdGhlbgotCQkgICAgaW5jbHVkZXM9IiRpbmNsdWRlcyAtSSR7V09SS0RJUn0vJGYiCisJCQlpbmNsdWRlcz0iJGluY2x1ZGVzIC1JJHtXT1JLRElSfS8kZi9rZXJuZWwtbWV0YSIKKwkgICAgICAgIGVsaWYgWyAtZCAiJHtXT1JLRElSfS8kZiIgXTsgdGhlbgorCQkJaW5jbHVkZXM9IiRpbmNsdWRlcyAtSSR7V09SS0RJUn0vJGYiCiAJCWZpCi0JICAgIGRvbmUKKwlkb25lCisJZm9yIHMgaW4gJHtzY2NzfSAke3BhdGNoZXN9OyBkbworCQlzZGlyPSQoZGlybmFtZSAkcykKKwkJaW5jbHVkZXM9IiRpbmNsdWRlcyAtSSR7c2Rpcn0iCisgICAgICAgICAgICAgICAgIyBpZiBhIFNSQ19VUkkgcGFzc2VkIHBhdGNoIG9yIC5zY2MgaGFzIGEgc3ViZGlyIG9mICJrZXJuZWwtbWV0YSIsCisgICAgICAgICAgICAgICAgIyB0aGVuIHdlIGFkZCBpdCB0byB0aGUgc2VhcmNoIHBhdGgKKyAgICAgICAgICAgICAgICBpZiBbIC1kICIke3NkaXJ9L2tlcm5lbC1tZXRhIiBdOyB0aGVuCisJCQlpbmNsdWRlcz0iJGluY2x1ZGVzIC1JJHtzZGlyfS9rZXJuZWwtbWV0YSIKKyAgICAgICAgICAgICAgICBmaQorCWRvbmUKKworCSMgZXhwYW5kIGtlcm5lbCBmZWF0dXJlcyBpbnRvIHRoZWlyIGZ1bGwgcGF0aCBlcXVpdmFsZW50cworCWJzcF9kZWZpbml0aW9uPSQoc3BwICR7aW5jbHVkZXN9IC0tZmluZCAtREtNQUNISU5FPSR7S01BQ0hJTkV9IC1ES1RZUEU9JHtMSU5VWF9LRVJORUxfVFlQRX0pCisJbWV0YV9kaXI9JChrZ2l0IC0tbWV0YSkKKworCSMgcnVuMTogcHVsbCBhbGwgdGhlIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnRzLCBubyBtYXR0ZXIgd2hlcmUgdGhleSBjb21lIGZyb20KKwllbGVtZW50cz0iYGVjaG8gLW4gJHtic3BfZGVmaW5pdGlvbn0gJHtzY2NzfSAke3BhdGNoZXN9ICR7S0VSTkVMX0ZFQVRVUkVTfWAiCisJaWYgWyAtbiAiJHtlbGVtZW50c30iIF07IHRoZW4KKwkJc2NjIC0tZm9yY2UgLW8gJHtTfS8ke21ldGFfZGlyfTpjZmcsbWV0YSAke2luY2x1ZGVzfSAke2JzcF9kZWZpbml0aW9ufSAke3NjY3N9ICR7cGF0Y2hlc30gJHtLRVJORUxfRkVBVFVSRVN9CiAJZmkKIAotCSMgdXBkYXRlcyBvciBnZW5lcmF0ZXMgdGhlIHRhcmdldCBkZXNjcmlwdGlvbgotCXVwZGF0ZW1lICR7dXBkYXRlbWVfZmxhZ3N9IC1ES0RFU0M9JHtLTUFDSElORX06JHtMSU5VWF9LRVJORUxfVFlQRX0gXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZXN9ICR7YWRkb25fZmVhdHVyZXN9ICR7QVJDSH0gJHtLTUFDSElORX0gJHtzY2NzfSAke3BhdGNoZXN9Ci0JaWYgWyAkPyAtbmUgMCBdOyB0aGVuCi0JCWJiZmF0YWxfbG9nICJDb3VsZCBub3QgdXBkYXRlICR7bWFjaGluZV9icmFuY2h9IgorCSMgcnVuMjogb25seSBnZW5lcmF0ZSBwYXRjaGVzIGZvciBlbGVtZW50cyB0aGF0IGhhdmUgYmVlbiBwYXNzZWQgb24gdGhlIFNSQ19VUkkKKwllbGVtZW50cz0iYGVjaG8gLW4gJHtzY2NzfSAke3BhdGNoZXN9ICR7S0VSTkVMX0ZFQVRVUkVTfWAiCisJaWYgWyAtbiAiJHtlbGVtZW50c30iIF07IHRoZW4KKwkJc2NjIC0tZm9yY2UgLW8gJHtTfS8ke21ldGFfZGlyfTpwYXRjaCAtLWNtZHMgcGF0Y2ggJHtpbmNsdWRlc30gJHtzY2NzfSAke3BhdGNoZXN9ICR7S0VSTkVMX0ZFQVRVUkVTfQogCWZpCiB9CiAKIGRvX3BhdGNoKCkgewogCWNkICR7U30KIAotCSMgZXhlY3V0ZXMgYW5kIG1vZGlmaWVzIHRoZSBzb3VyY2UgdHJlZSBhcyByZXF1aXJlZAotCXBhdGNobWUgJHtLTUFDSElORX0KLQlpZiBbICQ/IC1uZSAwIF07IHRoZW4KLQkJYmJlcnJvciAiQ291bGQgbm90IGFwcGx5IHBhdGNoZXMgZm9yICR7S01BQ0hJTkV9LiIKLQkJYmJmYXRhbF9sb2cgIlBhdGNoIGZhaWx1cmVzIGNhbiBiZSByZXNvbHZlZCBpbiB0aGUgbGludXggc291cmNlIGRpcmVjdG9yeSAke1N9KSIKLQlmaQotCi0JIyBjaGVjayB0byBzZWUgaWYgdGhlIHNwZWNpZmllZCBTUkNSRVYgaXMgcmVhY2hhYmxlIGZyb20gdGhlIGZpbmFsIGJyYW5jaC4KLQkjIGlmIGl0IHdhc24ndCBzb21ldGhpbmcgd3JvbmcgaGFzIGhhcHBlbmVkLCBhbmQgd2Ugc2hvdWxkIGVycm9yLgotCW1hY2hpbmVfc3JjcmV2PSIke1NSQ1JFVl9tYWNoaW5lfSIKLQlpZiBbIC16ICIke21hY2hpbmVfc3JjcmV2fSIgXTsgdGhlbgotCQkjIGZhbGxiYWNrIHRvIFNSQ1JFViBpZiBhIG5vbiBtYWNoaW5lX21ldGEgdHJlZSBpcyBiZWluZyBidWlsdAotCQltYWNoaW5lX3NyY3Jldj0iJHtTUkNSRVZ9IgotCQkjIGlmIFNSQ1JFViBjYW5ub3QgYmUgcmVhY2hlZCBzb21ldGhpbmcgaXMgd3JvbmcuCi0JCWlmIFsgLXogIiR7bWFjaGluZV9zcmNyZXZ9IiBdOyB0aGVuCi0JCQliYmZhdGFsICJOZWl0aGVyIFNSQ1JFVl9tYWNoaW5lIG9yIFNSQ1JFViB3YXMgc3BlY2lmaWVkISIKLQkJZmkKLQlmaQotCi0gICAgICAgIGN1cnJlbnRfYnJhbmNoPWBnaXQgcmV2LXBhcnNlIC0tYWJicmV2LXJlZiBIRUFEYAotICAgICAgICBtYWNoaW5lX2JyYW5jaD0iJHtAIGdldF9tYWNoaW5lX2JyYW5jaChkLCAiJHtLQlJBTkNIfSIgKX0iCi0gICAgICAgIGlmIFsgIiR7Y3VycmVudF9icmFuY2h9IiAhPSAiJHttYWNoaW5lX2JyYW5jaH0iIF07IHRoZW4KLSAgICAgICAgICAgIGJid2FybiAiQWZ0ZXIgbWV0YSBkYXRhIGFwcGxpY2F0aW9uLCB0aGUga2VybmVsIHRyZWUgYnJhbmNoIGlzICR7Y3VycmVudF9icmFuY2h9LiBUaGUiCi0gICAgICAgICAgICBiYndhcm4gIlNSQ19VUkkgc3BlY2lmaWVkIGJyYW5jaCAke21hY2hpbmVfYnJhbmNofS4gVGhlIGJyYW5jaCB3aWxsIGJlIGZvcmNlZCB0byAke21hY2hpbmVfYnJhbmNofSwiCi0gICAgICAgICAgICBiYndhcm4gImJ1dCB0aGlzIG1lYW5zIHRoZSBib2FyZCBtZXRhIGRhdGEgKC5zY2MgZmlsZXMpIGRvIG5vdCBtYXRjaCB0aGUgU1JDX1VSSSBzcGVjaWZpY2F0aW9uLiIKLSAgICAgICAgICAgIGJid2FybiAiVGhlIG1ldGEgZGF0YSBhbmQgYnJhbmNoICR7bWFjaGluZV9icmFuY2h9IHNob3VsZCBiZSBpbnNwZWN0ZWQgdG8gZW5zdXJlIHRoZSBwcm9wZXIiCi0gICAgICAgICAgICBiYndhcm4gImtlcm5lbCBpcyBiZWluZyBidWlsdC4iCi0gICAgICAgICAgICBnaXQgY2hlY2tvdXQgLWYgJHttYWNoaW5lX2JyYW5jaH0KLSAgICAgICAgZmkKLQotCWlmIFsgIiR7bWFjaGluZV9zcmNyZXZ9IiAhPSAiQVVUT0lOQyIgXTsgdGhlbgotCQlpZiAhIFsgIiQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSAke21hY2hpbmVfc3JjcmV2fX4wKSIgPSAiJChnaXQgbWVyZ2UtYmFzZSAke21hY2hpbmVfc3JjcmV2fSBIRUFEKSIgXTsgdGhlbgotCQkJYmJlcnJvciAiU1JDUkVWICR7bWFjaGluZV9zcmNyZXZ9IHdhcyBzcGVjaWZpZWQsIGJ1dCBpcyBub3QgcmVhY2hhYmxlIgotCQkJYmJmYXRhbCAiQ2hlY2sgdGhlIEJTUCBkZXNjcmlwdGlvbiBmb3IgaW5jb3JyZWN0IGJyYW5jaCBzZWxlY3Rpb24sIG9yIG90aGVyIGVycm9ycy4iCisJY2hlY2tfZ2l0X2NvbmZpZworCW1ldGFfZGlyPSQoa2dpdCAtLW1ldGEpCisJKGNkICR7bWV0YV9kaXJ9OyBsbiAtc2YgcGF0Y2gucXVldWUgc2VyaWVzKQorCWlmIFsgLWYgIiR7bWV0YV9kaXJ9L3NlcmllcyIgXTsgdGhlbgorCQlrZ2l0LXMycSAtLWdlbiAtdiAtLXBhdGNoZXMgLmtlcm5lbC1tZXRhLworCQlpZiBbICQ/IC1uZSAwIF07IHRoZW4KKwkJCWJiZXJyb3IgIkNvdWxkIG5vdCBhcHBseSBwYXRjaGVzIGZvciAke0tNQUNISU5FfS4iCisJCQliYmZhdGFsX2xvZyAiUGF0Y2ggZmFpbHVyZXMgY2FuIGJlIHJlc29sdmVkIGluIHRoZSBsaW51eCBzb3VyY2UgZGlyZWN0b3J5ICR7U30pIgogCQlmaQogCWZpCiB9CkBAIC0yNTMsMjYgKzIzNywzNyBAQAogCiBkb19rZXJuZWxfY29uZmlnbWVbZGlyc10gKz0gIiR7U30gJHtCfSIKIGRvX2tlcm5lbF9jb25maWdtZSgpIHsKLQliYm5vdGUgImtlcm5lbCBjb25maWdtZSIKLQlleHBvcnQgS01FVEE9JHtLTUVUQX0KKwlzZXQgK2UKIAotCWlmIFsgLW4gIiR7S0NPTkZJR19NT0RFfSIgXTsgdGhlbgotCQljb25maWdtZWZsYWdzPSR7S0NPTkZJR19NT0RFfQotCWVsc2UKLQkJIyBJZiBhIGRlZmNvbmZpZyB3YXMgcGFzc2VkLCB1c2UgPW4gYXMgdGhlIGJhc2VsaW5lLCB3aGljaCBpcyBhY2hpZXZlZAotCQkjIHZpYSAtLWFsbG5vY29uZmlnCisJIyB0cmFuc2xhdGUgdGhlIGtjb25maWdfbW9kZSBpbnRvIHNvbWV0aGluZyB0aGF0IG1lcmdlX2NvbmZpZy5zaAorCSMgdW5kZXJzdGFuZHMKKwljYXNlICR7S0NPTkZJR19NT0RFfSBpbgorCQkqYWxsbm9jb25maWcpCisJCQljb25maWdfZmxhZ3M9Ii1uIgorCQkJOzsKKwkJKmFsbGRlZmNvbmZpZykKKwkJCWNvbmZpZ19mbGFncz0iIgorCQkJOzsKKwkgICAgKikKIAkJaWYgWyAtZiAke1dPUktESVJ9L2RlZmNvbmZpZyBdOyB0aGVuCi0JCQljb25maWdtZWZsYWdzPSItLWFsbG5vY29uZmlnIgorCQkJY29uZmlnX2ZsYWdzPSItbiIKIAkJZmkKLQlmaQorCSAgICA7OworCWVzYWMKIAogCWNkICR7U30KLQlQQVRIPSR7UEFUSH06JHtTfS9zY3JpcHRzL3V0aWwKLQljb25maWdtZSAke2NvbmZpZ21lZmxhZ3N9IC0tcmVjb25maWcgLS1vdXRwdXQgJHtCfSAke0xJTlVYX0tFUk5FTF9UWVBFfSAke0tNQUNISU5FfQorCisJbWV0YV9kaXI9JChrZ2l0IC0tbWV0YSkKKwljb25maWdzPSIkKHNjYyAtLWNvbmZpZ3MgLW8gJHttZXRhX2Rpcn0pIgorCWlmIFsgLXogIiR7Y29uZmlnc30iIF07IHRoZW4KKwkJYmJmYXRhbF9sb2cgIkNvdWxkIG5vdCBmaW5kIGNvbmZpZ3VyYXRpb24gcXVldWUgKCR7bWV0YV9kaXJ9L2NvbmZpZy5xdWV1ZSkiCisJZmkKKworCUNGTEFHUz0iJHtDRkxBR1N9ICR7VE9PTENIQUlOX09QVElPTlN9IglBUkNIPSR7QVJDSH0gbWVyZ2VfY29uZmlnLnNoIC1PICR7Qn0gJHtjb25maWdfZmxhZ3N9ICR7Y29uZmlnc30gPiAke21ldGFfZGlyfS9jZmcvbWVyZ2VfY29uZmlnX2J1aWxkLmxvZyAyPiYxCiAJaWYgWyAkPyAtbmUgMCBdOyB0aGVuCiAJCWJiZmF0YWxfbG9nICJDb3VsZCBub3QgY29uZmlndXJlICR7S01BQ0hJTkV9LSR7TElOVVhfS0VSTkVMX1RZUEV9IgogCWZpCi0JCisKIAllY2hvICIjIEdsb2JhbCBzZXR0aW5ncyBmcm9tIGxpbnV4IHJlY2lwZSIgPj4gJHtCfS8uY29uZmlnCiAJZWNobyAiQ09ORklHX0xPQ0FMVkVSU0lPTj0iXCIke0xJTlVYX1ZFUlNJT05fRVhURU5TSU9OfVwiID4+ICR7Qn0vLmNvbmZpZwogfQpAQCAtMjkwLDM2ICsyODUsMjMgQEAKICAgICAgICAga21ldGEgPSAiLiIgKyBrbWV0YQogCiAgICAgcGF0aHByZWZpeCA9ICJleHBvcnQgUEFUSD0lczolczsgIiAlIChkLmdldFZhcignUEFUSCcsIFRydWUpLCAiJHtTfS9zY3JpcHRzL3V0aWwvIikKLSAgICBjbWQgPSBkLmV4cGFuZCgiY2QgJHtTfTsga2NvbmZfY2hlY2sgLWNvbmZpZyAlcy9tZXRhLXNlcmllcyAke1N9ICR7Qn0iICUga21ldGEpCisKKyAgICBjbWQgPSBkLmV4cGFuZCgic2NjIC0tY29uZmlncyAtbyAke1N9Ly5rZXJuZWwtbWV0YSIpCisgICAgcmV0LCBjb25maWdzID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KCIlcyVzIiAlIChwYXRocHJlZml4LCBjbWQpKQorCisgICAgY21kID0gZC5leHBhbmQoImNkICR7U307IGtjb25mX2NoZWNrIC0tcmVwb3J0IC1vICR7U30vJXMvY2ZnLyAke0J9Ly5jb25maWcgJHtTfSAlcyIgJSAoa21ldGEsY29uZmlncykpCiAgICAgcmV0LCByZXN1bHQgPSBvZS51dGlscy5nZXRzdGF0dXNvdXRwdXQoIiVzJXMiICUgKHBhdGhwcmVmaXgsIGNtZCkpCiAKICAgICBjb25maWdfY2hlY2tfdmlzaWJpbGl0eSA9IGludChkLmdldFZhciggIktDT05GX0FVRElUX0xFVkVMIiwgVHJ1ZSApIG9yIDApCiAgICAgYnNwX2NoZWNrX3Zpc2liaWxpdHkgPSBpbnQoZC5nZXRWYXIoICJLQ09ORl9CU1BfQVVESVRfTEVWRUwiLCBUcnVlICkgb3IgMCkKIAogICAgICMgaWYgY29uZmlnIGNoZWNrIHZpc2liaWxpdHkgaXMgbm9uLXplcm8sIHJlcG9ydCBkcm9wcGVkIGNvbmZpZ3VyYXRpb24gdmFsdWVzCi0gICAgbWlzbWF0Y2hfZmlsZSA9ICIke1N9LyIgKyBrbWV0YSArICIvIiArICJtaXNtYXRjaC5jZmciCisgICAgbWlzbWF0Y2hfZmlsZSA9IGQuZXhwYW5kKCIke1N9LyVzL2NmZy9taXNtYXRjaC50eHQiICUga21ldGEpCiAgICAgaWYgb3MucGF0aC5leGlzdHMobWlzbWF0Y2hfZmlsZSk6CiAgICAgICAgIGlmIGNvbmZpZ19jaGVja192aXNpYmlsaXR5OgogICAgICAgICAgICAgd2l0aCBvcGVuIChtaXNtYXRjaF9maWxlLCAiciIpIGFzIG15ZmlsZToKICAgICAgICAgICAgICAgICByZXN1bHRzID0gbXlmaWxlLnJlYWQoKQogICAgICAgICAgICAgICAgIGJiLndhcm4oICJba2VybmVsIGNvbmZpZ106IHNwZWNpZmllZCB2YWx1ZXMgZGlkIG5vdCBtYWtlIGl0IGludG8gdGhlIGtlcm5lbCdzIGZpbmFsIGNvbmZpZ3VyYXRpb246XG5cbiVzIiAlIHJlc3VsdHMpCi0KLSAgICAjIGlmIGNvbmZpZyBjaGVjayB2aXNpYmlsaXR5IGlzIGxldmVsIDIgb3IgaGlnaGVyLCByZXBvcnQgbm9uLWhhcmR3YXJlIG9wdGlvbnMKLSAgICBub25od19maWxlID0gIiR7U30vIiArIGttZXRhICsgIi8iICsgIm5vbmh3X3JlcG9ydC5jZmciCi0gICAgaWYgb3MucGF0aC5leGlzdHMobm9uaHdfZmlsZSk6Ci0gICAgICAgIGlmIGNvbmZpZ19jaGVja192aXNpYmlsaXR5ID4gMToKLSAgICAgICAgICAgIHdpdGggb3BlbiAobm9uaHdfZmlsZSwgInIiKSBhcyBteWZpbGU6Ci0gICAgICAgICAgICAgICAgcmVzdWx0cyA9IG15ZmlsZS5yZWFkKCkKLSAgICAgICAgICAgICAgICBiYi53YXJuKCAiW2tlcm5lbCBjb25maWddOiBCU1Agc3BlY2lmaWVkIG5vbi1odyBjb25maWd1cmF0aW9uOlxuXG4lcyIgJSByZXN1bHRzKQotCi0gICAgYnNwX2Rlc2MgPSAiJHtTfS8iICsga21ldGEgKyAiLyIgKyAidG9wX3RndCIKLSAgICBpZiBvcy5wYXRoLmV4aXN0cyhic3BfZGVzYykgYW5kIGJzcF9jaGVja192aXNpYmlsaXR5ID4gMToKLSAgICAgICAgd2l0aCBvcGVuIChic3BfZGVzYywgInIiKSBhcyBteWZpbGU6Ci0gICAgICAgICAgICBic3BfdGd0ID0gbXlmaWxlLnJlYWQoKQotICAgICAgICAgICAgbSA9IHJlLm1hdGNoKCJeKC4qKXNjcmF0Y2gub2JqKC4qKSQiLCBic3BfdGd0KQotICAgICAgICAgICAgaWYgbm90IG0gaXMgTm9uZToKLSAgICAgICAgICAgICAgICBiYi53YXJuKCAiW2tlcm5lbF06IEFuIGF1dG8gZ2VuZXJhdGVkIEJTUCBkZXNjcmlwdGlvbiB3YXMgdXNlZCwgdGhpcyBub3JtYWxseSBpbmRpY2F0ZXMgYSBtaXNjb25maWd1cmF0aW9uLlxuIiArCi0gICAgICAgICAgICAgICAgICAgICAgICAgIkNoZWNrIHRoYXQgeW91ciBtYWNoaW5lICglcykgaGFzIGFuIGFzc29jaWF0ZWQga2VybmVsIGRlc2NyaXB0aW9uLiIgJSAiJHtNQUNISU5FfSIgKQogfQogCiAjIEVuc3VyZSB0aGF0IHRoZSBicmFuY2hlcyAoQlNQIGFuZCBtZXRhKSBhcmUgb24gdGhlIGxvY2F0aW9ucyBzcGVjaWZpZWQgYnkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC5iYmNsYXNzCmluZGV4IGU3ZTJjYjMuLjI1YTE1M2MgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwuYmJjbGFzcwpAQCAtMSw3ICsxLDcgQEAKIGluaGVyaXQgbGludXgta2VybmVsLWJhc2Uga2VybmVsLW1vZHVsZS1zcGxpdAogCiBQUk9WSURFUyArPSAidmlydHVhbC9rZXJuZWwiCi1ERVBFTkRTICs9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1iaW51dGlscyB2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nY2Mga21vZC1uYXRpdmUgZGVwbW9kd3JhcHBlci1jcm9zcyBiYy1uYXRpdmUiCitERVBFTkRTICs9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1iaW51dGlscyB2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nY2Mga21vZC1uYXRpdmUgZGVwbW9kd3JhcHBlci1jcm9zcyBiYy1uYXRpdmUgbHpvcC1uYXRpdmUiCiAKIFMgPSAiJHtTVEFHSU5HX0tFUk5FTF9ESVJ9IgogQiA9ICIke1dPUktESVJ9L2J1aWxkIgpAQCAtMTI3LDkgKzEyNyw5IEBACiBleHBvcnQgT1MgPSAiJHtUQVJHRVRfT1N9IgogZXhwb3J0IENST1NTX0NPTVBJTEUgPSAiJHtUQVJHRVRfUFJFRklYfSIKIAotS0VSTkVMX1BSSU9SSVRZID89ICIke0BpbnQoZC5nZXRWYXIoJ1BWJywxKS5zcGxpdCgnLScpWzBdLnNwbGl0KCcrJylbMF0uc3BsaXQoJy4nKVswXSkgKiAxMDAwMCArIFwKLSAgICAgICAgICAgICAgICAgICAgICAgaW50KGQuZ2V0VmFyKCdQVicsMSkuc3BsaXQoJy0nKVswXS5zcGxpdCgnKycpWzBdLnNwbGl0KCcuJylbMV0pICogMTAwICsgXAotICAgICAgICAgICAgICAgICAgICAgICBpbnQoZC5nZXRWYXIoJ1BWJywxKS5zcGxpdCgnLScpWzBdLnNwbGl0KCcrJylbMF0uc3BsaXQoJy4nKVstMV0pfSIKK0tFUk5FTF9QUklPUklUWSA/PSAiJHtAaW50KGQuZ2V0VmFyKCdQVicsIFRydWUpLnNwbGl0KCctJylbMF0uc3BsaXQoJysnKVswXS5zcGxpdCgnLicpWzBdKSAqIDEwMDAwICsgXAorICAgICAgICAgICAgICAgICAgICAgICBpbnQoZC5nZXRWYXIoJ1BWJywgVHJ1ZSkuc3BsaXQoJy0nKVswXS5zcGxpdCgnKycpWzBdLnNwbGl0KCcuJylbMV0pICogMTAwICsgXAorICAgICAgICAgICAgICAgICAgICAgICBpbnQoZC5nZXRWYXIoJ1BWJywgVHJ1ZSkuc3BsaXQoJy0nKVswXS5zcGxpdCgnKycpWzBdLnNwbGl0KCcuJylbLTFdKX0iCiAKIEtFUk5FTF9SRUxFQVNFID89ICIke0tFUk5FTF9WRVJTSU9OfSIKIApAQCAtMTQwLDcgKzE0MCw3IEBACiAjCiAjIGNvbmZpZ3VyYXRpb24KICMKLWV4cG9ydCBDTURMSU5FX0NPTlNPTEUgPSAiY29uc29sZT0ke0BkLmdldFZhcigiS0VSTkVMX0NPTlNPTEUiLDEpIG9yICJ0dHlTMCJ9IgorZXhwb3J0IENNRExJTkVfQ09OU09MRSA9ICJjb25zb2xlPSR7QGQuZ2V0VmFyKCJLRVJORUxfQ09OU09MRSIsIFRydWUpIG9yICJ0dHlTMCJ9IgogCiBLRVJORUxfVkVSU0lPTiA9ICIke0BnZXRfa2VybmVsdmVyc2lvbl9oZWFkZXJzKCcke0J9Jyl9IgogCkBAIC0xNTYsMTAgKzE1Niw3IEBACiAjIFNvbWUgTGludXgga2VybmVsIGNvbmZpZ3VyYXRpb25zIG5lZWQgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIG9uIHRoZSBjb21tYW5kIGxpbmUKIEtFUk5FTF9FWFRSQV9BUkdTID89ICIiCiAKLSMgRm9yIHRoZSBrZXJuZWwsIHdlIGRvbid0IHdhbnQgdGhlICctZSBNQUtFRkxBR1M9JyBpbiBFWFRSQV9PRU1BS0UuCi0jIFdlIGRvbid0IHdhbnQgdG8gb3ZlcnJpZGUga2VybmVsIE1ha2VmaWxlIHZhcmlhYmxlcyBmcm9tIHRoZSBlbnZpcm9ubWVudAotRVhUUkFfT0VNQUtFID0gIiIKLQorRVhUUkFfT0VNQUtFID0gIiBIT1NUQ0M9IiR7QlVJTERfQ0N9IiBIT1NUQ1BQPSIke0JVSUxEX0NQUH0iIgogS0VSTkVMX0FMVF9JTUFHRVRZUEUgPz89ICIiCiAKIGNvcHlfaW5pdHJhbWZzKCkgewpAQCAtMjAzLDcgKzIwMCw3IEBACiAJZWNobyAiRmluaXNoZWQgY29weSBvZiBpbml0cmFtZnMgaW50byAuL3VzciIKIH0KIAotSU5JVFJBTUZTX0JBU0VfTkFNRSA9ICJpbml0cmFtZnMtJHtQVn0tJHtQUn0tJHtNQUNISU5FfS0ke0RBVEVUSU1FfSIKK0lOSVRSQU1GU19CQVNFX05BTUUgPz0gImluaXRyYW1mcy0ke1BWfS0ke1BSfS0ke01BQ0hJTkV9LSR7REFURVRJTUV9IgogSU5JVFJBTUZTX0JBU0VfTkFNRVt2YXJkZXBzZXhjbHVkZV0gPSAiREFURVRJTUUiCiBkb19idW5kbGVfaW5pdHJhbWZzICgpIHsKIAlpZiBbICEgLXogIiR7SU5JVFJBTUZTX0lNQUdFfSIgLWEgeCIke0lOSVRSQU1GU19JTUFHRV9CVU5ETEV9IiA9IHgxIF07IHRoZW4KQEAgLTIzMiw4ICsyMjksNyBAQAogCQkJaWYgWyAtbiAiJHJlYWxwYXRoIiBdOyB0aGVuCiAJCQkJbXYgLWYgJHJlYWxwYXRoICRyZWFscGF0aC5pbml0cmFtZnMKIAkJCQltdiAtZiAkcmVhbHBhdGguYmFrICRyZWFscGF0aAotCQkJCWNkICR7Qn0vJHtLRVJORUxfT1VUUFVUX0RJUn0KLQkJCQlsbiAtc2YgJGxpbmtwYXRoLmluaXRyYW1mcworCQkJCWxuIC1zZiAkbGlua3BhdGguaW5pdHJhbWZzICR7Qn0vJHtLRVJORUxfT1VUUFVUX0RJUn0vJHR5cGUuaW5pdHJhbWZzCiAJCQllbHNlCiAJCQkJbXYgLWYgJHtLRVJORUxfT1VUUFVUX0RJUn0vJHR5cGUgJHtLRVJORUxfT1VUUFVUX0RJUn0vJHR5cGUuaW5pdHJhbWZzCiAJCQkJbXYgLWYgJHtLRVJORUxfT1VUUFVUX0RJUn0vJHR5cGUuYmFrICR7S0VSTkVMX09VVFBVVF9ESVJ9LyR0eXBlCkBAIC0yNDcsNiArMjQzLDcgQEAKIAkJZG9uZQogCWZpCiB9Citkb19idW5kbGVfaW5pdHJhbWZzW2RpcnNdID0gIiR7Qn0iCiAKIHB5dGhvbiBkb19kZXZzaGVsbF9wcmVwZW5kICgpIHsKICAgICBvcy5lbnZpcm9uWyJMREZMQUdTIl0gPSAnJwpAQCAtMjkxLDcgKzI4OCw3IEBACiAJCSMgZXh0ZXJuYWwga2VybmVsIG1vZHVsZXMgaGFzIGEgZGVwZW5kZW5jeSBvbgogCQkjIG90aGVyIGtlcm5lbCBtb2R1bGVzIGFuZCB3aWxsIGxvb2sgYXQgdGhpcwogCQkjIGZpbGUgdG8gZG8gc3ltYm9sIGxvb2t1cHMKLQkJY3AgTW9kdWxlLnN5bXZlcnMgJHtTVEFHSU5HX0tFUk5FTF9CVUlMRERJUn0vCisJCWNwICR7Qn0vTW9kdWxlLnN5bXZlcnMgJHtTVEFHSU5HX0tFUk5FTF9CVUlMRERJUn0vCiAJZWxzZQogCQliYm5vdGUgIm5vIG1vZHVsZXMgdG8gY29tcGlsZSIKIAlmaQpAQCAtMzMwLDYgKzMyNywzNiBAQAogfQogZG9faW5zdGFsbFtwcmVmdW5jc10gKz0gInBhY2thZ2VfZ2V0X2F1dG9fcHIiCiAKKyMgTXVzdCBiZSByYW4gbm8gZWFybGllciB0aGFuIGFmdGVyIGRvX2tlcm5lbF9jaGVja291dCBvciBlbHNlIE1ha2VmaWxlIHdvbid0IGJlIGluICR7U30vTWFrZWZpbGUKK2RvX2tlcm5lbF92ZXJzaW9uX3Nhbml0eV9jaGVjaygpIHsKKwkjIFRoZSBNYWtlZmlsZSBkZXRlcm1pbmVzIHRoZSBrZXJuZWwgdmVyc2lvbiBzaG93biBhdCBydW50aW1lCisJIyBEb24ndCB1c2UgS0VSTkVMX1ZFUlNJT04gYmVjYXVzZSB0aGUgaGVhZGVycyBpdCBncmFicyB0aGUgdmVyc2lvbiBmcm9tIGFyZW4ndCBnZW5lcmF0ZWQgdW50aWwgZG9fY29tcGlsZQorCVZFUlNJT049JChncmVwICJeVkVSU0lPTiA9IiAke1N9L01ha2VmaWxlIHwgc2VkIHMvLio9XCAqLy8pCisJUEFUQ0hMRVZFTD0kKGdyZXAgIl5QQVRDSExFVkVMID0iICR7U30vTWFrZWZpbGUgfCBzZWQgcy8uKj1cICovLykKKwlTVUJMRVZFTD0kKGdyZXAgIl5TVUJMRVZFTCA9IiAke1N9L01ha2VmaWxlIHwgc2VkIHMvLio9XCAqLy8pCisJRVhUUkFWRVJTSU9OPSQoZ3JlcCAiXkVYVFJBVkVSU0lPTiA9IiAke1N9L01ha2VmaWxlIHwgc2VkIHMvLio9XCAqLy8pCisKKwkjIEJ1aWxkIGEgc3RyaW5nIGZvciByZWdleCBhbmQgYSBwbGFpbiB2ZXJzaW9uIHN0cmluZworCXJlZz0iXiR7VkVSU0lPTn1cLiR7UEFUQ0hMRVZFTH0iCisJdmVycz0iJHtWRVJTSU9OfS4ke1BBVENITEVWRUx9IgorCWlmIFsgLW4gIiR7U1VCTEVWRUx9IiBdOyB0aGVuCisJCSMgSWdub3JpbmcgYSBTVUJMRVZFTCBvZiB6ZXJvIGlzIGZpbmUKKwkJaWYgWyAiJHtTVUJMRVZFTH0iID0gIjAiIF07IHRoZW4KKwkJCXJlZz0iJHtyZWd9KFwuJHtTVUJMRVZFTH0pPyIKKwkJZWxzZQorCQkJcmVnPSIke3JlZ31cLiR7U1VCTEVWRUx9IgorCQkJdmVycz0iJHt2ZXJzfS4ke1NVQkxFVkVMfSIKKwkJZmkKKwlmaQorCXZlcnM9IiR7dmVyc30ke0VYVFJBVkVSU0lPTn0iCisJcmVnPSIke3JlZ30ke0VYVFJBVkVSU0lPTn0iCisKKwlpZiBbIC16IGBlY2hvICR7UFZ9IHwgZ3JlcCAtRSAiJHtyZWd9ImAgXTsgdGhlbgorCQliYmZhdGFsICJQYWNrYWdlIFZlcnNpb24gKCR7UFZ9KSBkb2VzIG5vdCBtYXRjaCBvZiBrZXJuZWwgYmVpbmcgYnVpbHQgKCR7dmVyc30pLiBQbGVhc2UgdXBkYXRlIHRoZSBQViB2YXJpYWJsZSB0byBtYXRjaCB0aGUga2VybmVsIHNvdXJjZS4iCisJZmkKKwlleGl0IDAKK30KKwogYWRkdGFzayBzaGFyZWRfd29ya2RpciBhZnRlciBkb19jb21waWxlIGJlZm9yZSBkb19jb21waWxlX2tlcm5lbG1vZHVsZXMKIGFkZHRhc2sgc2hhcmVkX3dvcmtkaXJfc2V0c2NlbmUKIApAQCAtMzY0LDYgKzM5MSwxNCBAQAogCWNwIC5jb25maWcgJGtlcm5lbGRpci8KIAlta2RpciAtcCAka2VybmVsZGlyL2luY2x1ZGUvY29uZmlnCiAJY3AgaW5jbHVkZS9jb25maWcva2VybmVsLnJlbGVhc2UgJGtlcm5lbGRpci9pbmNsdWRlL2NvbmZpZy9rZXJuZWwucmVsZWFzZQorCWlmIFsgLWUgY2VydHMvc2lnbmluZ19rZXkucGVtIF07IHRoZW4KKwkJIyBUaGUgc2lnbmluZ19rZXkuKiBmaWxlcyBhcmUgc3RvcmVkIGluIHRoZSBjZXJ0cy8gZGlyIGluCisJCSMgbmV3ZXIgTGludXgga2VybmVscworCQlta2RpciAtcCAka2VybmVsZGlyL2NlcnRzCisJCWNwIGNlcnRzL3NpZ25pbmdfa2V5LiogJGtlcm5lbGRpci9jZXJ0cy8KKwllbGlmIFsgLWUgc2lnbmluZ19rZXkucHJpdiBdOyB0aGVuCisJCWNwIHNpZ25pbmdfa2V5LiogJGtlcm5lbGRpci8KKwlmaQogCiAJIyBXZSBjYW4gYWxzbyBjb3B5IG92ZXIgYWxsIHRoZSBnZW5lcmF0ZWQgZmlsZXMgYW5kIGF2b2lkIHNwZWNpYWwgY2FzZXMKIAkjIGxpa2UgdmVyc2lvbi5oLCBidXQgd2UndmUgb3B0ZWQgdG8ga2VlcCB0aGlzIHNtYWxsIHVudGlsIGZpbGUgY3JlZXAgc3RhcnRzCkBAIC00MzQsNiArNDY5LDcgQEAKIH0KIAogZG9fc2F2ZWRlZmNvbmZpZygpIHsKKwliYnBsYWluICJTYXZpbmcgZGVmY29uZmlnIHRvOlxuJHtCfS9kZWZjb25maWciCiAJb2VfcnVubWFrZSAtQyAke0J9IHNhdmVkZWZjb25maWcKIH0KIGRvX3NhdmVkZWZjb25maWdbbm9zdGFtcF0gPSAiMSIKQEAgLTQ4NCwxNSArNTIwLDE4IEBACiB9CiAKICMgTWFueSBzY3JpcHRzIHdhbnQgdG8gbG9vayBpbiBhcmNoLyRhcmNoL2Jvb3QgZm9yIHRoZSBib290YWJsZQotIyBpbWFnZS4gVGhpcyBwb3NlcyBhIHByb2JsZW0gZm9yIHZtbGludXggYmFzZWQgYm9vdGluZy4gVGhpcyAKLSMgdGFzayBhcnJhbmdlcyB0byBoYXZlIHZtbGludXggYXBwZWFyIGluIHRoZSBub3JtYWxpemVkIGRpcmVjdG9yeQotIyBsb2NhdGlvbi4KLWRvX2tlcm5lbF9saW5rX3ZtbGludXgoKSB7CisjIGltYWdlLiBUaGlzIHBvc2VzIGEgcHJvYmxlbSBmb3Igdm1saW51eCBhbmQgdm1saW51eiBiYXNlZAorIyBib290aW5nLiBUaGlzIHRhc2sgYXJyYW5nZXMgdG8gaGF2ZSB2bWxpbnV4IGFuZCB2bWxpbnV6IGFwcGVhcgorIyBpbiB0aGUgbm9ybWFsaXplZCBkaXJlY3RvcnkgbG9jYXRpb24uCitkb19rZXJuZWxfbGlua19pbWFnZXMoKSB7CiAJaWYgWyAhIC1kICIke0J9L2FyY2gvJHtBUkNIfS9ib290IiBdOyB0aGVuCiAJCW1rZGlyICR7Qn0vYXJjaC8ke0FSQ0h9L2Jvb3QKIAlmaQogCWNkICR7Qn0vYXJjaC8ke0FSQ0h9L2Jvb3QKIAlsbiAtc2YgLi4vLi4vLi4vdm1saW51eAorCWlmIFsgLWYgLi4vLi4vLi4vdm1saW51eiBdOyB0aGVuCisJCWxuIC1zZiAuLi8uLi8uLi92bWxpbnV6CisJZmkKIH0KIAogZG9fc3RyaXAoKSB7CkBAIC01MjIsNyArNTYxLDcgQEAKIH0KIGRvX3N0cmlwW2RpcnNdID0gIiR7Qn0iCiAKLWFkZHRhc2sgZG9fc3RyaXAgYmVmb3JlIGRvX3NpemVjaGVjayBhZnRlciBkb19rZXJuZWxfbGlua192bWxpbnV4CithZGR0YXNrIGRvX3N0cmlwIGJlZm9yZSBkb19zaXplY2hlY2sgYWZ0ZXIgZG9fa2VybmVsX2xpbmtfaW1hZ2VzCiAKICMgU3VwcG9ydCBjaGVja2luZyB0aGUga2VybmVsIHNpemUgc2luY2Ugc29tZSBrZXJuZWxzIG5lZWQgdG8gcmVzaWRlIGluIHBhcnRpdGlvbnMKICMgd2l0aCBhIGZpeGVkIGxlbmd0aCBvciB0aGVyZSBpcyBhIGxpbWl0IGluIHRyYW5zZmVycmluZyB0aGUga2VybmVsIHRvIG1lbW9yeQpAQCAtNTgzLDggKzYyMiw3IEBACiAJCQlpbml0cmFtZnNfYmFzZV9uYW1lPSR7dHlwZX0tJHtJTklUUkFNRlNfQkFTRV9OQU1FfQogCQkJaW5pdHJhbWZzX3N5bWxpbmtfbmFtZT0ke3R5cGV9LWluaXRyYW1mcy0ke01BQ0hJTkV9CiAJCQlpbnN0YWxsIC1tIDA2NDQgJHtLRVJORUxfT1VUUFVUX0RJUn0vJHt0eXBlfS5pbml0cmFtZnMgJHtERVBMT1lESVJ9LyR7aW5pdHJhbWZzX2Jhc2VfbmFtZX0uYmluCi0JCQljZCAke0RFUExPWURJUn0KLQkJCWxuIC1zZiAke2luaXRyYW1mc19iYXNlX25hbWV9LmJpbiAke2luaXRyYW1mc19zeW1saW5rX25hbWV9LmJpbgorCQkJbG4gLXNmICR7aW5pdHJhbWZzX2Jhc2VfbmFtZX0uYmluICR7REVQTE9ZRElSfS8ke2luaXRyYW1mc19zeW1saW5rX25hbWV9LmJpbgogCQlmaQogCWRvbmUKIH0KQEAgLTU5NSw0ICs2MzMsMyBAQAogYWRkdGFzayBkZXBsb3kgYWZ0ZXIgZG9fcG9wdWxhdGVfc3lzcm9vdAogCiBFWFBPUlRfRlVOQ1RJT05TIGRvX2RlcGxveQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2xpYmMtY29tbW9uLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2xpYmMtY29tbW9uLmJiY2xhc3MKaW5kZXggYmJjODAxNi4uMTFiMDA2NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9saWJjLWNvbW1vbi5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbGliYy1jb21tb24uYmJjbGFzcwpAQCAtNCwxNCArNCwxMiBAQAogCQloPWBlY2hvICRyfHNlZCAtZSdzLFwueCQsLmgsJ2AKIAkJaW5zdGFsbCAtbSAwNjQ0ICR7U30vc3VucnBjL3JwY3N2Yy8kaCAke0R9LyR7aW5jbHVkZWRpcn0vcnBjc3ZjLwogCWRvbmUKLQlpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS8gCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vZXRjL2xkLnNvLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9LworCWluc3RhbGwgLURtIDA2NDQgJHtXT1JLRElSfS9ldGMvbGQuc28uY29uZiAke0R9LyR7c3lzY29uZmRpcn0vbGQuc28uY29uZgogCWluc3RhbGwgLWQgJHtEfSR7bG9jYWxlZGlyfQogCW1ha2UgLWYgJHtXT1JLRElSfS9nZW5lcmF0ZS1zdXBwb3J0ZWQubWsgSU49IiR7U30vbG9jYWxlZGF0YS9TVVBQT1JURUQiIE9VVD0iJHtXT1JLRElSfS9TVVBQT1JURUQiCiAJIyBnZXQgcmlkIG9mIHNvbWUgYnJva2VuIGZpbGVzLi4uCiAJZm9yIGkgaW4gJHtHTElCQ19CUk9LRU5fTE9DQUxFU307IGRvCi0JCWdyZXAgLXYgJGkgJHtXT1JLRElSfS9TVVBQT1JURUQgPiAke1dPUktESVJ9L1NVUFBPUlRFRC50bXAKLQkJbXYgJHtXT1JLRElSfS9TVVBQT1JURUQudG1wICR7V09SS0RJUn0vU1VQUE9SVEVECisJCXNlZCAtaSAiLyRpL2QiICR7V09SS0RJUn0vU1VQUE9SVEVECiAJZG9uZQogCXJtIC1mICR7RH0ke3N5c2NvbmZkaXJ9L3JwYwogCXJtIC1yZiAke0R9JHtkYXRhZGlyfS96b25laW5mbwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9saWJjLXBhY2thZ2UuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbGliYy1wYWNrYWdlLmJiY2xhc3MKaW5kZXggNDY3ZDU2Ny4uMmRjOTBjNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9saWJjLXBhY2thZ2UuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2xpYmMtcGFja2FnZS5iYmNsYXNzCkBAIC00NywxNSArNDcsNiBAQAogCiBPVkVSUklERVNfYXBwZW5kID0gIjoke1RBUkdFVF9BUkNIfS0ke1RBUkdFVF9PU30iCiAKLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgICAgICBpZiBbIC1lICR7U30vZWxmL2xkZC5iYXNoLmluIF07IHRoZW4KLSAgICAgICAgICAgICAgICBzZWQgLWUgInMjQEJBU0hAIy9iaW4vc2gjIiAtaSAke1N9L2VsZi9sZGQuYmFzaC5pbgotICAgICAgICBmaQotfQotCi0KLQotIyBpbmRlbnRhdGlvbiByZW1vdmVkIG9uIHB1cnBvc2UKIGxvY2FsZV9iYXNlX3Bvc3RpbnN0KCkgewogIyEvYmluL3NoCiAKQEAgLTYzLDMzICs1NCwxNCBAQAogCWV4aXQgMQogZmkKIAotcm0gLXJmICR7VE1QX0xPQ0FMRX0KLW1rZGlyIC1wICR7VE1QX0xPQ0FMRX0KLWlmIFsgLWYgJHtsb2NhbGVkaXJ9L2xvY2FsZS1hcmNoaXZlIF07IHRoZW4KLSAgICAgICAgY3AgJHtsb2NhbGVkaXJ9L2xvY2FsZS1hcmNoaXZlICR7VE1QX0xPQ0FMRX0vCi1maQotbG9jYWxlZGVmIC0taW5wdXRmaWxlPSR7ZGF0YWRpcn0vaTE4bi9sb2NhbGVzLyVzIC0tY2hhcm1hcD0lcyAtLXByZWZpeD0vdG1wL2xvY2FsZSAlcwotbWtkaXIgLXAgJHtsb2NhbGVkaXJ9LwotbXYgJHtUTVBfTE9DQUxFfS9sb2NhbGUtYXJjaGl2ZSAke2xvY2FsZWRpcn0vCi1ybSAtcmYgJHtUTVBfTE9DQUxFfQorbG9jYWxlZGVmIC0taW5wdXRmaWxlPSR7ZGF0YWRpcn0vaTE4bi9sb2NhbGVzLyVzIC0tY2hhcm1hcD0lcyAlcwogfQogCi0jIGluZGVudGF0aW9uIHJlbW92ZWQgb24gcHVycG9zZQogbG9jYWxlX2Jhc2VfcG9zdHJtKCkgewogIyEvYmluL3NoCi0KLXJtIC1yZiAke1RNUF9MT0NBTEV9Ci1ta2RpciAtcCAke1RNUF9MT0NBTEV9Ci1pZiBbIC1mICR7bG9jYWxlZGlyfS9sb2NhbGUtYXJjaGl2ZSBdOyB0aGVuCi0JY3AgJHtsb2NhbGVkaXJ9L2xvY2FsZS1hcmNoaXZlICR7VE1QX0xPQ0FMRX0vCi1maQotbG9jYWxlZGVmIC0tZGVsZXRlLWZyb20tYXJjaGl2ZSAtLWlucHV0ZmlsZT0ke2RhdGFkaXJ9L2xvY2FsZXMvJXMgLS1jaGFybWFwPSVzIC0tcHJlZml4PS90bXAvbG9jYWxlICVzCi1tdiAke1RNUF9MT0NBTEV9L2xvY2FsZS1hcmNoaXZlICR7bG9jYWxlZGlyfS8KLXJtIC1yZiAke1RNUF9MT0NBTEV9Citsb2NhbGVkZWYgLS1kZWxldGUtZnJvbS1hcmNoaXZlIC0taW5wdXRmaWxlPSR7ZGF0YWRpcn0vbG9jYWxlcy8lcyAtLWNoYXJtYXA9JXMgJXMKIH0KIAotCi1UTVBfTE9DQUxFPSIvdG1wL2xvY2FsZSR7bG9jYWxlZGlyfSIKIExPQ0FMRVRSRUVTUkMgPz0gIiR7UEtHRH0iCiAKIGRvX3ByZXBfbG9jYWxlX3RyZWUoKSB7CkBAIC0xNTAsNiArMTIyLDcgQEAKICAgICAgICAgY19yZSA9IHJlLmNvbXBpbGUoJ15jb3B5ICIoLiopIicpCiAgICAgICAgIGlfcmUgPSByZS5jb21waWxlKCdeaW5jbHVkZSAiKFx3KykiLionKQogICAgICAgICBmb3IgbCBpbiBmLnJlYWRsaW5lcygpOgorICAgICAgICAgICAgbCA9IGwuZGVjb2RlKCJsYXRpbi0xIikKICAgICAgICAgICAgIG0gPSBjX3JlLm1hdGNoKGwpIG9yIGlfcmUubWF0Y2gobCkKICAgICAgICAgICAgIGlmIG06CiAgICAgICAgICAgICAgICAgZHAgPSBsZWdpdGltaXplX3BhY2thZ2VfbmFtZSgnJXMlcy1nY29udi0lcycgJSAobWxwcmVmaXgsIGJwbiwgbS5ncm91cCgxKSkpCkBAIC0xNzEsNiArMTQ0LDcgQEAKICAgICAgICAgY19yZSA9IHJlLmNvbXBpbGUoJ15jb3B5ICIoLiopIicpCiAgICAgICAgIGlfcmUgPSByZS5jb21waWxlKCdeaW5jbHVkZSAiKFx3KykiLionKQogICAgICAgICBmb3IgbCBpbiBmLnJlYWRsaW5lcygpOgorICAgICAgICAgICAgbCA9IGwuZGVjb2RlKCJsYXRpbi0xIikKICAgICAgICAgICAgIG0gPSBjX3JlLm1hdGNoKGwpIG9yIGlfcmUubWF0Y2gobCkKICAgICAgICAgICAgIGlmIG06CiAgICAgICAgICAgICAgICAgZHAgPSBsZWdpdGltaXplX3BhY2thZ2VfbmFtZSgnJXMlcy1jaGFybWFwLSVzJyAlIChtbHByZWZpeCwgYnBuLCBtLmdyb3VwKDEpKSkKQEAgLTE5MSw2ICsxNjUsNyBAQAogICAgICAgICBjX3JlID0gcmUuY29tcGlsZSgnXmNvcHkgIiguKikiJykKICAgICAgICAgaV9yZSA9IHJlLmNvbXBpbGUoJ15pbmNsdWRlICIoXHcrKSIuKicpCiAgICAgICAgIGZvciBsIGluIGYucmVhZGxpbmVzKCk6CisgICAgICAgICAgICBsID0gbC5kZWNvZGUoImxhdGluLTEiKQogICAgICAgICAgICAgbSA9IGNfcmUubWF0Y2gobCkgb3IgaV9yZS5tYXRjaChsKQogICAgICAgICAgICAgaWYgbToKICAgICAgICAgICAgICAgICBkcCA9IGxlZ2l0aW1pemVfcGFja2FnZV9uYW1lKG1scHJlZml4K2JwbisnLWxvY2FsZWRhdGEtJXMnICUgbS5ncm91cCgxKSkKQEAgLTIyMyw3ICsxOTgsNyBAQAogICAgICMgR0xJQkNfR0VORVJBVEVfTE9DQUxFUyB2YXIgc3BlY2lmaWVzIHdoaWNoIGxvY2FsZXMgdG8gYmUgZ2VuZXJhdGVkLiBlbXB0eSBvciAiYWxsIiBtZWFucyBhbGwgbG9jYWxlcwogICAgIHRvX2dlbmVyYXRlID0gZC5nZXRWYXIoJ0dMSUJDX0dFTkVSQVRFX0xPQ0FMRVMnLCBUcnVlKQogICAgIGlmIG5vdCB0b19nZW5lcmF0ZSBvciB0b19nZW5lcmF0ZSA9PSAnYWxsJzoKLSAgICAgICAgdG9fZ2VuZXJhdGUgPSBzdXBwb3J0ZWQua2V5cygpCisgICAgICAgIHRvX2dlbmVyYXRlID0gc29ydGVkKHN1cHBvcnRlZC5rZXlzKCkpCiAgICAgZWxzZToKICAgICAgICAgdG9fZ2VuZXJhdGUgPSB0b19nZW5lcmF0ZS5zcGxpdCgpCiAgICAgICAgIGZvciBsb2NhbGUgaW4gdG9fZ2VuZXJhdGU6CkBAIC0yNzQsOSArMjQ5LDEzIEBACiAgICAgICAgICAgICAgICAgInBvd2VycGMiOiAiIC0tdWludDMyLWFsaWduPTQgLS1iaWctZW5kaWFuICIsICAgIFwKICAgICAgICAgICAgICAgICAicG93ZXJwYzY0IjogIiAtLXVpbnQzMi1hbGlnbj00IC0tYmlnLWVuZGlhbiAiLCAgXAogICAgICAgICAgICAgICAgICJtaXBzIjogICAgIiAtLXVpbnQzMi1hbGlnbj00IC0tYmlnLWVuZGlhbiAiLCAgICBcCisgICAgICAgICAgICAgICAgIm1pcHNpc2EzMnI2IjogICAgIiAtLXVpbnQzMi1hbGlnbj00IC0tYmlnLWVuZGlhbiAiLCAgICBcCiAgICAgICAgICAgICAgICAgIm1pcHM2NCI6ICAiIC0tdWludDMyLWFsaWduPTQgLS1iaWctZW5kaWFuICIsICAgIFwKKyAgICAgICAgICAgICAgICAibWlwc2lzYTY0cjYiOiAgIiAtLXVpbnQzMi1hbGlnbj00IC0tYmlnLWVuZGlhbiAiLCAgICBcCiAgICAgICAgICAgICAgICAgIm1pcHNlbCI6ICAiIC0tdWludDMyLWFsaWduPTQgLS1saXR0bGUtZW5kaWFuICIsIFwKKyAgICAgICAgICAgICAgICAibWlwc2lzYTMycjZlbCI6ICAiIC0tdWludDMyLWFsaWduPTQgLS1saXR0bGUtZW5kaWFuICIsIFwKICAgICAgICAgICAgICAgICAibWlwczY0ZWwiOiIgLS11aW50MzItYWxpZ249NCAtLWxpdHRsZS1lbmRpYW4gIiwgXAorICAgICAgICAgICAgICAgICJtaXBzaXNhNjRyNmVsIjoiIC0tdWludDMyLWFsaWduPTQgLS1saXR0bGUtZW5kaWFuICIsIFwKICAgICAgICAgICAgICAgICAiaTU4NiI6ICAgICIgLS11aW50MzItYWxpZ249NCAtLWxpdHRsZS1lbmRpYW4gIiwgXAogICAgICAgICAgICAgICAgICJpNjg2IjogICAgIiAtLXVpbnQzMi1hbGlnbj00IC0tbGl0dGxlLWVuZGlhbiAiLCBcCiAgICAgICAgICAgICAgICAgIng4Nl82NCI6ICAiIC0tdWludDMyLWFsaWduPTQgLS1saXR0bGUtZW5kaWFuICIgIH0KQEAgLTI4NSw5ICsyNjQsOSBAQAogICAgICAgICAgICAgICAgIGxvY2FsZWRlZl9vcHRzID0gbG9jYWxlX2FyY2hfb3B0aW9uc1t0YXJnZXRfYXJjaF0KICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgYmIuZXJyb3IoImxvY2FsZV9hcmNoX29wdGlvbnMgbm90IGZvdW5kIGZvciB0YXJnZXRfYXJjaD0iICsgdGFyZ2V0X2FyY2gpCi0gICAgICAgICAgICAgICAgcmFpc2UgYmIuYnVpbGQuRnVuY0ZhaWxlZCgidW5rbm93biBhcmNoOiIgKyB0YXJnZXRfYXJjaCArICIgZm9yIGxvY2FsZV9hcmNoX29wdGlvbnMiKQorICAgICAgICAgICAgICAgIGJiLmZhdGFsKCJ1bmtub3duIGFyY2g6IiArIHRhcmdldF9hcmNoICsgIiBmb3IgbG9jYWxlX2FyY2hfb3B0aW9ucyIpCiAKLSAgICAgICAgICAgIGxvY2FsZWRlZl9vcHRzICs9ICIgLS1mb3JjZSAtLW9sZC1zdHlsZSAtLW5vLWFyY2hpdmUgLS1wcmVmaXg9JXMgXAorICAgICAgICAgICAgbG9jYWxlZGVmX29wdHMgKz0gIiAtLWZvcmNlICAtLW5vLWFyY2hpdmUgLS1wcmVmaXg9JXMgXAogICAgICAgICAgICAgICAgIC0taW5wdXRmaWxlPSVzLyVzL2kxOG4vbG9jYWxlcy8lcyAtLWNoYXJtYXA9JXMgJXMvJXMiIFwKICAgICAgICAgICAgICAgICAlICh0cmVlZGlyLCB0cmVlZGlyLCBkYXRhZGlyLCBsb2NhbGUsIGVuY29kaW5nLCBvdXRwdXRwYXRoLCBuYW1lKQogCkBAIC0yOTUsNyArMjc0LDcgQEAKICAgICAgICAgICAgICAgICAocGF0aCwgaTE4bnBhdGgsIGdjb252cGF0aCwgbG9jYWxlZGVmX29wdHMpCiAgICAgICAgIGVsc2U6ICMgZWFybGllciBzbG93ZXIgcWVtdSB3YXkgCiAgICAgICAgICAgICBxZW11ID0gcWVtdV90YXJnZXRfYmluYXJ5KGQpIAotICAgICAgICAgICAgbG9jYWxlZGVmX29wdHMgPSAiLS1mb3JjZSAtLW9sZC1zdHlsZSAtLW5vLWFyY2hpdmUgLS1wcmVmaXg9JXMgXAorICAgICAgICAgICAgbG9jYWxlZGVmX29wdHMgPSAiLS1mb3JjZSAtLW5vLWFyY2hpdmUgLS1wcmVmaXg9JXMgXAogICAgICAgICAgICAgICAgIC0taW5wdXRmaWxlPSVzL2kxOG4vbG9jYWxlcy8lcyAtLWNoYXJtYXA9JXMgJXMiIFwKICAgICAgICAgICAgICAgICAlICh0cmVlZGlyLCBkYXRhZGlyLCBsb2NhbGUsIGVuY29kaW5nLCBuYW1lKQogCkBAIC0zODgsNCArMzY3LDMgQEAKIHB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKICAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ3BhY2thZ2VfZG9fc3BsaXRfZ2NvbnZzJywgZCkKIH0KLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9saWNlbnNlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2xpY2Vuc2UuYmJjbGFzcwppbmRleCA0Mzk0NGU2Li5kYTRmYzNlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2xpY2Vuc2UuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2xpY2Vuc2UuYmJjbGFzcwpAQCAtMTgxLDggKzE4MSwxMCBAQAogICAgICAgICAgICAgICAgIGtleSx2YWwgPSBsaW5lLnNwbGl0KCI6ICIsIDEpCiAgICAgICAgICAgICAgICAgbWFuX2RpY1tkZXBdW2tleV0gPSB2YWxbOi0xXQogCi0gICAgaW1hZ2VfbGljZW5zZV9tYW5pZmVzdCA9IG9zLnBhdGguam9pbihkLmdldFZhcignTElDRU5TRV9ESVJFQ1RPUlknLCBUcnVlKSwKLSAgICAgICAgICAgIGQuZ2V0VmFyKCdJTUFHRV9OQU1FJywgVHJ1ZSksICdpbWFnZV9saWNlbnNlLm1hbmlmZXN0JykKKyAgICBsaWNfbWFuaWZlc3RfZGlyID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCdMSUNFTlNFX0RJUkVDVE9SWScsIFRydWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5nZXRWYXIoJ0lNQUdFX05BTUUnLCBUcnVlKSkKKyAgICBiYi51dGlscy5ta2RpcmhpZXIobGljX21hbmlmZXN0X2RpcikKKyAgICBpbWFnZV9saWNlbnNlX21hbmlmZXN0ID0gb3MucGF0aC5qb2luKGxpY19tYW5pZmVzdF9kaXIsICdpbWFnZV9saWNlbnNlLm1hbmlmZXN0JykKICAgICB3cml0ZV9saWNlbnNlX2ZpbGVzKGQsIGltYWdlX2xpY2Vuc2VfbWFuaWZlc3QsIG1hbl9kaWMpCiAKIGRlZiBnZXRfZGVwbG95ZWRfZGVwZW5kZW5jaWVzKGQpOgpAQCAtMTk4LDcgKzIwMCw3IEBACiAgICAgIyBpdCBtaWdodCBjb250YWluIHRoZSBib290bG9hZGVyLgogICAgIHRhc2tkYXRhID0gZC5nZXRWYXIoIkJCX1RBU0tERVBEQVRBIiwgRmFsc2UpCiAgICAgZGVwZW5kcyA9IGxpc3Qoc2V0KFtkZXBbMF0gZm9yIGRlcAotICAgICAgICAgICAgICAgICAgICBpbiB0YXNrZGF0YS5pdGVydmFsdWVzKCkKKyAgICAgICAgICAgICAgICAgICAgaW4gbGlzdCh0YXNrZGF0YS52YWx1ZXMoKSkKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGRlcFswXS5lbmRzd2l0aCgiLW5hdGl2ZSIpXSkpCiAgICAgZXh0cmFfZGVwZW5kcyA9IGQuZ2V0VmFyKCJFWFRSQV9JTUFHRURFUEVORFMiLCBUcnVlKQogICAgIGJvb3RfZGVwZW5kcyA9IGdldF9ib290X2RlcGVuZGVuY2llcyhkKQpAQCAtMjU5LDcgKzI2MSw3IEBACiAgICAgICAgICAgICBkZXBlbmRzLmFwcGVuZChkZXApCiAgICAgICAgICMgV2UgbmVlZCB0byBzZWFyY2ggZm9yIHRoZSBwcm92aWRlciBvZiB0aGUgZGVwZW5kZW5jeQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgZm9yIHRhc2tkZXAgaW4gdGFza2RlcGRhdGEuaXRlcnZhbHVlcygpOgorICAgICAgICAgICAgZm9yIHRhc2tkZXAgaW4gdGFza2RlcGRhdGEudmFsdWVzKCk6CiAgICAgICAgICAgICAgICAgIyBUaGUgZmlmdGggZmllbGQgY29udGFpbnMgd2hhdCB0aGUgdGFzayBwcm92aWRlcwogICAgICAgICAgICAgICAgIGlmIGRlcCBpbiB0YXNrZGVwWzRdOgogICAgICAgICAgICAgICAgICAgICBpbmZvX2ZpbGUgPSBvcy5wYXRoLmpvaW4oCkBAIC0zNDAsNiArMzQyLDcgQEAKIAogZGVmIGNvcHlfbGljZW5zZV9maWxlcyhsaWNfZmlsZXNfcGF0aHMsIGRlc3RkaXIpOgogICAgIGltcG9ydCBzaHV0aWwKKyAgICBpbXBvcnQgZXJybm8KIAogICAgIGJiLnV0aWxzLm1rZGlyaGllcihkZXN0ZGlyKQogICAgIGZvciAoYmFzZW5hbWUsIHBhdGgpIGluIGxpY19maWxlc19wYXRoczoKQEAgLTM0OCwxMiArMzUxLDIxIEBACiAgICAgICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4oZGVzdGRpciwgYmFzZW5hbWUpCiAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhkc3QpOgogICAgICAgICAgICAgICAgIG9zLnJlbW92ZShkc3QpCi0gICAgICAgICAgICBpZiBvcy5hY2Nlc3Moc3JjLCBvcy5XX09LKSBhbmQgKG9zLnN0YXQoc3JjKS5zdF9kZXYgPT0gb3Muc3RhdChkZXN0ZGlyKS5zdF9kZXYpOgotICAgICAgICAgICAgICAgIG9zLmxpbmsoc3JjLCBkc3QpCisgICAgICAgICAgICBjYW5saW5rID0gb3MuYWNjZXNzKHNyYywgb3MuV19PSykgYW5kIChvcy5zdGF0KHNyYykuc3RfZGV2ID09IG9zLnN0YXQoZGVzdGRpcikuc3RfZGV2KQorICAgICAgICAgICAgaWYgY2FubGluazoKICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIG9zLmNob3duKGRzdCwwLDApCisgICAgICAgICAgICAgICAgICAgIG9zLmxpbmsoc3JjLCBkc3QpCiAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgICAgICAgICBpbXBvcnQgZXJybm8KKyAgICAgICAgICAgICAgICAgICAgaWYgZXJyLmVycm5vID09IGVycm5vLkVYREVWOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBDb3B5IGxpY2Vuc2UgZmlsZXMgaWYgaGFyZC1saW5rIGlzIG5vdCBwb3NzaWJsZSBldmVuIGlmIHN0X2RldiBpcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICMgc2FtZSBvbiBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIChkb2NrZXIgY29udGFpbmVyIHdpdGggZGV2aWNlLW1hcHBlcj8pCisgICAgICAgICAgICAgICAgICAgICAgICBjYW5saW5rID0gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBpZiBjYW5saW5rOgorICAgICAgICAgICAgICAgICAgICAgICAgb3MuY2hvd24oZHN0LDAsMCkKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CiAgICAgICAgICAgICAgICAgICAgIGlmIGVyci5lcnJubyBpbiAoZXJybm8uRVBFUk0sIGVycm5vLkVJTlZBTCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAjIFN1cHByZXNzICJPcGVyYXRpb24gbm90IHBlcm1pdHRlZCIgZXJyb3IsIGFzCiAgICAgICAgICAgICAgICAgICAgICAgICAjIHNvbWV0aW1lcyB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBleGVjdXRlZCB1bmRlciBwc2V1ZG8uCkBAIC0zNjIsNyArMzc0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgbm90IGNhbmxpbms6CiAgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNyYywgZHN0KQogICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICBiYi53YXJuKCJDb3VsZCBub3QgY29weSBsaWNlbnNlIGZpbGUgJXMgdG8gJXM6ICVzIiAlIChzcmMsIGRzdCwgZSkpCkBAIC0zNzMsMjEgKzM4NSw4IEBACiAgICAgIiIiCiAgICAgaW1wb3J0IHNodXRpbAogICAgIGltcG9ydCBvZS5saWNlbnNlCisgICAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QsIE9yZGVyZWREaWN0CiAKLSAgICBwbiA9IGQuZ2V0VmFyKCdQTicsIFRydWUpCi0gICAgZm9yIHBhY2thZ2UgaW4gZC5nZXRWYXIoJ1BBQ0tBR0VTJywgVHJ1ZSk6Ci0gICAgICAgIGlmIGQuZ2V0VmFyKCdMSUNFTlNFXycgKyBwYWNrYWdlLCBUcnVlKToKLSAgICAgICAgICAgIGxpY2Vuc2VfdHlwZXMgPSBsaWNlbnNlX3R5cGVzICsgJyAmICcgKyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5nZXRWYXIoJ0xJQ0VOU0VfJyArIHBhY2thZ2UsIFRydWUpCi0KLSAgICAjSWYgd2UgZ2V0IGhlcmUgd2l0aCBubyBsaWNlbnNlIHR5cGVzLCB0aGVuIHRoYXQgbWVhbnMgd2UgaGF2ZSBhIHJlY2lwZSAKLSAgICAjbGV2ZWwgbGljZW5zZS4gSWYgc28sIHdlIGdyYWIgb25seSB0aG9zZS4KLSAgICB0cnk6Ci0gICAgICAgIGxpY2Vuc2VfdHlwZXMKLSAgICBleGNlcHQgTmFtZUVycm9yOiAgICAgICAgCi0gICAgICAgICMgQWxsIHRoZSBsaWNlbnNlIHR5cGVzIGF0IHRoZSByZWNpcGUgbGV2ZWwKLSAgICAgICAgbGljZW5zZV90eXBlcyA9IGQuZ2V0VmFyKCdMSUNFTlNFJywgVHJ1ZSkKLSAKICAgICAjIEFsbCB0aGUgbGljZW5zZSBmaWxlcyBmb3IgdGhlIHBhY2thZ2UKICAgICBsaWNfZmlsZXMgPSBkLmdldFZhcignTElDX0ZJTEVTX0NIS1NVTScsIFRydWUpCiAgICAgcG4gPSBkLmdldFZhcignUE4nLCBUcnVlKQpAQCAtMzk3LDYgKzM5Niw4IEBACiAgICAgZ2VuZXJpY19kaXJlY3RvcnkgPSBkLmdldFZhcignQ09NTU9OX0xJQ0VOU0VfRElSJywgVHJ1ZSkKICAgICAjIExpc3Qgb2YgYmFzZW5hbWUsIHBhdGggdHVwbGVzCiAgICAgbGljX2ZpbGVzX3BhdGhzID0gW10KKyAgICAjIEVudHJpZXMgZnJvbSBMSUNfRklMRVNfQ0hLU1VNCisgICAgbGljX2Noa3N1bXMgPSB7fQogICAgIGxpY2Vuc2Vfc291cmNlX2RpcnMgPSBbXQogICAgIGxpY2Vuc2Vfc291cmNlX2RpcnMuYXBwZW5kKGdlbmVyaWNfZGlyZWN0b3J5KQogICAgIHRyeToKQEAgLTQyNiw3ICs0MjcsNiBAQAogICAgICAgICBsaWNlbnNlX3NvdXJjZSA9IE5vbmUKICAgICAgICAgIyBJZiB0aGUgZ2VuZXJpYyBkb2VzIG5vdCBleGlzdCB3ZSBuZWVkIHRvIGNoZWNrIHRvIHNlZSBpZiB0aGVyZSBpcyBhbiBTUERYIG1hcHBpbmcgdG8gaXQsCiAgICAgICAgICMgdW5sZXNzIE5PX0dFTkVSSUNfTElDRU5TRSBpcyBzZXQuCi0KICAgICAgICAgZm9yIGxpY19kaXIgaW4gbGljZW5zZV9zb3VyY2VfZGlyczoKICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4obGljX2RpciwgbGljZW5zZV90eXBlKSk6CiAgICAgICAgICAgICAgICAgaWYgZC5nZXRWYXJGbGFnKCdTUERYTElDRU5TRU1BUCcsIGxpY2Vuc2VfdHlwZSwgVHJ1ZSkgIT0gTm9uZToKQEAgLTQ0MCw2ICs0NDAsNyBAQAogICAgICAgICAgICAgICAgIGxpY2Vuc2Vfc291cmNlID0gbGljX2RpcgogICAgICAgICAgICAgICAgIGJyZWFrCiAKKyAgICAgICAgbm9uX2dlbmVyaWNfbGljID0gZC5nZXRWYXJGbGFnKCdOT19HRU5FUklDX0xJQ0VOU0UnLCBsaWNlbnNlX3R5cGUsIFRydWUpCiAgICAgICAgIGlmIHNwZHhfZ2VuZXJpYyBhbmQgbGljZW5zZV9zb3VyY2U6CiAgICAgICAgICAgICAjIHdlIHJlYWxseSBzaG91bGQgY29weSB0byBnZW5lcmljXyArIHNwZHhfZ2VuZXJpYywgaG93ZXZlciwgdGhhdCBlbmRzIHVwIG1lc3NpbmcgdGhlIG1hbmlmZXN0CiAgICAgICAgICAgICAjIGF1ZGl0IHVwLiBUaGlzIHNob3VsZCBiZSBmaXhlZCBpbiBlbWl0X3BrZ2RhdGEgKG9yLCB3ZSBhY3R1YWxseSBnb3QgYW5kIGZpeCBhbGwgdGhlIHJlY2lwZXMpCkBAIC00NTEsMTMgKzQ1MiwxMSBAQAogICAgICAgICAgICAgaWYgZC5nZXRWYXJGbGFnKCdOT19HRU5FUklDX0xJQ0VOU0UnLCBsaWNlbnNlX3R5cGUsIFRydWUpOgogICAgICAgICAgICAgICAgIGJiLndhcm4oIiVzOiAlcyBpcyBhIGdlbmVyaWMgbGljZW5zZSwgcGxlYXNlIGRvbid0IHVzZSBOT19HRU5FUklDX0xJQ0VOU0UgZm9yIGl0LiIgJSAocG4sIGxpY2Vuc2VfdHlwZSkpCiAKLSAgICAgICAgZWxpZiBkLmdldFZhckZsYWcoJ05PX0dFTkVSSUNfTElDRU5TRScsIGxpY2Vuc2VfdHlwZSwgVHJ1ZSk6CisgICAgICAgIGVsaWYgbm9uX2dlbmVyaWNfbGljIGFuZCBub25fZ2VuZXJpY19saWMgaW4gbGljX2Noa3N1bXM6CiAgICAgICAgICAgICAjIGlmIE5PX0dFTkVSSUNfTElDRU5TRSBpcyBzZXQsIHdlIGNvcHkgdGhlIGxpY2Vuc2UgZmlsZXMgZnJvbSB0aGUgZmV0Y2hlZCBzb3VyY2UKICAgICAgICAgICAgICMgb2YgdGhlIHBhY2thZ2UgcmF0aGVyIHRoYW4gdGhlIGxpY2Vuc2Vfc291cmNlX2RpcnMuCi0gICAgICAgICAgICBmb3IgKGJhc2VuYW1lLCBwYXRoKSBpbiBsaWNfZmlsZXNfcGF0aHM6Ci0gICAgICAgICAgICAgICAgaWYgZC5nZXRWYXJGbGFnKCdOT19HRU5FUklDX0xJQ0VOU0UnLCBsaWNlbnNlX3R5cGUsIFRydWUpID09IGJhc2VuYW1lOgotICAgICAgICAgICAgICAgICAgICBsaWNfZmlsZXNfcGF0aHMuYXBwZW5kKCgiZ2VuZXJpY18iICsgbGljZW5zZV90eXBlLCBwYXRoKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGxpY19maWxlc19wYXRocy5hcHBlbmQoKCJnZW5lcmljXyIgKyBsaWNlbnNlX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3JjZGlyLCBub25fZ2VuZXJpY19saWMpKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgQWRkIGV4cGxpY2l0eSBhdm9pZCBvZiBDTE9TRUQgbGljZW5zZSBiZWNhdXNlIHRoaXMgaXNuJ3QgZ2VuZXJpYwogICAgICAgICAgICAgaWYgbGljZW5zZV90eXBlICE9ICdDTE9TRUQnOgpAQCAtNDY2LDcgKzQ2NSw3IEBACiAgICAgICAgICAgICBwYXNzCiAKICAgICBpZiBub3QgZ2VuZXJpY19kaXJlY3Rvcnk6Ci0gICAgICAgIHJhaXNlIGJiLmJ1aWxkLkZ1bmNGYWlsZWQoIkNPTU1PTl9MSUNFTlNFX0RJUiBpcyB1bnNldC4gUGxlYXNlIHNldCB0aGlzIGluIHlvdXIgZGlzdHJvIGNvbmZpZyIpCisgICAgICAgIGJiLmZhdGFsKCJDT01NT05fTElDRU5TRV9ESVIgaXMgdW5zZXQuIFBsZWFzZSBzZXQgdGhpcyBpbiB5b3VyIGRpc3RybyBjb25maWciKQogCiAgICAgaWYgbm90IGxpY19maWxlczoKICAgICAgICAgIyBObyByZWNpcGUgc2hvdWxkIGhhdmUgYW4gaW52YWxpZCBsaWNlbnNlIGZpbGUuIFRoaXMgaXMgY2hlY2tlZCBlbHNlCkBAIC00NzgsMTkgKzQ3NywzMiBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICAodHlwZSwgaG9zdCwgcGF0aCwgdXNlciwgcHN3ZCwgcGFybSkgPSBiYi5mZXRjaC5kZWNvZGV1cmwodXJsKQogICAgICAgICBleGNlcHQgYmIuZmV0Y2guTWFsZm9ybWVkVXJsOgotICAgICAgICAgICAgcmFpc2UgYmIuYnVpbGQuRnVuY0ZhaWxlZCgiJXM6IExJQ19GSUxFU19DSEtTVU0gY29udGFpbnMgYW4gaW52YWxpZCBVUkw6ICAlcyIgJSAoZC5nZXRWYXIoJ1BGJywgVHJ1ZSksIHVybCkpCisgICAgICAgICAgICBiYi5mYXRhbCgiJXM6IExJQ19GSUxFU19DSEtTVU0gY29udGFpbnMgYW4gaW52YWxpZCBVUkw6ICAlcyIgJSAoZC5nZXRWYXIoJ1BGJywgVHJ1ZSksIHVybCkpCiAgICAgICAgICMgV2Ugd2FudCB0aGUgbGljZW5zZSBmaWxlbmFtZSBhbmQgcGF0aAotICAgICAgICBzcmNsaWNmaWxlID0gb3MucGF0aC5qb2luKHNyY2RpciwgcGF0aCkKLSAgICAgICAgbGljX2ZpbGVzX3BhdGhzLmFwcGVuZCgob3MucGF0aC5iYXNlbmFtZShwYXRoKSwgc3JjbGljZmlsZSkpCisgICAgICAgIGNoa3N1bSA9IHBhcm1bJ21kNSddIGlmICdtZDUnIGluIHBhcm0gZWxzZSBwYXJtWydzaGEyNTYnXQorICAgICAgICBsaWNfY2hrc3Vtc1twYXRoXSA9IGNoa3N1bQogCiAgICAgdiA9IEZpbmRWaXNpdG9yKCkKICAgICB0cnk6Ci0gICAgICAgIHYudmlzaXRfc3RyaW5nKGxpY2Vuc2VfdHlwZXMpCisgICAgICAgIHYudmlzaXRfc3RyaW5nKGQuZ2V0VmFyKCdMSUNFTlNFJywgVHJ1ZSkpCiAgICAgZXhjZXB0IG9lLmxpY2Vuc2UuSW52YWxpZExpY2Vuc2UgYXMgZXhjOgogICAgICAgICBiYi5mYXRhbCgnJXM6ICVzJyAlIChkLmdldFZhcignUEYnLCBUcnVlKSwgZXhjKSkKICAgICBleGNlcHQgU3ludGF4RXJyb3I6CiAgICAgICAgIGJiLndhcm4oIiVzOiBGYWlsZWQgdG8gcGFyc2UgaXQncyBMSUNFTlNFIGZpZWxkLiIgJSAoZC5nZXRWYXIoJ1BGJywgVHJ1ZSkpKQogCisgICAgIyBBZGQgZmlsZXMgZnJvbSBMSUNfRklMRVNfQ0hLU1VNIHRvIGxpc3Qgb2YgbGljZW5zZSBmaWxlcworICAgIGxpY19jaGtzdW1fcGF0aHMgPSBkZWZhdWx0ZGljdChPcmRlcmVkRGljdCkKKyAgICBmb3IgcGF0aCwgY2hrc3VtIGluIGxpY19jaGtzdW1zLml0ZW1zKCk6CisgICAgICAgIGxpY19jaGtzdW1fcGF0aHNbb3MucGF0aC5iYXNlbmFtZShwYXRoKV1bY2hrc3VtXSA9IG9zLnBhdGguam9pbihzcmNkaXIsIHBhdGgpCisgICAgZm9yIGJhc2VuYW1lLCBmaWxlcyBpbiBsaWNfY2hrc3VtX3BhdGhzLml0ZW1zKCk6CisgICAgICAgIGlmIGxlbihmaWxlcykgPT0gMToKKyAgICAgICAgICAgIGxpY19maWxlc19wYXRocy5hcHBlbmQoKGJhc2VuYW1lLCBsaXN0KGZpbGVzLnZhbHVlcygpKVswXSkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBkaWZmZXJlbnQgbGljZW5zZSBmaWxlcyB3aXRoIGlkZW50aWNhbAorICAgICAgICAgICAgIyBiYXNlbmFtZXMgd2UgcmVuYW1lIHRoZW0gdG8gPGZpbGU+LjAsIDxmaWxlPi4xLCAuLi4KKyAgICAgICAgICAgIGZvciBpLCBwYXRoIGluIGVudW1lcmF0ZShmaWxlcy52YWx1ZXMoKSk6CisgICAgICAgICAgICAgICAgbGljX2ZpbGVzX3BhdGhzLmFwcGVuZCgoIiVzLiVkIiAlIChiYXNlbmFtZSwgaSksIHBhdGgpKQorCiAgICAgcmV0dXJuIGxpY19maWxlc19wYXRocwogCiBkZWYgcmV0dXJuX3NwZHgoZCwgbGljZW5zZSk6CkBAIC02MzMsNyArNjQ1LDcgQEAKICAgICBsaWNlbnNlcyA9IGQuZ2V0VmFyKCdMSUNFTlNFJywgVHJ1ZSkKICAgICBmcm9tIG9lLmxpY2Vuc2UgaW1wb3J0IGxpY2Vuc2Vfb3BlcmF0b3IsIGxpY2Vuc2Vfb3BlcmF0b3JfY2hhcnMsIGxpY2Vuc2VfcGF0dGVybgogCi0gICAgZWxlbWVudHMgPSBmaWx0ZXIobGFtYmRhIHg6IHguc3RyaXAoKSwgbGljZW5zZV9vcGVyYXRvci5zcGxpdChsaWNlbnNlcykpCisgICAgZWxlbWVudHMgPSBsaXN0KGZpbHRlcihsYW1iZGEgeDogeC5zdHJpcCgpLCBsaWNlbnNlX29wZXJhdG9yLnNwbGl0KGxpY2Vuc2VzKSkpCiAgICAgZm9yIHBvcywgZWxlbWVudCBpbiBlbnVtZXJhdGUoZWxlbWVudHMpOgogICAgICAgICBpZiBsaWNlbnNlX3BhdHRlcm4ubWF0Y2goZWxlbWVudCk6CiAgICAgICAgICAgICBpZiBwb3MgPiAwIGFuZCBsaWNlbnNlX3BhdHRlcm4ubWF0Y2goZWxlbWVudHNbcG9zIC0gMV0pOgpAQCAtNjU2LDggKzY2OCw2IEBACiBJTUFHRV9QT1NUUFJPQ0VTU19DT01NQU5EX3ByZXBlbmQgPSAid3JpdGVfZGVwbG95X21hbmlmZXN0OyAiCiBkb19pbWFnZVtyZWNyZGVwdGFza10gKz0gImRvX3BvcHVsYXRlX2xpYyIKIAotZG9fcG9wdWxhdGVfbGljX3NldHNjZW5lW2RpcnNdID0gIiR7TElDU1NUQVRFRElSfS8ke1BOfSIKLWRvX3BvcHVsYXRlX2xpY19zZXRzY2VuZVtjbGVhbmRpcnNdID0gIiR7TElDU1NUQVRFRElSfSIKIHB5dGhvbiBkb19wb3B1bGF0ZV9saWNfc2V0c2NlbmUgKCkgewogICAgIHNzdGF0ZV9zZXRzY2VuZShkKQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9saW51eGxvYWRlci5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9saW51eGxvYWRlci5iYmNsYXNzCmluZGV4IDVjNGRjNWMuLjExN2IwMzAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbGludXhsb2FkZXIuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2xpbnV4bG9hZGVyLmJiY2xhc3MKQEAgLTEsNyArMSwxMyBAQAogCiBsaW51eGxvYWRlciAoKSB7CiAJY2FzZSAke1RBUkdFVF9BUkNIfSBpbgotCQlwb3dlcnBjIHwgbWlwcyB8IG1pcHNlbCB8IG1pY3JvYmxhemUgKQorCQlwb3dlcnBjIHwgbWljcm9ibGF6ZSApCisJCQlkeW5hbWljX2xvYWRlcj0iJHtiYXNlX2xpYmRpcn0vbGQuc28uMSIKKwkJCTs7CisJCW1pcHNpc2EzMnI2ZWwgfCBtaXBzaXNhMzJyNiB8IG1pcHNpc2E2NHI2ZWwgfCBtaXBzaXNhNjRyNikKKwkJCWR5bmFtaWNfbG9hZGVyPSIke2Jhc2VfbGliZGlyfS9sZC1saW51eC1taXBzbjguc28uMSIKKwkJCTs7CisJCW1pcHMqICkKIAkJCWR5bmFtaWNfbG9hZGVyPSIke2Jhc2VfbGliZGlyfS9sZC5zby4xIgogCQkJOzsKIAkJcG93ZXJwYzY0KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9saXZlLXZtLWNvbW1vbi5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9saXZlLXZtLWNvbW1vbi5iYmNsYXNzCmluZGV4IGM3NTEzODUuLjczNDY5N2YgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbGl2ZS12bS1jb21tb24uYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2xpdmUtdm0tY29tbW9uLmJiY2xhc3MKQEAgLTMxLDE0ICszMSwxOCBAQAogaW5oZXJpdCAke1BDQklPU19DTEFTU30KIAogS0VSTkVMX0lNQUdFVFlQRSA/Pz0gImJ6SW1hZ2UiCitWTV9ERUZBVUxUX0tFUk5FTCA/Pz0gIiR7S0VSTkVMX0lNQUdFVFlQRX0iCiAKIHBvcHVsYXRlX2tlcm5lbCgpIHsKIAlkZXN0PSQxCiAJaW5zdGFsbCAtZCAkZGVzdAogCiAJIyBJbnN0YWxsIGJ6SW1hZ2UsIGluaXRyZCwgYW5kIHJvb3Rmcy5pbWcgaW4gREVTVCBmb3IgYWxsIGxvYWRlcnMgdG8gdXNlLgotCWlmIFsgLWUgJHtERVBMT1lfRElSX0lNQUdFfS8ke0tFUk5FTF9JTUFHRVRZUEV9IF07IHRoZW4KLQkJaW5zdGFsbCAtbSAwNjQ0ICR7REVQTE9ZX0RJUl9JTUFHRX0vJHtLRVJORUxfSU1BR0VUWVBFfSAkZGVzdC92bWxpbnV6CisJYmJub3RlICJUcnlpbmcgdG8gaW5zdGFsbCAke0RFUExPWV9ESVJfSU1BR0V9LyR7Vk1fREVGQVVMVF9LRVJORUx9IGFzICRkZXN0L3ZtbGludXoiCisJaWYgWyAtZSAke0RFUExPWV9ESVJfSU1BR0V9LyR7Vk1fREVGQVVMVF9LRVJORUx9IF07IHRoZW4KKwkJaW5zdGFsbCAtbSAwNjQ0ICR7REVQTE9ZX0RJUl9JTUFHRX0vJHtWTV9ERUZBVUxUX0tFUk5FTH0gJGRlc3Qvdm1saW51egorCWVsc2UKKwkJYmJ3YXJuICIke0RFUExPWV9ESVJfSU1BR0V9LyR7Vk1fREVGQVVMVF9LRVJORUx9IGRvZXNuJ3QgZXhpc3QiCiAJZmkKIAogCSMgaW5pdHJkIGlzIG1hZGUgb2YgY29uY2F0ZW5hdGlvbiBvZiBtdWx0aXBsZSBmaWxlc3lzdGVtIGltYWdlcwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9tZXRhZGF0YV9zY20uYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbWV0YWRhdGFfc2NtLmJiY2xhc3MKaW5kZXggMGY3ZjQyMy4uMmU2ZmFjMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9tZXRhZGF0YV9zY20uYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL21ldGFkYXRhX3NjbS5iYmNsYXNzCkBAIC00LDggKzQsNyBAQAogZGVmIGJhc2VfZGV0ZWN0X3JldmlzaW9uKGQpOgogICAgIHBhdGggPSBiYXNlX2dldF9zY21iYXNlcGF0aChkKQogCi0gICAgc2NtcyA9IFtiYXNlX2dldF9tZXRhZGF0YV9naXRfcmV2aXNpb24sIFwKLSAgICAgICAgICAgIGJhc2VfZ2V0X21ldGFkYXRhX3N2bl9yZXZpc2lvbl0KKyAgICBzY21zID0gW2Jhc2VfZ2V0X21ldGFkYXRhX2dpdF9yZXZpc2lvbl0KIAogICAgIGZvciBzY20gaW4gc2NtczoKICAgICAgICAgcmV2ID0gc2NtKHBhdGgsIGQpCkBAIC0yNyw3ICsyNiw3IEBACiAgICAgcmV0dXJuICI8dW5rbm93bj4iCiAKIGRlZiBiYXNlX2dldF9zY21iYXNlcGF0aChkKToKLSAgICByZXR1cm4gZC5nZXRWYXIoICdDT1JFQkFTRScsIFRydWUpCisgICAgcmV0dXJuIG9zLnBhdGguam9pbihkLmdldFZhcignQ09SRUJBU0UnLCBUcnVlKSwgJ21ldGEnKQogCiBkZWYgYmFzZV9nZXRfbWV0YWRhdGFfbW9ub3RvbmVfYnJhbmNoKHBhdGgsIGQpOgogICAgIG1vbm90b25lX2JyYW5jaCA9ICI8dW5rbm93bj4iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL21pcnJvcnMuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbWlycm9ycy5iYmNsYXNzCmluZGV4IDllNmQ0ODMuLjExODQ3MDggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbWlycm9ycy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbWlycm9ycy5iYmNsYXNzCkBAIC0yMSwxMyArMjEsMTMgQEAKICR7REVCSUFOX01JUlJPUn0JZnRwOi8vZnRwLnRyLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wgXG4gXAogJHtHTlVfTUlSUk9SfQlmdHA6Ly9taXJyb3JzLmtlcm5lbC5vcmcvZ251IFxuIFwKICR7S0VSTkVMT1JHX01JUlJPUn0JaHR0cDovL3d3dy5rZXJuZWwub3JnL3B1YiBcbiBcCi1mdHA6Ly9mdHAuZ251cGcub3JnL2djcnlwdC8gICAgIGZ0cDovL2Z0cC5mcmFua2VuLmRlL3B1Yi9jcnlwdC9taXJyb3IvZnRwLmdudXBnLm9yZy9nY3J5cHQvIFxuIFwKLWZ0cDovL2Z0cC5nbnVwZy5vcmcvZ2NyeXB0LyAgICAgZnRwOi8vZnRwLnN1cmZuZXQubmwvcHViL3NlY3VyaXR5L2dudXBnLyBcbiBcCi1mdHA6Ly9mdHAuZ251cGcub3JnL2djcnlwdC8gICAgIGh0dHA6Ly9ndWx1cy5VU2hlcmJyb29rZS5jYS9wdWIvYXBwbC9HbnVQRy8gXG4gXAorJHtHTlVQR19NSVJST1J9CWZ0cDovL2Z0cC5nbnVwZy5vcmcvZ2NyeXB0IFxuIFwKKyR7R05VUEdfTUlSUk9SfQlmdHA6Ly9mdHAuZnJhbmtlbi5kZS9wdWIvY3J5cHQvbWlycm9yL2Z0cC5nbnVwZy5vcmcvZ2NyeXB0IFxuIFwKKyR7R05VUEdfTUlSUk9SfQlmdHA6Ly9taXJyb3JzLmRvdHNyYy5vcmcvZ2NyeXB0IFxuIFwKIGZ0cDovL2RhbnRlLmN0YW4ub3JnL3RleC1hcmNoaXZlIGZ0cDovL2Z0cC5mdS1iZXJsaW4uZGUvdGV4L0NUQU4gXG4gXAogZnRwOi8vZGFudGUuY3Rhbi5vcmcvdGV4LWFyY2hpdmUgaHR0cDovL3N1bnNpdGUuc3V0LmFjLmpwL3B1Yi9hcmNoaXZlcy9jdGFuLyBcbiBcCiBmdHA6Ly9kYW50ZS5jdGFuLm9yZy90ZXgtYXJjaGl2ZSBodHRwOi8vY3Rhbi51bnN3LmVkdS5hdS8gXG4gXAotZnRwOi8vZnRwLmdudXRscy5vcmcvZ2NyeXB0L2dudXRscyBmdHA6Ly9mdHAuZ251cGcub3JnL2djcnlwdC9nbnV0bHMvIFxuIFwKK2Z0cDovL2Z0cC5nbnV0bHMub3JnL2djcnlwdC9nbnV0bHMgJHtHTlVQR19NSVJST1J9IFxuIFwKIGh0dHA6Ly9mdHAuaW5mby16aXAub3JnL3B1Yi9pbmZvemlwL3NyYy8gaHR0cDovL21pcnJvci5zd2l0Y2guY2gvZnRwL21pcnJvci9pbmZvemlwL3NyYy8gXG4gXAogaHR0cDovL2Z0cC5pbmZvLXppcC5vcmcvcHViL2luZm96aXAvc3JjLyBmdHA6Ly9zdW5zaXRlLmljbS5lZHUucGwvcHViL3VuaXgvYXJjaGl2aW5nL2luZm8temlwL3NyYy8gXG4gXAogZnRwOi8vbHNvZi5pdGFwLnB1cmR1ZS5lZHUvcHViL3Rvb2xzL3VuaXgvbHNvZi8gIGZ0cDovL2Z0cC5jZXJpYXMucHVyZHVlLmVkdS9wdWIvdG9vbHMvdW5peC9zeXN1dGlscy9sc29mLyBcbiBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL21vZHVsZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9tb2R1bGUuYmJjbGFzcwppbmRleCAwMWM5MzA5Li42OGUzZDM0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL21vZHVsZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbW9kdWxlLmJiY2xhc3MKQEAgLTgsNiArOCwxNSBAQAogCiBNT0RVTEVTX0lOU1RBTExfVEFSR0VUID89ICJtb2R1bGVzX2luc3RhbGwiCiAKK3B5dGhvbiBfX2Fub255bW91cyAoKSB7CisgICAgZGVwZW5kcyA9IGQuZ2V0VmFyKCdERVBFTkRTJywgVHJ1ZSkKKyAgICBleHRyYV9zeW1ib2xzID0gW10KKyAgICBmb3IgZGVwIGluIGRlcGVuZHMuc3BsaXQoKToKKyAgICAgICAgaWYgZGVwLnN0YXJ0c3dpdGgoImtlcm5lbC1tb2R1bGUtIik6CisgICAgICAgICAgICBleHRyYV9zeW1ib2xzLmFwcGVuZCgiJHtTVEFHSU5HX0lOQ0RJUn0vIiArIGRlcCArICIvTW9kdWxlLnN5bXZlcnMiKQorICAgIGQuc2V0VmFyKCdLQlVJTERfRVhUUkFfU1lNQk9MUycsICIgIi5qb2luKGV4dHJhX3N5bWJvbHMpKQorfQorCiBtb2R1bGVfZG9fY29tcGlsZSgpIHsKIAl1bnNldCBDRkxBR1MgQ1BQRkxBR1MgQ1hYRkxBR1MgTERGTEFHUwogCW9lX3J1bm1ha2UgS0VSTkVMX1BBVEg9JHtTVEFHSU5HX0tFUk5FTF9ESVJ9ICAgXApAQCAtMTUsNiArMjQsNyBAQAogCQkgICBDQz0iJHtLRVJORUxfQ0N9IiBMRD0iJHtLRVJORUxfTER9IiBcCiAJCSAgIEFSPSIke0tFUk5FTF9BUn0iIFwKIAkgICAgICAgICAgIE89JHtTVEFHSU5HX0tFUk5FTF9CVUlMRERJUn0gXAorCQkgICBLQlVJTERfRVhUUkFfU1lNQk9MUz0iJHtLQlVJTERfRVhUUkFfU1lNQk9MU30iIFwKIAkJICAgJHtNQUtFX1RBUkdFVFN9CiB9CiAKQEAgLTI0LDYgKzM0LDExIEBACiAJICAgICAgICAgICBDQz0iJHtLRVJORUxfQ0N9IiBMRD0iJHtLRVJORUxfTER9IiBcCiAJICAgICAgICAgICBPPSR7U1RBR0lOR19LRVJORUxfQlVJTERESVJ9IFwKIAkgICAgICAgICAgICR7TU9EVUxFU19JTlNUQUxMX1RBUkdFVH0KKworCWluc3RhbGwgLWQgLW0wNzU1ICR7RH0ke2luY2x1ZGVkaXJ9LyR7QlBOfQorCWNwIC1hIC0tbm8tcHJlc2VydmU9b3duZXJzaGlwICR7Qn0vTW9kdWxlLnN5bXZlcnMgJHtEfSR7aW5jbHVkZWRpcn0vJHtCUE59CisJIyBpdCBkb2Vzbid0IGFjdHVhbGx5IHNlZW0gdG8gbWF0dGVyIHdoaWNoIHBhdGggaXMgc3BlY2lmaWVkIGhlcmUKKwlzZWQgLWUgJ3M6JHtCfS86OmcnIC1pICR7RH0ke2luY2x1ZGVkaXJ9LyR7QlBOfS9Nb2R1bGUuc3ltdmVycwogfQogCiBFWFBPUlRfRlVOQ1RJT05TIGRvX2NvbXBpbGUgZG9faW5zdGFsbApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9tdWx0aWxpYl9nbG9iYWwuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbXVsdGlsaWJfZ2xvYmFsLmJiY2xhc3MKaW5kZXggNjdkYzcyYi4uMTFhZTI2OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9tdWx0aWxpYl9nbG9iYWwuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL211bHRpbGliX2dsb2JhbC5iYmNsYXNzCkBAIC03Miw2ICs3Miw3IEBACiAgICAgICAgICAgICBwa2cgPSBwa2cucmVwbGFjZSgidmlydHVhbC8iLCAiIikKICAgICAgICAgICAgIHZpcnQgPSAidmlydHVhbC8iCiAgICAgICAgIGZvciBwIGluIHByZWZpeGVzOgorICAgICAgICAgICAgbmV3dmFsID0gTm9uZQogICAgICAgICAgICAgaWYgcGtnICE9ICJrZXJuZWwiOgogICAgICAgICAgICAgICAgIG5ld3ZhbCA9IHAgKyAiLSIgKyB2YWwKIApAQCAtODYsNyArODcsNyBAQAogCiAgICAgICAgICAgICAjIGltcGxlbWVudCBhbHRlcm5hdGl2ZSBtdWx0aWxpYiBuYW1lCiAgICAgICAgICAgICBuZXduYW1lID0gbG9jYWxkYXRhLmV4cGFuZCgiUFJFRkVSUkVEX1BST1ZJREVSXyIgKyB2aXJ0ICsgcCArICItIiArIHBrZykKLSAgICAgICAgICAgIGlmIG5vdCBkLmdldFZhcihuZXduYW1lLCBGYWxzZSk6CisgICAgICAgICAgICBpZiBub3QgZC5nZXRWYXIobmV3bmFtZSwgRmFsc2UpIGFuZCBuZXd2YWwgIT0gTm9uZToKICAgICAgICAgICAgICAgICBkLnNldFZhcihuZXduYW1lLCBsb2NhbGRhdGEuZXhwYW5kKG5ld3ZhbCkpCiAgICAgICAgICMgQXZvaWQgZnV0dXJlIHZhcmlhYmxlIGtleSBleHBhbnNpb24KICAgICAgICAgcHJvdmV4cCA9IGQuZXhwYW5kKHByb3YpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL211bHRpbGliX2hlYWRlci5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9tdWx0aWxpYl9oZWFkZXIuYmJjbGFzcwppbmRleCA1ZWUwYTJkLi4zMDRjMjhlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL211bHRpbGliX2hlYWRlci5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbXVsdGlsaWJfaGVhZGVyLmJiY2xhc3MKQEAgLTUyLDMgKzUyLDggQEAKIG9lX211bHRpbGliX2hlYWRlcl9jbGFzcy1uYXRpdmUgKCkgewogCXJldHVybgogfQorCisjIE5vciBkbyB3ZSBuZWVkIG11bHRpbGliIGhlYWRlcnMgZm9yIG5hdGl2ZXNkayBidWlsZHMuCitvZV9tdWx0aWxpYl9oZWFkZXJfY2xhc3MtbmF0aXZlc2RrICgpIHsKKwlyZXR1cm4KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbmF0aXZlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL25hdGl2ZS5iYmNsYXNzCmluZGV4IGY2N2VmMDAuLjE0M2Y4YTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbmF0aXZlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9uYXRpdmUuYmJjbGFzcwpAQCAtODcsOCArODcsNyBAQAogCiBiYXNlbGliID0gImxpYiIKIAotIyBMaWJ0b29sJ3MgZGVmYXVsdCBwYXRocyBhcmUgY29ycmVjdCBmb3IgdGhlIG5hdGl2ZSBtYWNoaW5lCi1sdF9jdl9zeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlY1t1bmV4cG9ydF0gPSAiMSIKK2V4cG9ydCBsdF9jdl9zeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYyA9ICIke2xpYmRpcn0gJHtiYXNlX2xpYmRpcn0gL2xpYiAvbGliNjQgL3Vzci9saWIgL3Vzci9saWI2NCIKIAogTkFUSVZFX1BBQ0tBR0VfUEFUSF9TVUZGSVggPz0gIiIKIGJpbmRpciAuPSAiJHtOQVRJVkVfUEFDS0FHRV9QQVRIX1NVRkZJWH0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL25hdGl2ZXNkay5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9uYXRpdmVzZGsuYmJjbGFzcwppbmRleCBmNzRkYTYyLi5hNzgyNTdjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL25hdGl2ZXNkay5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbmF0aXZlc2RrLmJiY2xhc3MKQEAgLTEwLDYgKzEwLDggQEAKIENMQVNTT1ZFUlJJREUgPSAiY2xhc3MtbmF0aXZlc2RrIgogTUFDSElORU9WRVJSSURFUyA9ICIiCiAKK01VTFRJTElCUyA9ICIiCisKICMKICMgVXBkYXRlIFBBQ0tBR0VfQVJDSCBhbmQgUEFDS0FHRV9BUkNIUwogIwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ub3BhY2thZ2VzLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL25vcGFja2FnZXMuYmJjbGFzcwppbmRleCAwYzI3NjFiLi41NTlmNTA3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL25vcGFja2FnZXMuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL25vcGFja2FnZXMuYmJjbGFzcwpAQCAtNCwzICs0LDkgQEAKIGRlbHRhc2sgZG9fcGFja2FnZV93cml0ZV9kZWIKIGRlbHRhc2sgZG9fcGFja2FnZV9xYQogZGVsdGFzayBkb19wYWNrYWdlZGF0YQorZGVsdGFzayBkb19wYWNrYWdlX3NldHNjZW5lCitkZWx0YXNrIGRvX3BhY2thZ2Vfd3JpdGVfcnBtX3NldHNjZW5lCitkZWx0YXNrIGRvX3BhY2thZ2Vfd3JpdGVfaXBrX3NldHNjZW5lCitkZWx0YXNrIGRvX3BhY2thZ2Vfd3JpdGVfZGViX3NldHNjZW5lCitkZWx0YXNrIGRvX3BhY2thZ2VfcWFfc2V0c2NlbmUKK2RlbHRhc2sgZG9fcGFja2FnZWRhdGFfc2V0c2NlbmUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbnBtLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL25wbS5iYmNsYXNzCmluZGV4IDk4NDNlODcuLmZjZTRjMTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbnBtLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ucG0uYmJjbGFzcwpAQCAtMSw5ICsxLDI1IEBACiBERVBFTkRTX3ByZXBlbmQgPSAibm9kZWpzLW5hdGl2ZSAiCitSREVQRU5EU18ke1BOfV9wcmVwZW5kID0gIm5vZGVqcyAiCiBTID0gIiR7V09SS0RJUn0vbnBtcGtnIgogCiBOUE1fSU5TVEFMTERJUiA9ICIke0R9JHtsaWJkaXJ9L25vZGVfbW9kdWxlcy8ke1BOfSIKIAorIyBmdW5jdGlvbiBtYXBzIGFyY2ggbmFtZXMgdG8gbnBtIGFyY2ggbmFtZXMKK2RlZiBucG1fb2VfYXJjaF9tYXAodGFyZ2V0X2FyY2gsIGQpOgorICAgIGltcG9ydCByZQorICAgIGlmICAgcmUubWF0Y2goJ3AocGN8b3dlcnBjKSh8NjQpJywgdGFyZ2V0X2FyY2gpOiByZXR1cm4gJ3BwYycKKyAgICBlbGlmIHJlLm1hdGNoKCdpLjg2JCcsIHRhcmdldF9hcmNoKTogcmV0dXJuICdpYTMyJworICAgIGVsaWYgcmUubWF0Y2goJ3g4Nl82NCQnLCB0YXJnZXRfYXJjaCk6IHJldHVybiAneDY0JworICAgIGVsaWYgcmUubWF0Y2goJ2FybTY0JCcsIHRhcmdldF9hcmNoKTogcmV0dXJuICdhcm0nCisgICAgcmV0dXJuIHRhcmdldF9hcmNoCisKK05QTV9BUkNIID89ICIke0BucG1fb2VfYXJjaF9tYXAoZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJywgVHJ1ZSksIGQpfSIKKwogbnBtX2RvX2NvbXBpbGUoKSB7CisJIyBDb3B5IGluIGFueSBhZGRpdGlvbmFsbHkgZmV0Y2hlZCBtb2R1bGVzCisJaWYgWyAtZCAke1dPUktESVJ9L25vZGVfbW9kdWxlcyBdIDsgdGhlbgorCQljcCAtYSAke1dPUktESVJ9L25vZGVfbW9kdWxlcyAke1N9LworCWZpCiAJIyBjaGFuZ2luZyB0aGUgaG9tZSBkaXJlY3RvcnkgdG8gdGhlIHdvcmtpbmcgZGlyZWN0b3J5LCB0aGUgLm5wbXJjIHdpbGwKIAkjIGJlIGNyZWF0ZWQgaW4gdGhpcyBkaXJlY3RvcnkKIAlleHBvcnQgSE9NRT0ke1dPUktESVJ9CkBAIC0xMiw3ICsyOCw3IEBACiAJIyBjbGVhciBjYWNoZSBiZWZvcmUgZXZlcnkgYnVpbGQKIAlucG0gY2FjaGUgY2xlYXIKIAkjIEluc3RhbGwgcGtnIGludG8gJHtTfSB3aXRob3V0IGdvaW5nIHRvIHRoZSByZWdpc3RyeQotCW5wbSAtLWFyY2g9JHtUQVJHRVRfQVJDSH0gLS1wcm9kdWN0aW9uIC0tbm8tcmVnaXN0cnkgaW5zdGFsbAorCW5wbSAtLWFyY2g9JHtOUE1fQVJDSH0gLS10YXJnZXRfYXJjaD0ke05QTV9BUkNIfSAtLXByb2R1Y3Rpb24gLS1uby1yZWdpc3RyeSBpbnN0YWxsCiB9CiAKIG5wbV9kb19pbnN0YWxsKCkgewpAQCAtMzUsMTAgKzUxLDEwIEBACiAgICAgICAgIGlmIHBkYXRhOgogICAgICAgICAgICAgdmVyc2lvbiA9IHBkYXRhLmdldCgndmVyc2lvbicsIE5vbmUpCiAgICAgICAgICAgICBpZiB2ZXJzaW9uOgotICAgICAgICAgICAgICAgIGQuc2V0VmFyKCdQS0dWXyVzJyAlIGV4cGFuZGVkX3BrZ25hbWUsIHZlcnNpb24uZW5jb2RlKCJ1dGY4IikpCisgICAgICAgICAgICAgICAgZC5zZXRWYXIoJ1BLR1ZfJXMnICUgZXhwYW5kZWRfcGtnbmFtZSwgdmVyc2lvbikKICAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gcGRhdGEuZ2V0KCdkZXNjcmlwdGlvbicsIE5vbmUpCiAgICAgICAgICAgICBpZiBkZXNjcmlwdGlvbjoKLSAgICAgICAgICAgICAgICBkLnNldFZhcignU1VNTUFSWV8lcycgJSBleHBhbmRlZF9wa2duYW1lLCBkZXNjcmlwdGlvbi5yZXBsYWNlKHUiXHUyMDE4IiwgIiciKS5yZXBsYWNlKHUiXHUyMDE5IiwgIiciKS5lbmNvZGUoInV0ZjgiKSkKKyAgICAgICAgICAgICAgICBkLnNldFZhcignU1VNTUFSWV8lcycgJSBleHBhbmRlZF9wa2duYW1lLCBkZXNjcmlwdGlvbi5yZXBsYWNlKHUiXHUyMDE4IiwgIiciKS5yZXBsYWNlKHUiXHUyMDE5IiwgIiciKSkKICAgICBkLmFwcGVuZFZhcignUkRFUEVORFNfJXMnICUgZC5nZXRWYXIoJ1BOJywgVHJ1ZSksICcgJXMnICUgJyAnLmpvaW4ocGtnbmFtZXMpLnJlcGxhY2UoJ18nLCAnLScpKQogfQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL29lbGludC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9vZWxpbnQuYmJjbGFzcwppbmRleCAxYjA1MWNhLi5jNGZlYmMyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL29lbGludC5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvb2VsaW50LmJiY2xhc3MKQEAgLTQ1LDcgKzQ1LDcgQEAKIAogICAgIGRlZiBmaW5kS2V5KHBhdGgsIGtleSk6CiAgICAgICAgIHJldCA9IFRydWUKLSAgICAgICAgZiA9IGZpbGUoJyVzJyAlIHBhdGgsIG1vZGUgPSAncicpCisgICAgICAgIGYgPSBvcGVuKCclcycgJSBwYXRoLCBtb2RlID0gJ3InKQogICAgICAgICBsaW5lID0gZi5yZWFkbGluZSgpCiAgICAgICAgIHdoaWxlIGxpbmU6CiAgICAgICAgICAgICBpZiBsaW5lLmZpbmQoa2V5KSAhPSAtMToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlLmJiY2xhc3MKaW5kZXggNzZiOWY4Ni4uYTZmMGE3YSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlLmJiY2xhc3MKQEAgLTYzLDcgKzYzLDcgQEAKICAgICBkZWYgZml4dXRmKG0pOgogICAgICAgICBjcCA9IG0uZ3JvdXAoMSkKICAgICAgICAgaWYgY3A6Ci0gICAgICAgICAgICByZXR1cm4gKCdcdSVzJyAlIGNwKS5kZWNvZGUoJ3VuaWNvZGVfZXNjYXBlJykuZW5jb2RlKCd1dGYtOCcpCisgICAgICAgICAgICByZXR1cm4gKCdcXHUlcycgJSBjcCkuZW5jb2RlKCdsYXRpbi0xJykuZGVjb2RlKCd1bmljb2RlX2VzY2FwZScpCiAKICAgICAjIEhhbmRsZSB1bmljb2RlIGNvZGVwb2ludHMgZW5jb2RlZCBhcyA8VTAxMjM+LCBhcyBpbiBnbGliYyBsb2NhbGUgZmlsZXMuCiAgICAgcyA9IHJlLnN1YignPFUoWzAtOUEtRmEtZl17MSw0fSk+JywgZml4dXRmLCBzKQpAQCAtMTQ2LDcgKzE0Niw3IEBACiAKIAogICAgIHBhY2thZ2VzID0gZC5nZXRWYXIoJ1BBQ0tBR0VTJywgVHJ1ZSkuc3BsaXQoKQotICAgIHNwbGl0X3BhY2thZ2VzID0gW10KKyAgICBzcGxpdF9wYWNrYWdlcyA9IHNldCgpCiAKICAgICBpZiBwb3N0aW5zdDoKICAgICAgICAgcG9zdGluc3QgPSAnIyEvYmluL3NoXG4nICsgcG9zdGluc3QgKyAnXG4nCkBAIC0xODMsNyArMTgzLDcgQEAKICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIG9uID0gbGVnaXRpbWl6ZV9wYWNrYWdlX25hbWUobS5ncm91cCgxKSkKICAgICAgICAgcGtnID0gb3V0cHV0X3BhdHRlcm4gJSBvbgotICAgICAgICBzcGxpdF9wYWNrYWdlcy5hcHBlbmQocGtnKQorICAgICAgICBzcGxpdF9wYWNrYWdlcy5hZGQocGtnKQogICAgICAgICBpZiBub3QgcGtnIGluIHBhY2thZ2VzOgogICAgICAgICAgICAgaWYgcHJlcGVuZDoKICAgICAgICAgICAgICAgICBwYWNrYWdlcyA9IFtwa2ddICsgcGFja2FnZXMKQEAgLTIyNiw3ICsyMjYsNyBAQAogICAgICAgICAgICAgaG9vayhmLCBwa2csIGZpbGVfcmVnZXgsIG91dHB1dF9wYXR0ZXJuLCBtLmdyb3VwKDEpKQogCiAgICAgZC5zZXRWYXIoJ1BBQ0tBR0VTJywgJyAnLmpvaW4ocGFja2FnZXMpKQotICAgIHJldHVybiBzcGxpdF9wYWNrYWdlcworICAgIHJldHVybiBsaXN0KHNwbGl0X3BhY2thZ2VzKQogCiBQQUNLQUdFX0RFUEVORFMgKz0gImZpbGUtbmF0aXZlIgogCkBAIC0yNTksMTQgKzI1OSwzMCBAQAogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIGZpbGVzLmFwcGVuZChmKQogCi0gICAgZm9yIGYgaW4gZmlsZXM6CisgICAgc3ltbGlua19wYXRocyA9IFtdCisgICAgZm9yIGluZCwgZiBpbiBlbnVtZXJhdGUoZmlsZXMpOgorICAgICAgICAjIEhhbmRsZSBkaXJlY3Rvcnkgc3ltbGlua3MuIFRydW5jYXRlIHBhdGggdG8gdGhlIGxvd2VzdCBsZXZlbCBzeW1saW5rCisgICAgICAgIHBhcmVudCA9ICcnCisgICAgICAgIGZvciBkaXJuYW1lIGluIGYuc3BsaXQoJy8nKVs6LTFdOgorICAgICAgICAgICAgcGFyZW50ID0gb3MucGF0aC5qb2luKHBhcmVudCwgZGlybmFtZSkKKyAgICAgICAgICAgIGlmIGRpcm5hbWUgPT0gJy4nOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBjcGF0aC5pc2xpbmsocGFyZW50KToKKyAgICAgICAgICAgICAgICBiYi53YXJuKCJGSUxFUyBjb250YWlucyBmaWxlICclcycgd2hpY2ggcmVzaWRlcyB1bmRlciBhICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJkaXJlY3Rvcnkgc3ltbGluay4gUGxlYXNlIGZpeCB0aGUgcmVjaXBlIGFuZCB1c2UgdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJyZWFsIHBhdGggZm9yIHRoZSBmaWxlLiIgJSBmWzE6XSkKKyAgICAgICAgICAgICAgICBzeW1saW5rX3BhdGhzLmFwcGVuZChmKQorICAgICAgICAgICAgICAgIGZpbGVzW2luZF0gPSBwYXJlbnQKKyAgICAgICAgICAgICAgICBmID0gcGFyZW50CisgICAgICAgICAgICAgICAgYnJlYWsKKwogICAgICAgICBpZiBub3QgY3BhdGguaXNsaW5rKGYpOgogICAgICAgICAgICAgaWYgY3BhdGguaXNkaXIoZik6CiAgICAgICAgICAgICAgICAgbmV3ZmlsZXMgPSBbIG9zLnBhdGguam9pbihmLHgpIGZvciB4IGluIG9zLmxpc3RkaXIoZikgXQogICAgICAgICAgICAgICAgIGlmIG5ld2ZpbGVzOgogICAgICAgICAgICAgICAgICAgICBmaWxlcyArPSBuZXdmaWxlcwogCi0gICAgcmV0dXJuIGZpbGVzCisgICAgcmV0dXJuIGZpbGVzLCBzeW1saW5rX3BhdGhzCiAKICMgQ2FsbGVkIGluIHBhY2thZ2VfPHJwbSxpcGssZGViPi5iYmNsYXNzIHRvIGdldCB0aGUgY29ycmVjdCBsaXN0IG9mIGNvbmZpZ3VyYXRpb24gZmlsZXMKIGRlZiBnZXRfY29uZmZpbGVzKHBrZywgZCk6CkBAIC0yODEsNyArMjk3LDcgQEAKICAgICBpZiBjb25mZmlsZXMgPT0gTm9uZToKICAgICAgICAgY29uZmZpbGVzID0gIiIKICAgICBjb25mZmlsZXMgPSBjb25mZmlsZXMuc3BsaXQoKQotICAgIGNvbmZfb3JpZ19saXN0ID0gZmlsZXNfZnJvbV9maWxldmFycyhjb25mZmlsZXMpCisgICAgY29uZl9vcmlnX2xpc3QgPSBmaWxlc19mcm9tX2ZpbGV2YXJzKGNvbmZmaWxlcylbMF0KIAogICAgICMgUmVtb3ZlIGxpbmtzIGFuZCBkaXJlY3RvcmllcyBmcm9tIGNvbmZfb3JpZ19saXN0IHRvIGdldCBjb25mX2xpc3Qgd2hpY2ggb25seSBjb250YWlucyBub3JtYWwgZmlsZXMKICAgICBjb25mX2xpc3QgPSBbXQpAQCAtODQxLDYgKzg1Nyw5IEBACiAgICAgZHZhciA9IGQuZ2V0VmFyKCdQS0dEJywgVHJ1ZSkKICAgICBwbiA9IGQuZ2V0VmFyKCdQTicsIFRydWUpCiAKKyAgICBvbGRjd2QgPSBvcy5nZXRjd2QoKQorICAgIG9zLmNoZGlyKGR2YXIpCisKICAgICAjIFdlIGRlZmF1bHQgdG8gJy5kZWJ1Zycgc3R5bGUKICAgICBpZiBkLmdldFZhcignUEFDS0FHRV9ERUJVR19TUExJVF9TVFlMRScsIFRydWUpID09ICdkZWJ1Zy1maWxlLWRpcmVjdG9yeSc6CiAgICAgICAgICMgU2luZ2xlIGRlYnVnLWZpbGUtZGlyZWN0b3J5IHN0eWxlIGRlYnVnIGluZm8KQEAgLTg2NCw4ICs4ODMsNiBAQAogICAgIHNvdXJjZWZpbGUgPSBkLmV4cGFuZCgiJHtXT1JLRElSfS9kZWJ1Z3NvdXJjZXMubGlzdCIpCiAgICAgYmIudXRpbHMucmVtb3ZlKHNvdXJjZWZpbGUpCiAKLSAgICBvcy5jaGRpcihkdmFyKQotCiAgICAgIyBSZXR1cm4gdHlwZSAoYml0cyk6CiAgICAgIyAwIC0gbm90IGVsZgogICAgICMgMSAtIEVMRgpAQCAtOTAzLDcgKzkyMCw4IEBACiAgICAgaW5vZGVzID0ge30KICAgICBsaWJkaXIgPSBvcy5wYXRoLmFic3BhdGgoZHZhciArIG9zLnNlcCArIGQuZ2V0VmFyKCJsaWJkaXIiLCBUcnVlKSkKICAgICBiYXNlbGliZGlyID0gb3MucGF0aC5hYnNwYXRoKGR2YXIgKyBvcy5zZXAgKyBkLmdldFZhcigiYmFzZV9saWJkaXIiLCBUcnVlKSkKLSAgICBpZiAoZC5nZXRWYXIoJ0lOSElCSVRfUEFDS0FHRV9TVFJJUCcsIFRydWUpICE9ICcxJyk6CisgICAgaWYgKGQuZ2V0VmFyKCdJTkhJQklUX1BBQ0tBR0VfU1RSSVAnLCBUcnVlKSAhPSAnMScgb3IgXAorICAgICAgICAgICAgZC5nZXRWYXIoJ0lOSElCSVRfUEFDS0FHRV9ERUJVR19TUExJVCcsIFRydWUpICE9ICcxJyk6CiAgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBjcGF0aC53YWxrKGR2YXIpOgogICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6CiAgICAgICAgICAgICAgICAgZmlsZSA9IG9zLnBhdGguam9pbihyb290LCBmKQpAQCAtMTA1MSw2ICsxMDY5LDcgQEAKICAgICAjCiAgICAgIyBFbmQgb2Ygc3RyaXAKICAgICAjCisgICAgb3MuY2hkaXIob2xkY3dkKQogfQogCiBweXRob24gcG9wdWxhdGVfcGFja2FnZXMgKCkgewpAQCAtMTEwOCw3ICsxMTI3LDcgQEAKICAgICAgICAgICAgIGZpbGVzdmFyLnJlcGxhY2UoIi8vIiwgIi8iKQogCiAgICAgICAgIG9yaWdmaWxlcyA9IGZpbGVzdmFyLnNwbGl0KCkKLSAgICAgICAgZmlsZXMgPSBmaWxlc19mcm9tX2ZpbGV2YXJzKG9yaWdmaWxlcykKKyAgICAgICAgZmlsZXMsIHN5bWxpbmtfcGF0aHMgPSBmaWxlc19mcm9tX2ZpbGV2YXJzKG9yaWdmaWxlcykKIAogICAgICAgICBpZiBhdXRvZGVidWcgYW5kIHBrZy5lbmRzd2l0aCgiLWRiZyIpOgogICAgICAgICAgICAgZmlsZXMuZXh0ZW5kKGRlYnVnKQpAQCAtMTE0OSwxMyArMTE2OCwxOSBAQAogICAgICAgICAgICAgZnBhdGggPSBvcy5wYXRoLmpvaW4ocm9vdCxmaWxlKQogICAgICAgICAgICAgaWYgbm90IGNwYXRoLmlzbGluayhmaWxlKToKICAgICAgICAgICAgICAgICBvcy5saW5rKGZpbGUsIGZwYXRoKQotICAgICAgICAgICAgICAgIGZzdGF0ID0gY3BhdGguc3RhdChmaWxlKQotICAgICAgICAgICAgICAgIG9zLmNobW9kKGZwYXRoLCBmc3RhdC5zdF9tb2RlKQotICAgICAgICAgICAgICAgIG9zLmNob3duKGZwYXRoLCBmc3RhdC5zdF91aWQsIGZzdGF0LnN0X2dpZCkKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgcmV0ID0gYmIudXRpbHMuY29weWZpbGUoZmlsZSwgZnBhdGgpCiAgICAgICAgICAgICBpZiByZXQgaXMgRmFsc2Ugb3IgcmV0ID09IDA6Ci0gICAgICAgICAgICAgICAgcmFpc2UgYmIuYnVpbGQuRnVuY0ZhaWxlZCgiRmlsZSBwb3B1bGF0aW9uIGZhaWxlZCIpCisgICAgICAgICAgICAgICAgYmIuZmF0YWwoIkZpbGUgcG9wdWxhdGlvbiBmYWlsZWQiKQorCisgICAgICAgICMgQ2hlY2sgaWYgc3ltbGluayBwYXRocyBleGlzdAorICAgICAgICBmb3IgZmlsZSBpbiBzeW1saW5rX3BhdGhzOgorICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihyb290LGZpbGUpKToKKyAgICAgICAgICAgICAgICBiYi5mYXRhbCgiRmlsZSAnJXMnIGNhbm5vdCBiZSBwYWNrYWdlZCBpbnRvICclcycgYmVjYXVzZSBpdHMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJlbnQgZGlyZWN0b3J5IHN0cnVjdHVyZSBkb2VzIG5vdCBleGlzdC4gT25lIG9mICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiaXRzIHBhcmVudCBkaXJlY3RvcmllcyBpcyBhIHN5bWxpbmsgd2hvc2UgdGFyZ2V0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZGlyZWN0b3J5IGlzIG5vdCBpbmNsdWRlZCBpbiB0aGUgcGFja2FnZS4iICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAoZmlsZSwgcGtnKSkKIAogICAgIG9zLnVtYXNrKG9sZHVtYXNrKQogICAgIG9zLmNoZGlyKHdvcmtkaXIpCkBAIC0xMjU4LDggKzEyODMsOCBAQAogICAgIGRlZiB3cml0ZV9pZl9leGlzdHMoZiwgcGtnLCB2YXIpOgogICAgICAgICBkZWYgZW5jb2RlKHN0cik6CiAgICAgICAgICAgICBpbXBvcnQgY29kZWNzCi0gICAgICAgICAgICBjID0gY29kZWNzLmdldGVuY29kZXIoInN0cmluZ19lc2NhcGUiKQotICAgICAgICAgICAgcmV0dXJuIGMoc3RyKVswXQorICAgICAgICAgICAgYyA9IGNvZGVjcy5nZXRlbmNvZGVyKCJ1bmljb2RlX2VzY2FwZSIpCisgICAgICAgICAgICByZXR1cm4gYyhzdHIpWzBdLmRlY29kZSgibGF0aW4xIikKIAogICAgICAgICB2YWwgPSBkLmdldFZhcignJXNfJXMnICUgKHZhciwgcGtnKSwgVHJ1ZSkKICAgICAgICAgaWYgdmFsOgpAQCAtMTQ2NSw3ICsxNDkwLDcgQEAKICAgICBpbXBvcnQgcmUsIHBpcGVzCiAgICAgaW1wb3J0IHN1YnByb2Nlc3MgYXMgc3ViCiAKLSAgICBleGNsdWRlX3NobGlicyA9IGQuZ2V0VmFyKCdFWENMVURFX0ZST01fU0hMSUJTJywgMCkKKyAgICBleGNsdWRlX3NobGlicyA9IGQuZ2V0VmFyKCdFWENMVURFX0ZST01fU0hMSUJTJywgRmFsc2UpCiAgICAgaWYgZXhjbHVkZV9zaGxpYnM6CiAgICAgICAgIGJiLm5vdGUoIm5vdCBnZW5lcmF0aW5nIHNobGlicyIpCiAgICAgICAgIHJldHVybgpAQCAtMTUwMyw3ICsxNTI4LDcgQEAKICAgICAgICAgICAgIG0gPSByZS5tYXRjaCgiXHMrUlBBVEhccysoW15cc10qKSIsIGwpCiAgICAgICAgICAgICBpZiBtOgogICAgICAgICAgICAgICAgIHJwYXRocyA9IG0uZ3JvdXAoMSkucmVwbGFjZSgiJE9SSUdJTiIsIGxkaXIpLnNwbGl0KCI6IikKLSAgICAgICAgICAgICAgICBycGF0aCA9IG1hcChvcy5wYXRoLm5vcm1wYXRoLCBycGF0aHMpCisgICAgICAgICAgICAgICAgcnBhdGggPSBsaXN0KG1hcChvcy5wYXRoLm5vcm1wYXRoLCBycGF0aHMpKQogICAgICAgICBmb3IgbCBpbiBsaW5lczoKICAgICAgICAgICAgIG0gPSByZS5tYXRjaCgiXHMrTkVFREVEXHMrKFteXHNdKikiLCBsKQogICAgICAgICAgICAgaWYgbToKQEAgLTE1NTQsMTkgKzE1NzksMTkgQEAKICAgICAgICAgaWYgZmlsZS5lbmRzd2l0aCgnLmR5bGliJykgb3IgZmlsZS5lbmRzd2l0aCgnLnNvJyk6CiAgICAgICAgICAgICBycGF0aCA9IFtdCiAgICAgICAgICAgICBwID0gc3ViLlBvcGVuKFtkLmV4cGFuZCgiJHtIT1NUX1BSRUZJWH1vdG9vbCIpLCAnLWwnLCBmaWxlXSxzdGRvdXQ9c3ViLlBJUEUsc3RkZXJyPXN1Yi5QSVBFKQotICAgICAgICAgICAgZXJyLCBvdXQgPSBwLmNvbW11bmljYXRlKCkKLSAgICAgICAgICAgICMgSWYgcmV0dXJuZWQgc3VjY2Vzc2Z1bGx5LCBwcm9jZXNzIHN0ZGVyciBmb3IgcmVzdWx0cworICAgICAgICAgICAgb3V0LCBlcnIgPSBwLmNvbW11bmljYXRlKCkKKyAgICAgICAgICAgICMgSWYgcmV0dXJuZWQgc3VjY2Vzc2Z1bGx5LCBwcm9jZXNzIHN0ZG91dCBmb3IgcmVzdWx0cwogICAgICAgICAgICAgaWYgcC5yZXR1cm5jb2RlID09IDA6Ci0gICAgICAgICAgICAgICAgZm9yIGwgaW4gZXJyLnNwbGl0KCJcbiIpOgorICAgICAgICAgICAgICAgIGZvciBsIGluIG91dC5zcGxpdCgiXG4iKToKICAgICAgICAgICAgICAgICAgICAgbCA9IGwuc3RyaXAoKQogICAgICAgICAgICAgICAgICAgICBpZiBsLnN0YXJ0c3dpdGgoJ3BhdGggJyk6CiAgICAgICAgICAgICAgICAgICAgICAgICBycGF0aC5hcHBlbmQobC5zcGxpdCgpWzFdKQogCiAgICAgICAgIHAgPSBzdWIuUG9wZW4oW2QuZXhwYW5kKCIke0hPU1RfUFJFRklYfW90b29sIiksICctTCcsIGZpbGVdLHN0ZG91dD1zdWIuUElQRSxzdGRlcnI9c3ViLlBJUEUpCi0gICAgICAgIGVyciwgb3V0ID0gcC5jb21tdW5pY2F0ZSgpCi0gICAgICAgICMgSWYgcmV0dXJuZWQgc3VjY2Vzc2Z1bGx5LCBwcm9jZXNzIHN0ZGVyciBmb3IgcmVzdWx0cworICAgICAgICBvdXQsIGVyciA9IHAuY29tbXVuaWNhdGUoKQorICAgICAgICAjIElmIHJldHVybmVkIHN1Y2Nlc3NmdWxseSwgcHJvY2VzcyBzdGRvdXQgZm9yIHJlc3VsdHMKICAgICAgICAgaWYgcC5yZXR1cm5jb2RlID09IDA6Ci0gICAgICAgICAgICBmb3IgbCBpbiBlcnIuc3BsaXQoIlxuIik6CisgICAgICAgICAgICBmb3IgbCBpbiBvdXQuc3BsaXQoIlxuIik6CiAgICAgICAgICAgICAgICAgbCA9IGwuc3RyaXAoKQogICAgICAgICAgICAgICAgIGlmIG5vdCBsIG9yIGwuZW5kc3dpdGgoIjoiKToKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKQEAgLTE2NzMsNyArMTY5OCw3IEBACiAgICAgICAgICAgICAgICAgYmIuZGVidWcoMiwgJyVzOiBEZXBlbmRlbmN5ICVzIGNvdmVyZWQgYnkgUFJJVkFURV9MSUJTJyAlIChwa2csIG5bMF0pKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBpZiBuWzBdIGluIHNobGliX3Byb3ZpZGVyLmtleXMoKToKLSAgICAgICAgICAgICAgICBzaGxpYl9wcm92aWRlcl9wYXRoID0gbGlzdCgpCisgICAgICAgICAgICAgICAgc2hsaWJfcHJvdmlkZXJfcGF0aCA9IFtdCiAgICAgICAgICAgICAgICAgZm9yIGsgaW4gc2hsaWJfcHJvdmlkZXJbblswXV0ua2V5cygpOgogICAgICAgICAgICAgICAgICAgICBzaGxpYl9wcm92aWRlcl9wYXRoLmFwcGVuZChrKQogICAgICAgICAgICAgICAgIG1hdGNoID0gTm9uZQpAQCAtMjEyOCw0ICsyMTUzLDMgQEAKICAgICBydW50aW1lX21hcHBpbmdfcmVuYW1lKCJSREVQRU5EUyIsIHBrZywgZCkKICAgICBydW50aW1lX21hcHBpbmdfcmVuYW1lKCJSUkVDT01NRU5EUyIsIHBrZywgZCkKICAgICBydW50aW1lX21hcHBpbmdfcmVuYW1lKCJSU1VHR0VTVFMiLCBwa2csIGQpCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9kZWIuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9kZWIuYmJjbGFzcwppbmRleCBlMWQwNWE3Li5mYjYwMzRjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfZGViLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX2RlYi5iYmNsYXNzCkBAIC01Miw2ICs1Miw5IEBACiAgICAgaW1wb3J0IHJlLCBjb3B5CiAgICAgaW1wb3J0IHRleHR3cmFwCiAgICAgaW1wb3J0IHN1YnByb2Nlc3MKKyAgICBpbXBvcnQgY29sbGVjdGlvbnMKKworICAgIG9sZGN3ZCA9IG9zLmdldGN3ZCgpCiAKICAgICB3b3JrZGlyID0gZC5nZXRWYXIoJ1dPUktESVInLCBUcnVlKQogICAgIGlmIG5vdCB3b3JrZGlyOgpAQCAtMTE3LDEzICsxMjAsMTMgQEAKIAogICAgICAgICBjb250cm9sZGlyID0gb3MucGF0aC5qb2luKHJvb3QsICdERUJJQU4nKQogICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoY29udHJvbGRpcikKLSAgICAgICAgb3MuY2htb2QoY29udHJvbGRpciwgMDc1NSkKKyAgICAgICAgb3MuY2htb2QoY29udHJvbGRpciwgMG83NTUpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGltcG9ydCBjb2RlY3MKICAgICAgICAgICAgIGN0cmxmaWxlID0gY29kZWNzLm9wZW4ob3MucGF0aC5qb2luKGNvbnRyb2xkaXIsICdjb250cm9sJyksICd3JywgJ3V0Zi04JykKICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICBiYi51dGlscy51bmxvY2tmaWxlKGxmKQotICAgICAgICAgICAgcmFpc2UgYmIuYnVpbGQuRnVuY0ZhaWxlZCgidW5hYmxlIHRvIG9wZW4gY29udHJvbCBmaWxlIGZvciB3cml0aW5nLiIpCisgICAgICAgICAgICBiYi5mYXRhbCgidW5hYmxlIHRvIG9wZW4gY29udHJvbCBmaWxlIGZvciB3cml0aW5nIikKIAogICAgICAgICBmaWVsZHMgPSBbXQogICAgICAgICBwZSA9IGQuZ2V0VmFyKCdQS0dFJywgVHJ1ZSkKQEAgLTE3Myw3ICsxNzYsNyBAQAogICAgICAgICAgICAgICAgICMgU3BlY2lhbCBiZWhhdmlvciBmb3IgZGVzY3JpcHRpb24uLi4KICAgICAgICAgICAgICAgICBpZiAnREVTQ1JJUFRJT04nIGluIGZzOgogICAgICAgICAgICAgICAgICAgICAgc3VtbWFyeSA9IGxvY2FsZGF0YS5nZXRWYXIoJ1NVTU1BUlknLCBUcnVlKSBvciBsb2NhbGRhdGEuZ2V0VmFyKCdERVNDUklQVElPTicsIFRydWUpIG9yICIuIgotICAgICAgICAgICAgICAgICAgICAgY3RybGZpbGUud3JpdGUoJ0Rlc2NyaXB0aW9uOiAlc1xuJyAlIHVuaWNvZGUoc3VtbWFyeSwndXRmLTgnKSkKKyAgICAgICAgICAgICAgICAgICAgIGN0cmxmaWxlLndyaXRlKCdEZXNjcmlwdGlvbjogJXNcbicgJSBzdW1tYXJ5KQogICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSBsb2NhbGRhdGEuZ2V0VmFyKCdERVNDUklQVElPTicsIFRydWUpIG9yICIuIgogICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSB0ZXh0d3JhcC5kZWRlbnQoZGVzY3JpcHRpb24pLnN0cmlwKCkKICAgICAgICAgICAgICAgICAgICAgIGlmICdcXG4nIGluIGRlc2NyaXB0aW9uOgpAQCAtMTgyLDI5ICsxODUsMjUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBXZSBkb24ndCBsaW1pdCB0aGUgd2lkdGggd2hlbiBtYW51YWxseSBpbmRlbnQsIGJ1dCB3ZSBkbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5lZWQgdGhlIHRleHR3cmFwLmZpbGwoKSB0byBzZXQgdGhlIGluaXRpYWxfaW5kZW50IGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHN1YnNlcXVlbnRfaW5kZW50LCBzbyBzZXQgYSBsYXJnZSB3aWR0aAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHJsZmlsZS53cml0ZSgnJXNcbicgJSB1bmljb2RlKHRleHR3cmFwLmZpbGwodCwgd2lkdGg9MTAwMDAwLCBpbml0aWFsX2luZGVudD0nICcsIHN1YnNlcXVlbnRfaW5kZW50PScgJyksJ3V0Zi04JykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0cmxmaWxlLndyaXRlKCclc1xuJyAlIHRleHR3cmFwLmZpbGwodCwgd2lkdGg9MTAwMDAwLCBpbml0aWFsX2luZGVudD0nICcsIHN1YnNlcXVlbnRfaW5kZW50PScgJykpCiAgICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICMgQXV0byBpbmRlbnQKLSAgICAgICAgICAgICAgICAgICAgICAgICBjdHJsZmlsZS53cml0ZSgnJXNcbicgJSB1bmljb2RlKHRleHR3cmFwLmZpbGwoZGVzY3JpcHRpb24uc3RyaXAoKSwgd2lkdGg9NzQsIGluaXRpYWxfaW5kZW50PScgJywgc3Vic2VxdWVudF9pbmRlbnQ9JyAnKSwndXRmLTgnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBjdHJsZmlsZS53cml0ZSgnJXNcbicgJSB0ZXh0d3JhcC5maWxsKGRlc2NyaXB0aW9uLnN0cmlwKCksIHdpZHRoPTc0LCBpbml0aWFsX2luZGVudD0nICcsIHN1YnNlcXVlbnRfaW5kZW50PScgJykpCiAKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgY3RybGZpbGUud3JpdGUodW5pY29kZShjICUgdHVwbGUocHVsbERhdGEoZnMsIGxvY2FsZGF0YSkpLCd1dGYtOCcpKQorICAgICAgICAgICAgICAgICAgICAgY3RybGZpbGUud3JpdGUoYyAlIHR1cGxlKHB1bGxEYXRhKGZzLCBsb2NhbGRhdGEpKSkKICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgaW1wb3J0IHN5cwogICAgICAgICAgICAgKHR5cGUsIHZhbHVlLCB0cmFjZWJhY2spID0gc3lzLmV4Y19pbmZvKCkKICAgICAgICAgICAgIGJiLnV0aWxzLnVubG9ja2ZpbGUobGYpCiAgICAgICAgICAgICBjdHJsZmlsZS5jbG9zZSgpCi0gICAgICAgICAgICByYWlzZSBiYi5idWlsZC5GdW5jRmFpbGVkKCJNaXNzaW5nIGZpZWxkIGZvciBkZWIgZ2VuZXJhdGlvbjogJXMiICUgdmFsdWUpCi0gICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6Ci0gICAgICAgICAgICBiYi51dGlscy51bmxvY2tmaWxlKGxmKQotICAgICAgICAgICAgY3RybGZpbGUuY2xvc2UoKQotICAgICAgICAgICAgcmFpc2UgYmIuYnVpbGQuRnVuY0ZhaWxlZCgiTm9uIFVURi04IGNoYXJhY3RlcnMgZm91bmQgaW4gb25lIG9mIHRoZSBmaWVsZHMiKQorICAgICAgICAgICAgYmIuZmF0YWwoIk1pc3NpbmcgZmllbGQgZm9yIGRlYiBnZW5lcmF0aW9uOiAlcyIgJSB2YWx1ZSkKIAogICAgICAgICAjIG1vcmUgZmllbGRzCiAKICAgICAgICAgY3VzdG9tX2ZpZWxkc19jaHVuayA9IGdldF9wYWNrYWdlX2FkZGl0aW9uYWxfbWV0YWRhdGEoImRlYiIsIGxvY2FsZGF0YSkKICAgICAgICAgaWYgY3VzdG9tX2ZpZWxkc19jaHVuayBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGN0cmxmaWxlLndyaXRlKHVuaWNvZGUoY3VzdG9tX2ZpZWxkc19jaHVuaykpCisgICAgICAgICAgICBjdHJsZmlsZS53cml0ZShjdXN0b21fZmllbGRzX2NodW5rKQogICAgICAgICAgICAgY3RybGZpbGUud3JpdGUoIlxuIikKIAogICAgICAgICBtYXBwaW5nX3JlbmFtZV9ob29rKGxvY2FsZGF0YSkKQEAgLTIzNCw3ICsyMzMsNyBAQAogCiAgICAgICAgIHJkZXBlbmRzID0gYmIudXRpbHMuZXhwbG9kZV9kZXBfdmVyc2lvbnMyKGxvY2FsZGF0YS5nZXRWYXIoIlJERVBFTkRTIiwgVHJ1ZSkgb3IgIiIpCiAgICAgICAgIGRlYmlhbl9jbXBfcmVtYXAocmRlcGVuZHMpCi0gICAgICAgIGZvciBkZXAgaW4gcmRlcGVuZHMua2V5cygpOgorICAgICAgICBmb3IgZGVwIGluIGxpc3QocmRlcGVuZHMua2V5cygpKToKICAgICAgICAgICAgICAgICBpZiBkZXAgPT0gcGtnOgogICAgICAgICAgICAgICAgICAgICAgICAgZGVsIHJkZXBlbmRzW2RlcF0KICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC0yNDIsMzAgKzI0MSwzMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgZGVsIHJkZXBlbmRzW2RlcF0KICAgICAgICAgcnJlY29tbWVuZHMgPSBiYi51dGlscy5leHBsb2RlX2RlcF92ZXJzaW9uczIobG9jYWxkYXRhLmdldFZhcigiUlJFQ09NTUVORFMiLCBUcnVlKSBvciAiIikKICAgICAgICAgZGViaWFuX2NtcF9yZW1hcChycmVjb21tZW5kcykKLSAgICAgICAgZm9yIGRlcCBpbiBycmVjb21tZW5kcy5rZXlzKCk6CisgICAgICAgIGZvciBkZXAgaW4gbGlzdChycmVjb21tZW5kcy5rZXlzKCkpOgogICAgICAgICAgICAgICAgIGlmICcqJyBpbiBkZXA6CiAgICAgICAgICAgICAgICAgICAgICAgICBkZWwgcnJlY29tbWVuZHNbZGVwXQogICAgICAgICByc3VnZ2VzdHMgPSBiYi51dGlscy5leHBsb2RlX2RlcF92ZXJzaW9uczIobG9jYWxkYXRhLmdldFZhcigiUlNVR0dFU1RTIiwgVHJ1ZSkgb3IgIiIpCiAgICAgICAgIGRlYmlhbl9jbXBfcmVtYXAocnN1Z2dlc3RzKQogICAgICAgICAjIERlbGliZXJhdGVseSBkcm9wIHZlcnNpb24gaW5mb3JtYXRpb24gaGVyZSwgbm90IHdhbnRlZC9zdXBwb3J0ZWQgYnkgZGViCiAgICAgICAgIHJwcm92aWRlcyA9IGRpY3QuZnJvbWtleXMoYmIudXRpbHMuZXhwbG9kZV9kZXBfdmVyc2lvbnMyKGxvY2FsZGF0YS5nZXRWYXIoIlJQUk9WSURFUyIsIFRydWUpIG9yICIiKSwgW10pCisgICAgICAgIHJwcm92aWRlcyA9IGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KHNvcnRlZChycHJvdmlkZXMuaXRlbXMoKSwga2V5PWxhbWJkYSB4OiB4WzBdKSkKICAgICAgICAgZGViaWFuX2NtcF9yZW1hcChycHJvdmlkZXMpCiAgICAgICAgIHJyZXBsYWNlcyA9IGJiLnV0aWxzLmV4cGxvZGVfZGVwX3ZlcnNpb25zMihsb2NhbGRhdGEuZ2V0VmFyKCJSUkVQTEFDRVMiLCBUcnVlKSBvciAiIikKICAgICAgICAgZGViaWFuX2NtcF9yZW1hcChycmVwbGFjZXMpCiAgICAgICAgIHJjb25mbGljdHMgPSBiYi51dGlscy5leHBsb2RlX2RlcF92ZXJzaW9uczIobG9jYWxkYXRhLmdldFZhcigiUkNPTkZMSUNUUyIsIFRydWUpIG9yICIiKQogICAgICAgICBkZWJpYW5fY21wX3JlbWFwKHJjb25mbGljdHMpCiAgICAgICAgIGlmIHJkZXBlbmRzOgotICAgICAgICAgICAgY3RybGZpbGUud3JpdGUoIkRlcGVuZHM6ICVzXG4iICUgdW5pY29kZShiYi51dGlscy5qb2luX2RlcHMocmRlcGVuZHMpKSkKKyAgICAgICAgICAgIGN0cmxmaWxlLndyaXRlKCJEZXBlbmRzOiAlc1xuIiAlIGJiLnV0aWxzLmpvaW5fZGVwcyhyZGVwZW5kcykpCiAgICAgICAgIGlmIHJzdWdnZXN0czoKLSAgICAgICAgICAgIGN0cmxmaWxlLndyaXRlKCJTdWdnZXN0czogJXNcbiIgJSB1bmljb2RlKGJiLnV0aWxzLmpvaW5fZGVwcyhyc3VnZ2VzdHMpKSkKKyAgICAgICAgICAgIGN0cmxmaWxlLndyaXRlKCJTdWdnZXN0czogJXNcbiIgJSBiYi51dGlscy5qb2luX2RlcHMocnN1Z2dlc3RzKSkKICAgICAgICAgaWYgcnJlY29tbWVuZHM6Ci0gICAgICAgICAgICBjdHJsZmlsZS53cml0ZSgiUmVjb21tZW5kczogJXNcbiIgJSB1bmljb2RlKGJiLnV0aWxzLmpvaW5fZGVwcyhycmVjb21tZW5kcykpKQorICAgICAgICAgICAgY3RybGZpbGUud3JpdGUoIlJlY29tbWVuZHM6ICVzXG4iICUgYmIudXRpbHMuam9pbl9kZXBzKHJyZWNvbW1lbmRzKSkKICAgICAgICAgaWYgcnByb3ZpZGVzOgotICAgICAgICAgICAgY3RybGZpbGUud3JpdGUoIlByb3ZpZGVzOiAlc1xuIiAlIHVuaWNvZGUoYmIudXRpbHMuam9pbl9kZXBzKHJwcm92aWRlcykpKQorICAgICAgICAgICAgY3RybGZpbGUud3JpdGUoIlByb3ZpZGVzOiAlc1xuIiAlIGJiLnV0aWxzLmpvaW5fZGVwcyhycHJvdmlkZXMpKQogICAgICAgICBpZiBycmVwbGFjZXM6Ci0gICAgICAgICAgICBjdHJsZmlsZS53cml0ZSgiUmVwbGFjZXM6ICVzXG4iICUgdW5pY29kZShiYi51dGlscy5qb2luX2RlcHMocnJlcGxhY2VzKSkpCisgICAgICAgICAgICBjdHJsZmlsZS53cml0ZSgiUmVwbGFjZXM6ICVzXG4iICUgYmIudXRpbHMuam9pbl9kZXBzKHJyZXBsYWNlcykpCiAgICAgICAgIGlmIHJjb25mbGljdHM6Ci0gICAgICAgICAgICBjdHJsZmlsZS53cml0ZSgiQ29uZmxpY3RzOiAlc1xuIiAlIHVuaWNvZGUoYmIudXRpbHMuam9pbl9kZXBzKHJjb25mbGljdHMpKSkKKyAgICAgICAgICAgIGN0cmxmaWxlLndyaXRlKCJDb25mbGljdHM6ICVzXG4iICUgYmIudXRpbHMuam9pbl9kZXBzKHJjb25mbGljdHMpKQogICAgICAgICBjdHJsZmlsZS5jbG9zZSgpCiAKICAgICAgICAgZm9yIHNjcmlwdCBpbiBbInByZWluc3QiLCAicG9zdGluc3QiLCAicHJlcm0iLCAicG9zdHJtIl06CkBAIC0yNzcsNyArMjc3LDcgQEAKICAgICAgICAgICAgICAgICBzY3JpcHRmaWxlID0gb3Blbihvcy5wYXRoLmpvaW4oY29udHJvbGRpciwgc2NyaXB0KSwgJ3cnKQogICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgYmIudXRpbHMudW5sb2NrZmlsZShsZikKLSAgICAgICAgICAgICAgICByYWlzZSBiYi5idWlsZC5GdW5jRmFpbGVkKCJ1bmFibGUgdG8gb3BlbiAlcyBzY3JpcHQgZmlsZSBmb3Igd3JpdGluZy4iICUgc2NyaXB0KQorICAgICAgICAgICAgICAgIGJiLmZhdGFsKCJ1bmFibGUgdG8gb3BlbiAlcyBzY3JpcHQgZmlsZSBmb3Igd3JpdGluZyIgJSBzY3JpcHQpCiAKICAgICAgICAgICAgIGlmIHNjcmlwdHZhci5zdGFydHN3aXRoKCIjISIpOgogICAgICAgICAgICAgICAgIHBvcyA9IHNjcmlwdHZhci5maW5kKCJcbiIpICsgMQpAQCAtMjkzLDcgKzI5Myw3IEBACiAgICAgICAgICAgICBzY3JpcHRmaWxlLndyaXRlKHNjcmlwdHZhcltwb3M6XSkKICAgICAgICAgICAgIHNjcmlwdGZpbGUud3JpdGUoJ1xuJykKICAgICAgICAgICAgIHNjcmlwdGZpbGUuY2xvc2UoKQotICAgICAgICAgICAgb3MuY2htb2Qob3MucGF0aC5qb2luKGNvbnRyb2xkaXIsIHNjcmlwdCksIDA3NTUpCisgICAgICAgICAgICBvcy5jaG1vZChvcy5wYXRoLmpvaW4oY29udHJvbGRpciwgc2NyaXB0KSwgMG83NTUpCiAKICAgICAgICAgY29uZmZpbGVzX3N0ciA9ICcgJy5qb2luKGdldF9jb25mZmlsZXMocGtnLCBkKSkKICAgICAgICAgaWYgY29uZmZpbGVzX3N0cjoKQEAgLTMwMSw3ICszMDEsNyBAQAogICAgICAgICAgICAgICAgIGNvbmZmaWxlcyA9IG9wZW4ob3MucGF0aC5qb2luKGNvbnRyb2xkaXIsICdjb25mZmlsZXMnKSwgJ3cnKQogICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgYmIudXRpbHMudW5sb2NrZmlsZShsZikKLSAgICAgICAgICAgICAgICByYWlzZSBiYi5idWlsZC5GdW5jRmFpbGVkKCJ1bmFibGUgdG8gb3BlbiBjb25mZmlsZXMgZm9yIHdyaXRpbmcuIikKKyAgICAgICAgICAgICAgICBiYi5mYXRhbCgidW5hYmxlIHRvIG9wZW4gY29uZmZpbGVzIGZvciB3cml0aW5nIikKICAgICAgICAgICAgIGZvciBmIGluIGNvbmZmaWxlc19zdHIuc3BsaXQoKToKICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvZS5wYXRoLmpvaW4ocm9vdCwgZikpOgogICAgICAgICAgICAgICAgICAgICBjb25mZmlsZXMud3JpdGUoJyVzXG4nICUgZikKQEAgLTMxMSwxMCArMzExLDExIEBACiAgICAgICAgIHJldCA9IHN1YnByb2Nlc3MuY2FsbCgiUEFUSD1cIiVzXCIgZHBrZy1kZWIgLWIgJXMgJXMiICUgKGxvY2FsZGF0YS5nZXRWYXIoIlBBVEgiLCBUcnVlKSwgcm9vdCwgcGtnb3V0ZGlyKSwgc2hlbGw9VHJ1ZSkKICAgICAgICAgaWYgcmV0ICE9IDA6CiAgICAgICAgICAgICBiYi51dGlscy51bmxvY2tmaWxlKGxmKQotICAgICAgICAgICAgcmFpc2UgYmIuYnVpbGQuRnVuY0ZhaWxlZCgiZHBrZy1kZWIgZXhlY3V0aW9uIGZhaWxlZCIpCisgICAgICAgICAgICBiYi5mYXRhbCgiZHBrZy1kZWIgZXhlY3V0aW9uIGZhaWxlZCIpCiAKICAgICAgICAgY2xlYW51cGNvbnRyb2wocm9vdCkKICAgICAgICAgYmIudXRpbHMudW5sb2NrZmlsZShsZikKKyAgICBvcy5jaGRpcihvbGRjd2QpCiB9CiAjIEluZGlyZWN0IHJlZmVyZW5jZXMgdG8gdGhlc2UgdmFycwogZG9fcGFja2FnZV93cml0ZV9kZWJbdmFyZGVwc10gKz0gIlBLR1YgUEtHUiBQS0dWIERFU0NSSVBUSU9OIFNFQ1RJT04gUFJJT1JJVFkgTUFJTlRBSU5FUiBEUEtHX0FSQ0ggUE4gSE9NRVBBR0UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfaXBrLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfaXBrLmJiY2xhc3MKaW5kZXggZjFhZDFkNS4uZWIwMDkzMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX2lway5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9pcGsuYmJjbGFzcwpAQCAtMjAsNiArMjAsOSBAQAogICAgIGltcG9ydCByZSwgY29weQogICAgIGltcG9ydCB0ZXh0d3JhcAogICAgIGltcG9ydCBzdWJwcm9jZXNzCisgICAgaW1wb3J0IGNvbGxlY3Rpb25zCisKKyAgICBvbGRjd2QgPSBvcy5nZXRjd2QoKQogCiAgICAgd29ya2RpciA9IGQuZ2V0VmFyKCdXT1JLRElSJywgVHJ1ZSkKICAgICBvdXRkaXIgPSBkLmdldFZhcignUEtHV1JJVEVESVJJUEsnLCBUcnVlKQpAQCAtMTA1LDcgKzEwOCw3IEBACiAgICAgICAgICAgICBjdHJsZmlsZSA9IG9wZW4ob3MucGF0aC5qb2luKGNvbnRyb2xkaXIsICdjb250cm9sJyksICd3JykKICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICBiYi51dGlscy51bmxvY2tmaWxlKGxmKQotICAgICAgICAgICAgcmFpc2UgYmIuYnVpbGQuRnVuY0ZhaWxlZCgidW5hYmxlIHRvIG9wZW4gY29udHJvbCBmaWxlIGZvciB3cml0aW5nLiIpCisgICAgICAgICAgICBiYi5mYXRhbCgidW5hYmxlIHRvIG9wZW4gY29udHJvbCBmaWxlIGZvciB3cml0aW5nIikKIAogICAgICAgICBmaWVsZHMgPSBbXQogICAgICAgICBwZSA9IGQuZ2V0VmFyKCdQS0dFJywgVHJ1ZSkKQEAgLTE1OSw3ICsxNjIsNyBAQAogICAgICAgICAgICAgKHR5cGUsIHZhbHVlLCB0cmFjZWJhY2spID0gc3lzLmV4Y19pbmZvKCkKICAgICAgICAgICAgIGN0cmxmaWxlLmNsb3NlKCkKICAgICAgICAgICAgIGJiLnV0aWxzLnVubG9ja2ZpbGUobGYpCi0gICAgICAgICAgICByYWlzZSBiYi5idWlsZC5GdW5jRmFpbGVkKCJNaXNzaW5nIGZpZWxkIGZvciBpcGsgZ2VuZXJhdGlvbjogJXMiICUgdmFsdWUpCisgICAgICAgICAgICBiYi5mYXRhbCgiTWlzc2luZyBmaWVsZCBmb3IgaXBrIGdlbmVyYXRpb246ICVzIiAlIHZhbHVlKQogICAgICAgICAjIG1vcmUgZmllbGRzCiAKICAgICAgICAgY3VzdG9tX2ZpZWxkc19jaHVuayA9IGdldF9wYWNrYWdlX2FkZGl0aW9uYWxfbWV0YWRhdGEoImlwayIsIGxvY2FsZGF0YSkKQEAgLTE5MCw2ICsxOTMsNyBAQAogICAgICAgICBkZWJpYW5fY21wX3JlbWFwKHJzdWdnZXN0cykKICAgICAgICAgIyBEZWxpYmVyYXRlbHkgZHJvcCB2ZXJzaW9uIGluZm9ybWF0aW9uIGhlcmUsIG5vdCB3YW50ZWQvc3VwcG9ydGVkIGJ5IGlwawogICAgICAgICBycHJvdmlkZXMgPSBkaWN0LmZyb21rZXlzKGJiLnV0aWxzLmV4cGxvZGVfZGVwX3ZlcnNpb25zMihsb2NhbGRhdGEuZ2V0VmFyKCJSUFJPVklERVMiLCBUcnVlKSBvciAiIiksIFtdKQorICAgICAgICBycHJvdmlkZXMgPSBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdChzb3J0ZWQocnByb3ZpZGVzLml0ZW1zKCksIGtleT1sYW1iZGEgeDogeFswXSkpCiAgICAgICAgIGRlYmlhbl9jbXBfcmVtYXAocnByb3ZpZGVzKQogICAgICAgICBycmVwbGFjZXMgPSBiYi51dGlscy5leHBsb2RlX2RlcF92ZXJzaW9uczIobG9jYWxkYXRhLmdldFZhcigiUlJFUExBQ0VTIiwgVHJ1ZSkgb3IgIiIpCiAgICAgICAgIGRlYmlhbl9jbXBfcmVtYXAocnJlcGxhY2VzKQpAQCAtMjIyLDEwICsyMjYsMTAgQEAKICAgICAgICAgICAgICAgICBzY3JpcHRmaWxlID0gb3Blbihvcy5wYXRoLmpvaW4oY29udHJvbGRpciwgc2NyaXB0KSwgJ3cnKQogICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgYmIudXRpbHMudW5sb2NrZmlsZShsZikKLSAgICAgICAgICAgICAgICByYWlzZSBiYi5idWlsZC5GdW5jRmFpbGVkKCJ1bmFibGUgdG8gb3BlbiAlcyBzY3JpcHQgZmlsZSBmb3Igd3JpdGluZy4iICUgc2NyaXB0KQorICAgICAgICAgICAgICAgIGJiLmZhdGFsKCJ1bmFibGUgdG8gb3BlbiAlcyBzY3JpcHQgZmlsZSBmb3Igd3JpdGluZyIgJSBzY3JpcHQpCiAgICAgICAgICAgICBzY3JpcHRmaWxlLndyaXRlKHNjcmlwdHZhcikKICAgICAgICAgICAgIHNjcmlwdGZpbGUuY2xvc2UoKQotICAgICAgICAgICAgb3MuY2htb2Qob3MucGF0aC5qb2luKGNvbnRyb2xkaXIsIHNjcmlwdCksIDA3NTUpCisgICAgICAgICAgICBvcy5jaG1vZChvcy5wYXRoLmpvaW4oY29udHJvbGRpciwgc2NyaXB0KSwgMG83NTUpCiAKICAgICAgICAgY29uZmZpbGVzX3N0ciA9ICcgJy5qb2luKGdldF9jb25mZmlsZXMocGtnLCBkKSkKICAgICAgICAgaWYgY29uZmZpbGVzX3N0cjoKQEAgLTIzMyw3ICsyMzcsNyBAQAogICAgICAgICAgICAgICAgIGNvbmZmaWxlcyA9IG9wZW4ob3MucGF0aC5qb2luKGNvbnRyb2xkaXIsICdjb25mZmlsZXMnKSwgJ3cnKQogICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgYmIudXRpbHMudW5sb2NrZmlsZShsZikKLSAgICAgICAgICAgICAgICByYWlzZSBiYi5idWlsZC5GdW5jRmFpbGVkKCJ1bmFibGUgdG8gb3BlbiBjb25mZmlsZXMgZm9yIHdyaXRpbmcuIikKKyAgICAgICAgICAgICAgICBiYi5mYXRhbCgidW5hYmxlIHRvIG9wZW4gY29uZmZpbGVzIGZvciB3cml0aW5nIikKICAgICAgICAgICAgIGZvciBmIGluIGNvbmZmaWxlc19zdHIuc3BsaXQoKToKICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvZS5wYXRoLmpvaW4ocm9vdCwgZikpOgogICAgICAgICAgICAgICAgICAgICBjb25mZmlsZXMud3JpdGUoJyVzXG4nICUgZikKQEAgLTI0MSwxMCArMjQ1LDEwIEBACiAKICAgICAgICAgb3MuY2hkaXIoYmFzZWRpcikKICAgICAgICAgcmV0ID0gc3VicHJvY2Vzcy5jYWxsKCJQQVRIPVwiJXNcIiAlcyAlcyAlcyIgJSAobG9jYWxkYXRhLmdldFZhcigiUEFUSCIsIFRydWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuZ2V0VmFyKCJPUEtHQlVJTERDTUQiLDEpLCBwa2csIHBrZ291dGRpciksIHNoZWxsPVRydWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5nZXRWYXIoIk9QS0dCVUlMRENNRCIsIFRydWUpLCBwa2csIHBrZ291dGRpciksIHNoZWxsPVRydWUpCiAgICAgICAgIGlmIHJldCAhPSAwOgogICAgICAgICAgICAgYmIudXRpbHMudW5sb2NrZmlsZShsZikKLSAgICAgICAgICAgIHJhaXNlIGJiLmJ1aWxkLkZ1bmNGYWlsZWQoIm9wa2ctYnVpbGQgZXhlY3V0aW9uIGZhaWxlZCIpCisgICAgICAgICAgICBiYi5mYXRhbCgib3BrZy1idWlsZCBleGVjdXRpb24gZmFpbGVkIikKIAogICAgICAgICBpZiBkLmdldFZhcignSVBLX1NJR05fUEFDS0FHRVMnLCBUcnVlKSA9PSAnMSc6CiAgICAgICAgICAgICBpcGt2ZXIgPSAiJXMtJXMiICUgKGQuZ2V0VmFyKCdQS0dWJywgVHJ1ZSksIGQuZ2V0VmFyKCdQS0dSJywgVHJ1ZSkpCkBAIC0yNTQsNiArMjU4LDcgQEAKICAgICAgICAgY2xlYW51cGNvbnRyb2wocm9vdCkKICAgICAgICAgYmIudXRpbHMudW5sb2NrZmlsZShsZikKIAorICAgIG9zLmNoZGlyKG9sZGN3ZCkKIH0KICMgT3RoZXJ3aXNlIGFsbGFyY2ggcGFja2FnZXMgbWF5IGNoYW5nZSBkZXBlbmRpbmcgb24gb3ZlcnJpZGUgY29uZmlndXJhdGlvbgogZG9fcGFja2FnZV9pcGtbdmFyZGVwc2V4Y2x1ZGVdID0gIk9WRVJSSURFUyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9ycG0uYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9ycG0uYmJjbGFzcwppbmRleCA3ZDUyM2ExLi5jNDMxNTQ1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfcnBtLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX3JwbS5iYmNsYXNzCkBAIC01OCwxMiArNTgsMTIgQEAKICAgICB0cnk6CiAgICAgICAgIGRlcGVuZHNmaWxlID0gb3BlbihvdXRkZXBlbmRzLCAndycpCiAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgIHJhaXNlIGJiLmJ1aWxkLkZ1bmNGYWlsZWQoInVuYWJsZSB0byBvcGVuIHNwZWMgZmlsZSBmb3Igd3JpdGluZy4iKQorICAgICAgICBiYi5mYXRhbCgidW5hYmxlIHRvIG9wZW4gc3BlYyBmaWxlIGZvciB3cml0aW5nIikKIAogICAgIGR1bXBfZmlsZXJkZXBzKCdSREVQRU5EUycsIGRlcGVuZHNmaWxlLCBkKQogCiAgICAgZGVwZW5kc2ZpbGUuY2xvc2UoKQotICAgIG9zLmNobW9kKG91dGRlcGVuZHMsIDA3NTUpCisgICAgb3MuY2htb2Qob3V0ZGVwZW5kcywgMG83NTUpCiAKICAgICAjIE9FLWNvcmUgLyBSUE0gUHJvdmlkZXMKICAgICBvdXRwcm92aWRlcyA9IHdvcmtkaXIgKyAiLyIgKyBzcmNuYW1lICsgIi5wcm92aWRlcyIKQEAgLTcxLDEyICs3MSwxMiBAQAogICAgIHRyeToKICAgICAgICAgcHJvdmlkZXNmaWxlID0gb3BlbihvdXRwcm92aWRlcywgJ3cnKQogICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICByYWlzZSBiYi5idWlsZC5GdW5jRmFpbGVkKCJ1bmFibGUgdG8gb3BlbiBzcGVjIGZpbGUgZm9yIHdyaXRpbmcuIikKKyAgICAgICAgYmIuZmF0YWwoInVuYWJsZSB0byBvcGVuIHNwZWMgZmlsZSBmb3Igd3JpdGluZyIpCiAKICAgICBkdW1wX2ZpbGVyZGVwcygnUlBST1ZJREVTJywgcHJvdmlkZXNmaWxlLCBkKQogCiAgICAgcHJvdmlkZXNmaWxlLmNsb3NlKCkKLSAgICBvcy5jaG1vZChvdXRwcm92aWRlcywgMDc1NSkKKyAgICBvcy5jaG1vZChvdXRwcm92aWRlcywgMG83NTUpCiAKICAgICByZXR1cm4gKG91dGRlcGVuZHMsIG91dHByb3ZpZGVzKQogCkBAIC02MTcsNyArNjE3LDcgQEAKICAgICB0cnk6CiAgICAgICAgIHNwZWNmaWxlID0gb3BlbihvdXRzcGVjZmlsZSwgJ3cnKQogICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICByYWlzZSBiYi5idWlsZC5GdW5jRmFpbGVkKCJ1bmFibGUgdG8gb3BlbiBzcGVjIGZpbGUgZm9yIHdyaXRpbmcuIikKKyAgICAgICAgYmIuZmF0YWwoInVuYWJsZSB0byBvcGVuIHNwZWMgZmlsZSBmb3Igd3JpdGluZyIpCiAKICAgICAjIFJQTVNQRUNfUFJFQU1CTEUgaXMgYSB3YXkgdG8gYWRkIGFyYml0cmFyeSB0ZXh0IHRvIHRoZSB0b3AKICAgICAjIG9mIHRoZSBnZW5lcmF0ZWQgc3BlYyBmaWxlCkBAIC03MDIsNyArNzAyLDcgQEAKICAgICBwa2dhcmNoID0gZC5leHBhbmQoJyR7UEFDS0FHRV9BUkNIX0VYVEVORH0ke0hPU1RfVkVORE9SfS0ke0hPU1RfT1N9JykKICAgICBtYWdpY2ZpbGUgPSBkLmV4cGFuZCgnJHtTVEFHSU5HX0RJUl9OQVRJVkV9JHtkYXRhZGlyX25hdGl2ZX0vbWlzYy9tYWdpYy5tZ2MnKQogICAgIGJiLnV0aWxzLm1rZGlyaGllcihwa2d3cml0ZWRpcikKLSAgICBvcy5jaG1vZChwa2d3cml0ZWRpciwgMDc1NSkKKyAgICBvcy5jaG1vZChwa2d3cml0ZWRpciwgMG83NTUpCiAKICAgICBjbWQgPSBycG1idWlsZAogICAgIGNtZCA9IGNtZCArICIgLS1ub2RlcHMgLS1zaG9ydC1jaXJjdWl0IC0tdGFyZ2V0ICIgKyBwa2dhcmNoICsgIiAtLWJ1aWxkcm9vdCAiICsgcGtnZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX3Rhci5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX3Rhci5iYmNsYXNzCmluZGV4IDg1NGU2NDUuLmUyMTc4MTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV90YXIuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfdGFyLmJiY2xhc3MKQEAgLTQsNiArNCw5IEBACiAKIHB5dGhvbiBkb19wYWNrYWdlX3RhciAoKSB7CiAgICAgaW1wb3J0IHN1YnByb2Nlc3MKKworICAgIG9sZGN3ZCA9IG9zLmdldGN3ZCgpCisKICAgICB3b3JrZGlyID0gZC5nZXRWYXIoJ1dPUktESVInLCBUcnVlKQogICAgIGlmIG5vdCB3b3JrZGlyOgogICAgICAgICBiYi5lcnJvcigiV09SS0RJUiBub3QgZGVmaW5lZCwgdW5hYmxlIHRvIHBhY2thZ2UiKQpAQCAtNDksNiArNTIsOCBAQAogICAgICAgICByZXQgPSBzdWJwcm9jZXNzLmNhbGwoYXJncyArIFt0YXJmbl0gKyBkbGlzdCkKICAgICAgICAgaWYgcmV0ICE9IDA6CiAgICAgICAgICAgICBiYi5lcnJvcigiQ3JlYXRpb24gb2YgdGFyICVzIGZhaWxlZC4iICUgdGFyZm4pCisKKyAgICBvcy5jaGRpcihvbGRjd2QpCiB9CiAKIHB5dGhvbiAoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VmZWVkLXN0YWJpbGl0eS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlZmVlZC1zdGFiaWxpdHkuYmJjbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTAxZGVmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlZmVlZC1zdGFiaWxpdHkuYmJjbGFzcwpAQCAtMCwwICsxLDI1MiBAQAorIyBDbGFzcyB0byBhdm9pZCBjb3B5aW5nIHBhY2thZ2VzIGludG8gdGhlIGZlZWQgaWYgdGhleSBoYXZlbid0IG1hdGVyaWFsbHkgY2hhbmdlZAorIworIyBDb3B5cmlnaHQgKEMpIDIwMTUgSW50ZWwgQ29ycG9yYXRpb24KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIGRldGFpbHMpCisjCisjIFRoaXMgY2xhc3MgZWZmZWN0aXZlbHkgaW50ZXJjZXB0cyBwYWNrYWdlcyBhcyB0aGV5IGFyZSB3cml0dGVuIG91dCBieQorIyBkb19wYWNrYWdlX3dyaXRlXyosIGNhdXNpbmcgdGhlbSB0byBiZSB3cml0dGVuIGludG8gYSBkaWZmZXJlbnQKKyMgZGlyZWN0b3J5IHdoZXJlIHdlIGNhbiBjb21wYXJlIHRoZW0gdG8gd2hhdGV2ZXIgb2xkZXIgcGFja2FnZXMgbWlnaHQKKyMgYmUgaW4gdGhlICJyZWFsIiBwYWNrYWdlIGZlZWQgZGlyZWN0b3J5LCBhbmQgYXZvaWQgY29weWluZyB0aGUgbmV3CisjIHBhY2thZ2UgdG8gdGhlIGZlZWQgaWYgaXQgaGFzIG5vdCBtYXRlcmlhbGx5IGNoYW5nZWQuIFRoZSBpZGVhIGlzIHRvCisjIGF2b2lkIHVubmVjZXNzYXJ5IGNodXJuIGluIHRoZSBwYWNrYWdlcyB3aGVuIGRlcGVuZGVuY2llcyB0cmlnZ2VyIHRhc2sKKyMgcmVleGVjdXRpb24gKGFuZCB0aHVzIHJlcGFja2FnaW5nKS4gRW5hYmxpbmcgdGhlIGNsYXNzIGlzIHNpbXBsZToKKyMKKyMgSU5IRVJJVCArPSAicGFja2FnZWZlZWQtc3RhYmlsaXR5IgorIworIyBDYXZlYXRzOgorIyAxKSBMYXRlc3QgUFIgdmFsdWVzIGluIHRoZSBidWlsZCBzeXN0ZW0gbWF5IG5vdCBtYXRjaCB0aG9zZSBpbiBwYWNrYWdlcworIyAgICBzZWVuIG9uIHRoZSB0YXJnZXQgKG5hdHVyYWxseSkKKyMgMikgSWYgeW91IHJlYnVpbGQgZnJvbSBzc3RhdGUgd2l0aG91dCB0aGUgZXhpc3RpbmcgcGFja2FnZSBmZWVkIHByZXNlbnQsCisjICAgIHlvdSB3aWxsIGxvc2UgdGhlICJzdGF0ZSIgb2YgdGhlIHBhY2thZ2UgZmVlZCBpLmUuIHRoZSBwcmVzZXJ2ZWQgb2xkCisjICAgIHBhY2thZ2UgdmVyc2lvbnMuIE5vdCB0aGUgZW5kIG9mIHRoZSB3b3JsZCwgYnV0IHdvdWxkIG5lZ2F0ZSB0aGUKKyMgICAgZW50aXJlIHB1cnBvc2Ugb2YgdGhpcyBjbGFzcy4KKyMKKyMgTm90ZSB0aGF0IHJ1bm5pbmcgLWMgY2xlYW5hbGwgb24gYSByZWNpcGUgd2lsbCBwdXJwb3NlbHkgZGVsZXRlIHRoZSBvbGQKKyMgcGFja2FnZSBmaWxlcyBzbyB0aGV5IHdpbGwgZGVmaW5pdGVseSBiZSBjb3BpZWQgdGhlIG5leHQgdGltZS4KKworcHl0aG9uKCkgeworICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ25hdGl2ZScsIGQpIG9yIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2Nyb3NzJywgZCk6CisgICAgICAgIHJldHVybgorICAgICMgUGFja2FnZSBiYWNrZW5kIGFnbm9zdGljIGludGVyY2VwdAorICAgICMgVGhpcyBhc3N1bWVzIHRoYXQgdGhlIHBhY2thZ2Vfd3JpdGUgdGFzayBpcyBjYWxsZWQgcGFja2FnZV93cml0ZV88cGtndHlwZT4KKyAgICAjIGFuZCB0aGF0IHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggcGFja2FnZXMgc2hvdWxkIGJlIHdyaXR0ZW4gaXMKKyAgICAjIHBvaW50ZWQgdG8gYnkgdGhlIHZhcmlhYmxlIERFUExPWV9ESVJfPFBLR1RZUEU+CisgICAgZm9yIHBrZ2NsYXNzIGluIChkLmdldFZhcignUEFDS0FHRV9DTEFTU0VTJywgVHJ1ZSkgb3IgJycpLnNwbGl0KCk6CisgICAgICAgIGlmIHBrZ2NsYXNzLnN0YXJ0c3dpdGgoJ3BhY2thZ2VfJyk6CisgICAgICAgICAgICBwa2d0eXBlID0gcGtnY2xhc3Muc3BsaXQoJ18nLCAxKVsxXQorICAgICAgICAgICAgcGtnd3JpdGVmdW5jID0gJ2RvX3BhY2thZ2Vfd3JpdGVfJXMnICUgcGtndHlwZQorICAgICAgICAgICAgc3N0YXRlX291dHB1dGRpcnMgPSBkLmdldFZhckZsYWcocGtnd3JpdGVmdW5jLCAnc3N0YXRlLW91dHB1dGRpcnMnLCBGYWxzZSkKKyAgICAgICAgICAgIGRlcGxveWRpcnZhciA9ICdERVBMT1lfRElSXyVzJyAlIHBrZ3R5cGUudXBwZXIoKQorICAgICAgICAgICAgZGVwbG95ZGlydmFycmVmID0gJyR7JyArIGRlcGxveWRpcnZhciArICd9JworICAgICAgICAgICAgcGtnY29tcGFyZWZ1bmMgPSAnZG9fcGFja2FnZV9jb21wYXJlXyVzJyAlIHBrZ3R5cGUKKworICAgICAgICAgICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnaW1hZ2UnLCBkKToKKyAgICAgICAgICAgICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX3Jvb3RmcycsICdyZWNyZGVwdGFzaycsICcgJyArIHBrZ2NvbXBhcmVmdW5jKQorCisgICAgICAgICAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdwb3B1bGF0ZV9zZGtfYmFzZScsIGQpOgorICAgICAgICAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fcG9wdWxhdGVfc2RrJywgJ3JlY3JkZXB0YXNrJywgJyAnICsgcGtnY29tcGFyZWZ1bmMpCisKKyAgICAgICAgICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ3BvcHVsYXRlX3Nka19leHQnLCBkKToKKyAgICAgICAgICAgICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX3BvcHVsYXRlX3Nka19leHQnLCAncmVjcmRlcHRhc2snLCAnICcgKyBwa2djb21wYXJlZnVuYykKKworICAgICAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCdkb19idWlsZCcsICdyZWNyZGVwdGFzaycsICcgJyArIHBrZ2NvbXBhcmVmdW5jKQorCisgICAgICAgICAgICBpZiBkLmdldFZhckZsYWcocGtnd3JpdGVmdW5jLCAnbm9leGVjJywgVHJ1ZSkgb3Igbm90IGQuZ2V0VmFyRmxhZyhwa2d3cml0ZWZ1bmMsICd0YXNrJywgVHJ1ZSk6CisgICAgICAgICAgICAgICAgIyBQYWNrYWdpbmcgaXMgZGlzYWJsZWQgZm9yIHRoaXMgcmVjaXBlLCB3ZSBzaG91bGRuJ3QgZG8gYW55dGhpbmcKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBpZiBkZXBsb3lkaXJ2YXJyZWYgaW4gc3N0YXRlX291dHB1dGRpcnM6CisgICAgICAgICAgICAgICAgZGVwbG9yX2Rpcl9wa2d0eXBlID0gZC5leHBhbmQoZGVwbG95ZGlydmFycmVmICsgJy1wcmVkaWZmJykKKyAgICAgICAgICAgICAgICAjIFNldCBpbnRlcm1lZGlhdGUgb3V0cHV0IGRpcmVjdG9yeQorICAgICAgICAgICAgICAgIGQuc2V0VmFyRmxhZyhwa2d3cml0ZWZ1bmMsICdzc3RhdGUtb3V0cHV0ZGlycycsIHNzdGF0ZV9vdXRwdXRkaXJzLnJlcGxhY2UoZGVwbG95ZGlydmFycmVmLCBkZXBsb3JfZGlyX3BrZ3R5cGUpKQorICAgICAgICAgICAgICAgICMgVXBkYXRlIFNTVEFURV9EVVBXSElURUxJU1QgdG8gYXZvaWQgc2hhcmVkIGxvY2F0aW9uIGNvbmZsaWN0ZWQgZXJyb3IKKyAgICAgICAgICAgICAgICBkLmFwcGVuZFZhcignU1NUQVRFX0RVUFdISVRFTElTVCcsICcgJXMnICUgZGVwbG9yX2Rpcl9wa2d0eXBlKQorCisgICAgICAgICAgICBkLnNldFZhcihwa2djb21wYXJlZnVuYywgZC5nZXRWYXIoJ2RvX3BhY2thZ2VfY29tcGFyZScsIEZhbHNlKSkKKyAgICAgICAgICAgIGQuc2V0VmFyRmxhZ3MocGtnY29tcGFyZWZ1bmMsIGQuZ2V0VmFyRmxhZ3MoJ2RvX3BhY2thZ2VfY29tcGFyZScsIEZhbHNlKSkKKyAgICAgICAgICAgIGQuYXBwZW5kVmFyRmxhZyhwa2djb21wYXJlZnVuYywgJ2RlcGVuZHMnLCAnIGJ1aWxkLWNvbXBhcmUtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QnKQorICAgICAgICAgICAgYmIuYnVpbGQuYWRkdGFzayhwa2djb21wYXJlZnVuYywgJ2RvX2J1aWxkJywgJ2RvX3BhY2thZ2VkYXRhICcgKyBwa2d3cml0ZWZ1bmMsIGQpCit9CisKKyMgVGhpcyBpc24ndCB0aGUgcmVhbCB0YXNrIGZ1bmN0aW9uIC0gaXQncyBhIHRlbXBsYXRlIHRoYXQgd2UgdXNlIGluIHRoZQorIyBhbm9ueW1vdXMgcHl0aG9uIGNvZGUgYWJvdmUKK2Zha2Vyb290IHB5dGhvbiBkb19wYWNrYWdlX2NvbXBhcmUgKCkgeworICAgIGN1cnJlbnR0YXNrID0gZC5nZXRWYXIoJ0JCX0NVUlJFTlRUQVNLJywgVHJ1ZSkKKyAgICBwa2d0eXBlID0gY3VycmVudHRhc2sucnNwbGl0KCdfJywgMSlbMV0KKyAgICBwYWNrYWdlX2NvbXBhcmVfaW1wbChwa2d0eXBlLCBkKQorfQorCitkZWYgcGFja2FnZV9jb21wYXJlX2ltcGwocGtndHlwZSwgZCk6CisgICAgaW1wb3J0IGVycm5vCisgICAgaW1wb3J0IGZubWF0Y2gKKyAgICBpbXBvcnQgZ2xvYgorICAgIGltcG9ydCBzdWJwcm9jZXNzCisgICAgaW1wb3J0IG9lLnNzdGF0ZXNpZworCisgICAgcG4gPSBkLmdldFZhcignUE4nLCBUcnVlKQorICAgIGRlcGxveWRpciA9IGQuZ2V0VmFyKCdERVBMT1lfRElSXyVzJyAlIHBrZ3R5cGUudXBwZXIoKSwgVHJ1ZSkKKyAgICBwcmVwYXRoID0gZGVwbG95ZGlyICsgJy1wcmVkaWZmLycKKworICAgICMgRmluZCBvdXQgUEtHUiB2YWx1ZXMgYXJlCisgICAgcGtnZGF0YWRpciA9IGQuZ2V0VmFyKCdQS0dEQVRBX0RJUicsIFRydWUpCisgICAgcGFja2FnZXMgPSBbXQorICAgIHRyeToKKyAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihwa2dkYXRhZGlyLCBwbiksICdyJykgYXMgZjoKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGY6CisgICAgICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCdQQUNLQUdFUzonKToKKyAgICAgICAgICAgICAgICAgICAgcGFja2FnZXMgPSBsaW5lLnNwbGl0KCc6JywgMSlbMV0uc3BsaXQoKQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CisgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRU5PRU5UOgorICAgICAgICAgICAgcGFzcworCisgICAgaWYgbm90IHBhY2thZ2VzOgorICAgICAgICBiYi5kZWJ1ZygyLCAnJXM6IG5vIHBhY2thZ2VzLCBub3RoaW5nIHRvIGRvJyAlIHBuKQorICAgICAgICByZXR1cm4KKworICAgIHBrZ3J2YWx1ZXMgPSB7fQorICAgIHJwa2duYW1lcyA9IHt9CisgICAgcmRlcGVuZHMgPSB7fQorICAgIHBrZ3Z2YWx1ZXMgPSB7fQorICAgIGZvciBwa2cgaW4gcGFja2FnZXM6CisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4ocGtnZGF0YWRpciwgJ3J1bnRpbWUnLCBwa2cpLCAncicpIGFzIGY6CisgICAgICAgICAgICBmb3IgbGluZSBpbiBmOgorICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnUEtHUjonKToKKyAgICAgICAgICAgICAgICAgICAgcGtncnZhbHVlc1twa2ddID0gbGluZS5zcGxpdCgnOicsIDEpWzFdLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ1BLR1Y6Jyk6CisgICAgICAgICAgICAgICAgICAgIHBrZ3Z2YWx1ZXNbcGtnXSA9IGxpbmUuc3BsaXQoJzonLCAxKVsxXS5zdHJpcCgpCisgICAgICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoJ1BLR18lczonICUgcGtnKToKKyAgICAgICAgICAgICAgICAgICAgcnBrZ25hbWVzW3BrZ10gPSBsaW5lLnNwbGl0KCc6JywgMSlbMV0uc3RyaXAoKQorICAgICAgICAgICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKCdSREVQRU5EU18lczonICUgcGtnKToKKyAgICAgICAgICAgICAgICAgICAgcmRlcGVuZHNbcGtnXSA9IGxpbmUuc3BsaXQoJzonLCAxKVsxXS5zdHJpcCgpCisKKyAgICAjIFByZXBhcmUgYSBsaXN0IG9mIHRoZSBydW50aW1lIHBhY2thZ2UgbmFtZXMgZm9yIHBhY2thZ2VzIHRoYXQgd2VyZQorICAgICMgYWN0dWFsbHkgcHJvZHVjZWQKKyAgICBycGtnbGlzdCA9IFtdCisgICAgZm9yIHBrZywgcnBrZyBpbiBycGtnbmFtZXMuaXRlbXMoKToKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHBrZ2RhdGFkaXIsICdydW50aW1lJywgcGtnICsgJy5wYWNrYWdlZCcpKToKKyAgICAgICAgICAgIHJwa2dsaXN0LmFwcGVuZCgocnBrZywgcGtnKSkKKyAgICBycGtnbGlzdC5zb3J0KGtleT1sYW1iZGEgeDogbGVuKHhbMF0pLCByZXZlcnNlPVRydWUpCisKKyAgICBwdnUgPSBkLmdldFZhcignUFYnLCBGYWxzZSkKKyAgICBpZiAnJCcgKyAne1NSQ1BWfScgaW4gcHZ1OgorICAgICAgICBwdnByZWZpeCA9IHB2dS5zcGxpdCgnJCcgKyAne1NSQ1BWfScsIDEpWzBdCisgICAgZWxzZToKKyAgICAgICAgcHZwcmVmaXggPSBOb25lCisKKyAgICBwa2d3cml0ZXRhc2sgPSAncGFja2FnZV93cml0ZV8lcycgJSBwa2d0eXBlCisgICAgZmlsZXMgPSBbXQorICAgIGRvY29weSA9IEZhbHNlCisgICAgbWFuaWZlc3QsIF8gPSBvZS5zc3RhdGVzaWcuc3N0YXRlX2dldF9tYW5pZmVzdF9maWxlbmFtZShwa2d3cml0ZXRhc2ssIGQpCisgICAgbWxwcmVmaXggPSBkLmdldFZhcignTUxQUkVGSVgnLCBUcnVlKQorICAgICMgQ29weSByZWNpcGUncyBhbGwgcGFja2FnZXMgaWYgb25lIG9mIHRoZSBwYWNrYWdlcyBhcmUgZGlmZmVyZW50IHRvIG1ha2UKKyAgICAjIHRoZXkgaGF2ZSB0aGUgc2FtZSBQUi4KKyAgICB3aXRoIG9wZW4obWFuaWZlc3QsICdyJykgYXMgZjoKKyAgICAgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aChwcmVwYXRoKToKKyAgICAgICAgICAgICAgICBzcmNwYXRoID0gbGluZS5yc3RyaXAoKQorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHNyY3BhdGgpOgorICAgICAgICAgICAgICAgICAgICBkZXN0cGF0aCA9IG9zLnBhdGguam9pbihkZXBsb3lkaXIsIG9zLnBhdGgucmVscGF0aChzcmNwYXRoLCBwcmVwYXRoKSkKKworICAgICAgICAgICAgICAgICAgICAjIFRoaXMgaXMgY3J1ZGUgYnV0IHNob3VsZCB3b3JrIGFzc3VtaW5nIHRoZSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgIyBwYWNrYWdlIGZpbGUgbmFtZSBzdGFydHMgd2l0aCB0aGUgcGFja2FnZSBuYW1lCisgICAgICAgICAgICAgICAgICAgICMgYW5kIHJwa2dsaXN0IGlzIHNvcnRlZCBieSBsZW5ndGggKGRlc2NlbmRpbmcpCisgICAgICAgICAgICAgICAgICAgIHBrZ2Jhc2VuYW1lID0gb3MucGF0aC5iYXNlbmFtZShkZXN0cGF0aCkKKyAgICAgICAgICAgICAgICAgICAgcGtnbmFtZSA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgZm9yIHJwa2csIHBrZyBpbiBycGtnbGlzdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG1scHJlZml4IGFuZCBwa2d0eXBlID09ICdycG0nIGFuZCBycGtnLnN0YXJ0c3dpdGgobWxwcmVmaXgpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJwa2cgPSBycGtnW2xlbihtbHByZWZpeCk6XQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgcGtnYmFzZW5hbWUuc3RhcnRzd2l0aChycGtnKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa2dyID0gcGtncnZhbHVlc1twa2ddCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdHBhdGhzcGVjID0gZGVzdHBhdGgucmVwbGFjZShwa2dyLCAnKicpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcHZwcmVmaXg6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBrZ3YgPSBwa2d2dmFsdWVzW3BrZ10KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcGtndi5zdGFydHN3aXRoKHB2cHJlZml4KToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBrZ3ZzdWZmaXggPSBwa2d2W2xlbihwdnByZWZpeCk6XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgJysnIGluIHBrZ3ZzdWZmaXg6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3cGtndiA9IHB2cHJlZml4ICsgJyorJyArIHBrZ3ZzdWZmaXguc3BsaXQoJysnLCAxKVsxXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RwYXRoc3BlYyA9IGRlc3RwYXRoc3BlYy5yZXBsYWNlKHBrZ3YsIG5ld3BrZ3YpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGtnbmFtZSA9IHBrZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBiYi53YXJuKCdVbmFibGUgdG8gbWFwICVzIGJhY2sgdG8gcGFja2FnZScgJSBwa2diYXNlbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RwYXRoc3BlYyA9IGRlc3RwYXRoCisKKyAgICAgICAgICAgICAgICAgICAgb2xkZmlsZSA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGRvY29weToKKyAgICAgICAgICAgICAgICAgICAgICAgIG9sZGZpbGVzID0gZ2xvYi5nbG9iKGRlc3RwYXRoc3BlYykKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG9sZGZpbGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZGZpbGUgPSBvbGRmaWxlc1stMV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBzdWJwcm9jZXNzLmNhbGwoWydwa2ctZGlmZi5zaCcsIG9sZGZpbGUsIHNyY3BhdGhdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJlc3VsdCAhPSAwOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2NvcHkgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJiLm5vdGUoIiVzIGFuZCAlcyBhcmUgZGlmZmVyZW50LCB3aWxsIGNvcHkgcGFja2FnZXMiICUgKG9sZGZpbGUsIHNyY3BhdGgpKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2NvcHkgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmIubm90ZSgiTm8gb2xkIHBhY2thZ2VzIGZvdW5kIGZvciAlcywgd2lsbCBjb3B5IHBhY2thZ2VzIiAlIHBrZ25hbWUpCisKKyAgICAgICAgICAgICAgICAgICAgZmlsZXMuYXBwZW5kKChwa2duYW1lLCBwa2diYXNlbmFtZSwgc3JjcGF0aCwgZGVzdHBhdGgpKQorCisgICAgIyBSZW1vdmUgYWxsIHRoZSBvbGQgZmlsZXMgYW5kIGNvcHkgYWdhaW4gaWYgZG9jb3B5CisgICAgaWYgZG9jb3B5OgorICAgICAgICBiYi5wbGFpbignQ29weWluZyBwYWNrYWdlcyBmb3IgcmVjaXBlICVzJyAlIHBuKQorICAgICAgICBwY21hbmlmZXN0ID0gb3MucGF0aC5qb2luKHByZXBhdGgsIGQuZXhwYW5kKCdwa2ctY29tcGFyZS1tYW5pZmVzdC0ke01VTFRJTUFDSF9UQVJHRVRfU1lTfS0ke1BOfScpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIG9wZW4ocGNtYW5pZmVzdCwgJ3InKSBhcyBmOgorICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGY6CisgICAgICAgICAgICAgICAgICAgIGZuID0gbGluZS5yc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICBpZiBmbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5yZW1vdmUoZm4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmIubm90ZSgnUmVtb3ZlZCBvbGQgcGFja2FnZSAlcycgJSBmbikKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FTk9FTlQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRU5PRU5UOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICAjIENyZWF0ZSBuZXcgbWFuaWZlc3QKKyAgICAgICAgd2l0aCBvcGVuKHBjbWFuaWZlc3QsICd3JykgYXMgZjoKKyAgICAgICAgICAgIGZvciBwa2duYW1lLCBwa2diYXNlbmFtZSwgc3JjcGF0aCwgZGVzdHBhdGggaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgZGVzdGRpciA9IG9zLnBhdGguZGlybmFtZShkZXN0cGF0aCkKKyAgICAgICAgICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoZGVzdGRpcikKKyAgICAgICAgICAgICAgICAjIFJlbW92ZSBhbGxhcmNoIHJwbSBwa2cgaWYgaXQgaXMgYWxyZWFkeSBleGlzdGVkIChmb3IKKyAgICAgICAgICAgICAgICAjIG11bHRpbGliKSwgdGhleSdyZSBpZGVudGljYWwgaW4gdGhlb3J5LCBidXQgc3N0YXRlLmJiY2xhc3MKKyAgICAgICAgICAgICAgICAjIGNvcGllcyBpdCBhZ2Fpbiwgc28ga2VlcCBhbGlnbiB3aXRoIHRoYXQuCisgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZGVzdHBhdGgpIGFuZCBwa2d0eXBlID09ICdycG0nIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBkLmdldFZhcignUEFDS0FHRV9BUkNIJywgVHJ1ZSkgPT0gJ2FsbCc6CisgICAgICAgICAgICAgICAgICAgIG9zLnVubGluayhkZXN0cGF0aCkKKyAgICAgICAgICAgICAgICBpZiAob3Muc3RhdChzcmNwYXRoKS5zdF9kZXYgPT0gb3Muc3RhdChkZXN0ZGlyKS5zdF9kZXYpOgorICAgICAgICAgICAgICAgICAgICAjIFVzZSBhIGhhcmQgbGluayB0byBzYXZlIHNwYWNlCisgICAgICAgICAgICAgICAgICAgIG9zLmxpbmsoc3JjcGF0aCwgZGVzdHBhdGgpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNyY3BhdGgsIGRlc3RwYXRoKQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyVzXG4nICUgZGVzdHBhdGgpCisgICAgZWxzZToKKyAgICAgICAgYmIucGxhaW4oJ05vdCBjb3B5aW5nIHBhY2thZ2VzIGZvciByZWNpcGUgJXMnICUgcG4pCisKK2RvX2NsZWFuc3N0YXRlW3Bvc3RmdW5jc10gKz0gInBmc19jbGVhbnBrZ3MiCitweXRob24gcGZzX2NsZWFucGtncyAoKSB7CisgICAgaW1wb3J0IGVycm5vCisgICAgZm9yIHBrZ2NsYXNzIGluIChkLmdldFZhcignUEFDS0FHRV9DTEFTU0VTJywgVHJ1ZSkgb3IgJycpLnNwbGl0KCk6CisgICAgICAgIGlmIHBrZ2NsYXNzLnN0YXJ0c3dpdGgoJ3BhY2thZ2VfJyk6CisgICAgICAgICAgICBwa2d0eXBlID0gcGtnY2xhc3Muc3BsaXQoJ18nLCAxKVsxXQorICAgICAgICAgICAgZGVwbG95ZGlyID0gZC5nZXRWYXIoJ0RFUExPWV9ESVJfJXMnICUgcGtndHlwZS51cHBlcigpLCBUcnVlKQorICAgICAgICAgICAgcHJlcGF0aCA9IGRlcGxveWRpciArICctcHJlZGlmZicKKyAgICAgICAgICAgIHBjbWFuaWZlc3QgPSBvcy5wYXRoLmpvaW4ocHJlcGF0aCwgZC5leHBhbmQoJ3BrZy1jb21wYXJlLW1hbmlmZXN0LSR7TVVMVElNQUNIX1RBUkdFVF9TWVN9LSR7UE59JykpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHBjbWFuaWZlc3QsICdyJykgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGZuID0gbGluZS5yc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgZm46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5yZW1vdmUoZm4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FTk9FTlQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgb3MucmVtb3ZlKHBjbWFuaWZlc3QpCisgICAgICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRU5PRU5UOgorICAgICAgICAgICAgICAgICAgICBwYXNzCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2Vncm91cC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlZ3JvdXAuYmJjbGFzcwppbmRleCAzOGJkYmQzLi4zOTI4YzhhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2Vncm91cC5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZWdyb3VwLmJiY2xhc3MKQEAgLTE0LDYgKzE0LDggQEAKICMgRnVsbHkgZXhwYW5kZWQgLSBzbyBpdCBhcHBsaWVzIHRoZSBvdmVycmlkZXMgYXMgd2VsbAogUEFDS0FHRV9BUkNIX0VYUEFOREVEIDo9ICIke1BBQ0tBR0VfQVJDSH0iCiAKK0xJQ0VOU0UgPz0gIk1JVCIKKwogaW5oZXJpdCAke0BvZS51dGlscy5pZmVsc2UoZC5nZXRWYXIoJ1BBQ0tBR0VfQVJDSF9FWFBBTkRFRCcsIFRydWUpID09ICdhbGwnLCAnYWxsYXJjaCcsICcnKX0KIAogIyBUaGlzIGF1dG9tYXRpY2FsbHkgYWRkcyAtZGJnIGFuZCAtZGV2IGZsYXZvdXJzIG9mIGFsbCBQQUNLQUdFUwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYXRjaC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYXRjaC5iYmNsYXNzCmluZGV4IDNkMjJhZDguLjFmNjkyN2IgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGF0Y2guYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhdGNoLmJiY2xhc3MKQEAgLTUsNiArNSw5IEBACiAKIFBBVENIREVQRU5ERU5DWSA9ICIke1BBVENIVE9PTH0tbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCiAKK1BBVENIX0dJVF9VU0VSX05BTUUgPz0gIk9wZW5FbWJlZGRlZCIKK1BBVENIX0dJVF9VU0VSX0VNQUlMID89ICJvZS5wYXRjaEBvZSIKKwogaW5oZXJpdCB0ZXJtaW5hbAogCiBkZWYgc3JjX3BhdGNoZXMoZCwgYWxsID0gRmFsc2UgKToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGl4YnVmY2FjaGUuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGl4YnVmY2FjaGUuYmJjbGFzcwppbmRleCBkYmUxMWUxLi4zZjQ4YTBmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BpeGJ1ZmNhY2hlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9waXhidWZjYWNoZS5iYmNsYXNzCkBAIC01NCw2ICs1NCw3IEBACiAjIEFuIGVycm9yIGV4aXQgZHVyaW5nIHBvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmUgYWxsb3dzIGJpdGJha2UgdG8KICMgdHJ5IHRvIHJlY292ZXIgYnkgcmUtYnVpbGRpbmcgdGhlIHBhY2thZ2UuCiAjCitERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGdkay1waXhidWYtbmF0aXZlIgogU1NUQVRFUE9TVElOU1RGVU5DU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBwaXhidWZjYWNoZV9zc3RhdGVfcG9zdGluc3QiCiAKICMgU2VlIGJhc2UuYmJjbGFzcyBmb3IgdGhlIG90aGVyIGhhbGYgb2YgdGhpcwpAQCAtNjEsNyArNjIsOCBAQAogCWlmIFsgIiR7QkJfQ1VSUkVOVFRBU0t9IiA9ICJwb3B1bGF0ZV9zeXNyb290IiBdOyB0aGVuCiAJCSR7Z2RrcGl4YnVmX2NvbXBsZXRlfQogCWVsaWYgWyAiJHtCQl9DVVJSRU5UVEFTS30iID0gInBvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmUiIF07IHRoZW4KLQkJZWNobyAiJHtnZGtwaXhidWZfY29tcGxldGV9IiA+PiAke1NUQUdJTkdfRElSfS9zc3RhdGVjb21wbGV0aW9ucworCQlpZiBbIC14ICR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMgXTsgdGhlbgorCQkJZWNobyAiJHtnZGtwaXhidWZfY29tcGxldGV9IiA+PiAke1NUQUdJTkdfRElSfS9zc3RhdGVjb21wbGV0aW9ucworCQlmaQogCWZpCiB9Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2Jhc2UuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2Jhc2UuYmJjbGFzcwppbmRleCAwMDhiYjU3Li40NDYyYjUyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BvcHVsYXRlX3Nka19iYXNlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wb3B1bGF0ZV9zZGtfYmFzZS5iYmNsYXNzCkBAIC0yNiw2ICsyNiw4IEBACiBTREtfT1VUUFVUID0gIiR7U0RLX0RJUn0vaW1hZ2UiCiBTREtfREVQTE9ZID0gIiR7REVQTE9ZX0RJUn0vc2RrIgogCitTREtERVBMT1lESVIgPSAiJHtXT1JLRElSfS8ke1NES01BQ0hJTkV9LWRlcGxveS0ke1BOfS1wb3B1bGF0ZS1zZGsiCisKIEJfdGFzay1wb3B1bGF0ZS1zZGsgPSAiJHtTREtfRElSfSIKIAogU0RLVEFSR0VUU1lTUk9PVCA9ICIke1NES1BBVEh9L3N5c3Jvb3RzLyR7UkVBTF9NVUxUSU1BQ0hfVEFSR0VUX1NZU30iCkBAIC01OCw4ICs2MCw4IEBACiBTREtFWFRQQVRIID89ICJ+LyR7QGQuZ2V0VmFyKCdESVNUUk8nLCBUcnVlKX1fc2RrIgogU0RLX1RJVExFID89ICIke0BkLmdldFZhcignRElTVFJPX05BTUUnLCBUcnVlKSBvciBkLmdldFZhcignRElTVFJPJywgVHJ1ZSl9IFNESyIKIAotU0RLX1RBUkdFVF9NQU5JRkVTVCA9ICIke1NES19ERVBMT1l9LyR7VE9PTENIQUlOX09VVFBVVE5BTUV9LnRhcmdldC5tYW5pZmVzdCIKLVNES19IT1NUX01BTklGRVNUID0gIiR7U0RLX0RFUExPWX0vJHtUT09MQ0hBSU5fT1VUUFVUTkFNRX0uaG9zdC5tYW5pZmVzdCIKK1NES19UQVJHRVRfTUFOSUZFU1QgPSAiJHtTREtERVBMT1lESVJ9LyR7VE9PTENIQUlOX09VVFBVVE5BTUV9LnRhcmdldC5tYW5pZmVzdCIKK1NES19IT1NUX01BTklGRVNUID0gIiR7U0RLREVQTE9ZRElSfS8ke1RPT0xDSEFJTl9PVVRQVVROQU1FfS5ob3N0Lm1hbmlmZXN0IgogcHl0aG9uIHdyaXRlX3RhcmdldF9zZGtfbWFuaWZlc3QgKCkgewogICAgIGZyb20gb2Uuc2RrIGltcG9ydCBzZGtfbGlzdF9pbnN0YWxsZWRfcGFja2FnZXMKICAgICBmcm9tIG9lLnV0aWxzIGltcG9ydCBmb3JtYXRfcGtnX2xpc3QKQEAgLTkwLDkgKzkyLDkgQEAKICMgU29tZSBhcmNocyBvdmVycmlkZSB0aGlzLCB3ZSBuZWVkIHRoZSBuYXRpdmVzZGsgdmVyc2lvbgogIyB0dXJucyBvdXQgdGhpcyBpcyBoYXJkIHRvIGdldCBmcm9tIHRoZSBkYXRhc3RvcmUgZHVlIHRvIFRSQU5TTEFURURfVEFSR0VUX0FSQ0gKICMgbWFuaXB1bGF0aW9uLgotU0RLX09MREVTVF9LRVJORUwgPSAiMi42LjMyIgorU0RLX09MREVTVF9LRVJORUwgPSAiMy4yLjAiCiAKLWZha2Vyb290IHB5dGhvbiBkb19wb3B1bGF0ZV9zZGsoKSB7CitkZWYgcG9wdWxhdGVfc2RrX2NvbW1vbihkKToKICAgICBmcm9tIG9lLnNkayBpbXBvcnQgcG9wdWxhdGVfc2RrCiAgICAgZnJvbSBvZS5tYW5pZmVzdCBpbXBvcnQgY3JlYXRlX21hbmlmZXN0LCBNYW5pZmVzdAogCkBAIC0xMTQsNyArMTE2LDE2IEBACiAgICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0X3R5cGU9TWFuaWZlc3QuTUFOSUZFU1RfVFlQRV9TREtfVEFSR0VUKQogCiAgICAgcG9wdWxhdGVfc2RrKGQpCisKK2Zha2Vyb290IHB5dGhvbiBkb19wb3B1bGF0ZV9zZGsoKSB7CisgICAgcG9wdWxhdGVfc2RrX2NvbW1vbihkKQogfQorU1NUQVRFVEFTS1MgKz0gImRvX3BvcHVsYXRlX3NkayIKK1NTVEFURV9TS0lQX0NSRUFUSU9OX3Rhc2stcG9wdWxhdGUtc2RrID0gJzEnCitkb19wb3B1bGF0ZV9zZGtbY2xlYW5kaXJzXSA9ICIke1NES0RFUExPWURJUn0iCitkb19wb3B1bGF0ZV9zZGtbc3N0YXRlLWlucHV0ZGlyc10gPSAiJHtTREtERVBMT1lESVJ9IgorZG9fcG9wdWxhdGVfc2RrW3NzdGF0ZS1vdXRwdXRkaXJzXSA9ICIke1NES19ERVBMT1l9IgorZG9fcG9wdWxhdGVfc2RrW3N0YW1wLWV4dHJhLWluZm9dID0gIiR7TUFDSElORX0ke1NES01BQ0hJTkV9IgogCiBmYWtlcm9vdCBjcmVhdGVfc2RrX2ZpbGVzKCkgewogCWNwICR7Q09SRUJBU0V9L3NjcmlwdHMvcmVsb2NhdGVfc2RrLnB5ICR7U0RLX09VVFBVVH0vJHtTREtQQVRIfS8KQEAgLTEzNiw3ICsxNDcsOCBAQAogICAgICAgICByZXR1cm4gb3MucGF0aC5hYnNwYXRoKHBhdGgpCiAKICAgICAjIEdldCBzY2FuIHJvb3QKLSAgICBTQ0FOX1JPT1QgPSBub3JtX3BhdGgoIiR7U0RLX09VVFBVVH0vJHtTREtQQVRIfS9zeXNyb290cy8iKQorICAgIFNDQU5fUk9PVCA9IG5vcm1fcGF0aCgiJXMvJXMvc3lzcm9vdHMvIiAlIChkLmdldFZhcignU0RLX09VVFBVVCcsIFRydWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLmdldFZhcignU0RLUEFUSCcsIFRydWUpKSkKIAogICAgIGJiLm5vdGUoJ0NoZWNraW5nIFNESyBzeXNyb290cyBhdCAnICsgU0NBTl9ST09UKQogCkBAIC0xODAsMTQgKzE5MiwxNCBAQAogCiBmYWtlcm9vdCB0YXJfc2RrKCkgewogCSMgUGFja2FnZSBpdCB1cAotCW1rZGlyIC1wICR7U0RLX0RFUExPWX0KKwlta2RpciAtcCAke1NES0RFUExPWURJUn0KIAljZCAke1NES19PVVRQVVR9LyR7U0RLUEFUSH0KLQl0YXIgJHtTREtUQVJPUFRTfSAtY2YgLSAuIHwgcGl4eiA+ICR7U0RLX0RFUExPWX0vJHtUT09MQ0hBSU5fT1VUUFVUTkFNRX0udGFyLnh6CisJdGFyICR7U0RLVEFST1BUU30gLWNmIC0gLiB8IHBpeHogPiAke1NES0RFUExPWURJUn0vJHtUT09MQ0hBSU5fT1VUUFVUTkFNRX0udGFyLnh6CiB9CiAKIGZha2Vyb290IGNyZWF0ZV9zaGFyKCkgewogCSMgY29weSBpbiB0aGUgdGVtcGxhdGUgc2hhciBleHRyYWN0b3Igc2NyaXB0Ci0JY3AgJHtDT1JFQkFTRX0vbWV0YS9maWxlcy90b29sY2hhaW4tc2hhci1leHRyYWN0LnNoICR7U0RLX0RFUExPWX0vJHtUT09MQ0hBSU5fT1VUUFVUTkFNRX0uc2gKKwljcCAke0NPUkVCQVNFfS9tZXRhL2ZpbGVzL3Rvb2xjaGFpbi1zaGFyLWV4dHJhY3Quc2ggJHtTREtERVBMT1lESVJ9LyR7VE9PTENIQUlOX09VVFBVVE5BTUV9LnNoCiAKIAlybSAtZiAke1R9L3ByZV9pbnN0YWxsX2NvbW1hbmQgJHtUfS9wb3N0X2luc3RhbGxfY29tbWFuZAogCkBAIC0yMDMsNyArMjE1LDcgQEAKIEVPRgogCXNlZCAtaSAtZSAnL0BTREtfUFJFX0lOU1RBTExfQ09NTUFOREAvciAke1R9L3ByZV9pbnN0YWxsX2NvbW1hbmQnIFwKIAkJLWUgJy9AU0RLX1BPU1RfSU5TVEFMTF9DT01NQU5EQC9yICR7VH0vcG9zdF9pbnN0YWxsX2NvbW1hbmQnIFwKLQkJJHtTREtfREVQTE9ZfS8ke1RPT0xDSEFJTl9PVVRQVVROQU1FfS5zaAorCQkke1NES0RFUExPWURJUn0vJHtUT09MQ0hBSU5fT1VUUFVUTkFNRX0uc2gKIAogCSMgc3Vic3RpdHV0ZSB2YXJpYWJsZXMKIAlzZWQgLWkgLWUgJ3MjQFNES19BUkNIQCMke1NES19BUkNIfSNnJyBcCkBAIC0yMTUsMTYgKzIyNywxNiBAQAogCQktZSAncyNAU0RLX1ZFUlNJT05AIyR7U0RLX1ZFUlNJT059I2cnIFwKIAkJLWUgJy9AU0RLX1BSRV9JTlNUQUxMX0NPTU1BTkRAL2QnIFwKIAkJLWUgJy9AU0RLX1BPU1RfSU5TVEFMTF9DT01NQU5EQC9kJyBcCi0JCSR7U0RLX0RFUExPWX0vJHtUT09MQ0hBSU5fT1VUUFVUTkFNRX0uc2gKKwkJJHtTREtERVBMT1lESVJ9LyR7VE9PTENIQUlOX09VVFBVVE5BTUV9LnNoCiAKIAkjIGFkZCBleGVjdXRpb24gcGVybWlzc2lvbgotCWNobW9kICt4ICR7U0RLX0RFUExPWX0vJHtUT09MQ0hBSU5fT1VUUFVUTkFNRX0uc2gKKwljaG1vZCAreCAke1NES0RFUExPWURJUn0vJHtUT09MQ0hBSU5fT1VUUFVUTkFNRX0uc2gKIAogCSMgYXBwZW5kIHRoZSBTREsgdGFyYmFsbAotCWNhdCAke1NES19ERVBMT1l9LyR7VE9PTENIQUlOX09VVFBVVE5BTUV9LnRhci54eiA+PiAke1NES19ERVBMT1l9LyR7VE9PTENIQUlOX09VVFBVVE5BTUV9LnNoCisJY2F0ICR7U0RLREVQTE9ZRElSfS8ke1RPT0xDSEFJTl9PVVRQVVROQU1FfS50YXIueHogPj4gJHtTREtERVBMT1lESVJ9LyR7VE9PTENIQUlOX09VVFBVVE5BTUV9LnNoCiAKIAkjIGRlbGV0ZSB0aGUgb2xkIHRhcmJhbGwsIHdlIGRvbid0IG5lZWQgaXQgYW55bW9yZQotCXJtICR7U0RLX0RFUExPWX0vJHtUT09MQ0hBSU5fT1VUUFVUTkFNRX0udGFyLnh6CisJcm0gJHtTREtERVBMT1lESVJ9LyR7VE9PTENIQUlOX09VVFBVVE5BTUV9LnRhci54egogfQogCiBwb3B1bGF0ZV9zZGtfbG9nX2NoZWNrKCkgewpAQCAtMjUxLDcgKzI2Myw3IEBACiBkZWYgc2RrX3ZhcmlhYmxlcyhkKToKICAgICB2YXJpYWJsZXMgPSBbJ0JVSUxEX0lNQUdFU19GUk9NX0ZFRURTJywnU0RLX09TJywnU0RLX09VVFBVVCcsJ1NES1BBVEhOQVRJVkUnLCdTREtUQVJHRVRTWVNST09UJywnU0RLX0RJUicsJ1NES19WRU5ET1InLCdTREtJTUFHRV9JTlNUQUxMX0NPTVBMRU1FTlRBUlknLCdTREtfUEFDS0FHRV9BUkNIUycsJ1NES19PVVRQVVQnLAogICAgICAgICAgICAgICAgICAnU0RLVEFSR0VUU1lTUk9PVCcsJ01VTFRJTElCX1ZBUklBTlRTJywnTVVMVElMSUJTJywnQUxMX01VTFRJTElCX1BBQ0tBR0VfQVJDSFMnLCdNVUxUSUxJQl9HTE9CQUxfVkFSSUFOVFMnLCdCQURfUkVDT01NRU5EQVRJT05TJywnTk9fUkVDT01NRU5EQVRJT05TJywnUEFDS0FHRV9BUkNIUycsCi0gICAgICAgICAgICAgICAgICdQQUNLQUdFX0NMQVNTRVMnLCdUQVJHRVRfVkVORE9SJywnVEFSR0VUX1ZFTkRPUicsJ1RBUkdFVF9BUkNIJywnVEFSR0VUX09TJywnQkJFWFRFTkRWQVJJQU5UJywnRkVFRF9ERVBMT1lESVJfQkFTRV9VUkknXQorICAgICAgICAgICAgICAgICAnUEFDS0FHRV9DTEFTU0VTJywnVEFSR0VUX1ZFTkRPUicsJ1RBUkdFVF9WRU5ET1InLCdUQVJHRVRfQVJDSCcsJ1RBUkdFVF9PUycsJ0JCRVhURU5EVkFSSUFOVCcsJ0ZFRURfREVQTE9ZRElSX0JBU0VfVVJJJywgJ1BBQ0tBR0VfRVhDTFVERV9DT01QTEVNRU5UQVJZJ10KICAgICB2YXJpYWJsZXMuZXh0ZW5kKHNka19jb21tYW5kX3ZhcmlhYmxlcyhkKSkKICAgICByZXR1cm4gIiAiLmpvaW4odmFyaWFibGVzKQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BvcHVsYXRlX3Nka19leHQuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2V4dC5iYmNsYXNzCmluZGV4IDg3NTE4ZDEuLjBmMDUyNWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2V4dC5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2V4dC5iYmNsYXNzCkBAIC0yMCwzNCArMjAsNDMgQEAKIAogIyBPcHRpb25zIGFyZSBmdWxsIG9yIG1pbmltYWwKIFNES19FWFRfVFlQRSA/PSAiZnVsbCIKK1NES19JTkNMVURFX1BLR0RBVEEgPz0gIjAiCitTREtfSU5DTFVERV9UT09MQ0hBSU4gPz0gIiR7QCcxJyBpZiBkLmdldFZhcignU0RLX0VYVF9UWVBFJywgVHJ1ZSkgPT0gJ2Z1bGwnIGVsc2UgJzAnfSIKIAogU0RLX1JFQ1JERVBfVEFTS1MgPz0gIiIKIAogU0RLX0xPQ0FMX0NPTkZfV0hJVEVMSVNUID89ICIiCiBTREtfTE9DQUxfQ09ORl9CTEFDS0xJU1QgPz0gIkNPTkZfVkVSU0lPTiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJCX05VTUJFUl9USFJFQURTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQkJfTlVNQkVSX1BBUlNFX1RIUkVBRFMgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQVJBTExFTF9NQUtFIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJTRVJWX0hPU1QgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTU1RBVEVfTUlSUk9SUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERMX0RJUiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNTVEFURV9ESVIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUTVBESVIgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKIFNES19JTkhFUklUX0JMQUNLTElTVCA/PSAiYnVpbGRoaXN0b3J5IGljZWNjIgogU0RLX1VQREFURV9VUkwgPz0gIiIKIAogU0RLX1RBUkdFVFMgPz0gIiR7UE59IgogCi1kZWYgZ2V0X3Nka19pbnN0YWxsX3RhcmdldHMoZCk6CitkZWYgZ2V0X3Nka19pbnN0YWxsX3RhcmdldHMoZCwgaW1hZ2VzX29ubHk9RmFsc2UpOgogICAgIHNka19pbnN0YWxsX3RhcmdldHMgPSAnJwotICAgIGlmIGQuZ2V0VmFyKCdTREtfRVhUX1RZUEUnLCBUcnVlKSAhPSAnbWluaW1hbCc6CisgICAgaWYgaW1hZ2VzX29ubHkgb3IgZC5nZXRWYXIoJ1NES19FWFRfVFlQRScsIFRydWUpICE9ICdtaW5pbWFsJzoKICAgICAgICAgc2RrX2luc3RhbGxfdGFyZ2V0cyA9IGQuZ2V0VmFyKCdTREtfVEFSR0VUUycsIFRydWUpCiAKICAgICAgICAgZGVwZCA9IGQuZ2V0VmFyKCdCQl9UQVNLREVQREFUQScsIEZhbHNlKQotICAgICAgICBmb3IgdiBpbiBkZXBkLml0ZXJ2YWx1ZXMoKToKKyAgICAgICAgZm9yIHYgaW4gZGVwZC52YWx1ZXMoKToKICAgICAgICAgICAgIGlmIHZbMV0gPT0gJ2RvX2ltYWdlX2NvbXBsZXRlJzoKICAgICAgICAgICAgICAgICBpZiB2WzBdIG5vdCBpbiBzZGtfaW5zdGFsbF90YXJnZXRzOgogICAgICAgICAgICAgICAgICAgICBzZGtfaW5zdGFsbF90YXJnZXRzICs9ICcge30nLmZvcm1hdCh2WzBdKQogCi0gICAgaWYgZC5nZXRWYXIoJ1NES19JTkNMVURFX1BLR0RBVEEnLCBUcnVlKSA9PSAnMSc6Ci0gICAgICAgIHNka19pbnN0YWxsX3RhcmdldHMgKz0gJyBtZXRhLXdvcmxkLXBrZ2RhdGE6ZG9fYWxscGFja2FnZWRhdGEnCisgICAgaWYgbm90IGltYWdlc19vbmx5OgorICAgICAgICBpZiBkLmdldFZhcignU0RLX0lOQ0xVREVfUEtHREFUQScsIFRydWUpID09ICcxJzoKKyAgICAgICAgICAgIHNka19pbnN0YWxsX3RhcmdldHMgKz0gJyBtZXRhLXdvcmxkLXBrZ2RhdGE6ZG9fYWxscGFja2FnZWRhdGEnCisgICAgICAgIGlmIGQuZ2V0VmFyKCdTREtfSU5DTFVERV9UT09MQ0hBSU4nLCBUcnVlKSA9PSAnMSc6CisgICAgICAgICAgICBzZGtfaW5zdGFsbF90YXJnZXRzICs9ICcgbWV0YS1leHRzZGstdG9vbGNoYWluOmRvX3BvcHVsYXRlX3N5c3Jvb3QnCiAKICAgICByZXR1cm4gc2RrX2luc3RhbGxfdGFyZ2V0cwogCkBAIC03Niw2ICs4NSw2NyBAQAogCiBTREtfVElUTEVfdGFzay1wb3B1bGF0ZS1zZGstZXh0ID0gIiR7QGQuZ2V0VmFyKCdESVNUUk9fTkFNRScsIFRydWUpIG9yIGQuZ2V0VmFyKCdESVNUUk8nLCBUcnVlKX0gRXh0ZW5zaWJsZSBTREsiCiAKK2RlZiBjbGVhbl9lc2RrX2J1aWxkZGlyKGQsIHNka2Jhc2VwYXRoKToKKyAgICAiIiJDbGVhbiB1cCB0cmFjZXMgb2YgdGhlIGZha2UgYnVpbGQgZm9yIGNyZWF0ZV9maWx0ZXJlZF90YXNrbGlzdCgpIiIiCisgICAgaW1wb3J0IHNodXRpbAorICAgIGNsZWFucGF0aHMgPSAnY2FjaGUgY29uZi9zYW5pdHlfaW5mbyBjb25mL3RlbXBsYXRlY29uZi5jZmcgdG1wJy5zcGxpdCgpCisgICAgZm9yIHB0aCBpbiBjbGVhbnBhdGhzOgorICAgICAgICBmdWxscHRoID0gb3MucGF0aC5qb2luKHNka2Jhc2VwYXRoLCBwdGgpCisgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoZnVsbHB0aCk6CisgICAgICAgICAgICBzaHV0aWwucm10cmVlKGZ1bGxwdGgpCisgICAgICAgIGVsaWYgb3MucGF0aC5pc2ZpbGUoZnVsbHB0aCk6CisgICAgICAgICAgICBvcy5yZW1vdmUoZnVsbHB0aCkKKworZGVmIGNyZWF0ZV9maWx0ZXJlZF90YXNrbGlzdChkLCBzZGtiYXNlcGF0aCwgdGFza2xpc3RmaWxlLCBjb25mX2luaXRwYXRoKToKKyAgICAiIiIKKyAgICBDcmVhdGUgYSBmaWx0ZXJlZCBsaXN0IG9mIHRhc2tzLiBBbHNvIGRvdWJsZS1jaGVja3MgdGhhdCB0aGUgYnVpbGQgc3lzdGVtCisgICAgd2l0aGluIHRoZSBTREsgYmFzaWNhbGx5IHdvcmtzIGFuZCByZXF1aXJlZCBzc3RhdGUgYXJ0aWZhY3RzIGFyZSBhdmFpbGFibGUuCisgICAgIiIiCisgICAgaW1wb3J0IHRlbXBmaWxlCisgICAgaW1wb3J0IHNodXRpbAorICAgIGltcG9ydCBvZS5jb3B5X2J1aWxkc3lzdGVtCisKKyAgICAjIENyZWF0ZSBhIHRlbXBvcmFyeSBidWlsZCBkaXJlY3RvcnkgdGhhdCB3ZSBjYW4gcGFzcyB0byB0aGUgZW52IHNldHVwIHNjcmlwdAorICAgIHNodXRpbC5jb3B5ZmlsZShzZGtiYXNlcGF0aCArICcvY29uZi9sb2NhbC5jb25mJywgc2RrYmFzZXBhdGggKyAnL2NvbmYvbG9jYWwuY29uZi5iYWsnKQorICAgIHRyeToKKyAgICAgICAgd2l0aCBvcGVuKHNka2Jhc2VwYXRoICsgJy9jb25mL2xvY2FsLmNvbmYnLCAnYScpIGFzIGY6CisgICAgICAgICAgICAjIEZvcmNlIHRoZSB1c2Ugb2Ygc3N0YXRlIGZyb20gdGhlIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgZi53cml0ZSgnXG5TU1RBVEVfRElSX2ZvcmNldmFyaWFibGUgPSAiJXMiXG4nICUgZC5nZXRWYXIoJ1NTVEFURV9ESVInLCBUcnVlKSkKKyAgICAgICAgICAgIGYud3JpdGUoJ1NTVEFURV9NSVJST1JTX2ZvcmNldmFyaWFibGUgPSAiIlxuJykKKyAgICAgICAgICAgICMgRW5zdXJlIFRNUERJUiBpcyB0aGUgZGVmYXVsdCBzbyB0aGF0IGNsZWFuX2VzZGtfYnVpbGRkaXIoKSBjYW4gZGVsZXRlIGl0CisgICAgICAgICAgICBmLndyaXRlKCdUTVBESVJfZm9yY2V2YXJpYWJsZSA9ICIke1RPUERJUn0vdG1wIlxuJykKKyAgICAgICAgICAgICMgRHJvcCB1bmluYXRpdmUgaWYgdGhlIGJ1aWxkIGlzbid0IHVzaW5nIGl0IChvciBlbHNlIE5BVElWRUxTQlNUUklORyB3aWxsCisgICAgICAgICAgICAjIGJlIGRpZmZlcmVudCBhbmQgd2Ugd29uJ3QgYmUgYWJsZSB0byBmaW5kIG91ciBuYXRpdmUgc3N0YXRlKQorICAgICAgICAgICAgaWYgbm90IGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ3VuaW5hdGl2ZScsIGQpOgorICAgICAgICAgICAgICAgIGYud3JpdGUoJ0lOSEVSSVRfcmVtb3ZlID0gInVuaW5hdGl2ZSJcbicpCisKKyAgICAgICAgIyBVbmZvcnR1bmF0ZWx5IHRoZSBkZWZhdWx0IFNES1BBVEggKG9yIGV2ZW4gYSBjdXN0b20gdmFsdWUpIG1heSBjb250YWluIGNoYXJhY3RlcnMgdGhhdCBiaXRiYWtlCisgICAgICAgICMgd2lsbCBub3QgYWxsb3cgaW4gaXRzIENPUkVCQVNFIHBhdGgsIHNvIHdlIG5lZWQgdG8gcmVuYW1lIHRoZSBkaXJlY3RvcnkgdGVtcG9yYXJpbHkKKyAgICAgICAgdGVtcF9zZGtiYXNlcGF0aCA9IGQuZ2V0VmFyKCdTREtfT1VUUFVUJywgVHJ1ZSkgKyAnL3RtcC1yZW5hbWVkLXNkaycKKyAgICAgICAgIyBEZWxldGUgYW55IGV4aXN0aW5nIHRlbXAgZGlyCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNodXRpbC5ybXRyZWUodGVtcF9zZGtiYXNlcGF0aCkKKyAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBvcy5yZW5hbWUoc2RrYmFzZXBhdGgsIHRlbXBfc2RrYmFzZXBhdGgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNtZHByZWZpeCA9ICcuICVzIC47ICcgJSBjb25mX2luaXRwYXRoCisgICAgICAgICAgICBsb2dmaWxlID0gZC5nZXRWYXIoJ1dPUktESVInLCBUcnVlKSArICcvdGFza2xpc3RfYmJfbG9nLnR4dCcKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvZS5jb3B5X2J1aWxkc3lzdGVtLmNoZWNrX3NzdGF0ZV90YXNrX2xpc3QoZCwgZ2V0X3Nka19pbnN0YWxsX3RhcmdldHMoZCksIHRhc2tsaXN0ZmlsZSwgY21kcHJlZml4PWNtZHByZWZpeCwgY3dkPXRlbXBfc2RrYmFzZXBhdGgsIGxvZ2ZpbGU9bG9nZmlsZSkKKyAgICAgICAgICAgIGV4Y2VwdCBiYi5wcm9jZXNzLkV4ZWN1dGlvbkVycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgbXNnID0gJ0ZhaWxlZCB0byBnZW5lcmF0ZSBmaWx0ZXJlZCB0YXNrIGxpc3QgZm9yIGV4dGVuc2libGUgU0RLOlxuJXMnICUgIGUuc3Rkb3V0LnJzdHJpcCgpCisgICAgICAgICAgICAgICAgaWYgJ2F0dGVtcHRlZCB0byBleGVjdXRlIHVuZXhwZWN0ZWRseSBhbmQgc2hvdWxkIGhhdmUgYmVlbiBzZXRzY2VuZWQnIGluIGUuc3Rkb3V0OgorICAgICAgICAgICAgICAgICAgICBtc2cgKz0gJ1xuLS0tLS0tLS0tLVxuXG5OT1RFOiAiYXR0ZW1wdGVkIHRvIGV4ZWN1dGUgdW5leHBlY3RlZGx5IGFuZCBzaG91bGQgaGF2ZSBiZWVuIHNldHNjZW5lZCIgZXJyb3JzIGluZGljYXRlIHRoaXMgbWF5IGJlIGNhdXNlZCBieSBtaXNzaW5nIHNzdGF0ZSBhcnRpZmFjdHMgdGhhdCB3ZXJlIGxpa2VseSBwcm9kdWNlZCBpbiBlYXJsaWVyIGJ1aWxkcywgYnV0IGhhdmUgYmVlbiBzdWJzZXF1ZW50bHkgZGVsZXRlZCBmb3Igc29tZSByZWFzb24uXG4nCisgICAgICAgICAgICAgICAgYmIuZmF0YWwobXNnKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MucmVuYW1lKHRlbXBfc2RrYmFzZXBhdGgsIHNka2Jhc2VwYXRoKQorICAgICAgICAjIENsZWFuIG91dCByZXNpZHVlIG9mIHJ1bm5pbmcgYml0YmFrZSwgd2hpY2ggY2hlY2tfc3N0YXRlX3Rhc2tfbGlzdCgpCisgICAgICAgICMgd2lsbCBlZmZlY3RpdmVseSBkbworICAgICAgICBjbGVhbl9lc2RrX2J1aWxkZGlyKGQsIHNka2Jhc2VwYXRoKQorICAgIGZpbmFsbHk6CisgICAgICAgIG9zLnJlcGxhY2Uoc2RrYmFzZXBhdGggKyAnL2NvbmYvbG9jYWwuY29uZi5iYWsnLCBzZGtiYXNlcGF0aCArICcvY29uZi9sb2NhbC5jb25mJykKKwogcHl0aG9uIGNvcHlfYnVpbGRzeXN0ZW0gKCkgewogICAgIGltcG9ydCByZQogICAgIGltcG9ydCBzaHV0aWwKQEAgLTEyNSw4ICsxOTUsOCBAQAogICAgIGQuc2V0VmFyKCdzY3JpcHRyZWxwYXRoJywgc2NyaXB0cmVscGF0aCkKIAogICAgICMgV3JpdGUgb3V0IGNvbmZpZyBmaWxlIGZvciBkZXZ0b29sCi0gICAgaW1wb3J0IENvbmZpZ1BhcnNlcgotICAgIGNvbmZpZyA9IENvbmZpZ1BhcnNlci5TYWZlQ29uZmlnUGFyc2VyKCkKKyAgICBpbXBvcnQgY29uZmlncGFyc2VyCisgICAgY29uZmlnID0gY29uZmlncGFyc2VyLlNhZmVDb25maWdQYXJzZXIoKQogICAgIGNvbmZpZy5hZGRfc2VjdGlvbignR2VuZXJhbCcpCiAgICAgY29uZmlnLnNldCgnR2VuZXJhbCcsICdiaXRiYWtlX3N1YmRpcicsIGNvbmZfYmJwYXRoKQogICAgIGNvbmZpZy5zZXQoJ0dlbmVyYWwnLCAnaW5pdF9wYXRoJywgY29uZl9pbml0cGF0aCkKQEAgLTE3MCw2ICsyNDAsMTQgQEAKICAgICAgICAgZi53cml0ZSgnICAgICQnICsgJ3tTREtCQVNFTUVUQVBBVEh9L3dvcmtzcGFjZSBcXFxuJykKICAgICAgICAgZi53cml0ZSgnICAgICJcbicpCiAKKyAgICAjIENvcHkgdW5pbmF0aXZlIHRhcmJhbGwKKyAgICAjIEZvciBub3cgdGhpcyBpcyB3aGVyZSB1bmluYXRpdmUuYmJjbGFzcyBleHBlY3RzIHRoZSB0YXJiYWxsCisgICAgdW5pbmF0aXZlX2ZpbGUgPSBkLmV4cGFuZCgnJHtTREtfREVQTE9ZfS8ke0JVSUxEX0FSQ0h9LW5hdGl2ZXNkay1saWJjLnRhci5iejInKQorICAgIHVuaW5hdGl2ZV9jaGVja3N1bSA9IGJiLnV0aWxzLnNoYTI1Nl9maWxlKHVuaW5hdGl2ZV9maWxlKQorICAgIHVuaW5hdGl2ZV9vdXRkaXIgPSAnJXMvZG93bmxvYWRzL3VuaW5hdGl2ZS8lcycgJSAoYmFzZW91dHBhdGgsIHVuaW5hdGl2ZV9jaGVja3N1bSkKKyAgICBiYi51dGlscy5ta2RpcmhpZXIodW5pbmF0aXZlX291dGRpcikKKyAgICBzaHV0aWwuY29weSh1bmluYXRpdmVfZmlsZSwgdW5pbmF0aXZlX291dGRpcikKKwogICAgIGVudl93aGl0ZWxpc3QgPSAoZC5nZXRWYXIoJ0JCX0VOVl9FWFRSQVdISVRFJywgVHJ1ZSkgb3IgJycpLnNwbGl0KCkKICAgICBlbnZfd2hpdGVsaXN0X3ZhbHVlcyA9IHt9CiAKQEAgLTIwNCw3ICsyODIsMTAgQEAKICAgICAgICAgICAgICMgV3JpdGUgYSBuZXdsaW5lIGp1c3QgaW4gY2FzZSB0aGVyZSdzIG5vbmUgYXQgdGhlIGVuZCBvZiB0aGUgb3JpZ2luYWwKICAgICAgICAgICAgIGYud3JpdGUoJ1xuJykKIAotICAgICAgICAgICAgZi53cml0ZSgnSU5IRVJJVCArPSAiJXMiXG5cbicgJSAndW5pbmF0aXZlJykKKyAgICAgICAgICAgIGYud3JpdGUoJ0RMX0RJUiA9ICIke1RPUERJUn0vZG93bmxvYWRzIlxuJykKKworICAgICAgICAgICAgZi53cml0ZSgnSU5IRVJJVCArPSAiJXMiXG4nICUgJ3VuaW5hdGl2ZScpCisgICAgICAgICAgICBmLndyaXRlKCdVTklOQVRJVkVfQ0hFQ0tTVU1bJXNdID0gIiVzIlxuXG4nICUgKGQuZ2V0VmFyKCdCVUlMRF9BUkNIJywgVHJ1ZSksIHVuaW5hdGl2ZV9jaGVja3N1bSkpCiAgICAgICAgICAgICBmLndyaXRlKCdDT05GX1ZFUlNJT04gPSAiJXMiXG5cbicgJSBkLmdldFZhcignQ09ORl9WRVJTSU9OJywgRmFsc2UpKQogCiAgICAgICAgICAgICAjIFNvbWUgY2xhc3NlcyBhcmUgbm90IHN1aXRhYmxlIGZvciBTREssIHJlbW92ZSB0aGVtIGZyb20gSU5IRVJJVApAQCAtMjE5LDkgKzMwMCwxMiBAQAogICAgICAgICAgICAgIyB3YXJuaW5nLgogICAgICAgICAgICAgZi53cml0ZSgnU0lHR0VOX0xPQ0tFRFNJR1NfU1NUQVRFX0VYSVNUU19DSEVDSyA9ICJub25lIlxuXG4nKQogCi0gICAgICAgICAgICAjIEVycm9yIGlmIHRoZSBzaWdzIGluIHRoZSBsb2NrZWQtc2lnbmF0dXJlIGZpbGUgZG9uJ3QgbWF0Y2gKKyAgICAgICAgICAgICMgV2FybiBpZiB0aGUgc2lncyBpbiB0aGUgbG9ja2VkLXNpZ25hdHVyZSBmaWxlIGRvbid0IG1hdGNoCiAgICAgICAgICAgICAjIHRoZSBzaWcgY29tcHV0ZWQgZnJvbSB0aGUgbWV0YWRhdGEuCi0gICAgICAgICAgICBmLndyaXRlKCdTSUdHRU5fTE9DS0VEU0lHU19UQVNLU0lHX0NIRUNLID0gImVycm9yIlxuXG4nKQorICAgICAgICAgICAgZi53cml0ZSgnU0lHR0VOX0xPQ0tFRFNJR1NfVEFTS1NJR19DSEVDSyA9ICJ3YXJuIlxuXG4nKQorCisgICAgICAgICAgICAjIFNldCB1cCB3aGl0ZWxpc3QgZm9yIHJ1biBvbiBpbnN0YWxsCisgICAgICAgICAgICBmLndyaXRlKCdCQl9TRVRTQ0VORV9FTkZPUkNFX1dISVRFTElTVCA9ICIlOiogKjpkb19zaGFyZWRfd29ya2RpciAqOmRvX3JtX3dvcmsiXG5cbicpCiAKICAgICAgICAgICAgICMgSGlkZSB0aGUgY29uZmlnIGluZm9ybWF0aW9uIGZyb20gYml0YmFrZSBvdXRwdXQgKHNpbmNlIGl0J3MgZml4ZWQgd2l0aGluIHRoZSBTREspCiAgICAgICAgICAgICBmLndyaXRlKCdCVUlMRENGR19IRUFERVIgPSAiIlxuJykKQEAgLTI2Myw3ICszNDcsNyBAQAogICAgICMgRW5zdXJlIGFueSB2YXJpYWJsZXMgc2V0IGZyb20gdGhlIGV4dGVybmFsIGVudmlyb25tZW50IChieSB3YXkgb2YKICAgICAjIEJCX0VOVl9FWFRSQVdISVRFKSBhcmUgc2V0IGluIHRoZSBTREsncyBjb25maWd1cmF0aW9uCiAgICAgZXh0cmFsaW5lcyA9IFtdCi0gICAgZm9yIG5hbWUsIHZhbHVlIGluIGVudl93aGl0ZWxpc3RfdmFsdWVzLml0ZXJpdGVtcygpOgorICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBlbnZfd2hpdGVsaXN0X3ZhbHVlcy5pdGVtcygpOgogICAgICAgICBhY3R1YWx2YWx1ZSA9IGQuZ2V0VmFyKG5hbWUsIFRydWUpIG9yICcnCiAgICAgICAgIGlmIHZhbHVlICE9IGFjdHVhbHZhbHVlOgogICAgICAgICAgICAgZXh0cmFsaW5lcy5hcHBlbmQoJyVzID0gIiVzIlxuJyAlIChuYW1lLCBhY3R1YWx2YWx1ZSkpCkBAIC0yNzYsNyArMzYwLDcgQEAKICAgICAgICAgICAgIGYud3JpdGUoJ1xuJykKIAogICAgICMgRmlsdGVyIHRoZSBsb2NrZWQgc2lnbmF0dXJlcyBmaWxlIHRvIGp1c3QgdGhlIHNzdGF0ZSB0YXNrcyB3ZSBhcmUgaW50ZXJlc3RlZCBpbgotICAgIGV4Y2x1ZGVkX3RhcmdldHMgPSBkLmdldFZhcignU0RLX1RBUkdFVFMnLCBUcnVlKQorICAgIGV4Y2x1ZGVkX3RhcmdldHMgPSBnZXRfc2RrX2luc3RhbGxfdGFyZ2V0cyhkLCBpbWFnZXNfb25seT1UcnVlKQogICAgIHNpZ2ZpbGUgPSBkLmdldFZhcignV09SS0RJUicsIFRydWUpICsgJy9sb2NrZWQtc2lncy5pbmMnCiAgICAgbG9ja2Vkc2lnc19wcnVuZWQgPSBiYXNlb3V0cGF0aCArICcvY29uZi9sb2NrZWQtc2lncy5pbmMnCiAgICAgb2UuY29weV9idWlsZHN5c3RlbS5wcnVuZV9sb2NrZWRzaWdzKFtdLApAQCAtMjg5LDYgKzM3MywxNSBAQAogICAgICMgdW5pbmF0aXZlLmJiY2xhc3Mgc2V0cyBOQVRJVkVMU0JTVFJJTkcgdG8gJ3VuaXZlcnNhbCcKICAgICBmaXhlZGxzYnN0cmluZyA9ICd1bml2ZXJzYWwnCiAKKyAgICBzZGtfaW5jbHVkZV90b29sY2hhaW4gPSAoZC5nZXRWYXIoJ1NES19JTkNMVURFX1RPT0xDSEFJTicsIFRydWUpID09ICcxJykKKyAgICBzZGtfZXh0X3R5cGUgPSBkLmdldFZhcignU0RLX0VYVF9UWVBFJywgVHJ1ZSkKKyAgICBpZiBzZGtfZXh0X3R5cGUgIT0gJ21pbmltYWwnIG9yIHNka19pbmNsdWRlX3Rvb2xjaGFpbiBvciBkZXJpdmF0aXZlOgorICAgICAgICAjIENyZWF0ZSB0aGUgZmlsdGVyZWQgdGFzayBsaXN0IHVzZWQgdG8gZ2VuZXJhdGUgdGhlIHNzdGF0ZSBjYWNoZSBzaGlwcGVkIHdpdGggdGhlIFNESworICAgICAgICB0YXNrbGlzdGZuID0gZC5nZXRWYXIoJ1dPUktESVInLCBUcnVlKSArICcvdGFza2xpc3QudHh0JworICAgICAgICBjcmVhdGVfZmlsdGVyZWRfdGFza2xpc3QoZCwgYmFzZW91dHBhdGgsIHRhc2tsaXN0Zm4sIGNvbmZfaW5pdHBhdGgpCisgICAgZWxzZToKKyAgICAgICAgdGFza2xpc3RmbiA9IE5vbmUKKwogICAgICMgQWRkIHBhY2thZ2VkYXRhIGlmIGVuYWJsZWQKICAgICBpZiBkLmdldFZhcignU0RLX0lOQ0xVREVfUEtHREFUQScsIFRydWUpID09ICcxJzoKICAgICAgICAgbG9ja2Vkc2lnc19iYXNlID0gZC5nZXRWYXIoJ1dPUktESVInLCBUcnVlKSArICcvbG9ja2VkLXNpZ3MtYmFzZS5pbmMnCkBAIC0zMDAsNyArMzkzLDIxIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NrZWRzaWdzX3BydW5lZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2tlZHNpZ3NfY29weSkKIAotICAgIGlmIGQuZ2V0VmFyKCdTREtfRVhUX1RZUEUnLCBUcnVlKSA9PSAnbWluaW1hbCc6CisgICAgaWYgc2RrX2luY2x1ZGVfdG9vbGNoYWluOgorICAgICAgICBsb2NrZWRzaWdzX2Jhc2UgPSBkLmdldFZhcignV09SS0RJUicsIFRydWUpICsgJy9sb2NrZWQtc2lncy1iYXNlMi5pbmMnCisgICAgICAgIGxvY2tlZHNpZ3NfdG9vbGNoYWluID0gZC5nZXRWYXIoJ1NUQUdJTkdfRElSX0hPU1QnLCBUcnVlKSArICcvbG9ja2VkLXNpZ3MvbG9ja2VkLXNpZ3MtZXh0c2RrLXRvb2xjaGFpbi5pbmMnCisgICAgICAgIHNodXRpbC5tb3ZlKGxvY2tlZHNpZ3NfcHJ1bmVkLCBsb2NrZWRzaWdzX2Jhc2UpCisgICAgICAgIG9lLmNvcHlfYnVpbGRzeXN0ZW0ubWVyZ2VfbG9ja2Vkc2lncyhbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2tlZHNpZ3NfYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2tlZHNpZ3NfdG9vbGNoYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9ja2Vkc2lnc19wcnVuZWQpCisgICAgICAgIG9lLmNvcHlfYnVpbGRzeXN0ZW0uY3JlYXRlX2xvY2tlZF9zc3RhdGVfY2FjaGUobG9ja2Vkc2lnc190b29sY2hhaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5nZXRWYXIoJ1NTVEFURV9ESVInLCBUcnVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc3RhdGVfb3V0LCBkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpeGVkbHNic3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcmZpbGU9dGFza2xpc3RmbikKKworICAgIGlmIHNka19leHRfdHlwZSA9PSAnbWluaW1hbCc6CiAgICAgICAgIGlmIGRlcml2YXRpdmU6CiAgICAgICAgICAgICAjIEFzc3VtZSB0aGUgdXNlciBpcyBub3QgZ29pbmcgdG8gc2V0IHVwIGFuIGFkZGl0aW9uYWwgc3N0YXRlCiAgICAgICAgICAgICAjIG1pcnJvciwgdGh1cyB3ZSBuZWVkIHRvIGNvcHkgdGhlIGFkZGl0aW9uYWwgYXJ0aWZhY3RzIChmcm9tCkBAIC0zMTYsMTIgKzQyMywxNCBAQAogICAgICAgICAgICAgICAgIG9lLmNvcHlfYnVpbGRzeXN0ZW0uY3JlYXRlX2xvY2tlZF9zc3RhdGVfY2FjaGUobG9ja2Vkc2lnc19leHRyYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuZ2V0VmFyKCdTU1RBVEVfRElSJywgVHJ1ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc3RhdGVfb3V0LCBkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4ZWRsc2JzdHJpbmcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXhlZGxzYnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcmZpbGU9dGFza2xpc3RmbikKICAgICBlbHNlOgogICAgICAgICBvZS5jb3B5X2J1aWxkc3lzdGVtLmNyZWF0ZV9sb2NrZWRfc3N0YXRlX2NhY2hlKGxvY2tlZHNpZ3NfcHJ1bmVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuZ2V0VmFyKCdTU1RBVEVfRElSJywgVHJ1ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3N0YXRlX291dCwgZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXhlZGxzYnN0cmluZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXhlZGxzYnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJmaWxlPXRhc2tsaXN0Zm4pCiAKICAgICAjIFdlIGRvbid0IG5lZWQgc3N0YXRlIGRvX3BhY2thZ2UgZmlsZXMKICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2Fsayhzc3RhdGVfb3V0KToKQEAgLTM0NiwzOCArNDU1LDk4IEBACiAgICAgICAgICAgICAgICAgZi53cml0ZSgnJXNcdCVzXG4nICUgKGNoa3N1bSwgb3MucGF0aC5yZWxwYXRoKGZuLCBiYXNlb3V0cGF0aCkpKQogfQogCi1kZWYgZXh0c2RrX2dldF9idWlsZHRvb2xzX2ZpbGVuYW1lKGQpOgotICAgIHJldHVybiAnKi1idWlsZHRvb2xzLW5hdGl2ZXNkay1zdGFuZGFsb25lLSouc2gnCitkZWYgZ2V0X2N1cnJlbnRfYnVpbGR0b29scyhkKToKKyAgICAiIiJHZXQgdGhlIGZpbGUgbmFtZSBvZiB0aGUgY3VycmVudCBidWlsZHRvb2xzIGluc3RhbGxlciIiIgorICAgIGltcG9ydCBnbG9iCisgICAgYnRmaWxlcyA9IGdsb2IuZ2xvYihvcy5wYXRoLmpvaW4oZC5nZXRWYXIoJ1NES19ERVBMT1knLCBUcnVlKSwgJyotYnVpbGR0b29scy1uYXRpdmVzZGstc3RhbmRhbG9uZS0qLnNoJykpCisgICAgYnRmaWxlcy5zb3J0KGtleT1vcy5wYXRoLmdldGN0aW1lKQorICAgIHJldHVybiBvcy5wYXRoLmJhc2VuYW1lKGJ0ZmlsZXNbLTFdKQorCitkZWYgZ2V0X3Nka19yZXF1aXJlZF91dGlsaXRpZXMoYnVpbGR0b29sc19mbiwgZCk6CisgICAgIiIiRmluZCByZXF1aXJlZCB1dGlsaXRpZXMgdGhhdCBhcmVuJ3QgcHJvdmlkZWQgYnkgdGhlIGJ1aWxkdG9vbHMiIiIKKyAgICBzYW5pdHlfcmVxdWlyZWRfdXRpbGl0aWVzID0gKGQuZ2V0VmFyKCdTQU5JVFlfUkVRVUlSRURfVVRJTElUSUVTJywgVHJ1ZSkgb3IgJycpLnNwbGl0KCkKKyAgICBzYW5pdHlfcmVxdWlyZWRfdXRpbGl0aWVzLmFwcGVuZChkLmV4cGFuZCgnJHtCVUlMRF9QUkVGSVh9Z2NjJykpCisgICAgc2FuaXR5X3JlcXVpcmVkX3V0aWxpdGllcy5hcHBlbmQoZC5leHBhbmQoJyR7QlVJTERfUFJFRklYfWcrKycpKQorICAgIGJ1aWxkdG9vbHNfaW5zdGFsbGVyID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCdTREtfREVQTE9ZJywgVHJ1ZSksIGJ1aWxkdG9vbHNfZm4pCisgICAgZmlsZWxpc3QsIF8gPSBiYi5wcm9jZXNzLnJ1bignJXMgLWwnICUgYnVpbGR0b29sc19pbnN0YWxsZXIpCisgICAgbG9jYWxkYXRhID0gYmIuZGF0YS5jcmVhdGVDb3B5KGQpCisgICAgbG9jYWxkYXRhLnNldFZhcignU0RLUEFUSCcsICcuJykKKyAgICBzZGtwYXRobmF0aXZlID0gbG9jYWxkYXRhLmdldFZhcignU0RLUEFUSE5BVElWRScsIFRydWUpCisgICAgc2RrYmluZGlycyA9IFtsb2NhbGRhdGEuZ2V0VmFyKCdiaW5kaXJfbmF0aXZlc2RrJywgVHJ1ZSksCisgICAgICAgICAgICAgICAgICBsb2NhbGRhdGEuZ2V0VmFyKCdzYmluZGlyX25hdGl2ZXNkaycsIFRydWUpLAorICAgICAgICAgICAgICAgICAgbG9jYWxkYXRhLmdldFZhcignYmFzZV9iaW5kaXJfbmF0aXZlc2RrJywgVHJ1ZSksCisgICAgICAgICAgICAgICAgICBsb2NhbGRhdGEuZ2V0VmFyKCdiYXNlX3NiaW5kaXJfbmF0aXZlc2RrJywgVHJ1ZSldCisgICAgZm9yIGxpbmUgaW4gZmlsZWxpc3Quc3BsaXRsaW5lcygpOgorICAgICAgICBzcGxpdGxpbmUgPSBsaW5lLnNwbGl0KCkKKyAgICAgICAgaWYgbGVuKHNwbGl0bGluZSkgPiA1OgorICAgICAgICAgICAgZm4gPSBzcGxpdGxpbmVbNV0KKyAgICAgICAgICAgIGlmIG5vdCBmbi5zdGFydHN3aXRoKCcuLycpOgorICAgICAgICAgICAgICAgIGZuID0gJy4vJXMnICUgZm4KKyAgICAgICAgICAgIGlmIGZuLnN0YXJ0c3dpdGgoc2RrcGF0aG5hdGl2ZSk6CisgICAgICAgICAgICAgICAgcmVscHRoID0gJy8nICsgb3MucGF0aC5yZWxwYXRoKGZuLCBzZGtwYXRobmF0aXZlKQorICAgICAgICAgICAgICAgIGZvciBiaW5kaXIgaW4gc2RrYmluZGlyczoKKyAgICAgICAgICAgICAgICAgICAgaWYgcmVscHRoLnN0YXJ0c3dpdGgoYmluZGlyKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbHB0aCA9IG9zLnBhdGgucmVscGF0aChyZWxwdGgsIGJpbmRpcikKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJlbHB0aCBpbiBzYW5pdHlfcmVxdWlyZWRfdXRpbGl0aWVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbml0eV9yZXF1aXJlZF91dGlsaXRpZXMucmVtb3ZlKHJlbHB0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgcmV0dXJuICcgJy5qb2luKHNhbml0eV9yZXF1aXJlZF91dGlsaXRpZXMpCiAKIGluc3RhbGxfdG9vbHMoKSB7CiAJaW5zdGFsbCAtZCAke1NES19PVVRQVVR9LyR7U0RLUEFUSE5BVElWRX0ke2JpbmRpcl9uYXRpdmVzZGt9Ci0JbG5yICR7U0RLX09VVFBVVH0vJHtTREtQQVRIfS8ke3NjcmlwdHJlbHBhdGh9L2RldnRvb2wgJHtTREtfT1VUUFVUfS8ke1NES1BBVEhOQVRJVkV9JHtiaW5kaXJfbmF0aXZlc2RrfS9kZXZ0b29sCi0JbG5yICR7U0RLX09VVFBVVH0vJHtTREtQQVRIfS8ke3NjcmlwdHJlbHBhdGh9L3JlY2lwZXRvb2wgJHtTREtfT1VUUFVUfS8ke1NES1BBVEhOQVRJVkV9JHtiaW5kaXJfbmF0aXZlc2RrfS9yZWNpcGV0b29sCisJc2NyaXB0cz0iZGV2dG9vbCByZWNpcGV0b29sIG9lLWZpbmQtbmF0aXZlLXN5c3Jvb3QgcnVucWVtdSoiCisJZm9yIHNjcmlwdCBpbiAkc2NyaXB0czsgZG8KKwkJZm9yIHNjcmlwdGZuIGluIGBmaW5kICR7U0RLX09VVFBVVH0vJHtTREtQQVRIfS8ke3NjcmlwdHJlbHBhdGh9IC1tYXhkZXB0aCAxIC1leGVjdXRhYmxlIC1uYW1lICIkc2NyaXB0ImA7IGRvCisJCQlsbnIgJHtzY3JpcHRmbn0gJHtTREtfT1VUUFVUfS8ke1NES1BBVEhOQVRJVkV9JHtiaW5kaXJfbmF0aXZlc2RrfS9gYmFzZW5hbWUgJHNjcmlwdGZuYAorCQlkb25lCisJZG9uZQorCSMgV2UgY2FuJ3QgdXNlIHRoZSBzYW1lIG1ldGhvZCBhcyBhYm92ZSBiZWNhdXNlIGZpbGVzIGluIHRoZSBzeXNyb290IHdvbid0IGV4aXN0IGF0IHRoaXMgcG9pbnQKKwkjICh0aGV5IGdldCBwb3B1bGF0ZWQgZnJvbSBzc3RhdGUgb24gaW5zdGFsbGF0aW9uKQorCWlmIFsgIiR7U0RLX0lOQ0xVREVfVE9PTENIQUlOfSIgPT0gIjEiIF0gOyB0aGVuCisJCWJpbnJlbHBhdGg9JHtAb3MucGF0aC5yZWxwYXRoKGQuZ2V0VmFyKCdTVEFHSU5HX0JJTkRJUl9OQVRJVkUnLFRydWUpLCBkLmdldFZhcignVE9QRElSJywgVHJ1ZSkpfQorCQlsbnIgJHtTREtfT1VUUFVUfS8ke1NES1BBVEh9LyRiaW5yZWxwYXRoL3VuZnNkICR7U0RLX09VVFBVVH0vJHtTREtQQVRITkFUSVZFfSR7YmluZGlyX25hdGl2ZXNka30vdW5mc2QKKwlmaQogCXRvdWNoICR7U0RLX09VVFBVVH0vJHtTREtQQVRIfS8uZGV2dG9vbGJhc2UKIAotCWxvY2FsY29uZj0ke1NES19PVVRQVVR9LyR7U0RLUEFUSH0vY29uZi9sb2NhbC5jb25mCi0KIAkjIGZpbmQgbGF0ZXN0IGJ1aWxkdG9vbHMtdGFyYmFsbCBhbmQgaW5zdGFsbCBpdAotCWJ1aWxkdG9vbHNfcGF0aD1gbHMgLXQxICR7U0RLX0RFUExPWX0vJHtAZXh0c2RrX2dldF9idWlsZHRvb2xzX2ZpbGVuYW1lKGQpfSB8IGhlYWQgLW4xYAotCWluc3RhbGwgJGJ1aWxkdG9vbHNfcGF0aCAke1NES19PVVRQVVR9LyR7U0RLUEFUSH0KLQotCSMgRm9yIG5vdyB0aGlzIGlzIHdoZXJlIHVuaW5hdGl2ZS5iYmNsYXNzIGV4cGVjdHMgdGhlIHRhcmJhbGwKLQljaGtzdW09YHNoYTI1NnN1bSAke1NES19ERVBMT1l9LyR7QlVJTERfQVJDSH0tbmF0aXZlc2RrLWxpYmMudGFyLmJ6MiB8IGN1dCAtZiAxIC1kICcgJ2AKLQlpbnN0YWxsIC1kICR7U0RLX09VVFBVVH0vJHtTREtQQVRIfS9kb3dubG9hZHMvdW5pbmF0aXZlLyRjaGtzdW0vCi0JaW5zdGFsbCAke1NES19ERVBMT1l9LyR7QlVJTERfQVJDSH0tbmF0aXZlc2RrLWxpYmMudGFyLmJ6MiAke1NES19PVVRQVVR9LyR7U0RLUEFUSH0vZG93bmxvYWRzL3VuaW5hdGl2ZS8kY2hrc3VtLwotCWVjaG8gIlVOSU5BVElWRV9DSEVDS1NVTVske0JVSUxEX0FSQ0h9XSA9ICckY2hrc3VtJyIgPj4gJHtTREtfT1VUUFVUfS8ke1NES1BBVEh9L2NvbmYvbG9jYWwuY29uZgorCWluc3RhbGwgJHtTREtfREVQTE9ZfS8ke1NES19CVUlMRFRPT0xTX0lOU1RBTExFUn0gJHtTREtfT1VUUFVUfS8ke1NES1BBVEh9CiAKIAlpbnN0YWxsIC1tIDA2NDQgJHtDT1JFQkFTRX0vbWV0YS9maWxlcy9leHQtc2RrLXByZXBhcmUucHkgJHtTREtfT1VUUFVUfS8ke1NES1BBVEh9CiB9CiBkb19wb3B1bGF0ZV9zZGtfZXh0W2ZpbGUtY2hlY2tzdW1zXSArPSAiJHtDT1JFQkFTRX0vbWV0YS9maWxlcy9leHQtc2RrLXByZXBhcmUucHk6VHJ1ZSIKIAotIyBTaW5jZSBiaXRiYWtlIHdvbid0IHJ1biBhcyByb290IGl0IGRvZXNuJ3QgbWFrZSBzZW5zZSB0byB0cnkgYW5kIGluc3RhbGwKLSMgdGhlIGV4dGVuc2libGUgc2RrIGFzIHJvb3QuCiBzZGtfZXh0X3ByZWluc3QoKSB7CisJIyBTaW5jZSBiaXRiYWtlIHdvbid0IHJ1biBhcyByb290IGl0IGRvZXNuJ3QgbWFrZSBzZW5zZSB0byB0cnkgYW5kIGluc3RhbGwKKwkjIHRoZSBleHRlbnNpYmxlIHNkayBhcyByb290LgogCWlmIFsgImBpZCAtdWAiID0gIjAiIF07IHRoZW4KIAkJZWNobyAiRVJST1I6IFRoZSBleHRlbnNpYmxlIHNkayBjYW5ub3QgYmUgaW5zdGFsbGVkIGFzIHJvb3QuIgogCQlleGl0IDEKIAlmaQorCWlmICEgY29tbWFuZCAtdiBsb2NhbGUgPiAvZGV2L251bGw7IHRoZW4KKwkJZWNobyAiRVJST1I6IFRoZSBpbnN0YWxsZXIgcmVxdWlyZXMgdGhlIGxvY2FsZSBjb21tYW5kLCBwbGVhc2UgaW5zdGFsbCBpdCBmaXJzdCIKKwkJZXhpdCAxCisJZmkKKyAgICAgICAgIyBDaGVjayBzZXR0aW5nIG9mIExDX0FMTCBzZXQgYWJvdmUKKwljYW5vbmljYWxpc2VkX2xvY2FsZT1gZWNobyAkTENfQUxMIHwgc2VkICdzL1VURi04L3V0ZjgvJ2AKKwlpZiAhIGxvY2FsZSAtYSB8IGdyZXAgLXEgJGNhbm9uaWNhbGlzZWRfbG9jYWxlIDsgdGhlbgorCQllY2hvICJFUlJPUjogdGhlIGluc3RhbGxlciByZXF1aXJlcyB0aGUgJExDX0FMTCBsb2NhbGUgdG8gYmUgaW5zdGFsbGVkIChidXQgbm90IHNlbGVjdGVkKSwgcGxlYXNlIGluc3RhbGwgaXQgZmlyc3QiCisJCWV4aXQgMQorCWZpCisJIyBUaGUgcmVsb2NhdGlvbiBzY3JpcHQgdXNlZCBieSBidWlsZHRvb2xzIGluc3RhbGxlciByZXF1aXJlcyBweXRob24KKwlpZiAhIGNvbW1hbmQgLXYgcHl0aG9uID4gL2Rldi9udWxsOyB0aGVuCisJCWVjaG8gIkVSUk9SOiBUaGUgaW5zdGFsbGVyIHJlcXVpcmVzIHB5dGhvbiwgcGxlYXNlIGluc3RhbGwgaXQgZmlyc3QiCisJCWV4aXQgMQorCWZpCisJbWlzc2luZ191dGlscz0iIgorCWZvciB1dGlsIGluICR7U0RLX1JFUVVJUkVEX1VUSUxJVElFU307IGRvCisJCWlmICEgY29tbWFuZCAtdiAkdXRpbCA+IC9kZXYvbnVsbDsgdGhlbgorCQkJbWlzc2luZ191dGlscz0iJG1pc3NpbmdfdXRpbHMgJHV0aWwiCisJCWZpCisJZG9uZQorCWlmIFsgLW4gIiRtaXNzaW5nX3V0aWxzIiBdIDsgdGhlbgorCQllY2hvICJFUlJPUjogdGhlIFNESyByZXF1aXJlcyB0aGUgZm9sbG93aW5nIG1pc3NpbmcgdXRpbGl0aWVzLCBwbGVhc2UgaW5zdGFsbCB0aGVtOiAkbWlzc2luZ191dGlscyIKKwkJZXhpdCAxCisJZmkKIAlTREtfRVhURU5TSUJMRT0iMSIKIAlpZiBbICIkcHVibGlzaCIgPSAiMSIgXSA7IHRoZW4KIAkJRVhUUkFfVEFSX09QVElPTlM9IiRFWFRSQV9UQVJfT1BUSU9OUyAtLWV4Y2x1ZGU9ZXh0LXNkay1wcmVwYXJlLnB5IgpAQCAtMzkyLDE0ICs1NjEsMTYgQEAKIHNka19leHRfcG9zdGluc3QoKSB7CiAJcHJpbnRmICJcbkV4dHJhY3RpbmcgYnVpbGR0b29scy4uLlxuIgogCWNkICR0YXJnZXRfc2RrX2RpcgotCXByaW50ZiAiYnVpbGR0b29sc1xueSIgfCAuLypidWlsZHRvb2xzLW5hdGl2ZXNkay1zdGFuZGFsb25lKiA+IC9kZXYvbnVsbCB8fCAoIHByaW50ZiAnRVJST1I6IGJ1aWxkdG9vbHMgaW5zdGFsbGF0aW9uIGZhaWxlZFxuJyA7IGV4aXQgMSApCisJZW52X3NldHVwX3NjcmlwdD0iJHRhcmdldF9zZGtfZGlyL2Vudmlyb25tZW50LXNldHVwLSR7UkVBTF9NVUxUSU1BQ0hfVEFSR0VUX1NZU30iCisJcHJpbnRmICJidWlsZHRvb2xzXG55IiB8IC4vJHtTREtfQlVJTERUT09MU19JTlNUQUxMRVJ9ID4gYnVpbGR0b29scy5sb2cgfHwgeyBwcmludGYgJ0VSUk9SOiBidWlsZHRvb2xzIGluc3RhbGxhdGlvbiBmYWlsZWQ6XG4nIDsgY2F0IGJ1aWxkdG9vbHMubG9nIDsgZWNobyAicHJpbnRmICdFUlJPUjogdGhpcyBTREsgd2FzIG5vdCBmdWxseSBpbnN0YWxsZWQgYW5kIG5lZWRzIHJlaW5zdGFsbGluZ1xuJyIgPj4gJGVudl9zZXR1cF9zY3JpcHQgOyBleGl0IDEgOyB9CiAKIAkjIERlbGV0ZSB0aGUgYnVpbGR0b29scyB0YXIgZmlsZSBzaW5jZSBpdCB3b24ndCBiZSB1c2VkIGFnYWluCi0Jcm0gLi8qYnVpbGR0b29scy1uYXRpdmVzZGstc3RhbmRhbG9uZSouc2ggLWYKKwlybSAtZiAuLyR7U0RLX0JVSUxEVE9PTFNfSU5TVEFMTEVSfQorCSMgV2UgZG9uJ3QgbmVlZCB0aGUgbG9nIGVpdGhlciBzaW5jZSBpdCBzdWNjZWVkZWQKKwlybSAtZiBidWlsZHRvb2xzLmxvZwogCiAJIyBNYWtlIHN1cmUgd2hlbiB0aGUgdXNlciBzZXRzIHVwIHRoZSBlbnZpcm9ubWVudCwgdGhleSBhbHNvIGdldAogCSMgdGhlIGJ1aWxkdG9vbHMtdGFyYmFsbCB0b29scyBpbiB0aGVpciBwYXRoLgotCWVudl9zZXR1cF9zY3JpcHQ9IiR0YXJnZXRfc2RrX2Rpci9lbnZpcm9ubWVudC1zZXR1cC0ke1JFQUxfTVVMVElNQUNIX1RBUkdFVF9TWVN9IgogCWVjaG8gIi4gJHRhcmdldF9zZGtfZGlyL2J1aWxkdG9vbHMvZW52aXJvbm1lbnQtc2V0dXAqIiA+PiAkZW52X3NldHVwX3NjcmlwdAogCiAJIyBBbGxvdyBiaXRiYWtlIGVudmlyb25tZW50IHNldHVwIHRvIGJlIHJhbiBhcyBwYXJ0IG9mIHRoaXMgc2RrLgpAQCAtNDIwLDcgKzU5MSw3IEBACiAJCSMgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSB3aGVuIGZpcnN0IHJhbiwgbm9yIHdpbGwgaXQgc2V0ICQxIHdoZW4KIAkJIyBzb3VyY2luZyBhIHNjcmlwdC4gVGhhdCBpcyB3aHkgdGhpcyBoYXMgdG8gbG9vayBzbyB1Z2x5LgogCQlMT0dGSUxFPSIkdGFyZ2V0X3Nka19kaXIvcHJlcGFyaW5nX2J1aWxkX3N5c3RlbS5sb2ciCi0JCXNoIC1jICIuIGJ1aWxkdG9vbHMvZW52aXJvbm1lbnQtc2V0dXAqID4gJExPR0ZJTEUgJiYgY2QgJHRhcmdldF9zZGtfZGlyL2BkaXJuYW1lICR7b2VfaW5pdF9idWlsZF9lbnZfcGF0aH1gICYmIHNldCAkdGFyZ2V0X3Nka19kaXIgJiYgLiAkdGFyZ2V0X3Nka19kaXIvJHtvZV9pbml0X2J1aWxkX2Vudl9wYXRofSAkdGFyZ2V0X3Nka19kaXIgPj4gJExPR0ZJTEUgJiYgcHl0aG9uICR0YXJnZXRfc2RrX2Rpci9leHQtc2RrLXByZXBhcmUucHkgJyR7U0RLX0lOU1RBTExfVEFSR0VUU30nID4+ICRMT0dGSUxFIDI+JjEiIHx8IHsgZWNobyAiRVJST1I6IFNESyBwcmVwYXJhdGlvbiBmYWlsZWQ6IHNlZSAkTE9HRklMRSI7IGVjaG8gInByaW50ZiAnRVJST1I6IHRoaXMgU0RLIHdhcyBub3QgZnVsbHkgaW5zdGFsbGVkIGFuZCBuZWVkcyByZWluc3RhbGxpbmdcbiciID4+ICRlbnZfc2V0dXBfc2NyaXB0IDsgZXhpdCAxIDsgfQorCQlzaCAtYyAiLiBidWlsZHRvb2xzL2Vudmlyb25tZW50LXNldHVwKiA+ICRMT0dGSUxFICYmIGNkICR0YXJnZXRfc2RrX2Rpci9gZGlybmFtZSAke29lX2luaXRfYnVpbGRfZW52X3BhdGh9YCAmJiBzZXQgJHRhcmdldF9zZGtfZGlyICYmIC4gJHRhcmdldF9zZGtfZGlyLyR7b2VfaW5pdF9idWlsZF9lbnZfcGF0aH0gJHRhcmdldF9zZGtfZGlyID4+ICRMT0dGSUxFICYmIHB5dGhvbiAkdGFyZ2V0X3Nka19kaXIvZXh0LXNkay1wcmVwYXJlLnB5ICRMT0dGSUxFICcke1NES19JTlNUQUxMX1RBUkdFVFN9JyIgfHwgeyBlY2hvICJwcmludGYgJ0VSUk9SOiB0aGlzIFNESyB3YXMgbm90IGZ1bGx5IGluc3RhbGxlZCBhbmQgbmVlZHMgcmVpbnN0YWxsaW5nXG4nIiA+PiAkZW52X3NldHVwX3NjcmlwdCA7IGV4aXQgMSA7IH0KIAkJcm0gJHRhcmdldF9zZGtfZGlyL2V4dC1zZGstcHJlcGFyZS5weQogCWZpCiAJZWNobyBkb25lCkBAIC00MzgsMTIgKzYwOSwyMiBAQAogICAgICAgICBiYi5mYXRhbCgnVGhlIGV4dGVuc2libGUgU0RLIGNhbiBjdXJyZW50bHkgb25seSBiZSBidWlsdCBmb3IgdGhlIHNhbWUgYXJjaGl0ZWN0dXJlIGFzIHRoZSBtYWNoaW5lIGJlaW5nIGJ1aWx0IG9uIC0gU0RLX0FSQ0ggaXMgc2V0IHRvICVzIChsaWtlbHkgdmlhIHNldHRpbmcgU0RLTUFDSElORSkgd2hpY2ggaXMgZGlmZmVyZW50IGZyb20gdGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgYnVpbGQgbWFjaGluZSAoJXMpLiBVbmFibGUgdG8gY29udGludWUuJyAlIChkLmdldFZhcignU0RLX0FSQ0gnLCBUcnVlKSwgZC5nZXRWYXIoJ0JVSUxEX0FSQ0gnLCBUcnVlKSkpCiAKICAgICBkLnNldFZhcignU0RLX0lOU1RBTExfVEFSR0VUUycsIGdldF9zZGtfaW5zdGFsbF90YXJnZXRzKGQpKQorICAgIGJ1aWxkdG9vbHNfZm4gPSBnZXRfY3VycmVudF9idWlsZHRvb2xzKGQpCisgICAgZC5zZXRWYXIoJ1NES19SRVFVSVJFRF9VVElMSVRJRVMnLCBnZXRfc2RrX3JlcXVpcmVkX3V0aWxpdGllcyhidWlsZHRvb2xzX2ZuLCBkKSkKKyAgICBkLnNldFZhcignU0RLX0JVSUxEVE9PTFNfSU5TVEFMTEVSJywgYnVpbGR0b29sc19mbikKKyAgICBkLnNldFZhcignU0RLREVQTE9ZRElSJywgJyR7U0RLRVhUREVQTE9ZRElSfScpCiAKLSAgICBiYi5idWlsZC5leGVjX2Z1bmMoImRvX3BvcHVsYXRlX3NkayIsIGQpCisgICAgcG9wdWxhdGVfc2RrX2NvbW1vbihkKQogfQogCiBkZWYgZ2V0X2V4dF9zZGtfZGVwZW5kcyhkKToKLSAgICByZXR1cm4gZC5nZXRWYXJGbGFnKCdkb19yb290ZnMnLCAnZGVwZW5kcycsIFRydWUpICsgJyAnICsgZC5nZXRWYXJGbGFnKCdkb19idWlsZCcsICdkZXBlbmRzJywgVHJ1ZSkKKyAgICAjIE5vdGU6IHRoZSBkZXBzIHZhcmZsYWcgaXMgYSBsaXN0IG5vdCBhIHN0cmluZywgc28gd2UgbmVlZCB0byBzcGVjaWZ5IGV4cGFuZD1GYWxzZQorICAgIGRlcHMgPSBkLmdldFZhckZsYWcoJ2RvX2ltYWdlX2NvbXBsZXRlJywgJ2RlcHMnLCBGYWxzZSkKKyAgICBwbiA9IGQuZ2V0VmFyKCdQTicsIFRydWUpCisgICAgZGVwbGlzdCA9IFsnJXM6JXMnICUgKHBuLCBkZXApIGZvciBkZXAgaW4gZGVwc10KKyAgICBmb3IgdGFzayBpbiBbJ2RvX2ltYWdlX2NvbXBsZXRlJywgJ2RvX3Jvb3RmcycsICdkb19idWlsZCddOgorICAgICAgICBkZXBsaXN0LmV4dGVuZCgoZC5nZXRWYXJGbGFnKHRhc2ssICdkZXBlbmRzJywgVHJ1ZSkgb3IgJycpLnNwbGl0KCkpCisgICAgcmV0dXJuICcgJy5qb2luKGRlcGxpc3QpCiAKIHB5dGhvbiBkb19zZGtfZGVwZW5kcygpIHsKICAgICAjIFdlIGhhdmUgdG8gZG8gdGhpcyBzZXBhcmF0ZWx5IGluIGl0cyBvd24gdGFzayBzbyB3ZSBhdm9pZCByZWN1cnNpbmcgaW50bwpAQCAtNDcxLDcgKzY1Miw4IEBACiAKIGRvX3BvcHVsYXRlX3Nka19leHRbZGVwZW5kc10gPSAiJHtAZC5nZXRWYXJGbGFnKCdkb19wb3B1bGF0ZV9zZGsnLCAnZGVwZW5kcycsIEZhbHNlKX0gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZHRvb2xzLXRhcmJhbGw6ZG9fcG9wdWxhdGVfc2RrIHVuaW5hdGl2ZS10YXJiYWxsOmRvX3BvcHVsYXRlX3NkayBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7QCdtZXRhLXdvcmxkLXBrZ2RhdGE6ZG9fY29sbGVjdF9wYWNrYWdlZGF0YScgaWYgZC5nZXRWYXIoJ1NES19JTkNMVURFX1BLR0RBVEEnLCBUcnVlKSA9PSAnMScgZWxzZSAnJ30iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7QCdtZXRhLXdvcmxkLXBrZ2RhdGE6ZG9fY29sbGVjdF9wYWNrYWdlZGF0YScgaWYgZC5nZXRWYXIoJ1NES19JTkNMVURFX1BLR0RBVEEnLCBUcnVlKSA9PSAnMScgZWxzZSAnJ30gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0AnbWV0YS1leHRzZGstdG9vbGNoYWluOmRvX2xvY2tlZF9zaWdzJyBpZiBkLmdldFZhcignU0RLX0lOQ0xVREVfVE9PTENIQUlOJywgVHJ1ZSkgPT0gJzEnIGVsc2UgJyd9IgogCiBkb19wb3B1bGF0ZV9zZGtfZXh0W3JkZXBlbmRzXSArPSAiJHtAJyAnLmpvaW4oW3ggKyAnOmRvX2J1aWxkJyBmb3IgeCBpbiBkLmdldFZhcignU0RLX1RBUkdFVFMnLCBUcnVlKS5zcGxpdCgpXSl9IgogCkBAIC00ODQsNCArNjY2LDEzIEBACiAjIGFsd2F5cyBydW5zLgogZG9fcG9wdWxhdGVfc2RrX2V4dFtub3N0YW1wXSA9ICIxIgogCitTREtFWFRERVBMT1lESVIgPSAiJHtXT1JLRElSfS9kZXBsb3ktJHtQTn0tcG9wdWxhdGUtc2RrLWV4dCIKKworU1NUQVRFVEFTS1MgKz0gImRvX3BvcHVsYXRlX3Nka19leHQiCitTU1RBVEVfU0tJUF9DUkVBVElPTl90YXNrLXBvcHVsYXRlLXNkay1leHQgPSAnMScKK2RvX3BvcHVsYXRlX3Nka19leHRbY2xlYW5kaXJzXSA9ICIke1NES0RFUExPWURJUn0iCitkb19wb3B1bGF0ZV9zZGtfZXh0W3NzdGF0ZS1pbnB1dGRpcnNdID0gIiR7U0RLRVhUREVQTE9ZRElSfSIKK2RvX3BvcHVsYXRlX3Nka19leHRbc3N0YXRlLW91dHB1dGRpcnNdID0gIiR7U0RLX0RFUExPWX0iCitkb19wb3B1bGF0ZV9zZGtfZXh0W3N0YW1wLWV4dHJhLWluZm9dID0gIiR7TUFDSElORX0iCisKIGFkZHRhc2sgcG9wdWxhdGVfc2RrX2V4dCBhZnRlciBkb19zZGtfZGVwZW5kcwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9weXRob24tZGlyLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3B5dGhvbi1kaXIuYmJjbGFzcwppbmRleCBlYmZhNGIzLi5hMTFkYzM1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3B5dGhvbi1kaXIuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3B5dGhvbi1kaXIuYmJjbGFzcwpAQCAtMSw1ICsxLDUgQEAKLVBZVEhPTl9CQVNFVkVSU0lPTiA/PSAiMi43IgotUFlUSE9OX0FCSSA/PSAiIgorUFlUSE9OX0JBU0VWRVJTSU9OID0gIjIuNyIKK1BZVEhPTl9BQkkgPSAiIgogUFlUSE9OX0RJUiA9ICJweXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0iCi1QWVRIT05fUE4gPSAicHl0aG9uJHtAJycgaWYgJyR7UFlUSE9OX0JBU0VWRVJTSU9OfScuc3RhcnRzd2l0aCgnMicpIGVsc2UgJzMnfSIKK1BZVEhPTl9QTiA9ICJweXRob24iCiBQWVRIT05fU0lURVBBQ0tBR0VTX0RJUiA9ICIke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9weXRob24zLWRpci5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9weXRob24zLWRpci5iYmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2YmIwNDYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3B5dGhvbjMtZGlyLmJiY2xhc3MKQEAgLTAsMCArMSw1IEBACitQWVRIT05fQkFTRVZFUlNJT04gPSAiMy41IgorUFlUSE9OX0FCSSA9ICJtIgorUFlUSE9OX0RJUiA9ICJweXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0iCitQWVRIT05fUE4gPSAicHl0aG9uMyIKK1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSID0gIiR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3B5dGhvbjNuYXRpdmUuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcHl0aG9uM25hdGl2ZS5iYmNsYXNzCmluZGV4IDhlYzZiNzYuLmVmNDY4YjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcHl0aG9uM25hdGl2ZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcHl0aG9uM25hdGl2ZS5iYmNsYXNzCkBAIC0xLDcgKzEsMTMgQEAKLVBZVEhPTl9CQVNFVkVSU0lPTiA9ICIzLjUiCi0KLWluaGVyaXQgcHl0aG9uLWRpcgoraW5oZXJpdCBweXRob24zLWRpcgogCiBQWVRIT049IiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSIKIEVYVFJBTkFUSVZFUEFUSCArPSAiJHtQWVRIT05fUE59LW5hdGl2ZSIKLURFUEVORFMgKz0gIiAke1BZVEhPTl9QTn0tbmF0aXZlICIKK0RFUEVORFNfYXBwZW5kID0gIiAke1BZVEhPTl9QTn0tbmF0aXZlICIKKworIyBweXRob24tY29uZmlnIGFuZCBvdGhlciBzY3JpcHRzIGFyZSB1c2luZyBkaXN0dXRpbHMgbW9kdWxlcworIyB3aGljaCB3ZSBwYXRjaCB0byBhY2Nlc3MgdGhlc2UgdmFyaWFibGVzCitleHBvcnQgU1RBR0lOR19JTkNESVIKK2V4cG9ydCBTVEFHSU5HX0xJQkRJUgorCisjIGF1dG9jb25mIG1hY3JvcyB3aWxsIHVzZSB0aGVpciBpbnRlcm5hbCBkZWZhdWx0IHByZWZlcmVuY2Ugb3RoZXJ3aXNlCitleHBvcnQgUFlUSE9OCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3B5dGhvbm5hdGl2ZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9weXRob25uYXRpdmUuYmJjbGFzcwppbmRleCA5NzAyOWRjLi40ZTAzODFiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3B5dGhvbm5hdGl2ZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcHl0aG9ubmF0aXZlLmJiY2xhc3MKQEAgLTUsNCArNSwxMiBAQAogIyBQWVRIT05fRVhFQ1VUQUJMRSBpcyB1c2VkIGJ5IGNtYWtlCiBQWVRIT05fRVhFQ1VUQUJMRT0iJHtQWVRIT059IgogRVhUUkFOQVRJVkVQQVRIICs9ICIke1BZVEhPTl9QTn0tbmF0aXZlIgotREVQRU5EUyArPSAiICR7UFlUSE9OX1BOfS1uYXRpdmUgIgorREVQRU5EU19hcHBlbmQgPSAiICR7UFlUSE9OX1BOfS1uYXRpdmUgIgorCisjIHB5dGhvbi1jb25maWcgYW5kIG90aGVyIHNjcmlwdHMgYXJlIHVzaW5nIGRpc3R1dGlscyBtb2R1bGVzCisjIHdoaWNoIHdlIHBhdGNoIHRvIGFjY2VzcyB0aGVzZSB2YXJpYWJsZXMKK2V4cG9ydCBTVEFHSU5HX0lOQ0RJUgorZXhwb3J0IFNUQUdJTkdfTElCRElSCisKKyMgYXV0b2NvbmYgbWFjcm9zIHdpbGwgdXNlIHRoZWlyIGludGVybmFsIGRlZmF1bHQgcHJlZmVyZW5jZSBvdGhlcndpc2UKK2V4cG9ydCBQWVRIT04KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcWVtdS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9xZW11LmJiY2xhc3MKaW5kZXggNzU3MzlkYi4uZjJkNGQxYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9xZW11LmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9xZW11LmJiY2xhc3MKQEAgLTQsNiArNCwxMSBAQAogIwogCiBkZWYgcWVtdV90YXJnZXRfYmluYXJ5KGRhdGEpOgorICAgIHBhY2thZ2VfYXJjaCA9IGRhdGEuZ2V0VmFyKCJQQUNLQUdFX0FSQ0giLCBUcnVlKQorICAgIHFlbXVfdGFyZ2V0X2JpbmFyeSA9IChkYXRhLmdldFZhcigiUUVNVV9UQVJHRVRfQklOQVJZXyVzIiAlIHBhY2thZ2VfYXJjaCwgVHJ1ZSkgb3IgIiIpCisgICAgaWYgcWVtdV90YXJnZXRfYmluYXJ5OgorICAgICAgICByZXR1cm4gcWVtdV90YXJnZXRfYmluYXJ5CisKICAgICB0YXJnZXRfYXJjaCA9IGRhdGEuZ2V0VmFyKCJUQVJHRVRfQVJDSCIsIFRydWUpCiAgICAgaWYgdGFyZ2V0X2FyY2ggaW4gKCJpNDg2IiwgImk1ODYiLCAiaTY4NiIpOgogICAgICAgICB0YXJnZXRfYXJjaCA9ICJpMzg2IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9xZW11Ym9vdC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9xZW11Ym9vdC5iYmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1Y2M5M2QKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3FlbXVib290LmJiY2xhc3MKQEAgLTAsMCArMSw4MiBAQAorIyBIZWxwIHJ1bnFlbXUgYm9vdCB0YXJnZXQgYm9hcmQsICJRQiIgbWVhbnMgUWVtdSBCb290LCB0aGUgZm9sbG93aW5nCisjIHZhcnMgY2FuIGJlIHNldCBpbiBjb25mIGZpbGVzLCBzdWNoIGFzIDxic3AuY29uZj4gdG8gbWFrZSBpdCBjYW4gYmUKKyMgYm9vdCBieSBydW5xZW11OgorIworIyBRQl9TWVNURU1fTkFNRTogcWVtdSBuYW1lLCBlLmcuLCAicWVtdS1zeXN0ZW0taTM4NiIKKyMgUUJfT1BUX0FQUEVORDogb3B0aW9ucyB0byBhcHBlbmQgdG8gcWVtdSwgZS5nLiwgIi1zaG93LWN1cnNvciIKKyMgUUJfREVGQVVMVF9LRVJORUw6IGRlZmF1bHQga2VybmVsIHRvIGJvb3QsIGUuZy4sICJiekltYWdlIgorIyBRQl9ERUZBVUxUX0ZTVFlQRTogZGVmYXVsdCBGU1RZUEUgdG8gYm9vdCwgZS5nLiwgImV4dDQiCisjIFFCX01FTTogbWVtb3J5LCBlLmcuLCAiLW0gNTEyIgorIyBRQl9NQUNISU5FOiBxZW11IG1hY2hpbmUsIGUuZy4sICItbWFjaGluZSB2aXJ0IgorIyBRQl9DUFU6IHFlbXUgY3B1LCBlLmcuLCAiLWNwdSBxZW11MzIiCisjIFFCX0NQVV9LVk06IHRoZSBzaW1pbGFyIHRvIFFCX0NQVSwgYnV0IHVzZWQgd2hlbiBrdm0sIGUuZy4sICctY3B1IGt2bTY0JywKKyMgICAgICAgICAgICAgc2V0IGl0IHdoZW4gc3VwcG9ydCBrdm0uCisjIFFCX0tFUk5FTF9DTURMSU5FX0FQUEVORDogb3B0aW9ucyB0byBhcHBlbmQgdG8ga2VybmVsJ3MgLWFwcGVuZAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiwgZS5nLiwgImNvbnNvbGU9dHR5UzAgY29uc29sZT10dHkiCisjIFFCX0RUQjogcWVtdSBkdGIgbmFtZQorIyBRQl9BVURJT19EUlY6IHFlbXUgYXVkaW8gZHJpdmVyLCBlLmcuLCAiYWxzYSIsIHNldCBpdCB3aGVuIHN1cHBvcnQgYXVkaW8KKyMgUUJfQVVESU9fT1BUOiBxZW11IGF1ZGlvIG9wdGlvbiwgZS5nLiwgIi1zb3VuZGh3IGFjOTcsZXMxMzcwIiwgdXNlZAorIyAgICAgICAgICAgICAgIHdoZW4gUUJfQVVESU9fRFJWIGlzIHNldC4KKyMgUUJfS0VSTkVMX1JPT1Q6IGtlcm5lbCdzIHJvb3QsIGUuZy4sIC9kZXYvdmRhCisjIFFCX1RBUF9PUFQ6IG5ldG93cmsgb3B0aW9uIGZvciAndGFwJyBtb2RlLCBlLmcuLAorIyAgICAgICAgICAgICAiLW5ldGRldiB0YXAsaWQ9bmV0MCxpZm5hbWU9QFRBUEAsc2NyaXB0PW5vLGRvd25zY3JpcHQ9bm8gLWRldmljZSB2aXJ0aW8tbmV0LWRldmljZSxuZXRkZXY9bmV0MCIKKyMgICAgICAgICAgICAgIE5vdGUsIHJ1bnFlbXUgd2lsbCByZXBsYWNlICJAVEFQQCIgd2l0aCB0aGUgb25lIHdoaWNoIGlzIHVzZWQsIHN1Y2ggYXMgdGFwMCwgdGFwMSAuLi4KKyMgUUJfU0xJUlBfT1BUOiBuZXR3b3JrIG9wdGlvbiBmb3IgU0xJUlAgbW9kZSwgZS5nLiwKKyMgICAgICAgICAgICAgIi1uZXRkZXYgdXNlcixpZD1uZXQwIC1kZXZpY2UgdmlydGlvLW5ldC1kZXZpY2UsbmV0ZGV2PW5ldDAiCisjIFFCX1JPT1RGU19PUFQ6IHVzZWQgYXMgcm9vdGZzLCBlLmcuLAorIyAgICAgICAgICAgICAgICItZHJpdmUgaWQ9ZGlzazAsZmlsZT1AUk9PVEZTQCxpZj1ub25lLGZvcm1hdD1yYXcgLWRldmljZSB2aXJ0aW8tYmxrLWRldmljZSxkcml2ZT1kaXNrMCIKKyMgICAgICAgICAgICAgIE5vdGUsIHJ1bnFlbXUgd2lsbCByZXBsYWNlICJAUk9PVEZTQCIgd2l0aCB0aGUgb25lIHdoaWNoIGlzIHVzZWQsIHN1Y2ggYXMgY29yZS1pbWFnZS1taW5pbWFsLXFlbXVhcm02NC5leHQ0LgorIyBRQl9TRVJJQUxfT1BUOiBzZXJpYWwgcG9ydCwgZS5nLiwgIi1zZXJpYWwgbW9uOnN0ZGlvIgorIyBRQl9UQ1BTRVJJQUxfT1BUOiB0Y3Agc2VyaWFsIHBvcnQgb3B0aW9uLCBlLmcuLAorIyAgICAgICAgICAgICAgICAgICAiIC1kZXZpY2UgdmlydGlvLXNlcmlhbC1kZXZpY2UgLWNoYXJkZXYgc29ja2V0LGlkPXZpcnRjb24scG9ydD1AUE9SVEAsaG9zdD0xMjcuMC4wLjEgLWRldmljZSB2aXJ0Y29uc29sZSxjaGFyZGV2PXZpcnRjb24iCisjICAgICAgICAgICAgICAgICAgIE5vdGUsIHJ1bnFlbXUgd2lsbCByZXBsYWNlICJAUE9SVEAiIHdpdGggdGhlIHBvcnQgbnVtYmVyIHdoaWNoIGlzIHVzZWQuCisjCisjIFVzYWdlOgorIyBJTUFHRV9DTEFTU0VTICs9ICJxZW11Ym9vdCIKKyMgU2VlICJydW5xZW11IGhlbHAiIGZvciBtb3JlIGluZm8KKworUUJfTUVNID89ICItbSAyNTYiCitRQl9TRVJJQUxfT1BUID89ICItc2VyaWFsIG1vbjpzdGRpbyAtc2VyaWFsIG51bGwiCitRQl9ERUZBVUxUX0tFUk5FTCA/PSAiJHtLRVJORUxfSU1BR0VUWVBFfSIKK1FCX0RFRkFVTFRfRlNUWVBFID89ICJleHQ0IgorUUJfT1BUX0FQUEVORCA/PSAiLXNob3ctY3Vyc29yIgorCisjIENyZWF0ZSBxZW11Ym9vdC5jb25mCitST09URlNfUE9TVFBST0NFU1NfQ09NTUFORCArPSAid3JpdGVfcWVtdWJvb3RfY29uZjsgIgorCitweXRob24gd3JpdGVfcWVtdWJvb3RfY29uZigpIHsKKyAgICBpbXBvcnQgY29uZmlncGFyc2VyCisKKyAgICBidWlsZF92YXJzID0gWydNQUNISU5FJywgJ1RVTkVfQVJDSCcsICdERVBMT1lfRElSX0lNQUdFJywgXAorICAgICAgICAgICAgICAgICdLRVJORUxfSU1BR0VUWVBFJywgJ0lNQUdFX05BTUUnLCAnSU1BR0VfTElOS19OQU1FJywgXAorICAgICAgICAgICAgICAgICdTVEFHSU5HX0RJUl9OQVRJVkUnLCAnU1RBR0lOR19CSU5ESVJfTkFUSVZFJywgXAorICAgICAgICAgICAgICAgICdTVEFHSU5HX0RJUl9IT1NUJ10KKworICAgICMgVmFycyBmcm9tIGJzcAorICAgIHFiX3ZhcnMgPSBbXQorICAgIGZvciBrIGluIGQua2V5cygpOgorICAgICAgICBpZiBrLnN0YXJ0c3dpdGgoJ1FCXycpOgorICAgICAgICAgICAgcWJfdmFycy5hcHBlbmQoaykKKworICAgIHFlbXVib290ID0gIiVzLyVzLnFlbXVib290LmNvbmYiICUgKGQuZ2V0VmFyKCdERVBMT1lfRElSX0lNQUdFJywgVHJ1ZSksIGQuZ2V0VmFyKCdJTUFHRV9OQU1FJywgVHJ1ZSkpCisgICAgcWVtdWJvb3RfbGluayA9ICIlcy8lcy5xZW11Ym9vdC5jb25mIiAlIChkLmdldFZhcignREVQTE9ZX0RJUl9JTUFHRScsIFRydWUpLCBkLmdldFZhcignSU1BR0VfTElOS19OQU1FJywgVHJ1ZSkpCisgICAgY2YgPSBjb25maWdwYXJzZXIuQ29uZmlnUGFyc2VyKCkKKyAgICBjZi5hZGRfc2VjdGlvbignY29uZmlnX2JzcCcpCisgICAgZm9yIGsgaW4gYnVpbGRfdmFycyArIHFiX3ZhcnM6CisgICAgICAgIGNmLnNldCgnY29uZmlnX2JzcCcsIGssICclcycgJSBkLmdldFZhcihrLCBUcnVlKSkKKworICAgICMgUUJfREVGQVVMVF9LRVJORUwncyB2YWx1ZSBvZiBLRVJORUxfSU1BR0VUWVBFIGlzIHRoZSBuYW1lIG9mIGEgc3ltbGluaworICAgICMgdG8gdGhlIGtlcm5lbCBmaWxlLCB3aGljaCBoaW5kZXJzIHJlbG9jYXRhYmlsaXR5IG9mIHRoZSBxYiBjb25mLgorICAgICMgUmVhZCB0aGUgbGluayBhbmQgcmVwbGFjZSBpdCB3aXRoIHRoZSBmdWxsIGZpbGVuYW1lIG9mIHRoZSB0YXJnZXQuCisgICAga2VybmVsX2xpbmsgPSBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoJ0RFUExPWV9ESVJfSU1BR0UnLCBUcnVlKSwgZC5nZXRWYXIoJ1FCX0RFRkFVTFRfS0VSTkVMJywgVHJ1ZSkpCisgICAga2VybmVsID0gb3MucGF0aC5yZWFscGF0aChrZXJuZWxfbGluaykKKyAgICBjZi5zZXQoJ2NvbmZpZ19ic3AnLCAnUUJfREVGQVVMVF9LRVJORUwnLCBrZXJuZWwpCisKKyAgICBiYi51dGlscy5ta2RpcmhpZXIob3MucGF0aC5kaXJuYW1lKHFlbXVib290KSkKKyAgICB3aXRoIG9wZW4ocWVtdWJvb3QsICd3JykgYXMgZjoKKyAgICAgICAgY2Yud3JpdGUoZikKKworICAgIGlmIG9zLnBhdGgubGV4aXN0cyhxZW11Ym9vdF9saW5rKToKKyAgICAgICBvcy5yZW1vdmUocWVtdWJvb3RfbGluaykKKyAgICBvcy5zeW1saW5rKG9zLnBhdGguYmFzZW5hbWUocWVtdWJvb3QpLCBxZW11Ym9vdF9saW5rKQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9yZWNpcGVfc2FuaXR5LmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3JlY2lwZV9zYW5pdHkuYmJjbGFzcwppbmRleCAyOTU2MTFmLi5hZGQzNGRmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3JlY2lwZV9zYW5pdHkuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3JlY2lwZV9zYW5pdHkuYmJjbGFzcwpAQCAtOCw3ICs4LDcgQEAKICAgICAgICAgcmV0dXJuCiAKICAgICBmb3IgdmFyIGluIGQuZ2V0VmFyKCJfX3JlY2lwZV9zYW5pdHlfYmFkcnVudGltZXZhcnMiLCBUcnVlKS5zcGxpdCgpOgotICAgICAgICB2YWwgPSBkLmdldFZhcih2YXIsIDApCisgICAgICAgIHZhbCA9IGQuZ2V0VmFyKHZhciwgRmFsc2UpCiAgICAgICAgIGlmIHZhbCBhbmQgdmFsICE9IGNmZ2RhdGEuZ2V0KHZhcik6CiAgICAgICAgICAgICBfX25vdGUoIiVzIHNob3VsZCBiZSAlc18ke1BOfSIgJSAodmFyLCB2YXIpLCBkKQogCkBAIC0xNiwxMSArMTYsMTEgQEAKIF9fcmVjaXBlX3Nhbml0eV9yZXFkaWZmdmFycyA9ICIiCiBkZWYgcmVxX3ZhcnMoY2ZnZGF0YSwgZCk6CiAgICAgZm9yIHZhciBpbiBkLmdldFZhcigiX19yZWNpcGVfc2FuaXR5X3JlcXZhcnMiLCBUcnVlKS5zcGxpdCgpOgotICAgICAgICBpZiBub3QgZC5nZXRWYXIodmFyLCAwKToKKyAgICAgICAgaWYgbm90IGQuZ2V0VmFyKHZhciwgRmFsc2UpOgogICAgICAgICAgICAgX19ub3RlKCIlcyBzaG91bGQgYmUgc2V0IiAlIHZhciwgZCkKIAogICAgIGZvciB2YXIgaW4gZC5nZXRWYXIoIl9fcmVjaXBlX3Nhbml0eV9yZXFkaWZmdmFycyIsIFRydWUpLnNwbGl0KCk6Ci0gICAgICAgIHZhbCA9IGQuZ2V0VmFyKHZhciwgMCkKKyAgICAgICAgdmFsID0gZC5nZXRWYXIodmFyLCBGYWxzZSkKICAgICAgICAgY2ZndmFsID0gY2ZnZGF0YS5nZXQodmFyKQogCiAgICAgICAgIGlmIG5vdCB2YWw6CkBAIC0yOSw3ICsyOSw3IEBACiAgICAgICAgICAgICBfX25vdGUoIiVzIHNob3VsZCBiZSBkZWZpbmVkIHRvIHNvbWV0aGluZyBvdGhlciB0aGFuIGRlZmF1bHQgKCVzKSIgJSAodmFyLCBjZmd2YWwpLCBkKQogCiBkZWYgdmFyX3JlbmFtZXNfb3ZlcndyaXRlKGNmZ2RhdGEsIGQpOgotICAgIHJlbmFtZXMgPSBkLmdldFZhcigiX19yZWNpcGVfc2FuaXR5X3JlbmFtZXMiLCAwKQorICAgIHJlbmFtZXMgPSBkLmdldFZhcigiX19yZWNpcGVfc2FuaXR5X3JlbmFtZXMiLCBGYWxzZSkKICAgICBpZiByZW5hbWVzOgogICAgICAgICBmb3IgKGtleSwgbmV3a2V5LCBvbGR2YWx1ZSwgbmV3dmFsdWUpIGluIHJlbmFtZXM6CiAgICAgICAgICAgICBpZiBvbGR2YWx1ZSAhPSBuZXd2YWx1ZSBhbmQgb2xkdmFsdWUgIT0gY2ZnZGF0YS5nZXQobmV3a2V5KToKQEAgLTUwLDcgKzUwLDcgQEAKICAgICAgICAgaWYgY2ZnLmZpbmQoaSkgIT0gLTE6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgIGZvciBjbHNmaWxlIGluIGQuZ2V0VmFyKCJfX2luaGVyaXRfY2FjaGUiLCAwKToKKyAgICBmb3IgY2xzZmlsZSBpbiBkLmdldFZhcigiX19pbmhlcml0X2NhY2hlIiwgRmFsc2UpOgogICAgICAgICAoYmFzZSwgXykgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUoY2xzZmlsZSkpCiAgICAgICAgIGlmIGNmZy5maW5kKCIlc19kb19jb25maWd1cmUiICUgYmFzZSkgIT0gLTE6CiAgICAgICAgICAgICBfX25vdGUoImF1dG90b29sc19iYXNlIHVzYWdlIG5lZWRzIHZlcmlmaWNhdGlvbiwgc3BvdHRlZCAlc19kb19jb25maWd1cmUiICUgYmFzZSwgZCkKQEAgLTYwLDcgKzYwLDcgQEAKIGRlZiBjYW5fZGVsZXRlX0ZJTEVTUEFUSChjZmdkYXRhLCBkKToKICAgICBleHBlY3RlZCA9IGNmZ2RhdGEuZ2V0KCJGSUxFU1BBVEgiKQogICAgIGV4cGVjdGVkcGF0aHMgPSBkLmV4cGFuZChleHBlY3RlZCkKLSAgICB1bmV4cGFuZGVkID0gZC5nZXRWYXIoIkZJTEVTUEFUSCIsIDApCisgICAgdW5leHBhbmRlZCA9IGQuZ2V0VmFyKCJGSUxFU1BBVEgiLCBGYWxzZSkKICAgICBmaWxlc3BhdGggPSBkLmdldFZhcigiRklMRVNQQVRIIiwgVHJ1ZSkuc3BsaXQoIjoiKQogICAgIGZpbGVzcGF0aCA9IFtvcy5wYXRoLm5vcm1wYXRoKGYpIGZvciBmIGluIGZpbGVzcGF0aCBpZiBvcy5wYXRoLmV4aXN0cyhmKV0KICAgICBmb3IgZnAgaW4gZmlsZXNwYXRoOgpAQCAtNzMsNyArNzMsNyBAQAogZGVmIGNhbl9kZWxldGVfRklMRVNESVIoY2ZnZGF0YSwgZCk6CiAgICAgZXhwZWN0ZWQgPSBjZmdkYXRhLmdldCgiRklMRVNESVIiKQogICAgICNleHBlY3RlZCA9ICIke0BiYi51dGlscy53aGljaChkLmdldFZhcignRklMRVNQQVRIJywgVHJ1ZSksICcuJyl9IgotICAgIHVuZXhwYW5kZWQgPSBkLmdldFZhcigiRklMRVNESVIiLCAwKQorICAgIHVuZXhwYW5kZWQgPSBkLmdldFZhcigiRklMRVNESVIiLCBGYWxzZSkKICAgICBpZiB1bmV4cGFuZGVkIGlzIE5vbmU6CiAgICAgICAgIHJldHVybiBGYWxzZQogCkBAIC05MCw3ICs5MCw3IEBACiAgICAgZm9yIGsgaW4gWyJTIiwgIlBWIiwgIlBOIiwgIkRFU0NSSVBUSU9OIiwgIkRFUEVORFMiLAogICAgICAgICAgICAgICAiU0VDVElPTiIsICJQQUNLQUdFUyIsICJFWFRSQV9PRUNPTkYiLCAiRVhUUkFfT0VNQUtFIl06CiAgICAgI2ZvciBrIGluIGNmZ2RhdGE6Ci0gICAgICAgIHVuZXhwYW5kZWQgPSBkLmdldFZhcihrLCAwKQorICAgICAgICB1bmV4cGFuZGVkID0gZC5nZXRWYXIoaywgRmFsc2UpCiAgICAgICAgIGNmZ3VuZXhwYW5kZWQgPSBjZmdkYXRhLmdldChrKQogICAgICAgICBpZiBub3QgY2ZndW5leHBhbmRlZDoKICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC0xMTcsNyArMTE3LDcgQEAKICAgICAgICAgIyhjYW5fdXNlX2F1dG90b29sc19iYXNlLCAiY2FuZGlkYXRlIGZvciB1c2Ugb2YgYXV0b3Rvb2xzX2Jhc2UiKSwKICAgICAgICAgKGluY29ycmVjdF9ub25lbXB0eV9QQUNLQUdFUywgIm5hdGl2ZSBvciBjcm9zcyByZWNpcGUgd2l0aCBub24tZW1wdHkgUEFDS0FHRVMiKSwKICAgICBdCi0gICAgY2ZnZGF0YSA9IGQuZ2V0VmFyKCJfX3JlY2lwZV9zYW5pdHlfY2ZnZGF0YSIsIDApCisgICAgY2ZnZGF0YSA9IGQuZ2V0VmFyKCJfX3JlY2lwZV9zYW5pdHlfY2ZnZGF0YSIsIEZhbHNlKQogCiAgICAgZm9yIChmdW5jLCBtc2cpIGluIHNhbml0eWNoZWNrczoKICAgICAgICAgaWYgZnVuYyhjZmdkYXRhLCBkKToKQEAgLTE0Myw4ICsxNDMsOCBAQAogCiAgICAgY2ZnZGF0YSA9IHt9CiAgICAgZm9yIGsgaW4gZC5rZXlzKCk6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGQuZ2V0VmFyKGssIDApLCBiYi5kYXRhX3NtYXJ0LkRhdGFTbWFydCk6Ci0gICAgICAgICAgICBjZmdkYXRhW2tdID0gZC5nZXRWYXIoaywgMCkKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZC5nZXRWYXIoaywgRmFsc2UpLCBiYi5kYXRhX3NtYXJ0LkRhdGFTbWFydCk6CisgICAgICAgICAgICBjZmdkYXRhW2tdID0gZC5nZXRWYXIoaywgRmFsc2UpCiAKICAgICBkLnNldFZhcigiX19yZWNpcGVfc2FuaXR5X2NmZ2RhdGEiLCBjZmdkYXRhKQogICAgICNkLnNldFZhcigiX19yZWNpcGVfc2FuaXR5X2NmZ2RhdGEiLCBkKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9yZXBvcnQtZXJyb3IuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcmVwb3J0LWVycm9yLmJiY2xhc3MKaW5kZXggODJiNWJjZC4uNWJiMjMxZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9yZXBvcnQtZXJyb3IuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3JlcG9ydC1lcnJvci5iYmNsYXNzCkBAIC00Miw4ICs0Miw4IEBACiAgICAgICAgICAgICBkYXRhWydkaXN0cm8nXSA9IGUuZGF0YS5nZXRWYXIoIkRJU1RSTyIsIFRydWUpCiAgICAgICAgICAgICBkYXRhWyd0YXJnZXRfc3lzJ10gPSBlLmRhdGEuZ2V0VmFyKCJUQVJHRVRfU1lTIiwgVHJ1ZSkKICAgICAgICAgICAgIGRhdGFbJ2ZhaWx1cmVzJ10gPSBbXQotICAgICAgICAgICAgZGF0YVsnY29tcG9uZW50J10gPSBlLmdldFBrZ3MoKVswXQotICAgICAgICAgICAgZGF0YVsnYnJhbmNoX2NvbW1pdCddID0gYmFzZV9kZXRlY3RfYnJhbmNoKGUuZGF0YSkgKyAiOiAiICsgYmFzZV9kZXRlY3RfcmV2aXNpb24oZS5kYXRhKQorICAgICAgICAgICAgZGF0YVsnY29tcG9uZW50J10gPSAiICIuam9pbihlLmdldFBrZ3MoKSkKKyAgICAgICAgICAgIGRhdGFbJ2JyYW5jaF9jb21taXQnXSA9IHN0cihiYXNlX2RldGVjdF9icmFuY2goZS5kYXRhKSkgKyAiOiAiICsgc3RyKGJhc2VfZGV0ZWN0X3JldmlzaW9uKGUuZGF0YSkpCiAgICAgICAgICAgICBsb2NrID0gYmIudXRpbHMubG9ja2ZpbGUoZGF0YWZpbGUgKyAnLmxvY2snKQogICAgICAgICAgICAgZXJyb3JyZXBvcnRfc2F2ZWRhdGEoZSwgZGF0YSwgImVycm9yLXJlcG9ydC50eHQiKQogICAgICAgICAgICAgYmIudXRpbHMudW5sb2NrZmlsZShsb2NrKQpAQCAtNTgsNiArNTgsMTMgQEAKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIGxvZ0ZpbGUgPSBjb2RlY3Mub3Blbihsb2csICdyJywgJ3V0Zi04JykKICAgICAgICAgICAgICAgICAgICAgbG9nZGF0YSA9IGxvZ0ZpbGUucmVhZCgpCisKKyAgICAgICAgICAgICAgICAgICAgIyBSZXBsYWNlIGhvc3Qtc3BlY2lmaWMgcGF0aHMgc28gdGhlIGxvZ3MgYXJlIGNsZWFuZXIKKyAgICAgICAgICAgICAgICAgICAgZm9yIGQgaW4gKCJUT1BESVIiLCAiVE1QRElSIik6CisgICAgICAgICAgICAgICAgICAgICAgICBzID0gZS5kYXRhLmdldFZhcihkLCBUcnVlKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dkYXRhID0gbG9nZGF0YS5yZXBsYWNlKHMsIGQpCisKICAgICAgICAgICAgICAgICAgICAgbG9nRmlsZS5jbG9zZSgpCiAgICAgICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgICAgICBsb2dkYXRhID0gIlVuYWJsZSB0byByZWFkIGxvZyBmaWxlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ybV93b3JrLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3JtX3dvcmsuYmJjbGFzcwppbmRleCBjNjQ3ZDg4Li5iNzFhOWQxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3JtX3dvcmsuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3JtX3dvcmsuYmJjbGFzcwpAQCAtMTUsNiArMTUsOSBAQAogIyB0byB0cnkgYW5kIHJlZHVjZSBkaXNrIHVzYWdlCiBCQl9TQ0hFRFVMRVIgPz0gImNvbXBsZXRpb24iCiAKKyMgUnVuIHRoZSBybV93b3JrIHRhc2sgaW4gdGhlIGlkbGUgc2NoZWR1bGluZyBjbGFzcworQkJfVEFTS19JT05JQ0VfTEVWRUxfdGFzay1ybV93b3JrID0gIjMuMCIKKwogUk1XT1JLX09SSUdfVEFTSyA6PSAiJHtCQl9ERUZBVUxUX1RBU0t9IgogQkJfREVGQVVMVF9UQVNLID0gInJtX3dvcmtfYWxsIgogCkBAIC02MywxNCArNjYsMTAgQEAKICAgICAgICAgICAgICAgICBpPWR1bW15CiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICA7OwotICAgICAgICAgICAgKmRvX3Jvb3RmcyopCi0gICAgICAgICAgICAgICBpPWR1bW15Ci0gICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgOzsKLSAgICAgICAgICAgICpkb19pbWFnZSopCi0gICAgICAgICAgICAgICBpPWR1bW15Ci0gICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICpkb19yb290ZnMqfCpkb19pbWFnZSp8KmRvX2Jvb3RpbWcqfCpkb19ib290ZGlyZWN0ZGlzayp8KmRvX3ZtaW1nKikKKyAgICAgICAgICAgICAgICBpPWR1bW15CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgKmRvX2J1aWxkKikKICAgICAgICAgICAgICAgICBpPWR1bW15CiAgICAgICAgICAgICAgICAgYnJlYWsKQEAgLTExOSw2ICsxMTgsOCBAQAogcm1fd29ya19yb290ZnNbY2xlYW5kaXJzXSA9ICIke1dPUktESVJ9L3Jvb3RmcyIKIAogcHl0aG9uICgpIHsKKyAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdrZXJuZWwnLCBkKToKKyAgICAgICAgZC5hcHBlbmRWYXIoIlJNX1dPUktfRVhDTFVERSIsICcgJyArIGQuZ2V0VmFyKCJQTiIsIFRydWUpKQogICAgICMgSWYgdGhlIHJlY2lwZSBuYW1lIGlzIGluIHRoZSBSTV9XT1JLX0VYQ0xVREUsIHNraXAgdGhlIHJlY2lwZS4KICAgICBleGNsdWRlcyA9IChkLmdldFZhcigiUk1fV09SS19FWENMVURFIiwgVHJ1ZSkgb3IgIiIpLnNwbGl0KCkKICAgICBwbiA9IGQuZ2V0VmFyKCJQTiIsIFRydWUpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Jvb3Rmcy1wb3N0Y29tbWFuZHMuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcm9vdGZzLXBvc3Rjb21tYW5kcy5iYmNsYXNzCmluZGV4IDk1ZDI4YWYuLjBjN2NlZWEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcm9vdGZzLXBvc3Rjb21tYW5kcy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcm9vdGZzLXBvc3Rjb21tYW5kcy5iYmNsYXNzCkBAIC0xNSwxMyArMTUsMTMgQEAKIFJPT1RGU19QT1NUUFJPQ0VTU19DT01NQU5EICs9ICcke0BiYi51dGlscy5jb250YWlucygiSU1BR0VfRkVBVFVSRVMiLCAicmVhZC1vbmx5LXJvb3RmcyIsICJyZWFkX29ubHlfcm9vdGZzX2hvb2s7ICIsICIiLGQpfScKIAogIyBXcml0ZSBtYW5pZmVzdAotSU1BR0VfTUFOSUZFU1QgPSAiJHtERVBMT1lfRElSX0lNQUdFfS8ke0lNQUdFX05BTUV9LnJvb3Rmcy5tYW5pZmVzdCIKK0lNQUdFX01BTklGRVNUID0gIiR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9LnJvb3Rmcy5tYW5pZmVzdCIKIFJPT1RGU19QT1NUVU5JTlNUQUxMX0NPTU1BTkQgPSsgIndyaXRlX2ltYWdlX21hbmlmZXN0IDsgIgogIyBTZXQgZGVmYXVsdCBwb3N0aW5zdCBsb2cgZmlsZQogUE9TVElOU1RfTE9HRklMRSA/PSAiJHtsb2NhbHN0YXRlZGlyfS9sb2cvcG9zdGluc3RhbGwubG9nIgogIyBTZXQgZGVmYXVsdCB0YXJnZXQgZm9yIHN5c3RlbWQgaW1hZ2VzCiBTWVNURU1EX0RFRkFVTFRfVEFSR0VUID89ICcke0BiYi51dGlscy5jb250YWlucygiSU1BR0VfRkVBVFVSRVMiLCAieDExLWJhc2UiLCAiZ3JhcGhpY2FsLnRhcmdldCIsICJtdWx0aS11c2VyLnRhcmdldCIsIGQpfScKLVJPT1RGU19QT1NUUFJPQ0VTU19DT01NQU5EICs9ICcke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgInN5c3RlbWQiLCAic2V0X3N5c3RlbWRfZGVmYXVsdF90YXJnZXQ7ICIsICIiLCBkKX0nCitST09URlNfUE9TVFBST0NFU1NfQ09NTUFORCArPSAnJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJzeXN0ZW1kIiwgInNldF9zeXN0ZW1kX2RlZmF1bHRfdGFyZ2V0OyBzeXN0ZW1kX2NyZWF0ZV91c2VyczsiLCAiIiwgZCl9JwogCiBST09URlNfUE9TVFBST0NFU1NfQ09NTUFORCArPSAnZW1wdHlfdmFyX3ZvbGF0aWxlOycKIApAQCAtMzAsNyArMzAsMzQgQEAKIFNTSF9ESVNBQkxFX0ROU19MT09LVVAgPz0gIiBzc2hfZGlzYWJsZV9kbnNfbG9va3VwIDsgIgogUk9PVEZTX1BPU1RQUk9DRVNTX0NPTU1BTkRfYXBwZW5kX3FlbXVhbGwgPSAiJHtTU0hfRElTQUJMRV9ETlNfTE9PS1VQfSIKIAotCitzeXN0ZW1kX2NyZWF0ZV91c2VycyAoKSB7CisJZm9yIGNvbmZmaWxlIGluICR7SU1BR0VfUk9PVEZTfS91c3IvbGliL3N5c3VzZXJzLmQvc3lzdGVtZC5jb25mICR7SU1BR0VfUk9PVEZTfS91c3IvbGliL3N5c3VzZXJzLmQvc3lzdGVtZC1yZW1vdGUuY29uZjsgZG8KKwkJWyAtZSAkY29uZmZpbGUgXSB8fCBjb250aW51ZQorCQlncmVwIC12ICJeIyIgJGNvbmZmaWxlIHwgc2VkIC1lICcvXiQvZCcgfCB3aGlsZSByZWFkIHR5cGUgbmFtZSBpZCBjb21tZW50OyBkbworCQlpZiBbICIkdHlwZSIgPSAidSIgXTsgdGhlbgorCQkJdXNlcmFkZF9wYXJhbXM9Ii0tc2hlbGwgL3NiaW4vbm9sb2dpbiIKKwkJCVsgIiRpZCIgIT0gIi0iIF0gJiYgdXNlcmFkZF9wYXJhbXM9IiR1c2VyYWRkX3BhcmFtcyAtLXVpZCAkaWQiCisJCQlbICIkY29tbWVudCIgIT0gIi0iIF0gJiYgdXNlcmFkZF9wYXJhbXM9IiR1c2VyYWRkX3BhcmFtcyAtLWNvbW1lbnQgJGNvbW1lbnQiCisJCQl1c2VyYWRkX3BhcmFtcz0iJHVzZXJhZGRfcGFyYW1zIC0tc3lzdGVtICRuYW1lIgorCQkJZXZhbCB1c2VyYWRkIC0tcm9vdCAke0lNQUdFX1JPT1RGU30gJHVzZXJhZGRfcGFyYW1zIHx8IHRydWUKKwkJZWxpZiBbICIkdHlwZSIgPSAiZyIgXTsgdGhlbgorCQkJZ3JvdXBhZGRfcGFyYW1zPSIiCisJCQlbICIkaWQiICE9ICItIiBdICYmIGdyb3VwYWRkX3BhcmFtcz0iJGdyb3VwYWRkX3BhcmFtcyAtLWdpZCAkaWQiCisJCQlncm91cGFkZF9wYXJhbXM9IiRncm91cGFkZF9wYXJhbXMgLS1zeXN0ZW0gJG5hbWUiCisJCQlldmFsIGdyb3VwYWRkIC0tcm9vdCAke0lNQUdFX1JPT1RGU30gJGdyb3VwYWRkX3BhcmFtcyB8fCB0cnVlCisJCWVsaWYgWyAiJHR5cGUiID0gIm0iIF07IHRoZW4KKwkJCWdyb3VwPSRpZAorCQkJaWYgWyAhIGBncmVwIC1xICJeJHtncm91cH06IiAke0lNQUdFX1JPT1RGU30ke3N5c2NvbmZkaXJ9L2dyb3VwYCBdOyB0aGVuCisJCQkJZXZhbCBncm91cGFkZCAtLXJvb3QgJHtJTUFHRV9ST09URlN9IC0tc3lzdGVtICRncm91cAorCQkJZmkKKwkJCWlmIFsgISBgZ3JlcCAtcSAiXiR7bmFtZX06IiAke0lNQUdFX1JPT1RGU30ke3N5c2NvbmZkaXJ9L3Bhc3N3ZGAgXTsgdGhlbgorCQkJCWV2YWwgdXNlcmFkZCAtLXJvb3QgJHtJTUFHRV9ST09URlN9IC0tc2hlbGwgL3NiaW4vbm9sb2dpbiAtLXN5c3RlbSAkbmFtZQorCQkJZmkKKwkJCWV2YWwgdXNlcm1vZCAtLXJvb3QgJHtJTUFHRV9ST09URlN9IC1hIC1HICRncm91cCAkbmFtZQorCQlmaQorCQlkb25lCisJZG9uZQorfQogCiAjCiAjIEEgaG9vayBmdW5jdGlvbiB0byBzdXBwb3J0IHJlYWQtb25seS1yb290ZnMgSU1BR0VfRkVBVFVSRVMKQEAgLTczLDI3ICsxMDAsNiBAQAogCQkJJHtJTUFHRV9ST09URlN9L2V0Yy9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2gKIAkJZmkKIAlmaQotCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJzeXN0ZW1kIiwgInRydWUiLCAiZmFsc2UiLCBkKX07IHRoZW4KLQkgICAgIyBVcGRhdGUgdXNlciBkYXRhYmFzZSBmaWxlcyBzbyB0aGF0IHNlcnZpY2VzIGRvbid0IGZhaWwgZm9yIGEgcmVhZC1vbmx5IHN5c3RlbWQgc3lzdGVtCi0JICAgIGZvciBjb25mZmlsZSBpbiAke0lNQUdFX1JPT1RGU30vdXNyL2xpYi9zeXN1c2Vycy5kL3N5c3RlbWQuY29uZiAke0lNQUdFX1JPT1RGU30vdXNyL2xpYi9zeXN1c2Vycy5kL3N5c3RlbWQtcmVtb3RlLmNvbmY7IGRvCi0JCVsgLWUgJGNvbmZmaWxlIF0gfHwgY29udGludWUKLQkJZ3JlcCAtdiAiXiMiICRjb25mZmlsZSB8IHNlZCAtZSAnL14kL2QnIHwgd2hpbGUgcmVhZCB0eXBlIG5hbWUgaWQgY29tbWVudDsgZG8KLQkJICAgIGlmIFsgIiR0eXBlIiA9ICJ1IiBdOyB0aGVuCi0JCQl1c2VyYWRkX3BhcmFtcz0iIgotCQkJWyAiJGlkIiAhPSAiLSIgXSAmJiB1c2VyYWRkX3BhcmFtcz0iJHVzZXJhZGRfcGFyYW1zIC0tdWlkICRpZCIKLQkJCVsgIiRjb21tZW50IiAhPSAiLSIgXSAmJiB1c2VyYWRkX3BhcmFtcz0iJHVzZXJhZGRfcGFyYW1zIC0tY29tbWVudCAkY29tbWVudCIKLQkJCXVzZXJhZGRfcGFyYW1zPSIkdXNlcmFkZF9wYXJhbXMgLS1zeXN0ZW0gJG5hbWUiCi0JCQlldmFsIHVzZXJhZGQgLS1yb290ICR7SU1BR0VfUk9PVEZTfSAkdXNlcmFkZF9wYXJhbXMgfHwgdHJ1ZQotCQkgICAgZWxpZiBbICIkdHlwZSIgPSAiZyIgXTsgdGhlbgotCQkJZ3JvdXBhZGRfcGFyYW1zPSIiCi0JCQlbICIkaWQiICE9ICItIiBdICYmIGdyb3VwYWRkX3BhcmFtcz0iJGdyb3VwYWRkX3BhcmFtcyAtLWdpZCAkaWQiCi0JCQlncm91cGFkZF9wYXJhbXM9IiRncm91cGFkZF9wYXJhbXMgLS1zeXN0ZW0gJG5hbWUiCi0JCQlldmFsIGdyb3VwYWRkIC0tcm9vdCAke0lNQUdFX1JPT1RGU30gJGdyb3VwYWRkX3BhcmFtcyB8fCB0cnVlCi0JCSAgICBmaQotCQlkb25lCi0JICAgIGRvbmUKLQlmaQogfQogCiAjCkBAIC0yMTEsNyArMjE3LDcgQEAKICAgICBmcm9tIG9lLnJvb3RmcyBpbXBvcnQgaW1hZ2VfbGlzdF9pbnN0YWxsZWRfcGFja2FnZXMKICAgICBmcm9tIG9lLnV0aWxzIGltcG9ydCBmb3JtYXRfcGtnX2xpc3QKIAotICAgIGRlcGxveV9kaXIgPSBkLmdldFZhcignREVQTE9ZX0RJUl9JTUFHRScsIFRydWUpCisgICAgZGVwbG95X2RpciA9IGQuZ2V0VmFyKCdJTUdERVBMT1lESVInLCBUcnVlKQogICAgIGxpbmtfbmFtZSA9IGQuZ2V0VmFyKCdJTUFHRV9MSU5LX05BTUUnLCBUcnVlKQogICAgIG1hbmlmZXN0X25hbWUgPSBkLmdldFZhcignSU1BR0VfTUFOSUZFU1QnLCBUcnVlKQogCkBAIC0yMjYsOSArMjMyLDYgQEAKICAgICBpZiBvcy5wYXRoLmV4aXN0cyhtYW5pZmVzdF9uYW1lKToKICAgICAgICAgbWFuaWZlc3RfbGluayA9IGRlcGxveV9kaXIgKyAiLyIgKyBsaW5rX25hbWUgKyAiLm1hbmlmZXN0IgogICAgICAgICBpZiBvcy5wYXRoLmxleGlzdHMobWFuaWZlc3RfbGluayk6Ci0gICAgICAgICAgICBpZiBkLmdldFZhcignUk1fT0xEX0lNQUdFJywgVHJ1ZSkgPT0gIjEiIGFuZCBcCi0gICAgICAgICAgICAgICAgICAgIG9zLnBhdGguZXhpc3RzKG9zLnBhdGgucmVhbHBhdGgobWFuaWZlc3RfbGluaykpOgotICAgICAgICAgICAgICAgIG9zLnJlbW92ZShvcy5wYXRoLnJlYWxwYXRoKG1hbmlmZXN0X2xpbmspKQogICAgICAgICAgICAgb3MucmVtb3ZlKG1hbmlmZXN0X2xpbmspCiAgICAgICAgIG9zLnN5bWxpbmsob3MucGF0aC5iYXNlbmFtZShtYW5pZmVzdF9uYW1lKSwgbWFuaWZlc3RfbGluaykKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcm9vdGZzX3JwbS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9yb290ZnNfcnBtLmJiY2xhc3MKaW5kZXggMGQyZTg5Ny4uMzc3MzBhNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9yb290ZnNfcnBtLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9yb290ZnNfcnBtLmJiY2xhc3MKQEAgLTUsOCArNSw4IEBACiBST09URlNfUEtHTUFOQUdFID0gInJwbSBzbWFydHBtIgogUk9PVEZTX1BLR01BTkFHRV9CT09UU1RSQVAgPSAicnVuLXBvc3RpbnN0cyIKIAotIyBBZGQgNTBNZWcgb2YgZXh0cmEgc3BhY2UgZm9yIFNtYXJ0Ci1JTUFHRV9ST09URlNfRVhUUkFfU1BBQ0VfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJQQUNLQUdFX0lOU1RBTEwiLCAic21hcnRwbSIsICIgKyA1MTIwMCIsICIiICxkKX0iCisjIEFkZCAxMDBNZWcgb2YgZXh0cmEgc3BhY2UgZm9yIFNtYXJ0CitJTUFHRV9ST09URlNfRVhUUkFfU1BBQ0VfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJQQUNLQUdFX0lOU1RBTEwiLCAic21hcnRwbSIsICIgKyAxMDI0MDAiLCAiIiAsZCl9IgogCiAjIFNtYXJ0IGlzIHB5dGhvbiBiYXNlZCwgc28gYmUgc3VyZSBweXRob24tbmF0aXZlIGlzIGF2YWlsYWJsZSB0byB1cy4KIEVYVFJBTkFUSVZFUEFUSCArPSAicHl0aG9uLW5hdGl2ZSIKQEAgLTI0LDExICsyNCw2IEBACiBkb19yb290ZnNbcmVjcmRlcHRhc2tdICs9ICJkb19wYWNrYWdlX3dyaXRlX3JwbSIKIGRvX3Jvb3Rmc1t2YXJkZXBzXSArPSAiUEFDS0FHRV9GRUVEX1VSSVMiCiAKLSMgUlBNIGRvZXNuJ3Qgd29yayB3aXRoIG11bHRpcGxlIHJvb3RmcyBnZW5lcmF0aW9uIGF0IG9uY2UgZHVlIHRvIGNvbGxpc2lvbnMgaW4gdGhlIHVzZSBvZiBmaWxlcyAKLSMgaW4gJHtERVBMT1lfRElSX1JQTX0uIFRoaXMgY2FuIGJlIHJlbW92ZWQgaWYgcGFja2FnZV91cGRhdGVfaW5kZXhfcnBtIGNhbiBiZSBjYWxsZWQgY29uY3VycmVudGx5Ci1kb19yb290ZnNbbG9ja2ZpbGVzXSArPSAiJHtERVBMT1lfRElSX1JQTX0vcnBtLmxvY2siCi1kb19wb3B1bGF0ZV9zZGtbbG9ja2ZpbGVzXSArPSAiJHtERVBMT1lfRElSX1JQTX0vcnBtLmxvY2siCi0KIHB5dGhvbiAoKSB7CiAgICAgaWYgZC5nZXRWYXIoJ0JVSUxEX0lNQUdFU19GUk9NX0ZFRURTJywgVHJ1ZSk6CiAgICAgICAgIGZsYWdzID0gZC5nZXRWYXJGbGFnKCdkb19yb290ZnMnLCAncmVjcmRlcHRhc2snLCBUcnVlKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zYW5pdHkuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2FuaXR5LmJiY2xhc3MKaW5kZXggNzc4MTNlNC4uNzY4MmZmYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zYW5pdHkuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Nhbml0eS5iYmNsYXNzCkBAIC0xMzUsOCArMTM1LDcgQEAKICAgICAgICAgYmIubm90ZSgiWW91ciBjb25mL2JibGF5ZXJzLmNvbmYgaGFzIGJlZW4gYXV0b21hdGljYWxseSB1cGRhdGVkLiIpCiAgICAgICAgIHJldHVybgogCi0gICAgICAgIGlmIG5vdCBzdGF0dXMucmVwYXJzZToKLSAgICAgICAgICAgIHN0YXR1cy5hZGRyZXN1bHQoKQorICAgICAgICBzdGF0dXMuYWRkcmVzdWx0KCkKIAogICAgIGVsaWYgY3VycmVudF9sY29uZiA9PSA2IGFuZCBsY29uZl92ZXJzaW9uID4gNjoKICAgICAgICAgIyBIYW5kbGUgcmVuYW1lIG9mIG1ldGEteW9jdG8gLT4gbWV0YS1wb2t5CkBAIC00NTksMTkgKzQ1OCwxOSBAQAogCiAgICAgICAgICMgQ2hlY2sgaWYgR0NDIGNvdWxkIHdvcmsgd2l0aG91dCBtYXJjaAogICAgICAgICBpZiBub3QgcmVzdWx0OgotICAgICAgICAgICAgc3RhdHVzLHJlcyA9IG9lLnV0aWxzLmdldHN0YXR1c291dHB1dCgiJHtCVUlMRF9QUkVGSVh9Z2NjIGdjY190ZXN0LmMgLW8gZ2NjX3Rlc3QiKQorICAgICAgICAgICAgc3RhdHVzLHJlcyA9IG9lLnV0aWxzLmdldHN0YXR1c291dHB1dChzYW5pdHlfZGF0YS5leHBhbmQoIiR7QlVJTERfQ0N9IGdjY190ZXN0LmMgLW8gZ2NjX3Rlc3QiKSkKICAgICAgICAgICAgIGlmIHN0YXR1cyA9PSAwOgogICAgICAgICAgICAgICAgIHJlc3VsdCA9IFRydWU7CiAKICAgICAgICAgaWYgbm90IHJlc3VsdDoKLSAgICAgICAgICAgIHN0YXR1cyxyZXMgPSBvZS51dGlscy5nZXRzdGF0dXNvdXRwdXQoIiR7QlVJTERfUFJFRklYfWdjYyAtbWFyY2g9bmF0aXZlIGdjY190ZXN0LmMgLW8gZ2NjX3Rlc3QiKQorICAgICAgICAgICAgc3RhdHVzLHJlcyA9IG9lLnV0aWxzLmdldHN0YXR1c291dHB1dChzYW5pdHlfZGF0YS5leHBhbmQoIiR7QlVJTERfQ0N9IC1tYXJjaD1uYXRpdmUgZ2NjX3Rlc3QuYyAtbyBnY2NfdGVzdCIpKQogICAgICAgICAgICAgaWYgc3RhdHVzID09IDA6CiAgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICJCVUlMRF9DRkxBR1NfYXBwZW5kID0gXCIgLW1hcmNoPW5hdGl2ZVwiIgogICAgICAgICAgICAgICAgIHJlc3VsdCA9IFRydWU7CiAKICAgICAgICAgaWYgbm90IHJlc3VsdDoKICAgICAgICAgICAgIGJ1aWxkX2FyY2ggPSBzYW5pdHlfZGF0YS5nZXRWYXIoJ0JVSUxEX0FSQ0gnLCBUcnVlKQotICAgICAgICAgICAgc3RhdHVzLHJlcyA9IG9lLnV0aWxzLmdldHN0YXR1c291dHB1dCgiJHtCVUlMRF9QUkVGSVh9Z2NjIC1tYXJjaD0lcyBnY2NfdGVzdC5jIC1vIGdjY190ZXN0IiAlIGJ1aWxkX2FyY2gpCisgICAgICAgICAgICBzdGF0dXMscmVzID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KHNhbml0eV9kYXRhLmV4cGFuZCgiJHtCVUlMRF9DQ30gLW1hcmNoPSVzIGdjY190ZXN0LmMgLW8gZ2NjX3Rlc3QiICUgYnVpbGRfYXJjaCkpCiAgICAgICAgICAgICBpZiBzdGF0dXMgPT0gMDoKICAgICAgICAgICAgICAgICBtZXNzYWdlID0gIkJVSUxEX0NGTEFHU19hcHBlbmQgPSBcIiAtbWFyY2g9JXNcIiIgJSBidWlsZF9hcmNoCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gVHJ1ZTsKQEAgLTU1NywyMCArNTU2LDE3IEBACiAgICAgICAgIHJldHVybiAiUmVxdWlyZWQgcGVybCBtb2R1bGUocykgbm90IGZvdW5kOiAlc1xuXG4lc1xuIiAlIChyZXQsIGVycnJlc3VsdCkKICAgICByZXR1cm4gTm9uZQogCi1kZWYgc2FuaXR5X2NoZWNrX2NvbmZmaWxlcyhzdGF0dXMsIGQpOgorZGVmIHNhbml0eV9jaGVja19jb25mZmlsZXMoZCk6CiAgICAgZnVuY3MgPSBkLmdldFZhcignQkJMQVlFUlNfQ09ORl9VUERBVEVfRlVOQ1MnLCBUcnVlKS5zcGxpdCgpCiAgICAgZm9yIGZ1bmMgaW4gZnVuY3M6CiAgICAgICAgIGNvbmZmaWxlLCBjdXJyZW50X3ZlcnNpb24sIHJlcXVpcmVkX3ZlcnNpb24sIGZ1bmMgPSBmdW5jLnNwbGl0KCI6IikKICAgICAgICAgaWYgY2hlY2tfY29uZl9leGlzdHMoY29uZmZpbGUsIGQpIGFuZCBkLmdldFZhcihjdXJyZW50X3ZlcnNpb24sIFRydWUpIGlzIG5vdCBOb25lIGFuZCBcCiAgICAgICAgICAgICAgICAgZC5nZXRWYXIoY3VycmVudF92ZXJzaW9uLCBUcnVlKSAhPSBkLmdldFZhcihyZXF1aXJlZF92ZXJzaW9uLCBUcnVlKToKLSAgICAgICAgICAgIHN1Y2Nlc3MgPSBUcnVlCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgYmIuYnVpbGQuZXhlY19mdW5jKGZ1bmMsIGQsIHB5dGhvbmV4Y2VwdGlvbj1UcnVlKQogICAgICAgICAgICAgZXhjZXB0IE5vdEltcGxlbWVudGVkRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBzdWNjZXNzID0gRmFsc2UKLSAgICAgICAgICAgICAgICBzdGF0dXMuYWRkcmVzdWx0KHN0cihlKSkKLSAgICAgICAgICAgIGlmIHN1Y2Nlc3M6Ci0gICAgICAgICAgICAgICAgc3RhdHVzLnJlcGFyc2UgPSBUcnVlCisgICAgICAgICAgICAgICAgYmIuZmF0YWwoZSkKKyAgICAgICAgICAgIGQuc2V0VmFyKCJCQl9JTlZBTElEQ09ORiIsIFRydWUpCiAKIGRlZiBzYW5pdHlfaGFuZGxlX2FiaWNoYW5nZXMoc3RhdHVzLCBkKToKICAgICAjCkBAIC02NzMsMTEgKzY2OSwxMSBAQAogICAgIGlmIG5vdCBjaGVja19hcHBfZXhpc3RzKCIke01BS0V9IiwgZCk6CiAgICAgICAgIG1pc3NpbmcgPSBtaXNzaW5nICsgIkdOVSBtYWtlLCIKIAotICAgIGlmIG5vdCBjaGVja19hcHBfZXhpc3RzKCcke0JVSUxEX1BSRUZJWH1nY2MnLCBkKToKLSAgICAgICAgbWlzc2luZyA9IG1pc3NpbmcgKyAiQyBDb21waWxlciAoJXNnY2MpLCIgJSBkLmdldFZhcigiQlVJTERfUFJFRklYIiwgVHJ1ZSkKKyAgICBpZiBub3QgY2hlY2tfYXBwX2V4aXN0cygnJHtCVUlMRF9DQ30nLCBkKToKKyAgICAgICAgbWlzc2luZyA9IG1pc3NpbmcgKyAiQyBDb21waWxlciAoJXMpLCIgJSBkLmdldFZhcigiQlVJTERfQ0MiLCBUcnVlKQogCi0gICAgaWYgbm90IGNoZWNrX2FwcF9leGlzdHMoJyR7QlVJTERfUFJFRklYfWcrKycsIGQpOgotICAgICAgICBtaXNzaW5nID0gbWlzc2luZyArICJDKysgQ29tcGlsZXIgKCVzZysrKSwiICUgZC5nZXRWYXIoIkJVSUxEX1BSRUZJWCIsIFRydWUpCisgICAgaWYgbm90IGNoZWNrX2FwcF9leGlzdHMoJyR7QlVJTERfQ1hYfScsIGQpOgorICAgICAgICBtaXNzaW5nID0gbWlzc2luZyArICJDKysgQ29tcGlsZXIgKCVzKSwiICUgZC5nZXRWYXIoIkJVSUxEX0NYWCIsIFRydWUpCiAKICAgICByZXF1aXJlZF91dGlsaXRpZXMgPSBkLmdldFZhcignU0FOSVRZX1JFUVVJUkVEX1VUSUxJVElFUycsIFRydWUpCiAKQEAgLTc0Niw3ICs3NDIsNyBAQAogICAgICAgICAgICAgc3RhdHVzLmFkZHJlc3VsdCgiWW91IGhhdmUgYSAzMi1iaXQgbGliYywgYnV0IG5vIDMyLWJpdCBoZWFkZXJzLiAgWW91IG11c3QgaW5zdGFsbCB0aGUgMzItYml0IGxpYmMgaGVhZGVycy5cbiIpCiAKICAgICBiYnBhdGhzID0gZC5nZXRWYXIoJ0JCUEFUSCcsIFRydWUpLnNwbGl0KCI6IikKLSAgICBpZiAoIi4iIGluIGJicGF0aHMgb3IgIi4vIiBpbiBiYnBhdGhzIG9yICIiIGluIGJicGF0aHMpIGFuZCBub3Qgc3RhdHVzLnJlcGFyc2U6CisgICAgaWYgKCIuIiBpbiBiYnBhdGhzIG9yICIuLyIgaW4gYmJwYXRocyBvciAiIiBpbiBiYnBhdGhzKToKICAgICAgICAgc3RhdHVzLmFkZHJlc3VsdCgiQkJQQVRIIHJlZmVyZW5jZXMgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LCBlaXRoZXIgdGhyb3VnaCAiICAgIFwKICAgICAgICAgICAgICAgICAiYW4gZW1wdHkgZW50cnksIGEgJy4vJyBvciBhICcuJy5cblx0IFRoaXMgaXMgdW5zYWZlIGFuZCBtZWFucyB5b3VyICJcCiAgICAgICAgICAgICAgICAgImxheWVyIGNvbmZpZ3VyYXRpb24gaXMgYWRkaW5nIGVtcHR5IGVsZW1lbnRzIHRvIEJCUEFUSC5cblx0ICJcCkBAIC03NjUsNiArNzYxLDE2IEBACiAgICAgIyBDaGVjayB0aGF0IFRNUERJUiBpc24ndCBsb2NhdGVkIG9uIG5mcwogICAgIHN0YXR1cy5hZGRyZXN1bHQoY2hlY2tfbm90X25mcyh0bXBkaXIsICJUTVBESVIiKSkKIAorZGVmIHNhbml0eV9jaGVja19sb2NhbGUoZCk6CisgICAgIiIiCisgICAgQ3VycmVudGx5IGJpdGJha2Ugc3dpdGNoZXMgbG9jYWxlIHRvIGVuX1VTLlVURi04IHNvIGNoZWNrIHRoYXQgdGhpcyBsb2NhbGUgYWN0dWFsbHkgZXhpc3RzLgorICAgICIiIgorICAgIGltcG9ydCBsb2NhbGUKKyAgICB0cnk6CisgICAgICAgIGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX0FMTCwgImVuX1VTLlVURi04IikKKyAgICBleGNlcHQgbG9jYWxlLkVycm9yOgorICAgICAgICByYWlzZV9zYW5pdHlfZXJyb3IoIllvdSBzeXN0ZW0gbmVlZHMgdG8gc3VwcG9ydCB0aGUgZW5fVVMuVVRGLTggbG9jYWxlLiIsIGQpCisKIGRlZiBjaGVja19zYW5pdHlfZXZlcnlidWlsZChzdGF0dXMsIGQpOgogICAgIGltcG9ydCBvcywgc3RhdAogICAgICMgU2FuaXR5IHRlc3RzIHdoaWNoIHRlc3QgdGhlIHVzZXJzIGVudmlyb25tZW50IHNvIG5lZWQgdG8gcnVuIGF0IGVhY2ggYnVpbGQgKG9yIGFyZSBzbyBjaGVhcApAQCAtNzg0LDcgKzc5MCw3IEBACiAgICAgaWYgKExvb3NlVmVyc2lvbihiYi5fX3ZlcnNpb25fXykgPCBMb29zZVZlcnNpb24obWludmVyc2lvbikpOgogICAgICAgICBzdGF0dXMuYWRkcmVzdWx0KCdCaXRiYWtlIHZlcnNpb24gJXMgaXMgcmVxdWlyZWQgYW5kIHZlcnNpb24gJXMgd2FzIGZvdW5kXG4nICUgKG1pbnZlcnNpb24sIGJiLl9fdmVyc2lvbl9fKSkKIAotICAgIHNhbml0eV9jaGVja19jb25mZmlsZXMoc3RhdHVzLCBkKQorICAgIHNhbml0eV9jaGVja19sb2NhbGUoZCkKIAogICAgIHBhdGhzID0gZC5nZXRWYXIoJ1BBVEgnLCBUcnVlKS5zcGxpdCgiOiIpCiAgICAgaWYgIi4iIGluIHBhdGhzIG9yICIuLyIgaW4gcGF0aHMgb3IgIiIgaW4gcGF0aHM6CkBAIC04MjksOCArODM1LDggQEAKIAogICAgIGNoZWNrX3N1cHBvcnRlZF9kaXN0cm8oZCkKIAotICAgIG9tYXNrID0gb3MudW1hc2soMDIyKQotICAgIGlmIG9tYXNrICYgMDc1NToKKyAgICBvbWFzayA9IG9zLnVtYXNrKDBvMDIyKQorICAgIGlmIG9tYXNrICYgMG83NTU6CiAgICAgICAgIHN0YXR1cy5hZGRyZXN1bHQoIlBsZWFzZSB1c2UgYSB1bWFzayB3aGljaCBhbGxvd3MgYStyeCBhbmQgdStyd3hcbiIpCiAgICAgb3MudW1hc2sob21hc2spCiAKQEAgLTg5MSwxMyArODk3LDEzIEBACiAgICAgICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICAgICAgaWYgbWlycm9yLnN0YXJ0c3dpdGgoJ2ZpbGU6Ly8nKToKLSAgICAgICAgICAgICAgICBpbXBvcnQgdXJscGFyc2UKLSAgICAgICAgICAgICAgICBjaGVja19zeW1saW5rKHVybHBhcnNlLnVybHBhcnNlKG1pcnJvcikucGF0aCwgZCkKKyAgICAgICAgICAgICAgICBpbXBvcnQgdXJsbGliCisgICAgICAgICAgICAgICAgY2hlY2tfc3ltbGluayh1cmxsaWIucGFyc2UudXJscGFyc2UobWlycm9yKS5wYXRoLCBkKQogICAgICAgICAgICAgICAgICMgU1NUQVRFX01JUlJPUiBlbmRzIHdpdGggYSAvUEFUSCBzdHJpbmcKICAgICAgICAgICAgICAgICBpZiBtaXJyb3IuZW5kc3dpdGgoJy9QQVRIJyk6CiAgICAgICAgICAgICAgICAgICAgICMgcmVtb3ZlIC9QQVRIJCBmcm9tIFNTVEFURV9NSVJST1IgdG8gZ2V0IGEgd29ya2luZwogICAgICAgICAgICAgICAgICAgICAjIGJhc2UgZGlyZWN0b3J5IHBhdGgKLSAgICAgICAgICAgICAgICAgICAgbWlycm9yX2Jhc2UgPSB1cmxwYXJzZS51cmxwYXJzZShtaXJyb3JbOi0xKmxlbignL1BBVEgnKV0pLnBhdGgKKyAgICAgICAgICAgICAgICAgICAgbWlycm9yX2Jhc2UgPSB1cmxsaWIucGFyc2UudXJscGFyc2UobWlycm9yWzotMSpsZW4oJy9QQVRIJyldKS5wYXRoCiAgICAgICAgICAgICAgICAgICAgIGNoZWNrX3N5bWxpbmsobWlycm9yX2Jhc2UsIGQpCiAKICAgICAjIENoZWNrIHRoYXQgVE1QRElSIGhhc24ndCBjaGFuZ2VkIGxvY2F0aW9uIHNpbmNlIHRoZSBsYXN0IHRpbWUgd2Ugd2VyZSBydW4KQEAgLTkyMCwxNyArOTI2LDE3IEBACiAgICAgICAgIHdpdGggb3BlbihjaGVja2ZpbGUsICJ3IikgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUodG1wZGlyKQogCi0gICAgIyBDaGVjayAvYmluL3NoIGxpbmtzIHRvIGRhc2ggb3IgYmFzaAotICAgIHJlYWxfc2ggPSBvcy5wYXRoLnJlYWxwYXRoKCcvYmluL3NoJykKLSAgICBpZiBub3QgcmVhbF9zaC5lbmRzd2l0aCgnL2Rhc2gnKSBhbmQgbm90IHJlYWxfc2guZW5kc3dpdGgoJy9iYXNoJyk6Ci0gICAgICAgIHN0YXR1cy5hZGRyZXN1bHQoIkVycm9yLCAvYmluL3NoIGxpbmtzIHRvICVzLCBtdXN0IGJlIGRhc2ggb3IgYmFzaFxuIiAlIHJlYWxfc2gpCisgICAgIyBJZiAvYmluL3NoIGlzIGEgc3ltbGluaywgY2hlY2sgdGhhdCBpdCBwb2ludHMgdG8gZGFzaCBvciBiYXNoCisgICAgaWYgb3MucGF0aC5pc2xpbmsoJy9iaW4vc2gnKToKKyAgICAgICAgcmVhbF9zaCA9IG9zLnBhdGgucmVhbHBhdGgoJy9iaW4vc2gnKQorICAgICAgICBpZiBub3QgcmVhbF9zaC5lbmRzd2l0aCgnL2Rhc2gnKSBhbmQgbm90IHJlYWxfc2guZW5kc3dpdGgoJy9iYXNoJyk6CisgICAgICAgICAgICBzdGF0dXMuYWRkcmVzdWx0KCJFcnJvciwgL2Jpbi9zaCBsaW5rcyB0byAlcywgbXVzdCBiZSBkYXNoIG9yIGJhc2hcbiIgJSByZWFsX3NoKQogCiBkZWYgY2hlY2tfc2FuaXR5KHNhbml0eV9kYXRhKToKICAgICBjbGFzcyBTYW5pdHlTdGF0dXMob2JqZWN0KToKICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICAgICAgc2VsZi5tZXNzYWdlcyA9ICIiCiAgICAgICAgICAgICBzZWxmLm5ldHdvcmtfZXJyb3IgPSBGYWxzZQotICAgICAgICAgICAgc2VsZi5yZXBhcnNlID0gRmFsc2UKIAogICAgICAgICBkZWYgYWRkcmVzdWx0KHNlbGYsIG1lc3NhZ2UpOgogICAgICAgICAgICAgaWYgbWVzc2FnZToKQEAgLTk4Niw3ICs5OTIsNiBAQAogCiAgICAgaWYgc3RhdHVzLm1lc3NhZ2VzICE9ICIiOgogICAgICAgICByYWlzZV9zYW5pdHlfZXJyb3Ioc2FuaXR5X2RhdGEuZXhwYW5kKHN0YXR1cy5tZXNzYWdlcyksIHNhbml0eV9kYXRhLCBzdGF0dXMubmV0d29ya19lcnJvcikKLSAgICByZXR1cm4gc3RhdHVzLnJlcGFyc2UKIAogIyBDcmVhdGUgYSBjb3B5IG9mIHRoZSBkYXRhc3RvcmUgYW5kIGZpbmFsaXNlIGl0IHRvIGVuc3VyZSBhcHBlbmRzIGFuZCAKICMgb3ZlcnJpZGVzIGFyZSBzZXQgLSB0aGUgZGF0YXN0b3JlIGhhcyB5ZXQgdG8gYmUgZmluYWxpc2VkIGF0IENvbmZpZ1BhcnNlZApAQCAtOTk1LDE1ICsxMDAwLDIwIEBACiAgICAgc2FuaXR5X2RhdGEuZmluYWxpemUoKQogICAgIHJldHVybiBzYW5pdHlfZGF0YQogCithZGRoYW5kbGVyIGNvbmZpZ19yZXBhcnNlX2V2ZW50aGFuZGxlcgorY29uZmlnX3JlcGFyc2VfZXZlbnRoYW5kbGVyW2V2ZW50bWFza10gPSAiYmIuZXZlbnQuQ29uZmlnUGFyc2VkIgorcHl0aG9uIGNvbmZpZ19yZXBhcnNlX2V2ZW50aGFuZGxlcigpIHsKKyAgICBzYW5pdHlfY2hlY2tfY29uZmZpbGVzKGUuZGF0YSkKK30KKwogYWRkaGFuZGxlciBjaGVja19zYW5pdHlfZXZlbnRoYW5kbGVyCiBjaGVja19zYW5pdHlfZXZlbnRoYW5kbGVyW2V2ZW50bWFza10gPSAiYmIuZXZlbnQuU2FuaXR5Q2hlY2sgYmIuZXZlbnQuTmV0d29ya1Rlc3QiCiBweXRob24gY2hlY2tfc2FuaXR5X2V2ZW50aGFuZGxlcigpIHsKICAgICBpZiBiYi5ldmVudC5nZXROYW1lKGUpID09ICJTYW5pdHlDaGVjayI6CiAgICAgICAgIHNhbml0eV9kYXRhID0gY29weV9kYXRhKGUpCisgICAgICAgIGNoZWNrX3Nhbml0eShzYW5pdHlfZGF0YSkKICAgICAgICAgaWYgZS5nZW5lcmF0ZWV2ZW50czoKICAgICAgICAgICAgIHNhbml0eV9kYXRhLnNldFZhcigiU0FOSVRZX1VTRV9FVkVOVFMiLCAiMSIpCi0gICAgICAgIHJlcGFyc2UgPSBjaGVja19zYW5pdHkoc2FuaXR5X2RhdGEpCi0gICAgICAgIGUuZGF0YS5zZXRWYXIoIkJCX0lOVkFMSURDT05GIiwgcmVwYXJzZSkKICAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5TYW5pdHlDaGVja1Bhc3NlZCgpLCBlLmRhdGEpCiAgICAgZWxpZiBiYi5ldmVudC5nZXROYW1lKGUpID09ICJOZXR3b3JrVGVzdCI6CiAgICAgICAgIHNhbml0eV9kYXRhID0gY29weV9kYXRhKGUpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Njb25zLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Njb25zLmJiY2xhc3MKaW5kZXggMTU3OWIwNS4uYjlhZTE5ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zY29ucy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2NvbnMuYmJjbGFzcwpAQCAtMTAsNyArMTAsNyBAQAogfQogCiBzY29uc19kb19pbnN0YWxsKCkgewotICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vc2NvbnMgUFJFRklYPSR7RH0ke3ByZWZpeH0gcHJlZml4PSR7RH0ke3ByZWZpeH0gaW5zdGFsbCAke0VYVFJBX09FU0NPTlN9fHwgXAorICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vc2NvbnMgaW5zdGFsbF9yb290PSR7RH0ke3ByZWZpeH0gUFJFRklYPSR7cHJlZml4fSBwcmVmaXg9JHtwcmVmaXh9ICR7RVhUUkFfT0VTQ09OU30gaW5zdGFsbCB8fCBcCiAgICAgICAgIGRpZSAic2NvbnMgaW5zdGFsbCBleGVjdXRpb24gZmFpbGVkLiIKIH0KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zZGwuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2RsLmJiY2xhc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjMzEyODguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zZGwuYmJjbGFzcworKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotIwotIyAoQykgTWljaGFlbCAnTWlja2V5JyBMYXVlciA8bWlja2V5QFZhbmlsbGUuZGU+Ci0jCi0KLURFUEVORFMgKz0gInZpcnR1YWwvbGlic2RsIGxpYnNkbC1taXhlciBsaWJzZGwtaW1hZ2UiCi1TRUNUSU9OID0gIngxMS9nYW1lcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2lwLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3NpcC5iYmNsYXNzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZWQyYTEzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2lwLmJiY2xhc3MKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0jIEJ1aWxkIENsYXNzIGZvciBTaXAgYmFzZWQgUHl0aG9uIEJpbmRpbmdzCi0jIChDKSBNaWNoYWVsICdNaWNrZXknIExhdWVyIDxtaWNrZXlAVmFuaWxsZS5kZT4KLSMKLVNUQUdJTkdfU0lQRElSID89ICIke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L3NpcCIKLQotREVQRU5EUyAgPSsgInNpcC1uYXRpdmUiCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uLXNpcCIKLQotIyBkZWZhdWx0IHN0dWZmLCBkbyBub3QgdW5jb21tZW50Ci0jIEVYVFJBX1NJUFRBR1MgPSAiLXRXU19YMTEgLXRRdF80XzNfMCIKLQotIyBkb19nZW5lcmF0ZSBpcyBiZWZvcmUgZG9fY29uZmlndXJlIHNvIGVuc3VyZSB0aGF0IHNpcF9uYXRpdmUgaXMgcG9wdWxhdGVkIGluIHN5c3Jvb3QgYmVmb3JlIGV4ZWN1dGluZyBpdAotZG9fZ2VuZXJhdGVbZGVwZW5kc10gKz0gInNpcC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKLQotc2lwX2RvX2dlbmVyYXRlKCkgewotCWlmIFsgLXogIiR7U0lQX01PRFVMRVN9IiBdOyB0aGVuIAotCQlNT0RVTEVTPSJgbHMgc2lwLyptb2Quc2lwYCIKLQllbHNlCi0JCU1PRFVMRVM9IiR7U0lQX01PRFVMRVN9IgotCWZpCi0KLQlpZiBbIC16ICIkTU9EVUxFUyIgXTsgdGhlbgotCQlkaWUgIlNJUF9NT0RVTEVTIG5vdCBzZXQgYW5kIG5vIG1vZHVsZXMgZm91bmQgaW4gJFBXRCIKLSAgICAgICAgZWxzZQotCQliYm5vdGUgInVzaW5nIG1vZHVsZXMgJyR7U0lQX01PRFVMRVN9JyBhbmQgdGFncyAnJHtFWFRSQV9TSVBUQUdTfSciCi0JZmkKLQotCWlmIFsgLXogIiR7RVhUUkFfU0lQVEFHU30iIF07IHRoZW4KLQkJZGllICJFWFRSQV9TSVBUQUdTIG5lZWRzIHRvIGJlIHNldCEiCi0JZWxzZQotCQlTSVBUQUdTPSIke0VYVFJBX1NJUFRBR1N9IgotCWZpCi0KLQlpZiBbICEgLXogIiR7U0lQX0ZFQVRVUkVTfSIgXTsgdGhlbgotCQlGRUFUVVJFUz0iLXogJHtTSVBfRkVBVFVSRVN9IgotCQliYm5vdGUgInNpcCBmZWF0dXJlIGZpbGU6ICR7U0lQX0ZFQVRVUkVTfSIKLQlmaQotCi0JZm9yIG1vZHVsZSBpbiAkTU9EVUxFUwotCWRvCi0JCWluc3RhbGwgLWQgJHttb2R1bGV9LwotCQllY2hvICJjYWxsaW5nICdzaXA0IC1JIHNpcCAtSSAke1NUQUdJTkdfU0lQRElSfSAke1NJUFRBR1N9ICR7RkVBVFVSRVN9IC1jICR7bW9kdWxlfSAtYiAke21vZHVsZX0vJHttb2R1bGV9LnByby5pbiBzaXAvJHttb2R1bGV9LyR7bW9kdWxlfW1vZC5zaXAnIgotCQlzaXA0IC1JICR7U1RBR0lOR19TSVBESVJ9IC1JIHNpcCAke1NJUFRBR1N9ICR7RkVBVFVSRVN9IC1jICR7bW9kdWxlfSAtYiAke21vZHVsZX0vJHttb2R1bGV9LnNiZiBcCi0JCQlzaXAvJHttb2R1bGV9LyR7bW9kdWxlfW1vZC5zaXAgfHwgZGllICJFcnJvciBjYWxsaW5nIHNpcCBvbiAke21vZHVsZX0iCi0JCXNlZCAtZSAncyx0YXJnZXQsVEFSR0VULCcgLWUgJ3Msc291cmNlcyxTT1VSQ0VTLCcgLWUgJ3MsaGVhZGVycyxIRUFERVJTLCcgXAotCQkJJHttb2R1bGV9LyR7bW9kdWxlfS5zYmYgfCBzZWQgcywibW9jX0hFQURFUlMgPSIsIkhFQURFUlMgKz0iLCBcCi0JCQk+JHttb2R1bGV9LyR7bW9kdWxlfS5wcm8KLQkJZWNobyAiVEVNUExBVEU9bGliIiA+PiR7bW9kdWxlfS8ke21vZHVsZX0ucHJvCi0JCVsgIiR7bW9kdWxlfSIgPSAicXQiIF0gCQkmJiBlY2hvICIiIAkJPj4ke21vZHVsZX0vJHttb2R1bGV9LnBybwotCQlbICIke21vZHVsZX0iID0gInF0Y2FudmFzIiBdIAkmJiBlY2hvICIiCQk+PiR7bW9kdWxlfS8ke21vZHVsZX0ucHJvCi0JCVsgIiR7bW9kdWxlfSIgPSAicXR0YWJsZSIgXSAJJiYgZWNobyAiIgkJPj4ke21vZHVsZX0vJHttb2R1bGV9LnBybwotCQlbICIke21vZHVsZX0iID0gInF3dCIgXSAJJiYgZWNobyAiIgkJPj4ke21vZHVsZX0vJHttb2R1bGV9LnBybwotCQlbICIke21vZHVsZX0iID0gInF0cGUiIF0gICAgICAgICYmIGVjaG8gIiIJCT4+JHttb2R1bGV9LyR7bW9kdWxlfS5wcm8KLQkJWyAiJHttb2R1bGV9IiA9ICJxdHBlIiBdICAgICAgICAmJiBlY2hvICJMSUJTKz0tbHFwZSIJPj4ke21vZHVsZX0vJHttb2R1bGV9LnBybwotCQl0cnVlCi0JZG9uZQotfQotCi1FWFBPUlRfRlVOQ1RJT05TIGRvX2dlbmVyYXRlCi0KLWFkZHRhc2sgZ2VuZXJhdGUgYWZ0ZXIgZG9fdW5wYWNrIGRvX3BhdGNoIGJlZm9yZSBkb19jb25maWd1cmUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2l0ZWluZm8uYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2l0ZWluZm8uYmJjbGFzcwppbmRleCA1MDE0MWEzLi42ZWNhMDA0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3NpdGVpbmZvLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zaXRlaW5mby5iYmNsYXNzCkBAIC0zNiw3ICszNiwxMSBAQAogICAgICAgICAibWlwcyI6ICJlbmRpYW4tYmlnIGJpdC0zMiBtaXBzLWNvbW1vbiIsCiAgICAgICAgICJtaXBzNjQiOiAiZW5kaWFuLWJpZyBiaXQtNjQgbWlwcy1jb21tb24iLAogICAgICAgICAibWlwczY0ZWwiOiAiZW5kaWFuLWxpdHRsZSBiaXQtNjQgbWlwcy1jb21tb24iLAorICAgICAgICAibWlwc2lzYTY0cjYiOiAiZW5kaWFuLWJpZyBiaXQtNjQgbWlwcy1jb21tb24iLAorICAgICAgICAibWlwc2lzYTY0cjZlbCI6ICJlbmRpYW4tbGl0dGxlIGJpdC02NCBtaXBzLWNvbW1vbiIsCiAgICAgICAgICJtaXBzZWwiOiAiZW5kaWFuLWxpdHRsZSBiaXQtMzIgbWlwcy1jb21tb24iLAorICAgICAgICAibWlwc2lzYTMycjYiOiAiZW5kaWFuLWJpZyBiaXQtMzIgbWlwcy1jb21tb24iLAorICAgICAgICAibWlwc2lzYTMycjZlbCI6ICJlbmRpYW4tbGl0dGxlIGJpdC0zMiBtaXBzLWNvbW1vbiIsCiAgICAgICAgICJwb3dlcnBjIjogImVuZGlhbi1iaWcgYml0LTMyIHBvd2VycGMtY29tbW9uIiwKICAgICAgICAgIm5pb3MyIjogImVuZGlhbi1saXR0bGUgYml0LTMyIG5pb3MyLWNvbW1vbiIsCiAgICAgICAgICJwb3dlcnBjNjQiOiAiZW5kaWFuLWJpZyBiaXQtNjQgcG93ZXJwYy1jb21tb24iLApAQCAtMTA3LDYgKzExMSwxNCBAQAogICAgICAgICAieDg2XzY0LW1pbmd3MzIiOiAiYml0LTY0IiwKICAgICB9CiAKKyAgICAjIEFkZCBpbiBhbnkgZXh0cmEgdXNlciBzdXBwbGllZCBkYXRhIHdoaWNoIG1heSBjb21lIGZyb20gYSBCU1AgbGF5ZXIsIHJlbW92aW5nIHRoZQorICAgICMgbmVlZCB0byBhbHdheXMgY2hhbmdlIHRoaXMgY2xhc3MgZGlyZWN0bHkKKyAgICBleHRyYV9zaXRlaW5mbyA9IChkLmdldFZhcigiU0lURUlORk9fRVhUUkFfREFUQUZVTkNTIiwgVHJ1ZSkgb3IgIiIpLnNwbGl0KCkKKyAgICBmb3IgbSBpbiBleHRyYV9zaXRlaW5mbzoKKyAgICAgICAgY2FsbCA9IG0gKyAiKGFyY2hpbmZvLCBvc2luZm8sIHRhcmdldGluZm8sIGQpIgorICAgICAgICBsb2NzID0geyAiYXJjaGluZm8iIDogYXJjaGluZm8sICJvc2luZm8iIDogb3NpbmZvLCAidGFyZ2V0aW5mbyIgOiB0YXJnZXRpbmZvLCAiZCIgOiBkfQorICAgICAgICBhcmNoaW5mbywgb3NpbmZvLCB0YXJnZXRpbmZvID0gYmIudXRpbHMuYmV0dGVyX2V2YWwoY2FsbCwgbG9jcykKKwogICAgIGhvc3RhcmNoID0gZC5nZXRWYXIoIkhPU1RfQVJDSCIsIFRydWUpCiAgICAgaG9zdG9zID0gZC5nZXRWYXIoIkhPU1RfT1MiLCBUcnVlKQogICAgIHRhcmdldCA9ICIlcy0lcyIgJSAoaG9zdGFyY2gsIGhvc3RvcykKQEAgLTE0NSw3ICsxNTcsNyBAQAogICAgICAgICBiYi5mYXRhbCgiUGxlYXNlIGFkZCB5b3VyIGFyY2hpdGVjdHVyZSB0byBzaXRlaW5mby5iYmNsYXNzIikKIH0KIAotZGVmIHNpdGVpbmZvX2dldF9maWxlcyhkLCBub19jYWNoZSA9IEZhbHNlKToKK2RlZiBzaXRlaW5mb19nZXRfZmlsZXMoZCwgYWNsb2NhbGNhY2hlID0gRmFsc2UpOgogICAgIHNpdGVkYXRhID0gc2l0ZWluZm9fZGF0YShkKQogICAgIHNpdGVmaWxlcyA9ICIiCiAgICAgZm9yIHBhdGggaW4gZC5nZXRWYXIoIkJCUEFUSCIsIFRydWUpLnNwbGl0KCI6Iik6CkBAIC0xNTQsMTEgKzE2NiwxNyBAQAogICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZmlsZW5hbWUpOgogICAgICAgICAgICAgICAgIHNpdGVmaWxlcyArPSBmaWxlbmFtZSArICIgIgogCi0gICAgaWYgbm9fY2FjaGU6IHJldHVybiBzaXRlZmlsZXMKKyAgICBpZiBub3QgYWNsb2NhbGNhY2hlOgorICAgICAgICByZXR1cm4gc2l0ZWZpbGVzCiAKLSAgICAjIE5vdyBjaGVjayBmb3Igc2l0ZWNvbmZpZyBjYWNoZSBmaWxlcwotICAgICMgVXNlIHRoZSBmaWxlcyBjb3BpZWQgdG8gdGhlIGFjbG9jYWwgY2FjaGUgZ2VuZXJhdGVkIGJ5IGF1dG90b29scy5iYmNsYXNzCi0gICAgIyB0byBhdm9pZCByYWNlcworICAgICMgTm93IGNoZWNrIGZvciBzaXRlY29uZmlnIGNhY2hlIGZpbGVzIGluIHRoZSBkaXJlY3Rvcnkgc2V0dXAgYnkgYXV0b3Rvb2xzLmJiY2xhc3MgdG8KKyAgICAjIGF2b2lkIHJhY2VzLgorICAgICMKKyAgICAjIEFDTE9DQUxESVIgbWF5IG9yIG1heSBub3QgZXhpc3Qgc28gY2FjaGUgc2hvdWxkIG9ubHkgYmUgc2V0IHRvIFRydWUgZnJvbSBhdXRvdG9vbHMuYmJjbGFzcworICAgICMgYWZ0ZXIgZmlsZXMgaGF2ZSBiZWVuIGNvcGllZCBpbnRvIHRoaXMgbG9jYXRpb24uIFRvIGRvIG90aGVyd2lzZSByaXNrcyBwYXJzaW5nL3NpZ25hdHVyZQorICAgICMgaXNzdWVzIGFuZCB0aGUgZGlyZWN0b3J5IGJlaW5nIGNyZWF0ZWQvcmVtb3ZlZCB3aGlsc3QgdGhpcyBjb2RlIGV4ZWN1dGVzLiBUaGlzIGNhbiBoYXBwZW4KKyAgICAjIHdoZW4gYSBtdWx0aWxpYiByZWNpcGUgaXMgcGFyc2VkIGFsb25nIHdpdGggaXRzIGJhc2UgdmFyaWFudCB3aGljaCBtYXkgYmUgcnVubmluZyBhdCB0aGUgdGltZQorICAgICMgY2F1c2luZyByYXJlIGJ1dCBuYXN0eSBmYWlsdXJlcwogICAgIHBhdGhfc2l0ZWNvbmZpZyA9IGQuZ2V0VmFyKCdBQ0xPQ0FMRElSJywgVHJ1ZSkKICAgICBpZiBwYXRoX3NpdGVjb25maWcgYW5kIG9zLnBhdGguaXNkaXIocGF0aF9zaXRlY29uZmlnKToKICAgICAgICAgZm9yIGkgaW4gb3MubGlzdGRpcihwYXRoX3NpdGVjb25maWcpOgpAQCAtMTY2LDcgKzE4NCw2IEBACiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKHBhdGhfc2l0ZWNvbmZpZywgaSkKICAgICAgICAgICAgIHNpdGVmaWxlcyArPSBmaWxlbmFtZSArICIgIgotCiAgICAgcmV0dXJuIHNpdGVmaWxlcwogCiAjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3NwZHguYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3BkeC5iYmNsYXNzCmluZGV4IDBjOTI3NjUuLjg5Mzk0ZDMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3BkeC5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3BkeC5iYmNsYXNzCkBAIC0yMTksMTQgKzIxOSwxMyBAQAogZGVmIHJ1bl9mb3Nzb2xvZ3koZm9zc19jb21tYW5kLCBmdWxsX3NwZHgpOgogICAgIGltcG9ydCBzdHJpbmcsIHJlCiAgICAgaW1wb3J0IHN1YnByb2Nlc3MKLSAgICAKLSAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihmb3NzX2NvbW1hbmQuc3BsaXQoKSwKLSAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKLSAgICBmb3NzX291dHB1dCwgZm9zc19lcnJvciA9IHAuY29tbXVuaWNhdGUoKQotICAgIGlmIHAucmV0dXJuY29kZSAhPSAwOgorCisgICAgdHJ5OgorICAgICAgICBmb3NzX291dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGZvc3NfY29tbWFuZC5zcGxpdCgpLAorICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkuZGVjb2RlKCd1dGYtOCcpCisgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6CiAgICAgICAgIHJldHVybiBOb25lCiAKLSAgICBmb3NzX291dHB1dCA9IHVuaWNvZGUoZm9zc19vdXRwdXQsICJ1dGYtOCIpCiAgICAgZm9zc19vdXRwdXQgPSBzdHJpbmcucmVwbGFjZShmb3NzX291dHB1dCwgJ1xyJywgJycpCiAKICAgICAjIFBhY2thZ2UgaW5mbwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zc3RhdGUuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3N0YXRlLmJiY2xhc3MKaW5kZXggOGM2MjMyNy4uMTcyMzg0YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zc3RhdGUuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3NzdGF0ZS5iYmNsYXNzCkBAIC0xNyw2ICsxNyw5IEBACiBTU1RBVEVfRVhUUkFQQVRIV0lMRENBUkQgPSAiIgogU1NUQVRFX1BBVEhTUEVDICAgPSAiJHtTU1RBVEVfRElSfS8ke1NTVEFURV9FWFRSQVBBVEhXSUxEQ0FSRH0qLyR7U1NUQVRFX1BLR1NQRUN9IgogCisjIGV4cGxpY2l0bHkgbWFrZSBQViB0byBkZXBlbmQgb24gZXZhbHVhdGVkIHZhbHVlIG9mIFBWIHZhcmlhYmxlCitQVlt2YXJkZXB2YWx1ZV0gPSAiJHtQVn0iCisKICMgV2UgZG9uJ3Qgd2FudCB0aGUgc3N0YXRlIHRvIGRlcGVuZCBvbiB0aGluZ3MgbGlrZSB0aGUgZGlzdHJvIHN0cmluZwogIyBvZiB0aGUgc3lzdGVtLCB3ZSBsZXQgdGhlIHNzdGF0ZSBwYXRocyB0YWtlIGNhcmUgb2YgdGhpcy4KIFNTVEFURV9FWFRSQVBBVEhbdmFyZGVwdmFsdWVdID0gIiIKQEAgLTI3LDYgKzMwLDggQEAKIFNTVEFURV9EVVBXSElURUxJU1QgKz0gIiR7U1RBR0lOR19FVENESVJfTkFUSVZFfS9zZ21sICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vc2dtbCIKICMgQXJjaGl2ZSB0aGUgc291cmNlcyBmb3IgbWFueSBhcmNoaXRlY3R1cmVzIGluIG9uZSBkZXBsb3kgZm9sZGVyCiBTU1RBVEVfRFVQV0hJVEVMSVNUICs9ICIke0RFUExPWV9ESVJfU1JDfSIKKyMgSWdub3JlIG92ZXJsYXBwaW5nIFJFQURNRQorU1NUQVRFX0RVUFdISVRFTElTVCArPSAiJHtERVBMT1lfRElSfS9zZGsvUkVBRE1FXy1fRE9fTk9UX0RFTEVURV9GSUxFU19JTl9USElTX0RJUkVDVE9SWS50eHQiCiAKIFNTVEFURV9TQ0FOX0ZJTEVTID89ICIqLmxhICotY29uZmlnICpfY29uZmlnIgogU1NUQVRFX1NDQU5fQ01EID89ICdmaW5kICR7U1NUQVRFX0JVSUxERElSfSBcKCAtbmFtZSAiJHtAIlwiIC1vIC1uYW1lIFwiIi5qb2luKGQuZ2V0VmFyKCJTU1RBVEVfU0NBTl9GSUxFUyIsIFRydWUpLnNwbGl0KCkpfSIgXCkgLXR5cGUgZicKQEAgLTk1LDcgKzEwMCw3IEBACiAgICAgICAgIHNjYW5fY21kID0gImdyZXAgLUlybCAke1NUQUdJTkdfRElSfSAke1NTVEFURV9CVUlMRERJUn0iCiAgICAgICAgIGQuc2V0VmFyKCdTU1RBVEVfU0NBTl9DTUQnLCBzY2FuX2NtZCkKIAotICAgIHVuaXF1ZV90YXNrcyA9IHNldCgoZC5nZXRWYXIoJ1NTVEFURVRBU0tTJywgVHJ1ZSkgb3IgIiIpLnNwbGl0KCkpCisgICAgdW5pcXVlX3Rhc2tzID0gc29ydGVkKHNldCgoZC5nZXRWYXIoJ1NTVEFURVRBU0tTJywgVHJ1ZSkgb3IgIiIpLnNwbGl0KCkpKQogICAgIGQuc2V0VmFyKCdTU1RBVEVUQVNLUycsICIgIi5qb2luKHVuaXF1ZV90YXNrcykpCiAgICAgZm9yIHRhc2sgaW4gdW5pcXVlX3Rhc2tzOgogICAgICAgICBkLnByZXBlbmRWYXJGbGFnKHRhc2ssICdwcmVmdW5jcycsICJzc3RhdGVfdGFza19wcmVmdW5jICIpCkBAIC0xNzAsNiArMTc1LDggQEAKICAgICBpZiBvcy5hY2Nlc3MobWFuaWZlc3QsIG9zLlJfT0spOgogICAgICAgICBiYi5mYXRhbCgiUGFja2FnZSBhbHJlYWR5IHN0YWdlZCAoJXMpPyEiICUgbWFuaWZlc3QpCiAKKyAgICBkLnNldFZhcigiU1NUQVRFX0lOU1RfUE9TVFJNIiwgbWFuaWZlc3QgKyAiLnBvc3RybSIpCisKICAgICBsb2NrcyA9IFtdCiAgICAgZm9yIGxvY2sgaW4gc3NbJ2xvY2tmaWxlcy1zaGFyZWQnXToKICAgICAgICAgbG9ja3MuYXBwZW5kKGJiLnV0aWxzLmxvY2tmaWxlKGxvY2ssIFRydWUpKQpAQCAtMjAwLDYgKzIwNyw3IEBACiAgICAgICAgICAgICBmID0gb3MucGF0aC5ub3JtcGF0aChmKQogICAgICAgICAgICAgcmVhbG1hdGNoID0gVHJ1ZQogICAgICAgICAgICAgZm9yIHcgaW4gd2hpdGVsaXN0OgorICAgICAgICAgICAgICAgIHcgPSBvcy5wYXRoLm5vcm1wYXRoKHcpCiAgICAgICAgICAgICAgICAgaWYgZi5zdGFydHN3aXRoKHcpOgogICAgICAgICAgICAgICAgICAgICByZWFsbWF0Y2ggPSBGYWxzZQogICAgICAgICAgICAgICAgICAgICBicmVhawpAQCAtNDAyLDYgKzQxMCwxMyBAQAogICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIHBhc3MKIAorICAgIHBvc3RybSA9IG1hbmlmZXN0ICsgIi5wb3N0cm0iCisgICAgaWYgb3MucGF0aC5leGlzdHMobWFuaWZlc3QgKyAiLnBvc3RybSIpOgorICAgICAgICBpbXBvcnQgc3VicHJvY2VzcworICAgICAgICBvcy5jaG1vZChwb3N0cm0sIDBvNzU1KQorICAgICAgICBzdWJwcm9jZXNzLmNhbGwocG9zdHJtLCBzaGVsbD1UcnVlKQorICAgICAgICBvZS5wYXRoLnJlbW92ZShwb3N0cm0pCisKICAgICBvZS5wYXRoLnJlbW92ZShtYW5pZmVzdCkKIAogZGVmIHNzdGF0ZV9jbGVhbihzcywgZCk6CkBAIC01NjMsNiArNTc4LDggQEAKICAgICBmb3Igc3RhdGUgaW4gc3NbJ2RpcnMnXToKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHN0YXRlWzFdKToKICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmIGQuZ2V0VmFyKCdTU1RBVEVfU0tJUF9DUkVBVElPTicsIFRydWUpID09ICcxJzoKKyAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIHNyY2Jhc2UgPSBzdGF0ZVswXS5yc3RyaXAoIi8iKS5yc3BsaXQoJy8nLCAxKVswXQogICAgICAgICBmb3Igd2Fsa3Jvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoc3RhdGVbMV0pOgogICAgICAgICAgICAgZm9yIGZpbGUgaW4gZmlsZXM6CkBAIC02MjMsMTAgKzY0MCwxMCBAQAogCiAgICAgIyBUcnkgYSBmZXRjaCBmcm9tIHRoZSBzc3RhdGUgbWlycm9yLCBpZiBpdCBmYWlscyBqdXN0IHJldHVybiBhbmQKICAgICAjIHdlIHdpbGwgYnVpbGQgdGhlIHBhY2thZ2UKLSAgICB1cmlzID0gWydmaWxlOi8vezB9Jy5mb3JtYXQoc3N0YXRlZmV0Y2gpLAotICAgICAgICAgICAgJ2ZpbGU6Ly97MH0uc2lnaW5mbycuZm9ybWF0KHNzdGF0ZWZldGNoKV0KKyAgICB1cmlzID0gWydmaWxlOi8vezB9O2Rvd25sb2FkZmlsZW5hbWU9ezB9Jy5mb3JtYXQoc3N0YXRlZmV0Y2gpLAorICAgICAgICAgICAgJ2ZpbGU6Ly97MH0uc2lnaW5mbztkb3dubG9hZGZpbGVuYW1lPXswfS5zaWdpbmZvJy5mb3JtYXQoc3N0YXRlZmV0Y2gpXQogICAgIGlmIGJiLnV0aWxzLnRvX2Jvb2xlYW4oZC5nZXRWYXIoIlNTVEFURV9WRVJJRllfU0lHIiwgVHJ1ZSksIEZhbHNlKToKLSAgICAgICAgdXJpcyArPSBbJ2ZpbGU6Ly97MH0uc2lnJy5mb3JtYXQoc3N0YXRlZmV0Y2gpXQorICAgICAgICB1cmlzICs9IFsnZmlsZTovL3swfS5zaWc7ZG93bmxvYWRmaWxlbmFtZT17MH0uc2lnJy5mb3JtYXQoc3N0YXRlZmV0Y2gpXQogCiAgICAgZm9yIHNyY3VyaSBpbiB1cmlzOgogICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCdTUkNfVVJJJywgc3JjdXJpKQpAQCAtNjM0LDEyICs2NTEsNiBAQAogICAgICAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoMi5GZXRjaChbc3JjdXJpXSwgbG9jYWxkYXRhLCBjYWNoZT1GYWxzZSkKICAgICAgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQogCi0gICAgICAgICAgICAjIE5lZWQgdG8gb3B0aW1pc2UgdGhpcywgaWYgdXNpbmcgZmlsZTovLyB1cmxzLCB0aGUgZmV0Y2hlciBqdXN0IGNoYW5nZXMgdGhlIGxvY2FsIHBhdGgKLSAgICAgICAgICAgICMgRm9yIG5vdyB3b3JrIGFyb3VuZCBieSBzeW1saW5raW5nCi0gICAgICAgICAgICBsb2NhbHBhdGggPSBiYi5kYXRhLmV4cGFuZChmZXRjaGVyLmxvY2FscGF0aChzcmN1cmkpLCBsb2NhbGRhdGEpCi0gICAgICAgICAgICBpZiBsb2NhbHBhdGggIT0gc3N0YXRlcGtnIGFuZCBvcy5wYXRoLmV4aXN0cyhsb2NhbHBhdGgpIGFuZCBub3Qgb3MucGF0aC5leGlzdHMoc3N0YXRlcGtnKToKLSAgICAgICAgICAgICAgICBvcy5zeW1saW5rKGxvY2FscGF0aCwgc3N0YXRlcGtnKQotCiAgICAgICAgIGV4Y2VwdCBiYi5mZXRjaDIuQkJGZXRjaEV4Y2VwdGlvbjoKICAgICAgICAgICAgIGJyZWFrCiAKQEAgLTY0Nyw3ICs2NTgsNyBAQAogICAgIHNoYXJlZF9zdGF0ZSA9IHNzdGF0ZV9zdGF0ZV9mcm9tdmFycyhkKQogICAgIGFjY2VsZXJhdGUgPSBzc3RhdGVfaW5zdGFsbHBrZyhzaGFyZWRfc3RhdGUsIGQpCiAgICAgaWYgbm90IGFjY2VsZXJhdGU6Ci0gICAgICAgIHJhaXNlIGJiLmJ1aWxkLkZ1bmNGYWlsZWQoIk5vIHN1aXRhYmxlIHN0YWdpbmcgcGFja2FnZSBmb3VuZCIpCisgICAgICAgIGJiLmZhdGFsKCJObyBzdWl0YWJsZSBzdGFnaW5nIHBhY2thZ2UgZm91bmQiKQogCiBweXRob24gc3N0YXRlX3Rhc2tfcHJlZnVuYyAoKSB7CiAgICAgc2hhcmVkX3N0YXRlID0gc3N0YXRlX3N0YXRlX2Zyb212YXJzKGQpCkBAIC02NjEsOSArNjcyLDkgQEAKICAgICBzc3RhdGVfaW5zdGFsbChzaGFyZWRfc3RhdGUsIGQpCiAgICAgZm9yIGludGVyY2VwdCBpbiBzaGFyZWRfc3RhdGVbJ2ludGVyY2VwdGZ1bmNzJ106CiAgICAgICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYyhpbnRlcmNlcHQsIGQsIChkLmdldFZhcigiV09SS0RJUiIsIFRydWUpLCkpCi0gICAgb21hc2sgPSBvcy51bWFzaygwMDIpCi0gICAgaWYgb21hc2sgIT0gMDAyOgotICAgICAgIGJiLm5vdGUoIlVzaW5nIHVtYXNrIDAwMiAobm90ICUwbykgZm9yIHNzdGF0ZSBwYWNrYWdpbmciICUgb21hc2spCisgICAgb21hc2sgPSBvcy51bWFzaygwbzAwMikKKyAgICBpZiBvbWFzayAhPSAwbzAwMjoKKyAgICAgICBiYi5ub3RlKCJVc2luZyB1bWFzayAwbzAwMiAobm90ICUwbykgZm9yIHNzdGF0ZSBwYWNrYWdpbmciICUgb21hc2spCiAgICAgc3N0YXRlX3BhY2thZ2Uoc2hhcmVkX3N0YXRlLCBkKQogICAgIG9zLnVtYXNrKG9tYXNrKQogfQpAQCAtNzI1LDYgKzczNiw3IEBACiAKICAgICByZXQgPSBbXQogICAgIG1pc3NlZCA9IFtdCisgICAgbWlzc2luZyA9IFtdCiAgICAgZXh0ZW5zaW9uID0gIi50Z3oiCiAgICAgaWYgc2lnaW5mbzoKICAgICAgICAgZXh0ZW5zaW9uID0gZXh0ZW5zaW9uICsgIi5zaWdpbmZvIgpAQCAtNzQ2LDYgKzc1OCwxOCBAQAogCiAgICAgICAgIHJldHVybiBzcGVjLCBleHRyYXBhdGgsIHRuYW1lCiAKKyAgICBkZWYgc3N0YXRlX3BrZ190b19wbihwa2csIGQpOgorICAgICAgICAiIiIKKyAgICAgICAgVHJhbnNsYXRlIGFuIHNzdGF0ZSBmaWxlbmFtZSB0byBhIFBOIHZhbHVlIGJ5IHdheSBvZiBTU1RBVEVfUEtHU1BFQy4gVGhpcyBpcyBzbGlnaHRseSBoYWNreSBidXQKKyAgICAgICAgd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gZXZlcnl0aGluZyBpbiB0aGlzIGNvbnRleHQuCisgICAgICAgICIiIgorICAgICAgICBwa2dzcGVjID0gZC5nZXRWYXIoJ1NTVEFURV9QS0dTUEVDJywgRmFsc2UpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlkeCA9IHBrZ3NwZWMuc3BsaXQoJzonKS5pbmRleCgnJHtQTn0nKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIGJiLmZhdGFsKCdVbmFibGUgdG8gZmluZCAke1BOfSBpbiBTU1RBVEVfUEtHU1BFQycpCisgICAgICAgIHJldHVybiBwa2cuc3BsaXQoJzonKVtpZHhdCisKIAogICAgIGZvciB0YXNrIGluIHJhbmdlKGxlbihzcV9mbikpOgogCkBAIC03ODAsNiArODA0LDggQEAKICAgICAgICAgaWYgbG9jYWxkYXRhLmdldFZhcignQkJfTk9fTkVUV09SSycsIFRydWUpID09ICIxIiBhbmQgbG9jYWxkYXRhLmdldFZhcignU1NUQVRFX01JUlJPUl9BTExPV19ORVRXT1JLJywgVHJ1ZSkgPT0gIjEiOgogICAgICAgICAgICAgbG9jYWxkYXRhLmRlbFZhcignQkJfTk9fTkVUV09SSycpCiAKKyAgICAgICAgd2hpdGVsaXN0ID0gYmIucnVucXVldWUuZ2V0X3NldHNjZW5lX2VuZm9yY2Vfd2hpdGVsaXN0KGQpCisKICAgICAgICAgZnJvbSBiYi5mZXRjaDIgaW1wb3J0IEZldGNoQ29ubmVjdGlvbkNhY2hlCiAgICAgICAgIGRlZiBjaGVja3N0YXR1c19pbml0KHRocmVhZF93b3JrZXIpOgogICAgICAgICAgICAgdGhyZWFkX3dvcmtlci5jb25uZWN0aW9uX2NhY2hlID0gRmV0Y2hDb25uZWN0aW9uQ2FjaGUoKQpAQCAtODA2LDcgKzgzMiwxNCBAQAogICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgIG1pc3NlZC5hcHBlbmQodGFzaykKICAgICAgICAgICAgICAgICBiYi5kZWJ1ZygyLCAiU1N0YXRlOiBVbnN1Y2Nlc3NmdWwgZmV0Y2ggdGVzdCBmb3IgJXMiICUgc3JjdXJpKQotICAgICAgICAgICAgICAgIHBhc3MgICAgIAorICAgICAgICAgICAgICAgIGlmIHdoaXRlbGlzdDoKKyAgICAgICAgICAgICAgICAgICAgcG4gPSBzc3RhdGVfcGtnX3RvX3BuKHNzdGF0ZWZpbGUsIGQpCisgICAgICAgICAgICAgICAgICAgIHRhc2tuYW1lID0gc3FfdGFza1t0YXNrXQorICAgICAgICAgICAgICAgICAgICBpZiBub3QgYmIucnVucXVldWUuY2hlY2tfc2V0c2NlbmVfZW5mb3JjZV93aGl0ZWxpc3QocG4sIHRhc2tuYW1lLCB3aGl0ZWxpc3QpOgorICAgICAgICAgICAgICAgICAgICAgICAgbWlzc2luZy5hcHBlbmQodGFzaykKKyAgICAgICAgICAgICAgICAgICAgICAgIGJiLmVycm9yKCdTc3RhdGUgYXJ0aWZhY3QgdW5hdmFpbGFibGUgZm9yICVzLiVzJyAlIChwbiwgdGFza25hbWUpKQorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuUHJvY2Vzc1Byb2dyZXNzKCJDaGVja2luZyBzc3RhdGUgbWlycm9yIG9iamVjdCBhdmFpbGFiaWxpdHkiLCBsZW4odGFza2xpc3QpIC0gdGhyZWFkX3dvcmtlci50YXNrcy5xc2l6ZSgpKSwgZCkKIAogICAgICAgICB0YXNrbGlzdCA9IFtdCiAgICAgICAgIGZvciB0YXNrIGluIHJhbmdlKGxlbihzcV9mbikpOgpAQCAtODE3LDE2ICs4NTAsMjMgQEAKICAgICAgICAgICAgIHRhc2tsaXN0LmFwcGVuZCgodGFzaywgc3N0YXRlZmlsZSkpCiAKICAgICAgICAgaWYgdGFza2xpc3Q6Ci0gICAgICAgICAgICBiYi5ub3RlKCJDaGVja2luZyBzc3RhdGUgbWlycm9yIG9iamVjdCBhdmFpbGFiaWxpdHkgKGZvciAlcyBvYmplY3RzKSIgJSBsZW4odGFza2xpc3QpKQorICAgICAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5Qcm9jZXNzU3RhcnRlZCgiQ2hlY2tpbmcgc3N0YXRlIG1pcnJvciBvYmplY3QgYXZhaWxhYmlsaXR5IiwgbGVuKHRhc2tsaXN0KSksIGQpCisKICAgICAgICAgICAgIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKICAgICAgICAgICAgIG5wcm9jID0gbWluKG11bHRpcHJvY2Vzc2luZy5jcHVfY291bnQoKSwgbGVuKHRhc2tsaXN0KSkKIAorICAgICAgICAgICAgYmIuZXZlbnQuZW5hYmxlX3RocmVhZGxvY2soKQogICAgICAgICAgICAgcG9vbCA9IG9lLnV0aWxzLlRocmVhZGVkUG9vbChucHJvYywgbGVuKHRhc2tsaXN0KSwKICAgICAgICAgICAgICAgICAgICAgd29ya2VyX2luaXQ9Y2hlY2tzdGF0dXNfaW5pdCwgd29ya2VyX2VuZD1jaGVja3N0YXR1c19lbmQpCiAgICAgICAgICAgICBmb3IgdCBpbiB0YXNrbGlzdDoKICAgICAgICAgICAgICAgICBwb29sLmFkZF90YXNrKGNoZWNrc3RhdHVzLCB0KQogICAgICAgICAgICAgcG9vbC5zdGFydCgpCiAgICAgICAgICAgICBwb29sLndhaXRfY29tcGxldGlvbigpCisgICAgICAgICAgICBiYi5ldmVudC5kaXNhYmxlX3RocmVhZGxvY2soKQorCisgICAgICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50LlByb2Nlc3NGaW5pc2hlZCgiQ2hlY2tpbmcgc3N0YXRlIG1pcnJvciBvYmplY3QgYXZhaWxhYmlsaXR5IiksIGQpCisgICAgICAgICAgICBpZiB3aGl0ZWxpc3QgYW5kIG1pc3Npbmc6CisgICAgICAgICAgICAgICAgYmIuZmF0YWwoJ1JlcXVpcmVkIGFydGlmYWN0cyB3ZXJlIHVuYXZhaWxhYmxlIC0gZXhpdGluZycpCiAKICAgICBpbmhlcml0bGlzdCA9IGQuZ2V0VmFyKCJJTkhFUklUIiwgVHJ1ZSkKICAgICBpZiAidG9hc3RlciIgaW4gaW5oZXJpdGxpc3Q6CkBAIC05MDUsNiArOTQ1LDkgQEAKICAgICAgICAgICAgICMgTm90aGluZyBuZWVkIGRlcGVuZCBvbiBsaWJjLWluaXRpYWwvZ2NjLWNyb3NzLWluaXRpYWwKICAgICAgICAgICAgIGlmICItaW5pdGlhbCIgaW4gdGFza2RlcGVuZGVlc1t0YXNrXVswXToKICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgIyBGb3IgbWV0YS1leHRzZGstdG9vbGNoYWluIHdlIHdhbnQgYWxsIHN5c3Jvb3QgZGVwZW5kZW5jaWVzCisgICAgICAgICAgICBpZiB0YXNrZGVwZW5kZWVzW2RlcF1bMF0gPT0gJ21ldGEtZXh0c2RrLXRvb2xjaGFpbic6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICAjIE5hdGl2ZS9Dcm9zcyBwb3B1bGF0ZV9zeXNyb290IG5lZWQgdGhlaXIgZGVwZW5kZW5jaWVzCiAgICAgICAgICAgICBpZiBpc05hdGl2ZUNyb3NzKHRhc2tkZXBlbmRlZXNbdGFza11bMF0pIGFuZCBpc05hdGl2ZUNyb3NzKHRhc2tkZXBlbmRlZXNbZGVwXVswXSk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCkBAIC05ODIsNiArMTAyNSw4IEBACiAgICAgICAgIGZvciByIGluIHRvcmVtb3ZlOgogICAgICAgICAgICAgKHN0YW1wLCBtYW5pZmVzdCwgd29ya2RpcikgPSByLnNwbGl0KCkKICAgICAgICAgICAgIGZvciBtIGluIGdsb2IuZ2xvYihtYW5pZmVzdCArICIuKiIpOgorICAgICAgICAgICAgICAgIGlmIG0uZW5kc3dpdGgoIi5wb3N0cm0iKToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBzc3RhdGVfY2xlYW5fbWFuaWZlc3QobSwgZCkKICAgICAgICAgICAgIGJiLnV0aWxzLnJlbW92ZShzdGFtcCArICIqIikKICAgICAgICAgICAgIGlmIHJlbW92ZXdvcmtkaXI6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3N0YWdpbmcuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3RhZ2luZy5iYmNsYXNzCmluZGV4IGJjNWRmYTguLmEwYjA5YTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3RhZ2luZy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3RhZ2luZy5iYmNsYXNzCkBAIC0xLDMgKzEsMzcgQEAKKyMgVGhlc2UgZGlyZWN0b3JpZXMgd2lsbCBiZSBzdGFnZWQgaW4gdGhlIHN5c3Jvb3QKK1NZU1JPT1RfRElSUyA9ICIgXAorICAgICR7aW5jbHVkZWRpcn0gXAorICAgICR7bGliZGlyfSBcCisgICAgJHtiYXNlX2xpYmRpcn0gXAorICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0gXAorICAgICR7ZGF0YWRpcn0gXAorIgorCisjIFRoZXNlIGRpcmVjdG9yaWVzIGFyZSBhbHNvIHN0YWdlZCBpbiB0aGUgc3lzcm9vdCB3aGVuIHRoZXkgY29udGFpbiBmaWxlcyB0aGF0CisjIGFyZSB1c2FibGUgb24gdGhlIGJ1aWxkIHN5c3RlbQorU1lTUk9PVF9ESVJTX05BVElWRSA9ICIgXAorICAgICR7YmluZGlyfSBcCisgICAgJHtzYmluZGlyfSBcCisgICAgJHtiYXNlX2JpbmRpcn0gXAorICAgICR7YmFzZV9zYmluZGlyfSBcCisgICAgJHtsaWJleGVjZGlyfSBcCisgICAgJHtzeXNjb25mZGlyfSBcCisgICAgJHtsb2NhbHN0YXRlZGlyfSBcCisiCitTWVNST09UX0RJUlNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgJHtTWVNST09UX0RJUlNfTkFUSVZFfSIKK1NZU1JPT1RfRElSU19hcHBlbmRfY2xhc3MtY3Jvc3MgPSAiICR7U1lTUk9PVF9ESVJTX05BVElWRX0iCitTWVNST09UX0RJUlNfYXBwZW5kX2NsYXNzLWNyb3Nzc2RrID0gIiAke1NZU1JPT1RfRElSU19OQVRJVkV9IgorCisjIFRoZXNlIGRpcmVjdG9yaWVzIHdpbGwgbm90IGJlIHN0YWdlZCBpbiB0aGUgc3lzcm9vdAorU1lTUk9PVF9ESVJTX0JMQUNLTElTVCA9ICIgXAorICAgICR7bWFuZGlyfSBcCisgICAgJHtkb2NkaXJ9IFwKKyAgICAke2luZm9kaXJ9IFwKKyAgICAke2RhdGFkaXJ9L2xvY2FsZSBcCisgICAgJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMgXAorICAgICR7ZGF0YWRpcn0vZm9udHMgXAorICAgICR7ZGF0YWRpcn0vcGl4bWFwcyBcCisiCiAKIHN5c3Jvb3Rfc3RhZ2VfZGlyKCkgewogCXNyYz0iJDEiCkBAIC0xNCw0MyArNDgsMTggQEAKIAkpCiB9CiAKLXN5c3Jvb3Rfc3RhZ2VfbGliZGlyKCkgewotCXNyYz0iJDEiCi0JZGVzdD0iJDIiCi0KLQlzeXNyb290X3N0YWdlX2RpciAkc3JjICRkZXN0Ci19Ci0KIHN5c3Jvb3Rfc3RhZ2VfZGlycygpIHsKIAlmcm9tPSIkMSIKIAl0bz0iJDIiCiAKLQlzeXNyb290X3N0YWdlX2RpciAkZnJvbSR7aW5jbHVkZWRpcn0gJHRvJHtpbmNsdWRlZGlyfQotCWlmIFsgIiR7QlVJTERfU1lTfSIgPSAiJHtIT1NUX1NZU30iIF07IHRoZW4KLQkJc3lzcm9vdF9zdGFnZV9kaXIgJGZyb20ke2JpbmRpcn0gJHRvJHtiaW5kaXJ9Ci0JCXN5c3Jvb3Rfc3RhZ2VfZGlyICRmcm9tJHtzYmluZGlyfSAkdG8ke3NiaW5kaXJ9Ci0JCXN5c3Jvb3Rfc3RhZ2VfZGlyICRmcm9tJHtiYXNlX2JpbmRpcn0gJHRvJHtiYXNlX2JpbmRpcn0KLQkJc3lzcm9vdF9zdGFnZV9kaXIgJGZyb20ke2Jhc2Vfc2JpbmRpcn0gJHRvJHtiYXNlX3NiaW5kaXJ9Ci0JCXN5c3Jvb3Rfc3RhZ2VfZGlyICRmcm9tJHtsaWJleGVjZGlyfSAkdG8ke2xpYmV4ZWNkaXJ9Ci0JCXN5c3Jvb3Rfc3RhZ2VfZGlyICRmcm9tJHtzeXNjb25mZGlyfSAkdG8ke3N5c2NvbmZkaXJ9Ci0JCXN5c3Jvb3Rfc3RhZ2VfZGlyICRmcm9tJHtsb2NhbHN0YXRlZGlyfSAkdG8ke2xvY2Fsc3RhdGVkaXJ9Ci0JZmkKLQlpZiBbIC1kICRmcm9tJHtsaWJkaXJ9IF0KLQl0aGVuCi0JCXN5c3Jvb3Rfc3RhZ2VfbGliZGlyICRmcm9tJHtsaWJkaXJ9ICR0byR7bGliZGlyfQotCWZpCi0JaWYgWyAtZCAkZnJvbSR7YmFzZV9saWJkaXJ9IF0KLQl0aGVuCi0JCXN5c3Jvb3Rfc3RhZ2VfbGliZGlyICRmcm9tJHtiYXNlX2xpYmRpcn0gJHRvJHtiYXNlX2xpYmRpcn0KLQlmaQotCWlmIFsgLWQgJGZyb20ke25vbmFyY2hfYmFzZV9saWJkaXJ9IF0KLQl0aGVuCi0JCXN5c3Jvb3Rfc3RhZ2VfbGliZGlyICRmcm9tJHtub25hcmNoX2Jhc2VfbGliZGlyfSAkdG8ke25vbmFyY2hfYmFzZV9saWJkaXJ9Ci0JZmkKLQlzeXNyb290X3N0YWdlX2RpciAkZnJvbSR7ZGF0YWRpcn0gJHRvJHtkYXRhZGlyfQotCSMgV2UgZG9uJ3QgY2FyZSBhYm91dCBkb2NzL2luZm8vbWFucGFnZXMvbG9jYWxlcwotCXJtIC1yZiAkdG8ke21hbmRpcn0vICR0byR7ZG9jZGlyfS8gJHRvJHtpbmZvZGlyfS8gJHt0b30ke2RhdGFkaXJ9L2xvY2FsZS8KLQlybSAtcmYgJHRvJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMvICR0byR7ZGF0YWRpcn0vZm9udHMvICR0byR7ZGF0YWRpcn0vcGl4bWFwcy8KKwlmb3IgZGlyIGluICR7U1lTUk9PVF9ESVJTfTsgZG8KKwkJc3lzcm9vdF9zdGFnZV9kaXIgIiRmcm9tJGRpciIgIiR0byRkaXIiCisJZG9uZQorCisJIyBSZW1vdmUgZGlyZWN0b3JpZXMgd2UgZG8gbm90IGNhcmUgYWJvdXQKKwlmb3IgZGlyIGluICR7U1lTUk9PVF9ESVJTX0JMQUNLTElTVH07IGRvCisJCXJtIC1yZiAiJHRvJGRpciIKKwlkb25lCiB9CiAKIHN5c3Jvb3Rfc3RhZ2VfYWxsKCkgewpAQCAtMTcyLDEzICsxODEsMjYgQEAKIGRvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gInN5c3Jvb3RfY2xlYW5zc3RhdGUiCiAKIAorQkJfU0VUU0NFTkVfVkVSSUZZX0ZVTkNUSU9OMiA9ICJzeXNyb290X2NoZWNraGFzaGVzMiIKKworZGVmIHN5c3Jvb3RfY2hlY2toYXNoZXMyKGNvdmVyZWQsIHRhc2tuYW1lcywgZm5zLCBkLCBpbnZhbGlkdGFza3MpOgorICAgIHByb2JsZW1zID0gc2V0KCkKKyAgICBjb25maWd1cmVmbnMgPSBzZXQoKQorICAgIGZvciB0aWQgaW4gaW52YWxpZHRhc2tzOgorICAgICAgICBpZiB0YXNrbmFtZXNbdGlkXSA9PSAiZG9fY29uZmlndXJlIiBhbmQgdGlkIG5vdCBpbiBjb3ZlcmVkOgorICAgICAgICAgICAgY29uZmlndXJlZm5zLmFkZChmbnNbdGlkXSkKKyAgICBmb3IgdGlkIGluIGNvdmVyZWQ6CisgICAgICAgIGlmIHRhc2tuYW1lc1t0aWRdID09ICJkb19wb3B1bGF0ZV9zeXNyb290IiBhbmQgZm5zW3RpZF0gaW4gY29uZmlndXJlZm5zOgorICAgICAgICAgICAgcHJvYmxlbXMuYWRkKHRpZCkKKyAgICByZXR1cm4gcHJvYmxlbXMKKwogQkJfU0VUU0NFTkVfVkVSSUZZX0ZVTkNUSU9OID0gInN5c3Jvb3RfY2hlY2toYXNoZXMiCiAKIGRlZiBzeXNyb290X2NoZWNraGFzaGVzKGNvdmVyZWQsIHRhc2tuYW1lcywgZm5pZHMsIGZucywgZCwgaW52YWxpZHRhc2tzID0gTm9uZSk6CiAgICAgcHJvYmxlbXMgPSBzZXQoKQogICAgIGNvbmZpZ3VyZWZuaWRzID0gc2V0KCkKICAgICBpZiBub3QgaW52YWxpZHRhc2tzOgotICAgICAgICBpbnZhbGlkdGFza3MgPSB4cmFuZ2UobGVuKHRhc2tuYW1lcykpCisgICAgICAgIGludmFsaWR0YXNrcyA9IHJhbmdlKGxlbih0YXNrbmFtZXMpKQogICAgIGZvciB0YXNrIGluIGludmFsaWR0YXNrczoKICAgICAgICAgaWYgdGFza25hbWVzW3Rhc2tdID09ICJkb19jb25maWd1cmUiIGFuZCB0YXNrIG5vdCBpbiBjb3ZlcmVkOgogICAgICAgICAgICAgY29uZmlndXJlZm5pZHMuYWRkKGZuaWRzW3Rhc2tdKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zeXNsaW51eC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zeXNsaW51eC5iYmNsYXNzCmluZGV4IDRmY2IwYzUuLjc3NzhmZDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3lzbGludXguYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3N5c2xpbnV4LmJiY2xhc3MKQEAgLTMwLDYgKzMwLDcgQEAKIFNZU0xJTlVYX1BST01QVCA/PSAiMCIKIFNZU0xJTlVYX1RJTUVPVVQgPz0gIjUwIgogQVVUT19TWVNMSU5VWE1FTlUgPz0gIjEiCitTWVNMSU5VWF9BTExPV09QVElPTlMgPz0gIjEiCiBTWVNMSU5VWF9ST09UID89ICIke1JPT1R9IgogU1lTTElOVVhfQ0ZHX1ZNICA/PSAiJHtTfS9zeXNsaW51eF92bS5jZmciCiBTWVNMSU5VWF9DRkdfTElWRSA/PSAiJHtTfS9zeXNsaW51eF9saXZlLmNmZyIKQEAgLTcxLDcgKzcyLDcgQEAKIH0KIAogc3lzbGludXhfaGRkaW1nX2luc3RhbGwoKSB7Ci0Jc3lzbGludXggJHtERVBMT1lfRElSX0lNQUdFfS8ke0lNQUdFX05BTUV9LmhkZGltZworCXN5c2xpbnV4ICR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9LmhkZGltZwogfQogCiBzeXNsaW51eF9oZGRkaXJlY3RfaW5zdGFsbCgpIHsKQEAgLTk5LDEyICsxMDAsMTIgQEAKIAogICAgIGNmaWxlID0gZC5nZXRWYXIoJ1NZU0xJTlVYX0NGRycsIFRydWUpCiAgICAgaWYgbm90IGNmaWxlOgotICAgICAgICByYWlzZSBiYi5idWlsZC5GdW5jRmFpbGVkKCdVbmFibGUgdG8gcmVhZCBTWVNMSU5VWF9DRkcnKQorICAgICAgICBiYi5mYXRhbCgnVW5hYmxlIHRvIHJlYWQgU1lTTElOVVhfQ0ZHJykKIAogICAgIHRyeToKLSAgICAgICAgY2ZnZmlsZSA9IGZpbGUoY2ZpbGUsICd3JykKKyAgICAgICAgY2ZnZmlsZSA9IG9wZW4oY2ZpbGUsICd3JykKICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgcmFpc2UgYmIuYnVpbGQuZnVuY0ZhaWxlZCgnVW5hYmxlIHRvIG9wZW4gJXMnICUgKGNmaWxlKSkKKyAgICAgICAgYmIuZmF0YWwoJ1VuYWJsZSB0byBvcGVuICVzJyAlIGNmaWxlKQogCiAgICAgY2ZnZmlsZS53cml0ZSgnIyBBdXRvbWF0aWNhbGx5IGNyZWF0ZWQgYnkgT0VcbicpCiAKQEAgLTExNCw3ICsxMTUsMTIgQEAKICAgICAgICAgZm9yIG9wdCBpbiBvcHRzLnNwbGl0KCc7Jyk6CiAgICAgICAgICAgICBjZmdmaWxlLndyaXRlKCclc1xuJyAlIG9wdCkKIAotICAgIGNmZ2ZpbGUud3JpdGUoJ0FMTE9XT1BUSU9OUyAxXG4nKTsKKyAgICBhbGxvd29wdGlvbnMgPSBkLmdldFZhcignU1lTTElOVVhfQUxMT1dPUFRJT05TJywgVHJ1ZSkKKyAgICBpZiBhbGxvd29wdGlvbnM6CisgICAgICAgIGNmZ2ZpbGUud3JpdGUoJ0FMTE9XT1BUSU9OUyAlc1xuJyAlIGFsbG93b3B0aW9ucykKKyAgICBlbHNlOgorICAgICAgICBjZmdmaWxlLndyaXRlKCdBTExPV09QVElPTlMgMVxuJykKKwogICAgIHN5c2xpbnV4X2RlZmF1bHRfY29uc29sZSA9IGQuZ2V0VmFyKCdTWVNMSU5VWF9ERUZBVUxUX0NPTlNPTEUnLCBUcnVlKQogICAgIHN5c2xpbnV4X3NlcmlhbF90dHkgPSBkLmdldFZhcignU1lTTElOVVhfU0VSSUFMX1RUWScsIFRydWUpCiAgICAgc3lzbGludXhfc2VyaWFsID0gZC5nZXRWYXIoJ1NZU0xJTlVYX1NFUklBTCcsIFRydWUpCkBAIC0xNTQsNyArMTYwLDcgQEAKIAogICAgICAgICBvdmVycmlkZXMgPSBsb2NhbGRhdGEuZ2V0VmFyKCdPVkVSUklERVMnLCBUcnVlKQogICAgICAgICBpZiBub3Qgb3ZlcnJpZGVzOgotICAgICAgICAgICAgcmFpc2UgYmIuYnVpbGQuRnVuY0ZhaWxlZCgnT1ZFUlJJREVTIG5vdCBkZWZpbmVkJykKKyAgICAgICAgICAgIGJiLmZhdGFsKCdPVkVSUklERVMgbm90IGRlZmluZWQnKQogCiAgICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoJ09WRVJSSURFUycsIGxhYmVsICsgJzonICsgb3ZlcnJpZGVzKQogICAgICAgICBiYi5kYXRhLnVwZGF0ZV9kYXRhKGxvY2FsZGF0YSkKQEAgLTE2Niw3ICsxNzIsNyBAQAogCiAgICAgICAgIHJvb3Q9IGQuZ2V0VmFyKCdTWVNMSU5VWF9ST09UJywgVHJ1ZSkKICAgICAgICAgaWYgbm90IHJvb3Q6Ci0gICAgICAgICAgICByYWlzZSBiYi5idWlsZC5GdW5jRmFpbGVkKCdTWVNMSU5VWF9ST09UIG5vdCBkZWZpbmVkJykKKyAgICAgICAgICAgIGJiLmZhdGFsKCdTWVNMSU5VWF9ST09UIG5vdCBkZWZpbmVkJykKIAogICAgICAgICBmb3IgYnR5cGUgaW4gYnR5cGVzOgogICAgICAgICAgICAgY2ZnZmlsZS53cml0ZSgnTEFCRUwgJXMlc1xuS0VSTkVMIC92bWxpbnV6XG4nICUgKGJ0eXBlWzBdLCBsYWJlbCkpCkBAIC0xOTAsMyArMTk2LDQgQEAKIAogICAgIGNmZ2ZpbGUuY2xvc2UoKQogfQorYnVpbGRfc3lzbGludXhfY2ZnW2RpcnNdID0gIiR7U30iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3N5c3RlbWQtYm9vdC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zeXN0ZW1kLWJvb3QuYmJjbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTI0NGM3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zeXN0ZW1kLWJvb3QuYmJjbGFzcwpAQCAtMCwwICsxLDEyNCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTYgSW50ZWwgQ29ycG9yYXRpb24KKyMKKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQpCisKKyMgc3lzdGVtZC1ib290LmJiY2xhc3MgLSBUaGUgInN5c3RlbWQtYm9vdCIgaXMgZXNzZW50aWFsbHkgdGhlIGd1bW1pYm9vdCBtZXJnZWQgaW50byBzeXN0ZW1kLgorIyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBvcmlnaW5hbCBzdGFuZGFsb25lIGd1bW1pYm9vdCBwcm9qZWN0IGlzIGRlYWQgd2l0aG91dCBhbnkgbW9yZQorIyAgICAgICAgICAgICAgICAgICAgICAgIG1haW50ZW5hbmNlLiBBcyBhIHN0YXJ0IHBvaW50LCB3ZSByZXBsYWNlIGFsbCBndW1taXRib290IG9jY3VycmVuY2VzCisjICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBzeXN0ZW1kLWJvb3QgaW4gZ3VtbWlib290LmJiY2xhc3MgdG8gaGF2ZSBhIGJhc2UgdmVyc2lvbiBvZiB0aGlzCisjICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtZC1ib290LmJiY2xhc3MuCisjCisjIFNldCBFRklfUFJPVklERVIgPSAic3lzdGVtZC1ib290IiB0byB1c2Ugc3lzdGVtZC1ib290IG9uIHlvdXIgbGl2ZSBpbWFnZXMgaW5zdGVhZCBvZiBncnViLWVmaQorIyAoaW1hZ2VzIGJ1aWx0IGJ5IGltYWdlLWxpdmUuYmJjbGFzcyBvciBpbWFnZS12bS5iYmNsYXNzKQorCitkb19ib290aW1nW2RlcGVuZHNdICs9ICIke01MUFJFRklYfXN5c3RlbWQtYm9vdDpkb19kZXBsb3kiCitkb19ib290ZGlyZWN0ZGlza1tkZXBlbmRzXSArPSAiJHtNTFBSRUZJWH1zeXN0ZW1kLWJvb3Q6ZG9fZGVwbG95IgorCitFRklESVIgPSAiL0VGSS9CT09UIgorCitTWVNURU1EX0JPT1RfQ0ZHID89ICIke1N9L2xvYWRlci5jb25mIgorU1lTVEVNRF9CT09UX0VOVFJJRVMgPz0gIiIKK1NZU1RFTURfQk9PVF9USU1FT1VUID89ICIxMCIKKworIyBOZWVkIFVVSUQgdXRpbGl0eSBjb2RlLgoraW5oZXJpdCBmcy11dWlkCisKK2VmaV9wb3B1bGF0ZSgpIHsKKyAgICAgICAgREVTVD0kMQorCisgICAgICAgIEVGSV9JTUFHRT0ic3lzdGVtZC1ib290aWEzMi5lZmkiCisgICAgICAgIERFU1RfRUZJX0lNQUdFPSJib290aWEzMi5lZmkiCisgICAgICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJ4ODZfNjQiIF07IHRoZW4KKyAgICAgICAgICAgIEVGSV9JTUFHRT0ic3lzdGVtZC1ib290eDY0LmVmaSIKKyAgICAgICAgICAgIERFU1RfRUZJX0lNQUdFPSJib290eDY0LmVmaSIKKyAgICAgICAgZmkKKworICAgICAgICBpbnN0YWxsIC1kICR7REVTVH0ke0VGSURJUn0KKyAgICAgICAgIyBzeXN0ZW1kLWJvb3QgcmVxdWlyZXMgdGhlc2UgcGF0aHMgZm9yIGNvbmZpZ3VyYXRpb24gZmlsZXMKKyAgICAgICAgIyB0aGV5IGFyZSBub3QgY3VzdG9taXphYmxlIHNvIG5vIHBvaW50IGluIG5ldyB2YXJzCisgICAgICAgIGluc3RhbGwgLWQgJHtERVNUfS9sb2FkZXIKKyAgICAgICAgaW5zdGFsbCAtZCAke0RFU1R9L2xvYWRlci9lbnRyaWVzCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke0RFUExPWV9ESVJfSU1BR0V9LyR7RUZJX0lNQUdFfSAke0RFU1R9JHtFRklESVJ9LyR7REVTVF9FRklfSU1BR0V9CisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1NZU1RFTURfQk9PVF9DRkd9ICR7REVTVH0vbG9hZGVyL2xvYWRlci5jb25mCisgICAgICAgIGZvciBpIGluICR7U1lTVEVNRF9CT09UX0VOVFJJRVN9OyBkbworICAgICAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7aX0gJHtERVNUfS9sb2FkZXIvZW50cmllcworICAgICAgICBkb25lCit9CisKK2VmaV9pc29fcG9wdWxhdGUoKSB7CisgICAgICAgIGlzb19kaXI9JDEKKyAgICAgICAgZWZpX3BvcHVsYXRlICRpc29fZGlyCisgICAgICAgIG1rZGlyIC1wICR7RUZJSU1HRElSfS8ke0VGSURJUn0KKyAgICAgICAgY3AgJGlzb19kaXIvJHtFRklESVJ9LyogJHtFRklJTUdESVJ9JHtFRklESVJ9CisgICAgICAgIGNwICRpc29fZGlyL3ZtbGludXogJHtFRklJTUdESVJ9CisgICAgICAgIEVGSVBBVEg9JChlY2hvICIke0VGSURJUn0iIHwgc2VkICdzL1wvL1xcL2cnKQorICAgICAgICBlY2hvICJmczA6JHtFRklQQVRIfVxcJHtERVNUX0VGSV9JTUFHRX0iID4gJHtFRklJTUdESVJ9L3N0YXJ0dXAubnNoCisgICAgICAgIGlmIFsgLWYgIiRpc29fZGlyL2luaXRyZCIgXSA7IHRoZW4KKyAgICAgICAgICAgIGNwICRpc29fZGlyL2luaXRyZCAke0VGSUlNR0RJUn0KKyAgICAgICAgZmkKK30KKworZWZpX2hkZGltZ19wb3B1bGF0ZSgpIHsKKyAgICAgICAgZWZpX3BvcHVsYXRlICQxCit9CisKK3B5dGhvbiBidWlsZF9lZmlfY2ZnKCkgeworICAgIHMgPSBkLmdldFZhcigiUyIsIFRydWUpCisgICAgbGFiZWxzID0gZC5nZXRWYXIoJ0xBQkVMUycsIFRydWUpCisgICAgaWYgbm90IGxhYmVsczoKKyAgICAgICAgYmIuZGVidWcoMSwgIkxBQkVMUyBub3QgZGVmaW5lZCwgbm90aGluZyB0byBkbyIpCisgICAgICAgIHJldHVybgorCisgICAgaWYgbGFiZWxzID09IFtdOgorICAgICAgICBiYi5kZWJ1ZygxLCAiTm8gbGFiZWxzLCBub3RoaW5nIHRvIGRvIikKKyAgICAgICAgcmV0dXJuCisKKyAgICBjZmlsZSA9IGQuZ2V0VmFyKCdTWVNURU1EX0JPT1RfQ0ZHJywgVHJ1ZSkKKyAgICB0cnk6CisgICAgICAgICBjZmdmaWxlID0gb3BlbihjZmlsZSwgJ3cnKQorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICBiYi5mYXRhbCgnVW5hYmxlIHRvIG9wZW4gJXMnICUgY2ZpbGUpCisKKyAgICBjZmdmaWxlLndyaXRlKCcjIEF1dG9tYXRpY2FsbHkgY3JlYXRlZCBieSBPRVxuJykKKyAgICBjZmdmaWxlLndyaXRlKCdkZWZhdWx0ICVzXG4nICUgKGxhYmVscy5zcGxpdCgpWzBdKSkKKyAgICB0aW1lb3V0ID0gZC5nZXRWYXIoJ1NZU1RFTURfQk9PVF9USU1FT1VUJywgVHJ1ZSkKKyAgICBpZiB0aW1lb3V0OgorICAgICAgICBjZmdmaWxlLndyaXRlKCd0aW1lb3V0ICVzXG4nICUgdGltZW91dCkKKyAgICBlbHNlOgorICAgICAgICBjZmdmaWxlLndyaXRlKCd0aW1lb3V0IDEwXG4nKQorICAgIGNmZ2ZpbGUuY2xvc2UoKQorCisgICAgZm9yIGxhYmVsIGluIGxhYmVscy5zcGxpdCgpOgorICAgICAgICBsb2NhbGRhdGEgPSBkLmNyZWF0ZUNvcHkoKQorCisgICAgICAgIG92ZXJyaWRlcyA9IGxvY2FsZGF0YS5nZXRWYXIoJ09WRVJSSURFUycsIFRydWUpCisgICAgICAgIGlmIG5vdCBvdmVycmlkZXM6CisgICAgICAgICAgICBiYi5mYXRhbCgnT1ZFUlJJREVTIG5vdCBkZWZpbmVkJykKKworICAgICAgICBlbnRyeWZpbGUgPSAiJXMvJXMuY29uZiIgJSAocywgbGFiZWwpCisgICAgICAgIGQuYXBwZW5kVmFyKCJTWVNURU1EX0JPT1RfRU5UUklFUyIsICIgIiArIGVudHJ5ZmlsZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZW50cnljZmcgPSBvcGVuKGVudHJ5ZmlsZSwgInciKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIGJiLmZhdGFsKCdVbmFibGUgdG8gb3BlbiAlcycgJSBlbnRyeWZpbGUpCisgICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoJ09WRVJSSURFUycsIGxhYmVsICsgJzonICsgb3ZlcnJpZGVzKQorICAgICAgICBiYi5kYXRhLnVwZGF0ZV9kYXRhKGxvY2FsZGF0YSkKKworICAgICAgICBlbnRyeWNmZy53cml0ZSgndGl0bGUgJXNcbicgJSBsYWJlbCkKKyAgICAgICAgZW50cnljZmcud3JpdGUoJ2xpbnV4IC92bWxpbnV6XG4nKQorCisgICAgICAgIGFwcGVuZCA9IGxvY2FsZGF0YS5nZXRWYXIoJ0FQUEVORCcsIFRydWUpCisgICAgICAgIGluaXRyZCA9IGxvY2FsZGF0YS5nZXRWYXIoJ0lOSVRSRCcsIFRydWUpCisKKyAgICAgICAgaWYgaW5pdHJkOgorICAgICAgICAgICAgZW50cnljZmcud3JpdGUoJ2luaXRyZCAvaW5pdHJkXG4nKQorICAgICAgICBsYiA9IGxhYmVsCisgICAgICAgIGlmIGxhYmVsID09ICJpbnN0YWxsIjoKKyAgICAgICAgICAgIGxiID0gImluc3RhbGwtZWZpIgorICAgICAgICBlbnRyeWNmZy53cml0ZSgnb3B0aW9ucyBMQUJFTD0lcyAnICUgbGIpCisgICAgICAgIGlmIGFwcGVuZDoKKyAgICAgICAgICAgIGFwcGVuZCA9IHJlcGxhY2Vfcm9vdGZzX3V1aWQoZCwgYXBwZW5kKQorICAgICAgICAgICAgZW50cnljZmcud3JpdGUoJyVzJyAlIGFwcGVuZCkKKyAgICAgICAgZW50cnljZmcud3JpdGUoJ1xuJykKKyAgICAgICAgZW50cnljZmcuY2xvc2UoKQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zeXN0ZW1kLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3N5c3RlbWQuYmJjbGFzcwppbmRleCBkYjc4NzNmLi5kNTZjNzYwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3N5c3RlbWQuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3N5c3RlbWQuYmJjbGFzcwpAQCAtMTY1LDggKzE2NSw3IEBACiAgICAgICAgICAgICAgICAgaWYgcGF0aF9mb3VuZCAhPSAnJzoKICAgICAgICAgICAgICAgICAgICAgc3lzdGVtZF9hZGRfZmlsZXNfYW5kX3BhcnNlKHBrZ19zeXN0ZW1kLCBwYXRoX2ZvdW5kLCBzZXJ2aWNlLCBrZXlzKQogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIGJiLmJ1aWxkLkZ1bmNGYWlsZWQoIlNZU1RFTURfU0VSVklDRV8lcyB2YWx1ZSAlcyBkb2VzIG5vdCBleGlzdCIgJSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAocGtnX3N5c3RlbWQsIHNlcnZpY2UpKQorICAgICAgICAgICAgICAgICAgICBiYi5mYXRhbCgiU1lTVEVNRF9TRVJWSUNFXyVzIHZhbHVlICVzIGRvZXMgbm90IGV4aXN0IiAlIChwa2dfc3lzdGVtZCwgc2VydmljZSkpCiAKICAgICAjIFJ1biBhbGwgbW9kaWZpY2F0aW9ucyBvbmNlIHdoZW4gY3JlYXRpbmcgcGFja2FnZQogICAgIGlmIG9zLnBhdGguZXhpc3RzKGQuZ2V0VmFyKCJEIiwgVHJ1ZSkpOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90ZXJtaW5hbC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90ZXJtaW5hbC5iYmNsYXNzCmluZGV4IDlmNGMyNGUuLmE5NGY3NTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdGVybWluYWwuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Rlcm1pbmFsLmJiY2xhc3MKQEAgLTI5LDcgKzI5LDcgQEAKICAgICAgICAgYmIuZGF0YS5lbWl0X2Z1bmMoY21kX2Z1bmMsIHNjcmlwdCwgZW52ZGF0YSkKICAgICAgICAgc2NyaXB0LndyaXRlKGNtZF9mdW5jKQogICAgICAgICBzY3JpcHQud3JpdGUoIlxuIikKLSAgICBvcy5jaG1vZChydW5maWxlLCAwNzU1KQorICAgIG9zLmNobW9kKHJ1bmZpbGUsIDBvNzU1KQogCiAgICAgcmV0dXJuIHJ1bmZpbGUKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90ZXN0ZXhwb3J0LmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Rlc3RleHBvcnQuYmJjbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTQ3MDIwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90ZXN0ZXhwb3J0LmJiY2xhc3MKQEAgLTAsMCArMSwyMDYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE2IEludGVsIENvcnBvcmF0aW9uCisjCisjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUKQorIworIworIyB0ZXN0ZXhwb3J0LmJiY2xhc3MgYWxsb3dzIHRvIGV4ZWN1dGUgcnVudGltZSB0ZXN0IG91dHNpZGUgT0UgZW52aXJvbm1lbnQuCisjIE1vc3Qgb2YgdGhlIHRlc3RzIGFyZSBjb21tYW5kcyBydW4gb24gdGFyZ2V0IGltYWdlIG92ZXIgc3NoLgorIyBUbyB1c2UgaXQgYWRkIHRlc3RleHBvcnQgdG8gZ2xvYmFsIGluaGVyaXQgYW5kIGNhbGwgeW91ciB0YXJnZXQgaW1hZ2Ugd2l0aCAtYyB0ZXN0ZXhwb3J0CisjIFlvdSBjYW4gdHJ5IGl0IG91dCBsaWtlIHRoaXM6CisjIC0gRmlyc3QgYnVpbGQgYW4gaW1hZ2UuIGkuZS4gY29yZS1pbWFnZS1zYXRvCisjIC0gQWRkIElOSEVSSVQgKz0gInRlc3RleHBvcnQiIGluIGxvY2FsLmNvbmYKKyMgLSBUaGVuIGJpdGJha2UgY29yZS1pbWFnZS1zYXRvIC1jIHRlc3RleHBvcnQuIFRoYXQgd2lsbCBnZW5lcmF0ZSB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZQorIyAgIHRvIGV4ZWN1dGUgdGhlIHJ1bnRpbWUgdGVzdHMgdXNpbmcgcnVuZXhwb3J0ZWQucHkuCisjCisjIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIFRFU1RfU1VJVEVTIGNoZWNrIHRlc3RpbWFnZSBjbGFzcy4KKworVEVTVF9MT0dfRElSID89ICIke1dPUktESVJ9L3Rlc3RleHBvcnQiCitURVNUX0VYUE9SVF9ESVIgPz0gIiR7VE1QRElSfS90ZXN0ZXhwb3J0LyR7UE59IgorVEVTVF9FWFBPUlRfUEFDS0FHRURfRElSID89ICJwYWNrYWdlcy9wYWNrYWdlZCIKK1RFU1RfRVhQT1JUX0VYVFJBQ1RFRF9ESVIgPz0gInBhY2thZ2VzL2V4dHJhY3RlZCIKKworVEVTVF9UQVJHRVQgPz0gInNpbXBsZXJlbW90ZSIKK1RFU1RfVEFSR0VUX0lQID89ICIiCitURVNUX1NFUlZFUl9JUCA/PSAiIgorCitURVNUX0VYUE9SVF9TREtfUEFDS0FHRVMgPz0gIiIKK1RFU1RfRVhQT1JUX1NES19FTkFCTEVEID89ICIwIgorVEVTVF9FWFBPUlRfU0RLX05BTUUgPz0gInRlc3RleHBvcnQtdG9vbHMtbmF0aXZlc2RrIgorVEVTVF9FWFBPUlRfU0RLX0RJUiA/PSAic2RrIgorCitURVNUX0VYUE9SVF9ERVBFTkRTID0gIiIKK1RFU1RfRVhQT1JUX0RFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdJTUFHRV9QS0dUWVBFJywgJ3JwbScsICdjcGlvLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290JywgJycsIGQpfSIKK1RFU1RfRVhQT1JUX0RFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdURVNUX0VYUE9SVF9TREtfRU5BQkxFRCcsICcxJywgJ3Rlc3RleHBvcnQtdGFyYmFsbDpkb19wb3B1bGF0ZV9zZGsnLCAnJywgZCl9IgorVEVTVF9FWFBPUlRfTE9DSyA9ICIke1RNUERJUn0vdGVzdGltYWdlLmxvY2siCisKK3B5dGhvbiBkb190ZXN0ZXhwb3J0KCkgeworICAgIHRlc3RleHBvcnRfbWFpbihkKQorfQorCithZGR0YXNrIHRlc3RleHBvcnQKK2RvX3Rlc3RleHBvcnRbbm9zdGFtcF0gPSAiMSIKK2RvX3Rlc3RleHBvcnRbZGVwZW5kc10gKz0gIiR7VEVTVF9FWFBPUlRfREVQRU5EU30gJHtURVNUSU1BR0VERVBFTkRTfSIKK2RvX3Rlc3RleHBvcnRbbG9ja2ZpbGVzXSArPSAiJHtURVNUX0VYUE9SVF9MT0NLfSIKKworZGVmIGV4cG9ydFRlc3RzKGQsdGMpOgorICAgIGltcG9ydCBqc29uCisgICAgaW1wb3J0IHNodXRpbAorICAgIGltcG9ydCBwa2d1dGlsCisgICAgaW1wb3J0IHJlCisgICAgaW1wb3J0IG9lLnBhdGgKKworICAgIGV4cG9ydHBhdGggPSBkLmdldFZhcigiVEVTVF9FWFBPUlRfRElSIiwgVHJ1ZSkKKworICAgIHNhdmVkYXRhID0ge30KKyAgICBzYXZlZGF0YVsiZCJdID0ge30KKyAgICBzYXZlZGF0YVsidGFyZ2V0Il0gPSB7fQorICAgIHNhdmVkYXRhWyJ0YXJnZXQiXVsiaXAiXSA9IHRjLnRhcmdldC5pcCBvciBkLmdldFZhcigiVEVTVF9UQVJHRVRfSVAiLCBUcnVlKQorICAgIHNhdmVkYXRhWyJ0YXJnZXQiXVsic2VydmVyX2lwIl0gPSB0Yy50YXJnZXQuc2VydmVyX2lwIG9yIGQuZ2V0VmFyKCJURVNUX1NFUlZFUl9JUCIsIFRydWUpCisKKyAgICBrZXlzID0gWyBrZXkgZm9yIGtleSBpbiBkLmtleXMoKSBpZiBub3Qga2V5LnN0YXJ0c3dpdGgoIl8iKSBhbmQgbm90IGtleS5zdGFydHN3aXRoKCJCQiIpIFwKKyAgICAgICAgICAgIGFuZCBub3Qga2V5LnN0YXJ0c3dpdGgoIkJfcG4iKSBhbmQgbm90IGtleS5zdGFydHN3aXRoKCJkb18iKSBhbmQgbm90IGQuZ2V0VmFyRmxhZyhrZXksICJmdW5jIiwgVHJ1ZSldCisgICAgZm9yIGtleSBpbiBrZXlzOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzYXZlZGF0YVsiZCJdW2tleV0gPSBkLmdldFZhcihrZXksIFRydWUpCisgICAgICAgIGV4Y2VwdCBiYi5kYXRhX3NtYXJ0LkV4cGFuc2lvbkVycm9yOgorICAgICAgICAgICAgIyB3ZSBkb24ndCBjYXJlIGFib3V0IHRob3NlIGFueXdheQorICAgICAgICAgICAgcGFzcworCisgICAganNvbl9maWxlID0gb3MucGF0aC5qb2luKGV4cG9ydHBhdGgsICJ0ZXN0ZGF0YS5qc29uIikKKyAgICB3aXRoIG9wZW4oanNvbl9maWxlLCAidyIpIGFzIGY6CisgICAgICAgICAgICBqc29uLmR1bXAoc2F2ZWRhdGEsIGYsIHNraXBrZXlzPVRydWUsIGluZGVudD00LCBzb3J0X2tleXM9VHJ1ZSkKKworICAgICMgUmVwbGFjZSBhYnNvbHV0ZSBwYXRoIHdpdGggcmVsYXRpdmUgaW4gdGhlIGZpbGUKKyAgICBleGNsdWRlX3BhdGggPSBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoIkNPUkVCQVNFIiwgVHJ1ZSksJ21ldGEnLCdsaWInLCdvZXFhJykKKyAgICBmMSA9IG9wZW4oanNvbl9maWxlLCdyJykucmVhZCgpCisgICAgZjIgPSBvcGVuKGpzb25fZmlsZSwndycpCisgICAgbSA9IGYxLnJlcGxhY2UoZXhjbHVkZV9wYXRoLCdvZXFhJykKKyAgICBmMi53cml0ZShtKQorICAgIGYyLmNsb3NlKCkKKworICAgICMgbm93IHN0YXJ0IGNvcHlpbmcgZmlsZXMKKyAgICAjIHdlJ2xsIGJhc2ljYWxseSBjb3B5IGV2ZXJ5dGhpbmcgdW5kZXIgbWV0YS9saWIvb2VxYSwgd2l0aCB0aGVzZSBleGNlcHRpb25zCisgICAgIyAgLSBvZXFhL3RhcmdldGNvbnRyb2wucHkgLSBub3QgbmVlZGVkCisgICAgIyAgLSBvZXFhL3NlbGZ0ZXN0IC0gc29tZXRoaW5nIGVsc2UKKyAgICAjIFRoYXQgbWVhbnM6CisgICAgIyAgIC0gYWxsIHRlc3RzIGZyb20gb2VxYS9ydW50aW1lIGRlZmluZWQgaW4gVEVTVF9TVUlURVMgKGluY2x1ZGluZyBmcm9tIG90aGVyIGxheWVycykKKyAgICAjICAgLSB0aGUgY29udGVudHMgb2Ygb2VxYS91dGlscyBhbmQgb2VxYS9ydW50aW1lL2ZpbGVzCisgICAgIyAgIC0gb2VxYS9vZXRlc3QucHkgYW5kIG9lcWEvcnVuZXhwb3J0LnB5ICh0aGlzIHdpbGwgZ2V0IGNvcGllZCB0byBleHBvcnRwYXRoIG5vdCBleHBvcnRwYXRoL29lcWEpCisgICAgIyAgIC0gX19pbml0X18ucHkgZmlsZXMKKyAgICBiYi51dGlscy5ta2RpcmhpZXIob3MucGF0aC5qb2luKGV4cG9ydHBhdGgsICJvZXFhL3J1bnRpbWUvZmlsZXMiKSkKKyAgICBiYi51dGlscy5ta2RpcmhpZXIob3MucGF0aC5qb2luKGV4cG9ydHBhdGgsICJvZXFhL3V0aWxzIikpCisgICAgIyBjb3B5IHRlc3QgbW9kdWxlcywgdGhpcyBzaG91bGQgY292ZXIgdGVzdHMgaW4gb3RoZXIgbGF5ZXJzIHRvbworICAgIGJicGF0aCA9IGQuZ2V0VmFyKCJCQlBBVEgiLCBUcnVlKS5zcGxpdCgnOicpCisgICAgZm9yIHQgaW4gdGMudGVzdHNsaXN0OgorICAgICAgICBpc2ZvbGRlciA9IEZhbHNlCisgICAgICAgIGlmIHJlLnNlYXJjaCgiXHcrXC5cdytcLnRlc3RfXFMrIiwgdCk6CisgICAgICAgICAgICB0ID0gJy4nLmpvaW4odC5zcGxpdCgnLicpWzozXSkKKyAgICAgICAgbW9kID0gcGtndXRpbC5nZXRfbG9hZGVyKHQpCisgICAgICAgICMgTW9yZSBkZXB0aCB0aGFuIHVzdWFsPworICAgICAgICBpZiAodC5jb3VudCgnLicpID4gMik6CisgICAgICAgICAgICBmb3IgcCBpbiBiYnBhdGg6CisgICAgICAgICAgICAgICAgZm9sZGVybmFtZSA9IG9zLnBhdGguam9pbihwLCAnbGliJywgIG9zLnNlcC5qb2luKHQuc3BsaXQoJy4nKSkucnNwbGl0KG9zLnNlcCwgMSlbMF0pCisgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcihmb2xkZXJuYW1lKToKKyAgICAgICAgICAgICAgICAgICAgaXNmb2xkZXIgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIHRhcmdldF9mb2xkZXIgPSBvcy5wYXRoLmpvaW4oZXhwb3J0cGF0aCwgIm9lcWEiLCAicnVudGltZSIsIG9zLnBhdGguYmFzZW5hbWUoZm9sZGVybmFtZSkpCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyh0YXJnZXRfZm9sZGVyKToKKyAgICAgICAgICAgICAgICAgICAgICAgIG9lLnBhdGguY29weXRyZWUoZm9sZGVybmFtZSwgdGFyZ2V0X2ZvbGRlcikKKyAgICAgICAgaWYgbm90IGlzZm9sZGVyOgorICAgICAgICAgICAgc2h1dGlsLmNvcHkyKG1vZC5wYXRoLCBvcy5wYXRoLmpvaW4oZXhwb3J0cGF0aCwgIm9lcWEvcnVudGltZSIpKQorICAgICAgICAgICAganNvbl9maWxlID0gIiVzLmpzb24iICUgbW9kLnBhdGgucnNwbGl0KCIuIiwgMSlbMF0KKyAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGpzb25fZmlsZSk6CisgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHkyKGpzb25fZmlsZSwgb3MucGF0aC5qb2luKGV4cG9ydHBhdGgsICJvZXFhL3J1bnRpbWUiKSkKKyAgICAjIEdldCBtZXRhIGxheWVyCisgICAgZm9yIGxheWVyIGluIGQuZ2V0VmFyKCJCQkxBWUVSUyIsIFRydWUpLnNwbGl0KCk6CisgICAgICAgIGlmIG9zLnBhdGguYmFzZW5hbWUobGF5ZXIpID09ICJtZXRhIjoKKyAgICAgICAgICAgIG1ldGFfbGF5ZXIgPSBsYXllcgorICAgICAgICAgICAgYnJlYWsKKyAgICAjIGNvcHkgb2VxYS9vZXRlc3QucHkgYW5kIG9lcWEvcnVuZXhwb3J0ZWQucHkKKyAgICBvZXFhZGlyID0gb3MucGF0aC5qb2luKG1ldGFfbGF5ZXIsICJsaWIvb2VxYSIpCisgICAgc2h1dGlsLmNvcHkyKG9zLnBhdGguam9pbihvZXFhZGlyLCAib2V0ZXN0LnB5IiksIG9zLnBhdGguam9pbihleHBvcnRwYXRoLCAib2VxYSIpKQorICAgIHNodXRpbC5jb3B5Mihvcy5wYXRoLmpvaW4ob2VxYWRpciwgInJ1bmV4cG9ydGVkLnB5IiksIGV4cG9ydHBhdGgpCisgICAgIyBjb3B5IG9lcWEvdXRpbHMvKi5weQorICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKG9zLnBhdGguam9pbihvZXFhZGlyLCAidXRpbHMiKSk6CisgICAgICAgIGZvciBmIGluIGZpbGVzOgorICAgICAgICAgICAgaWYgZi5lbmRzd2l0aCgiLnB5Iik6CisgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHkyKG9zLnBhdGguam9pbihyb290LCBmKSwgb3MucGF0aC5qb2luKGV4cG9ydHBhdGgsICJvZXFhL3V0aWxzIikpCisgICAgIyBjb3B5IG9lcWEvcnVudGltZS9maWxlcy8qCisgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsob3MucGF0aC5qb2luKG9lcWFkaXIsICJydW50aW1lL2ZpbGVzIikpOgorICAgICAgICBmb3IgZiBpbiBmaWxlczoKKyAgICAgICAgICAgIHNodXRpbC5jb3B5Mihvcy5wYXRoLmpvaW4ocm9vdCwgZiksIG9zLnBhdGguam9pbihleHBvcnRwYXRoLCAib2VxYS9ydW50aW1lL2ZpbGVzIikpCisKKyAgICAjIENyZWF0ZSB0YXIgZmlsZSBmb3IgY29tbW9uIHBhcnRzIG9mIHRlc3RleHBvcnQKKyAgICBjcmVhdGVfdGFyYmFsbChkLCAidGVzdGV4cG9ydC50YXIuZ3oiLCBkLmdldFZhcigiVEVTVF9FWFBPUlRfRElSIiwgVHJ1ZSkpCisKKyAgICAjIENvcHkgcGFja2FnZXMgbmVlZGVkIGZvciBydW50aW1lIHRlc3RpbmcKKyAgICB0ZXN0X3BrZ19kaXIgPSBkLmdldFZhcigiVEVTVF9ORUVERURfUEFDS0FHRVNfRElSIiwgVHJ1ZSkKKyAgICBpZiBvcy5saXN0ZGlyKHRlc3RfcGtnX2Rpcik6CisgICAgICAgIGV4cG9ydF9wa2dfZGlyID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCJURVNUX0VYUE9SVF9ESVIiLCBUcnVlKSwgInBhY2thZ2VzIikKKyAgICAgICAgb2UucGF0aC5jb3B5dHJlZSh0ZXN0X3BrZ19kaXIsIGV4cG9ydF9wa2dfZGlyKQorICAgICAgICAjIENyZWF0ZSB0YXIgZmlsZSBmb3IgcGFja2FnZXMgbmVlZGVkIGJ5IHRoZSBEVVQKKyAgICAgICAgY3JlYXRlX3RhcmJhbGwoZCwgInRlc3RleHBvcnRfcGFja2FnZXNfJXMudGFyLmd6IiAlIGQuZ2V0VmFyKCJNQUNISU5FIiwgVHJ1ZSksIGV4cG9ydF9wa2dfZGlyKQorCisgICAgIyBDb3B5IFNESworICAgIGlmIGQuZ2V0VmFyKCJURVNUX0VYUE9SVF9TREtfRU5BQkxFRCIsIFRydWUpID09ICIxIjoKKyAgICAgICAgc2RrX2RlcGxveSA9IGQuZ2V0VmFyKCJTREtfREVQTE9ZIiwgVHJ1ZSkKKyAgICAgICAgdGFyYmFsbF9uYW1lID0gIiVzLnNoIiAlIGQuZ2V0VmFyKCJURVNUX0VYUE9SVF9TREtfTkFNRSIsIFRydWUpCisgICAgICAgIHRhcmJhbGxfcGF0aCA9IG9zLnBhdGguam9pbihzZGtfZGVwbG95LCB0YXJiYWxsX25hbWUpCisgICAgICAgIGV4cG9ydF9zZGtfZGlyID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCJURVNUX0VYUE9SVF9ESVIiLCBUcnVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5nZXRWYXIoIlRFU1RfRVhQT1JUX1NES19ESVIiLCBUcnVlKSkKKyAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKGV4cG9ydF9zZGtfZGlyKQorICAgICAgICBzaHV0aWwuY29weTIodGFyYmFsbF9wYXRoLCBleHBvcnRfc2RrX2RpcikKKworICAgICAgICAjIENyZWF0ZSB0YXIgZmlsZSBmb3IgdGhlIHNkaworICAgICAgICBjcmVhdGVfdGFyYmFsbChkLCAidGVzdGV4cG9ydF9zZGtfJXMudGFyLmd6IiAlIGQuZ2V0VmFyKCJTREtfQVJDSCIsIFRydWUpLCBleHBvcnRfc2RrX2RpcikKKworICAgIGJiLnBsYWluKCJFeHBvcnRlZCB0ZXN0cyB0bzogJXMiICUgZXhwb3J0cGF0aCkKKworZGVmIHRlc3RleHBvcnRfbWFpbihkKToKKyAgICBmcm9tIG9lcWEub2V0ZXN0IGltcG9ydCBFeHBvcnRUZXN0Q29udGV4dAorICAgIGZyb20gb2VxYS50YXJnZXRjb250cm9sIGltcG9ydCBnZXRfdGFyZ2V0X2NvbnRyb2xsZXIKKyAgICBmcm9tIG9lcWEudXRpbHMuZHVtcCBpbXBvcnQgZ2V0X2hvc3RfZHVtcGVyCisKKyAgICB0ZXN0X2NyZWF0ZV9leHRyYWN0X2RpcnMoZCkKKyAgICBleHBvcnRfZGlyID0gZC5nZXRWYXIoIlRFU1RfRVhQT1JUX0RJUiIsIFRydWUpCisgICAgYmIudXRpbHMubWtkaXJoaWVyKGQuZ2V0VmFyKCJURVNUX0xPR19ESVIiLCBUcnVlKSkKKyAgICBiYi51dGlscy5yZW1vdmUoZXhwb3J0X2RpciwgcmVjdXJzZT1UcnVlKQorICAgIGJiLnV0aWxzLm1rZGlyaGllcihleHBvcnRfZGlyKQorCisgICAgIyB0aGUgcm9ib3QgZGFuY2UKKyAgICB0YXJnZXQgPSBnZXRfdGFyZ2V0X2NvbnRyb2xsZXIoZCkKKworICAgICMgdGVzdCBjb250ZXh0CisgICAgdGMgPSBFeHBvcnRUZXN0Q29udGV4dChkLCB0YXJnZXQpCisKKyAgICAjIHRoaXMgaXMgYSBkdW1teSBsb2FkIG9mIHRlc3RzCisgICAgIyB3ZSBhcmUgZG9pbmcgdGhhdCB0byBmaW5kIGNvbXBpbGUgZXJyb3JzIGluIHRoZSB0ZXN0cyB0aGVtc2VsdmVzCisgICAgIyBiZWZvcmUgYm9vdGluZyB0aGUgaW1hZ2UKKyAgICB0cnk6CisgICAgICAgIHRjLmxvYWRUZXN0cygpCisgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICBpbXBvcnQgdHJhY2ViYWNrCisgICAgICAgIGJiLmZhdGFsKCJMb2FkaW5nIHRlc3RzIGZhaWxlZDpcbiVzIiAlIHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCisKKyAgICB0Yy5leHRyYWN0X3BhY2thZ2VzKCkKKyAgICBleHBvcnRUZXN0cyhkLHRjKQorCitkZWYgY3JlYXRlX3RhcmJhbGwoZCwgdGFyX25hbWUsIHNyY19kaXIpOgorCisgICAgaW1wb3J0IHRhcmZpbGUKKworICAgIHRhcl9wYXRoID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCJURVNUX0VYUE9SVF9ESVIiLCBUcnVlKSwgdGFyX25hbWUpCisgICAgY3VycmVudF9kaXIgPSBvcy5nZXRjd2QoKQorICAgIHNyY19kaXIgPSBzcmNfZGlyLnJzdHJpcCgnLycpCisgICAgZGlyX25hbWUgPSBvcy5wYXRoLmRpcm5hbWUoc3JjX2RpcikKKyAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHNyY19kaXIpCisKKyAgICBvcy5jaGRpcihkaXJfbmFtZSkKKyAgICB0YXIgPSB0YXJmaWxlLm9wZW4odGFyX3BhdGgsICJ3Omd6IikKKyAgICB0YXIuYWRkKGJhc2VfbmFtZSkKKyAgICB0YXIuY2xvc2UoKQorICAgIG9zLmNoZGlyKGN1cnJlbnRfZGlyKQorCisKK3Rlc3RleHBvcnRfbWFpblt2YXJkZXBzZXhjbHVkZV0gPSsgIkJCX09SSUdFTlYiCisKK2luaGVyaXQgdGVzdGltYWdlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Rlc3RpbWFnZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90ZXN0aW1hZ2UuYmJjbGFzcwppbmRleCBlNzdiYjExLi42YjY3ODFkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Rlc3RpbWFnZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdGVzdGltYWdlLmJiY2xhc3MKQEAgLTgsNyArOCw3IEBACiAjIFRvIHVzZSBpdCBhZGQgdGVzdGltYWdlIHRvIGdsb2JhbCBpbmhlcml0IGFuZCBjYWxsIHlvdXIgdGFyZ2V0IGltYWdlIHdpdGggLWMgdGVzdGltYWdlCiAjIFlvdSBjYW4gdHJ5IGl0IG91dCBsaWtlIHRoaXM6CiAjIC0gZmlyc3QgYnVpbGQgYSBxZW11IGNvcmUtaW1hZ2Utc2F0bwotIyAtIGFkZCBJTkhFUklUICs9ICJ0ZXN0aW1hZ2UiIGluIGxvY2FsLmNvbmYKKyMgLSBhZGQgSU1BR0VfQ0xBU1NFUyArPSAidGVzdGltYWdlIiBpbiBsb2NhbC5jb25mCiAjIC0gdGhlbiBiaXRiYWtlIGNvcmUtaW1hZ2Utc2F0byAtYyB0ZXN0aW1hZ2UuIFRoYXQgd2lsbCBydW4gYSBzdGFuZGFyZCBzdWl0ZSBvZiB0ZXN0cy4KIAogIyBZb3UgY2FuIHNldCAob3IgYXBwZW5kIHRvKSBURVNUX1NVSVRFUyBpbiBsb2NhbC5jb25mIHRvIHNlbGVjdCB0aGUgdGVzdHMKQEAgLTMwLDcgKzMwLDEwIEBACiBURVNUX0xPR19ESVIgPz0gIiR7V09SS0RJUn0vdGVzdGltYWdlIgogCiBURVNUX0VYUE9SVF9ESVIgPz0gIiR7VE1QRElSfS90ZXN0aW1hZ2UvJHtQTn0iCi1URVNUX0VYUE9SVF9PTkxZID89ICIwIgorVEVTVF9JTlNUQUxMX1RNUF9ESVIgPz0gIiR7V09SS0RJUn0vdGVzdGltYWdlL2luc3RhbGxfdG1wIgorVEVTVF9ORUVERURfUEFDS0FHRVNfRElSID89ICIke1dPUktESVJ9L3Rlc3RpbWFnZS9wYWNrYWdlcyIKK1RFU1RfRVhUUkFDVEVEX0RJUiA/PSAiJHtURVNUX05FRURFRF9QQUNLQUdFU19ESVJ9L2V4dHJhY3RlZCIKK1RFU1RfUEFDS0FHRURfRElSID89ICIke1RFU1RfTkVFREVEX1BBQ0tBR0VTX0RJUn0vcGFja2FnZWQiCiAKIFJQTVRFU1RTVUlURSA9ICIke0BiYi51dGlscy5jb250YWlucygnSU1BR0VfUEtHVFlQRScsICdycG0nLCAnc21hcnQgcnBtJywgJycsIGQpfSIKIE1JTlRFU1RTVUlURSA9ICJwaW5nIgpAQCAtNDgsMjUgKzUxLDMzIEBACiBERUZBVUxUX1RFU1RfU1VJVEVTX3BuLWNvcmUtaW1hZ2Utc2F0by1zZGsgPSAiJHtORVRURVNUU1VJVEV9IGNvbm5tYW4geG9yZyBwZXJsIHB5dGhvbiBcCiAgICAgJHtERVZURVNUU1VJVEV9IHBhcnNlbG9ncyAke1JQTVRFU1RTVUlURX0iCiBERUZBVUxUX1RFU1RfU1VJVEVTX3BuLWNvcmUtaW1hZ2UtbHNiLWRldiA9ICIke05FVFRFU1RTVUlURX0gcGFtIHBlcmwgcHl0aG9uIHBhcnNlbG9ncyAke1JQTVRFU1RTVUlURX0iCi1ERUZBVUxUX1RFU1RfU1VJVEVTX3BuLWNvcmUtaW1hZ2UtbHNiLXNkayA9ICIke05FVFRFU1RTVUlURX0gYnVpbGRjdnMgYnVpbGRpcHRhYmxlcyBidWlsZHN1ZG9rdSBcCitERUZBVUxUX1RFU1RfU1VJVEVTX3BuLWNvcmUtaW1hZ2UtbHNiLXNkayA9ICIke05FVFRFU1RTVUlURX0gYnVpbGRjdnMgYnVpbGRpcHRhYmxlcyBidWlsZGdhbGN1bGF0b3IgXAogICAgIGNvbm5tYW4gJHtERVZURVNUU1VJVEV9IHBhbSBwZXJsIHB5dGhvbiBwYXJzZWxvZ3MgJHtSUE1URVNUU1VJVEV9IgogREVGQVVMVF9URVNUX1NVSVRFU19wbi1tZXRhLXRvb2xjaGFpbiA9ICJhdXRvIgogCiAjIGFhcmNoNjQgaGFzIG5vIGdyYXBoaWNzCiBERUZBVUxUX1RFU1RfU1VJVEVTX3JlbW92ZV9hYXJjaDY0ID0gInhvcmciCiAKLSNxZW11bWlwcyBpcyB0b28gc2xvdyBmb3IgYnVpbGRzdWRva3UKLURFRkFVTFRfVEVTVF9TVUlURVNfcmVtb3ZlX3FlbXVtaXBzID0gImJ1aWxkc3Vkb2t1IgorIyBxZW11bWlwcyBpcyBxdWl0ZSBzbG93IGFuZCBoYXMgcmVhY2hlZCB0aGUgdGltZW91dCBsaW1pdCBzZXZlcmFsIHRpbWVzIG9uIHRoZSBZUCBidWlsZCBjbHVzdGVyLAorIyBtaXRpZ2F0ZSB0aGlzIGJ5IHJlbW92aW5nIGJ1aWxkIHRlc3RzIGZvciBxZW11bWlwcyBtYWNoaW5lcy4KK01JUFNSRU1PVkUgPz89ICJidWlsZGN2cyBidWlsZGlwdGFibGVzIGJ1aWxkZ2FsY3VsYXRvciIKK0RFRkFVTFRfVEVTVF9TVUlURVNfcmVtb3ZlX3FlbXVtaXBzID0gIiR7TUlQU1JFTU9WRX0iCitERUZBVUxUX1RFU1RfU1VJVEVTX3JlbW92ZV9xZW11bWlwczY0ID0gIiR7TUlQU1JFTU9WRX0iCiAKIFRFU1RfU1VJVEVTID89ICIke0RFRkFVTFRfVEVTVF9TVUlURVN9IgogCiBURVNUX1FFTVVCT09UX1RJTUVPVVQgPz0gIjEwMDAiCiBURVNUX1RBUkdFVCA/PSAicWVtdSIKLVRFU1RfVEFSR0VUX0lQID89ICIiCi1URVNUX1NFUlZFUl9JUCA/PSAiIgogCiBURVNUSU1BR0VERVBFTkRTID0gIiIKIFRFU1RJTUFHRURFUEVORFNfcWVtdWFsbCA9ICJxZW11LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IHFlbXUtaGVscGVyLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgorVEVTVElNQUdFREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0lNQUdFX1BLR1RZUEUnLCAncnBtJywgJ2NwaW8tbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QnLCAnJywgZCl9IgorVEVTVElNQUdFREVQRU5EU19xZW11YWxsICs9ICIke0BiYi51dGlscy5jb250YWlucygnSU1BR0VfUEtHVFlQRScsICdycG0nLCAnY3Bpby1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCcsICcnLCBkKX0iCitURVNUSU1BR0VERVBFTkRTX3FlbXVhbGwgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdJTUFHRV9QS0dUWVBFJywgJ3JwbScsICdjcmVhdGVyZXBvLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290JywgJycsIGQpfSIKK1RFU1RJTUFHRURFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdJTUFHRV9QS0dUWVBFJywgJ3JwbScsICdweXRob24tc21hcnRwbS1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCcsICcnLCBkKX0iCitURVNUSU1BR0VERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnSU1BR0VfUEtHVFlQRScsICdpcGsnLCAnb3BrZy11dGlscy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCcsICcnLCBkKX0iCitURVNUSU1BR0VERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnSU1BR0VfUEtHVFlQRScsICdkZWInLCAnYXB0LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290JywgJycsIGQpfSIKKwogCiBURVNUSU1BR0VMT0NLID0gIiR7VE1QRElSfS90ZXN0aW1hZ2UubG9jayIKIFRFU1RJTUFHRUxPQ0tfcWVtdWFsbCA9ICIiCkBAIC0xMDMsMTAyICsxMTQsMTIgQEAKIHB5dGhvbiBkb190ZXN0aW1hZ2UoKSB7CiAgICAgdGVzdGltYWdlX21haW4oZCkKIH0KKwogYWRkdGFzayB0ZXN0aW1hZ2UKIGRvX3Rlc3RpbWFnZVtub3N0YW1wXSA9ICIxIgogZG9fdGVzdGltYWdlW2RlcGVuZHNdICs9ICIke1RFU1RJTUFHRURFUEVORFN9IgogZG9fdGVzdGltYWdlW2xvY2tmaWxlc10gKz0gIiR7VEVTVElNQUdFTE9DS30iCiAKLWRlZiBleHBvcnRUZXN0cyhkLHRjKToKLSAgICBpbXBvcnQganNvbgotICAgIGltcG9ydCBzaHV0aWwKLSAgICBpbXBvcnQgcGtndXRpbAotICAgIGltcG9ydCByZQotCi0gICAgZXhwb3J0cGF0aCA9IGQuZ2V0VmFyKCJURVNUX0VYUE9SVF9ESVIiLCBUcnVlKQotCi0gICAgc2F2ZWRhdGEgPSB7fQotICAgIHNhdmVkYXRhWyJkIl0gPSB7fQotICAgIHNhdmVkYXRhWyJ0YXJnZXQiXSA9IHt9Ci0gICAgc2F2ZWRhdGFbImhvc3RfZHVtcGVyIl0gPSB7fQotICAgIGZvciBrZXkgaW4gdGMuX19kaWN0X186Ci0gICAgICAgICMgc3BlY2lhbCBjYXNlcwotICAgICAgICBpZiBrZXkgbm90IGluIFsnZCcsICd0YXJnZXQnLCAnaG9zdF9kdW1wZXInLCAnc3VpdGUnXToKLSAgICAgICAgICAgIHNhdmVkYXRhW2tleV0gPSBnZXRhdHRyKHRjLCBrZXkpCi0gICAgc2F2ZWRhdGFbInRhcmdldCJdWyJpcCJdID0gdGMudGFyZ2V0LmlwIG9yIGQuZ2V0VmFyKCJURVNUX1RBUkdFVF9JUCIsIFRydWUpCi0gICAgc2F2ZWRhdGFbInRhcmdldCJdWyJzZXJ2ZXJfaXAiXSA9IHRjLnRhcmdldC5zZXJ2ZXJfaXAgb3IgZC5nZXRWYXIoIlRFU1RfU0VSVkVSX0lQIiwgVHJ1ZSkKLQotICAgIGtleXMgPSBbIGtleSBmb3Iga2V5IGluIGQua2V5cygpIGlmIG5vdCBrZXkuc3RhcnRzd2l0aCgiXyIpIGFuZCBub3Qga2V5LnN0YXJ0c3dpdGgoIkJCIikgXAotICAgICAgICAgICAgYW5kIG5vdCBrZXkuc3RhcnRzd2l0aCgiQl9wbiIpIGFuZCBub3Qga2V5LnN0YXJ0c3dpdGgoImRvXyIpIGFuZCBub3QgZC5nZXRWYXJGbGFnKGtleSwgImZ1bmMiLCBUcnVlKV0KLSAgICBmb3Iga2V5IGluIGtleXM6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNhdmVkYXRhWyJkIl1ba2V5XSA9IGQuZ2V0VmFyKGtleSwgVHJ1ZSkKLSAgICAgICAgZXhjZXB0IGJiLmRhdGFfc21hcnQuRXhwYW5zaW9uRXJyb3I6Ci0gICAgICAgICAgICAjIHdlIGRvbid0IGNhcmUgYWJvdXQgdGhvc2UgYW55d2F5Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICBzYXZlZGF0YVsiaG9zdF9kdW1wZXIiXVsicGFyZW50X2RpciJdID0gdGMuaG9zdF9kdW1wZXIucGFyZW50X2RpcgotICAgIHNhdmVkYXRhWyJob3N0X2R1bXBlciJdWyJjbWRzIl0gPSB0Yy5ob3N0X2R1bXBlci5jbWRzCi0KLSAgICBqc29uX2ZpbGUgPSBvcy5wYXRoLmpvaW4oZXhwb3J0cGF0aCwgInRlc3RkYXRhLmpzb24iKQotICAgIHdpdGggb3Blbihqc29uX2ZpbGUsICJ3IikgYXMgZjoKLSAgICAgICAgICAgIGpzb24uZHVtcChzYXZlZGF0YSwgZiwgc2tpcGtleXM9VHJ1ZSwgaW5kZW50PTQsIHNvcnRfa2V5cz1UcnVlKQotCi0gICAgIyBSZXBsYWNlIGFic29sdXRlIHBhdGggd2l0aCByZWxhdGl2ZSBpbiB0aGUgZmlsZQotICAgIGV4Y2x1ZGVfcGF0aCA9IG9zLnBhdGguam9pbihkLmdldFZhcigiQ09SRUJBU0UiLCBUcnVlKSwnbWV0YScsJ2xpYicsJ29lcWEnKQotICAgIGYxID0gb3Blbihqc29uX2ZpbGUsJ3InKS5yZWFkKCkKLSAgICBmMiA9IG9wZW4oanNvbl9maWxlLCd3JykKLSAgICBtID0gZjEucmVwbGFjZShleGNsdWRlX3BhdGgsJ29lcWEnKQotICAgIGYyLndyaXRlKG0pCi0gICAgZjIuY2xvc2UoKQotCi0gICAgIyBub3cgc3RhcnQgY29weWluZyBmaWxlcwotICAgICMgd2UnbGwgYmFzaWNhbGx5IGNvcHkgZXZlcnl0aGluZyB1bmRlciBtZXRhL2xpYi9vZXFhLCB3aXRoIHRoZXNlIGV4Y2VwdGlvbnMKLSAgICAjICAtIG9lcWEvdGFyZ2V0Y29udHJvbC5weSAtIG5vdCBuZWVkZWQKLSAgICAjICAtIG9lcWEvc2VsZnRlc3QgLSBzb21ldGhpbmcgZWxzZQotICAgICMgVGhhdCBtZWFuczoKLSAgICAjICAgLSBhbGwgdGVzdHMgZnJvbSBvZXFhL3J1bnRpbWUgZGVmaW5lZCBpbiBURVNUX1NVSVRFUyAoaW5jbHVkaW5nIGZyb20gb3RoZXIgbGF5ZXJzKQotICAgICMgICAtIHRoZSBjb250ZW50cyBvZiBvZXFhL3V0aWxzIGFuZCBvZXFhL3J1bnRpbWUvZmlsZXMKLSAgICAjICAgLSBvZXFhL29ldGVzdC5weSBhbmQgb2VxYS9ydW5leHBvcnQucHkgKHRoaXMgd2lsbCBnZXQgY29waWVkIHRvIGV4cG9ydHBhdGggbm90IGV4cG9ydHBhdGgvb2VxYSkKLSAgICAjICAgLSBfX2luaXRfXy5weSBmaWxlcwotICAgIGJiLnV0aWxzLm1rZGlyaGllcihvcy5wYXRoLmpvaW4oZXhwb3J0cGF0aCwgIm9lcWEvcnVudGltZS9maWxlcyIpKQotICAgIGJiLnV0aWxzLm1rZGlyaGllcihvcy5wYXRoLmpvaW4oZXhwb3J0cGF0aCwgIm9lcWEvdXRpbHMiKSkKLSAgICAjIGNvcHkgdGVzdCBtb2R1bGVzLCB0aGlzIHNob3VsZCBjb3ZlciB0ZXN0cyBpbiBvdGhlciBsYXllcnMgdG9vCi0gICAgYmJwYXRoID0gZC5nZXRWYXIoIkJCUEFUSCIsIFRydWUpLnNwbGl0KCc6JykKLSAgICBmb3IgdCBpbiB0Yy50ZXN0c2xpc3Q6Ci0gICAgICAgIGlzZm9sZGVyID0gRmFsc2UKLSAgICAgICAgaWYgcmUuc2VhcmNoKCJcdytcLlx3K1wudGVzdF9cUysiLCB0KToKLSAgICAgICAgICAgIHQgPSAnLicuam9pbih0LnNwbGl0KCcuJylbOjNdKQotICAgICAgICBtb2QgPSBwa2d1dGlsLmdldF9sb2FkZXIodCkKLSAgICAgICAgIyBNb3JlIGRlcHRoIHRoYW4gdXN1YWw/Ci0gICAgICAgIGlmICh0LmNvdW50KCcuJykgPiAyKToKLSAgICAgICAgICAgIGZvciBwIGluIGJicGF0aDoKLSAgICAgICAgICAgICAgICBmb2xkZXJuYW1lID0gb3MucGF0aC5qb2luKHAsICdsaWInLCAgb3Muc2VwLmpvaW4odC5zcGxpdCgnLicpKS5yc3BsaXQob3Muc2VwLCAxKVswXSkKLSAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKGZvbGRlcm5hbWUpOgotICAgICAgICAgICAgICAgICAgICBpc2ZvbGRlciA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2ZvbGRlciA9IG9zLnBhdGguam9pbihleHBvcnRwYXRoLCAib2VxYSIsICJydW50aW1lIiwgb3MucGF0aC5iYXNlbmFtZShmb2xkZXJuYW1lKSkKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHRhcmdldF9mb2xkZXIpOgotICAgICAgICAgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHl0cmVlKGZvbGRlcm5hbWUsIHRhcmdldF9mb2xkZXIpCi0gICAgICAgIGlmIG5vdCBpc2ZvbGRlcjoKLSAgICAgICAgICAgIHNodXRpbC5jb3B5Mihtb2QuZmlsZW5hbWUsIG9zLnBhdGguam9pbihleHBvcnRwYXRoLCAib2VxYS9ydW50aW1lIikpCi0gICAgIyBjb3B5IF9faW5pdF9fLnB5IGZpbGVzCi0gICAgb2VxYWRpciA9IHBrZ3V0aWwuZ2V0X2xvYWRlcigib2VxYSIpLmZpbGVuYW1lCi0gICAgc2h1dGlsLmNvcHkyKG9zLnBhdGguam9pbihvZXFhZGlyLCAiX19pbml0X18ucHkiKSwgb3MucGF0aC5qb2luKGV4cG9ydHBhdGgsICJvZXFhIikpCi0gICAgc2h1dGlsLmNvcHkyKG9zLnBhdGguam9pbihvZXFhZGlyLCAicnVudGltZS9fX2luaXRfXy5weSIpLCBvcy5wYXRoLmpvaW4oZXhwb3J0cGF0aCwgIm9lcWEvcnVudGltZSIpKQotICAgICMgY29weSBvZXFhL29ldGVzdC5weSBhbmQgb2VxYS9ydW5leHBvcnRlZC5weQotICAgIHNodXRpbC5jb3B5Mihvcy5wYXRoLmpvaW4ob2VxYWRpciwgIm9ldGVzdC5weSIpLCBvcy5wYXRoLmpvaW4oZXhwb3J0cGF0aCwgIm9lcWEiKSkKLSAgICBzaHV0aWwuY29weTIob3MucGF0aC5qb2luKG9lcWFkaXIsICJydW5leHBvcnRlZC5weSIpLCBleHBvcnRwYXRoKQotICAgICMgY29weSBvZXFhL3V0aWxzLyoucHkKLSAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2Fsayhvcy5wYXRoLmpvaW4ob2VxYWRpciwgInV0aWxzIikpOgotICAgICAgICBmb3IgZiBpbiBmaWxlczoKLSAgICAgICAgICAgIGlmIGYuZW5kc3dpdGgoIi5weSIpOgotICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5Mihvcy5wYXRoLmpvaW4ocm9vdCwgZiksIG9zLnBhdGguam9pbihleHBvcnRwYXRoLCAib2VxYS91dGlscyIpKQotICAgICMgY29weSBvZXFhL3J1bnRpbWUvZmlsZXMvKgotICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKG9zLnBhdGguam9pbihvZXFhZGlyLCAicnVudGltZS9maWxlcyIpKToKLSAgICAgICAgZm9yIGYgaW4gZmlsZXM6Ci0gICAgICAgICAgICBzaHV0aWwuY29weTIob3MucGF0aC5qb2luKHJvb3QsIGYpLCBvcy5wYXRoLmpvaW4oZXhwb3J0cGF0aCwgIm9lcWEvcnVudGltZS9maWxlcyIpKQotCi0gICAgYmIucGxhaW4oIkV4cG9ydGVkIHRlc3RzIHRvOiAlcyIgJSBleHBvcnRwYXRoKQotCiBkZWYgdGVzdGltYWdlX21haW4oZCk6CiAgICAgaW1wb3J0IHVuaXR0ZXN0CiAgICAgaW1wb3J0IG9zCkBAIC0yMTAsMTEgKzEzMSw4IEBACiAgICAgZnJvbSBvZXFhLnV0aWxzLmR1bXAgaW1wb3J0IGdldF9ob3N0X2R1bXBlcgogCiAgICAgcG4gPSBkLmdldFZhcigiUE4iLCBUcnVlKQotICAgIGV4cG9ydCA9IG9lLnV0aWxzLmNvbmRpdGlvbmFsKCJURVNUX0VYUE9SVF9PTkxZIiwgIjEiLCBUcnVlLCBGYWxzZSwgZCkKICAgICBiYi51dGlscy5ta2RpcmhpZXIoZC5nZXRWYXIoIlRFU1RfTE9HX0RJUiIsIFRydWUpKQotICAgIGlmIGV4cG9ydDoKLSAgICAgICAgYmIudXRpbHMucmVtb3ZlKGQuZ2V0VmFyKCJURVNUX0VYUE9SVF9ESVIiLCBUcnVlKSwgcmVjdXJzZT1UcnVlKQotICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoZC5nZXRWYXIoIlRFU1RfRVhQT1JUX0RJUiIsIFRydWUpKQorICAgIHRlc3RfY3JlYXRlX2V4dHJhY3RfZGlycyhkKQogCiAgICAgIyB3ZSBuZWVkIHRoZSBob3N0IGR1bXBlciBpbiB0ZXN0IGNvbnRleHQKICAgICBob3N0X2R1bXBlciA9IGdldF9ob3N0X2R1bXBlcihkKQpAQCAtMjM0LDI5ICsxNTIsMzkgQEAKICAgICAgICAgaW1wb3J0IHRyYWNlYmFjawogICAgICAgICBiYi5mYXRhbCgiTG9hZGluZyB0ZXN0cyBmYWlsZWQ6XG4lcyIgJSB0cmFjZWJhY2suZm9ybWF0X2V4YygpKQogCi0gICAgaWYgZXhwb3J0OgorICAgIHRjLmV4dHJhY3RfcGFja2FnZXMoKQorICAgIHRhcmdldC5kZXBsb3koKQorICAgIHRyeToKKyAgICAgICAgYm9vdHBhcmFtcyA9IE5vbmUKKyAgICAgICAgaWYgZC5nZXRWYXIoJ1ZJUlRVQUwtUlVOVElNRV9pbml0X21hbmFnZXInLCAnJykgPT0gJ3N5c3RlbWQnOgorICAgICAgICAgICAgYm9vdHBhcmFtcyA9ICdzeXN0ZW1kLmxvZ19sZXZlbD1kZWJ1ZyBzeXN0ZW1kLmxvZ190YXJnZXQ9Y29uc29sZScKKyAgICAgICAgdGFyZ2V0LnN0YXJ0KGV4dHJhX2Jvb3RwYXJhbXM9Ym9vdHBhcmFtcykKKyAgICAgICAgc3RhcnR0aW1lID0gdGltZS50aW1lKCkKKyAgICAgICAgcmVzdWx0ID0gdGMucnVuVGVzdHMoKQorICAgICAgICBzdG9wdGltZSA9IHRpbWUudGltZSgpCisgICAgICAgIGlmIHJlc3VsdC53YXNTdWNjZXNzZnVsKCk6CisgICAgICAgICAgICBiYi5wbGFpbigiJXMgLSBSYW4gJWQgdGVzdCVzIGluICUuM2ZzIiAlIChwbiwgcmVzdWx0LnRlc3RzUnVuLCByZXN1bHQudGVzdHNSdW4gIT0gMSBhbmQgInMiIG9yICIiLCBzdG9wdGltZSAtIHN0YXJ0dGltZSkpCisgICAgICAgICAgICBtc2cgPSAiJXMgLSBPSyAtIEFsbCByZXF1aXJlZCB0ZXN0cyBwYXNzZWQiICUgcG4KKyAgICAgICAgICAgIHNraXBwZWQgPSBsZW4ocmVzdWx0LnNraXBwZWQpCisgICAgICAgICAgICBpZiBza2lwcGVkOgorICAgICAgICAgICAgICAgIG1zZyArPSAiIChza2lwcGVkPSVkKSIgJSBza2lwcGVkCisgICAgICAgICAgICBiYi5wbGFpbihtc2cpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBiYi5mYXRhbCgiJXMgLSBGQUlMRUQgLSBjaGVjayB0aGUgdGFzayBsb2cgYW5kIHRoZSBzc2ggbG9nIiAlIHBuKQorICAgIGZpbmFsbHk6CiAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1RFUk0sIHRjLm9yaWdzaWd0ZXJtaGFuZGxlcikKLSAgICAgICAgdGMub3JpZ3NpZ3Rlcm1oYW5kbGVyID0gTm9uZQotICAgICAgICBleHBvcnRUZXN0cyhkLHRjKQotICAgIGVsc2U6Ci0gICAgICAgIHRhcmdldC5kZXBsb3koKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0YXJnZXQuc3RhcnQoKQotICAgICAgICAgICAgc3RhcnR0aW1lID0gdGltZS50aW1lKCkKLSAgICAgICAgICAgIHJlc3VsdCA9IHRjLnJ1blRlc3RzKCkKLSAgICAgICAgICAgIHN0b3B0aW1lID0gdGltZS50aW1lKCkKLSAgICAgICAgICAgIGlmIHJlc3VsdC53YXNTdWNjZXNzZnVsKCk6Ci0gICAgICAgICAgICAgICAgYmIucGxhaW4oIiVzIC0gUmFuICVkIHRlc3QlcyBpbiAlLjNmcyIgJSAocG4sIHJlc3VsdC50ZXN0c1J1biwgcmVzdWx0LnRlc3RzUnVuICE9IDEgYW5kICJzIiBvciAiIiwgc3RvcHRpbWUgLSBzdGFydHRpbWUpKQotICAgICAgICAgICAgICAgIG1zZyA9ICIlcyAtIE9LIC0gQWxsIHJlcXVpcmVkIHRlc3RzIHBhc3NlZCIgJSBwbgotICAgICAgICAgICAgICAgIHNraXBwZWQgPSBsZW4ocmVzdWx0LnNraXBwZWQpCi0gICAgICAgICAgICAgICAgaWYgc2tpcHBlZDoKLSAgICAgICAgICAgICAgICAgICAgbXNnICs9ICIgKHNraXBwZWQ9JWQpIiAlIHNraXBwZWQKLSAgICAgICAgICAgICAgICBiYi5wbGFpbihtc2cpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIGJiLmJ1aWxkLkZ1bmNGYWlsZWQoIiVzIC0gRkFJTEVEIC0gY2hlY2sgdGhlIHRhc2sgbG9nIGFuZCB0aGUgc3NoIGxvZyIgJSBwbiApCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdURVJNLCB0Yy5vcmlnc2lndGVybWhhbmRsZXIpCi0gICAgICAgICAgICB0YXJnZXQuc3RvcCgpCisgICAgICAgIHRhcmdldC5zdG9wKCkKKworZGVmIHRlc3RfY3JlYXRlX2V4dHJhY3RfZGlycyhkKToKKyAgICBpbnN0YWxsX3BhdGggPSBkLmdldFZhcigiVEVTVF9JTlNUQUxMX1RNUF9ESVIiLCBUcnVlKQorICAgIHBhY2thZ2VfcGF0aCA9IGQuZ2V0VmFyKCJURVNUX1BBQ0tBR0VEX0RJUiIsIFRydWUpCisgICAgZXh0cmFjdGVkX3BhdGggPSBkLmdldFZhcigiVEVTVF9FWFRSQUNURURfRElSIiwgVHJ1ZSkKKyAgICBiYi51dGlscy5ta2RpcmhpZXIoZC5nZXRWYXIoIlRFU1RfTE9HX0RJUiIsIFRydWUpKQorICAgIGJiLnV0aWxzLnJlbW92ZShwYWNrYWdlX3BhdGgsIHJlY3Vyc2U9VHJ1ZSkKKyAgICBiYi51dGlscy5ta2RpcmhpZXIoaW5zdGFsbF9wYXRoKQorICAgIGJiLnV0aWxzLm1rZGlyaGllcihwYWNrYWdlX3BhdGgpCisgICAgYmIudXRpbHMubWtkaXJoaWVyKGV4dHJhY3RlZF9wYXRoKQorCiAKIHRlc3RpbWFnZV9tYWluW3ZhcmRlcHNleGNsdWRlXSA9KyAiQkJfT1JJR0VOViIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90ZXN0c2RrLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Rlc3RzZGsuYmJjbGFzcwppbmRleCBmNGRjMmMzLi43N2M5MjAzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Rlc3RzZGsuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Rlc3RzZGsuYmJjbGFzcwpAQCAtNDQsNyArNDQsNyBAQAogICAgICAgICAgICAgICAgIG1zZyArPSAiIChza2lwcGVkPSVkKSIgJSBza2lwcGVkCiAgICAgICAgICAgICBiYi5wbGFpbihtc2cpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBiYi5idWlsZC5GdW5jRmFpbGVkKCIlcyAtIEZBSUxFRCAtIGNoZWNrIHRoZSB0YXNrIGxvZyBhbmQgdGhlIGNvbW1hbmRzIGxvZyIgJSBwbiApCisgICAgICAgICAgICBiYi5mYXRhbCgiJXMgLSBGQUlMRUQgLSBjaGVjayB0aGUgdGFzayBsb2cgYW5kIHRoZSBjb21tYW5kcyBsb2ciICUgcG4pCiAKIGRlZiB0ZXN0c2RrX21haW4oZCk6CiAgICAgaW1wb3J0IG9zCkBAIC02NSw3ICs2NSw3IEBACiAgICAgdHJ5OgogICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgiY2QgJXM7ICVzIDw8RU9GXG4uL3RjXG5ZXG5FT0YiICUgKHNka3Rlc3RkaXIsIHRjbmFtZSksIHNoZWxsPVRydWUpCiAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6Ci0gICAgICAgIGJiLmZhdGFsKCJDb3VsZG4ndCBpbnN0YWxsIHRoZSBTREs6XG4lcyIgJSBlLm91dHB1dCkKKyAgICAgICAgYmIuZmF0YWwoIkNvdWxkbid0IGluc3RhbGwgdGhlIFNESzpcbiVzIiAlIGUub3V0cHV0LmRlY29kZSgidXRmLTgiKSkKIAogICAgIHRyeToKICAgICAgICAgcnVuX3Rlc3RfY29udGV4dChTREtUZXN0Q29udGV4dCwgZCwgc2RrdGVzdGRpciwgdGNuYW1lLCBwbikKQEAgLTExMywxMCArMTEzLDE4IEBACiAgICAgdGVzdGRpciA9IGQuZXhwYW5kKCIke1dPUktESVJ9L3Rlc3RzZGtleHQvIikKICAgICBiYi51dGlscy5yZW1vdmUodGVzdGRpciwgVHJ1ZSkKICAgICBiYi51dGlscy5ta2RpcmhpZXIodGVzdGRpcikKKyAgICBzZGtkaXIgPSBvcy5wYXRoLmpvaW4odGVzdGRpciwgJ3RjJykKICAgICB0cnk6Ci0gICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCIlcyAteSAtZCAlcy90YyIgJSAodGNuYW1lLCB0ZXN0ZGlyKSwgc2hlbGw9VHJ1ZSkKKyAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoIiVzIC15IC1kICVzIiAlICh0Y25hbWUsIHNka2RpciksIHNoZWxsPVRydWUpCiAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6Ci0gICAgICAgIGJiLmZhdGFsKCJDb3VsZG4ndCBpbnN0YWxsIHRoZSBTREsgRVhUOlxuJXMiICUgZS5vdXRwdXQpCisgICAgICAgIG1zZyA9ICJDb3VsZG4ndCBpbnN0YWxsIHRoZSBleHRlbnNpYmxlIFNESzpcbiVzIiAlIGUub3V0cHV0LmRlY29kZSgidXRmLTgiKQorICAgICAgICBsb2dmbiA9IG9zLnBhdGguam9pbihzZGtkaXIsICdwcmVwYXJpbmdfYnVpbGRfc3lzdGVtLmxvZycpCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGxvZ2ZuKToKKyAgICAgICAgICAgIG1zZyArPSAnXG5cbkNvbnRlbnRzIG9mIHByZXBhcmluZ19idWlsZF9zeXN0ZW0ubG9nOlxuJworICAgICAgICAgICAgd2l0aCBvcGVuKGxvZ2ZuLCAncicpIGFzIGY6CisgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgICAgICAgICAgICAgbXNnICs9IGxpbmUKKyAgICAgICAgYmIuZmF0YWwobXNnKQogCiAgICAgdHJ5OgogICAgICAgICBiYi5wbGFpbigiUnVubmluZyBTREsgQ29tcGF0aWJpbGl0eSB0ZXN0cyAuLi4iKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90aW5kZXJjbGllbnQuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdGluZGVyY2xpZW50LmJiY2xhc3MKaW5kZXggMmJjNzVmYy4uOTE3Yjc0ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90aW5kZXJjbGllbnQuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3RpbmRlcmNsaWVudC5iYmNsYXNzCkBAIC0xMCwxMCArMTAsMTAgQEAKICAgICAgICAgICAgIGguZW5kaGVhZGVycygpCiAgICAgICAgICAgICBoLnNlbmQoYm9keSkKICAgICAgICAgICAgIGVycmNvZGUsIGVycm1zZywgaGVhZGVycyA9IGguZ2V0cmVwbHkoKQotICAgICAgICAgICAgI3ByaW50IGVycmNvZGUsIGVycm1zZywgaGVhZGVycworICAgICAgICAgICAgI3ByaW50KGVycmNvZGUsIGVycm1zZywgaGVhZGVycykKICAgICAgICAgICAgIHJldHVybiAoZXJyY29kZSxlcnJtc2csIGhlYWRlcnMsIGguZmlsZSkKICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgcHJpbnQgIkVycm9yIHNlbmRpbmcgdGhlIHJlcG9ydCEiCisgICAgICAgICAgICBwcmludCgiRXJyb3Igc2VuZGluZyB0aGUgcmVwb3J0ISIpCiAgICAgICAgICAgICAjIHRyeSBhZ2FpbgogICAgICAgICAgICAgcGFzcwogCkBAIC04Miw3ICs4Miw3IEBACiAgICAgIyB3ZSBvbmx5IG5lZWQgb24gYnVpbGRfc3RhdHVzLnBsIGJ1dCBzZW5kaW5nIGl0CiAgICAgIyBhbHdheXMgZG9lcyBub3QgaHVydAogICAgIHRyeToKLSAgICAgICAgZiA9IGZpbGUoZC5nZXRWYXIoJ1RNUERJUicsVHJ1ZSkrJy90aW5kZXItbWFjaGluZS5pZCcsICdyJykKKyAgICAgICAgZiA9IG9wZW4oZC5nZXRWYXIoJ1RNUERJUicsVHJ1ZSkrJy90aW5kZXItbWFjaGluZS5pZCcsICdyJykKICAgICAgICAgaWQgPSBmLnJlYWQoKQogICAgICAgICB2YXJpYWJsZXNbJ21hY2hpbmVfaWQnXSA9IGlkCiAgICAgZXhjZXB0OgpAQCAtMTExLDExICsxMTEsMTEgQEAKIAogICAgIHNlbGVjdG9yID0gdXJsICsgIi94bWwvYnVpbGRfc3RhcnQucGwiCiAKLSAgICAjcHJpbnQgInNlbGVjdG9yICVzIGFuZCB1cmwgJXMiICUgKHNlbGVjdG9yLCB1cmwpCisgICAgI3ByaW50KCJzZWxlY3RvciAlcyBhbmQgdXJsICVzIiAlIChzZWxlY3RvciwgdXJsKSkKIAogICAgICMgbm93IHBvc3QgaXQKICAgICBlcnJjb2RlLCBlcnJtc2csIGhlYWRlcnMsIGhfZmlsZSA9IHRpbmRlcl9odHRwX3Bvc3Qoc2VydmVyLHNlbGVjdG9yLGNvbnRlbnRfdHlwZSwgYm9keSkKLSAgICAjcHJpbnQgZXJyY29kZSwgZXJybXNnLCBoZWFkZXJzCisgICAgI3ByaW50KGVycmNvZGUsIGVycm1zZywgaGVhZGVycykKICAgICByZXBvcnQgPSBoX2ZpbGUucmVhZCgpCiAKICAgICAjIG5vdyBsZXQgdXMgZmluZCB0aGUgbWFjaGluZSBpZCB0aGF0IHdhcyBhc3NpZ25lZCB0byB1cwpAQCAtMTI3LDcgKzEyNyw3IEBACiAKICAgICAjIG5vdyB3ZSB3aWxsIG5lZWQgdG8gc2F2ZSB0aGUgbWFjaGluZSBudW1iZXIKICAgICAjIHdlIHdpbGwgb3ZlcnJpZGUgYW55IHByZXZpb3VzIG51bWJlcnMKLSAgICBmID0gZmlsZShkLmdldFZhcignVE1QRElSJywgVHJ1ZSkrIi90aW5kZXItbWFjaGluZS5pZCIsICd3JykKKyAgICBmID0gb3BlbihkLmdldFZhcignVE1QRElSJywgVHJ1ZSkrIi90aW5kZXItbWFjaGluZS5pZCIsICd3JykKICAgICBmLndyaXRlKHJlcG9ydCkKIAogCkBAIC0xNDcsOCArMTQ3LDggQEAKICAgICB3aGlsZSBsZW4obmV3X2xvZykgPiAwOgogICAgICAgICBjb250ZW50X3R5cGUsIGJvZHkgPSB0aW5kZXJfZm9ybWF0X2h0dHBfcG9zdChkLHN0YXR1cyxuZXdfbG9nWzA6MTgwMDBdKQogICAgICAgICBlcnJjb2RlLCBlcnJtc2csIGhlYWRlcnMsIGhfZmlsZSA9IHRpbmRlcl9odHRwX3Bvc3Qoc2VydmVyLHNlbGVjdG9yLGNvbnRlbnRfdHlwZSwgYm9keSkKLSAgICAgICAgI3ByaW50IGVycmNvZGUsIGVycm1zZywgaGVhZGVycwotICAgICAgICAjcHJpbnQgaC5maWxlLnJlYWQoKQorICAgICAgICAjcHJpbnQoZXJyY29kZSwgZXJybXNnLCBoZWFkZXJzKQorICAgICAgICAjcHJpbnQoaC5maWxlLnJlYWQoKSkKICAgICAgICAgbmV3X2xvZyA9IG5ld19sb2dbMTgwMDA6XQogCiAKQEAgLTI3OCw3ICsyNzgsNyBAQAogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgICMgdHJ1bmNhdGUgdGhlIHRpbmRlciBsb2cgZmlsZQotICAgICAgICAgICAgZiA9IGZpbGUoZXZlbnQuZGF0YS5nZXRWYXIoJ1RJTkRFUl9MT0cnLCBUcnVlKSwgJ3cnKQorICAgICAgICAgICAgZiA9IG9wZW4oZXZlbnQuZGF0YS5nZXRWYXIoJ1RJTkRFUl9MT0cnLCBUcnVlKSwgJ3cnKQogICAgICAgICAgICAgZi53cml0ZSgiIikKICAgICAgICAgICAgIGYuY2xvc2UoKQogICAgICAgICBleGNlcHQ6CkBAIC0yODcsNyArMjg3LDcgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgIyB3cml0ZSBhIHN0YXR1cyB0byB0aGUgZmlsZS4gVGhpcyBpcyBuZWVkZWQgZm9yIHRoZSAtayBvcHRpb24KICAgICAgICAgICAgICMgb2YgQml0QmFrZQotICAgICAgICAgICAgZyA9IGZpbGUoZXZlbnQuZGF0YS5nZXRWYXIoJ1RNUERJUicsIFRydWUpKyIvdGluZGVyLXN0YXR1cyIsICd3JykKKyAgICAgICAgICAgIGcgPSBvcGVuKGV2ZW50LmRhdGEuZ2V0VmFyKCdUTVBESVInLCBUcnVlKSsiL3RpbmRlci1zdGF0dXMiLCAndycpCiAgICAgICAgICAgICBnLndyaXRlKCIiKQogICAgICAgICAgICAgZy5jbG9zZSgpCiAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgpAQCAtMzE5LDE0ICszMTksMTQgQEAKICAgICAgICAgbG9nICs9ICI8LS0tIFRJTkRFUkJPWCBQYWNrYWdlICVzIGZhaWxlZCAoRkFJTFVSRSlcbiIgJSBldmVudC5kYXRhLmdldFZhcignUEYnLCBUcnVlKQogICAgICAgICBzdGF0dXMgPSAyMDAKICAgICAgICAgIyByZW1lbWJlciB0aGUgZmFpbHVyZSBmb3IgdGhlIC1rIGNhc2UKLSAgICAgICAgaCA9IGZpbGUoZXZlbnQuZGF0YS5nZXRWYXIoJ1RNUERJUicsIFRydWUpKyIvdGluZGVyLXN0YXR1cyIsICd3JykKKyAgICAgICAgaCA9IG9wZW4oZXZlbnQuZGF0YS5nZXRWYXIoJ1RNUERJUicsIFRydWUpKyIvdGluZGVyLXN0YXR1cyIsICd3JykKICAgICAgICAgaC53cml0ZSgiMjAwIikKICAgICBlbGlmIG5hbWUgPT0gIkJ1aWxkQ29tcGxldGVkIjoKICAgICAgICAgbG9nICs9ICJCdWlsZCBDb21wbGV0ZWRcbiIKICAgICAgICAgc3RhdHVzID0gMTAwCiAgICAgICAgICMgQ2hlY2sgaWYgd2UgaGF2ZSBhIG9sZCBzdGF0dXMuLi4KICAgICAgICAgdHJ5OgotICAgICAgICAgICAgaCA9IGZpbGUoZXZlbnQuZGF0YS5nZXRWYXIoJ1RNUERJUicsVHJ1ZSkrJy90aW5kZXItc3RhdHVzJywgJ3InKQorICAgICAgICAgICAgaCA9IG9wZW4oZXZlbnQuZGF0YS5nZXRWYXIoJ1RNUERJUicsVHJ1ZSkrJy90aW5kZXItc3RhdHVzJywgJ3InKQogICAgICAgICAgICAgc3RhdHVzID0gaW50KGgucmVhZCgpKQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBwYXNzCkBAIC0zNDIsNyArMzQyLDcgQEAKICAgICAgICAgbG9nICs9ICJFcnJvcjpXYXMgUnVudGltZTogJWRcbiIgJSBldmVudC5pc1J1bnRpbWUoKQogICAgICAgICBzdGF0dXMgPSAyMDAKICAgICAgICAgIyByZW1lbWJlciB0aGUgZmFpbHVyZSBmb3IgdGhlIC1rIGNhc2UKLSAgICAgICAgaCA9IGZpbGUoZXZlbnQuZGF0YS5nZXRWYXIoJ1RNUERJUicsIFRydWUpKyIvdGluZGVyLXN0YXR1cyIsICd3JykKKyAgICAgICAgaCA9IG9wZW4oZXZlbnQuZGF0YS5nZXRWYXIoJ1RNUERJUicsIFRydWUpKyIvdGluZGVyLXN0YXR1cyIsICd3JykKICAgICAgICAgaC53cml0ZSgiMjAwIikKIAogICAgICMgbm93IHBvc3QgdGhlIGxvZwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90b2FzdGVyLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3RvYXN0ZXIuYmJjbGFzcwppbmRleCAxYTcwZjE0Li40YmRkZjM0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3RvYXN0ZXIuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3RvYXN0ZXIuYmJjbGFzcwpAQCAtMzMsNiArMzMsNyBAQAogCiAgICAgZGVmIF9nZXRfZ2l0X2JyYW5jaChsYXllcl9wYXRoKToKICAgICAgICAgYnJhbmNoID0gc3VicHJvY2Vzcy5Qb3BlbigiZ2l0IHN5bWJvbGljLXJlZiBIRUFEIDI+L2Rldi9udWxsICIsIGN3ZD1sYXllcl9wYXRoLCBzaGVsbD1UcnVlLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKS5jb21tdW5pY2F0ZSgpWzBdCisgICAgICAgIGJyYW5jaCA9IGJyYW5jaC5kZWNvZGUoJ3V0Zi04JykKICAgICAgICAgYnJhbmNoID0gYnJhbmNoLnJlcGxhY2UoJ3JlZnMvaGVhZHMvJywgJycpLnJzdHJpcCgpCiAgICAgICAgIHJldHVybiBicmFuY2gKIApAQCAtMTM1LDYwICsxMzYsMTYgQEAKIAogIyAyLiBEdW1wIG91dHB1dCBpbWFnZSBmaWxlcyBpbmZvcm1hdGlvbgogCi1weXRob24gdG9hc3Rlcl9pbWFnZV9kdW1wZGF0YSgpIHsKLSAgICAiIiIKLSAgICBJbWFnZSBmaWxlbmFtZSBmb3Igb3V0cHV0IGltYWdlcyBpcyBub3Qgc3RhbmRhcmRpemVkLgotICAgIGltYWdlX3R5cGVzLmJiY2xhc3Mgd2lsbCBzcGVsbCBvdXQgSU1BR0VfQ01EX3h4eCB2YXJpYWJsZXMgdGhhdCBhY3R1YWxseQotICAgIGhhdmUgaGFyZGNvZGVkIHdheXMgdG8gY3JlYXRlIGltYWdlIGZpbGUgbmFtZXMgaW4gdGhlbS4KLSAgICBTbyB3ZSBsb29rIGZvciBmaWxlcyBzdGFydGluZyB3aXRoIHRoZSBzZXQgbmFtZS4KLQotICAgIFdlIGFsc28gbG9vayBmb3Igb3RoZXIgZmlsZXMgaW4gdGhlIGltYWdlcy8gZGlyZWN0b3J5IHdoaWNoIGRvbid0Ci0gICAgbWF0Y2ggSU1BR0VfTkFNRSwgc3VjaCBhcyB0aGUga2VybmVsIGJ6SW1hZ2UsIG1vZHVsZXMgdGFyYmFsbCBldGMuCi0gICAgIiIiCi0KLSAgICBkaXJfdG9fd2FsayA9IGQuZ2V0VmFyKCdERVBMT1lfRElSX0lNQUdFJywgVHJ1ZSk7Ci0gICAgaW1hZ2VfbmFtZSA9IGQuZ2V0VmFyKCdJTUFHRV9OQU1FJywgVHJ1ZSk7Ci0gICAgaW1hZ2VfaW5mb19kYXRhID0ge30KLSAgICBhcnRpZmFjdF9pbmZvX2RhdGEgPSB7fQotCi0gICAgIyBjb2xsZWN0IGFsbCBpbWFnZXMgYW5kIGFydGlmYWN0cyBpbiB0aGUgaW1hZ2VzIGRpcmVjdG9yeQotICAgIGZvciBkaXJwYXRoLCBkaXJuYW1lcywgZmlsZW5hbWVzIGluIG9zLndhbGsoZGlyX3RvX3dhbGspOgotICAgICAgICBmb3IgZmlsZW5hbWUgaW4gZmlsZW5hbWVzOgotICAgICAgICAgICAgZnVsbF9wYXRoID0gb3MucGF0aC5qb2luKGRpcnBhdGgsIGZpbGVuYW1lKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGlmIGZpbGVuYW1lLnN0YXJ0c3dpdGgoaW1hZ2VfbmFtZSk6Ci0gICAgICAgICAgICAgICAgICAgICMgaW1hZ2UKLSAgICAgICAgICAgICAgICAgICAgaW1hZ2VfaW5mb19kYXRhW2Z1bGxfcGF0aF0gPSBvcy5zdGF0KGZ1bGxfcGF0aCkuc3Rfc2l6ZQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICMgb3RoZXIgbm9uLWltYWdlIGFydGlmYWN0Ci0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzbGluayhmdWxsX3BhdGgpOgotICAgICAgICAgICAgICAgICAgICAgICAgYXJ0aWZhY3RfaW5mb19kYXRhW2Z1bGxfcGF0aF0gPSBvcy5zdGF0KGZ1bGxfcGF0aCkuc3Rfc2l6ZQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50Lk1ldGFkYXRhRXZlbnQoIk9TRXJyb3JFeGNlcHRpb24iLCBlKSwgZCkKLQotICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuTWV0YWRhdGFFdmVudCgiSW1hZ2VGaWxlU2l6ZSIsIGltYWdlX2luZm9fZGF0YSksIGQpCi0gICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5NZXRhZGF0YUV2ZW50KCJBcnRpZmFjdEZpbGVTaXplIiwgYXJ0aWZhY3RfaW5mb19kYXRhKSwgZCkKLX0KLQogcHl0aG9uIHRvYXN0ZXJfYXJ0aWZhY3RfZHVtcGRhdGEoKSB7CiAgICAgIiIiCi0gICAgRHVtcCBkYXRhIGFib3V0IGFydGlmYWN0cyBpbiB0aGUgU0RLX0RFUExPWSBkaXJlY3RvcnkKKyAgICBEdW1wIGRhdGEgYWJvdXQgU0RLIHZhcmlhYmxlcwogICAgICIiIgogCi0gICAgZGlyX3RvX3dhbGsgPSBkLmdldFZhcigiU0RLX0RFUExPWSIsIFRydWUpCi0gICAgYXJ0aWZhY3RfaW5mb19kYXRhID0ge30KKyAgICBldmVudF9kYXRhID0geworICAgICAgIlRPT0xDSEFJTl9PVVRQVVROQU1FIjogZC5nZXRWYXIoIlRPT0xDSEFJTl9PVVRQVVROQU1FIiwgVHJ1ZSkKKyAgICB9CiAKLSAgICAjIGNvbGxlY3QgYWxsIGFydGlmYWN0cyBpbiB0aGUgc2RrIGRpcmVjdG9yeQotICAgIGZvciBkaXJwYXRoLCBkaXJuYW1lcywgZmlsZW5hbWVzIGluIG9zLndhbGsoZGlyX3RvX3dhbGspOgotICAgICAgICBmb3IgZmlsZW5hbWUgaW4gZmlsZW5hbWVzOgotICAgICAgICAgICAgZnVsbF9wYXRoID0gb3MucGF0aC5qb2luKGRpcnBhdGgsIGZpbGVuYW1lKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzbGluayhmdWxsX3BhdGgpOgotICAgICAgICAgICAgICAgICAgICBhcnRpZmFjdF9pbmZvX2RhdGFbZnVsbF9wYXRoXSA9IG9zLnN0YXQoZnVsbF9wYXRoKS5zdF9zaXplCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuTWV0YWRhdGFFdmVudCgiT1NFcnJvckV4Y2VwdGlvbiIsIGUpLCBkKQotCi0gICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5NZXRhZGF0YUV2ZW50KCJBcnRpZmFjdEZpbGVTaXplIiwgYXJ0aWZhY3RfaW5mb19kYXRhKSwgZCkKKyAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50Lk1ldGFkYXRhRXZlbnQoIlNES0FydGlmYWN0SW5mbyIsIGV2ZW50X2RhdGEpLCBkKQogfQogCiAjIGNvbGxlY3QgbGlzdCBvZiBidWlsZHN0YXRzIGZpbGVzIGJhc2VkIG9uIGZpcmVkIGV2ZW50czsgd2hlbiB0aGUgYnVpbGQgY29tcGxldGVzLCBjb2xsZWN0IGFsbCBzdGF0cyBhbmQgZmlyZSBhbiBldmVudCB3aXRoIGNvbGxlY3RlZCBkYXRhCkBAIC0zMzEsMTUgKzI4OCwyMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlc1t0YXJnZXRdW2RlcGVuZHNuYW1lXSA9IHsnc2l6ZSc6IDAsICdkZXBlbmRzJyA6IFtdfQogICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzW3RhcmdldF1bcG5hbWVdWydkZXBlbmRzJ10uYXBwZW5kKChkZXBlbmRzbmFtZSwgZGVwdHlwZSkpCiAKLSAgICAgICAgICAgIHdpdGggb3BlbigiJXMvZmlsZXMtaW4taW1hZ2UudHh0IiAlIGluc3RhbGxlZF9pbWdfcGF0aCwgInIiKSBhcyBmaW46Ci0gICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZmluOgotICAgICAgICAgICAgICAgICAgICBsYyA9IFsgeCBmb3IgeCBpbiBsaW5lLnN0cmlwKCkuc3BsaXQoIiAiKSBpZiBsZW4oeCkgPiAwIF0KLSAgICAgICAgICAgICAgICAgICAgaWYgbGNbMF0uc3RhcnRzd2l0aCgibCIpOgotICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXNbdGFyZ2V0XVsnc3ltcyddLmFwcGVuZChsYykKLSAgICAgICAgICAgICAgICAgICAgZWxpZiBsY1swXS5zdGFydHN3aXRoKCJkIik6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmaWxlc1t0YXJnZXRdWydkaXJzJ10uYXBwZW5kKGxjKQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXNbdGFyZ2V0XVsnZmlsZXMnXS5hcHBlbmQobGMpCisgICAgICAgICAgICAjIGZpbGVzLWluLWltYWdlLnR4dCBpcyBvbmx5IGdlbmVyYXRlZCBpZiBhbiBpbWFnZSBmaWxlIGlzIGNyZWF0ZWQsCisgICAgICAgICAgICAjIHNvIHRoZSBmaWxlIGVudHJpZXMgKCdzeW1zJywgJ2RpcnMnLCAnZmlsZXMnKSBmb3IgYSB0YXJnZXQgd2lsbCBiZQorICAgICAgICAgICAgIyBlbXB0eSBmb3Igcm9vdGZzIGJ1aWxkcyBhbmQgb3RoZXIgImltYWdlIiB0YXNrcyB3aGljaCBkb24ndAorICAgICAgICAgICAgIyBwcm9kdWNlIGltYWdlIGZpbGVzCisgICAgICAgICAgICAjIChlLmcuICJiaXRiYWtlIGNvcmUtaW1hZ2UtbWluaW1hbCAtYyBwb3B1bGF0ZV9zZGsiKQorICAgICAgICAgICAgZmlsZXNfaW5faW1hZ2VfcGF0aCA9ICIlcy9maWxlcy1pbi1pbWFnZS50eHQiICUgaW5zdGFsbGVkX2ltZ19wYXRoCisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhmaWxlc19pbl9pbWFnZV9wYXRoKToKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZXNfaW5faW1hZ2VfcGF0aCwgInIiKSBhcyBmaW46CisgICAgICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGZpbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGxjID0gWyB4IGZvciB4IGluIGxpbmUuc3RyaXAoKS5zcGxpdCgiICIpIGlmIGxlbih4KSA+IDAgXQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbGNbMF0uc3RhcnRzd2l0aCgibCIpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzW3RhcmdldF1bJ3N5bXMnXS5hcHBlbmQobGMpCisgICAgICAgICAgICAgICAgICAgICAgICBlbGlmIGxjWzBdLnN0YXJ0c3dpdGgoImQiKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlc1t0YXJnZXRdWydkaXJzJ10uYXBwZW5kKGxjKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlc1t0YXJnZXRdWydmaWxlcyddLmFwcGVuZChsYykKIAogICAgICAgICAgICAgZm9yIHBuYW1lIGluIGltYWdlc1t0YXJnZXRdOgogICAgICAgICAgICAgICAgIGlmIG5vdCBwbmFtZSBpbiBhbGxwa2dzOgpAQCAtMzYwLDE1ICszMjQsMTggQEAKIAogfQogCi0jIGR1bXAgaW5mb3JtYXRpb24gcmVsYXRlZCB0byBsaWNlbnNlIG1hbmlmZXN0IHBhdGgKLQotcHl0aG9uIHRvYXN0ZXJfbGljZW5zZW1hbmlmZXN0X2R1bXAoKSB7Ci0gICAgZGVwbG95X2RpciA9IGQuZ2V0VmFyKCdERVBMT1lfRElSJywgVHJ1ZSk7Ci0gICAgaW1hZ2VfbmFtZSA9IGQuZ2V0VmFyKCdJTUFHRV9OQU1FJywgVHJ1ZSk7Ci0KLSAgICBkYXRhID0geyAnZGVwbG95X2RpcicgOiBkZXBsb3lfZGlyLCAnaW1hZ2VfbmFtZScgOiBpbWFnZV9uYW1lIH0KLQotICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuTWV0YWRhdGFFdmVudCgiTGljZW5zZU1hbmlmZXN0UGF0aCIsIGRhdGEpLCBkKQorIyBnZXQgbGlzdCBvZiBhcnRpZmFjdHMgZnJvbSBzc3RhdGUgbWFuaWZlc3QKK3B5dGhvbiB0b2FzdGVyX2FydGlmYWN0cygpIHsKKyAgICBpZiBlLnRhc2tuYW1lIGluIFsiZG9fZGVwbG95IiwgImRvX2ltYWdlX2NvbXBsZXRlIiwgImRvX3BvcHVsYXRlX3NkayIsICJkb19wb3B1bGF0ZV9zZGtfZXh0Il06CisgICAgICAgIGQyID0gZC5jcmVhdGVDb3B5KCkKKyAgICAgICAgZDIuc2V0VmFyKCdGSUxFJywgZS50YXNrZmlsZSkKKyAgICAgICAgZDIuc2V0VmFyKCdTU1RBVEVfTUFOTUFDSCcsIGQyLmV4cGFuZCgiJHtNQUNISU5FfSIpKQorICAgICAgICBtYW5pZmVzdCA9IG9lLnNzdGF0ZXNpZy5zc3RhdGVfZ2V0X21hbmlmZXN0X2ZpbGVuYW1lKGUudGFza25hbWVbMzpdLCBkMilbMF0KKyAgICAgICAgaWYgb3MuYWNjZXNzKG1hbmlmZXN0LCBvcy5SX09LKToKKyAgICAgICAgICAgIHdpdGggb3BlbihtYW5pZmVzdCkgYXMgZm1hbmlmZXN0OgorICAgICAgICAgICAgICAgIGFydGlmYWN0cyA9IFtmbmFtZS5zdHJpcCgpIGZvciBmbmFtZSBpbiBmbWFuaWZlc3RdCisgICAgICAgICAgICAgICAgZGF0YSA9IHsidGFzayI6IGUudGFza2lkLCAiYXJ0aWZhY3RzIjogYXJ0aWZhY3RzfQorICAgICAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuTWV0YWRhdGFFdmVudCgiVGFza0FydGlmYWN0cyIsIGRhdGEpLCBkMikKIH0KIAogIyBzZXQgZXZlbnQgaGFuZGxlcnMKQEAgLTM4MSwxNyArMzQ4LDE3IEBACiBhZGRoYW5kbGVyIHRvYXN0ZXJfYnVpbGRoaXN0b3J5X2R1bXAKIHRvYXN0ZXJfYnVpbGRoaXN0b3J5X2R1bXBbZXZlbnRtYXNrXSA9ICJiYi5ldmVudC5CdWlsZENvbXBsZXRlZCIKIAorYWRkaGFuZGxlciB0b2FzdGVyX2FydGlmYWN0cwordG9hc3Rlcl9hcnRpZmFjdHNbZXZlbnRtYXNrXSA9ICJiYi5ydW5xdWV1ZS5ydW5RdWV1ZVRhc2tTa2lwcGVkIGJiLnJ1bnF1ZXVlLnJ1blF1ZXVlVGFza0NvbXBsZXRlZCIKKwogZG9fcGFja2FnZWRhdGFfc2V0c2NlbmVbcG9zdGZ1bmNzXSArPSAidG9hc3Rlcl9wYWNrYWdlX2R1bXBkYXRhICIKIGRvX3BhY2thZ2VkYXRhX3NldHNjZW5lW3ZhcmRlcHNleGNsdWRlXSArPSAidG9hc3Rlcl9wYWNrYWdlX2R1bXBkYXRhICIKIAogZG9fcGFja2FnZVtwb3N0ZnVuY3NdICs9ICJ0b2FzdGVyX3BhY2thZ2VfZHVtcGRhdGEgIgogZG9fcGFja2FnZVt2YXJkZXBzZXhjbHVkZV0gKz0gInRvYXN0ZXJfcGFja2FnZV9kdW1wZGF0YSAiCiAKLWRvX2ltYWdlX2NvbXBsZXRlW3Bvc3RmdW5jc10gKz0gInRvYXN0ZXJfaW1hZ2VfZHVtcGRhdGEgIgotZG9faW1hZ2VfY29tcGxldGVbdmFyZGVwc2V4Y2x1ZGVdICs9ICJ0b2FzdGVyX2ltYWdlX2R1bXBkYXRhICIKLQotZG9fcm9vdGZzW3Bvc3RmdW5jc10gKz0gInRvYXN0ZXJfbGljZW5zZW1hbmlmZXN0X2R1bXAgIgotZG9fcm9vdGZzW3ZhcmRlcHNleGNsdWRlXSArPSAidG9hc3Rlcl9saWNlbnNlbWFuaWZlc3RfZHVtcCAiCi0KIGRvX3BvcHVsYXRlX3Nka1twb3N0ZnVuY3NdICs9ICJ0b2FzdGVyX2FydGlmYWN0X2R1bXBkYXRhICIKIGRvX3BvcHVsYXRlX3Nka1t2YXJkZXBzZXhjbHVkZV0gKz0gInRvYXN0ZXJfYXJ0aWZhY3RfZHVtcGRhdGEgIgorCitkb19wb3B1bGF0ZV9zZGtfZXh0W3Bvc3RmdW5jc10gKz0gInRvYXN0ZXJfYXJ0aWZhY3RfZHVtcGRhdGEgIgorZG9fcG9wdWxhdGVfc2RrX2V4dFt2YXJkZXBzZXhjbHVkZV0gKz0gInRvYXN0ZXJfYXJ0aWZhY3RfZHVtcGRhdGEgIgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdG9vbGNoYWluLXNjcmlwdHMtYmFzZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90b29sY2hhaW4tc2NyaXB0cy1iYXNlLmJiY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQ4OWI5ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdG9vbGNoYWluLXNjcmlwdHMtYmFzZS5iYmNsYXNzCkBAIC0wLDAgKzEsMTEgQEAKKyNUaGlzIGZ1bmN0aW9uIGNyZWF0ZSBhIHZlcnNpb24gaW5mb3JtYXRpb24gZmlsZQordG9vbGNoYWluX2NyZWF0ZV9zZGtfdmVyc2lvbiAoKSB7CisJbG9jYWwgdmVyc2lvbmZpbGU9JDEKKwlybSAtZiAkdmVyc2lvbmZpbGUKKwl0b3VjaCAkdmVyc2lvbmZpbGUKKwllY2hvICdEaXN0cm86ICR7RElTVFJPfScgPj4gJHZlcnNpb25maWxlCisJZWNobyAnRGlzdHJvIFZlcnNpb246ICR7RElTVFJPX1ZFUlNJT059JyA+PiAkdmVyc2lvbmZpbGUKKwllY2hvICdNZXRhZGF0YSBSZXZpc2lvbjogJHtNRVRBREFUQV9SRVZJU0lPTn0nID4+ICR2ZXJzaW9uZmlsZQorCWVjaG8gJ1RpbWVzdGFtcDogJHtEQVRFVElNRX0nID4+ICR2ZXJzaW9uZmlsZQorfQordG9vbGNoYWluX2NyZWF0ZV9zZGtfdmVyc2lvblt2YXJkZXBzZXhjbHVkZV0gPSAiREFURVRJTUUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Rvb2xjaGFpbi1zY3JpcHRzLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Rvb2xjaGFpbi1zY3JpcHRzLmJiY2xhc3MKaW5kZXggMmUyYzkzYS4uMGUxMWYyZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90b29sY2hhaW4tc2NyaXB0cy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdG9vbGNoYWluLXNjcmlwdHMuYmJjbGFzcwpAQCAtMSw0ICsxLDQgQEAKLWluaGVyaXQgc2l0ZWluZm8ga2VybmVsLWFyY2gKK2luaGVyaXQgdG9vbGNoYWluLXNjcmlwdHMtYmFzZSBzaXRlaW5mbyBrZXJuZWwtYXJjaAogCiAjIFdlIHdhbnQgdG8gYmUgYWJsZSB0byBjaGFuZ2UgdGhlIHZhbHVlIG9mIE1VTFRJTUFDSF9UQVJHRVRfU1lTLCBiZWNhdXNlIGl0CiAjIGRvZXNuJ3QgYWx3YXlzIG1hdGNoIG91ciBleHBlY3RhdGlvbnMuLi4gYnV0IHdlIGRlZmF1bHQgdG8gdGhlIHN0b2NrIHZhbHVlCkBAIC02LDkgKzYsMTMgQEAKIFRBUkdFVF9DQ19BUkNIX2FwcGVuZF9saWJjLXVjbGliYyA9ICIgLW11Y2xpYmMiCiBUQVJHRVRfQ0NfQVJDSF9hcHBlbmRfbGliYy1tdXNsID0gIiAtbW11c2wiCiAKKyMgZGVmYXVsdCBkZWJ1ZyBwcmVmaXggbWFwIGlzbid0IHZhbGlkIGluIHRoZSBTREsKK0RFQlVHX1BSRUZJWF9NQVAgPSAiIgorCiAjIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyBhbiBlbnZpcm9ubWVudC1zZXR1cC1zY3JpcHQgZm9yIHVzZSBpbiBhIGRlcGxveWFibGUgU0RLCiB0b29sY2hhaW5fY3JlYXRlX3Nka19lbnZfc2NyaXB0ICgpIHsKLQkjIENyZWF0ZSBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQKKwkjIENyZWF0ZSBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQuICBSZW1lbWJlciB0aGF0ICRTREtUQVJHRVRTWVNST09UIHNob3VsZAorCSMgb25seSBiZSBleHBhbmRlZCBvbiB0aGUgdGFyZ2V0IGF0IHJ1bnRpbWUuCiAJYmFzZV9zYmluZGlyPSR7MTA6LSR7YmFzZV9zYmluZGlyX25hdGl2ZXNka319CiAJYmFzZV9iaW5kaXI9JHs5Oi0ke2Jhc2VfYmluZGlyX25hdGl2ZXNka319CiAJc2JpbmRpcj0kezg6LSR7c2JpbmRpcl9uYXRpdmVzZGt9fQpAQCAtMjksNyArMzMsNyBAQAogCWVjaG8gImV4cG9ydCBQQVRIPSRzZGtwYXRobmF0aXZlJGJpbmRpcjokc2RrcGF0aG5hdGl2ZSRzYmluZGlyOiRzZGtwYXRobmF0aXZlJGJhc2VfYmluZGlyOiRzZGtwYXRobmF0aXZlJGJhc2Vfc2JpbmRpcjokc2RrcGF0aG5hdGl2ZSRiaW5kaXIvLi4vJHtIT1NUX1NZU30vYmluOiRzZGtwYXRobmF0aXZlJGJpbmRpci8ke1RBUkdFVF9TWVN9IiRFWFRSQVBBVEgnOiRQQVRIJyA+PiAkc2NyaXB0CiAJZWNobyAiZXhwb3J0IENDQUNIRV9QQVRIPSRzZGtwYXRobmF0aXZlJGJpbmRpcjokc2RrcGF0aG5hdGl2ZSRiaW5kaXIvLi4vJHtIT1NUX1NZU30vYmluOiRzZGtwYXRobmF0aXZlJGJpbmRpci8ke1RBUkdFVF9TWVN9IiRFWFRSQVBBVEgnOiRDQ0FDSEVfUEFUSCcgPj4gJHNjcmlwdAogCWVjaG8gJ2V4cG9ydCBQS0dfQ09ORklHX1NZU1JPT1RfRElSPSRTREtUQVJHRVRTWVNST09UJyA+PiAkc2NyaXB0Ci0JZWNobyAnZXhwb3J0IFBLR19DT05GSUdfUEFUSD0kU0RLVEFSR0VUU1lTUk9PVCciJGxpYmRpciInL3BrZ2NvbmZpZycgPj4gJHNjcmlwdAorCWVjaG8gJ2V4cG9ydCBQS0dfQ09ORklHX1BBVEg9JFNES1RBUkdFVFNZU1JPT1QnIiRsaWJkaXIiJy9wa2djb25maWc6JFNES1RBUkdFVFNZU1JPT1QnIiRwcmVmaXgiJy9zaGFyZS9wa2djb25maWcnID4+ICRzY3JpcHQKIAllY2hvICdleHBvcnQgQ09ORklHX1NJVEU9JHtTREtQQVRIfS9zaXRlLWNvbmZpZy0nIiR7bXVsdGltYWNoX3RhcmdldF9zeXN9IiA+PiAkc2NyaXB0CiAJZWNobyAiZXhwb3J0IE9FQ09SRV9OQVRJVkVfU1lTUk9PVD1cIiRzZGtwYXRobmF0aXZlXCIiID4+ICRzY3JpcHQKIAllY2hvICdleHBvcnQgT0VDT1JFX1RBUkdFVF9TWVNST09UPSIkU0RLVEFSR0VUU1lTUk9PVCInID4+ICRzY3JpcHQKQEAgLTg5LDE5ICs5MywxOSBAQAogIyBBcHBlbmQgZW52aXJvbm1lbnQgc3Vic2NyaXB0cwogaWYgWyAtZCAiXCRPRUNPUkVfVEFSR0VUX1NZU1JPT1QvZW52aXJvbm1lbnQtc2V0dXAuZCIgXTsgdGhlbgogICAgIGZvciBlbnZmaWxlIGluIFwkT0VDT1JFX1RBUkdFVF9TWVNST09UL2Vudmlyb25tZW50LXNldHVwLmQvKi5zaDsgZG8KLQkgICAgc291cmNlIFwkZW52ZmlsZQorCSAgICAuIFwkZW52ZmlsZQogICAgIGRvbmUKIGZpCiBpZiBbIC1kICJcJE9FQ09SRV9OQVRJVkVfU1lTUk9PVC9lbnZpcm9ubWVudC1zZXR1cC5kIiBdOyB0aGVuCiAgICAgZm9yIGVudmZpbGUgaW4gXCRPRUNPUkVfTkFUSVZFX1NZU1JPT1QvZW52aXJvbm1lbnQtc2V0dXAuZC8qLnNoOyBkbwotCSAgICBzb3VyY2UgXCRlbnZmaWxlCisJICAgIC4gXCRlbnZmaWxlCiAgICAgZG9uZQogZmkKIEVPRgogfQogCiAjd2UgZ2V0IHRoZSBjYWNoZWQgc2l0ZSBjb25maWcgaW4gdGhlIHJ1bnRpbWUKLVRPT0xDSEFJTl9DT05GSUdTSVRFX05PQ0FDSEUgPSAiJHtAc2l0ZWluZm9fZ2V0X2ZpbGVzKGQsIFRydWUpfSIKK1RPT0xDSEFJTl9DT05GSUdTSVRFX05PQ0FDSEUgPSAiJHtAc2l0ZWluZm9fZ2V0X2ZpbGVzKGQpfSIKIFRPT0xDSEFJTl9DT05GSUdTSVRFX1NZU1JPT1RDQUNIRSA9ICIke1NUQUdJTkdfRElSfS8ke01MUFJFRklYfSR7TUFDSElORX0vJHt0YXJnZXRfZGF0YWRpcn0vJHtUQVJHRVRfU1lTfV9jb25maWdfc2l0ZS5kIgogVE9PTENIQUlOX05FRURfQ09ORklHU0lURV9DQUNIRSA/Pz0gInZpcnR1YWwvJHtNTFBSRUZJWH1saWJjIG5jdXJzZXMiCiAKQEAgLTEzMiwxOCArMTM2LDYgQEAKICMgVGhlIGltbWVkaWF0ZSBleHBhbnNpb24gYWJvdmUgY2FuIHJlc3VsdCBpbiB1bndhbnRlZCBwYXRoIGRlcGVuZGVuY2llcyBoZXJlCiB0b29sY2hhaW5fY3JlYXRlX3Nka19zaXRlY29uZmlnW3ZhcmRlcHNleGNsdWRlXSA9ICJUT09MQ0hBSU5fQ09ORklHU0lURV9TWVNST09UQ0FDSEUiCiAKLSNUaGlzIGZ1bmN0aW9uIGNyZWF0ZSBhIHZlcnNpb24gaW5mb3JtYXRpb24gZmlsZQotdG9vbGNoYWluX2NyZWF0ZV9zZGtfdmVyc2lvbiAoKSB7Ci0JbG9jYWwgdmVyc2lvbmZpbGU9JDEKLQlybSAtZiAkdmVyc2lvbmZpbGUKLQl0b3VjaCAkdmVyc2lvbmZpbGUKLQllY2hvICdEaXN0cm86ICR7RElTVFJPfScgPj4gJHZlcnNpb25maWxlCi0JZWNobyAnRGlzdHJvIFZlcnNpb246ICR7RElTVFJPX1ZFUlNJT059JyA+PiAkdmVyc2lvbmZpbGUKLQllY2hvICdNZXRhZGF0YSBSZXZpc2lvbjogJHtNRVRBREFUQV9SRVZJU0lPTn0nID4+ICR2ZXJzaW9uZmlsZQotCWVjaG8gJ1RpbWVzdGFtcDogJHtEQVRFVElNRX0nID4+ICR2ZXJzaW9uZmlsZQotfQotdG9vbGNoYWluX2NyZWF0ZV9zZGtfdmVyc2lvblt2YXJkZXBzZXhjbHVkZV0gPSAiREFURVRJTUUiCi0KIHB5dGhvbiBfX2Fub255bW91cyAoKSB7CiAgICAgaW1wb3J0IG9lLmNsYXNzZXh0ZW5kCiAgICAgZGVwcyA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Vib290LWNvbmZpZy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91Ym9vdC1jb25maWcuYmJjbGFzcwppbmRleCBjYjA2MWFmLi4zZjc2MGYyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Vib290LWNvbmZpZy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdWJvb3QtY29uZmlnLmJiY2xhc3MKQEAgLTMsNyArMyw3IEBACiAjIFRoZSBmb3JtYXQgdG8gc3BlY2lmeSBpdCwgaW4gdGhlIG1hY2hpbmUsIGlzOgogIwogIyBVQk9PVF9DT05GSUcgPz89IDxkZWZhdWx0PgotIyBVQk9PVF9DT05GSUdbZm9vXSA9ICJjb25maWcsaW1hZ2VzIgorIyBVQk9PVF9DT05GSUdbZm9vXSA9ICJjb25maWcsaW1hZ2VzLGJpbmFyeSIKICMKICMgb3IKICMKQEAgLTExLDkgKzExLDEzIEBACiAjCiAjIENvcHlyaWdodCAyMDEzLCAyMDE0IChDKSBPLlMuIFN5c3RlbXMgU29mdHdhcmUgTFREQS4KIAorVUJPT1RfQklOQVJZID89ICJ1LWJvb3QuJHtVQk9PVF9TVUZGSVh9IgorCiBweXRob24gKCkgewogICAgIHVib290bWFjaGluZSA9IGQuZ2V0VmFyKCJVQk9PVF9NQUNISU5FIiwgVHJ1ZSkKICAgICB1Ym9vdGNvbmZpZ2ZsYWdzID0gZC5nZXRWYXJGbGFncygnVUJPT1RfQ09ORklHJykKKyAgICB1Ym9vdGJpbmFyeSA9IGQuZ2V0VmFyKCdVQk9PVF9CSU5BUlknLCBUcnVlKQorICAgIHVib290YmluYXJpZXMgPSBkLmdldFZhcignVUJPT1RfQklOQVJJRVMnLCBUcnVlKQogICAgICMgVGhlICJkb2MiIHZhcmZsYWcgaXMgc3BlY2lhbCwgd2UgZG9uJ3Qgd2FudCB0byBzZWUgaXQgaGVyZQogICAgIHVib290Y29uZmlnZmxhZ3MucG9wKCdkb2MnLCBOb25lKQogCkBAIC0yNyw2ICszMSw5IEBACiAgICAgaWYgdWJvb3RtYWNoaW5lIGFuZCB1Ym9vdGNvbmZpZ2ZsYWdzOgogICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiWW91IGNhbm5vdCB1c2UgVUJPT1RfTUFDSElORSBhbmQgVUJPT1RfQ09ORklHIGF0IHRoZSBzYW1lIHRpbWUuIikKIAorICAgIGlmIHVib290Y29uZmlnZmxhZ3MgYW5kIHVib290YmluYXJpZXM6CisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJZb3UgY2Fubm90IHVzZSBVQk9PVF9CSU5BUklFUyBhcyBpdCBpcyBpbnRlcm5hbCB0byB1Ym9vdF9jb25maWcuYmJjbGFzcy4iKQorCiAgICAgaWYgbm90IHVib290Y29uZmlnZmxhZ3M6CiAgICAgICAgIHJldHVybgogCkBAIC0zNiwxMyArNDMsMTkgQEAKICAgICAgICAgICAgIGZvciBmLCB2IGluIHVib290Y29uZmlnZmxhZ3MuaXRlbXMoKToKICAgICAgICAgICAgICAgICBpZiBjb25maWcgPT0gZjogCiAgICAgICAgICAgICAgICAgICAgIGl0ZW1zID0gdi5zcGxpdCgnLCcpCi0gICAgICAgICAgICAgICAgICAgIGlmIGl0ZW1zWzBdIGFuZCBsZW4oaXRlbXMpID4gMjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCdPbmx5IGNvbmZpZyxpbWFnZXMgY2FuIGJlIHNwZWNpZmllZCEnKQorICAgICAgICAgICAgICAgICAgICBpZiBpdGVtc1swXSBhbmQgbGVuKGl0ZW1zKSA+IDM6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgnT25seSBjb25maWcsaW1hZ2VzLGJpbmFyeSBjYW4gYmUgc3BlY2lmaWVkIScpCiAgICAgICAgICAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdVQk9PVF9NQUNISU5FJywgJyAnICsgaXRlbXNbMF0pCiAgICAgICAgICAgICAgICAgICAgICMgSU1BR0VfRlNUWVBFUyBhcHBlbmRpbmcKICAgICAgICAgICAgICAgICAgICAgaWYgbGVuKGl0ZW1zKSA+IDEgYW5kIGl0ZW1zWzFdOgogICAgICAgICAgICAgICAgICAgICAgICAgYmIuZGVidWcoMSwgIkFwcGVuZGluZyAnJXMnIHRvIElNQUdFX0ZTVFlQRVMuIiAlIGl0ZW1zWzFdKQogICAgICAgICAgICAgICAgICAgICAgICAgZC5hcHBlbmRWYXIoJ0lNQUdFX0ZTVFlQRVMnLCAnICcgKyBpdGVtc1sxXSkKKyAgICAgICAgICAgICAgICAgICAgaWYgbGVuKGl0ZW1zKSA+IDIgYW5kIGl0ZW1zWzJdOgorICAgICAgICAgICAgICAgICAgICAgICAgYmIuZGVidWcoMSwgIkFwcGVuZGluZyAnJXMnIHRvIFVCT09UX0JJTkFSSUVTLiIgJSBpdGVtc1syXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdVQk9PVF9CSU5BUklFUycsICcgJyArIGl0ZW1zWzJdKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgYmIuZGVidWcoMSwgIkFwcGVuZGluZyAnJXMnIHRvIFVCT09UX0JJTkFSSUVTLiIgJSB1Ym9vdGJpbmFyeSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdVQk9PVF9CSU5BUklFUycsICcgJyArIHVib290YmluYXJ5KQogICAgICAgICAgICAgICAgICAgICBicmVhawogICAgIGVsaWYgbGVuKHVib290Y29uZmlnKSA9PSAwOgogICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCdZb3UgbXVzdCBzZXQgYSBkZWZhdWx0IGluIFVCT09UX0NPTkZJRy4nKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91Ym9vdC1leHRsaW51eC1jb25maWcuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdWJvb3QtZXh0bGludXgtY29uZmlnLmJiY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGY5MTM4NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdWJvb3QtZXh0bGludXgtY29uZmlnLmJiY2xhc3MKQEAgLTAsMCArMSwxMjYgQEAKKyMgdWJvb3QtZXh0bGludXgtY29uZmlnLmJiY2xhc3MKKyMKKyMgVGhpcyBjbGFzcyBhbGxvdyB0aGUgZXh0bGludXguY29uZiBnZW5lcmF0aW9uIGZvciBVLUJvb3QgdXNlLiBUaGUKKyMgVS1Cb290IHN1cHBvcnQgZm9yIGl0IGlzIGdpdmVuIHRvIGFsbG93IHRoZSBHZW5lcmljIERpc3RyaWJ1dGlvbgorIyBDb25maWd1cmF0aW9uIHNwZWNpZmljYXRpb24gdXNlIGJ5IE9wZW5FbWJlZGRlZC1iYXNlZCBwcm9kdWN0cy4KKyMKKyMgRXh0ZXJuYWwgdmFyaWFibGVzOgorIworIyBVQk9PVF9FWFRMSU5VWF9DT05TT0xFICAgICAgICAgICAtIFNldCB0byAiY29uc29sZT10dHlYIiB0byBjaGFuZ2Uga2VybmVsIGJvb3QKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IGNvbnNvbGUuCisjIFVCT09UX0VYVExJTlVYX0xBQkVMUyAgICAgICAgICAgIC0gQSBsaXN0IG9mIHRhcmdldHMgZm9yIHRoZSBhdXRvbWF0aWMgY29uZmlnLgorIyBVQk9PVF9FWFRMSU5VWF9LRVJORUxfQVJHUyAgICAgICAtIEFkZCBhZGRpdGlvbmFsIGtlcm5lbCBhcmd1bWVudHMuCisjIFVCT09UX0VYVExJTlVYX0tFUk5FTF9JTUFHRSAgICAgIC0gS2VybmVsIGltYWdlIG5hbWUuCisjIFVCT09UX0VYVExJTlVYX0ZEVERJUiAgICAgICAgICAgIC0gRGV2aWNlIHRyZWUgZGlyZWN0b3J5LgorIyBVQk9PVF9FWFRMSU5VWF9JTklUUkQgICAgICAgICAgICAtIEluZGljYXRlcyBhIGxpc3Qgb2YgZmlsZXN5c3RlbSBpbWFnZXMgdG8KKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25jYXRlbmF0ZSBhbmQgdXNlIGFzIGFuIGluaXRyZCAob3B0aW9uYWwpLgorIyBVQk9PVF9FWFRMSU5VWF9NRU5VX0RFU0NSSVBUSU9OICAtIE5hbWUgdG8gdXNlIGFzIGRlc2NyaXB0aW9uLgorIyBVQk9PVF9FWFRMSU5VWF9ST09UICAgICAgICAgICAgICAtIFJvb3Qga2VybmVsIGNtZGxpbmUuCisjCisjIElmIHRoZXJlJ3Mgb25seSBvbmUgbGFiZWwgc3lzdGVtIHdpbGwgYm9vdCBhdXRvbWF0aWNhbGx5IGFuZCBtZW51IHdvbid0IGJlCisjIGNyZWF0ZWQuIElmIHlvdSB3YW50IHRvIHVzZSBtb3JlIHRoYW4gb25lIGxhYmVscywgZS5nIGxpbnV4IGFuZCBhbHRlcm5hdGUsCisjIHVzZSBvdmVycmlkZXMgdG8gc2V0IG1lbnUgZGVzY3JpcHRpb24sIGNvbnNvbGUgYW5kIG90aGVycyB2YXJpYWJsZXMuCisjCisjIEV4OgorIworIyBVQk9PVF9FWFRMSU5VWF9MQUJFTFMgPz89ICJkZWZhdWx0IGZhbGxiYWNrIgorIworIyBVQk9PVF9FWFRMSU5VWF9LRVJORUxfSU1BR0VfZGVmYXVsdCA/Pz0gIi4uL3pJbWFnZSIKKyMgVUJPT1RfRVhUTElOVVhfTUVOVV9ERVNDUklQVElPTl9kZWZhdWx0ID8/PSAiTGludXggRGVmYXVsdCIKKyMKKyMgVUJPT1RfRVhUTElOVVhfS0VSTkVMX0lNQUdFX2ZhbGxiYWNrID8/PSAiLi4vekltYWdlLWZhbGxiYWNrIgorIyBVQk9PVF9FWFRMSU5VWF9NRU5VX0RFU0NSSVBUSU9OX2ZhbGxiYWNrID8/PSAiTGludXggRmFsbGJhY2siCisjCisjIFJlc3VsdHM6CisjCisjIG1lbnUgdGl0bGUgU2VsZWN0IHRoZSBib290IG1vZGUKKyMgTEFCRUwgTGludXggRGVmYXVsdAorIyAgIEtFUk5FTCAuLi96SW1hZ2UKKyMgICBGRFRESVIgLi4vCisjICAgQVBQRU5EIHJvb3Q9L2Rldi9tbWNibGsycDIgcm9vdHdhaXQgcncgY29uc29sZT0ke2NvbnNvbGV9CisjIExBQkVMIExpbnV4IEZhbGxiYWNrCisjICAgS0VSTkVMIC4uL3pJbWFnZS1mYWxsYmFjaworIyAgIEZEVERJUiAuLi8KKyMgICBBUFBFTkQgcm9vdD0vZGV2L21tY2JsazJwMiByb290d2FpdCBydyBjb25zb2xlPSR7Y29uc29sZX0KKyMKKyMgQ29weXJpZ2h0IChDKSAyMDE2LCBPLlMuIFN5c3RlbXMgU29mdHdhcmUgTFREQS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQKKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgcGFja2FnZXMvQ09QWUlORykKKyMKKyMgVGhlIGtlcm5lbCBoYXMgYW4gaW50ZXJuYWwgZGVmYXVsdCBjb25zb2xlLCB3aGljaCB5b3UgY2FuIG92ZXJyaWRlIHdpdGgKKyMgYSBjb25zb2xlPS4uLnNvbWVfdHR5Li4uCitVQk9PVF9FWFRMSU5VWF9DT05TT0xFID8/PSAiY29uc29sZT0ke2NvbnNvbGV9IgorVUJPT1RfRVhUTElOVVhfTEFCRUxTID8/PSAibGludXgiCitVQk9PVF9FWFRMSU5VWF9GRFRESVIgPz89ICIuLi8iCitVQk9PVF9FWFRMSU5VWF9LRVJORUxfSU1BR0UgPz89ICIuLi8ke0tFUk5FTF9JTUFHRVRZUEV9IgorVUJPT1RfRVhUTElOVVhfS0VSTkVMX0FSR1MgPz89ICJyb290d2FpdCBydyIKK1VCT09UX0VYVExJTlVYX01FTlVfREVTQ1JJUFRJT05fbGludXggPz89ICIke0RJU1RST19OQU1FfSIKKworVUJPT1RfRVhUTElOVVhfQ09ORklHID0gIiR7Qn0vZXh0bGludXguY29uZiIKKworcHl0aG9uIGNyZWF0ZV9leHRsaW51eF9jb25maWcoKSB7CisgICAgaWYgZC5nZXRWYXIoIlVCT09UX0VYVExJTlVYIiwgVHJ1ZSkgIT0gIjEiOgorICAgICAgcmV0dXJuCisKKyAgICBpZiBub3QgZC5nZXRWYXIoJ1dPUktESVInLCBUcnVlKToKKyAgICAgICAgYmIuZXJyb3IoIldPUktESVIgbm90IGRlZmluZWQsIHVuYWJsZSB0byBwYWNrYWdlIikKKworICAgIGxhYmVscyA9IGQuZ2V0VmFyKCdVQk9PVF9FWFRMSU5VWF9MQUJFTFMnLCBUcnVlKQorICAgIGlmIG5vdCBsYWJlbHM6CisgICAgICAgIGJiLmZhdGFsKCJVQk9PVF9FWFRMSU5VWF9MQUJFTFMgbm90IGRlZmluZWQsIG5vdGhpbmcgdG8gZG8iKQorCisgICAgaWYgbm90IGxhYmVscy5zdHJpcCgpOgorICAgICAgICBiYi5mYXRhbCgiTm8gbGFiZWxzLCBub3RoaW5nIHRvIGRvIikKKworICAgIGNmaWxlID0gZC5nZXRWYXIoJ1VCT09UX0VYVExJTlVYX0NPTkZJRycsIFRydWUpCisgICAgaWYgbm90IGNmaWxlOgorICAgICAgICBiYi5mYXRhbCgnVW5hYmxlIHRvIHJlYWQgVUJPT1RfRVhUTElOVVhfQ09ORklHJykKKworICAgIHRyeToKKyAgICAgICAgd2l0aCBvcGVuKGNmaWxlLCAndycpIGFzIGNmZ2ZpbGU6CisgICAgICAgICAgICBjZmdmaWxlLndyaXRlKCcjIEdlbmVyaWMgRGlzdHJvIENvbmZpZ3VyYXRpb24gZmlsZSBnZW5lcmF0ZWQgYnkgT3BlbkVtYmVkZGVkXG4nKQorCisgICAgICAgICAgICBpZiBsZW4obGFiZWxzLnNwbGl0KCkpID4gMToKKyAgICAgICAgICAgICAgICBjZmdmaWxlLndyaXRlKCdtZW51IHRpdGxlIFNlbGVjdCB0aGUgYm9vdCBtb2RlXG4nKQorCisgICAgICAgICAgICBmb3IgbGFiZWwgaW4gbGFiZWxzLnNwbGl0KCk6CisgICAgICAgICAgICAgICAgbG9jYWxkYXRhID0gYmIuZGF0YS5jcmVhdGVDb3B5KGQpCisKKyAgICAgICAgICAgICAgICBvdmVycmlkZXMgPSBsb2NhbGRhdGEuZ2V0VmFyKCdPVkVSUklERVMnLCBUcnVlKQorICAgICAgICAgICAgICAgIGlmIG5vdCBvdmVycmlkZXM6CisgICAgICAgICAgICAgICAgICAgIGJiLmZhdGFsKCdPVkVSUklERVMgbm90IGRlZmluZWQnKQorCisgICAgICAgICAgICAgICAgbG9jYWxkYXRhLnNldFZhcignT1ZFUlJJREVTJywgbGFiZWwgKyAnOicgKyBvdmVycmlkZXMpCisgICAgICAgICAgICAgICAgYmIuZGF0YS51cGRhdGVfZGF0YShsb2NhbGRhdGEpCisKKyAgICAgICAgICAgICAgICBleHRsaW51eF9jb25zb2xlID0gbG9jYWxkYXRhLmdldFZhcignVUJPT1RfRVhUTElOVVhfQ09OU09MRScsIFRydWUpCisKKyAgICAgICAgICAgICAgICBtZW51X2Rlc2NyaXB0aW9uID0gbG9jYWxkYXRhLmdldFZhcignVUJPT1RfRVhUTElOVVhfTUVOVV9ERVNDUklQVElPTicsIFRydWUpCisgICAgICAgICAgICAgICAgaWYgbm90IG1lbnVfZGVzY3JpcHRpb246CisgICAgICAgICAgICAgICAgICAgIG1lbnVfZGVzY3JpcHRpb24gPSBsYWJlbAorCisgICAgICAgICAgICAgICAgcm9vdCA9IGxvY2FsZGF0YS5nZXRWYXIoJ1VCT09UX0VYVExJTlVYX1JPT1QnLCBUcnVlKQorICAgICAgICAgICAgICAgIGlmIG5vdCByb290OgorICAgICAgICAgICAgICAgICAgICBiYi5mYXRhbCgnVUJPT1RfRVhUTElOVVhfUk9PVCBub3QgZGVmaW5lZCcpCisKKyAgICAgICAgICAgICAgICBrZXJuZWxfaW1hZ2UgPSBsb2NhbGRhdGEuZ2V0VmFyKCdVQk9PVF9FWFRMSU5VWF9LRVJORUxfSU1BR0UnLCBUcnVlKQorICAgICAgICAgICAgICAgIGZkdGRpciA9IGxvY2FsZGF0YS5nZXRWYXIoJ1VCT09UX0VYVExJTlVYX0ZEVERJUicsIFRydWUpCisgICAgICAgICAgICAgICAgaWYgZmR0ZGlyOgorICAgICAgICAgICAgICAgICAgICBjZmdmaWxlLndyaXRlKCdMQUJFTCAlc1xuXHRLRVJORUwgJXNcblx0RkRURElSICVzXG4nICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW51X2Rlc2NyaXB0aW9uLCBrZXJuZWxfaW1hZ2UsIGZkdGRpcikpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgY2ZnZmlsZS53cml0ZSgnTEFCRUwgJXNcblx0S0VSTkVMICVzXG4nICUgKG1lbnVfZGVzY3JpcHRpb24sIGtlcm5lbF9pbWFnZSkpCisKKyAgICAgICAgICAgICAgICBrZXJuZWxfYXJncyA9IGxvY2FsZGF0YS5nZXRWYXIoJ1VCT09UX0VYVExJTlVYX0tFUk5FTF9BUkdTJywgVHJ1ZSkKKworICAgICAgICAgICAgICAgIGluaXRyZCA9IGxvY2FsZGF0YS5nZXRWYXIoJ1VCT09UX0VYVExJTlVYX0lOSVRSRCcsIFRydWUpCisgICAgICAgICAgICAgICAgaWYgaW5pdHJkOgorICAgICAgICAgICAgICAgICAgICBjZmdmaWxlLndyaXRlKCdcdElOSVRSRCAlc1xuJyUgaW5pdHJkKQorCisgICAgICAgICAgICAgICAga2VybmVsX2FyZ3MgPSByb290ICsgIiAiICsga2VybmVsX2FyZ3MKKyAgICAgICAgICAgICAgICBjZmdmaWxlLndyaXRlKCdcdEFQUEVORCAlcyAlc1xuJyAlIChrZXJuZWxfYXJncywgZXh0bGludXhfY29uc29sZSkpCisKKyAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgYmIuZmF0YWwoJ1VuYWJsZSB0byBvcGVuICVzJyAlIChjZmlsZSkpCit9CisKK2RvX2luc3RhbGxbcHJlZnVuY3NdICs9ICJjcmVhdGVfZXh0bGludXhfY29uZmlnIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91Ym9vdC1zaWduLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Vib290LXNpZ24uYmJjbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzU2ZGI4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91Ym9vdC1zaWduLmJiY2xhc3MKQEAgLTAsMCArMSw5NSBAQAorIyBUaGlzIGZpbGUgaXMgcGFydCBvZiBVLUJvb3QgdmVyaWZpZWQgYm9vdCBzdXBwb3J0IGFuZCBpcyBpbnRlbmRlZCB0byBiZQorIyBpbmhlcml0ZWQgZnJvbSB1LWJvb3QgcmVjaXBlIGFuZCBmcm9tIGtlcm5lbC1maXRpbWFnZS5iYmNsYXNzLgorIworIyBUaGUgc2lnbmF0dXJlIHByb2NlZHVyZSByZXF1aXJlcyB0aGUgdXNlciB0byBnZW5lcmF0ZSBhbiBSU0Ega2V5IGFuZAorIyBjZXJ0aWZpY2F0ZSBpbiBhIGRpcmVjdG9yeSBhbmQgdG8gZGVmaW5lIHRoZSBmb2xsb3dpbmcgdmFyaWFibGU6CisjCisjICAgVUJPT1RfU0lHTl9LRVlESVIgPSAiL2tleXMvZGlyZWN0b3J5IgorIyAgIFVCT09UX1NJR05fS0VZTkFNRSA9ICJkZXYiICMga2V5cyBuYW1lIGluIGtleWRpciAoZWcuICJkZXYuY3J0IiwgImRldi5rZXkiKQorIyAgIFVCT09UX01LSU1BR0VfRFRDT1BUUyA9ICItSSBkdHMgLU8gZHRiIC1wIDIwMDAiCisjICAgVUJPT1RfU0lHTl9FTkFCTEUgPSAiMSIKKyMKKyMgQXMgdmVyaWZpZWQgYm9vdCBkZXBlbmRzIG9uIGZpdEltYWdlIGdlbmVyYXRpb24sIGZvbGxvd2luZyBpcyBhbHNvIHJlcXVpcmVkOgorIworIyAgIEtFUk5FTF9DTEFTU0VTID89ICIga2VybmVsLWZpdGltYWdlICIKKyMgICBLRVJORUxfSU1BR0VUWVBFID89ICJmaXRJbWFnZSIKKyMKKyMgVGhlIHNpZ25hdHVyZSBzdXBwb3J0IGlzIGxpbWl0ZWQgdG8gdGhlIHVzZSBvZiBDT05GSUdfT0ZfU0VQQVJBVEUgaW4gVS1Cb290LgorIworIyBUaGUgdGFza3Mgc2VxdWVuY2UgaXMgc2V0IGFzIGJlbG93LCB1c2luZyBERVBMT1lfSU1BR0VfRElSIGFzIGNvbW1vbiBwbGFjZSB0bworIyB0cmVhdCB0aGUgZGV2aWNlIHRyZWUgYmxvYjoKKyMKKyMgICB1LWJvb3Q6ZG9fZGVwbG95X2R0YgorIyAgIHUtYm9vdDpkb19kZXBsb3kKKyMgICB2aXJ0dWFsL2tlcm5lbDpkb19hc3NlbWJsZV9maXRpbWFnZQorIyAgIHUtYm9vdDpkb19jb25jYXRfZHRiCisjICAgdS1ib290OmRvX2luc3RhbGwKKyMKKyMgRm9yIG1vcmUgZGV0YWlscyBvbiBzaWduYXR1cmUgcHJvY2VzcywgcGxlYXNlIHJlZmVyIHRvIFUtYm9vdCBkb2N1bWVudGF0aW9uLgorCisjIFNpZ25hdHVyZSBhY3RpdmF0aW9uLgorVUJPT1RfU0lHTl9FTkFCTEUgPz0gIjAiCisKKyMgRGVmYXVsdCB2YWx1ZSBmb3IgZGVwbG95bWVudCBmaWxlbmFtZXMuCitVQk9PVF9EVEJfSU1BR0UgPz0gInUtYm9vdC0ke01BQ0hJTkV9LSR7UFZ9LSR7UFJ9LmR0YiIKK1VCT09UX0RUQl9CSU5BUlkgPz0gInUtYm9vdC5kdGIiCitVQk9PVF9EVEJfU1lNTElOSyA/PSAidS1ib290LSR7TUFDSElORX0uZHRiIgorVUJPT1RfTk9EVEJfSU1BR0UgPz0gInUtYm9vdC1ub2R0Yi0ke01BQ0hJTkV9LSR7UFZ9LSR7UFJ9LiR7VUJPT1RfU1VGRklYfSIKK1VCT09UX05PRFRCX0JJTkFSWSA/PSAidS1ib290LW5vZHRiLiR7VUJPT1RfU1VGRklYfSIKK1VCT09UX05PRFRCX1NZTUxJTksgPz0gInUtYm9vdC1ub2R0Yi0ke01BQ0hJTkV9LiR7VUJPT1RfU1VGRklYfSIKKworIworIyBGb2xsb3dpbmcgaXMgcmVsZXZhbnQgb25seSBmb3IgdS1ib290IHJlY2lwZXM6CisjCisKK2RvX2RlcGxveV9kdGIgKCkgeworCW1rZGlyIC1wICR7REVQTE9ZRElSfQorCWNkICR7REVQTE9ZRElSfQorCisJaWYgWyAtZiAke0J9LyR7VUJPT1RfRFRCX0JJTkFSWX0gXTsgdGhlbgorCQlpbnN0YWxsICR7Qn0vJHtVQk9PVF9EVEJfQklOQVJZfSAke0RFUExPWURJUn0vJHtVQk9PVF9EVEJfSU1BR0V9CisJCXJtIC1mICR7VUJPT1RfRFRCX0JJTkFSWX0gJHtVQk9PVF9EVEJfU1lNTElOS30KKwkJbG4gLXNmICR7VUJPT1RfRFRCX0lNQUdFfSAke1VCT09UX0RUQl9TWU1MSU5LfQorCQlsbiAtc2YgJHtVQk9PVF9EVEJfSU1BR0V9ICR7VUJPT1RfRFRCX0JJTkFSWX0KKwlmaQorCWlmIFsgLWYgJHtCfS8ke1VCT09UX05PRFRCX0JJTkFSWX0gXTsgdGhlbgorCQlpbnN0YWxsICR7Qn0vJHtVQk9PVF9OT0RUQl9CSU5BUll9ICR7REVQTE9ZRElSfS8ke1VCT09UX05PRFRCX0lNQUdFfQorCQlybSAtZiAke1VCT09UX05PRFRCX0JJTkFSWX0gJHtVQk9PVF9OT0RUQl9TWU1MSU5LfQorCQlsbiAtc2YgJHtVQk9PVF9OT0RUQl9JTUFHRX0gJHtVQk9PVF9OT0RUQl9TWU1MSU5LfQorCQlsbiAtc2YgJHtVQk9PVF9OT0RUQl9JTUFHRX0gJHtVQk9PVF9OT0RUQl9CSU5BUll9CisJZmkKK30KKworZG9fY29uY2F0X2R0YiAoKSB7CisJIyBDb25jYXRlbmF0ZSBVLUJvb3Qgdy9vIERUQiAmIERUQiB3aXRoIHB1YmxpYyBrZXkKKwkjIChjZi4ga2VybmVsLWZpdGltYWdlLmJiY2xhc3MgZm9yIG1vcmUgZGV0YWlscykKKwlpZiBbICJ4JHtVQk9PVF9TSUdOX0VOQUJMRX0iID0gIngxIiBdOyB0aGVuCisJCWlmIFsgIngke1VCT09UX1NVRkZJWH0iID0gInhpbWciIC1vICJ4JHtVQk9PVF9TVUZGSVh9IiA9ICJ4cm9tIiBdICYmIFwKKwkJCVsgLWUgIiR7REVQTE9ZRElSfS8ke1VCT09UX0RUQl9JTUFHRX0iIF07IHRoZW4KKwkJCWNkICR7Qn0KKwkJCW9lX3J1bm1ha2UgRVhUX0RUQj0ke0RFUExPWURJUn0vJHtVQk9PVF9EVEJfSU1BR0V9CisJCQlpbnN0YWxsICR7U30vJHtVQk9PVF9CSU5BUll9ICR7REVQTE9ZRElSfS8ke1VCT09UX0lNQUdFfQorCQkJaW5zdGFsbCAke1N9LyR7VUJPT1RfQklOQVJZfSAke0RFUExPWV9ESVJfSU1BR0V9LyR7VUJPT1RfSU1BR0V9CisJCWVsaWYgWyAtZSAiJHtERVBMT1lESVJ9LyR7VUJPT1RfTk9EVEJfSU1BR0V9IiAtYSAtZSAiJHtERVBMT1lESVJ9LyR7VUJPT1RfRFRCX0lNQUdFfSIgXTsgdGhlbgorCQkJY2QgJHtERVBMT1lESVJ9CisJCQljYXQgJHtVQk9PVF9OT0RUQl9JTUFHRX0gJHtVQk9PVF9EVEJfSU1BR0V9IHwgdGVlICR7Qn0vJHtVQk9PVF9CSU5BUll9ID4gJHtVQk9PVF9JTUFHRX0KKwkJZWxzZQorCQkJYmJ3YXJuICJGYWlsdXJlIHdoaWxlIGFkZGluZyBwdWJsaWMga2V5IHRvIHUtYm9vdCBiaW5hcnkuIFZlcmlmaWVkIGJvb3Qgd29uJ3QgYmUgYXZhaWxhYmxlLiIKKwkJZmkKKwlmaQorfQorCitweXRob24gKCkgeworCXVib290X3BuID0gZC5nZXRWYXIoJ1BSRUZFUlJFRF9QUk9WSURFUl91LWJvb3QnLCBUcnVlKSBvciAndS1ib290JworCWlmIGQuZ2V0VmFyKCdVQk9PVF9TSUdOX0VOQUJMRScsIFRydWUpID09ICcxJyBhbmQgZC5nZXRWYXIoJ1BOJywgVHJ1ZSkgPT0gdWJvb3RfcG46CisJCWtlcm5lbF9wbiA9IGQuZ2V0VmFyKCdQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwnLCBUcnVlKQorCisJCSMgdS1ib290LmR0YiBhbmQgdS1ib290LW5vZHRiLmJpbiBhcmUgZGVwbG95ZWQgX2JlZm9yZV8gZG9fZGVwbG95CisJCSMgVGh1cywgZG9fZGVwbG95X3NldHNjZW5lIHdpbGwgYWxzbyBwb3B1bGF0ZSB0aGVtIGluIERFUExPWV9JTUFHRV9ESVIKKwkJYmIuYnVpbGQuYWRkdGFzaygnZG9fZGVwbG95X2R0YicsICdkb19kZXBsb3knLCAnZG9fY29tcGlsZScsIGQpCisKKwkJIyBkb19jb25jYXRfZHRiIGlzIHNjaGVkdWxlZCBfYmVmb3JlXyBkb19pbnN0YWxsIGFzIGl0IG92ZXJ3cml0ZSB0aGUKKwkJIyB1LWJvb3QuYmluIGluIGJvdGggREVQTE9ZRElSIGFuZCBERVBMT1lfSU1BR0VfRElSLgorCQliYi5idWlsZC5hZGR0YXNrKCdkb19jb25jYXRfZHRiJywgJ2RvX2luc3RhbGwnLCBOb25lLCBkKQorCQlkLmFwcGVuZFZhckZsYWcoJ2RvX2NvbmNhdF9kdGInLCAnZGVwZW5kcycsICcgJXM6ZG9fYXNzZW1ibGVfZml0aW1hZ2UnICUga2VybmVsX3BuKQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91cGRhdGUtYWx0ZXJuYXRpdmVzLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3VwZGF0ZS1hbHRlcm5hdGl2ZXMuYmJjbGFzcwppbmRleCA3MGE4MTg1Li4xZmRkNjgxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3VwZGF0ZS1hbHRlcm5hdGl2ZXMuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3VwZGF0ZS1hbHRlcm5hdGl2ZXMuYmJjbGFzcwpAQCAtNzEsMTQgKzcxLDE0IEBACiAKICAgICAjIEZpcnN0IGNvbXB1dGUgdGhlbSBmb3Igbm9uX3BrZyB2ZXJzaW9ucwogICAgIGZvciB2IGluIHZhcnM6Ci0gICAgICAgIGZvciBmbGFnIGluIChkLmdldFZhckZsYWdzKHYpIG9yIHt9KToKKyAgICAgICAgZm9yIGZsYWcgaW4gc29ydGVkKChkLmdldFZhckZsYWdzKHYpIG9yIHt9KS5rZXlzKCkpOgogICAgICAgICAgICAgaWYgZmxhZyA9PSAiZG9jIiBvciBmbGFnID09ICJ2YXJkZXBzIiBvciBmbGFnID09ICJ2YXJkZXBzZXhwIjoKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgZC5hcHBlbmRWYXIoJyVzX1ZBUkRFUFMnICUgKHYpLCAnICVzOiVzJyAlIChmbGFnLCBkLmdldFZhckZsYWcodiwgZmxhZywgRmFsc2UpKSkKIAogICAgIGZvciBwIGluIHBrZ3M6CiAgICAgICAgIGZvciB2IGluIHZhcnM6Ci0gICAgICAgICAgICBmb3IgZmxhZyBpbiAoZC5nZXRWYXJGbGFncygiJXNfJXMiICUgKHYscCkpIG9yIHt9KToKKyAgICAgICAgICAgIGZvciBmbGFnIGluIHNvcnRlZCgoZC5nZXRWYXJGbGFncygiJXNfJXMiICUgKHYscCkpIG9yIHt9KS5rZXlzKCkpOgogICAgICAgICAgICAgICAgIGlmIGZsYWcgPT0gImRvYyIgb3IgZmxhZyA9PSAidmFyZGVwcyIgb3IgZmxhZyA9PSAidmFyZGVwc2V4cCI6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgZC5hcHBlbmRWYXIoJyVzX1ZBUkRFUFNfJXMnICUgKHYscCksICcgJXM6JXMnICUgKGZsYWcsIGQuZ2V0VmFyRmxhZygnJXNfJXMnICUgKHYscCksIGZsYWcsIEZhbHNlKSkpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3VwZGF0ZS1yYy5kLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3VwZGF0ZS1yYy5kLmJiY2xhc3MKaW5kZXggMmEwYTc0YS4uMzIxOTI0YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91cGRhdGUtcmMuZC5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXBkYXRlLXJjLmQuYmJjbGFzcwpAQCAtMSw2ICsxLDcgQEAKIFVQREFURVJDUE4gPz0gIiR7UE59IgogCi1ERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIHVwZGF0ZS1yYy5kLW5hdGl2ZSB1cGRhdGUtcmMuZCBpbml0c2NyaXB0cyIKK0RFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgJyB1cGRhdGUtcmMuZC1uYXRpdmUgdXBkYXRlLXJjLmQgaW5pdHNjcmlwdHMnLCAnJywgZCl9IgorCiBVUERBVEVSQ0QgPSAidXBkYXRlLXJjLmQiCiBVUERBVEVSQ0RfY2xhc3MtY3Jvc3MgPSAiIgogVVBEQVRFUkNEX2NsYXNzLW5hdGl2ZSA9ICIiCkBAIC0xMiw3ICsxMyw3IEBACiAKIHVwZGF0ZXJjZF9wcmVpbnN0KCkgewogaWYgWyAteiAiJEQiIC1hIC1mICIke0lOSVRfRF9ESVJ9LyR7SU5JVFNDUklQVF9OQU1FfSIgXTsgdGhlbgotCSR7SU5JVF9EX0RJUn0vJHtJTklUU0NSSVBUX05BTUV9IHN0b3AKKwkke0lOSVRfRF9ESVJ9LyR7SU5JVFNDUklQVF9OQU1FfSBzdG9wIHx8IDoKIGZpCiBpZiB0eXBlIHVwZGF0ZS1yYy5kID4vZGV2L251bGwgMj4vZGV2L251bGw7IHRoZW4KIAlpZiBbIC1uICIkRCIgXTsgdGhlbgpAQCAtMzYsOCArMzcsOCBAQAogfQogCiB1cGRhdGVyY2RfcHJlcm0oKSB7Ci1pZiBbIC16ICIkRCIgXTsgdGhlbgotCSR7SU5JVF9EX0RJUn0vJHtJTklUU0NSSVBUX05BTUV9IHN0b3AKK2lmIFsgLXogIiREIiAtYSAteCAiJHtJTklUX0RfRElSfS8ke0lOSVRTQ1JJUFRfTkFNRX0iIF07IHRoZW4KKwkke0lOSVRfRF9ESVJ9LyR7SU5JVFNDUklQVF9OQU1FfSBzdG9wIHx8IDoKIGZpCiB9CiAKQEAgLTU2LDE1ICs1NywxNSBAQAogZGVmIHVwZGF0ZV9yY19hZnRlcl9wYXJzZShkKToKICAgICBpZiBkLmdldFZhcignSU5JVFNDUklQVF9QQUNLQUdFUycsIEZhbHNlKSA9PSBOb25lOgogICAgICAgICBpZiBkLmdldFZhcignSU5JVFNDUklQVF9OQU1FJywgRmFsc2UpID09IE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBiYi5idWlsZC5GdW5jRmFpbGVkKCIlcyBpbmhlcml0cyB1cGRhdGUtcmMuZCBidXQgZG9lc24ndCBzZXQgSU5JVFNDUklQVF9OQU1FIiAlIGQuZ2V0VmFyKCdGSUxFJywgRmFsc2UpKQorICAgICAgICAgICAgYmIuZmF0YWwoIiVzIGluaGVyaXRzIHVwZGF0ZS1yYy5kIGJ1dCBkb2Vzbid0IHNldCBJTklUU0NSSVBUX05BTUUiICUgZC5nZXRWYXIoJ0ZJTEUnLCBGYWxzZSkpCiAgICAgICAgIGlmIGQuZ2V0VmFyKCdJTklUU0NSSVBUX1BBUkFNUycsIEZhbHNlKSA9PSBOb25lOgotICAgICAgICAgICAgcmFpc2UgYmIuYnVpbGQuRnVuY0ZhaWxlZCgiJXMgaW5oZXJpdHMgdXBkYXRlLXJjLmQgYnV0IGRvZXNuJ3Qgc2V0IElOSVRTQ1JJUFRfUEFSQU1TIiAlIGQuZ2V0VmFyKCdGSUxFJywgRmFsc2UpKQorICAgICAgICAgICAgYmIuZmF0YWwoIiVzIGluaGVyaXRzIHVwZGF0ZS1yYy5kIGJ1dCBkb2Vzbid0IHNldCBJTklUU0NSSVBUX1BBUkFNUyIgJSBkLmdldFZhcignRklMRScsIEZhbHNlKSkKIAogcHl0aG9uIF9fYW5vbnltb3VzKCkgewogICAgIHVwZGF0ZV9yY19hZnRlcl9wYXJzZShkKQogfQogCi1QQUNLQUdFU1BMSVRGVU5DU19wcmVwZW5kID0gInBvcHVsYXRlX3BhY2thZ2VzX3VwZGF0ZXJjZCAiCitQQUNLQUdFU1BMSVRGVU5DU19wcmVwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAncG9wdWxhdGVfcGFja2FnZXNfdXBkYXRlcmNkICcsICcnLCBkKX0iCiBQQUNLQUdFU1BMSVRGVU5DU19yZW1vdmVfY2xhc3MtbmF0aXZlc2RrID0gInBvcHVsYXRlX3BhY2thZ2VzX3VwZGF0ZXJjZCAiCiAKIHBvcHVsYXRlX3BhY2thZ2VzX3VwZGF0ZXJjZFt2YXJkZXBzXSArPSAidXBkYXRlcmNkX3ByZXJtIHVwZGF0ZXJjZF9wb3N0cm0gdXBkYXRlcmNkX3ByZWluc3QgdXBkYXRlcmNkX3Bvc3RpbnN0IgpAQCAtMTIwLDggKzEyMSw3IEBACiAKICAgICAjIENoZWNrIHRoYXQgdGhpcyBjbGFzcyBpc24ndCBiZWluZyBpbmhpYml0ZWQgKGdlbmVyYWxseSwgYnkKICAgICAjIHN5c3RlbWQuYmJjbGFzcykgYmVmb3JlIGRvaW5nIGFueSB3b3JrLgotICAgIGlmIGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCBUcnVlLCBGYWxzZSwgZCkgb3IgXAotICAgICAgIG5vdCBkLmdldFZhcigiSU5ISUJJVF9VUERBVEVSQ0RfQkJDTEFTUyIsIFRydWUpOgorICAgIGlmIG5vdCBkLmdldFZhcigiSU5ISUJJVF9VUERBVEVSQ0RfQkJDTEFTUyIsIFRydWUpOgogICAgICAgICBwa2dzID0gZC5nZXRWYXIoJ0lOSVRTQ1JJUFRfUEFDS0FHRVMnLCBUcnVlKQogICAgICAgICBpZiBwa2dzID09IE5vbmU6CiAgICAgICAgICAgICBwa2dzID0gZC5nZXRWYXIoJ1VQREFURVJDUE4nLCBUcnVlKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91c2VyYWRkLXN0YXRpY2lkcy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91c2VyYWRkLXN0YXRpY2lkcy5iYmNsYXNzCmluZGV4IGE5YjUwNmQuLmFmYjU4MGEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXNlcmFkZC1zdGF0aWNpZHMuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3VzZXJhZGQtc3RhdGljaWRzLmJiY2xhc3MKQEAgLTQsNiArNCw3IEBACiAgICAgaW1wb3J0IGFyZ3BhcnNlCiAgICAgaW1wb3J0IGl0ZXJ0b29scwogICAgIGltcG9ydCByZQorICAgIGltcG9ydCBlcnJubwogCiAgICAgY2xhc3MgbXlBcmd1bWVudFBhcnNlciggYXJncGFyc2UuQXJndW1lbnRQYXJzZXIgKToKICAgICAgICAgZGVmIF9wcmludF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIGZpbGU9Tm9uZSk6CkBAIC0xNSw3ICsxNiw3IEBACiAgICAgICAgICAgICBlcnJvcihtZXNzYWdlKQogCiAgICAgICAgIGRlZiBlcnJvcihzZWxmLCBtZXNzYWdlKToKLSAgICAgICAgICAgIHJhaXNlIGJiLmJ1aWxkLkZ1bmNGYWlsZWQobWVzc2FnZSkKKyAgICAgICAgICAgIGJiLmZhdGFsKG1lc3NhZ2UpCiAKICAgICBkZWYgbGlzdF9leHRlbmQoaXRlcmFibGUsIGxlbmd0aCwgb2JqID0gTm9uZSk6CiAgICAgICAgICIiIkVuc3VyZSB0aGF0IGl0ZXJhYmxlIGlzIHRoZSBzcGVjaWZpZWQgbGVuZ3RoIGJ5IGV4dGVuZGluZyB3aXRoIG9iagpAQCAtMzAsMjIgKzMxLDMzIEBACiAgICAgICAgIGFyZSBzZXQpLiIiIgogICAgICAgICBpZF90YWJsZSA9IGRpY3QoKQogICAgICAgICBmb3IgY29uZiBpbiBmaWxlX2xpc3Quc3BsaXQoKToKLSAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGNvbmYpOgotICAgICAgICAgICAgICAgIGYgPSBvcGVuKGNvbmYsICJyIikKLSAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBmOgotICAgICAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJyMnKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgICAgICMgTWFrZSBzdXJlIHRoZXJlIGFsd2F5cyBhcmUgYXQgbGVhc3QgZXhwX2ZpZWxkcyBlbGVtZW50cyBpbgotICAgICAgICAgICAgICAgICAgICAjIHRoZSBmaWVsZCBsaXN0LiBUaGlzIGFsbG93cyBmb3IgbGVhdmluZyBvdXQgdHJhaWxpbmcKLSAgICAgICAgICAgICAgICAgICAgIyBjb2xvbnMgaW4gdGhlIGZpbGVzLgotICAgICAgICAgICAgICAgICAgICBmaWVsZHMgPSBsaXN0X2V4dGVuZChsaW5lLnJzdHJpcCgpLnNwbGl0KCI6IiksIGV4cF9maWVsZHMpCi0gICAgICAgICAgICAgICAgICAgIGlmIGZpZWxkc1swXSBub3QgaW4gaWRfdGFibGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZF90YWJsZVtmaWVsZHNbMF1dID0gZmllbGRzCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZF90YWJsZVtmaWVsZHNbMF1dID0gbGlzdChpdGVydG9vbHMuaW1hcChsYW1iZGEgeCwgeTogeCBvciB5LCBmaWVsZHMsIGlkX3RhYmxlW2ZpZWxkc1swXV0pKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHdpdGggb3Blbihjb25mLCAiciIpIGFzIGY6CisgICAgICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGY6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJyMnKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICAgICAgIyBNYWtlIHN1cmUgdGhlcmUgYWx3YXlzIGFyZSBhdCBsZWFzdCBleHBfZmllbGRzCisgICAgICAgICAgICAgICAgICAgICAgICAjIGVsZW1lbnRzIGluIHRoZSBmaWVsZCBsaXN0LiBUaGlzIGFsbG93cyBmb3IgbGVhdmluZworICAgICAgICAgICAgICAgICAgICAgICAgIyBvdXQgdHJhaWxpbmcgY29sb25zIGluIHRoZSBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkcyA9IGxpc3RfZXh0ZW5kKGxpbmUucnN0cmlwKCkuc3BsaXQoIjoiKSwgZXhwX2ZpZWxkcykKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZpZWxkc1swXSBub3QgaW4gaWRfdGFibGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRfdGFibGVbZmllbGRzWzBdXSA9IGZpZWxkcworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZF90YWJsZVtmaWVsZHNbMF1dID0gbGlzdChtYXAobGFtYmRhIHgsIHk6IHggb3IgeSwgZmllbGRzLCBpZF90YWJsZVtmaWVsZHNbMF1dKSkKKyAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FTk9FTlQ6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKIAogICAgICAgICByZXR1cm4gaWRfdGFibGUKIAorICAgIGRlZiBoYW5kbGVfbWlzc2luZ19pZChpZCwgdHlwZSwgcGtnKToKKyAgICAgICAgIyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgYWNjZXB0ICIxIiBpbiBhZGRpdGlvbiB0byAiZXJyb3IiCisgICAgICAgIGlmIGQuZ2V0VmFyKCdVU0VSQUREX0VSUk9SX0RZTkFNSUMnLCBUcnVlKSA9PSAnZXJyb3InIG9yIGQuZ2V0VmFyKCdVU0VSQUREX0VSUk9SX0RZTkFNSUMnLCBUcnVlKSA9PSAnMSc6CisgICAgICAgICAgICAjYmIuZXJyb3IoIlNraXBwaW5nIHJlY2lwZSAlcywgcGFja2FnZSAlcyB3aGljaCBhZGRzICVzbmFtZSAlcyBkb2VzIG5vdCBoYXZlIGEgc3RhdGljIElEIGRlZmluZWQuIiAlIChkLmdldFZhcignUE4nLCBUcnVlKSwgIHBrZywgdHlwZSwgaWQpKQorICAgICAgICAgICAgYmIuZmF0YWwoIiVzIC0gJXM6ICVzbmFtZSAlcyBkb2VzIG5vdCBoYXZlIGEgc3RhdGljIElEIGRlZmluZWQuIiAlIChkLmdldFZhcignUE4nLCBUcnVlKSwgcGtnLCB0eXBlLCBpZCkpCisgICAgICAgIGVsaWYgZC5nZXRWYXIoJ1VTRVJBRERfRVJST1JfRFlOQU1JQycsIFRydWUpID09ICd3YXJuJzoKKyAgICAgICAgICAgIGJiLndhcm4oIiVzIC0gJXM6ICVzbmFtZSAlcyBkb2VzIG5vdCBoYXZlIGEgc3RhdGljIElEIGRlZmluZWQuIiAlIChkLmdldFZhcignUE4nLCBUcnVlKSwgcGtnLCB0eXBlLCBpZCkpCisKICAgICAjIFdlIHBhcnNlIGFuZCByZXdyaXRlIHRoZSB1c2VyYWRkIGNvbXBvbmVudHMKICAgICBkZWYgcmV3cml0ZV91c2VyYWRkKHBhcmFtcyk6CiAgICAgICAgICMgVGhlIGZvbGxvd2luZyBjb21lcyBmcm9tIC0taGVscCBvbiB1c2VyYWRkIGZyb20gc2hhZG93CkBAIC05Myw5ICsxMDUsOSBAQAogICAgICAgICAgICAgaWYgbm90IHBhcmFtOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgdWFhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MocmUuc3BsaXQoJycnWyBcdF0qKD89KD86W14nIl18J1teJ10qJ3wiW14iXSoiKSokKScnJywgcGFyYW0pKQorICAgICAgICAgICAgICAgIHVhYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKHJlLnNwbGl0KCcnJ1sgXHRdKyg/PSg/OlteJyJdfCdbXiddKid8IlteIl0qIikqJCknJycsIHBhcmFtKSkKICAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICByYWlzZSBiYi5idWlsZC5GdW5jRmFpbGVkKCIlczogVW5hYmxlIHRvIHBhcnNlIGFyZ3VtZW50cyBmb3IgVVNFUkFERF9QQVJBTV8lczogJyVzJyIgJSAoZC5nZXRWYXIoJ1BOJywgVHJ1ZSksIHBrZywgcGFyYW0pKQorICAgICAgICAgICAgICAgIGJiLmZhdGFsKCIlczogVW5hYmxlIHRvIHBhcnNlIGFyZ3VtZW50cyBmb3IgVVNFUkFERF9QQVJBTV8lczogJyVzJyIgJSAoZC5nZXRWYXIoJ1BOJywgVHJ1ZSksIHBrZywgcGFyYW0pKQogCiAgICAgICAgICAgICAjIFJlYWQgYWxsIHBhc3N3ZCBmaWxlcyBzcGVjaWZpZWQgaW4gVVNFUkFERF9VSURfVEFCTEVTIG9yIGZpbGVzL3Bhc3N3ZAogICAgICAgICAgICAgIyBVc2UgdGhlIHN0YW5kYXJkIHBhc3N3ZCBsYXlvdXQ6CkBAIC0xMTIsNiArMTI0LDggQEAKICAgICAgICAgICAgICAgICB1c2VycyA9IG1lcmdlX2ZpbGVzKGdldF9wYXNzd2RfbGlzdChkKSwgNykKIAogICAgICAgICAgICAgaWYgdWFhcmdzLkxPR0lOIG5vdCBpbiB1c2VyczoKKyAgICAgICAgICAgICAgICBpZiBub3QgdWFhcmdzLnVpZCBvciBub3QgdWFhcmdzLnVpZC5pc2RpZ2l0KCkgb3Igbm90IHVhYXJncy5naWQ6CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9taXNzaW5nX2lkKHVhYXJncy5MT0dJTiwgJ3VzZXInLCBwa2cpCiAgICAgICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICAgICAgZmllbGQgPSB1c2Vyc1t1YWFyZ3MuTE9HSU5dCkBAIC0xNjEsOSArMTc1LDggQEAKICAgICAgICAgICAgIHVhYXJncy5zaGVsbCA9IGZpZWxkWzZdIG9yIHVhYXJncy5zaGVsbAogCiAgICAgICAgICAgICAjIFNob3VsZCBiZSBhbiBlcnJvciBpZiBhIHNwZWNpZmljIG9wdGlvbiBpcyBzZXQuLi4KLSAgICAgICAgICAgIGlmIGQuZ2V0VmFyKCdVU0VSQUREX0VSUk9SX0RZTkFNSUMnLCBUcnVlKSA9PSAnMScgYW5kIG5vdCAoKHVhYXJncy51aWQgYW5kIHVhYXJncy51aWQuaXNkaWdpdCgpKSBhbmQgdWFhcmdzLmdpZCk6Ci0gICAgICAgICAgICAgICAgI2JiLmVycm9yKCJTa2lwcGluZyByZWNpcGUgJXMsIHBhY2thZ2UgJXMgd2hpY2ggYWRkcyB1c2VybmFtZSAlcyBkb2VzIG5vdCBoYXZlIGEgc3RhdGljIHVpZCBkZWZpbmVkLiIgJSAoZC5nZXRWYXIoJ1BOJywgVHJ1ZSksICBwa2csIHVhYXJncy5MT0dJTikpCi0gICAgICAgICAgICAgICAgcmFpc2UgYmIuYnVpbGQuRnVuY0ZhaWxlZCgiJXMgLSAlczogVXNlcm5hbWUgJXMgZG9lcyBub3QgaGF2ZSBhIHN0YXRpYyB1aWQgZGVmaW5lZC4iICUgKGQuZ2V0VmFyKCdQTicsIFRydWUpLCBwa2csIHVhYXJncy5MT0dJTikpCisgICAgICAgICAgICBpZiBub3QgdWFhcmdzLnVpZCBvciBub3QgdWFhcmdzLnVpZC5pc2RpZ2l0KCkgb3Igbm90IHVhYXJncy5naWQ6CisgICAgICAgICAgICAgICAgIGhhbmRsZV9taXNzaW5nX2lkKHVhYXJncy5MT0dJTiwgJ3VzZXInLCBwa2cpCiAKICAgICAgICAgICAgICMgUmVjb25zdHJ1Y3QgdGhlIGFyZ3MuLi4KICAgICAgICAgICAgIG5ld3BhcmFtICA9IFsnJywgJyAtLWRlZmF1bHRzJ11bdWFhcmdzLmRlZmF1bHRzXQpAQCAtMjI3LDkgKzI0MCw5IEBACiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAjIElmIHdlJ3JlIHByb2Nlc3NpbmcgbXVsdGlwbGUgbGluZXMsIHdlIGNvdWxkIGhhdmUgbGVmdCBvdmVyIHZhbHVlcyBoZXJlLi4uCi0gICAgICAgICAgICAgICAgZ2FhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MocmUuc3BsaXQoJycnWyBcdF0qKD89KD86W14nIl18J1teJ10qJ3wiW14iXSoiKSokKScnJywgcGFyYW0pKQorICAgICAgICAgICAgICAgIGdhYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKHJlLnNwbGl0KCcnJ1sgXHRdKyg/PSg/OlteJyJdfCdbXiddKid8IlteIl0qIikqJCknJycsIHBhcmFtKSkKICAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICByYWlzZSBiYi5idWlsZC5GdW5jRmFpbGVkKCIlczogVW5hYmxlIHRvIHBhcnNlIGFyZ3VtZW50cyBmb3IgR1JPVVBBRERfUEFSQU1fJXM6ICclcyciICUgKGQuZ2V0VmFyKCdQTicsIFRydWUpLCBwa2csIHBhcmFtKSkKKyAgICAgICAgICAgICAgICBiYi5mYXRhbCgiJXM6IFVuYWJsZSB0byBwYXJzZSBhcmd1bWVudHMgZm9yIEdST1VQQUREX1BBUkFNXyVzOiAnJXMnIiAlIChkLmdldFZhcignUE4nLCBUcnVlKSwgcGtnLCBwYXJhbSkpCiAKICAgICAgICAgICAgICMgUmVhZCBhbGwgZ3JvdXAgZmlsZXMgc3BlY2lmaWVkIGluIFVTRVJBRERfR0lEX1RBQkxFUyBvciBmaWxlcy9ncm91cAogICAgICAgICAgICAgIyBVc2UgdGhlIHN0YW5kYXJkIGdyb3VwIGxheW91dDoKQEAgLTI0NCw2ICsyNTcsOCBAQAogICAgICAgICAgICAgICAgIGdyb3VwcyA9IG1lcmdlX2ZpbGVzKGdldF9ncm91cF9saXN0KGQpLCA0KQogCiAgICAgICAgICAgICBpZiBnYWFyZ3MuR1JPVVAgbm90IGluIGdyb3VwczoKKyAgICAgICAgICAgICAgICBpZiBub3QgZ2FhcmdzLmdpZCBvciBub3QgZ2FhcmdzLmdpZC5pc2RpZ2l0KCk6CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9taXNzaW5nX2lkKGdhYXJncy5HUk9VUCwgJ2dyb3VwJywgcGtnKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKICAgICAgICAgICAgIGZpZWxkID0gZ3JvdXBzW2dhYXJncy5HUk9VUF0KQEAgLTI1Myw5ICsyNjgsOCBAQAogICAgICAgICAgICAgICAgICAgICBiYi53YXJuKCIlczogQ2hhbmdpbmcgZ3JvdXBuYW1lICVzJ3MgZ2lkIGZyb20gKCVzKSB0byAoJXMpLCB2ZXJpZnkgY29uZmlndXJhdGlvbiBmaWxlcyEiICUgKGQuZ2V0VmFyKCdQTicsIFRydWUpLCBnYWFyZ3MuR1JPVVAsIGdhYXJncy5naWQsIGZpZWxkWzJdKSkKICAgICAgICAgICAgICAgICBnYWFyZ3MuZ2lkID0gZmllbGRbMl0KIAotICAgICAgICAgICAgaWYgZC5nZXRWYXIoJ1VTRVJBRERfRVJST1JfRFlOQU1JQycsIFRydWUpID09ICcxJyBhbmQgbm90IChnYWFyZ3MuZ2lkIGFuZCBnYWFyZ3MuZ2lkLmlzZGlnaXQoKSk6Ci0gICAgICAgICAgICAgICAgI2JiLmVycm9yKCJTa2lwcGluZyByZWNpcGUgJXMsIHBhY2thZ2UgJXMgd2hpY2ggYWRkcyBncm91cG5hbWUgJXMgZG9lcyBub3QgaGF2ZSBhIHN0YXRpYyBnaWQgZGVmaW5lZC4iICUgKGQuZ2V0VmFyKCdQTicsIFRydWUpLCAgcGtnLCBnYWFyZ3MuR1JPVVApKQotICAgICAgICAgICAgICAgIHJhaXNlIGJiLmJ1aWxkLkZ1bmNGYWlsZWQoIiVzIC0gJXM6IEdyb3VwbmFtZSAlcyBkb2VzIG5vdCBoYXZlIGEgc3RhdGljIGdpZCBkZWZpbmVkLiIgJSAoZC5nZXRWYXIoJ1BOJywgVHJ1ZSksIHBrZywgZ2FhcmdzLkdST1VQKSkKKyAgICAgICAgICAgIGlmIG5vdCBnYWFyZ3MuZ2lkIG9yIG5vdCBnYWFyZ3MuZ2lkLmlzZGlnaXQoKToKKyAgICAgICAgICAgICAgICBoYW5kbGVfbWlzc2luZ19pZChnYWFyZ3MuR1JPVVAsICdncm91cCcsIHBrZykKIAogICAgICAgICAgICAgIyBSZWNvbnN0cnVjdCB0aGUgYXJncy4uLgogICAgICAgICAgICAgbmV3cGFyYW0gID0gWycnLCAnIC0tZm9yY2UnXVtnYWFyZ3MuZm9yY2VdCkBAIC0yNzEsNiArMjg1LDE5IEBACiAKICAgICAgICAgcmV0dXJuICI7Ii5qb2luKG5ld3BhcmFtcykuc3RyaXAoKQogCisgICAgIyBUaGUgcGFyc2luZyBvZiB0aGUgY3VycmVudCByZWNpcGUgZGVwZW5kcyBvbiB0aGUgY29udGVudCBvZgorICAgICMgdGhlIGZpbGVzIGxpc3RlZCBpbiBVU0VSQUREX1VJRC9HSURfVEFCTEVTLiBXZSBuZWVkIHRvIHRlbGwgYml0YmFrZQorICAgICMgYWJvdXQgdGhhdCBleHBsaWNpdGx5IHRvIHRyaWdnZXIgcmUtcGFyc2luZyBhbmQgdGh1cyByZS1leGVjdXRpb24gb2YKKyAgICAjIHRoaXMgY29kZSB3aGVuIHRoZSBmaWxlcyBjaGFuZ2UuCisgICAgYmJwYXRoID0gZC5nZXRWYXIoJ0JCUEFUSCcsIFRydWUpCisgICAgZm9yIHZhcm5hbWUsIGRlZmF1bHQgaW4gKCgnVVNFUkFERF9VSURfVEFCTEVTJywgJ2ZpbGVzL3Bhc3N3ZCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ1VTRVJBRERfR0lEX1RBQkxFUycsICdmaWxlcy9ncm91cCcpKToKKyAgICAgICAgdGFibGVzID0gZC5nZXRWYXIodmFybmFtZSwgVHJ1ZSkKKyAgICAgICAgaWYgbm90IHRhYmxlczoKKyAgICAgICAgICAgIHRhYmxlcyA9IGRlZmF1bHQKKyAgICAgICAgZm9yIGNvbmZfZmlsZSBpbiB0YWJsZXMuc3BsaXQoKToKKyAgICAgICAgICAgIGJiLnBhcnNlLm1hcmtfZGVwZW5kZW5jeShkLCBiYi51dGlscy53aGljaChiYnBhdGgsIGNvbmZfZmlsZSkpCisKICAgICAjIExvYWQgYW5kIHByb2Nlc3MgdGhlIHVzZXJzIGFuZCBncm91cHMsIHJld3JpdGluZyB0aGUgYWRkdXNlci9hZGRncm91cCBwYXJhbXMKICAgICB1c2VyYWRkX3BhY2thZ2VzID0gZC5nZXRWYXIoJ1VTRVJBRERfUEFDS0FHRVMnLCBUcnVlKQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3VzZXJhZGQuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXNlcmFkZC5iYmNsYXNzCmluZGV4IGVlNDAyYWMuLjNjZmYwOGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXNlcmFkZC5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXNlcmFkZC5iYmNsYXNzCkBAIC0zLDExICszLDcgQEAKICMgYmFzZS1wYXNzd2QtY3Jvc3MgcHJvdmlkZXMgdGhlIGRlZmF1bHQgcGFzc3dkIGFuZCBncm91cCBmaWxlcyBpbiB0aGUKICMgdGFyZ2V0IHN5c3Jvb3QsIGFuZCBzaGFkb3cgLW5hdGl2ZSBhbmQgLXN5c3Jvb3QgcHJvdmlkZSB0aGUgdXRpbGl0aWVzCiAjIGFuZCBzdXBwb3J0IGZpbGVzIG5lZWRlZCB0byBhZGQgYW5kIG1vZGlmeSB1c2VyIGFuZCBncm91cCBhY2NvdW50cwotREVQRU5EU19hcHBlbmQgPSAiJHtVU0VSQUREREVQRU5EU30iCi1VU0VSQUREREVQRU5EUyA9ICIgYmFzZS1maWxlcyBzaGFkb3ctbmF0aXZlIHNoYWRvdy1zeXNyb290IHNoYWRvdyIKLVVTRVJBRERERVBFTkRTX2NsYXNzLWNyb3NzID0gIiIKLVVTRVJBRERERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICIiCi1VU0VSQUREREVQRU5EU19jbGFzcy1uYXRpdmVzZGsgPSAiIgorREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBiYXNlLWZpbGVzIHNoYWRvdy1uYXRpdmUgc2hhZG93LXN5c3Jvb3Qgc2hhZG93IgogCiAjIFRoaXMgcHJlaW5zdGFsbCBmdW5jdGlvbiBjYW4gYmUgcnVuIGluIGZvdXIgZGlmZmVyZW50IGNvbnRleHRzOgogIwpAQCAtNTQsMTUgKzUwLDE1IEBACiAJZWNobyAiUnVubmluZyBncm91cGFkZCBjb21tYW5kcy4uLiIKIAkjIEludm9rZSBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgZ3JvdXBhZGQgZm9yIHBhcmFtZXRlciBsaXN0cwogCSMgc2VwYXJhdGVkIGJ5ICc7JwotCW9wdHM9YGVjaG8gIiRHUk9VUEFERF9QQVJBTSIgfCBjdXQgLWQgJzsnIC1mIDFgCi0JcmVtYWluaW5nPWBlY2hvICIkR1JPVVBBRERfUEFSQU0iIHwgY3V0IC1kICc7JyAtZiAyLWAKKwlvcHRzPWBlY2hvICIkR1JPVVBBRERfUEFSQU0iIHwgY3V0IC1kICc7JyAtZiAxIHwgc2VkIC1lICdzI1sgXHRdKiQjIydgCisJcmVtYWluaW5nPWBlY2hvICIkR1JPVVBBRERfUEFSQU0iIHwgY3V0IC1kICc7JyAtZiAyLSB8IHNlZCAtZSAncyNbIFx0XSokIyMnYAogCXdoaWxlIHRlc3QgIngkb3B0cyIgIT0gIngiOyBkbwogCQlwZXJmb3JtX2dyb3VwYWRkICIkU1lTUk9PVCIgIiRPUFQgJG9wdHMiCiAJCWlmIHRlc3QgIngkb3B0cyIgPSAieCRyZW1haW5pbmciOyB0aGVuCiAJCQlicmVhawogCQlmaQotCQlvcHRzPWBlY2hvICIkcmVtYWluaW5nIiB8IGN1dCAtZCAnOycgLWYgMWAKLQkJcmVtYWluaW5nPWBlY2hvICIkcmVtYWluaW5nIiB8IGN1dCAtZCAnOycgLWYgMi1gCisJCW9wdHM9YGVjaG8gIiRyZW1haW5pbmciIHwgY3V0IC1kICc7JyAtZiAxIHwgc2VkIC1lICdzI1sgXHRdKiQjIydgCisJCXJlbWFpbmluZz1gZWNobyAiJHJlbWFpbmluZyIgfCBjdXQgLWQgJzsnIC1mIDItIHwgc2VkIC1lICdzI1sgXHRdKiQjIydgCiAJZG9uZQogZmkgCiAKQEAgLTcwLDE1ICs2NiwxNSBAQAogCWVjaG8gIlJ1bm5pbmcgdXNlcmFkZCBjb21tYW5kcy4uLiIKIAkjIEludm9rZSBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgdXNlcmFkZCBmb3IgcGFyYW1ldGVyIGxpc3RzCiAJIyBzZXBhcmF0ZWQgYnkgJzsnCi0Jb3B0cz1gZWNobyAiJFVTRVJBRERfUEFSQU0iIHwgY3V0IC1kICc7JyAtZiAxYAotCXJlbWFpbmluZz1gZWNobyAiJFVTRVJBRERfUEFSQU0iIHwgY3V0IC1kICc7JyAtZiAyLWAKKwlvcHRzPWBlY2hvICIkVVNFUkFERF9QQVJBTSIgfCBjdXQgLWQgJzsnIC1mIDEgfCBzZWQgLWUgJ3MjWyBcdF0qJCMjJ2AKKwlyZW1haW5pbmc9YGVjaG8gIiRVU0VSQUREX1BBUkFNIiB8IGN1dCAtZCAnOycgLWYgMi0gfCBzZWQgLWUgJ3MjWyBcdF0qJCMjJ2AKIAl3aGlsZSB0ZXN0ICJ4JG9wdHMiICE9ICJ4IjsgZG8KIAkJcGVyZm9ybV91c2VyYWRkICIkU1lTUk9PVCIgIiRPUFQgJG9wdHMiCiAJCWlmIHRlc3QgIngkb3B0cyIgPSAieCRyZW1haW5pbmciOyB0aGVuCiAJCQlicmVhawogCQlmaQotCQlvcHRzPWBlY2hvICIkcmVtYWluaW5nIiB8IGN1dCAtZCAnOycgLWYgMWAKLQkJcmVtYWluaW5nPWBlY2hvICIkcmVtYWluaW5nIiB8IGN1dCAtZCAnOycgLWYgMi1gCisJCW9wdHM9YGVjaG8gIiRyZW1haW5pbmciIHwgY3V0IC1kICc7JyAtZiAxIHwgc2VkIC1lICdzI1sgXHRdKiQjIydgCisJCXJlbWFpbmluZz1gZWNobyAiJHJlbWFpbmluZyIgfCBjdXQgLWQgJzsnIC1mIDItIHwgc2VkIC1lICdzI1sgXHRdKiQjIydgCiAJZG9uZQogZmkKIApAQCAtODYsMTUgKzgyLDE1IEBACiAJZWNobyAiUnVubmluZyBncm91cG1lbXMgY29tbWFuZHMuLi4iCiAJIyBJbnZva2UgbXVsdGlwbGUgaW5zdGFuY2VzIG9mIGdyb3VwbWVtcyBmb3IgcGFyYW1ldGVyIGxpc3RzCiAJIyBzZXBhcmF0ZWQgYnkgJzsnCi0Jb3B0cz1gZWNobyAiJEdST1VQTUVNU19QQVJBTSIgfCBjdXQgLWQgJzsnIC1mIDFgCi0JcmVtYWluaW5nPWBlY2hvICIkR1JPVVBNRU1TX1BBUkFNIiB8IGN1dCAtZCAnOycgLWYgMi1gCisJb3B0cz1gZWNobyAiJEdST1VQTUVNU19QQVJBTSIgfCBjdXQgLWQgJzsnIC1mIDEgfCBzZWQgLWUgJ3MjWyBcdF0qJCMjJ2AKKwlyZW1haW5pbmc9YGVjaG8gIiRHUk9VUE1FTVNfUEFSQU0iIHwgY3V0IC1kICc7JyAtZiAyLSB8IHNlZCAtZSAncyNbIFx0XSokIyMnYAogCXdoaWxlIHRlc3QgIngkb3B0cyIgIT0gIngiOyBkbwogCQlwZXJmb3JtX2dyb3VwbWVtcyAiJFNZU1JPT1QiICIkT1BUICRvcHRzIgogCQlpZiB0ZXN0ICJ4JG9wdHMiID0gIngkcmVtYWluaW5nIjsgdGhlbgogCQkJYnJlYWsKIAkJZmkKLQkJb3B0cz1gZWNobyAiJHJlbWFpbmluZyIgfCBjdXQgLWQgJzsnIC1mIDFgCi0JCXJlbWFpbmluZz1gZWNobyAiJHJlbWFpbmluZyIgfCBjdXQgLWQgJzsnIC1mIDItYAorCQlvcHRzPWBlY2hvICIkcmVtYWluaW5nIiB8IGN1dCAtZCAnOycgLWYgMSB8IHNlZCAtZSAncyNbIFx0XSokIyMnYAorCQlyZW1haW5pbmc9YGVjaG8gIiRyZW1haW5pbmciIHwgY3V0IC1kICc7JyAtZiAyLSB8IHNlZCAtZSAncyNbIFx0XSokIyMnYAogCWRvbmUKIGZpCiB9CkBAIC0xMDMsNyArOTksNyBAQAogCSMgUHNldWRvIG1heSAoZG9faW5zdGFsbCkgb3IgbWF5IG5vdCAoZG9fcG9wdWxhdGVfc3lzcm9vdF9zZXRzY2VuZSkgYmUgcnVubmluZyAKIAkjIGF0IHRoaXMgcG9pbnQgc28gd2UncmUgZXhwbGljaXQgYWJvdXQgdGhlIGVudmlyb25tZW50IHNvIHBzZXVkbyBjYW4gbG9hZCBpZiAKIAkjIG5vdCBhbHJlYWR5IHByZXNlbnQuCi0JZXhwb3J0IFBTRVVETz0iJHtGQUtFUk9PVEVOVn0gUFNFVURPX0xPQ0FMU1RBVEVESVI9JHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtsb2NhbHN0YXRlZGlyfS9wc2V1ZG8gJHtTVEFHSU5HX0RJUl9OQVRJVkV9JHtiaW5kaXJ9L3BzZXVkbyIKKwlleHBvcnQgUFNFVURPPSIke0ZBS0VST09URU5WfSBQU0VVRE9fTE9DQUxTVEFURURJUj0ke1NUQUdJTkdfRElSX1RBUkdFVH0ke2xvY2Fsc3RhdGVkaXJ9L3BzZXVkbyAke1NUQUdJTkdfRElSX05BVElWRX0ke2JpbmRpcl9uYXRpdmV9L3BzZXVkbyIKIAogCSMgRXhwbGljaXRseSBzZXQgJEQgc2luY2UgaXQgaXNuJ3Qgc2V0IHRvIGFueXRoaW5nCiAJIyBiZWZvcmUgZG9faW5zdGFsbApAQCAtMTI5LDU3ICsxMjUsNTMgQEAKIAogdXNlcmRlbF9zeXNyb290X3NzdGF0ZSAoKSB7CiBpZiB0ZXN0ICJ4JHtTVEFHSU5HX0RJUl9UQVJHRVR9IiAhPSAieCI7IHRoZW4KLSAgICBpZiBbICIke0JCX0NVUlJFTlRUQVNLfSIgPSAiY29uZmlndXJlIiAtbyAiJHtCQl9DVVJSRU5UVEFTS30iID0gImNsZWFuIiBdOyB0aGVuCi0gICAgICAgIGV4cG9ydCBQU0VVRE89IiR7RkFLRVJPT1RFTlZ9IFBTRVVET19MT0NBTFNUQVRFRElSPSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7bG9jYWxzdGF0ZWRpcn0vcHNldWRvICR7U1RBR0lOR19ESVJfTkFUSVZFfSR7YmluZGlyfS9wc2V1ZG8iCisgICAgaWYgWyAiJHtCQl9DVVJSRU5UVEFTS30iID0gImNsZWFuIiBdOyB0aGVuCisgICAgICAgIGV4cG9ydCBQU0VVRE89IiR7RkFLRVJPT1RFTlZ9IFBTRVVET19MT0NBTFNUQVRFRElSPSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7bG9jYWxzdGF0ZWRpcn0vcHNldWRvICR7U1RBR0lOR19ESVJfTkFUSVZFfSR7YmluZGlyX25hdGl2ZX0vcHNldWRvIgogICAgICAgICBPUFQ9Ii0tcm9vdCAke1NUQUdJTkdfRElSX1RBUkdFVH0iCiAKICAgICAgICAgIyBSZW1vdmUgZ3JvdXBzIGFuZCB1c2VycyBkZWZpbmVkIGZvciBwYWNrYWdlCiAgICAgICAgIEdST1VQQUREX1BBUkFNPSIke0BnZXRfYWxsX2NtZF9wYXJhbXMoZCwgJ2dyb3VwYWRkJyl9IgogICAgICAgICBVU0VSQUREX1BBUkFNPSIke0BnZXRfYWxsX2NtZF9wYXJhbXMoZCwgJ3VzZXJhZGQnKX0iCiAKLSAgICAgICAgaWYgdGVzdCAieGBlY2hvICRVU0VSQUREX1BBUkFNIHwgdHIgLWQgJ1s6c3BhY2U6XSdgIiAhPSAieCI7IHRoZW4KLSAgICAgICAgICAgIHVzZXI9YGVjaG8gIiRVU0VSQUREX1BBUkFNIiB8IGN1dCAtZCAnOycgLWYgMSB8IGF3ayAneyBwcmludCAkTkYgfSdgCisgICAgICAgIHVzZXI9YGVjaG8gIiRVU0VSQUREX1BBUkFNIiB8IGN1dCAtZCAnOycgLWYgMSB8IGF3ayAneyBwcmludCAkTkYgfSdgCisgICAgICAgIHJlbWFpbmluZz1gZWNobyAiJFVTRVJBRERfUEFSQU0iIHwgY3V0IC1kICc7JyAtZiAyLSAtcyB8IHNlZCAtZSAncyNbIFx0XSokIyMnYAorICAgICAgICB3aGlsZSB0ZXN0ICJ4JHVzZXIiICE9ICJ4IjsgZG8KICAgICAgICAgICAgIHBlcmZvcm1fdXNlcmRlbCAiJHtTVEFHSU5HX0RJUl9UQVJHRVR9IiAiJE9QVCAkdXNlciIKLSAgICAgICAgZmkKKyAgICAgICAgICAgIHVzZXI9YGVjaG8gIiRyZW1haW5pbmciIHwgY3V0IC1kICc7JyAtZiAxIHwgYXdrICd7IHByaW50ICRORiB9J2AKKyAgICAgICAgICAgIHJlbWFpbmluZz1gZWNobyAiJHJlbWFpbmluZyIgfCBjdXQgLWQgJzsnIC1mIDItIC1zIHwgc2VkIC1lICdzI1sgXHRdKiQjIydgCisgICAgICAgIGRvbmUKIAotICAgICAgICBpZiB0ZXN0ICJ4YGVjaG8gJEdST1VQQUREX1BBUkFNIHwgdHIgLWQgJ1s6c3BhY2U6XSdgIiAhPSAieCI7IHRoZW4KLSAgICAgICAgICAgIGdyb3VwPWBlY2hvICIkR1JPVVBBRERfUEFSQU0iIHwgY3V0IC1kICc7JyAtZiAxIHwgYXdrICd7IHByaW50ICRORiB9J2AKLSAgICAgICAgICAgIHBlcmZvcm1fZ3JvdXBkZWwgIiR7U1RBR0lOR19ESVJfVEFSR0VUfSIgIiRPUFQgJGdyb3VwIgotICAgICAgICBmaQorICAgICAgICB1c2VyPWBlY2hvICIkR1JPVVBBRERfUEFSQU0iIHwgY3V0IC1kICc7JyAtZiAxIHwgYXdrICd7IHByaW50ICRORiB9J2AKKyAgICAgICAgcmVtYWluaW5nPWBlY2hvICIkR1JPVVBBRERfUEFSQU0iIHwgY3V0IC1kICc7JyAtZiAyLSAtcyB8IHNlZCAtZSAncyNbIFx0XSokIyMnYAorICAgICAgICB3aGlsZSB0ZXN0ICJ4JHVzZXIiICE9ICJ4IjsgZG8KKyAgICAgICAgICAgIHBlcmZvcm1fZ3JvdXBkZWwgIiR7U1RBR0lOR19ESVJfVEFSR0VUfSIgIiRPUFQgJHVzZXIiCisgICAgICAgICAgICB1c2VyPWBlY2hvICIkcmVtYWluaW5nIiB8IGN1dCAtZCAnOycgLWYgMSB8IGF3ayAneyBwcmludCAkTkYgfSdgCisgICAgICAgICAgICByZW1haW5pbmc9YGVjaG8gIiRyZW1haW5pbmciIHwgY3V0IC1kICc7JyAtZiAyLSAtcyB8IHNlZCAtZSAncyNbIFx0XSokIyMnYAorICAgICAgICBkb25lCiAKICAgICBmaQogZmkKIH0KIAotU1NUQVRFQ0xFQU5GVU5DUyA9ICJ1c2VyZGVsX3N5c3Jvb3Rfc3N0YXRlIgotU1NUQVRFQ0xFQU5GVU5DU19jbGFzcy1jcm9zcyA9ICIiCi1TU1RBVEVDTEVBTkZVTkNTX2NsYXNzLW5hdGl2ZSA9ICIiCi1TU1RBVEVDTEVBTkZVTkNTX2NsYXNzLW5hdGl2ZXNkayA9ICIiCitTU1RBVEVDTEVBTkZVTkNTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIHVzZXJkZWxfc3lzcm9vdF9zc3RhdGUiCiAKIGRvX2luc3RhbGxbcHJlZnVuY3NdICs9ICIke1NZU1JPT1RGVU5DfSIKLVNZU1JPT1RGVU5DID0gInVzZXJhZGRfc3lzcm9vdCIKLVNZU1JPT1RGVU5DX2NsYXNzLWNyb3NzID0gIiIKLVNZU1JPT1RGVU5DX2NsYXNzLW5hdGl2ZSA9ICIiCi1TWVNST09URlVOQ19jbGFzcy1uYXRpdmVzZGsgPSAiIgotU1NUQVRFUFJFSU5TVEZVTkNTICs9ICIke1NZU1JPT1RQT1NURlVOQ30iCi1TWVNST09UUE9TVEZVTkMgPSAidXNlcmFkZF9zeXNyb290X3NzdGF0ZSIKLVNZU1JPT1RQT1NURlVOQ19jbGFzcy1jcm9zcyA9ICIiCi1TWVNST09UUE9TVEZVTkNfY2xhc3MtbmF0aXZlID0gIiIKLVNZU1JPT1RQT1NURlVOQ19jbGFzcy1uYXRpdmVzZGsgPSAiIgorU1lTUk9PVEZVTkNfY2xhc3MtdGFyZ2V0ID0gInVzZXJhZGRfc3lzcm9vdCIKK1NZU1JPT1RGVU5DID0gIiIKIAotVVNFUkFERFNFVFNDRU5FREVQUyA9ICIke01MUFJFRklYfWJhc2UtcGFzc3dkOmRvX3BvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmUgcHNldWRvLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290X3NldHNjZW5lIHNoYWRvdy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdF9zZXRzY2VuZSAke01MUFJFRklYfXNoYWRvdy1zeXNyb290OmRvX3BvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmUiCi1VU0VSQUREU0VUU0NFTkVERVBTX2NsYXNzLWNyb3NzID0gIiIKLVVTRVJBRERTRVRTQ0VORURFUFNfY2xhc3MtbmF0aXZlID0gIiIKLVVTRVJBRERTRVRTQ0VORURFUFNfY2xhc3MtbmF0aXZlc2RrID0gIiIKK1NTVEFURVBSRUlOU1RGVU5DU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiB1c2VyYWRkX3N5c3Jvb3Rfc3N0YXRlIgorCiBkb19wYWNrYWdlX3NldHNjZW5lW2RlcGVuZHNdICs9ICIke1VTRVJBRERTRVRTQ0VORURFUFN9IgogZG9fcG9wdWxhdGVfc3lzcm9vdF9zZXRzY2VuZVtkZXBlbmRzXSArPSAiJHtVU0VSQUREU0VUU0NFTkVERVBTfSIKK1VTRVJBRERTRVRTQ0VORURFUFNfY2xhc3MtdGFyZ2V0ID0gIiR7TUxQUkVGSVh9YmFzZS1wYXNzd2Q6ZG9fcG9wdWxhdGVfc3lzcm9vdF9zZXRzY2VuZSBwc2V1ZG8tbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmUgc2hhZG93LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290X3NldHNjZW5lICR7TUxQUkVGSVh9c2hhZG93LXN5c3Jvb3Q6ZG9fcG9wdWxhdGVfc3lzcm9vdF9zZXRzY2VuZSIKK1VTRVJBRERTRVRTQ0VORURFUFMgPSAiIgogCiAjIFJlY2lwZSBwYXJzZS10aW1lIHNhbml0eSBjaGVja3MKIGRlZiB1cGRhdGVfdXNlcmFkZF9hZnRlcl9wYXJzZShkKToKICAgICB1c2VyYWRkX3BhY2thZ2VzID0gZC5nZXRWYXIoJ1VTRVJBRERfUEFDS0FHRVMnLCBUcnVlKQogCiAgICAgaWYgbm90IHVzZXJhZGRfcGFja2FnZXM6Ci0gICAgICAgIHJhaXNlIGJiLmJ1aWxkLkZ1bmNGYWlsZWQoIiVzIGluaGVyaXRzIHVzZXJhZGQgYnV0IGRvZXNuJ3Qgc2V0IFVTRVJBRERfUEFDS0FHRVMiICUgZC5nZXRWYXIoJ0ZJTEUnLCBGYWxzZSkpCisgICAgICAgIGJiLmZhdGFsKCIlcyBpbmhlcml0cyB1c2VyYWRkIGJ1dCBkb2Vzbid0IHNldCBVU0VSQUREX1BBQ0tBR0VTIiAlIGQuZ2V0VmFyKCdGSUxFJywgRmFsc2UpKQogCiAgICAgZm9yIHBrZyBpbiB1c2VyYWRkX3BhY2thZ2VzLnNwbGl0KCk6CiAgICAgICAgIGlmIG5vdCBkLmdldFZhcignVVNFUkFERF9QQVJBTV8lcycgJSBwa2csIFRydWUpIGFuZCBub3QgZC5nZXRWYXIoJ0dST1VQQUREX1BBUkFNXyVzJyAlIHBrZywgVHJ1ZSkgYW5kIG5vdCBkLmdldFZhcignR1JPVVBNRU1TX1BBUkFNXyVzJyAlIHBrZywgVHJ1ZSk6CkBAIC0yMDMsNyArMTk1LDcgQEAKICAgICBmb3IgcGtnIGluIHVzZXJhZGRfcGFja2FnZXMuc3BsaXQoKToKICAgICAgICAgcGFyYW0gPSBkLmdldFZhcihwYXJhbV90eXBlICUgcGtnLCBUcnVlKQogICAgICAgICBpZiBwYXJhbToKLSAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQocGFyYW0pCisgICAgICAgICAgICBwYXJhbXMuYXBwZW5kKHBhcmFtLnJzdHJpcCgiIDsiKSkKIAogICAgIHJldHVybiAiOyAiLmpvaW4ocGFyYW1zKQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3VzZXJhZGRfYmFzZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91c2VyYWRkX2Jhc2UuYmJjbGFzcwppbmRleCAwZDgxYWNjLi5iYTg3ZWRjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3VzZXJhZGRfYmFzZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXNlcmFkZF9iYXNlLmJiY2xhc3MKQEAgLTE3LDcgKzE3LDYgQEAKIAlsb2NhbCBncm91cG5hbWU9YGVjaG8gIiRvcHRzIiB8IGF3ayAneyBwcmludCAkTkYgfSdgCiAJbG9jYWwgZ3JvdXBfZXhpc3RzPSJgZ3JlcCAiXiRncm91cG5hbWU6IiAkcm9vdGRpci9ldGMvZ3JvdXAgfHwgdHJ1ZWAiCiAJaWYgdGVzdCAieCRncm91cF9leGlzdHMiID0gIngiOyB0aGVuCi0JCW9wdHM9YGVjaG8gJG9wdHMgfCBzZWQgcy9cJy9cIi9nYAogCQlldmFsIGZsb2NrIC14ICRyb290ZGlyJHtzeXNjb25mZGlyfSAtYyBcIiRQU0VVRE8gZ3JvdXBhZGQgXCRvcHRzXCIgfHwgdHJ1ZQogCQlncm91cF9leGlzdHM9ImBncmVwICJeJGdyb3VwbmFtZToiICRyb290ZGlyL2V0Yy9ncm91cCB8fCB0cnVlYCIKIAkJaWYgdGVzdCAieCRncm91cF9leGlzdHMiID0gIngiOyB0aGVuCkBAIC0zNSw3ICszNCw2IEBACiAJbG9jYWwgdXNlcm5hbWU9YGVjaG8gIiRvcHRzIiB8IGF3ayAneyBwcmludCAkTkYgfSdgCiAJbG9jYWwgdXNlcl9leGlzdHM9ImBncmVwICJeJHVzZXJuYW1lOiIgJHJvb3RkaXIvZXRjL3Bhc3N3ZCB8fCB0cnVlYCIKIAlpZiB0ZXN0ICJ4JHVzZXJfZXhpc3RzIiA9ICJ4IjsgdGhlbgotCQlvcHRzPWBlY2hvICRvcHRzIHwgc2VkIHMvXCcvXCIvZ2AKIAkJZXZhbCBmbG9jayAteCAkcm9vdGRpciR7c3lzY29uZmRpcn0gLWMgIFwiJFBTRVVETyB1c2VyYWRkIFwkb3B0c1wiIHx8IHRydWUKIAkJdXNlcl9leGlzdHM9ImBncmVwICJeJHVzZXJuYW1lOiIgJHJvb3RkaXIvZXRjL3Bhc3N3ZCB8fCB0cnVlYCIKIAkJaWYgdGVzdCAieCR1c2VyX2V4aXN0cyIgPSAieCI7IHRoZW4KQEAgLTUzLDE0ICs1MSw2IEBACiAJbG9jYWwgZ3JvdXBuYW1lPWBlY2hvICIkb3B0cyIgfCBhd2sgJ3sgZm9yIChpID0gMTsgaSA8IE5GOyBpKyspIGlmICgkaSA9PSAiLWciIHx8ICRpID09ICItLWdyb3VwIikgcHJpbnQgJChpKzEpIH0nYAogCWxvY2FsIHVzZXJuYW1lPWBlY2hvICIkb3B0cyIgfCBhd2sgJ3sgZm9yIChpID0gMTsgaSA8IE5GOyBpKyspIGlmICgkaSA9PSAiLWEiIHx8ICRpID09ICItLWFkZCIpIHByaW50ICQoaSsxKSB9J2AKIAliYm5vdGUgIiR7UE59OiBSdW5uaW5nIGdyb3VwbWVtcyBjb21tYW5kIHdpdGggZ3JvdXAgJGdyb3VwbmFtZSBhbmQgdXNlciAkdXNlcm5hbWUiCi0JIyBncm91cG1lbXMgZmFpbHMgaWYgL2V0Yy9nc2hhZG93IGRvZXMgbm90IGV4aXN0Ci0JbG9jYWwgZ3NoYWRvdz0iIgotCWlmIFsgLWYgJHJvb3RkaXIke3N5c2NvbmZkaXJ9L2dzaGFkb3cgXTsgdGhlbgotCQlnc2hhZG93PSJ5ZXMiCi0JZWxzZQotCQlnc2hhZG93PSJubyIKLQkJdG91Y2ggJHJvb3RkaXIke3N5c2NvbmZkaXJ9L2dzaGFkb3cKLQlmaQogCWxvY2FsIG1lbV9leGlzdHM9ImBncmVwICJeJGdyb3VwbmFtZTpbXjpdKjpbXjpdKjpcKFteLF0qLFwpKiR1c2VybmFtZVwoLFteLF0qXCkqIiAkcm9vdGRpci9ldGMvZ3JvdXAgfHwgdHJ1ZWAiCiAJaWYgdGVzdCAieCRtZW1fZXhpc3RzIiA9ICJ4IjsgdGhlbgogCQlldmFsIGZsb2NrIC14ICRyb290ZGlyJHtzeXNjb25mZGlyfSAtYyBcIiRQU0VVRE8gZ3JvdXBtZW1zIFwkb3B0c1wiIHx8IHRydWUKQEAgLTcxLDEwICs2MSw2IEBACiAJZWxzZQogCQliYm5vdGUgIiR7UE59OiBncm91cCAkZ3JvdXBuYW1lIGFscmVhZHkgY29udGFpbnMgJHVzZXJuYW1lLCBub3QgcmUtYWRkaW5nIGl0IgogCWZpCi0JaWYgdGVzdCAieCRnc2hhZG93IiA9ICJ4bm8iOyB0aGVuCi0JCXJtIC1mICRyb290ZGlyJHtzeXNjb25mZGlyfS9nc2hhZG93Ci0JCXJtIC1mICRyb290ZGlyJHtzeXNjb25mZGlyfS9nc2hhZG93LQotCWZpCiB9CiAKIHBlcmZvcm1fZ3JvdXBkZWwgKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91dGlsaXR5LXRhc2tzLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3V0aWxpdHktdGFza3MuYmJjbGFzcwppbmRleCA1YmNmZDBiLi43YmE1NmUyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3V0aWxpdHktdGFza3MuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3V0aWxpdHktdGFza3MuYmJjbGFzcwpAQCAtNDYsOCArNDYsOCBAQAogICAgIHRyeToKICAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoMi5GZXRjaChzcmNfdXJpLCBkKQogICAgICAgICBmZXRjaGVyLmNoZWNrc3RhdHVzKCkKLSAgICBleGNlcHQgYmIuZmV0Y2gyLkJCRmV0Y2hFeGNlcHRpb24sIGU6Ci0gICAgICAgIHJhaXNlIGJiLmJ1aWxkLkZ1bmNGYWlsZWQoZSkKKyAgICBleGNlcHQgYmIuZmV0Y2gyLkJCRmV0Y2hFeGNlcHRpb24gYXMgZToKKyAgICAgICAgYmIuZmF0YWwoc3RyKGUpKQogfQogCiBhZGR0YXNrIGNoZWNrdXJpYWxsIGFmdGVyIGRvX2NoZWNrdXJpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3V0aWxzLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3V0aWxzLmJiY2xhc3MKaW5kZXggODFiOTJjYi4uZGJiNWU0YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91dGlscy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXRpbHMuYmJjbGFzcwpAQCAtMjQsNiArMjQsNyBAQAogICAgIHJldHVybiBvZS51dGlscy52ZXJzaW9uX2xlc3Nfb3JfZXF1YWwodmFyaWFibGUsIGNoZWNrdmFsdWUsIHRydWV2YWx1ZSwgZmFsc2V2YWx1ZSwgZCkKIAogZGVmIGJhc2VfY29udGFpbnModmFyaWFibGUsIGNoZWNrdmFsdWVzLCB0cnVldmFsdWUsIGZhbHNldmFsdWUsIGQpOgorICAgIGJiLm5vdGUoJ2Jhc2VfY29udGFpbnMgaXMgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSBiYi51dGlscy5jb250YWlucyBpbnN0ZWFkLicpCiAgICAgcmV0dXJuIGJiLnV0aWxzLmNvbnRhaW5zKHZhcmlhYmxlLCBjaGVja3ZhbHVlcywgdHJ1ZXZhbHVlLCBmYWxzZXZhbHVlLCBkKQogCiBkZWYgYmFzZV9ib3RoX2NvbnRhaW4odmFyaWFibGUxLCB2YXJpYWJsZTIsIGNoZWNrdmFsdWUsIGQpOgpAQCAtNjEsMTUgKzYyLDE4IEBACiBvZV9zb2luc3RhbGwoKSB7CiAJIyBQdXJwb3NlOiBJbnN0YWxsIHNoYXJlZCBsaWJyYXJ5IGZpbGUgYW5kCiAJIyAgICAgICAgICBjcmVhdGUgdGhlIG5lY2Vzc2FyeSBsaW5rcwotCSMgRXhhbXBsZToKLQkjCi0JIyBvZV8KLQkjCi0JI2Jibm90ZSBpbnN0YWxsaW5nIHNoYXJlZCBsaWJyYXJ5ICQxIHRvICQyCi0JIworCSMgRXhhbXBsZTogb2Vfc29pbnN0YWxsIGxpYmZvby5zby4xLjIuMyAke0R9JHtsaWJkaXJ9CiAJbGlibmFtZT1gYmFzZW5hbWUgJDFgCisJY2FzZSAiJGxpYm5hbWUiIGluCisJICAgICouc28pCisJICAgICAgICBiYmZhdGFsICJvZV9zb2luc3RhbGw6IFNoYXJlZCBsaWJyYXJ5IG11c3QgaGF2ZWQgdmVyc2lvbmVkIGZpbGVuYW1lIChlLmcuIGxpYmZvby5zby4xLjIuMykiCisJICAgICAgICA7OworCWVzYWMKIAlpbnN0YWxsIC1tIDc1NSAkMSAkMi8kbGlibmFtZQogCXNvbmFtZWxpbms9YCR7SE9TVF9QUkVGSVh9cmVhZGVsZiAtZCAkMSB8Z3JlcCAnTGlicmFyeSBzb25hbWU6JyB8c2VkIC1lICdzLy4qXFtcKC4qXClcXS4qL1wxLydgCisJaWYgWyAteiAkc29uYW1lbGluayBdOyB0aGVuCisJCWJiZmF0YWwgIm9lX3NvaW5zdGFsbDogJGxpYm5hbWUgaXMgbWlzc2luZyBFTEYgdGFnICdTT05BTUUnLiIKKwlmaQogCXNvbGluaz1gZWNobyAkbGlibmFtZSB8IHNlZCAtZSAncy9cLnNvXC4uKi8uc28vJ2AKIAlsbiAtc2YgJGxpYm5hbWUgJDIvJHNvbmFtZWxpbmsKIAlsbiAtc2YgJGxpYm5hbWUgJDIvJHNvbGluawpAQCAtMjQ4LDcgKzI1Miw3IEBACiBjcmVhdGVfY21kbGluZV93cmFwcGVyICgpIHsKIAkjIENyZWF0ZSBhIHdyYXBwZXIgc2NyaXB0IHdoZXJlIGNvbW1hbmRsaW5lIG9wdGlvbnMgYXJlIG5lZWRlZAogCSMKLQkjIFRoZXNlIGFyZSB1c2VmdWwgdG8gd29yayBhcm91bmQgcmVsb2NhdGlvbiBpc3N1ZXMsIGJ5IHBhc3NpbmcgZXh0cmEgb3B0aW9ucyAKKwkjIFRoZXNlIGFyZSB1c2VmdWwgdG8gd29yayBhcm91bmQgcmVsb2NhdGlvbiBpc3N1ZXMsIGJ5IHBhc3NpbmcgZXh0cmEgb3B0aW9ucwogCSMgdG8gYSBwcm9ncmFtCiAJIwogCSMgVXNhZ2U6IGNyZWF0ZV9jbWRsaW5lX3dyYXBwZXIgRklMRU5BTUUgPGV4dHJhLW9wdGlvbnM+CkBAIC0zMDIsNyArMzA2LDcgQEAKIAogCiBkZWYgY2hlY2tfYXBwX2V4aXN0cyhhcHAsIGQpOgotICAgIGFwcCA9IGQuZXhwYW5kKGFwcCkKKyAgICBhcHAgPSBkLmV4cGFuZChhcHApLnN0cmlwKCkKICAgICBwYXRoID0gZC5nZXRWYXIoJ1BBVEgnLCBkLCBUcnVlKQogICAgIHJldHVybiBib29sKGJiLnV0aWxzLndoaWNoKHBhdGgsIGFwcCkpCiAKQEAgLTMyMiw3ICszMjYsNyBAQAogICAgIG92ZXJyaWRlcy5yZXZlcnNlKCkKICAgICBmb3IgbyBpbiBvdmVycmlkZXM6CiAgICAgICAgIGZvciBwIGluIHBhdGg6Ci0gICAgICAgICAgICBpZiBwICE9ICIiOiAKKyAgICAgICAgICAgIGlmIHAgIT0gIiI6CiAgICAgICAgICAgICAgICAgZmlsZXNwYXRoLmFwcGVuZChvcy5wYXRoLmpvaW4ocCwgbykpCiAgICAgcmV0dXJuICI6Ii5qb2luKGZpbGVzcGF0aCkKIApAQCAtMzc4LDMgKzM4Miw1MCBAQAogICAgIGVsc2U6CiAgICAgICAgIHJldCA9IHZhbHVlcwogICAgIHJldHVybiAiICIuam9pbihyZXQpCisKK2RlZiBhbGxfbXVsdGlsaWJfdHVuZV9saXN0KHZhcnMsIGQpOgorICAgICIiIgorICAgIFJldHVybiBhIGxpc3Qgb2YgJHtWQVJ9IGZvciBlYWNoIHZhcmlhYmxlIFZBUiBpbiB2YXJzIGZyb20gZWFjaCAKKyAgICBtdWx0aWxpYiB0dW5lIGNvbmZpZ3VyYXRpb24uCisgICAgSXMgc2FmZSB0byBiZSBjYWxsZWQgZnJvbSBhIG11bHRpbGliIHJlY2lwZS9jb250ZXh0IGFzIGl0IGNhbgorICAgIGZpZ3VyZSBvdXQgdGhlIG9yaWdpbmFsIHR1bmUgYW5kIHJlbW92ZSB0aGUgbXVsdGlsaWIgb3ZlcnJpZGVzLgorICAgICIiIgorICAgIHZhbHVlcyA9IHt9CisgICAgZm9yIHYgaW4gdmFyczoKKyAgICAgICAgdmFsdWVzW3ZdID0gW10KKworICAgIGxvY2FsZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShkKQorICAgIG92ZXJyaWRlcyA9IGxvY2FsZGF0YS5nZXRWYXIoIk9WRVJSSURFUyIsIEZhbHNlKS5zcGxpdCgiOiIpCisgICAgbmV3b3ZlcnJpZGVzID0gW10KKyAgICBmb3IgbyBpbiBvdmVycmlkZXM6CisgICAgICAgIGlmIG5vdCBvLnN0YXJ0c3dpdGgoInZpcnRjbGFzcy1tdWx0aWxpYi0iKToKKyAgICAgICAgICAgIG5ld292ZXJyaWRlcy5hcHBlbmQobykKKyAgICBsb2NhbGRhdGEuc2V0VmFyKCJPVkVSUklERVMiLCAiOiIuam9pbihuZXdvdmVycmlkZXMpKQorICAgIGxvY2FsZGF0YS5zZXRWYXIoIk1MUFJFRklYIiwgIiIpCisgICAgb3JpZ2RlZmF1bHQgPSBsb2NhbGRhdGEuZ2V0VmFyKCJERUZBVUxUVFVORV9NVUxUSUxJQl9PUklHSU5BTCIsIFRydWUpCisgICAgaWYgb3JpZ2RlZmF1bHQ6CisgICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoIkRFRkFVTFRUVU5FIiwgb3JpZ2RlZmF1bHQpCisgICAgYmIuZGF0YS51cGRhdGVfZGF0YShsb2NhbGRhdGEpCisgICAgdmFsdWVzWydtbCddID0gWycnXQorICAgIGZvciB2IGluIHZhcnM6CisgICAgICAgIHZhbHVlc1t2XS5hcHBlbmQobG9jYWxkYXRhLmdldFZhcih2LCBUcnVlKSkKKyAgICB2YXJpYW50cyA9IGQuZ2V0VmFyKCJNVUxUSUxJQl9WQVJJQU5UUyIsIFRydWUpIG9yICIiCisgICAgZm9yIGl0ZW0gaW4gdmFyaWFudHMuc3BsaXQoKToKKyAgICAgICAgbG9jYWxkYXRhID0gYmIuZGF0YS5jcmVhdGVDb3B5KGQpCisgICAgICAgIG92ZXJyaWRlcyA9IGxvY2FsZGF0YS5nZXRWYXIoIk9WRVJSSURFUyIsIEZhbHNlKSArICI6dmlydGNsYXNzLW11bHRpbGliLSIgKyBpdGVtCisgICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoIk9WRVJSSURFUyIsIG92ZXJyaWRlcykKKyAgICAgICAgbG9jYWxkYXRhLnNldFZhcigiTUxQUkVGSVgiLCBpdGVtICsgIi0iKQorICAgICAgICBiYi5kYXRhLnVwZGF0ZV9kYXRhKGxvY2FsZGF0YSkKKyAgICAgICAgdmFsdWVzW3ZdLmFwcGVuZChsb2NhbGRhdGEuZ2V0VmFyKHYsIFRydWUpKQorICAgICAgICB2YWx1ZXNbJ21sJ10uYXBwZW5kKGl0ZW0pCisgICAgcmV0dXJuIHZhbHVlcworCisjIElmIHRoZSB1c2VyIGhhc24ndCBzZXQgdXAgdGhlaXIgbmFtZS9lbWFpbCwgc2V0IHNvbWUgZGVmYXVsdHMKK2NoZWNrX2dpdF9jb25maWcoKSB7CisJaWYgISBnaXQgY29uZmlnIHVzZXIuZW1haWwgPiAvZGV2L251bGwgOyB0aGVuCisJCWdpdCBjb25maWcgLS1sb2NhbCB1c2VyLmVtYWlsICIke1BBVENIX0dJVF9VU0VSX0VNQUlMfSIKKwlmaQorCWlmICEgZ2l0IGNvbmZpZyB1c2VyLm5hbWUgPiAvZGV2L251bGwgOyB0aGVuCisJCWdpdCBjb25maWcgLS1sb2NhbCB1c2VyLm5hbWUgIiR7UEFUQ0hfR0lUX1VTRVJfTkFNRX0iCisJZmkKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvYml0YmFrZS5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9iaXRiYWtlLmNvbmYKaW5kZXggNDA3OTZhYS4uNTRhNTg3ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9iaXRiYWtlLmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9iaXRiYWtlLmNvbmYKQEAgLTE1LDcgKzE1LDcgQEAKICMgUGF0aCBwcmVmaXhlcwogZXhwb3J0IGJhc2VfcHJlZml4ID0gIiIKIGV4cG9ydCBwcmVmaXggPSAiL3VzciIKLWV4cG9ydCBleGVjX3ByZWZpeCA9ICIvdXNyIgorZXhwb3J0IGV4ZWNfcHJlZml4ID0gIiR7cHJlZml4fSIKIAogIyBCYXNlIHBhdGhzCiBleHBvcnQgYmFzZV9iaW5kaXIgPSAiJHtiYXNlX3ByZWZpeH0vYmluIgpAQCAtMTI5LDcgKzEyOSw3IEBACiBUQVJHRVRfTERfQVJDSCA9ICIke1RVTkVfTERBUkdTfSIKIFRBUkdFVF9BU19BUkNIID0gIiR7VFVORV9BU0FSR1N9IgogCi1TREtfQVJDSCA9ICIke0JVSUxEX0FSQ0h9IgorU0RLTUFDSElORSA/Pz0gIng4Nl82NCIKIFNES19PUyA9ICIke0JVSUxEX09TfSIKIFNES19WRU5ET1IgPSAiLW9lc2RrIgogU0RLX1NZUyA9ICIke1NES19BUkNIfSR7U0RLX1ZFTkRPUn0ke0BbJy0nICsgZC5nZXRWYXIoJ1NES19PUycsIFRydWUpLCAnJ11bZC5nZXRWYXIoJ1NES19PUycsIFRydWUpID09ICgnJyBvciAnY3VzdG9tJyldfSIKQEAgLTI0Nyw3ICsyNDcsNyBAQAogREVTQ1JJUFRJT05fJHtQTn0tZG9jID89ICIke0RFU0NSSVBUSU9OfSAgXAogVGhpcyBwYWNrYWdlIGNvbnRhaW5zIGRvY3VtZW50YXRpb24uIgogCi1MSUNFTlNFID0gIklOVkFMSUQiCitMSUNFTlNFID8/PSAiSU5WQUxJRCIKIE1BSU5UQUlORVIgPSAiT0UtQ29yZSBEZXZlbG9wZXJzIDxvcGVuZW1iZWRkZWQtY29yZUBsaXN0cy5vcGVuZW1iZWRkZWQub3JnPiIKIEhPTUVQQUdFID0gIiIKIApAQCAtMjg0LDcgKzI4NCw4IEBACiAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9ICR7c2hhcmVkc3RhdGVkaXJ9ICR7bG9jYWxzdGF0ZWRpcn0gXAogICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vKiAke2Jhc2Vfc2JpbmRpcn0vKiBcCiAgICAgICAgICAgICAke2Jhc2VfbGliZGlyfS8qJHtTT0xJQlN9IFwKLSAgICAgICAgICAgICR7YmFzZV9wcmVmaXh9L2xpYi91ZGV2L3J1bGVzLmQgJHtwcmVmaXh9L2xpYi91ZGV2L3J1bGVzLmQgXAorICAgICAgICAgICAgJHtiYXNlX3ByZWZpeH0vbGliL3VkZXYgJHtwcmVmaXh9L2xpYi91ZGV2IFwKKyAgICAgICAgICAgICR7YmFzZV9saWJkaXJ9L3VkZXYgJHtsaWJkaXJ9L3VkZXYgXAogICAgICAgICAgICAgJHtkYXRhZGlyfS8ke0JQTn0gJHtsaWJkaXJ9LyR7QlBOfS8qIFwKICAgICAgICAgICAgICR7ZGF0YWRpcn0vcGl4bWFwcyAke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucyBcCiAgICAgICAgICAgICAke2RhdGFkaXJ9L2lkbCAke2RhdGFkaXJ9L29tZiAke2RhdGFkaXJ9L3NvdW5kcyBcCkBAIC00MDMsOCArNDA0LDE0IEBACiAjIEtlcm5lbCBpbmZvLgogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLU9MREVTVF9LRVJORUwgPSAiMi42LjMyIgorT0xERVNUX0tFUk5FTCA9ICIzLjIuMCIKIE9MREVTVF9LRVJORUxfYWFyY2g2NCA9ICIzLjE0IgorT0xERVNUX0tFUk5FTF9uaW9zMiA9ICIzLjE5IgorCisjIERlZmluZSB3aGVyZSB0aGUga2VybmVsIGhlYWRlcnMgYXJlIGluc3RhbGxlZCBvbiB0aGUgdGFyZ2V0IGFzIHdlbGwgYXMgd2hlcmUKKyMgdGhleSBhcmUgc3RhZ2VkLgorS0VSTkVMX1NSQ19QQVRIID0gIi91c3Ivc3JjL2tlcm5lbCIKKwogU1RBR0lOR19LRVJORUxfRElSID0gIiR7VE1QRElSfS93b3JrLXNoYXJlZC8ke01BQ0hJTkV9L2tlcm5lbC1zb3VyY2UiCiBTVEFHSU5HX0tFUk5FTF9CVUlMRERJUiA9ICIke1RNUERJUn0vd29yay1zaGFyZWQvJHtNQUNISU5FfS9rZXJuZWwtYnVpbGQtYXJ0aWZhY3RzIgogCkBAIC00NDQsMTAgKzQ1MSwxMCBAQAogIyBEaXNhYmxlIGNjYWNoZSBleHBsaWNpdGx5IGlmIENDQUNIRSBpcyBudWxsIHNpbmNlIGdjYyBtYXkgYmUgYSBzeW1saW5rCiAjIG9mIGNjYWNoZSBzb21lIGRpc3RyaWJ1dGlvbnMgKGUuZy4sIEZlZG9yYSAxNykuCiBleHBvcnQgQ0NBQ0hFX0RJU0FCTEUgPz89ICIke0BbMCwxXVtkLmdldFZhcignQ0NBQ0hFJywgVHJ1ZSkgPT0gJyddfSIKLSMgQXNzaWduIENDQUNIRV9ESVIgYSBkZWZhdWx0IHZhbHVlIHRvIGZpeCBhIGJ1ZyBvZiBjY2FjaGUgMy4xLjcsCi0jIHNpbmNlIGl0IHdvdWxkIGFsd2F5cyBjcmVhdGUgQ0NBQ0hFX0RJUi8uY2NhY2hlIGV2ZW4gaWYKLSMgQ0NBQ0hFX0RJU0FCTEUgPSAxLgotZXhwb3J0IENDQUNIRV9ESVIgPz89ICIke0Bvcy5nZXRlbnYoJ0hPTUUnKX0iCisjIGNjYWNoZSA8IDMuMS4xMCB3aWxsIGNyZWF0ZSBDQ0FDSEVfRElSIG9uIHN0YXJ0dXAgZXZlbiBpZiBkaXNhYmxlZCwgYW5kCisjIGF1dG9nZW4gc2V0cyBIT01FPS9kZXYvbnVsbCBzbyBpbiBjZXJ0YWluIHNpdHVhdGlvbnMgYnVpbGRzIGNhbiBmYWlsLgorIyBFeHBsaWNpdGx5IGV4cG9ydCBDQ0FDSEVfRElSIHVudGlsIHdlIGNhbiBhc3N1bWUgY2NhY2hlID4zLjEuMTAgb24gdGhlIGhvc3QuCitleHBvcnQgQ0NBQ0hFX0RJUiA/Pz0gIiR7QG9zLmdldGVudignSE9NRScpfS8uY2NhY2hlIgogCiBUT09MQ0hBSU5fT1BUSU9OUyA9ICIgLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSIKIApAQCAtNDY1LDYgKzQ3Miw3IEBACiBleHBvcnQgT0JKRFVNUCA9ICIke0hPU1RfUFJFRklYfW9iamR1bXAiCiBleHBvcnQgU1RSSU5HUyA9ICIke0hPU1RfUFJFRklYfXN0cmluZ3MiCiBleHBvcnQgTk0gPSAiJHtIT1NUX1BSRUZJWH1ubSIKK2V4cG9ydCBSRUFERUxGID0gIiR7SE9TVF9QUkVGSVh9cmVhZGVsZiIKIFBZVEhPTiA9ICIke0BzeXMuZXhlY3V0YWJsZX0iCiAKIGV4cG9ydCBCVUlMRF9DQyA9ICIke0NDQUNIRX0ke0JVSUxEX1BSRUZJWH1nY2MgJHtCVUlMRF9DQ19BUkNIfSIKQEAgLTQ4Miw3ICs0OTAsNyBAQAogZXhwb3J0IE1BS0UgPSAibWFrZSIKIEVYVFJBX09FTUFLRSA9ICIiCiBFWFRSQV9PRUNPTkYgPSAiIgotZXhwb3J0IExDX0FMTCA9ICJDIgorZXhwb3J0IExDX0FMTCA9ICJlbl9VUy5VVEYtOCIKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFBhdGNoIGhhbmRsaW5nLgpAQCAtNDk1LDEwICs1MDMsOSBAQAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKIGV4cG9ydCBCVUlMRF9DUFBGTEFHUyA9ICItaXN5c3RlbSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfSIKLUJVSUxEU0RLX0NQUEZMQUdTID0gIi1pc3lzdGVtJHtTVEFHSU5HX0lOQ0RJUn0iCitCVUlMRFNES19DUFBGTEFHUyA9ICIiCiBleHBvcnQgQ1BQRkxBR1MgPSAiJHtUQVJHRVRfQ1BQRkxBR1N9IgogZXhwb3J0IFRBUkdFVF9DUFBGTEFHUyA9ICIiCi0jZXhwb3J0IFRBUkdFVF9DUFBGTEFHUyA9ICItaXN5c3RlbSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7aW5jbHVkZWRpcn0iCiAKIGV4cG9ydCBCVUlMRF9DRkxBR1MgPSAiJHtCVUlMRF9DUFBGTEFHU30gJHtCVUlMRF9PUFRJTUlaQVRJT059IgogQlVJTERTREtfQ0ZMQUdTID0gIiR7QlVJTERTREtfQ1BQRkxBR1N9ICR7QlVJTERfT1BUSU1JWkFUSU9OfSIKQEAgLTUxNywxMiArNTI0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIC1XbCwtcnBhdGgsJHtTVEFHSU5HX0JBU0VfTElCRElSX05BVElWRX0gXAogICAgICAgICAgICAgICAgICAgICAgICAgLVdsLC1PMSIKIAotQlVJTERTREtfTERGTEFHUyA9ICItTCR7U1RBR0lOR19MSUJESVJ9IFwKLSAgICAgICAgICAgICAgICAgICAgLVdsLC1ycGF0aC1saW5rLCR7U1RBR0lOR19MSUJESVJ9IFwKLSAgICAgICAgICAgICAgICAgICAgLVdsLC1ycGF0aCwke2xpYmRpcn0gLVdsLC1PMSBcCi0gICAgICAgICAgICAgICAgICAgIC1MJHtTVEFHSU5HX0RJUl9IT1NUfSR7YmFzZV9saWJkaXJ9IFwKLSAgICAgICAgICAgICAgICAgICAgLVdsLC1ycGF0aC1saW5rLCR7U1RBR0lOR19ESVJfSE9TVH0ke2Jhc2VfbGliZGlyfSBcCi0gICAgICAgICAgICAgICAgICAgIC1XbCwtcnBhdGgsJHtiYXNlX2xpYmRpcn0gLVdsLC1PMSIKK0JVSUxEU0RLX0xERkxBR1MgPSAiLVdsLC1PMSIKIAogTElOS0VSX0hBU0hfU1RZTEUgPz89ICJnbnUiCiAjIG1pcHMgZG9lcyBub3Qgc3VwcG9ydCBHTlUgaGFzaCBzdHlsZSB0aGVyZWZvcmUgd2Ugb3ZlcnJpZGUKQEAgLTUzMiw2ICs1MzQsMTEgQEAKIExJTktFUl9IQVNIX1NUWUxFX21pcHM2NGVsID0gInN5c3YiCiBMSU5LRVJfSEFTSF9TVFlMRV9taXBzNjRuMzIgPSAic3lzdiIKIExJTktFUl9IQVNIX1NUWUxFX21pcHM2NGVsbjMyID0gInN5c3YiCitMSU5LRVJfSEFTSF9TVFlMRV9taXBzaXNhMzJyNiA9ICJzeXN2IgorTElOS0VSX0hBU0hfU1RZTEVfbWlwc2lzYTMycjZlbCA9ICJzeXN2IgorTElOS0VSX0hBU0hfU1RZTEVfbWlwc2lzYTY0cjYgPSAic3lzdiIKK0xJTktFUl9IQVNIX1NUWUxFX21pcHNpc2E2NHI2ZWwgPSAic3lzdiIKKwogVEFSR0VUX0xJTktfSEFTSF9TVFlMRSA/PSAiJHtAWyctV2wsLS1oYXNoLXN0eWxlPWdudScsJyddW2QuZ2V0VmFyKCdMSU5LRVJfSEFTSF9TVFlMRScsIFRydWUpICE9ICdnbnUnXX0iCiAKIGV4cG9ydCBMREZMQUdTID0gIiR7VEFSR0VUX0xERkxBR1N9IgpAQCAtNTQ5LDExICs1NTYsMTEgQEAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBPcHRpbWl6YXRpb24gZmxhZ3MuCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLURFQlVHX0ZMQUdTID89ICItZyAtZmVsaW1pbmF0ZS11bnVzZWQtZGVidWctdHlwZXMgXAotICAgICAgICAgICAgICAgIC1mZGVidWctcHJlZml4LW1hcD0ke1dPUktESVJ9PS91c3Ivc3JjL2RlYnVnLyR7UE59LyR7RVhURU5EUEV9JHtQVn0tJHtQUn0gXAotICAgICAgICAgICAgICAgIC1mZGVidWctcHJlZml4LW1hcD0ke1NUQUdJTkdfRElSX05BVElWRX09IFwKLSAgICAgICAgICAgICAgICAtZmRlYnVnLXByZWZpeC1tYXA9JHtTVEFHSU5HX0RJUl9IT1NUfT0gXAorREVCVUdfUFJFRklYX01BUCA/PSAiLWZkZWJ1Zy1wcmVmaXgtbWFwPSR7V09SS0RJUn09L3Vzci9zcmMvZGVidWcvJHtQTn0vJHtFWFRFTkRQRX0ke1BWfS0ke1BSfSBcCisgICAgICAgICAgICAgICAgICAgICAtZmRlYnVnLXByZWZpeC1tYXA9JHtTVEFHSU5HX0RJUl9OQVRJVkV9PSBcCisgICAgICAgICAgICAgICAgICAgICAtZmRlYnVnLXByZWZpeC1tYXA9JHtTVEFHSU5HX0RJUl9IT1NUfT0gXAogIgorREVCVUdfRkxBR1MgPz0gIi1nIC1mZWxpbWluYXRlLXVudXNlZC1kZWJ1Zy10eXBlcyAke0RFQlVHX1BSRUZJWF9NQVB9IgogCiAjIERpc2FibGVkIHVudGlsIHRoZSBvcHRpb24gd29ya3MgcHJvcGVybHkgLWZlbGltaW5hdGUtZHdhcmYyLWR1cHMKIEZVTExfT1BUSU1JWkFUSU9OID0gIi1PMiAtcGlwZSAke0RFQlVHX0ZMQUdTfSIKQEAgLTU3MiwxMiArNTc5LDEzIEBACiAjIERvd25sb2FkIGxvY2F0aW9ucyBhbmQgdXRpbGl0aWVzLgogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLUFQQUNIRV9NSVJST1IgPSAiaHR0cDovL3d3dy5ldS5hcGFjaGUub3JnL2Rpc3QvIgorQVBBQ0hFX01JUlJPUiA9ICJodHRwOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QiCiBERUJJQU5fTUlSUk9SID0gImZ0cDovL2Z0cC5kZWJpYW4ub3JnL2RlYmlhbi9wb29sIgogR0VOVE9PX01JUlJPUiA9ICJodHRwOi8vZGlzdGZpbGVzLmdlbnRvby5vcmcvZGlzdGZpbGVzIgogR05PTUVfR0lUID0gImdpdDovL2dpdC5nbm9tZS5vcmciCiBHTk9NRV9NSVJST1IgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3NvdXJjZXMiCiBHTlVfTUlSUk9SID0gImh0dHA6Ly9mdHAuZ251Lm9yZy9nbnUiCitHTlVQR19NSVJST1IgPSAiaHR0cHM6Ly93d3cuZ251cGcub3JnL2Z0cC9nY3J5cHQiCiBHUEVfTUlSUk9SID0gImh0dHA6Ly9ncGUubGludXh0b2dvLm9yZy9kb3dubG9hZC9zb3VyY2UiCiBLRVJORUxPUkdfTUlSUk9SID0gImh0dHA6Ly9rZXJuZWwub3JnL3B1YiIKIFNPVVJDRUZPUkdFX01JUlJPUiA9ICJodHRwOi8vZG93bmxvYWRzLnNvdXJjZWZvcmdlLm5ldCIKQEAgLTU5NSw2ICs2MDMsNyBAQAogICAgIEdOT01FX0dJVCBcCiAgICAgR05PTUVfTUlSUk9SIFwKICAgICBHTlVfTUlSUk9SIFwKKyAgICBHTlVQR19NSVJST1IgXAogICAgIEdQRV9NSVJST1IgXAogICAgIEtFUk5FTE9SR19NSVJST1IgXAogICAgIFNBVkFOTkFIX0dOVV9NSVJST1IgXApAQCAtNzEzLDYgKzcyMiw3IEBACiBETF9ESVIgPz0gIiR7VE9QRElSfS9kb3dubG9hZHMiCiBTU1RBVEVfRElSID89ICIke1RPUERJUn0vc3N0YXRlLWNhY2hlIgogSU1BR0VfRlNUWVBFUyA/PSAidGFyLmd6IgorSU1BR0VfRlNUWVBFU19ERUJVR0ZTID89ICIke0lNQUdFX0ZTVFlQRVN9IgogCiBJTklUUkFNRlNfRlNUWVBFUyA/PSAiY3Bpby5neiIKICMgVGhlIG1heGltdW0gc2l6ZSBpbiBLYnl0ZXMgZm9yIHRoZSBnZW5lcmF0ZWQgaW5pdHJhbWZzIGltYWdlIHNpemUuCkBAIC03OTgsNyArODA4LDcgQEAKIAogIyBTZXR1cCBvdXIgZGVmYXVsdCBoYXNoIHBvbGljeQogQkJfU0lHTkFUVVJFX0hBTkRMRVIgPz0gIk9FQmFzaWNIYXNoIgotQkJfSEFTSEJBU0VfV0hJVEVMSVNUID89ICJUTVBESVIgRklMRSBQQVRIIFBXRCBCQl9UQVNLSEFTSCBCQlBBVEggRExfRElSIFwKK0JCX0hBU0hCQVNFX1dISVRFTElTVCA/PSAiVE1QRElSIEZJTEUgUEFUSCBQV0QgQkJfVEFTS0hBU0ggQkJQQVRIIEJCU0VSVkVSIERMX0RJUiBcCiAgICAgU1NUQVRFX0RJUiBUSElTRElSIEZJTEVTRVhUUkFQQVRIUyBGSUxFX0RJUk5BTUUgSE9NRSBMT0dOQU1FIFNIRUxMIFRFUk0gXAogICAgIFVTRVIgRklMRVNQQVRIIFNUQUdJTkdfRElSX0hPU1QgU1RBR0lOR19ESVJfVEFSR0VUIENPUkVCQVNFIFBSU0VSVl9IT1NUIFwKICAgICBQUlNFUlZfRFVNUERJUiBQUlNFUlZfRFVNUEZJTEUgUFJTRVJWX0xPQ0tET1dOIFBBUkFMTEVMX01BS0UgXApAQCAtODA5LDEyICs4MTksMTQgQEAKICAgICBTU0hfQVVUSF9TT0NLIFBTRVVET19CVUlMRCBCQl9FTlZfRVhUUkFXSElURSBESVNBQkxFX1NBTklUWV9DSEVDS1MgXAogICAgIFBBUkFMTEVMX01BS0UgQkJfTlVNQkVSX1RIUkVBRFMgQkJfT1JJR0VOViBCQl9JTlZBTElEQ09ORiBCQklOQ0xVREVEIFwKICAgICBHSVRfUFJPWFlfQ09NTUFORCBBTExfUFJPWFkgYWxsX3Byb3h5IE5PX1BST1hZIG5vX3Byb3h5IEZUUF9QUk9YWSBmdHBfcHJveHkgXAotICAgIEhUVFBfUFJPWFkgaHR0cF9wcm94eSBIVFRQU19QUk9YWSBodHRwc19wcm94eSBTT0NLUzVfVVNFUiBTT0NLUzVfUEFTU1dEIgorICAgIEhUVFBfUFJPWFkgaHR0cF9wcm94eSBIVFRQU19QUk9YWSBodHRwc19wcm94eSBTT0NLUzVfVVNFUiBTT0NLUzVfUEFTU1dEIFwKKyAgICBCQl9TRVRTQ0VORV9FTkZPUkNFIgogQkJfU0lHTkFUVVJFX0VYQ0xVREVfRkxBR1MgPz0gImRvYyBkZXBzIGRlcGVuZHMgXAogICAgIGxvY2tmaWxlcyB0eXBlIHZhcmRlcHNleGNsdWRlIHZhcmRlcHMgdmFyZGVwdmFsdWUgdmFyZGVwdmFsdWVleGNsdWRlIFwKICAgICBmaWxlLWNoZWNrc3VtcyBweXRob24gZnVuYyB0YXNrIGV4cG9ydCB1bmV4cG9ydCBub2V4ZWMgbm9zdGFtcCBkaXJzIGNsZWFuZGlycyBcCiAgICAgc3N0YXRlLWxvY2tmaWxlLXNoYXJlZCBwcmVmdW5jcyBwb3N0ZnVuY3MgZXhwb3J0X2Z1bmMgZGVwdGFzayByZGVwdGFzayBcCi0gICAgcmVjcmRlcHRhc2sgbm9kZXBycmVjcyBzdGFtcC1leHRyYS1pbmZvIHNzdGF0ZS1vdXRwdXRkaXJzIGZpbGVuYW1lIGxpbmVubyIKKyAgICByZWNyZGVwdGFzayBub2RlcHJyZWNzIHN0YW1wLWV4dHJhLWluZm8gc3N0YXRlLW91dHB1dGRpcnMgZmlsZW5hbWUgbGluZW5vIFwKKyAgICBwcm9ncmVzcyIKIAogTUxQUkVGSVggPz89ICIiCiBNVUxUSUxJQl9WQVJJQU5UUyA/Pz0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC1kaXN0cm92YXJzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC1kaXN0cm92YXJzLmluYwppbmRleCBmYWM0ZGViLi5mN2VkOTQzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2RlZmF1bHQtZGlzdHJvdmFycy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LWRpc3Ryb3ZhcnMuaW5jCkBAIC0yMyw3ICsyMyw3IEBACiBJTUFHRV9GRUFUVVJFUyA/PSAiIgogCiBXSElURUxJU1RfR1BMLTMuMCA/PSAiIgotTEdQTHYyX1dISVRFTElTVF9HUEwtMy4wID89ICJsaWJpZG4iCitMR1BMdjJfV0hJVEVMSVNUX0dQTC0zLjAgPz0gIiIKIAogQ09NTUVSQ0lBTF9BVURJT19QTFVHSU5TID89ICIiCiAjIENPTU1FUkNJQUxfQVVESU9fUExVR0lOUyA/PSAiZ3N0LXBsdWdpbnMtdWdseS1tYWQgZ3N0LXBsdWdpbnMtdWdseS1tcGVnYXVkaW9wYXJzZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC12ZXJzaW9ucy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2RlZmF1bHQtdmVyc2lvbnMuaW5jCmluZGV4IGEwNGVhNzEuLmNjOGM1MzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC12ZXJzaW9ucy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LXZlcnNpb25zLmluYwpAQCAtMiwxMSArMiw2IEBACiAjIERlZmF1bHQgcHJlZmVycmVkIHZlcnNpb25zCiAjCiAKLSMgRm9yY2UgdGhlIHB5dGhvbiB2ZXJzaW9ucyBpbiBvbmUgcGxhY2UKLVBZVEhPTl9CQVNFVkVSU0lPTiA/PSAiMi43IgotUFJFRkVSUkVEX1ZFUlNJT05fcHl0aG9uID89ICIyLjcuMTEiCi1QUkVGRVJSRURfVkVSU0lPTl9weXRob24tbmF0aXZlID89ICIyLjcuMTEiCi0KICMgRm9yY2UgdGhlIG9sZGVyIHZlcnNpb24gb2YgbGliZXJhdGlvbi1mb250cyB1bnRpbCB3ZSBmaXggdGhlIGZvbnRmb3JnZSBpc3N1ZQogUFJFRkVSUkVEX1ZFUlNJT05fbGliZXJhdGlvbi1mb250cyA/PSAiMS4wNCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kaXN0cm9fYWxpYXMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kaXN0cm9fYWxpYXMuaW5jCmluZGV4IGM4ZjkzOTUuLjEwZWZiMDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGlzdHJvX2FsaWFzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2Rpc3Ryb19hbGlhcy5pbmMKQEAgLTEzLDcgKzEzLDYgQEAKIERJU1RST19QTl9BTElBU19wbi1hbHNhLXV0aWxzLWFsc2Fjb25mID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4tYWxzYS11dGlscy1zY3JpcHRzID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4tYXRrID0gIkZlZG9yYT1hdGsgT3BlblN1U0U9YXRrIgotRElTVFJPX1BOX0FMSUFTX3BuLWF1Z2VhcyA9ICJVYnVudHU9bGliYXVnZWFzMCBEZWJpYW49bGliYXVnZWFzMCIKIERJU1RST19QTl9BTElBU19wbi1hdmFoaS11aSA9ICJVYnVudHU9YXZhaGktZGlzY292ZXIgRGViaWFuPWF2YWhpLWRpc2NvdmVyIgogRElTVFJPX1BOX0FMSUFTX3BuLWJhYmVsdHJhY2UgPSAiT1NQRFQiCiBESVNUUk9fUE5fQUxJQVNfcG4tYmR3Z2MgPSAiT1NQRFQiCkBAIC00Niw3ICs0NSw2IEBACiBESVNUUk9fUE5fQUxJQVNfcG4tY29uc29sZS10b29scyA9ICJEZWJpYW49Y29uc29sZS10b29scyBVYnVudHU9Y29uc29sZS10b29scyIKIERJU1RST19QTl9BTElBU19wbi1jb3JlLWltYWdlLWJhc2UgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1jb3JlLWltYWdlLWNsdXR0ZXIgPSAiT0UtQ29yZSIKLURJU1RST19QTl9BTElBU19wbi1jb3JlLWltYWdlLWRpcmVjdGZiID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4tY29yZS1pbWFnZS1mdWxsLWNtZGxpbmUgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1jb3JlLWltYWdlLWtlcm5lbC1kZXYgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1jb3JlLWltYWdlLWxzYiA9ICJPRS1Db3JlIgpAQCAtNzUsNyArNzMsNiBAQAogRElTVFJPX1BOX0FMSUFTX3BuLWRidXMtdGVzdCA9ICJGZWRvcmE9ZGJ1cyBVYnVudHU9ZGJ1cyIKIERJU1RST19QTl9BTElBU19wbi1kYnVzLXdhaXQgPSAiT3BlbmVkSGFuZCIKIERJU1RST19QTl9BTElBU19wbi1kZXBtb2R3cmFwcGVyLWNyb3NzID0gIk9FLUNvcmUiCi1ESVNUUk9fUE5fQUxJQVNfcG4tZGlyZWN0ZmItZXhhbXBsZXMgPSAiRGViaWFuPWRpcmVjdGZiIEZlZG9yYT1kaXJlY3RmYiIKIERJU1RST19QTl9BTElBU19wbi1kaXN0Y2MgPSAiRGViaWFuPWRpc3RjYyBGZWRvcmE9ZGlzdGNjIgogRElTVFJPX1BOX0FMSUFTX3BuLWRpc3RjYy1jb25maWcgPSAiT3BlbmVkSGFuZCIKIERJU1RST19QTl9BTElBU19wbi1kbXhwcm90byA9ICJNZWVnbz14b3JnLXgxMS1wcm90by1kbXhwcm90byBVYnVudHU9eDExcHJvdG8tZG14IERlYmlhbj14MTFwcm90by1kbXgiCkBAIC0xMzQsNyArMTMxLDcgQEAKIERJU1RST19QTl9BTElBU19wbi1nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIgPSAiVWJ1bnR1PWdzdHJlYW1lcjAuMTAtcnRzcCBGZWRvcmE9Z3N0cmVhbWVyLXJ0c3AiCiBESVNUUk9fUE5fQUxJQVNfcG4tZ3RrKyA9ICJNZWVnbz1ndGsyIEZlZG9yYT1ndGsyIE9wZW5TdVNFPWd0azIgVWJ1bnR1PWd0aysyLjAgTWFuZHJpdmE9Z3RrKzIuMCBEZWJpYW49Z3RrKzIuMCIKIERJU1RST19QTl9BTElBU19wbi1ndGsrMyA9ICJVYnVudHU9Z3RrKzMuMCBEZWJpYW49Z3RrKzMuMCBGZWRvcmE9Z3RrMyIKLURJU1RST19QTl9BTElBU19wbi1ndGstZG9jLXN0dWIgPSAiRmVkb3JhPWd0ay1kb2MgVWJ1bnR1PWd0ay1kb2MiCitESVNUUk9fUE5fQUxJQVNfcG4tZ3RrLWRvYyA9ICJGZWRvcmE9Z3RrLWRvYyBVYnVudHU9Z3RrLWRvYyIKIERJU1RST19QTl9BTElBU19wbi1ndGstZW5naW5lcyA9ICJGZWRvcmE9Z3RrMi1lbmdpbmVzIE9wZW5TdVNFPWd0azItZW5naW5lcyBVYnVudHU9Z3RrMi1lbmdpbmVzIE1hbmRyaXZhPWd0ay1lbmdpbmVzMiBEZWJpYW49Z3RrMi1lbmdpbmVzIgogRElTVFJPX1BOX0FMSUFTX3BuLWd0ay1zYXRvLWVuZ2luZSA9ICJPcGVuZWRIYW5kIgogRElTVFJPX1BOX0FMSUFTX3BuLWd0ay1pY29uLXV0aWxzLW5hdGl2ZSA9ICJPU1BEVCIKQEAgLTIxNiw3ICsyMTMsNiBAQAogRElTVFJPX1BOX0FMSUFTX3BuLWxpYnhpID0gIlVidW50dT1saWJ4aSBGZWRvcmE9bGliWGkiCiBESVNUUk9fUE5fQUxJQVNfcG4tbGlieGtiY29tbW9uID0gIkZlZG9yYT1saWJ4a2Jjb21tb24gRGViaWFuPWxpYnhrYmNvbW1vbiIKIERJU1RST19QTl9BTElBU19wbi1saWJ4c2NybnNhdmVyID0gIkZlZG9yYT1saWJYU2NyblNhdmVyIFVidW50dT1saWJ4c3MxIE1hbmRyaXZhPWxpYnhzY3Juc2F2ZXIiCi1ESVNUUk9fUE5fQUxJQVNfcG4tbGlieHNldHRpbmdzLWNsaWVudCA9ICJEZWJpYW49bGlieHNldHRpbmdzLWNsaWVudDAgVWJ1bnR1PWxpYnhzZXR0aW5ncy1jbGllbnQwIE1hbmRyaXZhPWxpYlhzZXR0aW5ncy1jbGllbnQwIgogRElTVFJPX1BOX0FMSUFTX3BuLWxpYnh4Zjg2bWlzYyA9ICJNYW5kcml2YT1saWJ4eGY4Nm1pc2MgRmVkb3JhPWxpYlh4Zjg2bWlzYyIKIERJU1RST19QTl9BTElBU19wbi1saW51eC1kdW1teSA9ICJJbnRlbCIKIERJU1RST19QTl9BTElBU19wbi1saW51eC1maXJtd2FyZSA9ICJGZWRvcmE9bGludXgtZmlybXdhcmUgVWJ1bnR1PWxpbnV4LWZpcm13YXJlIgpAQCAtMjgxLDggKzI3Nyw2IEBACiBESVNUUk9fUE5fQUxJQVNfcG4tb3BrZy1ub2dwZyA9ICJPU1BEVCB1cHN0cmVhbT1naXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9vcGtnLXV0aWxzIgogRElTVFJPX1BOX0FMSUFTX3BuLW9wa2ctdXRpbHMgPSAiT1NQRFQgdXBzdHJlYW09Z2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvb3BrZy11dGlscyIKIERJU1RST19QTl9BTElBU19wbi1vcHJvZmlsZSA9ICJEZWJpYW49b3Byb2ZpbGUgRmVkb3JhPW9wcm9maWxlIgotRElTVFJPX1BOX0FMSUFTX3BuLW9wcm9maWxldWkgPSAiRmVkb3JhPW9wcm9maWxldWkgVWJ1bnR1PW9wcm9maWxlLWd1aSBEZWJpYW49b3Byb2ZpbGUtZ3VpIgotRElTVFJPX1BOX0FMSUFTX3BuLW9wcm9maWxldWktc2VydmVyID0gIkZlZG9yYT1vcHJvZmlsZXVpIFVidW50dT1vcHJvZmlsZS1ndWkgRGViaWFuPW9wcm9maWxlLWd1aSIKIERJU1RST19QTl9BTElBU19wbi1vcy1yZWxlYXNlID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4tcGFja2FnZWdyb3VwLWJhc2UgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1wYWNrYWdlZ3JvdXAtY29yZSA9ICJPRS1Db3JlIgpAQCAtMjkwLDcgKzI4NCw2IEBACiBESVNUUk9fUE5fQUxJQVNfcG4tcGFja2FnZWdyb3VwLWNvcmUtYnVpbGRlc3NlbnRpYWwgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1wYWNrYWdlZ3JvdXAtY29yZS1jbHV0dGVyID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4tcGFja2FnZWdyb3VwLWNvcmUtZGV2aWNlLWRldmVsID0gIk9FLUNvcmUiCi1ESVNUUk9fUE5fQUxJQVNfcG4tcGFja2FnZWdyb3VwLWNvcmUtZGlyZWN0ZmIgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1wYWNrYWdlZ3JvdXAtY29yZS1lY2xpcHNlLWRlYnVnID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4tcGFja2FnZWdyb3VwLWNvcmUtZnVsbC1jbWRsaW5lID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4tcGFja2FnZWdyb3VwLWNvcmUtbHNiID0gIk9FLUNvcmUiCkBAIC0zMTgsNyArMzExLDYgQEAKIERJU1RST19QTl9BTElBU19wbi1wZXJmID0gIk9TUERUIgogRElTVFJPX1BOX0FMSUFTX3BuLXBpZ2xpdCA9ICJPRS1Db3JlIgogRElTVFJPX1BOX0FMSUFTX3BuLXBrZ2NvbmZpZyA9ICJVYnVudHU9cGtnLWNvbmZpZyBGZWRvcmE9cGtnY29uZmlnIgotRElTVFJPX1BOX0FMSUFTX3BuLXBvaW50ZXJjYWwgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1wb2ludGVyY2FsLXhpbnB1dCA9ICJPRS1Db3JlIgogRElTVFJPX1BOX0FMSUFTX3BuLXBvbmctY2xvY2sgPSAiT3BlbmVkSGFuZCIKIERJU1RST19QTl9BTElBU19wbi1wb3J0bWFwID0gIkRlYmlhbj1ycGNiaW5kIEZlZG9yYT1ycGNiaW5kIgpAQCAtMzM4LDEyICszMzAsMTAgQEAKIERJU1RST19QTl9BTElBU19wbi1weXRob24tZGJ1cyA9ICJVYnVudHU9cHl0aG9uLWRidXMgRGViaWFuPXB5dGhvbi1kYnVzIE1hbmRyaXZhPXB5dGhvbi1kYnVzIgogRElTVFJPX1BOX0FMSUFTX3BuLXB5dGhvbi1kaXN0cmlidXRlID0gIk9wZW5zdXNlPXB5dGhvbi1zZXR1cHRvb2xzIEZlZG9yYT1weXRob24tc2V0dXB0b29scyIKIERJU1RST19QTl9BTElBU19wbi1weXRob24tZ2l0ID0gIkRlYmlhbj1weXRob24tZ2l0IEZlZG9yYT1HaXRQeXRob24iCi1ESVNUUk9fUE5fQUxJQVNfcG4tcHl0aG9uLWltYWdpbmcgPSAiTWFuZHJpdmE9cHl0aG9uLWltYWdpbmcgRGViaWFuPXB5dGhvbi1pbWFnaW5nIgogRElTVFJPX1BOX0FMSUFTX3BuLXB5dGhvbi1tYWtvID0gIkZlZG9yYT1weXRob24tbWFrbyBPcGVuc3VzZT1weXRob24tTWFrbyIKIERJU1RST19QTl9BTElBU19wbi1weXRob24tcHljYWlybyA9ICJNZWVnbz1weWNhaXJvIEZlZG9yYT1weWNhaXJvIFVidW50dT1weWNhaXJvIERlYmlhbj1weWNhaXJvIgogRElTVFJPX1BOX0FMSUFTX3BuLXB5dGhvbi1weWN1cmwgPSAiRGViaWFuPXB5dGhvbi1weWN1cmwgVWJ1bnR1PXB5dGhvbi1weWN1cmwiCiBESVNUUk9fUE5fQUxJQVNfcG4tcHl0aG9uLXB5Z29iamVjdCA9ICJNZWVnbz1weWdvYmplY3QyIEZlZG9yYT1weWdvYmplY3QyIFVidW50dT1weWdvYmplY3QgRGViaWFuPXB5Z29iamVjdCIKLURJU1RST19QTl9BTElBU19wbi1weXRob24tcHlyZXggPSAiTWFuZHJpdmE9cHl0aG9uLXB5cmV4IFVidW50dT1weXRob24tcHlyZXgiCiBESVNUUk9fUE5fQUxJQVNfcG4tcHl0aG9uLXNjb25zID0gIkZlZG9yYT1zY29ucyBPcGVuU3VTRT1zY29ucyBVYnVudHU9c2NvbnMgTWFuZHJpdmE9c2NvbnMgRGViaWFuPXNjb25zIgogRElTVFJPX1BOX0FMSUFTX3BuLXB5dGhvbi1zZXR1cHRvb2xzID0gIk1hbmRyaXZhPXB5dGhvbi1zZXR1cCBPcGVuU3VTRT1weXRob24tc2V0dXAtZ2l0IgogRElTVFJPX1BOX0FMSUFTX3BuLXB5dGhvbi1zbWFydHBtID0gIkRlYmlhbj1zbWFydCBPcGVuU3VTRT1zbWFydCIKQEAgLTM4OCw3ICszNzgsNiBAQAogRElTVFJPX1BOX0FMSUFTX3BuLXRpbnktaW5pdCA9ICJPU1BEVCIKIERJU1RST19QTl9BTElBU19wbi10cmFjZS1jbWQgPSAiTWFuZHJpdmE9dHJhY2UtY21kIFVidW50dT10cmFjZS1jbWQiCiBESVNUUk9fUE5fQUxJQVNfcG4tdHJlbW9yID0gIk9TUERUIHVwc3RyZWFtPWh0dHA6Ly93d3cueGlwaC5vcmcvdm9yYmlzLyIKLURJU1RST19QTl9BTElBU19wbi10c2xpYiA9ICJEZWJpYW49dHNsaWIgVWJ1bnR1PXRzbGliIgogRElTVFJPX1BOX0FMSUFTX3BuLXR0Zi1iaXRzdHJlYW0tdmVyYSA9ICJEZWJpYW49dHRmLWJpdHN0cmVhbS12ZXJhIFVidW50dT10dGYtYml0c3RyZWFtLXZlcmEiCiBESVNUUk9fUE5fQUxJQVNfcG4tdHpjb2RlID0gIk9TUERUIgogRElTVFJPX1BOX0FMSUFTX3BuLXUtYm9vdC1mdy11dGlscyA9ICJVYnVudHU9dS1ib290LXRvb2xzIERlYmlhbj11LWJvb3QtdG9vbHMiCkBAIC00NTcsNyArNDQ2LDYgQEAKIERJU1RST19QTl9BTElBU19wbi14c2VydmVyLXhmODYtbGl0ZSA9ICJGZWRvcmE9eG9yZy14MTEtc2VydmVyIFVidW50dT14c2VydmVyLXhvcmciCiBESVNUUk9fUE5fQUxJQVNfcG4teHNlcnZlci14b3JnID0gIkZlZG9yYT14b3JnLXgxMS1zZXJ2ZXIgVWJ1bnR1PXhzZXJ2ZXIteG9yZyIKIERJU1RST19QTl9BTElBU19wbi14c2V0ID0gIkZlZG9yYT14b3JnLXgxMS1zZXJ2ZXItdXRpbHMgVWJ1bnR1PXgxMS14c2VydmVyLXV0aWxzIERlYmlhbj14MTEteHNlcnZlci11dGlscyBPcGVuc3VzZT14b3JnLXgxMSIKLURJU1RST19QTl9BTElBU19wbi14dHNjYWwgPSAiT1NQRFQgdXBzdHJlYW09aHR0cDovL2dwZS5saW51eHRvZ28ub3JnL2Rvd25sb2FkL3NvdXJjZS8iCiBESVNUUk9fUE5fQUxJQVNfcG4teHVzZXItYWNjb3VudCA9ICJPRS1Db3JlIgogRElTVFJPX1BOX0FMSUFTX3BuLXh2aWRlby10ZXN0cyA9ICJPcGVuZWRIYW5kIgogRElTVFJPX1BOX0FMSUFTX3BuLXh2aW5mbyA9ICJGZWRvcmE9eG9yZy14MTEtdXRpbHMgVWJ1bnR1PXgxMS11dGlscyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvcGFja2FnZV9yZWdleC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3BhY2thZ2VfcmVnZXguaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZmMxMTU3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvcGFja2FnZV9yZWdleC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0jIE5PVEU6IFRISVMgRklMRSBJUyBERVBSRUNBVEVELiBQbGVhc2UgYWRkIG5ldyBlbnRyaWVzIHRvIHRoZSByZWNpcGVzIHRoZW1zZWx2ZXMuCi0jCi0jIHBhY2thZ2VfcmVnZXguaW5jIC0gVGhpcyBmaWxlIGNvbnRhaW5zIGRhdGEgdGhhdCB0cmFja3MKLSMgdXBzdHJlYW0gcHJvamVjdCBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiByZWNpcGUuIFRoaXMgbGlzdCBpcyBuZWVkZWQKLSMgZm9yIHJlY2lwZXMgdGhhdCB2ZXJzaW9uIGluZm9ybWF0aW9uIGNhbiBub3QgYmUgYXV0b21hZ2ljYWxseSBkaXNjb3ZlcmVkLgotIyBBcyB3ZSBhdXRvbWF0ZSB0aGlzIGNoZWNraW5nLCB0aGlzIGZpbGUgd2lsbCBzbG93bHkgYmUgcmVkdWNlZC4KLSMiCi0jIFRoaXMgZGF0YSBpcyB1c2VkIGJ5IHRoZSBwYWNrYWdlIHJlcG9ydGluZyBzeXN0ZW0gKHBhY2thZ2VzLnlvY3RvcHJvamVjdC5vcmcpCi0jIgotIyBUaGUgZm9ybWF0IGlzIGFzIGEgYml0YmFrZSB2YXJpYWJsZSBvdmVycmlkZSBmb3IgZWFjaCByZWNpcGUKLSMiCi0jICAgICAgIFVQU1RSRUFNX0NIRUNLX1VSSV9wbi08cmVjaXBlIG5hbWU+ID0gInJlY2lwZV91cmwiCi0jCSAtIFRoaXMgaXMgdGhlIHVybCB1c2VkIGJ5IHRoZSBwYWNrYWdlIGNoZWNraW5nIHN5c3RlbSB0bwotIwkgICBnZXQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBwYWNrYWdlCi0jICAgICAgIFVQU1RSRUFNX0NIRUNLX1JFR0VYX3BuLTxyZWNpcGUgbmFtZT4gPSAicGFja2FnZV9yZWdleCIKLSMJIC0gVGhpcyBpcyB0aGUgcmVnZXggdGhlIHBhY2thZ2UgY2hlY2tpbmcgc3lzdGVtIHVzZXMgdG8KLSMJICAgcGFyc2UgdGhlIHBhZ2UgZm91bmQgYXQgVVBTVFJFQU1fQ0hFQ0tfVVJJX3BuLTxyZWNpcGUgbmFtZT4KLSMJVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVhfcG4tPHJlY2lwZSBuYW1lPiA9ICJnaXRfdGFnX3JlZ2V4IgotIwkgLSBXaGVuIHNvdXJjZSBjb2RlIGlzIGZldGNoZWQgZnJvbSBnaXQsIGdpdCB0YWdzIGFyZSB1c2VkIHRvCi0jCSAgIGRldGVybWluZSB0aGUgdXBzdHJlYW0gcmVsZWFzZSB2ZXJzaW9uLiBUaGlzIHJlZ2V4IGNhbiBiZSB1c2VkCi0jCSAgIHRvIGZpbHRlciBvbmx5IHJlbGV2YW50IHRhZ3MuCi0jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3NlY3VyaXR5X2ZsYWdzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvc2VjdXJpdHlfZmxhZ3MuaW5jCmluZGV4IGZmNWYzNGUuLmVjYTgzNWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvc2VjdXJpdHlfZmxhZ3MuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvc2VjdXJpdHlfZmxhZ3MuaW5jCkBAIC05LDggKzksMTEgQEAKICMgLU8wIHdoaWNoIHRoZW4gcmVzdWx0cyBpbiBhIGNvbXBpbGVyIHdhcm5pbmcuCiBsY2xfbWF5YmVfZm9ydGlmeSA9ICIke0BiYXNlX2NvbmRpdGlvbmFsKCdERUJVR19CVUlMRCcsJzEnLCcnLCctRF9GT1JUSUZZX1NPVVJDRT0yJyxkKX0iCiAKLVNFQ1VSSVRZX0NGTEFHUyA/PSAiLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nIC1waWUgLWZwaWUgJHtsY2xfbWF5YmVfZm9ydGlmeX0iCi1TRUNVUklUWV9OT19QSUVfQ0ZMQUdTID89ICItZnN0YWNrLXByb3RlY3Rvci1zdHJvbmcgJHtsY2xfbWF5YmVfZm9ydGlmeX0iCisjIEVycm9yIG9uIHVzZSBvZiBmb3JtYXQgc3RyaW5ncyB0aGF0IHJlcHJlc2VudCBwb3NzaWJsZSBzZWN1cml0eSBwcm9ibGVtcworU0VDVVJJVFlfU1RSSU5HRk9STUFUID89ICItV2Zvcm1hdCAtV2Zvcm1hdC1zZWN1cml0eSAtV2Vycm9yPWZvcm1hdC1zZWN1cml0eSIKKworU0VDVVJJVFlfQ0ZMQUdTID89ICItZnN0YWNrLXByb3RlY3Rvci1zdHJvbmcgLXBpZSAtZnBpZSAke2xjbF9tYXliZV9mb3J0aWZ5fSAke1NFQ1VSSVRZX1NUUklOR0ZPUk1BVH0iCitTRUNVUklUWV9OT19QSUVfQ0ZMQUdTID89ICItZnN0YWNrLXByb3RlY3Rvci1zdHJvbmcgJHtsY2xfbWF5YmVfZm9ydGlmeX0gJHtTRUNVUklUWV9TVFJJTkdGT1JNQVR9IgogCiBTRUNVUklUWV9MREZMQUdTID89ICItZnN0YWNrLXByb3RlY3Rvci1zdHJvbmcgLVdsLC16LHJlbHJvLC16LG5vdyIKIFNFQ1VSSVRZX1hfTERGTEFHUyA/PSAiLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nIC1XbCwteixyZWxybyIKQEAgLTI2LDcgKzI5LDYgQEAKIFNFQ1VSSVRZX0NGTEFHU19wbi1sdHRuZy10b29sc19hcm0gPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKIFNFQ1VSSVRZX0NGTEFHU19wbi1hc3BlbGwgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKIFNFQ1VSSVRZX0NGTEFHU19wbi1iZWVjcnlwdCA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWJsa3RyYWNlID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCiBTRUNVUklUWV9DRkxBR1NfcG4tY29yZXV0aWxzID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCiBTRUNVUklUWV9DRkxBR1NfcG4tY3VwcyA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgogU0VDVVJJVFlfQ0ZMQUdTX3BuLWRiID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCkBAIC0zNywxMCArMzksOSBAQAogU0VDVVJJVFlfQ0ZMQUdTX3BuLWVuY2hhbnQgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKIFNFQ1VSSVRZX0NGTEFHU19wbi1leHBlY3QgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKIFNFQ1VSSVRZX0NGTEFHU19wbi1mbGFjID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tZmxleCA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgogU0VDVVJJVFlfQ0ZMQUdTX3BuLWdjYyA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgogU0VDVVJJVFlfQ0ZMQUdTX3BuLWdjYy1ydW50aW1lID0gIiIKLVNFQ1VSSVRZX0NGTEFHU19wbi1nY2Mtc2FuaXRpemVycyA9ICIiCitTRUNVUklUWV9DRkxBR1NfcG4tZ2NjLXNhbml0aXplcnMgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKIFNFQ1VSSVRZX0NGTEFHU19wbi1nZGIgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKIFNFQ1VSSVRZX0NGTEFHU19wbi1nbXAgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKIFNFQ1VSSVRZX0NGTEFHU19wbi1nbnV0bHMgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKQEAgLTUwLDggKzUxLDYgQEAKIFNFQ1VSSVRZX0NGTEFHU19wbi1ncnViLWVmaS14ODYtbmF0aXZlID0gIiIKIFNFQ1VSSVRZX0NGTEFHU19wbi1ncnViLWVmaS1pNTg2LW5hdGl2ZSA9ICIiCiBTRUNVUklUWV9DRkxBR1NfcG4tZ3J1Yi1lZmkteDg2LTY0LW5hdGl2ZSA9ICIiCi1TRUNVUklUWV9DRkxBR1NfcG4tZ3N0LXBsdWdpbnMtYmFkID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tZ3N0LXBsdWdpbnMtZ2wgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKIFNFQ1VSSVRZX0NGTEFHU19wbi1nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKIFNFQ1VSSVRZX0NGTEFHU19wbi1nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCiBTRUNVUklUWV9DRkxBR1NfcG4taGFyZmJ1enogPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKQEAgLTU5LDI4ICs1OCwzMCBAQAogU0VDVVJJVFlfQ0ZMQUdTX3BuLWlwdGFibGVzID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCiBTRUNVUklUWV9DRkxBR1NfcG4tbGliYWlvID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCiBTRUNVUklUWV9DRkxBR1NfcG4tbGliY2FwID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tbGliZ2NjID0gIiIKK1NFQ1VSSVRZX0NGTEFHU19wbi1saWJnY2MgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKIFNFQ1VSSVRZX0NGTEFHU19wbi1saWJpZDN0YWcgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1saWJuZXd0ID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCitTRUNVUklUWV9DRkxBR1NfcG4tbGlibmV3dC1weXRob24gPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKIFNFQ1VSSVRZX0NGTEFHU19wbi1saWJnbHUgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKIFNFQ1VSSVRZX0NGTEFHU19wbi1saWJwY2FwID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCiBTRUNVUklUWV9DRkxBR1NfcG4tbGlicGNyZSA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgogU0VDVVJJVFlfQ0ZMQUdTX3BuLWxpYnByb3h5ID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tbHR0bmctdXN0ID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCiBTRUNVUklUWV9DRkxBR1NfcG4tbWVzYSA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgogU0VDVVJJVFlfQ0ZMQUdTX3BuLW1lc2EtZ2wgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKIFNFQ1VSSVRZX0NGTEFHU19wbi1vcGVuc3NsID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCiBTRUNVUklUWV9DRkxBR1NfcG4tb3BlbnNwID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCiBTRUNVUklUWV9DRkxBR1NfcG4tcHBwID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCiBTRUNVUklUWV9DRkxBR1NfcG4tcHl0aG9uID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tcHl0aG9uLWltYWdpbmcgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKIFNFQ1VSSVRZX0NGTEFHU19wbi1weXRob24tcHljdXJsID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCiBTRUNVUklUWV9DRkxBR1NfcG4tcHl0aG9uLXNtYXJ0cG0gPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKIFNFQ1VSSVRZX0NGTEFHU19wbi1weXRob24tbnVtcHkgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKK1NFQ1VSSVRZX0NGTEFHU19wbi1weXRob24zLW51bXB5ID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCitTRUNVUklUWV9DRkxBR1NfcG4tcHl0aG9uMy1weWNhaXJvID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCiBTRUNVUklUWV9DRkxBR1NfcG4tcHl0aG9uMyA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgogIyBSZXZlcnQgUlBNIHRvIHVzaW5nIGludGVybmFsbHkgc3VwcG9ydGVkIHZhbHVlcwogU0VDVVJJVFlfQ0ZMQUdTX3BuLXJwbSA9ICIke2xjbF9tYXliZV9mb3J0aWZ5fSAtZnN0YWNrLXByb3RlY3RvciIKIFNFQ1VSSVRZX0NGTEFHU19wbi1zeXNsaW51eCA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgorU0VDVVJJVFlfQ0ZMQUdTX3BuLXNsYW5nID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCitTRUNVUklUWV9DRkxBR1NfcG4tc291cmNlLWhpZ2hsaWdodCA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgogU0VDVVJJVFlfQ0ZMQUdTX3BuLXRjbCA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgogU0VDVVJJVFlfQ0ZMQUdTX3BuLXRpZmYgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKIFNFQ1VSSVRZX0NGTEFHU19wbi11Y2xpYmMgPSAiIgpAQCAtODgsMTggKzg5LDIyIEBACiBTRUNVUklUWV9DRkxBR1NfcG4tdmFsZ3JpbmQgPSAiIgogU0VDVVJJVFlfQ0ZMQUdTX3BuLXpsaWIgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKIAotIyBUaGVzZSAyIGhhdmUgdGV4dCByZWxjbyBlcnJvcnMgd2l0aCB0aGUgcGllIG9wdGlvbnMgZW5hYmxlZAotU0VDVVJJVFlfQ0ZMQUdTX3BuLWx0cCA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLXB1bHNlYXVkaW8gPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKKyMgUmVjaXBlcyB3aGljaCBmYWlsIHRvIGNvbXBpbGUgd2hlbiBlbGV2YXRpbmcgLVdmb3JtYXQtc2VjdXJpdHkgdG8gYW4gZXJyb3IKK1NFQ1VSSVRZX1NUUklOR0ZPUk1BVF9wbi1idXN5Ym94ID0gIiIKK1NFQ1VSSVRZX1NUUklOR0ZPUk1BVF9wbi1jb25zb2xlLXRvb2xzID0gIiIKK1NFQ1VSSVRZX1NUUklOR0ZPUk1BVF9wbi1jbWFrZSA9ICIiCitTRUNVUklUWV9TVFJJTkdGT1JNQVRfcG4tZXhwZWN0ID0gIiIKK1NFQ1VSSVRZX1NUUklOR0ZPUk1BVF9wbi1nY2MgPSAiIgorU0VDVVJJVFlfU1RSSU5HRk9STUFUX3BuLWdldHRleHQgPSAiIgorU0VDVVJJVFlfU1RSSU5HRk9STUFUX3BuLWtleGVjLXRvb2xzID0gIiIKK1NFQ1VSSVRZX1NUUklOR0ZPUk1BVF9wbi1vaC1wdXp6bGVzID0gIiIKIAogVEFSR0VUX0NGTEFHU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke1NFQ1VSSVRZX0NGTEFHU30iCiBUQVJHRVRfTERGTEFHU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke1NFQ1VSSVRZX0xERkxBR1N9IgogCiBTRUNVUklUWV9MREZMQUdTX3JlbW92ZV9wbi1nY2MtcnVudGltZSA9ICItZnN0YWNrLXByb3RlY3Rvci1zdHJvbmciCi1TRUNVUklUWV9MREZMQUdTX3JlbW92ZV9wbi1nY2Mtc2FuaXRpemVycyA9ICItZnN0YWNrLXByb3RlY3Rvci1zdHJvbmciCiBTRUNVUklUWV9MREZMQUdTX3JlbW92ZV9wbi1nbGliYyA9ICItZnN0YWNrLXByb3RlY3Rvci1zdHJvbmciCiBTRUNVUklUWV9MREZMQUdTX3JlbW92ZV9wbi1nbGliYy1pbml0aWFsID0gIi1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZyIKLVNFQ1VSSVRZX0xERkxBR1NfcmVtb3ZlX3BuLWxpYmdjYyA9ICItZnN0YWNrLXByb3RlY3Rvci1zdHJvbmciCiBTRUNVUklUWV9MREZMQUdTX3JlbW92ZV9wbi11Y2xpYmMgPSAiLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nIgogU0VDVVJJVFlfTERGTEFHU19yZW1vdmVfcG4tdWNsaWJjLWluaXRpYWwgPSAiLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nIgogU0VDVVJJVFlfTERGTEFHU19wbi14Zjg2LXZpZGVvLWZiZGV2ID0gIiR7U0VDVVJJVFlfWF9MREZMQUdTfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNsaWJjLXVjbGliYy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbGliYy11Y2xpYmMuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNGMzY2RiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNsaWJjLXVjbGliYy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0jCi0jIHVjbGliYyBzcGVjaWZpYyBjb25maWd1cmF0aW9uCi0jCi0KLUxJQkNFWFRFTlNJT04gPSAiLXVjbGliYyIKLQotIyBBZGQgdWNsaWJjIG92ZXJyaWRlcyB0byB0aGUgb3ZlcnJpZGVzLgotTElCQ09WRVJSSURFID0gIjpsaWJjLXVjbGliYyIKLU9WRVJSSURFUyAuPSAiJHtMSUJDT1ZFUlJJREV9IgotCi1QUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9saWJjID89ICJ1Y2xpYmMiCi1QUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9saWJpY29udiA/PSAibGliaWNvbnYiCi1QUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9saWJpbnRsID89ICJnZXR0ZXh0IgotUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbmF0aXZlc2RrLWxpYmludGwgPz0gIm5hdGl2ZXNkay1nbGliYyIKLVBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL25hdGl2ZXNkay1saWJpY29udiA/PSAibmF0aXZlc2RrLWdsaWJjIgotCi1VU0VfTkxTID89ICJubyIKLQotQ1hYRkxBR1MgKz0gIi1mdmlzaWJpbGl0eS1pbmxpbmVzLWhpZGRlbiIKLQotSU1BR0VfTElOR1VBUyA9ICIiCi0KLUxJQkNfREVQRU5ERU5DSUVTID0gIlwKLSAgICB1Y2xpYmMgXAotICAgIHVjbGliYy1kYmcgXAotICAgIHVjbGliYy1kZXYgXAotICAgIHVjbGliYy10aHJlYWQtZGIgXAotICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNtb2RlLWRlZmF1bHQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y21vZGUtZGVmYXVsdC5pbmMKaW5kZXggYzQxMjQyMC4uY2EzYzVlYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y21vZGUtZGVmYXVsdC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y21vZGUtZGVmYXVsdC5pbmMKQEAgLTksMTAgKzksMTAgQEAKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1jb21waWxlcmxpYnMgPSAiZ2NjLXJ1bnRpbWUiCiBQUkVGRVJSRURfUFJPVklERVJfZ2RiID0gImdkYiIKIAotUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvJHtTREtfUFJFRklYfWJpbnV0aWxzLWNyb3Nzc2RrID89ICJiaW51dGlscy1jcm9zc3Nkay0ke1NES19BUkNIfSIKLVBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsLyR7U0RLX1BSRUZJWH1nY2MtaW5pdGlhbCA9ICJnY2MtY3Jvc3NzZGstaW5pdGlhbC0ke1NES19BUkNIfSIKLVBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsLyR7U0RLX1BSRUZJWH1nY2MgPSAiZ2NjLWNyb3Nzc2RrLSR7U0RLX0FSQ0h9IgotUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvJHtTREtfUFJFRklYfWcrKyA9ICJnY2MtY3Jvc3NzZGstJHtTREtfQVJDSH0iCitQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC8ke1NES19QUkVGSVh9YmludXRpbHMtY3Jvc3NzZGsgPz0gImJpbnV0aWxzLWNyb3Nzc2RrLSR7U0RLX1NZU30iCitQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC8ke1NES19QUkVGSVh9Z2NjLWluaXRpYWwgPSAiZ2NjLWNyb3Nzc2RrLWluaXRpYWwtJHtTREtfU1lTfSIKK1BSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsLyR7U0RLX1BSRUZJWH1nY2MgPSAiZ2NjLWNyb3Nzc2RrLSR7U0RLX1NZU30iCitQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC8ke1NES19QUkVGSVh9ZysrID0gImdjYy1jcm9zc3Nkay0ke1NES19TWVN9IgogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvJHtTREtfUFJFRklYfWNvbXBpbGVybGlicyA9ICJuYXRpdmVzZGstZ2NjLXJ1bnRpbWUiCiAKICMgRGVmYXVsdCBsaWJjIGNvbmZpZwpAQCAtMjIsMTkgKzIyLDE5IEBACiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9uYXRpdmVzZGstJHtTREtfUFJFRklYfWxpYmMtaW5pdGlhbCA/PSAibmF0aXZlc2RrLWdsaWJjLWluaXRpYWwiCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9nZXR0ZXh0ID8/PSAiZ2V0dGV4dCIKIAotR0NDVkVSU0lPTiA/PSAiNS4zJSIKK0dDQ1ZFUlNJT04gPz0gIjYuMiUiCiBTREtHQ0NWRVJTSU9OID89ICIke0dDQ1ZFUlNJT059IgotQklOVVZFUlNJT04gPz0gIjIuMjYlIgotR0RCVkVSU0lPTiA/PSAiNy4xMCUiCi1HTElCQ1ZFUlNJT04gPz0gIjIuMjMiCitCSU5VVkVSU0lPTiA/PSAiMi4yNyUiCitHREJWRVJTSU9OID89ICI3LjExJSIKK0dMSUJDVkVSU0lPTiA/PSAiMi4yNCIKIFVDTElCQ1ZFUlNJT04gPz0gIjEuMCUiCi1MSU5VWExJQkNWRVJTSU9OID89ICI0LjQiCitMSU5VWExJQkNWRVJTSU9OID89ICI0LjglIgogCiBQUkVGRVJSRURfVkVSU0lPTl9nY2MgPz0gIiR7R0NDVkVSU0lPTn0iCiBQUkVGRVJSRURfVkVSU0lPTl9nY2MtY3Jvc3MtJHtUQVJHRVRfQVJDSH0gPz0gIiR7R0NDVkVSU0lPTn0iCiBQUkVGRVJSRURfVkVSU0lPTl9nY2MtY3Jvc3MtaW5pdGlhbC0ke1RBUkdFVF9BUkNIfSA/PSAiJHtHQ0NWRVJTSU9OfSIKLVBSRUZFUlJFRF9WRVJTSU9OX2djYy1jcm9zc3Nkay0ke1NES19BUkNIfSA/PSAiJHtTREtHQ0NWRVJTSU9OfSIKLVBSRUZFUlJFRF9WRVJTSU9OX2djYy1jcm9zc3Nkay1pbml0aWFsLSR7U0RLX0FSQ0h9ID89ICIke1NES0dDQ1ZFUlNJT059IgorUFJFRkVSUkVEX1ZFUlNJT05fZ2NjLWNyb3Nzc2RrLSR7U0RLX1NZU30gPz0gIiR7U0RLR0NDVkVSU0lPTn0iCitQUkVGRVJSRURfVkVSU0lPTl9nY2MtY3Jvc3NzZGstaW5pdGlhbC0ke1NES19TWVN9ID89ICIke1NES0dDQ1ZFUlNJT059IgogUFJFRkVSUkVEX1ZFUlNJT05fZ2NjLWNyb3NzLWNhbmFkaWFuLSR7VFJBTlNMQVRFRF9UQVJHRVRfQVJDSH0gPz0gIiR7R0NDVkVSU0lPTn0iCiBQUkVGRVJSRURfVkVSU0lPTl9nY2MtcnVudGltZSA/PSAiJHtHQ0NWRVJTSU9OfSIKIFBSRUZFUlJFRF9WRVJTSU9OX2djYy1zYW5pdGl6ZXJzID89ICIke0dDQ1ZFUlNJT059IgpAQCAtNjgsNyArNjgsNyBAQAogUFJFRkVSUkVEX1ZFUlNJT05fdWNsaWJjLWluaXRpYWwgICAgICAgICAgID89ICIke1VDTElCQ1ZFUlNJT059IgogIyBkb24ndCB1c2UgdmVyc2lvbiBlYXJsaWVyIHRoYW4gMS40IGZvciBnemlwLW5hdGl2ZSwgYXMgaXQncyBuZWNlc3NhcnkgZm9yCiAjIHNvbWUgcGFja2FnZXMgdXNpbmcgYW4gYXJjaGl2ZSBmb3JtYXQgaW5jb21wYXRpYmxlIHdpdGggZWFybGllciBnemlwCi1QUkVGRVJSRURfVkVSU0lPTl9nemlwLW5hdGl2ZSA/PSAiMS42IgorUFJFRkVSUkVEX1ZFUlNJT05fZ3ppcC1uYXRpdmUgPz0gIjEuOCIKIAogIyBTZXR1cCBzdWl0YWJsZSB0b29sY2hhaW4gZmxhZ3MKIHJlcXVpcmUgY29uZi9kaXN0cm8vaW5jbHVkZS9hcy1uZWVkZWQuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3dvcmxkLWJyb2tlbi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3dvcmxkLWJyb2tlbi5pbmMKaW5kZXggYTVmNjM3MS4uZDRiZGRkZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS93b3JsZC1icm9rZW4uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvd29ybGQtYnJva2VuLmluYwpAQCAtNDcsMyArNDcsMTAgQEAKIAogIyBlcnJvcjogJ1JUTERfTkVYVCcgd2FzIG5vdCBkZWNsYXJlZCBpbiB0aGlzIHNjb3BlCiBFWENMVURFX0ZST01fV09STERfcG4tZ2NjLXNhbml0aXplcnNfbGliYy1tdXNsID0gIjEiCisKKyMgZ2NjIGZhaWxzIHRvIGJ1aWxkIHdoZW4gbGlidXdpbmQgaXMgc3RhZ2VkIGJlZm9yZSBidWlsZGluZyBnY2Mgc2luY2UKKyMgaXQgdGhlbiBmaW5kcyB0aGUgdW53aW5kLmggaGVhZGVyIGZyb20gbGlidW53aW5kIGFuZCBub3QgZnJvbSBsaWJnY2MKKyMgYW5kIG9uIGFybSBzcGVjaWFsbHkgdGhleSBhcmUgZGlmZmVyZW50IHNpbmNlIGxpYmdjYyBkZWZpbmVzIHNvbWUgZnVuY3Rpb25zCisjIGFzIG1hY3JvcyB3aGljaCBhcmUgZnVuY3Rpb25zIGluIGxpYnVud2luZCBhbmQgaXQgZmFpbHMgZHVyaW5nIGxpbmtpbmcKKyMgbGliYmFja3RyYWNlL2JhY2t0cmFjZS5jOjc2OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfVW53aW5kX0dldElQJworRVhDTFVERV9GUk9NX1dPUkxEX3BuLWxpYnVud2luZF9saWJjLW11c2xfYXJtID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3lvY3RvLXVuaW5hdGl2ZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3lvY3RvLXVuaW5hdGl2ZS5pbmMKaW5kZXggODVlNjEzYS4uOTc1ZWRlYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS95b2N0by11bmluYXRpdmUuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUveW9jdG8tdW5pbmF0aXZlLmluYwpAQCAtNiw2ICs2LDYgQEAKICMgdG8gdGhlIGRpc3RybyBydW5uaW5nIG9uIHRoZSBidWlsZCBtYWNoaW5lLgogIwogCi1VTklOQVRJVkVfVVJMID0gImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy91bmluYXRpdmUvMC45NS8iCi1VTklOQVRJVkVfQ0hFQ0tTVU1baTY4Nl0gPz0gIjVmMjdkN2UwZjRkZDJlZDgwYTdmZjZhMGQ4OGFmMTA3YjA4ZTAwNzY1YjMxZWQzYWExODBjYzVjZTE1YjA4MTEiCi1VTklOQVRJVkVfQ0hFQ0tTVU1beDg2XzY0XSA/PSAiMjZkNDZjNjFhZDg4Y2MyNDVlMzFjODg1NDk3MTdjMDA5MmE4MzhkMTExYjkzZWMxNjlkODhiMDhjYzAyNzU4MSIKK1VOSU5BVElWRV9VUkwgPz0gImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy91bmluYXRpdmUvMS40LyIKK1VOSU5BVElWRV9DSEVDS1NVTVtpNjg2XSA/PSAiYjRiYzYwNTExY2U0Nzk3MzY4MDgyNzNmZmEwNDNkZjRlZDJhMjI1NDA3ZGQ3Y2ExNTBhZTYyMjBkOWNlNzZkNSIKK1VOSU5BVElWRV9DSEVDS1NVTVt4ODZfNjRdID89ICIxMDFmZjhmMjU4MGMxOTM0ODhkYjllNzZmOTY0NmZiNmVkMzhiNjVmYjc2ZjQwM2FjYjBlMjE3OGNlNzEyN2NhIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kb2N1bWVudGF0aW9uLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2RvY3VtZW50YXRpb24uY29uZgppbmRleCBkY2MzMjRjLi4wNjUyN2NiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2RvY3VtZW50YXRpb24uY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2RvY3VtZW50YXRpb24uY29uZgpAQCAtMjgsNyArMjgsNyBAQAogZG9fa2VybmVsX2NoZWNrb3V0W2RvY10gPSAiQ2hlY2tzIG91dCBzb3VyY2UvbWV0YSBicmFuY2hlcyBmb3IgYSBsaW51eC15b2N0byBzdHlsZSBrZXJuZWwiCiBkb19rZXJuZWxfY29uZmlnY2hlY2tbZG9jXSA9ICJWYWxpZGF0ZXMgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGZvciBhIGxpbnV4LXlvY3RvIHN0eWxlIGtlcm5lbCIKIGRvX2tlcm5lbF9jb25maWdtZVtkb2NdID0gIkFzc2VtYmxlcyB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZm9yIGEgbGludXgteW9jdG8gc3R5bGUga2VybmVsIgotZG9fa2VybmVsX2xpbmtfdm1saW51eFtkb2NdID0gIkNyZWF0ZXMgYSBzeW1ib2xpYyBsaW5rIGluIGFyY2gvJGFyY2gvYm9vdCBmb3Igdm1saW51eCBrZXJuZWwgaW1hZ2VzIgorZG9fa2VybmVsX2xpbmtfaW1hZ2VzW2RvY10gPSAiQ3JlYXRlcyBhIHN5bWJvbGljIGxpbmsgaW4gYXJjaC8kYXJjaC9ib290IGZvciB2bWxpbnV4IGFuZCB2bWxpbnV6IGtlcm5lbCBpbWFnZXMiCiBkb19saXN0dGFza3NbZG9jXSA9ICJMaXN0cyBhbGwgZGVmaW5lZCB0YXNrcyBmb3IgYSB0YXJnZXQiCiBkb19tZW51Y29uZmlnW2RvY10gPSAiUnVucyAnbWFrZSBtZW51Y29uZmlnJyBmb3IgdGhlIGtlcm5lbCIKIGRvX3BhY2thZ2VbZG9jXSA9ICJBbmFseXplcyB0aGUgY29udGVudCBvZiB0aGUgaG9sZGluZyBhcmVhIGFuZCBzcGxpdHMgaXQgaW50byBzdWJzZXRzIGJhc2VkIG9uIGF2YWlsYWJsZSBwYWNrYWdlcyBhbmQgZmlsZXMiCkBAIC0zNDksNyArMzQ5LDYgQEAKIFJDT05GTElDVFNbZG9jXSA9ICJUaGUgbGlzdCBvZiBwYWNrYWdlcyB0aGF0IGNvbmZsaWN0IHdpdGggYW5vdGhlciBwYWNrYWdlLiBOb3RlIHRoYXQgdGhlIHBhY2thZ2Ugd2lsbCBub3QgYmUgaW5zdGFsbGVkIGlmIHRoZSBjb25mbGljdGluZyBwYWNrYWdlcyBhcmUgbm90IGZpcnN0IHJlbW92ZWQuIgogUkRFUEVORFNbZG9jXSA9ICJMaXN0cyBhIHBhY2thZ2UncyBydW50aW1lIGRlcGVuZGVuY2llcyAoaS5lLiBvdGhlciBwYWNrYWdlcykgdGhhdCBtdXN0IGJlIGluc3RhbGxlZCBmb3IgdGhlIHBhY2thZ2UgdG8gYmUgYnVpbHQuIFRoZXkgbXVzdCBiZSB0aGUgbmFtZXMgb2Ygb3RoZXIgcGFja2FnZXMgYXMgbGlzdGVkIGluIHRoZSBQQUNLQUdFUyB2YXJpYWJsZSwgbm90IHJlY2lwZSBuYW1lcyAoUE4pLiIKIFJFUVVJUkVEX0RJU1RST19GRUFUVVJFU1tkb2NdID0gIldoZW4gYSByZWNpcGUgaW5oZXJpdHMgdGhlIGRpc3Ryb19mZWF0dXJlc19jaGVjayBjbGFzcywgdGhpcyB2YXJpYWJsZSBpZGVudGlmaWVzIGRpc3RyaWJ1dGlvbiBmZWF0dXJlcyB0aGF0IG11c3QgZXhpc3QgaW4gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBpbiBvcmRlciBmb3IgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gYnVpbGQgdGhlIHJlY2lwZS4iCi1STV9PTERfSU1BR0VbZG9jXSA9ICJSZWNsYWltcyBkaXNrIHNwYWNlIGJ5IHJlbW92aW5nIHByZXZpb3VzbHkgYnVpbHQgdmVyc2lvbnMgb2YgdGhlIHNhbWUgaW1hZ2UgZnJvbSB0aGUgaW1hZ2VzIGRpcmVjdG9yeSBwb2ludGVkIHRvIGJ5IHRoZSBERVBMT1lfRElSIHZhcmlhYmxlLiIKIFJNX1dPUktfRVhDTFVERVtkb2NdID0gIldpdGggcm1fd29yayBlbmFibGVkLCB0aGlzIHZhcmlhYmxlIHNwZWNpZmllcyBhIGxpc3Qgb2YgcGFja2FnZXMgd2hvc2Ugd29yayBkaXJlY3RvcmllcyBzaG91bGQgbm90IGJlIHJlbW92ZWQuIgogUk9PVEZTW2RvY10gPSAiSW5kaWNhdGVzIGEgZmlsZXN5c3RlbSBpbWFnZSB0byBpbmNsdWRlIGFzIHRoZSByb290IGZpbGVzeXN0ZW0uIgogUk9PVEZTX1BPU1RQUk9DRVNTX0NPTU1BTkRbZG9jXSA9ICJBZGRlZCBieSBjbGFzc2VzIHRvIHJ1biBwb3N0IHByb2Nlc3NpbmcgY29tbWFuZHMgb25jZSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBoYXMgY3JlYXRlZCB0aGUgcm9vdCBmaWxlc3lzdGVtLiIKQEAgLTQ1Miw4ICs0NTEsMTIgQEAKIFVCT09UX1RBUkdFVFtkb2NdID0gIlNwZWNpZmllcyB0aGUgdGFyZ2V0IHVzZWQgZm9yIGJ1aWxkaW5nIFUtQm9vdC4iCiBVU0VfREVWRlNbZG9jXSA9ICJXaGVuIGJ1aWxkaW5nIGltYWdlcywgc3BlY2lmaWVzIHRvIHBvcHVsYXRlIG9yIG5vdCAvZGV2LiBUaGlzIHZhcmlhYmxlIGRlZmF1bHRzIHRvICcxJyAobGVhdmUgZGlyZWN0b3J5IGVtcHR5LCBzdXJlbHkgYmVjYXVzZSBkZXZ0bXBmcyBkbyB0aGUgam9iKS4gU2V0IGl0IHRvICcwJyB0byB1c2UgbWFrZWRldnMgKG9yIGNvbnNpZGVyIHVzaW5nIGEgY3VzdG9tIGZpbGUgd2l0aCBJTUFHRV9ERVZJQ0VfVEFCTEVTKS4iCiBVU0VSX0NMQVNTRVNbZG9jXSA9ICJMaXN0IG9mIGFkZGl0aW9uYWwgY2xhc3NlcyB0byB1c2Ugd2hlbiBidWlsZGluZyBpbWFnZXMgdGhhdCBlbmFibGUgZXh0cmEgZmVhdHVyZXMuIgorVVNFUkFERF9FUlJPUl9EWU5BTUlDW2RvY10gPSAiSWYgc2V0IHRvICdlcnJvcicsIGZvcmNlcyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBwcm9kdWNlIGFuIGVycm9yIGlmIHRoZSB1c2VyIGlkZW50aWZpY2F0aW9uICh1aWQpIGFuZCBncm91cCBpZGVudGlmaWNhdGlvbiAoZ2lkKSB2YWx1ZXMgYXJlIG5vdCBkZWZpbmVkIGluIGFueSBvZiB0aGUgZmlsZXMgbGlzdGVkIGluIFVTRVJBRERfVUlEX1RBQkxFUyBhbmQgVVNFUkFERF9HSURfVEFCTEVTLiBJZiBzZXQgdG8gJ3dhcm4nLCBhIHdhcm5pbmcgd2lsbCBiZSBpc3N1ZWQgaW5zdGVhZC4iCitVU0VSQUREX0dJRF9UQUJMRVNbZG9jXSA9ICJTcGVjaWZpZXMgYSBwYXNzd29yZCBmaWxlIHRvIHVzZSBmb3Igb2J0YWluaW5nIHN0YXRpYyBncm91cCBpZGVudGlmaWNhdGlvbiAoZ2lkKSB2YWx1ZXMgd2hlbiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBhZGRzIGEgZ3JvdXAgdG8gdGhlIHN5c3RlbSBkdXJpbmcgcGFja2FnZSBpbnN0YWxsYXRpb24uIgogVVNFUkFERF9QQUNLQUdFU1tkb2NdID0gIldoZW4gYSByZWNpcGUgaW5oZXJpdHMgdGhlIHVzZXJhZGQgY2xhc3MsIHRoaXMgdmFyaWFibGUgc3BlY2lmaWVzIHRoZSBpbmRpdmlkdWFsIHBhY2thZ2VzIHdpdGhpbiB0aGUgcmVjaXBlIHRoYXQgcmVxdWlyZSB1c2VycyBhbmQvb3IgZ3JvdXBzIHRvIGJlIGFkZGVkLiIKIFVTRVJBRERfUEFSQU1bZG9jXSA9ICJXaGVuIGEgcmVjaXBlIGluaGVyaXRzIHRoZSB1c2VyYWRkIGNsYXNzLCB0aGlzIHZhcmlhYmxlIHNwZWNpZmllcyBmb3IgYSBwYWNrYWdlIHdoYXQgcGFyYW1ldGVycyBzaG91bGQgYmUgcGFzc2VkIHRvIHRoZSB1c2VyYWRkIGNvbW1hbmQgaWYgeW91IHdpc2ggdG8gYWRkIGEgdXNlciB0byB0aGUgc3lzdGVtIHdoZW4gdGhlIHBhY2thZ2UgaXMgaW5zdGFsbGVkLiIKK1VTRVJBRERfVUlEX1RBQkxFU1tkb2NdID0gIlNwZWNpZmllcyBhIHBhc3N3b3JkIGZpbGUgdG8gdXNlIGZvciBvYnRhaW5pbmcgc3RhdGljIHVzZXIgaWRlbnRpZmljYXRpb24gKHVpZCkgdmFsdWVzIHdoZW4gdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gYWRkcyBhIHVzZXIgdG8gdGhlIHN5c3RlbSBkdXJpbmcgcGFja2FnZSBpbnN0YWxsYXRpb24uIgorVVNFUkFEREVYVEVOU0lPTltkb2NdID0gIldoZW4gc2V0IHRvICd1c2VyYWRkLXN0YXRpY2lkcycsIGNhdXNlcyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBiYXNlIGFsbCB1c2VyIGFuZCBncm91cCBhZGRpdGlvbnMgb24gZmlsZXMgbGlzdGVkIGluIFVTRVJBRERfVUlEX1RBQkxFUyBhbmQgVVNFUkFERF9HSURfVEFCTEVTLiIKIAogI1cKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9sYXllci5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9sYXllci5jb25mCmluZGV4IDEwYjk4ZjUuLjI0YjRkZjAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbGF5ZXIuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2xheWVyLmNvbmYKQEAgLTksNyArOSw3IEBACiAKICMgVGhpcyBzaG91bGQgb25seSBiZSBpbmNyZW1lbnRlZCBvbiBzaWduaWZpY2FudCBjaGFuZ2VzIHRoYXQgd2lsbAogIyBjYXVzZSBjb21wYXRpYmlsaXR5IGlzc3VlcyB3aXRoIG90aGVyIGxheWVycwotTEFZRVJWRVJTSU9OX2NvcmUgPSAiOCIKK0xBWUVSVkVSU0lPTl9jb3JlID0gIjkiCiAKIEJCTEFZRVJTX0xBWUVSSU5ERVhfTkFNRV9jb3JlID0gIm9wZW5lbWJlZGRlZC1jb3JlIgogCkBAIC0yNiw3ICsyNiw2IEBACiAgIGNvbm5tYW4tY29uZiBcCiAgIGZvcm1mYWN0b3IgXAogICB4c2VydmVyLXhmODYtY29uZmlnIFwKLSAgcG9pbnRlcmNhbCBcCiAgIHBvaW50ZXJjYWwteGlucHV0IFwKICAgYmFzZS1maWxlcyBcCiAgIGtleW1hcHMgXApAQCAtNDcsNiArNDYsNyBAQAogICBwcHAtZGlhbGluLT5wcHAgXAogICByZXNvbHZjb25mLT5iYXNoIFwKICAgZG9jYm9vay14c2wtc3R5bGVzaGVldHMtPnBlcmwgXAorICBjYS1jZXJ0aWZpY2F0ZXMtPm9wZW5zc2wgXAogICBpbml0cmFtZnMtZnJhbWV3b3JrLT4ke1ZJUlRVQUwtUlVOVElNRV9iYXNlLXV0aWxzfSBcCiAgIGluaXRyYW1mcy1mcmFtZXdvcmstPnN5c3RlbWQgXAogICBpbml0cmFtZnMtZnJhbWV3b3JrLT5ldWRldiBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUtc2RrL2k1ODYuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS1zZGsvaTU4Ni5jb25mCmluZGV4IGJhYWNjZTcuLjQxZTVlMTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS1zZGsvaTU4Ni5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS1zZGsvaTU4Ni5jb25mCkBAIC0xLDMgKzEsNCBAQAogU0RLX0FSQ0ggPSAiaTU4NiIKIFNES19DQ19BUkNIID0gIi1tYXJjaD1pNTg2IgorQUJJRVhURU5TSU9OX2NsYXNzLW5hdGl2ZXNkayA9ICIiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS1zZGsvaTY4Ni5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lLXNkay9pNjg2LmNvbmYKaW5kZXggZmZkYjQ2MS4uZmU0MDY5NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lLXNkay9pNjg2LmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lLXNkay9pNjg2LmNvbmYKQEAgLTEsMiArMSwzIEBACiBTREtfQVJDSCA9ICJpNjg2IgogU0RLX0NDX0FSQ0ggPSAiLW1hcmNoPWk2ODYiCitBQklFWFRFTlNJT05fY2xhc3MtbmF0aXZlc2RrID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS1zZGsveDg2XzY0LmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUtc2RrL3g4Nl82NC5jb25mCmluZGV4IDgxMmQ2N2MuLjYxNDM5YjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS1zZGsveDg2XzY0LmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lLXNkay94ODZfNjQuY29uZgpAQCAtMSArMSwyIEBACiBTREtfQVJDSCA9ICJ4ODZfNjQiCitBQklFWFRFTlNJT05fY2xhc3MtbmF0aXZlc2RrID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9hcmNoLWFybXY3dmUuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2FyY2gtYXJtdjd2ZS5pbmMKaW5kZXggNzllMWVmNi4uZTEzMTU2YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2FyY2gtYXJtdjd2ZS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2FyY2gtYXJtdjd2ZS5pbmMKQEAgLTUsOCArNSw3IEBACiBUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnYXJtdjd2ZScsICcgLW1hcmNoPWFybXY3dmUnLCAnJywgZCl9IgogTUFDSElORU9WRVJSSURFUyA9LiAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnYXJtdjd2ZScsICdhcm12N3ZlOicsICcnICxkKX0iCiAKLXJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2FyY2gtYXJtdjYuaW5jCi1yZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9mZWF0dXJlLWFybS1uZW9uLmluYworcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS9hcm0vYXJjaC1hcm12N2EuaW5jCiAKICMgTGl0dGxlIEVuZGlhbiBiYXNlIGNvbmZpZ3MKIEFWQUlMVFVORVMgKz0gImFybXY3dmUgYXJtdjd2ZXQgYXJtdjd2ZS12ZnB2M2QxNiBhcm12N3ZldC12ZnB2M2QxNiBhcm12N3ZlLXZmcHYzIGFybXY3dmV0LXZmcHYzIGFybXY3dmUtbmVvbiBhcm12N3ZldC1uZW9uIGFybXY3dmUtbmVvbi12ZnB2NCBhcm12N3ZldC1uZW9uLXZmcHY0IgpAQCAtMzAsOCArMjksOCBAQAogVFVORV9GRUFUVVJFU190dW5lLWFybXY3dmV0LW5lb24gICAgICAgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtdjd2ZXR9IG5lb24iCiBUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtdjd2ZS1uZW9uLXZmcHY0ICA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS1hcm12N3ZlLW5lb259ICB2ZnB2NCIKIFRVTkVfRkVBVFVSRVNfdHVuZS1hcm12N3ZldC1uZW9uLXZmcHY0ID0gIiR7VFVORV9GRUFUVVJFU190dW5lLWFybXY3dmV0LW5lb259IHZmcHY0IgotUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY3dmUgICAgICAgICAgICAgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjZ9ICBhcm12N3ZlIGFybXY3dmUtdmZwIgotUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY3dmV0ICAgICAgICAgICAgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjZ0fSBhcm12N3ZlIGFybXY3dmUtdmZwIGFybXY3dmV0Mi12ZnAiCitQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjd2ZSAgICAgICAgICAgICA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12N2F9ICBhcm12N3ZlIGFybXY3dmUtdmZwIgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY3dmV0ICAgICAgICAgICAgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjdhdH0gYXJtdjd2ZSBhcm12N3ZlLXZmcCBhcm12N3ZldDItdmZwIgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY3dmUtdmZwdjNkMTYgICAgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjd2ZX0gIGFybXY3dmUtdmZwdjNkMTYiCiBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjd2ZXQtdmZwdjNkMTYgICA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12N3ZldH0gYXJtdjd2ZS12ZnB2M2QxNiBhcm12N3ZldDItdmZwdjNkMTYiCiBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjd2ZS12ZnB2MyAgICAgICA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12N3ZlLXZmcHYzZDE2fSAgYXJtdjd2ZS12ZnB2MyIKQEAgLTYzLDggKzYyLDggQEAKIFRVTkVfRkVBVFVSRVNfdHVuZS1hcm12N3ZldGhmLW5lb24gICAgICAgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtdjd2ZXQtbmVvbn0gICAgICAgY2FsbGNvbnZlbnRpb24taGFyZCIKIFRVTkVfRkVBVFVSRVNfdHVuZS1hcm12N3ZlaGYtbmVvbi12ZnB2NCAgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtdjd2ZS1uZW9uLXZmcHY0fSAgY2FsbGNvbnZlbnRpb24taGFyZCIKIFRVTkVfRkVBVFVSRVNfdHVuZS1hcm12N3ZldGhmLW5lb24tdmZwdjQgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtdjd2ZXQtbmVvbi12ZnB2NH0gY2FsbGNvbnZlbnRpb24taGFyZCIKLVBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12N3ZlaGYgICAgICAgICAgICAgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjZoZn0gIGFybXY3dmVoZi12ZnAiCi1QQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjd2ZXRoZiAgICAgICAgICAgID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY2dGhmfSBhcm12N3ZlaGYtdmZwIGFybXY3dmV0MmhmLXZmcCIKK1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12N3ZlaGYgICAgICAgICAgICAgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjdhaGZ9ICBhcm12N3ZlaGYtdmZwIgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY3dmV0aGYgICAgICAgICAgICA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12N2F0aGZ9IGFybXY3dmVoZi12ZnAgYXJtdjd2ZXQyaGYtdmZwIgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY3dmVoZi12ZnB2M2QxNiAgICA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12N3ZlaGZ9ICBhcm12N3ZlaGYtdmZwdjNkMTYiCiBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjd2ZXRoZi12ZnB2M2QxNiAgID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY3dmV0aGZ9IGFybXY3dmVoZi12ZnB2M2QxNiBhcm12N3ZldDJoZi12ZnB2M2QxNiIKIFBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12N3ZlaGYtdmZwdjMgICAgICAgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjd2ZWhmLXZmcHYzZDE2fSAgYXJtdjd2ZWhmLXZmcHYzIgpAQCAtOTYsOCArOTUsOCBAQAogVFVORV9GRUFUVVJFU190dW5lLWFybXY3dmV0Yi1uZW9uICAgICAgID0gIiR7VFVORV9GRUFUVVJFU190dW5lLWFybXY3dmV0LW5lb259ICAgICAgIGJpZ2VuZGlhbiIKIFRVTkVfRkVBVFVSRVNfdHVuZS1hcm12N3ZlYi1uZW9uLXZmcHY0ICA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS1hcm12N3ZlLW5lb24tdmZwdjR9ICBiaWdlbmRpYW4iCiBUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtdjd2ZXRiLW5lb24tdmZwdjQgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtdjd2ZXQtbmVvbi12ZnB2NH0gYmlnZW5kaWFuIgotUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY3dmViICAgICAgICAgICAgID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY2Yn0gIGFybXY3dmViLXZmcCIKLVBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12N3ZldGIgICAgICAgICAgICA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12NnRifSBhcm12N3ZlYi12ZnAgYXJtdjd2ZXQyYi12ZnAiCitQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjd2ZWIgICAgICAgICAgICAgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjdhYn0gIGFybXY3dmViLXZmcCIKK1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12N3ZldGIgICAgICAgICAgICA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12N2F0Yn0gYXJtdjd2ZWItdmZwIGFybXY3dmV0MmItdmZwIgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY3dmViLXZmcHYzZDE2ICAgID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY3dmVifSAgYXJtdjd2ZWItdmZwdjNkMTYiCiBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjd2ZXRiLXZmcHYzZDE2ICAgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjd2ZXRifSBhcm12N3ZlYi12ZnB2M2QxNiBhcm12N3ZldDJiLXZmcHYzZDE2IgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY3dmViLXZmcHYzICAgICAgID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY3dmViLXZmcHYzZDE2fSAgYXJtdjd2ZWItdmZwdjMiCkBAIC0xMjksOCArMTI4LDggQEAKIFRVTkVfRkVBVFVSRVNfdHVuZS1hcm12N3ZldGhmYi1uZW9uICAgICAgID0gIiR7VFVORV9GRUFUVVJFU190dW5lLWFybXY3dmV0aGYtbmVvbn0gICAgICAgYmlnZW5kaWFuIgogVFVORV9GRUFUVVJFU190dW5lLWFybXY3dmVoZmItbmVvbi12ZnB2NCAgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtdjd2ZWhmLW5lb24tdmZwdjR9ICBiaWdlbmRpYW4iCiBUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtdjd2ZXRoZmItbmVvbi12ZnB2NCA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS1hcm12N3ZldGhmLW5lb24tdmZwdjR9IGJpZ2VuZGlhbiIKLVBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12N3ZlaGZiICAgICAgICAgICAgID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY2aGZifSAgYXJtdjd2ZWhmYi12ZnAiCi1QQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjd2ZXRoZmIgICAgICAgICAgICA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12NnRoZmJ9IGFybXY3dmVoZmItdmZwIGFybXY3dmV0MmhmYi12ZnAiCitQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjd2ZWhmYiAgICAgICAgICAgICA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12N2FoZmJ9ICBhcm12N3ZlaGZiLXZmcCIKK1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12N3ZldGhmYiAgICAgICAgICAgID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY3YXRoZmJ9IGFybXY3dmVoZmItdmZwIGFybXY3dmV0MmhmYi12ZnAiCiBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjd2ZWhmYi12ZnB2M2QxNiAgICA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12N3ZlaGZifSAgYXJtdjd2ZWhmYi12ZnB2M2QxNiIKIFBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12N3ZldGhmYi12ZnB2M2QxNiAgID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY3dmV0aGZifSBhcm12N3ZlaGZiLXZmcHYzZDE2IGFybXY3dmV0MmhmYi12ZnB2M2QxNiIKIFBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12N3ZlaGZiLXZmcHYzICAgICAgID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY3dmVoZmItdmZwdjNkMTZ9ICBhcm12N3ZlaGZiLXZmcHYzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2ZlYXR1cmUtYXJtLW5lb24uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2ZlYXR1cmUtYXJtLW5lb24uaW5jCmluZGV4IDUwZDkxNzUuLmIzNGFmOGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9mZWF0dXJlLWFybS1uZW9uLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9hcm0vZmVhdHVyZS1hcm0tbmVvbi5pbmMKQEAgLTgsNyArOCw3IEBACiBUVU5FX0NDQVJHU19NRlBVIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICduZW9uJywgJyBuZW9uJywgJycsIGQpfSIKIAogVFVORVZBTElEW3ZmcHYzZDE2XSA9ICJFbmFibGUgVmVjdG9yIEZsb2F0aW5nIFBvaW50IFZlcnNpb24gMyB3aXRoIDE2IHJlZ2lzdGVycyAodmZwdjMtZDE2KSB1bml0LiIKLVRVTkVfQ0NBUkdTX01GUFUgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ3ZmcHYzZDE2JywgJyB2ZnB2M2QxNicsICcnLCBkKX0iCitUVU5FX0NDQVJHU19NRlBVIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICd2ZnB2M2QxNicsICcgdmZwdjMtZDE2JywgJycsIGQpfSIKIAogVFVORVZBTElEW3ZmcHYzXSA9ICJFbmFibGUgVmVjdG9yIEZsb2F0aW5nIFBvaW50IFZlcnNpb24gMyB3aXRoIDMyIHJlZ2lzdGVycyAodmZwdjMpIHVuaXQuIgogVFVORV9DQ0FSR1NfTUZQVSAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAndmZwdjMnLCAnIHZmcHYzJywgJycgLCBkKX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9hcm0vZmVhdHVyZS1hcm0tdmZwLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9mZWF0dXJlLWFybS12ZnAuaW5jCmluZGV4IDQyNDcyNTUuLjllZjMxZTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9mZWF0dXJlLWFybS12ZnAuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9mZWF0dXJlLWFybS12ZnAuaW5jCkBAIC02LDcgKzYsNyBAQAogVFVORV9DQ0FSR1NfTUZQVSAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAndmZwJywgJyB2ZnAnLCAnJywgZCl9IgogCiBUVU5FX0NDQVJHUyAgLj0gIiR7QCAoJyAtbWZwdT0lcyAnICUgZC5nZXRWYXIoJ1RVTkVfQ0NBUkdTX01GUFUnLCBUcnVlKS5zcGxpdCgpWy0xXSkgaWYgKGQuZ2V0VmFyKCdUVU5FX0NDQVJHU19NRlBVJywgVHJ1ZSkgIT0gJycpIGVsc2UgJyd9IgotQVJNUEtHU0ZYX0ZQVSA9ICIke0AgKCctJXMnICAgICAgICAlIGQuZ2V0VmFyKCdUVU5FX0NDQVJHU19NRlBVJywgVHJ1ZSkuc3BsaXQoKVstMV0pIGlmIChkLmdldFZhcignVFVORV9DQ0FSR1NfTUZQVScsIFRydWUpICE9ICcnKSBlbHNlICcnfSIKK0FSTVBLR1NGWF9GUFUgPSAiJHtAICgnLSVzJyAgICAgICAgJSBkLmdldFZhcignVFVORV9DQ0FSR1NfTUZQVScsIFRydWUpLnNwbGl0KClbLTFdLnJlcGxhY2UoJ3ZmcHYzLWQxNicsICd2ZnB2M2QxNicpKSBpZiAoZC5nZXRWYXIoJ1RVTkVfQ0NBUkdTX01GUFUnLCBUcnVlKSAhPSAnJykgZWxzZSAnJ30iCiAKIFRVTkVWQUxJRFtjYWxsY29udmVudGlvbi1oYXJkXSA9ICJFbmFibGUgRUFCSSBoYXJkIGZsb2F0IGNhbGwgY29udmVudGlvbiwgcmVxdWlyZXMgVkZQLiIKIFRVTkVfQ0NBUkdTX01GTE9BVCA9ICIke0AgYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnY2FsbGNvbnZlbnRpb24taGFyZCcsICdoYXJkJywgJ3NvZnRmcCcsIGQpIGlmIChkLmdldFZhcignVFVORV9DQ0FSR1NfTUZQVScsIFRydWUpICE9ICcnKSBlbHNlICcnIH0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taXBzL1JFQURNRSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL21pcHMvUkVBRE1FCmluZGV4IGMzNzVmMzEuLjYyZmExNTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL21pcHMvUkVBRE1FCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL21pcHMvUkVBRE1FCkBAIC0xLDMgKzEsNiBAQAorMjAxNi8wOS8zMCAtIFp1YmFpciBMdXRmdWxsYWggS2FrYWtoZWwgPFp1YmFpci5LYWtha2hlbEBpbWd0ZWMuY29tPgorICAtIEFkZCBSZWxlYXNlIDYgc3VwcG9ydAorCiAyMDEyLzAzLzMwIC0gTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgogICAtIEluaXRpYWwgVmVyc2lvbgogCkBAIC02LDkgKzksMTQgQEAKICAqKSBIYXJkd2FyZS9Tb2Z0d2FyZSBGbG9hdGluZyBQb2ludAogICopIG8zMiwgbjMyLCBuNjQgQUJJCiAKK1JlbGVhc2UgNiBvZiB0aGUgSVNBIGlzIGEgbWFqb3IgcmV2aXNpb24gYW5kIGRvZXNuJ3QgYnVpbGQgdXAgb24gcHJldmlvdXMKK3JlbGVhc2VzIG9mIHRoZSBJU0EuCisKK0ZvciBtb3JlIGRldGFpbHMgYWJvdXQgdHVwbGVzLCBjaGVjayBodHRwczovL3dpa2kuZGViaWFuLm9yZy9NdWx0aWFyY2gvVHVwbGVzCisKIFRVTkVfQVJDSCwgdGhlIEdOVSBjYW5vbmljYWwgYXJjaCwgaXMgZGVmaW5lZCBhczoKIAotbWlwcyR7TUlQU1BLR1NGWF9CWVRFfSR7TUlQU1BLR1NGWF9FTkRJQU59CisibWlwcyR7TUlQU1BLR1NGWF8zMlI2fSR7TUlQU1BLR1NGWF82NFI2fSR7TUlQU1BLR1NGWF9CWVRFfSR7TUlQU1BLR1NGWF9SNn0ke01JUFNQS0dTRlhfRU5ESUFOfSIKIAogVGhlIHBhY2thZ2UgYXJjaCBpcyBkZWZpbmVkIGluIHN1Y2ggYSB3YXkgdG8gZ2VuZXJhdGVkIGEgc3RhbmRhcmQgbmFtaW5nCiBzY2hlbWUuICBUaGUgc2NoZW1lIGlzOiA8bWlwcyB2YXJpYW50PlstbmZdWy1uMzJdCkBAIC0zNCwzICs0MiwxMiBAQAogTUlQU1BLR1NGWF9BQkkgLSBUaGlzIGlzIHVzZWQgdG8gc3BlY2lmeSBhbiBhbHRlcm5hdGl2ZSBBQkkgd2hlbiB0aGUgcHJldmlvdXMKIHZhbHVlcyBhcmUgbm90IGVub3VnaCB0byBkaXN0cmluZ3Vpc2ggdGhlIHBhY2thZ2UuICAiLW4zMiIgaXMgYWRkZWQgd2hlbgogYnVpbGRpbmcgZm9yIE4zMiBBQkkuCisKK01JUFNQS0dTRlhfUjYgLSBUaGlzIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgcHJlc2VuY2Ugb2YgcmVsZWFzZSA2LgorInI2IiBpcyBhZGRlZCBpbiB0aGUgdHVwbGUgZm9yIHJlbGVhc2UgNiBvZiB0aGUgaXNhLgorCitNSVBTUEtHU0ZYXzY0UjYgLSBUaGlzIGlzIHVzZWQgdG8gc3BlY2lmeSAiaXNhIiBpbiB0aGUgdHVwbGUuCitSZWxlYXNlIDYgb253YXJkcyB3ZSB1c2UgIm1pcHNpc2E2NCIgaW5zdGVhZCBvZiBqdXN0ICJtaXBzNjQiLgorCitNSVBTUEtHU0ZYXzMyUjYgLSAgVGhpcyBpcyB1c2VkIHRvIHNwZWNpZnkgImlzYTMyIiBpbiB0aGUgdHVwbGUuCitSZWxlYXNlIDYgb253YXJkcyB3ZSB1c2UgIm1pcHNpc2EzMiIgaW5zdGVhZCBvZiBqdXN0ICJtaXBzIi4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL21pcHMvYXJjaC1taXBzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL21pcHMvYXJjaC1taXBzLmluYwppbmRleCA4OWQxN2U3Li42MDY5Y2ExIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taXBzL2FyY2gtbWlwcy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvbWlwcy9hcmNoLW1pcHMuaW5jCkBAIC0yMCw2ICsyMCw5IEBACiBBQklFWFRFTlNJT04gLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ24zMicsICduMzInLCAnJyAsZCl9IgogVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ24zMicsICcgLW1hYmk9bjMyJywgJycsIGQpfSIKIAorIyB1c2VyIG1vZGUgcWVtdSBkb2Vzbid0IHN1cHBvcnQgbWlwczY0IG4zMjogIkludmFsaWQgRUxGIGltYWdlIGZvciB0aGlzIGFyY2hpdGVjdHVyZSIKK01BQ0hJTkVfRkVBVFVSRVNfQkFDS0ZJTExfQ09OU0lERVJFRF9hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ24zMicsICdxZW11LXVzZXJtb2RlJywgJycsIGQpfSIKKwogVFVORVZBTElEW242NF0gPSAiTUlQUzY0IG42NCBBQkkiCiBUVU5FQ09ORkxJQ1RTW242NF0gPSAibzMyIG4zMiIKIFRVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICduNjQnLCAnIC1tYWJpPTY0JywgJycsIGQpfSIKQEAgLTI5LDE0ICszMiwyMiBAQAogVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2ZwdS1oYXJkJywgJyAtbWhhcmQtZmxvYXQnLCAnIC1tc29mdC1mbG9hdCcsIGQpfSIKIFRBUkdFVF9GUFUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnZnB1LWhhcmQnLCAnJywgJ3NvZnQnLCBkKX0iCiAKKyMgTUlQUyByNiBBQkkKK1RVTkVWQUxJRFtyNl0gPSAiVXNlIHI2IgorVFVORVZBTElEW21pcHNpc2E2NHI2XSA9ICJVc2UgNjRyNiIKK1RVTkVWQUxJRFttaXBzaXNhMzJyNl0gPSAiVXNlIDMycjYiCisKICMgUGFja2FnZSBuYW1pbmcKIE1JUFNQS0dTRlhfRU5ESUFOID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2JpZ2VuZGlhbicsICcnLCAnZWwnLCBkKX0iCiBNSVBTUEtHU0ZYX0JZVEUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnbjY0JyAsICc2NCcsICcnLCBkKX0iCiBNSVBTUEtHU0ZYX0JZVEUgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ24zMicgLCAnNjQnLCAnJywgZCl9IgogTUlQU1BLR1NGWF9GUFUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnZnB1LWhhcmQnICwgJycsICctbmYnLCBkKX0iCiBNSVBTUEtHU0ZYX0FCSSA9ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICduMzInLCAnLW4zMicsICcnLCBkKX0iCitNSVBTUEtHU0ZYX1I2ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ3I2JywgJ3I2JywgJycsIGQpfSIKK01JUFNQS0dTRlhfNjRSNiA9ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdtaXBzaXNhNjRyNicsICdpc2EnLCAnJywgZCl9IgorTUlQU1BLR1NGWF8zMlI2ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ21pcHNpc2EzMnI2JywgJ2lzYTMyJywgJycsIGQpfSIKIAotVFVORV9BUkNIID0gIm1pcHMke01JUFNQS0dTRlhfQllURX0ke01JUFNQS0dTRlhfRU5ESUFOfSIKK1RVTkVfQVJDSCA9ICJtaXBzJHtNSVBTUEtHU0ZYXzMyUjZ9JHtNSVBTUEtHU0ZYXzY0UjZ9JHtNSVBTUEtHU0ZYX0JZVEV9JHtNSVBTUEtHU0ZYX1I2fSR7TUlQU1BLR1NGWF9FTkRJQU59IgogVFVORV9QS0dBUkNIID0gIiR7TUlQU1BLR1NGWF9WQVJJQU5UX3R1bmUtJHtERUZBVUxUVFVORX19JHtNSVBTUEtHU0ZYX0ZQVX0ke01JUFNQS0dTRlhfQUJJfSIKIAogIyBCYXNlIHR1bmVzCkBAIC0xMDAsMyArMTExLDI5IEBACiBCQVNFX0xJQl90dW5lLW1pcHM2NGVsLW5mID0gImxpYjY0IgogTUlQU1BLR1NGWF9WQVJJQU5UX3R1bmUtbWlwczY0ZWwtbmYgPSAiJHtUVU5FX0FSQ0h9IgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLW1pcHM2NGVsLW5mID0gIm1pcHM2NGVsLW5mIgorCisjIE1JUFMgNjQgKyBvMzIKK0FWQUlMVFVORVMgKz0gIm1pcHM2NC1vMzIgbWlwczY0ZWwtbzMyIgorCitUVU5FX0ZFQVRVUkVTX3R1bmUtbWlwczY0LW8zMiA9ICJvMzIgYmlnZW5kaWFuIGZwdS1oYXJkIgorQkFTRV9MSUJfdHVuZS1taXBzNjQtbzMyID0gImxpYiIKK01JUFNQS0dTRlhfVkFSSUFOVF90dW5lLW1pcHM2NC1vMzIgPSAiJHtUVU5FX0FSQ0h9IgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLW1pcHM2NC1vMzIgPSAibWlwcyBtaXBzNjQtbzMyIgorCitUVU5FX0ZFQVRVUkVTX3R1bmUtbWlwczY0ZWwtbzMyID0gIm8zMiBmcHUtaGFyZCIKK0JBU0VfTElCX3R1bmUtbWlwczY0ZWwtbzMyID0gImxpYiIKK01JUFNQS0dTRlhfVkFSSUFOVF90dW5lLW1pcHM2NGVsLW8zMiA9ICIke1RVTkVfQVJDSH0iCitQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtbWlwczY0ZWwtbzMyID0gIm1pcHNlbCBtaXBzNjRlbC1vMzIgbWlwczY0ZWwtbzMyIgorCisjIE1JUFMgNjQgbzMyIGFuZCBTb2Z0IEZsb2F0CitBVkFJTFRVTkVTICs9ICJtaXBzNjQtbmYtbzMyIG1pcHM2NGVsLW5mLW8zMiIKKworVFVORV9GRUFUVVJFU190dW5lLW1pcHM2NC1uZi1vMzIgPSAibzMyIGJpZ2VuZGlhbiIKK0JBU0VfTElCX3R1bmUtbWlwczY0LW5mLW8zMiA9ICJsaWIiCitNSVBTUEtHU0ZYX1ZBUklBTlRfdHVuZS1taXBzNjQtbmYtbzMyID0gIiR7VFVORV9BUkNIfSIKK1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1taXBzNjQtbmYtbzMyID0gIm1pcHMtbmYgbWlwczY0LW5mLW8zMiIKKworVFVORV9GRUFUVVJFU190dW5lLW1pcHM2NGVsLW5mLW8zMiA9ICJvMzIiCitCQVNFX0xJQl90dW5lLW1pcHM2NGVsLW5mLW8zMiA9ICJsaWIiCitNSVBTUEtHU0ZYX1ZBUklBTlRfdHVuZS1taXBzNjRlbC1uZi1vMzIgPSAiJHtUVU5FX0FSQ0h9IgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLW1pcHM2NGVsLW5mLW8zMiA9ICJtaXBzZWwtbmYgbWlwczY0ZWwtbmYtbzMyIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvbWlwcy9mZWF0dXJlLW1pcHMtbWlwczE2ZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taXBzL2ZlYXR1cmUtbWlwcy1taXBzMTZlLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTAxMWRlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvbWlwcy9mZWF0dXJlLW1pcHMtbWlwczE2ZS5pbmMKQEAgLTAsMCArMSwxNyBAQAorVFVORVZBTElEW21pcHMxNmVdID0gIkJ1aWxkIHRhcmdldCBwYWNrYWdlcyB3aXRoIE1JUFMxNmUgQVNFIGluc3RydWN0aW9ucyIKK01JUFNfTUlQUzE2RV9PUFQgPSAiJHtAWydtbm8tbWlwczE2JywgJ21pcHMxNiddW2QuZ2V0VmFyKCdNSVBTX0lOU1RSVUNUSU9OX1NFVCcsIFRydWUpID09ICdtaXBzMTZlJ119IgorVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ21pcHMxNmUnLCAnIC0ke01JUFNfTUlQUzE2RV9PUFR9JywgJycsIGQpfSIKKworTUlQU1BLR1NGWF9NSVBTMTZFIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdtaXBzMTZlJywgJy1tMTYnLCAnJywgZCkgaWYgZC5nZXRWYXIoJ01JUFNfTUlQUzE2RV9PUFQnLCBUcnVlKSA9PSAnbWlwczE2JyBlbHNlICcnfSIKKworIyBXaGV0aGVyIHRvIGNvbXBpbGUgd2l0aCBjb2RlIHRvIGFsbG93IGludGVyd29ya2luZyBiZXR3ZWVuIHRoZSB0d28KKyMgaW5zdHJ1Y3Rpb24gc2V0cy4gVGhpcyBhbGxvd3MgbWlwczE2ZSBjb2RlIHRvIGJlIGV4ZWN1dGVkIG9uIGEgcHJpbWFyaWx5CisjIG1pcHMzMi82NCBzeXN0ZW0gYW5kIHZpY2UgdmVyc2EuIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgRElTVFJPcyBub3QKKyMgdHVybiB0aGlzIG9mZiAtIHRoZSBhY3R1YWwgY29zdCBpcyB2ZXJ5IHNtYWxsLgorVFVORVZBTElEW25vLWludGVybGluay1jb21wcmVzc2VkXSA9ICJEaXNhYmxlIG1peGluZyBvZiBzdGFuZGFyZCBhbmQgTUlQUzE2ZSBjb2RlIgorTUlQUzE2X1RVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICduby1pbnRlcmxpbmstY29tcHJlc3NlZCcsICcgLW1uby1pbnRlcmxpbmstY29tcHJlc3NlZCcsICcgLW1pbnRlcmxpbmstY29tcHJlc3NlZCcsIGQpfSIKK1RVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdtaXBzMTZlJywgJyAke01JUFMxNl9UVU5FX0NDQVJHU30nLCAnJywgZCl9IgorT1ZFUlJJREVTIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdtaXBzMTZlJywgJzptaXBzMTZlJywgJycsIGQpfSIKKworIyBzaG93IHN0YXR1cyAoaWYgY29tcGlsaW5nIGluIE1JUFMxNmUgbW9kZSkKK0JVSUxEQ0ZHX1ZBUlMgKz0gIiR7QFsnJywgJ01JUFNfSU5TVFJVQ1RJT05fU0VUJ11bZC5nZXRWYXIoJ01JUFNfSU5TVFJVQ1RJT05fU0VUJywgVHJ1ZSkgPT0gJ21pcHMxNmUnXX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taXBzL3R1bmUtbWlwcy0yNGsuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvbWlwcy90dW5lLW1pcHMtMjRrLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MjhhY2Q0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvbWlwcy90dW5lLW1pcHMtMjRrLmluYwpAQCAtMCwwICsxLDUxIEBACitERUZBVUxUVFVORSA/PSAibWlwczMycjItMjRrYyIKKworTUlQU1BLR1NGWF9NSVBTMTZFID8/PSAiIgorCityZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtbWlwczMycjIuaW5jCityZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL21pcHMvZmVhdHVyZS1taXBzLW1pcHMxNmUuaW5jCisKKworVFVORVZBTElEWzI0a2NdID0gIkVuYWJsZSBNSVBTIDI0S2MgcHJvY2Vzc29yIG9wdGltaXphdGlvbnMiCitUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiMjRrYyIsICIgLW10dW5lPTI0a2MiLCAiIiwgZCl9IgorVFVORVZBTElEWzI0a2VjXSA9ICJFbmFibGUgTUlQUyAyNEtFYyBwcm9jZXNzb3Igb3B0aW1pemF0aW9ucywgaW5jbHVkaW5nIERTUCIKK1RVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICIyNGtlYyIsICIgLW10dW5lPTI0a2VjIC1tZHNwIiwgIiIsIGQpfSIKKworCitBVkFJTFRVTkVTICs9ICJtaXBzMzJyMi0yNGtjICAgbWlwczMycjItMjRrZWMgICBtaXBzMzJyMi0yNGtlYy1tMTYiCitBVkFJTFRVTkVTICs9ICJtaXBzMzJyMmVsLTI0a2MgbWlwczMycjJlbC0yNGtlYyBtaXBzMzJyMmVsLTI0a2VjLW0xNiIKKworIyBiaWcgZW5kaWFuOiBrYywga2MrZHNwPWtlYywga2MrZHNwK21pcHMxNmU9a2VjLW0xNgorVFVORV9GRUFUVVJFU190dW5lLW1pcHMzMnIyLTI0a2MgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtbWlwczMycjItbmZ9IDI0a2MiCitUVU5FX0ZFQVRVUkVTX3R1bmUtbWlwczMycjItMjRrZWMgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtbWlwczMycjItbmZ9IDI0a2VjIgorVFVORV9GRUFUVVJFU190dW5lLW1pcHMzMnIyLTI0a2VjLW0xNiA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS1taXBzMzJyMi0yNGtlY30gbWlwczE2ZSIKKworTUlQU1BLR1NGWF9WQVJJQU5UX3R1bmUtbWlwczMycjItMjRrYyA9ICJtaXBzMzJyMi0yNGtjIgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLW1pcHMzMnIyLTI0a2MgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtbWlwczMycjItbmZ9IG1pcHMzMnIyLTI0a2MtbmYiCitRRU1VX0VYVFJBT1BUSU9OU19taXBzMzJyMi0yNGtjLW5mID0gIiAtY3B1IDI0S2MiCisKK01JUFNQS0dTRlhfVkFSSUFOVF90dW5lLW1pcHMzMnIyLTI0a2VjID0gIm1pcHMzMnIyLTI0a2VjIgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLW1pcHMzMnIyLTI0a2VjID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLW1pcHMzMnIyLTI0a2N9IG1pcHMzMnIyLTI0a2VjLW5mIgorUUVNVV9FWFRSQU9QVElPTlNfbWlwczMycjItMjRrZWMtbmYgPSAiIC1jcHUgMjRLRWMiCisKK01JUFNQS0dTRlhfVkFSSUFOVF90dW5lLW1pcHMzMnIyLTI0a2VjLW0xNiA9ICJtaXBzMzJyMi0yNGtlYyR7TUlQU1BLR1NGWF9NSVBTMTZFfSIKK1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1taXBzMzJyMi0yNGtlYy1tMTYgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtbWlwczMycjItMjRrZWN9IG1pcHMzMnIyLTI0a2VjLW0xNi1uZiIKK1FFTVVfRVhUUkFPUFRJT05TX21pcHMzMnIyLTI0a2VjLW0xNi1uZiA9ICIgLWNwdSAyNEtFYyIKKworCisjIGxpdHRsZSBlbmRpYW46IGtjLCBrYytkc3A9a2VjLCBrYytkc3ArbWlwczE2ZT1rZWMtbTE2CitUVU5FX0ZFQVRVUkVTX3R1bmUtbWlwczMycjJlbC0yNGtjID0gIiR7VFVORV9GRUFUVVJFU190dW5lLW1pcHMzMnIyZWwtbmZ9IDI0a2MiCitUVU5FX0ZFQVRVUkVTX3R1bmUtbWlwczMycjJlbC0yNGtlYyA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS1taXBzMzJyMmVsLW5mfSAyNGtlYyIKK1RVTkVfRkVBVFVSRVNfdHVuZS1taXBzMzJyMmVsLTI0a2VjLW0xNiA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS1taXBzMzJyMmVsLTI0a2VjfSBtaXBzMTZlIgorCitNSVBTUEtHU0ZYX1ZBUklBTlRfdHVuZS1taXBzMzJyMmVsLTI0a2MgPSAibWlwczMycjJlbC0yNGtjIgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLW1pcHMzMnIyZWwtMjRrYyA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1taXBzMzJyMmVsLW5mfSBtaXBzMzJyMmVsLTI0a2MtbmYiCitRRU1VX0VYVFJBT1BUSU9OU19taXBzMzJyMmVsLTI0a2MtbmYgPSAiIC1jcHUgMjRLYyIKKworTUlQU1BLR1NGWF9WQVJJQU5UX3R1bmUtbWlwczMycjJlbC0yNGtlYyA9ICJtaXBzMzJyMmVsLTI0a2VjIgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLW1pcHMzMnIyZWwtMjRrZWMgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtbWlwczMycjJlbC0yNGtjfSBtaXBzMzJyMmVsLTI0a2VjLW5mIgorUUVNVV9FWFRSQU9QVElPTlNfbWlwczMycjJlbC0yNGtlYy1uZiA9ICIgLWNwdSAyNEtFYyIKKworTUlQU1BLR1NGWF9WQVJJQU5UX3R1bmUtbWlwczMycjJlbC0yNGtlYy1tMTYgPSAibWlwczMycjJlbC0yNGtlYyR7TUlQU1BLR1NGWF9NSVBTMTZFfSIKK1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1taXBzMzJyMmVsLTI0a2VjLW0xNiA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1taXBzMzJyMmVsLTI0a2VjfSBtaXBzMzJyMmVsLTI0a2VjLW0xNi1uZiIKK1FFTVVfRVhUUkFPUFRJT05TX21pcHMzMnIyZWwtMjRrZWMtbTE2LW5mID0gIiAtY3B1IDI0S0VjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcG93ZXJwYy9hcmNoLXBvd2VycGM2NC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9wb3dlcnBjL2FyY2gtcG93ZXJwYzY0LmluYwppbmRleCA0OTQxOWI2Li5mNzUxYzZiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9wb3dlcnBjL2FyY2gtcG93ZXJwYzY0LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9wb3dlcnBjL2FyY2gtcG93ZXJwYzY0LmluYwpAQCAtNyw2ICs3LDkgQEAKIFRVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdtNjQnLCAnIC1tNjQnLCAnJywgZCl9IgogVFVORV9BUkNIIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsIFsgJ202NCcgXSwgJ3Bvd2VycGM2NCcsICcnLCBkKX0iCiAKKyMgdXNlciBtb2RlIHFlbXUgZG9lc24ndCBzdXBwb3J0IHBwYzY0CitNQUNISU5FX0ZFQVRVUkVTX0JBQ0tGSUxMX0NPTlNJREVSRURfYXBwZW5kID0gIiAke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdtNjQnLCAncWVtdS11c2VybW9kZScsICcnLCBkKX0iCisKIEFWQUlMVFVORVMgKz0gInBvd2VycGM2NCIKIFRVTkVfRkVBVFVSRVNfdHVuZS1wb3dlcnBjNjQgPSAibTY0IGZwdS1oYXJkIgogQkFTRV9MSUJfdHVuZS1wb3dlcnBjNjQgPSAibGliNjQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXUuaW5jCmluZGV4IGY0NGRiZTYuLjJiYzRkYzIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXUuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXUuaW5jCkBAIC0yOSwzICsyOSw1IEBACiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3BuLWxpbnV4LXlvY3RvID0gIiBmZWF0dXJlcy9uZnNkL25mc2QtZW5hYmxlLnNjYyIKIAogTUFDSElORV9FWFRSQV9SUkVDT01NRU5EUyArPSAicm5nLXRvb2xzIgorCitJTUFHRV9DTEFTU0VTICs9ICJxZW11Ym9vdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXVib290LW1pcHMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdWJvb3QtbWlwcy5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGM2MGNmMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXVib290LW1pcHMuaW5jCkBAIC0wLDAgKzEsOCBAQAorIyBGb3IgcnVucWVtdQorSU1BR0VfQ0xBU1NFUyArPSAicWVtdWJvb3QiCitRQl9NRU0gPSAiLW0gMjU2IgorUUJfTUFDSElORSA9ICItbWFjaGluZSBtYWx0YSIKK1FCX0tFUk5FTF9DTURMSU5FX0FQUEVORCA9ICJjb25zb2xlPXR0eVMwIGNvbnNvbGU9dHR5IgorIyBBZGQgdGhlICd2aXJ0aW8tcm5nLXBjaScgZGV2aWNlIG90aGVyd2lzZSB0aGUgZ3Vlc3QgbWF5IHJ1biBvdXQgb2YgZW50cm9weQorUUJfT1BUX0FQUEVORCA9ICItdmdhIGNpcnJ1cyAtc2hvdy1jdXJzb3IgLXVzYiAtdXNiZGV2aWNlIHRhYmxldCAtZGV2aWNlIHZpcnRpby1ybmctcGNpIgorUUJfU1lTVEVNX05BTUUgPSAicWVtdS1zeXN0ZW0tJHtUVU5FX0FSQ0h9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdWJvb3QteDg2LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXVib290LXg4Ni5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZhYzk4MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXVib290LXg4Ni5pbmMKQEAgLTAsMCArMSwxNSBAQAorIyBGb3IgcnVucWVtdQorSU1BR0VfQ0xBU1NFUyArPSAicWVtdWJvb3QiCitRQl9TWVNURU1fTkFNRV94ODYgPSAicWVtdS1zeXN0ZW0taTM4NiIKK1FCX0NQVV94ODYgPSAiLWNwdSBxZW11MzIiCitRQl9DUFVfS1ZNX3g4NiA9ICItY3B1IGt2bTMyIgorCitRQl9TWVNURU1fTkFNRV94ODYtNjQgPSAicWVtdS1zeXN0ZW0teDg2XzY0IgorUUJfQ1BVX3g4Ni02NCA9ICItY3B1IGNvcmUyZHVvIgorUUJfQ1BVX0tWTV94ODYtNjQgPSAiLWNwdSBrdm02NCIKKworUUJfQVVESU9fRFJWID0gImFsc2EiCitRQl9BVURJT19PUFQgPSAiLXNvdW5kaHcgYWM5NyxlczEzNzAiCitRQl9LRVJORUxfQ01ETElORV9BUFBFTkQgPSAidmdhPTAgdXZlc2FmYi5tb2RlX29wdGlvbj02NDB4NDgwLTMyIG9wcm9maWxlLnRpbWVyPTEgdXZlc2FmYi50YXNrX3RpbWVvdXQ9LTEiCisjIEFkZCB0aGUgJ3ZpcnRpby1ybmctcGNpJyBkZXZpY2Ugb3RoZXJ3aXNlIHRoZSBndWVzdCBtYXkgcnVuIG91dCBvZiBlbnRyb3B5CitRQl9PUFRfQVBQRU5EID0gIi12Z2Egdm13YXJlIC1zaG93LWN1cnNvciAtdXNiIC11c2JkZXZpY2UgdGFibGV0IC1kZXZpY2UgdmlydGlvLXJuZy1wY2kiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLW1pcHMzMnIyLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtbWlwczMycjIuaW5jCmluZGV4IDBlOTVlYzguLjVlMzk4Y2IgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtbWlwczMycjIuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtbWlwczMycjIuaW5jCkBAIC02LDYgKzYsNyBAQAogVFVORUNPTkZMSUNUU1ttaXBzMzJyMl0gPSAibjY0IG4zMiIKIFRVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdtaXBzMzJyMicsICcgLW1hcmNoPW1pcHMzMnIyJywgJycsIGQpfSIKIAorIyBoYXJkIGZsb2F0CiBBVkFJTFRVTkVTICs9ICJtaXBzMzJyMiBtaXBzMzJyMmVsIgogCiBUVU5FX0ZFQVRVUkVTX3R1bmUtbWlwczMycjIgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtbWlwc30gbWlwczMycjIiCkBAIC0xNSwzICsxNiwxNCBAQAogVFVORV9GRUFUVVJFU190dW5lLW1pcHMzMnIyZWwgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtbWlwc2VsfSBtaXBzMzJyMiIKIE1JUFNQS0dTRlhfVkFSSUFOVF90dW5lLW1pcHMzMnIyZWwgPSAibWlwczMycjJlbCIKIFBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1taXBzMzJyMmVsID0gIm1pcHNlbCBtaXBzMzJlbCBtaXBzMzJyMmVsIgorCisjIHNvZnQgZmxvYXQKK0FWQUlMVFVORVMgKz0gIm1pcHMzMnIyLW5mIG1pcHMzMnIyZWwtbmYiCisKK1RVTkVfRkVBVFVSRVNfdHVuZS1taXBzMzJyMi1uZiA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS1taXBzLW5mfSBtaXBzMzJyMiIKK01JUFNQS0dTRlhfVkFSSUFOVF90dW5lLW1pcHMzMnIyLW5mID0gIm1pcHMzMnIyIgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLW1pcHMzMnIyLW5mID0gIm1pcHMtbmYgbWlwczMyLW5mIG1pcHMzMnIyLW5mIgorCitUVU5FX0ZFQVRVUkVTX3R1bmUtbWlwczMycjJlbC1uZiA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS1taXBzZWwtbmZ9IG1pcHMzMnIyIgorTUlQU1BLR1NGWF9WQVJJQU5UX3R1bmUtbWlwczMycjJlbC1uZiA9ICJtaXBzMzJyMmVsIgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLW1pcHMzMnIyZWwtbmYgPSAibWlwc2VsLW5mIG1pcHMzMmVsLW5mIG1pcHMzMnIyZWwtbmYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLW1pcHMzMnI2LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtbWlwczMycjYuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3MjEzMTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLW1pcHMzMnI2LmluYwpAQCAtMCwwICsxLDI5IEBACitERUZBVUxUVFVORSA/PSAibWlwc2lzYTMycjZlbCIKKworcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS9taXBzL2FyY2gtbWlwcy5pbmMKKworVFVORVZBTElEW21pcHNpc2EzMnI2XSA9ICJFbmFibGUgbWlwc2lzYTMycjYgc3BlY2lmaWMgcHJvY2Vzc29yIG9wdGltaXphdGlvbnMiCitUVU5FQ09ORkxJQ1RTW21pcHNpc2EzMnI2XSA9ICJuNjQgbjMyIgorVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ21pcHNpc2EzMnI2JywgJyAtbWFyY2g9bWlwczMycjYnLCAnJywgZCl9IgorCisjIEJhc2UgVHVuZXMKK0FWQUlMVFVORVMgKz0gIm1pcHNpc2EzMnI2IG1pcHNpc2EzMnI2ZWwiCisKK1RVTkVfRkVBVFVSRVNfdHVuZS1taXBzaXNhMzJyNiA9ICJiaWdlbmRpYW4gbWlwc2lzYTMycjYgZnB1LWhhcmQgcjYiCitNSVBTUEtHU0ZYX1ZBUklBTlRfdHVuZS1taXBzaXNhMzJyNiA9ICIke1RVTkVfQVJDSH0iCitQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtbWlwc2lzYTMycjYgPSAibWlwc2lzYTMycjYiCisKK1RVTkVfRkVBVFVSRVNfdHVuZS1taXBzaXNhMzJyNmVsID0gImZwdS1oYXJkIG1pcHNpc2EzMnI2IHI2IgorTUlQU1BLR1NGWF9WQVJJQU5UX3R1bmUtbWlwc2lzYTMycjZlbCA9ICIke1RVTkVfQVJDSH0iCitQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtbWlwc2lzYTMycjZlbCA9ICJtaXBzaXNhMzJyNmVsIgorCisjIFNvZnQgRmxvYXQKK0FWQUlMVFVORVMgKz0gIm1pcHNpc2EzMnI2LW5mIG1pcHNpc2EzMnI2ZWwtbmYiCisKK1RVTkVfRkVBVFVSRVNfdHVuZS1taXBzaXNhMzJyNi1uZiA9ICJiaWdlbmRpYW4gbWlwc2lzYTMycjYgcjYiCitNSVBTUEtHU0ZYX1ZBUklBTlRfdHVuZS1taXBzaXNhMzJyNi1uZiA9ICIke1RVTkVfQVJDSH0iCitQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtbWlwc2lzYTMycjYtbmYgPSAibWlwc2lzYTMycjYtbmYiCisKK1RVTkVfRkVBVFVSRVNfdHVuZS1taXBzaXNhMzJyNmVsLW5mID0gIm1pcHNpc2EzMnI2IHI2IgorTUlQU1BLR1NGWF9WQVJJQU5UX3R1bmUtbWlwc2lzYTMycjZlbC1uZiA9ICIke1RVTkVfQVJDSH0iCitQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtbWlwc2lzYTMycjZlbC1uZiA9ICJtaXBzaXNhMzJyNmVsLW5mIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1taXBzNjRyMi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLW1pcHM2NHIyLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NWQ3NTM1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1taXBzNjRyMi5pbmMKQEAgLTAsMCArMSw4NCBAQAorREVGQVVMVFRVTkUgPz0gIm1pcHM2NHIyIgorCityZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtbWlwczY0LmluYworCitUVU5FVkFMSURbbWlwczY0cjJdID0gIkVuYWJsZSBtaXBzNjRyMiBzcGVjaWZpYyBwcm9jZXNzb3Igb3B0aW1pemF0aW9ucyIKK1RVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdtaXBzNjRyMicsICcgLW1hcmNoPW1pcHM2NHIyJywgJycsIGQpfSIKKworIyBCYXNlIHR1bmVzCitBVkFJTFRVTkVTICs9ICJtaXBzNjRyMiBtaXBzNjRyMmVsIgorCitUVU5FX0ZFQVRVUkVTX3R1bmUtbWlwczY0cjIgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtbWlwczY0fSBtaXBzNjRyMiIKK0JBU0VfTElCX3R1bmUtbWlwczY0cjIgPSAibGliNjQiCitNSVBTUEtHU0ZYX1ZBUklBTlRfdHVuZS1taXBzNjRyMiA9ICJtaXBzNjRyMiIKK1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1taXBzNjRyMiA9ICJtaXBzNjQgbWlwczY0cjIiCisKK1RVTkVfRkVBVFVSRVNfdHVuZS1taXBzNjRyMmVsID0gIiR7VFVORV9GRUFUVVJFU190dW5lLW1pcHM2NGVsfSBtaXBzNjRyMiIKK0JBU0VfTElCX3R1bmUtbWlwczY0cjJlbCA9ICJsaWI2NCIKK01JUFNQS0dTRlhfVkFSSUFOVF90dW5lLW1pcHM2NHIyZWwgPSAibWlwczY0cjJlbCIKK1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1taXBzNjRyMmVsID0gIm1pcHM2NGVsIG1pcHM2NHIyZWwiCisKKyMgTUlQUyA2NHIyIFNvZnQgRmxvYXQKK0FWQUlMVFVORVMgKz0gIm1pcHM2NHIyLW5mIG1pcHM2NHIyZWwtbmYiCisKK1RVTkVfRkVBVFVSRVNfdHVuZS1taXBzNjRyMi1uZiA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS1taXBzNjQtbmZ9IG1pcHM2NHIyIgorQkFTRV9MSUJfdHVuZS1taXBzNjRyMi1uZiA9ICJsaWI2NCIKK01JUFNQS0dTRlhfVkFSSUFOVF90dW5lLW1pcHM2NHIyLW5mID0gIiR7VFVORV9BUkNIfSIKK1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1taXBzNjRyMi1uZiA9ICJtaXBzNjQtbmYgbWlwczY0cjItbmYiCisKK1RVTkVfRkVBVFVSRVNfdHVuZS1taXBzNjRyMmVsLW5mID0gIiR7VFVORV9GRUFUVVJFU190dW5lLW1pcHM2NGVsLW5mfSBtaXBzNjRyMiIKK0JBU0VfTElCX3R1bmUtbWlwczY0cjJlbC1uZiA9ICJsaWI2NCIKK01JUFNQS0dTRlhfVkFSSUFOVF90dW5lLW1pcHM2NHIyZWwtbmYgPSAiJHtUVU5FX0FSQ0h9IgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLW1pcHM2NHIyZWwtbmYgPSAibWlwczY0ZWwtbmYgbWlwczY0cjJlbC1uZiIKKworIyBNSVBTIDY0cjIgbjMyCitBVkFJTFRVTkVTICs9ICJtaXBzNjRyMi1uMzIgbWlwczY0cjJlbC1uMzIiCisKK1RVTkVfRkVBVFVSRVNfdHVuZS1taXBzNjRyMi1uMzIgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtbWlwczY0LW4zMn0gbWlwczY0cjIiCitCQVNFX0xJQl90dW5lLW1pcHM2NHIyLW4zMiA9ICJsaWIzMiIKK01JUFNQS0dTRlhfVkFSSUFOVF90dW5lLW1pcHM2NHIyLW4zMiA9ICIke1RVTkVfQVJDSH0iCitQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtbWlwczY0cjItbjMyID0gIm1pcHM2NC1uMzIgbWlwczY0cjItbjMyIgorCitUVU5FX0ZFQVRVUkVTX3R1bmUtbWlwczY0cjJlbC1uMzIgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtbWlwczY0ZWwtbjMyfSBtaXBzNjRyMiIKK0JBU0VfTElCX3R1bmUtbWlwczY0cjJlbC1uMzIgPSAibGliMzIiCitNSVBTUEtHU0ZYX1ZBUklBTlRfdHVuZS1taXBzNjRyMmVsLW4zMiA9ICIke1RVTkVfQVJDSH0iCitQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtbWlwczY0cjJlbC1uMzIgPSAibWlwczY0ZWwtbjMyIG1pcHM2NHIyZWwtbjMyIgorCisjIE1JUFMgNjRyMiBuMzIgYW5kIFNvZnQgRmxvYXQKK0FWQUlMVFVORVMgKz0gIm1pcHM2NHIyLW5mLW4zMiBtaXBzNjRyMmVsLW5mLW4zMiIKKworVFVORV9GRUFUVVJFU190dW5lLW1pcHM2NHIyLW5mLW4zMiA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS1taXBzNjQtbmYtbjMyfSBtaXBzNjRyMiIKK0JBU0VfTElCX3R1bmUtbWlwczY0cjItbmYtbjMyID0gImxpYjMyIgorTUlQU1BLR1NGWF9WQVJJQU5UX3R1bmUtbWlwczY0cjItbmYtbjMyID0gIiR7VFVORV9BUkNIfSIKK1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1taXBzNjRyMi1uZi1uMzIgPSAibWlwczY0LW5mLW4zMiBtaXBzNjRyMi1uZi1uMzIiCisKK1RVTkVfRkVBVFVSRVNfdHVuZS1taXBzNjRyMmVsLW5mLW4zMiA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS1taXBzNjRlbC1uZi1uMzJ9IG1pcHM2NHIyIgorQkFTRV9MSUJfdHVuZS1taXBzNjRyMmVsLW5mLW4zMiA9ICJsaWIzMiIKK01JUFNQS0dTRlhfVkFSSUFOVF90dW5lLW1pcHM2NHIyZWwtbmYtbjMyID0gIiR7VFVORV9BUkNIfSIKK1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1taXBzNjRyMmVsLW5mLW4zMiA9ICJtaXBzNjRlbC1uZi1uMzIgbWlwczY0cjJlbC1uZi1uMzIiCisKKyMgTUlQUyA2NHIyIG8zMgorQVZBSUxUVU5FUyArPSAibWlwczY0cjItbzMyIG1pcHM2NHIyZWwtbzMyIgorCitUVU5FX0ZFQVRVUkVTX3R1bmUtbWlwczY0cjItbzMyID0gIiR7VFVORV9GRUFUVVJFU190dW5lLW1pcHM2NC1vMzJ9IG1pcHM2NHIyIgorQkFTRV9MSUJfdHVuZS1taXBzNjRyMi1vMzIgPSAibGliIgorTUlQU1BLR1NGWF9WQVJJQU5UX3R1bmUtbWlwczY0cjItbzMyID0gIiR7VFVORV9BUkNIfSIKK1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1taXBzNjRyMi1vMzIgPSAibWlwcyBtaXBzNjQtbzMyIG1pcHM2NHIyLW8zMiIKKworVFVORV9GRUFUVVJFU190dW5lLW1pcHM2NHIyZWwtbzMyID0gIiR7VFVORV9GRUFUVVJFU190dW5lLW1pcHM2NGVsLW8zMn0gbWlwczY0cjIiCitCQVNFX0xJQl90dW5lLW1pcHM2NHIyZWwtbzMyID0gImxpYiIKK01JUFNQS0dTRlhfVkFSSUFOVF90dW5lLW1pcHM2NHIyZWwtbzMyID0gIiR7VFVORV9BUkNIfSIKK1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1taXBzNjRyMmVsLW8zMiA9ICJtaXBzZWwgbWlwczY0ZWwtbzMyIG1pcHM2NHIyZWwtbzMyIgorCisjIE1JUFMgNjRyMiBvMzIgYW5kIFNvZnQgRmxvYXQKK0FWQUlMVFVORVMgKz0gIm1pcHM2NHIyLW5mLW8zMiBtaXBzNjRyMmVsLW5mLW8zMiIKKworVFVORV9GRUFUVVJFU190dW5lLW1pcHM2NHIyLW5mLW8zMiA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS1taXBzNjQtbmYtbzMyfSBtaXBzNjRyMiIKK0JBU0VfTElCX3R1bmUtbWlwczY0cjItbmYtbzMyID0gImxpYiIKK01JUFNQS0dTRlhfVkFSSUFOVF90dW5lLW1pcHM2NHIyLW5mLW8zMiA9ICIke1RVTkVfQVJDSH0iCitQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtbWlwczY0cjItbmYtbzMyID0gIm1pcHMtbmYgbWlwczY0cjItbmYtbzMyIgorCitUVU5FX0ZFQVRVUkVTX3R1bmUtbWlwczY0cjJlbC1uZi1vMzIgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtbWlwczY0ZWwtbmYtbzMyfSBtaXBzNjRyMiIKK0JBU0VfTElCX3R1bmUtbWlwczY0cjJlbC1uZi1vMzIgPSAibGliIgorTUlQU1BLR1NGWF9WQVJJQU5UX3R1bmUtbWlwczY0cjJlbC1uZi1vMzIgPSAiJHtUVU5FX0FSQ0h9IgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLW1pcHM2NHIyZWwtbmYtbzMyID0gIm1pcHNlbC1uZiBtaXBzNjRyMmVsLW5mLW8zMiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtbWlwczY0cjYuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1taXBzNjRyNi5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjBhZDU2NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtbWlwczY0cjYuaW5jCkBAIC0wLDAgKzEsMzIgQEAKK0RFRkFVTFRUVU5FID89ICJtaXBzaXNhNjRyNmVsIgorCityZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL21pcHMvYXJjaC1taXBzLmluYworCitUVU5FVkFMSURbbWlwc2lzYTY0cjZdID0gIkVuYWJsZSBtaXBzaXNhNjRyNiBzcGVjaWZpYyBwcm9jZXNzb3Igb3B0aW1pemF0aW9ucyIKK1RVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdtaXBzaXNhNjRyNicsICcgLW1hcmNoPW1pcHM2NHI2JywgJycsIGQpfSIKKworIyBCYXNlIFR1bmVzCitBVkFJTFRVTkVTICs9ICJtaXBzaXNhNjRyNiBtaXBzaXNhNjRyNmVsIgorCitUVU5FX0ZFQVRVUkVTX3R1bmUtbWlwc2lzYTY0cjYgPSAiYmlnZW5kaWFuIGZwdS1oYXJkIG42NCBtaXBzaXNhNjRyNiByNiIKK01JUFNQS0dTRlhfVkFSSUFOVF90dW5lLW1pcHNpc2E2NHI2ID0gIiR7VFVORV9BUkNIfSIKK0JBU0VfTElCX3R1bmUtbWlwc2lzYTY0cjYgPSAibGliNjQiCitQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtbWlwc2lzYTY0cjYgPSAibWlwc2lzYTY0cjYiCisKK1RVTkVfRkVBVFVSRVNfdHVuZS1taXBzaXNhNjRyNmVsID0gImZwdS1oYXJkIHI2IG42NCBtaXBzaXNhNjRyNiIKK01JUFNQS0dTRlhfVkFSSUFOVF90dW5lLW1pcHNpc2E2NHI2ZWwgPSAiJHtUVU5FX0FSQ0h9IgorQkFTRV9MSUJfdHVuZS1taXBzaXNhNjRyNmVsID0gImxpYjY0IgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLW1pcHNpc2E2NHI2ZWwgPSAibWlwc2lzYTY0cjZlbCIKKworIyBTb2Z0IEZsb2F0CitBVkFJTFRVTkVTICs9ICJtaXBzaXNhNjRyNi1uZiBtaXBzaXNhNjRyNmVsLW5mIgorCitUVU5FX0ZFQVRVUkVTX3R1bmUtbWlwc2lzYTY0cjYtbmYgPSAiYmlnZW5kaWFuIHI2IG42NCBtaXBzaXNhNjRyNiIKK01JUFNQS0dTRlhfVkFSSUFOVF90dW5lLW1pcHNpc2E2NHI2LW5mID0gIiR7VFVORV9BUkNIfSIKK0JBU0VfTElCX3R1bmUtbWlwc2lzYTY0cjYtbmYgPSAibGliNjQiCitQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtbWlwc2lzYTY0cjYtbmYgPSAibWlwc2lzYTY0cjYiCisKK1RVTkVfRkVBVFVSRVNfdHVuZS1taXBzaXNhNjRyNmVsLW5mID0gInI2IG42NCBtaXBzaXNhNjRyNiIKK01JUFNQS0dTRlhfVkFSSUFOVF90dW5lLW1pcHNpc2E2NHI2ZWwtbmYgPSAiJHtUVU5FX0FSQ0h9IgorQkFTRV9MSUJfdHVuZS1taXBzaXNhNjRyNmVsLW5mID0gImxpYjY0IgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLW1pcHNpc2E2NHI2ZWwtbmYgPSAibWlwc2lzYTY0cjZlbC1uZiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcHBjZTUwMG1jLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcHBjZTUwMG1jLmluYwppbmRleCBhMWNhOWJlLi5iYzI2YTBmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwY2U1MDBtYy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wcGNlNTAwbWMuaW5jCkBAIC0xMiwzICsxMiw2IEBACiAKICMgZ2xpYmMgY29uZmlndXJlIG9wdGlvbnMgdG8gZ2V0IGU1MDBtYyBzcGVjaWZpYyBsaWJyYXJ5IChmb3Igc3FydCkKIEdMSUJDX0VYVFJBX09FQ09ORiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAncHBjZTUwMG1jJywgJy13aXRoLWNwdT1lNTAwbWMnLCAnJywgZCl9IgorCisjIHBhc3MgLW1jcHU9ZTUwMG1jIGZvciBwcGNlNTAwbWMga2VybmVsIGNyb3NzIGNvbXBpbGUKK1RBUkdFVF9DQ19LRVJORUxfQVJDSCA9ICItbWNwdT1lNTAwbWMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwY2U1NTAwLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcHBjZTU1MDAuaW5jCmluZGV4IGFjZTI2MTQuLmNlYmIyNDQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcHBjZTU1MDAuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcHBjZTU1MDAuaW5jCkBAIC0xOCwzICsxOCw2IEBACiAKICMgZ2xpYmMgY29uZmlndXJlIG9wdGlvbnMgdG8gZ2V0IGU1NTAwIHNwZWNpZmljIGxpYnJhcnkgKGZvciBzcXJ0KQogR0xJQkNfRVhUUkFfT0VDT05GICs9ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdlNTUwMCcsICctLXdpdGgtY3B1PWU1NTAwJywgJycsIGQpfSIKKworIyBRRU1VIHVzZXJtb2RlIGZhaWxzIHdpdGggaW52YWxpZCBpbnN0cnVjdGlvbiBlcnJvciAoWU9DVE86ICMxMDMwNCkKK01BQ0hJTkVfRkVBVFVSRVNfQkFDS0ZJTExfQ09OU0lERVJFRF9hcHBlbmQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnZTU1MDAnLCAnIHFlbXUtdXNlcm1vZGUnLCAnJywgZCl9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wcGNlNjUwMC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwY2U2NTAwLmluYwppbmRleCBkYTFlODY0Li41ZGI3ZTc2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwY2U2NTAwLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwY2U2NTAwLmluYwpAQCAtMTksMyArMTksNiBAQAogIyBnbGliYyBjb25maWd1cmUgb3B0aW9ucyB0byBnZXQgZTY1MDAgc3BlY2lmaWMgbGlicmFyeQogR0xJQkNfRVhUUkFfT0VDT05GX3Bvd2VycGM2NCArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnZTY1MDAnLCAnLS13aXRoLWNwdT1lNjUwMCcsICcnLCBkKX0iCiBHTElCQ19FWFRSQV9PRUNPTkZfcG93ZXJwYyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnZTY1MDAnLCAnLS13aXRoLWNwdT1lNjUwMCcsICcnLCBkKX0iCisKKyMgUUVNVSB1c2VybW9kZSBmYWlscyB3aXRoIGludmFsaWQgaW5zdHJ1Y3Rpb24gZXJyb3IgKFlPQ1RPOiAjMTAzMDQpCitNQUNISU5FX0ZFQVRVUkVTX0JBQ0tGSUxMX0NPTlNJREVSRURfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2U2NTAwJywgJyBxZW11LXVzZXJtb2RlJywgJycsIGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3g4Ni1iYXNlLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3g4Ni1iYXNlLmluYwppbmRleCA1NjYzMTQ1Li40NzllODllIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS94ODYtYmFzZS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUveDg2LWJhc2UuaW5jCkBAIC0yMCw3ICsyMCw3IEBACiAjIGtlcm5lbC1yZWxhdGVkIHZhcmlhYmxlcwogIwogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsID8/PSAibGludXgteW9jdG8iCi1QUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/Pz0gIjQuNCUiCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/Pz0gIjQuOCUiCiAKICMKICMgWFNFUlZFUiBzdWJjb21wb25lbnRzLCB1c2VkIHRvIGJ1aWxkIHRoZSBYU0VSVkVSIHZhcmlhYmxlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybS5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm0uY29uZgppbmRleCBjZGFkMDNmLi4xNzQwMmVmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybS5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11YXJtLmNvbmYKQEAgLTEwLDMgKzEwLDExIEBACiAKIFNFUklBTF9DT05TT0xFUyA9ICIxMTUyMDA7dHR5QU1BMCAxMTUyMDA7dHR5QU1BMSIKIAorIyBGb3IgcnVucWVtdQorUUJfU1lTVEVNX05BTUUgPSAicWVtdS1zeXN0ZW0tYXJtIgorUUJfTUFDSElORSA9ICItbWFjaGluZSB2ZXJzYXRpbGVwYiIKK1FCX0tFUk5FTF9DTURMSU5FX0FQUEVORCA9ICJjb25zb2xlPXR0eUFNQTAsMTE1MjAwIGNvbnNvbGU9dHR5IgorIyBBZGQgdGhlICd2aXJ0aW8tcm5nLXBjaScgZGV2aWNlIG90aGVyd2lzZSB0aGUgZ3Vlc3QgbWF5IHJ1biBvdXQgb2YgZW50cm9weQorUUJfT1BUX0FQUEVORCA9ICItc2hvdy1jdXJzb3IgLXVzYiAtdXNiZGV2aWNlIHRhYmxldCAtZGV2aWNlIHZpcnRpby1ybmctcGNpIgorUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz89ICI0LjglIgorUUJfRFRCID0gIiR7QGJhc2VfdmVyc2lvbl9sZXNzX29yX2VxdWFsKCdQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0bycsICc0LjcnLCAnJywgJ3pJbWFnZS12ZXJzYXRpbGUtcGIuZHRiJywgZCl9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm02NC5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm02NC5jb25mCmluZGV4IGY1OWZiMTUuLmQwNzUwNjIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11YXJtNjQuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybTY0LmNvbmYKQEAgLTgsMyArOCwxNyBAQAogS0VSTkVMX0lNQUdFVFlQRSA9ICJJbWFnZSIKIAogU0VSSUFMX0NPTlNPTEVTID0gIjM4NDAwO3R0eUFNQTAgMzg0MDA7aHZjMCIKKworIyBGb3IgcnVucWVtdQorUUJfU1lTVEVNX05BTUUgPSAicWVtdS1zeXN0ZW0tYWFyY2g2NCIKK1FCX01FTSA9ICItbSA1MTIiCitRQl9NQUNISU5FID0gIi1tYWNoaW5lIHZpcnQiCitRQl9DUFUgPSAiLWNwdSBjb3J0ZXgtYTU3IgorUUJfS0VSTkVMX0NNRExJTkVfQVBQRU5EID0gImNvbnNvbGU9dHR5QU1BMCwzODQwMCIKKyMgQWRkIHRoZSAndmlydGlvLXJuZy1wY2knIGRldmljZSBvdGhlcndpc2UgdGhlIGd1ZXN0IG1heSBydW4gb3V0IG9mIGVudHJvcHkKK1FCX09QVF9BUFBFTkQgPSAiLXNob3ctY3Vyc29yIC1kZXZpY2UgdmlydGlvLXJuZy1wY2kiCitRQl9UQVBfT1BUID0gIi1uZXRkZXYgdGFwLGlkPW5ldDAsaWZuYW1lPUBUQVBALHNjcmlwdD1ubyxkb3duc2NyaXB0PW5vIC1kZXZpY2UgdmlydGlvLW5ldC1kZXZpY2UsbmV0ZGV2PW5ldDAsbWFjPUBNQUNAIgorUUJfU0xJUlBfT1BUID0gIi1uZXRkZXYgdXNlcixpZD1uZXQwIC1kZXZpY2UgdmlydGlvLW5ldC1kZXZpY2UsbmV0ZGV2PW5ldDAiCitRQl9ST09URlNfT1BUID0gIi1kcml2ZSBpZD1kaXNrMCxmaWxlPUBST09URlNALGlmPW5vbmUsZm9ybWF0PXJhdyAtZGV2aWNlIHZpcnRpby1ibGstZGV2aWNlLGRyaXZlPWRpc2swIgorUUJfU0VSSUFMX09QVCA9ICItZGV2aWNlIHZpcnRpby1zZXJpYWwtZGV2aWNlIC1jaGFyZGV2IG51bGwsaWQ9dmlydGNvbiAtZGV2aWNlIHZpcnRjb25zb2xlLGNoYXJkZXY9dmlydGNvbiIKK1FCX1RDUFNFUklBTF9PUFQgPSAiIC1kZXZpY2UgdmlydGlvLXNlcmlhbC1kZXZpY2UgLWNoYXJkZXYgc29ja2V0LGlkPXZpcnRjb24scG9ydD1AUE9SVEAsaG9zdD0xMjcuMC4wLjEgLWRldmljZSB2aXJ0Y29uc29sZSxjaGFyZGV2PXZpcnRjb24iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdW1pcHMuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11bWlwcy5jb25mCmluZGV4IGZiZjgxMzcuLjMxODJlYTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11bWlwcy5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11bWlwcy5jb25mCkBAIC00LDYgKzQsNyBAQAogCiByZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXUuaW5jCiByZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtbWlwczMycjIuaW5jCityZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXVib290LW1pcHMuaW5jCiAKIEtFUk5FTF9JTUFHRVRZUEUgPSAidm1saW51eCIKIEtFUk5FTF9BTFRfSU1BR0VUWVBFID0gInZtbGludXguYmluIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVtaXBzNjQuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11bWlwczY0LmNvbmYKaW5kZXggOGMzZjFmZS4uOTUyOWY0YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVtaXBzNjQuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdW1pcHM2NC5jb25mCkBAIC00LDYgKzQsNyBAQAogCiByZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXUuaW5jCiByZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtbWlwczY0LmluYworcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS9xZW11Ym9vdC1taXBzLmluYwogCiBLRVJORUxfSU1BR0VUWVBFID0gInZtbGludXgiCiBLRVJORUxfQUxUX0lNQUdFVFlQRSA9ICJ2bWxpbnV4LmJpbiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11cHBjLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXBwYy5jb25mCmluZGV4IGJmMDAzOGQuLjg3MDNjMjAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11cHBjLmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVwcGMuY29uZgpAQCAtMTEsMyArMTEsMTEgQEAKIAogU0VSSUFMX0NPTlNPTEVTID0gIjExNTIwMDt0dHlTMCAxMTUyMDA7dHR5UzEiCiAKKyMgRm9yIHJ1bnFlbXUKK1FCX1NZU1RFTV9OQU1FID0gInFlbXUtc3lzdGVtLXBwYyIKK1FCX01BQ0hJTkUgPSAiLW1hY2hpbmUgbWFjOTkiCitRQl9DUFUgPSAiLWNwdSBHNCIKK1FCX0tFUk5FTF9DTURMSU5FX0FQUEVORCA9ICJjb25zb2xlPXR0eSBjb25zb2xlPXR0eVMwIgorIyBBZGQgdGhlICd2aXJ0aW8tcm5nLXBjaScgZGV2aWNlIG90aGVyd2lzZSB0aGUgZ3Vlc3QgbWF5IHJ1biBvdXQgb2YgZW50cm9weQorUUJfT1BUX0FQUEVORCA9ICItc2hvdy1jdXJzb3IgLXVzYiAtdXNiZGV2aWNlIHRhYmxldCAtZGV2aWNlIHZpcnRpby1ybmctcGNpIgorUUJfVEFQX09QVCA9ICItbmV0ZGV2IHRhcCxpZD1uZXQwLGlmbmFtZT1AVEFQQCxzY3JpcHQ9bm8sZG93bnNjcmlwdD1ubyAtZGV2aWNlIHZpcnRpby1uZXQtcGNpLG5ldGRldj1uZXQwLG1hYz1ATUFDQCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11eDg2LTY0LmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXg4Ni02NC5jb25mCmluZGV4IDQ4OTE5NGEuLmIxOTFkZGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11eDg2LTY0LmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXV4ODYtNjQuY29uZgpAQCAtMTAsNiArMTAsNyBAQAogcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS9xZW11LmluYwogREVGQVVMVFRVTkUgPz0gImNvcmUyLTY0IgogcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWNvcmUyLmluYworcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS9xZW11Ym9vdC14ODYuaW5jCiAKIEtFUk5FTF9JTUFHRVRZUEUgPSAiYnpJbWFnZSIKIApAQCAtMjIsNyArMjMsMTAgQEAKICAgICAgICAgICAgeGY4Ni1pbnB1dC1ldmRldiBcCiAgICAgICAgICAgIHhmODYtdmlkZW8tY2lycnVzIFwKICAgICAgICAgICAgeGY4Ni12aWRlby1mYmRldiBcCi0gICAgICAgICAgIHhmODYtdmlkZW8tdm13YXJlIgorICAgICAgICAgICB4Zjg2LXZpZGVvLXZtd2FyZSBcCisgICAgICAgICAgIHhmODYtdmlkZW8tbW9kZXNldHRpbmcgXAorICAgICAgICAgICB4c2VydmVyLXhvcmctbW9kdWxlLWxpYmludDEwIFwKKyAgICAgICAgICAgIgogCiBNQUNISU5FX0ZFQVRVUkVTICs9ICJ4ODYiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11eDg2LmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXg4Ni5jb25mCmluZGV4IDNjYzgwOTEuLjg1NTVmZDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11eDg2LmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXV4ODYuY29uZgpAQCAtOSw2ICs5LDcgQEAKIAogcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS9xZW11LmluYwogcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWk1ODYuaW5jCityZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXVib290LXg4Ni5pbmMKIAogS0VSTkVMX0lNQUdFVFlQRSA9ICJiekltYWdlIgogCkBAIC0yMSw3ICsyMiwxMCBAQAogICAgICAgICAgICB4Zjg2LWlucHV0LWV2ZGV2IFwKICAgICAgICAgICAgeGY4Ni12aWRlby1jaXJydXMgXAogICAgICAgICAgICB4Zjg2LXZpZGVvLWZiZGV2IFwKLSAgICAgICAgICAgeGY4Ni12aWRlby12bXdhcmUiCisgICAgICAgICAgIHhmODYtdmlkZW8tdm13YXJlIFwKKyAgICAgICAgICAgeGY4Ni12aWRlby1tb2Rlc2V0dGluZyBcCisgICAgICAgICAgIHhzZXJ2ZXIteG9yZy1tb2R1bGUtbGliaW50MTAgXAorICAgICAgICAgICAiCiAKIE1BQ0hJTkVfRkVBVFVSRVMgKz0gIng4NiIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tdWx0aWxpYi5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tdWx0aWxpYi5jb25mCmluZGV4IDUwMzAzZmIuLjE0MDNhMDMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbXVsdGlsaWIuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL211bHRpbGliLmNvbmYKQEAgLTI0LDQgKzI0LDUgQEAKICMgaW5zaWRlIHRoZSBtdWx0aWxpYiBzeXNyb290LiAgRml4IHRoaXMgYnkgZXhwbGljaXRseSBhZGRpbmcgdGhlIE1BQ0hJTkUncwogIyBhcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQgcGtnY29uZmlnIGxvY2F0aW9uIHRvIFBLR19DT05GSUdfUEFUSC4KIFBLR19DT05GSUdfUEFUSCAuPSAiOiR7U1RBR0lOR19ESVJ9LyR7TUFDSElORX0ke2RhdGFkaXJ9L3BrZ2NvbmZpZyIKLVBLR19DT05GSUdfUEFUSFt2YXJkZXBzZXhjbHVkZV0gPSAiTUFDSElORSIKK1BLR19DT05GSUdfUEFUSFt2YXJkZXBzZXhjbHVkZV0gPSAiTUFDSElORSBkYXRhZGlyIFNUQUdJTkdfRElSIgorUEtHX0NPTkZJR19QQVRIW3ZhcmRlcHZhbHVlZXhjbHVkZV0gPSAiOiR7U1RBR0lOR19ESVJ9LyR7TUFDSElORX0ke2RhdGFkaXJ9L3BrZ2NvbmZpZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvc2FuaXR5LmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL3Nhbml0eS5jb25mCmluZGV4IDcwMjFiZjkuLmRjZjYwYjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvc2FuaXR5LmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9zYW5pdHkuY29uZgpAQCAtMyw3ICszLDcgQEAKICMgU2VlIHNhbml0eS5iYmNsYXNzCiAjCiAjIEV4cGVydCB1c2VycyBjYW4gY29uZmlybSB0aGVpciBzYW5pdHkgd2l0aCAidG91Y2ggY29uZi9zYW5pdHkuY29uZiIKLUJCX01JTl9WRVJTSU9OID0gIjEuMjkuMSIKK0JCX01JTl9WRVJTSU9OID0gIjEuMzEuMiIKIAogU0FOSVRZX0FCSUZJTEUgPSAiJHtUTVBESVJ9L2FiaV92ZXJzaW9uIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL3N3YWJiZXIvVWJ1bnR1LTEwLjA0LjEtNjQvYmxhY2tsaXN0IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9zd2FiYmVyL1VidW50dS0xMC4wNC4xLTY0L2JsYWNrbGlzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWZkYjhmMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL3N3YWJiZXIvVWJ1bnR1LTEwLjA0LjEtNjQvYmxhY2tsaXN0CisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1saWJuZW9uMjctZ251dGxzCi1vcGVuamRrLTYtanJlLWhlYWRsZXNzCi1vcGVuamRrLTYtanJlLWxpYgotb3Blbmpkay02LWpyZQotbGliZGJ1cy0xLTMKLWxpYm5lb24yNy1nbnV0bHMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvc3dhYmJlci9VYnVudHUtMTAuMDQuMS02NC9maWx0ZXJzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9zd2FiYmVyL1VidW50dS0xMC4wNC4xLTY0L2ZpbHRlcnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0NDdmNzAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9zd2FiYmVyL1VidW50dS0xMC4wNC4xLTY0L2ZpbHRlcnMKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLS91c3IvbG9jYWwvbGliL3B5dGhvbjIuNgotL3Vzci9saWIvcHl0aG9uMi42Ci0vdXNyL2xpYi9weW1vZHVsZXMvcHl0aG9uMi42Ci0vdXNyL2xpYi9wZXJsLzUuMTAKLSMgd2hpY2ggaXMgcGFydCBvZiB0aGUgZGViaWFudXRpbHMgcGFja2FnZXMsIGJ1dCB3ZSBkb24ndCB3YW50IHRvIHB1dCB0aGUgZW50aXJlCi0jIGRlYmlhbnV0aWxzIHBhY2thZ2UgaW4gdGhlIHdoaXRlbGlzdC4KLS91c3IvYmluL3doaWNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL3N3YWJiZXIvVWJ1bnR1LTEwLjA0LjEtNjQvd2hpdGVsaXN0IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9zd2FiYmVyL1VidW50dS0xMC4wNC4xLTY0L3doaXRlbGlzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjBmZTk2My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL3N3YWJiZXIvVWJ1bnR1LTEwLjA0LjEtNjQvd2hpdGVsaXN0CisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotYmFzZS1maWxlcwotZGFzaAotbGliYWNsMQotbGliYXR0cjEKLWxpYmJ6Mi0xLjAKLWxpYmM2Ci1saWJjLWJpbgotbGliZ2xpYjIuMC0wCi1saWJuY3Vyc2VzNQotbGlic2VsaW51eDEKLWxpYnNxbGl0ZTMtMAotbGlic3NsMC45LjgKLW1pbWUtc3VwcG9ydAotcGVybC1iYXNlCi1weXRob24yLjYKLXB5dGhvbjIuNi1taW5pbWFsCi1weXRob24tYXBwb3J0Ci1weXRob24tZ3N0MC4xMAotcHl0aG9uLWltYWdpbmcKLXB5dGhvbi1taW5pbWFsCi1weXRob24tc3VwcG9ydAotcHl0aG9uLXpvcGUuaW50ZXJmYWNlCi16bGliMWcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvc3dhYmJlci9nZW5lcmljL2JsYWNrbGlzdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvc3dhYmJlci9nZW5lcmljL2JsYWNrbGlzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzk2YmNiNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL3N3YWJiZXIvZ2VuZXJpYy9ibGFja2xpc3QKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXVkZXYKLWRrcGcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvc3dhYmJlci9nZW5lcmljL2ZpbHRlcnMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL3N3YWJiZXIvZ2VuZXJpYy9maWx0ZXJzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjEwZmNiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvc3dhYmJlci9nZW5lcmljL2ZpbHRlcnMKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi0vdG1wCi0vZXRjL2xvY2FsdGltZQotL2V0Yy9sZC5zby5jYWNoZQotL2V0Yy9sZC5zby5jb25mCi0vZXRjL3Bhc3N3ZAotL2V0Yy9ncm91cAotL2V0Yy9uc3N3aXRjaC5jb25mCi0vcHJvYwotL2Rldi9udWxsCi0vZGV2L3R0eQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9zd2FiYmVyL2dlbmVyaWMvd2hpdGVsaXN0IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9zd2FiYmVyL2dlbmVyaWMvd2hpdGVsaXN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OGVjMmFmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvc3dhYmJlci9nZW5lcmljL3doaXRlbGlzdAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLWJhc2gKLWJ6aXAyCi1jY2FjaGUKLWNvcmV1dGlscwotY3BwCi1maWxlCi1maW5kdXRpbHMKLWdhd2sKLWdyZXAKLWhvc3RuYW1lCi1tYWtlCi1zZWQKLXRhcgotdXRpbC1saW51eAotemxpYjFnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL3RvYXN0ZXJjb25mLmpzb24gYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL3RvYXN0ZXJjb25mLmpzb24KaW5kZXggYzI3ODgwZS4uNzk2MTI1YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi90b2FzdGVyY29uZi5qc29uCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvdG9hc3RlcmNvbmYuanNvbgpAQCAtMTMsNyArMTMsNyBAQAogICAgICAgICAgICAgIm5hbWUiOiAiTG9jYWwgT3BlbkVtYmVkZGVkIiwKICAgICAgICAgICAgICJzb3VyY2V0eXBlIjogImxvY2FsIiwKICAgICAgICAgICAgICJhcGl1cmwiOiAiLi4vLi4vIiwKLSAgICAgICAgICAgICJicmFuY2hlcyI6IFsiSEVBRCIsICJtYXN0ZXIiLCAiamV0aHJvIiwgImtyb2dvdGgiXSwKKyAgICAgICAgICAgICJicmFuY2hlcyI6IFsiSEVBRCIsICJtYXN0ZXIiXSwKICAgICAgICAgICAgICJsYXllcnMiOiBbCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJvcGVuZW1iZWRkZWQtY29yZSIsCkBAIC0yNywxMyArMjcsMTMgQEAKICAgICAgICAgICAgICJuYW1lIjogIk9wZW5FbWJlZGRlZCIsCiAgICAgICAgICAgICAic291cmNldHlwZSI6ICJsYXllcmluZGV4IiwKICAgICAgICAgICAgICJhcGl1cmwiOiAiaHR0cDovL2xheWVycy5vcGVuZW1iZWRkZWQub3JnL2xheWVyaW5kZXgvYXBpLyIsCi0gICAgICAgICAgICAiYnJhbmNoZXMiOiBbIm1hc3RlciIsICJqZXRocm8iLCAia3JvZ290aCJdCisgICAgICAgICAgICAiYnJhbmNoZXMiOiBbIm1hc3RlciJdCiAgICAgICAgIH0sCiAgICAgICAgIHsKICAgICAgICAgICAgICJuYW1lIjogIkltcG9ydGVkIGxheWVycyIsCiAgICAgICAgICAgICAic291cmNldHlwZSI6ICJpbXBvcnRlZCIsCiAgICAgICAgICAgICAiYXBpdXJsIjogIiIsCi0gICAgICAgICAgICAiYnJhbmNoZXMiOiBbIm1hc3RlciIsICJqZXRocm8iLCAia3JvZ290aCIsICJIRUFEIl0KKyAgICAgICAgICAgICJicmFuY2hlcyI6IFsibWFzdGVyIiwgIkhFQUQiXQogCiAgICAgICAgIH0KICAgICBdLApAQCAtNDUsMTggKzQ1LDYgQEAKICAgICAgICAgICAgICJkaXJwYXRoIjogIiIKICAgICAgICAgfSwKICAgICAgICAgewotICAgICAgICAgICAgIm5hbWUiOiAiamV0aHJvIiwKLSAgICAgICAgICAgICJnaXR1cmwiOiAiZ2l0Oi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvYml0YmFrZSIsCi0gICAgICAgICAgICAiYnJhbmNoIjogIjEuMjgiLAotICAgICAgICAgICAgImRpcnBhdGgiOiAiIgotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAibmFtZSI6ICJrcm9nb3RoIiwKLSAgICAgICAgICAgICJnaXR1cmwiOiAiZ2l0Oi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvYml0YmFrZSIsCi0gICAgICAgICAgICAiYnJhbmNoIjogIjEuMzAiLAotICAgICAgICAgICAgImRpcnBhdGgiOiAiIgotICAgICAgICB9LAotICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSI6ICJIRUFEIiwKICAgICAgICAgICAgICJnaXR1cmwiOiAiZ2l0Oi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvYml0YmFrZSIsCiAgICAgICAgICAgICAiYnJhbmNoIjogIkhFQUQiLApAQCAtNzcsMjQgKzY1LDYgQEAKICAgICAgICAgICAgICJoZWxwdGV4dCI6ICJUb2FzdGVyIHdpbGwgcnVuIHlvdXIgYnVpbGRzIHVzaW5nIHRoZSB0aXAgb2YgdGhlIDxhIGhyZWY9XCJodHRwOi8vY2dpdC5vcGVuZW1iZWRkZWQub3JnL29wZW5lbWJlZGRlZC1jb3JlL2xvZy9cIj5PcGVuRW1iZWRkZWQgbWFzdGVyPC9hPiBicmFuY2gsIHdoZXJlIGFjdGl2ZSBkZXZlbG9wbWVudCB0YWtlcyBwbGFjZS4gVGhpcyBpcyBub3QgYSBzdGFibGUgYnJhbmNoLCBzbyB5b3VyIGJ1aWxkcyBtaWdodCBub3Qgd29yayBhcyBleHBlY3RlZC4iCiAgICAgICAgIH0sCiAgICAgICAgIHsKLSAgICAgICAgICAgICJuYW1lIjogImpldGhybyIsCi0gICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiT3BlbkVtYmVkZGVkIEpldGhybyIsCi0gICAgICAgICAgICAiYml0YmFrZSI6ICJqZXRocm8iLAotICAgICAgICAgICAgImJyYW5jaCI6ICJqZXRocm8iLAotICAgICAgICAgICAgImRlZmF1bHRsYXllcnMiOiBbICJvcGVuZW1iZWRkZWQtY29yZSIgXSwKLSAgICAgICAgICAgICJsYXllcnNvdXJjZXByaW9yaXR5IjogeyAiSW1wb3J0ZWQgbGF5ZXJzIjogOTksICJMb2NhbCBPcGVuRW1iZWRkZWQiIDogMTAsICJPcGVuRW1iZWRkZWQiIDogIDAgfSwKLSAgICAgICAgICAgICJoZWxwdGV4dCI6ICJUb2FzdGVyIHdpbGwgcnVuIHlvdXIgYnVpbGRzIHdpdGggdGhlIHRpcCBvZiB0aGUgPGEgaHJlZj1cImh0dHA6Ly9jZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvb3BlbmVtYmVkZGVkLWNvcmUvbG9nLz9oPWpldGhyb1wiPk9wZW5FbWJlZGRlZCBcIkpldGhyb1wiPC9hPiBicmFuY2giCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICJuYW1lIjogImtyb2dvdGgiLAotICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIk9wZW5FbWJlZGRlZCBLcm9nb3RoIiwKLSAgICAgICAgICAgICJiaXRiYWtlIjogImtyb2dvdGgiLAotICAgICAgICAgICAgImJyYW5jaCI6ICJrcm9nb3RoIiwKLSAgICAgICAgICAgICJkZWZhdWx0bGF5ZXJzIjogWyAib3BlbmVtYmVkZGVkLWNvcmUiIF0sCi0gICAgICAgICAgICAibGF5ZXJzb3VyY2Vwcmlvcml0eSI6IHsgIkltcG9ydGVkIGxheWVycyI6IDk5LCAiTG9jYWwgT3BlbkVtYmVkZGVkIiA6IDEwLCAiT3BlbkVtYmVkZGVkIiA6ICAwIH0sCi0gICAgICAgICAgICAiaGVscHRleHQiOiAiVG9hc3RlciB3aWxsIHJ1biB5b3VyIGJ1aWxkcyB3aXRoIHRoZSB0aXAgb2YgdGhlIDxhIGhyZWY9XCJodHRwOi8vY2dpdC5vcGVuZW1iZWRkZWQub3JnL29wZW5lbWJlZGRlZC1jb3JlL2xvZy8/aD1rcm9nb3RoXCI+T3BlbkVtYmVkZGVkIFwiS3JvZ290aFwiPC9hPiBicmFuY2giCi0gICAgICAgIH0sCi0gICAgICAgIHsKICAgICAgICAgICAgICJuYW1lIjogImxvY2FsIiwKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJMb2NhbCBPcGVuRW1iZWRkZWQiLAogICAgICAgICAgICAgImJpdGJha2UiOiAiSEVBRCIsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9maWxlcy9leHQtc2RrLXByZXBhcmUucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9maWxlcy9leHQtc2RrLXByZXBhcmUucHkKaW5kZXggNjA1ZTJlYi4uNzhjMWQxNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvZmlsZXMvZXh0LXNkay1wcmVwYXJlLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2ZpbGVzL2V4dC1zZGstcHJlcGFyZS5weQpAQCAtNSw5MyArNSw2MiBAQAogaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHNpZ25hbAogCi1kZWYgZXhlY193YXRjaChjbWQsICoqb3B0aW9ucyk6Ci0gICAgIiIiUnVuIHByb2dyYW0gd2l0aCBzdGRvdXQgc2hvd24gb24gc3lzLnN0ZG91dCIiIgotICAgIGlmIGlzaW5zdGFuY2UoY21kLCBiYXNlc3RyaW5nKSBhbmQgbm90ICJzaGVsbCIgaW4gb3B0aW9uczoKLSAgICAgICAgb3B0aW9uc1sic2hlbGwiXSA9IFRydWUKK2RlZiByZWVuYWJsZV9zaWdpbnQoKToKKyAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdJTlQsIHNpZ25hbC5TSUdfREZMKQogCi0gICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oCi0gICAgICAgIGNtZCwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULCAqKm9wdGlvbnMKLSAgICApCitkZWYgcnVuX2NvbW1hbmRfaW50ZXJydXB0aWJsZShjbWQpOgorICAgICIiIgorICAgIFJ1biBhIGNvbW1hbmQgd2l0aCBvdXRwdXQgZGlzcGxheWVkIG9uIHRoZSBjb25zb2xlLCBidXQgZW5zdXJlIGFueSBDdHJsK0MgaXMKKyAgICBwcm9jZXNzZWQgb25seSBieSB0aGUgY2hpbGQgcHJvY2Vzcy4KKyAgICAiIiIKKyAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdJTlQsIHNpZ25hbC5TSUdfSUdOKQorICAgIHRyeToKKyAgICAgICAgcmV0ID0gc3VicHJvY2Vzcy5jYWxsKGNtZCwgc2hlbGw9VHJ1ZSwgcHJlZXhlY19mbj1yZWVuYWJsZV9zaWdpbnQpCisgICAgZmluYWxseToKKyAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHSU5ULCBzaWduYWwuU0lHX0RGTCkKKyAgICByZXR1cm4gcmV0CiAKLSAgICBidWYgPSAnJwotICAgIHdoaWxlIFRydWU6Ci0gICAgICAgIG91dCA9IHByb2Nlc3Muc3Rkb3V0LnJlYWQoMSkKLSAgICAgICAgaWYgb3V0OgotICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZShvdXQpCi0gICAgICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKLSAgICAgICAgICAgIGJ1ZiArPSBvdXQKLSAgICAgICAgZWxpZiBvdXQgPT0gJycgYW5kIHByb2Nlc3MucG9sbCgpICE9IE5vbmU6Ci0gICAgICAgICAgICBicmVhawotCi0gICAgcmV0dXJuIHByb2Nlc3MucmV0dXJuY29kZSwgYnVmCi0KLWRlZiBjaGVja191bmV4cGVjdGVkKGxpbmVzLCByZWNpcGVzKToKLSAgICAiIiJDaGVjayBmb3IgdW5leHBlY3RlZCBvdXRwdXQgbGluZXMgZnJvbSBkcnkgcnVuIiIiCi0gICAgdW5leHBlY3RlZCA9IFtdCi0gICAgZm9yIGxpbmUgaW4gbGluZXMuc3BsaXRsaW5lcygpOgotICAgICAgICBpZiAnUnVubmluZyB0YXNrJyBpbiBsaW5lOgotICAgICAgICAgICAgZm9yIHJlY2lwZSBpbiByZWNpcGVzOgotICAgICAgICAgICAgICAgIGlmIHJlY2lwZSBpbiBsaW5lOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zcGxpdCgnUnVubmluZycsIDEpWy0xXQotICAgICAgICAgICAgICAgIGlmICdkb19ybV93b3JrJyBub3QgaW4gbGluZToKLSAgICAgICAgICAgICAgICAgICAgdW5leHBlY3RlZC5hcHBlbmQobGluZS5yc3RyaXAoKSkKLSAgICAgICAgZWxpZiAnUnVubmluZyBzZXRzY2VuZScgaW4gbGluZToKLSAgICAgICAgICAgIHVuZXhwZWN0ZWQuYXBwZW5kKGxpbmUucnN0cmlwKCkpCi0gICAgcmV0dXJuIHVuZXhwZWN0ZWQKK2RlZiBnZXRfbGFzdF9jb25zb2xlbG9nKCk6CisgICAgJycnUmV0dXJuIHRoZSBtb3N0IHJlY2VudCBjb25zb2xlIGxvZyBmaWxlJycnCisgICAgbG9nZGlyID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShvcy5wYXRoLnJlYWxwYXRoKF9fZmlsZV9fKSksICd0bXAnLCAnbG9nJywgJ2Nvb2tlcicpCisgICAgaWYgb3MucGF0aC5leGlzdHMobG9nZGlyKToKKyAgICAgICAgbWNkaXIgPSBvcy5saXN0ZGlyKGxvZ2RpcikKKyAgICAgICAgaWYgbWNkaXI6CisgICAgICAgICAgICBsb2dkaXIgPSBvcy5wYXRoLmpvaW4obG9nZGlyLCBtY2RpclswXSkKKyAgICAgICAgICAgIGxvZ2ZpbGVzID0gW29zLnBhdGguam9pbihsb2dkaXIsIGZuKSBmb3IgZm4gaW4gb3MubGlzdGRpcihsb2dkaXIpXQorICAgICAgICAgICAgbG9nZmlsZXMuc29ydChrZXk9b3MucGF0aC5nZXRtdGltZSkKKyAgICAgICAgICAgIGlmIGxvZ2ZpbGVzOgorICAgICAgICAgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4obG9nZGlyLCBsb2dmaWxlc1stMV0pCisgICAgcmV0dXJuIE5vbmUKIAogZGVmIG1haW4oKToKICAgICBpZiBsZW4oc3lzLmFyZ3YpIDwgMjoKKyAgICAgICAgcHJpbnQoJ1BsZWFzZSBzcGVjaWZ5IG91dHB1dCBsb2cgZmlsZScpCisgICAgICAgIHJldHVybiAxCisgICAgbG9nZmlsZSA9IHN5cy5hcmd2WzFdCisgICAgaWYgbGVuKHN5cy5hcmd2KSA8IDM6CiAgICAgICAgIHNka190YXJnZXRzID0gW10KICAgICBlbHNlOgotICAgICAgICBzZGtfdGFyZ2V0cyA9ICcgJy5qb2luKHN5cy5hcmd2WzE6XSkuc3BsaXQoKQorICAgICAgICBzZGtfdGFyZ2V0cyA9ICcgJy5qb2luKHN5cy5hcmd2WzI6XSkuc3BsaXQoKQogICAgIGlmIG5vdCBzZGtfdGFyZ2V0czoKICAgICAgICAgIyBKdXN0IGRvIGEgcGFyc2Ugc28gdGhlIGNhY2hlIGlzIHByaW1lZAotICAgICAgICByZXQsIF8gPSBleGVjX3dhdGNoKCdiaXRiYWtlIC1wJykKKyAgICAgICAgcmV0ID0gcnVuX2NvbW1hbmRfaW50ZXJydXB0aWJsZSgnYml0YmFrZSAtcCAtLXF1aWV0JykKICAgICAgICAgcmV0dXJuIHJldAogCi0gICAgcHJpbnQoJ1ByZXBhcmluZyBTREsgZm9yICVzLi4uJyAlICcsICcuam9pbihzZGtfdGFyZ2V0cykpCisgICAgd2l0aCBvcGVuKGxvZ2ZpbGUsICdhJykgYXMgbG9nZjoKKyAgICAgICAgbG9nZi53cml0ZSgnUHJlcGFyaW5nIFNESyBmb3IgJXMuLi5cbicgJSAnLCAnLmpvaW4oc2RrX3RhcmdldHMpKQogCi0gICAgcmV0LCBvdXQgPSBleGVjX3dhdGNoKCdiaXRiYWtlICVzIC0tc2V0c2NlbmUtb25seScgJSAnICcuam9pbihzZGtfdGFyZ2V0cykpCi0gICAgaWYgcmV0OgotICAgICAgICByZXR1cm4gcmV0Ci0KLSAgICB0YXJnZXRsaXN0ID0gW10KLSAgICBmb3IgdGFyZ2V0IGluIHNka190YXJnZXRzOgotICAgICAgICBpZiAnOicgaW4gdGFyZ2V0OgotICAgICAgICAgICAgdGFyZ2V0ID0gdGFyZ2V0LnNwbGl0KCc6JylbMF0KLSAgICAgICAgaWYgbm90IHRhcmdldCBpbiB0YXJnZXRsaXN0OgotICAgICAgICAgICAgdGFyZ2V0bGlzdC5hcHBlbmQodGFyZ2V0KQotCi0gICAgcmVjaXBlcyA9IFtdCi0gICAgZm9yIHRhcmdldCBpbiB0YXJnZXRsaXN0OgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgoJ2JpdGJha2UgLWUgJXMnICUgdGFyZ2V0KS5zcGxpdCgpLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCi0gICAgICAgICAgICBmb3IgbGluZSBpbiBvdXQuc3BsaXRsaW5lcygpOgotICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnRklMRT0nKToKLSAgICAgICAgICAgICAgICAgICAgc3BsaXR2YWwgPSBsaW5lLnJzdHJpcCgpLnNwbGl0KCc9JykKLSAgICAgICAgICAgICAgICAgICAgaWYgbGVuKHNwbGl0dmFsKSA+IDE6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZWNpcGVzLmFwcGVuZChzcGxpdHZhbFsxXS5zdHJpcCgnIicpKQotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKLSAgICAgICAgICAgIHByaW50KCdFUlJPUjogRmFpbGVkIHRvIGdldCByZWNpcGUgZm9yIHRhcmdldCAlczpcbiVzJyAlICh0YXJnZXQsIGUub3V0cHV0KSkKLSAgICAgICAgICAgIHJldHVybiAxCi0KLSAgICB0cnk6Ci0gICAgICAgIG91dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCdiaXRiYWtlICVzIC1uJyAlICcgJy5qb2luKHNka190YXJnZXRzKSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULCBzaGVsbD1UcnVlKQotICAgICAgICB1bmV4cGVjdGVkID0gY2hlY2tfdW5leHBlY3RlZChvdXQsIHJlY2lwZXMpCi0gICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6Ci0gICAgICAgIHByaW50KCdFUlJPUjogRmFpbGVkIHRvIGV4ZWN1dGUgZHJ5LXJ1bjpcbiVzJyAlIGUub3V0cHV0KQotICAgICAgICByZXR1cm4gMQotCi0gICAgaWYgdW5leHBlY3RlZDoKLSAgICAgICAgcHJpbnQoJ0VSUk9SOiBVbmV4cGVjdGVkIHRhc2tzIG9yIHNldHNjZW5lIGxlZnQgb3ZlciB0byBiZSBleGVjdXRlZDonKQotICAgICAgICBmb3IgbGluZSBpbiB1bmV4cGVjdGVkOgotICAgICAgICAgICAgcHJpbnQoJyAgJyArIGxpbmUpCi0gICAgICAgIHJldHVybiAxCisgICAgICAgIHJldCA9IHJ1bl9jb21tYW5kX2ludGVycnVwdGlibGUoJ0JCX1NFVFNDRU5FX0VORk9SQ0U9MSBiaXRiYWtlIC0tcXVpZXQgJXMnICUgJyAnLmpvaW4oc2RrX3RhcmdldHMpKQorICAgICAgICBsYXN0bG9nID0gZ2V0X2xhc3RfY29uc29sZWxvZygpCisgICAgICAgIGlmIGxhc3Rsb2c6CisgICAgICAgICAgICB3aXRoIG9wZW4obGFzdGxvZywgJ3InKSBhcyBmOgorICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGY6CisgICAgICAgICAgICAgICAgICAgIGxvZ2Yud3JpdGUobGluZSkKKyAgICAgICAgaWYgcmV0OgorICAgICAgICAgICAgcHJpbnQoJ0VSUk9SOiBTREsgcHJlcGFyYXRpb24gZmFpbGVkOiBlcnJvciBsb2cgd3JpdHRlbiB0byAlcycgJSBsb2dmaWxlKQorICAgICAgICAgICAgcmV0dXJuIHJldAogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHRyeToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2ZpbGVzL3Rvb2xjaGFpbi1zaGFyLWV4dHJhY3Quc2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9maWxlcy90b29sY2hhaW4tc2hhci1leHRyYWN0LnNoCmluZGV4IDM5N2JlMTEuLjkyOTVkZGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2ZpbGVzL3Rvb2xjaGFpbi1zaGFyLWV4dHJhY3Quc2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvZmlsZXMvdG9vbGNoYWluLXNoYXItZXh0cmFjdC5zaApAQCAtMSw2ICsxLDggQEAKICMhL2Jpbi9zaAogCiBbIC16ICIkRU5WQ0xFQU5FRCIgXSAmJiBleGVjIC91c3IvYmluL2VudiAtaSBFTlZDTEVBTkVEPTEgSE9NRT0iJEhPTUUiIFwKKwlMQ19BTEw9ZW5fVVMuVVRGLTggXAorCVRFUk09JFRFUk0gXAogCWh0dHBfcHJveHk9IiRodHRwX3Byb3h5IiBodHRwc19wcm94eT0iJGh0dHBzX3Byb3h5IiBmdHBfcHJveHk9IiRmdHBfcHJveHkiIFwKIAlub19wcm94eT0iJG5vX3Byb3h5IiBhbGxfcHJveHk9IiRhbGxfcHJveHkiIEdJVF9QUk9YWV9DT01NQU5EPSIkR0lUX1BST1hZX0NPTU1BTkQiICIkMCIgIiRAIgogWyAtZiAvZXRjL2Vudmlyb25tZW50IF0gJiYgLiAvZXRjL2Vudmlyb25tZW50CkBAIC0yNiw3ICsyOCw3IEBACiBpZiBbICIkSU5TVF9BUkNIIiAhPSAiJFNES19BUkNIIiBdOyB0aGVuCiAJIyBBbGxvdyBmb3IgaW5zdGFsbGF0aW9uIG9mIGl4ODYgU0RLIG9uIHg4Nl82NCBob3N0CiAJaWYgWyAiJElOU1RfQVJDSCIgIT0geDg2XzY0IC1vICIkU0RLX0FSQ0giICE9IGl4ODYgXTsgdGhlbgotCQllY2hvICJFcnJvcjogSW5zdGFsbGF0aW9uIG1hY2hpbmUgbm90IHN1cHBvcnRlZCEiCisJCWVjaG8gIkVycm9yOiBJbmNvbXBhdGlibGUgU0RLIGluc3RhbGxlciEgWW91ciBob3N0IGlzICRJTlNUX0FSQ0ggYW5kIHRoaXMgU0RLIHdhcyBidWlsdCBmb3IgJFNES19BUkNIIGhvc3RzLiIKIAkJZXhpdCAxCiAJZmkKIGZpCkBAIC00NSw3ICs0Nyw4IEBACiBzYXZlc2NyaXB0cz0wCiB2ZXJib3NlPTAKIHB1Ymxpc2g9MAotd2hpbGUgZ2V0b3B0cyAiOnlkOm5wRFJTIiBPUFQ7IGRvCitsaXN0Y29udGVudHM9MAord2hpbGUgZ2V0b3B0cyAiOnlkOm5wRFJTbCIgT1BUOyBkbwogCWNhc2UgJE9QVCBpbgogCXkpCiAJCWFuc3dlcj0iWSIKQEAgLTcwLDYgKzczLDkgQEAKIAlTKQogCQlzYXZlc2NyaXB0cz0xCiAJCTs7CisJbCkKKwkJbGlzdGNvbnRlbnRzPTEKKwkJOzsKIAkqKQogCQllY2hvICJVc2FnZTogJChiYXNlbmFtZSAkMCkgWy15XSBbLWQgPGRpcj5dIgogCQllY2hvICIgIC15ICAgICAgICAgQXV0b21hdGljIHllcyB0byBhbGwgcHJvbXB0cyIKQEAgLTgxLDExICs4NywxOCBAQAogCQllY2hvICIgIC1TICAgICAgICAgU2F2ZSByZWxvY2F0aW9uIHNjcmlwdHMiCiAJCWVjaG8gIiAgLVIgICAgICAgICBEbyBub3QgcmVsb2NhdGUgZXhlY3V0YWJsZXMiCiAJCWVjaG8gIiAgLUQgICAgICAgICB1c2Ugc2V0IC14IHRvIHNlZSB3aGF0IGlzIGdvaW5nIG9uIgorCQllY2hvICIgIC1sICAgICAgICAgbGlzdCBmaWxlcyB0aGF0IHdpbGwgYmUgZXh0cmFjdGVkIgogCQlleGl0IDEKIAkJOzsKIAllc2FjCiBkb25lCiAKK3BheWxvYWRfb2Zmc2V0PSQoKCQoZ3JlcCAtbmEgLW0xICJeTUFSS0VSOiQiICQwfGN1dCAtZCc6JyAtZjEpICsgMSkpCitpZiBbICIkbGlzdGNvbnRlbnRzIiA9ICIxIiBdIDsgdGhlbgorICAgIHRhaWwgLW4gKyRwYXlsb2FkX29mZnNldCAkMHwgdGFyIHR2SiB8fCBleGl0IDEKKyAgICBleGl0CitmaQorCiB0aXRsZXN0cj0iQFNES19USVRMRUAgaW5zdGFsbGVyIHZlcnNpb24gQFNES19WRVJTSU9OQCIKIHByaW50ZiAiJXNcbiIgIiR0aXRsZXN0ciIKIHByaW50ZiAiJSR7I3RpdGxlc3RyfXNcbiIgfCB0ciAiICIgIj0iCkBAIC0xMzAsNiArMTQzLDE2IEBACiAJCSAgICAgImNoYXJhY3RlcnMgc3VjaCBhcyBzcGFjZXMsIEAsIFwkIG9yICsuIEFib3J0ISIKIAkJZXhpdCAxCiAJZmkKKwkjIFRoZSBidWlsZCBzeXN0ZW0gZG9lc24ndCB3b3JrIHdlbGwgd2l0aCAvdG1wIG9uIE5GUworCWZzX2Rldl9wYXRoPSIkdGFyZ2V0X3Nka19kaXIiCisJd2hpbGUgWyAhIC1kICIkZnNfZGV2X3BhdGgiIF0gOyBkbworCQlmc19kZXZfcGF0aD1gZGlybmFtZSAkZnNfZGV2X3BhdGhgCisgICAgICAgIGRvbmUKKwlmc19kZXZfdHlwZT1gc3RhdCAtZiAtYyAnJXQnICIkZnNfZGV2X3BhdGgiYAorCWlmIFsgIiRmc2RldnR5cGUiID0gIjY5NjkiIF0gOyB0aGVuCisJCWVjaG8gIlRoZSB0YXJnZXQgZGlyZWN0b3J5IHBhdGggJHRhcmdldF9zZGtfZGlyIGlzIG9uIE5GUywgdGhpcyBpcyBub3QgcG9zc2libGUuIEFib3J0ISIKKwkJZXhpdCAxCisJZmkKIGVsc2UKIAlpZiBbIC1uICIkKGVjaG8gJHRhcmdldF9zZGtfZGlyfGdyZXAgJyAnKSIgXTsgdGhlbgogCQllY2hvICJUaGUgdGFyZ2V0IGRpcmVjdG9yeSBwYXRoICgkdGFyZ2V0X3Nka19kaXIpIGNvbnRhaW5zIHNwYWNlcy4gQWJvcnQhIgpAQCAtMTg1LDggKzIwOCw2IEBACiAJJFNVRE9fRVhFQyBta2RpciAtcCAkdGFyZ2V0X3Nka19kaXIgPi9kZXYvbnVsbCAyPiYxCiBmaQogCi1wYXlsb2FkX29mZnNldD0kKCgkKGdyZXAgLW5hIC1tMSAiXk1BUktFUjokIiAkMHxjdXQgLWQnOicgLWYxKSArIDEpKQotCiBwcmludGYgIkV4dHJhY3RpbmcgU0RLLi4uIgogdGFpbCAtbiArJHBheWxvYWRfb2Zmc2V0ICQwfCAkU1VET19FWEVDIHRhciB4SiAtQyAkdGFyZ2V0X3Nka19kaXIgLS1jaGVja3BvaW50PS4yNTAwICRFWFRSQV9UQVJfT1BUSU9OUyB8fCBleGl0IDEKIGVjaG8gImRvbmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9maWxlcy90b29sY2hhaW4tc2hhci1yZWxvY2F0ZS5zaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2ZpbGVzL3Rvb2xjaGFpbi1zaGFyLXJlbG9jYXRlLnNoCmluZGV4IGQ0YmNmMGUuLmUzYzEwMDEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2ZpbGVzL3Rvb2xjaGFpbi1zaGFyLXJlbG9jYXRlLnNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2ZpbGVzL3Rvb2xjaGFpbi1zaGFyLXJlbG9jYXRlLnNoCkBAIC0xLDMgKzEsOCBAQAoraWYgISB4YXJncyAtLXZlcnNpb24gPiAvZGV2L251bGwgMj4mMTsgdGhlbgorCWVjaG8gInhhcmdzIGlzIHJlcXVpcmVkIGJ5IHRoZSByZWxvY2F0aW9uIHNjcmlwdCwgcGxlYXNlIGluc3RhbGwgaXQgZmlyc3QuIEFib3J0ISIKKwlleGl0IDEKK2ZpCisKICMgZml4IGR5bmFtaWMgbG9hZGVyIHBhdGhzIGluIGFsbCBFTEYgU0RLIGJpbmFyaWVzCiBuYXRpdmVfc3lzcm9vdD0kKCRTVURPX0VYRUMgY2F0ICRlbnZfc2V0dXBfc2NyaXB0IHxncmVwICdPRUNPUkVfTkFUSVZFX1NZU1JPT1Q9J3xjdXQgLWQnPScgLWYyfHRyIC1kICciJykKIGRsX3BhdGg9JCgkU1VET19FWEVDIGZpbmQgJG5hdGl2ZV9zeXNyb290L2xpYiAtbmFtZSAibGQtbGludXgqIikKQEAgLTcsNiArMTIsMTAgQEAKIGZpCiBleGVjdXRhYmxlX2ZpbGVzPSQoJFNVRE9fRVhFQyBmaW5kICRuYXRpdmVfc3lzcm9vdCAtdHlwZSBmIFwKIAlcKCAtcGVybSAtMDEwMCAtbyAtcGVybSAtMDAxMCAtbyAtcGVybSAtMDAwMSBcKSAtcHJpbnRmICInJWgvJWYnICIpCitpZiBbICJ4JGV4ZWN1dGFibGVfZmlsZXMiID0gIngiIF07IHRoZW4KKyAgIGVjaG8gIlNESyByZWxvY2F0ZSBmYWlsZWQsIGNvdWxkIG5vdCBnZXQgZXhlY3V0YWxiZSBmaWxlcyIKKyAgIGV4aXQgMQorZmkKIAogdGRpcj1gbWt0ZW1wIC1kYAogaWYgWyB4JHRkaXIgPSB4IF0gOyB0aGVuCkBAIC0xNCw3ICsyMyw3IEBACiAgICBleGl0IDEKIGZpCiBjYXQgPDxFT0YgPj4gJHRkaXIvcmVsb2NhdGVfc2RrLnNoCi0jIS9iaW4vYmFzaAorIyEvYmluL3NoCiBmb3IgcHkgaW4gcHl0aG9uIHB5dGhvbjIgcHl0aG9uMwogZG8KIAlQWVRIT049XGB3aGljaCBcJHtweX0gMj4vZGV2L251bGxcYApAQCAtNTMsOSArNjIsMTggQEAKICAgICAgICAgLWUgInM6XiMhICovdXNyL2Jpbi9wZXJsLio6IyEgL3Vzci9iaW4vZW52IHBlcmw6ZyIgXAogICAgICAgICAtZSAiczogL3Vzci9iaW4vcGVybDogL3Vzci9iaW4vZW52IHBlcmw6ZyIKIAoraWYgWyAkPyAtbmUgMCBdOyB0aGVuCisJZWNobyAiRmFpbGVkIHRvIHJlcGxhY2UgcGVybC4gUmVsb2NhdGUgc2NyaXB0IGZhaWxlZC4gQWJvcnQhIgorCWV4aXQgMQorZmkKKwogIyBjaGFuZ2UgYWxsIHN5bWxpbmtzIHBvaW50aW5nIHRvIEBTREtQQVRIQAogZm9yIGwgaW4gJCgkU1VET19FWEVDIGZpbmQgJG5hdGl2ZV9zeXNyb290IC10eXBlIGwpOyBkbwogCSRTVURPX0VYRUMgbG4gLXNmbiAkKHJlYWRsaW5rICRsfCRTVURPX0VYRUMgc2VkIC1lICJzOiRERUZBVUxUX0lOU1RBTExfRElSOiR0YXJnZXRfc2RrX2RpcjoiKSAkbAorCWlmIFsgJD8gLW5lIDAgXTsgdGhlbgorCQllY2hvICJGYWlsZWQgdG8gc2V0dXAgc3ltbGlua3MuIFJlbG9jYXRlIHNjcmlwdCBmYWlsZWQuIEFib3J0ISIKKwkJZXhpdCAxCisgICAgZmkKIGRvbmUKIAogZWNobyBkb25lCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvYnVpbGRoaXN0b3J5X2FuYWx5c2lzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2J1aWxkaGlzdG9yeV9hbmFseXNpcy5weQppbmRleCA1Mzk1Yzc2Li5iNmMwMjY1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvYnVpbGRoaXN0b3J5X2FuYWx5c2lzLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9idWlsZGhpc3RvcnlfYW5hbHlzaXMucHkKQEAgLTYyLDcgKzYyLDcgQEAKIAogICAgICAgICBkZWYgcGtnbGlzdF9jb21iaW5lKGRlcHZlcik6CiAgICAgICAgICAgICBwa2dsaXN0ID0gW10KLSAgICAgICAgICAgIGZvciBrLHYgaW4gZGVwdmVyLml0ZXJpdGVtcygpOgorICAgICAgICAgICAgZm9yIGssdiBpbiBkZXB2ZXIuaXRlbXMoKToKICAgICAgICAgICAgICAgICBpZiB2OgogICAgICAgICAgICAgICAgICAgICBwa2dsaXN0LmFwcGVuZCgiJXMgKCVzKSIgJSAoayx2KSkKICAgICAgICAgICAgICAgICBlbHNlOgpAQCAtMTkwLDcgKzE5MCw3IEBACiAKIAogZGVmIGJsb2JfdG9fZGljdChibG9iKToKLSAgICBhbGluZXMgPSBibG9iLmRhdGFfc3RyZWFtLnJlYWQoKS5zcGxpdGxpbmVzKCkKKyAgICBhbGluZXMgPSBbbGluZSBmb3IgbGluZSBpbiBibG9iLmRhdGFfc3RyZWFtLnJlYWQoKS5kZWNvZGUoJ3V0Zi04Jykuc3BsaXRsaW5lcygpXQogICAgIGFkaWN0ID0ge30KICAgICBmb3IgbGluZSBpbiBhbGluZXM6CiAgICAgICAgIHNwbGl0diA9IFtpLnN0cmlwKCkgZm9yIGkgaW4gbGluZS5zcGxpdCgnPScsMSldCkBAIC0yMjAsNyArMjIwLDcgQEAKICAgICBhZGljdCA9IGZpbGVfbGlzdF90b19kaWN0KGFsaW5lcykKICAgICBiZGljdCA9IGZpbGVfbGlzdF90b19kaWN0KGJsaW5lcykKICAgICBmaWxlY2hhbmdlcyA9IFtdCi0gICAgZm9yIHBhdGgsIHNwbGl0diBpbiBhZGljdC5pdGVyaXRlbXMoKToKKyAgICBmb3IgcGF0aCwgc3BsaXR2IGluIGFkaWN0Lml0ZW1zKCk6CiAgICAgICAgIG5ld3NwbGl0diA9IGJkaWN0LnBvcChwYXRoLCBOb25lKQogICAgICAgICBpZiBuZXdzcGxpdHY6CiAgICAgICAgICAgICAjIENoZWNrIHR5cGUKQEAgLTM1OSw2ICszNTksMjQgQEAKICAgICAgICAgICAgICAgICBpZiAnICcuam9pbihhbGlzdCkgPT0gJyAnLmpvaW4oYmxpc3QpOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogCisgICAgICAgICAgICBpZiBrZXkgPT0gJ1BLR1InIGFuZCBub3QgcmVwb3J0X2FsbDoKKyAgICAgICAgICAgICAgICB2ZXJzID0gW10KKyAgICAgICAgICAgICAgICAjIHN0cmlwIGxlYWRpbmcgJ3InIGFuZCBkb3RzCisgICAgICAgICAgICAgICAgZm9yIHZlciBpbiAoYXN0ci5zcGxpdCgpWzBdLCBic3RyLnNwbGl0KClbMF0pOgorICAgICAgICAgICAgICAgICAgICBpZiB2ZXIuc3RhcnRzd2l0aCgncicpOgorICAgICAgICAgICAgICAgICAgICAgICAgdmVyID0gdmVyWzE6XQorICAgICAgICAgICAgICAgICAgICB2ZXJzLmFwcGVuZCh2ZXIucmVwbGFjZSgnLicsICcnKSkKKyAgICAgICAgICAgICAgICBtYXhsZW4gPSBtYXgobGVuKHZlcnNbMF0pLCBsZW4odmVyc1sxXSkpCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAjIHBhZCB3aXRoICcwJyBhbmQgY29udmVydCB0byBpbnQKKyAgICAgICAgICAgICAgICAgICAgdmVycyA9IFtpbnQodmVyLmxqdXN0KG1heGxlbiwgJzAnKSkgZm9yIHZlciBpbiB2ZXJzXQorICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICMgc2tpcCBkZWNyZW1lbnRzIGFuZCBpbmNyZW1lbnRzCisgICAgICAgICAgICAgICAgICAgIGlmIGFicyh2ZXJzWzBdIC0gdmVyc1sxXSkgPT0gMToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKICAgICAgICAgICAgIGNoZyA9IENoYW5nZVJlY29yZChwYXRoLCBrZXksIGFzdHIsIGJzdHIsIG1vbml0b3JlZCkKICAgICAgICAgICAgIGNoYW5nZXMuYXBwZW5kKGNoZykKICAgICByZXR1cm4gY2hhbmdlcwpAQCAtMzc4LDM0ICszOTYsMzQgQEAKICAgICAgICAgICAgIGlmIGZpbGVuYW1lID09ICdsYXRlc3QnOgogICAgICAgICAgICAgICAgIGNoYW5nZXMuZXh0ZW5kKGNvbXBhcmVfZGljdF9ibG9icyhwYXRoLCBkLmFfYmxvYiwgZC5iX2Jsb2IsIHJlcG9ydF9hbGwsIHJlcG9ydF92ZXIpKQogICAgICAgICAgICAgZWxpZiBmaWxlbmFtZS5zdGFydHN3aXRoKCdsYXRlc3QuJyk6Ci0gICAgICAgICAgICAgICAgY2hnID0gQ2hhbmdlUmVjb3JkKHBhdGgsIGZpbGVuYW1lLCBkLmFfYmxvYi5kYXRhX3N0cmVhbS5yZWFkKCksIGQuYl9ibG9iLmRhdGFfc3RyZWFtLnJlYWQoKSwgVHJ1ZSkKKyAgICAgICAgICAgICAgICBjaGcgPSBDaGFuZ2VSZWNvcmQocGF0aCwgZmlsZW5hbWUsIGQuYV9ibG9iLmRhdGFfc3RyZWFtLnJlYWQoKS5kZWNvZGUoJ3V0Zi04JyksIGQuYl9ibG9iLmRhdGFfc3RyZWFtLnJlYWQoKS5kZWNvZGUoJ3V0Zi04JyksIFRydWUpCiAgICAgICAgICAgICAgICAgY2hhbmdlcy5hcHBlbmQoY2hnKQogICAgICAgICBlbGlmIHBhdGguc3RhcnRzd2l0aCgnaW1hZ2VzLycpOgogICAgICAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKGQuYV9ibG9iLnBhdGgpCiAgICAgICAgICAgICBpZiBmaWxlbmFtZSBpbiBpbWdfbW9uaXRvcl9maWxlczoKICAgICAgICAgICAgICAgICBpZiBmaWxlbmFtZSA9PSAnZmlsZXMtaW4taW1hZ2UudHh0JzoKLSAgICAgICAgICAgICAgICAgICAgYWxpbmVzID0gZC5hX2Jsb2IuZGF0YV9zdHJlYW0ucmVhZCgpLnNwbGl0bGluZXMoKQotICAgICAgICAgICAgICAgICAgICBibGluZXMgPSBkLmJfYmxvYi5kYXRhX3N0cmVhbS5yZWFkKCkuc3BsaXRsaW5lcygpCisgICAgICAgICAgICAgICAgICAgIGFsaW5lcyA9IGQuYV9ibG9iLmRhdGFfc3RyZWFtLnJlYWQoKS5kZWNvZGUoJ3V0Zi04Jykuc3BsaXRsaW5lcygpCisgICAgICAgICAgICAgICAgICAgIGJsaW5lcyA9IGQuYl9ibG9iLmRhdGFfc3RyZWFtLnJlYWQoKS5kZWNvZGUoJ3V0Zi04Jykuc3BsaXRsaW5lcygpCiAgICAgICAgICAgICAgICAgICAgIGZpbGVjaGFuZ2VzID0gY29tcGFyZV9maWxlX2xpc3RzKGFsaW5lcyxibGluZXMpCiAgICAgICAgICAgICAgICAgICAgIGlmIGZpbGVjaGFuZ2VzOgogICAgICAgICAgICAgICAgICAgICAgICAgY2hnID0gQ2hhbmdlUmVjb3JkKHBhdGgsIGZpbGVuYW1lLCBOb25lLCBOb25lLCBUcnVlKQogICAgICAgICAgICAgICAgICAgICAgICAgY2hnLmZpbGVjaGFuZ2VzID0gZmlsZWNoYW5nZXMKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZXMuYXBwZW5kKGNoZykKICAgICAgICAgICAgICAgICBlbGlmIGZpbGVuYW1lID09ICdpbnN0YWxsZWQtcGFja2FnZS1uYW1lcy50eHQnOgotICAgICAgICAgICAgICAgICAgICBhbGluZXMgPSBkLmFfYmxvYi5kYXRhX3N0cmVhbS5yZWFkKCkuc3BsaXRsaW5lcygpCi0gICAgICAgICAgICAgICAgICAgIGJsaW5lcyA9IGQuYl9ibG9iLmRhdGFfc3RyZWFtLnJlYWQoKS5zcGxpdGxpbmVzKCkKKyAgICAgICAgICAgICAgICAgICAgYWxpbmVzID0gZC5hX2Jsb2IuZGF0YV9zdHJlYW0ucmVhZCgpLmRlY29kZSgndXRmLTgnKS5zcGxpdGxpbmVzKCkKKyAgICAgICAgICAgICAgICAgICAgYmxpbmVzID0gZC5iX2Jsb2IuZGF0YV9zdHJlYW0ucmVhZCgpLmRlY29kZSgndXRmLTgnKS5zcGxpdGxpbmVzKCkKICAgICAgICAgICAgICAgICAgICAgZmlsZWNoYW5nZXMgPSBjb21wYXJlX2xpc3RzKGFsaW5lcyxibGluZXMpCiAgICAgICAgICAgICAgICAgICAgIGlmIGZpbGVjaGFuZ2VzOgogICAgICAgICAgICAgICAgICAgICAgICAgY2hnID0gQ2hhbmdlUmVjb3JkKHBhdGgsIGZpbGVuYW1lLCBOb25lLCBOb25lLCBUcnVlKQogICAgICAgICAgICAgICAgICAgICAgICAgY2hnLmZpbGVjaGFuZ2VzID0gZmlsZWNoYW5nZXMKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZXMuYXBwZW5kKGNoZykKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBjaGcgPSBDaGFuZ2VSZWNvcmQocGF0aCwgZmlsZW5hbWUsIGQuYV9ibG9iLmRhdGFfc3RyZWFtLnJlYWQoKSwgZC5iX2Jsb2IuZGF0YV9zdHJlYW0ucmVhZCgpLCBUcnVlKQorICAgICAgICAgICAgICAgICAgICBjaGcgPSBDaGFuZ2VSZWNvcmQocGF0aCwgZmlsZW5hbWUsIGQuYV9ibG9iLmRhdGFfc3RyZWFtLnJlYWQoKS5kZWNvZGUoJ3V0Zi04JyksIGQuYl9ibG9iLmRhdGFfc3RyZWFtLnJlYWQoKS5kZWNvZGUoJ3V0Zi04JyksIFRydWUpCiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZXMuYXBwZW5kKGNoZykKICAgICAgICAgICAgIGVsaWYgZmlsZW5hbWUgPT0gJ2ltYWdlLWluZm8udHh0JzoKICAgICAgICAgICAgICAgICBjaGFuZ2VzLmV4dGVuZChjb21wYXJlX2RpY3RfYmxvYnMocGF0aCwgZC5hX2Jsb2IsIGQuYl9ibG9iLCByZXBvcnRfYWxsLCByZXBvcnRfdmVyKSkKICAgICAgICAgICAgIGVsaWYgJy9pbWFnZS1maWxlcy8nIGluIHBhdGg6Ci0gICAgICAgICAgICAgICAgY2hnID0gQ2hhbmdlUmVjb3JkKHBhdGgsIGZpbGVuYW1lLCBkLmFfYmxvYi5kYXRhX3N0cmVhbS5yZWFkKCksIGQuYl9ibG9iLmRhdGFfc3RyZWFtLnJlYWQoKSwgVHJ1ZSkKKyAgICAgICAgICAgICAgICBjaGcgPSBDaGFuZ2VSZWNvcmQocGF0aCwgZmlsZW5hbWUsIGQuYV9ibG9iLmRhdGFfc3RyZWFtLnJlYWQoKS5kZWNvZGUoJ3V0Zi04JyksIGQuYl9ibG9iLmRhdGFfc3RyZWFtLnJlYWQoKS5kZWNvZGUoJ3V0Zi04JyksIFRydWUpCiAgICAgICAgICAgICAgICAgY2hhbmdlcy5hcHBlbmQoY2hnKQogCiAgICAgIyBMb29rIGZvciBhZGRlZCBwcmVpbnN0L3Bvc3RpbnN0L3ByZXJtL3Bvc3RybQpAQCAtNDE5LDcgKzQzNyw3IEBACiAgICAgICAgICAgICBpZiBmaWxlbmFtZSA9PSAnbGF0ZXN0JzoKICAgICAgICAgICAgICAgICBhZGRlZHBrZ3MuYXBwZW5kKHBhdGgpCiAgICAgICAgICAgICBlbGlmIGZpbGVuYW1lLnN0YXJ0c3dpdGgoJ2xhdGVzdC4nKToKLSAgICAgICAgICAgICAgICBjaGcgPSBDaGFuZ2VSZWNvcmQocGF0aCwgZmlsZW5hbWVbNzpdLCAnJywgZC5iX2Jsb2IuZGF0YV9zdHJlYW0ucmVhZCgpLCBUcnVlKQorICAgICAgICAgICAgICAgIGNoZyA9IENoYW5nZVJlY29yZChwYXRoLCBmaWxlbmFtZVs3Ol0sICcnLCBkLmJfYmxvYi5kYXRhX3N0cmVhbS5yZWFkKCkuZGVjb2RlKCd1dGYtOCcpLCBUcnVlKQogICAgICAgICAgICAgICAgIGFkZGVkY2hhbmdlcy5hcHBlbmQoY2hnKQogICAgIGZvciBjaGcgaW4gYWRkZWRjaGFuZ2VzOgogICAgICAgICBmb3VuZCA9IEZhbHNlCkBAIC00MzYsNyArNDU0LDcgQEAKICAgICAgICAgaWYgcGF0aC5zdGFydHN3aXRoKCdwYWNrYWdlcy8nKToKICAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5iYXNlbmFtZShkLmFfYmxvYi5wYXRoKQogICAgICAgICAgICAgaWYgZmlsZW5hbWUgIT0gJ2xhdGVzdCcgYW5kIGZpbGVuYW1lLnN0YXJ0c3dpdGgoJ2xhdGVzdC4nKToKLSAgICAgICAgICAgICAgICBjaGcgPSBDaGFuZ2VSZWNvcmQocGF0aCwgZmlsZW5hbWVbNzpdLCBkLmFfYmxvYi5kYXRhX3N0cmVhbS5yZWFkKCksICcnLCBUcnVlKQorICAgICAgICAgICAgICAgIGNoZyA9IENoYW5nZVJlY29yZChwYXRoLCBmaWxlbmFtZVs3Ol0sIGQuYV9ibG9iLmRhdGFfc3RyZWFtLnJlYWQoKS5kZWNvZGUoJ3V0Zi04JyksICcnLCBUcnVlKQogICAgICAgICAgICAgICAgIGNoYW5nZXMuYXBwZW5kKGNoZykKIAogICAgICMgTGluayByZWxhdGVkIGNoYW5nZXMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9jbGFzc2V4dGVuZC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9jbGFzc2V4dGVuZC5weQppbmRleCA1MTA3ZWNkLi40YzhhMDAwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvY2xhc3NleHRlbmQucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2NsYXNzZXh0ZW5kLnB5CkBAIC0xLDMgKzEsNSBAQAoraW1wb3J0IGNvbGxlY3Rpb25zCisKIGNsYXNzIENsYXNzRXh0ZW5kZXIob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgZXh0bmFtZSwgZCk6CiAgICAgICAgIHNlbGYuZXh0bmFtZSA9IGV4dG5hbWUKQEAgLTc3LDcgKzc5LDcgQEAKICAgICAgICAgICAgIHNlbGYuZC5zZXRWYXIoIkVYVEVORFBLR1YiLCBvcmlnKQogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGRlcHMgPSBiYi51dGlscy5leHBsb2RlX2RlcF92ZXJzaW9uczIoZGVwcykKLSAgICAgICAgbmV3ZGVwcyA9IHt9CisgICAgICAgIG5ld2RlcHMgPSBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCgpCiAgICAgICAgIGZvciBkZXAgaW4gZGVwczoKICAgICAgICAgICAgIG5ld2RlcHNbc2VsZi5tYXBfZGVwZW5kcyhkZXApXSA9IGRlcHNbZGVwXQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvY2xhc3N1dGlscy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9jbGFzc3V0aWxzLnB5CmluZGV4IDU4MTg4ZmQuLmU3ODU2YzggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9jbGFzc3V0aWxzLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9jbGFzc3V0aWxzLnB5CkBAIC0xLDQgKzEsMTEgQEAKLWNsYXNzIENsYXNzUmVnaXN0cnkodHlwZSk6CisKK2NsYXNzIENsYXNzUmVnaXN0cnlNZXRhKHR5cGUpOgorICAgICIiIkdpdmUgZWFjaCBDbGFzc1JlZ2lzdHJ5IHRoZWlyIG93biByZWdpc3RyeSIiIgorICAgIGRlZiBfX2luaXRfXyhjbHMsIG5hbWUsIGJhc2VzLCBhdHRycyk6CisgICAgICAgIGNscy5yZWdpc3RyeSA9IHt9CisgICAgICAgIHR5cGUuX19pbml0X18oY2xzLCBuYW1lLCBiYXNlcywgYXR0cnMpCisKK2NsYXNzIENsYXNzUmVnaXN0cnkodHlwZSwgbWV0YWNsYXNzPUNsYXNzUmVnaXN0cnlNZXRhKToKICAgICAiIiJNYWludGFpbiBhIHJlZ2lzdHJ5IG9mIGNsYXNzZXMsIGluZGV4ZWQgYnkgbmFtZS4KIAogTm90ZSB0aGF0IHRoaXMgaW1wbGVtZW50YXRpb24gcmVxdWlyZXMgdGhhdCB0aGUgbmFtZXMgYmUgdW5pcXVlLCBhcyBpdCB1c2VzCkBAIC0xMiwxMiArMTksNiBAQAogY29udHJvbCBvdmVyIHdoZXRoZXIgdGhlIGNsYXNzIHdpbGwgYmUgYWRkZWQgdG8gdGhlIHJlZ2lzdHJ5IChlLmcuIHRvIGtlZXAKIGFic3RyYWN0IGJhc2UgY2xhc3NlcyBvdXQgb2YgdGhlIHJlZ2lzdHJ5KS4iIiIKICAgICBwcmlvcml0eSA9IDAKLSAgICBjbGFzcyBfX21ldGFjbGFzc19fKHR5cGUpOgotICAgICAgICAiIiJHaXZlIGVhY2ggQ2xhc3NSZWdpc3RyeSB0aGVpciBvd24gcmVnaXN0cnkiIiIKLSAgICAgICAgZGVmIF9faW5pdF9fKGNscywgbmFtZSwgYmFzZXMsIGF0dHJzKToKLSAgICAgICAgICAgIGNscy5yZWdpc3RyeSA9IHt9Ci0gICAgICAgICAgICB0eXBlLl9faW5pdF9fKGNscywgbmFtZSwgYmFzZXMsIGF0dHJzKQotCiAgICAgZGVmIF9faW5pdF9fKGNscywgbmFtZSwgYmFzZXMsIGF0dHJzKToKICAgICAgICAgc3VwZXIoQ2xhc3NSZWdpc3RyeSwgY2xzKS5fX2luaXRfXyhuYW1lLCBiYXNlcywgYXR0cnMpCiAgICAgICAgIHRyeToKQEAgLTM0LDcgKzM1LDcgQEAKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBwcmlvcml0aXplZCh0Y2xzKToKLSAgICAgICAgcmV0dXJuIHNvcnRlZCh0Y2xzLnJlZ2lzdHJ5LnZhbHVlcygpLAorICAgICAgICByZXR1cm4gc29ydGVkKGxpc3QodGNscy5yZWdpc3RyeS52YWx1ZXMoKSksCiAgICAgICAgICAgICAgICAgICAgICAga2V5PWxhbWJkYSB2OiB2LnByaW9yaXR5LCByZXZlcnNlPVRydWUpCiAKICAgICBkZWYgdW5yZWdpc3RlcihjbHMpOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2NvcHlfYnVpbGRzeXN0ZW0ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvY29weV9idWlsZHN5c3RlbS5weQppbmRleCA3YjlhMGVlLi5hZmFmZjY4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvY29weV9idWlsZHN5c3RlbS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvY29weV9idWlsZHN5c3RlbS5weQpAQCAtMTcsNyArMTcsNyBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb250ZXh0LCBkKToKICAgICAgICAgc2VsZi5kID0gZAogICAgICAgICBzZWxmLmNvbnRleHQgPSBjb250ZXh0Ci0gICAgICAgIHNlbGYubGF5ZXJkaXJzID0gZC5nZXRWYXIoJ0JCTEFZRVJTJywgVHJ1ZSkuc3BsaXQoKQorICAgICAgICBzZWxmLmxheWVyZGlycyA9IFtvcy5wYXRoLmFic3BhdGgocHRoKSBmb3IgcHRoIGluIGQuZ2V0VmFyKCdCQkxBWUVSUycsIFRydWUpLnNwbGl0KCldCiAgICAgICAgIHNlbGYubGF5ZXJzX2V4Y2x1ZGUgPSAoZC5nZXRWYXIoJ1NES19MQVlFUlNfRVhDTFVERScsIFRydWUpIG9yICIiKS5zcGxpdCgpCiAKICAgICBkZWYgY29weV9iaXRiYWtlX2FuZF9sYXllcnMoc2VsZiwgZGVzdGRpciwgd29ya3NwYWNlX25hbWU9Tm9uZSk6CkBAIC0yNiw3ICsyNiw3IEBACiAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihkZXN0ZGlyKQogICAgICAgICBsYXllcnMgPSBsaXN0KHNlbGYubGF5ZXJkaXJzKQogCi0gICAgICAgIGNvcmViYXNlID0gc2VsZi5kLmdldFZhcignQ09SRUJBU0UnLCBUcnVlKQorICAgICAgICBjb3JlYmFzZSA9IG9zLnBhdGguYWJzcGF0aChzZWxmLmQuZ2V0VmFyKCdDT1JFQkFTRScsIFRydWUpKQogICAgICAgICBsYXllcnMuYXBwZW5kKGNvcmViYXNlKQogCiAgICAgICAgICMgRXhjbHVkZSBsYXllcnMKQEAgLTEyNCw3ICsxMjQsNyBAQAogZGVmIGdlbmVyYXRlX2xvY2tlZF9zaWdzKHNpZ2ZpbGUsIGQpOgogICAgIGJiLnV0aWxzLm1rZGlyaGllcihvcy5wYXRoLmRpcm5hbWUoc2lnZmlsZSkpCiAgICAgZGVwZCA9IGQuZ2V0VmFyKCdCQl9UQVNLREVQREFUQScsIEZhbHNlKQotICAgIHRhc2tzID0gWyclcy4lcycgJSAodlsyXSwgdlsxXSkgZm9yIHYgaW4gZGVwZC5pdGVydmFsdWVzKCldCisgICAgdGFza3MgPSBbJyVzLiVzJyAlICh2WzJdLCB2WzFdKSBmb3IgdiBpbiBkZXBkLnZhbHVlcygpXQogICAgIGJiLnBhcnNlLnNpZ2dlbi5kdW1wX2xvY2tlZHNpZ3Moc2lnZmlsZSwgdGFza3MpCiAKIGRlZiBwcnVuZV9sb2NrZWRzaWdzKGV4Y2x1ZGVkX3Rhc2tzLCBleGNsdWRlZF90YXJnZXRzLCBsb2NrZWRzaWdzLCBwcnVuZWRfb3V0cHV0KToKQEAgLTE0NSw3ICsxNDUsNyBAQAogICAgICAgICAgICAgICAgICAgICBpbnZhbHVlID0gVHJ1ZQogICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGxpbmUpCiAKLWRlZiBtZXJnZV9sb2NrZWRzaWdzKGNvcHlfdGFza3MsIGxvY2tlZHNpZ3NfbWFpbiwgbG9ja2Vkc2lnc19leHRyYSwgbWVyZ2VkX291dHB1dCwgY29weV9vdXRwdXQpOgorZGVmIG1lcmdlX2xvY2tlZHNpZ3MoY29weV90YXNrcywgbG9ja2Vkc2lnc19tYWluLCBsb2NrZWRzaWdzX2V4dHJhLCBtZXJnZWRfb3V0cHV0LCBjb3B5X291dHB1dD1Ob25lKToKICAgICBtZXJnZWQgPSB7fQogICAgIGFyY2hfb3JkZXIgPSBbXQogICAgIHdpdGggb3Blbihsb2NrZWRzaWdzX21haW4sICdyJykgYXMgZjoKQEAgLTE5NSwyMyArMTk1LDQ2IEBACiAgICAgICAgICAgICAgICAgICAgIGZ1bGx0eXBlcy5hcHBlbmQodHlwZW5hbWUpCiAgICAgICAgICAgICBmLndyaXRlKCdTSUdHRU5fTE9DS0VEU0lHU19UWVBFUyA9ICIlcyJcbicgJSAnICcuam9pbihmdWxsdHlwZXMpKQogCi0gICAgd3JpdGVfc2lnc19maWxlKGNvcHlfb3V0cHV0LCB0b2NvcHkua2V5cygpLCB0b2NvcHkpCisgICAgaWYgY29weV9vdXRwdXQ6CisgICAgICAgIHdyaXRlX3NpZ3NfZmlsZShjb3B5X291dHB1dCwgbGlzdCh0b2NvcHkua2V5cygpKSwgdG9jb3B5KQogICAgIGlmIG1lcmdlZF9vdXRwdXQ6CiAgICAgICAgIHdyaXRlX3NpZ3NfZmlsZShtZXJnZWRfb3V0cHV0LCBhcmNoX29yZGVyLCBtZXJnZWQpCiAKLWRlZiBjcmVhdGVfbG9ja2VkX3NzdGF0ZV9jYWNoZShsb2NrZWRzaWdzLCBpbnB1dF9zc3RhdGVfY2FjaGUsIG91dHB1dF9zc3RhdGVfY2FjaGUsIGQsIGZpeGVkbHNic3RyaW5nPSIiKToKK2RlZiBjcmVhdGVfbG9ja2VkX3NzdGF0ZV9jYWNoZShsb2NrZWRzaWdzLCBpbnB1dF9zc3RhdGVfY2FjaGUsIG91dHB1dF9zc3RhdGVfY2FjaGUsIGQsIGZpeGVkbHNic3RyaW5nPSIiLCBmaWx0ZXJmaWxlPU5vbmUpOgorICAgIGltcG9ydCBzaHV0aWwKICAgICBiYi5ub3RlKCdHZW5lcmF0aW5nIHNzdGF0ZS1jYWNoZS4uLicpCiAKICAgICBuYXRpdmVsc2JzdHJpbmcgPSBkLmdldFZhcignTkFUSVZFTFNCU1RSSU5HJywgVHJ1ZSkKLSAgICBiYi5wcm9jZXNzLnJ1bigiZ2VuLWxvY2tlZHNpZy1jYWNoZSAlcyAlcyAlcyAlcyIgJSAobG9ja2Vkc2lncywgaW5wdXRfc3N0YXRlX2NhY2hlLCBvdXRwdXRfc3N0YXRlX2NhY2hlLCBuYXRpdmVsc2JzdHJpbmcpKQotICAgIGlmIGZpeGVkbHNic3RyaW5nOgorICAgIGJiLnByb2Nlc3MucnVuKCJnZW4tbG9ja2Vkc2lnLWNhY2hlICVzICVzICVzICVzICVzIiAlIChsb2NrZWRzaWdzLCBpbnB1dF9zc3RhdGVfY2FjaGUsIG91dHB1dF9zc3RhdGVfY2FjaGUsIG5hdGl2ZWxzYnN0cmluZywgZmlsdGVyZmlsZSBvciAnJykpCisgICAgaWYgZml4ZWRsc2JzdHJpbmcgYW5kIG5hdGl2ZWxzYnN0cmluZyAhPSBmaXhlZGxzYnN0cmluZzoKICAgICAgICAgbmF0aXZlZGlyID0gb3V0cHV0X3NzdGF0ZV9jYWNoZSArICcvJyArIG5hdGl2ZWxzYnN0cmluZwogICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKG5hdGl2ZWRpcik6CiAgICAgICAgICAgICBkZXN0ZGlyID0gb3MucGF0aC5qb2luKG91dHB1dF9zc3RhdGVfY2FjaGUsIGZpeGVkbHNic3RyaW5nKQotICAgICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKGRlc3RkaXIpCisgICAgICAgICAgICBmb3Igcm9vdCwgXywgZmlsZXMgaW4gb3Mud2FsayhuYXRpdmVkaXIpOgorICAgICAgICAgICAgICAgIGZvciBmbiBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHJvb3QsIGZuKQorICAgICAgICAgICAgICAgICAgICBkZXN0ID0gb3MucGF0aC5qb2luKGRlc3RkaXIsIG9zLnBhdGgucmVscGF0aChzcmMsIG5hdGl2ZWRpcikpCisgICAgICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGRlc3QpOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBBbHJlYWR5IGV4aXN0cywgYW5kIGl0J2xsIGJlIHRoZSBzYW1lIGZpbGUsIHNvIGp1c3QgZGVsZXRlIGl0CisgICAgICAgICAgICAgICAgICAgICAgICBvcy51bmxpbmsoc3JjKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKG9zLnBhdGguZGlybmFtZShkZXN0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNodXRpbC5tb3ZlKHNyYywgZGVzdCkKIAotICAgICAgICAgICAgZGlybGlzdCA9IG9zLmxpc3RkaXIobmF0aXZlZGlyKQotICAgICAgICAgICAgZm9yIGkgaW4gZGlybGlzdDoKLSAgICAgICAgICAgICAgICBzcmMgPSBvcy5wYXRoLmpvaW4obmF0aXZlZGlyLCBpKQotICAgICAgICAgICAgICAgIGRlc3QgPSBvcy5wYXRoLmpvaW4oZGVzdGRpciwgaSkKLSAgICAgICAgICAgICAgICBvcy5yZW5hbWUoc3JjLCBkZXN0KQorZGVmIGNoZWNrX3NzdGF0ZV90YXNrX2xpc3QoZCwgdGFyZ2V0cywgZmlsdGVyb3V0ZmlsZSwgY21kcHJlZml4PScnLCBjd2Q9Tm9uZSwgbG9nZmlsZT1Ob25lKToKKyAgICBpbXBvcnQgc3VicHJvY2VzcworCisgICAgYmIubm90ZSgnR2VuZXJhdGluZyBzc3RhdGUgdGFzayBsaXN0Li4uJykKKworICAgIGlmIG5vdCBjd2Q6CisgICAgICAgIGN3ZCA9IG9zLmdldGN3ZCgpCisgICAgaWYgbG9nZmlsZToKKyAgICAgICAgbG9ncGFyYW0gPSAnLWwgJXMnICUgbG9nZmlsZQorICAgIGVsc2U6CisgICAgICAgIGxvZ3BhcmFtID0gJycKKyAgICBjbWQgPSAiJXNCQl9TRVRTQ0VORV9FTkZPUkNFPTEgUFNFVURPX0RJU0FCTEVEPTEgb2UtY2hlY2stc3N0YXRlICVzIC1zIC1vICVzICVzIiAlIChjbWRwcmVmaXgsIHRhcmdldHMsIGZpbHRlcm91dGZpbGUsIGxvZ3BhcmFtKQorICAgIGVudiA9IGRpY3QoZC5nZXRWYXIoJ0JCX09SSUdFTlYnLCBGYWxzZSkpCisgICAgZW52LnBvcCgnQlVJTERESVInLCAnJykKKyAgICBwYXRoaXRlbXMgPSBlbnZbJ1BBVEgnXS5zcGxpdCgnOicpCisgICAgZW52WydQQVRIJ10gPSAnOicuam9pbihbaXRlbSBmb3IgaXRlbSBpbiBwYXRoaXRlbXMgaWYgbm90IGl0ZW0uZW5kc3dpdGgoJy9iaXRiYWtlL2JpbicpXSkKKyAgICBiYi5wcm9jZXNzLnJ1bihjbWQsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwgZW52PWVudiwgY3dkPWN3ZCwgZXhlY3V0YWJsZT0nL2Jpbi9iYXNoJykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9kYXRhLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2RhdGEucHkKaW5kZXggZTQ5NTcyMS4uZWU0ODk1MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2RhdGEucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2RhdGEucHkKQEAgLTcsMTEgKzcsMTEgQEAKICAgICBmbGFncyA9IGQuZ2V0VmFyRmxhZ3Moa2V5KQogICAgIGlmIGZsYWdzIGlzIG5vdCBOb25lOgogICAgICAgICBmbGFncyA9IGRpY3QoKGZsYWcsIGQuZXhwYW5kKHZhbHVlKSkKLSAgICAgICAgICAgICAgICAgICAgIGZvciBmbGFnLCB2YWx1ZSBpbiBmbGFncy5pdGVyaXRlbXMoKSkKKyAgICAgICAgICAgICAgICAgICAgIGZvciBmbGFnLCB2YWx1ZSBpbiBsaXN0KGZsYWdzLml0ZW1zKCkpKQogICAgIGVsc2U6CiAgICAgICAgIGZsYWdzID0ge30KIAogICAgIHRyeToKICAgICAgICAgcmV0dXJuIG9lLm1ha2V0eXBlLmNyZWF0ZShkLmdldFZhcihrZXksIFRydWUpIG9yICcnLCB2YXJfdHlwZSwgKipmbGFncykKLSAgICBleGNlcHQgKFR5cGVFcnJvciwgVmFsdWVFcnJvciksIGV4YzoKKyAgICBleGNlcHQgKFR5cGVFcnJvciwgVmFsdWVFcnJvcikgYXMgZXhjOgogICAgICAgICBiYi5tc2cuZmF0YWwoIkRhdGEiLCAiJXM6ICVzIiAlIChrZXksIHN0cihleGMpKSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9kaXN0cm9fY2hlY2sucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvZGlzdHJvX2NoZWNrLnB5CmluZGV4IDg2NTVhNmYuLjg3YzUyZmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9kaXN0cm9fY2hlY2sucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2Rpc3Ryb19jaGVjay5weQpAQCAtMSw1MyArMSwzNSBAQAogZnJvbSBjb250ZXh0bGliIGltcG9ydCBjb250ZXh0bWFuYWdlcgotQGNvbnRleHRtYW5hZ2VyCisKK2Zyb20gYmIudXRpbHMgaW1wb3J0IGV4cG9ydF9wcm94aWVzCisKIGRlZiBjcmVhdGVfc29ja2V0KHVybCwgZCk6CiAgICAgaW1wb3J0IHVybGxpYgotICAgIHNvY2tldCA9IHVybGxpYi51cmxvcGVuKHVybCwgcHJveGllcz1nZXRfcHJveGllcyhkKSkKLSAgICB0cnk6Ci0gICAgICAgIHlpZWxkIHNvY2tldAotICAgIGZpbmFsbHk6Ci0gICAgICAgIHNvY2tldC5jbG9zZSgpCiAKLWRlZiBnZXRfcHJveGllcyhkKToKLSAgICBwcm94aWVzID0ge30KLSAgICBmb3Iga2V5IGluIFsnaHR0cCcsICdodHRwcycsICdmdHAnLCAnZnRwcycsICdubycsICdhbGwnXToKLSAgICAgICAgcHJveHkgPSBkLmdldFZhcihrZXkgKyAnX3Byb3h5JywgVHJ1ZSkKLSAgICAgICAgaWYgcHJveHk6Ci0gICAgICAgICAgICBwcm94aWVzW2tleV0gPSBwcm94eQotICAgIHJldHVybiBwcm94aWVzCisgICAgc29ja2V0ID0gTm9uZQorICAgIHRyeToKKyAgICAgICAgZXhwb3J0X3Byb3hpZXMoZCkKKyAgICAgICAgc29ja2V0ID0gdXJsbGliLnJlcXVlc3QudXJsb3Blbih1cmwpCisgICAgZXhjZXB0OgorICAgICAgICBiYi53YXJuKCJkaXN0cm9fY2hlY2s6IGNyZWF0ZV9zb2NrZXQgdXJsICVzIGNhbid0IGFjY2VzcyIgJSB1cmwpCisKKyAgICByZXR1cm4gc29ja2V0CiAKIGRlZiBnZXRfbGlua3NfZnJvbV91cmwodXJsLCBkKToKICAgICAiUmV0dXJuIGFsbCB0aGUgaHJlZiBsaW5rcyBmb3VuZCBvbiB0aGUgd2ViIGxvY2F0aW9uIgogCi0gICAgaW1wb3J0IHNnbWxsaWIKLSAgICAKLSAgICBjbGFzcyBMaW5rc1BhcnNlcihzZ21sbGliLlNHTUxQYXJzZXIpOgotICAgICAgICBkZWYgcGFyc2Uoc2VsZiwgcyk6Ci0gICAgICAgICAgICAiUGFyc2UgdGhlIGdpdmVuIHN0cmluZyAncycuIgotICAgICAgICAgICAgc2VsZi5mZWVkKHMpCi0gICAgICAgICAgICBzZWxmLmNsb3NlKCkKLSAgICAKLSAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZlcmJvc2U9MCk6Ci0gICAgICAgICAgICAiSW5pdGlhbGlzZSBhbiBvYmplY3QgcGFzc2luZyAndmVyYm9zZScgdG8gdGhlIHN1cGVyY2xhc3MuIgotICAgICAgICAgICAgc2dtbGxpYi5TR01MUGFyc2VyLl9faW5pdF9fKHNlbGYsIHZlcmJvc2UpCi0gICAgICAgICAgICBzZWxmLmh5cGVybGlua3MgPSBbXQotICAgIAotICAgICAgICBkZWYgc3RhcnRfYShzZWxmLCBhdHRyaWJ1dGVzKToKLSAgICAgICAgICAgICJQcm9jZXNzIGEgaHlwZXJsaW5rIGFuZCBpdHMgJ2F0dHJpYnV0ZXMnLiIKLSAgICAgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBhdHRyaWJ1dGVzOgotICAgICAgICAgICAgICAgIGlmIG5hbWUgPT0gImhyZWYiOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmh5cGVybGlua3MuYXBwZW5kKHZhbHVlLnN0cmlwKCcvJykpCi0gICAgCi0gICAgICAgIGRlZiBnZXRfaHlwZXJsaW5rcyhzZWxmKToKLSAgICAgICAgICAgICJSZXR1cm4gdGhlIGxpc3Qgb2YgaHlwZXJsaW5rcy4iCi0gICAgICAgICAgICByZXR1cm4gc2VsZi5oeXBlcmxpbmtzCisgICAgZnJvbSBiczQgaW1wb3J0IEJlYXV0aWZ1bFNvdXAsIFNvdXBTdHJhaW5lcgogCi0gICAgd2l0aCBjcmVhdGVfc29ja2V0KHVybCxkKSBhcyBzb2NrOgorICAgIGh5cGVybGlua3MgPSBbXQorCisgICAgd2VicGFnZSA9ICcnCisgICAgc29jayA9IGNyZWF0ZV9zb2NrZXQodXJsLGQpCisgICAgaWYgc29jazoKICAgICAgICAgd2VicGFnZSA9IHNvY2sucmVhZCgpCiAKLSAgICBsaW5rc3BhcnNlciA9IExpbmtzUGFyc2VyKCkKLSAgICBsaW5rc3BhcnNlci5wYXJzZSh3ZWJwYWdlKQotICAgIHJldHVybiBsaW5rc3BhcnNlci5nZXRfaHlwZXJsaW5rcygpCisgICAgc291cCA9IEJlYXV0aWZ1bFNvdXAod2VicGFnZSwgImh0bWwucGFyc2VyIiwgcGFyc2Vfb25seT1Tb3VwU3RyYWluZXIoImEiKSkKKyAgICBmb3IgbGluZSBpbiBzb3VwLmZpbmRfYWxsKCdhJywgaHJlZj1UcnVlKToKKyAgICAgICAgaHlwZXJsaW5rcy5hcHBlbmQobGluZVsnaHJlZiddLnN0cmlwKCcvJykpCisgICAgcmV0dXJuIGh5cGVybGlua3MKIAogZGVmIGZpbmRfbGF0ZXN0X251bWVyaWNfcmVsZWFzZSh1cmwsIGQpOgogICAgICJGaW5kIHRoZSBsYXRlc3QgbGlzdGVkIG51bWVyaWMgcmVsZWFzZSBvbiB0aGUgZ2l2ZW4gdXJsIgpAQCAtMTA0LDggKzg2LDggQEAKIAogICAgIGJiLm5vdGUoIlJlYWRpbmcgJXM6ICVzIiAlICh1cmwsIHNlY3Rpb24pKQogICAgIGxpbmtzID0gZ2V0X2xpbmtzX2Zyb21fdXJsKHVybCwgZCkKLSAgICBzcnBtcyA9IGZpbHRlcihpc19zcmNfcnBtLCBsaW5rcykKLSAgICBuYW1lc19saXN0ID0gbWFwKHBhY2thZ2VfbmFtZV9mcm9tX3NycG0sIHNycG1zKQorICAgIHNycG1zID0gbGlzdChmaWx0ZXIoaXNfc3JjX3JwbSwgbGlua3MpKQorICAgIG5hbWVzX2xpc3QgPSBsaXN0KG1hcChwYWNrYWdlX25hbWVfZnJvbV9zcnBtLCBzcnBtcykpCiAKICAgICBuZXdfcGtncyA9IFtdCiAgICAgZm9yIHBrZ3MgaW4gbmFtZXNfbGlzdDoKQEAgLTE2MiwxNCArMTQ0LDE4IEBACiAKIGRlZiBnZXRfZGViaWFuX3N0eWxlX3NvdXJjZV9wYWNrYWdlX2xpc3QodXJsLCBzZWN0aW9uLCBkKToKICAgICAiUmV0dXJuIHRoZSBsaXN0IG9mIHBhY2thZ2UtbmFtZXMgc3RvcmVkIGluIHRoZSBkZWJpYW4gc3R5bGUgU291cmNlcy5neiBmaWxlIgotICAgIHdpdGggY3JlYXRlX3NvY2tldCh1cmwsZCkgYXMgc29jazoKLSAgICAgICAgd2VicGFnZSA9IHNvY2sucmVhZCgpCi0gICAgICAgIGltcG9ydCB0ZW1wZmlsZQotICAgICAgICB0bXBmaWxlID0gdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKG1vZGU9J3diJywgcHJlZml4PSdvZWNvcmUuJywgc3VmZml4PScudG1wJywgZGVsZXRlPUZhbHNlKQotICAgICAgICB0bXBmaWxlbmFtZT10bXBmaWxlLm5hbWUKLSAgICAgICAgdG1wZmlsZS53cml0ZShzb2NrLnJlYWQoKSkKLSAgICAgICAgdG1wZmlsZS5jbG9zZSgpCisgICAgaW1wb3J0IHRlbXBmaWxlCiAgICAgaW1wb3J0IGd6aXAKKworICAgIHdlYnBhZ2UgPSAnJworICAgIHNvY2sgPSBjcmVhdGVfc29ja2V0KHVybCxkKQorICAgIGlmIHNvY2s6CisgICAgICAgIHdlYnBhZ2UgPSBzb2NrLnJlYWQoKQorCisgICAgdG1wZmlsZSA9IHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShtb2RlPSd3YicsIHByZWZpeD0nb2Vjb3JlLicsIHN1ZmZpeD0nLnRtcCcsIGRlbGV0ZT1GYWxzZSkKKyAgICB0bXBmaWxlbmFtZT10bXBmaWxlLm5hbWUKKyAgICB0bXBmaWxlLndyaXRlKHNvY2sucmVhZCgpKQorICAgIHRtcGZpbGUuY2xvc2UoKQogICAgIGJiLm5vdGUoIlJlYWRpbmcgJXM6ICVzIiAlICh1cmwsIHNlY3Rpb24pKQogCiAgICAgZiA9IGd6aXAub3Blbih0bXBmaWxlbmFtZSkKQEAgLTI2Niw5ICsyNTIsOSBAQAogICAgIGltcG9ydCBmY250bAogICAgIHRyeToKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRhdGV0aW1lX2ZpbGUpOgotICAgICAgICAgICAgb3BlbihkYXRldGltZV9maWxlLCAndytiJykuY2xvc2UoKSAjIHRvdWNoIHRoZSBmaWxlIHNvIHRoYXQgdGhlIG5leHQgb3BlbiB3b24ndCBmYWlsCisgICAgICAgICAgICBvcGVuKGRhdGV0aW1lX2ZpbGUsICd3KycpLmNsb3NlKCkgIyB0b3VjaCB0aGUgZmlsZSBzbyB0aGF0IHRoZSBuZXh0IG9wZW4gd29uJ3QgZmFpbAogCi0gICAgICAgIGYgPSBvcGVuKGRhdGV0aW1lX2ZpbGUsICJyK2IiKQorICAgICAgICBmID0gb3BlbihkYXRldGltZV9maWxlLCAicisiKQogICAgICAgICBmY250bC5sb2NrZihmLCBmY250bC5MT0NLX0VYKQogICAgICAgICBzYXZlZF9kYXRldGltZSA9IGYucmVhZCgpCiAgICAgICAgIGlmIHNhdmVkX2RhdGV0aW1lWzA6OF0gIT0gZGF0ZXRpbWVbMDo4XToKQEAgLTM1Nyw4ICszNDMsOCBAQAogCiAgICAgCiAgICAgaWYgdG1wICE9IE5vbmU6Ci0JbGlzdCA9IHRtcC5zcGxpdCgnICcpCi0JZm9yIGl0ZW0gaW4gbGlzdDoKKyAgICAgICAgbGlzdCA9IHRtcC5zcGxpdCgnICcpCisgICAgICAgIGZvciBpdGVtIGluIGxpc3Q6CiAgICAgICAgICAgICBtYXRjaGluZ19kaXN0cm9zLmFwcGVuZChpdGVtKQogICAgIGJiLm5vdGUoIk1hdGNoaW5nOiAlcyIgJSBtYXRjaGluZ19kaXN0cm9zKQogICAgIHJldHVybiBtYXRjaGluZ19kaXN0cm9zCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvZ3BnX3NpZ24ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvZ3BnX3NpZ24ucHkKaW5kZXggYjgzZWU4Ni4uMzhlYjBjYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2dwZ19zaWduLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9ncGdfc2lnbi5weQpAQCAtNzEsMTEgKzcxLDExIEBACiAgICAgICAgICAgICAgICAgICAgIHBhc3NwaHJhc2UgPSBmb2JqLnJlYWRsaW5lKCk7CiAKICAgICAgICAgICAgIGpvYiA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCi0gICAgICAgICAgICAoXywgc3RkZXJyKSA9IGpvYi5jb21tdW5pY2F0ZShwYXNzcGhyYXNlKQorICAgICAgICAgICAgKF8sIHN0ZGVycikgPSBqb2IuY29tbXVuaWNhdGUocGFzc3BocmFzZS5lbmNvZGUoInV0Zi04IikpCiAKICAgICAgICAgICAgIGlmIGpvYi5yZXR1cm5jb2RlOgogICAgICAgICAgICAgICAgIHJhaXNlIGJiLmJ1aWxkLkZ1bmNGYWlsZWQoIkdQRyBleGl0ZWQgd2l0aCBjb2RlICVkOiAlcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGpvYi5yZXR1cm5jb2RlLCBzdGRlcnIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGpvYi5yZXR1cm5jb2RlLCBzdGRlcnIuZGVjb2RlKCJ1dGYtOCIpKSkKIAogICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBlOgogICAgICAgICAgICAgYmIuZXJyb3IoIklPIGVycm9yICglcyk6ICVzIiAlIChlLmVycm5vLCBlLnN0cmVycm9yKSkKQEAgLTkwLDcgKzkwLDcgQEAKICAgICAgICAgIiIiUmV0dXJuIHRoZSBncGcgdmVyc2lvbiIiIgogICAgICAgICBpbXBvcnQgc3VicHJvY2VzcwogICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoKHNlbGYuZ3BnX2JpbiwgIi0tdmVyc2lvbiIpKS5zcGxpdCgpWzJdCisgICAgICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoKHNlbGYuZ3BnX2JpbiwgIi0tdmVyc2lvbiIpKS5zcGxpdCgpWzJdLmRlY29kZSgidXRmLTgiKQogICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKICAgICAgICAgICAgIHJhaXNlIGJiLmJ1aWxkLkZ1bmNGYWlsZWQoIkNvdWxkIG5vdCBnZXQgZ3BnIHZlcnNpb246ICVzIiAlIGUpCiAKQEAgLTExMyw0ICsxMTMsMyBAQAogICAgICAgICByZXR1cm4gTG9jYWxTaWduZXIoZCkKICAgICBlbHNlOgogICAgICAgICBiYi5mYXRhbCgiVW5zdXBwb3J0ZWQgc2lnbmluZyBiYWNrZW5kICclcyciICUgYmFja2VuZCkKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2xpY2Vuc2UucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvbGljZW5zZS5weQppbmRleCBmMGY2NjFjLi44ZDJmZDE3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvbGljZW5zZS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvbGljZW5zZS5weQpAQCAtNDcsNyArNDcsNyBAQAogICAgICIiIkdldCBlbGVtZW50cyBiYXNlZCBvbiBPcGVuRW1iZWRkZWQgbGljZW5zZSBzdHJpbmdzIiIiCiAgICAgZGVmIGdldF9lbGVtZW50cyhzZWxmLCBsaWNlbnNlc3RyKToKICAgICAgICAgbmV3X2VsZW1lbnRzID0gW10KLSAgICAgICAgZWxlbWVudHMgPSBmaWx0ZXIobGFtYmRhIHg6IHguc3RyaXAoKSwgbGljZW5zZV9vcGVyYXRvci5zcGxpdChsaWNlbnNlc3RyKSkKKyAgICAgICAgZWxlbWVudHMgPSBsaXN0KFt4IGZvciB4IGluIGxpY2Vuc2Vfb3BlcmF0b3Iuc3BsaXQobGljZW5zZXN0cikgaWYgeC5zdHJpcCgpXSkKICAgICAgICAgZm9yIHBvcywgZWxlbWVudCBpbiBlbnVtZXJhdGUoZWxlbWVudHMpOgogICAgICAgICAgICAgaWYgbGljZW5zZV9wYXR0ZXJuLm1hdGNoKGVsZW1lbnQpOgogICAgICAgICAgICAgICAgIGlmIHBvcyA+IDAgYW5kIGxpY2Vuc2VfcGF0dGVybi5tYXRjaChlbGVtZW50c1twb3MtMV0pOgpAQCAtMTE4LDggKzExOCw4IEBACiAgICAgZGVmIGNob29zZV9saWNlbnNlcyhhbHBoYSwgYmV0YSk6CiAgICAgICAgICIiIlNlbGVjdCB0aGUgb3B0aW9uIGluIGFuIE9SIHdoaWNoIGlzIHRoZSAnYmVzdCcgKGhhcyB0aGUgbW9zdAogICAgICAgICBpbmNsdWRlZCBsaWNlbnNlcykuIiIiCi0gICAgICAgIGFscGhhX3dlaWdodCA9IGxlbihmaWx0ZXIoaW5jbHVkZV9saWNlbnNlLCBhbHBoYSkpCi0gICAgICAgIGJldGFfd2VpZ2h0ID0gbGVuKGZpbHRlcihpbmNsdWRlX2xpY2Vuc2UsIGJldGEpKQorICAgICAgICBhbHBoYV93ZWlnaHQgPSBsZW4obGlzdChmaWx0ZXIoaW5jbHVkZV9saWNlbnNlLCBhbHBoYSkpKQorICAgICAgICBiZXRhX3dlaWdodCA9IGxlbihsaXN0KGZpbHRlcihpbmNsdWRlX2xpY2Vuc2UsIGJldGEpKSkKICAgICAgICAgaWYgYWxwaGFfd2VpZ2h0ID4gYmV0YV93ZWlnaHQ6CiAgICAgICAgICAgICByZXR1cm4gYWxwaGEKICAgICAgICAgZWxzZToKQEAgLTEzMiw4ICsxMzIsOCBAQAogICAgICAgICBibGFja2xpc3QgPSBbXQogCiAgICAgbGljZW5zZXMgPSBmbGF0dGVuZWRfbGljZW5zZXMobGljZW5zZXN0ciwgY2hvb3NlX2xpY2Vuc2VzKQotICAgIGV4Y2x1ZGVkID0gZmlsdGVyKGxhbWJkYSBsaWM6IGV4Y2x1ZGVfbGljZW5zZShsaWMpLCBsaWNlbnNlcykKLSAgICBpbmNsdWRlZCA9IGZpbHRlcihsYW1iZGEgbGljOiBpbmNsdWRlX2xpY2Vuc2UobGljKSwgbGljZW5zZXMpCisgICAgZXhjbHVkZWQgPSBbbGljIGZvciBsaWMgaW4gbGljZW5zZXMgaWYgZXhjbHVkZV9saWNlbnNlKGxpYyldCisgICAgaW5jbHVkZWQgPSBbbGljIGZvciBsaWMgaW4gbGljZW5zZXMgaWYgaW5jbHVkZV9saWNlbnNlKGxpYyldCiAgICAgaWYgZXhjbHVkZWQ6CiAgICAgICAgIHJldHVybiBGYWxzZSwgZXhjbHVkZWQKICAgICBlbHNlOgpAQCAtMjE1LDMgKzIxNSwyMSBAQAogICAgIG1hbmlmZXN0LmxpY2Vuc2VzdHIgPSBtYW5pZmVzdC5saWNlbnNlc3RyLnJlcGxhY2UoJ1snLCAnKCcpLnJlcGxhY2UoJ10nLCAnKScpCiAKICAgICByZXR1cm4gKG1hbmlmZXN0LmxpY2Vuc2VzdHIsIG1hbmlmZXN0LmxpY2Vuc2VzKQorCitjbGFzcyBMaXN0VmlzaXRvcihMaWNlbnNlVmlzaXRvcik6CisgICAgIiIiUmVjb3JkIGFsbCBkaWZmZXJlbnQgbGljZW5zZXMgZm91bmQgaW4gdGhlIGxpY2Vuc2Ugc3RyaW5nIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLmxpY2Vuc2VzID0gc2V0KCkKKworICAgIGRlZiB2aXNpdF9TdHIoc2VsZiwgbm9kZSk6CisgICAgICAgIHNlbGYubGljZW5zZXMuYWRkKG5vZGUucykKKworZGVmIGxpc3RfbGljZW5zZXMobGljZW5zZXN0cik6CisgICAgIiIiU2ltcGx5IGdldCBhIGxpc3Qgb2YgYWxsIGxpY2Vuc2VzIG1lbnRpb25lZCBpbiBhIGxpY2Vuc2Ugc3RyaW5nLgorICAgICAgIEJpbmFyeSBvcGVyYXRvcnMgYXJlIG5vdCBhcHBsaWVkIG9yIHRha2VuIGludG8gYWNjb3VudCBpbiBhbnkgd2F5IiIiCisgICAgdmlzaXRvciA9IExpc3RWaXNpdG9yKCkKKyAgICB0cnk6CisgICAgICAgIHZpc2l0b3IudmlzaXRfc3RyaW5nKGxpY2Vuc2VzdHIpCisgICAgZXhjZXB0IFN5bnRheEVycm9yIGFzIGV4YzoKKyAgICAgICAgcmFpc2UgTGljZW5zZVN5bnRheEVycm9yKGxpY2Vuc2VzdHIsIGV4YykKKyAgICByZXR1cm4gdmlzaXRvci5saWNlbnNlcwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL21ha2V0eXBlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL21ha2V0eXBlLnB5CmluZGV4IDEzOWYzMzMuLmY4ODk4MWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9tYWtldHlwZS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvbWFrZXR5cGUucHkKQEAgLTYsNyArNiw4IEBACiAiIiIKIAogaW1wb3J0IGluc3BlY3QKLWltcG9ydCB0eXBlcworaW1wb3J0IG9lLnR5cGVzIGFzIHR5cGVzCitpbXBvcnQgY29sbGVjdGlvbnMKIAogYXZhaWxhYmxlX3R5cGVzID0ge30KIApAQCAtNTMsNyArNTQsOSBAQAogICAgIGlmIHR5cGUob2JqKSBpcyB0eXBlOgogICAgICAgICBvYmogPSBvYmouX19pbml0X18KIAotICAgIGFyZ3MsIHZhcmFyZ3MsIGtleXdvcmRzLCBkZWZhdWx0cyA9IGluc3BlY3QuZ2V0YXJnc3BlYyhvYmopCisgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUob2JqKQorICAgIGFyZ3MgPSBsaXN0KHNpZy5wYXJhbWV0ZXJzLmtleXMoKSkKKyAgICBkZWZhdWx0cyA9IGxpc3QocyBmb3IgcyBpbiBzaWcucGFyYW1ldGVycy5rZXlzKCkgaWYgc2lnLnBhcmFtZXRlcnNbc10uZGVmYXVsdCAhPSBpbnNwZWN0LlBhcmFtZXRlci5lbXB0eSkKICAgICBmbGFnbGlzdCA9IFtdCiAgICAgaWYgYXJnczoKICAgICAgICAgaWYgbGVuKGFyZ3MpID4gMSBhbmQgYXJnc1swXSA9PSAnc2VsZic6CkBAIC05Myw3ICs5Niw3IEBACiAgICAgICAgIGNvbnRpbnVlCiAKICAgICBvYmogPSBnZXRhdHRyKHR5cGVzLCBuYW1lKQotICAgIGlmIG5vdCBjYWxsYWJsZShvYmopOgorICAgIGlmIG5vdCBpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnMuQ2FsbGFibGUpOgogICAgICAgICBjb250aW51ZQogCiAgICAgcmVnaXN0ZXIobmFtZSwgb2JqKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL21hbmlmZXN0LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL21hbmlmZXN0LnB5CmluZGV4IDQyODMyZjEuLjk1ZjhlYjIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9tYW5pZmVzdC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvbWFuaWZlc3QucHkKQEAgLTQsMTEgKzQsMTAgQEAKIGltcG9ydCBiYgogCiAKLWNsYXNzIE1hbmlmZXN0KG9iamVjdCk6CitjbGFzcyBNYW5pZmVzdChvYmplY3QsIG1ldGFjbGFzcz1BQkNNZXRhKToKICAgICAiIiIKICAgICBUaGlzIGlzIGFuIGFic3RyYWN0IGNsYXNzLiBEbyBub3QgaW5zdGFudGlhdGUgdGhpcyBkaXJlY3RseS4KICAgICAiIiIKLSAgICBfX21ldGFjbGFzc19fID0gQUJDTWV0YQogCiAgICAgUEtHX1RZUEVfTVVTVF9JTlNUQUxMID0gIm1pcCIKICAgICBQS0dfVFlQRV9NVUxUSUxJQiA9ICJtbHAiCkBAIC0yMTksNyArMjE4LDcgQEAKICAgICAgICAgICAgICAgICBpZiB2YXIgaW4gc2VsZi52YXJzX3RvX3NwbGl0OgogICAgICAgICAgICAgICAgICAgICBzcGxpdF9wa2dzID0gc2VsZi5fc3BsaXRfbXVsdGlsaWIoc2VsZi5kLmdldFZhcih2YXIsIFRydWUpKQogICAgICAgICAgICAgICAgICAgICBpZiBzcGxpdF9wa2dzIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgcGtncyA9IGRpY3QocGtncy5pdGVtcygpICsgc3BsaXRfcGtncy5pdGVtcygpKQorICAgICAgICAgICAgICAgICAgICAgICAgcGtncyA9IGRpY3QobGlzdChwa2dzLml0ZW1zKCkpICsgbGlzdChzcGxpdF9wa2dzLml0ZW1zKCkpKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHBrZ19saXN0ID0gc2VsZi5kLmdldFZhcih2YXIsIFRydWUpCiAgICAgICAgICAgICAgICAgICAgIGlmIHBrZ19saXN0IGlzIG5vdCBOb25lOgpAQCAtMjY5LDcgKzI2OCw3IEBACiAgICAgICAgICAgICAgICAgaWYgdmFyIGluIHNlbGYudmFyc190b19zcGxpdDoKICAgICAgICAgICAgICAgICAgICAgc3BsaXRfcGtncyA9IHNlbGYuX3NwbGl0X211bHRpbGliKHNlbGYuZC5nZXRWYXIodmFyLCBUcnVlKSkKICAgICAgICAgICAgICAgICAgICAgaWYgc3BsaXRfcGtncyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHBrZ3MgPSBkaWN0KHBrZ3MuaXRlbXMoKSArIHNwbGl0X3BrZ3MuaXRlbXMoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHBrZ3MgPSBkaWN0KGxpc3QocGtncy5pdGVtcygpKSArIGxpc3Qoc3BsaXRfcGtncy5pdGVtcygpKSkKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBwa2dfbGlzdCA9IHNlbGYuZC5nZXRWYXIodmFyLCBUcnVlKQogICAgICAgICAgICAgICAgICAgICBpZiBwa2dfbGlzdCBpcyBub3QgTm9uZToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhY2thZ2UucHkKaW5kZXggMjg4NzY4OS4uMDI2NDJmMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhY2thZ2UucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhY2thZ2UucHkKQEAgLTgsNyArOCw3IEBACiAgICAgIyA4IC0gc2hhcmVkIGxpYnJhcnkKICAgICAjIDE2IC0ga2VybmVsIG1vZHVsZQogCi0gICAgaW1wb3J0IGNvbW1hbmRzLCBzdGF0LCBzdWJwcm9jZXNzCisgICAgaW1wb3J0IHN0YXQsIHN1YnByb2Nlc3MKIAogICAgIChmaWxlLCBlbGZ0eXBlLCBzdHJpcCkgPSBhcmcKIApAQCAtNjQsOCArNjQsOCBAQAogCiAgICAgZGVmIHByb2Nlc3NfZGVwcyhwaXBlLCBwa2csIHBrZ2Rlc3QsIHByb3ZpZGVzLCByZXF1aXJlcyk6CiAgICAgICAgIGZvciBsaW5lIGluIHBpcGU6Ci0gICAgICAgICAgICBmID0gbGluZS5zcGxpdCgiICIsIDEpWzBdLnN0cmlwKCkKLSAgICAgICAgICAgIGxpbmUgPSBsaW5lLnNwbGl0KCIgIiwgMSlbMV0uc3RyaXAoKQorICAgICAgICAgICAgZiA9IGxpbmUuZGVjb2RlKCJ1dGYtOCIpLnNwbGl0KCIgIiwgMSlbMF0uc3RyaXAoKQorICAgICAgICAgICAgbGluZSA9IGxpbmUuZGVjb2RlKCJ1dGYtOCIpLnNwbGl0KCIgIiwgMSlbMV0uc3RyaXAoKQogCiAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIlJlcXVpcmVzOiIpOgogICAgICAgICAgICAgICAgIGkgPSByZXF1aXJlcwpAQCAtMTE0LDcgKzExNCwxMiBAQAogICAgICAgICAgICAgbSA9IGxpc3RfcmUubWF0Y2goZmlsZSkKICAgICAgICAgICAgIGlmIG06CiAgICAgICAgICAgICAgICAgZGVwX3BrZyA9IG0uZ3JvdXAoMSkKLSAgICAgICAgICAgICAgICBmZCA9IG9wZW4ob3MucGF0aC5qb2luKGRpciwgZmlsZSkpCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBmZCA9IG9wZW4ob3MucGF0aC5qb2luKGRpciwgZmlsZSkpCisgICAgICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICMgRHVyaW5nIGEgYnVpbGQgdW5yZWxhdGVkIHNobGliIGZpbGVzIG1heSBiZSBkZWxldGVkLCBzbworICAgICAgICAgICAgICAgICAgICAjIGhhbmRsZSBmaWxlcyBkaXNhcHBlYXJpbmcgYmV0d2VlbiB0aGUgbGlzdGRpcnMgYW5kIG9wZW4uCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgbGluZXMgPSBmZC5yZWFkbGluZXMoKQogICAgICAgICAgICAgICAgIGZkLmNsb3NlKCkKICAgICAgICAgICAgICAgICBmb3IgbCBpbiBsaW5lczoKQEAgLTE0OSw3ICsxNTQsNyBAQAogICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHBrZ2ZpbGUpOgogICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4ocGtnZmlsZSwgJ3InKSBhcyBmOgogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGpzb24ubG9hZHMoZi5yZWFkKCkpCi0gICAgICAgICAgICAgICAgcGFja2FnZXNbcGtnbmFtZV0gPSAocmVscHRoLCBkYXRhKQorICAgICAgICAgICAgICAgICAgICBwYWNrYWdlc1twa2duYW1lXSA9IChyZWxwdGgsIGRhdGEpCiAgICAgIyBXZSB3YW50IHRoZSBtYWluIHBhY2thZ2UgZm9yIGEgbW9kdWxlIHNvcnRlZCAqYWZ0ZXIqIGl0cyBzdWJwYWNrYWdlcwogICAgICMgKHNvIHRoYXQgaXQgZG9lc24ndCBvdGhlcndpc2Ugc3RlYWwgdGhlIGZpbGVzIGZvciB0aGUgc3VicGFja2FnZSksIHNvCiAgICAgIyB0aGlzIGlzIGEgY2hlYXAgd2F5IHRvIGRvIHRoYXQgd2hpbHN0IHN0aWxsIGhhdmluZyBhbiBvdGhlcndpc2UKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlX21hbmFnZXIucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcGFja2FnZV9tYW5hZ2VyLnB5CmluZGV4IGI0YjM1OWEuLjNjZWU5NzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlX21hbmFnZXIucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhY2thZ2VfbWFuYWdlci5weQpAQCAtNSw5ICs1LDExIEBACiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCiBpbXBvcnQgcmUKK2ltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IGJiCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCBvZS51dGlscworaW1wb3J0IG9lLnBhdGgKIGltcG9ydCBzdHJpbmcKIGZyb20gb2UuZ3BnX3NpZ24gaW1wb3J0IGdldF9zaWduZXIKIApAQCAtMTcsMjAgKzE5LDc5IEBACiAKICAgICB0cnk6CiAgICAgICAgIGJiLm5vdGUoIkV4ZWN1dGluZyAnJXMnIC4uLiIgJSBpbmRleF9jbWQpCi0gICAgICAgIHJlc3VsdCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGluZGV4X2NtZCwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULCBzaGVsbD1UcnVlKQorICAgICAgICByZXN1bHQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChpbmRleF9jbWQsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwgc2hlbGw9VHJ1ZSkuZGVjb2RlKCJ1dGYtOCIpCiAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6CiAgICAgICAgIHJldHVybigiSW5kZXggY3JlYXRpb24gY29tbWFuZCAnJXMnIGZhaWxlZCB3aXRoIHJldHVybiBjb2RlICVkOlxuJXMiICUKLSAgICAgICAgICAgICAgIChlLmNtZCwgZS5yZXR1cm5jb2RlLCBlLm91dHB1dCkpCisgICAgICAgICAgICAgICAoZS5jbWQsIGUucmV0dXJuY29kZSwgZS5vdXRwdXQuZGVjb2RlKCJ1dGYtOCIpKSkKIAogICAgIGlmIHJlc3VsdDoKICAgICAgICAgYmIubm90ZShyZXN1bHQpCiAKICAgICByZXR1cm4gTm9uZQogCisiIiIKK1RoaXMgbWV0aG9kIHBhcnNlIHRoZSBvdXRwdXQgZnJvbSB0aGUgcGFja2FnZSBtYW5hZ2VyYW5kIHJldHVybgorYSBkaWN0aW9uYXJ5IHdpdGggdGhlIGluZm9ybWF0aW9uIG9mIHRoZSBwYWNrYWdlcy4gVGhpcyBpcyB1c2VkCit3aGVuIHRoZSBwYWNrYWdlcyBhcmUgaW4gZGViIG9yIGlwayBmb3JtYXQuCisiIiIKK2RlZiBvcGtnX3F1ZXJ5KGNtZF9vdXRwdXQpOgorICAgIHZlcnJlZ2V4ID0gcmUuY29tcGlsZSgnIFwoWz08Pl0qIFteICldKlwpJykKKyAgICBvdXRwdXQgPSBkaWN0KCkKKyAgICBwa2cgPSAiIgorICAgIGFyY2ggPSAiIgorICAgIHZlciA9ICIiCisgICAgZmlsZW5hbWUgPSAiIgorICAgIGRlcCA9IFtdCisgICAgcGtnYXJjaCA9ICIiCisgICAgZm9yIGxpbmUgaW4gY21kX291dHB1dC5zcGxpdGxpbmVzKCk6CisgICAgICAgIGxpbmUgPSBsaW5lLnJzdHJpcCgpCisgICAgICAgIGlmICc6JyBpbiBsaW5lOgorICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCJQYWNrYWdlOiAiKToKKyAgICAgICAgICAgICAgICBwa2cgPSBsaW5lLnNwbGl0KCI6ICIpWzFdCisgICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aCgiQXJjaGl0ZWN0dXJlOiAiKToKKyAgICAgICAgICAgICAgICBhcmNoID0gbGluZS5zcGxpdCgiOiAiKVsxXQorICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoIlZlcnNpb246ICIpOgorICAgICAgICAgICAgICAgIHZlciA9IGxpbmUuc3BsaXQoIjogIilbMV0KKyAgICAgICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKCJGaWxlOiAiKSBvciBsaW5lLnN0YXJ0c3dpdGgoIkZpbGVuYW1lOiIpOgorICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gbGluZS5zcGxpdCgiOiAiKVsxXQorICAgICAgICAgICAgICAgIGlmICIvIiBpbiBmaWxlbmFtZToKKyAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKGZpbGVuYW1lKQorICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoIkRlcGVuZHM6ICIpOgorICAgICAgICAgICAgICAgIGRlcGVuZHMgPSB2ZXJyZWdleC5zdWIoJycsIGxpbmUuc3BsaXQoIjogIilbMV0pCisgICAgICAgICAgICAgICAgZm9yIGRlcGVuZCBpbiBkZXBlbmRzLnNwbGl0KCIsICIpOgorICAgICAgICAgICAgICAgICAgICBkZXAuYXBwZW5kKGRlcGVuZCkKKyAgICAgICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKCJSZWNvbW1lbmRzOiAiKToKKyAgICAgICAgICAgICAgICByZWNvbW1lbmRzID0gdmVycmVnZXguc3ViKCcnLCBsaW5lLnNwbGl0KCI6ICIpWzFdKQorICAgICAgICAgICAgICAgIGZvciByZWNvbW1lbmQgaW4gcmVjb21tZW5kcy5zcGxpdCgiLCAiKToKKyAgICAgICAgICAgICAgICAgICAgZGVwLmFwcGVuZCgiJXMgW1JFQ10iICUgcmVjb21tZW5kKQorICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoIlBhY2thZ2VBcmNoOiAiKToKKyAgICAgICAgICAgICAgICBwa2dhcmNoID0gbGluZS5zcGxpdCgiOiAiKVsxXQogCi1jbGFzcyBJbmRleGVyKG9iamVjdCk6Ci0gICAgX19tZXRhY2xhc3NfXyA9IEFCQ01ldGEKKyAgICAgICAgIyBXaGVuIHRoZXJlIGlzIGEgYmxhbmsgbGluZSBzYXZlIHRoZSBwYWNrYWdlIGluZm9ybWF0aW9uCisgICAgICAgIGVsaWYgbm90IGxpbmU6CisgICAgICAgICAgICAjIElQSyBkb2Vzbid0IGluY2x1ZGUgdGhlIGZpbGVuYW1lCisgICAgICAgICAgICBpZiBub3QgZmlsZW5hbWU6CisgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSAiJXNfJXNfJXMuaXBrIiAlIChwa2csIHZlciwgYXJjaCkKKyAgICAgICAgICAgIGlmIHBrZzoKKyAgICAgICAgICAgICAgICBvdXRwdXRbcGtnXSA9IHsiYXJjaCI6YXJjaCwgInZlciI6dmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgImZpbGVuYW1lIjpmaWxlbmFtZSwgImRlcHMiOiBkZXAsICJwa2dhcmNoIjpwa2dhcmNoIH0KKyAgICAgICAgICAgIHBrZyA9ICIiCisgICAgICAgICAgICBhcmNoID0gIiIKKyAgICAgICAgICAgIHZlciA9ICIiCisgICAgICAgICAgICBmaWxlbmFtZSA9ICIiCisgICAgICAgICAgICBkZXAgPSBbXQorICAgICAgICAgICAgcGtnYXJjaCA9ICIiCiAKKyAgICBpZiBwa2c6CisgICAgICAgIGlmIG5vdCBmaWxlbmFtZToKKyAgICAgICAgICAgIGZpbGVuYW1lID0gIiVzXyVzXyVzLmlwayIgJSAocGtnLCB2ZXIsIGFyY2gpCisgICAgICAgIG91dHB1dFtwa2ddID0geyJhcmNoIjphcmNoLCAidmVyIjp2ZXIsCisgICAgICAgICAgICAgICAgImZpbGVuYW1lIjpmaWxlbmFtZSwgImRlcHMiOiBkZXAgfQorCisgICAgcmV0dXJuIG91dHB1dAorCisKK2NsYXNzIEluZGV4ZXIob2JqZWN0LCBtZXRhY2xhc3M9QUJDTWV0YSk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGQsIGRlcGxveV9kaXIpOgogICAgICAgICBzZWxmLmQgPSBkCiAgICAgICAgIHNlbGYuZGVwbG95X2RpciA9IGRlcGxveV9kaXIKQEAgLTQyLDEzICsxMDMsOCBAQAogCiBjbGFzcyBScG1JbmRleGVyKEluZGV4ZXIpOgogICAgIGRlZiBnZXRfbWxfcHJlZml4X2FuZF9vc19saXN0KHNlbGYsIGFyY2hfdmFyPU5vbmUsIG9zX3Zhcj1Ob25lKToKLSAgICAgICAgcGFja2FnZV9hcmNocyA9IHsKLSAgICAgICAgICAgICdkZWZhdWx0JzogW10sCi0gICAgICAgIH0KLQotICAgICAgICB0YXJnZXRfb3MgPSB7Ci0gICAgICAgICAgICAnZGVmYXVsdCc6ICIiLAotICAgICAgICB9CisgICAgICAgIHBhY2thZ2VfYXJjaHMgPSBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCgpCisgICAgICAgIHRhcmdldF9vcyA9IGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KCkKIAogICAgICAgICBpZiBhcmNoX3ZhciBpcyBub3QgTm9uZSBhbmQgb3NfdmFyIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcGFja2FnZV9hcmNoc1snZGVmYXVsdCddID0gc2VsZi5kLmdldFZhcihhcmNoX3ZhciwgVHJ1ZSkuc3BsaXQoKQpAQCAtNzksNyArMTM1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9vc1tlZXh0WzFdXSA9IGxvY2FsZGF0YS5nZXRWYXIoIlRBUkdFVF9PUyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRydWUpLnN0cmlwKCkKIAotICAgICAgICBtbF9wcmVmaXhfbGlzdCA9IGRpY3QoKQorICAgICAgICBtbF9wcmVmaXhfbGlzdCA9IGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KCkKICAgICAgICAgZm9yIG1saWIgaW4gcGFja2FnZV9hcmNoczoKICAgICAgICAgICAgIGlmIG1saWIgPT0gJ2RlZmF1bHQnOgogICAgICAgICAgICAgICAgIG1sX3ByZWZpeF9saXN0W21saWJdID0gcGFja2FnZV9hcmNoc1ttbGliXQpAQCAtMjgxLDkgKzMzNyw3IEBACiAKIAogCi1jbGFzcyBQa2dzTGlzdChvYmplY3QpOgotICAgIF9fbWV0YWNsYXNzX18gPSBBQkNNZXRhCi0KK2NsYXNzIFBrZ3NMaXN0KG9iamVjdCwgbWV0YWNsYXNzPUFCQ01ldGEpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkLCByb290ZnNfZGlyKToKICAgICAgICAgc2VsZi5kID0gZAogICAgICAgICBzZWxmLnJvb3Rmc19kaXIgPSByb290ZnNfZGlyCkBAIC0yOTMsNTcgKzM0Nyw2IEBACiAgICAgICAgIHBhc3MKIAogCi0gICAgIiIiCi0gICAgVGhpcyBtZXRob2QgcGFyc2UgdGhlIG91dHB1dCBmcm9tIHRoZSBwYWNrYWdlIG1hbmFnZXIKLSAgICBhbmQgcmV0dXJuIGEgZGljdGlvbmFyeSB3aXRoIHRoZSBpbmZvcm1hdGlvbiBvZiB0aGUKLSAgICBpbnN0YWxsZWQgcGFja2FnZXMuIFRoaXMgaXMgdXNlZCB3aG5lIHRoZSBwYWNrYWdlcyBhcmUKLSAgICBpbiBkZWIgb3IgaXBrIGZvcm1hdAotICAgICIiIgotICAgIGRlZiBvcGtnX3F1ZXJ5KHNlbGYsIGNtZF9vdXRwdXQpOgotICAgICAgICB2ZXJyZWdleCA9IHJlLmNvbXBpbGUoJyBcKFs9PD5dKiBbXiApXSpcKScpCi0gICAgICAgIG91dHB1dCA9IGRpY3QoKQotICAgICAgICBmaWxlbmFtZSA9ICIiCi0gICAgICAgIGRlcCA9IFtdCi0gICAgICAgIHBrZyA9ICIiCi0gICAgICAgIGZvciBsaW5lIGluIGNtZF9vdXRwdXQuc3BsaXRsaW5lcygpOgotICAgICAgICAgICAgbGluZSA9IGxpbmUucnN0cmlwKCkKLSAgICAgICAgICAgIGlmICc6JyBpbiBsaW5lOgotICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiUGFja2FnZTogIik6Ci0gICAgICAgICAgICAgICAgICAgIHBrZyA9IGxpbmUuc3BsaXQoIjogIilbMV0KLSAgICAgICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aCgiQXJjaGl0ZWN0dXJlOiAiKToKLSAgICAgICAgICAgICAgICAgICAgYXJjaCA9IGxpbmUuc3BsaXQoIjogIilbMV0KLSAgICAgICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aCgiVmVyc2lvbjogIik6Ci0gICAgICAgICAgICAgICAgICAgIHZlciA9IGxpbmUuc3BsaXQoIjogIilbMV0KLSAgICAgICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aCgiRmlsZTogIik6Ci0gICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gbGluZS5zcGxpdCgiOiAiKVsxXQotICAgICAgICAgICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKCJEZXBlbmRzOiAiKToKLSAgICAgICAgICAgICAgICAgICAgZGVwZW5kcyA9IHZlcnJlZ2V4LnN1YignJywgbGluZS5zcGxpdCgiOiAiKVsxXSkKLSAgICAgICAgICAgICAgICAgICAgZm9yIGRlcGVuZCBpbiBkZXBlbmRzLnNwbGl0KCIsICIpOgotICAgICAgICAgICAgICAgICAgICAgICAgZGVwLmFwcGVuZChkZXBlbmQpCi0gICAgICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoIlJlY29tbWVuZHM6ICIpOgotICAgICAgICAgICAgICAgICAgICByZWNvbW1lbmRzID0gdmVycmVnZXguc3ViKCcnLCBsaW5lLnNwbGl0KCI6ICIpWzFdKQotICAgICAgICAgICAgICAgICAgICBmb3IgcmVjb21tZW5kIGluIHJlY29tbWVuZHMuc3BsaXQoIiwgIik6Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZXAuYXBwZW5kKCIlcyBbUkVDXSIgJSByZWNvbW1lbmQpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgSVBLIGRvZXNuJ3QgaW5jbHVkZSB0aGUgZmlsZW5hbWUKLSAgICAgICAgICAgICAgICBpZiBub3QgZmlsZW5hbWU6Ci0gICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gIiVzXyVzXyVzLmlwayIgJSAocGtnLCB2ZXIsIGFyY2gpCi0gICAgICAgICAgICAgICAgaWYgcGtnOgotICAgICAgICAgICAgICAgICAgICBvdXRwdXRbcGtnXSA9IHsiYXJjaCI6YXJjaCwgInZlciI6dmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlbmFtZSI6ZmlsZW5hbWUsICJkZXBzIjogZGVwIH0KLSAgICAgICAgICAgICAgICBwa2cgPSAiIgotICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gIiIKLSAgICAgICAgICAgICAgICBkZXAgPSBbXQotCi0gICAgICAgIGlmIHBrZzoKLSAgICAgICAgICAgIGlmIG5vdCBmaWxlbmFtZToKLSAgICAgICAgICAgICAgICBmaWxlbmFtZSA9ICIlc18lc18lcy5pcGsiICUgKHBrZywgdmVyLCBhcmNoKQotICAgICAgICAgICAgb3V0cHV0W3BrZ10gPSB7ImFyY2giOmFyY2gsICJ2ZXIiOnZlciwKLSAgICAgICAgICAgICAgICAgICAgImZpbGVuYW1lIjpmaWxlbmFtZSwgImRlcHMiOiBkZXAgfQotCi0gICAgICAgIHJldHVybiBvdXRwdXQKLQotCiBjbGFzcyBScG1Qa2dzTGlzdChQa2dzTGlzdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGQsIHJvb3Rmc19kaXIsIGFyY2hfdmFyPU5vbmUsIG9zX3Zhcj1Ob25lKToKICAgICAgICAgc3VwZXIoUnBtUGtnc0xpc3QsIHNlbGYpLl9faW5pdF9fKGQsIHJvb3Rmc19kaXIpCkBAIC0zNTcsMTAgKzM2MCwxMCBAQAogICAgICAgICAjIERldGVybWluZSBycG0gdmVyc2lvbgogICAgICAgICBjbWQgPSAiJXMgLS12ZXJzaW9uIiAlIHNlbGYucnBtX2NtZAogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwgc2hlbGw9VHJ1ZSkKKyAgICAgICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULCBzaGVsbD1UcnVlKS5kZWNvZGUoInV0Zi04IikKICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6CiAgICAgICAgICAgICBiYi5mYXRhbCgiR2V0dGluZyBycG0gdmVyc2lvbiBmYWlsZWQuIENvbW1hbmQgJyVzJyAiCi0gICAgICAgICAgICAgICAgICAgICAicmV0dXJuZWQgJWQ6XG4lcyIgJSAoY21kLCBlLnJldHVybmNvZGUsIGUub3V0cHV0KSkKKyAgICAgICAgICAgICAgICAgICAgICJyZXR1cm5lZCAlZDpcbiVzIiAlIChjbWQsIGUucmV0dXJuY29kZSwgZS5vdXRwdXQuZGVjb2RlKCJ1dGYtOCIpKSkKIAogICAgICcnJwogICAgIFRyYW5zbGF0ZSB0aGUgUlBNL1NtYXJ0IGZvcm1hdCBuYW1lcyB0byB0aGUgT0UgbXVsdGlsaWIgZm9ybWF0IG5hbWVzCkBAIC00MDEsMTAgKzQwNCwxMCBAQAogICAgICAgICAgICAgICAgIi10Iiwgc2VsZi5pbWFnZV9ycG1saWJdCiAKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpLnN0cmlwKCkKKyAgICAgICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKS5zdHJpcCgpLmRlY29kZSgidXRmLTgiKQogICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKICAgICAgICAgICAgIGJiLmZhdGFsKCJDYW5ub3QgZ2V0IHRoZSBwYWNrYWdlIGRlcGVuZGVuY2llcy4gQ29tbWFuZCAnJXMnICIKLSAgICAgICAgICAgICAgICAgICAgICJyZXR1cm5lZCAlZDpcbiVzIiAlICgnICcuam9pbihjbWQpLCBlLnJldHVybmNvZGUsIGUub3V0cHV0KSkKKyAgICAgICAgICAgICAgICAgICAgICJyZXR1cm5lZCAlZDpcbiVzIiAlICgnICcuam9pbihjbWQpLCBlLnJldHVybmNvZGUsIGUub3V0cHV0LmRlY29kZSgidXRmLTgiKSkpCiAKICAgICAgICAgcmV0dXJuIG91dHB1dAogCkBAIC00MTUsMTAgKzQxOCwxMCBAQAogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgICMgYmIubm90ZShjbWQpCi0gICAgICAgICAgICB0bXBfb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQsIHNoZWxsPVRydWUpLnN0cmlwKCkKKyAgICAgICAgICAgIHRtcF9vdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwgc2hlbGw9VHJ1ZSkuc3RyaXAoKS5kZWNvZGUoInV0Zi04IikKICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6CiAgICAgICAgICAgICBiYi5mYXRhbCgiQ2Fubm90IGdldCB0aGUgaW5zdGFsbGVkIHBhY2thZ2VzIGxpc3QuIENvbW1hbmQgJyVzJyAiCi0gICAgICAgICAgICAgICAgICAgICAicmV0dXJuZWQgJWQ6XG4lcyIgJSAoY21kLCBlLnJldHVybmNvZGUsIGUub3V0cHV0KSkKKyAgICAgICAgICAgICAgICAgICAgICJyZXR1cm5lZCAlZDpcbiVzIiAlIChjbWQsIGUucmV0dXJuY29kZSwgZS5vdXRwdXQuZGVjb2RlKCJ1dGYtOCIpKSkKIAogICAgICAgICBvdXRwdXQgPSBkaWN0KCkKICAgICAgICAgZGVwcyA9IGRpY3QoKQpAQCAtNDc1LDExICs0NzgsMTMgQEAKICAgICAgICAgIyBvdXRwdXQgc3RyZWFtcyBzZXBhcmF0ZWx5IGFuZCBjaGVjayBmb3IgZW1wdHkgc3RkZXJyLgogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsIHNoZWxsPVRydWUpCiAgICAgICAgIGNtZF9vdXRwdXQsIGNtZF9zdGRlcnIgPSBwLmNvbW11bmljYXRlKCkKKyAgICAgICAgY21kX291dHB1dCA9IGNtZF9vdXRwdXQuZGVjb2RlKCJ1dGYtOCIpCisgICAgICAgIGNtZF9zdGRlcnIgPSBjbWRfc3RkZXJyLmRlY29kZSgidXRmLTgiKQogICAgICAgICBpZiBwLnJldHVybmNvZGUgb3IgY21kX3N0ZGVycjoKICAgICAgICAgICAgIGJiLmZhdGFsKCJDYW5ub3QgZ2V0IHRoZSBpbnN0YWxsZWQgcGFja2FnZXMgbGlzdC4gQ29tbWFuZCAnJXMnICIKICAgICAgICAgICAgICAgICAgICAgICJyZXR1cm5lZCAlZCBhbmQgc3RkZXJyOlxuJXMiICUgKGNtZCwgcC5yZXR1cm5jb2RlLCBjbWRfc3RkZXJyKSkKIAotICAgICAgICByZXR1cm4gc2VsZi5vcGtnX3F1ZXJ5KGNtZF9vdXRwdXQpCisgICAgICAgIHJldHVybiBvcGtnX3F1ZXJ5KGNtZF9vdXRwdXQpCiAKIAogY2xhc3MgRHBrZ1BrZ3NMaXN0KFBrZ3NMaXN0KToKQEAgLTQ5MiwxOSArNDk3LDE4IEBACiAgICAgICAgIGNtZC5hcHBlbmQoIi1mPVBhY2thZ2U6ICR7UGFja2FnZX1cbkFyY2hpdGVjdHVyZTogJHtQYWNrYWdlQXJjaH1cblZlcnNpb246ICR7VmVyc2lvbn1cbkZpbGU6ICR7UGFja2FnZX1fJHtWZXJzaW9ufV8ke0FyY2hpdGVjdHVyZX0uZGViXG5EZXBlbmRzOiAke0RlcGVuZHN9XG5SZWNvbW1lbmRzOiAke1JlY29tbWVuZHN9XG5cbiIpCiAKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgY21kX291dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKS5zdHJpcCgpCisgICAgICAgICAgICBjbWRfb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpLnN0cmlwKCkuZGVjb2RlKCJ1dGYtOCIpCiAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlOgogICAgICAgICAgICAgYmIuZmF0YWwoIkNhbm5vdCBnZXQgdGhlIGluc3RhbGxlZCBwYWNrYWdlcyBsaXN0LiBDb21tYW5kICclcycgIgotICAgICAgICAgICAgICAgICAgICAgInJldHVybmVkICVkOlxuJXMiICUgKCcgJy5qb2luKGNtZCksIGUucmV0dXJuY29kZSwgZS5vdXRwdXQpKQorICAgICAgICAgICAgICAgICAgICAgInJldHVybmVkICVkOlxuJXMiICUgKCcgJy5qb2luKGNtZCksIGUucmV0dXJuY29kZSwgZS5vdXRwdXQuZGVjb2RlKCJ1dGYtOCIpKSkKIAotICAgICAgICByZXR1cm4gc2VsZi5vcGtnX3F1ZXJ5KGNtZF9vdXRwdXQpCisgICAgICAgIHJldHVybiBvcGtnX3F1ZXJ5KGNtZF9vdXRwdXQpCiAKIAotY2xhc3MgUGFja2FnZU1hbmFnZXIob2JqZWN0KToKK2NsYXNzIFBhY2thZ2VNYW5hZ2VyKG9iamVjdCwgbWV0YWNsYXNzPUFCQ01ldGEpOgogICAgICIiIgogICAgIFRoaXMgaXMgYW4gYWJzdHJhY3QgY2xhc3MuIERvIG5vdCBpbnN0YW50aWF0ZSB0aGlzIGRpcmVjdGx5LgogICAgICIiIgotICAgIF9fbWV0YWNsYXNzX18gPSBBQkNNZXRhCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZCk6CiAgICAgICAgIHNlbGYuZCA9IGQKQEAgLTU5NCwxNSArNTk4LDE1IEBACiAgICAgICAgICAgICAgICBnbG9ic10KICAgICAgICAgZXhjbHVkZSA9IHNlbGYuZC5nZXRWYXIoJ1BBQ0tBR0VfRVhDTFVERV9DT01QTEVNRU5UQVJZJywgVHJ1ZSkKICAgICAgICAgaWYgZXhjbHVkZToKLSAgICAgICAgICAgIGNtZC5leHRlbmQoWycteCcsIGV4Y2x1ZGVdKQorICAgICAgICAgICAgY21kLmV4dGVuZChbJy0tZXhjbHVkZT0nICsgJ3wnLmpvaW4oZXhjbHVkZS5zcGxpdCgpKV0pCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGJiLm5vdGUoIkluc3RhbGxpbmcgY29tcGxlbWVudGFyeSBwYWNrYWdlcyAuLi4iKQogICAgICAgICAgICAgYmIubm90ZSgnUnVubmluZyAlcycgJSBjbWQpCi0gICAgICAgICAgICBjb21wbGVtZW50YXJ5X3BrZ3MgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKKyAgICAgICAgICAgIGNvbXBsZW1lbnRhcnlfcGtncyA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKS5kZWNvZGUoInV0Zi04IikKICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6CiAgICAgICAgICAgICBiYi5mYXRhbCgiQ291bGQgbm90IGNvbXB1dGUgY29tcGxlbWVudGFyeSBwYWNrYWdlcyBsaXN0LiBDb21tYW5kICIKICAgICAgICAgICAgICAgICAgICAgICInJXMnIHJldHVybmVkICVkOlxuJXMiICUKLSAgICAgICAgICAgICAgICAgICAgICgnICcuam9pbihjbWQpLCBlLnJldHVybmNvZGUsIGUub3V0cHV0KSkKKyAgICAgICAgICAgICAgICAgICAgICgnICcuam9pbihjbWQpLCBlLnJldHVybmNvZGUsIGUub3V0cHV0LmRlY29kZSgidXRmLTgiKSkpCiAgICAgICAgIHNlbGYuaW5zdGFsbChjb21wbGVtZW50YXJ5X3BrZ3Muc3BsaXQoKSwgYXR0ZW1wdF9vbmx5PVRydWUpCiAgICAgICAgIG9zLnJlbW92ZShpbnN0YWxsZWRfcGtnc19maWxlKQogCkBAIC02MzEsOCArNjM1LDggQEAKICAgICBkZWYgY29uc3RydWN0X3VyaXMoc2VsZiwgdXJpcywgYmFzZV9wYXRocyk6CiAgICAgICAgIGRlZiBfYXBwZW5kKGFycjEsIGFycjIsIHNlcD0nLycpOgogICAgICAgICAgICAgcmVzID0gW10KLSAgICAgICAgICAgIG5hcnIxID0gbWFwKGxhbWJkYSBhOiBzdHJpbmcucnN0cmlwKGEsIHNlcCksIGFycjEpCi0gICAgICAgICAgICBuYXJyMiA9IG1hcChsYW1iZGEgYTogc3RyaW5nLmxzdHJpcChzdHJpbmcucnN0cmlwKGEsIHNlcCksIHNlcCksIGFycjIpCisgICAgICAgICAgICBuYXJyMSA9IFthLnJzdHJpcChzZXApIGZvciBhIGluIGFycjFdCisgICAgICAgICAgICBuYXJyMiA9IFthLnJzdHJpcChzZXApLmxzdHJpcChzZXApIGZvciBhIGluIGFycjJdCiAgICAgICAgICAgICBmb3IgYTEgaW4gbmFycjE6CiAgICAgICAgICAgICAgICAgaWYgYXJyMjoKICAgICAgICAgICAgICAgICAgICAgZm9yIGEyIGluIG5hcnIyOgpAQCAtNjgyLDcgKzY4Niw4IEBACiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLmQuZXhwYW5kKCcke1R9L3NhdmVkJykpOgogICAgICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHNlbGYuZC5leHBhbmQoJyR7VH0vc2F2ZWQnKSkKIAotICAgICAgICBzZWxmLmluZGV4ZXIgPSBScG1JbmRleGVyKHNlbGYuZCwgc2VsZi5kZXBsb3lfZGlyKQorICAgICAgICBwYWNrYWdlaW5kZXhfZGlyID0gb3MucGF0aC5qb2luKHNlbGYuZC5nZXRWYXIoJ1dPUktESVInLCBUcnVlKSwgJ3JwbXMnKQorICAgICAgICBzZWxmLmluZGV4ZXIgPSBScG1JbmRleGVyKHNlbGYuZCwgcGFja2FnZWluZGV4X2RpcikKICAgICAgICAgc2VsZi5wa2dzX2xpc3QgPSBScG1Qa2dzTGlzdChzZWxmLmQsIHNlbGYudGFyZ2V0X3Jvb3RmcywgYXJjaF92YXIsIG9zX3ZhcikKIAogICAgICAgICBzZWxmLm1sX3ByZWZpeF9saXN0LCBzZWxmLm1sX29zX2xpc3QgPSBzZWxmLmluZGV4ZXIuZ2V0X21sX3ByZWZpeF9hbmRfb3NfbGlzdChhcmNoX3Zhciwgb3NfdmFyKQpAQCAtNjk3LDE4ICs3MDIsMTkgQEAKICAgICAgICAgICAgIGFyY2hfbGlzdCA9IHNlbGYuZmVlZF9hcmNocy5zcGxpdCgpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIExpc3QgbXVzdCBiZSBwcmVmZXJlZCB0byBsZWFzdCBwcmVmZXJyZWQgb3JkZXIKLSAgICAgICAgICAgIGRlZmF1bHRfcGxhdGZvcm1fZXh0cmEgPSBzZXQoKQotICAgICAgICAgICAgcGxhdGZvcm1fZXh0cmEgPSBzZXQoKQorICAgICAgICAgICAgZGVmYXVsdF9wbGF0Zm9ybV9leHRyYSA9IGxpc3QoKQorICAgICAgICAgICAgcGxhdGZvcm1fZXh0cmEgPSBsaXN0KCkKICAgICAgICAgICAgIGJiZXh0ZW5kdmFyaWFudCA9IHNlbGYuZC5nZXRWYXIoJ0JCRVhURU5EVkFSSUFOVCcsIFRydWUpIG9yICIiCiAgICAgICAgICAgICBmb3IgbWxpYiBpbiBzZWxmLm1sX29zX2xpc3Q6CiAgICAgICAgICAgICAgICAgZm9yIGFyY2ggaW4gc2VsZi5tbF9wcmVmaXhfbGlzdFttbGliXToKICAgICAgICAgICAgICAgICAgICAgcGx0ID0gYXJjaC5yZXBsYWNlKCctJywgJ18nKSArICctLiotJyArIHNlbGYubWxfb3NfbGlzdFttbGliXQogICAgICAgICAgICAgICAgICAgICBpZiBtbGliID09IGJiZXh0ZW5kdmFyaWFudDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0X3BsYXRmb3JtX2V4dHJhLmFkZChwbHQpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBwbHQgbm90IGluIGRlZmF1bHRfcGxhdGZvcm1fZXh0cmE6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdF9wbGF0Zm9ybV9leHRyYS5hcHBlbmQocGx0KQogICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtX2V4dHJhLmFkZChwbHQpCi0KLSAgICAgICAgICAgIHBsYXRmb3JtX2V4dHJhID0gcGxhdGZvcm1fZXh0cmEudW5pb24oZGVmYXVsdF9wbGF0Zm9ybV9leHRyYSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBsdCBub3QgaW4gcGxhdGZvcm1fZXh0cmE6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm1fZXh0cmEuYXBwZW5kKHBsdCkKKyAgICAgICAgICAgIHBsYXRmb3JtX2V4dHJhID0gZGVmYXVsdF9wbGF0Zm9ybV9leHRyYSArIHBsYXRmb3JtX2V4dHJhCiAKICAgICAgICAgICAgIGZvciBjYW5vbmljYWxfYXJjaCBpbiBwbGF0Zm9ybV9leHRyYToKICAgICAgICAgICAgICAgICBhcmNoID0gY2Fub25pY2FsX2FyY2guc3BsaXQoJy0nKVswXQpAQCAtNzI0LDcgKzczMCw3IEBACiAgICAgICAgIGZvciB1cmkgaW4gZmVlZF91cmlzOgogICAgICAgICAgICAgaWYgYXJjaF9saXN0OgogICAgICAgICAgICAgICAgIGZvciBhcmNoIGluIGFyY2hfbGlzdDoKLSAgICAgICAgICAgICAgICAgICAgYmIubm90ZSgnTm90ZTogYWRkaW5nIFNtYXJ0IGNoYW5uZWwgdXJsJWQlcyAoJXMpJyAlCisgICAgICAgICAgICAgICAgICAgIGJiLm5vdGUoJ0FkZGluZyBTbWFydCBjaGFubmVsIHVybCVkJXMgKCVzKScgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1cmlfaXRlcmF0b3IsIGFyY2gsIGNoYW5uZWxfcHJpb3JpdHkpKQogICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnZva2Vfc21hcnQoJ2NoYW5uZWwgLS1hZGQgdXJsJWQtJXMgdHlwZT1ycG0tbWQgYmFzZXVybD0lcy8lcyAteScKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHVyaV9pdGVyYXRvciwgYXJjaCwgdXJpLCBhcmNoKSkKQEAgLTczMiw3ICs3MzgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVyaV9pdGVyYXRvciwgYXJjaCwgY2hhbm5lbF9wcmlvcml0eSkpCiAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWxfcHJpb3JpdHkgLT0gNQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBiYi5ub3RlKCdOb3RlOiBhZGRpbmcgU21hcnQgY2hhbm5lbCB1cmwlZCAoJXMpJyAlCisgICAgICAgICAgICAgICAgYmIubm90ZSgnQWRkaW5nIFNtYXJ0IGNoYW5uZWwgdXJsJWQgKCVzKScgJQogICAgICAgICAgICAgICAgICAgICAgICAgKHVyaV9pdGVyYXRvciwgY2hhbm5lbF9wcmlvcml0eSkpCiAgICAgICAgICAgICAgICAgc2VsZi5faW52b2tlX3NtYXJ0KCdjaGFubmVsIC0tYWRkIHVybCVkIHR5cGU9cnBtLW1kIGJhc2V1cmw9JXMgLXknCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHVyaV9pdGVyYXRvciwgdXJpKSkKQEAgLTc3NCwxMiArNzgwLDEyIEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGNvbXBsZW1lbnRhcnlfcGtncyA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoZWxsPVRydWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGVsbD1UcnVlKS5kZWNvZGUoInV0Zi04IikKICAgICAgICAgICAgICMgYmIubm90ZShjb21wbGVtZW50YXJ5X3BrZ3MpCiAgICAgICAgICAgICByZXR1cm4gY29tcGxlbWVudGFyeV9wa2dzCiAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlOgogICAgICAgICAgICAgYmIuZmF0YWwoIkNvdWxkIG5vdCBpbnZva2Ugc21hcnQuIENvbW1hbmQgIgotICAgICAgICAgICAgICAgICAgICAgIiclcycgcmV0dXJuZWQgJWQ6XG4lcyIgJSAoY21kLCBlLnJldHVybmNvZGUsIGUub3V0cHV0KSkKKyAgICAgICAgICAgICAgICAgICAgICInJXMnIHJldHVybmVkICVkOlxuJXMiICUgKGNtZCwgZS5yZXR1cm5jb2RlLCBlLm91dHB1dC5kZWNvZGUoInV0Zi04IikpKQogCiAgICAgZGVmIF9zZWFyY2hfcGtnX25hbWVfaW5fZmVlZHMoc2VsZiwgcGtnLCBmZWVkX2FyY2hzKToKICAgICAgICAgZm9yIGFyY2ggaW4gZmVlZF9hcmNoczoKQEAgLTc5OCw3ICs4MDQsNyBAQAogICAgICAgICAgICAgICAgIChzZWxmLnNtYXJ0X2NtZCwgc2VsZi5zbWFydF9vcHQsIHBrZykKICAgICAgICAgY21kICs9ICIgfCBzZWQgLW5lICdzLyAqUHJvdmlkZXM6Ly9wJyIKICAgICAgICAgYmIubm90ZSgnY21kOiAlcycgJSBjbWQpCi0gICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULCBzaGVsbD1UcnVlKQorICAgICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwgc2hlbGw9VHJ1ZSkuZGVjb2RlKCJ1dGYtOCIpCiAgICAgICAgICMgRm91bmQgYSBwcm92aWRlcgogICAgICAgICBpZiBvdXRwdXQ6CiAgICAgICAgICAgICBiYi5ub3RlKCdGb3VuZCBwcm92aWRlcnMgZm9yICVzOiAlcycgJSAocGtnLCBvdXRwdXQpKQpAQCAtODMzLDExICs4MzksMTMgQEAKICAgICAgICAgICAgICAgICAgICAgbmV3X3BrZyA9IHNlbGYuX3NlYXJjaF9wa2dfbmFtZV9pbl9mZWVkcyhzdWJzdCwgZmVlZF9hcmNocykKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IG5ld19wa2c6CiAgICAgICAgICAgICAgICAgICAgICAgICAjIEZhaWxlZCB0byB0cmFuc2xhdGUsIHBhY2thZ2Ugbm90IGZvdW5kIQotICAgICAgICAgICAgICAgICAgICAgICAgZXJyX21zZyA9ICclcyBub3QgZm91bmQgaW4gdGhlICVzIGZlZWRzICglcykuXG4nICUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwa2csIG1saWIsICIgIi5qb2luKGZlZWRfYXJjaHMpKQorICAgICAgICAgICAgICAgICAgICAgICAgZXJyX21zZyA9ICclcyBub3QgZm91bmQgaW4gdGhlICVzIGZlZWRzICglcykgaW4gJXMuJyAlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGtnLCBtbGliLCAiICIuam9pbihmZWVkX2FyY2hzKSwgc2VsZi5kLmdldFZhcignREVQTE9ZX0RJUl9SUE0nLCBUcnVlKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBhdHRlbXB0X29ubHk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyX21zZyArPSAiICIuam9pbihzZWxmLmZ1bGxwa2dsaXN0KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJiLmZhdGFsKGVycl9tc2cpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmIuZXJyb3IoZXJyX21zZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYi5mYXRhbCgiVGhpcyBpcyBvZnRlbiBjYXVzZWQgYnkgYW4gZW1wdHkgcGFja2FnZSBkZWNsYXJlZCAiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW4gYSByZWNpcGUncyBQQUNLQUdFUyB2YXJpYWJsZS4gKEVtcHR5IHBhY2thZ2VzIGFyZSAiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm90IGNvbnN0cnVjdGVkIHVubGVzcyBBTExPV19FTVBUWV88cGtnPiA9ICcxJyBpcyB1c2VkLikiKQogICAgICAgICAgICAgICAgICAgICAgICAgYmIud2FybihlcnJfbXNnKQogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3BrZ3MuYXBwZW5kKG5ld19wa2cpCkBAIC04NTAsMTEgKzg1OCwxMyBAQAogICAgICAgICAgICAgICAgIGRlZmF1bHRfYXJjaHMgPSBzZWxmLm1sX3ByZWZpeF9saXN0WydkZWZhdWx0J10KICAgICAgICAgICAgICAgICBuZXdfcGtnID0gc2VsZi5fc2VhcmNoX3BrZ19uYW1lX2luX2ZlZWRzKHBrZywgZGVmYXVsdF9hcmNocykKICAgICAgICAgICAgICAgICBpZiBub3QgbmV3X3BrZzoKLSAgICAgICAgICAgICAgICAgICAgZXJyX21zZyA9ICclcyBub3QgZm91bmQgaW4gdGhlIGJhc2UgZmVlZHMgKCVzKS5cbicgJSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGtnLCAnICcuam9pbihkZWZhdWx0X2FyY2hzKSkKKyAgICAgICAgICAgICAgICAgICAgZXJyX21zZyA9ICclcyBub3QgZm91bmQgaW4gdGhlIGZlZWRzICglcykgaW4gJXMuJyAlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGtnLCAiICIuam9pbihkZWZhdWx0X2FyY2hzKSwgc2VsZi5kLmdldFZhcignREVQTE9ZX0RJUl9SUE0nLCBUcnVlKSkKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGF0dGVtcHRfb25seToKLSAgICAgICAgICAgICAgICAgICAgICAgIGVycl9tc2cgKz0gIiAiLmpvaW4oc2VsZi5mdWxscGtnbGlzdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJiLmZhdGFsKGVycl9tc2cpCisgICAgICAgICAgICAgICAgICAgICAgICBiYi5lcnJvcihlcnJfbXNnKQorICAgICAgICAgICAgICAgICAgICAgICAgYmIuZmF0YWwoIlRoaXMgaXMgb2Z0ZW4gY2F1c2VkIGJ5IGFuIGVtcHR5IHBhY2thZ2UgZGVjbGFyZWQgIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW4gYSByZWNpcGUncyBQQUNLQUdFUyB2YXJpYWJsZS4gKEVtcHR5IHBhY2thZ2VzIGFyZSAiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgY29uc3RydWN0ZWQgdW5sZXNzIEFMTE9XX0VNUFRZXzxwa2c+ID0gJzEnIGlzIHVzZWQuKSIpCiAgICAgICAgICAgICAgICAgICAgIGJiLndhcm4oZXJyX21zZykKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBuZXdfcGtncy5hcHBlbmQobmV3X3BrZykKQEAgLTk0Niw3ICs5NTYsNyBAQAogICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQsIHNoZWxsPVRydWUpCiAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlOgogICAgICAgICAgICAgYmIuZmF0YWwoIkNyZWF0ZSBycG0gZGF0YWJhc2UgZmFpbGVkLiBDb21tYW5kICclcycgIgotICAgICAgICAgICAgICAgICAgICAgInJldHVybmVkICVkOlxuJXMiICUgKGNtZCwgZS5yZXR1cm5jb2RlLCBlLm91dHB1dCkpCisgICAgICAgICAgICAgICAgICAgICAicmV0dXJuZWQgJWQ6XG4lcyIgJSAoY21kLCBlLnJldHVybmNvZGUsIGUub3V0cHV0LmRlY29kZSgidXRmLTgiKSkpCiAgICAgICAgICMgSW1wb3J0IEdQRyBrZXkgdG8gUlBNIGRhdGFiYXNlIG9mIHRoZSB0YXJnZXQgc3lzdGVtCiAgICAgICAgIGlmIHNlbGYuZC5nZXRWYXIoJ1JQTV9TSUdOX1BBQ0tBR0VTJywgVHJ1ZSkgPT0gJzEnOgogICAgICAgICAgICAgcHVia2V5X3BhdGggPSBzZWxmLmQuZ2V0VmFyKCdSUE1fR1BHX1BVQktFWScsIFRydWUpCkBAIC0xMDA2LDkgKzEwMTYsMTkgQEAKICAgICAgICAgY2hfYWxyZWFkeV9hZGRlZCA9IFtdCiAgICAgICAgIGZvciBjYW5vbmljYWxfYXJjaCBpbiBwbGF0Zm9ybV9leHRyYToKICAgICAgICAgICAgIGFyY2ggPSBjYW5vbmljYWxfYXJjaC5zcGxpdCgnLScpWzBdCi0gICAgICAgICAgICBhcmNoX2NoYW5uZWwgPSBvcy5wYXRoLmpvaW4oc2VsZi5kZXBsb3lfZGlyLCBhcmNoKQotICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoYXJjaF9jaGFubmVsKSBhbmQgbm90IGFyY2ggaW4gY2hfYWxyZWFkeV9hZGRlZDoKLSAgICAgICAgICAgICAgICBiYi5ub3RlKCdOb3RlOiBhZGRpbmcgU21hcnQgY2hhbm5lbCAlcyAoJXMpJyAlCisgICAgICAgICAgICBhcmNoX2NoYW5uZWwgPSBvcy5wYXRoLmpvaW4oc2VsZi5kLmdldFZhcignV09SS0RJUicsIFRydWUpLCAncnBtcycsIGFyY2gpCisgICAgICAgICAgICBvZS5wYXRoLnJlbW92ZShhcmNoX2NoYW5uZWwpCisgICAgICAgICAgICBkZXBsb3lfYXJjaF9kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi5kZXBsb3lfZGlyLCBhcmNoKQorICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRlcGxveV9hcmNoX2Rpcik6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIGxvY2tmaWxlbmFtZSA9IHNlbGYuZC5nZXRWYXIoJ0RFUExPWV9ESVJfUlBNJywgVHJ1ZSkgKyAiL3JwbS5sb2NrIgorICAgICAgICAgICAgbGYgPSBiYi51dGlscy5sb2NrZmlsZShsb2NrZmlsZW5hbWUsIEZhbHNlKQorICAgICAgICAgICAgb2UucGF0aC5jb3B5aGFyZGxpbmt0cmVlKGRlcGxveV9hcmNoX2RpciwgYXJjaF9jaGFubmVsKQorICAgICAgICAgICAgYmIudXRpbHMudW5sb2NrZmlsZShsZikKKworICAgICAgICAgICAgaWYgbm90IGFyY2ggaW4gY2hfYWxyZWFkeV9hZGRlZDoKKyAgICAgICAgICAgICAgICBiYi5ub3RlKCdBZGRpbmcgU21hcnQgY2hhbm5lbCAlcyAoJXMpJyAlCiAgICAgICAgICAgICAgICAgICAgICAgICAoYXJjaCwgY2hhbm5lbF9wcmlvcml0eSkpCiAgICAgICAgICAgICAgICAgc2VsZi5faW52b2tlX3NtYXJ0KCdjaGFubmVsIC0tYWRkICVzIHR5cGU9cnBtLW1kIGJhc2V1cmw9JXMgLXknCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGFyY2gsIGFyY2hfY2hhbm5lbCkpCkBAIC0xMDgwLDggKzExMDAsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlX3Jvb3QpCiAgICAgICAgIG9wZW4oc2VsZi5zY3JpcHRsZXRfd3JhcHBlciwgJ3crJykud3JpdGUoc2NyaXB0bGV0X2NvbnRlbnQpCiAKLSAgICAgICAgYmIubm90ZSgiTm90ZTogY29uZmlndXJpbmcgUlBNIGNyb3NzLWluc3RhbGwgc2NyaXB0bGV0X3dyYXBwZXIiKQotICAgICAgICBvcy5jaG1vZChzZWxmLnNjcmlwdGxldF93cmFwcGVyLCAwNzU1KQorICAgICAgICBiYi5ub3RlKCJjb25maWd1cmluZyBSUE0gY3Jvc3MtaW5zdGFsbCBzY3JpcHRsZXRfd3JhcHBlciIpCisgICAgICAgIG9zLmNobW9kKHNlbGYuc2NyaXB0bGV0X3dyYXBwZXIsIDBvNzU1KQogICAgICAgICBjbWQgPSAnY29uZmlnIC0tc2V0IHJwbS1leHRyYS1tYWNyb3MuX2Nyb3NzX3NjcmlwdGxldF93cmFwcGVyPSVzJyAlIFwKICAgICAgICAgICAgICAgc2VsZi5zY3JpcHRsZXRfd3JhcHBlcgogICAgICAgICBzZWxmLl9pbnZva2Vfc21hcnQoY21kKQpAQCAtMTA5OSw3ICsxMTE5LDcgQEAKICAgICAgICAgICAgIHN1Yl9yZGVwID0gc3ViX2RhdGEuZ2V0KCJSREVQRU5EU18iICsgcGtnKQogICAgICAgICAgICAgaWYgbm90IHN1Yl9yZGVwOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBkb25lID0gYmIudXRpbHMuZXhwbG9kZV9kZXBfdmVyc2lvbnMyKHN1Yl9yZGVwKS5rZXlzKCkKKyAgICAgICAgICAgIGRvbmUgPSBsaXN0KGJiLnV0aWxzLmV4cGxvZGVfZGVwX3ZlcnNpb25zMihzdWJfcmRlcCkua2V5cygpKQogICAgICAgICAgICAgbmV4dCA9IGRvbmUKICAgICAgICAgICAgICMgRmluZCBhbGwgdGhlIHJkZXBlbmRzIG9uIGRlcGVuZGVuY3kgY2hhaW4KICAgICAgICAgICAgIHdoaWxlIG5leHQ6CkBAIC0xMTgyLDYgKzEyMDIsOSBAQAogICAgICAgICAgICAgICAgICAgICBuZXdfZGVwZW5kc1tuZXdfZGVwZW5kXSA9IGRlcHNbZGVwZW5kXQogICAgICAgICAgICAgICAgIHBrZ3MgPSBiYi51dGlscy5qb2luX2RlcHMobmV3X2RlcGVuZHMsIGNvbW1hc2VwPVRydWUpLnNwbGl0KCcsICcpCiAgICAgICAgIHBrZ3MgPSBzZWxmLl9wa2dfdHJhbnNsYXRlX29lX3RvX3NtYXJ0KHBrZ3MsIGF0dGVtcHRfb25seSkKKyAgICAgICAgaWYgbm90IHBrZ3M6CisgICAgICAgICAgICBiYi5ub3RlKCJUaGVyZSBhcmUgbm8gcGFja2FnZXMgdG8gaW5zdGFsbCIpCisgICAgICAgICAgICByZXR1cm4KICAgICAgICAgaWYgbm90IGF0dGVtcHRfb25seToKICAgICAgICAgICAgIGJiLm5vdGUoJ3RvIGJlIGluc3RhbGxlZDogJXMnICUgJyAnLmpvaW4ocGtncykpCiAgICAgICAgICAgICBjbWQgPSAiJXMgJXMgaW5zdGFsbCAteSAlcyIgJSBcCkBAIC0xMTkzLDExICsxMjE2LDExIEBACiAgICAgICAgICAgICBjbWQgPSAiJXMgJXMgaW5zdGFsbCAtLWF0dGVtcHQgLXkgJXMiICUgXAogICAgICAgICAgICAgICAgICAgKHNlbGYuc21hcnRfY21kLCBzZWxmLnNtYXJ0X29wdCwgJyAnLmpvaW4ocGtncykpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZC5zcGxpdCgpLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCisgICAgICAgICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQuc3BsaXQoKSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKS5kZWNvZGUoInV0Zi04IikKICAgICAgICAgICAgIGJiLm5vdGUob3V0cHV0KQogICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKICAgICAgICAgICAgIGJiLmZhdGFsKCJVbmFibGUgdG8gaW5zdGFsbCBwYWNrYWdlcy4gQ29tbWFuZCAnJXMnICIKLSAgICAgICAgICAgICAgICAgICAgICJyZXR1cm5lZCAlZDpcbiVzIiAlIChjbWQsIGUucmV0dXJuY29kZSwgZS5vdXRwdXQpKQorICAgICAgICAgICAgICAgICAgICAgInJldHVybmVkICVkOlxuJXMiICUgKGNtZCwgZS5yZXR1cm5jb2RlLCBlLm91dHB1dC5kZWNvZGUoInV0Zi04IikpKQogCiAgICAgJycnCiAgICAgUmVtb3ZlIHBrZ3Mgd2l0aCBzbWFydCwgdGhlIHBrZyBuYW1lIGlzIHNtYXJ0L3JwbSBmb3JtYXQKQEAgLTEyMjMsMTEgKzEyNDYsMTEgQEAKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBiYi5ub3RlKGNtZCkKLSAgICAgICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULCBzaGVsbD1UcnVlKQorICAgICAgICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQsIHNoZWxsPVRydWUpLmRlY29kZSgidXRmLTgiKQogICAgICAgICAgICAgYmIubm90ZShvdXRwdXQpCiAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlOgogICAgICAgICAgICAgYmIubm90ZSgiVW5hYmxlIHRvIHJlbW92ZSBwYWNrYWdlcy4gQ29tbWFuZCAnJXMnICIKLSAgICAgICAgICAgICAgICAgICAgInJldHVybmVkICVkOlxuJXMiICUgKGNtZCwgZS5yZXR1cm5jb2RlLCBlLm91dHB1dCkpCisgICAgICAgICAgICAgICAgICAgICJyZXR1cm5lZCAlZDpcbiVzIiAlIChjbWQsIGUucmV0dXJuY29kZSwgZS5vdXRwdXQuZGVjb2RlKCJ1dGYtOCIpKSkKIAogICAgIGRlZiB1cGdyYWRlKHNlbGYpOgogICAgICAgICBiYi5ub3RlKCdzbWFydCB1cGdyYWRlJykKQEAgLTEzMDAsNyArMTMyMyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsX3BrZ3MuYXBwZW5kKHBrZykKICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6CiAgICAgICAgICAgICBiYi5ub3RlKCJVbmFibGUgdG8gZHVtcCBpbnN0YWxsIHBhY2thZ2VzLiBDb21tYW5kICclcycgIgotICAgICAgICAgICAgICAgICAgICAicmV0dXJuZWQgJWQ6XG4lcyIgJSAoY21kLCBlLnJldHVybmNvZGUsIGUub3V0cHV0KSkKKyAgICAgICAgICAgICAgICAgICAgInJldHVybmVkICVkOlxuJXMiICUgKGNtZCwgZS5yZXR1cm5jb2RlLCBlLm91dHB1dC5kZWNvZGUoInV0Zi04IikpKQogICAgICAgICAjIFJlY292ZXJ5IHJwbXN5cyBjaGFubmVsCiAgICAgICAgIHNlbGYuX2ludm9rZV9zbWFydCgnY2hhbm5lbCAtLWVuYWJsZSBycG1zeXMnKQogICAgICAgICByZXR1cm4gaW5zdGFsbF9wa2dzCkBAIC0xMzQyLDcgKzEzNjUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlX3BrZ3MuYXBwZW5kKHBrZy5zdHJpcCgpKQogICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKICAgICAgICAgICAgIGJiLm5vdGUoIlVuYWJsZSB0byBsaXN0IGFsbCBhdmFpbGFibGUgcGFja2FnZXMuIENvbW1hbmQgJyVzJyAiCi0gICAgICAgICAgICAgICAgICAgICJyZXR1cm5lZCAlZDpcbiVzIiAlIChjbWQsIGUucmV0dXJuY29kZSwgZS5vdXRwdXQpKQorICAgICAgICAgICAgICAgICAgICAicmV0dXJuZWQgJWQ6XG4lcyIgJSAoY21kLCBlLnJldHVybmNvZGUsIGUub3V0cHV0LmRlY29kZSgidXRmLTgiKSkpCiAKICAgICAgICAgc2VsZi5mdWxscGtnbGlzdCA9IGF2YWlsYWJsZV9wa2dzCiAKQEAgLTEzNjksMTIgKzEzOTIsMTIgQEAKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBiYi5ub3RlKGNtZCkKLSAgICAgICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULCBzaGVsbD1UcnVlKS5zdHJpcCgpCisgICAgICAgICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwgc2hlbGw9VHJ1ZSkuc3RyaXAoKS5kZWNvZGUoInV0Zi04IikKICAgICAgICAgICAgIGJiLm5vdGUob3V0cHV0KQotICAgICAgICAgICAgb3MuY2htb2Qoc2F2ZWRfZGlyLCAwNzU1KQorICAgICAgICAgICAgb3MuY2htb2Qoc2F2ZWRfZGlyLCAwbzc1NSkKICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6CiAgICAgICAgICAgICBiYi5mYXRhbCgiSW52b2tlIHNhdmVfcnBtcG9zdGluc3QgZmFpbGVkLiBDb21tYW5kICclcycgIgotICAgICAgICAgICAgICAgICAgICAgInJldHVybmVkICVkOlxuJXMiICUgKGNtZCwgZS5yZXR1cm5jb2RlLCBlLm91dHB1dCkpCisgICAgICAgICAgICAgICAgICAgICAicmV0dXJuZWQgJWQ6XG4lcyIgJSAoY21kLCBlLnJldHVybmNvZGUsIGUub3V0cHV0LmRlY29kZSgidXRmLTgiKSkpCiAKICAgICAnJydXcml0ZSBjb21tb24gY29uZmlndXJhdGlvbiBmb3IgdGFyZ2V0IHVzYWdlJycnCiAgICAgZGVmIHJwbV9zZXR1cF9zbWFydF90YXJnZXRfY29uZmlnKHNlbGYpOgpAQCAtMTM5OCw4ICsxNDIxLDE1NyBAQAogICAgICAgICBmb3IgZiBpbiBycG1fZGJfbG9ja3M6CiAgICAgICAgICAgICBiYi51dGlscy5yZW1vdmUoZiwgVHJ1ZSkKIAorICAgICIiIgorICAgIFJldHVybnMgYSBkaWN0aW9uYXJ5IHdpdGggdGhlIHBhY2thZ2UgaW5mby4KKyAgICAiIiIKKyAgICBkZWYgcGFja2FnZV9pbmZvKHNlbGYsIHBrZyk6CisgICAgICAgIGNtZCA9ICIlcyAlcyBpbmZvIC0tdXJscyAlcyIgJSAoc2VsZi5zbWFydF9jbWQsIHNlbGYuc21hcnRfb3B0LCBwa2cpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULCBzaGVsbD1UcnVlKS5kZWNvZGUoInV0Zi04IikKKyAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6CisgICAgICAgICAgICBiYi5mYXRhbCgiVW5hYmxlIHRvIGxpc3QgYXZhaWxhYmxlIHBhY2thZ2VzLiBDb21tYW5kICclcycgIgorICAgICAgICAgICAgICAgICAgICAgInJldHVybmVkICVkOlxuJXMiICUgKGNtZCwgZS5yZXR1cm5jb2RlLCBlLm91dHB1dC5kZWNvZGUoInV0Zi04IikpKQogCi1jbGFzcyBPcGtnUE0oUGFja2FnZU1hbmFnZXIpOgorICAgICAgICAjIFNldCBkZWZhdWx0IHZhbHVlcyB0byBhdm9pZCBVbmJvdW5kTG9jYWxFcnJvcgorICAgICAgICBhcmNoID0gIiIKKyAgICAgICAgdmVyID0gIiIKKyAgICAgICAgZmlsZW5hbWUgPSAiIgorCisgICAgICAgICNQYXJzZSBvdXRwdXQKKyAgICAgICAgZm9yIGxpbmUgaW4gb3V0cHV0LnNwbGl0bGluZXMoKToKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJzdHJpcCgpCisgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIk5hbWU6Iik6CisgICAgICAgICAgICAgICAgcGtnID0gbGluZS5zcGxpdCgiOiAiKVsxXQorICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoIlZlcnNpb246Iik6CisgICAgICAgICAgICAgICAgdG1wX3N0ciA9IGxpbmUuc3BsaXQoIjogIilbMV0KKyAgICAgICAgICAgICAgICB2ZXIsIGFyY2ggPSB0bXBfc3RyLnNwbGl0KCJAIikKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICMgR2V0IGZpbGVuYW1lCisgICAgICAgIGluZGV4ID0gcmUuc2VhcmNoKCJeVVJMcyIsIG91dHB1dCwgcmUuTVVMVElMSU5FKQorICAgICAgICB0bXBfc3RyID0gb3V0cHV0W2luZGV4LmVuZCgpOl0KKyAgICAgICAgZm9yIGxpbmUgaW4gdG1wX3N0ci5zcGxpdGxpbmVzKCk6CisgICAgICAgICAgICBpZiAiLyIgaW4gbGluZToKKyAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5sc3RyaXAoKQorICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gbGluZS5zcGxpdCgiICIpWzBdCisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAjIFRvIGhhdmUgdGhlIHNhbWUgZGF0YSB0eXBlIHRoYW4gb3RoZXIgcGFja2FnZV9pbmZvIG1ldGhvZHMKKyAgICAgICAgZmlsZXBhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5kZXBsb3lfZGlyLCBhcmNoLCBmaWxlbmFtZSkKKyAgICAgICAgcGtnX2RpY3QgPSB7fQorICAgICAgICBwa2dfZGljdFtwa2ddID0geyJhcmNoIjphcmNoLCAidmVyIjp2ZXIsICJmaWxlbmFtZSI6ZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGVwYXRoIjogZmlsZXBhdGh9CisKKyAgICAgICAgcmV0dXJuIHBrZ19kaWN0CisKKyAgICAiIiIKKyAgICBSZXR1cm5zIHRoZSBwYXRoIHRvIGEgdG1wZGlyIHdoZXJlIHJlc2lkZXMgdGhlIGNvbnRlbnRzIG9mIGEgcGFja2FnZS4KKworICAgIERlbGV0aW5nIHRoZSB0bXBkaXIgaXMgcmVzcG9uc2FiaWxpdHkgb2YgdGhlIGNhbGxlci4KKworICAgICIiIgorICAgIGRlZiBleHRyYWN0KHNlbGYsIHBrZyk6CisgICAgICAgIHBrZ19pbmZvID0gc2VsZi5wYWNrYWdlX2luZm8ocGtnKQorICAgICAgICBpZiBub3QgcGtnX2luZm86CisgICAgICAgICAgICBiYi5mYXRhbCgiVW5hYmxlIHRvIGdldCBpbmZvcm1hdGlvbiBmb3IgcGFja2FnZSAnJXMnIHdoaWxlICIKKyAgICAgICAgICAgICAgICAgICAgICJ0cnlpbmcgdG8gZXh0cmFjdCB0aGUgcGFja2FnZS4iICAlIHBrZykKKworICAgICAgICBwa2dfcGF0aCA9IHBrZ19pbmZvW3BrZ11bImZpbGVwYXRoIl0KKworICAgICAgICBjcGlvX2NtZCA9IGJiLnV0aWxzLndoaWNoKG9zLmdldGVudigiUEFUSCIpLCAiY3BpbyIpCisgICAgICAgIHJwbTJjcGlvX2NtZCA9IGJiLnV0aWxzLndoaWNoKG9zLmdldGVudigiUEFUSCIpLCAicnBtMmNwaW8iKQorCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShwa2dfcGF0aCk6CisgICAgICAgICAgICBiYi5mYXRhbCgiVW5hYmxlIHRvIGV4dHJhY3QgcGFja2FnZSBmb3IgJyVzJy4iCisgICAgICAgICAgICAgICAgICAgICAiRmlsZSAlcyBkb2Vzbid0IGV4aXN0cyIgJSAocGtnLCBwa2dfcGF0aCkpCisKKyAgICAgICAgdG1wX2RpciA9IHRlbXBmaWxlLm1rZHRlbXAoKQorICAgICAgICBjdXJyZW50X2RpciA9IG9zLmdldGN3ZCgpCisgICAgICAgIG9zLmNoZGlyKHRtcF9kaXIpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY21kID0gIiVzICVzIHwgJXMgLWlkbXYiICUgKHJwbTJjcGlvX2NtZCwgcGtnX3BhdGgsIGNwaW9fY21kKQorICAgICAgICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQsIHNoZWxsPVRydWUpCisgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlOgorICAgICAgICAgICAgYmIudXRpbHMucmVtb3ZlKHRtcF9kaXIsIHJlY3Vyc2U9VHJ1ZSkKKyAgICAgICAgICAgIGJiLmZhdGFsKCJVbmFibGUgdG8gZXh0cmFjdCAlcyBwYWNrYWdlLiBDb21tYW5kICclcycgIgorICAgICAgICAgICAgICAgICAgICAgInJldHVybmVkICVkOlxuJXMiICUgKHBrZ19wYXRoLCBjbWQsIGUucmV0dXJuY29kZSwgZS5vdXRwdXQuZGVjb2RlKCJ1dGYtOCIpKSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGJiLnV0aWxzLnJlbW92ZSh0bXBfZGlyLCByZWN1cnNlPVRydWUpCisgICAgICAgICAgICBiYi5mYXRhbCgiVW5hYmxlIHRvIGV4dHJhY3QgJXMgcGFja2FnZS4gQ29tbWFuZCAnJXMnICIKKyAgICAgICAgICAgICAgICAgICAgICJyZXR1cm5lZCAlZDpcbiVzIGF0ICVzIiAlIChwa2dfcGF0aCwgY21kLCBlLmVycm5vLCBlLnN0cmVycm9yLCBlLmZpbGVuYW1lKSkKKworICAgICAgICBiYi5ub3RlKCJFeHRyYWN0ZWQgJXMgdG8gJXMiICUgKHBrZ19wYXRoLCB0bXBfZGlyKSkKKyAgICAgICAgb3MuY2hkaXIoY3VycmVudF9kaXIpCisKKyAgICAgICAgcmV0dXJuIHRtcF9kaXIKKworCitjbGFzcyBPcGtnRHBrZ1BNKFBhY2thZ2VNYW5hZ2VyKToKKyAgICAiIiIKKyAgICBUaGlzIGlzIGFuIGFic3RyYWN0IGNsYXNzLiBEbyBub3QgaW5zdGFudGlhdGUgdGhpcyBkaXJlY3RseS4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZCk6CisgICAgICAgIHN1cGVyKE9wa2dEcGtnUE0sIHNlbGYpLl9faW5pdF9fKGQpCisKKyAgICAiIiIKKyAgICBSZXR1cm5zIGEgZGljdGlvbmFyeSB3aXRoIHRoZSBwYWNrYWdlIGluZm8uCisKKyAgICBUaGlzIG1ldGhvZCBleHRyYWN0cyB0aGUgY29tbW9uIHBhcnRzIGZvciBPcGtnIGFuZCBEcGtnCisgICAgIiIiCisgICAgZGVmIHBhY2thZ2VfaW5mbyhzZWxmLCBwa2csIGNtZCk6CisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQsIHNoZWxsPVRydWUpLmRlY29kZSgidXRmLTgiKQorICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGJiLmZhdGFsKCJVbmFibGUgdG8gbGlzdCBhdmFpbGFibGUgcGFja2FnZXMuIENvbW1hbmQgJyVzJyAiCisgICAgICAgICAgICAgICAgICAgICAicmV0dXJuZWQgJWQ6XG4lcyIgJSAoY21kLCBlLnJldHVybmNvZGUsIGUub3V0cHV0LmRlY29kZSgidXRmLTgiKSkpCisgICAgICAgIHJldHVybiBvcGtnX3F1ZXJ5KG91dHB1dCkKKworICAgICIiIgorICAgIFJldHVybnMgdGhlIHBhdGggdG8gYSB0bXBkaXIgd2hlcmUgcmVzaWRlcyB0aGUgY29udGVudHMgb2YgYSBwYWNrYWdlLgorCisgICAgRGVsZXRpbmcgdGhlIHRtcGRpciBpcyByZXNwb25zYWJpbGl0eSBvZiB0aGUgY2FsbGVyLgorCisgICAgVGhpcyBtZXRob2QgZXh0cmFjdHMgdGhlIGNvbW1vbiBwYXJ0cyBmb3IgT3BrZyBhbmQgRHBrZworICAgICIiIgorICAgIGRlZiBleHRyYWN0KHNlbGYsIHBrZywgcGtnX2luZm8pOgorCisgICAgICAgIGFyX2NtZCA9IGJiLnV0aWxzLndoaWNoKG9zLmdldGVudigiUEFUSCIpLCAiYXIiKQorICAgICAgICB0YXJfY21kID0gYmIudXRpbHMud2hpY2gob3MuZ2V0ZW52KCJQQVRIIiksICJ0YXIiKQorICAgICAgICBwa2dfcGF0aCA9IHBrZ19pbmZvW3BrZ11bImZpbGVwYXRoIl0KKworICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUocGtnX3BhdGgpOgorICAgICAgICAgICAgYmIuZmF0YWwoIlVuYWJsZSB0byBleHRyYWN0IHBhY2thZ2UgZm9yICclcycuIgorICAgICAgICAgICAgICAgICAgICAgIkZpbGUgJXMgZG9lc24ndCBleGlzdHMiICUgKHBrZywgcGtnX3BhdGgpKQorCisgICAgICAgIHRtcF9kaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKKyAgICAgICAgY3VycmVudF9kaXIgPSBvcy5nZXRjd2QoKQorICAgICAgICBvcy5jaGRpcih0bXBfZGlyKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNtZCA9ICIlcyB4ICVzIiAlIChhcl9jbWQsIHBrZ19wYXRoKQorICAgICAgICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQsIHNoZWxsPVRydWUpCisgICAgICAgICAgICBjbWQgPSAiJXMgeGYgZGF0YS50YXIuKiIgJSB0YXJfY21kCisgICAgICAgICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwgc2hlbGw9VHJ1ZSkKKyAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6CisgICAgICAgICAgICBiYi51dGlscy5yZW1vdmUodG1wX2RpciwgcmVjdXJzZT1UcnVlKQorICAgICAgICAgICAgYmIuZmF0YWwoIlVuYWJsZSB0byBleHRyYWN0ICVzIHBhY2thZ2UuIENvbW1hbmQgJyVzJyAiCisgICAgICAgICAgICAgICAgICAgICAicmV0dXJuZWQgJWQ6XG4lcyIgJSAocGtnX3BhdGgsIGNtZCwgZS5yZXR1cm5jb2RlLCBlLm91dHB1dC5kZWNvZGUoInV0Zi04IikpKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgYmIudXRpbHMucmVtb3ZlKHRtcF9kaXIsIHJlY3Vyc2U9VHJ1ZSkKKyAgICAgICAgICAgIGJiLmZhdGFsKCJVbmFibGUgdG8gZXh0cmFjdCAlcyBwYWNrYWdlLiBDb21tYW5kICclcycgIgorICAgICAgICAgICAgICAgICAgICAgInJldHVybmVkICVkOlxuJXMgYXQgJXMiICUgKHBrZ19wYXRoLCBjbWQsIGUuZXJybm8sIGUuc3RyZXJyb3IsIGUuZmlsZW5hbWUpKQorCisgICAgICAgIGJiLm5vdGUoIkV4dHJhY3RlZCAlcyB0byAlcyIgJSAocGtnX3BhdGgsIHRtcF9kaXIpKQorICAgICAgICBiYi51dGlscy5yZW1vdmUob3MucGF0aC5qb2luKHRtcF9kaXIsICJkZWJpYW4tYmluYXJ5IikpCisgICAgICAgIGJiLnV0aWxzLnJlbW92ZShvcy5wYXRoLmpvaW4odG1wX2RpciwgImNvbnRyb2wudGFyLmd6IikpCisgICAgICAgIG9zLmNoZGlyKGN1cnJlbnRfZGlyKQorCisgICAgICAgIHJldHVybiB0bXBfZGlyCisKKworY2xhc3MgT3BrZ1BNKE9wa2dEcGtnUE0pOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkLCB0YXJnZXRfcm9vdGZzLCBjb25maWdfZmlsZSwgYXJjaHMsIHRhc2tfbmFtZT0ndGFyZ2V0Jyk6CiAgICAgICAgIHN1cGVyKE9wa2dQTSwgc2VsZikuX19pbml0X18oZCkKIApAQCAtMTQxMSw3ICsxNTgzLDcgQEAKICAgICAgICAgc2VsZi5kZXBsb3lfZGlyID0gc2VsZi5kLmdldFZhcigiREVQTE9ZX0RJUl9JUEsiLCBUcnVlKQogICAgICAgICBzZWxmLmRlcGxveV9sb2NrX2ZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi5kZXBsb3lfZGlyLCAiZGVwbG95LmxvY2siKQogICAgICAgICBzZWxmLm9wa2dfY21kID0gYmIudXRpbHMud2hpY2gob3MuZ2V0ZW52KCdQQVRIJyksICJvcGtnIikKLSAgICAgICAgc2VsZi5vcGtnX2FyZ3MgPSAiLS12b2xhdGlsZS1jYWNoZSAtZiAlcyAtbyAlcyAiICUgKHNlbGYuY29uZmlnX2ZpbGUsIHRhcmdldF9yb290ZnMpCisgICAgICAgIHNlbGYub3BrZ19hcmdzID0gIi0tdm9sYXRpbGUtY2FjaGUgLWYgJXMgLXQgJXMgLW8gJXMgIiAlIChzZWxmLmNvbmZpZ19maWxlLCBzZWxmLmQuZXhwYW5kKCcke1R9L2lwa3RlbXAvJykgLHRhcmdldF9yb290ZnMpCiAgICAgICAgIHNlbGYub3BrZ19hcmdzICs9IHNlbGYuZC5nZXRWYXIoIk9QS0dfQVJHUyIsIFRydWUpCiAKICAgICAgICAgb3BrZ19saWJfZGlyID0gc2VsZi5kLmdldFZhcignT1BLR0xJQkRJUicsIFRydWUpCkBAIC0xNTUyLDEyICsxNzI0LDEyIEBACiAgICAgICAgICAgICAgICAgICAgIGZvciBhcmNoIGluIGFyY2hzOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuZmVlZF9hcmNocyBpcyBOb25lKSBhbmQgKG5vdCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi5kZXBsb3lfZGlyLCBhcmNoKSkpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgICAgICAgICBiYi5ub3RlKCdOb3RlOiBhZGRpbmcgb3BrZyBmZWVkIHVybC0lcy0lZCAoJXMpJyAlCisgICAgICAgICAgICAgICAgICAgICAgICBiYi5ub3RlKCdBZGRpbmcgb3BrZyBmZWVkIHVybC0lcy0lZCAoJXMpJyAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFyY2gsIHVyaV9pdGVyYXRvciwgdXJpKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ19maWxlLndyaXRlKCJzcmMvZ3ogdXJpLSVzLSVkICVzLyVzXG4iICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhcmNoLCB1cmlfaXRlcmF0b3IsIHVyaSwgYXJjaCkpCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgYmIubm90ZSgnTm90ZTogYWRkaW5nIG9wa2cgZmVlZCB1cmwtJWQgKCVzKScgJQorICAgICAgICAgICAgICAgICAgICBiYi5ub3RlKCdBZGRpbmcgb3BrZyBmZWVkIHVybC0lZCAoJXMpJyAlCiAgICAgICAgICAgICAgICAgICAgICAgICAodXJpX2l0ZXJhdG9yLCB1cmkpKQogICAgICAgICAgICAgICAgICAgICBjb25maWdfZmlsZS53cml0ZSgic3JjL2d6IHVyaS0lZCAlc1xuIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1cmlfaXRlcmF0b3IsIHVyaSkpCkBAIC0xNTc0LDcgKzE3NDYsNyBAQAogICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKICAgICAgICAgICAgIHNlbGYuZGVwbG95X2Rpcl91bmxvY2soKQogICAgICAgICAgICAgYmIuZmF0YWwoIlVuYWJsZSB0byB1cGRhdGUgdGhlIHBhY2thZ2UgaW5kZXggZmlsZXMuIENvbW1hbmQgJyVzJyAiCi0gICAgICAgICAgICAgICAgICAgICAicmV0dXJuZWQgJWQ6XG4lcyIgJSAoY21kLCBlLnJldHVybmNvZGUsIGUub3V0cHV0KSkKKyAgICAgICAgICAgICAgICAgICAgICJyZXR1cm5lZCAlZDpcbiVzIiAlIChjbWQsIGUucmV0dXJuY29kZSwgZS5vdXRwdXQuZGVjb2RlKCJ1dGYtOCIpKSkKIAogICAgICAgICBzZWxmLmRlcGxveV9kaXJfdW5sb2NrKCkKIApAQCAtMTU5NSwxMiArMTc2NywxMiBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBiYi5ub3RlKCJJbnN0YWxsaW5nIHRoZSBmb2xsb3dpbmcgcGFja2FnZXM6ICVzIiAlICcgJy5qb2luKHBrZ3MpKQogICAgICAgICAgICAgYmIubm90ZShjbWQpCi0gICAgICAgICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQuc3BsaXQoKSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQorICAgICAgICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLnNwbGl0KCksIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkuZGVjb2RlKCJ1dGYtOCIpCiAgICAgICAgICAgICBiYi5ub3RlKG91dHB1dCkKICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAoYmIuZmF0YWwsIGJiLm5vdGUpW2F0dGVtcHRfb25seV0oIlVuYWJsZSB0byBpbnN0YWxsIHBhY2thZ2VzLiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbW1hbmQgJyVzJyByZXR1cm5lZCAlZDpcbiVzIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNtZCwgZS5yZXR1cm5jb2RlLCBlLm91dHB1dCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNtZCwgZS5yZXR1cm5jb2RlLCBlLm91dHB1dC5kZWNvZGUoInV0Zi04IikpKQogCiAgICAgZGVmIHJlbW92ZShzZWxmLCBwa2dzLCB3aXRoX2RlcGVuZGVuY2llcz1UcnVlKToKICAgICAgICAgaWYgd2l0aF9kZXBlbmRlbmNpZXM6CkBAIC0xNjEyLDExICsxNzg0LDExIEBACiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgYmIubm90ZShjbWQpCi0gICAgICAgICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQuc3BsaXQoKSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQorICAgICAgICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLnNwbGl0KCksIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkuZGVjb2RlKCJ1dGYtOCIpCiAgICAgICAgICAgICBiYi5ub3RlKG91dHB1dCkKICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6CiAgICAgICAgICAgICBiYi5mYXRhbCgiVW5hYmxlIHRvIHJlbW92ZSBwYWNrYWdlcy4gQ29tbWFuZCAnJXMnICIKLSAgICAgICAgICAgICAgICAgICAgICJyZXR1cm5lZCAlZDpcbiVzIiAlIChlLmNtZCwgZS5yZXR1cm5jb2RlLCBlLm91dHB1dCkpCisgICAgICAgICAgICAgICAgICAgICAicmV0dXJuZWQgJWQ6XG4lcyIgJSAoZS5jbWQsIGUucmV0dXJuY29kZSwgZS5vdXRwdXQuZGVjb2RlKCJ1dGYtOCIpKSkKIAogICAgIGRlZiB3cml0ZV9pbmRleChzZWxmKToKICAgICAgICAgc2VsZi5kZXBsb3lfZGlyX2xvY2soKQpAQCAtMTY1OSwxMCArMTgzMSwxMCBAQAogICAgICAgICAgICAgICAgIHBrZ19pbmZvID0gY21kICsgcGtnCiAKICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KHBrZ19pbmZvLnNwbGl0KCksIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkuc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChwa2dfaW5mby5zcGxpdCgpLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpLnN0cmlwKCkuZGVjb2RlKCJ1dGYtOCIpCiAgICAgICAgICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgIGJiLmZhdGFsKCJDYW5ub3QgZ2V0IHBhY2thZ2UgaW5mby4gQ29tbWFuZCAnJXMnICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJldHVybmVkICVkOlxuJXMiICUgKHBrZ19pbmZvLCBlLnJldHVybmNvZGUsIGUub3V0cHV0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJldHVybmVkICVkOlxuJXMiICUgKHBrZ19pbmZvLCBlLnJldHVybmNvZGUsIGUub3V0cHV0LmRlY29kZSgidXRmLTgiKSkpCiAKICAgICAgICAgICAgICAgICBpZiBvdXRwdXQgPT0gIiI6CiAgICAgICAgICAgICAgICAgICAgIGJiLm5vdGUoIklnbm9yZWQgYmFkIHJlY29tbWVuZGF0aW9uOiAnJXMnIGlzICIKQEAgLTE2OTksNyArMTg3MSw3IEBACiAgICAgICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwgc2hlbGw9VHJ1ZSkKICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6CiAgICAgICAgICAgICBiYi5mYXRhbCgiVW5hYmxlIHRvIHVwZGF0ZS4gQ29tbWFuZCAnJXMnICIKLSAgICAgICAgICAgICAgICAgICAgICJyZXR1cm5lZCAlZDpcbiVzIiAlIChjbWQsIGUucmV0dXJuY29kZSwgZS5vdXRwdXQpKQorICAgICAgICAgICAgICAgICAgICAgInJldHVybmVkICVkOlxuJXMiICUgKGNtZCwgZS5yZXR1cm5jb2RlLCBlLm91dHB1dC5kZWNvZGUoInV0Zi04IikpKQogCiAgICAgICAgICMgRHVtbXkgaW5zdGFsbGF0aW9uCiAgICAgICAgIGNtZCA9ICIlcyAlcyAtLW5vYWN0aW9uIGluc3RhbGwgJXMgIiAlIChzZWxmLm9wa2dfY21kLApAQCAtMTcwOSw3ICsxODgxLDcgQEAKICAgICAgICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULCBzaGVsbD1UcnVlKQogICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKICAgICAgICAgICAgIGJiLmZhdGFsKCJVbmFibGUgdG8gZHVtbXkgaW5zdGFsbCBwYWNrYWdlcy4gQ29tbWFuZCAnJXMnICIKLSAgICAgICAgICAgICAgICAgICAgICJyZXR1cm5lZCAlZDpcbiVzIiAlIChjbWQsIGUucmV0dXJuY29kZSwgZS5vdXRwdXQpKQorICAgICAgICAgICAgICAgICAgICAgInJldHVybmVkICVkOlxuJXMiICUgKGNtZCwgZS5yZXR1cm5jb2RlLCBlLm91dHB1dC5kZWNvZGUoInV0Zi04IikpKQogCiAgICAgICAgIGJiLnV0aWxzLnJlbW92ZSh0ZW1wX3Jvb3RmcywgVHJ1ZSkKIApAQCAtMTczNCw4ICsxOTA2LDM3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5vcGtnX2RpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1saW5rcz1UcnVlKQogCisgICAgIiIiCisgICAgUmV0dXJucyBhIGRpY3Rpb25hcnkgd2l0aCB0aGUgcGFja2FnZSBpbmZvLgorICAgICIiIgorICAgIGRlZiBwYWNrYWdlX2luZm8oc2VsZiwgcGtnKToKKyAgICAgICAgY21kID0gIiVzICVzIGluZm8gJXMiICUgKHNlbGYub3BrZ19jbWQsIHNlbGYub3BrZ19hcmdzLCBwa2cpCisgICAgICAgIHBrZ19pbmZvID0gc3VwZXIoT3BrZ1BNLCBzZWxmKS5wYWNrYWdlX2luZm8ocGtnLCBjbWQpCiAKLWNsYXNzIERwa2dQTShQYWNrYWdlTWFuYWdlcik6CisgICAgICAgIHBrZ19hcmNoID0gcGtnX2luZm9bcGtnXVsiYXJjaCJdCisgICAgICAgIHBrZ19maWxlbmFtZSA9IHBrZ19pbmZvW3BrZ11bImZpbGVuYW1lIl0KKyAgICAgICAgcGtnX2luZm9bcGtnXVsiZmlsZXBhdGgiXSA9IFwKKyAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc2VsZi5kZXBsb3lfZGlyLCBwa2dfYXJjaCwgcGtnX2ZpbGVuYW1lKQorCisgICAgICAgIHJldHVybiBwa2dfaW5mbworCisgICAgIiIiCisgICAgUmV0dXJucyB0aGUgcGF0aCB0byBhIHRtcGRpciB3aGVyZSByZXNpZGVzIHRoZSBjb250ZW50cyBvZiBhIHBhY2thZ2UuCisKKyAgICBEZWxldGluZyB0aGUgdG1wZGlyIGlzIHJlc3BvbnNhYmlsaXR5IG9mIHRoZSBjYWxsZXIuCisgICAgIiIiCisgICAgZGVmIGV4dHJhY3Qoc2VsZiwgcGtnKToKKyAgICAgICAgcGtnX2luZm8gPSBzZWxmLnBhY2thZ2VfaW5mbyhwa2cpCisgICAgICAgIGlmIG5vdCBwa2dfaW5mbzoKKyAgICAgICAgICAgIGJiLmZhdGFsKCJVbmFibGUgdG8gZ2V0IGluZm9ybWF0aW9uIGZvciBwYWNrYWdlICclcycgd2hpbGUgIgorICAgICAgICAgICAgICAgICAgICAgInRyeWluZyB0byBleHRyYWN0IHRoZSBwYWNrYWdlLiIgICUgcGtnKQorCisgICAgICAgIHRtcF9kaXIgPSBzdXBlcihPcGtnUE0sIHNlbGYpLmV4dHJhY3QocGtnLCBwa2dfaW5mbykKKyAgICAgICAgYmIudXRpbHMucmVtb3ZlKG9zLnBhdGguam9pbih0bXBfZGlyLCAiZGF0YS50YXIuZ3oiKSkKKworICAgICAgICByZXR1cm4gdG1wX2RpcgorCitjbGFzcyBEcGtnUE0oT3BrZ0Rwa2dQTSk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGQsIHRhcmdldF9yb290ZnMsIGFyY2hzLCBiYXNlX2FyY2hzLCBhcHRfY29uZl9kaXI9Tm9uZSk6CiAgICAgICAgIHN1cGVyKERwa2dQTSwgc2VsZikuX19pbml0X18oZCkKICAgICAgICAgc2VsZi50YXJnZXRfcm9vdGZzID0gdGFyZ2V0X3Jvb3RmcwpAQCAtMTc0Niw2ICsxOTQ3LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXB0X2NvbmZfZGlyID0gYXB0X2NvbmZfZGlyCiAgICAgICAgIHNlbGYuYXB0X2NvbmZfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLmFwdF9jb25mX2RpciwgImFwdC5jb25mIikKICAgICAgICAgc2VsZi5hcHRfZ2V0X2NtZCA9IGJiLnV0aWxzLndoaWNoKG9zLmdldGVudignUEFUSCcpLCAiYXB0LWdldCIpCisgICAgICAgIHNlbGYuYXB0X2NhY2hlX2NtZCA9IGJiLnV0aWxzLndoaWNoKG9zLmdldGVudignUEFUSCcpLCAiYXB0LWNhY2hlIikKIAogICAgICAgICBzZWxmLmFwdF9hcmdzID0gZC5nZXRWYXIoIkFQVF9BUkdTIiwgVHJ1ZSkKIApAQCAtMTgyMyw3ICsyMDI1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KHBfZnVsbCwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQogICAgICAgICAgICAgICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICAgICAgICAgIGJiLm5vdGUoIiVzIGZvciBwYWNrYWdlICVzIGZhaWxlZCB3aXRoICVkOlxuJXMiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1ZmZpeFsxXSwgcGtnX25hbWUsIGUucmV0dXJuY29kZSwgZS5vdXRwdXQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3VmZml4WzFdLCBwa2dfbmFtZSwgZS5yZXR1cm5jb2RlLCBlLm91dHB1dC5kZWNvZGUoInV0Zi04IikpKQogICAgICAgICAgICAgICAgICAgICAgICAgZmFpbGVkX3BrZ3MuYXBwZW5kKHBrZ19uYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKIApAQCAtMTg0MSw3ICsyMDQzLDcgQEAKICAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZC5zcGxpdCgpLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCiAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlOgogICAgICAgICAgICAgYmIuZmF0YWwoIlVuYWJsZSB0byB1cGRhdGUgdGhlIHBhY2thZ2UgaW5kZXggZmlsZXMuIENvbW1hbmQgJyVzJyAiCi0gICAgICAgICAgICAgICAgICAgICAicmV0dXJuZWQgJWQ6XG4lcyIgJSAoZS5jbWQsIGUucmV0dXJuY29kZSwgZS5vdXRwdXQpKQorICAgICAgICAgICAgICAgICAgICAgInJldHVybmVkICVkOlxuJXMiICUgKGUuY21kLCBlLnJldHVybmNvZGUsIGUub3V0cHV0LmRlY29kZSgidXRmLTgiKSkpCiAKICAgICAgICAgc2VsZi5kZXBsb3lfZGlyX3VubG9jaygpCiAKQEAgLTE4NjAsNyArMjA2Miw3IEBACiAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlOgogICAgICAgICAgICAgKGJiLmZhdGFsLCBiYi5ub3RlKVthdHRlbXB0X29ubHldKCJVbmFibGUgdG8gaW5zdGFsbCBwYWNrYWdlcy4gIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb21tYW5kICclcycgcmV0dXJuZWQgJWQ6XG4lcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbWQsIGUucmV0dXJuY29kZSwgZS5vdXRwdXQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbWQsIGUucmV0dXJuY29kZSwgZS5vdXRwdXQuZGVjb2RlKCJ1dGYtOCIpKSkKIAogICAgICAgICAjIHJlbmFtZSAqLmRwa2ctbmV3IGZpbGVzL2RpcnMKICAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoc2VsZi50YXJnZXRfcm9vdGZzKToKQEAgLTE4OTEsNyArMjA5Myw3IEBACiAgICAgICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQuc3BsaXQoKSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQogICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKICAgICAgICAgICAgIGJiLmZhdGFsKCJVbmFibGUgdG8gcmVtb3ZlIHBhY2thZ2VzLiBDb21tYW5kICclcycgIgotICAgICAgICAgICAgICAgICAgICAgInJldHVybmVkICVkOlxuJXMiICUgKGUuY21kLCBlLnJldHVybmNvZGUsIGUub3V0cHV0KSkKKyAgICAgICAgICAgICAgICAgICAgICJyZXR1cm5lZCAlZDpcbiVzIiAlIChlLmNtZCwgZS5yZXR1cm5jb2RlLCBlLm91dHB1dC5kZWNvZGUoInV0Zi04IikpKQogCiAgICAgZGVmIHdyaXRlX2luZGV4KHNlbGYpOgogICAgICAgICBzZWxmLmRlcGxveV9kaXJfbG9jaygpCkBAIC0xOTI1LDExICsyMTI3LDExIEBACiAgICAgICAgICAgICBmb3IgdXJpIGluIGZlZWRfdXJpczoKICAgICAgICAgICAgICAgICBpZiBhcmNoX2xpc3Q6CiAgICAgICAgICAgICAgICAgICAgIGZvciBhcmNoIGluIGFyY2hfbGlzdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJiLm5vdGUoJ05vdGU6IGFkZGluZyBkcGtnIGNoYW5uZWwgYXQgKCVzKScgJSB1cmkpCisgICAgICAgICAgICAgICAgICAgICAgICBiYi5ub3RlKCdBZGRpbmcgZHBrZyBjaGFubmVsIGF0ICglcyknICUgdXJpKQogICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlc19maWxlLndyaXRlKCJkZWIgJXMvJXMgLi9cbiIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1cmksIGFyY2gpKQogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGJiLm5vdGUoJ05vdGU6IGFkZGluZyBkcGtnIGNoYW5uZWwgYXQgKCVzKScgJSB1cmkpCisgICAgICAgICAgICAgICAgICAgIGJiLm5vdGUoJ0FkZGluZyBkcGtnIGNoYW5uZWwgYXQgKCVzKScgJSB1cmkpCiAgICAgICAgICAgICAgICAgICAgIHNvdXJjZXNfZmlsZS53cml0ZSgiZGViICVzIC4vXG4iICUgdXJpKQogCiAgICAgZGVmIF9jcmVhdGVfY29uZmlncyhzZWxmLCBhcmNocywgYmFzZV9hcmNocyk6CkBAIC0yMDI0LDExICsyMjI2LDQwIEBACiAgICAgICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQuc3BsaXQoKSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQogICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKICAgICAgICAgICAgIGJiLmZhdGFsKCJDYW5ub3QgZml4IGJyb2tlbiBkZXBlbmRlbmNpZXMuIENvbW1hbmQgJyVzJyAiCi0gICAgICAgICAgICAgICAgICAgICAicmV0dXJuZWQgJWQ6XG4lcyIgJSAoY21kLCBlLnJldHVybmNvZGUsIGUub3V0cHV0KSkKKyAgICAgICAgICAgICAgICAgICAgICJyZXR1cm5lZCAlZDpcbiVzIiAlIChjbWQsIGUucmV0dXJuY29kZSwgZS5vdXRwdXQuZGVjb2RlKCJ1dGYtOCIpKSkKIAogICAgIGRlZiBsaXN0X2luc3RhbGxlZChzZWxmKToKICAgICAgICAgcmV0dXJuIERwa2dQa2dzTGlzdChzZWxmLmQsIHNlbGYudGFyZ2V0X3Jvb3RmcykubGlzdF9wa2dzKCkKIAorICAgICIiIgorICAgIFJldHVybnMgYSBkaWN0aW9uYXJ5IHdpdGggdGhlIHBhY2thZ2UgaW5mby4KKyAgICAiIiIKKyAgICBkZWYgcGFja2FnZV9pbmZvKHNlbGYsIHBrZyk6CisgICAgICAgIGNtZCA9ICIlcyBzaG93ICVzIiAlIChzZWxmLmFwdF9jYWNoZV9jbWQsIHBrZykKKyAgICAgICAgcGtnX2luZm8gPSBzdXBlcihEcGtnUE0sIHNlbGYpLnBhY2thZ2VfaW5mbyhwa2csIGNtZCkKKworICAgICAgICBwa2dfYXJjaCA9IHBrZ19pbmZvW3BrZ11bInBrZ2FyY2giXQorICAgICAgICBwa2dfZmlsZW5hbWUgPSBwa2dfaW5mb1twa2ddWyJmaWxlbmFtZSJdCisgICAgICAgIHBrZ19pbmZvW3BrZ11bImZpbGVwYXRoIl0gPSBcCisgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNlbGYuZGVwbG95X2RpciwgcGtnX2FyY2gsIHBrZ19maWxlbmFtZSkKKworICAgICAgICByZXR1cm4gcGtnX2luZm8KKworICAgICIiIgorICAgIFJldHVybnMgdGhlIHBhdGggdG8gYSB0bXBkaXIgd2hlcmUgcmVzaWRlcyB0aGUgY29udGVudHMgb2YgYSBwYWNrYWdlLgorCisgICAgRGVsZXRpbmcgdGhlIHRtcGRpciBpcyByZXNwb25zYWJpbGl0eSBvZiB0aGUgY2FsbGVyLgorICAgICIiIgorICAgIGRlZiBleHRyYWN0KHNlbGYsIHBrZyk6CisgICAgICAgIHBrZ19pbmZvID0gc2VsZi5wYWNrYWdlX2luZm8ocGtnKQorICAgICAgICBpZiBub3QgcGtnX2luZm86CisgICAgICAgICAgICBiYi5mYXRhbCgiVW5hYmxlIHRvIGdldCBpbmZvcm1hdGlvbiBmb3IgcGFja2FnZSAnJXMnIHdoaWxlICIKKyAgICAgICAgICAgICAgICAgICAgICJ0cnlpbmcgdG8gZXh0cmFjdCB0aGUgcGFja2FnZS4iICAlIHBrZykKKworICAgICAgICB0bXBfZGlyID0gc3VwZXIoRHBrZ1BNLCBzZWxmKS5leHRyYWN0KHBrZywgcGtnX2luZm8pCisgICAgICAgIGJiLnV0aWxzLnJlbW92ZShvcy5wYXRoLmpvaW4odG1wX2RpciwgImRhdGEudGFyLnh6IikpCisKKyAgICAgICAgcmV0dXJuIHRtcF9kaXIKIAogZGVmIGdlbmVyYXRlX2luZGV4X2ZpbGVzKGQpOgogICAgIGNsYXNzZXMgPSBkLmdldFZhcignUEFDS0FHRV9DTEFTU0VTJywgVHJ1ZSkucmVwbGFjZSgicGFja2FnZV8iLCAiIikuc3BsaXQoKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhY2thZ2VkYXRhLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhY2thZ2VkYXRhLnB5CmluZGV4IGJjMGZkMDYuLjIxZDRkZTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlZGF0YS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcGFja2FnZWRhdGEucHkKQEAgLTgsNyArOCw3IEBACiAgICAgcGtnZGF0YSA9IHt9CiAKICAgICBkZWYgZGVjb2RlKHN0cik6Ci0gICAgICAgIGMgPSBjb2RlY3MuZ2V0ZGVjb2Rlcigic3RyaW5nX2VzY2FwZSIpCisgICAgICAgIGMgPSBjb2RlY3MuZ2V0ZGVjb2RlcigidW5pY29kZV9lc2NhcGUiKQogICAgICAgICByZXR1cm4gYyhzdHIpWzBdCiAKICAgICBpZiBvcy5hY2Nlc3MoZm4sIG9zLlJfT0spOgpAQCAtNjYsNyArNjYsNyBAQAogICAgICAgICBiYi53YXJuKCJObyBmaWxlcyBpbiAlcz8iICUgcGtnZGF0YWRpcikKICAgICAgICAgZmlsZXMgPSBbXQogCi0gICAgZm9yIHBuIGluIGZpbHRlcihsYW1iZGEgZjogbm90IG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKHBrZ2RhdGFkaXIsIGYpKSwgZmlsZXMpOgorICAgIGZvciBwbiBpbiBbZiBmb3IgZiBpbiBmaWxlcyBpZiBub3Qgb3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4ocGtnZGF0YWRpciwgZikpXToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcGtnZGF0YSA9IHJlYWRfcGtnZGF0YWZpbGUob3MucGF0aC5qb2luKHBrZ2RhdGFkaXIsIHBuKSkKICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcGFja2FnZWdyb3VwLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhY2thZ2Vncm91cC5weQppbmRleCBhNmZlZTVmLi45NzgxOTI3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcGFja2FnZWdyb3VwLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlZ3JvdXAucHkKQEAgLTE2LDExICsxNiwxMSBAQAogICAgICAgICAgICAgeWllbGQgcGtnCiAKIGRlZiByZXF1aXJlZF9wYWNrYWdlcyhmZWF0dXJlcywgZCk6Ci0gICAgcmVxID0gZmlsdGVyKGxhbWJkYSBmZWF0dXJlOiBub3QgaXNfb3B0aW9uYWwoZmVhdHVyZSwgZCksIGZlYXR1cmVzKQorICAgIHJlcSA9IFtmZWF0dXJlIGZvciBmZWF0dXJlIGluIGZlYXR1cmVzIGlmIG5vdCBpc19vcHRpb25hbChmZWF0dXJlLCBkKV0KICAgICByZXR1cm4gcGFja2FnZXMocmVxLCBkKQogCiBkZWYgb3B0aW9uYWxfcGFja2FnZXMoZmVhdHVyZXMsIGQpOgotICAgIG9wdCA9IGZpbHRlcihsYW1iZGEgZmVhdHVyZTogaXNfb3B0aW9uYWwoZmVhdHVyZSwgZCksIGZlYXR1cmVzKQorICAgIG9wdCA9IFtmZWF0dXJlIGZvciBmZWF0dXJlIGluIGZlYXR1cmVzIGlmIGlzX29wdGlvbmFsKGZlYXR1cmUsIGQpXQogICAgIHJldHVybiBwYWNrYWdlcyhvcHQsIGQpCiAKIGRlZiBhY3RpdmVfcGFja2FnZXMoZmVhdHVyZXMsIGQpOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhdGNoLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhdGNoLnB5CmluZGV4IDlkMzYxNzIuLjAzMzJmMTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYXRjaC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcGF0Y2gucHkKQEAgLTExNyw0MyArMTE3LDUwIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgIHJldHVybiBvcy5zZXAuam9pbihmaWxlc3BsaXRbc3RyaXBsZXZlbDpdKQogCi0gICAgICAgIGNvcGllZG1vZGUgPSBGYWxzZQotICAgICAgICBmaWxlbGlzdCA9IFtdCi0gICAgICAgIHdpdGggb3BlbihwYXRjaGZpbGUpIGFzIGY6Ci0gICAgICAgICAgICBmb3IgbGluZSBpbiBmOgotICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnLS0tICcpOgotICAgICAgICAgICAgICAgICAgICBwYXRjaHB0aCA9IHBhdGNoZWRwYXRoKGxpbmUpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBwYXRjaHB0aDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIGlmIGNvcGllZG1vZGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBhZGRlZGZpbGUgPSBwYXRjaHB0aAotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZGZpbGUgPSBwYXRjaHB0aAotICAgICAgICAgICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKCcrKysgJyk6Ci0gICAgICAgICAgICAgICAgICAgIGFkZGVkZmlsZSA9IHBhdGNoZWRwYXRoKGxpbmUpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBhZGRlZGZpbGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKCcqKiogJyk6Ci0gICAgICAgICAgICAgICAgICAgIGNvcGllZG1vZGUgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIHJlbW92ZWRmaWxlID0gcGF0Y2hlZHBhdGgobGluZSkKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IHJlbW92ZWRmaWxlOgotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByZW1vdmVkZmlsZSA9IE5vbmUKLSAgICAgICAgICAgICAgICAgICAgYWRkZWRmaWxlID0gTm9uZQorICAgICAgICBmb3IgZW5jb2RpbmcgaW4gWyd1dGYtOCcsICdsYXRpbi0xJ106CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgY29waWVkbW9kZSA9IEZhbHNlCisgICAgICAgICAgICAgICAgZmlsZWxpc3QgPSBbXQorICAgICAgICAgICAgICAgIHdpdGggb3BlbihwYXRjaGZpbGUpIGFzIGY6CisgICAgICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGY6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJy0tLSAnKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRjaHB0aCA9IHBhdGNoZWRwYXRoKGxpbmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHBhdGNocHRoOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvcGllZG1vZGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGVkZmlsZSA9IHBhdGNocHRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZGZpbGUgPSBwYXRjaHB0aAorICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoJysrKyAnKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRlZGZpbGUgPSBwYXRjaGVkcGF0aChsaW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBhZGRlZGZpbGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aCgnKioqICcpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcGllZG1vZGUgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZGZpbGUgPSBwYXRjaGVkcGF0aChsaW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCByZW1vdmVkZmlsZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZGZpbGUgPSBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkZWRmaWxlID0gTm9uZQogCi0gICAgICAgICAgICAgICAgaWYgYWRkZWRmaWxlIGFuZCByZW1vdmVkZmlsZToKLSAgICAgICAgICAgICAgICAgICAgaWYgcmVtb3ZlZGZpbGUgPT0gJy9kZXYvbnVsbCc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtb2RlID0gJ0EnCi0gICAgICAgICAgICAgICAgICAgIGVsaWYgYWRkZWRmaWxlID09ICcvZGV2L251bGwnOgotICAgICAgICAgICAgICAgICAgICAgICAgbW9kZSA9ICdEJwotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgbW9kZSA9ICdNJwotICAgICAgICAgICAgICAgICAgICBpZiBzcmNkaXI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmdWxscGF0aCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oc3JjZGlyLCBhZGRlZGZpbGUpKQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgZnVsbHBhdGggPSBhZGRlZGZpbGUKLSAgICAgICAgICAgICAgICAgICAgZmlsZWxpc3QuYXBwZW5kKChmdWxscGF0aCwgbW9kZSkpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBhZGRlZGZpbGUgYW5kIHJlbW92ZWRmaWxlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJlbW92ZWRmaWxlID09ICcvZGV2L251bGwnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlID0gJ0EnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBhZGRlZGZpbGUgPT0gJy9kZXYvbnVsbCc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGUgPSAnRCcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlID0gJ00nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3JjZGlyOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxscGF0aCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oc3JjZGlyLCBhZGRlZGZpbGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxwYXRoID0gYWRkZWRmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZWxpc3QuYXBwZW5kKChmdWxscGF0aCwgbW9kZSkpCisgICAgICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgUGF0Y2hFcnJvcignVW5hYmxlIHRvIGRlY29kZSAlcycgJSBwYXRjaGZpbGUpCiAKICAgICAgICAgcmV0dXJuIGZpbGVsaXN0CiAKQEAgLTI3NCwzMCArMjgxLDQzIEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZGlyLCBkKToKICAgICAgICAgUGF0Y2hUcmVlLl9faW5pdF9fKHNlbGYsIGRpciwgZCkKKyAgICAgICAgc2VsZi5jb21taXR1c2VyID0gZC5nZXRWYXIoJ1BBVENIX0dJVF9VU0VSX05BTUUnLCBUcnVlKQorICAgICAgICBzZWxmLmNvbW1pdGVtYWlsID0gZC5nZXRWYXIoJ1BBVENIX0dJVF9VU0VSX0VNQUlMJywgVHJ1ZSkKIAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgZXh0cmFjdFBhdGNoSGVhZGVyKHBhdGNoZmlsZSk6CiAgICAgICAgICIiIgogICAgICAgICBFeHRyYWN0IGp1c3QgdGhlIGhlYWRlciBsaW5lcyBmcm9tIHRoZSB0b3Agb2YgYSBwYXRjaCBmaWxlCiAgICAgICAgICIiIgotICAgICAgICBsaW5lcyA9IFtdCi0gICAgICAgIHdpdGggb3BlbihwYXRjaGZpbGUsICdyJykgYXMgZjoKLSAgICAgICAgICAgIGZvciBsaW5lIGluIGYucmVhZGxpbmVzKCk6Ci0gICAgICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCdJbmRleDogJykgb3IgbGluZS5zdGFydHN3aXRoKCdkaWZmIC0nKSBvciBsaW5lLnN0YXJ0c3dpdGgoJy0tLScpOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZChsaW5lKQorICAgICAgICBmb3IgZW5jb2RpbmcgaW4gWyd1dGYtOCcsICdsYXRpbi0xJ106CisgICAgICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGNoZmlsZSwgJ3InLCBlbmNvZGluZz1lbmNvZGluZykgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnSW5kZXg6ICcpIG9yIGxpbmUuc3RhcnRzd2l0aCgnZGlmZiAtJykgb3IgbGluZS5zdGFydHN3aXRoKCctLS0nKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKGxpbmUpCisgICAgICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgUGF0Y2hFcnJvcignVW5hYmxlIHRvIGZpbmQgYSBjaGFyYWN0ZXIgZW5jb2RpbmcgdG8gZGVjb2RlICVzJyAlIHBhdGNoZmlsZSkKICAgICAgICAgcmV0dXJuIGxpbmVzCiAKICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIGRlY29kZUF1dGhvcihsaW5lKToKICAgICAgICAgZnJvbSBlbWFpbC5oZWFkZXIgaW1wb3J0IGRlY29kZV9oZWFkZXIKICAgICAgICAgYXV0aG9ydmFsID0gbGluZS5zcGxpdCgnOicsIDEpWzFdLnN0cmlwKCkucmVwbGFjZSgnIicsICcnKQotICAgICAgICByZXR1cm4gZGVjb2RlX2hlYWRlcihhdXRob3J2YWwpWzBdWzBdCisgICAgICAgIHJlc3VsdCA9ICBkZWNvZGVfaGVhZGVyKGF1dGhvcnZhbClbMF1bMF0KKyAgICAgICAgaWYgaGFzYXR0cihyZXN1bHQsICdkZWNvZGUnKToKKyAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5kZWNvZGUoJ3V0Zi04JykKKyAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBpbnRlcnByZXRQYXRjaEhlYWRlcihoZWFkZXJsaW5lcyk6CiAgICAgICAgIGltcG9ydCByZQogICAgICAgICBhdXRob3JfcmUgPSByZS5jb21waWxlKCdbXFMgXSsgPFxTK0BcUytcLlxTKz4nKQorICAgICAgICBmcm9tX2NvbW1pdF9yZSA9IHJlLmNvbXBpbGUoJ15Gcm9tIFthLXowLTldezQwfSAuKicpCiAgICAgICAgIG91dGxpbmVzID0gW10KICAgICAgICAgYXV0aG9yID0gTm9uZQogICAgICAgICBkYXRlID0gTm9uZQpAQCAtMzI3LDExICszNDcsMzkgQEAKICAgICAgICAgICAgICAgICAjIGdpdCBpcyBmdXNzeSBhYm91dCBhdXRob3IgZm9ybWF0dGluZyBpLmUuIGl0IG11c3QgYmUgTmFtZSA8ZW1haWxAZG9tYWluPgogICAgICAgICAgICAgICAgIGlmIGF1dGhvcl9yZS5tYXRjaChhdXRob3J2YWwpOgogICAgICAgICAgICAgICAgICAgICBhdXRob3IgPSBhdXRob3J2YWwKKyAgICAgICAgICAgIGVsaWYgZnJvbV9jb21taXRfcmUubWF0Y2gobGluZSk6CisgICAgICAgICAgICAgICAgIyBXZSBkb24ndCB3YW50IHRoZSBGcm9tIDxjb21taXQ+IGxpbmUgLSBpZiBpdCdzIHByZXNlbnQgaXQgd2lsbCBicmVhayByZWJhc2luZworICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBvdXRsaW5lcy5hcHBlbmQobGluZSkKKworICAgICAgICBpZiBub3Qgc3ViamVjdDoKKyAgICAgICAgICAgIGZpcnN0bGluZSA9IE5vbmUKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGhlYWRlcmxpbmVzOgorICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBpZiBmaXJzdGxpbmU6CisgICAgICAgICAgICAgICAgICAgIGlmIGxpbmU6CisgICAgICAgICAgICAgICAgICAgICAgICAjIFNlY29uZCBsaW5lIGlzIG5vdCBibGFuaywgdGhlIGZpcnN0IGxpbmUgcHJvYmFibHkgaXNuJ3QgdXNhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdGxpbmUgPSBOb25lCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZWxpZiBsaW5lOgorICAgICAgICAgICAgICAgICAgICBmaXJzdGxpbmUgPSBsaW5lCisgICAgICAgICAgICBpZiBmaXJzdGxpbmUgYW5kIG5vdCBmaXJzdGxpbmUuc3RhcnRzd2l0aCgoJyMnLCAnSW5kZXg6JywgJ1Vwc3RyZWFtLVN0YXR1czonKSkgYW5kIGxlbihmaXJzdGxpbmUpIDwgMTAwOgorICAgICAgICAgICAgICAgIHN1YmplY3QgPSBmaXJzdGxpbmUKKwogICAgICAgICByZXR1cm4gb3V0bGluZXMsIGF1dGhvciwgZGF0ZSwgc3ViamVjdAogCiAgICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBwcmVwYXJlQ29tbWl0KHBhdGNoZmlsZSk6CisgICAgZGVmIGdpdENvbW1hbmRVc2VyT3B0aW9ucyhjbWQsIGNvbW1pdHVzZXI9Tm9uZSwgY29tbWl0ZW1haWw9Tm9uZSwgZD1Ob25lKToKKyAgICAgICAgaWYgZDoKKyAgICAgICAgICAgIGNvbW1pdHVzZXIgPSBkLmdldFZhcignUEFUQ0hfR0lUX1VTRVJfTkFNRScsIFRydWUpCisgICAgICAgICAgICBjb21taXRlbWFpbCA9IGQuZ2V0VmFyKCdQQVRDSF9HSVRfVVNFUl9FTUFJTCcsIFRydWUpCisgICAgICAgIGlmIGNvbW1pdHVzZXI6CisgICAgICAgICAgICBjbWQgKz0gWyctYycsICd1c2VyLm5hbWU9IiVzIicgJSBjb21taXR1c2VyXQorICAgICAgICBpZiBjb21taXRlbWFpbDoKKyAgICAgICAgICAgIGNtZCArPSBbJy1jJywgJ3VzZXIuZW1haWw9IiVzIicgJSBjb21taXRlbWFpbF0KKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgcHJlcGFyZUNvbW1pdChwYXRjaGZpbGUsIGNvbW1pdHVzZXI9Tm9uZSwgY29tbWl0ZW1haWw9Tm9uZSk6CiAgICAgICAgICIiIgogICAgICAgICBQcmVwYXJlIGEgZ2l0IGNvbW1pdCBjb21tYW5kIGxpbmUgYmFzZWQgb24gdGhlIGhlYWRlciBmcm9tIGEgcGF0Y2ggZmlsZQogICAgICAgICAodHlwaWNhbGx5IHRoaXMgaXMgdXNlZnVsIGZvciBwYXRjaGVzIHRoYXQgY2Fubm90IGJlIGFwcGxpZWQgd2l0aCAiZ2l0IGFtIiBkdWUgdG8gZm9ybWF0dGluZykKQEAgLTM0MCwyMSArMzg4LDI0IEBACiAgICAgICAgICMgUHJvY2VzcyBwYXRjaCBoZWFkZXIgYW5kIGV4dHJhY3QgdXNlZnVsIGluZm9ybWF0aW9uCiAgICAgICAgIGxpbmVzID0gR2l0QXBwbHlUcmVlLmV4dHJhY3RQYXRjaEhlYWRlcihwYXRjaGZpbGUpCiAgICAgICAgIG91dGxpbmVzLCBhdXRob3IsIGRhdGUsIHN1YmplY3QgPSBHaXRBcHBseVRyZWUuaW50ZXJwcmV0UGF0Y2hIZWFkZXIobGluZXMpCi0gICAgICAgIGlmIG5vdCBhdXRob3Igb3Igbm90IHN1YmplY3Q6CisgICAgICAgIGlmIG5vdCBhdXRob3Igb3Igbm90IHN1YmplY3Qgb3Igbm90IGRhdGU6CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2hlbGxjbWQgPSBbImdpdCIsICJsb2ciLCAiLS1mb3JtYXQ9ZW1haWwiLCAiLS1kaWZmLWZpbHRlcj1BIiwgIi0tIiwgcGF0Y2hmaWxlXQorICAgICAgICAgICAgICAgIHNoZWxsY21kID0gWyJnaXQiLCAibG9nIiwgIi0tZm9ybWF0PWVtYWlsIiwgIi0tZm9sbG93IiwgIi0tZGlmZi1maWx0ZXI9QSIsICItLSIsIHBhdGNoZmlsZV0KICAgICAgICAgICAgICAgICBvdXQgPSBydW5jbWQoWyJzaCIsICItYyIsICIgIi5qb2luKHNoZWxsY21kKV0sIG9zLnBhdGguZGlybmFtZShwYXRjaGZpbGUpKQogICAgICAgICAgICAgZXhjZXB0IENtZEVycm9yOgogICAgICAgICAgICAgICAgIG91dCA9IE5vbmUKICAgICAgICAgICAgIGlmIG91dDoKICAgICAgICAgICAgICAgICBfLCBuZXdhdXRob3IsIG5ld2RhdGUsIG5ld3N1YmplY3QgPSBHaXRBcHBseVRyZWUuaW50ZXJwcmV0UGF0Y2hIZWFkZXIob3V0LnNwbGl0bGluZXMoKSkKLSAgICAgICAgICAgICAgICBpZiBub3QgYXV0aG9yIG9yIG5vdCBkYXRlOgotICAgICAgICAgICAgICAgICAgICAjIFRoZXNlIHJlYWxseSBuZWVkIHRvIGdvIHRvZ2V0aGVyCisgICAgICAgICAgICAgICAgaWYgbm90IGF1dGhvcjoKKyAgICAgICAgICAgICAgICAgICAgIyBJZiB3ZSdyZSBzZXR0aW5nIHRoZSBhdXRob3IgdGhlbiB0aGUgZGF0ZSBzaG91bGQgYmUgc2V0IGFzIHdlbGwKICAgICAgICAgICAgICAgICAgICAgYXV0aG9yID0gbmV3YXV0aG9yCiAgICAgICAgICAgICAgICAgICAgIGRhdGUgPSBuZXdkYXRlCisgICAgICAgICAgICAgICAgZWxpZiBub3QgZGF0ZToKKyAgICAgICAgICAgICAgICAgICAgIyBJZiB3ZSBkb24ndCBkbyB0aGlzIHdlJ2xsIGdldCB0aGUgY3VycmVudCBkYXRlLCBhdCBsZWFzdCB0aGlzIHdpbGwgYmUgY2xvc2VyCisgICAgICAgICAgICAgICAgICAgIGRhdGUgPSBuZXdkYXRlCiAgICAgICAgICAgICAgICAgaWYgbm90IHN1YmplY3Q6CiAgICAgICAgICAgICAgICAgICAgIHN1YmplY3QgPSBuZXdzdWJqZWN0Ci0gICAgICAgIGlmIHN1YmplY3Q6CisgICAgICAgIGlmIHN1YmplY3QgYW5kIG91dGxpbmVzIGFuZCBub3Qgb3V0bGluZXNbMF0uc3RyaXAoKSA9PSBzdWJqZWN0OgogICAgICAgICAgICAgb3V0bGluZXMuaW5zZXJ0KDAsICclc1xuXG4nICUgc3ViamVjdC5zdHJpcCgpKQogCiAgICAgICAgICMgV3JpdGUgb3V0IGNvbW1pdCBtZXNzYWdlIHRvIGEgZmlsZQpAQCAtMzYzLDcgKzQxNCw5IEBACiAgICAgICAgICAgICBmb3IgbGluZSBpbiBvdXRsaW5lczoKICAgICAgICAgICAgICAgICB0Zi53cml0ZShsaW5lKQogICAgICAgICAjIFByZXBhcmUgZ2l0IGNvbW1hbmQKLSAgICAgICAgY21kID0gWyJnaXQiLCAiY29tbWl0IiwgIi1GIiwgdG1wZmlsZV0KKyAgICAgICAgY21kID0gWyJnaXQiXQorICAgICAgICBHaXRBcHBseVRyZWUuZ2l0Q29tbWFuZFVzZXJPcHRpb25zKGNtZCwgY29tbWl0dXNlciwgY29tbWl0ZW1haWwpCisgICAgICAgIGNtZCArPSBbImNvbW1pdCIsICItRiIsIHRtcGZpbGVdCiAgICAgICAgICMgZ2l0IGRvZXNuJ3QgbGlrZSBwbGFpbiBlbWFpbCBhZGRyZXNzZXMgYXMgYXV0aG9ycwogICAgICAgICBpZiBhdXRob3IgYW5kICc8JyBpbiBhdXRob3I6CiAgICAgICAgICAgICBjbWQuYXBwZW5kKCctLWF1dGhvcj0iJXMiJyAlIGF1dGhvcikKQEAgLTM4NCwxNiArNDM3LDI0IEBACiAgICAgICAgICAgICBvdXQgPSBydW5jbWQoWyJzaCIsICItYyIsICIgIi5qb2luKHNoZWxsY21kKV0sIHRyZWUpCiAgICAgICAgICAgICBpZiBvdXQ6CiAgICAgICAgICAgICAgICAgZm9yIHNyY2ZpbGUgaW4gb3V0LnNwbGl0KCk6Ci0gICAgICAgICAgICAgICAgICAgIHBhdGNobGluZXMgPSBbXQotICAgICAgICAgICAgICAgICAgICBvdXRmaWxlID0gTm9uZQotICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4oc3JjZmlsZSwgJ3InKSBhcyBmOgotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoR2l0QXBwbHlUcmVlLnBhdGNoX2xpbmVfcHJlZml4KToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ZmlsZSA9IGxpbmUuc3BsaXQoKVstMV0uc3RyaXAoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aChHaXRBcHBseVRyZWUuaWdub3JlX2NvbW1pdF9wcmVmaXgpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGNobGluZXMuYXBwZW5kKGxpbmUpCisgICAgICAgICAgICAgICAgICAgIGZvciBlbmNvZGluZyBpbiBbJ3V0Zi04JywgJ2xhdGluLTEnXToKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhdGNobGluZXMgPSBbXQorICAgICAgICAgICAgICAgICAgICAgICAgb3V0ZmlsZSA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4oc3JjZmlsZSwgJ3InLCBlbmNvZGluZz1lbmNvZGluZykgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aChHaXRBcHBseVRyZWUucGF0Y2hfbGluZV9wcmVmaXgpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGZpbGUgPSBsaW5lLnNwbGl0KClbLTFdLnN0cmlwKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKEdpdEFwcGx5VHJlZS5pZ25vcmVfY29tbWl0X3ByZWZpeCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGNobGluZXMuYXBwZW5kKGxpbmUpCisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgUGF0Y2hFcnJvcignVW5hYmxlIHRvIGZpbmQgYSBjaGFyYWN0ZXIgZW5jb2RpbmcgdG8gZGVjb2RlICVzJyAlIHNyY2ZpbGUpCisKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IG91dGZpbGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBvdXRmaWxlID0gb3MucGF0aC5iYXNlbmFtZShzcmNmaWxlKQogICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKG91dGRpciwgb3V0ZmlsZSksICd3JykgYXMgb2Y6CkBAIC00MzQsMTIgKzQ5NSwxNCBAQAogICAgICAgICAgICAgIyBjaGFuZ2Ugb3RoZXIgcGxhY2VzIHdoaWNoIHJlYWQgaXQgYmFjawogICAgICAgICAgICAgZi53cml0ZSgnZWNobyA+PiAkMVxuJykKICAgICAgICAgICAgIGYud3JpdGUoJ2VjaG8gIiVzOiAkUEFUQ0hGSUxFIiA+PiAkMVxuJyAlIEdpdEFwcGx5VHJlZS5wYXRjaF9saW5lX3ByZWZpeCkKLSAgICAgICAgb3MuY2htb2QoY29tbWl0aG9vaywgMDc1NSkKKyAgICAgICAgb3MuY2htb2QoY29tbWl0aG9vaywgMG83NTUpCiAgICAgICAgIHNodXRpbC5jb3B5Mihjb21taXRob29rLCBhcHBseWhvb2spCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHBhdGNoZmlsZXZhciA9ICdQQVRDSEZJTEU9IiVzIicgJSBvcy5wYXRoLmJhc2VuYW1lKHBhdGNoWydmaWxlJ10pCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2hlbGxjbWQgPSBbcGF0Y2hmaWxldmFyLCAiZ2l0IiwgIi0td29yay10cmVlPSVzIiAlIHJlcG9yb290LCAiYW0iLCAiLTMiLCAiLS1rZWVwLWNyIiwgIi1wJXMiICUgcGF0Y2hbJ3N0cmlwcGF0aCddXQorICAgICAgICAgICAgICAgIHNoZWxsY21kID0gW3BhdGNoZmlsZXZhciwgImdpdCIsICItLXdvcmstdHJlZT0lcyIgJSByZXBvcm9vdF0KKyAgICAgICAgICAgICAgICBzZWxmLmdpdENvbW1hbmRVc2VyT3B0aW9ucyhzaGVsbGNtZCwgc2VsZi5jb21taXR1c2VyLCBzZWxmLmNvbW1pdGVtYWlsKQorICAgICAgICAgICAgICAgIHNoZWxsY21kICs9IFsiYW0iLCAiLTMiLCAiLS1rZWVwLWNyIiwgIi1wJXMiICUgcGF0Y2hbJ3N0cmlwcGF0aCddXQogICAgICAgICAgICAgICAgIHJldHVybiBfYXBwbHlwYXRjaGhlbHBlcihzaGVsbGNtZCwgcGF0Y2gsIGZvcmNlLCByZXZlcnNlLCBydW4pCiAgICAgICAgICAgICBleGNlcHQgQ21kRXJyb3I6CiAgICAgICAgICAgICAgICAgIyBOZWVkIHRvIGFib3J0IHRoZSBnaXQgYW0sIG9yIHdlJ2xsIHN0aWxsIGJlIHdpdGhpbiBpdCBhdCB0aGUgZW5kCkBAIC00NjksNyArNTMyLDcgQEAKICAgICAgICAgICAgICAgICBzaGVsbGNtZCA9IFsiZ2l0IiwgInJlc2V0IiwgIkhFQUQiLCBzZWxmLnBhdGNoZGlyXQogICAgICAgICAgICAgICAgIG91dHB1dCArPSBydW5jbWQoWyJzaCIsICItYyIsICIgIi5qb2luKHNoZWxsY21kKV0sIHNlbGYuZGlyKQogICAgICAgICAgICAgICAgICMgQ29tbWl0IHRoZSByZXN1bHQKLSAgICAgICAgICAgICAgICAodG1wZmlsZSwgc2hlbGxjbWQpID0gc2VsZi5wcmVwYXJlQ29tbWl0KHBhdGNoWydmaWxlJ10pCisgICAgICAgICAgICAgICAgKHRtcGZpbGUsIHNoZWxsY21kKSA9IHNlbGYucHJlcGFyZUNvbW1pdChwYXRjaFsnZmlsZSddLCBzZWxmLmNvbW1pdHVzZXIsIHNlbGYuY29tbWl0ZW1haWwpCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBzaGVsbGNtZC5pbnNlcnQoMCwgcGF0Y2hmaWxldmFyKQogICAgICAgICAgICAgICAgICAgICBvdXRwdXQgKz0gcnVuY21kKFsic2giLCAiLWMiLCAiICIuam9pbihzaGVsbGNtZCldLCBzZWxmLmRpcikKQEAgLTY3Miw3ICs3MzUsNyBAQAogICAgICAgICAgICAgICAgIGYud3JpdGUoImVjaG8gJ1J1biBcInF1aWx0IHJlZnJlc2hcIiB3aGVuIHBhdGNoIGlzIGNvcnJlY3RlZCwgcHJlc3MgQ1RSTCtEIHRvIGV4aXQuJ1xuIikKICAgICAgICAgICAgICAgICBmLndyaXRlKCJlY2hvICcnXG4iKQogICAgICAgICAgICAgICAgIGYud3JpdGUoIiAiLmpvaW4ocGF0Y2hjbWQpICsgIlxuIikKLSAgICAgICAgICAgIG9zLmNobW9kKHJjZmlsZSwgMDc3NSkKKyAgICAgICAgICAgIG9zLmNobW9kKHJjZmlsZSwgMG83NzUpCiAKICAgICAgICAgICAgIHNlbGYudGVybWluYWwoImJhc2ggLS1yY2ZpbGUgIiArIHJjZmlsZSwgJ1BhdGNoIFJlamVjdHM6IFBsZWFzZSBmaXggcGF0Y2ggcmVqZWN0cyBtYW51YWxseScsIHNlbGYucGF0Y2hzZXQuZCkKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhdGgucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcGF0aC5weQppbmRleCA0MTNlYmZiLi4wNmE1YWYyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcGF0aC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcGF0aC5weQpAQCAtNjUsMjIgKzY1LDMwIEBACiAgICAgIyBUaGlzIHdheSB3ZSBhbHNvIHByZXNlcnZlIGhhcmRsaW5rcyBiZXR3ZWVuIGZpbGVzIGluIHRoZSB0cmVlLgogCiAgICAgYmIudXRpbHMubWtkaXJoaWVyKGRzdCkKLSAgICBjbWQgPSAndGFyIC1jZiAtIC1DICVzIC1wIC4gfCB0YXIgLXhmIC0gLUMgJXMnICUgKHNyYywgZHN0KQotICAgIGNoZWNrX291dHB1dChjbWQsIHNoZWxsPVRydWUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKKyAgICBjbWQgPSAidGFyIC0teGF0dHJzIC0teGF0dHJzLWluY2x1ZGU9JyonIC1jZiAtIC1DICVzIC1wIC4gfCB0YXIgLS14YXR0cnMgLS14YXR0cnMtaW5jbHVkZT0nKicgLXhmIC0gLUMgJXMiICUgKHNyYywgZHN0KQorICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgc2hlbGw9VHJ1ZSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQogCiBkZWYgY29weWhhcmRsaW5rdHJlZShzcmMsIGRzdCk6CiAgICAgIiIiIE1ha2UgdGhlIGhhcmQgbGluayB3aGVuIHBvc3NpYmxlLCBvdGhlcndpc2UgY29weS4gIiIiCiAgICAgYmIudXRpbHMubWtkaXJoaWVyKGRzdCkKICAgICBpZiBvcy5wYXRoLmlzZGlyKHNyYykgYW5kIG5vdCBsZW4ob3MubGlzdGRpcihzcmMpKToKLSAgICAgICAgcmV0dXJuCQorICAgICAgICByZXR1cm4KIAogICAgIGlmIChvcy5zdGF0KHNyYykuc3RfZGV2ID09ICBvcy5zdGF0KGRzdCkuc3RfZGV2KToKICAgICAgICAgIyBOZWVkIHRvIGNvcHkgZGlyZWN0b3JpZXMgb25seSB3aXRoIHRhciBmaXJzdCBzaW5jZSBjcCB3aWxsIGVycm9yIGlmIHR3byAKICAgICAgICAgIyB3cml0ZXJzIHRyeSBhbmQgY3JlYXRlIGEgZGlyZWN0b3J5IGF0IHRoZSBzYW1lIHRpbWUKLSAgICAgICAgY21kID0gJ2NkICVzOyBmaW5kIC4gLXR5cGUgZCAtcHJpbnQgfCB0YXIgLWNmIC0gLUMgJXMgLXAgLS1maWxlcy1mcm9tIC0gLS1uby1yZWN1cnNpb24gfCB0YXIgLXhmIC0gLUMgJXMnICUgKHNyYywgc3JjLCBkc3QpCi0gICAgICAgIGNoZWNrX291dHB1dChjbWQsIHNoZWxsPVRydWUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKLSAgICAgICAgY21kID0gJ2NkICVzOyBmaW5kIC4gLXByaW50MCB8IGNwaW8gLS1udWxsIC1wZGx1ICVzJyAlIChzcmMsIGRzdCkKLSAgICAgICAgY2hlY2tfb3V0cHV0KGNtZCwgc2hlbGw9VHJ1ZSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQorICAgICAgICBjbWQgPSAiY2QgJXM7IGZpbmQgLiAtdHlwZSBkIC1wcmludCB8IHRhciAtLXhhdHRycyAtLXhhdHRycy1pbmNsdWRlPScqJyAtY2YgLSAtQyAlcyAtcCAtLW5vLXJlY3Vyc2lvbiAtLWZpbGVzLWZyb20gLSB8IHRhciAtLXhhdHRycyAtLXhhdHRycy1pbmNsdWRlPScqJyAteGYgLSAtQyAlcyIgJSAoc3JjLCBzcmMsIGRzdCkKKyAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBzaGVsbD1UcnVlLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCisgICAgICAgIHNvdXJjZSA9ICcnCisgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoc3JjKToKKyAgICAgICAgICAgIGltcG9ydCBnbG9iCisgICAgICAgICAgICBpZiBsZW4oZ2xvYi5nbG9iKCclcy8uPz8qJyAlIHNyYykpID4gMDoKKyAgICAgICAgICAgICAgICBzb3VyY2UgPSAnJXMvLj8/KiAnICUgc3JjCisgICAgICAgICAgICBzb3VyY2UgPSBzb3VyY2UgKyAnJXMvKicgJSBzcmMKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNvdXJjZSA9IHNyYworICAgICAgICBjbWQgPSAnY3AgLWFmbCAtLXByZXNlcnZlPXhhdHRyICVzICVzJyAlIChzb3VyY2UsIGRzdCkKKyAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBzaGVsbD1UcnVlLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCiAgICAgZWxzZToKICAgICAgICAgY29weXRyZWUoc3JjLCBkc3QpCiAKQEAgLTEwNSw0NyArMTEzLDYgQEAKICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FRVhJU1Qgb3Igb3MucmVhZGxpbmsoZGVzdGluYXRpb24pICE9IHNvdXJjZToKICAgICAgICAgICAgIHJhaXNlCiAKLWNsYXNzIENhbGxlZFByb2Nlc3NFcnJvcihFeGNlcHRpb24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXRjb2RlLCBjbWQsIG91dHB1dCA9IE5vbmUpOgotICAgICAgICBzZWxmLnJldGNvZGUgPSByZXRjb2RlCi0gICAgICAgIHNlbGYuY21kID0gY21kCi0gICAgICAgIHNlbGYub3V0cHV0ID0gb3V0cHV0Ci0gICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiQ29tbWFuZCAnJXMnIHJldHVybmVkIG5vbi16ZXJvIGV4aXQgc3RhdHVzICVkIHdpdGggb3V0cHV0ICVzIiAlIChzZWxmLmNtZCwgc2VsZi5yZXRjb2RlLCBzZWxmLm91dHB1dCkKLQotIyBOb3QgbmVlZGVkIHdoZW4gd2UgbW92ZSB0byBweXRob24gMi43Ci1kZWYgY2hlY2tfb3V0cHV0KCpwb3BlbmFyZ3MsICoqa3dhcmdzKToKLSAgICByIiIiUnVuIGNvbW1hbmQgd2l0aCBhcmd1bWVudHMgYW5kIHJldHVybiBpdHMgb3V0cHV0IGFzIGEgYnl0ZSBzdHJpbmcuCi0KLSAgICBJZiB0aGUgZXhpdCBjb2RlIHdhcyBub24temVybyBpdCByYWlzZXMgYSBDYWxsZWRQcm9jZXNzRXJyb3IuICBUaGUKLSAgICBDYWxsZWRQcm9jZXNzRXJyb3Igb2JqZWN0IHdpbGwgaGF2ZSB0aGUgcmV0dXJuIGNvZGUgaW4gdGhlIHJldHVybmNvZGUKLSAgICBhdHRyaWJ1dGUgYW5kIG91dHB1dCBpbiB0aGUgb3V0cHV0IGF0dHJpYnV0ZS4KLQotICAgIFRoZSBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIGZvciB0aGUgUG9wZW4gY29uc3RydWN0b3IuICBFeGFtcGxlOgotCi0gICAgPj4+IGNoZWNrX291dHB1dChbImxzIiwgIi1sIiwgIi9kZXYvbnVsbCJdKQotICAgICdjcnctcnctcnctIDEgcm9vdCByb290IDEsIDMgT2N0IDE4ICAyMDA3IC9kZXYvbnVsbFxuJwotCi0gICAgVGhlIHN0ZG91dCBhcmd1bWVudCBpcyBub3QgYWxsb3dlZCBhcyBpdCBpcyB1c2VkIGludGVybmFsbHkuCi0gICAgVG8gY2FwdHVyZSBzdGFuZGFyZCBlcnJvciBpbiB0aGUgcmVzdWx0LCB1c2Ugc3RkZXJyPVNURE9VVC4KLQotICAgID4+PiBjaGVja19vdXRwdXQoWyIvYmluL3NoIiwgIi1jIiwKLSAgICAuLi4gICAgICAgICAgICAgICAibHMgLWwgbm9uX2V4aXN0ZW50X2ZpbGUgOyBleGl0IDAiXSwKLSAgICAuLi4gICAgICAgICAgICAgIHN0ZGVycj1TVERPVVQpCi0gICAgJ2xzOiBub25fZXhpc3RlbnRfZmlsZTogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVxuJwotICAgICIiIgotICAgIGlmICdzdGRvdXQnIGluIGt3YXJnczoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignc3Rkb3V0IGFyZ3VtZW50IG5vdCBhbGxvd2VkLCBpdCB3aWxsIGJlIG92ZXJyaWRkZW4uJykKLSAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCAqcG9wZW5hcmdzLCAqKmt3YXJncykKLSAgICBvdXRwdXQsIHVudXNlZF9lcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKCkKLSAgICByZXRjb2RlID0gcHJvY2Vzcy5wb2xsKCkKLSAgICBpZiByZXRjb2RlOgotICAgICAgICBjbWQgPSBrd2FyZ3MuZ2V0KCJhcmdzIikKLSAgICAgICAgaWYgY21kIGlzIE5vbmU6Ci0gICAgICAgICAgICBjbWQgPSBwb3BlbmFyZ3NbMF0KLSAgICAgICAgcmFpc2UgQ2FsbGVkUHJvY2Vzc0Vycm9yKHJldGNvZGUsIGNtZCwgb3V0cHV0PW91dHB1dCkKLSAgICByZXR1cm4gb3V0cHV0Ci0KIGRlZiBmaW5kKGRpciwgKip3YWxrb3B0aW9ucyk6CiAgICAgIiIiIEdpdmVuIGEgZGlyZWN0b3J5LCByZWN1cnNlcyBpbnRvIHRoYXQgZGlyZWN0b3J5LAogICAgIHJldHVybmluZyBhbGwgZmlsZXMgYXMgYWJzb2x1dGUgcGF0aHMuICIiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3Byc2VydmljZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wcnNlcnZpY2UucHkKaW5kZXggYjBjYmNiMS4uMDA1NGY5NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3Byc2VydmljZS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcHJzZXJ2aWNlLnB5CkBAIC0xLDcgKzEsNyBAQAogCiBkZWYgcHJzZXJ2X21ha2VfY29ubihkLCBjaGVjayA9IEZhbHNlKToKICAgICBpbXBvcnQgcHJzZXJ2LnNlcnYKLSAgICBob3N0X3BhcmFtcyA9IGZpbHRlcihOb25lLCAoZC5nZXRWYXIoIlBSU0VSVl9IT1NUIiwgVHJ1ZSkgb3IgJycpLnNwbGl0KCc6JykpCisgICAgaG9zdF9wYXJhbXMgPSBsaXN0KFtfZiBmb3IgX2YgaW4gKGQuZ2V0VmFyKCJQUlNFUlZfSE9TVCIsIFRydWUpIG9yICcnKS5zcGxpdCgnOicpIGlmIF9mXSkKICAgICB0cnk6CiAgICAgICAgIGNvbm4gPSBOb25lCiAgICAgICAgIGNvbm4gPSBwcnNlcnYuc2Vydi5QUlNlcnZlckNvbm5lY3Rpb24oaG9zdF9wYXJhbXNbMF0sIGludChob3N0X3BhcmFtc1sxXSkpCkBAIC05LDcgKzksNyBAQAogICAgICAgICAgICAgaWYgbm90IGNvbm4ucGluZygpOgogICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignc2VydmljZSBub3QgYXZhaWxhYmxlJykKICAgICAgICAgZC5zZXRWYXIoIl9fUFJTRVJWX0NPTk4iLGNvbm4pCi0gICAgZXhjZXB0IEV4Y2VwdGlvbiwgZXhjOgorICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXhjOgogICAgICAgICBiYi5mYXRhbCgiQ29ubmVjdGluZyB0byBQUiBzZXJ2aWNlICVzOiVzIGZhaWxlZDogJXMiICUgKGhvc3RfcGFyYW1zWzBdLCBob3N0X3BhcmFtc1sxXSwgc3RyKGV4YykpKQogCiAgICAgcmV0dXJuIGNvbm4KQEAgLTExNCw3ICsxMTQsNyBAQAogICAgIGJiLnV0aWxzLnVubG9ja2ZpbGUobGYpCiAKIGRlZiBwcnNlcnZfY2hlY2tfYXZhaWwoZCk6Ci0gICAgaG9zdF9wYXJhbXMgPSBmaWx0ZXIoTm9uZSwgKGQuZ2V0VmFyKCJQUlNFUlZfSE9TVCIsIFRydWUpIG9yICcnKS5zcGxpdCgnOicpKQorICAgIGhvc3RfcGFyYW1zID0gbGlzdChbX2YgZm9yIF9mIGluIChkLmdldFZhcigiUFJTRVJWX0hPU1QiLCBUcnVlKSBvciAnJykuc3BsaXQoJzonKSBpZiBfZl0pCiAgICAgdHJ5OgogICAgICAgICBpZiBsZW4oaG9zdF9wYXJhbXMpICE9IDI6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9xYS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9xYS5weQppbmRleCAzY2ZlZWU3Li5mYmU3MTlkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcWEucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3FhLnB5CkBAIC00Myw0OCArNDMsNDggQEAKICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKHNlbGYubmFtZSk6CiAgICAgICAgICAgICByYWlzZSBOb3RFTEZGaWxlRXJyb3IoIiVzIGlzIG5vdCBhIG5vcm1hbCBmaWxlIiAlIHNlbGYubmFtZSkKIAotICAgICAgICBzZWxmLmZpbGUgPSBmaWxlKHNlbGYubmFtZSwgInIiKQotICAgICAgICAjIFJlYWQgNGsgd2hpY2ggc2hvdWxkIGNvdmVyIG1vc3Qgb2YgdGhlIGhlYWRlcnMgd2UncmUgYWZ0ZXIKLSAgICAgICAgc2VsZi5kYXRhID0gc2VsZi5maWxlLnJlYWQoNDA5NikKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYubmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgICMgUmVhZCA0ayB3aGljaCBzaG91bGQgY292ZXIgbW9zdCBvZiB0aGUgaGVhZGVycyB3ZSdyZSBhZnRlcgorICAgICAgICAgICAgc2VsZi5kYXRhID0gZi5yZWFkKDQwOTYpCiAKICAgICAgICAgaWYgbGVuKHNlbGYuZGF0YSkgPCBFTEZGaWxlLkVJX05JREVOVCArIDQ6CiAgICAgICAgICAgICByYWlzZSBOb3RFTEZGaWxlRXJyb3IoIiVzIGlzIG5vdCBhbiBFTEYiICUgc2VsZi5uYW1lKQogCi0gICAgICAgIHNlbGYubXlfYXNzZXJ0KHNlbGYuZGF0YVswXSwgY2hyKDB4N2YpICkKLSAgICAgICAgc2VsZi5teV9hc3NlcnQoc2VsZi5kYXRhWzFdLCAnRScpCi0gICAgICAgIHNlbGYubXlfYXNzZXJ0KHNlbGYuZGF0YVsyXSwgJ0wnKQotICAgICAgICBzZWxmLm15X2Fzc2VydChzZWxmLmRhdGFbM10sICdGJykKKyAgICAgICAgc2VsZi5teV9hc3NlcnQoc2VsZi5kYXRhWzBdLCAweDdmKQorICAgICAgICBzZWxmLm15X2Fzc2VydChzZWxmLmRhdGFbMV0sIG9yZCgnRScpKQorICAgICAgICBzZWxmLm15X2Fzc2VydChzZWxmLmRhdGFbMl0sIG9yZCgnTCcpKQorICAgICAgICBzZWxmLm15X2Fzc2VydChzZWxmLmRhdGFbM10sIG9yZCgnRicpKQogICAgICAgICBpZiBzZWxmLmJpdHMgPT0gMDoKLSAgICAgICAgICAgIGlmIHNlbGYuZGF0YVtFTEZGaWxlLkVJX0NMQVNTXSA9PSBjaHIoRUxGRmlsZS5FTEZDTEFTUzMyKToKKyAgICAgICAgICAgIGlmIHNlbGYuZGF0YVtFTEZGaWxlLkVJX0NMQVNTXSA9PSBFTEZGaWxlLkVMRkNMQVNTMzI6CiAgICAgICAgICAgICAgICAgc2VsZi5iaXRzID0gMzIKLSAgICAgICAgICAgIGVsaWYgc2VsZi5kYXRhW0VMRkZpbGUuRUlfQ0xBU1NdID09IGNocihFTEZGaWxlLkVMRkNMQVNTNjQpOgorICAgICAgICAgICAgZWxpZiBzZWxmLmRhdGFbRUxGRmlsZS5FSV9DTEFTU10gPT0gRUxGRmlsZS5FTEZDTEFTUzY0OgogICAgICAgICAgICAgICAgIHNlbGYuYml0cyA9IDY0CiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICMgTm90IDMyLWJpdCBvciA2NC4uIGxldHMgYXNzZXJ0CiAgICAgICAgICAgICAgICAgcmFpc2UgTm90RUxGRmlsZUVycm9yKCJFTEYgYnV0IG5vdCAzMiBvciA2NCBiaXQuIikKICAgICAgICAgZWxpZiBzZWxmLmJpdHMgPT0gMzI6Ci0gICAgICAgICAgICBzZWxmLm15X2Fzc2VydChzZWxmLmRhdGFbRUxGRmlsZS5FSV9DTEFTU10sIGNocihFTEZGaWxlLkVMRkNMQVNTMzIpKQorICAgICAgICAgICAgc2VsZi5teV9hc3NlcnQoc2VsZi5kYXRhW0VMRkZpbGUuRUlfQ0xBU1NdLCBFTEZGaWxlLkVMRkNMQVNTMzIpCiAgICAgICAgIGVsaWYgc2VsZi5iaXRzID09IDY0OgotICAgICAgICAgICAgc2VsZi5teV9hc3NlcnQoc2VsZi5kYXRhW0VMRkZpbGUuRUlfQ0xBU1NdLCBjaHIoRUxGRmlsZS5FTEZDTEFTUzY0KSkKKyAgICAgICAgICAgIHNlbGYubXlfYXNzZXJ0KHNlbGYuZGF0YVtFTEZGaWxlLkVJX0NMQVNTXSwgRUxGRmlsZS5FTEZDTEFTUzY0KQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgTm90RUxGRmlsZUVycm9yKCJNdXN0IHNwZWNpZnkgdW5rbm93biwgMzIgb3IgNjQgYml0IHNpemUuIikKLSAgICAgICAgc2VsZi5teV9hc3NlcnQoc2VsZi5kYXRhW0VMRkZpbGUuRUlfVkVSU0lPTl0sIGNocihFTEZGaWxlLkVWX0NVUlJFTlQpICkKKyAgICAgICAgc2VsZi5teV9hc3NlcnQoc2VsZi5kYXRhW0VMRkZpbGUuRUlfVkVSU0lPTl0sIEVMRkZpbGUuRVZfQ1VSUkVOVCkKIAogICAgICAgICBzZWxmLnNleCA9IHNlbGYuZGF0YVtFTEZGaWxlLkVJX0RBVEFdCi0gICAgICAgIGlmIHNlbGYuc2V4ID09IGNocihFTEZGaWxlLkVMRkRBVEFOT05FKToKKyAgICAgICAgaWYgc2VsZi5zZXggPT0gRUxGRmlsZS5FTEZEQVRBTk9ORToKICAgICAgICAgICAgIHJhaXNlIE5vdEVMRkZpbGVFcnJvcigic2VsZi5zZXggPT0gRUxGREFUQU5PTkUiKQotICAgICAgICBlbGlmIHNlbGYuc2V4ID09IGNocihFTEZGaWxlLkVMRkRBVEEyTFNCKToKKyAgICAgICAgZWxpZiBzZWxmLnNleCA9PSBFTEZGaWxlLkVMRkRBVEEyTFNCOgogICAgICAgICAgICAgc2VsZi5zZXggPSAiPCIKLSAgICAgICAgZWxpZiBzZWxmLnNleCA9PSBjaHIoRUxGRmlsZS5FTEZEQVRBMk1TQik6CisgICAgICAgIGVsaWYgc2VsZi5zZXggPT0gRUxGRmlsZS5FTEZEQVRBMk1TQjoKICAgICAgICAgICAgIHNlbGYuc2V4ID0gIj4iCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBOb3RFTEZGaWxlRXJyb3IoIlVua25vd24gc2VsZi5zZXgiKQogCiAgICAgZGVmIG9zQWJpKHNlbGYpOgotICAgICAgICByZXR1cm4gb3JkKHNlbGYuZGF0YVtFTEZGaWxlLkVJX09TQUJJXSkKKyAgICAgICAgcmV0dXJuIHNlbGYuZGF0YVtFTEZGaWxlLkVJX09TQUJJXQogCiAgICAgZGVmIGFiaVZlcnNpb24oc2VsZik6Ci0gICAgICAgIHJldHVybiBvcmQoc2VsZi5kYXRhW0VMRkZpbGUuRUlfQUJJVkVSU0lPTl0pCisgICAgICAgIHJldHVybiBzZWxmLmRhdGFbRUxGRmlsZS5FSV9BQklWRVJTSU9OXQogCiAgICAgZGVmIGFiaVNpemUoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLmJpdHMKQEAgLTE0NCw4ICsxNDQsMjggQEAKICAgICAgICAgICAgIGJiLm5vdGUoIiVzICVzICVzIGZhaWxlZDogJXMiICUgKG9iamR1bXAsIGNtZCwgc2VsZi5uYW1lLCBlKSkKICAgICAgICAgICAgIHJldHVybiAiIgogCitkZWYgZWxmX21hY2hpbmVfdG9fc3RyaW5nKG1hY2hpbmUpOgorICAgICIiIgorICAgIFJldHVybiB0aGUgbmFtZSBvZiBhIGdpdmVuIEVMRiBlX21hY2hpbmUgZmllbGQgb3IgdGhlIGhleCB2YWx1ZSBhcyBhIHN0cmluZworICAgIGlmIGl0IGlzbid0IHJlY29nbmlzZWQuCisgICAgIiIiCisgICAgdHJ5OgorICAgICAgICByZXR1cm4geworICAgICAgICAgICAgMHgwMjogIlNQQVJDIiwKKyAgICAgICAgICAgIDB4MDM6ICJ4ODYiLAorICAgICAgICAgICAgMHgwODogIk1JUFMiLAorICAgICAgICAgICAgMHgxNDogIlBvd2VyUEMiLAorICAgICAgICAgICAgMHgyODogIkFSTSIsCisgICAgICAgICAgICAweDJBOiAiU3VwZXJIIiwKKyAgICAgICAgICAgIDB4MzI6ICJJQS02NCIsCisgICAgICAgICAgICAweDNFOiAieDg2LTY0IiwKKyAgICAgICAgICAgIDB4Qjc6ICJBQXJjaDY0IgorICAgICAgICB9W21hY2hpbmVdCisgICAgZXhjZXB0OgorICAgICAgICByZXR1cm4gIlVua25vd24gKCVzKSIgJSByZXByKG1hY2hpbmUpCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgaW1wb3J0IHN5cwogICAgIGVsZiA9IEVMRkZpbGUoc3lzLmFyZ3ZbMV0pCiAgICAgZWxmLm9wZW4oKQotICAgIHByaW50IGVsZi5pc0R5bmFtaWMoKQorICAgIHByaW50KGVsZi5pc0R5bmFtaWMoKSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9yZWNpcGV1dGlscy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9yZWNpcGV1dGlscy5weQppbmRleCA2YzdhZGI1Li41OGU0MDI4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcmVjaXBldXRpbHMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3JlY2lwZXV0aWxzLnB5CkBAIC0yLDcgKzIsNyBAQAogIwogIyBTb21lIGNvZGUgYm9ycm93ZWQgZnJvbSB0aGUgT0UgbGF5ZXIgaW5kZXgKICMKLSMgQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUgSW50ZWwgQ29ycG9yYXRpb24KKyMgQ29weXJpZ2h0IChDKSAyMDEzLTIwMTYgSW50ZWwgQ29ycG9yYXRpb24KICMKIAogaW1wb3J0IHN5cwpAQCAtMTEsMzEgKzExLDMyIEBACiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IGRpZmZsaWIKLWltcG9ydCB1dGlscworZnJvbSAuIGltcG9ydCB1dGlscwogaW1wb3J0IHNodXRpbAogaW1wb3J0IHJlCiBpbXBvcnQgZm5tYXRjaAoraW1wb3J0IGdsb2IKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0LCBkZWZhdWx0ZGljdAogCiAKICMgSGVscCB1cyB0byBmaW5kIHBsYWNlcyB0byBpbnNlcnQgdmFsdWVzCi1yZWNpcGVfcHJvZ3Jlc3Npb24gPSBbJ1NVTU1BUlknLCAnREVTQ1JJUFRJT04nLCAnSE9NRVBBR0UnLCAnQlVHVFJBQ0tFUicsICdTRUNUSU9OJywgJ0xJQ0VOU0UnLCAnTElDX0ZJTEVTX0NIS1NVTScsICdQUk9WSURFUycsICdERVBFTkRTJywgJ1BSJywgJ1BWJywgJ1NSQ1JFVicsICdTUkNfVVJJJywgJ1MnLCAnZG9fZmV0Y2goKScsICdkb191bnBhY2soKScsICdkb19wYXRjaCgpJywgJ0VYVFJBX09FQ09ORicsICdkb19jb25maWd1cmUoKScsICdFWFRSQV9PRU1BS0UnLCAnZG9fY29tcGlsZSgpJywgJ2RvX2luc3RhbGwoKScsICdkb19wb3B1bGF0ZV9zeXNyb290KCknLCAnSU5JVFNDUklQVCcsICdVU0VSQUREJywgJ0dST1VQQUREJywgJ1BBQ0tBR0VTJywgJ0ZJTEVTJywgJ1JERVBFTkRTJywgJ1JSRUNPTU1FTkRTJywgJ1JTVUdHRVNUUycsICdSUFJPVklERVMnLCAnUlJFUExBQ0VTJywgJ1JDT05GTElDVFMnLCAnQUxMT1dfRU1QVFknLCAnZG9fcGFja2FnZSgpJywgJ2RvX2RlcGxveSgpJ10KK3JlY2lwZV9wcm9ncmVzc2lvbiA9IFsnU1VNTUFSWScsICdERVNDUklQVElPTicsICdIT01FUEFHRScsICdCVUdUUkFDS0VSJywgJ1NFQ1RJT04nLCAnTElDRU5TRScsICdMSUNFTlNFX0ZMQUdTJywgJ0xJQ19GSUxFU19DSEtTVU0nLCAnUFJPVklERVMnLCAnREVQRU5EUycsICdQUicsICdQVicsICdTUkNSRVYnLCAnU1JDUFYnLCAnU1JDX1VSSScsICdTJywgJ2RvX2ZldGNoKCknLCAnZG9fdW5wYWNrKCknLCAnZG9fcGF0Y2goKScsICdFWFRSQV9PRUNPTkYnLCAnRVhUUkFfT0VDTUFLRScsICdFWFRSQV9PRVNDT05TJywgJ2RvX2NvbmZpZ3VyZSgpJywgJ0VYVFJBX09FTUFLRScsICdkb19jb21waWxlKCknLCAnZG9faW5zdGFsbCgpJywgJ2RvX3BvcHVsYXRlX3N5c3Jvb3QoKScsICdJTklUU0NSSVBUJywgJ1VTRVJBREQnLCAnR1JPVVBBREQnLCAnUEFDS0FHRVMnLCAnRklMRVMnLCAnUkRFUEVORFMnLCAnUlJFQ09NTUVORFMnLCAnUlNVR0dFU1RTJywgJ1JQUk9WSURFUycsICdSUkVQTEFDRVMnLCAnUkNPTkZMSUNUUycsICdBTExPV19FTVBUWScsICdwb3B1bGF0ZV9wYWNrYWdlcygpJywgJ2RvX3BhY2thZ2UoKScsICdkb19kZXBsb3koKSddCiAjIFZhcmlhYmxlcyB0aGF0IHNvbWV0aW1lcyBhcmUgYSBiaXQgbG9uZyBidXQgc2hvdWxkbid0IGJlIHdyYXBwZWQKIG5vd3JhcF92YXJzID0gWydTVU1NQVJZJywgJ0hPTUVQQUdFJywgJ0JVR1RSQUNLRVInLCAnU1JDX1VSSVttZDVzdW1dJywgJ1NSQ19VUklbc2hhMjU2c3VtXSddCiBsaXN0X3ZhcnMgPSBbJ1NSQ19VUkknLCAnTElDX0ZJTEVTX0NIS1NVTSddCiBtZXRhX3ZhcnMgPSBbJ1NVTU1BUlknLCAnREVTQ1JJUFRJT04nLCAnSE9NRVBBR0UnLCAnQlVHVFJBQ0tFUicsICdTRUNUSU9OJ10KIAogCi1kZWYgcG5fdG9fcmVjaXBlKGNvb2tlciwgcG4pOgorZGVmIHBuX3RvX3JlY2lwZShjb29rZXIsIHBuLCBtYz0nJyk6CiAgICAgIiIiQ29udmVydCBhIHJlY2lwZSBuYW1lIChQTikgdG8gdGhlIHBhdGggdG8gdGhlIHJlY2lwZSBmaWxlIiIiCiAgICAgaW1wb3J0IGJiLnByb3ZpZGVycwogCi0gICAgaWYgcG4gaW4gY29va2VyLnJlY2lwZWNhY2hlLnBrZ19wbjoKLSAgICAgICAgYmVzdCA9IGJiLnByb3ZpZGVycy5maW5kQmVzdFByb3ZpZGVyKHBuLCBjb29rZXIuZGF0YSwgY29va2VyLnJlY2lwZWNhY2hlLCBjb29rZXIucmVjaXBlY2FjaGUucGtnX3BuKQorICAgIGlmIHBuIGluIGNvb2tlci5yZWNpcGVjYWNoZXNbbWNdLnBrZ19wbjoKKyAgICAgICAgYmVzdCA9IGJiLnByb3ZpZGVycy5maW5kQmVzdFByb3ZpZGVyKHBuLCBjb29rZXIuZGF0YSwgY29va2VyLnJlY2lwZWNhY2hlc1ttY10sIGNvb2tlci5yZWNpcGVjYWNoZXNbbWNdLnBrZ19wbikKICAgICAgICAgcmV0dXJuIGJlc3RbM10KLSAgICBlbGlmIHBuIGluIGNvb2tlci5yZWNpcGVjYWNoZS5wcm92aWRlcnM6Ci0gICAgICAgIGZpbGVuYW1lcyA9IGNvb2tlci5yZWNpcGVjYWNoZS5wcm92aWRlcnNbcG5dCi0gICAgICAgIGVsaWdpYmxlLCBmb3VuZFVuaXF1ZSA9IGJiLnByb3ZpZGVycy5maWx0ZXJQcm92aWRlcnMoZmlsZW5hbWVzLCBwbiwgY29va2VyLmV4cGFuZGVkX2RhdGEsIGNvb2tlci5yZWNpcGVjYWNoZSkKKyAgICBlbGlmIHBuIGluIGNvb2tlci5yZWNpcGVjYWNoZXNbbWNdLnByb3ZpZGVyczoKKyAgICAgICAgZmlsZW5hbWVzID0gY29va2VyLnJlY2lwZWNhY2hlc1ttY10ucHJvdmlkZXJzW3BuXQorICAgICAgICBlbGlnaWJsZSwgZm91bmRVbmlxdWUgPSBiYi5wcm92aWRlcnMuZmlsdGVyUHJvdmlkZXJzKGZpbGVuYW1lcywgcG4sIGNvb2tlci5leHBhbmRlZF9kYXRhLCBjb29rZXIucmVjaXBlY2FjaGVzW21jXSkKICAgICAgICAgZmlsZW5hbWUgPSBlbGlnaWJsZVswXQogICAgICAgICByZXR1cm4gZmlsZW5hbWUKICAgICBlbHNlOgpAQCAtNDksMTMgKzUwLDE0IEBACiAgICAgcmV0dXJuIHRhc2tkYXRhLmdldF9yZWFzb25zKHBuKQogCiAKLWRlZiBwYXJzZV9yZWNpcGUoZm4sIGFwcGVuZGZpbGVzLCBkKToKK2RlZiBwYXJzZV9yZWNpcGUoY29va2VyLCBmbiwgYXBwZW5kZmlsZXMpOgogICAgICIiIgogICAgIFBhcnNlIGFuIGluZGl2aWR1YWwgcmVjaXBlIGZpbGUsIG9wdGlvbmFsbHkgd2l0aCBhIGxpc3Qgb2YKICAgICBiYmFwcGVuZCBmaWxlcy4KICAgICAiIiIKICAgICBpbXBvcnQgYmIuY2FjaGUKLSAgICBlbnZkYXRhID0gYmIuY2FjaGUuQ2FjaGUubG9hZERhdGFGdWxsKGZuLCBhcHBlbmRmaWxlcywgZCkKKyAgICBwYXJzZXIgPSBiYi5jYWNoZS5Ob0NhY2hlKGNvb2tlci5kYXRhYnVpbGRlcikKKyAgICBlbnZkYXRhID0gcGFyc2VyLmxvYWREYXRhRnVsbChmbiwgYXBwZW5kZmlsZXMpCiAgICAgcmV0dXJuIGVudmRhdGEKIAogCkBAIC03OCw3ICs4MCw3IEBACiAgICAgICAgIGFwcGVuZGZpbGVzID0gY29va2VyLmNvbGxlY3Rpb24uZ2V0X2ZpbGVfYXBwZW5kcyhyZWNpcGVmaWxlKQogICAgIGVsc2U6CiAgICAgICAgIGFwcGVuZGZpbGVzID0gTm9uZQotICAgIHJldHVybiBwYXJzZV9yZWNpcGUocmVjaXBlZmlsZSwgYXBwZW5kZmlsZXMsIGQpCisgICAgcmV0dXJuIHBhcnNlX3JlY2lwZShjb29rZXIsIHJlY2lwZWZpbGUsIGFwcGVuZGZpbGVzKQogCiAKIGRlZiBnZXRfdmFyX2ZpbGVzKGZuLCB2YXJsaXN0LCBkKToKQEAgLTE1OCwxNSArMTYwLDE5IEBACiAgICAgcmV0dXJuIG91dGxpc3QKIAogCi1kZWYgcGF0Y2hfcmVjaXBlX2ZpbGUoZm4sIHZhbHVlcywgcGF0Y2g9RmFsc2UsIHJlbHBhdGg9JycpOgotICAgICIiIlVwZGF0ZSBvciBpbnNlcnQgdmFyaWFibGUgdmFsdWVzIGludG8gYSByZWNpcGUgZmlsZSAoYXNzdW1pbmcgeW91Ci0gICAgICAgaGF2ZSBhbHJlYWR5IGlkZW50aWZpZWQgdGhlIGV4YWN0IGZpbGUgeW91IHdhbnQgdG8gdXBkYXRlLikKK2RlZiBwYXRjaF9yZWNpcGVfbGluZXMoZnJvbWxpbmVzLCB2YWx1ZXMsIHRyYWlsaW5nX25ld2xpbmU9VHJ1ZSk6CisgICAgIiIiVXBkYXRlIG9yIGluc2VydCB2YXJpYWJsZSB2YWx1ZXMgaW50byBsaW5lcyBmcm9tIGEgcmVjaXBlLgogICAgICAgIE5vdGUgdGhhdCBzb21lIG1hbnVhbCBpbnNwZWN0aW9uL2ludGVydmVudGlvbiBtYXkgYmUgcmVxdWlyZWQKICAgICAgICBzaW5jZSB0aGlzIGNhbm5vdCBoYW5kbGUgYWxsIHNpdHVhdGlvbnMuCiAgICAgIiIiCiAKICAgICBpbXBvcnQgYmIudXRpbHMKIAorICAgIGlmIHRyYWlsaW5nX25ld2xpbmU6CisgICAgICAgIG5ld2xpbmUgPSAnXG4nCisgICAgZWxzZToKKyAgICAgICAgbmV3bGluZSA9ICcnCisKICAgICByZWNpcGVfcHJvZ3Jlc3Npb25fcmVzID0gW10KICAgICByZWNpcGVfcHJvZ3Jlc3Npb25fcmVzdHJzID0gW10KICAgICBmb3IgaXRlbSBpbiByZWNpcGVfcHJvZ3Jlc3Npb246CkBAIC0xOTAsMTQgKzE5NiwxNCBAQAogICAgIHJlbWFpbmluZ25hbWVzID0ge30KICAgICBmb3IgayBpbiB2YWx1ZXMua2V5cygpOgogICAgICAgICByZW1haW5pbmduYW1lc1trXSA9IGdldF9yZWNpcGVfcG9zKGspCi0gICAgcmVtYWluaW5nbmFtZXMgPSBPcmRlcmVkRGljdChzb3J0ZWQocmVtYWluaW5nbmFtZXMuaXRlcml0ZW1zKCksIGtleT1sYW1iZGEgeDogeFsxXSkpCisgICAgcmVtYWluaW5nbmFtZXMgPSBPcmRlcmVkRGljdChzb3J0ZWQocmVtYWluaW5nbmFtZXMuaXRlbXMoKSwga2V5PWxhbWJkYSB4OiB4WzFdKSkKIAogICAgIG1vZGlmeWluZyA9IEZhbHNlCiAKICAgICBkZWYgb3V0cHV0dmFsdWUobmFtZSwgbGluZXMsIHJld2luZGNvbW1lbnRzPUZhbHNlKToKICAgICAgICAgaWYgdmFsdWVzW25hbWVdIGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgcmF3dGV4dCA9ICclcyA9ICIlcyJcbicgJSAobmFtZSwgdmFsdWVzW25hbWVdKQorICAgICAgICByYXd0ZXh0ID0gJyVzID0gIiVzIiVzJyAlIChuYW1lLCB2YWx1ZXNbbmFtZV0sIG5ld2xpbmUpCiAgICAgICAgIGFkZGxpbmVzID0gW10KICAgICAgICAgaWYgbmFtZSBpbiBub3dyYXBfdmFyczoKICAgICAgICAgICAgIGFkZGxpbmVzLmFwcGVuZChyYXd0ZXh0KQpAQCAtMjA1LDE5ICsyMTEsMTkgQEAKICAgICAgICAgICAgIHNwbGl0dmFsdWUgPSBzcGxpdF92YXJfdmFsdWUodmFsdWVzW25hbWVdLCBhc3NpZ25tZW50PUZhbHNlKQogICAgICAgICAgICAgaWYgbGVuKHNwbGl0dmFsdWUpID4gMToKICAgICAgICAgICAgICAgICBsaW5lc3BsaXQgPSAnIFxcXG4nICsgKCcgJyAqIChsZW4obmFtZSkgKyA0KSkKLSAgICAgICAgICAgICAgICBhZGRsaW5lcy5hcHBlbmQoJyVzID0gIiVzJXMiXG4nICUgKG5hbWUsIGxpbmVzcGxpdC5qb2luKHNwbGl0dmFsdWUpLCBsaW5lc3BsaXQpKQorICAgICAgICAgICAgICAgIGFkZGxpbmVzLmFwcGVuZCgnJXMgPSAiJXMlcyIlcycgJSAobmFtZSwgbGluZXNwbGl0LmpvaW4oc3BsaXR2YWx1ZSksIGxpbmVzcGxpdCwgbmV3bGluZSkpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGFkZGxpbmVzLmFwcGVuZChyYXd0ZXh0KQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgd3JhcHBlZCA9IHRleHR3cmFwLndyYXAocmF3dGV4dCkKICAgICAgICAgICAgIGZvciB3cmFwbGluZSBpbiB3cmFwcGVkWzotMV06Ci0gICAgICAgICAgICAgICAgYWRkbGluZXMuYXBwZW5kKCclcyBcXFxuJyAlIHdyYXBsaW5lKQotICAgICAgICAgICAgYWRkbGluZXMuYXBwZW5kKCclc1xuJyAlIHdyYXBwZWRbLTFdKQorICAgICAgICAgICAgICAgIGFkZGxpbmVzLmFwcGVuZCgnJXMgXFwlcycgJSAod3JhcGxpbmUsIG5ld2xpbmUpKQorICAgICAgICAgICAgYWRkbGluZXMuYXBwZW5kKCclcyVzJyAlICh3cmFwcGVkWy0xXSwgbmV3bGluZSkpCiAgICAgICAgIGlmIHJld2luZGNvbW1lbnRzOgogICAgICAgICAgICAgIyBFbnN1cmUgd2UgaW5zZXJ0IHRoZSBsaW5lcyBiZWZvcmUgYW55IGxlYWRpbmcgY29tbWVudHMKICAgICAgICAgICAgICMgKHRoYXQgd2UnZCB3YW50IHRvIGVuc3VyZSByZW1haW4gbGVhZGluZyB0aGUgbmV4dCB2YWx1ZSkKICAgICAgICAgICAgIGZvciBpLCBsbiBpbiByZXZlcnNlZChsaXN0KGVudW1lcmF0ZShsaW5lcykpKToKLSAgICAgICAgICAgICAgICBpZiBsblswXSAhPSAnIyc6CisgICAgICAgICAgICAgICAgaWYgbm90IGxuLnN0YXJ0c3dpdGgoJyMnKToKICAgICAgICAgICAgICAgICAgICAgbGluZXNbaSsxOmkrMV0gPSBhZGRsaW5lcwogICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgZWxzZToKQEAgLTIzMCw3ICsyMzYsNyBAQAogICAgICAgICBpZiBtb2RpZnlpbmc6CiAgICAgICAgICAgICAjIEluc2VydCBhbnl0aGluZyB0aGF0IHNob3VsZCBjb21lIGJlZm9yZSB0aGlzIHZhcmlhYmxlCiAgICAgICAgICAgICBwb3MgPSBnZXRfcmVjaXBlX3Bvcyh2YXJuYW1lKQotICAgICAgICAgICAgZm9yIGsgaW4gcmVtYWluaW5nbmFtZXMua2V5cygpWzpdOgorICAgICAgICAgICAgZm9yIGsgaW4gbGlzdChyZW1haW5pbmduYW1lcyk6CiAgICAgICAgICAgICAgICAgaWYgcmVtYWluaW5nbmFtZXNba10gPiAtMSBhbmQgcG9zID49IHJlbWFpbmluZ25hbWVzW2tdIGFuZCBub3QgayBpbiBleGlzdGluZ25hbWVzOgogICAgICAgICAgICAgICAgICAgICBvdXRwdXR2YWx1ZShrLCBuZXdsaW5lcywgcmV3aW5kY29tbWVudHM9VHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgZGVsIHJlbWFpbmluZ25hbWVzW2tdCkBAIC0yNDcsMTkgKzI1MywzMyBAQAogCiAgICAgIyBGaXJzdCBydW4gLSBlc3RhYmxpc2ggd2hpY2ggdmFsdWVzIHdlIHdhbnQgdG8gc2V0IGFyZSBhbHJlYWR5IGluIHRoZSBmaWxlCiAgICAgdmFybGlzdCA9IFtyZS5lc2NhcGUoaXRlbSkgZm9yIGl0ZW0gaW4gdmFsdWVzLmtleXMoKV0KLSAgICB3aXRoIG9wZW4oZm4sICdyJykgYXMgZjoKLSAgICAgICAgY2hhbmdlZCwgZnJvbWxpbmVzID0gYmIudXRpbHMuZWRpdF9tZXRhZGF0YShmLCB2YXJsaXN0LCBwYXRjaF9yZWNpcGVfdmFyZnVuYykKKyAgICBiYi51dGlscy5lZGl0X21ldGFkYXRhKGZyb21saW5lcywgdmFybGlzdCwgcGF0Y2hfcmVjaXBlX3ZhcmZ1bmMpCiAgICAgIyBTZWNvbmQgcnVuIC0gYWN0dWFsbHkgc2V0IGV2ZXJ5dGhpbmcKICAgICBtb2RpZnlpbmcgPSBUcnVlCiAgICAgdmFybGlzdC5leHRlbmQocmVjaXBlX3Byb2dyZXNzaW9uX3Jlc3RycykKICAgICBjaGFuZ2VkLCB0b2xpbmVzID0gYmIudXRpbHMuZWRpdF9tZXRhZGF0YShmcm9tbGluZXMsIHZhcmxpc3QsIHBhdGNoX3JlY2lwZV92YXJmdW5jLCBtYXRjaF9vdmVycmlkZXM9VHJ1ZSkKIAogICAgIGlmIHJlbWFpbmluZ25hbWVzOgotICAgICAgICBpZiB0b2xpbmVzWy0xXS5zdHJpcCgpICE9ICcnOgorICAgICAgICBpZiB0b2xpbmVzIGFuZCB0b2xpbmVzWy0xXS5zdHJpcCgpICE9ICcnOgogICAgICAgICAgICAgdG9saW5lcy5hcHBlbmQoJ1xuJykKICAgICAgICAgZm9yIGsgaW4gcmVtYWluaW5nbmFtZXMua2V5cygpOgogICAgICAgICAgICAgb3V0cHV0dmFsdWUoaywgdG9saW5lcykKIAorICAgIHJldHVybiBjaGFuZ2VkLCB0b2xpbmVzCisKKworZGVmIHBhdGNoX3JlY2lwZV9maWxlKGZuLCB2YWx1ZXMsIHBhdGNoPUZhbHNlLCByZWxwYXRoPScnKToKKyAgICAiIiJVcGRhdGUgb3IgaW5zZXJ0IHZhcmlhYmxlIHZhbHVlcyBpbnRvIGEgcmVjaXBlIGZpbGUgKGFzc3VtaW5nIHlvdQorICAgICAgIGhhdmUgYWxyZWFkeSBpZGVudGlmaWVkIHRoZSBleGFjdCBmaWxlIHlvdSB3YW50IHRvIHVwZGF0ZS4pCisgICAgICAgTm90ZSB0aGF0IHNvbWUgbWFudWFsIGluc3BlY3Rpb24vaW50ZXJ2ZW50aW9uIG1heSBiZSByZXF1aXJlZAorICAgICAgIHNpbmNlIHRoaXMgY2Fubm90IGhhbmRsZSBhbGwgc2l0dWF0aW9ucy4KKyAgICAiIiIKKworICAgIHdpdGggb3BlbihmbiwgJ3InKSBhcyBmOgorICAgICAgICBmcm9tbGluZXMgPSBmLnJlYWRsaW5lcygpCisKKyAgICBfLCB0b2xpbmVzID0gcGF0Y2hfcmVjaXBlX2xpbmVzKGZyb21saW5lcywgdmFsdWVzKQorCiAgICAgaWYgcGF0Y2g6CiAgICAgICAgIHJlbGZuID0gb3MucGF0aC5yZWxwYXRoKGZuLCByZWxwYXRoKQogICAgICAgICBkaWZmID0gZGlmZmxpYi51bmlmaWVkX2RpZmYoZnJvbWxpbmVzLCB0b2xpbmVzLCAnYS8lcycgJSByZWxmbiwgJ2IvJXMnICUgcmVsZm4pCkBAIC0zMTgsNyArMzM4LDcgQEAKICAgICB2YXJmaWxlcyA9IGdldF92YXJfZmlsZXMoZm4sIHZhcmxpc3QsIGQpCiAgICAgbG9jcyA9IGxvY2FsaXNlX2ZpbGVfdmFycyhmbiwgdmFyZmlsZXMsIHZhcmxpc3QpCiAgICAgcGF0Y2hlcyA9IFtdCi0gICAgZm9yIGYsdiBpbiBsb2NzLml0ZXJpdGVtcygpOgorICAgIGZvciBmLHYgaW4gbG9jcy5pdGVtcygpOgogICAgICAgICB2YWxzID0ge2s6IHZhcnZhbHVlc1trXSBmb3IgayBpbiB2fQogICAgICAgICBwYXRjaGRhdGEgPSBwYXRjaF9yZWNpcGVfZmlsZShmLCB2YWxzLCBwYXRjaCwgcmVscGF0aCkKICAgICAgICAgaWYgcGF0Y2g6CkBAIC0zNDcsNiArMzY3LDcgQEAKICAgICAjIENvcHkgbG9jYWwgZmlsZXMgdG8gdGFyZ2V0IGRpcmVjdG9yeSBhbmQgZ2F0aGVyIGFueSByZW1vdGUgZmlsZXMKICAgICBiYl9kaXIgPSBvcy5wYXRoLmRpcm5hbWUoZC5nZXRWYXIoJ0ZJTEUnLCBUcnVlKSkgKyBvcy5zZXAKICAgICByZW1vdGVzID0gW10KKyAgICBjb3BpZWQgPSBbXQogICAgIGluY2x1ZGVzID0gW3BhdGggZm9yIHBhdGggaW4gZC5nZXRWYXIoJ0JCSU5DTFVERUQnLCBUcnVlKS5zcGxpdCgpIGlmCiAgICAgICAgICAgICAgICAgcGF0aC5zdGFydHN3aXRoKGJiX2RpcikgYW5kIG9zLnBhdGguZXhpc3RzKHBhdGgpXQogICAgIGZvciBwYXRoIGluIGZldGNoLmxvY2FscGF0aHMoKSArIGluY2x1ZGVzOgpAQCAtMzU4LDEzICszNzksMTQgQEAKICAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc3ViZGlyKToKICAgICAgICAgICAgICAgICAgICAgb3MubWFrZWRpcnMoc3ViZGlyKQogICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5MihwYXRoLCBvcy5wYXRoLmpvaW4odGd0X2RpciwgcmVscGF0aCkpCisgICAgICAgICAgICAgICAgY29waWVkLmFwcGVuZChyZWxwYXRoKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmVtb3Rlcy5hcHBlbmQocGF0aCkKICAgICAjIFNpbXBseSBjb3B5IHdob2xlIG1ldGEgZGlyLCBpZiByZXF1ZXN0ZWQKICAgICBpZiB3aG9sZV9kaXI6CiAgICAgICAgIHNodXRpbC5jb3B5dHJlZShiYl9kaXIsIHRndF9kaXIpCiAKLSAgICByZXR1cm4gcmVtb3RlcworICAgIHJldHVybiBjb3BpZWQsIHJlbW90ZXMKIAogCiBkZWYgZ2V0X3JlY2lwZV9sb2NhbF9maWxlcyhkLCBwYXRjaGVzPUZhbHNlKToKQEAgLTM3OCw4ICs0MDAsMTYgQEAKICAgICAgICAgICAgICAgICAgICAgYmIudXRpbHMuZXhlY19mbGF0X3B5dGhvbl9mdW5jKCdwYXRjaF9wYXRoJywgdXJpLCBmZXRjaCwgJycpKToKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgIyBTa2lwIGZpbGVzIHRoYXQgYXJlIHJlZmVyZW5jZWQgYnkgYWJzb2x1dGUgcGF0aAotICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNhYnMoZmV0Y2gudWRbdXJpXS5iYXNlcGF0aCk6Ci0gICAgICAgICAgICAgICAgcmV0W2ZldGNoLnVkW3VyaV0uYmFzZXBhdGhdID0gZmV0Y2gubG9jYWxwYXRoKHVyaSkKKyAgICAgICAgICAgIGZuYW1lID0gZmV0Y2gudWRbdXJpXS5iYXNlcGF0aAorICAgICAgICAgICAgaWYgb3MucGF0aC5pc2FicyhmbmFtZSk6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICMgSGFuZGxlIHN1YmRpcj0KKyAgICAgICAgICAgIHN1YmRpciA9IGZldGNoLnVkW3VyaV0ucGFybS5nZXQoJ3N1YmRpcicsICcnKQorICAgICAgICAgICAgaWYgc3ViZGlyOgorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNhYnMoc3ViZGlyKToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBmbmFtZSA9IG9zLnBhdGguam9pbihzdWJkaXIsIGZuYW1lKQorICAgICAgICAgICAgcmV0W2ZuYW1lXSA9IGZldGNoLmxvY2FscGF0aCh1cmkpCiAgICAgcmV0dXJuIHJldAogCiAKQEAgLTQxOSw4ICs0NDksOCBAQAogZGVmIHZhbGlkYXRlX3BuKHBuKToKICAgICAiIiJQZXJmb3JtIHZhbGlkYXRpb24gb24gYSByZWNpcGUgbmFtZSAoUE4pIGZvciBhIG5ldyByZWNpcGUuIiIiCiAgICAgcmVzZXJ2ZWRfbmFtZXMgPSBbJ2ZvcmNldmFyaWFibGUnLCAnYXBwZW5kJywgJ3ByZXBlbmQnLCAncmVtb3ZlJ10KLSAgICBpZiBub3QgcmUubWF0Y2goJ1swLTlhLXotLl0rJywgcG4pOgotICAgICAgICByZXR1cm4gJ1JlY2lwZSBuYW1lICIlcyIgaXMgaW52YWxpZDogb25seSBjaGFyYWN0ZXJzIDAtOSwgYS16LCAtIGFuZCAuIGFyZSBhbGxvd2VkJyAlIHBuCisgICAgaWYgbm90IHJlLm1hdGNoKCdeWzAtOWEtei0uK10rJCcsIHBuKToKKyAgICAgICAgcmV0dXJuICdSZWNpcGUgbmFtZSAiJXMiIGlzIGludmFsaWQ6IG9ubHkgY2hhcmFjdGVycyAwLTksIGEteiwgLSwgKyBhbmQgLiBhcmUgYWxsb3dlZCcgJSBwbgogICAgIGVsaWYgcG4gaW4gcmVzZXJ2ZWRfbmFtZXM6CiAgICAgICAgIHJldHVybiAnUmVjaXBlIG5hbWUgIiVzIiBpcyBpbnZhbGlkOiBpcyBhIHJlc2VydmVkIGtleXdvcmQnICUgcG4KICAgICBlbGlmIHBuLnN0YXJ0c3dpdGgoJ3BuLScpOgpAQCAtNDMwLDYgKzQ2MCw2MCBAQAogICAgIHJldHVybiAnJwogCiAKK2RlZiBnZXRfYmJmaWxlX3BhdGgoZCwgZGVzdGRpciwgZXh0cmFwYXRoaGludD1Ob25lKToKKyAgICAiIiIKKyAgICBEZXRlcm1pbmUgdGhlIGNvcnJlY3QgcGF0aCBmb3IgYSByZWNpcGUgd2l0aGluIGEgbGF5ZXIKKyAgICBQYXJhbWV0ZXJzOgorICAgICAgICBkOiBSZWNpcGUtc3BlY2lmaWMgZGF0YXN0b3JlCisgICAgICAgIGRlc3RkaXI6IGRlc3RpbmF0aW9uIGRpcmVjdG9yeS4gQ2FuIGJlIHRoZSBwYXRoIHRvIHRoZSBiYXNlIG9mIHRoZSBsYXllciBvciBhCisgICAgICAgICAgICBwYXJ0aWFsIHBhdGggc29tZXdoZXJlIHdpdGhpbiB0aGUgbGF5ZXIuCisgICAgICAgIGV4dHJhcGF0aGhpbnQ6IGEgcGF0aCByZWxhdGl2ZSB0byB0aGUgYmFzZSBvZiB0aGUgbGF5ZXIgdG8gdHJ5CisgICAgIiIiCisgICAgaW1wb3J0IGJiLmNvb2tlcmRhdGEKKworICAgIGRlc3RkaXIgPSBvcy5wYXRoLmFic3BhdGgoZGVzdGRpcikKKyAgICBkZXN0bGF5ZXJkaXIgPSBmaW5kX2xheWVyZGlyKGRlc3RkaXIpCisKKyAgICAjIFBhcnNlIHRoZSBzcGVjaWZpZWQgbGF5ZXIncyBsYXllci5jb25mIGZpbGUgZGlyZWN0bHksIGluIGNhc2UgdGhlIGxheWVyIGlzbid0IGluIGJibGF5ZXJzLmNvbmYKKyAgICBjb25mZGF0YSA9IGQuY3JlYXRlQ29weSgpCisgICAgY29uZmRhdGEuc2V0VmFyKCdCQkZJTEVTJywgJycpCisgICAgY29uZmRhdGEuc2V0VmFyKCdMQVlFUkRJUicsIGRlc3RsYXllcmRpcikKKyAgICBkZXN0bGF5ZXJjb25mID0gb3MucGF0aC5qb2luKGRlc3RsYXllcmRpciwgImNvbmYiLCAibGF5ZXIuY29uZiIpCisgICAgY29uZmRhdGEgPSBiYi5jb29rZXJkYXRhLnBhcnNlX2NvbmZpZ19maWxlKGRlc3RsYXllcmNvbmYsIGNvbmZkYXRhKQorICAgIHBuID0gZC5nZXRWYXIoJ1BOJywgVHJ1ZSkKKworICAgIGJiZmlsZXNwZWNzID0gKGNvbmZkYXRhLmdldFZhcignQkJGSUxFUycsIFRydWUpIG9yICcnKS5zcGxpdCgpCisgICAgaWYgZGVzdGRpciA9PSBkZXN0bGF5ZXJkaXI6CisgICAgICAgIGZvciBiYmZpbGVzcGVjIGluIGJiZmlsZXNwZWNzOgorICAgICAgICAgICAgaWYgbm90IGJiZmlsZXNwZWMuZW5kc3dpdGgoJy5iYmFwcGVuZCcpOgorICAgICAgICAgICAgICAgIGZvciBtYXRjaCBpbiBnbG9iLmdsb2IoYmJmaWxlc3BlYyk6CisgICAgICAgICAgICAgICAgICAgIHNwbGl0ZXh0ID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKG1hdGNoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgc3BsaXRleHRbMV0gPT0gJy5iYic6CisgICAgICAgICAgICAgICAgICAgICAgICBtcG4gPSBzcGxpdGV4dFswXS5zcGxpdCgnXycpWzBdCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBtcG4gPT0gcG46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9zLnBhdGguZGlybmFtZShtYXRjaCkKKworICAgICMgVHJ5IHRvIG1ha2UgdXAgYSBwYXRoIHRoYXQgbWF0Y2hlcyBCQkZJTEVTCisgICAgIyB0aGlzIGlzIGEgbGl0dGxlIGNydWRlLCBidXQgYmV0dGVyIHRoYW4gbm90aGluZworICAgIGJwbiA9IGQuZ2V0VmFyKCdCUE4nLCBUcnVlKQorICAgIHJlY2lwZWZuID0gb3MucGF0aC5iYXNlbmFtZShkLmdldFZhcignRklMRScsIFRydWUpKQorICAgIHBhdGhvcHRpb25zID0gW2Rlc3RkaXJdCisgICAgaWYgZXh0cmFwYXRoaGludDoKKyAgICAgICAgcGF0aG9wdGlvbnMuYXBwZW5kKG9zLnBhdGguam9pbihkZXN0ZGlyLCBleHRyYXBhdGhoaW50KSkKKyAgICBpZiBkZXN0ZGlyID09IGRlc3RsYXllcmRpcjoKKyAgICAgICAgcGF0aG9wdGlvbnMuYXBwZW5kKG9zLnBhdGguam9pbihkZXN0ZGlyLCAncmVjaXBlcy0lcycgJSBicG4sIGJwbikpCisgICAgICAgIHBhdGhvcHRpb25zLmFwcGVuZChvcy5wYXRoLmpvaW4oZGVzdGRpciwgJ3JlY2lwZXMnLCBicG4pKQorICAgICAgICBwYXRob3B0aW9ucy5hcHBlbmQob3MucGF0aC5qb2luKGRlc3RkaXIsIGJwbikpCisgICAgZWxpZiBub3QgZGVzdGRpci5lbmRzd2l0aCgoJy8nICsgcG4sICcvJyArIGJwbikpOgorICAgICAgICBwYXRob3B0aW9ucy5hcHBlbmQob3MucGF0aC5qb2luKGRlc3RkaXIsIGJwbikpCisgICAgY2xvc2VwYXRoID0gJycKKyAgICBmb3IgcGF0aG9wdGlvbiBpbiBwYXRob3B0aW9uczoKKyAgICAgICAgYmJmaWxlcGF0aCA9IG9zLnBhdGguam9pbihwYXRob3B0aW9uLCAndGVzdC5iYicpCisgICAgICAgIGZvciBiYmZpbGVzcGVjIGluIGJiZmlsZXNwZWNzOgorICAgICAgICAgICAgaWYgZm5tYXRjaC5mbm1hdGNoY2FzZShiYmZpbGVwYXRoLCBiYmZpbGVzcGVjKToKKyAgICAgICAgICAgICAgICByZXR1cm4gcGF0aG9wdGlvbgorICAgIHJldHVybiBOb25lCisKIGRlZiBnZXRfYmJhcHBlbmRfcGF0aChkLCBkZXN0bGF5ZXJkaXIsIHdpbGRjYXJkdmVyPUZhbHNlKToKICAgICAiIiJEZXRlcm1pbmUgaG93IGEgYmJhcHBlbmQgZm9yIGEgcmVjaXBlIHNob3VsZCBiZSBuYW1lZCBhbmQgbG9jYXRlZCB3aXRoaW4gYW5vdGhlciBsYXllciIiIgogCkBAIC01MzYsNyArNjIwLDcgQEAKICAgICBiYmFwcGVuZGxpbmVzID0gW10KICAgICBpZiBleHRyYWxpbmVzOgogICAgICAgICBpZiBpc2luc3RhbmNlKGV4dHJhbGluZXMsIGRpY3QpOgotICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIGV4dHJhbGluZXMuaXRlcml0ZW1zKCk6CisgICAgICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gZXh0cmFsaW5lcy5pdGVtcygpOgogICAgICAgICAgICAgICAgIGJiYXBwZW5kbGluZXMuYXBwZW5kKChuYW1lLCAnPScsIHZhbHVlKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgRG8gb3VyIGJlc3QgdG8gc3BsaXQgaXQKQEAgLTU1MCwxNCArNjM0LDE0IEBACiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignSW52YWxpZCBleHRyYWxpbmVzIHZhbHVlIHBhc3NlZCcpCiAKICAgICBkZWYgcG9wbGluZSh2YXJuYW1lKToKLSAgICAgICAgZm9yIGkgaW4geHJhbmdlKDAsIGxlbihiYmFwcGVuZGxpbmVzKSk6CisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihiYmFwcGVuZGxpbmVzKSk6CiAgICAgICAgICAgICBpZiBiYmFwcGVuZGxpbmVzW2ldWzBdID09IHZhcm5hbWU6CiAgICAgICAgICAgICAgICAgbGluZSA9IGJiYXBwZW5kbGluZXMucG9wKGkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGxpbmUKICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgIGRlZiBhcHBlbmRsaW5lKHZhcm5hbWUsIG9wLCB2YWx1ZSk6Ci0gICAgICAgIGZvciBpIGluIHhyYW5nZSgwLCBsZW4oYmJhcHBlbmRsaW5lcykpOgorICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oYmJhcHBlbmRsaW5lcykpOgogICAgICAgICAgICAgaXRlbSA9IGJiYXBwZW5kbGluZXNbaV0KICAgICAgICAgICAgIGlmIGl0ZW1bMF0gPT0gdmFybmFtZToKICAgICAgICAgICAgICAgICBiYmFwcGVuZGxpbmVzW2ldID0gKGl0ZW1bMF0sIGl0ZW1bMV0sIGl0ZW1bMl0gKyAnICcgKyB2YWx1ZSkKQEAgLTU3Niw3ICs2NjAsNyBAQAogICAgIGNvcHlmaWxlcyA9IHt9CiAgICAgaWYgc3JjZmlsZXM6CiAgICAgICAgIGluc3RmdW5jbGluZXMgPSBbXQotICAgICAgICBmb3IgbmV3ZmlsZSwgb3JpZ3NyY2ZpbGUgaW4gc3JjZmlsZXMuaXRlcml0ZW1zKCk6CisgICAgICAgIGZvciBuZXdmaWxlLCBvcmlnc3JjZmlsZSBpbiBzcmNmaWxlcy5pdGVtcygpOgogICAgICAgICAgICAgc3JjZmlsZSA9IG9yaWdzcmNmaWxlCiAgICAgICAgICAgICBzcmN1cmllbnRyeSA9IE5vbmUKICAgICAgICAgICAgIGlmIG5vdCBzcmNmaWxlOgpAQCAtNjQ0LDcgKzcyOCw3IEBACiAKICAgICAgICAgICAgICAgICBpZiByZW1vdmV2YXIgaW4gcmVtb3ZldmFsdWVzOgogICAgICAgICAgICAgICAgICAgICByZW1vdmUgPSByZW1vdmV2YWx1ZXNbcmVtb3ZldmFyXQotICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHJlbW92ZSwgYmFzZXN0cmluZyk6CisgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UocmVtb3ZlLCBzdHIpOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgcmVtb3ZlIGluIHNwbGl0dmFsOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGl0dmFsLnJlbW92ZShyZW1vdmUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IFRydWUKQEAgLTY3NCw3ICs3NTgsNyBAQAogCiAgICAgICAgIHZhcm5hbWVzID0gW2l0ZW1bMF0gZm9yIGl0ZW0gaW4gYmJhcHBlbmRsaW5lc10KICAgICAgICAgaWYgcmVtb3ZldmFsdWVzOgotICAgICAgICAgICAgdmFybmFtZXMuZXh0ZW5kKHJlbW92ZXZhbHVlcy5rZXlzKCkpCisgICAgICAgICAgICB2YXJuYW1lcy5leHRlbmQobGlzdChyZW1vdmV2YWx1ZXMua2V5cygpKSkKIAogICAgICAgICB3aXRoIG9wZW4oYXBwZW5kcGF0aCwgJ3InKSBhcyBmOgogICAgICAgICAgICAgKHVwZGF0ZWQsIG5ld2xpbmVzKSA9IGJiLnV0aWxzLmVkaXRfbWV0YWRhdGEoZiwgdmFybmFtZXMsIGFwcGVuZGZpbGVfdmFyZnVuYykKQEAgLTY5OSw3ICs3ODMsNyBAQAogICAgIGlmIGNvcHlmaWxlczoKICAgICAgICAgaWYgbWFjaGluZToKICAgICAgICAgICAgIGRlc3RzdWJkaXIgPSBvcy5wYXRoLmpvaW4oZGVzdHN1YmRpciwgbWFjaGluZSkKLSAgICAgICAgZm9yIG5ld2ZpbGUsIHNyY2ZpbGUgaW4gY29weWZpbGVzLml0ZXJpdGVtcygpOgorICAgICAgICBmb3IgbmV3ZmlsZSwgc3JjZmlsZSBpbiBjb3B5ZmlsZXMuaXRlbXMoKToKICAgICAgICAgICAgIGZpbGVkZXN0ID0gb3MucGF0aC5qb2luKGFwcGVuZGRpciwgZGVzdHN1YmRpciwgb3MucGF0aC5iYXNlbmFtZShzcmNmaWxlKSkKICAgICAgICAgICAgIGlmIG9zLnBhdGguYWJzcGF0aChuZXdmaWxlKSAhPSBvcy5wYXRoLmFic3BhdGgoZmlsZWRlc3QpOgogICAgICAgICAgICAgICAgIGJiLm5vdGUoJ0NvcHlpbmcgJXMgdG8gJXMnICUgKG5ld2ZpbGUsIGZpbGVkZXN0KSkKQEAgLTcxMCwxNCArNzk0LDE2IEBACiAKIAogZGVmIGZpbmRfbGF5ZXJkaXIoZm4pOgotICAgICIiIiBGaWd1cmUgb3V0IHJlbGF0aXZlIHBhdGggdG8gYmFzZSBvZiBsYXllciBmb3IgYSBmaWxlIChlLmcuIGEgcmVjaXBlKSIiIgotICAgIHB0aCA9IG9zLnBhdGguZGlybmFtZShmbikKKyAgICAiIiIgRmlndXJlIG91dCB0aGUgcGF0aCB0byB0aGUgYmFzZSBvZiB0aGUgbGF5ZXIgY29udGFpbmluZyBhIGZpbGUgKGUuZy4gYSByZWNpcGUpIiIiCisgICAgcHRoID0gZm4KICAgICBsYXllcmRpciA9ICcnCiAgICAgd2hpbGUgcHRoOgogICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4ocHRoLCAnY29uZicsICdsYXllci5jb25mJykpOgogICAgICAgICAgICAgbGF5ZXJkaXIgPSBwdGgKICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgIHB0aCA9IG9zLnBhdGguZGlybmFtZShwdGgpCisgICAgICAgIGlmIHB0aCA9PSAnLyc6CisgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgIHJldHVybiBsYXllcmRpcgogCiAKQEAgLTcyNSwxMiArODExLDEyIEBACiAgICAgIiIiUmVwbGFjZSBjb21tb24gZGlyZWN0b3J5IHBhdGhzIHdpdGggYXBwcm9wcmlhdGUgdmFyaWFibGUgcmVmZXJlbmNlcyAoZS5nLiAvZXRjIGJlY29tZXMgJHtzeXNjb25mZGlyfSkiIiIKICAgICBkaXJ2YXJzID0ge30KICAgICAjIFNvcnQgYnkgbGVuZ3RoIHNvIHdlIGdldCB0aGUgdmFyaWFibGVzIHdlJ3JlIGludGVyZXN0ZWQgaW4gZmlyc3QKLSAgICBmb3IgdmFyIGluIHNvcnRlZChkLmtleXMoKSwga2V5PWxlbik6CisgICAgZm9yIHZhciBpbiBzb3J0ZWQobGlzdChkLmtleXMoKSksIGtleT1sZW4pOgogICAgICAgICBpZiB2YXIuZW5kc3dpdGgoJ2RpcicpIGFuZCB2YXIubG93ZXIoKSA9PSB2YXI6CiAgICAgICAgICAgICB2YWx1ZSA9IGQuZ2V0VmFyKHZhciwgVHJ1ZSkKICAgICAgICAgICAgIGlmIHZhbHVlLnN0YXJ0c3dpdGgoJy8nKSBhbmQgbm90ICdcbicgaW4gdmFsdWUgYW5kIHZhbHVlIG5vdCBpbiBkaXJ2YXJzOgogICAgICAgICAgICAgICAgIGRpcnZhcnNbdmFsdWVdID0gdmFyCi0gICAgZm9yIGRpcnBhdGggaW4gc29ydGVkKGRpcnZhcnMua2V5cygpLCByZXZlcnNlPVRydWUpOgorICAgIGZvciBkaXJwYXRoIGluIHNvcnRlZChsaXN0KGRpcnZhcnMua2V5cygpKSwgcmV2ZXJzZT1UcnVlKToKICAgICAgICAgcGF0aCA9IHBhdGgucmVwbGFjZShkaXJwYXRoLCAnJHslc30nICUgZGlydmFyc1tkaXJwYXRoXSkKICAgICByZXR1cm4gcGF0aAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2Uvcm9vdGZzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3Jvb3Rmcy5weQppbmRleCBhOTVlMWI3Li5hMzQ4Yjk3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2Uvcm9vdGZzLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9yb290ZnMucHkKQEAgLTEwLDE3ICsxMCwxNyBAQAogaW1wb3J0IHJlCiAKIAotY2xhc3MgUm9vdGZzKG9iamVjdCk6CitjbGFzcyBSb290ZnMob2JqZWN0LCBtZXRhY2xhc3M9QUJDTWV0YSk6CiAgICAgIiIiCiAgICAgVGhpcyBpcyBhbiBhYnN0cmFjdCBjbGFzcy4gRG8gbm90IGluc3RhbnRpYXRlIHRoaXMgZGlyZWN0bHkuCiAgICAgIiIiCi0gICAgX19tZXRhY2xhc3NfXyA9IEFCQ01ldGEKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZCwgcHJvZ3Jlc3NfcmVwb3J0ZXI9Tm9uZSk6CiAgICAgICAgIHNlbGYuZCA9IGQKICAgICAgICAgc2VsZi5wbSA9IE5vbmUKICAgICAgICAgc2VsZi5pbWFnZV9yb290ZnMgPSBzZWxmLmQuZ2V0VmFyKCdJTUFHRV9ST09URlMnLCBUcnVlKQotICAgICAgICBzZWxmLmRlcGxveV9kaXJfaW1hZ2UgPSBzZWxmLmQuZ2V0VmFyKCdERVBMT1lfRElSX0lNQUdFJywgVHJ1ZSkKKyAgICAgICAgc2VsZi5kZXBsb3lkaXIgPSBzZWxmLmQuZ2V0VmFyKCdJTUdERVBMT1lESVInLCBUcnVlKQorICAgICAgICBzZWxmLnByb2dyZXNzX3JlcG9ydGVyID0gcHJvZ3Jlc3NfcmVwb3J0ZXIKIAogICAgICAgICBzZWxmLmluc3RhbGxfb3JkZXIgPSBNYW5pZmVzdC5JTlNUQUxMX09SREVSCiAKQEAgLTQwLDUxICs0MCw0NiBAQAogICAgIGRlZiBfbG9nX2NoZWNrKHNlbGYpOgogICAgICAgICBwYXNzCiAKLSAgICBkZWYgX2xvZ19jaGVja193YXJuKHNlbGYpOgotICAgICAgICByID0gcmUuY29tcGlsZSgnXih3YXJufFdhcm58Tk9URTogd2FybnxOT1RFOiBXYXJufFdBUk5JTkc6KScpCisgICAgZGVmIF9sb2dfY2hlY2tfY29tbW9uKHNlbGYsIHR5cGUsIG1hdGNoKToKKyAgICAgICAgIyBJZ25vcmUgYW55IGxpbmVzIGNvbnRhaW5pbmcgbG9nX2NoZWNrIHRvIGF2b2lkIHJlY3Vyc2lvbiwgYW5kIGlnbm9yZQorICAgICAgICAjIGxpbmVzIGJlZ2lubmluZyB3aXRoIGEgKyBzaW5jZSBzaCAteCBtYXkgZW1pdCBjb2RlIHdoaWNoIGlzbid0CisgICAgICAgICMgYWN0dWFsbHkgZXhlY3V0ZWQsIGJ1dCBtYXkgY29udGFpbiBlcnJvciBtZXNzYWdlcworICAgICAgICBleGNsdWRlcyA9IFsgJ2xvZ19jaGVjaycsIHInXlwrJyBdCisgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ2xvZ19jaGVja19leHBlY3RlZF9yZWdleGVzJyk6CisgICAgICAgICAgICBleGNsdWRlcy5leHRlbmQoc2VsZi5sb2dfY2hlY2tfZXhwZWN0ZWRfcmVnZXhlcykKKyAgICAgICAgZXhjbHVkZXMgPSBbcmUuY29tcGlsZSh4KSBmb3IgeCBpbiBleGNsdWRlc10KKyAgICAgICAgciA9IHJlLmNvbXBpbGUobWF0Y2gpCiAgICAgICAgIGxvZ19wYXRoID0gc2VsZi5kLmV4cGFuZCgiJHtUfS9sb2cuZG9fcm9vdGZzIikKKyAgICAgICAgbWVzc2FnZXMgPSBbXQogICAgICAgICB3aXRoIG9wZW4obG9nX3BhdGgsICdyJykgYXMgbG9nOgogICAgICAgICAgICAgZm9yIGxpbmUgaW4gbG9nOgotICAgICAgICAgICAgICAgIGlmICdsb2dfY2hlY2snIGluIGxpbmUgb3IgJ05PVEU6JyBpbiBsaW5lOgorICAgICAgICAgICAgICAgIGZvciBlZSBpbiBleGNsdWRlczoKKyAgICAgICAgICAgICAgICAgICAgbSA9IGVlLnNlYXJjaChsaW5lKQorICAgICAgICAgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBpZiBtOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogCiAgICAgICAgICAgICAgICAgbSA9IHIuc2VhcmNoKGxpbmUpCiAgICAgICAgICAgICAgICAgaWYgbToKLSAgICAgICAgICAgICAgICAgICAgYmIud2FybignW2xvZ19jaGVja10gJXM6IGZvdW5kIGEgd2FybmluZyBtZXNzYWdlIGluIHRoZSBsb2dmaWxlIChrZXl3b3JkIFwnJXNcJyk6XG5bbG9nX2NoZWNrXSAlcycKLQkJCQkgICAgJSAoc2VsZi5kLmdldFZhcignUE4nLCBUcnVlKSwgbS5ncm91cCgpLCBsaW5lKSkKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZXMuYXBwZW5kKCdbbG9nX2NoZWNrXSAlcycgJSBsaW5lKQorICAgICAgICBpZiBtZXNzYWdlczoKKyAgICAgICAgICAgIGlmIGxlbihtZXNzYWdlcykgPT0gMToKKyAgICAgICAgICAgICAgICBtc2cgPSAnMSAlcyBtZXNzYWdlJyAlIHR5cGUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbXNnID0gJyVkICVzIG1lc3NhZ2VzJyAlIChsZW4obWVzc2FnZXMpLCB0eXBlKQorICAgICAgICAgICAgbXNnID0gJ1tsb2dfY2hlY2tdICVzOiBmb3VuZCAlcyBpbiB0aGUgbG9nZmlsZTpcbiVzJyAlIFwKKyAgICAgICAgICAgICAgICAoc2VsZi5kLmdldFZhcignUE4nLCBUcnVlKSwgbXNnLCAnJy5qb2luKG1lc3NhZ2VzKSkKKyAgICAgICAgICAgIGlmIHR5cGUgPT0gJ2Vycm9yJzoKKyAgICAgICAgICAgICAgICBiYi5mYXRhbChtc2cpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGJiLndhcm4obXNnKQorCisgICAgZGVmIF9sb2dfY2hlY2tfd2FybihzZWxmKToKKyAgICAgICAgc2VsZi5fbG9nX2NoZWNrX2NvbW1vbignd2FybmluZycsICdeKHdhcm58V2FybnxXQVJOSU5HOiknKQogCiAgICAgZGVmIF9sb2dfY2hlY2tfZXJyb3Ioc2VsZik6Ci0gICAgICAgIHIgPSByZS5jb21waWxlKHNlbGYubG9nX2NoZWNrX3JlZ2V4KQotICAgICAgICBsb2dfcGF0aCA9IHNlbGYuZC5leHBhbmQoIiR7VH0vbG9nLmRvX3Jvb3RmcyIpCi0gICAgICAgIHdpdGggb3Blbihsb2dfcGF0aCwgJ3InKSBhcyBsb2c6Ci0gICAgICAgICAgICBmb3VuZF9lcnJvciA9IDAKLSAgICAgICAgICAgIG1lc3NhZ2UgPSAiXG4iCi0gICAgICAgICAgICBmb3IgbGluZSBpbiBsb2c6Ci0gICAgICAgICAgICAgICAgaWYgJ2xvZ19jaGVjaycgaW4gbGluZToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ2xvZ19jaGVja19leHBlY3RlZF9lcnJvcnNfcmVnZXhlcycpOgotICAgICAgICAgICAgICAgICAgICBtID0gTm9uZQotICAgICAgICAgICAgICAgICAgICBmb3IgZWUgaW4gc2VsZi5sb2dfY2hlY2tfZXhwZWN0ZWRfZXJyb3JzX3JlZ2V4ZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtID0gcmUuc2VhcmNoKGVlLCBsaW5lKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICBpZiBtOgotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgICAgIG0gPSByLnNlYXJjaChsaW5lKQotICAgICAgICAgICAgICAgIGlmIG06Ci0gICAgICAgICAgICAgICAgICAgIGZvdW5kX2Vycm9yID0gMQotICAgICAgICAgICAgICAgICAgICBiYi53YXJuKCdbbG9nX2NoZWNrXSBJbiBsaW5lOiBbJXNdJyAlIGxpbmUpCi0gICAgICAgICAgICAgICAgICAgIGJiLndhcm4oJ1tsb2dfY2hlY2tdICVzOiBmb3VuZCBhbiBlcnJvciBtZXNzYWdlIGluIHRoZSBsb2dmaWxlIChrZXl3b3JkIFwnJXNcJyk6XG5bbG9nX2NoZWNrXSAlcycKLQkJCQkgICAgJSAoc2VsZi5kLmdldFZhcignUE4nLCBUcnVlKSwgbS5ncm91cCgpLCBsaW5lKSkKLQotICAgICAgICAgICAgICAgIGlmIGZvdW5kX2Vycm9yID49IDEgYW5kIGZvdW5kX2Vycm9yIDw9IDU6Ci0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gbGluZSArICdcbicKLSAgICAgICAgICAgICAgICAgICAgZm91bmRfZXJyb3IgKz0gMQotCi0gICAgICAgICAgICAgICAgaWYgZm91bmRfZXJyb3IgPT0gNjoKLSAgICAgICAgICAgICAgICAgICAgYmIuZmF0YWwobWVzc2FnZSkKKyAgICAgICAgc2VsZi5fbG9nX2NoZWNrX2NvbW1vbignZXJyb3InLCBzZWxmLmxvZ19jaGVja19yZWdleCkKIAogICAgIGRlZiBfaW5zZXJ0X2ZlZWRfdXJpcyhzZWxmKToKICAgICAgICAgaWYgYmIudXRpbHMuY29udGFpbnMoIklNQUdFX0ZFQVRVUkVTIiwgInBhY2thZ2UtbWFuYWdlbWVudCIsCkBAIC0xMjEsOCArMTE2LDEwIEBACiAKICAgICAgICAgYmIubm90ZSgiICBDb3B5aW5nIGJhY2sgcGFja2FnZSBkYXRhYmFzZS4uLiIpCiAgICAgICAgIGZvciBkaXIgaW4gZGlyczoKKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKHNlbGYuaW1hZ2Vfcm9vdGZzICsgJy1vcmlnJyArIGRpcik6CisgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihzZWxmLmltYWdlX3Jvb3RmcyArIG9zLnBhdGguZGlybmFtZShkaXIpKQotICAgICAgICAgICAgc2h1dGlsLmNvcHl0cmVlKHNlbGYuaW1hZ2Vfcm9vdGZzICsgJy1vcmlnJyArIGRpciwgc2VsZi5pbWFnZV9yb290ZnMgKyBkaXIpCisgICAgICAgICAgICBzaHV0aWwuY29weXRyZWUoc2VsZi5pbWFnZV9yb290ZnMgKyAnLW9yaWcnICsgZGlyLCBzZWxmLmltYWdlX3Jvb3RmcyArIGRpciwgc3ltbGlua3M9VHJ1ZSkKIAogICAgICAgICBjcGF0aCA9IG9lLmNhY2hlZHBhdGguQ2FjaGVkUGF0aCgpCiAgICAgICAgICMgQ29weSBmaWxlcyBsb2NhdGVkIGluIC91c3IvbGliL2RlYnVnIG9yIC91c3Ivc3JjL2RlYnVnCkBAIC0xODUsMTYgKzE4MiwxOSBAQAogCiAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihzZWxmLmltYWdlX3Jvb3RmcykKIAotICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoc2VsZi5kZXBsb3lfZGlyX2ltYWdlKQorICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoc2VsZi5kZXBsb3lkaXIpCiAKICAgICAgICAgc2h1dGlsLmNvcHl0cmVlKHBvc3RpbnN0X2ludGVyY2VwdHNfZGlyLCBpbnRlcmNlcHRzX2RpcikKIAogICAgICAgICBzaHV0aWwuY29weShzZWxmLmQuZXhwYW5kKCIke0NPUkVCQVNFfS9tZXRhL2ZpbGVzL2RlcGxveWRpcl9yZWFkbWUudHh0IiksCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuZGVwbG95X2Rpcl9pbWFnZSArCisgICAgICAgICAgICAgICAgICAgIHNlbGYuZGVwbG95ZGlyICsKICAgICAgICAgICAgICAgICAgICAgIi9SRUFETUVfLV9ET19OT1RfREVMRVRFX0ZJTEVTX0lOX1RISVNfRElSRUNUT1JZLnR4dCIpCiAKICAgICAgICAgZXhlY3V0ZV9wcmVfcG9zdF9wcm9jZXNzKHNlbGYuZCwgcHJlX3Byb2Nlc3NfY21kcykKIAorICAgICAgICBpZiBzZWxmLnByb2dyZXNzX3JlcG9ydGVyOgorICAgICAgICAgICAgc2VsZi5wcm9ncmVzc19yZXBvcnRlci5uZXh0X3N0YWdlKCkKKwogICAgICAgICAjIGNhbGwgdGhlIHBhY2thZ2UgbWFuYWdlciBkZXBlbmRlbnQgY3JlYXRlIG1ldGhvZAogICAgICAgICBzZWxmLl9jcmVhdGUoKQogCkBAIC0yMDksNiArMjA5LDkgQEAKIAogICAgICAgICBleGVjdXRlX3ByZV9wb3N0X3Byb2Nlc3Moc2VsZi5kLCBwb3N0X3Byb2Nlc3NfY21kcykKIAorICAgICAgICBpZiBzZWxmLnByb2dyZXNzX3JlcG9ydGVyOgorICAgICAgICAgICAgc2VsZi5wcm9ncmVzc19yZXBvcnRlci5uZXh0X3N0YWdlKCkKKwogICAgICAgICBpZiBiYi51dGlscy5jb250YWlucygiSU1BR0VfRkVBVFVSRVMiLCAicmVhZC1vbmx5LXJvb3RmcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1ZSwgRmFsc2UsIHNlbGYuZCk6CiAgICAgICAgICAgICBkZWxheWVkX3Bvc3RpbnN0cyA9IHNlbGYuX2dldF9kZWxheWVkX3Bvc3RpbnN0cygpCkBAIC0yMjIsNiArMjI1LDkgQEAKIAogICAgICAgICBzZWxmLl91bmluc3RhbGxfdW5uZWVkZWQoKQogCisgICAgICAgIGlmIHNlbGYucHJvZ3Jlc3NfcmVwb3J0ZXI6CisgICAgICAgICAgICBzZWxmLnByb2dyZXNzX3JlcG9ydGVyLm5leHRfc3RhZ2UoKQorCiAgICAgICAgIHNlbGYuX2luc2VydF9mZWVkX3VyaXMoKQogCiAgICAgICAgIHNlbGYuX3J1bl9sZGNvbmZpZygpCkBAIC0yMzIsNiArMjM4LDEwIEBACiAgICAgICAgIHNlbGYuX2NsZWFudXAoKQogICAgICAgICBzZWxmLl9sb2dfY2hlY2soKQogCisgICAgICAgIGlmIHNlbGYucHJvZ3Jlc3NfcmVwb3J0ZXI6CisgICAgICAgICAgICBzZWxmLnByb2dyZXNzX3JlcG9ydGVyLm5leHRfc3RhZ2UoKQorCisKICAgICBkZWYgX3VuaW5zdGFsbF91bm5lZWRlZChzZWxmKToKICAgICAgICAgIyBSZW1vdmUgdW5uZWVkZWQgaW5pdCBzY3JpcHQgc3ltbGlua3MKICAgICAgICAgZGVsYXllZF9wb3N0aW5zdHMgPSBzZWxmLl9nZXRfZGVsYXllZF9wb3N0aW5zdHMoKQpAQCAtMjQzLDcgKzI1Myw5IEBACiAKICAgICAgICAgaW1hZ2Vfcm9yZnMgPSBiYi51dGlscy5jb250YWlucygiSU1BR0VfRkVBVFVSRVMiLCAicmVhZC1vbmx5LXJvb3RmcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1ZSwgRmFsc2UsIHNlbGYuZCkKLSAgICAgICAgaWYgaW1hZ2Vfcm9yZnM6CisgICAgICAgIGltYWdlX3JvcmZzX2ZvcmNlID0gc2VsZi5kLmdldFZhcignRk9SQ0VfUk9fUkVNT1ZFJywgVHJ1ZSkKKworICAgICAgICBpZiBpbWFnZV9yb3JmcyBvciBpbWFnZV9yb3Jmc19mb3JjZSA9PSAiMSI6CiAgICAgICAgICAgICAjIFJlbW92ZSBjb21wb25lbnRzIHRoYXQgd2UgZG9uJ3QgbmVlZCBpZiBpdCdzIGEgcmVhZC1vbmx5IHJvb3RmcwogICAgICAgICAgICAgdW5uZWVkZWRfcGtncyA9IHNlbGYuZC5nZXRWYXIoIlJPT1RGU19ST19VTk5FRURFRCIsIFRydWUpLnNwbGl0KCkKICAgICAgICAgICAgIHBrZ3NfaW5zdGFsbGVkID0gaW1hZ2VfbGlzdF9pbnN0YWxsZWRfcGFja2FnZXMoc2VsZi5kKQpAQCAtMzYzLDggKzM3NSw4IEBACiAKIAogY2xhc3MgUnBtUm9vdGZzKFJvb3Rmcyk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGQsIG1hbmlmZXN0X2Rpcik6Ci0gICAgICAgIHN1cGVyKFJwbVJvb3Rmcywgc2VsZikuX19pbml0X18oZCkKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZCwgbWFuaWZlc3RfZGlyLCBwcm9ncmVzc19yZXBvcnRlcj1Ob25lKToKKyAgICAgICAgc3VwZXIoUnBtUm9vdGZzLCBzZWxmKS5fX2luaXRfXyhkLCBwcm9ncmVzc19yZXBvcnRlcikKICAgICAgICAgc2VsZi5sb2dfY2hlY2tfcmVnZXggPSAnKHVucGFja2luZyBvZiBhcmNoaXZlIGZhaWxlZHxDYW5ub3QgZmluZCBwYWNrYWdlJ1wKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnfGV4aXQgMXxFUlJPUjogfEVycm9yOiB8RXJyb3IgfEVSUk9SICdcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3xGYWlsZWQgfEZhaWxlZDogfEZhaWxlZCR8RmFpbGVkXChcZCtcKTopJwpAQCAtNDIyLDExICs0MzQsMTcgQEAKIAogICAgICAgICBleGVjdXRlX3ByZV9wb3N0X3Byb2Nlc3Moc2VsZi5kLCBycG1fcHJlX3Byb2Nlc3NfY21kcykKIAorICAgICAgICBpZiBzZWxmLnByb2dyZXNzX3JlcG9ydGVyOgorICAgICAgICAgICAgc2VsZi5wcm9ncmVzc19yZXBvcnRlci5uZXh0X3N0YWdlKCkKKwogICAgICAgICBzZWxmLnBtLmR1bXBfYWxsX2F2YWlsYWJsZV9wa2dzKCkKIAogICAgICAgICBpZiBzZWxmLmluY19ycG1faW1hZ2VfZ2VuID09ICIxIjoKICAgICAgICAgICAgIHNlbGYuX2NyZWF0ZV9pbmNyZW1lbnRhbChwa2dzX3RvX2luc3RhbGwpCiAKKyAgICAgICAgaWYgc2VsZi5wcm9ncmVzc19yZXBvcnRlcjoKKyAgICAgICAgICAgIHNlbGYucHJvZ3Jlc3NfcmVwb3J0ZXIubmV4dF9zdGFnZSgpCisKICAgICAgICAgc2VsZi5wbS51cGRhdGUoKQogCiAgICAgICAgIHBrZ3MgPSBbXQpAQCAtNDM3LDEyICs0NTUsMjQgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcGtncyArPSBwa2dzX3RvX2luc3RhbGxbcGtnX3R5cGVdCiAKKyAgICAgICAgaWYgc2VsZi5wcm9ncmVzc19yZXBvcnRlcjoKKyAgICAgICAgICAgIHNlbGYucHJvZ3Jlc3NfcmVwb3J0ZXIubmV4dF9zdGFnZSgpCisKICAgICAgICAgc2VsZi5wbS5pbnN0YWxsKHBrZ3MpCiAKKyAgICAgICAgaWYgc2VsZi5wcm9ncmVzc19yZXBvcnRlcjoKKyAgICAgICAgICAgIHNlbGYucHJvZ3Jlc3NfcmVwb3J0ZXIubmV4dF9zdGFnZSgpCisKICAgICAgICAgc2VsZi5wbS5pbnN0YWxsKHBrZ3NfYXR0ZW1wdCwgVHJ1ZSkKIAorICAgICAgICBpZiBzZWxmLnByb2dyZXNzX3JlcG9ydGVyOgorICAgICAgICAgICAgc2VsZi5wcm9ncmVzc19yZXBvcnRlci5uZXh0X3N0YWdlKCkKKwogICAgICAgICBzZWxmLnBtLmluc3RhbGxfY29tcGxlbWVudGFyeSgpCiAKKyAgICAgICAgaWYgc2VsZi5wcm9ncmVzc19yZXBvcnRlcjoKKyAgICAgICAgICAgIHNlbGYucHJvZ3Jlc3NfcmVwb3J0ZXIubmV4dF9zdGFnZSgpCisKICAgICAgICAgc2VsZi5fc2V0dXBfZGJnX3Jvb3RmcyhbJy9ldGMvcnBtJywgJy92YXIvbGliL3JwbScsICcvdmFyL2xpYi9zbWFydCddKQogCiAgICAgICAgIGV4ZWN1dGVfcHJlX3Bvc3RfcHJvY2VzcyhzZWxmLmQsIHJwbV9wb3N0X3Byb2Nlc3NfY21kcykKQEAgLTQ1NCw2ICs0ODQsMTAgQEAKIAogICAgICAgICBzZWxmLnBtLnJwbV9zZXR1cF9zbWFydF90YXJnZXRfY29uZmlnKCkKIAorICAgICAgICBpZiBzZWxmLnByb2dyZXNzX3JlcG9ydGVyOgorICAgICAgICAgICAgc2VsZi5wcm9ncmVzc19yZXBvcnRlci5uZXh0X3N0YWdlKCkKKworCiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBfZGVwZW5kc19saXN0KCk6CiAgICAgICAgIHJldHVybiBbJ0RFUExPWV9ESVJfUlBNJywgJ0lOQ19SUE1fSU1BR0VfR0VOJywgJ1JQTV9QUkVQUk9DRVNTX0NPTU1BTkRTJywKQEAgLTQ3NCwzMiArNTA4LDYgQEAKICAgICAgICAgIyBhbHJlYWR5IHNhdmVkIGluIC9ldGMvcnBtLXBvc3RpbnN0cwogICAgICAgICBwYXNzCiAKLSAgICBkZWYgX2xvZ19jaGVja19lcnJvcihzZWxmKToKLSAgICAgICAgciA9IHJlLmNvbXBpbGUoJyh1bnBhY2tpbmcgb2YgYXJjaGl2ZSBmYWlsZWR8Q2Fubm90IGZpbmQgcGFja2FnZXxleGl0IDF8RVJSfEZhaWwpJykKLSAgICAgICAgbG9nX3BhdGggPSBzZWxmLmQuZXhwYW5kKCIke1R9L2xvZy5kb19yb290ZnMiKQotICAgICAgICB3aXRoIG9wZW4obG9nX3BhdGgsICdyJykgYXMgbG9nOgotICAgICAgICAgICAgZm91bmRfZXJyb3IgPSAwCi0gICAgICAgICAgICBtZXNzYWdlID0gIlxuIgotICAgICAgICAgICAgZm9yIGxpbmUgaW4gbG9nLnJlYWQoKS5zcGxpdCgnXG4nKToKLSAgICAgICAgICAgICAgICBpZiAnbG9nX2NoZWNrJyBpbiBsaW5lOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICMgc2ggLXggbWF5IGVtaXQgY29kZSB3aGljaCBpc24ndCBhY3R1YWxseSBleGVjdXRlZAotICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnKycpOgotCQkgICAgY29udGludWUKLQotICAgICAgICAgICAgICAgIG0gPSByLnNlYXJjaChsaW5lKQotICAgICAgICAgICAgICAgIGlmIG06Ci0gICAgICAgICAgICAgICAgICAgIGZvdW5kX2Vycm9yID0gMQotICAgICAgICAgICAgICAgICAgICBiYi53YXJuKCdsb2dfY2hlY2s6IFRoZXJlIHdlcmUgZXJyb3IgbWVzc2FnZXMgaW4gdGhlIGxvZ2ZpbGUnKQotICAgICAgICAgICAgICAgICAgICBiYi53YXJuKCdsb2dfY2hlY2s6IE1hdGNoZWQga2V5d29yZDogWyVzXVxuXG4nICUgbS5ncm91cCgpKQotCi0gICAgICAgICAgICAgICAgaWYgZm91bmRfZXJyb3IgPj0gMSBhbmQgZm91bmRfZXJyb3IgPD0gNToKLSAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSArPSBsaW5lICsgJ1xuJwotICAgICAgICAgICAgICAgICAgICBmb3VuZF9lcnJvciArPSAxCi0KLSAgICAgICAgICAgICAgICBpZiBmb3VuZF9lcnJvciA9PSA2OgotICAgICAgICAgICAgICAgICAgICBiYi5mYXRhbChtZXNzYWdlKQotCiAgICAgZGVmIF9sb2dfY2hlY2soc2VsZik6CiAgICAgICAgIHNlbGYuX2xvZ19jaGVja193YXJuKCkKICAgICAgICAgc2VsZi5fbG9nX2NoZWNrX2Vycm9yKCkKQEAgLTUyNCw4ICs1MzIsOCBAQAogICAgICAgICAgICBiYi51dGlscy5yZW1vdmUoc2VsZi5wbS5pbnN0YWxsX2Rpcl9wYXRoLCBUcnVlKQogCiBjbGFzcyBEcGtnT3BrZ1Jvb3RmcyhSb290ZnMpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkKToKLSAgICAgICAgc3VwZXIoRHBrZ09wa2dSb290ZnMsIHNlbGYpLl9faW5pdF9fKGQpCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGQsIHByb2dyZXNzX3JlcG9ydGVyPU5vbmUpOgorICAgICAgICBzdXBlcihEcGtnT3BrZ1Jvb3Rmcywgc2VsZikuX19pbml0X18oZCwgcHJvZ3Jlc3NfcmVwb3J0ZXIpCiAKICAgICBkZWYgX2dldF9wa2dzX3Bvc3RpbnN0cyhzZWxmLCBzdGF0dXNfZmlsZSk6CiAgICAgICAgIGRlZiBfZ2V0X3BrZ19kZXBlbmRzX2xpc3QocGtnX2RlcGVuZHMpOgpAQCAtNTY1LDcgKzU3Myw3IEBACiAgICAgICAgICAgICAgICAgICAgIHBrZ19kZXBlbmRzID0gbV9kZXBlbmRzLmdyb3VwKDEpCiAKICAgICAgICAgIyByZW1vdmUgcGFja2FnZSBkZXBlbmRlbmNpZXMgbm90IGluIHBvc3RpbnN0cwotICAgICAgICBwa2dfbmFtZXMgPSBwa2dzLmtleXMoKQorICAgICAgICBwa2dfbmFtZXMgPSBsaXN0KHBrZ3Mua2V5cygpKQogICAgICAgICBmb3IgcGtnX25hbWUgaW4gcGtnX25hbWVzOgogICAgICAgICAgICAgZGVwcyA9IHBrZ3NbcGtnX25hbWVdWzpdCiAKQEAgLTU5OCw3ICs2MDYsNyBAQAogICAgICAgICAgICAgcGtncyA9IHNlbGYuX2dldF9wa2dzX3Bvc3RpbnN0cyhzdGF0dXNfZmlsZSkKICAgICAgICAgaWYgcGtnczoKICAgICAgICAgICAgIHJvb3QgPSAiX19wYWNrYWdlZ3JvdXBfcG9zdGluc3RfXyIKLSAgICAgICAgICAgIHBrZ3Nbcm9vdF0gPSBwa2dzLmtleXMoKQorICAgICAgICAgICAgcGtnc1tyb290XSA9IGxpc3QocGtncy5rZXlzKCkpCiAgICAgICAgICAgICBfZGVwX3Jlc29sdmUocGtncywgcm9vdCwgcGtnX2xpc3QsIFtdKQogICAgICAgICAgICAgcGtnX2xpc3QucmVtb3ZlKHJvb3QpCiAKQEAgLTYxOSwxMCArNjI3LDEwIEBACiAgICAgICAgICAgICBudW0gKz0gMQogCiBjbGFzcyBEcGtnUm9vdGZzKERwa2dPcGtnUm9vdGZzKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZCwgbWFuaWZlc3RfZGlyKToKLSAgICAgICAgc3VwZXIoRHBrZ1Jvb3Rmcywgc2VsZikuX19pbml0X18oZCkKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZCwgbWFuaWZlc3RfZGlyLCBwcm9ncmVzc19yZXBvcnRlcj1Ob25lKToKKyAgICAgICAgc3VwZXIoRHBrZ1Jvb3Rmcywgc2VsZikuX19pbml0X18oZCwgcHJvZ3Jlc3NfcmVwb3J0ZXIpCiAgICAgICAgIHNlbGYubG9nX2NoZWNrX3JlZ2V4ID0gJ15FOicKLSAgICAgICAgc2VsZi5sb2dfY2hlY2tfZXhwZWN0ZWRfZXJyb3JzX3JlZ2V4ZXMgPSBcCisgICAgICAgIHNlbGYubG9nX2NoZWNrX2V4cGVjdGVkX3JlZ2V4ZXMgPSBcCiAgICAgICAgIFsKICAgICAgICAgICAgICJeRTogVW5tZXQgZGVwZW5kZW5jaWVzLiIKICAgICAgICAgXQpAQCAtNjQ4LDE1ICs2NTYsMzEgQEAKIAogICAgICAgICBleGVjdXRlX3ByZV9wb3N0X3Byb2Nlc3Moc2VsZi5kLCBkZWJfcHJlX3Byb2Nlc3NfY21kcykKIAorICAgICAgICBpZiBzZWxmLnByb2dyZXNzX3JlcG9ydGVyOgorICAgICAgICAgICAgc2VsZi5wcm9ncmVzc19yZXBvcnRlci5uZXh0X3N0YWdlKCkKKyAgICAgICAgICAgICMgRG9uJ3Qgc3VwcG9ydCBpbmNyZW1lbnRhbCwgc28gc2tpcCB0aGF0CisgICAgICAgICAgICBzZWxmLnByb2dyZXNzX3JlcG9ydGVyLm5leHRfc3RhZ2UoKQorCiAgICAgICAgIHNlbGYucG0udXBkYXRlKCkKIAorICAgICAgICBpZiBzZWxmLnByb2dyZXNzX3JlcG9ydGVyOgorICAgICAgICAgICAgc2VsZi5wcm9ncmVzc19yZXBvcnRlci5uZXh0X3N0YWdlKCkKKwogICAgICAgICBmb3IgcGtnX3R5cGUgaW4gc2VsZi5pbnN0YWxsX29yZGVyOgogICAgICAgICAgICAgaWYgcGtnX3R5cGUgaW4gcGtnc190b19pbnN0YWxsOgogICAgICAgICAgICAgICAgIHNlbGYucG0uaW5zdGFsbChwa2dzX3RvX2luc3RhbGxbcGtnX3R5cGVdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbRmFsc2UsIFRydWVdW3BrZ190eXBlID09IE1hbmlmZXN0LlBLR19UWVBFX0FUVEVNUFRfT05MWV0pCiAKKyAgICAgICAgaWYgc2VsZi5wcm9ncmVzc19yZXBvcnRlcjoKKyAgICAgICAgICAgICMgRG9uJ3Qgc3VwcG9ydCBhdHRlbXB0b25seSwgc28gc2tpcCB0aGF0CisgICAgICAgICAgICBzZWxmLnByb2dyZXNzX3JlcG9ydGVyLm5leHRfc3RhZ2UoKQorICAgICAgICAgICAgc2VsZi5wcm9ncmVzc19yZXBvcnRlci5uZXh0X3N0YWdlKCkKKwogICAgICAgICBzZWxmLnBtLmluc3RhbGxfY29tcGxlbWVudGFyeSgpCiAKKyAgICAgICAgaWYgc2VsZi5wcm9ncmVzc19yZXBvcnRlcjoKKyAgICAgICAgICAgIHNlbGYucHJvZ3Jlc3NfcmVwb3J0ZXIubmV4dF9zdGFnZSgpCisKICAgICAgICAgc2VsZi5fc2V0dXBfZGJnX3Jvb3RmcyhbJy92YXIvbGliL2Rwa2cnXSkKIAogICAgICAgICBzZWxmLnBtLmZpeF9icm9rZW5fZGVwZW5kZW5jaWVzKCkKQEAgLTY2Nyw2ICs2OTEsOSBAQAogCiAgICAgICAgIGV4ZWN1dGVfcHJlX3Bvc3RfcHJvY2VzcyhzZWxmLmQsIGRlYl9wb3N0X3Byb2Nlc3NfY21kcykKIAorICAgICAgICBpZiBzZWxmLnByb2dyZXNzX3JlcG9ydGVyOgorICAgICAgICAgICAgc2VsZi5wcm9ncmVzc19yZXBvcnRlci5uZXh0X3N0YWdlKCkKKwogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgX2RlcGVuZHNfbGlzdCgpOgogICAgICAgICByZXR1cm4gWydERVBMT1lfRElSX0RFQicsICdERUJfU0RLX0FSQ0gnLCAnQVBUQ09ORl9UQVJHRVQnLCAnQVBUX0FSR1MnLCAnRFBLR19BUkNIJywgJ0RFQl9QUkVQUk9DRVNTX0NPTU1BTkRTJywgJ0RFQl9QT1NUUFJPQ0VTU19DT01NQU5EUyddCkBAIC02OTIsOCArNzE5LDggQEAKIAogCiBjbGFzcyBPcGtnUm9vdGZzKERwa2dPcGtnUm9vdGZzKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZCwgbWFuaWZlc3RfZGlyKToKLSAgICAgICAgc3VwZXIoT3BrZ1Jvb3Rmcywgc2VsZikuX19pbml0X18oZCkKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZCwgbWFuaWZlc3RfZGlyLCBwcm9ncmVzc19yZXBvcnRlcj1Ob25lKToKKyAgICAgICAgc3VwZXIoT3BrZ1Jvb3Rmcywgc2VsZikuX19pbml0X18oZCwgcHJvZ3Jlc3NfcmVwb3J0ZXIpCiAgICAgICAgIHNlbGYubG9nX2NoZWNrX3JlZ2V4ID0gJyhleGl0IDF8Q29sbGVjdGVkIGVycm9ycyknCiAKICAgICAgICAgc2VsZi5tYW5pZmVzdCA9IE9wa2dNYW5pZmVzdChkLCBtYW5pZmVzdF9kaXIpCkBAIC04ODcsMTMgKzkxNCwyNCBAQAogCiAgICAgICAgIGV4ZWN1dGVfcHJlX3Bvc3RfcHJvY2VzcyhzZWxmLmQsIG9wa2dfcHJlX3Byb2Nlc3NfY21kcykKIAorICAgICAgICBpZiBzZWxmLnByb2dyZXNzX3JlcG9ydGVyOgorICAgICAgICAgICAgc2VsZi5wcm9ncmVzc19yZXBvcnRlci5uZXh0X3N0YWdlKCkKKyAgICAgICAgICAgICMgU3RlcHMgYXJlIGEgYml0IGRpZmZlcmVudCBpbiBvcmRlciwgc2tpcCBuZXh0CisgICAgICAgICAgICBzZWxmLnByb2dyZXNzX3JlcG9ydGVyLm5leHRfc3RhZ2UoKQorCiAgICAgICAgIHNlbGYucG0udXBkYXRlKCkKIAogICAgICAgICBzZWxmLnBtLmhhbmRsZV9iYWRfcmVjb21tZW5kYXRpb25zKCkKIAorICAgICAgICBpZiBzZWxmLnByb2dyZXNzX3JlcG9ydGVyOgorICAgICAgICAgICAgc2VsZi5wcm9ncmVzc19yZXBvcnRlci5uZXh0X3N0YWdlKCkKKwogICAgICAgICBpZiBzZWxmLmluY19vcGtnX2ltYWdlX2dlbiA9PSAiMSI6CiAgICAgICAgICAgICBzZWxmLl9yZW1vdmVfZXh0cmFfcGFja2FnZXMocGtnc190b19pbnN0YWxsKQogCisgICAgICAgIGlmIHNlbGYucHJvZ3Jlc3NfcmVwb3J0ZXI6CisgICAgICAgICAgICBzZWxmLnByb2dyZXNzX3JlcG9ydGVyLm5leHRfc3RhZ2UoKQorCiAgICAgICAgIGZvciBwa2dfdHlwZSBpbiBzZWxmLmluc3RhbGxfb3JkZXI6CiAgICAgICAgICAgICBpZiBwa2dfdHlwZSBpbiBwa2dzX3RvX2luc3RhbGw6CiAgICAgICAgICAgICAgICAgIyBGb3IgbXVsdGlsaWIsIHdlIHBlcmZvcm0gYSBzYW5pdHkgdGVzdCBiZWZvcmUgZmluYWwgaW5zdGFsbApAQCAtOTA1LDE1ICs5NDMsMjQgQEAKICAgICAgICAgICAgICAgICBzZWxmLnBtLmluc3RhbGwocGtnc190b19pbnN0YWxsW3BrZ190eXBlXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0ZhbHNlLCBUcnVlXVtwa2dfdHlwZSA9PSBNYW5pZmVzdC5QS0dfVFlQRV9BVFRFTVBUX09OTFldKQogCisgICAgICAgIGlmIHNlbGYucHJvZ3Jlc3NfcmVwb3J0ZXI6CisgICAgICAgICAgICBzZWxmLnByb2dyZXNzX3JlcG9ydGVyLm5leHRfc3RhZ2UoKQorCiAgICAgICAgIHNlbGYucG0uaW5zdGFsbF9jb21wbGVtZW50YXJ5KCkKIAotICAgICAgICBzZWxmLl9zZXR1cF9kYmdfcm9vdGZzKFsnL3Zhci9saWIvb3BrZyddKQorICAgICAgICBpZiBzZWxmLnByb2dyZXNzX3JlcG9ydGVyOgorICAgICAgICAgICAgc2VsZi5wcm9ncmVzc19yZXBvcnRlci5uZXh0X3N0YWdlKCkKKworICAgICAgICBzZWxmLl9zZXR1cF9kYmdfcm9vdGZzKFsnL2V0YycsICcvdmFyL2xpYi9vcGtnJywgJy91c3IvbGliL3NzbCddKQogCiAgICAgICAgIGV4ZWN1dGVfcHJlX3Bvc3RfcHJvY2VzcyhzZWxmLmQsIG9wa2dfcG9zdF9wcm9jZXNzX2NtZHMpCiAKICAgICAgICAgaWYgc2VsZi5pbmNfb3BrZ19pbWFnZV9nZW4gPT0gIjEiOgogICAgICAgICAgICAgc2VsZi5wbS5iYWNrdXBfcGFja2FnaW5nX2RhdGEoKQogCisgICAgICAgIGlmIHNlbGYucHJvZ3Jlc3NfcmVwb3J0ZXI6CisgICAgICAgICAgICBzZWxmLnByb2dyZXNzX3JlcG9ydGVyLm5leHRfc3RhZ2UoKQorCiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBfZGVwZW5kc19saXN0KCk6CiAgICAgICAgIHJldHVybiBbJ0lQS0dDT05GX1NESycsICdJUEtfRkVFRF9VUklTJywgJ0RFUExPWV9ESVJfSVBLJywgJ0lQS0dDT05GX1RBUkdFVCcsICdJTkNfSVBLX0lNQUdFX0dFTicsICdPUEtHX0FSR1MnLCAnT1BLR0xJQkRJUicsICdPUEtHX1BSRVBST0NFU1NfQ09NTUFORFMnLCAnT1BLR19QT1NUUFJPQ0VTU19DT01NQU5EUycsICdPUEtHTElCRElSJ10KQEAgLTk0OSwxNiArOTk2LDE2IEBACiAgICAgY2xzID0gZ2V0X2NsYXNzX2Zvcl90eXBlKGltZ190eXBlKQogICAgIHJldHVybiBjbHMuX2RlcGVuZHNfbGlzdCgpCiAKLWRlZiBjcmVhdGVfcm9vdGZzKGQsIG1hbmlmZXN0X2Rpcj1Ob25lKToKK2RlZiBjcmVhdGVfcm9vdGZzKGQsIG1hbmlmZXN0X2Rpcj1Ob25lLCBwcm9ncmVzc19yZXBvcnRlcj1Ob25lKToKICAgICBlbnZfYmtwID0gb3MuZW52aXJvbi5jb3B5KCkKIAogICAgIGltZ190eXBlID0gZC5nZXRWYXIoJ0lNQUdFX1BLR1RZUEUnLCBUcnVlKQogICAgIGlmIGltZ190eXBlID09ICJycG0iOgotICAgICAgICBScG1Sb290ZnMoZCwgbWFuaWZlc3RfZGlyKS5jcmVhdGUoKQorICAgICAgICBScG1Sb290ZnMoZCwgbWFuaWZlc3RfZGlyLCBwcm9ncmVzc19yZXBvcnRlcikuY3JlYXRlKCkKICAgICBlbGlmIGltZ190eXBlID09ICJpcGsiOgotICAgICAgICBPcGtnUm9vdGZzKGQsIG1hbmlmZXN0X2RpcikuY3JlYXRlKCkKKyAgICAgICAgT3BrZ1Jvb3RmcyhkLCBtYW5pZmVzdF9kaXIsIHByb2dyZXNzX3JlcG9ydGVyKS5jcmVhdGUoKQogICAgIGVsaWYgaW1nX3R5cGUgPT0gImRlYiI6Ci0gICAgICAgIERwa2dSb290ZnMoZCwgbWFuaWZlc3RfZGlyKS5jcmVhdGUoKQorICAgICAgICBEcGtnUm9vdGZzKGQsIG1hbmlmZXN0X2RpciwgcHJvZ3Jlc3NfcmVwb3J0ZXIpLmNyZWF0ZSgpCiAKICAgICBvcy5lbnZpcm9uLmNsZWFyKCkKICAgICBvcy5lbnZpcm9uLnVwZGF0ZShlbnZfYmtwKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3Nkay5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9zZGsucHkKaW5kZXggZjE1ZmJkYi4uYzc0NTI1ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3Nkay5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2Uvc2RrLnB5CkBAIC04LDkgKzgsNyBAQAogaW1wb3J0IHRyYWNlYmFjawogCiAKLWNsYXNzIFNkayhvYmplY3QpOgotICAgIF9fbWV0YWNsYXNzX18gPSBBQkNNZXRhCi0KK2NsYXNzIFNkayhvYmplY3QsIG1ldGFjbGFzcz1BQkNNZXRhKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgZCwgbWFuaWZlc3RfZGlyKToKICAgICAgICAgc2VsZi5kID0gZAogICAgICAgICBzZWxmLnNka19vdXRwdXQgPSBzZWxmLmQuZ2V0VmFyKCdTREtfT1VUUFVUJywgVHJ1ZSkKQEAgLTE1NSwxNCArMTUzLDE2IEBACiAKICAgICAgICAgZXhlY3V0ZV9wcmVfcG9zdF9wcm9jZXNzKHNlbGYuZCwgc2VsZi5kLmdldFZhcigiUE9QVUxBVEVfU0RLX1BPU1RfVEFSR0VUX0NPTU1BTkQiLCBUcnVlKSkKIAotICAgICAgICBzZWxmLnRhcmdldF9wbS5yZW1vdmVfcGFja2FnaW5nX2RhdGEoKQorICAgICAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMoIlNES0lNQUdFX0ZFQVRVUkVTIiwgInBhY2thZ2UtbWFuYWdlbWVudCIsIFRydWUsIEZhbHNlLCBzZWxmLmQpOgorICAgICAgICAgICAgc2VsZi50YXJnZXRfcG0ucmVtb3ZlX3BhY2thZ2luZ19kYXRhKCkKIAogICAgICAgICBiYi5ub3RlKCJJbnN0YWxsaW5nIE5BVElWRVNESyBwYWNrYWdlcyIpCiAgICAgICAgIHNlbGYuX3BvcHVsYXRlX3N5c3Jvb3Qoc2VsZi5ob3N0X3BtLCBzZWxmLmhvc3RfbWFuaWZlc3QpCiAKICAgICAgICAgZXhlY3V0ZV9wcmVfcG9zdF9wcm9jZXNzKHNlbGYuZCwgc2VsZi5kLmdldFZhcigiUE9QVUxBVEVfU0RLX1BPU1RfSE9TVF9DT01NQU5EIiwgVHJ1ZSkpCiAKLSAgICAgICAgc2VsZi5ob3N0X3BtLnJlbW92ZV9wYWNrYWdpbmdfZGF0YSgpCisgICAgICAgIGlmIG5vdCBiYi51dGlscy5jb250YWlucygiU0RLSU1BR0VfRkVBVFVSRVMiLCAicGFja2FnZS1tYW5hZ2VtZW50IiwgVHJ1ZSwgRmFsc2UsIHNlbGYuZCk6CisgICAgICAgICAgICBzZWxmLmhvc3RfcG0ucmVtb3ZlX3BhY2thZ2luZ19kYXRhKCkKIAogICAgICAgICAjIE1vdmUgaG9zdCBSUE0gbGlicmFyeSBkYXRhCiAgICAgICAgIG5hdGl2ZV9ycG1fc3RhdGVfZGlyID0gb3MucGF0aC5qb2luKHNlbGYuc2RrX291dHB1dCwKQEAgLTIzMiwxNCArMjMyLDE2IEBACiAKICAgICAgICAgZXhlY3V0ZV9wcmVfcG9zdF9wcm9jZXNzKHNlbGYuZCwgc2VsZi5kLmdldFZhcigiUE9QVUxBVEVfU0RLX1BPU1RfVEFSR0VUX0NPTU1BTkQiLCBUcnVlKSkKIAotICAgICAgICBzZWxmLnRhcmdldF9wbS5yZW1vdmVfcGFja2FnaW5nX2RhdGEoKQorICAgICAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMoIlNES0lNQUdFX0ZFQVRVUkVTIiwgInBhY2thZ2UtbWFuYWdlbWVudCIsIFRydWUsIEZhbHNlLCBzZWxmLmQpOgorICAgICAgICAgICAgc2VsZi50YXJnZXRfcG0ucmVtb3ZlX3BhY2thZ2luZ19kYXRhKCkKIAogICAgICAgICBiYi5ub3RlKCJJbnN0YWxsaW5nIE5BVElWRVNESyBwYWNrYWdlcyIpCiAgICAgICAgIHNlbGYuX3BvcHVsYXRlX3N5c3Jvb3Qoc2VsZi5ob3N0X3BtLCBzZWxmLmhvc3RfbWFuaWZlc3QpCiAKICAgICAgICAgZXhlY3V0ZV9wcmVfcG9zdF9wcm9jZXNzKHNlbGYuZCwgc2VsZi5kLmdldFZhcigiUE9QVUxBVEVfU0RLX1BPU1RfSE9TVF9DT01NQU5EIiwgVHJ1ZSkpCiAKLSAgICAgICAgc2VsZi5ob3N0X3BtLnJlbW92ZV9wYWNrYWdpbmdfZGF0YSgpCisgICAgICAgIGlmIG5vdCBiYi51dGlscy5jb250YWlucygiU0RLSU1BR0VfRkVBVFVSRVMiLCAicGFja2FnZS1tYW5hZ2VtZW50IiwgVHJ1ZSwgRmFsc2UsIHNlbGYuZCk6CisgICAgICAgICAgICBzZWxmLmhvc3RfcG0ucmVtb3ZlX3BhY2thZ2luZ19kYXRhKCkKIAogICAgICAgICB0YXJnZXRfc3lzY29uZmRpciA9IG9zLnBhdGguam9pbihzZWxmLnNka190YXJnZXRfc3lzcm9vdCwgc2VsZi5zeXNjb25mZGlyKQogICAgICAgICBob3N0X3N5c2NvbmZkaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi5zZGtfaG9zdF9zeXNyb290LCBzZWxmLnN5c2NvbmZkaXIpCkBAIC0yNDcsMTIgKzI0OSwxMiBAQAogICAgICAgICBzZWxmLm1rZGlyaGllcih0YXJnZXRfc3lzY29uZmRpcikKICAgICAgICAgc2h1dGlsLmNvcHkoc2VsZi50YXJnZXRfY29uZiwgdGFyZ2V0X3N5c2NvbmZkaXIpCiAgICAgICAgIG9zLmNobW9kKG9zLnBhdGguam9pbih0YXJnZXRfc3lzY29uZmRpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguYmFzZW5hbWUoc2VsZi50YXJnZXRfY29uZikpLCAwNjQ0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5iYXNlbmFtZShzZWxmLnRhcmdldF9jb25mKSksIDBvNjQ0KQogCiAgICAgICAgIHNlbGYubWtkaXJoaWVyKGhvc3Rfc3lzY29uZmRpcikKICAgICAgICAgc2h1dGlsLmNvcHkoc2VsZi5ob3N0X2NvbmYsIGhvc3Rfc3lzY29uZmRpcikKICAgICAgICAgb3MuY2htb2Qob3MucGF0aC5qb2luKGhvc3Rfc3lzY29uZmRpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguYmFzZW5hbWUoc2VsZi5ob3N0X2NvbmYpKSwgMDY0NCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguYmFzZW5hbWUoc2VsZi5ob3N0X2NvbmYpKSwgMG82NDQpCiAKICAgICAgICAgbmF0aXZlX29wa2dfc3RhdGVfZGlyID0gb3MucGF0aC5qb2luKHNlbGYuc2RrX291dHB1dCwgc2VsZi5zZGtfbmF0aXZlX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmQuZ2V0VmFyKCdsb2NhbHN0YXRlZGlyX25hdGl2ZXNkaycsIFRydWUpLnN0cmlwKCcvJyksCkBAIC0zMTQsNiArMzE2LDkgQEAKIAogICAgICAgICBzZWxmLl9jb3B5X2FwdF9kaXJfdG8ob3MucGF0aC5qb2luKHNlbGYuc2RrX3RhcmdldF9zeXNyb290LCAiZXRjIiwgImFwdCIpKQogCisgICAgICAgIGlmIG5vdCBiYi51dGlscy5jb250YWlucygiU0RLSU1BR0VfRkVBVFVSRVMiLCAicGFja2FnZS1tYW5hZ2VtZW50IiwgVHJ1ZSwgRmFsc2UsIHNlbGYuZCk6CisgICAgICAgICAgICBzZWxmLnRhcmdldF9wbS5yZW1vdmVfcGFja2FnaW5nX2RhdGEoKQorCiAgICAgICAgIGJiLm5vdGUoIkluc3RhbGxpbmcgTkFUSVZFU0RLIHBhY2thZ2VzIikKICAgICAgICAgc2VsZi5fcG9wdWxhdGVfc3lzcm9vdChzZWxmLmhvc3RfcG0sIHNlbGYuaG9zdF9tYW5pZmVzdCkKIApAQCAtMzIyLDYgKzMyNyw5IEBACiAgICAgICAgIHNlbGYuX2NvcHlfYXB0X2Rpcl90byhvcy5wYXRoLmpvaW4oc2VsZi5zZGtfb3V0cHV0LCBzZWxmLnNka19uYXRpdmVfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXRjIiwgImFwdCIpKQogCisgICAgICAgIGlmIG5vdCBiYi51dGlscy5jb250YWlucygiU0RLSU1BR0VfRkVBVFVSRVMiLCAicGFja2FnZS1tYW5hZ2VtZW50IiwgVHJ1ZSwgRmFsc2UsIHNlbGYuZCk6CisgICAgICAgICAgICBzZWxmLmhvc3RfcG0ucmVtb3ZlX3BhY2thZ2luZ19kYXRhKCkKKwogICAgICAgICBuYXRpdmVfZHBrZ19zdGF0ZV9kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi5zZGtfb3V0cHV0LCBzZWxmLnNka19uYXRpdmVfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YXIiLCAibGliIiwgImRwa2ciKQogICAgICAgICBzZWxmLm1rZGlyaGllcihuYXRpdmVfZHBrZ19zdGF0ZV9kaXIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2Uvc3N0YXRlc2lnLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3NzdGF0ZXNpZy5weQppbmRleCAwMWRjZTY2Li44MjI0ZTNhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2Uvc3N0YXRlc2lnLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9zc3RhdGVzaWcucHkKQEAgLTEzMCw3ICsxMzAsOSBAQAogICAgICAgICBzdXBlcihiYi5zaWdnZW4uU2lnbmF0dXJlR2VuZXJhdG9yQmFzaWNIYXNoLCBzZWxmKS5zZXRfdGFza2RhdGEoY29yZWRhdGEpCiAKICAgICBkZWYgZHVtcF9zaWdzKHNlbGYsIGRhdGFDYWNoZSwgb3B0aW9ucyk6Ci0gICAgICAgIHNlbGYuZHVtcF9sb2NrZWRzaWdzKCkKKyAgICAgICAgc2lnZmlsZSA9IG9zLmdldGN3ZCgpICsgIi9sb2NrZWQtc2lncy5pbmMiCisgICAgICAgIGJiLnBsYWluKCJXcml0aW5nIGxvY2tlZCBzaWdzIHRvICVzIiAlIHNpZ2ZpbGUpCisgICAgICAgIHNlbGYuZHVtcF9sb2NrZWRzaWdzKHNpZ2ZpbGUpCiAgICAgICAgIHJldHVybiBzdXBlcihiYi5zaWdnZW4uU2lnbmF0dXJlR2VuZXJhdG9yQmFzaWNIYXNoLCBzZWxmKS5kdW1wX3NpZ3MoZGF0YUNhY2hlLCBvcHRpb25zKQogCiAgICAgZGVmIGdldF90YXNraGFzaChzZWxmLCBmbiwgdGFzaywgZGVwcywgZGF0YUNhY2hlKToKQEAgLTE4MSwxMSArMTgzLDcgQEAKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBzdXBlcihiYi5zaWdnZW4uU2lnbmF0dXJlR2VuZXJhdG9yQmFzaWNIYXNoLCBzZWxmKS5kdW1wX3NpZ3Rhc2soZm4sIHRhc2ssIHN0YW1wYmFzZSwgcnVudGltZSkKIAotICAgIGRlZiBkdW1wX2xvY2tlZHNpZ3Moc2VsZiwgc2lnZmlsZT1Ob25lLCB0YXNrZmlsdGVyPU5vbmUpOgotICAgICAgICBpZiBub3Qgc2lnZmlsZToKLSAgICAgICAgICAgIHNpZ2ZpbGUgPSBvcy5nZXRjd2QoKSArICIvbG9ja2VkLXNpZ3MuaW5jIgotCi0gICAgICAgIGJiLnBsYWluKCJXcml0aW5nIGxvY2tlZCBzaWdzIHRvICVzIiAlIHNpZ2ZpbGUpCisgICAgZGVmIGR1bXBfbG9ja2Vkc2lncyhzZWxmLCBzaWdmaWxlLCB0YXNrZmlsdGVyPU5vbmUpOgogICAgICAgICB0eXBlcyA9IHt9CiAgICAgICAgIGZvciBrIGluIHNlbGYucnVudGFza2RlcHM6CiAgICAgICAgICAgICBpZiB0YXNrZmlsdGVyOgpAQCAtMjEwLDcgKzIwOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCIgICAgIiArIHNlbGYubG9ja2VkcG5tYXBbZm5dICsgIjoiICsgdGFzayArICI6IiArIHNlbGYudGFza2hhc2hba10gKyAiIFxcXG4iKQogICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAiXG4nKQotICAgICAgICAgICAgZi53cml0ZSgnU0lHR0VOX0xPQ0tFRFNJR1NfVFlQRVNfJXMgPSAiJXMiJyAlIChzZWxmLm1hY2hpbmUsICIgIi5qb2luKHR5cGVzLmtleXMoKSkpKQorICAgICAgICAgICAgZi53cml0ZSgnU0lHR0VOX0xPQ0tFRFNJR1NfVFlQRVNfJXMgPSAiJXMiJyAlIChzZWxmLm1hY2hpbmUsICIgIi5qb2luKGxpc3QodHlwZXMua2V5cygpKSkpKQogCiAgICAgZGVmIGNoZWNraGFzaGVzKHNlbGYsIG1pc3NlZCwgcmV0LCBzcV9mbiwgc3FfdGFzaywgc3FfaGFzaCwgc3FfaGFzaGZuLCBkKToKICAgICAgICAgd2Fybl9tc2dzID0gW10KQEAgLTIyMCw3ICsyMTgsNyBAQAogICAgICAgICBmb3IgdGFzayBpbiByYW5nZShsZW4oc3FfZm4pKToKICAgICAgICAgICAgIGlmIHRhc2sgbm90IGluIHJldDoKICAgICAgICAgICAgICAgICBmb3IgcG4gaW4gc2VsZi5sb2NrZWRzaWdzOgotICAgICAgICAgICAgICAgICAgICBpZiBzcV9oYXNoW3Rhc2tdIGluIHNlbGYubG9ja2Vkc2lnc1twbl0uaXRlcnZhbHVlcygpOgorICAgICAgICAgICAgICAgICAgICBpZiBzcV9oYXNoW3Rhc2tdIGluIGl0ZXIoc2VsZi5sb2NrZWRzaWdzW3BuXS52YWx1ZXMoKSk6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzcV90YXNrW3Rhc2tdID09ICdkb19zaGFyZWRfd29ya2Rpcic6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgICAgIHNzdGF0ZV9taXNzaW5nX21zZ3MuYXBwZW5kKCJMb2NrZWQgc2lnIGlzIHNldCBmb3IgJXM6JXMgKCVzKSB5ZXQgbm90IGluIHNzdGF0ZSBjYWNoZT8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvdGVybWluYWwucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvdGVybWluYWwucHkKaW5kZXggNjM0ZGFhOS4uMzkwMWFkMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3Rlcm1pbmFsLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS90ZXJtaW5hbC5weQpAQCAtMjUsOSArMjUsNyBAQAogICAgICAgICByZXR1cm4gYm9vbChjbHMuY29tbWFuZCkKIAogCi1jbGFzcyBUZXJtaW5hbChQb3Blbik6Ci0gICAgX19tZXRhY2xhc3NfXyA9IFJlZ2lzdHJ5Ci0KK2NsYXNzIFRlcm1pbmFsKFBvcGVuLCBtZXRhY2xhc3M9UmVnaXN0cnkpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzaF9jbWQsIHRpdGxlPU5vbmUsIGVudj1Ob25lLCBkPU5vbmUpOgogICAgICAgICBmbXRfc2hfY21kID0gc2VsZi5mb3JtYXRfY29tbWFuZChzaF9jbWQsIHRpdGxlKQogICAgICAgICB0cnk6CkBAIC00MSw3ICszOSw3IEBACiAKICAgICBkZWYgZm9ybWF0X2NvbW1hbmQoc2VsZiwgc2hfY21kLCB0aXRsZSk6CiAgICAgICAgIGZtdCA9IHsndGl0bGUnOiB0aXRsZSBvciAnVGVybWluYWwnLCAnY29tbWFuZCc6IHNoX2NtZH0KLSAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLmNvbW1hbmQsIGJhc2VzdHJpbmcpOgorICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYuY29tbWFuZCwgc3RyKToKICAgICAgICAgICAgIHJldHVybiBzaGxleC5zcGxpdChzZWxmLmNvbW1hbmQuZm9ybWF0KCoqZm10KSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBbZWxlbWVudC5mb3JtYXQoKipmbXQpIGZvciBlbGVtZW50IGluIHNlbGYuY29tbWFuZF0KQEAgLTUzLDcgKzUxLDcgQEAKICAgICAgICAgICAgIHJhaXNlIFVuc3VwcG9ydGVkVGVybWluYWwoc2VsZi5uYW1lKQogCiBjbGFzcyBHbm9tZShYVGVybWluYWwpOgotICAgIGNvbW1hbmQgPSAnZ25vbWUtdGVybWluYWwgLXQgInt0aXRsZX0iIC0tZGlzYWJsZS1mYWN0b3J5IC14IHtjb21tYW5kfScKKyAgICBjb21tYW5kID0gJ2dub21lLXRlcm1pbmFsIC10ICJ7dGl0bGV9IiAteCB7Y29tbWFuZH0nCiAgICAgcHJpb3JpdHkgPSAyCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgc2hfY21kLCB0aXRsZT1Ob25lLCBlbnY9Tm9uZSwgZD1Ob25lKToKQEAgLTYzLDEyICs2MSwyOCBAQAogICAgICAgICAjIE9uY2UgZml4ZWQgb24gdGhlIGdub21lLXRlcm1pbmFsIHByb2plY3QsIHRoaXMgc2hvdWxkIGJlIHJlbW92ZWQuCiAgICAgICAgIGlmIG9zLmdldGVudignTENfQUxMJyk6IG9zLnB1dGVudignTENfQUxMJywnJykKIAotICAgICAgICAjIENoZWNrIHZlcnNpb24KLSAgICAgICAgdmVybnVtID0gY2hlY2tfdGVybWluYWxfdmVyc2lvbigiZ25vbWUtdGVybWluYWwiKQotICAgICAgICBpZiB2ZXJudW0gYW5kIExvb3NlVmVyc2lvbih2ZXJudW0pID49ICczLjEwJzoKLSAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAnR25vbWUtVGVybWluYWwgMy4xMCBvciBsYXRlciBkb2VzIG5vdCBzdXBwb3J0IC0tZGlzYWJsZS1mYWN0b3J5JykKLSAgICAgICAgICAgIHNlbGYuY29tbWFuZCA9ICdnbm9tZS10ZXJtaW5hbCAtdCAie3RpdGxlfSIgLXgge2NvbW1hbmR9JwotICAgICAgICBYVGVybWluYWwuX19pbml0X18oc2VsZiwgc2hfY21kLCB0aXRsZSwgZW52LCBkKQorICAgICAgICAjIFdlIG5lZWQgdG8ga25vdyB3aGVuIHRoZSBjb21tYW5kIGNvbXBsZXRlcyBidXQgZ25vbWUtdGVybWluYWwgZ2l2ZXMgdXMgbm8gd2F5IAorICAgICAgICAjIHRvIGRvIHRoaXMuIFdlIHRoZXJlZm9yZSB3cml0ZSB0aGUgcGlkIHRvIGEgZmlsZSB1c2luZyBhICJwaG9uZWhvbWUiIHdyYXBwZXIKKyAgICAgICAgIyBzY3JpcHQsIHRoZW4gbW9uaXRvciB0aGUgcGlkIHVudGlsIGl0IGV4aXRzLiBUaGFua3MgZ25vbWUhCisgICAgICAgIGltcG9ydCB0ZW1wZmlsZQorICAgICAgICBwaWRmaWxlID0gdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKGRlbGV0ZSA9IEZhbHNlKS5uYW1lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNoX2NtZCA9ICJvZS1nbm9tZS10ZXJtaW5hbC1waG9uZWhvbWUgIiArIHBpZGZpbGUgKyAiICIgKyBzaF9jbWQKKyAgICAgICAgICAgIFhUZXJtaW5hbC5fX2luaXRfXyhzZWxmLCBzaF9jbWQsIHRpdGxlLCBlbnYsIGQpCisgICAgICAgICAgICB3aGlsZSBvcy5zdGF0KHBpZGZpbGUpLnN0X3NpemUgPD0gMDoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgd2l0aCBvcGVuKHBpZGZpbGUsICJyIikgYXMgZjoKKyAgICAgICAgICAgICAgICBwaWQgPSBpbnQoZi5yZWFkbGluZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MudW5saW5rKHBpZGZpbGUpCisKKyAgICAgICAgaW1wb3J0IHRpbWUKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvcy5raWxsKHBpZCwgMCkKKyAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMSkKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgcmV0dXJuCiAKIGNsYXNzIE1hdGUoWFRlcm1pbmFsKToKICAgICBjb21tYW5kID0gJ21hdGUtdGVybWluYWwgLXQgInt0aXRsZX0iIC14IHtjb21tYW5kfScKQEAgLTI0OCw3ICsyNjIsNyBAQAogICAgICAgICBuZXdlbnZbIkxBTkciXSA9ICJDIgogICAgICAgICBwID0gc3ViLlBvcGVuKFsnc2gnLCAnLWMnLCBjbWR2ZXJzaW9uXSwgc3Rkb3V0PXN1Yi5QSVBFLCBzdGRlcnI9c3ViLlBJUEUsIGVudj1uZXdlbnYpCiAgICAgICAgIG91dCwgZXJyID0gcC5jb21tdW5pY2F0ZSgpCi0gICAgICAgIHZlcl9pbmZvID0gb3V0LnJzdHJpcCgpLnNwbGl0KCdcbicpCisgICAgICAgIHZlcl9pbmZvID0gb3V0LmRlY29kZSgpLnJzdHJpcCgpLnNwbGl0KCdcbicpCiAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgogICAgICAgICBpbXBvcnQgZXJybm8KICAgICAgICAgaWYgZXhjLmVycm5vID09IGVycm5vLkVOT0VOVDoKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS90ZXN0cy90ZXN0X2VsZi5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS90ZXN0cy90ZXN0X2VsZi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjU5MDM3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3Rlc3RzL3Rlc3RfZWxmLnB5CkBAIC0wLDAgKzEsMjEgQEAKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IG9lLnFhCisKK2NsYXNzIFRlc3RFbGYodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X21hY2hpbmVfbmFtZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgZWxmX21hY2hpbmVfdG9fc3RyaW5nKCkKKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKDB4MDIpLCAiU1BBUkMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9lLnFhLmVsZl9tYWNoaW5lX3RvX3N0cmluZygweDAzKSwgIng4NiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKDB4MDgpLCAiTUlQUyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKDB4MTQpLCAiUG93ZXJQQyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKDB4MjgpLCAiQVJNIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcoMHgyQSksICJTdXBlckgiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9lLnFhLmVsZl9tYWNoaW5lX3RvX3N0cmluZygweDMyKSwgIklBLTY0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcoMHgzRSksICJ4ODYtNjQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9lLnFhLmVsZl9tYWNoaW5lX3RvX3N0cmluZygweEI3KSwgIkFBcmNoNjQiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKDB4MDApLCAiVW5rbm93biAoMCkiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9lLnFhLmVsZl9tYWNoaW5lX3RvX3N0cmluZygweERFQURCRUVGKSwgIlVua25vd24gKDM3MzU5Mjg1NTkpIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcoImZvb2JhciIpLCAiVW5rbm93biAoJ2Zvb2JhcicpIikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS90ZXN0cy90ZXN0X3BhdGgucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvdGVzdHMvdGVzdF9wYXRoLnB5CmluZGV4IDNkNDFjZTEuLjQ0ZDA2ODEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS90ZXN0cy90ZXN0X3BhdGgucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3Rlc3RzL3Rlc3RfcGF0aC5weQpAQCAtNTUsNyArNTUsNyBAQAogICAgICAgICBmb3IgZCBpbiBzZWxmLkRJUlM6CiAgICAgICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oc2VsZi5yb290LCBkKSkKICAgICAgICAgZm9yIGYgaW4gc2VsZi5GSUxFUzoKLSAgICAgICAgICAgIGZpbGUob3MucGF0aC5qb2luKHNlbGYucm9vdCwgZiksICJ3IikKKyAgICAgICAgICAgIG9wZW4ob3MucGF0aC5qb2luKHNlbGYucm9vdCwgZiksICJ3IikKICAgICAgICAgZm9yIGwgaW4gc2VsZi5MSU5LUzoKICAgICAgICAgICAgIG9zLnN5bWxpbmsobFsxXSwgb3MucGF0aC5qb2luKHNlbGYucm9vdCwgbFswXSkpCiAKQEAgLTg1LDUgKzg1LDUgQEAKIAogICAgIGRlZiB0ZXN0X2xvb3Aoc2VsZik6CiAgICAgICAgIGZvciBlIGluIHNlbGYuRVhDRVBUSU9OUzoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXhwKE9TRXJyb3IsIHInXFtFcnJubyAldVxdJyAlIGVbMV0sCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KE9TRXJyb3IsIHInXFtFcnJubyAldVxdJyAlIGVbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fcmVhbHBhdGgsIGVbMF0sIEZhbHNlLCBGYWxzZSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS90eXBlcy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS90eXBlcy5weQppbmRleCA3ZjQ3YzE3Li40YWU1OGFjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvdHlwZXMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3R5cGVzLnB5CkBAIC0zMyw3ICszMyw3IEBACiAgICAgQWN0cyBhcyBhIG11bHRpcGxlIGNob2ljZSBmb3IgdGhlIHVzZXIuICBUbyB1c2UgdGhpcywgc2V0IHRoZSB2YXJpYWJsZQogICAgIHR5cGUgZmxhZyB0byAnY2hvaWNlJywgYW5kIHNldCB0aGUgJ2Nob2ljZXMnIGZsYWcgdG8gYSBzcGFjZSBzZXBhcmF0ZWQKICAgICBsaXN0IG9mIHZhbGlkIHZhbHVlcy4iIiIKLSAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgYmFzZXN0cmluZyk6CisgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIHN0cik6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiY2hvaWNlIGFjY2VwdHMgYSBzdHJpbmcsIG5vdCAnJXMnIiAlIHR5cGUodmFsdWUpKQogCiAgICAgdmFsdWUgPSB2YWx1ZS5sb3dlcigpCkBAIC0xMDYsNyArMTA2LDcgQEAKICAgICBWYWxpZCB2YWx1ZXMgZm9yIGZhbHNlOiAnbm8nLCAnbicsICdmYWxzZScsICdmJywgJzAnCiAgICAgIiIiCiAKLSAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgYmFzZXN0cmluZyk6CisgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIHN0cik6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYm9vbGVhbiBhY2NlcHRzIGEgc3RyaW5nLCBub3QgJyVzJyIgJSB0eXBlKHZhbHVlKSkKIAogICAgIHZhbHVlID0gdmFsdWUubG93ZXIoKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3V0aWxzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3V0aWxzLnB5CmluZGV4IDMwZDMwNjIuLmQ2NTQ1YjEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS91dGlscy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvdXRpbHMucHkKQEAgLTIzLDEzICsyMywxMyBAQAogICAgICAgICByZXR1cm4gaWZmYWxzZQogCiBkZWYgY29uZGl0aW9uYWwodmFyaWFibGUsIGNoZWNrdmFsdWUsIHRydWV2YWx1ZSwgZmFsc2V2YWx1ZSwgZCk6Ci0gICAgaWYgZC5nZXRWYXIodmFyaWFibGUsMSkgPT0gY2hlY2t2YWx1ZToKKyAgICBpZiBkLmdldFZhcih2YXJpYWJsZSwgVHJ1ZSkgPT0gY2hlY2t2YWx1ZToKICAgICAgICAgcmV0dXJuIHRydWV2YWx1ZQogICAgIGVsc2U6CiAgICAgICAgIHJldHVybiBmYWxzZXZhbHVlCiAKIGRlZiBsZXNzX29yX2VxdWFsKHZhcmlhYmxlLCBjaGVja3ZhbHVlLCB0cnVldmFsdWUsIGZhbHNldmFsdWUsIGQpOgotICAgIGlmIGZsb2F0KGQuZ2V0VmFyKHZhcmlhYmxlLDEpKSA8PSBmbG9hdChjaGVja3ZhbHVlKToKKyAgICBpZiBmbG9hdChkLmdldFZhcih2YXJpYWJsZSwgVHJ1ZSkpIDw9IGZsb2F0KGNoZWNrdmFsdWUpOgogICAgICAgICByZXR1cm4gdHJ1ZXZhbHVlCiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuIGZhbHNldmFsdWUKQEAgLTQ2LDcgKzQ2LDcgQEAKICAgICB2YWwyID0gZC5nZXRWYXIodmFyaWFibGUyLCBUcnVlKQogICAgIHZhbDEgPSBzZXQodmFsMS5zcGxpdCgpKQogICAgIHZhbDIgPSBzZXQodmFsMi5zcGxpdCgpKQotICAgIGlmIGlzaW5zdGFuY2UoY2hlY2t2YWx1ZSwgYmFzZXN0cmluZyk6CisgICAgaWYgaXNpbnN0YW5jZShjaGVja3ZhbHVlLCBzdHIpOgogICAgICAgICBjaGVja3ZhbHVlID0gc2V0KGNoZWNrdmFsdWUuc3BsaXQoKSkKICAgICBlbHNlOgogICAgICAgICBjaGVja3ZhbHVlID0gc2V0KGNoZWNrdmFsdWUpCkBAIC04NSwxMSArODUsMTEgQEAKIAogZGVmIHN0cl9maWx0ZXIoZiwgc3RyLCBkKToKICAgICBmcm9tIHJlIGltcG9ydCBtYXRjaAotICAgIHJldHVybiAiICIuam9pbihmaWx0ZXIobGFtYmRhIHg6IG1hdGNoKGYsIHgsIDApLCBzdHIuc3BsaXQoKSkpCisgICAgcmV0dXJuICIgIi5qb2luKFt4IGZvciB4IGluIHN0ci5zcGxpdCgpIGlmIG1hdGNoKGYsIHgsIDApXSkKIAogZGVmIHN0cl9maWx0ZXJfb3V0KGYsIHN0ciwgZCk6CiAgICAgZnJvbSByZSBpbXBvcnQgbWF0Y2gKLSAgICByZXR1cm4gIiAiLmpvaW4oZmlsdGVyKGxhbWJkYSB4OiBub3QgbWF0Y2goZiwgeCwgMCksIHN0ci5zcGxpdCgpKSkKKyAgICByZXR1cm4gIiAiLmpvaW4oW3ggZm9yIHggaW4gc3RyLnNwbGl0KCkgaWYgbm90IG1hdGNoKGYsIHgsIDApXSkKIAogZGVmIHBhcmFtX2Jvb2woY2ZnLCBmaWVsZCwgZGZsdCA9IE5vbmUpOgogICAgICIiIkxvb2t1cCA8ZmllbGQ+IGluIDxjZmc+IG1hcCBhbmQgY29udmVydCBpdCB0byBhIGJvb2xlYW47IHRha2UKQEAgLTEzNCw3ICsxMzQsNyBAQAogICAgIFBOLWRiZyBQTi1kb2MgUE4tbG9jYWxlLWViLWdiIHJlbW92ZWQuCiAgICAgIiIiCiAgICAgcG4gPSBkLmdldFZhcignUE4nLCBUcnVlKQotICAgIGJsYWNrbGlzdCA9IG1hcChsYW1iZGEgc3VmZml4OiBwbiArIHN1ZmZpeCwgKCcnLCAnLWRiZycsICctZGV2JywgJy1kb2MnLCAnLWxvY2FsZScsICctc3RhdGljZGV2JykpCisgICAgYmxhY2tsaXN0ID0gW3BuICsgc3VmZml4IGZvciBzdWZmaXggaW4gKCcnLCAnLWRiZycsICctZGV2JywgJy1kb2MnLCAnLWxvY2FsZScsICctc3RhdGljZGV2JyldCiAgICAgbG9jYWxlcGtnID0gcG4gKyAiLWxvY2FsZS0iCiAgICAgcGtncyA9IFtdCiAKQEAgLTIzNSw3ICsyMzUsNyBAQAogIyBzbyBpbXBsZW1lbnQgYSB2ZXJzaW9uIGhlcmUKICMKIAotZnJvbSBRdWV1ZSBpbXBvcnQgUXVldWUKK2Zyb20gcXVldWUgaW1wb3J0IFF1ZXVlCiBmcm9tIHRocmVhZGluZyBpbXBvcnQgVGhyZWFkCiAKIGNsYXNzIFRocmVhZGVkV29ya2VyKFRocmVhZCk6CkBAIC0yNDksNyArMjQ5LDcgQEAKICAgICAgICAgc2VsZi53b3JrZXJfZW5kID0gd29ya2VyX2VuZAogCiAgICAgZGVmIHJ1bihzZWxmKToKLSAgICAgICAgZnJvbSBRdWV1ZSBpbXBvcnQgRW1wdHkKKyAgICAgICAgZnJvbSBxdWV1ZSBpbXBvcnQgRW1wdHkKIAogICAgICAgICBpZiBzZWxmLndvcmtlcl9pbml0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc2VsZi53b3JrZXJfaW5pdChzZWxmKQpAQCAtMjY0LDggKzI2NCw4IEBACiAKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBmdW5jKHNlbGYsICphcmdzLCAqKmthcmdzKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgICAgICBwcmludCBlCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgcHJpbnQoZSkKICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgc2VsZi50YXNrcy50YXNrX2RvbmUoKQogCkBAIC0zMDQsMyArMzA0LDE2IEBACiAgICAgd2l0aCBvcGVuKGxkc29jb25mLCAidyIpIGFzIGY6CiAgICAgICAgIGYud3JpdGUoZC5nZXRWYXIoImJhc2VfbGliZGlyIiwgVHJ1ZSkgKyAnXG4nKQogICAgICAgICBmLndyaXRlKGQuZ2V0VmFyKCJsaWJkaXIiLCBUcnVlKSArICdcbicpCisKK2NsYXNzIEltYWdlUUFGYWlsZWQoYmIuYnVpbGQuRnVuY0ZhaWxlZCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRlc2NyaXB0aW9uLCBuYW1lPU5vbmUsIGxvZ2ZpbGU9Tm9uZSk6CisgICAgICAgIHNlbGYuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbgorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYubG9nZmlsZT1sb2dmaWxlCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgbXNnID0gJ0Z1bmN0aW9uIGZhaWxlZDogJXMnICUgc2VsZi5uYW1lCisgICAgICAgIGlmIHNlbGYuZGVzY3JpcHRpb246CisgICAgICAgICAgICBtc2cgPSBtc2cgKyAnICglcyknICUgc2VsZi5kZXNjcmlwdGlvbgorCisgICAgICAgIHJldHVybiBtc2cKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL19faW5pdF9fLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2OWRlMjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvX19pbml0X18ucHkKKysrIC9kZXYvbnVsbApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvYnVpbGRwZXJmL19faW5pdF9fLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvYnVpbGRwZXJmL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwNWY0MjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9idWlsZHBlcmYvX19pbml0X18ucHkKQEAgLTAsMCArMSwxOSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMTYsIEludGVsIENvcnBvcmF0aW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorIyB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLAorIyB2ZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCisjIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvcgorIyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCisjIG1vcmUgZGV0YWlscy4KKyMKKyIiIkJ1aWxkIHBlcmZvcm1hbmNlIHRlc3RzIiIiCitmcm9tIC5iYXNlIGltcG9ydCAoQnVpbGRQZXJmVGVzdENhc2UsCisgICAgICAgICAgICAgICAgICAgQnVpbGRQZXJmVGVzdExvYWRlciwKKyAgICAgICAgICAgICAgICAgICBCdWlsZFBlcmZUZXN0UmVzdWx0LAorICAgICAgICAgICAgICAgICAgIEJ1aWxkUGVyZlRlc3RSdW5uZXIsCisgICAgICAgICAgICAgICAgICAgS2VybmVsRHJvcENhY2hlcywKKyAgICAgICAgICAgICAgICAgICBydW5DbWQyKQorZnJvbSAudGVzdF9iYXNpYyBpbXBvcnQgKgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvYnVpbGRwZXJmL2Jhc2UucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9idWlsZHBlcmYvYmFzZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWRkMDI1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvYnVpbGRwZXJmL2Jhc2UucHkKQEAgLTAsMCArMSw1NTEgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDE2LCBJbnRlbCBDb3Jwb3JhdGlvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyMgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwKKyMgdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAorIyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKKyMgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgorIyBtb3JlIGRldGFpbHMuCisjCisiIiJCdWlsZCBwZXJmb3JtYW5jZSB0ZXN0IGJhc2UgY2xhc3NlcyBhbmQgZnVuY3Rpb25hbGl0eSIiIgoraW1wb3J0IGdsb2IKK2ltcG9ydCBqc29uCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCByZXNvdXJjZQoraW1wb3J0IHNodXRpbAoraW1wb3J0IHNvY2tldAoraW1wb3J0IHRpbWUKK2ltcG9ydCB0cmFjZWJhY2sKK2ltcG9ydCB1bml0dGVzdAorZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUsIHRpbWVkZWx0YQorZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHBhcnRpYWwKK2Zyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCBQcm9jZXNzCitmcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgU2ltcGxlUXVldWUKKworaW1wb3J0IG9lLnBhdGgKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgQ29tbWFuZEVycm9yLCBydW5DbWQsIGdldF9iYl92YXJzCitmcm9tIG9lcWEudXRpbHMuZ2l0IGltcG9ydCBHaXRFcnJvciwgR2l0UmVwbworCisjIEdldCBsb2dnZXIgZm9yIHRoaXMgbW9kdWxlCitsb2cgPSBsb2dnaW5nLmdldExvZ2dlcignYnVpbGQtcGVyZicpCisKKyMgT3VyIG93biB2ZXJzaW9uIG9mIHJ1bkNtZCB3aGljaCBkb2VzIG5vdCByYWlzZSBBc3NlcnRFcnJvcnMgd2hpY2ggd291bGQgY2F1c2UKKyMgZXJyb3JzIHRvIGludGVycHJldGVkIGFzIGZhaWx1cmVzCitydW5DbWQyID0gcGFydGlhbChydW5DbWQsIGFzc2VydF9lcnJvcj1GYWxzZSkKKworCitjbGFzcyBLZXJuZWxEcm9wQ2FjaGVzKG9iamVjdCk6CisgICAgIiIiQ29udGFpbmVyIG9mIHRoZSBmdW5jdGlvbnMgZm9yIGRyb3BwaW5nIGtlcm5lbCBjYWNoZXMiIiIKKyAgICBzdWRvX3Bhc3N3ZCA9IE5vbmUKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBjaGVjayhjbHMpOgorICAgICAgICAiIiJDaGVjayBwZXJtc3Npb25zIGZvciBkcm9wcGluZyBrZXJuZWwgY2FjaGVzIiIiCisgICAgICAgIGZyb20gZ2V0cGFzcyBpbXBvcnQgZ2V0cGFzcworICAgICAgICBmcm9tIGxvY2FsZSBpbXBvcnQgZ2V0ZGVmYXVsdGxvY2FsZQorICAgICAgICBjbWQgPSBbJ3N1ZG8nLCAnLWsnLCAnLW4nLCAndGVlJywgJy9wcm9jL3N5cy92bS9kcm9wX2NhY2hlcyddCisgICAgICAgIHJldCA9IHJ1bkNtZDIoY21kLCBpZ25vcmVfc3RhdHVzPVRydWUsIGRhdGE9YicwJykKKyAgICAgICAgaWYgcmV0Lm91dHB1dC5zdGFydHN3aXRoKCdzdWRvOicpOgorICAgICAgICAgICAgcGFzc19zdHIgPSBnZXRwYXNzKAorICAgICAgICAgICAgICAgICJcblRoZSBzY3JpcHQgcmVxdWlyZXMgc3VkbyBhY2Nlc3MgdG8gZHJvcCBjYWNoZXMgYmV0d2VlbiAiCisgICAgICAgICAgICAgICAgImJ1aWxkcyAoZWNobyAzID4gL3Byb2Mvc3lzL3ZtL2Ryb3BfY2FjaGVzKS5cbiIKKyAgICAgICAgICAgICAgICAiUGxlYXNlIGVudGVyIHlvdXIgc3VkbyBwYXNzd29yZDogIikKKyAgICAgICAgICAgIGNscy5zdWRvX3Bhc3N3ZCA9IGJ5dGVzKHBhc3Nfc3RyLCBnZXRkZWZhdWx0bG9jYWxlKClbMV0pCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZHJvcChjbHMpOgorICAgICAgICAiIiJEcm9wIGtlcm5lbCBjYWNoZXMiIiIKKyAgICAgICAgY21kID0gWydzdWRvJywgJy1rJ10KKyAgICAgICAgaWYgY2xzLnN1ZG9fcGFzc3dkOgorICAgICAgICAgICAgY21kLmFwcGVuZCgnLVMnKQorICAgICAgICAgICAgaW5wdXRfZGF0YSA9IGNscy5zdWRvX3Bhc3N3ZCArIGInXG4nCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjbWQuYXBwZW5kKCctbicpCisgICAgICAgICAgICBpbnB1dF9kYXRhID0gYicnCisgICAgICAgIGNtZCArPSBbJ3RlZScsICcvcHJvYy9zeXMvdm0vZHJvcF9jYWNoZXMnXQorICAgICAgICBpbnB1dF9kYXRhICs9IGInMycKKyAgICAgICAgcnVuQ21kMihjbWQsIGRhdGE9aW5wdXRfZGF0YSkKKworCitkZWYgc3RyX3RvX2ZuKHN0cmluZyk6CisgICAgIiIiQ29udmVydCBzdHJpbmcgdG8gYSBzYW5pdGl6ZWQgZmlsZW5hbWUiIiIKKyAgICByZXR1cm4gcmUuc3ViKHInKFxXKyknLCAnLScsIHN0cmluZywgZmxhZ3M9cmUuTE9DQUxFKQorCisKK2NsYXNzIFJlc3VsdHNKc29uRW5jb2Rlcihqc29uLkpTT05FbmNvZGVyKToKKyAgICAiIiJFeHRlbmRlZCBlbmNvZGVyIGZvciBidWlsZCBwZXJmIHRlc3QgcmVzdWx0cyIiIgorICAgIHVuaXhfZXBvY2ggPSBkYXRldGltZS51dGNmcm9tdGltZXN0YW1wKDApCisKKyAgICBkZWYgZGVmYXVsdChzZWxmLCBvYmopOgorICAgICAgICAiIiJFbmNvZGVyIGZvciBvdXIgdHlwZXMiIiIKKyAgICAgICAgaWYgaXNpbnN0YW5jZShvYmosIGRhdGV0aW1lKToKKyAgICAgICAgICAgICMgTk9URTogd2UgYXNzdW1lIHRoYXQgYWxsIHRpbWVzdGFtcHMgYXJlIGluIFVUQyB0aW1lCisgICAgICAgICAgICByZXR1cm4gKG9iaiAtIHNlbGYudW5peF9lcG9jaCkudG90YWxfc2Vjb25kcygpCisgICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCB0aW1lZGVsdGEpOgorICAgICAgICAgICAgcmV0dXJuIG9iai50b3RhbF9zZWNvbmRzKCkKKyAgICAgICAgcmV0dXJuIGpzb24uSlNPTkVuY29kZXIuZGVmYXVsdChzZWxmLCBvYmopCisKKworY2xhc3MgQnVpbGRQZXJmVGVzdFJlc3VsdCh1bml0dGVzdC5UZXh0VGVzdFJlc3VsdCk6CisgICAgIiIiUnVubmVyIGNsYXNzIGZvciBleGVjdXRpbmcgdGhlIGluZGl2aWR1YWwgdGVzdHMiIiIKKyAgICAjIExpc3Qgb2YgdGVzdCBjYXNlcyB0byBydW4KKyAgICB0ZXN0X3J1bl9xdWV1ZSA9IFtdCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgb3V0X2RpciwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc3VwZXIoQnVpbGRQZXJmVGVzdFJlc3VsdCwgc2VsZikuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgIHNlbGYub3V0X2RpciA9IG91dF9kaXIKKyAgICAgICAgIyBHZXQgR2l0IHBhcmFtZXRlcnMKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5yZXBvID0gR2l0UmVwbygnLicpCisgICAgICAgIGV4Y2VwdCBHaXRFcnJvcjoKKyAgICAgICAgICAgIHNlbGYucmVwbyA9IE5vbmUKKyAgICAgICAgc2VsZi5naXRfY29tbWl0LCBzZWxmLmdpdF9jb21taXRfY291bnQsIHNlbGYuZ2l0X2JyYW5jaCA9IFwKKyAgICAgICAgICAgICAgICBzZWxmLmdldF9naXRfcmV2aXNpb24oKQorICAgICAgICBzZWxmLmhvc3RuYW1lID0gc29ja2V0LmdldGhvc3RuYW1lKCkKKyAgICAgICAgc2VsZi5wcm9kdWN0ID0gb3MuZ2V0ZW52KCdPRV9CVUlMRFBFUkZURVNUX1BST0RVQ1QnLCAnb2UtY29yZScpCisgICAgICAgIHNlbGYuc3RhcnRfdGltZSA9IHNlbGYuZWxhcHNlZF90aW1lID0gTm9uZQorICAgICAgICBzZWxmLnN1Y2Nlc3NlcyA9IFtdCisgICAgICAgIGxvZy5pbmZvKCJVc2luZyBHaXQgYnJhbmNoOmNvbW1pdCAlczolcyAoJXMpIiwgc2VsZi5naXRfYnJhbmNoLAorICAgICAgICAgICAgICAgICBzZWxmLmdpdF9jb21taXQsIHNlbGYuZ2l0X2NvbW1pdF9jb3VudCkKKworICAgIGRlZiBnZXRfZ2l0X3JldmlzaW9uKHNlbGYpOgorICAgICAgICAiIiJHZXQgZ2l0IGJyYW5jaCBhbmQgY29tbWl0IHVuZGVyIHRlc3RpbmciIiIKKyAgICAgICAgY29tbWl0ID0gb3MuZ2V0ZW52KCdPRV9CVUlMRFBFUkZURVNUX0dJVF9DT01NSVQnKQorICAgICAgICBjb21taXRfY250ID0gb3MuZ2V0ZW52KCdPRV9CVUlMRFBFUkZURVNUX0dJVF9DT01NSVRfQ09VTlQnKQorICAgICAgICBicmFuY2ggPSBvcy5nZXRlbnYoJ09FX0JVSUxEUEVSRlRFU1RfR0lUX0JSQU5DSCcpCisgICAgICAgIGlmIG5vdCBzZWxmLnJlcG8gYW5kIChub3QgY29tbWl0IG9yIG5vdCBjb21taXRfY250IG9yIG5vdCBicmFuY2gpOgorICAgICAgICAgICAgbG9nLmluZm8oIlRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IGRvZXNuJ3Qgc2VlbSB0byBiZSBhIEdpdCAiCisgICAgICAgICAgICAgICAgICAgICAicmVwb3NpdG9yeSBjbG9uZS4gWW91IGNhbiBzcGVjaWZ5IGJyYW5jaCBhbmQgY29tbWl0ICIKKyAgICAgICAgICAgICAgICAgICAgICJkaXNwbGF5ZWQgaW4gdGVzdCByZXN1bHRzIHdpdGggT0VfQlVJTERQRVJGVEVTVF9HSVRfQlJBTkNILCAiCisgICAgICAgICAgICAgICAgICAgICAiT0VfQlVJTERQRVJGVEVTVF9HSVRfQ09NTUlUIGFuZCAiCisgICAgICAgICAgICAgICAgICAgICAiT0VfQlVJTERQRVJGVEVTVF9HSVRfQ09NTUlUX0NPVU5UIGVudmlyb25tZW50IHZhcmlhYmxlcyIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBub3QgY29tbWl0OgorICAgICAgICAgICAgICAgIGNvbW1pdCA9IHNlbGYucmVwby5yZXZfcGFyc2UoJ0hFQUReMCcpCisgICAgICAgICAgICAgICAgY29tbWl0X2NudCA9IHNlbGYucmVwby5ydW5fY21kKFsncmV2LWxpc3QnLCAnLS1jb3VudCcsICdIRUFEXjAnXSkKKyAgICAgICAgICAgIGlmIG5vdCBicmFuY2g6CisgICAgICAgICAgICAgICAgYnJhbmNoID0gc2VsZi5yZXBvLmdldF9jdXJyZW50X2JyYW5jaCgpCisgICAgICAgICAgICAgICAgaWYgbm90IGJyYW5jaDoKKyAgICAgICAgICAgICAgICAgICAgbG9nLmRlYnVnKCdDdXJyZW50bHkgb24gZGV0YWNoZWQgSEVBRCcpCisgICAgICAgIHJldHVybiBzdHIoY29tbWl0KSwgc3RyKGNvbW1pdF9jbnQpLCBzdHIoYnJhbmNoKQorCisgICAgZGVmIGFkZFN1Y2Nlc3Moc2VsZiwgdGVzdCk6CisgICAgICAgICIiIlJlY29yZCByZXN1bHRzIGZyb20gc3VjY2Vzc2Z1bCB0ZXN0cyIiIgorICAgICAgICBzdXBlcihCdWlsZFBlcmZUZXN0UmVzdWx0LCBzZWxmKS5hZGRTdWNjZXNzKHRlc3QpCisgICAgICAgIHNlbGYuc3VjY2Vzc2VzLmFwcGVuZCgodGVzdCwgTm9uZSkpCisKKyAgICBkZWYgc3RhcnRUZXN0KHNlbGYsIHRlc3QpOgorICAgICAgICAiIiJQcmUtdGVzdCBob29rIiIiCisgICAgICAgIHRlc3QuYmFzZV9kaXIgPSBzZWxmLm91dF9kaXIKKyAgICAgICAgb3MubWtkaXIodGVzdC5vdXRfZGlyKQorICAgICAgICBsb2cuaW5mbygiRXhlY3V0aW5nIHRlc3QgJXM6ICVzIiwgdGVzdC5uYW1lLCB0ZXN0LnNob3J0RGVzY3JpcHRpb24oKSkKKyAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGUoZGF0ZXRpbWUubm93KCkuc3RyZnRpbWUoIlslWS0lbS0lZCAlSDolTTolU10gIikpCisgICAgICAgIHN1cGVyKEJ1aWxkUGVyZlRlc3RSZXN1bHQsIHNlbGYpLnN0YXJ0VGVzdCh0ZXN0KQorCisgICAgZGVmIHN0YXJ0VGVzdFJ1bihzZWxmKToKKyAgICAgICAgIiIiUHJlLXJ1biBob29rIiIiCisgICAgICAgIHNlbGYuc3RhcnRfdGltZSA9IGRhdGV0aW1lLnV0Y25vdygpCisKKyAgICBkZWYgc3RvcFRlc3RSdW4oc2VsZik6CisgICAgICAgICIiIlByZS1ydW4gaG9vayIiIgorICAgICAgICBzZWxmLmVsYXBzZWRfdGltZSA9IGRhdGV0aW1lLnV0Y25vdygpIC0gc2VsZi5zdGFydF90aW1lCisgICAgICAgIHNlbGYud3JpdGVfcmVzdWx0c19qc29uKCkKKworICAgIGRlZiBhbGxfcmVzdWx0cyhzZWxmKToKKyAgICAgICAgcmVzdWx0X21hcCA9IHsnU1VDQ0VTUyc6IHNlbGYuc3VjY2Vzc2VzLAorICAgICAgICAgICAgICAgICAgICAgICdGQUlMJzogc2VsZi5mYWlsdXJlcywKKyAgICAgICAgICAgICAgICAgICAgICAnRVJST1InOiBzZWxmLmVycm9ycywKKyAgICAgICAgICAgICAgICAgICAgICAnRVhQX0ZBSUwnOiBzZWxmLmV4cGVjdGVkRmFpbHVyZXMsCisgICAgICAgICAgICAgICAgICAgICAgJ1VORVhQX1NVQ0NFU1MnOiBzZWxmLnVuZXhwZWN0ZWRTdWNjZXNzZXMsCisgICAgICAgICAgICAgICAgICAgICAgJ1NLSVBQRUQnOiBzZWxmLnNraXBwZWR9CisgICAgICAgIGZvciBzdGF0dXMsIHRlc3RzIGluIHJlc3VsdF9tYXAuaXRlbXMoKToKKyAgICAgICAgICAgIGZvciB0ZXN0IGluIHRlc3RzOgorICAgICAgICAgICAgICAgIHlpZWxkIChzdGF0dXMsIHRlc3QpCisKKworICAgIGRlZiB1cGRhdGVfZ2xvYmFscmVzX2ZpbGUoc2VsZiwgZmlsZW5hbWUpOgorICAgICAgICAiIiJXcml0ZSByZXN1bHRzIHRvIGdsb2JhbHJlcyBjc3YgZmlsZSIiIgorICAgICAgICAjIE1hcCB0ZXN0IG5hbWVzIHRvIHRpbWUgYW5kIHNpemUgY29sdW1ucyBpbiBnbG9iYWxyZXMKKyAgICAgICAgIyBUaGUgdHVwbGVzIHJlcHJlc2VudCBpbmRleCBhbmQgbGVuZ3RoIG9mIHRpbWVzIGFuZCBzaXplcworICAgICAgICAjIHJlc3BlY3RpdmVseQorICAgICAgICBncl9tYXAgPSB7J3Rlc3QxJzogKCgwLCAxKSwgKDgsIDEpKSwKKyAgICAgICAgICAgICAgICAgICd0ZXN0MTInOiAoKDEsIDEpLCAoTm9uZSwgTm9uZSkpLAorICAgICAgICAgICAgICAgICAgJ3Rlc3QxMyc6ICgoMiwgMSksICg5LCAxKSksCisgICAgICAgICAgICAgICAgICAndGVzdDInOiAoKDMsIDEpLCAoTm9uZSwgTm9uZSkpLAorICAgICAgICAgICAgICAgICAgJ3Rlc3QzJzogKCg0LCAzKSwgKE5vbmUsIE5vbmUpKSwKKyAgICAgICAgICAgICAgICAgICd0ZXN0NCc6ICgoNywgMSksICgxMCwgMikpfQorCisgICAgICAgIGlmIHNlbGYucmVwbzoKKyAgICAgICAgICAgIGdpdF90YWdfcmV2ID0gc2VsZi5yZXBvLnJ1bl9jbWQoWydkZXNjcmliZScsIHNlbGYuZ2l0X2NvbW1pdF0pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBnaXRfdGFnX3JldiA9IHNlbGYuZ2l0X2NvbW1pdAorCisgICAgICAgIHZhbHVlcyA9IFsnMCddICogMTIKKyAgICAgICAgZm9yIHN0YXR1cywgKHRlc3QsIG1zZykgaW4gc2VsZi5hbGxfcmVzdWx0cygpOgorICAgICAgICAgICAgaWYgc3RhdHVzIGluIFsnRVJST1InLCAnU0tJUFBFRCddOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAodF9pbmQsIHRfbGVuKSwgKHNfaW5kLCBzX2xlbikgPSBncl9tYXBbdGVzdC5uYW1lXQorICAgICAgICAgICAgaWYgdF9pbmQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgdmFsdWVzW3RfaW5kOnRfaW5kICsgdF9sZW5dID0gdGVzdC50aW1lcworICAgICAgICAgICAgaWYgc19pbmQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgdmFsdWVzW3NfaW5kOnNfaW5kICsgc19sZW5dID0gdGVzdC5zaXplcworCisgICAgICAgIGxvZy5kZWJ1ZygiV3JpdGluZyBnbG9iYWxyZXMgbG9nIHRvICVzIiwgZmlsZW5hbWUpCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ2EnKSBhcyBmb2JqOgorICAgICAgICAgICAgZm9iai53cml0ZSgne30se306e30se30sJy5mb3JtYXQoc2VsZi5ob3N0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZ2l0X2JyYW5jaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZ2l0X2NvbW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpdF90YWdfcmV2KSkKKyAgICAgICAgICAgIGZvYmoud3JpdGUoJywnLmpvaW4odmFsdWVzKSArICdcbicpCisKKyAgICBkZWYgd3JpdGVfcmVzdWx0c19qc29uKHNlbGYpOgorICAgICAgICAiIiJXcml0ZSB0ZXN0IHJlc3VsdHMgaW50byBhIGpzb24tZm9ybWF0dGVkIGZpbGUiIiIKKyAgICAgICAgcmVzdWx0cyA9IHsndGVzdGVyX2hvc3QnOiBzZWxmLmhvc3RuYW1lLAorICAgICAgICAgICAgICAgICAgICdnaXRfYnJhbmNoJzogc2VsZi5naXRfYnJhbmNoLAorICAgICAgICAgICAgICAgICAgICdnaXRfY29tbWl0Jzogc2VsZi5naXRfY29tbWl0LAorICAgICAgICAgICAgICAgICAgICdnaXRfY29tbWl0X2NvdW50Jzogc2VsZi5naXRfY29tbWl0X2NvdW50LAorICAgICAgICAgICAgICAgICAgICdwcm9kdWN0Jzogc2VsZi5wcm9kdWN0LAorICAgICAgICAgICAgICAgICAgICdzdGFydF90aW1lJzogc2VsZi5zdGFydF90aW1lLAorICAgICAgICAgICAgICAgICAgICdlbGFwc2VkX3RpbWUnOiBzZWxmLmVsYXBzZWRfdGltZX0KKworICAgICAgICB0ZXN0cyA9IHt9CisgICAgICAgIGZvciBzdGF0dXMsICh0ZXN0LCByZWFzb24pIGluIHNlbGYuYWxsX3Jlc3VsdHMoKToKKyAgICAgICAgICAgIHRlc3RzW3Rlc3QubmFtZV0gPSB7J25hbWUnOiB0ZXN0Lm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXNjcmlwdGlvbic6IHRlc3Quc2hvcnREZXNjcmlwdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3RhdHVzJzogc3RhdHVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3RhcnRfdGltZSc6IHRlc3Quc3RhcnRfdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VsYXBzZWRfdGltZSc6IHRlc3QuZWxhcHNlZF90aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY21kX2xvZ19maWxlJzogb3MucGF0aC5yZWxwYXRoKHRlc3QuY21kX2xvZ19maWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYub3V0X2RpciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtZWFzdXJlbWVudHMnOiB0ZXN0Lm1lYXN1cmVtZW50c30KKyAgICAgICAgcmVzdWx0c1sndGVzdHMnXSA9IHRlc3RzCisKKyAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihzZWxmLm91dF9kaXIsICdyZXN1bHRzLmpzb24nKSwgJ3cnKSBhcyBmb2JqOgorICAgICAgICAgICAganNvbi5kdW1wKHJlc3VsdHMsIGZvYmosIGluZGVudD00LCBzb3J0X2tleXM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICBjbHM9UmVzdWx0c0pzb25FbmNvZGVyKQorCisKKyAgICBkZWYgZ2l0X2NvbW1pdF9yZXN1bHRzKHNlbGYsIHJlcG9fcGF0aCwgYnJhbmNoPU5vbmUsIHRhZz1Ob25lKToKKyAgICAgICAgIiIiQ29tbWl0IHJlc3VsdHMgaW50byBhIEdpdCByZXBvc2l0b3J5IiIiCisgICAgICAgIHJlcG8gPSBHaXRSZXBvKHJlcG9fcGF0aCwgaXNfdG9wZGlyPVRydWUpCisgICAgICAgIGlmIG5vdCBicmFuY2g6CisgICAgICAgICAgICBicmFuY2ggPSBzZWxmLmdpdF9icmFuY2gKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgUmVwbGFjZSBrZXl3b3JkcworICAgICAgICAgICAgYnJhbmNoID0gYnJhbmNoLmZvcm1hdChnaXRfYnJhbmNoPXNlbGYuZ2l0X2JyYW5jaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVyX2hvc3Q9c2VsZi5ob3N0bmFtZSkKKworICAgICAgICBsb2cuaW5mbygiQ29tbWl0dGluZyB0ZXN0IHJlc3VsdHMgaW50byAlcyAlcyIsIHJlcG9fcGF0aCwgYnJhbmNoKQorICAgICAgICB0bXBfaW5kZXggPSBvcy5wYXRoLmpvaW4ocmVwb19wYXRoLCAnLmdpdCcsICdpbmRleC5vZS1idWlsZC1wZXJmJykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBDcmVhdGUgbmV3IGNvbW1pdCBvYmplY3QgZnJvbSB0aGUgbmV3IHJlc3VsdHMKKyAgICAgICAgICAgIGVudl91cGRhdGUgPSB7J0dJVF9JTkRFWF9GSUxFJzogdG1wX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAnR0lUX1dPUktfVFJFRSc6IHNlbGYub3V0X2Rpcn0KKyAgICAgICAgICAgIHJlcG8ucnVuX2NtZCgnYWRkIC4nLCBlbnZfdXBkYXRlKQorICAgICAgICAgICAgdHJlZSA9IHJlcG8ucnVuX2NtZCgnd3JpdGUtdHJlZScsIGVudl91cGRhdGUpCisgICAgICAgICAgICBwYXJlbnQgPSByZXBvLnJldl9wYXJzZShicmFuY2gpCisgICAgICAgICAgICBtc2cgPSAiUmVzdWx0cyBvZiB7fTp7fVxuIi5mb3JtYXQoc2VsZi5naXRfYnJhbmNoLCBzZWxmLmdpdF9jb21taXQpCisgICAgICAgICAgICBnaXRfY21kID0gWydjb21taXQtdHJlZScsIHRyZWUsICctbScsIG1zZ10KKyAgICAgICAgICAgIGlmIHBhcmVudDoKKyAgICAgICAgICAgICAgICBnaXRfY21kICs9IFsnLXAnLCBwYXJlbnRdCisgICAgICAgICAgICBjb21taXQgPSByZXBvLnJ1bl9jbWQoZ2l0X2NtZCwgZW52X3VwZGF0ZSkKKworICAgICAgICAgICAgIyBVcGRhdGUgYnJhbmNoIGhlYWQKKyAgICAgICAgICAgIGdpdF9jbWQgPSBbJ3VwZGF0ZS1yZWYnLCAncmVmcy9oZWFkcy8nICsgYnJhbmNoLCBjb21taXRdCisgICAgICAgICAgICBpZiBwYXJlbnQ6CisgICAgICAgICAgICAgICAgZ2l0X2NtZC5hcHBlbmQocGFyZW50KQorICAgICAgICAgICAgcmVwby5ydW5fY21kKGdpdF9jbWQpCisKKyAgICAgICAgICAgICMgVXBkYXRlIGN1cnJlbnQgSEVBRCwgaWYgd2UncmUgb24gYnJhbmNoICdicmFuY2gnCisgICAgICAgICAgICBpZiByZXBvLmdldF9jdXJyZW50X2JyYW5jaCgpID09IGJyYW5jaDoKKyAgICAgICAgICAgICAgICBsb2cuaW5mbygiVXBkYXRpbmcgJXMgSEVBRCB0byBsYXRlc3QgY29tbWl0IiwgcmVwb19wYXRoKQorICAgICAgICAgICAgICAgIHJlcG8ucnVuX2NtZCgncmVzZXQgLS1oYXJkJykKKworICAgICAgICAgICAgIyBDcmVhdGUgKGFubm90YXRlZCkgdGFnCisgICAgICAgICAgICBpZiB0YWc6CisgICAgICAgICAgICAgICAgIyBGaW5kIHRhZ3MgbWF0Y2hpbmcgdGhlIHBhdHRlcm4KKyAgICAgICAgICAgICAgICB0YWdfa2V5d29yZHMgPSBkaWN0KGdpdF9icmFuY2g9c2VsZi5naXRfYnJhbmNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2l0X2NvbW1pdD1zZWxmLmdpdF9jb21taXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaXRfY29tbWl0X2NvdW50PXNlbGYuZ2l0X2NvbW1pdF9jb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rlcl9ob3N0PXNlbGYuaG9zdG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdfbnVtPSdbMC05XXsxLDV9JykKKyAgICAgICAgICAgICAgICB0YWdfcmUgPSByZS5jb21waWxlKHRhZy5mb3JtYXQoKip0YWdfa2V5d29yZHMpICsgJyQnKQorICAgICAgICAgICAgICAgIHRhZ19rZXl3b3Jkc1sndGFnX251bSddID0gMAorICAgICAgICAgICAgICAgIGZvciBleGlzdGluZ190YWcgaW4gcmVwby5ydW5fY21kKCd0YWcnKS5zcGxpdGxpbmVzKCk6CisgICAgICAgICAgICAgICAgICAgIGlmIHRhZ19yZS5tYXRjaChleGlzdGluZ190YWcpOgorICAgICAgICAgICAgICAgICAgICAgICAgdGFnX2tleXdvcmRzWyd0YWdfbnVtJ10gKz0gMQorCisgICAgICAgICAgICAgICAgdGFnID0gdGFnLmZvcm1hdCgqKnRhZ19rZXl3b3JkcykKKyAgICAgICAgICAgICAgICBtc2cgPSAiVGVzdCBydW4gI3t9IG9mIHt9Ont9XG4iLmZvcm1hdCh0YWdfa2V5d29yZHNbJ3RhZ19udW0nXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmdpdF9icmFuY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5naXRfY29tbWl0KQorICAgICAgICAgICAgICAgIHJlcG8ucnVuX2NtZChbJ3RhZycsICctYScsICctbScsIG1zZywgdGFnLCBjb21taXRdKQorCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyh0bXBfaW5kZXgpOgorICAgICAgICAgICAgICAgIG9zLnVubGluayh0bXBfaW5kZXgpCisKKworY2xhc3MgQnVpbGRQZXJmVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkJhc2UgY2xhc3MgZm9yIGJ1aWxkIHBlcmZvcm1hbmNlIHRlc3RzIiIiCisgICAgU1lTUkVTID0gJ3N5c3JlcycKKyAgICBESVNLVVNBR0UgPSAnZGlza3VzYWdlJworICAgIGJ1aWxkX3RhcmdldCA9IE5vbmUKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzdXBlcihCdWlsZFBlcmZUZXN0Q2FzZSwgc2VsZikuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBzZWxmLm5hbWUgPSBzZWxmLl90ZXN0TWV0aG9kTmFtZQorICAgICAgICBzZWxmLmJhc2VfZGlyID0gTm9uZQorICAgICAgICBzZWxmLnN0YXJ0X3RpbWUgPSBOb25lCisgICAgICAgIHNlbGYuZWxhcHNlZF90aW1lID0gTm9uZQorICAgICAgICBzZWxmLm1lYXN1cmVtZW50cyA9IFtdCisgICAgICAgIHNlbGYuYmJfdmFycyA9IGdldF9iYl92YXJzKCkKKyAgICAgICAgIyBUT0RPOiByZW1vdmUgJ3RpbWVzJyBhbmQgJ3NpemVzJyBhcnJheXMgd2hlbiBnbG9iYWxyZXMgc3VwcG9ydCBpcworICAgICAgICAjIHJlbW92ZWQKKyAgICAgICAgc2VsZi50aW1lcyA9IFtdCisgICAgICAgIHNlbGYuc2l6ZXMgPSBbXQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG91dF9kaXIoc2VsZik6CisgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc2VsZi5iYXNlX2Rpciwgc2VsZi5uYW1lKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNtZF9sb2dfZmlsZShzZWxmKToKKyAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihzZWxmLm91dF9kaXIsICdjb21tYW5kcy5sb2cnKQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICAiIiJTZXQtdXAgZml4dHVyZSBmb3IgZWFjaCB0ZXN0IiIiCisgICAgICAgIGlmIHNlbGYuYnVpbGRfdGFyZ2V0OgorICAgICAgICAgICAgc2VsZi5sb2dfY21kX291dHB1dChbJ2JpdGJha2UnLCBzZWxmLmJ1aWxkX3RhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctYycsICdmZXRjaGFsbCddKQorCisgICAgZGVmIHJ1bihzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAiIiJSdW4gdGVzdCIiIgorICAgICAgICBzZWxmLnN0YXJ0X3RpbWUgPSBkYXRldGltZS5ub3coKQorICAgICAgICBzdXBlcihCdWlsZFBlcmZUZXN0Q2FzZSwgc2VsZikucnVuKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5lbGFwc2VkX3RpbWUgPSBkYXRldGltZS5ub3coKSAtIHNlbGYuc3RhcnRfdGltZQorCisgICAgZGVmIGxvZ19jbWRfb3V0cHV0KHNlbGYsIGNtZCk6CisgICAgICAgICIiIlJ1biBhIGNvbW1hbmQgYW5kIGxvZyBpdCdzIG91dHB1dCIiIgorICAgICAgICBjbWRfc3RyID0gY21kIGlmIGlzaW5zdGFuY2UoY21kLCBzdHIpIGVsc2UgJyAnLmpvaW4oY21kKQorICAgICAgICBsb2cuaW5mbygiTG9nZ2luZyBjb21tYW5kOiAlcyIsIGNtZF9zdHIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggb3BlbihzZWxmLmNtZF9sb2dfZmlsZSwgJ2EnKSBhcyBmb2JqOgorICAgICAgICAgICAgICAgIHJ1bkNtZDIoY21kLCBzdGRvdXQ9Zm9iaikKKyAgICAgICAgZXhjZXB0IENvbW1hbmRFcnJvciBhcyBlcnI6CisgICAgICAgICAgICBsb2cuZXJyb3IoIkNvbW1hbmQgZmFpbGVkOiAlcyIsIGVyci5yZXRjb2RlKQorICAgICAgICAgICAgcmFpc2UKKworICAgIGRlZiBtZWFzdXJlX2NtZF9yZXNvdXJjZXMoc2VsZiwgY21kLCBuYW1lLCBsZWdlbmQsIHNhdmVfYnM9RmFsc2UpOgorICAgICAgICAiIiJNZWFzdXJlIHN5c3RlbSByZXNvdXJjZSB1c2FnZSBvZiBhIGNvbW1hbmQiIiIKKyAgICAgICAgZGVmIF93b3JrZXIoZGF0YV9xLCBjbWQsICoqa3dhcmdzKToKKyAgICAgICAgICAgICIiIldvcmtlciBwcm9jZXNzIGZvciBtZWFzdXJpbmcgcmVzb3VyY2VzIiIiCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc3RhcnRfdGltZSA9IGRhdGV0aW1lLm5vdygpCisgICAgICAgICAgICAgICAgcmV0ID0gcnVuQ21kMihjbWQsICoqa3dhcmdzKQorICAgICAgICAgICAgICAgIGV0aW1lID0gZGF0ZXRpbWUubm93KCkgLSBzdGFydF90aW1lCisgICAgICAgICAgICAgICAgcnVzYWdlX3N0cnVjdCA9IHJlc291cmNlLmdldHJ1c2FnZShyZXNvdXJjZS5SVVNBR0VfQ0hJTERSRU4pCisgICAgICAgICAgICAgICAgaW9zdGF0ID0ge30KKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4oJy9wcm9jL3t9L2lvJy5mb3JtYXQob3MuZ2V0cGlkKCkpKSBhcyBmb2JqOgorICAgICAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBmb2JqLnJlYWRsaW5lcygpOgorICAgICAgICAgICAgICAgICAgICAgICAga2V5LCB2YWwgPSBsaW5lLnNwbGl0KCc6JykKKyAgICAgICAgICAgICAgICAgICAgICAgIGlvc3RhdFtrZXldID0gaW50KHZhbCkKKyAgICAgICAgICAgICAgICBydXNhZ2UgPSB7fQorICAgICAgICAgICAgICAgICMgU2tpcCB1bnVzZWQgZmllbGRzLCAoaS5lLiAncnVfaXhyc3MnLCAncnVfaWRyc3MnLCAncnVfaXNyc3MnLAorICAgICAgICAgICAgICAgICMgJ3J1X25zd2FwJywgJ3J1X21zZ3NuZCcsICdydV9tc2dyY3YnIGFuZCAncnVfbnNpZ25hbHMnKQorICAgICAgICAgICAgICAgIGZvciBrZXkgaW4gWydydV91dGltZScsICdydV9zdGltZScsICdydV9tYXhyc3MnLCAncnVfbWluZmx0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncnVfbWFqZmx0JywgJ3J1X2luYmxvY2snLCAncnVfb3VibG9jaycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3J1X252Y3N3JywgJ3J1X25pdmNzdyddOgorICAgICAgICAgICAgICAgICAgICBydXNhZ2Vba2V5XSA9IGdldGF0dHIocnVzYWdlX3N0cnVjdCwga2V5KQorICAgICAgICAgICAgICAgIGRhdGFfcS5wdXQoeydyZXQnOiByZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0YXJ0X3RpbWUnOiBzdGFydF90aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbGFwc2VkX3RpbWUnOiBldGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncnVzYWdlJzogcnVzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpb3N0YXQnOiBpb3N0YXR9KQorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnI6CisgICAgICAgICAgICAgICAgZGF0YV9xLnB1dChlcnIpCisKKyAgICAgICAgY21kX3N0ciA9IGNtZCBpZiBpc2luc3RhbmNlKGNtZCwgc3RyKSBlbHNlICcgJy5qb2luKGNtZCkKKyAgICAgICAgbG9nLmluZm8oIlRpbWluZyBjb21tYW5kOiAlcyIsIGNtZF9zdHIpCisgICAgICAgIGRhdGFfcSA9IFNpbXBsZVF1ZXVlKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBvcGVuKHNlbGYuY21kX2xvZ19maWxlLCAnYScpIGFzIGZvYmo6CisgICAgICAgICAgICAgICAgcHJvYyA9IFByb2Nlc3ModGFyZ2V0PV93b3JrZXIsIGFyZ3M9KGRhdGFfcSwgY21kLCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dhcmdzPXsnc3Rkb3V0JzogZm9ian0pCisgICAgICAgICAgICAgICAgcHJvYy5zdGFydCgpCisgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGFfcS5nZXQoKQorICAgICAgICAgICAgICAgIHByb2Muam9pbigpCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGRhdGEsIEV4Y2VwdGlvbik6CisgICAgICAgICAgICAgICAgcmFpc2UgZGF0YQorICAgICAgICBleGNlcHQgQ29tbWFuZEVycm9yOgorICAgICAgICAgICAgbG9nLmVycm9yKCJDb21tYW5kICclcycgZmFpbGVkLCBzZWUgJXMgZm9yIG1vcmUgZGV0YWlscyIsIGNtZF9zdHIsCisgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbWRfbG9nX2ZpbGUpCisgICAgICAgICAgICByYWlzZQorICAgICAgICBldGltZSA9IGRhdGFbJ2VsYXBzZWRfdGltZSddCisKKyAgICAgICAgbWVhc3VyZW1lbnQgPSB7J3R5cGUnOiBzZWxmLlNZU1JFUywKKyAgICAgICAgICAgICAgICAgICAgICAgJ25hbWUnOiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAnbGVnZW5kJzogbGVnZW5kfQorICAgICAgICBtZWFzdXJlbWVudFsndmFsdWVzJ10gPSB7J3N0YXJ0X3RpbWUnOiBkYXRhWydzdGFydF90aW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWxhcHNlZF90aW1lJzogZXRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncnVzYWdlJzogZGF0YVsncnVzYWdlJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW9zdGF0JzogZGF0YVsnaW9zdGF0J119CisgICAgICAgIGlmIHNhdmVfYnM6CisgICAgICAgICAgICBic19maWxlID0gc2VsZi5zYXZlX2J1aWxkc3RhdHMobGVnZW5kKQorICAgICAgICAgICAgbWVhc3VyZW1lbnRbJ3ZhbHVlcyddWydidWlsZHN0YXRzX2ZpbGUnXSA9IFwKKyAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5yZWxwYXRoKGJzX2ZpbGUsIHNlbGYuYmFzZV9kaXIpCisKKyAgICAgICAgc2VsZi5tZWFzdXJlbWVudHMuYXBwZW5kKG1lYXN1cmVtZW50KQorCisgICAgICAgICMgQXBwZW5kIHRvICd0aW1lcycgYXJyYXkgZm9yIGdsb2JhbHJlcyBsb2cKKyAgICAgICAgZV9zZWMgPSBldGltZS50b3RhbF9zZWNvbmRzKCkKKyAgICAgICAgc2VsZi50aW1lcy5hcHBlbmQoJ3s6ZH06ezowMmR9Ons6MDUuMmZ9Jy5mb3JtYXQoaW50KGVfc2VjIC8gMzYwMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQoKGVfc2VjICUgMzYwMCkgLyA2MCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZV9zZWMgJSA2MCkpCisKKyAgICBkZWYgbWVhc3VyZV9kaXNrX3VzYWdlKHNlbGYsIHBhdGgsIG5hbWUsIGxlZ2VuZCwgYXBwYXJlbnRfc2l6ZT1GYWxzZSk6CisgICAgICAgICIiIkVzdGltYXRlIGRpc2sgdXNhZ2Ugb2YgYSBmaWxlIG9yIGRpcmVjdG9yeSIiIgorICAgICAgICBjbWQgPSBbJ2R1JywgJy1zJywgJy0tYmxvY2stc2l6ZScsICcxMDI0J10KKyAgICAgICAgaWYgYXBwYXJlbnRfc2l6ZToKKyAgICAgICAgICAgIGNtZC5hcHBlbmQoJy0tYXBwYXJlbnQtc2l6ZScpCisgICAgICAgIGNtZC5hcHBlbmQocGF0aCkKKworICAgICAgICByZXQgPSBydW5DbWQyKGNtZCkKKyAgICAgICAgc2l6ZSA9IGludChyZXQub3V0cHV0LnNwbGl0KClbMF0pCisgICAgICAgIGxvZy5kZWJ1ZygiU2l6ZSBvZiAlcyBwYXRoIGlzICVzIiwgcGF0aCwgc2l6ZSkKKyAgICAgICAgbWVhc3VyZW1lbnQgPSB7J3R5cGUnOiBzZWxmLkRJU0tVU0FHRSwKKyAgICAgICAgICAgICAgICAgICAgICAgJ25hbWUnOiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAnbGVnZW5kJzogbGVnZW5kfQorICAgICAgICBtZWFzdXJlbWVudFsndmFsdWVzJ10gPSB7J3NpemUnOiBzaXplfQorICAgICAgICBzZWxmLm1lYXN1cmVtZW50cy5hcHBlbmQobWVhc3VyZW1lbnQpCisgICAgICAgICMgQXBwZW5kIHRvICdzaXplcycgYXJyYXkgZm9yIGdsb2JhbHJlcyBsb2cKKyAgICAgICAgc2VsZi5zaXplcy5hcHBlbmQoc3RyKHNpemUpKQorCisgICAgZGVmIHNhdmVfYnVpbGRzdGF0cyhzZWxmLCBsYWJlbD1Ob25lKToKKyAgICAgICAgIiIiU2F2ZSBidWlsZHN0YXRzIiIiCisgICAgICAgIGRlZiBzcGxpdF9uZXZyKG5ldnIpOgorICAgICAgICAgICAgIiIiU3BsaXQgbmFtZSBhbmQgdmVyc2lvbiBpbmZvcm1hdGlvbiBmcm9tIHJlY2lwZSAibmV2ciIgc3RyaW5nIiIiCisgICAgICAgICAgICBuX2VfdiwgcmV2aXNpb24gPSBuZXZyLnJzcGxpdCgnLScsIDEpCisgICAgICAgICAgICBtYXRjaCA9IHJlLm1hdGNoKHInXig/UDxuYW1lPlxTKyktKCg/UDxlcG9jaD5bMC05XXsxLDV9KV8pPyg/UDx2ZXJzaW9uPlswLTldXFMqKSQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuX2VfdikKKyAgICAgICAgICAgIGlmIG5vdCBtYXRjaDoKKyAgICAgICAgICAgICAgICAjIElmIHdlJ3JlIG5vdCBhYmxlIHRvIHBhcnNlIGEgdmVyc2lvbiBzdGFydGluZyB3aXRoIGEgbnVtYmVyLCBqdXN0CisgICAgICAgICAgICAgICAgIyB0YWtlIHRoZSBwYXJ0IGFmdGVyIGxhc3QgZGFzaAorICAgICAgICAgICAgICAgIG1hdGNoID0gcmUubWF0Y2gocideKD9QPG5hbWU+XFMrKS0oKD9QPGVwb2NoPlswLTldezEsNX0pXyk/KD9QPHZlcnNpb24+W14tXSspJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuX2VfdikKKyAgICAgICAgICAgIG5hbWUgPSBtYXRjaC5ncm91cCgnbmFtZScpCisgICAgICAgICAgICB2ZXJzaW9uID0gbWF0Y2guZ3JvdXAoJ3ZlcnNpb24nKQorICAgICAgICAgICAgZXBvY2ggPSBtYXRjaC5ncm91cCgnZXBvY2gnKQorICAgICAgICAgICAgcmV0dXJuIG5hbWUsIGVwb2NoLCB2ZXJzaW9uLCByZXZpc2lvbgorCisgICAgICAgIGRlZiBic190b19qc29uKGZpbGVuYW1lKToKKyAgICAgICAgICAgICIiIkNvbnZlcnQgKHRhc2spIGJ1aWxkc3RhdHMgZmlsZSBpbnRvIGpzb24gZm9ybWF0IiIiCisgICAgICAgICAgICBic19qc29uID0geydpb3N0YXQnOiB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgJ3J1c2FnZSc6IHt9LAorICAgICAgICAgICAgICAgICAgICAgICAnY2hpbGRfcnVzYWdlJzoge319CisgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUpIGFzIGZvYmo6CisgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZm9iai5yZWFkbGluZXMoKToKKyAgICAgICAgICAgICAgICAgICAga2V5LCB2YWwgPSBsaW5lLnNwbGl0KCc6JywgMSkKKyAgICAgICAgICAgICAgICAgICAgdmFsID0gdmFsLnN0cmlwKCkKKyAgICAgICAgICAgICAgICAgICAgaWYga2V5ID09ICdTdGFydGVkJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X3RpbWUgPSBkYXRldGltZS51dGNmcm9tdGltZXN0YW1wKGZsb2F0KHZhbCkpCisgICAgICAgICAgICAgICAgICAgICAgICBic19qc29uWydzdGFydF90aW1lJ10gPSBzdGFydF90aW1lCisgICAgICAgICAgICAgICAgICAgIGVsaWYga2V5ID09ICdFbmRlZCc6CisgICAgICAgICAgICAgICAgICAgICAgICBlbmRfdGltZSA9IGRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAoZmxvYXQodmFsKSkKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBrZXkuc3RhcnRzd2l0aCgnSU8gJyk6CisgICAgICAgICAgICAgICAgICAgICAgICBzcGxpdCA9IGtleS5zcGxpdCgpCisgICAgICAgICAgICAgICAgICAgICAgICBic19qc29uWydpb3N0YXQnXVtzcGxpdFsxXV0gPSBpbnQodmFsKQorICAgICAgICAgICAgICAgICAgICBlbGlmIGtleS5maW5kKCdydXNhZ2UnKSA+PSAwOgorICAgICAgICAgICAgICAgICAgICAgICAgc3BsaXQgPSBrZXkuc3BsaXQoKQorICAgICAgICAgICAgICAgICAgICAgICAgcnVfa2V5ID0gc3BsaXRbLTFdCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBydV9rZXkgaW4gKCdydV9zdGltZScsICdydV91dGltZScpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IGZsb2F0KHZhbCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsID0gaW50KHZhbCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJ1X3R5cGUgPSAncnVzYWdlJyBpZiBzcGxpdFswXSA9PSAncnVzYWdlJyBlbHNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2hpbGRfcnVzYWdlJworICAgICAgICAgICAgICAgICAgICAgICAgYnNfanNvbltydV90eXBlXVtydV9rZXldID0gdmFsCisgICAgICAgICAgICAgICAgICAgIGVsaWYga2V5ID09ICdTdGF0dXMnOgorICAgICAgICAgICAgICAgICAgICAgICAgYnNfanNvblsnc3RhdHVzJ10gPSB2YWwKKyAgICAgICAgICAgIGJzX2pzb25bJ2VsYXBzZWRfdGltZSddID0gZW5kX3RpbWUgLSBzdGFydF90aW1lCisgICAgICAgICAgICByZXR1cm4gYnNfanNvbgorCisgICAgICAgIGxvZy5pbmZvKCdTYXZpbmcgYnVpbGRzdGF0cyBpbiBKU09OIGZvcm1hdCcpCisgICAgICAgIGJzX2RpcnMgPSBzb3J0ZWQob3MubGlzdGRpcihzZWxmLmJiX3ZhcnNbJ0JVSUxEU1RBVFNfQkFTRSddKSkKKyAgICAgICAgaWYgbGVuKGJzX2RpcnMpID4gMToKKyAgICAgICAgICAgIGxvZy53YXJuaW5nKCJNdWx0aXBsZSBidWlsZHN0YXRzIGZvdW5kIGZvciB0ZXN0ICVzLCBvbmx5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJhcmNoaXZpbmcgdGhlIGxhc3Qgb25lIiwgc2VsZi5uYW1lKQorICAgICAgICBic19kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi5iYl92YXJzWydCVUlMRFNUQVRTX0JBU0UnXSwgYnNfZGlyc1stMV0pCisKKyAgICAgICAgYnVpbGRzdGF0cyA9IFtdCisgICAgICAgIGZvciBmbmFtZSBpbiBvcy5saXN0ZGlyKGJzX2Rpcik6CisgICAgICAgICAgICByZWNpcGVfZGlyID0gb3MucGF0aC5qb2luKGJzX2RpciwgZm5hbWUpCisgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihyZWNpcGVfZGlyKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgbmFtZSwgZXBvY2gsIHZlcnNpb24sIHJldmlzaW9uID0gc3BsaXRfbmV2cihmbmFtZSkKKyAgICAgICAgICAgIHJlY2lwZV9icyA9IHsnbmFtZSc6IG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vwb2NoJzogZXBvY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcnNpb24nOiB2ZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICdyZXZpc2lvbic6IHJldmlzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICd0YXNrcyc6IHt9fQorICAgICAgICAgICAgZm9yIHRhc2sgaW4gb3MubGlzdGRpcihyZWNpcGVfZGlyKToKKyAgICAgICAgICAgICAgICByZWNpcGVfYnNbJ3Rhc2tzJ11bdGFza10gPSBic190b19qc29uKG9zLnBhdGguam9pbihyZWNpcGVfZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2spKQorICAgICAgICAgICAgYnVpbGRzdGF0cy5hcHBlbmQocmVjaXBlX2JzKQorCisgICAgICAgICMgV3JpdGUgYnVpbGRzdGF0cyBpbnRvIGpzb24gZmlsZQorICAgICAgICBwb3N0Zml4ID0gJy4nICsgc3RyX3RvX2ZuKGxhYmVsKSBpZiBsYWJlbCBlbHNlICcnCisgICAgICAgIHBvc3RmaXggKz0gJy5qc29uJworICAgICAgICBvdXRmaWxlID0gb3MucGF0aC5qb2luKHNlbGYub3V0X2RpciwgJ2J1aWxkc3RhdHMnICsgcG9zdGZpeCkKKyAgICAgICAgd2l0aCBvcGVuKG91dGZpbGUsICd3JykgYXMgZm9iajoKKyAgICAgICAgICAgIGpzb24uZHVtcChidWlsZHN0YXRzLCBmb2JqLCBpbmRlbnQ9NCwgc29ydF9rZXlzPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgY2xzPVJlc3VsdHNKc29uRW5jb2RlcikKKyAgICAgICAgcmV0dXJuIG91dGZpbGUKKworICAgIGRlZiBybV90bXAoc2VsZik6CisgICAgICAgICIiIkNsZWFudXAgdGVtcG9yYXJ5L2ludGVybWVkaWF0ZSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMiIiIKKyAgICAgICAgbG9nLmRlYnVnKCJSZW1vdmluZyB0ZW1wb3JhcnkgYW5kIGNhY2hlIGZpbGVzIikKKyAgICAgICAgZm9yIG5hbWUgaW4gWydiaXRiYWtlLmxvY2snLCAnY29uZi9zYW5pdHlfaW5mbycsCisgICAgICAgICAgICAgICAgICAgICBzZWxmLmJiX3ZhcnNbJ1RNUERJUiddXToKKyAgICAgICAgICAgIG9lLnBhdGgucmVtb3ZlKG5hbWUsIHJlY3Vyc2U9VHJ1ZSkKKworICAgIGRlZiBybV9zc3RhdGUoc2VsZik6CisgICAgICAgICIiIlJlbW92ZSBzc3RhdGUgZGlyZWN0b3J5IiIiCisgICAgICAgIGxvZy5kZWJ1ZygiUmVtb3Zpbmcgc3N0YXRlLWNhY2hlIikKKyAgICAgICAgb2UucGF0aC5yZW1vdmUoc2VsZi5iYl92YXJzWydTU1RBVEVfRElSJ10sIHJlY3Vyc2U9VHJ1ZSkKKworICAgIGRlZiBybV9jYWNoZShzZWxmKToKKyAgICAgICAgIiIiRHJvcCBiaXRiYWtlIGNhY2hlcyIiIgorICAgICAgICBvZS5wYXRoLnJlbW92ZShzZWxmLmJiX3ZhcnNbJ1BFUlNJU1RFTlRfRElSJ10sIHJlY3Vyc2U9VHJ1ZSkKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgc3luYygpOgorICAgICAgICAiIiJTeW5jIGFuZCBkcm9wIGtlcm5lbCBjYWNoZXMiIiIKKyAgICAgICAgbG9nLmRlYnVnKCJTeW5jaW5nIGFuZCBkcm9wcGluZyBrZXJuZWwgY2FjaGVzIiIiKQorICAgICAgICBLZXJuZWxEcm9wQ2FjaGVzLmRyb3AoKQorICAgICAgICBvcy5zeW5jKCkKKyAgICAgICAgIyBXYWl0IGEgYml0IGZvciBhbGwgdGhlIGRpcnR5IGJsb2NrcyB0byBiZSB3cml0dGVuIG9udG8gZGlzaworICAgICAgICB0aW1lLnNsZWVwKDMpCisKKworY2xhc3MgQnVpbGRQZXJmVGVzdExvYWRlcih1bml0dGVzdC5UZXN0TG9hZGVyKToKKyAgICAiIiJUZXN0IGxvYWRlciBmb3IgYnVpbGQgcGVyZm9ybWFuY2UgdGVzdHMiIiIKKyAgICBzb3J0VGVzdE1ldGhvZHNVc2luZyA9IE5vbmUKKworCitjbGFzcyBCdWlsZFBlcmZUZXN0UnVubmVyKHVuaXR0ZXN0LlRleHRUZXN0UnVubmVyKToKKyAgICAiIiJUZXN0IGxvYWRlciBmb3IgYnVpbGQgcGVyZm9ybWFuY2UgdGVzdHMiIiIKKyAgICBzb3J0VGVzdE1ldGhvZHNVc2luZyA9IE5vbmUKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvdXRfZGlyLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzdXBlcihCdWlsZFBlcmZUZXN0UnVubmVyLCBzZWxmKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHNlbGYub3V0X2RpciA9IG91dF9kaXIKKworICAgIGRlZiBfbWFrZVJlc3VsdChzZWxmKToKKyAgICAgICByZXR1cm4gQnVpbGRQZXJmVGVzdFJlc3VsdChzZWxmLm91dF9kaXIsIHNlbGYuc3RyZWFtLCBzZWxmLmRlc2NyaXB0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnZlcmJvc2l0eSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2J1aWxkcGVyZi90ZXN0X2Jhc2ljLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvYnVpbGRwZXJmL3Rlc3RfYmFzaWMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E0OGMxZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2J1aWxkcGVyZi90ZXN0X2Jhc2ljLnB5CkBAIC0wLDAgKzEsMTI3IEBACisjIENvcHlyaWdodCAoYykgMjAxNiwgSW50ZWwgQ29ycG9yYXRpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisjIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsCisjIHZlcnNpb24gMiwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKKyMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yCisjIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKKyMgbW9yZSBkZXRhaWxzLgorIworIiIiQmFzaWMgc2V0IG9mIGJ1aWxkIHBlcmZvcm1hbmNlIHRlc3RzIiIiCitpbXBvcnQgb3MKK2ltcG9ydCBzaHV0aWwKKworaW1wb3J0IG9lLnBhdGgKK2Zyb20gb2VxYS5idWlsZHBlcmYgaW1wb3J0IEJ1aWxkUGVyZlRlc3RDYXNlCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGdldF9iYl92YXJzCisKKworY2xhc3MgVGVzdDFQMShCdWlsZFBlcmZUZXN0Q2FzZSk6CisgICAgYnVpbGRfdGFyZ2V0ID0gJ2NvcmUtaW1hZ2Utc2F0bycKKworICAgIGRlZiB0ZXN0MShzZWxmKToKKyAgICAgICAgIiIiTWVhc3VyZSB3YWxsIGNsb2NrIG9mIGJpdGJha2UgY29yZS1pbWFnZS1zYXRvIGFuZCBzaXplIG9mIHRtcCBkaXIiIiIKKyAgICAgICAgc2VsZi5ybV90bXAoKQorICAgICAgICBzZWxmLnJtX3NzdGF0ZSgpCisgICAgICAgIHNlbGYucm1fY2FjaGUoKQorICAgICAgICBzZWxmLnN5bmMoKQorICAgICAgICBzZWxmLm1lYXN1cmVfY21kX3Jlc291cmNlcyhbJ2JpdGJha2UnLCBzZWxmLmJ1aWxkX3RhcmdldF0sICdidWlsZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiaXRiYWtlICcgKyBzZWxmLmJ1aWxkX3RhcmdldCwgc2F2ZV9icz1UcnVlKQorICAgICAgICBzZWxmLm1lYXN1cmVfZGlza191c2FnZShzZWxmLmJiX3ZhcnNbJ1RNUERJUiddLCAndG1wZGlyJywgJ3RtcGRpcicpCisKKworY2xhc3MgVGVzdDFQMihCdWlsZFBlcmZUZXN0Q2FzZSk6CisgICAgYnVpbGRfdGFyZ2V0ID0gJ3ZpcnR1YWwva2VybmVsJworCisgICAgZGVmIHRlc3QxMihzZWxmKToKKyAgICAgICAgIiIiTWVhc3VyZSBiaXRiYWtlIHZpcnR1YWwva2VybmVsIiIiCisgICAgICAgICMgQnVpbGQgYW5kIGNsZWFucyBzdGF0ZSBpbiBvcmRlciB0byBnZXQgYWxsIGRlcGVuZGVuY2llcyBwcmUtYnVpbHQKKyAgICAgICAgc2VsZi5sb2dfY21kX291dHB1dChbJ2JpdGJha2UnLCBzZWxmLmJ1aWxkX3RhcmdldF0pCisgICAgICAgIHNlbGYubG9nX2NtZF9vdXRwdXQoWydiaXRiYWtlJywgc2VsZi5idWlsZF90YXJnZXQsICctYycsICdjbGVhbnNzdGF0ZSddKQorCisgICAgICAgIHNlbGYuc3luYygpCisgICAgICAgIHNlbGYubWVhc3VyZV9jbWRfcmVzb3VyY2VzKFsnYml0YmFrZScsIHNlbGYuYnVpbGRfdGFyZ2V0XSwgJ2J1aWxkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JpdGJha2UgJyArIHNlbGYuYnVpbGRfdGFyZ2V0KQorCisKK2NsYXNzIFRlc3QxUDMoQnVpbGRQZXJmVGVzdENhc2UpOgorICAgIGJ1aWxkX3RhcmdldCA9ICdjb3JlLWltYWdlLXNhdG8nCisKKyAgICBkZWYgdGVzdDEzKHNlbGYpOgorICAgICAgICAiIiJCdWlsZCBjb3JlLWltYWdlLXNhdG8gd2l0aCBybV93b3JrIGVuYWJsZWQiIiIKKyAgICAgICAgcG9zdGZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi5vdXRfZGlyLCAncG9zdGZpbGUuY29uZicpCisgICAgICAgIHdpdGggb3Blbihwb3N0ZmlsZSwgJ3cnKSBhcyBmb2JqOgorICAgICAgICAgICAgZm9iai53cml0ZSgnSU5IRVJJVCArPSAicm1fd29yayJcbicpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYucm1fdG1wKCkKKyAgICAgICAgICAgIHNlbGYucm1fc3N0YXRlKCkKKyAgICAgICAgICAgIHNlbGYucm1fY2FjaGUoKQorICAgICAgICAgICAgc2VsZi5zeW5jKCkKKyAgICAgICAgICAgIGNtZCA9IFsnYml0YmFrZScsICctUicsIHBvc3RmaWxlLCBzZWxmLmJ1aWxkX3RhcmdldF0KKyAgICAgICAgICAgIHNlbGYubWVhc3VyZV9jbWRfcmVzb3VyY2VzKGNtZCwgJ2J1aWxkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiaXRiYWtlJyArIHNlbGYuYnVpbGRfdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZV9icz1UcnVlKQorICAgICAgICAgICAgc2VsZi5tZWFzdXJlX2Rpc2tfdXNhZ2Uoc2VsZi5iYl92YXJzWydUTVBESVInXSwgJ3RtcGRpcicsICd0bXBkaXInKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MudW5saW5rKHBvc3RmaWxlKQorCisKK2NsYXNzIFRlc3QyKEJ1aWxkUGVyZlRlc3RDYXNlKToKKyAgICBidWlsZF90YXJnZXQgPSAnY29yZS1pbWFnZS1zYXRvJworCisgICAgZGVmIHRlc3QyKHNlbGYpOgorICAgICAgICAiIiJNZWFzdXJlIGJpdGJha2UgY29yZS1pbWFnZS1zYXRvIC1jIHJvb3RmcyB3aXRoIHNzdGF0ZSIiIgorICAgICAgICAjIEJ1aWxkIG9uY2UgaW4gb3JkZXIgdG8gcG9wdWxhdGUgc3N0YXRlIGNhY2hlCisgICAgICAgIHNlbGYubG9nX2NtZF9vdXRwdXQoWydiaXRiYWtlJywgc2VsZi5idWlsZF90YXJnZXRdKQorCisgICAgICAgIHNlbGYucm1fdG1wKCkKKyAgICAgICAgc2VsZi5ybV9jYWNoZSgpCisgICAgICAgIHNlbGYuc3luYygpCisgICAgICAgIGNtZCA9IFsnYml0YmFrZScsIHNlbGYuYnVpbGRfdGFyZ2V0LCAnLWMnLCAncm9vdGZzJ10KKyAgICAgICAgc2VsZi5tZWFzdXJlX2NtZF9yZXNvdXJjZXMoY21kLCAnZG9fcm9vdGZzJywgJ2JpdGJha2UgZG9fcm9vdGZzJykKKworCitjbGFzcyBUZXN0MyhCdWlsZFBlcmZUZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdDMoc2VsZik6CisgICAgICAgICIiIlBhcnNpbmcgdGltZSBtZXRyaWNzIChiaXRiYWtlIC1wKSIiIgorICAgICAgICAjIERyb3AgYWxsIGNhY2hlcyBhbmQgcGFyc2UKKyAgICAgICAgc2VsZi5ybV9jYWNoZSgpCisgICAgICAgIG9lLnBhdGgucmVtb3ZlKG9zLnBhdGguam9pbihzZWxmLmJiX3ZhcnNbJ1RNUERJUiddLCAnY2FjaGUnKSwgVHJ1ZSkKKyAgICAgICAgc2VsZi5tZWFzdXJlX2NtZF9yZXNvdXJjZXMoWydiaXRiYWtlJywgJy1wJ10sICdwYXJzZV8xJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JpdGJha2UgLXAgKG5vIGNhY2hlcyknKQorICAgICAgICAjIERyb3AgdG1wL2NhY2hlCisgICAgICAgIG9lLnBhdGgucmVtb3ZlKG9zLnBhdGguam9pbihzZWxmLmJiX3ZhcnNbJ1RNUERJUiddLCAnY2FjaGUnKSwgVHJ1ZSkKKyAgICAgICAgc2VsZi5tZWFzdXJlX2NtZF9yZXNvdXJjZXMoWydiaXRiYWtlJywgJy1wJ10sICdwYXJzZV8yJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JpdGJha2UgLXAgKG5vIHRtcC9jYWNoZSknKQorICAgICAgICAjIFBhcnNlIHdpdGggZnVsbHkgY2FjaGVkIGRhdGEKKyAgICAgICAgc2VsZi5tZWFzdXJlX2NtZF9yZXNvdXJjZXMoWydiaXRiYWtlJywgJy1wJ10sICdwYXJzZV8zJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JpdGJha2UgLXAgKGNhY2hlZCknKQorCisKK2NsYXNzIFRlc3Q0KEJ1aWxkUGVyZlRlc3RDYXNlKToKKyAgICBidWlsZF90YXJnZXQgPSAnY29yZS1pbWFnZS1zYXRvJworCisgICAgZGVmIHRlc3Q0KHNlbGYpOgorICAgICAgICAiIiJlU0RLIG1ldHJpY3MiIiIKKyAgICAgICAgc2VsZi5sb2dfY21kX291dHB1dCgiYml0YmFrZSB7fSAtYyBkb19wb3B1bGF0ZV9zZGtfZXh0Ii5mb3JtYXQoCisgICAgICAgICAgICBzZWxmLmJ1aWxkX3RhcmdldCkpCisgICAgICAgIHNlbGYuYmJfdmFycyA9IGdldF9iYl92YXJzKE5vbmUsIHNlbGYuYnVpbGRfdGFyZ2V0KQorICAgICAgICB0bXBfZGlyID0gc2VsZi5iYl92YXJzWydUTVBESVInXQorICAgICAgICBpbnN0YWxsZXIgPSBvcy5wYXRoLmpvaW4oCisgICAgICAgICAgICBzZWxmLmJiX3ZhcnNbJ1NES19ERVBMT1knXSwKKyAgICAgICAgICAgIHNlbGYuYmJfdmFyc1snVE9PTENIQUlORVhUX09VVFBVVE5BTUUnXSArICcuc2gnKQorICAgICAgICAjIE1lYXN1cmUgaW5zdGFsbGVyIHNpemUKKyAgICAgICAgc2VsZi5tZWFzdXJlX2Rpc2tfdXNhZ2UoaW5zdGFsbGVyLCAnaW5zdGFsbGVyX2JpbicsICdlU0RLIGluc3RhbGxlcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGFyZW50X3NpemU9VHJ1ZSkKKyAgICAgICAgIyBNZWFzdXJlIGRlcGxveW1lbnQgdGltZSBhbmQgZGVwbG95ZWQgc2l6ZQorICAgICAgICBkZXBsb3lfZGlyID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdlc2RrLWRlcGxveScpCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGRlcGxveV9kaXIpOgorICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShkZXBsb3lfZGlyKQorICAgICAgICBzZWxmLnN5bmMoKQorICAgICAgICBzZWxmLm1lYXN1cmVfY21kX3Jlc291cmNlcyhbaW5zdGFsbGVyLCAnLXknLCAnLWQnLCBkZXBsb3lfZGlyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcGxveScsICdlU0RLIGRlcGxveScpCisgICAgICAgIHNlbGYubWVhc3VyZV9kaXNrX3VzYWdlKGRlcGxveV9kaXIsICdkZXBsb3lfZGlyJywgJ2RlcGxveSBkaXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBhcmVudF9zaXplPVRydWUpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb250cm9sbGVycy9tYXN0ZXJpbWFnZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvbnRyb2xsZXJzL21hc3RlcmltYWdlLnB5CmluZGV4IDUyMmY5ZWIuLjljZTNiZjggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvbnRyb2xsZXJzL21hc3RlcmltYWdlLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvbnRyb2xsZXJzL21hc3RlcmltYWdlLnB5CkBAIC0yNCw5ICsyNCw3IEBACiAKIGZyb20gYWJjIGltcG9ydCBBQkNNZXRhLCBhYnN0cmFjdG1ldGhvZAogCi1jbGFzcyBNYXN0ZXJJbWFnZUhhcmR3YXJlVGFyZ2V0KG9lcWEudGFyZ2V0Y29udHJvbC5CYXNlVGFyZ2V0KToKLQotICAgIF9fbWV0YWNsYXNzX18gPSBBQkNNZXRhCitjbGFzcyBNYXN0ZXJJbWFnZUhhcmR3YXJlVGFyZ2V0KG9lcWEudGFyZ2V0Y29udHJvbC5CYXNlVGFyZ2V0LCBtZXRhY2xhc3M9QUJDTWV0YSk6CiAKICAgICBzdXBwb3J0ZWRfaW1hZ2VfZnN0eXBlcyA9IFsndGFyLmd6JywgJ3Rhci5iejInXQogCkBAIC0xOTksMyArMTk3LDQzIEBACiAgICAgICAgIHNlbGYucG93ZXJfY3ljbGUoc2VsZi5tYXN0ZXIpCiAgICAgICAgICMgdGhlcmUgYXJlIGJldHRlciB3YXlzIHRoYW4gYSB0aW1lb3V0IGJ1dCB0aGlzIHNob3VsZCB3b3JrIGZvciBub3cKICAgICAgICAgdGltZS5zbGVlcCgxMjApCisKKworY2xhc3MgU3lzdGVtZGJvb3RUYXJnZXQoTWFzdGVySW1hZ2VIYXJkd2FyZVRhcmdldCk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZCk6CisgICAgICAgIHN1cGVyKFN5c3RlbWRib290VGFyZ2V0LCBzZWxmKS5fX2luaXRfXyhkKQorICAgICAgICAjIHRoaXMgdGhlIHZhbHVlIHdlIG5lZWQgdG8gc2V0IGluIHRoZSBMb2FkZXJFbnRyeU9uZVNob3QgRUZJIHZhcmlhYmxlCisgICAgICAgICMgc28gdGhlIHN5c3RlbSBib290cyB0aGUgJ3Rlc3QnIGJvb3Rsb2FkZXIgbGFiZWwgYW5kIG5vdCB0aGUgZGVmYXVsdAorICAgICAgICAjIFRoZSBmaXJzdCBmb3VyIGJ5dGVzIGFyZSBFRkkgYml0cywgYW5kIHRoZSByZXN0IGlzIGFuIHV0Zi0xNmxlIHN0cmluZworICAgICAgICAjIChFRkkgdmFycyB2YWx1ZXMgbmVlZCB0byBiZSB1dGYtMTYpCisgICAgICAgICMgJCBlY2hvIC1lbiAidGVzdFwwIiB8IGljb252IC1mIGFzY2lpIC10IHV0Zi0xNmxlIHwgaGV4ZHVtcCAtQworICAgICAgICAjIDAwMDAwMDAwICA3NCAwMCA2NSAwMCA3MyAwMCA3NCAwMCAgMDAgMDAgICAgICAgICAgICAgICAgICAgIHx0LmUucy50Li4ufAorICAgICAgICBzZWxmLmVmaXZhcnZhbHVlID0gcidceDA3XHgwMFx4MDBceDAwXHg3NFx4MDBceDY1XHgwMFx4NzNceDAwXHg3NFx4MDBceDAwXHgwMCcKKyAgICAgICAgc2VsZi5kZXBsb3lfY21kcyA9IFsKKyAgICAgICAgICAgICAgICAnbW91bnQgLUwgYm9vdCAvYm9vdCcsCisgICAgICAgICAgICAgICAgJ21rZGlyIC1wIC9tbnQvdGVzdHJvb3RmcycsCisgICAgICAgICAgICAgICAgJ21vdW50IC1MIHRlc3Ryb290ZnMgL21udC90ZXN0cm9vdGZzJywKKyAgICAgICAgICAgICAgICAnbW9kcHJvYmUgZWZpdmFyZnMnLAorICAgICAgICAgICAgICAgICdtb3VudCAtdCBlZml2YXJmcyBlZml2YXJmcyAvc3lzL2Zpcm13YXJlL2VmaS9lZml2YXJzJywKKyAgICAgICAgICAgICAgICAnY3Agfi90ZXN0LWtlcm5lbCAvYm9vdCcsCisgICAgICAgICAgICAgICAgJ3JtIC1yZiAvbW50L3Rlc3Ryb290ZnMvKicsCisgICAgICAgICAgICAgICAgJ3RhciB4dmYgfi90ZXN0LXJvb3Rmcy4lcyAtQyAvbW50L3Rlc3Ryb290ZnMnICUgc2VsZi5pbWFnZV9mc3R5cGUsCisgICAgICAgICAgICAgICAgJ3ByaW50ZiAiJXMiID4gL3N5cy9maXJtd2FyZS9lZmkvZWZpdmFycy9Mb2FkZXJFbnRyeU9uZVNob3QtNGE2N2IwODItMGE0Yy00MWNmLWI2YzctNDQwYjI5YmI4YzRmJyAlIHNlbGYuZWZpdmFydmFsdWUKKyAgICAgICAgICAgICAgICBdCisKKyAgICBkZWYgX2RlcGxveShzZWxmKToKKyAgICAgICAgIyBtYWtlIHN1cmUgdGhlc2UgYXJlbid0IG1vdW50ZWQKKyAgICAgICAgc2VsZi5tYXN0ZXIucnVuKCJ1bW91bnQgL2Jvb3Q7IHVtb3VudCAvbW50L3Rlc3Ryb290ZnM7IHVtb3VudCAvc3lzL2Zpcm13YXJlL2VmaS9lZml2YXJzOyIpCisgICAgICAgICMgZnJvbSBub3cgb24sIGV2ZXJ5IGRlcGxveSBjbWQgc2hvdWxkIHJldHVybiAwCisgICAgICAgICMgZWxzZSBhbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24gYnkgc3NoY29udHJvbAorICAgICAgICBzZWxmLm1hc3Rlci5pZ25vcmVfc3RhdHVzID0gRmFsc2UKKyAgICAgICAgc2VsZi5tYXN0ZXIuY29weV90byhzZWxmLnJvb3RmcywgIn4vdGVzdC1yb290ZnMuIiArIHNlbGYuaW1hZ2VfZnN0eXBlKQorICAgICAgICBzZWxmLm1hc3Rlci5jb3B5X3RvKHNlbGYua2VybmVsLCAifi90ZXN0LWtlcm5lbCIpCisgICAgICAgIGZvciBjbWQgaW4gc2VsZi5kZXBsb3lfY21kczoKKyAgICAgICAgICAgIHNlbGYubWFzdGVyLnJ1bihjbWQpCisKKyAgICBkZWYgX3N0YXJ0KHNlbGYsIHBhcmFtcz1Ob25lKToKKyAgICAgICAgc2VsZi5wb3dlcl9jeWNsZShzZWxmLm1hc3RlcikKKyAgICAgICAgIyB0aGVyZSBhcmUgYmV0dGVyIHdheXMgdGhhbiBhIHRpbWVvdXQgYnV0IHRoaXMgc2hvdWxkIHdvcmsgZm9yIG5vdworICAgICAgICB0aW1lLnNsZWVwKDEyMCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL29ldGVzdC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL29ldGVzdC5weQppbmRleCAzZWQ1YmI4Li45NWQzYmY3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9vZXRlc3QucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvb2V0ZXN0LnB5CkBAIC0xMiw2ICsxMiw4IEBACiBpbXBvcnQgaW5zcGVjdAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzaWduYWwKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBmdW5jdG9vbHMKIHRyeToKICAgICBpbXBvcnQgYmIKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTU0LDE4ICs1NiwyOSBAQAogQExvZ1Jlc3VsdHMKIGNsYXNzIG9lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKKyAgICBwc2NtZCA9ICJwcyIKICAgICBsb25nTWVzc2FnZSA9IFRydWUKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBoYXNQYWNrYWdlKHNlbGYsIHBrZyk6Ci0gICAgICAgIGZvciBpdGVtIGluIG9lVGVzdC50Yy5wa2dtYW5pZmVzdC5zcGxpdCgnXG4nKToKLSAgICAgICAgICAgIGlmIHJlLm1hdGNoKHBrZywgaXRlbSk6CisgICAgICAgICIiIgorICAgICAgICBUcnVlIGlmIHRoZSBmdWxsIHBhY2thZ2UgbmFtZSBleGlzdHMgaW4gdGhlIG1hbmlmZXN0LCBGYWxzZSBvdGhlcndpc2UuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gcGtnIGluIG9lVGVzdC50Yy5wa2dtYW5pZmVzdAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGhhc1BhY2thZ2VNYXRjaChzZWxmLCBtYXRjaCk6CisgICAgICAgICIiIgorICAgICAgICBUcnVlIGlmIG1hdGNoIGV4aXN0cyBpbiB0aGUgbWFuaWZlc3QgYXMgYSByZWd1bGFyIGV4cHJlc3Npb24gc3Vic3RyaW5nLAorICAgICAgICBGYWxzZSBvdGhlcndpc2UuCisgICAgICAgICIiIgorICAgICAgICBmb3IgcyBpbiBvZVRlc3QudGMucGtnbWFuaWZlc3Q6CisgICAgICAgICAgICBpZiByZS5tYXRjaChtYXRjaCwgcyk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgaGFzRmVhdHVyZShzZWxmLGZlYXR1cmUpOgotCiAgICAgICAgIGlmIGZlYXR1cmUgaW4gb2VUZXN0LnRjLmltYWdlZmVhdHVyZXMgb3IgXAogICAgICAgICAgICAgICAgIGZlYXR1cmUgaW4gb2VUZXN0LnRjLmRpc3Ryb2ZlYXR1cmVzOgogICAgICAgICAgICAgcmV0dXJuIFRydWUKQEAgLTc4LDYgKzkxLDkgQEAKICAgICAgICAgc3VwZXIob2VSdW50aW1lVGVzdCwgc2VsZikuX19pbml0X18obWV0aG9kTmFtZSkKIAogICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgIyBJbnN0YWxsIHBhY2thZ2VzIGluIHRoZSBEVVQKKyAgICAgICAgc2VsZi50Yy5pbnN0YWxsX3VuaW5zdGFsbF9wYWNrYWdlcyhzZWxmLmlkKCkpCisKICAgICAgICAgIyBDaGVjayBpZiB0ZXN0IG5lZWRzIHRvIHJ1bgogICAgICAgICBpZiBzZWxmLnRjLnNpZ3Rlcm06CiAgICAgICAgICAgICBzZWxmLmZhaWwoIkdvdCBTSUdURVJNIikKQEAgLTkxLDYgKzEwNyw5IEBACiAgICAgICAgIHBhc3MKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgIyBVbmlzdGFsbCBwYWNrYWdlcyBpbiB0aGUgRFVUCisgICAgICAgIHNlbGYudGMuaW5zdGFsbF91bmluc3RhbGxfcGFja2FnZXMoc2VsZi5pZCgpLCBGYWxzZSkKKwogICAgICAgICByZXMgPSBnZXRSZXN1bHRzKCkKICAgICAgICAgIyBJZiBhIHRlc3QgZmFpbHMgb3IgdGhlcmUgaXMgYW4gZXhjZXB0aW9uIGR1bXAKICAgICAgICAgIyBmb3IgUWVtdVRhcmdldCBvbmx5CkBAIC0xMTcsNiArMTM2LDE1IEBACiAgICAgICAgICAgICBpZiBzdGF0dXMgIT0gMDoKICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdHVzCiAKK2NsYXNzIE9FVGVzdENhbGxlZFByb2Nlc3NFcnJvcihzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcik6CisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgInN0ZGVyciIpOgorICAgICAgICAgICAgcmV0dXJuICJDb21tYW5kICclcycgcmV0dXJuZWQgbm9uLXplcm8gZXhpdCBzdGF0dXMgJWQgd2l0aCBvdXRwdXQgJXMgYW5kIHN0ZGVyciAlcyIgJSAoc2VsZi5jbWQsIHNlbGYucmV0dXJuY29kZSwgc2VsZi5vdXRwdXQsIHNlbGYuc3RkZXJyKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuICJDb21tYW5kICclcycgcmV0dXJuZWQgbm9uLXplcm8gZXhpdCBzdGF0dXMgJWQgd2l0aCBvdXRwdXQgJXMiICUgKHNlbGYuY21kLCBzZWxmLnJldHVybmNvZGUsIHNlbGYub3V0cHV0KQorCitzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciA9IE9FVGVzdENhbGxlZFByb2Nlc3NFcnJvcgorCiBjbGFzcyBvZVNES1Rlc3Qob2VUZXN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWV0aG9kTmFtZT0ncnVuVGVzdCcpOgogICAgICAgICBzZWxmLnNka3Rlc3RkaXIgPSBvZVNES1Rlc3QudGMuc2RrdGVzdGRpcgpAQCAtMTI0LDEzICsxNTIsMTIgQEAKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBoYXNIb3N0UGFja2FnZShzZWxmLCBwa2cpOgotCiAgICAgICAgIGlmIHJlLnNlYXJjaChwa2csIG9lVGVzdC50Yy5ob3N0cGtnbWFuaWZlc3QpOgogICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICBkZWYgX3J1bihzZWxmLCBjbWQpOgotICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoIi4gJXMgPiAvZGV2L251bGw7ICVzOyIgJSAoc2VsZi50Yy5zZGtlbnYsIGNtZCksIHNoZWxsPVRydWUpCisgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgiLiAlcyA+IC9kZXYvbnVsbDsgJXM7IiAlIChzZWxmLnRjLnNka2VudiwgY21kKSwgc2hlbGw9VHJ1ZSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKS5kZWNvZGUoInV0Zi04IikKIAogY2xhc3Mgb2VTREtFeHRUZXN0KG9lU0RLVGVzdCk6CiAgICAgZGVmIF9ydW4oc2VsZiwgY21kKToKQEAgLTE0Miw3ICsxNjksNyBAQAogICAgICAgICBlbnZbJ1BBVEgnXSA9IGF2b2lkX3BhdGhzX2luX2Vudmlyb24ocGF0aHNfdG9fYXZvaWQpCiAKICAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCIuICVzID4gL2Rldi9udWxsOyJcCi0gICAgICAgICAgICAiICVzOyIgJSAoc2VsZi50Yy5zZGtlbnYsIGNtZCksIHNoZWxsPVRydWUsIGVudj1lbnYpCisgICAgICAgICAgICAiICVzOyIgJSAoc2VsZi50Yy5zZGtlbnYsIGNtZCksIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwgc2hlbGw9VHJ1ZSwgZW52PWVudikuZGVjb2RlKCJ1dGYtOCIpCiAKIGRlZiBnZXRtb2R1bGUocG9zPTIpOgogICAgICMgc3RhY2sgcmV0dXJucyBhIGxpc3Qgb2YgdHVwbGVzIGNvbnRhaW5nIGZyYW1lIGluZm9ybWF0aW9uCkBAIC0xODUsMTUgKzIxMiwyMiBAQAogICAgICAgICBfYnVmZmVyX2xvZ2dlciA9ICIiCiAKIGNsYXNzIFRlc3RDb250ZXh0KG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGQpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkLCBleHBvcnRlZD1GYWxzZSk6CiAgICAgICAgIHNlbGYuZCA9IGQKIAogICAgICAgICBzZWxmLnRlc3RzdWl0ZXMgPSBzZWxmLl9nZXRfdGVzdF9zdWl0ZXMoKQotICAgICAgICBzZWxmLnRlc3RzbGlzdCA9IHNlbGYuX2dldF90ZXN0c19saXN0KGQuZ2V0VmFyKCJCQlBBVEgiLCBUcnVlKS5zcGxpdCgnOicpKQorCisgICAgICAgIGlmIGV4cG9ydGVkOgorICAgICAgICAgICAgcGF0aCA9IFtvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSldCisgICAgICAgICAgICBleHRyYXBhdGggPSAiIgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcGF0aCA9IGQuZ2V0VmFyKCJCQlBBVEgiLCBUcnVlKS5zcGxpdCgnOicpCisgICAgICAgICAgICBleHRyYXBhdGggPSAibGliL29lcWEiCisKKyAgICAgICAgc2VsZi50ZXN0c2xpc3QgPSBzZWxmLl9nZXRfdGVzdHNfbGlzdChwYXRoLCBleHRyYXBhdGgpCiAgICAgICAgIHNlbGYudGVzdHNyZXF1aXJlZCA9IHNlbGYuX2dldF90ZXN0X3N1aXRlc19yZXF1aXJlZCgpCiAKLSAgICAgICAgc2VsZi5maWxlc2RpciA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKAotICAgICAgICAgICAgb2VxYS5ydW50aW1lLl9fZmlsZV9fKSksICJmaWxlcyIpCisgICAgICAgIHNlbGYuZmlsZXNkaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpLCAicnVudGltZS9maWxlcyIpCiAgICAgICAgIHNlbGYuaW1hZ2VmZWF0dXJlcyA9IGQuZ2V0VmFyKCJJTUFHRV9GRUFUVVJFUyIsIFRydWUpLnNwbGl0KCkKICAgICAgICAgc2VsZi5kaXN0cm9mZWF0dXJlcyA9IGQuZ2V0VmFyKCJESVNUUk9fRkVBVFVSRVMiLCBUcnVlKS5zcGxpdCgpCiAKQEAgLTIxMiw3ICsyNDYsNyBAQAogICAgICAgICByZXR1cm4gIiAiLmpvaW4odGNzKQogCiAgICAgIyByZXR1cm4gdGVzdCBsaXN0IGJ5IHR5cGUgYWxzbyBmaWx0ZXIgaWYgVEVTVF9TVUlURVMgaXMgc3BlY2lmaWVkCi0gICAgZGVmIF9nZXRfdGVzdHNfbGlzdChzZWxmLCBiYnBhdGgpOgorICAgIGRlZiBfZ2V0X3Rlc3RzX2xpc3Qoc2VsZiwgYmJwYXRoLCBleHRyYXBhdGgpOgogICAgICAgICB0ZXN0c2xpc3QgPSBbXQogCiAgICAgICAgIHR5cGUgPSBzZWxmLl9nZXRfdGVzdF9uYW1lc3BhY2UoKQpAQCAtMjI2LDExICsyNjAsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBmb3VuZCA9IEZhbHNlCiAgICAgICAgICAgICAgICAgZm9yIHAgaW4gYmJwYXRoOgotICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4ocCwgJ2xpYicsICdvZXFhJywgdHlwZSwgdGVzdG5hbWUgKyAnLnB5JykpOgorICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4ocCwgZXh0cmFwYXRoLCB0eXBlLCB0ZXN0bmFtZSArICIucHkiKSk6CiAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0c2xpc3QuYXBwZW5kKCJvZXFhLiIgKyB0eXBlICsgIi4iICsgdGVzdG5hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IFRydWUKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIGVsaWYgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHAsICdsaWInLCAnb2VxYScsIHR5cGUsIHRlc3RuYW1lLnNwbGl0KCIuIilbMF0gKyAnLnB5JykpOgorICAgICAgICAgICAgICAgICAgICBlbGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihwLCBleHRyYXBhdGgsIHR5cGUsIHRlc3RuYW1lLnNwbGl0KCIuIilbMF0gKyAiLnB5IikpOgogICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHNsaXN0LmFwcGVuZCgib2VxYS4iICsgdHlwZSArICIuIiArIHRlc3RuYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSBUcnVlCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawpAQCAtMjM5LDggKzI3Myw2IEBACiAKICAgICAgICAgaWYgImF1dG8iIGluIHNlbGYudGVzdHN1aXRlczoKICAgICAgICAgICAgIGRlZiBhZGRfYXV0b19saXN0KHBhdGgpOgotICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4ocGF0aCwgJ19faW5pdF9fLnB5JykpOgotICAgICAgICAgICAgICAgICAgICBiYi5mYXRhbCgnVGVzdHMgZGlyZWN0b3J5ICVzIGV4aXN0cyBidXQgaXMgbWlzc2luZyBfX2luaXRfXy5weScgJSBwYXRoKQogICAgICAgICAgICAgICAgIGZpbGVzID0gc29ydGVkKFtmIGZvciBmIGluIG9zLmxpc3RkaXIocGF0aCkgaWYgZi5lbmRzd2l0aCgnLnB5JykgYW5kIG5vdCBmLnN0YXJ0c3dpdGgoJ18nKV0pCiAgICAgICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6CiAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSA9ICdvZXFhLicgKyB0eXBlICsgJy4nICsgZls6LTNdCkBAIC0yNTUsNiArMjg3LDUxIEBACiAKICAgICAgICAgcmV0dXJuIHRlc3RzbGlzdAogCisgICAgZGVmIGdldFRlc3RNb2R1bGVzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyBhbGwgdGhlIHRlc3QgbW9kdWxlcyBpbiB0aGUgdGVzdGxpc3QuCisgICAgICAgICIiIgorCisgICAgICAgIGltcG9ydCBwa2d1dGlsCisKKyAgICAgICAgbW9kdWxlcyA9IFtdCisgICAgICAgIGZvciB0ZXN0IGluIHNlbGYudGVzdHNsaXN0OgorICAgICAgICAgICAgaWYgcmUuc2VhcmNoKCJcdytcLlx3K1wudGVzdF9cUysiLCB0ZXN0KToKKyAgICAgICAgICAgICAgICB0ZXN0ID0gJy4nLmpvaW4odC5zcGxpdCgnLicpWzozXSkKKyAgICAgICAgICAgIG1vZHVsZSA9IHBrZ3V0aWwuZ2V0X2xvYWRlcih0ZXN0KQorICAgICAgICAgICAgbW9kdWxlcy5hcHBlbmQobW9kdWxlKQorCisgICAgICAgIHJldHVybiBtb2R1bGVzCisKKyAgICBkZWYgZ2V0TW9kdWxlZnJvbUlEKHNlbGYsIHRlc3RfaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyB0aGUgdGVzdCBtb2R1bGUgYmFzZWQgb24gYSB0ZXN0IGlkLgorICAgICAgICAiIiIKKworICAgICAgICBtb2R1bGVfbmFtZSA9ICIuIi5qb2luKHRlc3RfaWQuc3BsaXQoIi4iKVs6M10pCisgICAgICAgIG1vZHVsZXMgPSBzZWxmLmdldFRlc3RNb2R1bGVzKCkKKyAgICAgICAgZm9yIG1vZHVsZSBpbiBtb2R1bGVzOgorICAgICAgICAgICAgaWYgbW9kdWxlLm5hbWUgPT0gbW9kdWxlX25hbWU6CisgICAgICAgICAgICAgICAgcmV0dXJuIG1vZHVsZQorCisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgZ2V0VGVzdHMoc2VsZiwgdGVzdCk6CisgICAgICAgICcnJ1JldHVybiBhbGwgaW5kaXZpZHVhbCB0ZXN0cyBleGVjdXRlZCB3aGVuIHJ1bm5pbmcgdGhlIHN1aXRlLicnJworICAgICAgICAjIFVuZm9ydHVuYXRlbHkgdW5pdHRlc3QgZG9lcyBub3QgaGF2ZSBhbiBBUEkgZm9yIHRoaXMsIHNvIHdlIGhhdmUKKyAgICAgICAgIyB0byByZWx5IG9uIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIFRoaXMgb25seSBuZWVkcyB0byB3b3JrCisgICAgICAgICMgZm9yIFRlc3RTdWl0ZSBjb250YWluaW5nIFRlc3RDYXNlLgorICAgICAgICBtZXRob2QgPSBnZXRhdHRyKHRlc3QsICdfdGVzdE1ldGhvZE5hbWUnLCBOb25lKQorICAgICAgICBpZiBtZXRob2Q6CisgICAgICAgICAgICAjIGxlYWYgY2FzZTogYSBUZXN0Q2FzZQorICAgICAgICAgICAgeWllbGQgdGVzdAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBMb29rIGludG8gVGVzdFN1aXRlLgorICAgICAgICAgICAgdGVzdHMgPSBnZXRhdHRyKHRlc3QsICdfdGVzdHMnLCBbXSkKKyAgICAgICAgICAgIGZvciB0MSBpbiB0ZXN0czoKKyAgICAgICAgICAgICAgICBmb3IgdDIgaW4gc2VsZi5nZXRUZXN0cyh0MSk6CisgICAgICAgICAgICAgICAgICAgIHlpZWxkIHQyCisKICAgICBkZWYgbG9hZFRlc3RzKHNlbGYpOgogICAgICAgICBzZXRhdHRyKG9lVGVzdCwgInRjIiwgc2VsZikKIApAQCAtMjYzLDM2ICszNDAsMjAgQEAKICAgICAgICAgc3VpdGVzID0gW3Rlc3Rsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUobmFtZSkgZm9yIG5hbWUgaW4gc2VsZi50ZXN0c2xpc3RdCiAgICAgICAgIHN1aXRlcyA9IGZpbHRlckJ5VGFnRXhwKHN1aXRlcywgZ2V0YXR0cihzZWxmLCAidGFnZXhwIiwgTm9uZSkpCiAKLSAgICAgICAgZGVmIGdldFRlc3RzKHRlc3QpOgotICAgICAgICAgICAgJycnUmV0dXJuIGFsbCBpbmRpdmlkdWFsIHRlc3RzIGV4ZWN1dGVkIHdoZW4gcnVubmluZyB0aGUgc3VpdGUuJycnCi0gICAgICAgICAgICAjIFVuZm9ydHVuYXRlbHkgdW5pdHRlc3QgZG9lcyBub3QgaGF2ZSBhbiBBUEkgZm9yIHRoaXMsIHNvIHdlIGhhdmUKLSAgICAgICAgICAgICMgdG8gcmVseSBvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLiBUaGlzIG9ubHkgbmVlZHMgdG8gd29yawotICAgICAgICAgICAgIyBmb3IgVGVzdFN1aXRlIGNvbnRhaW5pbmcgVGVzdENhc2UuCi0gICAgICAgICAgICBtZXRob2QgPSBnZXRhdHRyKHRlc3QsICdfdGVzdE1ldGhvZE5hbWUnLCBOb25lKQotICAgICAgICAgICAgaWYgbWV0aG9kOgotICAgICAgICAgICAgICAgICMgbGVhZiBjYXNlOiBhIFRlc3RDYXNlCi0gICAgICAgICAgICAgICAgeWllbGQgdGVzdAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIExvb2sgaW50byBUZXN0U3VpdGUuCi0gICAgICAgICAgICAgICAgdGVzdHMgPSBnZXRhdHRyKHRlc3QsICdfdGVzdHMnLCBbXSkKLSAgICAgICAgICAgICAgICBmb3IgdDEgaW4gdGVzdHM6Ci0gICAgICAgICAgICAgICAgICAgIGZvciB0MiBpbiBnZXRUZXN0cyh0MSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCB0MgotCiAgICAgICAgICMgRGV0ZXJtaW5lIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHN1aXRlcyBieSBsb29raW5nIGZvciBAc2tpcFVubGVzc1Bhc3NlZAogICAgICAgICAjIG1ldGhvZCBhbm5vdGF0aW9ucy4gU3VpdGUgQSBkZXBlbmRzIG9uIHN1aXRlIEIgaWYgYW55IG1ldGhvZCBpbiBBCiAgICAgICAgICMgZGVwZW5kcyBvbiBhIG1ldGhvZCBvbiBCLgogICAgICAgICBmb3Igc3VpdGUgaW4gc3VpdGVzOgogICAgICAgICAgICAgc3VpdGUuZGVwZW5kZW5jaWVzID0gW10KICAgICAgICAgICAgIHN1aXRlLmRlcHRoID0gMAotICAgICAgICAgICAgZm9yIHRlc3QgaW4gZ2V0VGVzdHMoc3VpdGUpOgorICAgICAgICAgICAgZm9yIHRlc3QgaW4gc2VsZi5nZXRUZXN0cyhzdWl0ZSk6CiAgICAgICAgICAgICAgICAgbWV0aG9kbmFtZSA9IGdldGF0dHIodGVzdCwgJ190ZXN0TWV0aG9kTmFtZScsIE5vbmUpCiAgICAgICAgICAgICAgICAgaWYgbWV0aG9kbmFtZToKICAgICAgICAgICAgICAgICAgICAgbWV0aG9kID0gZ2V0YXR0cih0ZXN0LCBtZXRob2RuYW1lKQogICAgICAgICAgICAgICAgICAgICBkZXBlbmRzX29uID0gZ2V0YXR0cihtZXRob2QsICdfZGVwZW5kc19vbicsIE5vbmUpCiAgICAgICAgICAgICAgICAgICAgIGlmIGRlcGVuZHNfb246CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZGVwX3N1aXRlIGluIHN1aXRlczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkZXBlbmRzX29uIGluIFtnZXRhdHRyKHQsICdfdGVzdE1ldGhvZE5hbWUnLCBOb25lKSBmb3IgdCBpbiBnZXRUZXN0cyhkZXBfc3VpdGUpXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkZXBlbmRzX29uIGluIFtnZXRhdHRyKHQsICdfdGVzdE1ldGhvZE5hbWUnLCBOb25lKSBmb3IgdCBpbiBzZWxmLmdldFRlc3RzKGRlcF9zdWl0ZSldOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkZXBfc3VpdGUgbm90IGluIHN1aXRlLmRlcGVuZGVuY2llcyBhbmQgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBfc3VpdGUgaXMgbm90IHN1aXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VpdGUuZGVwZW5kZW5jaWVzLmFwcGVuZChkZXBfc3VpdGUpCkBAIC0zMTQsNyArMzc1LDE0IEBACiAgICAgICAgIGZvciBpbmRleCwgc3VpdGUgaW4gZW51bWVyYXRlKHN1aXRlcyk6CiAgICAgICAgICAgICBzZXRfc3VpdGVfZGVwdGgoc3VpdGUpCiAgICAgICAgICAgICBzdWl0ZS5pbmRleCA9IGluZGV4Ci0gICAgICAgIHN1aXRlcy5zb3J0KGNtcD1sYW1iZGEgYSxiOiBjbXAoKGEuZGVwdGgsIGEuaW5kZXgpLCAoYi5kZXB0aCwgYi5pbmRleCkpKQorCisgICAgICAgIGRlZiBjbXAoYSwgYik6CisgICAgICAgICAgICByZXR1cm4gKGEgPiBiKSAtIChhIDwgYikKKworICAgICAgICBkZWYgY21wZnVuYyhhLCBiKToKKyAgICAgICAgICAgIHJldHVybiBjbXAoKGEuZGVwdGgsIGEuaW5kZXgpLCAoYi5kZXB0aCwgYi5pbmRleCkpCisKKyAgICAgICAgc3VpdGVzLnNvcnQoa2V5PWZ1bmN0b29scy5jbXBfdG9fa2V5KGNtcGZ1bmMpKQogCiAgICAgICAgIHNlbGYuc3VpdGUgPSB0ZXN0bG9hZGVyLnN1aXRlQ2xhc3Moc3VpdGVzKQogCkBAIC0zMzEsMzUgKzM5OSwyNCBAQAogCiAgICAgICAgIHJldHVybiBydW5uZXIucnVuKHNlbGYuc3VpdGUpCiAKLWNsYXNzIEltYWdlVGVzdENvbnRleHQoVGVzdENvbnRleHQpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkLCB0YXJnZXQsIGhvc3RfZHVtcGVyKToKLSAgICAgICAgc3VwZXIoSW1hZ2VUZXN0Q29udGV4dCwgc2VsZikuX19pbml0X18oZCkKLQotICAgICAgICBzZWxmLnRhZ2V4cCA9ICBkLmdldFZhcigiVEVTVF9TVUlURVNfVEFHUyIsIFRydWUpCitjbGFzcyBSdW50aW1lVGVzdENvbnRleHQoVGVzdENvbnRleHQpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkLCB0YXJnZXQsIGV4cG9ydGVkPUZhbHNlKToKKyAgICAgICAgc3VwZXIoUnVudGltZVRlc3RDb250ZXh0LCBzZWxmKS5fX2luaXRfXyhkLCBleHBvcnRlZCkKIAogICAgICAgICBzZWxmLnRhcmdldCA9IHRhcmdldAotICAgICAgICBzZWxmLmhvc3RfZHVtcGVyID0gaG9zdF9kdW1wZXIKIAorICAgICAgICBzZWxmLnBrZ21hbmlmZXN0ID0ge30KICAgICAgICAgbWFuaWZlc3QgPSBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoIkRFUExPWV9ESVJfSU1BR0UiLCBUcnVlKSwKICAgICAgICAgICAgICAgICBkLmdldFZhcigiSU1BR0VfTElOS19OQU1FIiwgVHJ1ZSkgKyAiLm1hbmlmZXN0IikKICAgICAgICAgbm9tYW5pZmVzdCA9IGQuZ2V0VmFyKCJJTUFHRV9OT19NQU5JRkVTVCIsIFRydWUpCiAgICAgICAgIGlmIG5vbWFuaWZlc3QgaXMgTm9uZSBvciBub21hbmlmZXN0ICE9ICIxIjoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICB3aXRoIG9wZW4obWFuaWZlc3QpIGFzIGY6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYucGtnbWFuaWZlc3QgPSBmLnJlYWQoKQorICAgICAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBmOgorICAgICAgICAgICAgICAgICAgICAgICAgKHBrZywgYXJjaCwgdmVyc2lvbikgPSBsaW5lLnN0cmlwKCkuc3BsaXQoKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wa2dtYW5pZmVzdFtwa2ddID0gKHZlcnNpb24sIGFyY2gpCiAgICAgICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBlOgogICAgICAgICAgICAgICAgIGJiLmZhdGFsKCJObyBwYWNrYWdlIG1hbmlmZXN0IGZpbGUgZm91bmQuIERpZCB5b3UgYnVpbGQgdGhlIGltYWdlP1xuJXMiICUgZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYucGtnbWFuaWZlc3QgPSAiIgotCi0gICAgICAgIHNlbGYuc2lndGVybSA9IEZhbHNlCi0gICAgICAgIHNlbGYub3JpZ3NpZ3Rlcm1oYW5kbGVyID0gc2lnbmFsLmdldHNpZ25hbChzaWduYWwuU0lHVEVSTSkKLSAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHVEVSTSwgc2VsZi5fc2lndGVybV9leGNlcHRpb24pCi0KLSAgICBkZWYgX3NpZ3Rlcm1fZXhjZXB0aW9uKHNlbGYsIHNpZ251bSwgc3RhY2tmcmFtZSk6Ci0gICAgICAgIGJiLndhcm4oIlRlc3RJbWFnZSByZWNlaXZlZCBTSUdURVJNLCBzaHV0dGluZyBkb3duLi4uIikKLSAgICAgICAgc2VsZi5zaWd0ZXJtID0gVHJ1ZQotICAgICAgICBzZWxmLnRhcmdldC5zdG9wKCkKIAogICAgIGRlZiBfZ2V0X3Rlc3RfbmFtZXNwYWNlKHNlbGYpOgogICAgICAgICByZXR1cm4gInJ1bnRpbWUiCkBAIC0zODIsOCArNDM5LDIyMyBAQAogICAgICAgICByZXR1cm4gW3QgZm9yIHQgaW4gc2VsZi5kLmdldFZhcigiVEVTVF9TVUlURVMiLCBUcnVlKS5zcGxpdCgpIGlmIHQgIT0gImF1dG8iXQogCiAgICAgZGVmIGxvYWRUZXN0cyhzZWxmKToKLSAgICAgICAgc3VwZXIoSW1hZ2VUZXN0Q29udGV4dCwgc2VsZikubG9hZFRlc3RzKCkKLSAgICAgICAgc2V0YXR0cihvZVJ1bnRpbWVUZXN0LCAicHNjbWQiLCAicHMgLWVmIiBpZiBvZVRlc3QuaGFzUGFja2FnZSgicHJvY3BzIikgZWxzZSAicHMiKQorICAgICAgICBzdXBlcihSdW50aW1lVGVzdENvbnRleHQsIHNlbGYpLmxvYWRUZXN0cygpCisgICAgICAgIGlmIG9lVGVzdC5oYXNQYWNrYWdlKCJwcm9jcHMiKToKKyAgICAgICAgICAgIG9lUnVudGltZVRlc3QucHNjbWQgPSAicHMgLWVmIgorCisgICAgZGVmIGV4dHJhY3RfcGFja2FnZXMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBGaW5kIHBhY2thZ2VzIHRoYXQgd2lsbCBiZSBuZWVkZWQgZHVyaW5nIHJ1bnRpbWUuCisgICAgICAgICIiIgorCisgICAgICAgIG1vZHVsZXMgPSBzZWxmLmdldFRlc3RNb2R1bGVzKCkKKyAgICAgICAgYmJwYXRocyA9IHNlbGYuZC5nZXRWYXIoIkJCUEFUSCIsIFRydWUpLnNwbGl0KCI6IikKKworICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYuZC5nZXRWYXIoIlRFU1RfRVhUUkFDVEVEX0RJUiIsIFRydWUpKQorICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYuZC5nZXRWYXIoIlRFU1RfUEFDS0FHRURfRElSIiwgVHJ1ZSkpCisgICAgICAgIGZvciBtb2R1bGUgaW4gbW9kdWxlczoKKyAgICAgICAgICAgIGpzb25fZmlsZSA9IHNlbGYuX2dldEpzb25GaWxlKG1vZHVsZSkKKyAgICAgICAgICAgIGlmIGpzb25fZmlsZToKKyAgICAgICAgICAgICAgICBuZWVkZWRfcGFja2FnZXMgPSBzZWxmLl9nZXROZWVkZWRQYWNrYWdlcyhqc29uX2ZpbGUpCisgICAgICAgICAgICAgICAgc2VsZi5fcGVyZm9ybV9wYWNrYWdlX2V4dHJhY3Rpb24obmVlZGVkX3BhY2thZ2VzKQorCisgICAgZGVmIF9wZXJmb3JtX3BhY2thZ2VfZXh0cmFjdGlvbihzZWxmLCBuZWVkZWRfcGFja2FnZXMpOgorICAgICAgICAiIiIKKyAgICAgICAgRXh0cmFjdCBwYWNrYWdlcyB0aGF0IHdpbGwgYmUgbmVlZGVkIGR1cmluZyBydW50aW1lLgorICAgICAgICAiIiIKKworICAgICAgICBpbXBvcnQgb2UucGF0aAorCisgICAgICAgIGV4dHJhY3RlZF9wYXRoID0gc2VsZi5kLmdldFZhcigiVEVTVF9FWFRSQUNURURfRElSIiwgVHJ1ZSkKKyAgICAgICAgcGFja2FnZWRfcGF0aCA9IHNlbGYuZC5nZXRWYXIoIlRFU1RfUEFDS0FHRURfRElSIiwgVHJ1ZSkKKworICAgICAgICBmb3Iga2V5LHZhbHVlIGluIG5lZWRlZF9wYWNrYWdlcy5pdGVtcygpOgorICAgICAgICAgICAgcGFja2FnZXMgPSAoKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgZGljdCk6CisgICAgICAgICAgICAgICAgcGFja2FnZXMgPSAodmFsdWUsICkKKyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZSh2YWx1ZSwgbGlzdCk6CisgICAgICAgICAgICAgICAgcGFja2FnZXMgPSB2YWx1ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBiYi5mYXRhbCgiRmFpbGVkIHRvIHByb2Nlc3MgbmVlZGVkIHBhY2thZ2VzIGZvciAlczsgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSBtdXN0IGJlIGEgZGljdCBvciBsaXN0IiAlIGtleSkKKworICAgICAgICAgICAgZm9yIHBhY2thZ2UgaW4gcGFja2FnZXM6CisgICAgICAgICAgICAgICAgcGtnID0gcGFja2FnZVsicGtnIl0KKyAgICAgICAgICAgICAgICBybSA9IHBhY2thZ2UuZ2V0KCJybSIsIEZhbHNlKQorICAgICAgICAgICAgICAgIGV4dHJhY3QgPSBwYWNrYWdlLmdldCgiZXh0cmFjdCIsIFRydWUpCisgICAgICAgICAgICAgICAgaWYgZXh0cmFjdDoKKyAgICAgICAgICAgICAgICAgICAgZHN0X2RpciA9IG9zLnBhdGguam9pbihleHRyYWN0ZWRfcGF0aCwgcGtnKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGRzdF9kaXIgPSBvcy5wYXRoLmpvaW4ocGFja2FnZWRfcGF0aCkKKworICAgICAgICAgICAgICAgICMgRXh0cmFjdCBwYWNrYWdlIGFuZCBjb3B5IGl0IHRvIFRFU1RfRVhUUkFDVEVEX0RJUgorICAgICAgICAgICAgICAgIHBrZ19kaXIgPSBzZWxmLl9leHRyYWN0X2luX3RtcGRpcihwa2cpCisgICAgICAgICAgICAgICAgaWYgZXh0cmFjdDoKKworICAgICAgICAgICAgICAgICAgICAjIFNhbWUgcGFja2FnZSB1c2VkIGZvciBtb3JlIHRoYW4gb25lIHRlc3QsCisgICAgICAgICAgICAgICAgICAgICMgZG9uJ3QgbmVlZCB0byBleHRyYWN0IGFnYWluLgorICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhkc3RfZGlyKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIG9lLnBhdGguY29weXRyZWUocGtnX2RpciwgZHN0X2RpcikKKyAgICAgICAgICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShwa2dfZGlyKQorCisgICAgICAgICAgICAgICAgIyBDb3B5IHBhY2thZ2UgdG8gVEVTVF9QQUNLQUdFRF9ESVIKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb3B5X3BhY2thZ2UocGtnKQorCisgICAgZGVmIF9nZXRKc29uRmlsZShzZWxmLCBtb2R1bGUpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyB0aGUgcGF0aCBvZiB0aGUgSlNPTiBmaWxlIGZvciBhIG1vZHVsZSwgZW1wdHkgaWYgZG9lc24ndCBleGl0c3QuCisgICAgICAgICIiIgorCisgICAgICAgIG1vZHVsZV9maWxlID0gbW9kdWxlLnBhdGgKKyAgICAgICAganNvbl9maWxlID0gIiVzLmpzb24iICUgbW9kdWxlX2ZpbGUucnNwbGl0KCIuIiwgMSlbMF0KKyAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUobW9kdWxlX2ZpbGUpIGFuZCBvcy5wYXRoLmlzZmlsZShqc29uX2ZpbGUpOgorICAgICAgICAgICAgcmV0dXJuIGpzb25fZmlsZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuICIiCisKKyAgICBkZWYgX2dldE5lZWRlZFBhY2thZ2VzKHNlbGYsIGpzb25fZmlsZSwgdGVzdD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgYSBkaWN0IHdpdGggbmVlZGVkIHBhY2thZ2VzIGJhc2VkIG9uIGEgSlNPTiBmaWxlLgorCisKKyAgICAgICAgSWYgYSB0ZXN0IGlzIHNwZWNpZmllZCBpdCB3aWxsIHJldHVybiB0aGUgZGljdCBqdXN0IGZvciB0aGF0IHRlc3QuCisgICAgICAgICIiIgorCisgICAgICAgIGltcG9ydCBqc29uCisKKyAgICAgICAgbmVlZGVkX3BhY2thZ2VzID0ge30KKworICAgICAgICB3aXRoIG9wZW4oanNvbl9maWxlKSBhcyBmOgorICAgICAgICAgICAgdGVzdF9wYWNrYWdlcyA9IGpzb24ubG9hZChmKQorICAgICAgICBmb3Iga2V5LHZhbHVlIGluIHRlc3RfcGFja2FnZXMuaXRlbXMoKToKKyAgICAgICAgICAgIG5lZWRlZF9wYWNrYWdlc1trZXldID0gdmFsdWUKKworICAgICAgICBpZiB0ZXN0OgorICAgICAgICAgICAgaWYgdGVzdCBpbiBuZWVkZWRfcGFja2FnZXM6CisgICAgICAgICAgICAgICAgbmVlZGVkX3BhY2thZ2VzID0gbmVlZGVkX3BhY2thZ2VzW3Rlc3RdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG5lZWRlZF9wYWNrYWdlcyA9IHt9CisKKyAgICAgICAgcmV0dXJuIG5lZWRlZF9wYWNrYWdlcworCisgICAgZGVmIF9leHRyYWN0X2luX3RtcGRpcihzZWxmLCBwa2cpOgorICAgICAgICAiIiIiCisgICAgICAgIFJldHVybnMgcGF0aCB0byBhIHRlbXAgZGlyZWN0b3J5IHdoZXJlIHRoZSBwYWNrYWdlIHdhcworICAgICAgICBleHRyYWN0ZWQgd2l0aG91dCBkZXBlbmRlbmNpZXMuCisgICAgICAgICIiIgorCisgICAgICAgIGZyb20gb2VxYS51dGlscy5wYWNrYWdlX21hbmFnZXIgaW1wb3J0IGdldF9wYWNrYWdlX21hbmFnZXIKKworICAgICAgICBwa2dfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLmQuZ2V0VmFyKCJURVNUX0lOU1RBTExfVE1QX0RJUiIsIFRydWUpLCBwa2cpCisgICAgICAgIHBtID0gZ2V0X3BhY2thZ2VfbWFuYWdlcihzZWxmLmQsIHBrZ19wYXRoKQorICAgICAgICBleHRyYWN0X2RpciA9IHBtLmV4dHJhY3QocGtnKQorICAgICAgICBzaHV0aWwucm10cmVlKHBrZ19wYXRoKQorCisgICAgICAgIHJldHVybiBleHRyYWN0X2RpcgorCisgICAgZGVmIF9jb3B5X3BhY2thZ2Uoc2VsZiwgcGtnKToKKyAgICAgICAgIiIiCisgICAgICAgIENvcHkgdGhlIFJQTSwgREVCIG9yIElQSyBwYWNrYWdlIHRvIGRzdF9kaXIKKyAgICAgICAgIiIiCisKKyAgICAgICAgZnJvbSBvZXFhLnV0aWxzLnBhY2thZ2VfbWFuYWdlciBpbXBvcnQgZ2V0X3BhY2thZ2VfbWFuYWdlcgorCisgICAgICAgIHBrZ19wYXRoID0gb3MucGF0aC5qb2luKHNlbGYuZC5nZXRWYXIoIlRFU1RfSU5TVEFMTF9UTVBfRElSIiwgVHJ1ZSksIHBrZykKKyAgICAgICAgZHN0X2RpciA9IHNlbGYuZC5nZXRWYXIoIlRFU1RfUEFDS0FHRURfRElSIiwgVHJ1ZSkKKyAgICAgICAgcG0gPSBnZXRfcGFja2FnZV9tYW5hZ2VyKHNlbGYuZCwgcGtnX3BhdGgpCisgICAgICAgIHBrZ19pbmZvID0gcG0ucGFja2FnZV9pbmZvKHBrZykKKyAgICAgICAgZmlsZV9wYXRoID0gcGtnX2luZm9bcGtnXVsiZmlsZXBhdGgiXQorICAgICAgICBzaHV0aWwuY29weTIoZmlsZV9wYXRoLCBkc3RfZGlyKQorICAgICAgICBzaHV0aWwucm10cmVlKHBrZ19wYXRoKQorCisgICAgZGVmIGluc3RhbGxfdW5pbnN0YWxsX3BhY2thZ2VzKHNlbGYsIHRlc3RfaWQsIHBrZ19kaXIsIGluc3RhbGwpOgorICAgICAgICAiIiIKKyAgICAgICAgQ2hlY2sgaWYgdGhlIHRlc3QgcmVxdWlyZXMgYSBwYWNrYWdlIGFuZCBJbnN0YWxsL1VuaXN0YWxsIGl0IGluIHRoZSBEVVQKKyAgICAgICAgIiIiCisKKyAgICAgICAgdGVzdCA9IHRlc3RfaWQuc3BsaXQoIi4iKVs0XQorICAgICAgICBtb2R1bGUgPSBzZWxmLmdldE1vZHVsZWZyb21JRCh0ZXN0X2lkKQorICAgICAgICBqc29uID0gc2VsZi5fZ2V0SnNvbkZpbGUobW9kdWxlKQorICAgICAgICBpZiBqc29uOgorICAgICAgICAgICAgbmVlZGVkX3BhY2thZ2VzID0gc2VsZi5fZ2V0TmVlZGVkUGFja2FnZXMoanNvbiwgdGVzdCkKKyAgICAgICAgICAgIGlmIG5lZWRlZF9wYWNrYWdlczoKKyAgICAgICAgICAgICAgICBzZWxmLl9pbnN0YWxsX3VuaW5zdGFsbF9wYWNrYWdlcyhuZWVkZWRfcGFja2FnZXMsIHBrZ19kaXIsIGluc3RhbGwpCisKKyAgICBkZWYgX2luc3RhbGxfdW5pbnN0YWxsX3BhY2thZ2VzKHNlbGYsIG5lZWRlZF9wYWNrYWdlcywgcGtnX2RpciwgaW5zdGFsbD1UcnVlKToKKyAgICAgICAgIiIiCisgICAgICAgIEluc3RhbGwvVW5pc3RhbGwgcGFja2FnZXMgaW4gdGhlIERVVCB3aXRob3V0IHVzaW5nIGEgcGFja2FnZSBtYW5hZ2VyCisgICAgICAgICIiIgorCisgICAgICAgIGlmIGlzaW5zdGFuY2UobmVlZGVkX3BhY2thZ2VzLCBkaWN0KToKKyAgICAgICAgICAgIHBhY2thZ2VzID0gW25lZWRlZF9wYWNrYWdlc10KKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKG5lZWRlZF9wYWNrYWdlcywgbGlzdCk6CisgICAgICAgICAgICBwYWNrYWdlcyA9IG5lZWRlZF9wYWNrYWdlcworCisgICAgICAgIGZvciBwYWNrYWdlIGluIHBhY2thZ2VzOgorICAgICAgICAgICAgcGtnID0gcGFja2FnZVsicGtnIl0KKyAgICAgICAgICAgIHJtID0gcGFja2FnZS5nZXQoInJtIiwgRmFsc2UpCisgICAgICAgICAgICBleHRyYWN0ID0gcGFja2FnZS5nZXQoImV4dHJhY3QiLCBUcnVlKQorICAgICAgICAgICAgc3JjX2RpciA9IG9zLnBhdGguam9pbihwa2dfZGlyLCBwa2cpCisKKyAgICAgICAgICAgICMgSW5zdGFsbCBwYWNrYWdlCisgICAgICAgICAgICBpZiBpbnN0YWxsIGFuZCBleHRyYWN0OgorICAgICAgICAgICAgICAgIHNlbGYudGFyZ2V0LmNvbm5lY3Rpb24uY29weV9kaXJfdG8oc3JjX2RpciwgIi8iKQorCisgICAgICAgICAgICAjIFVuaXN0YWxsIHBhY2thZ2UKKyAgICAgICAgICAgIGVsaWYgbm90IGluc3RhbGwgYW5kIHJtOgorICAgICAgICAgICAgICAgIHNlbGYudGFyZ2V0LmNvbm5lY3Rpb24uZGVsZXRlX2Rpcl9zdHJ1Y3R1cmUoc3JjX2RpciwgIi8iKQorCitjbGFzcyBJbWFnZVRlc3RDb250ZXh0KFJ1bnRpbWVUZXN0Q29udGV4dCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGQsIHRhcmdldCwgaG9zdF9kdW1wZXIpOgorICAgICAgICBzdXBlcihJbWFnZVRlc3RDb250ZXh0LCBzZWxmKS5fX2luaXRfXyhkLCB0YXJnZXQpCisKKyAgICAgICAgc2VsZi50YWdleHAgPSBkLmdldFZhcigiVEVTVF9TVUlURVNfVEFHUyIsIFRydWUpCisKKyAgICAgICAgc2VsZi5ob3N0X2R1bXBlciA9IGhvc3RfZHVtcGVyCisKKyAgICAgICAgc2VsZi5zaWd0ZXJtID0gRmFsc2UKKyAgICAgICAgc2VsZi5vcmlnc2lndGVybWhhbmRsZXIgPSBzaWduYWwuZ2V0c2lnbmFsKHNpZ25hbC5TSUdURVJNKQorICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdURVJNLCBzZWxmLl9zaWd0ZXJtX2V4Y2VwdGlvbikKKworICAgIGRlZiBfc2lndGVybV9leGNlcHRpb24oc2VsZiwgc2lnbnVtLCBzdGFja2ZyYW1lKToKKyAgICAgICAgYmIud2FybigiVGVzdEltYWdlIHJlY2VpdmVkIFNJR1RFUk0sIHNodXR0aW5nIGRvd24uLi4iKQorICAgICAgICBzZWxmLnNpZ3Rlcm0gPSBUcnVlCisgICAgICAgIHNlbGYudGFyZ2V0LnN0b3AoKQorCisgICAgZGVmIGluc3RhbGxfdW5pbnN0YWxsX3BhY2thZ2VzKHNlbGYsIHRlc3RfaWQsIGluc3RhbGw9VHJ1ZSk6CisgICAgICAgICIiIgorICAgICAgICBDaGVjayBpZiB0aGUgdGVzdCByZXF1aXJlcyBhIHBhY2thZ2UgYW5kIEluc3RhbGwvVW5pc3RhbGwgaXQgaW4gdGhlIERVVAorICAgICAgICAiIiIKKworICAgICAgICBwa2dfZGlyID0gc2VsZi5kLmdldFZhcigiVEVTVF9FWFRSQUNURURfRElSIiwgVHJ1ZSkKKyAgICAgICAgc3VwZXIoSW1hZ2VUZXN0Q29udGV4dCwgc2VsZikuaW5zdGFsbF91bmluc3RhbGxfcGFja2FnZXModGVzdF9pZCwgcGtnX2RpciwgaW5zdGFsbCkKKworY2xhc3MgRXhwb3J0VGVzdENvbnRleHQoUnVudGltZVRlc3RDb250ZXh0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZCwgdGFyZ2V0LCBleHBvcnRlZD1GYWxzZSwgcGFyc2VkQXJncz17fSk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGNsYXNzIGlzIHVzZWQgd2hlbiBleHBvcnRpbmcgdGVzdHMgYW5kIHdoZW4gYXJlIGV4ZWN1dGVkIG91dHNpZGUgT0UgZW52aXJvbm1lbnQuCisKKyAgICAgICAgcGFyc2VkQXJncyBjYW4gY29udGFpbiB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgLSB0YWc6ICAgICAgRmlsdGVyIHRlc3QgYnkgdGFnLgorICAgICAgICAiIiIKKyAgICAgICAgc3VwZXIoRXhwb3J0VGVzdENvbnRleHQsIHNlbGYpLl9faW5pdF9fKGQsIHRhcmdldCwgZXhwb3J0ZWQpCisKKyAgICAgICAgdGFnID0gcGFyc2VkQXJncy5nZXQoInRhZyIsIE5vbmUpCisgICAgICAgIHNlbGYudGFnZXhwID0gdGFnIGlmIHRhZyAhPSBOb25lIGVsc2UgZC5nZXRWYXIoIlRFU1RfU1VJVEVTX1RBR1MiLCBUcnVlKQorCisgICAgICAgIHNlbGYuc2lndGVybSA9IE5vbmUKKworICAgIGRlZiBpbnN0YWxsX3VuaW5zdGFsbF9wYWNrYWdlcyhzZWxmLCB0ZXN0X2lkLCBpbnN0YWxsPVRydWUpOgorICAgICAgICAiIiIKKyAgICAgICAgQ2hlY2sgaWYgdGhlIHRlc3QgcmVxdWlyZXMgYSBwYWNrYWdlIGFuZCBJbnN0YWxsL1VuaXN0YWxsIGl0IGluIHRoZSBEVVQKKyAgICAgICAgIiIiCisKKyAgICAgICAgZXhwb3J0X2RpciA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5yZWFscGF0aChfX2ZpbGVfXykpKQorICAgICAgICBleHRyYWN0ZWRfZGlyID0gc2VsZi5kLmdldFZhcigiVEVTVF9FWFBPUlRfRVhUUkFDVEVEX0RJUiIsIFRydWUpCisgICAgICAgIHBrZ19kaXIgPSBvcy5wYXRoLmpvaW4oZXhwb3J0X2RpciwgZXh0cmFjdGVkX2RpcikKKyAgICAgICAgc3VwZXIoRXhwb3J0VGVzdENvbnRleHQsIHNlbGYpLmluc3RhbGxfdW5pbnN0YWxsX3BhY2thZ2VzKHRlc3RfaWQsIHBrZ19kaXIsIGluc3RhbGwpCiAKIGNsYXNzIFNES1Rlc3RDb250ZXh0KFRlc3RDb250ZXh0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgZCwgc2RrdGVzdGRpciwgc2RrZW52LCB0Y25hbWUsICphcmdzKToKQEAgLTM5Niw4ICs2NjgsMTEgQEAKICAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZiwgJ3RhcmdldF9tYW5pZmVzdCcpOgogICAgICAgICAgICAgc2VsZi50YXJnZXRfbWFuaWZlc3QgPSBkLmdldFZhcigiU0RLX1RBUkdFVF9NQU5JRkVTVCIsIFRydWUpCiAgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYucGtnbWFuaWZlc3QgPSB7fQogICAgICAgICAgICAgd2l0aCBvcGVuKHNlbGYudGFyZ2V0X21hbmlmZXN0KSBhcyBmOgotICAgICAgICAgICAgICAgICBzZWxmLnBrZ21hbmlmZXN0ID0gZi5yZWFkKCkKKyAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBmOgorICAgICAgICAgICAgICAgICAgICAocGtnLCBhcmNoLCB2ZXJzaW9uKSA9IGxpbmUuc3RyaXAoKS5zcGxpdCgpCisgICAgICAgICAgICAgICAgICAgIHNlbGYucGtnbWFuaWZlc3RbcGtnXSA9ICh2ZXJzaW9uLCBhcmNoKQogICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBlOgogICAgICAgICAgICAgYmIuZmF0YWwoIk5vIHBhY2thZ2UgbWFuaWZlc3QgZmlsZSBmb3VuZC4gRGlkIHlvdSBidWlsZCB0aGUgc2RrIGltYWdlP1xuJXMiICUgZSkKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVuZXhwb3J0ZWQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW5leHBvcnRlZC5weQppbmRleCBjYzg5ZTEzLi43ZTI0NWM0IDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW5leHBvcnRlZC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW5leHBvcnRlZC5weQpAQCAtMSw0ICsxLDQgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwogCiAKICMgQ29weXJpZ2h0IChDKSAyMDEzIEludGVsIENvcnBvcmF0aW9uCkBAIC0zMCw5ICszMCw5IEBACiAKIHN5cy5wYXRoLmFwcGVuZChvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICJvZXFhIikpKQogCi1mcm9tIG9lcWEub2V0ZXN0IGltcG9ydCBUZXN0Q29udGV4dAorZnJvbSBvZXFhLm9ldGVzdCBpbXBvcnQgRXhwb3J0VGVzdENvbnRleHQKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCB1cGRhdGVFbnYKIGZyb20gb2VxYS51dGlscy5zc2hjb250cm9sIGltcG9ydCBTU0hDb250cm9sCi1mcm9tIG9lcWEudXRpbHMuZHVtcCBpbXBvcnQgZ2V0X2hvc3RfZHVtcGVyCiAKICMgdGhpcyBpc24ndCBwcmV0dHkgYnV0IHdlIG5lZWQgYSBmYWtlIHRhcmdldCBvYmplY3QKICMgZm9yIHJ1bm5pbmcgdGhlIHRlc3RzIGV4dGVybmFsbHkgYXMgd2UgZG9uJ3QgY2FyZQpAQCAtNjksMTAgKzY5LDYgQEAKICAgICBkZWYgZ2V0VmFyKHNlbGYsIGtleSwgdW51c2VkID0gTm9uZSk6CiAgICAgICAgIHJldHVybiBzZWxmLmdldChrZXksICIiKQogCi1jbGFzcyBFeHBvcnRUZXN0Q29udGV4dChUZXN0Q29udGV4dCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGQpOgotICAgICAgICBzZWxmLmQgPSBkCi0KIGRlZiBtYWluKCk6CiAKICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCkBAIC04NSw2ICs4MSw3IEBACiAgICAgICAgICAgICBzcGVjaWZpZWQgaW4gdGhlIGpzb24gaWYgdGhhdCBkaXJlY3RvcnkgYWN0dWFsbHkgZXhpc3RzIG9yIGl0IHdpbGwgZXJyb3Igb3V0LiIpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLWwiLCAiLS1sb2ctZGlyIiwgZGVzdD0ibG9nX2RpciIsIGhlbHA9IlRoaXMgc2V0cyB0aGUgcGF0aCBmb3IgVEVTVF9MT0dfRElSLiBJZiBub3Qgc3BlY2lmaWVkIFwKICAgICAgICAgICAgIHRoZSBjdXJyZW50IGRpciBpcyB1c2VkLiBUaGlzIGlzIHVzZWQgZm9yIHVzdWFsbHkgY3JlYXRpbmcgYSBzc2ggbG9nIGZpbGUgYW5kIGEgc2NwIHRlc3QgZmlsZS4iKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1hIiwgIi0tdGFnIiwgZGVzdD0idGFnIiwgaGVscD0iT25seSBydW4gdGVzdCB3aXRoIHNwZWNpZmllZCB0YWcuIikKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCJqc29uIiwgaGVscD0iVGhlIGpzb24gZmlsZSBleHBvcnRlZCBieSB0aGUgYnVpbGQgc3lzdGVtIiwgZGVmYXVsdD0idGVzdGRhdGEuanNvbiIsIG5hcmdzPSc/JykKIAogICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCkBAIC0xMTEsMzAgKzEwOCw0MSBAQAogICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihkWyJERVBMT1lfRElSIl0pOgogICAgICAgICAgICAgcHJpbnQoIldBUk5JTkc6IFRoZSBwYXRoIHRvIERFUExPWV9ESVIgZG9lcyBub3QgZXhpc3Q6ICVzIiAlIGRbIkRFUExPWV9ESVIiXSkKIAorICAgIHBhcnNlZEFyZ3MgPSB7fQorICAgIHBhcnNlZEFyZ3NbInRhZyJdID0gYXJncy50YWcKKworICAgIGV4dHJhY3Rfc2RrKGQpCiAKICAgICB0YXJnZXQgPSBGYWtlVGFyZ2V0KGQpCiAgICAgZm9yIGtleSBpbiBsb2FkZWRbInRhcmdldCJdLmtleXMoKToKICAgICAgICAgc2V0YXR0cih0YXJnZXQsIGtleSwgbG9hZGVkWyJ0YXJnZXQiXVtrZXldKQogCi0gICAgaG9zdF9kdW1wZXIgPSBnZXRfaG9zdF9kdW1wZXIoZCkKLSAgICBob3N0X2R1bXBlci5wYXJlbnRfZGlyID0gbG9hZGVkWyJob3N0X2R1bXBlciJdWyJwYXJlbnRfZGlyIl0KLSAgICBob3N0X2R1bXBlci5jbWRzID0gbG9hZGVkWyJob3N0X2R1bXBlciJdWyJjbWRzIl0KLQogICAgIHRhcmdldC5leHBvcnRTdGFydCgpCi0gICAgdGMgPSBFeHBvcnRUZXN0Q29udGV4dChkKQotCi0gICAgc2V0YXR0cih0YywgImQiLCBkKQotICAgIHNldGF0dHIodGMsICJ0YXJnZXQiLCB0YXJnZXQpCi0gICAgc2V0YXR0cih0YywgImhvc3RfZHVtcGVyIiwgaG9zdF9kdW1wZXIpCi0gICAgZm9yIGtleSBpbiBsb2FkZWQua2V5cygpOgotICAgICAgICBpZiBrZXkgIT0gImQiIGFuZCBrZXkgIT0gInRhcmdldCIgYW5kIGtleSAhPSAiaG9zdF9kdW1wZXIiOgotICAgICAgICAgICAgc2V0YXR0cih0Yywga2V5LCBsb2FkZWRba2V5XSkKLQorICAgIHRjID0gRXhwb3J0VGVzdENvbnRleHQoZCwgdGFyZ2V0LCBUcnVlLCBwYXJzZWRBcmdzKQogICAgIHRjLmxvYWRUZXN0cygpCiAgICAgdGMucnVuVGVzdHMoKQogCiAgICAgcmV0dXJuIDAKIAorZGVmIGV4dHJhY3Rfc2RrKGQpOgorICAgICIiIgorICAgIEV4dHJhY3QgU0RLIGlmIG5lZWRlZAorICAgICIiIgorCisgICAgZXhwb3J0X2RpciA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLnJlYWxwYXRoKF9fZmlsZV9fKSkKKyAgICB0b29sc19kaXIgPSBkLmdldFZhcigiVEVTVF9FWFBPUlRfU0RLX0RJUiIsIFRydWUpCisgICAgdGFyYmFsbF9uYW1lID0gIiVzLnNoIiAlIGQuZ2V0VmFyKCJURVNUX0VYUE9SVF9TREtfTkFNRSIsIFRydWUpCisgICAgdGFyYmFsbF9wYXRoID0gb3MucGF0aC5qb2luKGV4cG9ydF9kaXIsIHRvb2xzX2RpciwgdGFyYmFsbF9uYW1lKQorICAgIGV4dHJhY3RfcGF0aCA9IG9zLnBhdGguam9pbihleHBvcnRfZGlyLCAic3lzcm9vdCIpCisgICAgaWYgb3MucGF0aC5pc2ZpbGUodGFyYmFsbF9wYXRoKToKKyAgICAgICAgcHJpbnQgKCJGb3VuZCBTREsgdGFyYmFsbCAlcy4gRXh0cmFjdGluZy4uLiIgJSB0YXJiYWxsX3BhdGgpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgiJXMgLXkgLWQgJXMiICUgKHRhcmJhbGxfcGF0aCwgZXh0cmFjdF9wYXRoKSkKKyAgICAgICAgZm9yIGYgaW4gb3MubGlzdGRpcihleHRyYWN0X3BhdGgpOgorICAgICAgICAgICAgaWYgZi5zdGFydHN3aXRoKCJlbnZpcm9ubWVudC1zZXR1cCIpOgorICAgICAgICAgICAgICAgIHByaW50KCJTZXR0aW5nIHVwIFNESyBlbnZpcm9ubWVudC4uLiIpCisgICAgICAgICAgICAgICAgZW52X2ZpbGUgPSBvcy5wYXRoLmpvaW4oZXh0cmFjdF9wYXRoLCBmKQorICAgICAgICAgICAgICAgIHVwZGF0ZUVudihlbnZfZmlsZSkKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB0cnk6CiAgICAgICAgIHJldCA9IG1haW4oKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9fX2luaXRfXy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjZjNmYTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotIyBFbmFibGUgb3RoZXIgbGF5ZXJzIHRvIGhhdmUgdGVzdHMgaW4gdGhlIHNhbWUgbmFtZWQgZGlyZWN0b3J5Ci1mcm9tIHBrZ3V0aWwgaW1wb3J0IGV4dGVuZF9wYXRoCi1fX3BhdGhfXyA9IGV4dGVuZF9wYXRoKF9fcGF0aF9fLCBfX25hbWVfXykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvX3B0ZXN0LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9fcHRlc3QucHkKaW5kZXggMDYyMTAyOC4uNzEzMjRkMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9fcHRlc3QucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9fcHRlc3QucHkKQEAgLTExLDcgKzExLDcgQEAKIGRlZiBzZXRVcE1vZHVsZSgpOgogICAgIGlmIG5vdCBvZVJ1bnRpbWVUZXN0Lmhhc0ZlYXR1cmUoInBhY2thZ2UtbWFuYWdlbWVudCIpOgogICAgICAgICBza2lwTW9kdWxlKCJJbWFnZSBkb2Vzbid0IGhhdmUgcGFja2FnZSBtYW5hZ2VtZW50IGZlYXR1cmUiKQotICAgIGlmIG5vdCBvZVJ1bnRpbWVUZXN0Lmhhc1BhY2thZ2UoInNtYXJ0Iik6CisgICAgaWYgbm90IG9lUnVudGltZVRlc3QuaGFzUGFja2FnZSgic21hcnRwbSIpOgogICAgICAgICBza2lwTW9kdWxlKCJJbWFnZSBkb2Vzbid0IGhhdmUgc21hcnQgaW5zdGFsbGVkIikKICAgICBpZiAicGFja2FnZV9ycG0iICE9IG9lUnVudGltZVRlc3QudGMuZC5nZXRWYXIoIlBBQ0tBR0VfQ0xBU1NFUyIsIFRydWUpLnNwbGl0KClbMF06CiAgICAgICAgIHNraXBNb2R1bGUoIlJwbSBpcyBub3QgdGhlIHByaW1hcnkgcGFja2FnZSBtYW5hZ2VyIikKQEAgLTEwNSw3ICsxMDUsNyBAQAogICAgIGRlZiB0ZXN0X3B0ZXN0cnVubmVyKHNlbGYpOgogICAgICAgICBzZWxmLmFkZF9zbWFydF9jaGFubmVsKCkKICAgICAgICAgKHJ1bm5lcnN0YXR1cywgcmVzdWx0KSA9IHNlbGYudGFyZ2V0LnJ1bignd2hpY2ggcHRlc3QtcnVubmVyJywgMCkKLSAgICAgICAgY29uZCA9IG9lUnVudGltZVRlc3QuaGFzUGFja2FnZSgicHRlc3QtcnVubmVyIikgYW5kIG9lUnVudGltZVRlc3QuaGFzRmVhdHVyZSgicHRlc3QiKSBhbmQgb2VSdW50aW1lVGVzdC5oYXNQYWNrYWdlKCItcHRlc3QiKSBhbmQgKHJ1bm5lcnN0YXR1cyAhPSAwKQorICAgICAgICBjb25kID0gb2VSdW50aW1lVGVzdC5oYXNQYWNrYWdlKCJwdGVzdC1ydW5uZXIiKSBhbmQgb2VSdW50aW1lVGVzdC5oYXNGZWF0dXJlKCJwdGVzdCIpIGFuZCBvZVJ1bnRpbWVUZXN0Lmhhc1BhY2thZ2VNYXRjaCgiLXB0ZXN0IikgYW5kIChydW5uZXJzdGF0dXMgIT0gMCkKICAgICAgICAgaWYgY29uZDoKICAgICAgICAgICAgIHNlbGYuaW5zdGFsbF9wYWNrYWdlcyhzZWxmLmluc3RhbGxfY29tcGxlbWVudGFyeSgiKi1wdGVzdCIpKQogICAgICAgICAgICAgc2VsZi5pbnN0YWxsX3BhY2thZ2VzKFsncHRlc3QtcnVubmVyJ10pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2J1aWxkZ2FsY3VsYXRvci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvYnVpbGRnYWxjdWxhdG9yLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4YmEyOWUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2J1aWxkZ2FsY3VsYXRvci5weQpAQCAtMCwwICsxLDIzIEBACitmcm9tIG9lcWEub2V0ZXN0IGltcG9ydCBvZVJ1bnRpbWVUZXN0LCBza2lwTW9kdWxlCitmcm9tIG9lcWEudXRpbHMuZGVjb3JhdG9ycyBpbXBvcnQgKgorZnJvbSBvZXFhLnV0aWxzLnRhcmdldGJ1aWxkIGltcG9ydCBUYXJnZXRCdWlsZFByb2plY3QKKworZGVmIHNldFVwTW9kdWxlKCk6CisgICAgaWYgbm90IG9lUnVudGltZVRlc3QuaGFzRmVhdHVyZSgidG9vbHMtc2RrIik6CisgICAgICAgIHNraXBNb2R1bGUoIkltYWdlIGRvZXNuJ3QgaGF2ZSB0b29scy1zZGsgaW4gSU1BR0VfRkVBVFVSRVMiKQorCitjbGFzcyBHYWxjdWxhdG9yVGVzdChvZVJ1bnRpbWVUZXN0KToKKyAgICBAc2tpcFVubGVzc1Bhc3NlZCgidGVzdF9zc2giKQorICAgIGRlZiB0ZXN0X2dhbGN1bGF0b3Ioc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHByb2plY3QgPSBUYXJnZXRCdWlsZFByb2plY3Qob2VSdW50aW1lVGVzdC50Yy50YXJnZXQsIG9lUnVudGltZVRlc3QudGMuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly9nYWxjdWxhdG9yLm1uaW0ub3JnL2Rvd25sb2Fkcy9nYWxjdWxhdG9yLTIuMS40LnRhci5iejIiKQorICAgICAgICAgICAgcHJvamVjdC5kb3dubG9hZF9hcmNoaXZlKCkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm9qZWN0LnJ1bl9jb25maWd1cmUoKSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9IlJ1bm5pbmcgY29uZmlndXJlIGZhaWxlZCIpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvamVjdC5ydW5fbWFrZSgpLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iUnVubmluZyBtYWtlIGZhaWxlZCIpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwcm9qZWN0LmNsZWFuKCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvYnVpbGRpcHRhYmxlcy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvYnVpbGRpcHRhYmxlcy5weQppbmRleCAwOWUyNTJkLi5iYzc1ZDBhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2J1aWxkaXB0YWJsZXMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9idWlsZGlwdGFibGVzLnB5CkBAIC0xMSw3ICsxMSw3IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHNldFVwQ2xhc3Moc2VsZik6CiAgICAgICAgIHNlbGYucHJvamVjdCA9IFRhcmdldEJ1aWxkUHJvamVjdChvZVJ1bnRpbWVUZXN0LnRjLnRhcmdldCwgb2VSdW50aW1lVGVzdC50Yy5kLAotICAgICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly9uZXRmaWx0ZXIub3JnL3Byb2plY3RzL2lwdGFibGVzL2ZpbGVzL2lwdGFibGVzLTEuNC4xMy50YXIuYnoyIikKKyAgICAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvaXB0YWJsZXMtMS40LjEzLnRhci5iejIiKQogICAgICAgICBzZWxmLnByb2plY3QuZG93bmxvYWRfYXJjaGl2ZSgpCiAKICAgICBAdGVzdGNhc2UoMjA2KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9idWlsZHN1ZG9rdS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvYnVpbGRzdWRva3UucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwMmIwNjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9idWlsZHN1ZG9rdS5weQorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLWZyb20gb2VxYS5vZXRlc3QgaW1wb3J0IG9lUnVudGltZVRlc3QsIHNraXBNb2R1bGUKLWZyb20gb2VxYS51dGlscy5kZWNvcmF0b3JzIGltcG9ydCAqCi1mcm9tIG9lcWEudXRpbHMudGFyZ2V0YnVpbGQgaW1wb3J0IFRhcmdldEJ1aWxkUHJvamVjdAotCi1kZWYgc2V0VXBNb2R1bGUoKToKLSAgICBpZiBub3Qgb2VSdW50aW1lVGVzdC5oYXNGZWF0dXJlKCJ0b29scy1zZGsiKToKLSAgICAgICAgc2tpcE1vZHVsZSgiSW1hZ2UgZG9lc24ndCBoYXZlIHRvb2xzLXNkayBpbiBJTUFHRV9GRUFUVVJFUyIpCi0KLWNsYXNzIFN1ZG9rdVRlc3Qob2VSdW50aW1lVGVzdCk6Ci0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0VXBDbGFzcyhzZWxmKToKLSAgICAgICAgc2VsZi5wcm9qZWN0ID0gVGFyZ2V0QnVpbGRQcm9qZWN0KG9lUnVudGltZVRlc3QudGMudGFyZ2V0LCBvZVJ1bnRpbWVUZXN0LnRjLmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL2Rvd25sb2Fkcy5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdC9zdWRva3Utc2F2YW50L3N1ZG9rdS1zYXZhbnQvc3Vkb2t1LXNhdmFudC0xLjMvc3Vkb2t1LXNhdmFudC0xLjMudGFyLmJ6MiIpCi0gICAgICAgIHNlbGYucHJvamVjdC5kb3dubG9hZF9hcmNoaXZlKCkKLQotICAgIEB0ZXN0Y2FzZSgyMDcpCi0gICAgQHNraXBVbmxlc3NQYXNzZWQoInRlc3Rfc3NoIikKLSAgICBkZWYgdGVzdF9zdWRva3Uoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5wcm9qZWN0LnJ1bl9jb25maWd1cmUoKSwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iUnVubmluZyBjb25maWd1cmUgZmFpbGVkIikKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucHJvamVjdC5ydW5fbWFrZSgpLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSJSdW5uaW5nIG1ha2UgZmFpbGVkIikKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB0ZWFyRG93bkNsYXNzKHNlbGYpOgotICAgICAgICBzZWxmLnByb2plY3QuY2xlYW4oKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jb25ubWFuLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jb25ubWFuLnB5CmluZGV4IGJkOWRiYTMuLjAwM2ZlZmUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY29ubm1hbi5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nvbm5tYW4ucHkKQEAgLTI3LDUgKzI3LDUgQEAKICAgICBkZWYgdGVzdF9jb25ubWFuZF9ydW5uaW5nKHNlbGYpOgogICAgICAgICAoc3RhdHVzLCBvdXRwdXQpID0gc2VsZi50YXJnZXQucnVuKG9lUnVudGltZVRlc3QucHNjbWQgKyAnIHwgZ3JlcCBbY11vbm5tYW5kJykKICAgICAgICAgaWYgc3RhdHVzICE9IDA6Ci0gICAgICAgICAgICBwcmludCBzZWxmLnNlcnZpY2Vfc3RhdHVzKCJjb25ubWFuIikKKyAgICAgICAgICAgIHByaW50KHNlbGYuc2VydmljZV9zdGF0dXMoImNvbm5tYW4iKSkKICAgICAgICAgICAgIHNlbGYuZmFpbCgiTm8gY29ubm1hbmQgcHJvY2VzcyBydW5uaW5nIikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvZmlsZXMvdGVzdC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvZmlsZXMvdGVzdC5weQppbmRleCBmM2EyMjczLi5mMzg5MjI1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2ZpbGVzL3Rlc3QucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9maWxlcy90ZXN0LnB5CkBAIC0zLDQgKzMsNCBAQAogb3Muc3lzdGVtKCd0b3VjaCAvdG1wL3Rlc3RmaWxlLnB5dGhvbicpCiAKIGEgPSA5LjAxZSsyMSAtIDkuMDFlKzIxICsgMC4wMQotcHJpbnQgInRoZSB2YWx1ZSBvZiBhIGlzICVzIiAlIGEKK3ByaW50KCJ0aGUgdmFsdWUgb2YgYSBpcyAlcyIgJSBhKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9wYXJzZWxvZ3MucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL3BhcnNlbG9ncy5weQppbmRleCBkZWM5ZWJlLi44ZWZlMmQxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL3BhcnNlbG9ncy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL3BhcnNlbG9ncy5weQpAQCAtNTUsMTggKzU1LDI1IEBACiAgICAgJ0NvdWxkIG5vdCBlbmFibGUgUG93ZXJCdXR0b24gZXZlbnQnLAogICAgICdwcm9iZSBvZiBMTlhQV1JCTjowMCBmYWlsZWQgd2l0aCBlcnJvciAtMjInLAogICAgICdwbWRfc2V0X2h1Z2U6IENhbm5vdCBzYXRpc2Z5JywKKyAgICAnZmFpbGVkIHRvIHNldHVwIGNhcmQgZGV0ZWN0IGdwaW8nLAorICAgICdhbWRfbmI6IENhbm5vdCBlbnVtZXJhdGUgQU1EIG5vcnRoYnJpZGdlcycsCisgICAgJ2ZhaWxlZCB0byByZXRyaWV2ZSBsaW5rIGluZm8sIGRpc2FibGluZyBlRFAnLAogXSArIGNvbW1vbl9lcnJvcnMKIAogcWVtdXg4Nl9jb21tb24gPSBbCiAgICAgJ3dyb25nIEVMRiBjbGFzcycsCiAgICAgImZhaWwgdG8gYWRkIE1NQ09ORklHIGluZm9ybWF0aW9uLCBjYW4ndCBhY2Nlc3MgZXh0ZW5kZWQgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UgdW5kZXIgdGhpcyBicmlkZ2UuIiwKICAgICAiY2FuJ3QgY2xhaW0gQkFSICIsCisgICAgJ2FtZF9uYjogQ2Fubm90IGVudW1lcmF0ZSBBTUQgbm9ydGhicmlkZ2VzJywKKyAgICAndXZlc2FmYjogNTAwMCBtcyB0YXNrIHRpbWVvdXQsIGluZmluaXRlbHkgd2FpdGluZycsCisgICAgJ3RzYzogSFBFVC9QTVRJTUVSIGNhbGlicmF0aW9uIGZhaWxlZCcsCiBdICsgY29tbW9uX2Vycm9ycwogCiBpZ25vcmVfZXJyb3JzID0geyAKICAgICAnZGVmYXVsdCcgOiBjb21tb25fZXJyb3JzLAogICAgICdxZW11eDg2JyA6IFsKICAgICAgICAgJ0ZhaWxlZCB0byBhY2Nlc3MgcGVyZmN0ciBtc3IgKE1TUicsCisgICAgICAgICdwY2kgMDAwMDowMDowMC4wOiBbRmlybXdhcmUgQnVnXTogcmVnIDB4Li46IGludmFsaWQgQkFSIChjYW5cJ3Qgc2l6ZSknLAogICAgICAgICBdICsgcWVtdXg4Nl9jb21tb24sCiAgICAgJ3FlbXV4ODYtNjQnIDogcWVtdXg4Nl9jb21tb24sCiAgICAgJ3FlbXVtaXBzJyA6IFsKQEAgLTgxLDE2ICs4OCwyOCBAQAogICAgICAgICAnaG9zdCBzaWRlIDgwLXdpcmUgY2FibGUgZGV0ZWN0aW9uIGZhaWxlZCwgbGltaXRpbmcgbWF4IHNwZWVkJywKICAgICAgICAgJ21vZGUgIjY0MHg0ODAiIHRlc3QgZmFpbGVkJywKICAgICAgICAgJ0ZhaWxlZCB0byBsb2FkIG1vZHVsZSAiZ2x4IicsCisgICAgICAgICdjYW5cJ3QgaGFuZGxlIEJBUiBhYm92ZSA0R0InLAorICAgICAgICAnQ2Fubm90IHJlc2VydmUgTGVnYWN5IElPJywKICAgICAgICAgXSArIGNvbW1vbl9lcnJvcnMsCiAgICAgJ3FlbXVhcm0nIDogWwogICAgICAgICAnbW1jaS1wbDE4eDogcHJvYmUgb2YgZnBnYTowNSBmYWlsZWQgd2l0aCBlcnJvciAtMjInLAogICAgICAgICAnbW1jaS1wbDE4eDogcHJvYmUgb2YgZnBnYTowYiBmYWlsZWQgd2l0aCBlcnJvciAtMjInLAotICAgICAgICAnRmFpbGVkIHRvIGxvYWQgbW9kdWxlICJnbHgiJworICAgICAgICAnRmFpbGVkIHRvIGxvYWQgbW9kdWxlICJnbHgiJywKKyAgICAgICAgJ09GOiBhbWJhX2RldmljZV9hZGQoKSBmYWlsZWQgKC0xOSkgZm9yIC9hbWJhL3NtY0AxMDEwMDAwMCcsCisgICAgICAgICdPRjogYW1iYV9kZXZpY2VfYWRkKCkgZmFpbGVkICgtMTkpIGZvciAvYW1iYS9tcG1jQDEwMTEwMDAwJywKKyAgICAgICAgJ09GOiBhbWJhX2RldmljZV9hZGQoKSBmYWlsZWQgKC0xOSkgZm9yIC9hbWJhL3NjdGxAMTAxZTAwMDAnLAorICAgICAgICAnT0Y6IGFtYmFfZGV2aWNlX2FkZCgpIGZhaWxlZCAoLTE5KSBmb3IgL2FtYmEvd2F0Y2hkb2dAMTAxZTEwMDAnLAorICAgICAgICAnT0Y6IGFtYmFfZGV2aWNlX2FkZCgpIGZhaWxlZCAoLTE5KSBmb3IgL2FtYmEvc2NpQDEwMWYwMDAwJywKKyAgICAgICAgJ09GOiBhbWJhX2RldmljZV9hZGQoKSBmYWlsZWQgKC0xOSkgZm9yIC9hbWJhL3NzcEAxMDFmNDAwMCcsCisgICAgICAgICdPRjogYW1iYV9kZXZpY2VfYWRkKCkgZmFpbGVkICgtMTkpIGZvciAvYW1iYS9mcGdhL3NjaUBhMDAwJywKKyAgICAgICAgJ0ZhaWxlZCB0byBpbml0aWFsaXplIFwnL2FtYmEvdGltZXJAMTAxZTMwMDBcJzogLTIyJywKKyAgICAgICAgJ2ppdHRlcmVudHJvcHk6IEluaXRpYWxpemF0aW9uIGZhaWxlZCB3aXRoIGhvc3Qgbm90IGNvbXBsaWFudCB3aXRoIHJlcXVpcmVtZW50czogMicsCiAgICAgICAgIF0gKyBjb21tb25fZXJyb3JzLAogICAgICdxZW11YXJtNjQnIDogWwogICAgICAgICAnRmF0YWwgc2VydmVyIGVycm9yOicsCiAgICAgICAgICcoRUUpIFNlcnZlciB0ZXJtaW5hdGVkIHdpdGggZXJyb3IgKDEpLiBDbG9zaW5nIGxvZyBmaWxlLicsCiAgICAgICAgICdkbWk6IEZpcm13YXJlIHJlZ2lzdHJhdGlvbiBmYWlsZWQuJywKKyAgICAgICAgJ2lycTogdHlwZSBtaXNtYXRjaCwgZmFpbGVkIHRvIG1hcCBod2lycS0yNyBmb3IgL2ludGMnLAogICAgICAgICBdICsgY29tbW9uX2Vycm9ycywKICAgICAnZW1lbmxvdycgOiBbCiAgICAgICAgICdbRmlybXdhcmUgQnVnXTogQUNQSTogTm8gX0JRQyBtZXRob2QsIGNhbm5vdCBkZXRlcm1pbmUgaW5pdGlhbCBicmlnaHRuZXNzJywKQEAgLTExMCwxMSArMTI5LDE5IEBACiAgICAgICAgICcoRUUpIEZhaWxlZCB0byBsb2FkIG1vZHVsZSBwc2JkcnYnLAogICAgICAgICAnKEVFKSBvcGVuIC9kZXYvZmIwOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5JywKICAgICAgICAgJyhFRSkgQUlHTFg6IHJldmVydGluZyB0byBzb2Z0d2FyZSByZW5kZXJpbmcnLAorICAgICAgICAnZG1pOiBGaXJtd2FyZSByZWdpc3RyYXRpb24gZmFpbGVkLicsCisgICAgICAgICdpb3JlbWFwIGVycm9yIGZvciAweDc4JywKICAgICAgICAgXSArIHg4Nl9jb21tb24sCiAgICAgJ2ludGVsLWNvcmVpNy02NCcgOiB4ODZfY29tbW9uLAogICAgICdjcm93bmJheScgOiB4ODZfY29tbW9uLAogICAgICdnZW5lcmljeDg2JyA6IHg4Nl9jb21tb24sCi0gICAgJ2dlbmVyaWN4ODYtNjQnIDogeDg2X2NvbW1vbiwKKyAgICAnZ2VuZXJpY3g4Ni02NCcgOiBbCisgICAgICAgICdEaXJlY3QgZmlybXdhcmUgbG9hZCBmb3IgaTkxNScsCisgICAgICAgICdGYWlsZWQgdG8gbG9hZCBmaXJtd2FyZSBpOTE1JywKKyAgICAgICAgJ0ZhaWxlZCB0byBmZXRjaCBHdUMnLAorICAgICAgICAnRmFpbGVkIHRvIGluaXRpYWxpemUgR3VDJywKKyAgICAgICAgJ1RoZSBkcml2ZXIgaXMgYnVpbHQtaW4sIHNvIHRvIGxvYWQgdGhlIGZpcm13YXJlIHlvdSBuZWVkIHRvJywKKyAgICAgICAgXSArIHg4Nl9jb21tb24sCiAgICAgJ2VkZ2Vyb3V0ZXInIDogWwogICAgICAgICAnRmF0YWwgc2VydmVyIGVycm9yOicsCiAgICAgICAgIF0gKyBjb21tb25fZXJyb3JzLApAQCAtMTUzLDYgKzE4MCw5IEBACiAgICAgZGVmIGdldE1hY2hpbmUoc2VsZik6CiAgICAgICAgIHJldHVybiBvZVJ1bnRpbWVUZXN0LnRjLmQuZ2V0VmFyKCJNQUNISU5FIiwgVHJ1ZSkKIAorICAgIGRlZiBnZXRXb3JrZGlyKHNlbGYpOgorICAgICAgICByZXR1cm4gb2VSdW50aW1lVGVzdC50Yy5kLmdldFZhcigiV09SS0RJUiIsIFRydWUpCisKICAgICAjZ2V0IHNvbWUgaW5mb3JtYXRpb24gb24gdGhlIENQVSBvZiB0aGUgbWFjaGluZSB0byBkaXNwbGF5IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG91dHB1dC4gVGhpcyBpbmZvIG1pZ2h0IGJlIHVzZWZ1bCBpbiBzb21lIGNhc2VzLgogICAgIGRlZiBnZXRIYXJkd2FyZUluZm8oc2VsZik6CiAgICAgICAgIGh3aSA9ICIiCkBAIC0xOTAsMTYgKzIyMCwxOSBAQAogCiAgICAgI2NvcHkgdGhlIGxvZyBmaWxlcyB0byBiZSBwYXJzZWQgbG9jYWxseQogICAgIGRlZiB0cmFuc2Zlcl9sb2dzKHNlbGYsIGxvZ19saXN0KToKLSAgICAgICAgdGFyZ2V0X2xvZ3MgPSAndGFyZ2V0X2xvZ3MnCisgICAgICAgIHdvcmtkaXIgPSBzZWxmLmdldFdvcmtkaXIoKQorICAgICAgICBzZWxmLnRhcmdldF9sb2dzID0gd29ya2RpciArICcvJyArICd0YXJnZXRfbG9ncycKKyAgICAgICAgdGFyZ2V0X2xvZ3MgPSBzZWxmLnRhcmdldF9sb2dzCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyh0YXJnZXRfbG9ncyk6CiAgICAgICAgICAgICBvcy5tYWtlZGlycyh0YXJnZXRfbG9ncykKKyAgICAgICAgYmIudXRpbHMucmVtb3ZlKHNlbGYudGFyZ2V0X2xvZ3MgKyAiLyoiKQogICAgICAgICBmb3IgZiBpbiBsb2dfbGlzdDoKICAgICAgICAgICAgIHNlbGYudGFyZ2V0LmNvcHlfZnJvbShmLCB0YXJnZXRfbG9ncykKIAogICAgICNnZXQgdGhlIGxvY2FsIGxpc3Qgb2YgbG9ncwogICAgIGRlZiBnZXRfbG9jYWxfbG9nX2xpc3Qoc2VsZiwgbG9nX2xvY2F0aW9ucyk6CiAgICAgICAgIHNlbGYudHJhbnNmZXJfbG9ncyhzZWxmLmdldExvZ0xpc3QobG9nX2xvY2F0aW9ucykpCi0gICAgICAgIGxvZ3MgPSBbIG9zLnBhdGguam9pbigndGFyZ2V0X2xvZ3MnLGYpIGZvciBmIGluIG9zLmxpc3RkaXIoJ3RhcmdldF9sb2dzJykgaWYgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKCd0YXJnZXRfbG9ncycsZikpIF0KKyAgICAgICAgbG9ncyA9IFsgb3MucGF0aC5qb2luKHNlbGYudGFyZ2V0X2xvZ3MsIGYpIGZvciBmIGluIG9zLmxpc3RkaXIoc2VsZi50YXJnZXRfbG9ncykgaWYgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNlbGYudGFyZ2V0X2xvZ3MsIGYpKSBdCiAgICAgICAgIHJldHVybiBsb2dzCiAKICAgICAjYnVpbGQgdGhlIGdyZXAgY29tbWFuZCB0byBiZSB1c2VkIHdpdGggZmlsdGVycyBhbmQgZXhjbHVzaW9ucwpAQCAtMjM4LDcgKzI3MSw3IEBACiAgICAgICAgICAgICByZXN1bHQgPSBOb25lCiAgICAgICAgICAgICB0aGVncmVwID0gc2VsZi5idWlsZF9ncmVwY21kKGVycm9ycywgaWdub3JlX2Vycm9ycywgbG9nKQogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KHRoZWdyZXAsIHNoZWxsPVRydWUpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQodGhlZ3JlcCwgc2hlbGw9VHJ1ZSkuZGVjb2RlKCJ1dGYtOCIpCiAgICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgaWYgKHJlc3VsdCBpcyBub3QgTm9uZSk6CkBAIC0yNDYsNyArMjc5LDcgQEAKICAgICAgICAgICAgICAgICByZXogPSByZXN1bHQuc3BsaXRsaW5lcygpCiAgICAgICAgICAgICAgICAgZm9yIHhyZXogaW4gcmV6OgogICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBncmVwX291dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsnZ3JlcCcsICctRicsIHhyZXosICctQicsIHN0cihsaW5lc19iZWZvcmUpLCAnLUEnLCBzdHIobGluZXNfYWZ0ZXIpLCBsb2ddKQorICAgICAgICAgICAgICAgICAgICAgICAgZ3JlcF9vdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbJ2dyZXAnLCAnLUYnLCB4cmV6LCAnLUInLCBzdHIobGluZXNfYmVmb3JlKSwgJy1BJywgc3RyKGxpbmVzX2FmdGVyKSwgbG9nXSkuZGVjb2RlKCJ1dGYtOCIpCiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0c1tsb2cucmVwbGFjZSgndGFyZ2V0X2xvZ3MvJywnJyldW3hyZXpdPWdyZXBfb3V0cHV0CkBAIC0yNjIsNyArMjk1LDcgQEAKICAgICAgICAgc2VsZi53cml0ZV9kbWVzZygpCiAgICAgICAgIGxvZ19saXN0ID0gc2VsZi5nZXRfbG9jYWxfbG9nX2xpc3Qoc2VsZi5sb2dfbG9jYXRpb25zKQogICAgICAgICByZXN1bHQgPSBzZWxmLnBhcnNlX2xvZ3Moc2VsZi5lcnJvcnMsIHNlbGYuaWdub3JlX2Vycm9ycywgbG9nX2xpc3QpCi0gICAgICAgIHByaW50IHNlbGYuZ2V0SGFyZHdhcmVJbmZvKCkKKyAgICAgICAgcHJpbnQoc2VsZi5nZXRIYXJkd2FyZUluZm8oKSkKICAgICAgICAgZXJyY291bnQgPSAwCiAgICAgICAgIGZvciBsb2cgaW4gcmVzdWx0OgogICAgICAgICAgICAgc2VsZi5tc2cgKz0gIkxvZzogIitsb2crIlxuIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9waW5nLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9waW5nLnB5CmluZGV4IDgwYzQ2MDEuLjBmMjc0NDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvcGluZy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL3BpbmcucHkKQEAgLTE0LDcgKzE0LDcgQEAKICAgICAgICAgZW5kdGltZSA9IHRpbWUudGltZSgpICsgNjAKICAgICAgICAgd2hpbGUgY291bnQgPCA1IGFuZCB0aW1lLnRpbWUoKSA8IGVuZHRpbWU6CiAgICAgICAgICAgICBwcm9jID0gc3VicHJvY2Vzcy5Qb3BlbigicGluZyAtYyAxICVzIiAlIHNlbGYudGFyZ2V0LmlwLCBzaGVsbD1UcnVlLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQotICAgICAgICAgICAgb3V0cHV0ICs9IHByb2MuY29tbXVuaWNhdGUoKVswXQorICAgICAgICAgICAgb3V0cHV0ICs9IHByb2MuY29tbXVuaWNhdGUoKVswXS5kZWNvZGUoInV0Zi04IikKICAgICAgICAgICAgIGlmIHByb2MucG9sbCgpID09IDA6CiAgICAgICAgICAgICAgICAgY291bnQgKz0gMQogICAgICAgICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvcHl0aG9uLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9weXRob24ucHkKaW5kZXggMjZlZGI3YS4uMjlhMjMxYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9weXRob24ucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9weXRob24ucHkKQEAgLTQsNyArNCw3IEBACiBmcm9tIG9lcWEudXRpbHMuZGVjb3JhdG9ycyBpbXBvcnQgKgogCiBkZWYgc2V0VXBNb2R1bGUoKToKLSAgICBpZiBub3Qgb2VSdW50aW1lVGVzdC5oYXNQYWNrYWdlKCJweXRob24iKToKKyAgICBpZiBub3Qgb2VSdW50aW1lVGVzdC5oYXNQYWNrYWdlKCJweXRob24tY29yZSIpOgogICAgICAgICBza2lwTW9kdWxlKCJObyBweXRob24gcGFja2FnZSBpbiB0aGUgaW1hZ2UiKQogCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvcnBtLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9ycG0ucHkKaW5kZXggNjI0YzUxNS4uN2Y1MTRjYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9ycG0ucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9ycG0ucHkKQEAgLTUxLDEyICs1MSwzMiBAQAogICAgIEB0ZXN0Y2FzZSgxMDk2KQogICAgIEBza2lwVW5sZXNzUGFzc2VkKCd0ZXN0X3NzaCcpCiAgICAgZGVmIHRlc3RfcnBtX3F1ZXJ5X25vbnJvb3Qoc2VsZik6Ci0gICAgICAgIChzdGF0dXMsIG91dHB1dCkgPSBzZWxmLnRhcmdldC5ydW4oJ3VzZXJhZGQgdGVzdDEnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc3RhdHVzID09IDAsIG1zZz0iRmFpbGVkIHRvIGNyZWF0ZSBuZXcgdXNlcjogIiArIG91dHB1dCkKLSAgICAgICAgKHN0YXR1cywgb3V0cHV0KSA9IHNlbGYudGFyZ2V0LnJ1bignc3VkbyAtdSB0ZXN0MSBpZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnKHRlc3QxKScgaW4gb3V0cHV0LCBtc2c9IkZhaWxlZCB0byBleGVjdXRlIGFzIG5ldyB1c2VyIikKLSAgICAgICAgKHN0YXR1cywgb3V0cHV0KSA9IHNlbGYudGFyZ2V0LnJ1bignc3VkbyAtdSB0ZXN0MSBycG0gLXFhJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsIG1zZz0ic3RhdHVzOiAlcy4gQ2Fubm90IHJ1biBycG0gLXFhOiAlcyIgJSAoc3RhdHVzLCBvdXRwdXQpKQorCisgICAgICAgIGRlZiBzZXRfdXBfdGVzdF91c2VyKHUpOgorICAgICAgICAgICAgKHN0YXR1cywgb3V0cHV0KSA9IHNlbGYudGFyZ2V0LnJ1bigiaWQgLXUgJXMiICUgdSkKKyAgICAgICAgICAgIGlmIHN0YXR1cyA9PSAwOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgKHN0YXR1cywgb3V0cHV0KSA9IHNlbGYudGFyZ2V0LnJ1bigidXNlcmFkZCAlcyIgJSB1KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdGF0dXMgPT0gMCwgbXNnPSJGYWlsZWQgdG8gY3JlYXRlIG5ldyB1c2VyOiAiICsgb3V0cHV0KQorCisgICAgICAgIGRlZiBleGVjX2FzX3Rlc3RfdXNlcih1KToKKyAgICAgICAgICAgIChzdGF0dXMsIG91dHB1dCkgPSBzZWxmLnRhcmdldC5ydW4oInN1IC1jIGlkICVzIiAlIHUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoIih7MH0pIi5mb3JtYXQodSkgaW4gb3V0cHV0LCBtc2c9IkZhaWxlZCB0byBleGVjdXRlIGFzIG5ldyB1c2VyIikKKyAgICAgICAgICAgIChzdGF0dXMsIG91dHB1dCkgPSBzZWxmLnRhcmdldC5ydW4oInN1IC1jIFwicnBtIC1xYVwiICVzICIgJSB1KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsIG1zZz0ic3RhdHVzOiAlcy4gQ2Fubm90IHJ1biBycG0gLXFhOiAlcyIgJSAoc3RhdHVzLCBvdXRwdXQpKQorCisgICAgICAgIGRlZiB1bnNldF91cF90ZXN0X3VzZXIodSk6CisgICAgICAgICAgICAoc3RhdHVzLCBvdXRwdXQpID0gc2VsZi50YXJnZXQucnVuKCJ1c2VyZGVsIC1yICVzIiAlIHUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3RhdHVzID09IDAsIG1zZz0iRmFpbGVkIHRvIGVyYXNlIHVzZXI6ICVzIiAlIG91dHB1dCkKKworICAgICAgICB0dXNlciA9ICd0ZXN0MScKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBzZXRfdXBfdGVzdF91c2VyKHR1c2VyKQorICAgICAgICAgICAgZXhlY19hc190ZXN0X3VzZXIodHVzZXIpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICB1bnNldF91cF90ZXN0X3VzZXIodHVzZXIpCiAKICAgICBAdGVzdGNhc2UoMTk1KQogICAgIEBza2lwVW5sZXNzUGFzc2VkKCd0ZXN0X3JwbV9pbnN0YWxsJykKQEAgLTk4LDQgKzExOCwzIEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHRlYXJEb3duQ2xhc3Moc2VsZik6CiAgICAgICAgIG9lUnVudGltZVRlc3QudGMudGFyZ2V0LnJ1bigncm0gLWYgL3RtcC9ycG0tZG9jLnJwbScpCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvc21hcnQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL3NtYXJ0LnB5CmluZGV4IDEyNmQ2MTQuLjZjZGIxMGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvc21hcnQucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9zbWFydC5weQpAQCAtMSw1ICsxLDcgQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHJlCitpbXBvcnQgb2UKK2ltcG9ydCBzdWJwcm9jZXNzCiBmcm9tIG9lcWEub2V0ZXN0IGltcG9ydCBvZVJ1bnRpbWVUZXN0LCBza2lwTW9kdWxlCiBmcm9tIG9lcWEudXRpbHMuZGVjb3JhdG9ycyBpbXBvcnQgKgogZnJvbSBvZXFhLnV0aWxzLmh0dHBzZXJ2ZXIgaW1wb3J0IEhUVFBTZXJ2aWNlCkBAIC03LDcgKzksNyBAQAogZGVmIHNldFVwTW9kdWxlKCk6CiAgICAgaWYgbm90IG9lUnVudGltZVRlc3QuaGFzRmVhdHVyZSgicGFja2FnZS1tYW5hZ2VtZW50Iik6CiAgICAgICAgIHNraXBNb2R1bGUoIkltYWdlIGRvZXNuJ3QgaGF2ZSBwYWNrYWdlIG1hbmFnZW1lbnQgZmVhdHVyZSIpCi0gICAgaWYgbm90IG9lUnVudGltZVRlc3QuaGFzUGFja2FnZSgic21hcnQiKToKKyAgICBpZiBub3Qgb2VSdW50aW1lVGVzdC5oYXNQYWNrYWdlKCJzbWFydHBtIik6CiAgICAgICAgIHNraXBNb2R1bGUoIkltYWdlIGRvZXNuJ3QgaGF2ZSBzbWFydCBpbnN0YWxsZWQiKQogICAgIGlmICJwYWNrYWdlX3JwbSIgIT0gb2VSdW50aW1lVGVzdC50Yy5kLmdldFZhcigiUEFDS0FHRV9DTEFTU0VTIiwgVHJ1ZSkuc3BsaXQoKVswXToKICAgICAgICAgc2tpcE1vZHVsZSgiUnBtIGlzIG5vdCB0aGUgcHJpbWFyeSBwYWNrYWdlIG1hbmFnZXIiKQpAQCAtNTMsOSArNTUsNTAgQEAKIGNsYXNzIFNtYXJ0UmVwb1Rlc3QoU21hcnRUZXN0KToKIAogICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBjcmVhdGVfaW5kZXgoc2VsZiwgYXJnKToKKyAgICAgICAgaW5kZXhfY21kID0gYXJnCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGJiLm5vdGUoIkV4ZWN1dGluZyAnJXMnIC4uLiIgJSBpbmRleF9jbWQpCisgICAgICAgICAgICByZXN1bHQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChpbmRleF9jbWQsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwgc2hlbGw9VHJ1ZSkuZGVjb2RlKCJ1dGYtOCIpCisgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlOgorICAgICAgICAgICAgcmV0dXJuKCJJbmRleCBjcmVhdGlvbiBjb21tYW5kICclcycgZmFpbGVkIHdpdGggcmV0dXJuIGNvZGUgJWQ6XG4lcyIgJQorICAgICAgICAgICAgICAgICAgICAoZS5jbWQsIGUucmV0dXJuY29kZSwgZS5vdXRwdXQuZGVjb2RlKCJ1dGYtOCIpKSkKKyAgICAgICAgaWYgcmVzdWx0OgorICAgICAgICAgICAgYmIubm90ZShyZXN1bHQpCisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhzZWxmKToKICAgICAgICAgc2VsZi5yZXBvbGlzdCA9IFtdCi0gICAgICAgIHNlbGYucmVwb19zZXJ2ZXIgPSBIVFRQU2VydmljZShvZVJ1bnRpbWVUZXN0LnRjLmQuZ2V0VmFyKCdERVBMT1lfRElSJywgVHJ1ZSksIG9lUnVudGltZVRlc3QudGMudGFyZ2V0LnNlcnZlcl9pcCkKKworICAgICAgICAjIEluZGV4IFJQTXMKKyAgICAgICAgcnBtX2NyZWF0ZXJlcG8gPSBiYi51dGlscy53aGljaChvcy5nZXRlbnYoJ1BBVEgnKSwgImNyZWF0ZXJlcG8iKQorICAgICAgICBpbmRleF9jbWRzID0gW10KKyAgICAgICAgcnBtX2RpcnNfZm91bmQgPSBGYWxzZQorICAgICAgICBhcmNocyA9IChvZVJ1bnRpbWVUZXN0LnRjLmQuZ2V0VmFyKCdBTExfTVVMVElMSUJfUEFDS0FHRV9BUkNIUycsIFRydWUpIG9yICIiKS5yZXBsYWNlKCctJywgJ18nKS5zcGxpdCgpCisgICAgICAgIGZvciBhcmNoIGluIGFyY2hzOgorICAgICAgICAgICAgcnBtX2RpciA9IG9zLnBhdGguam9pbihvZVJ1bnRpbWVUZXN0LnRjLmQuZ2V0VmFyKCdERVBMT1lfRElSX1JQTScsIFRydWUpLCBhcmNoKQorICAgICAgICAgICAgaWR4X3BhdGggPSBvcy5wYXRoLmpvaW4ob2VSdW50aW1lVGVzdC50Yy5kLmdldFZhcignV09SS0RJUicsIFRydWUpLCAncnBtJywgYXJjaCkKKyAgICAgICAgICAgIGRiX3BhdGggPSBvcy5wYXRoLmpvaW4ob2VSdW50aW1lVGVzdC50Yy5kLmdldFZhcignV09SS0RJUicsIFRydWUpLCAncnBtZGInLCBhcmNoKQorICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIocnBtX2Rpcik6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGRiX3BhdGgpOgorICAgICAgICAgICAgICAgIGJiLnV0aWxzLnJlbW92ZShkYnBhdGgsIFRydWUpCisgICAgICAgICAgICBsb2NrZmlsZW5hbWUgPSBvZVJ1bnRpbWVUZXN0LnRjLmQuZ2V0VmFyKCdERVBMT1lfRElSX1JQTScsIFRydWUpICsgIi9ycG0ubG9jayIKKyAgICAgICAgICAgIGxmID0gYmIudXRpbHMubG9ja2ZpbGUobG9ja2ZpbGVuYW1lLCBGYWxzZSkKKyAgICAgICAgICAgIG9lLnBhdGguY29weWhhcmRsaW5rdHJlZShycG1fZGlyLCBpZHhfcGF0aCkKKyAgICAgICAgICAgICMgRnVsbCBpbmRleGVzIG92ZXJsb2FkIGEgMjU2TUIgaW1hZ2Ugc28gcmVkdWNlIHRoZSBudW1iZXIgb2YgcnBtcworICAgICAgICAgICAgIyBpbiB0aGUgZmVlZC4gRmlsdGVyIHRvIHAqIHNpbmNlIHdlIHVzZSB0aGUgcHNwbGFzaCBwYWNrYWdlcyBhbmQKKyAgICAgICAgICAgICMgdGhpcyBsZWF2ZXMgc29tZSBhbGxhcmNoIGFuZCBtYWNoaW5lIGFyY2ggcGFja2FnZXMgdG9vLgorICAgICAgICAgICAgYmIudXRpbHMucmVtb3ZlKGlkeF9wYXRoICsgIiovW2Etb3Etel0qLnJwbSIpCisgICAgICAgICAgICBiYi51dGlscy51bmxvY2tmaWxlKGxmKQorICAgICAgICAgICAgaW5kZXhfY21kcy5hcHBlbmQoIiVzIC0tZGJwYXRoICVzIC0tdXBkYXRlIC1xICVzIiAlIChycG1fY3JlYXRlcmVwbywgZGJfcGF0aCwgaWR4X3BhdGgpKQorICAgICAgICAgICAgcnBtX2RpcnNfZm91bmQgPSBUcnVlCisgICAgICAgICAjIENyZWF0ZSByZXBvZGF0YcKsCisgICAgICAgIHJlc3VsdCA9IG9lLnV0aWxzLm11bHRpcHJvY2Vzc19leGVjKGluZGV4X2NtZHMsIHNlbGYuY3JlYXRlX2luZGV4KQorICAgICAgICBpZiByZXN1bHQ6CisgICAgICAgICAgICBiYi5mYXRhbCgnJXMnICUgKCdcbicuam9pbihyZXN1bHQpKSkKKyAgICAgICAgc2VsZi5yZXBvX3NlcnZlciA9IEhUVFBTZXJ2aWNlKG9lUnVudGltZVRlc3QudGMuZC5nZXRWYXIoJ1dPUktESVInLCBUcnVlKSwgb2VSdW50aW1lVGVzdC50Yy50YXJnZXQuc2VydmVyX2lwKQogICAgICAgICBzZWxmLnJlcG9fc2VydmVyLnN0YXJ0KCkKIAogICAgIEBjbGFzc21ldGhvZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9zeXNsb2cucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL3N5c2xvZy5weQppbmRleCAyNjAxZGQ5Li44ZjU1MDMyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL3N5c2xvZy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL3N5c2xvZy5weQpAQCAtOSw3ICs5LDYgQEAKIGNsYXNzIFN5c2xvZ1Rlc3Qob2VSdW50aW1lVGVzdCk6CiAKICAgICBAdGVzdGNhc2UoMjAxKQotICAgIEBza2lwVW5sZXNzUGFzc2VkKCJ0ZXN0X3N5c2xvZ19oZWxwIikKICAgICBkZWYgdGVzdF9zeXNsb2dfcnVubmluZyhzZWxmKToKICAgICAgICAgKHN0YXR1cyxvdXRwdXQpID0gc2VsZi50YXJnZXQucnVuKG9lUnVudGltZVRlc3QucHNjbWQgKyAnIHwgZ3JlcCAtaSBbc115c2xvZ2QnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgbXNnPSJubyBzeXNsb2dkIHByb2Nlc3MsIHBzIG91dHB1dDogJXMiICUgc2VsZi50YXJnZXQucnVuKG9lUnVudGltZVRlc3QucHNjbWQpWzFdKQpAQCAtMTksOCArMTgsMTYgQEAKICAgICBAdGVzdGNhc2UoMTE0OSkKICAgICBAc2tpcFVubGVzc1Bhc3NlZCgidGVzdF9zeXNsb2dfcnVubmluZyIpCiAgICAgZGVmIHRlc3Rfc3lzbG9nX2xvZ2dlcihzZWxmKToKLSAgICAgICAgKHN0YXR1cyxvdXRwdXQpID0gc2VsZi50YXJnZXQucnVuKCdsb2dnZXIgZm9vYmFyICYmIHRlc3QgLWUgL3Zhci9sb2cvbWVzc2FnZXMgJiYgZ3JlcCBmb29iYXIgL3Zhci9sb2cvbWVzc2FnZXMgfHwgbG9ncmVhZCB8IGdyZXAgZm9vYmFyJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsIG1zZz0iVGVzdCBsb2cgc3RyaW5nIG5vdCBmb3VuZCBpbiAvdmFyL2xvZy9tZXNzYWdlcy4gT3V0cHV0OiAlcyAiICUgb3V0cHV0KQorICAgICAgICAoc3RhdHVzLCBvdXRwdXQpID0gc2VsZi50YXJnZXQucnVuKCdsb2dnZXIgZm9vYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsIG1zZz0iQ2FuJ3QgbG9nIGludG8gc3lzbG9nLiBPdXRwdXQ6ICVzICIgJSBvdXRwdXQpCisKKyAgICAgICAgKHN0YXR1cywgb3V0cHV0KSA9IHNlbGYudGFyZ2V0LnJ1bignZ3JlcCBmb29iYXIgL3Zhci9sb2cvbWVzc2FnZXMnKQorICAgICAgICBpZiBzdGF0dXMgIT0gMDoKKyAgICAgICAgICAgIGlmIG9lUnVudGltZVRlc3QudGMuZC5nZXRWYXIoIlZJUlRVQUwtUlVOVElNRV9pbml0X21hbmFnZXIiLCAiIikgPT0gInN5c3RlbWQiOgorICAgICAgICAgICAgICAgIChzdGF0dXMsIG91dHB1dCkgPSBzZWxmLnRhcmdldC5ydW4oJ2pvdXJuYWxjdGwgLW8gY2F0IHwgZ3JlcCBmb29iYXInKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAoc3RhdHVzLCBvdXRwdXQpID0gc2VsZi50YXJnZXQucnVuKCdsb2dyZWFkIHwgZ3JlcCBmb29iYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgbXNnPSJUZXN0IGxvZyBzdHJpbmcgbm90IGZvdW5kIGluIC92YXIvbG9nL21lc3NhZ2VzIG9yIGxvZ3JlYWQuIE91dHB1dDogJXMgIiAlIG91dHB1dCkKIAogICAgIEB0ZXN0Y2FzZSgxMTUwKQogICAgIEBza2lwVW5sZXNzUGFzc2VkKCJ0ZXN0X3N5c2xvZ19ydW5uaW5nIikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvc3lzdGVtZC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvc3lzdGVtZC5weQppbmRleCAyYjJmMTBkLi44ZGU3OTljIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL3N5c3RlbWQucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9zeXN0ZW1kLnB5CkBAIC01Nyw3ICs1Nyw3IEBACiAgICAgICAgIHNlbGYuc3lzdGVtY3RsKCctLXZlcnNpb24nKQogCiAgICAgQHRlc3RjYXNlKDU1MSkKLSAgICBAc2tpcFVubGVzc1Bhc3NlZCgndGVzdF9zeXN0ZW1fYmFzaWMnKQorICAgIEBza2lwVW5sZXNzUGFzc2VkKCd0ZXN0X3N5c3RlbWRfYmFzaWMnKQogICAgIGRlZiB0ZXN0X3N5c3RlbWRfbGlzdChzZWxmKToKICAgICAgICAgc2VsZi5zeXN0ZW1jdGwoJ2xpc3QtdW5pdC1maWxlcycpCiAKQEAgLTE1Myw3ICsxNTMsNyBAQAogICAgICAgICAgICAgaWYgY2hlY2tfbWF0Y2g6IGJyZWFrCiAgICAgICAgICMgcHV0IHRoZSBzdGFydHVwIHRpbWUgaW4gdGhlIHRlc3QgbG9nCiAgICAgICAgIGlmIGNoZWNrX21hdGNoOgotICAgICAgICAgICAgcHJpbnQgIiVzIiAlIGNoZWNrX21hdGNoCisgICAgICAgICAgICBwcmludCgiJXMiICUgY2hlY2tfbWF0Y2gpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJFcnJvciBhdCBvYnRhaW5pbmcgdGhlIGJvb3QgdGltZSBmcm9tIGpvdXJuYWxjdGwiKQogICAgICAgICBib290X3RpbWVfc2VjID0gMApAQCAtMTc0LDUgKzE3NCw1IEBACiAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJFcnJvciB3aGVuIHBhcnNpbmcgdGltZSBmcm9tIGJvb3Qgc3RyaW5nIikKICAgICAgICAgI0Fzc2VydCB0aGUgdGFyZ2V0IGJvb3QgdGltZSBhZ2FpbnN0IHN5c3RlbWQncyB1bml0IHN0YXJ0IHRpbWVvdXQKICAgICAgICAgaWYgYm9vdF90aW1lX3NlYyA+IHN5c3RlbWRfVGltZW91dFN0YXJ0U2VjOgotICAgICAgICAgICAgcHJpbnQgIlRhcmdldCBib290IHRpbWUgJXMgZXhjZWVkcyBzeXN0ZW1kJ3MgVGltZW91dFN0YXJ0U2VjICVzIlwKLSAgICAgICAgICAgICAgICAgICAgJShib290X3RpbWVfc2VjLCBzeXN0ZW1kX1RpbWVvdXRTdGFydFNlYykKKyAgICAgICAgICAgIHByaW50KCJUYXJnZXQgYm9vdCB0aW1lICVzIGV4Y2VlZHMgc3lzdGVtZCdzIFRpbWVvdXRTdGFydFNlYyAlcyJcCisgICAgICAgICAgICAgICAgICAgICUoYm9vdF90aW1lX3NlYywgc3lzdGVtZF9UaW1lb3V0U3RhcnRTZWMpKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrL2J1aWxkZ2FsY3VsYXRvci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9idWlsZGdhbGN1bGF0b3IucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGMyZmE5YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9idWlsZGdhbGN1bGF0b3IucHkKQEAgLTAsMCArMSwyNyBAQAorZnJvbSBvZXFhLm9ldGVzdCBpbXBvcnQgb2VTREtUZXN0LCBza2lwTW9kdWxlCitmcm9tIG9lcWEudXRpbHMuZGVjb3JhdG9ycyBpbXBvcnQgKgorZnJvbSBvZXFhLnV0aWxzLnRhcmdldGJ1aWxkIGltcG9ydCBTREtCdWlsZFByb2plY3QKKworZGVmIHNldFVwTW9kdWxlKCk6CisgICAgaWYgbm90IChvZVNES1Rlc3QuaGFzUGFja2FnZSgiZ3RrKzMiKSBvciBvZVNES1Rlc3QuaGFzUGFja2FnZSgibGliZ3RrLTMuMCIpKToKKyAgICAgICAgc2tpcE1vZHVsZSgiSW1hZ2UgZG9lc24ndCBoYXZlIGd0ayszIGluIG1hbmlmZXN0IikKKworY2xhc3MgR2FsY3VsYXRvclRlc3Qob2VTREtUZXN0KToKKyAgICBkZWYgdGVzdF9nYWxjdWxhdG9yKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBwcm9qZWN0ID0gU0RLQnVpbGRQcm9qZWN0KG9lU0RLVGVzdC50Yy5zZGt0ZXN0ZGlyICsgIi9nYWxjdWxhdG9yLyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9lU0RLVGVzdC50Yy5zZGtlbnYsIG9lU0RLVGVzdC50Yy5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL2dhbGN1bGF0b3IubW5pbS5vcmcvZG93bmxvYWRzL2dhbGN1bGF0b3ItMi4xLjQudGFyLmJ6MiIpCisKKyAgICAgICAgICAgIHByb2plY3QuZG93bmxvYWRfYXJjaGl2ZSgpCisKKyAgICAgICAgICAgICMgcmVnZW5lcmF0ZSBjb25maWd1cmUgdG8gZ2V0IHN1cHBvcnQgZm9yIC0td2l0aC1saWJ0b29sLXN5c3Jvb3QKKyAgICAgICAgICAgIGxlZ2FjeV9wcmVjb25mPSgiYXV0b3JlY29uZiAtaSAtZiAtSSAke09FQ09SRV9UQVJHRVRfU1lTUk9PVH0vdXNyL3NoYXJlL2FjbG9jYWwgLUkgbTQ7IikKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm9qZWN0LnJ1bl9jb25maWd1cmUoZXh0cmFfY21kcz1sZWdhY3lfcHJlY29uZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIG1zZz0iUnVubmluZyBjb25maWd1cmUgZmFpbGVkIikKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm9qZWN0LnJ1bl9tYWtlKCksIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSJSdW5uaW5nIG1ha2UgZmFpbGVkIikKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHByb2plY3QuY2xlYW4oKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrL2J1aWxkaXB0YWJsZXMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGsvYnVpbGRpcHRhYmxlcy5weQppbmRleCAwNjJlNTMxLi5mMGNiOGE0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGsvYnVpbGRpcHRhYmxlcy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGsvYnVpbGRpcHRhYmxlcy5weQpAQCAtOCw3ICs4LDcgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhzZWxmKToKICAgICAgICAgc2VsZi5wcm9qZWN0ID0gU0RLQnVpbGRQcm9qZWN0KG9lU0RLVGVzdC50Yy5zZGt0ZXN0ZGlyICsgIi9pcHRhYmxlcy8iLCBvZVNES1Rlc3QudGMuc2RrZW52LCBvZVNES1Rlc3QudGMuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vbmV0ZmlsdGVyLm9yZy9wcm9qZWN0cy9pcHRhYmxlcy9maWxlcy9pcHRhYmxlcy0xLjQuMTMudGFyLmJ6MiIpCisgICAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzL2lwdGFibGVzLTEuNC4xMy50YXIuYnoyIikKICAgICAgICAgc2VsZi5wcm9qZWN0LmRvd25sb2FkX2FyY2hpdmUoKQogCiAgICAgZGVmIHRlc3RfaXB0YWJsZXMoc2VsZik6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGsvYnVpbGRzdWRva3UucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGsvYnVpbGRzdWRva3UucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlYTc3YzYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrL2J1aWxkc3Vkb2t1LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotZnJvbSBvZXFhLm9ldGVzdCBpbXBvcnQgb2VTREtUZXN0LCBza2lwTW9kdWxlCi1mcm9tIG9lcWEudXRpbHMuZGVjb3JhdG9ycyBpbXBvcnQgKgotZnJvbSBvZXFhLnV0aWxzLnRhcmdldGJ1aWxkIGltcG9ydCBTREtCdWlsZFByb2plY3QKLQotZGVmIHNldFVwTW9kdWxlKCk6Ci0gICAgaWYgbm90IG9lU0RLVGVzdC5oYXNQYWNrYWdlKCJndGtcKyIpOgotICAgICAgICBza2lwTW9kdWxlKCJJbWFnZSBkb2Vzbid0IGhhdmUgZ3RrKyBpbiBtYW5pZmVzdCIpCi0KLWNsYXNzIFN1ZG9rdVRlc3Qob2VTREtUZXN0KToKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXRVcENsYXNzKHNlbGYpOgotICAgICAgICBzZWxmLnByb2plY3QgPSBTREtCdWlsZFByb2plY3Qob2VTREtUZXN0LnRjLnNka3Rlc3RkaXIgKyAiL3N1ZG9rdS8iLCBvZVNES1Rlc3QudGMuc2RrZW52LCBvZVNES1Rlc3QudGMuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vZG93bmxvYWRzLnNvdXJjZWZvcmdlLm5ldC9wcm9qZWN0L3N1ZG9rdS1zYXZhbnQvc3Vkb2t1LXNhdmFudC9zdWRva3Utc2F2YW50LTEuMy9zdWRva3Utc2F2YW50LTEuMy50YXIuYnoyIikKLSAgICAgICAgc2VsZi5wcm9qZWN0LmRvd25sb2FkX2FyY2hpdmUoKQotCi0gICAgZGVmIHRlc3Rfc3Vkb2t1KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucHJvamVjdC5ydW5fY29uZmlndXJlKCksIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICBtc2c9IlJ1bm5pbmcgY29uZmlndXJlIGZhaWxlZCIpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnByb2plY3QucnVuX21ha2UoKSwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iUnVubmluZyBtYWtlIGZhaWxlZCIpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgdGVhckRvd25DbGFzcyhzZWxmKToKLSAgICAgICAgc2VsZi5wcm9qZWN0LmNsZWFuKCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3Nka2V4dC9kZXZ0b29sLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrZXh0L2RldnRvb2wucHkKaW5kZXggYzViYjMxMC4uNjVmNDFmNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrZXh0L2RldnRvb2wucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrZXh0L2RldnRvb2wucHkKQEAgLTEsMzIgKzEsMTA4IEBACiBpbXBvcnQgc2h1dGlsCi0KK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgdXJsbGliLnJlcXVlc3QKIGZyb20gb2VxYS5vZXRlc3QgaW1wb3J0IG9lU0RLRXh0VGVzdAogZnJvbSBvZXFhLnV0aWxzLmRlY29yYXRvcnMgaW1wb3J0ICoKIAogY2xhc3MgRGV2dG9vbFRlc3Qob2VTREtFeHRUZXN0KToKLQogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKHNlbGYpOgogICAgICAgICBzZWxmLm15YXBwX3NyYyA9IG9zLnBhdGguam9pbihzZWxmLnRjLnNka2V4dGZpbGVzZGlyLCAibXlhcHAiKQogICAgICAgICBzZWxmLm15YXBwX2RzdCA9IG9zLnBhdGguam9pbihzZWxmLnRjLnNka3Rlc3RkaXIsICJteWFwcCIpCiAgICAgICAgIHNodXRpbC5jb3B5dHJlZShzZWxmLm15YXBwX3NyYywgc2VsZi5teWFwcF9kc3QpCiAKKyAgICAgICAgc2VsZi5teWFwcF9jbWFrZV9zcmMgPSBvcy5wYXRoLmpvaW4oc2VsZi50Yy5zZGtleHRmaWxlc2RpciwgIm15YXBwX2NtYWtlIikKKyAgICAgICAgc2VsZi5teWFwcF9jbWFrZV9kc3QgPSBvcy5wYXRoLmpvaW4oc2VsZi50Yy5zZGt0ZXN0ZGlyLCAibXlhcHBfY21ha2UiKQorICAgICAgICBzaHV0aWwuY29weXRyZWUoc2VsZi5teWFwcF9jbWFrZV9zcmMsIHNlbGYubXlhcHBfY21ha2VfZHN0KQorCisgICAgZGVmIF90ZXN0X2RldnRvb2xfYnVpbGQoc2VsZiwgZGlyZWN0b3J5KToKKyAgICAgICAgc2VsZi5fcnVuKCdkZXZ0b29sIGFkZCBteWFwcCAlcycgJSBkaXJlY3RvcnkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuX3J1bignZGV2dG9vbCBidWlsZCBteWFwcCcpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHByaW50KGUub3V0cHV0KQorICAgICAgICAgICAgc2VsZi5fcnVuKCdkZXZ0b29sIHJlc2V0IG15YXBwJykKKyAgICAgICAgICAgIHJhaXNlIGUKKyAgICAgICAgc2VsZi5fcnVuKCdkZXZ0b29sIHJlc2V0IG15YXBwJykKKworICAgIGRlZiBfdGVzdF9kZXZ0b29sX2J1aWxkX3BhY2thZ2Uoc2VsZiwgZGlyZWN0b3J5KToKKyAgICAgICAgc2VsZi5fcnVuKCdkZXZ0b29sIGFkZCBteWFwcCAlcycgJSBkaXJlY3RvcnkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuX3J1bignZGV2dG9vbCBwYWNrYWdlIG15YXBwJykKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcHJpbnQoZS5vdXRwdXQpCisgICAgICAgICAgICBzZWxmLl9ydW4oJ2RldnRvb2wgcmVzZXQgbXlhcHAnKQorICAgICAgICAgICAgcmFpc2UgZQorICAgICAgICBzZWxmLl9ydW4oJ2RldnRvb2wgcmVzZXQgbXlhcHAnKQorCiAgICAgZGVmIHRlc3RfZGV2dG9vbF9sb2NhdGlvbihzZWxmKToKICAgICAgICAgb3V0cHV0ID0gc2VsZi5fcnVuKCd3aGljaCBkZXZ0b29sJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQuc3RhcnRzd2l0aChzZWxmLnRjLnNka3Rlc3RkaXIpLCBUcnVlLCBcCiAgICAgICAgICAgICBtc2c9IlNlZW1zIHRoYXQgZGV2dG9vbCBpc24ndCB0aGUgZVNESyBvbmU6ICVzIiAlIG91dHB1dCkKLQorICAgIAogICAgIEBza2lwVW5sZXNzUGFzc2VkKCd0ZXN0X2RldnRvb2xfbG9jYXRpb24nKQogICAgIGRlZiB0ZXN0X2RldnRvb2xfYWRkX3Jlc2V0KHNlbGYpOgogICAgICAgICBzZWxmLl9ydW4oJ2RldnRvb2wgYWRkIG15YXBwICVzJyAlIHNlbGYubXlhcHBfZHN0KQogICAgICAgICBzZWxmLl9ydW4oJ2RldnRvb2wgcmVzZXQgbXlhcHAnKQotCisgICAgCisgICAgQHRlc3RjYXNlKDE0NzMpCiAgICAgQHNraXBVbmxlc3NQYXNzZWQoJ3Rlc3RfZGV2dG9vbF9sb2NhdGlvbicpCi0gICAgZGVmIHRlc3RfZGV2dG9vbF9idWlsZChzZWxmKToKLSAgICAgICAgc2VsZi5fcnVuKCdkZXZ0b29sIGFkZCBteWFwcCAlcycgJSBzZWxmLm15YXBwX2RzdCkKLSAgICAgICAgc2VsZi5fcnVuKCdkZXZ0b29sIGJ1aWxkIG15YXBwJykKLSAgICAgICAgc2VsZi5fcnVuKCdkZXZ0b29sIHJlc2V0IG15YXBwJykKKyAgICBkZWYgdGVzdF9kZXZ0b29sX2J1aWxkX21ha2Uoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZGV2dG9vbF9idWlsZChzZWxmLm15YXBwX2RzdCkKKyAgICAKKyAgICBAdGVzdGNhc2UoMTQ3NCkKKyAgICBAc2tpcFVubGVzc1Bhc3NlZCgndGVzdF9kZXZ0b29sX2xvY2F0aW9uJykKKyAgICBkZWYgdGVzdF9kZXZ0b29sX2J1aWxkX2VzZGtfcGFja2FnZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9kZXZ0b29sX2J1aWxkX3BhY2thZ2Uoc2VsZi5teWFwcF9kc3QpCisKKyAgICBAdGVzdGNhc2UoMTQ3OSkKKyAgICBAc2tpcFVubGVzc1Bhc3NlZCgndGVzdF9kZXZ0b29sX2xvY2F0aW9uJykKKyAgICBkZWYgdGVzdF9kZXZ0b29sX2J1aWxkX2NtYWtlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2RldnRvb2xfYnVpbGQoc2VsZi5teWFwcF9jbWFrZV9kc3QpCisgICAgCisgICAgQHRlc3RjYXNlKDE0ODIpCisgICAgQHNraXBVbmxlc3NQYXNzZWQoJ3Rlc3RfZGV2dG9vbF9sb2NhdGlvbicpCisgICAgZGVmIHRlc3RfZXh0ZW5kX2F1dG90b29sc19yZWNpcGVfY3JlYXRpb24oc2VsZik6CisgICAgICAgIHJlcSA9ICdodHRwczovL2dpdGh1Yi5jb20vcmRmYS9saWJyZGZhJworICAgICAgICByZWNpcGUgPSAiYmJleGFtcGxlIgorICAgICAgICBzZWxmLl9ydW4oJ2RldnRvb2wgYWRkICVzICVzJyAlIChyZWNpcGUsIHJlcSkgKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLl9ydW4oJ2RldnRvb2wgYnVpbGQgJXMnICUgcmVjaXBlKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBwcmludChlLm91dHB1dCkKKyAgICAgICAgICAgIHNlbGYuX3J1bignZGV2dG9vbCByZXNldCAlcycgJSByZWNpcGUpCisgICAgICAgICAgICByYWlzZSBlCisgICAgICAgIHNlbGYuX3J1bignZGV2dG9vbCByZXNldCAlcycgJSByZWNpcGUpCisKKyAgICBAdGVzdGNhc2UoMTQ4NCkKKyAgICBAc2tpcFVubGVzc1Bhc3NlZCgndGVzdF9kZXZ0b29sX2xvY2F0aW9uJykKKyAgICBkZWYgdGVzdF9kZXZ0b29sX2tlcm5lbG1vZHVsZShzZWxmKToKKyAgICAgICAgZG9jZmlsZSA9ICdodHRwczovL2dpdGh1Yi5jb20vdW1sYWV1dGUvdjRsMmxvb3BiYWNrLmdpdCcKKyAgICAgICAgcmVjaXBlID0gJ3Y0bDJsb29wYmFjay1kcml2ZXInCisgICAgICAgIHNlbGYuX3J1bignZGV2dG9vbCBhZGQgJXMgJXMnICUgKHJlY2lwZSwgZG9jZmlsZSkgKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLl9ydW4oJ2RldnRvb2wgYnVpbGQgJXMnICUgcmVjaXBlKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBwcmludChlLm91dHB1dCkKKyAgICAgICAgICAgIHNlbGYuX3J1bignZGV2dG9vbCByZXNldCAlcycgJSByZWNpcGUpCisgICAgICAgICAgICByYWlzZSBlCisgICAgICAgIHNlbGYuX3J1bignZGV2dG9vbCByZXNldCAlcycgJSByZWNpcGUpCisKKyAgICBAdGVzdGNhc2UoMTQ3OCkKKyAgICBAc2tpcFVubGVzc1Bhc3NlZCgndGVzdF9kZXZ0b29sX2xvY2F0aW9uJykKKyAgICBkZWYgdGVzdF9yZWNpcGVzX2Zvcl9ub2RlanMoc2VsZik6CisgICAgICAgIHBhY2thZ2Vfbm9kZWpzID0gIm5wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztuYW1lPXdpbnN0b247dmVyc2lvbj0yLjIuMCIKKyAgICAgICAgc2VsZi5fcnVuKCdkZXZ0b29sIGFkZCAlcyAnICUgcGFja2FnZV9ub2RlanMpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuX3J1bignZGV2dG9vbCBidWlsZCAlcyAnICUgcGFja2FnZV9ub2RlanMpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHByaW50KGUub3V0cHV0KQorICAgICAgICAgICAgc2VsZi5fcnVuKCdkZXZ0b29sIHJlc2V0ICVzJyAlIHBhY2thZ2Vfbm9kZWpzKQorICAgICAgICAgICAgcmFpc2UgZQorICAgICAgICBzZWxmLl9ydW4oJ2RldnRvb2wgcmVzZXQgJXMgJyUgcGFja2FnZV9ub2RlanMpCisKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiB0ZWFyRG93bkNsYXNzKHNlbGYpOgogICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYubXlhcHBfZHN0KQorICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYubXlhcHBfY21ha2VfZHN0KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrZXh0L2ZpbGVzL215YXBwX2NtYWtlL0NNYWtlTGlzdHMudHh0IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrZXh0L2ZpbGVzL215YXBwX2NtYWtlL0NNYWtlTGlzdHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5ZDc3M2QKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGtleHQvZmlsZXMvbXlhcHBfY21ha2UvQ01ha2VMaXN0cy50eHQKQEAgLTAsMCArMSwxMSBAQAorY21ha2VfbWluaW11bV9yZXF1aXJlZCAoVkVSU0lPTiAyLjYpCitwcm9qZWN0IChteWFwcCkKKyMgVGhlIHZlcnNpb24gbnVtYmVyLgorc2V0IChteWFwcF9WRVJTSU9OX01BSk9SIDEpCitzZXQgKG15YXBwX1ZFUlNJT05fTUlOT1IgMCkKKworIyBhZGQgdGhlIGV4ZWN1dGFibGUKK2FkZF9leGVjdXRhYmxlIChteWFwcCBteWFwcC5jKQorCitpbnN0YWxsKFRBUkdFVFMgbXlhcHAKKyAgICAgICAgUlVOVElNRSBERVNUSU5BVElPTiBiaW4pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGtleHQvZmlsZXMvbXlhcHBfY21ha2UvbXlhcHAuYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3Nka2V4dC9maWxlcy9teWFwcF9jbWFrZS9teWFwcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwYjYzZjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGtleHQvZmlsZXMvbXlhcHBfY21ha2UvbXlhcHAuYwpAQCAtMCwwICsxLDkgQEAKKyNpbmNsdWRlIDxzdGRpby5oPgorCitpbnQKK21haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwlwcmludGYoIkhlbGxvIHdvcmxkXG4iKTsKKworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrZXh0L3Nka191cGRhdGUucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGtleHQvc2RrX3VwZGF0ZS5weQppbmRleCA3YTJhNmZlLi4yYWRlODM5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGtleHQvc2RrX3VwZGF0ZS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGtleHQvc2RrX3VwZGF0ZS5weQpAQCAtMzAsOSArMzAsNiBAQAogICAgIGRlZiB0ZXN0X3Nka191cGRhdGVfaHR0cChzZWxmKToKICAgICAgICAgb3V0cHV0ID0gc2VsZi5fcnVuKCJkZXZ0b29sIHNkay11cGRhdGUgXCIlc1wiIiAlIHNlbGYuaHR0cF91cmwpCiAKLSAgICBkZWYgdGVzdF9zZGtfdXBkYXRlX2xvY2FsKHNlbGYpOgotICAgICAgICBvdXRwdXQgPSBzZWxmLl9ydW4oImRldnRvb2wgc2RrLXVwZGF0ZSBcIiVzXCIiICUgc2VsZi5wdWJsaXNoX2RpcikKLQogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiB0ZWFyRG93bkNsYXNzKHNlbGYpOgogICAgICAgICBzZWxmLmh0dHBfc2VydmljZS5zdG9wKCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L190b2FzdGVyLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvX3RvYXN0ZXIucHkKaW5kZXggYzQyNDY1OS4uMTVlYTlkZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvX3RvYXN0ZXIucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvX3RvYXN0ZXIucHkKQEAgLTIsNyArMiw3IEBACiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCBzaGxleCwgc3VicHJvY2VzcwotaW1wb3J0IHVybGxpYiwgY29tbWFuZHMsIHRpbWUsIGdldHBhc3MsIHJlLCBqc29uLCBzaGxleAoraW1wb3J0IHVybGxpYi5yZXF1ZXN0LCB1cmxsaWIucGFyc2UsIHVybGxpYi5lcnJvciwgc3VicHJvY2VzcywgdGltZSwgZ2V0cGFzcywgcmUsIGpzb24sIHNobGV4CiAKIGltcG9ydCBvZXFhLnV0aWxzLmZ0b29scyBhcyBmdG9vbHMKIGZyb20gb2VxYS5zZWxmdGVzdC5iYXNlIGltcG9ydCBvZVNlbGZUZXN0CkBAIC0yOTAsNyArMjkwLDcgQEAKICAgICAgICAgbGF5ZXJzID0gTGF5ZXIub2JqZWN0cy52YWx1ZXMoJ2lkJywgJ2xheWVyX2luZGV4X3VybCcpCiAgICAgICAgIGNudF9lcnIgPSBbXQogICAgICAgICBmb3IgbGF5ZXIgaW4gbGF5ZXJzOgotICAgICAgICAgICAgcmVzcCA9IHVybGxpYi51cmxvcGVuKGxheWVyWydsYXllcl9pbmRleF91cmwnXSkKKyAgICAgICAgICAgIHJlc3AgPSB1cmxsaWIucmVxdWVzdC51cmxvcGVuKGxheWVyWydsYXllcl9pbmRleF91cmwnXSkKICAgICAgICAgICAgIGlmIChyZXNwLmdldGNvZGUoKSAhPSAyMDApOgogICAgICAgICAgICAgICAgIGNudF9lcnIuYXBwZW5kKGxheWVyWydpZCddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjbnRfZXJyKSwgMCwgbXNnID0gJ0Vycm9ycyBmb3IgbGF5ZXIgaWQ6ICVzJyAlIGNudF9lcnIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9iYXNlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvYmFzZS5weQppbmRleCBlMTA0NTVlLi4yNmM5M2Y5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9iYXNlLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Jhc2UucHkKQEAgLTI4LDE3ICsyOCw0NyBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXRob2ROYW1lPSJydW5UZXN0Iik6CiAgICAgICAgIHNlbGYuYnVpbGRkaXIgPSBvcy5lbnZpcm9uLmdldCgiQlVJTERESVIiKQogICAgICAgICBzZWxmLmxvY2FsY29uZl9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICJjb25mL2xvY2FsLmNvbmYiKQorICAgICAgICBzZWxmLmxvY2FsY29uZl9iYWNrdXAgPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgImNvbmYvbG9jYWwuYmsiKQogICAgICAgICBzZWxmLnRlc3RpbmNfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAiY29uZi9zZWxmdGVzdC5pbmMiKQogICAgICAgICBzZWxmLmxvY2FsX2JibGF5ZXJzX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgImNvbmYvYmJsYXllcnMuY29uZiIpCisgICAgICAgIHNlbGYubG9jYWxfYmJsYXllcnNfYmFja3VwID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb25mL2JibGF5ZXJzLmJrIikKICAgICAgICAgc2VsZi50ZXN0aW5jX2JibGF5ZXJzX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgImNvbmYvYmJsYXllcnMuaW5jIikKICAgICAgICAgc2VsZi5tYWNoaW5laW5jX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgImNvbmYvbWFjaGluZS5pbmMiKQogICAgICAgICBzZWxmLnRlc3RsYXllcl9wYXRoID0gb2VTZWxmVGVzdC50ZXN0bGF5ZXJfcGF0aAogICAgICAgICBzZWxmLl9leHRyYV90ZWFyX2Rvd25fY29tbWFuZHMgPSBbXQotICAgICAgICBzZWxmLl90cmFja19mb3JfY2xlYW51cCA9IFtzZWxmLnRlc3RpbmNfcGF0aCwgc2VsZi50ZXN0aW5jX2JibGF5ZXJzX3BhdGgsIHNlbGYubWFjaGluZWluY19wYXRoXQorICAgICAgICBzZWxmLl90cmFja19mb3JfY2xlYW51cCA9IFsKKyAgICAgICAgICAgIHNlbGYudGVzdGluY19wYXRoLCBzZWxmLnRlc3RpbmNfYmJsYXllcnNfcGF0aCwKKyAgICAgICAgICAgIHNlbGYubWFjaGluZWluY19wYXRoLCBzZWxmLmxvY2FsY29uZl9iYWNrdXAsCisgICAgICAgICAgICBzZWxmLmxvY2FsX2JibGF5ZXJzX2JhY2t1cF0KICAgICAgICAgc3VwZXIob2VTZWxmVGVzdCwgc2VsZikuX19pbml0X18obWV0aG9kTmFtZSkKIAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgb3MuY2hkaXIoc2VsZi5idWlsZGRpcikKKyAgICAgICAgIyBDaGVjayBpZiBsb2NhbC5jb25mIG9yIGJibGF5ZXJzLmNvbmYgZmlsZXMgYmFja3VwIGV4aXN0cworICAgICAgICAjIGZyb20gYSBwcmV2aW91cyBmYWlsZWQgdGVzdCBhbmQgcmVzdG9yZSB0aGVtCisgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHNlbGYubG9jYWxjb25mX2JhY2t1cCkgb3Igb3MucGF0aC5pc2ZpbGUoCisgICAgICAgICAgICAgICAgc2VsZi5sb2NhbF9iYmxheWVyc19iYWNrdXApOgorICAgICAgICAgICAgc2VsZi5sb2cuZGVidWcoIkZvdW5kIGEgbG9jYWwuY29uZiBhbmQvb3IgYmJsYXllcnMuY29uZiBiYWNrdXAgXAorZnJvbSBhIHByZXZpb3VzbHkgYWJvcnRlZCB0ZXN0LiBSZXN0b3JpbmcgdGhlc2UgZmlsZXMgbm93LCBidXQgdGVzdHMgc2hvdWxkIFwKK2JlIHJlLWV4ZWN1dGVkIGZyb20gYSBjbGVhbiBlbnZpcm9ubWVudCB0byBlbnN1cmUgYWNjdXJhdGUgcmVzdWx0cy4iKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShzZWxmLmxvY2FsY29uZl9iYWNrdXAsIHNlbGYubG9jYWxjb25mX3BhdGgpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRU5PRU5UOgorICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShzZWxmLmxvY2FsX2JibGF5ZXJzX2JhY2t1cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2NhbF9iYmxheWVyc19wYXRoKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVOT0VOVDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgYmFja3VwIGxvY2FsLmNvbmYgYW5kIGJibGF5ZXJzLmNvbmYKKyAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShzZWxmLmxvY2FsY29uZl9wYXRoLCBzZWxmLmxvY2FsY29uZl9iYWNrdXApCisgICAgICAgICAgICBzaHV0aWwuY29weWZpbGUoc2VsZi5sb2NhbF9iYmxheWVyc19wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9jYWxfYmJsYXllcnNfYmFja3VwKQorICAgICAgICAgICAgc2VsZi5sb2cuZGVidWcoIkNyZWF0aW5nIGxvY2FsLmNvbmYgYW5kIGJibGF5ZXJzLmNvbmYgYmFja3Vwcy4iKQogICAgICAgICAjIHdlIGRvbid0IGtub3cgd2hhdCB0aGUgcHJldmlvdXMgdGVzdCBsZWZ0IGFyb3VuZCBpbiBjb25maWcgb3IgaW5jIGZpbGVzCiAgICAgICAgICMgaWYgaXQgZmFpbGVkIHNvIHdlIG5lZWQgYSBmcmVzaCBzdGFydAogICAgICAgICB0cnk6CkBAIC02Nyw3ICs5Nyw3IEBACiAgICAgICAgICAgICAgICAgbWFjaGluZSA9IGN1c3RvbW1hY2hpbmUKICAgICAgICAgICAgIG1hY2hpbmVfY29uZiA9ICdNQUNISU5FID8/PSAiJXMiXG4nICUgbWFjaGluZQogICAgICAgICAgICAgc2VsZi5zZXRfbWFjaGluZV9jb25maWcobWFjaGluZV9jb25mKQotICAgICAgICAgICAgcHJpbnQgJ01BQ0hJTkU6ICVzJyAlIG1hY2hpbmUKKyAgICAgICAgICAgIHByaW50KCdNQUNISU5FOiAlcycgJSBtYWNoaW5lKQogCiAgICAgICAgICMgdGVzdHMgbWlnaHQgbmVlZCB0aGVpciBvd24gc2V0dXAKICAgICAgICAgIyBidXQgaWYgdGhleSBvdmVyd3JpdGUgdGhpcyBvbmUgdGhleSBoYXZlIHRvIGNhbGwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2JidGVzdHMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9iYnRlc3RzLnB5CmluZGV4IDI2NzI4YTQuLmJhYWUxZTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2JidGVzdHMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvYmJ0ZXN0cy5weQpAQCAtMjksNyArMjksNyBAQAogICAgIGRlZiB0ZXN0X2V2ZW50X2hhbmRsZXIoc2VsZik6CiAgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCJJTkhFUklUICs9IFwidGVzdF9ldmVudHNcIiIpCiAgICAgICAgIHJlc3VsdCA9IGJpdGJha2UoJ200LW5hdGl2ZScpCi0gICAgICAgIGZpbmRfYnVpbGRfc3RhcnRlZCA9IHJlLnNlYXJjaCgiTk9URTogVGVzdCBmb3IgYmJcLmV2ZW50XC5CdWlsZFN0YXJ0ZWQoXG4uKikqTk9URTogUHJlcGFyaW5nIFJ1blF1ZXVlIiwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgZmluZF9idWlsZF9zdGFydGVkID0gcmUuc2VhcmNoKCJOT1RFOiBUZXN0IGZvciBiYlwuZXZlbnRcLkJ1aWxkU3RhcnRlZChcbi4qKSpOT1RFOiBFeGVjdXRpbmcgUnVuUXVldWUgVGFza3MiLCByZXN1bHQub3V0cHV0KQogICAgICAgICBmaW5kX2J1aWxkX2NvbXBsZXRlZCA9IHJlLnNlYXJjaCgiVGFza3MgU3VtbWFyeTouKihcbi4qKSpOT1RFOiBUZXN0IGZvciBiYlwuZXZlbnRcLkJ1aWxkQ29tcGxldGVkIiwgcmVzdWx0Lm91dHB1dCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbmRfYnVpbGRfc3RhcnRlZCwgbXNnID0gIk1hdGNoIGZhaWxlZCBpbjpcbiVzIiAgJSByZXN1bHQub3V0cHV0KQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZmluZF9idWlsZF9jb21wbGV0ZWQsIG1zZyA9ICJNYXRjaCBmYWlsZWQgaW46XG4lcyIgJSByZXN1bHQub3V0cHV0KQpAQCAtNjQsMTIgKzY0LDE1IEBACiAKICAgICBAdGVzdGNhc2UoMTA4KQogICAgIGRlZiB0ZXN0X2ludmFsaWRfcGF0Y2goc2VsZik6CisgICAgICAgICMgVGhpcyBwYXRjaCBhbHJlYWR5IGV4aXN0cyBpbiBTUkNfVVJJIHNvIGFkZGluZyBpdCBhZ2FpbiB3aWxsIGNhdXNlIHRoZQorICAgICAgICAjIHBhdGNoIHRvIGZhaWwuCiAgICAgICAgIHNlbGYud3JpdGVfcmVjaXBlaW5jKCdtYW4nLCAnU1JDX1VSSSArPSAiZmlsZTovL21hbi0xLjVoMS1tYWtlLnBhdGNoIicpCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCJJTkhFUklUX3JlbW92ZSA9IFwicmVwb3J0LWVycm9yXCIiKQogICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCdtYW4gLWMgcGF0Y2gnLCBpZ25vcmVfc3RhdHVzPVRydWUpCiAgICAgICAgIHNlbGYuZGVsZXRlX3JlY2lwZWluYygnbWFuJykKICAgICAgICAgYml0YmFrZSgnLWNjbGVhbiBtYW4nKQogICAgICAgICBsaW5lID0gc2VsZi5nZXRsaW5lKHJlc3VsdCwgIkZ1bmN0aW9uIGZhaWxlZDogcGF0Y2hfZG9fcGF0Y2giKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZSBhbmQgbGluZS5zdGFydHN3aXRoKCJFUlJPUjoiKSwgbXNnID0gIlRob3VnaCBubyBtYW4tMS41aDEtbWFrZS5wYXRjaCBmaWxlIGV4aXN0cywgYml0YmFrZSBkaWRuJ3Qgb3V0cHV0IGFueSBlcnIuIG1lc3NhZ2UuIGJpdGJha2Ugb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZSBhbmQgbGluZS5zdGFydHN3aXRoKCJFUlJPUjoiKSwgbXNnID0gIlJlcGVhdGVkIHBhdGNoIGFwcGxpY2F0aW9uIGRpZG4ndCBmYWlsLiBiaXRiYWtlIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKIAogICAgIEB0ZXN0Y2FzZSgxMzU0KQogICAgIGRlZiB0ZXN0X2ZvcmNlX3Rhc2tfMShzZWxmKToKQEAgLTEzMSw2ICsxMzQsNyBAQAogICAgICAgICBzZWxmLndyaXRlX3JlY2lwZWluYygnbWFuJywgZGF0YSkKICAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiRExfRElSID0gXCIke1RPUERJUn0vZG93bmxvYWQtc2VsZnRlc3RcIgogU1NUQVRFX0RJUiA9IFwiJHtUT1BESVJ9L2Rvd25sb2FkLXNlbGZ0ZXN0XCIKK0lOSEVSSVRfcmVtb3ZlID0gXCJyZXBvcnQtZXJyb3JcIgogIiIiKQogICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAiZG93bmxvYWQtc2VsZnRlc3QiKSkKIApAQCAtMTQxLDcgKzE0NSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN0YXR1cywgMSwgbXNnPSJDb21tYW5kIHN1Y2NlZGVkIHdoZW4gaXQgc2hvdWxkIGhhdmUgZmFpbGVkLiBiaXRiYWtlIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdGZXRjaGVyIGZhaWx1cmU6IFVuYWJsZSB0byBmaW5kIGZpbGUgZmlsZTovL2ludmFsaWQgYW55d2hlcmUuIFRoZSBwYXRocyB0aGF0IHdlcmUgc2VhcmNoZWQgd2VyZTonIGluIHJlc3VsdC5vdXRwdXQsIG1zZyA9ICJcImludmFsaWRcIiBmaWxlIFwKIGRvZXNuJ3QgZXhpc3QsIHlldCBubyBlcnJvciBtZXNzYWdlIGVuY291bnRlcmVkLiBiaXRiYWtlIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgbGluZSA9IHNlbGYuZ2V0bGluZShyZXN1bHQsICdGdW5jdGlvbiBmYWlsZWQ6IEZldGNoZXIgZmFpbHVyZSBmb3IgVVJMOiBcJ2ZpbGU6Ly9pbnZhbGlkXCcuIFVuYWJsZSB0byBmZXRjaCBVUkwgZnJvbSBhbnkgc291cmNlLicpCisgICAgICAgIGxpbmUgPSBzZWxmLmdldGxpbmUocmVzdWx0LCAnRmV0Y2hlciBmYWlsdXJlIGZvciBVUkw6IFwnZmlsZTovL2ludmFsaWRcJy4gVW5hYmxlIHRvIGZldGNoIFVSTCBmcm9tIGFueSBzb3VyY2UuJykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmUgYW5kIGxpbmUuc3RhcnRzd2l0aCgiRVJST1I6IiksIG1zZyA9ICJcImludmFsaWRcIiBmaWxlIFwKIGRvZXNuJ3QgZXhpc3QsIHlldCBmZXRjaGVyIGRpZG4ndCByZXBvcnQgYW55IGVycm9yLiBiaXRiYWtlIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKIApAQCAtMjEyLDYgKzIxNiw3IEBACiAgICAgZGVmIHRlc3RfY29udGludWUoc2VsZik6CiAgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIkRMX0RJUiA9IFwiJHtUT1BESVJ9L2Rvd25sb2FkLXNlbGZ0ZXN0XCIKIFNTVEFURV9ESVIgPSBcIiR7VE9QRElSfS9kb3dubG9hZC1zZWxmdGVzdFwiCitJTkhFUklUX3JlbW92ZSA9IFwicmVwb3J0LWVycm9yXCIKICIiIikKICAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgImRvd25sb2FkLXNlbGZ0ZXN0IikpCiAgICAgICAgIHNlbGYud3JpdGVfcmVjaXBlaW5jKCdtYW4nLCJcbmRvX2ZhaWxfdGFzayAoKSB7XG5leGl0IDEgXG59XG5cbmFkZHRhc2sgZG9fZmFpbF90YXNrIGJlZm9yZSBkb19mZXRjaFxuIiApCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9idWlsZG9wdGlvbnMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9idWlsZG9wdGlvbnMucHkKaW5kZXggMzVkNWRmZC4uOTQ4Nzg5OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvYnVpbGRvcHRpb25zLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2J1aWxkb3B0aW9ucy5weQpAQCAtMzAsMjIgKzMwLDYgQEAKICAgICAgICAgaW5jcmVtZW50YWxfcmVtb3ZlZCA9IHJlLnNlYXJjaCgiTk9URTogbG9hZCBvbGQgaW5zdGFsbCBzb2x1dGlvbiBmb3IgaW5jcmVtZW50YWwgaW5zdGFsbFxuTk9URTogY3JlYXRpbmcgbmV3IGluc3RhbGwgc29sdXRpb24gZm9yIGluY3JlbWVudGFsIGluc3RhbGwoXG4uKikqTk9URTogaW5jcmVtZW50YWwgcmVtb3ZlZDouKm9wZW5zc2gtc3NoZC0uKiIsIGxvZ19kYXRhX3JlbW92ZWQpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbmNyZW1lbnRhbF9yZW1vdmVkLCBtc2cgPSAiTWF0Y2ggZmFpbGVkIGluOlxuJXMiICUgbG9nX2RhdGFfcmVtb3ZlZCkKIAotICAgIEB0ZXN0Y2FzZSg5MjUpCi0gICAgZGVmIHRlc3Rfcm1fb2xkX2ltYWdlKHNlbGYpOgotICAgICAgICBiaXRiYWtlKCJjb3JlLWltYWdlLW1pbmltYWwiKQotICAgICAgICBkZXBsb3lkaXIgPSBnZXRfYmJfdmFyKCJERVBMT1lfRElSX0lNQUdFIiwgdGFyZ2V0PSJjb3JlLWltYWdlLW1pbmltYWwiKQotICAgICAgICBpbWFnZW5hbWUgPSBnZXRfYmJfdmFyKCJJTUFHRV9MSU5LX05BTUUiLCB0YXJnZXQ9ImNvcmUtaW1hZ2UtbWluaW1hbCIpCi0gICAgICAgIGRlcGxveWRpcl9maWxlcyA9IG9zLmxpc3RkaXIoZGVwbG95ZGlyKQotICAgICAgICB0cmFja19vcmlnaW5hbF9maWxlcyA9IFtdCi0gICAgICAgIGZvciBpbWFnZV9maWxlIGluIGRlcGxveWRpcl9maWxlczoKLSAgICAgICAgICAgIGlmIGltYWdlbmFtZSBpbiBpbWFnZV9maWxlIGFuZCBvcy5wYXRoLmlzbGluayhvcy5wYXRoLmpvaW4oZGVwbG95ZGlyLCBpbWFnZV9maWxlKSk6Ci0gICAgICAgICAgICAgICAgdHJhY2tfb3JpZ2luYWxfZmlsZXMuYXBwZW5kKG9zLnBhdGgucmVhbHBhdGgob3MucGF0aC5qb2luKGRlcGxveWRpciwgaW1hZ2VfZmlsZSkpKQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiUk1fT0xEX0lNQUdFID0gXCIxXCIiKQotICAgICAgICBiaXRiYWtlKCItQyByb290ZnMgY29yZS1pbWFnZS1taW5pbWFsIikKLSAgICAgICAgZGVwbG95ZGlyX2ZpbGVzID0gb3MubGlzdGRpcihkZXBsb3lkaXIpCi0gICAgICAgIHJlbWFpbmluZ19ub3RfZXhwZWN0ZWQgPSBbcGF0aCBmb3IgcGF0aCBpbiB0cmFja19vcmlnaW5hbF9maWxlcyBpZiBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpIGluIGRlcGxveWRpcl9maWxlc10KLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZW1haW5pbmdfbm90X2V4cGVjdGVkLCBtc2c9IlxuVGhlIGZvbGxvd2luZyBpbWFnZSBmaWxlcyB3ZXJlIG5vdCByZW1vdmVkOiAlcyIgJSAnLCAnLmpvaW4obWFwKHN0ciwgcmVtYWluaW5nX25vdF9leHBlY3RlZCkpKQotCiAgICAgQHRlc3RjYXNlKDI4NikKICAgICBkZWYgdGVzdF9jY2FjaGVfdG9vbChzZWxmKToKICAgICAgICAgYml0YmFrZSgiY2NhY2hlLW5hdGl2ZSIpCkBAIC04OSw4ICs3Myw5IEBACiAgICAgZGVmIHRlc3Rfb3B0aW9uc193YXJucWFfZXJyb3JxYV9zd2l0Y2goc2VsZik6CiAgICAgICAgIGJpdGJha2UoInhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUgLWNjbGVhbnNzdGF0ZSIpCiAKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIklOSEVSSVRfcmVtb3ZlID0gXCJyZXBvcnQtZXJyb3JcIiIpCiAgICAgICAgIGlmICJwYWNrYWdlcy1saXN0IiBub3QgaW4gZ2V0X2JiX3ZhcigiRVJST1JfUUEiKToKLSAgICAgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCJFUlJPUl9RQV9hcHBlbmQgPSBcIiBwYWNrYWdlcy1saXN0XCIiKQorICAgICAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKCJFUlJPUl9RQV9hcHBlbmQgPSBcIiBwYWNrYWdlcy1saXN0XCIiKQogCiAgICAgICAgIHNlbGYud3JpdGVfcmVjaXBlaW5jKCd4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lJywgJ1BBQ0tBR0VTICs9IFwiJHtQTn0tZGJnXCInKQogICAgICAgICByZXMgPSBiaXRiYWtlKCJ4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lIiwgaWdub3JlX3N0YXR1cz1UcnVlKQpAQCAtMTk5LDc4ICsxODQsNiBAQAogICAgICAgICBzZWxmLnJ1bl9idWlsZGhpc3Rvcnlfb3BlcmF0aW9uKHRhcmdldCwgdGFyZ2V0X2NvbmZpZz0iUFIgPSBcInIxXCIiLCBjaGFuZ2VfYmhfbG9jYXRpb249VHJ1ZSkKICAgICAgICAgc2VsZi5ydW5fYnVpbGRoaXN0b3J5X29wZXJhdGlvbih0YXJnZXQsIHRhcmdldF9jb25maWc9IlBSID0gXCJyMFwiIiwgY2hhbmdlX2JoX2xvY2F0aW9uPUZhbHNlLCBleHBlY3RfZXJyb3I9VHJ1ZSwgZXJyb3JfcmVnZXg9ZXJyb3IpCiAKLSAgICBAdGVzdGNhc2UoMTM4NikKLSAgICBkZWYgdGVzdF9idWlsZGhpc3RvcnlfZG9lc19ub3RfY2hhbmdlX3NpZ25hdHVyZXMoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBTdW1tYXJ5OiAgICAgRW5zdXJlIHRoYXQgYnVpbGRoaXN0b3J5IGRvZXMgbm90IGNoYW5nZSBzaWduYXR1cmVzCi0gICAgICAgIEV4cGVjdGVkOiAgICBPbmx5ICdkb19yb290ZnMnIHRhc2sgc2hvdWxkIGJlIHJlcnVuCi0gICAgICAgIFByb2R1Y3Q6ICAgICBvZS1jb3JlCi0gICAgICAgIEF1dGhvcjogICAgICBEYW5pZWwgSXN0cmF0ZSA8ZGFuaWVsLmFsZXhhbmRydXguaXN0cmF0ZUBpbnRlbC5jb20+Ci0gICAgICAgIEF1dG9tYXRlZEJ5OiBEYW5pZWwgSXN0cmF0ZSA8ZGFuaWVsLmFsZXhhbmRydXguaXN0cmF0ZUBpbnRlbC5jb20+Ci0gICAgICAgICIiIgotCi0gICAgICAgIHRtcGRpcjFfbmFtZSA9ICd0bXBzaWcxJwotICAgICAgICB0bXBkaXIyX25hbWUgPSAndG1wc2lnMicKLSAgICAgICAgYnVpbGRkaXIgPSBvcy5lbnZpcm9uLmdldCgnQlVJTERESVInKQotICAgICAgICB0bXBkaXIxID0gb3MucGF0aC5qb2luKGJ1aWxkZGlyLCB0bXBkaXIxX25hbWUpCi0gICAgICAgIHRtcGRpcjIgPSBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsIHRtcGRpcjJfbmFtZSkKLQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRtcGRpcjEpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodG1wZGlyMikKLQotICAgICAgICBmZWF0dXJlcyA9ICdUTVBESVIgPSAiJXMiXG4nICUgdG1wZGlyMQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKLSAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsIC1TIG5vbmUgLWMgcm9vdGZzJykKLQotICAgICAgICBmZWF0dXJlcyA9ICdUTVBESVIgPSAiJXMiXG4nICUgdG1wZGlyMgotICAgICAgICBmZWF0dXJlcyArPSAnSU5IRVJJVCArPSAiYnVpbGRoaXN0b3J5IlxuJwotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKLSAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsIC1TIG5vbmUgLWMgcm9vdGZzJykKLQotICAgICAgICBkZWYgZ2V0X2ZpbGVzKGQpOgotICAgICAgICAgICAgZiA9IFtdCi0gICAgICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhkKToKLSAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBmaWxlczoKLSAgICAgICAgICAgICAgICAgICAgZi5hcHBlbmQob3MucGF0aC5qb2luKHJvb3QsIG5hbWUpKQotICAgICAgICAgICAgcmV0dXJuIGYKLQotICAgICAgICBmaWxlczEgPSBnZXRfZmlsZXModG1wZGlyMSArICcvc3RhbXBzJykKLSAgICAgICAgZmlsZXMyID0gZ2V0X2ZpbGVzKHRtcGRpcjIgKyAnL3N0YW1wcycpCi0gICAgICAgIGZpbGVzMiA9IFt4LnJlcGxhY2UodG1wZGlyMl9uYW1lLCB0bXBkaXIxX25hbWUpIGZvciB4IGluIGZpbGVzMl0KLQotICAgICAgICBmMSA9IHNldChmaWxlczEpCi0gICAgICAgIGYyID0gc2V0KGZpbGVzMikKLSAgICAgICAgc2lnZGlmZiA9IGYxIC0gZjIKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzaWdkaWZmKSwgMSwgJ0V4cGVjdGVkIDEgc2lnbmF0dXJlIGRpZmZlcmVuY2VzLiBPdXQ6ICVzJyAlIGxpc3Qoc2lnZGlmZikpCi0KLSAgICAgICAgdW5leHBlY3RlZF9kaWZmID0gW10KLQotICAgICAgICAjIE5vIG5ldyBzaWduYXR1cmVzIHNob3VsZCBhcHBlYXIgYXBhcnQgZnJvbSBkb19yb290ZnMKLSAgICAgICAgZm91bmRfZG9fcm9vdGZzX2ZsYWcgPSBGYWxzZQotCi0gICAgICAgIGZvciBzaWcgaW4gc2lnZGlmZjoKLSAgICAgICAgICAgIGlmICdkb19yb290ZnMnIGluIHNpZzoKLSAgICAgICAgICAgICAgICBmb3VuZF9kb19yb290ZnNfZmxhZyA9IFRydWUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdW5leHBlY3RlZF9kaWZmLmFwcGVuZChzaWcpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvdW5kX2RvX3Jvb3Rmc19mbGFnLCAnVGFzayBkb19yb290ZnMgZGlkIG5vdCByZXJ1bi4nKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHVuZXhwZWN0ZWRfZGlmZiwgJ0ZvdW5kIHVuZXhwZWN0ZWQgc2lnbmF0dXJlIGRpZmZlcmVuY2VzLiBPdXQ6ICVzJyAlIHVuZXhwZWN0ZWRfZGlmZikKLQotCi1jbGFzcyBCdWlsZEltYWdlc1Rlc3Qob2VTZWxmVGVzdCk6Ci0gICAgQHRlc3RjYXNlKDU2MykKLSAgICBkZWYgdGVzdF9kaXJlY3RmYihzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gdGVzdCB0aGUgYnVpbGQgb2YgZGlyZWN0ZmIgaW1hZ2UgZm9yIGFybSBhcmNoLgotICAgICAgICBJbiBlc3NlbmNlIHdlIGJ1aWxkIGEgY29yZWltYWdlZGlyZWN0ZmIgYW5kIHRlc3QgdGhlIGV4aXRjb2RlIG9mIGJpdGJha2UgdGhhdCBpbiBjYXNlIG9mIHN1Y2Nlc3MgaXMgMC4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2NsZWFudXAtd29ya2RpcicpCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCJESVNUUk9fRkVBVFVSRVNfcmVtb3ZlID0gXCJ4MTFcIlxuRElTVFJPX0ZFQVRVUkVTX2FwcGVuZCA9IFwiIGRpcmVjdGZiXCJcbk1BQ0hJTkUgPz89IFwicWVtdWFybVwiIikKLSAgICAgICAgcmVzID0gYml0YmFrZSgiY29yZS1pbWFnZS1kaXJlY3RmYiIsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCAwLCAiXG5jb3JlaW1hZ2VkaXJlY3RmYiBmYWlsZWQgdG8gYnVpbGQuIFBsZWFzZSBjaGVjayBsb2dzIGZvciBmdXJ0aGVyIGRldGFpbHMuXG5iaXRiYWtlIG91dHB1dCAlcyIgJSByZXMub3V0cHV0KQotCiBjbGFzcyBBcmNoaXZlclRlc3Qob2VTZWxmVGVzdCk6CiAgICAgQHRlc3RjYXNlKDkyNikKICAgICBkZWYgdGVzdF9hcmNoX3dvcmtfZGlyX2FuZF9leHBvcnRfc291cmNlKHNlbGYpOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvZGV2dG9vbC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2RldnRvb2wucHkKaW5kZXggMTMyYTczZC4uZTk5MmRjZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvZGV2dG9vbC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9kZXZ0b29sLnB5CkBAIC01LDEwICs1LDExIEBACiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCBnbG9iCitpbXBvcnQgZm5tYXRjaAogCiBpbXBvcnQgb2VxYS51dGlscy5mdG9vbHMgYXMgZnRvb2xzCiBmcm9tIG9lcWEuc2VsZnRlc3QuYmFzZSBpbXBvcnQgb2VTZWxmVGVzdAotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIsIGNyZWF0ZV90ZW1wX2xheWVyLCBydW5xZW11Citmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhciwgY3JlYXRlX3RlbXBfbGF5ZXIsIHJ1bnFlbXUsIGdldF90ZXN0X2xheWVyCiBmcm9tIG9lcWEudXRpbHMuZGVjb3JhdG9ycyBpbXBvcnQgdGVzdGNhc2UKIAogY2xhc3MgRGV2dG9vbEJhc2Uob2VTZWxmVGVzdCk6CkBAIC01MCw3ICs1MSw3IEBACiAKIAogICAgICAgICBtaXNzaW5ndmFycyA9IHt9Ci0gICAgICAgIGZvciB2YXIsIHZhbHVlIGluIGNoZWNrdmFycy5pdGVyaXRlbXMoKToKKyAgICAgICAgZm9yIHZhciwgdmFsdWUgaW4gY2hlY2t2YXJzLml0ZW1zKCk6CiAgICAgICAgICAgICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBtaXNzaW5ndmFyc1t2YXJdID0gdmFsdWUKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtaXNzaW5ndmFycywge30sICdTb21lIGV4cGVjdGVkIHZhcmlhYmxlcyBub3QgZm91bmQgaW4gcmVjaXBlOiAlcycgJSBjaGVja3ZhcnMpCkBAIC0yMDcsMTIgKzIwOCwxNCBAQAogICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCiAgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKICAgICAgICAgcG4gPSAnZGJ1cy13YWl0JworICAgICAgICBzcmNyZXYgPSAnNmNjNjA3N2EzNmZlMjY0OGE1Zjk5M2ZlN2MxNmM5NjMyZjk0NjUxNycKICAgICAgICAgIyBXZSBjaG9vc2UgYW4gaHR0cHM6Ly8gZ2l0IFVSTCBoZXJlIHRvIGNoZWNrIHJld3JpdGluZyB0aGUgVVJMIHdvcmtzCiAgICAgICAgIHVybCA9ICdodHRwczovL2dpdC55b2N0b3Byb2plY3Qub3JnL2dpdC9kYnVzLXdhaXQnCiAgICAgICAgICMgRm9yY2UgZmV0Y2hpbmcgdG8gIm5vbmFtZSIgc3ViZGlyIHNvIHdlIHZlcmlmeSB3ZSdyZSBwaWNraW5nIHVwIHRoZSBuYW1lIGZyb20gYXV0b2NvbmYKICAgICAgICAgIyBpbnN0ZWFkIG9mIHRoZSBkaXJlY3RvcnkgbmFtZQogICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBjbG9uZSAlcyBub25hbWUnICUgdXJsLCBjd2Q9dGVtcGRpcikKICAgICAgICAgc3JjZGlyID0gb3MucGF0aC5qb2luKHRlbXBkaXIsICdub25hbWUnKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCByZXNldCAtLWhhcmQgJXMnICUgc3JjcmV2LCBjd2Q9c3JjZGlyKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNyY2RpciwgJ2NvbmZpZ3VyZS5hYycpKSwgJ1VuYWJsZSB0byBmaW5kIGNvbmZpZ3VyZSBzY3JpcHQgaW4gc291cmNlIGRpcmVjdG9yeScpCiAgICAgICAgICMgVGVzdCBkZXZ0b29sIGFkZAogICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQpAQCAtMjM1LDcgKzIzOCw3IEBACiAgICAgICAgIGNoZWNrdmFyc1snUyddID0gJyR7V09SS0RJUn0vZ2l0JwogICAgICAgICBjaGVja3ZhcnNbJ1BWJ10gPSAnMC4xK2dpdCR7U1JDUFZ9JwogICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9ICdnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9naXQvZGJ1cy13YWl0O3Byb3RvY29sPWh0dHBzJwotICAgICAgICBjaGVja3ZhcnNbJ1NSQ1JFViddID0gJyR7QVVUT1JFVn0nCisgICAgICAgIGNoZWNrdmFyc1snU1JDUkVWJ10gPSBzcmNyZXYKICAgICAgICAgY2hlY2t2YXJzWydERVBFTkRTJ10gPSBzZXQoWydkYnVzJ10pCiAgICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHJlY2lwZWZpbGUsIGNoZWNrdmFycywgW10pCiAKQEAgLTM0NSw3ICszNDgsNyBAQAogICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQogICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuc3N0YXRlICVzJyAlIHRlc3RyZWNpcGUpCiAgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBhZGQgJXMgJXMgLWYgJXMnICUgKHRlc3RyZWNpcGUsIHNyY2RpciwgdXJsKSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGFkZCAlcyAlcyAtYSAtZiAlcycgJSAodGVzdHJlY2lwZSwgc3JjZGlyLCB1cmwpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnY29uZicsICdsYXllci5jb25mJykpLCAnV29ya3NwYWNlIGRpcmVjdG9yeSBub3QgY3JlYXRlZDogJXMnICUgcmVzdWx0Lm91dHB1dCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzcmNkaXIsICdjb25maWd1cmUuYWMnKSksICdVbmFibGUgdG8gZmluZCBjb25maWd1cmUuYWMgaW4gc291cmNlIGRpcmVjdG9yeScpCiAgICAgICAgICMgVGVzdCBkZXZ0b29sIHN0YXR1cwpAQCAtMzU3LDcgKzM2MCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ19naXQuYmInLCByZWNpcGVmaWxlLCAnUmVjaXBlIGZpbGUgaW5jb3JyZWN0bHkgbmFtZWQnKQogICAgICAgICBjaGVja3ZhcnMgPSB7fQogICAgICAgICBjaGVja3ZhcnNbJ1MnXSA9ICcke1dPUktESVJ9L2dpdCcKLSAgICAgICAgY2hlY2t2YXJzWydQViddID0gJzEuMTErZ2l0JHtTUkNQVn0nCisgICAgICAgIGNoZWNrdmFyc1snUFYnXSA9ICcxLjEyK2dpdCR7U1JDUFZ9JwogICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9IHVybAogICAgICAgICBjaGVja3ZhcnNbJ1NSQ1JFViddID0gJyR7QVVUT1JFVn0nCiAgICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHJlY2lwZWZpbGUsIGNoZWNrdmFycywgW10pCkBAIC00NjUsMTIgKzQ2OCwxMSBAQAogICAgICAgICB0ZXN0cmVjaXBlcyA9ICdwZXJmIGtlcm5lbC1kZXZzcmMgcGFja2FnZS1pbmRleCBjb3JlLWltYWdlLW1pbmltYWwgbWV0YS10b29sY2hhaW4gcGFja2FnZWdyb3VwLWNvcmUtc2RrIG1ldGEtaWRlLXN1cHBvcnQnLnNwbGl0KCkKICAgICAgICAgIyBGaW5kIGFjdHVhbCBuYW1lIG9mIGdjYy1zb3VyY2Ugc2luY2UgaXQgbm93IGluY2x1ZGVzIHRoZSB2ZXJzaW9uIC0gY3J1ZGUsIGJ1dCBnb29kIGVub3VnaCBmb3IgdGhpcyBwdXJwb3NlCiAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1yZWNpcGVzIGdjYy1zb3VyY2UqJykKLSAgICAgICAgcmVhZGluZyA9IEZhbHNlCiAgICAgICAgIGZvciBsaW5lIGluIHJlc3VsdC5vdXRwdXQuc3BsaXRsaW5lcygpOgotICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCc9PScpOgotICAgICAgICAgICAgICAgIHJlYWRpbmcgPSBUcnVlCi0gICAgICAgICAgICBlbGlmIHJlYWRpbmcgYW5kIG5vdCBsaW5lLnN0YXJ0c3dpdGgoJyAnKToKLSAgICAgICAgICAgICAgICB0ZXN0cmVjaXBlcy5hcHBlbmQobGluZS5zcGxpdCgnOicpWzBdKQorICAgICAgICAgICAgIyBqdXN0IG1hdGNoIHRob3NlIGxpbmVzIHRoYXQgY29udGFpbiBhIHJlYWwgdGFyZ2V0CisgICAgICAgICAgICBtID0gcmUubWF0Y2goJyg/UDxyZWNpcGU+XlthLXpBLVowLTkuLV0rKSg/UDxjb2xvbj46JCknLCBsaW5lKQorICAgICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICB0ZXN0cmVjaXBlcy5hcHBlbmQobS5ncm91cCgncmVjaXBlJykpCiAgICAgICAgIGZvciB0ZXN0cmVjaXBlIGluIHRlc3RyZWNpcGVzOgogICAgICAgICAgICAgIyBDaGVjayBpdCdzIGEgdmFsaWQgcmVjaXBlCiAgICAgICAgICAgICBiaXRiYWtlKCclcyAtZScgJSB0ZXN0cmVjaXBlKQpAQCAtODE2LDI4ICs4MTgsMjggQEAKIAogICAgICAgICAjIENoZWNrIGJiYXBwZW5kIGNvbnRlbnRzCiAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHJldi1wYXJzZSBIRUFEJywgY3dkPXRlbXBzcmNkaXIpCi0gICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ1NSQ1JFViA9ICIlcyJcbicgJSByZXN1bHQub3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1NSQ19VUkkgPSAiJXMiXG4nICUgZ2l0X3VyaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nXQorICAgICAgICBleHBlY3RlZGxpbmVzID0gc2V0KFsnU1JDUkVWID0gIiVzIlxuJyAlIHJlc3VsdC5vdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJID0gIiVzIlxuJyAlIGdpdF91cmksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbiddKQogICAgICAgICB3aXRoIG9wZW4oYmJhcHBlbmRmaWxlLCAncicpIGFzIGY6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkbGluZXMsIGYucmVhZGxpbmVzKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkbGluZXMsIHNldChmLnJlYWRsaW5lcygpKSkKIAogICAgICAgICAjIENoZWNrIHdlIGNhbiBydW4gaXQgYWdhaW4gYW5kIGJiYXBwZW5kIGlzbid0IG1vZGlmaWVkCiAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGRhdGUtcmVjaXBlIC1tIHNyY3JldiAlcyAtYSAlcycgJSAodGVzdHJlY2lwZSwgdGVtcGxheWVyZGlyKSkKICAgICAgICAgd2l0aCBvcGVuKGJiYXBwZW5kZmlsZSwgJ3InKSBhcyBmOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZGxpbmVzLCBmLnJlYWRsaW5lcygpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZGxpbmVzLCBzZXQoZi5yZWFkbGluZXMoKSkpCiAgICAgICAgICMgRHJvcCBuZXcgY29tbWl0IGFuZCBjaGVjayBTUkNSRVYgY2hhbmdlcwogICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCByZXNldCBIRUFEXicsIGN3ZD10ZW1wc3JjZGlyKQogICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdXBkYXRlLXJlY2lwZSAtbSBzcmNyZXYgJXMgLWEgJXMnICUgKHRlc3RyZWNpcGUsIHRlbXBsYXllcmRpcikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKGFwcGVuZGRpciwgdGVzdHJlY2lwZSkpLCAnUGF0Y2ggZGlyZWN0b3J5IHNob3VsZCBub3QgYmUgY3JlYXRlZCcpCiAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHJldi1wYXJzZSBIRUFEJywgY3dkPXRlbXBzcmNkaXIpCi0gICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ1NSQ1JFViA9ICIlcyJcbicgJSByZXN1bHQub3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1NSQ19VUkkgPSAiJXMiXG4nICUgZ2l0X3VyaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nXQorICAgICAgICBleHBlY3RlZGxpbmVzID0gc2V0KFsnU1JDUkVWID0gIiVzIlxuJyAlIHJlc3VsdC5vdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJID0gIiVzIlxuJyAlIGdpdF91cmksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbiddKQogICAgICAgICB3aXRoIG9wZW4oYmJhcHBlbmRmaWxlLCAncicpIGFzIGY6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkbGluZXMsIGYucmVhZGxpbmVzKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkbGluZXMsIHNldChmLnJlYWRsaW5lcygpKSkKICAgICAgICAgIyBQdXQgY29tbWl0IGJhY2sgYW5kIGNoZWNrIHdlIGNhbiBydW4gaXQgaWYgbGF5ZXIgaXNuJ3QgaW4gYmJsYXllcnMuY29uZgogICAgICAgICBvcy5yZW1vdmUoYmJhcHBlbmRmaWxlKQogICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBjb21taXQgLWEgLW0gIkNoYW5nZSB0aGUgTWFrZWZpbGUiJywgY3dkPXRlbXBzcmNkaXIpCkBAIC04NDYsMTIgKzg0OCwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEluKCdXQVJOSU5HOiBTcGVjaWZpZWQgbGF5ZXIgaXMgbm90IGN1cnJlbnRseSBlbmFibGVkIGluIGJibGF5ZXJzLmNvbmYnLCByZXN1bHQub3V0cHV0KQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihhcHBlbmRkaXIsIHRlc3RyZWNpcGUpKSwgJ1BhdGNoIGRpcmVjdG9yeSBzaG91bGQgbm90IGJlIGNyZWF0ZWQnKQogICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCByZXYtcGFyc2UgSEVBRCcsIGN3ZD10ZW1wc3JjZGlyKQotICAgICAgICBleHBlY3RlZGxpbmVzID0gWydTUkNSRVYgPSAiJXMiXG4nICUgcmVzdWx0Lm91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJID0gIiVzIlxuJyAlIGdpdF91cmksCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJ10KKyAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IHNldChbJ1NSQ1JFViA9ICIlcyJcbicgJSByZXN1bHQub3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU1JDX1VSSSA9ICIlcyJcbicgJSBnaXRfdXJpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nXSkKICAgICAgICAgd2l0aCBvcGVuKGJiYXBwZW5kZmlsZSwgJ3InKSBhcyBmOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZGxpbmVzLCBmLnJlYWRsaW5lcygpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZGxpbmVzLCBzZXQoZi5yZWFkbGluZXMoKSkpCiAgICAgICAgICMgRGVsZXRpbmcgaXNuJ3QgZXhwZWN0ZWQgdG8gd29yayB1bmRlciB0aGVzZSBjaXJjdW1zdGFuY2VzCiAKICAgICBAdGVzdGNhc2UoMTM3MCkKQEAgLTExODgsMyArMTE5MCwxNTkgQEAKICAgICAgICAgcyA9ICJNaWNyb3NvZnQgTWFkZSBObyBQcm9maXQgRnJvbSBBbnlvbmUncyBadW5lcyBZbyIKICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJkZXZ0b29sIC0tcXVpZXQgc2VsZnRlc3QtcmV2ZXJzZSBcIiVzXCIiICUgcykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCBzWzo6LTFdKQorCisgICAgZGVmIF9zZXR1cF90ZXN0X2RldnRvb2xfZmluaXNoX3VwZ3JhZGUoc2VsZik6CisgICAgICAgICMgQ2hlY2sgcHJlY29uZGl0aW9ucworICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IG9zLnBhdGguZXhpc3RzKHNlbGYud29ya3NwYWNlZGlyKSwgJ1RoaXMgdGVzdCBjYW5ub3QgYmUgcnVuIHdpdGggYSB3b3Jrc3BhY2UgZGlyZWN0b3J5IHVuZGVyIHRoZSBidWlsZCBkaXJlY3RvcnknKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorICAgICAgICAjIFVzZSBhICJyZWFsIiByZWNpcGUgZnJvbSBtZXRhLXNlbGZ0ZXN0CisgICAgICAgIHJlY2lwZSA9ICdkZXZ0b29sLXVwZ3JhZGUtdGVzdDEnCisgICAgICAgIG9sZHZlcnNpb24gPSAnMS41LjMnCisgICAgICAgIG5ld3ZlcnNpb24gPSAnMS42LjAnCisgICAgICAgIG9sZHJlY2lwZWZpbGUgPSBnZXRfYmJfdmFyKCdGSUxFJywgcmVjaXBlKQorICAgICAgICByZWNpcGVkaXIgPSBvcy5wYXRoLmRpcm5hbWUob2xkcmVjaXBlZmlsZSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgc3RhdHVzIC0tcG9yY2VsYWluIC4nLCBjd2Q9cmVjaXBlZGlyKQorICAgICAgICBpZiByZXN1bHQub3V0cHV0LnN0cmlwKCk6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ1JlY2lwZSBkaXJlY3RvcnkgZm9yICVzIGNvbnRhaW5zIHVuY29tbWl0dGVkIGNoYW5nZXMnICUgcmVjaXBlKQorICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKKyAgICAgICAgIyBDaGVjayB0aGF0IHJlY2lwZSBpcyBub3QgYWxyZWFkeSB1bmRlciBkZXZ0b29sIGNvbnRyb2wKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4ocmVjaXBlLCByZXN1bHQub3V0cHV0KQorICAgICAgICAjIERvIHRoZSB1cGdyYWRlCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGdyYWRlICVzICVzIC1WICVzJyAlIChyZWNpcGUsIHRlbXBkaXIsIG5ld3ZlcnNpb24pKQorICAgICAgICAjIENoZWNrIGRldnRvb2wgc3RhdHVzIGFuZCBtYWtlIHN1cmUgcmVjaXBlIGlzIHByZXNlbnQKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4ocmVjaXBlLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKHRlbXBkaXIsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICMgTWFrZSBhIGNoYW5nZSB0byB0aGUgc291cmNlCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnc2VkIC1pIFwnL14jaW5jbHVkZSAicHYuaCIvYSBcXC8qIEhlcmUgaXMgYSBuZXcgY29tbWVudCAqXFwvXCcgc3JjL3B2L251bWJlci5jJywgY3dkPXRlbXBkaXIpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHN0YXR1cyAtLXBvcmNlbGFpbicsIGN3ZD10ZW1wZGlyKQorICAgICAgICBzZWxmLmFzc2VydEluKCdNIHNyYy9wdi9udW1iZXIuYycsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IGNvbW1pdCBzcmMvcHYvbnVtYmVyLmMgLW0gIkFkZCBhIGNvbW1lbnQgdG8gdGhlIGNvZGUiJywgY3dkPXRlbXBkaXIpCisgICAgICAgICMgQ2hlY2sgaWYgcGF0Y2ggaXMgdGhlcmUKKyAgICAgICAgcmVjaXBlZGlyID0gb3MucGF0aC5kaXJuYW1lKG9sZHJlY2lwZWZpbGUpCisgICAgICAgIG9sZGRpciA9IG9zLnBhdGguam9pbihyZWNpcGVkaXIsIHJlY2lwZSArICctJyArIG9sZHZlcnNpb24pCisgICAgICAgIHBhdGNoZm4gPSAnMDAwMS1BZGQtYS1ub3RlLWxpbmUtdG8tdGhlLXF1aWNrLXJlZmVyZW5jZS5wYXRjaCcKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihvbGRkaXIsIHBhdGNoZm4pKSwgJ09yaWdpbmFsIHBhdGNoIGZpbGUgZG9lcyBub3QgZXhpc3QnKQorICAgICAgICByZXR1cm4gcmVjaXBlLCBvbGRyZWNpcGVmaWxlLCByZWNpcGVkaXIsIG9sZGRpciwgbmV3dmVyc2lvbiwgcGF0Y2hmbgorCisgICAgZGVmIHRlc3RfZGV2dG9vbF9maW5pc2hfdXBncmFkZV9vcmlnbGF5ZXIoc2VsZik6CisgICAgICAgIHJlY2lwZSwgb2xkcmVjaXBlZmlsZSwgcmVjaXBlZGlyLCBvbGRkaXIsIG5ld3ZlcnNpb24sIHBhdGNoZm4gPSBzZWxmLl9zZXR1cF90ZXN0X2RldnRvb2xfZmluaXNoX3VwZ3JhZGUoKQorICAgICAgICAjIEVuc3VyZSB0aGUgcmVjaXBlIGlzIHdoZXJlIHdlIHRoaW5rIGl0IHNob3VsZCBiZSAoc28gdGhhdCBjbGVhbnVwIGRvZXNuJ3QgdHJhc2ggdGhpbmdzKQorICAgICAgICBzZWxmLmFzc2VydEluKCcvbWV0YS1zZWxmdGVzdC8nLCByZWNpcGVkaXIpCisgICAgICAgICMgVHJ5IGZpbmlzaCB0byB0aGUgb3JpZ2luYWwgbGF5ZXIKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bigncm0gLXJmICVzIDsgY2QgJXMgOyBnaXQgY2hlY2tvdXQgJXMnICUgKHJlY2lwZWRpciwgb3MucGF0aC5kaXJuYW1lKHJlY2lwZWRpciksIHJlY2lwZWRpcikpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBmaW5pc2ggJXMgbWV0YS1zZWxmdGVzdCcgJSByZWNpcGUpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKHJlY2lwZSwgcmVzdWx0Lm91dHB1dCwgJ1JlY2lwZSBzaG91bGQgaGF2ZSBiZWVuIHJlc2V0IGJ5IGZpbmlzaCBidXQgd2FzblwndCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAncmVjaXBlcycsIHJlY2lwZSkpLCAnUmVjaXBlIGRpcmVjdG9yeSBzaG91bGQgbm90IGV4aXN0IGFmdGVyIGZpbmlzaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMob2xkcmVjaXBlZmlsZSksICdPbGQgcmVjaXBlIGZpbGUgc2hvdWxkIGhhdmUgYmVlbiBkZWxldGVkIGJ1dCB3YXNuXCd0JykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4ob2xkZGlyLCBwYXRjaGZuKSksICdPbGQgcGF0Y2ggZmlsZSBzaG91bGQgaGF2ZSBiZWVuIGRlbGV0ZWQgYnV0IHdhc25cJ3QnKQorICAgICAgICBuZXdyZWNpcGVmaWxlID0gb3MucGF0aC5qb2luKHJlY2lwZWRpciwgJyVzXyVzLmJiJyAlIChyZWNpcGUsIG5ld3ZlcnNpb24pKQorICAgICAgICBuZXdkaXIgPSBvcy5wYXRoLmpvaW4ocmVjaXBlZGlyLCByZWNpcGUgKyAnLScgKyBuZXd2ZXJzaW9uKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMobmV3cmVjaXBlZmlsZSksICdOZXcgcmVjaXBlIGZpbGUgc2hvdWxkIGhhdmUgYmVlbiBjb3BpZWQgaW50byBleGlzdGluZyBsYXllciBidXQgd2FzblwndCcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4obmV3ZGlyLCBwYXRjaGZuKSksICdQYXRjaCBmaWxlIHNob3VsZCBoYXZlIGJlZW4gY29waWVkIGludG8gbmV3IGRpcmVjdG9yeSBidXQgd2FzblwndCcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4obmV3ZGlyLCAnMDAwMi1BZGQtYS1jb21tZW50LXRvLXRoZS1jb2RlLnBhdGNoJykpLCAnTmV3IHBhdGNoIGZpbGUgc2hvdWxkIGhhdmUgYmVlbiBjcmVhdGVkIGJ1dCB3YXNuXCd0JykKKworICAgIGRlZiB0ZXN0X2RldnRvb2xfZmluaXNoX3VwZ3JhZGVfb3RoZXJsYXllcihzZWxmKToKKyAgICAgICAgcmVjaXBlLCBvbGRyZWNpcGVmaWxlLCByZWNpcGVkaXIsIG9sZGRpciwgbmV3dmVyc2lvbiwgcGF0Y2hmbiA9IHNlbGYuX3NldHVwX3Rlc3RfZGV2dG9vbF9maW5pc2hfdXBncmFkZSgpCisgICAgICAgICMgRW5zdXJlIHRoZSByZWNpcGUgaXMgd2hlcmUgd2UgdGhpbmsgaXQgc2hvdWxkIGJlIChzbyB0aGF0IGNsZWFudXAgZG9lc24ndCB0cmFzaCB0aGluZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJy9tZXRhLXNlbGZ0ZXN0LycsIHJlY2lwZWRpcikKKyAgICAgICAgIyBUcnkgZmluaXNoIHRvIGEgZGlmZmVyZW50IGxheWVyIC0gc2hvdWxkIGNyZWF0ZSBhIGJiYXBwZW5kCisgICAgICAgICMgVGhpcyBjbGVhbnVwIGlzbid0IHN0cmljdGx5IG5lY2Vzc2FyeSBidXQgZG8gaXQgYW55d2F5IGp1c3QgaW4gY2FzZSBpdCBnb2VzIHdyb25nIGFuZCB3cml0ZXMgdG8gaGVyZQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdybSAtcmYgJXMgOyBjZCAlcyA7IGdpdCBjaGVja291dCAlcycgJSAocmVjaXBlZGlyLCBvcy5wYXRoLmRpcm5hbWUocmVjaXBlZGlyKSwgcmVjaXBlZGlyKSkKKyAgICAgICAgb2VfY29yZV9kaXIgPSBvcy5wYXRoLmpvaW4oZ2V0X2JiX3ZhcignQ09SRUJBU0UnKSwgJ21ldGEnKQorICAgICAgICBuZXdyZWNpcGVkaXIgPSBvcy5wYXRoLmpvaW4ob2VfY29yZV9kaXIsICdyZWNpcGVzLXRlc3QnLCAnZGV2dG9vbCcpCisgICAgICAgIG5ld3JlY2lwZWZpbGUgPSBvcy5wYXRoLmpvaW4obmV3cmVjaXBlZGlyLCAnJXNfJXMuYmInICUgKHJlY2lwZSwgbmV3dmVyc2lvbikpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAobmV3cmVjaXBlZGlyKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgZmluaXNoICVzIG9lLWNvcmUnICUgcmVjaXBlKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihyZWNpcGUsIHJlc3VsdC5vdXRwdXQsICdSZWNpcGUgc2hvdWxkIGhhdmUgYmVlbiByZXNldCBieSBmaW5pc2ggYnV0IHdhc25cJ3QnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3JlY2lwZXMnLCByZWNpcGUpKSwgJ1JlY2lwZSBkaXJlY3Rvcnkgc2hvdWxkIG5vdCBleGlzdCBhZnRlciBmaW5pc2gnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob2xkcmVjaXBlZmlsZSksICdPbGQgcmVjaXBlIGZpbGUgc2hvdWxkIG5vdCBoYXZlIGJlZW4gZGVsZXRlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4ob2xkZGlyLCBwYXRjaGZuKSksICdPbGQgcGF0Y2ggZmlsZSBzaG91bGQgbm90IGhhdmUgYmVlbiBkZWxldGVkJykKKyAgICAgICAgbmV3ZGlyID0gb3MucGF0aC5qb2luKG5ld3JlY2lwZWRpciwgcmVjaXBlICsgJy0nICsgbmV3dmVyc2lvbikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG5ld3JlY2lwZWZpbGUpLCAnTmV3IHJlY2lwZSBmaWxlIHNob3VsZCBoYXZlIGJlZW4gY29waWVkIGludG8gZXhpc3RpbmcgbGF5ZXIgYnV0IHdhc25cJ3QnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKG5ld2RpciwgcGF0Y2hmbikpLCAnUGF0Y2ggZmlsZSBzaG91bGQgaGF2ZSBiZWVuIGNvcGllZCBpbnRvIG5ldyBkaXJlY3RvcnkgYnV0IHdhc25cJ3QnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKG5ld2RpciwgJzAwMDItQWRkLWEtY29tbWVudC10by10aGUtY29kZS5wYXRjaCcpKSwgJ05ldyBwYXRjaCBmaWxlIHNob3VsZCBoYXZlIGJlZW4gY3JlYXRlZCBidXQgd2FzblwndCcpCisKKyAgICBkZWYgX3NldHVwX3Rlc3RfZGV2dG9vbF9maW5pc2hfbW9kaWZ5KHNlbGYpOgorICAgICAgICAjIENoZWNrIHByZWNvbmRpdGlvbnMKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLndvcmtzcGFjZWRpciksICdUaGlzIHRlc3QgY2Fubm90IGJlIHJ1biB3aXRoIGEgd29ya3NwYWNlIGRpcmVjdG9yeSB1bmRlciB0aGUgYnVpbGQgZGlyZWN0b3J5JykKKyAgICAgICAgIyBUcnkgbW9kaWZ5aW5nIGEgcmVjaXBlCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHJlY2lwZSA9ICdtZGFkbScKKyAgICAgICAgb2xkcmVjaXBlZmlsZSA9IGdldF9iYl92YXIoJ0ZJTEUnLCByZWNpcGUpCisgICAgICAgIHJlY2lwZWRpciA9IG9zLnBhdGguZGlybmFtZShvbGRyZWNpcGVmaWxlKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBzdGF0dXMgLS1wb3JjZWxhaW4gLicsIGN3ZD1yZWNpcGVkaXIpCisgICAgICAgIGlmIHJlc3VsdC5vdXRwdXQuc3RyaXAoKToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnUmVjaXBlIGRpcmVjdG9yeSBmb3IgJXMgY29udGFpbnMgdW5jb21taXR0ZWQgY2hhbmdlcycgJSByZWNpcGUpCisgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5ICVzICVzJyAlIChyZWNpcGUsIHRlbXBkaXIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHRlbXBkaXIsICdNYWtlZmlsZScpKSwgJ0V4dHJhY3RlZCBzb3VyY2UgY291bGQgbm90IGJlIGZvdW5kJykKKyAgICAgICAgIyBUZXN0IGRldnRvb2wgc3RhdHVzCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQorICAgICAgICBzZWxmLmFzc2VydEluKHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbih0ZW1wZGlyLCByZXN1bHQub3V0cHV0KQorICAgICAgICAjIE1ha2UgYSBjaGFuZ2UgdG8gdGhlIHNvdXJjZQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3NlZCAtaSBcJy9eI2luY2x1ZGUgIm1kYWRtLmgiL2EgXFwvKiBIZXJlIGlzIGEgbmV3IGNvbW1lbnQgKlxcL1wnIG1hcHMuYycsIGN3ZD10ZW1wZGlyKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBzdGF0dXMgLS1wb3JjZWxhaW4nLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgc2VsZi5hc3NlcnRJbignTSBtYXBzLmMnLCByZXN1bHQub3V0cHV0KQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBjb21taXQgbWFwcy5jIC1tICJBZGQgYSBjb21tZW50IHRvIHRoZSBjb2RlIicsIGN3ZD10ZW1wZGlyKQorICAgICAgICBmb3IgZW50cnkgaW4gb3MubGlzdGRpcihyZWNpcGVkaXIpOgorICAgICAgICAgICAgZmlsZXNkaXIgPSBvcy5wYXRoLmpvaW4ocmVjaXBlZGlyLCBlbnRyeSkKKyAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoZmlsZXNkaXIpOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuYWJsZSB0byBmaW5kIHJlY2lwZSBmaWxlcyBkaXJlY3RvcnkgZm9yICVzJyAlIHJlY2lwZSkKKyAgICAgICAgcmV0dXJuIHJlY2lwZSwgb2xkcmVjaXBlZmlsZSwgcmVjaXBlZGlyLCBmaWxlc2RpcgorCisgICAgZGVmIHRlc3RfZGV2dG9vbF9maW5pc2hfbW9kaWZ5X29yaWdsYXllcihzZWxmKToKKyAgICAgICAgcmVjaXBlLCBvbGRyZWNpcGVmaWxlLCByZWNpcGVkaXIsIGZpbGVzZGlyID0gc2VsZi5fc2V0dXBfdGVzdF9kZXZ0b29sX2ZpbmlzaF9tb2RpZnkoKQorICAgICAgICAjIEVuc3VyZSB0aGUgcmVjaXBlIGlzIHdoZXJlIHdlIHRoaW5rIGl0IHNob3VsZCBiZSAoc28gdGhhdCBjbGVhbnVwIGRvZXNuJ3QgdHJhc2ggdGhpbmdzKQorICAgICAgICBzZWxmLmFzc2VydEluKCcvbWV0YS8nLCByZWNpcGVkaXIpCisgICAgICAgICMgVHJ5IGZpbmlzaCB0byB0aGUgb3JpZ2luYWwgbGF5ZXIKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bigncm0gLXJmICVzIDsgY2QgJXMgOyBnaXQgY2hlY2tvdXQgJXMnICUgKHJlY2lwZWRpciwgb3MucGF0aC5kaXJuYW1lKHJlY2lwZWRpciksIHJlY2lwZWRpcikpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBmaW5pc2ggJXMgbWV0YScgJSByZWNpcGUpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKHJlY2lwZSwgcmVzdWx0Lm91dHB1dCwgJ1JlY2lwZSBzaG91bGQgaGF2ZSBiZWVuIHJlc2V0IGJ5IGZpbmlzaCBidXQgd2FzblwndCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAncmVjaXBlcycsIHJlY2lwZSkpLCAnUmVjaXBlIGRpcmVjdG9yeSBzaG91bGQgbm90IGV4aXN0IGFmdGVyIGZpbmlzaCcpCisgICAgICAgIGV4cGVjdGVkX3N0YXR1cyA9IFsoJyBNJywgJy4qLyVzJCcgJSBvcy5wYXRoLmJhc2VuYW1lKG9sZHJlY2lwZWZpbGUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnPz8nLCAnLiovLiotQWRkLWEtY29tbWVudC10by10aGUtY29kZS5wYXRjaCQnKV0KKyAgICAgICAgc2VsZi5fY2hlY2tfcmVwb19zdGF0dXMocmVjaXBlZGlyLCBleHBlY3RlZF9zdGF0dXMpCisKKyAgICBkZWYgdGVzdF9kZXZ0b29sX2ZpbmlzaF9tb2RpZnlfb3RoZXJsYXllcihzZWxmKToKKyAgICAgICAgcmVjaXBlLCBvbGRyZWNpcGVmaWxlLCByZWNpcGVkaXIsIGZpbGVzZGlyID0gc2VsZi5fc2V0dXBfdGVzdF9kZXZ0b29sX2ZpbmlzaF9tb2RpZnkoKQorICAgICAgICAjIEVuc3VyZSB0aGUgcmVjaXBlIGlzIHdoZXJlIHdlIHRoaW5rIGl0IHNob3VsZCBiZSAoc28gdGhhdCBjbGVhbnVwIGRvZXNuJ3QgdHJhc2ggdGhpbmdzKQorICAgICAgICBzZWxmLmFzc2VydEluKCcvbWV0YS8nLCByZWNpcGVkaXIpCisgICAgICAgIHJlbHB0aCA9IG9zLnBhdGgucmVscGF0aChyZWNpcGVkaXIsIG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCdDT1JFQkFTRScpLCAnbWV0YScpKQorICAgICAgICBhcHBlbmRkaXIgPSBvcy5wYXRoLmpvaW4oZ2V0X3Rlc3RfbGF5ZXIoKSwgcmVscHRoKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKGFwcGVuZGRpcikKKyAgICAgICAgIyBUcnkgZmluaXNoIHRvIHRoZSBvcmlnaW5hbCBsYXllcgorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdybSAtcmYgJXMgOyBjZCAlcyA7IGdpdCBjaGVja291dCAlcycgJSAocmVjaXBlZGlyLCBvcy5wYXRoLmRpcm5hbWUocmVjaXBlZGlyKSwgcmVjaXBlZGlyKSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGZpbmlzaCAlcyBtZXRhLXNlbGZ0ZXN0JyAlIHJlY2lwZSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4ocmVjaXBlLCByZXN1bHQub3V0cHV0LCAnUmVjaXBlIHNob3VsZCBoYXZlIGJlZW4gcmVzZXQgYnkgZmluaXNoIGJ1dCB3YXNuXCd0JykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdyZWNpcGVzJywgcmVjaXBlKSksICdSZWNpcGUgZGlyZWN0b3J5IHNob3VsZCBub3QgZXhpc3QgYWZ0ZXIgZmluaXNoJykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgc3RhdHVzIC0tcG9yY2VsYWluIC4nLCBjd2Q9cmVjaXBlZGlyKQorICAgICAgICBpZiByZXN1bHQub3V0cHV0LnN0cmlwKCk6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ1JlY2lwZSBkaXJlY3RvcnkgZm9yICVzIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgdW5leHBlY3RlZCBjaGFuZ2VzIGFmdGVyIGZpbmlzaDpcbiVzJyAlIChyZWNpcGUsIHJlc3VsdC5vdXRwdXQuc3RyaXAoKSkpCisgICAgICAgIHJlY2lwZWZuID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKG9sZHJlY2lwZWZpbGUpKVswXQorICAgICAgICByZWNpcGVmbiA9IHJlY2lwZWZuLnNwbGl0KCdfJylbMF0gKyAnXyUnCisgICAgICAgIGFwcGVuZGZpbGUgPSBvcy5wYXRoLmpvaW4oYXBwZW5kZGlyLCByZWNpcGVmbiArICcuYmJhcHBlbmQnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoYXBwZW5kZmlsZSksICdiYmFwcGVuZCAlcyBzaG91bGQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnV0IHdhc25cJ3QnICUgYXBwZW5kZmlsZSkKKyAgICAgICAgbmV3ZGlyID0gb3MucGF0aC5qb2luKGFwcGVuZGRpciwgcmVjaXBlKQorICAgICAgICBmaWxlcyA9IG9zLmxpc3RkaXIobmV3ZGlyKQorICAgICAgICBmb3VuZHBhdGNoID0gTm9uZQorICAgICAgICBmb3IgZm4gaW4gZmlsZXM6CisgICAgICAgICAgICBpZiBmbm1hdGNoLmZubWF0Y2goZm4sICcqLUFkZC1hLWNvbW1lbnQtdG8tdGhlLWNvZGUucGF0Y2gnKToKKyAgICAgICAgICAgICAgICBmb3VuZHBhdGNoID0gZm4KKyAgICAgICAgaWYgbm90IGZvdW5kcGF0Y2g6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ05vIHBhdGNoIGZpbGUgY3JlYXRlZCBuZXh0IHRvIGJiYXBwZW5kJykKKyAgICAgICAgZmlsZXMucmVtb3ZlKGZvdW5kcGF0Y2gpCisgICAgICAgIGlmIGZpbGVzOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmV4cGVjdGVkIGZpbGUocykgY29waWVkIG5leHQgdG8gYmJhcHBlbmQ6ICVzJyAlICcsICcuam9pbihmaWxlcykpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9lU0RLLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvZVNESy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDVjNjgwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvZVNESy5weQpAQCAtMCwwICsxLDEwMyBAQAoraW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBvcworaW1wb3J0IGdsb2IKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IG9lcWEudXRpbHMuZnRvb2xzIGFzIGZ0b29scworZnJvbSBvZXFhLnV0aWxzLmRlY29yYXRvcnMgaW1wb3J0IHRlc3RjYXNlIAorZnJvbSBvZXFhLnNlbGZ0ZXN0LmJhc2UgaW1wb3J0IG9lU2VsZlRlc3QKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyCitmcm9tIG9lcWEudXRpbHMuaHR0cHNlcnZlciBpbXBvcnQgSFRUUFNlcnZpY2UKKworY2xhc3Mgb2VTREtFeHRTZWxmVGVzdChvZVNlbGZUZXN0KToKKyAgICAiIiIKKyAgICAjIEJ1Z3ppbGxhIFRlc3QgUGxhbjogNjAzMworICAgICMgVGhpcyBjb2RlIGlzIHBsYW5uZWQgdG8gYmUgcGFydCBvZiB0aGUgYXV0b21hdGlvbiBmb3IgZVNESyBjb250YWluaWcKKyAgICAjIEluc3RhbGwgbGlicmFyaWVzIGFuZCBoZWFkZXJzLCBpbWFnZSBnZW5lcmF0aW9uIGJpbmFyeSBmZWVkcy4KKyAgICAiIiIKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgZ2V0X2VzZGtfZW52aXJvbm1lbnQoZW52X2VTREssIHRtcGRpcl9lU0RLUUEpOgorICAgICAgICAjIFhYWDogYXQgdGhpcyB0aW1lIHVzZSB0aGUgZmlyc3QgZW52IG5lZWQgdG8gaW52ZXN0aWdhdGUKKyAgICAgICAgIyB3aGF0IGVudmlyb25tZW50IGxvYWQgb2Utc2VsZnRlc3QsIGk1ODYsIHg4Nl82NAorICAgICAgICBwYXR0ZXJuID0gb3MucGF0aC5qb2luKHRtcGRpcl9lU0RLUUEsICdlbnZpcm9ubWVudC1zZXR1cC0qJykKKyAgICAgICAgcmV0dXJuIGdsb2IuZ2xvYihwYXR0ZXJuKVswXQorICAgIAorICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgcnVuX2VzZGtfY21kKGVudl9lU0RLLCB0bXBkaXJfZVNES1FBLCBjbWQsIHBvc3Rjb25maWc9Tm9uZSwgKipvcHRpb25zKToKKyAgICAgICAgaWYgcG9zdGNvbmZpZzoKKyAgICAgICAgICAgIGVzZGtfY29uZl9maWxlID0gb3MucGF0aC5qb2luKHRtcGRpcl9lU0RLUUEsICdjb25mJywgJ2xvY2FsLmNvbmYnKQorICAgICAgICAgICAgd2l0aCBvcGVuKGVzZGtfY29uZl9maWxlLCAnYSsnKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUocG9zdGNvbmZpZykKKyAgICAgICAgaWYgbm90IG9wdGlvbnM6CisgICAgICAgICAgICBvcHRpb25zID0ge30KKyAgICAgICAgaWYgbm90ICdzaGVsbCcgaW4gb3B0aW9uczoKKyAgICAgICAgICAgIG9wdGlvbnNbJ3NoZWxsJ10gPSBUcnVlCisKKyAgICAgICAgcnVuQ21kKCJjZCAlczsgLiAlczsgJXMiICUgKHRtcGRpcl9lU0RLUUEsIGVudl9lU0RLLCBjbWQpLCAqKm9wdGlvbnMpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGdlbmVyYXRlX2VTREsoaW1hZ2UpOgorICAgICAgICBwbl90YXNrID0gJyVzIC1jIHBvcHVsYXRlX3Nka19leHQnICUgaW1hZ2UKKyAgICAgICAgYml0YmFrZShwbl90YXNrKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBnZXRfZVNES190b29sY2hhaW4oaW1hZ2UpOgorICAgICAgICBwbl90YXNrID0gJyVzIC1jIHBvcHVsYXRlX3Nka19leHQnICUgaW1hZ2UKKworICAgICAgICBzZGtfZGVwbG95ID0gZ2V0X2JiX3ZhcignU0RLX0RFUExPWScsIHBuX3Rhc2spCisgICAgICAgIHRvb2xjaGFpbl9uYW1lID0gZ2V0X2JiX3ZhcignVE9PTENIQUlORVhUX09VVFBVVE5BTUUnLCBwbl90YXNrKQorICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHNka19kZXBsb3ksIHRvb2xjaGFpbl9uYW1lICsgJy5zaCcpCisgICAgCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICAjIFN0YXJ0IHRvIHNlcnZlIHNzdGF0ZSBkaXIKKyAgICAgICAgc3N0YXRlX2RpciA9IG9zLnBhdGguam9pbihvcy5lbnZpcm9uWydCVUlMRERJUiddLCAnc3N0YXRlLWNhY2hlJykKKyAgICAgICAgY2xzLmh0dHBfc2VydmljZSA9IEhUVFBTZXJ2aWNlKHNzdGF0ZV9kaXIpCisgICAgICAgIGNscy5odHRwX3NlcnZpY2Uuc3RhcnQoKQorCisgICAgICAgIGh0dHBfdXJsID0gIjEyNy4wLjAuMTolZCIgJSBjbHMuaHR0cF9zZXJ2aWNlLnBvcnQKKyAKKyAgICAgICAgaW1hZ2UgPSAnY29yZS1pbWFnZS1taW5pbWFsJworCisgICAgICAgIGNscy50bXBkaXJfZVNES1FBID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2VTREtRQScpCisgICAgICAgIG9lU0RLRXh0U2VsZlRlc3QuZ2VuZXJhdGVfZVNESyhpbWFnZSkKKworICAgICAgICAjIEluc3RhbGwgZVNESworICAgICAgICBleHRfc2RrX3BhdGggPSBvZVNES0V4dFNlbGZUZXN0LmdldF9lU0RLX3Rvb2xjaGFpbihpbWFnZSkKKyAgICAgICAgcnVuQ21kKCIlcyAteSAtZCBcIiVzXCIiICUgKGV4dF9zZGtfcGF0aCwgY2xzLnRtcGRpcl9lU0RLUUEpKQorCisgICAgICAgIGNscy5lbnZfZVNESyA9IG9lU0RLRXh0U2VsZlRlc3QuZ2V0X2VzZGtfZW52aXJvbm1lbnQoJycsIGNscy50bXBkaXJfZVNES1FBKQorCisgICAgICAgICMgQ29uZmlndXJlIGVTREsgdG8gdXNlIHNzdGF0ZSBtaXJyb3IgZnJvbSBwb2t5CisgICAgICAgIHNzdGF0ZV9jb25maWc9IiIiCitTREtfTE9DQUxfQ09ORl9XSElURUxJU1QgPSAiU1NUQVRFX01JUlJPUlMiCitTU1RBVEVfTUlSUk9SUyA9ICAiZmlsZTovLy4qIGh0dHA6Ly8lcy9QQVRIIgorICAgICAgICAiIiIgJSBodHRwX3VybAorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGNscy50bXBkaXJfZVNES1FBLCAnY29uZicsICdsb2NhbC5jb25mJyksICdhKycpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHNzdGF0ZV9jb25maWcpCisKKyAgICAgIAorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIHNodXRpbC5ybXRyZWUoY2xzLnRtcGRpcl9lU0RLUUEpCisgICAgICAgIGNscy5odHRwX3NlcnZpY2Uuc3RvcCgpCisKKyAgICBAdGVzdGNhc2UgKDE0NzEpCisgICAgZGVmIHRlc3RfaW5zdGFsbF9saWJyYXJpZXNfaGVhZGVycyhzZWxmKToKKyAgICAgICAgcG5fc3N0YXRlID0gJ2JjJworICAgICAgICBiaXRiYWtlKHBuX3NzdGF0ZSkKKyAgICAgICAgY21kID0gImRldnRvb2wgc2RrLWluc3RhbGwgJXMgIiAlIHBuX3NzdGF0ZQorICAgICAgICBvZVNES0V4dFNlbGZUZXN0LnJ1bl9lc2RrX2NtZChzZWxmLmVudl9lU0RLLCBzZWxmLnRtcGRpcl9lU0RLUUEsIGNtZCkKKyAgICAKKyAgICBAdGVzdGNhc2UoMTQ3MikKKyAgICBkZWYgdGVzdF9pbWFnZV9nZW5lcmF0aW9uX2JpbmFyeV9mZWVkcyhzZWxmKToKKyAgICAgICAgaW1hZ2UgPSAnY29yZS1pbWFnZS1taW5pbWFsJworICAgICAgICBjbWQgPSAiZGV2dG9vbCBidWlsZC1pbWFnZSAlcyIgJSBpbWFnZQorICAgICAgICBvZVNES0V4dFNlbGZUZXN0LnJ1bl9lc2RrX2NtZChzZWxmLmVudl9lU0RLLCBzZWxmLnRtcGRpcl9lU0RLUUEsIGNtZCkKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2VzZGtfcHJlcGFyZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2VzZGtfcHJlcGFyZS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMWIzNmEwZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9lc2RrX3ByZXBhcmUucHkKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLQotaW1wb3J0IHNodXRpbCwgdGVtcGZpbGUKLWltcG9ydCBzeXMKLWltcG9ydCBvcwotaW1wb3J0IGltcAotaW1wb3J0IHVuaXR0ZXN0Ci10cnk6Ci0gICAgZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBnZXRfYmJfdmFyCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgcGFzcwotCi0jIG1vZHVsZSB1bmRlciB0ZXN0Ci1tb2R1bGVfZmlsZV9uYW1lID0gImV4dC1zZGstcHJlcGFyZS5weSIKLW1vZHVsZV9wYXRoID0gIiIKLQotY2xhc3MgRXh0U2RrUHJlcGFyZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgIiIiIHVuaXQgdGVzdCBmb3IgZml4IGZvciBZb2N0byAjOTAxOSAiIiIKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXRVcENsYXNzKHNlbGYpOgotICAgICAgICAjIGNvcHkgbW9kdWxlIHVuZGVyIHRlc3QgdG8gdGVtcCBkaXIKLSAgICAgICAgc2VsZi50ZXN0X2RpciA9IHRlbXBmaWxlLm1rZHRlbXAoKQotICAgICAgICBtb2R1bGVfZGVzdF9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYudGVzdF9kaXIsIG1vZHVsZV9maWxlX25hbWUpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNodXRpbC5jb3B5KG1vZHVsZV9wYXRoLCBzZWxmLnRlc3RfZGlyKQotICAgICAgICAgICAgIyBsb2FkIG1vZHVsZSB1bmRlciB0ZXN0Ci0gICAgICAgICAgICBzZWxmLnRlc3RfbW9kID0gaW1wLmxvYWRfc291cmNlKCIiLCBtb2R1bGVfZGVzdF9wYXRoKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBwcmludCAiZXJyb3I6IHVuYWJsZSB0byBjb3B5IG9yIGxvYWQgJXMgW3NyYzogJXMsIGRzdDogJXNdIiAlIFwKLSAgICAgICAgICAgICAgICAgICAgKG1vZHVsZV9maWxlX25hbWUsIG1vZHVsZV9wYXRoLCBtb2R1bGVfZGVzdF9wYXRoKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgIGRlZiB0ZXN0X3ByZXBhcmVfdW5leHBlY3RlZChzZWxmKToKLSAgICAgICAgIyB0ZXN0IGRhdGEKLSAgICAgICAgIyBub3RlOiBwYXRobmFtZXMgaGF2ZSBiZWVuIHRydW5jYXRlZCBmcm9tIHRoZSBhY3R1YWwgYml0YmFrZQotICAgICAgICAjIG91dHB1dCBhcyB0aGV5IGFyZSBub3QgaW1wb3J0YW50IGZvciB0aGUgdGVzdC4KLSAgICAgICAgdGVzdF9kYXRhID0gKCAKLSAgICAgICAgICAgICdOT1RFOiBSdW5uaW5nIG5vZXhlYyB0YXNrIDkgb2YgNjUzOSAoSUQ6IDI4LCBxdWlsdC9xdWlsdC1uYXRpdmVfMC42NC5iYiwgZG9fYnVpbGQpXG4nCi0gICAgICAgICAgICAnTk9URTogUnVubmluZyB0YXNrIDEwIG9mIDY1MzkgKElEOiAyOSwgcXVpbHQvcXVpbHQtbmF0aXZlXzAuNjQuYmIsIGRvX3BhY2thZ2UpXG4nCi0gICAgICAgICAgICAnTk9URTogUnVubmluZyB0YXNrIDExIG9mIDY1MzkgKElEOiAzMCwgcXVpbHQvcXVpbHQtbmF0aXZlXzAuNjQuYmIsIGRvX3JtX3dvcmspXG4nCi0gICAgICAgICAgICAnTk9URTogUnVubmluZyBub2V4ZWMgdGFzayA2NDAyIG9mIDY1MzkgKElEOiAxLCBpbWFnZXMvY29yZS1pbWFnZS1zYXRvLmJiLCBkb19wYXRjaClcbicKLSAgICAgICAgICAgICdOT1RFOiBSdW5uaW5nIHRhc2sgNjUzOCBvZiA2NTM5IChJRDogMTQsIGltYWdlcy9jb3JlLWltYWdlLXNhdG8uYmIsIGRvX3JtX3dvcmspXG4nCi0gICAgICAgICkKLSAgICAgICAgIyBleHBlY3RlZCB3YXJuaW5nIG91dHB1dAotICAgICAgICBleHBlY3RlZCA9IFsgKCcgdGFzayAxMCBvZiA2NTM5IChJRDogMjksIHF1aWx0L3F1aWx0LW5hdGl2ZV8wLjY0LmJiLCBkb19wYWNrYWdlKScpIF0KLSAgICAgICAgIyByZWNpcGUgdG8gdGVzdCwgbWF0Y2hpbmcgdGVzdCBpbnB1dCBkYXRhCi0gICAgICAgIHJlY2lwZXMgPSBbICJjb3JlLWltYWdlLXNhdG8uYmIiIF0KLQotICAgICAgICAjIHJ1biB0aGUgdGVzdAotICAgICAgICBvdXRwdXQgPSBzZWxmLnRlc3RfbW9kLmNoZWNrX3VuZXhwZWN0ZWQodGVzdF9kYXRhLCByZWNpcGVzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dCwgZXhwZWN0ZWQpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgdGVhckRvd25DbGFzcyhzZWxmKToKLSAgICAgICAgIyByZW1vdmUgdGVtcCBkaXIKLSAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLnRlc3RfZGlyKQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgICMgcnVubmluZyBmcm9tIGNvbW1hbmQgbGluZSAtIGkuZS4sIG5vdCB1bmRlciBvZS1zZWxmdGVzdAotICAgICMgZGlyZWN0b3J5IGNvbnRhaW5pbmcgbW9kdWxlIHVuZGVyIHRlc3QgY29tZXMgZnJvbSBjb21tYW5kIGxpbmUKLSAgICBpZiBsZW4oc3lzLmFyZ3YpID09IDIgYW5kIG9zLnBhdGguaXNkaXIoc3lzLmFyZ3ZbMV0pOgotICAgICAgICBtb2R1bGVfcGF0aCA9IG9zLnBhdGguam9pbihzeXMuYXJndlsxXSwgbW9kdWxlX2ZpbGVfbmFtZSkKLSAgICAgICAgc3VpdGUgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkubG9hZFRlc3RzRnJvbVRlc3RDYXNlKEV4dFNka1ByZXBhcmVUZXN0KQotICAgICAgICB1bml0dGVzdC5UZXh0VGVzdFJ1bm5lcigpLnJ1bihzdWl0ZSkKLSAgICBlbHNlOgotICAgICAgICBwcm9nbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoc3lzLmFyZ3ZbMF0pCi0gICAgICAgIHByaW50ICIlczogbWlzc2luZyBkaXJlY3RvcnkgcGF0aCIgJSBwcm9nbmFtZQotICAgICAgICBwcmludCAidXNhZ2U6ICVzIC9wYXRoL3RvL2RpcmVjdG9yeS1vZihleHQtc2RrLXByZXBhcmUucHkpIiAlIHByb2duYW1lCi0gICAgICAgIHN5cy5leGl0KDEpCi1lbHNlOgotICAgICMgcnVubmluZyB1bmRlciBvZS1zZWxmdGVzdAotICAgICMgZGV0ZXJtaW5lIG1vZHVsZSBzb3VyY2UgZGlyIGZyb20gQ09SRUJBU0UgYW5kIGV4cGVjdGVkIHBhdGgKLSAgICBtb2R1bGVfcGF0aCA9IG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCJDT1JFQkFTRSIpLCAibWV0YSIsICJmaWxlcyIsIG1vZHVsZV9maWxlX25hbWUpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9pbWFnZWZlYXR1cmVzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvaW1hZ2VmZWF0dXJlcy5weQppbmRleCA4YTUzODk5Li5kMDE1YzQ5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9pbWFnZWZlYXR1cmVzLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2ltYWdlZmVhdHVyZXMucHkKQEAgLTk4LDMgKzk4LDMwIEBACiAgICAgICAgICMgQnVpbGQgYSBjb3JlLWltYWdlLXdlc3RvbgogICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLXdlc3RvbicpCiAKKyAgICBkZWYgdGVzdF9ibWFwKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgU3VtbWFyeTogICAgIENoZWNrIGJtYXAgc3VwcG9ydAorICAgICAgICBFeHBlY3RlZDogICAgMS4gY29yZS1pbWFnZS1taW5pbWFsIGNhbiBiZSBidWlsZCB3aXRoIGJtYXAgc3VwcG9ydAorICAgICAgICAgICAgICAgICAgICAgMi4gY29yZS1pbWFnZS1taW5pbWFsIGlzIHNwYXJzZQorICAgICAgICBQcm9kdWN0OiAgICAgb2UtY29yZQorICAgICAgICBBdXRob3I6ICAgICAgRWQgQmFydG9zaCA8ZWQuYmFydG9zaEBsaW51eC5pbnRlbC5jb20+CisgICAgICAgICIiIgorCisgICAgICAgIGZlYXR1cmVzID0gJ0lNQUdFX0ZTVFlQRVMgKz0gIiBleHQ0IGV4dDQuYm1hcCInCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQorCisgICAgICAgIGltYWdlX25hbWUgPSAnY29yZS1pbWFnZS1taW5pbWFsJworICAgICAgICBiaXRiYWtlKGltYWdlX25hbWUpCisKKyAgICAgICAgZGVwbG95X2Rpcl9pbWFnZSA9IGdldF9iYl92YXIoJ0RFUExPWV9ESVJfSU1BR0UnKQorICAgICAgICBsaW5rX25hbWUgPSBnZXRfYmJfdmFyKCdJTUFHRV9MSU5LX05BTUUnLCBpbWFnZV9uYW1lKQorICAgICAgICBpbWFnZV9wYXRoID0gb3MucGF0aC5qb2luKGRlcGxveV9kaXJfaW1hZ2UsICIlcy5leHQ0IiAlIGxpbmtfbmFtZSkKKyAgICAgICAgYm1hcF9wYXRoID0gIiVzLmJtYXAiICUgaW1hZ2VfcGF0aAorCisgICAgICAgICMgY2hlY2sgaWYgcmVzdWx0IGltYWdlIGFuZCBibWFwIGZpbGUgYXJlIGluIGRlcGxveSBkaXJlY3RvcnkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGltYWdlX3BhdGgpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoYm1hcF9wYXRoKSkKKworICAgICAgICAjIGNoZWNrIGlmIHJlc3VsdCBpbWFnZSBpcyBzcGFyc2UKKyAgICAgICAgaW1hZ2Vfc3RhdCA9IG9zLnN0YXQoaW1hZ2VfcGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGltYWdlX3N0YXQuc3Rfc2l6ZSA+IGltYWdlX3N0YXQuc3RfYmxvY2tzICogNTEyKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvbGlib2UucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9saWJvZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNTEzMWViCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvbGlib2UucHkKQEAgLTAsMCArMSw5MyBAQAorZnJvbSBvZXFhLnNlbGZ0ZXN0LmJhc2UgaW1wb3J0IG9lU2VsZlRlc3QKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgZ2V0X2JiX3ZhciwgYml0YmFrZSwgcnVuQ21kCitpbXBvcnQgb2UucGF0aAoraW1wb3J0IGdsb2IKK2ltcG9ydCBvcworaW1wb3J0IG9zLnBhdGgKKworY2xhc3MgTGliT0Uob2VTZWxmVGVzdCk6CisgICAgZGVmIHRlc3RfY29weV90cmVlX3NwZWNpYWwoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdW1tYXJ5OiAgICBvZS5wYXRoLmNvcHl0cmVlKCkgc2hvdWxkIGNvcHkgZmlsZXMgd2l0aCBzcGVjaWFsIGNoYXJhY3RlcgorICAgICAgICBFeHBlY3RlZDogICAndGVzdCBmaWxlIHdpdGggc3DCo2MhYWwgQG5kIHNwYWNlcycgc2hvdWxkIGV4aXN0IGluCisgICAgICAgICAgICAgICAgICAgIGNvcHkgZGVzdGluYXRpb24KKyAgICAgICAgUHJvZHVjdDogICAgT0UtQ29yZQorICAgICAgICBBdXRob3I6ICAgICBKb3NodWEgTG9jayA8am9zaHVhLmcubG9ja0BpbnRlbC5jb20+CisgICAgICAgICIiIgorICAgICAgICB0bXBfZGlyID0gZ2V0X2JiX3ZhcignVE1QRElSJykKKyAgICAgICAgdGVzdGxvYyA9IG9lLnBhdGguam9pbih0bXBfZGlyLCAnbGlib2V0ZXN0cycpCisgICAgICAgIHNyYyA9IG9lLnBhdGguam9pbih0ZXN0bG9jLCAnc3JjJykKKyAgICAgICAgZHN0ID0gb2UucGF0aC5qb2luKHRlc3Rsb2MsICdkc3QnKQorICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIodGVzdGxvYykKKyAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHNyYykKKyAgICAgICAgdGVzdGZpbGVuYW1lID0gJ3Rlc3QgZmlsZSB3aXRoIHNwwqNjIWFsIEBuZCBzcGFjZXMnCisKKyAgICAgICAgIyBjcmVhdGUgdGhlIHRlc3QgZmlsZSBhbmQgY29weSBpdAorICAgICAgICBvcGVuKG9lLnBhdGguam9pbihzcmMsIHRlc3RmaWxlbmFtZSksICd3K2InKS5jbG9zZSgpCisgICAgICAgIG9lLnBhdGguY29weXRyZWUoc3JjLCBkc3QpCisKKyAgICAgICAgIyBlbnN1cmUgcGF0aCBleGlzdHMgaW4gZGVzdAorICAgICAgICBmaWxlaW5kc3QgPSBvcy5wYXRoLmlzZmlsZShvZS5wYXRoLmpvaW4oZHN0LCB0ZXN0ZmlsZW5hbWUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZmlsZWluZHN0LCAiRmlsZSB3aXRoIHNwYWNlcyBkb2Vzbid0IGV4aXN0IGluIGRzdCIpCisKKyAgICAgICAgb2UucGF0aC5yZW1vdmUodGVzdGxvYykKKworICAgIGRlZiB0ZXN0X2NvcHlfdHJlZV94YXR0cihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFN1bW1hcnk6ICAgIG9lLnBhdGguY29weXRyZWUoKSBzaG91bGQgcHJlc2VydmUgeGF0dHIgb24gY29waWVkIGZpbGVzCisgICAgICAgIEV4cGVjdGVkOiAgIHRlc3R4YXR0ciBmaWxlIGluIGRlc3RpbmF0aW9uIHNob3VsZCBoYXZlIHVzZXIub2V0ZXN0CisgICAgICAgICAgICAgICAgICAgIGV4dGVuZGVkIGF0dHJpYnV0ZQorICAgICAgICBQcm9kdWN0OiAgICBPRS1Db3JlCisgICAgICAgIEF1dGhvcjogICAgIEpvc2h1YSBMb2NrIDxqb3NodWEuZy5sb2NrQGludGVsLmNvbT4KKyAgICAgICAgIiIiCisgICAgICAgIHRtcF9kaXIgPSBnZXRfYmJfdmFyKCdUTVBESVInKQorICAgICAgICB0ZXN0bG9jID0gb2UucGF0aC5qb2luKHRtcF9kaXIsICdsaWJvZXRlc3RzJykKKyAgICAgICAgc3JjID0gb2UucGF0aC5qb2luKHRlc3Rsb2MsICdzcmMnKQorICAgICAgICBkc3QgPSBvZS5wYXRoLmpvaW4odGVzdGxvYywgJ2RzdCcpCisgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcih0ZXN0bG9jKQorICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoc3JjKQorICAgICAgICB0ZXN0ZmlsZW5hbWUgPSAndGVzdHhhdHRyJworCisgICAgICAgICMgZW5zdXJlIHdlIGhhdmUgc2V0ZmF0dHIgYXZhaWxhYmxlCisgICAgICAgIGJpdGJha2UoImF0dHItbmF0aXZlIikKKyAgICAgICAgYmluZGlyID0gZ2V0X2JiX3ZhcignU1RBR0lOR19CSU5ESVJfTkFUSVZFJykKKworICAgICAgICAjIGNyZWF0ZSBhIGZpbGUgd2l0aCB4YXR0ciBhbmQgY29weSBpdAorICAgICAgICBvcGVuKG9lLnBhdGguam9pbihzcmMsIHRlc3RmaWxlbmFtZSksICd3K2InKS5jbG9zZSgpCisgICAgICAgIHJ1bkNtZCgnJXMvc2V0ZmF0dHIgLW4gdXNlci5vZXRlc3QgLXYgInRlc3RpbmcgbGlib2UiICVzJyAlIChiaW5kaXIsIG9lLnBhdGguam9pbihzcmMsIHRlc3RmaWxlbmFtZSkpKQorICAgICAgICBvZS5wYXRoLmNvcHl0cmVlKHNyYywgZHN0KQorCisgICAgICAgICMgZW5zdXJlIGZpbGUgaW4gZGVzdCBoYXMgdXNlci5vZXRlc3QgeGF0dHIKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCclcy9nZXRmYXR0ciAtbiB1c2VyLm9ldGVzdCAlcycgJSAoYmluZGlyLCBvZS5wYXRoLmpvaW4oZHN0LCB0ZXN0ZmlsZW5hbWUpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigndXNlci5vZXRlc3Q9InRlc3RpbmcgbGlib2UiJywgcmVzdWx0Lm91dHB1dCwgJ0V4dGVuZGVkIGF0dHJpYnV0ZSBub3Qgc2VydCBpbiBkc3QnKQorCisgICAgICAgIG9lLnBhdGgucmVtb3ZlKHRlc3Rsb2MpCisKKyAgICBkZWYgdGVzdF9jb3B5X2hhcmRsaW5rX3RyZWVfY291bnQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdW1tYXJ5OiAgICBvZS5wYXRoLmNvcHloYXJkbGlua3RyZWUoKSBzaG91bGRuJ3QgbWlzcyBvdXQgZmlsZXMKKyAgICAgICAgRXhwZWN0ZWQ6ICAgc3JjIGFuZCBkc3Qgc2hvdWxkIGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIGZpbGVzCisgICAgICAgIFByb2R1Y3Q6ICAgIE9FLUNvcmUKKyAgICAgICAgQXV0aG9yOiAgICAgSm9zaHVhIExvY2sgPGpvc2h1YS5nLmxvY2tAaW50ZWwuY29tPgorICAgICAgICAiIiIKKyAgICAgICAgdG1wX2RpciA9IGdldF9iYl92YXIoJ1RNUERJUicpCisgICAgICAgIHRlc3Rsb2MgPSBvZS5wYXRoLmpvaW4odG1wX2RpciwgJ2xpYm9ldGVzdHMnKQorICAgICAgICBzcmMgPSBvZS5wYXRoLmpvaW4odGVzdGxvYywgJ3NyYycpCisgICAgICAgIGRzdCA9IG9lLnBhdGguam9pbih0ZXN0bG9jLCAnZHN0JykKKyAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHRlc3Rsb2MpCisgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihzcmMpCisgICAgICAgIHRlc3RmaWxlcyA9IFsnZm9vJywgJ2JhcicsICcuYmF6JywgJ3F1dXgnXQorCisgICAgICAgIGRlZiB0b3VjaGZpbGUodGYpOgorICAgICAgICAgICAgb3BlbihvZS5wYXRoLmpvaW4oc3JjLCB0ZiksICd3K2InKS5jbG9zZSgpCisKKyAgICAgICAgZm9yIGYgaW4gdGVzdGZpbGVzOgorICAgICAgICAgICAgdG91Y2hmaWxlKGYpCisKKyAgICAgICAgb2UucGF0aC5jb3B5aGFyZGxpbmt0cmVlKHNyYywgZHN0KQorCisgICAgICAgIGRzdGNudCA9IGxlbihvcy5saXN0ZGlyKGRzdCkpCisgICAgICAgIHNyY2NudCA9IGxlbihvcy5saXN0ZGlyKHNyYykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGRzdGNudCwgbGVuKHRlc3RmaWxlcyksICJOdW1iZXIgb2YgZmlsZXMgaW4gZHN0ICglcykgZGlmZmVycyBmcm9tIG51bWJlciBvZiBmaWxlcyBpbiBzcmMoJXMpLiIgJSAoZHN0Y250LCBzcmNjbnQpKQorCisgICAgICAgIG9lLnBhdGgucmVtb3ZlKHRlc3Rsb2MpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9saWMtY2hlY2tzdW0ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9saWMtY2hlY2tzdW0ucHkKaW5kZXggY2FjNmQ4NC4uMmU4MTM3MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvbGljLWNoZWNrc3VtLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2xpYy1jaGVja3N1bS5weQpAQCAtMTIsMjAgKzEyLDI0IEBACiAgICAgIyB0aGUgbGljZW5zZSBxYSB0byBmYWlsIGR1ZSB0byBhIG1pc21hdGNoZWQgbWQ1c3VtLgogICAgIEB0ZXN0Y2FzZSgxMTk3KQogICAgIGRlZiB0ZXN0X25vbm1hdGNoaW5nX2NoZWNrc3VtKHNlbGYpOgotICAgICAgICBiaXRiYWtlX2NtZCA9ICctYyBjb25maWd1cmUgZW1wdHl0ZXN0JworICAgICAgICBiaXRiYWtlX2NtZCA9ICctYyBwb3B1bGF0ZV9saWMgZW1wdHl0ZXN0JwogICAgICAgICBlcnJvcl9tc2cgPSAnZW1wdHl0ZXN0OiBUaGUgbmV3IG1kNSBjaGVja3N1bSBpcyA4ZDc3N2YzODVkM2RmZWM4ODE1ZDIwZjc0OTYwMjZkYycKIAogICAgICAgICBsaWNfZmlsZSwgbGljX3BhdGggPSB0ZW1wZmlsZS5ta3N0ZW1wKCkKICAgICAgICAgb3MuY2xvc2UobGljX2ZpbGUpCiAgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAobGljX3BhdGgpCiAKLSAgICAgICAgc2VsZi53cml0ZV9yZWNpcGVpbmMoJ2VtcHR5dGVzdCcsICdJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIicpCi0gICAgICAgIHNlbGYuYXBwZW5kX3JlY2lwZWluYygnZW1wdHl0ZXN0JywgJ0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyVzO21kNT1kNDFkOGNkOThmMDBiMjA0ZTk4MDA5OThlY2Y4NDI3ZSInICUgbGljX3BhdGgpCisgICAgICAgIHNlbGYud3JpdGVfcmVjaXBlaW5jKCdlbXB0eXRlc3QnLCAiIiIKK0lOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8lczttZDU9ZDQxZDhjZDk4ZjAwYjIwNGU5ODAwOTk4ZWNmODQyN2UiCitTUkNfVVJJID0gImZpbGU6Ly8lczttZDU9ZDQxZDhjZDk4ZjAwYjIwNGU5ODAwOTk4ZWNmODQyN2UiCisiIiIgJSAobGljX3BhdGgsIGxpY19wYXRoKSkKICAgICAgICAgcmVzdWx0ID0gYml0YmFrZShiaXRiYWtlX2NtZCkKIAogICAgICAgICB3aXRoIG9wZW4obGljX3BhdGgsICJ3IikgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoImRhdGEiKQogCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCJJTkhFUklUX3JlbW92ZSA9IFwicmVwb3J0LWVycm9yXCIiKQogICAgICAgICByZXN1bHQgPSBiaXRiYWtlKGJpdGJha2VfY21kLCBpZ25vcmVfc3RhdHVzPVRydWUpCiAgICAgICAgIGlmIGVycm9yX21zZyBub3QgaW4gcmVzdWx0Lm91dHB1dDoKICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKHJlc3VsdC5vdXRwdXQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9wa2dkYXRhLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvcGtnZGF0YS5weQppbmRleCAxMzhiMDNhLi41YTYzZjg5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9wa2dkYXRhLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L3BrZ2RhdGEucHkKQEAgLTEzMSwxNSArMTMxLDE1IEBACiAgICAgICAgICMgVGVzdCByZWNpcGUtc3BhY2UgcGFja2FnZSBuYW1lCiAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxpc3QtcGtnLWZpbGVzIHpsaWItZGV2IHpsaWItZG9jJykKICAgICAgICAgZmlsZXMgPSBzcGxpdG91dHB1dChyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliLWRldicsIGZpbGVzLmtleXMoKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliLWRvYycsIGZpbGVzLmtleXMoKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliLWRldicsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliLWRvYycsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQogICAgICAgICBzZWxmLmFzc2VydEluKG9zLnBhdGguam9pbihpbmNsdWRlZGlyLCAnemxpYi5oJyksIGZpbGVzWyd6bGliLWRldiddKQogICAgICAgICBzZWxmLmFzc2VydEluKG9zLnBhdGguam9pbihtYW5kaXIsICdtYW4zL3psaWIuMycpLCBmaWxlc1snemxpYi1kb2MnXSkKICAgICAgICAgIyBUZXN0IHJ1bnRpbWUgcGFja2FnZSBuYW1lCiAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxpc3QtcGtnLWZpbGVzIC1yIGxpYnoxIGxpYnotZGV2JykKICAgICAgICAgZmlsZXMgPSBzcGxpdG91dHB1dChyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6MScsIGZpbGVzLmtleXMoKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6LWRldicsIGZpbGVzLmtleXMoKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6MScsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6LWRldicsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQogICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKGZpbGVzWydsaWJ6MSddKSwgMSkKICAgICAgICAgbGlic3BlYyA9IG9zLnBhdGguam9pbihiYXNlX2xpYmRpciwgJ2xpYnouc28uMS4qJykKICAgICAgICAgZm91bmQgPSBGYWxzZQpAQCAtMTUyLDEyICsxNTIsMTIgQEAKICAgICAgICAgIyBUZXN0IHJlY2lwZQogICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsaXN0LXBrZy1maWxlcyAtcCB6bGliJykKICAgICAgICAgZmlsZXMgPSBzcGxpdG91dHB1dChyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliLWRiZycsIGZpbGVzLmtleXMoKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliLWRvYycsIGZpbGVzLmtleXMoKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliLWRldicsIGZpbGVzLmtleXMoKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliLXN0YXRpY2RldicsIGZpbGVzLmtleXMoKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliJywgZmlsZXMua2V5cygpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ3psaWItbG9jYWxlJywgZmlsZXMua2V5cygpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3psaWItZGJnJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3psaWItZG9jJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3psaWItZGV2JywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3psaWItc3RhdGljZGV2JywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3psaWInLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignemxpYi1sb2NhbGUnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKICAgICAgICAgIyAoaWdub3JlIHB0ZXN0LCBtaWdodCBub3QgYmUgdGhlcmUgZGVwZW5kaW5nIG9uIGNvbmZpZykKICAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5wYXRoLmpvaW4oaW5jbHVkZWRpciwgJ3psaWIuaCcpLCBmaWxlc1snemxpYi1kZXYnXSkKICAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5wYXRoLmpvaW4obWFuZGlyLCAnbWFuMy96bGliLjMnKSwgZmlsZXNbJ3psaWItZG9jJ10pCkBAIC0xNjUsMzYgKzE2NSwzNiBAQAogICAgICAgICAjIFRlc3QgcmVjaXBlLCBydW50aW1lCiAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxpc3QtcGtnLWZpbGVzIC1wIHpsaWIgLXInKQogICAgICAgICBmaWxlcyA9IHNwbGl0b3V0cHV0KHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnotZGJnJywgZmlsZXMua2V5cygpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnotZG9jJywgZmlsZXMua2V5cygpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnotZGV2JywgZmlsZXMua2V5cygpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnotc3RhdGljZGV2JywgZmlsZXMua2V5cygpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnoxJywgZmlsZXMua2V5cygpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2xpYnotbG9jYWxlJywgZmlsZXMua2V5cygpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnotZGJnJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnotZG9jJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnotZGV2JywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnotc3RhdGljZGV2JywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnoxJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2xpYnotbG9jYWxlJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MucGF0aC5qb2luKGluY2x1ZGVkaXIsICd6bGliLmgnKSwgZmlsZXNbJ2xpYnotZGV2J10pCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MucGF0aC5qb2luKG1hbmRpciwgJ21hbjMvemxpYi4zJyksIGZpbGVzWydsaWJ6LWRvYyddKQogICAgICAgICBzZWxmLmFzc2VydEluKG9zLnBhdGguam9pbihsaWJkaXIsICdsaWJ6LmEnKSwgZmlsZXNbJ2xpYnotc3RhdGljZGV2J10pCiAgICAgICAgICMgVGVzdCByZWNpcGUsIHVucGFja2FnZWQKICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbGlzdC1wa2ctZmlsZXMgLXAgemxpYiAtdScpCiAgICAgICAgIGZpbGVzID0gc3BsaXRvdXRwdXQocmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYi1kYmcnLCBmaWxlcy5rZXlzKCksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYi1kb2MnLCBmaWxlcy5rZXlzKCksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYi1kZXYnLCBmaWxlcy5rZXlzKCksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYi1zdGF0aWNkZXYnLCBmaWxlcy5rZXlzKCksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYicsIGZpbGVzLmtleXMoKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliLWxvY2FsZScsIGZpbGVzLmtleXMoKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KSAjIHRoaXMgaXMgdGhlIGtleSBvbmUKKyAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYi1kYmcnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYi1kb2MnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYi1kZXYnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYi1zdGF0aWNkZXYnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYicsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliLWxvY2FsZScsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KSAjIHRoaXMgaXMgdGhlIGtleSBvbmUKICAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5wYXRoLmpvaW4oaW5jbHVkZWRpciwgJ3psaWIuaCcpLCBmaWxlc1snemxpYi1kZXYnXSkKICAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5wYXRoLmpvaW4obWFuZGlyLCAnbWFuMy96bGliLjMnKSwgZmlsZXNbJ3psaWItZG9jJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MucGF0aC5qb2luKGxpYmRpciwgJ2xpYnouYScpLCBmaWxlc1snemxpYi1zdGF0aWNkZXYnXSkKICAgICAgICAgIyBUZXN0IHJlY2lwZSwgcnVudGltZSwgdW5wYWNrYWdlZAogICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsaXN0LXBrZy1maWxlcyAtcCB6bGliIC1yIC11JykKICAgICAgICAgZmlsZXMgPSBzcGxpdG91dHB1dChyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6LWRiZycsIGZpbGVzLmtleXMoKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6LWRvYycsIGZpbGVzLmtleXMoKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6LWRldicsIGZpbGVzLmtleXMoKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6LXN0YXRpY2RldicsIGZpbGVzLmtleXMoKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6MScsIGZpbGVzLmtleXMoKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6LWxvY2FsZScsIGZpbGVzLmtleXMoKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KSAjIHRoaXMgaXMgdGhlIGtleSBvbmUKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbGliei1kYmcnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbGliei1kb2MnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbGliei1kZXYnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbGliei1zdGF0aWNkZXYnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbGliejEnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbGliei1sb2NhbGUnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkgIyB0aGlzIGlzIHRoZSBrZXkgb25lCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MucGF0aC5qb2luKGluY2x1ZGVkaXIsICd6bGliLmgnKSwgZmlsZXNbJ2xpYnotZGV2J10pCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MucGF0aC5qb2luKG1hbmRpciwgJ21hbjMvemxpYi4zJyksIGZpbGVzWydsaWJ6LWRvYyddKQogICAgICAgICBzZWxmLmFzc2VydEluKG9zLnBhdGguam9pbihsaWJkaXIsICdsaWJ6LmEnKSwgZmlsZXNbJ2xpYnotc3RhdGljZGV2J10pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9yZWNpcGV0b29sLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvcmVjaXBldG9vbC5weQppbmRleCBlNzI5MTFiLi5kYjFmOGRlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9yZWNpcGV0b29sLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L3JlY2lwZXRvb2wucHkKQEAgLTEsNyArMSw3IEBACiBpbXBvcnQgb3MKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgdGVtcGZpbGUKLWltcG9ydCB1cmxwYXJzZQoraW1wb3J0IHVybGxpYi5wYXJzZQogCiBmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhciwgY3JlYXRlX3RlbXBfbGF5ZXIKIGZyb20gb2VxYS51dGlscy5kZWNvcmF0b3JzIGltcG9ydCB0ZXN0Y2FzZQpAQCAtMjc4LDcgKzI3OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgJ31cbiddCiAgICAgICAgIF8sIG91dHB1dCA9IHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoJ3NlbGZ0ZXN0LXJlY2lwZXRvb2wtYXBwZW5kZmlsZScsICcvZXRjL3NlbGZ0ZXN0LXJlcGxhY2VtZS1wYXRjaGVkJywgc2VsZi50ZXN0ZmlsZSwgJycsIGV4cGVjdGVkbGluZXMsIFsndGVzdGZpbGUnXSkKICAgICAgICAgZm9yIGxpbmUgaW4gb3V0cHV0LnNwbGl0bGluZXMoKToKLSAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnV0FSTklORzogJyk6CisgICAgICAgICAgICBpZiAnV0FSTklORzogJyBpbiBsaW5lOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2FkZC1maWxlLnBhdGNoJywgbGluZSwgJ1VuZXhwZWN0ZWQgd2FybmluZyBmb3VuZCBpbiBvdXRwdXQ6XG4lcycgJSBsaW5lKQogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgIGVsc2U6CkBAIC0zODMsMTMgKzM4MywxMyBAQAogICAgIEB0ZXN0Y2FzZSgxMTk0KQogICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfY3JlYXRlX2dpdChzZWxmKToKICAgICAgICAgIyBFbnN1cmUgd2UgaGF2ZSB0aGUgcmlnaHQgZGF0YSBpbiBzaGxpYnMvcGtnZGF0YQotICAgICAgICBiaXRiYWtlKCdsaWJwbmcgcGFuZ28gbGlieDExIGxpYnhleHQganBlZyBsaWJ4c2V0dGluZ3MtY2xpZW50IGxpYmNoZWNrJykKKyAgICAgICAgYml0YmFrZSgnbGlicG5nIHBhbmdvIGxpYngxMSBsaWJ4ZXh0IGpwZWcgbGliY2hlY2snKQogICAgICAgICAjIFRyeSBhZGRpbmcgYSByZWNpcGUKICAgICAgICAgdGVtcHNyYyA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdzcmN0cmVlJykKICAgICAgICAgb3MubWFrZWRpcnModGVtcHNyYykKICAgICAgICAgcmVjaXBlZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdsaWJtYXRjaGJveC5iYicpCiAgICAgICAgIHNyY3VyaSA9ICdnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saWJtYXRjaGJveCcKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdyZWNpcGV0b29sIGNyZWF0ZSAtbyAlcyAlcyAteCAlcycgJSAocmVjaXBlZmlsZSwgc3JjdXJpLCB0ZW1wc3JjKSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKFsncmVjaXBldG9vbCcsICdjcmVhdGUnLCAnLW8nLCByZWNpcGVmaWxlLCBzcmN1cmkgKyAiO3Jldj05ZjdjZjg4OTVhZTJkMzljNDY1YzA0Y2M3OGU5MThjMTU3NDIwMjY5IiwgJy14JywgdGVtcHNyY10pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShyZWNpcGVmaWxlKSwgJ3JlY2lwZXRvb2wgZGlkIG5vdCBjcmVhdGUgcmVjaXBlIGZpbGU7IG91dHB1dDpcbiVzJyAlIHJlc3VsdC5vdXRwdXQpCiAgICAgICAgIGNoZWNrdmFycyA9IHt9CiAgICAgICAgIGNoZWNrdmFyc1snTElDRU5TRSddID0gJ0xHUEx2Mi4xJwpAQCAtMzk3LDcgKzM5Nyw3IEBACiAgICAgICAgIGNoZWNrdmFyc1snUyddID0gJyR7V09SS0RJUn0vZ2l0JwogICAgICAgICBjaGVja3ZhcnNbJ1BWJ10gPSAnMS4xMStnaXQke1NSQ1BWfScKICAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSBzcmN1cmkKLSAgICAgICAgY2hlY2t2YXJzWydERVBFTkRTJ10gPSBzZXQoWydsaWJjaGVjaycsICdsaWJqcGVnLXR1cmJvJywgJ2xpYnBuZycsICdsaWJ4MTEnLCAnbGlieHNldHRpbmdzLWNsaWVudCcsICdsaWJ4ZXh0JywgJ3BhbmdvJ10pCisgICAgICAgIGNoZWNrdmFyc1snREVQRU5EUyddID0gc2V0KFsnbGliY2hlY2snLCAnbGlianBlZy10dXJibycsICdsaWJwbmcnLCAnbGlieDExJywgJ2xpYnhleHQnLCAncGFuZ28nXSkKICAgICAgICAgaW5oZXJpdHMgPSBbJ2F1dG90b29scycsICdwa2djb25maWcnXQogICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIGluaGVyaXRzKQogCkBAIC00NDIsNiArNDQyLDQ5IEBACiAgICAgICAgIGluaGVyaXRzID0gWydjbWFrZScsICdweXRob24tZGlyJywgJ2dldHRleHQnLCAncGtnY29uZmlnJ10KICAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMocmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBpbmhlcml0cykKIAorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfY3JlYXRlX2dpdGh1YihzZWxmKToKKyAgICAgICAgIyBCYXNpYyB0ZXN0IHRvIHNlZSBpZiBnaXRodWIgVVJMIG1hbmdsaW5nIHdvcmtzCisgICAgICAgIHRlbXByZWNpcGUgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAncmVjaXBlJykKKyAgICAgICAgb3MubWFrZWRpcnModGVtcHJlY2lwZSkKKyAgICAgICAgcmVjaXBlZmlsZSA9IG9zLnBhdGguam9pbih0ZW1wcmVjaXBlLCAnbWVzb25fZ2l0LmJiJykKKyAgICAgICAgc3JjdXJpID0gJ2h0dHBzOi8vZ2l0aHViLmNvbS9tZXNvbmJ1aWxkL21lc29uJworICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3JlY2lwZXRvb2wgY3JlYXRlIC1vICVzICVzJyAlICh0ZW1wcmVjaXBlLCBzcmN1cmkpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUocmVjaXBlZmlsZSkpCisgICAgICAgIGNoZWNrdmFycyA9IHt9CisgICAgICAgIGNoZWNrdmFyc1snTElDRU5TRSddID0gc2V0KFsnQXBhY2hlLTIuMCddKQorICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9ICdnaXQ6Ly9naXRodWIuY29tL21lc29uYnVpbGQvbWVzb247cHJvdG9jb2w9aHR0cHMnCisgICAgICAgIGluaGVyaXRzID0gWydzZXR1cHRvb2xzJ10KKyAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMocmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBpbmhlcml0cykKKworICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfY3JlYXRlX2dpdGh1Yl90YXJiYWxsKHNlbGYpOgorICAgICAgICAjIEJhc2ljIHRlc3QgdG8gZW5zdXJlIGdpdGh1YiBVUkwgbWFuZ2xpbmcgZG9lc24ndCBhcHBseSB0byByZWxlYXNlIHRhcmJhbGxzCisgICAgICAgIHRlbXByZWNpcGUgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAncmVjaXBlJykKKyAgICAgICAgb3MubWFrZWRpcnModGVtcHJlY2lwZSkKKyAgICAgICAgcHYgPSAnMC4zMi4wJworICAgICAgICByZWNpcGVmaWxlID0gb3MucGF0aC5qb2luKHRlbXByZWNpcGUsICdtZXNvbl8lcy5iYicgJSBwdikKKyAgICAgICAgc3JjdXJpID0gJ2h0dHBzOi8vZ2l0aHViLmNvbS9tZXNvbmJ1aWxkL21lc29uL3JlbGVhc2VzL2Rvd25sb2FkLyVzL21lc29uLSVzLnRhci5neicgJSAocHYsIHB2KQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3JlY2lwZXRvb2wgY3JlYXRlIC1vICVzICVzJyAlICh0ZW1wcmVjaXBlLCBzcmN1cmkpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUocmVjaXBlZmlsZSkpCisgICAgICAgIGNoZWNrdmFycyA9IHt9CisgICAgICAgIGNoZWNrdmFyc1snTElDRU5TRSddID0gc2V0KFsnQXBhY2hlLTIuMCddKQorICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9ICdodHRwczovL2dpdGh1Yi5jb20vbWVzb25idWlsZC9tZXNvbi9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS9tZXNvbi0ke1BWfS50YXIuZ3onCisgICAgICAgIGluaGVyaXRzID0gWydzZXR1cHRvb2xzJ10KKyAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMocmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBpbmhlcml0cykKKworICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfY3JlYXRlX2dpdF9odHRwKHNlbGYpOgorICAgICAgICAjIEJhc2ljIHRlc3QgdG8gY2hlY2sgaHR0cCBnaXQgVVJMIG1hbmdsaW5nIHdvcmtzCisgICAgICAgIHRlbXByZWNpcGUgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAncmVjaXBlJykKKyAgICAgICAgb3MubWFrZWRpcnModGVtcHJlY2lwZSkKKyAgICAgICAgcmVjaXBlZmlsZSA9IG9zLnBhdGguam9pbih0ZW1wcmVjaXBlLCAnbWF0Y2hib3gtdGVybWluYWxfZ2l0LmJiJykKKyAgICAgICAgc3JjdXJpID0gJ2h0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9naXQvbWF0Y2hib3gtdGVybWluYWwnCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgncmVjaXBldG9vbCBjcmVhdGUgLW8gJXMgJXMnICUgKHRlbXByZWNpcGUsIHNyY3VyaSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShyZWNpcGVmaWxlKSkKKyAgICAgICAgY2hlY2t2YXJzID0ge30KKyAgICAgICAgY2hlY2t2YXJzWydMSUNFTlNFJ10gPSBzZXQoWydHUEx2MiddKQorICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9ICdnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9naXQvbWF0Y2hib3gtdGVybWluYWw7cHJvdG9jb2w9aHR0cCcKKyAgICAgICAgaW5oZXJpdHMgPSBbJ3BrZ2NvbmZpZycsICdhdXRvdG9vbHMnXQorICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIGluaGVyaXRzKQorCiBjbGFzcyBSZWNpcGV0b29sQXBwZW5kc3JjQmFzZShSZWNpcGV0b29sQmFzZSk6CiAgICAgZGVmIF90cnlfcmVjaXBldG9vbF9hcHBlbmRzcmNmaWxlKHNlbGYsIHRlc3RyZWNpcGUsIG5ld2ZpbGUsIGRlc3RmaWxlLCBvcHRpb25zLCBleHBlY3RlZGxpbmVzLCBleHBlY3RlZGZpbGVzKToKICAgICAgICAgY21kID0gJ3JlY2lwZXRvb2wgYXBwZW5kc3JjZmlsZSAlcyAlcyAlcyAlcyAlcycgJSAob3B0aW9ucywgc2VsZi50ZW1wbGF5ZXJkaXIsIHRlc3RyZWNpcGUsIG5ld2ZpbGUsIGRlc3RmaWxlKQpAQCAtNDcxLDcgKzUxNCw3IEBACiAgICAgICAgICcnJ1JldHVybiB0aGUgZmlyc3QgZmlsZTovLyBpbiBTUkNfVVJJIGZvciB0aGUgc3BlY2lmaWVkIHJlY2lwZS4nJycKICAgICAgICAgc3JjX3VyaSA9IGdldF9iYl92YXIoJ1NSQ19VUkknLCByZWNpcGUpLnNwbGl0KCkKICAgICAgICAgZm9yIHVyaSBpbiBzcmNfdXJpOgotICAgICAgICAgICAgcCA9IHVybHBhcnNlLnVybHBhcnNlKHVyaSkKKyAgICAgICAgICAgIHAgPSB1cmxsaWIucGFyc2UudXJscGFyc2UodXJpKQogICAgICAgICAgICAgaWYgcC5zY2hlbWUgPT0gJ2ZpbGUnOgogICAgICAgICAgICAgICAgIHJldHVybiBwLm5ldGxvYyArIHAucGF0aAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9ydW50aW1lLXRlc3QucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9ydW50aW1lLXRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzJkNWI0NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L3J1bnRpbWUtdGVzdC5weQpAQCAtMCwwICsxLDEwNSBAQAorZnJvbSBvZXFhLnNlbGZ0ZXN0LmJhc2UgaW1wb3J0IG9lU2VsZlRlc3QKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyLCBydW5xZW11Citmcm9tIG9lcWEudXRpbHMuZGVjb3JhdG9ycyBpbXBvcnQgdGVzdGNhc2UKK2ltcG9ydCBvcworCitjbGFzcyBUZXN0RXhwb3J0KG9lU2VsZlRlc3QpOgorCisgICAgZGVmIHRlc3RfdGVzdGV4cG9ydF9iYXNpYyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFN1bW1hcnk6IENoZWNrIGJhc2ljIHRlc3RleHBvcnQgZnVuY3Rpb25hbGl0eSB3aXRoIG9ubHkgcGluZyB0ZXN0IGVuYWJsZWQuCisgICAgICAgIEV4cGVjdGVkOiAxLiB0ZXN0ZXhwb3J0IGRpcmVjdG9yeSBtdXN0IGJlIGNyZWF0ZWQuCisgICAgICAgICAgICAgICAgICAyLiBydW5leHBvcnRlZC5weSBtdXN0IHJ1biB3aXRob3V0IGFueSBlcnJvci9leGNlcHRpb24uCisgICAgICAgICAgICAgICAgICAzLiBwaW5nIHRlc3QgbXVzdCBzdWNjZWVkLgorICAgICAgICBQcm9kdWN0OiBvZS1jb3JlCisgICAgICAgIEF1dGhvcjogTWFyaWFubyBMb3BleiA8bWFyaWFuby5sb3BlekBpbnRlbC5jb20+CisgICAgICAgICIiIgorCisgICAgICAgIGZlYXR1cmVzID0gJ0lOSEVSSVQgKz0gInRlc3RleHBvcnQiXG4nCisgICAgICAgICMgVGhlc2UgYXJlbid0IHRoZSBhY3R1YWwgSVAgYWRkcmVzc2VzIGJ1dCB0ZXN0ZXhwb3J0IGNsYXNzIG5lZWRzIHNvbWV0aGluZyBkZWZpbmVkCisgICAgICAgIGZlYXR1cmVzICs9ICdURVNUX1NFUlZFUl9JUCA9ICIxOTIuMTY4LjcuMSJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ1RFU1RfVEFSR0VUX0lQID0gIjE5Mi4xNjguNy4xIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnVEVTVF9TVUlURVMgPSAicGluZyJcbicKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCisKKyAgICAgICAgIyBCdWlsZCB0ZXNleHBvcnQgZm9yIGNvcmUtaW1hZ2UtbWluaW1hbAorICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKQorICAgICAgICBiaXRiYWtlKCctYyB0ZXN0ZXhwb3J0IGNvcmUtaW1hZ2UtbWluaW1hbCcpCisKKyAgICAgICAgIyBWZXJpZnkgaWYgVEVTVF9FWFBPUlRfRElSIHdhcyBjcmVhdGVkCisgICAgICAgIHRlc3RleHBvcnRfZGlyID0gZ2V0X2JiX3ZhcignVEVTVF9FWFBPUlRfRElSJywgJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCisgICAgICAgIGlzZGlyID0gb3MucGF0aC5pc2Rpcih0ZXN0ZXhwb3J0X2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpc2RpciwgJ0ZhaWxlZCB0byBjcmVhdGUgdGVzdGV4cG9ydCBkaXI6ICVzJyAlIHRlc3RleHBvcnRfZGlyKQorCisgICAgICAgIHdpdGggcnVucWVtdSgnY29yZS1pbWFnZS1taW5pbWFsJykgYXMgcWVtdToKKyAgICAgICAgICAgICMgQXR0ZW1wdCB0byBydW4gcnVuZXhwb3J0ZWQucHkgdG8gcGVyZm9ybSBwaW5nIHRlc3QKKyAgICAgICAgICAgIHJ1bmV4cG9ydGVkX3BhdGggPSBvcy5wYXRoLmpvaW4odGVzdGV4cG9ydF9kaXIsICJydW5leHBvcnRlZC5weSIpCisgICAgICAgICAgICB0ZXN0ZGF0YV9wYXRoID0gb3MucGF0aC5qb2luKHRlc3RleHBvcnRfZGlyLCAidGVzdGRhdGEuanNvbiIpCisgICAgICAgICAgICBjbWQgPSAiJXMgLXQgJXMgLXMgJXMgJXMiICUgKHJ1bmV4cG9ydGVkX3BhdGgsIHFlbXUuaXAsIHFlbXUuc2VydmVyX2lwLCB0ZXN0ZGF0YV9wYXRoKQorICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKGNtZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cywgJ3J1bmV4cG9ydGVkLnB5IHJldHVybmVkIGEgbm9uIDAgc3RhdHVzJykKKworICAgICAgICAgICAgIyBWZXJpZnkgcGluZyB0ZXN0IHdhcyBzdWNjZXNmdWwKKyAgICAgICAgICAgIGZhaWx1cmUgPSBUcnVlIGlmICdGQUlMJyBpbiByZXN1bHQub3V0cHV0IGVsc2UgRmFsc2UKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoVHJ1ZSwgZmFpbHVyZSwgJ3BpbmcgdGVzdCBmYWlsZWQnKQorCisgICAgZGVmIHRlc3RfdGVzdGV4cG9ydF9zZGsoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdW1tYXJ5OiBDaGVjayBzZGsgZnVuY3Rpb25hbGl0eSBmb3IgdGVzdGV4cG9ydC4KKyAgICAgICAgRXhwZWN0ZWQ6IDEuIHRlc3RleHBvcnQgZGlyZWN0b3J5IG11c3QgYmUgY3JlYXRlZC4KKyAgICAgICAgICAgICAgICAgIDIuIFNESyB0YXJiYWxsIG11c3QgZXhpc3RzLgorICAgICAgICAgICAgICAgICAgMy4gVW5jb21wcmVzc2luZyBvZiB0YXJiYWxsIG11c3Qgc3VjY2VlZC4KKyAgICAgICAgICAgICAgICAgIDQuIENoZWNrIGlmIHRoZSBTREsgZGlyZWN0b3J5IGlzIGFkZGVkIHRvIFBBVEguCisgICAgICAgICAgICAgICAgICA1LiBSdW4gdGFyIGZyb20gdGhlIFNESyBkaXJlY3RvcnkuCisgICAgICAgIFByb2R1Y3Q6IG9lLWNvcmUKKyAgICAgICAgQXV0aG9yOiBNYXJpYW5vIExvcGV6IDxtYXJpYW5vLmxvcGV6QGludGVsLmNvbT4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZmVhdHVyZXMgPSAnSU5IRVJJVCArPSAidGVzdGV4cG9ydCJcbicKKyAgICAgICAgIyBUaGVzZSBhcmVuJ3QgdGhlIGFjdHVhbCBJUCBhZGRyZXNzZXMgYnV0IHRlc3RleHBvcnQgY2xhc3MgbmVlZHMgc29tZXRoaW5nIGRlZmluZWQKKyAgICAgICAgZmVhdHVyZXMgKz0gJ1RFU1RfU0VSVkVSX0lQID0gIjE5Mi4xNjguNy4xIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnVEVTVF9UQVJHRVRfSVAgPSAiMTkyLjE2OC43LjEiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdURVNUX1NVSVRFUyA9ICJwaW5nIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnVEVTVF9TVUlURVNfVEFHUyA9ICJzZWxmdGVzdF9zZGsiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdURVNUX0VYUE9SVF9TREtfRU5BQkxFRCA9ICIxIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnVEVTVF9FWFBPUlRfU0RLX1BBQ0tBR0VTID0gIm5hdGl2ZXNkay10YXIiXG4nCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQorCisgICAgICAgICMgQnVpbGQgdGVzZXhwb3J0IGZvciBjb3JlLWltYWdlLW1pbmltYWwKKyAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJykKKyAgICAgICAgYml0YmFrZSgnLWMgdGVzdGV4cG9ydCBjb3JlLWltYWdlLW1pbmltYWwnKQorCisgICAgICAgICMgQ2hlY2sgZm9yIFNESworICAgICAgICB0ZXN0ZXhwb3J0X2RpciA9IGdldF9iYl92YXIoJ1RFU1RfRVhQT1JUX0RJUicsICdjb3JlLWltYWdlLW1pbmltYWwnKQorICAgICAgICBzZGtfZGlyID0gZ2V0X2JiX3ZhcignVEVTVF9FWFBPUlRfU0RLX0RJUicsICdjb3JlLWltYWdlLW1pbmltYWwnKQorICAgICAgICB0YXJiYWxsX25hbWUgPSAiJXMuc2giICUgZ2V0X2JiX3ZhcignVEVTVF9FWFBPUlRfU0RLX05BTUUnLCAnY29yZS1pbWFnZS1taW5pbWFsJykKKyAgICAgICAgdGFyYmFsbF9wYXRoID0gb3MucGF0aC5qb2luKHRlc3RleHBvcnRfZGlyLCBzZGtfZGlyLCB0YXJiYWxsX25hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5pc2ZpbGUodGFyYmFsbF9wYXRoKSwgVHJ1ZSwgIkNvdWxkbid0IGZpbmQgU0RLIHRhcmJhbGw6ICVzIiAlIHRhcmJhbGxfcGF0aCkKKworICAgICAgICAjIFJ1biBydW5leHBvcnRlZC5weQorICAgICAgICBydW5leHBvcnRlZF9wYXRoID0gb3MucGF0aC5qb2luKHRlc3RleHBvcnRfZGlyLCAicnVuZXhwb3J0ZWQucHkiKQorICAgICAgICB0ZXN0ZGF0YV9wYXRoID0gb3MucGF0aC5qb2luKHRlc3RleHBvcnRfZGlyLCAidGVzdGRhdGEuanNvbiIpCisgICAgICAgIGNtZCA9ICIlcyAlcyIgJSAocnVuZXhwb3J0ZWRfcGF0aCwgdGVzdGRhdGFfcGF0aCkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKGNtZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzLCAncnVuZXhwb3J0ZWQucHkgcmV0dXJuZWQgYSBub24gMCBzdGF0dXMnKQorCisKK2NsYXNzIFRlc3RJbWFnZShvZVNlbGZUZXN0KToKKworICAgIGRlZiB0ZXN0X3Rlc3RpbWFnZV9pbnN0YWxsKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgU3VtbWFyeTogQ2hlY2sgaW5zdGFsbCBwYWNrYWdlcyBmdW5jdGlvbmFsaXR5IGZvciB0ZXN0aW1hZ2UvdGVzdGV4cG9ydC4KKyAgICAgICAgRXhwZWN0ZWQ6IDEuIEltcG9ydCB0ZXN0cyBmcm9tIGEgZGlyZWN0b3J5IG90aGVyIHRoYW4gbWV0YS4KKyAgICAgICAgICAgICAgICAgIDIuIENoZWNrIGluc3RhbGwvdW5pc3RhbGwgb2Ygc29jYXQuCisgICAgICAgIFByb2R1Y3Q6IG9lLWNvcmUKKyAgICAgICAgQXV0aG9yOiBNYXJpYW5vIExvcGV6IDxtYXJpYW5vLmxvcGV6QGludGVsLmNvbT4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZmVhdHVyZXMgPSAnSU5IRVJJVCArPSAidGVzdGltYWdlIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnVEVTVF9TVUlURVMgPSAicGluZyBzc2ggc2VsZnRlc3QiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdURVNUX1NVSVRFU19UQUdTID0gInNlbGZ0ZXN0X3BhY2thZ2VfaW5zdGFsbCJcbicKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCisKKyAgICAgICAgIyBCdWlsZCBjb3JlLWltYWdlLXNhdG8gYW5kIHRlc3RpbWFnZQorICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLWZ1bGwtY21kbGluZSBzb2NhdCcpCisgICAgICAgIGJpdGJha2UoJy1jIHRlc3RpbWFnZSBjb3JlLWltYWdlLWZ1bGwtY21kbGluZScpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9zaWduaW5nLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvc2lnbmluZy5weQppbmRleCAxYmFiY2EwLi40YzEyZDZkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9zaWduaW5nLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L3NpZ25pbmcucHkKQEAgLTEyLDMwICsxMiwyMiBAQAogY2xhc3MgU2lnbmluZyhvZVNlbGZUZXN0KToKIAogICAgIGdwZ19kaXIgPSAiIgotICAgIHB1Yl9rZXlfbmFtZSA9ICdrZXkucHViJwotICAgIHNlY3JldF9rZXlfbmFtZSA9ICdrZXkuc2VjcmV0JworICAgIHB1Yl9rZXlfcGF0aCA9ICIiCisgICAgc2VjcmV0X2tleV9wYXRoID0gIiIKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKGNscyk6Ci0gICAgICAgICMgSW1wb3J0IHRoZSBncGcga2V5cworICAgICAgICAjIENoZWNrIHRoYXQgd2UgY2FuIGZpbmQgdGhlIGdwZyBiaW5hcnkgYW5kIGZhaWwgZWFybHkgaWYgd2UgY2FuJ3QKKyAgICAgICAgaWYgbm90IHNodXRpbC53aGljaCgiZ3BnIik6CisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigiVGhpcyB0ZXN0IG5lZWRzIEdudVBHIikKIAotICAgICAgICBjbHMuZ3BnX2RpciA9IG9zLnBhdGguam9pbihjbHMudGVzdGxheWVyX3BhdGgsICdmaWxlcy9zaWduaW5nLycpCisgICAgICAgIGNscy5ncGdfaG9tZV9kaXIgPSB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkocHJlZml4PSJvZXFhLXNpZ25pbmctIikKKyAgICAgICAgY2xzLmdwZ19kaXIgPSBjbHMuZ3BnX2hvbWVfZGlyLm5hbWUKIAotICAgICAgICAjIGtleS5zZWNyZXQga2V5LnB1YiBhcmUgbG9jYXRlZCBpbiBncGdfZGlyCi0gICAgICAgIHB1Yl9rZXlfbG9jYXRpb24gPSBjbHMuZ3BnX2RpciArIGNscy5wdWJfa2V5X25hbWUKLSAgICAgICAgc2VjcmV0X2tleV9sb2NhdGlvbiA9IGNscy5ncGdfZGlyICsgY2xzLnNlY3JldF9rZXlfbmFtZQotICAgICAgICBydW5DbWQoJ2dwZyAtLWhvbWVkaXIgJXMgLS1pbXBvcnQgJXMgJXMnICUgKGNscy5ncGdfZGlyLCBwdWJfa2V5X2xvY2F0aW9uLCBzZWNyZXRfa2V5X2xvY2F0aW9uKSkKKyAgICAgICAgY2xzLnB1Yl9rZXlfcGF0aCA9IG9zLnBhdGguam9pbihjbHMudGVzdGxheWVyX3BhdGgsICdmaWxlcycsICdzaWduaW5nJywgImtleS5wdWIiKQorICAgICAgICBjbHMuc2VjcmV0X2tleV9wYXRoID0gb3MucGF0aC5qb2luKGNscy50ZXN0bGF5ZXJfcGF0aCwgJ2ZpbGVzJywgJ3NpZ25pbmcnLCAia2V5LnNlY3JldCIpCiAKLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgotICAgICAgICAjIERlbGV0ZSB0aGUgZmlsZXMgZ2VuZXJhdGVkIGJ5ICdncGcgLS1pbXBvcnQnCi0KLSAgICAgICAgZ3BnX2ZpbGVzID0gZ2xvYi5nbG9iKGNscy5ncGdfZGlyICsgJyouZ3BnKicpCi0gICAgICAgIHJhbmRvbV9zZWVkX2ZpbGUgPSBjbHMuZ3BnX2RpciArICdyYW5kb21fc2VlZCcKLSAgICAgICAgZ3BnX2ZpbGVzLmFwcGVuZChyYW5kb21fc2VlZF9maWxlKQotCi0gICAgICAgIGZvciBncGdfZmlsZSBpbiBncGdfZmlsZXM6Ci0gICAgICAgICAgICBydW5DbWQoJ3JtIC1mICcgKyBncGdfZmlsZSkKKyAgICAgICAgcnVuQ21kKCdncGcgLS1ob21lZGlyICVzIC0taW1wb3J0ICVzICVzJyAlIChjbHMuZ3BnX2RpciwgY2xzLnB1Yl9rZXlfcGF0aCwgY2xzLnNlY3JldF9rZXlfcGF0aCkpCiAKICAgICBAdGVzdGNhc2UoMTM2MikKICAgICBkZWYgdGVzdF9zaWduaW5nX3BhY2thZ2VzKHNlbGYpOgpAQCAtNTcsNyArNDksNyBAQAogICAgICAgICBmZWF0dXJlID0gJ0lOSEVSSVQgKz0gInNpZ25fcnBtIlxuJwogICAgICAgICBmZWF0dXJlICs9ICdSUE1fR1BHX1BBU1NQSFJBU0UgPSAidGVzdDEyMyJcbicKICAgICAgICAgZmVhdHVyZSArPSAnUlBNX0dQR19OQU1FID0gInRlc3R1c2VyIlxuJwotICAgICAgICBmZWF0dXJlICs9ICdSUE1fR1BHX1BVQktFWSA9ICIlcyVzIlxuJyAlIChzZWxmLmdwZ19kaXIsIHNlbGYucHViX2tleV9uYW1lKQorICAgICAgICBmZWF0dXJlICs9ICdSUE1fR1BHX1BVQktFWSA9ICIlcyJcbicgJSBzZWxmLnB1Yl9rZXlfcGF0aAogICAgICAgICBmZWF0dXJlICs9ICdHUEdfUEFUSCA9ICIlcyJcbicgJSBzZWxmLmdwZ19kaXIKIAogICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlKQpAQCAtODEsOCArNzMsOCBAQAogICAgICAgICAjIFVzZSBhIHRlbXBvcmFyeSBycG1kYgogICAgICAgICBycG1kYiA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdvZXFhLXJwbWRiJykKIAotICAgICAgICBydW5DbWQoJyVzL3JwbSAtLWRlZmluZSAiX2RicGF0aCAlcyIgLS1pbXBvcnQgJXMlcycgJQotICAgICAgICAgICAgICAgKHN0YWdpbmdfYmluZGlyX25hdGl2ZSwgcnBtZGIsIHNlbGYuZ3BnX2Rpciwgc2VsZi5wdWJfa2V5X25hbWUpKQorICAgICAgICBydW5DbWQoJyVzL3JwbSAtLWRlZmluZSAiX2RicGF0aCAlcyIgLS1pbXBvcnQgJXMnICUKKyAgICAgICAgICAgICAgIChzdGFnaW5nX2JpbmRpcl9uYXRpdmUsIHJwbWRiLCBzZWxmLnB1Yl9rZXlfcGF0aCkpCiAKICAgICAgICAgcmV0ID0gcnVuQ21kKCclcy9ycG0gLS1kZWZpbmUgIl9kYnBhdGggJXMiIC0tY2hlY2tzaWcgJXMnICUKICAgICAgICAgICAgICAgICAgICAgIChzdGFnaW5nX2JpbmRpcl9uYXRpdmUsIHJwbWRiLCBwa2dfZGVwbG95KSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L3NzdGF0ZXRlc3RzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvc3N0YXRldGVzdHMucHkKaW5kZXggYWNhZjQwNS4uNjY0MjUzOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvc3N0YXRldGVzdHMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvc3N0YXRldGVzdHMucHkKQEAgLTIzNyw2ICsyMzcsNyBAQAogQlVJTERfQVJDSCA9ICJ4ODZfNjQiCiBCVUlMRF9PUyA9ICJsaW51eCIKIFNES01BQ0hJTkUgPSAieDg2XzY0IgorUEFDS0FHRV9DTEFTU0VTID0gInBhY2thZ2VfcnBtIHBhY2thZ2VfaXBrIHBhY2thZ2VfZGViIgogIiIiKQogICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoIikKICAgICAgICAgYml0YmFrZSgiY29yZS1pbWFnZS1zYXRvIC1TIG5vbmUiKQpAQCAtMjQ2LDYgKzI0Nyw3IEBACiBCVUlMRF9BUkNIID0gImk2ODYiCiBCVUlMRF9PUyA9ICJsaW51eCIKIFNES01BQ0hJTkUgPSAiaTY4NiIKK1BBQ0tBR0VfQ0xBU1NFUyA9ICJwYWNrYWdlX3JwbSBwYWNrYWdlX2lwayBwYWNrYWdlX2RlYiIKICIiIikKICAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaDIiKQogICAgICAgICBiaXRiYWtlKCJjb3JlLWltYWdlLXNhdG8gLVMgbm9uZSIpCkBAIC0yNjQsNyArMjY2LDcgQEAKICAgICAgICAgZmlsZXMyID0gZ2V0X2ZpbGVzKHRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoMi9zdGFtcHMvIikKICAgICAgICAgZmlsZXMyID0gW3gucmVwbGFjZSgidG1wLXNzdGF0ZXNhbWVoYXNoMiIsICJ0bXAtc3N0YXRlc2FtZWhhc2giKS5yZXBsYWNlKCJpNjg2LWxpbnV4IiwgIng4Nl82NC1saW51eCIpLnJlcGxhY2UoImk2ODYiICsgdGFyZ2V0dmVuZG9yICsgIi1saW51eCIsICJ4ODZfNjQiICsgdGFyZ2V0dmVuZG9yICsgIi1saW51eCIsICkgZm9yIHggaW4gZmlsZXMyXQogICAgICAgICBzZWxmLm1heERpZmYgPSBOb25lCi0gICAgICAgIHNlbGYuYXNzZXJ0SXRlbXNFcXVhbChmaWxlczEsIGZpbGVzMikKKyAgICAgICAgc2VsZi5hc3NlcnRDb3VudEVxdWFsKGZpbGVzMSwgZmlsZXMyKQogCiAKICAgICBAdGVzdGNhc2UoMTI3MSkKQEAgLTI5OCw3ICszMDAsNyBAQAogICAgICAgICBmaWxlczIgPSBnZXRfZmlsZXModG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gyL3N0YW1wcy8iKQogICAgICAgICBmaWxlczIgPSBbeC5yZXBsYWNlKCJ0bXAtc3N0YXRlc2FtZWhhc2gyIiwgInRtcC1zc3RhdGVzYW1laGFzaCIpIGZvciB4IGluIGZpbGVzMl0KICAgICAgICAgc2VsZi5tYXhEaWZmID0gTm9uZQotICAgICAgICBzZWxmLmFzc2VydEl0ZW1zRXF1YWwoZmlsZXMxLCBmaWxlczIpCisgICAgICAgIHNlbGYuYXNzZXJ0Q291bnRFcXVhbChmaWxlczEsIGZpbGVzMikKIAogICAgIEB0ZXN0Y2FzZSgxMzY4KQogICAgIGRlZiB0ZXN0X3NzdGF0ZV9hbGxhcmNoX3NhbWVzaWdzKHNlbGYpOgpAQCAtMzA5LDE5ICszMTEsNDggQEAKICAgICAgICAgdGhlIHR3byBNQUNISU5FIHZhbHVlcy4KICAgICAgICAgIiIiCiAKKyAgICAgICAgY29uZmlnQSA9ICIiIgorVE1QRElSID0gXCIke1RPUERJUn0vdG1wLXNzdGF0ZXNhbWVoYXNoXCIKK01BQ0hJTkUgPSBcInFlbXV4ODYtNjRcIgorIiIiCisgICAgICAgIGNvbmZpZ0IgPSAiIiIKK1RNUERJUiA9IFwiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaDJcIgorTUFDSElORSA9IFwicWVtdWFybVwiCisiIiIKKyAgICAgICAgc2VsZi5zc3RhdGVfYWxsYXJjaF9zYW1lc2lncyhjb25maWdBLCBjb25maWdCKQorCisgICAgZGVmIHRlc3Rfc3N0YXRlX2FsbGFyY2hfc2FtZXNpZ3NfbXVsdGlsaWIoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUaGUgc3N0YXRlIGNoZWNrc3VtcyBvZiBhbGxhcmNoIG11bHRpbGliIHBhY2thZ2VzIHNob3VsZCBiZSBpbmRlcGVuZGVudCBvZiB3aGljaGV2ZXIKKyAgICAgICAgTUFDSElORSBpcyBzZXQuIENoZWNrIHRoaXMgdXNpbmcgYml0YmFrZSAtUy4KKyAgICAgICAgQWxzbywgcmF0aGVyIHRoYW4gZHVwbGljYXRlIHRoZSB0ZXN0LCBjaGVjayBuYXRpdmVzZGsgc3RhbXBzIGFyZSB0aGUgc2FtZSBiZXR3ZWVuCisgICAgICAgIHRoZSB0d28gTUFDSElORSB2YWx1ZXMuCisgICAgICAgICIiIgorCisgICAgICAgIGNvbmZpZ0EgPSAiIiIKK1RNUERJUiA9IFwiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaFwiCitNQUNISU5FID0gXCJxZW11eDg2LTY0XCIKK3JlcXVpcmUgY29uZi9tdWx0aWxpYi5jb25mCitNVUxUSUxJQlMgPSBcIm11bHRpbGliOmxpYjMyXCIKK0RFRkFVTFRUVU5FX3ZpcnRjbGFzcy1tdWx0aWxpYi1saWIzMiA9IFwieDg2XCIKKyIiIgorICAgICAgICBjb25maWdCID0gIiIiCitUTVBESVIgPSBcIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2gyXCIKK01BQ0hJTkUgPSBcInFlbXVhcm1cIgorcmVxdWlyZSBjb25mL211bHRpbGliLmNvbmYKK01VTFRJTElCUyA9IFwiXCIKKyIiIgorICAgICAgICBzZWxmLnNzdGF0ZV9hbGxhcmNoX3NhbWVzaWdzKGNvbmZpZ0EsIGNvbmZpZ0IpCisKKyAgICBkZWYgc3N0YXRlX2FsbGFyY2hfc2FtZXNpZ3Moc2VsZiwgY29uZmlnQSwgY29uZmlnQik6CisKICAgICAgICAgdG9wZGlyID0gZ2V0X2JiX3ZhcignVE9QRElSJykKICAgICAgICAgdGFyZ2V0b3MgPSBnZXRfYmJfdmFyKCdUQVJHRVRfT1MnKQogICAgICAgICB0YXJnZXR2ZW5kb3IgPSBnZXRfYmJfdmFyKCdUQVJHRVRfVkVORE9SJykKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiCi1UTVBESVIgPSBcIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2hcIgotTUFDSElORSA9IFwicWVtdXg4NlwiCi0iIiIpCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGNvbmZpZ0EpCiAgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2giKQogICAgICAgICBiaXRiYWtlKCJ3b3JsZCBtZXRhLXRvb2xjaGFpbiAtUyBub25lIikKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiCi1UTVBESVIgPSBcIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2gyXCIKLU1BQ0hJTkUgPSBcInFlbXVhcm1cIgotIiIiKQorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhjb25maWdCKQogICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoMiIpCiAgICAgICAgIGJpdGJha2UoIndvcmxkIG1ldGEtdG9vbGNoYWluIC1TIG5vbmUiKQogCkBAIC0zOTMsNyArNDI0LDcgQEAKICAgICAgICAgZmlsZXMyID0gZ2V0X2ZpbGVzKHRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoMi9zdGFtcHMiKQogICAgICAgICBmaWxlczIgPSBbeC5yZXBsYWNlKCJ0bXAtc3N0YXRlc2FtZWhhc2gyIiwgInRtcC1zc3RhdGVzYW1laGFzaCIpIGZvciB4IGluIGZpbGVzMl0KICAgICAgICAgc2VsZi5tYXhEaWZmID0gTm9uZQotICAgICAgICBzZWxmLmFzc2VydEl0ZW1zRXF1YWwoZmlsZXMxLCBmaWxlczIpCisgICAgICAgIHNlbGYuYXNzZXJ0Q291bnRFcXVhbChmaWxlczEsIGZpbGVzMikKIAogCiAgICAgZGVmIHRlc3Rfc3N0YXRlX25vb3Bfc2FtZXNpZ3Moc2VsZik6CkBAIC00MTEsOSArNDQyLDExIEBACiBETF9ESVIgPSAiJHtUT1BESVJ9L2Rvd25sb2FkMSIKIFRJTUUgPSAiMTExMTExIgogREFURSA9ICIyMDE2MTExMSIKLUlOSEVSSVRfcmVtb3ZlID0gImJ1aWxkc3RhdHMtc3VtbWFyeSBidWlsZGhpc3RvcnkiCitJTkhFUklUX3JlbW92ZSA9ICJidWlsZHN0YXRzLXN1bW1hcnkgYnVpbGRoaXN0b3J5IHVuaW5hdGl2ZSIKK2h0dHBfcHJveHkgPSAiIgogIiIiKQogICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoIikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0b3BkaXIgKyAiL2Rvd25sb2FkMSIpCiAgICAgICAgIGJpdGJha2UoIndvcmxkIG1ldGEtdG9vbGNoYWluIC1TIG5vbmUiKQogICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiIiIKIFRNUERJUiA9ICIke1RPUERJUn0vdG1wLXNzdGF0ZXNhbWVoYXNoMiIKQEAgLTQyMiw5ICs0NTUsMTMgQEAKIERMX0RJUiA9ICIke1RPUERJUn0vZG93bmxvYWQyIgogVElNRSA9ICIyMjIyMjIiCiBEQVRFID0gIjIwMTYxMjEyIgorIyBBbHdheXMgcmVtb3ZlIHVuaW5hdGl2ZSBhcyB3ZSdyZSBjaGFuZ2luZyBwcm94aWVzCitJTkhFUklUX3JlbW92ZSA9ICJ1bmluYXRpdmUiCiBJTkhFUklUICs9ICJidWlsZHN0YXRzLXN1bW1hcnkgYnVpbGRoaXN0b3J5IgoraHR0cF9wcm94eSA9ICJodHRwOi8vZXhhbXBsZS5jb20vIgogIiIiKQogICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoMiIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodG9wZGlyICsgIi9kb3dubG9hZDIiKQogICAgICAgICBiaXRiYWtlKCJ3b3JsZCBtZXRhLXRvb2xjaGFpbiAtUyBub25lIikKIAogICAgICAgICBkZWYgZ2V0X2ZpbGVzKGQpOgpAQCAtNDM5LDIzICs0NzYsMjMgQEAKICAgICAgICAgZmlsZXMxID0gZ2V0X2ZpbGVzKHRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoL3N0YW1wcy8iKQogICAgICAgICBmaWxlczIgPSBnZXRfZmlsZXModG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gyL3N0YW1wcy8iKQogICAgICAgICAjIFJlbW92ZSBpdGVtcyB0aGF0IGFyZSBpZGVudGljYWwgaW4gYm90aCBzZXRzCi0gICAgICAgIGZvciBrLHYgaW4gZmlsZXMxLnZpZXdpdGVtcygpICYgZmlsZXMyLnZpZXdpdGVtcygpOgorICAgICAgICBmb3Igayx2IGluIGZpbGVzMS5pdGVtcygpICYgZmlsZXMyLml0ZW1zKCk6CiAgICAgICAgICAgICBkZWwgZmlsZXMxW2tdCiAgICAgICAgICAgICBkZWwgZmlsZXMyW2tdCiAgICAgICAgIGlmIG5vdCBmaWxlczEgYW5kIG5vdCBmaWxlczI6CiAgICAgICAgICAgICAjIE5vIGNoYW5nZXMsIHNvIHdlJ3JlIGRvbmUKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgIGZvciBrIGluIGZpbGVzMS52aWV3a2V5cygpIHwgZmlsZXMyLnZpZXdrZXlzKCk6CisgICAgICAgIGZvciBrIGluIGZpbGVzMS5rZXlzKCkgfCBmaWxlczIua2V5cygpOgogICAgICAgICAgICAgaWYgayBpbiBmaWxlczEgYW5kIGsgaW4gZmlsZXMyOgotICAgICAgICAgICAgICAgIHByaW50ICIlcyBkaWZmZXJzOiIgJSBrCi0gICAgICAgICAgICAgICAgcHJpbnQgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoKCJiaXRiYWtlLWRpZmZzaWdzIiwKKyAgICAgICAgICAgICAgICBwcmludCgiJXMgZGlmZmVyczoiICUgaykKKyAgICAgICAgICAgICAgICBwcmludChzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgoImJpdGJha2UtZGlmZnNpZ3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaC9zdGFtcHMvIiArIGsgKyAiLiIgKyBmaWxlczFba10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoMi9zdGFtcHMvIiArIGsgKyAiLiIgKyBmaWxlczJba10pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaDIvc3RhbXBzLyIgKyBrICsgIi4iICsgZmlsZXMyW2tdKSkpCiAgICAgICAgICAgICBlbGlmIGsgaW4gZmlsZXMxIGFuZCBrIG5vdCBpbiBmaWxlczI6Ci0gICAgICAgICAgICAgICAgcHJpbnQgIiVzIGluIGZpbGVzMSIgJSBrCisgICAgICAgICAgICAgICAgcHJpbnQoIiVzIGluIGZpbGVzMSIgJSBrKQogICAgICAgICAgICAgZWxpZiBrIG5vdCBpbiBmaWxlczEgYW5kIGsgaW4gZmlsZXMyOgotICAgICAgICAgICAgICAgIHByaW50ICIlcyBpbiBmaWxlczIiICUgaworICAgICAgICAgICAgICAgIHByaW50KCIlcyBpbiBmaWxlczIiICUgaykKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgYXNzZXJ0ICJzaG91bGRuJ3QgcmVhY2ggaGVyZSIKICAgICAgICAgc2VsZi5mYWlsKCJzc3RhdGUgaGFzaGVzIG5vdCBpZGVudGljYWwuIikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L3dpYy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L3dpYy5weQppbmRleCBhNTY5ZmJmLi5mYWFjMTFlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC93aWMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvd2ljLnB5CkBAIC00OSw3ICs0OSw3IEBACiAgICAgICAgICMgc2V0VXBDbGFzcyBiZWluZyB1bmF2YWlsYWJsZS4KICAgICAgICAgaWYgbm90IFdpYy5pbWFnZV9pc19yZWFkeToKICAgICAgICAgICAgIGJpdGJha2UoJ3N5c2xpbnV4IHN5c2xpbnV4LW5hdGl2ZSBwYXJ0ZWQtbmF0aXZlIGdwdGZkaXNrLW5hdGl2ZSAnCi0gICAgICAgICAgICAgICAgICAgICdkb3Nmc3Rvb2xzLW5hdGl2ZSBtdG9vbHMtbmF0aXZlJykKKyAgICAgICAgICAgICAgICAgICAgJ2Rvc2ZzdG9vbHMtbmF0aXZlIG10b29scy1uYXRpdmUgYm1hcC10b29scy1uYXRpdmUnKQogICAgICAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJykKICAgICAgICAgICAgIFdpYy5pbWFnZV9pc19yZWFkeSA9IFRydWUKIApAQCAtMjc2LDMgKzI3NiwyNiBAQAogICAgICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBxZW11LnJ1bl9zZXJpYWwoY29tbWFuZCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgc3RhdHVzLCAnRmFpbGVkIHRvIHJ1biBjb21tYW5kICIlcyI6ICVzJyAlIChjb21tYW5kLCBvdXRwdXQpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQsICcvZGV2L3Jvb3QgL1xyXG4vZGV2L3ZkYTMgL21udCcpCisKKyAgICBkZWYgdGVzdF9ibWFwKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGdlbmVyYXRpb24gb2YgLmJtYXAgZmlsZSIiIgorICAgICAgICBpbWFnZSA9ICJkaXJlY3RkaXNrIgorICAgICAgICBzdGF0dXMgPSBydW5DbWQoIndpYyBjcmVhdGUgJXMgLWUgY29yZS1pbWFnZS1taW5pbWFsIC0tYm1hcCIgJSBpbWFnZSkuc3RhdHVzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgc3RhdHVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIiVzLSpkaXJlY3QiICUgaW1hZ2UpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICIlcy0qZGlyZWN0LmJtYXAiICUgaW1hZ2UpKSkKKworICAgIGRlZiB0ZXN0X3N5c3RlbWRfYm9vdGRpc2soc2VsZik6CisgICAgICAgICIiIlRlc3QgY3JlYXRpb24gb2Ygc3lzdGVtZC1ib290ZGlzayBpbWFnZSIiIgorICAgICAgICBpbWFnZSA9ICJzeXN0ZW1kLWJvb3RkaXNrIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSAlcyAtZSBjb3JlLWltYWdlLW1pbmltYWwiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBpbWFnZSkuc3RhdHVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIiVzLSpkaXJlY3QiICUgaW1hZ2UpKSkKKworICAgIGRlZiB0ZXN0X3NkaW1hZ2VfYm9vdHBhcnQoc2VsZik6CisgICAgICAgICIiIlRlc3QgY3JlYXRpb24gb2Ygc2RpbWFnZS1ib290cGFydCBpbWFnZSIiIgorICAgICAgICBpbWFnZSA9ICJzZGltYWdlLWJvb3RwYXJ0IgorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygnSU1BR0VfQk9PVF9GSUxFUyA9ICJiekltYWdlIlxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgJXMgLWUgY29yZS1pbWFnZS1taW5pbWFsIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgaW1hZ2UpLnN0YXR1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICIlcy0qZGlyZWN0IiAlIGltYWdlKSkpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS90YXJnZXRjb250cm9sLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdGFyZ2V0Y29udHJvbC5weQppbmRleCA1NDIyYTYxLi4yNDY2OWY0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS90YXJnZXRjb250cm9sLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3RhcmdldGNvbnRyb2wucHkKQEAgLTQzLDkgKzQzLDcgQEAKICAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXIoZCkKIAogCi1jbGFzcyBCYXNlVGFyZ2V0KG9iamVjdCk6Ci0KLSAgICBfX21ldGFjbGFzc19fID0gQUJDTWV0YQorY2xhc3MgQmFzZVRhcmdldChvYmplY3QsIG1ldGFjbGFzcz1BQkNNZXRhKToKIAogICAgIHN1cHBvcnRlZF9pbWFnZV9mc3R5cGVzID0gW10KIApAQCAtNjgsNyArNjYsNyBAQAogICAgICAgICBiYi5ub3RlKCJTU0ggbG9nIGZpbGU6ICVzIiAlICBzZWxmLnNzaGxvZykKIAogICAgIEBhYnN0cmFjdG1ldGhvZAotICAgIGRlZiBzdGFydChzZWxmLCBwYXJhbXM9Tm9uZSwgc3NoPVRydWUpOgorICAgIGRlZiBzdGFydChzZWxmLCBwYXJhbXM9Tm9uZSwgc3NoPVRydWUsIGV4dHJhX2Jvb3RwYXJhbXM9Tm9uZSk6CiAgICAgICAgIHBhc3MKIAogICAgIEBhYnN0cmFjdG1ldGhvZApAQCAtMTIxLDEyICsxMTksMTcgQEAKIAogICAgICAgICBzZWxmLmltYWdlX2ZzdHlwZSA9IHNlbGYuZ2V0X2ltYWdlX2ZzdHlwZShkKQogICAgICAgICBzZWxmLnFlbXVsb2cgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZXN0ZGlyLCAicWVtdV9ib290X2xvZy4lcyIgJSBzZWxmLmRhdGV0aW1lKQotICAgICAgICBzZWxmLm9yaWdyb290ZnMgPSBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoIkRFUExPWV9ESVJfSU1BR0UiLCBUcnVlKSwgIGQuZ2V0VmFyKCJJTUFHRV9MSU5LX05BTUUiLCBUcnVlKSArICcuJyArIHNlbGYuaW1hZ2VfZnN0eXBlKQotICAgICAgICBzZWxmLnJvb3RmcyA9IG9zLnBhdGguam9pbihzZWxmLnRlc3RkaXIsIGQuZ2V0VmFyKCJJTUFHRV9MSU5LX05BTUUiLCBUcnVlKSArICctdGVzdGltYWdlLicgKyBzZWxmLmltYWdlX2ZzdHlwZSkKKyAgICAgICAgc2VsZi5yb290ZnMgPSBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoIkRFUExPWV9ESVJfSU1BR0UiLCBUcnVlKSwgIGQuZ2V0VmFyKCJJTUFHRV9MSU5LX05BTUUiLCBUcnVlKSArICcuJyArIHNlbGYuaW1hZ2VfZnN0eXBlKQogICAgICAgICBzZWxmLmtlcm5lbCA9IG9zLnBhdGguam9pbihkLmdldFZhcigiREVQTE9ZX0RJUl9JTUFHRSIsIFRydWUpLCBkLmdldFZhcigiS0VSTkVMX0lNQUdFVFlQRSIsIEZhbHNlKSArICctJyArIGQuZ2V0VmFyKCdNQUNISU5FJywgRmFsc2UpICsgJy5iaW4nKQogICAgICAgICBkdW1wX3RhcmdldF9jbWRzID0gZC5nZXRWYXIoInRlc3RpbWFnZV9kdW1wX3RhcmdldCIsIFRydWUpCiAgICAgICAgIGR1bXBfaG9zdF9jbWRzID0gZC5nZXRWYXIoInRlc3RpbWFnZV9kdW1wX2hvc3QiLCBUcnVlKQogICAgICAgICBkdW1wX2RpciA9IGQuZ2V0VmFyKCJURVNUSU1BR0VfRFVNUF9ESVIiLCBUcnVlKQorICAgICAgICBpZiBkLmdldFZhcigiUUVNVV9VU0VfS1ZNIiwgRmFsc2UpIGlzIG5vdCBOb25lIFwKKyAgICAgICAgICAgYW5kIGQuZ2V0VmFyKCJRRU1VX1VTRV9LVk0iLCBGYWxzZSkgPT0gIlRydWUiIFwKKyAgICAgICAgICAgYW5kICJ4ODYiIGluIGQuZ2V0VmFyKCJNQUNISU5FIiwgVHJ1ZSk6CisgICAgICAgICAgICB1c2Vfa3ZtID0gVHJ1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdXNlX2t2bSA9IEZhbHNlCiAKICAgICAgICAgIyBMb2cgUWVtdVJ1bm5lciBsb2cgb3V0cHV0IHRvIGEgZmlsZQogICAgICAgICBpbXBvcnQgb2UucGF0aApAQCAtMTU1LDE3ICsxNTgsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5ID0gZC5nZXRWYXIoIkJCX09SSUdFTlYiLCBGYWxzZSkuZ2V0VmFyKCJESVNQTEFZIiwgVHJ1ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZmlsZSA9IHNlbGYucWVtdWxvZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib290dGltZSA9IGludChkLmdldFZhcigiVEVTVF9RRU1VQk9PVF9USU1FT1VUIiwgVHJ1ZSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9rdm0gPSB1c2Vfa3ZtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1bXBfZGlyID0gZHVtcF9kaXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVtcF9ob3N0X2NtZHMgPSBkLmdldFZhcigidGVzdGltYWdlX2R1bXBfaG9zdCIsIFRydWUpKQogCiAgICAgICAgIHNlbGYudGFyZ2V0X2R1bXBlciA9IFRhcmdldER1bXBlcihkdW1wX3RhcmdldF9jbWRzLCBkdW1wX2Rpciwgc2VsZi5ydW5uZXIpCiAKICAgICBkZWYgZGVwbG95KHNlbGYpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoc2VsZi50ZXN0ZGlyKQotICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNlbGYub3JpZ3Jvb3Rmcywgc2VsZi5yb290ZnMpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIGJiLmZhdGFsKCJFcnJvciBjb3B5aW5nIHJvb3RmczogJXMiICUgZSkKKyAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHNlbGYudGVzdGRpcikKIAogICAgICAgICBxZW11bG9nbGluayA9IG9zLnBhdGguam9pbihzZWxmLnRlc3RkaXIsICJxZW11X2Jvb3RfbG9nIikKICAgICAgICAgaWYgb3MucGF0aC5pc2xpbmsocWVtdWxvZ2xpbmspOgpAQCAtMTc2LDggKzE3Niw4IEBACiAgICAgICAgIGJiLm5vdGUoIlFlbXUgbG9nIGZpbGU6ICVzIiAlIHNlbGYucWVtdWxvZykKICAgICAgICAgc3VwZXIoUWVtdVRhcmdldCwgc2VsZikuZGVwbG95KCkKIAotICAgIGRlZiBzdGFydChzZWxmLCBwYXJhbXM9Tm9uZSwgc3NoPVRydWUpOgotICAgICAgICBpZiBzZWxmLnJ1bm5lci5zdGFydChwYXJhbXMsIGdldF9pcD1zc2gpOgorICAgIGRlZiBzdGFydChzZWxmLCBwYXJhbXM9Tm9uZSwgc3NoPVRydWUsIGV4dHJhX2Jvb3RwYXJhbXM9Tm9uZSk6CisgICAgICAgIGlmIHNlbGYucnVubmVyLnN0YXJ0KHBhcmFtcywgZ2V0X2lwPXNzaCwgZXh0cmFfYm9vdHBhcmFtcz1leHRyYV9ib290cGFyYW1zKToKICAgICAgICAgICAgIGlmIHNzaDoKICAgICAgICAgICAgICAgICBzZWxmLmlwID0gc2VsZi5ydW5uZXIuaXAKICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9pcCA9IHNlbGYucnVubmVyLnNlcnZlcl9pcApAQCAtMjMyLDcgKzIzMiw3IEBACiAgICAgZGVmIGRlcGxveShzZWxmKToKICAgICAgICAgc3VwZXIoU2ltcGxlUmVtb3RlVGFyZ2V0LCBzZWxmKS5kZXBsb3koKQogCi0gICAgZGVmIHN0YXJ0KHNlbGYsIHBhcmFtcz1Ob25lLCBzc2g9VHJ1ZSk6CisgICAgZGVmIHN0YXJ0KHNlbGYsIHBhcmFtcz1Ob25lLCBzc2g9VHJ1ZSwgZXh0cmFfYm9vdHBhcmFtcz1Ob25lKToKICAgICAgICAgaWYgc3NoOgogICAgICAgICAgICAgc2VsZi5jb25uZWN0aW9uID0gU1NIQ29udHJvbChzZWxmLmlwLCBsb2dmaWxlPXNlbGYuc3NobG9nLCBwb3J0PXNlbGYucG9ydCkKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvY29tbWFuZHMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9jb21tYW5kcy5weQppbmRleCA0OGY2NDQxLi41Y2QwZjc0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9jb21tYW5kcy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9jb21tYW5kcy5weQpAQCAtNDEsNyArNDEsNyBAQAogICAgICAgICBzZWxmLmRhdGEgPSBkYXRhCiAKICAgICAgICAgc2VsZi5vcHRpb25zID0gZGljdChzZWxmLmRlZmF1bHRvcHRzKQotICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYuY21kLCBiYXNlc3RyaW5nKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLmNtZCwgc3RyKToKICAgICAgICAgICAgIHNlbGYub3B0aW9uc1sic2hlbGwiXSA9IFRydWUKICAgICAgICAgaWYgc2VsZi5kYXRhOgogICAgICAgICAgICAgc2VsZi5vcHRpb25zWydzdGRpbiddID0gc3VicHJvY2Vzcy5QSVBFCkBAIC03OCw3ICs3OCwxMCBAQAogICAgICAgICAgICAgICAgIHNlbGYucHJvY2Vzcy5raWxsKCkKICAgICAgICAgICAgICAgICBzZWxmLnRocmVhZC5qb2luKCkKIAotICAgICAgICBzZWxmLm91dHB1dCA9IHNlbGYub3V0cHV0LnJzdHJpcCgpCisgICAgICAgIGlmIG5vdCBzZWxmLm91dHB1dDoKKyAgICAgICAgICAgIHNlbGYub3V0cHV0ID0gIiIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYub3V0cHV0ID0gc2VsZi5vdXRwdXQuZGVjb2RlKCJ1dGYtOCIsIGVycm9ycz0ncmVwbGFjZScpLnJzdHJpcCgpCiAgICAgICAgIHNlbGYuc3RhdHVzID0gc2VsZi5wcm9jZXNzLnBvbGwoKQogCiAgICAgICAgIHNlbGYubG9nLmRlYnVnKCJDb21tYW5kICclcycgcmV0dXJuZWQgJWQgYXMgZXhpdCBjb2RlLiIgJSAoc2VsZi5jbWQsIHNlbGYuc3RhdHVzKSkKQEAgLTEwMyw2ICsxMDYsNyBAQAogICAgIHJlc3VsdC5jb21tYW5kID0gY29tbWFuZAogICAgIHJlc3VsdC5zdGF0dXMgPSBjbWQuc3RhdHVzCiAgICAgcmVzdWx0Lm91dHB1dCA9IGNtZC5vdXRwdXQKKyAgICByZXN1bHQuZXJyb3IgPSBjbWQuZXJyb3IKICAgICByZXN1bHQucGlkID0gY21kLnByb2Nlc3MucGlkCiAKICAgICBpZiByZXN1bHQuc3RhdHVzIGFuZCBub3QgaWdub3JlX3N0YXR1czoKQEAgLTEyMyw3ICsxMjcsNyBAQAogICAgIGVsc2U6CiAgICAgICAgIGV4dHJhX2FyZ3MgPSAiIgogCi0gICAgaWYgaXNpbnN0YW5jZShjb21tYW5kLCBiYXNlc3RyaW5nKToKKyAgICBpZiBpc2luc3RhbmNlKGNvbW1hbmQsIHN0cik6CiAgICAgICAgIGNtZCA9ICJiaXRiYWtlICIgKyBleHRyYV9hcmdzICsgIiAiICsgY29tbWFuZAogICAgIGVsc2U6CiAgICAgICAgIGNtZCA9IFsgImJpdGJha2UiIF0gKyBbYSBmb3IgYSBpbiAoY29tbWFuZCArIGV4dHJhX2FyZ3Muc3BsaXQoIiAiKSkgaWYgYSBub3QgaW4gWyIiXV0KQEAgLTE0MSwyMiArMTQ1LDQ1IEBACiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuIGJpdGJha2UoIi1lIiwgcG9zdGNvbmZpZz1wb3N0Y29uZmlnKS5vdXRwdXQKIAotZGVmIGdldF9iYl92YXIodmFyLCB0YXJnZXQ9Tm9uZSwgcG9zdGNvbmZpZz1Ob25lKToKLSAgICB2YWwgPSBOb25lCitkZWYgZ2V0X2JiX3ZhcnModmFyaWFibGVzPU5vbmUsIHRhcmdldD1Ob25lLCBwb3N0Y29uZmlnPU5vbmUpOgorICAgICIiIkdldCB2YWx1ZXMgb2YgbXVsdGlwbGUgYml0YmFrZSB2YXJpYWJsZXMiIiIKICAgICBiYmVudiA9IGdldF9iYl9lbnYodGFyZ2V0LCBwb3N0Y29uZmlnPXBvc3Rjb25maWcpCisKKyAgICB2YXJfcmUgPSByZS5jb21waWxlKHInXihleHBvcnQgKT8oP1A8dmFyPlx3Kyk9Iig/UDx2YWx1ZT4uKikiJCcpCisgICAgdW5zZXRfcmUgPSByZS5jb21waWxlKHInXnVuc2V0ICg/UDx2YXI+XHcrKSQnKQogICAgIGxhc3RsaW5lID0gTm9uZQorICAgIHZhbHVlcyA9IHt9CiAgICAgZm9yIGxpbmUgaW4gYmJlbnYuc3BsaXRsaW5lcygpOgotICAgICAgICBpZiByZS5zZWFyY2goIl4oZXhwb3J0ICk/JXM9IiAlIHZhciwgbGluZSk6Ci0gICAgICAgICAgICB2YWwgPSBsaW5lLnNwbGl0KCc9JywgMSlbMV0KLSAgICAgICAgICAgIHZhbCA9IHZhbC5zdHJpcCgnXCInKQotICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgZWxpZiByZS5tYXRjaCgidW5zZXQgJXMkIiAlIHZhciwgbGluZSk6Ci0gICAgICAgICAgICAjIEhhbmRsZSBbdW5leHBvcnRdIHZhcmlhYmxlcwotICAgICAgICAgICAgaWYgbGFzdGxpbmUuc3RhcnRzd2l0aCgnIyAgICInKToKLSAgICAgICAgICAgICAgICB2YWwgPSBsYXN0bGluZS5zcGxpdCgnXCInKVsxXQotICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIG1hdGNoID0gdmFyX3JlLm1hdGNoKGxpbmUpCisgICAgICAgIHZhbCA9IE5vbmUKKyAgICAgICAgaWYgbWF0Y2g6CisgICAgICAgICAgICB2YWwgPSBtYXRjaC5ncm91cCgndmFsdWUnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbWF0Y2ggPSB1bnNldF9yZS5tYXRjaChsaW5lKQorICAgICAgICAgICAgaWYgbWF0Y2g6CisgICAgICAgICAgICAgICAgIyBIYW5kbGUgW3VuZXhwb3J0XSB2YXJpYWJsZXMKKyAgICAgICAgICAgICAgICBpZiBsYXN0bGluZS5zdGFydHN3aXRoKCcjICAgIicpOgorICAgICAgICAgICAgICAgICAgICB2YWwgPSBsYXN0bGluZS5zcGxpdCgnIicpWzFdCisgICAgICAgIGlmIHZhbDoKKyAgICAgICAgICAgIHZhciA9IG1hdGNoLmdyb3VwKCd2YXInKQorICAgICAgICAgICAgaWYgdmFyaWFibGVzIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgdmFsdWVzW3Zhcl0gPSB2YWwKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaWYgdmFyIGluIHZhcmlhYmxlczoKKyAgICAgICAgICAgICAgICAgICAgdmFsdWVzW3Zhcl0gPSB2YWwKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLnJlbW92ZSh2YXIpCisgICAgICAgICAgICAgICAgIyBTdG9wIGFmdGVyIGFsbCByZXF1aXJlZCB2YXJpYWJsZXMgaGF2ZSBiZWVuIGZvdW5kCisgICAgICAgICAgICAgICAgaWYgbm90IHZhcmlhYmxlczoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgbGFzdGxpbmUgPSBsaW5lCi0gICAgcmV0dXJuIHZhbAorICAgIGlmIHZhcmlhYmxlczoKKyAgICAgICAgIyBGaWxsIGluIG1pc3NpbmcgdmFsdWVzCisgICAgICAgIGZvciB2YXIgaW4gdmFyaWFibGVzOgorICAgICAgICAgICAgdmFsdWVzW3Zhcl0gPSBOb25lCisgICAgcmV0dXJuIHZhbHVlcworCitkZWYgZ2V0X2JiX3Zhcih2YXIsIHRhcmdldD1Ob25lLCBwb3N0Y29uZmlnPU5vbmUpOgorICAgIHJldHVybiBnZXRfYmJfdmFycyhbdmFyXSwgdGFyZ2V0LCBwb3N0Y29uZmlnKVt2YXJdCiAKIGRlZiBnZXRfdGVzdF9sYXllcigpOgogICAgIGxheWVycyA9IGdldF9iYl92YXIoIkJCTEFZRVJTIikuc3BsaXQoKQpAQCAtMTk2LDcgKzIyMyw3IEBACiAgICAgICAgIHRpbmZvaWwuY29uZmlnX2RhdGEuc2V0VmFyKCJURVNUX1FFTVVCT09UX1RJTUVPVVQiLCAiMTAwMCIpCiAgICAgICAgIGltcG9ydCBvZS5yZWNpcGV1dGlscwogICAgICAgICByZWNpcGVmaWxlID0gb2UucmVjaXBldXRpbHMucG5fdG9fcmVjaXBlKHRpbmZvaWwuY29va2VyLCBwbikKLSAgICAgICAgcmVjaXBlZGF0YSA9IG9lLnJlY2lwZXV0aWxzLnBhcnNlX3JlY2lwZShyZWNpcGVmaWxlLCBbXSwgdGluZm9pbC5jb25maWdfZGF0YSkKKyAgICAgICAgcmVjaXBlZGF0YSA9IG9lLnJlY2lwZXV0aWxzLnBhcnNlX3JlY2lwZSh0aW5mb2lsLmNvb2tlciwgcmVjaXBlZmlsZSwgW10pCiAKICAgICAgICAgIyBUaGUgUWVtdVJ1bm5lciBsb2cgaXMgc2F2ZWQgb3V0LCBidXQgd2UgbmVlZCB0byBlbnN1cmUgaXQgaXMgYXQgdGhlIHJpZ2h0CiAgICAgICAgICMgbG9nIGxldmVsIChhbmQgdGhlbiBlbnN1cmUgdGhhdCBzaW5jZSBpdCdzIGEgY2hpbGQgb2YgdGhlIEJpdEJha2UgbG9nZ2VyLApAQCAtMjM3LDMgKzI2NCwxNSBAQAogICAgICAgICAgICAgcWVtdS5zdG9wKCkKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgcGFzcworCitkZWYgdXBkYXRlRW52KGVudl9maWxlKToKKyAgICAiIiIKKyAgICBTb3VyY2UgYSBmaWxlIGFuZCB1cGRhdGUgZW52aXJvbm1lbnQuCisgICAgIiIiCisKKyAgICBjbWQgPSAiLiAlczsgZW52IC0wIiAlIGVudl9maWxlCisgICAgcmVzdWx0ID0gcnVuQ21kKGNtZCkKKworICAgIGZvciBsaW5lIGluIHJlc3VsdC5vdXRwdXQuc3BsaXQoIlwwIik6CisgICAgICAgIChrZXksIF8sIHZhbHVlKSA9IGxpbmUucGFydGl0aW9uKCI9IikKKyAgICAgICAgb3MuZW52aXJvbltrZXldID0gdmFsdWUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2RlY29yYXRvcnMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9kZWNvcmF0b3JzLnB5CmluZGV4IDBkNzkyMjMuLjI1ZjljNTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2RlY29yYXRvcnMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvZGVjb3JhdG9ycy5weQpAQCAtNTcsNiArNTcsNyBAQAogICAgICAgICBzZWxmLnRlc3RjYXNlID0gdGVzdGNhc2UKIAogICAgIGRlZiBfX2NhbGxfXyhzZWxmLGYpOgorICAgICAgICBAd3JhcHMoZikKICAgICAgICAgZGVmIHdyYXBwZWRfZigqYXJncywgKiprd2FyZ3MpOgogICAgICAgICAgICAgcmVzID0gZ2V0UmVzdWx0cygpCiAgICAgICAgICAgICBpZiBzZWxmLnRlc3RjYXNlIGluIChyZXMuZ2V0RmFpbExpc3QoKSBvciByZXMuZ2V0RXJyb3JMaXN0KCkpOgpAQCAtNzEsNiArNzIsNyBAQAogICAgICAgICBzZWxmLnRlc3RjYXNlID0gdGVzdGNhc2UKIAogICAgIGRlZiBfX2NhbGxfXyhzZWxmLGYpOgorICAgICAgICBAd3JhcHMoZikKICAgICAgICAgZGVmIHdyYXBwZWRfZigqYXJncywgKiprd2FyZ3MpOgogICAgICAgICAgICAgcmVzID0gZ2V0UmVzdWx0cygpCiAgICAgICAgICAgICBpZiBzZWxmLnRlc3RjYXNlIGluIHJlcy5nZXRTa2lwTGlzdCgpOgpAQCAtODUsNiArODcsNyBAQAogICAgICAgICBzZWxmLnRlc3RjYXNlID0gdGVzdGNhc2UKIAogICAgIGRlZiBfX2NhbGxfXyhzZWxmLGYpOgorICAgICAgICBAd3JhcHMoZikKICAgICAgICAgZGVmIHdyYXBwZWRfZigqYXJncywgKiprd2FyZ3MpOgogICAgICAgICAgICAgcmVzID0gZ2V0UmVzdWx0cygpCiAgICAgICAgICAgICBpZiBzZWxmLnRlc3RjYXNlIGluIHJlcy5nZXRTa2lwTGlzdCgpIG9yIFwKQEAgLTk3LDExICsxMDAsMTEgQEAKICAgICAgICAgcmV0dXJuIHdyYXBwZWRfZgogCiBjbGFzcyB0ZXN0Y2FzZShvYmplY3QpOgotCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RfY2FzZSk6CiAgICAgICAgIHNlbGYudGVzdF9jYXNlID0gdGVzdF9jYXNlCiAKICAgICBkZWYgX19jYWxsX18oc2VsZiwgZnVuYyk6CisgICAgICAgIEB3cmFwcyhmdW5jKQogICAgICAgICBkZWYgd3JhcHBlZF9mKCphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICAgICByZXR1cm4gZnVuYygqYXJncywgKiprd2FyZ3MpCiAgICAgICAgIHdyYXBwZWRfZi50ZXN0X2Nhc2UgPSBzZWxmLnRlc3RfY2FzZQpAQCAtMTEyLDYgKzExNSw4IEBACiAgICAgZGVmIGZpbHRlcihzZWxmLCByZWNvcmQpOgogICAgICAgICByZXR1cm4gcmVjb3JkLmxldmVsbm8gPT0gMTAwCiAKK2ltcG9ydCBpbnNwZWN0CisKIGRlZiBMb2dSZXN1bHRzKG9yaWdpbmFsX2NsYXNzKToKICAgICBvcmlnX21ldGhvZCA9IG9yaWdpbmFsX2NsYXNzLnJ1bgogCkBAIC0xMjEsNiArMTI2LDE5IEBACiAgICAgbG9nZmlsZSA9IG9zLnBhdGguam9pbihvcy5nZXRjd2QoKSwncmVzdWx0cy0nK2NhbGxlcisnLicrdGltZXN0YW1wKycubG9nJykKICAgICBsaW5rZmlsZSA9IG9zLnBhdGguam9pbihvcy5nZXRjd2QoKSwncmVzdWx0cy0nK2NhbGxlcisnLmxvZycpCiAKKyAgICBkZWYgZ2V0X2NsYXNzX3RoYXRfZGVmaW5lZF9tZXRob2QobWV0aCk6CisgICAgICAgIGlmIGluc3BlY3QuaXNtZXRob2QobWV0aCk6CisgICAgICAgICAgICBmb3IgY2xzIGluIGluc3BlY3QuZ2V0bXJvKG1ldGguX19zZWxmX18uX19jbGFzc19fKToKKyAgICAgICAgICAgICAgIGlmIGNscy5fX2RpY3RfXy5nZXQobWV0aC5fX25hbWVfXykgaXMgbWV0aDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNscworICAgICAgICAgICAgbWV0aCA9IG1ldGguX19mdW5jX18gIyBmYWxsYmFjayB0byBfX3F1YWxuYW1lX18gcGFyc2luZworICAgICAgICBpZiBpbnNwZWN0LmlzZnVuY3Rpb24obWV0aCk6CisgICAgICAgICAgICBjbHMgPSBnZXRhdHRyKGluc3BlY3QuZ2V0bW9kdWxlKG1ldGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRoLl9fcXVhbG5hbWVfXy5zcGxpdCgnLjxsb2NhbHM+JywgMSlbMF0ucnNwbGl0KCcuJywgMSlbMF0pCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGNscywgdHlwZSk6CisgICAgICAgICAgICAgICByZXR1cm4gY2xzCisgICAgICAgIHJldHVybiBOb25lCisKICAgICAjcmV3cml0ZSB0aGUgcnVuIG1ldGhvZCBvZiB1bml0dGVzdC5UZXN0Q2FzZSB0byBhZGQgdGVzdGNhc2UgbG9nZ2luZwogICAgIGRlZiBydW4oc2VsZiwgcmVzdWx0LCAqYXJncywgKiprd3MpOgogICAgICAgICBvcmlnX21ldGhvZChzZWxmLCByZXN1bHQsICphcmdzLCAqKmt3cykKQEAgLTEzMiw3ICsxNTAsNyBAQAogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICB0ZXN0X2Nhc2UgPSBzZWxmLl90ZXN0TWV0aG9kTmFtZQogCi0gICAgICAgIGNsYXNzX25hbWUgPSBzdHIodGVzdE1ldGhvZC5pbV9jbGFzcykuc3BsaXQoIiciKVsxXQorICAgICAgICBjbGFzc19uYW1lID0gc3RyKGdldF9jbGFzc190aGF0X2RlZmluZWRfbWV0aG9kKHRlc3RNZXRob2QpKS5zcGxpdCgiJyIpWzFdCiAKICAgICAgICAgI2NyZWF0ZSBjdXN0b20gbG9nZ2luZyBsZXZlbCBmb3IgZmlsdGVyaW5nLgogICAgICAgICBjdXN0b21fbG9nX2xldmVsID0gMTAwCkBAIC0xNzEsMTAgKzE4OSwyNCBAQAogICAgICAgICBpZiBwYXNzZWQ6CiAgICAgICAgICAgICBsb2NhbF9sb2cucmVzdWx0cygiVGVzdGNhc2UgIitzdHIodGVzdF9jYXNlKSsiOiBQQVNTRUQiKQogCisgICAgICAgICMgWFhYOiBJbiBvcmRlciB0byBhdm9pZCByYWNlIGNvbmRpdGlvbiB3aGVuIHRlc3QgaWYgZXhpc3RzIHRoZSBsaW5rZmlsZQorICAgICAgICAjIHVzZSBiYi51dGlscy5sb2NrLCB0aGUgYmVzdCBzb2x1dGlvbiBpcyB0byBjcmVhdGUgYSB1bmlxdWUgbmFtZSBmb3IgdGhlCisgICAgICAgICMgbGluayBmaWxlLgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgYmIKKyAgICAgICAgICAgIGhhc19iYiA9IFRydWUKKyAgICAgICAgICAgIGxvY2tmaWxlbmFtZSA9IGxpbmtmaWxlICsgJy5sb2NrJworICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICBoYXNfYmIgPSBGYWxzZQorCisgICAgICAgIGlmIGhhc19iYjoKKyAgICAgICAgICAgIGxmID0gYmIudXRpbHMubG9ja2ZpbGUobG9ja2ZpbGVuYW1lLCBibG9jaz1UcnVlKQogICAgICAgICAjIENyZWF0ZSBzeW1saW5rIHRvIHRoZSBjdXJyZW50IGxvZwotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhsaW5rZmlsZSk6CisgICAgICAgIGlmIG9zLnBhdGgubGV4aXN0cyhsaW5rZmlsZSk6CiAgICAgICAgICAgICBvcy5yZW1vdmUobGlua2ZpbGUpCiAgICAgICAgIG9zLnN5bWxpbmsobG9nZmlsZSwgbGlua2ZpbGUpCisgICAgICAgIGlmIGhhc19iYjoKKyAgICAgICAgICAgIGJiLnV0aWxzLnVubG9ja2ZpbGUobGYpCiAKICAgICBvcmlnaW5hbF9jbGFzcy5ydW4gPSBydW4KIApAQCAtMjEyLDcgKzI0NCw3IEBACiAgICAgZGVmIHdyYXBfb2Iob2IpOgogICAgICAgICBmb3IgbmFtZSBpbiBhcmdzOgogICAgICAgICAgICAgc2V0YXR0cihvYiwgX190YWdfcHJlZml4ICsgbmFtZSwgVHJ1ZSkKLSAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIGt3YXJncy5pdGVyaXRlbXMoKToKKyAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIGt3YXJncy5pdGVtcygpOgogICAgICAgICAgICAgc2V0YXR0cihvYiwgX190YWdfcHJlZml4ICsgbmFtZSwgdmFsdWUpCiAgICAgICAgIHJldHVybiBvYgogICAgIHJldHVybiB3cmFwX29iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9kdW1wLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvZHVtcC5weQppbmRleCA2M2E1OTFkLi43MTQyMmE5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9kdW1wLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2R1bXAucHkKQEAgLTMsNyArMyw3IEBACiBpbXBvcnQgZXJybm8KIGltcG9ydCBkYXRldGltZQogaW1wb3J0IGl0ZXJ0b29scwotZnJvbSBjb21tYW5kcyBpbXBvcnQgcnVuQ21kCitmcm9tIC5jb21tYW5kcyBpbXBvcnQgcnVuQ21kCiAKIGRlZiBnZXRfaG9zdF9kdW1wZXIoZCk6CiAgICAgY21kcyA9IGQuZ2V0VmFyKCJ0ZXN0aW1hZ2VfZHVtcF9ob3N0IiwgVHJ1ZSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2dpdC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2dpdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTg1ZDI3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvZ2l0LnB5CkBAIC0wLDAgKzEsNjggQEAKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDE2IEludGVsIENvcnBvcmF0aW9uCisjCisjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUKQorIworIiIiR2l0IHJlcG9zaXRvcnkgaW50ZXJhY3Rpb25zIiIiCitpbXBvcnQgb3MKKworZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQKKworCitjbGFzcyBHaXRFcnJvcihFeGNlcHRpb24pOgorICAgICIiIkdpdCBlcnJvciBoYW5kbGluZyIiIgorICAgIHBhc3MKKworY2xhc3MgR2l0UmVwbyhvYmplY3QpOgorICAgICIiIkNsYXNzIHJlcHJlc2VudGluZyBhIEdpdCByZXBvc2l0b3J5IGNsb25lIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgsIGlzX3RvcGRpcj1GYWxzZSk6CisgICAgICAgIHNlbGYudG9wX2RpciA9IHNlbGYuX3J1bl9naXRfY21kX2F0KFsncmV2LXBhcnNlJywgJy0tc2hvdy10b3BsZXZlbCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoKQorICAgICAgICByZWFscGF0aCA9IG9zLnBhdGgucmVhbHBhdGgocGF0aCkKKyAgICAgICAgaWYgaXNfdG9wZGlyIGFuZCByZWFscGF0aCAhPSBzZWxmLnRvcF9kaXI6CisgICAgICAgICAgICByYWlzZSBHaXRFcnJvcigie30gaXMgbm90IGEgR2l0IHRvcCBkaXJlY3RvcnkiLmZvcm1hdChyZWFscGF0aCkpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9ydW5fZ2l0X2NtZF9hdChnaXRfYXJncywgY3dkLCAqKmt3YXJncyk6CisgICAgICAgICIiIlJ1biBnaXQgY29tbWFuZCBhdCBhIHNwZWNpZmllZCBkaXJlY3RvcnkiIiIKKyAgICAgICAgZ2l0X2NtZCA9ICdnaXQgJyBpZiBpc2luc3RhbmNlKGdpdF9hcmdzLCBzdHIpIGVsc2UgWydnaXQnXQorICAgICAgICBnaXRfY21kICs9IGdpdF9hcmdzCisgICAgICAgIHJldCA9IHJ1bkNtZChnaXRfY21kLCBpZ25vcmVfc3RhdHVzPVRydWUsIGN3ZD1jd2QsICoqa3dhcmdzKQorICAgICAgICBpZiByZXQuc3RhdHVzOgorICAgICAgICAgICAgY21kX3N0ciA9IGdpdF9jbWQgaWYgaXNpbnN0YW5jZShnaXRfY21kLCBzdHIpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAnICcuam9pbihnaXRfY21kKQorICAgICAgICAgICAgcmFpc2UgR2l0RXJyb3IoIid7fScgZmFpbGVkIHdpdGggZXhpdCBjb2RlIHt9OiB7fSIuZm9ybWF0KAorICAgICAgICAgICAgICAgIGNtZF9zdHIsIHJldC5zdGF0dXMsIHJldC5vdXRwdXQpKQorICAgICAgICByZXR1cm4gcmV0Lm91dHB1dC5zdHJpcCgpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGluaXQocGF0aCk6CisgICAgICAgICIiIkluaXRpYWxpemUgYSBuZXcgR2l0IHJlcG9zaXRvcnkiIiIKKyAgICAgICAgR2l0UmVwby5fcnVuX2dpdF9jbWRfYXQoJ2luaXQnLCBjd2Q9cGF0aCkKKyAgICAgICAgcmV0dXJuIEdpdFJlcG8ocGF0aCwgaXNfdG9wZGlyPVRydWUpCisKKyAgICBkZWYgcnVuX2NtZChzZWxmLCBnaXRfYXJncywgZW52X3VwZGF0ZT1Ob25lKToKKyAgICAgICAgIiIiUnVuIEdpdCBjb21tYW5kIiIiCisgICAgICAgIGVudiA9IE5vbmUKKyAgICAgICAgaWYgZW52X3VwZGF0ZToKKyAgICAgICAgICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCisgICAgICAgICAgICBlbnYudXBkYXRlKGVudl91cGRhdGUpCisgICAgICAgIHJldHVybiBzZWxmLl9ydW5fZ2l0X2NtZF9hdChnaXRfYXJncywgc2VsZi50b3BfZGlyLCBlbnY9ZW52KQorCisgICAgZGVmIHJldl9wYXJzZShzZWxmLCByZXZpc2lvbik6CisgICAgICAgICIiIkRvIGdpdCByZXYtcGFyc2UiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYucnVuX2NtZChbJ3Jldi1wYXJzZScsIHJldmlzaW9uXSkKKyAgICAgICAgZXhjZXB0IEdpdEVycm9yOgorICAgICAgICAgICAgIyBSZXZpc2lvbiBkb2VzIG5vdCBleGlzdAorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBnZXRfY3VycmVudF9icmFuY2goc2VsZik6CisgICAgICAgICIiIkdldCBjdXJyZW50IGJyYW5jaCIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIFN0cmlwIDExIGNoYXJzLCBpLmUuICdyZWZzL2hlYWRzJyBmcm9tIHRoZSBiZWdpbm5pbmcKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnJ1bl9jbWQoWydzeW1ib2xpYy1yZWYnLCAnSEVBRCddKVsxMTpdCisgICAgICAgIGV4Y2VwdCBHaXRFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvaHR0cHNlcnZlci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2h0dHBzZXJ2ZXIucHkKaW5kZXggNzY1MThkOC4uN2QxMjMzMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvaHR0cHNlcnZlci5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9odHRwc2VydmVyLnB5CkBAIC0xLDggKzEsOSBAQAotaW1wb3J0IFNpbXBsZUhUVFBTZXJ2ZXIKK2ltcG9ydCBodHRwLnNlcnZlcgogaW1wb3J0IG11bHRpcHJvY2Vzc2luZwogaW1wb3J0IG9zCitmcm9tIHNvY2tldHNlcnZlciBpbXBvcnQgVGhyZWFkaW5nTWl4SW4KIAotY2xhc3MgSFRUUFNlcnZlcihTaW1wbGVIVFRQU2VydmVyLkJhc2VIVFRQU2VydmVyLkhUVFBTZXJ2ZXIpOgorY2xhc3MgSFRUUFNlcnZlcihUaHJlYWRpbmdNaXhJbiwgaHR0cC5zZXJ2ZXIuSFRUUFNlcnZlcik6CiAKICAgICBkZWYgc2VydmVyX3N0YXJ0KHNlbGYsIHJvb3RfZGlyKToKICAgICAgICAgaW1wb3J0IHNpZ25hbApAQCAtMTAsNyArMTEsNyBAQAogICAgICAgICBvcy5jaGRpcihyb290X2RpcikKICAgICAgICAgc2VsZi5zZXJ2ZV9mb3JldmVyKCkKIAotY2xhc3MgSFRUUFJlcXVlc3RIYW5kbGVyKFNpbXBsZUhUVFBTZXJ2ZXIuU2ltcGxlSFRUUFJlcXVlc3RIYW5kbGVyKToKK2NsYXNzIEhUVFBSZXF1ZXN0SGFuZGxlcihodHRwLnNlcnZlci5TaW1wbGVIVFRQUmVxdWVzdEhhbmRsZXIpOgogCiAgICAgZGVmIGxvZ19tZXNzYWdlKHNlbGYsIGZvcm1hdF9zdHIsICphcmdzKToKICAgICAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvbG9ncGFyc2VyLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvbG9ncGFyc2VyLnB5CmluZGV4IDg3YjUwMzUuLmIzNzdkY2QgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2xvZ3BhcnNlci5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9sb2dwYXJzZXIucHkKQEAgLTMsNyArMyw3IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCByZQotaW1wb3J0IGZ0b29scworZnJvbSAuIGltcG9ydCBmdG9vbHMKIAogCiAjIEEgcGFyc2VyIHRoYXQgY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkgd2VhdGhlciBhIGxpbmUgaXMgYSB0ZXN0IHJlc3VsdCBvciBhIHNlY3Rpb24gc3RhdGVtZW50LgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvcGFja2FnZV9tYW5hZ2VyLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvcGFja2FnZV9tYW5hZ2VyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5OWVjYzkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9wYWNrYWdlX21hbmFnZXIucHkKQEAgLTAsMCArMSwyOSBAQAorZGVmIGdldF9wYWNrYWdlX21hbmFnZXIoZCwgcm9vdF9wYXRoKToKKyAgICAiIiIKKyAgICBSZXR1cm5zIGFuIE9FIHBhY2thZ2UgbWFuYWdlciB0aGF0IGNhbiBpbnN0YWxsIHBhY2thZ2VzIGluIHJvb3RfcGF0aC4KKyAgICAiIiIKKyAgICBmcm9tIG9lLnBhY2thZ2VfbWFuYWdlciBpbXBvcnQgUnBtUE0sIE9wa2dQTSwgRHBrZ1BNCisKKyAgICBwa2dfY2xhc3MgPSBkLmdldFZhcigiSU1BR0VfUEtHVFlQRSIsIFRydWUpCisgICAgaWYgcGtnX2NsYXNzID09ICJycG0iOgorICAgICAgICBwbSA9IFJwbVBNKGQsCisgICAgICAgICAgICAgICAgICAgcm9vdF9wYXRoLAorICAgICAgICAgICAgICAgICAgIGQuZ2V0VmFyKCdUQVJHRVRfVkVORE9SJywgVHJ1ZSkpCisgICAgICAgIHBtLmNyZWF0ZV9jb25maWdzKCkKKworICAgIGVsaWYgcGtnX2NsYXNzID09ICJpcGsiOgorICAgICAgICBwbSA9IE9wa2dQTShkLAorICAgICAgICAgICAgICAgICAgICByb290X3BhdGgsCisgICAgICAgICAgICAgICAgICAgIGQuZ2V0VmFyKCJJUEtHQ09ORl9UQVJHRVQiLCBUcnVlKSwKKyAgICAgICAgICAgICAgICAgICAgZC5nZXRWYXIoIkFMTF9NVUxUSUxJQl9QQUNLQUdFX0FSQ0hTIiwgVHJ1ZSkpCisKKyAgICBlbGlmIHBrZ19jbGFzcyA9PSAiZGViIjoKKyAgICAgICAgcG0gPSBEcGtnUE0oZCwKKyAgICAgICAgICAgICAgICAgICAgcm9vdF9wYXRoLAorICAgICAgICAgICAgICAgICAgICBkLmdldFZhcignUEFDS0FHRV9BUkNIUycsIFRydWUpLAorICAgICAgICAgICAgICAgICAgICBkLmdldFZhcignRFBLR19BUkNIJywgVHJ1ZSkpCisKKyAgICBwbS53cml0ZV9pbmRleCgpCisgICAgcG0udXBkYXRlKCkKKworICAgIHJldHVybiBwbQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvcWVtdXJ1bm5lci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3FlbXVydW5uZXIucHkKaW5kZXggNzg0Y2Y5Ni4uOGYxYjViOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvcWVtdXJ1bm5lci5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9xZW11cnVubmVyLnB5CkBAIC0yMCwxNiArMjAsMTcgQEAKIAogaW1wb3J0IGxvZ2dpbmcKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJCaXRCYWtlLlFlbXVSdW5uZXIiKQorbG9nZ2VyLmFkZEhhbmRsZXIobG9nZ2luZy5TdHJlYW1IYW5kbGVyKCkpCiAKICMgR2V0IFVuaWNvZGUgbm9uIHByaW50YWJsZSBjb250cm9sIGNoYXJzCi1jb250cm9sX3JhbmdlID0gcmFuZ2UoMCwzMikrcmFuZ2UoMTI3LDE2MCkKLWNvbnRyb2xfY2hhcnMgPSBbdW5pY2hyKHgpIGZvciB4IGluIGNvbnRyb2xfcmFuZ2UKLSAgICAgICAgICAgICAgICBpZiB1bmljaHIoeCkgbm90IGluIHN0cmluZy5wcmludGFibGVdCitjb250cm9sX3JhbmdlID0gbGlzdChyYW5nZSgwLDMyKSkrbGlzdChyYW5nZSgxMjcsMTYwKSkKK2NvbnRyb2xfY2hhcnMgPSBbY2hyKHgpIGZvciB4IGluIGNvbnRyb2xfcmFuZ2UKKyAgICAgICAgICAgICAgICBpZiBjaHIoeCkgbm90IGluIHN0cmluZy5wcmludGFibGVdCiByZV9jb250cm9sX2NoYXIgPSByZS5jb21waWxlKCdbJXNdJyAlIHJlLmVzY2FwZSgiIi5qb2luKGNvbnRyb2xfY2hhcnMpKSkKIAogY2xhc3MgUWVtdVJ1bm5lcjoKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYWNoaW5lLCByb290ZnMsIGRpc3BsYXksIHRtcGRpciwgZGVwbG95X2Rpcl9pbWFnZSwgbG9nZmlsZSwgYm9vdHRpbWUsIGR1bXBfZGlyLCBkdW1wX2hvc3RfY21kcyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hY2hpbmUsIHJvb3RmcywgZGlzcGxheSwgdG1wZGlyLCBkZXBsb3lfZGlyX2ltYWdlLCBsb2dmaWxlLCBib290dGltZSwgZHVtcF9kaXIsIGR1bXBfaG9zdF9jbWRzLCB1c2Vfa3ZtKToKIAogICAgICAgICAjIFBvcGVuIG9iamVjdCBmb3IgcnVucWVtdQogICAgICAgICBzZWxmLnJ1bnFlbXUgPSBOb25lCkBAIC00OSw2ICs1MCw3IEBACiAgICAgICAgIHNlbGYuYm9vdHRpbWUgPSBib290dGltZQogICAgICAgICBzZWxmLmxvZ2dlZCA9IEZhbHNlCiAgICAgICAgIHNlbGYudGhyZWFkID0gTm9uZQorICAgICAgICBzZWxmLnVzZV9rdm0gPSB1c2Vfa3ZtCiAKICAgICAgICAgc2VsZi5ydW5xZW11dGltZSA9IDYwCiAgICAgICAgIHNlbGYuaG9zdF9kdW1wZXIgPSBIb3N0RHVtcGVyKGR1bXBfaG9zdF9jbWRzLCBkdW1wX2RpcikKQEAgLTcxLDcgKzczLDggQEAKICAgICAgICAgaWYgc2VsZi5sb2dmaWxlOgogICAgICAgICAgICAgIyBJdCBpcyBuZWVkZWQgdG8gc2FuaXRpemUgdGhlIGRhdGEgcmVjZWl2ZWQgZnJvbSBxZW11CiAgICAgICAgICAgICAjIGJlY2F1c2UgaXMgcG9zc2libGUgdG8gaGF2ZSBjb250cm9sIGNoYXJhY3RlcnMKLSAgICAgICAgICAgIG1zZyA9IHJlX2NvbnRyb2xfY2hhci5zdWIoJycsIHVuaWNvZGUobXNnLCAndXRmLTgnKSkKKyAgICAgICAgICAgIG1zZyA9IG1zZy5kZWNvZGUoInV0Zi04IikKKyAgICAgICAgICAgIG1zZyA9IHJlX2NvbnRyb2xfY2hhci5zdWIoJycsIG1zZykKICAgICAgICAgICAgIHdpdGggY29kZWNzLm9wZW4oc2VsZi5sb2dmaWxlLCAiYSIsIGVuY29kaW5nPSJ1dGYtOCIpIGFzIGY6CiAgICAgICAgICAgICAgICAgZi53cml0ZSgiJXMiICUgbXNnKQogCkBAIC03OSw3ICs4Miw3IEBACiAgICAgICAgIGltcG9ydCBmY250bAogICAgICAgICBmbCA9IGZjbnRsLmZjbnRsKG8sIGZjbnRsLkZfR0VURkwpCiAgICAgICAgIGZjbnRsLmZjbnRsKG8sIGZjbnRsLkZfU0VURkwsIGZsIHwgb3MuT19OT05CTE9DSykKLSAgICAgICAgcmV0dXJuIG9zLnJlYWQoby5maWxlbm8oKSwgMTAwMDAwMCkKKyAgICAgICAgcmV0dXJuIG9zLnJlYWQoby5maWxlbm8oKSwgMTAwMDAwMCkuZGVjb2RlKCJ1dGYtOCIpCiAKIAogICAgIGRlZiBoYW5kbGVTSUdDSExEKHNlbGYsIHNpZ251bSwgZnJhbWUpOgpAQCAtOTEsNyArOTQsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuX2R1bXBfaG9zdCgpCiAgICAgICAgICAgICAgICAgcmFpc2UgU3lzdGVtRXhpdAogCi0gICAgZGVmIHN0YXJ0KHNlbGYsIHFlbXVwYXJhbXMgPSBOb25lLCBnZXRfaXAgPSBUcnVlKToKKyAgICBkZWYgc3RhcnQoc2VsZiwgcWVtdXBhcmFtcyA9IE5vbmUsIGdldF9pcCA9IFRydWUsIGV4dHJhX2Jvb3RwYXJhbXMgPSBOb25lKToKICAgICAgICAgaWYgc2VsZi5kaXNwbGF5OgogICAgICAgICAgICAgb3MuZW52aXJvblsiRElTUExBWSJdID0gc2VsZi5kaXNwbGF5CiAgICAgICAgICAgICAjIFNldCB0aGlzIGZsYWcgc28gdGhhdCBRZW11IGRvZXNuJ3QgZG8gYW55IGdyYWJzIGFzIFNETCBncmFicwpAQCAtMTE0LDEyICsxMTcsMTYgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgdGhyZWFkc29jaywgdGhyZWFkcG9ydCA9IHNlbGYuY3JlYXRlX3NvY2tldCgpCiAgICAgICAgICAgICBzZWxmLnNlcnZlcl9zb2NrZXQsIHNlbGYuc2VydmVycG9ydCA9IHNlbGYuY3JlYXRlX3NvY2tldCgpCi0gICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IsIG1zZzoKKyAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBtc2c6CiAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkZhaWxlZCB0byBjcmVhdGUgbGlzdGVuaW5nIHNvY2tldDogJXMiICUgbXNnWzFdKQogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKIAotICAgICAgICBzZWxmLnFlbXVwYXJhbXMgPSAnYm9vdHBhcmFtcz0iY29uc29sZT10dHkxIGNvbnNvbGU9dHR5UzAsMTE1MjAwbjggcHJpbnRrLnRpbWU9MSIgcWVtdXBhcmFtcz0iLXNlcmlhbCB0Y3A6MTI3LjAuMC4xOnt9IicuZm9ybWF0KHRocmVhZHBvcnQpCisgICAgICAgIGJvb3RwYXJhbXMgPSAnY29uc29sZT10dHkxIGNvbnNvbGU9dHR5UzAsMTE1MjAwbjggcHJpbnRrLnRpbWU9MScKKyAgICAgICAgaWYgZXh0cmFfYm9vdHBhcmFtczoKKyAgICAgICAgICAgIGJvb3RwYXJhbXMgPSBib290cGFyYW1zICsgJyAnICsgZXh0cmFfYm9vdHBhcmFtcworCisgICAgICAgIHNlbGYucWVtdXBhcmFtcyA9ICdib290cGFyYW1zPSJ7MH0iIHFlbXVwYXJhbXM9Ii1zZXJpYWwgdGNwOjEyNy4wLjAuMTp7MX0iJy5mb3JtYXQoYm9vdHBhcmFtcywgdGhyZWFkcG9ydCkKICAgICAgICAgaWYgbm90IHNlbGYuZGlzcGxheToKICAgICAgICAgICAgIHNlbGYucWVtdXBhcmFtcyA9ICdub2dyYXBoaWMgJyArIHNlbGYucWVtdXBhcmFtcwogICAgICAgICBpZiBxZW11cGFyYW1zOgpAQCAtMTI4LDcgKzEzNSwxNSBAQAogICAgICAgICBzZWxmLm9yaWdjaGxkaGFuZGxlciA9IHNpZ25hbC5nZXRzaWduYWwoc2lnbmFsLlNJR0NITEQpCiAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0NITEQsIHNlbGYuaGFuZGxlU0lHQ0hMRCkKIAotICAgICAgICBsYXVuY2hfY21kID0gJ3J1bnFlbXUgdGNwc2VyaWFsPSVzICVzICVzICVzJyAlIChzZWxmLnNlcnZlcnBvcnQsIHNlbGYubWFjaGluZSwgc2VsZi5yb290ZnMsIHNlbGYucWVtdXBhcmFtcykKKyAgICAgICAgbGF1bmNoX2NtZCA9ICdydW5xZW11IHNuYXBzaG90ICcKKyAgICAgICAgaWYgc2VsZi51c2Vfa3ZtOgorICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ1VzaW5nIGt2bSBmb3IgcnVucWVtdScpCisgICAgICAgICAgICBsYXVuY2hfY21kICs9ICdrdm0gJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ05vdCB1c2luZyBrdm0gZm9yIHJ1bnFlbXUnKQorICAgICAgICBsYXVuY2hfY21kICs9ICd0Y3BzZXJpYWw9JXMgJXMgJXMgJXMnICUgKHNlbGYuc2VydmVycG9ydCwgc2VsZi5tYWNoaW5lLCBzZWxmLnJvb3Rmcywgc2VsZi5xZW11cGFyYW1zKQorICAgICAgICBsb2dnZXIuaW5mbygnbGF1bmNoY21kPSVzJyUobGF1bmNoX2NtZCkpCisKICAgICAgICAgIyBGSVhNRTogV2UgcGFzcyBpbiBzdGRpbj1zdWJwcm9jZXNzLlBJUEUgaGVyZSB0byB3b3JrIGFyb3VuZCBzdHR5CiAgICAgICAgICMgYmxvY2tpbmcgYXQgdGhlIGVuZCBvZiB0aGUgcnVucWVtdSBzY3JpcHQgd2hlbiB1c2luZyB0aGlzIHdpdGhpbgogICAgICAgICAjIG9lLXNlbGZ0ZXN0ICh0aGlzIG1ha2VzIHN0dHkgZXJyb3Igb3V0IGltbWVkaWF0ZWx5KS4gVGhlcmUgb3VnaHQKQEAgLTEzNywxMiArMTUyLDEyIEBACiAgICAgICAgIG91dHB1dCA9IHNlbGYucnVucWVtdS5zdGRvdXQKIAogICAgICAgICAjCi0gICAgICAgICMgV2UgbmVlZCB0aGUgcHJlZXhlY19mbiBhYm92ZSBzbyB0aGF0IGFsbCBydW5xZW11IHByb2Nlc3NlcyBjYW4gZWFzaWx5IGJlIGtpbGxlZCAKKyAgICAgICAgIyBXZSBuZWVkIHRoZSBwcmVleGVjX2ZuIGFib3ZlIHNvIHRoYXQgYWxsIHJ1bnFlbXUgcHJvY2Vzc2VzIGNhbiBlYXNpbHkgYmUga2lsbGVkCiAgICAgICAgICMgKGJ5IGtpbGxpbmcgdGhlaXIgcHJvY2VzcyBncm91cCkuIFRoaXMgcHJlc2VudHMgYSBwcm9ibGVtIGlmIHRoaXMgY29udHJvbGxpbmcKLSAgICAgICAgIyBwcm9jZXNzIGl0c2VsZiBpcyBraWxsZWQgaG93ZXZlciBzaW5jZSB0aG9zZSBwcm9jZXNzZXMgZG9uJ3Qgbm90aWNlIHRoZSBkZWF0aCAKKyAgICAgICAgIyBwcm9jZXNzIGl0c2VsZiBpcyBraWxsZWQgaG93ZXZlciBzaW5jZSB0aG9zZSBwcm9jZXNzZXMgZG9uJ3Qgbm90aWNlIHRoZSBkZWF0aAogICAgICAgICAjIG9mIHRoZSBwYXJlbnQgYW5kIG1lcnJpbHkgY29udGludWUgb24uCiAgICAgICAgICMKLSAgICAgICAgIyBSYXRoZXIgdGhhbiBoYWNrIHJ1bnFlbXUgdG8gZGVhbCB3aXRoIHRoaXMsIHdlIGFkZCBzb21ldGhpbmcgaGVyZSBpbnN0ZWFkLiAKKyAgICAgICAgIyBSYXRoZXIgdGhhbiBoYWNrIHJ1bnFlbXUgdG8gZGVhbCB3aXRoIHRoaXMsIHdlIGFkZCBzb21ldGhpbmcgaGVyZSBpbnN0ZWFkLgogICAgICAgICAjIEJhc2ljYWxseSB3ZSBmb3JrIG9mZiBhbm90aGVyIHByb2Nlc3Mgd2hpY2ggaG9sZHMgYW4gb3BlbiBwaXBlIHRvIHRoZSBwYXJlbnQKICAgICAgICAgIyBhbmQgYWxzbyBpcyBzZXRwZ3JwLiBJZi93aGVuIHRoZSBwaXBlIHNlZXMgRU9GIGZyb20gdGhlIHBhcmVudCBkaWVpbmcsIGl0IGtpbGxzCiAgICAgICAgICMgdGhlIHByb2Nlc3MgZ3JvdXAuIFRoaXMgaXMgbGlrZSBwY3RybCdzIFBERUFUSFNJRyBidXQgZm9yIGEgcHJvY2VzcyBncm91cApAQCAtMTkyLDcgKzIwNyw3IEBACiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwID0gaXBzWzBdCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9pcCA9IGlwc1sxXQotICAgICAgICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yLCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIGV4Y2VwdCAoSW5kZXhFcnJvciwgVmFsdWVFcnJvcik6CiAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJDb3VsZG4ndCBnZXQgaXAgZnJvbSBxZW11IHByb2Nlc3MgYXJndW1lbnRzISBIZXJlIGlzIHRoZSBxZW11IGNvbW1hbmQgbGluZSB1c2VkOlxuJXNcbmFuZCBvdXRwdXQgZnJvbSBydW5xZW11OlxuJXMiICUgKGNtZGxpbmUsIHNlbGYuZ2V0T3V0cHV0KG91dHB1dCkpKQogICAgICAgICAgICAgICAgICAgICBzZWxmLl9kdW1wX2hvc3QoKQogICAgICAgICAgICAgICAgICAgICBzZWxmLnN0b3AoKQpAQCAtMjE5LDYgKzIzNCw3IEBACiAgICAgICAgICAgICBzdG9wcmVhZCA9IEZhbHNlCiAgICAgICAgICAgICBxZW11c29jayA9IE5vbmUKICAgICAgICAgICAgIGJvb3Rsb2cgPSAnJworICAgICAgICAgICAgZGF0YSA9IGInJwogICAgICAgICAgICAgd2hpbGUgdGltZS50aW1lKCkgPCBlbmR0aW1lIGFuZCBub3Qgc3RvcHJlYWQ6CiAgICAgICAgICAgICAgICAgc3JlYWQsIHN3cml0ZSwgc2Vycm9yID0gc2VsZWN0LnNlbGVjdChzb2NrbGlzdCwgW10sIFtdLCA1KQogICAgICAgICAgICAgICAgIGZvciBzb2NrIGluIHNyZWFkOgpAQCAtMjI5LDE0ICsyNDUsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tsaXN0LnJlbW92ZShzZWxmLnNlcnZlcl9zb2NrZXQpCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiQ29ubmVjdGlvbiBmcm9tICVzOiVzIiAlIGFkZHIpCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gc29jay5yZWN2KDEwMjQpCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gZGF0YSArIHNvY2sucmVjdigxMDI0KQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGF0YToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBib290bG9nICs9IGRhdGEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiByZS5zZWFyY2goIi4qIGxvZ2luOiIsIGJvb3Rsb2cpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9zb2NrZXQgPSBxZW11c29jawotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wcmVhZCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhY2hlZGxvZ2luID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiUmVhY2hlZCBsb2dpbiBiYW5uZXIiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGEuZGVjb2RlKCJ1dGYtOCIsIGVycm9ycz0ic3Vycm9nYXRlZXNjYXBlIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vdGxvZyArPSBkYXRhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBiJycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcmUuc2VhcmNoKCIuKiBsb2dpbjoiLCBib290bG9nKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX3NvY2tldCA9IHFlbXVzb2NrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wcmVhZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWNoZWRsb2dpbiA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJSZWFjaGVkIGxvZ2luIGJhbm5lciIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2xpc3QucmVtb3ZlKHNvY2spCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29jay5jbG9zZSgpCkBAIC0yNzcsMTMgKzI5OCwxNCBAQAogICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICJvcmlnY2hsZGhhbmRsZXIiKToKICAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0NITEQsIHNlbGYub3JpZ2NobGRoYW5kbGVyKQogICAgICAgICBpZiBzZWxmLnJ1bnFlbXU6Ci0gICAgICAgICAgICBvcy5raWxsKHNlbGYubW9uaXRvcnBpZCwgc2lnbmFsLlNJR0tJTEwpCi0gICAgICAgICAgICBsb2dnZXIuaW5mbygiU2VuZGluZyBTSUdURVJNIHRvIHJ1bnFlbXUiKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG9zLmtpbGxwZyhvcy5nZXRwZ2lkKHNlbGYucnVucWVtdS5waWQpLCBzaWduYWwuU0lHVEVSTSkKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FU1JDSDoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgIm1vbml0b3JwaWQiKToKKyAgICAgICAgICAgICAgICBvcy5raWxsKHNlbGYubW9uaXRvcnBpZCwgc2lnbmFsLlNJR0tJTEwpCisgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIlNlbmRpbmcgU0lHVEVSTSB0byBydW5xZW11IikKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG9zLmtpbGxwZyhvcy5nZXRwZ2lkKHNlbGYucnVucWVtdS5waWQpLCBzaWduYWwuU0lHVEVSTSkKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVTUkNIOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgIGVuZHRpbWUgPSB0aW1lLnRpbWUoKSArIHNlbGYucnVucWVtdXRpbWUKICAgICAgICAgICAgIHdoaWxlIHNlbGYucnVucWVtdS5wb2xsKCkgaXMgTm9uZSBhbmQgdGltZS50aW1lKCkgPCBlbmR0aW1lOgogICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkKQEAgLTMyNSw3ICszNDcsNyBAQAogICAgICAgICAjIFdhbGsgdGhlIHByb2Nlc3MgdHJlZSBmcm9tIHRoZSBwcm9jZXNzIHNwZWNpZmllZCBsb29raW5nIGZvciBhIHFlbXUtc3lzdGVtLiBSZXR1cm4gaXRzIFtwaWQnY21kXQogICAgICAgICAjCiAgICAgICAgIHBzID0gc3VicHJvY2Vzcy5Qb3BlbihbJ3BzJywgJ2F4d3cnLCAnLW8nLCAncGlkLHBwaWQsY29tbWFuZCddLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKS5jb21tdW5pY2F0ZSgpWzBdCi0gICAgICAgIHByb2Nlc3NlcyA9IHBzLnNwbGl0KCdcbicpCisgICAgICAgIHByb2Nlc3NlcyA9IHBzLmRlY29kZSgidXRmLTgiKS5zcGxpdCgnXG4nKQogICAgICAgICBuZmllbGRzID0gbGVuKHByb2Nlc3Nlc1swXS5zcGxpdCgpKSAtIDEKICAgICAgICAgcGlkcyA9IHt9CiAgICAgICAgIGNvbW1hbmRzID0ge30KQEAgLTM1NCw5ICszNzYsOSBAQAogICAgICAgICAgICAgICAgIGlmIHAgbm90IGluIHBhcmVudHM6CiAgICAgICAgICAgICAgICAgICAgIHBhcmVudHMuYXBwZW5kKHApCiAgICAgICAgICAgICAgICAgICAgIG5ld3BhcmVudHMgPSBuZXh0Ci0gICAgICAgICNwcmludCAiQ2hpbGRyZW4gbWF0Y2hpbmcgJXM6IiAlIHN0cihwYXJlbnRzKQorICAgICAgICAjcHJpbnQoIkNoaWxkcmVuIG1hdGNoaW5nICVzOiIgJSBzdHIocGFyZW50cykpCiAgICAgICAgIGZvciBwIGluIHBhcmVudHM6Ci0gICAgICAgICAgICAjIE5lZWQgdG8gYmUgY2FyZWZ1bCBoZXJlIHNpbmNlIHJ1bnFlbXUtaW50ZXJuYWwgcnVucyAibGRkIHFlbXUtc3lzdGVtLXh4eHgiCisgICAgICAgICAgICAjIE5lZWQgdG8gYmUgY2FyZWZ1bCBoZXJlIHNpbmNlIHJ1bnFlbXUgcnVucyAibGRkIHFlbXUtc3lzdGVtLXh4eHgiCiAgICAgICAgICAgICAjIEFsc28sIG9sZCB2ZXJzaW9ucyBvZiBsZGQgKDIuMTEpIHJ1biAiTERfWFhYWCBxZW11LXN5c3RlbS14eHh4IgogICAgICAgICAgICAgYmFzZWNtZCA9IGNvbW1hbmRzW3BdLnNwbGl0KClbMF0KICAgICAgICAgICAgIGJhc2VjbWQgPSBvcy5wYXRoLmJhc2VuYW1lKGJhc2VjbWQpCkBAIC0zNzAsMTQgKzM5MiwxNCBAQAogCiAgICAgICAgIGRhdGEgPSAnJwogICAgICAgICBzdGF0dXMgPSAwCi0gICAgICAgIHNlbGYuc2VydmVyX3NvY2tldC5zZW5kYWxsKGNvbW1hbmQpCisgICAgICAgIHNlbGYuc2VydmVyX3NvY2tldC5zZW5kYWxsKGNvbW1hbmQuZW5jb2RlKCd1dGYtOCcpKQogICAgICAgICBrZWVwcmVhZGluZyA9IFRydWUKICAgICAgICAgd2hpbGUga2VlcHJlYWRpbmc6CiAgICAgICAgICAgICBzcmVhZCwgXywgXyA9IHNlbGVjdC5zZWxlY3QoW3NlbGYuc2VydmVyX3NvY2tldF0sW10sW10sNSkKICAgICAgICAgICAgIGlmIHNyZWFkOgogICAgICAgICAgICAgICAgIGFuc3dlciA9IHNlbGYuc2VydmVyX3NvY2tldC5yZWN2KDEwMjQpCiAgICAgICAgICAgICAgICAgaWYgYW5zd2VyOgotICAgICAgICAgICAgICAgICAgICBkYXRhICs9IGFuc3dlcgorICAgICAgICAgICAgICAgICAgICBkYXRhICs9IGFuc3dlci5kZWNvZGUoJ3V0Zi04JykKICAgICAgICAgICAgICAgICAgICAgIyBTZWFyY2ggdGhlIHByb21wdCB0byBzdG9wCiAgICAgICAgICAgICAgICAgICAgIGlmIHJlLnNlYXJjaCgiW2EtekEtWjAtOV0rQFthLXpBLVowLTlcLV0rOn4jIiwgZGF0YSk6CiAgICAgICAgICAgICAgICAgICAgICAgICBrZWVwcmVhZGluZyA9IEZhbHNlCkBAIC00NDIsNyArNDY0LDcgQEAKICAgICBkZWYgc3RvcChzZWxmKToKICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiU3RvcHBpbmcgbG9nZ2luZyB0aHJlYWQiKQogICAgICAgICBpZiBzZWxmLnJ1bm5pbmc6Ci0gICAgICAgICAgICBvcy53cml0ZShzZWxmLndyaXRlcGlwZSwgInN0b3AiKQorICAgICAgICAgICAgb3Mud3JpdGUoc2VsZi53cml0ZXBpcGUsIGJ5dGVzKCJzdG9wIiwgInV0Zi04IikpCiAKICAgICBkZWYgdGVhcmRvd24oc2VsZik6CiAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIlRlYXJpbmcgZG93biBsb2dnaW5nIHRocmVhZCIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9xZW11dGlueXJ1bm5lci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3FlbXV0aW55cnVubmVyLnB5CmluZGV4IDRmOTUxMDEuLmQ1NTRmMGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3FlbXV0aW55cnVubmVyLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3FlbXV0aW55cnVubmVyLnB5CkBAIC0xMyw3ICsxMyw3IEBACiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgc2VsZWN0CiBpbXBvcnQgYmIKLWZyb20gcWVtdXJ1bm5lciBpbXBvcnQgUWVtdVJ1bm5lcgorZnJvbSAucWVtdXJ1bm5lciBpbXBvcnQgUWVtdVJ1bm5lcgogCiBjbGFzcyBRZW11VGlueVJ1bm5lcihRZW11UnVubmVyKToKIApAQCAtNTAsNyArNTAsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX3NvY2tldC5jb25uZWN0KHNlbGYuc29ja2V0ZmlsZSkKICAgICAgICAgICAgICAgICBiYi5ub3RlKCJDcmVhdGVkIGxpc3RlbmluZyBzb2NrZXQgZm9yIHFlbXUgc2VyaWFsIGNvbnNvbGUuIikKICAgICAgICAgICAgICAgICB0cmllcyA9IDAKLSAgICAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IsIG1zZzoKKyAgICAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgbXNnOgogICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX3NvY2tldC5jbG9zZSgpCiAgICAgICAgICAgICAgICAgYmIuZmF0YWwoIkZhaWxlZCB0byBjcmVhdGUgbGlzdGVuaW5nIHNvY2tldC4iKQogICAgICAgICAgICAgICAgIHRyaWVzIC09IDEKQEAgLTYwLDcgKzYwLDcgQEAKICAgICAgICAgICAgIHdpdGggb3BlbihzZWxmLmxvZ2ZpbGUsICJhIikgYXMgZjoKICAgICAgICAgICAgICAgICBmLndyaXRlKCIlcyIgJSBtc2cpCiAKLSAgICBkZWYgc3RhcnQoc2VsZiwgcWVtdXBhcmFtcyA9IE5vbmUpOgorICAgIGRlZiBzdGFydChzZWxmLCBxZW11cGFyYW1zID0gTm9uZSwgc3NoPVRydWUsIGV4dHJhX2Jvb3RwYXJhbXM9Tm9uZSk6CiAKICAgICAgICAgaWYgc2VsZi5kaXNwbGF5OgogICAgICAgICAgICAgb3MuZW52aXJvblsiRElTUExBWSJdID0gc2VsZi5kaXNwbGF5CkBAIC0xMDIsNyArMTAyLDcgQEAKICAgICAgICAgICAgIGJiLm5vdGUoIlFlbXUgcGlkIGRpZG4ndCBhcHBlYXJlZCBpbiAlcyBzZWNvbmRzIiAlIHNlbGYucnVucWVtdXRpbWUpCiAgICAgICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bnFlbXUuc3Rkb3V0CiAgICAgICAgICAgICBzZWxmLnN0b3AoKQotICAgICAgICAgICAgYmIubm90ZSgiT3V0cHV0IGZyb20gcnVucWVtdTpcbiVzIiAlIG91dHB1dC5yZWFkKCkpCisgICAgICAgICAgICBiYi5ub3RlKCJPdXRwdXQgZnJvbSBydW5xZW11OlxuJXMiICUgb3V0cHV0LnJlYWQoKS5kZWNvZGUoInV0Zi04IikpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgICAgICByZXR1cm4gc2VsZi5pc19hbGl2ZSgpCkBAIC0xMzEsNyArMTMxLDcgQEAKICAgICAgICAgIyBXYWxrIHRoZSBwcm9jZXNzIHRyZWUgZnJvbSB0aGUgcHJvY2VzcyBzcGVjaWZpZWQgbG9va2luZyBmb3IgYSBxZW11LXN5c3RlbS4gUmV0dXJuIGl0cyBbcGlkJ2NtZF0KICAgICAgICAgIwogICAgICAgICBwcyA9IHN1YnByb2Nlc3MuUG9wZW4oWydwcycsICdheHd3JywgJy1vJywgJ3BpZCxwcGlkLGNvbW1hbmQnXSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkuY29tbXVuaWNhdGUoKVswXQotICAgICAgICBwcm9jZXNzZXMgPSBwcy5zcGxpdCgnXG4nKQorICAgICAgICBwcm9jZXNzZXMgPSBwcy5kZWNvZGUoInV0Zi04Iikuc3BsaXQoJ1xuJykKICAgICAgICAgbmZpZWxkcyA9IGxlbihwcm9jZXNzZXNbMF0uc3BsaXQoKSkgLSAxCiAgICAgICAgIHBpZHMgPSB7fQogICAgICAgICBjb21tYW5kcyA9IHt9CkBAIC0xNjAsMTEgKzE2MCwxMSBAQAogICAgICAgICAgICAgICAgIGlmIHAgbm90IGluIHBhcmVudHM6CiAgICAgICAgICAgICAgICAgICAgIHBhcmVudHMuYXBwZW5kKHApCiAgICAgICAgICAgICAgICAgICAgIG5ld3BhcmVudHMgPSBuZXh0Ci0gICAgICAgICNwcmludCAiQ2hpbGRyZW4gbWF0Y2hpbmcgJXM6IiAlIHN0cihwYXJlbnRzKQorICAgICAgICAjcHJpbnQoIkNoaWxkcmVuIG1hdGNoaW5nICVzOiIgJSBzdHIocGFyZW50cykpCiAgICAgICAgIGZvciBwIGluIHBhcmVudHM6Ci0gICAgICAgICAgICAjIE5lZWQgdG8gYmUgY2FyZWZ1bCBoZXJlIHNpbmNlIHJ1bnFlbXUtaW50ZXJuYWwgcnVucyAibGRkIHFlbXUtc3lzdGVtLXh4eHgiCisgICAgICAgICAgICAjIE5lZWQgdG8gYmUgY2FyZWZ1bCBoZXJlIHNpbmNlIHJ1bnFlbXUgcnVucyAibGRkIHFlbXUtc3lzdGVtLXh4eHgiCiAgICAgICAgICAgICAjIEFsc28sIG9sZCB2ZXJzaW9ucyBvZiBsZGQgKDIuMTEpIHJ1biAiTERfWFhYWCBxZW11LXN5c3RlbS14eHh4IgogICAgICAgICAgICAgYmFzZWNtZCA9IGNvbW1hbmRzW3BdLnNwbGl0KClbMF0KICAgICAgICAgICAgIGJhc2VjbWQgPSBvcy5wYXRoLmJhc2VuYW1lKGJhc2VjbWQpCiAgICAgICAgICAgICBpZiAicWVtdS1zeXN0ZW0iIGluIGJhc2VjbWQgYW5kICItc2VyaWFsIHVuaXgiIGluIGNvbW1hbmRzW3BdOgotICAgICAgICAgICAgICAgIHJldHVybiBbaW50KHApLGNvbW1hbmRzW3BdXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyAgICAgICAgICAgICAgICByZXR1cm4gW2ludChwKSxjb21tYW5kc1twXV0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3NzaGNvbnRyb2wucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9zc2hjb250cm9sLnB5CmluZGV4IDE2NTg3NDQuLjA1ZDY1MDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3NzaGNvbnRyb2wucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvc3NoY29udHJvbC5weQpAQCAtMSwzICsxLDQgQEAKKyMgLSotIGNvZGluZzogdXRmLTggLSotCiAjIENvcHlyaWdodCAoQykgMjAxMyBJbnRlbCBDb3Jwb3JhdGlvbgogIwogIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCkKQEAgLTUxLDE2ICs1MiwxOSBAQAogICAgICAgICAgICAgZW5kdGltZSA9IHNlbGYuc3RhcnR0aW1lICsgdGltZW91dAogICAgICAgICAgICAgZW9mID0gRmFsc2UKICAgICAgICAgICAgIHdoaWxlIHRpbWUudGltZSgpIDwgZW5kdGltZSBhbmQgbm90IGVvZjoKLSAgICAgICAgICAgICAgICBpZiBzZWxlY3Quc2VsZWN0KFtzZWxmLnByb2Nlc3Muc3Rkb3V0XSwgW10sIFtdLCA1KVswXSAhPSBbXToKLSAgICAgICAgICAgICAgICAgICAgZGF0YSA9IG9zLnJlYWQoc2VsZi5wcm9jZXNzLnN0ZG91dC5maWxlbm8oKSwgMTAyNCkKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IGRhdGE6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnByb2Nlc3Muc3Rkb3V0LmNsb3NlKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVvZiA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCArPSBkYXRhCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZyhkYXRhKQotICAgICAgICAgICAgICAgICAgICAgICAgZW5kdGltZSA9IHRpbWUudGltZSgpICsgdGltZW91dAotCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBpZiBzZWxlY3Quc2VsZWN0KFtzZWxmLnByb2Nlc3Muc3Rkb3V0XSwgW10sIFtdLCA1KVswXSAhPSBbXToKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBvcy5yZWFkKHNlbGYucHJvY2Vzcy5zdGRvdXQuZmlsZW5vKCksIDEwMjQpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgZGF0YToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnByb2Nlc3Muc3Rkb3V0LmNsb3NlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlb2YgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhLmRlY29kZSgidXRmLTgiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCArPSBkYXRhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2coZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmR0aW1lID0gdGltZS50aW1lKCkgKyB0aW1lb3V0CisgICAgICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKICAgICAgICAgICAgICMgcHJvY2VzcyBoYXNuJ3QgcmV0dXJuZWQgeWV0CiAgICAgICAgICAgICBpZiBub3QgZW9mOgpAQCAtMTQ1LDkgKzE0OSw5NyBAQAogICAgICAgICByZXR1cm4gc2VsZi5faW50ZXJuYWxfcnVuKGNvbW1hbmQsIHRpbWVvdXQsIHNlbGYuaWdub3JlX3N0YXR1cykKIAogICAgIGRlZiBjb3B5X3RvKHNlbGYsIGxvY2FscGF0aCwgcmVtb3RlcGF0aCk6Ci0gICAgICAgIGNvbW1hbmQgPSBzZWxmLnNjcCArIFtsb2NhbHBhdGgsICclc0AlczolcycgJSAoc2VsZi51c2VyLCBzZWxmLmlwLCByZW1vdGVwYXRoKV0KLSAgICAgICAgcmV0dXJuIHNlbGYuX2ludGVybmFsX3J1bihjb21tYW5kLCBpZ25vcmVfc3RhdHVzPUZhbHNlKQorICAgICAgICBpZiBvcy5wYXRoLmlzbGluayhsb2NhbHBhdGgpOgorICAgICAgICAgICAgbGluayA9IG9zLnJlYWRsaW5rKGxvY2FscGF0aCkKKyAgICAgICAgICAgIGRzdF9kaXIsIGRzdF9iYXNlID0gb3MucGF0aC5zcGxpdChyZW1vdGVwYXRoKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYucnVuKCJjZCAlczsgbG4gLXMgJXMgJXMiICUgKGRzdF9kaXIsIGxpbmssIGRzdF9iYXNlKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbW1hbmQgPSBzZWxmLnNjcCArIFtsb2NhbHBhdGgsICclc0AlczolcycgJSAoc2VsZi51c2VyLCBzZWxmLmlwLCByZW1vdGVwYXRoKV0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9pbnRlcm5hbF9ydW4oY29tbWFuZCwgaWdub3JlX3N0YXR1cz1GYWxzZSkKIAogICAgIGRlZiBjb3B5X2Zyb20oc2VsZiwgcmVtb3RlcGF0aCwgbG9jYWxwYXRoKToKICAgICAgICAgY29tbWFuZCA9IHNlbGYuc2NwICsgWyclc0AlczolcycgJSAoc2VsZi51c2VyLCBzZWxmLmlwLCByZW1vdGVwYXRoKSwgbG9jYWxwYXRoXQogICAgICAgICByZXR1cm4gc2VsZi5faW50ZXJuYWxfcnVuKGNvbW1hbmQsIGlnbm9yZV9zdGF0dXM9RmFsc2UpCisKKyAgICBkZWYgY29weV9kaXJfdG8oc2VsZiwgbG9jYWxwYXRoLCByZW1vdGVwYXRoKToKKyAgICAgICAgIiIiCisgICAgICAgIENvcHkgcmVjdXJzaXZlbHkgbG9jYWxwYXRoIGRpcmVjdG9yeSB0byByZW1vdGVwYXRoIGluIHRhcmdldC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsobG9jYWxwYXRoKToKKyAgICAgICAgICAgICMgQ3JlYXRlIGRpcmVjdG9yaWVzIGluIHRoZSB0YXJnZXQgYXMgbmVlZGVkCisgICAgICAgICAgICBmb3IgZCBpbiBkaXJzOgorICAgICAgICAgICAgICAgIHRtcF9kaXIgPSBvcy5wYXRoLmpvaW4ocm9vdCwgZCkucmVwbGFjZShsb2NhbHBhdGgsICIiKQorICAgICAgICAgICAgICAgIG5ld19kaXIgPSBvcy5wYXRoLmpvaW4ocmVtb3RlcGF0aCwgdG1wX2Rpci5sc3RyaXAoIi8iKSkKKyAgICAgICAgICAgICAgICBjbWQgPSAibWtkaXIgLXAgJXMiICUgbmV3X2RpcgorICAgICAgICAgICAgICAgIHNlbGYucnVuKGNtZCkKKworICAgICAgICAgICAgIyBDb3B5IGZpbGVzIGludG8gdGhlIHRhcmdldAorICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgdG1wX2ZpbGUgPSBvcy5wYXRoLmpvaW4ocm9vdCwgZikucmVwbGFjZShsb2NhbHBhdGgsICIiKQorICAgICAgICAgICAgICAgIGRzdF9maWxlID0gb3MucGF0aC5qb2luKHJlbW90ZXBhdGgsIHRtcF9maWxlLmxzdHJpcCgiLyIpKQorICAgICAgICAgICAgICAgIHNyY19maWxlID0gb3MucGF0aC5qb2luKHJvb3QsIGYpCisgICAgICAgICAgICAgICAgc2VsZi5jb3B5X3RvKHNyY19maWxlLCBkc3RfZmlsZSkKKworCisgICAgZGVmIGRlbGV0ZV9maWxlcyhzZWxmLCByZW1vdGVwYXRoLCBmaWxlcyk6CisgICAgICAgICIiIgorICAgICAgICBEZWxldGUgZmlsZXMgaW4gdGFyZ2V0J3MgcmVtb3RlIHBhdGguCisgICAgICAgICIiIgorCisgICAgICAgIGNtZCA9ICJybSIKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZmlsZXMsIGxpc3QpOgorICAgICAgICAgICAgZmlsZXMgPSBbZmlsZXNdCisKKyAgICAgICAgZm9yIGYgaW4gZmlsZXM6CisgICAgICAgICAgICBjbWQgPSAiJXMgJXMiICUgKGNtZCwgb3MucGF0aC5qb2luKHJlbW90ZXBhdGgsIGYpKQorCisgICAgICAgIHNlbGYucnVuKGNtZCkKKworCisgICAgZGVmIGRlbGV0ZV9kaXIoc2VsZiwgcmVtb3RlcGF0aCk6CisgICAgICAgICIiIgorICAgICAgICBEZWxldGUgcmVtb3RlcGF0aCBkaXJlY3RvcnkgaW4gdGFyZ2V0LgorICAgICAgICAiIiIKKworICAgICAgICBjbWQgPSAicm1kaXIgJXMiICUgcmVtb3RlcGF0aAorICAgICAgICBzZWxmLnJ1bihjbWQpCisKKworICAgIGRlZiBkZWxldGVfZGlyX3N0cnVjdHVyZShzZWxmLCBsb2NhbHBhdGgsIHJlbW90ZXBhdGgpOgorICAgICAgICAiIiIKKyAgICAgICAgRGVsZXRlIHJlY3Vyc2l2ZWx5IGxvY2FscGF0aCBzdHJ1Y3R1cmUgZGlyZWN0b3J5IGluIHRhcmdldCdzIHJlbW90ZXBhdGguCisKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBpcyB2ZXJ5IHVzZWZ1bHQgdG8gZGVsZXRlIGEgcGFja2FnZSB0aGF0IGlzIGluc3RhbGxlZCBpbgorICAgICAgICB0aGUgRFVUIGFuZCB0aGUgaG9zdCBydW5uaW5nIHRoZSB0ZXN0IGhhcyBzdWNoIHBhY2thZ2UgZXh0cmFjdGVkIGluIHRtcAorICAgICAgICBkaXJlY3RvcnkuCisKKyAgICAgICAgRXhhbXBsZToKKyAgICAgICAgICAgIHB3ZDogL2hvbWUvdXNlci90bXAKKyAgICAgICAgICAgIHRyZWU6ICAgLgorICAgICAgICAgICAgICAgICAgICDilJTilIDilIAgd29yaworICAgICAgICAgICAgICAgICAgICAgICAg4pSc4pSA4pSAIGRpcjEKKyAgICAgICAgICAgICAgICAgICAgICAgIOKUgsKgwqAg4pSU4pSA4pSAIGZpbGUxCisgICAgICAgICAgICAgICAgICAgICAgICDilJTilIDilIAgZGlyMgorCisgICAgICAgICAgICBsb2NhbHBhdGggPSAiL2hvbWUvdXNlci90bXAiIGFuZCByZW1vdGVwYXRoID0gIi9ob21lL3VzZXIiCisKKyAgICAgICAgICAgIFdpdGggdGhlIGFib3ZlIHZhcmlhYmxlcyB0aGlzIGZ1bmN0aW9uIHdpbGwgdHJ5IHRvIGRlbGV0ZSB0aGUKKyAgICAgICAgICAgIGRpcmVjdG9yeSBpbiB0aGUgRFVUIGluIHRoaXMgb3JkZXI6CisgICAgICAgICAgICAgICAgL2hvbWUvdXNlci93b3JrL2RpcjEvZmlsZTEKKyAgICAgICAgICAgICAgICAvaG9tZS91c2VyL3dvcmsvZGlyMSAgICAgICAgKGlmIGRpciBpcyBlbXB0eSkKKyAgICAgICAgICAgICAgICAvaG9tZS91c2VyL3dvcmsvZGlyMiAgICAgICAgKGlmIGRpciBpcyBlbXB0eSkKKyAgICAgICAgICAgICAgICAvaG9tZS91c2VyL3dvcmsgICAgICAgICAgICAgKGlmIGRpciBpcyBlbXB0eSkKKyAgICAgICAgIiIiCisKKyAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsobG9jYWxwYXRoLCB0b3Bkb3duPUZhbHNlKToKKyAgICAgICAgICAgICMgRGVsZXRlIGZpbGVzIGZpcnN0CisgICAgICAgICAgICB0bXBkaXIgPSBvcy5wYXRoLmpvaW4ocm9vdCkucmVwbGFjZShsb2NhbHBhdGgsICIiKQorICAgICAgICAgICAgcmVtb3RlZGlyID0gb3MucGF0aC5qb2luKHJlbW90ZXBhdGgsIHRtcGRpci5sc3RyaXAoIi8iKSkKKyAgICAgICAgICAgIHNlbGYuZGVsZXRlX2ZpbGVzKHJlbW90ZWRpciwgZmlsZXMpCisKKyAgICAgICAgICAgICMgUmVtb3ZlIGRpcnMgaWYgZW1wdHkKKyAgICAgICAgICAgIGZvciBkIGluIGRpcnM6CisgICAgICAgICAgICAgICAgdG1wZGlyID0gb3MucGF0aC5qb2luKHJvb3QsIGQpLnJlcGxhY2UobG9jYWxwYXRoLCAiIikKKyAgICAgICAgICAgICAgICByZW1vdGVkaXIgPSBvcy5wYXRoLmpvaW4ocmVtb3RlcGF0aCwgdG1wZGlyLmxzdHJpcCgiLyIpKQorICAgICAgICAgICAgICAgIHNlbGYuZGVsZXRlX2RpcihyZW1vdGVwYXRoKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvdGFyZ2V0YnVpbGQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy90YXJnZXRidWlsZC5weQppbmRleCBmODUwZDc4Li41OTU5M2Y1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy90YXJnZXRidWlsZC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy90YXJnZXRidWlsZC5weQpAQCAtMTAsMTggKzEwLDE3IEBACiBpbXBvcnQgc3VicHJvY2VzcwogZnJvbSBhYmMgaW1wb3J0IEFCQ01ldGEsIGFic3RyYWN0bWV0aG9kCiAKLWNsYXNzIEJ1aWxkUHJvamVjdCgpOgotCi0gICAgX19tZXRhY2xhc3NfXyA9IEFCQ01ldGEKK2NsYXNzIEJ1aWxkUHJvamVjdChtZXRhY2xhc3M9QUJDTWV0YSk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZCwgdXJpLCBmb2xkZXJuYW1lPU5vbmUsIHRtcGRpcj0iL3RtcC8iKToKICAgICAgICAgc2VsZi5kID0gZAogICAgICAgICBzZWxmLnVyaSA9IHVyaQogICAgICAgICBzZWxmLmFyY2hpdmUgPSBvcy5wYXRoLmJhc2VuYW1lKHVyaSkKICAgICAgICAgc2VsZi5sb2NhbGFyY2hpdmUgPSBvcy5wYXRoLmpvaW4odG1wZGlyLHNlbGYuYXJjaGl2ZSkKLSAgICAgICAgc2VsZi5mbmFtZSA9IHJlLnN1YihyJy50YXIuYnoyfHRhci5neiQnLCAnJywgc2VsZi5hcmNoaXZlKQogICAgICAgICBpZiBmb2xkZXJuYW1lOgogICAgICAgICAgICAgc2VsZi5mbmFtZSA9IGZvbGRlcm5hbWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZm5hbWUgPSByZS5zdWIocidcLnRhclwuYnoyJHxcLnRhclwuZ3okfFwudGFyXC54eiQnLCAnJywgc2VsZi5hcmNoaXZlKQogCiAgICAgIyBEb3dubG9hZCBzZWxmLmFyY2hpdmUgdG8gc2VsZi5sb2NhbGFyY2hpdmUKICAgICBkZWYgX2Rvd25sb2FkX2FyY2hpdmUoc2VsZik6CkBAIC0xMTgsMTAgKzExNywxMCBAQAogICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoY21kLCBzaGVsbD1UcnVlKQogCiAgICAgICAgICNDaGFuZ2UgdGFyZ2V0ZGlyIHRvIHByb2plY3QgZm9sZGVyCi0gICAgICAgIHNlbGYudGFyZ2V0ZGlyID0gc2VsZi50YXJnZXRkaXIgKyBzZWxmLmZuYW1lCisgICAgICAgIHNlbGYudGFyZ2V0ZGlyID0gb3MucGF0aC5qb2luKHNlbGYudGFyZ2V0ZGlyLCBzZWxmLmZuYW1lKQogCi0gICAgZGVmIHJ1bl9jb25maWd1cmUoc2VsZiwgY29uZmlndXJlX2FyZ3M9JycpOgotICAgICAgICByZXR1cm4gc3VwZXIoU0RLQnVpbGRQcm9qZWN0LCBzZWxmKS5ydW5fY29uZmlndXJlKGNvbmZpZ3VyZV9hcmdzPShjb25maWd1cmVfYXJncyBvciAnJENPTkZJR1VSRV9GTEFHUycpLCBleHRyYV9jbWRzPScgZ251LWNvbmZpZ2l6ZTsgJykKKyAgICBkZWYgcnVuX2NvbmZpZ3VyZShzZWxmLCBjb25maWd1cmVfYXJncz0nJywgZXh0cmFfY21kcz0nIGdudS1jb25maWdpemU7ICcpOgorICAgICAgICByZXR1cm4gc3VwZXIoU0RLQnVpbGRQcm9qZWN0LCBzZWxmKS5ydW5fY29uZmlndXJlKGNvbmZpZ3VyZV9hcmdzPShjb25maWd1cmVfYXJncyBvciAnJENPTkZJR1VSRV9GTEFHUycpLCBleHRyYV9jbWRzPWV4dHJhX2NtZHMpCiAKICAgICBkZWYgcnVuX2luc3RhbGwoc2VsZiwgaW5zdGFsbF9hcmdzPScnKToKICAgICAgICAgcmV0dXJuIHN1cGVyKFNES0J1aWxkUHJvamVjdCwgc2VsZikucnVuX2luc3RhbGwoaW5zdGFsbF9hcmdzPShpbnN0YWxsX2FyZ3Mgb3IgIkRFU1RESVI9JXMvLi4vaW5zdGFsbCIgJSBzZWxmLnRhcmdldGRpcikpCkBAIC0xMzQsNCArMTMzLDMgQEAKICAgICBkZWYgX3J1bihzZWxmLCBjbWQpOgogICAgICAgICBzZWxmLmxvZygiUnVubmluZyAuICVzOyAiICUgc2VsZi5zZGtlbnYgKyBjbWQpCiAgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNhbGwoIi4gJXM7ICIgJSBzZWxmLnNka2VudiArIGNtZCwgc2hlbGw9VHJ1ZSkKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvdGVzdGV4cG9ydC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3Rlc3RleHBvcnQucHkKaW5kZXggMjQzNDYzYi4uNTdiZTJjYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvdGVzdGV4cG9ydC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy90ZXN0ZXhwb3J0LnB5CkBAIC02LDcgKzYsNyBAQAogCiBpbXBvcnQgb3MsIHJlLCBnbG9iIGFzIGcsIHNodXRpbCBhcyBzaCxzeXMKIGZyb20gdGltZSBpbXBvcnQgc2xlZXAKLWZyb20gY29tbWFuZHMgaW1wb3J0IHJ1bkNtZAorZnJvbSAuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZAogZnJvbSBkaWZmbGliIGltcG9ydCBTZXF1ZW5jZU1hdGNoZXIgYXMgU00KIAogdHJ5OgpAQCAtMTcsMTMgKzE3LDEzIEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGRlZiBwbGFpbihzZWxmLCBtc2cpOgogICAgICAgICAgICAgaWYgbXNnOgotICAgICAgICAgICAgICAgIHByaW50IG1zZworICAgICAgICAgICAgICAgIHByaW50KG1zZykKICAgICAgICAgZGVmIHdhcm4oc2VsZiwgbXNnKToKICAgICAgICAgICAgIGlmIG1zZzoKLSAgICAgICAgICAgICAgICBwcmludCAiV0FSTklORzogIiArIG1zZworICAgICAgICAgICAgICAgIHByaW50KCJXQVJOSU5HOiAiICsgbXNnKQogICAgICAgICBkZWYgZmF0YWwoc2VsZiwgbXNnKToKICAgICAgICAgICAgIGlmIG1zZzoKLSAgICAgICAgICAgICAgICBwcmludCAiRkFUQUw6IiArIG1zZworICAgICAgICAgICAgICAgIHByaW50KCJGQVRBTDoiICsgbXNnKQogICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCiAgICAgYmIgPSBteV9sb2coKSAgICAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvYWNwaWQvYWNwaWQvMDAwMS1GaXgtb3V0LW9mLXNvdXJjZS1idWlsZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2FjcGlkL2FjcGlkLzAwMDEtRml4LW91dC1vZi1zb3VyY2UtYnVpbGQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxYWEzYWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvYWNwaWQvYWNwaWQvMDAwMS1GaXgtb3V0LW9mLXNvdXJjZS1idWlsZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gNWQzMmI2NWFmNzUwZTIwMDc3MzBmM2Q1NWE1NTJhMTg2YWVkODFhNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJNYXhpbiBCLiBKb2huIiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci1EYXRlOiBXZWQsIDIwIEphbiAyMDE2IDE0OjA4OjI5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBvdXQgb2Ygc291cmNlIGJ1aWxkCi0KLVNpbmNlIHRoZSBzb3VyY2UgZGlyZWN0b3J5IGNvbnRhaW5zIGFub3RoZXIgY29uZmlnLmgsIHRoZSBidWlsZAotZGlyZWN0b3J5IHNob3VsZCBiZSBzZWFyY2hlZCBmaXJzdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLVtodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wL2FjcGlkMi90aWNrZXRzLzEwL10KLQotU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci0tLS0KLSBzb2NrLmMgICAgICB8IDIgKy0KLSB1ZF9zb2NrZXQuYyB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NvY2suYyBiL3NvY2suYwotaW5kZXggNjQ0ZDQ2MC4uOWUwNDUwMSAxMDA2NDQKLS0tLSBhL3NvY2suYwotKysrIGIvc29jay5jCi1AQCAtMjEsNyArMjEsNyBAQAotICAqLwotIAotICNpZmRlZiBIQVZFX0NPTkZJR19ICi0tI2luY2x1ZGUgImNvbmZpZy5oIgotKyNpbmNsdWRlIDxjb25maWcuaD4KLSAjZW5kaWYKLSAKLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci1kaWZmIC0tZ2l0IGEvdWRfc29ja2V0LmMgYi91ZF9zb2NrZXQuYwotaW5kZXggMTc5MDkxNy4uODNiMmFhOSAxMDA2NDQKLS0tLSBhL3VkX3NvY2tldC5jCi0rKysgYi91ZF9zb2NrZXQuYwotQEAgLTQsNyArNCw3IEBACi0gICovCi0gCi0gI2lmZGVmIEhBVkVfQ09ORklHX0gKLS0jaW5jbHVkZSAiY29uZmlnLmgiCi0rI2luY2x1ZGUgPGNvbmZpZy5oPgotICNlbmRpZgotIAotICNpbmNsdWRlIDxzdGRpby5oPgotLS0gCi0yLjQuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9hY3BpZC9hY3BpZF8yLjAuMjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9hY3BpZC9hY3BpZF8yLjAuMjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzYmQ1MWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvYWNwaWQvYWNwaWRfMi4wLjI2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1yZXF1aXJlIGFjcGlkLmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1GaXgtb3V0LW9mLXNvdXJjZS1idWlsZC5wYXRjaCIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OGNhNDNjYmM4NDJjMjMzNmU4MzU5MjZjMjE2NmMyOGIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYWNwaWQuaDtlbmRsaW5lPTI0O21kNT0zMjRhOWNmMjI1YWU2OWRkYWFkMWJmOWQ5NDIxMTViNSIKLQotU1JDX1VSSVttZDVzdW1dID0gImY2ZDc3MmUzNWVkOTA3ZjFjYzE0YWQxYTU0NmZkNDczIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgzODRmMzdlNGYyNjBmNTAxODNlMmUyMDAzOTgyM2Q4ZjA2YWVkOWRiNTY5MjRmZTkyMDk3YjdlMGIyZTAzNDMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9hY3BpZC9hY3BpZF8yLjAuMjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9hY3BpZC9hY3BpZF8yLjAuMjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA5ZmNmZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2FjcGlkL2FjcGlkXzIuMC4yNy5iYgpAQCAtMCwwICsxLDcgQEAKK3JlcXVpcmUgYWNwaWQuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PThjYTQzY2JjODQyYzIzMzZlODM1OTI2YzIxNjZjMjhiIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2FjcGlkLmg7ZW5kbGluZT0yNDttZDU9MzI0YTljZjIyNWFlNjlkZGFhZDFiZjlkOTQyMTE1YjUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlNDFiZGY2MjhlMTIyZWRiNDM0MmZjYTQzMmVhN2RiOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4MjBjMjIzZTUzY2MxMWQ5ZDcyMjlmYjFmZmMyYzIyMDVmMTA1NDA4MmM4MGY4M2Y1YTRlYzRkZjE2ZDNhNjE2IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvYXBtZC9hcG1kXzMuMi4yLTE1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvYXBtZC9hcG1kXzMuMi4yLTE1LmJiCmluZGV4IDRmZjZhZDAuLjgyYzI2NDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2FwbWQvYXBtZF8zLjIuMi0xNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9hcG1kL2FwbWRfMy4yLjItMTUuYmIKQEAgLTksNyArOSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hcG0uaDtiZWdpbmxpbmU9NjtlbmRsaW5lPTE4O21kNT03ZDRhY2MxMjUwOTEwYTg5Zjg0Y2UzY2M2NTU3YzRjMiIKIERFUEVORFMgPSAibGlidG9vbC1jcm9zcyIKIAotU1JDX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vYS9hcG1kL2FwbWRfMy4yLjIub3JpZy50YXIuZ3o7bmFtZT10YXJiYWxsIFwKK1NSQ19VUkkgPSAiaHR0cDovL3NuYXBzaG90LmRlYmlhbi5vcmcvYXJjaGl2ZS9kZWJpYW4vMjAxNjA3MjhUMDQzNDQzWi9wb29sL21haW4vYS8ke0JQTn0vJHtCUE59XzMuMi4yLm9yaWcudGFyLmd6O25hbWU9dGFyYmFsbCBcCiAgICAgICAgICAgIGZpbGU6Ly9sZWdhY3kucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vbGlidG9vbC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly91bmxpbnV4LnBhdGNoIFwKQEAgLTI2LDYgKzI2LDcgQEAKIAogIyBmb3IgdGhpcyBwYWNrYWdlIHdlJ3JlIG1vc3RseSBpbnRlcmVzdGVkIGluIHRyYWNraW5nIGRlYmlhbiBwYXRjaGVzLAogIyBhbmQgbm90IGluIHRoZSB1cHN0cmVhbSB2ZXJzaW9uIHdoZXJlIGFsbCBkZXZlbG9wbWVudCBoYXMgZWZmZWN0aXZlbHkgc3RvcHBlZAorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9hL2FwbWQvIgogVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+KChcZCtcLiopKyktKChcZCtcLiopKykpXC4oZGlmZnxkZWJpYW5cLnRhcilcLihnenx4eikiCiAKIFMgPSAiJHtXT1JLRElSfS9hcG1kLTMuMi4yLm9yaWciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9nbnUtZWZpL2dudS1lZmkvYWFyY2g2NC1pbml0cGxhdC5jLWZpeC1jb25zdC1xdWFsaWZpZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9nbnUtZWZpL2dudS1lZmkvYWFyY2g2NC1pbml0cGxhdC5jLWZpeC1jb25zdC1xdWFsaWZpZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTY1ZjA3NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dudS1lZmkvZ251LWVmaS9hYXJjaDY0LWluaXRwbGF0LmMtZml4LWNvbnN0LXF1YWxpZmllci5wYXRjaApAQCAtMCwwICsxLDM1IEBACitGcm9tIGRjODNiODRkYzhiNGU3MWVmY2U0NzE0MzQ5N2FhYzZjMTI2MDY1Y2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgMTggSnVsIDIwMTYgMDg6NDA6MjkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbGliL2FhcmNoNjQvaW5pdHBsYXQuYzogZml4IGNvbnN0IHF1YWxpZmllcgorCitGaXhlZDoKK2luaXRwbGF0LmM6NDQ6MzU6IGVycm9yOiBpbml0aWFsaXphdGlvbiBkaXNjYXJkcyAnY29uc3QnIHF1YWxpZmllciBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUgWy1XZXJyb3I9ZGlzY2FyZGVkLXF1YWxpZmllcnNdCisgICAgIHVuc2lnbmVkIGNoYXIgKnAgPSBkZXN0LCAqcSA9IHNyYzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+CitjYzE6IGFsbCB3YXJuaW5ncyBiZWluZyB0cmVhdGVkIGFzIGVycm9ycworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWIvYWFyY2g2NC9pbml0cGxhdC5jIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWIvYWFyY2g2NC9pbml0cGxhdC5jIGIvbGliL2FhcmNoNjQvaW5pdHBsYXQuYworaW5kZXggMmFjMDNhNy4uYWFlN2JlYiAxMDA2NDQKKy0tLSBhL2xpYi9hYXJjaDY0L2luaXRwbGF0LmMKKysrKyBiL2xpYi9hYXJjaDY0L2luaXRwbGF0LmMKK0BAIC00MSw3ICs0MSw4IEBAIHZvaWQgKm1lbXNldCh2b2lkICpzLCBpbnQgYywgX19TSVpFX1RZUEVfXyBuKQorIAorIHZvaWQgKm1lbWNweSh2b2lkICpkZXN0LCBjb25zdCB2b2lkICpzcmMsIF9fU0laRV9UWVBFX18gbikKKyB7CistICAgIHVuc2lnbmVkIGNoYXIgKnAgPSBkZXN0LCAqcSA9IHNyYzsKKysgICAgdW5zaWduZWQgY2hhciAqcCA9IGRlc3Q7CisrICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnEgPSBzcmM7CisgCisgICAgIHdoaWxlIChuLS0pCisgICAgICAgICAqcCsrID0gKnErKzsKKy0tIAorMi45LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ251LWVmaS9nbnUtZWZpL2dudS1lZmktTWFrZS1zZXRqbXAuUy1wb3J0YWJsZS10by1BUk0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9nbnUtZWZpL2dudS1lZmkvZ251LWVmaS1NYWtlLXNldGptcC5TLXBvcnRhYmxlLXRvLUFSTS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2VkMTI4YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9nbnUtZWZpL2dudS1lZmkvZ251LWVmaS1NYWtlLXNldGptcC5TLXBvcnRhYmxlLXRvLUFSTS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLUZyb20gOGEzNTZkNGI2YTI0MmNlNjNiNzM5MjBkM2VkMzNmODhmOWUxMmZlMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgotRGF0ZTogU3VuLCA2IFNlcCAyMDE1IDA1OjIwOjQzIC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGdudS1lZmk6IE1ha2Ugc2V0am1wLlMgcG9ydGFibGUgdG8gQVJNCi0KLVRoaXMgcGF0Y2ggZml4ZXMgdGhlIGZvbGxvd2luZyBlcnJvcjoKLQotICAuLi4vbGliL2FybS9zZXRqbXAuUzoxODogRXJyb3I6IHVucmVjb2duaXplZCBzeW1ib2wgdHlwZSAiIgotICAuLi4vbGliL2FybS9zZXRqbXAuUzoyNjogRXJyb3I6IHVucmVjb2duaXplZCBzeW1ib2wgdHlwZSAiIgotCi1UaGUgcHJvYmxlbSBpcyB0aGUgYXNzZW1ibHkgc3ludGF4IHRoYXQgaXMgdXNlZCBpcyBub3QgcG9ydGFibGUgdG8gQVJNLAotd2hlcmUgdGhlICdAJyBzeW1ib2wgaXMgYSBjb21tZW50OgotCi0gID4gTm90ZSBvbiB0YXJnZXRzIHdoZXJlIHRoZSBAIGNoYXJhY3RlciBpcyB0aGUgc3RhcnQgb2YgYSBjb21tZW50Ci0gID4gKGVnIEFSTSkgdGhlbiBhbm90aGVyIGNoYXJhY3RlciBpcyB1c2VkIGluc3RlYWQuIEZvciBleGFtcGxlIHRoZQotICA+IEFSTSBwb3J0IHVzZXMgdGhlICUgY2hhcmFjdGVyLgotCi0oRnJvbSBodHRwczovL3NvdXJjZXdhcmUub3JnL2JpbnV0aWxzL2RvY3MtMi4yNS9hcy9TZWN0aW9uLmh0bWwjU2VjdGlvbikKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliL2FybS9zZXRqbXAuUyB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWIvYXJtL3NldGptcC5TIGIvbGliL2FybS9zZXRqbXAuUwotaW5kZXggNmUzZmJmMC4uODVjODcwNSAxMDA2NDQKLS0tLSBhL2xpYi9hcm0vc2V0am1wLlMKLSsrKyBiL2xpYi9hcm0vc2V0am1wLlMKLUBAIC0xNSw3ICsxNSw3IEBAIEJBU0lTLAotIAkudGV4dAotIAkuYXJtCi0gCS5nbG9ibAlzZXRqbXAKLS0JLnR5cGUJc2V0am1wLCBAZnVuY3Rpb24KLSsJLnR5cGUJc2V0am1wLCAlZnVuY3Rpb24KLSBzZXRqbXA6Ci0gCW1vdglyMywgcjEzCi0gCXN0bWlhCXIwLCB7cjMtcjEyLHIxNH0KLUBAIC0yMyw2ICsyMyw2IEBAIHNldGptcDoKLSAJYngJbHIKLSAKLSAJLmdsb2JsCWxvbmdqbXAKLS0JLnR5cGUJbG9uZ2ptcCwgQGZ1bmN0aW9uCi0rCS50eXBlCWxvbmdqbXAsICVmdW5jdGlvbgotIGxvbmdqbXA6Ci0gCWxkbWlhCXIwLCB7cjMtcjEyLHIxNH0KLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ251LWVmaS9nbnUtZWZpXzMuMC4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ251LWVmaS9nbnUtZWZpXzMuMC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlY2EzNDU5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dudS1lZmkvZ251LWVmaV8zLjAuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLVNVTU1BUlkgPSAiTGlicmFyaWVzIGZvciBwcm9kdWNpbmcgRUZJIGJpbmFyaWVzIgotSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9nbnUtZWZpLyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIkdQTHYyKyB8IEJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2dudWVmaS9jcnQwLWVmaS1hcm0uUztiZWdpbmxpbmU9NDtlbmRsaW5lPTk7bWQ1PTIyNDBkN2JiZGYwOTI4Mjk0YzJmNGE2OGIxNGQ2NTkxIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dudWVmaS9jcnQwLWVmaS1hYXJjaDY0LlM7YmVnaW5saW5lPTQ7ZW5kbGluZT0xNjttZDU9ZTU4Mjc2NGE0Nzc2ZTYwYzk1YmY5YWI2MTczNDNkMzYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jL2VmaXNoZWxsaW50Zi5oO2JlZ2lubGluZT0xMztlbmRsaW5lPTIwO21kNT0yMDI3NjZiNzlkNzA4ZWZmM2NjNzBmY2UxNWZiODBjNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmMvZWZpc2hlbGxwYXJtLmg7YmVnaW5saW5lPTQ7ZW5kbGluZT0xMTttZDU9NDY4YjEyMzFiMDViYmM4NGJhZTNhMGQ1Nzc0ZTNiYjUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL2FybS9kaXY2NC5TO2JlZ2lubGluZT02O2VuZGxpbmU9MTI7bWQ1PWE5NmM4NGY1YWQxMmI0ZjAxMWY5OGI1ZDAzOTI0MmYyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi9hcm0vbWF0aC5jO2JlZ2lubGluZT00O2VuZGxpbmU9MTA7bWQ1PTY0ZGQxOTg3Y2VlMWRjZjU5ZDExYWE1NzJjZmE2NDRlIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi9hcm0vaW5pdHBsYXQuYztiZWdpbmxpbmU9NDtlbmRsaW5lPTEwO21kNT02NGRkMTk4N2NlZTFkY2Y1OWQxMWFhNTcyY2ZhNjQ0ZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvYXJtL2xpYjFmdW5jcy5TO2JlZ2lubGluZT05O2VuZGxpbmU9MzM7bWQ1PWY1NmQ1ZWJiYzg3MTM2YmM2NmNmZTI0ZGI4MmJjZjAxIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi9hYXJjaDY0L21hdGguYztiZWdpbmxpbmU9OTtlbmRsaW5lPTMzO21kNT1jZmFkZTRjNTYwZTAzM2E3YmIwMmRhYjI4Mjg3MmM3ZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvYWFyY2g2NC9pbml0cGxhdC5jO2JlZ2lubGluZT05O2VuZGxpbmU9MzM7bWQ1PTkwMGNiMWZmYmUzZTFkZWQzNDQxMDJiZTkyMTgzMGYxIFwKLSAgICAgICAgICAgICAgICAgICAiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL3BhcmFsbGVsLW1ha2UtYXJjaGl2ZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGliLU1ha2VmaWxlLWZpeC1wYXJhbGxlbC1pc3N1ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9nbnUtZWZpLU1ha2Utc2V0am1wLlMtcG9ydGFibGUtdG8tQVJNLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2djYzQ2LWNvbXBhdGliaWxpdHkucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjE1YTRiY2JjMThhOWE1ZTgxMTBlZDk1NTk3MDYyMmU2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImM1MzBmMjFhMTVmZDljMjE0ZGQ5MmQyOWE2Y2FhMjBmYWM5ODkyODkyNjc1MTIwMjBiNmRhMWY1ZTZmNWI0Y2IiCi0KLUNPTVBBVElCTEVfSE9TVCA9ICIoeDg2XzY0Lip8aS44Ni4qfGFhcmNoNjQuKnxhcm0uKiktbGludXgiCi0KLWRlZiBnbnVfZWZpX2FyY2goZCk6Ci0gICAgaW1wb3J0IHJlCi0gICAgdGFyY2ggPSBkLmdldFZhcigiVEFSR0VUX0FSQ0giLCBUcnVlKQotICAgIGlmIHJlLm1hdGNoKCJpWzM0NTY3ODldODYiLCB0YXJjaCk6Ci0gICAgICAgIHJldHVybiAiaWEzMiIKLSAgICByZXR1cm4gdGFyY2gKLQotRVhUUkFfT0VNQUtFID0gIidBUkNIPSR7QGdudV9lZmlfYXJjaChkKX0nICdDQz0ke0NDfScgJ0FTPSR7QVN9JyAnTEQ9JHtMRH0nICdBUj0ke0FSfScgXAotICAgICAgICAgICAgICAgICdSQU5MSUI9JHtSQU5MSUJ9JyAnT0JKQ09QWT0ke09CSkNPUFl9JyAnUFJFRklYPSR7cHJlZml4fScgJ0xJQkRJUj0ke2xpYmRpcn0nIFwKLSAgICAgICAgICAgICAgICAiCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBJTlNUQUxMUk9PVD0iJHtEfSIKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8qLmxkcyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9nbnUtZWZpL2dudS1lZmlfMy4wLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9nbnUtZWZpL2dudS1lZmlfMy4wLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTBkOGVlNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dudS1lZmkvZ251LWVmaV8zLjAuNC5iYgpAQCAtMCwwICsxLDU0IEBACitTVU1NQVJZID0gIkxpYnJhcmllcyBmb3IgcHJvZHVjaW5nIEVGSSBiaW5hcmllcyIKK0hPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZ251LWVmaS8iCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJHUEx2MisgfCBCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9nbnVlZmkvY3J0MC1lZmktYXJtLlM7YmVnaW5saW5lPTQ7ZW5kbGluZT0xNjttZDU9ZTU4Mjc2NGE0Nzc2ZTYwYzk1YmY5YWI2MTczNDNkMzYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ251ZWZpL2NydDAtZWZpLWFhcmNoNjQuUztiZWdpbmxpbmU9NDtlbmRsaW5lPTE2O21kNT1lNTgyNzY0YTQ3NzZlNjBjOTViZjlhYjYxNzM0M2QzNiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmMvZWZpc2hlbGxpbnRmLmg7YmVnaW5saW5lPTEzO2VuZGxpbmU9MjA7bWQ1PTIwMjc2NmI3OWQ3MDhlZmYzY2M3MGZjZTE1ZmI4MGM3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luYy9lZmlzaGVsbHBhcm0uaDtiZWdpbmxpbmU9NDtlbmRsaW5lPTExO21kNT00NjhiMTIzMWIwNWJiYzg0YmFlM2EwZDU3NzRlM2JiNSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvYXJtL21hdGguYztiZWdpbmxpbmU9MjtlbmRsaW5lPTE1O21kNT04ZWQ3NzI1MDFkYTc3YjJiMzM0NWFhNmRmODc0NGM5ZSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvYXJtL2luaXRwbGF0LmM7YmVnaW5saW5lPTI7ZW5kbGluZT0xNTttZDU9OGVkNzcyNTAxZGE3N2IyYjMzNDVhYTZkZjg3NDRjOWUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL2FhcmNoNjQvbWF0aC5jO2JlZ2lubGluZT0yO2VuZGxpbmU9MTU7bWQ1PThlZDc3MjUwMWRhNzdiMmIzMzQ1YWE2ZGY4NzQ0YzllIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi9hYXJjaDY0L2luaXRwbGF0LmM7YmVnaW5saW5lPTI7ZW5kbGluZT0xNTttZDU9OGVkNzcyNTAxZGE3N2IyYjMzNDVhYTZkZjg3NDRjOWUgXAorICAgICAgICAgICAgICAgICAgICIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vcGFyYWxsZWwtbWFrZS1hcmNoaXZlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9saWItTWFrZWZpbGUtZml4LXBhcmFsbGVsLWlzc3VlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2djYzQ2LWNvbXBhdGliaWxpdHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYWFyY2g2NC1pbml0cGxhdC5jLWZpeC1jb25zdC1xdWFsaWZpZXIucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjYxMmUwZjMyN2YzMWM0Yjg0NjhlZjU1ZjRlZWI5NjQ5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUxYTAwNDI4YzNjY2I5NmRiMjQwODllZDgzOTQ4NDNjNGY4M2NmOGY0MmM2YTRkZmRkYjRiN2MyM2YyYmY4YWYiCisKK0NPTVBBVElCTEVfSE9TVCA9ICIoeDg2XzY0Lip8aS44Ni4qfGFhcmNoNjQuKnxhcm0uKiktbGludXgiCitDT01QQVRJQkxFX0hPU1RfYXJtdjQgPSAnbnVsbCcKKworZGVmIGdudV9lZmlfYXJjaChkKToKKyAgICBpbXBvcnQgcmUKKyAgICB0YXJjaCA9IGQuZ2V0VmFyKCJUQVJHRVRfQVJDSCIsIFRydWUpCisgICAgaWYgcmUubWF0Y2goImlbMzQ1Njc4OV04NiIsIHRhcmNoKToKKyAgICAgICAgcmV0dXJuICJpYTMyIgorICAgIHJldHVybiB0YXJjaAorCitFWFRSQV9PRU1BS0UgPSAiJ0FSQ0g9JHtAZ251X2VmaV9hcmNoKGQpfScgJ0NDPSR7Q0N9JyAnQVM9JHtBU30nICdMRD0ke0xEfScgJ0FSPSR7QVJ9JyBcCisgICAgICAgICAgICAgICAgJ1JBTkxJQj0ke1JBTkxJQn0nICdPQkpDT1BZPSR7T0JKQ09QWX0nICdQUkVGSVg9JHtwcmVmaXh9JyAnTElCRElSPSR7bGliZGlyfScgXAorICAgICAgICAgICAgICAgICIKKworIyBnbnUtZWZpJ3MgTWFrZWZpbGUgdHJlYXRzIHByZWZpeCBhcyB0b29sY2hhaW4gcHJlZml4LCBzbyBkb24ndAorIyBleHBvcnQgaXQuCitwcmVmaXhbdW5leHBvcnRdID0gIjEiCisKK2RvX2luc3RhbGwoKSB7CisgICAgICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBJTlNUQUxMUk9PVD0iJHtEfSIKK30KKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8qLmxkcyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKKyMgSXQgZG9lc24ndCBzdXBwb3J0IHNzZSwgaXRzIG1ha2UuZGVmYXVsdHMgc2V0czoKKyMgQ0ZMQUdTICs9IC1tbm8tbW14IC1tbm8tc3NlCisjIFNvIGFsc28gcmVtb3ZlIC1tZnBtYXRoPXNzZSBmcm9tIFRVTkVfQ0NBUkdTCitUVU5FX0NDQVJHU19yZW1vdmUgPSAiLW1mcG1hdGg9c3NlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAxLWdydWItY29yZS1nZXR0ZXh0LWdldHRleHQuYy1tYWluX2NvbnRleHQtc2Vjb25kYXJ5X2MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDEtZ3J1Yi1jb3JlLWdldHRleHQtZ2V0dGV4dC5jLW1haW5fY29udGV4dC1zZWNvbmRhcnlfYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZWMyMzYzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAxLWdydWItY29yZS1nZXR0ZXh0LWdldHRleHQuYy1tYWluX2NvbnRleHQtc2Vjb25kYXJ5X2MucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSBmMzBjNjkyYzFmOWVmMGU5M2JlZTJiNDA4YTI0YmFhMDE3ZjFjYTlkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVmxhZGltaXIgU2VyYmluZW5rbyA8cGhjb2RlckBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDcgTm92IDIwMTMgMDE6MDE6NDcgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gCSogZ3J1Yi1jb3JlL2dldHRleHQvZ2V0dGV4dC5jIChtYWluX2NvbnRleHQpLAorIChzZWNvbmRhcnlfY29udGV4dCk6IAlEZWZpbmUgYWZ0ZXIgZGVmaW5pbmcgdHlwZSBhbmQgbm90IGJlZm9yZS4KKworLS0tCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCisgQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgIHwgNSArKysrKworIGdydWItY29yZS9nZXR0ZXh0L2dldHRleHQuYyB8IDQgKystLQorIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2dldHRleHQvZ2V0dGV4dC5jIGIvZ3J1Yi1jb3JlL2dldHRleHQvZ2V0dGV4dC5jCitpbmRleCBkZjczNTcwLi40ODgwY2VmIDEwMDY0NAorLS0tIGEvZ3J1Yi1jb3JlL2dldHRleHQvZ2V0dGV4dC5jCisrKysgYi9ncnViLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LmMKK0BAIC0zNCw4ICszNCw2IEBAIEdSVUJfTU9EX0xJQ0VOU0UgKCJHUEx2MysiKTsKKyAgICBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b2NvbmYvbWFudWFsL2dldHRleHQvTU8tRmlsZXMuaHRtbCAuCisgKi8KKyAKKy1zdGF0aWMgc3RydWN0IGdydWJfZ2V0dGV4dF9jb250ZXh0IG1haW5fY29udGV4dCwgc2Vjb25kYXJ5X2NvbnRleHQ7CistCisgc3RhdGljIGNvbnN0IGNoYXIgKigqZ3J1Yl9nZXR0ZXh0X29yaWdpbmFsKSAoY29uc3QgY2hhciAqcyk7CisgCisgc3RydWN0IGdydWJfZ2V0dGV4dF9tc2cKK0BAIC02OSw2ICs2Nyw4IEBAIHN0cnVjdCBncnViX2dldHRleHRfY29udGV4dAorICAgc3RydWN0IGdydWJfZ2V0dGV4dF9tc2cgKmdydWJfZ2V0dGV4dF9tc2dfbGlzdDsKKyB9OworIAorK3N0YXRpYyBzdHJ1Y3QgZ3J1Yl9nZXR0ZXh0X2NvbnRleHQgbWFpbl9jb250ZXh0LCBzZWNvbmRhcnlfY29udGV4dDsKKysKKyAjZGVmaW5lIE1PX01BR0lDX05VTUJFUiAJCTB4OTUwNDEyZGUKKyAKKyBzdGF0aWMgZ3J1Yl9lcnJfdAorLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2dydWItMi4wMC1maXgtZW5hYmxlX2V4ZWN1dGVfc3RhY2stY2hlY2sucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2dydWItMi4wMC1maXgtZW5hYmxlX2V4ZWN1dGVfc3RhY2stY2hlY2sucGF0Y2gKaW5kZXggMDllZjRkYi4uMWZmM2MxYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9ncnViLTIuMDAtZml4LWVuYWJsZV9leGVjdXRlX3N0YWNrLWNoZWNrLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZ3J1Yi0yLjAwLWZpeC1lbmFibGVfZXhlY3V0ZV9zdGFjay1jaGVjay5wYXRjaApAQCAtMTAsNyArMTAsNyBAQAogY29uZmlndXJlOjIwMzIzOiAkPyA9IDEKIGNvbmZpZ3VyZToyMDMyNzogZXJyb3I6IGNjYWNoZSBpNTg2LXBva3ktbGludXgtZ2NjICAtbTMyICAgIC1tYXJjaD1jb3JlMiAtbXNzZTMgLW10dW5lPWdlbmVyaWMgLW1mcG1hdGg9c3NlIC0tc3lzcm9vdD0vYnVpbGRkaXNrL2J1aWxkL2J1aWxkMC90bXAvc3lzcm9vdHMvZW1lbmxvdyBmYWlsZWQgdG8gcHJvZHVjZSBhc3NlbWJseSBjb2RlCiAKLVNpZ25lZC1PZmYtQnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgogMjAxMi8wNC8xMwogCiBJbmRleDogZ3J1Yi0yLjAwL2FjaW5jbHVkZS5tNApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9ncnViLTIuMDAtZnBtYXRoLXNzZS0zODctZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9ncnViLTIuMDAtZnBtYXRoLXNzZS0zODctZml4LnBhdGNoCmluZGV4IGM1NTdmMTMuLmRkMzBkOTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZ3J1Yi0yLjAwLWZwbWF0aC1zc2UtMzg3LWZpeC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2dydWItMi4wMC1mcG1hdGgtc3NlLTM4Ny1maXgucGF0Y2gKQEAgLTYsNyArNiw3IEBACiBjb25mdGVzdC5jOjE6MDogZXJyb3I6IFNTRSBpbnN0cnVjdGlvbiBzZXQgZGlzYWJsZWQsIHVzaW5nIDM4NyBhcml0aG1ldGljcyBbLVdlcnJvcl0KIGNjMTogYWxsIHdhcm5pbmdzIGJlaW5nIHRyZWF0ZWQgYXMgZXJyb3JzCiAKLVNpZ25lZC1PZmYtQnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgogMjAxMi8wNC8xMwogCiBJbmRleDogZ3J1Yi0xLjk5L2NvbmZpZ3VyZS5hYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9ncnViLW1vZHVsZS1leHBsaWNpdGx5LWtlZXBzLXN5bWJvbGUtLm1vZHVsZV9saWNlbnNlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9ncnViLW1vZHVsZS1leHBsaWNpdGx5LWtlZXBzLXN5bWJvbGUtLm1vZHVsZV9saWNlbnNlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzNWM0NzIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2dydWItbW9kdWxlLWV4cGxpY2l0bHkta2VlcHMtc3ltYm9sZS0ubW9kdWxlX2xpY2Vuc2UucGF0Y2gKQEAgLTAsMCArMSw2MSBAQAorRnJvbSA3NDYxYTNkZTM4YjY2ZWRiZTJmNTU5M2Y5YmRhYjlmMjcwNGQzMmJjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxNyBBdWcgMjAxNiAwNDowNjozNCAtMDQwMAorU3ViamVjdDogW1BBVENIXSBncnViIG1vZHVsZSBleHBsaWNpdGx5IGtlZXBzIHN5bWJvbGUgLm1vZHVsZV9saWNlbnNlCisKK1doaWxlIHVzaW5nIG9lLWNvcmUgdG9vbGNoYWluIHRvIHN0cmlwIGdydWIgbW9kdWxlICdhbGxfdmlkZW8ubW9kJywKK2l0IHN0cmlwcGVkIHN5bWJvbCB0YWJsZToKKy0tLS0tLS0tLS0tLS0tCityb290QGxvY2FsaG9zdDp+IyBvYmpkdW1wIC10IGFsbF92aWRlby5tb2QKKworYWxsX3ZpZGVvLm1vZDogICAgIGZpbGUgZm9ybWF0IGVsZjY0LXg4Ni02NAorCitTWU1CT0wgVEFCTEU6CitubyBzeW1ib2xzCistLS0tLS0tLS0tLS0tLQorCitJdCBjYXVzZWQgZ3J1YiB0byBsb2FkIG1vZHVsZSBhbGxfdmlkZW8gZmFpbGVkLgorLS0tLS0tLS0tLS0tLS0KK2dydWI+IGluc21vZCBhbGxfdmlkZW8KK2Vycm9yOiBubyBzeW1ib2wgdGFibGUuCistLS0tLS0tLS0tLS0tLQorCitUd2VhayBzdHJpcCBvcHRpb24gdG8ga2VlcCBzeW1ib2wgLm1vZHVsZV9saWNlbnNlIGNvdWxkIHdvcmthcm91bmQKK3RoZSBpc3N1ZS4KKy0tLS0tLS0tLS0tLS0tCityb290QGxvY2FsaG9zdDp+IyBvYmpkdW1wIC10IGFsbF92aWRlby5tb2QKKworYWxsX3ZpZGVvLm1vZDogICAgIGZpbGUgZm9ybWF0IGVsZjY0LXg4Ni02NAorCitTWU1CT0wgVEFCTEU6CiswMDAwMDAwMDAwMDAwMDAwIGwgICAgZCAgLnRleHQgIDAwMDAwMDAwMDAwMDAwMDAgLnRleHQKKzAwMDAwMDAwMDAwMDAwMDAgbCAgICBkICAuZGF0YSAgMDAwMDAwMDAwMDAwMDAwMCAuZGF0YQorMDAwMDAwMDAwMDAwMDAwMCBsICAgIGQgIC5tb2R1bGVfbGljZW5zZSAgICAgICAgMDAwMDAwMDAwMDAwMDAwMCAubW9kdWxlX2xpY2Vuc2UKKzAwMDAwMDAwMDAwMDAwMDAgbCAgICBkICAuYnNzICAgMDAwMDAwMDAwMDAwMDAwMCAuYnNzCiswMDAwMDAwMDAwMDAwMDAwIGwgICAgZCAgLm1vZGRlcHMgICAgICAgMDAwMDAwMDAwMDAwMDAwMCAubW9kZGVwcworMDAwMDAwMDAwMDAwMDAwMCBsICAgIGQgIC5tb2RuYW1lICAgICAgIDAwMDAwMDAwMDAwMDAwMDAgLm1vZG5hbWUKKy0tLS0tLS0tLS0tLS0tCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBncnViLWNvcmUvZ2VubW9kLnNoLmluIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2dlbm1vZC5zaC5pbiBiL2dydWItY29yZS9nZW5tb2Quc2guaW4KK2luZGV4IDc2ZGYwYmIuLjM5YTljZmMgMTAwNjQ0CistLS0gYS9ncnViLWNvcmUvZ2VubW9kLnNoLmluCisrKysgYi9ncnViLWNvcmUvZ2VubW9kLnNoLmluCitAQCAtNTksNyArNTksNyBAQCBpZiB0ZXN0IHhAVEFSR0VUX0FQUExFX0NDQCAhPSB4MTsgdGhlbgorIAlpZiB0ZXN0IHhAcGxhdGZvcm1AICE9IHhlbXU7IHRoZW4KKyAJICAgIEBTVFJJUEAgLS1zdHJpcC11bm5lZWRlZCBcCisgCQktSyBncnViX21vZF9pbml0IC1LIGdydWJfbW9kX2ZpbmkgXAorLQkJLUsgX2dydWJfbW9kX2luaXQgLUsgX2dydWJfbW9kX2ZpbmkgXAorKwkJLUsgX2dydWJfbW9kX2luaXQgLUsgX2dydWJfbW9kX2ZpbmkgLUsgLm1vZHVsZV9saWNlbnNlIFwKKyAJCS1SIC5ub3RlLmdudS5nb2xkLXZlcnNpb24gLVIgLm5vdGUuR05VLXN0YWNrIFwKKyAJCS1SIC5ub3RlIC1SIC5jb21tZW50ICR0bXBmaWxlIHx8IGV4aXQgMQorIAlmaQorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2dydWIyLXJlbW92ZS1zcGFyYzY0LXNldHVwLWZyb20teDg2LWJ1aWxkcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZ3J1YjItcmVtb3ZlLXNwYXJjNjQtc2V0dXAtZnJvbS14ODYtYnVpbGRzLnBhdGNoCmluZGV4IDYyNTlhMWEuLjUxNjhkM2MgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZ3J1YjItcmVtb3ZlLXNwYXJjNjQtc2V0dXAtZnJvbS14ODYtYnVpbGRzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZ3J1YjItcmVtb3ZlLXNwYXJjNjQtc2V0dXAtZnJvbS14ODYtYnVpbGRzLnBhdGNoCkBAIC0xLDEwNCArMSw0NCBAQAorU3ViamVjdDogW1BBVENIXSBncnViMjogcmVtb3ZlIGdydWItc3BhcmM2NC1zZXR1cCBmcm9tIHg4NiBidWlsZHMKKworKiByZW1vdmUgdGhlIGdydWItc3BhcmM2NC1zZXR1cCBmaWxlcyBmcm9tIHRoZSB4ODYgYnVpbGRzLgorCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQogCi1yZW1vdmUgdGhlIGdydWItc3BhcmM2NC1zZXR1cCBmaWxlcyBmcm9tIHRoZSB4ODYgYnVpbGRzLgorU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE1pbmdsaSBZdSA8bWluZ2xpLnl1QHdpbmRyaXZlci5jb20+CistLS0KKyBNYWtlZmlsZS51dGlsLmRlZiB8IDE4IC0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxOCBkZWxldGlvbnMoLSkKIAotU2lnbmVkLU9mZi1CeTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KK2RpZmYgLS1naXQgYS9NYWtlZmlsZS51dGlsLmRlZiBiL01ha2VmaWxlLnV0aWwuZGVmCitpbmRleCBiODAxODdjLi5hNjcwY2YyIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUudXRpbC5kZWYKKysrKyBiL01ha2VmaWxlLnV0aWwuZGVmCitAQCAtMzIxLDI0ICszMjEsNiBAQCBwcm9ncmFtID0geworIH07CisgCisgcHJvZ3JhbSA9IHsKKy0gIG5hbWUgPSBncnViLXNwYXJjNjQtc2V0dXA7CistICBpbnN0YWxsZGlyID0gc2JpbjsKKy0gIG1hbnNlY3Rpb24gPSA4OworLSAgY29tbW9uID0gdXRpbC9ncnViLXNldHVwLmM7CistICBjb21tb24gPSB1dGlsL2x2bS5jOworLSAgY29tbW9uID0gZ3J1Yi1jb3JlL2tlcm4vZW11L2FyZ3BfY29tbW9uLmM7CistICBjb21tb24gPSBncnViLWNvcmUvbGliL3JlZWRfc29sb21vbi5jOworLSAgY29tbW9uID0gdXRpbC9pZWVlMTI3NS9vZnBhdGguYzsKKy0KKy0gIGxkYWRkID0gbGliZ3J1Ym1vZHMuYTsKKy0gIGxkYWRkID0gbGliZ3J1Ymtlcm4uYTsKKy0gIGxkYWRkID0gbGliZ3J1YmdjcnkuYTsKKy0gIGxkYWRkID0gZ3J1Yi1jb3JlL2dudWxpYi9saWJnbnUuYTsKKy0gIGxkYWRkID0gJyQoTElCSU5UTCkgJChMSUJERVZNQVBQRVIpICQoTElCVVRJTCkgJChMSUJaRlMpICQoTElCTlZQQUlSKSAkKExJQkdFT00pJzsKKy0gIGNwcGZsYWdzID0gJy1ER1JVQl9TRVRVUF9TUEFSQzY0PTEnOworLX07CistCistcHJvZ3JhbSA9IHsKKyAgIG5hbWUgPSBncnViLW9mcGF0aG5hbWU7CisgICBpbnN0YWxsZGlyID0gc2JpbjsKKyAgIG1hbnNlY3Rpb24gPSA4OworLS0gCisyLjguMQogCi0tLS0gYS9NYWtlZmlsZS51dGlsLmFtCTIwMTQtMDgtMTUgMTE6NDE6MDIuNDQxMDExMjc4IC0wNzAwCi0rKysgYi9NYWtlZmlsZS51dGlsLmFtCTIwMTQtMDgtMTUgMTE6NDQ6MjYuMjQ1MDIxMTQyIC0wNzAwCi1AQCAtNDY5Miw5ICs0NjkyLDkgQEAKLSBlbmRpZgotIAotIGlmIENPTkRfZW11Ci0tc2Jpbl9QUk9HUkFNUyArPSBncnViLXNwYXJjNjQtc2V0dXAKLStzYmluX1BST0dSQU1TICs9Ci0gaWYgQ09ORF9NQU5fUEFHRVMKLS1tYW5fTUFOUyArPSBncnViLXNwYXJjNjQtc2V0dXAuOAotK21hbl9NQU5TICs9Ci0gCi0gZ3J1Yi1zcGFyYzY0LXNldHVwLjg6IGdydWItc3BhcmM2NC1zZXR1cAotIAljaG1vZCBhK3ggZ3J1Yi1zcGFyYzY0LXNldHVwCi1AQCAtNDcxNSw5ICs0NzE1LDkgQEAKLSBlbmRpZgotIAotIGlmIENPTkRfaTM4Nl9wYwotLXNiaW5fUFJPR1JBTVMgKz0gZ3J1Yi1zcGFyYzY0LXNldHVwCi0rc2Jpbl9QUk9HUkFNUyArPQotIGlmIENPTkRfTUFOX1BBR0VTCi0tbWFuX01BTlMgKz0gZ3J1Yi1zcGFyYzY0LXNldHVwLjgKLSttYW5fTUFOUyArPQotIAotIGdydWItc3BhcmM2NC1zZXR1cC44OiBncnViLXNwYXJjNjQtc2V0dXAKLSAJY2htb2QgYSt4IGdydWItc3BhcmM2NC1zZXR1cAotQEAgLTQ3MzgsOSArNDczOCw5IEBACi0gZW5kaWYKLSAKLSBpZiBDT05EX2kzODZfZWZpCi0tc2Jpbl9QUk9HUkFNUyArPSBncnViLXNwYXJjNjQtc2V0dXAKLStzYmluX1BST0dSQU1TICs9Ci0gaWYgQ09ORF9NQU5fUEFHRVMKLS1tYW5fTUFOUyArPSBncnViLXNwYXJjNjQtc2V0dXAuOAotK21hbl9NQU5TICs9Ci0gCi0gZ3J1Yi1zcGFyYzY0LXNldHVwLjg6IGdydWItc3BhcmM2NC1zZXR1cAotIAljaG1vZCBhK3ggZ3J1Yi1zcGFyYzY0LXNldHVwCi1AQCAtNDc2MSw5ICs0NzYxLDkgQEAKLSBlbmRpZgotIAotIGlmIENPTkRfaTM4Nl9xZW11Ci0tc2Jpbl9QUk9HUkFNUyArPSBncnViLXNwYXJjNjQtc2V0dXAKLStzYmluX1BST0dSQU1TICs9Ci0gaWYgQ09ORF9NQU5fUEFHRVMKLS1tYW5fTUFOUyArPSBncnViLXNwYXJjNjQtc2V0dXAuOAotK21hbl9NQU5TICs9Ci0gCi0gZ3J1Yi1zcGFyYzY0LXNldHVwLjg6IGdydWItc3BhcmM2NC1zZXR1cAotIAljaG1vZCBhK3ggZ3J1Yi1zcGFyYzY0LXNldHVwCi1AQCAtNDc4NCw5ICs0Nzg0LDkgQEAKLSBlbmRpZgotIAotIGlmIENPTkRfaTM4Nl9jb3JlYm9vdAotLXNiaW5fUFJPR1JBTVMgKz0gZ3J1Yi1zcGFyYzY0LXNldHVwCi0rc2Jpbl9QUk9HUkFNUyArPQotIGlmIENPTkRfTUFOX1BBR0VTCi0tbWFuX01BTlMgKz0gZ3J1Yi1zcGFyYzY0LXNldHVwLjgKLSttYW5fTUFOUyArPQotIAotIGdydWItc3BhcmM2NC1zZXR1cC44OiBncnViLXNwYXJjNjQtc2V0dXAKLSAJY2htb2QgYSt4IGdydWItc3BhcmM2NC1zZXR1cAotQEAgLTQ4MDcsOSArNDgwNyw5IEBACi0gZW5kaWYKLSAKLSBpZiBDT05EX2kzODZfbXVsdGlib290Ci0tc2Jpbl9QUk9HUkFNUyArPSBncnViLXNwYXJjNjQtc2V0dXAKLStzYmluX1BST0dSQU1TICs9Ci0gaWYgQ09ORF9NQU5fUEFHRVMKLS1tYW5fTUFOUyArPSBncnViLXNwYXJjNjQtc2V0dXAuOAotK21hbl9NQU5TICs9Ci0gCi0gZ3J1Yi1zcGFyYzY0LXNldHVwLjg6IGdydWItc3BhcmM2NC1zZXR1cAotIAljaG1vZCBhK3ggZ3J1Yi1zcGFyYzY0LXNldHVwCi1AQCAtNDgzMCw5ICs0ODMwLDkgQEAKLSBlbmRpZgotIAotIGlmIENPTkRfaTM4Nl9pZWVlMTI3NQotLXNiaW5fUFJPR1JBTVMgKz0gZ3J1Yi1zcGFyYzY0LXNldHVwCi0rc2Jpbl9QUk9HUkFNUyArPQotIGlmIENPTkRfTUFOX1BBR0VTCi0tbWFuX01BTlMgKz0gZ3J1Yi1zcGFyYzY0LXNldHVwLjgKLSttYW5fTUFOUyArPQotIAotIGdydWItc3BhcmM2NC1zZXR1cC44OiBncnViLXNwYXJjNjQtc2V0dXAKLSAJY2htb2QgYSt4IGdydWItc3BhcmM2NC1zZXR1cAotQEAgLTQ4NTMsOSArNDg1Myw5IEBACi0gZW5kaWYKLSAKLSBpZiBDT05EX3g4Nl82NF9lZmkKLS1zYmluX1BST0dSQU1TICs9IGdydWItc3BhcmM2NC1zZXR1cAotK3NiaW5fUFJPR1JBTVMgKz0KLSBpZiBDT05EX01BTl9QQUdFUwotLW1hbl9NQU5TICs9IGdydWItc3BhcmM2NC1zZXR1cC44Ci0rbWFuX01BTlMgKz0KLSAKLSBncnViLXNwYXJjNjQtc2V0dXAuODogZ3J1Yi1zcGFyYzY0LXNldHVwCi0gCWNobW9kIGEreCBncnViLXNwYXJjNjQtc2V0dXAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yi1naXQvMDAwMS1EaXNhYmxlLW1mcG1hdGgtc3NlLWFzLXdlbGwtd2hlbi1TU0UtaXMtZGlzYWJsZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWItZ2l0LzAwMDEtRGlzYWJsZS1tZnBtYXRoLXNzZS1hcy13ZWxsLXdoZW4tU1NFLWlzLWRpc2FibGVkLnBhdGNoCmluZGV4IDg3ZWMyOWUuLmNlMzIzOGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yi1naXQvMDAwMS1EaXNhYmxlLW1mcG1hdGgtc3NlLWFzLXdlbGwtd2hlbi1TU0UtaXMtZGlzYWJsZWQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViLWdpdC8wMDAxLURpc2FibGUtbWZwbWF0aC1zc2UtYXMtd2VsbC13aGVuLVNTRS1pcy1kaXNhYmxlZC5wYXRjaApAQCAtMjAsNyArMjAsNyBAQAogYXJpdGhtZXRpY3MgWy1XZXJyb3JdCiBjYzE6IGFsbCB3YXJuaW5ncyBiZWluZyB0cmVhdGVkIGFzIGVycm9ycwogCi1TaWduZWQtT2ZmLUJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiAtLS0KIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViMi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWIyLmluYwppbmRleCAxNDZkZGU2Li5iMTBmNjMzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWIyLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWIyLmluYwpAQCAtMTIsNiArMTIsNyBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCiAKIFNSQ19VUkkgPSAiZnRwOi8vZnRwLmdudS5vcmcvZ251L2dydWIvZ3J1Yi0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vZ3J1Yi1tb2R1bGUtZXhwbGljaXRseS1rZWVwcy1zeW1ib2xlLS5tb2R1bGVfbGljZW5zZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9ncnViLTIuMDAtZnBtYXRoLXNzZS0zODctZml4LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2NoZWNrLWlmLWxpYmx6bWEtaXMtZGlzYWJsZWQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vZml4LWlzc3VlLXdpdGgtZmxleC0yLjUuMzcucGF0Y2ggXApAQCAtMzAsOSArMzEsMTAgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LUNWRS0yMDE1LTgzNzAtR3J1YjItdXNlci1wYXNzLXZ1bG5lcmFiaWxpdHkucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtZGlyZWN0LV9sbHNlZWstY29kZS1hbmQtcmVxdWlyZS1sb25nLWZpbGVzeXN0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2ZpeC10ZXhpbmZvLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZ3J1Yi1jb3JlLWdldHRleHQtZ2V0dGV4dC5jLW1haW5fY29udGV4dC1zZWNvbmRhcnlfYy5wYXRjaCBcCiAgICAgICAgICAgICAiCiAKLURFUEVORFMgPSAiZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIgorREVQRU5EUyA9ICJmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUgYXV0b2dlbi1uYXRpdmUiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICJlOTI3NTQwYjZlZGE4YjAyNGZiMDM5MWVlYWE0MDkxYyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI2NWIzOWEwNTU4ZjhjODAyMjA5YzU3NGY0ZDAyY2EyNjNhODA0ZThhNTY0YmM2Y2FmMWNkMGZkM2IzY2MxMWUzIgpAQCAtNTksMTEgKzYxLDEwIEBACiAJIyBmb3IgaXRzIG93biBwdXJwb3Nlcy4gUmVtb3ZlIHRoZSBPRSB2ZXJzaW9ucyBmcm9tIHRoZSBlbnZpcm9ubWVudCB0bwogCSMgYXZvaWQgY29uZmxpY3RzLgogCXVuc2V0IFRBUkdFVF9DUFBGTEFHUyBUQVJHRVRfQ0ZMQUdTIFRBUkdFVF9DWFhGTEFHUyBUQVJHRVRfTERGTEFHUworCSggY2QgJHtTfQorCSR7U30vYXV0b2dlbi5zaCApCiB9CiAKICMgZ3J1YiBhbmQgZ3J1Yi1lZmkncyBzeXNyb290LyR7ZGF0YWRpcn0vZ3J1Yi9ncnViLW1rY29uZmlnX2xpYiBhcmUKICMgY29uZmxpY3RlZCwgcmVtb3ZlIGl0IHNpbmNlIG5vIG9uZSB1c2VzIGl0LgotU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTX2NsYXNzLXRhcmdldCArPSAicmVtb3ZlX3N5c3Jvb3RfbWtjb25maWdfbGliIgotcmVtb3ZlX3N5c3Jvb3RfbWtjb25maWdfbGliKCkgewotICAgIHJtIC1yICIke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9L2dydWIvZ3J1Yi1ta2NvbmZpZ19saWIiCi19CitTWVNST09UX0RJUlNfQkxBQ0tMSVNUICs9ICIke2RhdGFkaXJ9L2dydWIvZ3J1Yi1ta2NvbmZpZ19saWIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWJfMi4wMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yl8yLjAwLmJiCmluZGV4IDc3ODA3NGEuLjA3ZTFkMTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yl8yLjAwLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yl8yLjAwLmJiCkBAIC0xLDYgKzEsNiBAQAogcmVxdWlyZSBncnViMi5pbmMKIAotUkRFUEVORFNfJHtQTn0gPSAiZGlmZnV0aWxzIGZyZWV0eXBlIgorUkRFUEVORFNfJHtQTn0gPSAiZGlmZnV0aWxzIGZyZWV0eXBlIGdydWItZWRpdGVudiIKIFBSID0gInIxIgogCiBFWFRSQV9PRUNPTkYgPSAiLS13aXRoLXBsYXRmb3JtPXBjIC0tZGlzYWJsZS1ncnViLW1rZm9udCAtLXByb2dyYW0tcHJlZml4PSIiIFwKQEAgLTgsNiArOCwxMCBAQAogCiBFWFRSQV9PRUNPTkYgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGFyZ2VmaWxlJywgJy0tZW5hYmxlLWxhcmdlZmlsZScsICctLWRpc2FibGUtbGFyZ2VmaWxlJywgZCl9IgogCitQQUNLQUdFUyA9KyAiZ3J1Yi1lZGl0ZW52IgorCitGSUxFU19ncnViLWVkaXRlbnYgPSAiJHtiaW5kaXJ9L2dydWItZWRpdGVudiIKKwogZG9faW5zdGFsbF9hcHBlbmQgKCkgewogICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZ3J1Yi5kCiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWJfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViX2dpdC5iYgppbmRleCA2OTE5YzlhLi40OTNiNjk1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWJfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yl9naXQuYmIKQEAgLTEsMTQgKzEsMTIgQEAKIHJlcXVpcmUgZ3J1YjIuaW5jCiAKLURFUEVORFMgKz0gImF1dG9nZW4tbmF0aXZlIgotCiBERUZBVUxUX1BSRUZFUkVOQ0UgPSAiLTEiCiBERUZBVUxUX1BSRUZFUkVOQ0VfYXJtID0gIjEiCiAKIEZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9L2dydWItZ2l0OiIKIAogUFYgPSAiMi4wMCske1NSQ1BWfSIKLVNSQ1JFViA9ICJiOTVlOTI2Nzg4ODJmNTYwNTZjNjRhZTI5MDkyYmM5Y2YxMjk5MDVmIgorU1JDUkVWID0gIjdhNWIzMDFlM2FkYjhlMDU0Mjg4NTE4YTMyNTEzNWExODgzYzFjNmMiCiBTUkNfVVJJID0gImdpdDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2dydWIuZ2l0IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtRGlzYWJsZS1tZnBtYXRoLXNzZS1hcy13ZWxsLXdoZW4tU1NFLWlzLWRpc2FibGVkLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2F1dG9nZW4uc2gtZXhjbHVkZS1wYy5wYXRjaCBcCkBAIC0xOCw2ICsxNiw3IEBACiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCiBDT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NC4qfGkuODYuKnxhcm0uKnxhYXJjaDY0LiopLShsaW51eC4qfGZyZWVic2QuKiknCitDT01QQVRJQkxFX0hPU1RfYXJtdjdhID0gJ251bGwnCiAKIGluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbwogCkBAIC0zMywxMSArMzIsNiBAQAogCiBFWFRSQV9PRUNPTkYgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGFyZ2VmaWxlJywgJy0tZW5hYmxlLWxhcmdlZmlsZScsICctLWRpc2FibGUtbGFyZ2VmaWxlJywgZCl9IgogCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICAoIGNkICR7U30KLSAgICAgICR7U30vYXV0b2dlbi5zaCApCi19Ci0KIGRvX2luc3RhbGxfYXBwZW5kICgpIHsKICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2dydWIuZAogICAgIHJtIC1yZiAke0R9JHtsaWJkaXJ9L2NoYXJzZXQuYWxpYXMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2xpYmFjcGkvZmlsZXMvbGliYWNwaV9maXhfZm9yX3gzMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2xpYmFjcGkvZmlsZXMvbGliYWNwaV9maXhfZm9yX3gzMi5wYXRjaAppbmRleCAyZmVkMzQ0Li44NmExNmMyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9saWJhY3BpL2ZpbGVzL2xpYmFjcGlfZml4X2Zvcl94MzIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvbGliYWNwaS9maWxlcy9saWJhY3BpX2ZpeF9mb3JfeDMyLnBhdGNoCkBAIC03LDcgKzcsNyBAQAogCiBQYXRjaCBSZWNlaXZlZCBmcm9tOiAgSC5KLiBMdSA8aGpsLnRvb2xzQGdtYWlsLmNvbT4KIAotU2lnbmVkLU9mZi1CeTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4gMjAxMS8xMi8wNQorU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4gMjAxMS8xMi8wNQogCiBJbmRleDogbGliYWNwaS0wLjIvTWFrZWZpbGUKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2xpYmFjcGkvZmlsZXMvdXNlX2NvcnJlY3Rfc3RyaXBfaW5fY3Jvc3NfZW52aXJvbm1lbnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9saWJhY3BpL2ZpbGVzL3VzZV9jb3JyZWN0X3N0cmlwX2luX2Nyb3NzX2Vudmlyb25tZW50LnBhdGNoCmluZGV4IGJjYTc1ZmIuLmVmMzc2YWEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2xpYmFjcGkvZmlsZXMvdXNlX2NvcnJlY3Rfc3RyaXBfaW5fY3Jvc3NfZW52aXJvbm1lbnQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvbGliYWNwaS9maWxlcy91c2VfY29ycmVjdF9zdHJpcF9pbl9jcm9zc19lbnZpcm9ubWVudC5wYXRjaApAQCAtNiw3ICs2LDcgQEAKIHwgbWFrZTogKioqIFt0ZXN0LWxpYmFjcGldIEVycm9yIDEKIHwgRVJST1I6IG9lX3J1bm1ha2UgZmFpbGVkCiAKLVNpZ25lZC1PZmYtQnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+IDIwMTEvMTIvMDcKK1NpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+IDIwMTEvMTIvMDcKIAogSW5kZXg6IGxpYmFjcGktMC4yL01ha2VmaWxlCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9scnpzei9scnpzei0wLjEyLjIwL2xyenN6X2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2xyenN6L2xyenN6LTAuMTIuMjAvbHJ6c3pfZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoCmluZGV4IGI0NTI5ZjQuLjY4MmYxYzkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2xyenN6L2xyenN6LTAuMTIuMjAvbHJ6c3pfZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2xyenN6L2xyenN6LTAuMTIuMjAvbHJ6c3pfZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoCkBAIC05LDcgKzksNyBAQAogfCBzcmMvTWFrZWZpbGUuYW06MTE6IGVycm9yOiBhdXRvbWF0aWMgZGUtQU5TSS1maWNhdGlvbiBzdXBwb3J0IGhhcyBiZWVuIHJlbW92ZWQKIAogCi1TaWduZWQtT2ZmLUJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KIDIwMTIvMDUvMDMKIAogSW5kZXg6IGxyenN6LTAuMTIuMjAvY29uZmlndXJlLmluCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlsc18zLjQuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzXzMuNC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzM2JlNTI1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzXzMuNC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotU1VNTUFSWSA9ICJQQ0kgdXRpbGl0aWVzIgotREVTQ1JJUFRJT04gPSAnVGhlIFBDSSBVdGlsaXRpZXMgcGFja2FnZSBjb250YWlucyBhIGxpYnJhcnkgZm9yIHBvcnRhYmxlIGFjY2VzcyBcCi10byBQQ0kgYnVzIGNvbmZpZ3VyYXRpb24gc3BhY2UgYW5kIHNldmVyYWwgdXRpbGl0aWVzIGJhc2VkIG9uIHRoaXMgbGlicmFyeS4nCi1IT01FUEFHRSA9ICJodHRwOi8vYXRyZXkua2FybGluLm1mZi5jdW5pLmN6L35tai9wY2l1dGlscy5zaHRtbCIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLQotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLURFUEVORFMgPSAiemxpYiBrbW9kIgotCi1TUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vc29mdHdhcmUvdXRpbHMvcGNpdXRpbHMvcGNpdXRpbHMtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ndWVzcy1maXgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFrZWZpbGUucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzNTc2M2JiMWVhYjdiYzliZjZlYjZlZmI3MmNiYzhhMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4NjU1NTRjYzU2MDRkMTY0NGJkOGRhMzhkOTQ4NDU0MDVlMmEzMTlhNmQ1YWNhYmM2YTAyOTY0MTc2ODRhODJhIgotCi1pbmhlcml0IG11bHRpbGliX2hlYWRlcgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ2h3ZGInLCAnJywgZCl9IgotUEFDS0FHRUNPTkZJR1tod2RiXSA9ICJIV0RCPXllcyxIV0RCPW5vLHVkZXYiCi0KLVBDSV9DT05GX0ZMQUcgPSAiWkxJQj15ZXMgRE5TPXllcyBTSEFSRUQ9eWVzIgotCi0jIHNlZSBjb25maWd1cmUucGF0Y2gKLWRvX2NvbmZpZ3VyZSAoKSB7Ci0JKAotCSAgY2QgbGliICYmIFwKLQkgICMgRVhUUkFfT0VDT05GIGZvciB0aGlzIHJlY2lwZSBjb3VsZCBvbmx5IHBvc3NpYmx5IGNvbnRhaW4gJ0hXREI9eWVzL25vJywgc28gd2UgcHV0IGl0Ci0JICAjIGJlZm9yZSAuL2NvbmZpZ3VyZQotCSAgJHtQQ0lfQ09ORl9GTEFHfSAke0VYVFJBX09FQ09ORn0gLi9jb25maWd1cmUgJHtQVn0gJHtkYXRhZGlyfSAke1RBUkdFVF9PU30gJHtUQVJHRVRfQVJDSH0KLQkpCi19Ci0KLWV4cG9ydCBQUkVGSVggPSAiJHtwcmVmaXh9IgotZXhwb3J0IFNCSU5ESVIgPSAiJHtzYmluZGlyfSIKLWV4cG9ydCBTSEFSRURJUiA9ICIke2RhdGFkaXJ9IgotZXhwb3J0IE1BTkRJUiA9ICIke21hbmRpcn0iCi0KLUVYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9ICR7UENJX0NPTkZfRkxBR30iCi0KLSMgVGhlIGNvbmZpZ3VyZSBzY3JpcHQgYnJlYWtzIGlmIHRoZSBIT1NUIHZhcmlhYmxlIGlzIHNldAotSE9TVFt1bmV4cG9ydF0gPSAiMSIKLQotZG9faW5zdGFsbCAoKSB7Ci0Jb2VfcnVubWFrZSBERVNURElSPSR7RH0gaW5zdGFsbCBpbnN0YWxsLWxpYgotCi0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0JbG4gLXMgLi4vc2Jpbi9sc3BjaSAke0R9JHtiaW5kaXJ9L2xzcGNpCi0KLQlvZV9tdWx0aWxpYl9oZWFkZXIgcGNpL2NvbmZpZy5oCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS1pZHMgbGlicGNpIgotRklMRVNfJHtQTn0taWRzID0gIiR7ZGF0YWRpcn0vcGNpLmlkcyoiCi1GSUxFU19saWJwY2kgPSAiJHtsaWJkaXJ9L2xpYnBjaS5zby4qIgotU1VNTUFSWV8ke1BOfS1pZHMgPSAiUENJIHV0aWxpdGllcyAtIGRldmljZSBJRCBkYXRhYmFzZSIKLURFU0NSSVBUSU9OXyR7UE59LWlkcyA9ICJQYWNrYWdlIHByb3ZpZGluZyB0aGUgUENJIGRldmljZSBJRCBkYXRhYmFzZSBmb3IgcGNpdXRpbHMuIgotUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LWlkcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzXzMuNS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHNfMy41LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDMyYjExOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzXzMuNS4xLmJiCkBAIC0wLDAgKzEsNjAgQEAKK1NVTU1BUlkgPSAiUENJIHV0aWxpdGllcyIKK0RFU0NSSVBUSU9OID0gJ1RoZSBQQ0kgVXRpbGl0aWVzIHBhY2thZ2UgY29udGFpbnMgYSBsaWJyYXJ5IGZvciBwb3J0YWJsZSBhY2Nlc3MgXAordG8gUENJIGJ1cyBjb25maWd1cmF0aW9uIHNwYWNlIGFuZCBzZXZlcmFsIHV0aWxpdGllcyBiYXNlZCBvbiB0aGlzIGxpYnJhcnkuJworSE9NRVBBR0UgPSAiaHR0cDovL2F0cmV5Lmthcmxpbi5tZmYuY3VuaS5jei9+bWovcGNpdXRpbHMuc2h0bWwiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCisKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCitERVBFTkRTID0gInpsaWIga21vZCIKKworU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L3NvZnR3YXJlL3V0aWxzL3BjaXV0aWxzL3BjaXV0aWxzLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZ3Vlc3MtZml4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21ha2VmaWxlLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMDg3OWE4ZjdhYzUxZjRlODc0Y2ZjNmIzNTIxYTEzY2MiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmJmM2E0NjA1YTU2MmZiNmI4Yjc2NzNiZmY4NWE0NzRhNWNmMzgzZWQ3ZTRiZDg4ODZiNGYwOTM5MDEzZDQyZiIKKworaW5oZXJpdCBtdWx0aWxpYl9oZWFkZXIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICdod2RiJywgJycsIGQpfSIKK1BBQ0tBR0VDT05GSUdbaHdkYl0gPSAiSFdEQj15ZXMsSFdEQj1ubyx1ZGV2IgorCitQQ0lfQ09ORl9GTEFHID0gIlpMSUI9eWVzIEROUz15ZXMgU0hBUkVEPXllcyIKKworIyBzZWUgY29uZmlndXJlLnBhdGNoCitkb19jb25maWd1cmUgKCkgeworCSgKKwkgIGNkIGxpYiAmJiBcCisJICAjIFBBQ0tBR0VDT05GSUdfQ09ORkFSR1MgZm9yIHRoaXMgcmVjaXBlIGNvdWxkIG9ubHkgcG9zc2libHkgY29udGFpbiAnSFdEQj15ZXMvbm8nLAorCSAgIyBzbyB3ZSBwdXQgaXQgYmVmb3JlIC4vY29uZmlndXJlCisJICAke1BDSV9DT05GX0ZMQUd9ICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gLi9jb25maWd1cmUgJHtQVn0gJHtkYXRhZGlyfSAke1RBUkdFVF9PU30gJHtUQVJHRVRfQVJDSH0KKwkpCit9CisKK2V4cG9ydCBQUkVGSVggPSAiJHtwcmVmaXh9IgorZXhwb3J0IFNCSU5ESVIgPSAiJHtzYmluZGlyfSIKK2V4cG9ydCBTSEFSRURJUiA9ICIke2RhdGFkaXJ9IgorZXhwb3J0IE1BTkRJUiA9ICIke21hbmRpcn0iCisKK0VYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9ICR7UENJX0NPTkZfRkxBR30iCisKKyMgVGhlIGNvbmZpZ3VyZSBzY3JpcHQgYnJlYWtzIGlmIHRoZSBIT1NUIHZhcmlhYmxlIGlzIHNldAorSE9TVFt1bmV4cG9ydF0gPSAiMSIKKworZG9faW5zdGFsbCAoKSB7CisJb2VfcnVubWFrZSBERVNURElSPSR7RH0gaW5zdGFsbCBpbnN0YWxsLWxpYgorCisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisJbG4gLXMgLi4vc2Jpbi9sc3BjaSAke0R9JHtiaW5kaXJ9L2xzcGNpCisKKwlvZV9tdWx0aWxpYl9oZWFkZXIgcGNpL2NvbmZpZy5oCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1pZHMgbGlicGNpIgorRklMRVNfJHtQTn0taWRzID0gIiR7ZGF0YWRpcn0vcGNpLmlkcyoiCitGSUxFU19saWJwY2kgPSAiJHtsaWJkaXJ9L2xpYnBjaS5zby4qIgorU1VNTUFSWV8ke1BOfS1pZHMgPSAiUENJIHV0aWxpdGllcyAtIGRldmljZSBJRCBkYXRhYmFzZSIKK0RFU0NSSVBUSU9OXyR7UE59LWlkcyA9ICJQYWNrYWdlIHByb3ZpZGluZyB0aGUgUENJIGRldmljZSBJRCBkYXRhYmFzZSBmb3IgcGNpdXRpbHMuIgorUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LWlkcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjbWNpYXV0aWxzL3BjbWNpYXV0aWxzXzAxOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjbWNpYXV0aWxzL3BjbWNpYXV0aWxzXzAxOC5iYgppbmRleCAzNTU2YTQ1Li5iZjBmNThhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wY21jaWF1dGlscy9wY21jaWF1dGlsc18wMTguYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNtY2lhdXRpbHMvcGNtY2lhdXRpbHNfMDE4LmJiCkBAIC05LDUgKzksMyBAQAogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU3YzI3YmU4ZjA0ZWY0ZDUzNWJjZmE5ODg1NjczMTZjYzU3NjU5ZmU2OTA2ODMyNzQ4NmRhYjUzNzkxZTY1NTgiCiAKIFBSID0gInIxIgotCi1GSUxFU18ke1BOfSArPSAiKi91ZGV2ICovKi91ZGV2IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcG9pbnRlcmNhbC9wb2ludGVyY2FsL0NPUFlJTkcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wb2ludGVyY2FsL3BvaW50ZXJjYWwvQ09QWUlORwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjNmNTI5My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wb2ludGVyY2FsL3BvaW50ZXJjYWwvQ09QWUlORworKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGhpcyBpcyBhIGJsYW5rIENPUFlJTkcgZmlsZSwgYW5kIHNob3VsZCBiZSBmaWxsZWQgaW4gYnkgb3JpZ2luYWwgYXV0aG9yIGluIGZ1dHVyZS4KLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcG9pbnRlcmNhbC9wb2ludGVyY2FsL3BvaW50ZXJjYWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wb2ludGVyY2FsL3BvaW50ZXJjYWwvcG9pbnRlcmNhbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTY5ZGUyOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wb2ludGVyY2FsL3BvaW50ZXJjYWwvcG9pbnRlcmNhbAorKysgL2Rldi9udWxsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wb2ludGVyY2FsL3BvaW50ZXJjYWwvcWVtdWFybS9wb2ludGVyY2FsIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcG9pbnRlcmNhbC9wb2ludGVyY2FsL3FlbXVhcm0vcG9pbnRlcmNhbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWJkODRjYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wb2ludGVyY2FsL3BvaW50ZXJjYWwvcWVtdWFybS9wb2ludGVyY2FsCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotODMxMyA0IC04NTI2IDcgODMzNCAtODI2MDQgNjU1MzYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BvaW50ZXJjYWwvcG9pbnRlcmNhbC9xZW11YXJtdjYvcG9pbnRlcmNhbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BvaW50ZXJjYWwvcG9pbnRlcmNhbC9xZW11YXJtdjYvcG9pbnRlcmNhbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWJkODRjYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wb2ludGVyY2FsL3BvaW50ZXJjYWwvcWVtdWFybXY2L3BvaW50ZXJjYWwKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi04MzEzIDQgLTg1MjYgNyA4MzM0IC04MjYwNCA2NTUzNgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcG9pbnRlcmNhbC9wb2ludGVyY2FsL3FlbXVhcm12Ny9wb2ludGVyY2FsIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcG9pbnRlcmNhbC9wb2ludGVyY2FsL3FlbXVhcm12Ny9wb2ludGVyY2FsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYmQ4NGNhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BvaW50ZXJjYWwvcG9pbnRlcmNhbC9xZW11YXJtdjcvcG9pbnRlcmNhbAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLTgzMTMgNCAtODUyNiA3IDgzMzQgLTgyNjA0IDY1NTM2CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wb2ludGVyY2FsL3BvaW50ZXJjYWwvcWVtdW1pcHMvcG9pbnRlcmNhbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BvaW50ZXJjYWwvcG9pbnRlcmNhbC9xZW11bWlwcy9wb2ludGVyY2FsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYmQ4NGNhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BvaW50ZXJjYWwvcG9pbnRlcmNhbC9xZW11bWlwcy9wb2ludGVyY2FsCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotODMxMyA0IC04NTI2IDcgODMzNCAtODI2MDQgNjU1MzYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BvaW50ZXJjYWwvcG9pbnRlcmNhbC9xZW11cHBjL3BvaW50ZXJjYWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wb2ludGVyY2FsL3BvaW50ZXJjYWwvcWVtdXBwYy9wb2ludGVyY2FsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMmQ2ZTM3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BvaW50ZXJjYWwvcG9pbnRlcmNhbC9xZW11cHBjL3BvaW50ZXJjYWwKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wb2ludGVyY2FsL3BvaW50ZXJjYWwvcWVtdXg4Ni02NC9wb2ludGVyY2FsIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcG9pbnRlcmNhbC9wb2ludGVyY2FsL3FlbXV4ODYtNjQvcG9pbnRlcmNhbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjQwMDUzZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wb2ludGVyY2FsL3BvaW50ZXJjYWwvcWVtdXg4Ni02NC9wb2ludGVyY2FsCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotMTI4MCAwIDEwMDIgMCA5NjAgMzI4IDY1NTM2CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wb2ludGVyY2FsL3BvaW50ZXJjYWwvcWVtdXg4Ni9wb2ludGVyY2FsIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcG9pbnRlcmNhbC9wb2ludGVyY2FsL3FlbXV4ODYvcG9pbnRlcmNhbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjQwMDUzZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wb2ludGVyY2FsL3BvaW50ZXJjYWwvcWVtdXg4Ni9wb2ludGVyY2FsCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotMTI4MCAwIDEwMDIgMCA5NjAgMzI4IDY1NTM2CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wb2ludGVyY2FsL3BvaW50ZXJjYWxfMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcG9pbnRlcmNhbC9wb2ludGVyY2FsXzAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGY3MzVhNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wb2ludGVyY2FsL3BvaW50ZXJjYWxfMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotU1VNTUFSWSA9ICJUb3VjaHNjcmVlbiBjYWxpYnJhdGlvbiBkYXRhIgotU0VDVElPTiA9ICJiYXNlIgotUFIgPSAicjExIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00YjVmY2ZjODdmYjYxNTg2MGQzOThiNWUzODY4NWVkZiIKLQotU1JDX1VSSSA9ICJmaWxlOi8vcG9pbnRlcmNhbCBcCi0gICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HIgotCi1TID0gIiR7V09SS0RJUn0iCi0KLWRvX2luc3RhbGwoKSB7Ci0JIyBPbmx5IGluc3RhbGwgZmlsZSBpZiBpdCBoYXMgYSBjb250ZW50cwotCWlmIFsgLXMgJHtTfS9wb2ludGVyY2FsIF07IHRoZW4KLQkgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vCi0JICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9wb2ludGVyY2FsICR7RH0ke3N5c2NvbmZkaXJ9LwotCWZpCi19Ci0KLUFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCi1QQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgotSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3N5c3RlbWQtYm9vdC9maWxlcy8wMDAxLXVzZS1sbnItd3JhcHBlci1pbnN0ZWFkLW9mLWxvb2tpbmctZm9yLXJlbGF0aXZlLW9wdGkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9zeXN0ZW1kLWJvb3QvZmlsZXMvMDAwMS11c2UtbG5yLXdyYXBwZXItaW5zdGVhZC1vZi1sb29raW5nLWZvci1yZWxhdGl2ZS1vcHRpLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwM2QyODYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9zeXN0ZW1kLWJvb3QvZmlsZXMvMDAwMS11c2UtbG5yLXdyYXBwZXItaW5zdGVhZC1vZi1sb29raW5nLWZvci1yZWxhdGl2ZS1vcHRpLnBhdGNoCkBAIC0wLDAgKzEsNjEgQEAKK0Zyb20gOWRjZDJjODAzNDc0OTNmNzM4MDBkOGMxY2I1MzlmMWRhZWYxNDM5NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDI2IEp1bCAyMDE2IDAzOjU0OjQyIC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIHVzZSBsbnIgd3JhcHBlciBpbnN0ZWFkIG9mIGxvb2tpbmcgZm9yIC0tcmVsYXRpdmUgb3B0aW9uIGZvciBsbgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLVNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIE1ha2VmaWxlLmFtICB8IDYgKysrLS0tCisgY29uZmlndXJlLmFjIHwgMiAtLQorIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggMzA1MDk5YS4uZjA4ZDAyMyAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTI0Nyw3ICsyNDcsNyBAQCBkZWZpbmUgbW92ZS10by1yb290bGliZGlyCisgCQkkKE1LRElSX1ApICQoREVTVERJUikkKHJvb3RsaWJkaXIpICYmIFwKKyAJCXNvX2ltZ19uYW1lPSQkKHJlYWRsaW5rICQoREVTVERJUikkKGxpYmRpcikvJCRsaWJuYW1lKSAmJiBcCisgCQlybSAtZiAkKERFU1RESVIpJChsaWJkaXIpLyQkbGlibmFtZSAmJiBcCistCQkkKExOX1MpIC0tcmVsYXRpdmUgLWYgJChERVNURElSKSQocm9vdGxpYmRpcikvJCRzb19pbWdfbmFtZSAkKERFU1RESVIpJChsaWJkaXIpLyQkbGlibmFtZSAmJiBcCisrCQlsbnIgJChERVNURElSKSQocm9vdGxpYmRpcikvJCRzb19pbWdfbmFtZSAkKERFU1RESVIpJChsaWJkaXIpLyQkbGlibmFtZSAmJiBcCisgCQltdiAkKERFU1RESVIpJChsaWJkaXIpLyQkbGlibmFtZS4qICQoREVTVERJUikkKHJvb3RsaWJkaXIpOyBcCisgCWZpCisgZW5kZWYKK0BAIC0zMjEsNyArMzIxLDcgQEAgZGVmaW5lIGluc3RhbGwtcmVsYXRpdmUtYWxpYXNlcworIAl3aGlsZSBbIC1uICIkJDEiIF07IGRvIFwKKyAJCSQoTUtESVJfUCkgYGRpcm5hbWUgJChERVNURElSKSQkZGlyLyQkMmAgJiYgXAorIAkJcm0gLWYgJChERVNURElSKSQkZGlyLyQkMiAmJiBcCistCQkkKExOX1MpIC0tcmVsYXRpdmUgJChERVNURElSKSQkMSAkKERFU1RESVIpJCRkaXIvJCQyICYmIFwKKysJCWxuciAkKERFU1RESVIpJCQxICQoREVTVERJUikkJGRpci8kJDIgJiYgXAorIAkJc2hpZnQgMiB8fCBleGl0ICQkPzsgXAorIAlkb25lCisgZW5kZWYKK0BAIC0yOTA2LDcgKzI5MDYsNyBAQCBzeXN0ZW1kX2RidXMxX2dlbmVyYXRvcl9MREFERCA9IFwKKyBkYnVzMS1nZW5lcmF0b3ItaW5zdGFsbC1ob29rOgorIAkkKEFNX1ZfYXQpJChNS0RJUl9QKSAkKERFU1RESVIpJCh1c2VyZ2VuZXJhdG9yZGlyKQorIAkkKEFNX1ZfUk0pcm0gLWYgJChERVNURElSKSQodXNlcmdlbmVyYXRvcmRpcikvc3lzdGVtZC1kYnVzMS1nZW5lcmF0b3IKKy0JJChBTV9WX0xOKSQoTE5fUykgLS1yZWxhdGl2ZSAtZiAkKERFU1RESVIpJChzeXN0ZW1nZW5lcmF0b3JkaXIpL3N5c3RlbWQtZGJ1czEtZ2VuZXJhdG9yICQoREVTVERJUikkKHVzZXJnZW5lcmF0b3JkaXIpL3N5c3RlbWQtZGJ1czEtZ2VuZXJhdG9yCisrCSQoQU1fVl9MTilsbnIgJChERVNURElSKSQoc3lzdGVtZ2VuZXJhdG9yZGlyKS9zeXN0ZW1kLWRidXMxLWdlbmVyYXRvciAkKERFU1RESVIpJCh1c2VyZ2VuZXJhdG9yZGlyKS9zeXN0ZW1kLWRidXMxLWdlbmVyYXRvcgorIAorIGRidXMxLWdlbmVyYXRvci11bmluc3RhbGwtaG9vazoKKyAJcm0gLWYgJChERVNURElSKSQodXNlcmdlbmVyYXRvcmRpcikvc3lzdGVtZC1kYnVzMS1nZW5lcmF0b3IKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDMyOTg2MWEuLjUyYzZlM2QgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTExMCw4ICsxMTAsNiBAQCBBQ19QQVRIX1BST0coW1NVTE9HSU5dLCBbc3Vsb2dpbl0sIFsvdXNyL3NiaW4vc3Vsb2dpbl0sIFskUEFUSDovdXNyL3NiaW46L3NiaW5dKQorIEFDX1BBVEhfUFJPRyhbTU9VTlRfUEFUSF0sIFttb3VudF0sIFsvdXNyL2Jpbi9tb3VudF0sIFskUEFUSDovdXNyL3NiaW46L3NiaW5dKQorIEFDX1BBVEhfUFJPRyhbVU1PVU5UX1BBVEhdLCBbdW1vdW50XSwgWy91c3IvYmluL3Vtb3VudF0sIFskUEFUSDovdXNyL3NiaW46L3NiaW5dKQorIAorLUFTX0lGKFshIGxuIC0tcmVsYXRpdmUgLS1oZWxwID4gL2Rldi9udWxsIDI+JjFdLCBbQUNfTVNHX0VSUk9SKFsqKiogbG4gZG9lc24ndCBzdXBwb3J0IC0tcmVsYXRpdmUgKioqXSldKQorLQorIE00X0RFRklORVM9CisgCisgQUNfQ0hFQ0tfVE9PTChPQkpDT1BZLCBvYmpjb3B5KQorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9zeXN0ZW1kLWJvb3Qvc3lzdGVtZC1ib290LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3Avc3lzdGVtZC1ib290L3N5c3RlbWQtYm9vdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjExNjRlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3Avc3lzdGVtZC1ib290L3N5c3RlbWQtYm9vdC5iYgpAQCAtMCwwICsxLDM4IEBACityZXF1aXJlIHJlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQuaW5jCisKK0RFUEVORFMgPSAiaW50bHRvb2wtbmF0aXZlIGxpYmNhcCB1dGlsLWxpbnV4IGdudS1lZmkiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLXVzZS1sbnItd3JhcHBlci1pbnN0ZWFkLW9mLWxvb2tpbmctZm9yLXJlbGF0aXZlLW9wdGkucGF0Y2giCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0Citpbmhlcml0IGRlcGxveQorCitFWFRSQV9PRUNPTkYgPSAiIC0tZW5hYmxlLWdudWVmaSBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1lZmktaW5jbHVkZWRpcj0ke1NUQUdJTkdfSU5DRElSfSBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1lZmktbGRzZGlyPSR7U1RBR0lOR19MSUJESVJ9IFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWVmaS1saWJkaXI9JHtTVEFHSU5HX0xJQkRJUn0gXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtbWFucGFnZXMgXAorICAgICAgICAgICAgICAgIgorCisjIEltcG9ydGVkIGZyb20gZ3VtbWlib290IHJlY2lwZQorVFVORV9DQ0FSR1NfcmVtb3ZlID0gIi1tZnBtYXRoPXNzZSIKK0NPTVBBVElCTEVfSE9TVCA9ICIoeDg2XzY0Lip8aS44Ni4qKS1saW51eCIKKworZG9fY29tcGlsZSgpIHsKKwlTWVNURU1EX0JPT1RfRUZJX0FSQ0g9ImlhMzIiCisJaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIng4Nl82NCIgXTsgdGhlbgorCQlTWVNURU1EX0JPT1RfRUZJX0FSQ0g9Ing2NCIKKwlmaQorCisJb2VfcnVubWFrZSBzeXN0ZW1kLWJvb3Qke1NZU1RFTURfQk9PVF9FRklfQVJDSH0uZWZpCit9CisKK2RvX2luc3RhbGwoKSB7CisJIyBCeXBhc3Mgc3lzdGVtZCBpbnN0YWxsYXRpb24gd2l0aCBhIE5PUAorCToKK30KKworZG9fZGVwbG95ICgpIHsKKwlpbnN0YWxsICR7Qn0vc3lzdGVtZC1ib290Ki5lZmkgJHtERVBMT1lESVJ9Cit9CithZGR0YXNrIGRlcGxveSBiZWZvcmUgZG9fYnVpbGQgYWZ0ZXIgZG9fY29tcGlsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1mdy11dGlsc18yMDE2LjAzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1mdy11dGlsc18yMDE2LjAzLmJiCmluZGV4IGRmZGE1YzEuLjc5ZjE1NDggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtZnctdXRpbHNfMjAxNi4wMy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWZ3LXV0aWxzXzIwMTYuMDMuYmIKQEAgLTQwLDEwICs0MCw3IEBACiAJaW5zdGFsbCAtbSA3NTUgJHtTfS90b29scy9lbnYvZndfcHJpbnRlbnYgJHtEfSR7YmluZGlyX2Nyb3NzfS9md19zZXRlbnYKIH0KIAotU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTX2NsYXNzLWNyb3NzID0gInVib290X2Z3X3V0aWxzX2Nyb3NzIgotdWJvb3RfZndfdXRpbHNfY3Jvc3MoKSB7Ci0Jc3lzcm9vdF9zdGFnZV9kaXIgJHtEfSR7YmluZGlyX2Nyb3NzfSAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc30KLX0KK1NZU1JPT1RfRElSU19hcHBlbmRfY2xhc3MtY3Jvc3MgPSAiICR7YmluZGlyX2Nyb3NzfSIKIAogUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKIEJCQ0xBU1NFWFRFTkQgPSAiY3Jvc3MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QuaW5jCmluZGV4IDNiYTg2NmQuLjI1MmFhZTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QuaW5jCkBAIC05LDEwICs5LDExIEBACiBTUkNfVVJJID0gImdpdDovL2dpdC5kZW54LmRlL3UtYm9vdC5naXQ7YnJhbmNoPW1hc3RlciIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKK0IgPSAiJHtXT1JLRElSfS9idWlsZCIKIAogUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKIAotaW5oZXJpdCB1Ym9vdC1jb25maWcgZGVwbG95Citpbmhlcml0IHVib290LWNvbmZpZyB1Ym9vdC1leHRsaW51eC1jb25maWcgdWJvb3Qtc2lnbiBkZXBsb3kKIAogRVhUUkFfT0VNQUtFID0gJ0NST1NTX0NPTVBJTEU9JHtUQVJHRVRfUFJFRklYfSBDQz0iJHtUQVJHRVRfUFJFRklYfWdjYyAke1RPT0xDSEFJTl9PUFRJT05TfSIgVj0xJwogRVhUUkFfT0VNQUtFICs9ICdIT1NUQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IicKQEAgLTMyLDcgKzMzLDYgQEAKICMgYnV0IGVuYWJsZSBpbmRpdmlkdWFsIHJlY2lwZXMgdG8gY2hhbmdlIHRoaXMgdmFsdWUuCiBVQk9PVF9TVUZGSVggPz89ICJiaW4iCiBVQk9PVF9JTUFHRSA/PSAidS1ib290LSR7TUFDSElORX0tJHtQVn0tJHtQUn0uJHtVQk9PVF9TVUZGSVh9IgotVUJPT1RfQklOQVJZID89ICJ1LWJvb3QuJHtVQk9PVF9TVUZGSVh9IgogVUJPT1RfU1lNTElOSyA/PSAidS1ib290LSR7TUFDSElORX0uJHtVQk9PVF9TVUZGSVh9IgogVUJPT1RfTUFLRV9UQVJHRVQgPz0gImFsbCIKIApAQCAtNjUsOSArNjUsMTUgQEAKIFVCT09UX0VOVl9JTUFHRSA/PSAiJHtVQk9PVF9FTlZ9LSR7TUFDSElORX0tJHtQVn0tJHtQUn0uJHtVQk9PVF9FTlZfU1VGRklYfSIKIFVCT09UX0VOVl9TWU1MSU5LID89ICIke1VCT09UX0VOVn0tJHtNQUNISU5FfS4ke1VCT09UX0VOVl9TVUZGSVh9IgogCisjIFUtQm9vdCBFWFRMSU5VWCB2YXJpYWJsZXMuIFUtQm9vdCBzZWFyY2hlcyBmb3IgL2Jvb3QvZXh0bGludXgvZXh0bGludXguY29uZgorIyB0byBmaW5kIEVYVExJTlVYIGNvbmYgZmlsZS4KK1VCT09UX0VYVExJTlVYX0lOU1RBTExfRElSID89ICIvYm9vdC9leHRsaW51eCIKK1VCT09UX0VYVExJTlVYX0NPTkZfTkFNRSA/PSAiZXh0bGludXguY29uZiIKK1VCT09UX0VYVExJTlVYX1NZTUxJTksgPz0gIiR7VUJPT1RfRVhUTElOVVhfQ09ORl9OQU1FfS0ke01BQ0hJTkV9LSR7UFJ9IgorCiBkb19jb21waWxlICgpIHsKIAlpZiBbICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2xkLWlzLWdvbGQnLCAnbGQtaXMtZ29sZCcsICcnLCBkKX0iID0gImxkLWlzLWdvbGQiIF0gOyB0aGVuCi0JCXNlZCAtaSAncy8kKENST1NTX0NPTVBJTEUpbGQkLyQoQ1JPU1NfQ09NUElMRSlsZC5iZmQvZycgY29uZmlnLm1rCisJCXNlZCAtaSAncy8kKENST1NTX0NPTVBJTEUpbGQkLyQoQ1JPU1NfQ09NUElMRSlsZC5iZmQvZycgJHtTfS9jb25maWcubWsKIAlmaQogCiAJdW5zZXQgTERGTEFHUwpAQCAtNzksNDEgKzg1LDQ4IEBACiAJCWVjaG8gJHtVQk9PVF9MT0NBTFZFUlNJT059ID4gJHtCfS8uc2NtdmVyc2lvbgogCQllY2hvICR7VUJPT1RfTE9DQUxWRVJTSU9OfSA+ICR7U30vLnNjbXZlcnNpb24KIAlmaQotICAgIAotICAgIGlmIFsgIngke1VCT09UX0NPTkZJR30iICE9ICJ4IiBdCisKKyAgICBpZiBbIC1uICIke1VCT09UX0NPTkZJR30iIF0KICAgICB0aGVuCisgICAgICAgIHVuc2V0IGkgaiBrCiAgICAgICAgIGZvciBjb25maWcgaW4gJHtVQk9PVF9NQUNISU5FfTsgZG8KLSAgICAgICAgICAgIGk9YGV4cHIgJGkgKyAxYDsKLSAgICAgICAgICAgIGZvciB0eXBlICBpbiAke1VCT09UX0NPTkZJR307IGRvCi0gICAgICAgICAgICAgICAgaj1gZXhwciAkaiArIDFgOworICAgICAgICAgICAgaT0kKGV4cHIgJGkgKyAxKTsKKyAgICAgICAgICAgIGZvciB0eXBlIGluICR7VUJPT1RfQ09ORklHfTsgZG8KKyAgICAgICAgICAgICAgICBqPSQoZXhwciAkaiArIDEpOwogICAgICAgICAgICAgICAgIGlmIFsgJGogLWVxICRpIF0KICAgICAgICAgICAgICAgICB0aGVuCi0gICAgICAgICAgICAgICAgICAgIG9lX3J1bm1ha2UgTz0ke2NvbmZpZ30gJHtjb25maWd9Ci0gICAgICAgICAgICAgICAgICAgIG9lX3J1bm1ha2UgTz0ke2NvbmZpZ30gJHtVQk9PVF9NQUtFX1RBUkdFVH0KLSAgICAgICAgICAgICAgICAgICAgY3AgICR7U30vJHtjb25maWd9LyR7VUJPT1RfQklOQVJZfSAgJHtTfS8ke2NvbmZpZ30vdS1ib290LSR7dHlwZX0uJHtVQk9PVF9TVUZGSVh9CisgICAgICAgICAgICAgICAgICAgIG9lX3J1bm1ha2UgLUMgJHtTfSBPPSR7Qn0vJHtjb25maWd9ICR7Y29uZmlnfQorICAgICAgICAgICAgICAgICAgICBvZV9ydW5tYWtlIC1DICR7U30gTz0ke0J9LyR7Y29uZmlnfSAke1VCT09UX01BS0VfVEFSR0VUfQorICAgICAgICAgICAgICAgICAgICBmb3IgYmluYXJ5IGluICR7VUJPT1RfQklOQVJJRVN9OyBkbworICAgICAgICAgICAgICAgICAgICAgICAgaz0kKGV4cHIgJGsgKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIFsgJGsgLWVxICRpIF07IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcCAke0J9LyR7Y29uZmlnfS8ke2JpbmFyeX0gJHtCfS8ke2NvbmZpZ30vdS1ib290LSR7dHlwZX0uJHtVQk9PVF9TVUZGSVh9CisgICAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICBkb25lCisgICAgICAgICAgICAgICAgICAgIHVuc2V0IGsKICAgICAgICAgICAgICAgICBmaQogICAgICAgICAgICAgZG9uZQogICAgICAgICAgICAgdW5zZXQgIGoKICAgICAgICAgZG9uZQogICAgICAgICB1bnNldCAgaQogICAgIGVsc2UKLSAgICAgICAgb2VfcnVubWFrZSAke1VCT09UX01BQ0hJTkV9Ci0gICAgICAgIG9lX3J1bm1ha2UgJHtVQk9PVF9NQUtFX1RBUkdFVH0KKyAgICAgICAgb2VfcnVubWFrZSAtQyAke1N9IE89JHtCfSAke1VCT09UX01BQ0hJTkV9CisgICAgICAgIG9lX3J1bm1ha2UgLUMgJHtTfSBPPSR7Qn0gJHtVQk9PVF9NQUtFX1RBUkdFVH0KICAgICBmaQogCiB9CiAKIGRvX2luc3RhbGwgKCkgewotICAgIGlmIFsgIngke1VCT09UX0NPTkZJR30iICE9ICJ4IiBdCisgICAgaWYgWyAtbiAiJHtVQk9PVF9DT05GSUd9IiBdCiAgICAgdGhlbgogICAgICAgICBmb3IgY29uZmlnIGluICR7VUJPT1RfTUFDSElORX07IGRvCi0gICAgICAgICAgICBpPWBleHByICRpICsgMWA7CisgICAgICAgICAgICBpPSQoZXhwciAkaSArIDEpOwogICAgICAgICAgICAgZm9yIHR5cGUgaW4gJHtVQk9PVF9DT05GSUd9OyBkbwotICAgICAgICAgICAgICAgIGo9YGV4cHIgJGogKyAxYDsKKyAgICAgICAgICAgICAgICBqPSQoZXhwciAkaiArIDEpOwogICAgICAgICAgICAgICAgIGlmIFsgJGogLWVxICRpIF0KICAgICAgICAgICAgICAgICB0aGVuCiAgICAgICAgICAgICAgICAgICAgIGluc3RhbGwgLWQgJHtEfS9ib290Ci0gICAgICAgICAgICAgICAgICAgIGluc3RhbGwgJHtTfS8ke2NvbmZpZ30vdS1ib290LSR7dHlwZX0uJHtVQk9PVF9TVUZGSVh9ICR7RH0vYm9vdC91LWJvb3QtJHt0eXBlfS0ke1BWfS0ke1BSfS4ke1VCT09UX1NVRkZJWH0KKyAgICAgICAgICAgICAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtCfS8ke2NvbmZpZ30vdS1ib290LSR7dHlwZX0uJHtVQk9PVF9TVUZGSVh9ICR7RH0vYm9vdC91LWJvb3QtJHt0eXBlfS0ke1BWfS0ke1BSfS4ke1VCT09UX1NVRkZJWH0KICAgICAgICAgICAgICAgICAgICAgbG4gLXNmIHUtYm9vdC0ke3R5cGV9LSR7UFZ9LSR7UFJ9LiR7VUJPT1RfU1VGRklYfSAke0R9L2Jvb3QvJHtVQk9PVF9CSU5BUll9LSR7dHlwZX0KICAgICAgICAgICAgICAgICAgICAgbG4gLXNmIHUtYm9vdC0ke3R5cGV9LSR7UFZ9LSR7UFJ9LiR7VUJPT1RfU1VGRklYfSAke0R9L2Jvb3QvJHtVQk9PVF9CSU5BUll9CiAgICAgICAgICAgICAgICAgZmkKQEAgLTEyMywyMSArMTM2LDIxIEBACiAgICAgICAgIHVuc2V0ICBpCiAgICAgZWxzZQogICAgICAgICBpbnN0YWxsIC1kICR7RH0vYm9vdAotICAgICAgICBpbnN0YWxsICR7U30vJHtVQk9PVF9CSU5BUll9ICR7RH0vYm9vdC8ke1VCT09UX0lNQUdFfQorICAgICAgICBpbnN0YWxsIC1tIDY0NCAke0J9LyR7VUJPT1RfQklOQVJZfSAke0R9L2Jvb3QvJHtVQk9PVF9JTUFHRX0KICAgICAgICAgbG4gLXNmICR7VUJPT1RfSU1BR0V9ICR7RH0vYm9vdC8ke1VCT09UX0JJTkFSWX0KICAgICBmaQogCi0gICAgaWYgWyAieCR7VUJPT1RfRUxGfSIgIT0gIngiIF0KKyAgICBpZiBbIC1uICIke1VCT09UX0VMRn0iIF0KICAgICB0aGVuCi0gICAgICAgIGlmIFsgIngke1VCT09UX0NPTkZJR30iICE9ICJ4IiBdCisgICAgICAgIGlmIFsgLW4gIiR7VUJPT1RfQ09ORklHfSIgXQogICAgICAgICB0aGVuCiAgICAgICAgICAgICBmb3IgY29uZmlnIGluICR7VUJPT1RfTUFDSElORX07IGRvCi0gICAgICAgICAgICAgICAgaT1gZXhwciAkaSArIDFgOworICAgICAgICAgICAgICAgIGk9JChleHByICRpICsgMSk7CiAgICAgICAgICAgICAgICAgZm9yIHR5cGUgaW4gJHtVQk9PVF9DT05GSUd9OyBkbwotICAgICAgICAgICAgICAgICAgICBqPWBleHByICRqICsgMWA7CisgICAgICAgICAgICAgICAgICAgIGo9JChleHByICRqICsgMSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIFsgJGogLWVxICRpIF0KICAgICAgICAgICAgICAgICAgICAgdGhlbgotICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbCAke1N9LyR7Y29uZmlnfS8ke1VCT09UX0VMRn0gJHtEfS9ib290L3UtYm9vdC0ke3R5cGV9LSR7UFZ9LSR7UFJ9LiR7VUJPT1RfRUxGX1NVRkZJWH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7Qn0vJHtjb25maWd9LyR7VUJPT1RfRUxGfSAke0R9L2Jvb3QvdS1ib290LSR7dHlwZX0tJHtQVn0tJHtQUn0uJHtVQk9PVF9FTEZfU1VGRklYfQogICAgICAgICAgICAgICAgICAgICAgICAgbG4gLXNmIHUtYm9vdC0ke3R5cGV9LSR7UFZ9LSR7UFJ9LiR7VUJPT1RfRUxGX1NVRkZJWH0gJHtEfS9ib290LyR7VUJPT1RfQklOQVJZfS0ke3R5cGV9CiAgICAgICAgICAgICAgICAgICAgICAgICBsbiAtc2YgdS1ib290LSR7dHlwZX0tJHtQVn0tJHtQUn0uJHtVQk9PVF9FTEZfU1VGRklYfSAke0R9L2Jvb3QvJHtVQk9PVF9CSU5BUll9CiAgICAgICAgICAgICAgICAgICAgIGZpCkBAIC0xNDYsNyArMTU5LDcgQEAKICAgICAgICAgICAgIGRvbmUKICAgICAgICAgICAgIHVuc2V0IGkKICAgICAgICAgZWxzZQotICAgICAgICAgICAgaW5zdGFsbCAke1N9LyR7VUJPT1RfRUxGfSAke0R9L2Jvb3QvJHtVQk9PVF9FTEZfSU1BR0V9CisgICAgICAgICAgICBpbnN0YWxsIC1tIDY0NCAke0J9LyR7VUJPT1RfRUxGfSAke0R9L2Jvb3QvJHtVQk9PVF9FTEZfSU1BR0V9CiAgICAgICAgICAgICBsbiAtc2YgJHtVQk9PVF9FTEZfSU1BR0V9ICR7RH0vYm9vdC8ke1VCT09UX0VMRl9CSU5BUll9CiAgICAgICAgIGZpCiAgICAgZmkKQEAgLTE1NiwxNyArMTY5LDE3IEBACiAgICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vZndfZW52LmNvbmZpZyAke0R9JHtzeXNjb25mZGlyfS9md19lbnYuY29uZmlnCiAgICAgZmkKIAotICAgIGlmIFsgIngke1NQTF9CSU5BUll9IiAhPSAieCIgXQorICAgIGlmIFsgLW4gIiR7U1BMX0JJTkFSWX0iIF0KICAgICB0aGVuCi0gICAgICAgIGlmIFsgIngke1VCT09UX0NPTkZJR30iICE9ICJ4IiBdICAgCisgICAgICAgIGlmIFsgLW4gIiR7VUJPT1RfQ09ORklHfSIgXQogICAgICAgICB0aGVuCiAgICAgICAgICAgICBmb3IgY29uZmlnIGluICR7VUJPT1RfTUFDSElORX07IGRvCi0gICAgICAgICAgICAgICAgaT1gZXhwciAkaSArIDFgOworICAgICAgICAgICAgICAgIGk9JChleHByICRpICsgMSk7CiAgICAgICAgICAgICAgICAgZm9yIHR5cGUgaW4gJHtVQk9PVF9DT05GSUd9OyBkbwotICAgICAgICAgICAgICAgICAgICBqPWBleHByICRqICsgMWA7CisgICAgICAgICAgICAgICAgICAgIGo9JChleHByICRqICsgMSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIFsgJGogLWVxICRpIF0KICAgICAgICAgICAgICAgICAgICAgdGhlbgotICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGwgJHtTfS8ke2NvbmZpZ30vJHtTUExfQklOQVJZfSAke0R9L2Jvb3QvJHtTUExfSU1BR0V9LSR7dHlwZX0tJHtQVn0tJHtQUn0KKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsIC1tIDY0NCAke0J9LyR7Y29uZmlnfS8ke1NQTF9CSU5BUll9ICR7RH0vYm9vdC8ke1NQTF9JTUFHRX0tJHt0eXBlfS0ke1BWfS0ke1BSfQogICAgICAgICAgICAgICAgICAgICAgICAgIGxuIC1zZiAke1NQTF9JTUFHRX0tJHt0eXBlfS0ke1BWfS0ke1BSfSAke0R9L2Jvb3QvJHtTUExfQklOQVJZTkFNRX0tJHt0eXBlfQogICAgICAgICAgICAgICAgICAgICAgICAgIGxuIC1zZiAke1NQTF9JTUFHRX0tJHt0eXBlfS0ke1BWfS0ke1BSfSAke0R9L2Jvb3QvJHtTUExfQklOQVJZTkFNRX0KICAgICAgICAgICAgICAgICAgICAgZmkKQEAgLTE3NSw2MSArMTg4LDY3IEBACiAgICAgICAgICAgICBkb25lCiAgICAgICAgICAgICB1bnNldCAgaQogICAgICAgICBlbHNlCi0gICAgICAgICAgICBpbnN0YWxsICR7U30vJHtTUExfQklOQVJZfSAke0R9L2Jvb3QvJHtTUExfSU1BR0V9CisgICAgICAgICAgICBpbnN0YWxsIC1tIDY0NCAke0J9LyR7U1BMX0JJTkFSWX0gJHtEfS9ib290LyR7U1BMX0lNQUdFfQogICAgICAgICAgICAgbG4gLXNmICR7U1BMX0lNQUdFfSAke0R9L2Jvb3QvJHtTUExfQklOQVJZTkFNRX0KICAgICAgICAgZmkKICAgICBmaQogCi0gICAgaWYgWyAieCR7VUJPT1RfRU5WfSIgIT0gIngiIF0KKyAgICBpZiBbIC1uICIke1VCT09UX0VOVn0iIF0KICAgICB0aGVuCi0gICAgICAgIGluc3RhbGwgJHtXT1JLRElSfS8ke1VCT09UX0VOVl9CSU5BUll9ICR7RH0vYm9vdC8ke1VCT09UX0VOVl9JTUFHRX0KKyAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS8ke1VCT09UX0VOVl9CSU5BUll9ICR7RH0vYm9vdC8ke1VCT09UX0VOVl9JTUFHRX0KICAgICAgICAgbG4gLXNmICR7VUJPT1RfRU5WX0lNQUdFfSAke0R9L2Jvb3QvJHtVQk9PVF9FTlZfQklOQVJZfQogICAgIGZpCisKKyAgICBpZiBbICIke1VCT09UX0VYVExJTlVYfSIgPSAiMSIgXQorICAgIHRoZW4KKyAgICAgICAgaW5zdGFsbCAtRG0gMDY0NCAke1VCT09UX0VYVExJTlVYX0NPTkZJR30gJHtEfS8ke1VCT09UX0VYVExJTlVYX0lOU1RBTExfRElSfS8ke1VCT09UX0VYVExJTlVYX0NPTkZfTkFNRX0KKyAgICBmaQorCiB9CiAKIEZJTEVTXyR7UE59ID0gIi9ib290ICR7c3lzY29uZmRpcn0iCiAKIGRvX2RlcGxveSAoKSB7Ci0gICAgaWYgWyAieCR7VUJPT1RfQ09ORklHfSIgIT0gIngiIF0KKyAgICBpZiBbIC1uICIke1VCT09UX0NPTkZJR30iIF0KICAgICB0aGVuCiAgICAgICAgIGZvciBjb25maWcgaW4gJHtVQk9PVF9NQUNISU5FfTsgZG8KLSAgICAgICAgICAgIGk9YGV4cHIgJGkgKyAxYDsKKyAgICAgICAgICAgIGk9JChleHByICRpICsgMSk7CiAgICAgICAgICAgICBmb3IgdHlwZSBpbiAke1VCT09UX0NPTkZJR307IGRvCi0gICAgICAgICAgICAgICAgaj1gZXhwciAkaiArIDFgOworICAgICAgICAgICAgICAgIGo9JChleHByICRqICsgMSk7CiAgICAgICAgICAgICAgICAgaWYgWyAkaiAtZXEgJGkgXQogICAgICAgICAgICAgICAgIHRoZW4KICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbCAtZCAke0RFUExPWURJUn0KLSAgICAgICAgICAgICAgICAgICAgaW5zdGFsbCAke1N9LyR7Y29uZmlnfS91LWJvb3QtJHt0eXBlfS4ke1VCT09UX1NVRkZJWH0gJHtERVBMT1lESVJ9L3UtYm9vdC0ke3R5cGV9LSR7UFZ9LSR7UFJ9LiR7VUJPT1RfU1VGRklYfQorICAgICAgICAgICAgICAgICAgICBpbnN0YWxsIC1tIDY0NCAke0J9LyR7Y29uZmlnfS91LWJvb3QtJHt0eXBlfS4ke1VCT09UX1NVRkZJWH0gJHtERVBMT1lESVJ9L3UtYm9vdC0ke3R5cGV9LSR7UFZ9LSR7UFJ9LiR7VUJPT1RfU1VGRklYfQogICAgICAgICAgICAgICAgICAgICBjZCAke0RFUExPWURJUn0KICAgICAgICAgICAgICAgICAgICAgbG4gLXNmIHUtYm9vdC0ke3R5cGV9LSR7UFZ9LSR7UFJ9LiR7VUJPT1RfU1VGRklYfSAke1VCT09UX1NZTUxJTkt9LSR7dHlwZX0KICAgICAgICAgICAgICAgICAgICAgbG4gLXNmIHUtYm9vdC0ke3R5cGV9LSR7UFZ9LSR7UFJ9LiR7VUJPT1RfU1VGRklYfSAke1VCT09UX1NZTUxJTkt9CiAgICAgICAgICAgICAgICAgICAgIGxuIC1zZiB1LWJvb3QtJHt0eXBlfS0ke1BWfS0ke1BSfS4ke1VCT09UX1NVRkZJWH0gJHtVQk9PVF9CSU5BUll9LSR7dHlwZX0KICAgICAgICAgICAgICAgICAgICAgbG4gLXNmIHUtYm9vdC0ke3R5cGV9LSR7UFZ9LSR7UFJ9LiR7VUJPT1RfU1VGRklYfSAke1VCT09UX0JJTkFSWX0KLSAgICAgICAgICAgICAgICBmaSAKLSAgICAgICAgICAgIGRvbmUgCisgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGRvbmUKICAgICAgICAgICAgIHVuc2V0ICBqCiAgICAgICAgIGRvbmUKICAgICAgICAgdW5zZXQgIGkKICAgICBlbHNlCiAgICAgICAgIGluc3RhbGwgLWQgJHtERVBMT1lESVJ9Ci0gICAgICAgIGluc3RhbGwgJHtTfS8ke1VCT09UX0JJTkFSWX0gJHtERVBMT1lESVJ9LyR7VUJPT1RfSU1BR0V9CisgICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7Qn0vJHtVQk9PVF9CSU5BUll9ICR7REVQTE9ZRElSfS8ke1VCT09UX0lNQUdFfQogICAgICAgICBjZCAke0RFUExPWURJUn0KICAgICAgICAgcm0gLWYgJHtVQk9PVF9CSU5BUll9ICR7VUJPT1RfU1lNTElOS30KICAgICAgICAgbG4gLXNmICR7VUJPT1RfSU1BR0V9ICR7VUJPT1RfU1lNTElOS30KICAgICAgICAgbG4gLXNmICR7VUJPT1RfSU1BR0V9ICR7VUJPT1RfQklOQVJZfQogICAgZmkKIAotICAgIGlmIFsgIngke1VCT09UX0VMRn0iICE9ICJ4IiBdCisgICAgaWYgWyAtbiAiJHtVQk9PVF9FTEZ9IiBdCiAgICAgdGhlbgotICAgICAgICBpZiBbICJ4JHtVQk9PVF9DT05GSUd9IiAhPSAieCIgXQorICAgICAgICBpZiBbIC1uICIke1VCT09UX0NPTkZJR30iIF0KICAgICAgICAgdGhlbgogICAgICAgICAgICAgZm9yIGNvbmZpZyBpbiAke1VCT09UX01BQ0hJTkV9OyBkbwotICAgICAgICAgICAgICAgIGk9YGV4cHIgJGkgKyAxYDsKKyAgICAgICAgICAgICAgICBpPSQoZXhwciAkaSArIDEpOwogICAgICAgICAgICAgICAgIGZvciB0eXBlIGluICR7VUJPT1RfQ09ORklHfTsgZG8KLSAgICAgICAgICAgICAgICAgICAgaj1gZXhwciAkaiArIDFgOworICAgICAgICAgICAgICAgICAgICBqPSQoZXhwciAkaiArIDEpOwogICAgICAgICAgICAgICAgICAgICBpZiBbICRqIC1lcSAkaSBdCiAgICAgICAgICAgICAgICAgICAgIHRoZW4KLSAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGwgJHtTfS8ke2NvbmZpZ30vJHtVQk9PVF9FTEZ9ICR7REVQTE9ZRElSfS91LWJvb3QtJHt0eXBlfS0ke1BWfS0ke1BSfS4ke1VCT09UX0VMRl9TVUZGSVh9CisgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsIC1tIDY0NCAke0J9LyR7Y29uZmlnfS8ke1VCT09UX0VMRn0gJHtERVBMT1lESVJ9L3UtYm9vdC0ke3R5cGV9LSR7UFZ9LSR7UFJ9LiR7VUJPT1RfRUxGX1NVRkZJWH0KICAgICAgICAgICAgICAgICAgICAgICAgIGxuIC1zZiB1LWJvb3QtJHt0eXBlfS0ke1BWfS0ke1BSfS4ke1VCT09UX0VMRl9TVUZGSVh9ICR7REVQTE9ZRElSfS8ke1VCT09UX0VMRl9CSU5BUll9LSR7dHlwZX0KICAgICAgICAgICAgICAgICAgICAgICAgIGxuIC1zZiB1LWJvb3QtJHt0eXBlfS0ke1BWfS0ke1BSfS4ke1VCT09UX0VMRl9TVUZGSVh9ICR7REVQTE9ZRElSfS8ke1VCT09UX0VMRl9CSU5BUll9CiAgICAgICAgICAgICAgICAgICAgICAgICBsbiAtc2YgdS1ib290LSR7dHlwZX0tJHtQVn0tJHtQUn0uJHtVQk9PVF9FTEZfU1VGRklYfSAke0RFUExPWURJUn0vJHtVQk9PVF9FTEZfU1lNTElOS30tJHt0eXBlfQpAQCAtMjQwLDI0ICsyNTksMjQgQEAKICAgICAgICAgICAgIGRvbmUKICAgICAgICAgICAgIHVuc2V0IGkKICAgICAgICAgZWxzZQotICAgICAgICAgICAgaW5zdGFsbCAke1N9LyR7VUJPT1RfRUxGfSAke0RFUExPWURJUn0vJHtVQk9PVF9FTEZfSU1BR0V9CisgICAgICAgICAgICBpbnN0YWxsIC1tIDY0NCAke0J9LyR7VUJPT1RfRUxGfSAke0RFUExPWURJUn0vJHtVQk9PVF9FTEZfSU1BR0V9CiAgICAgICAgICAgICBsbiAtc2YgJHtVQk9PVF9FTEZfSU1BR0V9ICR7REVQTE9ZRElSfS8ke1VCT09UX0VMRl9CSU5BUll9CiAgICAgICAgICAgICBsbiAtc2YgJHtVQk9PVF9FTEZfSU1BR0V9ICR7REVQTE9ZRElSfS8ke1VCT09UX0VMRl9TWU1MSU5LfQogICAgICAgICBmaQogICAgIGZpCiAKIAotICAgICBpZiBbICJ4JHtTUExfQklOQVJZfSIgIT0gIngiIF0KKyAgICAgaWYgWyAtbiAiJHtTUExfQklOQVJZfSIgXQogICAgICB0aGVuCi0gICAgICAgICBpZiBbICJ4JHtVQk9PVF9DT05GSUd9IiAhPSAieCIgXSAgIAorICAgICAgICAgaWYgWyAtbiAiJHtVQk9PVF9DT05GSUd9IiBdCiAgICAgICAgICB0aGVuCiAgICAgICAgICAgICAgZm9yIGNvbmZpZyBpbiAke1VCT09UX01BQ0hJTkV9OyBkbwotICAgICAgICAgICAgICAgICBpPWBleHByICRpICsgMWA7CisgICAgICAgICAgICAgICAgIGk9JChleHByICRpICsgMSk7CiAgICAgICAgICAgICAgICAgIGZvciB0eXBlIGluICR7VUJPT1RfQ09ORklHfTsgZG8KLSAgICAgICAgICAgICAgICAgICAgIGo9YGV4cHIgJGogKyAxYDsKKyAgICAgICAgICAgICAgICAgICAgIGo9JChleHByICRqICsgMSk7CiAgICAgICAgICAgICAgICAgICAgICBpZiBbICRqIC1lcSAkaSBdCiAgICAgICAgICAgICAgICAgICAgICB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbCAke1N9LyR7Y29uZmlnfS8ke1NQTF9CSU5BUll9ICR7REVQTE9ZRElSfS8ke1NQTF9JTUFHRX0tJHt0eXBlfS0ke1BWfS0ke1BSfQorICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7Qn0vJHtjb25maWd9LyR7U1BMX0JJTkFSWX0gJHtERVBMT1lESVJ9LyR7U1BMX0lNQUdFfS0ke3R5cGV9LSR7UFZ9LSR7UFJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgcm0gLWYgJHtERVBMT1lESVJ9LyR7U1BMX0JJTkFSWU5BTUV9ICR7REVQTE9ZRElSfS8ke1NQTF9TWU1MSU5LfS0ke3R5cGV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgbG4gLXNmICR7U1BMX0lNQUdFfS0ke3R5cGV9LSR7UFZ9LSR7UFJ9ICR7REVQTE9ZRElSfS8ke1NQTF9CSU5BUllOQU1FfS0ke3R5cGV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgbG4gLXNmICR7U1BMX0lNQUdFfS0ke3R5cGV9LSR7UFZ9LSR7UFJ9ICR7REVQTE9ZRElSfS8ke1NQTF9CSU5BUllOQU1FfQpAQCAtMjY5LDcgKzI4OCw3IEBACiAgICAgICAgICAgICAgZG9uZQogICAgICAgICAgICAgIHVuc2V0ICBpCiAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgaW5zdGFsbCAke1N9LyR7U1BMX0JJTkFSWX0gJHtERVBMT1lESVJ9LyR7U1BMX0lNQUdFfQorICAgICAgICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7Qn0vJHtTUExfQklOQVJZfSAke0RFUExPWURJUn0vJHtTUExfSU1BR0V9CiAgICAgICAgICAgICAgcm0gLWYgJHtERVBMT1lESVJ9LyR7U1BMX0JJTkFSWU5BTUV9ICR7REVQTE9ZRElSfS8ke1NQTF9TWU1MSU5LfQogICAgICAgICAgICAgIGxuIC1zZiAke1NQTF9JTUFHRX0gJHtERVBMT1lESVJ9LyR7U1BMX0JJTkFSWU5BTUV9CiAgICAgICAgICAgICAgbG4gLXNmICR7U1BMX0lNQUdFfSAke0RFUExPWURJUn0vJHtTUExfU1lNTElOS30KQEAgLTI3NywxMyArMjk2LDIwIEBACiAgICAgIGZpCiAKIAotICAgIGlmIFsgIngke1VCT09UX0VOVn0iICE9ICJ4IiBdCisgICAgaWYgWyAtbiAiJHtVQk9PVF9FTlZ9IiBdCiAgICAgdGhlbgotICAgICAgICBpbnN0YWxsICR7V09SS0RJUn0vJHtVQk9PVF9FTlZfQklOQVJZfSAke0RFUExPWURJUn0vJHtVQk9PVF9FTlZfSU1BR0V9CisgICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vJHtVQk9PVF9FTlZfQklOQVJZfSAke0RFUExPWURJUn0vJHtVQk9PVF9FTlZfSU1BR0V9CiAgICAgICAgIHJtIC1mICR7REVQTE9ZRElSfS8ke1VCT09UX0VOVl9CSU5BUll9ICR7REVQTE9ZRElSfS8ke1VCT09UX0VOVl9TWU1MSU5LfQogICAgICAgICBsbiAtc2YgJHtVQk9PVF9FTlZfSU1BR0V9ICR7REVQTE9ZRElSfS8ke1VCT09UX0VOVl9CSU5BUll9CiAgICAgICAgIGxuIC1zZiAke1VCT09UX0VOVl9JTUFHRX0gJHtERVBMT1lESVJ9LyR7VUJPT1RfRU5WX1NZTUxJTkt9CiAgICAgZmkKKworICAgIGlmIFsgIiR7VUJPT1RfRVhUTElOVVh9IiA9ICIxIiBdCisgICAgdGhlbgorICAgICAgICBpbnN0YWxsIC1tIDY0NCAke1VCT09UX0VYVExJTlVYX0NPTkZJR30gJHtERVBMT1lESVJ9LyR7VUJPT1RfRVhUTElOVVhfU1lNTElOS30KKyAgICAgICAgbG4gLXNmICR7VUJPT1RfRVhUTElOVVhfU1lNTElOS30gJHtERVBMT1lESVJ9LyR7VUJPT1RfRVhUTElOVVhfQ09ORl9OQU1FfS0ke01BQ0hJTkV9CisgICAgICAgIGxuIC1zZiAke1VCT09UX0VYVExJTlVYX1NZTUxJTkt9ICR7REVQTE9ZRElSfS8ke1VCT09UX0VYVExJTlVYX0NPTkZfTkFNRX0KKyAgICBmaQogfQogCiBhZGR0YXNrIGRlcGxveSBiZWZvcmUgZG9fYnVpbGQgYWZ0ZXIgZG9fY29tcGlsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3Avdjg2ZC92ODZkL2FhcmNoNjQtaG9zdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3Y4NmQvdjg2ZC9hYXJjaDY0LWhvc3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzAxZmVkNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3Y4NmQvdjg2ZC9hYXJjaDY0LWhvc3QucGF0Y2gKQEAgLTAsMCArMSwxOCBAQAorQWNjZXB0IGFhcmNoNjQgYXMgdmFsaWQgYnVpbGQgaG9zdAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK0luZGV4OiB2ODZkLTAuMS4xMC9jb25maWd1cmUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB2ODZkLTAuMS4xMC5vcmlnL2NvbmZpZ3VyZQorKysrIHY4NmQtMC4xLjEwL2NvbmZpZ3VyZQorQEAgLTI2LDcgKzI2LDcgQEAgY29wdF94ODZlbXVfdGVzdCgpCisgCWxvY2FsIG09YHVuYW1lIC1tYAorIAlpZiBbICIkbSIgPSAiaTY4NiIgLW8gIiRtIiA9ICJpNTg2IiAtbyAiJG0iID0gImk0ODYiIC1vICIkbSIgPSAiaTM4NiIgXTsgdGhlbgorIAkJZWNobyAibiI7CistCWVsaWYgWyAiJG0iID0gIng4Nl82NCIgXTsgdGhlbgorKwllbGlmIFsgIiRtIiA9ICJ4ODZfNjQiIC1vICIkbSIgPSAiYWFyY2g2NCIgXTsgdGhlbgorIAkJZWNobyAieSI7CisgCWVsc2UKKyAJCWVjaG8gIkl0IGxvb2tzIGxpa2UgeW91ciBhcmNoaXRlY3R1cmUgJyRtJyBpc24ndCBzdXBwb3J0ZWQgYnkgdGhpcyB2ZXJzaW9uIG9mIHY4NmQuIiA+JjIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3Y4NmQvdjg2ZF8wLjEuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC92ODZkL3Y4NmRfMC4xLjEwLmJiCmluZGV4IGY1MDIwNzIuLjEwNDZkNjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3Y4NmQvdjg2ZF8wLjEuMTAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3Avdjg2ZC92ODZkXzAuMS4xMC5iYgpAQCAtMTMsNyArMTMsOSBAQAogICAgICAgICAgICBmaWxlOi8vVXBkYXRlLXg4NmVtdS1mcm9tLVgub3JnLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2Zic2V0dXAgXAogICAgICAgICAgICBmaWxlOi8vdXZlc2FmYi5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL2FyLWZyb20tZW52LnBhdGNoIgorICAgICAgICAgICBmaWxlOi8vYXItZnJvbS1lbnYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYWFyY2g2NC1ob3N0LnBhdGNoIFwKKyIKIAogU1JDX1VSSVttZDVzdW1dID0gIjUxYzc5MmJhN2I4NzRhZDhjNDNmMGQzZGE0Y2ZhYmUwIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYzNDk2NGFlMThlZjY4Yzg0OTNhZGQyY2UxNTBlM2I0NTAyYmFkZWIwZDkxOTRiNGJkODEyNDFkMjVlNjczNWMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaS11aV8wLjYuMzIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaS11aV8wLjYuMzIuYmIKaW5kZXggMzk2NmI0Yy4uYWMzNjQ2MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGktdWlfMC42LjMyLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpLXVpXzAuNi4zMi5iYgpAQCAtNiwyMiArNiwyMCBAQAogCiByZXF1aXJlIGF2YWhpLmluYwogCi1pbmhlcml0IHB5dGhvbi1kaXIgcHl0aG9ubmF0aXZlIGRpc3Ryb19mZWF0dXJlc19jaGVjawotQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzJESVNUUk9GRUFUVVJFU30iCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjaworQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzNESVNUUk9GRUFUVVJFU30iCiAKLVBBQ0tBR0VDT05GSUcgPz89ICJkYnVzIHB5dGhvbiIKLVBBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICItLWVuYWJsZS1weXRob24sLS1kaXNhYmxlLXB5dGhvbixweXRob24tbmF0aXZlIHB5dGhvbiIKLQorU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWluc3RhbGwtR3RrQnVpbGRlci1pbnRlcmZhY2UtZmlsZXMtZm9yLS5wYXRjaCIKIFNSQ19VUklbbWQ1c3VtXSA9ICIyMmI1ZTcwNWQzZWFiYjMxZDI2ZjJlMWU3YjA3NDAxMyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJkNTQ5OTExODVkNTE0YTBhYmE1NGViZWI0MDhkNzU3NWI2MGY1ODE4YTc3MmUyOGZhMGUxOGI5OGJjMWRiNDU0IgogCi1ERVBFTkRTICs9ICJhdmFoaSBndGsrIGxpYmdsYWRlIgorREVQRU5EUyArPSAiYXZhaGkiCiAKLUFWQUhJX0dUSyA9ICItLWVuYWJsZS1ndGsgLS1kaXNhYmxlLWd0azMgLS1kaXNhYmxlLXB5Z3RrIgorQVZBSElfR1RLID0gImd0azMiCiAKIFMgPSAiJHtXT1JLRElSfS9hdmFoaS0ke1BWfSIKIAotUEFDS0FHRVMgPSAiJHtQTn0gJHtQTn0tdXRpbHMgJHtQTn0tZGJnICR7UE59LWRldiAke1BOfS1zdGF0aWNkZXYgJHtQTn0tZG9jIHB5dGhvbi1hdmFoaSBhdmFoaS1kaXNjb3ZlciIKK1BBQ0tBR0VTID0gIiR7UE59ICR7UE59LXV0aWxzICR7UE59LWRiZyAke1BOfS1kZXYgJHtQTn0tc3RhdGljZGV2ICR7UE59LWRvYyBhdmFoaS1kaXNjb3ZlciIKIAogRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYmF2YWhpLXVpKi5zby4qIgogRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vbGliYXZhaGktdWkke1NPTElCU0RFVn0iCkBAIC0yOSwxNCArMjcsMTAgQEAKIAogRklMRVNfJHtQTn0tdXRpbHMgPSAiJHtiaW5kaXJ9L2IqICR7ZGF0YWRpcn0vYXBwbGljYXRpb25zL2IqIgogCi1GSUxFU19weXRob24tYXZhaGkgPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vYXZhaGkgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vYXZhaGlfZGlzY292ZXIiCiBGSUxFU19hdmFoaS1kaXNjb3ZlciA9ICIke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucy9hdmFoaS1kaXNjb3Zlci5kZXNrdG9wIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vYXZhaGkvaW50ZXJmYWNlcy9hdmFoaS1kaXNjb3ZlciogXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9hdmFoaS9pbnRlcmZhY2VzL2F2YWhpLWRpc2NvdmVyLnVpIFwKICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9hdmFoaS1kaXNjb3Zlci1zdGFuZGFsb25lIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vYXZhaGkvaW50ZXJmYWNlcy9hdmFoaS1kaXNjb3Zlci5nbGFkZSIKLQotUkRFUEVORFNfcHl0aG9uLWF2YWhpID0gInB5dGhvbi1jb3JlIHB5dGhvbi1kYnVzIgotCisgICAgICAgICAgICAgICAgICAgICAgICAiCiAKIGRvX2luc3RhbGxfYXBwZW5kICgpIHsKIAlybSAke0R9JHtzeXNjb25mZGlyfSAtcmYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpLmluYwppbmRleCA4MWFhZDc5Li4yMzQ2NDZkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGkuaW5jCkBAIC0yMyw4ICsyMywxNCBAQAogICAgICAgICAgICIKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGF0aGlhdC9hdmFoaS9yZWxlYXNlcy8iCiAKLVBBQ0tBR0VDT05GSUcgPz89ICJkYnVzIgorIyBGb3IgZ3RrIHJlbGF0ZWQgUEFDS0FHRUNPTkZJR3M6IGd0aywgZ3RrMyBhbmQgcHlndGsKK0FWQUhJX0dUSyA/PSAiIgorCitQQUNLQUdFQ09ORklHID8/PSAiZGJ1cyAke0FWQUhJX0dUS30iCiBQQUNLQUdFQ09ORklHW2RidXNdID0gIi0tZW5hYmxlLWRidXMsLS1kaXNhYmxlLWRidXMsZGJ1cyIKK1BBQ0tBR0VDT05GSUdbZ3RrXSA9ICItLWVuYWJsZS1ndGssLS1kaXNhYmxlLWd0ayxndGsrIgorUEFDS0FHRUNPTkZJR1tndGszXSA9ICItLWVuYWJsZS1ndGszLC0tZGlzYWJsZS1ndGszLGd0ayszIgorUEFDS0FHRUNPTkZJR1tweWd0a10gPSAiLS1lbmFibGUtcHlndGssLS1kaXNhYmxlLXB5Z3RrLCIKIAogVVNFUkFERF9QQUNLQUdFUyA9ICJhdmFoaS1kYWVtb24gYXZhaGktYXV0b2lwZCIKIFVTRVJBRERfUEFSQU1fYXZhaGktZGFlbW9uID0gIi0tc3lzdGVtIC0taG9tZSAvdmFyL3J1bi9hdmFoaS1kYWVtb24gXApAQCAtNTEsMTQgKzU3LDEyIEBACiAgICAgICAgICAgICAgLS1kaXNhYmxlLW1hbnBhZ2VzIFwKICAgICAgICAgICAgICAke0VYVFJBX09FQ09ORl9TWVNWSU5JVH0gXAogICAgICAgICAgICAgICR7RVhUUkFfT0VDT05GX1NZU1RFTUR9IFwKLSAgICAgICAgICAgICAke0FWQUhJX0dUS30gXAogICAgICAgICAgICAiCiAKICMgVGhlIGRpc3RybyBjaG9pY2UgZGV0ZXJtaW5lcyB3aGF0IGluaXQgc2NyaXB0cyBhcmUgaW5zdGFsbGVkCiBFWFRSQV9PRUNPTkZfU1lTVklOSVQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3Zpbml0JywnLS13aXRoLWRpc3Rybz1kZWJpYW4nLCctLXdpdGgtZGlzdHJvPW5vbmUnLGQpfSIKIEVYVFJBX09FQ09ORl9TWVNURU1EID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywnLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vJywnLS13aXRob3V0LXN5c3RlbWRzeXN0ZW11bml0ZGlyJyxkKX0iCiAKLUFWQUhJX0dUSyA/PSAiLS1kaXNhYmxlLWd0ayAtLWRpc2FibGUtZ3RrMyIKIAogTERGTEFHU19hcHBlbmRfbGliYy11Y2xpYmMgPSAiIC1saW50bCIKIExERkxBR1NfYXBwZW5kX3VjbGludXgtdWNsaWJjID0gIiAtbGludGwiCkBAIC03MSw3ICs3NSw3IEBACiB9CiAKIGRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0iJHtCfS9hdmFoaS1jb21tb24vLmxpYnM6JHtCfS9hdmFoaS1jbGllbnQvLmxpYnM6JHtCfS9hdmFoaS1nbGliLy5saWJzIgorICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L2F2YWhpLWdvYmplY3QvLmxpYnM6JHtCfS9hdmFoaS1jb21tb24vLmxpYnM6JHtCfS9hdmFoaS1jbGllbnQvLmxpYnM6JHtCfS9hdmFoaS1nbGliLy5saWJzIgogfQogCiBQQUNLQUdFUyA9KyAiYXZhaGktZGFlbW9uIGxpYmF2YWhpLWNvbW1vbiBsaWJhdmFoaS1jb3JlIGxpYmF2YWhpLWNsaWVudCBhdmFoaS1kbnNjb25mZCBsaWJhdmFoaS1nbGliIGxpYmF2YWhpLXVpIGF2YWhpLWF1dG9pcGQgYXZhaGktdXRpbHMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaV8wLjYuMzIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaV8wLjYuMzIuYmIKaW5kZXggNjY3MDEwNi4uYmZhNjMwNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGlfMC42LjMyLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpXzAuNi4zMi5iYgpAQCAtMTIsNiArMTIsOCBAQAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXZhaGktZGFlbW9uL21haW4uYztlbmRsaW5lPTIxO21kNT05ZWU3NzM2OGM1NDA3YWY3N2NhYWVmMWIwNzI4NTk2OSBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdmFoaS1jbGllbnQvY2xpZW50Lmg7ZW5kbGluZT0yMzttZDU9ZjRhYzc0MWEyNWM0ZjQzNDAzOWJhM2UxOGM4Njc0Y2YiCiAKK1NSQ19VUkkgKz0gImZpbGU6Ly9hdmFoaS1maXgtcmVzb3VyY2UtdW5hdmFpYWJsZS5wYXRjaCIKKwogU1JDX1VSSVttZDVzdW1dID0gIjIyYjVlNzA1ZDNlYWJiMzFkMjZmMmUxZTdiMDc0MDEzIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ1NDk5MTE4NWQ1MTRhMGFiYTU0ZWJlYjQwOGQ3NTc1YjYwZjU4MThhNzcyZTI4ZmEwZTE4Yjk4YmMxZGI0NTQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2ZpbGVzLzAwMDEtY29uZmlndXJlLmFjLWluc3RhbGwtR3RrQnVpbGRlci1pbnRlcmZhY2UtZmlsZXMtZm9yLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2ZpbGVzLzAwMDEtY29uZmlndXJlLmFjLWluc3RhbGwtR3RrQnVpbGRlci1pbnRlcmZhY2UtZmlsZXMtZm9yLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Y2NlZjA4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvZmlsZXMvMDAwMS1jb25maWd1cmUuYWMtaW5zdGFsbC1HdGtCdWlsZGVyLWludGVyZmFjZS1maWxlcy1mb3ItLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gYTU5ZjEzZmFiMzFhNmUyNWJiMDNiMmMyYmMzYWVhNTc2Zjg1N2I2YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitEYXRlOiBTdW4sIDEyIEp1biAyMDE2IDE4OjMyOjQ5ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5hYzogaW5zdGFsbCBHdGtCdWlsZGVyIGludGVyZmFjZSBmaWxlcyBmb3IgR1RLKzMKKyB0b28KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBhZWJiNzE2Li40OGJkZjYzIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC05NjUsNyArOTY1LDcgQEAgQUNfU1VCU1QoYXZhaGlfc29ja2V0KQorICMKKyAjIEF2YWhpIGludGVyZmFjZXMgZGlyCisgIworLWlmIHRlc3QgIngkSEFWRV9QWVRIT05fREJVUyIgPSAieHllcyIgLW8gIngkSEFWRV9HVEsiID0gInh5ZXMiOyB0aGVuCisraWYgdGVzdCAieCRIQVZFX1BZVEhPTl9EQlVTIiA9ICJ4eWVzIiAtbyAieCRIQVZFX0dUSyIgPSAieHllcyIgLW8gIngkSEFWRV9HVEszIiA9ICJ4eWVzIjsgdGhlbgorIAlpbnRlcmZhY2VzZGlyPSIke2RhdGFkaXJ9LyR7UEFDS0FHRX0vaW50ZXJmYWNlcy8iCisgCUFDX1NVQlNUKGludGVyZmFjZXNkaXIpCisgZmkKKy0tIAorMi4xLjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvZmlsZXMvYXZhaGktZml4LXJlc291cmNlLXVuYXZhaWFibGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9maWxlcy9hdmFoaS1maXgtcmVzb3VyY2UtdW5hdmFpYWJsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTJmZDc1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvZmlsZXMvYXZhaGktZml4LXJlc291cmNlLXVuYXZhaWFibGUucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitCYWNrcG9ydCBmcm9tOgoraHR0cHM6Ly9naXRodWIuY29tL2V4cGVyaW1lbnRhbC1wbGF0Zm9ybS9wbGF0Zm9ybS1ob3N0bmFtZS1hdmFoaS9wdWxsLzkKKworSXQgc29tZXRpbWVzIGZhaWxzIHRvIHJ1biBhdmFoaSB3aXRoIGVycm9yOiAiQ291bGQgbm90IHJlY2VpdmUgcmV0dXJuIHZhbHVlCitmcm9tIGRhZW1vbiBwcm9jZXNzIi4gSXQgaGFzIHNhbWUgcm9vdCBjYXVzZSB3aXRoCitodHRwczovL2dpdGh1Yi5jb20vbHhjL2x4Yy9pc3N1ZXMvMjUuCisKK1NpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorLS0tCitGcm9tIDUxNTA5ODMxMDJhZDVhZDQzZjBkYWUyMDNjYjMzMmMxNjhlYjVhNzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIaW5uZXJrIEhhYXJkdCA8aGFhcmR0QGluZm9ybWF0aW9uLWNvbnRyb2wuZGU+CitEYXRlOiBUaHUsIDE3IERlYyAyMDE1IDExOjUyOjE5ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBgY2hyb290LmM6IGZvcmsoKSBmYWlsZWQ6IFJlc291cmNlIHRlbXBvcmFyaWx5CisgdW5hdmFpbGFibGVgIGFzIHBlciBodHRwczovL2dpdGh1Yi5jb20vbHhjL2x4Yy9pc3N1ZXMvMjUuCisKKy0tLQorIGF2YWhpLWRhZW1vbi9hdmFoaS1kYWVtb24uY29uZiB8IDEgLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9hdmFoaS1kYWVtb24vYXZhaGktZGFlbW9uLmNvbmYgYi9hdmFoaS1kYWVtb24vYXZhaGktZGFlbW9uLmNvbmYKK2luZGV4IDk1MTY2ZjguLjNkNWI3YTYgMTAwNjQ0CistLS0gYS9hdmFoaS1kYWVtb24vYXZhaGktZGFlbW9uLmNvbmYKKysrKyBiL2F2YWhpLWRhZW1vbi9hdmFoaS1kYWVtb24uY29uZgorQEAgLTY1LDQgKzY1LDMgQEAgcmxpbWl0LWRhdGE9NDE5NDMwNAorIHJsaW1pdC1mc2l6ZT0wCisgcmxpbWl0LW5vZmlsZT03NjgKKyBybGltaXQtc3RhY2s9NDE5NDMwNAorLXJsaW1pdC1ucHJvYz0zCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvQ1ZFLTIwMTYtMTI4Nl8yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL0NWRS0yMDE2LTEyODZfMi5wYXRjaAppbmRleCBhMzFlYTgxLi41ZjVjYjBkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvQ1ZFLTIwMTYtMTI4Nl8yLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9DVkUtMjAxNi0xMjg2XzIucGF0Y2gKQEAgLTUsNiArNSw5IEBACiAgZmFpbHVyZSBkdWUgdG8gaW1wcm9wZXIgICAgICAgICAgICAgICAgICAgICAgICAgRE5BTUUgaGFuZGxpbmcgd2hlbiBwYXJzaW5nCiAgZmV0Y2ggcmVwbHkgbWVzc2FnZXMuICAgICAgICAgICAgICAgICAgICAgICAgIChDVkUtMjAxNi0xMjg2KSBbUlQgIzQxNzUzXQogCitDVkU6IENWRS0yMDE2LTEyODYKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKwogKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgMmRlODllZTlkZThjOGRhOWRjMTUzYTc1NGIwMmRjZGJiN2ZlMjM3NCkKIFNpZ25lZC1vZmYtYnk6IFNvbmEgU2FybWFkaSA8c29uYS5zYXJtYWRpQGVuZWEuY29tPgogLS0tCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvQ1ZFLTIwMTYtMjc3NS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9DVkUtMjAxNi0yNzc1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzOTMwNjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvQ1ZFLTIwMTYtMjc3NS5wYXRjaApAQCAtMCwwICsxLDkwIEBACitGcm9tIDlkOGFiYThhNzc3ODcyMWFlMmNlZTZlNDY3MGE4ZTZiZTY1OTBiMDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXJrIEFuZHJld3MgPG1hcmthQGlzYy5vcmc+CitEYXRlOiBXZWQsIDEyIE9jdCAyMDE2IDE5OjUyOjU5ICswOTAwCitTdWJqZWN0OiBbUEFUQ0hdCis0NDA2LiAgIFtzZWN1cml0eV0gICAgICBnZXRycnNldGJ5bmFtZSB3aXRoIGEgbm9uIGFic29sdXRlIG5hbWUgY291bGQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIgYW4gaW5maW5pdGUgcmVjdXJzaW9uIGJ1ZyBpbiBsd3Jlc2QKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBuYW1lZCB3aXRoIGx3cmVzIGNvbmZpZ3VyZWQgaWYgd2hlbiBjb21iaW5lZAorICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBhIHNlYXJjaCBsaXN0IGVudHJ5IHRoZSByZXN1bHRpbmcgbmFtZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgdG9vIGxvbmcuIChDVkUtMjAxNi0yNzc1KSBbUlQgIzQyNjk0XQorCitCYWNrcG9ydCBjb21taXQgMzhjYzJkMTRlMjE4ZTUzNmUwMTAyZmE3MGRlZWY5OTQ2MTM1NDIzMiBmcm9tIHRoZQordjkuMTEuMF9wYXRjaCBicmFuY2guCisKK0NWRTogQ1ZFLTIwMTYtMjc3NQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTaWduZWQtb2ZmLWJ5OiB6aGVuZ3J1b3FpbiA8emhlbmdycS5mbnN0QGNuLmZ1aml0c3UuY29tPgorCistLS0KKyBDSEFOR0VTICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2ICsrKysrKworIGJpbi9uYW1lZC9sd2RncmJuLmMgICAgICAgICAgICAgIHwgMTYgKysrKysrKysrKy0tLS0tLQorIGJpbi90ZXN0cy9zeXN0ZW0vbHdyZXNkL2x3dGVzdC5jIHwgIDkgKysrKysrKystCisgMyBmaWxlcyBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvQ0hBTkdFUyBiL0NIQU5HRVMKK2luZGV4IGQyZTMzNjAuLmQwYTlkMTIgMTAwNjQ0CistLS0gYS9DSEFOR0VTCisrKysgYi9DSEFOR0VTCitAQCAtMSwzICsxLDkgQEAKKys0NDA2LiAgIFtzZWN1cml0eV0gICAgICBnZXRycnNldGJ5bmFtZSB3aXRoIGEgbm9uIGFic29sdXRlIG5hbWUgY291bGQKKysgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyIGFuIGluZmluaXRlIHJlY3Vyc2lvbiBidWcgaW4gbHdyZXNkCisrICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG5hbWVkIHdpdGggbHdyZXMgY29uZmlndXJlZCBpZiB3aGVuIGNvbWJpbmVkCisrICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBhIHNlYXJjaCBsaXN0IGVudHJ5IHRoZSByZXN1bHRpbmcgbmFtZSBpcworKyAgICAgICAgICAgICAgICAgICAgICAgIHRvbyBsb25nLiAoQ1ZFLTIwMTYtMjc3NSkgW1JUICM0MjY5NF0KKysKKyA0MzIyLiAgW3NlY3VyaXR5XSAgICAgIER1cGxpY2F0ZSBFRE5TIENPT0tJRSBvcHRpb25zIGluIGEgcmVzcG9uc2UgY291bGQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIgYW4gYXNzZXJ0aW9uIGZhaWx1cmUuIChDVkUtMjAxNi0yMDg4KQorICAgICAgICAgICAgICAgICAgICAgICAgW1JUICM0MTgwOV0KK2RpZmYgLS1naXQgYS9iaW4vbmFtZWQvbHdkZ3Jibi5jIGIvYmluL25hbWVkL2x3ZGdyYm4uYworaW5kZXggM2U3YjE1Yi4uZTFlOWFkYyAxMDA2NDQKKy0tLSBhL2Jpbi9uYW1lZC9sd2RncmJuLmMKKysrKyBiL2Jpbi9uYW1lZC9sd2RncmJuLmMKK0BAIC00MDMsMTQgKzQwMywxOCBAQCBzdGFydF9sb29rdXAobnNfbHdkY2xpZW50X3QgKmNsaWVudCkgeworIAlJTlNJU1QoY2xpZW50LT5sb29rdXAgPT0gTlVMTCk7CisgCisgCWRuc19maXhlZG5hbWVfaW5pdCgmYWJzbmFtZSk7CistCXJlc3VsdCA9IG5zX2x3c2VhcmNoY3R4X2N1cnJlbnQoJmNsaWVudC0+c2VhcmNoY3R4LAorLQkJCQkJZG5zX2ZpeGVkbmFtZV9uYW1lKCZhYnNuYW1lKSk7CisrCisgCS8qCistCSAqIFRoaXMgd2lsbCByZXR1cm4gZmFpbHVyZSBpZiByZWxhdGl2ZSBuYW1lICsgc3VmZml4IGlzIHRvbyBsb25nLgorLQkgKiBJbiB0aGlzIGNhc2UsIGp1c3QgZ28gb24gdG8gdGhlIG5leHQgZW50cnkgaW4gdGhlIHNlYXJjaCBwYXRoLgorKyAgICAgICAgICogUGVyZm9ybSBzZWFyY2ggYWNyb3NzIGFsbCBzZWFyY2ggZG9tYWlucyB1bnRpbCBzdWNjZXNzCisrICAgICAgICAgKiBpcyByZXR1cm5lZC4gUmV0dXJuIGluIGNhc2Ugb2YgZmFpbHVyZS4KKyAJICovCistCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykKKy0JCXN0YXJ0X2xvb2t1cChjbGllbnQpOworKyAgICAgICAgd2hpbGUgKG5zX2x3c2VhcmNoY3R4X2N1cnJlbnQoJmNsaWVudC0+c2VhcmNoY3R4LAorKyAgICAgICAgICAgICAgICAgICAgICAgIGRuc19maXhlZG5hbWVfbmFtZSgmYWJzbmFtZSkpICE9IElTQ19SX1NVQ0NFU1MpIHsKKysgICAgICAgICAgICAgICAgaWYgKG5zX2x3c2VhcmNoY3R4X25leHQoJmNsaWVudC0+c2VhcmNoY3R4KSAhPSBJU0NfUl9TVUNDRVNTKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgbnNfbHdkY2xpZW50X2Vycm9ycGt0c2VuZChjbGllbnQsIExXUkVTX1JfRkFJTFVSRSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICB9CisgCisgCXJlc3VsdCA9IGRuc19sb29rdXBfY3JlYXRlKGNtLT5tY3R4LAorIAkJCQkgICBkbnNfZml4ZWRuYW1lX25hbWUoJmFic25hbWUpLAorZGlmZiAtLWdpdCBhL2Jpbi90ZXN0cy9zeXN0ZW0vbHdyZXNkL2x3dGVzdC5jIGIvYmluL3Rlc3RzL3N5c3RlbS9sd3Jlc2QvbHd0ZXN0LmMKK2luZGV4IGFkOWI1NTEuLjNlYjRhNjYgMTAwNjQ0CistLS0gYS9iaW4vdGVzdHMvc3lzdGVtL2x3cmVzZC9sd3Rlc3QuYworKysrIGIvYmluL3Rlc3RzL3N5c3RlbS9sd3Jlc2QvbHd0ZXN0LmMKK0BAIC03NjgsNyArNzY4LDE0IEBAIG1haW4odm9pZCkgeworIAl0ZXN0X2dldHJyc2V0YnluYW1lKCJlLmV4YW1wbGUxLiIsIDEsIDIsIDEsIDEsIDEpOworIAl0ZXN0X2dldHJyc2V0YnluYW1lKCJlLmV4YW1wbGUxLiIsIDEsIDQ2LCAyLCAwLCAxKTsKKyAJdGVzdF9nZXRycnNldGJ5bmFtZSgiIiwgMSwgMSwgMCwgMCwgMCk7CistCisrICAgICAgICB0ZXN0X2dldHJyc2V0YnluYW1lKCIxMjM0NTY3ODkuMTIzNDU2Nzg5LjEyMzQ1Njc4OS4xMjM0NTY3ODkuIgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMTIzNDU2Nzg5LjEyMzQ1Njc4OS4xMjM0NTY3ODkuMTIzNDU2Nzg5LiIKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjEyMzQ1Njc4OS4xMjM0NTY3ODkuMTIzNDU2Nzg5LjEyMzQ1Njc4OS4iCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxMjM0NTY3ODkuMTIzNDU2Nzg5LjEyMzQ1Njc4OS4xMjM0NTY3ODkuIgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMTIzNDU2Nzg5LjEyMzQ1Njc4OS4xMjM0NTY3ODkuMTIzNDU2Nzg5LiIKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjEyMzQ1Njc4OS4xMjM0NTY3ODkuMTIzNDU2Nzg5LjEyMzQ1Njc4OS4iCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxMjM0NTY3ODkiLCAxLCAxLCAwLCAwLCAwKTsKKysgCisgCWlmIChmYWlscyA9PSAwKQorIAkJcHJpbnRmKCJJOm9rXG4iKTsKKyAJcmV0dXJuIChmYWlscyk7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9DVkUtMjAxNi0yNzc2LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL0NWRS0yMDE2LTI3NzYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzM4YmY2MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9DVkUtMjAxNi0yNzc2LnBhdGNoCkBAIC0wLDAgKzEsMTIzIEBACitGcm9tIDExNzExMTE2NTcwODE5NzA1ODVmOWYwZTAzYjQ3NjM1OGMzM2E2YzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXJrIEFuZHJld3MgPG1hcmthQGlzYy5vcmc+CitEYXRlOiBXZWQsIDEyIE9jdCAyMDE2IDIwOjM2OjUyICswOTAwCitTdWJqZWN0OiBbUEFUQ0hdIAorNDQ2Ny4gICBbc2VjdXJpdHldICAgICAgSXQgd2FzIHBvc3NpYmxlIHRvIHRyaWdnZXIgYW4gYXNzZXJ0aW9uIHdoZW4gCisgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJpbmcgYSBtZXNzYWdlLiAoQ1ZFLTIwMTYtMjc3NikgW1JUICM0MzEzOV0KKworQmFja3BvcnQgY29tbWl0IDJiZDA5MjJjZjk5NWI5YWMyMDVmYzgzYmFmN2UyMjBiOTVjNmJmMTIgZnJvbSB0aGUKK3Y5LjExLjBfcGF0Y2ggYnJhbmNoLgorCitDVkU6IENWRS0yMDE2LTI3NzYKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogemhlbmdydW9xaW4gPHpoZW5ncnEuZm5zdEBjbi5mdWppdHN1LmNvbT4KKworLS0tCisgQ0hBTkdFUyAgICAgICAgICAgfCAgMyArKysKKyBsaWIvZG5zL21lc3NhZ2UuYyB8IDQyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMzQgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9DSEFOR0VTIGIvQ0hBTkdFUworaW5kZXggZDBhOWQxMi4uNWM4YzYxYSAxMDA2NDQKKy0tLSBhL0NIQU5HRVMKKysrKyBiL0NIQU5HRVMKK0BAIC0xLDMgKzEsNiBAQAorKzQ0NjcuICAgW3NlY3VyaXR5XSAgICAgIEl0IHdhcyBwb3NzaWJsZSB0byB0cmlnZ2VyIGFuIGFzc2VydGlvbiB3aGVuCisrICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyaW5nIGEgbWVzc2FnZS4gKENWRS0yMDE2LTI3NzYpIFtSVCAjNDMxMzldCisrCisgNDQwNi4gICBbc2VjdXJpdHldICAgICAgZ2V0cnJzZXRieW5hbWUgd2l0aCBhIG5vbiBhYnNvbHV0ZSBuYW1lIGNvdWxkCisgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlciBhbiBpbmZpbml0ZSByZWN1cnNpb24gYnVnIGluIGx3cmVzZAorICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBuYW1lZCB3aXRoIGx3cmVzIGNvbmZpZ3VyZWQgaWYgd2hlbiBjb21iaW5lZAorZGlmZiAtLWdpdCBhL2xpYi9kbnMvbWVzc2FnZS5jIGIvbGliL2Rucy9tZXNzYWdlLmMKK2luZGV4IDZiNWI0YmIuLmI3NGRjODEgMTAwNjQ0CistLS0gYS9saWIvZG5zL21lc3NhZ2UuYworKysrIGIvbGliL2Rucy9tZXNzYWdlLmMKK0BAIC0xNzU0LDcgKzE3NTQsNyBAQCBkbnNfbWVzc2FnZV9yZW5kZXJiZWdpbihkbnNfbWVzc2FnZV90ICptc2csIGRuc19jb21wcmVzc190ICpjY3R4LAorIAlpZiAoci5sZW5ndGggPCBETlNfTUVTU0FHRV9IRUFERVJMRU4pCisgCQlyZXR1cm4gKElTQ19SX05PU1BBQ0UpOworIAorLQlpZiAoci5sZW5ndGggPCBtc2ctPnJlc2VydmVkKQorKyAgICAgICAgaWYgKHIubGVuZ3RoIC0gRE5TX01FU1NBR0VfSEVBREVSTEVOIDwgbXNnLT5yZXNlcnZlZCkKKyAJCXJldHVybiAoSVNDX1JfTk9TUEFDRSk7CisgCisgCS8qCitAQCAtMTg5NSw4ICsxODk1LDI5IEBAIG5vcmVuZGVyX3JkYXRhc2V0KGNvbnN0IGRuc19yZGF0YXNldF90ICpyZGF0YXNldCwgdW5zaWduZWQgaW50IG9wdGlvbnMsCisgCisgCXJldHVybiAoSVNDX1RSVUUpOworIH0KKy0KKyAjZW5kaWYKKysKKytzdGF0aWMgaXNjX3Jlc3VsdF90CisrcmVuZGVyc2V0KGRuc19yZGF0YXNldF90ICpyZGF0YXNldCwgZG5zX25hbWVfdCAqb3duZXJfbmFtZSwKKysgICAgICAgICBkbnNfY29tcHJlc3NfdCAqY2N0eCwgaXNjX2J1ZmZlcl90ICp0YXJnZXQsCisrICAgICAgICAgdW5zaWduZWQgaW50IHJlc2VydmVkLCB1bnNpZ25lZCBpbnQgb3B0aW9ucywgdW5zaWduZWQgaW50ICpjb3VudHApCisreworKyAgICAgICBpc2NfcmVzdWx0X3QgcmVzdWx0OworKworKyAgICAgICAvKgorKyAgICAgICAgKiBTaHJpbmsgdGhlIHNwYWNlIGluIHRoZSBidWZmZXIgYnkgdGhlIHJlc2VydmVkIGFtb3VudC4KKysgICAgICAgICovCisrICAgICAgIGlmICh0YXJnZXQtPmxlbmd0aCAtIHRhcmdldC0+dXNlZCA8IHJlc2VydmVkKQorKyAgICAgICAgICAgICAgIHJldHVybiAoSVNDX1JfTk9TUEFDRSk7CisrCisrICAgICAgIHRhcmdldC0+bGVuZ3RoIC09IHJlc2VydmVkOworKyAgICAgICByZXN1bHQgPSBkbnNfcmRhdGFzZXRfdG93aXJlKHJkYXRhc2V0LCBvd25lcl9uYW1lLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjdHgsIHRhcmdldCwgb3B0aW9ucywgY291bnRwKTsKKysgICAgICAgdGFyZ2V0LT5sZW5ndGggKz0gcmVzZXJ2ZWQ7CisrCisrICAgICAgIHJldHVybiAocmVzdWx0KTsKKyt9CisrCisgaXNjX3Jlc3VsdF90CisgZG5zX21lc3NhZ2VfcmVuZGVyc2VjdGlvbihkbnNfbWVzc2FnZV90ICptc2csIGRuc19zZWN0aW9uX3Qgc2VjdGlvbmlkLAorIAkJCSAgdW5zaWduZWQgaW50IG9wdGlvbnMpCitAQCAtMTkzOSw2ICsxOTYwLDggQEAgZG5zX21lc3NhZ2VfcmVuZGVyc2VjdGlvbihkbnNfbWVzc2FnZV90ICptc2csIGRuc19zZWN0aW9uX3Qgc2VjdGlvbmlkLAorIAkvKgorIAkgKiBTaHJpbmsgdGhlIHNwYWNlIGluIHRoZSBidWZmZXIgYnkgdGhlIHJlc2VydmVkIGFtb3VudC4KKyAJICovCisrICAgICAgICBpZiAobXNnLT5idWZmZXItPmxlbmd0aCAtIG1zZy0+YnVmZmVyLT51c2VkIDwgbXNnLT5yZXNlcnZlZCkKKysgICAgICAgICAgICAgICAgcmV0dXJuIChJU0NfUl9OT1NQQUNFKTsKKyAJbXNnLT5idWZmZXItPmxlbmd0aCAtPSBtc2ctPnJlc2VydmVkOworIAorIAl0b3RhbCA9IDA7CitAQCAtMjIxNCw5ICsyMjM3LDggQEAgZG5zX21lc3NhZ2VfcmVuZGVyZW5kKGRuc19tZXNzYWdlX3QgKm1zZykgeworIAkJICogUmVuZGVyLgorIAkJICovCisgCQljb3VudCA9IDA7CistCQlyZXN1bHQgPSBkbnNfcmRhdGFzZXRfdG93aXJlKG1zZy0+b3B0LCBkbnNfcm9vdG5hbWUsCistCQkJCQkgICAgIG1zZy0+Y2N0eCwgbXNnLT5idWZmZXIsIDAsCistCQkJCQkgICAgICZjb3VudCk7CisrICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlbmRlcnNldChtc2ctPm9wdCwgZG5zX3Jvb3RuYW1lLCBtc2ctPmNjdHgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2ctPmJ1ZmZlciwgbXNnLT5yZXNlcnZlZCwgMCwgJmNvdW50KTsKKyAJCW1zZy0+Y291bnRzW0ROU19TRUNUSU9OX0FERElUSU9OQUxdICs9IGNvdW50OworIAkJaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKQorIAkJCXJldHVybiAocmVzdWx0KTsKK0BAIC0yMjMyLDkgKzIyNTQsOCBAQCBkbnNfbWVzc2FnZV9yZW5kZXJlbmQoZG5zX21lc3NhZ2VfdCAqbXNnKSB7CisgCQlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpCisgCQkJcmV0dXJuIChyZXN1bHQpOworIAkJY291bnQgPSAwOworLQkJcmVzdWx0ID0gZG5zX3JkYXRhc2V0X3Rvd2lyZShtc2ctPnRzaWcsIG1zZy0+dHNpZ25hbWUsCistCQkJCQkgICAgIG1zZy0+Y2N0eCwgbXNnLT5idWZmZXIsIDAsCistCQkJCQkgICAgICZjb3VudCk7CisrICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlbmRlcnNldChtc2ctPnRzaWcsIG1zZy0+dHNpZ25hbWUsIG1zZy0+Y2N0eCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZy0+YnVmZmVyLCBtc2ctPnJlc2VydmVkLCAwLCAmY291bnQpOworIAkJbXNnLT5jb3VudHNbRE5TX1NFQ1RJT05fQURESVRJT05BTF0gKz0gY291bnQ7CisgCQlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpCisgCQkJcmV0dXJuIChyZXN1bHQpOworQEAgLTIyNTUsOSArMjI3Niw4IEBAIGRuc19tZXNzYWdlX3JlbmRlcmVuZChkbnNfbWVzc2FnZV90ICptc2cpIHsKKyAJCSAqIHRoZSBvd25lciBuYW1lIG9mIGEgU0lHKDApIGlzIGlycmVsZXZhbnQsIGFuZCB3aWxsIG5vdAorIAkJICogYmUgc2V0IGluIGEgbWVzc2FnZSBiZWluZyByZW5kZXJlZC4KKyAJCSAqLworLQkJcmVzdWx0ID0gZG5zX3JkYXRhc2V0X3Rvd2lyZShtc2ctPnNpZzAsIGRuc19yb290bmFtZSwKKy0JCQkJCSAgICAgbXNnLT5jY3R4LCBtc2ctPmJ1ZmZlciwgMCwKKy0JCQkJCSAgICAgJmNvdW50KTsKKysgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVuZGVyc2V0KG1zZy0+c2lnMCwgZG5zX3Jvb3RuYW1lLCBtc2ctPmNjdHgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2ctPmJ1ZmZlciwgbXNnLT5yZXNlcnZlZCwgMCwgJmNvdW50KTsKKyAJCW1zZy0+Y291bnRzW0ROU19TRUNUSU9OX0FERElUSU9OQUxdICs9IGNvdW50OworIAkJaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKQorIAkJCXJldHVybiAocmVzdWx0KTsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL2RvbnQtdGVzdC1vbi1ob3N0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL2RvbnQtdGVzdC1vbi1ob3N0LnBhdGNoCmluZGV4IDY5ODlkNmQuLmIwMmVjYjEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9kb250LXRlc3Qtb24taG9zdC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvZG9udC10ZXN0LW9uLWhvc3QucGF0Y2gKQEAgLTEsNiArMSw2IEBACiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAotU2lnbmVkLW9mZi1ieSBTYXVsIFdvbGQgPHNnd0BsaW51eC5pbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBTYXVsIFdvbGQgPHNnd0BsaW51eC5pbnRlbC5jb20+CiAKIEluZGV4OiBiaW5kLTkuOS41L2Jpbi9NYWtlZmlsZS5pbgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kXzkuMTAuMy1QMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZF85LjEwLjMtUDMuYmIKaW5kZXggMWUzYTIwZi4uNGUyZTg1NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kXzkuMTAuMy1QMy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmRfOS4xMC4zLVAzLmJiCkBAIC0yNSw2ICsyNSw4IEBACiAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi0xMjg2XzEucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTYtMTI4Nl8yLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTIwODgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTYtMjc3NS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi0yNzc2LnBhdGNoIFwKICAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiYmNmN2U3NzJiNjE2ZjcyNTk0MjBhM2VkYzVkZjM1MGEiCkBAIC01Niw3ICs1OCw3IEBACiAKIFBBUkFMTEVMX01BS0UgPSAiIgogCi1SREVQRU5EU18ke1BOfSA9ICJweXRob24tY29yZSIKK1JERVBFTkRTXyR7UE59ID0gInB5dGhvbjMtY29yZSIKIFJERVBFTkRTXyR7UE59LWRldiA9ICIiCiAKIFBBQ0tBR0VfQkVGT1JFX1BOICs9ICIke1BOfS11dGlscyIKQEAgLTgxLDcgKzgzLDcgQEAKIAlpbnN0YWxsIC1kICIke0R9JHtzeXNjb25mZGlyfS9pbml0LmQiCiAJaW5zdGFsbCAtbSA2NDQgJHtTfS9jb25mLyogIiR7RH0ke3N5c2NvbmZkaXJ9L2JpbmQvIgogCWluc3RhbGwgLW0gNzU1ICIke1N9L2luaXQuZCIgIiR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9iaW5kIgotCXNlZCAtaSAtZSAnMXMsIyEuKnB5dGhvbiwjISAvdXNyL2Jpbi9lbnYgcHl0aG9uLCcgJHtEfSR7c2JpbmRpcn0vZG5zc2VjLWNvdmVyYWdlICR7RH0ke3NiaW5kaXJ9L2Ruc3NlYy1jaGVja2RzCisJc2VkIC1pIC1lICcxcywjIS4qcHl0aG9uLCMhIC91c3IvYmluL3B5dGhvbjMsJyAke0R9JHtzYmluZGlyfS9kbnNzZWMtY292ZXJhZ2UgJHtEfSR7c2JpbmRpcn0vZG5zc2VjLWNoZWNrZHMKIAogCSMgSW5zdGFsbCBzeXN0ZW1kIHJlbGF0ZWQgZmlsZXMKIAlpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUuaW5jCmluZGV4IGE1MDgyMjkuLmVjZWZiN2IgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUuaW5jCkBAIC0xOCw2ICsxOCw3IEBACiAKIFNSQ19VUkkgPSAiXAogICAgICR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvYmx1ZXRvb3RoL2JsdWV6LSR7UFZ9LnRhci54eiBcCisgICAgZmlsZTovL291dC1vZi10cmVlLnBhdGNoIFwKICAgICBmaWxlOi8vaW5pdCBcCiAgICAgZmlsZTovL3J1bi1wdGVzdCBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJycsICdmaWxlOi8vMDAwMS1BbGxvdy11c2luZy1vYmV4ZC13aXRob3V0LXN5c3RlbWQtaW4tdGhlLXVzZXItc2Vzc2lvLnBhdGNoJywgZCl9IFwKQEAgLTI1LDcgKzI2LDcgQEAKICIKIFMgPSAiJHtXT1JLRElSfS9ibHVlei0ke1BWfSIKIAotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZyBzeXN0ZW1kIHVwZGF0ZS1yYy5kIGRpc3Ryb19mZWF0dXJlc19jaGVjayBwdGVzdAoraW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHN5c3RlbWQgdXBkYXRlLXJjLmQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHB0ZXN0CiAKIEVYVFJBX09FQ09ORiA9ICJcCiAgIC0tZW5hYmxlLXRvb2xzIFwKQEAgLTYwLDE3ICs2MSwyNSBAQAogCSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9wcm9maWxlcy9pbnB1dC9pbnB1dC5jb25mICR7RH0vJHtzeXNjb25mZGlyfS9ibHVldG9vdGgvCiAJZmkKIAorICBpZiBbIC1mICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvYmx1ZXRvb3RoIF07IHRoZW4KKyAgICBzZWQgLWkgLWUgJ3MjQExJQkVYRUNESVJAIyR7bGliZXhlY2Rpcn0jZycgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC9ibHVldG9vdGgKKyAgZmkKKwogCSMgSW5zdGFsbCBkZXNpcmVkIHRvb2xzIHRoYXQgdXBzdHJlYW0gbGVhdmVzIGluIGJ1aWxkIGFyZWEKICAgICAgICAgZm9yIGYgaW4gJHtOT0lOU1RfVE9PTFN9IDsgZG8KIAkgICAgaW5zdGFsbCAtbSA3NTUgJHtCfS8kZiAke0R9LyR7YmluZGlyfQogCWRvbmUKKworICAgICAgICAjIFBhdGNoIHB5dGhvbiB0b29scyB0byB1c2UgUHl0aG9uIDM7IHRoZXkgc2hvdWxkIGJlIHNvdXJjZSBjb21wYXRpYmxlLCBidXQKKyAgICAgICAgIyBzdGlsbCByZWZlciB0byBQeXRob24gMiBpbiB0aGUgc2hlYmFuZworICAgICAgICBzZWQgLWkgLWUgJzFzLCMhLipweXRob24uKiwjISR7YmluZGlyfS9weXRob24zLCcgJHtEfSR7bGliZGlyfS9ibHVlei90ZXN0LyoKIH0KIAogQUxMT1dfRU1QVFlfbGliYXNvdW5kLW1vZHVsZS1ibHVleiA9ICIxIgogUEFDS0FHRVMgPSsgImxpYmFzb3VuZC1tb2R1bGUtYmx1ZXogJHtQTn0tdGVzdHRvb2xzICR7UE59LW9iZXggJHtQTn0tbm9pbnN0LXRvb2xzIgogCiBGSUxFU19saWJhc291bmQtbW9kdWxlLWJsdWV6ID0gIiR7bGliZGlyfS9hbHNhLWxpYi9saWIqLnNvICR7ZGF0YWRpcn0vYWxzYSIKLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vYmx1ZXRvb3RoL3BsdWdpbnMvKi5zbyAke2Jhc2VfbGliZGlyfS91ZGV2LyAke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvICR7c3lzdGVtZF91bml0ZGlyfS8gJHtkYXRhZGlyfS9kYnVzLTEiCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2JsdWV0b290aC9wbHVnaW5zLyouc28gJHtzeXN0ZW1kX3VuaXRkaXJ9LyAke2RhdGFkaXJ9L2RidXMtMSIKIEZJTEVTXyR7UE59LWRldiArPSAiXAogICAke2xpYmRpcn0vYmx1ZXRvb3RoL3BsdWdpbnMvKi5sYSBcCiAgICR7bGliZGlyfS9hbHNhLWxpYi8qLmxhIFwKQEAgLTk0LDcgKzEwMyw3IEBACiAKIEZJTEVTXyR7UE59LW5vaW5zdC10b29scyA9ICIke0BnZXRfbm9pbnN0X3Rvb2xzX3BhdGhzKGQsIGJiLCBkLmdldFZhcignTk9JTlNUX1RPT0xTJywgVHJ1ZSkpfSIKIAotUkRFUEVORFNfJHtQTn0tdGVzdHRvb2xzICs9ICJweXRob24gcHl0aG9uLWRidXMgcHl0aG9uLXB5Z29iamVjdCIKK1JERVBFTkRTXyR7UE59LXRlc3R0b29scyArPSAicHl0aG9uMyBweXRob24zLWRidXMgcHl0aG9uMy1weWdvYmplY3QiCiAKIFNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJibHVldG9vdGguc2VydmljZSIKIElOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiJHtQTn0iCkBAIC0xMDgsNSArMTE3LDUgQEAKIAogZG9faW5zdGFsbF9wdGVzdCgpIHsKICAgICAgICAgY3AgLXIgJHtCfS91bml0LyAke0R9JHtQVEVTVF9QQVRIfQotICAgICAgICBybSAke0R9JHtQVEVTVF9QQVRIfS91bml0LyouYyAke0R9JHtQVEVTVF9QQVRIfS91bml0LyoubworICAgICAgICBybSAtZiAke0R9JHtQVEVTVF9QQVRIfS91bml0LyoubwogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS9pbml0IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS9pbml0CmluZGV4IDE2MDZhNWMuLjQ4OWU5YjkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvaW5pdAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1L2luaXQKQEAgLTMsNyArMyw3IEBACiBQQVRIPS9zYmluOi9iaW46L3Vzci9zYmluOi91c3IvYmluCiBERVNDPWJsdWV0b290aAogCi1EQUVNT049L3Vzci9saWIvYmx1ZXo1L2JsdWV0b290aC9ibHVldG9vdGhkCitEQUVNT049QExJQkVYRUNESVJAL2JsdWV0b290aC9ibHVldG9vdGhkCiAKICMgSWYgeW91IHdhbnQgdG8gYmUgaWdub3JlIGVycm9yIG9mICJvcmcuZnJlZWRlc2t0b3AuaG9zdG5hbWUxIiwKICMgcGxlYXNlIGVuYWJsZSBOT1BMVUdJTl9PUFRJT04uCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1L291dC1vZi10cmVlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS9vdXQtb2YtdHJlZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZWU3OWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS9vdXQtb2YtdHJlZS5wYXRjaApAQCAtMCwwICsxLDI2IEBACitGcm9tIGVkNTViNDlhMjI2Y2EzOTA5ZjUyNDE2YmUyYWU1Y2UxYzVjYTJjYjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorRGF0ZTogRnJpLCAyMiBBcHIgMjAxNiAxNTo0MDozNyArMDEwMAorU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZS5vYmV4ZDogYWRkIG1pc3NpbmcgbWtkaXIgaW4gYnVpbHRpbi5oIGdlbmVyYXRpb24KKworSW4gcGFyYWxsZWwgb3V0LW9mLXRyZWUgYnVpbGRzIGl0J3MgcG9zc2libGUgdGhhdCBvYmV4ZC9zcmMvYnVpbHRpbi5oIGlzCitnZW5lcmF0ZWQgYmVmb3JlIHRoZSB0YXJnZXQgZGlyZWN0b3J5IGhhcyBiZWVuIGltcGxpY2l0bHkgY3JlYXRlZC4gU29sdmUgdGhpcyBieQorY3JlYXRpbmcgdGhlIGRpcmVjdG9yeSBiZWZvcmUgd3JpdGluZyBpbnRvIGl0LgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKy0tLQorIE1ha2VmaWxlLm9iZXhkIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5vYmV4ZCBiL01ha2VmaWxlLm9iZXhkCitpbmRleCAyZTMzY2JjLi5jODI4NmYwIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUub2JleGQKKysrKyBiL01ha2VmaWxlLm9iZXhkCitAQCAtMTA1LDIgKzEwNSwzIEBAIG9iZXhkL3NyYy9wbHVnaW4uJChPQkpFWFQpOiBvYmV4ZC9zcmMvYnVpbHRpbi5oCisgb2JleGQvc3JjL2J1aWx0aW4uaDogb2JleGQvc3JjL2dlbmJ1aWx0aW4gJChvYmV4ZF9idWlsdGluX3NvdXJjZXMpCisrCSQoQU1fVl9hdCkkKE1LRElSX1ApICQoZGlyICRAKQorIAkkKEFNX1ZfR0VOKSQoc3JjZGlyKS9vYmV4ZC9zcmMvZ2VuYnVpbHRpbiAkKG9iZXhkX2J1aWx0aW5fbW9kdWxlcykgPiAkQAorLS0gCisyLjguMC5yYzMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NV81LjM3LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NV81LjM3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjIwZjc5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejVfNS4zNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLXJlcXVpcmUgYmx1ZXo1LmluYwotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAiYmx1ZXo1IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzMxNzdlNTc0M2UyNGIyYjM3MzhmNzJiZTY0ZTNmZmIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzE0YmE5ZGRjYjAwNTU1MjIwNzM0NzdiOGZkOGJmMWRkZjVkMjE5ZTc1ZmRmZDQ2OTliN2UwY2U1MzUwZDZiMCIKLQotIyBub2luc3QgcHJvZ3JhbXMgaW4gTWFrZWZpbGUudG9vbHMgdGhhdCBhcmUgY29uZGl0aW9uYWwgb24gUkVBRExJTkUKLSMgc3VwcG9ydAotTk9JTlNUX1RPT0xTX1JFQURMSU5FID89ICIgXAotICAgIGF0dHJpYi9nYXR0dG9vbCBcCi0gICAgdG9vbHMvb2JleC1jbGllbnQtdG9vbCBcCi0gICAgdG9vbHMvb2JleC1zZXJ2ZXItdG9vbCBcCi0gICAgdG9vbHMvYmx1ZXRvb3RoLXBsYXllciBcCi0gICAgdG9vbHMvb2JleGN0bCBcCi0iCi0KLSMgbm9pbnN0IHByb2dyYW1zIGluIE1ha2VmaWxlLnRvb2xzIHRoYXQgYXJlIGNvbmRpdGlvbmFsIG9uIEVYUEVSSU1FTlRBTAotIyBzdXBwb3J0Ci1OT0lOU1RfVE9PTFNfRVhQRVJJTUVOVEFMID89ICIgXAotICAgIGVtdWxhdG9yL2J0dmlydCBcCi0gICAgZW11bGF0b3IvYjFlZSBcCi0gICAgZW11bGF0b3IvaGZwIFwKLSAgICB0b29scy8zZHNwIFwKLSAgICB0b29scy9tZ210LXRlc3RlciBcCi0gICAgdG9vbHMvZ2FwLXRlc3RlciBcCi0gICAgdG9vbHMvbDJjYXAtdGVzdGVyIFwKLSAgICB0b29scy9zY28tdGVzdGVyIFwKLSAgICB0b29scy9zbXAtdGVzdGVyIFwKLSAgICB0b29scy9oY2ktdGVzdGVyIFwKLSAgICB0b29scy9yZmNvbW0tdGVzdGVyIFwKLSAgICB0b29scy9iZGFkZHIgXAotICAgIHRvb2xzL2F2aW5mbyBcCi0gICAgdG9vbHMvYXZ0ZXN0IFwKLSAgICB0b29scy9zY290ZXN0IFwKLSAgICB0b29scy9hbXB0ZXN0IFwKLSAgICB0b29scy9od2RiIFwKLSAgICB0b29scy9oY2lldmVudG1hc2sgXAotICAgIHRvb2xzL2hjaXNlY2ZpbHRlciBcCi0gICAgdG9vbHMvYnRtZ210IFwKLSAgICB0b29scy9idGluZm8gXAotICAgIHRvb2xzL2J0YXR0YWNoIFwKLSAgICB0b29scy9idHNub29wIFwKLSAgICB0b29scy9idHByb3h5IFwKLSAgICB0b29scy9idGlvdGVzdCBcCi0gICAgdG9vbHMvbWNhcHRlc3QgXAotICAgIHRvb2xzL2NsdGVzdCBcCi0gICAgdG9vbHMvb29idGVzdCBcCi0gICAgdG9vbHMvc2VxMmJzZXEgXAotICAgIHRvb2xzL2liZWFjb24gXAotICAgIHRvb2xzL2J0Z2F0dC1jbGllbnQgXAotICAgIHRvb2xzL2J0Z2F0dC1zZXJ2ZXIgXAotICAgIHRvb2xzL2dhdHQtc2VydmljZSBcCi0gICAgcHJvZmlsZXMvaWFwL2lhcGQgXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NV81LjQxLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NV81LjQxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyMmFhYjcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1XzUuNDEuYmIKQEAgLTAsMCArMSw1NSBAQAorcmVxdWlyZSBibHVlejUuaW5jCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJibHVlejUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzMTgzNDFiMjE4ODY5ODEzMGFkYjczMjM2ZWU2OTI0NCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkZjdkYzQ0NjI0OTRkYWQ0ZTYwYTI5NDMyNDBkNTg0ZjZlNzYwMjM1ZGNhNjRmNWYxMGViYTQ2ZGJhYjdmNWYwIgorCisjIG5vaW5zdCBwcm9ncmFtcyBpbiBNYWtlZmlsZS50b29scyB0aGF0IGFyZSBjb25kaXRpb25hbCBvbiBSRUFETElORQorIyBzdXBwb3J0CitOT0lOU1RfVE9PTFNfUkVBRExJTkUgPz0gIiBcCisgICAgYXR0cmliL2dhdHR0b29sIFwKKyAgICB0b29scy9vYmV4LWNsaWVudC10b29sIFwKKyAgICB0b29scy9vYmV4LXNlcnZlci10b29sIFwKKyAgICB0b29scy9ibHVldG9vdGgtcGxheWVyIFwKKyAgICB0b29scy9vYmV4Y3RsIFwKKyAgICB0b29scy9idG1nbXQgXAorIgorCisjIG5vaW5zdCBwcm9ncmFtcyBpbiBNYWtlZmlsZS50b29scyB0aGF0IGFyZSBjb25kaXRpb25hbCBvbiBFWFBFUklNRU5UQUwKKyMgc3VwcG9ydAorTk9JTlNUX1RPT0xTX0VYUEVSSU1FTlRBTCA/PSAiIFwKKyAgICBlbXVsYXRvci9idHZpcnQgXAorICAgIGVtdWxhdG9yL2IxZWUgXAorICAgIGVtdWxhdG9yL2hmcCBcCisgICAgdG9vbHMvM2RzcCBcCisgICAgdG9vbHMvbWdtdC10ZXN0ZXIgXAorICAgIHRvb2xzL2dhcC10ZXN0ZXIgXAorICAgIHRvb2xzL2wyY2FwLXRlc3RlciBcCisgICAgdG9vbHMvc2NvLXRlc3RlciBcCisgICAgdG9vbHMvc21wLXRlc3RlciBcCisgICAgdG9vbHMvaGNpLXRlc3RlciBcCisgICAgdG9vbHMvcmZjb21tLXRlc3RlciBcCisgICAgdG9vbHMvYmRhZGRyIFwKKyAgICB0b29scy9hdmluZm8gXAorICAgIHRvb2xzL2F2dGVzdCBcCisgICAgdG9vbHMvc2NvdGVzdCBcCisgICAgdG9vbHMvYW1wdGVzdCBcCisgICAgdG9vbHMvaHdkYiBcCisgICAgdG9vbHMvaGNpZXZlbnRtYXNrIFwKKyAgICB0b29scy9oY2lzZWNmaWx0ZXIgXAorICAgIHRvb2xzL2J0aW5mbyBcCisgICAgdG9vbHMvYnRhdHRhY2ggXAorICAgIHRvb2xzL2J0c25vb3AgXAorICAgIHRvb2xzL2J0cHJveHkgXAorICAgIHRvb2xzL2J0aW90ZXN0IFwKKyAgICB0b29scy9tY2FwdGVzdCBcCisgICAgdG9vbHMvY2x0ZXN0IFwKKyAgICB0b29scy9vb2J0ZXN0IFwKKyAgICB0b29scy9zZXEyYnNlcSBcCisgICAgdG9vbHMvaWJlYWNvbiBcCisgICAgdG9vbHMvYnRnYXR0LWNsaWVudCBcCisgICAgdG9vbHMvYnRnYXR0LXNlcnZlciBcCisgICAgdG9vbHMvZ2F0dC1zZXJ2aWNlIFwKKyAgICBwcm9maWxlcy9pYXAvaWFwZCBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4tZ25vbWUvMDAwMS1Qb3J0LXRvLUd0azMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4tZ25vbWUvMDAwMS1Qb3J0LXRvLUd0azMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzkzZTliNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi1nbm9tZS8wMDAxLVBvcnQtdG8tR3RrMy5wYXRjaApAQCAtMCwwICsxLDI3NyBAQAorRnJvbSBhNTliMGZhYzAyZTc0YTk3MWFjM2YwOGJmMjhjMTdjZTM2MWE5NTI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK0RhdGU6IFdlZCwgMiBNYXIgMjAxNiAxNTo0Nzo0OSArMDIwMAorU3ViamVjdDogW1BBVENIXSBQb3J0IHRvIEd0azMKKworU29tZSB1bnVzZWQgKG9yIG5vdCB1c2VmdWwpIGNvZGUgd2FzIHJlbW92ZWQsIGZ1bmN0aW9uYWxpdHkgc2hvdWxkIHN0YXkKK3RoZSBzYW1lLgorCitDb2RlIHN0aWxsIGNvbnRhaW5zIHF1aXRlIGEgZmV3IHVzZXMgb2YgZGVwcmVjYXRlZCBBUEkuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCitTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorLS0tCisgYXBwbGV0L2FnZW50LmMgICAgICAgIHwgIDMgKy0tCisgYXBwbGV0L21haW4uYyAgICAgICAgIHwgNDMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGFwcGxldC9zdGF0dXMuYyAgICAgICB8ICA4IC0tLS0tLS0tCisgY29uZmlndXJlLmFjICAgICAgICAgIHwgIDMgKy0tCisgcHJvcGVydGllcy9ldGhlcm5ldC5jIHwgMTQgKysrKysrKy0tLS0tLS0KKyBwcm9wZXJ0aWVzL21haW4uYyAgICAgfCAgMiArLQorIHByb3BlcnRpZXMvd2lmaS5jICAgICB8IDEyICsrKysrKy0tLS0tLQorIDcgZmlsZXMgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgNjkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9hcHBsZXQvYWdlbnQuYyBiL2FwcGxldC9hZ2VudC5jCitpbmRleCA2NWJlZDA4Li4wNGZlODZhIDEwMDY0NAorLS0tIGEvYXBwbGV0L2FnZW50LmMKKysrKyBiL2FwcGxldC9hZ2VudC5jCitAQCAtMTI2LDcgKzEyNiw2IEBAIHN0YXRpYyB2b2lkIHJlcXVlc3RfaW5wdXRfZGlhbG9nKEdIYXNoVGFibGUgKnJlcXVlc3QsCisgCWd0a193aW5kb3dfc2V0X3Bvc2l0aW9uKEdUS19XSU5ET1coZGlhbG9nKSwgR1RLX1dJTl9QT1NfQ0VOVEVSKTsKKyAJZ3RrX3dpbmRvd19zZXRfa2VlcF9hYm92ZShHVEtfV0lORE9XKGRpYWxvZyksIFRSVUUpOworIAlndGtfd2luZG93X3NldF91cmdlbmN5X2hpbnQoR1RLX1dJTkRPVyhkaWFsb2cpLCBUUlVFKTsKKy0JZ3RrX2RpYWxvZ19zZXRfaGFzX3NlcGFyYXRvcihHVEtfRElBTE9HKGRpYWxvZyksIEZBTFNFKTsKKyAJaW5wdXQtPmRpYWxvZyA9IGRpYWxvZzsKKyAKKyAJZ3RrX2RpYWxvZ19hZGRfYnV0dG9uKEdUS19ESUFMT0coZGlhbG9nKSwKK0BAIC0xMzksNyArMTM4LDcgQEAgc3RhdGljIHZvaWQgcmVxdWVzdF9pbnB1dF9kaWFsb2coR0hhc2hUYWJsZSAqcmVxdWVzdCwKKyAJZ3RrX3RhYmxlX3NldF9yb3dfc3BhY2luZ3MoR1RLX1RBQkxFKHRhYmxlKSwgNCk7CisgCWd0a190YWJsZV9zZXRfY29sX3NwYWNpbmdzKEdUS19UQUJMRSh0YWJsZSksIDIwKTsKKyAJZ3RrX2NvbnRhaW5lcl9zZXRfYm9yZGVyX3dpZHRoKEdUS19DT05UQUlORVIodGFibGUpLCAxMik7CistCWd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIoR1RLX0RJQUxPRyhkaWFsb2cpLT52Ym94KSwgdGFibGUpOworKwlndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKGd0a19kaWFsb2dfZ2V0X2NvbnRlbnRfYXJlYSAoR1RLX0RJQUxPRyhkaWFsb2cpKSksIHRhYmxlKTsKKyAKKyAJbGFiZWwgPSBndGtfbGFiZWxfbmV3KF8oIlBsZWFzZSBwcm92aWRlIHNvbWUgbmV0d29yayBpbmZvcm1hdGlvbjoiKSk7CisgCWd0a19taXNjX3NldF9hbGlnbm1lbnQoR1RLX01JU0MobGFiZWwpLCAwLjAsIDAuMCk7CitkaWZmIC0tZ2l0IGEvYXBwbGV0L21haW4uYyBiL2FwcGxldC9tYWluLmMKK2luZGV4IGYxMmQzNzEuLmNkMTYyODUgMTAwNjQ0CistLS0gYS9hcHBsZXQvbWFpbi5jCisrKysgYi9hcHBsZXQvbWFpbi5jCitAQCAtMTU3LDQ2ICsxNTcsNiBAQCBzdGF0aWMgdm9pZCBuYW1lX293bmVyX2NoYW5nZWQoREJ1c0dQcm94eSAqcHJveHksIGNvbnN0IGNoYXIgKm5hbWUsCisgCX0KKyB9CisgCistc3RhdGljIHZvaWQgb3Blbl91cmkoR3RrV2luZG93ICpwYXJlbnQsIGNvbnN0IGNoYXIgKnVyaSkKKy17CistCUd0a1dpZGdldCAqZGlhbG9nOworLQlHZGtTY3JlZW4gKnNjcmVlbjsKKy0JR0Vycm9yICplcnJvciA9IE5VTEw7CistCWdjaGFyICpjbWRsaW5lOworLQorLQlzY3JlZW4gPSBndGtfd2luZG93X2dldF9zY3JlZW4ocGFyZW50KTsKKy0KKy0JY21kbGluZSA9IGdfc3RyY29uY2F0KCJ4ZGctb3BlbiAiLCB1cmksIE5VTEwpOworLQorLQlpZiAoZ2RrX3NwYXduX2NvbW1hbmRfbGluZV9vbl9zY3JlZW4oc2NyZWVuLAorLQkJCQljbWRsaW5lLCAmZXJyb3IpID09IEZBTFNFKSB7CistCQlkaWFsb2cgPSBndGtfbWVzc2FnZV9kaWFsb2dfbmV3KHBhcmVudCwKKy0JCQkJR1RLX0RJQUxPR19ERVNUUk9ZX1dJVEhfUEFSRU5ULCBHVEtfTUVTU0FHRV9FUlJPUiwKKy0JCQkJR1RLX0JVVFRPTlNfQ0xPU0UsICIlcyIsIGVycm9yLT5tZXNzYWdlKTsKKy0JCWd0a19kaWFsb2dfcnVuKEdUS19ESUFMT0coZGlhbG9nKSk7CistCQlndGtfd2lkZ2V0X2Rlc3Ryb3koZGlhbG9nKTsKKy0JCWdfZXJyb3JfZnJlZShlcnJvcik7CistCX0KKy0KKy0JZ19mcmVlKGNtZGxpbmUpOworLX0KKy0KKy1zdGF0aWMgdm9pZCBhYm91dF91cmxfaG9vayhHdGtBYm91dERpYWxvZyAqZGlhbG9nLAorLQkJCQljb25zdCBnY2hhciAqdXJsLCBncG9pbnRlciBkYXRhKQorLXsKKy0Jb3Blbl91cmkoR1RLX1dJTkRPVyhkaWFsb2cpLCB1cmwpOworLX0KKy0KKy1zdGF0aWMgdm9pZCBhYm91dF9lbWFpbF9ob29rKEd0a0Fib3V0RGlhbG9nICpkaWFsb2csCistCQkJCWNvbnN0IGdjaGFyICplbWFpbCwgZ3BvaW50ZXIgZGF0YSkKKy17CistCWdjaGFyICp1cmk7CistCistCXVyaSA9IGdfc3RyY29uY2F0KCJtYWlsdG86IiwgZW1haWwsIE5VTEwpOworLQlvcGVuX3VyaShHVEtfV0lORE9XKGRpYWxvZyksIHVyaSk7CistCWdfZnJlZSh1cmkpOworLX0KKy0KKyBzdGF0aWMgdm9pZCBhYm91dF9jYWxsYmFjayhHdGtXaWRnZXQgKml0ZW0sIGdwb2ludGVyIHVzZXJfZGF0YSkKKyB7CisgCWNvbnN0IGdjaGFyICphdXRob3JzW10gPSB7CitAQCAtMjA0LDkgKzE2NCw2IEBAIHN0YXRpYyB2b2lkIGFib3V0X2NhbGxiYWNrKEd0a1dpZGdldCAqaXRlbSwgZ3BvaW50ZXIgdXNlcl9kYXRhKQorIAkJTlVMTAorIAl9OworIAorLQlndGtfYWJvdXRfZGlhbG9nX3NldF91cmxfaG9vayhhYm91dF91cmxfaG9vaywgTlVMTCwgTlVMTCk7CistCWd0a19hYm91dF9kaWFsb2dfc2V0X2VtYWlsX2hvb2soYWJvdXRfZW1haWxfaG9vaywgTlVMTCwgTlVMTCk7CistCisgCWd0a19zaG93X2Fib3V0X2RpYWxvZyhOVUxMLCAidmVyc2lvbiIsIFZFUlNJT04sCisgCQkJImNvcHlyaWdodCIsICJDb3B5cmlnaHQgXHhjMlx4YTkgMjAwOCBJbnRlbCBDb3Jwb3JhdGlvbiIsCisgCQkJImNvbW1lbnRzIiwgXygiQSBjb25uZWN0aW9uIG1hbmFnZXIgZm9yIHRoZSBHTk9NRSBkZXNrdG9wIiksCitkaWZmIC0tZ2l0IGEvYXBwbGV0L3N0YXR1cy5jIGIvYXBwbGV0L3N0YXR1cy5jCitpbmRleCBhZWQ2ZjFlLi4wMTVmZjI5IDEwMDY0NAorLS0tIGEvYXBwbGV0L3N0YXR1cy5jCisrKysgYi9hcHBsZXQvc3RhdHVzLmMKK0BAIC0xMDIsOCArMTAyLDYgQEAgc3RhdGljIHZvaWQgaWNvbl9hbmltYXRpb25fc3RhcnQoSWNvbkFuaW1hdGlvbiAqYW5pbWF0aW9uLAorIHsKKyAJYXZhaWxhYmxlID0gVFJVRTsKKyAKKy0JZ3RrX3N0YXR1c19pY29uX3NldF90b29sdGlwKHN0YXR1c2ljb24sIE5VTEwpOworLQorIAlhbmltYXRpb24tPnN0YXJ0ID0gc3RhcnQ7CisgCWFuaW1hdGlvbi0+ZW5kID0gKGVuZCA9PSAwKSA/IGFuaW1hdGlvbi0+Y291bnQgLSAxIDogZW5kOworIAorQEAgLTEyMCw4ICsxMTgsNiBAQCBzdGF0aWMgdm9pZCBpY29uX2FuaW1hdGlvbl9zdG9wKEljb25BbmltYXRpb24gKmFuaW1hdGlvbikKKyB7CisgCWF2YWlsYWJsZSA9IFRSVUU7CisgCistCWd0a19zdGF0dXNfaWNvbl9zZXRfdG9vbHRpcChzdGF0dXNpY29uLCBOVUxMKTsKKy0KKyAJaWYgKGFuaW1hdGlvbi0+aWQgPiAwKQorIAkJZ19zb3VyY2VfcmVtb3ZlKGFuaW1hdGlvbi0+aWQpOworIAorQEAgLTI1MSw4ICsyNDcsNiBAQCB2b2lkIHN0YXR1c191bmF2YWlsYWJsZSh2b2lkKQorIAlhdmFpbGFibGUgPSBGQUxTRTsKKyAKKyAJZ3RrX3N0YXR1c19pY29uX3NldF9mcm9tX3BpeGJ1ZihzdGF0dXNpY29uLCBwaXhidWZfbm90aWZpZXIpOworLQlndGtfc3RhdHVzX2ljb25fc2V0X3Rvb2x0aXAoc3RhdHVzaWNvbiwKKy0JCQkJIkNvbm5lY3Rpb24gTWFuYWdlciBkYWVtb24gaXMgbm90IHJ1bm5pbmciKTsKKyAKKyAJZ3RrX3N0YXR1c19pY29uX3NldF92aXNpYmxlKHN0YXR1c2ljb24sIFRSVUUpOworIH0KK0BAIC0yOTksNyArMjkzLDYgQEAgc3RhdGljIHZvaWQgc2V0X3JlYWR5KGdpbnQgc2lnbmFsKQorIAorIAlpZiAoc2lnbmFsIDwgMCkgeworIAkJZ3RrX3N0YXR1c19pY29uX3NldF9mcm9tX3BpeGJ1ZihzdGF0dXNpY29uLCBwaXhidWZfd2lyZWQpOworLQkJZ3RrX3N0YXR1c19pY29uX3NldF90b29sdGlwKHN0YXR1c2ljb24sIE5VTEwpOworIAkJcmV0dXJuOworIAl9CisgCitAQCAtMzExLDcgKzMwNCw2IEBAIHN0YXRpYyB2b2lkIHNldF9yZWFkeShnaW50IHNpZ25hbCkKKyAJCWluZGV4ID0gNDsKKyAKKyAJZ3RrX3N0YXR1c19pY29uX3NldF9mcm9tX3BpeGJ1ZihzdGF0dXNpY29uLCBwaXhidWZfc2lnbmFsW2luZGV4XSk7CistCWd0a19zdGF0dXNfaWNvbl9zZXRfdG9vbHRpcChzdGF0dXNpY29uLCBOVUxMKTsKKyB9CisgCisgc3RydWN0IHRpbWVvdXRfZGF0YSB7CitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBiOTcyZTA3Li5hNGRhZDVkIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC01NSw4ICs1NSw3IEBAIEFDX1NVQlNUKERCVVNfTElCUykKKyBEQlVTX0JJTkRJTkdfVE9PTD0iZGJ1cy1iaW5kaW5nLXRvb2wiCisgQUNfU1VCU1QoREJVU19CSU5ESU5HX1RPT0wpCisgCistUEtHX0NIRUNLX01PRFVMRVMoR1RLLCBndGsrLTIuMCA+PSAyLjgsIGR1bW15PXllcywKKy0JCQkJQUNfTVNHX0VSUk9SKGd0aysgPj0gMi44IGlzIHJlcXVpcmVkKSkKKytQS0dfQ0hFQ0tfTU9EVUxFUyhHVEssIGd0aystMy4wKQorIEFDX1NVQlNUKEdUS19DRkxBR1MpCisgQUNfU1VCU1QoR1RLX0xJQlMpCisgCitkaWZmIC0tZ2l0IGEvcHJvcGVydGllcy9ldGhlcm5ldC5jIGIvcHJvcGVydGllcy9ldGhlcm5ldC5jCitpbmRleCAzMWRiN2EwLi4wYjZiNDIzIDEwMDY0NAorLS0tIGEvcHJvcGVydGllcy9ldGhlcm5ldC5jCisrKysgYi9wcm9wZXJ0aWVzL2V0aGVybmV0LmMKK0BAIC04Miw3ICs4Miw3IEBAIHZvaWQgYWRkX2V0aGVybmV0X3N3aXRjaF9idXR0b24oR3RrV2lkZ2V0ICptYWluYm94LCBHdGtUcmVlSXRlciAqaXRlciwKKyAJZ3RrX2NvbnRhaW5lcl9zZXRfYm9yZGVyX3dpZHRoKEdUS19DT05UQUlORVIodmJveCksIDI0KTsKKyAJZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1gobWFpbmJveCksIHZib3gsIEZBTFNFLCBGQUxTRSwgMCk7CisgCistCXRhYmxlID0gZ3RrX3RhYmxlX25ldygxLCAxLCBUUlVFKTsKKysJdGFibGUgPSBndGtfdGFibGVfbmV3KDEsIDEsIEZBTFNFKTsKKyAJZ3RrX3RhYmxlX3NldF9yb3dfc3BhY2luZ3MoR1RLX1RBQkxFKHRhYmxlKSwgMTApOworIAlndGtfdGFibGVfc2V0X2NvbF9zcGFjaW5ncyhHVEtfVEFCTEUodGFibGUpLCAxMCk7CisgCWd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCB0YWJsZSwgRkFMU0UsIEZBTFNFLCAwKTsKK0BAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBhZGRfZXRoZXJuZXRfc2VydmljZShHdGtXaWRnZXQgKm1haW5ib3gsIEd0a1RyZWVJdGVyICppdGVyLCBzdHJ1Y3QgY29uZmlnX2QKKyAJZ3RrX2NvbnRhaW5lcl9zZXRfYm9yZGVyX3dpZHRoKEdUS19DT05UQUlORVIodmJveCksIDI0KTsKKyAJZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1gobWFpbmJveCksIHZib3gsIEZBTFNFLCBGQUxTRSwgMCk7CisgCistCXRhYmxlID0gZ3RrX3RhYmxlX25ldyg1LCA1LCBUUlVFKTsKKysJdGFibGUgPSBndGtfdGFibGVfbmV3KDUsIDUsIEZBTFNFKTsKKyAJZ3RrX3RhYmxlX3NldF9yb3dfc3BhY2luZ3MoR1RLX1RBQkxFKHRhYmxlKSwgMTApOworIAlndGtfdGFibGVfc2V0X2NvbF9zcGFjaW5ncyhHVEtfVEFCTEUodGFibGUpLCAxMCk7CisgCWd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCB0YWJsZSwgRkFMU0UsIEZBTFNFLCAwKTsKK0BAIC0xNDQsOSArMTQ0LDkgQEAgdm9pZCBhZGRfZXRoZXJuZXRfc2VydmljZShHdGtXaWRnZXQgKm1haW5ib3gsIEd0a1RyZWVJdGVyICppdGVyLCBzdHJ1Y3QgY29uZmlnX2QKKyAJbGFiZWwgPSBndGtfbGFiZWxfbmV3KF8oIkNvbmZpZ3VyYXRpb246IikpOworIAlndGtfdGFibGVfYXR0YWNoX2RlZmF1bHRzKEdUS19UQUJMRSh0YWJsZSksIGxhYmVsLCAxLCAyLCAwLCAxKTsKKyAKKy0JY29tYm8gPSBndGtfY29tYm9fYm94X25ld190ZXh0KCk7CistCWd0a19jb21ib19ib3hfYXBwZW5kX3RleHQoR1RLX0NPTUJPX0JPWChjb21ibyksICJESENQIik7CistCWd0a19jb21ib19ib3hfYXBwZW5kX3RleHQoR1RLX0NPTUJPX0JPWChjb21ibyksICJNQU5VQUwiKTsKKysJY29tYm8gPSBndGtfY29tYm9fYm94X3RleHRfbmV3KCk7CisrCWd0a19jb21ib19ib3hfdGV4dF9hcHBlbmRfdGV4dChHVEtfQ09NQk9fQk9YX1RFWFQoY29tYm8pLCAiREhDUCIpOworKwlndGtfY29tYm9fYm94X3RleHRfYXBwZW5kX3RleHQoR1RLX0NPTUJPX0JPWF9URVhUKGNvbWJvKSwgIk1BTlVBTCIpOworIAlndGtfY29tYm9fYm94X3NldF9yb3dfc2VwYXJhdG9yX2Z1bmMoR1RLX0NPTUJPX0JPWChjb21ibyksCisgCQkJCQlzZXBhcmF0b3JfZnVuY3Rpb24sIE5VTEwsIE5VTEwpOworIAlndGtfdGFibGVfYXR0YWNoX2RlZmF1bHRzKEdUS19UQUJMRSh0YWJsZSksIGNvbWJvLCAyLCA0LCAwLCAxKTsKK0BAIC0yMTksNyArMjE5LDcgQEAgdm9pZCB1cGRhdGVfZXRoZXJuZXRfaXB2NChzdHJ1Y3QgY29uZmlnX2RhdGEgKmRhdGEsIGd1aW50IHBvbGljeSkKKyAJY2FzZSBDT05OTUFOX1BPTElDWV9ESENQOgorIAkJZ3RrX2NvbWJvX2JveF9zZXRfYWN0aXZlKEdUS19DT01CT19CT1goY29tYm8pLCAwKTsKKyAJCWZvciAoaSA9IDA7IGkgPCAzOyBpKyspIHsKKy0JCQlndGtfZW50cnlfc2V0X2VkaXRhYmxlKEdUS19FTlRSWShlbnRyeVtpXSksIDApOworKwkJCWd0a19lZGl0YWJsZV9zZXRfZWRpdGFibGUoR1RLX0VESVRBQkxFKGVudHJ5W2ldKSwgMCk7CisgCQkJZ3RrX3dpZGdldF9zZXRfc2Vuc2l0aXZlKGVudHJ5W2ldLCAwKTsKKyAJCQlndGtfZW50cnlfc2V0X3RleHQoR1RLX0VOVFJZKGVudHJ5W2ldKSwgXygiIikpOworIAkJfQorQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIHVwZGF0ZV9ldGhlcm5ldF9pcHY0KHN0cnVjdCBjb25maWdfZGF0YSAqZGF0YSwgZ3VpbnQgcG9saWN5KQorIAljYXNlIENPTk5NQU5fUE9MSUNZX01BTlVBTDoKKyAJCWd0a19jb21ib19ib3hfc2V0X2FjdGl2ZShHVEtfQ09NQk9fQk9YKGNvbWJvKSwgMSk7CisgCQlmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKSB7CistCQkJZ3RrX2VudHJ5X3NldF9lZGl0YWJsZShHVEtfRU5UUlkoZW50cnlbaV0pLCAxKTsKKysJCQlndGtfZWRpdGFibGVfc2V0X2VkaXRhYmxlKEdUS19FRElUQUJMRShlbnRyeVtpXSksIDEpOworIAkJCWd0a193aWRnZXRfc2V0X3NlbnNpdGl2ZShlbnRyeVtpXSwgMSk7CisgCQl9CisgCQlicmVhazsKK2RpZmYgLS1naXQgYS9wcm9wZXJ0aWVzL21haW4uYyBiL3Byb3BlcnRpZXMvbWFpbi5jCitpbmRleCBjMDVmNDQzLi42Zjc2MzYxIDEwMDY0NAorLS0tIGEvcHJvcGVydGllcy9tYWluLmMKKysrKyBiL3Byb3BlcnRpZXMvbWFpbi5jCitAQCAtNDI5LDcgKzQyOSw3IEBAIHN0YXRpYyBHdGtXaWRnZXQgKmNyZWF0ZV9pbnRlcmZhY2VzKEd0a1dpZGdldCAqd2luZG93KQorIAorIAlzY3JvbGxlZCA9IGd0a19zY3JvbGxlZF93aW5kb3dfbmV3KE5VTEwsIE5VTEwpOworIAlndGtfc2Nyb2xsZWRfd2luZG93X3NldF9wb2xpY3koR1RLX1NDUk9MTEVEX1dJTkRPVyhzY3JvbGxlZCksCistCQkJCUdUS19QT0xJQ1lfQVVUT01BVElDLCBHVEtfUE9MSUNZX0FVVE9NQVRJQyk7CisrCQkJCUdUS19QT0xJQ1lfTkVWRVIsIEdUS19QT0xJQ1lfQVVUT01BVElDKTsKKyAJZ3RrX3Njcm9sbGVkX3dpbmRvd19zZXRfc2hhZG93X3R5cGUoR1RLX1NDUk9MTEVEX1dJTkRPVyhzY3JvbGxlZCksCisgCQkJCQkJCUdUS19TSEFET1dfT1VUKTsKKyAJZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1goaGJveCksIHNjcm9sbGVkLCBGQUxTRSwgVFJVRSwgMCk7CitkaWZmIC0tZ2l0IGEvcHJvcGVydGllcy93aWZpLmMgYi9wcm9wZXJ0aWVzL3dpZmkuYworaW5kZXggYmQzMjVlZi4uYTU4MjdlMCAxMDA2NDQKKy0tLSBhL3Byb3BlcnRpZXMvd2lmaS5jCisrKysgYi9wcm9wZXJ0aWVzL3dpZmkuYworQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIGFkZF93aWZpX3N3aXRjaF9idXR0b24oR3RrV2lkZ2V0ICptYWluYm94LCBHdGtUcmVlSXRlciAqaXRlciwKKyAJZ3RrX2NvbnRhaW5lcl9zZXRfYm9yZGVyX3dpZHRoKEdUS19DT05UQUlORVIodmJveCksIDI0KTsKKyAJZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1gobWFpbmJveCksIHZib3gsIEZBTFNFLCBGQUxTRSwgMCk7CisgCistCXRhYmxlID0gZ3RrX3RhYmxlX25ldygxLCAxLCBUUlVFKTsKKysJdGFibGUgPSBndGtfdGFibGVfbmV3KDEsIDEsIEZBTFNFKTsKKyAJZ3RrX3RhYmxlX3NldF9yb3dfc3BhY2luZ3MoR1RLX1RBQkxFKHRhYmxlKSwgMTApOworIAlndGtfdGFibGVfc2V0X2NvbF9zcGFjaW5ncyhHVEtfVEFCTEUodGFibGUpLCAxMCk7CisgCWd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCB0YWJsZSwgRkFMU0UsIEZBTFNFLCAwKTsKK0BAIC0xODUsOSArMTg1LDkgQEAgc3RhdGljIHZvaWQgd2lmaV9pcGNvbmZpZyhHdGtXaWRnZXQgKnRhYmxlLCBzdHJ1Y3QgY29uZmlnX2RhdGEgKmRhdGEsIEd0a1RyZWVJdGUKKyAJZ3RrX3RhYmxlX2F0dGFjaF9kZWZhdWx0cyhHVEtfVEFCTEUodGFibGUpLCBsYWJlbCwgMSwgMiwgMywgNCk7CisgCWRhdGEtPmlwdjQubGFiZWxbMF0gPSBsYWJlbDsKKyAKKy0JY29tYm8gPSBndGtfY29tYm9fYm94X25ld190ZXh0KCk7CistCWd0a19jb21ib19ib3hfYXBwZW5kX3RleHQoR1RLX0NPTUJPX0JPWChjb21ibyksICJESENQIik7CistCWd0a19jb21ib19ib3hfYXBwZW5kX3RleHQoR1RLX0NPTUJPX0JPWChjb21ibyksICJNYW51YWwiKTsKKysJY29tYm8gPSBndGtfY29tYm9fYm94X3RleHRfbmV3KCk7CisrCWd0a19jb21ib19ib3hfdGV4dF9hcHBlbmRfdGV4dChHVEtfQ09NQk9fQk9YX1RFWFQoY29tYm8pLCAiREhDUCIpOworKwlndGtfY29tYm9fYm94X3RleHRfYXBwZW5kX3RleHQoR1RLX0NPTUJPX0JPWF9URVhUKGNvbWJvKSwgIk1hbnVhbCIpOworIAorIAlndGtfY29tYm9fYm94X3NldF9yb3dfc2VwYXJhdG9yX2Z1bmMoR1RLX0NPTUJPX0JPWChjb21ibyksCisgCQkJc2VwYXJhdG9yX2Z1bmN0aW9uLCBOVUxMLCBOVUxMKTsKK0BAIC0zMzUsMTQgKzMzNSwxNCBAQCB2b2lkIHVwZGF0ZV93aWZpX2lwdjQoc3RydWN0IGNvbmZpZ19kYXRhICpkYXRhLCBndWludCBwb2xpY3kpCisgCWNhc2UgQ09OTk1BTl9QT0xJQ1lfREhDUDoKKyAJCWd0a19jb21ib19ib3hfc2V0X2FjdGl2ZShHVEtfQ09NQk9fQk9YKGNvbWJvKSwgMCk7CisgCQlmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKSB7CistCQkJZ3RrX2VudHJ5X3NldF9lZGl0YWJsZShHVEtfRU5UUlkoZW50cnlbaV0pLCAwKTsKKysJCQlndGtfZWRpdGFibGVfc2V0X2VkaXRhYmxlKEdUS19FRElUQUJMRShlbnRyeVtpXSksIDApOworIAkJCWd0a193aWRnZXRfc2V0X3NlbnNpdGl2ZShlbnRyeVtpXSwgMCk7CisgCQl9CisgCQlicmVhazsKKyAJY2FzZSBDT05OTUFOX1BPTElDWV9NQU5VQUw6CisgCQlndGtfY29tYm9fYm94X3NldF9hY3RpdmUoR1RLX0NPTUJPX0JPWChjb21ibyksIDEpOworIAkJZm9yIChpID0gMDsgaSA8IDM7IGkrKykgeworLQkJCWd0a19lbnRyeV9zZXRfZWRpdGFibGUoR1RLX0VOVFJZKGVudHJ5W2ldKSwgMSk7CisrCQkJZ3RrX2VkaXRhYmxlX3NldF9lZGl0YWJsZShHVEtfRURJVEFCTEUoZW50cnlbaV0pLCAxKTsKKyAJCQlndGtfd2lkZ2V0X3NldF9zZW5zaXRpdmUoZW50cnlbaV0sIDEpOworIAkJfQorIAkJYnJlYWs7CistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi1nbm9tZV8wLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4tZ25vbWVfMC43LmJiCmluZGV4IDdiODc1ZjAuLmE1NmJkMzcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi1nbm9tZV8wLjcuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLWdub21lXzAuNy5iYgpAQCAtNiw3ICs2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Byb3BlcnRpZXMvbWFpbi5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PTUwYzc3YzgxODcxMzA4YjAzM2FiN2ExNTA0NjI2YWZiIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2NvbW1vbi9jb25ubWFuLWRidXMuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIwO21kNT1kZTZiNDg1YzBlNzE3YTAyMzY0MDJkMjIwMTg3NzE3YSIKIAotREVQRU5EUyA9ICJndGsrIGRidXMtZ2xpYiBpbnRsdG9vbC1uYXRpdmUgZ2V0dGV4dC1uYXRpdmUiCitERVBFTkRTID0gImd0ayszIGRidXMtZ2xpYiBkYnVzLWdsaWItbmF0aXZlIGludGx0b29sLW5hdGl2ZSBnZXR0ZXh0LW5hdGl2ZSIKIAogIyAwLjcgdGFnCiBTUkNSRVYgPSAiY2YzYzMyNWIyM2RhZTg0M2M1NDk5YTExMzU5MWNmYmM5OGFjYjE0MyIKQEAgLTE1LDEyICsxNSwxMyBAQAogICAgICAgICAgICBmaWxlOi8vbnVsbF9jaGVja19mb3JfaXB2NF9jb25maWcucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vaW1hZ2VzLyogXAogICAgICAgICAgICBmaWxlOi8vY29ubm1hbi1nbm9tZS1maXgtZGJ1cy1pbnRlcmZhY2UtbmFtZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVBvcnQtdG8tR3RrMy5wYXRjaCBcCiAgICAgICAgICAgIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCiBpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgZ3RrLWljb24tY2FjaGUgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjawotQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzJESVNUUk9GRUFUVVJFU30iCitBTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIiR7R1RLM0RJU1RST0ZFQVRVUkVTfSIKIAogUkRFUEVORFNfJHtQTn0gPSAiY29ubm1hbiIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi5pbmMKaW5kZXggYzM3NTI1MS4uMzVhN2VlZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4uaW5jCkBAIC0yNiwxMSArMjYsOSBAQAogICAgIC0tZW5hYmxlLWxvb3BiYWNrIFwKICAgICAtLWVuYWJsZS1ldGhlcm5ldCBcCiAgICAgLS1lbmFibGUtdG9vbHMgXAotICAgIC0tZW5hYmxlLXRlc3QgXAogICAgIC0tZGlzYWJsZS1wb2xraXQgXAogICAgIC0tZW5hYmxlLWNsaWVudCBcCiAiCi1DRkxBR1MgKz0gIi1EX0dOVV9TT1VSQ0UiCiAKIFBBQ0tBR0VDT05GSUcgPz89ICJ3aXNwciBcCiAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywnc3lzdGVtZCcsICcnLCBkKX0gXApAQCAtMTQwLDEwICsxMzgsNyBAQAogRklMRVNfJHtQTn0tdG9vbHMgPSAiJHtiaW5kaXJ9L3dpc3ByIgogUkRFUEVORFNfJHtQTn0tdG9vbHMgPSIke1BOfSIKIAotRklMRVNfJHtQTn0tdGVzdHMgPSAiJHtiaW5kaXJ9LyotdGVzdCAke2xpYmRpcn0vJHtCUE59L3Rlc3QvKiIKLVJERVBFTkRTXyR7UE59LXRlc3RzID0gInB5dGhvbi1kYnVzIHB5dGhvbi1weWdvYmplY3QgcHl0aG9uLXRleHR1dGlscyBweXRob24tc3VicHJvY2VzcyBweXRob24tZmNudGwgcHl0aG9uLW5ldGNsaWVudCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke1BOfSBcCi0iCitGSUxFU18ke1BOfS10ZXN0cyA9ICIke2JpbmRpcn0vKi10ZXN0IgogCiBGSUxFU18ke1BOfS1jbGllbnQgPSAiJHtiaW5kaXJ9L2Nvbm5tYW5jdGwiCiBSREVQRU5EU18ke1BOfS1jbGllbnQgPSIke1BOfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi8wMDAxLURldGVjdC1iYWNrdHJhY2UtQVBJLWF2YWlsYWJpbGl0eS1iZWZvcmUtdXNpbmctaXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMS1EZXRlY3QtYmFja3RyYWNlLUFQSS1hdmFpbGFiaWxpdHktYmVmb3JlLXVzaW5nLWl0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZGM2ZmQ2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi8wMDAxLURldGVjdC1iYWNrdHJhY2UtQVBJLWF2YWlsYWJpbGl0eS1iZWZvcmUtdXNpbmctaXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi1Gcm9tIDAwZDQ0NDczOTU3MjVhYmFhNjUxZTEyZWQ0MDA5NTA4MWUwNDAxMWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU3VuLCAxMyBTZXAgMjAxNSAxMzoyMjowMSAtMDcwMAotU3ViamVjdDogW1BBVENIIDEvM10gRGV0ZWN0IGJhY2t0cmFjZSgpIEFQSSBhdmFpbGFiaWxpdHkgYmVmb3JlIHVzaW5nIGl0Ci0KLUMgbGlicmFyaWVzIGJlc2lkZXMgZ2xpYmMgZG8gbm90IGhhdmUgYmFja3RyYWNlKCkgaW1wbGVtZW50ZWQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBjb25maWd1cmUuYWMgfCAyICsrCi0gc3JjL2xvZy5jICAgIHwgNSArKy0tLQotIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA2OWMwZWViLi45MDA5OWYyIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xNzEsNiArMTcxLDggQEAgZmkKLSBBTV9DT05ESVRJT05BTChQUFRQLCB0ZXN0ICIke2VuYWJsZV9wcHRwfSIgIT0gIm5vIikKLSBBTV9DT05ESVRJT05BTChQUFRQX0JVSUxUSU4sIHRlc3QgIiR7ZW5hYmxlX3BwdHB9IiA9ICJidWlsdGluIikKLSAKLStBQ19DSEVDS19IRUFERVJTKFtleGVjaW5mby5oXSkKLSsKLSBBQ19DSEVDS19IRUFERVJTKHJlc29sdi5oLCBkdW1teT15ZXMsCi0gCUFDX01TR19FUlJPUihyZXNvbHZlciBoZWFkZXIgZmlsZXMgYXJlIHJlcXVpcmVkKSkKLSBBQ19DSEVDS19MSUIocmVzb2x2LCBuc19pbml0cGFyc2UsIGR1bW15PXllcywgWwotZGlmZiAtLWdpdCBhL3NyYy9sb2cuYyBiL3NyYy9sb2cuYwotaW5kZXggYTY5M2JkMC4uNWI0MGMxZiAxMDA2NDQKLS0tLSBhL3NyYy9sb2cuYwotKysrIGIvc3JjL2xvZy5jCi1AQCAtMzAsNyArMzAsNiBAQAotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHN5c2xvZy5oPgotLSNpbmNsdWRlIDxleGVjaW5mby5oPgotICNpbmNsdWRlIDxkbGZjbi5oPgotIAotICNpbmNsdWRlICJjb25ubWFuLmgiCi1AQCAtMjE1LDkgKzIxNCw5IEBAIHN0YXRpYyB2b2lkIHByaW50X2JhY2t0cmFjZSh1bnNpZ25lZCBpbnQgb2Zmc2V0KQotIHN0YXRpYyB2b2lkIHNpZ25hbF9oYW5kbGVyKGludCBzaWdubykKLSB7Ci0gCWNvbm5tYW5fZXJyb3IoIkFib3J0aW5nIChzaWduYWwgJWQpIFslc10iLCBzaWdubywgcHJvZ3JhbV9leGVjKTsKLS0KLSsjaWZkZWYgSEFWRV9FWEVDSU5GT19ICi0gCXByaW50X2JhY2t0cmFjZSgyKTsKLS0KLSsjZW5kaWYgLyogSEFWRV9FWEVDSU5GT19IICovCi0gCWV4aXQoRVhJVF9GQUlMVVJFKTsKLSB9Ci0gCi0tLSAKLTIuNS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi8wMDAxLWlwdGFibGVzLUFkZC1taXNzaW5nLWZ1bmN0aW9uLWl0ZW0tb2YteHRhYmxlcy10by1tYXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMS1pcHRhYmxlcy1BZGQtbWlzc2luZy1mdW5jdGlvbi1pdGVtLW9mLXh0YWJsZXMtdG8tbWF0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjVhM2U0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi8wMDAxLWlwdGFibGVzLUFkZC1taXNzaW5nLWZ1bmN0aW9uLWl0ZW0tb2YteHRhYmxlcy10by1tYXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1Gcm9tIGFjZWEwOGEwZTQyMzRhNGMxYTg3YmVkYzA4N2M3M2ZmMzZkZTBjN2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBXdSBaaGVuZyA8d3UuemhlbmdAaW50ZWwuY29tPgotRGF0ZTogVGh1LCAyOCBKYW4gMjAxNiAxODowNDoxNyArMDgwMAotU3ViamVjdDogW1BBVENIXSBpcHRhYmxlczogQWRkIG1pc3NpbmcgZnVuY3Rpb24gaXRlbSBvZiB4dGFibGVzIHRvIG1hdGNoCi0gaXB0YWJsZXMgMS42Ci0KLVRoZSBzdHJ1Y3Qgb2YgeHRhYmxlc19nbG9iYWxzIGhhcyBiZWVuIG1vZGlmaWVkIGluIGlwdGFibGVzIDEuNi4KLUlmIGNvbm5tYW4gcnVucyB3aXRoIGlwdGFibGVzIDEuNiwgaXQgY2FuIGNyYXNoLgotCi1Qcm9ncmFtIHJlY2VpdmVkIHNpZ25hbCBTSUdTRUdWLCBTZWdtZW50YXRpb24gZmF1bHQuCi0weDAwMDAwMDAwIGluID8/ICgpCi0weGI3ZGVhODljIGluIHh0YWJsZXNfZmluZF90YXJnZXQgKCkgZnJvbSAvdXNyL2xpYi9saWJ4dGFibGVzLnNvLjExCi0weGI3ZGVhYzFjIGluID8/ICgpIGZyb20gL3Vzci9saWIvbGlieHRhYmxlcy5zby4xMQotMHhiN2RlYTc5MyBpbiB4dGFibGVzX2ZpbmRfdGFyZ2V0ICgpIGZyb20gL3Vzci9saWIvbGlieHRhYmxlcy5zby4xMQotCi1UaGUgdGhlIG1pc3NpbmcgZnVuY3Rpb24gaXRlbSBvZiB4dGFibGVzIGlzIGFkZGVkIHRvIHh0YWJsZXNfZ2xvYmFscy4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFd1IFpoZW5nIDx3dS56aGVuZ0BpbnRlbC5jb20+Ci0tLS0KLSBzcmMvaXB0YWJsZXMuYyB8IDMgKysrCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2lwdGFibGVzLmMgYi9zcmMvaXB0YWJsZXMuYwotaW5kZXggYmMwYzc2My4uNWVmNzU3YSAxMDA2NDQKLS0tLSBhL3NyYy9pcHRhYmxlcy5jCi0rKysgYi9zcmMvaXB0YWJsZXMuYwotQEAgLTE1NjYsNiArMTU2Niw5IEBAIHN0cnVjdCB4dGFibGVzX2dsb2JhbHMgaXB0YWJsZXNfZ2xvYmFscyA9IHsKLSAJLm9wdGlvbl9vZmZzZXQgPSAwLAotIAkub3B0cyA9IGlwdGFibGVzX29wdHMsCi0gCS5vcmlnX29wdHMgPSBpcHRhYmxlc19vcHRzLAotKyNpZiBYVEFCTEVTX1ZFUlNJT05fQ09ERSA+IDEwCi0rCS5jb21wYXRfcmV2ID0geHRhYmxlc19jb21wYXRpYmxlX3JldmlzaW9uLAotKyNlbmRpZgotIH07Ci0gCi0gc3RhdGljIHN0cnVjdCB4dGFibGVzX3RhcmdldCAqcHJlcGFyZV90YXJnZXQoc3RydWN0IGNvbm5tYW5faXB0YWJsZXMgKnRhYmxlLAotLS0gCi0yLjQuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMy1GaXgtaGVhZGVyLWluY2x1c2lvbnMtZm9yLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMy1GaXgtaGVhZGVyLWluY2x1c2lvbnMtZm9yLW11c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlZmM2ODMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDMtRml4LWhlYWRlci1pbmNsdXNpb25zLWZvci1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTE4ICswLDAgQEAKLUZyb20gNjc2NDVhMDFhMmYzZjUyNjI1ZDhkZDc3ZjI4MTFhOWUyMTNlMWI3ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTdW4sIDEzIFNlcCAyMDE1IDEzOjI4OjIwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBoZWFkZXIgaW5jbHVzaW9ucyBmb3IgbXVzbAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIGd3ZWIvZ3Jlc29sdi5jICAgICAgICB8IDEgKwotIHBsdWdpbnMvd2lmaS5jICAgICAgICB8IDMgKy0tCi0gc3JjL3RldGhlcmluZy5jICAgICAgIHwgMiAtLQotIHRvb2xzL2RoY3AtdGVzdC5jICAgICB8IDEgLQotIHRvb2xzL2Ruc3Byb3h5LXRlc3QuYyB8IDEgKwotIDUgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1JbmRleDogY29ubm1hbi0xLjMwL2d3ZWIvZ3Jlc29sdi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gY29ubm1hbi0xLjMwLm9yaWcvZ3dlYi9ncmVzb2x2LmMKLSsrKyBjb25ubWFuLTEuMzAvZ3dlYi9ncmVzb2x2LmMKLUBAIC0yOCw2ICsyOCw3IEBACi0gI2luY2x1ZGUgPHN0ZGFyZy5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHJlc29sdi5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotSW5kZXg6IGNvbm5tYW4tMS4zMC9wbHVnaW5zL3dpZmkuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGNvbm5tYW4tMS4zMC5vcmlnL3BsdWdpbnMvd2lmaS5jCi0rKysgY29ubm1hbi0xLjMwL3BsdWdpbnMvd2lmaS5jCi1AQCAtMzAsOSArMzAsOCBAQAotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0gI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLS0jaW5jbHVkZSA8bGludXgvaWZfYXJwLmg+Ci0tI2luY2x1ZGUgPGxpbnV4L3dpcmVsZXNzLmg+Ci0gI2luY2x1ZGUgPG5ldC9ldGhlcm5ldC5oPgotKyNpbmNsdWRlIDxsaW51eC93aXJlbGVzcy5oPgotIAotICNpZm5kZWYgSUZGX0xPV0VSX1VQCi0gI2RlZmluZSBJRkZfTE9XRVJfVVAJMHgxMDAwMAotSW5kZXg6IGNvbm5tYW4tMS4zMC9zcmMvdGV0aGVyaW5nLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjb25ubWFuLTEuMzAub3JpZy9zcmMvdGV0aGVyaW5nLmMKLSsrKyBjb25ubWFuLTEuMzAvc3JjL3RldGhlcmluZy5jCi1AQCAtMzEsMTAgKzMxLDggQEAKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0gI2luY2x1ZGUgPG5ldC9pZi5oPgotLSNpbmNsdWRlIDxsaW51eC9zb2NraW9zLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxmY250bC5oPgotLSNpbmNsdWRlIDxsaW51eC9pZl90dW4uaD4KLSAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotICNpbmNsdWRlIDxsaW51eC9pZl9icmlkZ2UuaD4KLSAKLUluZGV4OiBjb25ubWFuLTEuMzAvdG9vbHMvZGhjcC10ZXN0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjb25ubWFuLTEuMzAub3JpZy90b29scy9kaGNwLXRlc3QuYwotKysrIGNvbm5tYW4tMS4zMC90b29scy9kaGNwLXRlc3QuYwotQEAgLTMzLDcgKzMzLDYgQEAKLSAjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+Ci0gI2luY2x1ZGUgPG5ldC9yb3V0ZS5oPgotICNpbmNsdWRlIDxuZXQvZXRoZXJuZXQuaD4KLS0jaW5jbHVkZSA8bGludXgvaWZfYXJwLmg+Ci0gCi0gI2luY2x1ZGUgPGdkaGNwL2dkaGNwLmg+Ci0gCi1JbmRleDogY29ubm1hbi0xLjMwL3Rvb2xzL2Ruc3Byb3h5LXRlc3QuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGNvbm5tYW4tMS4zMC5vcmlnL3Rvb2xzL2Ruc3Byb3h5LXRlc3QuYwotKysrIGNvbm5tYW4tMS4zMC90b29scy9kbnNwcm94eS10ZXN0LmMKLUBAIC0yNyw2ICsyNyw3IEBACi0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPGFycGEvaW5ldC5oPgotICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotSW5kZXg6IGNvbm5tYW4tMS4zMC9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjb25ubWFuLTEuMzAub3JpZy9jb25maWd1cmUuYWMKLSsrKyBjb25ubWFuLTEuMzAvY29uZmlndXJlLmFjCi1AQCAtMTczLDYgKzE3Myw4IEBAIEFNX0NPTkRJVElPTkFMKFBQVFBfQlVJTFRJTiwgdGVzdCAiJHtlbmEKLSAKLSBBQ19DSEVDS19IRUFERVJTKFtleGVjaW5mby5oXSkKLSAKLStBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3QgaW42X3BrdGluZm8uaXBpNl9hZGRyXSwgW10sIFtdLCBbWyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+XV0pCi0rCi0gQUNfQ0hFQ0tfSEVBREVSUyhyZXNvbHYuaCwgZHVtbXk9eWVzLAotIAlBQ19NU0dfRVJST1IocmVzb2x2ZXIgaGVhZGVyIGZpbGVzIGFyZSByZXF1aXJlZCkpCi0gQUNfQ0hFQ0tfTElCKHJlc29sdiwgbnNfaW5pdHBhcnNlLCBkdW1teT15ZXMsIFsKLUluZGV4OiBjb25ubWFuLTEuMzAvZ2RoY3AvY29tbW9uLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjb25ubWFuLTEuMzAub3JpZy9nZGhjcC9jb21tb24uaAotKysrIGNvbm5tYW4tMS4zMC9nZGhjcC9jb21tb24uaAotQEAgLTE5LDYgKzE5LDcgQEAKLSAgKgotICAqLwotIAotKyNpbmNsdWRlIDxjb25maWcuaD4KLSAjaW5jbHVkZSA8bmV0aW5ldC91ZHAuaD4KLSAjaW5jbHVkZSA8bmV0aW5ldC9pcC5oPgotIAotQEAgLTE3MCw4ICsxNzEsOCBAQCBzdGF0aWMgY29uc3QgdWludDhfdCBkaGNwX29wdGlvbl9sZW5ndGhzCi0gCVtPUFRJT05fVTMyXQk9IDQsCi0gfTsKLSAKLS0vKiBhbHJlYWR5IGRlZmluZWQgd2l0aGluIG5ldGluZXQvaW4uaCBpZiB1c2luZyBHTlUgY29tcGlsZXIgKi8KLS0jaWZuZGVmIF9fVVNFX0dOVQotKy8qIGFscmVhZHkgZGVmaW5lZCB3aXRoaW4gbmV0aW5ldC9pbi5oIGlmIHVzaW5nIEdOVSBvciBtdXNsIGxpYmMgKi8KLSsjaWZuZGVmIEhBVkVfU1RSVUNUX0lONl9QS1RJTkZPX0lQSTZfQUREUgotIHN0cnVjdCBpbjZfcGt0aW5mbyB7Ci0gCXN0cnVjdCBpbjZfYWRkciBpcGk2X2FkZHI7ICAvKiBzcmMvZHN0IElQdjYgYWRkcmVzcyAqLwotIAl1bnNpZ25lZCBpbnQgaXBpNl9pZmluZGV4OyAgLyogc2VuZC9yZWN2IGludGVyZmFjZSBpbmRleCAqLwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuL2luY2x1ZGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuL2luY2x1ZGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1Y2IxODcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vaW5jbHVkZXMucGF0Y2gKQEAgLTAsMCArMSw0MjMgQEAKK0ZpeCB2YXJpb3VzIGlzc3VlcyB3aGljaCBjYXVzZSBwcm9ibGVtcyB1bmRlciBtdXNsLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworRnJvbSA2MzA1MTZiY2MwMjMzYjA0N2Y2NTY2NWMwMDMyMDFiYTZlNzc0NTNkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK0RhdGU6IFR1ZSwgOSBBdWcgMjAxNiAxNjoyMjozNiArMDEwMAorU3ViamVjdDogW1BBVENIIDEvM10gVXNlIEFDX1VTRV9TWVNURU1fRVhURU5TSU9OUworCitJbnN0ZWFkIG9mIHVzaW5nICNkZWZpbmUgX0dOVV9TT1VSQ0UgaW4gc29tZSBzb3VyY2UgZmlsZXMgd2hpY2ggY2F1c2VzIHByb2JsZW1zCit3aGVuIGJ1aWxkaW5nIHdpdGggbXVzbCBhcyBtb3JlIGZpbGVzIG5lZWQgdGhlIGRlZmluZSwgc2ltcGx5IHVzZQorQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TIGluIGNvbmZpZ3VyZS5hYyB0byBnZXQgaXQgZGVmaW5lZCBnbG9iYWxseS4KKy0tLQorIGNvbmZpZ3VyZS5hYyAgICAgICB8IDEgKworIGdkaGNwL2NsaWVudC5jICAgICB8IDEgLQorIHBsdWdpbnMvdGlzdC5jICAgICB8IDEgLQorIHNyYy9iYWNrdHJhY2UuYyAgICB8IDEgLQorIHNyYy9pbmV0LmMgICAgICAgICB8IDEgLQorIHNyYy9sb2cuYyAgICAgICAgICB8IDEgLQorIHNyYy9udHAuYyAgICAgICAgICB8IDEgLQorIHNyYy9yZXNvbHZlci5jICAgICB8IDEgLQorIHNyYy9yZmtpbGwuYyAgICAgICB8IDEgLQorIHNyYy9zdGF0cy5jICAgICAgICB8IDEgLQorIHNyYy90aW1lem9uZS5jICAgICB8IDEgLQorIHRvb2xzL3N0YXRzLXRvb2wuYyB8IDEgLQorIHRvb2xzL3RhcC10ZXN0LmMgICB8IDEgLQorIHRvb2xzL3dpc3ByLmMgICAgICB8IDEgLQorIHZwbi9wbHVnaW5zL3Zwbi5jICB8IDEgLQorIDE1IGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggNmU2NmFiMy4uYmFjZjVlYyAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMjAsNiArMjAsNyBAQCBBQ19TVUJTVChhYnNfdG9wX3NyY2RpcikKKyBBQ19TVUJTVChhYnNfdG9wX2J1aWxkZGlyKQorIAorIEFDX0xBTkdfQworK0FDX1VTRV9TWVNURU1fRVhURU5TSU9OUworIAorIEFDX1BST0dfQ0MKKyBBTV9QUk9HX0NDX0NfTworZGlmZiAtLWdpdCBhL2dkaGNwL2NsaWVudC5jIGIvZ2RoY3AvY2xpZW50LmMKK2luZGV4IGZiYjQwYWIuLjNhZWIwODkgMTAwNjQ0CistLS0gYS9nZGhjcC9jbGllbnQuYworKysrIGIvZ2RoY3AvY2xpZW50LmMKK0BAIC0yMyw3ICsyMyw2IEBACisgI2luY2x1ZGUgPGNvbmZpZy5oPgorICNlbmRpZgorIAorLSNkZWZpbmUgX0dOVV9TT1VSQ0UKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CitkaWZmIC0tZ2l0IGEvcGx1Z2lucy90aXN0LmMgYi9wbHVnaW5zL3Rpc3QuYworaW5kZXggYWQ1ZWY3OS4uY2MyODAwYSAxMDA2NDQKKy0tLSBhL3BsdWdpbnMvdGlzdC5jCisrKysgYi9wbHVnaW5zL3Rpc3QuYworQEAgLTIzLDcgKzIzLDYgQEAKKyAjaW5jbHVkZSA8Y29uZmlnLmg+CisgI2VuZGlmCisgCistI2RlZmluZSBfR05VX1NPVVJDRQorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzdGRib29sLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorZGlmZiAtLWdpdCBhL3NyYy9iYWNrdHJhY2UuYyBiL3NyYy9iYWNrdHJhY2UuYworaW5kZXggNmE2NmMwYS4uNGRiZGRhOCAxMDA2NDQKKy0tLSBhL3NyYy9iYWNrdHJhY2UuYworKysrIGIvc3JjL2JhY2t0cmFjZS5jCitAQCAtMjQsNyArMjQsNiBAQAorICNpbmNsdWRlIDxjb25maWcuaD4KKyAjZW5kaWYKKyAKKy0jZGVmaW5lIF9HTlVfU09VUkNFCisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KK2RpZmYgLS1naXQgYS9zcmMvaW5ldC5jIGIvc3JjL2luZXQuYworaW5kZXggNjlkZWQxOS4uODFkOTJjMiAxMDA2NDQKKy0tLSBhL3NyYy9pbmV0LmMKKysrKyBiL3NyYy9pbmV0LmMKK0BAIC0yNSw3ICsyNSw2IEBACisgI2luY2x1ZGUgPGNvbmZpZy5oPgorICNlbmRpZgorIAorLSNkZWZpbmUgX0dOVV9TT1VSQ0UKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CitkaWZmIC0tZ2l0IGEvc3JjL2xvZy5jIGIvc3JjL2xvZy5jCitpbmRleCA5YmFlNGEzLi5mN2U4MmU1IDEwMDY0NAorLS0tIGEvc3JjL2xvZy5jCisrKysgYi9zcmMvbG9nLmMKK0BAIC0yMyw3ICsyMyw2IEBACisgI2luY2x1ZGUgPGNvbmZpZy5oPgorICNlbmRpZgorIAorLSNkZWZpbmUgX0dOVV9TT1VSQ0UKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPHN0ZGFyZy5oPgorZGlmZiAtLWdpdCBhL3NyYy9udHAuYyBiL3NyYy9udHAuYworaW5kZXggZGQyNDZlYi4uZGI4YWU5NiAxMDA2NDQKKy0tLSBhL3NyYy9udHAuYworKysrIGIvc3JjL250cC5jCitAQCAtMjMsNyArMjMsNiBAQAorICNpbmNsdWRlIDxjb25maWcuaD4KKyAjZW5kaWYKKyAKKy0jZGVmaW5lIF9HTlVfU09VUkNFCisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorZGlmZiAtLWdpdCBhL3NyYy9yZXNvbHZlci5jIGIvc3JjL3Jlc29sdmVyLmMKK2luZGV4IGZiZTRiZTcuLmVmNjFmOTIgMTAwNjQ0CistLS0gYS9zcmMvcmVzb2x2ZXIuYworKysrIGIvc3JjL3Jlc29sdmVyLmMKK0BAIC0yMyw3ICsyMyw2IEBACisgI2luY2x1ZGUgPGNvbmZpZy5oPgorICNlbmRpZgorIAorLSNkZWZpbmUgX0dOVV9TT1VSQ0UKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KK2RpZmYgLS1naXQgYS9zcmMvcmZraWxsLmMgYi9zcmMvcmZraWxsLmMKK2luZGV4IDJiZmIwOTIuLmFmNDlkMTIgMTAwNjQ0CistLS0gYS9zcmMvcmZraWxsLmMKKysrKyBiL3NyYy9yZmtpbGwuYworQEAgLTIzLDcgKzIzLDYgQEAKKyAjaW5jbHVkZSA8Y29uZmlnLmg+CisgI2VuZGlmCisgCistI2RlZmluZSBfR05VX1NPVVJDRQorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxmY250bC5oPgorZGlmZiAtLWdpdCBhL3NyYy9zdGF0cy5jIGIvc3JjL3N0YXRzLmMKK2luZGV4IDI2MzQzYjEuLmNmY2RjOTQgMTAwNjQ0CistLS0gYS9zcmMvc3RhdHMuYworKysrIGIvc3JjL3N0YXRzLmMKK0BAIC0yMyw3ICsyMyw2IEBACisgI2luY2x1ZGUgPGNvbmZpZy5oPgorICNlbmRpZgorIAorLSNkZWZpbmUgX0dOVV9TT1VSQ0UKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8c3lzL21tYW4uaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CitkaWZmIC0tZ2l0IGEvc3JjL3RpbWV6b25lLmMgYi9zcmMvdGltZXpvbmUuYworaW5kZXggZTM0NmIxMS4uOGU5MTI2NyAxMDA2NDQKKy0tLSBhL3NyYy90aW1lem9uZS5jCisrKysgYi9zcmMvdGltZXpvbmUuYworQEAgLTIzLDcgKzIzLDYgQEAKKyAjaW5jbHVkZSA8Y29uZmlnLmg+CisgI2VuZGlmCisgCistI2RlZmluZSBfR05VX1NPVVJDRQorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxmY250bC5oPgorZGlmZiAtLWdpdCBhL3Rvb2xzL3N0YXRzLXRvb2wuYyBiL3Rvb2xzL3N0YXRzLXRvb2wuYworaW5kZXggYjA3NjQ3OC4uNDI4ZDk0YiAxMDA2NDQKKy0tLSBhL3Rvb2xzL3N0YXRzLXRvb2wuYworKysrIGIvdG9vbHMvc3RhdHMtdG9vbC5jCitAQCAtMjIsNyArMjIsNiBAQAorICNpbmNsdWRlIDxjb25maWcuaD4KKyAjZW5kaWYKKyAKKy0jZGVmaW5lIF9HTlVfU09VUkNFCisgI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorZGlmZiAtLWdpdCBhL3Rvb2xzL3RhcC10ZXN0LmMgYi90b29scy90YXAtdGVzdC5jCitpbmRleCBmZGMwOThhLi41NzkxN2Y1IDEwMDY0NAorLS0tIGEvdG9vbHMvdGFwLXRlc3QuYworKysrIGIvdG9vbHMvdGFwLXRlc3QuYworQEAgLTIzLDcgKzIzLDYgQEAKKyAjaW5jbHVkZSA8Y29uZmlnLmg+CisgI2VuZGlmCisgCistI2RlZmluZSBfR05VX1NPVVJDRQorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxmY250bC5oPgorZGlmZiAtLWdpdCBhL3Rvb2xzL3dpc3ByLmMgYi90b29scy93aXNwci5jCitpbmRleCBkNWY5MzQxLi5lNTZkZmMxIDEwMDY0NAorLS0tIGEvdG9vbHMvd2lzcHIuYworKysrIGIvdG9vbHMvd2lzcHIuYworQEAgLTIzLDcgKzIzLDYgQEAKKyAjaW5jbHVkZSA8Y29uZmlnLmg+CisgI2VuZGlmCisgCistI2RlZmluZSBfR05VX1NPVVJDRQorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KK2RpZmYgLS1naXQgYS92cG4vcGx1Z2lucy92cG4uYyBiL3Zwbi9wbHVnaW5zL3Zwbi5jCitpbmRleCA5YTQyMzg1Li40NzljM2E3IDEwMDY0NAorLS0tIGEvdnBuL3BsdWdpbnMvdnBuLmMKKysrKyBiL3Zwbi9wbHVnaW5zL3Zwbi5jCitAQCAtMjMsNyArMjMsNiBAQAorICNpbmNsdWRlIDxjb25maWcuaD4KKyAjZW5kaWYKKyAKKy0jZGVmaW5lIF9HTlVfU09VUkNFCisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKy0tIAorMi44LjEKKworCitGcm9tIGI4Yjc4NzhlNmNiMmExZWQ0ZmNmYTI1NmY3ZTIzMjUxMWE0MGUzZDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorRGF0ZTogVHVlLCA5IEF1ZyAyMDE2IDE1OjM3OjUwICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMi8zXSBDaGVjayBmb3IgaW42X3BrdGluZm8uaXBpNl9hZGRyIGV4cGxpY2l0bHkKKworSW5zdGVhZCBvZiBhc3N1bWluZyB0aGF0IGp1c3QgZ2xpYmMgaGFzIHRoaXMgc3RydWN0dXJlLCBjaGVjayBmb3IgaXQgYXQKK2NvbmZpZ3VyZSBhcyBtdXNsIGFsc28gaGFzIGl0LgorCitCYXNlZCBvbiB3b3JrIGJ5IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+LgorLS0tCisgY29uZmlndXJlLmFjICAgfCAyICsrCisgZ2RoY3AvY29tbW9uLmggfCA1ICsrKy0tCisgMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGJhY2Y1ZWMuLmFkMDA0NTYgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTE4Niw2ICsxODYsOCBAQCBBQ19DSEVDS19MSUIocmVzb2x2LCBuc19pbml0cGFyc2UsIGR1bW15PXllcywgWworIEFDX0NIRUNLX0hFQURFUlMoW2V4ZWNpbmZvLmhdKQorIEFNX0NPTkRJVElPTkFMKFtCQUNLVFJBQ0VdLCBbdGVzdCAiJHthY19jdl9oZWFkZXJfZXhlY2luZm9faH0iID0gInllcyJdKQorIAorK0FDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBpbjZfcGt0aW5mby5pcGk2X2FkZHJdLCBbXSwgW10sIFtbI2luY2x1ZGUgPG5ldGluZXQvaW4uaD5dXSkKKysKKyBBQ19DSEVDS19GVU5DKHNpZ25hbGZkLCBkdW1teT15ZXMsCisgCQkJQUNfTVNHX0VSUk9SKHNpZ25hbGZkIHN1cHBvcnQgaXMgcmVxdWlyZWQpKQorIAorZGlmZiAtLWdpdCBhL2dkaGNwL2NvbW1vbi5oIGIvZ2RoY3AvY29tbW9uLmgKK2luZGV4IDc1YWJjMTguLjY4OTk0OTkgMTAwNjQ0CistLS0gYS9nZGhjcC9jb21tb24uaAorKysrIGIvZ2RoY3AvY29tbW9uLmgKK0BAIC0xOSw2ICsxOSw3IEBACisgICoKKyAgKi8KKyAKKysjaW5jbHVkZSA8Y29uZmlnLmg+CisgI2luY2x1ZGUgPG5ldGluZXQvdWRwLmg+CisgI2luY2x1ZGUgPG5ldGluZXQvaXAuaD4KKyAKK0BAIC0xNzAsOCArMTcxLDggQEAgc3RhdGljIGNvbnN0IHVpbnQ4X3QgZGhjcF9vcHRpb25fbGVuZ3Roc1tdID0geworIAlbT1BUSU9OX1UzMl0JPSA0LAorIH07CisgCistLyogYWxyZWFkeSBkZWZpbmVkIHdpdGhpbiBuZXRpbmV0L2luLmggaWYgdXNpbmcgR05VIGNvbXBpbGVyICovCistI2lmbmRlZiBfX1VTRV9HTlUKKysvKiBhbHJlYWR5IGRlZmluZWQgd2l0aGluIG5ldGluZXQvaW4uaCBpZiB1c2luZyBnbGliYyBvciBtdXNsICovCisrI2lmbmRlZiBIQVZFX1NUUlVDVF9JTjZfUEtUSU5GT19JUEk2X0FERFIKKyBzdHJ1Y3QgaW42X3BrdGluZm8geworIAlzdHJ1Y3QgaW42X2FkZHIgaXBpNl9hZGRyOyAgLyogc3JjL2RzdCBJUHY2IGFkZHJlc3MgKi8KKyAJdW5zaWduZWQgaW50IGlwaTZfaWZpbmRleDsgIC8qIHNlbmQvcmVjdiBpbnRlcmZhY2UgaW5kZXggKi8KKy0tIAorMi44LjEKKworCitGcm9tIGMwNzI2ZTQzMmZhMDI3NGEyYjljNzAxNzliMDNkZjY3MjA5NzI4MTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorRGF0ZTogVHVlLCA5IEF1ZyAyMDE2IDE1OjE5OjIzICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMy8zXSBSYXRpb25hbGlzZSBpbmNsdWRlcworCitnd2ViL2dyZXNvbHYuYyB1c2VzIHNucHJpbnRmKCkgYW5kIGlzc3BhY2UoKSBzbyBpdCBzaG91bGQgaW5jbHVkZSBzdGRpby5oIGFuZAorY3R5cGUuaC4KKwordG9vbHMvZG5zcHJveHktdGVzdCB1c2VzIGZ1bmN0aW9ucyBmcm9tIHN0ZGlvLmguCisKK211c2wgd2FybnMgd2hlbiBzeXMvIGhlYWRlcnMgYXJlIGluY2x1ZGVkIHdoZW4gdGhlIG5vbi1zeXMgZm9ybSBzaG91bGQgYmUgdXNlZCwKK3NvIHN3aXRjaCBzeXMvZXJybm8uaCBhbmQgc28gb24gdG8gZXJybm8uaC4KKworbXVzbCBhbHNvIGNhdXNlcyByZWRlZmluaXRpb24gZXJyb3JzIHdoZW4gcGllY2VzIG9mIHRoZSBuZXR3b3JraW5nIGhlYWRlcnMgYXJlCitpbmNsdWRlZCwgc28gcmVtb3ZlIHRoZSByZWR1bmRhbnQgaW5jbHVkZXMuCisKK0Jhc2VkIG9uIHdvcmsgYnkgS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4uCistLS0KKyBnd2ViL2dyZXNvbHYuYyAgICAgICAgICAgICAgIHwgMiArKworIHBsdWdpbnMvd2lmaS5jICAgICAgICAgICAgICAgfCAzICstLQorIHNyYy9pcHBvb2wuYyAgICAgICAgICAgICAgICAgfCAxIC0KKyBzcmMvaXB0YWJsZXMuYyAgICAgICAgICAgICAgIHwgMiArLQorIHNyYy90ZXRoZXJpbmcuYyAgICAgICAgICAgICAgfCAyIC0tCisgdG9vbHMvZGhjcC10ZXN0LmMgICAgICAgICAgICB8IDEgLQorIHRvb2xzL2Ruc3Byb3h5LXRlc3QuYyAgICAgICAgfCAxICsKKyB0b29scy9wcml2YXRlLW5ldHdvcmstdGVzdC5jIHwgMiArLQorIHRvb2xzL3RhcC10ZXN0LmMgICAgICAgICAgICAgfCAyICstCisgOSBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nd2ViL2dyZXNvbHYuYyBiL2d3ZWIvZ3Jlc29sdi5jCitpbmRleCA4YTUxYTlmLi5kNTUwMjdjIDEwMDY0NAorLS0tIGEvZ3dlYi9ncmVzb2x2LmMKKysrKyBiL2d3ZWIvZ3Jlc29sdi5jCitAQCAtMjMsMTEgKzIzLDEzIEBACisgI2luY2x1ZGUgPGNvbmZpZy5oPgorICNlbmRpZgorIAorKyNpbmNsdWRlIDxjdHlwZS5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8c3RkYXJnLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKysjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8cmVzb2x2Lmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CitkaWZmIC0tZ2l0IGEvcGx1Z2lucy93aWZpLmMgYi9wbHVnaW5zL3dpZmkuYworaW5kZXggOWQ1NjY3MS4uMTQ4MTMxZCAxMDA2NDQKKy0tLSBhL3BsdWdpbnMvd2lmaS5jCisrKysgYi9wbHVnaW5zL3dpZmkuYworQEAgLTMwLDkgKzMwLDggQEAKKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CistI2luY2x1ZGUgPGxpbnV4L2lmX2FycC5oPgorLSNpbmNsdWRlIDxsaW51eC93aXJlbGVzcy5oPgorICNpbmNsdWRlIDxuZXQvZXRoZXJuZXQuaD4KKysjaW5jbHVkZSA8bGludXgvd2lyZWxlc3MuaD4KKyAKKyAjaWZuZGVmIElGRl9MT1dFUl9VUAorICNkZWZpbmUgSUZGX0xPV0VSX1VQCTB4MTAwMDAKK2RpZmYgLS1naXQgYS9zcmMvaXBwb29sLmMgYi9zcmMvaXBwb29sLmMKK2luZGV4IGNlYTFkY2MuLjhhNjQ1ZGEgMTAwNjQ0CistLS0gYS9zcmMvaXBwb29sLmMKKysrKyBiL3NyYy9pcHBvb2wuYworQEAgLTI4LDcgKzI4LDYgQEAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorLSNpbmNsdWRlIDxzeXMvZXJybm8uaD4KKyAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorIAorICNpbmNsdWRlICJjb25ubWFuLmgiCitkaWZmIC0tZ2l0IGEvc3JjL2lwdGFibGVzLmMgYi9zcmMvaXB0YWJsZXMuYworaW5kZXggNWVmNzU3YS4uODJlM2FjNCAxMDA2NDQKKy0tLSBhL3NyYy9pcHRhYmxlcy5jCisrKysgYi9zcmMvaXB0YWJsZXMuYworQEAgLTI4LDcgKzI4LDcgQEAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorLSNpbmNsdWRlIDxzeXMvZXJybm8uaD4KKysjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorICNpbmNsdWRlIDx4dGFibGVzLmg+CisgI2luY2x1ZGUgPGludHR5cGVzLmg+CitkaWZmIC0tZ2l0IGEvc3JjL3RldGhlcmluZy5jIGIvc3JjL3RldGhlcmluZy5jCitpbmRleCAzMTUzMzQ5Li5hZDA2MmQ1IDEwMDY0NAorLS0tIGEvc3JjL3RldGhlcmluZy5jCisrKysgYi9zcmMvdGV0aGVyaW5nLmMKK0BAIC0zMSwxMCArMzEsOCBAQAorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyAjaW5jbHVkZSA8bmV0L2lmLmg+CistI2luY2x1ZGUgPGxpbnV4L3NvY2tpb3MuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CistI2luY2x1ZGUgPGxpbnV4L2lmX3R1bi5oPgorICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisgI2luY2x1ZGUgPGxpbnV4L2lmX2JyaWRnZS5oPgorIAorZGlmZiAtLWdpdCBhL3Rvb2xzL2RoY3AtdGVzdC5jIGIvdG9vbHMvZGhjcC10ZXN0LmMKK2luZGV4IGMzNGUxMGEuLmVhZTY2ZmMgMTAwNjQ0CistLS0gYS90b29scy9kaGNwLXRlc3QuYworKysrIGIvdG9vbHMvZGhjcC10ZXN0LmMKK0BAIC0zMyw3ICszMyw2IEBACisgI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorICNpbmNsdWRlIDxuZXQvcm91dGUuaD4KKyAjaW5jbHVkZSA8bmV0L2V0aGVybmV0Lmg+CistI2luY2x1ZGUgPGxpbnV4L2lmX2FycC5oPgorIAorICNpbmNsdWRlIDxnZGhjcC9nZGhjcC5oPgorIAorZGlmZiAtLWdpdCBhL3Rvb2xzL2Ruc3Byb3h5LXRlc3QuYyBiL3Rvb2xzL2Ruc3Byb3h5LXRlc3QuYworaW5kZXggNTUxY2FlOS4uMzcxZTJlMiAxMDA2NDQKKy0tLSBhL3Rvb2xzL2Ruc3Byb3h5LXRlc3QuYworKysrIGIvdG9vbHMvZG5zcHJveHktdGVzdC5jCitAQCAtMjQsNiArMjQsNyBAQAorICNlbmRpZgorIAorICNpbmNsdWRlIDxlcnJuby5oPgorKyNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorZGlmZiAtLWdpdCBhL3Rvb2xzL3ByaXZhdGUtbmV0d29yay10ZXN0LmMgYi90b29scy9wcml2YXRlLW5ldHdvcmstdGVzdC5jCitpbmRleCAzZGQxMTViLi4yODI4YmIzIDEwMDY0NAorLS0tIGEvdG9vbHMvcHJpdmF0ZS1uZXR3b3JrLXRlc3QuYworKysrIGIvdG9vbHMvcHJpdmF0ZS1uZXR3b3JrLXRlc3QuYworQEAgLTMyLDcgKzMyLDcgQEAKKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDxzaWduYWwuaD4KKy0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KKysjaW5jbHVkZSA8cG9sbC5oPgorICNpbmNsdWRlIDxzeXMvc2lnbmFsZmQuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgCitkaWZmIC0tZ2l0IGEvdG9vbHMvdGFwLXRlc3QuYyBiL3Rvb2xzL3RhcC10ZXN0LmMKK2luZGV4IDU3OTE3ZjUuLmNiM2VlNjIgMTAwNjQ0CistLS0gYS90b29scy90YXAtdGVzdC5jCisrKysgYi90b29scy90YXAtdGVzdC5jCitAQCAtMjgsNyArMjgsNyBAQAorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CistI2luY2x1ZGUgPHN5cy9wb2xsLmg+CisrI2luY2x1ZGUgPHBvbGwuaD4KKyAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisgCisgI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKy0tIAorMi44LjEKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi9uby12ZXJzaW9uLXNjcmlwdHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vbm8tdmVyc2lvbi1zY3JpcHRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5NmUzOGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vbm8tdmVyc2lvbi1zY3JpcHRzLnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK1dpdGggYmludXRpbHMgMi4yNyBvbiBhdCBsZWFzdCBNSVBTLCBjb25ubWFuZCB3aWxsIGNyYXNoIG9uIHN0YXJ0dXAuICBUaGlzCithcHBlYXJzIHRvIGJlIGR1ZSB0byB0aGUgc3ltYm9sIHZpc2liaWx0eSBzY3JpcHRzIGhpZGluZyBzeW1ib2xzIHRoYXQgc3RkaW8KK2xvb2tzIHVwIGF0IHJ1bnRpbWUsIHJlc3VsdGluZyBpbiBpdCBzZWdmYXVsdGluZy4KKworVGhpcyBjZXJ0YWlubHkgYXBwZWFycyB0byBiZSBhIGJ1ZyBpbiBiaW51dGlscyAyLjI3IGFsdGhvdWdoIHRoZSBwcm9ibGVtIGhhcworYmVlbiBrbm93biBhYm91dCBmb3Igc29tZSB0aW1lOgorCitodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xNzkwOAorCitBcyB0aGUgdmVyc2lvbiBzY3JpcHRzIGFyZSBvbmx5IHVzZWQgdG8gaGlkZSBzeW1ib2xzIGZyb20gcGx1Z2lucyB3ZSBjYW4gc2FmZWx5CityZW1vdmUgdGhlIHNjcmlwdHMgdG8gd29yayBhcm91bmQgdGhlIHByb2JsZW0gdW50aWwgYmludXRpbHMgaXMgZml4ZWQuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KK2luZGV4IGQ3MDcyNWMuLjc2YWU0MzIgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5hbQorKysrIGIvTWFrZWZpbGUuYW0KK0BAIC0xMzIsMiArMTMyIEBAIHNyY19jb25ubWFuZF9MREFERCA9IGdkYnVzL2xpYmdkYnVzLWludGVybmFsLmxhICQoYnVpbHRpbl9saWJhZGQpIFwKKy1zcmNfY29ubm1hbmRfTERGTEFHUyA9IC1XbCwtLWV4cG9ydC1keW5hbWljIFwKKy0JCQkJLVdsLC0tdmVyc2lvbi1zY3JpcHQ9JChzcmNkaXIpL3NyYy9jb25ubWFuLnZlcgorK3NyY19jb25ubWFuZF9MREZMQUdTID0gLVdsLC0tZXhwb3J0LWR5bmFtaWMKK0BAIC0xNjYsMiArMTY1IEBAIHZwbl9jb25ubWFuX3ZwbmRfTERBREQgPSBnZGJ1cy9saWJnZGJ1cy1pbnRlcm5hbC5sYSAkKGJ1aWx0aW5fdnBuX2xpYmFkZCkgXAorLXZwbl9jb25ubWFuX3ZwbmRfTERGTEFHUyA9IC1XbCwtLWV4cG9ydC1keW5hbWljIFwKKy0JCQkJLVdsLC0tdmVyc2lvbi1zY3JpcHQ9JChzcmNkaXIpL3Zwbi92cG4udmVyCisrdnBuX2Nvbm5tYW5fdnBuZF9MREZMQUdTID0gLVdsLC0tZXhwb3J0LWR5bmFtaWMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbl8xLjMxLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuXzEuMzEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3MWQyMjEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuXzEuMzEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1yZXF1aXJlIGNvbm5tYW4uaW5jCi0KLVNSQ19VUkkgID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvbmV0d29yay8ke0JQTn0vJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBsdWdpbi5oLUNoYW5nZS12aXNpYmlsaXR5LXRvLWRlZmF1bHQtZm9yLWRlYnVnLXN5bWIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtRGV0ZWN0LWJhY2t0cmFjZS1BUEktYXZhaWxhYmlsaXR5LWJlZm9yZS11c2luZy1pdC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMi1yZXNvbHZlLW11c2wtZG9lcy1ub3QtaW1wbGVtZW50LXJlc19uaW5pdC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMy1GaXgtaGVhZGVyLWluY2x1c2lvbnMtZm9yLW11c2wucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtaXB0YWJsZXMtQWRkLW1pc3NpbmctZnVuY3Rpb24taXRlbS1vZi14dGFibGVzLXRvLW1hdC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vY29ubm1hbiBcCi0gICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiY2IxYzQxM2ZjYzRmNDk0MzAyOTRiYmQ3YTkyZjVmM2MiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODhmY2YwYjZkZjMzNDc5NmI5MGUyZmQyZTQzNGQ2ZjViMzZjZDZmMTNiODg2YTExOWI4YzkwMjc2YjcyYjhlMiIKLQotUlJFQ09NTUVORFNfJHtQTn0gPSAiY29ubm1hbi1jb25mIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW5fMS4zMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbl8xLjMzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlYTFhMDgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW5fMS4zMy5iYgpAQCAtMCwwICsxLDE0IEBACityZXF1aXJlIGNvbm5tYW4uaW5jCisKK1NSQ19VUkkgID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvbmV0d29yay8ke0JQTn0vJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBsdWdpbi5oLUNoYW5nZS12aXNpYmlsaXR5LXRvLWRlZmF1bHQtZm9yLWRlYnVnLXN5bWIucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2Nvbm5tYW4gXAorICAgICAgICAgICAgZmlsZTovL25vLXZlcnNpb24tc2NyaXB0cy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZXMucGF0Y2ggXAorICAgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vMDAwMi1yZXNvbHZlLW11c2wtZG9lcy1ub3QtaW1wbGVtZW50LXJlc19uaW5pdC5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gImM1MTkwM2ZkM2U3YTZhMzcxZDEyYWM1ZDcyYTFmYTAxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJjODk0NjAzNmZhNzAxMjRkNjYzMTM2ZjlmNmI2MjM4ZDg5N2NhNDgyNzgyZGY5MDdiMDdhNDI4YjA5ZGY1YTAiCisKK1JSRUNPTU1FTkRTXyR7UE59ID0gImNvbm5tYW4tY29uZiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AuaW5jCmluZGV4IDVlMzk2ZjEuLmFhZmRkMGEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLmluYwpAQCAtNDYsNyArNDYsOCBAQAogICAgICAgICAgICAgICAgIC0td2l0aC1jbGktbGVhc2UtZmlsZT0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9kaGNwL2RoY2xpZW50LmxlYXNlcyBcCiAgICAgICAgICAgICAgICAgLS13aXRoLWNsaTYtbGVhc2UtZmlsZT0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9kaGNwL2RoY2xpZW50Ni5sZWFzZXMgXAogICAgICAgICAgICAgICAgIC0td2l0aC1saWJiaW5kPSR7U1RBR0lOR19MSUJESVJ9LyBcCi0JCS0tZW5hYmxlLXBhcmFub2lhIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1wYXJhbm9pYSBcCisgICAgICAgICAgICAgICAgLS13aXRoLXJhbmRvbWRldj0vZGV2L3JhbmRvbSBcCiAgICAgICAgICAgICAgICAiCiAKIGRvX2luc3RhbGxfYXBwZW5kICgpIHsKQEAgLTc4LDYgKzc5LDcgQEAKIAlzZWQgLWkgLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vZGhjcGQqLnNlcnZpY2UKIAlzZWQgLWkgLWUgJ3MsQGJhc2VfYmluZGlyQCwke2Jhc2VfYmluZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9kaGNwZCouc2VydmljZQogCXNlZCAtaSAtZSAncyxAbG9jYWxzdGF0ZWRpckAsJHtsb2NhbHN0YXRlZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9kaGNwZCouc2VydmljZQorICAgICAgIHNlZCAtaSAtZSAncyxAU1lTQ09ORkRJUkAsJHtzeXNjb25mZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9kaGNyZWxheS5zZXJ2aWNlCiB9CiAKIFBBQ0tBR0VTICs9ICJkaGNwLXNlcnZlciBkaGNwLXNlcnZlci1jb25maWcgZGhjcC1jbGllbnQgZGhjcC1yZWxheSBkaGNwLW9tc2hlbGwiCkBAIC05NCw3ICs5Niw2IEBACiBGSUxFU18ke1BOfS1yZWxheSA9ICIke3NiaW5kaXJ9L2RoY3JlbGF5ICR7c3lzY29uZmRpcn0vaW5pdC5kL2RoY3AtcmVsYXkgJHtzeXNjb25mZGlyfS9kZWZhdWx0L2RoY3AtcmVsYXkiCiAKIEZJTEVTXyR7UE59LWNsaWVudCA9ICIke2Jhc2Vfc2JpbmRpcn0vZGhjbGllbnQgJHtiYXNlX3NiaW5kaXJ9L2RoY2xpZW50LXNjcmlwdCAke3N5c2NvbmZkaXJ9L2RoY3AvZGhjbGllbnQuY29uZiIKLVJERVBFTkRTXyR7UE59LWNsaWVudCA9ICJiYXNoIgogCiBGSUxFU18ke1BOfS1vbXNoZWxsID0gIiR7YmluZGlyfS9vbXNoZWxsIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwMS1zaXRlLmgtZW5hYmxlLWdlbnRsZS1zaHV0ZG93bi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDAxLXNpdGUuaC1lbmFibGUtZ2VudGxlLXNodXRkb3duLnBhdGNoCmluZGV4IDQzNDQyMTIuLjQ3NDQzYTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDAxLXNpdGUuaC1lbmFibGUtZ2VudGxlLXNodXRkb3duLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDAxLXNpdGUuaC1lbmFibGUtZ2VudGxlLXNodXRkb3duLnBhdGNoCkBAIC04LDEwICs4LDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9pbmNsdWRlcy9zaXRlLmggYi9pbmNsdWRlcy9zaXRlLmgKLWluZGV4IDczZmE0ZTguLjljMzNkZTMgMTAwNjQ0CitpbmRleCAxZGQxMjUxLi5hYmI2NmU0IDEwMDY0NAogLS0tIGEvaW5jbHVkZXMvc2l0ZS5oCiArKysgYi9pbmNsdWRlcy9zaXRlLmgKLUBAIC0yODAsNyArMjgwLDcgQEAKK0BAIC0yODksNyArMjg5LDcgQEAKICAgICBzaXR1YXRpb25zLiAgV2UgcGxhbiB0byByZXZpc2l0IHRoaXMgZmVhdHVyZSBhbmQgbWF5CiAgICAgbWFrZSBub24tYmFja3dhcmRzIGNvbXBhdGlibGUgY2hhbmdlcyBpbmNsdWRpbmcgdGhlCiAgICAgcmVtb3ZhbCBvZiB0aGlzIGRlZmluZS4gIFVzZSBhdCB5b3VyIG93biByaXNrLiAgKi8KQEAgLTIxLDUgKzIxLDUgQEAKICAvKiBJbmNsdWRlIG9sZCBlcnJvciBjb2Rlcy4gIFRoaXMgaXMgcHJvdmlkZWQgaW4gY2FzZSB5b3UKICAgICBhcmUgYnVpbGRpbmcgYW4gZXh0ZXJuYWwgcHJvZ3JhbSBzaW1pbGFyIHRvIG9tc2hlbGwgZm9yCiAtLSAKLTEuOS4xCisyLjguMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvQ1ZFLTIwMTUtODYwNS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9DVkUtMjAxNS04NjA1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MjNkNWQ1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9DVkUtMjAxNS04NjA1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotU29sdmVzIENWRS0yMDE1LTg2MDUgdGhhdCBjYXVzZWQgRG9TIHdoZW4gYW4gaW52YWxpZCBsZW5naHQgZmllbGQgaW4gSVB2NCBVRFAKLXdhcyByZWNpdmVkIGJ5IHRoZSBzZXJ2ZXIuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTUtODYwNQotCi1TaWduZWQtb2ZmLWJ5OiBNYXJpYW5vIExvcGV6IDxtYXJpYW5vLmxvcGV6QGxpbnV4LmludGVsLmNvbT4KLQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLWRpZmYgLS1naXQgYS9jb21tb24vcGFja2V0LmMgYi9jb21tb24vcGFja2V0LmMKLWluZGV4IGI1MzA0MzIuLmU2MDBlMzcgMTAwNjQ0Ci0tLS0gYS9jb21tb24vcGFja2V0LmMKLSsrKyBiL2NvbW1vbi9wYWNrZXQuYwotQEAgLTIyMCw3ICsyMjAsMjggQEAgc3NpemVfdCBkZWNvZGVfaHdfaGVhZGVyIChpbnRlcmZhY2UsIGJ1ZiwgYnVmaXgsIGZyb20pCi0gCX0KLSB9Ci0gCi0tLyogVURQIGhlYWRlciBhbmQgSVAgaGVhZGVyIGRlY29kZWQgdG9nZXRoZXIgZm9yIGNvbnZlbmllbmNlLiAqLwotKy8qIQotKyAqCi0rICogXGJyaWVmIFVEUCBoZWFkZXIgYW5kIElQIGhlYWRlciBkZWNvZGVkIHRvZ2V0aGVyIGZvciBjb252ZW5pZW5jZS4KLSsgKgotKyAqIEF0dGVtcHQgdG8gZGVjb2RlIHRoZSBVRFAgYW5kIElQIGhlYWRlcnMgYW5kLCBpZiBuZWNlc3NhcnksIGNoZWNrc3VtCi0rICogdGhlIHBhY2tldC4KLSsgKgotKyAqIFxwYXJhbSBpbnRlZmFjZSAtIHRoZSBpbnRlcmZhY2Ugb24gd2hpY2ggdGhlIHBhY2tldCB3YXMgcmVjZXZpZWQKLSsgKiBccGFyYW0gYnVmIC0gYSBwb2ludGVyIHRvIHRoZSBidWZmZXIgZm9yIHRoZSByZWNlaXZlZCBwYWNrZXQKLSsgKiBccGFyYW0gYnVmaXggLSB3aGVyZSB0byBzdGFydCBwcm9jZXNzaW5nIHRoZSBidWZmZXIsIHByZXZpb3VzCi0rICogICAgICAgICAgICAgICAgcm91dGluZXMgbWF5IGhhdmUgcHJvY2Vzc2VkIHBhcnRzIG9mIHRoZSBidWZmZXIgYWxyZWFkeQotKyAqIFxwYXJhbSBmcm9tIC0gc3BhY2UgdG8gcmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBwYWNrZXQgc2VuZGVyCi0rICogXHBhcmFtIGJ1ZmxlbiAtIHJlbWFpbmluZyBsZW5ndGggb2YgdGhlIGJ1ZmZlciwgdGhpcyB3aWxsIGhhdmUgYmVlbgotKyAqICAgICAgICAgICAgICAgICBkZWNyZW1lbnRlZCBieSBidWZpeCBieSB0aGUgY2FsbGVyCi0rICogXHBhcmFtIHJidWZsZW4gLSBzcGFjZSB0byByZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgcGF5bG9hZCBmcm9tIHRoZSB1ZHAKLSsgKiAgICAgICAgICAgICAgICAgIGhlYWRlcgotKyAqIFxwYXJhbSBjc3VtX3JlYWR5IC0gaW5kaWNhdGlvbiBpZiB0aGUgY2hlY2tzdW0gaXMgdmFsaWQgZm9yIHVzZQotKyAqICAgICAgICAgICAgICAgICAgICAgbm9uLXplcm8gaW5kaWNhdGVzIHRoZSBjaGVja3N1bSBzaG91bGQgYmUgdmFsaWRhdGVkCi0rICoKLSsgKiBccmV0dXJuIC0gdGhlIGluZGV4IHRvIHRoZSBmaXJzdCBieXRlIG9mIHRoZSB1ZHAgcGF5bG9hZCAodGhhdCBpcyB0aGUKLSsgKiAgICAgICAgICAgc3RhcnQgb2YgdGhlIERIQ1AgcGFja2V0Ci0rICovCi0gCi0gc3NpemVfdAotIGRlY29kZV91ZHBfaXBfaGVhZGVyKHN0cnVjdCBpbnRlcmZhY2VfaW5mbyAqaW50ZXJmYWNlLAotQEAgLTIzMSw3ICsyNTIsNyBAQCBkZWNvZGVfdWRwX2lwX2hlYWRlcihzdHJ1Y3QgaW50ZXJmYWNlX2luZm8gKmludGVyZmFjZSwKLSAgIHVuc2lnbmVkIGNoYXIgKmRhdGE7Ci0gICBzdHJ1Y3QgaXAgaXA7Ci0gICBzdHJ1Y3QgdWRwaGRyIHVkcDsKLS0gIHVuc2lnbmVkIGNoYXIgKnVwcCwgKmVuZGJ1ZjsKLSsgIHVuc2lnbmVkIGNoYXIgKnVwcDsKLSAgIHVfaW50MzJfdCBpcF9sZW4sIHVsZW4sIHBrdF9sZW47Ci0gICBzdGF0aWMgdW5zaWduZWQgaW50IGlwX3BhY2tldHNfc2VlbiA9IDA7Ci0gICBzdGF0aWMgdW5zaWduZWQgaW50IGlwX3BhY2tldHNfYmFkX2NoZWNrc3VtID0gMDsKLUBAIC0yNDEsMTEgKzI2Miw4IEBAIGRlY29kZV91ZHBfaXBfaGVhZGVyKHN0cnVjdCBpbnRlcmZhY2VfaW5mbyAqaW50ZXJmYWNlLAotICAgc3RhdGljIHVuc2lnbmVkIGludCB1ZHBfcGFja2V0c19sZW5ndGhfb3ZlcmZsb3cgPSAwOwotICAgdW5zaWduZWQgbGVuOwotIAotLSAgLyogRGVzaWduYXRlIHRoZSBlbmQgb2YgdGhlIGlucHV0IGJ1ZmZlciBmb3IgYm91bmRzIGNoZWNrcy4gKi8KLS0gIGVuZGJ1ZiA9IGJ1ZiArIGJ1Zml4ICsgYnVmbGVuOwotLQotICAgLyogQXNzdXJlIHRoZXJlIGlzIGF0IGxlYXN0IGFuIElQIGhlYWRlciB0aGVyZS4gKi8KLS0gIGlmICgoYnVmICsgYnVmaXggKyBzaXplb2YoaXApKSA+IGVuZGJ1ZikKLSsgIGlmIChzaXplb2YoaXApID4gYnVmbGVuKQotIAkgIHJldHVybiAtMTsKLSAKLSAgIC8qIENvcHkgdGhlIElQIGhlYWRlciBpbnRvIGEgc3RhY2sgYWxpZ25lZCBzdHJ1Y3R1cmUgZm9yIGluc3BlY3Rpb24uCi1AQCAtMjU3LDEzICsyNzUsMTcgQEAgZGVjb2RlX3VkcF9pcF9oZWFkZXIoc3RydWN0IGludGVyZmFjZV9pbmZvICppbnRlcmZhY2UsCi0gICBpcF9sZW4gPSAoKnVwcCAmIDB4MGYpIDw8IDI7Ci0gICB1cHAgKz0gaXBfbGVuOwotIAotLSAgLyogQ2hlY2sgdGhlIElQIHBhY2tldCBsZW5ndGguICovCi0rICAvKiBDaGVjayBwYWNrZXQgbGVuZ3RocyBhcmUgd2l0aGluIHRoZSBidWZmZXI6Ci0rICAgKiBmaXJzdCB0aGUgaXAgaGVhZGVyIChpcF9sZW4pCi0rICAgKiB0aGVuIHRoZSBwYWNrZXQgbGVuZ3RoIGZyb20gdGhlIGlwIGhlYWRlciAocGt0X2xlbikKLSsgICAqIHRoZW4gdGhlIHVkcCBoZWFkZXIgKGlwX2xlbiArIHNpemVvZih1ZHApCi0rICAgKiBXZSBhcmUgbGliZXJhbCBpbiB3aGF0IHdlIGFjY2VwdCwgdGhlIHVkcCBwYXlsb2FkIHNob3VsZCBmaXQgd2l0aGluCi0rICAgKiBwa3RfbGVuLCBidXQgd2Ugb25seSBjaGVjayBhZ2FpbnN0IHRoZSBmdWxsIGJ1ZmZlciBzaXplLgotKyAgICovCi0gICBwa3RfbGVuID0gbnRvaHMoaXAuaXBfbGVuKTsKLS0gIGlmIChwa3RfbGVuID4gYnVmbGVuKQotLQlyZXR1cm4gLTE7Ci0tCi0tICAvKiBBc3N1cmUgYWZ0ZXIgaXBfbGVuIGJ5dGVzIHRoYXQgdGhlcmUgaXMgZW5vdWdoIHJvb20gZm9yIGEgVURQIGhlYWRlci4gKi8KLS0gIGlmICgodXBwICsgc2l6ZW9mKHVkcCkpID4gZW5kYnVmKQotKyAgaWYgKChpcF9sZW4gPiBidWZsZW4pIHx8Ci0rICAgICAgKHBrdF9sZW4gPiBidWZsZW4pIHx8Ci0rICAgICAgKChpcF9sZW4gKyBzaXplb2YodWRwKSkgPiBidWZsZW4pKQotIAkgIHJldHVybiAtMTsKLSAKLSAgIC8qIENvcHkgdGhlIFVEUCBoZWFkZXIgaW50byBhIHN0YWNrIGFsaWduZWQgc3RydWN0dXJlIGZvciBpbnNwZWN0aW9uLiAqLwotQEAgLTI4NCw3ICszMDYsOCBAQCBkZWNvZGVfdWRwX2lwX2hlYWRlcihzdHJ1Y3QgaW50ZXJmYWNlX2luZm8gKmludGVyZmFjZSwKLSAJcmV0dXJuIC0xOwotIAotICAgdWRwX3BhY2tldHNfbGVuZ3RoX2NoZWNrZWQrKzsKLS0gIGlmICgodXBwICsgdWxlbikgPiBlbmRidWYpIHsKLSsgIC8qIHZlcmlmeSB0aGF0IHRoZSBwYXlsb2FkIGxlbmd0aCBmcm9tIHRoZSB1ZHAgcGFja2V0IGZpdHMgaW4gdGhlIGJ1ZmZlciAqLwotKyAgaWYgKChpcF9sZW4gKyB1bGVuKSA+IGJ1ZmxlbikgewotIAl1ZHBfcGFja2V0c19sZW5ndGhfb3ZlcmZsb3crKzsKLSAJaWYgKCgodWRwX3BhY2tldHNfbGVuZ3RoX2NoZWNrZWQgPiA0KSAmJgotIAkgICAgICh1ZHBfcGFja2V0c19sZW5ndGhfb3ZlcmZsb3cgIT0gMCkpICYmCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvQ1ZFLTIwMTYtMjc3NC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9DVkUtMjAxNi0yNzc0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODM2ZGJjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9DVkUtMjAxNi0yNzc0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotRnJvbSBiOWY1NmQ1NzhlYmZkNjQ5YjVkODI5OTYwNTQwODU5YWM2Y2E5MzFjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2F0YWxpbiBFbmFjaGUgPGNhdGFsaW4uZW5hY2hlQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUdWUsIDEyIEFwciAyMDE2IDE4OjIzOjMxICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFkZCBwYXRjaCB0byBsaW1pdCB0aGUgdmFsdWUgb2YgYW4gZmQgd2UgYWNjZXB0IGZvciBhCi0gY29ubmVjdGlvbi4KLQotQnkgbGltaXRpbmcgdGhlIGhpZ2hlc3QgdmFsdWUgd2UgYWNjZXB0IGZvciBhbiBmZCB3ZSBsaW1pdCB0aGUgbnVtYmVyCi1vZiBjb25uZWN0aW9ucy4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNi0yNzc0Ci0KLUF1dGhvcjogU2hhd24gUm91dGhpZXIgPHNhckBpc2Mub3JnPgotU2lnbmVkLW9mZi1ieTogQ2F0YWxpbiBFbmFjaGUgPGNhdGFsaW4uZW5hY2hlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBpbmNsdWRlcy9zaXRlLmggICB8IDYgKysrKysrCi0gb21hcGlwL2xpc3RlbmVyLmMgfCA5ICsrKysrKystLQotIDMgZmlsZXMgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2luY2x1ZGVzL3NpdGUuaCBiL2luY2x1ZGVzL3NpdGUuaAotaW5kZXggOWMzM2RlMy4uZGYwMjBjOCAxMDA2NDQKLS0tLSBhL2luY2x1ZGVzL3NpdGUuaAotKysrIGIvaW5jbHVkZXMvc2l0ZS5oCi1AQCAtMjkwLDYgKzI5MCwxMiBAQAotICAgIHRoaXMgb3B0aW9uIHdpbGwgYmUgcmVtb3ZlZCBhdCBzb21lIHRpbWUuICovCi0gLyogI2RlZmluZSBJTkNMVURFX09MRF9ESENQX0lTQ19FUlJPUl9DT0RFUyAqLwotIAotKy8qIExpbWl0IHRoZSB2YWx1ZSBvZiBhIGZpbGUgZGVzY3JpcHRvciB0aGUgc2VydmUgd2lsbCB1c2UKLSsgICB3aGVuIGFjY2VwdGluZyBhIGNvbm5lY3RpbmcgcmVxdWVzdC4gIFRoaXMgY2FuIGJlIHVzZWQgdG8KLSsgICBsaW1pdCB0aGUgbnVtYmVyIG9mIFRDUCBjb25uZWN0aW9ucyB0aGF0IHRoZSBzZXJ2ZXIgd2lsbAotKyAgIGFsbG93IGF0IG9uZSB0aW1lLiAgQSB2YWx1ZSBvZiAwIG1lYW5zIHRoZXJlIGlzIG5vIGxpbWl0LiovCi0rI2RlZmluZSBNQVhfRkRfVkFMVUUgMjAwCi0rCi0gLyogSW5jbHVkZSBkZWZpbml0aW9ucyBmb3IgdmFyaW91cyBvcHRpb25zLiAgSW4gZ2VuZXJhbCB0aGVzZQotICAgIHNob3VsZCBiZSBsZWZ0IGFzIGlzLCBidXQgaWYgeW91IGhhdmUgYWxyZWFkeSBkZWZpbmVkIG9uZQotICAgIG9mIHRoZXNlIGFuZCBwcmVmZXIgeW91ciBkZWZpbml0aW9uIHlvdSBjYW4gY29tbWVudCB0aGUgCi1kaWZmIC0tZ2l0IGEvb21hcGlwL2xpc3RlbmVyLmMgYi9vbWFwaXAvbGlzdGVuZXIuYwotaW5kZXggOGJkY2RiZC4uNjE0NzNjZiAxMDA2NDQKLS0tLSBhL29tYXBpcC9saXN0ZW5lci5jCi0rKysgYi9vbWFwaXAvbGlzdGVuZXIuYwotQEAgLTMsNyArMyw3IEBACi0gICAgU3Vicm91dGluZXMgdGhhdCBzdXBwb3J0IHRoZSBnZW5lcmljIGxpc3RlbmVyIG9iamVjdC4gKi8KLSAKLSAvKgotLSAqIENvcHlyaWdodCAoYykgMjAxMiwyMDE0IGJ5IEludGVybmV0IFN5c3RlbXMgQ29uc29ydGl1bSwgSW5jLiAoIklTQyIpCi0rICogQ29weXJpZ2h0IChjKSAyMDEyLDIwMTQsMjAxNiBieSBJbnRlcm5ldCBTeXN0ZW1zIENvbnNvcnRpdW0sIEluYy4gKCJJU0MiKQotICAqIENvcHlyaWdodCAoYykgMjAwNCwyMDA3LDIwMDkgYnkgSW50ZXJuZXQgU3lzdGVtcyBDb25zb3J0aXVtLCBJbmMuICgiSVNDIikKLSAgKiBDb3B5cmlnaHQgKGMpIDE5OTktMjAwMyBieSBJbnRlcm5ldCBTb2Z0d2FyZSBDb25zb3J0aXVtCi0gICoKLUBAIC0yMzMsNyArMjMzLDEyIEBAIGlzY19yZXN1bHRfdCBvbWFwaV9hY2NlcHQgKG9tYXBpX29iamVjdF90ICpoKQotIAkJCXJldHVybiBJU0NfUl9OT1JFU09VUkNFUzsKLSAJCXJldHVybiBJU0NfUl9VTkVYUEVDVEVEOwotIAl9Ci0tCQotKwotKwlpZiAoKE1BWF9GRF9WQUxVRSAhPSAwKSAmJiAoc29ja2V0ID4gTUFYX0ZEX1ZBTFVFKSkgewotKwkJY2xvc2Uoc29ja2V0KTsKLSsJCXJldHVybiAoSVNDX1JfTk9SRVNPVVJDRVMpOwotKwl9Ci0rCi0gI2lmIGRlZmluZWQgKFRSQUNJTkcpCi0gCS8qIElmIHdlJ3JlIHJlY29yZGluZyBhIHRyYWNlLCByZW1lbWJlciB0aGUgY29ubmVjdGlvbi4gKi8KLSAJaWYgKHRyYWNlX3JlY29yZCAoKSkgewotLS0gCi0yLjcuNApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL2RoY2xpZW50LXNjcmlwdC1kcm9wLXJlc29sdi5jb25mLmRoY2xpZW50LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL2RoY2xpZW50LXNjcmlwdC1kcm9wLXJlc29sdi5jb25mLmRoY2xpZW50LnBhdGNoCmluZGV4IDQ3ZWE1NTUuLjk2MDk1YTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9kaGNsaWVudC1zY3JpcHQtZHJvcC1yZXNvbHYuY29uZi5kaGNsaWVudC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvZGhjbGllbnQtc2NyaXB0LWRyb3AtcmVzb2x2LmNvbmYuZGhjbGllbnQucGF0Y2gKQEAgLTY2LDUgKzY2LDUgQEAKICB9CiAgCiAtLSAKLTEuOC4xLjIKKzIuOC4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9maXgtZXh0ZXJuYWwtYmluZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9maXgtZXh0ZXJuYWwtYmluZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTU2YzVkOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvZml4LWV4dGVybmFsLWJpbmQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTUgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLTExLzMwLzIwMTAKLS0td2l0aC1saWJiaW5kPVBBVEggaXMgYXZhaWxhYmxlIGJ1dCBub3QgdXNlZCBieSBNYWtlZmlsZSwKLXRoaXMgcGF0Y2ggaXMgdG8gYWxsb3cgYnVpbGRpbmcgd2l0aCBleHRlcm5hbCBiaW5kCi0KLVNpZ25lZC1vZmYtYnk6IFFpbmcgSGUgPHFpbmcuaGVAaW50ZWwuY29tPgotCi1SZWJhc2UgdGhlIHBhdGNoIHRvIDQuMy4zCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC0yNSw3ICsyNSw3IEBAIEVYVFJBX0RJU1QgPSBSRUxOT1RFUyBMSUNFTlNFIFwKLSAJICAgICBiaW5kL01ha2VmaWxlLmluIGJpbmQvYmluZC50YXIuZ3ogYmluZC92ZXJzaW9uLnRtcCBcCi0gCSAgICAgY29tbW9uL3Rlc3RzL0F0ZmZpbGUgc2VydmVyL3Rlc3RzL0F0ZmZpbGUKLSAKLS1TVUJESVJTID0gYmluZCBpbmNsdWRlcyB0ZXN0cyBjb21tb24gb21hcGlwIGNsaWVudCBkaGNwY3RsIHJlbGF5IHNlcnZlcgotK1NVQkRJUlMgPSBpbmNsdWRlcyB0ZXN0cyBjb21tb24gb21hcGlwIGNsaWVudCBkaGNwY3RsIHJlbGF5IHNlcnZlcgotIAotIG5vYmFzZV9pbmNsdWRlX0hFQURFUlMgPSBkaGNwY3RsL2RoY3BjdGwuaAotIAotZGlmZiAtLWdpdCBhL2NsaWVudC9NYWtlZmlsZS5hbSBiL2NsaWVudC9NYWtlZmlsZS5hbQotLS0tIGEvY2xpZW50L01ha2VmaWxlLmFtCi0rKysgYi9jbGllbnQvTWFrZWZpbGUuYW0KLUBAIC0xMCw4ICsxMCw4IEBAIGRoY2xpZW50X1NPVVJDRVMgPSBjbHBhcnNlLmMgZGhjbGllbnQuYyBkaGM2LmMgXAotIAkJICAgc2NyaXB0cy9ic2RvcyBzY3JpcHRzL2ZyZWVic2Qgc2NyaXB0cy9saW51eCBzY3JpcHRzL21hY29zIFwKLSAJCSAgIHNjcmlwdHMvbmV0YnNkIHNjcmlwdHMvbmV4dHN0ZXAgc2NyaXB0cy9vcGVuYnNkIFwKLSAJCSAgIHNjcmlwdHMvc29sYXJpcyBzY3JpcHRzL29wZW53cnQKLS1kaGNsaWVudF9MREFERCA9IC4uL2NvbW1vbi9saWJkaGNwLmEgLi4vb21hcGlwL2xpYm9tYXBpLmEgLi4vYmluZC9saWIvbGliaXJzLmEgXAotLQkJIC4uL2JpbmQvbGliL2xpYmRucy5hIC4uL2JpbmQvbGliL2xpYmlzY2NmZy5hIC4uL2JpbmQvbGliL2xpYmlzYy5hCi0rZGhjbGllbnRfTERBREQgPSAuLi9jb21tb24vbGliZGhjcC5hIC4uL29tYXBpcC9saWJvbWFwaS5hICQobGliYmluZCkvbGliaXJzLmEgXAotKwkJICQobGliYmluZCkvbGliZG5zLmEgJChsaWJiaW5kKS9saWJpc2NjZmcuYSAkKGxpYmJpbmQpL2xpYmlzYy5hCi0gbWFuX01BTlMgPSBkaGNsaWVudC44IGRoY2xpZW50LXNjcmlwdC44IGRoY2xpZW50LmNvbmYuNSBkaGNsaWVudC5sZWFzZXMuNQotIEVYVFJBX0RJU1QgPSAkKG1hbl9NQU5TKQotIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC02MjMsNiArNjIzLDcgQEAgbm8pCi0gCWZpCQotIAk7OwotIGVzYWMKLStBQ19TVUJTVChbbGliYmluZF0pCi0gCi0gIyBPcGVuTERBUCBzdXBwb3J0LgotIEFDX0FSR19XSVRIKGxkYXAsCi1kaWZmIC0tZ2l0IGEvZGhjcGN0bC9NYWtlZmlsZS5hbSBiL2RoY3BjdGwvTWFrZWZpbGUuYW0KLS0tLSBhL2RoY3BjdGwvTWFrZWZpbGUuYW0KLSsrKyBiL2RoY3BjdGwvTWFrZWZpbGUuYW0KLUBAIC02LDEyICs2LDEyIEBAIEVYVFJBX0RJU1QgPSAkKG1hbl9NQU5TKQotIAotIG9tc2hlbGxfU09VUkNFUyA9IG9tc2hlbGwuYwotIG9tc2hlbGxfTERBREQgPSBsaWJkaGNwY3RsLmEgLi4vY29tbW9uL2xpYmRoY3AuYSAuLi9vbWFwaXAvbGlib21hcGkuYSBcCi0tCSAgICAgICAgLi4vYmluZC9saWIvbGliaXJzLmEgLi4vYmluZC9saWIvbGliZG5zLmEgXAotLQkgICAgICAgIC4uL2JpbmQvbGliL2xpYmlzY2NmZy5hIC4uL2JpbmQvbGliL2xpYmlzYy5hCi0rCSAgICAgICAgJChsaWJiaW5kKS9saWJpcnMuYSAkKGxpYmJpbmQpL2xpYmRucy5hIFwKLSsJICAgICAgICAkKGxpYmJpbmQpL2xpYmlzY2NmZy5hICQobGliYmluZCkvbGliaXNjLmEKLSAKLSBsaWJkaGNwY3RsX2FfU09VUkNFUyA9IGRoY3BjdGwuYyBjYWxsYmFjay5jIHJlbW90ZS5jCi0gCi0gY2x0ZXN0X1NPVVJDRVMgPSBjbHRlc3QuYwotIGNsdGVzdF9MREFERCA9IGxpYmRoY3BjdGwuYSAuLi9jb21tb24vbGliZGhjcC5hIC4uL29tYXBpcC9saWJvbWFwaS5hIFwKLS0JICAgICAgIC4uL2JpbmQvbGliL2xpYmlycy5hIC4uL2JpbmQvbGliL2xpYmRucy5hIFwKLS0gICAgICAgICAgICAgICAuLi9iaW5kL2xpYi9saWJpc2NjZmcuYSAuLi9iaW5kL2xpYi9saWJpc2MuYQotKwkgICAgICAgJChsaWJiaW5kKS9saWJpcnMuYSAkKGxpYmJpbmQpL2xpYmRucy5hIFwKLSsgICAgICAgICAgICAgICAkKGxpYmJpbmQpL2xpYmlzY2NmZy5hICQobGliYmluZCkvbGliaXNjLmEKLWRpZmYgLS1naXQgYS9vbWFwaXAvTWFrZWZpbGUuYW0gYi9vbWFwaXAvTWFrZWZpbGUuYW0KLS0tLSBhL29tYXBpcC9NYWtlZmlsZS5hbQotKysrIGIvb21hcGlwL01ha2VmaWxlLmFtCi1AQCAtMTAsNiArMTAsNiBAQCBtYW5fTUFOUyA9IG9tYXBpLjMKLSBFWFRSQV9ESVNUID0gJChtYW5fTUFOUykKLSAKLSBzdnRlc3RfU09VUkNFUyA9IHRlc3QuYwotLXN2dGVzdF9MREFERCA9IGxpYm9tYXBpLmEgLi4vYmluZC9saWIvbGliaXJzLmEgLi4vYmluZC9saWIvbGliZG5zLmEgXAotLQkJLi4vYmluZC9saWIvbGliaXNjY2ZnLmEgLi4vYmluZC9saWIvbGliaXNjLmEKLStzdnRlc3RfTERBREQgPSBsaWJvbWFwaS5hICQobGliYmluZCkvbGliaXJzLmEgJChsaWJiaW5kKS9saWJkbnMuYSBcCi0rCQkkKGxpYmJpbmQpL2xpYmlzY2NmZy5hICQobGliYmluZCkvbGliaXNjLmEKLSAKLWRpZmYgLS1naXQgYS9yZWxheS9NYWtlZmlsZS5hbSBiL3JlbGF5L01ha2VmaWxlLmFtCi0tLS0gYS9yZWxheS9NYWtlZmlsZS5hbQotKysrIGIvcmVsYXkvTWFrZWZpbGUuYW0KLUBAIC0zLDggKzMsOCBAQCBBTV9DUFBGTEFHUyA9IC1ETE9DQUxTVEFURURJUj0nIkBsb2NhbHN0YXRlZGlyQCInCi0gc2Jpbl9QUk9HUkFNUyA9IGRoY3JlbGF5Ci0gZGhjcmVsYXlfU09VUkNFUyA9IGRoY3JlbGF5LmMKLSBkaGNyZWxheV9MREFERCA9IC4uL2NvbW1vbi9saWJkaGNwLmEgLi4vb21hcGlwL2xpYm9tYXBpLmEgXAotLQkJIC4uL2JpbmQvbGliL2xpYmlycy5hIC4uL2JpbmQvbGliL2xpYmRucy5hIFwKLS0JCSAuLi9iaW5kL2xpYi9saWJpc2NjZmcuYSAuLi9iaW5kL2xpYi9saWJpc2MuYQotKwkJICQobGliYmluZCkvbGliaXJzLmEgJChsaWJiaW5kKS9saWJkbnMuYSBcCi0rCQkgJChsaWJiaW5kKS9saWJpc2NjZmcuYSAkKGxpYmJpbmQpL2xpYmlzYy5hCi0gbWFuX01BTlMgPSBkaGNyZWxheS44Ci0gRVhUUkFfRElTVCA9ICQobWFuX01BTlMpCi0gCi1kaWZmIC0tZ2l0IGEvc2VydmVyL01ha2VmaWxlLmFtIGIvc2VydmVyL01ha2VmaWxlLmFtCi0tLS0gYS9zZXJ2ZXIvTWFrZWZpbGUuYW0KLSsrKyBiL3NlcnZlci9NYWtlZmlsZS5hbQotQEAgLTE0LDEwICsxNCwxMiBAQCBkaGNwZF9TT1VSQ0VTID0gZGhjcGQuYyBkaGNwLmMgYm9vdHAuYyBjb25mcGFycy5jIGRiLmMgY2xhc3MuYyBmYWlsb3Zlci5jIFwKLSAKLSBkaGNwZF9DRkxBR1MgPSAkKExEQVBfQ0ZMQUdTKQotIGRoY3BkX0xEQUREID0gLi4vY29tbW9uL2xpYmRoY3AuYSAuLi9vbWFwaXAvbGlib21hcGkuYSBcCi0tCSAgICAgIC4uL2RoY3BjdGwvbGliZGhjcGN0bC5hIC4uL2JpbmQvbGliL2xpYmlycy5hIFwKLS0JICAgICAgLi4vYmluZC9saWIvbGliZG5zLmEgLi4vYmluZC9saWIvbGliaXNjY2ZnLmEgLi4vYmluZC9saWIvbGliaXNjLmEgXAotKwkgICAgICAuLi9kaGNwY3RsL2xpYmRoY3BjdGwuYSAkKGxpYmJpbmQpL2xpYmlycy5hIFwKLSsJICAgICAgJChsaWJiaW5kKS9saWJkbnMuYSAkKGxpYmJpbmQpL2xpYmlzY2NmZy5hICQobGliYmluZCkvbGliaXNjLmEgXAotIAkgICAgICAkKExEQVBfTElCUykJCQotIAotKyBkaGNwZF9DRkxBR1MgPSAkKExEQVBfQ0ZMQUdTKQotKwotIG1hbl9NQU5TID0gZGhjcGQuOCBkaGNwZC5jb25mLjUgZGhjcGQubGVhc2VzLjUKLSBFWFRSQV9ESVNUID0gJChtYW5fTUFOUykKLSAKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL2ZpeHNlcGJ1aWxkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL2ZpeHNlcGJ1aWxkLnBhdGNoCmluZGV4IGIzZjhmZGIuLjJmNDQxNDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9maXhzZXBidWlsZC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvZml4c2VwYnVpbGQucGF0Y2gKQEAgLTQsODAgKzQsODggQEAKIAogUlAgMjAxMy8wMy8yMQogCi1SZWJhc2UgdG8gNC4zLjEKK1JlYmFzZSB0byA0LjMuNAorCiBTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiAtLS0KKyBjbGllbnQvTWFrZWZpbGUuYW0gIHwgNCArKy0tCisgY29tbW9uL01ha2VmaWxlLmFtICB8IDMgKystCisgZGhjcGN0bC9NYWtlZmlsZS5hbSB8IDIgKysKKyBvbWFwaXAvTWFrZWZpbGUuYW0gIHwgMSArCisgcmVsYXkvTWFrZWZpbGUuYW0gICB8IDIgKy0KKyBzZXJ2ZXIvTWFrZWZpbGUuYW0gIHwgMiArLQorIDYgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCiBkaWZmIC0tZ2l0IGEvY2xpZW50L01ha2VmaWxlLmFtIGIvY2xpZW50L01ha2VmaWxlLmFtCi1pbmRleCA4NDExOTYwLi4xNzQwZjcyIDEwMDY0NAoraW5kZXggMmNiODNkOC4uNDczMGJiMyAxMDA2NDQKIC0tLSBhL2NsaWVudC9NYWtlZmlsZS5hbQogKysrIGIvY2xpZW50L01ha2VmaWxlLmFtCi1AQCAtNCw2ICs0LDggQEAKLSAjIHByb2R1Y3Rpb24gY29kZS4gU2FkbHksIHdlIGFyZSBub3QgdGhlcmUgeWV0LgotIFNVQkRJUlMgPSAuIHRlc3RzCitAQCAtNywxMSArNywxMSBAQCBTVUJESVJTID0gLiB0ZXN0cworIEJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCiAgCi0rQU1fQ1BQRkxBR1MgPSAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKLSsKKyBBTV9DUFBGTEFHUyA9IC1EQ0xJRU5UX1BBVEg9JyJQQVRIPSQoc2JpbmRpcik6L3NiaW46L2JpbjovdXNyL3NiaW46L3Vzci9iaW4iJyBcCistCSAgICAgIC1ETE9DQUxTVEFURURJUj0nIiQobG9jYWxzdGF0ZWRpcikiJworKwkgICAgICAtRExPQ0FMU1RBVEVESVI9JyIkKGxvY2Fsc3RhdGVkaXIpIicgLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzCisgCiAgZGlzdF9zeXNjb25mX0RBVEEgPSBkaGNsaWVudC5jb25mLmV4YW1wbGUKICBzYmluX1BST0dSQU1TID0gZGhjbGllbnQKLSBkaGNsaWVudF9TT1VSQ0VTID0gY2xwYXJzZS5jIGRoY2xpZW50LmMgZGhjNi5jIFwKLUBAIC0xNyw4ICsxOSw4IEBAIEVYVFJBX0RJU1QgPSAkKG1hbl9NQU5TKQotIAotIGRoY2xpZW50Lm86IGRoY2xpZW50LmMKLSAJJChDT01QSUxFKSAtRENMSUVOVF9QQVRIPSciUEFUSD0kKHNiaW5kaXIpOi9zYmluOi9iaW46L3Vzci9zYmluOi91c3IvYmluIicgXAotLQkJICAgLURMT0NBTFNUQVRFRElSPSciJChsb2NhbHN0YXRlZGlyKSInIC1jIGRoY2xpZW50LmMKLSsJCSAgIC1ETE9DQUxTVEFURURJUj0nIiQobG9jYWxzdGF0ZWRpcikiJyAtYyAkKHNyY2RpcikvZGhjbGllbnQuYwotIAotIGRoYzYubzogZGhjNi5jCi0gCSQoQ09NUElMRSkgLURDTElFTlRfUEFUSD0nIlBBVEg9JChzYmluZGlyKTovc2JpbjovYmluOi91c3Ivc2JpbjovdXNyL2JpbiInIFwKLS0JCSAgIC1ETE9DQUxTVEFURURJUj0nIiQobG9jYWxzdGF0ZWRpcikiJyAtYyBkaGM2LmMKLSsJCSAgIC1ETE9DQUxTVEFURURJUj0nIiQobG9jYWxzdGF0ZWRpcikiJyAtYyAkKHNyY2RpcikvZGhjNi5jCistZGhjbGllbnRfU09VUkNFUyA9IGNscGFyc2UuYyBkaGNsaWVudC5jIGRoYzYuYyBcCisrZGhjbGllbnRfU09VUkNFUyA9ICQoc3JjZGlyKS9jbHBhcnNlLmMgJChzcmNkaXIpL2RoY2xpZW50LmMgJChzcmNkaXIpL2RoYzYuYyBcCisgCQkgICBzY3JpcHRzL2JzZG9zIHNjcmlwdHMvZnJlZWJzZCBzY3JpcHRzL2xpbnV4IHNjcmlwdHMvbWFjb3MgXAorIAkJICAgc2NyaXB0cy9uZXRic2Qgc2NyaXB0cy9uZXh0c3RlcCBzY3JpcHRzL29wZW5ic2QgXAorIAkJICAgc2NyaXB0cy9zb2xhcmlzIHNjcmlwdHMvb3BlbndydAogZGlmZiAtLWdpdCBhL2NvbW1vbi9NYWtlZmlsZS5hbSBiL2NvbW1vbi9NYWtlZmlsZS5hbQotaW5kZXggZWRkZWYwNS4uNWNlMDQ1ZiAxMDA2NDQKK2luZGV4IDExM2FlZTguLjBmMjRmYmIgMTAwNjQ0CiAtLS0gYS9jb21tb24vTWFrZWZpbGUuYW0KICsrKyBiL2NvbW1vbi9NYWtlZmlsZS5hbQotQEAgLTEsNCArMSw0IEBACi0tQU1fQ1BQRkxBR1MgPSAtSS4uIC1ETE9DQUxTVEFURURJUj0nIkBsb2NhbHN0YXRlZGlyQCInCitAQCAtMSw0ICsxLDUgQEAKKy1BTV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKSAtRExPQ0FMU1RBVEVESVI9JyJAbG9jYWxzdGF0ZWRpckAiJwogK0FNX0NQUEZMQUdTID0gLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzIC1JJCh0b3Bfc3JjZGlyKSAtRExPQ0FMU1RBVEVESVI9JyJAbG9jYWxzdGF0ZWRpckAiJworKwogIEFNX0NGTEFHUyA9ICQoTERBUF9DRkxBR1MpCiAgCiAgbm9pbnN0X0xJQlJBUklFUyA9IGxpYmRoY3AuYQogZGlmZiAtLWdpdCBhL2RoY3BjdGwvTWFrZWZpbGUuYW0gYi9kaGNwY3RsL01ha2VmaWxlLmFtCi1pbmRleCAyOTg3YTUzLi5jZDcyZDc1IDEwMDY0NAoraW5kZXggY2ViMGRlMS4uYmE4ZGQ4YiAxMDA2NDQKIC0tLSBhL2RoY3BjdGwvTWFrZWZpbGUuYW0KICsrKyBiL2RoY3BjdGwvTWFrZWZpbGUuYW0KLUBAIC0xLDMgKzEsNSBAQAorQEAgLTEsNSArMSw3IEBACisgQklORExJQkRJUiA9IEBCSU5ERElSQC9saWIKKyAKICtBTV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcyAtSSQodG9wX3NyY2RpcikKICsKICBiaW5fUFJPR1JBTVMgPSBvbXNoZWxsCiAgbGliX0xJQlJBUklFUyA9IGxpYmRoY3BjdGwuYQogIG5vaW5zdF9QUk9HUkFNUyA9IGNsdGVzdAogZGlmZiAtLWdpdCBhL29tYXBpcC9NYWtlZmlsZS5hbSBiL29tYXBpcC9NYWtlZmlsZS5hbQotaW5kZXggNTA3NDQ3OS4uOWMwZmFiMyAxMDA2NDQKK2luZGV4IDQ0NmE1OTQuLmRkMWFmYTAgMTAwNjQ0CiAtLS0gYS9vbWFwaXAvTWFrZWZpbGUuYW0KICsrKyBiL29tYXBpcC9NYWtlZmlsZS5hbQotQEAgLTEsMyArMSw1IEBACitAQCAtMSw0ICsxLDUgQEAKKyBCSU5ETElCRElSID0gQEJJTkRESVJAL2xpYgogK0FNX0NQUEZMQUdTID0gLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzCi0rCisgCiAgbGliX0xJQlJBUklFUyA9IGxpYm9tYXBpLmEKICBub2luc3RfUFJPR1JBTVMgPSBzdnRlc3QKLSAKIGRpZmYgLS1naXQgYS9yZWxheS9NYWtlZmlsZS5hbSBiL3JlbGF5L01ha2VmaWxlLmFtCi1pbmRleCBlYzcyYTMxLi5mODQyMDcxIDEwMDY0NAoraW5kZXggMzA2MGVjYS4uNmQ2NTJmNiAxMDA2NDQKIC0tLSBhL3JlbGF5L01ha2VmaWxlLmFtCiArKysgYi9yZWxheS9NYWtlZmlsZS5hbQotQEAgLTEsNCArMSw0IEBACitAQCAtMSw2ICsxLDYgQEAKKyBCSU5ETElCRElSID0gQEJJTkRESVJAL2xpYgorIAogLUFNX0NQUEZMQUdTID0gLURMT0NBTFNUQVRFRElSPSciQGxvY2Fsc3RhdGVkaXJAIicKICtBTV9DUFBGTEFHUyA9IC1ETE9DQUxTVEFURURJUj0nIkBsb2NhbHN0YXRlZGlyQCInIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcwogIAogIHNiaW5fUFJPR1JBTVMgPSBkaGNyZWxheQogIGRoY3JlbGF5X1NPVVJDRVMgPSBkaGNyZWxheS5jCiBkaWZmIC0tZ2l0IGEvc2VydmVyL01ha2VmaWxlLmFtIGIvc2VydmVyL01ha2VmaWxlLmFtCi1pbmRleCBhNDQ2ZjBiLi5kMGI4NzNhIDEwMDY0NAoraW5kZXggNTRmZWVkZi4uMzk5MGI5YyAxMDA2NDQKIC0tLSBhL3NlcnZlci9NYWtlZmlsZS5hbQogKysrIGIvc2VydmVyL01ha2VmaWxlLmFtCi1AQCAtNCw3ICs0LDcgQEAKLSAjIHByb2R1Y3Rpb24gY29kZS4gU2FkbHksIHdlIGFyZSBub3QgdGhlcmUgeWV0LgotIFNVQkRJUlMgPSAuIHRlc3RzCitAQCAtNiw3ICs2LDcgQEAgU1VCRElSUyA9IC4gdGVzdHMKKyAKKyBCSU5ETElCRElSID0gQEJJTkRESVJAL2xpYgogIAogLUFNX0NQUEZMQUdTID0gLUkuLiAtRExPQ0FMU1RBVEVESVI9JyJAbG9jYWxzdGF0ZWRpckAiJwogK0FNX0NQUEZMQUdTID0gLUkkKHRvcF9zcmNkaXIpIC1ETE9DQUxTVEFURURJUj0nIkBsb2NhbHN0YXRlZGlyQCInIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcwpAQCAtODUsNSArOTMsNSBAQAogIGRpc3Rfc3lzY29uZl9EQVRBID0gZGhjcGQuY29uZi5leGFtcGxlCiAgc2Jpbl9QUk9HUkFNUyA9IGRoY3BkCiAtLSAKLTEuOS4xCisyLjguMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvbGlieG1sMi1jb25maWd1cmUtYXJndW1lbnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvbGlieG1sMi1jb25maWd1cmUtYXJndW1lbnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQzNTY2MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9saWJ4bWwyLWNvbmZpZ3VyZS1hcmd1bWVudC5wYXRjaApAQCAtMCwwICsxLDM4IEBACitBZGQgY29uZmlndXJlIGFyZ3VtZW50IHRvIG1ha2UgdGhlIGxpYnhtbDIgZGVwZW5kZW5jeSBleHBsaWNpdCBhbmQKK2RldGVybWluaXNpdGljLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KKworUmViYXNlIHRvIDQuMy40CitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCAxMSArKysrKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDcyNmM4OGUuLjE2ODRkZjEgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTcxOCw3ICs3MTgsMTYgQEAgQUNfU1VCU1QoQklORFNSQ0RJUikKKyAKKyAjIFdlIG5lZWQgdG8gZmluZCBsaWJ4bWwyIGlmIGJpbmQgd2FzIGJ1aWx0IHdpdGggc3VwcG9ydCBlbmFibGVkCisgIyBvdGhlcndpc2Ugd2UnbGwgZmFpbCB0byBidWlsZCBvbWFwaXAvdGVzdC5jCistQUNfU0VBUkNIX0xJQlMoeG1sVGV4dFdyaXRlclN0YXJ0RWxlbWVudCwgW3htbDJdLCkKKytBQ19BUkdfV0lUSChsaWJ4bWwyLAorKwlBU19IRUxQX1NUUklORyhbLS13aXRoLWxpYnhtbDJdLCBbbGluayBhZ2FpbnN0IGxpYnhtbDIuIHRoaXMgaXMgbmVlZGVkIGlmIGJpbmQgd2FzIGJ1aWx0IHdpdGggeG1sMiBzdXBwb3J0IGVuYWJsZWRdKSwKKysJd2l0aF9saWJ4bWwyPSIkd2l0aHZhbCIsIHdpdGhfbGlieG1sMj0ibm8iKQorKworK2lmIHRlc3QgeCR3aXRoX2xpYnhtbDIgIT0geG5vOyB0aGVuCisrICAgIEFDX1NFQVJDSF9MSUJTKHhtbFRleHRXcml0ZXJTdGFydEVsZW1lbnQsIFt4bWwyXSwKKysgICAgICAgICAgICAgICAgICAgW2lmIHRlc3QgeCR3aXRoX2xpYnhtbDIgIT0geGF1dG87IHRoZW4KKysgICAgICAgICAgICAgICAgICAgICAgICBBQ19NU0dfRkFJTFVSRShbKioqIENhbm5vdCBmaW5kIHhtbFRleHRXcml0ZXJTdGFydEVsZW1lbnQgd2l0aCAtbHhtbDIgYW5kIGxpYnhtbDIgd2FzIHJlcXVlc3RlZF0pCisrICAgICAgICAgICAgICAgICAgICBmaV0pCisrZmkKKyAKKyAjIE9wZW5MREFQIHN1cHBvcnQuCisgQUNfQVJHX1dJVEgobGRhcCwKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL2xpbmstd2l0aC1sY3J5cHRvLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL2xpbmstd2l0aC1sY3J5cHRvLnBhdGNoCmluZGV4IDU3ZTEwYjAuLjBkMGUwZGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9saW5rLXdpdGgtbGNyeXB0by5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvbGluay13aXRoLWxjcnlwdG8ucGF0Y2gKQEAgLTUsMTQgKzUsMjAgQEAKIGZyb20gYmluZCB0aGF0IGFyZSBsaW5rZWQgdG8gbGliY3J5cHRvLiBUaGlzIGlzIHdoeSBpIGFkZGVkIGEgcGF0Y2ggaW4gb3JkZXIgdG8gYWRkCiAtbGNyeXB0byB0byBMSUJTLgogCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWkgR2hlcnphbiA8YW5kcmVpQGdoZXJ6YW4ucm8+CiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFuZHJlaSBHaGVyemFuIDxhbmRyZWlAZ2hlcnphbi5ybz4KIAotSW5kZXg6IGRoY3AtNC4yLjMtUDItcjAvZGhjcC00LjIuMy1QMi9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBkaGNwLTQuMi4zLVAyLm9yaWcvY29uZmlndXJlLmFjCTIwMTItMDItMDIgMTg6MDQ6MjAuODQzMDIzMTk2ICswMjAwCi0rKysgZGhjcC00LjIuMy1QMi9jb25maWd1cmUuYWMJMjAxMi0wMi0wMiAxNzo1ODoxNi4wMDAwMDAwMDAgKzAyMDAKLUBAIC00NTYsNiArNDU2LDEwIEBACitSZWJhc2UgdG8gNC4zLjQKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggMDk3YjBjMy4uNzI2Yzg4ZSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNTg0LDYgKzU4NCwxMCBAQCBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbXV0sIFtbdm9pZCBmb28oKSBfX2F0dHJpYnV0ZV9fKChub3JldHVybikpOwogICMgTG9vayBmb3Igb3B0aW9uYWwgaGVhZGVycy4KICBBQ19DSEVDS19IRUFERVJTKHN5cy9zb2NrZXQuaCBuZXQvaWZfZGwuaCBuZXQvaWY2LmggcmVnZXguaCkKICAKQEAgLTIzLDMgKzI5LDYgQEAKICAjIFNvbGFyaXMgbmVlZHMgc29tZSBsaWJyYXJpZXMgZm9yIGZ1bmN0aW9ucwogIEFDX1NFQVJDSF9MSUJTKHNvY2tldCwgW3NvY2tldF0pCiAgQUNfU0VBUkNIX0xJQlMoaW5ldF9udG9hLCBbbnNsXSkKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL3JlbW92ZS1kaGNsaWVudC1zY3JpcHQtYmFzaC1kZXBlbmRlbmN5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL3JlbW92ZS1kaGNsaWVudC1zY3JpcHQtYmFzaC1kZXBlbmRlbmN5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5N2I5ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvcmVtb3ZlLWRoY2xpZW50LXNjcmlwdC1iYXNoLWRlcGVuZGVuY3kucGF0Y2gKQEAgLTAsMCArMSw1NSBAQAorRnJvbSA4YWVkMmE5ZmYwOWNiMGQ1ODRhZDBhNzM0MGZlM2E1OTY4NzlkOWIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjEgSnVsIDIwMTYgMTk6MDc6MDIgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gcmVtb3ZlIGRoY2xpZW50LXNjcmlwdCBiYXNoIGRlcGVuZGVuY3kKKworVGFrZSB0aGUgZGFzaCBjb21wYXRpYmxlIElQdjYgbGluay1sb2NhbCBhZGRyZXNzIHRlc3QgZnJvbSB0aGUgRGViaWFuCit2ZXJzaW9uIG9mIGRoY2xpZW50LXNjcmlwdC4KKworTm90ZSB0aGF0IGFsdGhvdWdoICJlY2hvIC1lIiBpbiB0aGUgT0UgdmVyc2lvbiBvZiBkaGNsaWVudC1zY3JpcHQgaXMKK3RlY2huaWNhbGx5IGJhc2ggc3BlY2lmaWMgdG9vLCBpdCBpcyBzdXBwb3J0ZWQgYnkgQnVzeWJveCBlY2hvIHdoZW4KK0J1c3lib3ggaXMgY29uZmlndXJlZCB3aXRoIENPTkZJR19GRUFUVVJFX0ZBTkNZX0VDSE8gZW5hYmxlZCAod2hpY2gKK2lzIHRoZSBkZWZhdWx0IGluIHRoZSBPRSBCdXN5Ym94IGRlZmNvbmZpZykgdGhlcmVmb3JlIGxlYXZlIGFzLWlzLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgorLS0tCisgY2xpZW50L3NjcmlwdHMvbGludXggfCA3ICsrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY2xpZW50L3NjcmlwdHMvbGludXggYi9jbGllbnQvc2NyaXB0cy9saW51eAoraW5kZXggMjMyYTBhYS4uMTM4M2Y0NiAxMDA3NTUKKy0tLSBhL2NsaWVudC9zY3JpcHRzL2xpbnV4CisrKysgYi9jbGllbnQvc2NyaXB0cy9saW51eAorQEAgLTEsNCArMSw0IEBACistIyEvYmluL2Jhc2gKKysjIS9iaW4vc2gKKyAjIGRoY2xpZW50LXNjcmlwdCBmb3IgTGludXguIERhbiBIYWxiZXJ0LCBNYXJjaCwgMTk5Ny4KKyAjIFVwZGF0ZWQgZm9yIExpbnV4IDIuWzEyXSBieSBCcmlhbiBKLiBNdXJyZWxsLCBKYW51YXJ5IDE5OTkuCisgIyBObyBndWFyYW50ZWVzIGFib3V0IHRoaXMuIEknbSBhIG5vdmljZSBhdCB0aGUgZGV0YWlscyBvZiBMaW51eAorQEAgLTQ3LDExICs0NywxMSBAQCBtYWtlX3Jlc29sdl9jb25mKCkgeworICAgICBpZiBbICJ4JHtuZXdfZGhjcDZfZG9tYWluX3NlYXJjaH0iICE9IHggXSA7IHRoZW4KKyAgICAgICByZXNvbHZfY29uZj0ic2VhcmNoICR7bmV3X2RoY3A2X2RvbWFpbl9zZWFyY2h9XG4iCisgICAgIGZpCistICAgIHNob3B0IC1zIG5vY2FzZW1hdGNoIAorICAgICBmb3IgbmFtZXNlcnZlciBpbiAke25ld19kaGNwNl9uYW1lX3NlcnZlcnN9IDsgZG8KKyAgICAgICAjIElmIHRoZSBuYW1lc2VydmVyIGhhcyBhIGxpbmstbG9jYWwgYWRkcmVzcworICAgICAgICMgYWRkIGEgPHpvbmVfaWQ+IChpbnRlcmZhY2UgbmFtZSkgdG8gaXQuCistICAgICAgaWYgIFtbICIkbmFtZXNlcnZlciIgPX4gXmZlODA6OiBdXQorKyAgICAgIGlmIFsgIiR7bmFtZXNlcnZlciMjZmU4MDo6fSIgIT0gIiRuYW1lc2VydmVyIiBdIHx8CisrICAgICAgICAgWyAiJHtuYW1lc2VydmVyIyNGRTgwOjp9IiAhPSAiJG5hbWVzZXJ2ZXIiIF0KKyAgICAgICB0aGVuCisgCXpvbmVfaWQ9IiUkaW50ZXJmYWNlIgorICAgICAgIGVsc2UKK0BAIC01OSw3ICs1OSw2IEBAIG1ha2VfcmVzb2x2X2NvbmYoKSB7CisgICAgICAgZmkKKyAgICAgICByZXNvbHZfY29uZj0iJHtyZXNvbHZfY29uZn1uYW1lc2VydmVyICR7bmFtZXNlcnZlcn0kem9uZV9pZFxuIgorICAgICBkb25lCistICAgIHNob3B0IC11IG5vY2FzZW1hdGNoIAorIAorICAgICBlY2hvIC1lICIke3Jlc29sdl9jb25mfSIgPiAvZXRjL3Jlc29sdi5jb25mCisgICBmaQorLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvcmVwbGFjZS1pZmNvbmZpZy1yb3V0ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9yZXBsYWNlLWlmY29uZmlnLXJvdXRlLnBhdGNoCmluZGV4IDYxZGQ2YTcuLmQ4NGRmNWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9yZXBsYWNlLWlmY29uZmlnLXJvdXRlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9yZXBsYWNlLWlmY29uZmlnLXJvdXRlLnBhdGNoCkBAIC04LDIzICs4LDMyIEBACiAKIFNpZ25lZC1vZmYtYnk6IE11aGFtbWFkIFNoYWtlZWwgPG11aGFtbWFkX3NoYWtlZWxAbWVudG9yLmNvbT4KIAotLS0tIGRoY3AtNC4yLjUtUDEvY2xpZW50L3NjcmlwdHMvbGludXgub3JpZwkyMDEzLTA5LTA0IDEyOjIyOjU1LjAwMDAwMDAwMCArMDUwMAotKysrIGRoY3AtNC4yLjUtUDEvY2xpZW50L3NjcmlwdHMvbGludXgJMjAxMy0wOS0wNCAxMjo1MjoxOS4wNjg3NjE1MTggKzA1MDAKLUBAIC0xMDMsMTcgKzEwMywxMSBAQAorUmViYXNlIHRvIDQuMy40CisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNsaWVudC9zY3JpcHRzL2xpbnV4IHwgODIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0NSBpbnNlcnRpb25zKCspLCAzNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NsaWVudC9zY3JpcHRzL2xpbnV4IGIvY2xpZW50L3NjcmlwdHMvbGludXgKK2luZGV4IGEwMmNmZDkuLjIzMmEwYWEgMTAwNzU1CistLS0gYS9jbGllbnQvc2NyaXB0cy9saW51eAorKysrIGIvY2xpZW50L3NjcmlwdHMvbGludXgKK0BAIC0xMDEsMTcgKzEwMSwxMSBAQCBmaQogIGlmIFsgeCRvbGRfYnJvYWRjYXN0X2FkZHJlc3MgIT0geCBdOyB0aGVuCiAgICBvbGRfYnJvYWRjYXN0X2FyZz0iYnJvYWRjYXN0ICRvbGRfYnJvYWRjYXN0X2FkZHJlc3MiCiAgZmkKIC1pZiBbIHgkbmV3X3N1Ym5ldF9tYXNrICE9IHggXTsgdGhlbgogLSAgbmV3X3N1Ym5ldF9hcmc9Im5ldG1hc2sgJG5ld19zdWJuZXRfbWFzayIKLS1maQorK2lmIFsgLW4gIiRuZXdfc3VibmV0X21hc2siIF07IHRoZW4KKysgICAgbmV3X21hc2s9Ii8kbmV3X3N1Ym5ldF9tYXNrIgorIGZpCiAtaWYgWyB4JG9sZF9zdWJuZXRfbWFzayAhPSB4IF07IHRoZW4KIC0gIG9sZF9zdWJuZXRfYXJnPSJuZXRtYXNrICRvbGRfc3VibmV0X21hc2siCiAtZmkKIC1pZiBbIHgkYWxpYXNfc3VibmV0X21hc2sgIT0geCBdOyB0aGVuCiAtICBhbGlhc19zdWJuZXRfYXJnPSJuZXRtYXNrICRhbGlhc19zdWJuZXRfbWFzayIKLStpZiBbIC1uICIkbmV3X3N1Ym5ldF9tYXNrIiBdOyB0aGVuCi0rICAgIG5ld19tYXNrPSIvJG5ld19zdWJuZXRfbWFzayIKLSBmaQorLWZpCiAtaWYgWyB4JG5ld19pbnRlcmZhY2VfbXR1ICE9IHggXTsgdGhlbgogLSAgbXR1X2FyZz0ibXR1ICRuZXdfaW50ZXJmYWNlX210dSIKICtpZiBbIC1uICIkYWxpYXNfc3VibmV0X21hc2siIF07IHRoZW4KQEAgLTMyLDcgKzQxLDcgQEAKICBmaQogIGlmIFsgeCRJRl9NRVRSSUMgIT0geCBdOyB0aGVuCiAgICBtZXRyaWNfYXJnPSJtZXRyaWMgJElGX01FVFJJQyIKLUBAIC0xMjcsOSArMTIxLDkgQEAKK0BAIC0xMjUsOSArMTE5LDkgQEAgZmkKICBpZiBbIHgkcmVhc29uID0geFBSRUlOSVQgXTsgdGhlbgogICAgaWYgWyB4JGFsaWFzX2lwX2FkZHJlc3MgIT0geCBdOyB0aGVuCiAgICAgICMgQnJpbmcgZG93biBhbGlhcyBpbnRlcmZhY2UuIEl0cyByb3V0ZXMgd2lsbCBkaXNhcHBlYXIgdG9vLgpAQCAtNDQsNyArNTMsNyBAQAogIAogICAgIyBXZSBuZWVkIHRvIGdpdmUgdGhlIGtlcm5lbCBzb21lIHRpbWUgdG8gZ2V0IHRoZSBpbnRlcmZhY2UgdXAuCiAgICBzbGVlcCAxCi1AQCAtMTU2LDI1ICsxNTAsMzAgQEAKK0BAIC0xNTQsMjUgKzE0OCwzMCBAQCBpZiBbIHgkcmVhc29uID0geEJPVU5EIF0gfHwgWyB4JHJlYXNvbiA9IHhSRU5FVyBdIHx8IFwKICAgIGlmIFsgeCRvbGRfaXBfYWRkcmVzcyAhPSB4IF0gJiYgWyB4JGFsaWFzX2lwX2FkZHJlc3MgIT0geCBdICYmIFwKICAJCVsgeCRhbGlhc19pcF9hZGRyZXNzICE9IHgkb2xkX2lwX2FkZHJlc3MgXTsgdGhlbgogICAgICAjIFBvc3NpYmxlIG5ldyBhbGlhcy4gUmVtb3ZlIG9sZCBhbGlhcy4KQEAgLTgxLDcgKzkwLDcgQEAKICAgICAgZG9uZQogICAgZWxzZQogICAgICAjIHdlIGhhdmVuJ3QgY2hhbmdlZCB0aGUgYWRkcmVzcywgaGF2ZSB3ZSBjaGFuZ2VkIG90aGVyIG9wdGlvbnMgICAgICAgICAgIAotQEAgLTE4MiwyMSArMTgxLDIzIEBACitAQCAtMTgwLDIxICsxNzksMjMgQEAgaWYgWyB4JHJlYXNvbiA9IHhCT1VORCBdIHx8IFsgeCRyZWFzb24gPSB4UkVORVcgXSB8fCBcCiAgICAgIGlmIFsgeCRuZXdfcm91dGVycyAhPSB4IF0gJiYgWyB4JG5ld19yb3V0ZXJzICE9IHgkb2xkX3JvdXRlcnMgXSA7IHRoZW4KICAgICAgICAjIGlmIHdlJ3ZlIGNoYW5nZWQgcm91dGVycyBkZWxldGUgdGhlIG9sZCBhbmQgYWRkIHRoZSBuZXcuCiAgICAgICAgZm9yIHJvdXRlciBpbiAkb2xkX3JvdXRlcnM7IGRvCkBAIC0xMTIsNyArMTIxLDcgQEAKICAgIGZpCiAgICBtYWtlX3Jlc29sdl9jb25mCiAgICBleGl0X3dpdGhfaG9va3MgMAotQEAgLTIwNiw0MiArMjA3LDQ5IEBACitAQCAtMjA0LDQyICsyMDUsNDkgQEAgaWYgWyB4JHJlYXNvbiA9IHhFWFBJUkUgXSB8fCBbIHgkcmVhc29uID0geEZBSUwgXSB8fCBbIHgkcmVhc29uID0geFJFTEVBU0UgXSBcCiAgICAgfHwgWyB4JHJlYXNvbiA9IHhTVE9QIF07IHRoZW4KICAgIGlmIFsgeCRhbGlhc19pcF9hZGRyZXNzICE9IHggXTsgdGhlbgogICAgICAjIFR1cm4gb2ZmIGFsaWFzIGludGVyZmFjZS4KQEAgLTE3NCwzICsxODMsNiBAQAogICAgZXhpdF93aXRoX2hvb2tzIDEKICBmaQogIAorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvdHdlYWstdG8tc3VwcG9ydC1leHRlcm5hbC1iaW5kLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL3R3ZWFrLXRvLXN1cHBvcnQtZXh0ZXJuYWwtYmluZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wM2M2YWJiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL3R3ZWFrLXRvLXN1cHBvcnQtZXh0ZXJuYWwtYmluZC5wYXRjaApAQCAtMCwwICsxLDExNyBAQAorRnJvbSBhZDdiYjQwMWY0NzcxNGZjMzBjNDA4ODUzYjc5NmNlMGYxYzdlNjVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogU2F0LCAxMSBKdW4gMjAxNiAyMjo1MTo0NCAtMDQwMAorU3ViamVjdDogW1BBVENIXSB0d2VhayB0byBzdXBwb3J0IGV4dGVybmFsIGJpbmQKKworVHdlYWsgdGhlIGV4dGVybmFsIGJpbmQgdG8gb2UtY29yZSdzIHN5c3Jvb3QgcmF0aGVyIHRoYW4KK2V4dGVybmFsIGJpbmQgc291cmNlIGJ1aWxkLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgPG9lLWNvcmUgc3BlY2lmaWM+CisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNsaWVudC9NYWtlZmlsZS5hbSAgICAgICB8IDIgKy0KKyBjbGllbnQvdGVzdHMvTWFrZWZpbGUuYW0gfCAyICstCisgY29tbW9uL3Rlc3RzL01ha2VmaWxlLmFtIHwgMiArLQorIGRoY3BjdGwvTWFrZWZpbGUuYW0gICAgICB8IDIgKy0KKyBvbWFwaXAvTWFrZWZpbGUuYW0gICAgICAgfCAyICstCisgcmVsYXkvTWFrZWZpbGUuYW0gICAgICAgIHwgMiArLQorIHNlcnZlci9NYWtlZmlsZS5hbSAgICAgICB8IDIgKy0KKyBzZXJ2ZXIvdGVzdHMvTWFrZWZpbGUuYW0gfCAyICstCisgOCBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jbGllbnQvTWFrZWZpbGUuYW0gYi9jbGllbnQvTWFrZWZpbGUuYW0KK2luZGV4IDQ3MzBiYjMuLjg0ZDgxMzEgMTAwNjQ0CistLS0gYS9jbGllbnQvTWFrZWZpbGUuYW0KKysrKyBiL2NsaWVudC9NYWtlZmlsZS5hbQorQEAgLTQsNyArNCw3IEBACisgIyBwcm9kdWN0aW9uIGNvZGUuIFNhZGx5LCB3ZSBhcmUgbm90IHRoZXJlIHlldC4KKyBTVUJESVJTID0gLiB0ZXN0cworIAorLUJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCisrQklORExJQkRJUiA9IEBCSU5ERElSQAorIAorIEFNX0NQUEZMQUdTID0gLURDTElFTlRfUEFUSD0nIlBBVEg9JChzYmluZGlyKTovc2JpbjovYmluOi91c3Ivc2JpbjovdXNyL2JpbiInIFwKKyAJICAgICAgLURMT0NBTFNUQVRFRElSPSciJChsb2NhbHN0YXRlZGlyKSInIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcworZGlmZiAtLWdpdCBhL2NsaWVudC90ZXN0cy9NYWtlZmlsZS5hbSBiL2NsaWVudC90ZXN0cy9NYWtlZmlsZS5hbQoraW5kZXggZGE2OWVhOS4uZmUzNWU1NyAxMDA2NDQKKy0tLSBhL2NsaWVudC90ZXN0cy9NYWtlZmlsZS5hbQorKysrIGIvY2xpZW50L3Rlc3RzL01ha2VmaWxlLmFtCitAQCAtMSw2ICsxLDYgQEAKKyBTVUJESVJTID0gLgorIAorLUJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCisrQklORExJQkRJUiA9IEBCSU5ERElSQAorIAorIEFNX0NQUEZMQUdTID0gJChBVEZfQ0ZMQUdTKSAtRFVOSVRfVEVTVCAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKKyBBTV9DUFBGTEFHUyArPSAtSUBCSU5ERElSQC9pbmNsdWRlIC1JJCh0b3Bfc3JjZGlyKQorZGlmZiAtLWdpdCBhL2NvbW1vbi90ZXN0cy9NYWtlZmlsZS5hbSBiL2NvbW1vbi90ZXN0cy9NYWtlZmlsZS5hbQoraW5kZXggZjhkNmIwZS4uMDVjZDljMSAxMDA2NDQKKy0tLSBhL2NvbW1vbi90ZXN0cy9NYWtlZmlsZS5hbQorKysrIGIvY29tbW9uL3Rlc3RzL01ha2VmaWxlLmFtCitAQCAtMSw2ICsxLDYgQEAKKyBTVUJESVJTID0gLgorIAorLUJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCisrQklORExJQkRJUiA9IEBCSU5ERElSQAorIAorIEFNX0NQUEZMQUdTID0gJChBVEZfQ0ZMQUdTKSAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKKyAKK2RpZmYgLS1naXQgYS9kaGNwY3RsL01ha2VmaWxlLmFtIGIvZGhjcGN0bC9NYWtlZmlsZS5hbQoraW5kZXggYmE4ZGQ4Yi4uOWIyNDg2ZSAxMDA2NDQKKy0tLSBhL2RoY3BjdGwvTWFrZWZpbGUuYW0KKysrKyBiL2RoY3BjdGwvTWFrZWZpbGUuYW0KK0BAIC0xLDQgKzEsNCBAQAorLUJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCisrQklORExJQkRJUiA9IEBCSU5ERElSQAorIAorIEFNX0NQUEZMQUdTID0gLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzIC1JJCh0b3Bfc3JjZGlyKQorIAorZGlmZiAtLWdpdCBhL29tYXBpcC9NYWtlZmlsZS5hbSBiL29tYXBpcC9NYWtlZmlsZS5hbQoraW5kZXggZGQxYWZhMC4uZTRhODU5OSAxMDA2NDQKKy0tLSBhL29tYXBpcC9NYWtlZmlsZS5hbQorKysrIGIvb21hcGlwL01ha2VmaWxlLmFtCitAQCAtMSw0ICsxLDQgQEAKKy1CSU5ETElCRElSID0gQEJJTkRESVJAL2xpYgorK0JJTkRMSUJESVIgPSBAQklORERJUkAKKyBBTV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcworIAorIGxpYl9MSUJSQVJJRVMgPSBsaWJvbWFwaS5hCitkaWZmIC0tZ2l0IGEvcmVsYXkvTWFrZWZpbGUuYW0gYi9yZWxheS9NYWtlZmlsZS5hbQoraW5kZXggNmQ2NTJmNi4uYjNiZjU3OCAxMDA2NDQKKy0tLSBhL3JlbGF5L01ha2VmaWxlLmFtCisrKysgYi9yZWxheS9NYWtlZmlsZS5hbQorQEAgLTEsNCArMSw0IEBACistQklORExJQkRJUiA9IEBCSU5ERElSQC9saWIKKytCSU5ETElCRElSID0gQEJJTkRESVJACisgCisgQU1fQ1BQRkxBR1MgPSAtRExPQ0FMU1RBVEVESVI9JyJAbG9jYWxzdGF0ZWRpckAiJyAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKKyAKK2RpZmYgLS1naXQgYS9zZXJ2ZXIvTWFrZWZpbGUuYW0gYi9zZXJ2ZXIvTWFrZWZpbGUuYW0KK2luZGV4IDM5OTBiOWMuLmI1ZDhjMmQgMTAwNjQ0CistLS0gYS9zZXJ2ZXIvTWFrZWZpbGUuYW0KKysrKyBiL3NlcnZlci9NYWtlZmlsZS5hbQorQEAgLTQsNyArNCw3IEBACisgIyBwcm9kdWN0aW9uIGNvZGUuIFNhZGx5LCB3ZSBhcmUgbm90IHRoZXJlIHlldC4KKyBTVUJESVJTID0gLiB0ZXN0cworIAorLUJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCisrQklORExJQkRJUiA9IEBCSU5ERElSQAorIAorIEFNX0NQUEZMQUdTID0gLUkkKHRvcF9zcmNkaXIpIC1ETE9DQUxTVEFURURJUj0nIkBsb2NhbHN0YXRlZGlyQCInIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcworIAorZGlmZiAtLWdpdCBhL3NlcnZlci90ZXN0cy9NYWtlZmlsZS5hbSBiL3NlcnZlci90ZXN0cy9NYWtlZmlsZS5hbQoraW5kZXggNjVhOWY3NC4uMjg5MjMwOSAxMDA2NDQKKy0tLSBhL3NlcnZlci90ZXN0cy9NYWtlZmlsZS5hbQorKysrIGIvc2VydmVyL3Rlc3RzL01ha2VmaWxlLmFtCitAQCAtMSw2ICsxLDYgQEAKKyBTVUJESVJTID0gLgorIAorLUJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCisrQklORExJQkRJUiA9IEBCSU5ERElSQAorIAorIEFNX0NQUEZMQUdTID0gJChBVEZfQ0ZMQUdTKSAtRFVOSVRfVEVTVCAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKKyBBTV9DUFBGTEFHUyArPSAtSUBCSU5ERElSQC9pbmNsdWRlIC1JJCh0b3Bfc3JjZGlyKQorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3BfNC4zLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3BfNC4zLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlOGNkMjcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwXzQuMy4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotcmVxdWlyZSBkaGNwLmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vZGhjcC0zLjAuMy1kaGNsaWVudC1kYnVzLnBhdGNoO3N0cmlwbGV2ZWw9MCBcCi0gICAgICAgICAgICBmaWxlOi8vZml4LWV4dGVybmFsLWJpbmQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2xpbmstd2l0aC1sY3J5cHRvLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9maXhzZXBidWlsZC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vZGhjbGllbnQtc2NyaXB0LWRyb3AtcmVzb2x2LmNvbmYuZGhjbGllbnQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3JlcGxhY2UtaWZjb25maWctcm91dGUucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL0NWRS0yMDE1LTg2MDUucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtc2l0ZS5oLWVuYWJsZS1nZW50bGUtc2h1dGRvd24ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTI3NzQucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjNTU3N2IwOWM5MDE3Y2RkMzE5YTExZmY2MzY0MjY4ZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1NTNjNDk0NWIwOWIxYzFiOTA0YzQ3ODBmMzRmNzJhYWVmYTJmYzhjNjU1NjcxNWRlMGJjOWQ0ZTNkMjU1ZWRlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwXzQuMy40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwXzQuMy40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxNTFlYjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3BfNC4zLjQuYmIKQEAgLTAsMCArMSwxOCBAQAorcmVxdWlyZSBkaGNwLmluYworCitTUkNfVVJJICs9ICJmaWxlOi8vZGhjcC0zLjAuMy1kaGNsaWVudC1kYnVzLnBhdGNoO3N0cmlwbGV2ZWw9MCBcCisgICAgICAgICAgICBmaWxlOi8vbGluay13aXRoLWxjcnlwdG8ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2ZpeHNlcGJ1aWxkLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9kaGNsaWVudC1zY3JpcHQtZHJvcC1yZXNvbHYuY29uZi5kaGNsaWVudC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcmVwbGFjZS1pZmNvbmZpZy1yb3V0ZS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1zaXRlLmgtZW5hYmxlLWdlbnRsZS1zaHV0ZG93bi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vbGlieG1sMi1jb25maWd1cmUtYXJndW1lbnQucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3R3ZWFrLXRvLXN1cHBvcnQtZXh0ZXJuYWwtYmluZC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLWRoY2xpZW50LXNjcmlwdC1iYXNoLWRlcGVuZGVuY3kucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwMTM4MzE5ZmUyYjc4OGNmNGJkZjM0ZmJlYWY5ZmY1NCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmNTExNWFlZTNkZDNlNjkyNWRlNGJhNDdiODBhYjczMmJhNDhiNDgxYzgzNjRiNmViYWRlMmQ0MzY5OGQ2MDdlIgorCitQQUNLQUdFQ09ORklHID89ICIiCitQQUNLQUdFQ09ORklHW2JpbmQtaHR0cHN0YXRzXSA9ICItLXdpdGgtbGlieG1sMiwtLXdpdGhvdXQtbGlieG1sMixsaWJ4bWwyIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9maWxlcy9kaGNyZWxheS5zZXJ2aWNlIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9maWxlcy9kaGNyZWxheS5zZXJ2aWNlCmluZGV4IGEyZDgxODkuLjE1ZmY5MjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZmlsZXMvZGhjcmVsYXkuc2VydmljZQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2ZpbGVzL2RoY3JlbGF5LnNlcnZpY2UKQEAgLTMsNyArMyw4IEBACiBBZnRlcj1uZXR3b3JrLnRhcmdldAogCiBbU2VydmljZV0KLUV4ZWNTdGFydD1AU0JJTkRJUkAvZGhjcmVsYXkgLWQgLS1uby1waWQKK0Vudmlyb25tZW50RmlsZT1AU1lTQ09ORkRJUkAvZGVmYXVsdC9kaGNwLXJlbGF5CitFeGVjU3RhcnQ9QFNCSU5ESVJAL2RoY3JlbGF5IC1kIC0tbm8tcGlkIC1xICRTRVJWRVJTCiAKIFtJbnN0YWxsXQogV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyLmluYwppbmRleCA4NmU5MzEwLi42M2U3Y2E5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIuaW5jCkBAIC0xMSw3ICsxMSw3IEBACiAKIERFUEVORFMgPSAiZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIGlwdGFibGVzIGVsZnV0aWxzIgogCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcyBiYXNoLWNvbXBsZXRpb24KIAogRVhUUkFfT0VNQUtFID0gIkNDPScke0NDfScgS0VSTkVMX0lOQ0xVREU9JHtTVEFHSU5HX0lOQ0RJUn0gRE9DRElSPSR7ZG9jZGlyfS9pcHJvdXRlMiBTVUJESVJTPSdsaWIgdGMgaXAgYnJpZGdlIG1pc2MgZ2VubCcgU0JJTkRJUj0nJHtiYXNlX3NiaW5kaXJ9JyBMSUJESVI9JyR7bGliZGlyfSciCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyL2lwcm91dGUyLTQuMy4wLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi9pcHJvdXRlMi00LjMuMC1tdXNsLnBhdGNoCmluZGV4IDFiNDE1YTUuLjhjMDc4ZjYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyL2lwcm91dGUyLTQuMy4wLW11c2wucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIvaXByb3V0ZTItNC4zLjAtbXVzbC5wYXRjaApAQCAtMSw2NCArMSwzNSBAQAotRnJvbSA0ODU5NjcwOWQ4YWI1OTcyN2I3OWE1YzZkYjMzZWJiMjUxYzM2NTQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVGhvbWFzIFBldGF6em9uaSA8dGhvbWFzLnBldGF6em9uaUBmcmVlLWVsZWN0cm9ucy5jb20+Ci1EYXRlOiBUaHUsIDE5IE5vdiAyMDE1IDE3OjQ0OjI1ICswMTAwCiBTdWJqZWN0OiBbUEFUQ0hdIEF2b2lkIGluNl9hZGRyIHJlZGVmaW5pdGlvbgotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAogCiBEdWUgdG8gYm90aCA8bmV0aW5ldC9pbi5oPiBhbmQgPGxpbnV4L2luNi5oPiBiZWluZyBpbmNsdWRlZCwgdGhlCiBpbjZfYWRkciBpcyBiZWluZyByZWRlZmluZWQ6IG9uY2UgZnJvbSB0aGUgQyBsaWJyYXJ5IGhlYWRlcnMgYW5kIG9uY2UKIGZyb20gdGhlIGtlcm5lbCBoZWFkZXJzLiBUaGlzIGNhdXNlcyBzb21lIGJ1aWxkIGZhaWx1cmVzIHdpdGggZm9yCi1leGFtcGxlIHRoZSBtdXNsIEMgbGlicmFyeToKLQotSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC4uL2luY2x1ZGUvbGludXgveGZybS5oOjQ6MCwKLSAgICAgICAgICAgICAgICAgZnJvbSB4ZnJtLmg6MjksCi0gICAgICAgICAgICAgICAgIGZyb20gaXB4ZnJtLmM6Mzk6Ci0uLi9pbmNsdWRlL2xpbnV4L2luNi5oOjMyOjg6IGVycm9yOiByZWRlZmluaXRpb24gb2Yg4oCYc3RydWN0IGluNl9hZGRy4oCZCi0gc3RydWN0IGluNl9hZGRyIHsKLSAgICAgICAgXgotSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC4uLi9vdXRwdXQvaG9zdC91c3IveDg2XzY0LWJ1aWxkcm9vdC1saW51eC1tdXNsL3N5c3Jvb3QvdXNyL2luY2x1ZGUvbmV0ZGIuaDo5OjAsCi0gICAgICAgICAgICAgICAgIGZyb20gaXB4ZnJtLmM6MzQ6Ci0uLi4vb3V0cHV0L2hvc3QvdXNyL3g4Nl82NC1idWlsZHJvb3QtbGludXgtbXVzbC9zeXNyb290L3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaDoyNDo4OiBub3RlOiBvcmlnaW5hbGx5IGRlZmluZWQgaGVyZQotIHN0cnVjdCBpbjZfYWRkcgotICAgICAgICBeCitleGFtcGxlIHRoZSBtdXNsIEMgbGlicmFyeS4KIAogSW4gb3JkZXIgdG8gZml4IHRoaXMsIHVzZSBqdXN0IHRoZSBDIGxpYnJhcnkgaGVhZGVyIDxuZXRpbmV0L2luLmg+LgotCiBPcmlnaW5hbCBwYXRjaCB0YWtlbiBmcm9tCiBodHRwOi8vZ2l0LmFscGluZWxpbnV4Lm9yZy9jZ2l0L2Fwb3J0cy90cmVlL21haW4vaXByb3V0ZTIvbXVzbC1maXhlcy5wYXRjaC4KIAotU2lnbmVkLW9mZi1ieTogVGhvbWFzIFBldGF6em9uaSA8dGhvbWFzLnBldGF6em9uaUBmcmVlLWVsZWN0cm9ucy5jb20+Ci0tLS0KKyhSZWZyZXNoZWQgdGhlIHBhdGNoIGZvciA0LjYgcmVsZWFzZSkKKwogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKLSBpbmNsdWRlL2xpYmlwdGMvaXB0X2tlcm5lbF9oZWFkZXJzLmggfCAyIC0tCi0gaW5jbHVkZS9saW51eC9pZl9icmlkZ2UuaCAgICAgICAgICAgIHwgMSAtCi0gaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIuaCAgICAgICAgICAgIHwgMiAtLQotIGluY2x1ZGUvbGludXgveGZybS5oICAgICAgICAgICAgICAgICB8IDEgLQotIDQgZmlsZXMgY2hhbmdlZCwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGliaXB0Yy9pcHRfa2VybmVsX2hlYWRlcnMuaCBiL2luY2x1ZGUvbGliaXB0Yy9pcHRfa2VybmVsX2hlYWRlcnMuaAotaW5kZXggN2U4NzgyOC4uOTU2NmJlNSAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvbGliaXB0Yy9pcHRfa2VybmVsX2hlYWRlcnMuaAotKysrIGIvaW5jbHVkZS9saWJpcHRjL2lwdF9rZXJuZWxfaGVhZGVycy5oCi1AQCAtMTUsMTIgKzE1LDEwIEBACi0gI2Vsc2UgLyogbGliYzUgKi8KLSAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotICNpbmNsdWRlIDxsaW51eC9pcC5oPgotLSNpbmNsdWRlIDxsaW51eC9pbi5oPgotICNpbmNsdWRlIDxsaW51eC9pZi5oPgotICNpbmNsdWRlIDxsaW51eC9pY21wLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L3RjcC5oPgotICNpbmNsdWRlIDxsaW51eC91ZHAuaD4KLSAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KLS0jaW5jbHVkZSA8bGludXgvaW42Lmg+Ci0gI2VuZGlmCi0gI2VuZGlmCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9pZl9icmlkZ2UuaCBiL2luY2x1ZGUvbGludXgvaWZfYnJpZGdlLmgKLWluZGV4IGVlMTk3YTMuLmY4MjNhYTQgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2xpbnV4L2lmX2JyaWRnZS5oCi0rKysgYi9pbmNsdWRlL2xpbnV4L2lmX2JyaWRnZS5oCitTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgUGV0YXp6b25pIDx0aG9tYXMucGV0YXp6b25pQGZyZWUtZWxlY3Ryb25zLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgorLS0tLQorZGlmZiAtTmF1ciBpcHJvdXRlMi00LjYuMC1vcmlnL2luY2x1ZGUvbGliaXB0Yy9pcHRfa2VybmVsX2hlYWRlcnMuaCBpcHJvdXRlMi00LjYuMC9pbmNsdWRlL2xpYmlwdGMvaXB0X2tlcm5lbF9oZWFkZXJzLmgKKy0tLSBpcHJvdXRlMi00LjYuMC1vcmlnL2luY2x1ZGUvbGliaXB0Yy9pcHRfa2VybmVsX2hlYWRlcnMuaAkyMDE2LTA1LTIzIDEyOjAzOjIzLjgyMTgyNjkxMCArMDMwMAorKysrIGlwcm91dGUyLTQuNi4wL2luY2x1ZGUvbGliaXB0Yy9pcHRfa2VybmVsX2hlYWRlcnMuaAkyMDE2LTA1LTIzIDEyOjA0OjIzLjcxNDA3ODE1NCArMDMwMAorQEAgLTYsNyArNiw2IEBACisgI2luY2x1ZGUgPGxpbWl0cy5oPgorIAorICNpbmNsdWRlIDxuZXRpbmV0L2lwLmg+CistI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyAjaW5jbHVkZSA8bmV0aW5ldC9pcF9pY21wLmg+CisgI2luY2x1ZGUgPG5ldGluZXQvdGNwLmg+CisgI2luY2x1ZGUgPG5ldGluZXQvdWRwLmg+CitkaWZmIC1OYXVyIGlwcm91dGUyLTQuNi4wLW9yaWcvaW5jbHVkZS9saW51eC9pZl9icmlkZ2UuaCBpcHJvdXRlMi00LjYuMC9pbmNsdWRlL2xpbnV4L2lmX2JyaWRnZS5oCistLS0gaXByb3V0ZTItNC42LjAtb3JpZy9pbmNsdWRlL2xpbnV4L2lmX2JyaWRnZS5oCTIwMTYtMDUtMjMgMTI6MDM6MjMuODIxODI2OTEwICswMzAwCisrKysgaXByb3V0ZTItNC42LjAvaW5jbHVkZS9saW51eC9pZl9icmlkZ2UuaAkyMDE2LTA1LTIzIDEyOjA0OjIzLjcxNjA3ODEyOSArMDMwMAogQEAgLTE1LDcgKzE1LDYgQEAKICAKICAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KQEAgLTY3LDEwICszOCw5IEBACiAgCiAgI2RlZmluZSBTWVNGU19CUklER0VfQVRUUgkiYnJpZGdlIgogICNkZWZpbmUgU1lTRlNfQlJJREdFX0ZEQgkiYnJmb3J3YXJkIgotZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyLmggYi9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci5oCi1pbmRleCBiNzFiNGM5Li4zZTRlNmFlIDEwMDY0NAotLS0tIGEvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIuaAotKysrIGIvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIuaAorZGlmZiAtTmF1ciBpcHJvdXRlMi00LjYuMC1vcmlnL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyLmggaXByb3V0ZTItNC42LjAvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIuaAorLS0tIGlwcm91dGUyLTQuNi4wLW9yaWcvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIuaAkyMDE2LTA1LTIzIDEyOjAzOjIzLjgyMTgyNjkxMCArMDMwMAorKysrIGlwcm91dGUyLTQuNi4wL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyLmgJMjAxNi0wNS0yMyAxMjowNDoyMy43MTcwNzgxMTcgKzAzMDAKIEBAIC00LDggKzQsNiBAQAogICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgogIApAQCAtODAsMTAgKzUwLDIwIEBACiAgCiAgLyogUmVzcG9uc2VzIGZyb20gaG9vayBmdW5jdGlvbnMuICovCiAgI2RlZmluZSBORl9EUk9QIDAKLWRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3hmcm0uaCBiL2luY2x1ZGUvbGludXgveGZybS5oCi1pbmRleCBiOGY1NDUxLi5hOTc2MWE1IDEwMDY0NAotLS0tIGEvaW5jbHVkZS9saW51eC94ZnJtLmgKLSsrKyBiL2luY2x1ZGUvbGludXgveGZybS5oCitkaWZmIC1OYXVyIGlwcm91dGUyLTQuNi4wLW9yaWcvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXJfaXB2NC9pcF90YWJsZXMuaCBpcHJvdXRlMi00LjYuMC9pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY0L2lwX3RhYmxlcy5oCistLS0gaXByb3V0ZTItNC42LjAtb3JpZy9pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY0L2lwX3RhYmxlcy5oCTIwMTYtMDUtMTggMjE6NTY6MDIuMDAwMDAwMDAwICswMzAwCisrKysgaXByb3V0ZTItNC42LjAvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXJfaXB2NC9pcF90YWJsZXMuaAkyMDE2LTA1LTIzIDEyOjA5OjIyLjg4ODMzNzk2MSArMDMwMAorQEAgLTE3LDcgKzE3LDYgQEAKKyAKKyAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyAKKy0jaW5jbHVkZSA8bGludXgvaWYuaD4KKyAjaW5jbHVkZSA8bGludXgvbmV0ZmlsdGVyX2lwdjQuaD4KKyAKKyAjaW5jbHVkZSA8bGludXgvbmV0ZmlsdGVyL3hfdGFibGVzLmg+CitkaWZmIC1OYXVyIGlwcm91dGUyLTQuNi4wLW9yaWcvaW5jbHVkZS9saW51eC94ZnJtLmggaXByb3V0ZTItNC42LjAvaW5jbHVkZS9saW51eC94ZnJtLmgKKy0tLSBpcHJvdXRlMi00LjYuMC1vcmlnL2luY2x1ZGUvbGludXgveGZybS5oCTIwMTYtMDUtMjMgMTI6MDM6MjMuODIxODI2OTEwICswMzAwCisrKysgaXByb3V0ZTItNC42LjAvaW5jbHVkZS9saW51eC94ZnJtLmgJMjAxNi0wNS0yMyAxMjowNDoyMy43MTgwNzgxMDQgKzAzMDAKIEBAIC0xLDcgKzEsNiBAQAogICNpZm5kZWYgX0xJTlVYX1hGUk1fSAogICNkZWZpbmUgX0xJTlVYX1hGUk1fSApAQCAtOTIsNiArNzIsMTQgQEAKICAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KICAKICAvKiBBbGwgb2YgdGhlIHN0cnVjdHVyZXMgaW4gdGhpcyBmaWxlIG1heSBub3QgY2hhbmdlIHNpemUgYXMgdGhleSBhcmUKLS0tIAotMi42LjMKLQorZGlmZiAtTmF1ciBpcHJvdXRlMi00LjYuMC1vcmlnL2luY2x1ZGUvdXRpbHMuaCBpcHJvdXRlMi00LjYuMC9pbmNsdWRlL3V0aWxzLmgKKy0tLSBpcHJvdXRlMi00LjYuMC1vcmlnL2luY2x1ZGUvdXRpbHMuaAkyMDE2LTA1LTIzIDEyOjAzOjIzLjgyMTgyNjkxMCArMDMwMAorKysrIGlwcm91dGUyLTQuNi4wL2luY2x1ZGUvdXRpbHMuaAkyMDE2LTA1LTIzIDEyOjA0OjIzLjcxODA3ODEwNCArMDMwMAorQEAgLTEsNiArMSw3IEBACisgI2lmbmRlZiBfX1VUSUxTX0hfXworICNkZWZpbmUgX19VVElMU19IX18gMQorIAorKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4gIC8qIE1BWFBBVEhMRU4gKi8KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2luY2x1ZGUgPGFzbS90eXBlcy5oPgorICNpbmNsdWRlIDxyZXNvbHYuaD4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyL2lwcm91dGUyLWZpeC1idWlsZGluZy13aXRoLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi9pcHJvdXRlMi1maXgtYnVpbGRpbmctd2l0aC1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODNhMjQzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyL2lwcm91dGUyLWZpeC1idWlsZGluZy13aXRoLW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1pcHJvdXRlMjogZml4IGJ1aWxkaW5nIHdpdGggbXVzbAotCi1XZSBuZWVkIGxpbWl0cy5oIGZvciBQQVRIX01BWCwgZml4ZXM6Ci0KLXJ0X25hbWVzLmM6MzY0OjEzOiBlcnJvcjog4oCYUEFUSF9NQVjigJkgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMKLWZ1bmN0aW9uKQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IEd1c3Rhdm8gWmFjYXJpYXMgPGd1c3Rhdm9AemFjYXJpYXMuY29tLmFyPgotU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci0tLS0KLWRpZmYgLS1naXQgYS9saWIvcnRfbmFtZXMuYyBiL2xpYi9ydF9uYW1lcy5jCi1pbmRleCBmNmQxN2MwLi5iNjY1ZDNlIDEwMDY0NAotLS0tIGEvbGliL3J0X25hbWVzLmMKLSsrKyBiL2xpYi9ydF9uYW1lcy5jCi1AQCAtMTgsNiArMTgsNyBAQAotICNpbmNsdWRlIDxzeXMvdGltZS5oPgotICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0gI2luY2x1ZGUgPGRpcmVudC5oPgotKyNpbmNsdWRlIDxsaW1pdHMuaD4KLSAKLSAjaW5jbHVkZSA8YXNtL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L3J0bmV0bGluay5oPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTJfNC40LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMl80LjQuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzk3OWU4Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMl80LjQuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLXJlcXVpcmUgaXByb3V0ZTIuaW5jCi0KLVNSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC91dGlscy9uZXQvJHtCUE59LyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtY3Jvc3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pcHJvdXRlMi1kZS1iYXNoLXNjcmlwdHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vaXByb3V0ZTItNC4zLjAtbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9pcHJvdXRlMi1maXgtYnVpbGRpbmctd2l0aC1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiZDc2MjY1M2VjM2UxYWIwZDRhOTY4OWUxNjljYTE4NGYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmM5MWMzNjcyODhhMTlmNzhlZjgwMGNkNjg0MDM2M2JlMWYyMmRhODQzNmZiYWU4OGUxYTcyNTA0OTBkNjUxNCIKLQotIyBDRkxBR1MgYXJlIGNvbXB1dGVkIGluIE1ha2VmaWxlIGFuZCByZWZlcmVuY2UgQ0NPUFRTCi0jCi1FWFRSQV9PRU1BS0VfYXBwZW5kID0gIiBDQ09QVFM9JyR7Q0ZMQUdTfSciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMl80LjcuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyXzQuNy4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyNmY5ODkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMl80LjcuMC5iYgpAQCAtMCwwICsxLDEzIEBACityZXF1aXJlIGlwcm91dGUyLmluYworCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvdXRpbHMvbmV0LyR7QlBOfS8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLWNyb3NzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaXByb3V0ZTItZGUtYmFzaC1zY3JpcHRzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2lwcm91dGUyLTQuMy4wLW11c2wucGF0Y2ggXAorICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkNGIyMDU4MzBjZGMyNzAyZjhhMGNiZDYyMzIxMjljZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZjYwZGJjZmIzM2E3OWRhYWUwNjM4ZjUzYmRjYWE0MzEwYzBhYTU5YWUzOWFmOGEyMzQwMjBkYzY5YmI3YjkyIgorCisjIENGTEFHUyBhcmUgY29tcHV0ZWQgaW4gTWFrZWZpbGUgYW5kIHJlZmVyZW5jZSBDQ09QVFMKKyMKK0VYVFJBX09FTUFLRV9hcHBlbmQgPSAiIENDT1BUUz0nJHtDRkxBR1N9JyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2l3L2l3LzAwMDEtaXctdmVyc2lvbi5zaC1kb24tdC11c2UtZ2l0LWRlc2NyaWJlLWZvci12ZXJzaW9uaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXcvaXcvMDAwMS1pdy12ZXJzaW9uLnNoLWRvbi10LXVzZS1naXQtZGVzY3JpYmUtZm9yLXZlcnNpb25pbmcucGF0Y2gKaW5kZXggMmU1MmM4MC4uNzE1Yjg4ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXcvaXcvMDAwMS1pdy12ZXJzaW9uLnNoLWRvbi10LXVzZS1naXQtZGVzY3JpYmUtZm9yLXZlcnNpb25pbmcucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXcvaXcvMDAwMS1pdy12ZXJzaW9uLnNoLWRvbi10LXVzZS1naXQtZGVzY3JpYmUtZm9yLXZlcnNpb25pbmcucGF0Y2gKQEAgLTcsMjcgKzcsMzMgQEAKIFNpZ25lZC1vZmYtYnk6IEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+CiBTaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KIC0tLQotZGlmZiAtTmF1ciBpdy00LjMtb3JpZ2luL3ZlcnNpb24uc2ggaXctNC4zL3ZlcnNpb24uc2gKLS0tLSBpdy00LjMtb3JpZ2luL3ZlcnNpb24uc2gJMjAxNS0xMS0yMCAxNjozNzo1OC43NjIwNzcxNjIgKzAyMDAKLSsrKyBpdy00LjMvdmVyc2lvbi5zaAkyMDE1LTExLTIwIDE2OjUyOjA1LjUyNjQ5MTE1MCArMDIwMAotQEAgLTMsMjEgKzMsNyBAQAotIFZFUlNJT049IjQuMyIKLSBPVVQ9IiQxIgorZGlmZiAtTmF1ciBpdy00Ljctb3JpZy92ZXJzaW9uLnNoIGl3LTQuNy92ZXJzaW9uLnNoCistLS0gaXctNC43LW9yaWcvdmVyc2lvbi5zaAkyMDE2LTA1LTMxIDEyOjUyOjQ2LjAwMDAwMDAwMCArMDMwMAorKysrIGl3LTQuNy92ZXJzaW9uLnNoCTIwMTYtMDYtMDEgMTE6MjE6NTguMzA3NDA5MDYwICswMzAwCitAQCAtMTUsMjcgKzE1LDcgQEAKKyBTUkNfRElSPSQoY2QgJHtTUkNfRElSfTsgcHdkKQorIGNkICIke1NSQ19ESVJ9IgogIAorLXY9IiIKIC1pZiBbIC1kIC5naXQgXSAmJiBoZWFkPWBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQgMj4vZGV2L251bGxgOyB0aGVuCi0tCWdpdCB1cGRhdGUtaW5kZXggLS1yZWZyZXNoIC0tdW5tZXJnZWQgPiAvZGV2L251bGwKLS0JZGVzY3I9JChnaXQgZGVzY3JpYmUgLS1tYXRjaD12KikKKy0gICAgZ2l0IHVwZGF0ZS1pbmRleCAtLXJlZnJlc2ggLS11bm1lcmdlZCA+IC9kZXYvbnVsbAorLSAgICBkZXNjcj0kKGdpdCBkZXNjcmliZSAtLW1hdGNoPXYqIDI+L2Rldi9udWxsKQorLSAgICBpZiBbICQ/IC1lcSAwIF07IHRoZW4KKy0gICAgICAgICMgb24gZ2l0IGJ1aWxkcyBjaGVjayB0aGF0IHRoZSB2ZXJzaW9uIG51bWJlciBhYm92ZQorLSAgICAgICAgIyBpcyBjb3JyZWN0Li4uCistICAgICAgICBpZiBbICIke2Rlc2NyJSUtKn0iID0gInYkVkVSU0lPTiIgXTsgdGhlbgorLSAgICAgICAgICAgIHY9IiR7ZGVzY3Ijdn0iCistICAgICAgICAgICAgaWYgZ2l0IGRpZmYtaW5kZXggLS1uYW1lLW9ubHkgSEVBRCB8IHJlYWQgZHVtbXkgOyB0aGVuCistICAgICAgICAgICAgICAgIHY9IiR2Ii1kaXJ0eQorLSAgICAgICAgICAgIGZpCistICAgICAgICBmaQorLSAgICBmaQorLWZpCiAtCi0tCSMgb24gZ2l0IGJ1aWxkcyBjaGVjayB0aGF0IHRoZSB2ZXJzaW9uIG51bWJlciBhYm92ZQotLQkjIGlzIGNvcnJlY3QuLi4KLS0JWyAiJHtkZXNjciUlLSp9IiA9ICJ2JFZFUlNJT04iIF0gfHwgZXhpdCAyCi0tCi0tCXY9IiR7ZGVzY3Ijdn0iCi0tCWlmIGdpdCBkaWZmLWluZGV4IC0tbmFtZS1vbmx5IEhFQUQgfCByZWFkIGR1bW15IDsgdGhlbgotLQkJdj0iJHYiLWRpcnR5Ci0tCWZpCi0tZWxzZQotLQl2PSIkVkVSU0lPTiIKKy0jIHNldCB0byB0aGUgZGVmYXVsdCB2ZXJzaW9uIHdoZW4gZmFpbGVkIHRvIGdldCB0aGUgdmVyc2lvbgorLSMgaW5mb3JtYXRpb24gd2l0aCBnaXQKKy1pZiBbIC16ICIke3Z9IiBdOyB0aGVuCistICAgIHY9IiRWRVJTSU9OIgogLWZpCiArdj0iJFZFUlNJT04iCiAgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pdy9pd180LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pdy9pd180LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4NjVlN2EuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXcvaXdfNC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotU1VNTUFSWSA9ICJubDgwMjExIGJhc2VkIENMSSBjb25maWd1cmF0aW9uIHV0aWxpdHkgZm9yIHdpcmVsZXNzIGRldmljZXMiCi1ERVNDUklQVElPTiA9ICJpdyBpcyBhIG5ldyBubDgwMjExIGJhc2VkIENMSSBjb25maWd1cmF0aW9uIHV0aWxpdHkgZm9yIFwKLXdpcmVsZXNzIGRldmljZXMuIEl0IHN1cHBvcnRzIGFsbW9zdCBhbGwgbmV3IGRyaXZlcnMgdGhhdCBoYXZlIGJlZW4gYWRkZWQgXAotdG8gdGhlIGtlcm5lbCByZWNlbnRseS4gIgotSE9NRVBBR0UgPSAiaHR0cDovL3dpcmVsZXNzLmtlcm5lbC5vcmcvZW4vdXNlcnMvRG9jdW1lbnRhdGlvbi9pdyIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ODc4NjE4YTVjNGFmMjVlOWI5M2VmMGJlMWE5M2Y3NzQiCi0KLURFUEVORFMgPSAibGlibmwiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9zb2Z0d2FyZS9uZXR3b3JrL2l3LyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWl3LXZlcnNpb24uc2gtZG9uLXQtdXNlLWdpdC1kZXNjcmliZS1mb3ItdmVyc2lvbmluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zZXBhcmF0ZS1vYmpkaXIucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNWNhNjIyYTI3MDY4N2Q2ODYyYzkwMjRmYWIyNjY4NzEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmE4NTNkOTVmZmJkMmIwNmMwNThiNDBlZjRlNmZhNzZhNTJjMjcwOWIwNWZiMTk3Njc2MWZlMTNlOWQ5ZTM5ZiIKLQotaW5oZXJpdCBwa2djb25maWcKLQotRVhUUkFfT0VNQUtFID0gIlwKLSAgICAtZiAnJHtTfS9NYWtlZmlsZScgXAotICAgIFwKLSAgICAnUFJFRklYPSR7cHJlZml4fScgXAotICAgICdTQklORElSPSR7c2JpbmRpcn0nIFwKLSAgICAnTUFORElSPSR7bWFuZGlyfScgXAotIgotQiA9ICIke1dPUktESVJ9L2J1aWxkIgotCi1kb19pbnN0YWxsKCkgewotICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXcvaXdfNC43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXcvaXdfNC43LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5ZjQxNDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pdy9pd180LjcuYmIKQEAgLTAsMCArMSwzMyBAQAorU1VNTUFSWSA9ICJubDgwMjExIGJhc2VkIENMSSBjb25maWd1cmF0aW9uIHV0aWxpdHkgZm9yIHdpcmVsZXNzIGRldmljZXMiCitERVNDUklQVElPTiA9ICJpdyBpcyBhIG5ldyBubDgwMjExIGJhc2VkIENMSSBjb25maWd1cmF0aW9uIHV0aWxpdHkgZm9yIFwKK3dpcmVsZXNzIGRldmljZXMuIEl0IHN1cHBvcnRzIGFsbW9zdCBhbGwgbmV3IGRyaXZlcnMgdGhhdCBoYXZlIGJlZW4gYWRkZWQgXAordG8gdGhlIGtlcm5lbCByZWNlbnRseS4gIgorSE9NRVBBR0UgPSAiaHR0cDovL3dpcmVsZXNzLmtlcm5lbC5vcmcvZW4vdXNlcnMvRG9jdW1lbnRhdGlvbi9pdyIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ODc4NjE4YTVjNGFmMjVlOWI5M2VmMGJlMWE5M2Y3NzQiCisKK0RFUEVORFMgPSAibGlibmwiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9zb2Z0d2FyZS9uZXR3b3JrL2l3LyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWl3LXZlcnNpb24uc2gtZG9uLXQtdXNlLWdpdC1kZXNjcmliZS1mb3ItdmVyc2lvbmluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zZXBhcmF0ZS1vYmpkaXIucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMTlkMWVkZDI3NmIyYWMwYzZjY2NmYzdhZThkMmI3MzIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzU4MDkyMjI5ZjEzZDY5MTk2ODA2MGEwYWQ0MTM2NGJhOGViOGRhNDUwMzYyNmMyMDIzM2E1YjFlYjMzYjRkOSIKKworaW5oZXJpdCBwa2djb25maWcKKworRVhUUkFfT0VNQUtFID0gIlwKKyAgICAtZiAnJHtTfS9NYWtlZmlsZScgXAorICAgIFwKKyAgICAnUFJFRklYPSR7cHJlZml4fScgXAorICAgICdTQklORElSPSR7c2JpbmRpcn0nIFwKKyAgICAnTUFORElSPSR7bWFuZGlyfScgXAorIgorQiA9ICIke1dPUktESVJ9L2J1aWxkIgorCitkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlicGNhcC9saWJwY2FwLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnBjYXAvbGlicGNhcC5pbmMKaW5kZXggYjc2MDFiMC4uN2IyOWE1MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlicGNhcC9saWJwY2FwLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJwY2FwL2xpYnBjYXAuaW5jCkBAIC0yMCwxMiArMjAsMTUgQEAKIAogRVhUUkFfT0VDT05GID0gIi0td2l0aC1wY2FwPWxpbnV4IgogCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdibHVldG9vdGgnLCAnJHtCTFVFWn0nLCAnJywgZCl9IgorUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJyR7QkxVRVp9JywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgJ2lwdjYnLCAnJywgZCl9IFwKKyIKIFBBQ0tBR0VDT05GSUdbYmx1ZXo0XSA9ICItLWVuYWJsZS1ibHVldG9vdGgsLS1kaXNhYmxlLWJsdWV0b290aCxibHVlejQiCiAjIEFkZCBhIGR1bW15IFBBQ0tBR0VDT05GSUcgZm9yIGJsdWV6NSBzaW5jZSBpdCBpcyBub3Qgc3VwcG9ydGVkIGJ5IGxpYnBjYXAuCiBQQUNLQUdFQ09ORklHW2JsdWV6NV0gPSAiLCwiCiBQQUNLQUdFQ09ORklHW2NhbnVzYl0gPSAiLS1lbmFibGUtY2FudXNiLC0tZW5hYmxlLWNhbnVzYj1ubyxsaWJ1c2IiCiBQQUNLQUdFQ09ORklHW2RidXNdID0gIi0tZW5hYmxlLWRidXMsLS1kaXNhYmxlLWRidXMsZGJ1cyIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCiBQQUNLQUdFQ09ORklHW2xpYm5sXSA9ICItLXdpdGgtbGlibmwsLS13aXRob3V0LWxpYm5sLGxpYm5sIgogCiBDUFBGTEFHU19wcmVwZW5kID0gIi1JJHtTfSAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZWFyZC9uZWFyZF8wLjE1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmVhcmQvbmVhcmRfMC4xNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTNiZGRiMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZWFyZC9uZWFyZF8wLjE1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotU1VNTUFSWSA9ICJMaW51eCBORkMgZGFlbW9uIgotREVTQ1JJUFRJT04gPSAiQSBkYWVtb24gZm9yIHRoZSBMaW51eCBOZWFyIEZpZWxkIENvbW11bmljYXRpb24gc3RhY2siCi1IT01FUEFHRSA9ICJodHRwOi8vMDEub3JnL2xpbnV4LW5mYyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi0KLURFUEVORFMgPSAiZGJ1cyBnbGliLTIuMCBsaWJubCIKLQotU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L25ldHdvcmsvbmZjLyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9uZWFyZC5pbiBcCi0gICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS5hbS1maXgtcGFyYWxsZWwtaXNzdWUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUuYW0tZG8tbm90LXNoaXAtdmVyc2lvbi5oLnBhdGNoIFwKLSAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiYjc0NmNlNjJlZWVmODhlOGRlOTA3NjVlMDBhNzVhMWMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjUxZjY1MTNkMzJjZGFmOGE0MjYyNTVkMDNhZmYzOGE2NjIwYTg5YjA1NjdlYzJiMzY2MDZjNjMzMGE5MzM1MyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTJmODg0ZDJhZTFmZjg3YzA5ZTViN2NjYzJjNGNhN2UgXAotIGZpbGU6Ly9zcmMvbmVhci5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PTM1OGU0ZGVlZmVmMjUxYTQ3NjFlMWZmYWNjOTY1ZDEzIFwKLSAiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBzeXN0ZW1kIHVwZGF0ZS1yYy5kIGJsdWV0b290aAotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3N5c3RlbWQnLCAnJywgZCl9IgotCi1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0tZW5hYmxlLXN5c3RlbWQgLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vIC0td2l0aC1zeXN0ZW1kdXNlcnVuaXRkaXI9JHtzeXN0ZW1kX3VuaXRkaXJ9L3VzZXIvLC0tZGlzYWJsZS1zeXN0ZW1kIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLXRvb2xzIgotCi0jIFRoaXMgd291bGQgY29weSBuZWFyZCBzdGFydC1zdG9wIHNoZWxsIGFuZCB0ZXN0IHNjcmlwdHMKLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8KLQkJc2VkICJzOkBpbnN0YWxscGF0aEA6JHtsaWJleGVjZGlyfS9uZmM6IiAke1dPUktESVJ9L25lYXJkLmluIFwKLQkJICA+ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9uZWFyZAotCQljaG1vZCAwNzU1ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9uZWFyZAotCWZpCi0KLQkjIEluc3RhbGwgdGhlIHRlc3RzIGZvciBuZWFyZC10ZXN0cwotCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9uZWFyZAotCWluc3RhbGwgLW0gMDc1NSAke1N9L3Rlc3QvKiAke0R9JHtsaWJkaXJ9LyR7QlBOfS8KLQlpbnN0YWxsIC1tIDA3NTUgJHtCfS90b29scy9uZmN0b29sL25mY3Rvb2wgJHtEfSR7bGliZGlyfS8ke0JQTn0vCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS10ZXN0cyIKLQotRklMRVNfJHtQTn0tdGVzdHMgPSAiJHtsaWJkaXJ9LyR7QlBOfS8qLXRlc3QiCi0KLVJERVBFTkRTXyR7UE59ID0gImRidXMgcHl0aG9uIHB5dGhvbi1kYnVzIHB5dGhvbi1weWdvYmplY3QiCi0KLSMgQmx1ZXogJiBXaWZpIGFyZSBub3QgbWFuZGF0b3J5IGV4Y2VwdCBmb3IgaGFuZG92ZXIKLVJSRUNPTU1FTkRTXyR7UE59ID0gIlwKLSAgICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJyR7QkxVRVp9JywgJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dpZmknLCd3cGEtc3VwcGxpY2FudCcsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICAiCi0KLVJERVBFTkRTXyR7UE59LXRlc3RzID0gInB5dGhvbiBweXRob24tZGJ1cyBweXRob24tcHlnb2JqZWN0IgotCi1JTklUU0NSSVBUX05BTUUgPSAibmVhcmQiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyA2NCIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm5lYXJkLnNlcnZpY2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZWFyZC9uZWFyZF8wLjE2LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmVhcmQvbmVhcmRfMC4xNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDMzZGMzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmVhcmQvbmVhcmRfMC4xNi5iYgpAQCAtMCwwICsxLDQ5IEBACitTVU1NQVJZID0gIkxpbnV4IE5GQyBkYWVtb24iCitERVNDUklQVElPTiA9ICJBIGRhZW1vbiBmb3IgdGhlIExpbnV4IE5lYXIgRmllbGQgQ29tbXVuaWNhdGlvbiBzdGFjayIKK0hPTUVQQUdFID0gImh0dHA6Ly8wMS5vcmcvbGludXgtbmZjIgorTElDRU5TRSA9ICJHUEx2MiIKKworREVQRU5EUyA9ICJkYnVzIGdsaWItMi4wIGxpYm5sIgorCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvbmV0d29yay9uZmMvJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL25lYXJkLmluIFwKKyAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLmFtLWZpeC1wYXJhbGxlbC1pc3N1ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS5hbS1kby1ub3Qtc2hpcC12ZXJzaW9uLmgucGF0Y2ggXAorICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI1YzY5MWZiNzg3Mjg1NmRjMGQ5MDljMjk4YmM4Y2I0MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlYWUzYjExYzU0MWE5ODhlYzExY2E5NGI3ZGVhYjAxMDgwY2Q1YjU4Y2ZlZjNjZWQ2Y2VhYzliNmU2ZTY1YjM2IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xMmY4ODRkMmFlMWZmODdjMDllNWI3Y2NjMmM0Y2E3ZSBcCisgZmlsZTovL3NyYy9uZWFyLmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9MzU4ZTRkZWVmZWYyNTFhNDc2MWUxZmZhY2M5NjVkMTMgXAorICIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHN5c3RlbWQgdXBkYXRlLXJjLmQgYmx1ZXRvb3RoCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnc3lzdGVtZCcsICcnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS1lbmFibGUtc3lzdGVtZCAtLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8gLS13aXRoLXN5c3RlbWR1c2VydW5pdGRpcj0ke3N5c3RlbWRfdW5pdGRpcn0vdXNlci8sLS1kaXNhYmxlLXN5c3RlbWQiCisKK0VYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtdG9vbHMiCisKKyMgVGhpcyB3b3VsZCBjb3B5IG5lYXJkIHN0YXJ0LXN0b3Agc2hlbGwgYW5kIHRlc3Qgc2NyaXB0cworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLworCQlzZWQgInM6QGluc3RhbGxwYXRoQDoke2xpYmV4ZWNkaXJ9L25mYzoiICR7V09SS0RJUn0vbmVhcmQuaW4gXAorCQkgID4gJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL25lYXJkCisJCWNobW9kIDA3NTUgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL25lYXJkCisJZmkKK30KKworUkRFUEVORFNfJHtQTn0gPSAiZGJ1cyIKKworIyBCbHVleiAmIFdpZmkgYXJlIG5vdCBtYW5kYXRvcnkgZXhjZXB0IGZvciBoYW5kb3ZlcgorUlJFQ09NTUVORFNfJHtQTn0gPSAiXAorICAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdibHVldG9vdGgnLCAnJHtCTFVFWn0nLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2lmaScsJ3dwYS1zdXBwbGljYW50JywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgICIKKworSU5JVFNDUklQVF9OQU1FID0gIm5lYXJkIgorSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMgNjQiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJuZWFyZC5zZXJ2aWNlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlsc18xLjMuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHNfMS4zLjMuYmIKaW5kZXggYTYyNjhmMy4uODU0MDUwMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlsc18xLjMuMy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzXzEuMy4zLmJiCkBAIC02NCwxMCArNjQsMTMgQEAKICAgICAgICAgICAgICAgICAtLXdpdGgtc3RhdGRwYXRoPS92YXIvbGliL25mcy9zdGF0ZCBcCiAgICAgICAgICAgICAgICAiCiAKLVBBQ0tBR0VDT05GSUcgPz89ICJ0Y3Atd3JhcHBlcnMiCitQQUNLQUdFQ09ORklHID8/PSAidGNwLXdyYXBwZXJzIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCAnaXB2NicsICcnLCBkKX0gXAorIgogUEFDS0FHRUNPTkZJR19yZW1vdmVfbGliYy1tdXNsID0gInRjcC13cmFwcGVycyIKIFBBQ0tBR0VDT05GSUdbdGNwLXdyYXBwZXJzXSA9ICItLXdpdGgtdGNwLXdyYXBwZXJzLC0td2l0aG91dC10Y3Atd3JhcHBlcnMsdGNwLXdyYXBwZXJzIgogUEFDS0FHRUNPTkZJR1tuZnNpZG1hcF0gPSAiLS1lbmFibGUtbmZzaWRtYXAsLS1kaXNhYmxlLW5mc2lkbWFwLGtleXV0aWxzIgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKIAogSU5ISUJJVF9BVVRPX1NUQUdFID0gIjEiCiAKQEAgLTg4LDcgKzkxLDcgQEAKIAkJICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvbmZzY29tbW9uIFwKIAkJICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9uZnMtc3RhdGQuc2VydmljZSIKIEZJTEVTXyR7UE59LXN0YXRzID0gIiR7c2JpbmRpcn0vbW91bnRzdGF0cyAke3NiaW5kaXJ9L25mc2lvc3RhdCIKLVJERVBFTkRTXyR7UE59LXN0YXRzID0gInB5dGhvbiIKK1JERVBFTkRTXyR7UE59LXN0YXRzID0gInB5dGhvbjMtY29yZSIKIAogRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF91bml0ZGlyfSIKIApAQCAtMTQwLDQgKzE0Myw4IEBACiAJcm0gLWYgJHtEfSR7c2JpbmRpcn0vcnBjZGVidWcKIAlybSAtZiAke0R9JHtzYmluZGlyfS9ycGNnZW4KIAlybSAtZiAke0R9JHtzYmluZGlyfS9sb2NrdGVzdAorCisgICAgICAgICMgTWFrZSBweXRob24gdG9vbHMgdXNlIHB5dGhvbiAzCisgICAgICAgIHNlZCAtaSAtZSAnMXMsIyEuKnB5dGhvbi4qLCMhJHtiaW5kaXJ9L3B5dGhvbjMsJyAke0R9JHtzYmluZGlyfS9tb3VudHN0YXRzICR7RH0ke3NiaW5kaXJ9L25mc2lvc3RhdAorCiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vZm9uby9vZm9uby5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vZm9uby9vZm9uby5pbmMKaW5kZXggYzQxNWEzOS4uOWM0N2M2ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2Zvbm8vb2Zvbm8uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29mb25vL29mb25vLmluYwpAQCAtMjYsMTIgKzI2LDE3IEBACiBkb19pbnN0YWxsX2FwcGVuZCgpIHsKICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCiAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L29mb25vICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9vZm9ubworCisgICMgT2Zvbm8gc3RpbGwgaGFzIG9uZSB0ZXN0IHRvb2wgdGhhdCByZWZlcnMgdG8gUHl0aG9uIDIgaW4gdGhlIHNoZWJhbmcKKyAgc2VkIC1pIC1lICcxcywjIS4qcHl0aG9uLiosIyEke2JpbmRpcn0vcHl0aG9uMywnICR7RH0ke2xpYmRpcn0vb2Zvbm8vdGVzdC9zZXQtZGRyCisKIH0KIAogUEFDS0FHRVMgPSsgIiR7UE59LXRlc3RzIgogCiBSREVQRU5EU18ke1BOfSArPSAiZGJ1cyIKK1JSRUNPTU1FTkRTXyR7UE59ICs9ICJrZXJuZWwtbW9kdWxlLXR1biBtb2JpbGUtYnJvYWRiYW5kLXByb3ZpZGVyLWluZm8iCiAKLUZJTEVTXyR7UE59ICs9ICIke2Jhc2VfbGliZGlyfS91ZGV2ICR7c3lzdGVtZF91bml0ZGlyfSIKK0ZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfdW5pdGRpcn0iCiBGSUxFU18ke1BOfS10ZXN0cyA9ICIke2xpYmRpcn0vJHtCUE59L3Rlc3QiCi1SREVQRU5EU18ke1BOfS10ZXN0cyA9ICJweXRob24gcHl0aG9uLXB5Z29iamVjdCBweXRob24tZGJ1cyIKK1JERVBFTkRTXyR7UE59LXRlc3RzID0gInB5dGhvbjMgcHl0aG9uMy1weWdvYmplY3QgcHl0aG9uMy1kYnVzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2Zvbm8vb2Zvbm8vUmV2ZXJ0LXRlc3QtQ29udmVydC10by1QeXRob24tMy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29mb25vL29mb25vL1JldmVydC10ZXN0LUNvbnZlcnQtdG8tUHl0aG9uLTMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmOGNhNzcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2Zvbm8vb2Zvbm8vUmV2ZXJ0LXRlc3QtQ29udmVydC10by1QeXRob24tMy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyNzAgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1Gcm9tIDU3MmZjMjNmNmVmZDY1YTJlZjllNmM5NTdiMjUwNjEwODczODY3MmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDcmlzdGlhbiBJb3JnYSA8Y3Jpc3RpYW4uaW9yZ2FAaW50ZWwuY29tPgotRGF0ZTogTW9uLCAyNSBBdWcgMjAxNCAxNjo1OTozOSArMDMwMAotU3ViamVjdDogW1BBVENIXSBSZXZlcnQgInRlc3Q6IENvbnZlcnQgdG8gUHl0aG9uIDMiCi0KLVRoaXMgcmV2ZXJ0cyBjb21taXQgYzAyN2FiOWZiYzFhOGU4YzllNzZiY2QxMjNkZjFhZDc2OTYzMDdjMi4KLS0tLQotIHRlc3QvYWN0aXZhdGUtY29udGV4dCAgICAgICAgICB8ICAyICstCi0gdGVzdC9hbnN3ZXItY2FsbHMgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0L2JhY2t0cmFjZSAgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3QvY2FuY2VsLXVzc2QgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdC9jZG1hLWNvbm5tYW4tZGlzYWJsZSAgICAgIHwgIDIgKy0KLSB0ZXN0L2NkbWEtY29ubm1hbi1lbmFibGUgICAgICAgfCAgMiArLQotIHRlc3QvY2RtYS1kaWFsLW51bWJlciAgICAgICAgICB8ICAyICstCi0gdGVzdC9jZG1hLWhhbmd1cCAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0L2NkbWEtbGlzdC1jYWxsICAgICAgICAgICAgfCAgMiArLQotIHRlc3QvY2RtYS1zZXQtY3JlZGVudGlhbHMgICAgICB8ICAyICstCi0gdGVzdC9jaGFuZ2UtcGluICAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0L2NyZWF0ZS1pbnRlcm5ldC1jb250ZXh0ICAgfCAgMiArLQotIHRlc3QvY3JlYXRlLW1tcy1jb250ZXh0ICAgICAgICB8ICAyICstCi0gdGVzdC9jcmVhdGUtbXVsdGlwYXJ0eSAgICAgICAgIHwgIDIgKy0KLSB0ZXN0L2RlYWN0aXZhdGUtYWxsICAgICAgICAgICAgfCAgMiArLQotIHRlc3QvZGVhY3RpdmF0ZS1jb250ZXh0ICAgICAgICB8ICAyICstCi0gdGVzdC9kaWFsLW51bWJlciAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0L2Rpc2FibGUtY2FsbC1mb3J3YXJkaW5nICAgfCAgMiArLQotIHRlc3QvZGlzYWJsZS1ncHJzICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdC9kaXNhYmxlLW1vZGVtICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0L2Rpc3BsYXktaWNvbiAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3QvZW5hYmxlLWNicyAgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdC9lbmFibGUtZ3BycyAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0L2VuYWJsZS1tb2RlbSAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3QvZW50ZXItcGluICAgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdC9nZXQtaWNvbiAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0L2dldC1vcGVyYXRvcnMgICAgICAgICAgICAgfCAgMiArLQotIHRlc3QvZ2V0LXRlY2gtcHJlZmVyZW5jZSAgICAgICB8ICAyICstCi0gdGVzdC9oYW5ndXAtYWN0aXZlICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0L2hhbmd1cC1hbGwgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3QvaGFuZ3VwLWNhbGwgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdC9oYW5ndXAtbXVsdGlwYXJ0eSAgICAgICAgIHwgIDIgKy0KLSB0ZXN0L2hvbGQtYW5kLWFuc3dlciAgICAgICAgICAgfCAgMiArLQotIHRlc3QvaW5pdGlhdGUtdXNzZCAgICAgICAgICAgICB8ICA0ICsrLS0KLSB0ZXN0L2xpc3QtY2FsbHMgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3QvbGlzdC1jb250ZXh0cyAgICAgICAgICAgICB8ICAyICstCi0gdGVzdC9saXN0LW1lc3NhZ2VzICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0L2xpc3QtbW9kZW1zICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3QvbGlzdC1vcGVyYXRvcnMgICAgICAgICAgICB8ICAyICstCi0gdGVzdC9sb2NrLXBpbiAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0L2xvY2tkb3duLW1vZGVtICAgICAgICAgICAgfCAgMiArLQotIHRlc3QvbW9uaXRvci1vZm9ubyAgICAgICAgICAgICB8ICA0ICsrLS0KLSB0ZXN0L29mZmxpbmUtbW9kZW0gICAgICAgICAgICAgfCAgMiArLQotIHRlc3Qvb25saW5lLW1vZGVtICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdC9wcml2YXRlLWNoYXQgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0L3Byb2Nlc3MtY29udGV4dC1zZXR0aW5ncyAgfCAgMiArLQotIHRlc3QvcmVjZWl2ZS1zbXMgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdC9yZWplY3QtY2FsbHMgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0L3JlbGVhc2UtYW5kLWFuc3dlciAgICAgICAgfCAgMiArLQotIHRlc3QvcmVsZWFzZS1hbmQtc3dhcCAgICAgICAgICB8ICAyICstCi0gdGVzdC9yZW1vdmUtY29udGV4dHMgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0L3Jlc2V0LXBpbiAgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3Qvc2Nhbi1mb3Itb3BlcmF0b3JzICAgICAgICB8ICAyICstCi0gdGVzdC9zZW5kLXNtcyAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0L3NlbmQtdXNzZCAgICAgICAgICAgICAgICAgfCAgNCArKy0tCi0gdGVzdC9zZW5kLXZjYWwgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0L3NlbmQtdmNhcmQgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3Qvc2V0LWNhbGwtZm9yd2FyZGluZyAgICAgICB8ICAyICstCi0gdGVzdC9zZXQtY2JzLXRvcGljcyAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0L3NldC1jb250ZXh0LXByb3BlcnR5ICAgICAgfCAgMiArLQotIHRlc3Qvc2V0LWZhc3QtZG9ybWFuY3kgICAgICAgICB8ICAyICstCi0gdGVzdC9zZXQtZ3NtLWJhbmQgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0L3NldC1taWMtdm9sdW1lICAgICAgICAgICAgfCAgMiArLQotIHRlc3Qvc2V0LW1tcy1kZXRhaWxzICAgICAgICAgICB8ICAyICstCi0gdGVzdC9zZXQtbXNpc2RuICAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0L3NldC1yb2FtaW5nLWFsbG93ZWQgICAgICAgfCAgMiArLQotIHRlc3Qvc2V0LXNwZWFrZXItdm9sdW1lICAgICAgICB8ICAyICstCi0gdGVzdC9zZXQtdGVjaC1wcmVmZXJlbmNlICAgICAgIHwgIDIgKy0KLSB0ZXN0L3NldC10dHkgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3Qvc2V0LXVtdHMtYmFuZCAgICAgICAgICAgICB8ICAyICstCi0gdGVzdC9zZXQtdXNlLXNtcy1yZXBvcnRzICAgICAgIHwgIDIgKy0KLSB0ZXN0L3N3YXAtY2FsbHMgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3QvdGVzdC1hZHZpY2Utb2YtY2hhcmdlICAgICB8ICAyICstCi0gdGVzdC90ZXN0LWNhbGwtYmFycmluZyAgICAgICAgIHwgIDIgKy0KLSB0ZXN0L3Rlc3QtY2FsbC1mb3J3YXJkaW5nICAgICAgfCAgMiArLQotIHRlc3QvdGVzdC1jYWxsLXNldHRpbmdzICAgICAgICB8ICAyICstCi0gdGVzdC90ZXN0LWNicyAgICAgICAgICAgICAgICAgIHwgIDQgKystLQotIHRlc3QvdGVzdC1nbnNzICAgICAgICAgICAgICAgICB8ICA0ICsrLS0KLSB0ZXN0L3Rlc3QtbWVzc2FnZS13YWl0aW5nICAgICAgfCAgMiArLQotIHRlc3QvdGVzdC1tb2RlbSAgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdC90ZXN0LW5ldHdvcmstcmVnaXN0cmF0aW9uIHwgIDIgKy0KLSB0ZXN0L3Rlc3QtcGhvbmVib29rICAgICAgICAgICAgfCAgMiArLQotIHRlc3QvdGVzdC1wdXNoLW5vdGlmaWNhdGlvbiAgICB8ICAyICstCi0gdGVzdC90ZXN0LXNtYXJ0LW1lc3NhZ2luZyAgICAgIHwgIDIgKy0KLSB0ZXN0L3Rlc3Qtc21zICAgICAgICAgICAgICAgICAgfCAxOCArKysrKysrKystLS0tLS0tLS0KLSB0ZXN0L3Rlc3Qtc3MgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3QvdGVzdC1zcy1jb250cm9sLWNiICAgICAgICB8ICAyICstCi0gdGVzdC90ZXN0LXNzLWNvbnRyb2wtY2YgICAgICAgIHwgIDIgKy0KLSB0ZXN0L3Rlc3Qtc3MtY29udHJvbC1jcyAgICAgICAgfCAgMiArLQotIHRlc3QvdGVzdC1zdGstbWVudSAgICAgICAgICAgICB8IDM0ICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KLSB0ZXN0L3VubG9jay1waW4gICAgICAgICAgICAgICAgfCAgMiArLQotIDk0IGZpbGVzIGNoYW5nZWQsIDEyNCBpbnNlcnRpb25zKCspLCAxMjQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0L2FjdGl2YXRlLWNvbnRleHQgYi90ZXN0L2FjdGl2YXRlLWNvbnRleHQKLWluZGV4IGU0ZmM3MDIuLjQyNDEzOTYgMTAwNzU1Ci0tLS0gYS90ZXN0L2FjdGl2YXRlLWNvbnRleHQKLSsrKyBiL3Rlc3QvYWN0aXZhdGUtY29udGV4dAotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9weXRob24zCi0rIyEvdXNyL2Jpbi9weXRob24KLSAKLSBpbXBvcnQgc3lzCi0gaW1wb3J0IGRidXMKLWRpZmYgLS1naXQgYS90ZXN0L2Fuc3dlci1jYWxscyBiL3Rlc3QvYW5zd2VyLWNhbGxzCi1pbmRleCBkYWE3OTRiLi40NWZmMDhmIDEwMDc1NQotLS0tIGEvdGVzdC9hbnN3ZXItY2FsbHMKLSsrKyBiL3Rlc3QvYW5zd2VyLWNhbGxzCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL3B5dGhvbjMKLSsjIS91c3IvYmluL3B5dGhvbgotIAotIGltcG9ydCBkYnVzCi0gCi1kaWZmIC0tZ2l0IGEvdGVzdC9iYWNrdHJhY2UgYi90ZXN0L2JhY2t0cmFjZQotaW5kZXggMDNjNzYzMi4uYzYyNDcwOSAxMDA3NTUKLS0tLSBhL3Rlc3QvYmFja3RyYWNlCi0rKysgYi90ZXN0L2JhY2t0cmFjZQotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9weXRob24zCi0rIyEvdXNyL2Jpbi9weXRob24KLSAKLSBpbXBvcnQgb3MKLSBpbXBvcnQgcmUKLWRpZmYgLS1naXQgYS90ZXN0L2NhbmNlbC11c3NkIGIvdGVzdC9jYW5jZWwtdXNzZAotaW5kZXggZTc1NTliYS4uMTc5N2YyNiAxMDA3NTUKLS0tLSBhL3Rlc3QvY2FuY2VsLXVzc2QKLSsrKyBiL3Rlc3QvY2FuY2VsLXVzc2QKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vcHl0aG9uMwotKyMhL3Vzci9iaW4vcHl0aG9uCi0gCi0gaW1wb3J0IHN5cwotIGltcG9ydCBkYnVzCi1kaWZmIC0tZ2l0IGEvdGVzdC9jZG1hLWNvbm5tYW4tZGlzYWJsZSBiL3Rlc3QvY2RtYS1jb25ubWFuLWRpc2FibGUKLWluZGV4IDNhZGMxNGQuLjBkZGMwY2QgMTAwNzU1Ci0tLS0gYS90ZXN0L2NkbWEtY29ubm1hbi1kaXNhYmxlCi0rKysgYi90ZXN0L2NkbWEtY29ubm1hbi1kaXNhYmxlCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL3B5dGhvbjMKLSsjIS91c3IvYmluL3B5dGhvbgotIAotIGltcG9ydCBkYnVzCi0gaW1wb3J0IHN5cwotZGlmZiAtLWdpdCBhL3Rlc3QvY2RtYS1jb25ubWFuLWVuYWJsZSBiL3Rlc3QvY2RtYS1jb25ubWFuLWVuYWJsZQotaW5kZXggYWMxNmEyZC4uYTNjY2EwMSAxMDA3NTUKLS0tLSBhL3Rlc3QvY2RtYS1jb25ubWFuLWVuYWJsZQotKysrIGIvdGVzdC9jZG1hLWNvbm5tYW4tZW5hYmxlCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL3B5dGhvbjMKLSsjIS91c3IvYmluL3B5dGhvbgotIAotIGltcG9ydCBkYnVzCi0gaW1wb3J0IHN5cwotZGlmZiAtLWdpdCBhL3Rlc3QvY2RtYS1kaWFsLW51bWJlciBiL3Rlc3QvY2RtYS1kaWFsLW51bWJlcgotaW5kZXggNjgzNDMxZS4uOWNkZmIyNCAxMDA3NTUKLS0tLSBhL3Rlc3QvY2RtYS1kaWFsLW51bWJlcgotKysrIGIvdGVzdC9jZG1hLWRpYWwtbnVtYmVyCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL3B5dGhvbjMKLSsjIS91c3IvYmluL3B5dGhvbgotIAotIGltcG9ydCBzeXMKLSBpbXBvcnQgZGJ1cwotZGlmZiAtLWdpdCBhL3Rlc3QvY2RtYS1oYW5ndXAgYi90ZXN0L2NkbWEtaGFuZ3VwCi1pbmRleCA0MWZmYTYwLi40OTNlY2U0IDEwMDc1NQotLS0tIGEvdGVzdC9jZG1hLWhhbmd1cAotKysrIGIvdGVzdC9jZG1hLWhhbmd1cAotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9weXRob24zCi0rIyEvdXNyL2Jpbi9weXRob24KLSAKLSBpbXBvcnQgc3lzCi0gaW1wb3J0IGRidXMKLWRpZmYgLS1naXQgYS90ZXN0L2NkbWEtbGlzdC1jYWxsIGIvdGVzdC9jZG1hLWxpc3QtY2FsbAotaW5kZXggYjEzMjM1My4uNWQzNmE2OSAxMDA3NTUKLS0tLSBhL3Rlc3QvY2RtYS1saXN0LWNhbGwKLSsrKyBiL3Rlc3QvY2RtYS1saXN0LWNhbGwKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vcHl0aG9uMwotKyMhL3Vzci9iaW4vcHl0aG9uCi0gCi0gaW1wb3J0IGRidXMKLSAKLWRpZmYgLS1naXQgYS90ZXN0L2NkbWEtc2V0LWNyZWRlbnRpYWxzIGIvdGVzdC9jZG1hLXNldC1jcmVkZW50aWFscwotaW5kZXggYTYwYzg2ZS4uYTI4NmIwZSAxMDA3NTUKLS0tLSBhL3Rlc3QvY2RtYS1zZXQtY3JlZGVudGlhbHMKLSsrKyBiL3Rlc3QvY2RtYS1zZXQtY3JlZGVudGlhbHMKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vcHl0aG9uMwotKyMhL3Vzci9iaW4vcHl0aG9uCi0gCi0gaW1wb3J0IGRidXMKLSBpbXBvcnQgc3lzCi1kaWZmIC0tZ2l0IGEvdGVzdC9jaGFuZ2UtcGluIGIvdGVzdC9jaGFuZ2UtcGluCi1pbmRleCAzMDFjNmNlLi4wMDBjZTUzIDEwMDc1NQotLS0tIGEvdGVzdC9jaGFuZ2UtcGluCi0rKysgYi90ZXN0L2NoYW5nZS1waW4KLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vcHl0aG9uMwotKyMhL3Vzci9iaW4vcHl0aG9uCi0gCi0gaW1wb3J0IGRidXMKLSBpbXBvcnQgc3lzCi1kaWZmIC0tZ2l0IGEvdGVzdC9jcmVhdGUtaW50ZXJuZXQtY29udGV4dCBiL3Rlc3QvY3JlYXRlLWludGVybmV0LWNvbnRleHQKLWluZGV4IDEwODkwNTMuLmVmZDA5OTggMTAwNzU1Ci0tLS0gYS90ZXN0L2NyZWF0ZS1pbnRlcm5ldC1jb250ZXh0Ci0rKysgYi90ZXN0L2NyZWF0ZS1pbnRlcm5ldC1jb250ZXh0Ci1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL3B5dGhvbjMKLSsjIS91c3IvYmluL3B5dGhvbgotIAotIGltcG9ydCBzeXMKLSBpbXBvcnQgZGJ1cwotZGlmZiAtLWdpdCBhL3Rlc3QvY3JlYXRlLW1tcy1jb250ZXh0IGIvdGVzdC9jcmVhdGUtbW1zLWNvbnRleHQKLWluZGV4IDU5ODMzNmYuLmU1YmUwOGQgMTAwNzU1Ci0tLS0gYS90ZXN0L2NyZWF0ZS1tbXMtY29udGV4dAotKysrIGIvdGVzdC9jcmVhdGUtbW1zLWNvbnRleHQKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vcHl0aG9uMwotKyMhL3Vzci9iaW4vcHl0aG9uCi0gCi0gaW1wb3J0IHN5cwotIGltcG9ydCBkYnVzCi1kaWZmIC0tZ2l0IGEvdGVzdC9jcmVhdGUtbXVsdGlwYXJ0eSBiL3Rlc3QvY3JlYXRlLW11bHRpcGFydHkKLWluZGV4IDFiNzYwMTAuLjk3MDQ3YzMgMTAwNzU1Ci0tLS0gYS90ZXN0L2NyZWF0ZS1tdWx0aXBhcnR5Ci0rKysgYi90ZXN0L2NyZWF0ZS1tdWx0aXBhcnR5Ci1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL3B5dGhvbjMKLSsjIS91c3IvYmluL3B5dGhvbgotIAotIGltcG9ydCBzeXMKLSBpbXBvcnQgZGJ1cwotZGlmZiAtLWdpdCBhL3Rlc3QvZGVhY3RpdmF0ZS1hbGwgYi90ZXN0L2RlYWN0aXZhdGUtYWxsCi1pbmRleCA1YWE4NTg3Li40MjcwMDllIDEwMDc1NQotLS0tIGEvdGVzdC9kZWFjdGl2YXRlLWFsbAotKysrIGIvdGVzdC9kZWFjdGl2YXRlLWFsbAotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9weXRob24zCi0rIyEvdXNyL2Jpbi9weXRob24KLSAKLSBpbXBvcnQgc3lzCi0gaW1wb3J0IGRidXMKLWRpZmYgLS1naXQgYS90ZXN0L2RlYWN0aXZhdGUtY29udGV4dCBiL3Rlc3QvZGVhY3RpdmF0ZS1jb250ZXh0Ci1pbmRleCA1Yzg2YTcxLi5kZjQ3ZDJlIDEwMDc1NQotLS0tIGEvdGVzdC9kZWFjdGl2YXRlLWNvbnRleHQKLSsrKyBiL3Rlc3QvZGVhY3RpdmF0ZS1jb250ZXh0Ci1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL3B5dGhvbjMKLSsjIS91c3IvYmluL3B5dGhvbgotIAotIGltcG9ydCBzeXMKLSBpbXBvcnQgZGJ1cwotZGlmZiAtLWdpdCBhL3Rlc3QvZGlhbC1udW1iZXIgYi90ZXN0L2RpYWwtbnVtYmVyCi1pbmRleCBmZTVhZGFkLi5lZTY3NGQ5IDEwMDc1NQotLS0tIGEvdGVzdC9kaWFsLW51bWJlcgotKysrIGIvdGVzdC9kaWFsLW51bWJlcgotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9weXRob24zCi0rIyEvdXNyL2Jpbi9weXRob24KLSAKLSBpbXBvcnQgc3lzCi0gaW1wb3J0IGRidXMKLWRpZmYgLS1naXQgYS90ZXN0L2Rpc2FibGUtY2FsbC1mb3J3YXJkaW5nIGIvdGVzdC9kaXNhYmxlLWNhbGwtZm9yd2FyZGluZwotaW5kZXggODExZTRmYS4uMzYwOTgxNiAxMDA3NTUKLS0tLSBhL3Rlc3QvZGlzYWJsZS1jYWxsLWZvcndhcmRpbmcKLSsrKyBiL3Rlc3QvZGlzYWJsZS1jYWxsLWZvcndhcmRpbmcKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vcHl0aG9uMwotKyMhL3Vzci9iaW4vcHl0aG9uCi0gCi0gaW1wb3J0IHN5cwotIGZyb20gZ2kucmVwb3NpdG9yeSBpbXBvcnQgR0xpYgotZGlmZiAtLWdpdCBhL3Rlc3QvZGlzYWJsZS1ncHJzIGIvdGVzdC9kaXNhYmxlLWdwcnMKLWluZGV4IDYxY2UyMTYuLmM2YzQwYTUgMTAwNzU1Ci0tLS0gYS90ZXN0L2Rpc2FibGUtZ3BycwotKysrIGIvdGVzdC9kaXNhYmxlLWdwcnMKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vcHl0aG9uMwotKyMhL3Vzci9iaW4vcHl0aG9uCi0gCi0gaW1wb3J0IGRidXMKLSBpbXBvcnQgc3lzCi1kaWZmIC0tZ2l0IGEvdGVzdC9kaXNhYmxlLW1vZGVtIGIvdGVzdC9kaXNhYmxlLW1vZGVtCi1pbmRleCA2ZmJhODU3Li5jYThjOGQ4IDEwMDc1NQotLS0tIGEvdGVzdC9kaXNhYmxlLW1vZGVtCi0rKysgYi90ZXN0L2Rpc2FibGUtbW9kZW0KLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vcHl0aG9uMwotKyMhL3Vzci9iaW4vcHl0aG9uCi0gCi0gaW1wb3J0IGRidXMKLSBpbXBvcnQgc3lzCi1kaWZmIC0tZ2l0IGEvdGVzdC9kaXNwbGF5LWljb24gYi90ZXN0L2Rpc3BsYXktaWNvbgotaW5kZXggYWM0MDgxOC4uNzUzZDE0ZCAxMDA3NTUKLS0tLSBhL3Rlc3QvZGlzcGxheS1pY29uCi0rKysgYi90ZXN0L2Rpc3BsYXktaWNvbgotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9weXRob24zCi0rIyEvdXNyL2Jpbi9weXRob24KLSAKLSBpbXBvcnQgc3lzCi0gaW1wb3J0IGRidXMKLWRpZmYgLS1naXQgYS90ZXN0L2VuYWJsZS1jYnMgYi90ZXN0L2VuYWJsZS1jYnMKLWluZGV4IDRhOGJmNjYuLmMwOGJmMmIgMTAwNzU1Ci0tLS0gYS90ZXN0L2VuYWJsZS1jYnMKLSsrKyBiL3Rlc3QvZW5hYmxlLWNicwotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9weXRob24zCi0rIyEvdXNyL2Jpbi9weXRob24KLSAKLSBpbXBvcnQgZGJ1cwotIGltcG9ydCBzeXMKLWRpZmYgLS1naXQgYS90ZXN0L2VuYWJsZS1ncHJzIGIvdGVzdC9lbmFibGUtZ3BycwotaW5kZXggNjhkNWVmMC4uODY2NDg5MSAxMDA3NTUKLS0tLSBhL3Rlc3QvZW5hYmxlLWdwcnMKLSsrKyBiL3Rlc3QvZW5hYmxlLWdwcnMKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vcHl0aG9uMwotKyMhL3Vzci9iaW4vcHl0aG9uCi0gCi0gaW1wb3J0IGRidXMKLSBpbXBvcnQgc3lzCi1kaWZmIC0tZ2l0IGEvdGVzdC9lbmFibGUtbW9kZW0gYi90ZXN0L2VuYWJsZS1tb2RlbQotaW5kZXggZmM1OTU4YS4uZGZhYWFhOCAxMDA3NTUKLS0tLSBhL3Rlc3QvZW5hYmxlLW1vZGVtCi0rKysgYi90ZXN0L2VuYWJsZS1tb2RlbQotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9weXRob24zCi0rIyEvdXNyL2Jpbi9weXRob24KLSAKLSBpbXBvcnQgZGJ1cwotIGltcG9ydCBzeXMKLWRpZmYgLS1naXQgYS90ZXN0L2VudGVyLXBpbiBiL3Rlc3QvZW50ZXItcGluCi1pbmRleCA5NTU2MzYzLi5jNmVlNjY5IDEwMDc1NQotLS0tIGEvdGVzdC9lbnRlci1waW4KLSsrKyBiL3Rlc3QvZW50ZXItcGluCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL3B5dGhvbjMKLSsjIS91c3IvYmluL3B5dGhvbgotIAotIGltcG9ydCBkYnVzCi0gaW1wb3J0IHN5cwotZGlmZiAtLWdpdCBhL3Rlc3QvZ2V0LWljb24gYi90ZXN0L2dldC1pY29uCi1pbmRleCA1NTY5YTMzLi5mZGFhZWU3IDEwMDc1NQotLS0tIGEvdGVzdC9nZXQtaWNvbgotKysrIGIvdGVzdC9nZXQtaWNvbgotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9weXRob24zCi0rIyEvdXNyL2Jpbi9weXRob24KLSAKLSBpbXBvcnQgZGJ1cwotIGltcG9ydCBzeXMKLWRpZmYgLS1naXQgYS90ZXN0L2dldC1vcGVyYXRvcnMgYi90ZXN0L2dldC1vcGVyYXRvcnMKLWluZGV4IDBmMzVjODAuLjYyMzU0YzUgMTAwNzU1Ci0tLS0gYS90ZXN0L2dldC1vcGVyYXRvcnMKLSsrKyBiL3Rlc3QvZ2V0LW9wZXJhdG9ycwotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9weXRob24zCi0rIyEvdXNyL2Jpbi9weXRob24KLSAKLSBpbXBvcnQgZGJ1cwotIGltcG9ydCBzeXMKLWRpZmYgLS1naXQgYS90ZXN0L2dldC10ZWNoLXByZWZlcmVuY2UgYi90ZXN0L2dldC10ZWNoLXByZWZlcmVuY2UKLWluZGV4IDdiYTYzNjUuLjc3ZDIwZDAgMTAwNzU1Ci0tLS0gYS90ZXN0L2dldC10ZWNoLXByZWZlcmVuY2UKLSsrKyBiL3Rlc3QvZ2V0LXRlY2gtcHJlZmVyZW5jZQotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9weXRob24zCi0rIyEvdXNyL2Jpbi9weXRob24KLSAKLSBpbXBvcnQgZGJ1cywgc3lzCi0gCi1kaWZmIC0tZ2l0IGEvdGVzdC9oYW5ndXAtYWN0aXZlIGIvdGVzdC9oYW5ndXAtYWN0aXZlCi1pbmRleCA4MmUwZWIwLi41YWY2MmFiIDEwMDc1NQotLS0tIGEvdGVzdC9oYW5ndXAtYWN0aXZlCi0rKysgYi90ZXN0L2hhbmd1cC1hY3RpdmUKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vcHl0aG9uMwotKyMhL3Vzci9iaW4vcHl0aG9uCi0gCi0gaW1wb3J0IHN5cwotIGltcG9ydCBkYnVzCi1kaWZmIC0tZ2l0IGEvdGVzdC9oYW5ndXAtYWxsIGIvdGVzdC9oYW5ndXAtYWxsCi1pbmRleCAzYTAxMzhkLi4zMjkzM2RiIDEwMDc1NQotLS0tIGEvdGVzdC9oYW5ndXAtYWxsCi0rKysgYi90ZXN0L2hhbmd1cC1hbGwKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vcHl0aG9uMwotKyMhL3Vzci9iaW4vcHl0aG9uCi0gCi0gaW1wb3J0IHN5cwotIGltcG9ydCBkYnVzCi1kaWZmIC0tZ2l0IGEvdGVzdC9oYW5ndXAtY2FsbCBiL3Rlc3QvaGFuZ3VwLWNhbGwKLWluZGV4IDVhMmRlMjAuLjQ0NzAyMGMgMTAwNzU1Ci0tLS0gYS90ZXN0L2hhbmd1cC1jYWxsCi0rKysgYi90ZXN0L2hhbmd1cC1jYWxsCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL3B5dGhvbjMKLSsjIS91c3IvYmluL3B5dGhvbgotIAotIGltcG9ydCBzeXMKLSBpbXBvcnQgZGJ1cwotZGlmZiAtLWdpdCBhL3Rlc3QvaGFuZ3VwLW11bHRpcGFydHkgYi90ZXN0L2hhbmd1cC1tdWx0aXBhcnR5Ci1pbmRleCAyNDc1MWMzLi40OGZlMzQyIDEwMDc1NQotLS0tIGEvdGVzdC9oYW5ndXAtbXVsdGlwYXJ0eQotKysrIGIvdGVzdC9oYW5ndXAtbXVsdGlwYXJ0eQotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9weXRob24zCi0rIyEvdXNyL2Jpbi9weXRob24KLSAKLSBpbXBvcnQgc3lzCi0gaW1wb3J0IGRidXMKLWRpZmYgLS1naXQgYS90ZXN0L2hvbGQtYW5kLWFuc3dlciBiL3Rlc3QvaG9sZC1hbmQtYW5zd2VyCi1pbmRleCBkYTNiZTU3Li4yYzQ3ZTI3IDEwMDc1NQotLS0tIGEvdGVzdC9ob2xkLWFuZC1hbnN3ZXIKLSsrKyBiL3Rlc3QvaG9sZC1hbmQtYW5zd2VyCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL3B5dGhvbjMKLSsjIS91c3IvYmluL3B5dGhvbgotIAotIGltcG9ydCBzeXMKLSBpbXBvcnQgZGJ1cwotZGlmZiAtLWdpdCBhL3Rlc3QvaW5pdGlhdGUtdXNzZCBiL3Rlc3QvaW5pdGlhdGUtdXNzZAotaW5kZXggZmFmNTBkMC4uZDcwMjJmMSAxMDA3NTUKLS0tLSBhL3Rlc3QvaW5pdGlhdGUtdXNzZAotKysrIGIvdGVzdC9pbml0aWF0ZS11c3NkCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL3B5dGhvbjMKLSsjIS91c3IvYmluL3B5dGhvbgotIAotIGltcG9ydCBzeXMKLSBpbXBvcnQgZGJ1cwotQEAgLTQ1LDcgKzQ1LDcgQEAgaWYgc3RhdGUgPT0gImlkbGUiOgotIHByaW50KCJTdGF0ZTogJXMiICUgKHN0YXRlKSkKLSAKLSB3aGlsZSBzdGF0ZSA9PSAidXNlci1yZXNwb25zZSI6Ci0tCXJlc3BvbnNlID0gaW5wdXQoIkVudGVyIHJlc3BvbnNlOiAiKQotKwlyZXNwb25zZSA9IHJhd19pbnB1dCgiRW50ZXIgcmVzcG9uc2U6ICIpCi0gCi0gCXJlc3VsdCA9IHVzc2QuUmVzcG9uZChyZXNwb25zZSwgdGltZW91dD0xMDApCi0gCi1kaWZmIC0tZ2l0IGEvdGVzdC9saXN0LWNhbGxzIGIvdGVzdC9saXN0LWNhbGxzCi1pbmRleCBmM2VlOTkxLi4wODY2OGM2IDEwMDc1NQotLS0tIGEvdGVzdC9saXN0LWNhbGxzCi0rKysgYi90ZXN0L2xpc3QtY2FsbHMKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vcHl0aG9uMwotKyMhL3Vzci9iaW4vcHl0aG9uCi0gCi0gaW1wb3J0IGRidXMKLSAKLWRpZmYgLS1naXQgYS90ZXN0L2xpc3QtY29udGV4dHMgYi90ZXN0L2xpc3QtY29udGV4dHMKLWluZGV4IDc4Mjc4Y2EuLmYwZDQwOTQgMTAwNzU1Ci0tLS0gYS90ZXN0L2xpc3QtY29udGV4dHMKLSsrKyBiL3Rlc3QvbGlzdC1jb250ZXh0cwotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9weXRob24zCi0rIyEvdXNyL2Jpbi9weXRob24KLSAKLSBpbXBvcnQgZGJ1cwotIAotZGlmZiAtLWdpdCBhL3Rlc3QvbGlzdC1tZXNzYWdlcyBiL3Rlc3QvbGlzdC1tZXNzYWdlcwotaW5kZXggOWY1YmNlMy4uY2ZjY2JlYSAxMDA3NTUKLS0tLSBhL3Rlc3QvbGlzdC1tZXNzYWdlcwotKysrIGIvdGVzdC9saXN0LW1lc3NhZ2VzCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL3B5dGhvbjMKLSsjIS91c3IvYmluL3B5dGhvbgotIAotIGltcG9ydCBkYnVzCi0gCi1kaWZmIC0tZ2l0IGEvdGVzdC9saXN0LW1vZGVtcyBiL3Rlc3QvbGlzdC1tb2RlbXMKLWluZGV4IGI5ZjUxMGEuLmVkNjYxMjQgMTAwNzU1Ci0tLS0gYS90ZXN0L2xpc3QtbW9kZW1zCi0rKysgYi90ZXN0L2xpc3QtbW9kZW1zCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL3B5dGhvbjMKLSsjIS91c3IvYmluL3B5dGhvbgotIAotIGltcG9ydCBkYnVzCi0gCi1kaWZmIC0tZ2l0IGEvdGVzdC9saXN0LW9wZXJhdG9ycyBiL3Rlc3QvbGlzdC1vcGVyYXRvcnMKLWluZGV4IDA2NGM0ZTMuLjM0OWJmNDEgMTAwNzU1Ci0tLS0gYS90ZXN0L2xpc3Qtb3BlcmF0b3JzCi0rKysgYi90ZXN0L2xpc3Qtb3BlcmF0b3JzCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL3B5dGhvbjMKLSsjIS91c3IvYmluL3B5dGhvbgotIAotIGltcG9ydCBkYnVzCi0gaW1wb3J0IHN5cwotZGlmZiAtLWdpdCBhL3Rlc3QvbG9jay1waW4gYi90ZXN0L2xvY2stcGluCi1pbmRleCA5NmVhOWMyLi41NTc5NzM1IDEwMDc1NQotLS0tIGEvdGVzdC9sb2NrLXBpbgotKysrIGIvdGVzdC9sb2NrLXBpbgotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9weXRob24zCi0rIyEvdXNyL2Jpbi9weXRob24KLSAKLSBpbXBvcnQgZGJ1cwotIGltcG9ydCBzeXMKLWRpZmYgLS1naXQgYS90ZXN0L2xvY2tkb3duLW1vZGVtIGIvdGVzdC9sb2NrZG93bi1tb2RlbQotaW5kZXggNGUwNDIwNS4uNzgxYWJiNiAxMDA3NTUKLS0tLSBhL3Rlc3QvbG9ja2Rvd24tbW9kZW0KLSsrKyBiL3Rlc3QvbG9ja2Rvd24tbW9kZW0KLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vcHl0aG9uMwotKyMhL3Vzci9iaW4vcHl0aG9uCi0gCi0gaW1wb3J0IGRidXMKLSBpbXBvcnQgc3lzCi1kaWZmIC0tZ2l0IGEvdGVzdC9tb25pdG9yLW9mb25vIGIvdGVzdC9tb25pdG9yLW9mb25vCi1pbmRleCA4ODMwNzU3Li5iZDMxNjE3IDEwMDc1NQotLS0tIGEvdGVzdC9tb25pdG9yLW9mb25vCi0rKysgYi90ZXN0L21vbml0b3Itb2Zvbm8KLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vcHl0aG9uMwotKyMhL3Vzci9iaW4vcHl0aG9uCi0gCi0gZnJvbSBnaS5yZXBvc2l0b3J5IGltcG9ydCBHTGliCi0gCi1AQCAtNiw3ICs2LDcgQEAgaW1wb3J0IGRidXMKLSBpbXBvcnQgZGJ1cy5tYWlubG9vcC5nbGliCi0gCi0gX2RidXMycHkgPSB7Ci0tCWRidXMuU3RyaW5nIDogc3RyLAotKwlkYnVzLlN0cmluZyA6IHVuaWNvZGUsCi0gCWRidXMuVUludDMyIDogaW50LAotIAlkYnVzLkludDMyIDogaW50LAotIAlkYnVzLkludDE2IDogaW50LAotZGlmZiAtLWdpdCBhL3Rlc3Qvb2ZmbGluZS1tb2RlbSBiL3Rlc3Qvb2ZmbGluZS1tb2RlbQotaW5kZXggZThjMDQzYS4uZWExZjUyMiAxMDA3NTUKLS0tLSBhL3Rlc3Qvb2ZmbGluZS1tb2RlbQotKysrIGIvdGVzdC9vZmZsaW5lLW1vZGVtCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL3B5dGhvbjMKLSsjIS91c3IvYmluL3B5dGhvbgotIAotIGltcG9ydCBkYnVzLCBzeXMKLSAKLWRpZmYgLS1naXQgYS90ZXN0L29ubGluZS1tb2RlbSBiL3Rlc3Qvb25saW5lLW1vZGVtCi1pbmRleCAwMjljNGE1Li4zMTBlZDdkIDEwMDc1NQotLS0tIGEvdGVzdC9vbmxpbmUtbW9kZW0KLSsrKyBiL3Rlc3Qvb25saW5lLW1vZGVtCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL3B5dGhvbjMKLSsjIS91c3IvYmluL3B5dGhvbgotIAotIGltcG9ydCBkYnVzLCBzeXMKLSAKLWRpZmYgLS1naXQgYS90ZXN0L3ByaXZhdGUtY2hhdCBiL3Rlc3QvcHJpdmF0ZS1jaGF0Ci1pbmRleCBlN2U1NDA2Li5lZjJlZjZjIDEwMDc1NQotLS0tIGEvdGVzdC9wcml2YXRlLWNoYXQKLSsrKyBiL3Rlc3QvcHJpdmF0ZS1jaGF0Ci1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL3B5dGhvbjMKLSsjIS91c3IvYmluL3B5dGhvbgotIAotIGltcG9ydCBzeXMKLSBpbXBvcnQgZGJ1cwotZGlmZiAtLWdpdCBhL3Rlc3QvcHJvY2Vzcy1jb250ZXh0LXNldHRpbmdzIGIvdGVzdC9wcm9jZXNzLWNvbnRleHQtc2V0dGluZ3MKLWluZGV4IDhhM2VjZmEuLjBmMDU4YjIgMTAwNzU1Ci0tLS0gYS90ZXN0L3Byb2Nlc3MtY29udGV4dC1zZXR0aW5ncwotKysrIGIvdGVzdC9wcm9jZXNzLWNvbnRleHQtc2V0dGluZ3MKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vcHl0aG9uMwotKyMhL3Vzci9iaW4vcHl0aG9uCi0gCi0gaW1wb3J0IG9zCi0gaW1wb3J0IGRidXMKLWRpZmYgLS1naXQgYS90ZXN0L3JlY2VpdmUtc21zIGIvdGVzdC9yZWNlaXZlLXNtcwotaW5kZXggYTBjNjkxNS4uYzIzZWIxNCAxMDA3NTUKLS0tLSBhL3Rlc3QvcmVjZWl2ZS1zbXMKLSsrKyBiL3Rlc3QvcmVjZWl2ZS1zbXMKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vcHl0aG9uMwotKyMhL3Vzci9iaW4vcHl0aG9uCi0gCi0gZnJvbSBnaS5yZXBvc2l0b3J5IGltcG9ydCBHTGliCi0gCi1kaWZmIC0tZ2l0IGEvdGVzdC9yZWplY3QtY2FsbHMgYi90ZXN0L3JlamVjdC1jYWxscwotaW5kZXggNzFiMjQzZS4uOWVkZjFmZiAxMDA3NTUKLS0tLSBhL3Rlc3QvcmVqZWN0LWNhbGxzCi0rKysgYi90ZXN0L3JlamVjdC1jYWxscwotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9weXRob24zCi0rIyEvdXNyL2Jpbi9weXRob24KLSAKLSBpbXBvcnQgZGJ1cwotIAotZGlmZiAtLWdpdCBhL3Rlc3QvcmVsZWFzZS1hbmQtYW5zd2VyIGIvdGVzdC9yZWxlYXNlLWFuZC1hbnN3ZXIKLWluZGV4IGRlYzhlMTcuLjI1ZmQ4MTggMTAwNzU1Ci0tLS0gYS90ZXN0L3JlbGVhc2UtYW5kLWFuc3dlcgotKysrIGIvdGVzdC9yZWxlYXNlLWFuZC1hbnN3ZXIKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vcHl0aG9uMwotKyMhL3Vzci9iaW4vcHl0aG9uCi0gCi0gaW1wb3J0IHN5cwotIGltcG9ydCBkYnVzCi1kaWZmIC0tZ2l0IGEvdGVzdC9yZWxlYXNlLWFuZC1zd2FwIGIvdGVzdC9yZWxlYXNlLWFuZC1zd2FwCi1pbmRleCBjYjhjODRlLi43YjM1NjlmIDEwMDc1NQotLS0tIGEvdGVzdC9yZWxlYXNlLWFuZC1zd2FwCi0rKysgYi90ZXN0L3JlbGVhc2UtYW5kLXN3YXAKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vcHl0aG9uMwotKyMhL3Vzci9iaW4vcHl0aG9uCi0gCi0gaW1wb3J0IHN5cwotIGltcG9ydCBkYnVzCi1kaWZmIC0tZ2l0IGEvdGVzdC9yZW1vdmUtY29udGV4dHMgYi90ZXN0L3JlbW92ZS1jb250ZXh0cwotaW5kZXggYjU0MTg0ZS4uYzUwODJjYiAxMDA3NTUKLS0tLSBhL3Rlc3QvcmVtb3ZlLWNvbnRleHRzCi0rKysgYi90ZXN0L3JlbW92ZS1jb250ZXh0cwotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9weXRob24zCi0rIyEvdXNyL2Jpbi9weXRob24KLSAKLSBpbXBvcnQgZGJ1cwotIAotZGlmZiAtLWdpdCBhL3Rlc3QvcmVzZXQtcGluIGIvdGVzdC9yZXNldC1waW4KLWluZGV4IDNmYmQxMjYuLmI0MjkyNTQgMTAwNzU1Ci0tLS0gYS90ZXN0L3Jlc2V0LXBpbgotKysrIGIvdGVzdC9yZXNldC1waW4KLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vcHl0aG9uMwotKyMhL3Vzci9iaW4vcHl0aG9uCi0gCi0gaW1wb3J0IGRidXMKLSBpbXBvcnQgc3lzCi1kaWZmIC0tZ2l0IGEvdGVzdC9zY2FuLWZvci1vcGVyYXRvcnMgYi90ZXN0L3NjYW4tZm9yLW9wZXJhdG9ycwotaW5kZXggYjRmYzA1ZS4uNzQ5YzcxMCAxMDA3NTUKLS0tLSBhL3Rlc3Qvc2Nhbi1mb3Itb3BlcmF0b3JzCi0rKysgYi90ZXN0L3NjYW4tZm9yLW9wZXJhdG9ycwotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9weXRob24zCi0rIyEvdXNyL2Jpbi9weXRob24KLSAKLSBpbXBvcnQgZGJ1cwotIGltcG9ydCBzeXMKLWRpZmYgLS1naXQgYS90ZXN0L3NlbmQtc21zIGIvdGVzdC9zZW5kLXNtcwotaW5kZXggOTg4MDhhYS4uZTA2NDQ0ZCAxMDA3NTUKLS0tLSBhL3Rlc3Qvc2VuZC1zbXMKLSsrKyBiL3Rlc3Qvc2VuZC1zbXMKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vcHl0aG9uMwotKyMhL3Vzci9iaW4vcHl0aG9uCi0gCi0gaW1wb3J0IHN5cwotIGltcG9ydCBkYnVzCi1kaWZmIC0tZ2l0IGEvdGVzdC9zZW5kLXVzc2QgYi90ZXN0L3NlbmQtdXNzZAotaW5kZXggYTIwZTA5OC4uZTU4NTg4MyAxMDA3NTUKLS0tLSBhL3Rlc3Qvc2VuZC11c3NkCi0rKysgYi90ZXN0L3NlbmQtdXNzZAotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9weXRob24zCi0rIyEvdXNyL2Jpbi9weXRob24KLSAKLSBpbXBvcnQgc3lzCi0gaW1wb3J0IGRidXMKLUBAIC00Niw3ICs0Niw3IEBAIGlmIHN0YXRlID09ICJpZGxlIjoKLSBwcmludCgiU3RhdGU6ICVzIiAlIChzdGF0ZSkpCi0gCi0gd2hpbGUgc3RhdGUgPT0gInVzZXItcmVzcG9uc2UiOgotLQlyZXNwb25zZSA9IGlucHV0KCJFbnRlciByZXNwb25zZTogIikKLSsJcmVzcG9uc2UgPSByYXdfaW5wdXQoIkVudGVyIHJlc3BvbnNlOiAiKQotIAotIAlwcmludCh1c3NkLlJlc3BvbmQocmVzcG9uc2UsIHRpbWVvdXQ9MTAwKSkKLSAKLWRpZmYgLS1naXQgYS90ZXN0L3NlbmQtdmNhbCBiL3Rlc3Qvc2VuZC12Y2FsCi1pbmRleCA1NjZkYWVmLi43ZjgyNzJiIDEwMDc1NQotLS0tIGEvdGVzdC9zZW5kLXZjYWwKLSsrKyBiL3Rlc3Qvc2VuZC12Y2FsCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL3B5dGhvbjMKLSsjIS91c3IvYmluL3B5dGhvbgotIAotIGltcG9ydCBzeXMKLSBpbXBvcnQgZGJ1cwotZGlmZiAtLWdpdCBhL3Rlc3Qvc2VuZC12Y2FyZCBiL3Rlc3Qvc2VuZC12Y2FyZAotaW5kZXggNGRlZGY1MS4uMjUwYjM2ZiAxMDA3NTUKLS0tLSBhL3Rlc3Qvc2VuZC12Y2FyZAotKysrIGIvdGVzdC9zZW5kLXZjYXJkCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL3B5dGhvbjMKLSsjIS91c3IvYmluL3B5dGhvbgotIAotIGltcG9ydCBzeXMKLSBpbXBvcnQgZGJ1cwotZGlmZiAtLWdpdCBhL3Rlc3Qvc2V0LWNhbGwtZm9yd2FyZGluZyBiL3Rlc3Qvc2V0LWNhbGwtZm9yd2FyZGluZwotaW5kZXggNDlkMWNlMC4uOWZkMzU4YiAxMDA3NTUKLS0tLSBhL3Rlc3Qvc2V0LWNhbGwtZm9yd2FyZGluZwotKysrIGIvdGVzdC9zZXQtY2FsbC1mb3J3YXJkaW5nCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL3B5dGhvbjMKLSsjIS91c3IvYmluL3B5dGhvbgotIAotIGltcG9ydCBzeXMKLSBmcm9tIGdpLnJlcG9zaXRvcnkgaW1wb3J0IEdMaWIKLWRpZmYgLS1naXQgYS90ZXN0L3NldC1jYnMtdG9waWNzIGIvdGVzdC9zZXQtY2JzLXRvcGljcwotaW5kZXggZGI5NWUxNi4uNzhkNmQ0NCAxMDA3NTUKLS0tLSBhL3Rlc3Qvc2V0LWNicy10b3BpY3MKLSsrKyBiL3Rlc3Qvc2V0LWNicy10b3BpY3MKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vcHl0aG9uMwotKyMhL3Vzci9iaW4vcHl0aG9uCi0gCi0gaW1wb3J0IGRidXMKLSBpbXBvcnQgc3lzCi1kaWZmIC0tZ2l0IGEvdGVzdC9zZXQtY29udGV4dC1wcm9wZXJ0eSBiL3Rlc3Qvc2V0LWNvbnRleHQtcHJvcGVydHkKLWluZGV4IDVmZjdhNjcuLjY0YTZmYjggMTAwNzU1Ci0tLS0gYS90ZXN0L3NldC1jb250ZXh0LXByb3BlcnR5Ci0rKysgYi90ZXN0L3NldC1jb250ZXh0LXByb3BlcnR5Ci1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL3B5dGhvbjMKLSsjIS91c3IvYmluL3B5dGhvbgotIAotIGltcG9ydCBzeXMKLSBpbXBvcnQgZGJ1cwotZGlmZiAtLWdpdCBhL3Rlc3Qvc2V0LWZhc3QtZG9ybWFuY3kgYi90ZXN0L3NldC1mYXN0LWRvcm1hbmN5Ci1pbmRleCBlZjc3YmNkLi43YmY3NzE1IDEwMDc1NQotLS0tIGEvdGVzdC9zZXQtZmFzdC1kb3JtYW5jeQotKysrIGIvdGVzdC9zZXQtZmFzdC1kb3JtYW5jeQotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9weXRob24zCi0rIyEvdXNyL2Jpbi9weXRob24KLSAKLSBpbXBvcnQgZGJ1cwotIGltcG9ydCBzeXMKLWRpZmYgLS1naXQgYS90ZXN0L3NldC1nc20tYmFuZCBiL3Rlc3Qvc2V0LWdzbS1iYW5kCi1pbmRleCBiMzdiY2I1Li4zYzE3YzEwIDEwMDc1NQotLS0tIGEvdGVzdC9zZXQtZ3NtLWJhbmQKLSsrKyBiL3Rlc3Qvc2V0LWdzbS1iYW5kCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL3B5dGhvbjMKLSsjIS91c3IvYmluL3B5dGhvbgotIAotIGltcG9ydCBkYnVzCi0gaW1wb3J0IHN5cwotZGlmZiAtLWdpdCBhL3Rlc3Qvc2V0LW1pYy12b2x1bWUgYi90ZXN0L3NldC1taWMtdm9sdW1lCi1pbmRleCBjZDZjNzNmLi5lMGJmZjQ5IDEwMDc1NQotLS0tIGEvdGVzdC9zZXQtbWljLXZvbHVtZQotKysrIGIvdGVzdC9zZXQtbWljLXZvbHVtZQotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9weXRob24zCi0rIyEvdXNyL2Jpbi9weXRob24KLSAKLSBpbXBvcnQgc3lzCi0gaW1wb3J0IGRidXMKLWRpZmYgLS1naXQgYS90ZXN0L3NldC1tbXMtZGV0YWlscyBiL3Rlc3Qvc2V0LW1tcy1kZXRhaWxzCi1pbmRleCA2ZWU1OWZhLi5kMmQwODM4IDEwMDc1NQotLS0tIGEvdGVzdC9zZXQtbW1zLWRldGFpbHMKLSsrKyBiL3Rlc3Qvc2V0LW1tcy1kZXRhaWxzCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL3B5dGhvbjMKLSsjIS91c3IvYmluL3B5dGhvbgotIAotIGltcG9ydCBzeXMKLSBpbXBvcnQgZGJ1cwotZGlmZiAtLWdpdCBhL3Rlc3Qvc2V0LW1zaXNkbiBiL3Rlc3Qvc2V0LW1zaXNkbgotaW5kZXggYjVmZTgxOS4uMDFmMjg0ZCAxMDA3NTUKLS0tLSBhL3Rlc3Qvc2V0LW1zaXNkbgotKysrIGIvdGVzdC9zZXQtbXNpc2RuCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL3B5dGhvbjMKLSsjIS91c3IvYmluL3B5dGhvbgotIAotIGltcG9ydCBkYnVzCi0gaW1wb3J0IHN5cwotZGlmZiAtLWdpdCBhL3Rlc3Qvc2V0LXJvYW1pbmctYWxsb3dlZCBiL3Rlc3Qvc2V0LXJvYW1pbmctYWxsb3dlZAotaW5kZXggNjk4YzhiNi4uOWUzZTA1OCAxMDA3NTUKLS0tLSBhL3Rlc3Qvc2V0LXJvYW1pbmctYWxsb3dlZAotKysrIGIvdGVzdC9zZXQtcm9hbWluZy1hbGxvd2VkCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL3B5dGhvbjMKLSsjIS91c3IvYmluL3B5dGhvbgotIAotIGltcG9ydCBzeXMKLSBpbXBvcnQgZGJ1cwotZGlmZiAtLWdpdCBhL3Rlc3Qvc2V0LXNwZWFrZXItdm9sdW1lIGIvdGVzdC9zZXQtc3BlYWtlci12b2x1bWUKLWluZGV4IDZkNGUzMDEuLjc5NjJmMzkgMTAwNzU1Ci0tLS0gYS90ZXN0L3NldC1zcGVha2VyLXZvbHVtZQotKysrIGIvdGVzdC9zZXQtc3BlYWtlci12b2x1bWUKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vcHl0aG9uMwotKyMhL3Vzci9iaW4vcHl0aG9uCi0gCi0gaW1wb3J0IHN5cwotIGltcG9ydCBkYnVzCi1kaWZmIC0tZ2l0IGEvdGVzdC9zZXQtdGVjaC1wcmVmZXJlbmNlIGIvdGVzdC9zZXQtdGVjaC1wcmVmZXJlbmNlCi1pbmRleCBiNTQ5YWJjLi4yNjY2Y2JkIDEwMDc1NQotLS0tIGEvdGVzdC9zZXQtdGVjaC1wcmVmZXJlbmNlCi0rKysgYi90ZXN0L3NldC10ZWNoLXByZWZlcmVuY2UKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vcHl0aG9uMwotKyMhL3Vzci9iaW4vcHl0aG9uCi0gCi0gaW1wb3J0IGRidXMKLSBpbXBvcnQgc3lzCi1kaWZmIC0tZ2l0IGEvdGVzdC9zZXQtdHR5IGIvdGVzdC9zZXQtdHR5Ci1pbmRleCBlZWQxZmJhLi41M2Q2Yjk5IDEwMDc1NQotLS0tIGEvdGVzdC9zZXQtdHR5Ci0rKysgYi90ZXN0L3NldC10dHkKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vcHl0aG9uMwotKyMhL3Vzci9iaW4vcHl0aG9uCi0gCi0gaW1wb3J0IGRidXMKLSBpbXBvcnQgc3lzCi1kaWZmIC0tZ2l0IGEvdGVzdC9zZXQtdW10cy1iYW5kIGIvdGVzdC9zZXQtdW10cy1iYW5kCi1pbmRleCAwYmFlNWM0Li5jMWU2NDQ4IDEwMDc1NQotLS0tIGEvdGVzdC9zZXQtdW10cy1iYW5kCi0rKysgYi90ZXN0L3NldC11bXRzLWJhbmQKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vcHl0aG9uMwotKyMhL3Vzci9iaW4vcHl0aG9uCi0gCi0gaW1wb3J0IGRidXMKLSBpbXBvcnQgc3lzCi1kaWZmIC0tZ2l0IGEvdGVzdC9zZXQtdXNlLXNtcy1yZXBvcnRzIGIvdGVzdC9zZXQtdXNlLXNtcy1yZXBvcnRzCi1pbmRleCAyODhkNGUxLi5hNGVmZTRmIDEwMDc1NQotLS0tIGEvdGVzdC9zZXQtdXNlLXNtcy1yZXBvcnRzCi0rKysgYi90ZXN0L3NldC11c2Utc21zLXJlcG9ydHMKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vcHl0aG9uMwotKyMhL3Vzci9iaW4vcHl0aG9uCi0gCi0gaW1wb3J0IGRidXMKLSBpbXBvcnQgc3lzCi1kaWZmIC0tZ2l0IGEvdGVzdC9zd2FwLWNhbGxzIGIvdGVzdC9zd2FwLWNhbGxzCi1pbmRleCAwMThhOGQzLi5lZWIyNTdiIDEwMDc1NQotLS0tIGEvdGVzdC9zd2FwLWNhbGxzCi0rKysgYi90ZXN0L3N3YXAtY2FsbHMKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vcHl0aG9uMwotKyMhL3Vzci9iaW4vcHl0aG9uCi0gCi0gaW1wb3J0IHN5cwotIGltcG9ydCBkYnVzCi1kaWZmIC0tZ2l0IGEvdGVzdC90ZXN0LWFkdmljZS1vZi1jaGFyZ2UgYi90ZXN0L3Rlc3QtYWR2aWNlLW9mLWNoYXJnZQotaW5kZXggNmU4N2U2MS4uMGYxZjU3ZiAxMDA3NTUKLS0tLSBhL3Rlc3QvdGVzdC1hZHZpY2Utb2YtY2hhcmdlCi0rKysgYi90ZXN0L3Rlc3QtYWR2aWNlLW9mLWNoYXJnZQotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9weXRob24zCi0rIyEvdXNyL2Jpbi9weXRob24KLSAKLSBmcm9tIGdpLnJlcG9zaXRvcnkgaW1wb3J0IEdMaWIKLSBpbXBvcnQgc3lzCi1kaWZmIC0tZ2l0IGEvdGVzdC90ZXN0LWNhbGwtYmFycmluZyBiL3Rlc3QvdGVzdC1jYWxsLWJhcnJpbmcKLWluZGV4IGVlZGI2OWYuLmJlNGFiNTcgMTAwNzU1Ci0tLS0gYS90ZXN0L3Rlc3QtY2FsbC1iYXJyaW5nCi0rKysgYi90ZXN0L3Rlc3QtY2FsbC1iYXJyaW5nCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL3B5dGhvbjMKLSsjIS91c3IvYmluL3B5dGhvbgotIAotIGZyb20gZ2kucmVwb3NpdG9yeSBpbXBvcnQgR0xpYgotIGltcG9ydCBzeXMKLWRpZmYgLS1naXQgYS90ZXN0L3Rlc3QtY2FsbC1mb3J3YXJkaW5nIGIvdGVzdC90ZXN0LWNhbGwtZm9yd2FyZGluZwotaW5kZXggNWRiODRkNy4uMDFhNzI5NCAxMDA3NTUKLS0tLSBhL3Rlc3QvdGVzdC1jYWxsLWZvcndhcmRpbmcKLSsrKyBiL3Rlc3QvdGVzdC1jYWxsLWZvcndhcmRpbmcKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vcHl0aG9uMwotKyMhL3Vzci9iaW4vcHl0aG9uCi0gCi0gZnJvbSBnaS5yZXBvc2l0b3J5IGltcG9ydCBHTGliCi0gCi1kaWZmIC0tZ2l0IGEvdGVzdC90ZXN0LWNhbGwtc2V0dGluZ3MgYi90ZXN0L3Rlc3QtY2FsbC1zZXR0aW5ncwotaW5kZXggNDM1NTk0Yy4uNWQ3ZWU0OSAxMDA3NTUKLS0tLSBhL3Rlc3QvdGVzdC1jYWxsLXNldHRpbmdzCi0rKysgYi90ZXN0L3Rlc3QtY2FsbC1zZXR0aW5ncwotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9weXRob24zCi0rIyEvdXNyL2Jpbi9weXRob24KLSAKLSBmcm9tIGdpLnJlcG9zaXRvcnkgaW1wb3J0IEdMaWIKLSAKLWRpZmYgLS1naXQgYS90ZXN0L3Rlc3QtY2JzIGIvdGVzdC90ZXN0LWNicwotaW5kZXggYTVjZWMwNi4uMTNjZGQ4MCAxMDA3NTUKLS0tLSBhL3Rlc3QvdGVzdC1jYnMKLSsrKyBiL3Rlc3QvdGVzdC1jYnMKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vcHl0aG9uMwotKyMhL3Vzci9iaW4vcHl0aG9uCi0gCi0gaW1wb3J0IGRidXMKLSBpbXBvcnQgZGJ1cy5tYWlubG9vcC5nbGliCi1AQCAtNzgsNyArNzgsNyBAQCBkZWYgc2V0X3RvcGljcyhjYnMpOgotIAlpbnZhbGlkRGF0YSA9IEZhbHNlOwotIAlpbmRleCA9IDAKLSAKLS0JdG9waWNzID0gaW5wdXQoJ0VudGVyIHRoZSB0b3BpYyBJRChzKSB5b3Ugd2FudCB0byByZWdpc3RlciB0bzogJykKLSsJdG9waWNzID0gcmF3X2lucHV0KCdFbnRlciB0aGUgdG9waWMgSUQocykgeW91IHdhbnQgdG8gcmVnaXN0ZXIgdG86ICcpCi0gCi0gCXdoaWxlIGluZGV4IDwgbGVuKHRvcGljcyk6Ci0gCQlpZiB0b3BpY3NbaW5kZXhdID09ICcsJyBvciB0b3BpY3NbaW5kZXhdID09ICctJzoKLWRpZmYgLS1naXQgYS90ZXN0L3Rlc3QtZ25zcyBiL3Rlc3QvdGVzdC1nbnNzCi1pbmRleCA2YWU2NGRiLi5hYTBiMTYwIDEwMDc1NQotLS0tIGEvdGVzdC90ZXN0LWduc3MKLSsrKyBiL3Rlc3QvdGVzdC1nbnNzCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL3B5dGhvbjMKLSsjIS91c3IvYmluL3B5dGhvbgotIAotIGZyb20gZ2kucmVwb3NpdG9yeSBpbXBvcnQgR0xpYgotIGltcG9ydCBzeXMKLUBAIC00MCw3ICs0MCw3IEBAIGRlZiBwcmludF9tZW51KCk6Ci0gZGVmIHN0ZGluX2hhbmRsZXIoY2hhbm5lbCwgY29uZGl0aW9uLCBnbnNzLCBwYXRoKToKLSAJaW5fa2V5ID0gb3MucmVhZChjaGFubmVsLnVuaXhfZ2V0X2ZkKCksIDE2MCkucnN0cmlwKCkuZGVjb2RlKCdVVEYtOCcpCi0gCWlmIGluX2tleSA9PSAnMCc6Ci0tCQl4bWwgPSBpbnB1dCgndHlwZSB0aGUgZWxlbWVudCBhbmQgcHJlc3MgZW50ZXI6ICcpCi0rCQl4bWwgPSByYXdfaW5wdXQoJ3R5cGUgdGhlIGVsZW1lbnQgYW5kIHByZXNzIGVudGVyOiAnKQotIAkJdHJ5OgotIAkJCWduc3MuU2VuZFBvc2l0aW9uaW5nRWxlbWVudChkYnVzLlN0cmluZyh4bWwpKQotIAkJCXByaW50KCJvayIpCi1kaWZmIC0tZ2l0IGEvdGVzdC90ZXN0LW1lc3NhZ2Utd2FpdGluZyBiL3Rlc3QvdGVzdC1tZXNzYWdlLXdhaXRpbmcKLWluZGV4IDQzMjg2MmUuLmI5M2ZiZjMgMTAwNzU1Ci0tLS0gYS90ZXN0L3Rlc3QtbWVzc2FnZS13YWl0aW5nCi0rKysgYi90ZXN0L3Rlc3QtbWVzc2FnZS13YWl0aW5nCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL3B5dGhvbjMKLSsjIS91c3IvYmluL3B5dGhvbgotIAotIGZyb20gZ2kucmVwb3NpdG9yeSBpbXBvcnQgR0xpYgotIGltcG9ydCBzeXMKLWRpZmYgLS1naXQgYS90ZXN0L3Rlc3QtbW9kZW0gYi90ZXN0L3Rlc3QtbW9kZW0KLWluZGV4IGFhMzhiMWYuLjI5ZGJmMTQgMTAwNzU1Ci0tLS0gYS90ZXN0L3Rlc3QtbW9kZW0KLSsrKyBiL3Rlc3QvdGVzdC1tb2RlbQotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9weXRob24zCi0rIyEvdXNyL2Jpbi9weXRob24KLSAKLSBmcm9tIGdpLnJlcG9zaXRvcnkgaW1wb3J0IEdMaWIKLSAKLWRpZmYgLS1naXQgYS90ZXN0L3Rlc3QtbmV0d29yay1yZWdpc3RyYXRpb24gYi90ZXN0L3Rlc3QtbmV0d29yay1yZWdpc3RyYXRpb24KLWluZGV4IDY4YjQzNDcuLmM1YWQ1ODYgMTAwNzU1Ci0tLS0gYS90ZXN0L3Rlc3QtbmV0d29yay1yZWdpc3RyYXRpb24KLSsrKyBiL3Rlc3QvdGVzdC1uZXR3b3JrLXJlZ2lzdHJhdGlvbgotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9weXRob24zCi0rIyEvdXNyL2Jpbi9weXRob24KLSAKLSBmcm9tIGdpLnJlcG9zaXRvcnkgaW1wb3J0IEdMaWIKLSBpbXBvcnQgc3lzCi1kaWZmIC0tZ2l0IGEvdGVzdC90ZXN0LXBob25lYm9vayBiL3Rlc3QvdGVzdC1waG9uZWJvb2sKLWluZGV4IDQyNjQ2ZDMuLjExNmZkNGYgMTAwNzU1Ci0tLS0gYS90ZXN0L3Rlc3QtcGhvbmVib29rCi0rKysgYi90ZXN0L3Rlc3QtcGhvbmVib29rCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL3B5dGhvbjMKLSsjIS91c3IvYmluL3B5dGhvbgotIAotIGltcG9ydCBkYnVzLCBzeXMKLSAKLWRpZmYgLS1naXQgYS90ZXN0L3Rlc3QtcHVzaC1ub3RpZmljYXRpb24gYi90ZXN0L3Rlc3QtcHVzaC1ub3RpZmljYXRpb24KLWluZGV4IGQ5NzJhZDMuLmVjYzZhZmIgMTAwNzU1Ci0tLS0gYS90ZXN0L3Rlc3QtcHVzaC1ub3RpZmljYXRpb24KLSsrKyBiL3Rlc3QvdGVzdC1wdXNoLW5vdGlmaWNhdGlvbgotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9weXRob24zCi0rIyEvdXNyL2Jpbi9weXRob24KLSAKLSBmcm9tIGdpLnJlcG9zaXRvcnkgaW1wb3J0IEdMaWIKLSAKLWRpZmYgLS1naXQgYS90ZXN0L3Rlc3Qtc21hcnQtbWVzc2FnaW5nIGIvdGVzdC90ZXN0LXNtYXJ0LW1lc3NhZ2luZwotaW5kZXggZjIyZWZkMi4uMTg4YWMxZSAxMDA3NTUKLS0tLSBhL3Rlc3QvdGVzdC1zbWFydC1tZXNzYWdpbmcKLSsrKyBiL3Rlc3QvdGVzdC1zbWFydC1tZXNzYWdpbmcKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vcHl0aG9uMwotKyMhL3Vzci9iaW4vcHl0aG9uCi0gCi0gZnJvbSBnaS5yZXBvc2l0b3J5IGltcG9ydCBHTGliCi0gCi1kaWZmIC0tZ2l0IGEvdGVzdC90ZXN0LXNtcyBiL3Rlc3QvdGVzdC1zbXMKLWluZGV4IDMwYWM2NTEuLjQ5OTM1ZTEgMTAwNzU1Ci0tLS0gYS90ZXN0L3Rlc3Qtc21zCi0rKysgYi90ZXN0L3Rlc3Qtc21zCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL3B5dGhvbjMKLSsjIS91c3IvYmluL3B5dGhvbgotICMgLSotIGNvZGluZzogdXRmLTggLSotCi0gCi0gZnJvbSBnaS5yZXBvc2l0b3J5IGltcG9ydCBHTGliCi1AQCAtMTMyLDcgKzEzMiw3IEBAIGRlZiBzdGRpbl9oYW5kbGVyKGNoYW5uZWwsIGNvbmRpdGlvbiwgc21zLCB2YWx1ZSwgbnVtYmVyKToKLSAJCWxvY2sgPSAib24iCi0gCQlpZiBpbl9rZXkgPT0gJzAnOgotIAkJCXByaW50X3NlbmRfc21zX21lbnUoKQotLQkJCXNtc190eXBlID0gaW5wdXQoJ1NlbGVjdCBTTVMgdHlwZTogJykKLSsJCQlzbXNfdHlwZSA9IHJhd19pbnB1dCgnU2VsZWN0IFNNUyB0eXBlOiAnKQotIAotIAkJCWlmIHNtc190eXBlID09ICcxJzoKLSAJCQkJbWVzc2FnZV9zZW5kKHNtcywgbnVtYmVyLCB2YWx1ZSkKLUBAIC0xNTAsNDkgKzE1MCw0OSBAQCBkZWYgc3RkaW5faGFuZGxlcihjaGFubmVsLCBjb25kaXRpb24sIHNtcywgdmFsdWUsIG51bWJlcik6Ci0gCi0gCQllbGlmIGluX2tleSA9PSAnMSc6Ci0gCQkJbWVzc2FnZV9kZWxpdmVyeV9yZXBvcnQoc21zLCAxKQotLQkJCXNlbmRfbXNnID0gaW5wdXQoJ1NlbmQgdGVzdCBtZXNzYWdlW3kvbl0/OiAnKQotKwkJCXNlbmRfbXNnID0gcmF3X2lucHV0KCdTZW5kIHRlc3QgbWVzc2FnZVt5L25dPzogJykKLSAJCQlpZiBzZW5kX21zZyA9PSAneSc6Ci0gCQkJCW1lc3NhZ2Vfc2VuZChzbXMsIG51bWJlciwgKCIoMSkiICsgdmFsdWUgKwotIAkJCQkJCSI6IFVzZURlbGl2ZXJ5UmVwb3J0c1tUUlVFXSIpKQotIAotIAkJZWxpZiBpbl9rZXkgPT0gJzInOgotIAkJCW1lc3NhZ2VfZGVsaXZlcnlfcmVwb3J0KHNtcywgMCkKLS0JCQlzZW5kX21zZyA9IGlucHV0KCdTZW5kIHRlc3QgbWVzc2FnZVt5L25dPzogJykKLSsJCQlzZW5kX21zZyA9IHJhd19pbnB1dCgnU2VuZCB0ZXN0IG1lc3NhZ2VbeS9uXT86ICcpCi0gCQkJaWYgc2VuZF9tc2cgPT0gJ3knOgotIAkJCQltZXNzYWdlX3NlbmQoc21zLCBudW1iZXIsICgiKDIpICIgKyB2YWx1ZSArCi0gCQkJCQkJIjogVXNlRGVsaXZlcnlSZXBvcnRzW0ZBTFNFXSIpKQotIAotIAkJZWxpZiBpbl9rZXkgPT0gJzMnOgotIAkJCW1lc3NhZ2Vfc2VydmljZV9jZW50ZXJfYWRkcmVzcyhzbXMsIFNDQSkKLS0JCQlzZW5kX21zZyA9IGlucHV0KCdTZW5kIHRlc3QgbWVzc2FnZVt5L25dPzogJykKLSsJCQlzZW5kX21zZyA9IHJhd19pbnB1dCgnU2VuZCB0ZXN0IG1lc3NhZ2VbeS9uXT86ICcpCi0gCQkJaWYgc2VuZF9tc2cgPT0gJ3knOgotIAkJCQltZXNzYWdlX3NlbmQoc21zLCBudW1iZXIsICgiKDMpICIgKyB2YWx1ZSArCi0gCQkJCQkJIjogU2VydmljZUNlbnRlckFkZHJlc3MiKSkKLSAKLSAJCWVsaWYgaW5fa2V5ID09ICc0JzoKLSAJCQltZXNzYWdlX2JlYXJlcihzbXMsICJwcy1vbmx5IikKLS0JCQlzZW5kX21zZyA9IGlucHV0KCdTZW5kIHRlc3QgbWVzc2FnZVt5L25dPzogJykKLSsJCQlzZW5kX21zZyA9IHJhd19pbnB1dCgnU2VuZCB0ZXN0IG1lc3NhZ2VbeS9uXT86ICcpCi0gCQkJaWYgc2VuZF9tc2cgPT0gJ3knOgotIAkJCQltZXNzYWdlX3NlbmQoc21zLCBudW1iZXIsICgiKDQpICIgKyB2YWx1ZSArCi0gCQkJCQkJIjogQmVhcmVyW3BzLW9ubHldIikpCi0gCi0gCQllbGlmIGluX2tleSA9PSAnNSc6Ci0gCQkJbWVzc2FnZV9iZWFyZXIoc21zLCAiY3Mtb25seSIpCi0tCQkJc2VuZF9tc2cgPSBpbnB1dCgnU2VuZCB0ZXN0IG1lc3NhZ2VbeS9uXT86ICcpCi0rCQkJc2VuZF9tc2cgPSByYXdfaW5wdXQoJ1NlbmQgdGVzdCBtZXNzYWdlW3kvbl0/OiAnKQotIAkJCWlmIHNlbmRfbXNnID09ICd5JzoKLSAJCQkJbWVzc2FnZV9zZW5kKHNtcywgbnVtYmVyLCAoIig1KSAiICsgdmFsdWUgKwotIAkJCQkJCSI6IEJlYXJlcltjcy1vbmx5XSIpKQotIAotIAkJZWxpZiBpbl9rZXkgPT0gJzYnOgotIAkJCW1lc3NhZ2VfYmVhcmVyKHNtcywgInBzLXByZWZlcnJlZCIpCi0tCQkJc2VuZF9tc2cgPSBpbnB1dCgnU2VuZCB0ZXN0IG1lc3NhZ2VbeS9uXT86ICcpCi0rCQkJc2VuZF9tc2cgPSByYXdfaW5wdXQoJ1NlbmQgdGVzdCBtZXNzYWdlW3kvbl0/OiAnKQotIAkJCWlmIHNlbmRfbXNnID09ICd5JzoKLSAJCQkJbWVzc2FnZV9zZW5kKHNtcywgbnVtYmVyLCAoIig2KSAiICsgdmFsdWUgKwotIAkJCQkJCSI6IEJlYXJlcltwcy1wcmVmZXJyZWRdIikpCi0gCi0gCQllbGlmIGluX2tleSA9PSAnNyc6Ci0gCQkJbWVzc2FnZV9iZWFyZXIoc21zLCAiY3MtcHJlZmVycmVkIikKLS0JCQlzZW5kX21zZyA9IGlucHV0KCdTZW5kIHRlc3QgbWVzc2FnZVt5L25dPzogJykKLSsJCQlzZW5kX21zZyA9IHJhd19pbnB1dCgnU2VuZCB0ZXN0IG1lc3NhZ2VbeS9uXT86ICcpCi0gCQkJaWYgc2VuZF9tc2cgPT0gJ3knOgotIAkJCQltZXNzYWdlX3NlbmQoc21zLG51bWJlciwgKCIoNykgIiArIHZhbHVlICsKLSAJCQkJCQkiOiBCZWFyZXJbY3MtcHJlZmVycmVkXSIpKQotZGlmZiAtLWdpdCBhL3Rlc3QvdGVzdC1zcyBiL3Rlc3QvdGVzdC1zcwotaW5kZXggNGNkODczMi4uMmM4MDgwNiAxMDA3NTUKLS0tLSBhL3Rlc3QvdGVzdC1zcwotKysrIGIvdGVzdC90ZXN0LXNzCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL3B5dGhvbjMKLSsjIS91c3IvYmluL3B5dGhvbgotIAotIGltcG9ydCBzeXMKLSBpbXBvcnQgZGJ1cwotZGlmZiAtLWdpdCBhL3Rlc3QvdGVzdC1zcy1jb250cm9sLWNiIGIvdGVzdC90ZXN0LXNzLWNvbnRyb2wtY2IKLWluZGV4IGRkYWU2ZDMuLjg2YmFjOWIgMTAwNzU1Ci0tLS0gYS90ZXN0L3Rlc3Qtc3MtY29udHJvbC1jYgotKysrIGIvdGVzdC90ZXN0LXNzLWNvbnRyb2wtY2IKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vcHl0aG9uMwotKyMhL3Vzci9iaW4vcHl0aG9uCi0gCi0gZnJvbSBnaS5yZXBvc2l0b3J5IGltcG9ydCBHTGliCi0gCi1kaWZmIC0tZ2l0IGEvdGVzdC90ZXN0LXNzLWNvbnRyb2wtY2YgYi90ZXN0L3Rlc3Qtc3MtY29udHJvbC1jZgotaW5kZXggMDk1ZWI1ZC4uZDMwYmY0ZiAxMDA3NTUKLS0tLSBhL3Rlc3QvdGVzdC1zcy1jb250cm9sLWNmCi0rKysgYi90ZXN0L3Rlc3Qtc3MtY29udHJvbC1jZgotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9weXRob24zCi0rIyEvdXNyL2Jpbi9weXRob24KLSAKLSBmcm9tIGdpLnJlcG9zaXRvcnkgaW1wb3J0IEdMaWIKLSAKLWRpZmYgLS1naXQgYS90ZXN0L3Rlc3Qtc3MtY29udHJvbC1jcyBiL3Rlc3QvdGVzdC1zcy1jb250cm9sLWNzCi1pbmRleCA4MTgwNDc0Li5lMGVkMWQxIDEwMDc1NQotLS0tIGEvdGVzdC90ZXN0LXNzLWNvbnRyb2wtY3MKLSsrKyBiL3Rlc3QvdGVzdC1zcy1jb250cm9sLWNzCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL3B5dGhvbjMKLSsjIS91c3IvYmluL3B5dGhvbgotIAotIGZyb20gZ2kucmVwb3NpdG9yeSBpbXBvcnQgR0xpYgotIAotZGlmZiAtLWdpdCBhL3Rlc3QvdGVzdC1zdGstbWVudSBiL3Rlc3QvdGVzdC1zdGstbWVudQotaW5kZXggMGNmOGZhMi4uYWMwYTViZCAxMDA3NTUKLS0tLSBhL3Rlc3QvdGVzdC1zdGstbWVudQotKysrIGIvdGVzdC90ZXN0LXN0ay1tZW51Ci1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL3B5dGhvbjMKLSsjIS91c3IvYmluL3B5dGhvbgotIAotIGZyb20gZ2kucmVwb3NpdG9yeSBpbXBvcnQgR0xpYgotIAotQEAgLTU4LDcgKzU4LDcgQEAgY2xhc3MgU3RrQWdlbnQoZGJ1cy5zZXJ2aWNlLk9iamVjdCk6Ci0gCQkJaW5kZXggKz0gMQotIAotIAkJcHJpbnQoIlxuRGVmYXVsdDogJWQiICUgKGRlZmF1bHQpKQotLQkJc2VsZWN0ID0gaW5wdXQoIkVudGVyIFNlbGVjdGlvbiAodCwgYik6IikKLSsJCXNlbGVjdCA9IHJhd19pbnB1dCgiRW50ZXIgU2VsZWN0aW9uICh0LCBiKToiKQotIAotIAkJaWYgc2VsZWN0ID09ICdiJzoKLSAJCQlyYWlzZSBHb0JhY2soIlVzZXIgd2lzaGVzIHRvIGdvIGJhY2siKQotQEAgLTc1LDcgKzc1LDcgQEAgY2xhc3MgU3RrQWdlbnQoZGJ1cy5zZXJ2aWNlLk9iamVjdCk6Ci0gCQlwcmludCgiRGlzcGxheVRleHQgKCVzKSIgJSAodGl0bGUpKQotIAkJcHJpbnQoIkljb246ICglZCkiICUgKGludChpY29uKSkpCi0gCQlwcmludCgiVXJnZW50OiAoJWQpIiAlICh1cmdlbnQpKQotLQkJa2V5ID0gaW5wdXQoIlByZXNzIHJldHVybiB0byBjbGVhciAoJ3QnIHRlcm1pbmF0ZXMsICIKLSsJCWtleSA9IHJhd19pbnB1dCgiUHJlc3MgcmV0dXJuIHRvIGNsZWFyICgndCcgdGVybWluYXRlcywgIgotIAkJCQkJCSInYicgZ29lcyBiYWNrLCAnbicgYnVzeSwgIgotIAkJCQkJCSIndycgcmV0dXJuIGFuZCB3YWl0KToiKQotIAotQEAgLTEwOCw3ICsxMDgsNyBAQCBjbGFzcyBTdGtBZ2VudChkYnVzLnNlcnZpY2UuT2JqZWN0KToKLSAJCXByaW50KCJIaWRlIHR5cGluZzogKCVzKSIgJSAoaGlkZV90eXBpbmcpKQotIAkJcHJpbnQoIkVudGVyIGNoYXJhY3RlcnMsIG1pbjogJWQsIG1heDogJWQ6IiAlIChtaW5fY2hhcnMsCi0gCQkJCQkJCQltYXhfY2hhcnMpKQotLQkJdXNlcmluID0gaW5wdXQoIiIpCi0rCQl1c2VyaW4gPSByYXdfaW5wdXQoIiIpCi0gCi0gCQlyZXR1cm4gdXNlcmluCi0gCi1AQCAtMTIyLDcgKzEyMiw3IEBAIGNsYXNzIFN0a0FnZW50KGRidXMuc2VydmljZS5PYmplY3QpOgotIAkJcHJpbnQoIkhpZGUgdHlwaW5nOiAoJXMpIiAlIChoaWRlX3R5cGluZykpCi0gCQlwcmludCgiRW50ZXIgZGlnaXRzLCBtaW46ICVkLCBtYXg6ICVkOiIgJSAobWluX2NoYXJzLAotIAkJCQkJCQkJbWF4X2NoYXJzKSkKLS0JCXVzZXJpbiA9IGlucHV0KCIndCcgdGVybWluYXRlcywgJ2InIGdvZXMgYmFjazoiKQotKwkJdXNlcmluID0gcmF3X2lucHV0KCIndCcgdGVybWluYXRlcywgJ2InIGdvZXMgYmFjazoiKQotIAotIAkJaWYgdXNlcmluID09ICdiJzoKLSAJCQlyYWlzZSBHb0JhY2soIlVzZXIgd2lzaGVzIHRvIGdvIGJhY2siKQotQEAgLTEzNiw3ICsxMzYsNyBAQCBjbGFzcyBTdGtBZ2VudChkYnVzLnNlcnZpY2UuT2JqZWN0KToKLSAJZGVmIFJlcXVlc3RLZXkoc2VsZiwgdGl0bGUsIGljb24pOgotIAkJcHJpbnQoIlRpdGxlOiAoJXMpIiAlICh0aXRsZSkpCi0gCQlwcmludCgiSWNvbjogKCVkKSIgJSAoaW50KGljb24pKSkKLS0JCWtleSA9IGlucHV0KCJFbnRlciBLZXkgKHQsIGIpOiIpCi0rCQlrZXkgPSByYXdfaW5wdXQoIkVudGVyIEtleSAodCwgYik6IikKLSAKLSAJCWlmIGtleSA9PSAnYic6Ci0gCQkJcmFpc2UgR29CYWNrKCJVc2VyIHdpc2hlcyB0byBnbyBiYWNrIikKLUBAIC0xNTAsNyArMTUwLDcgQEAgY2xhc3MgU3RrQWdlbnQoZGJ1cy5zZXJ2aWNlLk9iamVjdCk6Ci0gCWRlZiBSZXF1ZXN0RGlnaXQoc2VsZiwgdGl0bGUsIGljb24pOgotIAkJcHJpbnQoIlRpdGxlOiAoJXMpIiAlICh0aXRsZSkpCi0gCQlwcmludCgiSWNvbjogKCVkKSIgJSAoaW50KGljb24pKSkKLS0JCWtleSA9IGlucHV0KCJFbnRlciBEaWdpdCAodCwgYik6IikKLSsJCWtleSA9IHJhd19pbnB1dCgiRW50ZXIgRGlnaXQgKHQsIGIpOiIpCi0gCi0gCQlpZiBrZXkgPT0gJ2InOgotIAkJCXJhaXNlIEdvQmFjaygiVXNlciB3aXNoZXMgdG8gZ28gYmFjayIpCi1AQCAtMTY0LDcgKzE2NCw3IEBAIGNsYXNzIFN0a0FnZW50KGRidXMuc2VydmljZS5PYmplY3QpOgotIAlkZWYgUmVxdWVzdFF1aWNrRGlnaXQoc2VsZiwgdGl0bGUsIGljb24pOgotIAkJcHJpbnQoIlRpdGxlOiAoJXMpIiAlICh0aXRsZSkpCi0gCQlwcmludCgiSWNvbjogKCVkKSIgJSAoaW50KGljb24pKSkKLS0JCWtleSA9IGlucHV0KCJRdWljayBkaWdpdCAoMC05LCAqLCAjLCB0LCBiKToiKQotKwkJa2V5ID0gcmF3X2lucHV0KCJRdWljayBkaWdpdCAoMC05LCAqLCAjLCB0LCBiKToiKQotIAotIAkJaWYga2V5ID09ICdiJzoKLSAJCQlyYWlzZSBHb0JhY2soIlVzZXIgd2lzaGVzIHRvIGdvIGJhY2siKQotQEAgLTE3OCw3ICsxNzgsNyBAQCBjbGFzcyBTdGtBZ2VudChkYnVzLnNlcnZpY2UuT2JqZWN0KToKLSAJZGVmIFJlcXVlc3RDb25maXJtYXRpb24oc2VsZiwgdGl0bGUsIGljb24pOgotIAkJcHJpbnQoIlRpdGxlOiAoJXMpIiAlICh0aXRsZSkpCi0gCQlwcmludCgiSWNvbjogKCVkKSIgJSAoaW50KGljb24pKSkKLS0JCWtleSA9IGlucHV0KCJFbnRlciBDb25maXJtYXRpb24gKHQsIGIsIHksIG4pOiIpCi0rCQlrZXkgPSByYXdfaW5wdXQoIkVudGVyIENvbmZpcm1hdGlvbiAodCwgYiwgeSwgbik6IikKLSAKLSAJCWlmIGtleSA9PSAnYic6Ci0gCQkJcmFpc2UgR29CYWNrKCJVc2VyIHdpc2hlcyB0byBnbyBiYWNrIikKLUBAIC0xOTQsNyArMTk0LDcgQEAgY2xhc3MgU3RrQWdlbnQoZGJ1cy5zZXJ2aWNlLk9iamVjdCk6Ci0gCWRlZiBDb25maXJtQ2FsbFNldHVwKHNlbGYsIGluZm8sIGljb24pOgotIAkJcHJpbnQoIkluZm9ybWF0aW9uOiAoJXMpIiAlIChpbmZvKSkKLSAJCXByaW50KCJJY29uOiAoJWQpIiAlIChpbnQoaWNvbikpKQotLQkJa2V5ID0gaW5wdXQoIkVudGVyIENvbmZpcm1hdGlvbiAodCwgeSwgbik6IikKLSsJCWtleSA9IHJhd19pbnB1dCgiRW50ZXIgQ29uZmlybWF0aW9uICh0LCB5LCBuKToiKQotIAotIAkJaWYga2V5ID09ICd0JzoKLSAJCQlyYWlzZSBFbmRTZXNzaW9uKCJVc2VyIHdpc2hlcyB0byB0ZXJtaW5hdGUgc2Vzc2lvbiIpCi1AQCAtMjA5LDcgKzIwOSw3IEBAIGNsYXNzIFN0a0FnZW50KGRidXMuc2VydmljZS5PYmplY3QpOgotIAkJcHJpbnQoIkluZm9ybWF0aW9uOiAoJXMpIiAlIChpbmZvKSkKLSAJCXByaW50KCJJY29uOiAoJWQpIiAlIChpbnQoaWNvbikpKQotIAkJcHJpbnQoIlVSTCAoJXMpIiAlICh1cmwpKQotLQkJa2V5ID0gaW5wdXQoIkVudGVyIENvbmZpcm1hdGlvbiAoeSwgbik6IikKLSsJCWtleSA9IHJhd19pbnB1dCgiRW50ZXIgQ29uZmlybWF0aW9uICh5LCBuKToiKQotIAotIAkJaWYga2V5ID09ICd5JzoKLSAJCQlyZXR1cm4gVHJ1ZQotQEAgLTIzMiw3ICsyMzIsNyBAQCBjbGFzcyBTdGtBZ2VudChkYnVzLnNlcnZpY2UuT2JqZWN0KToKLSAJCXNpZ25hbC5hbGFybSg1KQotIAotIAkJdHJ5OgotLQkJCWtleSA9IGlucHV0KCJQcmVzcyByZXR1cm4gdG8gZW5kIGJlZm9yZSBlbmQgb2YiCi0rCQkJa2V5ID0gcmF3X2lucHV0KCJQcmVzcyByZXR1cm4gdG8gZW5kIGJlZm9yZSBlbmQgb2YiCi0gCQkJCQkJCSAiIHNpbmdsZSB0b25lICh0KToiKQotIAkJCXNpZ25hbC5hbGFybSgwKQotIAotQEAgLTI1MCw3ICsyNTAsNyBAQCBjbGFzcyBTdGtBZ2VudChkYnVzLnNlcnZpY2UuT2JqZWN0KToKLSAJCXByaW50KCJMb29wVG9uZTogJXMiICUgKHRvbmUpKQotIAkJcHJpbnQoIlRleHQ6ICVzIiAlICh0ZXh0KSkKLSAJCXByaW50KCJJY29uOiAlZCIgJSAoaW50KGljb24pKSkKLS0JCWtleSA9IGlucHV0KCJQcmVzcyByZXR1cm4gdG8gZW5kIGJlZm9yZSB0aW1lb3V0ICIKLSsJCWtleSA9IHJhd19pbnB1dCgiUHJlc3MgcmV0dXJuIHRvIGVuZCBiZWZvcmUgdGltZW91dCAiCi0gCQkJCSIoJ3QnIHRlcm1pbmF0ZXMsICd3JyByZXR1cm4gYW5kIHdhaXQpOiIpCi0gCi0gCQlpZiBrZXkgPT0gJ3cnOgotQEAgLTI3OSw3ICsyNzksNyBAQCBjbGFzcyBTdGtBZ2VudChkYnVzLnNlcnZpY2UuT2JqZWN0KToKLSAJZGVmIERpc3BsYXlBY3Rpb24oc2VsZiwgdGV4dCwgaWNvbik6Ci0gCQlwcmludCgiVGV4dDogKCVzKSIgJSAodGV4dCkpCi0gCQlwcmludCgiSWNvbjogKCVkKSIgJSAoaW50KGljb24pKSkKLS0JCWtleSA9IGlucHV0KCJQcmVzcyAndCcgdG8gdGVybWluYXRlIHRoZSBzZXNzaW9uICIpCi0rCQlrZXkgPSByYXdfaW5wdXQoIlByZXNzICd0JyB0byB0ZXJtaW5hdGUgdGhlIHNlc3Npb24gIikKLSAKLSAJCWlmIGtleSA9PSAndCc6Ci0gCQkJcmFpc2UgRW5kU2Vzc2lvbigiVXNlciB3aXNoZXMgdG8gdGVybWluYXRlIHNlc3Npb24iKQotQEAgLTI4OSw3ICsyODksNyBAQCBjbGFzcyBTdGtBZ2VudChkYnVzLnNlcnZpY2UuT2JqZWN0KToKLSAJZGVmIENvbmZpcm1PcGVuQ2hhbm5lbChzZWxmLCBpbmZvLCBpY29uKToKLSAJCXByaW50KCJPcGVuIGNoYW5uZWwgY29uZmlybWF0aW9uOiAoJXMpIiAlIChpbmZvKSkKLSAJCXByaW50KCJJY29uOiAoJWQpIiAlIChpbnQoaWNvbikpKQotLQkJa2V5ID0gaW5wdXQoIkVudGVyIENvbmZpcm1hdGlvbiAodCwgeSwgbik6IikKLSsJCWtleSA9IHJhd19pbnB1dCgiRW50ZXIgQ29uZmlybWF0aW9uICh0LCB5LCBuKToiKQotIAotIAkJaWYga2V5ID09ICd0JzoKLSAJCQlyYWlzZSBFbmRTZXNzaW9uKCJVc2VyIHdpc2hlcyB0byB0ZXJtaW5hdGUgc2Vzc2lvbiIpCi1AQCAtMjk5LDcgKzI5OSw3IEBAIGNsYXNzIFN0a0FnZW50KGRidXMuc2VydmljZS5PYmplY3QpOgotIAkJCXJldHVybiBGYWxzZQotIAotIF9kYnVzMnB5ID0gewotLQlkYnVzLlN0cmluZyA6IHN0ciwKLSsJZGJ1cy5TdHJpbmcgOiB1bmljb2RlLAotIAlkYnVzLlVJbnQzMiA6IGludCwKLSAJZGJ1cy5JbnQzMiA6IGludCwKLSAJZGJ1cy5JbnQxNiA6IGludCwKLUBAIC0zOTYsNyArMzk2LDcgQEAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAJCWV4Y2VwdDoKLSAJCQlwYXNzCi0gCi0tCQlzZWxlY3QgPSBpbnQoaW5wdXQoIkVudGVyIFNlbGVjdGlvbjogIikpCi0rCQlzZWxlY3QgPSBpbnQocmF3X2lucHV0KCJFbnRlciBTZWxlY3Rpb246ICIpKQotIAkJc3RrLlNlbGVjdEl0ZW0oc2VsZWN0LCBwYXRoKQotIAllbGlmIG1vZGUgPT0gJ2FnZW50JzoKLSAJCXBhdGggPSAiL3Rlc3QvYWdlbnQiCi1kaWZmIC0tZ2l0IGEvdGVzdC91bmxvY2stcGluIGIvdGVzdC91bmxvY2stcGluCi1pbmRleCA2MWY0NzY1Li4xMGI2NjI2IDEwMDc1NQotLS0tIGEvdGVzdC91bmxvY2stcGluCi0rKysgYi90ZXN0L3VubG9jay1waW4KLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vcHl0aG9uMwotKyMhL3Vzci9iaW4vcHl0aG9uCi0gCi0gaW1wb3J0IGRidXMKLSBpbXBvcnQgc3lzCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29mb25vL29mb25vXzEuMTcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vZm9uby9vZm9ub18xLjE3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NDdmOWQ3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29mb25vL29mb25vXzEuMTcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1yZXF1aXJlIG9mb25vLmluYwotCi1TUkNfVVJJICA9ICJcCi0gICR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvbmV0d29yay8ke0JQTn0vJHtCUH0udGFyLnh6IFwKLSAgZmlsZTovL29mb25vIFwKLSAgZmlsZTovL1JldmVydC10ZXN0LUNvbnZlcnQtdG8tUHl0aG9uLTMucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gImQyODBiMWQyNjdiYTViZjM5MWQyYTg5OGZlYTdjNzQ4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNiZjIwZjA3ZmQxNTI1M2M2ODJiMjNjMTc4NmQ1MTdmNTA1YzM2ODhmN2M0ZWE5M2RhNzc3ZTE1MjNiODk2MzUiCi0KLUNGTEFHU19hcHBlbmRfbGliYy11Y2xpYmMgPSAiIC1EX0dOVV9TT1VSQ0UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vZm9uby9vZm9ub18xLjE4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2Zvbm8vb2Zvbm9fMS4xOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDcwNzMxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2Zvbm8vb2Zvbm9fMS4xOC5iYgpAQCAtMCwwICsxLDEwIEBACityZXF1aXJlIG9mb25vLmluYworCitTUkNfVVJJICA9ICJcCisgICR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvbmV0d29yay8ke0JQTn0vJHtCUH0udGFyLnh6IFwKKyAgZmlsZTovL29mb25vIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICIwYTZiMzdjOGFjZTg5MWNiMmE3Y2E1ZDEyMTA0M2EwYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1M2NkYmYzNDI5MTNmNDZiY2U0ODI3MjQxYzYwZTI0MjU1YTNkNDNhOTQ5NDVlZGY3NzQ4MmFlNWIzMTJkNTFmIgorCitDRkxBR1NfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAtRF9HTlVfU09VUkNFIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL0NWRS0yMDE2LTE5MDdfMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9DVkUtMjAxNi0xOTA3XzIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmYWM2OWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL0NWRS0yMDE2LTE5MDdfMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLUZyb20gZjk4YTA5Y2FjZmY3YmFhZDg3NDhjOWFhMjE3YWZkMTU1YTRkNDkzZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJtbWNjQG9wZW5ic2Qub3JnIiA8bW1jY0BvcGVuYnNkLm9yZz4KLURhdGU6IFR1ZSwgMjAgT2N0IDIwMTUgMDM6MzY6MzUgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gdXBzdHJlYW0gY29tbWl0Ci0KLVJlcGxhY2UgYSBmdW5jdGlvbi1sb2NhbCBhbGxvY2F0aW9uIHdpdGggc3RhY2sgbWVtb3J5LgotCi1vayBkam1ACi0KLVVwc3RyZWFtLUlEOiBjMDlmYmJhYjYzNzA1M2EyYWI5ZjMzY2ExNDJiNGUyMGE0YzVhMTdlCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE2LTE5MDcKLQotW1lPQ1RPICM4OTM1XQotCi1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gY2xpZW50bG9vcC5jIHwgOSArKy0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY2xpZW50bG9vcC5jIGIvY2xpZW50bG9vcC5jCi1pbmRleCA4N2NlYjNkLi4xZTA1Y2JhIDEwMDY0NAotLS0tIGEvY2xpZW50bG9vcC5jCi0rKysgYi9jbGllbnRsb29wLmMKLUBAIC0xLDQgKzEsNCBAQAotLS8qICRPcGVuQlNEOiBjbGllbnRsb29wLmMsdiAxLjI3NSAyMDE1LzA3LzEwIDA2OjIxOjUzIG1hcmt1cyBFeHAgJCAqLwotKy8qICRPcGVuQlNEOiBjbGllbnRsb29wLmMsdiAxLjI3NiAyMDE1LzEwLzIwIDAzOjM2OjM1IG1tY2MgRXhwICQgKi8KLSAvKgotICAqIEF1dGhvcjogVGF0dSBZbG9uZW4gPHlsb0Bjcy5odXQuZmk+Ci0gICogQ29weXJpZ2h0IChjKSAxOTk1IFRhdHUgWWxvbmVuIDx5bG9AY3MuaHV0LmZpPiwgRXNwb28sIEZpbmxhbmQKLUBAIC0zMTEsMTEgKzMxMSwxMCBAQCBjbGllbnRfeDExX2dldF9wcm90byhjb25zdCBjaGFyICpkaXNwbGF5LCBjb25zdCBjaGFyICp4YXV0aF9wYXRoLAotIAlzdGF0aWMgY2hhciBwcm90b1s1MTJdLCBkYXRhWzUxMl07Ci0gCUZJTEUgKmY7Ci0gCWludCBnb3RfZGF0YSA9IDAsIGdlbmVyYXRlZCA9IDAsIGRvX3VubGluayA9IDAsIGk7Ci0tCWNoYXIgKnhhdXRoZGlyLCAqeGF1dGhmaWxlOwotKwljaGFyIHhhdXRoZGlyW1BBVEhfTUFYXSA9ICIiLCB4YXV0aGZpbGVbUEFUSF9NQVhdID0gIiI7Ci0gCXN0cnVjdCBzdGF0IHN0OwotIAl1X2ludCBub3csIHgxMV90aW1lb3V0X3JlYWw7Ci0gCi0tCXhhdXRoZGlyID0geGF1dGhmaWxlID0gTlVMTDsKLSAJKl9wcm90byA9IHByb3RvOwotIAkqX2RhdGEgPSBkYXRhOwotIAlwcm90b1swXSA9IGRhdGFbMF0gPSAnXDAnOwotQEAgLTM0Myw4ICszNDIsNiBAQCBjbGllbnRfeDExX2dldF9wcm90byhjb25zdCBjaGFyICpkaXNwbGF5LCBjb25zdCBjaGFyICp4YXV0aF9wYXRoLAotIAkJCWRpc3BsYXkgPSB4ZGlzcGxheTsKLSAJCX0KLSAJCWlmICh0cnVzdGVkID09IDApIHsKLS0JCQl4YXV0aGRpciA9IHhtYWxsb2MoUEFUSF9NQVgpOwotLQkJCXhhdXRoZmlsZSA9IHhtYWxsb2MoUEFUSF9NQVgpOwotIAkJCW1rdGVtcF9wcm90byh4YXV0aGRpciwgUEFUSF9NQVgpOwotIAkJCS8qCi0gCQkJICogVGhlIGF1dGhlbnRpY2F0aW9uIGNvb2tpZSBzaG91bGQgYnJpZWZseSBvdXRsaXZlCi1AQCAtNDA3LDggKzQwNCw2IEBAIGNsaWVudF94MTFfZ2V0X3Byb3RvKGNvbnN0IGNoYXIgKmRpc3BsYXksIGNvbnN0IGNoYXIgKnhhdXRoX3BhdGgsCi0gCQl1bmxpbmsoeGF1dGhmaWxlKTsKLSAJCXJtZGlyKHhhdXRoZGlyKTsKLSAJfQotLQlmcmVlKHhhdXRoZGlyKTsKLS0JZnJlZSh4YXV0aGZpbGUpOwotIAotIAkvKgotIAkgKiBJZiB3ZSBkaWRuJ3QgZ2V0IGF1dGhlbnRpY2F0aW9uIGRhdGEsIGp1c3QgbWFrZSB1cCBzb21lCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9DVkUtMjAxNi0xOTA3XzMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvQ1ZFLTIwMTYtMTkwN18zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZGZjNTFhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9DVkUtMjAxNi0xOTA3XzMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMjkgKzAsMCBAQAotRnJvbSBlZDRjZTgyZGJmYThhM2EzYzhlYTZmYTBkYjExM2M3MWUyMzQ0MTZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogImRqbUBvcGVuYnNkLm9yZyIgPGRqbUBvcGVuYnNkLm9yZz4KLURhdGU6IFdlZCwgMTMgSmFuIDIwMTYgMjM6MDQ6NDcgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gdXBzdHJlYW0gY29tbWl0Ci0KLWVsaW1pbmF0ZSBmYWxsYmFjayBmcm9tIHVudHJ1c3RlZCBYMTEgZm9yd2FyZGluZyB0byB0cnVzdGVkCi0gZm9yd2FyZGluZyB3aGVuIHRoZSBYIHNlcnZlciBkaXNhYmxlcyB0aGUgU0VDVVJJVFkgZXh0ZW5zaW9uOyBSZXBvcnRlZCBieQotIFRob21hcyBIb2dlcjsgb2sgZGVyYWFkdEAKLQotVXBzdHJlYW0tSUQ6IGY3NjE5NWJkMjA2NDYxNWE2M2VmOTY3NGEwZTQwOTZiMDcxM2Y5MzgKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTYtMTkwNwotCi1bWU9DVE8gIzg5MzVdCi0KLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBjbGllbnRsb29wLmMgfCAxMTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBjbGllbnRsb29wLmggfCAgIDQgKy0tCi0gbXV4LmMgICAgICAgIHwgIDIyICsrKysrKy0tLS0tLQotIHNzaC5jICAgICAgICB8ICAyMyArKysrKy0tLS0tLS0KLSA0IGZpbGVzIGNoYW5nZWQsIDkzIGluc2VydGlvbnMoKyksIDcwIGRlbGV0aW9ucygtKQotCi1JbmRleDogb3BlbnNzaC03LjFwMi9jbGllbnRsb29wLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcGVuc3NoLTcuMXAyLm9yaWcvY2xpZW50bG9vcC5jCi0rKysgb3BlbnNzaC03LjFwMi9jbGllbnRsb29wLmMKLUBAIC0xLDQgKzEsNCBAQAotLS8qICRPcGVuQlNEOiBjbGllbnRsb29wLmMsdiAxLjI3NiAyMDE1LzEwLzIwIDAzOjM2OjM1IG1tY2MgRXhwICQgKi8KLSsvKiAkT3BlbkJTRDogY2xpZW50bG9vcC5jLHYgMS4yNzkgMjAxNi8wMS8xMyAyMzowNDo0NyBkam0gRXhwICQgKi8KLSAvKgotICAqIEF1dGhvcjogVGF0dSBZbG9uZW4gPHlsb0Bjcy5odXQuZmk+Ci0gICogQ29weXJpZ2h0IChjKSAxOTk1IFRhdHUgWWxvbmVuIDx5bG9AY3MuaHV0LmZpPiwgRXNwb28sIEZpbmxhbmQKLUBAIC0yODgsNiArMjg4LDkgQEAgY2xpZW50X3gxMV9kaXNwbGF5X3ZhbGlkKGNvbnN0IGNoYXIgKmRpcwotIHsKLSAJc2l6ZV90IGksIGRsZW47Ci0gCi0rCWlmIChkaXNwbGF5ID09IE5VTEwpCi0rCQlyZXR1cm4gMDsKLSsKLSAJZGxlbiA9IHN0cmxlbihkaXNwbGF5KTsKLSAJZm9yIChpID0gMDsgaSA8IGRsZW47IGkrKykgewotIAkJaWYgKCFpc2FsbnVtKCh1X2NoYXIpZGlzcGxheVtpXSkgJiYKLUBAIC0zMDEsMzQgKzMwNCwzMyBAQCBjbGllbnRfeDExX2Rpc3BsYXlfdmFsaWQoY29uc3QgY2hhciAqZGlzCi0gCi0gI2RlZmluZSBTU0hfWDExX1BST1RPCQkiTUlULU1BR0lDLUNPT0tJRS0xIgotICNkZWZpbmUgWDExX1RJTUVPVVRfU0xBQ0sJNjAKLS12b2lkCi0raW50Ci0gY2xpZW50X3gxMV9nZXRfcHJvdG8oY29uc3QgY2hhciAqZGlzcGxheSwgY29uc3QgY2hhciAqeGF1dGhfcGF0aCwKLSAgICAgdV9pbnQgdHJ1c3RlZCwgdV9pbnQgdGltZW91dCwgY2hhciAqKl9wcm90bywgY2hhciAqKl9kYXRhKQotIHsKLS0JY2hhciBjbWRbMTAyNF07Ci0tCWNoYXIgbGluZVs1MTJdOwotLQljaGFyIHhkaXNwbGF5WzUxMl07Ci0rCWNoYXIgY21kWzEwMjRdLCBsaW5lWzUxMl0sIHhkaXNwbGF5WzUxMl07Ci0rCWNoYXIgeGF1dGhmaWxlW1BBVEhfTUFYXSwgeGF1dGhkaXJbUEFUSF9NQVhdOwotIAlzdGF0aWMgY2hhciBwcm90b1s1MTJdLCBkYXRhWzUxMl07Ci0gCUZJTEUgKmY7Ci0tCWludCBnb3RfZGF0YSA9IDAsIGdlbmVyYXRlZCA9IDAsIGRvX3VubGluayA9IDAsIGk7Ci0tCWNoYXIgeGF1dGhkaXJbUEFUSF9NQVhdID0gIiIsIHhhdXRoZmlsZVtQQVRIX01BWF0gPSAiIjsKLSsJaW50IGdvdF9kYXRhID0gMCwgZ2VuZXJhdGVkID0gMCwgZG9fdW5saW5rID0gMCwgaSwgcjsKLSAJc3RydWN0IHN0YXQgc3Q7Ci0gCXVfaW50IG5vdywgeDExX3RpbWVvdXRfcmVhbDsKLSAKLSAJKl9wcm90byA9IHByb3RvOwotIAkqX2RhdGEgPSBkYXRhOwotLQlwcm90b1swXSA9IGRhdGFbMF0gPSAnXDAnOwotKwlwcm90b1swXSA9IGRhdGFbMF0gPSB4YXV0aGZpbGVbMF0gPSB4YXV0aGRpclswXSA9ICdcMCc7Ci0gCi0tCWlmICh4YXV0aF9wYXRoID09IE5VTEwgfHwoc3RhdCh4YXV0aF9wYXRoLCAmc3QpID09IC0xKSkgewotLQkJZGVidWcoIk5vIHhhdXRoIHByb2dyYW0uIik7Ci0tCX0gZWxzZSBpZiAoIWNsaWVudF94MTFfZGlzcGxheV92YWxpZChkaXNwbGF5KSkgewotLQkJbG9naXQoIkRJU1BMQVkgJyVzJyBpbnZhbGlkLCBmYWxsaW5nIGJhY2sgdG8gZmFrZSB4YXV0aCBkYXRhIiwKLSsJaWYgKCFjbGllbnRfeDExX2Rpc3BsYXlfdmFsaWQoZGlzcGxheSkpIHsKLSsJCWxvZ2l0KCJESVNQTEFZIFwiJXNcIiBpbnZhbGlkOyBkaXNhYmxpbmcgWDExIGZvcndhcmRpbmciLAotIAkJICAgIGRpc3BsYXkpOwotLQl9IGVsc2UgewotLQkJaWYgKGRpc3BsYXkgPT0gTlVMTCkgewotLQkJCWRlYnVnKCJ4MTFfZ2V0X3Byb3RvOiBESVNQTEFZIG5vdCBzZXQiKTsKLS0JCQlyZXR1cm47Ci0tCQl9Ci0rCQlyZXR1cm4gLTE7Ci0rCX0KLSsJaWYgKHhhdXRoX3BhdGggIT0gTlVMTCAmJiBzdGF0KHhhdXRoX3BhdGgsICZzdCkgPT0gLTEpIHsKLSsJCWRlYnVnKCJObyB4YXV0aCBwcm9ncmFtLiIpOwotKwkJeGF1dGhfcGF0aCA9IE5VTEw7Ci0rCX0KLSsKLSsJaWYgKHhhdXRoX3BhdGggIT0gTlVMTCkgewotIAkJLyoKLSAJCSAqIEhhbmRsZSBGYW1pbHlMb2NhbCBjYXNlIHdoZXJlICRESVNQTEFZIGRvZXMKLSAJCSAqIG5vdCBtYXRjaCBhbiBhdXRob3JpemF0aW9uIGVudHJ5LiAgRm9yIHRoaXMgd2UKLUBAIC0zMzcsNDMgKzMzOSw2MCBAQCBjbGllbnRfeDExX2dldF9wcm90byhjb25zdCBjaGFyICpkaXNwbGF5Ci0gCQkgKiAgICAgIGlzIG5vdCBwZXJmZWN0LgotIAkJICovCi0gCQlpZiAoc3RybmNtcChkaXNwbGF5LCAibG9jYWxob3N0OiIsIDEwKSA9PSAwKSB7Ci0tCQkJc25wcmludGYoeGRpc3BsYXksIHNpemVvZih4ZGlzcGxheSksICJ1bml4OiVzIiwKLS0JCQkgICAgZGlzcGxheSArIDEwKTsKLSsJCQlpZiAoKHIgPSBzbnByaW50Zih4ZGlzcGxheSwgc2l6ZW9mKHhkaXNwbGF5KSwgInVuaXg6JXMiLAotKwkJCSAgICBkaXNwbGF5ICsgMTApKSA8IDAgfHwKLSsJCQkgICAgKHNpemVfdClyID49IHNpemVvZih4ZGlzcGxheSkpIHsKLSsJCQkJZXJyb3IoIiVzOiBkaXNwbGF5IG5hbWUgdG9vIGxvbmciLCBfX2Z1bmNfXyk7Ci0rCQkJCXJldHVybiAtMTsKLSsJCQl9Ci0gCQkJZGlzcGxheSA9IHhkaXNwbGF5OwotIAkJfQotIAkJaWYgKHRydXN0ZWQgPT0gMCkgewotLQkJCW1rdGVtcF9wcm90byh4YXV0aGRpciwgUEFUSF9NQVgpOwotIAkJCS8qCi0rCQkJICogR2VuZXJhdGUgYW4gdW50cnVzdGVkIFgxMSBhdXRoIGNvb2tpZS4KLSsJCQkgKgotIAkJCSAqIFRoZSBhdXRoZW50aWNhdGlvbiBjb29raWUgc2hvdWxkIGJyaWVmbHkgb3V0bGl2ZQotIAkJCSAqIHNzaCdzIHdpbGxpbmduZXNzIHRvIGZvcndhcmQgWDExIGNvbm5lY3Rpb25zIHRvCi0gCQkJICogYXZvaWQgbmFzdHkgZmFpbC1vcGVuIGJlaGF2aW91ciBpbiB0aGUgWCBzZXJ2ZXIuCi0gCQkJICovCi0rCQkJbWt0ZW1wX3Byb3RvKHhhdXRoZGlyLCBzaXplb2YoeGF1dGhkaXIpKTsKLSsJCQlpZiAobWtkdGVtcCh4YXV0aGRpcikgPT0gTlVMTCkgewotKwkJCQllcnJvcigiJXM6IG1rZHRlbXA6ICVzIiwKLSsJCQkJICAgIF9fZnVuY19fLCBzdHJlcnJvcihlcnJubykpOwotKwkJCQlyZXR1cm4gLTE7Ci0rCQkJfQotKwkJCWRvX3VubGluayA9IDE7Ci0rCQkJaWYgKChyID0gc25wcmludGYoeGF1dGhmaWxlLCBzaXplb2YoeGF1dGhmaWxlKSwKLSsJCQkgICAgIiVzL3hhdXRoZmlsZSIsIHhhdXRoZGlyKSkgPCAwIHx8Ci0rCQkJICAgIChzaXplX3QpciA+PSBzaXplb2YoeGF1dGhmaWxlKSkgewotKwkJCQllcnJvcigiJXM6IHhhdXRoZmlsZSBwYXRoIHRvbyBsb25nIiwgX19mdW5jX18pOwotKwkJCQl1bmxpbmsoeGF1dGhmaWxlKTsKLSsJCQkJcm1kaXIoeGF1dGhkaXIpOwotKwkJCQlyZXR1cm4gLTE7Ci0rCQkJfQotKwotIAkJCWlmICh0aW1lb3V0ID49IFVJTlRfTUFYIC0gWDExX1RJTUVPVVRfU0xBQ0spCi0gCQkJCXgxMV90aW1lb3V0X3JlYWwgPSBVSU5UX01BWDsKLSAJCQllbHNlCi0gCQkJCXgxMV90aW1lb3V0X3JlYWwgPSB0aW1lb3V0ICsgWDExX1RJTUVPVVRfU0xBQ0s7Ci0tCQkJaWYgKG1rZHRlbXAoeGF1dGhkaXIpICE9IE5VTEwpIHsKLS0JCQkJZG9fdW5saW5rID0gMTsKLS0JCQkJc25wcmludGYoeGF1dGhmaWxlLCBQQVRIX01BWCwgIiVzL3hhdXRoZmlsZSIsCi0tCQkJCSAgICB4YXV0aGRpcik7Ci0tCQkJCXNucHJpbnRmKGNtZCwgc2l6ZW9mKGNtZCksCi0tCQkJCSAgICAiJXMgLWYgJXMgZ2VuZXJhdGUgJXMgIiBTU0hfWDExX1BST1RPCi0tCQkJCSAgICAiIHVudHJ1c3RlZCB0aW1lb3V0ICV1IDI+IiBfUEFUSF9ERVZOVUxMLAotLQkJCQkgICAgeGF1dGhfcGF0aCwgeGF1dGhmaWxlLCBkaXNwbGF5LAotLQkJCQkgICAgeDExX3RpbWVvdXRfcmVhbCk7Ci0tCQkJCWRlYnVnMigieDExX2dldF9wcm90bzogJXMiLCBjbWQpOwotLQkJCQlpZiAoeDExX3JlZnVzZV90aW1lID09IDApIHsKLS0JCQkJCW5vdyA9IG1vbm90aW1lKCkgKyAxOwotLQkJCQkJaWYgKFVJTlRfTUFYIC0gdGltZW91dCA8IG5vdykKLS0JCQkJCQl4MTFfcmVmdXNlX3RpbWUgPSBVSU5UX01BWDsKLS0JCQkJCWVsc2UKLS0JCQkJCQl4MTFfcmVmdXNlX3RpbWUgPSBub3cgKyB0aW1lb3V0OwotLQkJCQkJY2hhbm5lbF9zZXRfeDExX3JlZnVzZV90aW1lKAotLQkJCQkJICAgIHgxMV9yZWZ1c2VfdGltZSk7Ci0tCQkJCX0KLS0JCQkJaWYgKHN5c3RlbShjbWQpID09IDApCi0tCQkJCQlnZW5lcmF0ZWQgPSAxOwotKwkJCWlmICgociA9IHNucHJpbnRmKGNtZCwgc2l6ZW9mKGNtZCksCi0rCQkJICAgICIlcyAtZiAlcyBnZW5lcmF0ZSAlcyAiIFNTSF9YMTFfUFJPVE8KLSsJCQkgICAgIiB1bnRydXN0ZWQgdGltZW91dCAldSAyPiIgX1BBVEhfREVWTlVMTCwKLSsJCQkgICAgeGF1dGhfcGF0aCwgeGF1dGhmaWxlLCBkaXNwbGF5LAotKwkJCSAgICB4MTFfdGltZW91dF9yZWFsKSkgPCAwIHx8Ci0rCQkJICAgIChzaXplX3QpciA+PSBzaXplb2YoY21kKSkKLSsJCQkJZmF0YWwoIiVzOiBjbWQgdG9vIGxvbmciLCBfX2Z1bmNfXyk7Ci0rCQkJZGVidWcyKCIlczogJXMiLCBfX2Z1bmNfXywgY21kKTsKLSsJCQlpZiAoeDExX3JlZnVzZV90aW1lID09IDApIHsKLSsJCQkJbm93ID0gbW9ub3RpbWUoKSArIDE7Ci0rCQkJCWlmIChVSU5UX01BWCAtIHRpbWVvdXQgPCBub3cpCi0rCQkJCQl4MTFfcmVmdXNlX3RpbWUgPSBVSU5UX01BWDsKLSsJCQkJZWxzZQotKwkJCQkJeDExX3JlZnVzZV90aW1lID0gbm93ICsgdGltZW91dDsKLSsJCQkJY2hhbm5lbF9zZXRfeDExX3JlZnVzZV90aW1lKHgxMV9yZWZ1c2VfdGltZSk7Ci0gCQkJfQotKwkJCWlmIChzeXN0ZW0oY21kKSA9PSAwKQotKwkJCQlnZW5lcmF0ZWQgPSAxOwotIAkJfQotIAotIAkJLyoKLUBAIC0zOTUsOSArNDE0LDcgQEAgY2xpZW50X3gxMV9nZXRfcHJvdG8oY29uc3QgY2hhciAqZGlzcGxheQotIAkJCQlnb3RfZGF0YSA9IDE7Ci0gCQkJaWYgKGYpCi0gCQkJCXBjbG9zZShmKTsKLS0JCX0gZWxzZQotLQkJCWVycm9yKCJXYXJuaW5nOiB1bnRydXN0ZWQgWDExIGZvcndhcmRpbmcgc2V0dXAgZmFpbGVkOiAiCi0tCQkJICAgICJ4YXV0aCBrZXkgZGF0YSBub3QgZ2VuZXJhdGVkIik7Ci0rCQl9Ci0gCX0KLSAKLSAJaWYgKGRvX3VubGluaykgewotQEAgLTQwNSw2ICs0MjIsMTMgQEAgY2xpZW50X3gxMV9nZXRfcHJvdG8oY29uc3QgY2hhciAqZGlzcGxheQotIAkJcm1kaXIoeGF1dGhkaXIpOwotIAl9Ci0gCi0rCS8qIERvbid0IGZhbGwgYmFjayB0byBmYWtlIFgxMSBkYXRhIGZvciB1bnRydXN0ZWQgZm9yd2FyZGluZyAqLwotKwlpZiAoIXRydXN0ZWQgJiYgIWdvdF9kYXRhKSB7Ci0rCQllcnJvcigiV2FybmluZzogdW50cnVzdGVkIFgxMSBmb3J3YXJkaW5nIHNldHVwIGZhaWxlZDogIgotKwkJICAgICJ4YXV0aCBrZXkgZGF0YSBub3QgZ2VuZXJhdGVkIik7Ci0rCQlyZXR1cm4gLTE7Ci0rCX0KLSsKLSAJLyoKLSAJICogSWYgd2UgZGlkbid0IGdldCBhdXRoZW50aWNhdGlvbiBkYXRhLCBqdXN0IG1ha2UgdXAgc29tZQotIAkgKiBkYXRhLiAgVGhlIGZvcndhcmRpbmcgY29kZSB3aWxsIGNoZWNrIHRoZSB2YWxpZGl0eSBvZiB0aGUKLUBAIC00MjcsNiArNDUxLDggQEAgY2xpZW50X3gxMV9nZXRfcHJvdG8oY29uc3QgY2hhciAqZGlzcGxheQotIAkJCXJuZCA+Pj0gODsKLSAJCX0KLSAJfQotKwotKwlyZXR1cm4gMDsKLSB9Ci0gCi0gLyoKLUluZGV4OiBvcGVuc3NoLTcuMXAyL2NsaWVudGxvb3AuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG9wZW5zc2gtNy4xcDIub3JpZy9jbGllbnRsb29wLmgKLSsrKyBvcGVuc3NoLTcuMXAyL2NsaWVudGxvb3AuaAotQEAgLTEsNCArMSw0IEBACi0tLyogJE9wZW5CU0Q6IGNsaWVudGxvb3AuaCx2IDEuMzEgMjAxMy8wNi8wMiAyMzozNjoyOSBkdHVja2VyIEV4cCAkICovCi0rLyogJE9wZW5CU0Q6IGNsaWVudGxvb3AuaCx2IDEuMzIgMjAxNi8wMS8xMyAyMzowNDo0NyBkam0gRXhwICQgKi8KLSAKLSAvKgotICAqIEF1dGhvcjogVGF0dSBZbG9uZW4gPHlsb0Bjcy5odXQuZmk+Ci1AQCAtMzksNyArMzksNyBAQAotIAotIC8qIENsaWVudCBzaWRlIG1haW4gbG9vcCBmb3IgdGhlIGludGVyYWN0aXZlIHNlc3Npb24uICovCi0gaW50CSBjbGllbnRfbG9vcChpbnQsIGludCwgaW50KTsKLS12b2lkCSBjbGllbnRfeDExX2dldF9wcm90byhjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgdV9pbnQsIHVfaW50LAotK2ludAkgY2xpZW50X3gxMV9nZXRfcHJvdG8oY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHVfaW50LCB1X2ludCwKLSAJICAgIGNoYXIgKiosIGNoYXIgKiopOwotIHZvaWQJIGNsaWVudF9nbG9iYWxfcmVxdWVzdF9yZXBseV9md2QoaW50LCB1X2ludDMyX3QsIHZvaWQgKik7Ci0gdm9pZAkgY2xpZW50X3Nlc3Npb24yX3NldHVwKGludCwgaW50LCBpbnQsIGNvbnN0IGNoYXIgKiwgc3RydWN0IHRlcm1pb3MgKiwKLUluZGV4OiBvcGVuc3NoLTcuMXAyL211eC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gb3BlbnNzaC03LjFwMi5vcmlnL211eC5jCi0rKysgb3BlbnNzaC03LjFwMi9tdXguYwotQEAgLTEsNCArMSw0IEBACi0tLyogJE9wZW5CU0Q6IG11eC5jLHYgMS41NCAyMDE1LzA4LzE5IDIzOjE4OjI2IGRqbSBFeHAgJCAqLwotKy8qICRPcGVuQlNEOiBtdXguYyx2IDEuNTggMjAxNi8wMS8xMyAyMzowNDo0NyBkam0gRXhwICQgKi8KLSAvKgotICAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA4IERhbWllbiBNaWxsZXIgPGRqbUBvcGVuYnNkLm9yZz4KLSAgKgotQEAgLTEzNTQsMTYgKzEzNTQsMTggQEAgbXV4X3Nlc3Npb25fY29uZmlybShpbnQgaWQsIGludCBzdWNjZXNzLAotIAkJY2hhciAqcHJvdG8sICpkYXRhOwotIAotIAkJLyogR2V0IHJlYXNvbmFibGUgbG9jYWwgYXV0aGVudGljYXRpb24gaW5mb3JtYXRpb24uICovCi0tCQljbGllbnRfeDExX2dldF9wcm90byhkaXNwbGF5LCBvcHRpb25zLnhhdXRoX2xvY2F0aW9uLAotKwkJaWYgKGNsaWVudF94MTFfZ2V0X3Byb3RvKGRpc3BsYXksIG9wdGlvbnMueGF1dGhfbG9jYXRpb24sCi0gCQkgICAgb3B0aW9ucy5mb3J3YXJkX3gxMV90cnVzdGVkLCBvcHRpb25zLmZvcndhcmRfeDExX3RpbWVvdXQsCi0tCQkgICAgJnByb3RvLCAmZGF0YSk7Ci0tCQkvKiBSZXF1ZXN0IGZvcndhcmRpbmcgd2l0aCBhdXRoZW50aWNhdGlvbiBzcG9vZmluZy4gKi8KLS0JCWRlYnVnKCJSZXF1ZXN0aW5nIFgxMSBmb3J3YXJkaW5nIHdpdGggYXV0aGVudGljYXRpb24gIgotLQkJICAgICJzcG9vZmluZy4iKTsKLS0JCXgxMV9yZXF1ZXN0X2ZvcndhcmRpbmdfd2l0aF9zcG9vZmluZyhpZCwgZGlzcGxheSwgcHJvdG8sCi0tCQkgICAgZGF0YSwgMSk7Ci0tCQljbGllbnRfZXhwZWN0X2NvbmZpcm0oaWQsICJYMTEgZm9yd2FyZGluZyIsIENPTkZJUk1fV0FSTik7Ci0tCQkvKiBYWFggZXhpdF9vbl9mb3J3YXJkX2ZhaWx1cmUgKi8KLSsJCSAgICAmcHJvdG8sICZkYXRhKSA9PSAwKSB7Ci0rCQkJLyogUmVxdWVzdCBmb3J3YXJkaW5nIHdpdGggYXV0aGVudGljYXRpb24gc3Bvb2ZpbmcuICovCi0rCQkJZGVidWcoIlJlcXVlc3RpbmcgWDExIGZvcndhcmRpbmcgd2l0aCBhdXRoZW50aWNhdGlvbiAiCi0rCQkJICAgICJzcG9vZmluZy4iKTsKLSsJCQl4MTFfcmVxdWVzdF9mb3J3YXJkaW5nX3dpdGhfc3Bvb2ZpbmcoaWQsIGRpc3BsYXksIHByb3RvLAotKwkJCSAgICBkYXRhLCAxKTsKLSsJCQkvKiBYWFggZXhpdF9vbl9mb3J3YXJkX2ZhaWx1cmUgKi8KLSsJCQljbGllbnRfZXhwZWN0X2NvbmZpcm0oaWQsICJYMTEgZm9yd2FyZGluZyIsCi0rCQkJICAgIENPTkZJUk1fV0FSTik7Ci0rCQl9Ci0gCX0KLSAKLSAJaWYgKGNjdHgtPndhbnRfYWdlbnRfZndkICYmIG9wdGlvbnMuZm9yd2FyZF9hZ2VudCkgewotSW5kZXg6IG9wZW5zc2gtNy4xcDIvc3NoLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcGVuc3NoLTcuMXAyLm9yaWcvc3NoLmMKLSsrKyBvcGVuc3NoLTcuMXAyL3NzaC5jCi1AQCAtMSw0ICsxLDQgQEAKLS0vKiAkT3BlbkJTRDogc3NoLmMsdiAxLjQyMCAyMDE1LzA3LzMwIDAwOjAxOjM0IGRqbSBFeHAgJCAqLwotKy8qICRPcGVuQlNEOiBzc2guYyx2IDEuNDMzIDIwMTYvMDEvMTMgMjM6MDQ6NDcgZGptIEV4cCAkICovCi0gLyoKLSAgKiBBdXRob3I6IFRhdHUgWWxvbmVuIDx5bG9AY3MuaHV0LmZpPgotICAqIENvcHlyaWdodCAoYykgMTk5NSBUYXR1IFlsb25lbiA8eWxvQGNzLmh1dC5maT4sIEVzcG9vLCBGaW5sYW5kCi1AQCAtMTYwNCw2ICsxNjA0LDcgQEAgc3NoX3Nlc3Npb24odm9pZCkKLSAJc3RydWN0IHdpbnNpemUgd3M7Ci0gCWNoYXIgKmNwOwotIAljb25zdCBjaGFyICpkaXNwbGF5OwotKwljaGFyICpwcm90byA9IE5VTEwsICpkYXRhID0gTlVMTDsKLSAKLSAJLyogRW5hYmxlIGNvbXByZXNzaW9uIGlmIHJlcXVlc3RlZC4gKi8KLSAJaWYgKG9wdGlvbnMuY29tcHJlc3Npb24pIHsKLUBAIC0xNjc0LDEzICsxNjc1LDkgQEAgc3NoX3Nlc3Npb24odm9pZCkKLSAJZGlzcGxheSA9IGdldGVudigiRElTUExBWSIpOwotIAlpZiAoZGlzcGxheSA9PSBOVUxMICYmIG9wdGlvbnMuZm9yd2FyZF94MTEpCi0gCQlkZWJ1ZygiWDExIGZvcndhcmRpbmcgcmVxdWVzdGVkIGJ1dCBESVNQTEFZIG5vdCBzZXQiKTsKLS0JaWYgKG9wdGlvbnMuZm9yd2FyZF94MTEgJiYgZGlzcGxheSAhPSBOVUxMKSB7Ci0tCQljaGFyICpwcm90bywgKmRhdGE7Ci0tCQkvKiBHZXQgcmVhc29uYWJsZSBsb2NhbCBhdXRoZW50aWNhdGlvbiBpbmZvcm1hdGlvbi4gKi8KLS0JCWNsaWVudF94MTFfZ2V0X3Byb3RvKGRpc3BsYXksIG9wdGlvbnMueGF1dGhfbG9jYXRpb24sCi0tCQkgICAgb3B0aW9ucy5mb3J3YXJkX3gxMV90cnVzdGVkLAotLQkJICAgIG9wdGlvbnMuZm9yd2FyZF94MTFfdGltZW91dCwKLS0JCSAgICAmcHJvdG8sICZkYXRhKTsKLSsJaWYgKG9wdGlvbnMuZm9yd2FyZF94MTEgJiYgY2xpZW50X3gxMV9nZXRfcHJvdG8oZGlzcGxheSwKLSsJICAgIG9wdGlvbnMueGF1dGhfbG9jYXRpb24sIG9wdGlvbnMuZm9yd2FyZF94MTFfdHJ1c3RlZCwKLSsJICAgIG9wdGlvbnMuZm9yd2FyZF94MTFfdGltZW91dCwgJnByb3RvLCAmZGF0YSkgPT0gMCkgewotIAkJLyogUmVxdWVzdCBmb3J3YXJkaW5nIHdpdGggYXV0aGVudGljYXRpb24gc3Bvb2ZpbmcuICovCi0gCQlkZWJ1ZygiUmVxdWVzdGluZyBYMTEgZm9yd2FyZGluZyB3aXRoIGF1dGhlbnRpY2F0aW9uICIKLSAJCSAgICAic3Bvb2ZpbmcuIik7Ci1AQCAtMTc3MCw2ICsxNzY3LDcgQEAgc3NoX3Nlc3Npb24yX3NldHVwKGludCBpZCwgaW50IHN1Y2Nlc3MsCi0gCWV4dGVybiBjaGFyICoqZW52aXJvbjsKLSAJY29uc3QgY2hhciAqZGlzcGxheTsKLSAJaW50IGludGVyYWN0aXZlID0gdHR5X2ZsYWc7Ci0rCWNoYXIgKnByb3RvID0gTlVMTCwgKmRhdGEgPSBOVUxMOwotIAotIAlpZiAoIXN1Y2Nlc3MpCi0gCQlyZXR1cm47IC8qIE5vIG5lZWQgZm9yIGVycm9yIG1lc3NhZ2UsIGNoYW5uZWxzIGNvZGUgc2VucyBvbmUgKi8KLUBAIC0xNzc3LDEyICsxNzc1LDkgQEAgc3NoX3Nlc3Npb24yX3NldHVwKGludCBpZCwgaW50IHN1Y2Nlc3MsCi0gCWRpc3BsYXkgPSBnZXRlbnYoIkRJU1BMQVkiKTsKLSAJaWYgKGRpc3BsYXkgPT0gTlVMTCAmJiBvcHRpb25zLmZvcndhcmRfeDExKQotIAkJZGVidWcoIlgxMSBmb3J3YXJkaW5nIHJlcXVlc3RlZCBidXQgRElTUExBWSBub3Qgc2V0Iik7Ci0tCWlmIChvcHRpb25zLmZvcndhcmRfeDExICYmIGRpc3BsYXkgIT0gTlVMTCkgewotLQkJY2hhciAqcHJvdG8sICpkYXRhOwotLQkJLyogR2V0IHJlYXNvbmFibGUgbG9jYWwgYXV0aGVudGljYXRpb24gaW5mb3JtYXRpb24uICovCi0tCQljbGllbnRfeDExX2dldF9wcm90byhkaXNwbGF5LCBvcHRpb25zLnhhdXRoX2xvY2F0aW9uLAotLQkJICAgIG9wdGlvbnMuZm9yd2FyZF94MTFfdHJ1c3RlZCwKLS0JCSAgICBvcHRpb25zLmZvcndhcmRfeDExX3RpbWVvdXQsICZwcm90bywgJmRhdGEpOwotKwlpZiAob3B0aW9ucy5mb3J3YXJkX3gxMSAmJiBjbGllbnRfeDExX2dldF9wcm90byhkaXNwbGF5LAotKwkgICAgb3B0aW9ucy54YXV0aF9sb2NhdGlvbiwgb3B0aW9ucy5mb3J3YXJkX3gxMV90cnVzdGVkLAotKwkgICAgb3B0aW9ucy5mb3J3YXJkX3gxMV90aW1lb3V0LCAmcHJvdG8sICZkYXRhKSA9PSAwKSB7Ci0gCQkvKiBSZXF1ZXN0IGZvcndhcmRpbmcgd2l0aCBhdXRoZW50aWNhdGlvbiBzcG9vZmluZy4gKi8KLSAJCWRlYnVnKCJSZXF1ZXN0aW5nIFgxMSBmb3J3YXJkaW5nIHdpdGggYXV0aGVudGljYXRpb24gIgotIAkJICAgICJzcG9vZmluZy4iKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9DVkUtMjAxNi0xOTA3X3Vwc3RyZWFtX2NvbW1pdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9DVkUtMjAxNi0xOTA3X3Vwc3RyZWFtX2NvbW1pdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNkMTMyZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvQ1ZFLTIwMTYtMTkwN191cHN0cmVhbV9jb21taXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIGQ3NzE0OGUzYTNlZjZjMjliMjZlYzc0MzMxNDU1Mzk0NTgxYWEyNTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiZGptQG9wZW5ic2Qub3JnIiA8ZGptQG9wZW5ic2Qub3JnPgotRGF0ZTogU3VuLCA4IE5vdiAyMDE1IDIxOjU5OjExICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIHVwc3RyZWFtIGNvbW1pdAotCi1maXggT09CIHJlYWQgaW4gcGFja2V0IGNvZGUgY2F1c2VkIGJ5IG1pc3NpbmcgcmV0dXJuCi0gc3RhdGVtZW50IGZvdW5kIGJ5IEJlbiBIYXdrZXM7IG9rIG1hcmt1c0AgZGVyYWFkdEAKLQotVXBzdHJlYW0tSUQ6IGEzZTNhODU0MzRlYmZhMDY5MGQ0ODc5MDkxOTU5NTkxZjMwZWZjNjIKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNi0xOTA3Ci0KLVtZT0NUTyAjODkzNV0KLQotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIHBhY2tldC5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLUluZGV4OiBvcGVuc3NoLTcuMXAyL3BhY2tldC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gb3BlbnNzaC03LjFwMi5vcmlnL3BhY2tldC5jCi0rKysgb3BlbnNzaC03LjFwMi9wYWNrZXQuYwotQEAgLTE4NTUsNiArMTg1NSw3IEBAIHNzaF9wYWNrZXRfcHJvY2Vzc19pbmNvbWluZyhzdHJ1Y3Qgc3NoICoKLSAJCWlmIChsZW4gPj0gc3RhdGUtPnBhY2tldF9kaXNjYXJkKSB7Ci0gCQkJaWYgKChyID0gc3NoX3BhY2tldF9zdG9wX2Rpc2NhcmQoc3NoKSkgIT0gMCkKLSAJCQkJcmV0dXJuIHI7Ci0rCQkJcmV0dXJuIFNTSF9FUlJfQ09OTl9DT1JSVVBUOwotIAkJfQotIAkJc3RhdGUtPnBhY2tldF9kaXNjYXJkIC09IGxlbjsKLSAJCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL2ZpeC1wb3RlbnRpYWwtc2lnbmVkLW92ZXJmbG93LWluLXBvaW50ZXItYXJpdGhtYXRpYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9maXgtcG90ZW50aWFsLXNpZ25lZC1vdmVyZmxvdy1pbi1wb2ludGVyLWFyaXRobWF0aWMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGY2NGExNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9maXgtcG90ZW50aWFsLXNpZ25lZC1vdmVyZmxvdy1pbi1wb2ludGVyLWFyaXRobWF0aWMucGF0Y2gKQEAgLTAsMCArMSw5OSBAQAorRnJvbSAzMzI4ZTk4YmNiZjI5MzBjZDdlZWEzZTZjOTJhZDVkY2JkZjQ3OTRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogWXVhbmppZSBIdWFuZyA8eXVhbmppZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAyNCBBdWcgMjAxNiAwMzoxNTo0MyArMDAwMAorU3ViamVjdDogW1BBVENIXSBGaXggcG90ZW50aWFsIHNpZ25lZCBvdmVyZmxvdyBpbiBwb2ludGVyIGFyaXRobWF0aWMKKworUG9pbnRlciBhcml0aG1hdGljIHJlc3VsdHMgaW4gaW1wbGVtZW50YXRpb24gZGVmaW5lZCBzaWduZWQgaW50ZWdlcgordHlwZSwgc28gdGhhdCAncyAtIHNyYycgaW4gc3RybGNweSBhbmQgb3RoZXJzIG1heSB0cmlnZ2VyIHNpZ25lZCBvdmVyZmxvdy4KK0luIGNhc2Ugb2YgY29tcGlsYXRpb24gYnkgZ2NjIG9yIGNsYW5nIHdpdGggLWZ0cmFwdiBvcHRpb24sIHRoZSBvdmVyZmxvdword291bGQgbGVhZCB0byBwcm9ncmFtIGFib3J0LgorCitVcHN0cmVhbS1zdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cDovL2J1Z3ppbGxhLm1pbmRyb3Qub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjA4XQorCitTaWduZWQtb2ZmLWJ5OiBZdWFuamllIEh1YW5nIDx5dWFuamllLmh1YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBvcGVuYnNkLWNvbXBhdC9zdHJsY2F0LmMgfCA4ICsrKysrKy0tCisgb3BlbmJzZC1jb21wYXQvc3RybGNweS5jIHwgOCArKysrKystLQorIG9wZW5ic2QtY29tcGF0L3N0cm5sZW4uYyB8IDggKysrKysrLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9vcGVuYnNkLWNvbXBhdC9zdHJsY2F0LmMgYi9vcGVuYnNkLWNvbXBhdC9zdHJsY2F0LmMKK2luZGV4IGJjYzFiNjEuLmU3NThlYmYgMTAwNjQ0CistLS0gYS9vcGVuYnNkLWNvbXBhdC9zdHJsY2F0LmMKKysrKyBiL29wZW5ic2QtY29tcGF0L3N0cmxjYXQuYworQEAgLTIzLDYgKzIzLDcgQEAKKyAKKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyAKKyAvKgorICAqIEFwcGVuZHMgc3JjIHRvIHN0cmluZyBkc3Qgb2Ygc2l6ZSBzaXogKHVubGlrZSBzdHJuY2F0LCBzaXogaXMgdGhlCitAQCAtNTUsOCArNTYsMTEgQEAgc3RybGNhdChjaGFyICpkc3QsIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNpeikKKyAJCXMrKzsKKyAJfQorIAkqZCA9ICdcMCc7CistCistCXJldHVybihkbGVuICsgKHMgLSBzcmMpKTsJLyogY291bnQgZG9lcyBub3QgaW5jbHVkZSBOVUwgKi8KKysgICAgICAgIC8qCisrCSAqIENhc3QgcG9pbnRlcnMgdG8gdW5zaWduZWQgdHlwZSBiZWZvcmUgY2FsY3VsYXRpb24sIHRvIGF2b2lkIHNpZ25lZAorKwkgKiBvdmVyZmxvdyB3aGVuIHRoZSBzdHJpbmcgZW5kcyB3aGVyZSB0aGUgTVNCIGhhcyBjaGFuZ2VkLgorKwkgKi8KKysJcmV0dXJuIChkbGVuICsgKCh1aW50cHRyX3QpcyAtICh1aW50cHRyX3Qpc3JjKSk7CS8qIGNvdW50IGRvZXMgbm90IGluY2x1ZGUgTlVMICovCisgfQorIAorICNlbmRpZiAvKiAhSEFWRV9TVFJMQ0FUICovCitkaWZmIC0tZ2l0IGEvb3BlbmJzZC1jb21wYXQvc3RybGNweS5jIGIvb3BlbmJzZC1jb21wYXQvc3RybGNweS5jCitpbmRleCBiNGIxYjYwLi5iMDZmMzc0IDEwMDY0NAorLS0tIGEvb3BlbmJzZC1jb21wYXQvc3RybGNweS5jCisrKysgYi9vcGVuYnNkLWNvbXBhdC9zdHJsY3B5LmMKK0BAIC0yMyw2ICsyMyw3IEBACisgCisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8c3RkaW50Lmg+CisgCisgLyoKKyAgKiBDb3B5IHNyYyB0byBzdHJpbmcgZHN0IG9mIHNpemUgc2l6LiAgQXQgbW9zdCBzaXotMSBjaGFyYWN0ZXJzCitAQCAtNTEsOCArNTIsMTEgQEAgc3RybGNweShjaGFyICpkc3QsIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNpeikKKyAJCXdoaWxlICgqcysrKQorIAkJCTsKKyAJfQorLQorLQlyZXR1cm4ocyAtIHNyYyAtIDEpOwkvKiBjb3VudCBkb2VzIG5vdCBpbmNsdWRlIE5VTCAqLworKyAgICAgICAgLyoKKysJICogQ2FzdCBwb2ludGVycyB0byB1bnNpZ25lZCB0eXBlIGJlZm9yZSBjYWxjdWxhdGlvbiwgdG8gYXZvaWQgc2lnbmVkCisrCSAqIG92ZXJmbG93IHdoZW4gdGhlIHN0cmluZyBlbmRzIHdoZXJlIHRoZSBNU0IgaGFzIGNoYW5nZWQuCisrCSAqLworKwlyZXR1cm4gKCh1aW50cHRyX3QpcyAtICh1aW50cHRyX3Qpc3JjIC0gMSk7CS8qIGNvdW50IGRvZXMgbm90IGluY2x1ZGUgTlVMICovCisgfQorIAorICNlbmRpZiAvKiAhSEFWRV9TVFJMQ1BZICovCitkaWZmIC0tZ2l0IGEvb3BlbmJzZC1jb21wYXQvc3Rybmxlbi5jIGIvb3BlbmJzZC1jb21wYXQvc3Rybmxlbi5jCitpbmRleCA5M2Q1MTU1Li45YjhkZTVkIDEwMDY0NAorLS0tIGEvb3BlbmJzZC1jb21wYXQvc3Rybmxlbi5jCisrKysgYi9vcGVuYnNkLWNvbXBhdC9zdHJubGVuLmMKK0BAIC0yMyw2ICsyMyw3IEBACisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorIAorICNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8c3RkaW50Lmg+CisgCisgc2l6ZV90Cisgc3Rybmxlbihjb25zdCBjaGFyICpzdHIsIHNpemVfdCBtYXhsZW4pCitAQCAtMzEsNyArMzIsMTAgQEAgc3Rybmxlbihjb25zdCBjaGFyICpzdHIsIHNpemVfdCBtYXhsZW4pCisgCisgCWZvciAoY3AgPSBzdHI7IG1heGxlbiAhPSAwICYmICpjcCAhPSAnXDAnOyBjcCsrLCBtYXhsZW4tLSkKKyAJCTsKKy0KKy0JcmV0dXJuIChzaXplX3QpKGNwIC0gc3RyKTsKKysgICAgICAgIC8qCisrCSAqIENhc3QgcG9pbnRlcnMgdG8gdW5zaWduZWQgdHlwZSBiZWZvcmUgY2FsY3VsYXRpb24sIHRvIGF2b2lkIHNpZ25lZAorKwkgKiBvdmVyZmxvdyB3aGVuIHRoZSBzdHJpbmcgZW5kcyB3aGVyZSB0aGUgTVNCIGhhcyBjaGFuZ2VkLgorKwkgKi8KKysJcmV0dXJuIChzaXplX3QpKCh1aW50cHRyX3QpY3AgLSAodWludHB0cl90KXN0cik7CisgfQorICNlbmRpZgorLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvaW5pdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9pbml0CmluZGV4IDcwZDRhMzQuLjFmNjM3MjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9pbml0CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9pbml0CkBAIC00MSw3ICs0MSw3IEBACiB9CiAKIGNoZWNrX2NvbmZpZygpIHsKLQkvdXNyL3NiaW4vc3NoZCAtdCB8fCBleGl0IDEKKwkvdXNyL3NiaW4vc3NoZCAtdCAkU1NIRF9PUFRTIHx8IGV4aXQgMQogfQogCiBjaGVja19rZXlzKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL29wZW5zc2gtNy4xcDEtY29uZGl0aW9uYWwtY29tcGlsZS1kZXMtaW4tY2lwaGVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL29wZW5zc2gtNy4xcDEtY29uZGl0aW9uYWwtY29tcGlsZS1kZXMtaW4tY2lwaGVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3NzNjMTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvb3BlbnNzaC03LjFwMS1jb25kaXRpb25hbC1jb21waWxlLWRlcy1pbi1jaXBoZXIucGF0Y2gKQEAgLTAsMCArMSwxMTggQEAKK0Zyb20gZDdlYjI2Nzg1YWQ0ZjI1ZmIwOWZhZTQ2NzI2YWI4Y2EzZmUxNjkyMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhhaXFpbmcgQmFpIDxIYWlxaW5nLkJhaUB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCAyMiBBdWcgMjAxNiAxNDoxMToxNiArMDMwMAorU3ViamVjdDogW1BBVENIXSBSZW1vdmUgZGVzIGluIGNpcGhlci4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEhhaXFpbmcgQmFpIDxIYWlxaW5nLkJhaUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KKy0tLQorIGNpcGhlci5jIHwgMTggKysrKysrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2NpcGhlci5jIGIvY2lwaGVyLmMKK2luZGV4IDAzMWJkYTkuLjZjZDY2N2EgMTAwNjQ0CistLS0gYS9jaXBoZXIuYworKysrIGIvY2lwaGVyLmMKK0BAIC01Myw4ICs1MywxMCBAQAorIAorICNpZmRlZiBXSVRIX1NTSDEKKyBleHRlcm4gY29uc3QgRVZQX0NJUEhFUiAqZXZwX3NzaDFfYmYodm9pZCk7CisrI2lmbmRlZiBPUEVOU1NMX05PX0RFUworIGV4dGVybiBjb25zdCBFVlBfQ0lQSEVSICpldnBfc3NoMV8zZGVzKHZvaWQpOworIGV4dGVybiBpbnQgc3NoMV8zZGVzX2l2KEVWUF9DSVBIRVJfQ1RYICosIGludCwgdV9jaGFyICosIGludCk7CisrI2VuZGlmIC8qIE9QRU5TU0xfTk9fREVTICovCisgI2VuZGlmCisgCisgc3RydWN0IHNzaGNpcGhlciB7CitAQCAtNzksMTUgKzgxLDE5IEBAIHN0cnVjdCBzc2hjaXBoZXIgeworIAorIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3NoY2lwaGVyIGNpcGhlcnNbXSA9IHsKKyAjaWZkZWYgV0lUSF9TU0gxCisrI2lmbmRlZiBPUEVOU1NMX05PX0RFUworIAl7ICJkZXMiLAlTU0hfQ0lQSEVSX0RFUywgOCwgOCwgMCwgMCwgMCwgMSwgRVZQX2Rlc19jYmMgfSwKKyAJeyAiM2RlcyIsCVNTSF9DSVBIRVJfM0RFUywgOCwgMTYsIDAsIDAsIDAsIDEsIGV2cF9zc2gxXzNkZXMgfSwKKysjZW5kaWYgLyogT1BFTlNTTF9OT19ERVMgKi8KKyAjIGlmbmRlZiBPUEVOU1NMX05PX0JGCisgCXsgImJsb3dmaXNoIiwJU1NIX0NJUEhFUl9CTE9XRklTSCwgOCwgMzIsIDAsIDAsIDAsIDEsIGV2cF9zc2gxX2JmIH0sCisgIyBlbmRpZiAvKiBPUEVOU1NMX05PX0JGICovCisgI2VuZGlmIC8qIFdJVEhfU1NIMSAqLworICNpZmRlZiBXSVRIX09QRU5TU0wKKyAJeyAibm9uZSIsCVNTSF9DSVBIRVJfTk9ORSwgOCwgMCwgMCwgMCwgMCwgMCwgRVZQX2VuY19udWxsIH0sCisrI2lmbmRlZiBPUEVOU1NMX05PX0RFUworIAl7ICIzZGVzLWNiYyIsCVNTSF9DSVBIRVJfU1NIMiwgOCwgMjQsIDAsIDAsIDAsIDEsIEVWUF9kZXNfZWRlM19jYmMgfSwKKysjZW5kaWYgLyogT1BFTlNTTF9OT19ERVMgKi8KKyAjIGlmbmRlZiBPUEVOU1NMX05PX0JGCisgCXsgImJsb3dmaXNoLWNiYyIsCisgCQkJU1NIX0NJUEhFUl9TU0gyLCA4LCAxNiwgMCwgMCwgMCwgMSwgRVZQX2JmX2NiYyB9LAorQEAgLTE3MSw4ICsxNzcsMTAgQEAgY2lwaGVyX2tleWxlbihjb25zdCBzdHJ1Y3Qgc3NoY2lwaGVyICpjKQorIHVfaW50CisgY2lwaGVyX3NlY2xlbihjb25zdCBzdHJ1Y3Qgc3NoY2lwaGVyICpjKQorIHsKKysjaWZuZGVmIE9QRU5TU0xfTk9fREVTCisgCWlmIChzdHJjbXAoIjNkZXMtY2JjIiwgYy0+bmFtZSkgPT0gMCkKKyAJCXJldHVybiAxNDsKKysjZW5kaWYgLyogT1BFTlNTTF9OT19ERVMgKi8KKyAJcmV0dXJuIGNpcGhlcl9rZXlsZW4oYyk7CisgfQorIAorQEAgLTIwOSwxMSArMjE3LDEzIEBAIHVfaW50CisgY2lwaGVyX21hc2tfc3NoMShpbnQgY2xpZW50KQorIHsKKyAJdV9pbnQgbWFzayA9IDA7CisrI2lmbmRlZiBPUEVOU1NMX05PX0RFUworIAltYXNrIHw9IDEgPDwgU1NIX0NJUEhFUl8zREVTOwkJLyogTWFuZGF0b3J5ICovCisgCW1hc2sgfD0gMSA8PCBTU0hfQ0lQSEVSX0JMT1dGSVNIOworIAlpZiAoY2xpZW50KSB7CisgCQltYXNrIHw9IDEgPDwgU1NIX0NJUEhFUl9ERVM7CisgCX0KKysjZW5kaWYgLypPUEVOU1NMX05PX0RFUyovCisgCXJldHVybiBtYXNrOworIH0KKyAKK0BAIC01NTMsNyArNTYzLDkgQEAgY2lwaGVyX2dldF9rZXlpdihzdHJ1Y3Qgc3NoY2lwaGVyX2N0eCAqY2MsIHVfY2hhciAqaXYsIHVfaW50IGxlbikKKyAJc3dpdGNoIChjLT5udW1iZXIpIHsKKyAjaWZkZWYgV0lUSF9PUEVOU1NMCisgCWNhc2UgU1NIX0NJUEhFUl9TU0gyOgorKyNpZm5kZWYgT1BFTlNTTF9OT19ERVMKKyAJY2FzZSBTU0hfQ0lQSEVSX0RFUzoKKysjZW5kaWYgLyogT1BFTlNTTF9OT19ERVMgKi8KKyAJY2FzZSBTU0hfQ0lQSEVSX0JMT1dGSVNIOgorIAkJZXZwbGVuID0gRVZQX0NJUEhFUl9DVFhfaXZfbGVuZ3RoKCZjYy0+ZXZwKTsKKyAJCWlmIChldnBsZW4gPT0gMCkKK0BAIC01NzYsOCArNTg4LDEwIEBAIGNpcGhlcl9nZXRfa2V5aXYoc3RydWN0IHNzaGNpcGhlcl9jdHggKmNjLCB1X2NoYXIgKml2LCB1X2ludCBsZW4pCisgCQlicmVhazsKKyAjZW5kaWYKKyAjaWZkZWYgV0lUSF9TU0gxCisrI2lmbmRlZiBPUEVOU1NMX05PX0RFUworIAljYXNlIFNTSF9DSVBIRVJfM0RFUzoKKyAJCXJldHVybiBzc2gxXzNkZXNfaXYoJmNjLT5ldnAsIDAsIGl2LCAyNCk7CisrI2VuZGlmIC8qIE9QRU5TU0xfTk9fREVTICovCisgI2VuZGlmCisgCWRlZmF1bHQ6CisgCQlyZXR1cm4gU1NIX0VSUl9JTlZBTElEX0FSR1VNRU5UOworQEAgLTYwMSw3ICs2MTUsOSBAQCBjaXBoZXJfc2V0X2tleWl2KHN0cnVjdCBzc2hjaXBoZXJfY3R4ICpjYywgY29uc3QgdV9jaGFyICppdikKKyAJc3dpdGNoIChjLT5udW1iZXIpIHsKKyAjaWZkZWYgV0lUSF9PUEVOU1NMCisgCWNhc2UgU1NIX0NJUEhFUl9TU0gyOgorKyNpZm5kZWYgT1BFTlNTTF9OT19ERVMKKyAJY2FzZSBTU0hfQ0lQSEVSX0RFUzoKKysjZW5kaWYgLyogT1BFTlNTTF9OT19ERVMgKi8KKyAJY2FzZSBTU0hfQ0lQSEVSX0JMT1dGSVNIOgorIAkJZXZwbGVuID0gRVZQX0NJUEhFUl9DVFhfaXZfbGVuZ3RoKCZjYy0+ZXZwKTsKKyAJCWlmIChldnBsZW4gPD0gMCkKK0BAIC02MTYsOCArNjMyLDEwIEBAIGNpcGhlcl9zZXRfa2V5aXYoc3RydWN0IHNzaGNpcGhlcl9jdHggKmNjLCBjb25zdCB1X2NoYXIgKml2KQorIAkJYnJlYWs7CisgI2VuZGlmCisgI2lmZGVmIFdJVEhfU1NIMQorKyNpZm5kZWYgT1BFTlNTTF9OT19ERVMKKyAJY2FzZSBTU0hfQ0lQSEVSXzNERVM6CisgCQlyZXR1cm4gc3NoMV8zZGVzX2l2KCZjYy0+ZXZwLCAxLCAodV9jaGFyICopaXYsIDI0KTsKKysjZW5kaWYgLyogT1BFTlNTTF9OT19ERVMgKi8KKyAjZW5kaWYKKyAJZGVmYXVsdDoKKyAJCXJldHVybiBTU0hfRVJSX0lOVkFMSURfQVJHVU1FTlQ7CistLSAKKzIuMS40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9vcGVuc3NoLTcuMXAxLWNvbmRpdGlvbmFsLWNvbXBpbGUtZGVzLWluLXBrY3MxMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9vcGVuc3NoLTcuMXAxLWNvbmRpdGlvbmFsLWNvbXBpbGUtZGVzLWluLXBrY3MxMS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTVhZjQyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL29wZW5zc2gtNy4xcDEtY29uZGl0aW9uYWwtY29tcGlsZS1kZXMtaW4tcGtjczExLnBhdGNoCkBAIC0wLDAgKzEsNzAgQEAKK0Zyb20gMDRjZmQ4NDQyM2Y2OTNkODc5ZGMzZmZlYmIwZjZmZTI2ODBjMjU0ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhhaXFpbmcgQmFpIDxIYWlxaW5nLkJhaUB3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAxOCBNYXIgMjAxNiAxNTo1OToyMSArMDgwMAorU3ViamVjdDogW1BBVENIIDMvM10gcmVtb3ZlIGRlcyBpbiBwa2NzMTEuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBIYWlxaW5nIEJhaSA8SGFpcWluZy5CYWlAd2luZHJpdmVyLmNvbT4KKworLS0tCisgcGtjczExLmggfCA4ICsrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvcGtjczExLmggYi9wa2NzMTEuaAoraW5kZXggYjAxZDU4Zi4uOThiMzZlNiAxMDA2NDQKKy0tLSBhL3BrY3MxMS5oCisrKysgYi9wa2NzMTEuaAorQEAgLTM0Miw5ICszNDIsMTEgQEAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGNrX2tleV90eXBlX3Q7CisgI2RlZmluZSBDS0tfR0VORVJJQ19TRUNSRVQJKDB4MTApCisgI2RlZmluZSBDS0tfUkMyCQkJKDB4MTEpCisgI2RlZmluZSBDS0tfUkM0CQkJKDB4MTIpCisrI2lmbmRlZiBPUEVOU1NMX05PX0RFUworICNkZWZpbmUgQ0tLX0RFUwkJCSgweDEzKQorICNkZWZpbmUgQ0tLX0RFUzIJCSgweDE0KQorICNkZWZpbmUgQ0tLX0RFUzMJCSgweDE1KQorKyNlbmRpZiAvKiBPUEVOU1NMX05PX0RFUyAqLworICNkZWZpbmUgQ0tLX0NBU1QJCSgweDE2KQorICNkZWZpbmUgQ0tLX0NBU1QzCQkoMHgxNykKKyAjZGVmaW5lIENLS19DQVNUMTI4CQkoMHgxOCkKK0BAIC01MTIsNiArNTE0LDcgQEAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGNrX21lY2hhbmlzbV90eXBlX3Q7CisgI2RlZmluZSBDS01fUkMyX0NCQ19QQUQJCQkoMHgxMDUpCisgI2RlZmluZSBDS01fUkM0X0tFWV9HRU4JCQkoMHgxMTApCisgI2RlZmluZSBDS01fUkM0CQkJCSgweDExMSkKKysjaWZuZGVmIE9QRU5TU0xfTk9fREVTCisgI2RlZmluZSBDS01fREVTX0tFWV9HRU4JCQkoMHgxMjApCisgI2RlZmluZSBDS01fREVTX0VDQgkJCSgweDEyMSkKKyAjZGVmaW5lIENLTV9ERVNfQ0JDCQkJKDB4MTIyKQorQEAgLTUyNSw2ICs1MjgsNyBAQCB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgY2tfbWVjaGFuaXNtX3R5cGVfdDsKKyAjZGVmaW5lIENLTV9ERVMzX01BQwkJCSgweDEzNCkKKyAjZGVmaW5lIENLTV9ERVMzX01BQ19HRU5FUkFMCQkoMHgxMzUpCisgI2RlZmluZSBDS01fREVTM19DQkNfUEFECQkoMHgxMzYpCisrI2VuZGlmIC8qIE9QRU5TU0xfTk9fREVTICovCisgI2RlZmluZSBDS01fQ0RNRl9LRVlfR0VOCQkoMHgxNDApCisgI2RlZmluZSBDS01fQ0RNRl9FQ0IJCQkoMHgxNDEpCisgI2RlZmluZSBDS01fQ0RNRl9DQkMJCQkoMHgxNDIpCitAQCAtNjEwLDggKzYxNCwxMCBAQCB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgY2tfbWVjaGFuaXNtX3R5cGVfdDsKKyAjZGVmaW5lIENLTV9NRDVfS0VZX0RFUklWQVRJT04JCSgweDM5MCkKKyAjZGVmaW5lIENLTV9NRDJfS0VZX0RFUklWQVRJT04JCSgweDM5MSkKKyAjZGVmaW5lIENLTV9TSEExX0tFWV9ERVJJVkFUSU9OCQkoMHgzOTIpCisrI2lmbmRlZiBPUEVOU1NMX05PX0RFUworICNkZWZpbmUgQ0tNX1BCRV9NRDJfREVTX0NCQwkJKDB4M2EwKQorICNkZWZpbmUgQ0tNX1BCRV9NRDVfREVTX0NCQwkJKDB4M2ExKQorKyNlbmRpZiAvKiBPUEVOU1NMX05PX0RFUyAqLworICNkZWZpbmUgQ0tNX1BCRV9NRDVfQ0FTVF9DQkMJCSgweDNhMikKKyAjZGVmaW5lIENLTV9QQkVfTUQ1X0NBU1QzX0NCQwkJKDB4M2EzKQorICNkZWZpbmUgQ0tNX1BCRV9NRDVfQ0FTVDVfQ0JDCQkoMHgzYTQpCitAQCAtNjIwLDggKzYyNiwxMCBAQCB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgY2tfbWVjaGFuaXNtX3R5cGVfdDsKKyAjZGVmaW5lIENLTV9QQkVfU0hBMV9DQVNUMTI4X0NCQwkoMHgzYTUpCisgI2RlZmluZSBDS01fUEJFX1NIQTFfUkM0XzEyOAkJKDB4M2E2KQorICNkZWZpbmUgQ0tNX1BCRV9TSEExX1JDNF80MAkJKDB4M2E3KQorKyNpZm5kZWYgT1BFTlNTTF9OT19ERVMKKyAjZGVmaW5lIENLTV9QQkVfU0hBMV9ERVMzX0VERV9DQkMJKDB4M2E4KQorICNkZWZpbmUgQ0tNX1BCRV9TSEExX0RFUzJfRURFX0NCQwkoMHgzYTkpCisrI2VuZGlmIC8qIE9QRU5TU0xfTk9fREVTICovCisgI2RlZmluZSBDS01fUEJFX1NIQTFfUkMyXzEyOF9DQkMJKDB4M2FhKQorICNkZWZpbmUgQ0tNX1BCRV9TSEExX1JDMl80MF9DQkMJCSgweDNhYikKKyAjZGVmaW5lIENLTV9QS0NTNV9QQktEMgkJCSgweDNiMCkKKy0tIAorMS45LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoXzcuMXAyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoXzcuMXAyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjVlMjhhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaF83LjFwMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE2MSArMCwwIEBACi1TVU1NQVJZID0gIlNlY3VyZSBybG9naW4vcnNoL3JjcC90ZWxuZXQgcmVwbGFjZW1lbnQiCi1ERVNDUklQVElPTiA9ICJTZWN1cmUgcmxvZ2luL3JzaC9yY3AvdGVsbmV0IHJlcGxhY2VtZW50IChPcGVuU1NIKSBcCi1Tc2ggKFNlY3VyZSBTaGVsbCkgaXMgYSBwcm9ncmFtIGZvciBsb2dnaW5nIGludG8gYSByZW1vdGUgbWFjaGluZSBcCi1hbmQgZm9yIGV4ZWN1dGluZyBjb21tYW5kcyBvbiBhIHJlbW90ZSBtYWNoaW5lLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9vcGVuc3NoLm9yZyIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT1lMzI2MDQ1NjU3ZTg0MjU0MWQzZjM1YWFkYTQ0MjUwNyIKLQotREVQRU5EUyA9ICJ6bGliIG9wZW5zc2wiCi1ERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdsaWJwYW0nLCAnJywgZCl9IgotCi1TUkNfVVJJID0gImZ0cDovL2Z0cC5vcGVuYnNkLm9yZy9wdWIvT3BlbkJTRC9PcGVuU1NIL3BvcnRhYmxlL29wZW5zc2gtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3NzaGRfY29uZmlnIFwKLSAgICAgICAgICAgZmlsZTovL3NzaF9jb25maWcgXAotICAgICAgICAgICBmaWxlOi8vaW5pdCBcCi0gICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJyR7UEFNX1NSQ19VUkl9JywgJycsIGQpfSBcCi0gICAgICAgICAgIGZpbGU6Ly9zc2hkLnNvY2tldCBcCi0gICAgICAgICAgIGZpbGU6Ly9zc2hkQC5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL3NzaGRnZW5rZXlzLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vdm9sYXRpbGVzLjk5X3NzaGQgXAotICAgICAgICAgICBmaWxlOi8vYWRkLXRlc3Qtc3VwcG9ydC1mb3ItYnVzeWJveC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTYtMTkwN191cHN0cmVhbV9jb21taXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTYtMTkwN18yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTE5MDdfMy5wYXRjaCAiCi0KLVBBTV9TUkNfVVJJID0gImZpbGU6Ly9zc2hkIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNGQ4NTQ3NjcwZTJhMjIwZDVlZjgwNWFkOWU0N2FjZjIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGQ3NWYwMjRkY2YyMWUwNmEwZDY0MjFkNTgyNjkwYmY5ODdhMWY2MzIzZTMyYWQ2NjE5MzkyZjNiZmRlNmJiZCIKLQotaW5oZXJpdCB1c2VyYWRkIHVwZGF0ZS1yYy5kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgc3lzdGVtZAotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59LXNzaGQiCi1VU0VSQUREX1BBUkFNXyR7UE59LXNzaGQgPSAiLS1zeXN0ZW0gLS1uby1jcmVhdGUtaG9tZSAtLWhvbWUtZGlyIC92YXIvcnVuL3NzaGQgLS1zaGVsbCAvYmluL2ZhbHNlIC0tdXNlci1ncm91cCBzc2hkIgotSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfS1zc2hkIgotSU5JVFNDUklQVF9OQU1FXyR7UE59LXNzaGQgPSAic3NoZCIKLUlOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LXNzaGQgPSAiZGVmYXVsdHMgOSIKLQotU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfS1zc2hkIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59LXNzaGQgPSAic3NoZC5zb2NrZXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwdGVzdAotCi0jIExGUyBzdXBwb3J0OgotQ0ZMQUdTICs9ICItRF9fRklMRV9PRkZTRVRfQklUUz02NCIKLQotIyBsb2dpbiBwYXRoIGlzIGhhcmRjb2RlZCBpbiBzc2hkCi1FWFRSQV9PRUNPTkYgPSAiJ0xPR0lOX1BST0dSQU09JHtiYXNlX2JpbmRpcn0vbG9naW4nIFwKLSAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICctLXdpdGgtcGFtJywgJy0td2l0aG91dC1wYW0nLCBkKX0gXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC16bGliLXZlcnNpb24tY2hlY2sgXAotICAgICAgICAgICAgICAgIC0td2l0aC1wcml2c2VwLXBhdGg9L3Zhci9ydW4vc3NoZCBcCi0gICAgICAgICAgICAgICAgLS1zeXNjb25mZGlyPSR7c3lzY29uZmRpcn0vc3NoIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgteGF1dGg9L3Vzci9iaW4veGF1dGggXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1zdHJpcCBcCi0gICAgICAgICAgICAgICAgIgotCi0jIFNpbmNlIHdlIGRvIG5vdCBkZXBlbmQgb24gbGliYnNkLCB3ZSBkbyBub3Qgd2FudCBjb25maWd1cmUgdG8gdXNlIGl0Ci0jIGp1c3QgYmVjYXVzZSBpdCBmaW5kcyBsaWJ1dGlsLmguICBCdXQsIHNwZWNpZnlpbmcgLS1kaXNhYmxlLWxpYnV0aWwKLSMgY2F1c2VzIGNvbXBpbGUgZXJyb3JzLCBzby4uLgotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2hlYWRlcl9ic2RfbGlidXRpbF9oPW5vIGFjX2N2X2hlYWRlcl9saWJ1dGlsX2g9bm8iCi0KLSMgcGFzc3dkIHBhdGggaXMgaGFyZGNvZGVkIGluIHNzaGQKLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX1BBVEhfUEFTU1dEX1BST0c9JHtiaW5kaXJ9L3Bhc3N3ZCIKLQotIyBXZSBkb24ndCB3YW50IHRvIGRlcGVuZCBvbiBsaWJibG9ja2ZpbGUKLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9oZWFkZXJfbWFpbGxvY2tfaD1ubyIKLQotIyBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgdWNsaWJjIGJlY2F1c2UgaW5jbHVkaW5nIHN0ZGlvLmgKLSMgcHVsbHMgaW4gcHRocmVhZHMuaCBhbmQgY2F1c2VzIGNvbmZsaWN0cyBpbiBmdW5jdGlvbiBwcm90b3R5cGVzLgotIyBUaGlzIHJlc3VsdHMgaW4gY29tcGlsYXRpb24gZmFpbHVyZSwgc28gdW5sZXNzIHRoaXMgaXMgZml4ZWQsCi0jIGRpc2FibGUgcGFtIGZvciB1Y2xpYmMuCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtdWNsaWJjPSIgLS13aXRob3V0LXBhbSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCWV4cG9ydCBMRD0iJHtDQ30iCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZF9jb25maWcgJHtCfS8KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hfY29uZmlnICR7Qn0vCi0JaWYgWyAhIC1lIGFjaW5jbHVkZS5tNCAtYSAtZSBhY2xvY2FsLm00IF07IHRoZW4KLQkJY3AgYWNsb2NhbC5tNCBhY2luY2x1ZGUubTQKLQlmaQotfQotCi1kb19jb21waWxlX3B0ZXN0KCkgewotICAgICAgICAjIHNraXAgcmVncmVzcy91bml0dGVzdHMvIGJpbmFyaWVzOiB0aGlzIHdpbGwgc2lsZW50bHkgc2tpcAotICAgICAgICAjIHVuaXR0ZXN0cyBpbiBydW4tcHRlc3RzIHdoaWNoIGlzIGdvb2QgYmVjYXVzZSB0aGV5IGFyZSBzbyBzbG93LgotICAgICAgICBvZV9ydW5tYWtlIHJlZ3Jlc3MvbW9kcGlwZSByZWdyZXNzL3NldHVpZC1hbGxvd2VkIHJlZ3Jlc3MvbmV0Y2F0Ci19Ci0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlpZiBbICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdwYW0nLCAnJywgZCl9IiA9ICJwYW0iIF07IHRoZW4KLQkJaW5zdGFsbCAtRCAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZCAke0R9JHtzeXNjb25mZGlyfS9wYW0uZC9zc2hkCi0JCXNlZCAtaSAtZSAnczojVXNlUEFNIG5vOlVzZVBBTSB5ZXM6JyAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWcKLQlmaQotCi0JaWYgWyAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneDExJywgJycsIGQpfSIgPSAieDExIiBdOyB0aGVuCi0JCXNlZCAtaSAtZSAnczojWDExRm9yd2FyZGluZyBubzpYMTFGb3J3YXJkaW5nIHllczonICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZwotCWZpCi0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3NzaGQKLQlybSAtZiAke0R9JHtiaW5kaXJ9L3Nsb2dpbiAke0R9JHtkYXRhZGlyfS9Tc2guYmluCi0Jcm1kaXIgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuL3NzaGQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuICR7RH0ke2xvY2Fsc3RhdGVkaXJ9Ci0JaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKLQlpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L3ZvbGF0aWxlcy45OV9zc2hkICR7RH0vJHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy85OV9zc2hkCi0JaW5zdGFsbCAtbSAwNzU1ICR7U30vY29udHJpYi9zc2gtY29weS1pZCAke0R9JHtiaW5kaXJ9Ci0KLQkjIENyZWF0ZSBjb25maWcgZmlsZXMgZm9yIHJlYWQtb25seSByb290ZnMKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3NzaAotCWluc3RhbGwgLW0gNjQ0ICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZyAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKLQlzZWQgLWkgJy9Ib3N0S2V5L2QnICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQotCWVjaG8gIkhvc3RLZXkgL3Zhci9ydW4vc3NoL3NzaF9ob3N0X3JzYV9rZXkiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQotCWVjaG8gIkhvc3RLZXkgL3Zhci9ydW4vc3NoL3NzaF9ob3N0X2RzYV9rZXkiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQotCWVjaG8gIkhvc3RLZXkgL3Zhci9ydW4vc3NoL3NzaF9ob3N0X2VjZHNhX2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5Ci0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaW5zdGFsbCAtYyAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZC5zb2NrZXQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlpbnN0YWxsIC1jIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkQC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaW5zdGFsbCAtYyAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZGdlbmtleXMuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCXNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKLQkJLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAotCQktZSAncyxAQklORElSQCwke2JpbmRpcn0sZycgXAotCQkke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zc2hkLnNvY2tldCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qLnNlcnZpY2UKLX0KLQotZG9faW5zdGFsbF9wdGVzdCAoKSB7Ci0Jc2VkIC1pIC1lICJzfF5TRlRQU0VSVkVSPS4qfFNGVFBTRVJWRVI9JHtsaWJleGVjZGlyfS9zZnRwLXNlcnZlcnwiIHJlZ3Jlc3MvdGVzdC1leGVjLnNoCi0JY3AgLXIgcmVncmVzcyAke0R9JHtQVEVTVF9QQVRIfQotfQotCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0ta2V5Z2VuICR7UE59LXNjcCAke1BOfS1zc2ggJHtQTn0tc3NoZCAke1BOfS1zZnRwICR7UE59LW1pc2MgJHtQTn0tc2Z0cC1zZXJ2ZXIiCi1GSUxFU18ke1BOfS1zY3AgPSAiJHtiaW5kaXJ9L3NjcC4ke0JQTn0iCi1GSUxFU18ke1BOfS1zc2ggPSAiJHtiaW5kaXJ9L3NzaC4ke0JQTn0gJHtzeXNjb25mZGlyfS9zc2gvc3NoX2NvbmZpZyIKLUZJTEVTXyR7UE59LXNzaGQgPSAiJHtzYmluZGlyfS9zc2hkICR7c3lzY29uZmRpcn0vaW5pdC5kL3NzaGQgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSIKLUZJTEVTXyR7UE59LXNzaGQgKz0gIiR7c3lzY29uZmRpcn0vc3NoL21vZHVsaSAke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZyAke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seSAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzk5X3NzaGQgJHtzeXNjb25mZGlyfS9wYW0uZC9zc2hkIgotRklMRVNfJHtQTn0tc2Z0cCA9ICIke2JpbmRpcn0vc2Z0cCIKLUZJTEVTXyR7UE59LXNmdHAtc2VydmVyID0gIiR7bGliZXhlY2Rpcn0vc2Z0cC1zZXJ2ZXIiCi1GSUxFU18ke1BOfS1taXNjID0gIiR7YmluZGlyfS9zc2gqICR7bGliZXhlY2Rpcn0vc3NoKiIKLUZJTEVTXyR7UE59LWtleWdlbiA9ICIke2JpbmRpcn0vc3NoLWtleWdlbiIKLQotUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LXNjcCAke1BOfS1zc2ggJHtQTn0tc3NoZCAke1BOfS1rZXlnZW4iCi1SREVQRU5EU18ke1BOfS1zc2hkICs9ICIke1BOfS1rZXlnZW4gJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtLXBsdWdpbi1rZXlpbml0IHBhbS1wbHVnaW4tbG9naW51aWQnLCAnJywgZCl9IgotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiR7UE59LXNmdHAgJHtQTn0tbWlzYyAke1BOfS1zZnRwLXNlcnZlciBtYWtlIgotCi1SUFJPVklERVNfJHtQTn0tc3NoID0gInNzaCIKLVJQUk9WSURFU18ke1BOfS1zc2hkID0gInNzaGQiCi0KLVJDT05GTElDVFNfJHtQTn0gPSAiZHJvcGJlYXIiCi1SQ09ORkxJQ1RTXyR7UE59LXNzaGQgPSAiZHJvcGJlYXIiCi1SQ09ORkxJQ1RTXyR7UE59LWtleWdlbiA9ICJzc2gta2V5Z2VuIgotCi1DT05GRklMRVNfJHtQTn0tc3NoZCA9ICIke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZyIKLUNPTkZGSUxFU18ke1BOfS1zc2ggPSAiJHtzeXNjb25mZGlyfS9zc2gvc3NoX2NvbmZpZyIKLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiOTAiCi1BTFRFUk5BVElWRV8ke1BOfS1zY3AgPSAic2NwIgotQUxURVJOQVRJVkVfJHtQTn0tc3NoID0gInNzaCIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoXzcuM3AxLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoXzcuM3AxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzOWIwZmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2hfNy4zcDEuYmIKQEAgLTAsMCArMSwxNjQgQEAKK1NVTU1BUlkgPSAiQSBzdWl0ZSBvZiBzZWN1cml0eS1yZWxhdGVkIG5ldHdvcmsgdXRpbGl0aWVzIGJhc2VkIG9uIFwKK3RoZSBTU0ggcHJvdG9jb2wgaW5jbHVkaW5nIHRoZSBzc2ggY2xpZW50IGFuZCBzc2hkIHNlcnZlciIKK0RFU0NSSVBUSU9OID0gIlNlY3VyZSBybG9naW4vcnNoL3JjcC90ZWxuZXQgcmVwbGFjZW1lbnQgKE9wZW5TU0gpIFwKK1NzaCAoU2VjdXJlIFNoZWxsKSBpcyBhIHByb2dyYW0gZm9yIGxvZ2dpbmcgaW50byBhIHJlbW90ZSBtYWNoaW5lIFwKK2FuZCBmb3IgZXhlY3V0aW5nIGNvbW1hbmRzIG9uIGEgcmVtb3RlIG1hY2hpbmUuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVuc3NoLmNvbS8iCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9ZTMyNjA0NTY1N2U4NDI1NDFkM2YzNWFhZGE0NDI1MDciCisKK0RFUEVORFMgPSAiemxpYiBvcGVuc3NsIgorREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLm9wZW5ic2Qub3JnL3B1Yi9PcGVuQlNEL09wZW5TU0gvcG9ydGFibGUvb3BlbnNzaC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vc3NoZF9jb25maWcgXAorICAgICAgICAgICBmaWxlOi8vc3NoX2NvbmZpZyBcCisgICAgICAgICAgIGZpbGU6Ly9pbml0IFwKKyAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnJHtQQU1fU1JDX1VSSX0nLCAnJywgZCl9IFwKKyAgICAgICAgICAgZmlsZTovL3NzaGQuc29ja2V0IFwKKyAgICAgICAgICAgZmlsZTovL3NzaGRALnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vc3NoZGdlbmtleXMuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly92b2xhdGlsZXMuOTlfc3NoZCBcCisgICAgICAgICAgIGZpbGU6Ly9hZGQtdGVzdC1zdXBwb3J0LWZvci1idXN5Ym94LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVuc3NoLTcuMXAxLWNvbmRpdGlvbmFsLWNvbXBpbGUtZGVzLWluLWNpcGhlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVuc3NoLTcuMXAxLWNvbmRpdGlvbmFsLWNvbXBpbGUtZGVzLWluLXBrY3MxMS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtcG90ZW50aWFsLXNpZ25lZC1vdmVyZmxvdy1pbi1wb2ludGVyLWFyaXRobWF0aWMucGF0Y2ggXAorICAgICAgICAgICAiCisKK1BBTV9TUkNfVVJJID0gImZpbGU6Ly9zc2hkIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZGZhZGQ5ZjAzNWQzOGNlNWQ1OGEzYmYxMzBiODZkMDgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2ZmYjk4OWE2ZGNhYTY5NTk0YzNiNTUwZDQ4NTVhNWEyZTE3MThjY2RkZTdmNWUzNjM4N2I0MjQyMjBmYmVjYyIKKworaW5oZXJpdCB1c2VyYWRkIHVwZGF0ZS1yYy5kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgc3lzdGVtZAorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59LXNzaGQiCitVU0VSQUREX1BBUkFNXyR7UE59LXNzaGQgPSAiLS1zeXN0ZW0gLS1uby1jcmVhdGUtaG9tZSAtLWhvbWUtZGlyIC92YXIvcnVuL3NzaGQgLS1zaGVsbCAvYmluL2ZhbHNlIC0tdXNlci1ncm91cCBzc2hkIgorSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfS1zc2hkIgorSU5JVFNDUklQVF9OQU1FXyR7UE59LXNzaGQgPSAic3NoZCIKK0lOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LXNzaGQgPSAiZGVmYXVsdHMgOSIKKworU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfS1zc2hkIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59LXNzaGQgPSAic3NoZC5zb2NrZXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwdGVzdAorCisjIExGUyBzdXBwb3J0OgorQ0ZMQUdTICs9ICItRF9fRklMRV9PRkZTRVRfQklUUz02NCIKKworIyBsb2dpbiBwYXRoIGlzIGhhcmRjb2RlZCBpbiBzc2hkCitFWFRSQV9PRUNPTkYgPSAiJ0xPR0lOX1BST0dSQU09JHtiYXNlX2JpbmRpcn0vbG9naW4nIFwKKyAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICctLXdpdGgtcGFtJywgJy0td2l0aG91dC1wYW0nLCBkKX0gXAorICAgICAgICAgICAgICAgIC0td2l0aG91dC16bGliLXZlcnNpb24tY2hlY2sgXAorICAgICAgICAgICAgICAgIC0td2l0aC1wcml2c2VwLXBhdGg9L3Zhci9ydW4vc3NoZCBcCisgICAgICAgICAgICAgICAgLS1zeXNjb25mZGlyPSR7c3lzY29uZmRpcn0vc3NoIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgteGF1dGg9L3Vzci9iaW4veGF1dGggXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1zdHJpcCBcCisgICAgICAgICAgICAgICAgIgorCisjIFNpbmNlIHdlIGRvIG5vdCBkZXBlbmQgb24gbGliYnNkLCB3ZSBkbyBub3Qgd2FudCBjb25maWd1cmUgdG8gdXNlIGl0CisjIGp1c3QgYmVjYXVzZSBpdCBmaW5kcyBsaWJ1dGlsLmguICBCdXQsIHNwZWNpZnlpbmcgLS1kaXNhYmxlLWxpYnV0aWwKKyMgY2F1c2VzIGNvbXBpbGUgZXJyb3JzLCBzby4uLgorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2hlYWRlcl9ic2RfbGlidXRpbF9oPW5vIGFjX2N2X2hlYWRlcl9saWJ1dGlsX2g9bm8iCisKKyMgcGFzc3dkIHBhdGggaXMgaGFyZGNvZGVkIGluIHNzaGQKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX1BBVEhfUEFTU1dEX1BST0c9JHtiaW5kaXJ9L3Bhc3N3ZCIKKworIyBXZSBkb24ndCB3YW50IHRvIGRlcGVuZCBvbiBsaWJibG9ja2ZpbGUKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9oZWFkZXJfbWFpbGxvY2tfaD1ubyIKKworIyBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgdWNsaWJjIGJlY2F1c2UgaW5jbHVkaW5nIHN0ZGlvLmgKKyMgcHVsbHMgaW4gcHRocmVhZHMuaCBhbmQgY2F1c2VzIGNvbmZsaWN0cyBpbiBmdW5jdGlvbiBwcm90b3R5cGVzLgorIyBUaGlzIHJlc3VsdHMgaW4gY29tcGlsYXRpb24gZmFpbHVyZSwgc28gdW5sZXNzIHRoaXMgaXMgZml4ZWQsCisjIGRpc2FibGUgcGFtIGZvciB1Y2xpYmMuCitFWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtdWNsaWJjPSIgLS13aXRob3V0LXBhbSIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCWV4cG9ydCBMRD0iJHtDQ30iCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZF9jb25maWcgJHtCfS8KKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hfY29uZmlnICR7Qn0vCisJaWYgWyAhIC1lIGFjaW5jbHVkZS5tNCAtYSAtZSBhY2xvY2FsLm00IF07IHRoZW4KKwkJY3AgYWNsb2NhbC5tNCBhY2luY2x1ZGUubTQKKwlmaQorfQorCitkb19jb21waWxlX3B0ZXN0KCkgeworICAgICAgICAjIHNraXAgcmVncmVzcy91bml0dGVzdHMvIGJpbmFyaWVzOiB0aGlzIHdpbGwgc2lsZW50bHkgc2tpcAorICAgICAgICAjIHVuaXR0ZXN0cyBpbiBydW4tcHRlc3RzIHdoaWNoIGlzIGdvb2QgYmVjYXVzZSB0aGV5IGFyZSBzbyBzbG93LgorICAgICAgICBvZV9ydW5tYWtlIHJlZ3Jlc3MvbW9kcGlwZSByZWdyZXNzL3NldHVpZC1hbGxvd2VkIHJlZ3Jlc3MvbmV0Y2F0Cit9CisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlpZiBbICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdwYW0nLCAnJywgZCl9IiA9ICJwYW0iIF07IHRoZW4KKwkJaW5zdGFsbCAtRCAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZCAke0R9JHtzeXNjb25mZGlyfS9wYW0uZC9zc2hkCisJCXNlZCAtaSAtZSAnczojVXNlUEFNIG5vOlVzZVBBTSB5ZXM6JyAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWcKKwlmaQorCisJaWYgWyAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneDExJywgJycsIGQpfSIgPSAieDExIiBdOyB0aGVuCisJCXNlZCAtaSAtZSAnczojWDExRm9yd2FyZGluZyBubzpYMTFGb3J3YXJkaW5nIHllczonICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZworCWZpCisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3NzaGQKKwlybSAtZiAke0R9JHtiaW5kaXJ9L3Nsb2dpbiAke0R9JHtkYXRhZGlyfS9Tc2guYmluCisJcm1kaXIgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuL3NzaGQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuICR7RH0ke2xvY2Fsc3RhdGVkaXJ9CisJaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKKwlpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L3ZvbGF0aWxlcy45OV9zc2hkICR7RH0vJHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy85OV9zc2hkCisJaW5zdGFsbCAtbSAwNzU1ICR7U30vY29udHJpYi9zc2gtY29weS1pZCAke0R9JHtiaW5kaXJ9CisKKwkjIENyZWF0ZSBjb25maWcgZmlsZXMgZm9yIHJlYWQtb25seSByb290ZnMKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3NzaAorCWluc3RhbGwgLW0gNjQ0ICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZyAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKKwlzZWQgLWkgJy9Ib3N0S2V5L2QnICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQorCWVjaG8gIkhvc3RLZXkgL3Zhci9ydW4vc3NoL3NzaF9ob3N0X3JzYV9rZXkiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQorCWVjaG8gIkhvc3RLZXkgL3Zhci9ydW4vc3NoL3NzaF9ob3N0X2RzYV9rZXkiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQorCWVjaG8gIkhvc3RLZXkgL3Zhci9ydW4vc3NoL3NzaF9ob3N0X2VjZHNhX2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5CisJZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfZWQyNTUxOV9rZXkiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQorCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCWluc3RhbGwgLWMgLW0gMDY0NCAke1dPUktESVJ9L3NzaGQuc29ja2V0ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJaW5zdGFsbCAtYyAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZEAuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCWluc3RhbGwgLWMgLW0gMDY0NCAke1dPUktESVJ9L3NzaGRnZW5rZXlzLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlzZWQgLWkgLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCisJCS1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKKwkJLWUgJ3MsQEJJTkRJUkAsJHtiaW5kaXJ9LGcnIFwKKwkJJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3NoZC5zb2NrZXQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKi5zZXJ2aWNlCit9CisKK2RvX2luc3RhbGxfcHRlc3QgKCkgeworCXNlZCAtaSAtZSAic3xeU0ZUUFNFUlZFUj0uKnxTRlRQU0VSVkVSPSR7bGliZXhlY2Rpcn0vc2Z0cC1zZXJ2ZXJ8IiByZWdyZXNzL3Rlc3QtZXhlYy5zaAorCWNwIC1yIHJlZ3Jlc3MgJHtEfSR7UFRFU1RfUEFUSH0KK30KKworQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKKworUEFDS0FHRVMgPSsgIiR7UE59LWtleWdlbiAke1BOfS1zY3AgJHtQTn0tc3NoICR7UE59LXNzaGQgJHtQTn0tc2Z0cCAke1BOfS1taXNjICR7UE59LXNmdHAtc2VydmVyIgorRklMRVNfJHtQTn0tc2NwID0gIiR7YmluZGlyfS9zY3AuJHtCUE59IgorRklMRVNfJHtQTn0tc3NoID0gIiR7YmluZGlyfS9zc2guJHtCUE59ICR7c3lzY29uZmRpcn0vc3NoL3NzaF9jb25maWciCitGSUxFU18ke1BOfS1zc2hkID0gIiR7c2JpbmRpcn0vc3NoZCAke3N5c2NvbmZkaXJ9L2luaXQuZC9zc2hkICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0iCitGSUxFU18ke1BOfS1zc2hkICs9ICIke3N5c2NvbmZkaXJ9L3NzaC9tb2R1bGkgJHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWcgJHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkgJHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy85OV9zc2hkICR7c3lzY29uZmRpcn0vcGFtLmQvc3NoZCIKK0ZJTEVTXyR7UE59LXNmdHAgPSAiJHtiaW5kaXJ9L3NmdHAiCitGSUxFU18ke1BOfS1zZnRwLXNlcnZlciA9ICIke2xpYmV4ZWNkaXJ9L3NmdHAtc2VydmVyIgorRklMRVNfJHtQTn0tbWlzYyA9ICIke2JpbmRpcn0vc3NoKiAke2xpYmV4ZWNkaXJ9L3NzaCoiCitGSUxFU18ke1BOfS1rZXlnZW4gPSAiJHtiaW5kaXJ9L3NzaC1rZXlnZW4iCisKK1JERVBFTkRTXyR7UE59ICs9ICIke1BOfS1zY3AgJHtQTn0tc3NoICR7UE59LXNzaGQgJHtQTn0ta2V5Z2VuIgorUkRFUEVORFNfJHtQTn0tc3NoZCArPSAiJHtQTn0ta2V5Z2VuICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3BhbS1wbHVnaW4ta2V5aW5pdCBwYW0tcGx1Z2luLWxvZ2ludWlkJywgJycsIGQpfSIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIke1BOfS1zZnRwICR7UE59LW1pc2MgJHtQTn0tc2Z0cC1zZXJ2ZXIgbWFrZSIKKworUlBST1ZJREVTXyR7UE59LXNzaCA9ICJzc2giCitSUFJPVklERVNfJHtQTn0tc3NoZCA9ICJzc2hkIgorCitSQ09ORkxJQ1RTXyR7UE59ID0gImRyb3BiZWFyIgorUkNPTkZMSUNUU18ke1BOfS1zc2hkID0gImRyb3BiZWFyIgorUkNPTkZMSUNUU18ke1BOfS1rZXlnZW4gPSAic3NoLWtleWdlbiIKKworQ09ORkZJTEVTXyR7UE59LXNzaGQgPSAiJHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWciCitDT05GRklMRVNfJHtQTn0tc3NoID0gIiR7c3lzY29uZmRpcn0vc3NoL3NzaF9jb25maWciCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjkwIgorQUxURVJOQVRJVkVfJHtQTn0tc2NwID0gInNjcCIKK0FMVEVSTkFUSVZFXyR7UE59LXNzaCA9ICJzc2giCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wuaW5jCmluZGV4IGE1ZGRmNGQuLmYzYTJjNWEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLmluYwpAQCAtOCw3ICs4LDcgQEAKIExJQ0VOU0UgPSAib3BlbnNzbCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWY5YThmOTY4MTA3MzQ1ZTBiNzVhYThjMmVjYWE3ZWM4IgogCi1ERVBFTkRTID0gImhvc3RwZXJsLXJ1bnRpbWUtbmF0aXZlIgorREVQRU5EUyA9ICJtYWtlZGVwZW5kLW5hdGl2ZSBob3N0cGVybC1ydW50aW1lLW5hdGl2ZSIKIERFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgb3BlbnNzbC1uYXRpdmUiCiAKIFNSQ19VUkkgPSAiaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2Uvb3BlbnNzbC0ke1BWfS50YXIuZ3ogXApAQCAtMzYsMTUgKzM2LDE1IEBACiBGSUxFU19saWJjcnlwdG8gPSAiJHtsaWJkaXJ9L2xpYmNyeXB0byR7U09MSUJTfSIKIEZJTEVTX2xpYnNzbCA9ICIke2xpYmRpcn0vbGlic3NsJHtTT0xJQlN9IgogRklMRVNfJHtQTn0gPSsgIiAke2xpYmRpcn0vc3NsLyoiCi1GSUxFU18ke1BOfS1taXNjID0gIiR7bGliZGlyfS9zc2wvbWlzYyAke2JpbmRpcn0vY19yZWhhc2giCitGSUxFU18ke1BOfS1taXNjID0gIiR7bGliZGlyfS9zc2wvbWlzYyIKIFJERVBFTkRTXyR7UE59LW1pc2MgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncGVybCcsICdwZXJsJywgJycsIGQpfSIKIAogIyBBZGQgdGhlIG9wZW5zc2wuY25mIGZpbGUgdG8gdGhlIG9wZW5zc2wtY29uZiBwYWNrYWdlLiAgTWFrZSB0aGUgbGliY3J5cHRvCiAjIHBhY2thZ2UgUlJFQ09NTUVORFMgb24gdGhpcyBwYWNrYWdlLiAgVGhpcyB3aWxsIGVuYWJsZSB0aGUgY29uZmlndXJhdGlvbgogIyBmaWxlIHRvIGJlIGluc3RhbGxlZCBmb3IgYm90aCB0aGUgYmFzZSBvcGVuc3NsIHBhY2thZ2UgYW5kIHRoZSBsaWJjcnlwdG8KICMgcGFja2FnZSBzaW5jZSB0aGUgYmFzZSBvcGVuc3NsIHBhY2thZ2UgZGVwZW5kcyBvbiB0aGUgbGliY3J5cHRvIHBhY2thZ2UuCi1GSUxFU19vcGVuc3NsLWNvbmYgPSAiJHtsaWJkaXJ9L3NzbC9vcGVuc3NsLmNuZiIKLUNPTkZGSUxFU19vcGVuc3NsLWNvbmYgPSAiJHtsaWJkaXJ9L3NzbC9vcGVuc3NsLmNuZiIKK0ZJTEVTX29wZW5zc2wtY29uZiA9ICIke3N5c2NvbmZkaXJ9L3NzbC9vcGVuc3NsLmNuZiIKK0NPTkZGSUxFU19vcGVuc3NsLWNvbmYgPSAiJHtzeXNjb25mZGlyfS9zc2wvb3BlbnNzbC5jbmYiCiBSUkVDT01NRU5EU19saWJjcnlwdG8gKz0gIm9wZW5zc2wtY29uZiIKIFJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIke1BOfS1taXNjIG1ha2UgcGVybCBwZXJsLW1vZHVsZS1maWxlaGFuZGxlIGJjIgogCkBAIC0xMTQsNyArMTE0LDEwIEBACiAJCXRhcmdldD1kZWJpYW4tbWlwc2VsCiAJCTs7CiAgICAgICAgIGxpbnV4LSotbWlwczY0IHwgbGludXgtbWlwczY0KQotICAgICAgICAgICAgICAgdGFyZ2V0PWxpbnV4LW1pcHMKKyAgICAgICAgICAgICAgIHRhcmdldD1kZWJpYW4tbWlwczY0CisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgbGludXgtKi1taXBzNjRlbCB8IGxpbnV4LW1pcHM2NGVsKQorICAgICAgICAgICAgICAgdGFyZ2V0PWRlYmlhbi1taXBzNjRlbAogICAgICAgICAgICAgICAgIDs7CiAJbGludXgtbWljcm9ibGF6ZSp8bGludXgtbmlvczIqKQogCQl0YXJnZXQ9bGludXgtZ2VuZXJpYzMyCkBAIC0xNDksMTAgKzE1MiwxNCBAQAogfQogCiBkb19jb21waWxlICgpIHsKKwlvZV9ydW5tYWtlIGRlcGVuZAogCW9lX3J1bm1ha2UKIH0KIAogZG9fY29tcGlsZV9wdGVzdCAoKSB7CisJIyBidWlsZCBkZXBlbmRlbmNpZXMgZm9yIHRlc3QgZGlyZWN0b3J5IHRvbworCWV4cG9ydCBESVJTPSIkRElSUyB0ZXN0IgorCW9lX3J1bm1ha2UgZGVwZW5kCiAJb2VfcnVubWFrZSBidWlsZHRlc3QKIH0KIApAQCAtMTY4LDM2ICsxNzUsNjAgQEAKIAlpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9CiAJY3AgLS1kZXJlZmVyZW5jZSAtUiBpbmNsdWRlL29wZW5zc2wgJHtEfSR7aW5jbHVkZWRpcn0KIAorCWluc3RhbGwgLURtIDA3NTUgJHtXT1JLRElSfS9vcGVuc3NsLWNfcmVoYXNoLnNoICR7RH0ke2JpbmRpcn0vY19yZWhhc2gKKwlzZWQgLWkgLWUgJ3MsL2V0Yy9vcGVuc3NsLCR7c3lzY29uZmRpcn0vc3NsLGcnICR7RH0ke2JpbmRpcn0vY19yZWhhc2gKKwogCW9lX211bHRpbGliX2hlYWRlciBvcGVuc3NsL29wZW5zc2xjb25mLmgKIAlpZiBbICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwZXJsJywgJ3BlcmwnLCAnJywgZCl9IiA9ICJwZXJsIiBdOyB0aGVuCi0JCWluc3RhbGwgLW0gMDc1NSAke1N9L3Rvb2xzL2NfcmVoYXNoICR7RH0ke2JpbmRpcn0KLQkJc2VkIC1pIC1lICcxcywuKiwjISR7YmluZGlyfS9lbnYgcGVybCwnICR7RH0ke2JpbmRpcn0vY19yZWhhc2gKIAkJc2VkIC1pIC1lICcxcywuKiwjISR7YmluZGlyfS9lbnYgcGVybCwnICR7RH0ke2xpYmRpcn0vc3NsL21pc2MvQ0EucGwKIAkJc2VkIC1pIC1lICcxcywuKiwjISR7YmluZGlyfS9lbnYgcGVybCwnICR7RH0ke2xpYmRpcn0vc3NsL21pc2MvdHNnZXQKLQkJIyBUaGUgY19yZWhhc2ggdXRpbGl0eSBpc24ndCBpbnN0YWxsZWQgYnkgdGhlIG5vcm1hbCBpbnN0YWxsYXRpb24gcHJvY2Vzcy4KIAllbHNlCi0JCXJtIC1mICR7RH0ke2JpbmRpcn0vY19yZWhhc2gKIAkJcm0gLWYgJHtEfSR7bGliZGlyfS9zc2wvbWlzYy9DQS5wbCAke0R9JHtsaWJkaXJ9L3NzbC9taXNjL3RzZ2V0CiAJZmkKKworCSMgQ3JlYXRlIFNTTCBzdHJ1Y3R1cmUKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3NzbC8KKwltdiAke0R9JHtsaWJkaXJ9L3NzbC9vcGVuc3NsLmNuZiBcCisJICAgJHtEfSR7bGliZGlyfS9zc2wvY2VydHMgXAorCSAgICR7RH0ke2xpYmRpcn0vc3NsL3ByaXZhdGUgXAorCSAgIFwKKwkgICAke0R9JHtzeXNjb25mZGlyfS9zc2wvCisJbG4gLXNmICR7c3lzY29uZmRpcn0vc3NsL2NlcnRzICR7RH0ke2xpYmRpcn0vc3NsL2NlcnRzCisJbG4gLXNmICR7c3lzY29uZmRpcn0vc3NsL3ByaXZhdGUgJHtEfSR7bGliZGlyfS9zc2wvcHJpdmF0ZQorCWxuIC1zZiAke3N5c2NvbmZkaXJ9L3NzbC9vcGVuc3NsLmNuZiAke0R9JHtsaWJkaXJ9L3NzbC9vcGVuc3NsLmNuZgogfQogCiBkb19pbnN0YWxsX3B0ZXN0ICgpIHsKIAljcCAtciAtTCBNYWtlZmlsZS5vcmcgTWFrZWZpbGUgdGVzdCAke0R9JHtQVEVTVF9QQVRIfQogCWNwIENvbmZpZ3VyZSBjb25maWcgZV9vcy5oICR7RH0ke1BURVNUX1BBVEh9CiAJY3AgLXIgLUwgaW5jbHVkZSAke0R9JHtQVEVTVF9QQVRIfQotCWxuIC1zZiAke2Jhc2VfbGliZGlyfS9saWJjcnlwdG8uYSAke0R9JHtQVEVTVF9QQVRIfQorCWxuIC1zZiAke2xpYmRpcn0vbGliY3J5cHRvLmEgJHtEfSR7UFRFU1RfUEFUSH0KIAlsbiAtc2YgJHtsaWJkaXJ9L2xpYnNzbC5hICR7RH0ke1BURVNUX1BBVEh9CiAJbWtkaXIgLXAgJHtEfSR7UFRFU1RfUEFUSH0vY3J5cHRvCiAJY3AgY3J5cHRvL2NvbnN0YW50X3RpbWVfbG9jbC5oICR7RH0ke1BURVNUX1BBVEh9L2NyeXB0bwogCWNwIC1yIGNlcnRzICR7RH0ke1BURVNUX1BBVEh9CiAJbWtkaXIgLXAgJHtEfSR7UFRFU1RfUEFUSH0vYXBwcwogCWxuIC1zZiAke2xpYmRpcn0vc3NsL21pc2MvQ0Euc2ggICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKLQlsbiAtc2YgJHtsaWJkaXJ9L3NzbC9vcGVuc3NsLmNuZiAke0R9JHtQVEVTVF9QQVRIfS9hcHBzCisJbG4gLXNmICR7c3lzY29uZmRpcn0vc3NsL29wZW5zc2wuY25mICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKIAlsbiAtc2YgJHtiaW5kaXJ9L29wZW5zc2wgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9hcHBzCisJY3AgYXBwcy9zZXJ2ZXIucGVtICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9hcHBzCiAJY3AgYXBwcy9zZXJ2ZXIyLnBlbSAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9hcHBzCiAJbWtkaXIgLXAgJHtEfSR7UFRFU1RfUEFUSH0vdXRpbAogCWluc3RhbGwgdXRpbC9vcGVuc3Nsd3JhcC5zaCAgICAke0R9JHtQVEVTVF9QQVRIfS91dGlsCiAJaW5zdGFsbCB1dGlsL3NobGliX3dyYXAuc2ggICAgICR7RH0ke1BURVNUX1BBVEh9L3V0aWwKKwkjIFRpbWUgc3RhbXBzIGFyZSByZWxldmFudCBmb3IgIm1ha2UgYWxsdGVzdHMiLCBvdGhlcndpc2UKKwkjIG1ha2UgbWF5IHRyeSB0byByZWNvbXBpbGUgYmluYXJpZXMuIE5vdCBvbmx5IG11c3QgdGhlCisJIyBiaW5hcnkgZmlsZXMgYmUgbmV3ZXIgdGhhbiB0aGUgc291cmNlcywgdGhleSBhbHNvIG11c3QKKwkjIGJlIG1vcmUgcmVjZW50IHRoYW4gdGhlIGhlYWRlciBmaWxlcyBpbiAvdXNyL2luY2x1ZGUuCisJIworCSMgVXNpbmcgImNwIC1hIiBpcyBub3Qgc3VmZmljaWVudCwgYmVjYXVzZSBkb19pbnN0YWxsCisJIyBkb2VzIG5vdCBwcmVzZXJ2ZSB0aGUgb3JpZ2luYWwgdGltZSBzdGFtcHMuCisJIworCSMgU28gaW5zdGVhZCBvZiB1c2luZyB0aGUgb3JpZ2luYWwgZmlsZSBzdGFtcHMsIHdlIHNldAorCSMgdGhlIGN1cnJlbnQgdGltZSBmb3IgYWxsIGZpbGVzLiBCaW5hcmllcyB3aWxsIGdldAorCSMgbW9kaWZpZWQgYWdhaW4gbGF0ZXIgd2hlbiBzdHJpcHBpbmcgdGhlbSwgYnV0IHRoYXQncyBva2F5LgorCXRvdWNoICR7RH0ke1BURVNUX1BBVEh9CisJZmluZCAke0R9JHtQVEVTVF9QQVRIfSAtdHlwZSBmIC1wcmludDAgfCB4YXJncyAtLXZlcmJvc2UgLTAgdG91Y2ggLXIgJHtEfSR7UFRFU1RfUEFUSH0KIH0KIAogZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2NyeXB0b191c2VfYmlnaW50X2luX3g4Ni02NF9wZXJsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2NyeXB0b191c2VfYmlnaW50X2luX3g4Ni02NF9wZXJsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZjM5ODlmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9jcnlwdG9fdXNlX2JpZ2ludF9pbl94ODYtNjRfcGVybC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotV2hlbiBidWlsZGluZyBvbiB4MzIgc3lzdGVtcyB3aGVyZSB0aGUgZGVmYXVsdCB0eXBlIGlzIDMyYml0LCBtYWtlIHN1cmUKLXdlIGNhbiB0cmFuc3BhcmVudGx5IHJlcHJlc2VudCA2NGJpdCBpbnRlZ2Vycy4gIE90aGVyd2lzZSB3ZSBlbmQgdXAgd2l0aAotYnVpbGQgZXJyb3JzIGxpa2U6Ci0vdXNyL2Jpbi9wZXJsIGFzbS9naGFzaC14ODZfNjQucGwgZWxmID4gZ2hhc2gteDg2XzY0LnMKLUludGVnZXIgb3ZlcmZsb3cgaW4gaGV4YWRlY2ltYWwgbnVtYmVyIGF0IGFzbS8uLi8uLi9wZXJsYXNtL3g4Nl82NC14bGF0ZS5wbCBsaW5lIDIwMSwgPD4gbGluZSA4OTAuCi0uLi4KLWdoYXNoLXg4Nl82NC5zOiBBc3NlbWJsZXIgbWVzc2FnZXM6Ci1naGFzaC14ODZfNjQuczo4OTA6IEVycm9yOiBqdW5rICcuMTU0NzMzNTU0Nzk5OTVlKzE5JyBhZnRlciBleHByZXNzaW9uCi0KLVdlIGRvbid0IGVuYWJsZSB0aGlzIGdsb2JhbGx5IGFzIHRoZXJlIGFyZSBzb21lIGNhc2VzIHdoZXJlIHdlJ2QgZ2V0Ci0zMmJpdCB2YWx1ZXMgaW50ZXJwcmV0ZWQgYXMgdW5zaWduZWQgd2hlbiB3ZSBuZWVkIHRoZW0gYXMgc2lnbmVkLgotCi1SZXBvcnRlZC1ieTogQmVydHJhbmQgSmFjcXVpbiA8YmVydHJhbmRAamFjcXVpbi5iemg+Ci1VUkw6IGh0dHBzOi8vYnVncy5nZW50b28ub3JnLzU0MjYxOAotCi1TaWduZWQtb2ZmLUJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotSW5kZXg6IG9wZW5zc2wtMS4wLjJhL2NyeXB0by9wZXJsYXNtL3g4Nl82NC14bGF0ZS5wbAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG9wZW5zc2wtMS4wLjJhLm9yaWcvY3J5cHRvL3Blcmxhc20veDg2XzY0LXhsYXRlLnBsCi0rKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL3Blcmxhc20veDg2XzY0LXhsYXRlLnBsCi1AQCAtMTk0LDcgKzE5NCwxMCBAQCBteSAlZ2xvYmFsczsKLSAgICAgfQotICAgICBzdWIgb3V0IHsKLSAgICAgCW15ICRzZWxmID0gc2hpZnQ7Ci0tCi0rCSMgV2hlbiBidWlsZGluZyBvbiB4MzIgQUJJcywgdGhlIGV4cGFuZGVkIGhleCB2YWx1ZSBtaWdodCBiZSB0b28KLSsJIyBiaWcgdG8gZml0IGludG8gMzJiaXRzLiBFbmFibGUgdHJhbnNwYXJlbnQgNjRiaXQgc3VwcG9ydCBoZXJlCi0rCSMgc28gd2UgY2FuIHNhZmVseSBwcmludCBpdCBvdXQuCi0rCXVzZSBiaWdpbnQ7Ci0gCWlmICgkZ2FzKSB7Ci0gCSAgICAjIFNvbGFyaXMgL3Vzci9jY3MvYmluL2FzIGNhbid0IGhhbmRsZSBtdWx0aXBsaWNhdGlvbnMKLSAJICAgICMgaW4gJHNlbGYtPnt2YWx1ZX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9kZWJpYW4vY2EucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZGViaWFuL2NhLnBhdGNoCmluZGV4IGFiYTRkNDIuLmZiNzQ1ZTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9kZWJpYW4vY2EucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2RlYmlhbi9jYS5wYXRjaApAQCAtNyw3ICs3LDcgQEAKIEBAIC02NSw2ICs2NSw3IEBACiAgZm9yZWFjaCAoQEFSR1YpIHsKICAJaWYgKCAvXigtXD98LWh8LWhlbHApJC8gKSB7Ci0gCSAgICBwcmludCBTVERFUlIgInVzYWdlOiBDQSAtbmV3Y2VydHwtbmV3cmVxfC1uZXdyZXEtbm9kZXN8LW5ld2NhfC1zaWdufC12ZXJpZnlcbiI7CisgCSAgICBwcmludCBTVERFUlIgInVzYWdlOiBDQSAtbmV3Y2VydHwtbmV3cmVxfC1uZXdyZXEtbm9kZXN8LW5ld2NhfC1zaWdufC1zaWduY2VydHwtdmVyaWZ5XG4iOwogKwkgICAgcHJpbnQgU1RERVJSICJ1c2FnZTogQ0EgLXNpZ25jZXJ0IGNlcnRmaWxlIGtleWZpbGV8LW5ld2NlcnR8LW5ld3JlcXwtbmV3Y2F8LXNpZ258LXZlcmlmeVxuIjsKICAJICAgIGV4aXQgMDsKICAJfSBlbHNpZiAoL14tbmV3Y2VydCQvKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZml4LWNpcGhlci1kZXMtZWRlMy1jZmIxLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2ZpeC1jaXBoZXItZGVzLWVkZTMtY2ZiMS5wYXRjaAppbmRleCAwNmQxZWE2Li4yYTMxOGE0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZml4LWNpcGhlci1kZXMtZWRlMy1jZmIxLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9maXgtY2lwaGVyLWRlcy1lZGUzLWNmYjEucGF0Y2gKQEAgLTQsNyArNCw3IEBACiB0aGUgY2lwaGVyIGRlcy1lZGUzLWNmYjEuIENvbXBsZXRlIGJ1ZyBsb2cgYW5kIHBhdGNoIGlzIHByZXNlbnQgaGVyZToKIGh0dHA6Ly9ydC5vcGVuc3NsLm9yZy9UaWNrZXQvRGlzcGxheS5odG1sP2lkPTI4NjcKIAotU2lnbmVkLU9mZi1CeTogTXVoYW1tYWQgU2hha2VlbCA8bXVoYW1tYWRfc2hha2VlbEBtZW50b3IuY29tPgorU2lnbmVkLW9mZi1ieTogTXVoYW1tYWQgU2hha2VlbCA8bXVoYW1tYWRfc2hha2VlbEBtZW50b3IuY29tPgogCiBJbmRleDogb3BlbnNzbC0xLjAuMi9jcnlwdG8vZXZwL2VfZGVzMy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvb3BlbnNzbC1hdm9pZC1OVUxMLXBvaW50ZXItZGVyZWZlcmVuY2UtaW4tRVZQX0RpZ2VzdEluaXRfZXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvb3BlbnNzbC1hdm9pZC1OVUxMLXBvaW50ZXItZGVyZWZlcmVuY2UtaW4tRVZQX0RpZ2VzdEluaXRfZXgucGF0Y2gKaW5kZXggY2ViYzhjZi4uZjczNmU1YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL29wZW5zc2wtYXZvaWQtTlVMTC1wb2ludGVyLWRlcmVmZXJlbmNlLWluLUVWUF9EaWdlc3RJbml0X2V4LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9vcGVuc3NsLWF2b2lkLU5VTEwtcG9pbnRlci1kZXJlZmVyZW5jZS1pbi1FVlBfRGlnZXN0SW5pdF9leC5wYXRjaApAQCAtOCwxNiArOCwxNiBAQAogCiBTaWduZWQtb2ZmLWJ5OiBYdWZlbmcgWmhhbmcgPHh1ZmVuZy56aGFuZ0B3aW5kcml2ZXIuY29tPgogLS0tCi1JbmRleDogb3BlbnNzbC0xLjAuMi9jcnlwdG8vZXZwL2RpZ2VzdC5jCitJbmRleDogb3BlbnNzbC0xLjAuMmgvY3J5cHRvL2V2cC9kaWdlc3QuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG9wZW5zc2wtMS4wLjIub3JpZy9jcnlwdG8vZXZwL2RpZ2VzdC5jCi0rKysgb3BlbnNzbC0xLjAuMi9jcnlwdG8vZXZwL2RpZ2VzdC5jCi1AQCAtMjA4LDcgKzIwOCw3IEBAIGludCBFVlBfRGlnZXN0SW5pdF9leChFVlBfTURfQ1RYICpjdHgsIGMKLSAgICAgICAgIHJldHVybiAwOworLS0tIG9wZW5zc2wtMS4wLjJoLm9yaWcvY3J5cHRvL2V2cC9kaWdlc3QuYworKysrIG9wZW5zc2wtMS4wLjJoL2NyeXB0by9ldnAvZGlnZXN0LmMKK0BAIC0yMTEsNyArMjExLDcgQEAgaW50IEVWUF9EaWdlc3RJbml0X2V4KEVWUF9NRF9DVFggKmN0eCwgYworICAgICAgICAgdHlwZSA9IGN0eC0+ZGlnZXN0OwogICAgICB9CiAgI2VuZGlmCiAtICAgIGlmIChjdHgtPmRpZ2VzdCAhPSB0eXBlKSB7CiArICAgIGlmICh0eXBlICYmIChjdHgtPmRpZ2VzdCAhPSB0eXBlKSkgewotICAgICAgICAgaWYgKGN0eC0+ZGlnZXN0ICYmIGN0eC0+ZGlnZXN0LT5jdHhfc2l6ZSkKKyAgICAgICAgIGlmIChjdHgtPmRpZ2VzdCAmJiBjdHgtPmRpZ2VzdC0+Y3R4X3NpemUpIHsKICAgICAgICAgICAgICBPUEVOU1NMX2ZyZWUoY3R4LT5tZF9kYXRhKTsKLSAgICAgICAgIGN0eC0+ZGlnZXN0ID0gdHlwZTsKKyAgICAgICAgICAgICBjdHgtPm1kX2RhdGEgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL29wZW5zc2wtY19yZWhhc2guc2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvb3BlbnNzbC1jX3JlaGFzaC5zaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjdmNDE1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL29wZW5zc2wtY19yZWhhc2guc2gKQEAgLTAsMCArMSwyMTAgQEAKKyMhL2Jpbi9zaAorIworIyBCZW4gU2VjcmVzdCA8YmxzZWNyZXNAZ21haWwuY29tPgorIworIyBzaCBjX3JlaGFzaCBzY3JpcHQsIHNjYW4gYWxsIGZpbGVzIGluIGEgZGlyZWN0b3J5CisjIGFuZCBhZGQgc3ltYm9saWMgbGlua3MgdG8gdGhlaXIgaGFzaCB2YWx1ZXMuCisjCisjIGJhc2VkIG9uIHRoZSBjX3JlaGFzaCBwZXJsIHNjcmlwdCBkaXN0cmlidXRlZCB3aXRoIG9wZW5zc2wKKyMKKyMgTElDRU5TRTogU2VlIE9wZW5TU0wgbGljZW5zZQorIyBeXmFjY2VwdGFibGU/Xl4KKyMKKworIyBkZWZhdWx0IGNlcnRpZmljYXRlIGxvY2F0aW9uCitESVI9L2V0Yy9vcGVuc3NsCisKKyMgZm9yIGZpbGV0eXBlIGJpdGZpZWxkCitJU19DRVJUPSQoKCAxIDw8IDAgKSkKK0lTX0NSTD0kKCggMSA8PCAxICkpCisKKworIyBjaGVjayB0byBzZWUgaWYgYSBmaWxlIGlzIGEgY2VydGlmaWNhdGUgZmlsZSBvciBhIENSTCBmaWxlCisjIGFyZ3VtZW50czoKKyMgICAgICAgMS4gdGhlIGZpbGVuYW1lIHRvIGJlIHNjYW5uZWQKKyMgcmV0dXJuczoKKyMgICAgICAgYml0ZmllbGQgb2YgZmlsZSB0eXBlOyB1c2VzICR7SVNfQ0VSVH0gYW5kICR7SVNfQ1JMfQorIworY2hlY2tfZmlsZSgpCit7CisgICAgbG9jYWwgSVNfVFlQRT0wCisKKyAgICAjIG1ha2UgSUZTIGEgbmV3bGluZSBzbyB3ZSBjYW4gcHJvY2VzcyBncmVwIG91dHB1dCBsaW5lIGJ5IGxpbmUKKyAgICBsb2NhbCBPTERJRlM9JHtJRlN9CisgICAgSUZTPSQoIHByaW50ZiAiXG4iICkKKworICAgICMgWFhYOiBjb3VsZCBiZSBtb3JlIGVmZmljaWVudCB0byBoYXZlIHR3byAnZ3JlcCAtbScgYnV0IGlzIC1tIHBvcnRhYmxlPworICAgIGZvciBMSU5FIGluICQoIGdyZXAgJ14tLS0tLUJFR0lOIC4qLS0tLS0nICR7MX0gKQorICAgIGRvCisJaWYgZWNobyAke0xJTkV9IFwKKwkgICAgfCBncmVwIC1xIC1FICdeLS0tLS1CRUdJTiAoWDUwOSB8VFJVU1RFRCApP0NFUlRJRklDQVRFLS0tLS0nCisJdGhlbgorCSAgICBJU19UWVBFPSQoKCAke0lTX1RZUEV9IHwgJHtJU19DRVJUfSApKQorCisJICAgIGlmIFsgJCgoICR7SVNfVFlQRX0gJiAke0lTX0NSTH0gKSkgLW5lIDAgXQorCSAgICB0aGVuCisJICAgIAlicmVhaworCSAgICBmaQorCWVsaWYgZWNobyAke0xJTkV9IHwgZ3JlcCAtcSAnXi0tLS0tQkVHSU4gWDUwOSBDUkwtLS0tLScKKwl0aGVuCisJICAgIElTX1RZUEU9JCgoICR7SVNfVFlQRX0gfCAke0lTX0NSTH0gKSkKKworCSAgICBpZiBbICQoKCAke0lTX1RZUEV9ICYgJHtJU19DRVJUfSApKSAtbmUgMCBdCisJICAgIHRoZW4KKwkgICAgCWJyZWFrCisJICAgIGZpCisJZmkKKyAgICBkb25lCisKKyAgICAjIHJlc3RvcmUgSUZTCisgICAgSUZTPSR7T0xESUZTfQorCisgICAgcmV0dXJuICR7SVNfVFlQRX0KK30KKworCisjCisjIHVzZSBvcGVuc3NsIHRvIGZpbmdlcnByaW50IGEgZmlsZQorIyAgICBhcmd1bWVudHM6CisjCTEuIHRoZSBmaWxlbmFtZSB0byBmaW5nZXJwcmludAorIwkyLiB0aGUgbWV0aG9kIHRvIHVzZSAoeDUwOSwgY3JsKQorIyAgICByZXR1cm5zOgorIwlub25lCisjICAgIGFzc3VtcHRpb25zOgorIwl1c2VyIHdpbGwgY2FwdHVyZSBvdXRwdXQgZnJvbSBsYXN0IHN0YWdlIG9mIHBpcGVsaW5lCisjCitmaW5nZXJwcmludCgpCit7CisgICAgJHtTU0xfQ01EfSAkezJ9IC1maW5nZXJwcmludCAtbm9vdXQgLWluICR7MX0gfCBzZWQgJ3MvXi4qPS8vJyB8IHRyIC1kICc6JworfQorCisKKyMKKyMgbGlua19oYXNoIC0gY3JlYXRlIGxpbmtzIHRvIGNlcnRpZmljYXRlIGZpbGVzCisjICAgIGFyZ3VtZW50czoKKyMgICAgICAgMS4gdGhlIGZpbGVuYW1lIHRvIGNyZWF0ZSBhIGxpbmsgZm9yCisjCTIuIHRoZSB0eXBlIG9mIGNlcnRpZmljYXRlIGJlaW5nIGxpbmtlZCAoeDUwOSwgY3JsKQorIyAgICByZXR1cm5zOgorIwkwIG9uIHN1Y2Nlc3MsIDEgb3RoZXJ3aXNlCisjCitsaW5rX2hhc2goKQoreworICAgIGxvY2FsIEZJTkdFUlBSSU5UPSQoIGZpbmdlcnByaW50ICR7MX0gJHsyfSApCisgICAgbG9jYWwgSEFTSD0kKCAke1NTTF9DTUR9ICR7Mn0gLWhhc2ggLW5vb3V0IC1pbiAkezF9ICkKKyAgICBsb2NhbCBTVUZGSVg9MAorICAgIGxvY2FsIExJTktGSUxFPScnCisgICAgbG9jYWwgVEFHPScnCisKKyAgICBpZiBbICR7Mn0gPSAiY3JsIiBdCisgICAgdGhlbgorICAgIAlUQUc9J3InCisgICAgZmkKKworICAgIExJTktGSUxFPSR7SEFTSH0uJHtUQUd9JHtTVUZGSVh9CisKKyAgICB3aGlsZSBbIC1mICR7TElOS0ZJTEV9IF0KKyAgICBkbworCWlmIFsgJHtGSU5HRVJQUklOVH0gPSAkKCBmaW5nZXJwcmludCAke0xJTktGSUxFfSAkezJ9ICkgXQorCXRoZW4KKwkgICAgZWNobyAiTk9URTogU2tpcHBpbmcgZHVwbGljYXRlIGZpbGUgJHsxfSIgPiYyCisJICAgIHJldHVybiAxCisJZmkJCisKKwlTVUZGSVg9JCgoICR7U1VGRklYfSArIDEgKSkKKwlMSU5LRklMRT0ke0hBU0h9LiR7VEFHfSR7U1VGRklYfQorICAgIGRvbmUKKworICAgIGVjaG8gIiR7MX0gPT4gJHtMSU5LRklMRX0iCisKKyAgICAjIGFzc3VtZSBhbnkgc3lzdGVtIHdpdGggYSBQT1NJWCBzaGVsbCB3aWxsIGVpdGhlciBzdXBwb3J0IHN5bWxpbmtzIG9yCisgICAgIyBkbyBzb21ldGhpbmcgdG8gaGFuZGxlIHRoaXMgZ3JhY2VmdWxseQorICAgIGxuIC1zICR7MX0gJHtMSU5LRklMRX0KKworICAgIHJldHVybiAwCit9CisKKworIyBoYXNoX2RpciBjcmVhdGUgaGFzaCBsaW5rcyBpbiBhIGdpdmVuIGRpcmVjdG9yeQoraGFzaF9kaXIoKQoreworICAgIGVjaG8gIkRvaW5nICR7MX0iCisKKyAgICBjZCAkezF9CisKKyAgICBscyAtMSAqIDI+L2Rldi9udWxsIHwgd2hpbGUgcmVhZCBGSUxFCisgICAgZG8KKyAgICAgICAgaWYgZWNobyAke0ZJTEV9IHwgZ3JlcCAtcSAtRSAnXltbOnhkaWdpdDpdXXs4fVwucj9bWzpkaWdpdDpdXSskJyBcCisJICAgIAkmJiBbIC1oICIke0ZJTEV9IiBdCisgICAgICAgIHRoZW4KKyAgICAgICAgICAgIHJtICR7RklMRX0KKyAgICAgICAgZmkKKyAgICBkb25lCisKKyAgICBscyAtMSAqLnBlbSAqLmNlciAqLmNydCAqLmNybCAyPi9kZXYvbnVsbCB8IHdoaWxlIHJlYWQgRklMRQorICAgIGRvCisJY2hlY2tfZmlsZSAke0ZJTEV9CisgICAgICAgIGxvY2FsIEZJTEVfVFlQRT0kez99CisJbG9jYWwgVFlQRV9TVFI9JycKKworICAgICAgICBpZiBbICQoKCAke0ZJTEVfVFlQRX0gJiAke0lTX0NFUlR9ICkpIC1uZSAwIF0KKyAgICAgICAgdGhlbgorICAgICAgICAgICAgVFlQRV9TVFI9J3g1MDknCisgICAgICAgIGVsaWYgWyAkKCggJHtGSUxFX1RZUEV9ICYgJHtJU19DUkx9ICkpIC1uZSAwIF0KKyAgICAgICAgdGhlbgorICAgICAgICAgICAgVFlQRV9TVFI9J2NybCcKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZWNobyAiTk9URTogJHtGSUxFfSBkb2VzIG5vdCBjb250YWluIGEgY2VydGlmaWNhdGUgb3IgQ1JMOiBza2lwcGluZyIgPiYyCisJICAgIGNvbnRpbnVlCisgICAgICAgIGZpCisKKwlsaW5rX2hhc2ggJHtGSUxFfSAke1RZUEVfU1RSfQorICAgIGRvbmUKK30KKworCisjIGNob29zZSB0aGUgbmFtZSBvZiBhbiBzc2wgYXBwbGljYXRpb24KK2lmIFsgLW4gIiR7T1BFTlNTTH0iIF0KK3RoZW4KKyAgICBTU0xfQ01EPSQod2hpY2ggJHtPUEVOU1NMfSAyPi9kZXYvbnVsbCkKK2Vsc2UKKyAgICBTU0xfQ01EPS91c3IvYmluL29wZW5zc2wKKyAgICBPUEVOU1NMPSR7U1NMX0NNRH0KKyAgICBleHBvcnQgT1BFTlNTTAorZmkKKworIyBmaXggcGF0aHMKK1BBVEg9JHtQQVRIfToke0RJUn0vYmluCitleHBvcnQgUEFUSAorCisjIGNvbmZpcm0gZXhpc3RhbmNlL2V4ZWN1dGFiaWxpdHkgb2Ygc3NsIGNvbW1hbmQKK2lmICEgWyAteCAke1NTTF9DTUR9IF0KK3RoZW4KKyAgICBlY2hvICIkezB9OiByZWhhc2hpbmcgc2tpcHBlZCAoJ29wZW5zc2wnIHByb2dyYW0gbm90IGF2YWlsYWJsZSkiID4mMgorICAgIGV4aXQgMAorZmkKKworIyBkZXRlcm1pbmUgd2hpY2ggZGlyZWN0b3JpZXMgdG8gcHJvY2Vzcworb2xkX0lGUz0kSUZTCitpZiBbICR7I30gLWd0IDAgXQordGhlbgorICAgIElGUz0nOicKKyAgICBESVJMSVNUPSR7Kn0KK2VsaWYgWyAtbiAiJHtTU0xfQ0VSVF9ESVJ9IiBdCit0aGVuCisgICAgRElSTElTVD0kU1NMX0NFUlRfRElSCitlbHNlCisgICAgRElSTElTVD0ke0RJUn0vY2VydHMKK2ZpCisKK0lGUz0nOicKKworIyBwcm9jZXNzIGRpcmVjdG9yaWVzCitmb3IgQ0VSVF9ESVIgaW4gJHtESVJMSVNUfQorZG8KKyAgICBpZiBbIC1kICR7Q0VSVF9ESVJ9IC1hIC13ICR7Q0VSVF9ESVJ9IF0KKyAgICB0aGVuCisgICAgICAgIElGUz0kb2xkX0lGUworICAgICAgICBoYXNoX2RpciAke0NFUlRfRElSfQorICAgICAgICBJRlM9JzonCisgICAgZmkKK2RvbmUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9vcGVuc3NsLXV0aWwtcGVybHBhdGgucGwtY3dkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL29wZW5zc2wtdXRpbC1wZXJscGF0aC5wbC1jd2QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY1YjliMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9vcGVuc3NsLXV0aWwtcGVybHBhdGgucGwtY3dkLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gZTQyNzc0OGYzYmI1ZDM3ZTc4ZGM4ZDcwYTU1OGMzNzNhYThhYmFiYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCAxOSBTZXAgMjAxNiAyMjowNjoyOCAtMDcwMAorU3ViamVjdDogW1BBVENIXSB1dGlsL3BlcmxwYXRoLnBsOiBtYWtlIGl0IHdvcmsgd2hlbiBjd2QgaXMgbm90IGluIEBJTkMKKworRml4ZWQgd2hlbiBidWlsZGluZyBvbiBEZWJpYW4tdGVzdGluZzoKK3wgQ2FuJ3QgbG9jYXRlIGZpbmQucGwgaW4gQElOQyAoQElOQyBjb250YWluczogL2V0Yy9wZXJsIC91c3IvbG9jYWwvbGliL3g4Nl82NC1saW51eC1nbnUvcGVybC81LjIyLjIgL3Vzci9sb2NhbC9zaGFyZS9wZXJsLzUuMjIuMiAvdXNyL2xpYi94ODZfNjQtbGludXgtZ251L3Blcmw1LzUuMjIgL3Vzci9zaGFyZS9wZXJsNSAvdXNyL2xpYi94ODZfNjQtbGludXgtZ251L3BlcmwvNS4yMiAvdXNyL3NoYXJlL3BlcmwvNS4yMiAvdXNyL2xvY2FsL2xpYi9zaXRlX3BlcmwgL3Vzci9saWIveDg2XzY0LWxpbnV4LWdudS9wZXJsLWJhc2UpIGF0IHBlcmxwYXRoLnBsIGxpbmUgNy4KKworVGhlIGZpbmQucGwgaXMgYWRkZWQgYnkgb2UtY29yZSwgc28gb25jZSBvcGVuc3NsL2ZpbmQucGwgaXMgcmVtb3ZlZCwKK3RoZW4gdGhpcyBwYXRjaCBjYW4gYmUgZHJvcHBlZC4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1TcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyB1dGlsL3BlcmxwYXRoLnBsIHwgMiArKworIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3V0aWwvcGVybHBhdGgucGwgYi91dGlsL3BlcmxwYXRoLnBsCitpbmRleCBhMWYyMzZiLi41NTk5ODkyIDEwMDc1NQorLS0tIGEvdXRpbC9wZXJscGF0aC5wbAorKysrIGIvdXRpbC9wZXJscGF0aC5wbAorQEAgLTQsNiArNCw4IEBACisgIyBsaW5lIGluIGFsbCBzY3JpcHRzIHRoYXQgcmVseSBvbiBwZXJsLgorICMKKyAKKytCRUdJTiB7IHVuc2hpZnQgQElOQywgIi4iOyB9CisrCisgcmVxdWlyZSAiZmluZC5wbCI7CisgCisgJCNBUkdWID09IDAgfHwgcHJpbnQgU1RERVJSICJ1c2FnZTogcGVybHBhdGggbmV3cGF0aCAgKGVnIC91c3IvYmluKVxuIjsKKy0tIAorMi45LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL29wZW5zc2xfZml4X2Zvcl94MzIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvb3BlbnNzbF9maXhfZm9yX3gzMi5wYXRjaAppbmRleCBjYmNlMzJjLi4wZjA4YTY0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvb3BlbnNzbF9maXhfZm9yX3gzMi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvb3BlbnNzbF9maXhfZm9yX3gzMi5wYXRjaApAQCAtMiwxMCArMiwxMCBAQAogCiBSZWNlaXZlZCBmcm9tIEggSiBMaXUgQCBJbnRlbAogTWFrZSB0aGUgYXNzZW1ibHkgc3ludGF4IGNvbXBhdGlibGUgd2l0aCB4MzIgZ2NjLiBPdGhld2lzZSB4MzIgZ2NjIHRocm93cyBlcnJvcnMuCi1TaWduZWQtT2ZmLUJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPiAyMDExLzA3LzEzCitTaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPiAyMDExLzA3LzEzCiAKIHBvcnRlZCB0aGUgcGF0Y2ggdG8gdGhlIDEuMC4wZSB2ZXJzaW9uCi1TaWduZWQtT2ZmLUJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPiAyMDExLzEyLzAxCitTaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPiAyMDExLzEyLzAxCiBJbmRleDogb3BlbnNzbC0xLjAuMi9jcnlwdG8vYm4vYm4uaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIG9wZW5zc2wtMS4wLjIub3JpZy9jcnlwdG8vYm4vYm4uaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL3BhcmFsbGVsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL3BhcmFsbGVsLnBhdGNoCmluZGV4IGI2YzJjMTQuLmYzZjRjOTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9wYXJhbGxlbC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvcGFyYWxsZWwucGF0Y2gKQEAgLTYsNiArNiw5IEBACiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIFNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CiAKK1JlZnJlc2hlZCBmb3IgMS4wLjJpCitTaWduZWQtb2ZmLWJ5OiBQYXRyaWNrIE9obHkgPHBhdHJpY2sub2hseUBpbnRlbC5jb20+CisKIC0tLSBvcGVuc3NsLTEuMC4yZy9jcnlwdG8vTWFrZWZpbGUKICsrKyBvcGVuc3NsLTEuMC4yZy9jcnlwdG8vTWFrZWZpbGUKIEBAIC04NSwxMSArODUsMTEgQEAKQEAgLTEzMyw3ICsxMzYsNyBAQAogIAkJZmk7IFwKIC0tLSBvcGVuc3NsLTEuMC4yZy90ZXN0L01ha2VmaWxlCiArKysgb3BlbnNzbC0xLjAuMmcvdGVzdC9NYWtlZmlsZQotQEAgLTEzOSw3ICsxMzksNyBAQAorQEAgLTE0NCw3ICsxNDQsNyBAQAogIHRhZ3M6CiAgCWN0YWdzICQoU1JDKQogIApAQCAtMTQyLDcgKzE0NSw3IEBACiAgCiAgYXBwczoKICAJQChjZCAuLjsgJChNQUtFKSBESVJTPWFwcHMgYWxsKQotQEAgLTQyMSwxMzAgKzQyMSwxMzAgQEAKK0BAIC00MzgsMTM2ICs0MzgsMTM2IEBACiAgCQlsaW5rX2FwcC4kJHtzaGxpYl90YXJnZXR9CiAgCiAgJChSU0FURVNUKSQoRVhFX0VYVCk6ICQoUlNBVEVTVCkubyAkKERMSUJDUllQVE8pCkBAIC0zMDksMTMgKzMxMiwyMSBAQAogLQlAdGFyZ2V0PSQoQ0xJRU5USEVMTE9URVNUKSAkKEJVSUxEX0NNRCkKICsJK0B0YXJnZXQ9JChDTElFTlRIRUxMT1RFU1QpICQoQlVJTERfQ01EKQogIAorICQoQkFERFRMU1RFU1QpJChFWEVfRVhUKTogJChCQUREVExTVEVTVCkubworLQlAdGFyZ2V0PSQoQkFERFRMU1RFU1QpICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKEJBRERUTFNURVNUKSAkKEJVSUxEX0NNRCkKKyAKICAkKFNTTFYyQ09ORlRFU1QpJChFWEVfRVhUKTogJChTU0xWMkNPTkZURVNUKS5vCiAtCUB0YXJnZXQ9JChTU0xWMkNPTkZURVNUKSAkKEJVSUxEX0NNRCkKICsJK0B0YXJnZXQ9JChTU0xWMkNPTkZURVNUKSAkKEJVSUxEX0NNRCkKICAKKyAkKERUTFNURVNUKSQoRVhFX0VYVCk6ICQoRFRMU1RFU1QpLm8gc3NsdGVzdGxpYi5vICQoRExJQlNTTCkgJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoRFRMU1RFU1QpOyBleG9iaj1zc2x0ZXN0bGliLm87ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKERUTFNURVNUKTsgZXhvYmo9c3NsdGVzdGxpYi5vOyAkKEJVSUxEX0NNRCkKKyAKICAjJChBRVNURVNUKS5vOiAkKEFFU1RFU1QpLmMKICAjCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtRElOVEVSTUVESUFURV9WQUxVRV9LQVQgLURUUkFDRV9LQVRfTUNUICQoQUVTVEVTVCkuYwotQEAgLTU1Nyw3ICs1NTcsNyBAQAorQEAgLTU4MCw2ICs1ODAsNiBAQAogICMJZmkKICAKICBkdW1teXRlc3QkKEVYRV9FWFQpOiBkdW1teXRlc3QubyAkKERMSUJDUllQVE8pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2xfMS4wLjJnLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXzEuMC4yZy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjkwZjEyOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2xfMS4wLjJnLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotcmVxdWlyZSBvcGVuc3NsLmluYwotCi0jIEZvciB0YXJnZXQgc2lkZSB2ZXJzaW9ucyBvZiBvcGVuc3NsIGVuYWJsZSBzdXBwb3J0IGZvciBPQ0YgTGludXggZHJpdmVyCi0jIGlmIHRoZXkgYXJlIGF2YWlsYWJsZS4KLURFUEVORFMgKz0gImNyeXB0b2Rldi1saW51eCIKLQotQ0ZMQUcgKz0gIi1ESEFWRV9DUllQVE9ERVYgLURVU0VfQ1JZUFRPREVWX0RJR0VTVFMiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTI3ZmZhNWQ3NGJiNWEzMzcwNTZjMTRiMmVmOTNmYmY2IgotCi1leHBvcnQgRElSUyA9ICJjcnlwdG8gc3NsIGFwcHMgZW5naW5lcyIKLWV4cG9ydCBPRV9MREZMQUdTPSIke0xERkxBR1N9IgotCi1TUkNfVVJJICs9ICJmaWxlOi8vZmluZC5wbDtzdWJkaXI9JHtCUH0vdXRpbC8gXAotICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLXRhcmdldHMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3NoYXJlZC1saWJzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9vZS1sZGZsYWdzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9lbmdpbmVzLWluc3RhbGwtaW4tbGliZGlyLXNzbC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vZGViaWFuMS4wLjIvYmxvY2tfZGlnaW5vdGFyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4xLjAuMi9ibG9ja19kaWdpY2VydF9tYWxheXNpYS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vZGViaWFuL2NhLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vY19yZWhhc2gtY29tcGF0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vZGViaWFuLXRhcmdldHMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2RlYmlhbi9tYW4tZGlyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vbWFuLXNlY3Rpb24ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2RlYmlhbi9uby1ycGF0aC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vZGViaWFuL25vLXN5bWJvbGljLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vcGljLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4xLjAuMi92ZXJzaW9uLXNjcmlwdC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vb3BlbnNzbF9maXhfZm9yX3gzMi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vZml4LWNpcGhlci1kZXMtZWRlMy1jZmIxLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9vcGVuc3NsLWF2b2lkLU5VTEwtcG9pbnRlci1kZXJlZmVyZW5jZS1pbi1FVlBfRGlnZXN0SW5pdF9leC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vb3BlbnNzbC1maXgtZGVzLnBvZC1lcnJvci5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGVzLXB0ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9wdGVzdC1kZXBzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9jcnlwdG9fdXNlX2JpZ2ludF9pbl94ODYtNjRfcGVybC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vb3BlbnNzbC0xLjAuMmEteDMyLWFzbS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcHRlc3RfbWFrZWZpbGVfZGVwcy5wYXRjaCAgXAotICAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS1tdXNsLXRhcmdldC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcGFyYWxsZWwucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmM2M3MTBjMDQ1Y2RlZTVmZDExNGZlYjY5ZmViYTdhYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiNzg0YjFiMzkwN2NlMzlhYmY0MDk4NzAyZGFkZTYzNjU1MjJhMjUzYWQxNTUyZTI2N2E5YTBlODk1OTRhYTMzIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tZW5naW5lcyIKLUZJTEVTXyR7UE59LWVuZ2luZXMgPSAiJHtsaWJkaXJ9L3NzbC9lbmdpbmVzLyouc28gJHtsaWJkaXJ9L2VuZ2luZXMiCi0KLSMgVGhlIGNyeXB0b191c2VfYmlnaW50IHBhdGNoIG1lYW5zIHRoYXQgcGVybCdzIGJpZ251bSBtb2R1bGUgbmVlZHMgdG8gYmUKLSMgaW5zdGFsbGVkLCBidXQgc29tZSBkaXN0cmlidXRpb25zIChmb3IgZXhhbXBsZSBGZWRvcmEgMjMpIGRvbid0IHNoaXAgaXQgYnkKLSMgZGVmYXVsdC4gIEFzIHRoZSByZXN1bHRpbmcgZXJyb3IgaXMgdmVyeSBtaXNsZWFkaW5nIGNoZWNrIGZvciBiaWdudW0gYmVmb3JlCi0jIGJ1aWxkaW5nLgotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0JaWYgISBwZXJsIC1NYmlnaW50IC1lIHRydWU7IHRoZW4KLQkJYmJmYXRhbCAiVGhlIHBlcmwgbW9kdWxlICdiaWdudW0nIHdhcyBub3QgZm91bmQgYnV0IHRoaXMgaXMgcmVxdWlyZWQgdG8gYnVpbGQgb3BlbnNzbC4gIFBsZWFzZSBpbnN0YWxsIHRoaXMgbW9kdWxlIChvZnRlbiBwYWNrYWdlZCBhcyBwZXJsLWJpZ251bSkgYW5kIHJlLXJ1biBiaXRiYWtlLiIKLQlmaQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXzEuMC4yai5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjAuMmouYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjU3ZTNjZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjAuMmouYmIKQEAgLTAsMCArMSw1OCBAQAorcmVxdWlyZSBvcGVuc3NsLmluYworCisjIEZvciB0YXJnZXQgc2lkZSB2ZXJzaW9ucyBvZiBvcGVuc3NsIGVuYWJsZSBzdXBwb3J0IGZvciBPQ0YgTGludXggZHJpdmVyCisjIGlmIHRoZXkgYXJlIGF2YWlsYWJsZS4KK0RFUEVORFMgKz0gImNyeXB0b2Rldi1saW51eCIKKworQ0ZMQUcgKz0gIi1ESEFWRV9DUllQVE9ERVYgLURVU0VfQ1JZUFRPREVWX0RJR0VTVFMiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTI3ZmZhNWQ3NGJiNWEzMzcwNTZjMTRiMmVmOTNmYmY2IgorCitleHBvcnQgRElSUyA9ICJjcnlwdG8gc3NsIGFwcHMgZW5naW5lcyIKK2V4cG9ydCBPRV9MREZMQUdTPSIke0xERkxBR1N9IgorCitTUkNfVVJJICs9ICJmaWxlOi8vZmluZC5wbDtzdWJkaXI9JHtCUH0vdXRpbC8gXAorICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgICBmaWxlOi8vb3BlbnNzbC1jX3JlaGFzaC5zaCBcCisgICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLXRhcmdldHMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3NoYXJlZC1saWJzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9vZS1sZGZsYWdzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9lbmdpbmVzLWluc3RhbGwtaW4tbGliZGlyLXNzbC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vZGViaWFuMS4wLjIvYmxvY2tfZGlnaW5vdGFyLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4xLjAuMi9ibG9ja19kaWdpY2VydF9tYWxheXNpYS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vZGViaWFuL2NhLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vY19yZWhhc2gtY29tcGF0LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vZGViaWFuLXRhcmdldHMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2RlYmlhbi9tYW4tZGlyLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vbWFuLXNlY3Rpb24ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2RlYmlhbi9uby1ycGF0aC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vZGViaWFuL25vLXN5bWJvbGljLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vcGljLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4xLjAuMi92ZXJzaW9uLXNjcmlwdC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vb3BlbnNzbF9maXhfZm9yX3gzMi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vZml4LWNpcGhlci1kZXMtZWRlMy1jZmIxLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9vcGVuc3NsLWF2b2lkLU5VTEwtcG9pbnRlci1kZXJlZmVyZW5jZS1pbi1FVlBfRGlnZXN0SW5pdF9leC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vb3BlbnNzbC1maXgtZGVzLnBvZC1lcnJvci5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGVzLXB0ZXN0LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9wdGVzdC1kZXBzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9vcGVuc3NsLTEuMC4yYS14MzItYXNtLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9wdGVzdF9tYWtlZmlsZV9kZXBzLnBhdGNoICBcCisgICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLW11c2wtdGFyZ2V0LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9wYXJhbGxlbC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vb3BlbnNzbC11dGlsLXBlcmxwYXRoLnBsLWN3ZC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI5NjMyMjEzOGYwYjY5ZTYxYjcyMTJiYzUzZDVlOTEyYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlN2FmZjI5MmJlMjFjMjU5YzZhZjI2NDY5YzdhOWIzYmEyNmU5YWJhYWZmZDMyNWUzZGNjYzk3ODUyNTZjNDMxIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tZW5naW5lcyIKK0ZJTEVTXyR7UE59LWVuZ2luZXMgPSAiJHtsaWJkaXJ9L3NzbC9lbmdpbmVzLyouc28gJHtsaWJkaXJ9L2VuZ2luZXMiCisKKyMgVGhlIGNyeXB0b191c2VfYmlnaW50IHBhdGNoIG1lYW5zIHRoYXQgcGVybCdzIGJpZ251bSBtb2R1bGUgbmVlZHMgdG8gYmUKKyMgaW5zdGFsbGVkLCBidXQgc29tZSBkaXN0cmlidXRpb25zIChmb3IgZXhhbXBsZSBGZWRvcmEgMjMpIGRvbid0IHNoaXAgaXQgYnkKKyMgZGVmYXVsdC4gIEFzIHRoZSByZXN1bHRpbmcgZXJyb3IgaXMgdmVyeSBtaXNsZWFkaW5nIGNoZWNrIGZvciBiaWdudW0gYmVmb3JlCisjIGJ1aWxkaW5nLgorZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisJaWYgISBwZXJsIC1NYmlnaW50IC1lIHRydWU7IHRoZW4KKwkJYmJmYXRhbCAiVGhlIHBlcmwgbW9kdWxlICdiaWdudW0nIHdhcyBub3QgZm91bmQgYnV0IHRoaXMgaXMgcmVxdWlyZWQgdG8gYnVpbGQgb3BlbnNzbC4gIFBsZWFzZSBpbnN0YWxsIHRoaXMgbW9kdWxlIChvZnRlbiBwYWNrYWdlZCBhcyBwZXJsLWJpZ251bSkgYW5kIHJlLXJ1biBiaXRiYWtlLiIKKwlmaQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcC9wcHAtZml4LWJ1aWxkaW5nLXdpdGgtbGludXgtNC44LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcC9wcHAtZml4LWJ1aWxkaW5nLXdpdGgtbGludXgtNC44LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3N2IwZGUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wcHAvcHBwL3BwcC1maXgtYnVpbGRpbmctd2l0aC1saW51eC00LjgucGF0Y2gKQEAgLTAsMCArMSw0NCBAQAorRnJvbSAzZGExOWFmNTNlMmVlZTJlNzdiNDU2Y2ZiYjlkNjMzYjA2NjU2ZDM4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMTMgT2N0IDIwMTYgMTM6NDE6NDMgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gcHBwOiBmaXggYnVpbGRpbmcgd2l0aCBsaW51eC00LjgKKworRml4IGEgYnVpbGQgZXJyb3Igd2hlbiB1c2luZyB0aGUgbGludXgtNC44IGhlYWRlcnMgdGhhdCByZXN1bHRzIGluOgorCitJbiBmaWxlIGluY2x1ZGVkIGZyb20gcHBwb2UuaDo4NzowLAorICAgICAgICAgICAgICAgICBmcm9tIHBsdWdpbi5jOjI5OgorLi4vdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oOjIxMTo4OiBub3RlOiBvcmlnaW5hbGx5IGRlZmluZWQgaGVyZQorIHN0cnVjdCBpbjZfYWRkcgorICAgICAgICBefn5+fn5+fgorSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC4uL3Vzci9pbmNsdWRlL2xpbnV4L2lmX3BwcG9sMnRwLmg6MjA6MCwKKyAgICAgICAgICAgICAgICAgZnJvbSAuLi91c3IvaW5jbHVkZS9saW51eC9pZl9wcHBveC5oOjI2LAorICAgICAgICAgICAgICAgICBmcm9tIHBsdWdpbi5jOjUyOgorLi4vdXNyL2luY2x1ZGUvbGludXgvaW42Lmg6NDk6ODogZXJyb3I6IHJlZGVmaW5pdGlvbiBvZiAnc3RydWN0IHNvY2thZGRyX2luNicKKyBzdHJ1Y3Qgc29ja2FkZHJfaW42IHsKKyAgICAgICAgXn5+fn5+fn5+fn5+CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFsxXQorCitbMV0gaHR0cHM6Ly9naXRodWIuY29tL3BhdWx1c21hY2svcHBwL3B1bGwvNjkKKworU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIHBwcGQvcGx1Z2lucy9ycC1wcHBvZS9wcHBvZS5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvcHBwZC9wbHVnaW5zL3JwLXBwcG9lL3BwcG9lLmggYi9wcHBkL3BsdWdpbnMvcnAtcHBwb2UvcHBwb2UuaAoraW5kZXggOWFiMmVlZS4uOTZkMjc5NCAxMDA2NDQKKy0tLSBhL3BwcGQvcGx1Z2lucy9ycC1wcHBvZS9wcHBvZS5oCisrKysgYi9wcHBkL3BsdWdpbnMvcnAtcHBwb2UvcHBwb2UuaAorQEAgLTg0LDcgKzg0LDcgQEAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIFVJTlQzMl90OworICNpbmNsdWRlIDxsaW51eC9pZl9ldGhlci5oPgorICNlbmRpZgorIAorLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisrI2luY2x1ZGUgPGxpbnV4L2luLmg+CisgCisgI2lmZGVmIEhBVkVfTkVUSU5FVF9JRl9FVEhFUl9ICisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorLS0gCisyLjguMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wcHAvcHBwXzIuNC43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcF8yLjQuNy5iYgppbmRleCA0NDM3YjVjLi41NmRiZDk4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wcHAvcHBwXzIuNC43LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BwcC9wcHBfMi40LjcuYmIKQEAgLTMwLDYgKzMwLDcgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtcHBwLUZpeC1jb21waWxhdGlvbi1lcnJvcnMtaW4tTWFrZWZpbGUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vcHBwQC5zZXJ2aWNlIFwKICAgICAgICAgICAgZmlsZTovL2ZpeC1DVkUtMjAxNS0zMzEwLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3BwcC1maXgtYnVpbGRpbmctd2l0aC1saW51eC00LjgucGF0Y2ggXAogIgogCiBTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmVzb2x2Y29uZi9yZXNvbHZjb25mXzEuNzguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZXNvbHZjb25mL3Jlc29sdmNvbmZfMS43OC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjRjNTg1MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZXNvbHZjb25mL3Jlc29sdmNvbmZfMS43OC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLVNVTU1BUlkgPSAibmFtZSBzZXJ2ZXIgaW5mb3JtYXRpb24gaGFuZGxlciIKLURFU0NSSVBUSU9OID0gIlJlc29sdmNvbmYgaXMgYSBmcmFtZXdvcmsgZm9yIGtlZXBpbmcgdHJhY2sgb2YgdGhlIHN5c3RlbSdzIFwKLWluZm9ybWF0aW9uIGFib3V0IGN1cnJlbnRseSBhdmFpbGFibGUgbmFtZXNlcnZlcnMuIEl0IHNldHMgXAotaXRzZWxmIHVwIGFzIHRoZSBpbnRlcm1lZGlhcnkgYmV0d2VlbiBwcm9ncmFtcyB0aGF0IHN1cHBseSBcCi1uYW1lc2VydmVyIGluZm9ybWF0aW9uIGFuZCBwcm9ncmFtcyB0aGF0IG5lZWQgbmFtZXNlcnZlciBcCi1pbmZvcm1hdGlvbi4iCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzkzYzA1NTBiZDMxNzNmNDUwNGIyY2JkODk5MWU1MGIiCi1BVVRIT1IgPSAiVGhvbWFzIEhvb2QiCi1IT01FUEFHRSA9ICJodHRwOi8vcGFja2FnZXMuZGViaWFuLm9yZy9yZXNvbHZjb25mIgotUkRFUEVORFNfJHtQTn0gPSAiYmFzaCIKLQotU1JDX1VSSSA9ICJodHRwOi8vc25hcHNob3QuZGViaWFuLm9yZy9hcmNoaXZlL2RlYmlhbi8yMDE1MDgyOFQyMjA3MzBaL3Bvb2wvbWFpbi9yLyR7QlBOfS8ke0JQTn1fMS43OC50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vZml4LXBhdGgtZm9yLWJ1c3lib3gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vOTlfcmVzb2x2Y29uZiBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzczYTlmOTU0NGM4NGFhNDc3YTc0MjVhZTc3M2I4YjUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTYxYjIyZThmY2YwYzdkZTdlOTBhMDUwMzIzZTZmYTIyMWJjOGIyNWE1MzQ4YzE2MGJlMzUwNmY3ZTczYTdhMyIKLQotIyB0aGUgcGFja2FnZSBpcyB0YWtlbiBmcm9tIHNuYXBzaG90cy5kZWJpYW4ub3JnOyB0aGF0IHNvdXJjZSBpcyBzdGF0aWMgYW5kIGdvZXMgc3RhbGUKLSMgc28gd2UgY2hlY2sgdGhlIGxhdGVzdCB1cHN0cmVhbSBmcm9tIGEgZGlyZWN0b3J5IHRoYXQgZG9lcyBnZXQgdXBkYXRlZAotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9yL3Jlc29sdmNvbmYvIgotCi1pbmhlcml0IGFsbGFyY2gKLQotZG9fY29tcGlsZSAoKSB7Ci0JOgotfQotCi1kb19pbnN0YWxsICgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vOTlfcmVzb2x2Y29uZiAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcwotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0JCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAotCQllY2hvICJkIC9ydW4vJHtCUE59L2ludGVyZmFjZSAtIC0gLSAtIiBcCi0JCSAgICAgPiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL3Jlc29sdmNvbmYuY29uZgotCWZpCi0JaW5zdGFsbCAtZCAke0R9JHtiYXNlX2xpYmRpcn0vJHtCUE59Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS8ke0JQTn0KLQlsbiAtc25mICR7bG9jYWxzdGF0ZWRpcn0vcnVuLyR7QlBOfSAke0R9JHtzeXNjb25mZGlyfS8ke0JQTn0vcnVuCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfSAke0R9JHtiYXNlX3NiaW5kaXJ9Ci0JaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbjggJHtEfSR7ZG9jZGlyfS8ke1B9Ci0JY3AgLXBQUiBldGMvKiAke0R9JHtzeXNjb25mZGlyfS8KLQljaG93biAtUiByb290OnJvb3QgJHtEfSR7c3lzY29uZmRpcn0vCi0JaW5zdGFsbCAtbSAwNzU1IGJpbi9yZXNvbHZjb25mICR7RH0ke2Jhc2Vfc2JpbmRpcn0vCi0JaW5zdGFsbCAtbSAwNzU1IGJpbi9saXN0LXJlY29yZHMgJHtEfSR7YmFzZV9saWJkaXJ9LyR7QlBOfQotCWluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L25ldHdvcmsvaWYtdXAuZAotCWluc3RhbGwgLW0gMDc1NSBkZWJpYW4vcmVzb2x2Y29uZi4wMDByZXNvbHZjb25mLmlmLXVwICR7RH0vJHtzeXNjb25mZGlyfS9uZXR3b3JrL2lmLXVwLmQvMDAwcmVzb2x2Y29uZgotCWluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L25ldHdvcmsvaWYtZG93bi5kCi0JaW5zdGFsbCAtbSAwNzU1IGRlYmlhbi9yZXNvbHZjb25mLnJlc29sdmNvbmYuaWYtZG93biAke0R9LyR7c3lzY29uZmRpcn0vbmV0d29yay9pZi1kb3duLmQvcmVzb2x2Y29uZgotCWluc3RhbGwgLW0gMDY0NCBSRUFETUUgJHtEfSR7ZG9jZGlyfS8ke1B9LwotCWluc3RhbGwgLW0gMDY0NCBtYW4vcmVzb2x2Y29uZi44ICR7RH0ke21hbmRpcn0vbWFuOC8KLX0KLQotcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKLQlpZiBbIC16ICIkRCIgXTsgdGhlbgotCQlpZiBjb21tYW5kIC12IHN5c3RlbWQtdG1wZmlsZXMgPi9kZXYvbnVsbDsgdGhlbgotCQkJc3lzdGVtZC10bXBmaWxlcyAtLWNyZWF0ZSAke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvcmVzb2x2Y29uZi5jb25mCi0JCWVsaWYgWyAtZSAke3N5c2NvbmZkaXJ9L2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCBdOyB0aGVuCi0JCQkke3N5c2NvbmZkaXJ9L2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCB1cGRhdGUKLQkJZmkKLQlmaQotfQotCi1GSUxFU18ke1BOfSArPSAiJHtiYXNlX2xpYmRpcn0vJHtCUE59IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmVzb2x2Y29uZi9yZXNvbHZjb25mXzEuNzkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZXNvbHZjb25mL3Jlc29sdmNvbmZfMS43OS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTUwMTc3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmVzb2x2Y29uZi9yZXNvbHZjb25mXzEuNzkuYmIKQEAgLTAsMCArMSw2NyBAQAorU1VNTUFSWSA9ICJuYW1lIHNlcnZlciBpbmZvcm1hdGlvbiBoYW5kbGVyIgorREVTQ1JJUFRJT04gPSAiUmVzb2x2Y29uZiBpcyBhIGZyYW1ld29yayBmb3Iga2VlcGluZyB0cmFjayBvZiB0aGUgc3lzdGVtJ3MgXAoraW5mb3JtYXRpb24gYWJvdXQgY3VycmVudGx5IGF2YWlsYWJsZSBuYW1lc2VydmVycy4gSXQgc2V0cyBcCitpdHNlbGYgdXAgYXMgdGhlIGludGVybWVkaWFyeSBiZXR3ZWVuIHByb2dyYW1zIHRoYXQgc3VwcGx5IFwKK25hbWVzZXJ2ZXIgaW5mb3JtYXRpb24gYW5kIHByb2dyYW1zIHRoYXQgbmVlZCBuYW1lc2VydmVyIFwKK2luZm9ybWF0aW9uLiIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jOTNjMDU1MGJkMzE3M2Y0NTA0YjJjYmQ4OTkxZTUwYiIKK0FVVEhPUiA9ICJUaG9tYXMgSG9vZCIKK0hPTUVQQUdFID0gImh0dHA6Ly9wYWNrYWdlcy5kZWJpYW4ub3JnL3Jlc29sdmNvbmYiCitSREVQRU5EU18ke1BOfSA9ICJiYXNoIgorCitTUkNfVVJJID0gImh0dHA6Ly9zbmFwc2hvdC5kZWJpYW4ub3JnL2FyY2hpdmUvZGViaWFuLzIwMTYwNTIwVDA0NDM0MFovcG9vbC9tYWluL3IvJHtCUE59LyR7QlBOfV8xLjc5LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtcGF0aC1mb3ItYnVzeWJveC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly85OV9yZXNvbHZjb25mIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhYWIyMzgyMDIwZmM1MThmMDZhMDZlOTI0YzU2ZDMwMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZTI4NDNjZDQxNjJiNzA2ZjA0ODFiM2MyODE2NTc3MjhjYmMyODIyZTUwYTY0ZmZmNzliNzliZDhhYTg3MGEwIgorCisjIHRoZSBwYWNrYWdlIGlzIHRha2VuIGZyb20gc25hcHNob3RzLmRlYmlhbi5vcmc7IHRoYXQgc291cmNlIGlzIHN0YXRpYyBhbmQgZ29lcyBzdGFsZQorIyBzbyB3ZSBjaGVjayB0aGUgbGF0ZXN0IHVwc3RyZWFtIGZyb20gYSBkaXJlY3RvcnkgdGhhdCBkb2VzIGdldCB1cGRhdGVkCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL3IvcmVzb2x2Y29uZi8iCisKK2luaGVyaXQgYWxsYXJjaAorCitkb19jb21waWxlICgpIHsKKwk6Cit9CisKK2RvX2luc3RhbGwgKCkgeworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS85OV9yZXNvbHZjb25mICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCisJCWVjaG8gImQgL3J1bi8ke0JQTn0vaW50ZXJmYWNlIC0gLSAtIC0iIFwKKwkJICAgICA+ICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvcmVzb2x2Y29uZi5jb25mCisJZmkKKwlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfbGliZGlyfS8ke0JQTn0KKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9LyR7QlBOfQorCWxuIC1zbmYgJHtsb2NhbHN0YXRlZGlyfS9ydW4vJHtCUE59ICR7RH0ke3N5c2NvbmZkaXJ9LyR7QlBOfS9ydW4KKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9ICR7RH0ke2Jhc2Vfc2JpbmRpcn0KKwlpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuOCAke0R9JHtkb2NkaXJ9LyR7UH0KKwljcCAtcFBSIGV0Yy8qICR7RH0ke3N5c2NvbmZkaXJ9LworCWNob3duIC1SIHJvb3Q6cm9vdCAke0R9JHtzeXNjb25mZGlyfS8KKwlpbnN0YWxsIC1tIDA3NTUgYmluL3Jlc29sdmNvbmYgJHtEfSR7YmFzZV9zYmluZGlyfS8KKwlpbnN0YWxsIC1tIDA3NTUgYmluL2xpc3QtcmVjb3JkcyAke0R9JHtiYXNlX2xpYmRpcn0vJHtCUE59CisJaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vbmV0d29yay9pZi11cC5kCisJaW5zdGFsbCAtbSAwNzU1IGRlYmlhbi9yZXNvbHZjb25mLjAwMHJlc29sdmNvbmYuaWYtdXAgJHtEfS8ke3N5c2NvbmZkaXJ9L25ldHdvcmsvaWYtdXAuZC8wMDByZXNvbHZjb25mCisJaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vbmV0d29yay9pZi1kb3duLmQKKwlpbnN0YWxsIC1tIDA3NTUgZGViaWFuL3Jlc29sdmNvbmYucmVzb2x2Y29uZi5pZi1kb3duICR7RH0vJHtzeXNjb25mZGlyfS9uZXR3b3JrL2lmLWRvd24uZC9yZXNvbHZjb25mCisJaW5zdGFsbCAtbSAwNjQ0IFJFQURNRSAke0R9JHtkb2NkaXJ9LyR7UH0vCisJaW5zdGFsbCAtbSAwNjQ0IG1hbi9yZXNvbHZjb25mLjggJHtEfSR7bWFuZGlyfS9tYW44LworfQorCitwa2dfcG9zdGluc3RfJHtQTn0gKCkgeworCWlmIFsgLXogIiREIiBdOyB0aGVuCisJCWlmIGNvbW1hbmQgLXYgc3lzdGVtZC10bXBmaWxlcyA+L2Rldi9udWxsOyB0aGVuCisJCQlzeXN0ZW1kLXRtcGZpbGVzIC0tY3JlYXRlICR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9yZXNvbHZjb25mLmNvbmYKKwkJZWxpZiBbIC1lICR7c3lzY29uZmRpcn0vaW5pdC5kL3BvcHVsYXRlLXZvbGF0aWxlLnNoIF07IHRoZW4KKwkJCSR7c3lzY29uZmRpcn0vaW5pdC5kL3BvcHVsYXRlLXZvbGF0aWxlLnNoIHVwZGF0ZQorCQlmaQorCWZpCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2Jhc2VfbGliZGlyfS8ke0JQTn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zb2NhdC9zb2NhdF8xLjcuMy4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvc29jYXQvc29jYXRfMS43LjMuMS5iYgppbmRleCA2ZGE5YTE3Li40ZGE2ZDM5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zb2NhdC9zb2NhdF8xLjcuMy4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NvY2F0L3NvY2F0XzEuNy4zLjEuYmIKQEAgLTI1LDkgKzI1LDcgQEAKIAogRVhUUkFfQVVUT1JFQ09ORiArPSAiLS1leGNsdWRlPWF1dG9oZWFkZXIiCiAKLUVYVFJBX09FQ09ORiArPSAiYWNfY3ZfaGF2ZV96X21vZGlmaWVyPXllcyBzY19jdl9zeXNfY3JkbHlfc2hpZnQ9OSBcCi0gICAgICAgIHNjX2N2X3N5c190YWJkbHlfc2hpZnQ9MTEgc2NfY3Zfc3lzX2NzaXplX3NoaWZ0PTQgXAotICAgICAgICBhY19jdl9pc3BlZWRfb2Zmc2V0PTEzIFwKK0VYVFJBX09FQ09ORiArPSAiYWNfY3ZfaGF2ZV96X21vZGlmaWVyPXllcyBcCiAgICAgICAgIGFjX2N2X2hlYWRlcl9ic2RfbGlidXRpbF9oPW5vIFwKICIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvd3BhLXN1cHBsaWNhbnQvd3BhLXN1cHBsaWNhbnQvMDAwMS1SZWplY3QtcHNrLXBhcmFtZXRlci1zZXQtd2l0aC1pbnZhbGlkLXBhc3NwaHJhc2UtY2hhLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvd3BhLXN1cHBsaWNhbnQvd3BhLXN1cHBsaWNhbnQvMDAwMS1SZWplY3QtcHNrLXBhcmFtZXRlci1zZXQtd2l0aC1pbnZhbGlkLXBhc3NwaHJhc2UtY2hhLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkN2Q1ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS93cGEtc3VwcGxpY2FudC93cGEtc3VwcGxpY2FudC8wMDAxLVJlamVjdC1wc2stcGFyYW1ldGVyLXNldC13aXRoLWludmFsaWQtcGFzc3BocmFzZS1jaGEucGF0Y2gKQEAgLTAsMCArMSw1NSBAQAorRnJvbSA3M2U0YWJiMjRhOTM2MDE0NzI3OTI0ZDhiMGIyOTY1ZWRmYzExN2RkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSm91bmkgTWFsaW5lbiA8am91bmlAcWNhLnF1YWxjb21tLmNvbT4KK0RhdGU6IEZyaSwgNCBNYXIgMjAxNiAxODo0Njo0MSArMDIwMAorU3ViamVjdDogW1BBVENIIDEvM10gUmVqZWN0IHBzayBwYXJhbWV0ZXIgc2V0IHdpdGggaW52YWxpZCBwYXNzcGhyYXNlCisgY2hhcmFjdGVyCisKK1dQQS9XUEEyLVBlcnNvbmFsIHBhc3NwaHJhc2UgaXMgbm90IGFsbG93ZWQgdG8gaW5jbHVkZSBjb250cm9sCitjaGFyYWN0ZXJzLiBSZWplY3QgYSBwYXNzcGhyYXNlIGNvbmZpZ3VyYXRpb24gYXR0ZW1wdCBpZiB0aGF0IHBhc3NwaHJhc2UKK2luY2x1ZGVzIGFuIGludmFsaWQgcGFzc3BocmFzZS4KKworVGhpcyBmaXhlcyBhbiBpc3N1ZSB3aGVyZSB3cGFfc3VwcGxpY2FudCBjb3VsZCBoYXZlIHVwZGF0ZWQgdGhlCitjb25maWd1cmF0aW9uIGZpbGUgcHNrIHBhcmFtZXRlciB3aXRoIGFyYml0cmFyeSBkYXRhIGZyb20gdGhlIGNvbnRyb2wKK2ludGVyZmFjZSBvciBELUJ1cyBpbnRlcmZhY2UuIFdoaWxlIHRob3NlIGludGVyZmFjZXMgYXJlIHN1cHBvc2VkIHRvIGJlCithY2Nlc3NpYmxlIG9ubHkgZm9yIHRydXN0ZWQgdXNlcnMvYXBwbGljYXRpb25zLCBpdCBtYXkgYmUgcG9zc2libGUgdGhhdAorYW4gdW50cnVzdGVkIHVzZXIgaGFzIGFjY2VzcyB0byBhIG1hbmFnZW1lbnQgc29mdHdhcmUgY29tcG9uZW50IHRoYXQKK2RvZXMgbm90IHZhbGlkYXRlIHRoZSBwYXNzcGhyYXNlIHZhbHVlIGJlZm9yZSBwYXNzaW5nIGl0IHRvCit3cGFfc3VwcGxpY2FudC4KKworVGhpcyBjb3VsZCBhbGxvdyBzdWNoIGFuIHVudHJ1c3RlZCB1c2VyIHRvIGluamVjdCB1cCB0byA2MyBjaGFyYWN0ZXJzIG9mCithbG1vc3QgYXJiaXRyYXJ5IGRhdGEgaW50byB0aGUgY29uZmlndXJhdGlvbiBmaWxlLiBTdWNoIGNvbmZpZ3VyYXRpb24KK2ZpbGUgY291bGQgcmVzdWx0IGluIHdwYV9zdXBwbGljYW50IHRyeWluZyB0byBsb2FkIGEgbGlicmFyeSAoZS5nLiwKK29wZW5zY19lbmdpbmVfcGF0aCwgcGtjczExX2VuZ2luZV9wYXRoLCBwa2NzMTFfbW9kdWxlX3BhdGgsCitsb2FkX2R5bmFtaWNfZWFwKSBmcm9tIHVzZXIgY29udHJvbGxlZCBsb2NhdGlvbiB3aGVuIHN0YXJ0aW5nIGFnYWluLgorVGhpcyB3b3VsZCBhbGxvdyBjb2RlIGZyb20gdGhhdCBsaWJyYXJ5IHRvIGJlIGV4ZWN1dGVkIHVuZGVyIHRoZQord3BhX3N1cHBsaWNhbnQgcHJvY2VzcyBwcml2aWxlZ2VzLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK0NWRTogQ1ZFLTIwMTYtNDQ3NworCitTaWduZWQtb2ZmLWJ5OiBKb3VuaSBNYWxpbmVuIDxqb3VuaUBxY2EucXVhbGNvbW0uY29tPgorU2lnbmVkLW9mZi1ieTogWmhpeGlvbmcgQ2hpIDxaaGl4aW9uZy5DaGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIHdwYV9zdXBwbGljYW50L2NvbmZpZy5jIHwgNiArKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS93cGFfc3VwcGxpY2FudC9jb25maWcuYyBiL3dwYV9zdXBwbGljYW50L2NvbmZpZy5jCitpbmRleCBiMWM3ODcwLi5mZGQ5NjQzIDEwMDY0NAorLS0tIGEvd3BhX3N1cHBsaWNhbnQvY29uZmlnLmMKKysrKyBiL3dwYV9zdXBwbGljYW50L2NvbmZpZy5jCitAQCAtNDc4LDYgKzQ3OCwxMiBAQCBzdGF0aWMgaW50IHdwYV9jb25maWdfcGFyc2VfcHNrKGNvbnN0IHN0cnVjdCBwYXJzZV9kYXRhICpkYXRhLAorIAkJfQorIAkJd3BhX2hleGR1bXBfYXNjaWlfa2V5KE1TR19NU0dEVU1QLCAiUFNLIChBU0NJSSBwYXNzcGhyYXNlKSIsCisgCQkJCSAgICAgICh1OCAqKSB2YWx1ZSwgbGVuKTsKKysJCWlmIChoYXNfY3RybF9jaGFyKCh1OCAqKSB2YWx1ZSwgbGVuKSkgeworKwkJCXdwYV9wcmludGYoTVNHX0VSUk9SLAorKwkJCQkgICAiTGluZSAlZDogSW52YWxpZCBwYXNzcGhyYXNlIGNoYXJhY3RlciIsCisrCQkJCSAgIGxpbmUpOworKwkJCXJldHVybiAtMTsKKysJCX0KKyAJCWlmIChzc2lkLT5wYXNzcGhyYXNlICYmIG9zX3N0cmxlbihzc2lkLT5wYXNzcGhyYXNlKSA9PSBsZW4gJiYKKyAJCSAgICBvc19tZW1jbXAoc3NpZC0+cGFzc3BocmFzZSwgdmFsdWUsIGxlbikgPT0gMCkgeworIAkJCS8qIE5vIGNoYW5nZSB0byB0aGUgcHJldmlvdXNseSBjb25maWd1cmVkIHZhbHVlICovCistLSAKKzEuOS4xCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS93cGEtc3VwcGxpY2FudC93cGEtc3VwcGxpY2FudC8wMDAxLVdQUy1SZWplY3QtYS1DcmVkZW50aWFsLXdpdGgtaW52YWxpZC1wYXNzcGhyYXNlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvd3BhLXN1cHBsaWNhbnQvd3BhLXN1cHBsaWNhbnQvMDAwMS1XUFMtUmVqZWN0LWEtQ3JlZGVudGlhbC13aXRoLWludmFsaWQtcGFzc3BocmFzZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjIyMmU0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvd3BhLXN1cHBsaWNhbnQvd3BhLXN1cHBsaWNhbnQvMDAwMS1XUFMtUmVqZWN0LWEtQ3JlZGVudGlhbC13aXRoLWludmFsaWQtcGFzc3BocmFzZS5wYXRjaApAQCAtMCwwICsxLDg2IEBACitGcm9tIGVjYmIwYjNkYzEyMmIwZDI5MDk4N2NmOWM4NDAxMGJiZTUzZTEwMjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKb3VuaSBNYWxpbmVuIDxqb3VuaUBxY2EucXVhbGNvbW0uY29tPgorRGF0ZTogRnJpLCA0IE1hciAyMDE2IDE3OjIwOjE4ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBXUFM6IFJlamVjdCBhIENyZWRlbnRpYWwgd2l0aCBpbnZhbGlkIHBhc3NwaHJhc2UKKworV1BBL1dQQTItUGVyc29uYWwgcGFzc3BocmFzZSBpcyBub3QgYWxsb3dlZCB0byBpbmNsdWRlIGNvbnRyb2wKK2NoYXJhY3RlcnMuIFJlamVjdCBhIENyZWRlbnRpYWwgcmVjZWl2ZWQgZnJvbSBhIFdQUyBSZWdpc3RyYXIgYm90aCBhcworU1RBIChDcmVkZW50aWFsKSBhbmQgQVAgKEFQIFNldHRpbmdzKSBpZiB0aGUgY3JlZGVudGlhbCBpcyBmb3IgV1BBUFNLIG9yCitXUEEyUFNLIGF1dGhlbnRpY2F0aW9uIHR5cGUgYW5kIGluY2x1ZGVzIGFuIGludmFsaWQgcGFzc3BocmFzZS4KKworVGhpcyBmaXhlcyBhbiBpc3N1ZSB3aGVyZSBob3N0YXBkIG9yIHdwYV9zdXBwbGljYW50IGNvdWxkIGhhdmUgdXBkYXRlZAordGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBQU0svcGFzc3BocmFzZSBwYXJhbWV0ZXIgd2l0aCBhcmJpdHJhcnkgZGF0YSBmcm9tCithbiBleHRlcm5hbCBkZXZpY2UgKFJlZ2lzdHJhcikgdGhhdCBtYXkgbm90IGJlIGZ1bGx5IHRydXN0ZWQuIFNob3VsZAorc3VjaCBkYXRhIGluY2x1ZGUgYSBuZXdsaW5lIGNoYXJhY3RlciwgdGhlIHJlc3VsdGluZyBjb25maWd1cmF0aW9uIGZpbGUKK2NvdWxkIGJlY29tZSBpbnZhbGlkIGFuZCBmYWlsIHRvIGJlIHBhcnNlZC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitDVkU6IENWRS0yMDE2LTQ0NzYKKworU2lnbmVkLW9mZi1ieTogSm91bmkgTWFsaW5lbiA8am91bmlAcWNhLnF1YWxjb21tLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFpoaXhpb25nIENoaSA8WmhpeGlvbmcuQ2hpQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvdXRpbHMvY29tbW9uLmMgICAgICAgICB8IDEyICsrKysrKysrKysrKworIHNyYy91dGlscy9jb21tb24uaCAgICAgICAgIHwgIDEgKworIHNyYy93cHMvd3BzX2F0dHJfcHJvY2Vzcy5jIHwgMTAgKysrKysrKysrKworIDMgZmlsZXMgY2hhbmdlZCwgMjMgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL3V0aWxzL2NvbW1vbi5jIGIvc3JjL3V0aWxzL2NvbW1vbi5jCitpbmRleCA0NTBlMmM2Li4yN2I3YzAyIDEwMDY0NAorLS0tIGEvc3JjL3V0aWxzL2NvbW1vbi5jCisrKysgYi9zcmMvdXRpbHMvY29tbW9uLmMKK0BAIC02OTcsNiArNjk3LDE4IEBAIGludCBpc19oZXgoY29uc3QgdTggKmRhdGEsIHNpemVfdCBsZW4pCisgfQorIAorIAorK2ludCBoYXNfY3RybF9jaGFyKGNvbnN0IHU4ICpkYXRhLCBzaXplX3QgbGVuKQorK3sKKysJc2l6ZV90IGk7CisrCisrCWZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworKwkJaWYgKGRhdGFbaV0gPCAzMiB8fCBkYXRhW2ldID09IDEyNykKKysJCQlyZXR1cm4gMTsKKysJfQorKwlyZXR1cm4gMDsKKyt9CisrCisrCisgc2l6ZV90IG1lcmdlX2J5dGVfYXJyYXlzKHU4ICpyZXMsIHNpemVfdCByZXNfbGVuLAorIAkJCSBjb25zdCB1OCAqc3JjMSwgc2l6ZV90IHNyYzFfbGVuLAorIAkJCSBjb25zdCB1OCAqc3JjMiwgc2l6ZV90IHNyYzJfbGVuKQorZGlmZiAtLWdpdCBhL3NyYy91dGlscy9jb21tb24uaCBiL3NyYy91dGlscy9jb21tb24uaAoraW5kZXggNzAxZGJiMi4uYTk3MjI0MCAxMDA2NDQKKy0tLSBhL3NyYy91dGlscy9jb21tb24uaAorKysrIGIvc3JjL3V0aWxzL2NvbW1vbi5oCitAQCAtNDg4LDYgKzQ4OCw3IEBAIGNvbnN0IGNoYXIgKiB3cGFfc3NpZF90eHQoY29uc3QgdTggKnNzaWQsIHNpemVfdCBzc2lkX2xlbik7CisgCisgY2hhciAqIHdwYV9jb25maWdfcGFyc2Vfc3RyaW5nKGNvbnN0IGNoYXIgKnZhbHVlLCBzaXplX3QgKmxlbik7CisgaW50IGlzX2hleChjb25zdCB1OCAqZGF0YSwgc2l6ZV90IGxlbik7CisraW50IGhhc19jdHJsX2NoYXIoY29uc3QgdTggKmRhdGEsIHNpemVfdCBsZW4pOworIHNpemVfdCBtZXJnZV9ieXRlX2FycmF5cyh1OCAqcmVzLCBzaXplX3QgcmVzX2xlbiwKKyAJCQkgY29uc3QgdTggKnNyYzEsIHNpemVfdCBzcmMxX2xlbiwKKyAJCQkgY29uc3QgdTggKnNyYzIsIHNpemVfdCBzcmMyX2xlbik7CitkaWZmIC0tZ2l0IGEvc3JjL3dwcy93cHNfYXR0cl9wcm9jZXNzLmMgYi9zcmMvd3BzL3dwc19hdHRyX3Byb2Nlc3MuYworaW5kZXggZWFkYjIyZi4uZThjNDU3OSAxMDA2NDQKKy0tLSBhL3NyYy93cHMvd3BzX2F0dHJfcHJvY2Vzcy5jCisrKysgYi9zcmMvd3BzL3dwc19hdHRyX3Byb2Nlc3MuYworQEAgLTIyOSw2ICsyMjksMTYgQEAgc3RhdGljIGludCB3cHNfd29ya2Fyb3VuZF9jcmVkX2tleShzdHJ1Y3Qgd3BzX2NyZWRlbnRpYWwgKmNyZWQpCisgCQljcmVkLT5rZXlfbGVuLS07CisgI2VuZGlmIC8qIENPTkZJR19XUFNfU1RSSUNUICovCisgCX0KKysKKysKKysJaWYgKGNyZWQtPmF1dGhfdHlwZSAmIChXUFNfQVVUSF9XUEFQU0sgfCBXUFNfQVVUSF9XUEEyUFNLKSAmJgorKwkgICAgKGNyZWQtPmtleV9sZW4gPCA4IHx8IGhhc19jdHJsX2NoYXIoY3JlZC0+a2V5LCBjcmVkLT5rZXlfbGVuKSkpIHsKKysJCXdwYV9wcmludGYoTVNHX0lORk8sICJXUFM6IFJlamVjdCBjcmVkZW50aWFsIHdpdGggaW52YWxpZCBXUEEvV1BBMi1QZXJzb25hbCBwYXNzcGhyYXNlIik7CisrCQl3cGFfaGV4ZHVtcF9hc2NpaV9rZXkoTVNHX0lORk8sICJXUFM6IE5ldHdvcmsgS2V5IiwKKysJCQkJICAgICAgY3JlZC0+a2V5LCBjcmVkLT5rZXlfbGVuKTsKKysJCXJldHVybiAtMTsKKysJfQorKworIAlyZXR1cm4gMDsKKyB9CisgCistLQorMS45LjEKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3dwYS1zdXBwbGljYW50L3dwYS1zdXBwbGljYW50LzAwMDItUmVqZWN0LVNFVF9DUkVELWNvbW1hbmRzLXdpdGgtbmV3bGluZS1jaGFyYWN0ZXJzLWluLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3dwYS1zdXBwbGljYW50L3dwYS1zdXBwbGljYW50LzAwMDItUmVqZWN0LVNFVF9DUkVELWNvbW1hbmRzLXdpdGgtbmV3bGluZS1jaGFyYWN0ZXJzLWluLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYWQ3NDI1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvd3BhLXN1cHBsaWNhbnQvd3BhLXN1cHBsaWNhbnQvMDAwMi1SZWplY3QtU0VUX0NSRUQtY29tbWFuZHMtd2l0aC1uZXdsaW5lLWNoYXJhY3RlcnMtaW4tLnBhdGNoCkBAIC0wLDAgKzEsNjYgQEAKK0Zyb20gYjE2NmNkODRhNzdhNjcxN2JlOTYwMGJmOTUzNzhhMDA1NWQ2ZjVhNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpvdW5pIE1hbGluZW4gPGpvdW5pQHFjYS5xdWFsY29tbS5jb20+CitEYXRlOiBUdWUsIDUgQXByIDIwMTYgMjM6MzM6MTAgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzNdIFJlamVjdCBTRVRfQ1JFRCBjb21tYW5kcyB3aXRoIG5ld2xpbmUgY2hhcmFjdGVycyBpbiB0aGUKKyBzdHJpbmcgdmFsdWVzCisKK01vc3Qgb2YgdGhlIGNyZWQgYmxvY2sgcGFyYW1ldGVycyBhcmUgd3JpdHRlbiBhcyBzdHJpbmdzIHdpdGhvdXQKK2ZpbHRlcmluZyBhbmQgaWYgdGhlcmUgaXMgYW4gZW1iZWRkZWQgbmV3bGluZSBjaGFyYWN0ZXIgaW4gdGhlIHZhbHVlLAordW5leHBlY3RlZCBjb25maWd1cmF0aW9uIGZpbGUgZGF0YSBtaWdodCBiZSB3cml0dGVuLgorCitUaGlzIGZpeGVzIGFuIGlzc3VlIHdoZXJlIHdwYV9zdXBwbGljYW50IGNvdWxkIGhhdmUgdXBkYXRlZCB0aGUKK2NvbmZpZ3VyYXRpb24gZmlsZSBjcmVkIHBhcmFtZXRlciB3aXRoIGFyYml0cmFyeSBkYXRhIGZyb20gdGhlIGNvbnRyb2wKK2ludGVyZmFjZSBvciBELUJ1cyBpbnRlcmZhY2UuIFdoaWxlIHRob3NlIGludGVyZmFjZXMgYXJlIHN1cHBvc2VkIHRvIGJlCithY2Nlc3NpYmxlIG9ubHkgZm9yIHRydXN0ZWQgdXNlcnMvYXBwbGljYXRpb25zLCBpdCBtYXkgYmUgcG9zc2libGUgdGhhdAorYW4gdW50cnVzdGVkIHVzZXIgaGFzIGFjY2VzcyB0byBhIG1hbmFnZW1lbnQgc29mdHdhcmUgY29tcG9uZW50IHRoYXQKK2RvZXMgbm90IHZhbGlkYXRlIHRoZSBjcmVkZW50aWFsIHZhbHVlIGJlZm9yZSBwYXNzaW5nIGl0IHRvCit3cGFfc3VwcGxpY2FudC4KKworVGhpcyBjb3VsZCBhbGxvdyBzdWNoIGFuIHVudHJ1c3RlZCB1c2VyIHRvIGluamVjdCBhbG1vc3QgYXJiaXRyYXJ5IGRhdGEKK2ludG8gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZS4gU3VjaCBjb25maWd1cmF0aW9uIGZpbGUgY291bGQgcmVzdWx0IGluCit3cGFfc3VwcGxpY2FudCB0cnlpbmcgdG8gbG9hZCBhIGxpYnJhcnkgKGUuZy4sIG9wZW5zY19lbmdpbmVfcGF0aCwKK3BrY3MxMV9lbmdpbmVfcGF0aCwgcGtjczExX21vZHVsZV9wYXRoLCBsb2FkX2R5bmFtaWNfZWFwKSBmcm9tIHVzZXIKK2NvbnRyb2xsZWQgbG9jYXRpb24gd2hlbiBzdGFydGluZyBhZ2Fpbi4gVGhpcyB3b3VsZCBhbGxvdyBjb2RlIGZyb20gdGhhdAorbGlicmFyeSB0byBiZSBleGVjdXRlZCB1bmRlciB0aGUgd3BhX3N1cHBsaWNhbnQgcHJvY2VzcyBwcml2aWxlZ2VzLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK0NWRTogQ1ZFLTIwMTYtNDQ3NworCitTaWduZWQtb2ZmLWJ5OiBKb3VuaSBNYWxpbmVuIDxqb3VuaUBxY2EucXVhbGNvbW0uY29tPgorU2lnbmVkLW9mZi1ieTogWmhpeGlvbmcgQ2hpIDxaaGl4aW9uZy5DaGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIHdwYV9zdXBwbGljYW50L2NvbmZpZy5jIHwgOSArKysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS93cGFfc3VwcGxpY2FudC9jb25maWcuYyBiL3dwYV9zdXBwbGljYW50L2NvbmZpZy5jCitpbmRleCBlYjk3Y2Q1Li42OTE1MmVmIDEwMDY0NAorLS0tIGEvd3BhX3N1cHBsaWNhbnQvY29uZmlnLmMKKysrKyBiL3dwYV9zdXBwbGljYW50L2NvbmZpZy5jCitAQCAtMjg5Niw2ICsyODk2LDggQEAgaW50IHdwYV9jb25maWdfc2V0X2NyZWQoc3RydWN0IHdwYV9jcmVkICpjcmVkLCBjb25zdCBjaGFyICp2YXIsCisgCisgCWlmIChvc19zdHJjbXAodmFyLCAicGFzc3dvcmQiKSA9PSAwICYmCisgCSAgICBvc19zdHJuY21wKHZhbHVlLCAiZXh0OiIsIDQpID09IDApIHsKKysJCWlmIChoYXNfbmV3bGluZSh2YWx1ZSkpCisrCQkJcmV0dXJuIC0xOworIAkJc3RyX2NsZWFyX2ZyZWUoY3JlZC0+cGFzc3dvcmQpOworIAkJY3JlZC0+cGFzc3dvcmQgPSBvc19zdHJkdXAodmFsdWUpOworIAkJY3JlZC0+ZXh0X3Bhc3N3b3JkID0gMTsKK0BAIC0yOTQ2LDkgKzI5NDgsMTQgQEAgaW50IHdwYV9jb25maWdfc2V0X2NyZWQoc3RydWN0IHdwYV9jcmVkICpjcmVkLCBjb25zdCBjaGFyICp2YXIsCisgCX0KKyAKKyAJdmFsID0gd3BhX2NvbmZpZ19wYXJzZV9zdHJpbmcodmFsdWUsICZsZW4pOworLQlpZiAodmFsID09IE5VTEwpIHsKKysJaWYgKHZhbCA9PSBOVUxMIHx8CisrCSAgICAob3Nfc3RyY21wKHZhciwgImV4Y2x1ZGVkX3NzaWQiKSAhPSAwICYmCisrCSAgICAgb3Nfc3RyY21wKHZhciwgInJvYW1pbmdfY29uc29ydGl1bSIpICE9IDAgJiYKKysJICAgICBvc19zdHJjbXAodmFyLCAicmVxdWlyZWRfcm9hbWluZ19jb25zb3J0aXVtIikgIT0gMCAmJgorKwkgICAgIGhhc19uZXdsaW5lKHZhbCkpKSB7CisgCQl3cGFfcHJpbnRmKE1TR19FUlJPUiwgIkxpbmUgJWQ6IGludmFsaWQgZmllbGQgJyVzJyBzdHJpbmcgIgorIAkJCSAgICJ2YWx1ZSAnJXMnLiIsIGxpbmUsIHZhciwgdmFsdWUpOworKwkJb3NfZnJlZSh2YWwpOworIAkJcmV0dXJuIC0xOworIAl9CisgCistLSAKKzEuOS4xCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS93cGEtc3VwcGxpY2FudC93cGEtc3VwcGxpY2FudC8wMDAyLVJlbW92ZS1uZXdsaW5lcy1mcm9tLXdwYV9zdXBwbGljYW50LWNvbmZpZy1uZXR3b3JrLW8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS93cGEtc3VwcGxpY2FudC93cGEtc3VwcGxpY2FudC8wMDAyLVJlbW92ZS1uZXdsaW5lcy1mcm9tLXdwYV9zdXBwbGljYW50LWNvbmZpZy1uZXR3b3JrLW8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2M3YjAxYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3dwYS1zdXBwbGljYW50L3dwYS1zdXBwbGljYW50LzAwMDItUmVtb3ZlLW5ld2xpbmVzLWZyb20td3BhX3N1cHBsaWNhbnQtY29uZmlnLW5ldHdvcmstby5wYXRjaApAQCAtMCwwICsxLDg2IEBACitGcm9tIDBmZTVhMjM0MjQwYTEwOGIyOTRhODcxNzRhZDE5N2Y2YjVjYjM4ZTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQYXVsIFN0ZXdhcnQgPHBzdGV3QGdvb2dsZS5jb20+CitEYXRlOiBUaHUsIDMgTWFyIDIwMTYgMTU6NDA6MTkgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIFJlbW92ZSBuZXdsaW5lcyBmcm9tIHdwYV9zdXBwbGljYW50IGNvbmZpZyBuZXR3b3JrCisgb3V0cHV0CisKK1NwdXJpb3VzIG5ld2xpbmVzIG91dHB1dCB3aGlsZSB3cml0aW5nIHRoZSBjb25maWcgZmlsZSBjYW4gY29ycnVwdCB0aGUKK3dwYV9zdXBwbGljYW50IGNvbmZpZ3VyYXRpb24uIEF2b2lkIHdyaXRpbmcgdGhlc2UgZm9yIHRoZSBuZXR3b3JrIGJsb2NrCitwYXJhbWV0ZXJzLiBUaGlzIGlzIGEgZ2VuZXJpYyBmaWx0ZXIgdGhhdCBjb3ZlciBjYXNlcyB0aGF0IG1heSBub3QgaGF2ZQorYmVlbiBleHBsaWNpdGx5IGFkZHJlc3NlZCB3aXRoIGEgbW9yZSBzcGVjaWZpYyBjb21taXQgdG8gYXZvaWQgY29udHJvbAorY2hhcmFjdGVycyBpbiB0aGUgcHNrIHBhcmFtZXRlci4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitDVkU6IENWRS0yMDE2LTQ0NzYKKworU2lnbmVkLW9mZi1ieTogUGF1bCBTdGV3YXJ0IDxwc3Rld0Bnb29nbGUuY29tPgorU2lnbmVkLW9mZi1ieTogWmhpeGlvbmcgQ2hpIDxaaGl4aW9uZy5DaGkud3JzLmNvbT4KKy0tLQorIHNyYy91dGlscy9jb21tb24uYyAgICAgIHwgMTEgKysrKysrKysrKysKKyBzcmMvdXRpbHMvY29tbW9uLmggICAgICB8ICAxICsKKyB3cGFfc3VwcGxpY2FudC9jb25maWcuYyB8IDE1ICsrKysrKysrKysrKystLQorIDMgZmlsZXMgY2hhbmdlZCwgMjUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy91dGlscy9jb21tb24uYyBiL3NyYy91dGlscy9jb21tb24uYworaW5kZXggMjdiN2MwMi4uOTg1NjQ2MyAxMDA2NDQKKy0tLSBhL3NyYy91dGlscy9jb21tb24uYworKysrIGIvc3JjL3V0aWxzL2NvbW1vbi5jCitAQCAtNzA5LDYgKzcwOSwxNyBAQCBpbnQgaGFzX2N0cmxfY2hhcihjb25zdCB1OCAqZGF0YSwgc2l6ZV90IGxlbikKKyB9CisgCisgCisraW50IGhhc19uZXdsaW5lKGNvbnN0IGNoYXIgKnN0cikKKyt7CisrCXdoaWxlICgqc3RyKSB7CisrCQlpZiAoKnN0ciA9PSAnXG4nIHx8ICpzdHIgPT0gJ1xyJykKKysJCQlyZXR1cm4gMTsKKysJCXN0cisrOworKwl9CisrCXJldHVybiAwOworK30KKysKKysKKyBzaXplX3QgbWVyZ2VfYnl0ZV9hcnJheXModTggKnJlcywgc2l6ZV90IHJlc19sZW4sCisgCQkJIGNvbnN0IHU4ICpzcmMxLCBzaXplX3Qgc3JjMV9sZW4sCisgCQkJIGNvbnN0IHU4ICpzcmMyLCBzaXplX3Qgc3JjMl9sZW4pCitkaWZmIC0tZ2l0IGEvc3JjL3V0aWxzL2NvbW1vbi5oIGIvc3JjL3V0aWxzL2NvbW1vbi5oCitpbmRleCBhOTcyMjQwLi5kMTk5MjdiIDEwMDY0NAorLS0tIGEvc3JjL3V0aWxzL2NvbW1vbi5oCisrKysgYi9zcmMvdXRpbHMvY29tbW9uLmgKK0BAIC00ODksNiArNDg5LDcgQEAgY29uc3QgY2hhciAqIHdwYV9zc2lkX3R4dChjb25zdCB1OCAqc3NpZCwgc2l6ZV90IHNzaWRfbGVuKTsKKyBjaGFyICogd3BhX2NvbmZpZ19wYXJzZV9zdHJpbmcoY29uc3QgY2hhciAqdmFsdWUsIHNpemVfdCAqbGVuKTsKKyBpbnQgaXNfaGV4KGNvbnN0IHU4ICpkYXRhLCBzaXplX3QgbGVuKTsKKyBpbnQgaGFzX2N0cmxfY2hhcihjb25zdCB1OCAqZGF0YSwgc2l6ZV90IGxlbik7CisraW50IGhhc19uZXdsaW5lKGNvbnN0IGNoYXIgKnN0cik7Cisgc2l6ZV90IG1lcmdlX2J5dGVfYXJyYXlzKHU4ICpyZXMsIHNpemVfdCByZXNfbGVuLAorIAkJCSBjb25zdCB1OCAqc3JjMSwgc2l6ZV90IHNyYzFfbGVuLAorIAkJCSBjb25zdCB1OCAqc3JjMiwgc2l6ZV90IHNyYzJfbGVuKTsKK2RpZmYgLS1naXQgYS93cGFfc3VwcGxpY2FudC9jb25maWcuYyBiL3dwYV9zdXBwbGljYW50L2NvbmZpZy5jCitpbmRleCBmZGQ5NjQzLi5lYjk3Y2Q1IDEwMDY0NAorLS0tIGEvd3BhX3N1cHBsaWNhbnQvY29uZmlnLmMKKysrKyBiL3dwYV9zdXBwbGljYW50L2NvbmZpZy5jCitAQCAtMjY5OSw4ICsyNjk5LDE5IEBAIGNoYXIgKiB3cGFfY29uZmlnX2dldChzdHJ1Y3Qgd3BhX3NzaWQgKnNzaWQsIGNvbnN0IGNoYXIgKnZhcikKKyAKKyAJZm9yIChpID0gMDsgaSA8IE5VTV9TU0lEX0ZJRUxEUzsgaSsrKSB7CisgCQljb25zdCBzdHJ1Y3QgcGFyc2VfZGF0YSAqZmllbGQgPSAmc3NpZF9maWVsZHNbaV07CistCQlpZiAob3Nfc3RyY21wKHZhciwgZmllbGQtPm5hbWUpID09IDApCistCQkJcmV0dXJuIGZpZWxkLT53cml0ZXIoZmllbGQsIHNzaWQpOworKwkJaWYgKG9zX3N0cmNtcCh2YXIsIGZpZWxkLT5uYW1lKSA9PSAwKSB7CisrCQkJY2hhciAqcmV0ID0gZmllbGQtPndyaXRlcihmaWVsZCwgc3NpZCk7CisrCisrCQkJaWYgKHJldCAmJiBoYXNfbmV3bGluZShyZXQpKSB7CisrCQkJCXdwYV9wcmludGYoTVNHX0VSUk9SLAorKwkJCQkJICAgIkZvdW5kIG5ld2xpbmUgaW4gdmFsdWUgZm9yICVzOyBub3QgcmV0dXJuaW5nIGl0IiwKKysJCQkJCSAgIHZhcik7CisrCQkJCW9zX2ZyZWUocmV0KTsKKysJCQkJcmV0ID0gTlVMTDsKKysJCQl9CisrCisrCQkJcmV0dXJuIHJldDsKKysJCX0KKyAJfQorIAorIAlyZXR1cm4gTlVMTDsKKy0tCisxLjkuMQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvd3BhLXN1cHBsaWNhbnQvd3BhLXN1cHBsaWNhbnQvMDAwMy1SZWplY3QtU0VULWNvbW1hbmRzLXdpdGgtbmV3bGluZS1jaGFyYWN0ZXJzLWluLXRoZS1zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvd3BhLXN1cHBsaWNhbnQvd3BhLXN1cHBsaWNhbnQvMDAwMy1SZWplY3QtU0VULWNvbW1hbmRzLXdpdGgtbmV3bGluZS1jaGFyYWN0ZXJzLWluLXRoZS1zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzNzVkYjcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS93cGEtc3VwcGxpY2FudC93cGEtc3VwcGxpY2FudC8wMDAzLVJlamVjdC1TRVQtY29tbWFuZHMtd2l0aC1uZXdsaW5lLWNoYXJhY3RlcnMtaW4tdGhlLXMucGF0Y2gKQEAgLTAsMCArMSw1NCBAQAorRnJvbSAyYTNmNTY1MDJiNTIzNzVjM2JmMTEzY2Y5MmFkZmE5OWJhZDZiNDg4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSm91bmkgTWFsaW5lbiA8am91bmlAcWNhLnF1YWxjb21tLmNvbT4KK0RhdGU6IFR1ZSwgNSBBcHIgMjAxNiAyMzo1NTo0OCArMDMwMAorU3ViamVjdDogW1BBVENIIDMvM10gUmVqZWN0IFNFVCBjb21tYW5kcyB3aXRoIG5ld2xpbmUgY2hhcmFjdGVycyBpbiB0aGUKKyBzdHJpbmcgdmFsdWVzCisKK01hbnkgb2YgdGhlIGdsb2JhbCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgYXJlIHdyaXR0ZW4gYXMgc3RyaW5ncword2l0aG91dCBmaWx0ZXJpbmcgYW5kIGlmIHRoZXJlIGlzIGFuIGVtYmVkZGVkIG5ld2xpbmUgY2hhcmFjdGVyIGluIHRoZQordmFsdWUsIHVuZXhwZWN0ZWQgY29uZmlndXJhdGlvbiBmaWxlIGRhdGEgbWlnaHQgYmUgd3JpdHRlbi4KKworVGhpcyBmaXhlcyBhbiBpc3N1ZSB3aGVyZSB3cGFfc3VwcGxpY2FudCBjb3VsZCBoYXZlIHVwZGF0ZWQgdGhlCitjb25maWd1cmF0aW9uIGZpbGUgZ2xvYmFsIHBhcmFtZXRlciB3aXRoIGFyYml0cmFyeSBkYXRhIGZyb20gdGhlIGNvbnRyb2wKK2ludGVyZmFjZSBvciBELUJ1cyBpbnRlcmZhY2UuIFdoaWxlIHRob3NlIGludGVyZmFjZXMgYXJlIHN1cHBvc2VkIHRvIGJlCithY2Nlc3NpYmxlIG9ubHkgZm9yIHRydXN0ZWQgdXNlcnMvYXBwbGljYXRpb25zLCBpdCBtYXkgYmUgcG9zc2libGUgdGhhdAorYW4gdW50cnVzdGVkIHVzZXIgaGFzIGFjY2VzcyB0byBhIG1hbmFnZW1lbnQgc29mdHdhcmUgY29tcG9uZW50IHRoYXQKK2RvZXMgbm90IHZhbGlkYXRlIHRoZSB2YWx1ZSBvZiBhIHBhcmFtZXRlciBiZWZvcmUgcGFzc2luZyBpdCB0bword3BhX3N1cHBsaWNhbnQuCisKK1RoaXMgY291bGQgYWxsb3cgc3VjaCBhbiB1bnRydXN0ZWQgdXNlciB0byBpbmplY3QgYWxtb3N0IGFyYml0cmFyeSBkYXRhCitpbnRvIHRoZSBjb25maWd1cmF0aW9uIGZpbGUuIFN1Y2ggY29uZmlndXJhdGlvbiBmaWxlIGNvdWxkIHJlc3VsdCBpbgord3BhX3N1cHBsaWNhbnQgdHJ5aW5nIHRvIGxvYWQgYSBsaWJyYXJ5IChlLmcuLCBvcGVuc2NfZW5naW5lX3BhdGgsCitwa2NzMTFfZW5naW5lX3BhdGgsIHBrY3MxMV9tb2R1bGVfcGF0aCwgbG9hZF9keW5hbWljX2VhcCkgZnJvbSB1c2VyCitjb250cm9sbGVkIGxvY2F0aW9uIHdoZW4gc3RhcnRpbmcgYWdhaW4uIFRoaXMgd291bGQgYWxsb3cgY29kZSBmcm9tIHRoYXQKK2xpYnJhcnkgdG8gYmUgZXhlY3V0ZWQgdW5kZXIgdGhlIHdwYV9zdXBwbGljYW50IHByb2Nlc3MgcHJpdmlsZWdlcy4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitDVkU6IENWRS0yMDE2LTQ0NzcKKworU2lnbmVkLW9mZi1ieTogSm91bmkgTWFsaW5lbiA8am91bmlAcWNhLnF1YWxjb21tLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFpoaXhpb25nIENoaSA8WmhpeGlvbmcuQ2hpQHdpbmRyaXZlci5jb20+CistLS0KKyB3cGFfc3VwcGxpY2FudC9jb25maWcuYyB8IDYgKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvd3BhX3N1cHBsaWNhbnQvY29uZmlnLmMgYi93cGFfc3VwcGxpY2FudC9jb25maWcuYworaW5kZXggNjkxNTJlZi4uZDlhMTYwMyAxMDA2NDQKKy0tLSBhL3dwYV9zdXBwbGljYW50L2NvbmZpZy5jCisrKysgYi93cGFfc3VwcGxpY2FudC9jb25maWcuYworQEAgLTM3NjQsNiArMzc2NCwxMiBAQCBzdGF0aWMgaW50IHdwYV9nbG9iYWxfY29uZmlnX3BhcnNlX3N0cihjb25zdCBzdHJ1Y3QgZ2xvYmFsX3BhcnNlX2RhdGEgKmRhdGEsCisgCQlyZXR1cm4gLTE7CisgCX0KKyAKKysJaWYgKGhhc19uZXdsaW5lKHBvcykpIHsKKysJCXdwYV9wcmludGYoTVNHX0VSUk9SLCAiTGluZSAlZDogaW52YWxpZCAlcyB2YWx1ZSB3aXRoIG5ld2xpbmUiLAorKwkJCSAgIGxpbmUsIGRhdGEtPm5hbWUpOworKwkJcmV0dXJuIC0xOworKwl9CisrCisgCXRtcCA9IG9zX3N0cmR1cChwb3MpOworIAlpZiAodG1wID09IE5VTEwpCisgCQlyZXR1cm4gLTE7CistLSAKKzEuOS4xCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS93cGEtc3VwcGxpY2FudC93cGEtc3VwcGxpY2FudF8yLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS93cGEtc3VwcGxpY2FudC93cGEtc3VwcGxpY2FudF8yLjUuYmIKaW5kZXggOTM1YzhhZi4uYTQxNjBlMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvd3BhLXN1cHBsaWNhbnQvd3BhLXN1cHBsaWNhbnRfMi41LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3dwYS1zdXBwbGljYW50L3dwYS1zdXBwbGljYW50XzIuNS5iYgpAQCAtMjQsNiArMjQsMTEgQEAKICAgICAgICAgICAgZmlsZTovL3dwYV9zdXBwbGljYW50LmNvbmYgXAogICAgICAgICAgICBmaWxlOi8vd3BhX3N1cHBsaWNhbnQuY29uZi1zYW5lIFwKICAgICAgICAgICAgZmlsZTovLzk5X3dwYV9zdXBwbGljYW50IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtV1BTLVJlamVjdC1hLUNyZWRlbnRpYWwtd2l0aC1pbnZhbGlkLXBhc3NwaHJhc2UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1SZW1vdmUtbmV3bGluZXMtZnJvbS13cGFfc3VwcGxpY2FudC1jb25maWctbmV0d29yay1vLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUmVqZWN0LXBzay1wYXJhbWV0ZXItc2V0LXdpdGgtaW52YWxpZC1wYXNzcGhyYXNlLWNoYS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLVJlamVjdC1TRVRfQ1JFRC1jb21tYW5kcy13aXRoLW5ld2xpbmUtY2hhcmFjdGVycy1pbi0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1SZWplY3QtU0VULWNvbW1hbmRzLXdpdGgtbmV3bGluZS1jaGFyYWN0ZXJzLWluLXRoZS1zLnBhdGNoIFwKICAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiOTZmZjc1YzNhNTE0ZjFmMzI0NTYwYTIzNzZmMTMxMTAiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2NlNTViYWU0ODNiMzY0ZWFlNTVjMzViYTU2N2MyNzliZTQ0MmVkOGJhYjViODBhM2M3ZmIwZDA1N2I5YjMxNiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9iYXNlLWZpbGVzL2Jhc2UtZmlsZXMvcHJvZmlsZSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9iYXNlLWZpbGVzL2Jhc2UtZmlsZXMvcHJvZmlsZQppbmRleCA1M2MyNjgwLi43MzY3ZmQxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYmFzZS1maWxlcy9iYXNlLWZpbGVzL3Byb2ZpbGUKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Jhc2UtZmlsZXMvYmFzZS1maWxlcy9wcm9maWxlCkBAIC01LDEyICs1LDYgQEAKIEVESVRPUj0idmkiCQkJIyBuZWVkZWQgZm9yIHBhY2thZ2VzIGxpa2UgY3JvbiwgZ2l0LWNvbW1pdAogdGVzdCAteiAiJFRFUk0iICYmIFRFUk09InZ0MTAwIgkjIEJhc2ljIHRlcm1pbmFsIGNhcGFiLiBGb3Igc2NyZWVuIGV0Yy4KIAotaWYgWyAhIC1lIC9ldGMvbG9jYWx0aW1lIC1hICEgLWUgL2V0Yy9UWiBdOyB0aGVuCi0JVFo9IlVUQyIJCSMgVGltZSBab25lLiBMb29rIGF0IGh0dHA6Ly90aGVvcnkudXdpbm5pcGVnLmNhL2dudS9nbGliYy9saWJjXzMwMy5odG1sIAotCQkJCSMgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIGhvdyB0byBzZXQgdGhpcyB0byB5b3VyIGxvY2FsIHRpbWV6b25lLgotCWV4cG9ydCBUWgotZmkKLQogaWYgWyAiJEhPTUUiID0gIlJPT1RIT01FIiBdOyB0aGVuCiAgICBQQVRIPSRQQVRIOi91c3IvbG9jYWwvc2JpbjovdXNyL3NiaW46L3NiaW4KIGZpCkBAIC0yMCwxNyArMTQsMjIgQEAKIGZpCiAKIGlmIFsgLWQgL2V0Yy9wcm9maWxlLmQgXTsgdGhlbgotICBmb3IgaSBpbiAvZXRjL3Byb2ZpbGUuZC8qIDsgZG8KLSAgICAuICRpCisgIGZvciBpIGluIC9ldGMvcHJvZmlsZS5kLyouc2ggOyBkbworICAgIGlmIFsgLWYgJGkgLWEgLXIgJGkgXTsgdGhlbgorICAgICAgLiAkaQorICAgIGZpCiAgIGRvbmUKICAgdW5zZXQgaQogZmkKIAotaWYgWyAteCAvdXNyL2Jpbi9yZXNpemUgXTt0aGVuCi0gIC91c3IvYmluL3Jlc2l6ZSA+L2Rldi9udWxsCitpZiBbIC14IC91c3IvYmluL3Jlc2l6ZSBdICYmIHRlcm1wYXRoPSJgdHR5YCI7IHRoZW4KKyAgIyBNYWtlIHN1cmUgd2UgYXJlIG9uIGEgc2VyaWFsIGNvbnNvbGUgKGkuZS4gdGhlIGRldmljZSB1c2VkIHN0YXJ0cyB3aXRoIC9kZXYvdHR5KSwKKyAgIyBvdGhlcndpc2Ugd2UgY29uZnVzZSBlLmcuIHRoZSBlY2xpcHNlIGxhdW5jaGVyIHdoaWNoIHRyaWVzIGRvIHVzZSBzc2gKKyAgY2FzZSAiJHRlcm1wYXRoIiBpbgorICAvZGV2L3R0eSopIHJlc2l6ZSA+L2Rldi9udWxsCisgIGVzYWMKIGZpCiAKIGV4cG9ydCBQQVRIIFBTMSBPUElFRElSIFFQRURJUiBRVERJUiBFRElUT1IgVEVSTQogCiB1bWFzayAwMjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Jhc2UtZmlsZXMvYmFzZS1maWxlc18zLjAuMTQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYmFzZS1maWxlcy9iYXNlLWZpbGVzXzMuMC4xNC5iYgppbmRleCBkMzkxNzA3Li41MzMzMTEwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYmFzZS1maWxlcy9iYXNlLWZpbGVzXzMuMC4xNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYmFzZS1maWxlcy9iYXNlLWZpbGVzXzMuMC4xNC5iYgpAQCAtMTY1LDkgKzE2NSw3IEBACiAgICAgICAgIGRvbmUKIH0KIAotc3lzcm9vdF9zdGFnZV9hbGxfYXBwZW5kICgpIHsKLQlzeXNyb290X3N0YWdlX2RpciAke0R9JHtzeXNjb25mZGlyfS9za2VsICR7U1lTUk9PVF9ERVNURElSfSR7c3lzY29uZmRpcn0vc2tlbAotfQorU1lTUk9PVF9ESVJTICs9ICIke3N5c2NvbmZkaXJ9L3NrZWwiCiAKIFBBQ0tBR0VTID0gIiR7UE59LWRvYyAke1BOfSAke1BOfS1kZXYgJHtQTn0tZGJnIgogRklMRVNfJHtQTn0gPSAiLyIKQEAgLTE3Nyw0ICsxNzUsMyBAQAogCiBDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9mc3RhYiAke0BbJycsICcke3N5c2NvbmZkaXJ9L2hvc3RuYW1lJ11bKGQuZ2V0VmFyKCdob3N0bmFtZScsIFRydWUpICE9ICcnKV19ICR7c3lzY29uZmRpcn0vc2hlbGxzIgogQ09ORkZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9L21vdGQgJHtzeXNjb25mZGlyfS9uc3N3aXRjaC5jb25mICR7c3lzY29uZmRpcn0vcHJvZmlsZSIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2JzZC1oZWFkZXJzL2JzZC1oZWFkZXJzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2JzZC1oZWFkZXJzL2JzZC1oZWFkZXJzLmJiCmluZGV4IDhmNDNkNDMuLmM5OTQ1ZDQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9ic2QtaGVhZGVycy9ic2QtaGVhZGVycy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnNkLWhlYWRlcnMvYnNkLWhlYWRlcnMuYmIKQEAgLTEsNyArMSw3IEBACiAjIENvcHlyaWdodCAoQykgMjAxNiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCBmb3IgdGhlIHRlcm1zKQogCi1ERVNDUklQVElPTiA9ICJic2QgY29tcGF0aWJsZSBoZWFkZXJzIgorU1VNTUFSWSA9ICJCU0QgY29tcGF0aWJsZSBoZWFkZXJzIgogTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UgJiBCU0QtMi1DbGF1c2UiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zeXMtcXVldWUuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTMyO21kNT1jNjM1MmIwZjAzYmI0NDg2MDA0NTY1NDdkMzM0YjU2ZiIKIFNFQ1RJT04gPSAiZGV2ZWwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3guaW5jCmluZGV4IDVlOTFhMjYuLmIyZjE5NjAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3guaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3guaW5jCkBAIC0xOSw3ICsxOSw3IEBACiBleHBvcnQgRVhUUkFfTERGTEFHUyA9ICIke0xERkxBR1N9IgogCiAjIFdlIGRvbid0IHdhbnQgJy1lIE1BS0VGTEFHUz0nIGluIEVYVFJBX09FTUFLRQotRVhUUkFfT0VNQUtFID0gIkNDPScke0NDfScgTEQ9JyR7Q0NMRH0nIFY9MSBBUkNIPSR7VEFSR0VUX0FSQ0h9IENST1NTX0NPTVBJTEU9JHtUQVJHRVRfUFJFRklYfSBTS0lQX1NUUklQPXkiCitFWFRSQV9PRU1BS0UgPSAiQ0M9JyR7Q0N9JyBMRD0nJHtDQ0xEfScgVj0xIEFSQ0g9JHtUQVJHRVRfQVJDSH0gQ1JPU1NfQ09NUElMRT0ke1RBUkdFVF9QUkVGSVh9IFNLSVBfU1RSSVA9eSBIT1NUQ0M9JyR7QlVJTERfQ0N9JyBIT1NUQ1BQPScke0JVSUxEX0NQUH0nIgogCiBQQUNLQUdFUyA9KyAiJHtQTn0taHR0cGQgJHtQTn0tdWRoY3BkICR7UE59LXVkaGNwYyAke1BOfS1zeXNsb2cgJHtQTn0tbWRldiAke1BOfS1od2Nsb2NrIgogCkBAIC0yODYsOCArMjg2LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpIGluICR0bXAKICAgICAgICAgICAgICAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGo9YGVjaG8gJHtpfSB8IHNlZCBzL1w7L1wgL2dgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPWBlY2hvICR7aX0gfCBzZWQgLWUgJ3MvdHR5Ly8nIC1lICdzL14uKjsvLycgLWUgJ3MvOy4qLy8nYAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJ0dHkkbGFiZWw6OnJlc3Bhd246JHtiYXNlX3NiaW5kaXJ9L2dldHR5ICR7an0iID4+ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXR0YWIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9YGVjaG8gJHtpfSB8IHNlZCAtZSAncy9eLio7Ly8nIC1lICdzLzsuKi8vJ2AKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiJGlkOjpyZXNwYXduOiR7YmFzZV9zYmluZGlyfS9nZXR0eSAke2p9IiA+PiAke0R9JHtzeXNjb25mZGlyfS9pbml0dGFiCiAgICAgICAgICAgICAgICAgICAgICAgICBkb25lCiAgICAgICAgICAgICAgICAgZmkKICAgICAgICAgZmkKQEAgLTQyMyw3ICs0MjMsNyBAQAogCSMgcmVtb3ZlIHN5c2xvZwogCWlmIHRlc3QgIngkRCIgPSAieCI7IHRoZW4KIAkJaWYgdGVzdCAiJDEiID0gInVwZ3JhZGUiIC1vICIkMSIgPSAicmVtb3ZlIjsgdGhlbgotCQkJJHtzeXNjb25mZGlyfS9pbml0LmQvc3lzbG9nIHN0b3AKKwkJCSR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c2xvZyBzdG9wIHx8IDoKIAkJZmkKIAlmaQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAxLWZsb2NrLXVwZGF0ZS10aGUtYmVoYXZpb3VyLW9mLWMtcGFyYW1ldGVyLXRvLW1hdGNoLXUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtZmxvY2stdXBkYXRlLXRoZS1iZWhhdmlvdXItb2YtYy1wYXJhbWV0ZXItdG8tbWF0Y2gtdS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmNiZDczCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAxLWZsb2NrLXVwZGF0ZS10aGUtYmVoYXZpb3VyLW9mLWMtcGFyYW1ldGVyLXRvLW1hdGNoLXUucGF0Y2gKQEAgLTAsMCArMSw3MyBAQAorRnJvbSAxOThmMThhZGRmMWQ4MTRjMmZlZmNiNDkyZjNiOWZiZDIyMTY2OWJiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIk1heGluIEIuIEpvaG4iIDxtYXhpbi5qb2huQGludGVsLmNvbT4KK0RhdGU6IFdlZCwgMjAgQXByIDIwMTYgMTg6MjQ6NDUgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gZmxvY2s6IHVwZGF0ZSB0aGUgYmVoYXZpb3VyIG9mIC1jIHBhcmFtZXRlciB0byBtYXRjaCB1cHN0cmVhbQorCitJbiB1cHN0cmVhbSwgLWMgJ1BST0cgQVJHUycgbWVhbnMgInJ1biBzaCAtYyAnUFJPRyBBUkdTJyIKKworZnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGQgICAgIG5ldyAgIGRlbHRhCitmbG9ja19tYWluICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI4NiAgICAgMzc3ICAgICArOTEKKy5yb2RhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTU1ODQ5ICAxNTU4OTAgICAgICs0MQorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorWyBodHRwOi8vbGlzdHMuYnVzeWJveC5uZXQvcGlwZXJtYWlsL2J1c3lib3gvMjAxNi1BcHJpbC8wODQxNDIuaHRtbCBdCisKK1NpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgorLS0tCisgdXRpbC1saW51eC9mbG9jay5jIHwgMjAgKysrKysrKysrKysrKystLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3V0aWwtbGludXgvZmxvY2suYyBiL3V0aWwtbGludXgvZmxvY2suYworaW5kZXggMDVhNzQ3Zi4uYzg1YTI1ZCAxMDA2NDQKKy0tLSBhL3V0aWwtbGludXgvZmxvY2suYworKysrIGIvdXRpbC1saW51eC9mbG9jay5jCitAQCAtMjAsNiArMjAsNyBAQCBpbnQgZmxvY2tfbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIE1BSU5fRVhURVJOQUxMWV9WSVNJQkxFOworIGludCBmbG9ja19tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgY2hhciAqKmFyZ3YpCisgeworIAlpbnQgbW9kZSwgb3B0LCBmZDsKKysgICAgY2hhciAqY21kX2FyZ3NbNF07CisgCWVudW0geworIAkJT1BUX3MgPSAoMSA8PCAwKSwKKyAJCU9QVF94ID0gKDEgPDwgMSksCitAQCAtNTcsNyArNTgsNiBAQCBpbnQgZmxvY2tfbWFpbihpbnQgYXJnYyBVTlVTRURfUEFSQU0sIGNoYXIgKiphcmd2KQorIAkvKiBJZiBpdCBpcyAiZmxvY2sgRklMRSAtYyBQUk9HIiwgdGhlbiAtYyBpc24ndCBjYXVnaHQgYnkgZ2V0b3B0MzI6CisgCSAqIHdlIHVzZSAiKyIgaW4gb3JkZXIgdG8gc3VwcG9ydCAiZmxvY2sgLW9wdCBGSUxFIFBST0cgLXdpdGgtb3B0cyIsCisgCSAqIHdlIG5lZWQgdG8gcmVtb3ZlIC1jIGJ5IGhhbmQuCistCSAqIFRPRE86IGluIHVwc3RyZWFtLCAtYyAnUFJPRyBBUkdTJyBtZWFucyAicnVuIHNoIC1jICdQUk9HIEFSR1MnIgorIAkgKi8KKyAJaWYgKGFyZ3ZbMF0KKyAJICYmIGFyZ3ZbMF1bMF0gPT0gJy0nCitAQCAtNjUsNyArNjUsMTAgQEAgaW50IGZsb2NrX21haW4oaW50IGFyZ2MgVU5VU0VEX1BBUkFNLCBjaGFyICoqYXJndikKKyAJICAgIHx8IChFTkFCTEVfTE9OR19PUFRTICYmIHN0cmNtcChhcmd2WzBdICsgMSwgIi1jb21tYW5kIikgPT0gMCkKKyAJICAgICkKKyAJKSB7CistCQlhcmd2Kys7CisrICAgICAgICBpZiAoYXJnYyAhPSBvcHRpbmQgKyAzKQorKyAgICAgICAgICAgIGJiX2Vycm9yX21zZ19hbmRfZGllKCItYyByZXF1aXJlcyBleGFjdGx5IG9uZSBjb21tYW5kIGFyZ3VtZW50Iik7CisrICAgICAgICBlbHNlCisrICAgICAgICAgICAgYXJndisrOworIAl9CisgCisgCWlmIChPUFRfcyA9PSBMT0NLX1NIICYmIE9QVF94ID09IExPQ0tfRVggJiYgT1BUX24gPT0gTE9DS19OQiAmJiBPUFRfdSA9PSBMT0NLX1VOKSB7CitAQCAtODksOSArOTIsMTQgQEAgaW50IGZsb2NrX21haW4oaW50IGFyZ2MgVU5VU0VEX1BBUkFNLCBjaGFyICoqYXJndikKKyAJCQlyZXR1cm4gRVhJVF9GQUlMVVJFOworIAkJYmJfcGVycm9yX25vbXNnX2FuZF9kaWUoKTsKKyAJfQorLQorLQlpZiAoYXJndlswXSkKKy0JCXJldHVybiBzcGF3bl9hbmRfd2FpdChhcmd2KTsKKy0KKysgICAgaWYgKGFyZ3ZbMF0pIHsKKysgICAgICAgIGNtZF9hcmdzWzBdID0gZ2V0ZW52KCJTSEVMTCIpOworKyAgICAgICAgaWYgKCFjbWRfYXJnc1swXSkKKysgICAgICAgICAgICBjbWRfYXJnc1swXSA9IChjaGFyKilERUZBVUxUX1NIRUxMOworKyAgICAgICAgY21kX2FyZ3NbMV0gPSAoY2hhciopIi1jIjsKKysgICAgICAgIGNtZF9hcmdzWzJdID0gYXJndlswXTsKKysgICAgICAgIGNtZF9hcmdzWzNdID0gTlVMTDsKKysgICAgICAgIHJldHVybiBzcGF3bl9hbmRfd2FpdChjbWRfYXJncyk7CisrICAgIH0KKyAJcmV0dXJuIEVYSVRfU1VDQ0VTUzsKKyB9CistLSAKKzIuNC4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS1zZWQtZml4LXNlZC1uLWZsdXNoZXMtcGF0dGVybi1zcGFjZS10ZXJtaW5hdGVzLWVhcmx5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAxLXNlZC1maXgtc2VkLW4tZmx1c2hlcy1wYXR0ZXJuLXNwYWNlLXRlcm1pbmF0ZXMtZWFybHkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGY1Mzk4NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS1zZWQtZml4LXNlZC1uLWZsdXNoZXMtcGF0dGVybi1zcGFjZS10ZXJtaW5hdGVzLWVhcmx5LnBhdGNoCkBAIC0wLDAgKzEsNzIgQEAKK0Zyb20gOTAzNTQyZjczMzFjNTgwMDdhM2VmOTM4ZDQxZTFjNTVmYzMyOTY0OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDMxIEF1ZyAyMDE2IDIzOjQwOjQzIC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIHNlZDogZml4ICJzZWQgbiAoZmx1c2hlcyBwYXR0ZXJuIHNwYWNlLCB0ZXJtaW5hdGVzIGVhcmx5KSIKKyB0ZXN0Y2FzZSBmYWlsdXJlCisKK1RoaXMgcGF0Y2ggZml4ICJzZWQgbiAoZmx1c2hlcyBwYXR0ZXJuIHNwYWNlLCB0ZXJtaW5hdGVzIGVhcmx5KSIKK3Rlc3RjYXNlIGZhaWx1cmUuIFdlIGNhbiBzZWUgaXQgYXQ6CisKKwlodHRwczovL2dpdC5idXN5Ym94Lm5ldC9idXN5Ym94L2NvbW1pdC8/aWQ9NzZkNzIzNzZlMDI0NGE1Y2FmZDQ4ODBjZGM2MjNlMzdkODZhNzVlNAorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+CistLS0KKyBlZGl0b3JzL3NlZC5jICAgICAgIHwgMTkgKysrKysrKysrKy0tLS0tLS0tLQorIHRlc3RzdWl0ZS9zZWQudGVzdHMgfCAgNiArLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZWRpdG9ycy9zZWQuYyBiL2VkaXRvcnMvc2VkLmMKK2luZGV4IDdiYmY4MjAuLjI1OWMzOWMgMTAwNjQ0CistLS0gYS9lZGl0b3JzL3NlZC5jCisrKysgYi9lZGl0b3JzL3NlZC5jCitAQCAtMTI3NCwxNiArMTI3NCwxNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZpbGVzKHZvaWQpCisgCQljYXNlICduJzoKKyAJCQlpZiAoIUcuYmVfcXVpZXQpCisgCQkJCXNlZF9wdXRzKHBhdHRlcm5fc3BhY2UsIGxhc3RfZ2V0c19jaGFyKTsKKy0JCQlpZiAobmV4dF9saW5lKSB7CistCQkJCWZyZWUocGF0dGVybl9zcGFjZSk7CistCQkJCXBhdHRlcm5fc3BhY2UgPSBuZXh0X2xpbmU7CistCQkJCWxhc3RfZ2V0c19jaGFyID0gbmV4dF9nZXRzX2NoYXI7CistCQkJCW5leHRfbGluZSA9IGdldF9uZXh0X2xpbmUoJm5leHRfZ2V0c19jaGFyLCAmbGFzdF9wdXRzX2NoYXIsIGxhc3RfZ2V0c19jaGFyKTsKKy0JCQkJc3Vic3RpdHV0ZWQgPSAwOworLQkJCQlsaW5lbnVtKys7CistCQkJCWJyZWFrOworKwkJCWlmIChuZXh0X2xpbmUgPT0gTlVMTCkgeworKwkJCQkvKiBJZiBubyBuZXh0IGxpbmUsIGp1bXAgdG8gZW5kIG9mIHNjcmlwdCBhbmQgZXhpdC4gKi8KKysJCQkJZ290byBkaXNjYXJkX2xpbmU7CisgCQkJfQorLQkJCS8qIGZhbGwgdGhyb3VnaCAqLworKwkJCWZyZWUocGF0dGVybl9zcGFjZSk7CisrCQkJcGF0dGVybl9zcGFjZSA9IG5leHRfbGluZTsKKysJCQlsYXN0X2dldHNfY2hhciA9IG5leHRfZ2V0c19jaGFyOworKwkJCW5leHRfbGluZSA9IGdldF9uZXh0X2xpbmUoJm5leHRfZ2V0c19jaGFyLCAmbGFzdF9wdXRzX2NoYXIsIGxhc3RfZ2V0c19jaGFyKTsKKysJCQlzdWJzdGl0dXRlZCA9IDA7CisrCQkJbGluZW51bSsrOworKwkJCWJyZWFrOworIAorIAkJLyogUXVpdC4gIEVuZCBvZiBzY3JpcHQsIGVuZCBvZiBpbnB1dC4gKi8KKyAJCWNhc2UgJ3EnOgorZGlmZiAtLWdpdCBhL3Rlc3RzdWl0ZS9zZWQudGVzdHMgYi90ZXN0c3VpdGUvc2VkLnRlc3RzCitpbmRleCAzNDQ3OWU1Li45NmZmN2E1IDEwMDc1NQorLS0tIGEvdGVzdHN1aXRlL3NlZC50ZXN0cworKysrIGIvdGVzdHN1aXRlL3NlZC50ZXN0cworQEAgLTczLDEzICs3Myw5IEBAIHRlc3RpbmcgInNlZCB0ICh0ZXN0L2JyYW5jaCBjbGVhcnMgdGVzdCBiaXQpIiAic2VkIC1lICdzL2EvYi87Omxvb3A7dCBsb29wJyIgXAorIHRlc3RpbmcgInNlZCBUICghdGVzdC9icmFuY2gpIiAic2VkIC1lICdzL2EvMS87VCBub3RvbmU7cDs6IG5vdG9uZTtwJyIgXAorIAkiMVxuMVxuMVxuYlxuYlxuY1xuY1xuIiAiIiAiYVxuYlxuY1xuIgorIAorLXRlc3QgeCIkU0tJUF9LTk9XTl9CVUdTIiA9IHgiIiAmJiB7CistIyBOb3JtYWwgc2VkIGVuZC1vZi1zY3JpcHQgZG9lc24ndCBwcmludCAiYyIgYmVjYXVzZSBuIGZsdXNoZWQgdGhlIHBhdHRlcm4KKy0jIHNwYWNlLiAgSWYgbiBoaXRzIEVPRiwgcGF0dGVybiBzcGFjZSBpcyBlbXB0eSB3aGVuIHNjcmlwdCBlbmRzLgorLSMgUXVlcnk6IGhvdyBkb2VzIHRoaXMgaW50ZXJhY3Qgd2l0aCBubyBuZXdsaW5lIGF0IEVPRj8KKyB0ZXN0aW5nICJzZWQgbiAoZmx1c2hlcyBwYXR0ZXJuIHNwYWNlLCB0ZXJtaW5hdGVzIGVhcmx5KSIgInNlZCAtZSAnbjtwJyIgXAorIAkiYVxuYlxuYlxuY1xuIiAiIiAiYVxuYlxuY1xuIgorLX0KKysKKyAjIG5vbi1HTlUgc2VkOiBOIGRvZXMgX25vdF8gZmx1c2ggcGF0dGVybiBzcGFjZSwgdGhlcmVmb3JlIGMgaXMgZWF0ZW4gQCBzY3JpcHQgZW5kCisgIyBHTlUgc2VkOiBOIGZsdXNoZXMgcGF0dGVybiBzcGFjZSwgdGhlcmVmb3JlIGMgaXMgcHJpbnRlZCB0b28gQCBzY3JpcHQgZW5kCisgdGVzdGluZyAic2VkIE4gKGZsdXNoZXMgcGF0dGVybiBzcGFjZSAoR05VIGJlaGF2aW9yKSkiICJzZWQgLWUgJ047cCciIFwKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9DVkUtMjAxNi0yMTQ3LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9DVkUtMjAxNi0yMTQ3LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0Y2FlNmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L0NWRS0yMDE2LTIxNDcucGF0Y2gKQEAgLTAsMCArMSw1NyBAQAorRnJvbSBkNDc0ZmZjNjgyOTBlMGE4MzY1MWM0NDMyZWVhYmZhNjJjZDUxZTg3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTAgTWFyIDIwMTYgMTE6NDc6NTggKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gdWRoY3A6IGZpeCBhIFNFR1Ygb24gbWFsZm9ybWVkIFJGQzEwMzUtZW5jb2RlZCBkb21haW4gbmFtZQorCitTaWduZWQtb2ZmLWJ5OiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitDVkU6IENWRS0yMDE2LTIxNDcKKworaHR0cHM6Ly9naXQuYnVzeWJveC5uZXQvYnVzeWJveC9jb21taXQvP2lkPWQ0NzRmZmMKK1NpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgorCistLS0KKyBuZXR3b3JraW5nL3VkaGNwL2RvbWFpbl9jb2RlYy5jIHwgMTMgKysrKysrKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK0luZGV4OiBidXN5Ym94LTEuMjMuMi9uZXR3b3JraW5nL3VkaGNwL2RvbWFpbl9jb2RlYy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYnVzeWJveC0xLjIzLjIub3JpZy9uZXR3b3JraW5nL3VkaGNwL2RvbWFpbl9jb2RlYy5jCisrKysgYnVzeWJveC0xLjIzLjIvbmV0d29ya2luZy91ZGhjcC9kb21haW5fY29kZWMuYworQEAgLTYzLDExICs2MywxMCBAQCBjaGFyKiBGQVNUX0ZVTkMgZG5hbWVfZGVjKGNvbnN0IHVpbnQ4X3QKKyAJCQkJaWYgKGNydHBvcyArICpjICsgMSA+IGNsZW4pIC8qIGxhYmVsIHRvbyBsb25nPyBhYm9ydCAqLworIAkJCQkJcmV0dXJuIE5VTEw7CisgCQkJCWlmIChkc3QpCistCQkJCQltZW1jcHkoZHN0ICsgbGVuLCBjICsgMSwgKmMpOworKwkJCQkJLyogXDNjb20gLS0tPiAiY29tLiIgKi8KKysJCQkJCSgoY2hhciopbWVtcGNweShkc3QgKyBsZW4sIGMgKyAxLCAqYykpWzBdID0gJy4nOworIAkJCQlsZW4gKz0gKmMgKyAxOworIAkJCQljcnRwb3MgKz0gKmMgKyAxOworLQkJCQlpZiAoZHN0KQorLQkJCQkJZHN0W2xlbiAtIDFdID0gJy4nOworIAkJCX0gZWxzZSB7CisgCQkJCS8qIE5VTDogZW5kIG9mIGN1cnJlbnQgZG9tYWluIG5hbWUgKi8KKyAJCQkJaWYgKHJldHBvcyA9PSAwKSB7CitAQCAtNzgsNyArNzcsMTAgQEAgY2hhciogRkFTVF9GVU5DIGRuYW1lX2RlYyhjb25zdCB1aW50OF90CisgCQkJCQljcnRwb3MgPSByZXRwb3M7CisgCQkJCQlyZXRwb3MgPSBkZXB0aCA9IDA7CisgCQkJCX0KKy0JCQkJaWYgKGRzdCkKKysJCQkJaWYgKGRzdCAmJiBsZW4gIT0gMCkKKysJCQkJCS8qIFw0aG9zdFwzY29tXDBcNGhvc3QgYW5kIHdlIGFyZSBhdCBcMDoKKysJCQkJCSAqIFwzY29tIHdhcyBjb252ZXJ0ZWQgdG8gImNvbS4iLCBjaGFuZ2UgZG90IHRvIHNwYWNlLgorKwkJCQkJICovCisgCQkJCQlkc3RbbGVuIC0gMV0gPSAnICc7CisgCQkJfQorIAorQEAgLTIyOCw2ICsyMzAsOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCWludCBsZW47CisgCXVpbnQ4X3QgKmVuY29kZWQ7CisgCisrICAgICAgICB1aW50OF90IHN0cls2XSA9IHsgMHgwMCwgMHgwMCwgMHgwMiwgMHg2NSwgMHg2NSwgMHgwMCB9OworKyAgICAgICAgcHJpbnRmKCJOVUw6JyVzJ1xuIiwgICBkbmFtZV9kZWMoc3RyLCA2LCAiIikpOworKworICNkZWZpbmUgRE5BTUVfREVDKGVuY29kZWQscHJlKSBkbmFtZV9kZWMoKHVpbnQ4X3QqKShlbmNvZGVkKSwgc2l6ZW9mKGVuY29kZWQpLCAocHJlKSkKKyAJcHJpbnRmKCInJXMnXG4iLCAgICAgICBETkFNRV9ERUMoIlw0aG9zdFwzY29tXDAiLCAidGVzdDE6IikpOworIAlwcmludGYoInRlc3QyOiclcydcbiIsIEROQU1FX0RFQygiXDRob3N0XDNjb21cMFw0aG9zdFwzY29tXDAiLCAiIikpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9DVkUtMjAxNi0yMTQ3XzIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L0NWRS0yMDE2LTIxNDdfMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDczZDQ2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9DVkUtMjAxNi0yMTQ3XzIucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSAxYjdjMTczOTFkZTY2NTAyZGQ3YTk3Yzg2NmUwYTMzNjgxZWRiYjFmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTEgTWFyIDIwMTYgMDA6MjY6NTggKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gdWRoY3BjOiBmaXggYSB3YXJuaW5nIGluIGRlYnVnIGNvZGUKKworU2lnbmVkLW9mZi1ieTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KK1Vwc3RlYW0tU3RhdHVzOiBCYWNrcG9ydAorQ1ZFOiBDVkUtMjAxNi0yMTQ3IHJlZ3Jlc3Npb24gZml4CisKK2h0dHBzOi8vZ2l0LmJ1c3lib3gubmV0L2J1c3lib3gvY29tbWl0Lz9pZD0xYjdjMTcKKworU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+CisKKy0tLQorIG5ldHdvcmtpbmcvdWRoY3AvZG9tYWluX2NvZGVjLmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL25ldHdvcmtpbmcvdWRoY3AvZG9tYWluX2NvZGVjLmMgYi9uZXR3b3JraW5nL3VkaGNwL2RvbWFpbl9jb2RlYy5jCitpbmRleCBjZWUzMWYxLi41YTkyM2NjIDEwMDY0NAorLS0tIGEvbmV0d29ya2luZy91ZGhjcC9kb21haW5fY29kZWMuYworKysrIGIvbmV0d29ya2luZy91ZGhjcC9kb21haW5fY29kZWMuYworQEAgLTcsNiArNyw3IEBACisgICogTGljZW5zZWQgdW5kZXIgR1BMdjIgb3IgbGF0ZXIsIHNlZSBmaWxlIExJQ0VOU0UgaW4gdGhpcyBzb3VyY2UgdHJlZS4KKyAgKi8KKyAjaWZkZWYgRE5TX0NPTVBSX1RFU1RJTkcKKysjIGRlZmluZSBfR05VX1NPVVJDRQorICMgZGVmaW5lIEZBU1RfRlVOQyAvKiBub3RoaW5nICovCisgIyBkZWZpbmUgeG1hbGxvYyBtYWxsb2MKKyAjIGluY2x1ZGUgPHN0ZGxpYi5oPgorLS0gCisyLjMuNQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L0NWRS0yMDE2LTIxNDgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L0NWRS0yMDE2LTIxNDgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWYwNGE3ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvQ1ZFLTIwMTYtMjE0OC5wYXRjaApAQCAtMCwwICsxLDc0IEBACitGcm9tIDM1MmY3OWFjYmQ3NTljMTQzOTllMzliYWVmMjFmYzRmZmUxODBhYzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPgorRGF0ZTogRnJpLCAyNiBGZWIgMjAxNiAxNTo1NDo1NiArMDEwMAorU3ViamVjdDogW1BBVENIXSB1ZGhjcGM6IGZpeCBPUFRJT05fNlJEIHBhcnNpbmcgKGNvdWxkIG92ZXJmbG93IGl0cyBtYWxsb2NlZAorIGJ1ZmZlcikKKworU2lnbmVkLW9mZi1ieTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQ1ZFOiBDVkUtMjAxNi0yMTQ4CitodHRwczovL2dpdC5idXN5Ym94Lm5ldC9idXN5Ym94L2NvbW1pdC8/aWQ9MzUyZjc5CisKK1NpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgorCistLS0KKyBuZXR3b3JraW5nL3VkaGNwL2NvbW1vbi5jIHwgMTUgKysrKysrKysrKysrKy0tCisgbmV0d29ya2luZy91ZGhjcC9kaGNwYy5jICB8ICA0ICsrLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK0luZGV4OiBidXN5Ym94LTEuMjMuMi9uZXR3b3JraW5nL3VkaGNwL2NvbW1vbi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYnVzeWJveC0xLjIzLjIub3JpZy9uZXR3b3JraW5nL3VkaGNwL2NvbW1vbi5jCisrKysgYnVzeWJveC0xLjIzLjIvbmV0d29ya2luZy91ZGhjcC9jb21tb24uYworQEAgLTE0Miw3ICsxNDIsNyBAQCBjb25zdCBjaGFyIGRoY3Bfb3B0aW9uX3N0cmluZ3NbXSBBTElHTjEKKyAgKiB1ZGhjcF9zdHIyb3B0c2V0OiB0byBkZXRlcm1pbmUgaG93IG1hbnkgYnl0ZXMgdG8gYWxsb2NhdGUuCisgICogeG1hbGxvY19vcHRuYW1lX29wdHZhbDogdG8gZXN0aW1hdGUgc3RyaW5nIGxlbmd0aAorICAqIGZyb20gYmluYXJ5IG9wdGlvbiBsZW5ndGg6IChvcHRpb25bTEVOXSAvIGRoY3Bfb3B0aW9uX2xlbmd0aHNbb3B0X3R5cGVdKQorLSAqIGlzIHRoZSBudW1iZXIgb2YgZWxlbWVudHMsIG11bHRpcGx5IGluIGJ5IG9uZSBlbGVtZW50J3Mgc3RyaW5nIHdpZHRoCisrICogaXMgdGhlIG51bWJlciBvZiBlbGVtZW50cywgbXVsdGlwbHkgaXQgYnkgb25lIGVsZW1lbnQncyBzdHJpbmcgd2lkdGgKKyAgKiAobGVuX29mX29wdGlvbl9hc19zdHJpbmdbb3B0X3R5cGVdKSBhbmQgeW91IGtub3cgaG93IHdpZGUgc3RyaW5nIHlvdSBuZWVkLgorICAqLworIGNvbnN0IHVpbnQ4X3QgZGhjcF9vcHRpb25fbGVuZ3Roc1tdIEFMSUdOMSA9IHsKK0BAIC0xNjIsNyArMTYyLDE4IEBAIGNvbnN0IHVpbnQ4X3QgZGhjcF9vcHRpb25fbGVuZ3Roc1tdIEFMSUcKKyAJW09QVElPTl9TMzJdID0gICAgIDQsCisgCS8qIEp1c3QgbGlrZSBPUFRJT05fU1RSSU5HLCB3ZSB1c2UgbWluaW11bSBsZW5ndGggaGVyZSAqLworIAlbT1BUSU9OX1NUQVRJQ19ST1VURVNdID0gNSwKKy0JW09QVElPTl82UkRdID0gICAgMjIsICAvKiBpZ25vcmVkIGJ5IHVkaGNwX3N0cjJvcHRzZXQgKi8KKysJW09QVElPTl82UkRdID0gICAgMTIsICAvKiBpZ25vcmVkIGJ5IHVkaGNwX3N0cjJvcHRzZXQgKi8KKysJLyogVGhlIGFib3ZlIHZhbHVlIHdhcyBjaG9zZW4gYXMgZm9sbG93czoKKysJICogbGVuX29mX29wdGlvbl9hc19zdHJpbmdbXSBmb3IgdGhpcyBvcHRpb24gaXMgPjYwOiBpdCdzIGEgc3RyaW5nIG9mIHRoZSBmb3JtCisrCSAqICIzMiAxMjggZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmIDI1NS4yNTUuMjU1LjI1NSAiLgorKwkgKiBFYWNoIGFkZGl0aW9uYWwgaXB2NCBhZGRyZXNzIHRha2VzIDQgYnl0ZXMgaW4gYmluYXJ5IG9wdGlvbiBhbmQgYXBwZW5kcworKwkgKiBhbm90aGVyICIyNTUuMjU1LjI1NS4yNTUgIiAxNi1ieXRlIHN0cmluZy4gV2UgY2FuIHNldCBbT1BUSU9OXzZSRF0gPSA0CisrCSAqIGJ1dCB0aGlzIHNldmVyZWx5IG92ZXJlc3RpbWF0ZXMgc3RyaW5nIGxlbmd0aDogaW5zdGVhZCBvZiAxNiBieXRlcywKKysJICogaXQgYWRkcyA+NjAgZm9yIGV2ZXJ5IDQgYnl0ZXMgaW4gYmluYXJ5IG9wdGlvbi4KKysJICogV2UgY2hlYXQgYW5kIGRlY2xhcmUgaGVyZSB0aGF0IG9wdGlvbiBpcyBpbiB1bml0cyBvZiAxMiBieXRlcy4KKysJICogVGhpcyBhZGRzIG1vcmUgdGhhbiA2MCBieXRlcyBmb3IgZXZlcnkgdGhyZWUgaXB2NCBhZGRyZXNzZXMgLSBtb3JlIHRoYW4gZW5vdWdoLgorKwkgKiAoRXZlbiAxNiBpbnN0ZWFkIG9mIDEyIHNob3VsZCB3b3JrLCBidXQgbGV0J3MgYmUgcGFyYW5vaWQpLgorKwkgKi8KKyB9OworIAorIAorSW5kZXg6IGJ1c3lib3gtMS4yMy4yL25ldHdvcmtpbmcvdWRoY3AvZGhjcGMuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGJ1c3lib3gtMS4yMy4yLm9yaWcvbmV0d29ya2luZy91ZGhjcC9kaGNwYy5jCisrKysgYnVzeWJveC0xLjIzLjIvbmV0d29ya2luZy91ZGhjcC9kaGNwYy5jCitAQCAtMTAzLDcgKzEwMyw3IEBAIHN0YXRpYyBjb25zdCB1aW50OF90IGxlbl9vZl9vcHRpb25fYXNfc3QKKyAJW09QVElPTl9JUCAgICAgICAgICAgICAgXSA9IHNpemVvZigiMjU1LjI1NS4yNTUuMjU1ICIpLAorIAlbT1BUSU9OX0lQX1BBSVIgICAgICAgICBdID0gc2l6ZW9mKCIyNTUuMjU1LjI1NS4yNTUgIikgKiAyLAorIAlbT1BUSU9OX1NUQVRJQ19ST1VURVMgICBdID0gc2l6ZW9mKCIyNTUuMjU1LjI1NS4yNTUvMzIgMjU1LjI1NS4yNTUuMjU1ICIpLAorLQlbT1BUSU9OXzZSRCAgICAgICAgICAgICBdID0gc2l6ZW9mKCIzMiAxMjggZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmIDI1NS4yNTUuMjU1LjI1NSAiKSwKKysJW09QVElPTl82UkQgICAgICAgICAgICAgXSA9IHNpemVvZigiMTMyIDEyOCBmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmYgMjU1LjI1NS4yNTUuMjU1ICIpLAorIAlbT1BUSU9OX1NUUklORyAgICAgICAgICBdID0gMSwKKyAJW09QVElPTl9TVFJJTkdfSE9TVCAgICAgXSA9IDEsCisgI2lmIEVOQUJMRV9GRUFUVVJFX1VESENQX1JGQzMzOTcKK0BAIC0yMTQsNyArMjE0LDcgQEAgc3RhdGljIE5PSU5MSU5FIGNoYXIgKnhtYWxsb2Nfb3B0bmFtZV9vcAorIAl0eXBlID0gb3B0ZmxhZy0+ZmxhZ3MgJiBPUFRJT05fVFlQRV9NQVNLOworIAlvcHRsZW4gPSBkaGNwX29wdGlvbl9sZW5ndGhzW3R5cGVdOworIAl1cHBlcl9sZW5ndGggPSBsZW5fb2Zfb3B0aW9uX2FzX3N0cmluZ1t0eXBlXQorLQkJKiAoKHVuc2lnbmVkKShsZW4gKyBvcHRsZW4gLSAxKSAvICh1bnNpZ25lZClvcHRsZW4pOworKwkJKiAoKHVuc2lnbmVkKShsZW4gKyBvcHRsZW4pIC8gKHVuc2lnbmVkKW9wdGxlbik7CisgCisgCWRlc3QgPSByZXQgPSB4bWFsbG9jKHVwcGVyX2xlbmd0aCArIHN0cmxlbihvcHRfbmFtZSkgKyAyKTsKKyAJZGVzdCArPSBzcHJpbnRmKHJldCwgIiVzPSIsIG9wdF9uYW1lKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvYnVzeWJveC1rYnVpbGQtcmFjZS1maXgtY29tbWl0LWQ4ZTYxYmIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2J1c3lib3gta2J1aWxkLXJhY2UtZml4LWNvbW1pdC1kOGU2MWJiLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4MzAyZTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2J1c3lib3gta2J1aWxkLXJhY2UtZml4LWNvbW1pdC1kOGU2MWJiLnBhdGNoCkBAIC0wLDAgKzEsNTMgQEAKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworUGF0Y2ggYWRkcmVzc2luZyBhIHBhcmFsbGVsIG1ha2UgcmFjZSBpbiBCdXN5Ym94CisKKyAgaHR0cDovL2dpdC5idXN5Ym94Lm5ldC9idXN5Ym94L2NvbW1pdC8/aWQ9ZDhlNjFiYmYxM2QwY2YzOGQ0NzcyNTVjZmQ1ZGM3MWM1ZDUxZDU3NQorCitTaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgorCitGcm9tIGQ4ZTYxYmJmMTNkMGNmMzhkNDc3MjU1Y2ZkNWRjNzFjNWQ1MWQ1NzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPgorRGF0ZTogU3VuLCAyMSBBdWcgMjAxNiAyMjowMDoyMCArMDIwMAorU3ViamVjdDogYnVpbGQgc3lzdGVtOiBkaWZmZXJlbnQgZml4IGZvcgorIGluY2x1ZGUvYXBwbGV0X3RhYmxlcy5oL2luY2x1ZGUvTlVNX0FQUExFVFMuaAorCitTaWduZWQtb2ZmLWJ5OiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPgorCitkaWZmIC0tZ2l0IGEvYXBwbGV0cy9LYnVpbGQuc3JjIGIvYXBwbGV0cy9LYnVpbGQuc3JjCitpbmRleCA1Y2MxODI3Li4zYWVkYmJmIDEwMDY0NAorLS0tIGEvYXBwbGV0cy9LYnVpbGQuc3JjCisrKysgYi9hcHBsZXRzL0tidWlsZC5zcmMKK0BAIC0yOSw3ICsyOSw3IEBAIGFwcGxldHMvYXBwbGV0cy5vOiBpbmNsdWRlL3VzYWdlX2NvbXByZXNzZWQuaCBpbmNsdWRlL2FwcGxldF90YWJsZXMuaAorIAorIGFwcGxldHMvYXBwbGV0X3RhYmxlczogLmNvbmZpZyBpbmNsdWRlL2FwcGxldHMuaAorIGFwcGxldHMvdXNhZ2U6ICAgICAgICAgLmNvbmZpZyBpbmNsdWRlL2FwcGxldHMuaAorLWFwcGxldHMvdXNhZ2VfcG9kOiAgICAgLmNvbmZpZyBpbmNsdWRlL2FwcGxldHMuaCBpbmNsdWRlL2FwcGxldF90YWJsZXMuaCBpbmNsdWRlL05VTV9BUFBMRVRTLmgKKythcHBsZXRzL3VzYWdlX3BvZDogICAgIC5jb25maWcgaW5jbHVkZS9hcHBsZXRzLmggaW5jbHVkZS9hcHBsZXRfdGFibGVzLmgKKyAKKyBxdWlldF9jbWRfZ2VuX3VzYWdlX2NvbXByZXNzZWQgPSBHRU4gICAgIGluY2x1ZGUvdXNhZ2VfY29tcHJlc3NlZC5oCisgICAgICAgY21kX2dlbl91c2FnZV9jb21wcmVzc2VkID0gJChzcmN0cmVlX3NsYXNoKWFwcGxldHMvdXNhZ2VfY29tcHJlc3NlZCBpbmNsdWRlL3VzYWdlX2NvbXByZXNzZWQuaCBhcHBsZXRzCitAQCAtMzcsOCArMzcsMjEgQEAgcXVpZXRfY21kX2dlbl91c2FnZV9jb21wcmVzc2VkID0gR0VOICAgICBpbmNsdWRlL3VzYWdlX2NvbXByZXNzZWQuaAorIGluY2x1ZGUvdXNhZ2VfY29tcHJlc3NlZC5oOiBhcHBsZXRzL3VzYWdlICQoc3JjdHJlZV9zbGFzaClhcHBsZXRzL3VzYWdlX2NvbXByZXNzZWQKKyAJJChjYWxsIGNtZCxnZW5fdXNhZ2VfY29tcHJlc3NlZCkKKyAKKy1xdWlldF9jbWRfZ2VuX2FwcGxldF90YWJsZXMgPSBHRU4gICAgIGluY2x1ZGUvYXBwbGV0X3RhYmxlcy5oCisrcXVpZXRfY21kX2dlbl9hcHBsZXRfdGFibGVzID0gR0VOICAgICBpbmNsdWRlL2FwcGxldF90YWJsZXMuaCBpbmNsdWRlL05VTV9BUFBMRVRTLmgKKyAgICAgICBjbWRfZ2VuX2FwcGxldF90YWJsZXMgPSBhcHBsZXRzL2FwcGxldF90YWJsZXMgaW5jbHVkZS9hcHBsZXRfdGFibGVzLmggaW5jbHVkZS9OVU1fQVBQTEVUUy5oCisgCistaW5jbHVkZS9hcHBsZXRfdGFibGVzLmggaW5jbHVkZS9OVU1fQVBQTEVUUy5oOiBhcHBsZXRzL2FwcGxldF90YWJsZXMKKytpbmNsdWRlL05VTV9BUFBMRVRTLmg6IGFwcGxldHMvYXBwbGV0X3RhYmxlcworKwkkKGNhbGwgY21kLGdlbl9hcHBsZXRfdGFibGVzKQorKworKyMgSW4gZmFjdCwgaW5jbHVkZS9hcHBsZXRfdGFibGVzLmggZGVwZW5kcyBvbmx5IG9uIGFwcGxldHMvYXBwbGV0X3RhYmxlcywKKysjIGFuZCBpcyBnZW5lcmF0ZWQgYnkgaXQuIEJ1dCBzcGVjaWZ5aW5nIG9ubHkgaXQgY2FuIHJ1bgorKyMgYXBwbGV0cy9hcHBsZXRfdGFibGVzIHR3aWNlLCBwb3NzaWJseSBpbiBwYXJhbGxlbC4KKysjIFdlIHNheSB0aGF0IGl0IGFsc28gbmVlZHMgTlVNX0FQUExFVFMuaAorKyMKKysjIFVuZm9ydHVuYXRlbHksIHdlIG5lZWQgdG8gbGlzdCB0aGUgc2FtZSBjb21tYW5kLAorKyMgYW5kIGl0IGNhbiBiZSBleGVjdXRlZCB0d2ljZSAoc2VxdWVudGlhbGx5KS4KKysjIFRoZSBhbHRlcm5hdGl2ZSBpcyB0byBub3QgbGlzdCBhbnkgY29tbWFuZCwKKysjIGFuZCB0aGVuIGlmIGluY2x1ZGUvYXBwbGV0X3RhYmxlcy5oIGlzIGRlbGV0ZWQsIGl0IHdvbid0IGJlIHJlYnVpbHQuCisrIworK2luY2x1ZGUvYXBwbGV0X3RhYmxlcy5oOiBpbmNsdWRlL05VTV9BUFBMRVRTLmggYXBwbGV0cy9hcHBsZXRfdGFibGVzCisgCSQoY2FsbCBjbWQsZ2VuX2FwcGxldF90YWJsZXMpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2NvbW1pdC1hcHBsZXRfdGFibGVzLWZpeC1jb21taXQtMGRkZGJjMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvY29tbWl0LWFwcGxldF90YWJsZXMtZml4LWNvbW1pdC0wZGRkYmMxLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmODBhMWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2NvbW1pdC1hcHBsZXRfdGFibGVzLWZpeC1jb21taXQtMGRkZGJjMS5wYXRjaApAQCAtMCwwICsxLDYxIEBACitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1BhdGNoIGFkZHJlc3NpbmcgYSBwYXJhbGxlbCBtYWtlIHJhY2UgaW4gQnVzeWJveAorCisgIGh0dHA6Ly9naXQuYnVzeWJveC5uZXQvYnVzeWJveC9jb21taXQvP2lkPTBkZGRiYzFhNTk3OTVhNzc2NzlkOGM1ZWY0OGEyNzk1Y2I0NzA1NjMKKworU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KKworRnJvbSAwZGRkYmMxYTU5Nzk1YTc3Njc5ZDhjNWVmNDhhMjc5NWNiNDcwNTYzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjMgQXVnIDIwMTYgMjA6MjE6MzYgKzAyMDAKK1N1YmplY3Q6IGJ1aWxkIHN5c3RlbTogYWx3YXlzIHJld3JpdGUgTlVNX0FQUExFVFMuaAorCitDb25kaXRpb25hbCByZXdyaXRlIGNhbiBrZWVwIE5VTV9BUFBMRVRTLmggbXRpbWUgb2xkLAordGhpcyBjYXVzZXMgbWFrZSB0byB0cnkgdG8gcmVnZW5lcmF0ZSBpdCBhdCBldmVyeSBpbnZvY2F0aW9uLgorCitTaWduZWQtb2ZmLWJ5OiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPgorCitkaWZmIC0tZ2l0IGEvYXBwbGV0cy9hcHBsZXRfdGFibGVzLmMgYi9hcHBsZXRzL2FwcGxldF90YWJsZXMuYworaW5kZXggODQwMWExNS4uZWY5MTFhNCAxMDA2NDQKKy0tLSBhL2FwcGxldHMvYXBwbGV0X3RhYmxlcy5jCisrKysgYi9hcHBsZXRzL2FwcGxldF90YWJsZXMuYworQEAgLTE5MiwyNyArMTkyLDI4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJcHJpbnRmKCJ9O1xuIik7CisgI2VuZGlmCisgCS8vcHJpbnRmKCIjZW5kaWYgLyogU0tJUF9kZWZpbml0aW9ucyAqL1xuIik7CisrCisgLy8JcHJpbnRmKCJcbiIpOworIC8vCXByaW50ZigiI2RlZmluZSBNQVhfQVBQTEVUX05BTUVfTEVOICV1XG4iLCBNQVhfQVBQTEVUX05BTUVfTEVOKTsKKyAKKyAJaWYgKGFyZ3ZbMl0pIHsKKy0JCWNoYXIgbGluZV9vbGRbODBdOworLQkJY2hhciBsaW5lX25ld1s4MF07CisgCQlGSUxFICpmcDsKKysJCWNoYXIgbGluZV9uZXdbODBdOworKy8vCQljaGFyIGxpbmVfb2xkWzgwXTsKKyAKKy0JCWxpbmVfb2xkWzBdID0gMDsKKy0JCWZwID0gZm9wZW4oYXJndlsyXSwgInIiKTsKKy0JCWlmIChmcCkgeworLQkJCWZnZXRzKGxpbmVfb2xkLCBzaXplb2YobGluZV9vbGQpLCBmcCk7CistCQkJZmNsb3NlKGZwKTsKKy0JCX0KKyAJCXNwcmludGYobGluZV9uZXcsICIjZGVmaW5lIE5VTV9BUFBMRVRTICV1XG4iLCBOVU1fQVBQTEVUUyk7CistCQlpZiAoc3RyY21wKGxpbmVfb2xkLCBsaW5lX25ldykgIT0gMCkgeworKy8vCQlsaW5lX29sZFswXSA9IDA7CisrLy8JCWZwID0gZm9wZW4oYXJndlsyXSwgInIiKTsKKysvLwkJaWYgKGZwKSB7CisrLy8JCQlmZ2V0cyhsaW5lX29sZCwgc2l6ZW9mKGxpbmVfb2xkKSwgZnApOworKy8vCQkJZmNsb3NlKGZwKTsKKysvLwkJfQorKy8vCQlpZiAoc3RyY21wKGxpbmVfb2xkLCBsaW5lX25ldykgIT0gMCkgeworIAkJCWZwID0gZm9wZW4oYXJndlsyXSwgInciKTsKKyAJCQlpZiAoIWZwKQorIAkJCQlyZXR1cm4gMTsKKyAJCQlmcHV0cyhsaW5lX25ldywgZnApOworLQkJfQorKy8vCQl9CisgCX0KKyAKKyAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2RlZmNvbmZpZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvZGVmY29uZmlnCmluZGV4IGZmZWE2YmUuLmMwNDU5ZDUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvZGVmY29uZmlnCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvZGVmY29uZmlnCkBAIC0xMzUsNyArMTM1LDcgQEAKIENPTkZJR19GRUFUVVJFX1NFQU1MRVNTX0JaMj15CiBDT05GSUdfRkVBVFVSRV9TRUFNTEVTU19HWj15CiBDT05GSUdfRkVBVFVSRV9TRUFNTEVTU19aPXkKLUNPTkZJR19BUj15CisjIENPTkZJR19BUiBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX0FSX0xPTkdfRklMRU5BTUVTIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfQVJfQ1JFQVRFIGlzIG5vdCBzZXQKICMgQ09ORklHX1VOQ09NUFJFU1MgaXMgbm90IHNldApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9pcF9maXhfcHJvYmxlbV9vbl9taXBzNjRfbjY0X2JpZ19lbmRpYW5fbXVzbF9zeXN0ZW1zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9pcF9maXhfcHJvYmxlbV9vbl9taXBzNjRfbjY0X2JpZ19lbmRpYW5fbXVzbF9zeXN0ZW1zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxYzU2NTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2lwX2ZpeF9wcm9ibGVtX29uX21pcHM2NF9uNjRfYmlnX2VuZGlhbl9tdXNsX3N5c3RlbXMucGF0Y2gKQEAgLTAsMCArMSw5MCBAQAorRnJvbSA0YWIzNzJkNDlhNmU4MmIwYmYwOTdkZWRiOTZkMjYzMzBjNWYyZDVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU3phYm9sY3MgTmFneSA8bnN6QHBvcnQ3MC5uZXQ+CitEYXRlOiBTdW4sIDI0IEFwciAyMDE2IDE3OjM5OjAyICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGlwOiBmaXggcHJvYmxlbSBvbiBtaXBzNjQgbjY0IGJpZyBlbmRpYW4gbXVzbCBzeXN0ZW1zCisKK1VzZSBkZXNpZ25hdGVkIGluaXRpYWxpemVycyBmb3Igc3RydWN0IG1zZ2hkci4KK1RoZSBzdHJ1Y3QgbGF5b3V0IGlzIG5vbi1wb3J0YWJsZSBhbmQgbXVzbCBsaWJjIGRvZXMgbm90IG1hdGNoIHdoYXQgYnVzeWJveCBleHBlY3RzLgorCitTaWduZWQtb2ZmLWJ5OiBTemFib2xjcyBOYWd5IDxuc3pAcG9ydDcwLm5ldD4KK1Rlc3RlZC1ieTogV2FsZGVtYXIgQnJvZGtvcmIgPHdieEBvcGVuYWRrLm9yZz4KK1NpZ25lZC1vZmYtYnk6IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworaHR0cHM6Ly9naXQuYnVzeWJveC5uZXQvYnVzeWJveC9jb21taXQvP2lkPTRhYjM3MmQ0OWE2ZTgyYjBiZjA5N2RlZGI5NmQyNjMzMGM1ZjJkNWYKKworU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+CisKKy0tLQorIG5ldHdvcmtpbmcvbGliaXByb3V0ZS9saWJuZXRsaW5rLmMgfCAzNyArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDI0IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbmV0d29ya2luZy9saWJpcHJvdXRlL2xpYm5ldGxpbmsuYyBiL25ldHdvcmtpbmcvbGliaXByb3V0ZS9saWJuZXRsaW5rLmMKK2luZGV4IGM3NTMzYTQuLmNiYjVkYWYgMTAwNjQ0CistLS0gYS9uZXR3b3JraW5nL2xpYmlwcm91dGUvbGlibmV0bGluay5jCisrKysgYi9uZXR3b3JraW5nL2xpYmlwcm91dGUvbGlibmV0bGluay5jCitAQCAtNzEsMTEgKzcxLDE1IEBAIGludCBGQVNUX0ZVTkMgcnRubF9kdW1wX3JlcXVlc3Qoc3RydWN0IHJ0bmxfaGFuZGxlICpydGgsIGludCB0eXBlLCB2b2lkICpyZXEsIGluCisgCXN0cnVjdCBubG1zZ2hkciBubGg7CisgCXN0cnVjdCBzb2NrYWRkcl9ubCBubGFkZHI7CisgCXN0cnVjdCBpb3ZlYyBpb3ZbMl0gPSB7IHsgJm5saCwgc2l6ZW9mKG5saCkgfSwgeyByZXEsIGxlbiB9IH07CisrCS8qIFVzZSBkZXNpZ25hdGVkIGluaXRpYWxpemVycywgc3RydWN0IGxheW91dCBpcyBub24tcG9ydGFibGUgKi8KKyAJc3RydWN0IG1zZ2hkciBtc2cgPSB7CistCQkodm9pZCopJm5sYWRkciwgc2l6ZW9mKG5sYWRkciksCistCQlpb3YsICAyLAorLQkJTlVMTCwgMCwKKy0JCTAKKysJCS5tc2dfbmFtZSA9ICh2b2lkKikmbmxhZGRyLAorKwkJLm1zZ19uYW1lbGVuID0gc2l6ZW9mKG5sYWRkciksCisrCQkubXNnX2lvdiA9IGlvdiwKKysJCS5tc2dfaW92bGVuID0gMiwKKysJCS5tc2dfY29udHJvbCA9IE5VTEwsCisrCQkubXNnX2NvbnRyb2xsZW4gPSAwLAorKwkJLm1zZ19mbGFncyA9IDAKKyAJfTsKKyAKKyAJbWVtc2V0KCZubGFkZHIsIDAsIHNpemVvZihubGFkZHIpKTsKK0BAIC0xMDQsMTIgKzEwOCwxNSBAQCBzdGF0aWMgaW50IHJ0bmxfZHVtcF9maWx0ZXIoc3RydWN0IHJ0bmxfaGFuZGxlICpydGgsCisgCXdoaWxlICgxKSB7CisgCQlpbnQgc3RhdHVzOworIAkJc3RydWN0IG5sbXNnaGRyICpoOworLQorKwkJLyogVXNlIGRlc2lnbmF0ZWQgaW5pdGlhbGl6ZXJzLCBzdHJ1Y3QgbGF5b3V0IGlzIG5vbi1wb3J0YWJsZSAqLworIAkJc3RydWN0IG1zZ2hkciBtc2cgPSB7CistCQkJKHZvaWQqKSZubGFkZHIsIHNpemVvZihubGFkZHIpLAorLQkJCSZpb3YsIDEsCistCQkJTlVMTCwgMCwKKy0JCQkwCisrCQkJLm1zZ19uYW1lID0gKHZvaWQqKSZubGFkZHIsCisrCQkJLm1zZ19uYW1lbGVuID0gc2l6ZW9mKG5sYWRkciksCisrCQkJLm1zZ19pb3YgPSAmaW92LAorKwkJCS5tc2dfaW92bGVuID0gMSwKKysJCQkubXNnX2NvbnRyb2wgPSBOVUxMLAorKwkJCS5tc2dfY29udHJvbGxlbiA9IDAsCisrCQkJLm1zZ19mbGFncyA9IDAKKyAJCX07CisgCisgCQlzdGF0dXMgPSByZWN2bXNnKHJ0aC0+ZmQsICZtc2csIDApOworQEAgLTIxMSwxMSArMjE4LDE1IEBAIGludCBGQVNUX0ZVTkMgcnRubF90YWxrKHN0cnVjdCBydG5sX2hhbmRsZSAqcnRubCwgc3RydWN0IG5sbXNnaGRyICpuLAorIAlzdHJ1Y3Qgc29ja2FkZHJfbmwgbmxhZGRyOworIAlzdHJ1Y3QgaW92ZWMgaW92ID0geyAodm9pZCopbiwgbi0+bmxtc2dfbGVuIH07CisgCWNoYXIgICAqYnVmID0geG1hbGxvYyg4KjEwMjQpOyAvKiBhdm9pZCBiaWcgc3RhY2sgYnVmZmVyICovCisrCS8qIFVzZSBkZXNpZ25hdGVkIGluaXRpYWxpemVycywgc3RydWN0IGxheW91dCBpcyBub24tcG9ydGFibGUgKi8KKyAJc3RydWN0IG1zZ2hkciBtc2cgPSB7CistCQkodm9pZCopJm5sYWRkciwgc2l6ZW9mKG5sYWRkciksCistCQkmaW92LCAxLAorLQkJTlVMTCwgMCwKKy0JCTAKKysJCS5tc2dfbmFtZSA9ICh2b2lkKikmbmxhZGRyLAorKwkJLm1zZ19uYW1lbGVuID0gc2l6ZW9mKG5sYWRkciksCisrCQkubXNnX2lvdiA9ICZpb3YsCisrCQkubXNnX2lvdmxlbiA9IDEsCisrCQkubXNnX2NvbnRyb2wgPSBOVUxMLAorKwkJLm1zZ19jb250cm9sbGVuID0gMCwKKysJCS5tc2dfZmxhZ3MgPSAwCisgCX07CisgCisgCW1lbXNldCgmbmxhZGRyLCAwLCBzaXplb2YobmxhZGRyKSk7CistLSAKKzIuMy41CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvbWFrZWZpbGUtZml4LWJhY2twb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9tYWtlZmlsZS1maXgtYmFja3BvcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmU5ODQyZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvbWFrZWZpbGUtZml4LWJhY2twb3J0LnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKK0Zyb20gOWU1ODIwYTg2Mjc3ODE4YzJmODNjMTFjMmFhNzZkN2YwYTM4MjgzZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+CitEYXRlOiBTdW4sIDE0IEF1ZyAyMDE2IDAyOjU0OjI3ICswMjAwCitTdWJqZWN0OiBidWlsZCBzeXN0ZW06IGZpeCBpbmNsdWRlL05VTV9BUFBMRVRTLmggZ2VuZXJhdGlvbgorCitUQkgsIGl0J3MgbW9yZSBsaWtlICJ3b3JrIGFyb3VuZCBteSBiYWQgbWFrZWZpbGUtZnUiIHRoYW4gImZpeCIuLi4KKworU2lnbmVkLW9mZi1ieTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KKy0tLQorIGFwcGxldHMvS2J1aWxkLnNyYyB8IDcgKystLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworZGlmZiAtLWdpdCBhL2FwcGxldHMvS2J1aWxkLnNyYyBiL2FwcGxldHMvS2J1aWxkLnNyYworaW5kZXggYjYxMjM5OS4uNWNjMTgyNyAxMDA2NDQKKy0tLSBhL2FwcGxldHMvS2J1aWxkLnNyYworKysrIGIvYXBwbGV0cy9LYnVpbGQuc3JjCitAQCAtMjksNyArMjksNyBAQCBhcHBsZXRzL2FwcGxldHMubzogaW5jbHVkZS91c2FnZV9jb21wcmVzc2VkLmggaW5jbHVkZS9hcHBsZXRfdGFibGVzLmgKKyAKKyBhcHBsZXRzL2FwcGxldF90YWJsZXM6IC5jb25maWcgaW5jbHVkZS9hcHBsZXRzLmgKKyBhcHBsZXRzL3VzYWdlOiAgICAgICAgIC5jb25maWcgaW5jbHVkZS9hcHBsZXRzLmgKKy1hcHBsZXRzL3VzYWdlX3BvZDogICAgIC5jb25maWcgaW5jbHVkZS9hcHBsZXRfdGFibGVzLmggaW5jbHVkZS9hcHBsZXRzLmgKKythcHBsZXRzL3VzYWdlX3BvZDogICAgIC5jb25maWcgaW5jbHVkZS9hcHBsZXRzLmggaW5jbHVkZS9hcHBsZXRfdGFibGVzLmggaW5jbHVkZS9OVU1fQVBQTEVUUy5oCisgCisgcXVpZXRfY21kX2dlbl91c2FnZV9jb21wcmVzc2VkID0gR0VOICAgICBpbmNsdWRlL3VzYWdlX2NvbXByZXNzZWQuaAorICAgICAgIGNtZF9nZW5fdXNhZ2VfY29tcHJlc3NlZCA9ICQoc3JjdHJlZV9zbGFzaClhcHBsZXRzL3VzYWdlX2NvbXByZXNzZWQgaW5jbHVkZS91c2FnZV9jb21wcmVzc2VkLmggYXBwbGV0cworQEAgLTQwLDggKzQwLDUgQEAgaW5jbHVkZS91c2FnZV9jb21wcmVzc2VkLmg6IGFwcGxldHMvdXNhZ2UgJChzcmN0cmVlX3NsYXNoKWFwcGxldHMvdXNhZ2VfY29tcHJlc3MKKyBxdWlldF9jbWRfZ2VuX2FwcGxldF90YWJsZXMgPSBHRU4gICAgIGluY2x1ZGUvYXBwbGV0X3RhYmxlcy5oCisgICAgICAgY21kX2dlbl9hcHBsZXRfdGFibGVzID0gYXBwbGV0cy9hcHBsZXRfdGFibGVzIGluY2x1ZGUvYXBwbGV0X3RhYmxlcy5oIGluY2x1ZGUvTlVNX0FQUExFVFMuaAorIAorLWluY2x1ZGUvYXBwbGV0X3RhYmxlcy5oOiBhcHBsZXRzL2FwcGxldF90YWJsZXMKKy0JJChjYWxsIGNtZCxnZW5fYXBwbGV0X3RhYmxlcykKKy0KKy1pbmNsdWRlL05VTV9BUFBMRVRTLmg6IGFwcGxldHMvYXBwbGV0X3RhYmxlcworK2luY2x1ZGUvYXBwbGV0X3RhYmxlcy5oIGluY2x1ZGUvTlVNX0FQUExFVFMuaDogYXBwbGV0cy9hcHBsZXRfdGFibGVzCisgCSQoY2FsbCBjbWQsZ2VuX2FwcGxldF90YWJsZXMpCistLSAKK2NnaXQgdjAuMTIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9tYWtlZmlsZS1saWJiYi1yYWNlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9tYWtlZmlsZS1saWJiYi1yYWNlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3Mjc4YWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L21ha2VmaWxlLWxpYmJiLXJhY2UucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorVGhlcmUgaXMgYSBwb3RlbnRpYWwgcmFjZSB3aGVuIGJ1aWxkaW5nIGxpYmJiLCBhcyBzb21lIGhlYWRlciBmaWxlcyAgCituZWVkZWQgYnkgbGliYmIgYXJlIG5vdCBnZW5lcmF0ZWQgeWV0IChvciBhcmUgYmVpbmcgbW9kaWZpZWQpIGF0IHRoZSB0aW1lCitsaWJiYiBpcyBjb21waWxlZC4KK1RoaXMgcGF0Y2ggYXZvaWRzIHRoaXMgc2NlbmFyaW8gYnkgYnVpbGRpbmcgbGliYmIgYXMgdGhlIGxhc3QgZGlyZWN0b3J5LgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KKworSW5kZXg6IGJ1c3lib3gtMS4yNC4xL01ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggNWNmYzc2My4uNjlmMzgzMSAxMDA2NDQKKy0tLSBhL01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAgLTczOCw5ICs3MzgsMTggQEAgJChzb3J0ICQoYnVzeWJveC1hbGwpKTogJChidXN5Ym94LWRpcnMpIDsKKyAjIEVycm9yIG1lc3NhZ2VzIHN0aWxsIGFwcGVhcnMgaW4gdGhlIG9yaWdpbmFsIGxhbmd1YWdlCisgCisgUEhPTlkgKz0gJChidXN5Ym94LWRpcnMpCistJChidXN5Ym94LWRpcnMpOiBwcmVwYXJlIHNjcmlwdHMKKysKKytsaWJiYi1kaXIgPSAkKGZpbHRlciBsaWJiYiwkKGJ1c3lib3gtZGlycykpCisrYnVzeWJveC1kaXJzMSA9ICQoZmlsdGVyLW91dCBsaWJiYiwkKGJ1c3lib3gtZGlycykpCisrCisrJChidXN5Ym94LWRpcnMxKTogcHJlcGFyZSBzY3JpcHRzCisgCSQoUSkkKE1BS0UpICQoYnVpbGQpPSRACisgCisraWZuZXEgKCQobGliYmItZGlyKSwpCisrJChsaWJiYi1kaXIpOiB8ICQoYnVzeWJveC1kaXJzMSkKKysJJChRKSQoTUFLRSkgJChidWlsZCk9JEAKKytlbmRpZgorKworICMgQnVpbGQgdGhlIGtlcm5lbCByZWxlYXNlIHN0cmluZworICMgVGhlIEtFUk5FTFJFTEVBU0UgaXMgc3RvcmVkIGluIGEgZmlsZSBuYW1lZCAua2VybmVscmVsZWFzZQorICMgdG8gYmUgdXNlZCB3aGVuIGV4ZWN1dGluZyBmb3IgZXhhbXBsZSBtYWtlIGluc3RhbGwgb3IgbWFrZSBtb2R1bGVzX2luc3RhbGwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3hfMS4yNC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveF8xLjI0LjEuYmIKaW5kZXggYmRhYTVhNS4uZGYwZTEzMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveF8xLjI0LjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveF8xLjI0LjEuYmIKQEAgLTMyLDYgKzMyLDcgQEAKICAgICAgICAgICAgZmlsZTovL2J1c3lib3gtMS4yNC4xLXVuemlwLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2J1c3lib3gtMS4yNC4xLXVuemlwLXJlZ3Jlc3Npb24ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vYnVzeWJveC0xLjI0LjEtdHJ1bmNhdGUtb3Blbi1tb2RlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZmxvY2stdXBkYXRlLXRoZS1iZWhhdmlvdXItb2YtYy1wYXJhbWV0ZXItdG8tbWF0Y2gtdS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9tb3VudC12aWEtbGFiZWwuY2ZnIFwKICAgICAgICAgICAgZmlsZTovL3NoYTFzdW0uY2ZnIFwKICAgICAgICAgICAgZmlsZTovL3NoYTI1NnN1bS5jZmcgXApAQCAtNDMsNiArNDQsMTUgQEAKICAgICAgICAgICAgZmlsZTovL3JjUyBcCiAgICAgICAgICAgIGZpbGU6Ly9yY0sgXAogICAgICAgICAgICBmaWxlOi8vcnVubGV2ZWwgXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTYtMjE0OC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi0yMTQ3LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTIxNDdfMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9pcF9maXhfcHJvYmxlbV9vbl9taXBzNjRfbjY0X2JpZ19lbmRpYW5fbXVzbF9zeXN0ZW1zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21ha2VmaWxlLWZpeC1iYWNrcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXNlZC1maXgtc2VkLW4tZmx1c2hlcy1wYXR0ZXJuLXNwYWNlLXRlcm1pbmF0ZXMtZWFybHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1rYnVpbGQtcmFjZS1maXgtY29tbWl0LWQ4ZTYxYmIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY29tbWl0LWFwcGxldF90YWJsZXMtZml4LWNvbW1pdC0wZGRkYmMxLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21ha2VmaWxlLWxpYmJiLXJhY2UucGF0Y2ggXAogIgogU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vbXVzbC5jZmcgIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9maWxlcy9idXN5Ym94LXN5c2xvZy5kZWZhdWx0IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvZmlsZXMvYnVzeWJveC1zeXNsb2cuZGVmYXVsdAppbmRleCBlNTE2Y2FmLi4yZGNlZDgwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9maWxlcy9idXN5Ym94LXN5c2xvZy5kZWZhdWx0CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2ZpbGVzL2J1c3lib3gtc3lzbG9nLmRlZmF1bHQKQEAgLTEsNCArMSw0IEBACi1PUFRJT05TPSItQyIKKyNPUFRJT05TPSItQyIKICMgVGhlIGFib3ZlIG9wdGlvbiBtZWFucyBzeXNsb2dkIHdpbGwgbG9nIHRvIDE2SyBzaG0gY2lyY3VsYXIgYnVmZmVyLgogIyBZb3UgY291bGQgdXNlIGBsb2dyZWFkJyB0byByZWFkIGl0LgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9maWxlcy9pbml0dGFiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvZmlsZXMvaW5pdHRhYgppbmRleCBiZmVjNGE3Li4yYmM4MzFjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9maWxlcy9pbml0dGFiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2ZpbGVzL2luaXR0YWIKQEAgLTEsMTMgKzEsMTMgQEAKICMgVGhpcyBpcyBydW4gZmlyc3QgZXhjZXB0IHdoZW4gYm9vdGluZyBpbiBzaW5nbGUtdXNlciBtb2RlLgogCiAjIFN0YXJ0dXAgdGhlIHN5c3RlbQotbnVsbDo6c3lzaW5pdDovYmluL21vdW50IC10IHByb2MgcHJvYyAvcHJvYwotbnVsbDo6c3lzaW5pdDovYmluL21vdW50IC10IHN5c2ZzIHN5c2ZzIC9zeXMKLW51bGw6OnN5c2luaXQ6L2Jpbi9tb3VudCAtdCBkZXZ0bXBmcyBkZXZ0bXBmcyAvZGV2Ci1udWxsOjpzeXNpbml0Oi9iaW4vbW91bnQgLW8gcmVtb3VudCxydyAvCi1udWxsOjpzeXNpbml0Oi9iaW4vbWtkaXIgLXAgL2Rldi9wdHMKLW51bGw6OnN5c2luaXQ6L2Jpbi9tb3VudCAtdCBkZXZwdHMgZGV2cHRzIC9kZXYvcHRzCi1udWxsOjpzeXNpbml0Oi9iaW4vbW91bnQgLWEKKzo6c3lzaW5pdDovYmluL21vdW50IC10IHByb2MgcHJvYyAvcHJvYworOjpzeXNpbml0Oi9iaW4vbW91bnQgLXQgc3lzZnMgc3lzZnMgL3N5cworOjpzeXNpbml0Oi9iaW4vbW91bnQgLXQgZGV2dG1wZnMgZGV2dG1wZnMgL2RldgorOjpzeXNpbml0Oi9iaW4vbW91bnQgLW8gcmVtb3VudCxydyAvCis6OnN5c2luaXQ6L2Jpbi9ta2RpciAtcCAvZGV2L3B0cworOjpzeXNpbml0Oi9iaW4vbW91bnQgLXQgZGV2cHRzIGRldnB0cyAvZGV2L3B0cworOjpzeXNpbml0Oi9iaW4vbW91bnQgLWEKIAogOjpzeXNpbml0Oi9ldGMvaW5pdC5kL3JjUwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9maWxlcy9tZGV2IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvZmlsZXMvbWRldgppbmRleCA5NjI1MjQ3Li44YzljMDZlIDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9maWxlcy9tZGV2CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2ZpbGVzL21kZXYKQEAgLTEsMTAgKzEsMTIgQEAKICMhL2Jpbi9zaAotCittb3VudCAtdCBwcm9jIHByb2MgL3Byb2MKK21vdW50IC10IHN5c2ZzIHN5c2ZzIC9zeXMKIG1vdW50IC10IHRtcGZzIHRtcGZzIC9kZXYgIC1vIHNpemU9NjRrLG1vZGU9MDc1NQogbWtkaXIgL2Rldi9wdHMgL2Rldi9zaG0KIGNobW9kIDc3NyAvZGV2L3NobQogbW91bnQgLXQgZGV2cHRzIGRldnB0cyAvZGV2L3B0cwogdG91Y2ggL2Rldi9tZGV2LnNlcQorI3N5c2N0bCAtdyBrZXJuZWwuaG90cGx1Zz0vc2Jpbi9tZGV2CiBlY2hvICIvc2Jpbi9tZGV2IiA+IC9wcm9jL3N5cy9rZXJuZWwvaG90cGx1ZwogbWRldiAtcwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy02LjkvY29yZXV0aWxzX2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzLTYuOS9jb3JldXRpbHNfZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoCmluZGV4IDAyNzMwZGIuLjY0ZTVmMTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzLTYuOS9jb3JldXRpbHNfZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzLTYuOS9jb3JldXRpbHNfZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoCkBAIC0xMSw3ICsxMSw3IEBACiB8IGNvbmZpZ3VyZS5hYzo0MDogdGhlIHRvcCBsZXZlbAogfCBhdXRvbTR0ZTogbTQgZmFpbGVkIHdpdGggZXhpdCBzdGF0dXM6IDEKIAotU2lnbmVkLU9mZi1CeTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+CiAyMDEyLzA1LzA0CiAKIEluZGV4OiBjb3JldXRpbHMtNi45L200L2ptLW1hY3Jvcy5tNApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMtNi45L2Z1dGltZW5zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMtNi45L2Z1dGltZW5zLnBhdGNoCmluZGV4IDVjYTU5MGIuLjUwODgxMDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzLTYuOS9mdXRpbWVucy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy02LjkvZnV0aW1lbnMucGF0Y2gKQEAgLTMsNyArMyw3IEBACiAjIGNvcmV1dGlscyB1c2VzIGdudWxpYiB3aGljaCBjb25mbGljdHMgd2l0aCBuZXdlciBsaWJjIGhlYWRlciBvbiBmdXRpbWVucwogIyB0aGlzIHBhdGNoIHNpbXBseSByZW5hbWVzIGNvcmV1dGlscyBmdXRpbWVzIHRvIGF2b2lkIGNvbmZsaWN0aW9uCiAjCi0jIFNpZ25lZC1vZmYtYnkgS2V2aW4gVGlhbiA8a2V2aW4udGlhbkBpbnRlbC5jb20+LCAyMDEwLTA4LTE4CisjIFNpZ25lZC1vZmYtYnk6IEtldmluIFRpYW4gPGtldmluLnRpYW5AaW50ZWwuY29tPiwgMjAxMC0wOC0xOAogIyAodGhpcyBwYXRjaCBpcyBsaWNlbnNlZCB1bmRlciBHUEx2MikKIAogZGlmZiAtLWdpdCBhL2xpYi91dGltZW5zLmMgYi9saWIvdXRpbWVucy5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy02LjkvZ251bGliX200LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMtNi45L2dudWxpYl9tNC5wYXRjaAppbmRleCA4ZjM1NTUyLi44YThmZmE3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy02LjkvZ251bGliX200LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzLTYuOS9nbnVsaWJfbTQucGF0Y2gKQEAgLTMsNyArMyw3IEBACiAjIHJlbW92ZSB0aGUgbGluZSB0byBjYXVzZSByZWN1cnNpdmUgaW5jbHVzaW9uIGVycm9yIGZyb20gYXV0b3JlY29uZiwgc2ljbmUKICMgbmV3ZXIgYXV0b2NvbmYgaGFzIGluY2x1ZGVkIHRoaXMgZGVmaW5pdGlvbi4gU2ltcGx5IHJlbmFtZSBpdCBoZXJlLgogIwotIyBTaWduZWQtb2ZmLWJ5IEtldmluIFRpYW4gPGtldmluLnRpYW5AaW50ZWwuY29tPiwgMjAxMC0wOC0xOAorIyBTaWduZWQtb2ZmLWJ5OiBLZXZpbiBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNvbT4sIDIwMTAtMDgtMTgKICMgKHRoaXMgcGF0Y2ggaXMgbGljZW5zZWQgdW5kZXIgR1BMdjIpCiAKIGRpZmYgLS1naXQgYS9leHRlbnNpb25zLm00IGIvZXh0ZW5zaW9ucy5tNApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMtNi45L21hbi10b3VjaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzLTYuOS9tYW4tdG91Y2gucGF0Y2gKaW5kZXggYzQyY2I5Yy4uNTlhNGZlMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMtNi45L21hbi10b3VjaC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy02LjkvbWFuLXRvdWNoLnBhdGNoCkBAIC02LDcgKzYsNyBAQAogIyBpcyB3aXRoIHRhcmdldCBmb3JtYXQgd2hpY2ggY2FuJ3QgYmUgaW52b2tlZCBvbiBidWlsZCBzeXN0ZW0sIGRpc2FibGUgYnVpbGRpbmcKICMgJ3RvdWNoJyBtYW4gcGFnZSBoZXJlLgogIwotIyBTaWduZWQtb2ZmLWJ5IEtldmluIFRpYW4gPGtldmluLnRpYW5AaW50ZWwuY29tPiwgMjAxMC0wOC0xOAorIyBTaWduZWQtb2ZmLWJ5OiBLZXZpbiBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNvbT4sIDIwMTAtMDgtMTgKICMgKHRoaXMgcGF0Y2ggaXMgbGljZW5zZWQgdW5kZXIgR1BMdjIpCiAKIGRpZmYgLS1naXQgYS9tYW4vTWFrZWZpbGUuYW0gYi9tYW4vTWFrZWZpbGUuYW0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzLTguMjUvMDAwMS11bmFtZS1yZXBvcnQtcHJvY2Vzc29yLWFuZC1oYXJkd2FyZS1jb3JyZWN0bHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy04LjI1LzAwMDEtdW5hbWUtcmVwb3J0LXByb2Nlc3Nvci1hbmQtaGFyZHdhcmUtY29ycmVjdGx5LnBhdGNoCmluZGV4IGM1ZjQ0OWYuLjNjNDNlMWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzLTguMjUvMDAwMS11bmFtZS1yZXBvcnQtcHJvY2Vzc29yLWFuZC1oYXJkd2FyZS1jb3JyZWN0bHkucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMtOC4yNS8wMDAxLXVuYW1lLXJlcG9ydC1wcm9jZXNzb3ItYW5kLWhhcmR3YXJlLWNvcnJlY3RseS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLVVwc3RyZWFtLVN0YXR1czogUmVqZWN0ZWQKK1Vwc3RyZWFtLVN0YXR1czogRGVuaWVkCiAKIFN1YmplY3Q6IHVuYW1lOiByZXBvcnQgcHJvY2Vzc29yIGFuZCBoYXJkd2FyZSBjb3JyZWN0bHkKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMtOC4yNS9kaXNhYmxlLWxzLW91dHB1dC1xdW90aW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMtOC4yNS9kaXNhYmxlLWxzLW91dHB1dC1xdW90aW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OGMyMTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy04LjI1L2Rpc2FibGUtbHMtb3V0cHV0LXF1b3RpbmcucGF0Y2gKQEAgLTAsMCArMSw0OSBAQAorU3ViamVjdDogcmV2ZXJ0IGluY29uc2lzdGVudCBscyBxdW90aW5nCisKK1RoaXMgaXMgYSByZXZlcnQgb2YgdXBzdHJlYW0gY29tbWl0IDEwOWI5MjIwY2VhZDZlOTc5ZDIyZDE2MzI3YzRkOWY4MzUwNDMxY2MuCisKK0J1Zy1EZWJpYW46IGh0dHBzOi8vYnVncy5kZWJpYW4ub3JnLzgxMzE2NAorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCitPcmlnaW5hbGx5LWJ5OiBBZGFtIEJvcm93c2tpIDxraWxvYnl0ZUBhbmdiYW5kLnBsPgorW1BHOiBwYXRjaCBmcm9tIGh0dHBzOi8vYnVncy5kZWJpYW4ub3JnL2NnaS1iaW4vYnVncmVwb3J0LmNnaT9idWc9ODEzMTY0Izc4IF0KK1NpZ25lZC1vZmYtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgorCistLS0KKworLS0tIGNvcmV1dGlscy04LjI1Lm9yaWcvTkVXUworKysrIGNvcmV1dGlscy04LjI1L05FV1MKK0BAIC03MSw5ICs3MSw2IEBAIEdOVSBjb3JldXRpbHMgTkVXUworICAgZGYgbm93IHByZWZlcnMgc291cmNlcyB0b3dhcmRzIHRoZSByb290IG9mIGEgZGV2aWNlIHdoZW4KKyAgIGVsaWRpbmcgZHVwbGljYXRlIGJpbmQgbW91bnRlZCBlbnRyaWVzLgorIAorLSAgbHMgbm93IHF1b3RlcyBmaWxlIG5hbWVzIHVuYW1iaWd1b3VzbHkgYW5kIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gYSBzaGVsbCwKKy0gIHdoZW4gb3V0cHV0dGluZyB0byBhIHRlcm1pbmFsLgorLQorICAgam9pbiwgc29ydCwgdW5pcSB3aXRoIC0temVyby10ZXJtaW5hdGVkLCBub3cgdHJlYXQgJ1xuJyBhcyBhIGZpZWxkIGRlbGltaXRlci4KKyAKKyAqKiBJbXByb3ZlbWVudHMKKy0tLSBjb3JldXRpbHMtOC4yNS5vcmlnL2RvYy9jb3JldXRpbHMudGV4aQorKysrIGNvcmV1dGlscy04LjI1L2RvYy9jb3JldXRpbHMudGV4aQorQEAgLTc3NTAsOCArNzc1MCw4IEBAIHRoaXMifSBpbiB0aGUgZGVmYXVsdCBDIGxvY2FsZS4gIFRoaXMgbG8KKyAKKyBZb3UgY2FuIHNwZWNpZnkgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIEBvcHRpb257LS1xdW90aW5nLXN0eWxlfSBvcHRpb24KKyB3aXRoIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBAZW52e1FVT1RJTkdfU1RZTEV9QC4gIElmIHRoYXQgZW52aXJvbm1lbnQKKy12YXJpYWJsZSBpcyBub3Qgc2V0LCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBAc2FtcHtzaGVsbC1lc2NhcGV9IHdoZW4gdGhlCistb3V0cHV0IGlzIGEgdGVybWluYWwsIGFuZCBAc2FtcHtsaXRlcmFsfSBvdGhlcndpc2UuCisrdmFyaWFibGUgaXMgbm90IHNldCwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgQHNhbXB7bGl0ZXJhbH0sIGJ1dCB0aGlzCisrZGVmYXVsdCBtYXkgY2hhbmdlIHRvIEBzYW1we3NoZWxsfSBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4KKyAKKyBAaXRlbSAtLXNob3ctY29udHJvbC1jaGFycworIEBvcGluZGV4IC0tc2hvdy1jb250cm9sLWNoYXJzCistLS0gY29yZXV0aWxzLTguMjUub3JpZy9zcmMvbHMuYworKysrIGNvcmV1dGlscy04LjI1L3NyYy9scy5jCitAQCAtMTU4MSw3ICsxNTgxLDYgQEAgZGVjb2RlX3N3aXRjaGVzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgICAgICAgaWYgKGlzYXR0eSAoU1RET1VUX0ZJTEVOTykpCisgICAgICAgICB7CisgICAgICAgICAgIGZvcm1hdCA9IG1hbnlfcGVyX2xpbmU7CistICAgICAgICAgIHNldF9xdW90aW5nX3N0eWxlIChOVUxMLCBzaGVsbF9lc2NhcGVfcXVvdGluZ19zdHlsZSk7CisgICAgICAgICAgIC8qIFNlZSBkZXNjcmlwdGlvbiBvZiBxbWFya19mdW5ueV9jaGFycywgYWJvdmUuICAqLworICAgICAgICAgICBxbWFya19mdW5ueV9jaGFycyA9IHRydWU7CisgICAgICAgICB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlsc182LjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlsc182LjkuYmIKaW5kZXggOWNlNzE3ZC4uMzU3MDBhMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHNfNi45LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzXzYuOS5iYgpAQCAtODgsNiArODgsMTAgQEAKIAogQUxURVJOQVRJVkVfJHtQTn0gPSAibGJyYWNrZXQgJHtiaW5kaXJfcHJvZ3N9ICR7YmFzZV9iaW5kaXJfcHJvZ3N9ICR7c2JpbmRpcl9wcm9nc30iCiAKK0FMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJzdS4xIGhvc3RuYW1lLjEiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbc3UuMV0gPSAiJHttYW5kaXJ9L21hbjEvc3UuMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtob3N0bmFtZS4xXSA9ICIke21hbmRpcn0vbWFuMS9ob3N0bmFtZS4xIgorCiBBTFRFUk5BVElWRV9QUklPUklUWVt1cHRpbWVdID0gIjEwIgogQUxURVJOQVRJVkVfUFJJT1JJVFlbaG9zdG5hbWVdID0gIjEwIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlsc184LjI1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHNfOC4yNS5iYgppbmRleCA0MTlhNjkzLi5kZjZhZDM4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlsc184LjI1LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzXzguMjUuYmIKQEAgLTE5LDYgKzE5LDcgQEAKICAgICAgICAgICAgZmlsZTovL2ZpeC1zZWxpbnV4LWZsYXNrLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS11bmFtZS1yZXBvcnQtcHJvY2Vzc29yLWFuZC1oYXJkd2FyZS1jb3JyZWN0bHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1scy1vdXRwdXQtcXVvdGluZy5wYXRjaCBcCiAgICAgICAgICAgIgogCiBTUkNfVVJJW3RhcmJhbGwubWQ1c3VtXSA9ICIwNzBlNDNiYTdmNjE4ZDc0NzQxNGVmNTZhYjI0OGE0OCIKQEAgLTM3LDcgKzM4LDggQEAKICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3hhdHRyJywgJ3hhdHRyJywgJycsIGQpfSBcCiAiCiAKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID8/PSAiIgorIyBUaGUgbGliL29lL3BhdGgucHkgcmVxdWlyZXMgeGF0dHIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID8/PSAieGF0dHIiCiAKICMgd2l0aCwgd2l0aG91dCwgZGVwZW5kcywgcmRlcGVuZHMKICMKQEAgLTY5LDYgKzcxLDE1IEBACiAJbWtkaXIgLXAgJHtCfS9zcmMKIH0KIAorZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKwkjIHJlbW92ZSBncm91cHMgdG8gZml4IGNvbmZsaWN0IHdpdGggc2hhZG93LW5hdGl2ZQorCXJtIC1mICR7RH0ke1NUQUdJTkdfQklORElSX05BVElWRX0vZ3JvdXBzCisJIyBUaGUgcmV0dXJuIGlzIGEgbXVzdCBzaW5jZSBuYXRpdmUgZG9lc24ndCBuZWVkIHRoZQorCSMgZG9faW5zdGFsbF9hcHBlbmQoKSBpbiB0aGUgYmVsb3cuCisJcmV0dXJuCit9CisKIGRvX2luc3RhbGxfYXBwZW5kKCkgewogCWZvciBpIGluIGRmIG1rdGVtcCBiYXNlNjQ7IGRvIG12ICR7RH0ke2JpbmRpcn0vJGkgJHtEfSR7YmluZGlyfS8kaS4ke0JQTn07IGRvbmUKIApAQCAtOTEsMTYgKzEwMiwxMyBAQAogCWNwIC1hICR7RH0ke21hbmRpcn0vbWFuMS90ZXN0LjEgJHtEfSR7bWFuZGlyfS9tYW4xL2xicmFja2V0LjEuJHtCUE59CiB9CiAKLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpewotCSMgcmVtb3ZlIGdyb3VwcyB0byBmaXggY29uZmxpY3Qgd2l0aCBzaGFkb3ctbmF0aXZlCi0Jcm0gLWYgJHtEfSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9ncm91cHMKLX0KLQogaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCiAKIEFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKIEFMVEVSTkFUSVZFXyR7UE59ID0gImxicmFja2V0ICR7YmluZGlyX3Byb2dzfSAke2Jhc2VfYmluZGlyX3Byb2dzfSAke3NiaW5kaXJfcHJvZ3N9IGJhc2U2NCBta3RlbXAgZGYiCi1BTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAiYmFzZTY0LjEgbWt0ZW1wLjEgZGYuMSBsYnJhY2tldC4xIGdyb3Vwcy4xIGtpbGwuMSB1cHRpbWUuMSBzdGF0LjEiCitBTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAiYmFzZTY0LjEgbWt0ZW1wLjEgZGYuMSBsYnJhY2tldC4xIGdyb3Vwcy4xIGtpbGwuMSB1cHRpbWUuMSBzdGF0LjEgIGhvc3RuYW1lLjEiCisKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtob3N0bmFtZS4xXSA9ICIke21hbmRpcn0vbWFuMS9ob3N0bmFtZS4xIgogCiBBTFRFUk5BVElWRV9MSU5LX05BTUVbYmFzZTY0XSA9ICIke2Jhc2VfYmluZGlyfS9iYXNlNjQiCiBBTFRFUk5BVElWRV9UQVJHRVRbYmFzZTY0XSA9ICIke2JpbmRpcn0vYmFzZTY0LiR7QlBOfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtZ2xpYi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWdsaWIuaW5jCmluZGV4IDQ2NjFlM2EuLjU1ZjcxMGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtZ2xpYi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy1nbGliLmluYwpAQCAtMTUsNyArMTUsNyBAQAogICAgICAgICAgICBmaWxlOi8vdGVzdC1pbnN0YWxsLW1ha2VmaWxlLnBhdGNoIFwKICIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgYmFzaC1jb21wbGV0aW9uCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBiYXNoLWNvbXBsZXRpb24gZ3RrLWRvYwogCiAjZGVmYXVsdCBkaXNhYmxlIHJlZ3Jlc3Npb24gdGVzdHMsIHNvbWUgdW5pdCB0ZXN0IGNvZGUgaW4gbm9uIHRlc3RpbmcgY29kZQogI1BBQ0tBR0VDT05GSUdfcG4tJHtQTn0gPSAidGVzdHMiIGVuYWJsZSByZWdyZXNzaW9uIHRlc3RzIGxvY2FsLmNvbmYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtdGVzdF8xLjEwLjEwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy10ZXN0XzEuMTAuMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjUwYjdhYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtdGVzdF8xLjEwLjEwLmJiCkBAIC0wLDAgKzEsNTggQEAKK1NVTU1BUlkgPSAiRC1CdXMgdGVzdCBwYWNrYWdlIChmb3IgRC1idXMgZnVuY3Rpb25hbGl0eSB0ZXN0aW5nIG9ubHkpIgorSE9NRVBBR0UgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnIgorU0VDVElPTiA9ICJiYXNlIgorTElDRU5TRSA9ICJBRkwtMiB8IEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTEwZGRlZDNiNTgxNDhmM2YxZmQ4MDRiMjYzNTRhZjNlIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RidXMvZGJ1cy5oO2JlZ2lubGluZT02O2VuZGxpbmU9MjA7bWQ1PTc3NTVjOWQ3YWJjY2Q1ZGJkMjVhNmE5NzQ1MzhiYjNjIgorCitERVBFTkRTID0gImRidXMgZ2xpYi0yLjAiCisKK1JERVBFTkRTXyR7UE59ICs9ICJtYWtlIgorUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKKworU1JDX1VSSSA9ICJodHRwOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvZGJ1cy9kYnVzLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly90bXBkaXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL3B5dGhvbi1jb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY2xlYXItZ3VpZF9mcm9tX3NlcnZlci1pZi1zZW5kX25lZ290aWF0ZV91bml4X2YucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0OTU2NzZkMjQwZWI5ODI5MjFiM2FkMTM0MzUyNjg0OSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5ZDhmMWQwNjlhYjRkMWEwMjU1ZDdiNDAwZWEzYmNlZjQ0MzBjNDJlNzI5YjEwMTJhYmIyODkwZTNmNzM5YTQzIgorCitTPSIke1dPUktESVJ9L2RidXMtJHtQVn0iCitGSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS9kYnVzOiIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgcHRlc3QgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKK0VYVFJBX09FQ09ORl9YID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJy0td2l0aC14JywgJy0td2l0aG91dC14JywgZCl9IgorRVhUUkFfT0VDT05GX1hfY2xhc3MtbmF0aXZlID0gIi0td2l0aG91dC14IgorCitFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtdGVzdHMgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLW1vZHVsYXItdGVzdHMgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGxlZC10ZXN0cyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtY2hlY2tzIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1hc3NlcnRzIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS12ZXJib3NlLW1vZGUgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS14bWwtZG9jcyBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRveHlnZW4tZG9jcyBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWxpYmF1ZGl0IFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtc3lzdGVtZCBcCisgICAgICAgICAgICAgICAgLS13aXRob3V0LXN5c3RlbWRzeXN0ZW11bml0ZGlyIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtZGJ1cy10ZXN0LWRpcj0ke1BURVNUX1BBVEh9IFwKKyAgICAgICAgICAgICAgICAke0VYVFJBX09FQ09ORl9YfSIKKworZG9faW5zdGFsbCgpIHsKKyAgICA6Cit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0CisJbD0ic2hlbGwgcHJpbnRmIHJlZnMgc3lzbG9nIG1hcnNoYWwgc3ludGF4IGNvcnJ1cHQgZGJ1cy1kYWVtb24gZGJ1cy1kYWVtb24tZWF2ZXNkcm9wIGxvb3BiYWNrIHJlbGF5IgorCWZvciBpIGluICRsOyBkbyBpbnN0YWxsICR7Qn0vdGVzdC8ubGlicy90ZXN0LSRpICR7RH0ke1BURVNUX1BBVEh9L3Rlc3Q7IGRvbmUKKwlsPSJidXMgYnVzLXN5c3RlbSBidXMtbGF1bmNoLWhlbHBlciIKKwlmb3IgaSBpbiAkbDsgZG8gaW5zdGFsbCAke0J9L2J1cy8ubGlicy90ZXN0LSRpICR7RH0ke1BURVNUX1BBVEh9L3Rlc3Q7IGRvbmUKKwlpbnN0YWxsICR7Qn0vZGJ1cy8ubGlicy90ZXN0LWRidXMgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorCWNwIC1yICR7Qn0vdGVzdC9kYXRhICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKK30KK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJiYXNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy10ZXN0XzEuMTAuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtdGVzdF8xLjEwLjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3NjhhMDkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy10ZXN0XzEuMTAuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLVNVTU1BUlkgPSAiRC1CdXMgdGVzdCBwYWNrYWdlIChmb3IgRC1idXMgZnVuY3Rpb25hbGl0eSB0ZXN0aW5nIG9ubHkpIgotSE9NRVBBR0UgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnIgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJBRkwtMiB8IEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTEwZGRlZDNiNTgxNDhmM2YxZmQ4MDRiMjYzNTRhZjNlIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RidXMvZGJ1cy5oO2JlZ2lubGluZT02O2VuZGxpbmU9MjA7bWQ1PTc3NTVjOWQ3YWJjY2Q1ZGJkMjVhNmE5NzQ1MzhiYjNjIgotCi1ERVBFTkRTID0gInB5dGhvbi1weWdvYmplY3QgZGJ1cyIKLQotUkRFUEVORFNfJHtQTn0gKz0gIm1ha2UiCi1SREVQRU5EU18ke1BOfS1kZXYgPSAiIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9kYnVzL2RidXMtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3RtcGRpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kYnVzLTEuaW5pdCAgXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL3B5dGhvbi1jb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY2xlYXItZ3VpZF9mcm9tX3NlcnZlci1pZi1zZW5kX25lZ290aWF0ZV91bml4X2YucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyNmQwY2YzYTFjOTc4MmNiMGUzNDIxMDFmMDQ1MDQ0MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiNWZlZmEwOGE3N2VkZDc2Y2Q2NGQ4NzJkYjk0OWVlYmMwMmNmNmYzZjhiZTgyZTRiYmM2NDE3NDJhZjVkMzVmIgotCi1TPSIke1dPUktESVJ9L2RidXMtJHtQVn0iCi1GSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS9kYnVzOiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgcHRlc3QgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLUVYVFJBX09FQ09ORl9YID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJy0td2l0aC14JywgJy0td2l0aG91dC14JywgZCl9IgotRVhUUkFfT0VDT05GX1hfY2xhc3MtbmF0aXZlID0gIi0td2l0aG91dC14IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtdGVzdHMgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLW1vZHVsYXItdGVzdHMgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGxlZC10ZXN0cyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtY2hlY2tzIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1hc3NlcnRzIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS12ZXJib3NlLW1vZGUgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS14bWwtZG9jcyBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRveHlnZW4tZG9jcyBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLWxpYmF1ZGl0IFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtc3lzdGVtZCBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXN5c3RlbWRzeXN0ZW11bml0ZGlyIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtZGJ1cy10ZXN0LWRpcj0ke1BURVNUX1BBVEh9IFwKLSAgICAgICAgICAgICAgICAke0VYVFJBX09FQ09ORl9YfSIKLQotZG9faW5zdGFsbCgpIHsKLSAgICA6Ci19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0Ci0JY2FzZTE9InNoZWxsIHByaW50ZiByZWZzIHN5c2xvZyIKLQlmb3IgaSBpbiAke2Nhc2UxfTsgZG8gaW5zdGFsbCAke0J9L3Rlc3QvdGVzdC0kaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0OyBkb25lCi0JY2FzZTI9Im1hcnNoYWwgc3ludGF4IGNvcnJ1cHQgZGJ1cy1kYWVtb24gZGJ1cy1kYWVtb24tZWF2ZXNkcm9wIGxvb3BiYWNrIHJlbGF5IgotCWZvciBpIGluICR7Y2FzZTJ9OyBkbyBpbnN0YWxsICR7Qn0vdGVzdC8ubGlicy90ZXN0LSRpICR7RH0ke1BURVNUX1BBVEh9L3Rlc3Q7IGRvbmUKLQljYXNlMz0iYnVzIGJ1cy1zeXN0ZW0gYnVzLWxhdW5jaC1oZWxwZXIiCi0JZm9yIGkgaW4gJHtjYXNlM307IGRvIGluc3RhbGwgJHtCfS9idXMvdGVzdC0kaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0OyBkb25lCi0JaW5zdGFsbCAke0J9L2RidXMvdGVzdC1kYnVzICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKLQljcCAtciAke0J9L3Rlc3QvZGF0YSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0Ci19Ci1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAiYmFzaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMvMDAwMS1jb25maWd1cmUuYWMtZXhwbGljaXRlbHktY2hlY2stc3RkaW50LmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLzAwMDEtY29uZmlndXJlLmFjLWV4cGxpY2l0ZWx5LWNoZWNrLXN0ZGludC5oLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1YWNiN2IKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLzAwMDEtY29uZmlndXJlLmFjLWV4cGxpY2l0ZWx5LWNoZWNrLXN0ZGludC5oLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gMWJmZGUyMjI5MjZiZTYyNGEzMGE2ZTRiMmNkYzJjNTA2NGEzNjI5OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IElvYW4tQWRyaWFuIFJhdGl1IDxhZHJpYW4ucmF0aXVAbmkuY29tPgorRGF0ZTogRnJpLCAyOSBKdWwgMjAxNiAwMToxOTozNyArMDMwMAorU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IGV4cGxpY2l0ZWx5IGNoZWNrIHN0ZGludC5oCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK090aGVyd2lzZSBIQVZFX1NURElOVF9IIHdpbGwgbm90IGJlIGRlZmluZWQgb3IgdGhlIHZhciB3aWxsIG5vdCBiZQorcGlja2VkIHVwIGZyb20gY2FjaGUgc28gYnVpbGRzIGNvdWxkIGZhaWwgd2l0aCBlcnJvcnMgbGlrZToKK3wgLi4vLi4vZGJ1cy0xLjEwLjgvZGJ1cy9kYnVzLWludGVybmFscy5oOjIzOTo4OiBlcnJvcjog4oCYdWludHB0cl904oCZIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKQorCitTaWduZWQtb2ZmLWJ5OiBJb2FuLUFkcmlhbiBSYXRpdSA8YWRyaWFuLnJhdGl1QG5pLmNvbT4KK1tzbWN2OiBmaXggQXV0b2NvbmYgdW5kZXJxdW90aW5nXQorUmV2aWV3ZWQtYnk6IFNpbW9uIE1jVml0dGllIDxzaW1vbi5tY3ZpdHRpZUBjb2xsYWJvcmEuY28udWs+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2Zyb20gZGJ1cy0xLjEwXQorCistLS0KKyBjb25maWd1cmUuYWMgfCAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBjZjVjNWI5Li5hMjI4ZDYzIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC02OTksNiArNjk5LDggQEAgQUNfQ0hFQ0tfSEVBREVSUyhieXRlc3dhcC5oKQorIAorIEFDX0NIRUNLX0hFQURFUlModW5pc3RkLmgpCisgCisrQUNfQ0hFQ0tfSEVBREVSUyhbc3RkaW50LmhdKQorKworIEFDX0NIRUNLX0hFQURFUlMod3MydGNwaXAuaCkKKyAKKyBBQ19DSEVDS19IRUFERVJTKGFsbG9jYS5oKQorLS0gCisyLjkuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLzAwMDEtY29uZmlndXJlLmFjLXN1cHBvcnQtbGFyZ2UtZmlsZS1mb3Itc3RhdDY0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy8wMDAxLWNvbmZpZ3VyZS5hYy1zdXBwb3J0LWxhcmdlLWZpbGUtZm9yLXN0YXQ2NC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzZlYWMyYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLzAwMDEtY29uZmlndXJlLmFjLXN1cHBvcnQtbGFyZ2UtZmlsZS1mb3Itc3RhdDY0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotRnJvbSBlMThiZDNhNTcxYmU3MTZkOTBiZWRjODM1YTAxNDQ3MjQ3MGFlN2JkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAzMCBEZWMgMjAxNSAxMDo1ODozOSArMDgwMAotU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IHN1cHBvcnQgbGFyZ2UtZmlsZSBmb3Igc3RhdDY0Ci0KLVdoaWxlIHN0YXJ0aW5nIGRidXMtZGFlbW9uIG9uIGEgMzItYml0IGxpbnV4IGhvc3QgYW5kIGl0IGludm9rZXMKLWZzdGF0IHRvIGxvYWQgL2V0Yy9kYnVzLTEvc3lzdGVtLmNvbmYgdGhyb3VnaCBORlMuIElmIHN5c3RlbS5jb25mCi13YXMgY3JlYXRlZCB3aXRoIGEgbGFyZ2UgaW5kb2UgbnVtYmVyIG9uIDY0LWJpdCBob3N0LiBUaGUgYWJvdmUKLWZzdGF0IGludm9raW5nIGZhaWxlZC4gSGVyZSBpcyB0aGUgbG9nIG9mIHN0cmFjZToKLS4uLi4uLi4uLi4uLgotJCBscyAtaSAvZXRjL2RidXMtMS9zeXN0ZW0uY29uZgotNTM3Nzg1NTgxMDkgL2V0Yy9kYnVzLTEvc3lzdGVtLmNvbmYKLQotJCBzdHJhY2UgL3Vzci9iaW4vZGJ1cy1kYWVtb24gLS1zeXN0ZW0gLS1hZGRyZXNzPXN5c3RlbWQ6IC0tbm9mb3JrIC0tbm9waWRmaWxlIC0tc3lzdGVtZC1hY3RpdmF0aW9uCi18b3BlbigiL2V0Yy9kYnVzLTEvc3lzdGVtLmNvbmYiLCBPX1JET05MWSkgPSA0Ci18ZnN0YXQ2NCg0LCB7c3RfbW9kZT1TX0lGUkVHfDA2NDQsIHN0X3NpemU9MzM0MCwgLi4ufSkgPSAwCi18Y2xvc2UoNCkgPSAwCi18Y2xvc2UoMykgPSAwCi18d3JpdGUoMiwgIkZhaWxlZCB0byBzdGFydCBtZXNzYWdlIGJ1czogRmFpIi4uLiwgMTA5RmFpbGVkIHRvIHN0YXJ0IG1lc3NhZ2UgYnVzOgotRmFpbGVkIHRvIHN0YXQgIi9ldGMvZGJ1cy0xL3N5c3RlbS5jb25mIjogVmFsdWUgdG9vIGxhcmdlIGZvciBkZWZpbmVkIGRhdGEgdHlwZQotfCkgPSAxMDkKLXxleGl0X2dyb3VwKDEpID0gPwotfCsrKyBleGl0ZWQgd2l0aCAxICsrKwotLi4uLi4uLi4uLi4uCi0KLUluIHRoaXMgc2l0dWF0aW9uLCB3ZSBzaG91bGQgc3VwcG9ydCBsYXJnZS1maWxlIGZvciBzdGF0NjQuIEFkZCBtYXJjbwotQUNfU1lTX0xBUkdFRklMRSB0byBkbyB0aGUgZGV0ZWN0aW9uIGF0IGNvbmZpZ3VyZSB0aW1lLiBJdCBjYW4gYmUgZGlzYWJsZWQKLWJ5IGNvbmZpZ3VyaW5nIHdpdGggdGhlIGAtLWRpc2FibGUtbGFyZ2VmaWxlJyBvcHRpb24uCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotQnVnOiBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD05MzU0NQotaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9hdHRhY2htZW50LmNnaT9pZD0xMjA3NDcKLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA4MjgwNmJhLi5jYjVhNjBiIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC02NCw2ICs2NCw3IEBAIEFDX1NVQlNUKERCVVNfVkVSU0lPTikKLSBBQ19QUk9HX0NDCi0gQU1fUFJPR19DQ19DX08KLSBBQ19QUk9HX0NYWAotIEFDX1VTRV9TWVNURU1fRVhURU5TSU9OUwotK0FDX1NZU19MQVJHRUZJTEUKLSBBQ19JU0NfUE9TSVgKLSBBQ19IRUFERVJfU1REQwotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzXzEuMTAuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzXzEuMTAuMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGRiMGI5YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXNfMS4xMC4xMC5iYgpAQCAtMCwwICsxLDE4MSBAQAorU1VNTUFSWSA9ICJELUJ1cyBtZXNzYWdlIGJ1cyIKK0RFU0NSSVBUSU9OID0gIkQtQnVzIGlzIGEgbWVzc2FnZSBidXMgc3lzdGVtLCBhIHNpbXBsZSB3YXkgZm9yIGFwcGxpY2F0aW9ucyB0byB0YWxrIHRvIG9uZSBhbm90aGVyLiBJbiBhZGRpdGlvbiB0byBpbnRlcnByb2Nlc3MgY29tbXVuaWNhdGlvbiwgRC1CdXMgaGVscHMgY29vcmRpbmF0ZSBwcm9jZXNzIGxpZmVjeWNsZTsgaXQgbWFrZXMgaXQgc2ltcGxlIGFuZCByZWxpYWJsZSB0byBjb2RlIGEgXCJzaW5nbGUgaW5zdGFuY2VcIiBhcHBsaWNhdGlvbiBvciBkYWVtb24sIGFuZCB0byBsYXVuY2ggYXBwbGljYXRpb25zIGFuZCBkYWVtb25zIG9uIGRlbWFuZCB3aGVuIHRoZWlyIHNlcnZpY2VzIGFyZSBuZWVkZWQuIgorSE9NRVBBR0UgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnIgorU0VDVElPTiA9ICJiYXNlIgorTElDRU5TRSA9ICJBRkwtMiB8IEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTEwZGRlZDNiNTgxNDhmM2YxZmQ4MDRiMjYzNTRhZjNlIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RidXMvZGJ1cy5oO2JlZ2lubGluZT02O2VuZGxpbmU9MjA7bWQ1PTc3NTVjOWQ3YWJjY2Q1ZGJkMjVhNmE5NzQ1MzhiYjNjIgorREVQRU5EUyA9ICJleHBhdCB2aXJ0dWFsL2xpYmludGwiCitSREVQRU5EU19kYnVzX2NsYXNzLW5hdGl2ZSA9ICIiCitSREVQRU5EU19kYnVzX2NsYXNzLW5hdGl2ZXNkayA9ICIiCitQQUNLQUdFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdGVzdCcsICcke1BOfS1wdGVzdCcsICcnLCBkKX0iCitBTExPV19FTVBUWV9kYnVzLXB0ZXN0ID0gIjEiCitSREVQRU5EU19kYnVzLXB0ZXN0X2NsYXNzLXRhcmdldCA9ICJkYnVzLXRlc3QtcHRlc3QiCisKK1NSQ19VUkkgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2RidXMvZGJ1cy0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vdG1wZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RidXMtMS5pbml0IFwKKyAgICAgICAgICAgZmlsZTovL29zLXRlc3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY2xlYXItZ3VpZF9mcm9tX3NlcnZlci1pZi1zZW5kX25lZ290aWF0ZV91bml4X2YucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtZXhwbGljaXRlbHktY2hlY2stc3RkaW50LmgucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDk1Njc2ZDI0MGViOTgyOTIxYjNhZDEzNDM1MjY4NDkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWQ4ZjFkMDY5YWI0ZDFhMDI1NWQ3YjQwMGVhM2JjZWY0NDMwYzQyZTcyOWIxMDEyYWJiMjg5MGUzZjczOWE0MyIKKworaW5oZXJpdCB1c2VyYWRkIGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCB1cGRhdGUtcmMuZCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworSU5JVFNDUklQVF9OQU1FID0gImRidXMtMSIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDAyIDUgMyAyIC4gc3RvcCAyMCAwIDEgNiAuIgorCitweXRob24gX19hbm9ueW1vdXMoKSB7CisgICAgaWYgbm90IGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCBUcnVlLCBGYWxzZSwgZCk6CisgICAgICAgIGQuc2V0VmFyKCJJTkhJQklUX1VQREFURVJDRF9CQkNMQVNTIiwgIjEiKQorfQorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgorR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLXIgbmV0ZGV2IgorVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSAtLWhvbWUgJHtsb2NhbHN0YXRlZGlyfS9saWIvZGJ1cyBcCisgICAgICAgICAgICAgICAgICAgICAgIC0tbm8tY3JlYXRlLWhvbWUgLS1zaGVsbCAvYmluL2ZhbHNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgLS11c2VyLWdyb3VwIG1lc3NhZ2VidXMiCisKK0NPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L2RidXMtMS9zeXN0ZW0uY29uZiAke3N5c2NvbmZkaXJ9L2RidXMtMS9zZXNzaW9uLmNvbmYiCisKK0RFQklBTk5BTUVfJHtQTn0gPSAiZGJ1cy0xIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tbGliIgorCitPTERQS0dOQU1FID0gImRidXMteDExIgorT0xEUEtHTkFNRV9jbGFzcy1uYXRpdmVzZGsgPSAiIgorCisjIGZvciBjb21wYXRpYmlsaXR5CitSUFJPVklERVNfJHtQTn0gPSAiJHtPTERQS0dOQU1FfSIKK1JSRVBMQUNFU18ke1BOfSArPSAiJHtPTERQS0dOQU1FfSIKKworRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L2RidXMtZGFlbW9uKiBcCisgICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy11dWlkZ2VuIFwKKyAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLWNsZWFudXAtc29ja2V0cyBcCisgICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy1zZW5kIFwKKyAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLW1vbml0b3IgXAorICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtbGF1bmNoIFwKKyAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLXJ1bi1zZXNzaW9uIFwKKyAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLXVwZGF0ZS1hY3RpdmF0aW9uLWVudmlyb25tZW50IFwKKyAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vZGJ1cyogXAorICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfSBcCisgICAgICAgICAgICAgICAke2xvY2Fsc3RhdGVkaXJ9IFwKKyAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzIFwKKyAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS1zZXJ2aWNlcyBcCisgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zZXNzaW9uLmQgXAorICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc2Vzc2lvbi5jb25mIFwKKyAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kIFwKKyAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5jb25mIFwKKyAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0gXAorICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0gXAorIgorRklMRVNfJHtQTn0tbGliID0gIiR7bGliZGlyfS9saWIqLnNvLioiCitSUkVDT01NRU5EU18ke1BOfS1saWIgPSAiJHtQTn0iCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9kYnVzLTEuMC9pbmNsdWRlICR7YmluZGlyfS9kYnVzLXRlc3QtdG9vbCIKKworcGtnX3Bvc3RpbnN0X2RidXMoKSB7CisJIyBJZiBib3RoIHN5c3RlbWQgYW5kIHN5c3Zpbml0IGFyZSBlbmFibGVkLCBtYXNrIHRoZSBkYnVzLTEgaW5pdCBzY3JpcHQKKyAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQgc3lzdmluaXQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgorCQlpZiBbIC1uICIkRCIgXTsgdGhlbgorCQkJT1BUUz0iLS1yb290PSREIgorCQlmaQorCQlzeXN0ZW1jdGwgJE9QVFMgbWFzayBkYnVzLTEuc2VydmljZQorCWZpCisKKwlpZiBbIC16ICIkRCIgXSAmJiBbIC1lIC9ldGMvaW5pdC5kL3BvcHVsYXRlLXZvbGF0aWxlLnNoIF0gOyB0aGVuCisJCS9ldGMvaW5pdC5kL3BvcHVsYXRlLXZvbGF0aWxlLnNoIHVwZGF0ZQorCWZpCit9CisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtdGVzdHMgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS14bWwtZG9jcyBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRveHlnZW4tZG9jcyBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWxpYmF1ZGl0IFwKKyAgICAgICAgICAgICAgICAiCisKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtLWRpc2FibGUtc2VsaW51eCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICdzeXN0ZW1kJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsYXJnZWZpbGUnLCAnbGFyZ2VmaWxlJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneDExJywgJycsIGQpfSIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID0gIiIKKworUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLWVuYWJsZS1zeXN0ZW1kIC0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9LC0tZGlzYWJsZS1zeXN0ZW1kIC0td2l0aG91dC1zeXN0ZW1kc3lzdGVtdW5pdGRpcixzeXN0ZW1kIgorUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0td2l0aC14IC0tZW5hYmxlLXgxMS1hdXRvbGF1bmNoLC0td2l0aG91dC14IC0tZGlzYWJsZS14MTEtYXV0b2xhdW5jaCwgdmlydHVhbC9saWJ4MTEgbGlic20iCitQQUNLQUdFQ09ORklHW2xhcmdlZmlsZV0gPSAiLS1lbmFibGUtbGFyZ2VmaWxlLC0tZGlzYWJsZS1sYXJnZWZpbGUsLCIKK1BBQ0tBR0VDT05GSUdbdXNlci1zZXNzaW9uXSA9ICItLWVuYWJsZS11c2VyLXNlc3Npb24gLS13aXRoLXN5c3RlbWR1c2VydW5pdGRpcj0ke3N5c3RlbWRfdXNlcl91bml0ZGlyfSwtLWRpc2FibGUtdXNlci1zZXNzaW9uIgorCitkb19pbnN0YWxsKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsCisKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKwkJc2VkICdzOkBiaW5kaXJAOiR7YmluZGlyfTonIDwgJHtXT1JLRElSfS9kYnVzLTEuaW5pdCA+JHtXT1JLRElSfS9kYnVzLTEuaW5pdC5zaAorCQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9kYnVzLTEuaW5pdC5zaCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvZGJ1cy0xCisJZmkKKworCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCWZvciBpIGluIGRidXMudGFyZ2V0LndhbnRzIHNvY2tldHMudGFyZ2V0LndhbnRzIG11bHRpLXVzZXIudGFyZ2V0LndhbnRzOyBkbyBcCisJCQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9LyRpOyBkb25lCisJCWluc3RhbGwgLW0gMDY0NCAke0J9L2J1cy9kYnVzLnNlcnZpY2UgJHtCfS9idXMvZGJ1cy5zb2NrZXQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vCisJCWNkICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2RidXMudGFyZ2V0LndhbnRzLworCQlsbiAtZnMgLi4vZGJ1cy5zb2NrZXQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vZGJ1cy50YXJnZXQud2FudHMvZGJ1cy5zb2NrZXQKKwkJbG4gLWZzIC4uL2RidXMuc29ja2V0ICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3NvY2tldHMudGFyZ2V0LndhbnRzL2RidXMuc29ja2V0CisJCWxuIC1mcyAuLi9kYnVzLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbXVsdGktdXNlci50YXJnZXQud2FudHMvZGJ1cy5zZXJ2aWNlCisJZmkKKworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKKwllY2hvICJkIG1lc3NhZ2VidXMgbWVzc2FnZWJ1cyAwNzU1ICR7bG9jYWxzdGF0ZWRpcn0vcnVuL2RidXMgbm9uZSIgXAorCSAgICAgPiAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy85OV9kYnVzCisKKworCW1rZGlyIC1wICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9kYnVzCisKKwljaG93biBtZXNzYWdlYnVzOm1lc3NhZ2VidXMgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2RidXMKKworCWNob3duIHJvb3Q6bWVzc2FnZWJ1cyAke0R9JHtsaWJleGVjZGlyfS9kYnVzLWRhZW1vbi1sYXVuY2gtaGVscGVyCisJY2htb2QgNDc1NSAke0R9JHtsaWJleGVjZGlyfS9kYnVzLWRhZW1vbi1sYXVuY2gtaGVscGVyCisKKwkjIFJlbW92ZSBSZWQgSGF0IGluaXRzY3JpcHQKKwlybSAtcmYgJHtEfSR7c3lzY29uZmRpcn0vcmMuZAorCisJIyBSZW1vdmUgZW1wdHkgdGVzdGV4ZWMgZGlyZWN0b3J5IGFzIHdlIGRvbid0IGJ1aWxkIHRlc3RzCisJcm0gLXJmICR7RH0ke2xpYmRpcn0vZGJ1cy0xLjAvdGVzdAorCisJIyBSZW1vdmUgL3Zhci9ydW4gYXMgaXQgaXMgY3JlYXRlZCBvbiBzdGFydHVwCisJcm0gLXJmICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bgorfQorCitkb19pbnN0YWxsX2NsYXNzLW5hdGl2ZSgpIHsKKwlhdXRvdG9vbHNfZG9faW5zdGFsbAorCisJIyBmb3IgZGJ1cy1nbGliLW5hdGl2ZSBpbnRyb3NwZWN0aW9uIGdlbmVyYXRpb24KKwlpbnN0YWxsIC1kICR7RH0ke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2RidXMvCisJIyBOLkIuIGlzIGJlbG93IGluc3RhbGwgYWN0dWFsbHkgcmVxdWlyZWQ/CisJaW5zdGFsbCAtbSAwNjQ0IGJ1cy9zZXNzaW9uLmNvbmYgJHtEfSR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZGJ1cy9zZXNzaW9uLmNvbmYKKworCSMgZGJ1cy1nbGliLW5hdGl2ZSBhbmQgZGJ1cy1nbGliIG5lZWQgdGhpcyB4bWwgZmlsZQorCS4vYnVzL2RidXMtZGFlbW9uIC0taW50cm9zcGVjdCA+ICR7RH0ke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2RidXMvZGJ1cy1idXMtaW50cm9zcGVjdC54bWwKKwkKKwkjIGRidXMtbGF1bmNoIGhhcyBubyBYIHN1cHBvcnQgc28gbGV0cyBub3QgaW5zdGFsbCBpdCBpbiBjYXNlIHRoZSBob3N0CisJIyBoYXMgYSBtb3JlIGZlYXR1cmVkIGFuZCB1c2VmdWwgdmVyc2lvbgorCXJtIC1mICR7RH0ke2JpbmRpcn0vZGJ1cy1sYXVuY2gKK30KKworZG9faW5zdGFsbF9jbGFzcy1uYXRpdmVzZGsoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKworCSMgZGJ1cy1sYXVuY2ggaGFzIG5vIFggc3VwcG9ydCBzbyBsZXRzIG5vdCBpbnN0YWxsIGl0IGluIGNhc2UgdGhlIGhvc3QKKwkjIGhhcyBhIG1vcmUgZmVhdHVyZWQgYW5kIHVzZWZ1bCB2ZXJzaW9uCisJcm0gLWYgJHtEfSR7YmluZGlyfS9kYnVzLWxhdW5jaAorCisJIyBSZW1vdmUgL3Zhci9ydW4gdG8gYXZvaWQgUUEgZXJyb3IKKwlybSAtcmYgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuCit9CitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK0lOU0FORV9TS0lQXyR7UE59LXB0ZXN0ICs9ICJidWlsZC1kZXBzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1c18xLjEwLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzXzEuMTAuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjQ1Nzk4YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzXzEuMTAuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4MSArMCwwIEBACi1TVU1NQVJZID0gIkQtQnVzIG1lc3NhZ2UgYnVzIgotREVTQ1JJUFRJT04gPSAiRC1CdXMgaXMgYSBtZXNzYWdlIGJ1cyBzeXN0ZW0sIGEgc2ltcGxlIHdheSBmb3IgYXBwbGljYXRpb25zIHRvIHRhbGsgdG8gb25lIGFub3RoZXIuIEluIGFkZGl0aW9uIHRvIGludGVycHJvY2VzcyBjb21tdW5pY2F0aW9uLCBELUJ1cyBoZWxwcyBjb29yZGluYXRlIHByb2Nlc3MgbGlmZWN5Y2xlOyBpdCBtYWtlcyBpdCBzaW1wbGUgYW5kIHJlbGlhYmxlIHRvIGNvZGUgYSBcInNpbmdsZSBpbnN0YW5jZVwiIGFwcGxpY2F0aW9uIG9yIGRhZW1vbiwgYW5kIHRvIGxhdW5jaCBhcHBsaWNhdGlvbnMgYW5kIGRhZW1vbnMgb24gZGVtYW5kIHdoZW4gdGhlaXIgc2VydmljZXMgYXJlIG5lZWRlZC4iCi1IT01FUEFHRSA9ICJodHRwOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmciCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIkFGTC0yIHwgR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTBkZGVkM2I1ODE0OGYzZjFmZDgwNGIyNjM1NGFmM2UgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZGJ1cy9kYnVzLmg7YmVnaW5saW5lPTY7ZW5kbGluZT0yMDttZDU9Nzc1NWM5ZDdhYmNjZDVkYmQyNWE2YTk3NDUzOGJiM2MiCi1ERVBFTkRTID0gImV4cGF0IHZpcnR1YWwvbGliaW50bCIKLVJERVBFTkRTX2RidXNfY2xhc3MtbmF0aXZlID0gIiIKLVJERVBFTkRTX2RidXNfY2xhc3MtbmF0aXZlc2RrID0gIiIKLVBBQ0tBR0VTICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3B0ZXN0JywgJyR7UE59LXB0ZXN0JywgJycsIGQpfSIKLUFMTE9XX0VNUFRZX2RidXMtcHRlc3QgPSAiMSIKLVJERVBFTkRTX2RidXMtcHRlc3RfY2xhc3MtdGFyZ2V0ID0gImRidXMtdGVzdC1wdGVzdCIKLQotU1JDX1VSSSA9ICJodHRwOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvZGJ1cy9kYnVzLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly90bXBkaXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGJ1cy0xLmluaXQgXAotICAgICAgICAgICBmaWxlOi8vb3MtdGVzdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jbGVhci1ndWlkX2Zyb21fc2VydmVyLWlmLXNlbmRfbmVnb3RpYXRlX3VuaXhfZi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1zdXBwb3J0LWxhcmdlLWZpbGUtZm9yLXN0YXQ2NC5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyNmQwY2YzYTFjOTc4MmNiMGUzNDIxMDFmMDQ1MDQ0MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiNWZlZmEwOGE3N2VkZDc2Y2Q2NGQ4NzJkYjk0OWVlYmMwMmNmNmYzZjhiZTgyZTRiYmM2NDE3NDJhZjVkMzVmIgotCi1pbmhlcml0IHVzZXJhZGQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IHVwZGF0ZS1yYy5kIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi1JTklUU0NSSVBUX05BTUUgPSAiZGJ1cy0xIgotSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMDIgNSAzIDIgLiBzdG9wIDIwIDAgMSA2IC4iCi0KLXB5dGhvbiBfX2Fub255bW91cygpIHsKLSAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsIFRydWUsIEZhbHNlLCBkKToKLSAgICAgICAgZC5zZXRWYXIoIklOSElCSVRfVVBEQVRFUkNEX0JCQ0xBU1MiLCAiMSIpCi19Ci0KLVVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCi1HUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItciBuZXRkZXYiCi1VU0VSQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIC0taG9tZSAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9kYnVzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLS1uby1jcmVhdGUtaG9tZSAtLXNoZWxsIC9iaW4vZmFsc2UgXAotICAgICAgICAgICAgICAgICAgICAgICAtLXVzZXItZ3JvdXAgbWVzc2FnZWJ1cyIKLQotQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vZGJ1cy0xL3N5c3RlbS5jb25mICR7c3lzY29uZmRpcn0vZGJ1cy0xL3Nlc3Npb24uY29uZiIKLQotREVCSUFOTkFNRV8ke1BOfSA9ICJkYnVzLTEiCi0KLVBBQ0tBR0VTID0rICIke1BOfS1saWIiCi0KLU9MRFBLR05BTUUgPSAiZGJ1cy14MTEiCi1PTERQS0dOQU1FX2NsYXNzLW5hdGl2ZXNkayA9ICIiCi0KLSMgZm9yIGNvbXBhdGliaWxpdHkKLVJQUk9WSURFU18ke1BOfSA9ICIke09MRFBLR05BTUV9IgotUlJFUExBQ0VTXyR7UE59ICs9ICIke09MRFBLR05BTUV9IgotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vZGJ1cy1kYWVtb24qIFwKLSAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLXV1aWRnZW4gXAotICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtY2xlYW51cC1zb2NrZXRzIFwKLSAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLXNlbmQgXAotICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtbW9uaXRvciBcCi0gICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy1sYXVuY2ggXAotICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtcnVuLXNlc3Npb24gXAotICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtdXBkYXRlLWFjdGl2YXRpb24tZW52aXJvbm1lbnQgXAotICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9kYnVzKiBcCi0gICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9IFwKLSAgICAgICAgICAgICAgICR7bG9jYWxzdGF0ZWRpcn0gXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMgXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzIFwKLSAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3Nlc3Npb24uZCBcCi0gICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zZXNzaW9uLmNvbmYgXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQgXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmNvbmYgXAotICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSBcCi0gICAgICAgICAgICAgICAke3N5c3RlbWRfdXNlcl91bml0ZGlyfSBcCi0iCi1GSUxFU18ke1BOfS1saWIgPSAiJHtsaWJkaXJ9L2xpYiouc28uKiIKLVJSRUNPTU1FTkRTXyR7UE59LWxpYiA9ICIke1BOfSIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2RidXMtMS4wL2luY2x1ZGUgJHtiaW5kaXJ9L2RidXMtdGVzdC10b29sIgotCi1wa2dfcG9zdGluc3RfZGJ1cygpIHsKLQkjIElmIGJvdGggc3lzdGVtZCBhbmQgc3lzdmluaXQgYXJlIGVuYWJsZWQsIG1hc2sgdGhlIGRidXMtMSBpbml0IHNjcmlwdAotICAgICAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCBzeXN2aW5pdCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCi0JCWlmIFsgLW4gIiREIiBdOyB0aGVuCi0JCQlPUFRTPSItLXJvb3Q9JEQiCi0JCWZpCi0JCXN5c3RlbWN0bCAkT1BUUyBtYXNrIGRidXMtMS5zZXJ2aWNlCi0JZmkKLQotCWlmIFsgLXogIiREIiBdICYmIFsgLWUgL2V0Yy9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2ggXSA7IHRoZW4KLQkJL2V0Yy9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2ggdXBkYXRlCi0JZmkKLX0KLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS10ZXN0cyBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLXhtbC1kb2NzIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtZG94eWdlbi1kb2NzIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtbGliYXVkaXQgXAotICAgICAgICAgICAgICAgICIKLQotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0tZGlzYWJsZS1zZWxpbnV4IgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3N5c3RlbWQnLCAnJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2xhcmdlZmlsZScsICdsYXJnZWZpbGUnLCAnJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEnLCAnJywgZCl9IgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiIgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPSAiIgotCi1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0tZW5hYmxlLXN5c3RlbWQgLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0sLS1kaXNhYmxlLXN5c3RlbWQgLS13aXRob3V0LXN5c3RlbWRzeXN0ZW11bml0ZGlyLHN5c3RlbWQiCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLS13aXRoLXggLS1lbmFibGUteDExLWF1dG9sYXVuY2gsLS13aXRob3V0LXggLS1kaXNhYmxlLXgxMS1hdXRvbGF1bmNoLCB2aXJ0dWFsL2xpYngxMSBsaWJzbSIKLVBBQ0tBR0VDT05GSUdbbGFyZ2VmaWxlXSA9ICItLWVuYWJsZS1sYXJnZWZpbGUsLS1kaXNhYmxlLWxhcmdlZmlsZSwsIgotUEFDS0FHRUNPTkZJR1t1c2VyLXNlc3Npb25dID0gIi0tZW5hYmxlLXVzZXItc2Vzc2lvbiAtLXdpdGgtc3lzdGVtZHVzZXJ1bml0ZGlyPSR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9LC0tZGlzYWJsZS11c2VyLXNlc3Npb24iCi0KLWRvX2luc3RhbGwoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotCQlzZWQgJ3M6QGJpbmRpckA6JHtiaW5kaXJ9OicgPCAke1dPUktESVJ9L2RidXMtMS5pbml0ID4ke1dPUktESVJ9L2RidXMtMS5pbml0LnNoCi0JCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2RidXMtMS5pbml0LnNoICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9kYnVzLTEKLQlmaQotCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLQkJZm9yIGkgaW4gZGJ1cy50YXJnZXQud2FudHMgc29ja2V0cy50YXJnZXQud2FudHMgbXVsdGktdXNlci50YXJnZXQud2FudHM7IGRvIFwKLQkJCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vJGk7IGRvbmUKLQkJaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vYnVzL2RidXMuc2VydmljZSAke0J9L2J1cy9kYnVzLnNvY2tldCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS8KLQkJY2QgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vZGJ1cy50YXJnZXQud2FudHMvCi0JCWxuIC1mcyAuLi9kYnVzLnNvY2tldCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9kYnVzLnRhcmdldC53YW50cy9kYnVzLnNvY2tldAotCQlsbiAtZnMgLi4vZGJ1cy5zb2NrZXQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc29ja2V0cy50YXJnZXQud2FudHMvZGJ1cy5zb2NrZXQKLQkJbG4gLWZzIC4uL2RidXMuc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9tdWx0aS11c2VyLnRhcmdldC53YW50cy9kYnVzLnNlcnZpY2UKLQlmaQotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcwotCWVjaG8gImQgbWVzc2FnZWJ1cyBtZXNzYWdlYnVzIDA3NTUgJHtsb2NhbHN0YXRlZGlyfS9ydW4vZGJ1cyBub25lIiBcCi0JICAgICA+ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzk5X2RidXMKLQotCi0JbWtkaXIgLXAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2RidXMKLQotCWNob3duIG1lc3NhZ2VidXM6bWVzc2FnZWJ1cyAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvZGJ1cwotCi0JY2hvd24gcm9vdDptZXNzYWdlYnVzICR7RH0ke2xpYmV4ZWNkaXJ9L2RidXMtZGFlbW9uLWxhdW5jaC1oZWxwZXIKLQljaG1vZCA0NzU1ICR7RH0ke2xpYmV4ZWNkaXJ9L2RidXMtZGFlbW9uLWxhdW5jaC1oZWxwZXIKLQotCSMgUmVtb3ZlIFJlZCBIYXQgaW5pdHNjcmlwdAotCXJtIC1yZiAke0R9JHtzeXNjb25mZGlyfS9yYy5kCi0KLQkjIFJlbW92ZSBlbXB0eSB0ZXN0ZXhlYyBkaXJlY3RvcnkgYXMgd2UgZG9uJ3QgYnVpbGQgdGVzdHMKLQlybSAtcmYgJHtEfSR7bGliZGlyfS9kYnVzLTEuMC90ZXN0Ci0KLQkjIFJlbW92ZSAvdmFyL3J1biBhcyBpdCBpcyBjcmVhdGVkIG9uIHN0YXJ0dXAKLQlybSAtcmYgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuCi19Ci0KLWRvX2luc3RhbGxfY2xhc3MtbmF0aXZlKCkgewotCWF1dG90b29sc19kb19pbnN0YWxsCi0KLQkjIGZvciBkYnVzLWdsaWItbmF0aXZlIGludHJvc3BlY3Rpb24gZ2VuZXJhdGlvbgotCWluc3RhbGwgLWQgJHtEfSR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZGJ1cy8KLQkjIE4uQi4gaXMgYmVsb3cgaW5zdGFsbCBhY3R1YWxseSByZXF1aXJlZD8KLQlpbnN0YWxsIC1tIDA2NDQgYnVzL3Nlc3Npb24uY29uZiAke0R9JHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9kYnVzL3Nlc3Npb24uY29uZgotCi0JIyBkYnVzLWdsaWItbmF0aXZlIGFuZCBkYnVzLWdsaWIgbmVlZCB0aGlzIHhtbCBmaWxlCi0JLi9idXMvZGJ1cy1kYWVtb24gLS1pbnRyb3NwZWN0ID4gJHtEfSR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZGJ1cy9kYnVzLWJ1cy1pbnRyb3NwZWN0LnhtbAotCQotCSMgZGJ1cy1sYXVuY2ggaGFzIG5vIFggc3VwcG9ydCBzbyBsZXRzIG5vdCBpbnN0YWxsIGl0IGluIGNhc2UgdGhlIGhvc3QKLQkjIGhhcyBhIG1vcmUgZmVhdHVyZWQgYW5kIHVzZWZ1bCB2ZXJzaW9uCi0Jcm0gLWYgJHtEfSR7YmluZGlyfS9kYnVzLWxhdW5jaAotfQotCi1kb19pbnN0YWxsX2NsYXNzLW5hdGl2ZXNkaygpIHsKLQlhdXRvdG9vbHNfZG9faW5zdGFsbAotCi0JIyBkYnVzLWxhdW5jaCBoYXMgbm8gWCBzdXBwb3J0IHNvIGxldHMgbm90IGluc3RhbGwgaXQgaW4gY2FzZSB0aGUgaG9zdAotCSMgaGFzIGEgbW9yZSBmZWF0dXJlZCBhbmQgdXNlZnVsIHZlcnNpb24KLQlybSAtZiAke0R9JHtiaW5kaXJ9L2RidXMtbGF1bmNoCi0KLQkjIFJlbW92ZSAvdmFyL3J1biB0byBhdm9pZCBRQSBlcnJvcgotCXJtIC1yZiAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4KLX0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotSU5TQU5FX1NLSVBfJHtQTn0tcHRlc3QgKz0gImJ1aWxkLWRlcHMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyLmluYwppbmRleCAxZGNlMmE1Li5iZGE3ZWI4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci5pbmMKQEAgLTE3LDYgKzE3LDcgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDMtY29uZmlndXJlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDQtZml4LTJrYi1rZXlzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDctZHJvcGJlYXItZml4LWZvci14MzItYWJpLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1saWJ0b21jcnlwdC1saWJ0b21tYXRoLW9yZGVyaW5nLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2luaXQgXAogICAgICAgICAgICBmaWxlOi8vZHJvcGJlYXJrZXkuc2VydmljZSBcCiAgICAgICAgICAgIGZpbGU6Ly9kcm9wYmVhckAuc2VydmljZSBcCkBAIC00NCw5ICs0NSwxMiBAQAogU0JJTkNPTU1BTkRTID0gImRyb3BiZWFyIGRyb3BiZWFya2V5IGRyb3BiZWFyY29udmVydCIKIEJJTkNPTU1BTkRTID0gImRiY2xpZW50IHNzaCBzY3AiCiBFWFRSQV9PRU1BS0UgPSAnTVVMVEk9MSBTQ1BQUk9HUkVTUz0xIFBST0dSQU1TPSIke1NCSU5DT01NQU5EU30gJHtCSU5DT01NQU5EU30iJworCitQQUNLQUdFQ09ORklHID89ICIiCitQQUNLQUdFQ09ORklHW3N5c3RlbS1saWJ0b21dID0gIi0tZGlzYWJsZS1idW5kbGVkLWxpYnRvbSwtLWVuYWJsZS1idW5kbGVkLWxpYnRvbSxsaWJ0b21tYXRoIGxpYnRvbWNyeXB0IgorCiBFWFRSQV9PRUNPTkYgKz0gIlwKICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICctLWVuYWJsZS1wYW0nLCAnLS1kaXNhYmxlLXBhbScsIGQpfSIKLUNGTEFHUyArPSAiLURTRlRQU0VSVkVSX1BBVEg9XFwiJHtsaWJkaXJ9L29wZW5zc2gvc2Z0cC1zZXJ2ZXJcXCIiCiAKIGRvX2luc3RhbGwoKSB7CiAJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfSBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvMDAwNy1kcm9wYmVhci1maXgtZm9yLXgzMi1hYmkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvMDAwNy1kcm9wYmVhci1maXgtZm9yLXgzMi1hYmkucGF0Y2gKaW5kZXggYjQ1MDEyMS4uNjBiMzAyYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyLzAwMDctZHJvcGJlYXItZml4LWZvci14MzItYWJpLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci8wMDA3LWRyb3BiZWFyLWZpeC1mb3IteDMyLWFiaS5wYXRjaApAQCAtMTAsNyArMTAsNyBAQAogMjAxMy8wNS8yMwogUmVjZWl2ZWQgdGhpcyBmaXggZnJvbSBIIEogTHUuCiAKLVNpZ25lZC1PZmYtQnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgogCiAjIEhHIGNoYW5nZXNldCBwYXRjaAogIyBVc2VyIEguSi4gTHUgPGhqbC50b29sc0BnbWFpbC5jb20+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvZml4LWxpYnRvbWNyeXB0LWxpYnRvbW1hdGgtb3JkZXJpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvZml4LWxpYnRvbWNyeXB0LWxpYnRvbW1hdGgtb3JkZXJpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGU5MzBmMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci9maXgtbGlidG9tY3J5cHQtbGlidG9tbWF0aC1vcmRlcmluZy5wYXRjaApAQCAtMCwwICsxLDQ4IEBACitGcm9tIDJmZDhkMmFlZGFkMGM1MGNkZjFlNDNlZGQyMzg3ODc0YjcyMGFkNGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgorRGF0ZTogRnJpLCAxNiBTZXAgMjAxNiAxMjoxODoyMyAtMDcwMAorU3ViamVjdDogW1BBVENIXSBmaXggbGlidG9tY3J5cHQvbGlidG9tbWF0aCBvcmRlcmluZworCitUbyBwcmV2ZW50IGJ1aWxkIGZhaWx1cmVzIHdoZW4gdXNpbmcgc3lzdGVtIGxpYnRvbSBsaWJyYXJpZXMgYW5kCitsaW5raW5nIHdpdGggLS1hcy1uZWVkZWQsIExJQlRPTV9MSUJTIHNob3VsZCBiZSBpbiB0aGUgb3JkZXIKKy1sdG9tY3J5cHQgLWx0b21tYXRoLCBub3QgdGhlIG90aGVyIHdheSBhcm91bmQsIGllIGxpYnMgc2hvdWxkIGJlCitwcmVwZW5kZWQgdG8gTElCVE9NX0xJQlMgYXMgdGhleSBhcmUgZm91bmQsIG5vdCBhcHBlbmRlZC4KKworTm90ZSB0aGF0IExJQlRPTV9MSUJTIGlzIG5vdCB1c2VkIHdoZW4gbGlua2luZyB3aXRoIHRoZSBidW5kbGVkCitsaWJ0b20gbGlicy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCA4ICsrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggYjZhYmU0Yy4uODViYjhiYyAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMzkwLDE2ICszOTAsMTYgQEAgQUNfQVJHX0VOQUJMRShidW5kbGVkLWxpYnRvbSwKKyAJCQlBQ19NU0dfTk9USUNFKEZvcmNpbmcgYnVuZGxlZCBsaWJ0b20qKQorIAkJZWxzZQorIAkJCUJVTkRMRURfTElCVE9NPTAKKy0JCQlBQ19DSEVDS19MSUIodG9tbWF0aCwgbXBfZXhwdG1vZCwgTElCVE9NX0xJQlM9IiRMSUJUT01fTElCUyAtbHRvbW1hdGgiLCAKKysJCQlBQ19DSEVDS19MSUIodG9tbWF0aCwgbXBfZXhwdG1vZCwgTElCVE9NX0xJQlM9Ii1sdG9tbWF0aCAkTElCVE9NX0xJQlMiLAorIAkJCQlbQUNfTVNHX0VSUk9SKFtNaXNzaW5nIHN5c3RlbSBsaWJ0b21tYXRoIGFuZCAtLWRpc2FibGUtYnVuZGxlZC1saWJ0b20gd2FzIHNwZWNpZmllZF0pXSApCistCQkJQUNfQ0hFQ0tfTElCKHRvbWNyeXB0LCByZWdpc3Rlcl9jaXBoZXIsIExJQlRPTV9MSUJTPSIkTElCVE9NX0xJQlMgLWx0b21jcnlwdCIsIAorKwkJCUFDX0NIRUNLX0xJQih0b21jcnlwdCwgcmVnaXN0ZXJfY2lwaGVyLCBMSUJUT01fTElCUz0iLWx0b21jcnlwdCAkTElCVE9NX0xJQlMiLAorIAkJCQlbQUNfTVNHX0VSUk9SKFtNaXNzaW5nIHN5c3RlbSBsaWJ0b21jcnlwdCBhbmQgLS1kaXNhYmxlLWJ1bmRsZWQtbGlidG9tIHdhcyBzcGVjaWZpZWRdKV0gKQorIAkJZmkKKyAJXSwKKyAJWworIAkJQlVORExFRF9MSUJUT009MAorLQkJQUNfQ0hFQ0tfTElCKHRvbW1hdGgsIG1wX2V4cHRtb2QsIExJQlRPTV9MSUJTPSIkTElCVE9NX0xJQlMgLWx0b21tYXRoIiwgQlVORExFRF9MSUJUT009MSkKKy0JCUFDX0NIRUNLX0xJQih0b21jcnlwdCwgcmVnaXN0ZXJfY2lwaGVyLCBMSUJUT01fTElCUz0iJExJQlRPTV9MSUJTIC1sdG9tY3J5cHQiLCBCVU5ETEVEX0xJQlRPTT0xKQorKwkJQUNfQ0hFQ0tfTElCKHRvbW1hdGgsIG1wX2V4cHRtb2QsIExJQlRPTV9MSUJTPSItbHRvbW1hdGggJExJQlRPTV9MSUJTIiwgQlVORExFRF9MSUJUT009MSkKKysJCUFDX0NIRUNLX0xJQih0b21jcnlwdCwgcmVnaXN0ZXJfY2lwaGVyLCBMSUJUT01fTElCUz0iLWx0b21jcnlwdCAkTElCVE9NX0xJQlMiLCBCVU5ETEVEX0xJQlRPTT0xKQorIAldCisgKQorIAorLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvaW5pdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci9pbml0CmluZGV4IGU4ZmVkM2YuLjQzNGJkNmIgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci9pbml0CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci9pbml0CkBAIC02MiwxMyArNjIsMTMgQEAKICAgICAgICAgaWYgWyAtZiAiJERST1BCRUFSX1JTQUtFWSIgLWEgISAtcyAiJERST1BCRUFSX1JTQUtFWSIgXTsgdGhlbgogICAgICAgICAgICAgICAgIHJtICREUk9QQkVBUl9SU0FLRVkgfHwgdHJ1ZQogICAgICAgICBmaQotICAgICAgICB0ZXN0IC1mICREUk9QQkVBUl9SU0FLRVkgfHwgZHJvcGJlYXJrZXkgLXQgcnNhIC1mICREUk9QQkVBUl9SU0FLRVkKKyAgICAgICAgdGVzdCAtZiAkRFJPUEJFQVJfUlNBS0VZIHx8IGRyb3BiZWFya2V5IC10IHJzYSAtZiAkRFJPUEJFQVJfUlNBS0VZICREUk9QQkVBUl9SU0FLRVlfQVJHUwogCTs7CiAgICAgZHNhKQogICAgICAgICBpZiBbIC1mICIkRFJPUEJFQVJfRFNTS0VZIiAtYSAhIC1zICIkRFJPUEJFQVJfRFNTS0VZIiBdOyB0aGVuCiAgICAgICAgICAgICAgICAgcm0gJERST1BCRUFSX0RTU0tFWSB8fCB0cnVlCiAgICAgICAgIGZpCi0gICAgICAgIHRlc3QgLWYgJERST1BCRUFSX0RTU0tFWSB8fCBkcm9wYmVhcmtleSAtdCBkc3MgLWYgJERST1BCRUFSX0RTU0tFWQorICAgICAgICB0ZXN0IC1mICREUk9QQkVBUl9EU1NLRVkgfHwgZHJvcGJlYXJrZXkgLXQgZHNzIC1mICREUk9QQkVBUl9EU1NLRVkgJERST1BCRUFSX0RTU0tFWV9BUkdTCiAJOzsKICAgZXNhYwogZG9uZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyL3N1cHBvcnQtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyL3N1cHBvcnQtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmNmVmYjQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvc3VwcG9ydC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2gKQEAgLTAsMCArMSw0MyBAQAorRnJvbTogPT9VVEYtOD9xP0hlbnJpaz0yME5vcmRzdHI9QzM9QjZtPz0gPGhlbnJpa0BrbmMubnU+CitEYXRlOiBXZWQsIDExIE1heSAyMDE2IDEyOjM1OjA2ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIFN1cHBvcnQgb3V0LW9mLXRyZWUgYnVpbGRzIHVzaWduIGJ1bmRsZWQgbGlidG9tCisKK1doZW4gYnVpbGRpbmcgb3V0LW9mLXRyZWUgd2UgbmVlZCBib3RoIHNvdXJjZSBhbmQgZ2VuZXJhdGVkCitmb2xkZXJzIGluIGluY2x1ZGUgcGF0aHMgdG8gZmluZCBib3RoIGRpc3RyaWJ1dGVkIGFuZCBnZW5lcmF0ZWQKK2hlYWRlcnMuCisKKworCitTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorLS0tCisgbGlidG9tY3J5cHQvTWFrZWZpbGUuaW4gfCAyICstCisgbGlidG9tbWF0aC9NYWtlZmlsZS5pbiAgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJ0b21jcnlwdC9NYWtlZmlsZS5pbiBiL2xpYnRvbWNyeXB0L01ha2VmaWxlLmluCitpbmRleCAzMDU2ZWYwLi43OTcwNzAwIDEwMDY0NAorLS0tIGEvbGlidG9tY3J5cHQvTWFrZWZpbGUuaW4KKysrKyBiL2xpYnRvbWNyeXB0L01ha2VmaWxlLmluCitAQCAtMTksNyArMTksNyBAQCBzcmNkaXI9QHNyY2RpckAKKyAKKyAjIENvbXBpbGF0aW9uIGZsYWdzLiBOb3RlIHRoZSArPSBkb2VzIG5vdCB3cml0ZSBvdmVyIHRoZSB1c2VyJ3MgQ0ZMQUdTIQorICMgVGhlIHJlc3Qgb2YgdGhlIGZsYWdzIGNvbWUgZnJvbSB0aGUgcGFyZW50IERyb3BiZWFyIG1ha2VmaWxlCistQ0ZMQUdTICs9IC1jIC1JJChzcmNkaXIpL3NyYy9oZWFkZXJzLyAtSSQoc3JjZGlyKS8uLi8gLURMVENfU09VUkNFIC1JJChzcmNkaXIpLy4uL2xpYnRvbW1hdGgvCisrQ0ZMQUdTICs9IC1jIC1Jc3JjL2hlYWRlcnMvIC1JJChzcmNkaXIpL3NyYy9oZWFkZXJzLyAtSS4uLyAtSSQoc3JjZGlyKS8uLi8gLURMVENfU09VUkNFIC1JLi4vbGlidG9tbWF0aC8gLUkkKHNyY2RpcikvLi4vbGlidG9tbWF0aC8KKyAKKyAjIGFkZGl0aW9uYWwgd2FybmluZ3MgKG5ld2VyIEdDQyAzLjQgYW5kIGhpZ2hlcikKKyBpZmRlZiBHQ0NfMzQKK2RpZmYgLS1naXQgYS9saWJ0b21tYXRoL01ha2VmaWxlLmluIGIvbGlidG9tbWF0aC9NYWtlZmlsZS5pbgoraW5kZXggMDZhYmE2OC4uMDE5YzUwYiAxMDA2NDQKKy0tLSBhL2xpYnRvbW1hdGgvTWFrZWZpbGUuaW4KKysrKyBiL2xpYnRvbW1hdGgvTWFrZWZpbGUuaW4KK0BAIC05LDcgKzksNyBAQCBWUEFUSD1Ac3JjZGlyQAorIHNyY2Rpcj1Ac3JjZGlyQAorIAorICMgU28gdGhhdCBsaWJ0b21tYXRoIGNhbiBpbmNsdWRlIERyb3BiZWFyIGhlYWRlcnMgZm9yIG9wdGlvbnMgYW5kIG1fYnVybigpCistQ0ZMQUdTICs9IC1JJChzcmNkaXIpLy4uL2xpYnRvbWNyeXB0L3NyYy9oZWFkZXJzLyAtSSQoc3JjZGlyKS8uLi8KKytDRkxBR1MgKz0gLUkuIC1JJChzcmNkaXIpIC1JLi4vbGlidG9tY3J5cHQvc3JjL2hlYWRlcnMvIC1JJChzcmNkaXIpLy4uL2xpYnRvbWNyeXB0L3NyYy9oZWFkZXJzLyAtSS4uLyAtSSQoc3JjZGlyKS8uLi8KKyAKKyBpZm5kZWYgSUdOT1JFX1NQRUVECisgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXJfMjAxNS43MS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhcl8yMDE1LjcxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MzMyNTc5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhcl8yMDE1LjcxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1yZXF1aXJlIGRyb3BiZWFyLmluYwotCi1TUkNfVVJJW21kNXN1bV0gPSAiMmNjYzBhMmYzZTM3Y2EyMjFkYjEyYzVhZjZhODgxMzciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzc2MjE0MTY5YzBlMTg3ZWU5ZjQ4YWUxYTk5YjNmODM1MDE2YWQ1Yjk4ZWRlNGJmZDFjZjU4MWRlYmE3ODNhZiIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyXzIwMTYuNzQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXJfMjAxNi43NC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzAyMDk3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyXzIwMTYuNzQuYmIKQEAgLTAsMCArMSw3IEBACityZXF1aXJlIGRyb3BiZWFyLmluYworCitTUkNfVVJJICs9ICJmaWxlOi8vc3VwcG9ydC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI5YWQwMTcyNzMxZTBmMTY2MjM5Mzc4MDQ2NDNiNWJkOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyNzIwZWE1NGVkMDA5YWY4MTI3MDFiY2MyOTBhMmE2MDFkNWMxMDdkMTI5OTNlNWQ5MmMwZjVmODFmNzE4ODkxIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXQtMi4xLjAvYXV0b3Rvb2xzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0LTIuMS4wL2F1dG90b29scy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGU1OTk2OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXQtMi4xLjAvYXV0b3Rvb2xzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotQXZvaWQgdXNpbmcgZXhwYXQncyBtNCBmaWxlcwotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW090aGVyXQotV29ya2Fyb3VuZCBzcGVjaWZpYyB0byBvdXIgYnVpbGQgc3lzdGVtLgotCi1TaWduZWQtb2ZmLWJ5OiBLZXZpbiBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgotCi1VcGRhdGVkIHRvIGFwcGx5IG92ZXIgZXhwYXQgMi4xLjAKLQotU2lnbmVkLW9mZi1ieTogTWFya28gTGluZHF2aXN0IDxjYXpmaTc0QGdtYWlsLmNvbT4KLQotZGlmZiAtTnVyZCBleHBhdC0yLjEuMC9jb25maWd1cmUuaW4gZXhwYXQtMi4xLjAvY29uZmlndXJlLmluCi0tLS0gZXhwYXQtMi4xLjAvY29uZmlndXJlLmluCTIwMTItMDMtMDQgMDE6NDU6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZXhwYXQtMi4xLjAvY29uZmlndXJlLmluCTIwMTItMDUtMTAgMjE6MDQ6NDQuMDAwMDAwMDAwICswMzAwCi1AQCAtNTEsOCArNTEsNiBAQAotIAotIEFDX0NPTkZJR19IRUFERVIoZXhwYXRfY29uZmlnLmgpCi0gCi0tc2luY2x1ZGUoY29uZnRvb2xzL2FjX2NfYmlnZW5kaWFuX2Nyb3NzLm00KQotLQotIEFDX0xJQlRPT0xfV0lOMzJfRExMCi0gQUNfUFJPR19MSUJUT09MCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXQtMi4xLjAvZXhwYXQtQ1ZFLTIwMTUtMTI4My5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdC0yLjEuMC9leHBhdC1DVkUtMjAxNS0xMjgzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDBhY2I2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdC0yLjEuMC9leHBhdC1DVkUtMjAxNS0xMjgzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotTXVsdGlwbGUgaW50ZWdlciBvdmVyZmxvd3MgaW4gdGhlIFhNTF9HZXRCdWZmZXIgZnVuY3Rpb24gaW4gRXhwYXQgCi10aHJvdWdoIDIuMS4wLCBhbGxvdyByZW1vdGUgYXR0YWNrZXJzIHRvIGNhdXNlIGEgZGVuaWFsIG9mIHNlcnZpY2UgCi0oaGVhcC1iYXNlZCBidWZmZXIgb3ZlcmZsb3cpIG9yIHBvc3NpYmx5IGhhdmUgdW5zcGVjaWZpZWQgb3RoZXIgCi1pbXBhY3QgdmlhIGNyYWZ0ZWQgWE1MIGRhdGEuCi0KLUNWU1N2MjogIChBVjpOL0FDOk0vQXU6Ti9DOlAvSTpQL0E6UCkKLQotQ1ZFOiBDVkUtMjAxNS0xMjgzCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IEVyaWMgUmFobSA8ZXJhaG1AbW96aWxsYS5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBaaGl4aW9uZyBDaGkgPHpoaXhpb25nLmNoaUB3aW5kaXJ2ZXIuY29tPgotCi1JbmRleDogZXhwYXQtMi4xLjAvbGliL3htbHBhcnNlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBleHBhdC0yLjEuMC5vcmlnL2xpYi94bWxwYXJzZS5jCTIwMTItMDMtMTEgMTM6MTM6MTIuMDAwMDAwMDAwICswODAwCi0rKysgZXhwYXQtMi4xLjAvbGliL3htbHBhcnNlLmMJMjAxNS0xMi0yMyAxMDoyOTowNy4zNDczNjEzMjkgKzA4MDAKLUBAIC0xNjc4LDYgKzE2NzgsMTIgQEAKLSB2b2lkICogWE1MQ0FMTAotIFhNTF9HZXRCdWZmZXIoWE1MX1BhcnNlciBwYXJzZXIsIGludCBsZW4pCi0gewotKy8qIEJFR0lOIE1PWklMTEEgQ0hBTkdFIChzYW5pdHkgY2hlY2sgbGVuKSAqLwotKyAgaWYgKGxlbiA8IDApIHsKLSsgICAgZXJyb3JDb2RlID0gWE1MX0VSUk9SX05PX01FTU9SWTsKLSsgICAgcmV0dXJuIE5VTEw7Ci0rICB9Ci0rLyogRU5EIE1PWklMTEEgQ0hBTkdFICovCi0gICBzd2l0Y2ggKHBzX3BhcnNpbmcpIHsKLSAgIGNhc2UgWE1MX1NVU1BFTkRFRDoKLSAgICAgZXJyb3JDb2RlID0gWE1MX0VSUk9SX1NVU1BFTkRFRDsKLUBAIC0xNjg5LDggKzE2OTUsMTMgQEAKLSAgIH0KLSAKLSAgIGlmIChsZW4gPiBidWZmZXJMaW0gLSBidWZmZXJFbmQpIHsKLS0gICAgLyogRklYTUUgYXZvaWQgaW50ZWdlciBvdmVyZmxvdyAqLwotICAgICBpbnQgbmVlZGVkU2l6ZSA9IGxlbiArIChpbnQpKGJ1ZmZlckVuZCAtIGJ1ZmZlclB0cik7Ci0rLyogQkVHSU4gTU9aSUxMQSBDSEFOR0UgKHNhbml0eSBjaGVjayBuZWVkZWRTaXplKSAqLwotKyAgICBpZiAobmVlZGVkU2l6ZSA8IDApIHsKLSsgICAgICBlcnJvckNvZGUgPSBYTUxfRVJST1JfTk9fTUVNT1JZOwotKyAgICAgIHJldHVybiBOVUxMOwotKyAgICB9Ci0rLyogRU5EIE1PWklMTEEgQ0hBTkdFICovCi0gI2lmZGVmIFhNTF9DT05URVhUX0JZVEVTCi0gICAgIGludCBrZWVwID0gKGludCkoYnVmZmVyUHRyIC0gYnVmZmVyKTsKLSAKLUBAIC0xNzE5LDcgKzE3MzAsMTUgQEAKLSAgICAgICAgIGJ1ZmZlclNpemUgPSBJTklUX0JVRkZFUl9TSVpFOwotICAgICAgIGRvIHsKLSAgICAgICAgIGJ1ZmZlclNpemUgKj0gMjsKLS0gICAgICB9IHdoaWxlIChidWZmZXJTaXplIDwgbmVlZGVkU2l6ZSk7Ci0rLyogQkVHSU4gTU9aSUxMQSBDSEFOR0UgKHByZXZlbnQgaW5maW5pdGUgbG9vcCBvbiBvdmVyZmxvdykgKi8KLSsgICAgICB9IHdoaWxlIChidWZmZXJTaXplIDwgbmVlZGVkU2l6ZSAmJiBidWZmZXJTaXplID4gMCk7Ci0rLyogRU5EIE1PWklMTEEgQ0hBTkdFICovCi0rLyogQkVHSU4gTU9aSUxMQSBDSEFOR0UgKHNhbml0eSBjaGVjayBidWZmZXJTaXplKSAqLwotKyAgICAgIGlmIChidWZmZXJTaXplIDw9IDApIHsKLSsgICAgICAgIGVycm9yQ29kZSA9IFhNTF9FUlJPUl9OT19NRU1PUlk7Ci0rICAgICAgICByZXR1cm4gTlVMTDsKLSsgICAgICB9Ci0rLyogRU5EIE1PWklMTEEgQ0hBTkdFICovCi0gICAgICAgbmV3QnVmID0gKGNoYXIgKilNQUxMT0MoYnVmZmVyU2l6ZSk7Ci0gICAgICAgaWYgKG5ld0J1ZiA9PSAwKSB7Ci0gICAgICAgICBlcnJvckNvZGUgPSBYTUxfRVJST1JfTk9fTUVNT1JZOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdC5pbmMKaW5kZXggNGJkNjBhMi4uZmU5ZDdlNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXQuaW5jCkBAIC00LDkgKzQsOCBAQAogU0VDVElPTiA9ICJsaWJzIgogTElDRU5TRSA9ICJNSVQiCiAKLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2V4cGF0L2V4cGF0LSR7UFZ9LnRhci5neiBcCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9leHBhdC9leHBhdC0ke1BWfS50YXIuYnoyIFwKICAgICAgICAgICAgZmlsZTovL2F1dG90b29scy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9leHBhdC1DVkUtMjAxNS0xMjgzLnBhdGNoIFwKIAkgICIKIAogaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UgZ3ppcG5hdGl2ZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0L2F1dG90b29scy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdC9hdXRvdG9vbHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2QzYzViYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdC9hdXRvdG9vbHMucGF0Y2gKQEAgLTAsMCArMSwyNCBAQAorQXZvaWQgdXNpbmcgZXhwYXQncyBtNCBmaWxlcworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW090aGVyXQorV29ya2Fyb3VuZCBzcGVjaWZpYyB0byBvdXIgYnVpbGQgc3lzdGVtLgorCitTaWduZWQtb2ZmLWJ5OiBLZXZpbiBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgorCitVcGRhdGVkIHRvIGFwcGx5IG92ZXIgZXhwYXQgMi4xLjAKKworU2lnbmVkLW9mZi1ieTogTWFya28gTGluZHF2aXN0IDxjYXpmaTc0QGdtYWlsLmNvbT4KKworZGlmZiAtTnVyZCBleHBhdC0yLjEuMC9jb25maWd1cmUuaW4gZXhwYXQtMi4xLjAvY29uZmlndXJlLmluCistLS0gZXhwYXQtMi4xLjAvY29uZmlndXJlLmFjCTIwMTItMDMtMDQgMDE6NDU6NTMuMDAwMDAwMDAwICswMjAwCisrKysgZXhwYXQtMi4xLjAvY29uZmlndXJlLmFjCTIwMTItMDUtMTAgMjE6MDQ6NDQuMDAwMDAwMDAwICswMzAwCitAQCAtNTEsOCArNTEsNiBAQAorIAorIEFDX0NPTkZJR19IRUFERVIoZXhwYXRfY29uZmlnLmgpCisgCistc2luY2x1ZGUoY29uZnRvb2xzL2FjX2NfYmlnZW5kaWFuX2Nyb3NzLm00KQorLQorIEFDX0xJQlRPT0xfV0lOMzJfRExMCisgQUNfUFJPR19MSUJUT09MCisgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXRfMi4xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXRfMi4xLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5NTg3NDIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0XzIuMS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1yZXF1aXJlIGV4cGF0LmluYwotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MWI3MWY2ODE3MTNkMTI1NmUxYzIzYjA4OTA5MjA4NzQiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkZDdkYWI3YTVmZWE5N2QyYTZhNDNmNTExNDQ5YjdjZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4MjM3MDU0NzJmODE2ZGYyMWM4ZjZhYTAyNmRkMTYyYjI4MDgwNjgzOGJiNTViMzQzMmIwZmIxZmNjYTdlYjg2IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0XzIuMi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0XzIuMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmMjFhMTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXRfMi4yLjAuYmIKQEAgLTAsMCArMSw1IEBACityZXF1aXJlIGV4cGF0LmluYworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OWMzZWU1NTljNmY5ZGNlZTEwNDNlYWQxMTIxMzlmNGYiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyZjQ3ODQxYzgyOWZhY2IzNDZlYjZlM2ZhYjUyMTJlMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkOWU1MGZmMmQxOWIzNTM4YmQyMTI3OTAyYTg5OTg3NDc0ZTFhNGRiOGU0M2E2NmE0ZDFhNzEyYWI5YTUwNGZmIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Z0cy9mdHMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZnRzL2Z0cy5iYgppbmRleCBjMzAxNzIwLi45ZDgyMzBmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZnRzL2Z0cy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZnRzL2Z0cy5iYgpAQCAtMSw3ICsxLDcgQEAKICMgQ29weXJpZ2h0IChDKSAyMDE1IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiAjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUIGZvciB0aGUgdGVybXMpCiAKLURFU0NSSVBUSU9OID0gImtlaXRoIGJvc3RpYydzIFBPU0lYIGZpbGUgdHJlZSBzdHJlYW0gb3BlcmF0aW9ucyBsaWJyYXJ5IgorU1VNTUFSWSA9ICJQT1NJWCBmaWxlIHRyZWUgc3RyZWFtIG9wZXJhdGlvbnMgbGlicmFyeSIKIEhPTUVQQUdFID0gImh0dHBzOi8vc2l0ZXMuZ29vZ2xlLmNvbS9hL2Jvc3RpYy5jb20va2VpdGhib3N0aWMiCiBMSUNFTlNFID0gIkJTRC00LUNsYXVzZSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2Z0cy5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MzY7bWQ1PTI1MzJlZGRiM2QxYTIxOTA1NzIzYTQwMTFlYzRlMDg1IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE2LjEvZml4X2FjbG9jYWxfdmVyc2lvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4xNi4xL2ZpeF9hY2xvY2FsX3ZlcnNpb24ucGF0Y2gKaW5kZXggNzI5M2Y1Yi4uNDlhMTBmNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE2LjEvZml4X2FjbG9jYWxfdmVyc2lvbi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMTYuMS9maXhfYWNsb2NhbF92ZXJzaW9uLnBhdGNoCkBAIC01LDcgKzUsNyBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCiAKLVNpZ25lZC1vZmYtYnkgU2F1bCBXb2xkIDxzZ3dAbGludXguaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogU2F1bCBXb2xkIDxzZ3dAbGludXguaW50ZWwuY29tPgogCiBJbmRleDogZ2V0dGV4dC0wLjE2LjEvYXV0b2NvbmYtbGliLWxpbmsvbTQvbGliLWxpbmsubTQKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4xNi4xL2ZpeF9nbnVfc291cmNlX2NpcmN1bGFyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE2LjEvZml4X2dudV9zb3VyY2VfY2lyY3VsYXIucGF0Y2gKaW5kZXggMDY4NjE0OS4uZmQ1ZmVlYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE2LjEvZml4X2dudV9zb3VyY2VfY2lyY3VsYXIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE2LjEvZml4X2dudV9zb3VyY2VfY2lyY3VsYXIucGF0Y2gKQEAgLTYsNyArNiw3IEBACiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbGljZW5zaW5nXQogCi1TaWduZWQtb2ZmLWJ5IFNhdWwgV29sZCA8c2d3QGxpbnV4LmludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFNhdWwgV29sZCA8c2d3QGxpbnV4LmludGVsLmNvbT4KIAogZGlmZiAtcnUgZ2V0dGV4dC0wLjE2LjEvZ2V0dGV4dC1ydW50aW1lL2dudWxpYi1tNC9leHRlbnNpb25zLm00IGdldHRleHQucGF0Y2hlZC9nZXR0ZXh0LXJ1bnRpbWUvZ251bGliLW00L2V4dGVuc2lvbnMubTQKIC0tLSBnZXR0ZXh0LTAuMTYuMS9nZXR0ZXh0LXJ1bnRpbWUvZ251bGliLW00L2V4dGVuc2lvbnMubTQJMjAwNi0xMS0yNyAwOToxNDozOC4wMDAwMDAwMDAgLTA4MDAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4xOS42L2FkZC13aXRoLWJpc29ubG9jYWxlZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS9hZGQtd2l0aC1iaXNvbmxvY2FsZWRpci5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjYvYWRkLXdpdGgtYmlzb25sb2NhbGVkaXIucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4xOS44LjEvYWRkLXdpdGgtYmlzb25sb2NhbGVkaXIucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4xOS42L3BhcmFsbGVsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS9wYXJhbGxlbC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjYvcGFyYWxsZWwucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4xOS44LjEvcGFyYWxsZWwucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjE5LjQvQ09QWUlORyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjE5LjQvQ09QWUlORwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGQxMWQxZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4xOS40L0NPUFlJTkcKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLWRubCBDb3B5cmlnaHQgKEMpIDE5OTUtMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLWRubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCi1kbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMTkuNC9NYWtlZmlsZS5pbi5pbiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjE5LjQvTWFrZWZpbGUuaW4uaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5MDZiYTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMTkuNC9NYWtlZmlsZS5pbi5pbgorKysgL2Rldi9udWxsCkBAIC0xLDQ2NSArMCwwIEBACi0jIE1ha2VmaWxlIGZvciBQTyBkaXJlY3RvcnkgaW4gYW55IHBhY2thZ2UgdXNpbmcgR05VIGdldHRleHQuCi0jIENvcHlyaWdodCAoQykgMTk5NS0xOTk3LCAyMDAwLTIwMDcsIDIwMDktMjAxMCBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBnbnUuYWkubWl0LmVkdT4KLSMKLSMgVGhpcyBmaWxlIGNhbiBiZSBjb3BpZWQgYW5kIHVzZWQgZnJlZWx5IHdpdGhvdXQgcmVzdHJpY3Rpb25zLiAgSXQgY2FuCi0jIGJlIHVzZWQgaW4gcHJvamVjdHMgd2hpY2ggYXJlIG5vdCBhdmFpbGFibGUgdW5kZXIgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwotIyBMaWNlbnNlIGJ1dCB3aGljaCBzdGlsbCB3YW50IHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlIEdOVSBnZXR0ZXh0Ci0jIGZ1bmN0aW9uYWxpdHkuCi0jIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCBjb2RlIG9mIEdOVSBnZXR0ZXh0IGlzIGNvdmVyZWQgYnkgdGhlIEdOVQotIyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFuZCBpcyAqbm90KiBpbiB0aGUgcHVibGljIGRvbWFpbi4KLSMKLSMgT3JpZ2luOiBnZXR0ZXh0LTAuMTkKLUdFVFRFWFRfTUFDUk9fVkVSU0lPTiA9IDAuMTkKLQotUEFDS0FHRSA9IEBQQUNLQUdFQAotVkVSU0lPTiA9IEBWRVJTSU9OQAotUEFDS0FHRV9CVUdSRVBPUlQgPSBAUEFDS0FHRV9CVUdSRVBPUlRACi0KLVNFRCA9IEBTRURACi1TSEVMTCA9IC9iaW4vc2gKLUBTRVRfTUFLRUAKLQotc3JjZGlyID0gQHNyY2RpckAKLXRvcF9zcmNkaXIgPSBAdG9wX3NyY2RpckAKLVZQQVRIID0gQHNyY2RpckAKLQotcHJlZml4ID0gQHByZWZpeEAKLWV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZGF0YXJvb3RkaXIgPSBAZGF0YXJvb3RkaXJACi1kYXRhZGlyID0gQGRhdGFkaXJACi1sb2NhbGVkaXIgPSBAbG9jYWxlZGlyQAotZ2V0dGV4dHNyY2RpciA9ICQoZGF0YWRpcikvZ2V0dGV4dC9wbwotCi1JTlNUQUxMID0gQElOU1RBTExACi1JTlNUQUxMX0RBVEEgPSBASU5TVEFMTF9EQVRBQAotCi1NS0RJUl9QID0gQE1LRElSX1BACi0KLUdNU0dGTVRfID0gQEdNU0dGTVRACi1HTVNHRk1UX25vID0gQEdNU0dGTVRACi1HTVNHRk1UX3llcyA9IEBHTVNHRk1UXzAxNUAKLUdNU0dGTVQgPSAkKEdNU0dGTVRfJChVU0VfTVNHQ1RYVCkpCi1NU0dGTVRfID0gQE1TR0ZNVEAKLU1TR0ZNVF9ubyA9IEBNU0dGTVRACi1NU0dGTVRfeWVzID0gQE1TR0ZNVF8wMTVACi1NU0dGTVQgPSAkKE1TR0ZNVF8kKFVTRV9NU0dDVFhUKSkKLVhHRVRURVhUXyA9IEBYR0VUVEVYVEAKLVhHRVRURVhUX25vID0gQFhHRVRURVhUQAotWEdFVFRFWFRfeWVzID0gQFhHRVRURVhUXzAxNUAKLVhHRVRURVhUID0gJChYR0VUVEVYVF8kKFVTRV9NU0dDVFhUKSkKLU1TR01FUkdFID0gbXNnbWVyZ2UKLU1TR01FUkdFX1VQREFURSA9IEBNU0dNRVJHRUAgLS11cGRhdGUKLU1TR0lOSVQgPSBtc2dpbml0Ci1NU0dDT05WID0gbXNnY29udgotTVNHRklMVEVSID0gbXNnZmlsdGVyCi0KLVBPRklMRVMgPSBAUE9GSUxFU0AKLUdNT0ZJTEVTID0gQEdNT0ZJTEVTQAotVVBEQVRFUE9GSUxFUyA9IEBVUERBVEVQT0ZJTEVTQAotRFVNTVlQT0ZJTEVTID0gQERVTU1ZUE9GSUxFU0AKLURJU1RGSUxFUy5jb21tb24gPSBNYWtlZmlsZS5pbi5pbiByZW1vdmUtcG90Y2RhdGUuc2luIFwKLSQoRElTVEZJTEVTLmNvbW1vbi5leHRyYTEpICQoRElTVEZJTEVTLmNvbW1vbi5leHRyYTIpICQoRElTVEZJTEVTLmNvbW1vbi5leHRyYTMpCi1ESVNURklMRVMgPSAkKERJU1RGSUxFUy5jb21tb24pIE1ha2V2YXJzIFBPVEZJTEVTLmluIFwKLSQoUE9GSUxFUykgJChHTU9GSUxFUykgXAotJChESVNURklMRVMuZXh0cmExKSAkKERJU1RGSUxFUy5leHRyYTIpICQoRElTVEZJTEVTLmV4dHJhMykKLQotUE9URklMRVMgPSBcCi0KLUNBVEFMT0dTID0gQENBVEFMT0dTQAotCi1QT0ZJTEVTREVQU18gPSAkKHNyY2RpcikvJChET01BSU4pLnBvdAotUE9GSUxFU0RFUFNfeWVzID0gJChQT0ZJTEVTREVQU18pCi1QT0ZJTEVTREVQU19ubyA9Ci1QT0ZJTEVTREVQUyA9ICQoUE9GSUxFU0RFUFNfJChQT19ERVBFTkRTX09OX1BPVCkpCi0KLURJU1RGSUxFU0RFUFNfID0gdXBkYXRlLXBvCi1ESVNURklMRVNERVBTX3llcyA9ICQoRElTVEZJTEVTREVQU18pCi1ESVNURklMRVNERVBTX25vID0KLURJU1RGSUxFU0RFUFMgPSAkKERJU1RGSUxFU0RFUFNfJChESVNUX0RFUEVORFNfT05fVVBEQVRFX1BPKSkKLQotIyBNYWtldmFycyBnZXRzIGluc2VydGVkIGhlcmUuIChEb24ndCByZW1vdmUgdGhpcyBsaW5lISkKLQotLlNVRkZJWEVTOgotLlNVRkZJWEVTOiAucG8gLmdtbyAubW8gLnNlZCAuc2luIC5ub3AgLnBvLWNyZWF0ZSAucG8tdXBkYXRlCi0KLS5wby5tbzoKLQlAZWNobyAiJChNU0dGTVQpIC1jIC1vICRAICQ8IjsgXAotCSQoTVNHRk1UKSAtYyAtbyB0LSRAICQ8ICYmIG12IHQtJEAgJEAKLQotLnBvLmdtbzoKLQlAbGFuZz1gZWNobyAkKiB8IHNlZCAtZSAncywuKi8sLCdgOyBcCi0JdGVzdCAiJChzcmNkaXIpIiA9IC4gJiYgY2RjbWQ9IiIgfHwgY2RjbWQ9ImNkICQoc3JjZGlyKSAmJiAiOyBcCi0JZWNobyAiJCR7Y2RjbWR9cm0gLWYgJCR7bGFuZ30uZ21vICYmICQoR01TR0ZNVCkgLWMgLS1zdGF0aXN0aWNzIC0tdmVyYm9zZSAtbyAkJHtsYW5nfS5nbW8gJCR7bGFuZ30ucG8iOyBcCi0JY2QgJChzcmNkaXIpICYmIHJtIC1mICQke2xhbmd9LmdtbyAmJiAkKEdNU0dGTVQpIC1jIC0tc3RhdGlzdGljcyAtLXZlcmJvc2UgLW8gdC0kJHtsYW5nfS5nbW8gJCR7bGFuZ30ucG8gJiYgbXYgdC0kJHtsYW5nfS5nbW8gJCR7bGFuZ30uZ21vCi0KLS5zaW4uc2VkOgotCXNlZCAtZSAnL14jL2QnICQ8ID4gdC0kQAotCW12IHQtJEAgJEAKLQotCi1hbGw6IGFsbC1AVVNFX05MU0AKLQotYWxsLXllczogc3RhbXAtcG8KLWFsbC1ubzoKLQotIyBFbnN1cmUgdGhhdCB0aGUgZ2V0dGV4dCBtYWNyb3MgYW5kIHRoaXMgTWFrZWZpbGUuaW4uaW4gYXJlIGluIHN5bmMuCi1DSEVDS19NQUNST19WRVJTSU9OID0gXAotCXRlc3QgIiQoR0VUVEVYVF9NQUNST19WRVJTSU9OKSIgPSAiQEdFVFRFWFRfTUFDUk9fVkVSU0lPTkAiIFwKLQkgIHx8IHsgZWNobyAiKioqIGVycm9yOiBnZXR0ZXh0IGluZnJhc3RydWN0dXJlIG1pc21hdGNoOiB1c2luZyBhIE1ha2VmaWxlLmluLmluIGZyb20gZ2V0dGV4dCB2ZXJzaW9uICQoR0VUVEVYVF9NQUNST19WRVJTSU9OKSBidXQgdGhlIGF1dG9jb25mIG1hY3JvcyBhcmUgZnJvbSBnZXR0ZXh0IHZlcnNpb24gQEdFVFRFWFRfTUFDUk9fVkVSU0lPTkAiIDE+JjI7IFwKLQkgICAgICAgZXhpdCAxOyBcCi0JICAgICB9Ci0KLSMgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QgaXMgb25seSBjcmVhdGVkIHdoZW4gbmVlZGVkLiBXaGVuIHhnZXR0ZXh0IGZpbmRzIG5vCi0jIGludGVybmF0aW9uYWxpemVkIG1lc3NhZ2VzLCBubyAkKHNyY2RpcikvJChET01BSU4pLnBvdCBpcyBjcmVhdGVkIChiZWNhdXNlCi0jIHdlIGRvbid0IHdhbnQgdG8gYm90aGVyIHRyYW5zbGF0b3JzIHdpdGggZW1wdHkgUE9UIGZpbGVzKS4gV2UgYXNzdW1lIHRoYXQKLSMgTElOR1VBUyBpcyBlbXB0eSBpbiB0aGlzIGNhc2UsIGkuZS4gJChQT0ZJTEVTKSBhbmQgJChHTU9GSUxFUykgYXJlIGVtcHR5LgotIyBJbiB0aGlzIGNhc2UsIHN0YW1wLXBvIGlzIGEgbm9wIChpLmUuIGEgcGhvbnkgdGFyZ2V0KS4KLQotIyBzdGFtcC1wbyBpcyBhIHRpbWVzdGFtcCBkZW5vdGluZyB0aGUgbGFzdCB0aW1lIGF0IHdoaWNoIHRoZSBDQVRBTE9HUyBoYXZlCi0jIGJlZW4gbG9vc2VseSB1cGRhdGVkLiBJdHMgcHVycG9zZSBpcyB0aGF0IHdoZW4gYSBkZXZlbG9wZXIgb3IgdHJhbnNsYXRvcgotIyBjaGVja3Mgb3V0IHRoZSBwYWNrYWdlIHZpYSBDVlMsIGFuZCB0aGUgJChET01BSU4pLnBvdCBmaWxlIGlzIG5vdCBpbiBDVlMsCi0jICJtYWtlIiB3aWxsIHVwZGF0ZSB0aGUgJChET01BSU4pLnBvdCBhbmQgdGhlICQoQ0FUQUxPR1MpLCBidXQgc3Vic2VxdWVudAotIyBpbnZvY2F0aW9ucyBvZiAibWFrZSIgd2lsbCBkbyBub3RoaW5nLiBUaGlzIHRpbWVzdGFtcCB3b3VsZCBub3QgYmUgbmVjZXNzYXJ5Ci0jIGlmIHVwZGF0aW5nIHRoZSAkKENBVEFMT0dTKSB3b3VsZCBhbHdheXMgdG91Y2ggdGhlbTsgaG93ZXZlciwgdGhlIHJ1bGUgZm9yCi0jICQoUE9GSUxFUykgaGFzIGJlZW4gZGVzaWduZWQgdG8gbm90IHRvdWNoIGZpbGVzIHRoYXQgZG9uJ3QgbmVlZCB0byBiZQotIyBjaGFuZ2VkLgotc3RhbXAtcG86ICQoc3JjZGlyKS8kKERPTUFJTikucG90Ci0JQCQoQ0hFQ0tfTUFDUk9fVkVSU0lPTikKLQl0ZXN0ICEgLWYgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QgfHwgXAotCSAgdGVzdCAteiAiJChHTU9GSUxFUykiIHx8ICQoTUFLRSkgJChHTU9GSUxFUykKLQlAdGVzdCAhIC1mICQoc3JjZGlyKS8kKERPTUFJTikucG90IHx8IHsgXAotCSAgZWNobyAidG91Y2ggc3RhbXAtcG8iICYmIFwKLQkgIGVjaG8gdGltZXN0YW1wID4gc3RhbXAtcG9UICYmIFwKLQkgIG12IHN0YW1wLXBvVCBzdGFtcC1wbzsgXAotCX0KLQotIyBOb3RlOiBUYXJnZXQgJ2FsbCcgbXVzdCBub3QgZGVwZW5kIG9uIHRhcmdldCAnJChET01BSU4pLnBvdC11cGRhdGUnLAotIyBvdGhlcndpc2UgcGFja2FnZXMgbGlrZSBHQ0MgY2FuIG5vdCBiZSBidWlsdCBpZiBvbmx5IHBhcnRzIG9mIHRoZSBzb3VyY2UKLSMgaGF2ZSBiZWVuIGRvd25sb2FkZWQuCi0KLSMgVGhpcyB0YXJnZXQgcmVidWlsZHMgJChET01BSU4pLnBvdDsgaXQgaXMgYW4gZXhwZW5zaXZlIG9wZXJhdGlvbi4KLSMgTm90ZSB0aGF0ICQoRE9NQUlOKS5wb3QgaXMgbm90IHRvdWNoZWQgaWYgaXQgZG9lc24ndCBuZWVkIHRvIGJlIGNoYW5nZWQuCi0jIFRoZSBkZXRlcm1pbmF0aW9uIG9mIHdoZXRoZXIgdGhlIHBhY2thZ2UgeHl6IGlzIGEgR05VIG9uZSBpcyBiYXNlZCBvbiB0aGUKLSMgaGV1cmlzdGljIHdoZXRoZXIgc29tZSBmaWxlIGluIHRoZSB0b3AgbGV2ZWwgZGlyZWN0b3J5IG1lbnRpb25zICJHTlUgeHl6Ii4KLSMgSWYgR05VICdmaW5kJyBpcyBhdmFpbGFibGUsIHdlIGF2b2lkIGdyZXBwaW5nIHRocm91Z2ggbW9uc3RlciBmaWxlcy4KLSQoRE9NQUlOKS5wb3QtdXBkYXRlOiAkKFBPVEZJTEVTKSAkKHNyY2RpcikvUE9URklMRVMuaW4gcmVtb3ZlLXBvdGNkYXRlLnNlZAotCXBhY2thZ2VfZ251PSIkKFBBQ0tBR0VfR05VKSI7IFwKLQl0ZXN0IC1uICIkJHBhY2thZ2VfZ251IiB8fCB7IFwKLQkgIGlmIHsgaWYgKExDX0FMTD1DIGZpbmQgLS12ZXJzaW9uKSAyPi9kZXYvbnVsbCB8IGdyZXAgR05VID4vZGV2L251bGw7IHRoZW4gXAotCQkgTENfQUxMPUMgZmluZCAtTCAkKHRvcF9zcmNkaXIpIC1tYXhkZXB0aCAxIC10eXBlIGYgXAotCQkJICAgICAgIC1zaXplIC0xMDAwMDAwMGMgLWV4ZWMgZ3JlcCAnR05VIEBQQUNLQUdFQCcgXAotCQkJICAgICAgIC9kZXYvbnVsbCAne30nICc7JyAyPi9kZXYvbnVsbDsgXAotCSAgICAgICBlbHNlIFwKLQkJIExDX0FMTD1DIGdyZXAgJ0dOVSBAUEFDS0FHRUAnICQodG9wX3NyY2RpcikvKiAyPi9kZXYvbnVsbDsgXAotCSAgICAgICBmaTsgXAotCSAgICAgfSB8IGdyZXAgLXYgJ2xpYnRvb2w6JyA+L2Rldi9udWxsOyB0aGVuIFwKLQkgICAgIHBhY2thZ2VfZ251PXllczsgXAotCSAgIGVsc2UgXAotCSAgICAgcGFja2FnZV9nbnU9bm87IFwKLQkgICBmaTsgXAotCX07IFwKLQlpZiB0ZXN0ICIkJHBhY2thZ2VfZ251IiA9ICJ5ZXMiOyB0aGVuIFwKLQkgIHBhY2thZ2VfcHJlZml4PSdHTlUgJzsgXAotCWVsc2UgXAotCSAgcGFja2FnZV9wcmVmaXg9Jyc7IFwKLQlmaTsgXAotCWlmIHRlc3QgLW4gJyQoTVNHSURfQlVHU19BRERSRVNTKScgfHwgdGVzdCAnJChQQUNLQUdFX0JVR1JFUE9SVCknID0gJ0AnUEFDS0FHRV9CVUdSRVBPUlQnQCc7IHRoZW4gXAotCSAgbXNnaWRfYnVnc19hZGRyZXNzPSckKE1TR0lEX0JVR1NfQUREUkVTUyknOyBcCi0JZWxzZSBcCi0JICBtc2dpZF9idWdzX2FkZHJlc3M9JyQoUEFDS0FHRV9CVUdSRVBPUlQpJzsgXAotCWZpOyBcCi0JY2FzZSBgJChYR0VUVEVYVCkgLS12ZXJzaW9uIHwgc2VkIDFxIHwgc2VkIC1lICdzLF5bXjAtOV0qLCwnYCBpbiBcCi0JICAnJyB8IDAuWzAtOV0gfCAwLlswLTldLiogfCAwLjFbMC01XSB8IDAuMVswLTVdLiogfCAwLjE2IHwgMC4xNi5bMC0xXSopIFwKLQkgICAgJChYR0VUVEVYVCkgLS1kZWZhdWx0LWRvbWFpbj0kKERPTUFJTikgLS1kaXJlY3Rvcnk9JCh0b3Bfc3JjZGlyKSBcCi0JICAgICAgLS1hZGQtY29tbWVudHM9VFJBTlNMQVRPUlM6ICQoWEdFVFRFWFRfT1BUSU9OUykgQFhHRVRURVhUX0VYVFJBX09QVElPTlNAIFwKLQkgICAgICAtLWZpbGVzLWZyb209JChzcmNkaXIpL1BPVEZJTEVTLmluIFwKLQkgICAgICAtLWNvcHlyaWdodC1ob2xkZXI9JyQoQ09QWVJJR0hUX0hPTERFUiknIFwKLQkgICAgICAtLW1zZ2lkLWJ1Z3MtYWRkcmVzcz0iJCRtc2dpZF9idWdzX2FkZHJlc3MiIFwKLQkgICAgOzsgXAotCSAgKikgXAotCSAgICAkKFhHRVRURVhUKSAtLWRlZmF1bHQtZG9tYWluPSQoRE9NQUlOKSAtLWRpcmVjdG9yeT0kKHRvcF9zcmNkaXIpIFwKLQkgICAgICAtLWFkZC1jb21tZW50cz1UUkFOU0xBVE9SUzogJChYR0VUVEVYVF9PUFRJT05TKSBAWEdFVFRFWFRfRVhUUkFfT1BUSU9OU0AgXAotCSAgICAgIC0tZmlsZXMtZnJvbT0kKHNyY2RpcikvUE9URklMRVMuaW4gXAotCSAgICAgIC0tY29weXJpZ2h0LWhvbGRlcj0nJChDT1BZUklHSFRfSE9MREVSKScgXAotCSAgICAgIC0tcGFja2FnZS1uYW1lPSIkJHtwYWNrYWdlX3ByZWZpeH1AUEFDS0FHRUAiIFwKLQkgICAgICAtLXBhY2thZ2UtdmVyc2lvbj0nQFZFUlNJT05AJyBcCi0JICAgICAgLS1tc2dpZC1idWdzLWFkZHJlc3M9IiQkbXNnaWRfYnVnc19hZGRyZXNzIiBcCi0JICAgIDs7IFwKLQllc2FjCi0JdGVzdCAhIC1mICQoRE9NQUlOKS5wbyB8fCB7IFwKLQkgIGlmIHRlc3QgLWYgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3Q7IHRoZW4gXAotCSAgICBzZWQgLWYgcmVtb3ZlLXBvdGNkYXRlLnNlZCA8ICQoc3JjZGlyKS8kKERPTUFJTikucG90ID4gJChET01BSU4pLjFwbyAmJiBcCi0JICAgIHNlZCAtZiByZW1vdmUtcG90Y2RhdGUuc2VkIDwgJChET01BSU4pLnBvID4gJChET01BSU4pLjJwbyAmJiBcCi0JICAgIGlmIGNtcCAkKERPTUFJTikuMXBvICQoRE9NQUlOKS4ycG8gPi9kZXYvbnVsbCAyPiYxOyB0aGVuIFwKLQkgICAgICBybSAtZiAkKERPTUFJTikuMXBvICQoRE9NQUlOKS4ycG8gJChET01BSU4pLnBvOyBcCi0JICAgIGVsc2UgXAotCSAgICAgIHJtIC1mICQoRE9NQUlOKS4xcG8gJChET01BSU4pLjJwbyAkKHNyY2RpcikvJChET01BSU4pLnBvdCAmJiBcCi0JICAgICAgbXYgJChET01BSU4pLnBvICQoc3JjZGlyKS8kKERPTUFJTikucG90OyBcCi0JICAgIGZpOyBcCi0JICBlbHNlIFwKLQkgICAgbXYgJChET01BSU4pLnBvICQoc3JjZGlyKS8kKERPTUFJTikucG90OyBcCi0JICBmaTsgXAotCX0KLQotIyBUaGlzIHJ1bGUgaGFzIG5vIGRlcGVuZGVuY2llczogd2UgZG9uJ3QgbmVlZCB0byB1cGRhdGUgJChET01BSU4pLnBvdCBhdAotIyBldmVyeSAibWFrZSIgaW52b2NhdGlvbiwgb25seSBjcmVhdGUgaXQgd2hlbiBpdCBpcyBtaXNzaW5nLgotIyBPbmx5ICJtYWtlICQoRE9NQUlOKS5wb3QtdXBkYXRlIiBvciAibWFrZSBkaXN0IiB3aWxsIGZvcmNlIGFuIHVwZGF0ZS4KLSQoc3JjZGlyKS8kKERPTUFJTikucG90OgotCSQoTUFLRSkgJChET01BSU4pLnBvdC11cGRhdGUKLQotIyBUaGlzIHRhcmdldCByZWJ1aWxkcyBhIFBPIGZpbGUgaWYgJChET01BSU4pLnBvdCBoYXMgY2hhbmdlZC4KLSMgTm90ZSB0aGF0IGEgUE8gZmlsZSBpcyBub3QgdG91Y2hlZCBpZiBpdCBkb2Vzbid0IG5lZWQgdG8gYmUgY2hhbmdlZC4KLSQoUE9GSUxFUyk6ICQoUE9GSUxFU0RFUFMpCi0JQGxhbmc9YGVjaG8gJEAgfCBzZWQgLWUgJ3MsLiovLCwnIC1lICdzL1wucG8kJC8vJ2A7IFwKLQlpZiB0ZXN0IC1mICIkKHNyY2RpcikvJCR7bGFuZ30ucG8iOyB0aGVuIFwKLQkgIHRlc3QgLWYgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QgfHwgJChNQUtFKSAkKHNyY2RpcikvJChET01BSU4pLnBvdDsgXAotCSAgdGVzdCAiJChzcmNkaXIpIiA9IC4gJiYgY2RjbWQ9IiIgfHwgY2RjbWQ9ImNkICQoc3JjZGlyKSAmJiAiOyBcCi0JICBlY2hvICIkJHtjZGNtZH0kKE1TR01FUkdFX1VQREFURSkgJChNU0dNRVJHRV9PUFRJT05TKSAtLWxhbmc9JCR7bGFuZ30gJCR7bGFuZ30ucG8gJChET01BSU4pLnBvdCI7IFwKLQkgIGNkICQoc3JjZGlyKSBcCi0JICAgICYmIHsgY2FzZSBgJChNU0dNRVJHRV9VUERBVEUpIC0tdmVyc2lvbiB8IHNlZCAxcSB8IHNlZCAtZSAncyxeW14wLTldKiwsJ2AgaW4gXAotCSAgICAgICAgICAgJycgfCAwLlswLTldIHwgMC5bMC05XS4qIHwgMC4xWzAtN10gfCAwLjFbMC03XS4qKSBcCi0JICAgICAgICAgICAgICQoTVNHTUVSR0VfVVBEQVRFKSAkKE1TR01FUkdFX09QVElPTlMpICQke2xhbmd9LnBvICQoRE9NQUlOKS5wb3Q7OyBcCi0JICAgICAgICAgICAqKSBcCi0JICAgICAgICAgICAgICQoTVNHTUVSR0VfVVBEQVRFKSAkKE1TR01FUkdFX09QVElPTlMpIC0tbGFuZz0kJHtsYW5nfSAkJHtsYW5nfS5wbyAkKERPTUFJTikucG90OzsgXAotCSAgICAgICAgIGVzYWM7IFwKLQkgICAgICAgfTsgXAotCWVsc2UgXAotCSAgJChNQUtFKSAkJHtsYW5nfS5wby1jcmVhdGU7IFwKLQlmaQotCi0KLWluc3RhbGw6IGluc3RhbGwtZXhlYyBpbnN0YWxsLWRhdGEKLWluc3RhbGwtZXhlYzoKLWluc3RhbGwtZGF0YTogaW5zdGFsbC1kYXRhLUBVU0VfTkxTQAotCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiOyB0aGVuIFwKLQkgICQoTUtESVJfUCkgJChERVNURElSKSQoZ2V0dGV4dHNyY2Rpcik7IFwKLQkgIGZvciBmaWxlIGluICQoRElTVEZJTEVTLmNvbW1vbikgTWFrZXZhcnMudGVtcGxhdGU7IGRvIFwKLQkgICAgJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS8kJGZpbGUgXAotCQkJICAgICQoREVTVERJUikkKGdldHRleHRzcmNkaXIpLyQkZmlsZTsgXAotCSAgZG9uZTsgXAotCSAgZm9yIGZpbGUgaW4gTWFrZXZhcnM7IGRvIFwKLQkgICAgcm0gLWYgJChERVNURElSKSQoZ2V0dGV4dHNyY2RpcikvJCRmaWxlOyBcCi0JICBkb25lOyBcCi0JZWxzZSBcCi0JICA6IDsgXAotCWZpCi1pbnN0YWxsLWRhdGEtbm86IGFsbAotaW5zdGFsbC1kYXRhLXllczogYWxsCi0JQGNhdGFsb2dzPSckKENBVEFMT0dTKSc7IFwKLQlmb3IgY2F0IGluICQkY2F0YWxvZ3M7IGRvIFwKLQkgIGNhdD1gYmFzZW5hbWUgJCRjYXRgOyBcCi0JICBsYW5nPWBlY2hvICQkY2F0IHwgc2VkIC1lICdzL1wuZ21vJCQvLydgOyBcCi0JICBkaXI9JChsb2NhbGVkaXIpLyQkbGFuZy9MQ19NRVNTQUdFUzsgXAotCSAgJChNS0RJUl9QKSAkKERFU1RESVIpJCRkaXI7IFwKLQkgIGlmIHRlc3QgLXIgJCRjYXQ7IHRoZW4gcmVhbGNhdD0kJGNhdDsgZWxzZSByZWFsY2F0PSQoc3JjZGlyKS8kJGNhdDsgZmk7IFwKLQkgICQoSU5TVEFMTF9EQVRBKSAkJHJlYWxjYXQgJChERVNURElSKSQkZGlyLyQoRE9NQUlOKS5tbzsgXAotCSAgZWNobyAiaW5zdGFsbGluZyAkJHJlYWxjYXQgYXMgJChERVNURElSKSQkZGlyLyQoRE9NQUlOKS5tbyI7IFwKLQkgIGZvciBsYyBpbiAnJyAkKEVYVFJBX0xPQ0FMRV9DQVRFR09SSUVTKTsgZG8gXAotCSAgICBpZiB0ZXN0IC1uICIkJGxjIjsgdGhlbiBcCi0JICAgICAgaWYgKGNkICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nICYmIExDX0FMTD1DIGxzIC1sIC1kICQkbGMgMj4vZGV2L251bGwpIHwgZ3JlcCAnIC0+ICcgPi9kZXYvbnVsbDsgdGhlbiBcCi0JICAgICAgICBsaW5rPWBjZCAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZyAmJiBMQ19BTEw9QyBscyAtbCAtZCAkJGxjIHwgc2VkIC1lICdzL14uKiAtPiAvLydgOyBcCi0JICAgICAgICBtdiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMub2xkOyBcCi0JICAgICAgICBta2RpciAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjOyBcCi0JICAgICAgICAoY2QgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy5vbGQgJiYgXAotCSAgICAgICAgIGZvciBmaWxlIGluICo7IGRvIFwKLQkgICAgICAgICAgIGlmIHRlc3QgLWYgJCRmaWxlOyB0aGVuIFwKLQkgICAgICAgICAgICAgbG4gLXMgLi4vJCRsaW5rLyQkZmlsZSAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLyQkZmlsZTsgXAotCSAgICAgICAgICAgZmk7IFwKLQkgICAgICAgICBkb25lKTsgXAotCSAgICAgICAgcm0gLWYgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy5vbGQ7IFwKLQkgICAgICBlbHNlIFwKLQkgICAgICAgIGlmIHRlc3QgLWQgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYzsgdGhlbiBcCi0JICAgICAgICAgIDo7IFwKLQkgICAgICAgIGVsc2UgXAotCSAgICAgICAgICBybSAtZiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjOyBcCi0JICAgICAgICAgIG1rZGlyICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGM7IFwKLQkgICAgICAgIGZpOyBcCi0JICAgICAgZmk7IFwKLQkgICAgICBybSAtZiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLyQoRE9NQUlOKS5tbzsgXAotCSAgICAgIGxuIC1zIC4uL0xDX01FU1NBR0VTLyQoRE9NQUlOKS5tbyAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLyQoRE9NQUlOKS5tbyAyPi9kZXYvbnVsbCB8fCBcCi0JICAgICAgbG4gJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvTENfTUVTU0FHRVMvJChET01BSU4pLm1vICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMvJChET01BSU4pLm1vIDI+L2Rldi9udWxsIHx8IFwKLQkgICAgICBjcCAtcCAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy9MQ19NRVNTQUdFUy8kKERPTUFJTikubW8gJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy8kKERPTUFJTikubW87IFwKLQkgICAgICBlY2hvICJpbnN0YWxsaW5nICQkcmVhbGNhdCBsaW5rIGFzICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMvJChET01BSU4pLm1vIjsgXAotCSAgICBmaTsgXAotCSAgZG9uZTsgXAotCWRvbmUKLQotaW5zdGFsbC1zdHJpcDogaW5zdGFsbAotCi1pbnN0YWxsZGlyczogaW5zdGFsbGRpcnMtZXhlYyBpbnN0YWxsZGlycy1kYXRhCi1pbnN0YWxsZGlycy1leGVjOgotaW5zdGFsbGRpcnMtZGF0YTogaW5zdGFsbGRpcnMtZGF0YS1AVVNFX05MU0AKLQlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIjsgdGhlbiBcCi0JICAkKE1LRElSX1ApICQoREVTVERJUikkKGdldHRleHRzcmNkaXIpOyBcCi0JZWxzZSBcCi0JICA6IDsgXAotCWZpCi1pbnN0YWxsZGlycy1kYXRhLW5vOgotaW5zdGFsbGRpcnMtZGF0YS15ZXM6Ci0JQGNhdGFsb2dzPSckKENBVEFMT0dTKSc7IFwKLQlmb3IgY2F0IGluICQkY2F0YWxvZ3M7IGRvIFwKLQkgIGNhdD1gYmFzZW5hbWUgJCRjYXRgOyBcCi0JICBsYW5nPWBlY2hvICQkY2F0IHwgc2VkIC1lICdzL1wuZ21vJCQvLydgOyBcCi0JICBkaXI9JChsb2NhbGVkaXIpLyQkbGFuZy9MQ19NRVNTQUdFUzsgXAotCSAgJChNS0RJUl9QKSAkKERFU1RESVIpJCRkaXI7IFwKLQkgIGZvciBsYyBpbiAnJyAkKEVYVFJBX0xPQ0FMRV9DQVRFR09SSUVTKTsgZG8gXAotCSAgICBpZiB0ZXN0IC1uICIkJGxjIjsgdGhlbiBcCi0JICAgICAgaWYgKGNkICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nICYmIExDX0FMTD1DIGxzIC1sIC1kICQkbGMgMj4vZGV2L251bGwpIHwgZ3JlcCAnIC0+ICcgPi9kZXYvbnVsbDsgdGhlbiBcCi0JICAgICAgICBsaW5rPWBjZCAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZyAmJiBMQ19BTEw9QyBscyAtbCAtZCAkJGxjIHwgc2VkIC1lICdzL14uKiAtPiAvLydgOyBcCi0JICAgICAgICBtdiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMub2xkOyBcCi0JICAgICAgICBta2RpciAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjOyBcCi0JICAgICAgICAoY2QgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy5vbGQgJiYgXAotCSAgICAgICAgIGZvciBmaWxlIGluICo7IGRvIFwKLQkgICAgICAgICAgIGlmIHRlc3QgLWYgJCRmaWxlOyB0aGVuIFwKLQkgICAgICAgICAgICAgbG4gLXMgLi4vJCRsaW5rLyQkZmlsZSAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLyQkZmlsZTsgXAotCSAgICAgICAgICAgZmk7IFwKLQkgICAgICAgICBkb25lKTsgXAotCSAgICAgICAgcm0gLWYgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy5vbGQ7IFwKLQkgICAgICBlbHNlIFwKLQkgICAgICAgIGlmIHRlc3QgLWQgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYzsgdGhlbiBcCi0JICAgICAgICAgIDo7IFwKLQkgICAgICAgIGVsc2UgXAotCSAgICAgICAgICBybSAtZiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjOyBcCi0JICAgICAgICAgIG1rZGlyICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGM7IFwKLQkgICAgICAgIGZpOyBcCi0JICAgICAgZmk7IFwKLQkgICAgZmk7IFwKLQkgIGRvbmU7IFwKLQlkb25lCi0KLSMgRGVmaW5lIHRoaXMgYXMgZW1wdHkgdW50aWwgSSBmb3VuZCBhIHVzZWZ1bCBhcHBsaWNhdGlvbi4KLWluc3RhbGxjaGVjazoKLQotdW5pbnN0YWxsOiB1bmluc3RhbGwtZXhlYyB1bmluc3RhbGwtZGF0YQotdW5pbnN0YWxsLWV4ZWM6Ci11bmluc3RhbGwtZGF0YTogdW5pbnN0YWxsLWRhdGEtQFVTRV9OTFNACi0JaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC10b29scyI7IHRoZW4gXAotCSAgZm9yIGZpbGUgaW4gJChESVNURklMRVMuY29tbW9uKSBNYWtldmFycy50ZW1wbGF0ZTsgZG8gXAotCSAgICBybSAtZiAkKERFU1RESVIpJChnZXR0ZXh0c3JjZGlyKS8kJGZpbGU7IFwKLQkgIGRvbmU7IFwKLQllbHNlIFwKLQkgIDogOyBcCi0JZmkKLXVuaW5zdGFsbC1kYXRhLW5vOgotdW5pbnN0YWxsLWRhdGEteWVzOgotCWNhdGFsb2dzPSckKENBVEFMT0dTKSc7IFwKLQlmb3IgY2F0IGluICQkY2F0YWxvZ3M7IGRvIFwKLQkgIGNhdD1gYmFzZW5hbWUgJCRjYXRgOyBcCi0JICBsYW5nPWBlY2hvICQkY2F0IHwgc2VkIC1lICdzL1wuZ21vJCQvLydgOyBcCi0JICBmb3IgbGMgaW4gTENfTUVTU0FHRVMgJChFWFRSQV9MT0NBTEVfQ0FURUdPUklFUyk7IGRvIFwKLQkgICAgcm0gLWYgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy8kKERPTUFJTikubW87IFwKLQkgIGRvbmU7IFwKLQlkb25lCi0KLWNoZWNrOiBhbGwKLQotaW5mbyBkdmkgcHMgcGRmIGh0bWwgdGFncyBUQUdTIGN0YWdzIENUQUdTIElEOgotCi1tb3N0bHljbGVhbjoKLQlybSAtZiByZW1vdmUtcG90Y2RhdGUuc2VkCi0Jcm0gLWYgc3RhbXAtcG9UCi0Jcm0gLWYgY29yZSBjb3JlLiogJChET01BSU4pLnBvICQoRE9NQUlOKS4xcG8gJChET01BSU4pLjJwbyAqLm5ldy5wbwotCXJtIC1mciAqLm8KLQotY2xlYW46IG1vc3RseWNsZWFuCi0KLWRpc3RjbGVhbjogY2xlYW4KLQlybSAtZiBNYWtlZmlsZSBNYWtlZmlsZS5pbiBQT1RGSUxFUyAqLm1vCi0KLW1haW50YWluZXItY2xlYW46IGRpc3RjbGVhbgotCUBlY2hvICJUaGlzIGNvbW1hbmQgaXMgaW50ZW5kZWQgZm9yIG1haW50YWluZXJzIHRvIHVzZTsiCi0JQGVjaG8gIml0IGRlbGV0ZXMgZmlsZXMgdGhhdCBtYXkgcmVxdWlyZSBzcGVjaWFsIHRvb2xzIHRvIHJlYnVpbGQuIgotCXJtIC1mIHN0YW1wLXBvICQoR01PRklMRVMpCi0KLWRpc3RkaXIgPSAkKHRvcF9idWlsZGRpcikvJChQQUNLQUdFKS0kKFZFUlNJT04pLyQoc3ViZGlyKQotZGlzdCBkaXN0ZGlyOgotCXRlc3QgLXogIiQoRElTVEZJTEVTREVQUykiIHx8ICQoTUFLRSkgJChESVNURklMRVNERVBTKQotCUAkKE1BS0UpIGRpc3QyCi0jIFRoaXMgaXMgYSBzZXBhcmF0ZSB0YXJnZXQgYmVjYXVzZSAndXBkYXRlLXBvJyBtdXN0IGJlIGV4ZWN1dGVkIGJlZm9yZS4KLWRpc3QyOiBzdGFtcC1wbyAkKERJU1RGSUxFUykKLQlkaXN0cz0iJChESVNURklMRVMpIjsgXAotCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiOyB0aGVuIFwKLQkgIGRpc3RzPSIkJGRpc3RzIE1ha2V2YXJzLnRlbXBsYXRlIjsgXAotCWZpOyBcCi0JaWYgdGVzdCAtZiAkKHNyY2RpcikvJChET01BSU4pLnBvdDsgdGhlbiBcCi0JICBkaXN0cz0iJCRkaXN0cyAkKERPTUFJTikucG90IHN0YW1wLXBvIjsgXAotCWZpOyBcCi0JaWYgdGVzdCAtZiAkKHNyY2RpcikvQ2hhbmdlTG9nOyB0aGVuIFwKLQkgIGRpc3RzPSIkJGRpc3RzIENoYW5nZUxvZyI7IFwKLQlmaTsgXAotCWZvciBpIGluIDAgMSAyIDMgNCA1IDYgNyA4IDk7IGRvIFwKLQkgIGlmIHRlc3QgLWYgJChzcmNkaXIpL0NoYW5nZUxvZy4kJGk7IHRoZW4gXAotCSAgICBkaXN0cz0iJCRkaXN0cyBDaGFuZ2VMb2cuJCRpIjsgXAotCSAgZmk7IFwKLQlkb25lOyBcCi0JaWYgdGVzdCAtZiAkKHNyY2RpcikvTElOR1VBUzsgdGhlbiBkaXN0cz0iJCRkaXN0cyBMSU5HVUFTIjsgZmk7IFwKLQlmb3IgZmlsZSBpbiAkJGRpc3RzOyBkbyBcCi0JICBpZiB0ZXN0IC1mICQkZmlsZTsgdGhlbiBcCi0JICAgIGNwIC1wICQkZmlsZSAkKGRpc3RkaXIpIHx8IGV4aXQgMTsgXAotCSAgZWxzZSBcCi0JICAgIGNwIC1wICQoc3JjZGlyKS8kJGZpbGUgJChkaXN0ZGlyKSB8fCBleGl0IDE7IFwKLQkgIGZpOyBcCi0JZG9uZQotCi11cGRhdGUtcG86IE1ha2VmaWxlCi0JJChNQUtFKSAkKERPTUFJTikucG90LXVwZGF0ZQotCXRlc3QgLXogIiQoVVBEQVRFUE9GSUxFUykiIHx8ICQoTUFLRSkgJChVUERBVEVQT0ZJTEVTKQotCSQoTUFLRSkgdXBkYXRlLWdtbwotCi0jIEdlbmVyYWwgcnVsZSBmb3IgY3JlYXRpbmcgUE8gZmlsZXMuCi0KLS5ub3AucG8tY3JlYXRlOgotCUBsYW5nPWBlY2hvICRAIHwgc2VkIC1lICdzL1wucG8tY3JlYXRlJCQvLydgOyBcCi0JZWNobyAiRmlsZSAkJGxhbmcucG8gZG9lcyBub3QgZXhpc3QuIElmIHlvdSBhcmUgYSB0cmFuc2xhdG9yLCB5b3UgY2FuIGNyZWF0ZSBpdCB0aHJvdWdoICdtc2dpbml0Jy4iIDE+JjI7IFwKLQlleGl0IDEKLQotIyBHZW5lcmFsIHJ1bGUgZm9yIHVwZGF0aW5nIFBPIGZpbGVzLgotCi0ubm9wLnBvLXVwZGF0ZToKLQlAbGFuZz1gZWNobyAkQCB8IHNlZCAtZSAncy9cLnBvLXVwZGF0ZSQkLy8nYDsgXAotCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiOyB0aGVuIFBBVEg9YHB3ZGAvLi4vc3JjOiQkUEFUSDsgZmk7IFwKLQl0bXBkaXI9YHB3ZGA7IFwKLQllY2hvICIkJGxhbmc6IjsgXAotCXRlc3QgIiQoc3JjZGlyKSIgPSAuICYmIGNkY21kPSIiIHx8IGNkY21kPSJjZCAkKHNyY2RpcikgJiYgIjsgXAotCWVjaG8gIiQke2NkY21kfSQoTVNHTUVSR0UpICQoTVNHTUVSR0VfT1BUSU9OUykgLS1sYW5nPSQkbGFuZyAkJGxhbmcucG8gJChET01BSU4pLnBvdCAtbyAkJGxhbmcubmV3LnBvIjsgXAotCWNkICQoc3JjZGlyKTsgXAotCWlmIHsgY2FzZSBgJChNU0dNRVJHRSkgLS12ZXJzaW9uIHwgc2VkIDFxIHwgc2VkIC1lICdzLF5bXjAtOV0qLCwnYCBpbiBcCi0JICAgICAgICcnIHwgMC5bMC05XSB8IDAuWzAtOV0uKiB8IDAuMVswLTddIHwgMC4xWzAtN10uKikgXAotCSAgICAgICAgICQoTVNHTUVSR0UpICQoTVNHTUVSR0VfT1BUSU9OUykgLW8gJCR0bXBkaXIvJCRsYW5nLm5ldy5wbyAkJGxhbmcucG8gJChET01BSU4pLnBvdDs7IFwKLQkgICAgICAgKikgXAotCSAgICAgICAgICQoTVNHTUVSR0UpICQoTVNHTUVSR0VfT1BUSU9OUykgLS1sYW5nPSQkbGFuZyAtbyAkJHRtcGRpci8kJGxhbmcubmV3LnBvICQkbGFuZy5wbyAkKERPTUFJTikucG90OzsgXAotCSAgICAgZXNhYzsgXAotCSAgIH07IHRoZW4gXAotCSAgaWYgY21wICQkbGFuZy5wbyAkJHRtcGRpci8kJGxhbmcubmV3LnBvID4vZGV2L251bGwgMj4mMTsgdGhlbiBcCi0JICAgIHJtIC1mICQkdG1wZGlyLyQkbGFuZy5uZXcucG87IFwKLQkgIGVsc2UgXAotCSAgICBpZiBtdiAtZiAkJHRtcGRpci8kJGxhbmcubmV3LnBvICQkbGFuZy5wbzsgdGhlbiBcCi0JICAgICAgOjsgXAotCSAgICBlbHNlIFwKLQkgICAgICBlY2hvICJtc2dtZXJnZSBmb3IgJCRsYW5nLnBvIGZhaWxlZDogY2Fubm90IG1vdmUgJCR0bXBkaXIvJCRsYW5nLm5ldy5wbyB0byAkJGxhbmcucG8iIDE+JjI7IFwKLQkgICAgICBleGl0IDE7IFwKLQkgICAgZmk7IFwKLQkgIGZpOyBcCi0JZWxzZSBcCi0JICBlY2hvICJtc2dtZXJnZSBmb3IgJCRsYW5nLnBvIGZhaWxlZCEiIDE+JjI7IFwKLQkgIHJtIC1mICQkdG1wZGlyLyQkbGFuZy5uZXcucG87IFwKLQlmaQotCi0kKERVTU1ZUE9GSUxFUyk6Ci0KLXVwZGF0ZS1nbW86IE1ha2VmaWxlICQoR01PRklMRVMpCi0JQDoKLQotIyBSZWNyZWF0ZSBNYWtlZmlsZSBieSBpbnZva2luZyBjb25maWcuc3RhdHVzLiBFeHBsaWNpdGx5IGludm9rZSB0aGUgc2hlbGwsCi0jIGJlY2F1c2UgZXhlY3V0aW9uIHBlcm1pc3Npb24gYml0cyBtYXkgbm90IHdvcmsgb24gdGhlIGN1cnJlbnQgZmlsZSBzeXN0ZW0uCi0jIFVzZSBAU0hFTExALCB3aGljaCBpcyB0aGUgc2hlbGwgZGV0ZXJtaW5lZCBieSBhdXRvY29uZiBmb3IgdGhlIHVzZSBieSBpdHMKLSMgc2NyaXB0cywgbm90ICQoU0hFTEwpIHdoaWNoIGlzIGhhcmR3aXJlZCB0byAvYmluL3NoIGFuZCBtYXkgYmUgZGVmaWNpZW50LgotTWFrZWZpbGU6IE1ha2VmaWxlLmluLmluIE1ha2V2YXJzICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzIEBQT01BS0VGSUxFREVQU0AKLQljZCAkKHRvcF9idWlsZGRpcikgXAotCSAgJiYgQFNIRUxMQCAuL2NvbmZpZy5zdGF0dXMgJChzdWJkaXIpLyRALmluIHBvLWRpcmVjdG9yaWVzCi0KLWZvcmNlOgotCi0jIFRlbGwgdmVyc2lvbnMgWzMuNTksMy42Mykgb2YgR05VIG1ha2Ugbm90IHRvIGV4cG9ydCBhbGwgdmFyaWFibGVzLgotIyBPdGhlcndpc2UgYSBzeXN0ZW0gbGltaXQgKGZvciBTeXNWIGF0IGxlYXN0KSBtYXkgYmUgZXhjZWVkZWQuCi0uTk9FWFBPUlQ6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4xOS40L2FjbG9jYWwudGd6IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMTkuNC9hY2xvY2FsLnRnegpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjA0YmE1NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4xOS40L2FjbG9jYWwudGd6CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMTkuNC9jb25maWcucnBhdGggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4xOS40L2NvbmZpZy5ycGF0aApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYjYyNTYyMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4xOS40L2NvbmZpZy5ycGF0aAorKysgL2Rldi9udWxsCkBAIC0xLDY4NCArMCwwIEBACi0jISAvYmluL3NoCi0jIE91dHB1dCBhIHN5c3RlbSBkZXBlbmRlbnQgc2V0IG9mIHZhcmlhYmxlcywgZGVzY3JpYmluZyBob3cgdG8gc2V0IHRoZQotIyBydW4gdGltZSBzZWFyY2ggcGF0aCBvZiBzaGFyZWQgbGlicmFyaWVzIGluIGFuIGV4ZWN1dGFibGUuCi0jCi0jICAgQ29weXJpZ2h0IDE5OTYtMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSMgICBUYWtlbiBmcm9tIEdOVSBsaWJ0b29sLCAyMDAxCi0jICAgT3JpZ2luYWxseSBieSBHb3Jkb24gTWF0emlna2VpdCA8Z29yZEBnbnUuYWkubWl0LmVkdT4sIDE5OTYKLSMKLSMgICBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBnaXZlcwotIyAgIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAotIyAgIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgotIwotIyBUaGUgZmlyc3QgYXJndW1lbnQgcGFzc2VkIHRvIHRoaXMgZmlsZSBpcyB0aGUgY2Fub25pY2FsIGhvc3Qgc3BlY2lmaWNhdGlvbiwKLSMgICAgQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLU9QRVJBVElOR19TWVNURU0KLSMgb3IKLSMgICAgQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLUtFUk5FTC1PUEVSQVRJTkdfU1lTVEVNCi0jIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgQ0MsIEdDQywgTERGTEFHUywgTEQsIHdpdGhfZ251X2xkCi0jIHNob3VsZCBiZSBzZXQgYnkgdGhlIGNhbGxlci4KLSMKLSMgVGhlIHNldCBvZiBkZWZpbmVkIHZhcmlhYmxlcyBpcyBhdCB0aGUgZW5kIG9mIHRoaXMgc2NyaXB0LgotCi0jIEtub3duIGxpbWl0YXRpb25zOgotIyAtIE9uIElSSVggNi41IHdpdGggQ0M9ImNjIiwgdGhlIHJ1biB0aW1lIHNlYXJjaCBwYXRjaCBtdXN0IG5vdCBiZSBsb25nZXIKLSMgICB0aGFuIDI1NiBieXRlcywgb3RoZXJ3aXNlIHRoZSBjb21waWxlciBkcml2ZXIgd2lsbCBkdW1wIGNvcmUuIFRoZSBvbmx5Ci0jICAga25vd24gd29ya2Fyb3VuZCBpcyB0byBjaG9vc2Ugc2hvcnRlciBkaXJlY3RvcnkgbmFtZXMgZm9yIHRoZSBidWlsZAotIyAgIGRpcmVjdG9yeSBhbmQvb3IgdGhlIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkuCi0KLSMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhICcuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAotIyB3aGljaCBuZWVkcyAnLmxpYicpLgotbGliZXh0PWEKLXNocmV4dD0uc28KLQotaG9zdD0iJDEiCi1ob3N0X2NwdT1gZWNobyAiJGhvc3QiIHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDEvJ2AKLWhvc3RfdmVuZG9yPWBlY2hvICIkaG9zdCIgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMi8nYAotaG9zdF9vcz1gZWNobyAiJGhvc3QiIHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDMvJ2AKLQotIyBDb2RlIHRha2VuIGZyb20gbGlidG9vbC5tNCdzIF9MVF9DQ19CQVNFTkFNRS4KLQotZm9yIGNjX3RlbXAgaW4gJENDIiI7IGRvCi0gIGNhc2UgJGNjX3RlbXAgaW4KLSAgICBjb21waWxlIHwgKltcXC9dY29tcGlsZSB8IGNjYWNoZSB8ICpbXFwvXWNjYWNoZSApIDs7Ci0gICAgZGlzdGNjIHwgKltcXC9dZGlzdGNjIHwgcHVyaWZ5IHwgKltcXC9dcHVyaWZ5ICkgOzsKLSAgICBcLSopIDs7Ci0gICAgKikgYnJlYWs7OwotICBlc2FjCi1kb25lCi1jY19iYXNlbmFtZT1gZWNobyAiJGNjX3RlbXAiIHwgc2VkIC1lICdzJV4uKi8lJSdgCi0KLSMgQ29kZSB0YWtlbiBmcm9tIGxpYnRvb2wubTQncyBfTFRfQ09NUElMRVJfUElDLgotCi13bD0KLWlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gIHdsPSctV2wsJwotZWxzZQotICBjYXNlICIkaG9zdF9vcyIgaW4KLSAgICBhaXgqKQotICAgICAgd2w9Jy1XbCwnCi0gICAgICA7OwotICAgIG1pbmd3KiB8IGN5Z3dpbiogfCBwdzMyKiB8IG9zMiogfCBjZWdjYyopCi0gICAgICA7OwotICAgIGhwdXg5KiB8IGhwdXgxMCogfCBocHV4MTEqKQotICAgICAgd2w9Jy1XbCwnCi0gICAgICA7OwotICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCi0gICAgICB3bD0nLVdsLCcKLSAgICAgIDs7Ci0gICAgbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQotICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgICAgZWNjKikKLSAgICAgICAgICB3bD0nLVdsLCcKLSAgICAgICAgICA7OwotICAgICAgICBpY2MqIHwgaWZvcnQqKQotICAgICAgICAgIHdsPSctV2wsJwotICAgICAgICAgIDs7Ci0gICAgICAgIGxmOTUqKQotICAgICAgICAgIHdsPSctV2wsJwotICAgICAgICAgIDs7Ci0gICAgICAgIG5hZ2ZvciopCi0gICAgICAgICAgd2w9Jy1XbCwtV2wsLCcKLSAgICAgICAgICA7OwotICAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCi0gICAgICAgICAgd2w9Jy1XbCwnCi0gICAgICAgICAgOzsKLSAgICAgICAgY2NjKikKLSAgICAgICAgICB3bD0nLVdsLCcKLSAgICAgICAgICA7OwotICAgICAgICB4bCogfCBiZ3hsKiB8IGJnZiogfCBtcGl4bCopCi0gICAgICAgICAgd2w9Jy1XbCwnCi0gICAgICAgICAgOzsKLSAgICAgICAgY29tbykKLSAgICAgICAgICB3bD0nLWxvcHQ9JwotICAgICAgICAgIDs7Ci0gICAgICAgICopCi0gICAgICAgICAgY2FzZSBgJENDIC1WIDI+JjEgfCBzZWQgNXFgIGluCi0gICAgICAgICAgICAqU3VuXCBGKiB8ICpTdW4qRm9ydHJhbiopCi0gICAgICAgICAgICAgIHdsPQotICAgICAgICAgICAgICA7OwotICAgICAgICAgICAgKlN1blwgQyopCi0gICAgICAgICAgICAgIHdsPSctV2wsJwotICAgICAgICAgICAgICA7OwotICAgICAgICAgIGVzYWMKLSAgICAgICAgICA7OwotICAgICAgZXNhYwotICAgICAgOzsKLSAgICBuZXdzb3M2KQotICAgICAgOzsKLSAgICAqbnRvKiB8ICpxbngqKQotICAgICAgOzsKLSAgICBvc2YzKiB8IG9zZjQqIHwgb3NmNSopCi0gICAgICB3bD0nLVdsLCcKLSAgICAgIDs7Ci0gICAgcmRvcyopCi0gICAgICA7OwotICAgIHNvbGFyaXMqKQotICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQotICAgICAgICAgIHdsPSctUW9wdGlvbiBsZCAnCi0gICAgICAgICAgOzsKLSAgICAgICAgKikKLSAgICAgICAgICB3bD0nLVdsLCcKLSAgICAgICAgICA7OwotICAgICAgZXNhYwotICAgICAgOzsKLSAgICBzdW5vczQqKQotICAgICAgd2w9Jy1Rb3B0aW9uIGxkICcKLSAgICAgIDs7Ci0gICAgc3lzdjQgfCBzeXN2NC4ydXcyKiB8IHN5c3Y0LjMqKQotICAgICAgd2w9Jy1XbCwnCi0gICAgICA7OwotICAgIHN5c3Y0Kk1QKikKLSAgICAgIDs7Ci0gICAgc3lzdjUqIHwgdW5peHdhcmUqIHwgc2NvMy4ydjUqIHwgc2NvNXY2KiB8IE9wZW5VTklYKikKLSAgICAgIHdsPSctV2wsJwotICAgICAgOzsKLSAgICB1bmljb3MqKQotICAgICAgd2w9Jy1XbCwnCi0gICAgICA7OwotICAgIHV0czQqKQotICAgICAgOzsKLSAgZXNhYwotZmkKLQotIyBDb2RlIHRha2VuIGZyb20gbGlidG9vbC5tNCdzIF9MVF9MSU5LRVJfU0hMSUJTLgotCi1oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQotaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0KLWhhcmRjb2RlX2RpcmVjdD1ubwotaGFyZGNvZGVfbWludXNfTD1ubwotCi1jYXNlICIkaG9zdF9vcyIgaW4KLSAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgICMgRklYTUU6IHRoZSBNU1ZDKysgcG9ydCBoYXNuJ3QgYmVlbiB0ZXN0ZWQgaW4gYSBsb29vb25nIHRpbWUKLSAgICAjIFdoZW4gbm90IHVzaW5nIGdjYywgd2UgY3VycmVudGx5IGFzc3VtZSB0aGF0IHdlIGFyZSB1c2luZwotICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCi0gICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCi0gICAgICB3aXRoX2dudV9sZD1ubwotICAgIGZpCi0gICAgOzsKLSAgaW50ZXJpeCopCi0gICAgIyB3ZSBqdXN0IGhvcGUvYXNzdW1lIHRoaXMgaXMgZ2NjIGFuZCBub3QgYzg5ICg9IE1TVkMrKykKLSAgICB3aXRoX2dudV9sZD15ZXMKLSAgICA7OwotICBvcGVuYnNkKikKLSAgICB3aXRoX2dudV9sZD1ubwotICAgIDs7Ci1lc2FjCi0KLWxkX3NobGlicz15ZXMKLWlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KLSAgIyBTZXQgc29tZSBkZWZhdWx0cyBmb3IgR05VIGxkIHdpdGggc2hhcmVkIGxpYnJhcnkgc3VwcG9ydC4gVGhlc2UKLSAgIyBhcmUgcmVzZXQgbGF0ZXIgaWYgc2hhcmVkIGxpYnJhcmllcyBhcmUgbm90IHN1cHBvcnRlZC4gUHV0dGluZyB0aGVtCi0gICMgaGVyZSBhbGxvd3MgdGhlbSB0byBiZSBvdmVycmlkZGVuIGlmIG5lY2Vzc2FyeS4KLSAgIyBVbmxpa2UgbGlidG9vbCwgd2UgdXNlIC1ycGF0aCBoZXJlLCBub3QgLS1ycGF0aCwgc2luY2UgdGhlIGRvY3VtZW50ZWQKLSAgIyBvcHRpb24gb2YgR05VIGxkIGlzIGNhbGxlZCAtcnBhdGgsIG5vdCAtLXJwYXRoLgotICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0gIGNhc2UgIiRob3N0X29zIiBpbgotICAgIGFpeFszLTldKikKLSAgICAgICMgT24gQUlYL1BQQywgdGhlIEdOVSBsaW5rZXIgaXMgdmVyeSBicm9rZW4KLSAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgIT0gaWE2NDsgdGhlbgotICAgICAgICBsZF9zaGxpYnM9bm8KLSAgICAgIGZpCi0gICAgICA7OwotICAgIGFtaWdhb3MqKQotICAgICAgY2FzZSAiJGhvc3RfY3B1IiBpbgotICAgICAgICBwb3dlcnBjKQotICAgICAgICAgIDs7Ci0gICAgICAgIG02OGspCi0gICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJwotICAgICAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCi0gICAgICAgICAgOzsKLSAgICAgIGVzYWMKLSAgICAgIDs7Ci0gICAgYmVvcyopCi0gICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgOgotICAgICAgZWxzZQotICAgICAgICBsZF9zaGxpYnM9bm8KLSAgICAgIGZpCi0gICAgICA7OwotICAgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKLSAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCi0gICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgOgotICAgICAgZWxzZQotICAgICAgICBsZF9zaGxpYnM9bm8KLSAgICAgIGZpCi0gICAgICA7OwotICAgIGhhaWt1KikKLSAgICAgIDs7Ci0gICAgaW50ZXJpeFszLTldKikKLSAgICAgIGhhcmRjb2RlX2RpcmVjdD1ubwotICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGgsJGxpYmRpcicKLSAgICAgIDs7Ci0gICAgZ251KiB8IGxpbnV4KiB8IHRwZiogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCi0gICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgOgotICAgICAgZWxzZQotICAgICAgICBsZF9zaGxpYnM9bm8KLSAgICAgIGZpCi0gICAgICA7OwotICAgIG5ldGJzZCopCi0gICAgICA7OwotICAgIHNvbGFyaXMqKQotICAgICAgaWYgJExEIC12IDI+JjEgfCBncmVwICdCRkQgMlwuOCcgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgbGRfc2hsaWJzPW5vCi0gICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8IGdyZXAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICA6Ci0gICAgICBlbHNlCi0gICAgICAgIGxkX3NobGlicz1ubwotICAgICAgZmkKLSAgICAgIDs7Ci0gICAgc3lzdjUqIHwgc2NvMy4ydjUqIHwgc2NvNXY2KiB8IHVuaXh3YXJlKiB8IE9wZW5VTklYKikKLSAgICAgIGNhc2UgYCRMRCAtdiAyPiYxYCBpbgotICAgICAgICAqXCBbMDFdLiogfCAqXCAyLlswLTldLiogfCAqXCAyLjFbMC01XS4qKQotICAgICAgICAgIGxkX3NobGlicz1ubwotICAgICAgICAgIDs7Ci0gICAgICAgICopCi0gICAgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgZ3JlcCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSdgdGVzdCAteiAiJFNDT0FCU1BBVEgiICYmIGVjaG8gJHt3bH0tcnBhdGgsJGxpYmRpcmAnCi0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgbGRfc2hsaWJzPW5vCi0gICAgICAgICAgZmkKLSAgICAgICAgICA7OwotICAgICAgZXNhYwotICAgICAgOzsKLSAgICBzdW5vczQqKQotICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgOzsKLSAgICAqKQotICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgZ3JlcCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICAgIDoKLSAgICAgIGVsc2UKLSAgICAgICAgbGRfc2hsaWJzPW5vCi0gICAgICBmaQotICAgICAgOzsKLSAgZXNhYwotICBpZiB0ZXN0ICIkbGRfc2hsaWJzIiA9IG5vOyB0aGVuCi0gICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KLSAgZmkKLWVsc2UKLSAgY2FzZSAiJGhvc3Rfb3MiIGluCi0gICAgYWl4MyopCi0gICAgICAjIE5vdGU6IHRoaXMgbGlua2VyIGhhcmRjb2RlcyB0aGUgZGlyZWN0b3JpZXMgaW4gTElCUEFUSCBpZiB0aGVyZQotICAgICAgIyBhcmUgbm8gZGlyZWN0b3JpZXMgc3BlY2lmaWVkIGJ5IC1MLgotICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgICAgICMgTmVpdGhlciBkaXJlY3QgaGFyZGNvZGluZyBub3Igc3RhdGljIGxpbmtpbmcgaXMgc3VwcG9ydGVkIHdpdGggYQotICAgICAgICAjIGJyb2tlbiBjb2xsZWN0Mi4KLSAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXVuc3VwcG9ydGVkCi0gICAgICBmaQotICAgICAgOzsKLSAgICBhaXhbNC05XSopCi0gICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgotICAgICAgICAjIE9uIElBNjQsIHRoZSBsaW5rZXIgZG9lcyBydW4gdGltZSBsaW5raW5nIGJ5IGRlZmF1bHQsIHNvIHdlIGRvbid0Ci0gICAgICAgICMgaGF2ZSB0byBkbyBhbnl0aGluZyBzcGVjaWFsLgotICAgICAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPW5vCi0gICAgICBlbHNlCi0gICAgICAgIGFpeF91c2VfcnVudGltZWxpbmtpbmc9bm8KLSAgICAgICAgIyBUZXN0IGlmIHdlIGFyZSB0cnlpbmcgdG8gdXNlIHJ1biB0aW1lIGxpbmtpbmcgb3Igbm9ybWFsCi0gICAgICAgICMgQUlYIHN0eWxlIGxpbmtpbmcuIElmIC1icnRsIGlzIHNvbWV3aGVyZSBpbiBMREZMQUdTLCB3ZQotICAgICAgICAjIG5lZWQgdG8gZG8gcnVudGltZSBsaW5raW5nLgotICAgICAgICBjYXNlICRob3N0X29zIGluIGFpeDQuWzIzXXxhaXg0LlsyM10uKnxhaXhbNS05XSopCi0gICAgICAgICAgZm9yIGxkX2ZsYWcgaW4gJExERkxBR1M7IGRvCi0gICAgICAgICAgICBpZiAodGVzdCAkbGRfZmxhZyA9ICItYnJ0bCIgfHwgdGVzdCAkbGRfZmxhZyA9ICItV2wsLWJydGwiKTsgdGhlbgotICAgICAgICAgICAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPXllcwotICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZmkKLSAgICAgICAgICBkb25lCi0gICAgICAgICAgOzsKLSAgICAgICAgZXNhYwotICAgICAgZmkKLSAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9JzonCi0gICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICAgICBjYXNlICRob3N0X29zIGluIGFpeDQuWzAxMl18YWl4NC5bMDEyXS4qKQotICAgICAgICAgIGNvbGxlY3QybmFtZT1gJHtDQ30gLXByaW50LXByb2ctbmFtZT1jb2xsZWN0MmAKLSAgICAgICAgICBpZiB0ZXN0IC1mICIkY29sbGVjdDJuYW1lIiAmJiBcCi0gICAgICAgICAgICBzdHJpbmdzICIkY29sbGVjdDJuYW1lIiB8IGdyZXAgcmVzb2x2ZV9saWJfbmFtZSA+L2Rldi9udWxsCi0gICAgICAgICAgdGhlbgotICAgICAgICAgICAgIyBXZSBoYXZlIHJld29ya2VkIGNvbGxlY3QyCi0gICAgICAgICAgICA6Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgIyBXZSBoYXZlIG9sZCBjb2xsZWN0MgotICAgICAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXVuc3VwcG9ydGVkCi0gICAgICAgICAgICBoYXJkY29kZV9taW51c19MPXllcwotICAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJwotICAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0KLSAgICAgICAgICBmaQotICAgICAgICAgIDs7Ci0gICAgICAgIGVzYWMKLSAgICAgIGZpCi0gICAgICAjIEJlZ2luIF9MVF9BQ19TWVNfTElCUEFUSF9BSVguCi0gICAgICBlY2hvICdpbnQgbWFpbiAoKSB7IHJldHVybiAwOyB9JyA+IGNvbmZ0ZXN0LmMKLSAgICAgICR7Q0N9ICR7TERGTEFHU30gY29uZnRlc3QuYyAtbyBjb25mdGVzdAotICAgICAgYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QgMj4vZGV2L251bGwgfCBzZWQgLW4gLWUgJy9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsgL14wLyB7IHMvXjAgICpcKC4qXCkkL1wxLzsgcDsgfQotfSdgCi0gICAgICBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0gICAgICAgIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0IDI+L2Rldi9udWxsIHwgc2VkIC1uIC1lICcvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7IC9eMC8geyBzL14wICAqXCguKlwpJC9cMS87IHA7IH0KLX0nYAotICAgICAgZmkKLSAgICAgIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLSAgICAgICAgYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiCi0gICAgICBmaQotICAgICAgcm0gLWYgY29uZnRlc3QuYyBjb25mdGVzdAotICAgICAgIyBFbmQgX0xUX0FDX1NZU19MSUJQQVRIX0FJWC4KLSAgICAgIGlmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IHllczsgdGhlbgotICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotICAgICAgZWxzZQotICAgICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgotICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LVIgJGxpYmRpcjovdXNyL2xpYjovbGliJwotICAgICAgICBlbHNlCi0gICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAgICAgICAgZmkKLSAgICAgIGZpCi0gICAgICA7OwotICAgIGFtaWdhb3MqKQotICAgICAgY2FzZSAiJGhvc3RfY3B1IiBpbgotICAgICAgICBwb3dlcnBjKQotICAgICAgICAgIDs7Ci0gICAgICAgIG02OGspCi0gICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJwotICAgICAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCi0gICAgICAgICAgOzsKLSAgICAgIGVzYWMKLSAgICAgIDs7Ci0gICAgYnNkaVs0NV0qKQotICAgICAgOzsKLSAgICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICAgICAjIFdoZW4gbm90IHVzaW5nIGdjYywgd2UgY3VycmVudGx5IGFzc3VtZSB0aGF0IHdlIGFyZSB1c2luZwotICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KLSAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKLSAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotICAgICAgbGliZXh0PWxpYgotICAgICAgOzsKLSAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQotICAgICAgaGFyZGNvZGVfZGlyZWN0PW5vCi0gICAgICBpZiB7IGNhc2UgJGNjX2Jhc2VuYW1lIGluIGlmb3J0KikgdHJ1ZTs7ICopIHRlc3QgIiRHQ0MiID0geWVzOzsgZXNhYzsgfTsgdGhlbgotICAgICAgICA6Ci0gICAgICBlbHNlCi0gICAgICAgIGxkX3NobGlicz1ubwotICAgICAgZmkKLSAgICAgIDs7Ci0gICAgZGd1eCopCi0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCi0gICAgICA7OwotICAgIGZyZWVic2QyLlswMV0qKQotICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSAgICAgIDs7Ci0gICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQotICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwotICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgOzsKLSAgICBocHV4OSopCi0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfStiICR7d2x9JGxpYmRpcicKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgotICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgIyBoYXJkY29kZV9taW51c19MOiBOb3QgcmVhbGx5IGluIHRoZSBzZWFyY2ggUEFUSCwKLSAgICAgICMgYnV0IGFzIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBsaWJyYXJ5LgotICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSAgICAgIDs7Ci0gICAgaHB1eDEwKikKLSAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfStiICR7d2x9JGxpYmRpcicKLSAgICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06Ci0gICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSAgICAgICAgIyBoYXJkY29kZV9taW51c19MOiBOb3QgcmVhbGx5IGluIHRoZSBzZWFyY2ggUEFUSCwKLSAgICAgICAgIyBidXQgYXMgdGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkuCi0gICAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCi0gICAgICBmaQotICAgICAgOzsKLSAgICBocHV4MTEqKQotICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0gICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9K2IgJHt3bH0kbGliZGlyJwotICAgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKLSAgICAgICAgY2FzZSAkaG9zdF9jcHUgaW4KLSAgICAgICAgICBocHBhKjY0KnxpYTY0KikKLSAgICAgICAgICAgIGhhcmRjb2RlX2RpcmVjdD1ubwotICAgICAgICAgICAgOzsKLSAgICAgICAgICAqKQotICAgICAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgICAgICAgIyBoYXJkY29kZV9taW51c19MOiBOb3QgcmVhbGx5IGluIHRoZSBzZWFyY2ggUEFUSCwKLSAgICAgICAgICAgICMgYnV0IGFzIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBsaWJyYXJ5LgotICAgICAgICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSAgICAgICAgICAgIDs7Ci0gICAgICAgIGVzYWMKLSAgICAgIGZpCi0gICAgICA7OwotICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCi0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0gICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKLSAgICAgIDs7Ci0gICAgbmV0YnNkKikKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKLSAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSAgICAgIDs7Ci0gICAgbmV3c29zNikKLSAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgotICAgICAgOzsKLSAgICAqbnRvKiB8ICpxbngqKQotICAgICAgOzsKLSAgICBvcGVuYnNkKikKLSAgICAgIGlmIHRlc3QgLWYgL3Vzci9saWJleGVjL2xkLnNvOyB0aGVuCi0gICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSAgICAgICAgaWYgdGVzdCAteiAiYGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgZ3JlcCBfX0VMRl9fYCIgfHwgdGVzdCAiJGhvc3Rfb3MtJGhvc3RfY3B1IiA9ICJvcGVuYnNkMi44LXBvd2VycGMiOyB0aGVuCi0gICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGgsJGxpYmRpcicKLSAgICAgICAgZWxzZQotICAgICAgICAgIGNhc2UgIiRob3N0X29zIiBpbgotICAgICAgICAgICAgb3BlbmJzZFswMV0uKiB8IG9wZW5ic2QyLlswLTddIHwgb3BlbmJzZDIuWzAtN10uKikKLSAgICAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwotICAgICAgICAgICAgICA7OwotICAgICAgICAgICAgKikKLSAgICAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGgsJGxpYmRpcicKLSAgICAgICAgICAgICAgOzsKLSAgICAgICAgICBlc2FjCi0gICAgICAgIGZpCi0gICAgICBlbHNlCi0gICAgICAgIGxkX3NobGlicz1ubwotICAgICAgZmkKLSAgICAgIDs7Ci0gICAgb3MyKikKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKLSAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCi0gICAgICA7OwotICAgIG9zZjMqKQotICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06Ci0gICAgICA7OwotICAgIG9zZjQqIHwgb3NmNSopCi0gICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0gICAgICBlbHNlCi0gICAgICAgICMgQm90aCBjYyBhbmQgY3h4IGNvbXBpbGVyIHN1cHBvcnQgLXJwYXRoIGRpcmVjdGx5Ci0gICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1ycGF0aCAkbGliZGlyJwotICAgICAgZmkKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgotICAgICAgOzsKLSAgICBzb2xhcmlzKikKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKLSAgICAgIDs7Ci0gICAgc3Vub3M0KikKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKLSAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCi0gICAgICA7OwotICAgIHN5c3Y0KQotICAgICAgY2FzZSAkaG9zdF92ZW5kb3IgaW4KLSAgICAgICAgc25pKQotICAgICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMgIyBpcyB0aGlzIHJlYWxseSB0cnVlPz8/Ci0gICAgICAgICAgOzsKLSAgICAgICAgc2llbWVucykKLSAgICAgICAgICBoYXJkY29kZV9kaXJlY3Q9bm8KLSAgICAgICAgICA7OwotICAgICAgICBtb3Rvcm9sYSkKLSAgICAgICAgICBoYXJkY29kZV9kaXJlY3Q9bm8gI01vdG9yb2xhIG1hbnVhbCBzYXlzIHllcywgYnV0IG15IHRlc3RzIHNheSB0aGV5IGxpZQotICAgICAgICAgIDs7Ci0gICAgICBlc2FjCi0gICAgICA7OwotICAgIHN5c3Y0LjMqKQotICAgICAgOzsKLSAgICBzeXN2NCpNUCopCi0gICAgICBpZiB0ZXN0IC1kIC91c3IvbmVjOyB0aGVuCi0gICAgICAgIGxkX3NobGlicz15ZXMKLSAgICAgIGZpCi0gICAgICA7OwotICAgIHN5c3Y0KnV3MiogfCBzeXN2NU9wZW5VTklYKiB8IHN5c3Y1VW5peFdhcmU3LlswMV0uWzEwXSogfCB1bml4d2FyZTcqIHwgc2NvMy4ydjUuMC5bMDI0XSopCi0gICAgICA7OwotICAgIHN5c3Y1KiB8IHNjbzMuMnY1KiB8IHNjbzV2NiopCi0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSdgdGVzdCAteiAiJFNDT0FCU1BBVEgiICYmIGVjaG8gJHt3bH0tUiwkbGliZGlyYCcKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9JzonCi0gICAgICA7OwotICAgIHV0czQqKQotICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJwotICAgICAgOzsKLSAgICAqKQotICAgICAgbGRfc2hsaWJzPW5vCi0gICAgICA7OwotICBlc2FjCi1maQotCi0jIENoZWNrIGR5bmFtaWMgbGlua2VyIGNoYXJhY3RlcmlzdGljcwotIyBDb2RlIHRha2VuIGZyb20gbGlidG9vbC5tNCdzIF9MVF9TWVNfRFlOQU1JQ19MSU5LRVIuCi0jIFVubGlrZSBsaWJ0b29sLm00LCBoZXJlIHdlIGRvbid0IGNhcmUgYWJvdXQgX2FsbF8gbmFtZXMgb2YgdGhlIGxpYnJhcnksIGJ1dAotIyBvbmx5IGFib3V0IHRoZSBvbmUgdGhlIGxpbmtlciBmaW5kcyB3aGVuIHBhc3NlZCAtbE5BTUUuIFRoaXMgaXMgdGhlIGxhc3QKLSMgZWxlbWVudCBvZiBsaWJyYXJ5X25hbWVzX3NwZWMgaW4gbGlidG9vbC5tNCwgb3IgcG9zc2libHkgdHdvIG9mIHRoZW0gaWYgdGhlCi0jIGxpbmtlciBoYXMgc3BlY2lhbCBzZWFyY2ggcnVsZXMuCi1saWJyYXJ5X25hbWVzX3NwZWM9ICAgICAgIyB0aGUgbGFzdCBlbGVtZW50IG9mIGxpYnJhcnlfbmFtZXNfc3BlYyBpbiBsaWJ0b29sLm00Ci1saWJuYW1lX3NwZWM9J2xpYiRuYW1lJwotY2FzZSAiJGhvc3Rfb3MiIGluCi0gIGFpeDMqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuYScKLSAgICA7OwotICBhaXhbNC05XSopCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgOzsKLSAgYW1pZ2FvcyopCi0gICAgY2FzZSAiJGhvc3RfY3B1IiBpbgotICAgICAgcG93ZXJwYyopCi0gICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JyA7OwotICAgICAgbTY4aykKLSAgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5hJyA7OwotICAgIGVzYWMKLSAgICA7OwotICBiZW9zKikKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKLSAgICA7OwotICBic2RpWzQ1XSopCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgOzsKLSAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgIHNocmV4dD0uZGxsCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYSAkbGlibmFtZS5saWInCi0gICAgOzsKLSAgZGFyd2luKiB8IHJoYXBzb2R5KikKLSAgICBzaHJleHQ9LmR5bGliCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgOzsKLSAgZGd1eCopCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgOzsKLSAgZnJlZWJzZFsyM10uKikKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCR2ZXJzdWZmaXgnCi0gICAgOzsKLSAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci0gIGdudSopCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgOzsKLSAgaGFpa3UqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci0gIGhwdXg5KiB8IGhwdXgxMCogfCBocHV4MTEqKQotICAgIGNhc2UgJGhvc3RfY3B1IGluCi0gICAgICBpYTY0KikKLSAgICAgICAgc2hyZXh0PS5zbwotICAgICAgICA7OwotICAgICAgaHBwYSo2NCopCi0gICAgICAgIHNocmV4dD0uc2wKLSAgICAgICAgOzsKLSAgICAgICopCi0gICAgICAgIHNocmV4dD0uc2wKLSAgICAgICAgOzsKLSAgICBlc2FjCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgOzsKLSAgaW50ZXJpeFszLTldKikKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKLSAgICA7OwotICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIGNhc2UgIiRob3N0X29zIiBpbgotICAgICAgaXJpeDUqIHwgbm9uc3RvcHV4KikKLSAgICAgICAgbGlic3VmZj0gc2hsaWJzdWZmPQotICAgICAgICA7OwotICAgICAgKikKLSAgICAgICAgY2FzZSAkTEQgaW4KLSAgICAgICAgICAqLTMyfCoiLTMyICJ8Ki1tZWxmMzJic21pcHwqIi1tZWxmMzJic21pcCAiKSBsaWJzdWZmPSBzaGxpYnN1ZmY9IDs7Ci0gICAgICAgICAgKi1uMzJ8KiItbjMyICJ8Ki1tZWxmMzJibWlwbjMyfCoiLW1lbGYzMmJtaXBuMzIgIikgbGlic3VmZj0zMiBzaGxpYnN1ZmY9TjMyIDs7Ci0gICAgICAgICAgKi02NHwqIi02NCAifCotbWVsZjY0Ym1pcHwqIi1tZWxmNjRibWlwICIpIGxpYnN1ZmY9NjQgc2hsaWJzdWZmPTY0IDs7Ci0gICAgICAgICAgKikgbGlic3VmZj0gc2hsaWJzdWZmPSA7OwotICAgICAgICBlc2FjCi0gICAgICAgIDs7Ci0gICAgZXNhYwotICAgIDs7Ci0gIGxpbnV4Km9sZGxkKiB8IGxpbnV4KmFvdXQqIHwgbGludXgqY29mZiopCi0gICAgOzsKLSAgbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci0gIGtuZXRic2QqLWdudSkKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKLSAgICA7OwotICBuZXRic2QqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci0gIG5ld3NvczYpCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgOzsKLSAgKm50byogfCAqcW54KikKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKLSAgICA7OwotICBvcGVuYnNkKikKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCR2ZXJzdWZmaXgnCi0gICAgOzsKLSAgb3MyKikKLSAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJwotICAgIHNocmV4dD0uZGxsCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5hJwotICAgIDs7Ci0gIG9zZjMqIHwgb3NmNCogfCBvc2Y1KikKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKLSAgICA7OwotICByZG9zKikKLSAgICA7OwotICBzb2xhcmlzKikKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKLSAgICA7OwotICBzdW5vczQqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JHZlcnN1ZmZpeCcKLSAgICA7OwotICBzeXN2NCB8IHN5c3Y0LjMqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci0gIHN5c3Y0Kk1QKikKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKLSAgICA7OwotICBzeXN2NSogfCBzY28zLjJ2NSogfCBzY281djYqIHwgdW5peHdhcmUqIHwgT3BlblVOSVgqIHwgc3lzdjQqdXcyKikKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKLSAgICA7OwotICB0cGYqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci0gIHV0czQqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci1lc2FjCi0KLXNlZF9xdW90ZV9zdWJzdD0ncy9cKFsiYCRcXF1cKS9cXFwxL2cnCi1lc2NhcGVkX3dsPWBlY2hvICJYJHdsIiB8IHNlZCAtZSAncy9eWC8vJyAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi1zaGxpYmV4dD1gZWNobyAiJHNocmV4dCIgfCBzZWQgLWUgJ3MsXlwuLCwnYAotZXNjYXBlZF9saWJuYW1lX3NwZWM9YGVjaG8gIlgkbGlibmFtZV9zcGVjIiB8IHNlZCAtZSAncy9eWC8vJyAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi1lc2NhcGVkX2xpYnJhcnlfbmFtZXNfc3BlYz1gZWNobyAiWCRsaWJyYXJ5X25hbWVzX3NwZWMiIHwgc2VkIC1lICdzL15YLy8nIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLWVzY2FwZWRfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz1gZWNobyAiWCRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIiB8IHNlZCAtZSAncy9eWC8vJyAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi0KLUxDX0FMTD1DIHNlZCAtZSAncy9eXChbYS16QS1aMC05X10qXCk9L2FjbF9jdl9cMT0vJyA8PEVPRgotCi0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCi13bD0iJGVzY2FwZWRfd2wiCi0KLSMgU3RhdGljIGxpYnJhcnkgc3VmZml4IChub3JtYWxseSAiYSIpLgotbGliZXh0PSIkbGliZXh0IgotCi0jIFNoYXJlZCBsaWJyYXJ5IHN1ZmZpeCAobm9ybWFsbHkgInNvIikuCi1zaGxpYmV4dD0iJHNobGliZXh0IgotCi0jIEZvcm1hdCBvZiBsaWJyYXJ5IG5hbWUgcHJlZml4LgotbGlibmFtZV9zcGVjPSIkZXNjYXBlZF9saWJuYW1lX3NwZWMiCi0KLSMgTGlicmFyeSBuYW1lcyB0aGF0IHRoZSBsaW5rZXIgZmluZHMgd2hlbiBwYXNzZWQgLWxOQU1FLgotbGlicmFyeV9uYW1lc19zcGVjPSIkZXNjYXBlZF9saWJyYXJ5X25hbWVzX3NwZWMiCi0KLSMgRmxhZyB0byBoYXJkY29kZSBcJGxpYmRpciBpbnRvIGEgYmluYXJ5IGR1cmluZyBsaW5raW5nLgotIyBUaGlzIG11c3Qgd29yayBldmVuIGlmIFwkbGliZGlyIGRvZXMgbm90IGV4aXN0LgotaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0iJGVzY2FwZWRfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyIKLQotIyBXaGV0aGVyIHdlIG5lZWQgYSBzaW5nbGUgLXJwYXRoIGZsYWcgd2l0aCBhIHNlcGFyYXRlZCBhcmd1bWVudC4KLWhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9IiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIgotCi0jIFNldCB0byB5ZXMgaWYgdXNpbmcgRElSL2xpYk5BTUUuc28gZHVyaW5nIGxpbmtpbmcgaGFyZGNvZGVzIERJUiBpbnRvIHRoZQotIyByZXN1bHRpbmcgYmluYXJ5LgotaGFyZGNvZGVfZGlyZWN0PSIkaGFyZGNvZGVfZGlyZWN0IgotCi0jIFNldCB0byB5ZXMgaWYgdXNpbmcgdGhlIC1MRElSIGZsYWcgZHVyaW5nIGxpbmtpbmcgaGFyZGNvZGVzIERJUiBpbnRvIHRoZQotIyByZXN1bHRpbmcgYmluYXJ5LgotaGFyZGNvZGVfbWludXNfTD0iJGhhcmRjb2RlX21pbnVzX0wiCi0KLUVPRgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMTkuNC8wMDAxLVBBVENILURpc2FibGUtdGhlLXRlc3QtdG8tY29udmVydC1ldWMtanAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4xOS44LjEvMDAwMS1QQVRDSC1EaXNhYmxlLXRoZS10ZXN0LXRvLWNvbnZlcnQtZXVjLWpwLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4xOS40LzAwMDEtUEFUQ0gtRGlzYWJsZS10aGUtdGVzdC10by1jb252ZXJ0LWV1Yy1qcC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMTkuOC4xLzAwMDEtUEFUQ0gtRGlzYWJsZS10aGUtdGVzdC10by1jb252ZXJ0LWV1Yy1qcC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMTkuOC4xL0NPUFlJTkcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4xOS44LjEvQ09QWUlORwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjcxYWI2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMTkuOC4xL0NPUFlJTkcKQEAgLTAsMCArMSw0IEBACitkbmwgQ29weXJpZ2h0IChDKSAxOTk1LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KK2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjE5LjguMS9NYWtlZmlsZS5pbi5pbiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjE5LjguMS9NYWtlZmlsZS5pbi5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOGMyOTNkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMTkuOC4xL01ha2VmaWxlLmluLmluCkBAIC0wLDAgKzEsNDgzIEBACisjIE1ha2VmaWxlIGZvciBQTyBkaXJlY3RvcnkgaW4gYW55IHBhY2thZ2UgdXNpbmcgR05VIGdldHRleHQuCisjIENvcHlyaWdodCAoQykgMTk5NS0xOTk3LCAyMDAwLTIwMDcsIDIwMDktMjAxMCBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBnbnUuYWkubWl0LmVkdT4KKyMKKyMgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgZmlsZSwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKKyMgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CisjIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBvZmZlcmVkIGFzLWlzLAorIyB3aXRob3V0IGFueSB3YXJyYW50eS4KKyMKKyMgT3JpZ2luOiBnZXR0ZXh0LTAuMTkuOAorR0VUVEVYVF9NQUNST19WRVJTSU9OID0gMC4xOQorCitQQUNLQUdFID0gQFBBQ0tBR0VACitWRVJTSU9OID0gQFZFUlNJT05ACitQQUNLQUdFX0JVR1JFUE9SVCA9IEBQQUNLQUdFX0JVR1JFUE9SVEAKKworU0VEID0gQFNFREAKK1NIRUxMID0gL2Jpbi9zaAorQFNFVF9NQUtFQAorCitzcmNkaXIgPSBAc3JjZGlyQAordG9wX3NyY2RpciA9IEB0b3Bfc3JjZGlyQAorVlBBVEggPSBAc3JjZGlyQAorCitwcmVmaXggPSBAcHJlZml4QAorZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACitkYXRhcm9vdGRpciA9IEBkYXRhcm9vdGRpckAKK2RhdGFkaXIgPSBAZGF0YWRpckAKK2xvY2FsZWRpciA9IEBsb2NhbGVkaXJACitnZXR0ZXh0c3JjZGlyID0gJChkYXRhZGlyKS9nZXR0ZXh0L3BvCisKK0lOU1RBTEwgPSBASU5TVEFMTEAKK0lOU1RBTExfREFUQSA9IEBJTlNUQUxMX0RBVEFACisKKyMgV2UgdXNlICQobWtkaXJfcCkuCisjIEluIGF1dG9tYWtlIDw9IDEuOS54LCAkKG1rZGlyX3ApIGlzIGRlZmluZWQgZWl0aGVyIGFzICJta2RpciAtcCAtLSIgb3IgYXMKKyMgIiQobWtpbnN0YWxsZGlycykiIG9yIGFzICIkKGluc3RhbGxfc2gpIC1kIi4gRm9yIHRoZXNlIGF1dG9tYWtlIHZlcnNpb25zLAorIyBAaW5zdGFsbF9zaEAgZG9lcyBub3Qgc3RhcnQgd2l0aCAkKFNIRUxMKSwgc28gd2UgYWRkIGl0LgorIyBJbiBhdXRvbWFrZSA+PSAxLjEwLCBAbWtkaXJfcEAgaXMgZGVyaXZlZCBmcm9tICR7TUtESVJfUH0sIHdoaWNoIGlzIGRlZmluZWQKKyMgZWl0aGVyIGFzICIvcGF0aC90by9ta2RpciAtcCIgb3IgIi4uLi9pbnN0YWxsLXNoIC1jIC1kIi4gRm9yIHRoZXNlIGF1dG9tYWtlCisjIHZlcnNpb25zLCAkKG1raW5zdGFsbGRpcnMpIGFuZCAkKGluc3RhbGxfc2gpIGFyZSB1bnVzZWQuCitta2luc3RhbGxkaXJzID0gJChTSEVMTCkgQGluc3RhbGxfc2hAIC1kCitpbnN0YWxsX3NoID0gJChTSEVMTCkgQGluc3RhbGxfc2hACitNS0RJUl9QID0gQE1LRElSX1BACitta2Rpcl9wID0gQG1rZGlyX3BACisKKyMgV2hlbiBidWlsZGluZyBnZXR0ZXh0LXRvb2xzLCB3ZSBwcmVmZXIgdG8gdXNlIHRoZSBidWlsdCBwcm9ncmFtcworIyByYXRoZXIgdGhhbiBpbnN0YWxsZWQgcHJvZ3JhbXMuICBIb3dldmVyLCB3ZSBjYW4ndCBkbyB0aGF0IHdoZW4gd2UKKyMgYXJlIGNyb3NzIGNvbXBpbGluZy4KK0NST1NTX0NPTVBJTElORyA9IEBDUk9TU19DT01QSUxJTkdACisKK0dNU0dGTVRfID0gQEdNU0dGTVRACitHTVNHRk1UX25vID0gQEdNU0dGTVRACitHTVNHRk1UX3llcyA9IEBHTVNHRk1UXzAxNUAKK0dNU0dGTVQgPSAkKEdNU0dGTVRfJChVU0VfTVNHQ1RYVCkpCitNU0dGTVRfID0gQE1TR0ZNVEAKK01TR0ZNVF9ubyA9IEBNU0dGTVRACitNU0dGTVRfeWVzID0gQE1TR0ZNVF8wMTVACitNU0dGTVQgPSAkKE1TR0ZNVF8kKFVTRV9NU0dDVFhUKSkKK1hHRVRURVhUXyA9IEBYR0VUVEVYVEAKK1hHRVRURVhUX25vID0gQFhHRVRURVhUQAorWEdFVFRFWFRfeWVzID0gQFhHRVRURVhUXzAxNUAKK1hHRVRURVhUID0gJChYR0VUVEVYVF8kKFVTRV9NU0dDVFhUKSkKK01TR01FUkdFID0gbXNnbWVyZ2UKK01TR01FUkdFX1VQREFURSA9IEBNU0dNRVJHRUAgLS11cGRhdGUKK01TR0lOSVQgPSBtc2dpbml0CitNU0dDT05WID0gbXNnY29udgorTVNHRklMVEVSID0gbXNnZmlsdGVyCisKK1BPRklMRVMgPSBAUE9GSUxFU0AKK0dNT0ZJTEVTID0gQEdNT0ZJTEVTQAorVVBEQVRFUE9GSUxFUyA9IEBVUERBVEVQT0ZJTEVTQAorRFVNTVlQT0ZJTEVTID0gQERVTU1ZUE9GSUxFU0AKK0RJU1RGSUxFUy5jb21tb24gPSBNYWtlZmlsZS5pbi5pbiByZW1vdmUtcG90Y2RhdGUuc2luIFwKKyQoRElTVEZJTEVTLmNvbW1vbi5leHRyYTEpICQoRElTVEZJTEVTLmNvbW1vbi5leHRyYTIpICQoRElTVEZJTEVTLmNvbW1vbi5leHRyYTMpCitESVNURklMRVMgPSAkKERJU1RGSUxFUy5jb21tb24pIE1ha2V2YXJzIFBPVEZJTEVTLmluIFwKKyQoUE9GSUxFUykgJChHTU9GSUxFUykgXAorJChESVNURklMRVMuZXh0cmExKSAkKERJU1RGSUxFUy5leHRyYTIpICQoRElTVEZJTEVTLmV4dHJhMykKKworUE9URklMRVMgPSBcCisKK0NBVEFMT0dTID0gQENBVEFMT0dTQAorCitQT0ZJTEVTREVQU18gPSAkKHNyY2RpcikvJChET01BSU4pLnBvdAorUE9GSUxFU0RFUFNfeWVzID0gJChQT0ZJTEVTREVQU18pCitQT0ZJTEVTREVQU19ubyA9CitQT0ZJTEVTREVQUyA9ICQoUE9GSUxFU0RFUFNfJChQT19ERVBFTkRTX09OX1BPVCkpCisKK0RJU1RGSUxFU0RFUFNfID0gdXBkYXRlLXBvCitESVNURklMRVNERVBTX3llcyA9ICQoRElTVEZJTEVTREVQU18pCitESVNURklMRVNERVBTX25vID0KK0RJU1RGSUxFU0RFUFMgPSAkKERJU1RGSUxFU0RFUFNfJChESVNUX0RFUEVORFNfT05fVVBEQVRFX1BPKSkKKworIyBNYWtldmFycyBnZXRzIGluc2VydGVkIGhlcmUuIChEb24ndCByZW1vdmUgdGhpcyBsaW5lISkKKworLlNVRkZJWEVTOgorLlNVRkZJWEVTOiAucG8gLmdtbyAubW8gLnNlZCAuc2luIC5ub3AgLnBvLWNyZWF0ZSAucG8tdXBkYXRlCisKKy5wby5tbzoKKwlAZWNobyAiJChNU0dGTVQpIC1jIC1vICRAICQ8IjsgXAorCSQoTVNHRk1UKSAtYyAtbyB0LSRAICQ8ICYmIG12IHQtJEAgJEAKKworLnBvLmdtbzoKKwlAbGFuZz1gZWNobyAkKiB8IHNlZCAtZSAncywuKi8sLCdgOyBcCisJdGVzdCAiJChzcmNkaXIpIiA9IC4gJiYgY2RjbWQ9IiIgfHwgY2RjbWQ9ImNkICQoc3JjZGlyKSAmJiAiOyBcCisJZWNobyAiJCR7Y2RjbWR9cm0gLWYgJCR7bGFuZ30uZ21vICYmICQoR01TR0ZNVCkgLWMgLS1zdGF0aXN0aWNzIC0tdmVyYm9zZSAtbyAkJHtsYW5nfS5nbW8gJCR7bGFuZ30ucG8iOyBcCisJY2QgJChzcmNkaXIpICYmIHJtIC1mICQke2xhbmd9LmdtbyAmJiAkKEdNU0dGTVQpIC1jIC0tc3RhdGlzdGljcyAtLXZlcmJvc2UgLW8gdC0kJHtsYW5nfS5nbW8gJCR7bGFuZ30ucG8gJiYgbXYgdC0kJHtsYW5nfS5nbW8gJCR7bGFuZ30uZ21vCisKKy5zaW4uc2VkOgorCXNlZCAtZSAnL14jL2QnICQ8ID4gdC0kQAorCW12IHQtJEAgJEAKKworCithbGw6IGFsbC1AVVNFX05MU0AKKworYWxsLXllczogc3RhbXAtcG8KK2FsbC1ubzoKKworIyBFbnN1cmUgdGhhdCB0aGUgZ2V0dGV4dCBtYWNyb3MgYW5kIHRoaXMgTWFrZWZpbGUuaW4uaW4gYXJlIGluIHN5bmMuCitDSEVDS19NQUNST19WRVJTSU9OID0gXAorCXRlc3QgIiQoR0VUVEVYVF9NQUNST19WRVJTSU9OKSIgPSAiQEdFVFRFWFRfTUFDUk9fVkVSU0lPTkAiIFwKKwkgIHx8IHsgZWNobyAiKioqIGVycm9yOiBnZXR0ZXh0IGluZnJhc3RydWN0dXJlIG1pc21hdGNoOiB1c2luZyBhIE1ha2VmaWxlLmluLmluIGZyb20gZ2V0dGV4dCB2ZXJzaW9uICQoR0VUVEVYVF9NQUNST19WRVJTSU9OKSBidXQgdGhlIGF1dG9jb25mIG1hY3JvcyBhcmUgZnJvbSBnZXR0ZXh0IHZlcnNpb24gQEdFVFRFWFRfTUFDUk9fVkVSU0lPTkAiIDE+JjI7IFwKKwkgICAgICAgZXhpdCAxOyBcCisJICAgICB9CisKKyMgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QgaXMgb25seSBjcmVhdGVkIHdoZW4gbmVlZGVkLiBXaGVuIHhnZXR0ZXh0IGZpbmRzIG5vCisjIGludGVybmF0aW9uYWxpemVkIG1lc3NhZ2VzLCBubyAkKHNyY2RpcikvJChET01BSU4pLnBvdCBpcyBjcmVhdGVkIChiZWNhdXNlCisjIHdlIGRvbid0IHdhbnQgdG8gYm90aGVyIHRyYW5zbGF0b3JzIHdpdGggZW1wdHkgUE9UIGZpbGVzKS4gV2UgYXNzdW1lIHRoYXQKKyMgTElOR1VBUyBpcyBlbXB0eSBpbiB0aGlzIGNhc2UsIGkuZS4gJChQT0ZJTEVTKSBhbmQgJChHTU9GSUxFUykgYXJlIGVtcHR5LgorIyBJbiB0aGlzIGNhc2UsIHN0YW1wLXBvIGlzIGEgbm9wIChpLmUuIGEgcGhvbnkgdGFyZ2V0KS4KKworIyBzdGFtcC1wbyBpcyBhIHRpbWVzdGFtcCBkZW5vdGluZyB0aGUgbGFzdCB0aW1lIGF0IHdoaWNoIHRoZSBDQVRBTE9HUyBoYXZlCisjIGJlZW4gbG9vc2VseSB1cGRhdGVkLiBJdHMgcHVycG9zZSBpcyB0aGF0IHdoZW4gYSBkZXZlbG9wZXIgb3IgdHJhbnNsYXRvcgorIyBjaGVja3Mgb3V0IHRoZSBwYWNrYWdlIHZpYSBDVlMsIGFuZCB0aGUgJChET01BSU4pLnBvdCBmaWxlIGlzIG5vdCBpbiBDVlMsCisjICJtYWtlIiB3aWxsIHVwZGF0ZSB0aGUgJChET01BSU4pLnBvdCBhbmQgdGhlICQoQ0FUQUxPR1MpLCBidXQgc3Vic2VxdWVudAorIyBpbnZvY2F0aW9ucyBvZiAibWFrZSIgd2lsbCBkbyBub3RoaW5nLiBUaGlzIHRpbWVzdGFtcCB3b3VsZCBub3QgYmUgbmVjZXNzYXJ5CisjIGlmIHVwZGF0aW5nIHRoZSAkKENBVEFMT0dTKSB3b3VsZCBhbHdheXMgdG91Y2ggdGhlbTsgaG93ZXZlciwgdGhlIHJ1bGUgZm9yCisjICQoUE9GSUxFUykgaGFzIGJlZW4gZGVzaWduZWQgdG8gbm90IHRvdWNoIGZpbGVzIHRoYXQgZG9uJ3QgbmVlZCB0byBiZQorIyBjaGFuZ2VkLgorc3RhbXAtcG86ICQoc3JjZGlyKS8kKERPTUFJTikucG90CisJQCQoQ0hFQ0tfTUFDUk9fVkVSU0lPTikKKwl0ZXN0ICEgLWYgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QgfHwgXAorCSAgdGVzdCAteiAiJChHTU9GSUxFUykiIHx8ICQoTUFLRSkgJChHTU9GSUxFUykKKwlAdGVzdCAhIC1mICQoc3JjZGlyKS8kKERPTUFJTikucG90IHx8IHsgXAorCSAgZWNobyAidG91Y2ggc3RhbXAtcG8iICYmIFwKKwkgIGVjaG8gdGltZXN0YW1wID4gc3RhbXAtcG9UICYmIFwKKwkgIG12IHN0YW1wLXBvVCBzdGFtcC1wbzsgXAorCX0KKworIyBOb3RlOiBUYXJnZXQgJ2FsbCcgbXVzdCBub3QgZGVwZW5kIG9uIHRhcmdldCAnJChET01BSU4pLnBvdC11cGRhdGUnLAorIyBvdGhlcndpc2UgcGFja2FnZXMgbGlrZSBHQ0MgY2FuIG5vdCBiZSBidWlsdCBpZiBvbmx5IHBhcnRzIG9mIHRoZSBzb3VyY2UKKyMgaGF2ZSBiZWVuIGRvd25sb2FkZWQuCisKKyMgVGhpcyB0YXJnZXQgcmVidWlsZHMgJChET01BSU4pLnBvdDsgaXQgaXMgYW4gZXhwZW5zaXZlIG9wZXJhdGlvbi4KKyMgTm90ZSB0aGF0ICQoRE9NQUlOKS5wb3QgaXMgbm90IHRvdWNoZWQgaWYgaXQgZG9lc24ndCBuZWVkIHRvIGJlIGNoYW5nZWQuCisjIFRoZSBkZXRlcm1pbmF0aW9uIG9mIHdoZXRoZXIgdGhlIHBhY2thZ2UgeHl6IGlzIGEgR05VIG9uZSBpcyBiYXNlZCBvbiB0aGUKKyMgaGV1cmlzdGljIHdoZXRoZXIgc29tZSBmaWxlIGluIHRoZSB0b3AgbGV2ZWwgZGlyZWN0b3J5IG1lbnRpb25zICJHTlUgeHl6Ii4KKyMgSWYgR05VICdmaW5kJyBpcyBhdmFpbGFibGUsIHdlIGF2b2lkIGdyZXBwaW5nIHRocm91Z2ggbW9uc3RlciBmaWxlcy4KKyQoRE9NQUlOKS5wb3QtdXBkYXRlOiAkKFBPVEZJTEVTKSAkKHNyY2RpcikvUE9URklMRVMuaW4gcmVtb3ZlLXBvdGNkYXRlLnNlZAorCXBhY2thZ2VfZ251PSIkKFBBQ0tBR0VfR05VKSI7IFwKKwl0ZXN0IC1uICIkJHBhY2thZ2VfZ251IiB8fCB7IFwKKwkgIGlmIHsgaWYgKExDX0FMTD1DIGZpbmQgLS12ZXJzaW9uKSAyPi9kZXYvbnVsbCB8IGdyZXAgR05VID4vZGV2L251bGw7IHRoZW4gXAorCQkgTENfQUxMPUMgZmluZCAtTCAkKHRvcF9zcmNkaXIpIC1tYXhkZXB0aCAxIC10eXBlIGYgXAorCQkJICAgICAgIC1zaXplIC0xMDAwMDAwMGMgLWV4ZWMgZ3JlcCAnR05VIEBQQUNLQUdFQCcgXAorCQkJICAgICAgIC9kZXYvbnVsbCAne30nICc7JyAyPi9kZXYvbnVsbDsgXAorCSAgICAgICBlbHNlIFwKKwkJIExDX0FMTD1DIGdyZXAgJ0dOVSBAUEFDS0FHRUAnICQodG9wX3NyY2RpcikvKiAyPi9kZXYvbnVsbDsgXAorCSAgICAgICBmaTsgXAorCSAgICAgfSB8IGdyZXAgLXYgJ2xpYnRvb2w6JyA+L2Rldi9udWxsOyB0aGVuIFwKKwkgICAgIHBhY2thZ2VfZ251PXllczsgXAorCSAgIGVsc2UgXAorCSAgICAgcGFja2FnZV9nbnU9bm87IFwKKwkgICBmaTsgXAorCX07IFwKKwlpZiB0ZXN0ICIkJHBhY2thZ2VfZ251IiA9ICJ5ZXMiOyB0aGVuIFwKKwkgIHBhY2thZ2VfcHJlZml4PSdHTlUgJzsgXAorCWVsc2UgXAorCSAgcGFja2FnZV9wcmVmaXg9Jyc7IFwKKwlmaTsgXAorCWlmIHRlc3QgLW4gJyQoTVNHSURfQlVHU19BRERSRVNTKScgfHwgdGVzdCAnJChQQUNLQUdFX0JVR1JFUE9SVCknID0gJ0AnUEFDS0FHRV9CVUdSRVBPUlQnQCc7IHRoZW4gXAorCSAgbXNnaWRfYnVnc19hZGRyZXNzPSckKE1TR0lEX0JVR1NfQUREUkVTUyknOyBcCisJZWxzZSBcCisJICBtc2dpZF9idWdzX2FkZHJlc3M9JyQoUEFDS0FHRV9CVUdSRVBPUlQpJzsgXAorCWZpOyBcCisJY2FzZSBgJChYR0VUVEVYVCkgLS12ZXJzaW9uIHwgc2VkIDFxIHwgc2VkIC1lICdzLF5bXjAtOV0qLCwnYCBpbiBcCisJICAnJyB8IDAuWzAtOV0gfCAwLlswLTldLiogfCAwLjFbMC01XSB8IDAuMVswLTVdLiogfCAwLjE2IHwgMC4xNi5bMC0xXSopIFwKKwkgICAgJChYR0VUVEVYVCkgLS1kZWZhdWx0LWRvbWFpbj0kKERPTUFJTikgLS1kaXJlY3Rvcnk9JCh0b3Bfc3JjZGlyKSBcCisJICAgICAgLS1hZGQtY29tbWVudHM9VFJBTlNMQVRPUlM6ICQoWEdFVFRFWFRfT1BUSU9OUykgQFhHRVRURVhUX0VYVFJBX09QVElPTlNAIFwKKwkgICAgICAtLWZpbGVzLWZyb209JChzcmNkaXIpL1BPVEZJTEVTLmluIFwKKwkgICAgICAtLWNvcHlyaWdodC1ob2xkZXI9JyQoQ09QWVJJR0hUX0hPTERFUiknIFwKKwkgICAgICAtLW1zZ2lkLWJ1Z3MtYWRkcmVzcz0iJCRtc2dpZF9idWdzX2FkZHJlc3MiIFwKKwkgICAgOzsgXAorCSAgKikgXAorCSAgICAkKFhHRVRURVhUKSAtLWRlZmF1bHQtZG9tYWluPSQoRE9NQUlOKSAtLWRpcmVjdG9yeT0kKHRvcF9zcmNkaXIpIFwKKwkgICAgICAtLWFkZC1jb21tZW50cz1UUkFOU0xBVE9SUzogJChYR0VUVEVYVF9PUFRJT05TKSBAWEdFVFRFWFRfRVhUUkFfT1BUSU9OU0AgXAorCSAgICAgIC0tZmlsZXMtZnJvbT0kKHNyY2RpcikvUE9URklMRVMuaW4gXAorCSAgICAgIC0tY29weXJpZ2h0LWhvbGRlcj0nJChDT1BZUklHSFRfSE9MREVSKScgXAorCSAgICAgIC0tcGFja2FnZS1uYW1lPSIkJHtwYWNrYWdlX3ByZWZpeH1AUEFDS0FHRUAiIFwKKwkgICAgICAtLXBhY2thZ2UtdmVyc2lvbj0nQFZFUlNJT05AJyBcCisJICAgICAgLS1tc2dpZC1idWdzLWFkZHJlc3M9IiQkbXNnaWRfYnVnc19hZGRyZXNzIiBcCisJICAgIDs7IFwKKwllc2FjCisJdGVzdCAhIC1mICQoRE9NQUlOKS5wbyB8fCB7IFwKKwkgIGlmIHRlc3QgLWYgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QtaGVhZGVyOyB0aGVuIFwKKwkgICAgc2VkIC1lICcxLC9eIyQkL2QnIDwgJChET01BSU4pLnBvID4gJChET01BSU4pLjFwbyAmJiBcCisJICAgIGNhdCAkKHNyY2RpcikvJChET01BSU4pLnBvdC1oZWFkZXIgJChET01BSU4pLjFwbyA+ICQoRE9NQUlOKS5wbzsgXAorCSAgICBybSAtZiAkKERPTUFJTikuMXBvOyBcCisJICBmaTsgXAorCSAgaWYgdGVzdCAtZiAkKHNyY2RpcikvJChET01BSU4pLnBvdDsgdGhlbiBcCisJICAgIHNlZCAtZiByZW1vdmUtcG90Y2RhdGUuc2VkIDwgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QgPiAkKERPTUFJTikuMXBvICYmIFwKKwkgICAgc2VkIC1mIHJlbW92ZS1wb3RjZGF0ZS5zZWQgPCAkKERPTUFJTikucG8gPiAkKERPTUFJTikuMnBvICYmIFwKKwkgICAgaWYgY21wICQoRE9NQUlOKS4xcG8gJChET01BSU4pLjJwbyA+L2Rldi9udWxsIDI+JjE7IHRoZW4gXAorCSAgICAgIHJtIC1mICQoRE9NQUlOKS4xcG8gJChET01BSU4pLjJwbyAkKERPTUFJTikucG87IFwKKwkgICAgZWxzZSBcCisJICAgICAgcm0gLWYgJChET01BSU4pLjFwbyAkKERPTUFJTikuMnBvICQoc3JjZGlyKS8kKERPTUFJTikucG90ICYmIFwKKwkgICAgICBtdiAkKERPTUFJTikucG8gJChzcmNkaXIpLyQoRE9NQUlOKS5wb3Q7IFwKKwkgICAgZmk7IFwKKwkgIGVsc2UgXAorCSAgICBtdiAkKERPTUFJTikucG8gJChzcmNkaXIpLyQoRE9NQUlOKS5wb3Q7IFwKKwkgIGZpOyBcCisJfQorCisjIFRoaXMgcnVsZSBoYXMgbm8gZGVwZW5kZW5jaWVzOiB3ZSBkb24ndCBuZWVkIHRvIHVwZGF0ZSAkKERPTUFJTikucG90IGF0CisjIGV2ZXJ5ICJtYWtlIiBpbnZvY2F0aW9uLCBvbmx5IGNyZWF0ZSBpdCB3aGVuIGl0IGlzIG1pc3NpbmcuCisjIE9ubHkgIm1ha2UgJChET01BSU4pLnBvdC11cGRhdGUiIG9yICJtYWtlIGRpc3QiIHdpbGwgZm9yY2UgYW4gdXBkYXRlLgorJChzcmNkaXIpLyQoRE9NQUlOKS5wb3Q6CisJJChNQUtFKSAkKERPTUFJTikucG90LXVwZGF0ZQorCisjIFRoaXMgdGFyZ2V0IHJlYnVpbGRzIGEgUE8gZmlsZSBpZiAkKERPTUFJTikucG90IGhhcyBjaGFuZ2VkLgorIyBOb3RlIHRoYXQgYSBQTyBmaWxlIGlzIG5vdCB0b3VjaGVkIGlmIGl0IGRvZXNuJ3QgbmVlZCB0byBiZSBjaGFuZ2VkLgorJChQT0ZJTEVTKTogJChQT0ZJTEVTREVQUykKKwlAbGFuZz1gZWNobyAkQCB8IHNlZCAtZSAncywuKi8sLCcgLWUgJ3MvXC5wbyQkLy8nYDsgXAorCWlmIHRlc3QgLWYgIiQoc3JjZGlyKS8kJHtsYW5nfS5wbyI7IHRoZW4gXAorCSAgdGVzdCAtZiAkKHNyY2RpcikvJChET01BSU4pLnBvdCB8fCAkKE1BS0UpICQoc3JjZGlyKS8kKERPTUFJTikucG90OyBcCisJICB0ZXN0ICIkKHNyY2RpcikiID0gLiAmJiBjZGNtZD0iIiB8fCBjZGNtZD0iY2QgJChzcmNkaXIpICYmICI7IFwKKwkgIGVjaG8gIiQke2NkY21kfSQoTVNHTUVSR0VfVVBEQVRFKSAkKE1TR01FUkdFX09QVElPTlMpIC0tbGFuZz0kJHtsYW5nfSAkJHtsYW5nfS5wbyAkKERPTUFJTikucG90IjsgXAorCSAgY2QgJChzcmNkaXIpIFwKKwkgICAgJiYgeyBjYXNlIGAkKE1TR01FUkdFKSAtLXZlcnNpb24gfCBzZWQgMXEgfCBzZWQgLWUgJ3MsXlteMC05XSosLCdgIGluIFwKKwkgICAgICAgICAgICcnIHwgMC5bMC05XSB8IDAuWzAtOV0uKiB8IDAuMVswLTddIHwgMC4xWzAtN10uKikgXAorCSAgICAgICAgICAgICAkKE1TR01FUkdFX1VQREFURSkgJChNU0dNRVJHRV9PUFRJT05TKSAkJHtsYW5nfS5wbyAkKERPTUFJTikucG90OzsgXAorCSAgICAgICAgICAgKikgXAorCSAgICAgICAgICAgICAkKE1TR01FUkdFX1VQREFURSkgJChNU0dNRVJHRV9PUFRJT05TKSAtLWxhbmc9JCR7bGFuZ30gJCR7bGFuZ30ucG8gJChET01BSU4pLnBvdDs7IFwKKwkgICAgICAgICBlc2FjOyBcCisJICAgICAgIH07IFwKKwllbHNlIFwKKwkgICQoTUFLRSkgJCR7bGFuZ30ucG8tY3JlYXRlOyBcCisJZmkKKworCitpbnN0YWxsOiBpbnN0YWxsLWV4ZWMgaW5zdGFsbC1kYXRhCitpbnN0YWxsLWV4ZWM6CitpbnN0YWxsLWRhdGE6IGluc3RhbGwtZGF0YS1AVVNFX05MU0AKKwlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIjsgdGhlbiBcCisJICAkKG1rZGlyX3ApICQoREVTVERJUikkKGdldHRleHRzcmNkaXIpOyBcCisJICBmb3IgZmlsZSBpbiAkKERJU1RGSUxFUy5jb21tb24pIE1ha2V2YXJzLnRlbXBsYXRlOyBkbyBcCisJICAgICQoSU5TVEFMTF9EQVRBKSAkKHNyY2RpcikvJCRmaWxlIFwKKwkJCSAgICAkKERFU1RESVIpJChnZXR0ZXh0c3JjZGlyKS8kJGZpbGU7IFwKKwkgIGRvbmU7IFwKKwkgIGZvciBmaWxlIGluIE1ha2V2YXJzOyBkbyBcCisJICAgIHJtIC1mICQoREVTVERJUikkKGdldHRleHRzcmNkaXIpLyQkZmlsZTsgXAorCSAgZG9uZTsgXAorCWVsc2UgXAorCSAgOiA7IFwKKwlmaQoraW5zdGFsbC1kYXRhLW5vOiBhbGwKK2luc3RhbGwtZGF0YS15ZXM6IGFsbAorCUBjYXRhbG9ncz0nJChDQVRBTE9HUyknOyBcCisJZm9yIGNhdCBpbiAkJGNhdGFsb2dzOyBkbyBcCisJICBjYXQ9YGJhc2VuYW1lICQkY2F0YDsgXAorCSAgbGFuZz1gZWNobyAkJGNhdCB8IHNlZCAtZSAncy9cLmdtbyQkLy8nYDsgXAorCSAgZGlyPSQobG9jYWxlZGlyKS8kJGxhbmcvTENfTUVTU0FHRVM7IFwKKwkgICQobWtkaXJfcCkgJChERVNURElSKSQkZGlyOyBcCisJICBpZiB0ZXN0IC1yICQkY2F0OyB0aGVuIHJlYWxjYXQ9JCRjYXQ7IGVsc2UgcmVhbGNhdD0kKHNyY2RpcikvJCRjYXQ7IGZpOyBcCisJICAkKElOU1RBTExfREFUQSkgJCRyZWFsY2F0ICQoREVTVERJUikkJGRpci8kKERPTUFJTikubW87IFwKKwkgIGVjaG8gImluc3RhbGxpbmcgJCRyZWFsY2F0IGFzICQoREVTVERJUikkJGRpci8kKERPTUFJTikubW8iOyBcCisJICBmb3IgbGMgaW4gJycgJChFWFRSQV9MT0NBTEVfQ0FURUdPUklFUyk7IGRvIFwKKwkgICAgaWYgdGVzdCAtbiAiJCRsYyI7IHRoZW4gXAorCSAgICAgIGlmIChjZCAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZyAmJiBMQ19BTEw9QyBscyAtbCAtZCAkJGxjIDI+L2Rldi9udWxsKSB8IGdyZXAgJyAtPiAnID4vZGV2L251bGw7IHRoZW4gXAorCSAgICAgICAgbGluaz1gY2QgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcgJiYgTENfQUxMPUMgbHMgLWwgLWQgJCRsYyB8IHNlZCAtZSAncy9eLiogLT4gLy8nYDsgXAorCSAgICAgICAgbXYgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYyAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLm9sZDsgXAorCSAgICAgICAgbWtkaXIgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYzsgXAorCSAgICAgICAgKGNkICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMub2xkICYmIFwKKwkgICAgICAgICBmb3IgZmlsZSBpbiAqOyBkbyBcCisJICAgICAgICAgICBpZiB0ZXN0IC1mICQkZmlsZTsgdGhlbiBcCisJICAgICAgICAgICAgIGxuIC1zIC4uLyQkbGluay8kJGZpbGUgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy8kJGZpbGU7IFwKKwkgICAgICAgICAgIGZpOyBcCisJICAgICAgICAgZG9uZSk7IFwKKwkgICAgICAgIHJtIC1mICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMub2xkOyBcCisJICAgICAgZWxzZSBcCisJICAgICAgICBpZiB0ZXN0IC1kICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGM7IHRoZW4gXAorCSAgICAgICAgICA6OyBcCisJICAgICAgICBlbHNlIFwKKwkgICAgICAgICAgcm0gLWYgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYzsgXAorCSAgICAgICAgICBta2RpciAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjOyBcCisJICAgICAgICBmaTsgXAorCSAgICAgIGZpOyBcCisJICAgICAgcm0gLWYgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy8kKERPTUFJTikubW87IFwKKwkgICAgICBsbiAtcyAuLi9MQ19NRVNTQUdFUy8kKERPTUFJTikubW8gJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy8kKERPTUFJTikubW8gMj4vZGV2L251bGwgfHwgXAorCSAgICAgIGxuICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nL0xDX01FU1NBR0VTLyQoRE9NQUlOKS5tbyAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLyQoRE9NQUlOKS5tbyAyPi9kZXYvbnVsbCB8fCBcCisJICAgICAgY3AgLXAgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvTENfTUVTU0FHRVMvJChET01BSU4pLm1vICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMvJChET01BSU4pLm1vOyBcCisJICAgICAgZWNobyAiaW5zdGFsbGluZyAkJHJlYWxjYXQgbGluayBhcyAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLyQoRE9NQUlOKS5tbyI7IFwKKwkgICAgZmk7IFwKKwkgIGRvbmU7IFwKKwlkb25lCisKK2luc3RhbGwtc3RyaXA6IGluc3RhbGwKKworaW5zdGFsbGRpcnM6IGluc3RhbGxkaXJzLWV4ZWMgaW5zdGFsbGRpcnMtZGF0YQoraW5zdGFsbGRpcnMtZXhlYzoKK2luc3RhbGxkaXJzLWRhdGE6IGluc3RhbGxkaXJzLWRhdGEtQFVTRV9OTFNACisJaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC10b29scyI7IHRoZW4gXAorCSAgJChta2Rpcl9wKSAkKERFU1RESVIpJChnZXR0ZXh0c3JjZGlyKTsgXAorCWVsc2UgXAorCSAgOiA7IFwKKwlmaQoraW5zdGFsbGRpcnMtZGF0YS1ubzoKK2luc3RhbGxkaXJzLWRhdGEteWVzOgorCUBjYXRhbG9ncz0nJChDQVRBTE9HUyknOyBcCisJZm9yIGNhdCBpbiAkJGNhdGFsb2dzOyBkbyBcCisJICBjYXQ9YGJhc2VuYW1lICQkY2F0YDsgXAorCSAgbGFuZz1gZWNobyAkJGNhdCB8IHNlZCAtZSAncy9cLmdtbyQkLy8nYDsgXAorCSAgZGlyPSQobG9jYWxlZGlyKS8kJGxhbmcvTENfTUVTU0FHRVM7IFwKKwkgICQobWtkaXJfcCkgJChERVNURElSKSQkZGlyOyBcCisJICBmb3IgbGMgaW4gJycgJChFWFRSQV9MT0NBTEVfQ0FURUdPUklFUyk7IGRvIFwKKwkgICAgaWYgdGVzdCAtbiAiJCRsYyI7IHRoZW4gXAorCSAgICAgIGlmIChjZCAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZyAmJiBMQ19BTEw9QyBscyAtbCAtZCAkJGxjIDI+L2Rldi9udWxsKSB8IGdyZXAgJyAtPiAnID4vZGV2L251bGw7IHRoZW4gXAorCSAgICAgICAgbGluaz1gY2QgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcgJiYgTENfQUxMPUMgbHMgLWwgLWQgJCRsYyB8IHNlZCAtZSAncy9eLiogLT4gLy8nYDsgXAorCSAgICAgICAgbXYgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYyAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLm9sZDsgXAorCSAgICAgICAgbWtkaXIgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYzsgXAorCSAgICAgICAgKGNkICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMub2xkICYmIFwKKwkgICAgICAgICBmb3IgZmlsZSBpbiAqOyBkbyBcCisJICAgICAgICAgICBpZiB0ZXN0IC1mICQkZmlsZTsgdGhlbiBcCisJICAgICAgICAgICAgIGxuIC1zIC4uLyQkbGluay8kJGZpbGUgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy8kJGZpbGU7IFwKKwkgICAgICAgICAgIGZpOyBcCisJICAgICAgICAgZG9uZSk7IFwKKwkgICAgICAgIHJtIC1mICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMub2xkOyBcCisJICAgICAgZWxzZSBcCisJICAgICAgICBpZiB0ZXN0IC1kICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGM7IHRoZW4gXAorCSAgICAgICAgICA6OyBcCisJICAgICAgICBlbHNlIFwKKwkgICAgICAgICAgcm0gLWYgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYzsgXAorCSAgICAgICAgICBta2RpciAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjOyBcCisJICAgICAgICBmaTsgXAorCSAgICAgIGZpOyBcCisJICAgIGZpOyBcCisJICBkb25lOyBcCisJZG9uZQorCisjIERlZmluZSB0aGlzIGFzIGVtcHR5IHVudGlsIEkgZm91bmQgYSB1c2VmdWwgYXBwbGljYXRpb24uCitpbnN0YWxsY2hlY2s6CisKK3VuaW5zdGFsbDogdW5pbnN0YWxsLWV4ZWMgdW5pbnN0YWxsLWRhdGEKK3VuaW5zdGFsbC1leGVjOgordW5pbnN0YWxsLWRhdGE6IHVuaW5zdGFsbC1kYXRhLUBVU0VfTkxTQAorCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiOyB0aGVuIFwKKwkgIGZvciBmaWxlIGluICQoRElTVEZJTEVTLmNvbW1vbikgTWFrZXZhcnMudGVtcGxhdGU7IGRvIFwKKwkgICAgcm0gLWYgJChERVNURElSKSQoZ2V0dGV4dHNyY2RpcikvJCRmaWxlOyBcCisJICBkb25lOyBcCisJZWxzZSBcCisJICA6IDsgXAorCWZpCit1bmluc3RhbGwtZGF0YS1ubzoKK3VuaW5zdGFsbC1kYXRhLXllczoKKwljYXRhbG9ncz0nJChDQVRBTE9HUyknOyBcCisJZm9yIGNhdCBpbiAkJGNhdGFsb2dzOyBkbyBcCisJICBjYXQ9YGJhc2VuYW1lICQkY2F0YDsgXAorCSAgbGFuZz1gZWNobyAkJGNhdCB8IHNlZCAtZSAncy9cLmdtbyQkLy8nYDsgXAorCSAgZm9yIGxjIGluIExDX01FU1NBR0VTICQoRVhUUkFfTE9DQUxFX0NBVEVHT1JJRVMpOyBkbyBcCisJICAgIHJtIC1mICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMvJChET01BSU4pLm1vOyBcCisJICBkb25lOyBcCisJZG9uZQorCitjaGVjazogYWxsCisKK2luZm8gZHZpIHBzIHBkZiBodG1sIHRhZ3MgVEFHUyBjdGFncyBDVEFHUyBJRDoKKworbW9zdGx5Y2xlYW46CisJcm0gLWYgcmVtb3ZlLXBvdGNkYXRlLnNlZAorCXJtIC1mIHN0YW1wLXBvVAorCXJtIC1mIGNvcmUgY29yZS4qICQoRE9NQUlOKS5wbyAkKERPTUFJTikuMXBvICQoRE9NQUlOKS4ycG8gKi5uZXcucG8KKwlybSAtZnIgKi5vCisKK2NsZWFuOiBtb3N0bHljbGVhbgorCitkaXN0Y2xlYW46IGNsZWFuCisJcm0gLWYgTWFrZWZpbGUgTWFrZWZpbGUuaW4gUE9URklMRVMgKi5tbworCittYWludGFpbmVyLWNsZWFuOiBkaXN0Y2xlYW4KKwlAZWNobyAiVGhpcyBjb21tYW5kIGlzIGludGVuZGVkIGZvciBtYWludGFpbmVycyB0byB1c2U7IgorCUBlY2hvICJpdCBkZWxldGVzIGZpbGVzIHRoYXQgbWF5IHJlcXVpcmUgc3BlY2lhbCB0b29scyB0byByZWJ1aWxkLiIKKwlybSAtZiBzdGFtcC1wbyAkKEdNT0ZJTEVTKQorCitkaXN0ZGlyID0gJCh0b3BfYnVpbGRkaXIpLyQoUEFDS0FHRSktJChWRVJTSU9OKS8kKHN1YmRpcikKK2Rpc3QgZGlzdGRpcjoKKwl0ZXN0IC16ICIkKERJU1RGSUxFU0RFUFMpIiB8fCAkKE1BS0UpICQoRElTVEZJTEVTREVQUykKKwlAJChNQUtFKSBkaXN0MgorIyBUaGlzIGlzIGEgc2VwYXJhdGUgdGFyZ2V0IGJlY2F1c2UgJ3VwZGF0ZS1wbycgbXVzdCBiZSBleGVjdXRlZCBiZWZvcmUuCitkaXN0Mjogc3RhbXAtcG8gJChESVNURklMRVMpCisJZGlzdHM9IiQoRElTVEZJTEVTKSI7IFwKKwlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIjsgdGhlbiBcCisJICBkaXN0cz0iJCRkaXN0cyBNYWtldmFycy50ZW1wbGF0ZSI7IFwKKwlmaTsgXAorCWlmIHRlc3QgLWYgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3Q7IHRoZW4gXAorCSAgZGlzdHM9IiQkZGlzdHMgJChET01BSU4pLnBvdCBzdGFtcC1wbyI7IFwKKwlmaTsgXAorCWlmIHRlc3QgLWYgJChzcmNkaXIpL0NoYW5nZUxvZzsgdGhlbiBcCisJICBkaXN0cz0iJCRkaXN0cyBDaGFuZ2VMb2ciOyBcCisJZmk7IFwKKwlmb3IgaSBpbiAwIDEgMiAzIDQgNSA2IDcgOCA5OyBkbyBcCisJICBpZiB0ZXN0IC1mICQoc3JjZGlyKS9DaGFuZ2VMb2cuJCRpOyB0aGVuIFwKKwkgICAgZGlzdHM9IiQkZGlzdHMgQ2hhbmdlTG9nLiQkaSI7IFwKKwkgIGZpOyBcCisJZG9uZTsgXAorCWlmIHRlc3QgLWYgJChzcmNkaXIpL0xJTkdVQVM7IHRoZW4gZGlzdHM9IiQkZGlzdHMgTElOR1VBUyI7IGZpOyBcCisJZm9yIGZpbGUgaW4gJCRkaXN0czsgZG8gXAorCSAgaWYgdGVzdCAtZiAkJGZpbGU7IHRoZW4gXAorCSAgICBjcCAtcCAkJGZpbGUgJChkaXN0ZGlyKSB8fCBleGl0IDE7IFwKKwkgIGVsc2UgXAorCSAgICBjcCAtcCAkKHNyY2RpcikvJCRmaWxlICQoZGlzdGRpcikgfHwgZXhpdCAxOyBcCisJICBmaTsgXAorCWRvbmUKKwordXBkYXRlLXBvOiBNYWtlZmlsZQorCSQoTUFLRSkgJChET01BSU4pLnBvdC11cGRhdGUKKwl0ZXN0IC16ICIkKFVQREFURVBPRklMRVMpIiB8fCAkKE1BS0UpICQoVVBEQVRFUE9GSUxFUykKKwkkKE1BS0UpIHVwZGF0ZS1nbW8KKworIyBHZW5lcmFsIHJ1bGUgZm9yIGNyZWF0aW5nIFBPIGZpbGVzLgorCisubm9wLnBvLWNyZWF0ZToKKwlAbGFuZz1gZWNobyAkQCB8IHNlZCAtZSAncy9cLnBvLWNyZWF0ZSQkLy8nYDsgXAorCWVjaG8gIkZpbGUgJCRsYW5nLnBvIGRvZXMgbm90IGV4aXN0LiBJZiB5b3UgYXJlIGEgdHJhbnNsYXRvciwgeW91IGNhbiBjcmVhdGUgaXQgdGhyb3VnaCAnbXNnaW5pdCcuIiAxPiYyOyBcCisJZXhpdCAxCisKKyMgR2VuZXJhbCBydWxlIGZvciB1cGRhdGluZyBQTyBmaWxlcy4KKworLm5vcC5wby11cGRhdGU6CisJQGxhbmc9YGVjaG8gJEAgfCBzZWQgLWUgJ3MvXC5wby11cGRhdGUkJC8vJ2A7IFwKKwlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIiAmJiB0ZXN0ICIkKENST1NTX0NPTVBJTElORykiICE9ICJ5ZXMiOyB0aGVuIFBBVEg9YHB3ZGAvLi4vc3JjOiQkUEFUSDsgZmk7IFwKKwl0bXBkaXI9YHB3ZGA7IFwKKwllY2hvICIkJGxhbmc6IjsgXAorCXRlc3QgIiQoc3JjZGlyKSIgPSAuICYmIGNkY21kPSIiIHx8IGNkY21kPSJjZCAkKHNyY2RpcikgJiYgIjsgXAorCWVjaG8gIiQke2NkY21kfSQoTVNHTUVSR0UpICQoTVNHTUVSR0VfT1BUSU9OUykgLS1sYW5nPSQkbGFuZyAkJGxhbmcucG8gJChET01BSU4pLnBvdCAtbyAkJGxhbmcubmV3LnBvIjsgXAorCWNkICQoc3JjZGlyKTsgXAorCWlmIHsgY2FzZSBgJChNU0dNRVJHRSkgLS12ZXJzaW9uIHwgc2VkIDFxIHwgc2VkIC1lICdzLF5bXjAtOV0qLCwnYCBpbiBcCisJICAgICAgICcnIHwgMC5bMC05XSB8IDAuWzAtOV0uKiB8IDAuMVswLTddIHwgMC4xWzAtN10uKikgXAorCSAgICAgICAgICQoTVNHTUVSR0UpICQoTVNHTUVSR0VfT1BUSU9OUykgLW8gJCR0bXBkaXIvJCRsYW5nLm5ldy5wbyAkJGxhbmcucG8gJChET01BSU4pLnBvdDs7IFwKKwkgICAgICAgKikgXAorCSAgICAgICAgICQoTVNHTUVSR0UpICQoTVNHTUVSR0VfT1BUSU9OUykgLS1sYW5nPSQkbGFuZyAtbyAkJHRtcGRpci8kJGxhbmcubmV3LnBvICQkbGFuZy5wbyAkKERPTUFJTikucG90OzsgXAorCSAgICAgZXNhYzsgXAorCSAgIH07IHRoZW4gXAorCSAgaWYgY21wICQkbGFuZy5wbyAkJHRtcGRpci8kJGxhbmcubmV3LnBvID4vZGV2L251bGwgMj4mMTsgdGhlbiBcCisJICAgIHJtIC1mICQkdG1wZGlyLyQkbGFuZy5uZXcucG87IFwKKwkgIGVsc2UgXAorCSAgICBpZiBtdiAtZiAkJHRtcGRpci8kJGxhbmcubmV3LnBvICQkbGFuZy5wbzsgdGhlbiBcCisJICAgICAgOjsgXAorCSAgICBlbHNlIFwKKwkgICAgICBlY2hvICJtc2dtZXJnZSBmb3IgJCRsYW5nLnBvIGZhaWxlZDogY2Fubm90IG1vdmUgJCR0bXBkaXIvJCRsYW5nLm5ldy5wbyB0byAkJGxhbmcucG8iIDE+JjI7IFwKKwkgICAgICBleGl0IDE7IFwKKwkgICAgZmk7IFwKKwkgIGZpOyBcCisJZWxzZSBcCisJICBlY2hvICJtc2dtZXJnZSBmb3IgJCRsYW5nLnBvIGZhaWxlZCEiIDE+JjI7IFwKKwkgIHJtIC1mICQkdG1wZGlyLyQkbGFuZy5uZXcucG87IFwKKwlmaQorCiskKERVTU1ZUE9GSUxFUyk6CisKK3VwZGF0ZS1nbW86IE1ha2VmaWxlICQoR01PRklMRVMpCisJQDoKKworIyBSZWNyZWF0ZSBNYWtlZmlsZSBieSBpbnZva2luZyBjb25maWcuc3RhdHVzLiBFeHBsaWNpdGx5IGludm9rZSB0aGUgc2hlbGwsCisjIGJlY2F1c2UgZXhlY3V0aW9uIHBlcm1pc3Npb24gYml0cyBtYXkgbm90IHdvcmsgb24gdGhlIGN1cnJlbnQgZmlsZSBzeXN0ZW0uCisjIFVzZSBAU0hFTExALCB3aGljaCBpcyB0aGUgc2hlbGwgZGV0ZXJtaW5lZCBieSBhdXRvY29uZiBmb3IgdGhlIHVzZSBieSBpdHMKKyMgc2NyaXB0cywgbm90ICQoU0hFTEwpIHdoaWNoIGlzIGhhcmR3aXJlZCB0byAvYmluL3NoIGFuZCBtYXkgYmUgZGVmaWNpZW50LgorTWFrZWZpbGU6IE1ha2VmaWxlLmluLmluIE1ha2V2YXJzICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzIEBQT01BS0VGSUxFREVQU0AKKwljZCAkKHRvcF9idWlsZGRpcikgXAorCSAgJiYgQFNIRUxMQCAuL2NvbmZpZy5zdGF0dXMgJChzdWJkaXIpLyRALmluIHBvLWRpcmVjdG9yaWVzCisKK2ZvcmNlOgorCisjIFRlbGwgdmVyc2lvbnMgWzMuNTksMy42Mykgb2YgR05VIG1ha2Ugbm90IHRvIGV4cG9ydCBhbGwgdmFyaWFibGVzLgorIyBPdGhlcndpc2UgYSBzeXN0ZW0gbGltaXQgKGZvciBTeXNWIGF0IGxlYXN0KSBtYXkgYmUgZXhjZWVkZWQuCisuTk9FWFBPUlQ6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4xOS44LjEvYWNsb2NhbC50Z3ogYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4xOS44LjEvYWNsb2NhbC50Z3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWIyZDFmNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjE5LjguMS9hY2xvY2FsLnRnegpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4xOS44LjEvY29uZmlnLnJwYXRoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMTkuOC4xL2NvbmZpZy5ycGF0aApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45ODE4M2ZmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMTkuOC4xL2NvbmZpZy5ycGF0aApAQCAtMCwwICsxLDY4NCBAQAorIyEgL2Jpbi9zaAorIyBPdXRwdXQgYSBzeXN0ZW0gZGVwZW5kZW50IHNldCBvZiB2YXJpYWJsZXMsIGRlc2NyaWJpbmcgaG93IHRvIHNldCB0aGUKKyMgcnVuIHRpbWUgc2VhcmNoIHBhdGggb2Ygc2hhcmVkIGxpYnJhcmllcyBpbiBhbiBleGVjdXRhYmxlLgorIworIyAgIENvcHlyaWdodCAxOTk2LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjICAgVGFrZW4gZnJvbSBHTlUgbGlidG9vbCwgMjAwMQorIyAgIE9yaWdpbmFsbHkgYnkgR29yZG9uIE1hdHppZ2tlaXQgPGdvcmRAZ251LmFpLm1pdC5lZHU+LCAxOTk2CisjCisjICAgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gZ2l2ZXMKKyMgICB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LCB3aXRoIG9yIHdpdGhvdXQKKyMgICBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKyMKKyMgVGhlIGZpcnN0IGFyZ3VtZW50IHBhc3NlZCB0byB0aGlzIGZpbGUgaXMgdGhlIGNhbm9uaWNhbCBob3N0IHNwZWNpZmljYXRpb24sCisjICAgIENQVV9UWVBFLU1BTlVGQUNUVVJFUi1PUEVSQVRJTkdfU1lTVEVNCisjIG9yCisjICAgIENQVV9UWVBFLU1BTlVGQUNUVVJFUi1LRVJORUwtT1BFUkFUSU5HX1NZU1RFTQorIyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIENDLCBHQ0MsIExERkxBR1MsIExELCB3aXRoX2dudV9sZAorIyBzaG91bGQgYmUgc2V0IGJ5IHRoZSBjYWxsZXIuCisjCisjIFRoZSBzZXQgb2YgZGVmaW5lZCB2YXJpYWJsZXMgaXMgYXQgdGhlIGVuZCBvZiB0aGlzIHNjcmlwdC4KKworIyBLbm93biBsaW1pdGF0aW9uczoKKyMgLSBPbiBJUklYIDYuNSB3aXRoIENDPSJjYyIsIHRoZSBydW4gdGltZSBzZWFyY2ggcGF0Y2ggbXVzdCBub3QgYmUgbG9uZ2VyCisjICAgdGhhbiAyNTYgYnl0ZXMsIG90aGVyd2lzZSB0aGUgY29tcGlsZXIgZHJpdmVyIHdpbGwgZHVtcCBjb3JlLiBUaGUgb25seQorIyAgIGtub3duIHdvcmthcm91bmQgaXMgdG8gY2hvb3NlIHNob3J0ZXIgZGlyZWN0b3J5IG5hbWVzIGZvciB0aGUgYnVpbGQKKyMgICBkaXJlY3RvcnkgYW5kL29yIHRoZSBpbnN0YWxsYXRpb24gZGlyZWN0b3J5LgorCisjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSAnLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKKyMgd2hpY2ggbmVlZHMgJy5saWInKS4KK2xpYmV4dD1hCitzaHJleHQ9LnNvCisKK2hvc3Q9IiQxIgoraG9zdF9jcHU9YGVjaG8gIiRob3N0IiB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wxLydgCitob3N0X3ZlbmRvcj1gZWNobyAiJGhvc3QiIHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDIvJ2AKK2hvc3Rfb3M9YGVjaG8gIiRob3N0IiB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wzLydgCisKKyMgQ29kZSB0YWtlbiBmcm9tIGxpYnRvb2wubTQncyBfTFRfQ0NfQkFTRU5BTUUuCisKK2ZvciBjY190ZW1wIGluICRDQyIiOyBkbworICBjYXNlICRjY190ZW1wIGluCisgICAgY29tcGlsZSB8ICpbXFwvXWNvbXBpbGUgfCBjY2FjaGUgfCAqW1xcL11jY2FjaGUgKSA7OworICAgIGRpc3RjYyB8ICpbXFwvXWRpc3RjYyB8IHB1cmlmeSB8ICpbXFwvXXB1cmlmeSApIDs7CisgICAgXC0qKSA7OworICAgICopIGJyZWFrOzsKKyAgZXNhYworZG9uZQorY2NfYmFzZW5hbWU9YGVjaG8gIiRjY190ZW1wIiB8IHNlZCAtZSAncyVeLiovJSUnYAorCisjIENvZGUgdGFrZW4gZnJvbSBsaWJ0b29sLm00J3MgX0xUX0NPTVBJTEVSX1BJQy4KKword2w9CitpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICB3bD0nLVdsLCcKK2Vsc2UKKyAgY2FzZSAiJGhvc3Rfb3MiIGluCisgICAgYWl4KikKKyAgICAgIHdsPSctV2wsJworICAgICAgOzsKKyAgICBtaW5ndyogfCBjeWd3aW4qIHwgcHczMiogfCBvczIqIHwgY2VnY2MqKQorICAgICAgOzsKKyAgICBocHV4OSogfCBocHV4MTAqIHwgaHB1eDExKikKKyAgICAgIHdsPSctV2wsJworICAgICAgOzsKKyAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQorICAgICAgd2w9Jy1XbCwnCisgICAgICA7OworICAgIGxpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgICAgIGVjYyopCisgICAgICAgICAgd2w9Jy1XbCwnCisgICAgICAgICAgOzsKKyAgICAgICAgaWNjKiB8IGlmb3J0KikKKyAgICAgICAgICB3bD0nLVdsLCcKKyAgICAgICAgICA7OworICAgICAgICBsZjk1KikKKyAgICAgICAgICB3bD0nLVdsLCcKKyAgICAgICAgICA7OworICAgICAgICBuYWdmb3IqKQorICAgICAgICAgIHdsPSctV2wsLVdsLCwnCisgICAgICAgICAgOzsKKyAgICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQorICAgICAgICAgIHdsPSctV2wsJworICAgICAgICAgIDs7CisgICAgICAgIGNjYyopCisgICAgICAgICAgd2w9Jy1XbCwnCisgICAgICAgICAgOzsKKyAgICAgICAgeGwqIHwgYmd4bCogfCBiZ2YqIHwgbXBpeGwqKQorICAgICAgICAgIHdsPSctV2wsJworICAgICAgICAgIDs7CisgICAgICAgIGNvbW8pCisgICAgICAgICAgd2w9Jy1sb3B0PScKKyAgICAgICAgICA7OworICAgICAgICAqKQorICAgICAgICAgIGNhc2UgYCRDQyAtViAyPiYxIHwgc2VkIDVxYCBpbgorICAgICAgICAgICAgKlN1blwgRiogfCAqU3VuKkZvcnRyYW4qKQorICAgICAgICAgICAgICB3bD0KKyAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICpTdW5cIEMqKQorICAgICAgICAgICAgICB3bD0nLVdsLCcKKyAgICAgICAgICAgICAgOzsKKyAgICAgICAgICBlc2FjCisgICAgICAgICAgOzsKKyAgICAgIGVzYWMKKyAgICAgIDs7CisgICAgbmV3c29zNikKKyAgICAgIDs7CisgICAgKm50byogfCAqcW54KikKKyAgICAgIDs7CisgICAgb3NmMyogfCBvc2Y0KiB8IG9zZjUqKQorICAgICAgd2w9Jy1XbCwnCisgICAgICA7OworICAgIHJkb3MqKQorICAgICAgOzsKKyAgICBzb2xhcmlzKikKKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKKyAgICAgICAgICB3bD0nLVFvcHRpb24gbGQgJworICAgICAgICAgIDs7CisgICAgICAgICopCisgICAgICAgICAgd2w9Jy1XbCwnCisgICAgICAgICAgOzsKKyAgICAgIGVzYWMKKyAgICAgIDs7CisgICAgc3Vub3M0KikKKyAgICAgIHdsPSctUW9wdGlvbiBsZCAnCisgICAgICA7OworICAgIHN5c3Y0IHwgc3lzdjQuMnV3MiogfCBzeXN2NC4zKikKKyAgICAgIHdsPSctV2wsJworICAgICAgOzsKKyAgICBzeXN2NCpNUCopCisgICAgICA7OworICAgIHN5c3Y1KiB8IHVuaXh3YXJlKiB8IHNjbzMuMnY1KiB8IHNjbzV2NiogfCBPcGVuVU5JWCopCisgICAgICB3bD0nLVdsLCcKKyAgICAgIDs7CisgICAgdW5pY29zKikKKyAgICAgIHdsPSctV2wsJworICAgICAgOzsKKyAgICB1dHM0KikKKyAgICAgIDs7CisgIGVzYWMKK2ZpCisKKyMgQ29kZSB0YWtlbiBmcm9tIGxpYnRvb2wubTQncyBfTFRfTElOS0VSX1NITElCUy4KKworaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KK2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9CitoYXJkY29kZV9kaXJlY3Q9bm8KK2hhcmRjb2RlX21pbnVzX0w9bm8KKworY2FzZSAiJGhvc3Rfb3MiIGluCisgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICAjIEZJWE1FOiB0aGUgTVNWQysrIHBvcnQgaGFzbid0IGJlZW4gdGVzdGVkIGluIGEgbG9vb29uZyB0aW1lCisgICAgIyBXaGVuIG5vdCB1c2luZyBnY2MsIHdlIGN1cnJlbnRseSBhc3N1bWUgdGhhdCB3ZSBhcmUgdXNpbmcKKyAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgorICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorICAgICAgd2l0aF9nbnVfbGQ9bm8KKyAgICBmaQorICAgIDs7CisgIGludGVyaXgqKQorICAgICMgd2UganVzdCBob3BlL2Fzc3VtZSB0aGlzIGlzIGdjYyBhbmQgbm90IGM4OSAoPSBNU1ZDKyspCisgICAgd2l0aF9nbnVfbGQ9eWVzCisgICAgOzsKKyAgb3BlbmJzZCopCisgICAgd2l0aF9nbnVfbGQ9bm8KKyAgICA7OworZXNhYworCitsZF9zaGxpYnM9eWVzCitpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisgICMgU2V0IHNvbWUgZGVmYXVsdHMgZm9yIEdOVSBsZCB3aXRoIHNoYXJlZCBsaWJyYXJ5IHN1cHBvcnQuIFRoZXNlCisgICMgYXJlIHJlc2V0IGxhdGVyIGlmIHNoYXJlZCBsaWJyYXJpZXMgYXJlIG5vdCBzdXBwb3J0ZWQuIFB1dHRpbmcgdGhlbQorICAjIGhlcmUgYWxsb3dzIHRoZW0gdG8gYmUgb3ZlcnJpZGRlbiBpZiBuZWNlc3NhcnkuCisgICMgVW5saWtlIGxpYnRvb2wsIHdlIHVzZSAtcnBhdGggaGVyZSwgbm90IC0tcnBhdGgsIHNpbmNlIHRoZSBkb2N1bWVudGVkCisgICMgb3B0aW9uIG9mIEdOVSBsZCBpcyBjYWxsZWQgLXJwYXRoLCBub3QgLS1ycGF0aC4KKyAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICBjYXNlICIkaG9zdF9vcyIgaW4KKyAgICBhaXhbMy05XSopCisgICAgICAjIE9uIEFJWC9QUEMsIHRoZSBHTlUgbGlua2VyIGlzIHZlcnkgYnJva2VuCisgICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiICE9IGlhNjQ7IHRoZW4KKyAgICAgICAgbGRfc2hsaWJzPW5vCisgICAgICBmaQorICAgICAgOzsKKyAgICBhbWlnYW9zKikKKyAgICAgIGNhc2UgIiRob3N0X2NwdSIgaW4KKyAgICAgICAgcG93ZXJwYykKKyAgICAgICAgICA7OworICAgICAgICBtNjhrKQorICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKKyAgICAgICAgICBoYXJkY29kZV9taW51c19MPXllcworICAgICAgICAgIDs7CisgICAgICBlc2FjCisgICAgICA7OworICAgIGJlb3MqKQorICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgZ3JlcCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgIDoKKyAgICAgIGVsc2UKKyAgICAgICAgbGRfc2hsaWJzPW5vCisgICAgICBmaQorICAgICAgOzsKKyAgICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCisgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJworICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgZ3JlcCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgIDoKKyAgICAgIGVsc2UKKyAgICAgICAgbGRfc2hsaWJzPW5vCisgICAgICBmaQorICAgICAgOzsKKyAgICBoYWlrdSopCisgICAgICA7OworICAgIGludGVyaXhbMy05XSopCisgICAgICBoYXJkY29kZV9kaXJlY3Q9bm8KKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoLCRsaWJkaXInCisgICAgICA7OworICAgIGdudSogfCBsaW51eCogfCB0cGYqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQorICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgZ3JlcCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgIDoKKyAgICAgIGVsc2UKKyAgICAgICAgbGRfc2hsaWJzPW5vCisgICAgICBmaQorICAgICAgOzsKKyAgICBuZXRic2QqKQorICAgICAgOzsKKyAgICBzb2xhcmlzKikKKyAgICAgIGlmICRMRCAtdiAyPiYxIHwgZ3JlcCAnQkZEIDJcLjgnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgIGxkX3NobGlicz1ubworICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgOgorICAgICAgZWxzZQorICAgICAgICBsZF9zaGxpYnM9bm8KKyAgICAgIGZpCisgICAgICA7OworICAgIHN5c3Y1KiB8IHNjbzMuMnY1KiB8IHNjbzV2NiogfCB1bml4d2FyZSogfCBPcGVuVU5JWCopCisgICAgICBjYXNlIGAkTEQgLXYgMj4mMWAgaW4KKyAgICAgICAgKlwgWzAxXS4qIHwgKlwgMi5bMC05XS4qIHwgKlwgMi4xWzAtNV0uKikKKyAgICAgICAgICBsZF9zaGxpYnM9bm8KKyAgICAgICAgICA7OworICAgICAgICAqKQorICAgICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8IGdyZXAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorICAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nYHRlc3QgLXogIiRTQ09BQlNQQVRIIiAmJiBlY2hvICR7d2x9LXJwYXRoLCRsaWJkaXJgJworICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxkX3NobGlicz1ubworICAgICAgICAgIGZpCisgICAgICAgICAgOzsKKyAgICAgIGVzYWMKKyAgICAgIDs7CisgICAgc3Vub3M0KikKKyAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgIDs7CisgICAgKikKKyAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8IGdyZXAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorICAgICAgICA6CisgICAgICBlbHNlCisgICAgICAgIGxkX3NobGlicz1ubworICAgICAgZmkKKyAgICAgIDs7CisgIGVzYWMKKyAgaWYgdGVzdCAiJGxkX3NobGlicyIgPSBubzsgdGhlbgorICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9CisgIGZpCitlbHNlCisgIGNhc2UgIiRob3N0X29zIiBpbgorICAgIGFpeDMqKQorICAgICAgIyBOb3RlOiB0aGlzIGxpbmtlciBoYXJkY29kZXMgdGhlIGRpcmVjdG9yaWVzIGluIExJQlBBVEggaWYgdGhlcmUKKyAgICAgICMgYXJlIG5vIGRpcmVjdG9yaWVzIHNwZWNpZmllZCBieSAtTC4KKyAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCisgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICAgICAjIE5laXRoZXIgZGlyZWN0IGhhcmRjb2Rpbmcgbm9yIHN0YXRpYyBsaW5raW5nIGlzIHN1cHBvcnRlZCB3aXRoIGEKKyAgICAgICAgIyBicm9rZW4gY29sbGVjdDIuCisgICAgICAgIGhhcmRjb2RlX2RpcmVjdD11bnN1cHBvcnRlZAorICAgICAgZmkKKyAgICAgIDs7CisgICAgYWl4WzQtOV0qKQorICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KKyAgICAgICAgIyBPbiBJQTY0LCB0aGUgbGlua2VyIGRvZXMgcnVuIHRpbWUgbGlua2luZyBieSBkZWZhdWx0LCBzbyB3ZSBkb24ndAorICAgICAgICAjIGhhdmUgdG8gZG8gYW55dGhpbmcgc3BlY2lhbC4KKyAgICAgICAgYWl4X3VzZV9ydW50aW1lbGlua2luZz1ubworICAgICAgZWxzZQorICAgICAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPW5vCisgICAgICAgICMgVGVzdCBpZiB3ZSBhcmUgdHJ5aW5nIHRvIHVzZSBydW4gdGltZSBsaW5raW5nIG9yIG5vcm1hbAorICAgICAgICAjIEFJWCBzdHlsZSBsaW5raW5nLiBJZiAtYnJ0bCBpcyBzb21ld2hlcmUgaW4gTERGTEFHUywgd2UKKyAgICAgICAgIyBuZWVkIHRvIGRvIHJ1bnRpbWUgbGlua2luZy4KKyAgICAgICAgY2FzZSAkaG9zdF9vcyBpbiBhaXg0LlsyM118YWl4NC5bMjNdLip8YWl4WzUtOV0qKQorICAgICAgICAgIGZvciBsZF9mbGFnIGluICRMREZMQUdTOyBkbworICAgICAgICAgICAgaWYgKHRlc3QgJGxkX2ZsYWcgPSAiLWJydGwiIHx8IHRlc3QgJGxkX2ZsYWcgPSAiLVdsLC1icnRsIik7IHRoZW4KKyAgICAgICAgICAgICAgYWl4X3VzZV9ydW50aW1lbGlua2luZz15ZXMKKyAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGZpCisgICAgICAgICAgZG9uZQorICAgICAgICAgIDs7CisgICAgICAgIGVzYWMKKyAgICAgIGZpCisgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCisgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPSc6JworICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgICAgY2FzZSAkaG9zdF9vcyBpbiBhaXg0LlswMTJdfGFpeDQuWzAxMl0uKikKKyAgICAgICAgICBjb2xsZWN0Mm5hbWU9YCR7Q0N9IC1wcmludC1wcm9nLW5hbWU9Y29sbGVjdDJgCisgICAgICAgICAgaWYgdGVzdCAtZiAiJGNvbGxlY3QybmFtZSIgJiYgXAorICAgICAgICAgICAgc3RyaW5ncyAiJGNvbGxlY3QybmFtZSIgfCBncmVwIHJlc29sdmVfbGliX25hbWUgPi9kZXYvbnVsbAorICAgICAgICAgIHRoZW4KKyAgICAgICAgICAgICMgV2UgaGF2ZSByZXdvcmtlZCBjb2xsZWN0MgorICAgICAgICAgICAgOgorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICMgV2UgaGF2ZSBvbGQgY29sbGVjdDIKKyAgICAgICAgICAgIGhhcmRjb2RlX2RpcmVjdD11bnN1cHBvcnRlZAorICAgICAgICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKKyAgICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKKyAgICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9CisgICAgICAgICAgZmkKKyAgICAgICAgICA7OworICAgICAgICBlc2FjCisgICAgICBmaQorICAgICAgIyBCZWdpbiBfTFRfQUNfU1lTX0xJQlBBVEhfQUlYLgorICAgICAgZWNobyAnaW50IG1haW4gKCkgeyByZXR1cm4gMDsgfScgPiBjb25mdGVzdC5jCisgICAgICAke0NDfSAke0xERkxBR1N9IGNvbmZ0ZXN0LmMgLW8gY29uZnRlc3QKKyAgICAgIGFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0IDI+L2Rldi9udWxsIHwgc2VkIC1uIC1lICcvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7IC9eMC8geyBzL14wICAqXCguKlwpJC9cMS87IHA7IH0KK30nYAorICAgICAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorICAgICAgICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCAyPi9kZXYvbnVsbCB8IHNlZCAtbiAtZSAnL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geyAvXjAvIHsgcy9eMCAgKlwoLipcKSQvXDEvOyBwOyB9Cit9J2AKKyAgICAgIGZpCisgICAgICBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCisgICAgICAgIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIgorICAgICAgZmkKKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LmMgY29uZnRlc3QKKyAgICAgICMgRW5kIF9MVF9BQ19TWVNfTElCUEFUSF9BSVguCisgICAgICBpZiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSB5ZXM7IHRoZW4KKyAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAgICAgIGVsc2UKKyAgICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KKyAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1SICRsaWJkaXI6L3Vzci9saWI6L2xpYicKKyAgICAgICAgZWxzZQorICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgICAgICAgIGZpCisgICAgICBmaQorICAgICAgOzsKKyAgICBhbWlnYW9zKikKKyAgICAgIGNhc2UgIiRob3N0X2NwdSIgaW4KKyAgICAgICAgcG93ZXJwYykKKyAgICAgICAgICA7OworICAgICAgICBtNjhrKQorICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKKyAgICAgICAgICBoYXJkY29kZV9taW51c19MPXllcworICAgICAgICAgIDs7CisgICAgICBlc2FjCisgICAgICA7OworICAgIGJzZGlbNDVdKikKKyAgICAgIDs7CisgICAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgICAgIyBXaGVuIG5vdCB1c2luZyBnY2MsIHdlIGN1cnJlbnRseSBhc3N1bWUgdGhhdCB3ZSBhcmUgdXNpbmcKKyAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCisgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCisgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKyAgICAgIGxpYmV4dD1saWIKKyAgICAgIDs7CisgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKKyAgICAgIGhhcmRjb2RlX2RpcmVjdD1ubworICAgICAgaWYgeyBjYXNlICRjY19iYXNlbmFtZSBpbiBpZm9ydCopIHRydWU7OyAqKSB0ZXN0ICIkR0NDIiA9IHllczs7IGVzYWM7IH07IHRoZW4KKyAgICAgICAgOgorICAgICAgZWxzZQorICAgICAgICBsZF9zaGxpYnM9bm8KKyAgICAgIGZpCisgICAgICA7OworICAgIGRndXgqKQorICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJworICAgICAgOzsKKyAgICBmcmVlYnNkMi5bMDFdKikKKyAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCisgICAgICA7OworICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKKyAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgIDs7CisgICAgaHB1eDkqKQorICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0rYiAke3dsfSRsaWJkaXInCisgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKKyAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgICMgaGFyZGNvZGVfbWludXNfTDogTm90IHJlYWxseSBpbiB0aGUgc2VhcmNoIFBBVEgsCisgICAgICAjIGJ1dCBhcyB0aGUgZGVmYXVsdCBsb2NhdGlvbiBvZiB0aGUgbGlicmFyeS4KKyAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCisgICAgICA7OworICAgIGhwdXgxMCopCisgICAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKyAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0rYiAke3dsfSRsaWJkaXInCisgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgorICAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCisgICAgICAgICMgaGFyZGNvZGVfbWludXNfTDogTm90IHJlYWxseSBpbiB0aGUgc2VhcmNoIFBBVEgsCisgICAgICAgICMgYnV0IGFzIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBsaWJyYXJ5LgorICAgICAgICBoYXJkY29kZV9taW51c19MPXllcworICAgICAgZmkKKyAgICAgIDs7CisgICAgaHB1eDExKikKKyAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfStiICR7d2x9JGxpYmRpcicKKyAgICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06CisgICAgICAgIGNhc2UgJGhvc3RfY3B1IGluCisgICAgICAgICAgaHBwYSo2NCp8aWE2NCopCisgICAgICAgICAgICBoYXJkY29kZV9kaXJlY3Q9bm8KKyAgICAgICAgICAgIDs7CisgICAgICAgICAgKikKKyAgICAgICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgICAgICAgICMgaGFyZGNvZGVfbWludXNfTDogTm90IHJlYWxseSBpbiB0aGUgc2VhcmNoIFBBVEgsCisgICAgICAgICAgICAjIGJ1dCBhcyB0aGUgZGVmYXVsdCBsb2NhdGlvbiBvZiB0aGUgbGlicmFyeS4KKyAgICAgICAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCisgICAgICAgICAgICA7OworICAgICAgICBlc2FjCisgICAgICBmaQorICAgICAgOzsKKyAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQorICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06CisgICAgICA7OworICAgIG5ldGJzZCopCisgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCisgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCisgICAgICA7OworICAgIG5ld3NvczYpCisgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCisgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKKyAgICAgIDs7CisgICAgKm50byogfCAqcW54KikKKyAgICAgIDs7CisgICAgb3BlbmJzZCopCisgICAgICBpZiB0ZXN0IC1mIC91c3IvbGliZXhlYy9sZC5zbzsgdGhlbgorICAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCisgICAgICAgIGlmIHRlc3QgLXogImBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8IGdyZXAgX19FTEZfX2AiIHx8IHRlc3QgIiRob3N0X29zLSRob3N0X2NwdSIgPSAib3BlbmJzZDIuOC1wb3dlcnBjIjsgdGhlbgorICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoLCRsaWJkaXInCisgICAgICAgIGVsc2UKKyAgICAgICAgICBjYXNlICIkaG9zdF9vcyIgaW4KKyAgICAgICAgICAgIG9wZW5ic2RbMDFdLiogfCBvcGVuYnNkMi5bMC03XSB8IG9wZW5ic2QyLlswLTddLiopCisgICAgICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKKyAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICopCisgICAgICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoLCRsaWJkaXInCisgICAgICAgICAgICAgIDs7CisgICAgICAgICAgZXNhYworICAgICAgICBmaQorICAgICAgZWxzZQorICAgICAgICBsZF9zaGxpYnM9bm8KKyAgICAgIGZpCisgICAgICA7OworICAgIG9zMiopCisgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCisgICAgICBoYXJkY29kZV9taW51c19MPXllcworICAgICAgOzsKKyAgICBvc2YzKikKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgorICAgICAgOzsKKyAgICBvc2Y0KiB8IG9zZjUqKQorICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgZWxzZQorICAgICAgICAjIEJvdGggY2MgYW5kIGN4eCBjb21waWxlciBzdXBwb3J0IC1ycGF0aCBkaXJlY3RseQorICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctcnBhdGggJGxpYmRpcicKKyAgICAgIGZpCisgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKKyAgICAgIDs7CisgICAgc29sYXJpcyopCisgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCisgICAgICA7OworICAgIHN1bm9zNCopCisgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCisgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCisgICAgICBoYXJkY29kZV9taW51c19MPXllcworICAgICAgOzsKKyAgICBzeXN2NCkKKyAgICAgIGNhc2UgJGhvc3RfdmVuZG9yIGluCisgICAgICAgIHNuaSkKKyAgICAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzICMgaXMgdGhpcyByZWFsbHkgdHJ1ZT8/PworICAgICAgICAgIDs7CisgICAgICAgIHNpZW1lbnMpCisgICAgICAgICAgaGFyZGNvZGVfZGlyZWN0PW5vCisgICAgICAgICAgOzsKKyAgICAgICAgbW90b3JvbGEpCisgICAgICAgICAgaGFyZGNvZGVfZGlyZWN0PW5vICNNb3Rvcm9sYSBtYW51YWwgc2F5cyB5ZXMsIGJ1dCBteSB0ZXN0cyBzYXkgdGhleSBsaWUKKyAgICAgICAgICA7OworICAgICAgZXNhYworICAgICAgOzsKKyAgICBzeXN2NC4zKikKKyAgICAgIDs7CisgICAgc3lzdjQqTVAqKQorICAgICAgaWYgdGVzdCAtZCAvdXNyL25lYzsgdGhlbgorICAgICAgICBsZF9zaGxpYnM9eWVzCisgICAgICBmaQorICAgICAgOzsKKyAgICBzeXN2NCp1dzIqIHwgc3lzdjVPcGVuVU5JWCogfCBzeXN2NVVuaXhXYXJlNy5bMDFdLlsxMF0qIHwgdW5peHdhcmU3KiB8IHNjbzMuMnY1LjAuWzAyNF0qKQorICAgICAgOzsKKyAgICBzeXN2NSogfCBzY28zLjJ2NSogfCBzY281djYqKQorICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nYHRlc3QgLXogIiRTQ09BQlNQQVRIIiAmJiBlY2hvICR7d2x9LVIsJGxpYmRpcmAnCisgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPSc6JworICAgICAgOzsKKyAgICB1dHM0KikKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKKyAgICAgIDs7CisgICAgKikKKyAgICAgIGxkX3NobGlicz1ubworICAgICAgOzsKKyAgZXNhYworZmkKKworIyBDaGVjayBkeW5hbWljIGxpbmtlciBjaGFyYWN0ZXJpc3RpY3MKKyMgQ29kZSB0YWtlbiBmcm9tIGxpYnRvb2wubTQncyBfTFRfU1lTX0RZTkFNSUNfTElOS0VSLgorIyBVbmxpa2UgbGlidG9vbC5tNCwgaGVyZSB3ZSBkb24ndCBjYXJlIGFib3V0IF9hbGxfIG5hbWVzIG9mIHRoZSBsaWJyYXJ5LCBidXQKKyMgb25seSBhYm91dCB0aGUgb25lIHRoZSBsaW5rZXIgZmluZHMgd2hlbiBwYXNzZWQgLWxOQU1FLiBUaGlzIGlzIHRoZSBsYXN0CisjIGVsZW1lbnQgb2YgbGlicmFyeV9uYW1lc19zcGVjIGluIGxpYnRvb2wubTQsIG9yIHBvc3NpYmx5IHR3byBvZiB0aGVtIGlmIHRoZQorIyBsaW5rZXIgaGFzIHNwZWNpYWwgc2VhcmNoIHJ1bGVzLgorbGlicmFyeV9uYW1lc19zcGVjPSAgICAgICMgdGhlIGxhc3QgZWxlbWVudCBvZiBsaWJyYXJ5X25hbWVzX3NwZWMgaW4gbGlidG9vbC5tNAorbGlibmFtZV9zcGVjPSdsaWIkbmFtZScKK2Nhc2UgIiRob3N0X29zIiBpbgorICBhaXgzKikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmEnCisgICAgOzsKKyAgYWl4WzQtOV0qKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIGFtaWdhb3MqKQorICAgIGNhc2UgIiRob3N0X2NwdSIgaW4KKyAgICAgIHBvd2VycGMqKQorICAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcgOzsKKyAgICAgIG02OGspCisgICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuYScgOzsKKyAgICBlc2FjCisgICAgOzsKKyAgYmVvcyopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgYnNkaVs0NV0qKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICBzaHJleHQ9LmRsbAorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEgJGxpYm5hbWUubGliJworICAgIDs7CisgIGRhcndpbiogfCByaGFwc29keSopCisgICAgc2hyZXh0PS5keWxpYgorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIGRndXgqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIGZyZWVic2RbMjNdLiopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQkdmVyc3VmZml4JworICAgIDs7CisgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICBnbnUqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIGhhaWt1KikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICBocHV4OSogfCBocHV4MTAqIHwgaHB1eDExKikKKyAgICBjYXNlICRob3N0X2NwdSBpbgorICAgICAgaWE2NCopCisgICAgICAgIHNocmV4dD0uc28KKyAgICAgICAgOzsKKyAgICAgIGhwcGEqNjQqKQorICAgICAgICBzaHJleHQ9LnNsCisgICAgICAgIDs7CisgICAgICAqKQorICAgICAgICBzaHJleHQ9LnNsCisgICAgICAgIDs7CisgICAgZXNhYworICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIGludGVyaXhbMy05XSopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICBjYXNlICIkaG9zdF9vcyIgaW4KKyAgICAgIGlyaXg1KiB8IG5vbnN0b3B1eCopCisgICAgICAgIGxpYnN1ZmY9IHNobGlic3VmZj0KKyAgICAgICAgOzsKKyAgICAgICopCisgICAgICAgIGNhc2UgJExEIGluCisgICAgICAgICAgKi0zMnwqIi0zMiAifCotbWVsZjMyYnNtaXB8KiItbWVsZjMyYnNtaXAgIikgbGlic3VmZj0gc2hsaWJzdWZmPSA7OworICAgICAgICAgICotbjMyfCoiLW4zMiAifCotbWVsZjMyYm1pcG4zMnwqIi1tZWxmMzJibWlwbjMyICIpIGxpYnN1ZmY9MzIgc2hsaWJzdWZmPU4zMiA7OworICAgICAgICAgICotNjR8KiItNjQgInwqLW1lbGY2NGJtaXB8KiItbWVsZjY0Ym1pcCAiKSBsaWJzdWZmPTY0IHNobGlic3VmZj02NCA7OworICAgICAgICAgICopIGxpYnN1ZmY9IHNobGlic3VmZj0gOzsKKyAgICAgICAgZXNhYworICAgICAgICA7OworICAgIGVzYWMKKyAgICA7OworICBsaW51eCpvbGRsZCogfCBsaW51eCphb3V0KiB8IGxpbnV4KmNvZmYqKQorICAgIDs7CisgIGxpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICBrbmV0YnNkKi1nbnUpCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgbmV0YnNkKikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICBuZXdzb3M2KQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgICpudG8qIHwgKnFueCopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgb3BlbmJzZCopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQkdmVyc3VmZml4JworICAgIDs7CisgIG9zMiopCisgICAgbGlibmFtZV9zcGVjPSckbmFtZScKKyAgICBzaHJleHQ9LmRsbAorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuYScKKyAgICA7OworICBvc2YzKiB8IG9zZjQqIHwgb3NmNSopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgcmRvcyopCisgICAgOzsKKyAgc29sYXJpcyopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgc3Vub3M0KikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCR2ZXJzdWZmaXgnCisgICAgOzsKKyAgc3lzdjQgfCBzeXN2NC4zKikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICBzeXN2NCpNUCopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgc3lzdjUqIHwgc2NvMy4ydjUqIHwgc2NvNXY2KiB8IHVuaXh3YXJlKiB8IE9wZW5VTklYKiB8IHN5c3Y0KnV3MiopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgdHBmKikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICB1dHM0KikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworZXNhYworCitzZWRfcXVvdGVfc3Vic3Q9J3MvXChbImAkXFxdXCkvXFxcMS9nJworZXNjYXBlZF93bD1gZWNobyAiWCR3bCIgfCBzZWQgLWUgJ3MvXlgvLycgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorc2hsaWJleHQ9YGVjaG8gIiRzaHJleHQiIHwgc2VkIC1lICdzLF5cLiwsJ2AKK2VzY2FwZWRfbGlibmFtZV9zcGVjPWBlY2hvICJYJGxpYm5hbWVfc3BlYyIgfCBzZWQgLWUgJ3MvXlgvLycgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorZXNjYXBlZF9saWJyYXJ5X25hbWVzX3NwZWM9YGVjaG8gIlgkbGlicmFyeV9uYW1lc19zcGVjIiB8IHNlZCAtZSAncy9eWC8vJyAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCitlc2NhcGVkX2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9YGVjaG8gIlgkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyIgfCBzZWQgLWUgJ3MvXlgvLycgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorCitMQ19BTEw9QyBzZWQgLWUgJ3MvXlwoW2EtekEtWjAtOV9dKlwpPS9hY2xfY3ZfXDE9LycgPDxFT0YKKworIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgord2w9IiRlc2NhcGVkX3dsIgorCisjIFN0YXRpYyBsaWJyYXJ5IHN1ZmZpeCAobm9ybWFsbHkgImEiKS4KK2xpYmV4dD0iJGxpYmV4dCIKKworIyBTaGFyZWQgbGlicmFyeSBzdWZmaXggKG5vcm1hbGx5ICJzbyIpLgorc2hsaWJleHQ9IiRzaGxpYmV4dCIKKworIyBGb3JtYXQgb2YgbGlicmFyeSBuYW1lIHByZWZpeC4KK2xpYm5hbWVfc3BlYz0iJGVzY2FwZWRfbGlibmFtZV9zcGVjIgorCisjIExpYnJhcnkgbmFtZXMgdGhhdCB0aGUgbGlua2VyIGZpbmRzIHdoZW4gcGFzc2VkIC1sTkFNRS4KK2xpYnJhcnlfbmFtZXNfc3BlYz0iJGVzY2FwZWRfbGlicmFyeV9uYW1lc19zcGVjIgorCisjIEZsYWcgdG8gaGFyZGNvZGUgXCRsaWJkaXIgaW50byBhIGJpbmFyeSBkdXJpbmcgbGlua2luZy4KKyMgVGhpcyBtdXN0IHdvcmsgZXZlbiBpZiBcJGxpYmRpciBkb2VzIG5vdCBleGlzdC4KK2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9IiRlc2NhcGVkX2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiCisKKyMgV2hldGhlciB3ZSBuZWVkIGEgc2luZ2xlIC1ycGF0aCBmbGFnIHdpdGggYSBzZXBhcmF0ZWQgYXJndW1lbnQuCitoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPSIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIKKworIyBTZXQgdG8geWVzIGlmIHVzaW5nIERJUi9saWJOQU1FLnNvIGR1cmluZyBsaW5raW5nIGhhcmRjb2RlcyBESVIgaW50byB0aGUKKyMgcmVzdWx0aW5nIGJpbmFyeS4KK2hhcmRjb2RlX2RpcmVjdD0iJGhhcmRjb2RlX2RpcmVjdCIKKworIyBTZXQgdG8geWVzIGlmIHVzaW5nIHRoZSAtTERJUiBmbGFnIGR1cmluZyBsaW5raW5nIGhhcmRjb2RlcyBESVIgaW50byB0aGUKKyMgcmVzdWx0aW5nIGJpbmFyeS4KK2hhcmRjb2RlX21pbnVzX0w9IiRoYXJkY29kZV9taW51c19MIgorCitFT0YKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjE5LjQvcmVtb3ZlLXBvdGNkYXRlLnNpbiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjE5LjguMS9yZW1vdmUtcG90Y2RhdGUuc2luCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4xOS40L3JlbW92ZS1wb3RjZGF0ZS5zaW4KcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjE5LjguMS9yZW1vdmUtcG90Y2RhdGUuc2luCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtbmF0aXZlXzAuMTkuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC1uYXRpdmVfMC4xOS40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDRhNDQzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC1uYXRpdmVfMC4xOS40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotU1VNTUFSWSA9ICJNaW5pbWFsIGdldHRleHQgZm9yIHN1cHBvcnRpbmcgbmF0aXZlIGF1dG9jb25mL2F1dG9tYWtlIgotREVTQ1JJUFRJT04gPSAiQ29udGFpbnMgdGhlIG00IG1hY3JvcyBzdWZmaWNpZW50IHRvIHN1cHBvcnQgYnVpbGRpbmcgXAotYXV0b2NvbmYvYXV0b21ha2UuIFRoaXMgcHJvdmlkZXMgYSBzaWduaWZpY2FudCBidWlsZCB0aW1lIHNwZWVkdXAgYnkgXAotdGhlIHJlbW92YWwgb2YgZ2V0dGV4dC1uYXRpdmUgZnJvbSBtb3N0IGRlcGVuZGVuY3kgY2hhaW5zIChub3cgb25seSBcCi1uZWVkZWQgZm9yIGdldHRleHQgZm9yIHRoZSB0YXJnZXQpLiIKLVNSQ19VUkkgPSAiZmlsZTovL2FjbG9jYWwudGd6IFwKLSAgICAgICAgICAgZmlsZTovL2NvbmZpZy5ycGF0aCBcCi0gICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS5pbi5pbiBcCi0gICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtcG90Y2RhdGUuc2luIFwKLSAgICAgICAgICAgZmlsZTovL0NPUFlJTkcgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1QQVRDSC1EaXNhYmxlLXRoZS10ZXN0LXRvLWNvbnZlcnQtZXVjLWpwLnBhdGNoIFwKLSIKLQotSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKLUlOSElCSVRfQVVUT1RPT0xTX0RFUFMgPSAiMSIKLQotTElDRU5TRSA9ICJGU0YtVW5saW1pdGVkIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MWIyMDY3NWNkNTE1ODQ0MmY2MDA3ZDAyMmY0NmIzNWIiCi0KLWluaGVyaXQgbmF0aXZlCi0KLQotUyA9ICIke1dPUktESVJ9IgotCi1kb19pbnN0YWxsICgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2FjbG9jYWwvCi0JY3AgJHtXT1JLRElSfS8qLm00ICR7RH0ke2RhdGFkaXJ9L2FjbG9jYWwvCi0JaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9nZXR0ZXh0L3BvLwotCWNwICR7V09SS0RJUn0vY29uZmlnLnJwYXRoICR7RH0ke2RhdGFkaXJ9L2dldHRleHQvCi0JY3AgJHtXT1JLRElSfS9NYWtlZmlsZS5pbi5pbiAke0R9JHtkYXRhZGlyfS9nZXR0ZXh0L3BvLwotCWNwICR7V09SS0RJUn0vcmVtb3ZlLXBvdGNkYXRlLnNpbiAke0R9JHtkYXRhZGlyfS9nZXR0ZXh0L3BvLwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLW5hdGl2ZV8wLjE5LjguMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC1uYXRpdmVfMC4xOS44LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZmZjE5OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC1uYXRpdmVfMC4xOS44LjEuYmIKQEAgLTAsMCArMSwzMSBAQAorU1VNTUFSWSA9ICJNaW5pbWFsIGdldHRleHQgZm9yIHN1cHBvcnRpbmcgbmF0aXZlIGF1dG9jb25mL2F1dG9tYWtlIgorREVTQ1JJUFRJT04gPSAiQ29udGFpbnMgdGhlIG00IG1hY3JvcyBzdWZmaWNpZW50IHRvIHN1cHBvcnQgYnVpbGRpbmcgXAorYXV0b2NvbmYvYXV0b21ha2UuIFRoaXMgcHJvdmlkZXMgYSBzaWduaWZpY2FudCBidWlsZCB0aW1lIHNwZWVkdXAgYnkgXAordGhlIHJlbW92YWwgb2YgZ2V0dGV4dC1uYXRpdmUgZnJvbSBtb3N0IGRlcGVuZGVuY3kgY2hhaW5zIChub3cgb25seSBcCituZWVkZWQgZm9yIGdldHRleHQgZm9yIHRoZSB0YXJnZXQpLiIKK1NSQ19VUkkgPSAiZmlsZTovL2FjbG9jYWwudGd6IFwKKyAgICAgICAgICAgZmlsZTovL2NvbmZpZy5ycGF0aCBcCisgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS5pbi5pbiBcCisgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtcG90Y2RhdGUuc2luIFwKKyAgICAgICAgICAgZmlsZTovL0NPUFlJTkcgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1QQVRDSC1EaXNhYmxlLXRoZS10ZXN0LXRvLWNvbnZlcnQtZXVjLWpwLnBhdGNoIFwKKyIKKworSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKK0lOSElCSVRfQVVUT1RPT0xTX0RFUFMgPSAiMSIKKworTElDRU5TRSA9ICJGU0YtVW5saW1pdGVkIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGJkMDkwYTIwYmZjZDFhMThmMWY3OTgzN2I1ZTNlOTEiCisKK2luaGVyaXQgbmF0aXZlCisKK1MgPSAiJHtXT1JLRElSfSIKKworZG9faW5zdGFsbCAoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9hY2xvY2FsLworCWNwICR7V09SS0RJUn0vKi5tNCAke0R9JHtkYXRhZGlyfS9hY2xvY2FsLworCWluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vZ2V0dGV4dC9wby8KKwljcCAke1dPUktESVJ9L2NvbmZpZy5ycGF0aCAke0R9JHtkYXRhZGlyfS9nZXR0ZXh0LworCWNwICR7V09SS0RJUn0vTWFrZWZpbGUuaW4uaW4gJHtEfSR7ZGF0YWRpcn0vZ2V0dGV4dC9wby8KKwljcCAke1dPUktESVJ9L3JlbW92ZS1wb3RjZGF0ZS5zaW4gJHtEfSR7ZGF0YWRpcn0vZ2V0dGV4dC9wby8KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHRfMC4xNi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dF8wLjE2LjEuYmIKaW5kZXggY2QwYjc1OS4uZTc5ZjRkYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dF8wLjE2LjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dF8wLjE2LjEuYmIKQEAgLTksNyArOSw3IEBACiBERVBFTkRTID0gInZpcnR1YWwvbGliaWNvbnYiCiBERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICIiCiBQUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYmludGwgdmlydHVhbC9nZXR0ZXh0IgotUFJPVklERVNfY2xhc3MtbmF0aXZlID0gIiIKK1BST1ZJREVTX2NsYXNzLW5hdGl2ZSA9ICJ2aXJ0dWFsL2dldHRleHQtbmF0aXZlIgogCiBTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ2V0dGV4dC9nZXR0ZXh0LSR7UFZ9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9nZXR0ZXh0LXZwYXRoLnBhdGNoIFwKQEAgLTIxLDE2ICsyMSwyOCBAQAogICAgICAgICAgICBmaWxlOi8vaGFyZGNvZGVfbWFjcm9fdmVyc2lvbi5wYXRjaCBcCiAgICAgICAgICAgIgogCi1MREZMQUdTX3ByZXBlbmRfbGliYy11Y2xpYmMgPSAiIC1scnQgLWxwdGhyZWFkICIKLQogU1JDX1VSSVttZDVzdW1dID0gIjNkOWFkMjQzMDFjNmQ2YjE3ZWMzMDcwNGExM2ZlMTI3IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBiZjg1MGQxYTA3OWZiNWE2MWYwYTQ3YjFhOWVmZDM1ZWI0NDAzMjI1NTM3NWUxY2VkYjAyNTNiYzI3YjM3NmQiCiAKIFBBUkFMTEVMX01BS0UgPSAiIgogCitMREZMQUdTX3ByZXBlbmRfbGliYy11Y2xpYmMgPSAiIC1scnQgLWxwdGhyZWFkICIKKwogaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbwogCi1FWFRSQV9PRUNPTkYgKz0gIi0td2l0aG91dC1saXNwIC0tZGlzYWJsZS1jc2hhcnAgLS1kaXNhYmxlLW9wZW5tcCAtLXdpdGhvdXQtZW1hY3MiCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aG91dC1saXNwZGlyIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWNzaGFycCBcCisgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1saWJhc3ByaW50ZiBcCisgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1qYXZhIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLW5hdGl2ZS1qYXZhIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLW9wZW5tcCBcCisgICAgICAgICAgICAgICAgIC0td2l0aG91dC1lbWFjcyBcCisgICAgICAgICAgICAgICAgIgorRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0MV9saWJjPXllcyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndF9jdl9mdW5jX2dudWdldHRleHQyX2xpYmM9eWVzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorCiBhY3BhdGhzID0gJy1JICR7U30vYXV0b2NvbmYtbGliLWxpbmsvbTQvIFwKICAgICAgICAgICAgLUkgJHtTfS9nZXR0ZXh0LXJ1bnRpbWUvbTQgXAogICAgICAgICAgICAtSSAke1N9L2dldHRleHQtdG9vbHMvbTQnCkBAIC00MSw3ICs1Myw2IEBACiAKIGRvX2luc3RhbGxfYXBwZW5kX2xpYmMtbXVzbCAoKSB7CiAJcm0gLWYgJHtEfSR7bGliZGlyfS9jaGFyc2V0LmFsaWFzCi0Jcm0gLWYgJHtEfSR7aW5jbHVkZWRpcn0vbGliaW50bC5oCiB9CiAKICMgdGhlc2UgbGFjayB0aGUgLnggYmVoaW5kIHRoZSAuc28sIGJ1dCBzaG91bGRuJ3QgYmUgaW4gdGhlIC1kZXYgcGFja2FnZQpAQCAtOTMsMjAgKzEwNCwyMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2luZm9kaXJ9L2F1dG9zcHJpbnRmLmluZm8gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKIAotCiBkb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlybSAtZiAke0R9JHtsaWJkaXJ9L3ByZWxvYWRhYmxlX2xpYmludGwuc28KKyAgICBybSAtZiAke0R9JHtsaWJkaXJ9L3ByZWxvYWRhYmxlX2xpYmludGwuc28KK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKKwlybSAke0R9JHtkYXRhZGlyfS9hY2xvY2FsLyoKKwlybSAke0R9JHtkYXRhZGlyfS9nZXR0ZXh0L2NvbmZpZy5ycGF0aAorCXJtICR7RH0ke2RhdGFkaXJ9L2dldHRleHQvcG8vTWFrZWZpbGUuaW4uaW4KKwlybSAke0R9JHtkYXRhZGlyfS9nZXR0ZXh0L3BvL3JlbW92ZS1wb3RjZGF0ZS5zaW4KIH0KIAogIyBBbnlvbmUgaW5oZXJpdGluZyBnZXR0ZXh0IHdpbGwgaGF2ZSBib3RoIGdldHRleHQtbmF0aXZlIGFuZCBnZXR0ZXh0CiAjIGF2YWlsYWJsZSwgYW5kIHdlIGRvbid0IHdhbnQgdG8gdXNlIG9sZGVyIG1hY3JvcyBmcm9tIHRoZSB0YXJnZXQgZ2V0dGV4dCBpbgogIyBhIG5vbi1ncGx2MyBidWlsZCwgc28ga2lsbCB0aGVtIGFuZCBsZXQgZGVwZW5kZW50IHJlY2lwZXMgcmVseSBvbgogIyBnZXR0ZXh0LW5hdGl2ZS4KLQotU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTICs9ICJyZW1vdmVfc3lzcm9vdF9tNF9tYWNyb3MiCi0KLXJlbW92ZV9zeXNyb290X200X21hY3JvcyAoKSB7Ci0gICAgcm0gLXIgIiR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vYWNsb2NhbCIKLX0KK1NZU1JPT1RfRElSU19CTEFDS0xJU1QgKz0gIiR7ZGF0YWRpcn0vYWNsb2NhbCIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dF8wLjE5LjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0XzAuMTkuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTkyZTRmYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0XzAuMTkuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExNSArMCwwIEBACi1TVU1NQVJZID0gIlV0aWxpdGllcyBhbmQgbGlicmFyaWVzIGZvciBwcm9kdWNpbmcgbXVsdGktbGluZ3VhbCBtZXNzYWdlcyIKLURFU0NSSVBUSU9OID0gIkdOVSBnZXR0ZXh0IGlzIGEgc2V0IG9mIHRvb2xzIHRoYXQgcHJvdmlkZXMgYSBmcmFtZXdvcmsgdG8gaGVscCBvdGhlciBwcm9ncmFtcyBwcm9kdWNlIG11bHRpLWxpbmd1YWwgbWVzc2FnZXMuIFRoZXNlIHRvb2xzIGluY2x1ZGUgYSBzZXQgb2YgY29udmVudGlvbnMgYWJvdXQgaG93IHByb2dyYW1zIHNob3VsZCBiZSB3cml0dGVuIHRvIHN1cHBvcnQgbWVzc2FnZSBjYXRhbG9ncywgYSBkaXJlY3RvcnkgYW5kIGZpbGUgbmFtaW5nIG9yZ2FuaXphdGlvbiBmb3IgdGhlIG1lc3NhZ2UgY2F0YWxvZ3MgdGhlbXNlbHZlcywgYSBydW50aW1lIGxpYnJhcnkgc3VwcG9ydGluZyB0aGUgcmV0cmlldmFsIG9mIHRyYW5zbGF0ZWQgbWVzc2FnZXMsIGFuZCBhIGZldyBzdGFuZC1hbG9uZSBwcm9ncmFtcyB0byBtYXNzYWdlIGluIHZhcmlvdXMgd2F5cyB0aGUgc2V0cyBvZiB0cmFuc2xhdGFibGUgYW5kIGFscmVhZHkgdHJhbnNsYXRlZCBzdHJpbmdzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nZXR0ZXh0L2dldHRleHQuaHRtbCIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiR1BMdjMrICYgTEdQTC0yLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0KLURFUEVORFMgPSAiZ2V0dGV4dC1uYXRpdmUgdmlydHVhbC9saWJpY29udiBleHBhdCIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gImdldHRleHQtbWluaW1hbC1uYXRpdmUiCi1QUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYmludGwgdmlydHVhbC9nZXR0ZXh0IgotUFJPVklERVNfY2xhc3MtbmF0aXZlID0gInZpcnR1YWwvZ2V0dGV4dC1uYXRpdmUiCi1SQ09ORkxJQ1RTXyR7UE59ID0gInByb3h5LWxpYmludGwiCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ2V0dGV4dC9nZXR0ZXh0LSR7UFZ9LnRhci5neiBcCi0JICAgZmlsZTovL3BhcmFsbGVsLnBhdGNoIFwKLQkgICBmaWxlOi8vYWRkLXdpdGgtYmlzb25sb2NhbGVkaXIucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNmQxNDQ3ZjhjNWM0NWMzMjkzNzFlZjRiZmU3ZDc5YTUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWQ0YjRjMTliZDNhMzAzNGViNjc2OTUwMGEzNTkyZmY2MTY3NTllZjQzY2YzMDU4NmRiYjdhMTdjOWRkNjk1ZCIKLQotUEFDS0FHRUNPTkZJR1ttc2djYXQtY3Vyc2VzXSA9ICItLXdpdGgtbGlibmN1cnNlcy1wcmVmaXg9JHtTVEFHSU5HX0xJQkRJUn0vLi4sLS1kaXNhYmxlLWN1cnNlcyxuY3Vyc2VzLCIKLQotTERGTEFHU19wcmVwZW5kX2xpYmMtdWNsaWJjID0gIiAtbHJ0IC1scHRocmVhZCAiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KLQotRVhUUkFfT0VDT05GICs9ICItLXdpdGhvdXQtbGlzcGRpciBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1jc2hhcnAgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtbGliYXNwcmludGYgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtamF2YSBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1uYXRpdmUtamF2YSBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1vcGVubXAgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtYWNsIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWluY2x1ZGVkLWdsaWIgXAotICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtZW1hY3MgXAotICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtY3ZzIFwKLSAgICAgICAgICAgICAgICAgLS13aXRob3V0LWdpdCBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1pbmNsdWRlZC1saWJ4bWwgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtaW5jbHVkZWQtbGliY3JvY28gXAotICAgICAgICAgICAgICAgICAtLXdpdGgtaW5jbHVkZWQtbGlidW5pc3RyaW5nIFwKLSAgICAgICAgICAgICAgICAiCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtYmlzb25sb2NhbGVkaXI9JHtkYXRhZGlyfS9sb2NhbGUgXAotIgotCi1hY3BhdGhzID0gJy1JICR7U30vZ2V0dGV4dC1ydW50aW1lL200IFwKLSAgICAgICAgICAgLUkgJHtTfS9nZXR0ZXh0LXRvb2xzL200JwotCi1kb19pbnN0YWxsX2FwcGVuZF9saWJjLW11c2wgKCkgewotCXJtIC1mICR7RH0ke2xpYmRpcn0vY2hhcnNldC5hbGlhcwotCXJtIC1mICR7RH0ke2luY2x1ZGVkaXJ9L2xpYmludGwuaAotCXJtIC1mICR7RH0ke2xpYmRpcn0vbGliaW50bC5sYQotfQotCi0jIHRoZXNlIGxhY2sgdGhlIC54IGJlaGluZCB0aGUgLnNvLCBidXQgc2hvdWxkbid0IGJlIGluIHRoZSAtZGV2IHBhY2thZ2UKLSMgT3RoZXJ3aXNlIHlvdSBnZXQgdGhlIGZvbGxvd2luZyByZXN1bHRzOgotIyA3LjRNICAgIGdsaWJjL2ltYWdlcy9lcDkzeHgvQW5nc3Ryb20tY29uc29sZS1pbWFnZS1nbGliYy1pcGstMjAwOC4xLXRlc3QtMjAwODAxMDQtZXA5M3h4LnJvb3Rmcy50YXIuZ3oKLSMgMjVNICAgICB1Y2xpYmMvaW1hZ2VzL2VwOTN4eC9BbmdzdHJvbS1jb25zb2xlLWltYWdlLXVjbGliYy1pcGstMjAwOC4xLXRlc3QtMjAwODAxMDQtZXA5M3h4LnJvb3Rmcy50YXIuZ3oKLSMgYmVjYXVzZSBnZXR0ZXh0IGRlcGVuZHMgb24gZ2V0dGV4dC1kZXYsIHdoaWNoIHB1bGxzIGluIG1vcmUgLWRldiBwYWNrYWdlczoKLSMgMTUyMjggICBLaUIgL2VwOTN4eC9saWJzdGRjKystZGV2XzQuMi4yLXIyX2VwOTN4eC5pcGsKLSMgMTMwMCAgICBLaUIgL2VwOTN4eC91Y2xpYmMtZGV2XzAuOS4yOS1yOF9lcDkzeHguaXBrCi0jIDE0MCAgICAgS2lCIC9hcm12NHQvZ2V0dGV4dC1kZXZfMC4xNC4xLXI2X2FybXY0dC5pcGsKLSMgNCAgICAgICBLaUIgL2VwOTN4eC9saWJnY2Mtcy1kZXZfNC4yLjItcjJfZXA5M3h4LmlwawotCi1QQUNLQUdFUyA9KyAibGliZ2V0dGV4dGxpYiBsaWJnZXR0ZXh0c3JjIgotRklMRVNfbGliZ2V0dGV4dGxpYiA9ICIke2xpYmRpcn0vbGliZ2V0dGV4dGxpYi0qLnNvKiIKLUZJTEVTX2xpYmdldHRleHRzcmMgPSAiJHtsaWJkaXJ9L2xpYmdldHRleHRzcmMtKi5zbyoiCi0KLVBBQ0tBR0VTID0rICJnZXR0ZXh0LXJ1bnRpbWUgZ2V0dGV4dC1ydW50aW1lLWRldiBnZXR0ZXh0LXJ1bnRpbWUtZG9jIgotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9LyR7QlBOfS8qIgotCi1GSUxFU19nZXR0ZXh0LXJ1bnRpbWUgPSAiJHtiaW5kaXJ9L2dldHRleHQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9uZ2V0dGV4dCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2VudnN1YnN0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vZ2V0dGV4dC5zaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYmFzcHJpbnRmLnNvKiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L0dOVS5HZXR0ZXh0LmRsbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAiCi1GSUxFU19nZXR0ZXh0LXJ1bnRpbWVfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAke2xpYmRpcn0vbGliaW50bC5zby4qIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9jaGFyc2V0LmFsaWFzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCi1GSUxFU19nZXR0ZXh0LXJ1bnRpbWUtZGV2ICs9ICIke2xpYmRpcn0vbGliYXNwcmludGYuYSBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9hdXRvc3ByaW50Zi5oIFwKLSAgICAgICAgICAgICAgICAgICAgICIKLUZJTEVTX2dldHRleHQtcnVudGltZS1kZXZfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAke2xpYmRpcn0vbGliaW50bC5zbyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9saWJpbnRsLmggXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCi1GSUxFU19nZXR0ZXh0LXJ1bnRpbWUtZG9jID0gIiR7bWFuZGlyfS9tYW4xL2dldHRleHQuKiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4xL25nZXR0ZXh0LiogXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuMS9lbnZzdWJzdC4qIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjEvLiogXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuMy8qIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkb2NkaXJ9L2dldHRleHQvZ2V0dGV4dC4qIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkb2NkaXJ9L2dldHRleHQvbmdldHRleHQuKiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZG9jZGlyfS9nZXR0ZXh0L2VudnN1YnN0LiogXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2RvY2Rpcn0vZ2V0dGV4dC8qLjMuaHRtbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ2V0dGV4dC9BQk9VVC1OTFMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2RvY2Rpcn0vZ2V0dGV4dC9jc2hhcnBkb2MvKiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZG9jZGlyfS9saWJhc3ByaW50Zi9hdXRvc3ByaW50Zi5odG1sIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtpbmZvZGlyfS9hdXRvc3ByaW50Zi5pbmZvIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIHJtIC1mICR7RH0ke2xpYmRpcn0vcHJlbG9hZGFibGVfbGliaW50bC5zbwotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUgKCkgewotCXJtICR7RH0ke2RhdGFkaXJ9L2FjbG9jYWwvKgotCXJtICR7RH0ke2RhdGFkaXJ9L2dldHRleHQvY29uZmlnLnJwYXRoCi0Jcm0gJHtEfSR7ZGF0YWRpcn0vZ2V0dGV4dC9wby9NYWtlZmlsZS5pbi5pbgotCXJtICR7RH0ke2RhdGFkaXJ9L2dldHRleHQvcG8vcmVtb3ZlLXBvdGNkYXRlLnNpbgotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0XzAuMTkuOC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dF8wLjE5LjguMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjhjMWU4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dF8wLjE5LjguMS5iYgpAQCAtMCwwICsxLDEyMCBAQAorU1VNTUFSWSA9ICJVdGlsaXRpZXMgYW5kIGxpYnJhcmllcyBmb3IgcHJvZHVjaW5nIG11bHRpLWxpbmd1YWwgbWVzc2FnZXMiCitERVNDUklQVElPTiA9ICJHTlUgZ2V0dGV4dCBpcyBhIHNldCBvZiB0b29scyB0aGF0IHByb3ZpZGVzIGEgZnJhbWV3b3JrIHRvIGhlbHAgb3RoZXIgcHJvZ3JhbXMgcHJvZHVjZSBtdWx0aS1saW5ndWFsIG1lc3NhZ2VzLiBUaGVzZSB0b29scyBpbmNsdWRlIGEgc2V0IG9mIGNvbnZlbnRpb25zIGFib3V0IGhvdyBwcm9ncmFtcyBzaG91bGQgYmUgd3JpdHRlbiB0byBzdXBwb3J0IG1lc3NhZ2UgY2F0YWxvZ3MsIGEgZGlyZWN0b3J5IGFuZCBmaWxlIG5hbWluZyBvcmdhbml6YXRpb24gZm9yIHRoZSBtZXNzYWdlIGNhdGFsb2dzIHRoZW1zZWx2ZXMsIGEgcnVudGltZSBsaWJyYXJ5IHN1cHBvcnRpbmcgdGhlIHJldHJpZXZhbCBvZiB0cmFuc2xhdGVkIG1lc3NhZ2VzLCBhbmQgYSBmZXcgc3RhbmQtYWxvbmUgcHJvZ3JhbXMgdG8gbWFzc2FnZSBpbiB2YXJpb3VzIHdheXMgdGhlIHNldHMgb2YgdHJhbnNsYXRhYmxlIGFuZCBhbHJlYWR5IHRyYW5zbGF0ZWQgc3RyaW5ncy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ2V0dGV4dC9nZXR0ZXh0Lmh0bWwiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkdQTHYzKyAmIExHUEwtMi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorCitERVBFTkRTID0gImdldHRleHQtbmF0aXZlIHZpcnR1YWwvbGliaWNvbnYgZXhwYXQiCitERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJnZXR0ZXh0LW1pbmltYWwtbmF0aXZlIgorUFJPVklERVMgPSAidmlydHVhbC9saWJpbnRsIHZpcnR1YWwvZ2V0dGV4dCIKK1BST1ZJREVTX2NsYXNzLW5hdGl2ZSA9ICJ2aXJ0dWFsL2dldHRleHQtbmF0aXZlIgorUkNPTkZMSUNUU18ke1BOfSA9ICJwcm94eS1saWJpbnRsIgorU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2dldHRleHQvZ2V0dGV4dC0ke1BWfS50YXIuZ3ogXAorCSAgIGZpbGU6Ly9wYXJhbGxlbC5wYXRjaCBcCisJICAgZmlsZTovL2FkZC13aXRoLWJpc29ubG9jYWxlZGlyLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjk3ZTAzNGNmOGNlNWJhNzNhMjhmZjZjM2MwNjM4MDkyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImZmOTQyYWYwZTQzOGNlZDRhOGIwZWE0YjBiNmUwZDZkNjU3MTU3YzVlMjM2NGRlNTdiYWEyNzljMWMxMjVjNDMiCisKK1BBQ0tBR0VDT05GSUdbbXNnY2F0LWN1cnNlc10gPSAiLS13aXRoLWxpYm5jdXJzZXMtcHJlZml4PSR7U1RBR0lOR19MSUJESVJ9Ly4uLC0tZGlzYWJsZS1jdXJzZXMsbmN1cnNlcywiCisKK0xERkxBR1NfcHJlcGVuZF9saWJjLXVjbGliYyA9ICIgLWxydCAtbHB0aHJlYWQgIgorCitpbmhlcml0IGF1dG90b29scyB0ZXhpbmZvCisKK0VYVFJBX09FQ09ORiArPSAiLS13aXRob3V0LWxpc3BkaXIgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtY3NoYXJwIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWxpYmFzcHJpbnRmIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWphdmEgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtbmF0aXZlLWphdmEgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtb3Blbm1wIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWFjbCBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1pbmNsdWRlZC1nbGliIFwKKyAgICAgICAgICAgICAgICAgLS13aXRob3V0LWVtYWNzIFwKKyAgICAgICAgICAgICAgICAgLS13aXRob3V0LWN2cyBcCisgICAgICAgICAgICAgICAgIC0td2l0aG91dC1naXQgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtaW5jbHVkZWQtbGlieG1sIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWluY2x1ZGVkLWxpYmNyb2NvIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWluY2x1ZGVkLWxpYnVuaXN0cmluZyBcCisgICAgICAgICAgICAgICAgIgorRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWJpc29ubG9jYWxlZGlyPSR7ZGF0YWRpcn0vbG9jYWxlIFwKKyIKKworYWNwYXRocyA9ICctSSAke1N9L2dldHRleHQtcnVudGltZS9tNCBcCisgICAgICAgICAgIC1JICR7U30vZ2V0dGV4dC10b29scy9tNCcKKworZG9faW5zdGFsbF9hcHBlbmRfbGliYy1tdXNsICgpIHsKKwlybSAtZiAke0R9JHtsaWJkaXJ9L2NoYXJzZXQuYWxpYXMKKwlybSAtZiAke0R9JHtpbmNsdWRlZGlyfS9saWJpbnRsLmgKKwlybSAtZiAke0R9JHtsaWJkaXJ9L2xpYmludGwubGEKK30KKworIyB0aGVzZSBsYWNrIHRoZSAueCBiZWhpbmQgdGhlIC5zbywgYnV0IHNob3VsZG4ndCBiZSBpbiB0aGUgLWRldiBwYWNrYWdlCisjIE90aGVyd2lzZSB5b3UgZ2V0IHRoZSBmb2xsb3dpbmcgcmVzdWx0czoKKyMgNy40TSAgICBnbGliYy9pbWFnZXMvZXA5M3h4L0FuZ3N0cm9tLWNvbnNvbGUtaW1hZ2UtZ2xpYmMtaXBrLTIwMDguMS10ZXN0LTIwMDgwMTA0LWVwOTN4eC5yb290ZnMudGFyLmd6CisjIDI1TSAgICAgdWNsaWJjL2ltYWdlcy9lcDkzeHgvQW5nc3Ryb20tY29uc29sZS1pbWFnZS11Y2xpYmMtaXBrLTIwMDguMS10ZXN0LTIwMDgwMTA0LWVwOTN4eC5yb290ZnMudGFyLmd6CisjIGJlY2F1c2UgZ2V0dGV4dCBkZXBlbmRzIG9uIGdldHRleHQtZGV2LCB3aGljaCBwdWxscyBpbiBtb3JlIC1kZXYgcGFja2FnZXM6CisjIDE1MjI4ICAgS2lCIC9lcDkzeHgvbGlic3RkYysrLWRldl80LjIuMi1yMl9lcDkzeHguaXBrCisjIDEzMDAgICAgS2lCIC9lcDkzeHgvdWNsaWJjLWRldl8wLjkuMjktcjhfZXA5M3h4LmlwaworIyAxNDAgICAgIEtpQiAvYXJtdjR0L2dldHRleHQtZGV2XzAuMTQuMS1yNl9hcm12NHQuaXBrCisjIDQgICAgICAgS2lCIC9lcDkzeHgvbGliZ2NjLXMtZGV2XzQuMi4yLXIyX2VwOTN4eC5pcGsKKworUEFDS0FHRVMgPSsgImxpYmdldHRleHRsaWIgbGliZ2V0dGV4dHNyYyIKK0ZJTEVTX2xpYmdldHRleHRsaWIgPSAiJHtsaWJkaXJ9L2xpYmdldHRleHRsaWItKi5zbyoiCitGSUxFU19saWJnZXR0ZXh0c3JjID0gIiR7bGliZGlyfS9saWJnZXR0ZXh0c3JjLSouc28qIgorCitQQUNLQUdFUyA9KyAiZ2V0dGV4dC1ydW50aW1lIGdldHRleHQtcnVudGltZS1kZXYgZ2V0dGV4dC1ydW50aW1lLWRvYyIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8ke0JQTn0vKiIKKworIyBUaGUgaXRzL01ha2VmaWxlLmFtIGhhcyBkZWZpbmVkOgorIyBpdHNkaXIgPSAkKHBrZ2RhdGFkaXIpJChQQUNLQUdFX1NVRkZJWCkvaXRzCisjIG5vdCBpdHNkaXIgPSAkKHBrZ2RhdGFkaXIpLCBzbyB1c2Ugd2lsZGNhcmQgdG8gbWF0Y2ggdGhlIHZlcnNpb24uCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS8ke0JQTn0tKi8qIgorCitGSUxFU19nZXR0ZXh0LXJ1bnRpbWUgPSAiJHtiaW5kaXJ9L2dldHRleHQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9uZ2V0dGV4dCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2VudnN1YnN0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vZ2V0dGV4dC5zaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYmFzcHJpbnRmLnNvKiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L0dOVS5HZXR0ZXh0LmRsbCBcCisgICAgICAgICAgICAgICAgICAgICAgICAiCitGSUxFU19nZXR0ZXh0LXJ1bnRpbWVfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAke2xpYmRpcn0vbGliaW50bC5zby4qIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9jaGFyc2V0LmFsaWFzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCitGSUxFU19nZXR0ZXh0LXJ1bnRpbWUtZGV2ICs9ICIke2xpYmRpcn0vbGliYXNwcmludGYuYSBcCisgICAgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9hdXRvc3ByaW50Zi5oIFwKKyAgICAgICAgICAgICAgICAgICAgICIKK0ZJTEVTX2dldHRleHQtcnVudGltZS1kZXZfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAke2xpYmRpcn0vbGliaW50bC5zbyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9saWJpbnRsLmggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCitGSUxFU19nZXR0ZXh0LXJ1bnRpbWUtZG9jID0gIiR7bWFuZGlyfS9tYW4xL2dldHRleHQuKiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4xL25nZXR0ZXh0LiogXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuMS9lbnZzdWJzdC4qIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjEvLiogXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuMy8qIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkb2NkaXJ9L2dldHRleHQvZ2V0dGV4dC4qIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkb2NkaXJ9L2dldHRleHQvbmdldHRleHQuKiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZG9jZGlyfS9nZXR0ZXh0L2VudnN1YnN0LiogXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2RvY2Rpcn0vZ2V0dGV4dC8qLjMuaHRtbCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ2V0dGV4dC9BQk9VVC1OTFMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2RvY2Rpcn0vZ2V0dGV4dC9jc2hhcnBkb2MvKiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZG9jZGlyfS9saWJhc3ByaW50Zi9hdXRvc3ByaW50Zi5odG1sIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtpbmZvZGlyfS9hdXRvc3ByaW50Zi5pbmZvIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIHJtIC1mICR7RH0ke2xpYmRpcn0vcHJlbG9hZGFibGVfbGliaW50bC5zbworfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUgKCkgeworCXJtICR7RH0ke2RhdGFkaXJ9L2FjbG9jYWwvKgorCXJtICR7RH0ke2RhdGFkaXJ9L2dldHRleHQvY29uZmlnLnJwYXRoCisJcm0gJHtEfSR7ZGF0YWRpcn0vZ2V0dGV4dC9wby9NYWtlZmlsZS5pbi5pbgorCXJtICR7RH0ke2RhdGFkaXJ9L2dldHRleHQvcG8vcmVtb3ZlLXBvdGNkYXRlLnNpbgorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvMDAwMS1Eby1ub3QtaWdub3JlLXJldHVybi12YWx1ZS1vZi13cml0ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC8wMDAxLURvLW5vdC1pZ25vcmUtcmV0dXJuLXZhbHVlLW9mLXdyaXRlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlZTk2YWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvMDAwMS1Eby1ub3QtaWdub3JlLXJldHVybi12YWx1ZS1vZi13cml0ZS5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tIGQ2NTAxYjEwNzk0MGU5ZjU0OGM4OTIzNmQ3NzNjNmQzM2MxNWE1YzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAxNiBBcHIgMjAxNiAxMzoyODo1OSAtMDcwMAorU3ViamVjdDogW1BBVENIIDEvMl0gRG8gbm90IGlnbm9yZSByZXR1cm4gdmFsdWUgb2Ygd3JpdGUoKQorCitnY2Mgd2FybnMgYWJvdXQgaWdub3JpbmcgcmV0dXJuIHZhbHVlIHdoZW4gY29tcGlsaW5nCit3aXRoIGZvcnRpZnkgdHVybmVkIG9uLgorCithc3NlcnQgd2hlbiB3cml0ZSgpIGZhaWxzCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKKyBnbGliL3Rlc3RzL3VuaXguYyB8IDUgKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2xpYi90ZXN0cy91bml4LmMgYi9nbGliL3Rlc3RzL3VuaXguYworaW5kZXggMzU0MzQ1OC4uNGU3ZWQ4NSAxMDA2NDQKKy0tLSBhL2dsaWIvdGVzdHMvdW5peC5jCisrKysgYi9nbGliL3Rlc3RzL3VuaXguYworQEAgLTMyLDE0ICszMiwxNSBAQCB0ZXN0X3BpcGUgKHZvaWQpCisgICBHRXJyb3IgKmVycm9yID0gTlVMTDsKKyAgIGludCBwaXBlZmRbMl07CisgICBjaGFyIGJ1ZlsxMDI0XTsKKy0gIHNzaXplX3QgYnl0ZXNfcmVhZDsKKysgIHNzaXplX3QgYnl0ZXNfcmVhZCwgYnl0ZXNfd3JpdHRlbjsKKyAgIGdib29sZWFuIHJlczsKKyAKKyAgIHJlcyA9IGdfdW5peF9vcGVuX3BpcGUgKHBpcGVmZCwgRkRfQ0xPRVhFQywgJmVycm9yKTsKKyAgIGdfYXNzZXJ0IChyZXMpOworICAgZ19hc3NlcnRfbm9fZXJyb3IgKGVycm9yKTsKKyAKKy0gIHdyaXRlIChwaXBlZmRbMV0sICJoZWxsbyIsIHNpemVvZiAoImhlbGxvIikpOworKyAgYnl0ZXNfd3JpdHRlbiA9IHdyaXRlIChwaXBlZmRbMV0sICJoZWxsbyIsIHNpemVvZiAoImhlbGxvIikpOworKyAgZ19hc3NlcnQgKGJ5dGVzX3dyaXR0ZW4gIT0gLTEgJiYgIndyaXRlKCkgZmFpbGVkIik7CisgICBtZW1zZXQgKGJ1ZiwgMCwgc2l6ZW9mIChidWYpKTsKKyAgIGJ5dGVzX3JlYWQgPSByZWFkIChwaXBlZmRbMF0sIGJ1Ziwgc2l6ZW9mKGJ1ZikgLSAxKTsKKyAgIGdfYXNzZXJ0X2NtcGludCAoYnl0ZXNfcmVhZCwgPiwgMCk7CistLSAKKzIuOC4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC8wMDAxLWNvbmZpZ3VyZS5hYy1Eby1ub3QtdXNlLXJlYWRsaW5rLXdoZW4tY3Jvc3MtY29tcGlsaW4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvMDAwMS1jb25maWd1cmUuYWMtRG8tbm90LXVzZS1yZWFkbGluay13aGVuLWNyb3NzLWNvbXBpbGluLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYmUzNjMxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC8wMDAxLWNvbmZpZ3VyZS5hYy1Eby1ub3QtdXNlLXJlYWRsaW5rLXdoZW4tY3Jvc3MtY29tcGlsaW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1jb21taXQgOWIzOGQ1MDdlYzM3YjNkN2Q0ZGY2MDk1ZmE3ZWQxNmI0N2QzOTlmNwotQXV0aG9yOiBEcmV3IE1vc2VsZXkgPGRyZXdfbW9zZWxleUBtZW50b3IuY29tPgotRGF0ZTogICBTYXQgTWFyIDI5IDIxOjEwOjQzIDIwMTQgLTA0MDAKLQotICAgIGNvbmZpZ3VyZS5hYzogRG8gbm90IHVzZSByZWFkbGluayB3aGVuIGNyb3NzIGNvbXBpbGluZy4KLQotICAgIERvIG5vdCB1c2UgcmVhZGxpbmsgdG8gc2V0IEFCU19HTElCX1JVTlRJTUVfTElCRElSIHdoZW4gY3Jvc3MKLSAgICBjb21waWxpbmcuICBEb2luZyBzbyBjYXVzZXMgaG9zdCBwYXRocyB0byBwb3RlbnRpYWxseSBwb2xsdXRlCi0gICAgdGhlIHRhcmdldC4KLQotICAgIE5vdGUgdGhhdCBpbiB0aGlzIGNhc2UgdGhlIHBhdGggaXMgbm90IGNvbnZlcnRlZCB0byBhYnNvbHV0ZSBpZgotICAgIGl0IGNvbnRhaW5zIGFueSAiLi4iIHJlZmVyZW5jZXMgc28gaXQncyBub3QgY29tcGxldGVseSBjb3JyZWN0LgotCi0gICAgVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjc1NzVdCi0gICAgU2lnbmVkLW9mZi1ieTogRHJldyBNb3NlbGV5IDxkcmV3X21vc2VsZXlAbWVudG9yLmNvbT4KLQotZGlmZiAtcnViIGdsaWItMi4zOC4yLm9yaWcvY29uZmlndXJlLmFjIGdsaWItMi4zOC4yL2NvbmZpZ3VyZS5hYwotLS0tIGdsaWItMi4zOC4yLm9yaWcvY29uZmlndXJlLmFjCTIwMTQtMDQtMDMgMjA6MTc6MTMuMDM1NTY3MTQzIC0wNDAwCi0rKysgZ2xpYi0yLjM4LjIvY29uZmlndXJlLmFjCTIwMTQtMDQtMDMgMjA6MTk6MDcuMDcxNTY2MDU3IC0wNDAwCi1AQCAtMjc1LDcgKzI3NSwxMSBAQAotICAgICAgICAgICAgW10sCi0gCSAgIFt3aXRoX3J1bnRpbWVfbGliZGlyPSIiXSkKLSBHTElCX1JVTlRJTUVfTElCRElSPSIkd2l0aF9ydW50aW1lX2xpYmRpciIKLStBU19JRihbIHRlc3QgJGNyb3NzX2NvbXBpbGluZyA9IHllcyBdLCBbCi0rQUJTX0dMSUJfUlVOVElNRV9MSUJESVI9IiRsaWJkaXIvJHdpdGhfcnVudGltZV9saWJkaXIiCi0rXSwgWwotIEFCU19HTElCX1JVTlRJTUVfTElCRElSPSJgcmVhZGxpbmsgLW0gJGxpYmRpci8kd2l0aF9ydW50aW1lX2xpYmRpcmAiCi0rXSkKLSBBQ19TVUJTVChHTElCX1JVTlRJTUVfTElCRElSKQotIEFDX1NVQlNUKEFCU19HTElCX1JVTlRJTUVfTElCRElSKQotIEFNX0NPTkRJVElPTkFMKEhBVkVfR0xJQl9SVU5USU1FX0xJQkRJUiwgW3Rlc3QgIngkd2l0aF9ydW50aW1lX2xpYmRpciIgIT0gIngiXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC8wMDAyLXRlc3RzLUlnbm9yZS15Mmstd2FybmluZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvMDAwMi10ZXN0cy1JZ25vcmUteTJrLXdhcm5pbmdzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2MWZhMGEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvMDAwMi10ZXN0cy1JZ25vcmUteTJrLXdhcm5pbmdzLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gYjA2YjIyZmVjYzdkZWRhOGM2NWUyODY3MDU2MmNhMjM3MWU0ZTcyNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDE2IEFwciAyMDE2IDEzOjQzOjU0IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSB0ZXN0czogSWdub3JlIHkyayB3YXJuaW5ncworCitzaWxlbmNlcworfCAuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi93b3Jrc3BhY2Uvc291cmNlcy9nbGliLTIuMC9nbGliL3Rlc3RzL2dkYXRldGltZS5jOiBJbiBmdW5jdGlvbiAndGVzdF9zdHJmdGltZSc6Cit8IC4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3dvcmtzcGFjZS9zb3VyY2VzL2dsaWItMi4wL2dsaWIvdGVzdHMvZ2RhdGV0aW1lLmM6MTMzODozOiBlcnJvcjogJyVjJyB5aWVsZHMgb25seSBsYXN0IDIgZGlnaXRzIG9mIHllYXIgaW4gc29tZSBsb2NhbGVzIFstV2Vycm9yPWZvcm1hdC15MmtdCit8ICAgICJhJWEgQSVBIGIlYiBCJUIgYyVjIEMlQyBkJWQgZSVlIEYlRiBnJWcgRyVHIGglaCBIJUggSSVJIGolaiBtJW0gTSVNICIKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworIGdsaWIvdGVzdHMvZ2RhdGV0aW1lLmMgfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9nbGliL3Rlc3RzL2dkYXRldGltZS5jIGIvZ2xpYi90ZXN0cy9nZGF0ZXRpbWUuYworaW5kZXggMTZhMTYzYy4uZTYwNjJmYyAxMDA2NDQKKy0tLSBhL2dsaWIvdGVzdHMvZ2RhdGV0aW1lLmMKKysrKyBiL2dsaWIvdGVzdHMvZ2RhdGV0aW1lLmMKK0BAIC0xMzI2LDYgKzEzMjYsOSBAQCB0ZXN0X3ogKHZvaWQpCisgICBnX3RpbWVfem9uZV91bnJlZiAodHopOworIH0KKyAKKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZm9ybWF0LXkyayIKKysKKyBzdGF0aWMgdm9pZAorIHRlc3Rfc3RyZnRpbWUgKHZvaWQpCisgeworQEAgLTEzNTEsNiArMTM1NCw3IEBAIHRlc3Rfc3RyZnRpbWUgKHZvaWQpCisgICAgIH0KKyAjZW5kaWYKKyB9CisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKKyAKKyBzdGF0aWMgdm9pZAorIHRlc3RfZmluZF9pbnRlcnZhbCAodm9pZCkKKy0tIAorMi44LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL0VuYWJsZS1tb3JlLXRlc3RzLXdoaWxlLWNyb3NzLWNvbXBpbGluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9FbmFibGUtbW9yZS10ZXN0cy13aGlsZS1jcm9zcy1jb21waWxpbmcucGF0Y2gKaW5kZXggZjFlNjg4Yy4uOWI0ZGVkMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL0VuYWJsZS1tb3JlLXRlc3RzLXdoaWxlLWNyb3NzLWNvbXBpbGluZy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvRW5hYmxlLW1vcmUtdGVzdHMtd2hpbGUtY3Jvc3MtY29tcGlsaW5nLnBhdGNoCkBAIC00Niw3ICs0Niw3IEBACiBAQCAtNTQ1LDcgKzU0OCw2IEBAIHRlc3QuZ3Jlc291cmNlOiB0ZXN0LmdyZXNvdXJjZS54bWwgTWFrZWZpbGUgJChzaGVsbCAkKGdsaWJfY29tcGlsZV9yZXNvdXJjZXMpIC0tCiAgCiAgRVhUUkFfRElTVCArPSB0ZXN0LmdyZXNvdXJjZS54bWwgdGVzdDEudHh0IHRlc3QyLmdyZXNvdXJjZS54bWwgdGVzdDIudHh0IHRlc3QzLmdyZXNvdXJjZS54bWwgdGVzdDMudHh0IHRlc3Q0LmdyZXNvdXJjZS54bWwKLSBDTEVBTkZJTEVTICs9IHRlc3RfcmVzb3VyY2VzLmMgdGVzdF9yZXNvdXJjZXMyLltjaF0gcGx1Z2luX3Jlc291cmNlcy5jIHRlc3QuZ3Jlc291cmNlCisgQ0xFQU5GSUxFUyArPSB0ZXN0LWdlbmVyYXRlZC50eHQgdGVzdF9yZXNvdXJjZXMuYyB0ZXN0X3Jlc291cmNlczIuW2NoXSBwbHVnaW5fcmVzb3VyY2VzLmMgdGVzdC5ncmVzb3VyY2UKIC1lbmRpZiAjICFDUk9TU19DT01QSUxJTkcKICAKICBCVUlMVF9TT1VSQ0VTICs9IGdpb3R5cGVmdW5jcy5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvZ2xpYi0yLjAtY29uZmlndXJlLXJlYWRsaW5rLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL2dsaWItMi4wLWNvbmZpZ3VyZS1yZWFkbGluay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTc1OWQxMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvZ2xpYi0yLjAtY29uZmlndXJlLXJlYWRsaW5rLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotY29uZmlndXJlLmFjOiBjaGFuZ2UgcmVhZGxpbmsgLWYgdG8gLW0KLQotQ2hhbmdlICJyZWFkbGluayAtZiIgdG8gInJlYWRsaW5rIC1tIiBzaW5jZSAkbGliZGlyLyR3aXRoX3J1bnRpbWVfbGliZGlyCi1tYXkgbm90IGV4aXN0LgotCi1UaGlzIHBhdGNoIHNob3VsZCBnbyB0byB0aGUgdXBzdHJlYW0sIEkgd2lsbCBzZW5kIGl0IHNvb25lci4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTI3MSw3ICsyNzEsNyBAQCBBQ19BUkdfV0lUSChydW50aW1lLWxpYmRpciwKLSAgICAgICAgICAgIFtdLAotIAkgICBbd2l0aF9ydW50aW1lX2xpYmRpcj0iIl0pCi0gR0xJQl9SVU5USU1FX0xJQkRJUj0iJHdpdGhfcnVudGltZV9saWJkaXIiCi0tQUJTX0dMSUJfUlVOVElNRV9MSUJESVI9ImByZWFkbGluayAtZiAkbGliZGlyLyR3aXRoX3J1bnRpbWVfbGliZGlyYCIKLStBQlNfR0xJQl9SVU5USU1FX0xJQkRJUj0iYHJlYWRsaW5rIC1tICRsaWJkaXIvJHdpdGhfcnVudGltZV9saWJkaXJgIgotIEFDX1NVQlNUKEdMSUJfUlVOVElNRV9MSUJESVIpCi0gQUNfU1VCU1QoQUJTX0dMSUJfUlVOVElNRV9MSUJESVIpCi0gQU1fQ09ORElUSU9OQUwoSEFWRV9HTElCX1JVTlRJTUVfTElCRElSLCBbdGVzdCAieCR3aXRoX3J1bnRpbWVfbGliZGlyIiAhPSAieCJdKQotLS0gCi0xLjguMS4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9yZWxvY2F0ZS1tb2R1bGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL3JlbG9jYXRlLW1vZHVsZXMucGF0Y2gKaW5kZXggZjllM2YzZC4uNjVkNWI0MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL3JlbG9jYXRlLW1vZHVsZXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL3JlbG9jYXRlLW1vZHVsZXMucGF0Y2gKQEAgLTYsNDQgKzYsNDIgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQogU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KIAorUG9ydCBwYXRjaCB0byAyLjQ4CitTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorLS0tCisgZ2lvL2dpb21vZHVsZS5jIHwgMTIgKysrKysrKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKwogZGlmZiAtLWdpdCBhL2dpby9naW9tb2R1bGUuYyBiL2dpby9naW9tb2R1bGUuYwotaW5kZXggNTZjNDk4Yy4uYTJlMzJiNyAxMDA2NDQKK2luZGV4IGRhN2MxNjcuLmNjMGJjN2MgMTAwNjQ0CiAtLS0gYS9naW8vZ2lvbW9kdWxlLmMKICsrKyBiL2dpby9naW9tb2R1bGUuYwotQEAgLTQ3LDYgKzQ3LDI3IEBACi0gI2luY2x1ZGUgImdkZXNrdG9wYXBwaW5mby5oIgotICNlbmRpZgotIAorQEAgLTQwLDYgKzQwLDggQEAKKyAjaW5jbHVkZSAiZ25ldHdvcmttb25pdG9yLmgiCisgI2lmZGVmIEdfT1NfV0lOMzIKKyAjaW5jbHVkZSAiZ3JlZ2lzdHJ5c2V0dGluZ3NiYWNrZW5kLmgiCisrI2Vsc2UKICsjaW5jbHVkZSA8ZGxmY24uaD4KLSsKLSsvKgotKyAqIEdlbmVyYXRlIGEgR0lPIG1vZHVsZSBkaXJlY3RvcnkgYmFzZWQgb24gd2hlcmUgZ2xpYiBpcyBpbnN0YWxsZWQKLSsgKi8KLStzdGF0aWMgY29uc3QgY2hhciAqCi0rX2dldF9naW9fbW9kdWxlX2RpciAodm9pZCkKLSt7Ci0rICBEbF9pbmZvIGluZm87Ci0rCi0rICBpZiAoZGxhZGRyIChnX2lvX21vZHVsZV9uZXcsICZpbmZvKSkgewotKyAgICBjaGFyICpsaWJkaXIgPSBnX3BhdGhfZ2V0X2Rpcm5hbWUgKGluZm8uZGxpX2ZuYW1lKTsKLSsgICAgY2hhciAqZGlyID0gZ19idWlsZF9maWxlbmFtZSAobGliZGlyLCAiZ2lvIiwgIm1vZHVsZXMiLCBOVUxMKTsKLSsgICAgZ19mcmVlIChsaWJkaXIpOwotKyAgICByZXR1cm4gZGlyOwotKyAgfSBlbHNlIHsKLSsgICAgcmV0dXJuIEdJT19NT0RVTEVfRElSOwotKyAgfQotK30KLSsKLSsKLSAvKioKLSAgKiBTRUNUSU9OOmdpb21vZHVsZQotICAqIEBzaG9ydF9kZXNjcmlwdGlvbjogTG9hZGFibGUgR0lPIE1vZHVsZXMKLUBAIC0xMDU3LDcgKzEwNzgsNyBAQCBfZ19pb19tb2R1bGVzX2Vuc3VyZV9sb2FkZWQgKHZvaWQpCi0gICAgICAgLyogVGhlbiBsb2FkIHRoZSBjb21waWxlZCBpbiBwYXRoICovCi0gICAgICAgbW9kdWxlX2RpciA9IGdfZ2V0ZW52ICgiR0lPX01PRFVMRV9ESVIiKTsKLSAgICAgICBpZiAobW9kdWxlX2RpciA9PSBOVUxMKQotLSAgICAgICAgbW9kdWxlX2RpciA9IEdJT19NT0RVTEVfRElSOwotKyAgICAgICAgbW9kdWxlX2RpciA9IF9nZXRfZ2lvX21vZHVsZV9kaXIgKCk7CisgI2VuZGlmCisgI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+CiAgCi0gICAgICAgZ19pb19tb2R1bGVzX3NjYW5fYWxsX2luX2RpcmVjdG9yeV93aXRoX3Njb3BlIChtb2R1bGVfZGlyLCBzY29wZSk7CitAQCAtMTAzNiw3ICsxMDM4LDE1IEBAIGdldF9naW9fbW9kdWxlX2RpciAodm9pZCkKKyAjZW5kaWYKKyAgICAgICBnX2ZyZWUgKGluc3RhbGxfZGlyKTsKKyAjZWxzZQorLSAgICAgIG1vZHVsZV9kaXIgPSBnX3N0cmR1cCAoR0lPX01PRFVMRV9ESVIpOworKyAgICAgIERsX2luZm8gaW5mbzsKKysKKysgICAgICBpZiAoZGxhZGRyIChnX2lvX21vZHVsZV9uZXcsICZpbmZvKSkgeworKyAgICAgICAgY2hhciAqbGliZGlyID0gZ19wYXRoX2dldF9kaXJuYW1lIChpbmZvLmRsaV9mbmFtZSk7CisrICAgICAgICBtb2R1bGVfZGlyID0gZ19idWlsZF9maWxlbmFtZSAobGliZGlyLCAiZ2lvIiwgIm1vZHVsZXMiLCBOVUxMKTsKKysgICAgICAgIGdfZnJlZSAobGliZGlyKTsKKysgICAgICB9IGVsc2UgeworKyAgICAgICAgbW9kdWxlX2RpciA9IGdfc3RyZHVwIChHSU9fTU9EVUxFX0RJUik7CisrICAgICAgfQorICNlbmRpZgorICAgICB9CiAgCistLSAKKzIuMS40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMF8yLjQ2LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjBfMi40Ni4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTQ0NWI0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMF8yLjQ2LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1yZXF1aXJlIGdsaWIuaW5jCi0KLVBFID0gIjEiCi0KLVNIUlRfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCi0KLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9L2dsaWIvJHtTSFJUX1ZFUn0vZ2xpYi0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLWxpYnRvb2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LWNvbmZsaWN0aW5nLXJhbmQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ2xpYi0yLjAtY29uZmlndXJlLXJlYWRsaW5rLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9wdGVzdC1wYXRocy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly91Y2xpYmNfbXVzbF90cmFuc2xhdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1Eby1ub3QtdXNlLXJlYWRsaW5rLXdoZW4tY3Jvc3MtY29tcGlsaW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYWxsb3ctcnVuLW1lZGlhLXNkWC1kcml2ZS1tb3VudC1pZi11c2VybmFtZS1yb290LnBhdGNoIFwKLQkgICBmaWxlOi8vMDAwMS1SZW1vdmUtdGhlLXdhcm5pbmctYWJvdXQtZGVwcmVjYXRlZC1wYXRocy1pbi1zY2hlbWFzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0VuYWJsZS1tb3JlLXRlc3RzLXdoaWxlLWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9naS1leGNsdWRlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtSW5zdGFsbC1naW8tcXVlcnltb2R1bGVzLWFzLWxpYmV4ZWNfUFJPR1JBTS5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly9nbGliLWdldHRleHRpemUtZGlyLnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3JlbG9jYXRlLW1vZHVsZXMucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3ZjgxNWQ2ZTQ2ZGY2OGUwNzBjYjQyMWVkN2YxMTM5ZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1MDMxNzIyZTM3MDM2NzE5YzFhMDkxNjNjYzZjZjdjMzI2ZTRjNGYxZjFlMDc0YjQzM2MxNTY4NjJiZDczM2RiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wXzIuNDguMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMF8yLjQ4LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ1ZjY0NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMF8yLjQ4LjIuYmIKQEAgLTAsMCArMSwyNiBAQAorcmVxdWlyZSBnbGliLmluYworCitQRSA9ICIxIgorCitTSFJUX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgorCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS9nbGliLyR7U0hSVF9WRVJ9L2dsaWItJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS1saWJ0b29sLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1jb25mbGljdGluZy1yYW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9wdGVzdC1wYXRocy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly91Y2xpYmNfbXVzbF90cmFuc2xhdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hbGxvdy1ydW4tbWVkaWEtc2RYLWRyaXZlLW1vdW50LWlmLXVzZXJuYW1lLXJvb3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtdGhlLXdhcm5pbmctYWJvdXQtZGVwcmVjYXRlZC1wYXRocy1pbi1zY2hlbWFzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0VuYWJsZS1tb3JlLXRlc3RzLXdoaWxlLWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9naS1leGNsdWRlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtSW5zdGFsbC1naW8tcXVlcnltb2R1bGVzLWFzLWxpYmV4ZWNfUFJPR1JBTS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1pZ25vcmUtcmV0dXJuLXZhbHVlLW9mLXdyaXRlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItdGVzdHMtSWdub3JlLXkyay13YXJuaW5ncy5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vZ2xpYi1nZXR0ZXh0aXplLWRpci5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9yZWxvY2F0ZS1tb2R1bGVzLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZjRhYzFhYTJlZmQ0ZjU3OThjMzc2MjVlYTY5N2FjNTciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjI1ZTc1MTU4OWNiMWE1ODgyNmVhYzI0ZmJkNDE4NmNkYTQ1MThhZjc3MjgwNmI2NjZhM2Y5MWY2NmU2ZDNmNCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLmluYwppbmRleCBlNzY0ZmFkLi45MDZlMGQ0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWIuaW5jCkBAIC0yNiw3ICsyNiw3IEBACiAKIExFQURfU09OQU1FID0gImxpYmdsaWItMi4wLioiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgZ3RrLWRvYyBwa2djb25maWcgcHRlc3QtZ25vbWUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGJhc2gtY29tcGxldGlvbiBnaW8tbW9kdWxlLWNhY2hlCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IGd0ay1kb2MgcGtnY29uZmlnIHB0ZXN0LWdub21lIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBiYXNoLWNvbXBsZXRpb24gZ2lvLW1vZHVsZS1jYWNoZSBweXRob24zbmF0aXZlCiAKIFMgPSAiJHtXT1JLRElSfS9nbGliLSR7UFZ9IgogCkBAIC00NCw3ICs0NCw3IEBACiBFWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAtLXdpdGgtbGliaWNvbnY9Z251IgogCiBkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLQlzZWQgLWkgLWUgJzFzLCMhLiosIyEke1VTUkJJTlBBVEh9L2VudiBweXRob24sJyAke1N9L2dpby9nZGJ1cy0yLjAvY29kZWdlbi9nZGJ1cy1jb2RlZ2VuLmluCisJc2VkIC1pIC1lICcxcywjIS4qLCMhJHtVU1JCSU5QQVRIfS9lbnYgcHl0aG9uMywnICR7U30vZ2lvL2dkYnVzLTIuMC9jb2RlZ2VuL2dkYnVzLWNvZGVnZW4uaW4KIH0KIAogRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYioke1NPTElCU30gXApAQCAtNTksNyArNTksOCBAQAogICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vZ2xpYi1ta2VudW1zIFwKICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2dsaWItY29tcGlsZS1yZXNvdXJjZXMgXAogICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dsaWItMi4wL2dldHRleHQvcG8vTWFrZWZpbGUuaW4uaW4gXAotICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dsaWItMi4wL3NjaGVtYXMvZ3NjaGVtYS5kdGQiCisgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ2xpYi0yLjAvc2NoZW1hcy9nc2NoZW1hLmR0ZCBcCisgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ2V0dGV4dC9pdHMiCiBGSUxFU18ke1BOfS1kYmcgKz0gIiR7ZGF0YWRpcn0vZ2xpYi0yLjAvZ2RiICR7ZGF0YWRpcn0vZ2RiIgogRklMRVNfJHtQTn0tY29kZWdlbiA9ICIke2RhdGFkaXJ9L2dsaWItMi4wL2NvZGVnZW4vKi5weSBcCiAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9nZGJ1cy1jb2RlZ2VuIgpAQCAtNjcsMTUgKzY4LDE5IEBACiAKIEFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgogQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCisjIFZhbGdyaW5kIHJ1bnRpbWUgZGV0ZWN0aW9uIHdvcmtzIHVzaW5nIGhhbmQtd3JpdHRlbiBhc3NlbWJseSwgd2hpY2gKKyMgZG9lc24ndCBzdXBwb3J0IG1pcHMxNmUKK0NQUEZMQUdTX2FwcGVuZF9jbGFzcy10YXJnZXRfbWlwczE2ZSA9ICIgLUROVkFMR1JJTkQ9MSIKIAogVVNFX05MUyA9ICJ5ZXMiCiAKIGRvX2luc3RhbGxfYXBwZW5kICgpIHsKIAlpZiBbIC1mICR7RH0ke2JpbmRpcn0vZ3Rlc3Rlci1yZXBvcnQgXTsgdGhlbgotCQlzZWQgJHtEfSR7YmluZGlyfS9ndGVzdGVyLXJlcG9ydCAtaSAtZSAnMXN8XiMhLip8IyEvdXNyL2Jpbi9lbnYgcHl0aG9ufCcKKwkJc2VkICR7RH0ke2JpbmRpcn0vZ3Rlc3Rlci1yZXBvcnQgLWkgLWUgJzFzfF4jIS4qfCMhL3Vzci9iaW4vZW52IHB5dGhvbjN8JwogCWZpCiAKIAkjIFJlbW92ZSBzb21lIHVucGFja2FnZWQgZmlsZXMKKwlybSAtcmYgJHtEfSR7ZGF0YWRpcn0vZ2xpYi0yLjAvY29kZWdlbi9fX3B5Y2FjaGVfXwogCXJtIC1mICR7RH0ke2RhdGFkaXJ9L2dsaWItMi4wL2NvZGVnZW4vKi5weWMKIAlybSAtZiAke0R9JHtkYXRhZGlyfS9nbGliLTIuMC9jb2RlZ2VuLyoucHlvCiAKQEAgLTEwOCw4ICsxMTMsNiBAQAogICAgICAgICAgICAgdHpkYXRhLWFzaWEgXAogICAgICAgICAgICAgdHpkYXRhLWV1cm9wZSBcCiAgICAgICAgICAgICB0emRhdGEtcG9zaXggXAotICAgICAgICAgICAgcHl0aG9uLXB5Z29iamVjdCBcCi0gICAgICAgICAgICBweXRob24tZGJ1cyBcCiAgICAgICAgICAgICBzaGFyZWQtbWltZS1pbmZvIFwKICAgICAgICAgICAgIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi1uZXR3b3JraW5nL2dsaWItbmV0d29ya2luZ18yLjQ2LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi1uZXR3b3JraW5nL2dsaWItbmV0d29ya2luZ18yLjQ2LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0OWFjOTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItbmV0d29ya2luZy9nbGliLW5ldHdvcmtpbmdfMi40Ni4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotU1VNTUFSWSA9ICJHTGliIG5ldHdvcmtpbmcgZXh0ZW5zaW9ucyIKLURFU0NSSVBUSU9OID0gImdsaWItbmV0d29ya2luZyBjb250YWlucyB0aGUgaW1wbGVtZW50YXRpb25zIG9mIGNlcnRhaW4gR0xpYiBuZXR3b3JraW5nIGZlYXR1cmVzIHRoYXQgY2Fubm90IGJlIGltcGxlbWVudGVkIGRpcmVjdGx5IGluIEdMaWIgaXRzZWxmIGJlY2F1c2Ugb2YgdGhlaXIgZGVwZW5kZW5jaWVzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9naXQuZ25vbWUub3JnL2Jyb3dzZS9nbGliLW5ldHdvcmtpbmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnIgotCi1MSUNFTlNFID0gIkxHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIgotCi1TRUNUSU9OID0gImxpYnMiCi1ERVBFTkRTID0gImdsaWItMi4wIGludGx0b29sLW5hdGl2ZSIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiYzAwMGUwYjU3OWY1ZDhmZDQ4ZWZlYmM3YWM0ZDk1ZGMiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJkNTAzNDIxNDIxN2Y3MDU4OTFiNmM5ZTcxOWNjMmM1ODNjODcwYmZjZmRjNDU0ZWJiYjVlNWU4OTQwYWM5MGIxIgotCi1QQUNLQUdFQ09ORklHID8/PSAiY2EtY2VydGlmaWNhdGVzIGdudXRscyIKLQotIyBObyBleHBsaWNpdCBkZXBlbmRlbmN5IGFzIGl0IHdvcmtzIHdpdGhvdXQgY2EtY2VydGlmaWNhdGVzIGluc3RhbGxlZAotUEFDS0FHRUNPTkZJR1tjYS1jZXJ0aWZpY2F0ZXNdID0gIi0td2l0aC1jYS1jZXJ0aWZpY2F0ZXM9JHtzeXNjb25mZGlyfS9zc2wvY2VydHMvY2EtY2VydGlmaWNhdGVzLmNydCwtLXdpdGhvdXQtY2EtY2VydGlmaWNhdGVzIgotUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0td2l0aC1nbnV0bHMsLS13aXRob3V0LWdudXRscyxnbnV0bHMiCi1QQUNLQUdFQ09ORklHW2xpYnByb3h5XSA9ICItLXdpdGgtbGlicHJveHksLS13aXRob3V0LWxpYnByb3h5LGxpYnByb3h5IgotUEFDS0FHRUNPTkZJR1twa2NzMTFdID0gIi0td2l0aC1wa2NzMTEsLS13aXRob3V0LXBrY3MxMSxwMTEta2l0IgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LWdub21lLXByb3h5IgotCi1pbmhlcml0IGdub21lYmFzZSBnZXR0ZXh0IHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnaW8tbW9kdWxlLWNhY2hlCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZ2lvL21vZHVsZXMvbGliZ2lvKi5zbyAke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcy8iCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9naW8vbW9kdWxlcy9saWJnaW8qLmxhIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vZ2lvL21vZHVsZXMvbGliZ2lvKi5hIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItbmV0d29ya2luZy9nbGliLW5ldHdvcmtpbmdfMi40OC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItbmV0d29ya2luZy9nbGliLW5ldHdvcmtpbmdfMi40OC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwZDk5ODMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi1uZXR3b3JraW5nL2dsaWItbmV0d29ya2luZ18yLjQ4LjIuYmIKQEAgLTAsMCArMSwyOSBAQAorU1VNTUFSWSA9ICJHTGliIG5ldHdvcmtpbmcgZXh0ZW5zaW9ucyIKK0RFU0NSSVBUSU9OID0gImdsaWItbmV0d29ya2luZyBjb250YWlucyB0aGUgaW1wbGVtZW50YXRpb25zIG9mIGNlcnRhaW4gR0xpYiBuZXR3b3JraW5nIGZlYXR1cmVzIHRoYXQgY2Fubm90IGJlIGltcGxlbWVudGVkIGRpcmVjdGx5IGluIEdMaWIgaXRzZWxmIGJlY2F1c2Ugb2YgdGhlaXIgZGVwZW5kZW5jaWVzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9naXQuZ25vbWUub3JnL2Jyb3dzZS9nbGliLW5ldHdvcmtpbmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnIgorCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIgorCitTRUNUSU9OID0gImxpYnMiCitERVBFTkRTID0gImdsaWItMi4wIGludGx0b29sLW5hdGl2ZSIKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZDdjZjgxZDUyYzg1NmIwYzY2Zjc4MjEwMjFmNDBlMDgiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI5MjVjMGM0OWQ2YjJiOGI1Njk1ZjJlMzNjZDk1MmQxZGJiN2QxOGQzZjJmNzk2NDEzNTc3NzE5MzE1YmIzYTg0IgorCitQQUNLQUdFQ09ORklHID8/PSAiY2EtY2VydGlmaWNhdGVzIGdudXRscyIKKworIyBObyBleHBsaWNpdCBkZXBlbmRlbmN5IGFzIGl0IHdvcmtzIHdpdGhvdXQgY2EtY2VydGlmaWNhdGVzIGluc3RhbGxlZAorUEFDS0FHRUNPTkZJR1tjYS1jZXJ0aWZpY2F0ZXNdID0gIi0td2l0aC1jYS1jZXJ0aWZpY2F0ZXM9JHtzeXNjb25mZGlyfS9zc2wvY2VydHMvY2EtY2VydGlmaWNhdGVzLmNydCwtLXdpdGhvdXQtY2EtY2VydGlmaWNhdGVzIgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0td2l0aC1nbnV0bHMsLS13aXRob3V0LWdudXRscyxnbnV0bHMiCitQQUNLQUdFQ09ORklHW2xpYnByb3h5XSA9ICItLXdpdGgtbGlicHJveHksLS13aXRob3V0LWxpYnByb3h5LGxpYnByb3h5IgorUEFDS0FHRUNPTkZJR1twa2NzMTFdID0gIi0td2l0aC1wa2NzMTEsLS13aXRob3V0LXBrY3MxMSxwMTEta2l0IgorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LWdub21lLXByb3h5IgorCitpbmhlcml0IGdub21lYmFzZSBnZXR0ZXh0IHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnaW8tbW9kdWxlLWNhY2hlCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZ2lvL21vZHVsZXMvbGliZ2lvKi5zbyAke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcy8iCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9naW8vbW9kdWxlcy9saWJnaW8qLmxhIgorRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vZ2lvL21vZHVsZXMvbGliZ2lvKi5hIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2Nyb3NzLWxvY2FsZWRlZi1uYXRpdmUvZml4X2Zvcl9jZW50b3NfNS44LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2Nyb3NzLWxvY2FsZWRlZi1uYXRpdmUvZml4X2Zvcl9jZW50b3NfNS44LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxODZhNDgwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9jcm9zcy1sb2NhbGVkZWYtbmF0aXZlL2ZpeF9mb3JfY2VudG9zXzUuOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb3RoZXJdCi0KLVRoaXMgaXMgYSBoYWNrIHRvIGZpeCBidWlsZGluZyB0aGUgbG9jYWxlIGJpdHMgb24gYW4gb2xkZXIKLUNlbnRPcyA1LlggbWFjaGluZQotCi1JbmRleDogZ2l0L2xvY2FsZS9wcm9ncmFtcy9jb25maWcuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC9sb2NhbGUvcHJvZ3JhbXMvY29uZmlnLmgKLSsrKyBnaXQub3JpZy9sb2NhbGUvcHJvZ3JhbXMvY29uZmlnLmgKLUBAIC0xOSw2ICsxOSw4IEBACi0gI2lmbmRlZiBfTERfQ09ORklHX0gKLSAjZGVmaW5lIF9MRF9DT05GSUdfSAkxCi0gCi0rI2RlZmluZSBEVU1NWV9MT0NBTEVfVAotKwotIC8qIFVzZSB0aGUgaW50ZXJuYWwgdGV4dGRvbWFpbiB1c2VkIGZvciBsaWJjIG1lc3NhZ2VzLiAgKi8KLSAjZGVmaW5lIFBBQ0tBR0UgX2xpYmNfaW50bF9kb21haW5uYW1lCi0gI2lmbmRlZiBWRVJTSU9OCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvY3Jvc3MtbG9jYWxlZGVmLW5hdGl2ZV8yLjIzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2Nyb3NzLWxvY2FsZWRlZi1uYXRpdmVfMi4yMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE5MzBmZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvY3Jvc3MtbG9jYWxlZGVmLW5hdGl2ZV8yLjIzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotU1VNTUFSWSA9ICJDcm9zcyBsb2NhbGUgZ2VuZXJhdGlvbiB0b29sIGZvciBnbGliYyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJjL2xpYmMuaHRtbCIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTEdQTC0yLjEiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0VTO21kNT1lOWE1NThlMjQzYjM2ZDMyMDlmMzgwZGViMzk0YjIxMyBcCi0gICAgICBmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgZmlsZTovL3Bvc2l4L3J4c3BlbmNlci9DT1BZUklHSFQ7bWQ1PWRjNTQ4NWJiMzk0YTEzYjIzMzJlYzFjNzg1ZjVkODNhIFwKLSAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLQotaW5oZXJpdCBuYXRpdmUKLWluaGVyaXQgYXV0b3Rvb2xzCi0KLUZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9LyR7UE59OiR7RklMRV9ESVJOQU1FfS9nbGliYzoiCi0KLVNSQ0JSQU5DSCA/PSAicmVsZWFzZS8ke1BWfS9tYXN0ZXIiCi1HTElCQ19HSVRfVVJJID89ICJnaXQ6Ly9zb3VyY2V3YXJlLm9yZy9naXQvZ2xpYmMuZ2l0IgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrXC5cZCsoXC5cZCspKikiCi0KLVNSQ19VUkkgPSAiJHtHTElCQ19HSVRfVVJJfTticmFuY2g9JHtTUkNCUkFOQ0h9O25hbWU9Z2xpYmMgXAotICAgICAgICAgICBnaXQ6Ly9naXRodWIuY29tL2tyYWovbG9jYWxlZGVmO2JyYW5jaD1tYXN0ZXI7bmFtZT1sb2NhbGVkZWY7ZGVzdHN1ZmZpeD1naXQvbG9jYWxlZGVmIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeF9mb3JfY2VudG9zXzUuOC5wYXRjaCBcCi0gICAgICAgICAgICR7RUdMSUJDUEFUQ0hFU30gXAotIgotRUdMSUJDUEFUQ0hFUyA9ICJcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE2LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNy1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTgtZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE5LWVnbGliYy1IZWxwLWJvb3RzdHJhcC1jcm9zcy10b29sY2hhaW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMC1lZ2xpYmMtY2hlcnJ5LXBpY2tlZC1mcm9tLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjEtZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIyLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIzLWVnbGliYy1JbnN0YWxsLVBJQy1hcmNoaXZlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI1LWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaCBcCi0iCi0KLVNSQ1JFVl9nbGliYyA/PSAiZTc0MjkyOGMxNTkyYjQzZGI2ODA5ZGI0ZjM5ZTY3YmUxNTFjZGQyNyIKLVNSQ1JFVl9sb2NhbGVkZWYgPz0gIjVhODFmZjlmMDZhN2E4MDhkNGMzZDM3YmJmMzQwNzdhNGM1OTAyZWQiCi0KLSMgTWFrZXMgZm9yIGEgcmF0aGVyIGxvbmcgcmV2ICgyMiBjaGFyYWN0ZXJzKSwgYnV0Li4uCi0jCi1TUkNSRVZfRk9STUFUID0gImdsaWJjX2xvY2FsZWRlZiIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC1nbGliYz0ke1N9IgotQ0ZMQUdTICs9ICItZmdudTg5LWlubGluZSAtc3RkPWdudTk5IC1ESVNfSU5cKHhcKT0nMCciCi0KLWRvX2NvbmZpZ3VyZSAoKSB7Ci0JJHtTfS9sb2NhbGVkZWYvY29uZmlndXJlICR7RVhUUkFfT0VDT05GfQotfQotCi0KLWRvX2luc3RhbGwoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0JaW5zdGFsbCAtbSAwNzU1ICR7Qn0vbG9jYWxlZGVmICR7RH0ke2JpbmRpcn0vY3Jvc3MtbG9jYWxlZGVmCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvY3Jvc3MtbG9jYWxlZGVmLW5hdGl2ZV8yLjI0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2Nyb3NzLWxvY2FsZWRlZi1uYXRpdmVfMi4yNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGNjY2VkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2Nyb3NzLWxvY2FsZWRlZi1uYXRpdmVfMi4yNC5iYgpAQCAtMCwwICsxLDUyIEBACitTVU1NQVJZID0gIkNyb3NzIGxvY2FsZSBnZW5lcmF0aW9uIHRvb2wgZm9yIGdsaWJjIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYmMvbGliYy5odG1sIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMR1BMLTIuMSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRVM7bWQ1PWU5YTU1OGUyNDNiMzZkMzIwOWYzODBkZWIzOTRiMjEzIFwKKyAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICBmaWxlOi8vcG9zaXgvcnhzcGVuY2VyL0NPUFlSSUdIVDttZDU9ZGM1NDg1YmIzOTRhMTNiMjMzMmVjMWM3ODVmNWQ4M2EgXAorICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworIyBUZWxsIGF1dG90b29scyB0aGF0IHdlJ3JlIHdvcmtpbmcgaW4gdGhlIGxvY2FsZWRlZiBkaXJlY3RvcnkKKyMKK0FVVE9UT09MU19TQ1JJUFRfUEFUSCA9ICIke1N9L2xvY2FsZWRlZiIKKworaW5oZXJpdCBuYXRpdmUKK2luaGVyaXQgYXV0b3Rvb2xzCisKK0ZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9LyR7UE59OiR7RklMRV9ESVJOQU1FfS9nbGliYzoiCisKK1NSQ0JSQU5DSCA/PSAicmVsZWFzZS8ke1BWfS9tYXN0ZXIiCitHTElCQ19HSVRfVVJJID89ICJnaXQ6Ly9zb3VyY2V3YXJlLm9yZy9naXQvZ2xpYmMuZ2l0IgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrXC5cZCsoXC5cZCspKikiCisKK1NSQ1JFVl9nbGliYyA/PSAiZWEyMzgxNWE3OTVmNzIwMzUyNjI5NTNkYWQ1YmViMDNlMDljMTdkZCIKK1NSQ1JFVl9sb2NhbGVkZWYgPz0gIjI5ODY5YjZkYzExNDI3YzViYWI4MzliZGIxNTVjODVhN2M2NDRjNzEiCisKK1NSQ19VUkkgPSAiJHtHTElCQ19HSVRfVVJJfTticmFuY2g9JHtTUkNCUkFOQ0h9O25hbWU9Z2xpYmMgXAorICAgICAgICAgICBnaXQ6Ly9naXRodWIuY29tL2tyYWovbG9jYWxlZGVmO2JyYW5jaD1tYXN0ZXI7bmFtZT1sb2NhbGVkZWY7ZGVzdHN1ZmZpeD1naXQvbG9jYWxlZGVmIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTYtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE3LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxOC1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTktZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIwLWVnbGliYy1jaGVycnktcGlja2VkLWZyb20ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMS1lZ2xpYmMtQ2xlYXItY2FjaGUtbGluZXMtb24tcHBjOHh4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjItZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjMtZWdsaWJjLUluc3RhbGwtUElDLWFyY2hpdmVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjQtZWdsaWJjLUZvcndhcmQtcG9ydC1jcm9zcy1sb2NhbGUtZ2VuZXJhdGlvbi1zdXBwb3J0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjUtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoIFwKKyIKKyMgTWFrZXMgZm9yIGEgcmF0aGVyIGxvbmcgcmV2ICgyMiBjaGFyYWN0ZXJzKSwgYnV0Li4uCisjCitTUkNSRVZfRk9STUFUID0gImdsaWJjX2xvY2FsZWRlZiIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC1nbGliYz0ke1N9IgorQ0ZMQUdTICs9ICItZmdudTg5LWlubGluZSAtc3RkPWdudTk5IC1ESVNfSU5cKHhcKT0nMCciCisKK2RvX2luc3RhbGwoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisJaW5zdGFsbCAtbSAwNzU1ICR7Qn0vbG9jYWxlZGVmICR7RH0ke2JpbmRpcn0vY3Jvc3MtbG9jYWxlZGVmCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtaW5pdGlhbC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtaW5pdGlhbC5pbmMKaW5kZXggNTk3NWZkMi4uMmUzYmM4MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWluaXRpYWwuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1pbml0aWFsLmluYwpAQCAtNSwxMyArNSwxMyBAQAogUEFDS0FHRVNfRFlOQU1JQyA9ICIiCiAKIFNUQUdJTkdDQyA9ICJnY2MtY3Jvc3MtaW5pdGlhbC0ke1RBUkdFVF9BUkNIfSIKLVNUQUdJTkdDQ19jbGFzcy1uYXRpdmVzZGsgPSAiZ2NjLWNyb3Nzc2RrLWluaXRpYWwtJHtUQVJHRVRfQVJDSH0iCitTVEFHSU5HQ0NfY2xhc3MtbmF0aXZlc2RrID0gImdjYy1jcm9zc3Nkay1pbml0aWFsLSR7U0RLX1NZU30iCiBUT09MQ0hBSU5fT1BUSU9OUyA9ICIgLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVENCT09UU1RSQVB9IgogCiBkb19jb25maWd1cmUgKCkgewogCShjZCAke1N9ICYmIGdudS1jb25maWdpemUpIHx8IGRpZSAiZmFpbHVyZSBpbiBydW5uaW5nIGdudS1jb25maWdpemUiCiAJZmluZCAke1N9IC1uYW1lICJjb25maWd1cmUiIHwgeGFyZ3MgdG91Y2gKLQljZmdzY3JpcHQ9YHB5dGhvbiAtYyAiaW1wb3J0IG9zOyBwcmludCBvcy5wYXRoLnJlbHBhdGgoJyR7U30nLCAnLicpImAvY29uZmlndXJlCisJY2Znc2NyaXB0PWBweXRob24zIC1jICJpbXBvcnQgb3M7IHByaW50KG9zLnBhdGgucmVscGF0aCgnJHtTfScsICcuJykpImAvY29uZmlndXJlCiAJJGNmZ3NjcmlwdCAtLWhvc3Q9JHtUQVJHRVRfU1lTfSAtLWJ1aWxkPSR7QlVJTERfU1lTfSBcCiAJCS0tcHJlZml4PS91c3IgXAogCQktLXdpdGhvdXQtY3ZzIC0tZGlzYWJsZS1zYW5pdHktY2hlY2tzIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1pbml0aWFsXzIuMjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtaW5pdGlhbF8yLjI0LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtaW5pdGlhbF8yLjIzLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtaW5pdGlhbF8yLjI0LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbGQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWxkLmluYwppbmRleCBjNWY0ZGIyLi5iOTgyMzY4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbGQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1sZC5pbmMKQEAgLTE0LDEwICsxNCwxNCBAQAogICAgICAgICAibWlwczY0ZWwtbjMyIjogWyJsZC5zby4xIiwgIkZMQUdfRUxGX0xJQkM2Il0sCiAgICAgICAgICJtaXBzNjRlbCI6IFsibGQuc28uMSIsICJGTEFHX0VMRl9MSUJDNiJdLAogICAgICAgICAibWlwcy1uZiI6IFsibGQuc28uMSIsICJGTEFHX0VMRl9MSUJDNiJdLAorICAgICAgICAibWlwc2lzYTMycjYiOiBbImxkLWxpbnV4LW1pcHNuOC5zby4xIiwgIkZMQUdfRUxGX0xJQkM2Il0sCisgICAgICAgICJtaXBzaXNhMzJyNmVsIjogWyJsZC1saW51eC1taXBzbjguc28uMSIsICJGTEFHX0VMRl9MSUJDNiJdLAogICAgICAgICAibWlwczY0LW5mLW4zMiI6IFsibGQuc28uMSIsICJGTEFHX0VMRl9MSUJDNiJdLAogICAgICAgICAibWlwczY0LW5mIjogWyJsZC5zby4xIiwgIkZMQUdfRUxGX0xJQkM2Il0sCiAgICAgICAgICJtaXBzNjRlbC1uZi1uMzIiOiBbImxkLnNvLjEiLCAiRkxBR19FTEZfTElCQzYiXSwKICAgICAgICAgIm1pcHM2NGVsLW5mIjogWyJsZC5zby4xIiwgIkZMQUdfRUxGX0xJQkM2Il0sCisgICAgICAgICJtaXBzaXNhNjRyNiI6IFsibGQtbGludXgtbWlwc244LnNvLjEiLCAiRkxBR19FTEZfTElCQzYiXSwKKyAgICAgICAgIm1pcHNpc2E2NHI2ZWwiOiBbImxkLWxpbnV4LW1pcHNuOC5zby4xIiwgIkZMQUdfRUxGX0xJQkM2Il0sCiAgICAgICAgICJwb3dlcnBjIjogWyJsZC5zby4xIiwgIkZMQUdfRUxGX0xJQkM2Il0sCiAgICAgICAgICJwb3dlcnBjLW5mIjogWyJsZC5zby4xIiwgIkZMQUdfRUxGX0xJQkM2Il0sCiAgICAgICAgICJwb3dlcnBjNjQiOiBbImxkNjQuc28uMSIsICJGTEFHX0VMRl9MSUJDNiJdLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWxvY2FsZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbG9jYWxlLmluYwppbmRleCBlODY4ZTM4Li4wYTdhZGZjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbG9jYWxlLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbG9jYWxlLmluYwpAQCAtMTksNyArMTksNyBAQAogCiAjIGRlZmF1bHQgdG8gZGlzYWJsZWQgCiBFTkFCTEVfQklOQVJZX0xPQ0FMRV9HRU5FUkFUSU9OID89ICIwIgotRU5BQkxFX0JJTkFSWV9MT0NBTEVfR0VORVJBVElPTl9wbi1uYXRpdmVzZGstZ2xpYmMtbG9jYWxlID0gIjAiCitFTkFCTEVfQklOQVJZX0xPQ0FMRV9HRU5FUkFUSU9OX3BuLW5hdGl2ZXNkay1nbGliYy1sb2NhbGUgPSAiMSIKIAogI2VuYWJsZSBsb2NhbGUgZ2VuZXJhdGlvbiBvbiB0aGVzZSBhcmNoZXMKICMgQklOQVJZX0xPQ0FMRV9BUkNIRVMgaXMgYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiByZWd1bGFyIGV4cHJlc3Npb25zCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbG9jYWxlXzIuMjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbG9jYWxlXzIuMjQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1sb2NhbGVfMi4yMy5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWxvY2FsZV8yLjI0LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbXRyYWNlXzIuMjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbXRyYWNlXzIuMjQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1tdHJhY2VfMi4yMy5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLW10cmFjZV8yLjI0LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtc2NyaXB0cy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtc2NyaXB0cy5pbmMKaW5kZXggM2EwNjc3My4uYmNlMGE0MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXNjcmlwdHMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1zY3JpcHRzLmluYwpAQCAtMTQsMyArMTQsNyBAQAogCQlpbnN0YWxsIC1tIDA3NTUgJHtTUkN9LyRpICR7RH0ke2JpbmRpcn0vCiAJZG9uZQogfQorCisjIHNvdHJ1c3Mgc2NyaXB0IHJlcXVpcmVzIHNvdHJ1c3MtbGliLnNvIChnaXZlbiBieSBsaWJzb3RydXNzIHBhY2thZ2UpLCAKKyMgdG8gcHJvZHVjZSB0cmFjZSBvZiB0aGUgbGlicmFyeSBjYWxscy4KK1JERVBFTkRTXyR7UE59ICs9ICJsaWJzb3RydXNzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXNjcmlwdHNfMi4yMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1zY3JpcHRzXzIuMjQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1zY3JpcHRzXzIuMjMuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1zY3JpcHRzXzIuMjQuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMuaW5jCmluZGV4IGJmMWRjY2QuLmU4NWM3MDQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLmluYwpAQCAtMyw3ICszLDcgQEAKIHJlcXVpcmUgZ2xpYmMtdGVzdGluZy5pbmMKIAogU1RBR0lOR0NDID0gImdjYy1jcm9zcy1pbml0aWFsLSR7VEFSR0VUX0FSQ0h9IgotU1RBR0lOR0NDX2NsYXNzLW5hdGl2ZXNkayA9ICJnY2MtY3Jvc3NzZGstaW5pdGlhbC0ke1RBUkdFVF9BUkNIfSIKK1NUQUdJTkdDQ19jbGFzcy1uYXRpdmVzZGsgPSAiZ2NjLWNyb3Nzc2RrLWluaXRpYWwtJHtTREtfU1lTfSIKIFBBVEhfcHJlcGVuZCA9ICIke1NUQUdJTkdfQklORElSX1RPT0xDSEFJTn0uJHtTVEFHSU5HQ0N9OiIKIAogVE9PTENIQUlOX09QVElPTlMgPSAiIC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RDQk9PVFNUUkFQfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAxLWxvY2FsZS1maXgtaGFyZC1jb2RlZC1yZWZlcmVuY2UtdG8tZ2NjLUUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMS1sb2NhbGUtZml4LWhhcmQtY29kZWQtcmVmZXJlbmNlLXRvLWdjYy1FLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1ZmNlNzMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMS1sb2NhbGUtZml4LWhhcmQtY29kZWQtcmVmZXJlbmNlLXRvLWdjYy1FLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gMmMwYWI4M2ViNTRjMGUwZmNjYmYyNjE3MjZkYzAzODAzYjIzNjA3OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9KPUMzPUE5cj1DMz1BOW15PTIwUm9zZW4/PSA8amVyZW15LnJvc2VuQHNtaWxlLmZyPgorRGF0ZTogTW9uLCAyMiBBdWcgMjAxNiAxNjowOToyNSArMDIwMAorU3ViamVjdDogW1BBVENIXSBsb2NhbGU6IGZpeCBoYXJkLWNvZGVkIHJlZmVyZW5jZSB0byBnY2MgLUUKKworV2hlbiBuZXcgdmVyc2lvbiBvZiBjb21waWxlcnMgYXJlIHB1Ymxpc2hlZCwgdGhleSBtYXkgbm90IGJlIGNvbXBhdGlibGUgd2l0aCAKK29sZGVyIHZlcnNpb25zIG9mIHNvZnR3YXJlLiBUaGlzIGlzIHBhcnRpY3VsYXJseSBjb21tb24gd2hlbiBzb2Z0d2FyZSBpcyBidWlsdAord2l0aCAtV2Vycm9yLgorCitBdXRvdG9vbHMgcHJvdmlkZXMgYSB3YXkgZm9yIGEgdXNlciB0byBzcGVjaWZ5IHRoZSBuYW1lIG9mIGhpcyBjb21waWxlciB1c2luZyBhCitzZXQgb2YgdmFyaWFibGVzICgkQ0MgJENYWCAkQ1BQIGV0Yy4pLiBUaG9zZSB2YXJpYWJsZXMgYXJlIHVzZWQgY29ycmVjdGx5IHdoZW4KK2NvbXBpbGluZyBnbGliYyBidXQgdGhlIHNjcmlwdCB1c2VkIHRvIGdlbmVyYXRlIHRyYW5zbGl0ZXJhdGlvbnMgaW4gdGhlIGxvY2FsZS8KK3N1YmRpcmVjdG9yeSBkaXJlY3RseSBjYWxscyB0aGUgZ2NjIGJpbmFyeSB0byBnZXQgdGhlIG91dHB1dCBvZiB0aGUgCitwcmVwcm9jZXNzb3IgaW5zdGVhZCBvZiB1c2luZyB0aGUgJENQUCB2YXJpYWJsZSBwcm92aWRlZCBieSB0aGUgYnVpbGQgCitlbnZpcm9ubWVudC4gCisKK1RoaXMgcGF0Y2ggcmVwbGFjZXMgdGhlIGhhcmQtY29kZWQgcmVmZXJlbmNlIHRvIHRoZSBnY2MgYmluYXJ5IHdpdGggdGhlIHByb3BlcgorZW52aXJvbm1lbnQgdmFyaWFibGUsIHRodXMgYWxsb3dpbmcgYSB1c2VyIHRvIG92ZXJyaWRlIGl0LgorCitVcHN0cmVhbS1TdGF0dXMgOiBTdWJtaXR0ZWQgW2h0dHBzOi8vc291cmNld2FyZS5vcmcvbWwvbGliYy1hbHBoYS8yMDE2LTA4L21zZzAwNzQ2Lmh0bWxdCisKKy0tLQorIGxvY2FsZS9nZW4tdHJhbnNsaXQucGwgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9sb2NhbGUvZ2VuLXRyYW5zbGl0LnBsIGIvbG9jYWxlL2dlbi10cmFuc2xpdC5wbAoraW5kZXggMzBkM2YyZi4uN2IyODdmYSAxMDA2NDQKKy0tLSBhL2xvY2FsZS9nZW4tdHJhbnNsaXQucGwKKysrKyBiL2xvY2FsZS9nZW4tdHJhbnNsaXQucGwKK0BAIC0xLDUgKzEsNSBAQAorICMhL3Vzci9iaW4vcGVybCAtdworLW9wZW4gRiwgImNhdCBDLXRyYW5zbGl0LmguaW4gfCBnY2MgLUUgLSB8IiB8fCBkaWUgIkNhbm5vdCBwcmVwcm9jZXNzIGlucHV0IGZpbGUiOworK29wZW4gRiwgJ2NhdCBDLXRyYW5zbGl0LmguaW4gfCAke0NQUDotZ2NjIC1FfSAtIHwnIHx8IGRpZSAiQ2Fubm90IHByZXByb2Nlc3MgaW5wdXQgZmlsZSI7CisgCisgCisgc3ViIGNzdHJsZW4geworLS0gCisyLjkuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMS1uYXRpdmVzZGstZ2xpYmMtTG9vay1mb3ItaG9zdC1zeXN0ZW0tbGQuc28uY2FjaGUtYXMtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDEtbmF0aXZlc2RrLWdsaWJjLUxvb2stZm9yLWhvc3Qtc3lzdGVtLWxkLnNvLmNhY2hlLWFzLS5wYXRjaAppbmRleCA5N2MyODAwLi5jYTMzNzU4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMS1uYXRpdmVzZGstZ2xpYmMtTG9vay1mb3ItaG9zdC1zeXN0ZW0tbGQuc28uY2FjaGUtYXMtLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAxLW5hdGl2ZXNkay1nbGliYy1Mb29rLWZvci1ob3N0LXN5c3RlbS1sZC5zby5jYWNoZS1hcy0ucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDY2ZDA0ZTJjZDhiYWRiMDk4NDA1MGU0ZTlmMjczMmY0NzE1MWZiYmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDdlMTFhYWZjM2E3Y2I4NzNiM2Y2NDg3NDBjOGFjZDM3OTU5N2U0ZDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMTo0ODoyNCArMDAwMAotU3ViamVjdDogW1BBVENIIDAxLzI0XSBuYXRpdmVzZGstZ2xpYmM6IExvb2sgZm9yIGhvc3Qgc3lzdGVtIGxkLnNvLmNhY2hlIGFzCitTdWJqZWN0OiBbUEFUQ0ggMDEvMjVdIG5hdGl2ZXNkay1nbGliYzogTG9vayBmb3IgaG9zdCBzeXN0ZW0gbGQuc28uY2FjaGUgYXMKICB3ZWxsCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCkBAIC0zMSw3ICszMSw3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2VsZi9kbC1sb2FkLmMgYi9lbGYvZGwtbG9hZC5jCi1pbmRleCA2ZmI2MTVlLi5lZTNkMWU2IDEwMDY0NAoraW5kZXggYzBkNjI0OS4uMmM3MzEwNSAxMDA2NDQKIC0tLSBhL2VsZi9kbC1sb2FkLmMKICsrKyBiL2VsZi9kbC1sb2FkLmMKIEBAIC0yMDk0LDYgKzIwOTQsMTQgQEAgX2RsX21hcF9vYmplY3QgKHN0cnVjdCBsaW5rX21hcCAqbG9hZGVyLCBjb25zdCBjaGFyICpuYW1lLApAQCAtNjUsNSArNjUsNSBAQAogICAgICAgIGlmIChfX2dsaWJjX3VubGlrZWx5IChHTFJPKGRsX2RlYnVnX21hc2spICYgRExfREVCVUdfTElCUykpCiAgCV9kbF9kZWJ1Z19wcmludGYgKCJcbiIpOwogLS0gCi0yLjYuNAorMi44LjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDItbmF0aXZlc2RrLWdsaWJjLUZpeC1idWZmZXItb3ZlcnJ1bi13aXRoLWEtcmVsb2NhdGVkLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAyLW5hdGl2ZXNkay1nbGliYy1GaXgtYnVmZmVyLW92ZXJydW4td2l0aC1hLXJlbG9jYXRlZC0ucGF0Y2gKaW5kZXggNDczYjg5NC4uNTQyODQ2OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDItbmF0aXZlc2RrLWdsaWJjLUZpeC1idWZmZXItb3ZlcnJ1bi13aXRoLWEtcmVsb2NhdGVkLS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMi1uYXRpdmVzZGstZ2xpYmMtRml4LWJ1ZmZlci1vdmVycnVuLXdpdGgtYS1yZWxvY2F0ZWQtLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSAxNzlkYzVmMWUxM2MzZmY5NmQ1ZjIxYTJhNzhjMDg5Y2YxMjBjZWI4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1ZmQ4ODRkYzI4ZDVkODQwMDFmYWU4ZmZkZDhiZTY5OGJiODQxNDNlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDE6NTA6MDAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwMi8yNF0gbmF0aXZlc2RrLWdsaWJjOiBGaXggYnVmZmVyIG92ZXJydW4gd2l0aCBhIHJlbG9jYXRlZAorU3ViamVjdDogW1BBVENIIDAyLzI1XSBuYXRpdmVzZGstZ2xpYmM6IEZpeCBidWZmZXIgb3ZlcnJ1biB3aXRoIGEgcmVsb2NhdGVkCiAgU0RLCiAKIFdoZW4gbGQtbGludXgtKi5zby4yIGlzIHJlbG9jYXRlZCB0byBhIHBhdGggdGhhdCBpcyBsb25nZXIgdGhhbiB0aGUKQEAgLTIyLDcgKzIyLDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvZWxmL2RsLWxvYWQuYyBiL2VsZi9kbC1sb2FkLmMKLWluZGV4IGVlM2QxZTYuLmM0YTQyZTkgMTAwNjQ0CitpbmRleCAyYzczMTA1Li5jN2I4Nzk3IDEwMDY0NAogLS0tIGEvZWxmL2RsLWxvYWQuYwogKysrIGIvZWxmL2RsLWxvYWQuYwogQEAgLTE3OTMsNyArMTc5MywxOSBAQCBvcGVuX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIHNpemVfdCBuYW1lbGVuLCBpbnQgbW9kZSwKQEAgLTQ2LDUgKzQ2LDUgQEAKICAgICAgewogICAgICAgIHN0cnVjdCByX3NlYXJjaF9wYXRoX2VsZW0gKnRoaXNfZGlyID0gKmRpcnM7CiAtLSAKLTIuNi40CisyLjguMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMy1uYXRpdmVzZGstZ2xpYmMtUmFpc2UtdGhlLXNpemUtb2YtYXJyYXlzLWNvbnRhaW5pbmctLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDMtbmF0aXZlc2RrLWdsaWJjLVJhaXNlLXRoZS1zaXplLW9mLWFycmF5cy1jb250YWluaW5nLS5wYXRjaAppbmRleCA2MGY5ZjE3Li43Y2JhNmNjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMy1uYXRpdmVzZGstZ2xpYmMtUmFpc2UtdGhlLXNpemUtb2YtYXJyYXlzLWNvbnRhaW5pbmctLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAzLW5hdGl2ZXNkay1nbGliYy1SYWlzZS10aGUtc2l6ZS1vZi1hcnJheXMtY29udGFpbmluZy0ucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGU3NjA0ODg5OGFlOWFhNDlkYzcwZDZmOWIxYmJjMjIwODJlNjFmZTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGM5OTg5MmYyMDE4Y2Q3ZmEwZjM3YjUzZTZjZWJlYzk5ZmEwMzY0NzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMTo1MTozOCArMDAwMAotU3ViamVjdDogW1BBVENIIDAzLzI0XSBuYXRpdmVzZGstZ2xpYmM6IFJhaXNlIHRoZSBzaXplIG9mIGFycmF5cyBjb250YWluaW5nIGRsCitTdWJqZWN0OiBbUEFUQ0ggMDMvMjVdIG5hdGl2ZXNkay1nbGliYzogUmFpc2UgdGhlIHNpemUgb2YgYXJyYXlzIGNvbnRhaW5pbmcgZGwKICBwYXRocwogCiBUaGlzIHBhdGNoIHB1dHMgdGhlIGR5bmFtaWMgbG9hZGVyIHBhdGggaW4gdGhlIGJpbmFyaWVzLCBTWVNURU1fRElSUyBzdHJpbmdzCkBAIC0yNCwxMCArMjQsMTAgQEAKICBzeXNkZXBzL2dlbmVyaWMvZGwtY2FjaGUuaCB8IDQgLS0tLQogIDYgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL2VsZi9kbC1jYWNoZS5jIGIvZWxmL2RsLWNhY2hlLmMKLWluZGV4IGRlYzQ5YmMuLjg2MmYxZDggMTAwNjQ0Ci0tLS0gYS9lbGYvZGwtY2FjaGUuYwotKysrIGIvZWxmL2RsLWNhY2hlLmMKK0luZGV4OiBnaXQvZWxmL2RsLWNhY2hlLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9lbGYvZGwtY2FjaGUuYworKysrIGdpdC9lbGYvZGwtY2FjaGUuYwogQEAgLTEzMiw2ICsxMzIsMTAgQEAgZG8JCQkJCQkJCQkgICAgICBcCiAgd2hpbGUgKDApCiAgCkBAIC0zOSwxMSArMzksMTEgQEAKICBpbnQKICBpbnRlcm5hbF9mdW5jdGlvbgogIF9kbF9jYWNoZV9saWJjbXAgKGNvbnN0IGNoYXIgKnAxLCBjb25zdCBjaGFyICpwMikKLWRpZmYgLS1naXQgYS9lbGYvZGwtbG9hZC5jIGIvZWxmL2RsLWxvYWQuYwotaW5kZXggYzRhNDJlOS4uYWNmNmMwMyAxMDA2NDQKLS0tLSBhL2VsZi9kbC1sb2FkLmMKLSsrKyBiL2VsZi9kbC1sb2FkLmMKLUBAIC0xMDYsOCArMTA2LDggQEAgc3RhdGljIHNpemVfdCBtYXhfY2Fwc3RybGVuIGF0dHJpYnV0ZV9yZWxybzsKK0luZGV4OiBnaXQvZWxmL2RsLWxvYWQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2VsZi9kbC1sb2FkLmMKKysrKyBnaXQvZWxmL2RsLWxvYWQuYworQEAgLTEwNiw4ICsxMDYsOCBAQCBzdGF0aWMgc2l6ZV90IG1heF9jYXBzdHJsZW4gYXR0cmlidXRlX3JlCiAgLyogR2V0IHRoZSBnZW5lcmF0ZWQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHRydXN0ZWQgZGlyZWN0b3JpZXMuICAqLwogICNpbmNsdWRlICJ0cnVzdGVkLWRpcnMuaCIKICAKQEAgLTU0LDEwICs1NCwxMCBAQAogIHsKICAgIFNZU1RFTV9ESVJTX0xFTgogIH07Ci1kaWZmIC0tZ2l0IGEvZWxmL2ludGVycC5jIGIvZWxmL2ludGVycC5jCi1pbmRleCA0MjJlYTk1ZS4uNmQ2MWEzNiAxMDA2NDQKLS0tLSBhL2VsZi9pbnRlcnAuYwotKysrIGIvZWxmL2ludGVycC5jCitJbmRleDogZ2l0L2VsZi9pbnRlcnAuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2VsZi9pbnRlcnAuYworKysrIGdpdC9lbGYvaW50ZXJwLmMKIEBAIC0xOCw1ICsxOCw1IEBACiAgCiAgI2luY2x1ZGUgPHJ1bnRpbWUtbGlua2VyLmg+CkBAIC02NSwxMSArNjUsMTEgQEAKIC1jb25zdCBjaGFyIF9faW52b2tlX2R5bmFtaWNfbGlua2VyX19bXSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5pbnRlcnAiKSkpCiArY29uc3QgY2hhciBfX2ludm9rZV9keW5hbWljX2xpbmtlcl9fWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmludGVycCIpKSkKICAgID0gUlVOVElNRV9MSU5LRVI7Ci1kaWZmIC0tZ2l0IGEvZWxmL2xkY29uZmlnLmMgYi9lbGYvbGRjb25maWcuYwotaW5kZXggZjU0ZWMyMi4uMGU3OGE4MyAxMDA2NDQKLS0tLSBhL2VsZi9sZGNvbmZpZy5jCi0rKysgYi9lbGYvbGRjb25maWcuYwotQEAgLTE2Nyw2ICsxNjcsOSBAQCBzdGF0aWMgc3RydWN0IGFyZ3AgYXJncCA9CitJbmRleDogZ2l0L2VsZi9sZGNvbmZpZy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvZWxmL2xkY29uZmlnLmMKKysrKyBnaXQvZWxmL2xkY29uZmlnLmMKK0BAIC0xNjgsNiArMTY4LDkgQEAgc3RhdGljIHN0cnVjdCBhcmdwIGFyZ3AgPQogICAgb3B0aW9ucywgcGFyc2Vfb3B0LCBOVUxMLCBkb2MsIE5VTEwsIG1vcmVfaGVscCwgTlVMTAogIH07CiAgCkBAIC03OSwxMCArNzksMTAgQEAKICAvKiBDaGVjayBpZiBzdHJpbmcgY29ycmVzcG9uZHMgdG8gYW4gaW1wb3J0YW50IGhhcmR3YXJlIGNhcGFiaWxpdHkgb3IKICAgICBhIHBsYXRmb3JtLiAgKi8KICBzdGF0aWMgaW50Ci1kaWZmIC0tZ2l0IGEvZWxmL3J0bGQuYyBiL2VsZi9ydGxkLmMKLWluZGV4IDUyMTYwZGYuLjgwZjA1ODIgMTAwNjQ0Ci0tLS0gYS9lbGYvcnRsZC5jCi0rKysgYi9lbGYvcnRsZC5jCitJbmRleDogZ2l0L2VsZi9ydGxkLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9lbGYvcnRsZC5jCisrKysgZ2l0L2VsZi9ydGxkLmMKIEBAIC05OSw2ICs5OSw3IEBAIHVpbnRwdHJfdCBfX3BvaW50ZXJfY2hrX2d1YXJkX2xvY2FsCiAgc3Ryb25nX2FsaWFzIChfX3BvaW50ZXJfY2hrX2d1YXJkX2xvY2FsLCBfX3BvaW50ZXJfY2hrX2d1YXJkKQogICNlbmRpZgpAQCAtOTEsNyArOTEsNyBAQAogIAogIC8qIExpc3Qgb2YgYXVkaXRpbmcgRFNPcy4gICovCiAgc3RhdGljIHN0cnVjdCBhdWRpdF9saXN0Ci1AQCAtODczLDEyICs4NzQsMTIgQEAgb2YgdGhpcyBoZWxwZXIgcHJvZ3JhbTsgY2hhbmNlcyBhcmUgeW91IGRpZCBub3QgaW50ZW5kIHRvIHJ1biB0aGlzIHByb2dyYW0uXG5cCitAQCAtODczLDEyICs4NzQsMTIgQEAgb2YgdGhpcyBoZWxwZXIgcHJvZ3JhbTsgY2hhbmNlcyBhcmUgeW91CiAgICAtLWxpc3QgICAgICAgICAgICAgICAgbGlzdCBhbGwgZGVwZW5kZW5jaWVzIGFuZCBob3cgdGhleSBhcmUgcmVzb2x2ZWRcblwKICAgIC0tdmVyaWZ5ICAgICAgICAgICAgICB2ZXJpZnkgdGhhdCBnaXZlbiBvYmplY3QgcmVhbGx5IGlzIGEgZHluYW1pY2FsbHkgbGlua2VkXG5cCiAgCQkJb2JqZWN0IHdlIGNhbiBoYW5kbGVcblwKQEAgLTEwNiwxMCArMTA2LDEwIEBACiAgCiAgICAgICAgKytfZGxfc2tpcF9hcmdzOwogICAgICAgIC0tX2RsX2FyZ2M7Ci1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9nZW5lcmljL2RsLWNhY2hlLmggYi9zeXNkZXBzL2dlbmVyaWMvZGwtY2FjaGUuaAotaW5kZXggNzBkNGFlYi4uNWM3MjZkMCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvZ2VuZXJpYy9kbC1jYWNoZS5oCi0rKysgYi9zeXNkZXBzL2dlbmVyaWMvZGwtY2FjaGUuaAorSW5kZXg6IGdpdC9zeXNkZXBzL2dlbmVyaWMvZGwtY2FjaGUuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3N5c2RlcHMvZ2VuZXJpYy9kbC1jYWNoZS5oCisrKysgZ2l0L3N5c2RlcHMvZ2VuZXJpYy9kbC1jYWNoZS5oCiBAQCAtMjcsMTAgKzI3LDYgQEAKICAgICgoZmxhZ3MpID09IDEgfHwgKGZsYWdzKSA9PSBfRExfQ0FDSEVfREVGQVVMVF9JRCkKICAjZW5kaWYKQEAgLTEzNCwzICsxMzQsMzggQEAKICAKICAvKiBUaGUgcGF0aCBlbGVtZW50cywgYXMgZGV0ZXJtaW5lZCBieSB0aGUgX19nY29udl9nZXRfcGF0aCBmdW5jdGlvbi4KICAgICBBbGwgcGF0aCBlbGVtZW50cyBlbmQgaW4gYSBzbGFzaC4gICovCitJbmRleDogZ2l0L2xvY2FsZS9maW5kbG9jYWxlLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9sb2NhbGUvZmluZGxvY2FsZS5jCisrKysgZ2l0L2xvY2FsZS9maW5kbG9jYWxlLmMKK0BAIC01Niw3ICs1Niw3IEBAIHN0cnVjdCBfX2xvY2FsZV9kYXRhICpjb25zdCBfbmxfQ1tdIGF0dHIKKyAgICB3aGljaCBhcmUgc29tZWhvdyBhZGRyZXNzZWQuICAqLworIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKl9ubF9sb2NhbGVfZmlsZV9saXN0W19fTENfTEFTVF07CisgCistY29uc3QgY2hhciBfbmxfZGVmYXVsdF9sb2NhbGVfcGF0aFtdIGF0dHJpYnV0ZV9oaWRkZW4gPSBDT01QTE9DQUxFRElSOworK2NoYXIgX25sX2RlZmF1bHRfbG9jYWxlX3BhdGhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpIGF0dHJpYnV0ZV9oaWRkZW4gPSBDT01QTE9DQUxFRElSOworIAorIC8qIENoZWNrcyBpZiB0aGUgbmFtZSBpcyBhY3R1YWxseSBwcmVzZW50LCB0aGF0IGlzLCBub3QgTlVMTCBhbmQgbm90CisgICAgZW1wdHkuICAqLworQEAgLTE2OCw3ICsxNjgsNyBAQCBfbmxfZmluZF9sb2NhbGUgKGNvbnN0IGNoYXIgKmxvY2FsZV9wYXRoCisgCisgICAgICAgLyogTm90aGluZyBpbiB0aGUgYXJjaGl2ZS4gIFNldCB0aGUgZGVmYXVsdCBwYXRoIHRvIHNlYXJjaCBiZWxvdy4gICovCisgICAgICAgbG9jYWxlX3BhdGggPSBfbmxfZGVmYXVsdF9sb2NhbGVfcGF0aDsKKy0gICAgICBsb2NhbGVfcGF0aF9sZW4gPSBzaXplb2YgX25sX2RlZmF1bHRfbG9jYWxlX3BhdGg7CisrICAgICAgbG9jYWxlX3BhdGhfbGVuID0gc3RybGVuKF9ubF9kZWZhdWx0X2xvY2FsZV9wYXRoKSArIDE7CisgICAgIH0KKyAgIGVsc2UKKyAgICAgLyogV2UgcmVhbGx5IGhhdmUgdG8gbG9hZCBzb21lIGRhdGEuICBGaXJzdCBzZWUgd2hldGhlciB0aGUgbmFtZSBpcworSW5kZXg6IGdpdC9sb2NhbGUvbG9jYWxlaW5mby5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvbG9jYWxlL2xvY2FsZWluZm8uaAorKysrIGdpdC9sb2NhbGUvbG9jYWxlaW5mby5oCitAQCAtMzIyLDcgKzMyMiw3IEBAIF9ubF9sb29rdXBfd29yZCAobG9jYWxlX3QgbCwgaW50IGNhdGVnb3IKKyB9CisgCisgLyogRGVmYXVsdCBzZWFyY2ggcGF0aCBpZiBubyBMT0NQQVRIIGVudmlyb25tZW50IHZhcmlhYmxlLiAgKi8KKy1leHRlcm4gY29uc3QgY2hhciBfbmxfZGVmYXVsdF9sb2NhbGVfcGF0aFtdIGF0dHJpYnV0ZV9oaWRkZW47CisrZXh0ZXJuIGNoYXIgX25sX2RlZmF1bHRfbG9jYWxlX3BhdGhbXSBhdHRyaWJ1dGVfaGlkZGVuOworIAorIC8qIExvYWQgdGhlIGxvY2FsZSBkYXRhIGZvciBDQVRFR09SWSBmcm9tIHRoZSBmaWxlIHNwZWNpZmllZCBieSAqTkFNRS4KKyAgICBJZiAqTkFNRSBpcyAiIiwgdXNlIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcyBzcGVjaWZpZWQgYnkgUE9TSVgsIGFuZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDQtbmF0aXZlc2RrLWdsaWJjLUFsbG93LTY0LWJpdC1hdG9taWNzLWZvci14ODYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNC1uYXRpdmVzZGstZ2xpYmMtQWxsb3ctNjQtYml0LWF0b21pY3MtZm9yLXg4Ni5wYXRjaAppbmRleCAyMWYwNGExLi4zMTI3ZGU2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNC1uYXRpdmVzZGstZ2xpYmMtQWxsb3ctNjQtYml0LWF0b21pY3MtZm9yLXg4Ni5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNC1uYXRpdmVzZGstZ2xpYmMtQWxsb3ctNjQtYml0LWF0b21pY3MtZm9yLXg4Ni5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gMmUxNjM4MTE1ZjBmOTI0ZWU4MjM1ZWVlOTI2NTA0NzA1NGMxNWNmZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYTU2ZTdhYTJmZDEwYjE3OGI5NDk4Zjg4YTdhMmNhOGFhZDY3MWE1MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBUaHUsIDMxIERlYyAyMDE1IDE0OjM1OjM1IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMDQvMjRdIG5hdGl2ZXNkay1nbGliYzogQWxsb3cgNjQgYml0IGF0b21pY3MgZm9yIHg4NgorU3ViamVjdDogW1BBVENIIDA0LzI1XSBuYXRpdmVzZGstZ2xpYmM6IEFsbG93IDY0IGJpdCBhdG9taWNzIGZvciB4ODYKIAogVGhlIGZpeCBjb25zaXN0IG9mIGFsbG93aW5nIDY0Yml0IGF0b21pYyBvcHMgZm9yIHg4Ni4KIFRoaXMgc2hvdWxkIGJlIHNhZmUgZm9yIGk1ODYgYW5kIG5ld2VyIENQVXMuCkBAIC0xMSwxMSArMTEsMTMgQEAKIFNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIC0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKICBzeXNkZXBzL2kzODYvYXRvbWljLW1hY2hpbmUuaCB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL3N5c2RlcHMvaTM4Ni9hdG9taWMtbWFjaGluZS5oIGIvc3lzZGVwcy9pMzg2L2F0b21pYy1tYWNoaW5lLmgKLWluZGV4IDU5ZjNkMzQuLjZmNmI3ZmYgMTAwNjQ0CitpbmRleCBjZTYyYjMzLi40ZmU0NGVhIDEwMDY0NAogLS0tIGEvc3lzZGVwcy9pMzg2L2F0b21pYy1tYWNoaW5lLmgKICsrKyBiL3N5c2RlcHMvaTM4Ni9hdG9taWMtbWFjaGluZS5oCiBAQCAtNTQsNyArNTQsNyBAQCB0eXBlZGVmIHVpbnRtYXhfdCB1YXRvbWljX21heF90OwpAQCAtMjgsNSArMzAsNSBAQAogIAogIAogLS0gCi0yLjYuNAorMi44LjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDUtZnNsLWU1MDAtZTU1MDAtZTY1MDAtNjAzZS1mc3FydC1pbXBsZW1lbnRhdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA1LWZzbC1lNTAwLWU1NTAwLWU2NTAwLTYwM2UtZnNxcnQtaW1wbGVtZW50YXRpb24ucGF0Y2gKaW5kZXggYmE4YzkyZS4uZGMwZGZhZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDUtZnNsLWU1MDAtZTU1MDAtZTY1MDAtNjAzZS1mc3FydC1pbXBsZW1lbnRhdGlvbi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNS1mc2wtZTUwMC1lNTUwMC1lNjUwMC02MDNlLWZzcXJ0LWltcGxlbWVudGF0aW9uLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA3ZmY1N2VkZmUyNGI0MjQzMzczZmNiODk2ZWUwYjYxMzkzOGMxZWM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA0NTA0NzNjZTI3YjQ3Y2ViZWMyYzVjNWI2MTFhOGM4YmVkNDFlNmU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MDE6NTAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwNS8yNF0gZnNsIGU1MDAvZTU1MDAvZTY1MDAvNjAzZSBmc3FydCBpbXBsZW1lbnRhdGlvbgorU3ViamVjdDogW1BBVENIIDA1LzI1XSBmc2wgZTUwMC9lNTUwMC9lNjUwMC82MDNlIGZzcXJ0IGltcGxlbWVudGF0aW9uCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogU2lnbmVkLW9mZi1ieTogRWRtYXIgV2llbnNrb3NraSA8ZWRtYXJAZnJlZXNjYWxlLmNvbT4KQEAgLTE1ODAsNSArMTU4MCw1IEBACiBAQCAtMCwwICsxIEBACiArcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1CiAtLSAKLTIuNi40CisyLjguMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNi1yZWFkbGliLUFkZC1PRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMtdG8ta25vd24tLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDYtcmVhZGxpYi1BZGQtT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTLXRvLWtub3duLS5wYXRjaAppbmRleCAwODZhNzNkLi5mMjY3ZjY2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNi1yZWFkbGliLUFkZC1PRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMtdG8ta25vd24tLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA2LXJlYWRsaWItQWRkLU9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUy10by1rbm93bi0ucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDYxMTI5ZWYzZWU3MzViMzAwNjA0Zjc1ZDUwZTAxY2IyOWY0Mzg3ZjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGJiMDY1Yjc4ZTllMGQzMzAxZTY0YTI2ZTM3NTUwYTY1N2M4ODVlYmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoxMToyMiArMDAwMAotU3ViamVjdDogW1BBVENIIDA2LzI0XSByZWFkbGliOiBBZGQgT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTIHRvIGtub3duCitTdWJqZWN0OiBbUEFUQ0ggMDYvMjVdIHJlYWRsaWI6IEFkZCBPRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMgdG8ga25vd24KICBuYW1lcwogCiBUaGlzIGJvbHRzIGluIGEgaG9vayBmb3IgT0UgdG8gcGFzcyBpdHMgb3duIHZlcnNpb24gb2YgaW50ZXJwcmV0ZXIKQEAgLTE3LDcgKzE3LDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKIAogZGlmZiAtLWdpdCBhL2VsZi9yZWFkbGliLmMgYi9lbGYvcmVhZGxpYi5jCi1pbmRleCA3ZmQ1YjhhLi4yZjVkYTlmIDEwMDY0NAoraW5kZXggOGE2NmZmZS4uMDhkNTZmYyAxMDA2NDQKIC0tLSBhL2VsZi9yZWFkbGliLmMKICsrKyBiL2VsZi9yZWFkbGliLmMKIEBAIC01MSw2ICs1MSw3IEBAIHN0YXRpYyBzdHJ1Y3Qga25vd25fbmFtZXMgaW50ZXJwcmV0ZXJzW10gPQpAQCAtMjksNSArMjksNSBAQAogIAogIHN0YXRpYyBzdHJ1Y3Qga25vd25fbmFtZXMga25vd25fbGlic1tdID0KIC0tIAotMi42LjQKKzIuOC4yCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA3LXBwYy1zcXJ0LUZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLV9fc3FydF9maW5pdGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNy1wcGMtc3FydC1GaXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1fX3NxcnRfZmluaXRlLnBhdGNoCmluZGV4IDk1Mjc4NGIuLjYxMmU4OTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA3LXBwYy1zcXJ0LUZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLV9fc3FydF9maW5pdGUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDctcHBjLXNxcnQtRml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tX19zcXJ0X2Zpbml0ZS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gZjkzNjU0OGRlY2FjOTk1MDFmOWE0YzUyMmEzMjExZDE2NTQyZmE0OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNGE5MWJiZGIxMWExNWY5MzA5NDY5NWJiYTRlMDg0OWM0MjFmYWQ0OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjE1OjA3ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDcvMjRdIHBwYy9zcXJ0OiBGaXggdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX19zcXJ0X2Zpbml0ZScKK1N1YmplY3Q6IFtQQVRDSCAwNy8yNV0gcHBjL3NxcnQ6IEZpeCB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX3NxcnRfZmluaXRlJwogCiBvbiBwcGMgZml4ZXMgdGhlIGVycm9ycyBsaWtlIGJlbG93CiB8IC4vLmxpYnMvbGlicHVsc2Vjb3JlLTEuMS5zbzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX19zcXJ0X2Zpbml0ZScKQEAgLTIwNCw1ICsyMDQsNSBAQAogIH0KICtzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCiAtLSAKLTIuNi40CisyLjguMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOC1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDgtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaAppbmRleCA4ZDUxM2FiLi45ZTIyMmI3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOC1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA4LV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGQwMjcwNDg5NWZkY2U5MTdlMzM3NjE5YTQ0MTQwNDJmNjNlZGQ4OGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGNlMjc0NmExNTYwYjQ0MzBkODlkMTE0ZTFiNjVjN2JlMjI1YjRjMmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoxNjozOCArMDAwMAotU3ViamVjdDogW1BBVENIIDA4LzI0XSBfX2llZWU3NTRfc3FydHssZn0gYXJlIG5vdyBpbmxpbmUgZnVuY3Rpb25zIGFuZCBjYWxsCitTdWJqZWN0OiBbUEFUQ0ggMDgvMjVdIF9faWVlZTc1NF9zcXJ0eyxmfSBhcmUgbm93IGlubGluZSBmdW5jdGlvbnMgYW5kIGNhbGwKICBvdXQgX19zbG93IHZlcnNpb25zCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwpAQCAtMzgzLDUgKzM4Myw1IEBACiArCiAgc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQogLS0gCi0yLjYuNAorMi44LjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDktUXVvdGUtZnJvbS1idWctMTQ0My13aGljaC1leHBsYWlucy13aGF0LXRoZS1wYXRjaC1kby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA5LVF1b3RlLWZyb20tYnVnLTE0NDMtd2hpY2gtZXhwbGFpbnMtd2hhdC10aGUtcGF0Y2gtZG8ucGF0Y2gKaW5kZXggMTJmMjRmYi4uN2FhNzRkZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDktUXVvdGUtZnJvbS1idWctMTQ0My13aGljaC1leHBsYWlucy13aGF0LXRoZS1wYXRjaC1kby5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOS1RdW90ZS1mcm9tLWJ1Zy0xNDQzLXdoaWNoLWV4cGxhaW5zLXdoYXQtdGhlLXBhdGNoLWRvLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA1MDJmMDYxZDg0NmU1OGFhYzdhY2E2N2U0ZTBkNmJhOWUwNzYzYjE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAxYjYxNjQ5ZTU0NWRlNzZkZDc5YTVlMmMzOWJiMTZkMGM0NjIzMTYwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MjA6MDkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwOS8yNF0gUXVvdGUgZnJvbSBidWcgMTQ0MyB3aGljaCBleHBsYWlucyB3aGF0IHRoZSBwYXRjaCBkb2VzCitTdWJqZWN0OiBbUEFUQ0ggMDkvMjVdIFF1b3RlIGZyb20gYnVnIDE0NDMgd2hpY2ggZXhwbGFpbnMgd2hhdCB0aGUgcGF0Y2ggZG9lcwogIDoKIAogICBXZSBidWlsZCBzb21lIHJhbmRvbSBwcm9ncmFtIGFuZCBsaW5rIGl0IHdpdGggLWx1c3QuICBXaGVuIHdlIHJ1biBpdCwKQEAgLTQ1LDcgKzQ1LDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2RsLW1hY2hpbmUuaCBiL3N5c2RlcHMvYXJtL2RsLW1hY2hpbmUuaAotaW5kZXggNmZiMjBiZC4uODgwNTUzNyAxMDA2NDQKK2luZGV4IDYwZWVlMDAuLjdkNTRkNWUgMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL2FybS9kbC1tYWNoaW5lLmgKICsrKyBiL3N5c2RlcHMvYXJtL2RsLW1hY2hpbmUuaAogQEAgLTQ5OSw3ICs0OTksNyBAQCBlbGZfbWFjaGluZV9yZWwgKHN0cnVjdCBsaW5rX21hcCAqbWFwLCBjb25zdCBFbGYzMl9SZWwgKnJlbG9jLApAQCAtNTgsNSArNTgsNSBAQAogIAogIAljYXNlIFJfQVJNX1RMU19UUE9GRjMyOgogLS0gCi0yLjYuNAorMi44LjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTAtZWdsaWJjLXJ1bi1saWJtLWVyci10YWIucGwtd2l0aC1zcGVjaWZpYy1kaXJzLWluLVMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMC1lZ2xpYmMtcnVuLWxpYm0tZXJyLXRhYi5wbC13aXRoLXNwZWNpZmljLWRpcnMtaW4tUy5wYXRjaAppbmRleCA3N2JkN2QxLi4xNDk2M2EzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMC1lZ2xpYmMtcnVuLWxpYm0tZXJyLXRhYi5wbC13aXRoLXNwZWNpZmljLWRpcnMtaW4tUy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMC1lZ2xpYmMtcnVuLWxpYm0tZXJyLXRhYi5wbC13aXRoLXNwZWNpZmljLWRpcnMtaW4tUy5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gNjlhM2UzMGI0OWQyOGE3Mzg2ZDE4NzI1NTI4NjUyOTMxNTEwY2JmYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOTFhZjQxNjQwOGI4NzE4YjAwNGM4M2Q5M2E2ZGFhMWYzNGNiYTQ4ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFRpbmcgTGl1IDxiMjg0OTVAZnJlZXNjYWxlLmNvbT4KIERhdGU6IFdlZCwgMTkgRGVjIDIwMTIgMDQ6Mzk6NTcgLTA2MDAKLVN1YmplY3Q6IFtQQVRDSCAxMC8yNF0gZWdsaWJjOiBydW4gbGlibS1lcnItdGFiLnBsIHdpdGggc3BlY2lmaWMgZGlycyBpbiAke1N9CitTdWJqZWN0OiBbUEFUQ0ggMTAvMjVdIGVnbGliYzogcnVuIGxpYm0tZXJyLXRhYi5wbCB3aXRoIHNwZWNpZmljIGRpcnMgaW4gJHtTfQogCiBsaWJtLWVyci10YWIucGwgd2lsbCBwYXJzZSBhbGwgdGhlIGZpbGVzIG5hbWVkICJsaWJtLXRlc3QtdWxwcyIKIGluIHRoZSBnaXZlbiBkaXIgcmVjdXJzaXZlbHkuIFRvIGF2b2lkIHBhcnNpbmcgdGhlIG9uZSBpbgpAQCAtMTAsNyArMTAsNyBAQAogYWFyY2g2NC9saWJtLXRlc3QtdWxwcyksIHJ1biBsaWJtLWVyci10YWIucGwgd2l0aCBzcGVjaWZpYyBkaXJzCiBpbiAke1N9LgogCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorVXBzdHJlYW0tU3RhdHVzOiBpbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KIAogU2lnbmVkLW9mZi1ieTogVGluZyBMaXUgPGIyODQ5NUBmcmVlc2NhbGUuY29tPgogLS0tCkBAIC0xOCw3ICsxOCw3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvbWFudWFsL01ha2VmaWxlIGIvbWFudWFsL01ha2VmaWxlCi1pbmRleCBjZGI2NzYzLi4wYjMyYTBhIDEwMDY0NAoraW5kZXggZjJmNjk0Zi4uZTA2MjgzMyAxMDA2NDQKIC0tLSBhL21hbnVhbC9NYWtlZmlsZQogKysrIGIvbWFudWFsL01ha2VmaWxlCiBAQCAtMTA1LDcgKzEwNSw4IEBAICQob2JqcGZ4KWxpYm0tZXJyLnRleGk6ICQob2JqcGZ4KXN0YW1wLWxpYm0tZXJyCkBAIC0zMiw1ICszMiw1IEBACiAgCXRvdWNoICRACiAgCiAtLSAKLTIuNi40CisyLjguMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMS1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTEtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaAppbmRleCAyNTFlNWY1Li5lOTJkMDRjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMS1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDExLV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDRjZjUyOTcxYTg0MTMwNGFlYzMwYjJlOTc1ZjgxZDdhZDlkNDJlZjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDZhNzFmNjg4NDcxZmUwYzg1ZjhhZDlhZmM0ZWUwNzIzYTIwYWFlMWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoyNDo0NiArMDAwMAotU3ViamVjdDogW1BBVENIIDExLzI0XSBfX2llZWU3NTRfc3FydHssZn0gYXJlIG5vdyBpbmxpbmUgZnVuY3Rpb25zIGFuZCBjYWxsCitTdWJqZWN0OiBbUEFUQ0ggMTEvMjVdIF9faWVlZTc1NF9zcXJ0eyxmfSBhcmUgbm93IGlubGluZSBmdW5jdGlvbnMgYW5kIGNhbGwKICBvdXQgX19zbG93IHZlcnNpb25zCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwpAQCAtNTcsNSArNTcsNSBAQAogICNlbmRpZgogIHsKIC0tIAotMi42LjQKKzIuOC4yCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEyLU1ha2UtbGQtdmVyc2lvbi1vdXRwdXQtbWF0Y2hpbmctZ3Jvay1nb2xkLXMtb3V0cHV0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTItTWFrZS1sZC12ZXJzaW9uLW91dHB1dC1tYXRjaGluZy1ncm9rLWdvbGQtcy1vdXRwdXQucGF0Y2gKaW5kZXggMzIwOGEwYy4uNGNiYTAzZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTItTWFrZS1sZC12ZXJzaW9uLW91dHB1dC1tYXRjaGluZy1ncm9rLWdvbGQtcy1vdXRwdXQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTItTWFrZS1sZC12ZXJzaW9uLW91dHB1dC1tYXRjaGluZy1ncm9rLWdvbGQtcy1vdXRwdXQucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGIzNTY4MTZkNmUwMDVlY2RhN2FkYmVkOTYyN2E0MzE1YWQzOWRlMzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGY5ZDAyNGVkYjE1ODY1OWU0MDNiNTFjYzlkOTNkYTliY2E2ZTVkN2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoyNTo0NSArMDAwMAotU3ViamVjdDogW1BBVENIIDEyLzI0XSBNYWtlIGxkIC0tdmVyc2lvbiBvdXRwdXQgbWF0Y2hpbmcgZ3JvayBnb2xkJ3Mgb3V0cHV0CitTdWJqZWN0OiBbUEFUQ0ggMTIvMjVdIE1ha2UgbGQgLS12ZXJzaW9uIG91dHB1dCBtYXRjaGluZyBncm9rIGdvbGQncyBvdXRwdXQKIAogYWRhcHRlZCBmcm9tIGZyb20gdXBzdHJlYW0gYnJhbmNoIHJvbGFuZC9nb2xkLXZzLWxpYmMKIApAQCAtMTQsMTAgKzE0LDEwIEBACiAgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKLWluZGV4IGFhMDVkNDkuLjZkYWJkMTEgMTAwNzU1CitpbmRleCA4ZmU1OTM3Li43ODg4YTNmIDEwMDc1NQogLS0tIGEvY29uZmlndXJlCiArKysgYi9jb25maWd1cmUKLUBAIC00NDg2LDcgKzQ0ODYsNyBAQCBlbHNlCitAQCAtNDQ4Miw3ICs0NDgyLDcgQEAgZWxzZQogICAgIyBGb3VuZCBpdCwgbm93IGNoZWNrIHRoZSB2ZXJzaW9uLgogICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB2ZXJzaW9uIG9mICRMRCIgPiY1CiAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgdmVyc2lvbiBvZiAkTEQuLi4gIiA+JjY7IH0KQEAgLTI3LDEwICsyNywxMCBAQAogICAgICAnJykgYWNfcHJvZ192ZXJzaW9uPSJ2LiA/Lj8/LCBiYWQiOyBhY192ZXJjX2ZhaWw9eWVzOzsKICAgICAgMi4xWzAtOV1bMC05XSp8Mi4yWzItOV0qfDIuWzMtOV1bMC05XSp8WzMtOV0uKnxbMS05XVswLTldKikKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGVlN2EzZjEuLmI0Yjk1YjkgMTAwNjQ0CitpbmRleCAzYzc2NmI3Li42OTA4YTk5IDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC05NDgsNyArOTQ4LDcgQEAgQUNfQ0hFQ0tfUFJPR19WRVIoQVMsICRBUywgLS12ZXJzaW9uLAorQEAgLTk0NCw3ICs5NDQsNyBAQCBBQ19DSEVDS19QUk9HX1ZFUihBUywgJEFTLCAtLXZlcnNpb24sCiAgCQkgIFsyLjFbMC05XVswLTldKnwyLjJbMi05XSp8Mi5bMy05XVswLTldKnxbMy05XS4qfFsxLTldWzAtOV0qXSwKICAJCSAgQVM9OiBjcml0aWNfbWlzc2luZz0iJGNyaXRpY19taXNzaW5nIGFzIikKICBBQ19DSEVDS19QUk9HX1ZFUihMRCwgJExELCAtLXZlcnNpb24sCkBAIC00MCw1ICs0MCw1IEBACiAgCQkgIExEPTogY3JpdGljX21pc3Npbmc9IiRjcml0aWNfbWlzc2luZyBsZCIpCiAgCiAtLSAKLTIuNi40CisyLjguMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMy1zeXNkZXBzLWdudS1jb25maWd1cmUuYWMtaGFuZGxlLWNvcnJlY3RseS1saWJjX2N2X3JvLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTMtc3lzZGVwcy1nbnUtY29uZmlndXJlLmFjLWhhbmRsZS1jb3JyZWN0bHktbGliY19jdl9yby5wYXRjaAppbmRleCA4MmZhMTAwLi42YTgyZjhkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMy1zeXNkZXBzLWdudS1jb25maWd1cmUuYWMtaGFuZGxlLWNvcnJlY3RseS1saWJjX2N2X3JvLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEzLXN5c2RlcHMtZ251LWNvbmZpZ3VyZS5hYy1oYW5kbGUtY29ycmVjdGx5LWxpYmNfY3Zfcm8ucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDEwMDAzZDQ4ZjgzZjdhNGY3ZmE1NjJlZDg5YWY5MDRhNTQ0YjYzMjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDJlY2UxMjA5M2M4YmE0Y2Y2ODhkMjM1ZjM1ZDM2ZjFmZWIwMjMyNGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoyNzoxMCArMDAwMAotU3ViamVjdDogW1BBVENIIDEzLzI0XSBzeXNkZXBzL2dudS9jb25maWd1cmUuYWM6IGhhbmRsZSBjb3JyZWN0bHkKK1N1YmplY3Q6IFtQQVRDSCAxMy8yNV0gc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjOiBoYW5kbGUgY29ycmVjdGx5CiAgJGxpYmNfY3Zfcm9vdHNiaW5kaXIKIAogVXBzdHJlYW0tU3RhdHVzOlBlbmRpbmcKQEAgLTM4LDUgKzM4LDUgQEAKICAgIDs7CiAgZXNhYwogLS0gCi0yLjYuNAorMi44LjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTQtQWRkLXVudXNlZC1hdHRyaWJ1dGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNC1BZGQtdW51c2VkLWF0dHJpYnV0ZS5wYXRjaAppbmRleCBlYTNlMTY3Li5kMTRhNmQ0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNC1BZGQtdW51c2VkLWF0dHJpYnV0ZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNC1BZGQtdW51c2VkLWF0dHJpYnV0ZS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gY2FmYThhN2VmODMwZTAyY2RiZjkyODQ3MWUwNmQxMTA1NDk0Njk0MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOWZlYzA4M2RjOTlkMmI1MjQwOTBlMWQwOThlMDM3MDllZWQ2NGE3MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjI4OjQxICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTQvMjRdIEFkZCB1bnVzZWQgYXR0cmlidXRlCitTdWJqZWN0OiBbUEFUQ0ggMTQvMjVdIEFkZCB1bnVzZWQgYXR0cmlidXRlCiAKIEhlbHBzIGluIGF2b2lkaW5nIGdjYyB3YXJuaW5nIHdoZW4gaGVhZGVyIGlzIGlzIGluY2x1ZGVkIGluCiBhIHNvdXJjZSBmaWxlIHdoaWNoIGRvZXMgbm90IHVzZSBib3RoIGZ1bmN0aW9ucwpAQCAtMTcsNyArMTcsNyBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvaWNvbnYvZ2NvbnZfY2hhcnNldC5oIGIvaWNvbnYvZ2NvbnZfY2hhcnNldC5oCi1pbmRleCA4MDI5MGJjLi43ODkwYThlIDEwMDY0NAoraW5kZXggOTVjYmNlNy4uMTkxYTBkZCAxMDA2NDQKIC0tLSBhL2ljb252L2djb252X2NoYXJzZXQuaAogKysrIGIvaWNvbnYvZ2NvbnZfY2hhcnNldC5oCiBAQCAtMjEsNyArMjEsNyBAQApAQCAtMzAsNSArMzAsNSBAQAogIHsKICAgIGludCBzbGFzaF9jb3VudCA9IDA7CiAtLSAKLTIuNi40CisyLjguMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNS15ZXMtd2l0aGluLXRoZS1wYXRoLXNldHMtd3JvbmctY29uZmlnLXZhcmlhYmxlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE1LXllcy13aXRoaW4tdGhlLXBhdGgtc2V0cy13cm9uZy1jb25maWctdmFyaWFibGVzLnBhdGNoCmluZGV4IDkwZTEyYjguLjhjZWNjZWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE1LXllcy13aXRoaW4tdGhlLXBhdGgtc2V0cy13cm9uZy1jb25maWctdmFyaWFibGVzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE1LXllcy13aXRoaW4tdGhlLXBhdGgtc2V0cy13cm9uZy1jb25maWctdmFyaWFibGVzLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA0ZDZiZWFkMTk4NzRlNTE5NzUyY2VlYjJhMTU4OTdmZjJmZmJlNWU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAxNzk0YTk3Y2JhMGIwOWI3MjZlZWJjNTY1Yzc4M2M3YjdjMjJkZmJhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MzE6MDYgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxNS8yNF0gJ3llcycgd2l0aGluIHRoZSBwYXRoIHNldHMgd3JvbmcgY29uZmlnIHZhcmlhYmxlcworU3ViamVjdDogW1BBVENIIDE1LzI1XSAneWVzJyB3aXRoaW4gdGhlIHBhdGggc2V0cyB3cm9uZyBjb25maWcgdmFyaWFibGVzCiAKIEl0IHNlZW1zIHRoYXQgdGhlICdBQ19FR1JFUF9DUFAoeWVzLi4uJyBleGFtcGxlIGlzIHF1aXRlIHBvcHVsYXIKIGJ1dCBiZWluZyBzdWNoIGEgc2hvcnQgd29yZCB0byBncmVwIGl0IGlzIGxpa2VseSB0byBwcm9kdWNlCkBAIC0xNjUsNyArMTY1LDcgQEAKICAgIF0sIGxpYmNfY3ZfbmlvczJfYmU9eWVzLCBsaWJjX2N2X25pb3MyX2JlPW5vKV0pCiAgaWYgdGVzdCAkbGliY19jdl9uaW9zMl9iZSA9IHllczsgdGhlbgogZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUKLWluZGV4IGRlZTU2YWEuLmYyMDQ5ZWQgMTAwNjQ0CitpbmRleCBhNTUxM2ZhLi4yODNiMjkzIDEwMDY0NAogLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUKICsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlCiBAQCAtNDE0LDExICs0MTQsMTEgQEAgZWxzZQpAQCAtMTgzLDcgKzE4Myw3IEBACiAgZWxzZQogICAgbGliY19jdl9taXBzX25hbjIwMDg9bm8KIGRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlLmFjCi1pbmRleCA0NTE0N2M1Li40MjI0YWYxIDEwMDY0NAoraW5kZXggOTE0N2FhNC4uNzg5OGUyNCAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlLmFjCiArKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZS5hYwogQEAgLTEwNSw5ICsxMDUsOSBAQCBBQ19DT01QSUxFX0lGRUxTRSgKQEAgLTI1OSw1ICsyNTksNSBAQAogICAgICBdLCBsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZj15ZXMsIGxpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmPW5vKV0pCiAgICBpZiB0ZXN0ICRsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZiA9IG5vOyB0aGVuCiAtLSAKLTIuNi40CisyLjguMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNi10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTYtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaAppbmRleCBlNTFiNjExLi5lNWI1MDgzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNi10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE2LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDNlODU4NmViMzUwOWUyZjBkNmRmYjc0YmU4Zjg5YTMwYjA2YjU2ZTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGZkYjVjOWM4OGUzZDFiYzVhZTZlZjllYmNmY2Y1NjBkM2M0MmYwYTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDozMzowMyArMDAwMAotU3ViamVjdDogW1BBVENIIDE2LzI0XSB0aW1lem9uZTogcmUtd3JpdHRlbiB0enNlbGVjdCBhcyBwb3NpeCBzaAorU3ViamVjdDogW1BBVENIIDE2LzI1XSB0aW1lem9uZTogcmUtd3JpdHRlbiB0enNlbGVjdCBhcyBwb3NpeCBzaAogCiBUbyBhdm9pZCB0aGUgYmFzaCBkZXBlbmRlbmN5LgogCkBAIC0xNSwxMCArMTUsMTAgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3RpbWV6b25lL01ha2VmaWxlIGIvdGltZXpvbmUvTWFrZWZpbGUKLWluZGV4IDk5NTY2Y2IuLmI2ZTc1N2UgMTAwNjQ0CitpbmRleCBkZWU3NTY4Li42NmE1MGJlIDEwMDY0NAogLS0tIGEvdGltZXpvbmUvTWFrZWZpbGUKICsrKyBiL3RpbWV6b25lL01ha2VmaWxlCi1AQCAtMTIyLDcgKzEyMiw3IEBAICQodGVzdGRhdGEpL1hUJTogdGVzdGRhdGEvWFQlCitAQCAtMTIwLDcgKzEyMCw3IEBAICQodGVzdGRhdGEpL1hUJTogdGVzdGRhdGEvWFQlCiAgCWNwICQ8ICRACiAgCiAgJChvYmpwZngpdHpzZWxlY3Q6IHR6c2VsZWN0LmtzaCAkKGNvbW1vbi1vYmpwZngpY29uZmlnLm1ha2UKQEAgLTI4LDcgKzI4LDcgQEAKICAJICAgIC1lICcvVFpWRVJTSU9OPS9zfHNlZV9NYWtlZmlsZXwiJCh2ZXJzaW9uKSJ8JyBcCiAgCSAgICAtZSAnL1BLR1ZFUlNJT049L3N8PS4qfD0iJChQS0dWRVJTSU9OKSJ8JyBcCiBkaWZmIC0tZ2l0IGEvdGltZXpvbmUvdHpzZWxlY3Qua3NoIGIvdGltZXpvbmUvdHpzZWxlY3Qua3NoCi1pbmRleCA5ZDcwNjkxLi4yNWY0NWE4IDEwMDc1NQoraW5kZXggMmMzYjJmNC4uMGMwNGE2MSAxMDA3NTUKIC0tLSBhL3RpbWV6b25lL3R6c2VsZWN0LmtzaAogKysrIGIvdGltZXpvbmUvdHpzZWxlY3Qua3NoCiBAQCAtMzUsNyArMzUsNyBAQCBSRVBPUlRfQlVHU19UTz10ekBpYW5hLm9yZwpAQCAtMzgsOCArMzgsOCBAQAogLTogJHtUWkRJUj1gcHdkYH0KICs6ICR7VFpESVI9JChwd2QpfQogIAotICMgQ2hlY2sgZm9yIGF3ayBQb3NpeCBjb21wbGlhbmNlLgotICgkQVdLIC12IHg9eSAnQkVHSU4geyBleGl0IDEyMyB9JykgPC9kZXYvbnVsbCA+L2Rldi9udWxsIDI+JjEKKyAjIE91dHB1dCBvbmUgYXJndW1lbnQgYXMtaXMgdG8gc3RhbmRhcmQgb3V0cHV0LgorICMgU2FmZXIgdGhhbiAnZWNobycsIHdoaWNoIGNhbiBtaXNoYW5kbGUgJ1wnIG9yIGxlYWRpbmcgJy0nLgogLS0gCi0yLjYuNAorMi44LjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTctUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE3LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2gKaW5kZXggMGM5YWU2Yy4uYzhkYTA1ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTctUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNy1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBjZDlkOWZlNzMxNmY0Y2U0Y2E5ZDhlNjdlMjJmNTcxODg3OTUzNWU0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA4OGFkODhkMDE0YTVlZTY4YjBlMDQ0ZDJkZWY1YWIxMzc0M2M4YWUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFRodSwgMzEgRGVjIDIwMTUgMTQ6MzM6MDIgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxNy8yNF0gUmVtb3ZlIGJhc2ggZGVwZW5kZW5jeSBmb3IgbnNjZCBpbml0IHNjcmlwdAorU3ViamVjdDogW1BBVENIIDE3LzI1XSBSZW1vdmUgYmFzaCBkZXBlbmRlbmN5IGZvciBuc2NkIGluaXQgc2NyaXB0CiAKIFRoZSBuc2NkIGluaXQgc2NyaXB0IHVzZXMgIyEgL2Jpbi9iYXNoIGJ1dCBvbmx5IHJlYWxseSB1c2VzIG9uZSBiYXNoaXNtCiAodHJhbnNsYXRlZCBzdHJpbmdzKSwgc28gcmVtb3ZlIHRoZW0gYW5kIHN3aXRjaCB0aGUgc2hlbGwgdG8gIyEvYmluL3NoLgpAQCAtOSw2ICs5LDggQEAKIFNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKwogIG5zY2QvbnNjZC5pbml0IHwgMTQgKysrKysrKy0tLS0tLS0KICAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQogCkBAIC02OSw1ICs3MSw1IEBACiAgCTs7CiAgZXNhYwogLS0gCi0yLjYuNAorMi44LjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTgtZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE4LWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2gKaW5kZXggZTI4MmU2MC4uMTc1MDc2NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTgtZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOC1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA4ZjU1NGY0YTFiZWIzOTE4MmFhZDljZDliNWUxZGE2OTQ2NGRmZjdlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA0OWMwYWQ3ZGMyZTAyZTgwOGVkMTUwMjk2YTEwOWI1ODZjMzQxMTVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6NDI6NTggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxOC8yNF0gZWdsaWJjOiBDcm9zcyBidWlsZGluZyBhbmQgdGVzdGluZyBpbnN0cnVjdGlvbnMKK1N1YmplY3Q6IFtQQVRDSCAxOC8yNV0gZWdsaWJjOiBDcm9zcyBidWlsZGluZyBhbmQgdGVzdGluZyBpbnN0cnVjdGlvbnMKIAogUG9ydGVkIGZyb20gZWdsaWJjCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKQEAgLTYxNSw1ICs2MTUsNSBAQAogKyAgc2ltcGx5IHBsYWNlIGNvcGllcyBvZiB0aGVzZSBsaWJyYXJpZXMgaW4gdGhlIHRvcCBHTElCQyBidWlsZAogKyAgZGlyZWN0b3J5LgogLS0gCi0yLjYuNAorMi44LjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTktZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE5LWVnbGliYy1IZWxwLWJvb3RzdHJhcC1jcm9zcy10b29sY2hhaW4ucGF0Y2gKaW5kZXggYzA0ZTBhMS4uZjk4M2Q4NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTktZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOS1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBjMmQ0OWVhYjIwZGI0YWIwMmI2ZGU2MjA5MmZlZGM2MjNkNzU3MTQ2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBlODgxZmFjZTdhMTAzNTQ2MTJiZjYzNGI0NGUwOWUzYmM2NDYyYzY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6NDk6MjggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxOS8yNF0gZWdsaWJjOiBIZWxwIGJvb3RzdHJhcCBjcm9zcyB0b29sY2hhaW4KK1N1YmplY3Q6IFtQQVRDSCAxOS8yNV0gZWdsaWJjOiBIZWxwIGJvb3RzdHJhcCBjcm9zcyB0b29sY2hhaW4KIAogVGFrZW4gZnJvbSBFR0xJQkMsIHIxNDg0ICsgcjE1MjUKIApAQCAtMjksNyArMjksNyBAQAogIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oCiAKIGRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCA5YTAxYzkzLi5hNmFlMDAzIDEwMDY0NAoraW5kZXggMzI3NDhiMy4uNmQwNTViYSAxMDA2NDQKIC0tLSBhL01ha2VmaWxlCiArKysgYi9NYWtlZmlsZQogQEAgLTY5LDkgKzY5LDE4IEBAIHN1YmRpci1kaXJzID0gaW5jbHVkZQpAQCAtOTYsNSArOTYsNSBAQAogKyAgIEVHTElCQyBzdWJkaXIgJ3N0dWJzJyBtYWtlIHRhcmdldHMsIG9uIGV2ZXJ5IC5vIGZpbGUgaW4gRUdMSUJDLCBidXQKICsgICBhbiBlbXB0eSBzdHVicy5oIGxpa2UgdGhpcyB3aWxsIGRvIGZpbmUgZm9yIEdDQy4gICovCiAtLSAKLTIuNi40CisyLjguMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMC1lZ2xpYmMtY2hlcnJ5LXBpY2tlZC1mcm9tLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjAtZWdsaWJjLWNoZXJyeS1waWNrZWQtZnJvbS5wYXRjaAppbmRleCA0MzYyZWZhLi4zMGM0YzY5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMC1lZ2xpYmMtY2hlcnJ5LXBpY2tlZC1mcm9tLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIwLWVnbGliYy1jaGVycnktcGlja2VkLWZyb20ucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDU4OGQ5MzZiOWFhNjVlN2NjOGIxZWIyY2FkMWQyMDkwODdkYjQzYTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDcyM2EzMWQzZTI2MjcyMTFiMzlmYmNjMDhmNzViM2MyM2M0MDk2YzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogVGh1LCAzMSBEZWMgMjAxNSAxNToxMDozMyAtMDgwMAotU3ViamVjdDogW1BBVENIIDIwLzI0XSBlZ2xpYmM6IGNoZXJyeS1waWNrZWQgZnJvbQorU3ViamVjdDogW1BBVENIIDIwLzI1XSBlZ2xpYmM6IGNoZXJyeS1waWNrZWQgZnJvbQogCiBodHRwOi8vd3d3LmVnbGliYy5vcmcvYXJjaGl2ZXMvcGF0Y2hlcy9tc2cwMDc3Mi5odG1sCiAKQEAgLTE1LDEwICsxNSwxMCBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9yZXNvbHYvcmVzX2xpYmMuYyBiL3Jlc29sdi9yZXNfbGliYy5jCi1pbmRleCBhODM5NGUwLi45ODFhYzdjIDEwMDY0NAoraW5kZXggYTRiMzc2Zi4uMzI1NmUxMiAxMDA2NDQKIC0tLSBhL3Jlc29sdi9yZXNfbGliYy5jCiArKysgYi9yZXNvbHYvcmVzX2xpYmMuYwotQEAgLTE4LDYgKzE4LDcgQEAKK0BAIC0yMSwxMSArMjEsMTMgQEAKICAjaW5jbHVkZSA8YXRvbWljLmg+CiAgI2luY2x1ZGUgPGxpbWl0cy5oPgogICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KQEAgLTI2LDE1ICsyNiwxMyBAQAogICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CiAgI2luY2x1ZGUgPGFycGEvbmFtZXNlci5oPgogICNpbmNsdWRlIDxyZXNvbHYuaD4KLUBAIC0yOCw2ICsyOSw3IEBACi0gICAgb3V0KSBzaW5jZSByZXNfaW5pdCgpIHNob3VsZCBnbyBpbnRvIGxpYmMuc28gYnV0IHRoZSByZXN0IG9mIHRoYXQKLSAgICBmaWxlIHNob3VsZCBub3QuICAqLworICNpbmNsdWRlIDxsaWJjLWxvY2suaD4KICAKICtfX2xpYmNfbG9ja19kZWZpbmVfaW5pdGlhbGl6ZWQgKHN0YXRpYywgbG9jayk7CiAgZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19yZXNfaW5pdHN0YW1wIGF0dHJpYnV0ZV9oaWRkZW47CiAgLyogV2UgaGF2ZSBhdG9taWMgaW5jcmVtZW50IG9wZXJhdGlvbnMgb24gNjQtYml0IHBsYXRmb3Jtcy4gICovCiAgI2lmIF9fV09SRFNJWkUgPT0gNjQKLUBAIC0zNSw3ICszNyw2IEBAIGV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fcmVzX2luaXRzdGFtcCBhdHRyaWJ1dGVfaGlkZGVuOworQEAgLTMzLDcgKzM1LDYgQEAgZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19yZXNfaW5pdHN0YW1wIGF0dHJpYnV0ZV9oaWRkZW47CiAgIyBkZWZpbmUgYXRvbWljaW5jdW5sb2NrKGxvY2spICh2b2lkKSAwCiAgIyBkZWZpbmUgYXRvbWljaW5jKHZhcikgY2F0b21pY19pbmNyZW1lbnQgKCYodmFyKSkKICAjZWxzZQpAQCAtNDIsNyArNDAsNyBAQAogICMgZGVmaW5lIGF0b21pY2luY2xvY2sobG9jaykgX19saWJjX2xvY2tfbG9jayAobG9jaykKICAjIGRlZmluZSBhdG9taWNpbmN1bmxvY2sobG9jaykgX19saWJjX2xvY2tfdW5sb2NrIChsb2NrKQogICMgZGVmaW5lIGF0b21pY2luYyh2YXIpICsrdmFyCi1AQCAtOTQsNyArOTUsMTggQEAgcmVzX2luaXQodm9pZCkgeworQEAgLTkyLDcgKzkzLDE4IEBAIHJlc19pbml0KHZvaWQpIHsKICBpbnQKICBfX3Jlc19tYXliZV9pbml0IChyZXNfc3RhdGUgcmVzcCwgaW50IHByZWluaXQpCiAgewpAQCAtNjIsNSArNjAsNSBAQAogIAkJCWlmIChyZXNwLT5uc2NvdW50ID4gMCkKICAJCQkJX19yZXNfaWNsb3NlIChyZXNwLCB0cnVlKTsKIC0tIAotMi42LjQKKzIuOC4yCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIxLWVnbGliYy1DbGVhci1jYWNoZS1saW5lcy1vbi1wcGM4eHgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMS1lZ2xpYmMtQ2xlYXItY2FjaGUtbGluZXMtb24tcHBjOHh4LnBhdGNoCmluZGV4IDIyNWYyMmYuLjg5MzFjOWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIxLWVnbGliYy1DbGVhci1jYWNoZS1saW5lcy1vbi1wcGM4eHgucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjEtZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gYjc0ZTM0ZTZmNTM4MTZhZDU3YjEzYmE2ZmQ3MGE5N2RiMWJjMWVhZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOTY5OTg3MzgyMGQwMzQ3YzJmMzc3ZjBkODZiY2U2MTVkODdhNWU0NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBUaHUsIDMxIERlYyAyMDE1IDE1OjE1OjA5IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMjEvMjRdIGVnbGliYzogQ2xlYXIgY2FjaGUgbGluZXMgb24gcHBjOHh4CitTdWJqZWN0OiBbUEFUQ0ggMjEvMjVdIGVnbGliYzogQ2xlYXIgY2FjaGUgbGluZXMgb24gcHBjOHh4CiAKIDIwMDctMDYtMTMgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CiAgICAgICAgICAgICBNYXJrIFNoaW53ZWxsICA8c2hpbndlbGxAY29kZXNvdXJjZXJ5LmNvbT4KQEAgLTIxLDcgKzIxLDcgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1zeXNkZXAuYwotaW5kZXggYzI1MDRmZi4uZDUwZjFjYiAxMDA2NDQKK2luZGV4IDk4ZWMyYjMuLmIzODRhZTAgMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jCiArKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jCiBAQCAtMjQsOSArMjQsMjEgQEAgaW50IF9fY2FjaGVfbGluZV9zaXplIGF0dHJpYnV0ZV9oaWRkZW47CkBAIC00OCw3ICs0OCw3IEBACiAgCWJyZWFrOwogIAogZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvbGliYy1zdGFydC5jIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9saWJjLXN0YXJ0LmMKLWluZGV4IDIwOWExNmQuLjVkODU3MmQgMTAwNjQ0CitpbmRleCAwZWZkMjk3Li44Y2MwZWY4IDEwMDY0NAogLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9saWJjLXN0YXJ0LmMKICsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvbGliYy1zdGFydC5jCiBAQCAtNzMsMTEgKzczLDI1IEBAIF9fbGliY19zdGFydF9tYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YsCkBAIC03OSw1ICs3OSw1IEBACiAgCWJyZWFrOwogICNpZm5kZWYgU0hBUkVECiAtLSAKLTIuNi40CisyLjguMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMi1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMi1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2gKaW5kZXggODhiMjBmNi4uZjUzZjVmZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjItZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIyLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gOGY0ODNjYjFmMjFhYjY0MzFmZjk5ZThkMzBkNTZiOTE2MDdhZTkxOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gODkwNGY0MjQ5YzkzMGQxODdlMTljN2U5ZDNlNzNjODM1ZDExZTE4ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjU1OjUzICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjIvMjRdIGVnbGliYzogUmVzb2x2ZSBfX2Zwc2NyX3ZhbHVlcyBvbiBTSDQKK1N1YmplY3Q6IFtQQVRDSCAyMi8yNV0gZWdsaWJjOiBSZXNvbHZlIF9fZnBzY3JfdmFsdWVzIG9uIFNINAogCiAyMDEwLTA5LTI5ICBOb2J1aGlybyBJd2FtYXRzdSAgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgogICAgICAgICAgICAgQW5kcmV3IFN0dWJicyAgPGFtc0Bjb2Rlc291cmNlcnkuY29tPgpAQCAtMzMsNyArMzMsNyBAQAogICAgICAjIGEqCiAgICAgIGFscGhhc29ydDY0OwogZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMKLWluZGV4IGEwMmI3ZTIuLmI5YmUzMjYgMTAwNjQ0CitpbmRleCAwMDI0ZDc5Li5kMWRiN2U0IDEwMDY0NAogLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMKICsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TCiBAQCAtMzAsMyArMzAsMTQgQEAgRU5UUlkgKF9fc3lzY2FsbF9lcnJvcikKQEAgLTUyLDUgKzUyLDUgQEAKICt3ZWFrX2FsaWFzIChfX19mcHNjcl92YWx1ZXMsIF9fZnBzY3JfdmFsdWVzKQogKwogLS0gCi0yLjYuNAorMi44LjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjMtZWdsaWJjLUluc3RhbGwtUElDLWFyY2hpdmVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjMtZWdsaWJjLUluc3RhbGwtUElDLWFyY2hpdmVzLnBhdGNoCmluZGV4IGQ5NWVhM2IuLmY5ODVmM2MgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIzLWVnbGliYy1JbnN0YWxsLVBJQy1hcmNoaXZlcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMy1lZ2xpYmMtSW5zdGFsbC1QSUMtYXJjaGl2ZXMucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDU4ZDQyNDg4NGVlZDdlZmRlNmM5MGFmMGNkN2M2YzM3Y2Y5YjQ0NGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDE5NDdmMjExZmFiNDAwMWU4NGJiNTI4NjhjZGRiZDQwMWU1OTc4ODkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMTo1NzowMSArMDAwMAotU3ViamVjdDogW1BBVENIIDIzLzI0XSBlZ2xpYmM6IEluc3RhbGwgUElDIGFyY2hpdmVzCitTdWJqZWN0OiBbUEFUQ0ggMjMvMjVdIGVnbGliYzogSW5zdGFsbCBQSUMgYXJjaGl2ZXMKIAogRm9yd2FyZCBwb3J0IGZyb20gZWdsaWJjCiAKQEAgLTI5LDcgKzI5LDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL01ha2VydWxlcyBiL01ha2VydWxlcwotaW5kZXggZmEyNDAzMC4uMWZmNDYzNCAxMDA2NDQKK2luZGV4IDUzZWFiZmEuLjFjZDJhNTMgMTAwNjQ0CiAtLS0gYS9NYWtlcnVsZXMKICsrKyBiL01ha2VydWxlcwogQEAgLTY5NCw2ICs2OTQsOSBAQCBpZmVxICgkKGJ1aWxkLXNoYXJlZCkseWVzKQpAQCAtMTE5LDUgKzExOSw1IEBACiAgaW5zdGFsbC1uby1saWJjLmEtbm9zdWJkaXI6IGluc3RhbGwtYmluLW5vc3ViZGlyIGluc3RhbGwtYmluLXNjcmlwdC1ub3N1YmRpciBcCiAgCQkJICAgIGluc3RhbGwtcm9vdHNiaW4tbm9zdWJkaXIgaW5zdGFsbC1zYmluLW5vc3ViZGlyIFwKIC0tIAotMi42LjQKKzIuOC4yCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI0LWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI0LWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDViNTU3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjQtZWdsaWJjLUZvcndhcmQtcG9ydC1jcm9zcy1sb2NhbGUtZ2VuZXJhdGlvbi1zdXBwb3J0LnBhdGNoCkBAIC0wLDAgKzEsNTY2IEBACitGcm9tIDExZDc2MzMxNzgzMDFhZGQyNmEyNDY1N2UyZjE1OTZhMmY3ZGRkY2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMTozMzo0OSArMDAwMAorU3ViamVjdDogW1BBVENIIDI0LzI1XSBlZ2xpYmM6IEZvcndhcmQgcG9ydCBjcm9zcyBsb2NhbGUgZ2VuZXJhdGlvbiBzdXBwb3J0CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbG9jYWxlL01ha2VmaWxlICAgICAgICAgICAgICAgfCAgMyArKy0KKyBsb2NhbGUvY2F0bmFtZXMuYyAgICAgICAgICAgICB8IDQ4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgbG9jYWxlL2xvY2FsZWluZm8uaCAgICAgICAgICAgfCAgMiArLQorIGxvY2FsZS9wcm9ncmFtcy9jaGFybWFwLWRpci5jIHwgIDYgKysrKysKKyBsb2NhbGUvcHJvZ3JhbXMvbGQtY29sbGF0ZS5jICB8IDE3ICsrKysrKy0tLS0tLS0KKyBsb2NhbGUvcHJvZ3JhbXMvbGQtY3R5cGUuYyAgICB8IDI3ICsrKysrKysrKystLS0tLS0tLS0tCisgbG9jYWxlL3Byb2dyYW1zL2xkLXRpbWUuYyAgICAgfCAzMSArKysrKysrKysrKysrKystLS0tLS0tLQorIGxvY2FsZS9wcm9ncmFtcy9saW5lcmVhZGVyLmMgIHwgIDIgKy0KKyBsb2NhbGUvcHJvZ3JhbXMvbG9jYWxlZGVmLmMgICB8ICA4ICsrKysrKworIGxvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmMgICAgIHwgIDUgKysrLQorIGxvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmggICAgIHwgNTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQorIGxvY2FsZS9zZXRsb2NhbGUuYyAgICAgICAgICAgIHwgMzAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEyIGZpbGVzIGNoYW5nZWQsIDE2OSBpbnNlcnRpb25zKCspLCA2OSBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbG9jYWxlL2NhdG5hbWVzLmMKKworZGlmZiAtLWdpdCBhL2xvY2FsZS9NYWtlZmlsZSBiL2xvY2FsZS9NYWtlZmlsZQoraW5kZXggYzUzNzllNi4uYzk4YzY3NSAxMDA2NDQKKy0tLSBhL2xvY2FsZS9NYWtlZmlsZQorKysrIGIvbG9jYWxlL01ha2VmaWxlCitAQCAtMjUsNyArMjUsOCBAQCBpbmNsdWRlIC4uL01ha2Vjb25maWcKKyBoZWFkZXJzCQk9IGxvY2FsZS5oIGJpdHMvbG9jYWxlLmggbGFuZ2luZm8uaCB4bG9jYWxlLmgKKyByb3V0aW5lcwk9IHNldGxvY2FsZSBmaW5kbG9jYWxlIGxvYWRsb2NhbGUgbG9hZGFyY2hpdmUgXAorIAkJICBsb2NhbGVjb252IG5sX2xhbmdpbmZvIG5sX2xhbmdpbmZvX2wgbWJfY3VyX21heCBcCistCQkgIG5ld2xvY2FsZSBkdXBsb2NhbGUgZnJlZWxvY2FsZSB1c2Vsb2NhbGUKKysJCSAgbmV3bG9jYWxlIGR1cGxvY2FsZSBmcmVlbG9jYWxlIHVzZWxvY2FsZSBcCisrCQkgIGNhdG5hbWVzCisgdGVzdHMJCT0gdHN0LUMtbG9jYWxlIHRzdC1sb2NuYW1lIHRzdC1kdXBsb2NhbGUKKyBjYXRlZ29yaWVzCT0gY3R5cGUgbWVzc2FnZXMgbW9uZXRhcnkgbnVtZXJpYyB0aW1lIHBhcGVyIG5hbWUgXAorIAkJICBhZGRyZXNzIHRlbGVwaG9uZSBtZWFzdXJlbWVudCBpZGVudGlmaWNhdGlvbiBjb2xsYXRlCitkaWZmIC0tZ2l0IGEvbG9jYWxlL2NhdG5hbWVzLmMgYi9sb2NhbGUvY2F0bmFtZXMuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjlmYWQzNTcKKy0tLSAvZGV2L251bGwKKysrKyBiL2xvY2FsZS9jYXRuYW1lcy5jCitAQCAtMCwwICsxLDQ4IEBACisrLyogQ29weXJpZ2h0IChDKSAyMDA2ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKysgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisrICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisrICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKKysgICAwMjExMS0xMzA3IFVTQS4gICovCisrCisrI2luY2x1ZGUgImxvY2FsZWluZm8uaCIKKysKKysvKiBEZWZpbmUgYW4gYXJyYXkgb2YgY2F0ZWdvcnkgbmFtZXMgKGFsc28gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWVzKS4gICovCisrY29uc3QgdW5pb24gY2F0bmFtZXN0cl90IF9ubF9jYXRlZ29yeV9uYW1lcyBhdHRyaWJ1dGVfaGlkZGVuID0KKysgIHsKKysgICAgeworKyNkZWZpbmUgREVGSU5FX0NBVEVHT1JZKGNhdGVnb3J5LCBjYXRlZ29yeV9uYW1lLCBpdGVtcywgYSkgXAorKyAgICAgIGNhdGVnb3J5X25hbWUsCisrI2luY2x1ZGUgImNhdGVnb3JpZXMuZGVmIgorKyN1bmRlZiBERUZJTkVfQ0FURUdPUlkKKysgICAgfQorKyAgfTsKKysKKytjb25zdCB1aW50OF90IF9ubF9jYXRlZ29yeV9uYW1lX2lkeHNbX19MQ19MQVNUXSBhdHRyaWJ1dGVfaGlkZGVuID0KKysgIHsKKysjZGVmaW5lIERFRklORV9DQVRFR09SWShjYXRlZ29yeSwgY2F0ZWdvcnlfbmFtZSwgaXRlbXMsIGEpIFwKKysgICAgW2NhdGVnb3J5XSA9IG9mZnNldG9mICh1bmlvbiBjYXRuYW1lc3RyX3QsIENBVE5BTUVNRiAoX19MSU5FX18pKSwKKysjaW5jbHVkZSAiY2F0ZWdvcmllcy5kZWYiCisrI3VuZGVmIERFRklORV9DQVRFR09SWQorKyAgfTsKKysKKysvKiBBbiBhcnJheSBvZiB0aGVpciBsZW5ndGhzLCBmb3IgY29udmVuaWVuY2UuICAqLworK2NvbnN0IHVpbnQ4X3QgX25sX2NhdGVnb3J5X25hbWVfc2l6ZXNbXSBhdHRyaWJ1dGVfaGlkZGVuID0KKysgIHsKKysjZGVmaW5lIERFRklORV9DQVRFR09SWShjYXRlZ29yeSwgY2F0ZWdvcnlfbmFtZSwgaXRlbXMsIGEpIFwKKysgICAgW2NhdGVnb3J5XSA9IHNpemVvZiAoY2F0ZWdvcnlfbmFtZSkgLSAxLAorKyNpbmNsdWRlICJjYXRlZ29yaWVzLmRlZiIKKysjdW5kZWYJREVGSU5FX0NBVEVHT1JZCisrICAgIFtMQ19BTExdID0gc2l6ZW9mICgiTENfQUxMIikgLSAxCisrICB9OworZGlmZiAtLWdpdCBhL2xvY2FsZS9sb2NhbGVpbmZvLmggYi9sb2NhbGUvbG9jYWxlaW5mby5oCitpbmRleCA5NDYyN2YzLi5kMGRiNzdiIDEwMDY0NAorLS0tIGEvbG9jYWxlL2xvY2FsZWluZm8uaAorKysrIGIvbG9jYWxlL2xvY2FsZWluZm8uaAorQEAgLTIyNCw3ICsyMjQsNyBAQCBfX2xpYmNfdHNkX2RlZmluZSAoZXh0ZXJuLCBfX2xvY2FsZV90LCBMT0NBTEUpCisgICAgdW51c2VkLiAgV2UgY2FuIG1hbmFnZSB0aGlzIHBsYXlpbmcgc29tZSB0cmlja3Mgd2l0aCB3ZWFrIHJlZmVyZW5jZXMuCisgICAgQnV0IHdpdGggdGhyZWFkLWxvY2FsIGxvY2FsZSBzZXR0aW5ncywgaXQgYmVjb21lcyBxdWl0ZSB1bmdhaW5seSB1bmxlc3MKKyAgICB3ZSBjYW4gdXNlIF9fdGhyZWFkIHZhcmlhYmxlcy4gIFNvIG9ubHkgaW4gdGhhdCBjYXNlIGRvIHdlIGF0dGVtcHQgdGhpcy4gICovCistI2lmbmRlZiBTSEFSRUQKKysjaWYgIWRlZmluZWQgU0hBUkVEICYmICFkZWZpbmVkIElOX0dMSUJDX0xPQ0FMRURFRgorICMgaW5jbHVkZSA8dGxzLmg+CisgIyBkZWZpbmUgTkxfQ1VSUkVOVF9JTkRJUkVDVAkxCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMgYi9sb2NhbGUvcHJvZ3JhbXMvY2hhcm1hcC1kaXIuYworaW5kZXggOTlmY2QzNS4uNWU1MjhkYyAxMDA2NDQKKy0tLSBhL2xvY2FsZS9wcm9ncmFtcy9jaGFybWFwLWRpci5jCisrKysgYi9sb2NhbGUvcHJvZ3JhbXMvY2hhcm1hcC1kaXIuYworQEAgLTE5LDcgKzE5LDkgQEAKKyAjaW5jbHVkZSA8ZXJyb3IuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8bGliaW50bC5oPgorKyNpZm5kZWYgTk9fVU5DT01QUkVTUworICNpbmNsdWRlIDxzcGF3bi5oPgorKyNlbmRpZgorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CitAQCAtMTU2LDYgKzE1OCw3IEBAIGNoYXJtYXBfY2xvc2VkaXIgKENIQVJNQVBfRElSICpjZGlyKQorICAgcmV0dXJuIGNsb3NlZGlyIChkaXIpOworIH0KKyAKKysjaWZuZGVmIE5PX1VOQ09NUFJFU1MKKyAvKiBDcmVhdGVzIGEgc3VicHJvY2VzcyBkZWNvbXByZXNzaW5nIHRoZSBnaXZlbiBwYXRobmFtZSwgYW5kIHJldHVybnMKKyAgICBhIHN0cmVhbSByZWFkaW5nIGl0cyBvdXRwdXQgKHRoZSBkZWNvbXByZXNzZWQgZGF0YSkuICAqLworIHN0YXRpYworQEAgLTIwNCw2ICsyMDcsNyBAQCBmb3Blbl91bmNvbXByZXNzZWQgKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBjb25zdCBjaGFyICpjb21wcmVzc29yKQorICAgICB9CisgICByZXR1cm4gTlVMTDsKKyB9CisrI2VuZGlmCisgCisgLyogT3BlbnMgYSBjaGFybWFwIGZvciByZWFkaW5nLCBnaXZlbiBpdHMgbmFtZSAobm90IGFuIGFsaWFzIG5hbWUpLiAgKi8KKyBGSUxFICoKK0BAIC0yMjYsNiArMjMwLDcgQEAgY2hhcm1hcF9vcGVuIChjb25zdCBjaGFyICpkaXJlY3RvcnksIGNvbnN0IGNoYXIgKm5hbWUpCisgICBpZiAoc3RyZWFtICE9IE5VTEwpCisgICAgIHJldHVybiBzdHJlYW07CisgCisrI2lmbmRlZiBOT19VTkNPTVBSRVNTCisgICBtZW1jcHkgKHAsICIuZ3oiLCA0KTsKKyAgIHN0cmVhbSA9IGZvcGVuX3VuY29tcHJlc3NlZCAocGF0aG5hbWUsICJnemlwIik7CisgICBpZiAoc3RyZWFtICE9IE5VTEwpCitAQCAtMjM1LDYgKzI0MCw3IEBAIGNoYXJtYXBfb3BlbiAoY29uc3QgY2hhciAqZGlyZWN0b3J5LCBjb25zdCBjaGFyICpuYW1lKQorICAgc3RyZWFtID0gZm9wZW5fdW5jb21wcmVzc2VkIChwYXRobmFtZSwgImJ6aXAyIik7CisgICBpZiAoc3RyZWFtICE9IE5VTEwpCisgICAgIHJldHVybiBzdHJlYW07CisrI2VuZGlmCisgCisgICByZXR1cm4gTlVMTDsKKyB9CitkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYyBiL2xvY2FsZS9wcm9ncmFtcy9sZC1jb2xsYXRlLmMKK2luZGV4IDFlMTI1ZjYuLjNiMjg2N2YgMTAwNjQ0CistLS0gYS9sb2NhbGUvcHJvZ3JhbXMvbGQtY29sbGF0ZS5jCisrKysgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtY29sbGF0ZS5jCitAQCAtMzUwLDcgKzM1MCw3IEBAIG5ld19lbGVtZW50IChzdHJ1Y3QgbG9jYWxlX2NvbGxhdGVfdCAqY29sbGF0ZSwgY29uc3QgY2hhciAqbWJzLCBzaXplX3QgbWJzbGVuLAorICAgICB9CisgICBpZiAod2NzICE9IE5VTEwpCisgICAgIHsKKy0gICAgICBzaXplX3QgbndjcyA9IHdjc2xlbiAoKHdjaGFyX3QgKikgd2NzKTsKKysgICAgICBzaXplX3QgbndjcyA9IHdjc2xlbl91aW50MzIgKHdjcyk7CisgICAgICAgdWludDMyX3QgemVybyA9IDA7CisgICAgICAgLyogSGFuZGxlIDxVMDAwMD4gYXMgYSBzaW5nbGUgY2hhcmFjdGVyLiAgKi8KKyAgICAgICBpZiAobndjcyA9PSAwKQorQEAgLTE3NzYsOCArMTc3Niw3IEBAIHN5bWJvbCBgJXMnIGhhcyB0aGUgc2FtZSBlbmNvZGluZyBhcyIpLCAoKmVwdHIpLT5uYW1lKTsKKyAKKyAJICAgICAgaWYgKCgqZXB0ciktPm53Y3MgPT0gcnVucC0+bndjcykKKyAJCXsKKy0JCSAgaW50IGMgPSB3bWVtY21wICgod2NoYXJfdCAqKSAoKmVwdHIpLT53Y3MsCistCQkJCSAgICh3Y2hhcl90ICopIHJ1bnAtPndjcywgcnVucC0+bndjcyk7CisrCQkgIGludCBjID0gd21lbWNtcF91aW50MzIgKCgqZXB0ciktPndjcywgcnVucC0+d2NzLCBydW5wLT5ud2NzKTsKKyAKKyAJCSAgaWYgKGMgPT0gMCkKKyAJCSAgICB7CitAQCAtMjAxMCw5ICsyMDA5LDkgQEAgYWRkX3RvX3RhYmxld2MgKHVpbnQzMl90IGNoLCBzdHJ1Y3QgZWxlbWVudF90ICpydW5wKQorIAkgICAgIG9uZSBjb25zZWN1dGl2ZSBlbnRyeS4gICovCisgCSAgaWYgKHJ1bnAtPndjbmV4dCAhPSBOVUxMCisgCSAgICAgICYmIHJ1bnAtPm53Y3MgPT0gcnVucC0+d2NuZXh0LT5ud2NzCistCSAgICAgICYmIHdtZW1jbXAgKCh3Y2hhcl90ICopIHJ1bnAtPndjcywKKy0JCQkgICh3Y2hhcl90ICopcnVucC0+d2NuZXh0LT53Y3MsCistCQkJICBydW5wLT5ud2NzIC0gMSkgPT0gMAorKwkgICAgICAmJiB3bWVtY21wX3VpbnQzMiAocnVucC0+d2NzLAorKwkJCQkgcnVucC0+d2NuZXh0LT53Y3MsCisrCQkJCSBydW5wLT5ud2NzIC0gMSkgPT0gMAorIAkgICAgICAmJiAocnVucC0+d2NzW3J1bnAtPm53Y3MgLSAxXQorIAkJICA9PSBydW5wLT53Y25leHQtPndjc1tydW5wLT5ud2NzIC0gMV0gKyAxKSkKKyAJICAgIHsKK0BAIC0yMDM2LDkgKzIwMzUsOSBAQCBhZGRfdG9fdGFibGV3YyAodWludDMyX3QgY2gsIHN0cnVjdCBlbGVtZW50X3QgKnJ1bnApCisgCQlydW5wID0gcnVucC0+d2NuZXh0OworIAkgICAgICB3aGlsZSAocnVucC0+d2NuZXh0ICE9IE5VTEwKKyAJCSAgICAgJiYgcnVucC0+bndjcyA9PSBydW5wLT53Y25leHQtPm53Y3MKKy0JCSAgICAgJiYgd21lbWNtcCAoKHdjaGFyX3QgKikgcnVucC0+d2NzLAorLQkJCQkgKHdjaGFyX3QgKilydW5wLT53Y25leHQtPndjcywKKy0JCQkJIHJ1bnAtPm53Y3MgLSAxKSA9PSAwCisrCQkgICAgICYmIHdtZW1jbXBfdWludDMyIChydW5wLT53Y3MsCisrCQkJCQlydW5wLT53Y25leHQtPndjcywKKysJCQkJCXJ1bnAtPm53Y3MgLSAxKSA9PSAwCisgCQkgICAgICYmIChydW5wLT53Y3NbcnVucC0+bndjcyAtIDFdCisgCQkJID09IHJ1bnAtPndjbmV4dC0+d2NzW3J1bnAtPm53Y3MgLSAxXSArIDEpKTsKKyAKK2RpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbGQtY3R5cGUuYyBiL2xvY2FsZS9wcm9ncmFtcy9sZC1jdHlwZS5jCitpbmRleCAwZmQxNDFjLi42ODEzNmU2IDEwMDY0NAorLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xkLWN0eXBlLmMKKysrKyBiL2xvY2FsZS9wcm9ncmFtcy9sZC1jdHlwZS5jCitAQCAtOTI2LDcgKzkyNiw3IEBAIGN0eXBlX291dHB1dCAoc3RydWN0IGxvY2FsZWRlZl90ICpsb2NhbGUsIGNvbnN0IHN0cnVjdCBjaGFybWFwX3QgKmNoYXJtYXAsCisgICBhbGxvY2F0ZV9hcnJheXMgKGN0eXBlLCBjaGFybWFwLCBjdHlwZS0+cmVwZXJ0b2lyZSk7CisgCisgICBkZWZhdWx0X21pc3NpbmdfbGVuID0gKGN0eXBlLT5kZWZhdWx0X21pc3NpbmcKKy0JCQkgPyB3Y3NsZW4gKCh3Y2hhcl90ICopIGN0eXBlLT5kZWZhdWx0X21pc3NpbmcpCisrCQkJID8gd2NzbGVuX3VpbnQzMiAoY3R5cGUtPmRlZmF1bHRfbWlzc2luZykKKyAJCQkgOiAwKTsKKyAKKyAgIGluaXRfbG9jYWxlX2RhdGEgKCZmaWxlLCBuZWxlbXMpOworQEAgLTE5MzcsNyArMTkzNyw3IEBAIHJlYWRfdHJhbnNsaXRfZW50cnkgKHN0cnVjdCBsaW5lcmVhZGVyICpsZGZpbGUsIHN0cnVjdCBsb2NhbGVfY3R5cGVfdCAqY3R5cGUsCisgCSAgICBpZ25vcmUgPSAxOworIAkgIGVsc2UKKyAJICAgIC8qIFRoaXMgdmFsdWUgaXMgdXNhYmxlLiAgKi8KKy0JICAgIG9ic3RhY2tfZ3JvdyAob2IsIHRvX3dzdHIsIHdjc2xlbiAoKHdjaGFyX3QgKikgdG9fd3N0cikgKiA0KTsKKysJICAgIG9ic3RhY2tfZ3JvdyAob2IsIHRvX3dzdHIsIHdjc2xlbl91aW50MzIgKHRvX3dzdHIpICogNCk7CisgCisgCSAgZmlyc3QgPSAwOworIAl9CitAQCAtMjQ3MSw4ICsyNDcxLDggQEAgd2l0aCBjaGFyYWN0ZXIgY29kZSByYW5nZSB2YWx1ZXMgb25lIG11c3QgdXNlIHRoZSBhYnNvbHV0ZSBlbGxpcHNpcyBgLi4uJyIpKTsKKyAJICAgIH0KKyAKKyAJaGFuZGxlX3Rva19kaWdpdDoKKy0JICBjbGFzc19iaXQgPSBfSVN3ZGlnaXQ7CistCSAgY2xhc3MyNTZfYml0ID0gX0lTZGlnaXQ7CisrCSAgY2xhc3NfYml0ID0gQklUdyAodG9rX2RpZ2l0KTsKKysJICBjbGFzczI1Nl9iaXQgPSBCSVQgKHRva19kaWdpdCk7CisgCSAgaGFuZGxlX2RpZ2l0cyA9IDE7CisgCSAgZ290byByZWFkX2NoYXJjbGFzczsKKyAKK0BAIC0zOTI5LDggKzM5MjksNyBAQCBhbGxvY2F0ZV9hcnJheXMgKHN0cnVjdCBsb2NhbGVfY3R5cGVfdCAqY3R5cGUsIGNvbnN0IHN0cnVjdCBjaGFybWFwX3QgKmNoYXJtYXAsCisgCisgCSAgd2hpbGUgKGlkeCA8IG51bWJlcikKKyAJICAgIHsKKy0JICAgICAgaW50IHJlcyA9IHdjc2NtcCAoKGNvbnN0IHdjaGFyX3QgKikgc29ydGVkW2lkeF0tPmZyb20sCistCQkJCShjb25zdCB3Y2hhcl90ICopIHJ1bnAtPmZyb20pOworKwkgICAgICBpbnQgcmVzID0gd2NzY21wX3VpbnQzMiAoc29ydGVkW2lkeF0tPmZyb20sIHJ1bnAtPmZyb20pOworIAkgICAgICBpZiAocmVzID09IDApCisgCQl7CisgCQkgIHJlcGxhY2UgPSAxOworQEAgLTM5NjcsMTEgKzM5NjYsMTEgQEAgYWxsb2NhdGVfYXJyYXlzIChzdHJ1Y3QgbG9jYWxlX2N0eXBlX3QgKmN0eXBlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAorICAgICAgIGZvciAoc2l6ZV90IGNudCA9IDA7IGNudCA8IG51bWJlcjsgKytjbnQpCisgCXsKKyAJICBzdHJ1Y3QgdHJhbnNsaXRfdG9fdCAqc3J1bnA7CistCSAgZnJvbV9sZW4gKz0gd2NzbGVuICgoY29uc3Qgd2NoYXJfdCAqKSBzb3J0ZWRbY250XS0+ZnJvbSkgKyAxOworKwkgIGZyb21fbGVuICs9IHdjc2xlbl91aW50MzIgKHNvcnRlZFtjbnRdLT5mcm9tKSArIDE7CisgCSAgc3J1bnAgPSBzb3J0ZWRbY250XS0+dG87CisgCSAgd2hpbGUgKHNydW5wICE9IE5VTEwpCisgCSAgICB7CistCSAgICAgIHRvX2xlbiArPSB3Y3NsZW4gKChjb25zdCB3Y2hhcl90ICopIHNydW5wLT5zdHIpICsgMTsKKysJICAgICAgdG9fbGVuICs9IHdjc2xlbl91aW50MzIgKHNydW5wLT5zdHIpICsgMTsKKyAJICAgICAgc3J1bnAgPSBzcnVucC0+bmV4dDsKKyAJICAgIH0KKyAJICAvKiBQbHVzIG9uZSBmb3IgdGhlIGV4dHJhIE5VTCBjaGFyYWN0ZXIgbWFya2luZyB0aGUgZW5kIG9mCitAQCAtMzk5NSwxOCArMzk5NCwxOCBAQCBhbGxvY2F0ZV9hcnJheXMgKHN0cnVjdCBsb2NhbGVfY3R5cGVfdCAqY3R5cGUsIGNvbnN0IHN0cnVjdCBjaGFybWFwX3QgKmNoYXJtYXAsCisgCSAgY3R5cGUtPnRyYW5zbGl0X2Zyb21faWR4W2NudF0gPSBmcm9tX2xlbjsKKyAJICBjdHlwZS0+dHJhbnNsaXRfdG9faWR4W2NudF0gPSB0b19sZW47CisgCistCSAgbGVuID0gd2NzbGVuICgoY29uc3Qgd2NoYXJfdCAqKSBzb3J0ZWRbY250XS0+ZnJvbSkgKyAxOworLQkgIHdtZW1jcHkgKCh3Y2hhcl90ICopICZjdHlwZS0+dHJhbnNsaXRfZnJvbV90YmxbZnJvbV9sZW5dLAorLQkJICAgKGNvbnN0IHdjaGFyX3QgKikgc29ydGVkW2NudF0tPmZyb20sIGxlbik7CisrCSAgbGVuID0gd2NzbGVuX3VpbnQzMiAoc29ydGVkW2NudF0tPmZyb20pICsgMTsKKysJICB3bWVtY3B5X3VpbnQzMiAoJmN0eXBlLT50cmFuc2xpdF9mcm9tX3RibFtmcm9tX2xlbl0sCisrCQkJICBzb3J0ZWRbY250XS0+ZnJvbSwgbGVuKTsKKyAJICBmcm9tX2xlbiArPSBsZW47CisgCisgCSAgY3R5cGUtPnRyYW5zbGl0X3RvX2lkeFtjbnRdID0gdG9fbGVuOworIAkgIHNydW5wID0gc29ydGVkW2NudF0tPnRvOworIAkgIHdoaWxlIChzcnVucCAhPSBOVUxMKQorIAkgICAgeworLQkgICAgICBsZW4gPSB3Y3NsZW4gKChjb25zdCB3Y2hhcl90ICopIHNydW5wLT5zdHIpICsgMTsKKy0JICAgICAgd21lbWNweSAoKHdjaGFyX3QgKikgJmN0eXBlLT50cmFuc2xpdF90b190YmxbdG9fbGVuXSwKKy0JCSAgICAgICAoY29uc3Qgd2NoYXJfdCAqKSBzcnVucC0+c3RyLCBsZW4pOworKwkgICAgICBsZW4gPSB3Y3NsZW5fdWludDMyIChzcnVucC0+c3RyKSArIDE7CisrCSAgICAgIHdtZW1jcHlfdWludDMyICgmY3R5cGUtPnRyYW5zbGl0X3RvX3RibFt0b19sZW5dLAorKwkJCSAgICAgIHNydW5wLT5zdHIsIGxlbik7CisgCSAgICAgIHRvX2xlbiArPSBsZW47CisgCSAgICAgIHNydW5wID0gc3J1bnAtPm5leHQ7CisgCSAgICB9CitkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xkLXRpbWUuYyBiL2xvY2FsZS9wcm9ncmFtcy9sZC10aW1lLmMKK2luZGV4IDg3NTMxYmMuLjVmMmMyNjYgMTAwNjQ0CistLS0gYS9sb2NhbGUvcHJvZ3JhbXMvbGQtdGltZS5jCisrKysgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtdGltZS5jCitAQCAtMjE1LDggKzIxNSwxMCBAQCBObyBkZWZpbml0aW9uIGZvciAlcyBjYXRlZ29yeSBmb3VuZCIpLCAiTENfVElNRSIpKTsKKyAJfQorICAgICAgIGVsc2UKKyAJeworKwkgIHN0YXRpYyBjb25zdCB1aW50MzJfdCB3dF9mbXRfYW1wbVtdCisrCSAgICA9IHsgJyUnLCdJJywnOicsJyUnLCdNJywnOicsJyUnLCdTJywnICcsJyUnLCdwJywwIH07CisgCSAgdGltZS0+dF9mbXRfYW1wbSA9ICIlSTolTTolUyAlcCI7CistCSAgdGltZS0+d3RfZm10X2FtcG0gPSAoY29uc3QgdWludDMyX3QgKikgTCIlSTolTTolUyAlcCI7CisrCSAgdGltZS0+d3RfZm10X2FtcG0gPSB3dF9mbXRfYW1wbTsKKyAJfQorICAgICB9CisgCitAQCAtMjI2LDcgKzIyOCw3IEBAIE5vIGRlZmluaXRpb24gZm9yICVzIGNhdGVnb3J5IGZvdW5kIiksICJMQ19USU1FIikpOworICAgICAgIGNvbnN0IGludCBkYXlzX3Blcl9tb250aFsxMl0gPSB7IDMxLCAyOSwgMzEsIDMwLCAzMSwgMzAsCisgCQkJCSAgICAgICAzMSwgMzEsIDMwLCAzMSAsMzAsIDMxIH07CisgICAgICAgc2l6ZV90IGlkeDsKKy0gICAgICB3Y2hhcl90ICp3c3RyOworKyAgICAgIHVpbnQzMl90ICp3c3RyOworIAorICAgICAgIHRpbWUtPmVyYV9lbnRyaWVzID0KKyAJKHN0cnVjdCBlcmFfZGF0YSAqKSB4bWFsbG9jICh0aW1lLT5udW1fZXJhCitAQCAtNDY0LDE4ICs0NjYsMTggQEAgTm8gZGVmaW5pdGlvbiBmb3IgJXMgY2F0ZWdvcnkgZm91bmQiKSwgIkxDX1RJTUUiKSk7CisgCSAgICB9CisgCisgCSAgLyogTm93IGdlbmVyYXRlIHRoZSB3aWRlIGNoYXJhY3RlciBuYW1lIGFuZCBmb3JtYXQuICAqLworLQkgIHdzdHIgPSB3Y3NjaHIgKCh3Y2hhcl90ICopIHRpbWUtPndlcmFbaWR4XSwgTCc6Jyk7LyogZW5kIGRpcmVjdGlvbiAqLworLQkgIHdzdHIgPSB3c3RyID8gd2NzY2hyICh3c3RyICsgMSwgTCc6JykgOiBOVUxMOwkvKiBlbmQgb2Zmc2V0ICovCistCSAgd3N0ciA9IHdzdHIgPyB3Y3NjaHIgKHdzdHIgKyAxLCBMJzonKSA6IE5VTEw7CS8qIGVuZCBzdGFydCAqLworLQkgIHdzdHIgPSB3c3RyID8gd2NzY2hyICh3c3RyICsgMSwgTCc6JykgOiBOVUxMOwkvKiBlbmQgZW5kICovCisrCSAgd3N0ciA9IHdjc2Nocl91aW50MzIgKHRpbWUtPndlcmFbaWR4XSwgTCc6Jyk7IC8qIGVuZCBkaXJlY3Rpb24gKi8KKysJICB3c3RyID0gd3N0ciA/IHdjc2Nocl91aW50MzIgKHdzdHIgKyAxLCBMJzonKSA6IE5VTEw7IC8qIGVuZCBvZmZzZXQgKi8KKysJICB3c3RyID0gd3N0ciA/IHdjc2Nocl91aW50MzIgKHdzdHIgKyAxLCBMJzonKSA6IE5VTEw7IC8qIGVuZCBzdGFydCAqLworKwkgIHdzdHIgPSB3c3RyID8gd2NzY2hyX3VpbnQzMiAod3N0ciArIDEsIEwnOicpIDogTlVMTDsgLyogZW5kIGVuZCAqLworIAkgIGlmICh3c3RyICE9IE5VTEwpCisgCSAgICB7CistCSAgICAgIHRpbWUtPmVyYV9lbnRyaWVzW2lkeF0ud25hbWUgPSAodWludDMyX3QgKikgd3N0ciArIDE7CistCSAgICAgIHdzdHIgPSB3Y3NjaHIgKHdzdHIgKyAxLCBMJzonKTsJLyogZW5kIG5hbWUgKi8KKysJICAgICAgdGltZS0+ZXJhX2VudHJpZXNbaWR4XS53bmFtZSA9IHdzdHIgKyAxOworKwkgICAgICB3c3RyID0gd2NzY2hyX3VpbnQzMiAod3N0ciArIDEsIEwnOicpOyAvKiBlbmQgbmFtZSAqLworIAkgICAgICBpZiAod3N0ciAhPSBOVUxMKQorIAkJeworIAkJICAqd3N0ciA9IEwnXDAnOworLQkJICB0aW1lLT5lcmFfZW50cmllc1tpZHhdLndmb3JtYXQgPSAodWludDMyX3QgKikgd3N0ciArIDE7CisrCQkgIHRpbWUtPmVyYV9lbnRyaWVzW2lkeF0ud2Zvcm1hdCA9IHdzdHIgKyAxOworIAkJfQorIAkgICAgICBlbHNlCisgCQl0aW1lLT5lcmFfZW50cmllc1tpZHhdLnduYW1lID0KK0BAIC01MzQsNyArNTM2LDE2IEBAIE5vIGRlZmluaXRpb24gZm9yICVzIGNhdGVnb3J5IGZvdW5kIiksICJMQ19USU1FIikpOworICAgaWYgKHRpbWUtPmRhdGVfZm10ID09IE5VTEwpCisgICAgIHRpbWUtPmRhdGVfZm10ID0gIiVhICViICVlICVIOiVNOiVTICVaICVZIjsKKyAgIGlmICh0aW1lLT53ZGF0ZV9mbXQgPT0gTlVMTCkKKy0gICAgdGltZS0+d2RhdGVfZm10ID0gKGNvbnN0IHVpbnQzMl90ICopIEwiJWEgJWIgJWUgJUg6JU06JVMgJVogJVkiOworKyAgICB7CisrICAgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHdkYXRlX2ZtdFtdID0KKysJeyAnJScsJ2EnLCcgJywKKysJICAnJScsJ2InLCcgJywKKysJICAnJScsJ2UnLCcgJywKKysJICAnJScsJ0gnLCc6JywnJScsJ00nLCc6JywnJScsJ1MnLCcgJywKKysJICAnJScsJ1onLCcgJywKKysJICAnJScsJ1knLDAgfTsKKysgICAgICB0aW1lLT53ZGF0ZV9mbXQgPSB3ZGF0ZV9mbXQ7CisrICAgIH0KKyB9CisgCisgCitkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xpbmVyZWFkZXIuYyBiL2xvY2FsZS9wcm9ncmFtcy9saW5lcmVhZGVyLmMKK2luZGV4IGI4ODVmNjUuLjBhZmI2MzEgMTAwNjQ0CistLS0gYS9sb2NhbGUvcHJvZ3JhbXMvbGluZXJlYWRlci5jCisrKysgYi9sb2NhbGUvcHJvZ3JhbXMvbGluZXJlYWRlci5jCitAQCAtNTk1LDcgKzU5NSw3IEBAIGdldF9zdHJpbmcgKHN0cnVjdCBsaW5lcmVhZGVyICpsciwgY29uc3Qgc3RydWN0IGNoYXJtYXBfdCAqY2hhcm1hcCwKKyB7CisgICBpbnQgcmV0dXJuX3dpZGVzdHIgPSBsci0+cmV0dXJuX3dpZGVzdHI7CisgICBjaGFyICpidWY7CistICB3Y2hhcl90ICpidWYyID0gTlVMTDsKKysgIHVpbnQzMl90ICpidWYyID0gTlVMTDsKKyAgIHNpemVfdCBidWZhY3Q7CisgICBzaXplX3QgYnVmbWF4ID0gNTY7CisgCitkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xvY2FsZWRlZi5jIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2FsZWRlZi5jCitpbmRleCA2YmVjZDlhLi44ZGRkMDgwIDEwMDY0NAorLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xvY2FsZWRlZi5jCisrKysgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jYWxlZGVmLmMKK0BAIC0xMTQsNiArMTE0LDcgQEAgdm9pZCAoKmFyZ3BfcHJvZ3JhbV92ZXJzaW9uX2hvb2spIChGSUxFICosIHN0cnVjdCBhcmdwX3N0YXRlICopID0gcHJpbnRfdmVyc2lvbjsKKyAjZGVmaW5lIE9QVF9MSVNUX0FSQ0hJVkUgMzA5CisgI2RlZmluZSBPUFRfTElUVExFX0VORElBTiA0MDAKKyAjZGVmaW5lIE9QVF9CSUdfRU5ESUFOIDQwMQorKyNkZWZpbmUgT1BUX1VJTlQzMl9BTElHTiA0MDIKKyAKKyAvKiBEZWZpbml0aW9ucyBvZiBhcmd1bWVudHMgZm9yIGFyZ3AgZnVuY3Rpb25zLiAgKi8KKyBzdGF0aWMgY29uc3Qgc3RydWN0IGFyZ3Bfb3B0aW9uIG9wdGlvbnNbXSA9CitAQCAtMTUwLDYgKzE1MSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXJncF9vcHRpb24gb3B0aW9uc1tdID0KKyAgICAgTl8oIkdlbmVyYXRlIGxpdHRsZS1lbmRpYW4gb3V0cHV0IikgfSwKKyAgIHsgImJpZy1lbmRpYW4iLCBPUFRfQklHX0VORElBTiwgTlVMTCwgMCwKKyAgICAgTl8oIkdlbmVyYXRlIGJpZy1lbmRpYW4gb3V0cHV0IikgfSwKKysgIHsgInVpbnQzMi1hbGlnbiIsIE9QVF9VSU5UMzJfQUxJR04sICJBTElHTk1FTlQiLCAwLAorKyAgICBOXygiU2V0IHRoZSB0YXJnZXQncyB1aW50MzJfdCBhbGlnbm1lbnQgaW4gYnl0ZXMgKGRlZmF1bHQgNCkiKSB9LAorICAgeyBOVUxMLCAwLCBOVUxMLCAwLCBOVUxMIH0KKyB9OworIAorQEAgLTIzOSwxMiArMjQyLDE0IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgICAgICBjdHlwZSBsb2NhbGUuICAoUDEwMDMuMiA0LjM1LjUuMikgICovCisgICBzZXRsb2NhbGUgKExDX0NUWVBFLCAiUE9TSVgiKTsKKyAKKysjaWZuZGVmIE5PX1NZU0NPTkYKKyAgIC8qIExvb2sgd2hldGhlciB0aGUgc3lzdGVtIHJlYWxseSBhbGxvd3MgbG9jYWxlIGRlZmluaXRpb25zLiAgUE9TSVgKKyAgICAgIGRlZmluZXMgZXJyb3IgY29kZSAzIGZvciB0aGlzIHNpdHVhdGlvbiBzbyBJIHRoaW5rIGl0IG11c3QgYmUKKyAgICAgIGEgZmF0YWwgZXJyb3IgKHNlZSBQMTAwMy4yIDQuMzUuOCkuICAqLworICAgaWYgKHN5c2NvbmYgKF9TQ18yX0xPQ0FMRURFRikgPCAwKQorICAgICBXSVRIX0NVUl9MT0NBTEUgKGVycm9yICgzLCAwLCBfKCJcCisgRkFUQUw6IHN5c3RlbSBkb2VzIG5vdCBkZWZpbmUgYF9QT1NJWDJfTE9DQUxFREVGJyIpKSk7CisrI2VuZGlmCisgCisgICAvKiBQcm9jZXNzIGNoYXJtYXAgZmlsZS4gICovCisgICBjaGFybWFwID0gY2hhcm1hcF9yZWFkIChjaGFybWFwX2ZpbGUsIHZlcmJvc2UsIDEsIGJlX3F1aWV0LCAxKTsKK0BAIC0zMzgsNiArMzQzLDkgQEAgcGFyc2Vfb3B0IChpbnQga2V5LCBjaGFyICphcmcsIHN0cnVjdCBhcmdwX3N0YXRlICpzdGF0ZSkKKyAgICAgY2FzZSBPUFRfQklHX0VORElBTjoKKyAgICAgICBzZXRfYmlnX2VuZGlhbiAodHJ1ZSk7CisgICAgICAgYnJlYWs7CisrICAgIGNhc2UgT1BUX1VJTlQzMl9BTElHTjoKKysgICAgICB1aW50MzJfYWxpZ25fbWFzayA9IHN0cnRvbCAoYXJnLCBOVUxMLCAwKSAtIDE7CisrICAgICAgYnJlYWs7CisgICAgIGNhc2UgJ2MnOgorICAgICAgIGZvcmNlX291dHB1dCA9IDE7CisgICAgICAgYnJlYWs7CitkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuYyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmMKK2luZGV4IDMyZjVjZDIuLjAyOTY3YjAgMTAwNjQ0CistLS0gYS9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5jCisrKysgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5jCitAQCAtNTQ0LDYgKzU0NCw5IEBAIGNvbXBhcmVfZmlsZXMgKGNvbnN0IGNoYXIgKmZpbGVuYW1lMSwgY29uc3QgY2hhciAqZmlsZW5hbWUyLCBzaXplX3Qgc2l6ZSwKKyAgICBtYWNoaW5lIHJ1bm5pbmcgbG9jYWxlZGVmLiAgKi8KKyBib29sIHN3YXBfZW5kaWFubmVzc19wOworIAorKy8qIFRoZSB0YXJnZXQncyB2YWx1ZSBvZiBfX2FsaWduX18odWludDMyX3QpIC0gMS4gICovCisrdW5zaWduZWQgaW50IHVpbnQzMl9hbGlnbl9tYXNrID0gMzsKKysKKyAvKiBXaGVuIGNhbGxlZCBvdXRzaWRlIGEgc3RhcnRfbG9jYWxlX3N0cnVjdHVyZS9lbmRfbG9jYWxlX3N0cnVjdHVyZQorICAgIG9yIHN0YXJ0X2xvY2FsZV9wcmVsdWRlL2VuZF9sb2NhbGVfcHJlbHVkZSBibG9jaywgcmVjb3JkIHRoYXQgdGhlCisgICAgbmV4dCBieXRlIGluIEZJTEUncyBvYnN0YWNrIHdpbGwgYmUgdGhlIGZpcnN0IGJ5dGUgb2YgYSBuZXcgZWxlbWVudC4KK0BAIC02MjEsNyArNjI0LDcgQEAgYWRkX2xvY2FsZV9zdHJpbmcgKHN0cnVjdCBsb2NhbGVfZmlsZSAqZmlsZSwgY29uc3QgY2hhciAqc3RyaW5nKQorIHZvaWQKKyBhZGRfbG9jYWxlX3dzdHJpbmcgKHN0cnVjdCBsb2NhbGVfZmlsZSAqZmlsZSwgY29uc3QgdWludDMyX3QgKnN0cmluZykKKyB7CistICBhZGRfbG9jYWxlX3VpbnQzMl9hcnJheSAoZmlsZSwgc3RyaW5nLCB3Y3NsZW4gKChjb25zdCB3Y2hhcl90ICopIHN0cmluZykgKyAxKTsKKysgIGFkZF9sb2NhbGVfdWludDMyX2FycmF5IChmaWxlLCBzdHJpbmcsIHdjc2xlbl91aW50MzIgKHN0cmluZykgKyAxKTsKKyB9CisgCisgLyogUmVjb3JkIHRoYXQgRklMRSdzIG5leHQgZWxlbWVudCBpcyB0aGUgMzItYml0IGludGVnZXIgVkFMVUUuICAqLworZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmggYi9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5oCitpbmRleCBhM2RkOTA0Li4yYzc3NjNhIDEwMDY0NAorLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuaAorKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuaAorQEAgLTcxLDYgKzcxLDggQEAgZXh0ZXJuIHZvaWQgd3JpdGVfYWxsX2NhdGVnb3JpZXMgKHN0cnVjdCBsb2NhbGVkZWZfdCAqZGVmaW5pdGlvbnMsCisgCisgZXh0ZXJuIGJvb2wgc3dhcF9lbmRpYW5uZXNzX3A7CisgCisrZXh0ZXJuIHVuc2lnbmVkIGludCB1aW50MzJfYWxpZ25fbWFzazsKKysKKyAvKiBDaGFuZ2UgdGhlIG91dHB1dCB0byBiZSBiaWctZW5kaWFuIGlmIEJJR19FTkRJQU4gaXMgdHJ1ZSBhbmQKKyAgICBsaXR0bGUtZW5kaWFuIG90aGVyd2lzZS4gICovCisgc3RhdGljIGlubGluZSB2b2lkCitAQCAtODksNyArOTEsOCBAQCBtYXliZV9zd2FwX3VpbnQzMiAodWludDMyX3QgdmFsdWUpCisgfQorIAorIC8qIExpa2V3aXNlLCBidXQgbXVuZ2UgYW4gYXJyYXkgb2YgTiB1aW50MzJfdHMgc3RhcnRpbmcgYXQgQVJSQVkuICAqLworLXN0YXRpYyBpbmxpbmUgdm9pZAorK3N0YXRpYyB2b2lkCisrX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpCisgbWF5YmVfc3dhcF91aW50MzJfYXJyYXkgKHVpbnQzMl90ICphcnJheSwgc2l6ZV90IG4pCisgeworICAgaWYgKHN3YXBfZW5kaWFubmVzc19wKQorQEAgLTk5LDcgKzEwMiw4IEBAIG1heWJlX3N3YXBfdWludDMyX2FycmF5ICh1aW50MzJfdCAqYXJyYXksIHNpemVfdCBuKQorIAorIC8qIExpa2UgbWF5YmVfc3dhcF91aW50MzJfYXJyYXksIGJ1dCB0aGUgYXJyYXkgb2YgTiBlbGVtZW50cyBpcyBhdAorICAgIHRoZSBlbmQgb2YgT0JTVEFDSydzIGN1cnJlbnQgb2JqZWN0LiAgKi8KKy1zdGF0aWMgaW5saW5lIHZvaWQKKytzdGF0aWMgdm9pZAorK19fYXR0cmlidXRlX18gKCh1bnVzZWQpKQorIG1heWJlX3N3YXBfdWludDMyX29ic3RhY2sgKHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrLCBzaXplX3QgbikKKyB7CisgICBtYXliZV9zd2FwX3VpbnQzMl9hcnJheSAoKHVpbnQzMl90ICopIG9ic3RhY2tfbmV4dF9mcmVlIChvYnN0YWNrKSAtIG4sIG4pOworQEAgLTI3Niw0ICsyODAsNTUgQEAgZXh0ZXJuIHZvaWQgaWRlbnRpZmljYXRpb25fb3V0cHV0IChzdHJ1Y3QgbG9jYWxlZGVmX3QgKmxvY2FsZSwKKyAJCQkJICAgY29uc3Qgc3RydWN0IGNoYXJtYXBfdCAqY2hhcm1hcCwKKyAJCQkJICAgY29uc3QgY2hhciAqb3V0cHV0X3BhdGgpOworIAorK3N0YXRpYyBzaXplX3Qgd2NzbGVuX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnN0cikgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpOworK3N0YXRpYyB1aW50MzJfdCAqIHdtZW1jcHlfdWludDMyICh1aW50MzJfdCAqczEsIGNvbnN0IHVpbnQzMl90ICpzMiwgc2l6ZV90IG4pIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKTsKKytzdGF0aWMgdWludDMyX3QgKiB3Y3NjaHJfdWludDMyIChjb25zdCB1aW50MzJfdCAqcywgdWludDMyX3QgY2gpIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKTsKKytzdGF0aWMgaW50IHdjc2NtcF91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzMSwgY29uc3QgdWludDMyX3QgKnMyKSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSk7Cisrc3RhdGljIGludCB3bWVtY21wX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnMxLCBjb25zdCB1aW50MzJfdCAqczIsIHNpemVfdCBuKSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSk7CisrCisrc3RhdGljIHNpemVfdAorK3djc2xlbl91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzdHIpCisreworKyAgc2l6ZV90IGxlbiA9IDA7CisrICB3aGlsZSAoc3RyW2xlbl0gIT0gMCkKKysgICAgbGVuKys7CisrICByZXR1cm4gbGVuOworK30KKysKKytzdGF0aWMgIGludAorK3dtZW1jbXBfdWludDMyIChjb25zdCB1aW50MzJfdCAqczEsIGNvbnN0IHVpbnQzMl90ICpzMiwgc2l6ZV90IG4pCisreworKyAgd2hpbGUgKG4tLSAhPSAwKQorKyAgICB7CisrICAgICAgaW50IGRpZmYgPSAqczErKyAtICpzMisrOworKyAgICAgIGlmIChkaWZmICE9IDApCisrCXJldHVybiBkaWZmOworKyAgICB9CisrICByZXR1cm4gMDsKKyt9CisrCisrc3RhdGljIGludAorK3djc2NtcF91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzMSwgY29uc3QgdWludDMyX3QgKnMyKQorK3sKKysgIHdoaWxlICgqczEgIT0gMCAmJiAqczEgPT0gKnMyKQorKyAgICBzMSsrLCBzMisrOworKyAgcmV0dXJuICpzMSAtICpzMjsKKyt9CisrCisrc3RhdGljIHVpbnQzMl90ICoKKyt3bWVtY3B5X3VpbnQzMiAodWludDMyX3QgKnMxLCBjb25zdCB1aW50MzJfdCAqczIsIHNpemVfdCBuKQorK3sKKysgIHJldHVybiBtZW1jcHkgKHMxLCBzMiwgbiAqIHNpemVvZiAodWludDMyX3QpKTsKKyt9CisrCisrc3RhdGljIHVpbnQzMl90ICoKKyt3Y3NjaHJfdWludDMyIChjb25zdCB1aW50MzJfdCAqcywgdWludDMyX3QgY2gpCisreworKyAgZG8KKysgICAgaWYgKCpzID09IGNoKQorKyAgICAgIHJldHVybiAodWludDMyX3QgKikgczsKKysgIHdoaWxlICgqcysrICE9IDApOworKyAgcmV0dXJuIDA7CisrfQorKworICNlbmRpZiAvKiBsb2NmaWxlLmggKi8KK2RpZmYgLS1naXQgYS9sb2NhbGUvc2V0bG9jYWxlLmMgYi9sb2NhbGUvc2V0bG9jYWxlLmMKK2luZGV4IDY5YjMxNDEuLjFjZWYwYmUgMTAwNjQ0CistLS0gYS9sb2NhbGUvc2V0bG9jYWxlLmMKKysrKyBiL2xvY2FsZS9zZXRsb2NhbGUuYworQEAgLTY0LDM2ICs2NCw2IEBAIHN0YXRpYyBjaGFyICpjb25zdCBfbmxfY3VycmVudF91c2VkW10gPQorICNlbmRpZgorIAorIAorLS8qIERlZmluZSBhbiBhcnJheSBvZiBjYXRlZ29yeSBuYW1lcyAoYWxzbyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZXMpLiAgKi8KKy1jb25zdCB1bmlvbiBjYXRuYW1lc3RyX3QgX25sX2NhdGVnb3J5X25hbWVzIGF0dHJpYnV0ZV9oaWRkZW4gPQorLSAgeworLSAgICB7CistI2RlZmluZSBERUZJTkVfQ0FURUdPUlkoY2F0ZWdvcnksIGNhdGVnb3J5X25hbWUsIGl0ZW1zLCBhKSBcCistICAgICAgY2F0ZWdvcnlfbmFtZSwKKy0jaW5jbHVkZSAiY2F0ZWdvcmllcy5kZWYiCistI3VuZGVmIERFRklORV9DQVRFR09SWQorLSAgICB9CistICB9OworLQorLWNvbnN0IHVpbnQ4X3QgX25sX2NhdGVnb3J5X25hbWVfaWR4c1tfX0xDX0xBU1RdIGF0dHJpYnV0ZV9oaWRkZW4gPQorLSAgeworLSNkZWZpbmUgREVGSU5FX0NBVEVHT1JZKGNhdGVnb3J5LCBjYXRlZ29yeV9uYW1lLCBpdGVtcywgYSkgXAorLSAgICBbY2F0ZWdvcnldID0gb2Zmc2V0b2YgKHVuaW9uIGNhdG5hbWVzdHJfdCwgQ0FUTkFNRU1GIChfX0xJTkVfXykpLAorLSNpbmNsdWRlICJjYXRlZ29yaWVzLmRlZiIKKy0jdW5kZWYgREVGSU5FX0NBVEVHT1JZCistICB9OworLQorLS8qIEFuIGFycmF5IG9mIHRoZWlyIGxlbmd0aHMsIGZvciBjb252ZW5pZW5jZS4gICovCistY29uc3QgdWludDhfdCBfbmxfY2F0ZWdvcnlfbmFtZV9zaXplc1tdIGF0dHJpYnV0ZV9oaWRkZW4gPQorLSAgeworLSNkZWZpbmUgREVGSU5FX0NBVEVHT1JZKGNhdGVnb3J5LCBjYXRlZ29yeV9uYW1lLCBpdGVtcywgYSkgXAorLSAgICBbY2F0ZWdvcnldID0gc2l6ZW9mIChjYXRlZ29yeV9uYW1lKSAtIDEsCistI2luY2x1ZGUgImNhdGVnb3JpZXMuZGVmIgorLSN1bmRlZglERUZJTkVfQ0FURUdPUlkKKy0gICAgW0xDX0FMTF0gPSBzaXplb2YgKCJMQ19BTEwiKSAtIDEKKy0gIH07CistCistCisgI2lmZGVmIE5MX0NVUlJFTlRfSU5ESVJFQ1QKKyAjIGRlZmluZSBXRUFLX1BPU1RMT0FEKHBvc3Rsb2FkKSB3ZWFrX2V4dGVybiAocG9zdGxvYWQpCisgI2Vsc2UKKy0tIAorMi44LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjUtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjUtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkNjBkMDIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNS1EZWZpbmUtRFVNTVlfTE9DQUxFX1QtaWYtbm90LWRlZmluZWQucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSA4OWVjMjUyOTBkMzQ0MTNjZTVjOGJhNmMzNzhlMzFkYmFlM2EzN2MwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMjAgQXByIDIwMTYgMjE6MTE6MDAgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyNS8yNV0gRGVmaW5lIERVTU1ZX0xPQ0FMRV9UIGlmIG5vdCBkZWZpbmVkCisKK1RoaXMgaXMgYSBoYWNrIHRvIGZpeCBidWlsZGluZyB0aGUgbG9jYWxlIGJpdHMgb24gYW4gb2xkZXIKK0NlbnRPcyA1LlggbWFjaGluZQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW290aGVyXQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbG9jYWxlL3Byb2dyYW1zL2NvbmZpZy5oIHwgMyArKysKKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvY29uZmlnLmggYi9sb2NhbGUvcHJvZ3JhbXMvY29uZmlnLmgKK2luZGV4IGY2MDYzNjUuLjBlNWY4YzMgMTAwNjQ0CistLS0gYS9sb2NhbGUvcHJvZ3JhbXMvY29uZmlnLmgKKysrKyBiL2xvY2FsZS9wcm9ncmFtcy9jb25maWcuaAorQEAgLTE5LDYgKzE5LDkgQEAKKyAjaWZuZGVmIF9MRF9DT05GSUdfSAorICNkZWZpbmUgX0xEX0NPTkZJR19ICTEKKyAKKysjaWZuZGVmIERVTU1ZX0xPQ0FMRV9UCisrI2RlZmluZSBEVU1NWV9MT0NBTEVfVAorKyNlbmRpZgorIC8qIFVzZSB0aGUgaW50ZXJuYWwgdGV4dGRvbWFpbiB1c2VkIGZvciBsaWJjIG1lc3NhZ2VzLiAgKi8KKyAjZGVmaW5lIFBBQ0tBR0UgX2xpYmNfaW50bF9kb21haW5uYW1lCisgI2lmbmRlZiBWRVJTSU9OCistLSAKKzIuOC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI1LWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI1LWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjhkMTExOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNS1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NjYgKzAsMCBAQAotRnJvbSBhNTY5NTkzMGFlYzY4YjNmNTAxZTQ3NWQ4NzA1Y2RkYmI2M2Y2OTVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDE6MzM6NDkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyNS8yNV0gZWdsaWJjOiBGb3J3YXJkIHBvcnQgY3Jvc3MgbG9jYWxlIGdlbmVyYXRpb24gc3VwcG9ydAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxvY2FsZS9NYWtlZmlsZSAgICAgICAgICAgICAgIHwgIDMgKystCi0gbG9jYWxlL2NhdG5hbWVzLmMgICAgICAgICAgICAgfCA0OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGxvY2FsZS9sb2NhbGVpbmZvLmggICAgICAgICAgIHwgIDIgKy0KLSBsb2NhbGUvcHJvZ3JhbXMvY2hhcm1hcC1kaXIuYyB8ICA2ICsrKysrCi0gbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYyAgfCAxNyArKysrKystLS0tLS0tCi0gbG9jYWxlL3Byb2dyYW1zL2xkLWN0eXBlLmMgICAgfCAyNyArKysrKysrKysrLS0tLS0tLS0tLQotIGxvY2FsZS9wcm9ncmFtcy9sZC10aW1lLmMgICAgIHwgMzEgKysrKysrKysrKysrKysrLS0tLS0tLS0KLSBsb2NhbGUvcHJvZ3JhbXMvbGluZXJlYWRlci5jICB8ICAyICstCi0gbG9jYWxlL3Byb2dyYW1zL2xvY2FsZWRlZi5jICAgfCAgOCArKysrKysKLSBsb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5jICAgICB8ICA1ICsrKy0KLSBsb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5oICAgICB8IDU5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KLSBsb2NhbGUvc2V0bG9jYWxlLmMgICAgICAgICAgICB8IDMwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxMiBmaWxlcyBjaGFuZ2VkLCAxNjkgaW5zZXJ0aW9ucygrKSwgNjkgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxvY2FsZS9jYXRuYW1lcy5jCi0KLWRpZmYgLS1naXQgYS9sb2NhbGUvTWFrZWZpbGUgYi9sb2NhbGUvTWFrZWZpbGUKLWluZGV4IDc1YWZiZTEuLmQzMjUyM2IgMTAwNjQ0Ci0tLS0gYS9sb2NhbGUvTWFrZWZpbGUKLSsrKyBiL2xvY2FsZS9NYWtlZmlsZQotQEAgLTI1LDcgKzI1LDggQEAgaW5jbHVkZSAuLi9NYWtlY29uZmlnCi0gaGVhZGVycwkJPSBsb2NhbGUuaCBiaXRzL2xvY2FsZS5oIGxhbmdpbmZvLmggeGxvY2FsZS5oCi0gcm91dGluZXMJPSBzZXRsb2NhbGUgZmluZGxvY2FsZSBsb2FkbG9jYWxlIGxvYWRhcmNoaXZlIFwKLSAJCSAgbG9jYWxlY29udiBubF9sYW5naW5mbyBubF9sYW5naW5mb19sIG1iX2N1cl9tYXggXAotLQkJICBuZXdsb2NhbGUgZHVwbG9jYWxlIGZyZWVsb2NhbGUgdXNlbG9jYWxlCi0rCQkgIG5ld2xvY2FsZSBkdXBsb2NhbGUgZnJlZWxvY2FsZSB1c2Vsb2NhbGUgXAotKwkJICBjYXRuYW1lcwotIHRlc3RzCQk9IHRzdC1DLWxvY2FsZSB0c3QtbG9jbmFtZSB0c3QtZHVwbG9jYWxlCi0gY2F0ZWdvcmllcwk9IGN0eXBlIG1lc3NhZ2VzIG1vbmV0YXJ5IG51bWVyaWMgdGltZSBwYXBlciBuYW1lIFwKLSAJCSAgYWRkcmVzcyB0ZWxlcGhvbmUgbWVhc3VyZW1lbnQgaWRlbnRpZmljYXRpb24gY29sbGF0ZQotZGlmZiAtLWdpdCBhL2xvY2FsZS9jYXRuYW1lcy5jIGIvbG9jYWxlL2NhdG5hbWVzLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi45ZmFkMzU3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9sb2NhbGUvY2F0bmFtZXMuYwotQEAgLTAsMCArMSw0OCBAQAotKy8qIENvcHlyaWdodCAoQykgMjAwNiAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlICJsb2NhbGVpbmZvLmgiCi0rCi0rLyogRGVmaW5lIGFuIGFycmF5IG9mIGNhdGVnb3J5IG5hbWVzIChhbHNvIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lcykuICAqLwotK2NvbnN0IHVuaW9uIGNhdG5hbWVzdHJfdCBfbmxfY2F0ZWdvcnlfbmFtZXMgYXR0cmlidXRlX2hpZGRlbiA9Ci0rICB7Ci0rICAgIHsKLSsjZGVmaW5lIERFRklORV9DQVRFR09SWShjYXRlZ29yeSwgY2F0ZWdvcnlfbmFtZSwgaXRlbXMsIGEpIFwKLSsgICAgICBjYXRlZ29yeV9uYW1lLAotKyNpbmNsdWRlICJjYXRlZ29yaWVzLmRlZiIKLSsjdW5kZWYgREVGSU5FX0NBVEVHT1JZCi0rICAgIH0KLSsgIH07Ci0rCi0rY29uc3QgdWludDhfdCBfbmxfY2F0ZWdvcnlfbmFtZV9pZHhzW19fTENfTEFTVF0gYXR0cmlidXRlX2hpZGRlbiA9Ci0rICB7Ci0rI2RlZmluZSBERUZJTkVfQ0FURUdPUlkoY2F0ZWdvcnksIGNhdGVnb3J5X25hbWUsIGl0ZW1zLCBhKSBcCi0rICAgIFtjYXRlZ29yeV0gPSBvZmZzZXRvZiAodW5pb24gY2F0bmFtZXN0cl90LCBDQVROQU1FTUYgKF9fTElORV9fKSksCi0rI2luY2x1ZGUgImNhdGVnb3JpZXMuZGVmIgotKyN1bmRlZiBERUZJTkVfQ0FURUdPUlkKLSsgIH07Ci0rCi0rLyogQW4gYXJyYXkgb2YgdGhlaXIgbGVuZ3RocywgZm9yIGNvbnZlbmllbmNlLiAgKi8KLStjb25zdCB1aW50OF90IF9ubF9jYXRlZ29yeV9uYW1lX3NpemVzW10gYXR0cmlidXRlX2hpZGRlbiA9Ci0rICB7Ci0rI2RlZmluZSBERUZJTkVfQ0FURUdPUlkoY2F0ZWdvcnksIGNhdGVnb3J5X25hbWUsIGl0ZW1zLCBhKSBcCi0rICAgIFtjYXRlZ29yeV0gPSBzaXplb2YgKGNhdGVnb3J5X25hbWUpIC0gMSwKLSsjaW5jbHVkZSAiY2F0ZWdvcmllcy5kZWYiCi0rI3VuZGVmCURFRklORV9DQVRFR09SWQotKyAgICBbTENfQUxMXSA9IHNpemVvZiAoIkxDX0FMTCIpIC0gMQotKyAgfTsKLWRpZmYgLS1naXQgYS9sb2NhbGUvbG9jYWxlaW5mby5oIGIvbG9jYWxlL2xvY2FsZWluZm8uaAotaW5kZXggNzg5ZGE0NC4uNGFjOTI0OSAxMDA2NDQKLS0tLSBhL2xvY2FsZS9sb2NhbGVpbmZvLmgKLSsrKyBiL2xvY2FsZS9sb2NhbGVpbmZvLmgKLUBAIC0yMjQsNyArMjI0LDcgQEAgX19saWJjX3RzZF9kZWZpbmUgKGV4dGVybiwgX19sb2NhbGVfdCwgTE9DQUxFKQotICAgIHVudXNlZC4gIFdlIGNhbiBtYW5hZ2UgdGhpcyBwbGF5aW5nIHNvbWUgdHJpY2tzIHdpdGggd2VhayByZWZlcmVuY2VzLgotICAgIEJ1dCB3aXRoIHRocmVhZC1sb2NhbCBsb2NhbGUgc2V0dGluZ3MsIGl0IGJlY29tZXMgcXVpdGUgdW5nYWlubHkgdW5sZXNzCi0gICAgd2UgY2FuIHVzZSBfX3RocmVhZCB2YXJpYWJsZXMuICBTbyBvbmx5IGluIHRoYXQgY2FzZSBkbyB3ZSBhdHRlbXB0IHRoaXMuICAqLwotLSNpZm5kZWYgU0hBUkVECi0rI2lmICFkZWZpbmVkIFNIQVJFRCAmJiAhZGVmaW5lZCBJTl9HTElCQ19MT0NBTEVERUYKLSAjIGluY2x1ZGUgPHRscy5oPgotICMgZGVmaW5lIE5MX0NVUlJFTlRfSU5ESVJFQ1QJMQotICNlbmRpZgotZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9jaGFybWFwLWRpci5jIGIvbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMKLWluZGV4IGNmN2FkZWEuLmVmM2I4MTEgMTAwNjQ0Ci0tLS0gYS9sb2NhbGUvcHJvZ3JhbXMvY2hhcm1hcC1kaXIuYwotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMKLUBAIC0xOSw3ICsxOSw5IEBACi0gI2luY2x1ZGUgPGVycm9yLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGxpYmludGwuaD4KLSsjaWZuZGVmIE5PX1VOQ09NUFJFU1MKLSAjaW5jbHVkZSA8c3Bhd24uaD4KLSsjZW5kaWYKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotQEAgLTE1Niw2ICsxNTgsNyBAQCBjaGFybWFwX2Nsb3NlZGlyIChDSEFSTUFQX0RJUiAqY2RpcikKLSAgIHJldHVybiBjbG9zZWRpciAoZGlyKTsKLSB9Ci0gCi0rI2lmbmRlZiBOT19VTkNPTVBSRVNTCi0gLyogQ3JlYXRlcyBhIHN1YnByb2Nlc3MgZGVjb21wcmVzc2luZyB0aGUgZ2l2ZW4gcGF0aG5hbWUsIGFuZCByZXR1cm5zCi0gICAgYSBzdHJlYW0gcmVhZGluZyBpdHMgb3V0cHV0ICh0aGUgZGVjb21wcmVzc2VkIGRhdGEpLiAgKi8KLSBzdGF0aWMKLUBAIC0yMDQsNiArMjA3LDcgQEAgZm9wZW5fdW5jb21wcmVzc2VkIChjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3QgY2hhciAqY29tcHJlc3NvcikKLSAgICAgfQotICAgcmV0dXJuIE5VTEw7Ci0gfQotKyNlbmRpZgotIAotIC8qIE9wZW5zIGEgY2hhcm1hcCBmb3IgcmVhZGluZywgZ2l2ZW4gaXRzIG5hbWUgKG5vdCBhbiBhbGlhcyBuYW1lKS4gICovCi0gRklMRSAqCi1AQCAtMjI2LDYgKzIzMCw3IEBAIGNoYXJtYXBfb3BlbiAoY29uc3QgY2hhciAqZGlyZWN0b3J5LCBjb25zdCBjaGFyICpuYW1lKQotICAgaWYgKHN0cmVhbSAhPSBOVUxMKQotICAgICByZXR1cm4gc3RyZWFtOwotIAotKyNpZm5kZWYgTk9fVU5DT01QUkVTUwotICAgbWVtY3B5IChwLCAiLmd6IiwgNCk7Ci0gICBzdHJlYW0gPSBmb3Blbl91bmNvbXByZXNzZWQgKHBhdGhuYW1lLCAiZ3ppcCIpOwotICAgaWYgKHN0cmVhbSAhPSBOVUxMKQotQEAgLTIzNSw2ICsyNDAsNyBAQCBjaGFybWFwX29wZW4gKGNvbnN0IGNoYXIgKmRpcmVjdG9yeSwgY29uc3QgY2hhciAqbmFtZSkKLSAgIHN0cmVhbSA9IGZvcGVuX3VuY29tcHJlc3NlZCAocGF0aG5hbWUsICJiemlwMiIpOwotICAgaWYgKHN0cmVhbSAhPSBOVUxMKQotICAgICByZXR1cm4gc3RyZWFtOwotKyNlbmRpZgotIAotICAgcmV0dXJuIE5VTEw7Ci0gfQotZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sZC1jb2xsYXRlLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtY29sbGF0ZS5jCi1pbmRleCBkYzBmZTMwLi4zYzg4YzZkIDEwMDY0NAotLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYwotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYwotQEAgLTM1MCw3ICszNTAsNyBAQCBuZXdfZWxlbWVudCAoc3RydWN0IGxvY2FsZV9jb2xsYXRlX3QgKmNvbGxhdGUsIGNvbnN0IGNoYXIgKm1icywgc2l6ZV90IG1ic2xlbiwKLSAgICAgfQotICAgaWYgKHdjcyAhPSBOVUxMKQotICAgICB7Ci0tICAgICAgc2l6ZV90IG53Y3MgPSB3Y3NsZW4gKCh3Y2hhcl90ICopIHdjcyk7Ci0rICAgICAgc2l6ZV90IG53Y3MgPSB3Y3NsZW5fdWludDMyICh3Y3MpOwotICAgICAgIHVpbnQzMl90IHplcm8gPSAwOwotICAgICAgIC8qIEhhbmRsZSA8VTAwMDA+IGFzIGEgc2luZ2xlIGNoYXJhY3Rlci4gICovCi0gICAgICAgaWYgKG53Y3MgPT0gMCkKLUBAIC0xNzc2LDggKzE3NzYsNyBAQCBzeW1ib2wgYCVzJyBoYXMgdGhlIHNhbWUgZW5jb2RpbmcgYXMiKSwgKCplcHRyKS0+bmFtZSk7Ci0gCi0gCSAgICAgIGlmICgoKmVwdHIpLT5ud2NzID09IHJ1bnAtPm53Y3MpCi0gCQl7Ci0tCQkgIGludCBjID0gd21lbWNtcCAoKHdjaGFyX3QgKikgKCplcHRyKS0+d2NzLAotLQkJCQkgICAod2NoYXJfdCAqKSBydW5wLT53Y3MsIHJ1bnAtPm53Y3MpOwotKwkJICBpbnQgYyA9IHdtZW1jbXBfdWludDMyICgoKmVwdHIpLT53Y3MsIHJ1bnAtPndjcywgcnVucC0+bndjcyk7Ci0gCi0gCQkgIGlmIChjID09IDApCi0gCQkgICAgewotQEAgLTIwMTAsOSArMjAwOSw5IEBAIGFkZF90b190YWJsZXdjICh1aW50MzJfdCBjaCwgc3RydWN0IGVsZW1lbnRfdCAqcnVucCkKLSAJICAgICBvbmUgY29uc2VjdXRpdmUgZW50cnkuICAqLwotIAkgIGlmIChydW5wLT53Y25leHQgIT0gTlVMTAotIAkgICAgICAmJiBydW5wLT5ud2NzID09IHJ1bnAtPndjbmV4dC0+bndjcwotLQkgICAgICAmJiB3bWVtY21wICgod2NoYXJfdCAqKSBydW5wLT53Y3MsCi0tCQkJICAod2NoYXJfdCAqKXJ1bnAtPndjbmV4dC0+d2NzLAotLQkJCSAgcnVucC0+bndjcyAtIDEpID09IDAKLSsJICAgICAgJiYgd21lbWNtcF91aW50MzIgKHJ1bnAtPndjcywKLSsJCQkJIHJ1bnAtPndjbmV4dC0+d2NzLAotKwkJCQkgcnVucC0+bndjcyAtIDEpID09IDAKLSAJICAgICAgJiYgKHJ1bnAtPndjc1tydW5wLT5ud2NzIC0gMV0KLSAJCSAgPT0gcnVucC0+d2NuZXh0LT53Y3NbcnVucC0+bndjcyAtIDFdICsgMSkpCi0gCSAgICB7Ci1AQCAtMjAzNiw5ICsyMDM1LDkgQEAgYWRkX3RvX3RhYmxld2MgKHVpbnQzMl90IGNoLCBzdHJ1Y3QgZWxlbWVudF90ICpydW5wKQotIAkJcnVucCA9IHJ1bnAtPndjbmV4dDsKLSAJICAgICAgd2hpbGUgKHJ1bnAtPndjbmV4dCAhPSBOVUxMCi0gCQkgICAgICYmIHJ1bnAtPm53Y3MgPT0gcnVucC0+d2NuZXh0LT5ud2NzCi0tCQkgICAgICYmIHdtZW1jbXAgKCh3Y2hhcl90ICopIHJ1bnAtPndjcywKLS0JCQkJICh3Y2hhcl90ICopcnVucC0+d2NuZXh0LT53Y3MsCi0tCQkJCSBydW5wLT5ud2NzIC0gMSkgPT0gMAotKwkJICAgICAmJiB3bWVtY21wX3VpbnQzMiAocnVucC0+d2NzLAotKwkJCQkJcnVucC0+d2NuZXh0LT53Y3MsCi0rCQkJCQlydW5wLT5ud2NzIC0gMSkgPT0gMAotIAkJICAgICAmJiAocnVucC0+d2NzW3J1bnAtPm53Y3MgLSAxXQotIAkJCSA9PSBydW5wLT53Y25leHQtPndjc1tydW5wLT5ud2NzIC0gMV0gKyAxKSk7Ci0gCi1kaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xkLWN0eXBlLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtY3R5cGUuYwotaW5kZXggM2Y0NjRlZi4uYjdiNmI1MSAxMDA2NDQKLS0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sZC1jdHlwZS5jCi0rKysgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtY3R5cGUuYwotQEAgLTkyNiw3ICs5MjYsNyBAQCBjdHlwZV9vdXRwdXQgKHN0cnVjdCBsb2NhbGVkZWZfdCAqbG9jYWxlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAotICAgYWxsb2NhdGVfYXJyYXlzIChjdHlwZSwgY2hhcm1hcCwgY3R5cGUtPnJlcGVydG9pcmUpOwotIAotICAgZGVmYXVsdF9taXNzaW5nX2xlbiA9IChjdHlwZS0+ZGVmYXVsdF9taXNzaW5nCi0tCQkJID8gd2NzbGVuICgod2NoYXJfdCAqKSBjdHlwZS0+ZGVmYXVsdF9taXNzaW5nKQotKwkJCSA/IHdjc2xlbl91aW50MzIgKGN0eXBlLT5kZWZhdWx0X21pc3NpbmcpCi0gCQkJIDogMCk7Ci0gCi0gICBpbml0X2xvY2FsZV9kYXRhICgmZmlsZSwgbmVsZW1zKTsKLUBAIC0xOTM3LDcgKzE5MzcsNyBAQCByZWFkX3RyYW5zbGl0X2VudHJ5IChzdHJ1Y3QgbGluZXJlYWRlciAqbGRmaWxlLCBzdHJ1Y3QgbG9jYWxlX2N0eXBlX3QgKmN0eXBlLAotIAkgICAgaWdub3JlID0gMTsKLSAJICBlbHNlCi0gCSAgICAvKiBUaGlzIHZhbHVlIGlzIHVzYWJsZS4gICovCi0tCSAgICBvYnN0YWNrX2dyb3cgKG9iLCB0b193c3RyLCB3Y3NsZW4gKCh3Y2hhcl90ICopIHRvX3dzdHIpICogNCk7Ci0rCSAgICBvYnN0YWNrX2dyb3cgKG9iLCB0b193c3RyLCB3Y3NsZW5fdWludDMyICh0b193c3RyKSAqIDQpOwotIAotIAkgIGZpcnN0ID0gMDsKLSAJfQotQEAgLTI0NzEsOCArMjQ3MSw4IEBAIHdpdGggY2hhcmFjdGVyIGNvZGUgcmFuZ2UgdmFsdWVzIG9uZSBtdXN0IHVzZSB0aGUgYWJzb2x1dGUgZWxsaXBzaXMgYC4uLiciKSk7Ci0gCSAgICB9Ci0gCi0gCWhhbmRsZV90b2tfZGlnaXQ6Ci0tCSAgY2xhc3NfYml0ID0gX0lTd2RpZ2l0OwotLQkgIGNsYXNzMjU2X2JpdCA9IF9JU2RpZ2l0OwotKwkgIGNsYXNzX2JpdCA9IEJJVHcgKHRva19kaWdpdCk7Ci0rCSAgY2xhc3MyNTZfYml0ID0gQklUICh0b2tfZGlnaXQpOwotIAkgIGhhbmRsZV9kaWdpdHMgPSAxOwotIAkgIGdvdG8gcmVhZF9jaGFyY2xhc3M7Ci0gCi1AQCAtMzkyOSw4ICszOTI5LDcgQEAgYWxsb2NhdGVfYXJyYXlzIChzdHJ1Y3QgbG9jYWxlX2N0eXBlX3QgKmN0eXBlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAotIAotIAkgIHdoaWxlIChpZHggPCBudW1iZXIpCi0gCSAgICB7Ci0tCSAgICAgIGludCByZXMgPSB3Y3NjbXAgKChjb25zdCB3Y2hhcl90ICopIHNvcnRlZFtpZHhdLT5mcm9tLAotLQkJCQkoY29uc3Qgd2NoYXJfdCAqKSBydW5wLT5mcm9tKTsKLSsJICAgICAgaW50IHJlcyA9IHdjc2NtcF91aW50MzIgKHNvcnRlZFtpZHhdLT5mcm9tLCBydW5wLT5mcm9tKTsKLSAJICAgICAgaWYgKHJlcyA9PSAwKQotIAkJewotIAkJICByZXBsYWNlID0gMTsKLUBAIC0zOTY3LDExICszOTY2LDExIEBAIGFsbG9jYXRlX2FycmF5cyAoc3RydWN0IGxvY2FsZV9jdHlwZV90ICpjdHlwZSwgY29uc3Qgc3RydWN0IGNoYXJtYXBfdCAqY2hhcm1hcCwKLSAgICAgICBmb3IgKHNpemVfdCBjbnQgPSAwOyBjbnQgPCBudW1iZXI7ICsrY250KQotIAl7Ci0gCSAgc3RydWN0IHRyYW5zbGl0X3RvX3QgKnNydW5wOwotLQkgIGZyb21fbGVuICs9IHdjc2xlbiAoKGNvbnN0IHdjaGFyX3QgKikgc29ydGVkW2NudF0tPmZyb20pICsgMTsKLSsJICBmcm9tX2xlbiArPSB3Y3NsZW5fdWludDMyIChzb3J0ZWRbY250XS0+ZnJvbSkgKyAxOwotIAkgIHNydW5wID0gc29ydGVkW2NudF0tPnRvOwotIAkgIHdoaWxlIChzcnVucCAhPSBOVUxMKQotIAkgICAgewotLQkgICAgICB0b19sZW4gKz0gd2NzbGVuICgoY29uc3Qgd2NoYXJfdCAqKSBzcnVucC0+c3RyKSArIDE7Ci0rCSAgICAgIHRvX2xlbiArPSB3Y3NsZW5fdWludDMyIChzcnVucC0+c3RyKSArIDE7Ci0gCSAgICAgIHNydW5wID0gc3J1bnAtPm5leHQ7Ci0gCSAgICB9Ci0gCSAgLyogUGx1cyBvbmUgZm9yIHRoZSBleHRyYSBOVUwgY2hhcmFjdGVyIG1hcmtpbmcgdGhlIGVuZCBvZgotQEAgLTM5OTUsMTggKzM5OTQsMTggQEAgYWxsb2NhdGVfYXJyYXlzIChzdHJ1Y3QgbG9jYWxlX2N0eXBlX3QgKmN0eXBlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAotIAkgIGN0eXBlLT50cmFuc2xpdF9mcm9tX2lkeFtjbnRdID0gZnJvbV9sZW47Ci0gCSAgY3R5cGUtPnRyYW5zbGl0X3RvX2lkeFtjbnRdID0gdG9fbGVuOwotIAotLQkgIGxlbiA9IHdjc2xlbiAoKGNvbnN0IHdjaGFyX3QgKikgc29ydGVkW2NudF0tPmZyb20pICsgMTsKLS0JICB3bWVtY3B5ICgod2NoYXJfdCAqKSAmY3R5cGUtPnRyYW5zbGl0X2Zyb21fdGJsW2Zyb21fbGVuXSwKLS0JCSAgIChjb25zdCB3Y2hhcl90ICopIHNvcnRlZFtjbnRdLT5mcm9tLCBsZW4pOwotKwkgIGxlbiA9IHdjc2xlbl91aW50MzIgKHNvcnRlZFtjbnRdLT5mcm9tKSArIDE7Ci0rCSAgd21lbWNweV91aW50MzIgKCZjdHlwZS0+dHJhbnNsaXRfZnJvbV90YmxbZnJvbV9sZW5dLAotKwkJCSAgc29ydGVkW2NudF0tPmZyb20sIGxlbik7Ci0gCSAgZnJvbV9sZW4gKz0gbGVuOwotIAotIAkgIGN0eXBlLT50cmFuc2xpdF90b19pZHhbY250XSA9IHRvX2xlbjsKLSAJICBzcnVucCA9IHNvcnRlZFtjbnRdLT50bzsKLSAJICB3aGlsZSAoc3J1bnAgIT0gTlVMTCkKLSAJICAgIHsKLS0JICAgICAgbGVuID0gd2NzbGVuICgoY29uc3Qgd2NoYXJfdCAqKSBzcnVucC0+c3RyKSArIDE7Ci0tCSAgICAgIHdtZW1jcHkgKCh3Y2hhcl90ICopICZjdHlwZS0+dHJhbnNsaXRfdG9fdGJsW3RvX2xlbl0sCi0tCQkgICAgICAgKGNvbnN0IHdjaGFyX3QgKikgc3J1bnAtPnN0ciwgbGVuKTsKLSsJICAgICAgbGVuID0gd2NzbGVuX3VpbnQzMiAoc3J1bnAtPnN0cikgKyAxOwotKwkgICAgICB3bWVtY3B5X3VpbnQzMiAoJmN0eXBlLT50cmFuc2xpdF90b190YmxbdG9fbGVuXSwKLSsJCQkgICAgICBzcnVucC0+c3RyLCBsZW4pOwotIAkgICAgICB0b19sZW4gKz0gbGVuOwotIAkgICAgICBzcnVucCA9IHNydW5wLT5uZXh0OwotIAkgICAgfQotZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sZC10aW1lLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtdGltZS5jCi1pbmRleCBkYjQ5MGM2Li43NWRjNTA1IDEwMDY0NAotLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xkLXRpbWUuYwotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xkLXRpbWUuYwotQEAgLTIxNSw4ICsyMTUsMTAgQEAgTm8gZGVmaW5pdGlvbiBmb3IgJXMgY2F0ZWdvcnkgZm91bmQiKSwgIkxDX1RJTUUiKSk7Ci0gCX0KLSAgICAgICBlbHNlCi0gCXsKLSsJICBzdGF0aWMgY29uc3QgdWludDMyX3Qgd3RfZm10X2FtcG1bXQotKwkgICAgPSB7ICclJywnSScsJzonLCclJywnTScsJzonLCclJywnUycsJyAnLCclJywncCcsMCB9OwotIAkgIHRpbWUtPnRfZm10X2FtcG0gPSAiJUk6JU06JVMgJXAiOwotLQkgIHRpbWUtPnd0X2ZtdF9hbXBtID0gKGNvbnN0IHVpbnQzMl90ICopIEwiJUk6JU06JVMgJXAiOwotKwkgIHRpbWUtPnd0X2ZtdF9hbXBtID0gd3RfZm10X2FtcG07Ci0gCX0KLSAgICAgfQotIAotQEAgLTIyNiw3ICsyMjgsNyBAQCBObyBkZWZpbml0aW9uIGZvciAlcyBjYXRlZ29yeSBmb3VuZCIpLCAiTENfVElNRSIpKTsKLSAgICAgICBjb25zdCBpbnQgZGF5c19wZXJfbW9udGhbMTJdID0geyAzMSwgMjksIDMxLCAzMCwgMzEsIDMwLAotIAkJCQkgICAgICAgMzEsIDMxLCAzMCwgMzEgLDMwLCAzMSB9OwotICAgICAgIHNpemVfdCBpZHg7Ci0tICAgICAgd2NoYXJfdCAqd3N0cjsKLSsgICAgICB1aW50MzJfdCAqd3N0cjsKLSAKLSAgICAgICB0aW1lLT5lcmFfZW50cmllcyA9Ci0gCShzdHJ1Y3QgZXJhX2RhdGEgKikgeG1hbGxvYyAodGltZS0+bnVtX2VyYQotQEAgLTQ2NCwxOCArNDY2LDE4IEBAIE5vIGRlZmluaXRpb24gZm9yICVzIGNhdGVnb3J5IGZvdW5kIiksICJMQ19USU1FIikpOwotIAkgICAgfQotIAotIAkgIC8qIE5vdyBnZW5lcmF0ZSB0aGUgd2lkZSBjaGFyYWN0ZXIgbmFtZSBhbmQgZm9ybWF0LiAgKi8KLS0JICB3c3RyID0gd2NzY2hyICgod2NoYXJfdCAqKSB0aW1lLT53ZXJhW2lkeF0sIEwnOicpOy8qIGVuZCBkaXJlY3Rpb24gKi8KLS0JICB3c3RyID0gd3N0ciA/IHdjc2NociAod3N0ciArIDEsIEwnOicpIDogTlVMTDsJLyogZW5kIG9mZnNldCAqLwotLQkgIHdzdHIgPSB3c3RyID8gd2NzY2hyICh3c3RyICsgMSwgTCc6JykgOiBOVUxMOwkvKiBlbmQgc3RhcnQgKi8KLS0JICB3c3RyID0gd3N0ciA/IHdjc2NociAod3N0ciArIDEsIEwnOicpIDogTlVMTDsJLyogZW5kIGVuZCAqLwotKwkgIHdzdHIgPSB3Y3NjaHJfdWludDMyICh0aW1lLT53ZXJhW2lkeF0sIEwnOicpOyAvKiBlbmQgZGlyZWN0aW9uICovCi0rCSAgd3N0ciA9IHdzdHIgPyB3Y3NjaHJfdWludDMyICh3c3RyICsgMSwgTCc6JykgOiBOVUxMOyAvKiBlbmQgb2Zmc2V0ICovCi0rCSAgd3N0ciA9IHdzdHIgPyB3Y3NjaHJfdWludDMyICh3c3RyICsgMSwgTCc6JykgOiBOVUxMOyAvKiBlbmQgc3RhcnQgKi8KLSsJICB3c3RyID0gd3N0ciA/IHdjc2Nocl91aW50MzIgKHdzdHIgKyAxLCBMJzonKSA6IE5VTEw7IC8qIGVuZCBlbmQgKi8KLSAJICBpZiAod3N0ciAhPSBOVUxMKQotIAkgICAgewotLQkgICAgICB0aW1lLT5lcmFfZW50cmllc1tpZHhdLnduYW1lID0gKHVpbnQzMl90ICopIHdzdHIgKyAxOwotLQkgICAgICB3c3RyID0gd2NzY2hyICh3c3RyICsgMSwgTCc6Jyk7CS8qIGVuZCBuYW1lICovCi0rCSAgICAgIHRpbWUtPmVyYV9lbnRyaWVzW2lkeF0ud25hbWUgPSB3c3RyICsgMTsKLSsJICAgICAgd3N0ciA9IHdjc2Nocl91aW50MzIgKHdzdHIgKyAxLCBMJzonKTsgLyogZW5kIG5hbWUgKi8KLSAJICAgICAgaWYgKHdzdHIgIT0gTlVMTCkKLSAJCXsKLSAJCSAgKndzdHIgPSBMJ1wwJzsKLS0JCSAgdGltZS0+ZXJhX2VudHJpZXNbaWR4XS53Zm9ybWF0ID0gKHVpbnQzMl90ICopIHdzdHIgKyAxOwotKwkJICB0aW1lLT5lcmFfZW50cmllc1tpZHhdLndmb3JtYXQgPSB3c3RyICsgMTsKLSAJCX0KLSAJICAgICAgZWxzZQotIAkJdGltZS0+ZXJhX2VudHJpZXNbaWR4XS53bmFtZSA9Ci1AQCAtNTMwLDcgKzUzMiwxNiBAQCBObyBkZWZpbml0aW9uIGZvciAlcyBjYXRlZ29yeSBmb3VuZCIpLCAiTENfVElNRSIpKTsKLSAgIGlmICh0aW1lLT5kYXRlX2ZtdCA9PSBOVUxMKQotICAgICB0aW1lLT5kYXRlX2ZtdCA9ICIlYSAlYiAlZSAlSDolTTolUyAlWiAlWSI7Ci0gICBpZiAodGltZS0+d2RhdGVfZm10ID09IE5VTEwpCi0tICAgIHRpbWUtPndkYXRlX2ZtdCA9IChjb25zdCB1aW50MzJfdCAqKSBMIiVhICViICVlICVIOiVNOiVTICVaICVZIjsKLSsgICAgewotKyAgICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCB3ZGF0ZV9mbXRbXSA9Ci0rCXsgJyUnLCdhJywnICcsCi0rCSAgJyUnLCdiJywnICcsCi0rCSAgJyUnLCdlJywnICcsCi0rCSAgJyUnLCdIJywnOicsJyUnLCdNJywnOicsJyUnLCdTJywnICcsCi0rCSAgJyUnLCdaJywnICcsCi0rCSAgJyUnLCdZJywwIH07Ci0rICAgICAgdGltZS0+d2RhdGVfZm10ID0gd2RhdGVfZm10OwotKyAgICB9Ci0gfQotIAotIAotZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9saW5lcmVhZGVyLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbGluZXJlYWRlci5jCi1pbmRleCAyZTA1MTMwLi42NTNiNjhjIDEwMDY0NAotLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xpbmVyZWFkZXIuYwotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xpbmVyZWFkZXIuYwotQEAgLTU5NSw3ICs1OTUsNyBAQCBnZXRfc3RyaW5nIChzdHJ1Y3QgbGluZXJlYWRlciAqbHIsIGNvbnN0IHN0cnVjdCBjaGFybWFwX3QgKmNoYXJtYXAsCi0gewotICAgaW50IHJldHVybl93aWRlc3RyID0gbHItPnJldHVybl93aWRlc3RyOwotICAgY2hhciAqYnVmOwotLSAgd2NoYXJfdCAqYnVmMiA9IE5VTEw7Ci0rICB1aW50MzJfdCAqYnVmMiA9IE5VTEw7Ci0gICBzaXplX3QgYnVmYWN0OwotICAgc2l6ZV90IGJ1Zm1heCA9IDU2OwotIAotZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sb2NhbGVkZWYuYyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NhbGVkZWYuYwotaW5kZXggZmQ2Y2E1MS4uMzI4ZDM2YyAxMDA2NDQKLS0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sb2NhbGVkZWYuYwotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2FsZWRlZi5jCi1AQCAtMTE0LDYgKzExNCw3IEBAIHZvaWQgKCphcmdwX3Byb2dyYW1fdmVyc2lvbl9ob29rKSAoRklMRSAqLCBzdHJ1Y3QgYXJncF9zdGF0ZSAqKSA9IHByaW50X3ZlcnNpb247Ci0gI2RlZmluZSBPUFRfTElTVF9BUkNISVZFIDMwOQotICNkZWZpbmUgT1BUX0xJVFRMRV9FTkRJQU4gNDAwCi0gI2RlZmluZSBPUFRfQklHX0VORElBTiA0MDEKLSsjZGVmaW5lIE9QVF9VSU5UMzJfQUxJR04gNDAyCi0gCi0gLyogRGVmaW5pdGlvbnMgb2YgYXJndW1lbnRzIGZvciBhcmdwIGZ1bmN0aW9ucy4gICovCi0gc3RhdGljIGNvbnN0IHN0cnVjdCBhcmdwX29wdGlvbiBvcHRpb25zW10gPQotQEAgLTE1MCw2ICsxNTEsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFyZ3Bfb3B0aW9uIG9wdGlvbnNbXSA9Ci0gICAgIE5fKCJHZW5lcmF0ZSBsaXR0bGUtZW5kaWFuIG91dHB1dCIpIH0sCi0gICB7ICJiaWctZW5kaWFuIiwgT1BUX0JJR19FTkRJQU4sIE5VTEwsIDAsCi0gICAgIE5fKCJHZW5lcmF0ZSBiaWctZW5kaWFuIG91dHB1dCIpIH0sCi0rICB7ICJ1aW50MzItYWxpZ24iLCBPUFRfVUlOVDMyX0FMSUdOLCAiQUxJR05NRU5UIiwgMCwKLSsgICAgTl8oIlNldCB0aGUgdGFyZ2V0J3MgdWludDMyX3QgYWxpZ25tZW50IGluIGJ5dGVzIChkZWZhdWx0IDQpIikgfSwKLSAgIHsgTlVMTCwgMCwgTlVMTCwgMCwgTlVMTCB9Ci0gfTsKLSAKLUBAIC0yMzksMTIgKzI0MiwxNCBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotICAgICAgY3R5cGUgbG9jYWxlLiAgKFAxMDAzLjIgNC4zNS41LjIpICAqLwotICAgc2V0bG9jYWxlIChMQ19DVFlQRSwgIlBPU0lYIik7Ci0gCi0rI2lmbmRlZiBOT19TWVNDT05GCi0gICAvKiBMb29rIHdoZXRoZXIgdGhlIHN5c3RlbSByZWFsbHkgYWxsb3dzIGxvY2FsZSBkZWZpbml0aW9ucy4gIFBPU0lYCi0gICAgICBkZWZpbmVzIGVycm9yIGNvZGUgMyBmb3IgdGhpcyBzaXR1YXRpb24gc28gSSB0aGluayBpdCBtdXN0IGJlCi0gICAgICBhIGZhdGFsIGVycm9yIChzZWUgUDEwMDMuMiA0LjM1LjgpLiAgKi8KLSAgIGlmIChzeXNjb25mIChfU0NfMl9MT0NBTEVERUYpIDwgMCkKLSAgICAgV0lUSF9DVVJfTE9DQUxFIChlcnJvciAoMywgMCwgXygiXAotIEZBVEFMOiBzeXN0ZW0gZG9lcyBub3QgZGVmaW5lIGBfUE9TSVgyX0xPQ0FMRURFRiciKSkpOwotKyNlbmRpZgotIAotICAgLyogUHJvY2VzcyBjaGFybWFwIGZpbGUuICAqLwotICAgY2hhcm1hcCA9IGNoYXJtYXBfcmVhZCAoY2hhcm1hcF9maWxlLCB2ZXJib3NlLCAxLCBiZV9xdWlldCwgMSk7Ci1AQCAtMzM4LDYgKzM0Myw5IEBAIHBhcnNlX29wdCAoaW50IGtleSwgY2hhciAqYXJnLCBzdHJ1Y3QgYXJncF9zdGF0ZSAqc3RhdGUpCi0gICAgIGNhc2UgT1BUX0JJR19FTkRJQU46Ci0gICAgICAgc2V0X2JpZ19lbmRpYW4gKHRydWUpOwotICAgICAgIGJyZWFrOwotKyAgICBjYXNlIE9QVF9VSU5UMzJfQUxJR046Ci0rICAgICAgdWludDMyX2FsaWduX21hc2sgPSBzdHJ0b2wgKGFyZywgTlVMTCwgMCkgLSAxOwotKyAgICAgIGJyZWFrOwotICAgICBjYXNlICdjJzoKLSAgICAgICBmb3JjZV9vdXRwdXQgPSAxOwotICAgICAgIGJyZWFrOwotZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5jCi1pbmRleCAzM2RhNTJlLi5mNzkwYzRjIDEwMDY0NAotLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuYwotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuYwotQEAgLTU0NCw2ICs1NDQsOSBAQCBjb21wYXJlX2ZpbGVzIChjb25zdCBjaGFyICpmaWxlbmFtZTEsIGNvbnN0IGNoYXIgKmZpbGVuYW1lMiwgc2l6ZV90IHNpemUsCi0gICAgbWFjaGluZSBydW5uaW5nIGxvY2FsZWRlZi4gICovCi0gYm9vbCBzd2FwX2VuZGlhbm5lc3NfcDsKLSAKLSsvKiBUaGUgdGFyZ2V0J3MgdmFsdWUgb2YgX19hbGlnbl9fKHVpbnQzMl90KSAtIDEuICAqLwotK3Vuc2lnbmVkIGludCB1aW50MzJfYWxpZ25fbWFzayA9IDM7Ci0rCi0gLyogV2hlbiBjYWxsZWQgb3V0c2lkZSBhIHN0YXJ0X2xvY2FsZV9zdHJ1Y3R1cmUvZW5kX2xvY2FsZV9zdHJ1Y3R1cmUKLSAgICBvciBzdGFydF9sb2NhbGVfcHJlbHVkZS9lbmRfbG9jYWxlX3ByZWx1ZGUgYmxvY2ssIHJlY29yZCB0aGF0IHRoZQotICAgIG5leHQgYnl0ZSBpbiBGSUxFJ3Mgb2JzdGFjayB3aWxsIGJlIHRoZSBmaXJzdCBieXRlIG9mIGEgbmV3IGVsZW1lbnQuCi1AQCAtNjIxLDcgKzYyNCw3IEBAIGFkZF9sb2NhbGVfc3RyaW5nIChzdHJ1Y3QgbG9jYWxlX2ZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgKnN0cmluZykKLSB2b2lkCi0gYWRkX2xvY2FsZV93c3RyaW5nIChzdHJ1Y3QgbG9jYWxlX2ZpbGUgKmZpbGUsIGNvbnN0IHVpbnQzMl90ICpzdHJpbmcpCi0gewotLSAgYWRkX2xvY2FsZV91aW50MzJfYXJyYXkgKGZpbGUsIHN0cmluZywgd2NzbGVuICgoY29uc3Qgd2NoYXJfdCAqKSBzdHJpbmcpICsgMSk7Ci0rICBhZGRfbG9jYWxlX3VpbnQzMl9hcnJheSAoZmlsZSwgc3RyaW5nLCB3Y3NsZW5fdWludDMyIChzdHJpbmcpICsgMSk7Ci0gfQotIAotIC8qIFJlY29yZCB0aGF0IEZJTEUncyBuZXh0IGVsZW1lbnQgaXMgdGhlIDMyLWJpdCBpbnRlZ2VyIFZBTFVFLiAgKi8KLWRpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5oIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuaAotaW5kZXggNmZjNDQxYi4uMTE4YjE3MSAxMDA2NDQKLS0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmgKLSsrKyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmgKLUBAIC03MSw2ICs3MSw4IEBAIGV4dGVybiB2b2lkIHdyaXRlX2FsbF9jYXRlZ29yaWVzIChzdHJ1Y3QgbG9jYWxlZGVmX3QgKmRlZmluaXRpb25zLAotIAotIGV4dGVybiBib29sIHN3YXBfZW5kaWFubmVzc19wOwotIAotK2V4dGVybiB1bnNpZ25lZCBpbnQgdWludDMyX2FsaWduX21hc2s7Ci0rCi0gLyogQ2hhbmdlIHRoZSBvdXRwdXQgdG8gYmUgYmlnLWVuZGlhbiBpZiBCSUdfRU5ESUFOIGlzIHRydWUgYW5kCi0gICAgbGl0dGxlLWVuZGlhbiBvdGhlcndpc2UuICAqLwotIHN0YXRpYyBpbmxpbmUgdm9pZAotQEAgLTg5LDcgKzkxLDggQEAgbWF5YmVfc3dhcF91aW50MzIgKHVpbnQzMl90IHZhbHVlKQotIH0KLSAKLSAvKiBMaWtld2lzZSwgYnV0IG11bmdlIGFuIGFycmF5IG9mIE4gdWludDMyX3RzIHN0YXJ0aW5nIGF0IEFSUkFZLiAgKi8KLS1zdGF0aWMgaW5saW5lIHZvaWQKLStzdGF0aWMgdm9pZAotK19fYXR0cmlidXRlX18gKCh1bnVzZWQpKQotIG1heWJlX3N3YXBfdWludDMyX2FycmF5ICh1aW50MzJfdCAqYXJyYXksIHNpemVfdCBuKQotIHsKLSAgIGlmIChzd2FwX2VuZGlhbm5lc3NfcCkKLUBAIC05OSw3ICsxMDIsOCBAQCBtYXliZV9zd2FwX3VpbnQzMl9hcnJheSAodWludDMyX3QgKmFycmF5LCBzaXplX3QgbikKLSAKLSAvKiBMaWtlIG1heWJlX3N3YXBfdWludDMyX2FycmF5LCBidXQgdGhlIGFycmF5IG9mIE4gZWxlbWVudHMgaXMgYXQKLSAgICB0aGUgZW5kIG9mIE9CU1RBQ0sncyBjdXJyZW50IG9iamVjdC4gICovCi0tc3RhdGljIGlubGluZSB2b2lkCi0rc3RhdGljIHZvaWQKLStfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkKLSBtYXliZV9zd2FwX3VpbnQzMl9vYnN0YWNrIChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaywgc2l6ZV90IG4pCi0gewotICAgbWF5YmVfc3dhcF91aW50MzJfYXJyYXkgKCh1aW50MzJfdCAqKSBvYnN0YWNrX25leHRfZnJlZSAob2JzdGFjaykgLSBuLCBuKTsKLUBAIC0yNzYsNCArMjgwLDU1IEBAIGV4dGVybiB2b2lkIGlkZW50aWZpY2F0aW9uX291dHB1dCAoc3RydWN0IGxvY2FsZWRlZl90ICpsb2NhbGUsCi0gCQkJCSAgIGNvbnN0IHN0cnVjdCBjaGFybWFwX3QgKmNoYXJtYXAsCi0gCQkJCSAgIGNvbnN0IGNoYXIgKm91dHB1dF9wYXRoKTsKLSAKLStzdGF0aWMgc2l6ZV90IHdjc2xlbl91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzdHIpIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKTsKLStzdGF0aWMgdWludDMyX3QgKiB3bWVtY3B5X3VpbnQzMiAodWludDMyX3QgKnMxLCBjb25zdCB1aW50MzJfdCAqczIsIHNpemVfdCBuKSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSk7Ci0rc3RhdGljIHVpbnQzMl90ICogd2NzY2hyX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnMsIHVpbnQzMl90IGNoKSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSk7Ci0rc3RhdGljIGludCB3Y3NjbXBfdWludDMyIChjb25zdCB1aW50MzJfdCAqczEsIGNvbnN0IHVpbnQzMl90ICpzMikgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpOwotK3N0YXRpYyBpbnQgd21lbWNtcF91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzMSwgY29uc3QgdWludDMyX3QgKnMyLCBzaXplX3QgbikgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpOwotKwotK3N0YXRpYyBzaXplX3QKLSt3Y3NsZW5fdWludDMyIChjb25zdCB1aW50MzJfdCAqc3RyKQotK3sKLSsgIHNpemVfdCBsZW4gPSAwOwotKyAgd2hpbGUgKHN0cltsZW5dICE9IDApCi0rICAgIGxlbisrOwotKyAgcmV0dXJuIGxlbjsKLSt9Ci0rCi0rc3RhdGljICBpbnQKLSt3bWVtY21wX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnMxLCBjb25zdCB1aW50MzJfdCAqczIsIHNpemVfdCBuKQotK3sKLSsgIHdoaWxlIChuLS0gIT0gMCkKLSsgICAgewotKyAgICAgIGludCBkaWZmID0gKnMxKysgLSAqczIrKzsKLSsgICAgICBpZiAoZGlmZiAhPSAwKQotKwlyZXR1cm4gZGlmZjsKLSsgICAgfQotKyAgcmV0dXJuIDA7Ci0rfQotKwotK3N0YXRpYyBpbnQKLSt3Y3NjbXBfdWludDMyIChjb25zdCB1aW50MzJfdCAqczEsIGNvbnN0IHVpbnQzMl90ICpzMikKLSt7Ci0rICB3aGlsZSAoKnMxICE9IDAgJiYgKnMxID09ICpzMikKLSsgICAgczErKywgczIrKzsKLSsgIHJldHVybiAqczEgLSAqczI7Ci0rfQotKwotK3N0YXRpYyB1aW50MzJfdCAqCi0rd21lbWNweV91aW50MzIgKHVpbnQzMl90ICpzMSwgY29uc3QgdWludDMyX3QgKnMyLCBzaXplX3QgbikKLSt7Ci0rICByZXR1cm4gbWVtY3B5IChzMSwgczIsIG4gKiBzaXplb2YgKHVpbnQzMl90KSk7Ci0rfQotKwotK3N0YXRpYyB1aW50MzJfdCAqCi0rd2NzY2hyX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnMsIHVpbnQzMl90IGNoKQotK3sKLSsgIGRvCi0rICAgIGlmICgqcyA9PSBjaCkKLSsgICAgICByZXR1cm4gKHVpbnQzMl90ICopIHM7Ci0rICB3aGlsZSAoKnMrKyAhPSAwKTsKLSsgIHJldHVybiAwOwotK30KLSsKLSAjZW5kaWYgLyogbG9jZmlsZS5oICovCi1kaWZmIC0tZ2l0IGEvbG9jYWxlL3NldGxvY2FsZS5jIGIvbG9jYWxlL3NldGxvY2FsZS5jCi1pbmRleCBlYWQwMzBkLi5iNTUxMzMyIDEwMDY0NAotLS0tIGEvbG9jYWxlL3NldGxvY2FsZS5jCi0rKysgYi9sb2NhbGUvc2V0bG9jYWxlLmMKLUBAIC02NCwzNiArNjQsNiBAQCBzdGF0aWMgY2hhciAqY29uc3QgX25sX2N1cnJlbnRfdXNlZFtdID0KLSAjZW5kaWYKLSAKLSAKLS0vKiBEZWZpbmUgYW4gYXJyYXkgb2YgY2F0ZWdvcnkgbmFtZXMgKGFsc28gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWVzKS4gICovCi0tY29uc3QgdW5pb24gY2F0bmFtZXN0cl90IF9ubF9jYXRlZ29yeV9uYW1lcyBhdHRyaWJ1dGVfaGlkZGVuID0KLS0gIHsKLS0gICAgewotLSNkZWZpbmUgREVGSU5FX0NBVEVHT1JZKGNhdGVnb3J5LCBjYXRlZ29yeV9uYW1lLCBpdGVtcywgYSkgXAotLSAgICAgIGNhdGVnb3J5X25hbWUsCi0tI2luY2x1ZGUgImNhdGVnb3JpZXMuZGVmIgotLSN1bmRlZiBERUZJTkVfQ0FURUdPUlkKLS0gICAgfQotLSAgfTsKLS0KLS1jb25zdCB1aW50OF90IF9ubF9jYXRlZ29yeV9uYW1lX2lkeHNbX19MQ19MQVNUXSBhdHRyaWJ1dGVfaGlkZGVuID0KLS0gIHsKLS0jZGVmaW5lIERFRklORV9DQVRFR09SWShjYXRlZ29yeSwgY2F0ZWdvcnlfbmFtZSwgaXRlbXMsIGEpIFwKLS0gICAgW2NhdGVnb3J5XSA9IG9mZnNldG9mICh1bmlvbiBjYXRuYW1lc3RyX3QsIENBVE5BTUVNRiAoX19MSU5FX18pKSwKLS0jaW5jbHVkZSAiY2F0ZWdvcmllcy5kZWYiCi0tI3VuZGVmIERFRklORV9DQVRFR09SWQotLSAgfTsKLS0KLS0vKiBBbiBhcnJheSBvZiB0aGVpciBsZW5ndGhzLCBmb3IgY29udmVuaWVuY2UuICAqLwotLWNvbnN0IHVpbnQ4X3QgX25sX2NhdGVnb3J5X25hbWVfc2l6ZXNbXSBhdHRyaWJ1dGVfaGlkZGVuID0KLS0gIHsKLS0jZGVmaW5lIERFRklORV9DQVRFR09SWShjYXRlZ29yeSwgY2F0ZWdvcnlfbmFtZSwgaXRlbXMsIGEpIFwKLS0gICAgW2NhdGVnb3J5XSA9IHNpemVvZiAoY2F0ZWdvcnlfbmFtZSkgLSAxLAotLSNpbmNsdWRlICJjYXRlZ29yaWVzLmRlZiIKLS0jdW5kZWYJREVGSU5FX0NBVEVHT1JZCi0tICAgIFtMQ19BTExdID0gc2l6ZW9mICgiTENfQUxMIikgLSAxCi0tICB9OwotLQotLQotICNpZmRlZiBOTF9DVVJSRU5UX0lORElSRUNUCi0gIyBkZWZpbmUgV0VBS19QT1NUTE9BRChwb3N0bG9hZCkgd2Vha19leHRlcm4gKHBvc3Rsb2FkKQotICNlbHNlCi0tLSAKLTIuNi40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI2LVdoZW4tZGlzYWJsaW5nLVNTRS1tYWtlLXN1cmUtZnBtYXRoLWlzLW5vdC1zZXQtdG8tdXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNi1XaGVuLWRpc2FibGluZy1TU0UtbWFrZS1zdXJlLWZwbWF0aC1pcy1ub3Qtc2V0LXRvLXVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjg4OWE5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI2LVdoZW4tZGlzYWJsaW5nLVNTRS1tYWtlLXN1cmUtZnBtYXRoLWlzLW5vdC1zZXQtdG8tdXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1Gcm9tIDk3ZmU3ZjFiMjNlYTFmMTc1MzM4ODRiOGZhN2Y3ZWI0MDA4N2Q1NTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCA1IEphbiAyMDE2IDE3OjUwOjAwIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIFdoZW4gZGlzYWJsaW5nIFNTRSwgIG1ha2Ugc3VyZSAtZnBtYXRoIGlzIG5vdCBzZXQgdG8gdXNlIFNTRQotIGVpdGhlcgotCi1UaGlzIGZpeGVzIGVycm9ycyB3aGVuIHdlIGluamVjdCBzc2Ugb3B0aW9ucyB0aHJvdWdoIENGTEFHUyBhbmQgbm93Ci10aGF0IHdlIGhhdmUgLVdlcnJvciB0dXJuZWQgb24gYnkgZGVmYXVsdCB0aGlzIHdhcm5pbmcgdHVybnMgdG8gYmVjb21lCi1lcnJvciBvbiB4ODYKLQotZ2NjIC1tMzIgLW1hcmNoPWNvcmUyIC1tdHVuZT1jb3JlMiAtbXNzZTMgLW1mcG1hdGg9c3NlIC14IGMgL2Rldi9udWxsIC1TCi0tbW5vLXNzZSAtbW5vLW1teAotCi1nZW5lcmF0ZXMgd2FybmluZwotL2Rldi9udWxsOjE6MDogd2FybmluZzogU1NFIGluc3RydWN0aW9uIHNldCBkaXNhYmxlZCwgdXNpbmcgMzg3Ci1hcml0aG1ldGljcwotCi13aGVyZSBhcwotCi1nY2MgLW0zMiAtbWFyY2g9Y29yZTIgLW10dW5lPWNvcmUyIC1tc3NlMyAtbWZwbWF0aD1zc2UgLXggYyAvZGV2L251bGwgLVMKLS1tbm8tc3NlIC1tbm8tbW14IC1tZnBtYXRoPTM4NwotCi1HZW5lcmF0ZXMgbm8gd2FybmluZ3MKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLQotIENoYW5nZUxvZyAgICAgICAgICAgICB8IDUgKysrKysKLSBzeXNkZXBzL2kzODYvTWFrZWZpbGUgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvaTM4Ni9NYWtlZmlsZSBiL3N5c2RlcHMvaTM4Ni9NYWtlZmlsZQotaW5kZXggMTY4NTEyZi4uNzAxNTNiMyAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvaTM4Ni9NYWtlZmlsZQotKysrIGIvc3lzZGVwcy9pMzg2L01ha2VmaWxlCi1AQCAtODksNyArODksNyBAQCBpZmVxICgkKHN1YmRpciksZWxmKQotICMgdGhlIGZpcnN0IDMgbW0veG1tL3ltbS96bW0gcmVnaXN0ZXJzIGFyZSB1c2VkIHRvIHBhc3MgdmVjdG9yIHBhcmFtZXRlcnMKLSAjIHdoaWNoIG11c3QgYmUgcHJlc2VydmVkLgotIENGTEFHUy0ub3MgKz0gJChpZiAkKGZpbHRlciAkKEBGKSwkKHBhdHN1YnN0ICUsJS5vcywkKGFsbC1ydGxkLXJvdXRpbmVzKSkpLFwKLS0JCSAgIC1tbm8tc3NlIC1tbm8tbW14KQotKwkJICAgLW1uby1zc2UgLW1uby1tbXggLW1mcG1hdGg9Mzg3KQotIAotIHRlc3RzLXNwZWNpYWwgKz0gJChvYmpwZngpdHN0LWxkLXNzZS11c2Uub3V0Ci0gJChvYmpwZngpdHN0LWxkLXNzZS11c2Uub3V0OiAuLi9zeXNkZXBzL2kzODYvdHN0LWxkLXNzZS11c2Uuc2ggJChvYmpwZngpbGQuc28KLS0tIAotMi42LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjYtYnVpbGRfbG9jYWxfc2NvcGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNi1idWlsZF9sb2NhbF9zY29wZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTBjYjgzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjYtYnVpbGRfbG9jYWxfc2NvcGUucGF0Y2gKQEAgLTAsMCArMSw1NiBAQAorRnJvbSA2ZTRlYzVhM2M1ZmU2M2I2NDU4MDM2ZjE4ZDQzMTI0ZGU0YTdlNzI0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAxOCBBdWcgMjAxNiAxNDowNzo1OCAtMDUwMAorU3ViamVjdDogW1BBVENIXSBlbGYvZGwtZGVwcy5jOiBNYWtlIF9kbF9idWlsZF9sb2NhbF9zY29wZSBicmVhZHRoIGZpcnN0CisKK0FjY29yZGluZyB0byB0aGUgRUxGIHNwZWNpZmljYXRpb246CisKK1doZW4gcmVzb2x2aW5nIHN5bWJvbGljIHJlZmVyZW5jZXMsIHRoZSBkeW5hbWljIGxpbmtlciBleGFtaW5lcyB0aGUgc3ltYm9sCit0YWJsZXMgd2l0aCBhIGJyZWFkdGgtZmlyc3Qgc2VhcmNoLgorCitUaGlzIGZ1bmN0aW9uIHdhcyB1c2luZyBhIGRlcHRoIGZpcnN0IHNlYXJjaC4gIEJ5IGRvaW5nIHNvIHRoZSBjb25mbGljdAorcmVzb2x1dGlvbiByZXBvcnRlZCB0byB0aGUgcHJlbGlua2VyICh3aGVuIExEX1RSQUNFX1BSRUxJTktJTkc9MSBpcyBzZXQpCit3YXMgaW5jb3JyZWN0LiAgVGhpcyBjYXVzZWQgcHJvYmxlbXMgd2hlbiB0aGVpciB3ZXJlIHZhcmlvdXMgY2lyY3VsYXIKK2RlcGVuZGVuY2llcyBiZXR3ZWVuIGxpYnJhcmllcy4gIFRoZSBwcm9ibGVtIHVzdWFsbHkgbWFuaWZlc3RlZCBpdHNlbGYgYnkKK3RoZSB3cm9uZyBJRlVOQyBiZWluZyBleGVjdXRlZC4KKworW0JaIyAyMDQ4OF0KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2xpYmMtYWxwaGFdCisKK1NpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KKy0tLQorIGVsZi9kbC1kZXBzLmMgfCAxNCArKysrKysrKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZWxmL2RsLWRlcHMuYyBiL2VsZi9kbC1kZXBzLmMKK2luZGV4IDZhODI5ODcuLmZjMzdjODcgMTAwNjQ0CistLS0gYS9lbGYvZGwtZGVwcy5jCisrKysgYi9lbGYvZGwtZGVwcy5jCitAQCAtNzMsMTMgKzczLDE5IEBAIF9kbF9idWlsZF9sb2NhbF9zY29wZSAoc3RydWN0IGxpbmtfbWFwICoqbGlzdCwgc3RydWN0IGxpbmtfbWFwICptYXApCisgeworICAgc3RydWN0IGxpbmtfbWFwICoqcCA9IGxpc3Q7CisgICBzdHJ1Y3QgbGlua19tYXAgKipxOworKyAgc3RydWN0IGxpbmtfbWFwICoqcjsKKyAKKyAgICpwKysgPSBtYXA7CisgICBtYXAtPmxfcmVzZXJ2ZWQgPSAxOworLSAgaWYgKG1hcC0+bF9pbml0ZmluaSkKKy0gICAgZm9yIChxID0gbWFwLT5sX2luaXRmaW5pICsgMTsgKnE7ICsrcSkKKy0gICAgICBpZiAoISAoKnEpLT5sX3Jlc2VydmVkKQorLQlwICs9IF9kbF9idWlsZF9sb2NhbF9zY29wZSAocCwgKnEpOworKworKyAgZm9yIChyID0gbGlzdDsgciA8IHA7ICsrcikKKysgICAgaWYgKCgqciktPmxfaW5pdGZpbmkpCisrICAgICAgZm9yIChxID0gKCpyKS0+bF9pbml0ZmluaSArIDE7ICpxOyArK3EpCisrCWlmICghICgqcSktPmxfcmVzZXJ2ZWQpCisrCSAgeworKwkgICAgKnArKyA9ICpxOworKwkgICAgKCpxKS0+bF9yZXNlcnZlZCA9IDE7CisrCSAgfQorICAgcmV0dXJuIHAgLSBsaXN0OworIH0KKyAKKy0tIAorMi41LjUKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjXzIuMjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmNfMi4yMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMThmNDA2Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmNfMi4yMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi1yZXF1aXJlIGdsaWJjLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFUzttZDU9ZTlhNTU4ZTI0M2IzNmQzMjA5ZjM4MGRlYjM5NGIyMTMgXAotICAgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgIGZpbGU6Ly9wb3NpeC9yeHNwZW5jZXIvQ09QWVJJR0hUO21kNT1kYzU0ODViYjM5NGExM2IyMzMyZWMxYzc4NWY1ZDgzYSBcCi0gICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgotCi1ERVBFTkRTICs9ICJncGVyZi1uYXRpdmUiCi0KLVNSQ1JFViA/PSAiZTc0MjkyOGMxNTkyYjQzZGI2ODA5ZGI0ZjM5ZTY3YmUxNTFjZGQyNyIKLQotU1JDQlJBTkNIID89ICJyZWxlYXNlLyR7UFZ9L21hc3RlciIKLQotR0xJQkNfR0lUX1VSSSA/PSAiZ2l0Oi8vc291cmNld2FyZS5vcmcvZ2l0L2dsaWJjLmdpdCIKLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkK1wuXGQrKFwuXGQrKSopIgotCi1TUkNfVVJJID0gIiR7R0xJQkNfR0lUX1VSSX07YnJhbmNoPSR7U1JDQlJBTkNIfTtuYW1lPWdsaWJjIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtZnNsLWU1MDAtZTU1MDAtZTY1MDAtNjAzZS1mc3FydC1pbXBsZW1lbnRhdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LXJlYWRsaWItQWRkLU9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUy10by1rbm93bi0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNy1wcGMtc3FydC1GaXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1fX3NxcnRfZmluaXRlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDgtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA5LVF1b3RlLWZyb20tYnVnLTE0NDMtd2hpY2gtZXhwbGFpbnMtd2hhdC10aGUtcGF0Y2gtZG8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMC1lZ2xpYmMtcnVuLWxpYm0tZXJyLXRhYi5wbC13aXRoLXNwZWNpZmljLWRpcnMtaW4tUy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDExLV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMi1NYWtlLWxkLXZlcnNpb24tb3V0cHV0LW1hdGNoaW5nLWdyb2stZ29sZC1zLW91dHB1dC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEzLXN5c2RlcHMtZ251LWNvbmZpZ3VyZS5hYy1oYW5kbGUtY29ycmVjdGx5LWxpYmNfY3Zfcm8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNC1BZGQtdW51c2VkLWF0dHJpYnV0ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE1LXllcy13aXRoaW4tdGhlLXBhdGgtc2V0cy13cm9uZy1jb25maWctdmFyaWFibGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTYtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE3LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxOC1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTktZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIwLWVnbGliYy1jaGVycnktcGlja2VkLWZyb20ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMS1lZ2xpYmMtQ2xlYXItY2FjaGUtbGluZXMtb24tcHBjOHh4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjItZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjMtZWdsaWJjLUluc3RhbGwtUElDLWFyY2hpdmVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjUtZWdsaWJjLUZvcndhcmQtcG9ydC1jcm9zcy1sb2NhbGUtZ2VuZXJhdGlvbi1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjYtV2hlbi1kaXNhYmxpbmctU1NFLW1ha2Utc3VyZS1mcG1hdGgtaXMtbm90LXNldC10by11cy5wYXRjaCBcCi0iCi0KLVNSQ19VUkkgKz0gIlwKLSAgICAgICAgICAgZmlsZTovL2V0Yy9sZC5zby5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL2dlbmVyYXRlLXN1cHBvcnRlZC5tayBcCi0iCi0KLVNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICJcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW5hdGl2ZXNkay1nbGliYy1Mb29rLWZvci1ob3N0LXN5c3RlbS1sZC5zby5jYWNoZS1hcy0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1uYXRpdmVzZGstZ2xpYmMtRml4LWJ1ZmZlci1vdmVycnVuLXdpdGgtYS1yZWxvY2F0ZWQtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtbmF0aXZlc2RrLWdsaWJjLVJhaXNlLXRoZS1zaXplLW9mLWFycmF5cy1jb250YWluaW5nLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LW5hdGl2ZXNkay1nbGliYy1BbGxvdy02NC1iaXQtYXRvbWljcy1mb3IteDg2LnBhdGNoIFwKLSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLUIgPSAiJHtXT1JLRElSfS9idWlsZC0ke1RBUkdFVF9TWVN9IgotCi1QQUNLQUdFU19EWU5BTUlDID0gIiIKLQotIyB0aGUgLWlzeXN0ZW0gaW4gYml0YmFrZS5jb25mIHNjcmV3cyB1cCBnbGliYyBkb19zdGFnZQotQlVJTERfQ1BQRkxBR1MgPSAiLUkke1NUQUdJTkdfSU5DRElSX05BVElWRX0iCi1UQVJHRVRfQ1BQRkxBR1MgPSAiLUkke1NUQUdJTkdfRElSX1RBUkdFVH0ke2luY2x1ZGVkaXJ9IgotCi1HTElCQ19CUk9LRU5fTE9DQUxFUyA9ICIgX0VSIF9FVCBzb19FVCB5bl9FUiBzaWRfRVQgdHJfVFIgbW5fTU4gZ2V6X0VUIGdlel9FUiBibl9CRCB0ZV9JTiBlc19DUi5JU08tODg1OS0xIgotCi0jCi0jIFdlIHdpbGwgc2tpcCBwYXJzaW5nIGdsaWJjIHdoZW4gdGFyZ2V0IHN5c3RlbSBDIGxpYnJhcnkgc2VsZWN0aW9uIGlzIG5vdCBnbGliYwotIyB0aGlzIGhlbHBzIGluIGVhc2luZyBvdXQgcGFyc2luZyBmb3Igbm9uLWdsaWJjIHN5c3RlbSBsaWJyYXJpZXMKLSMKLUNPTVBBVElCTEVfSE9TVF9saWJjLW11c2xfY2xhc3MtdGFyZ2V0ID0gIm51bGwiCi1DT01QQVRJQkxFX0hPU1RfbGliYy11Y2xpYmNfY2xhc3MtdGFyZ2V0ID0gIm51bGwiCi0KLUVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1rZXJuZWw9JHtPTERFU1RfS0VSTkVMfSBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LWN2cyAtLWRpc2FibGUtcHJvZmlsZSBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRlYnVnIC0td2l0aG91dC1nZCBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtY2xvY2FsZT1nbnUgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWFkZC1vbnMgXAotICAgICAgICAgICAgICAgIC0td2l0aC1oZWFkZXJzPSR7U1RBR0lOR19JTkNESVJ9IFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtc2VsaW51eCBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtb2Jzb2xldGUtcnBjIFwKLSAgICAgICAgICAgICAgICAke0dMSUJDX0VYVFJBX09FQ09ORn0iCi0KLUVYVFJBX09FQ09ORiArPSAiJHtAZ2V0X2xpYmNfZnB1X3NldHRpbmcoYmIsIGQpfSIKLUVYVFJBX09FQ09ORiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsaWJjLWluZXQtYW5sJywgJy0tZW5hYmxlLW5zY2QnLCAnLS1kaXNhYmxlLW5zY2QnLCBkKX0iCi0KLQotZG9fcGF0Y2hfYXBwZW5kKCkgewotICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnZG9fZml4X3JlYWRsaWJfYycsIGQpCi19Ci0KLWRvX2ZpeF9yZWFkbGliX2MgKCkgewotCXNlZCAtaSAtZSAncyNPRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMjJHtFR0xJQkNfS05PV05fSU5URVJQUkVURVJfTkFNRVN9IycgJHtTfS9lbGYvcmVhZGxpYi5jCi19Ci0KLWRvX2NvbmZpZ3VyZSAoKSB7Ci0jIG92ZXJyaWRlIHRoaXMgZnVuY3Rpb24gdG8gYXZvaWQgdGhlIGF1dG9jb25mL2F1dG9tYWtlL2FjbG9jYWwvYXV0b2hlYWRlcgotIyBjYWxscyBmb3Igbm93Ci0jIGRvbid0IHBhc3MgQ1BQRkxBR1MgaW50byBjb25maWd1cmUsIHNpbmNlIGl0IHVwc2V0cyB0aGUga2VybmVsLWhlYWRlcnMKLSMgdmVyc2lvbiBjaGVjayBhbmQgZG9lc24ndCByZWFsbHkgaGVscCB3aXRoIGFueXRoaW5nCi0gICAgICAgIChjZCAke1N9ICYmIGdudS1jb25maWdpemUpIHx8IGRpZSAiZmFpbHVyZSBpbiBydW5uaW5nIGdudS1jb25maWdpemUiCi0gICAgICAgIGZpbmQgJHtTfSAtbmFtZSAiY29uZmlndXJlIiB8IHhhcmdzIHRvdWNoCi0gICAgICAgIENQUEZMQUdTPSIiIG9lX3J1bmNvbmYKLX0KLQotcnBjc3ZjID0gImJvb3RwYXJhbV9wcm90LnggbmxtX3Byb3QueCByc3RhdC54IFwKLQkgIHlwcGFzc3dkLngga2xtX3Byb3QueCByZXgueCBzbV9pbnRlci54IG1vdW50LnggXAotCSAgcnVzZXJzLnggc3ByYXkueCBuZnNfcHJvdC54IHJxdW90YS54IGtleV9wcm90LngiCi0KLWRvX2NvbXBpbGUgKCkgewotCSMgLVdsLC1ycGF0aC1saW5rIDxzdGFnaW5nPi9saWIgaW4gTERGTEFHUyBjYW4gY2F1c2UgYnJlYWthZ2UgaWYgYW5vdGhlciBnbGliYyBpcyBpbiBzdGFnaW5nCi0JdW5zZXQgTERGTEFHUwotCWJhc2VfZG9fY29tcGlsZQotCSgKLQkJY2QgJHtTfS9zdW5ycGMvcnBjc3ZjCi0JCWZvciByIGluICR7cnBjc3ZjfTsgZG8KLQkJCWg9YGVjaG8gJHJ8c2VkIC1lJ3MsXC54JCwuaCwnYAotCQkJcm0gLWYgJGgKLQkJCSR7Qn0vc3VucnBjL2Nyb3NzLXJwY2dlbiAtaCAkciAtbyAkaCB8fCBiYndhcm4gIiR7UE59OiB1bmFibGUgdG8gZ2VuZXJhdGUgaGVhZGVyIGZvciAkciIKLQkJZG9uZQotCSkKLQllY2hvICJBZGp1c3QgbGRkIHNjcmlwdCIKLQlpZiBbIC1uICIke1JUTERMSVNUfSIgXQotCXRoZW4KLQkJcHJldnJ0bGQ9YGNhdCAke0J9L2VsZi9sZGQgfCBncmVwICJeUlRMRExJU1Q9IiB8IHNlZCAncyNeUlRMRExJU1Q9Ilw/XChbXiJdKlwpIlw/JCNcMSMnYAotCQlpZiBbICIke3ByZXZydGxkfSIgIT0gIiR7UlRMRExJU1R9IiBdCi0JCXRoZW4KLQkJCXNlZCAtaSAke0J9L2VsZi9sZGQgLWUgInMjXlJUTERMSVNUPS4qXCQjUlRMRExJU1Q9XCIke3ByZXZydGxkfSAke1JUTERMSVNUfVwiIyIKLQkJZmkKLQlmaQotCi19Ci0KLXJlcXVpcmUgZ2xpYmMtcGFja2FnZS5pbmMKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmNfMi4yNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliY18yLjI0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1YTIxYjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmNfMi4yNC5iYgpAQCAtMCwwICsxLDE0MCBAQAorcmVxdWlyZSBnbGliYy5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRVM7bWQ1PWU5YTU1OGUyNDNiMzZkMzIwOWYzODBkZWIzOTRiMjEzIFwKKyAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICBmaWxlOi8vcG9zaXgvcnhzcGVuY2VyL0NPUFlSSUdIVDttZDU9ZGM1NDg1YmIzOTRhMTNiMjMzMmVjMWM3ODVmNWQ4M2EgXAorICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworREVQRU5EUyArPSAiZ3BlcmYtbmF0aXZlIgorCitTUkNSRVYgPz0gImVhMjM4MTVhNzk1ZjcyMDM1MjYyOTUzZGFkNWJlYjAzZTA5YzE3ZGQiCisKK1NSQ0JSQU5DSCA/PSAicmVsZWFzZS8ke1BWfS9tYXN0ZXIiCisKK0dMSUJDX0dJVF9VUkkgPz0gImdpdDovL3NvdXJjZXdhcmUub3JnL2dpdC9nbGliYy5naXQiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCtcLlxkKyhcLlxkKykqKSIKKworU1JDX1VSSSA9ICIke0dMSUJDX0dJVF9VUkl9O2JyYW5jaD0ke1NSQ0JSQU5DSH07bmFtZT1nbGliYyBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LWZzbC1lNTAwLWU1NTAwLWU2NTAwLTYwM2UtZnNxcnQtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1yZWFkbGliLUFkZC1PRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMtdG8ta25vd24tLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDctcHBjLXNxcnQtRml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tX19zcXJ0X2Zpbml0ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA4LV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOS1RdW90ZS1mcm9tLWJ1Zy0xNDQzLXdoaWNoLWV4cGxhaW5zLXdoYXQtdGhlLXBhdGNoLWRvLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTAtZWdsaWJjLXJ1bi1saWJtLWVyci10YWIucGwtd2l0aC1zcGVjaWZpYy1kaXJzLWluLVMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMS1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTItTWFrZS1sZC12ZXJzaW9uLW91dHB1dC1tYXRjaGluZy1ncm9rLWdvbGQtcy1vdXRwdXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMy1zeXNkZXBzLWdudS1jb25maWd1cmUuYWMtaGFuZGxlLWNvcnJlY3RseS1saWJjX2N2X3JvLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTQtQWRkLXVudXNlZC1hdHRyaWJ1dGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNS15ZXMtd2l0aGluLXRoZS1wYXRoLXNldHMtd3JvbmctY29uZmlnLXZhcmlhYmxlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE2LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNy1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTgtZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE5LWVnbGliYy1IZWxwLWJvb3RzdHJhcC1jcm9zcy10b29sY2hhaW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMC1lZ2xpYmMtY2hlcnJ5LXBpY2tlZC1mcm9tLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjEtZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIyLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIzLWVnbGliYy1JbnN0YWxsLVBJQy1hcmNoaXZlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI0LWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI1LURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI2LWJ1aWxkX2xvY2FsX3Njb3BlLnBhdGNoIFwKKyIKKworU1JDX1VSSSArPSAiXAorICAgICAgICAgICBmaWxlOi8vZXRjL2xkLnNvLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vZ2VuZXJhdGUtc3VwcG9ydGVkLm1rIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbG9jYWxlLWZpeC1oYXJkLWNvZGVkLXJlZmVyZW5jZS10by1nY2MtRS5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIlwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbmF0aXZlc2RrLWdsaWJjLUxvb2stZm9yLWhvc3Qtc3lzdGVtLWxkLnNvLmNhY2hlLWFzLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLW5hdGl2ZXNkay1nbGliYy1GaXgtYnVmZmVyLW92ZXJydW4td2l0aC1hLXJlbG9jYXRlZC0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1uYXRpdmVzZGstZ2xpYmMtUmFpc2UtdGhlLXNpemUtb2YtYXJyYXlzLWNvbnRhaW5pbmctLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtbmF0aXZlc2RrLWdsaWJjLUFsbG93LTY0LWJpdC1hdG9taWNzLWZvci14ODYucGF0Y2ggXAorIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorQiA9ICIke1dPUktESVJ9L2J1aWxkLSR7VEFSR0VUX1NZU30iCisKK1BBQ0tBR0VTX0RZTkFNSUMgPSAiIgorCisjIHRoZSAtaXN5c3RlbSBpbiBiaXRiYWtlLmNvbmYgc2NyZXdzIHVwIGdsaWJjIGRvX3N0YWdlCitCVUlMRF9DUFBGTEFHUyA9ICItSSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfSIKK1RBUkdFVF9DUFBGTEFHUyA9ICItSSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7aW5jbHVkZWRpcn0iCisKK0dMSUJDX0JST0tFTl9MT0NBTEVTID0gIiIKKyMKKyMgV2Ugd2lsbCBza2lwIHBhcnNpbmcgZ2xpYmMgd2hlbiB0YXJnZXQgc3lzdGVtIEMgbGlicmFyeSBzZWxlY3Rpb24gaXMgbm90IGdsaWJjCisjIHRoaXMgaGVscHMgaW4gZWFzaW5nIG91dCBwYXJzaW5nIGZvciBub24tZ2xpYmMgc3lzdGVtIGxpYnJhcmllcworIworQ09NUEFUSUJMRV9IT1NUX2xpYmMtbXVzbF9jbGFzcy10YXJnZXQgPSAibnVsbCIKK0NPTVBBVElCTEVfSE9TVF9saWJjLXVjbGliY19jbGFzcy10YXJnZXQgPSAibnVsbCIKKworRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLWtlcm5lbD0ke09MREVTVF9LRVJORUx9IFwKKyAgICAgICAgICAgICAgICAtLXdpdGhvdXQtY3ZzIC0tZGlzYWJsZS1wcm9maWxlIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtZGVidWcgLS13aXRob3V0LWdkIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1jbG9jYWxlPWdudSBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtYWRkLW9ucyBcCisgICAgICAgICAgICAgICAgLS13aXRoLWhlYWRlcnM9JHtTVEFHSU5HX0lOQ0RJUn0gXAorICAgICAgICAgICAgICAgIC0td2l0aG91dC1zZWxpbnV4IFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1vYnNvbGV0ZS1ycGMgXAorICAgICAgICAgICAgICAgICR7R0xJQkNfRVhUUkFfT0VDT05GfSIKKworRVhUUkFfT0VDT05GICs9ICIke0BnZXRfbGliY19mcHVfc2V0dGluZyhiYiwgZCl9IgorRVhUUkFfT0VDT05GICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2xpYmMtaW5ldC1hbmwnLCAnLS1lbmFibGUtbnNjZCcsICctLWRpc2FibGUtbnNjZCcsIGQpfSIKKworCitkb19wYXRjaF9hcHBlbmQoKSB7CisgICAgYmIuYnVpbGQuZXhlY19mdW5jKCdkb19maXhfcmVhZGxpYl9jJywgZCkKK30KKworZG9fZml4X3JlYWRsaWJfYyAoKSB7CisJc2VkIC1pIC1lICdzI09FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUyMke0VHTElCQ19LTk9XTl9JTlRFUlBSRVRFUl9OQU1FU30jJyAke1N9L2VsZi9yZWFkbGliLmMKK30KKworZG9fY29uZmlndXJlICgpIHsKKyMgb3ZlcnJpZGUgdGhpcyBmdW5jdGlvbiB0byBhdm9pZCB0aGUgYXV0b2NvbmYvYXV0b21ha2UvYWNsb2NhbC9hdXRvaGVhZGVyCisjIGNhbGxzIGZvciBub3cKKyMgZG9uJ3QgcGFzcyBDUFBGTEFHUyBpbnRvIGNvbmZpZ3VyZSwgc2luY2UgaXQgdXBzZXRzIHRoZSBrZXJuZWwtaGVhZGVycworIyB2ZXJzaW9uIGNoZWNrIGFuZCBkb2Vzbid0IHJlYWxseSBoZWxwIHdpdGggYW55dGhpbmcKKyAgICAgICAgKGNkICR7U30gJiYgZ251LWNvbmZpZ2l6ZSkgfHwgZGllICJmYWlsdXJlIGluIHJ1bm5pbmcgZ251LWNvbmZpZ2l6ZSIKKyAgICAgICAgZmluZCAke1N9IC1uYW1lICJjb25maWd1cmUiIHwgeGFyZ3MgdG91Y2gKKyAgICAgICAgQ1BQRkxBR1M9IiIgb2VfcnVuY29uZgorfQorCitycGNzdmMgPSAiYm9vdHBhcmFtX3Byb3QueCBubG1fcHJvdC54IHJzdGF0LnggXAorCSAgeXBwYXNzd2QueCBrbG1fcHJvdC54IHJleC54IHNtX2ludGVyLnggbW91bnQueCBcCisJICBydXNlcnMueCBzcHJheS54IG5mc19wcm90LnggcnF1b3RhLngga2V5X3Byb3QueCIKKworZG9fY29tcGlsZSAoKSB7CisJIyAtV2wsLXJwYXRoLWxpbmsgPHN0YWdpbmc+L2xpYiBpbiBMREZMQUdTIGNhbiBjYXVzZSBicmVha2FnZSBpZiBhbm90aGVyIGdsaWJjIGlzIGluIHN0YWdpbmcKKwl1bnNldCBMREZMQUdTCisJYmFzZV9kb19jb21waWxlCisJKAorCQljZCAke1N9L3N1bnJwYy9ycGNzdmMKKwkJZm9yIHIgaW4gJHtycGNzdmN9OyBkbworCQkJaD1gZWNobyAkcnxzZWQgLWUncyxcLngkLC5oLCdgCisJCQlybSAtZiAkaAorCQkJJHtCfS9zdW5ycGMvY3Jvc3MtcnBjZ2VuIC1oICRyIC1vICRoIHx8IGJid2FybiAiJHtQTn06IHVuYWJsZSB0byBnZW5lcmF0ZSBoZWFkZXIgZm9yICRyIgorCQlkb25lCisJKQorCWVjaG8gIkFkanVzdCBsZGQgc2NyaXB0IgorCWlmIFsgLW4gIiR7UlRMRExJU1R9IiBdCisJdGhlbgorCQlwcmV2cnRsZD1gY2F0ICR7Qn0vZWxmL2xkZCB8IGdyZXAgIl5SVExETElTVD0iIHwgc2VkICdzI15SVExETElTVD0iXD9cKFteIl0qXCkiXD8kI1wxIydgCisJCWlmIFsgIiR7cHJldnJ0bGR9IiAhPSAiJHtSVExETElTVH0iIF0KKwkJdGhlbgorCQkJc2VkIC1pICR7Qn0vZWxmL2xkZCAtZSAicyNeUlRMRExJU1Q9LipcJCNSVExETElTVD1cIiR7cHJldnJ0bGR9ICR7UlRMRExJU1R9XCIjIgorCQlmaQorCWZpCisKK30KKworIyBVc2UgdGhlIGhvc3QgbG9jYWxlIGFyY2hpdmUgd2hlbiBidWlsdCBmb3IgbmF0aXZlc2RrIHNvIHRoYXQgd2UgZG9uJ3QgbmVlZCB0bworIyBzaGlwIGEgY29tcGxldGUgKDEwME1CKSBsb2NhbGUgc2V0LgorZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKyAgICBlY2hvICJjb21wbG9jYWxlZGlyPS91c3IvbGliL2xvY2FsZSIgPj4gJHtTfS9jb25maWdwYXJtcworfQorCityZXF1aXJlIGdsaWJjLXBhY2thZ2UuaW5jCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2lmdXBkb3duL2lmdXBkb3duXzAuOC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2lmdXBkb3duL2lmdXBkb3duXzAuOC4yLmJiCmluZGV4IDczMmIyOTUuLjlkZTAxZjkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9pZnVwZG93bl8wLjguMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaWZ1cGRvd24vaWZ1cGRvd25fMC44LjIuYmIKQEAgLTEzLDggKzEzLDYgQEAKIAkgICIKIFNSQ1JFViA9ICIwNWVhMmZkNGY0OWJiMTIwMWFlZWYyYTQyZWZiY2ZmOGYzMzYxMTJmIgogCi1FWFRSQV9PRU1BS0UgPSAiIgotCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvYnVpbGQtYXBwbGlhbmNlLWltYWdlXzE0LjAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvYnVpbGQtYXBwbGlhbmNlLWltYWdlXzE0LjAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmRjYjkyMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2J1aWxkLWFwcGxpYW5jZS1pbWFnZV8xNC4wLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJBbiBpbWFnZSBjb250YWluaW5nIHRoZSBidWlsZCBzeXN0ZW0gaXRzZWxmIgotREVTQ1JJUFRJT04gPSAiQW4gaW1hZ2UgY29udGFpbmluZyB0aGUgYnVpbGQgc3lzdGVtIHRoYXQgeW91IGNhbiBib290IGFuZCBydW4gdXNpbmcgZWl0aGVyIFZNd2FyZSBQbGF5ZXIgb3IgVk13YXJlIFdvcmtzdGF0aW9uLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2N1bWVudGF0aW9uL2J1aWxkLWFwcGxpYW5jZSIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9MSUNFTlNFO21kNT00ZDkyY2QzNzNhYmRhMzkzN2MyYmM0N2ZiYzQ5ZDY5MCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL0NPUFlJTkcuTUlUO21kNT0zZGE5Y2ZiY2I3ODhjODBhMDM4NDM2MWI0ZGUyMDQyMCIKLQotSU1BR0VfSU5TVEFMTCA9ICJwYWNrYWdlZ3JvdXAtY29yZS1ib290IHBhY2thZ2Vncm91cC1jb3JlLXNzaC1vcGVuc3NoIHBhY2thZ2Vncm91cC1zZWxmLWhvc3RlZCBrZXJuZWwtZGV2IGtlcm5lbC1kZXZzcmMgIgotCi1JTUFHRV9GRUFUVVJFUyArPSAieDExLWJhc2UgcGFja2FnZS1tYW5hZ2VtZW50IHNwbGFzaCIKLQotIyBFbnN1cmUgdGhlcmUncyBlbm91Z2ggc3BhY2UgdG8gZG8gYSBjb3JlLWltYWdlLXNhdG8gYnVpbGQsIHdpdGggcm1fd29yayBlbmFibGVkCi1JTUFHRV9ST09URlNfRVhUUkFfU1BBQ0UgPSAiNDE5NDMwNDAiCi0KLSMgRG8gYSBxdWlldCBib290IHdpdGggbGltaXRlZCBjb25zb2xlIG1lc3NhZ2VzCi1BUFBFTkQgKz0gInJvb3Rmc3R5cGU9ZXh0NCBxdWlldCIKLQotREVQRU5EUyA9ICJ6aXAtbmF0aXZlIgotSU1BR0VfRlNUWVBFUyA9ICJ2bWRrIgotCi1pbmhlcml0IGNvcmUtaW1hZ2UgbW9kdWxlLWJhc2UKLQotU1JDUkVWID89ICI1Zjg0ZDY1NDVlNmQ3YTJiZThlNjAzYTFmNGIxYWZhZTBkYWQwYTliIgotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wb2t5O2JyYW5jaD1rcm9nb3RoIFwKLSAgICAgICAgICAgZmlsZTovL1lvY3RvX0J1aWxkX0FwcGxpYW5jZS52bXggXAotICAgICAgICAgICBmaWxlOi8vWW9jdG9fQnVpbGRfQXBwbGlhbmNlLnZteGYgXAotICAgICAgICAgICBmaWxlOi8vUkVBRE1FX1ZpcnR1YWxCb3hfR3Vlc3RfQWRkaXRpb25zLnR4dCBcCi0gICAgICAgICAgIgotQkFfSU5DTFVERV9TT1VSQ0VTID8/PSAiMCIKLQotSU1BR0VfQ01EX2V4dDRfYXBwZW5kICgpIHsKLQkjIFdlIGRvbid0IG5lZWQgdG8gcmVzZXJ2ZSBtdWNoIHNwYWNlIGZvciByb290LCAwLjUlIGlzIG1vcmUgdGhhbiBlbm91Z2gKLQl0dW5lMmZzIC1tIDAuNSAke0RFUExPWV9ESVJfSU1BR0V9LyR7SU1BR0VfTkFNRX0ucm9vdGZzLmV4dDQKLX0KLQotZmFrZXJvb3QgZG9fcG9wdWxhdGVfcG9reV9zcmMgKCkgewotCSMgQmVjYXVzZSBmZXRjaDIncyBnaXQncyB1bnBhY2sgdXNlcyAtcyBjbG9uZWZsYWcsIHRoZSB1bnBhY2tlZCBnaXQgcmVwbwotCSMgd2lsbCBiZWNvbWUgaW52YWxpZCBpbiB0aGUgdGFyZ2V0LgotCXJtIC1yZiAke1dPUktESVJ9L2dpdC8uZ2l0Ci0Jcm0gLWYgJHtXT1JLRElSfS9naXQvLmdpdGlnbm9yZQotCi0JY3AgLVIgJHtXT1JLRElSfS9naXQgJHtJTUFHRV9ST09URlN9L2hvbWUvYnVpbGRlci9wb2t5Ci0KLQlta2RpciAtcCAke0lNQUdFX1JPT1RGU30vaG9tZS9idWlsZGVyL3Bva3kvYnVpbGQvY29uZgotCW1rZGlyIC1wICR7SU1BR0VfUk9PVEZTfS9ob21lL2J1aWxkZXIvcG9reS9idWlsZC9kb3dubG9hZHMKLQlpZiBbICR7QkFfSU5DTFVERV9TT1VSQ0VTfSAhPSAwIF07IHRoZW4KLQkJY3AgLVJwTCAke0RMX0RJUn0vKiAke0lNQUdFX1JPT1RGU30vaG9tZS9idWlsZGVyL3Bva3kvYnVpbGQvZG93bmxvYWRzLwotCQkjIFJlbW92ZSB0aGUgZ2l0Ml8qIHRhcmJhbGxzIC0tIHRoaXMgaXMgb2sgc2luY2Ugd2Ugc3RpbGwgaGF2ZSB0aGUgZ2l0Mi8uCi0JCXJtIC1yZiAke0lNQUdFX1JPT1RGU30vaG9tZS9idWlsZGVyL3Bva3kvYnVpbGQvZG93bmxvYWRzL2dpdDJfKgotCWZpCi0KLQkjIFBsYWNlIHRoZSBSRUFETUVfVmlydHVhbEJveF9HdWVzdF9BZGRpdGlvbnMgZmlsZSBpbiBidWlsZGVycyBob21lIGZvbGRlci4KLQljcCAke1dPUktESVJ9L1JFQURNRV9WaXJ0dWFsQm94X0d1ZXN0X0FkZGl0aW9ucy50eHQgJHtJTUFHRV9ST09URlN9L2hvbWUvYnVpbGRlci8KLQotCSMgQ3JlYXRlIGEgc3ltbGluaywgbmVlZGVkIGZvciBvdXQtb2YtdHJlZSBrZXJuZWwgbW9kdWxlcyBidWlsZAotCWxuIC1zbnIgJHtJTUFHRV9ST09URlN9L3Vzci9zcmMva2VybmVsICR7SU1BR0VfUk9PVEZTfS9saWIvbW9kdWxlcy8ke0tFUk5FTF9WRVJTSU9OfS9idWlsZAotCi0JZWNobyAiL3Vzci9iaW4iID4gJHtJTUFHRV9ST09URlN9L2hvbWUvYnVpbGRlci9wb2t5L2J1aWxkL3BzZXVkb2RvbmUKLQllY2hvICJJTkhFUklUICs9IFwicm1fd29ya1wiIiA+PiAke0lNQUdFX1JPT1RGU30vaG9tZS9idWlsZGVyL3Bva3kvYnVpbGQvY29uZi9hdXRvLmNvbmYKLQlta2RpciAtcCAke0lNQUdFX1JPT1RGU30vaG9tZS9idWlsZGVyL3BzZXVkbwotCWVjaG8gImV4cG9ydCBQU0VVRE9fUFJFRklYPS91c3IiID4+ICR7SU1BR0VfUk9PVEZTfS9ob21lL2J1aWxkZXIvLmJhc2hyYwotCWVjaG8gImV4cG9ydCBQU0VVRE9fTE9DQUxTVEFURURJUj0vaG9tZS9idWlsZGVyL3BzZXVkbyIgPj4gJHtJTUFHRV9ST09URlN9L2hvbWUvYnVpbGRlci8uYmFzaHJjCi0JZWNobyAiZXhwb3J0IFBTRVVET19MSUJESVI9L3Vzci9saWIvcHNldWRvL2xpYjY0IiA+PiAke0lNQUdFX1JPT1RGU30vaG9tZS9idWlsZGVyLy5iYXNocmMKLQotCSMgQWxzbyBzYXZlIChmb3IgcmVmZXJlbmNlIG9ubHkpIHRoZSBhY3R1YWwgU1JDUkVWIHVzZWQgdG8gY3JlYXRlIHRoaXMgaW1hZ2UKLQllY2hvICJleHBvcnQgQkFfU1JDUkVWPSR7U1JDUkVWfSIgPj4gJHtJTUFHRV9ST09URlN9L2hvbWUvYnVpbGRlci8uYmFzaHJjCi0JZWNobyAiIiA+PiAke0lNQUdFX1JPT1RGU30vaG9tZS9idWlsZGVyLy5iYXNocmMKLQllY2hvICIjIElmIHdvcmtpbmcgYmVoaW5kIGEgcHJveHkgYW5kIHVzaW5nIHRoZSBwcm92aWRlZCBvZS1naXQtcHJveHkgc2NyaXB0IiA+PiAke0lNQUdFX1JPT1RGU30vaG9tZS9idWlsZGVyLy5iYXNocmMKLQllY2hvICIjIHlvdSBuZWVkIHRvIHNldCBBTExfUFJPWFkgYmFzZWQgb24geW91ciBwcm94eSBzZXR0aW5ncy4iID4+ICR7SU1BR0VfUk9PVEZTfS9ob21lL2J1aWxkZXIvLmJhc2hyYwotCWVjaG8gIiMgRXhhbXBsZSBBTExfUFJPWFkgdmFsdWVzOiIgPj4gJHtJTUFHRV9ST09URlN9L2hvbWUvYnVpbGRlci8uYmFzaHJjCi0JZWNobyAiIyBleHBvcnQgQUxMX1BST1hZPWh0dHBzOi8vcHJveHkuZXhhbXBsZS5jb206ODA4MCIgPj4gJHtJTUFHRV9ST09URlN9L2hvbWUvYnVpbGRlci8uYmFzaHJjCi0JZWNobyAiIyBleHBvcnQgQUxMX1BST1hZPXNvY2tzOi8vc29ja3MuZXhhbXBsZS5jb206MTA4MCIgPj4gJHtJTUFHRV9ST09URlN9L2hvbWUvYnVpbGRlci8uYmFzaHJjCi0KLQljaG93biBidWlsZGVyLmJ1aWxkZXIgJHtJTUFHRV9ST09URlN9L2hvbWUvYnVpbGRlci9wc2V1ZG8KLQotCWNob3duIC1SIGJ1aWxkZXIuYnVpbGRlciAke0lNQUdFX1JPT1RGU30vaG9tZS9idWlsZGVyL3Bva3kKLQljaG1vZCAtUiB1ZytydyAke0lNQUdFX1JPT1RGU30vaG9tZS9idWlsZGVyL3Bva3kKLQotCSMgQXNzdW1lIHdlIHdpbGwgbmVlZCBDRFJPTSB0byBpbnN0YWxsIGd1ZXN0IGFkZGl0aW9ucwotCW1rZGlyIC1wICR7SU1BR0VfUk9PVEZTfS9tZWRpYS9jZHJvbQotCi0JIyBBbGxvdyBidWlsZGVyIHRvIHVzZSBzdWRvCi0JZWNobyAiYnVpbGRlciBBTEw9KEFMTCkgTk9QQVNTV0Q6IEFMTCIgPj4gJHtJTUFHRV9ST09URlN9L2V0Yy9zdWRvZXJzCi0KLQkjIExvYWQgdGFwL3R1biBhdCBzdGFydHVwCi0JbG4gLXNyICR7SU1BR0VfUk9PVEZTfS91c3Ivc2Jpbi9pcHRhYmxlcyAke0lNQUdFX1JPT1RGU30vc2Jpbi9pcHRhYmxlcwotCWVjaG8gInR1biIgPj4gJHtJTUFHRV9ST09URlN9L2V0Yy9tb2R1bGVzCi0KLQkjIFVzZSBDbGVhcmxvb2tzIEdUSysgdGhlbWUKLQlta2RpciAtcCAke0lNQUdFX1JPT1RGU30vZXRjL2d0ay0yLjAKLQllY2hvICdndGstdGhlbWUtbmFtZSA9ICJDbGVhcmxvb2tzIicgPiAke0lNQUdFX1JPT1RGU30vZXRjL2d0ay0yLjAvZ3RrcmMKLX0KLQotSU1BR0VfUFJFUFJPQ0VTU19DT01NQU5EICs9ICJkb19wb3B1bGF0ZV9wb2t5X3NyYzsgIgotCi1hZGR0YXNrIHJvb3RmcyBhZnRlciBkb191bnBhY2sKLQotcHl0aG9uICgpIHsKLQkjIEVuc3VyZSB3ZSBydW4gdGhlc2UgdXN1YWxseSBub2V4ZWMgdGFza3MKLQlkLmRlbFZhckZsYWcoImRvX2ZldGNoIiwgIm5vZXhlYyIpCi0JZC5kZWxWYXJGbGFnKCJkb191bnBhY2siLCAibm9leGVjIikKLX0KLQotY3JlYXRlX2J1bmRsZV9maWxlcyAoKSB7Ci0JY2QgJHtXT1JLRElSfQotCW1rZGlyIC1wIFlvY3RvX0J1aWxkX0FwcGxpYW5jZQotCWNwICoudm14KiBZb2N0b19CdWlsZF9BcHBsaWFuY2UKLQlsbiAtc2YgJHtERVBMT1lfRElSX0lNQUdFfS8ke0lNQUdFX05BTUV9LnZtZGsgWW9jdG9fQnVpbGRfQXBwbGlhbmNlL1lvY3RvX0J1aWxkX0FwcGxpYW5jZS52bWRrCi0JemlwIC1yICR7REVQTE9ZX0RJUl9JTUFHRX0vWW9jdG9fQnVpbGRfQXBwbGlhbmNlLSR7REFURVRJTUV9LnppcCBZb2N0b19CdWlsZF9BcHBsaWFuY2UKLQlsbiAtc2YgWW9jdG9fQnVpbGRfQXBwbGlhbmNlLSR7REFURVRJTUV9LnppcCAke0RFUExPWV9ESVJfSU1BR0V9L1lvY3RvX0J1aWxkX0FwcGxpYW5jZS56aXAgCi19Ci1jcmVhdGVfYnVuZGxlX2ZpbGVzW3ZhcmRlcHNleGNsdWRlXSA9ICJEQVRFVElNRSIKLQotcHl0aG9uIGRvX2J1bmRsZV9maWxlcygpIHsKLSAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ2NyZWF0ZV9idW5kbGVfZmlsZXMnLCBkKQotfQotCi1hZGR0YXNrIGJ1bmRsZV9maWxlcyBhZnRlciBkb192bWltZyBiZWZvcmUgZG9fYnVpbGQKLWRvX2J1bmRsZV9maWxlc1tub3N0YW1wXSA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9idWlsZC1hcHBsaWFuY2UtaW1hZ2VfMTUuMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9idWlsZC1hcHBsaWFuY2UtaW1hZ2VfMTUuMC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2ZWQwZjQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2J1aWxkLWFwcGxpYW5jZS1pbWFnZV8xNS4wLjAuYmIKQEAgLTAsMCArMSwxMTcgQEAKK1NVTU1BUlkgPSAiQW4gaW1hZ2UgY29udGFpbmluZyB0aGUgYnVpbGQgc3lzdGVtIGl0c2VsZiIKK0RFU0NSSVBUSU9OID0gIkFuIGltYWdlIGNvbnRhaW5pbmcgdGhlIGJ1aWxkIHN5c3RlbSB0aGF0IHlvdSBjYW4gYm9vdCBhbmQgcnVuIHVzaW5nIGVpdGhlciBWTXdhcmUgUGxheWVyIG9yIFZNd2FyZSBXb3Jrc3RhdGlvbi4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jdW1lbnRhdGlvbi9idWlsZC1hcHBsaWFuY2UiCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vTElDRU5TRTttZDU9NGQ5MmNkMzczYWJkYTM5MzdjMmJjNDdmYmM0OWQ2OTAgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9DT1BZSU5HLk1JVDttZDU9M2RhOWNmYmNiNzg4YzgwYTAzODQzNjFiNGRlMjA0MjAiCisKK0lNQUdFX0lOU1RBTEwgPSAicGFja2FnZWdyb3VwLWNvcmUtYm9vdCBwYWNrYWdlZ3JvdXAtY29yZS1zc2gtb3BlbnNzaCBwYWNrYWdlZ3JvdXAtc2VsZi1ob3N0ZWQgXAorICAgICAgICAgICAgICAgICBrZXJuZWwtZGV2IGtlcm5lbC1kZXZzcmMgY29ubm1hbiBjb25ubWFuLXBsdWdpbi1ldGhlcm5ldCBkaGNwLWNsaWVudCIKKworSU1BR0VfRkVBVFVSRVMgKz0gIngxMS1iYXNlIHBhY2thZ2UtbWFuYWdlbWVudCBzcGxhc2giCisKKyMgRW5zdXJlIHRoZXJlJ3MgZW5vdWdoIHNwYWNlIHRvIGRvIGEgY29yZS1pbWFnZS1zYXRvIGJ1aWxkLCB3aXRoIHJtX3dvcmsgZW5hYmxlZAorSU1BR0VfUk9PVEZTX0VYVFJBX1NQQUNFID0gIjQxOTQzMDQwIgorCisjIERvIGEgcXVpZXQgYm9vdCB3aXRoIGxpbWl0ZWQgY29uc29sZSBtZXNzYWdlcworQVBQRU5EICs9ICJyb290ZnN0eXBlPWV4dDQgcXVpZXQiCisKK0RFUEVORFMgPSAiemlwLW5hdGl2ZSIKK0lNQUdFX0ZTVFlQRVMgPSAidm1kayIKKworaW5oZXJpdCBjb3JlLWltYWdlIG1vZHVsZS1iYXNlCisKK1NSQ1JFViA/PSAiNzQ2YzY4MWJlNGM3NDRkMGM2YzJkMzIyNWI5NDU1MDI0MTU0NmY2NSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcG9reTticmFuY2g9bW9ydHkgXAorICAgICAgICAgICBmaWxlOi8vWW9jdG9fQnVpbGRfQXBwbGlhbmNlLnZteCBcCisgICAgICAgICAgIGZpbGU6Ly9Zb2N0b19CdWlsZF9BcHBsaWFuY2Uudm14ZiBcCisgICAgICAgICAgIGZpbGU6Ly9SRUFETUVfVmlydHVhbEJveF9HdWVzdF9BZGRpdGlvbnMudHh0IFwKKyAgICAgICAgICAiCitCQV9JTkNMVURFX1NPVVJDRVMgPz89ICIwIgorCitJTUFHRV9DTURfZXh0NF9hcHBlbmQgKCkgeworCSMgV2UgZG9uJ3QgbmVlZCB0byByZXNlcnZlIG11Y2ggc3BhY2UgZm9yIHJvb3QsIDAuNSUgaXMgbW9yZSB0aGFuIGVub3VnaAorCXR1bmUyZnMgLW0gMC41ICR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9LnJvb3Rmcy5leHQ0Cit9CisKK2Zha2Vyb290IGRvX3BvcHVsYXRlX3Bva3lfc3JjICgpIHsKKwkjIEJlY2F1c2UgZmV0Y2gyJ3MgZ2l0J3MgdW5wYWNrIHVzZXMgLXMgY2xvbmVmbGFnLCB0aGUgdW5wYWNrZWQgZ2l0IHJlcG8KKwkjIHdpbGwgYmVjb21lIGludmFsaWQgaW4gdGhlIHRhcmdldC4KKwlybSAtcmYgJHtXT1JLRElSfS9naXQvLmdpdAorCXJtIC1mICR7V09SS0RJUn0vZ2l0Ly5naXRpZ25vcmUKKworCWNwIC1SICR7V09SS0RJUn0vZ2l0ICR7SU1BR0VfUk9PVEZTfS9ob21lL2J1aWxkZXIvcG9reQorCisJbWtkaXIgLXAgJHtJTUFHRV9ST09URlN9L2hvbWUvYnVpbGRlci9wb2t5L2J1aWxkL2NvbmYKKwlta2RpciAtcCAke0lNQUdFX1JPT1RGU30vaG9tZS9idWlsZGVyL3Bva3kvYnVpbGQvZG93bmxvYWRzCisJaWYgWyAke0JBX0lOQ0xVREVfU09VUkNFU30gIT0gMCBdOyB0aGVuCisJCWNwIC1ScEwgJHtETF9ESVJ9LyogJHtJTUFHRV9ST09URlN9L2hvbWUvYnVpbGRlci9wb2t5L2J1aWxkL2Rvd25sb2Fkcy8KKwkJIyBSZW1vdmUgdGhlIGdpdDJfKiB0YXJiYWxscyAtLSB0aGlzIGlzIG9rIHNpbmNlIHdlIHN0aWxsIGhhdmUgdGhlIGdpdDIvLgorCQlybSAtcmYgJHtJTUFHRV9ST09URlN9L2hvbWUvYnVpbGRlci9wb2t5L2J1aWxkL2Rvd25sb2Fkcy9naXQyXyoKKwlmaQorCisJIyBQbGFjZSB0aGUgUkVBRE1FX1ZpcnR1YWxCb3hfR3Vlc3RfQWRkaXRpb25zIGZpbGUgaW4gYnVpbGRlcnMgaG9tZSBmb2xkZXIuCisJY3AgJHtXT1JLRElSfS9SRUFETUVfVmlydHVhbEJveF9HdWVzdF9BZGRpdGlvbnMudHh0ICR7SU1BR0VfUk9PVEZTfS9ob21lL2J1aWxkZXIvCisKKwkjIENyZWF0ZSBhIHN5bWxpbmssIG5lZWRlZCBmb3Igb3V0LW9mLXRyZWUga2VybmVsIG1vZHVsZXMgYnVpbGQKKwlsbnIgJHtJTUFHRV9ST09URlN9JHtLRVJORUxfU1JDX1BBVEh9ICR7SU1BR0VfUk9PVEZTfS9saWIvbW9kdWxlcy8ke0tFUk5FTF9WRVJTSU9OfS9idWlsZAorCisJZWNobyAiSU5IRVJJVCArPSBcInJtX3dvcmtcIiIgPj4gJHtJTUFHRV9ST09URlN9L2hvbWUvYnVpbGRlci9wb2t5L2J1aWxkL2NvbmYvYXV0by5jb25mCisJZWNobyAiZXhwb3J0IExDX0FMTD1lbl9VUy51dGY4IiA+PiAke0lNQUdFX1JPT1RGU30vaG9tZS9idWlsZGVyLy5iYXNocmMKKworCSMgQWxzbyBzYXZlIChmb3IgcmVmZXJlbmNlIG9ubHkpIHRoZSBhY3R1YWwgU1JDUkVWIHVzZWQgdG8gY3JlYXRlIHRoaXMgaW1hZ2UKKwllY2hvICJleHBvcnQgQkFfU1JDUkVWPSR7U1JDUkVWfSIgPj4gJHtJTUFHRV9ST09URlN9L2hvbWUvYnVpbGRlci8uYmFzaHJjCisJZWNobyAiIiA+PiAke0lNQUdFX1JPT1RGU30vaG9tZS9idWlsZGVyLy5iYXNocmMKKwllY2hvICJleHBvcnQgUEFUSD0kUEFUSDovc2JpbiIgPj4gJHtJTUFHRV9ST09URlN9L2hvbWUvYnVpbGRlci8uYmFzaHJjCisJZWNobyAiIiA+PiAke0lNQUdFX1JPT1RGU30vaG9tZS9idWlsZGVyLy5iYXNocmMKKworCWVjaG8gIiMgSWYgd29ya2luZyBiZWhpbmQgYSBwcm94eSBhbmQgdXNpbmcgdGhlIHByb3ZpZGVkIG9lLWdpdC1wcm94eSBzY3JpcHQiID4+ICR7SU1BR0VfUk9PVEZTfS9ob21lL2J1aWxkZXIvLmJhc2hyYworCWVjaG8gIiMgeW91IG5lZWQgdG8gc2V0IEFMTF9QUk9YWSBiYXNlZCBvbiB5b3VyIHByb3h5IHNldHRpbmdzLiIgPj4gJHtJTUFHRV9ST09URlN9L2hvbWUvYnVpbGRlci8uYmFzaHJjCisJZWNobyAiIyBFeGFtcGxlIEFMTF9QUk9YWSB2YWx1ZXM6IiA+PiAke0lNQUdFX1JPT1RGU30vaG9tZS9idWlsZGVyLy5iYXNocmMKKwllY2hvICIjIGV4cG9ydCBBTExfUFJPWFk9aHR0cHM6Ly9wcm94eS5leGFtcGxlLmNvbTo4MDgwIiA+PiAke0lNQUdFX1JPT1RGU30vaG9tZS9idWlsZGVyLy5iYXNocmMKKwllY2hvICIjIGV4cG9ydCBBTExfUFJPWFk9c29ja3M6Ly9zb2Nrcy5leGFtcGxlLmNvbToxMDgwIiA+PiAke0lNQUdFX1JPT1RGU30vaG9tZS9idWlsZGVyLy5iYXNocmMKKworCWNob3duIC1SIGJ1aWxkZXIuYnVpbGRlciAke0lNQUdFX1JPT1RGU30vaG9tZS9idWlsZGVyL3Bva3kKKwljaG1vZCAtUiB1ZytydyAke0lNQUdFX1JPT1RGU30vaG9tZS9idWlsZGVyL3Bva3kKKworCSMgQXNzdW1lIHdlIHdpbGwgbmVlZCBDRFJPTSB0byBpbnN0YWxsIGd1ZXN0IGFkZGl0aW9ucworCW1rZGlyIC1wICR7SU1BR0VfUk9PVEZTfS9tZWRpYS9jZHJvbQorCisJIyBBbGxvdyBidWlsZGVyIHRvIHVzZSBzdWRvCisJZWNobyAiYnVpbGRlciBBTEw9KEFMTCkgTk9QQVNTV0Q6IEFMTCIgPj4gJHtJTUFHRV9ST09URlN9L2V0Yy9zdWRvZXJzCisKKwkjIExvYWQgdGFwL3R1biBhdCBzdGFydHVwCisJbG5yICR7SU1BR0VfUk9PVEZTfS91c3Ivc2Jpbi9pcHRhYmxlcyAke0lNQUdFX1JPT1RGU30vc2Jpbi9pcHRhYmxlcworCWVjaG8gInR1biIgPj4gJHtJTUFHRV9ST09URlN9L2V0Yy9tb2R1bGVzCisKKwkjIFVzZSBDbGVhcmxvb2tzIEdUSysgdGhlbWUKKwlta2RpciAtcCAke0lNQUdFX1JPT1RGU30vZXRjL2d0ay0yLjAKKwllY2hvICdndGstdGhlbWUtbmFtZSA9ICJDbGVhcmxvb2tzIicgPiAke0lNQUdFX1JPT1RGU30vZXRjL2d0ay0yLjAvZ3RrcmMKK30KKworSU1BR0VfUFJFUFJPQ0VTU19DT01NQU5EICs9ICJkb19wb3B1bGF0ZV9wb2t5X3NyYzsgIgorCithZGR0YXNrIHJvb3RmcyBhZnRlciBkb191bnBhY2sKKworcHl0aG9uICgpIHsKKwkjIEVuc3VyZSB3ZSBydW4gdGhlc2UgdXN1YWxseSBub2V4ZWMgdGFza3MKKwlkLmRlbFZhckZsYWcoImRvX2ZldGNoIiwgIm5vZXhlYyIpCisJZC5kZWxWYXJGbGFnKCJkb191bnBhY2siLCAibm9leGVjIikKK30KKworY3JlYXRlX2J1bmRsZV9maWxlcyAoKSB7CisJY2QgJHtXT1JLRElSfQorCW1rZGlyIC1wIFlvY3RvX0J1aWxkX0FwcGxpYW5jZQorCWNwICoudm14KiBZb2N0b19CdWlsZF9BcHBsaWFuY2UKKwlsbiAtc2YgJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0udm1kayBZb2N0b19CdWlsZF9BcHBsaWFuY2UvWW9jdG9fQnVpbGRfQXBwbGlhbmNlLnZtZGsKKwl6aXAgLXIgJHtJTUdERVBMT1lESVJ9L1lvY3RvX0J1aWxkX0FwcGxpYW5jZS0ke0RBVEVUSU1FfS56aXAgWW9jdG9fQnVpbGRfQXBwbGlhbmNlCisJbG4gLXNmIFlvY3RvX0J1aWxkX0FwcGxpYW5jZS0ke0RBVEVUSU1FfS56aXAgJHtJTUdERVBMT1lESVJ9L1lvY3RvX0J1aWxkX0FwcGxpYW5jZS56aXAKK30KK2NyZWF0ZV9idW5kbGVfZmlsZXNbdmFyZGVwc2V4Y2x1ZGVdID0gIkRBVEVUSU1FIgorCitweXRob24gZG9fYnVuZGxlX2ZpbGVzKCkgeworICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnY3JlYXRlX2J1bmRsZV9maWxlcycsIGQpCit9CisKK2FkZHRhc2sgYnVuZGxlX2ZpbGVzIGFmdGVyIGRvX3ZtaW1nIGJlZm9yZSBkb19pbWFnZV9jb21wbGV0ZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9jb3JlLWltYWdlLW1pbmltYWwtaW5pdHJhbWZzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9jb3JlLWltYWdlLW1pbmltYWwtaW5pdHJhbWZzLmJiCmluZGV4IDhkN2MwZDIuLjU3OTRhMjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvY29yZS1pbWFnZS1taW5pbWFsLWluaXRyYW1mcy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2NvcmUtaW1hZ2UtbWluaW1hbC1pbml0cmFtZnMuYmIKQEAgLTIwLDMgKzIwLDYgQEAKIElNQUdFX1JPT1RGU19FWFRSQV9TUEFDRSA9ICIwIgogCiBCQURfUkVDT01NRU5EQVRJT05TICs9ICJidXN5Ym94LXN5c2xvZyIKKworIyBVc2UgdGhlIHNhbWUgcmVzdHJpY3Rpb24gYXMgaW5pdHJhbWZzLWxpdmUtaW5zdGFsbAorQ09NUEFUSUJMRV9IT1NUID0gIihpLjg2fHg4Nl82NCkuKi1saW51eCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2ZpbGVzL2luaXQtaW5zdGFsbC1lZmkuc2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9maWxlcy9pbml0LWluc3RhbGwtZWZpLnNoCmluZGV4IGQ1ODgyNmEuLjQ0MWUyNTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2ZpbGVzL2luaXQtaW5zdGFsbC1lZmkuc2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvZmlsZXMvaW5pdC1pbnN0YWxsLWVmaS5zaApAQCAtMjksNyArMjksMTMgQEAKIAogZWNobyAiU2VhcmNoaW5nIGZvciBoYXJkIGRyaXZlcyAuLi4iCiAKLWZvciBkZXZpY2UgaW4gYGxzIC9zeXMvYmxvY2svYDsgZG8KKyMgU29tZSBlTU1DIGRldmljZXMgaGF2ZSBzcGVjaWFsIHN1YiBkZXZpY2VzIHN1Y2ggYXMgbW1jYmxrMGJvb3QwIGV0YworIyB3ZSdyZSBjdXJyZW50bHkgb25seSBpbnRlcmVzdGVkIGluIHRoZSByb290IGRldmljZSBzbyBwaWNrIHRoZW0gd2lzZWx5CitkZXZpY2VzPWBscyAvc3lzL2Jsb2NrLyB8IGdyZXAgLXYgbW1jYmxrYCB8fCB0cnVlCittbWNfZGV2aWNlcz1gbHMgL3N5cy9ibG9jay8gfCBncmVwICJtbWNibGtbMC05XVx7MSxcfSQiYCB8fCB0cnVlCitkZXZpY2VzPSIkZGV2aWNlcyAkbW1jX2RldmljZXMiCisKK2ZvciBkZXZpY2UgaW4gJGRldmljZXM7IGRvCiAgICAgY2FzZSAkZGV2aWNlIGluCiAgICAgICAgIGxvb3AqKQogICAgICAgICAgICAgIyBza2lwIGxvb3AgZGV2aWNlCkBAIC03OCwxNyArODQsMjMgQEAKICAgICAgICAgY2F0IC9zeXMvYmxvY2svJGhkbmFtZS9kZXZpY2UvdWV2ZW50CiAgICAgZmkKICAgICBlY2hvCi0gICAgIyBHZXQgdXNlciBjaG9pY2UKLSAgICB3aGlsZSB0cnVlOyBkbwotICAgICAgICBlY2hvIC1uICJEbyB5b3Ugd2FudCB0byBpbnN0YWxsIHRoaXMgaW1hZ2UgdGhlcmU/IFt5L25dICIKLSAgICAgICAgcmVhZCBhbnN3ZXIKLSAgICAgICAgaWYgWyAiJGFuc3dlciIgPSAieSIgLW8gIiRhbnN3ZXIiID0gIm4iIF07IHRoZW4KK2RvbmUKKworIyBHZXQgdXNlciBjaG9pY2UKK3doaWxlIHRydWU7IGRvCisgICAgZWNobyAiUGxlYXNlIHNlbGVjdCBhbiBpbnN0YWxsIHRhcmdldCBvciBwcmVzcyBuIHRvIGV4aXQgKCRoZG5hbWVsaXN0ICk6ICIKKyAgICByZWFkIGFuc3dlcgorICAgIGlmIFsgIiRhbnN3ZXIiID0gIm4iIF07IHRoZW4KKyAgICAgICAgZWNobyAiSW5zdGFsbGF0aW9uIG1hbnVhbGx5IGFib3J0ZWQuIgorICAgICAgICBleGl0IDEKKyAgICBmaQorICAgIGZvciBoZG5hbWUgaW4gJGhkbmFtZWxpc3Q7IGRvCisgICAgICAgIGlmIFsgIiRhbnN3ZXIiID0gIiRoZG5hbWUiIF07IHRoZW4KKyAgICAgICAgICAgIFRBUkdFVF9ERVZJQ0VfTkFNRT0kYW5zd2VyCiAgICAgICAgICAgICBicmVhawogICAgICAgICBmaQotICAgICAgICBlY2hvICJQbGVhc2UgYW5zd2VyIHkgb3IgbiIKICAgICBkb25lCi0gICAgaWYgWyAiJGFuc3dlciIgPSAieSIgXTsgdGhlbgotICAgICAgICBUQVJHRVRfREVWSUNFX05BTUU9JGhkbmFtZQorICAgIGlmIFsgLW4gIiRUQVJHRVRfREVWSUNFX05BTUUiIF07IHRoZW4KICAgICAgICAgYnJlYWsKICAgICBmaQogZG9uZQpAQCAtMTE2LDggKzEyOCw4IEBACiBta2RpciAtcCAvdG1wCiAKICMgQ3JlYXRlIC9ldGMvbXRhYiBpZiBub3QgcHJlc2VudAotaWYgWyAhIC1lIC9ldGMvbXRhYiBdOyB0aGVuCi0gICAgY2F0IC9wcm9jL21vdW50cyA+IC9ldGMvbXRhYgoraWYgWyAhIC1lIC9ldGMvbXRhYiBdICYmIFsgLWUgL3Byb2MvbW91bnRzIF07IHRoZW4KKyAgICBsbiAtc2YgL3Byb2MvbW91bnRzIC9ldGMvbXRhYgogZmkKIAogZGlza19zaXplPSQocGFydGVkICR7ZGV2aWNlfSB1bml0IG1iIHByaW50IHwgZ3JlcCAnXkRpc2sgLio6IC4qTUInIHwgY3V0IC1kIiAiIC1mIDMgfCBzZWQgLWUgInMvTUIvLyIpCkBAIC0xMzgsNiArMTUwLDEyIEBACiAgICAgcGFydF9wcmVmaXg9InAiCiAgICAgcm9vdHdhaXQ9InJvb3R3YWl0IgogZmkKKworIyBVU0IgZGV2aWNlcyBhbHNvIHJlcXVpcmUgcm9vdHdhaXQKK2lmIFsgLW4gYHJlYWRsaW5rIC9kZXYvZGlzay9ieS1pZC91c2IqIHwgZ3JlcCAkVEFSR0VUX0RFVklDRV9OQU1FYCBdOyB0aGVuCisgICAgcm9vdHdhaXQ9InJvb3R3YWl0IgorZmkKKwogYm9vdGZzPSR7ZGV2aWNlfSR7cGFydF9wcmVmaXh9MQogcm9vdGZzPSR7ZGV2aWNlfSR7cGFydF9wcmVmaXh9Mgogc3dhcD0ke2RldmljZX0ke3BhcnRfcHJlZml4fTMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2ZpbGVzL2luaXQtaW5zdGFsbC5zaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2ZpbGVzL2luaXQtaW5zdGFsbC5zaAppbmRleCBjNTYyM2VlLi4wNGNlNWZiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9maWxlcy9pbml0LWluc3RhbGwuc2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvZmlsZXMvaW5pdC1pbnN0YWxsLnNoCkBAIC0yOCw3ICsyOCwxMyBAQAogCiBlY2hvICJTZWFyY2hpbmcgZm9yIGhhcmQgZHJpdmVzIC4uLiIKIAotZm9yIGRldmljZSBpbiBgbHMgL3N5cy9ibG9jay9gOyBkbworIyBTb21lIGVNTUMgZGV2aWNlcyBoYXZlIHNwZWNpYWwgc3ViIGRldmljZXMgc3VjaCBhcyBtbWNibGswYm9vdDAgZXRjCisjIHdlJ3JlIGN1cnJlbnRseSBvbmx5IGludGVyZXN0ZWQgaW4gdGhlIHJvb3QgZGV2aWNlIHNvIHBpY2sgdGhlbSB3aXNlbHkKK2RldmljZXM9YGxzIC9zeXMvYmxvY2svIHwgZ3JlcCAtdiBtbWNibGtgIHx8IHRydWUKK21tY19kZXZpY2VzPWBscyAvc3lzL2Jsb2NrLyB8IGdyZXAgIm1tY2Jsa1swLTldXHsxLFx9JCJgIHx8IHRydWUKK2RldmljZXM9IiRkZXZpY2VzICRtbWNfZGV2aWNlcyIKKworZm9yIGRldmljZSBpbiAkZGV2aWNlczsgZG8KICAgICBjYXNlICRkZXZpY2UgaW4KICAgICAgICAgbG9vcCopCiAgICAgICAgICAgICAjIHNraXAgbG9vcCBkZXZpY2UKQEAgLTcyLDE3ICs3OCwyMyBAQAogICAgICAgICBjYXQgL3N5cy9ibG9jay8kaGRuYW1lL2RldmljZS91ZXZlbnQKICAgICBmaQogICAgIGVjaG8KLSAgICAjIEdldCB1c2VyIGNob2ljZQotICAgIHdoaWxlIHRydWU7IGRvCi0gICAgICAgIGVjaG8gLW4gIkRvIHlvdSB3YW50IHRvIGluc3RhbGwgdGhpcyBpbWFnZSB0aGVyZT8gW3kvbl0gIgotICAgICAgICByZWFkIGFuc3dlcgotICAgICAgICBpZiBbICIkYW5zd2VyIiA9ICJ5IiAtbyAiJGFuc3dlciIgPSAibiIgXTsgdGhlbgorZG9uZQorCisjIEdldCB1c2VyIGNob2ljZQord2hpbGUgdHJ1ZTsgZG8KKyAgICBlY2hvICJQbGVhc2Ugc2VsZWN0IGFuIGluc3RhbGwgdGFyZ2V0IG9yIHByZXNzIG4gdG8gZXhpdCAoJGhkbmFtZWxpc3QgKTogIgorICAgIHJlYWQgYW5zd2VyCisgICAgaWYgWyAiJGFuc3dlciIgPSAibiIgXTsgdGhlbgorICAgICAgICBlY2hvICJJbnN0YWxsYXRpb24gbWFudWFsbHkgYWJvcnRlZC4iCisgICAgICAgIGV4aXQgMQorICAgIGZpCisgICAgZm9yIGhkbmFtZSBpbiAkaGRuYW1lbGlzdDsgZG8KKyAgICAgICAgaWYgWyAiJGFuc3dlciIgPSAiJGhkbmFtZSIgXTsgdGhlbgorICAgICAgICAgICAgVEFSR0VUX0RFVklDRV9OQU1FPSRhbnN3ZXIKICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgIGZpCi0gICAgICAgIGVjaG8gIlBsZWFzZSBhbnN3ZXIgeSBvciBuIgogICAgIGRvbmUKLSAgICBpZiBbICIkYW5zd2VyIiA9ICJ5IiBdOyB0aGVuCi0gICAgICAgIFRBUkdFVF9ERVZJQ0VfTkFNRT0kaGRuYW1lCisgICAgaWYgWyAtbiAiJFRBUkdFVF9ERVZJQ0VfTkFNRSIgXTsgdGhlbgogICAgICAgICBicmVhawogICAgIGZpCiBkb25lCkBAIC0xMTIsOCArMTI0LDggQEAKIGZpCiAKIG1rZGlyIC1wIC90bXAKLWlmIFsgISAtTCAvZXRjL210YWIgXTsgdGhlbgotICAgIGNhdCAvcHJvYy9tb3VudHMgPiAvZXRjL210YWIKK2lmIFsgISAtTCAvZXRjL210YWIgXSAmJiBbIC1lIC9wcm9jL21vdW50cyBdOyB0aGVuCisgICAgbG4gLXNmIC9wcm9jL21vdW50cyAvZXRjL210YWIKIGZpCiAKIGRpc2tfc2l6ZT0kKHBhcnRlZCAke2RldmljZX0gdW5pdCBtYiBwcmludCB8IGdyZXAgJ15EaXNrIC4qOiAuKk1CJyB8IGN1dCAtZCIgIiAtZiAzIHwgc2VkIC1lICJzL01CLy8iKQpAQCAtMTQ2LDYgKzE1OCwxMSBAQAogICAgIHJvb3R3YWl0PSJyb290d2FpdCIKIGZpCiAKKyMgVVNCIGRldmljZXMgYWxzbyByZXF1aXJlIHJvb3R3YWl0CitpZiBbIC1uIGByZWFkbGluayAvZGV2L2Rpc2svYnktaWQvdXNiKiB8IGdyZXAgJFRBUkdFVF9ERVZJQ0VfTkFNRWAgXTsgdGhlbgorICAgIHJvb3R3YWl0PSJyb290d2FpdCIKK2ZpCisKIGlmIFsgJGdydWJfdmVyc2lvbiAtZXEgMCBdIDsgdGhlbgogICAgIGJpb3NfYm9vdD0nJwogICAgIGJvb3Rmcz0ke2RldmljZX0ke3BhcnRfcHJlZml4fTEKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2ZpbGVzL2luaXQtbGl2ZS5zaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2ZpbGVzL2luaXQtbGl2ZS5zaAppbmRleCAwOWZiNDc5Li40NDFiNDFjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9maWxlcy9pbml0LWxpdmUuc2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvZmlsZXMvaW5pdC1saXZlLnNoCkBAIC04MCw3ICs4MCw5IEBACiBib290X2xpdmVfcm9vdCgpIHsKICAgICAjIFdhdGNoZXMgdGhlIHVkZXYgZXZlbnQgcXVldWUsIGFuZCBleGl0cyBpZiBhbGwgY3VycmVudCBldmVudHMgYXJlIGhhbmRsZWQKICAgICB1ZGV2YWRtIHNldHRsZSAtLXRpbWVvdXQ9MyAtLXF1aWV0Ci0gICAga2lsbGFsbCAiJHtfVURFVl9EQUVNT04jIyovfSIgMj4vZGV2L251bGwKKyAgICAjIEtpbGxzIHRoZSBjdXJyZW50IHVkZXYgcnVubmluZyBwcm9jZXNzZXMsIHdoaWNoIHN1cnZpdmVkIGFmdGVyCisgICAgIyBkZXZpY2Ugbm9kZSBjcmVhdGlvbiBldmVudHMgd2VyZSBoYW5kbGVkLCB0byBhdm9pZCB1bmV4cGVjdGVkIGJlaGF2aW9yCisgICAga2lsbGFsbCAtOSAiJHtfVURFVl9EQUVNT04jIyovfSIgMj4vZGV2L251bGwKIAogICAgICMgQWxsb3cgZm9yIGlkZW50aWZpY2F0aW9uIG9mIHRoZSByZWFsIHJvb3QgZXZlbiBhZnRlciBib290CiAgICAgbWtkaXIgLXAgICR7Uk9PVF9NT1VOVH0vbWVkaWEvcmVhbHJvb3QKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmsvZmluaXNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29yay9maW5pc2gKaW5kZXggZDA5YmJiOC4uNzE3MzgzZSAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29yay9maW5pc2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29yay9maW5pc2gKQEAgLTgsMzkgKzgsNiBAQAogCiBmaW5pc2hfcnVuKCkgewogCWlmIFsgLW4gIiRST09URlNfRElSIiBdOyB0aGVuCi0JCWlmIFsgLW4gIiRib290cGFyYW1fcm9vdGRlbGF5IiBdOyB0aGVuCi0JCQlkZWJ1ZyAiU2xlZXBpbmcgZm9yICRyb290ZGVsYXkgc2Vjb25kKHMpIHRvIHdhaXQgcm9vdCB0byBzZXR0bGUuLi4iCi0JCQlzbGVlcCAkYm9vdHBhcmFtX3Jvb3RkZWxheQotCQlmaQotCi0JCWlmIFsgLW4gIiRib290cGFyYW1fcm9vdCIgXTsgdGhlbgotCQkJZGVidWcgIk5vIGUyZnMgY29tcGF0aWJsZSBmaWxlc3lzdGVtIGhhcyBiZWVuIG1vdW50ZWQsIG1vdW50aW5nICRib290cGFyYW1fcm9vdC4uLiIKLQotCQkJaWYgWyAiYGVjaG8gJHtib290cGFyYW1fcm9vdH0gfCBjdXQgLWMxLTVgIiA9ICJVVUlEPSIgXTsgdGhlbgotCQkJCXJvb3RfdXVpZD1gZWNobyAkYm9vdHBhcmFtX3Jvb3QgfCBjdXQgLWM2LWAKLQkJCQlib290cGFyYW1fcm9vdD0iL2Rldi9kaXNrL2J5LXV1aWQvJHJvb3RfdXVpZCIKLQkJCWZpCi0KLQkJCWlmIFsgLWUgIiRib290cGFyYW1fcm9vdCIgXTsgdGhlbgotCQkJCWZsYWdzPSIiCi0JCQkJaWYgWyAtbiAiJGJvb3RwYXJhbV9ybyIgXTsgdGhlbgotCQkJCQlpZiBbICAtbiAiJGJvb3RwYXJhbV9yb290ZmxhZ3MiIF07IHRoZW4KLQkJCQkJCWJvb3RwYXJhbV9yb290ZmxhZ3M9IiRib290cGFyYW1fcm9vdGZsYWdzLCIKLQkJCQkJZmkKLQkJCQkJYm9vdHBhcmFtX3Jvb3RmbGFncz0iJHtib290cGFyYW1fcm9vdGZsYWdzfXJvIgotCQkJCWZpCi0JCQkJaWYgWyAtbiAiJGJvb3RwYXJhbV9yb290ZmxhZ3MiIF07IHRoZW4KLQkJCQkJZmxhZ3M9IiRmbGFncyAtbyRib290cGFyYW1fcm9vdGZsYWdzIgotCQkJCWZpCi0JCQkJaWYgWyAtbiAiJGJvb3RwYXJhbV9yb290ZnN0eXBlIiBdOyB0aGVuCi0JCQkJCWZsYWdzPSIkZmxhZ3MgLXQkYm9vdHBhcmFtX3Jvb3Rmc3R5cGUiCi0JCQkJZmkKLQkJCQltb3VudCAkZmxhZ3MgJGJvb3RwYXJhbV9yb290ICRST09URlNfRElSCi0JCQllbHNlCi0JCQkJbXNnICJyb290ICckYm9vdHBhcmFtX3Jvb3QnIGRvZXNuJ3QgZXhpc3QuIgotCQkJZmkKLQkJZmkKLQogCQlpZiBbICEgLWQgJFJPT1RGU19ESVIvZGV2IF07IHRoZW4KIAkJCWZhdGFsICJFUlJPUjogVGhlcmUncyBubyAnL2Rldicgb24gcm9vdGZzLiIKIAkJZmkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmsvaW5pdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmsvaW5pdAppbmRleCAyMDRmMjM3Li4zNzUyN2E4IDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZnJhbWV3b3JrL2luaXQKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29yay9pbml0CkBAIC03Niw4ICs3Niw4IEBACiAjIG1ha2UgbW91bnQgc3RvcCBjb21wbGFpbmluZyBhYm91dCBtaXNzaW5nIC9ldGMvZnN0YWIKIHRvdWNoIC9ldGMvZnN0YWIKIAotIyBpbml0aWFsaXplIC9wcm9jLCAvc3lzIGFuZCAvdmFyL2xvY2sKLW1rZGlyIC1wIC9wcm9jIC9zeXMgL3Zhci9sb2NrCisjIGluaXRpYWxpemUgL3Byb2MsIC9zeXMsIC9ydW4vbG9jayBhbmQgL3Zhci9sb2NrCitta2RpciAtcCAvcHJvYyAvc3lzIC9ydW4vbG9jayAvdmFyL2xvY2sKIG1vdW50IC10IHByb2MgcHJvYyAvcHJvYwogbW91bnQgLXQgc3lzZnMgc3lzZnMgL3N5cwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZnJhbWV3b3JrL3Jvb3RmcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmsvcm9vdGZzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0NzY4ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZnJhbWV3b3JrL3Jvb3RmcwpAQCAtMCwwICsxLDYyIEBACisjIS9iaW4vc2gKKyMgQ29weXJpZ2h0IChDKSAyMDExIE8uUy4gU3lzdGVtcyBTb2Z0d2FyZSBMVERBLgorIyBMaWNlbnNlZCBvbiBNSVQKKworcm9vdGZzX2VuYWJsZWQoKSB7CisJcmV0dXJuIDAKK30KKworcm9vdGZzX3J1bigpIHsKKyAgICAgICAgaWYgWyAteiAiJFJPT1RGU19ESVIiIF07IHRoZW4KKwkJcmV0dXJuCisgICAgICAgIGZpCisJQz0wCisJZGVsYXk9JHtib290cGFyYW1fcm9vdGRlbGF5Oi0xfQorCXRpbWVvdXQ9JHtib290cGFyYW1fcm9vdHRpbWVvdXQ6LTV9CisJd2hpbGUgWyAhIC1kICRST09URlNfRElSL2RldiBdOyBkbworCQlpZiBbICQoKCAkQyAqICRkZWxheSApKSAtZ3QgJHRpbWVvdXQgXTsgdGhlbgorCQkJZmF0YWwgInJvb3QgJyRib290cGFyYW1fcm9vdCcgZG9lc24ndCBleGlzdCBvciBkb2VzIG5vdCBjb250YWluIGEgL2Rldi4iCisJCWZpCisKKwkJaWYgWyAtbiAiJGJvb3RwYXJhbV9yb290IiBdOyB0aGVuCisJCQlkZWJ1ZyAiTm8gZTJmcyBjb21wYXRpYmxlIGZpbGVzeXN0ZW0gaGFzIGJlZW4gbW91bnRlZCwgbW91bnRpbmcgJGJvb3RwYXJhbV9yb290Li4uIgorCisJCQlpZiBbICJgZWNobyAke2Jvb3RwYXJhbV9yb290fSB8IGN1dCAtYzEtNWAiID0gIlVVSUQ9IiBdOyB0aGVuCisJCQkJcm9vdF91dWlkPWBlY2hvICRib290cGFyYW1fcm9vdCB8IGN1dCAtYzYtYAorCQkJCWJvb3RwYXJhbV9yb290PSIvZGV2L2Rpc2svYnktdXVpZC8kcm9vdF91dWlkIgorCQkJZmkKKworCQkJaWYgWyAiYGVjaG8gJHtib290cGFyYW1fcm9vdH0gfCBjdXQgLWMxLTlgIiA9ICJQQVJUVVVJRD0iIF07IHRoZW4KKwkJCQlyb290X3V1aWQ9YGVjaG8gJGJvb3RwYXJhbV9yb290IHwgY3V0IC1jMTAtYAorCQkJCWJvb3RwYXJhbV9yb290PSIvZGV2L2Rpc2svYnktcGFydHV1aWQvJHJvb3RfdXVpZCIKKwkJCWZpCisKKwkJCWlmIFsgLWUgIiRib290cGFyYW1fcm9vdCIgXTsgdGhlbgorCQkJCWZsYWdzPSIiCisJCQkJaWYgWyAtbiAiJGJvb3RwYXJhbV9ybyIgXSAmJiAhIGVjaG8gIiRib290cGFyYW1fcm9vdGZsYWdzIiB8IGdyZXAgLXcgLXEgInJvIjsgdGhlbgorCQkJCQlpZiBbICAtbiAiJGJvb3RwYXJhbV9yb290ZmxhZ3MiIF07IHRoZW4KKwkJCQkJCWJvb3RwYXJhbV9yb290ZmxhZ3M9IiRib290cGFyYW1fcm9vdGZsYWdzLCIKKwkJCQkJZmkKKwkJCQkJYm9vdHBhcmFtX3Jvb3RmbGFncz0iJHtib290cGFyYW1fcm9vdGZsYWdzfXJvIgorCQkJCWZpCisJCQkJaWYgWyAtbiAiJGJvb3RwYXJhbV9yb290ZmxhZ3MiIF07IHRoZW4KKwkJCQkJZmxhZ3M9IiRmbGFncyAtbyRib290cGFyYW1fcm9vdGZsYWdzIgorCQkJCWZpCisJCQkJaWYgWyAtbiAiJGJvb3RwYXJhbV9yb290ZnN0eXBlIiBdOyB0aGVuCisJCQkJCWZsYWdzPSIkZmxhZ3MgLXQkYm9vdHBhcmFtX3Jvb3Rmc3R5cGUiCisJCQkJZmkKKwkJCQltb3VudCAkZmxhZ3MgJGJvb3RwYXJhbV9yb290ICRST09URlNfRElSCisJCQkJaWYgWyAtZCAkUk9PVEZTX0RJUi9kZXYgXTsgdGhlbgorCQkJCQlicmVhaworCQkJCWVsc2UKKwkJCQkJIyBJdCBpcyB1bmxpa2VseSB0byBjaGFuZ2UsIGJ1dCBrZWVwIHRyeWluZyBhbnl3YXkuCisJCQkJCSMgUGVyaGFwcyB3ZSBwaWNrIGEgZGlmZmVyZW50IGRldmljZSBuZXh0IHRpbWUuCisJCQkJCXVtb3VudCAkUk9PVEZTX0RJUgorCQkJCQlmaQorCQkJCWZpCisJCWZpCisJCWRlYnVnICJTbGVlcGluZyBmb3IgJGRlbGF5IHNlY29uZChzKSB0byB3YWl0IHJvb3QgdG8gc2V0dGxlLi4uIgorCQlzbGVlcCAkZGVsYXkKKwkJQz0kKCggJEMgKyAxICkpCisJZG9uZQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29ya18xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZnJhbWV3b3JrXzEuMC5iYgppbmRleCAwNjY0YTk1Li42N2ExYjA0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZnJhbWV3b3JrXzEuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZnJhbWV3b3JrXzEuMC5iYgpAQCAtOCw2ICs4LDcgQEAKIGluaGVyaXQgYWxsYXJjaAogCiBTUkNfVVJJID0gImZpbGU6Ly9pbml0IFwKKyAgICAgICAgICAgZmlsZTovL3Jvb3RmcyBcCiAgICAgICAgICAgIGZpbGU6Ly9maW5pc2ggXAogICAgICAgICAgICBmaWxlOi8vbWRldiBcCiAgICAgICAgICAgIGZpbGU6Ly91ZGV2IFwKQEAgLTIxLDYgKzIyLDcgQEAKIAogICAgICMgYmFzZQogICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQgJHtEfS9pbml0CisgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vcm9vdGZzICR7RH0vaW5pdC5kLzkwLXJvb3RmcwogICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2ZpbmlzaCAke0R9L2luaXQuZC85OS1maW5pc2gKIAogICAgICMgbWRldgpAQCAtNDUsMTIgKzQ3LDIxIEBACiAgICAgICAgICAgICBpbml0cmFtZnMtbW9kdWxlLW1kZXYgXAogICAgICAgICAgICAgaW5pdHJhbWZzLW1vZHVsZS11ZGV2IFwKICAgICAgICAgICAgIGluaXRyYW1mcy1tb2R1bGUtZTJmcyBcCisgICAgICAgICAgICBpbml0cmFtZnMtbW9kdWxlLXJvb3RmcyBcCiAgICAgICAgICAgICBpbml0cmFtZnMtbW9kdWxlLWRlYnVnIgogCiBGSUxFU18ke1BOfS1iYXNlID0gIi9pbml0IC9pbml0LmQvOTktZmluaXNoIC9kZXYiCiAKKyMgOTktZmluaXNoIGluIGJhc2UgZGVwZW5kcyBvbiBzb21lIG90aGVyIG1vZHVsZSB3aGljaCBtb3VudHMKKyMgdGhlIHJvb3RmcywgbGlrZSA5MC1yb290ZnMuIFRvIHJlcGxhY2UgdGhhdCBkZWZhdWx0LCB1c2UKKyMgQkFEX1JFQ09NTUVOREFUSU9OUyArPSAiaW5pdHJhbWZzLW1vZHVsZS1yb290ZnMiIGluIHlvdXIKKyMgaW5pdHJhbWZzIHJlY2lwZSBhbmQgaW5zdGFsbCBzb21ldGhpbmcgZWxzZSwgb3IgaW5zdGFsbAorIyBzb21ldGhpbmcgdGhhdCBydW5zIGVhcmxpZXIgKGZvciBleGFtcGxlLCBhIDg5LW15LXJvb3RmcykKKyMgYW5kIG1vdW50cyB0aGUgcm9vdGZzLiBUaGVuIDkwLXJvb3RmcyB3aWxsIHByb2NlZWQgaW1tZWRpYXRlbHkuCitSUkVDT01NRU5EU18ke1BOfS1iYXNlICs9ICJpbml0cmFtZnMtbW9kdWxlLXJvb3RmcyIKKwogU1VNTUFSWV9pbml0cmFtZnMtbW9kdWxlLW1kZXYgPSAiaW5pdHJhbWZzIHN1cHBvcnQgZm9yIG1kZXYiCi1SREVQRU5EU19pbml0cmFtZnMtbW9kdWxlLW1kZXYgPSAiJHtQTn0tYmFzZSIKK1JERVBFTkRTX2luaXRyYW1mcy1tb2R1bGUtbWRldiA9ICIke1BOfS1iYXNlIGJ1c3lib3gtbWRldiIKIEZJTEVTX2luaXRyYW1mcy1tb2R1bGUtbWRldiA9ICIvaW5pdC5kLzAxLW1kZXYiCiAKIFNVTU1BUllfaW5pdHJhbWZzLW1vZHVsZS11ZGV2ID0gImluaXRyYW1mcyBzdXBwb3J0IGZvciB1ZGV2IgpAQCAtNjEsNiArNzIsMTAgQEAKIFJERVBFTkRTX2luaXRyYW1mcy1tb2R1bGUtZTJmcyA9ICIke1BOfS1iYXNlIgogRklMRVNfaW5pdHJhbWZzLW1vZHVsZS1lMmZzID0gIi9pbml0LmQvMTAtZTJmcyIKIAorU1VNTUFSWV9pbml0cmFtZnMtbW9kdWxlLXJvb3RmcyA9ICJpbml0cmFtZnMgc3VwcG9ydCBmb3IgbG9jYXRpbmcgYW5kIG1vdW50aW5nIHRoZSByb290IHBhcnRpdGlvbiIKK1JERVBFTkRTX2luaXRyYW1mcy1tb2R1bGUtcm9vdGZzID0gIiR7UE59LWJhc2UiCitGSUxFU19pbml0cmFtZnMtbW9kdWxlLXJvb3RmcyA9ICIvaW5pdC5kLzkwLXJvb3RmcyIKKwogU1VNTUFSWV9pbml0cmFtZnMtbW9kdWxlLWRlYnVnID0gImluaXRyYW1mcyBkeW5hbWljIGRlYnVnIHN1cHBvcnQiCiBSREVQRU5EU19pbml0cmFtZnMtbW9kdWxlLWRlYnVnID0gIiR7UE59LWJhc2UiCiBGSUxFU19pbml0cmFtZnMtbW9kdWxlLWRlYnVnID0gIi9pbml0LmQvMDAtZGVidWciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHNjcmlwdHMvaW5pdHNjcmlwdHMtMS4wL2NoZWNrcm9vdC5zaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0c2NyaXB0cy9pbml0c2NyaXB0cy0xLjAvY2hlY2tyb290LnNoCmluZGV4IGRmZWUyYWYuLjAyZjAzNTEgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0c2NyaXB0cy9pbml0c2NyaXB0cy0xLjAvY2hlY2tyb290LnNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0c2NyaXB0cy9pbml0c2NyaXB0cy0xLjAvY2hlY2tyb290LnNoCkBAIC02OSw3ICs2OSw3IEBACiAjIGJlZm9yZSBmc2NrLCBzaW5jZSBmc2NrIGNhbiBiZSBxdWl0ZSBtZW1vcnktaHVuZ3J5LgogIwogdGVzdCAiJFZFUkJPU0UiICE9IG5vICYmIGVjaG8gIkFjdGl2YXRpbmcgc3dhcCIKLXN3YXBvbiAtYSAyPiAvZGV2L251bGwKK1sgLXggL3NiaW4vc3dhcG9uIF0gJiYgc3dhcG9uIC1hCiAKICMKICMgQ2hlY2sgdGhlIHJvb3QgZmlsZXN5c3RlbS4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0c2NyaXB0cy9pbml0c2NyaXB0cy0xLjAvZG1lc2cuc2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHNjcmlwdHMvaW5pdHNjcmlwdHMtMS4wL2RtZXNnLnNoCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggYTk3YjA2OC4uMmI5ZWJhNgotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHNjcmlwdHMvaW5pdHNjcmlwdHMtMS4wL2RtZXNnLnNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0c2NyaXB0cy9pbml0c2NyaXB0cy0xLjAvZG1lc2cuc2gKQEAgLTgsOCArOCw4IEBACiAjIyMgRU5EIElOSVQgSU5GTwogCiBpZiBbIC1mIC92YXIvbG9nL2RtZXNnIF07IHRoZW4KLQlpZiBbIC1mIC91c3Ivc2Jpbi9sb2dyb3RhdGUgXTsgdGhlbgotCQlsb2dyb3RhdGUgLWYgL2V0Yy9sb2dyb3RhdGUtZG1lc2cuY29uZgorCWlmIExPR1BBVEg9JCh3aGljaCBsb2dyb3RhdGUpOyB0aGVuCisJCSRMT0dQQVRIIC1mIC9ldGMvbG9ncm90YXRlLWRtZXNnLmNvbmYKIAllbHNlCiAJCW12IC1mIC92YXIvbG9nL2RtZXNnIC92YXIvbG9nL2RtZXNnLm9sZAogCWZpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHNjcmlwdHMvaW5pdHNjcmlwdHMtMS4wL21vdW50YWxsLnNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRzY3JpcHRzL2luaXRzY3JpcHRzLTEuMC9tb3VudGFsbC5zaAppbmRleCA5NGJhZTQyLi5jNzE5YmU1IDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHNjcmlwdHMvaW5pdHNjcmlwdHMtMS4wL21vdW50YWxsLnNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0c2NyaXB0cy9pbml0c2NyaXB0cy0xLjAvbW91bnRhbGwuc2gKQEAgLTMzLDcgKzMzLDcgQEAKICMgRXhlY3V0ZSBzd2Fwb24gY29tbWFuZCBhZ2FpbiwgaW4gY2FzZSB3ZSB3YW50IHRvIHN3YXAgdG8KICMgYSBmaWxlIG9uIGEgbm93IG1vdW50ZWQgZmlsZXN5c3RlbS4KICMKLXN3YXBvbiAtYSAyPiAvZGV2L251bGwKK1sgLXggL3NiaW4vc3dhcG9uIF0gJiYgc3dhcG9uIC1hCiAKIDogZXhpdCAwCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0c2NyaXB0cy9pbml0c2NyaXB0cy0xLjAvdW1vdW50ZnMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHNjcmlwdHMvaW5pdHNjcmlwdHMtMS4wL3Vtb3VudGZzCmluZGV4IDYxMzI0YzYuLjdmYjVjNTggMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0c2NyaXB0cy9pbml0c2NyaXB0cy0xLjAvdW1vdW50ZnMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRzY3JpcHRzL2luaXRzY3JpcHRzLTEuMC91bW91bnRmcwpAQCAtMTIsNyArMTIsNyBAQAogUEFUSD0vc2JpbjovYmluOi91c3Ivc2JpbjovdXNyL2JpbgogCiBlY2hvICJEZWFjdGl2YXRpbmcgc3dhcC4uLiIKLXN3YXBvZmYgLWEKK1sgLXggL3NiaW4vc3dhcG9mZiBdICYmIHN3YXBvZmYgLWEKIAogIyBXZSBsZWF2ZSAvcHJvYyBtb3VudGVkLgogZWNobyAiVW5tb3VudGluZyBsb2NhbCBmaWxlc3lzdGVtcy4uLiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0c2NyaXB0cy9pbml0c2NyaXB0c18xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHNjcmlwdHMvaW5pdHNjcmlwdHNfMS4wLmJiCmluZGV4IDE0ODQ5MWYuLjhmMTEwYjAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0c2NyaXB0cy9pbml0c2NyaXB0c18xLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRzY3JpcHRzL2luaXRzY3JpcHRzXzEuMC5iYgpAQCAtMTM4LDcgKzEzOCw3IEBACiAJdXBkYXRlLXJjLmQgLXIgJHtEfSBzeXNmcy5zaCBzdGFydCAwMiBTIC4KIAl1cGRhdGUtcmMuZCAtciAke0R9IHBvcHVsYXRlLXZvbGF0aWxlLnNoIHN0YXJ0IDM3IFMgLgogCXVwZGF0ZS1yYy5kIC1yICR7RH0gcmVhZC1vbmx5LXJvb3Rmcy1ob29rLnNoIHN0YXJ0IDI5IFMgLgotCXVwZGF0ZS1yYy5kIC1yICR7RH0gZGV2cHRzLnNoIHN0YXJ0IDM4IFMgLgorCXVwZGF0ZS1yYy5kIC1yICR7RH0gZGV2cHRzLnNoIHN0YXJ0IDA2IFMgLgogCWlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJhcm0iIF07IHRoZW4KIAkgICAgICAgIHVwZGF0ZS1yYy5kIC1yICR7RH0gYWxpZ25tZW50LnNoIHN0YXJ0IDA2IFMgLgogCWZpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZC9ydW4tcHRlc3QgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZC9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2EyZDIwNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkL3J1bi1wdGVzdApAQCAtMCwwICsxLDQgQEAKKyMhL2Jpbi9zaAorCitDVVJESVI9JChkaXJuYW1lIGByZWFkbGluayAtZiAkMGApCittYWtlIC1rIC1DICR7Q1VSRElSfS90ZXN0cyBjaGVjay1URVNUUwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2tiZC9rYmQvc2V0LXByb3Blci1wYXRoLW9mLXJlc291cmNlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkL3NldC1wcm9wZXItcGF0aC1vZi1yZXNvdXJjZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdkNmY0MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkL3NldC1wcm9wZXItcGF0aC1vZi1yZXNvdXJjZXMucGF0Y2gKQEAgLTAsMCArMSw1NiBAQAorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKwora2JkIGlzIG91dCBvZiBzb3VyY2UgYnVpbHQsIHRoZW4gdGhlIHZhbHVlIG9mICQoc3JjZGlyKSBpcyByZWxhdGl2ZSBwYXRoIG9mCiske1N9L3Rlc3RzIHRvICR7Qn0vdGVzdHMuIE1hY3JvIERBVEFESVIgaXMgZGVmaW5lZCB3aXRoICQoc3JjZGlyKSBhbmQgcmVwbGFjZWQKK2luIC5jIGZpbGVzIGJ5IGNvbXBpbGVyLCBhbmQgc3RyaW5nIEBEQVRBRElSQCBpcyByZXBsYWNlZCB3aXRoICQoc3JkaXIpIGJ5IHJ1bGUKKyIlOiAlLmluIiBpbiBNYWtlZmlsZS4KKworQnV0IGtiZC1wdGVzdCBwdXRzIHRlc3QgY2FzZXMgYW5kIHJlc291cmNlIGZpbGVzIGluIHNhbWUgZGlyZWN0b3J5LCB0aGVuIHNvbWUKK3B0ZXN0IGNhc2VzIGZhaWwgdG8gZmluZCByZXNvdXJjZXMuCisKK1JlcGxhY2UgREFUQURJUiBhbmQgQERBVEFESVJAIHdpdGggY3VycmVudCBkaXJlY3RvcnkoZG90KSB0byBtYWtlIHRlc3QgY2FzZXMKK3J1biBhcyBleHBlY3RlZC4KKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CisKK2RpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5hbSBiL3Rlc3RzL01ha2VmaWxlLmFtCitpbmRleCAxOTc2MzMzLi5iMzZhZWYzIDEwMDY0NAorLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0KKysrKyBiL3Rlc3RzL01ha2VmaWxlLmFtCitAQCAtMSw3ICsxLDcgQEAKKyBBTV9DUFBGTEFHUyA9IFwKKyAJLUkkKHNyY2RpcikvLi4vc3JjL2xpYmtleW1hcCBcCisgCS1JJChidWlsZGRpcikvLi4vc3JjL2xpYmtleW1hcCBcCistCS1EREFUQURJUj1cIiQoc3JjZGlyKVwiIC1EQlVJTERESVI9XCIkKGJ1aWxkZGlyKVwiCisrCS1EREFUQURJUj1cIi5cIiAtREJVSUxERElSPVwiJChidWlsZGRpcilcIgorIAorIEFNX0NGTEFHUyA9ICQoQ0hFQ0tfQ0ZMQUdTKQorIExEQUREICA9ICQodG9wX2J1aWxkZGlyKS9zcmMvbGlia2V5bWFwL2xpYmtleW1hcC5sYSAkKENIRUNLX0xJQlMpCitkaWZmIC0tZ2l0IGEvdGVzdHMvYWx0LWlzLW1ldGEuaW4gYi90ZXN0cy9hbHQtaXMtbWV0YS5pbgoraW5kZXggZGRkNWVkOC4uNzcyZmI1MSAxMDA3NTUKKy0tLSBhL3Rlc3RzL2FsdC1pcy1tZXRhLmluCisrKysgYi90ZXN0cy9hbHQtaXMtbWV0YS5pbgorQEAgLTcsOCArNyw4IEBAIGNkICIkY3dkIgorIHJjPTAKKyB0ZW1wPSIkKG1rdGVtcCAiQEJVSUxERElSQC90ZW1wLlhYWFhYWFhYWCIpIgorIAorLS4vbGlia2V5bWFwLXNob3dtYXBzICJAREFUQURJUkAiL2FsdC1pcy1tZXRhLm1hcCA+ICIkdGVtcCIgfHwgcmM9JD8KKy1jbXAgLXMgIkBEQVRBRElSQC8vYWx0LWlzLW1ldGEub3V0cHV0IiAiJHRlbXAiIHx8IHJjPSQ/CisrLi9saWJrZXltYXAtc2hvd21hcHMgLi9hbHQtaXMtbWV0YS5tYXAgPiAiJHRlbXAiIHx8IHJjPSQ/CisrY21wIC1zICIuL2FsdC1pcy1tZXRhLm91dHB1dCIgIiR0ZW1wIiB8fCByYz0kPworIAorIGlmIFsgIiRyYyIgIT0gMCBdOyB0aGVuCisgCXByaW50ZiAnZmFpbGVkXG4nCitkaWZmIC0tZ2l0IGEvdGVzdHMvZHVtcGtleXMtZnVsbHRhYmxlLmluIGIvdGVzdHMvZHVtcGtleXMtZnVsbHRhYmxlLmluCitpbmRleCA3Yzg1NmU1Li4xNGQ5MmMxIDEwMDc1NQorLS0tIGEvdGVzdHMvZHVtcGtleXMtZnVsbHRhYmxlLmluCisrKysgYi90ZXN0cy9kdW1wa2V5cy1mdWxsdGFibGUuaW4KK0BAIC01LDcgKzUsNyBAQCBjd2Q9IiQocmVhZGxpbmsgLWV2ICIkezAlLyp9IikiCisgY2QgIiRjd2QiCisgCisgQlVJTERESVI9IkBCVUlMRERJUkAiCistREFUQURJUj0iQERBVEFESVJAIgorK0RBVEFESVI9Ii4iCisgCisgY2hlY2tfa2V5bWFwKCkgeworIAlsb2NhbCBrbWFwIHRlbXAgcmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkXzIuMC4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2tiZC9rYmRfMi4wLjMuYmIKaW5kZXggODU4ZGMwNS4uNTRkMTY4MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2tiZC9rYmRfMi4wLjMuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2tiZC9rYmRfMi4wLjMuYmIKQEAgLTExLDYgKzExLDggQEAKIFJDT05GTElDVFNfJHtQTn0gPSAiY29uc29sZS10b29scyIKIAogU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L3V0aWxzLyR7QlBOfS8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdGVzdCcsICdmaWxlOi8vc2V0LXByb3Blci1wYXRoLW9mLXJlc291cmNlcy5wYXRjaCcsICcnLCBkKX0gXAogICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gIjIzMWI0NmU3MTQyZWI0MWVhM2FlMDZkMmRlZDNjMjA4IgpAQCAtMTksNiArMjEsMjEgQEAKIFBBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3BhbScsICcnLCBkKX0iCiBQQUNLQUdFQ09ORklHW3BhbV0gPSAiLS1lbmFibGUtdmxvY2ssIC0tZGlzYWJsZS12bG9jaywgbGlicGFtLCIKIAorZG9fY29tcGlsZV9wdGVzdCgpIHsKKyAgICBvZV9ydW5tYWtlIC1DICR7Qn0vdGVzdHMgZHVtcGtleXMtZnVsbHRhYmxlIGFsdC1pcy1tZXRhCit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisgICAgaW5zdGFsbCAtRCAke0J9L3Rlc3RzL01ha2VmaWxlICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL01ha2VmaWxlCisgICAgc2VkIC1pIC1lICcvTWFrZWZpbGU6LywvXiQvZCcgLWUgJy8lOiAlLmluLywvXiQvZCcgXAorCS1lICcvbGlia2V5bWFwXy4qX1NPVVJDRVMgPS9kJyAtZSAnLyQoRVhFRVhUKTovLC9eJC9kJyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZQorCisgICAgZmluZCAke0J9L3Rlc3RzIC1leGVjdXRhYmxlIC1leGVjIGluc3RhbGwge30gJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMgXDsKKyAgICBmaW5kICR7U30vdGVzdHMgXCggLW5hbWUgXCoubWFwIC1vIC1uYW1lIFwqLmJpbiAtbyAtbmFtZSBcKi5vdXRwdXQgXCkgLWV4ZWMgaW5zdGFsbCB7fSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cyBcOworCisgICAgaW5zdGFsbCAtRCAtbSA3NTUgJHtTfS9jb25maWcvdGVzdC1kcml2ZXIgJHtEfSR7UFRFU1RfUEFUSH0vY29uZmlnL3Rlc3QtZHJpdmVyCit9CisKIFBBQ0tBR0VTICs9ICIke1BOfS1jb25zb2xlZm9udHMgJHtQTn0ta2V5bWFwcyAke1BOfS11bmltYXBzICR7UE59LWNvbnNvbGV0cmFucyIKIAogRklMRVNfJHtQTn0tY29uc29sZWZvbnRzID0gIiR7ZGF0YWRpcn0vY29uc29sZWZvbnRzIgpAQCAtMjYsMTAgKzQzLDExIEBACiBGSUxFU18ke1BOfS1rZXltYXBzID0gIiR7ZGF0YWRpcn0va2V5bWFwcyIKIEZJTEVTXyR7UE59LXVuaW1hcHMgPSAiJHtkYXRhZGlyfS91bmltYXBzIgogCitSREVQRU5EU18ke1BOfS1wdGVzdCA9ICJtYWtlIgorCiBpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKIAogQUxURVJOQVRJVkVfJHtQTn0gPSAiY2h2dCBkZWFsbG9jdnQgZmdjb25zb2xlIG9wZW52dCIKIEFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi1QQVJBTExFTF9NQUtFSU5TVCA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvY29uZmlndXJlLmFjLWZpeC1jcm9zcy1jb21waWxpbmctd2FybmluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9jb25maWd1cmUuYWMtZml4LWNyb3NzLWNvbXBpbGluZy13YXJuaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjgwNzliLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9jb25maWd1cmUuYWMtZml4LWNyb3NzLWNvbXBpbGluZy13YXJuaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotY29uZmlndXJlLmFjOiBmaXggY3Jvc3MgY29tcGlsaW5nIHdhcm5pbmcKLQotVGhlcmUgaXMgYSB3YXJuaW5nIHdoaWxlIGNyb3NzIGNvbXBpbGluZyB3aGljaCB0cmlnZ2VyZWQgYQotZmFpbHVyZSBieSBkb19xYV9jb25maWd1cmUKLS4uLgotfGNvbmZpZ3VyZToxMjY1MjogY2hlY2tpbmcgZm9yIGd6cmVhZCBpbiAtbHoKLXxjb25maWd1cmU6MTI2Nzc6IG1pcHMtcG9reS1saW51eC1nY2MgIC1tZWIgLW1hYmk9MzIgLW1oYXJkLWZsb2F0Ci0gLUwvbGliIGNvbmZ0ZXN0LmMgLWx6ICAgPiY1Ci18bGQ6IHdhcm5pbmc6IGxpYnJhcnkgc2VhcmNoIHBhdGggIi9saWIiIGlzIHVuc2FmZSBmb3IgY3Jvc3MtY29tcGlsYXRpb24KLS4uLgotCi1XaGlsZSBkbyB0aGUgbGliIGNoZWNraW5nLCBkbyBub3QgYWRkICctTCR7Wl9ESVJ9L2xpYicgdG8gTERGTEFHUyBjb3VsZCBmaXggaXQuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Ugc3BlY2lmaWNdCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCA1ICstLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA5YTkwNjAwLi4wYmFjOGE0IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0zOTEsOCArMzkxLDYgQEAgaWYgdGVzdCAiJHdpdGhfemxpYiIgPSAibm8iOyB0aGVuCi0gICAgIGVjaG8gIkRpc2FibGluZyBjb21wcmVzc2lvbiBzdXBwb3J0IgotIGVsc2UKLSAgICAgQUNfQ0hFQ0tfSEVBREVSUyh6bGliLmgsCi0tICAgICAgICBbU0FWRV9MREZMQUdTPSIke0xERkxBR1N9IgotLQkgTERGTEFHUz0iLUwke1pfRElSfS9saWIiCi0gCUFDX0NIRUNLX0xJQih6LCBnenJlYWQsWwotIAkgICAgQUNfREVGSU5FKFtIQVZFX0xJQlpdLCBbMV0sIFtIYXZlIGNvbXByZXNzaW9uIGxpYnJhcnldKQotIAkgICAgV0lUSF9aTElCPTEKLUBAIC00MDYsOCArNDA0LDcgQEAgZWxzZQotIAkJZXNhY10KLSAJICAgIGVsc2UKLSAJCVpfTElCUz0iLWx6IgotLQkgICAgZmldKQotLQkgTERGTEFHUz0iJHtTQVZFX0xERkxBR1N9Il0pCi0rCSAgICBmaV0pKQotIGZpCi0gCi0gQUNfU1VCU1QoWl9DRkxBR1MpCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMl8yLjkuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMl8yLjkuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWM5ODczZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDJfMi45LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi1TVU1NQVJZID0gIlhNTCBDIFBhcnNlciBMaWJyYXJ5IGFuZCBUb29sa2l0IgotREVTQ1JJUFRJT04gPSAiVGhlIFhNTCBQYXJzZXIgTGlicmFyeSBhbGxvd3MgZm9yIG1hbmlwdWxhdGlvbiBvZiBYTUwgZmlsZXMuICBMaWJ4bWwyIGV4cG9ydHMgUHVzaCBhbmQgUHVsbCB0eXBlIHBhcnNlciBpbnRlcmZhY2VzIGZvciBib3RoIFhNTCBhbmQgSFRNTC4gIEl0IGNhbiBkbyBEVEQgdmFsaWRhdGlvbiBhdCBwYXJzZSB0aW1lLCBvbiBhIHBhcnNlZCBkb2N1bWVudCBpbnN0YW5jZSBvciB3aXRoIGFuIGFyYml0cmFyeSBEVEQuICBMaWJ4bWwyIGluY2x1ZGVzIGNvbXBsZXRlIFhQYXRoLCBYUG9pbnRlciBhbmQgWGluY2x1ZGUgaW1wbGVtZW50YXRpb25zLiAgSXQgYWxzbyBoYXMgYSBTQVggbGlrZSBpbnRlcmZhY2UsIHdoaWNoIGlzIGRlc2lnbmVkIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBFeHBhdC4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnhtbHNvZnQub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9idWdsaXN0LmNnaT9wcm9kdWN0PWxpYnhtbDIiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NvcHlyaWdodDttZDU9MjA0NDQxN2UyZTUwMDZiNjVhOGI5MDY3YjY4M2ZjZjEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaGFzaC5jO2JlZ2lubGluZT02O2VuZGxpbmU9MTU7bWQ1PTk2ZjcyOTY2MDVlYWU4MDc2NzBmYjA4OTQ3ODI5OTY5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpc3QuYztiZWdpbmxpbmU9NDtlbmRsaW5lPTEzO21kNT1jZGJmYTNkZWU1MWMwOTllZGIwNGUzOWY3NjJlZTkwNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90cmlvLmM7YmVnaW5saW5lPTU7ZW5kbGluZT0xNDttZDU9NmMwMjU3NTNjODZkOTU4NzIyZWM3NmU5NGNhZTkzMmUiCi0KLURFUEVORFMgPSAiemxpYiIKLQotU1JDX1VSSSA9ICJmdHA6Ly94bWxzb2Z0Lm9yZy9saWJ4bWwyL2xpYnhtbDItJHtQVn0udGFyLmd6O25hbWU9bGlidGFyIFwKLSAgICAgICAgICAgaHR0cDovL3d3dy53My5vcmcvWE1ML1Rlc3QveG1sdHMyMDA4MDgyNy50YXIuZ3o7bmFtZT10ZXN0dGFyIFwKLSAgICAgICAgICAgZmlsZTovL2xpYnhtbC02NGJpdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hbnNpZGVjbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW50ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9weXRob24tc2l0ZXBhY2thZ2VzLWRpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJ4bWwtbTQtdXNlLXBrZ2NvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUuYWMtZml4LWNyb3NzLWNvbXBpbGluZy13YXJuaW5nLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbGlidGFyLm1kNXN1bV0gPSAiZGFlY2UxN2UwNDVmMWMxMDc2MTBlMTM3YWI1MGMxNzkiCi1TUkNfVVJJW2xpYnRhci5zaGEyNTZzdW1dID0gIjRkZTllMzFmNDZiNDRkMzQ4NzFjMjJmNTRiZmM1NDM5OGVmMTI0ZDZmN2NhZmIxZjRhNTk1OGZiY2QzYmExMmQiCi1TUkNfVVJJW3Rlc3R0YXIubWQ1c3VtXSA9ICJhZTNkMWViZTAwMGEzOTcyYWZhMTA0Y2E3ZjBlMWI0YSIKLVNSQ19VUklbdGVzdHRhci5zaGEyNTZzdW1dID0gIjk2MTUxNjg1Y2VjOTk3ZTFmOWYzMzg3ZTM2MjZkNjFlNjI4NGQ0ZDZlNjZlMGU0NDBjMjA5Mjg2YzAzZTljYzciCi0KLUJJTkNPTkZJRyA9ICIke2JpbmRpcn0veG1sMi1jb25maWciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBiaW5jb25maWctZGlzYWJsZWQgcHl0aG9ubmF0aXZlIHB0ZXN0Ci0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJweXRob24tY29yZSIKLQotUkRFUEVORFNfJHtQTn0tcHl0aG9uICs9ICJweXRob24tY29yZSIKLQotUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGdsaWJjLWdjb252LWViY2RpYy11cyBnbGliYy1nY29udi1pYm0xMTQxIgotCi1leHBvcnQgUFlUSE9OX1NJVEVfUEFDS0FHRVM9IiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgotCi1QQUNLQUdFQ09ORklHID8/PSAicHl0aG9uIgotUEFDS0FHRUNPTkZJR1tweXRob25dID0gIi0td2l0aC1weXRob249JHtQWVRIT059LC0td2l0aG91dC1weXRob24scHl0aG9uIgotCi0jIFdBUk5JTkc6IHpsaWIgaXMgcmVxdWlyZSBmb3IgUlBNIHVzZQotRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC1kZWJ1ZyAtLXdpdGhvdXQtbGVnYWN5IC0td2l0aC1jYXRhbG9nIC0td2l0aG91dC1kb2Nib29rIC0td2l0aC1jMTRuIC0td2l0aG91dC1sem1hIC0td2l0aC1mZXhjZXB0aW9ucyIKLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS13aXRob3V0LWxlZ2FjeSAtLXdpdGhvdXQtZG9jYm9vayAtLXdpdGgtYzE0biAtLXdpdGhvdXQtbHptYSAtLXdpdGgtemxpYiIKLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmVzZGsgPSAiLS13aXRob3V0LWxlZ2FjeSAtLXdpdGhvdXQtZG9jYm9vayAtLXdpdGgtYzE0biAtLXdpdGhvdXQtbHptYSAtLXdpdGgtemxpYiIKLUVYVFJBX09FQ09ORl9saW51eHN0ZGJhc2UgPSAiLS13aXRoLWRlYnVnIC0td2l0aC1sZWdhY3kgLS13aXRoLWRvY2Jvb2sgLS13aXRoLWMxNG4gLS13aXRob3V0LWx6bWEgLS13aXRoLXpsaWIiCi0KLSMgcmVxdWlyZWQgZm9yIHB5dGhvbiBiaW5kaW5nCi1leHBvcnQgSE9TVF9TWVMKLWV4cG9ydCBCVUlMRF9TWVMKLWV4cG9ydCBTVEFHSU5HX0xJQkRJUgotZXhwb3J0IFNUQUdJTkdfSU5DRElSCi0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKLSAgICAjIGF1dG9uYW1lciB3b3VsZCBjYWxsIHRoaXMgbGlieG1sMi0yLCBidXQgd2UgZG9uJ3Qgd2FudCB0aGF0Ci0gICAgaWYgZC5nZXRWYXIoJ0RFQklBTl9OQU1FUycsIFRydWUpOgotICAgICAgICBkLnNldFZhcignUEtHX2xpYnhtbDInLCAnJHtNTFBSRUZJWH1saWJ4bWwyJykKLX0KLQotUEFDS0FHRVMgKz0gIiR7UE59LXV0aWxzICR7UE59LXB5dGhvbiIKLQotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLmEiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS94bWwyQ29uZi5zaCAke2xpYmRpcn0vY21ha2UvKiIKLUZJTEVTXyR7UE59LXV0aWxzICs9ICIke2JpbmRpcn0vKiIKLUZJTEVTXyR7UE59LXB5dGhvbiArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCi0KLWRvX2luc3RhbGxfcHRlc3QgKCkgewotCWNwIC1yICR7V09SS0RJUn0veG1sY29uZiAke0R9JHtQVEVTVF9QQVRIfQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDJfMi45LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDJfMi45LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTk4NzRiZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMl8yLjkuNC5iYgpAQCAtMCwwICsxLDc1IEBACitTVU1NQVJZID0gIlhNTCBDIFBhcnNlciBMaWJyYXJ5IGFuZCBUb29sa2l0IgorREVTQ1JJUFRJT04gPSAiVGhlIFhNTCBQYXJzZXIgTGlicmFyeSBhbGxvd3MgZm9yIG1hbmlwdWxhdGlvbiBvZiBYTUwgZmlsZXMuICBMaWJ4bWwyIGV4cG9ydHMgUHVzaCBhbmQgUHVsbCB0eXBlIHBhcnNlciBpbnRlcmZhY2VzIGZvciBib3RoIFhNTCBhbmQgSFRNTC4gIEl0IGNhbiBkbyBEVEQgdmFsaWRhdGlvbiBhdCBwYXJzZSB0aW1lLCBvbiBhIHBhcnNlZCBkb2N1bWVudCBpbnN0YW5jZSBvciB3aXRoIGFuIGFyYml0cmFyeSBEVEQuICBMaWJ4bWwyIGluY2x1ZGVzIGNvbXBsZXRlIFhQYXRoLCBYUG9pbnRlciBhbmQgWGluY2x1ZGUgaW1wbGVtZW50YXRpb25zLiAgSXQgYWxzbyBoYXMgYSBTQVggbGlrZSBpbnRlcmZhY2UsIHdoaWNoIGlzIGRlc2lnbmVkIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBFeHBhdC4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnhtbHNvZnQub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9idWdsaXN0LmNnaT9wcm9kdWN0PWxpYnhtbDIiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NvcHlyaWdodDttZDU9MjA0NDQxN2UyZTUwMDZiNjVhOGI5MDY3YjY4M2ZjZjEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaGFzaC5jO2JlZ2lubGluZT02O2VuZGxpbmU9MTU7bWQ1PTk2ZjcyOTY2MDVlYWU4MDc2NzBmYjA4OTQ3ODI5OTY5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpc3QuYztiZWdpbmxpbmU9NDtlbmRsaW5lPTEzO21kNT1jZGJmYTNkZWU1MWMwOTllZGIwNGUzOWY3NjJlZTkwNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90cmlvLmM7YmVnaW5saW5lPTU7ZW5kbGluZT0xNDttZDU9NmMwMjU3NTNjODZkOTU4NzIyZWM3NmU5NGNhZTkzMmUiCisKK0RFUEVORFMgPSAiemxpYiB2aXJ0dWFsL2xpYmljb252IgorCitTUkNfVVJJID0gImZ0cDovL3htbHNvZnQub3JnL2xpYnhtbDIvbGlieG1sMi0ke1BWfS50YXIuZ3o7bmFtZT1saWJ0YXIgXAorICAgICAgICAgICBodHRwOi8vd3d3LnczLm9yZy9YTUwvVGVzdC94bWx0czIwMDgwODI3LnRhci5nejtuYW1lPXRlc3R0YXIgXAorICAgICAgICAgICBmaWxlOi8vbGlieG1sLTY0Yml0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Fuc2lkZWNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bnRlc3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL3B5dGhvbi1zaXRlcGFja2FnZXMtZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2xpYnhtbC1tNC11c2UtcGtnY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbGlidGFyLm1kNXN1bV0gPSAiYWUyNDkxNjVjMTczYjFmZjM4NmVlOGFkNjc2ODE1ZjUiCitTUkNfVVJJW2xpYnRhci5zaGEyNTZzdW1dID0gImZmYjkxMTE5MWU1MDliOTY2ZGViNTVkZTcwNTM4N2YxNDE1NmUxYTU2YjIxODI0MzU3Y2RmMDA1MzIzMzYzM2MiCitTUkNfVVJJW3Rlc3R0YXIubWQ1c3VtXSA9ICJhZTNkMWViZTAwMGEzOTcyYWZhMTA0Y2E3ZjBlMWI0YSIKK1NSQ19VUklbdGVzdHRhci5zaGEyNTZzdW1dID0gIjk2MTUxNjg1Y2VjOTk3ZTFmOWYzMzg3ZTM2MjZkNjFlNjI4NGQ0ZDZlNjZlMGU0NDBjMjA5Mjg2YzAzZTljYzciCisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0veG1sMi1jb25maWciCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBiaW5jb25maWctZGlzYWJsZWQgcHl0aG9ubmF0aXZlIHB0ZXN0CisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJweXRob24tY29yZSIKKworUkRFUEVORFNfJHtQTn0tcHl0aG9uICs9ICJweXRob24tY29yZSIKKworUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGdsaWJjLWdjb252LWViY2RpYy11cyBnbGliYy1nY29udi1pYm0xMTQxIgorCitleHBvcnQgUFlUSE9OX1NJVEVfUEFDS0FHRVM9IiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgorCitQQUNLQUdFQ09ORklHID8/PSAicHl0aG9uIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCAnaXB2NicsICcnLCBkKX0gXAorIgorUEFDS0FHRUNPTkZJR1tweXRob25dID0gIi0td2l0aC1weXRob249JHtQWVRIT059LC0td2l0aG91dC1weXRob24scHl0aG9uIgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKKworIyBXQVJOSU5HOiB6bGliIGlzIHJlcXVpcmUgZm9yIFJQTSB1c2UKK0VYVFJBX09FQ09ORiA9ICItLXdpdGhvdXQtZGVidWcgLS13aXRob3V0LWxlZ2FjeSAtLXdpdGgtY2F0YWxvZyAtLXdpdGhvdXQtZG9jYm9vayAtLXdpdGgtYzE0biAtLXdpdGhvdXQtbHptYSAtLXdpdGgtZmV4Y2VwdGlvbnMiCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0td2l0aG91dC1sZWdhY3kgLS13aXRob3V0LWRvY2Jvb2sgLS13aXRoLWMxNG4gLS13aXRob3V0LWx6bWEgLS13aXRoLXpsaWIiCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlc2RrID0gIi0td2l0aG91dC1sZWdhY3kgLS13aXRob3V0LWRvY2Jvb2sgLS13aXRoLWMxNG4gLS13aXRob3V0LWx6bWEgLS13aXRoLXpsaWIiCitFWFRSQV9PRUNPTkZfbGludXhzdGRiYXNlID0gIi0td2l0aC1kZWJ1ZyAtLXdpdGgtbGVnYWN5IC0td2l0aC1kb2Nib29rIC0td2l0aC1jMTRuIC0td2l0aG91dC1sem1hIC0td2l0aC16bGliIgorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7CisgICAgIyBhdXRvbmFtZXIgd291bGQgY2FsbCB0aGlzIGxpYnhtbDItMiwgYnV0IHdlIGRvbid0IHdhbnQgdGhhdAorICAgIGlmIGQuZ2V0VmFyKCdERUJJQU5fTkFNRVMnLCBUcnVlKToKKyAgICAgICAgZC5zZXRWYXIoJ1BLR19saWJ4bWwyJywgJyR7TUxQUkVGSVh9bGlieG1sMicpCit9CisKK1BBQ0tBR0VTICs9ICIke1BOfS11dGlscyAke1BOfS1weXRob24iCisKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKi5hIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0veG1sMkNvbmYuc2ggJHtsaWJkaXJ9L2NtYWtlLyoiCitGSUxFU18ke1BOfS11dGlscyArPSAiJHtiaW5kaXJ9LyoiCitGSUxFU18ke1BOfS1weXRob24gKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJIyBleGVjdXRhYmxlcyB0YWtlIGxvbmdlciB0byBwYWNrYWdlOiB0aGVzZSBzaG91bGQgbm90IGJlIGV4ZWN1dGFibGUKKwlmaW5kICR7V09SS0RJUn0veG1sY29uZi8gLXR5cGUgZiAtZXhlYyBjaG1vZCAteCB7fSBcKworfQorCitkb19pbnN0YWxsX3B0ZXN0ICgpIHsKKwljcCAtciAke1dPUktESVJ9L3htbGNvbmYgJHtEfSR7UFRFU1RfUEFUSH0KK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvYnVpbGR0b29scy10YXJiYWxsLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvYnVpbGR0b29scy10YXJiYWxsLmJiCmluZGV4IGU5NTc4Y2EuLjU4MDhjOTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL2J1aWxkdG9vbHMtdGFyYmFsbC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9idWlsZHRvb2xzLXRhcmJhbGwuYmIKQEAgLTEsNCArMSw0IEBACi1ERVNDUklQVElPTiA9ICJTREsgdHlwZSB0YXJnZXQgZm9yIGJ1aWxkaW5nIGEgc3RhbmRhbG9uZSB0YXJiYWxsIGNvbnRhaW5pbmcgcHl0aG9uLCBjaHJwYXRoLCBtYWtlLCBnaXQgYW5kIHRhci4gVGhlIFwKK0RFU0NSSVBUSU9OID0gIlNESyB0eXBlIHRhcmdldCBmb3IgYnVpbGRpbmcgYSBzdGFuZGFsb25lIHRhcmJhbGwgY29udGFpbmluZyBweXRob24zLCBjaHJwYXRoLCBtYWtlLCBnaXQgYW5kIHRhci4gVGhlIFwKICAgICAgICAgICAgICAgIHRhcmJhbGwgY2FuIGJlIHVzZWQgdG8gcnVuIGJpdGJha2UgYnVpbGRzIG9uIHN5c3RlbXMgd2hpY2ggZG9uJ3QgbWVldCB0aGUgdXN1YWwgdmVyc2lvbiByZXF1aXJlbWVudHMuIgogU1VNTUFSWSA9ICJTdGFuZGFsb25lIHRhcmJhbGwgZm9yIHJ1bm5pbmcgYnVpbGRzIG9uIHN5c3RlbXMgd2l0aCBpbmFkZXF1YXRlIHNvZnR3YXJlIgogTElDRU5TRSA9ICJNSVQiCkBAIC04LDExICs4LDEwIEBACiBUT09MQ0hBSU5fVEFSR0VUX1RBU0sgPz0gIiIKIAogVE9PTENIQUlOX0hPU1RfVEFTSyA/PSAiXAotICAgIG5hdGl2ZXNkay1weXRob24tY29yZSBcCi0gICAgbmF0aXZlc2RrLXB5dGhvbi1tb2R1bGVzIFwKLSAgICBuYXRpdmVzZGstcHl0aG9uLW1pc2MgXAotICAgIG5hdGl2ZXNkay1weXRob24tZ2l0IFwKLSAgICBuYXRpdmVzZGstcHl0aG9uLXBleHBlY3QgXAorICAgIG5hdGl2ZXNkay1weXRob24zLWNvcmUgXAorICAgIG5hdGl2ZXNkay1weXRob24zLW1vZHVsZXMgXAorICAgIG5hdGl2ZXNkay1weXRob24zLW1pc2MgXAorICAgIG5hdGl2ZXNkay1weXRob24zLWdpdCBcCiAgICAgbmF0aXZlc2RrLW5jdXJzZXMtdGVybWluZm8tYmFzZSBcCiAgICAgbmF0aXZlc2RrLWNocnBhdGggXAogICAgIG5hdGl2ZXNkay10YXIgXApAQCAtMjQsMTEgKzIzLDE4IEBACiAgICAgbmF0aXZlc2RrLXdnZXQgXAogICAgIG5hdGl2ZXNkay1jYS1jZXJ0aWZpY2F0ZXMgXAogICAgIG5hdGl2ZXNkay10ZXhpbmZvIFwKKyAgICBuYXRpdmVzZGstbG9jYWxlLWJhc2UtZW4tdXMgXAogICAgICIKIAorTVVMVElNQUNIX1RBUkdFVF9TWVMgPSAiJHtTREtfQVJDSH0tbmF0aXZlc2RrJHtTREtfVkVORE9SfS0ke1NES19PU30iCitQQUNLQUdFX0FSQ0ggPSAiJHtTREtfQVJDSH1fJHtTREtfT1N9IgorUEFDS0FHRV9BUkNIUyA9ICIiCitUQVJHRVRfQVJDSCA9ICJub25lIgorVEFSR0VUX09TID0gIm5vbmUiCisKIFNES19QQUNLQUdFX0FSQ0hTICs9ICJidWlsZHRvb2xzLWR1bW15LSR7U0RLUEtHU1VGRklYfSIKIAotVE9PTENIQUlOX09VVFBVVE5BTUUgPz0gIiR7U0RLX05BTUV9LWJ1aWxkdG9vbHMtbmF0aXZlc2RrLXN0YW5kYWxvbmUtJHtESVNUUk9fVkVSU0lPTn0iCitUT09MQ0hBSU5fT1VUUFVUTkFNRSA/PSAiJHtTREtfQVJDSH0tYnVpbGR0b29scy1uYXRpdmVzZGstc3RhbmRhbG9uZS0ke0RJU1RST19WRVJTSU9OfSIKIAogU0RLX1RJVExFID0gIkJ1aWxkIHRvb2xzIgogCkBAIC0zOCw3ICs0NCwxNyBAQAogCiBpbmhlcml0IG1ldGEKIGluaGVyaXQgcG9wdWxhdGVfc2RrCi1pbmhlcml0IHRvb2xjaGFpbi1zY3JpcHRzCitpbmhlcml0IHRvb2xjaGFpbi1zY3JpcHRzLWJhc2UKK2luaGVyaXQgbm9wYWNrYWdlcworCitkZWx0YXNrIGluc3RhbGwKK2RlbHRhc2sgcGFja2FnZQorZGVsdGFzayBwYWNrYWdlZGF0YQorZGVsdGFzayBwb3B1bGF0ZV9zeXNyb290CisKK2RvX3BvcHVsYXRlX3Nka1tzdGFtcC1leHRyYS1pbmZvXSA9ICIke1BBQ0tBR0VfQVJDSH0iCisKK1JFQUxfTVVMVElNQUNIX1RBUkdFVF9TWVMgPSAibm9uZSIKIAogY3JlYXRlX3Nka19maWxlc19hcHBlbmQgKCkgewogCXJtIC1mICR7U0RLX09VVFBVVH0vJHtTREtQQVRIfS9zaXRlLWNvbmZpZy0qCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9tZXRhLWVudmlyb25tZW50LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbWV0YS1lbnZpcm9ubWVudC5iYgppbmRleCA0OWQ0NWY2Li5kOWUwNDVmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9tZXRhLWVudmlyb25tZW50LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL21ldGEtZW52aXJvbm1lbnQuYmIKQEAgLTEyLDYgKzEyLDggQEAKIAogaW5oZXJpdCB0b29sY2hhaW4tc2NyaXB0cwogVE9PTENIQUlOX05FRURfQ09ORklHU0lURV9DQUNIRV9hcHBlbmQgPSAiIHpsaWIiCisjIE5lZWQgdG8gZXhwYW5kIGhlcmUgYmVmb3JlIGNyb3NzLWNhbmRpYW4gY2hhbmdlcyBIT1NUX0FSQ0ggLT4gU0RLX0FSQ0gKK1RPT0xDSEFJTl9DT05GSUdTSVRFX05PQ0FDSEUgOj0gIiR7VE9PTENIQUlOX0NPTkZJR1NJVEVfTk9DQUNIRX0iCiAKIFNES19ESVIgPSAiJHtXT1JLRElSfS9zZGsiCiBTREtfT1VUUFVUID0gIiR7U0RLX0RJUn0vaW1hZ2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9tZXRhLWV4dHNkay10b29sY2hhaW4uYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9tZXRhLWV4dHNkay10b29sY2hhaW4uYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmJkOWE1YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL21ldGEtZXh0c2RrLXRvb2xjaGFpbi5iYgpAQCAtMCwwICsxLDI4IEBACitTVU1NQVJZID0gIkV4dGVuc2libGUgU0RLIHRvb2xjaGFpbiBtZXRhLXJlY2lwZSIKK0RFU0NSSVBUSU9OID0gIk1ldGEtcmVjaXBlIGZvciBlbnN1cmluZyB0aGUgYnVpbGQgZGlyZWN0b3J5IGNvbnRhaW5zIGFsbCBhcHByb3ByaWF0ZSB0b29sY2hhaW4gcGFja2FnZXMgZm9yIHVzaW5nIGFuIElERSIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vTElDRU5TRTttZDU9NGQ5MmNkMzczYWJkYTM5MzdjMmJjNDdmYmM0OWQ2OTAgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9DT1BZSU5HLk1JVDttZDU9M2RhOWNmYmNiNzg4YzgwYTAzODQzNjFiNGRlMjA0MjAiCisKK0RFUEVORFMgPSAidmlydHVhbC9saWJjIGdkYi1jcm9zcy0ke1RBUkdFVF9BUkNIfSBxZW11LW5hdGl2ZSBxZW11LWhlbHBlci1uYXRpdmUgdW5mczMtbmF0aXZlIgorCitkb19wb3B1bGF0ZV9zeXNyb290W2RlcHRhc2tdID0gImRvX3BvcHVsYXRlX3N5c3Jvb3QiCisKKyMgTk9URTogVGhlcmUgaXMgbG9naWMgc3BlY2lmaWMgdG8gdGhpcyByZWNpcGUgaW4gc2V0c2NlbmVfZGVwdmFsaWQoKQorIyB3aXRoaW4gc3N0YXRlLmJiY2xhc3MsIHNvIGlmIHlvdSBjb3B5IG9yIHJlbmFtZSB0aGlzIGFuZCBleHBlY3QgdGhlIHNhbWUKKyMgZnVuY3Rpb25hbGl0eSB5b3UnbGwgbmVlZCB0byBtb2RpZnkgdGhhdCBhcyB3ZWxsLgorCitMT0NLRURfU0lHU19JTkRJUiA9ICIke0R9L2xvY2tlZC1zaWdzIgorCithZGR0YXNrIGRvX2xvY2tlZF9zaWdzIGFmdGVyIGRvX3BvcHVsYXRlX3N5c3Jvb3QKK1NTVEFURVRBU0tTICs9ICJkb19sb2NrZWRfc2lncyIKK2RvX2xvY2tlZF9zaWdzW3NzdGF0ZS1pbnB1dGRpcnNdID0gIiR7TE9DS0VEX1NJR1NfSU5ESVJ9IgorZG9fbG9ja2VkX3NpZ3Nbc3N0YXRlLW91dHB1dGRpcnNdID0gIiR7U1RBR0lOR19ESVJfSE9TVH0vbG9ja2VkLXNpZ3MiCisKK3B5dGhvbiBkb19sb2NrZWRfc2lncygpIHsKKyAgICBpbXBvcnQgb2UuY29weV9idWlsZHN5c3RlbQorICAgIG91dGRpciA9IG9zLnBhdGguam9pbihkLmdldFZhcignTE9DS0VEX1NJR1NfSU5ESVInLCBUcnVlKSkKKyAgICBiYi51dGlscy5ta2RpcmhpZXIob3V0ZGlyKQorICAgIHNpZ2ZpbGUgPSBvcy5wYXRoLmpvaW4ob3V0ZGlyLCAnbG9ja2VkLXNpZ3MtZXh0c2RrLXRvb2xjaGFpbi5pbmMnKQorICAgIG9lLmNvcHlfYnVpbGRzeXN0ZW0uZ2VuZXJhdGVfbG9ja2VkX3NpZ3Moc2lnZmlsZSwgZCkKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL21ldGEtaWRlLXN1cHBvcnQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9tZXRhLWlkZS1zdXBwb3J0LmJiCmluZGV4IDg2YzU3Y2QuLmM0ZGRjZmMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL21ldGEtaWRlLXN1cHBvcnQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbWV0YS1pZGUtc3VwcG9ydC5iYgpAQCAtNyw3ICs3LDcgQEAKIERFUEVORFMgPSAidmlydHVhbC9saWJjIGdkYi1jcm9zcy0ke1RBUkdFVF9BUkNIfSBxZW11LW5hdGl2ZSBxZW11LWhlbHBlci1uYXRpdmUgdW5mczMtbmF0aXZlIgogUFIgPSAicjMiCiAKLWluaGVyaXQgbWV0YSB0b29sY2hhaW4tc2NyaXB0cworaW5oZXJpdCBtZXRhIHRvb2xjaGFpbi1zY3JpcHRzIG5vcGFja2FnZXMKIAogZG9fcG9wdWxhdGVfaWRlX3N1cHBvcnQgKCkgewogICB0b29sY2hhaW5fY3JlYXRlX3RyZWVfZW52X3NjcmlwdApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbWV0YS13b3JsZC1wa2dkYXRhLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbWV0YS13b3JsZC1wa2dkYXRhLmJiCmluZGV4IDNjNWRiNTAuLjgxYzg2NDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL21ldGEtd29ybGQtcGtnZGF0YS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9tZXRhLXdvcmxkLXBrZ2RhdGEuYmIKQEAgLTEsNSArMSw2IEBACiBTVU1NQVJZID0gIlB1bGxzIGluIHBrZ2RhdGEgZm9yIHdvcmxkIgogTElDRU5TRSA9ICJNSVQiCisKIElOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCiAKIGFkZHRhc2sgZG9fYWxscGFja2FnZWRhdGEgYmVmb3JlIGRvX2J1aWxkCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9zaWduaW5nLWtleXMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9zaWduaW5nLWtleXMuYmIKaW5kZXggZTg0MzMwMS4uMzc3OTAzNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvc2lnbmluZy1rZXlzLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3NpZ25pbmcta2V5cy5iYgpAQCAtMSw3ICsxLDcgQEAKICMgQ29weXJpZ2h0IChDKSAyMDE1IEludGVsIENvcnBvcmF0aW9uCiAjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUIGZvciB0aGUgdGVybXMpCiAKLURFU0NSSVBUSU9OID0gIk1ha2UgcHVibGljIGtleXMgb2YgdGhlIHNpZ25pbmcga2V5cyBhdmFpbGFibGUiCitTVU1NQVJZID0gIk1ha2VzIHB1YmxpYyBrZXlzIG9mIHRoZSBzaWduaW5nIGtleXMgYXZhaWxhYmxlIgogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9MSUNFTlNFO21kNT00ZDkyY2QzNzNhYmRhMzkzN2MyYmM0N2ZiYzQ5ZDY5MCBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL0NPUFlJTkcuTUlUO21kNT0zZGE5Y2ZiY2I3ODhjODBhMDM4NDM2MWI0ZGUyMDQyMCIKQEAgLTEyLDYgKzEyLDggQEAKIEVYQ0xVREVfRlJPTV9XT1JMRCA9ICIxIgogSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKIAorU1lTUk9PVF9ESVJTICs9ICIke3N5c2NvbmZkaXJ9L3BraSIKKwogUEFDS0FHRVMgPSsgIiR7UE59LWlwayAke1BOfS1ycG0gJHtQTn0tcGFja2FnZWZlZWQiCiAKIEZJTEVTXyR7UE59LXJwbSA9ICIke3N5c2NvbmZkaXJ9L3BraS9ycG0tZ3BnIgpAQCAtNTQsMTAgKzU2LDYgQEAKICAgICBmaQogfQogCi1zeXNyb290X3N0YWdlX2FsbF9hcHBlbmQgKCkgewotICAgIHN5c3Jvb3Rfc3RhZ2VfZGlyICR7RH0ke3N5c2NvbmZkaXJ9L3BraSAke1NZU1JPT1RfREVTVERJUn0ke3N5c2NvbmZkaXJ9L3BraQotfQotCiBkb19kZXBsb3kgKCkgewogICAgIGlmIFsgLWYgIiR7Qn0vcnBtLWtleSIgXTsgdGhlbgogICAgICAgICBpbnN0YWxsIC1EIC1tIDA2NDQgIiR7Qn0vcnBtLWtleSIgIiR7REVQTE9ZRElSfS9SUE0tR1BHLUtFWS0ke0RJU1RST19WRVJTSU9OfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3Rlc3RleHBvcnQtdGFyYmFsbC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3Rlc3RleHBvcnQtdGFyYmFsbC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTg2MWM0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvdGVzdGV4cG9ydC10YXJiYWxsLmJiCkBAIC0wLDAgKzEsNTggQEAKK0RFU0NSSVBUSU9OID0gIlNESyB0eXBlIHRhcmdldCBmb3Igc3RhbmRhbG9uZSB0YXJiYWxsIGNvbnRhaW5pbmcgcGFja2FnZXMgZGVmaW5lZCBieSBURVNUX0VYUE9SVF9UT09MUy4gVGhlIFwKKyAgICAgICAgICAgICAgIHRhcmJhbGwgY2FuIGJlIHVzZWQgdG8gcnVuIG1pc3NpbmcgcHJvZ3JhbXMgb24gdGVzdGluZyBzeXN0ZW1zIHdoaWNoIGRvbid0IGhhdmUgc3VjaCB0b29scy5cCisgICAgICAgICAgICAgICBUaGlzIHJlY2lwZSBpcyBhbG1vc3QgdGhlIHNhbWUgYXMgYnVpbGR0b29scy10YXJiYWxsIgorU1VNTUFSWSA9ICJTdGFuZGFsb25lIHRhcmJhbGwgZm9yIHRlc3Qgc3lzdGVtcyB3aXRoIG1pc3Npbmcgc29mdHdhcmUiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L0xJQ0VOU0U7bWQ1PTRkOTJjZDM3M2FiZGEzOTM3YzJiYzQ3ZmJjNDlkNjkwIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvQ09QWUlORy5NSVQ7bWQ1PTNkYTljZmJjYjc4OGM4MGEwMzg0MzYxYjRkZTIwNDIwIgorCitURVNUX0VYUE9SVF9TREtfUEFDS0FHRVMgPz89ICIiCisKK1RPT0xDSEFJTl9UQVJHRVRfVEFTSyA/PSAiIgorCitUT09MQ0hBSU5fSE9TVF9UQVNLID89ICIke1RFU1RfRVhQT1JUX1NES19QQUNLQUdFU30iCisKK1NES19QQUNLQUdFX0FSQ0hTICs9ICJ0ZXNleHBvcnQtdG9vbHMtJHtTREtQS0dTVUZGSVh9IgorCitUT09MQ0hBSU5fT1VUUFVUTkFNRSA/PSAiJHtURVNUX0VYUE9SVF9TREtfTkFNRX0iCisKK1NES19USVRMRSA9ICJUZXN0ZXhwb3J0IHRvb2xzIgorCitSREVQRU5EUyA9ICIke1RPT0xDSEFJTl9IT1NUX1RBU0t9IgorCitFWENMVURFX0ZST01fV09STEQgPSAiMSIKKworaW5oZXJpdCBtZXRhCitpbmhlcml0IHBvcHVsYXRlX3NkaworaW5oZXJpdCB0b29sY2hhaW4tc2NyaXB0cworCitjcmVhdGVfc2RrX2ZpbGVzX2FwcGVuZCAoKSB7CisJcm0gLWYgJHtTREtfT1VUUFVUfS8ke1NES1BBVEh9L3NpdGUtY29uZmlnLSoKKwlybSAtZiAke1NES19PVVRQVVR9LyR7U0RLUEFUSH0vZW52aXJvbm1lbnQtc2V0dXAtKgorCXJtIC1mICR7U0RLX09VVFBVVH0vJHtTREtQQVRIfS92ZXJzaW9uLSoKKworCSMgR2VuZXJhdGUgbmV3IChtaW5pKSBzZGstZW52aXJvbm1lbnQtc2V0dXAgZmlsZQorCXNjcmlwdD0kezE6LSR7U0RLX09VVFBVVH0vJHtTREtQQVRIfS9lbnZpcm9ubWVudC1zZXR1cC0ke1NES19TWVN9fQorCXRvdWNoICRzY3JpcHQKKwllY2hvICdleHBvcnQgUEFUSD0ke1NES1BBVEhOQVRJVkV9JHtiaW5kaXJfbmF0aXZlc2RrfTokUEFUSCcgPj4gJHNjcmlwdAorCSMgSW4gb3JkZXIgZm9yIHRoZSBzZWxmLWV4dHJhY3Rpb24gc2NyaXB0IHRvIGNvcnJlY3RseSBleHRyYWN0IGFuZCBzZXQgdXAgdGhpbmdzLAorCSMgd2UgbmVlZCBhICdPRUNPUkVfTkFUSVZFX1NZU1JPT1Q9eHh4JyBsaW5lIGluIGVudmlyb25tZW50IHNldHVwIHNjcmlwdC4KKwkjIEhvd2V2ZXIsIHRlc3RleHBvcnQtdGFyYmFsbCBpcyBpbmhlcmVudGx5IGEgdG9vbCBzZXQgaW5zdGVhZCBvZiBhIGZ1bGx5IGZ1bmN0aW9uYWwgU0RLLAorCSMgc28gaW5zdGVhZCBvZiBleHBvcnRpbmcgdGhlIHZhcmlhYmxlLCB3ZSB1c2UgYSBjb21tZW50IGhlcmUuCisJZWNobyAnI09FQ09SRV9OQVRJVkVfU1lTUk9PVD0iJHtTREtQQVRITkFUSVZFfSInID4+ICRzY3JpcHQKKwl0b29sY2hhaW5fY3JlYXRlX3Nka192ZXJzaW9uICR7U0RLX09VVFBVVH0vJHtTREtQQVRIfS92ZXJzaW9uLSR7U0RLX1NZU30KKworCWVjaG8gJ2V4cG9ydCBHSVRfU1NMX0NBSU5GTz0iJHtTREtQQVRITkFUSVZFfSR7c3lzY29uZmRpcn0vc3NsL2NlcnRzL2NhLWNlcnRpZmljYXRlcy5jcnQiJyA+PiRzY3JpcHQKKworCWlmIFsgIiR7U0RLTUFDSElORX0iID0gImk2ODYiIF07IHRoZW4KKwkJZWNobyAnZXhwb3J0IE5PMzJMSUJTPSIwIicgPj4kc2NyaXB0CisJCWVjaG8gJ2VjaG8gIiRCQl9FTlZfRVhUUkFXSElURSIgfCBncmVwIC1xICJOTzMyTElCUyInID4+JHNjcmlwdAorCQllY2hvICdbICQ/ICE9IDAgXSAmJiBleHBvcnQgQkJfRU5WX0VYVFJBV0hJVEU9Ik5PMzJMSUJTICRCQl9FTlZfRVhUUkFXSElURSInID4+JHNjcmlwdAorCWZpCit9CisKKyMgdGVzdGV4cG9ydC10YXJiYWxsIGRvZXNuJ3QgbmVlZCBjb25maWcgc2l0ZQorVE9PTENIQUlOX05FRURfQ09ORklHU0lURV9DQUNIRSA9ICIiCisKKyMgVGhlIHJlY2lwZSBkb2Vzbid0IG5lZWQgYW55IGRlZmF1bHQgZGVwcworSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3VuaW5hdGl2ZS10YXJiYWxsLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvdW5pbmF0aXZlLXRhcmJhbGwuYmIKaW5kZXggYTk4M2U0Mi4uZTIwM2E4MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvdW5pbmF0aXZlLXRhcmJhbGwuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvdW5pbmF0aXZlLXRhcmJhbGwuYmIKQEAgLTE2LDYgKzE2LDEyIEBACiAKIElOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCiAKK01VTFRJTUFDSF9UQVJHRVRfU1lTID0gIiR7U0RLX0FSQ0h9LW5hdGl2ZXNkayR7U0RLX1ZFTkRPUn0tJHtTREtfT1N9IgorUEFDS0FHRV9BUkNIID0gIiR7U0RLX0FSQ0h9XyR7U0RLX09TfSIKK1BBQ0tBR0VfQVJDSFMgPSAiIgorVEFSR0VUX0FSQ0ggPSAibm9uZSIKK1RBUkdFVF9PUyA9ICJub25lIgorCiBUT09MQ0hBSU5fT1VUUFVUTkFNRSA/PSAiJHtTREtfQVJDSH0tbmF0aXZlc2RrLWxpYmMiCiAKIFJERVBFTkRTID0gIiR7VE9PTENIQUlOX0hPU1RfVEFTS30iCkBAIC0yNCwxNCArMzAsMTkgQEAKIAogaW5oZXJpdCBtZXRhCiBpbmhlcml0IHBvcHVsYXRlX3NkaworaW5oZXJpdCBub3BhY2thZ2VzCiAKIGRlbHRhc2sgaW5zdGFsbAogZGVsdGFzayBwYWNrYWdlCiBkZWx0YXNrIHBhY2thZ2VkYXRhCitkZWx0YXNrIHBvcHVsYXRlX3N5c3Jvb3QKKworZG9fcG9wdWxhdGVfc2RrW3N0YW1wLWV4dHJhLWluZm9dID0gIiR7UEFDS0FHRV9BUkNIfSIKIAogU0RLX0RFUEVORFMgKz0gInBhdGNoZWxmLW5hdGl2ZSIKIAogU0RLX1BBQ0tBR0lOR19GVU5DID0gIiIKK1JFQUxfTVVMVElNQUNIX1RBUkdFVF9TWVMgPSAibm9uZSIKIAogZmFrZXJvb3QgY3JlYXRlX3Nka19maWxlcygpIHsKIAljcCAke0NPUkVCQVNFfS9zY3JpcHRzL3JlbG9jYXRlX3Nkay5weSAke1NES19PVVRQVVR9LyR7U0RLUEFUSH0vCkBAIC00NCwxMyArNTUsMTIgQEAKIAogCiBmYWtlcm9vdCB0YXJfc2RrKCkgewotCW1rZGlyIC1wICR7U0RLX0RFUExPWX0KIAljZCAke1NES19PVVRQVVR9LyR7U0RLUEFUSH0KIAogCURFU1Q9Ii4vJHtTREtfQVJDSH0tJHtTREtfT1N9IgogCW12IHN5c3Jvb3RzLyR7U0RLX1NZU30gJERFU1QKIAlybSBzeXNyb290cyAtcmYKLQlwYXRjaGVsZiAtLXNldC1pbnRlcnByZXRlciAke0AnJy5qb2luKCdhJyBmb3IgbiBpbiB4cmFuZ2UoMTAyNCkpfSAkREVTVC91c3IvYmluL3BhdGNoZWxmCisJcGF0Y2hlbGYgLS1zZXQtaW50ZXJwcmV0ZXIgJHtAJycuam9pbignYScgZm9yIG4gaW4gcmFuZ2UoMTAyNCkpfSAkREVTVC91c3IvYmluL3BhdGNoZWxmCiAJbXYgJERFU1QvdXNyL2Jpbi9wYXRjaGVsZiAkREVTVC91c3IvYmluL3BhdGNoZWxmLXVuaW5hdGl2ZQotCXRhciAke1NES1RBUk9QVFN9IC1jIC1qIC0tZmlsZT0ke1NES19ERVBMT1l9LyR7VE9PTENIQUlOX09VVFBVVE5BTUV9LnRhci5iejIgLgorCXRhciAke1NES1RBUk9QVFN9IC1jIC1qIC0tZmlsZT0ke1NES0RFUExPWURJUn0vJHtUT09MQ0hBSU5fT1VUUFVUTkFNRX0udGFyLmJ6MiAuCiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2wuaW5jCmluZGV4IGQyNzg2N2YuLjdlZDkzMWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2wuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2wuaW5jCkBAIC05LDcgKzksNyBAQAogSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5tdXNsLWxpYmMub3JnLyIKIExJQ0VOU0UgPSAiTUlUIgogU0VDVElPTiA9ICJsaWJzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT0wODI0MTEzOTFiNGQxYWNlMGQzMGY0Yzg0MzE3Y2MwNSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlSSUdIVDttZDU9NzkyOGI3YWQzMmNlZGEwNDkzMjQ3OGUzMzBlNTJmN2YiCiAKIFBBVEhfcHJlcGVuZCA9ICIke1NUQUdJTkdfQklORElSX1RPT0xDSEFJTn0uJHtTVEFHSU5HQ0N9OiIKIFRPT0xDSEFJTl9PUFRJT05TID0gIiAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQ0JPT1RTVFJBUH0iCkBAIC0xNywxMCArMTcsMTMgQEAKIElOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCiAKIFNUQUdJTkdDQyA9ICJnY2MtY3Jvc3MtaW5pdGlhbC0ke1RBUkdFVF9BUkNIfSIKLVNUQUdJTkdDQ19jbGFzcy1uYXRpdmVzZGsgPSAiZ2NjLWNyb3Nzc2RrLWluaXRpYWwtJHtUQVJHRVRfQVJDSH0iCitTVEFHSU5HQ0NfY2xhc3MtbmF0aXZlc2RrID0gImdjYy1jcm9zc3Nkay1pbml0aWFsLSR7U0RLX1NZU30iCiAKIAogRklMRVNfU09MSUJTREVWID0gIiIKIEZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vbGliKiR7U09MSUJTREVWfSIKIElOU0FORV9TS0lQXyR7UE59ID0gImRldi1zbyIKIAorIyBEb2Vzbid0IGNvbXBpbGUgaW4gTUlQUzE2ZSBtb2RlIGR1ZSB0byB1c2Ugb2YgaGFuZC13cml0dGVuCisjIGFzc2VtYmx5CitNSVBTX0lOU1RSVUNUSU9OX1NFVCA9ICJtaXBzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsX2dpdC5iYgppbmRleCBkNGY5ODE5Li5jMDcxMDFiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsX2dpdC5iYgpAQCAtMyw5ICszLDkgQEAKIAogcmVxdWlyZSBtdXNsLmluYwogCi1TUkNSRVYgPSAiNTk3OGViNzAzY2UwZTY0ZGQ3NzhhODhjMWZmZmZiNzZmZTVlMjIwMiIKK1NSQ1JFViA9ICIzOTQ5NGEyNzNlYWE2YjcxNGUwZmEwYzU5Y2U3YTFmNWZiYzgwYTFlIgogCi1QViA9ICIxLjEuMTQrZ2l0JHtTUkNQVn0iCitQViA9ICIxLjEuMTUrZ2l0JHtTUkNQVn0iCiAKICMgbWlycm9yIGlzIGF0IGdpdDovL2dpdGh1Yi5jb20va3Jhai9tdXNsLmdpdAogCkBAIC0yNiw4ICsyNiw2IEBACiAKIGV4cG9ydCBDUk9TU19DT01QSUxFPSIke1RBUkdFVF9QUkVGSVh9IgogCi1FWFRSQV9PRU1BS0UgPSAiIgotCiBMREZMQUdTICs9ICItV2wsLXNvbmFtZSxsaWJjLnNvIgogCiBDT05GSUdVUkVPUFRTID0gIiBcCkBAIC01Miw2ICs1MCwxMCBAQAogCiAJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CiAJbG4gLXMgLi4vLi4vJHtsaWJkaXJ9L2xpYmMuc28gJHtEfSR7YmluZGlyfS9sZGQKKwlmb3IgbCBpbiBjcnlwdCBkbCBtIHB0aHJlYWQgcmVzb2x2IHJ0IHV0aWwgeG5ldAorCWRvCisJCWxuIC1zIGxpYmMuc28gJHtEfSR7bGliZGlyfS9saWIkbC5zbworCWRvbmUKIH0KIAogUkRFUEVORFNfJHtQTn0tZGV2ICs9ICJsaW51eC1saWJjLWhlYWRlcnMtZGV2IGJzZC1oZWFkZXJzLWRldiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL25jdXJzZXNfNi4wKzIwMTYwMjEzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlc182LjArMjAxNjAyMTMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkNTY0ODEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlc182LjArMjAxNjAyMTMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1yZXF1aXJlIG5jdXJzZXMuaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly90aWMtaGFuZy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vY29uZmlnLmNhY2hlIFwKLSIKLSMgY29tbWl0IGlkIGNvcnJlc3BvbmRzIHRvIHRoZSByZXZpc2lvbiBpbiBwYWNrYWdlIHZlcnNpb24KLVNSQ1JFViA9ICJhMjU5NDlmZjY1M2FjNWFlN2EyMDQzODFhM2ViZmQ4MDBmZWVhYTAxIgotUyA9ICIke1dPUktESVJ9L2dpdCIKLUVYVFJBX09FQ09ORiArPSAiLS13aXRoLWFiaS12ZXJzaW9uPTUiCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKyhcK1xkKykqKSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL25jdXJzZXNfNi4wKzIwMTYwNjI1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlc182LjArMjAxNjA2MjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjUxNDYxMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL25jdXJzZXNfNi4wKzIwMTYwNjI1LmJiCkBAIC0wLDAgKzEsMTAgQEAKK3JlcXVpcmUgbmN1cnNlcy5pbmMKKworU1JDX1VSSSArPSAiZmlsZTovL3RpYy1oYW5nLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9jb25maWcuY2FjaGUgXAorIgorIyBjb21taXQgaWQgY29ycmVzcG9uZHMgdG8gdGhlIHJldmlzaW9uIGluIHBhY2thZ2UgdmVyc2lvbgorU1JDUkVWID0gIjYzZGQ1NThjYjhlODg4ZDZmYWI1ZjAwYmJmNzg0MjczNmEyMzU2YjkiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorRVhUUkFfT0VDT05GICs9ICItLXdpdGgtYWJpLXZlcnNpb249NSIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKFwrXGQrKSopIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25ldGJhc2UvbmV0YmFzZV81LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV0YmFzZS9uZXRiYXNlXzUuMy5iYgppbmRleCBjY2Q4OWZmLi41NDM1OTZhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV0YmFzZS9uZXRiYXNlXzUuMy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV0YmFzZS9uZXRiYXNlXzUuMy5iYgpAQCAtNiwxMyArNiwxNCBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZGViaWFuL2NvcHlyaWdodDttZDU9M2RkNjE5MmQzMDZmNTgyZGVlNzY4N2RhM2Q4NzQ4YWIiCiBQRSA9ICIxIgogCi1TUkNfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9uL25ldGJhc2UvbmV0YmFzZV8ke1BWfS50YXIueHogXAorU1JDX1VSSSA9ICJodHRwOi8vc25hcHNob3QuZGViaWFuLm9yZy9hcmNoaXZlL2RlYmlhbi8yMDE2MDcyOFQwNDM0NDNaL3Bvb2wvbWFpbi9uLyR7QlBOfS8ke0JQTn1fJHtQVn0udGFyLnh6IFwKICAgICAgICAgICAgZmlsZTovL25ldGJhc2UtYWRkLXJwY2JpbmQtYXMtYW4tYWxpYXMtdG8tc3VucnBjLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2hvc3RzIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiMjYzN2EyN2ZkM2RlMDJhMjc4ZDJiNWJlN2U2NTU4YzEiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODFmNmM2OTc5NTA0NGQ2MmI4YWQ5NTljZjlkYWYwNDlkMDU0NWZkNDY2YzUyODYwYWQzZjkzM2IxZTk3Yjg4YiIKIAorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9uL25ldGJhc2UvIgogZG9faW5zdGFsbCAoKSB7CiAJaW5zdGFsbCAtZCAke0R9LyR7bWFuZGlyfS9tYW44ICR7RH0ke3N5c2NvbmZkaXJ9CiAJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vaG9zdHMgJHtEfSR7c3lzY29uZmRpcn0vaG9zdHMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL25hdGl2ZXNkay1wYWNrYWdlZ3JvdXAtc2RrLWhvc3QuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9uYXRpdmVzZGstcGFja2FnZWdyb3VwLXNkay1ob3N0LmJiCmluZGV4IDBjNmE1MzAuLjJjMmFiZWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL25hdGl2ZXNkay1wYWNrYWdlZ3JvdXAtc2RrLWhvc3QuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvbmF0aXZlc2RrLXBhY2thZ2Vncm91cC1zZGstaG9zdC5iYgpAQCAtMjQsNiArMjQsNyBAQAogICAgIG5hdGl2ZXNkay1tYWtlZGV2cyBcCiAgICAgbmF0aXZlc2RrLXNtYXJ0cG0gXAogICAgIG5hdGl2ZXNkay1wb3N0aW5zdC1pbnRlcmNlcHQgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICduYXRpdmVzZGstd2F5bGFuZCcsICcnLCBkKX0gXAogICAgICIKIAogUkRFUEVORFNfJHtQTn1fZGFyd2luID0gIlwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1iYXNlLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWJhc2UuYmIKaW5kZXggOWU0MGIyOC4uMmU5NGZkZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWJhc2UuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWJhc2UuYmIKQEAgLTEsNSArMSw0IEBACiBTVU1NQVJZID0gIk1lcmdlIG1hY2hpbmUgYW5kIGRpc3RybyBvcHRpb25zIHRvIGNyZWF0ZSBhIGJhc2ljIG1hY2hpbmUgdGFzay9wYWNrYWdlIgotTElDRU5TRSA9ICJNSVQiCiBQUiA9ICJyODMiCiAKICMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWJvb3QuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1ib290LmJiCmluZGV4IGJhYzkzYjguLjA0YmMwZjIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWJvb3QuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtYm9vdC5iYgpAQCAtNCw3ICs0LDYgQEAKIAogU1VNTUFSWSA9ICJNaW5pbWFsIGJvb3QgcmVxdWlyZW1lbnRzIgogREVTQ1JJUFRJT04gPSAiVGhlIG1pbmltYWwgc2V0IG9mIHBhY2thZ2VzIHJlcXVpcmVkIHRvIGJvb3QgdGhlIHN5c3RlbSIKLUxJQ0VOU0UgPSAiTUlUIgogUFIgPSAicjE3IgogCiBQQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtYnVpbGRlc3NlbnRpYWwuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1idWlsZGVzc2VudGlhbC5iYgppbmRleCA3NGVkMjQ3Li43OGNjNjVkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1idWlsZGVzc2VudGlhbC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1idWlsZGVzc2VudGlhbC5iYgpAQCAtNCw3ICs0LDYgQEAKICMKIAogU1VNTUFSWSA9ICJFc3NlbnRpYWwgYnVpbGQgZGVwZW5kZW5jaWVzIgotTElDRU5TRSA9ICJNSVQiCiAKIGluaGVyaXQgcGFja2FnZWdyb3VwCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWVjbGlwc2UtZGVidWcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1lY2xpcHNlLWRlYnVnLmJiCmluZGV4IGU3YjAxM2QuLmM0NTQ2M2YgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWVjbGlwc2UtZGVidWcuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtZWNsaXBzZS1kZWJ1Zy5iYgpAQCAtMSw1ICsxLDQgQEAKIFNVTU1BUlkgPSAiUmVtb3RlIGRlYnVnZ2luZyB0b29scyBmb3IgRWNsaXBzZSBpbnRlZ3JhdGlvbiIKLUxJQ0VOU0UgPSAiTUlUIgogCiBpbmhlcml0IHBhY2thZ2Vncm91cAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1uZnMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1uZnMuYmIKaW5kZXggMTg4MmQzYS4uYjM0NWUzMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtbmZzLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLW5mcy5iYgpAQCAtMyw3ICszLDYgQEAKICMKIAogU1VNTUFSWSA9ICJORlMgcGFja2FnZSBncm91cHMiCi1MSUNFTlNFID0gIk1JVCIKIFBSID0gInIyIgogCiBpbmhlcml0IHBhY2thZ2Vncm91cApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtc2RrLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtc2RrLmJiCmluZGV4IGJlZTE2NjUuLmFjZWJhNzggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXNkay5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1zZGsuYmIKQEAgLTMsNyArMyw2IEBACiAjCiAKIFNVTU1BUlkgPSAiU29mdHdhcmUgZGV2ZWxvcG1lbnQgdG9vbHMiCi1MSUNFTlNFID0gIk1JVCIKIFBSID0gInI5IgogCiBQQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgpAQCAtMzAsNiArMjksNyBAQAogU0FOSVRJWkVSUyA9ICJsaWJhc2FuLWRldiBsaWJ1YnNhbi1kZXYiCiBTQU5JVElaRVJTX2FhcmNoNjQgPSAiIgogU0FOSVRJWkVSU19taXBzID0gIiIKK1NBTklUSVpFUlNfbWlwc2VsID0gIiIKIFNBTklUSVpFUlNfbWlwczY0ID0gIiIKIFNBTklUSVpFUlNfbWlwczY0bjMyID0gIiIKIFNBTklUSVpFUlNfbmlvczIgPSAiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtc3NoLWRyb3BiZWFyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtc3NoLWRyb3BiZWFyLmJiCmluZGV4IGU5OTk0NmYuLjVlYzNmNmMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXNzaC1kcm9wYmVhci5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1zc2gtZHJvcGJlYXIuYmIKQEAgLTEsNSArMSw0IEBACiBTVU1NQVJZID0gIkRyb3BiZWFyIFNTSCBjbGllbnQvc2VydmVyIgotTElDRU5TRSA9ICJNSVQiCiBQUiA9ICJyMSIKIAogaW5oZXJpdCBwYWNrYWdlZ3JvdXAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXNzaC1vcGVuc3NoLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtc3NoLW9wZW5zc2guYmIKaW5kZXggMzJkMjBlNi4uNzAzZjk1NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtc3NoLW9wZW5zc2guYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtc3NoLW9wZW5zc2guYmIKQEAgLTEsNSArMSw0IEBACiBTVU1NQVJZID0gIk9wZW5TU0ggU1NIIGNsaWVudC9zZXJ2ZXIiCi1MSUNFTlNFID0gIk1JVCIKIFBSID0gInIxIgogCiBpbmhlcml0IHBhY2thZ2Vncm91cApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtc3RhbmRhbG9uZS1zZGstdGFyZ2V0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtc3RhbmRhbG9uZS1zZGstdGFyZ2V0LmJiCmluZGV4IDY5OTdmMzkuLjI3NGUxMWEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXN0YW5kYWxvbmUtc2RrLXRhcmdldC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1zdGFuZGFsb25lLXNkay10YXJnZXQuYmIKQEAgLTEsNiArMSw1IEBACiBTVU1NQVJZID0gIlRhcmdldCBwYWNrYWdlcyBmb3IgdGhlIHN0YW5kYWxvbmUgU0RLIgogUFIgPSAicjgiCi1MSUNFTlNFID0gIk1JVCIKIAogaW5oZXJpdCBwYWNrYWdlZ3JvdXAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtdG9vbHMtZGVidWcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS10b29scy1kZWJ1Zy5iYgppbmRleCA4MjM0N2I5Li45ZmMyYjBlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS10b29scy1kZWJ1Zy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS10b29scy1kZWJ1Zy5iYgpAQCAtMyw3ICszLDYgQEAKICMKIAogU1VNTUFSWSA9ICJEZWJ1Z2dpbmcgdG9vbHMiCi1MSUNFTlNFID0gIk1JVCIKIAogaW5oZXJpdCBwYWNrYWdlZ3JvdXAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtdG9vbHMtcHJvZmlsZS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXRvb2xzLXByb2ZpbGUuYmIKaW5kZXggZmYyYjU3Ny4uZGQ5ODQ0NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtdG9vbHMtcHJvZmlsZS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS10b29scy1wcm9maWxlLmJiCkBAIC0zLDcgKzMsNiBAQAogIwogCiBTVU1NQVJZID0gIlByb2ZpbGluZyB0b29scyIKLUxJQ0VOU0UgPSAiTUlUIgogCiBQUiA9ICJyMyIKIApAQCAtMTIsOCArMTEsOSBAQAogaW5oZXJpdCBwYWNrYWdlZ3JvdXAKIAogUFJPRklMRV9UT09MU19YID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3N5c3Byb2YnLCAnJywgZCl9IgotIyBzeXNwcm9mIGRvZXNuJ3Qgc3VwcG9ydCBhYXJjaDY0CisjIHN5c3Byb2YgZG9lc24ndCBzdXBwb3J0IGFhcmNoNjQgYW5kIG5pb3MyCiBQUk9GSUxFX1RPT0xTX1hfYWFyY2g2NCA9ICIiCitQUk9GSUxFX1RPT0xTX1hfbmlvczIgPSAiIgogUFJPRklMRV9UT09MU19TWVNURU1EID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICdzeXN0ZW1kLWFuYWx5emUnLCAnJywgZCl9IgogCiBSUkVDT01NRU5EU18ke1BOfSA9ICJcCkBAIC0zNyw2ICszNyw3IEBACiBTWVNURU1UQVBfbGliYy11Y2xpYmMgPSAiIgogU1lTVEVNVEFQX2xpYmMtbXVzbCA9ICIiCiBTWVNURU1UQVBfbWlwcyA9ICIiCitTWVNURU1UQVBfbWlwc2VsID0gIiIKIFNZU1RFTVRBUF9taXBzNjQgPSAiIgogU1lTVEVNVEFQX21pcHM2NG4zMiA9ICIiCiBTWVNURU1UQVBfbmlvczIgPSAiIgpAQCAtNTksMTYgKzYwLDE5IEBACiAKIEJBQkVMVFJBQ0UgPSAiYmFiZWx0cmFjZSIKIAotIyB2YWxncmluZCBkb2VzIG5vdCB3b3JrIG9uIG1pcHMKKyMgdmFsZ3JpbmQgZG9lcyBub3Qgd29yayBvbiB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zL2FyY2hpdGVjdHVyZXMKIAogVkFMR1JJTkQgPSAidmFsZ3JpbmQiCiBWQUxHUklORF9saWJjLXVjbGliYyA9ICIiCiBWQUxHUklORF9saWJjLW11c2wgPSAiIgogVkFMR1JJTkRfbWlwcyA9ICIiCitWQUxHUklORF9taXBzZWwgPSAiIgogVkFMR1JJTkRfbWlwczY0ID0gIiIKIFZBTEdSSU5EX21pcHM2NG4zMiA9ICIiCiBWQUxHUklORF9uaW9zMiA9ICIiCi1WQUxHUklORF9hcm0gPSAiIgorVkFMR1JJTkRfYXJtdjQgPSAiIgorVkFMR1JJTkRfYXJtdjUgPSAiIgorVkFMR1JJTkRfYXJtdjYgPSAiIgogVkFMR1JJTkRfYWFyY2g2NCA9ICIiCiAKIFJERVBFTkRTXyR7UE59ID0gIlwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXRvb2xzLXRlc3RhcHBzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtdG9vbHMtdGVzdGFwcHMuYmIKaW5kZXggZThkNTg1ZS4uMzE3MDk3OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtdG9vbHMtdGVzdGFwcHMuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtdG9vbHMtdGVzdGFwcHMuYmIKQEAgLTMsNyArMyw2IEBACiAjCiAKIFNVTU1BUlkgPSAiVGVzdGluZyB0b29scy9hcHBsaWNhdGlvbnMiCi1MSUNFTlNFID0gIk1JVCIKIAogUFIgPSAicjIiCiAKQEAgLTE4LDcgKzE3LDYgQEAKIAogWDExR0xUT09MUyA9ICJcCiAgICAgbWVzYS1kZW1vcyBcCi0gICAgcGlnbGl0IFwKICAgICAiCiAKIDNHVE9PTFMgPSAiXApAQCAtMjcsNyArMjUsNyBAQAogCiBYMTFUT09MUyA9ICJcCiAgICAgZnN0ZXN0cyBcCi0gICAgZ3N0LXBsYXllci1iaW4gXAorICAgIGdzdC1wbGF5ZXIgXAogICAgIHgxMXBlcmYgXAogICAgIHhyZXN0b3AgXAogICAgIHh3aW5pbmZvIFwKQEAgLTM3LDggKzM1LDYgQEAKIAogUkRFUEVORFNfJHtQTn0gPSAiXAogICAgIGJsa3Rvb2wgXAotICAgIHRzbGliLWNhbGlicmF0ZSBcCi0gICAgdHNsaWItdGVzdHMgXAogICAgIGxyenN6IFwKICAgICAke0tFWEVDVE9PTFN9IFwKICAgICBhbHNhLXV0aWxzLWFtaXhlciBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY3Jvc3MtY2FuYWRpYW4uYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY3Jvc3MtY2FuYWRpYW4uYmIKaW5kZXggMTgwZGQ5Ni4uZDU1MTE0NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNyb3NzLWNhbmFkaWFuLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jcm9zcy1jYW5hZGlhbi5iYgpAQCAtMSw2ICsxLDUgQEAKIFNVTU1BUlkgPSAiSG9zdCBTREsgcGFja2FnZSBmb3IgY3Jvc3MgY2FuYWRpYW4gdG9vbGNoYWluIgogUE4gPSAicGFja2FnZWdyb3VwLWNyb3NzLWNhbmFkaWFuLSR7TUFDSElORX0iCi1MSUNFTlNFID0gIk1JVCIKIAogaW5oZXJpdCBjcm9zcy1jYW5hZGlhbiBwYWNrYWdlZ3JvdXAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXNlbGYtaG9zdGVkLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXNlbGYtaG9zdGVkLmJiCmluZGV4IDIyNTIwNGQuLjczNDMwYjggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1zZWxmLWhvc3RlZC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtc2VsZi1ob3N0ZWQuYmIKQEAgLTUsNyArNSw2IEBACiBTVU1NQVJZID0gIlNlbGYtaG9zdGluZyIKIERFU0NSSVBUSU9OID0gIlBhY2thZ2VzIHJlcXVpcmVkIHRvIHJ1biB0aGUgYnVpbGQgc3lzdGVtIgogUFIgPSAicjEzIgotTElDRU5TRSA9ICJNSVQiCiAKIGluaGVyaXQgcGFja2FnZWdyb3VwICBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKICMgcmRlcGVuZHMgb24gbGlieDExLWRldgpAQCAtMjksOSArMjgsNiBAQAogICAgICIKIAogUkRFUEVORFNfcGFja2FnZWdyb3VwLXNlbGYtaG9zdGVkLWhvc3QtdG9vbHMgPSAiXAotICAgIGNvbm5tYW4gXAotICAgIGNvbm5tYW4tcGx1Z2luLWV0aGVybmV0IFwKLSAgICBkaGNwLWNsaWVudCBcCiAgICAgZTJmc3Byb2dzIFwKICAgICBlMmZzcHJvZ3MtZTJmc2NrIFwKICAgICBlMmZzcHJvZ3MtbWtlMmZzIFwKQEAgLTEyNSw4ICsxMjEsNiBAQAogICAgIGdyb2ZmIFwKICAgICBnemlwIFwKICAgICBzZXR0aW5ncy1kYWVtb24gXAotICAgIGhpY29sb3ItaWNvbi10aGVtZSBcCi0gICAgc2F0by1pY29uLXRoZW1lIFwKICAgICBsaWJhaW8gXAogICAgIGxpYnVzYjEgXAogICAgIGxpYnhtbDIgXApAQCAtMTUzLDExICsxNDcsMTEgQEAKICAgICBwZXJsLW1vZHVsZXMgXAogICAgIHBlcmwtcG9kIFwKICAgICBweXRob24gXAotICAgIHB5dGhvbi1jb21waWxlciBcCi0gICAgcHl0aG9uLWdpdCBcCi0gICAgcHl0aG9uLW1pc2MgXAogICAgIHB5dGhvbi1tb2R1bGVzIFwKLSAgICBweXRob24tcnBtIFwKKyAgICBweXRob24tZ2l0IFwKKyAgICBweXRob24zIFwKKyAgICBweXRob24zLW1vZHVsZXMgXAorICAgIHB5dGhvbjMtZ2l0IFwKICAgICBxdW90YSBcCiAgICAgcmVhZGxpbmUgXAogICAgIHJwbSBcCkBAIC0xOTEsMTAgKzE4NSwxMCBAQAogICAgIGxpYnNkbCBcCiAgICAgbGlic2RsLWRldiBcCiAgICAgbGlieDExLWRldiBcCi0gICAgZ3RrLXRoZW1lLWNsZWFybG9va3MgXAorICAgIGFkd2FpdGEtaWNvbi10aGVtZSBcCiAgICAgeGRnLXV0aWxzIFwKICAgICBlcGlwaGFueSBcCi0gICAgbGVhZnBhZCBcCisgICAgbDNhZnBhZCBcCiAgICAgcGNtYW5mbSBcCiAgICAgdnRlIFwKICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcmVhZGxpbmUvcmVhZGxpbmUuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3JlYWRsaW5lL3JlYWRsaW5lLmluYwppbmRleCAzNWRmOGI0Li4xYTBhMTU1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcmVhZGxpbmUvcmVhZGxpbmUuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9yZWFkbGluZS9yZWFkbGluZS5pbmMKQEAgLTMyLDYgKzMyLDggQEAKIAlvZV9saWJpbnN0YWxsIC1zbyAtQyBzaGxpYiBsaWJyZWFkbGluZSAke0R9JHtsaWJkaXJ9CiAKIAlybWRpciAke0R9JHtiaW5kaXJ9CisJcm0gLXJmICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS8qLmMKKwlybWRpciAke0R9JHtkYXRhZGlyfS8ke0JQTn0gfHwgdHJ1ZQogCiAJaW5zdGFsbCAtbSAwNzU1IC1kICR7RH0ke3N5c2NvbmZkaXJ9CiAJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vaW5wdXRyYyAke0R9JHtzeXNjb25mZGlyfS9pbnB1dHJjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWNvbXBhdC11bml0cy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtY29tcGF0LXVuaXRzLmJiCmluZGV4IDBiOGZmMDkuLjQyMWZjMDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtY29tcGF0LXVuaXRzLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtY29tcGF0LXVuaXRzLmJiCkBAIC05LDEwICs5LDEyIEBACiAKIFMgPSAiJHtXT1JLRElSfSIKIAotaW5oZXJpdCBhbGxhcmNoCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjawogCiBBTExPV19FTVBUWV8ke1BOfSA9ICIxIgogCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAic3lzdGVtZCIKKwogU1lTVEVNRF9ESVNBQkxFRF9TWVNWX1NFUlZJQ0VTID0gIiBcCiAgIGJ1c3lib3gtdWRoY3BjIFwKICAgaHdjbG9jayBcCkBAIC0yMywyMSArMjUsMjQgQEAKICIKIAogcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKLQljZCAkRCR7c3lzY29uZmRpcn0vaW5pdC5kCisKKwljZCAkRCR7c3lzY29uZmRpcn0vaW5pdC5kICB8fCAgZXhpdCAwCiAKIAllY2hvICJEaXNhYmxpbmcgdGhlIGZvbGxvd2luZyBzeXN2IHNjcmlwdHM6ICIKIAotCU9QVFM9IiIKLQogCWlmIFsgLW4gIiREIiBdOyB0aGVuCiAJCU9QVFM9Ii0tcm9vdD0kRCIKKwllbHNlCisJCU9QVFM9IiIKIAlmaQogCiAJZm9yIGkgaW4gJHtTWVNURU1EX0RJU0FCTEVEX1NZU1ZfU0VSVklDRVN9IDsgZG8KLQkJaWYgWyBcKCAtZSAkaSAtbyAkaS5zaCBcKSAtYSAhIFwoIC1lICREJHtzeXNjb25mZGlyfS9zeXN0ZW1kL3N5c3RlbS8kaS5zZXJ2aWNlIC1vICAtZSAkRCR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vJGkuc2VydmljZSBcKSBdIDsgdGhlbgotCQkJZWNobyAtbiAiJGk6ICIgOyBzeXN0ZW1jdGwgJHtPUFRTfSBtYXNrICRpLnNlcnZpY2UKKwkJaWYgWyAtZSAkaSAtbyAtZSAkaS5zaCBdICAmJiAgICEgWyAtZSAkRCR7c3lzY29uZmRpcn0vc3lzdGVtZC9zeXN0ZW0vJGkuc2VydmljZSAtbyAtZSAkRCR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vJGkuc2VydmljZSBdIDsgdGhlbgorCQkJZWNobyAtbiAiJGk6ICIKKwkJCXN5c3RlbWN0bCAkT1BUUyBtYXNrICRpLnNlcnZpY2UKIAkJZmkKLQlkb25lIDsgZWNobworCWRvbmUKKwllY2hvCiB9CiAKLVJEUEVQRU5EU18ke1BOfSA9ICJzeXN0ZW1kIgorUkRFUEVORFNfJHtQTn0gPSAic3lzdGVtZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjgwMGY0MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQuaW5jCkBAIC0wLDAgKzEsMjUgQEAKK1NVTU1BUlkgPSAiQSBTeXN0ZW0gYW5kIHNlcnZpY2UgbWFuYWdlciIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvc3lzdGVtZCIKKworREVTQ1JJUFRJT04gPSAic3lzdGVtZCBpcyBhIHN5c3RlbSBhbmQgc2VydmljZSBtYW5hZ2VyIGZvciBMaW51eCwgY29tcGF0aWJsZSB3aXRoIFwKK1N5c1YgYW5kIExTQiBpbml0IHNjcmlwdHMuIHN5c3RlbWQgcHJvdmlkZXMgYWdncmVzc2l2ZSBwYXJhbGxlbGl6YXRpb24gXAorY2FwYWJpbGl0aWVzLCB1c2VzIHNvY2tldCBhbmQgRC1CdXMgYWN0aXZhdGlvbiBmb3Igc3RhcnRpbmcgc2VydmljZXMsIFwKK29mZmVycyBvbi1kZW1hbmQgc3RhcnRpbmcgb2YgZGFlbW9ucywga2VlcHMgdHJhY2sgb2YgcHJvY2Vzc2VzIHVzaW5nIFwKK0xpbnV4IGNncm91cHMsIHN1cHBvcnRzIHNuYXBzaG90dGluZyBhbmQgcmVzdG9yaW5nIG9mIHRoZSBzeXN0ZW0gXAorc3RhdGUsIG1haW50YWlucyBtb3VudCBhbmQgYXV0b21vdW50IHBvaW50cyBhbmQgaW1wbGVtZW50cyBhbiBcCitlbGFib3JhdGUgdHJhbnNhY3Rpb25hbCBkZXBlbmRlbmN5LWJhc2VkIHNlcnZpY2UgY29udHJvbCBsb2dpYy4gSXQgY2FuIFwKK3dvcmsgYXMgYSBkcm9wLWluIHJlcGxhY2VtZW50IGZvciBzeXN2aW5pdC4iCisKK0xJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuR1BMMjttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5MR1BMMi4xO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworU1JDUkVWID0gIjNhNzRkNGZjOTBjYjMyMmE0Nzg0YTM1MTViZWY3MTE4YzhmOGM1YmEiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3N5c3RlbWQuZ2l0O3Byb3RvY29sPWdpdCIKKworUFYgPSAiMjMwK2dpdCR7U1JDUFZ9IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitMREZMQUdTX2FwcGVuZF9saWJjLXVjbGliYyA9ICIgLWxydCAtbHNzcF9ub25zaGFyZWQgLWxzc3AgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAzLWRlZmluZS1leHAxMC1pZi1taXNzaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAzLWRlZmluZS1leHAxMC1pZi1taXNzaW5nLnBhdGNoCmluZGV4IGYxODMyNjEuLmU2MmQ1ODAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy1kZWZpbmUtZXhwMTAtaWYtbWlzc2luZy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDMtZGVmaW5lLWV4cDEwLWlmLW1pc3NpbmcucGF0Y2gKQEAgLTEsNiArMSwzIEBACi1Gcm9tIDY5OTg5M2EwNWVkYWM1MTk0Zjk2NzA1MjliYWNmYWViNjcyNTJlZGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAxNCBEZWMgMjAxNSAwMDo0Mjo0OSArMDAwMAogU3ViamVjdDogW1BBVENIIDAzLzM2XSBkZWZpbmUgZXhwMTAgaWYgbWlzc2luZwogCiBJbnNwaXJlZCBieTogaHR0cDovL3BldGVyLmtvcnNnYWFyZC5jb20vcGF0Y2hlcy9hbHNhLXV0aWxzL2Fsc2FtaXhlci1maXgtYnVpbGQtb24tdUNsaWJjLWV4cDEwLnBhdGNoCkBAIC0xMSwyMyArOCwyNSBAQAogCiBTaWduZWQtb2ZmLWJ5OiBTYW11ZWwgTWFydGluIDxzLm1hcnRpbjQ5QGdtYWlsLmNvbT4KIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKIC0tLQogIHNyYy9iYXNpYy9taXNzaW5nLmggfCA1ICsrKysrCiAgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21pc3NpbmcuaCBiL3NyYy9iYXNpYy9taXNzaW5nLmgKLWluZGV4IGYzZDMyMzYuLmVlN2U3ZWEgMTAwNjQ0CitpbmRleCA2NTFlNDE0Li5mYWZhMjMzIDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL21pc3NpbmcuaAogKysrIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAotQEAgLTExNjksMyArMTE2OSw4IEBAIHN0YXRpYyBpbmxpbmUga2V5X3NlcmlhbF90IHJlcXVlc3Rfa2V5KGNvbnN0IGNoYXIgKnR5cGUsIGNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uCi0gI2VuZGlmCitAQCAtMTAxMyw0ICsxMDEzLDkgQEAgdHlwZWRlZiBpbnQzMl90IGtleV9zZXJpYWxfdDsKICAKICAjZW5kaWYKLSsKKyAKICsjaWZkZWYgX19VQ0xJQkNfXwogKy8qIDEwXnggPSAxMF4obG9nIGVeeCkgPSAoZV54KV5sb2cxMCA9IGVeKHggKiBsb2cgMTApICovCiArI2RlZmluZSBleHAxMCh4KSAoZXhwKCh4KSAqIGxvZygxMCkpKQogKyNlbmRpZiAvKiBfX1VDTElCQ19fICovCisrCisgI2luY2x1ZGUgIm1pc3Npbmdfc3lzY2FsbC5oIgogLS0gCi0xLjguMy4xCisyLjguMwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTQtTWFrZS1yb290LXMtaG9tZS1kaXJlY3RvcnktY29uZmlndXJhYmxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE0LU1ha2Utcm9vdC1zLWhvbWUtZGlyZWN0b3J5LWNvbmZpZ3VyYWJsZS5wYXRjaAppbmRleCA0YTU3NmFhLi4yZWVhMGZmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTQtTWFrZS1yb290LXMtaG9tZS1kaXJlY3RvcnktY29uZmlndXJhYmxlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNC1NYWtlLXJvb3Qtcy1ob21lLWRpcmVjdG9yeS1jb25maWd1cmFibGUucGF0Y2gKQEAgLTEsNiArMSwzIEBACi1Gcm9tIDc4Njg4M2NmYTEzZTIxZjA2MGVlNmRhNmNhYmI5NDg0NWY0MzQ5YTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAxNCBEZWMgMjAxNSAwNToxODoyMCArMDAwMAogU3ViamVjdDogW1BBVENIIDE0LzM2XSBNYWtlIHJvb3QncyBob21lIGRpcmVjdG9yeSBjb25maWd1cmFibGUKIAogT3BlbkVtYmVkZGVkIGhhcyBhIGNvbmZpZ3VyYWJsZSBob21lIGRpcmVjdG9yeSBmb3Igcm9vdC4gQWxsb3cKQEAgLTE0LDYgKzExLDcgQEAKIAogU2lnbmVkLW9mZi1ieTogRGFuIE1jR3JlZ29yIDxkYW4ubWNncmVnb3JAdXNhc2suY2E+CiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCiAtLS0KICBNYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgfCAyICsrCiAgY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgIHwgNyArKysrKysrCkBAIC0yNiwxMCArMjQsMTAgQEAKICA4IGZpbGVzIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggYjNmMzM0My4uYTk5ZThlYiAxMDA2NDQKK2luZGV4IDMwNTA5OWEuLjg4YzEyNTAgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZS5hbQogKysrIGIvTWFrZWZpbGUuYW0KLUBAIC0yMDIsNiArMjAyLDcgQEAgQU1fQ1BQRkxBR1MgPSBcCitAQCAtMjA2LDYgKzIwNiw3IEBAIEFNX0NQUEZMQUdTID0gXAogIAktRExJQkRJUj1cIiQobGliZGlyKVwiIFwKICAJLURST09UTElCRElSPVwiJChyb290bGliZGlyKVwiIFwKICAJLURST09UTElCRVhFQ0RJUj1cIiQocm9vdGxpYmV4ZWNkaXIpXCIgXApAQCAtMzcsNyArMzUsNyBAQAogIAktRFRFU1RfRElSPVwiJChhYnNfdG9wX3NyY2RpcikvdGVzdFwiIFwKICAJLUkgJCh0b3Bfc3JjZGlyKS9zcmMgXAogIAktSSAkKHRvcF9idWlsZGRpcikvc3JjL2Jhc2ljIFwKLUBAIC01NzEzLDYgKzU3MTQsNyBAQCBFWFRSQV9ESVNUICs9IFwKK0BAIC01ODYzLDYgKzU4NjQsNyBAQCBFWFRSQV9ESVNUICs9IFwKICBzdWJzdGl0dXRpb25zID0gXAogICAgICAgICAnfHJvb3RsaWJleGVjZGlyPSQocm9vdGxpYmV4ZWNkaXIpfCcgXAogICAgICAgICAnfHJvb3RiaW5kaXI9JChyb290YmluZGlyKXwnIFwKQEAgLTQ2LDEwICs0NCwxMCBAQAogICAgICAgICAnfFNZU1RFTUNUTD0kKHJvb3RiaW5kaXIpL3N5c3RlbWN0bHwnIFwKICAgICAgICAgJ3xTWVNURU1EX05PVElGWT0kKHJvb3RiaW5kaXIpL3N5c3RlbWQtbm90aWZ5fCcgXAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggYzVhYjlkMC4uMTZjODNiYiAxMDA2NDQKK2luZGV4IDMyOTg2MWEuLjAxNzY0ZjUgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTE0NzAsNiArMTQ3MCwxMSBAQCBBQ19BUkdfV0lUSChbcm9vdGxpYmRpcl0sCitAQCAtMTQ3OCw2ICsxNDc4LDExIEBAIEFDX0FSR19XSVRIKFtyb290bGliZGlyXSwKICAgICAgICAgIFt3aXRoX3Jvb3RsaWJkaXI9JHtsaWJkaXJ9XSkKICBBWF9OT1JNQUxJWkVfUEFUSChbd2l0aF9yb290bGliZGlyXSkKICAKQEAgLTYxLDcgKzU5LDcgQEAKICBBQ19BUkdfV0lUSChbcGFtbGliZGlyXSwKICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtcGFtbGliZGlyPURJUl0sIFtEaXJlY3RvcnkgZm9yIFBBTSBtb2R1bGVzXSksCiAgICAgICAgICBbXSwKLUBAIC0xNTUzLDYgKzE1NTgsNyBAQCBBQ19TVUJTVChbcGFtbGliZGlyXSwgWyR3aXRoX3BhbWxpYmRpcl0pCitAQCAtMTU2Miw2ICsxNTY3LDcgQEAgQUNfU1VCU1QoW3BhbWxpYmRpcl0sIFskd2l0aF9wYW1saWJkaXJdKQogIEFDX1NVQlNUKFtwYW1jb25mZGlyXSwgWyR3aXRoX3BhbWNvbmZkaXJdKQogIEFDX1NVQlNUKFtyb290cHJlZml4XSwgWyR3aXRoX3Jvb3RwcmVmaXhdKQogIEFDX1NVQlNUKFtyb290bGliZGlyXSwgWyR3aXRoX3Jvb3RsaWJkaXJdKQpAQCAtNjksMTkgKzY3LDE5IEBACiAgCiAgQUNfQ09ORklHX0ZJTEVTKFsKICAgICAgICAgIE1ha2VmaWxlCi1AQCAtMTY0Myw2ICsxNjQ5LDcgQEAgQUNfTVNHX1JFU1VMVChbCi0gICAgICAgICBpbmNsdWRlZGlyOiAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfQotICAgICAgICAgbGliIGRpcjogICAgICAgICAgICAgICAgICR7bGliZGlyfQotICAgICAgICAgcm9vdGxpYiBkaXI6ICAgICAgICAgICAgICR7d2l0aF9yb290bGliZGlyfQotKyAgICAgICAgcm9vdCBob21lIGRpcjogICAgICAgICAgICR7d2l0aF9yb290aG9tZWRpcn0KLSAgICAgICAgIFN5c1YgaW5pdCBzY3JpcHRzOiAgICAgICAke1NZU1RFTV9TWVNWSU5JVF9QQVRIfQotICAgICAgICAgU3lzViByYz8uZCBkaXJlY3RvcmllczogICR7U1lTVEVNX1NZU1ZSQ05EX1BBVEh9Ci0gICAgICAgICBCdWlsZCBQeXRob246ICAgICAgICAgICAgJHtQWVRIT059CitAQCAtMTY1Myw2ICsxNjU5LDcgQEAgQUNfTVNHX1JFU1VMVChbCisgICAgICAgICBpbmNsdWRlZGlyOiAgICAgICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0KKyAgICAgICAgIGxpYiBkaXI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9CisgICAgICAgICByb290bGliIGRpcjogICAgICAgICAgICAgICAgICAgICAgICR7d2l0aF9yb290bGliZGlyfQorKyAgICAgICAgcm9vdCBob21lIGRpcjogICAgICAgICAgICAgICAgICAgICAke3dpdGhfcm9vdGhvbWVkaXJ9CisgICAgICAgICBTeXNWIGluaXQgc2NyaXB0czogICAgICAgICAgICAgICAgICR7U1lTVEVNX1NZU1ZJTklUX1BBVEh9CisgICAgICAgICBTeXNWIHJjPy5kIGRpcmVjdG9yaWVzOiAgICAgICAgICAgICR7U1lTVEVNX1NZU1ZSQ05EX1BBVEh9CisgICAgICAgICBCdWlsZCBQeXRob246ICAgICAgICAgICAgICAgICAgICAgICR7UFlUSE9OfQogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy91c2VyLXV0aWwuYyBiL3NyYy9iYXNpYy91c2VyLXV0aWwuYwotaW5kZXggMTkxNTViYy4uNTU2NzJiMyAxMDA2NDQKK2luZGV4IGY2NWNhM2UuLmRhMTEwMWEgMTAwNjQ0CiAtLS0gYS9zcmMvYmFzaWMvdXNlci11dGlsLmMKICsrKyBiL3NyYy9iYXNpYy91c2VyLXV0aWwuYwotQEAgLTEyMiw3ICsxMjIsNyBAQCBpbnQgZ2V0X3VzZXJfY3JlZHMoCitAQCAtMTIzLDcgKzEyMyw3IEBAIGludCBnZXRfdXNlcl9jcmVkcygKICAgICAgICAgICAgICAgICAgICAgICAgICAqZ2lkID0gMDsKICAKICAgICAgICAgICAgICAgICAgaWYgKGhvbWUpCkBAIC05MCw3ICs4OCw3IEBACiAgCiAgICAgICAgICAgICAgICAgIGlmIChzaGVsbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAqc2hlbGwgPSAiL2Jpbi9zaCI7Ci1AQCAtMzUzLDcgKzM1Myw3IEBAIGludCBnZXRfaG9tZV9kaXIoY2hhciAqKl9oKSB7CitAQCAtMzU0LDcgKzM1NCw3IEBAIGludCBnZXRfaG9tZV9kaXIoY2hhciAqKl9oKSB7CiAgICAgICAgICAvKiBIYXJkY29kZSBob21lIGRpcmVjdG9yeSBmb3Igcm9vdCB0byBhdm9pZCBOU1MgKi8KICAgICAgICAgIHUgPSBnZXR1aWQoKTsKICAgICAgICAgIGlmICh1ID09IDApIHsKQEAgLTEwMCwxMCArOTgsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKICAKIGRpZmYgLS1naXQgYS9zcmMvY29yZS9uYW1lc3BhY2UuYyBiL3NyYy9jb3JlL25hbWVzcGFjZS5jCi1pbmRleCBiNTczZjAwLi4wZjcwYjE0IDEwMDY0NAoraW5kZXggMjAzZDEyMi4uNDVjMGQxMSAxMDA2NDQKIC0tLSBhL3NyYy9jb3JlL25hbWVzcGFjZS5jCiArKysgYi9zcmMvY29yZS9uYW1lc3BhY2UuYwotQEAgLTQwOSw3ICs0MDksNyBAQCBpbnQgc2V0dXBfbmFtZXNwYWNlKAorQEAgLTQxNSw3ICs0MTUsNyBAQCBpbnQgc2V0dXBfbmFtZXNwYWNlKAogICAgICAgICAgICAgICAgICAgICAgICAgIGhvbWVfZGlyID0gc3Ryam9pbmEoIi0iLCBob21lX2Rpcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuX3VzZXJfZGlyID0gcHJlZml4X3Jvb3RhKHJvb3RfZGlyZWN0b3J5LCAiL3J1bi91c2VyIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuX3VzZXJfZGlyID0gc3Ryam9pbmEoIi0iLCBydW5fdXNlcl9kaXIpOwpAQCAtMTEzLDI0ICsxMTEsMjQgQEAKICAKICAgICAgICAgICAgICAgICAgICAgICAgICByID0gYXBwZW5kX21vdW50cygmbSwgU1RSVl9NQUtFKGhvbWVfZGlyLCBydW5fdXNlcl9kaXIsIHJvb3RfZGlyKSwKIGRpZmYgLS1naXQgYS9zcmMvbnNwYXduL25zcGF3bi5jIGIvc3JjL25zcGF3bi9uc3Bhd24uYwotaW5kZXggNjVlNjVlYy4uMTJmMGVlOCAxMDA2NDQKK2luZGV4IDhlYzA1ODQuLjUxZGYwMGIgMTAwNjQ0CiAtLS0gYS9zcmMvbnNwYXduL25zcGF3bi5jCiArKysgYi9zcmMvbnNwYXduL25zcGF3bi5jCi1AQCAtMjU2NCw3ICsyNTY0LDcgQEAgc3RhdGljIGludCBpbm5lcl9jaGlsZCgKK0BAIC0yNzM5LDcgKzI3MzksNyBAQCBzdGF0aWMgaW50IGlubmVyX2NoaWxkKAogICAgICAgICAgaWYgKGVudnBbbl9lbnZdKQotICAgICAgICAgICAgICAgICBuX2VudiArKzsKKyAgICAgICAgICAgICAgICAgbl9lbnYrKzsKICAKIC0gICAgICAgIGlmICgoYXNwcmludGYoKGNoYXIqKikoZW52cCArIG5fZW52KyspLCAiSE9NRT0lcyIsIGhvbWUgPyBob21lOiAiL3Jvb3QiKSA8IDApIHx8CiArICAgICAgICBpZiAoKGFzcHJpbnRmKChjaGFyKiopKGVudnAgKyBuX2VudisrKSwgIkhPTUU9JXMiLCBob21lID8gaG9tZTogUk9PVEhPTUVESVIpIDwgMCkgfHwKICAgICAgICAgICAgICAoYXNwcmludGYoKGNoYXIqKikoZW52cCArIG5fZW52KyspLCAiVVNFUj0lcyIsIGFyZ191c2VyID8gYXJnX3VzZXIgOiAicm9vdCIpIDwgMCkgfHwKICAgICAgICAgICAgICAoYXNwcmludGYoKGNoYXIqKikoZW52cCArIG5fZW52KyspLCAiTE9HTkFNRT0lcyIsIGFyZ191c2VyID8gYXJnX3VzZXIgOiAicm9vdCIpIDwgMCkpCiAgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfb29tKCk7Ci1AQCAtMjY0Nyw3ICsyNjQ3LDcgQEAgc3RhdGljIGludCBpbm5lcl9jaGlsZCgKLSAjZW5kaWYgLyogSEFWRV9FWEVDVlBFICovCitAQCAtMjgxNiw3ICsyODE2LDcgQEAgc3RhdGljIGludCBpbm5lcl9jaGlsZCgKICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICBpZiAoIWFyZ19jaGRpcikKLS0gICAgICAgICAgICAgICAgICAgICAgICBjaGRpcihob21lID86ICIvcm9vdCIpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGNoZGlyKGhvbWUgPzogUk9PVEhPTUVESVIpOworICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElmIHdlIGNhbm5vdCBjaGFuZ2UgdGhlIGRpcmVjdG9yeSwgd2UnbGwgZW5kIHVwIGluIC8sIHRoYXQgaXMgZXhwZWN0ZWQuICovCistICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpIGNoZGlyKGhvbWUgPzogIi9yb290Iik7CisrICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpIGNoZGlyKGhvbWUgPzogUk9PVEhPTUVESVIpOwogIAogICAgICAgICAgICAgICAgICBleGVjbGUoIi9iaW4vYmFzaCIsICItYmFzaCIsIE5VTEwsIGVudl91c2UpOwogICAgICAgICAgICAgICAgICBleGVjbGUoIi9iaW4vc2giLCAiLXNoIiwgTlVMTCwgZW52X3VzZSk7CkBAIC0xNTAsMTAgKzE0OCwxMCBAQAogIEV4ZWNTdG9wUG9zdD0tQFNZU1RFTUNUTEAgcG93ZXJvZmYKICBUeXBlPWlkbGUKIGRpZmYgLS1naXQgYS91bml0cy9lbWVyZ2VuY3kuc2VydmljZS5pbiBiL3VuaXRzL2VtZXJnZW5jeS5zZXJ2aWNlLmluCi1pbmRleCBmYjM5MGVhLi41NjIzYTU3IDEwMDY0NAoraW5kZXggMGRlMTZmMi4uNDgyNjA2MiAxMDA2NDQKIC0tLSBhL3VuaXRzL2VtZXJnZW5jeS5zZXJ2aWNlLmluCiArKysgYi91bml0cy9lbWVyZ2VuY3kuc2VydmljZS5pbgotQEAgLTE0LDggKzE0LDggQEAgQ29uZmxpY3RzPXJlc2N1ZS5zZXJ2aWNlCitAQCAtMTUsOCArMTUsOCBAQCBDb25mbGljdHM9c3lzbG9nLnNvY2tldAogIEJlZm9yZT1zaHV0ZG93bi50YXJnZXQKICAKICBbU2VydmljZV0KQEAgLTE4MCw1ICsxNzgsNSBAQAogIEV4ZWNTdGFydFByZT0tL2Jpbi9lY2hvIC1lICdXZWxjb21lIHRvIHJlc2N1ZSBtb2RlISBBZnRlciBsb2dnaW5nIGluLCB0eXBlICJqb3VybmFsY3RsIC14YiIgdG8gdmlld1xcbnN5c3RlbSBsb2dzLCAic3lzdGVtY3RsIHJlYm9vdCIgdG8gcmVib290LCAic3lzdGVtY3RsIGRlZmF1bHQiIG9yIF5EIHRvXFxuYm9vdCBpbnRvIGRlZmF1bHQgbW9kZS4nCiAgRXhlY1N0YXJ0PS0vYmluL3NoIC1jICJAU1VMT0dJTkA7IEBTWVNURU1DVExAIC0tam9iLW1vZGU9ZmFpbCAtLW5vLWJsb2NrIGRlZmF1bHQiCiAtLSAKLTEuOC4zLjEKKzIuOC4zCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNS1zeXN0ZW1kLXVzZXItYXZvaWQtdXNpbmctc3lzdGVtLWF1dGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTUtc3lzdGVtZC11c2VyLWF2b2lkLXVzaW5nLXN5c3RlbS1hdXRoLnBhdGNoCmluZGV4IGEzNTEyMzcuLjZlNmYzNDQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNS1zeXN0ZW1kLXVzZXItYXZvaWQtdXNpbmctc3lzdGVtLWF1dGgucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE1LXN5c3RlbWQtdXNlci1hdm9pZC11c2luZy1zeXN0ZW0tYXV0aC5wYXRjaApAQCAtMSw2ICsxLDMgQEAKLUZyb20gZjcwYTFhOTYwNWNkM2FkYWM0NTBjNDlhNWE2OWRhNmU5YWNkYTUxNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDIwIEZlYiAyMDE1IDA1OjI2OjI1ICswMDAwCiBTdWJqZWN0OiBbUEFUQ0ggMTUvMzZdIHN5c3RlbWQtdXNlcjogYXZvaWQgdXNpbmcgc3lzdGVtLWF1dGgKIAogSW4gT0UsIHdlIGRvbid0IHByb3ZpZGUgc3lzdGVtLWF1dGgsIGluc3RlYWQsIHdlIHVzZSBjb21tb24tKiBmaWxlcy4KQEAgLTEwLDE1ICs3LDE2IEBACiAKIFNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKIC0tLQogIHNyYy9sb2dpbi9zeXN0ZW1kLXVzZXIubTQgfCA0ICsrLS0KICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2xvZ2luL3N5c3RlbWQtdXNlci5tNCBiL3NyYy9sb2dpbi9zeXN0ZW1kLXVzZXIubTQKLWluZGV4IDc5MzM1MDguLjE2YjczZDIgMTAwNjQ0CitpbmRleCBmMTg4YThlLi44NjJkOGQ3IDEwMDY0NAogLS0tIGEvc3JjL2xvZ2luL3N5c3RlbWQtdXNlci5tNAogKysrIGIvc3JjL2xvZ2luL3N5c3RlbWQtdXNlci5tNAotQEAgLTIsMTAgKzIsMTAgQEAKK0BAIC0yLDExICsyLDExIEBACiAgIwogICMgVXNlZCBieSBzeXN0ZW1kIC0tdXNlciBpbnN0YW5jZXMuCiAgCkBAIC0yOSw4ICsyNyw5IEBACiAgc2Vzc2lvbiAgcmVxdWlyZWQgcGFtX3NlbGludXguc28gY2xvc2UKICBzZXNzaW9uICByZXF1aXJlZCBwYW1fc2VsaW51eC5zbyBub3R0eXMgb3BlbgogICltNF9kbmwKKyBzZXNzaW9uICByZXF1aXJlZCBwYW1fbG9naW51aWQuc28KIC1zZXNzaW9uICBpbmNsdWRlIHN5c3RlbS1hdXRoCiArc2Vzc2lvbiAgaW5jbHVkZSBjb21tb24tc2Vzc2lvbgogLS0gCi0xLjguMy4xCisyLjguMwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTctUmV2ZXJ0LXVkZXYtcmVtb3ZlLXVzZXJzcGFjZS1maXJtd2FyZS1sb2FkaW5nLXN1cHBvci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNy1SZXZlcnQtdWRldi1yZW1vdmUtdXNlcnNwYWNlLWZpcm13YXJlLWxvYWRpbmctc3VwcG9yLnBhdGNoCmluZGV4IDhlNjI4OWQuLjY0MjYyNWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNy1SZXZlcnQtdWRldi1yZW1vdmUtdXNlcnNwYWNlLWZpcm13YXJlLWxvYWRpbmctc3VwcG9yLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNy1SZXZlcnQtdWRldi1yZW1vdmUtdXNlcnNwYWNlLWZpcm13YXJlLWxvYWRpbmctc3VwcG9yLnBhdGNoCkBAIC0xLDYgKzEsMyBAQAotRnJvbSA5YTNhNGUxNmIzNmU3NjIyOTFjZDE1NzRlYzcxZDc5NTRmOGI1MzYzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMTQgRGVjIDIwMTUgMDU6MzM6MzIgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSCAxNy8zNl0gUmV2ZXJ0ICJ1ZGV2OiByZW1vdmUgdXNlcnNwYWNlIGZpcm13YXJlIGxvYWRpbmcKICBzdXBwb3J0IgogCkBAIC0xMywyMSArMTAsMjEgQEAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiAtLS0KICBNYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICB8ICAxMiArKysKLSBSRUFETUUgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNiArLQorIFJFQURNRSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICstCiAgVE9ETyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgIHwgIDIyICsrKysrKwogIHNyYy91ZGV2L3VkZXYtYnVpbHRpbi1maXJtd2FyZS5jIHwgMTU0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogIHNyYy91ZGV2L3VkZXYtYnVpbHRpbi5jICAgICAgICAgIHwgICAzICsKICBzcmMvdWRldi91ZGV2LmggICAgICAgICAgICAgICAgICB8ICAgNiArKwogIHNyYy91ZGV2L3VkZXZkLmMgICAgICAgICAgICAgICAgIHwgIDEzICsrKysKLSA4IGZpbGVzIGNoYW5nZWQsIDIxNCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorIDggZmlsZXMgY2hhbmdlZCwgMjEzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy91ZGV2L3VkZXYtYnVpbHRpbi1maXJtd2FyZS5jCiAKIGRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCBhOTllOGViLi5iNWM2YmE3IDEwMDY0NAoraW5kZXggMzA1MDk5YS4uZTc3NDk3NiAxMDA2NDQKIC0tLSBhL01ha2VmaWxlLmFtCiArKysgYi9NYWtlZmlsZS5hbQotQEAgLTM1NzMsNiArMzU3MywxOCBAQCBsaWJ1ZGV2X2NvcmVfbGFfTElCQUREID0gXAorQEAgLTM3MDYsNiArMzcwNiwxOCBAQCBsaWJ1ZGV2X2NvcmVfbGFfTElCQUREID0gXAogIAkkKEJMS0lEX0xJQlMpIFwKICAJJChLTU9EX0xJQlMpCiAgCkBAIC00NywxNyArNDQsMTAgQEAKICBsaWJ1ZGV2X2NvcmVfbGFfU09VUkNFUyArPSBcCiAgCXNyYy91ZGV2L3VkZXYtYnVpbHRpbi1rbW9kLmMKIGRpZmYgLS1naXQgYS9SRUFETUUgYi9SRUFETUUKLWluZGV4IDQxZmIwN2EuLjEwMjMwYWMgMTAwNjQ0CitpbmRleCBjYTg5OTNjLi44N2YzMjk3IDEwMDY0NAogLS0tIGEvUkVBRE1FCiArKysgYi9SRUFETUUKLUBAIC01MCwxNCArNTAsMTQgQEAgUkVRVUlSRU1FTlRTOgotICAgICAgICAgICBDT05GSUdfUFJPQ19GUwotICAgICAgICAgICBDT05GSUdfRkhBTkRMRSAobGlidWRldiwgbW91bnQgYW5kIGJpbmQgbW91bnQgaGFuZGxpbmcpCi0gCi0tICAgICAgICB1ZGV2IHdpbGwgZmFpbCB0byB3b3JrIHdpdGggdGhlIGxlZ2FjeSBzeXNmcyBsYXlvdXQ6Ci0rICAgICAgICBVZGV2IHdpbGwgZmFpbCB0byB3b3JrIHdpdGggdGhlIGxlZ2FjeSBsYXlvdXQ6Ci0gICAgICAgICAgIENPTkZJR19TWVNGU19ERVBSRUNBVEVEPW4KLSAKK0BAIC01Niw4ICs1Niw4IEBAIFJFUVVJUkVNRU5UUzoKICAgICAgICAgIExlZ2FjeSBob3RwbHVnIHNsb3dzIGRvd24gdGhlIHN5c3RlbSBhbmQgY29uZnVzZXMgdWRldjoKICAgICAgICAgICAgQ09ORklHX1VFVkVOVF9IRUxQRVJfUEFUSD0iIgogIApAQCAtNjksMTEgKzU5LDExIEBACiAgCiAgICAgICAgICBTb21lIHVkZXYgcnVsZXMgYW5kIHZpcnR1YWxpemF0aW9uIGRldGVjdGlvbiByZWxpZXMgb24gaXQ6CiBkaWZmIC0tZ2l0IGEvVE9ETyBiL1RPRE8KLWluZGV4IDkyY2M4Y2MuLjI1ZjY4NDkgMTAwNjQ0CitpbmRleCBmYWM5Y2NmLi4yNjQ1NTgyIDEwMDY0NAogLS0tIGEvVE9ETwogKysrIGIvVE9ETwotQEAgLTYyOCw2ICs2MjgsNyBAQCBGZWF0dXJlczoKLSAqIHJlbmFtZSAidXNlcnNwYWNlIiB0byAiY29yZS1vcyIKK0BAIC02NDIsNiArNjQyLDcgQEAgRmVhdHVyZXM6CisgKiBpbml0aWFsaXplIHRoZSBob3N0bmFtZSBmcm9tIHRoZSBmcyBsYWJlbCBvZiAvLCBpZiAvZXRjL2hvc3RuYW1lIGRvZXMgbm90IGV4aXN0PwogIAogICogdWRldjoKICsgIC0gcmVtb3ZlIHNyYy91ZGV2L3VkZXYtYnVpbHRpbi1maXJtd2FyZS5jIChDT05GSUdfRldfTE9BREVSX1VTRVJfSEVMUEVSPW4pCkBAIC04MSwxMCArNzEsMTAgQEAKICAgIC0ga2lsbCBzY3NpX2lkCiAgICAtIGFkZCB0cmlnZ2VyIC0tc3Vic3lzdGVtLW1hdGNoPXVzYi91c2JfZGV2aWNlIGRldmljZQogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMTZjODNiYi4uMzZkMjBiNSAxMDA2NDQKK2luZGV4IDMyOTg2MWEuLmFmODU0MDUgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTEzNTMsNiArMTM1MywyNSBAQCBBQ19BUkdfRU5BQkxFKGh3ZGIsIFtBQ19IRUxQX1NUUklORyhbLS1kaXNhYmxlLWh3ZGJdLCBbZGlzYWJsZSBoYXJkd2FyZSBkYXRhYmFzZQorQEAgLTEzNjEsNiArMTM2MSwyNSBAQCBBQ19BUkdfRU5BQkxFKGh3ZGIsIFtBQ19IRUxQX1NUUklORyhbLS1kaXNhYmxlLWh3ZGJdLCBbZGlzYWJsZSBoYXJkd2FyZSBkYXRhYmFzZQogIEFNX0NPTkRJVElPTkFMKEVOQUJMRV9IV0RCLCBbdGVzdCB4JGVuYWJsZV9od2RiID0geHllc10pCiAgCiAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTEwMywyMyArOTMsMjMgQEAKICtkb25lCiArSUZTPSRPTERfSUZTCiArQUNfU1VCU1QoRklSTVdBUkVfUEFUSCkKLStBU19JRihbdGVzdCAieCR7RklSTVdBUkVfUEFUSH0iICE9ICJ4Il0sIFsgQUNfREVGSU5FKEhBVkVfRklSTVdBUkUsIDEsIFtEZWZpbmUgaWYgRklSTVdBUkUgaXMgYXZhaWxhYmxlXSkgXSkKKytBU19JRihbdGVzdCAieCR7RklSTVdBUkVfUEFUSH0iICE9ICJ4Il0sIFsgQUNfREVGSU5FKEhBVkVfRklSTVdBUkUsIDEsIFtEZWZpbmUgaWYgRklSTVdBUkUgaXMgYXZhaWxhYmVdKSBdKQogK0FNX0NPTkRJVElPTkFMKEVOQUJMRV9GSVJNV0FSRSwgW3Rlc3QgIngke0ZJUk1XQVJFX1BBVEh9IiAhPSAieCJdKQogKwogKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgaGF2ZV9tYW5wYWdlcz1ubwogIEFDX0FSR19FTkFCTEUobWFucGFnZXMsIEFTX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtbWFucGFnZXNdLCBbZGlzYWJsZSBtYW5wYWdlc10pKQogIEFDX1BBVEhfUFJPRyhbWFNMVFBST0NdLCBbeHNsdHByb2NdKQotQEAgLTE2NTMsNiArMTY3Miw5IEBAIEFDX01TR19SRVNVTFQoWwotICAgICAgICAgU3lzViBpbml0IHNjcmlwdHM6ICAgICAgICR7U1lTVEVNX1NZU1ZJTklUX1BBVEh9Ci0gICAgICAgICBTeXNWIHJjPy5kIGRpcmVjdG9yaWVzOiAgJHtTWVNURU1fU1lTVlJDTkRfUEFUSH0KLSAgICAgICAgIEJ1aWxkIFB5dGhvbjogICAgICAgICAgICAke1BZVEhPTn0KLSsgICAgICAgIEluc3RhbGxhdGlvbiBQeXRob246ICAgICAke1BZVEhPTl9CSU5BUll9Ci0rICAgICAgICBzcGhpbnggYmluYXJ5OiAgICAgICAgICAgJHtTUEhJTlhfQlVJTER9Ci0rICAgICAgICBmaXJtd2FyZSBwYXRoOiAgICAgICAgICAgJHtGSVJNV0FSRV9QQVRIfQotICAgICAgICAgUEFNIG1vZHVsZXMgZGlyOiAgICAgICAgICR7d2l0aF9wYW1saWJkaXJ9Ci0gICAgICAgICBQQU0gY29uZmlndXJhdGlvbiBkaXI6ICAgJHt3aXRoX3BhbWNvbmZkaXJ9Ci0gICAgICAgICBELUJ1cyBwb2xpY3kgZGlyOiAgICAgICAgJHt3aXRoX2RidXNwb2xpY3lkaXJ9CitAQCAtMTY1Niw2ICsxNjc1LDkgQEAgQUNfTVNHX1JFU1VMVChbCisgICAgICAgICBTeXNWIGluaXQgc2NyaXB0czogICAgICAgICAgICAgICAgICR7U1lTVEVNX1NZU1ZJTklUX1BBVEh9CisgICAgICAgICBTeXNWIHJjPy5kIGRpcmVjdG9yaWVzOiAgICAgICAgICAgICR7U1lTVEVNX1NZU1ZSQ05EX1BBVEh9CisgICAgICAgICBCdWlsZCBQeXRob246ICAgICAgICAgICAgICAgICAgICAgICR7UFlUSE9OfQorKyAgICAgICAgSW5zdGFsbGF0aW9uIFB5dGhvbjogICAgICAgICAgICAgICAke1BZVEhPTl9CSU5BUll9CisrICAgICAgICBzcGhpbnggYmluYXJ5OiAgICAgICAgICAgICAgICAgICAgICR7U1BISU5YX0JVSUxEfQorKyAgICAgICAgZmlybXdhcmUgcGF0aDogICAgICAgICAgICAgICAgICAgICAke0ZJUk1XQVJFX1BBVEh9CisgICAgICAgICBQQU0gbW9kdWxlcyBkaXI6ICAgICAgICAgICAgICAgICAgICR7d2l0aF9wYW1saWJkaXJ9CisgICAgICAgICBQQU0gY29uZmlndXJhdGlvbiBkaXI6ICAgICAgICAgICAgICR7d2l0aF9wYW1jb25mZGlyfQorICAgICAgICAgRC1CdXMgcG9saWN5IGRpcjogICAgICAgICAgICAgICAgICAke3dpdGhfZGJ1c3BvbGljeWRpcn0KIGRpZmYgLS1naXQgYS9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tZmlybXdhcmUuYyBiL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1maXJtd2FyZS5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAogaW5kZXggMDAwMDAwMC4uYmQ4YzJmYgpAQCAtMjk1LDEwICsyODUsMTAgQEAKICAgICAgICAgIFtVREVWX0JVSUxUSU5fSU5QVVRfSURdID0gJnVkZXZfYnVpbHRpbl9pbnB1dF9pZCwKICAgICAgICAgIFtVREVWX0JVSUxUSU5fS0VZQk9BUkRdID0gJnVkZXZfYnVpbHRpbl9rZXlib2FyZCwKIGRpZmYgLS1naXQgYS9zcmMvdWRldi91ZGV2LmggYi9zcmMvdWRldi91ZGV2LmgKLWluZGV4IDFmOWM4MTIuLmZhMzVhODggMTAwNjQ0CitpbmRleCA4NDMzZThkLi5kMzIzNjZkIDEwMDY0NAogLS0tIGEvc3JjL3VkZXYvdWRldi5oCiArKysgYi9zcmMvdWRldi91ZGV2LmgKLUBAIC0xNDcsNiArMTQ3LDkgQEAgZW51bSB1ZGV2X2J1aWx0aW5fY21kIHsKK0BAIC0xNDgsNiArMTQ4LDkgQEAgZW51bSB1ZGV2X2J1aWx0aW5fY21kIHsKICAgICAgICAgIFVERVZfQlVJTFRJTl9CTEtJRCwKICAjZW5kaWYKICAgICAgICAgIFVERVZfQlVJTFRJTl9CVFJGUywKQEAgLTMwOCw3ICsyOTgsNyBAQAogICAgICAgICAgVURFVl9CVUlMVElOX0hXREIsCiAgICAgICAgICBVREVWX0JVSUxUSU5fSU5QVVRfSUQsCiAgICAgICAgICBVREVWX0JVSUxUSU5fS0VZQk9BUkQsCi1AQCAtMTc1LDYgKzE3OCw5IEBAIHN0cnVjdCB1ZGV2X2J1aWx0aW4geworQEAgLTE3Niw2ICsxNzksOSBAQCBzdHJ1Y3QgdWRldl9idWlsdGluIHsKICBleHRlcm4gY29uc3Qgc3RydWN0IHVkZXZfYnVpbHRpbiB1ZGV2X2J1aWx0aW5fYmxraWQ7CiAgI2VuZGlmCiAgZXh0ZXJuIGNvbnN0IHN0cnVjdCB1ZGV2X2J1aWx0aW4gdWRldl9idWlsdGluX2J0cmZzOwpAQCAtMzE5LDcgKzMwOSw3IEBACiAgZXh0ZXJuIGNvbnN0IHN0cnVjdCB1ZGV2X2J1aWx0aW4gdWRldl9idWlsdGluX2lucHV0X2lkOwogIGV4dGVybiBjb25zdCBzdHJ1Y3QgdWRldl9idWlsdGluIHVkZXZfYnVpbHRpbl9rZXlib2FyZDsKIGRpZmYgLS1naXQgYS9zcmMvdWRldi91ZGV2ZC5jIGIvc3JjL3VkZXYvdWRldmQuYwotaW5kZXggYmI5MmYxNi4uODQwMjRhYyAxMDA2NDQKK2luZGV4IGU5ZGQyZjQuLjBhYmMyOGUgMTAwNjQ0CiAtLS0gYS9zcmMvdWRldi91ZGV2ZC5jCiArKysgYi9zcmMvdWRldi91ZGV2ZC5jCiBAQCAtMTI1LDYgKzEyNSw5IEBAIHN0cnVjdCBldmVudCB7CkBAIC0zMzIsNyArMzIyLDcgQEAKICB9OwogIAogIHN0YXRpYyBpbmxpbmUgc3RydWN0IGV2ZW50ICpub2RlX3RvX2V2ZW50KHN0cnVjdCB1ZGV2X2xpc3Rfbm9kZSAqbm9kZSkgewotQEAgLTYxMyw2ICs2MTYsMTAgQEAgc3RhdGljIGludCBldmVudF9xdWV1ZV9pbnNlcnQoTWFuYWdlciAqbWFuYWdlciwgc3RydWN0IHVkZXZfZGV2aWNlICpkZXYpIHsKK0BAIC02MTQsNiArNjE3LDEwIEBAIHN0YXRpYyBpbnQgZXZlbnRfcXVldWVfaW5zZXJ0KE1hbmFnZXIgKm1hbmFnZXIsIHN0cnVjdCB1ZGV2X2RldmljZSAqZGV2KSB7CiAgICAgICAgICBldmVudC0+ZGV2bnVtID0gdWRldl9kZXZpY2VfZ2V0X2Rldm51bShkZXYpOwogICAgICAgICAgZXZlbnQtPmlzX2Jsb2NrID0gc3RyZXEoImJsb2NrIiwgdWRldl9kZXZpY2VfZ2V0X3N1YnN5c3RlbShkZXYpKTsKICAgICAgICAgIGV2ZW50LT5pZmluZGV4ID0gdWRldl9kZXZpY2VfZ2V0X2lmaW5kZXgoZGV2KTsKQEAgLTM0Myw3ICszMzMsNyBAQAogIAogICAgICAgICAgbG9nX2RlYnVnKCJzZXEgJWxsdSBxdWV1ZWQsICclcycgJyVzJyIsIHVkZXZfZGV2aWNlX2dldF9zZXFudW0oZGV2KSwKICAgICAgICAgICAgICAgdWRldl9kZXZpY2VfZ2V0X2FjdGlvbihkZXYpLCB1ZGV2X2RldmljZV9nZXRfc3Vic3lzdGVtKGRldikpOwotQEAgLTY5OCw2ICs3MDUsMTIgQEAgc3RhdGljIGJvb2wgaXNfZGV2cGF0aF9idXN5KE1hbmFnZXIgKm1hbmFnZXIsIHN0cnVjdCBldmVudCAqZXZlbnQpIHsKK0BAIC02OTksNiArNzA2LDEyIEBAIHN0YXRpYyBib29sIGlzX2RldnBhdGhfYnVzeShNYW5hZ2VyICptYW5hZ2VyLCBzdHJ1Y3QgZXZlbnQgKmV2ZW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgIH0KICAKQEAgLTM1Nyw1ICszNDcsNSBAQAogICAgICAgICAgICAgICAgICBpZiAoZXZlbnQtPmRldnBhdGhbY29tbW9uXSA9PSAnLycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC0+ZGVsYXlpbmdfc2VxbnVtID0gbG9vcF9ldmVudC0+c2VxbnVtOwogLS0gCi0xLjguMy4xCisyLjguMwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTgtbWFrZS10ZXN0LWRpci1jb25maWd1cmFibGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTgtbWFrZS10ZXN0LWRpci1jb25maWd1cmFibGUucGF0Y2gKaW5kZXggNWYzZjJlOC4uNWQxM2U0YSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE4LW1ha2UtdGVzdC1kaXItY29uZmlndXJhYmxlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOC1tYWtlLXRlc3QtZGlyLWNvbmZpZ3VyYWJsZS5wYXRjaApAQCAtMSw2ICsxLDMgQEAKLUZyb20gNTY5Y2QzY2Y5ODA2YTAyMjI2ZDI2YzQxMDRkYmU0NDI2MmY5M2QzMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJveSBMaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KLURhdGU6IEZyaSwgMjIgSmFuIDIwMTYgMTY6NDQ6MTEgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSCAxOC8zNl0gbWFrZSB0ZXN0IGRpciBjb25maWd1cmFibGUKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCkBAIC05LDE2ICs2LDE3IEBACiBpcyBub3QgdGhlIGNvbXBpbGF0aW9uIGRpciwgc28gbWFrZSBpdCBjb25maWd1cmFibGUKIAogU2lnbmVkLW9mZi1ieTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgorCiAtLS0KICBNYWtlZmlsZS5hbSAgfCAyICstCiAgY29uZmlndXJlLmFjIHwgNyArKysrKysrCiAgMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IGI1YzZiYTcuLmQzY2Q5NjEgMTAwNjQ0CitpbmRleCBhOTQ2MzZhLi5kYmQzMzg2IDEwMDY0NAogLS0tIGEvTWFrZWZpbGUuYW0KICsrKyBiL01ha2VmaWxlLmFtCi1AQCAtMjAzLDcgKzIwMyw3IEBAIEFNX0NQUEZMQUdTID0gXAorQEAgLTIwNyw3ICsyMDcsNyBAQCBBTV9DUFBGTEFHUyA9IFwKICAJLURST09UTElCRElSPVwiJChyb290bGliZGlyKVwiIFwKICAJLURST09UTElCRVhFQ0RJUj1cIiQocm9vdGxpYmV4ZWNkaXIpXCIgXAogIAktRFJPT1RIT01FRElSPVwiJChyb290aG9tZWRpcilcIiBcCkBAIC0yOCwxMCArMjYsMTAgQEAKICAJLUkgJCh0b3BfYnVpbGRkaXIpL3NyYy9iYXNpYyBcCiAgCS1JICQodG9wX3NyY2Rpcikvc3JjL2Jhc2ljIFwKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDM2ZDIwYjUuLmQ5NmRjNWEgMTAwNjQ0CitpbmRleCA0NWFhZThhLi5jNTNmYWUyIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC0xNDk0LDYgKzE0OTQsMTEgQEAgQUNfQVJHX1dJVEgoW3Jvb3Rob21lZGlyXSwKK0BAIC0xNTE4LDYgKzE1MTgsMTEgQEAgQUNfQVJHX1dJVEgoW3Jvb3Rob21lZGlyXSwKICAgICAgICAgIFtdLAogICAgICAgICAgW3dpdGhfcm9vdGhvbWVkaXI9L3Jvb3RdKQogIApAQCAtNDMsNyArNDEsNyBAQAogIEFDX0FSR19XSVRIKFtwYW1saWJkaXJdLAogICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1wYW1saWJkaXI9RElSXSwgW0RpcmVjdG9yeSBmb3IgUEFNIG1vZHVsZXNdKSwKICAgICAgICAgIFtdLAotQEAgLTE1NzgsNiArMTU4Myw3IEBAIEFDX1NVQlNUKFtwYW1jb25mZGlyXSwgWyR3aXRoX3BhbWNvbmZkaXJdKQorQEAgLTE2MDMsNiArMTYwOCw3IEBAIEFDX1NVQlNUKFtwYW1jb25mZGlyXSwgWyR3aXRoX3BhbWNvbmZkaXJdKQogIEFDX1NVQlNUKFtyb290cHJlZml4XSwgWyR3aXRoX3Jvb3RwcmVmaXhdKQogIEFDX1NVQlNUKFtyb290bGliZGlyXSwgWyR3aXRoX3Jvb3RsaWJkaXJdKQogIEFDX1NVQlNUKFtyb290aG9tZWRpcl0sIFskd2l0aF9yb290aG9tZWRpcl0pCkBAIC01MSwxNCArNDksMTQgQEAKICAKICBBQ19DT05GSUdfRklMRVMoWwogICAgICAgICAgTWFrZWZpbGUKLUBAIC0xNjY5LDYgKzE2NzUsNyBAQCBBQ19NU0dfUkVTVUxUKFsKLSAgICAgICAgIGxpYiBkaXI6ICAgICAgICAgICAgICAgICAke2xpYmRpcn0KLSAgICAgICAgIHJvb3RsaWIgZGlyOiAgICAgICAgICAgICAke3dpdGhfcm9vdGxpYmRpcn0KLSAgICAgICAgIHJvb3QgaG9tZSBkaXI6ICAgICAgICAgICAke3dpdGhfcm9vdGhvbWVkaXJ9Ci0rICAgICAgICB0ZXN0IGRpcjogICAgICAgICAgICAgICAgJHt3aXRoX3Rlc3RkaXJ9Ci0gICAgICAgICBTeXNWIGluaXQgc2NyaXB0czogICAgICAgJHtTWVNURU1fU1lTVklOSVRfUEFUSH0KLSAgICAgICAgIFN5c1YgcmM/LmQgZGlyZWN0b3JpZXM6ICAke1NZU1RFTV9TWVNWUkNORF9QQVRIfQotICAgICAgICAgQnVpbGQgUHl0aG9uOiAgICAgICAgICAgICR7UFlUSE9OfQorQEAgLTE2OTUsNiArMTcwMSw3IEBAIEFDX01TR19SRVNVTFQoWworICAgICAgICAgbGliIGRpcjogICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0KKyAgICAgICAgIHJvb3RsaWIgZGlyOiAgICAgICAgICAgICAgICAgICAgICAgJHt3aXRoX3Jvb3RsaWJkaXJ9CisgICAgICAgICByb290IGhvbWUgZGlyOiAgICAgICAgICAgICAgICAgICAgICR7d2l0aF9yb290aG9tZWRpcn0KKysgICAgICAgIHRlc3QgZGlyOiAgICAgICAgICAgICAgICAgICAgICAgICAgJHt3aXRoX3Rlc3RkaXJ9CisgICAgICAgICBTeXNWIGluaXQgc2NyaXB0czogICAgICAgICAgICAgICAgICR7U1lTVEVNX1NZU1ZJTklUX1BBVEh9CisgICAgICAgICBTeXNWIHJjPy5kIGRpcmVjdG9yaWVzOiAgICAgICAgICAgICR7U1lTVEVNX1NZU1ZSQ05EX1BBVEh9CisgICAgICAgICBCdWlsZCBQeXRob246ICAgICAgICAgICAgICAgICAgICAgICR7UFlUSE9OfQogLS0gCi0xLjguMy4xCisyLjguMwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjMtYnVpbGQtc3lzLWZpeC1idWlsZC13aXRoLWxpYmdyY3lwdC1kaXNhYmxlZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMy1idWlsZC1zeXMtZml4LWJ1aWxkLXdpdGgtbGliZ3JjeXB0LWRpc2FibGVkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYWUzZDY2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMy1idWlsZC1zeXMtZml4LWJ1aWxkLXdpdGgtbGliZ3JjeXB0LWRpc2FibGVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTIyICswLDAgQEAKLUZyb20gYjY4ZjEwYmYxZjc1MTllMDEyZGE1ZTM1ZmFiM2E1N2RhN2RjNDZkNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9aYmlnbmlldz0yMEo9QzQ9OTlkcnplamV3c2tpLVN6bWVrPz0gPHpieXN6ZWtAaW4ud2F3LnBsPgotRGF0ZTogU3VuLCAyNyBNYXIgMjAxNiAxNzozMzo1NCAtMDQwMAotU3ViamVjdDogW1BBVENIXSBidWlsZC1zeXM6IGZpeCBidWlsZCB3aXRoIGxpYmdyY3lwdCBkaXNhYmxlZAotCi0tIE1vdmUgZ2NyeXB0LmggaW5jbHVkZSBpbnNpZGUgZ3JjcnlwdC11dGlsLmguCi0tIEFsbG93IGdjcnlwdC11dGlsLltjaF0gdG8gYmUgY29tcGlsZWQgZXZlbiB3aXRob3V0IGdjcnlwdC4KLVRoaXMgYWxsb3dzIHRoZSBsb2dpYyBpbiBmaWxlcyB1c2luZyBnY3J5cHQgdG8gYmUgc2ltcGxpZmllZC4KLQotLSBGaXggY29tcGlsYXRpb24gb2Ygc3lzdGVtZC1yZXNvbHZlIHdpdGhvdXQgZ2NyeXB0Lgotc3lzdGVtZC1yZXNvbHZlZCBhbHJlYWR5IHN1cHBvcnRlZCB0aGF0LgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFsgaHR0cHM6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC9wdWxsLzI5MDUgXQotCi1GaXhlcyBbWU9DVE8gIzkyMTldCi0KLVNpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgotLS0tCi0gTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgfCAgOCArKysrLS0tLQotIHNyYy9yZXNvbHZlL3Jlc29sdmUtdG9vbC5jIHwgIDMgKy0tCi0gc3JjL3NoYXJlZC9nY3J5cHQtdXRpbC5jICAgfCAgNCArKystCi0gc3JjL3NoYXJlZC9nY3J5cHQtdXRpbC5oICAgfCAxNCArKysrKysrKysrKysrKwotIDQgZmlsZXMgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDJiNzJhNTMuLjk1ZWFhOWEgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC00MjYyLDcgKzQyNjIsOSBAQCBsaWJzeXN0ZW1kX2pvdXJuYWxfaW50ZXJuYWxfbGFfU09VUkNFUyA9IFwKLSAJc3JjL2pvdXJuYWwvbW1hcC1jYWNoZS5oIFwKLSAJc3JjL2pvdXJuYWwvY29tcHJlc3MuYyBcCi0gCXNyYy9qb3VybmFsL2F1ZGl0LXR5cGUuaCBcCi0tCXNyYy9qb3VybmFsL2F1ZGl0LXR5cGUuYwotKwlzcmMvam91cm5hbC9hdWRpdC10eXBlLmMgXAotKwlzcmMvc2hhcmVkL2djcnlwdC11dGlsLmggXAotKwlzcmMvc2hhcmVkL2djcnlwdC11dGlsLmMKLSAKLSBub2Rpc3RfbGlic3lzdGVtZF9qb3VybmFsX2ludGVybmFsX2xhX1NPVVJDRVMgPSBcCi0gCXNyYy9qb3VybmFsL2F1ZGl0X3R5cGUtdG8tbmFtZS5oCi1AQCAtNDI5NCw5ICs0Mjk2LDcgQEAgbGlic3lzdGVtZF9qb3VybmFsX2ludGVybmFsX2xhX1NPVVJDRVMgKz0gXAotIAlzcmMvam91cm5hbC9qb3VybmFsLWF1dGhlbnRpY2F0ZS5jIFwKLSAJc3JjL2pvdXJuYWwvam91cm5hbC1hdXRoZW50aWNhdGUuaCBcCi0gCXNyYy9qb3VybmFsL2ZzcHJnLmMgXAotLQlzcmMvam91cm5hbC9mc3ByZy5oIFwKLS0Jc3JjL3NoYXJlZC9nY3J5cHQtdXRpbC5jIFwKLS0Jc3JjL3NoYXJlZC9nY3J5cHQtdXRpbC5oCi0rCXNyYy9qb3VybmFsL2ZzcHJnLmgKLSAKLSBsaWJzeXN0ZW1kX2pvdXJuYWxfaW50ZXJuYWxfbGFfTElCQUREICs9IFwKLSAJJChHQ1JZUFRfTElCUykKLWRpZmYgLS1naXQgYS9zcmMvcmVzb2x2ZS9yZXNvbHZlLXRvb2wuYyBiL3NyYy9yZXNvbHZlL3Jlc29sdmUtdG9vbC5jCi1pbmRleCAwMDljYzczLi4xNGVlMDFjIDEwMDY0NAotLS0tIGEvc3JjL3Jlc29sdmUvcmVzb2x2ZS10b29sLmMKLSsrKyBiL3NyYy9yZXNvbHZlL3Jlc29sdmUtdG9vbC5jCi1AQCAtMTcsNyArMTcsNiBAQAotICAgYWxvbmcgd2l0aCBzeXN0ZW1kOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0gKioqLwotIAotLSNpbmNsdWRlIDxnY3J5cHQuaD4KLSAjaW5jbHVkZSA8Z2V0b3B0Lmg+Ci0gI2luY2x1ZGUgPG5ldC9pZi5oPgotIAotQEAgLTg2Myw3ICs4NjIsNyBAQCBzdGF0aWMgaW50IHJlc29sdmVfb3BlbnBncChzZF9idXMgKmJ1cywgY29uc3QgY2hhciAqYWRkcmVzcykgewotICAgICAgICAgfQotICAgICAgICAgZG9tYWluKys7Ci0gCi0tICAgICAgICByID0gc3RyaW5nX2hhc2hzdW0oYWRkcmVzcywgZG9tYWluIC0gMSAtIGFkZHJlc3MsIEdDUllfTURfU0hBMjI0LCAmaGFzaGVkKTsKLSsgICAgICAgIHIgPSBzdHJpbmdfaGFzaHN1bV9zaGEyMjQoYWRkcmVzcywgZG9tYWluIC0gMSAtIGFkZHJlc3MsICZoYXNoZWQpOwotICAgICAgICAgaWYgKHIgPCAwKQotICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX2Vycm9yX2Vycm5vKHIsICJIYXNoaW5nIGZhaWxlZDogJW0iKTsKLSAKLWRpZmYgLS1naXQgYS9zcmMvc2hhcmVkL2djcnlwdC11dGlsLmMgYi9zcmMvc2hhcmVkL2djcnlwdC11dGlsLmMKLWluZGV4IDRmZjk0NTIuLjM5YjU0NGIgMTAwNjQ0Ci0tLS0gYS9zcmMvc2hhcmVkL2djcnlwdC11dGlsLmMKLSsrKyBiL3NyYy9zaGFyZWQvZ2NyeXB0LXV0aWwuYwotQEAgLTE5LDEwICsxOSwxMSBAQAotICAgYWxvbmcgd2l0aCBzeXN0ZW1kOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0gKioqLwotIAotKyNpZmRlZiBIQVZFX0dDUllQVAotICNpbmNsdWRlIDxnY3J5cHQuaD4KLSAKLS0jaW5jbHVkZSAiaGV4ZGVjb2N0LmgiCi0gI2luY2x1ZGUgImdjcnlwdC11dGlsLmgiCi0rI2luY2x1ZGUgImhleGRlY29jdC5oIgotIAotIHZvaWQgaW5pdGlhbGl6ZV9saWJnY3J5cHQoYm9vbCBzZWNtZW0pIHsKLSAgICAgICAgIGNvbnN0IGNoYXIgKnA7Ci1AQCAtNjcsMyArNjgsNCBAQCBpbnQgc3RyaW5nX2hhc2hzdW0oY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbiwgaW50IG1kX2FsZ29yaXRobSwgY2hhciAqKm91dCkgewotICAgICAgICAgKm91dCA9IGVuYzsKLSAgICAgICAgIHJldHVybiAwOwotIH0KLSsjZW5kaWYKLWRpZmYgLS1naXQgYS9zcmMvc2hhcmVkL2djcnlwdC11dGlsLmggYi9zcmMvc2hhcmVkL2djcnlwdC11dGlsLmgKLWluZGV4IGM3NjUyYzIuLmNmMzNiM2MgMTAwNjQ0Ci0tLS0gYS9zcmMvc2hhcmVkL2djcnlwdC11dGlsLmgKLSsrKyBiL3NyYy9zaGFyZWQvZ2NyeXB0LXV0aWwuaAotQEAgLTE5LDcgKzE5LDIxIEBACi0gICBhbG9uZyB3aXRoIHN5c3RlbWQ7IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSAqKiovCi0gCi0rI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPHN0ZGJvb2wuaD4KLSsjaW5jbHVkZSA8c3RkZGVmLmg+Ci0rCi0rI2lmZGVmIEhBVkVfR0NSWVBUCi0rI2luY2x1ZGUgPGdjcnlwdC5oPgotIAotIHZvaWQgaW5pdGlhbGl6ZV9saWJnY3J5cHQoYm9vbCBzZWNtZW0pOwotIGludCBzdHJpbmdfaGFzaHN1bShjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuLCBpbnQgbWRfYWxnb3JpdGhtLCBjaGFyICoqb3V0KTsKLSsjZW5kaWYKLSsKLStzdGF0aWMgaW5saW5lIGludCBzdHJpbmdfaGFzaHN1bV9zaGEyMjQoY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbiwgY2hhciAqKm91dCkgewotKyNpZmRlZiBIQVZFX0dDUllQVAotKyAgICAgICAgcmV0dXJuIHN0cmluZ19oYXNoc3VtKHMsIGxlbiwgR0NSWV9NRF9TSEEyMjQsIG91dCk7Ci0rI2Vsc2UKLSsgICAgICAgIHJldHVybiAtRU9QTk9UU1VQUDsKLSsjZW5kaWYKLSt9Ci0tLSAKLTIuNC4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvdWRldi1yZS1lbmFibGUtbW91bnQtcHJvcGFnYXRpb24tZm9yLXVkZXZkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC91ZGV2LXJlLWVuYWJsZS1tb3VudC1wcm9wYWdhdGlvbi1mb3ItdWRldmQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjNlMjJkNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvdWRldi1yZS1lbmFibGUtbW91bnQtcHJvcGFnYXRpb24tZm9yLXVkZXZkLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb206IE1pY2hhZWwgQmllYmwgPGJpZWJsQGRlYmlhbi5vcmc+CitEYXRlOiBTYXQsIDI3IFNlcCAyMDE0IDA0OjE5OjI0ICswMjAwCitTdWJqZWN0OiB1ZGV2OiByZS1lbmFibGUgbW91bnQgcHJvcGFnYXRpb24gZm9yIHVkZXZkCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHA6Ly9odHRwLmRlYmlhbi5uZXQvZGViaWFuL3Bvb2wvbWFpbi9zL3N5c3RlbWQvc3lzdGVtZF8yMTUtMTcrZGViOHU0LmRlYmlhbi50YXIueHpdCisKK2xhcHRvcC1tb2RlLXRvb2xzIHJlbW91bnRzIGZpbGUgc3lzdGVtcyBmcm9tIHdpdGhpbiBhIHVkZXYgcnVsZSB0byBhcHBseQorY2VydGFpbiBtb3VudCBvcHRpb25zLiBXaXRoIE1vdW50RmxhZ3M9c2xhdmUsIHRob3NlIG1vdW50cyB0aGVuIGJlY29tZSBwcml2YXRlCit0byB0aGUgc3lzdGVtZC11ZGV2ZCBuYW1lc3BhY2UgYW5kIGFyZSBubyBsb25nZXIgYWNjZXNzaWJsZSBmcm9tIG91dHNpZGUgdGhlCituYW1lc3BhY2UuCitXaGlsZSB0aGUgcm9vdCBjYXVzZSBpcyB0aGUgYnJva2VuIGJlaGF2aW91ciBvZiBsYXB0b3AtbW9kZS10b29scywgd2l0aCBtb3VudAorcHJvcGFnYXRpb24gdHVybmVkIG9mZiwgdGhpcyBjYW4gcmVzdWx0IGluIGEgcmVhZC1vbmx5IHJvb3QgZmlsZSBzeXN0ZW0uCitUaGVyZWZvcmUgcmV2ZXJ0IHRoZSByZWxldmFudCBwYXJ0cyBmcm9tIGNvbW1pdAorYzJjMTNmMmRmNDJlMDY5MWFlY2FiZTM5NzllYTgxY2Q3ZmFhMzVjNyB0byByZS1lbmFibGUgbW91bnQgcHJvcGFnYXRpb24gZm9yCit1ZGV2ZC4KKworT25jZSBhZmZlY3RlZCBwYWNrYWdlcyBoYXZlIGJlZW4gZml4ZWQsIHRoaXMgcGF0Y2ggc2hvdWxkIGJlIGRyb3BwZWQKK2FnYWluLgorCitDbG9zZXM6ICM3NjIwMTgKK2RpZmYgLS1naXQgYS91bml0cy9zeXN0ZW1kLXVkZXZkLnNlcnZpY2UuaW4gYi91bml0cy9zeXN0ZW1kLXVkZXZkLnNlcnZpY2UuaW4KK2luZGV4IGU3MjE2ZDYuLjFlOWE2MDAgMTAwNjQ0CistLS0gYS91bml0cy9zeXN0ZW1kLXVkZXZkLnNlcnZpY2UuaW4KKysrKyBiL3VuaXRzL3N5c3RlbWQtdWRldmQuc2VydmljZS5pbgorQEAgLTIxLDYgKzIxLDUgQEAgU29ja2V0cz1zeXN0ZW1kLXVkZXZkLWNvbnRyb2wuc29ja2V0IHN5c3RlbWQtdWRldmQta2VybmVsLnNvY2tldAorIFJlc3RhcnQ9YWx3YXlzCisgUmVzdGFydFNlYz0wCisgRXhlY1N0YXJ0PUByb290bGliZXhlY2RpckAvc3lzdGVtZC11ZGV2ZAorLU1vdW50RmxhZ3M9c2xhdmUKKyBLaWxsTW9kZT1taXhlZAorIFdhdGNoZG9nU2VjPTFtaW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWRfMjI5LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZF8yMjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyM2M3NDkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZF8yMjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NzkgKzAsMCBAQAotU1VNTUFSWSA9ICJBIFN5c3RlbSBhbmQgc2VydmljZSBtYW5hZ2VyIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9zeXN0ZW1kIgotCi1ERVNDUklQVElPTiA9ICJzeXN0ZW1kIGlzIGEgc3lzdGVtIGFuZCBzZXJ2aWNlIG1hbmFnZXIgZm9yIExpbnV4LCBjb21wYXRpYmxlIHdpdGggXAotU3lzViBhbmQgTFNCIGluaXQgc2NyaXB0cy4gc3lzdGVtZCBwcm92aWRlcyBhZ2dyZXNzaXZlIHBhcmFsbGVsaXphdGlvbiBcCi1jYXBhYmlsaXRpZXMsIHVzZXMgc29ja2V0IGFuZCBELUJ1cyBhY3RpdmF0aW9uIGZvciBzdGFydGluZyBzZXJ2aWNlcywgXAotb2ZmZXJzIG9uLWRlbWFuZCBzdGFydGluZyBvZiBkYWVtb25zLCBrZWVwcyB0cmFjayBvZiBwcm9jZXNzZXMgdXNpbmcgXAotTGludXggY2dyb3Vwcywgc3VwcG9ydHMgc25hcHNob3R0aW5nIGFuZCByZXN0b3Jpbmcgb2YgdGhlIHN5c3RlbSBcCi1zdGF0ZSwgbWFpbnRhaW5zIG1vdW50IGFuZCBhdXRvbW91bnQgcG9pbnRzIGFuZCBpbXBsZW1lbnRzIGFuIFwKLWVsYWJvcmF0ZSB0cmFuc2FjdGlvbmFsIGRlcGVuZGVuY3ktYmFzZWQgc2VydmljZSBjb250cm9sIGxvZ2ljLiBJdCBjYW4gXAotd29yayBhcyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQgZm9yIHN5c3Zpbml0LiIKLQotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5HUEwyO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLkxHUEwyLjE7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgotCi1QUk9WSURFUyA9ICJ1ZGV2IgotCi1QRSA9ICIxIgotCi1ERVBFTkRTID0gImttb2QgZG9jYm9vay1zZ21sLWR0ZC00LjEtbmF0aXZlIGludGx0b29sLW5hdGl2ZSBncGVyZi1uYXRpdmUgYWNsIHJlYWRsaW5lIGxpYmNhcCBsaWJjZ3JvdXAgcWVtdS1uYXRpdmUgdXRpbC1saW51eCIKLQotU0VDVElPTiA9ICJiYXNlL3NoZWxsIgotCi1pbmhlcml0IHVzZXJhZGQgcGtnY29uZmlnIGF1dG90b29scyBwZXJsbmF0aXZlIHVwZGF0ZS1yYy5kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgcWVtdSBzeXN0ZW1kIHB0ZXN0IGdldHRleHQgYmFzaC1jb21wbGV0aW9uCi0KLVNSQ1JFViA9ICI3MTRjNjJiNDYzNzlhYmI3NTU4YzU0NDY2NTUyMmFjYTkxNjkxZTEwIgotCi1QViA9ICIyMjkrZ2l0JHtTUkNQVn0iCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3N5c3RlbWQuZ2l0O3Byb3RvY29sPWdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly90b3VjaHNjcmVlbi5ydWxlcyBcCi0gICAgICAgICAgIGZpbGU6Ly8wMC1jcmVhdGUtdm9sYXRpbGUuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9pbml0IFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLWRlZmluZS1leHAxMC1pZi1taXNzaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtVXNlLWdldGVudi13aGVuLXNlY3VyZS12ZXJzaW9ucy1hcmUtbm90LWF2YWlsYWJsZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LWJpbmZtdC1Eb24tdC1pbnN0YWxsLWRlcGVuZGVuY3ktbGlua3MtYXQtaW5zdGFsbC10aW0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNi1jb25maWd1cmUtQ2hlY2stZm9yLWFkZGl0aW9uYWwtZmVhdHVyZXMtdGhhdC11Y2xpYmMtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDctdXNlLWxuci13cmFwcGVyLWluc3RlYWQtb2YtbG9va2luZy1mb3ItcmVsYXRpdmUtb3B0aS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA4LW5zcGF3bi1Vc2UtZXhlY3ZwZS1vbmx5LXdoZW4tbGliYy1zdXBwb3J0cy1pdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA5LXV0aWwtYnlwYXNzLXVuaW1wbGVtZW50ZWQtX1NDX1BIWVNfUEFHRVMtc3lzdGVtLWNvbmYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMC1pbXBsbWVudC1zeXN0ZW1kLXN5c3YtaW5zdGFsbC1mb3ItT0UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMS1uc3MtbXltYWNoaW5lcy1CdWlsZC1jb25kaXRpb25hbGx5LXdoZW4tSEFWRV9NWUhPU1ROLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTItcnVsZXMtd2hpdGVsaXN0LWhkLWRldmljZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMy1zeXN2LWdlbmVyYXRvci1hZGQtc3VwcG9ydC1mb3ItZXhlY3V0aW5nLXNjcmlwdHMtdW5kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTQtTWFrZS1yb290LXMtaG9tZS1kaXJlY3RvcnktY29uZmlndXJhYmxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTUtc3lzdGVtZC11c2VyLWF2b2lkLXVzaW5nLXN5c3RlbS1hdXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTYtUmV2ZXJ0LXJ1bGVzLXJlbW92ZS1maXJtd2FyZS1sb2FkaW5nLXJ1bGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTctUmV2ZXJ0LXVkZXYtcmVtb3ZlLXVzZXJzcGFjZS1maXJtd2FyZS1sb2FkaW5nLXN1cHBvci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE4LW1ha2UtdGVzdC1kaXItY29uZmlndXJhYmxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTktcmVtb3ZlLWR1cGxpY2F0ZS1pbmNsdWRlLXVjaGFyLmgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMC1jaGVjay1mb3ItdWNoYXIuaC1pbi1jb25maWd1cmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMS1pbmNsdWRlLW1pc3NpbmcuaC1mb3ItZ2V0dGluZy1zZWN1cmVfZ2V0ZW52LWRlZmluaXRpLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjItc29ja2V0LXV0aWwtZG9uLXQtZmFpbC1pZi1saWJjLWRvZXNuLXQtc3VwcG9ydC1JRE4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMy1idWlsZC1zeXMtZml4LWJ1aWxkLXdpdGgtbGliZ3JjeXB0LWRpc2FibGVkLnBhdGNoIFwKLSIKLVNSQ19VUklfYXBwZW5kX2xpYmMtdWNsaWJjID0gIlwKLSAgICAgICAgICAgZmlsZTovLzAwMDItdW5pdHMtUHJlZmVyLWdldHR5LXRvLWFnZXR0eS1pbi1jb25zb2xlLXNldHVwLXN5c3RlbS5wYXRjaCBcCi0iCi1TUkNfVVJJX2FwcGVuZF9xZW11YWxsID0gIiBmaWxlOi8vMDAwMS1jb3JlLWRldmljZS5jLUNoYW5nZS10aGUtZGVmYXVsdC1kZXZpY2UtdGltZW91dC10by0yLnBhdGNoIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1MREZMQUdTX2FwcGVuZF9saWJjLXVjbGliYyA9ICIgLWxydCAtbHNzcF9ub25zaGFyZWQgLWxzc3AgIgotCi1HVEtET0NfRE9DRElSID0gIiR7U30vZG9jcy8iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJ4eiBcCi0gICAgICAgICAgICAgICAgICAgbGRjb25maWcgXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3BhbScsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3hrYmNvbW1vbicsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc2VsaW51eCcsICdzZWxpbnV4JywgJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3aWZpJywgJ3Jma2lsbCcsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdNQUNISU5FX0ZFQVRVUkVTJywgJ2VmaScsICdlZmknLCAnJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICBiaW5mbXQgXAotICAgICAgICAgICAgICAgICAgIHJhbmRvbXNlZWQgXAotICAgICAgICAgICAgICAgICAgIG1hY2hpbmVkIFwKLSAgICAgICAgICAgICAgICAgICBiYWNrbGlnaHQgXAotICAgICAgICAgICAgICAgICAgIHF1b3RhY2hlY2sgXAotICAgICAgICAgICAgICAgICAgIGJvb3RjaGFydCBcCi0gICAgICAgICAgICAgICAgICAgaG9zdG5hbWVkIFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnVENMSUJDJywgJ2dsaWJjJywgJ215aG9zdG5hbWUgc3lzdXNlcnMnLCAnJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICBoaWJlcm5hdGUgXAotICAgICAgICAgICAgICAgICAgIHRpbWVkYXRlZCBcCi0gICAgICAgICAgICAgICAgICAgdGltZXN5bmNkIFwKLSAgICAgICAgICAgICAgICAgICBsb2NhbGVkIFwKLSAgICAgICAgICAgICAgICAgICBrZGJ1cyBcCi0gICAgICAgICAgICAgICAgICAgaW1hIFwKLSAgICAgICAgICAgICAgICAgICBzbWFjayBcCi0gICAgICAgICAgICAgICAgICAgbG9naW5kIFwKLSAgICAgICAgICAgICAgICAgICBmaXJzdGJvb3QgXAotICAgICAgICAgICAgICAgICAgIHV0bXAgXAotICAgICAgICAgICAgICAgICAgIHBvbGtpdCBcCi0iCi1QQUNLQUdFQ09ORklHX3JlbW92ZV9saWJjLW11c2wgPSAic2VsaW51eCIKLVBBQ0tBR0VDT05GSUdfcmVtb3ZlX2xpYmMtbXVzbCA9ICJzbWFjayIKLQotIyBVc2UgdGhlIHVwc3RyZWFtIHN5c3RlbWQgc2VyaWFsLWdldHR5QC5zZXJ2aWNlIGFuZCByZWx5IG9uCi0jIHN5c3RlbWQtZ2V0dHktZ2VuZXJhdG9yIGluc3RlYWQgb2YgdXNpbmcgdGhlIE9FLWNvcmUgc3BlY2lmaWMKLSMgc3lzdGVtZC1zZXJpYWxnZXR0eS5iYiAtIG5vdCBlbmFibGVkIGJ5IGRlZmF1bHQuCi1QQUNLQUdFQ09ORklHW3NlcmlhbC1nZXR0eS1nZW5lcmF0b3JdID0gIiIKLQotUEFDS0FHRUNPTkZJR1tqb3VybmFsLXVwbG9hZF0gPSAiLS1lbmFibGUtbGliY3VybCwtLWRpc2FibGUtbGliY3VybCxjdXJsIgotIyBTaWduIHRoZSBqb3VybmFsIGZvciBhbnRpLXRhbXBlcmluZwotUEFDS0FHRUNPTkZJR1tnY3J5cHRdID0gIi0tZW5hYmxlLWdjcnlwdCwtLWRpc2FibGUtZ2NyeXB0LGxpYmdjcnlwdCIKLVBBQ0tBR0VDT05GSUdbY3J5cHRzZXR1cF0gPSAiLS1lbmFibGUtbGliY3J5cHRzZXR1cCwtLWRpc2FibGUtbGliY3J5cHRzZXR1cCxjcnlwdHNldHVwIgotUEFDS0FHRUNPTkZJR1ttaWNyb2h0dHBkXSA9ICItLWVuYWJsZS1taWNyb2h0dHBkLC0tZGlzYWJsZS1taWNyb2h0dHBkLGxpYm1pY3JvaHR0cGQiCi1QQUNLQUdFQ09ORklHW2VsZnV0aWxzXSA9ICItLWVuYWJsZS1lbGZ1dGlscywtLWRpc2FibGUtZWxmdXRpbHMsZWxmdXRpbHMiCi1QQUNLQUdFQ09ORklHW3Jlc29sdmVkXSA9ICItLWVuYWJsZS1yZXNvbHZlZCwtLWRpc2FibGUtcmVzb2x2ZWQiCi1QQUNLQUdFQ09ORklHW25ldHdvcmtkXSA9ICItLWVuYWJsZS1uZXR3b3JrZCwtLWRpc2FibGUtbmV0d29ya2QiCi1QQUNLQUdFQ09ORklHW21hY2hpbmVkXSA9ICItLWVuYWJsZS1tYWNoaW5lZCwtLWRpc2FibGUtbWFjaGluZWQiCi1QQUNLQUdFQ09ORklHW2JhY2tsaWdodF0gPSAiLS1lbmFibGUtYmFja2xpZ2h0LC0tZGlzYWJsZS1iYWNrbGlnaHQiCi1QQUNLQUdFQ09ORklHW3F1b3RhY2hlY2tdID0gIi0tZW5hYmxlLXF1b3RhY2hlY2ssLS1kaXNhYmxlLXF1b3RhY2hlY2siCi1QQUNLQUdFQ09ORklHW2Jvb3RjaGFydF0gPSAiLS1lbmFibGUtYm9vdGNoYXJ0LC0tZGlzYWJsZS1ib290Y2hhcnQiCi1QQUNLQUdFQ09ORklHW2hvc3RuYW1lZF0gPSAiLS1lbmFibGUtaG9zdG5hbWVkLC0tZGlzYWJsZS1ob3N0bmFtZWQiCi1QQUNLQUdFQ09ORklHW215aG9zdG5hbWVdID0gIi0tZW5hYmxlLW15aG9zdG5hbWUsLS1kaXNhYmxlLW15aG9zdG5hbWUiCi1QQUNLQUdFQ09ORklHW3Jma2lsbF0gPSAiLS1lbmFibGUtcmZraWxsLC0tZGlzYWJsZS1yZmtpbGwiCi1QQUNLQUdFQ09ORklHW2hpYmVybmF0ZV0gPSAiLS1lbmFibGUtaGliZXJuYXRlLC0tZGlzYWJsZS1oaWJlcm5hdGUiCi1QQUNLQUdFQ09ORklHW3RpbWVkYXRlZF0gPSAiLS1lbmFibGUtdGltZWRhdGVkLC0tZGlzYWJsZS10aW1lZGF0ZWQiCi1QQUNLQUdFQ09ORklHW3RpbWVzeW5jZF0gPSAiLS1lbmFibGUtdGltZXN5bmNkLC0tZGlzYWJsZS10aW1lc3luY2QiCi1QQUNLQUdFQ09ORklHW2xvY2FsZWRdID0gIi0tZW5hYmxlLWxvY2FsZWQsLS1kaXNhYmxlLWxvY2FsZWQiCi1QQUNLQUdFQ09ORklHW2VmaV0gPSAiLS1lbmFibGUtZWZpLC0tZGlzYWJsZS1lZmkiCi1QQUNLQUdFQ09ORklHW2tkYnVzXSA9ICItLWVuYWJsZS1rZGJ1cywtLWRpc2FibGUta2RidXMiCi1QQUNLQUdFQ09ORklHW2ltYV0gPSAiLS1lbmFibGUtaW1hLC0tZGlzYWJsZS1pbWEiCi1QQUNLQUdFQ09ORklHW3NtYWNrXSA9ICItLWVuYWJsZS1zbWFjaywtLWRpc2FibGUtc21hY2siCi0jIGxpYnNlY2NvbXAgaXMgZm91bmQgaW4gbWV0YS1zZWN1cml0eQotUEFDS0FHRUNPTkZJR1tzZWNjb21wXSA9ICItLWVuYWJsZS1zZWNjb21wLC0tZGlzYWJsZS1zZWNjb21wLGxpYnNlY2NvbXAiCi1QQUNLQUdFQ09ORklHW2xvZ2luZF0gPSAiLS1lbmFibGUtbG9naW5kLC0tZGlzYWJsZS1sb2dpbmQiCi1QQUNLQUdFQ09ORklHW3N5c3VzZXJzXSA9ICItLWVuYWJsZS1zeXN1c2VycywtLWRpc2FibGUtc3lzdXNlcnMiCi1QQUNLQUdFQ09ORklHW2ZpcnN0Ym9vdF0gPSAiLS1lbmFibGUtZmlyc3Rib290LC0tZGlzYWJsZS1maXJzdGJvb3QiCi1QQUNLQUdFQ09ORklHW3JhbmRvbXNlZWRdID0gIi0tZW5hYmxlLXJhbmRvbXNlZWQsLS1kaXNhYmxlLXJhbmRvbXNlZWQiCi1QQUNLQUdFQ09ORklHW2JpbmZtdF0gPSAiLS1lbmFibGUtYmluZm10LC0tZGlzYWJsZS1iaW5mbXQiCi1QQUNLQUdFQ09ORklHW3V0bXBdID0gIi0tZW5hYmxlLXV0bXAsLS1kaXNhYmxlLXV0bXAiCi1QQUNLQUdFQ09ORklHW3BvbGtpdF0gPSAiLS1lbmFibGUtcG9sa2l0LC0tZGlzYWJsZS1wb2xraXQiCi0jIGltcG9ydGQgcmVxdWlyZXMgY3VybC94ei96bGliL2J6aXAyL2djcnlwdAotUEFDS0FHRUNPTkZJR1tpbXBvcnRkXSA9ICItLWVuYWJsZS1pbXBvcnRkLC0tZGlzYWJsZS1pbXBvcnRkIgotUEFDS0FHRUNPTkZJR1tsaWJpZG5dID0gIi0tZW5hYmxlLWxpYmlkbiwtLWRpc2FibGUtbGliaWRuLGxpYmlkbiIKLVBBQ0tBR0VDT05GSUdbYXVkaXRdID0gIi0tZW5hYmxlLWF1ZGl0LC0tZGlzYWJsZS1hdWRpdCxhdWRpdCIKLVBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbnBhZ2VzLC0tZGlzYWJsZS1tYW5wYWdlcyxsaWJ4c2x0LW5hdGl2ZSB4bWx0by1uYXRpdmUgZG9jYm9vay14bWwtZHRkNC1uYXRpdmUgZG9jYm9vay14c2wtc3R5bGVzaGVldHMtbmF0aXZlIgotUEFDS0FHRUNPTkZJR1twYW1dID0gIi0tZW5hYmxlLXBhbSwtLWRpc2FibGUtcGFtLGxpYnBhbSIKLSMgVmVyaWZ5IGtleW1hcHMgb24gbG9jYWxlIGNoYW5nZQotUEFDS0FHRUNPTkZJR1t4a2Jjb21tb25dID0gIi0tZW5hYmxlLXhrYmNvbW1vbiwtLWRpc2FibGUteGtiY29tbW9uLGxpYnhrYmNvbW1vbiIKLSMgVXBkYXRlIE5BVCBmaXJld2FsbCBydWxlcwotUEFDS0FHRUNPTkZJR1tpcHRjXSA9ICItLWVuYWJsZS1saWJpcHRjLC0tZGlzYWJsZS1saWJpcHRjLGlwdGFibGVzIgotUEFDS0FHRUNPTkZJR1tsZGNvbmZpZ10gPSAiLS1lbmFibGUtbGRjb25maWcsLS1kaXNhYmxlLWxkY29uZmlnLCwiCi1QQUNLQUdFQ09ORklHW3NlbGludXhdID0gIi0tZW5hYmxlLXNlbGludXgsLS1kaXNhYmxlLXNlbGludXgsbGlic2VsaW51eCIKLVBBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gImFjX2N2X2hlYWRlcl92YWxncmluZF9tZW1jaGVja19oPXllcyBhY19jdl9oZWFkZXJfdmFsZ3JpbmRfdmFsZ3JpbmRfaD15ZXMgLGFjX2N2X2hlYWRlcl92YWxncmluZF9tZW1jaGVja19oPW5vIGFjX2N2X2hlYWRlcl92YWxncmluZF92YWxncmluZF9oPW5vICx2YWxncmluZCIKLVBBQ0tBR0VDT05GSUdbcXJlbmNvZGVdID0gIi0tZW5hYmxlLXFyZW5jb2RlLC0tZGlzYWJsZS1xcmVuY29kZSxxcmVuY29kZSIKLVBBQ0tBR0VDT05GSUdbZGJ1c10gPSAiLS1lbmFibGUtZGJ1cywtLWRpc2FibGUtZGJ1cyxkYnVzIgotUEFDS0FHRUNPTkZJR1tjb3JlZHVtcF0gPSAiLS1lbmFibGUtY29yZWR1bXAsLS1kaXNhYmxlLWNvcmVkdW1wIgotUEFDS0FHRUNPTkZJR1tiemlwMl0gPSAiLS1lbmFibGUtYnppcDIsLS1kaXNhYmxlLWJ6aXAyLGJ6aXAyIgotUEFDS0FHRUNPTkZJR1tsejRdID0gIi0tZW5hYmxlLWx6NCwtLWRpc2FibGUtbHo0LGx6NCIKLVBBQ0tBR0VDT05GSUdbeHpdID0gIi0tZW5hYmxlLXh6LC0tZGlzYWJsZS14eix4eiIKLVBBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS1lbmFibGUtemxpYiwtLWRpc2FibGUtemxpYix6bGliIgotCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9LSUxMPSR7YmFzZV9iaW5kaXJ9L2tpbGwiCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9LTU9EPSR7YmFzZV9iaW5kaXJ9L2ttb2QiCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9RVU9UQUNIRUNLPSR7c2JpbmRpcn0vcXVvdGFjaGVjayIKLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX1FVT1RBT049JHtzYmluZGlyfS9xdW90YW9uIgotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfU1VMT0dJTj0ke2Jhc2Vfc2JpbmRpcn0vc3Vsb2dpbiIKLQotIyBIZWxwZXIgdmFyaWFibGVzIHRvIGNsYXJpZnkgbG9jYXRpb25zLiAgVGhpcyBtaXJyb3JzIHRoZSBsb2dpYyBpbiBzeXN0ZW1kJ3MKLSMgYnVpbGQgc3lzdGVtLgotcm9vdHByZWZpeCA/PSAiJHtiYXNlX3ByZWZpeH0iCi1yb290bGliZGlyID89ICIke2Jhc2VfbGliZGlyfSIKLXJvb3RsaWJleGVjZGlyID0gIiR7cm9vdHByZWZpeH0vbGliIgotCi1DQUNIRURfQ09ORklHVVJFVkFSU19jbGFzcy10YXJnZXQgPSAiXAotICAgICAgICAgICAgICAgICAgICAgICAgIGFjX2N2X3BhdGhfTU9VTlRfUEFUSD0ke2Jhc2VfYmluZGlyfS9tb3VudCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgYWNfY3ZfcGF0aF9VTU9VTlRfUEFUSD0ke2Jhc2VfYmluZGlyfS91bW91bnQgXAotICAgICAgICAgICAgICAgICAgICAgICAgIGFjX2N2X3BhdGhfS01PRD0ke2Jhc2VfYmluZGlyfS9rbW9kIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBhY19jdl9wYXRoX0tJTEw9JHtiYXNlX2JpbmRpcn0va2lsbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgYWNfY3ZfcGF0aF9TVUxPR0lOPSR7YmFzZV9zYmluZGlyfS9zdWxvZ2luIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBhY19jdl9wYXRoX0tFWEVDPSR7c2JpbmRpcn0va2V4ZWMgXAotICAgICAgICAgICAgICAgICAgICAgICAgIGFjX2N2X3BhdGhfUVVPVEFDSEVDSz0ke3NiaW5kaXJ9L3F1b3RhY2hlY2sgXAotICAgICAgICAgICAgICAgICAgICAgICAgIGFjX2N2X3BhdGhfUVVPVEFPTj0ke3NiaW5kaXJ9L3F1b3Rhb24gXAotCQkJICIKLQotRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtcm9vdHByZWZpeD0ke3Jvb3RwcmVmaXh9IFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLXJvb3RsaWJkaXI9JHtyb290bGliZGlyfSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1yb290aG9tZWRpcj0ke1JPT1RfSE9NRX0gXAotICAgICAgICAgICAgICAgICAtLWVuYWJsZS1zcGxpdC11c3IgXAotICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtcHl0aG9uIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLXN5c3ZyY25kLXBhdGg9JHtzeXNjb25mZGlyfSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1maXJtd2FyZS1wYXRoPS9saWIvZmlybXdhcmUgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtdGVzdGRpcj0ke1BURVNUX1BBVEh9IFwKLSAgICAgICAgICAgICAgICIKLSMgcGVyIHRoZSBzeXN0ZW1kIFJFQURNRSwgZGVmaW5lIFZBTEdSSU5EPTEgdG8gcnVuIHVuZGVyIHZhbGdyaW5kCi1DRkxBR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3ZhbGdyaW5kJywgJyAtRFZBTEdSSU5EPTEnLCAnJywgZCl9IgotCi0jIGRpc2FibGUgcHJvYmxlbWF0aWMgR0NDIDUuMiBvcHRpbWl6YXRpb25zIFtZT0NUTyAjODI5MV0KLUZVTExfT1BUSU1JWkFUSU9OX2FwcGVuZF9hcm0gPSAiIC1mbm8tc2NoZWR1bGUtaW5zbnMgLWZuby1zY2hlZHVsZS1pbnNuczIiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotCWV4cG9ydCBOTT0iJHtIT1NUX1BSRUZJWH1nY2Mtbm0iCi0JZXhwb3J0IEFSPSIke0hPU1RfUFJFRklYfWdjYy1hciIKLQlleHBvcnQgUkFOTElCPSIke0hPU1RfUFJFRklYfWdjYy1yYW5saWIiCi0JZXhwb3J0IEtNT0Q9IiR7YmFzZV9iaW5kaXJ9L2ttb2QiCi0JaWYgWyAtZCAke1N9L3VuaXRzLnByZV9zZWQgXSA7IHRoZW4KLQkJY3AgLXIgJHtTfS91bml0cy5wcmVfc2VkICR7U30vdW5pdHMKLQllbHNlCi0JCWNwIC1yICR7U30vdW5pdHMgJHtTfS91bml0cy5wcmVfc2VkCi0JZmkKLQlzZWQgLWkgLWUgJ3M6LURURVNUX0RJUj1cXFwiLipcXFwiOi1EVEVTVF9ESVI9XFxcIiR7UFRFU1RfUEFUSH0vdGVzdHMvdGVzdFxcXCI6JyAke1N9L01ha2VmaWxlLmFtCi0Jc2VkIC1pIC1lICdzOi1EQ0FUQUxPR19ESVI9XFxcIi4qXFxcIjotRENBVEFMT0dfRElSPVxcXCIke1BURVNUX1BBVEh9L3Rlc3RzL2NhdGFsb2dcXFwiOicgJHtTfS9NYWtlZmlsZS5hbQotfQotCi1kb19pbnN0YWxsKCkgewotCWF1dG90b29sc19kb19pbnN0YWxsCi0JaW5zdGFsbCAtZCAke0R9LyR7YmFzZV9zYmluZGlyfQotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NlcmlhbC1nZXR0eS1nZW5lcmF0b3InLCAnZmFsc2UnLCAndHJ1ZScsIGQpfTsgdGhlbgotCQkjIFByb3ZpZGVkIGJ5IGEgc2VwYXJhdGUgcmVjaXBlCi0JCXJtICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NlcmlhbC1nZXR0eSogLWYKLQlmaQotCi0JIyBQcm92aWRlIHN1cHBvcnQgZm9yIGluaXRyYW1mcwotCVsgISAtZSAke0R9L2luaXQgXSAmJiBsbiAtcyAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQgJHtEfS9pbml0Ci0JWyAhIC1lICR7RH0vJHtiYXNlX3NiaW5kaXJ9L3VkZXZkIF0gJiYgbG4gLXMgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXVkZXZkICR7RH0vJHtiYXNlX3NiaW5kaXJ9L3VkZXZkCi0KLQkjIENyZWF0ZSBtYWNoaW5lLWlkCi0JIyAyMDoxMiA8IG1lemNhbGVybz4ga29lbjogeW91IGhhdmUgdGhyZWUgb3B0aW9uczogYSkgcnVuIHN5c3RlbWQtbWFjaGluZS1pZC1zZXR1cCBhdCBpbnN0YWxsIHRpbWUsIGIpIGhhdmUgLyByZWFkLW9ubHkgYW5kIGFuIGVtcHR5IGZpbGUgdGhlcmUgKGZvciBzdGF0ZWxlc3MpIGFuZCBjKSBib290IHdpdGggLyB3cml0YWJsZQotCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L21hY2hpbmUtaWQKLQotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vKi5ydWxlcyAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvCi0KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8wMC1jcmVhdGUtdm9sYXRpbGUuY29uZiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLwotCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3Zpbml0JywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KLQkJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLQkJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3lzdGVtZC11ZGV2ZAotCQlzZWQgLWkgcyVAVURFVkRAJSR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC11ZGV2ZCUgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c3RlbWQtdWRldmQKLQlmaQotCi0JY2hvd24gcm9vdDpzeXN0ZW1kLWpvdXJuYWwgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xvZy9qb3VybmFsCi0KLSAgICAgICAgIyBEZWxldGUgam91cm5hbCBSRUFETUUsIGFzIGxvZyBjYW4gYmUgc3ltbGlua2VkIGluc2lkZSB2b2xhdGlsZS4KLSAgICAgICAgcm0gLWYgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xvZy9SRUFETUUKLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vZ3JhcGhpY2FsLnRhcmdldC53YW50cwotCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbXVsdGktdXNlci50YXJnZXQud2FudHMKLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Bvd2Vyb2ZmLnRhcmdldC53YW50cwotCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcmVib290LnRhcmdldC53YW50cwotCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcmVzY3VlLnRhcmdldC53YW50cwotCi0JIyBDcmVhdGUgc3ltbGlua3MgZm9yIHN5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3V0bXAnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2dyYXBoaWNhbC50YXJnZXQud2FudHMvc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCi0JCWxuIC1zZiAuLi9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbXVsdGktdXNlci50YXJnZXQud2FudHMvc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCi0JCWxuIC1zZiAuLi9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcG93ZXJvZmYudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQotCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3JlYm9vdC50YXJnZXQud2FudHMvc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCi0JCWxuIC1zZiAuLi9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcmVzY3VlLnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKLQlmaQotCi0JIyBFbmFibGUgam91cm5hbCB0byBmb3J3YXJkIG1lc3NhZ2UgdG8gc3lzbG9nIGRhZW1vbgotCXNlZCAtaSAtZSAncy8uKkZvcndhcmRUb1N5c2xvZy4qL0ZvcndhcmRUb1N5c2xvZz15ZXMvJyAke0R9JHtzeXNjb25mZGlyfS9zeXN0ZW1kL2pvdXJuYWxkLmNvbmYKLQkjIHRoaXMgZmlsZSBpcyBuZWVkZWQgdG8gZXhpc3QgaWYgbmV0d29ya2QgaXMgZGlzYWJsZWQgYnV0IHRpbWVzeW5jZCBpcyBzdGlsbCBpbiB1c2Ugc2luY2UgdGltZXN5bmNkIGNoZWNrcyBpdAotCSMgZm9yIGV4aXN0ZW5jZSBlbHNlIGl0IGZhaWxzCi0JaWYgWyAtcyAke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mIF07IHRoZW4KLQkJJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbmV0d29ya2QnLCAnOicsICdzZWQgLWkgLWUgIlwkYWQgL3J1bi9zeXN0ZW1kL25ldGlmL2xpbmtzIDA3NTUgcm9vdCByb290IC0iICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLmNvbmYnLCBkKX0KLQlmaQotCWlmICEgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncmVzb2x2ZWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQkjIGlmIHJlc29sdmVkIGlzIGRpc2FibGVkLCBpdCB3b24ndCBoYW5kbGUgdGhlIGxpbmsgb2YgcmVzb2x2LmNvbmYsIHNvCi0JCSMgc2V0IGl0IHVwIG91cnNlbHZlcwotCQlsbiAtcyAuLi9ydW4vcmVzb2x2LmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vcmVzb2x2LmNvbmYKLQkJZWNobyAnTCEgJHtzeXNjb25mZGlyfS9yZXNvbHYuY29uZiAtIC0gLSAtIC4uL3J1bi9yZXNvbHYuY29uZicgPj4ke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvZXRjLmNvbmYKLQkJZWNobyAnZiAvcnVuL3Jlc29sdi5jb25mIDA2NDQgcm9vdCByb290JyA+PiR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLmNvbmYKLQlmaQotCWluc3RhbGwgLURtIDA3NTUgJHtTfS9zcmMvc3lzdGVtY3RsL3N5c3RlbWQtc3lzdi1pbnN0YWxsLlNLRUxFVE9OICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtZC1zeXN2LWluc3RhbGwKLX0KLQotZG9faW5zdGFsbF9wdGVzdCAoKSB7Ci0gICAgICAgIyBpbnN0YWxsIGRhdGEgZmlsZXMgbmVlZGVkIGZvciB0ZXN0cwotICAgICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvdGVzdAotICAgICAgIGNwIC1yZkwgJHtTfS90ZXN0LyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvdGVzdAotICAgICAgIHNlZCAtaSAncy8idHJlZSIvImxzIi8nICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3Rlc3QvdWRldi10ZXN0LnBsCi0KLSAgICAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL2NhdGFsb2cKLSAgICAgICBpbnN0YWxsICR7U30vY2F0YWxvZy8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL2NhdGFsb2cvCi0KLSAgICAgICBpbnN0YWxsIC1EICR7U30vYnVpbGQtYXV4L3Rlc3QtZHJpdmVyICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL2J1aWxkLWF1eC90ZXN0LWRyaXZlcgotCi0gICAgICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9ydWxlcwotICAgICAgIGluc3RhbGwgJHtCfS9ydWxlcy8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3J1bGVzLwotCi0gICAgICAgIyBUaGlzIGRpcmVjdG9yeSBuZWVkcyB0byBiZSB0aGVyZSBmb3IgdWRldi10ZXN0LnBsIHRvIHdvcmsuCi0gICAgICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3VkZXYvcnVsZXMuZAotCi0gICAgICAgIyBpbnN0YWxsIGFjdHVhbCB0ZXN0IGJpbmFyaWVzCi0gICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7Qn0vdGVzdC0qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLwotICAgICAgIGluc3RhbGwgLW0gMDc1NSAke0J9Ly5saWJzL3Rlc3QtKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8KLQotICAgICAgIGluc3RhbGwgJHtCfS9NYWtlZmlsZSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8KLX0KLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCl7Ci0gICAgc3lzdGVtZGxpYmRpciA9IGQuZ2V0VmFyKCJyb290bGliZGlyIiwgVHJ1ZSkKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBzeXN0ZW1kbGliZGlyLCAnXmxpYiguKilcLnNvXC4qJywgJ2xpYiVzJywgJ1N5c3RlbWQgJXMgbGlicmFyeScsIGV4dHJhX2RlcGVuZHM9JycsIGFsbG93X2xpbmtzPVRydWUpCi19Ci1QQUNLQUdFU19EWU5BTUlDICs9ICJebGliKHVkZXZ8c3lzdGVtZCkuKiIKLQotUEFDS0FHRVMgPSsgIlwKLSAgICAke1BOfS1ndWkgXAotICAgICR7UE59LXZjb25zb2xlLXNldHVwIFwKLSAgICAke1BOfS1pbml0cmFtZnMgXAotICAgICR7UE59LWFuYWx5emUgXAotICAgICR7UE59LWtlcm5lbC1pbnN0YWxsIFwKLSAgICAke1BOfS1ycG0tbWFjcm9zIFwKLSAgICAke1BOfS1iaW5mbXQgXAotICAgICR7UE59LXBhbSBcCi0gICAgJHtQTn0tenNoLWNvbXBsZXRpb24gXAotICAgICR7UE59LXhvcmcteGluaXRyYyBcCi0gICAgJHtQTn0tZXh0cmEtdXRpbHMgXAotIgotCi1TWVNURU1EX1BBQ0tBR0VTID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2JpbmZtdCcsICcke1BOfS1iaW5mbXQnLCAnJywgZCl9IgotU1lTVEVNRF9TRVJWSUNFXyR7UE59LWJpbmZtdCA9ICJzeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlIgotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbWljcm9odHRwZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtam91cm5hbC1nYXRld2F5OycsICcnLCBkKX0iCi1VU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd0aW1lc3luY2QnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLXRpbWVzeW5jOycsICcnLCBkKX0iCi1HUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItciBsb2NrOyAtciBzeXN0ZW1kLWpvdXJuYWwiCi0KLUZJTEVTXyR7UE59LWFuYWx5emUgPSAiJHtiaW5kaXJ9L3N5c3RlbWQtYW5hbHl6ZSIKLQotRklMRVNfJHtQTn0taW5pdHJhbWZzID0gIi9pbml0IgotUkRFUEVORFNfJHtQTn0taW5pdHJhbWZzID0gIiR7UE59IgotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAiZ2F3ayBtYWtlIHBlcmwgcHl0aG9uIGJhc2ggeHogXAotICAgICAgICAgICAgICAgICAgICAgICAgIHR6ZGF0YSB0emRhdGEtYW1lcmljYXMgdHpkYXRhLWFzaWEgXAotICAgICAgICAgICAgICAgICAgICAgICAgIHR6ZGF0YS1ldXJvcGUgdHpkYXRhLWFmcmljYSB0emRhdGEtYW50YXJjdGljYSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgdHpkYXRhLWFyY3RpYyB0emRhdGEtYXRsYW50aWMgdHpkYXRhLWF1c3RyYWxpYSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgdHpkYXRhLXBhY2lmaWMgdHpkYXRhLXBvc2l4IgotCi1GSUxFU18ke1BOfS1wdGVzdCArPSAiJHtsaWJkaXJ9L3VkZXYvcnVsZXMuZCIKLQotRklMRVNfJHtQTn0tZ3VpID0gIiR7YmluZGlyfS9zeXN0ZW1hZG0iCi0KLUZJTEVTXyR7UE59LXZjb25zb2xlLXNldHVwID0gIiR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC12Y29uc29sZS1zZXR1cCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtdmNvbnNvbGUtc2V0dXAuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c2luaXQudGFyZ2V0LndhbnRzL3N5c3RlbWQtdmNvbnNvbGUtc2V0dXAuc2VydmljZSIKLQotUkRFUEVORFNfJHtQTn0ta2VybmVsLWluc3RhbGwgKz0gImJhc2giCi1GSUxFU18ke1BOfS1rZXJuZWwtaW5zdGFsbCA9ICIke2JpbmRpcn0va2VybmVsLWluc3RhbGwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9rZXJuZWwvIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9rZXJuZWwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCi1GSUxFU18ke1BOfS1ycG0tbWFjcm9zID0gIiR7ZXhlY19wcmVmaXh9L2xpYi9ycG0gXAotICAgICAgICAgICAgICAgICAgICAgICAgICIKLQotRklMRVNfJHtQTn0teG9yZy14aW5pdHJjID0gIiR7c3lzY29uZmRpcn0vWDExL3hpbml0L3hpbml0cmMuZC8qIgotCi1GSUxFU18ke1BOfS16c2gtY29tcGxldGlvbiA9ICIke2RhdGFkaXJ9L3pzaC9zaXRlLWZ1bmN0aW9ucyIKLQotRklMRVNfJHtQTn0tYmluZm10ID0gIiR7c3lzY29uZmRpcn0vYmluZm10LmQvIFwKLSAgICAgICAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvYmluZm10LmQgXAotICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1iaW5mbXQgXAotICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcHJvYy1zeXMtZnMtYmluZm10X21pc2MuKiBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlIgotUlJFQ09NTUVORFNfJHtQTn0tYmluZm10ID0gImtlcm5lbC1tb2R1bGUtYmluZm10LW1pc2MiCi0KLVJSRUNPTU1FTkRTXyR7UE59LXZjb25zb2xlLXNldHVwID0gImtiZCBrYmQtY29uc29sZWZvbnRzIGtiZC1rZXltYXBzIgotCi1GSUxFU18ke1BOfS1leHRyYS11dGlscyA9ICJcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLWVzY2FwZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLWluaGliaXQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtZGV0ZWN0LXZpcnQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtcGF0aCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1ydW4gXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtY2F0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWRlbHRhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWNnbHMgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtY2d0b3AgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtc3RkaW8tYnJpZGdlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3N5c3RlbWQtYXNrLXBhc3N3b3JkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3N5c3RlbWQtdHR5LWFzay1wYXNzd29yZC1hZ2VudCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYXNrLXBhc3N3b3JkLWNvbnNvbGUucGF0aCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYXNrLXBhc3N3b3JkLWNvbnNvbGUuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYXNrLXBhc3N3b3JkLXdhbGwucGF0aCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYXNrLXBhc3N3b3JkLXdhbGwuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c2luaXQudGFyZ2V0LndhbnRzL3N5c3RlbWQtYXNrLXBhc3N3b3JkLWNvbnNvbGUucGF0aCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c2luaXQudGFyZ2V0LndhbnRzL3N5c3RlbWQtYXNrLXBhc3N3b3JkLXdhbGwucGF0aCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL211bHRpLXVzZXIudGFyZ2V0LndhbnRzL3N5c3RlbWQtYXNrLXBhc3N3b3JkLXdhbGwucGF0aCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtcmVzb2x2ZS1ob3N0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1hYy1wb3dlciBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtYWN0aXZhdGUgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtbnNwYXduIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c3RlbWQtbnNwYXduLmNvbmYgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLW5zcGF3bkAuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtYnVzLXByb3h5ZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYnVzLXByb3h5ZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1idXMtcHJveHlkLnNvY2tldCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtc29ja2V0LXByb3h5ZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtcmVwbHktcGFzc3dvcmQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXNsZWVwIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtLXNsZWVwIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1oaWJlcm5hdGUuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtaHlicmlkLXNsZWVwLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLXN1c3BlbmQuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NsZWVwLnRhcmdldCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtaW5pdGN0bCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtaW5pdGN0bC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1pbml0Y3RsLnNvY2tldCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NvY2tldHMudGFyZ2V0LndhbnRzL3N5c3RlbWQtaW5pdGN0bC5zb2NrZXQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW0tZ2VuZXJhdG9ycy9zeXN0ZW1kLWdwdC1hdXRvLWdlbmVyYXRvciBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtY2dyb3Vwcy1hZ2VudCBcCi0iCi0KLUNPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L21hY2hpbmUtaWQgXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC9jb3JlZHVtcC5jb25mIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvam91cm5hbGQuY29uZiBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kL2xvZ2luZC5jb25mIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvc3lzdGVtLmNvbmYgXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC91c2VyLmNvbmYiCi0KLUZJTEVTXyR7UE59ID0gIiAke2Jhc2VfYmluZGlyfS8qIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcyBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3BvbGtpdC0xIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7QlBOfSBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9mYWN0b3J5IFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2RidXMtMS8gXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vbWFjaGluZS1pZCBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9tb2R1bGVzLWxvYWQuZC8gXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vcGFtLmQvIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c2N0bC5kLyBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kLyBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLyBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS94ZGcvIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC9SRUFETUUgXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vcmVzb2x2LmNvbmYgXAotICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvKiBcCi0gICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9LyogXAotICAgICAgICAgICAgICAgICR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5Lyouc28gXAotICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJuc3NfKiBcCi0gICAgICAgICAgICAgICAgL2Nncm91cCBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQqIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vYnVzY3RsIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vY29yZWR1bXBjdGwgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9sb2NhbGVjdGwgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9ob3N0bmFtZWN0bCBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3RpbWVkYXRlY3RsIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vYm9vdGN0bCBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2tlcm5lbC1pbnN0YWxsIFwKLSAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC8qLmNvbmYgXAotICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9zeXN0ZW1kIFwKLSAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvbW9kdWxlcy1sb2FkLmQgXAotICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9zeXNjdGwuZCBcCi0gICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3N5c3VzZXJzLmQgXAotICAgICAgICAgICAgICAgICR7bG9jYWxzdGF0ZWRpcn0gXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzcwLXVhY2Nlc3MucnVsZXMgXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzcxLXNlYXQucnVsZXMgXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzczLXNlYXQtbGF0ZS5ydWxlcyBcCi0gICAgICAgICAgICAgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQvOTktc3lzdGVtZC5ydWxlcyBcCi0gICAgICAgICAgICAgICAiCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkvKi5sYSAke2RhdGFkaXJ9L2RidXMtMS9pbnRlcmZhY2VzLyAke3N5c2NvbmZkaXJ9L3JwbS9tYWNyb3Muc3lzdGVtZCIKLQotUkRFUEVORFNfJHtQTn0gKz0gImttb2QgZGJ1cyB1dGlsLWxpbnV4LW1vdW50IHVkZXYgKD0gJHtFWFRFTkRQS0dWfSkiCi1SREVQRU5EU18ke1BOfSArPSAidm9sYXRpbGUtYmluZHMgdXBkYXRlLXJjLmQiCi0KLVJSRUNPTU1FTkRTXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzZXJpYWwtZ2V0dHktZ2VuZXJhdG9yJywgJycsICdzeXN0ZW1kLXNlcmlhbGdldHR5JywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW1kLXZjb25zb2xlLXNldHVwIFwKLSAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW1kLWV4dHJhLXV0aWxzIFwKLSAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW1kLWNvbXBhdC11bml0cyB1ZGV2LWh3ZGIgXAotICAgICAgICAgICAgICAgICAgICAgIHV0aWwtbGludXgtYWdldHR5ICB1dGlsLWxpbnV4LWZzY2sgZTJmc3Byb2dzLWUyZnNjayBcCi0gICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1hdXRvZnM0IGtlcm5lbC1tb2R1bGUtdW5peCBrZXJuZWwtbW9kdWxlLWlwdjYgXAotICAgICAgICAgICAgICAgICAgICAgIG9zLXJlbGVhc2UgXAotIgotCi1JTlNBTkVfU0tJUF8ke1BOfS1kb2MgKz0gIiBsaWJkaXIiCi0KLVBBQ0tBR0VTID0rICJ1ZGV2IHVkZXYtaHdkYiIKLQotUlBST1ZJREVTX3VkZXYgPSAiaG90cGx1ZyIKLQotUkRFUEVORFNfdWRldi1od2RiICs9ICJ1ZGV2IgotCi1GSUxFU191ZGV2ICs9ICIke2Jhc2Vfc2JpbmRpcn0vdWRldmQgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXVkZXZkIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvYWNjZWxlcm9tZXRlciBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2F0YV9pZCBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2Nkcm9tX2lkIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvY29sbGVjdCBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2ZpbmRrZXlib2FyZHMgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9rZXlib2FyZC1mb3JjZS1yZWxlYXNlLnNoIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYva2V5bWFwIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvbXRkX3Byb2JlIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvc2NzaV9pZCBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3Y0bF9pZCBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2tleW1hcHMgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLyoucnVsZXMgXAotICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS91ZGV2IFwKLSAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c3RlbWQtdWRldmQgXAotICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qdWRldiogXAotICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qLndhbnRzLyp1ZGV2KiBcCi0gICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS91ZGV2YWRtIFwKLSAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vYmFzaC1jb21wbGV0aW9uL2NvbXBsZXRpb25zL3VkZXZhZG0gXAotICAgICAgICAgICAgICAiCi0KLUZJTEVTX3VkZXYtaHdkYiA9ICIke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2h3ZGIuZCIKLQotSU5JVFNDUklQVF9QQUNLQUdFUyA9ICJ1ZGV2IgotSU5JVFNDUklQVF9OQU1FX3VkZXYgPSAic3lzdGVtZC11ZGV2ZCIKLUlOSVRTQ1JJUFRfUEFSQU1TX3VkZXYgPSAic3RhcnQgMDMgUyAuIgotCi1weXRob24gX19hbm9ueW1vdXMoKSB7Ci0gICAgaWYgbm90IGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCBUcnVlLCBGYWxzZSwgZCk6Ci0gICAgICAgIGQuc2V0VmFyKCJJTkhJQklUX1VQREFURVJDRF9CQkNMQVNTIiwgIjEiKQotfQotCi0jIFRPRE86Ci0jIHUtYSBmb3IgcnVubGV2ZWwgYW5kIHRlbGluaXQKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAiaW5pdCBoYWx0IHJlYm9vdCBzaHV0ZG93biBwb3dlcm9mZiBydW5sZXZlbCIKLQotQUxURVJOQVRJVkVfVEFSR0VUW2luaXRdID0gIiR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtpbml0XSA9ICIke2Jhc2Vfc2JpbmRpcn0vaW5pdCIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZW2luaXRdID89ICIzMDAiCi0KLUFMVEVSTkFUSVZFX1RBUkdFVFtoYWx0XSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbaGFsdF0gPSAiJHtiYXNlX3NiaW5kaXJ9L2hhbHQiCi1BTFRFUk5BVElWRV9QUklPUklUWVtoYWx0XSA/PSAiMzAwIgotCi1BTFRFUk5BVElWRV9UQVJHRVRbcmVib290XSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcmVib290XSA9ICIke2Jhc2Vfc2JpbmRpcn0vcmVib290IgotQUxURVJOQVRJVkVfUFJJT1JJVFlbcmVib290XSA/PSAiMzAwIgotCi1BTFRFUk5BVElWRV9UQVJHRVRbc2h1dGRvd25dID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtzaHV0ZG93bl0gPSAiJHtiYXNlX3NiaW5kaXJ9L3NodXRkb3duIgotQUxURVJOQVRJVkVfUFJJT1JJVFlbc2h1dGRvd25dID89ICIzMDAiCi0KLUFMVEVSTkFUSVZFX1RBUkdFVFtwb3dlcm9mZl0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3Bvd2Vyb2ZmXSA9ICIke2Jhc2Vfc2JpbmRpcn0vcG93ZXJvZmYiCi1BTFRFUk5BVElWRV9QUklPUklUWVtwb3dlcm9mZl0gPz0gIjMwMCIKLQotQUxURVJOQVRJVkVfVEFSR0VUW3J1bmxldmVsXSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcnVubGV2ZWxdID0gIiR7YmFzZV9zYmluZGlyfS9ydW5sZXZlbCIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZW3J1bmxldmVsXSA/PSAiMzAwIgotCi1wa2dfcG9zdGluc3RfJHtQTn0gKCkgewotCXNlZCAtZSAnL15ob3N0czovcy9ccypcPG15aG9zdG5hbWVcPi8vJyBcCi0JCS1lICdzL1woXmhvc3RzOi4qXClcKFw8ZmlsZXNcPlwpXCguKlwpXChcPGRuc1w+XClcKC4qXCkvXDFcMiBteWhvc3RuYW1lIFwzXDRcNS8nIFwKLQkJLWkgJEQke3N5c2NvbmZkaXJ9L25zc3dpdGNoLmNvbmYKLX0KLQotcGtnX3ByZXJtXyR7UE59ICgpIHsKLQlzZWQgLWUgJy9eaG9zdHM6L3MvXHMqXDxteWhvc3RuYW1lXD4vLycgXAotCQktZSAnL15ob3N0czovcy9ccypteWhvc3RuYW1lLy8nIFwKLQkJLWkgJEQke3N5c2NvbmZkaXJ9L25zc3dpdGNoLmNvbmYKLX0KLQotcGtnX3Bvc3RpbnN0X3VkZXYtaHdkYiAoKSB7Ci0JaWYgdGVzdCAtbiAiJEQiOyB0aGVuCi0JCSR7QHFlbXVfcnVuX2JpbmFyeShkLCAnJEQnLCAnJHtiYXNlX2JpbmRpcn0vdWRldmFkbScpfSBod2RiIC0tdXBkYXRlIFwKLQkJCS0tcm9vdCAkRAotCQljaG93biByb290OnJvb3QgJEQke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5iaW4KLQllbHNlCi0JCXVkZXZhZG0gaHdkYiAtLXVwZGF0ZQotCWZpCi19Ci0KLXBrZ19wcmVybV91ZGV2LWh3ZGIgKCkgewotCXJtIC1mICREJHtzeXNjb25mZGlyfS91ZGV2L2h3ZGIuYmluCi19Ci0KLSMgQXMgdGhpcyByZWNpcGUgYnVpbGRzIHVkZXYsIHJlc3BlY3Qgc3lzdGVtZCBiZWluZyBpbiBESVNUUk9fRkVBVFVSRVMgc28KLSMgdGhhdCB3ZSBkb24ndCBidWlsZCBib3RoIHVkZXYgYW5kIHN5c3RlbWQgaW4gd29ybGQgYnVpbGRzLgotcHl0aG9uICgpIHsKLSAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMgKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIFRydWUsIEZhbHNlLCBkKToKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIidzeXN0ZW1kJyBub3QgaW4gRElTVFJPX0ZFQVRVUkVTIikKLQotICAgIGltcG9ydCByZQotICAgIGlmIHJlLm1hdGNoKCcuKm11c2wqJywgZC5nZXRWYXIoJ1RBUkdFVF9PUycsIFRydWUpKSAhPSBOb25lOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiTm90IF95ZXRfIHN1cHBvcnRlZCBvbiBtdXNsIGJhc2VkIHRhcmdldHMiKQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZF8yMzAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kXzIzMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTQ5ZmU4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZF8yMzAuYmIKQEAgLTAsMCArMSw1OTggQEAKK3JlcXVpcmUgc3lzdGVtZC5pbmMKKworUFJPVklERVMgPSAidWRldiIKKworUEUgPSAiMSIKKworREVQRU5EUyA9ICJrbW9kIGRvY2Jvb2stc2dtbC1kdGQtNC4xLW5hdGl2ZSBpbnRsdG9vbC1uYXRpdmUgZ3BlcmYtbmF0aXZlIGFjbCByZWFkbGluZSBsaWJjYXAgbGliY2dyb3VwIHFlbXUtbmF0aXZlIHV0aWwtbGludXgiCisKK1NFQ1RJT04gPSAiYmFzZS9zaGVsbCIKKworaW5oZXJpdCB1c2VyYWRkIHBrZ2NvbmZpZyBhdXRvdG9vbHMgcGVybG5hdGl2ZSB1cGRhdGUtcmMuZCB1cGRhdGUtYWx0ZXJuYXRpdmVzIHFlbXUgc3lzdGVtZCBwdGVzdCBnZXR0ZXh0IGJhc2gtY29tcGxldGlvbgorCitTUkNfVVJJICs9ICIgXAorICAgICAgICAgICBmaWxlOi8vdG91Y2hzY3JlZW4ucnVsZXMgXAorICAgICAgICAgICBmaWxlOi8vMDAtY3JlYXRlLXZvbGF0aWxlLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vaW5pdCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1kZWZpbmUtZXhwMTAtaWYtbWlzc2luZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LVVzZS1nZXRlbnYtd2hlbi1zZWN1cmUtdmVyc2lvbnMtYXJlLW5vdC1hdmFpbGFibGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1iaW5mbXQtRG9uLXQtaW5zdGFsbC1kZXBlbmRlbmN5LWxpbmtzLWF0LWluc3RhbGwtdGltLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtY29uZmlndXJlLUNoZWNrLWZvci1hZGRpdGlvbmFsLWZlYXR1cmVzLXRoYXQtdWNsaWJjLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LXVzZS1sbnItd3JhcHBlci1pbnN0ZWFkLW9mLWxvb2tpbmctZm9yLXJlbGF0aXZlLW9wdGkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOC1uc3Bhd24tVXNlLWV4ZWN2cGUtb25seS13aGVuLWxpYmMtc3VwcG9ydHMtaXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOS11dGlsLWJ5cGFzcy11bmltcGxlbWVudGVkLV9TQ19QSFlTX1BBR0VTLXN5c3RlbS1jb25mLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTAtaW1wbG1lbnQtc3lzdGVtZC1zeXN2LWluc3RhbGwtZm9yLU9FLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTEtbnNzLW15bWFjaGluZXMtQnVpbGQtY29uZGl0aW9uYWxseS13aGVuLUhBVkVfTVlIT1NUTi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEyLXJ1bGVzLXdoaXRlbGlzdC1oZC1kZXZpY2VzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTMtc3lzdi1nZW5lcmF0b3ItYWRkLXN1cHBvcnQtZm9yLWV4ZWN1dGluZy1zY3JpcHRzLXVuZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE0LU1ha2Utcm9vdC1zLWhvbWUtZGlyZWN0b3J5LWNvbmZpZ3VyYWJsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE1LXN5c3RlbWQtdXNlci1hdm9pZC11c2luZy1zeXN0ZW0tYXV0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE2LVJldmVydC1ydWxlcy1yZW1vdmUtZmlybXdhcmUtbG9hZGluZy1ydWxlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE3LVJldmVydC11ZGV2LXJlbW92ZS11c2Vyc3BhY2UtZmlybXdhcmUtbG9hZGluZy1zdXBwb3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxOC1tYWtlLXRlc3QtZGlyLWNvbmZpZ3VyYWJsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE5LXJlbW92ZS1kdXBsaWNhdGUtaW5jbHVkZS11Y2hhci5oLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjAtY2hlY2stZm9yLXVjaGFyLmgtaW4tY29uZmlndXJlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjEtaW5jbHVkZS1taXNzaW5nLmgtZm9yLWdldHRpbmctc2VjdXJlX2dldGVudi1kZWZpbml0aS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIyLXNvY2tldC11dGlsLWRvbi10LWZhaWwtaWYtbGliYy1kb2Vzbi10LXN1cHBvcnQtSUROLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3VkZXYtcmUtZW5hYmxlLW1vdW50LXByb3BhZ2F0aW9uLWZvci11ZGV2ZC5wYXRjaCBcCisiCitTUkNfVVJJX2FwcGVuZF9saWJjLXVjbGliYyA9ICJcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLXVuaXRzLVByZWZlci1nZXR0eS10by1hZ2V0dHktaW4tY29uc29sZS1zZXR1cC1zeXN0ZW0ucGF0Y2ggXAorIgorU1JDX1VSSV9hcHBlbmRfcWVtdWFsbCA9ICIgZmlsZTovLzAwMDEtY29yZS1kZXZpY2UuYy1DaGFuZ2UtdGhlLWRlZmF1bHQtZGV2aWNlLXRpbWVvdXQtdG8tMi5wYXRjaCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInh6IFwKKyAgICAgICAgICAgICAgICAgICBsZGNvbmZpZyBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneGtiY29tbW9uJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzZWxpbnV4JywgJ3NlbGludXgnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dpZmknLCAncmZraWxsJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ01BQ0hJTkVfRkVBVFVSRVMnLCAnZWZpJywgJ2VmaScsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgIGJpbmZtdCBcCisgICAgICAgICAgICAgICAgICAgcmFuZG9tc2VlZCBcCisgICAgICAgICAgICAgICAgICAgbWFjaGluZWQgXAorICAgICAgICAgICAgICAgICAgIGJhY2tsaWdodCBcCisgICAgICAgICAgICAgICAgICAgcXVvdGFjaGVjayBcCisgICAgICAgICAgICAgICAgICAgaG9zdG5hbWVkIFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnVENMSUJDJywgJ2dsaWJjJywgJ215aG9zdG5hbWUgc3lzdXNlcnMnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICBoaWJlcm5hdGUgXAorICAgICAgICAgICAgICAgICAgIHRpbWVkYXRlZCBcCisgICAgICAgICAgICAgICAgICAgdGltZXN5bmNkIFwKKyAgICAgICAgICAgICAgICAgICBsb2NhbGVkIFwKKyAgICAgICAgICAgICAgICAgICBrZGJ1cyBcCisgICAgICAgICAgICAgICAgICAgaW1hIFwKKyAgICAgICAgICAgICAgICAgICBzbWFjayBcCisgICAgICAgICAgICAgICAgICAgbG9naW5kIFwKKyAgICAgICAgICAgICAgICAgICBmaXJzdGJvb3QgXAorICAgICAgICAgICAgICAgICAgIHV0bXAgXAorICAgICAgICAgICAgICAgICAgIHBvbGtpdCBcCisiCitQQUNLQUdFQ09ORklHX3JlbW92ZV9saWJjLW11c2wgPSAic2VsaW51eCIKK1BBQ0tBR0VDT05GSUdfcmVtb3ZlX2xpYmMtbXVzbCA9ICJzbWFjayIKKworIyBVc2UgdGhlIHVwc3RyZWFtIHN5c3RlbWQgc2VyaWFsLWdldHR5QC5zZXJ2aWNlIGFuZCByZWx5IG9uCisjIHN5c3RlbWQtZ2V0dHktZ2VuZXJhdG9yIGluc3RlYWQgb2YgdXNpbmcgdGhlIE9FLWNvcmUgc3BlY2lmaWMKKyMgc3lzdGVtZC1zZXJpYWxnZXR0eS5iYiAtIG5vdCBlbmFibGVkIGJ5IGRlZmF1bHQuCitQQUNLQUdFQ09ORklHW3NlcmlhbC1nZXR0eS1nZW5lcmF0b3JdID0gIiIKKworUEFDS0FHRUNPTkZJR1tqb3VybmFsLXVwbG9hZF0gPSAiLS1lbmFibGUtbGliY3VybCwtLWRpc2FibGUtbGliY3VybCxjdXJsIgorIyBTaWduIHRoZSBqb3VybmFsIGZvciBhbnRpLXRhbXBlcmluZworUEFDS0FHRUNPTkZJR1tnY3J5cHRdID0gIi0tZW5hYmxlLWdjcnlwdCwtLWRpc2FibGUtZ2NyeXB0LGxpYmdjcnlwdCIKK1BBQ0tBR0VDT05GSUdbY3J5cHRzZXR1cF0gPSAiLS1lbmFibGUtbGliY3J5cHRzZXR1cCwtLWRpc2FibGUtbGliY3J5cHRzZXR1cCxjcnlwdHNldHVwIgorUEFDS0FHRUNPTkZJR1ttaWNyb2h0dHBkXSA9ICItLWVuYWJsZS1taWNyb2h0dHBkLC0tZGlzYWJsZS1taWNyb2h0dHBkLGxpYm1pY3JvaHR0cGQiCitQQUNLQUdFQ09ORklHW2VsZnV0aWxzXSA9ICItLWVuYWJsZS1lbGZ1dGlscywtLWRpc2FibGUtZWxmdXRpbHMsZWxmdXRpbHMiCitQQUNLQUdFQ09ORklHW3Jlc29sdmVkXSA9ICItLWVuYWJsZS1yZXNvbHZlZCwtLWRpc2FibGUtcmVzb2x2ZWQiCitQQUNLQUdFQ09ORklHW25ldHdvcmtkXSA9ICItLWVuYWJsZS1uZXR3b3JrZCwtLWRpc2FibGUtbmV0d29ya2QiCitQQUNLQUdFQ09ORklHW21hY2hpbmVkXSA9ICItLWVuYWJsZS1tYWNoaW5lZCwtLWRpc2FibGUtbWFjaGluZWQiCitQQUNLQUdFQ09ORklHW2JhY2tsaWdodF0gPSAiLS1lbmFibGUtYmFja2xpZ2h0LC0tZGlzYWJsZS1iYWNrbGlnaHQiCitQQUNLQUdFQ09ORklHW3F1b3RhY2hlY2tdID0gIi0tZW5hYmxlLXF1b3RhY2hlY2ssLS1kaXNhYmxlLXF1b3RhY2hlY2siCitQQUNLQUdFQ09ORklHW2hvc3RuYW1lZF0gPSAiLS1lbmFibGUtaG9zdG5hbWVkLC0tZGlzYWJsZS1ob3N0bmFtZWQiCitQQUNLQUdFQ09ORklHW215aG9zdG5hbWVdID0gIi0tZW5hYmxlLW15aG9zdG5hbWUsLS1kaXNhYmxlLW15aG9zdG5hbWUiCitQQUNLQUdFQ09ORklHW3Jma2lsbF0gPSAiLS1lbmFibGUtcmZraWxsLC0tZGlzYWJsZS1yZmtpbGwiCitQQUNLQUdFQ09ORklHW2hpYmVybmF0ZV0gPSAiLS1lbmFibGUtaGliZXJuYXRlLC0tZGlzYWJsZS1oaWJlcm5hdGUiCitQQUNLQUdFQ09ORklHW3RpbWVkYXRlZF0gPSAiLS1lbmFibGUtdGltZWRhdGVkLC0tZGlzYWJsZS10aW1lZGF0ZWQiCitQQUNLQUdFQ09ORklHW3RpbWVzeW5jZF0gPSAiLS1lbmFibGUtdGltZXN5bmNkLC0tZGlzYWJsZS10aW1lc3luY2QiCitQQUNLQUdFQ09ORklHW2xvY2FsZWRdID0gIi0tZW5hYmxlLWxvY2FsZWQsLS1kaXNhYmxlLWxvY2FsZWQiCitQQUNLQUdFQ09ORklHW2VmaV0gPSAiLS1lbmFibGUtZWZpLC0tZGlzYWJsZS1lZmkiCitQQUNLQUdFQ09ORklHW2tkYnVzXSA9ICItLWVuYWJsZS1rZGJ1cywtLWRpc2FibGUta2RidXMiCitQQUNLQUdFQ09ORklHW2ltYV0gPSAiLS1lbmFibGUtaW1hLC0tZGlzYWJsZS1pbWEiCitQQUNLQUdFQ09ORklHW3NtYWNrXSA9ICItLWVuYWJsZS1zbWFjaywtLWRpc2FibGUtc21hY2siCisjIGxpYnNlY2NvbXAgaXMgZm91bmQgaW4gbWV0YS1zZWN1cml0eQorUEFDS0FHRUNPTkZJR1tzZWNjb21wXSA9ICItLWVuYWJsZS1zZWNjb21wLC0tZGlzYWJsZS1zZWNjb21wLGxpYnNlY2NvbXAiCitQQUNLQUdFQ09ORklHW2xvZ2luZF0gPSAiLS1lbmFibGUtbG9naW5kLC0tZGlzYWJsZS1sb2dpbmQiCitQQUNLQUdFQ09ORklHW3N5c3VzZXJzXSA9ICItLWVuYWJsZS1zeXN1c2VycywtLWRpc2FibGUtc3lzdXNlcnMiCitQQUNLQUdFQ09ORklHW2ZpcnN0Ym9vdF0gPSAiLS1lbmFibGUtZmlyc3Rib290LC0tZGlzYWJsZS1maXJzdGJvb3QiCitQQUNLQUdFQ09ORklHW3JhbmRvbXNlZWRdID0gIi0tZW5hYmxlLXJhbmRvbXNlZWQsLS1kaXNhYmxlLXJhbmRvbXNlZWQiCitQQUNLQUdFQ09ORklHW2JpbmZtdF0gPSAiLS1lbmFibGUtYmluZm10LC0tZGlzYWJsZS1iaW5mbXQiCitQQUNLQUdFQ09ORklHW3V0bXBdID0gIi0tZW5hYmxlLXV0bXAsLS1kaXNhYmxlLXV0bXAiCitQQUNLQUdFQ09ORklHW3BvbGtpdF0gPSAiLS1lbmFibGUtcG9sa2l0LC0tZGlzYWJsZS1wb2xraXQiCisjIGltcG9ydGQgcmVxdWlyZXMgY3VybC94ei96bGliL2J6aXAyL2djcnlwdAorUEFDS0FHRUNPTkZJR1tpbXBvcnRkXSA9ICItLWVuYWJsZS1pbXBvcnRkLC0tZGlzYWJsZS1pbXBvcnRkIgorUEFDS0FHRUNPTkZJR1tsaWJpZG5dID0gIi0tZW5hYmxlLWxpYmlkbiwtLWRpc2FibGUtbGliaWRuLGxpYmlkbiIKK1BBQ0tBR0VDT05GSUdbYXVkaXRdID0gIi0tZW5hYmxlLWF1ZGl0LC0tZGlzYWJsZS1hdWRpdCxhdWRpdCIKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbnBhZ2VzLC0tZGlzYWJsZS1tYW5wYWdlcyxsaWJ4c2x0LW5hdGl2ZSB4bWx0by1uYXRpdmUgZG9jYm9vay14bWwtZHRkNC1uYXRpdmUgZG9jYm9vay14c2wtc3R5bGVzaGVldHMtbmF0aXZlIgorUEFDS0FHRUNPTkZJR1twYW1dID0gIi0tZW5hYmxlLXBhbSwtLWRpc2FibGUtcGFtLGxpYnBhbSIKKyMgVmVyaWZ5IGtleW1hcHMgb24gbG9jYWxlIGNoYW5nZQorUEFDS0FHRUNPTkZJR1t4a2Jjb21tb25dID0gIi0tZW5hYmxlLXhrYmNvbW1vbiwtLWRpc2FibGUteGtiY29tbW9uLGxpYnhrYmNvbW1vbiIKKyMgVXBkYXRlIE5BVCBmaXJld2FsbCBydWxlcworUEFDS0FHRUNPTkZJR1tpcHRjXSA9ICItLWVuYWJsZS1saWJpcHRjLC0tZGlzYWJsZS1saWJpcHRjLGlwdGFibGVzIgorUEFDS0FHRUNPTkZJR1tsZGNvbmZpZ10gPSAiLS1lbmFibGUtbGRjb25maWcsLS1kaXNhYmxlLWxkY29uZmlnLCwiCitQQUNLQUdFQ09ORklHW3NlbGludXhdID0gIi0tZW5hYmxlLXNlbGludXgsLS1kaXNhYmxlLXNlbGludXgsbGlic2VsaW51eCIKK1BBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gImFjX2N2X2hlYWRlcl92YWxncmluZF9tZW1jaGVja19oPXllcyBhY19jdl9oZWFkZXJfdmFsZ3JpbmRfdmFsZ3JpbmRfaD15ZXMgLGFjX2N2X2hlYWRlcl92YWxncmluZF9tZW1jaGVja19oPW5vIGFjX2N2X2hlYWRlcl92YWxncmluZF92YWxncmluZF9oPW5vICx2YWxncmluZCIKK1BBQ0tBR0VDT05GSUdbcXJlbmNvZGVdID0gIi0tZW5hYmxlLXFyZW5jb2RlLC0tZGlzYWJsZS1xcmVuY29kZSxxcmVuY29kZSIKK1BBQ0tBR0VDT05GSUdbZGJ1c10gPSAiLS1lbmFibGUtZGJ1cywtLWRpc2FibGUtZGJ1cyxkYnVzIgorUEFDS0FHRUNPTkZJR1tjb3JlZHVtcF0gPSAiLS1lbmFibGUtY29yZWR1bXAsLS1kaXNhYmxlLWNvcmVkdW1wIgorUEFDS0FHRUNPTkZJR1tiemlwMl0gPSAiLS1lbmFibGUtYnppcDIsLS1kaXNhYmxlLWJ6aXAyLGJ6aXAyIgorUEFDS0FHRUNPTkZJR1tsejRdID0gIi0tZW5hYmxlLWx6NCwtLWRpc2FibGUtbHo0LGx6NCIKK1BBQ0tBR0VDT05GSUdbeHpdID0gIi0tZW5hYmxlLXh6LC0tZGlzYWJsZS14eix4eiIKK1BBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS1lbmFibGUtemxpYiwtLWRpc2FibGUtemxpYix6bGliIgorCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9LSUxMPSR7YmFzZV9iaW5kaXJ9L2tpbGwiCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9LTU9EPSR7YmFzZV9iaW5kaXJ9L2ttb2QiCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9RVU9UQUNIRUNLPSR7c2JpbmRpcn0vcXVvdGFjaGVjayIKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX1FVT1RBT049JHtzYmluZGlyfS9xdW90YW9uIgorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfU1VMT0dJTj0ke2Jhc2Vfc2JpbmRpcn0vc3Vsb2dpbiIKKworIyBIZWxwZXIgdmFyaWFibGVzIHRvIGNsYXJpZnkgbG9jYXRpb25zLiAgVGhpcyBtaXJyb3JzIHRoZSBsb2dpYyBpbiBzeXN0ZW1kJ3MKKyMgYnVpbGQgc3lzdGVtLgorcm9vdHByZWZpeCA/PSAiJHtiYXNlX3ByZWZpeH0iCityb290bGliZGlyID89ICIke2Jhc2VfbGliZGlyfSIKK3Jvb3RsaWJleGVjZGlyID0gIiR7cm9vdHByZWZpeH0vbGliIgorCitDQUNIRURfQ09ORklHVVJFVkFSU19jbGFzcy10YXJnZXQgPSAiXAorICAgICAgICAgICAgICAgICAgICAgICAgIGFjX2N2X3BhdGhfTU9VTlRfUEFUSD0ke2Jhc2VfYmluZGlyfS9tb3VudCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgYWNfY3ZfcGF0aF9VTU9VTlRfUEFUSD0ke2Jhc2VfYmluZGlyfS91bW91bnQgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGFjX2N2X3BhdGhfS01PRD0ke2Jhc2VfYmluZGlyfS9rbW9kIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBhY19jdl9wYXRoX0tJTEw9JHtiYXNlX2JpbmRpcn0va2lsbCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgYWNfY3ZfcGF0aF9TVUxPR0lOPSR7YmFzZV9zYmluZGlyfS9zdWxvZ2luIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBhY19jdl9wYXRoX0tFWEVDPSR7c2JpbmRpcn0va2V4ZWMgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGFjX2N2X3BhdGhfUVVPVEFDSEVDSz0ke3NiaW5kaXJ9L3F1b3RhY2hlY2sgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGFjX2N2X3BhdGhfUVVPVEFPTj0ke3NiaW5kaXJ9L3F1b3Rhb24gXAorCQkJICIKKworRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtcm9vdHByZWZpeD0ke3Jvb3RwcmVmaXh9IFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLXJvb3RsaWJkaXI9JHtyb290bGliZGlyfSBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1yb290aG9tZWRpcj0ke1JPT1RfSE9NRX0gXAorICAgICAgICAgICAgICAgICAtLWVuYWJsZS1zcGxpdC11c3IgXAorICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtcHl0aG9uIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLXN5c3ZyY25kLXBhdGg9JHtzeXNjb25mZGlyfSBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1maXJtd2FyZS1wYXRoPS9saWIvZmlybXdhcmUgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtdGVzdGRpcj0ke1BURVNUX1BBVEh9IFwKKyAgICAgICAgICAgICAgICIKKyMgcGVyIHRoZSBzeXN0ZW1kIFJFQURNRSwgZGVmaW5lIFZBTEdSSU5EPTEgdG8gcnVuIHVuZGVyIHZhbGdyaW5kCitDRkxBR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3ZhbGdyaW5kJywgJyAtRFZBTEdSSU5EPTEnLCAnJywgZCl9IgorCisjIGRpc2FibGUgcHJvYmxlbWF0aWMgR0NDIDUuMiBvcHRpbWl6YXRpb25zIFtZT0NUTyAjODI5MV0KK0ZVTExfT1BUSU1JWkFUSU9OX2FwcGVuZF9hcm0gPSAiIC1mbm8tc2NoZWR1bGUtaW5zbnMgLWZuby1zY2hlZHVsZS1pbnNuczIiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworCWV4cG9ydCBOTT0iJHtIT1NUX1BSRUZJWH1nY2Mtbm0iCisJZXhwb3J0IEFSPSIke0hPU1RfUFJFRklYfWdjYy1hciIKKwlleHBvcnQgUkFOTElCPSIke0hPU1RfUFJFRklYfWdjYy1yYW5saWIiCisJZXhwb3J0IEtNT0Q9IiR7YmFzZV9iaW5kaXJ9L2ttb2QiCisJaWYgWyAtZCAke1N9L3VuaXRzLnByZV9zZWQgXSA7IHRoZW4KKwkJY3AgLXIgJHtTfS91bml0cy5wcmVfc2VkICR7U30vdW5pdHMKKwllbHNlCisJCWNwIC1yICR7U30vdW5pdHMgJHtTfS91bml0cy5wcmVfc2VkCisJZmkKKwlzZWQgLWkgLWUgJ3M6LURURVNUX0RJUj1cXFwiLipcXFwiOi1EVEVTVF9ESVI9XFxcIiR7UFRFU1RfUEFUSH0vdGVzdHMvdGVzdFxcXCI6JyAke1N9L01ha2VmaWxlLmFtCisJc2VkIC1pIC1lICdzOi1EQ0FUQUxPR19ESVI9XFxcIi4qXFxcIjotRENBVEFMT0dfRElSPVxcXCIke1BURVNUX1BBVEh9L3Rlc3RzL2NhdGFsb2dcXFwiOicgJHtTfS9NYWtlZmlsZS5hbQorfQorCitkb19pbnN0YWxsKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsCisJaW5zdGFsbCAtZCAke0R9LyR7YmFzZV9zYmluZGlyfQorCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NlcmlhbC1nZXR0eS1nZW5lcmF0b3InLCAnZmFsc2UnLCAndHJ1ZScsIGQpfTsgdGhlbgorCQkjIFByb3ZpZGVkIGJ5IGEgc2VwYXJhdGUgcmVjaXBlCisJCXJtICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NlcmlhbC1nZXR0eSogLWYKKwlmaQorCisJIyBQcm92aWRlIHN1cHBvcnQgZm9yIGluaXRyYW1mcworCVsgISAtZSAke0R9L2luaXQgXSAmJiBsbiAtcyAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQgJHtEfS9pbml0CisJWyAhIC1lICR7RH0vJHtiYXNlX3NiaW5kaXJ9L3VkZXZkIF0gJiYgbG4gLXMgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXVkZXZkICR7RH0vJHtiYXNlX3NiaW5kaXJ9L3VkZXZkCisKKwkjIENyZWF0ZSBtYWNoaW5lLWlkCisJIyAyMDoxMiA8IG1lemNhbGVybz4ga29lbjogeW91IGhhdmUgdGhyZWUgb3B0aW9uczogYSkgcnVuIHN5c3RlbWQtbWFjaGluZS1pZC1zZXR1cCBhdCBpbnN0YWxsIHRpbWUsIGIpIGhhdmUgLyByZWFkLW9ubHkgYW5kIGFuIGVtcHR5IGZpbGUgdGhlcmUgKGZvciBzdGF0ZWxlc3MpIGFuZCBjKSBib290IHdpdGggLyB3cml0YWJsZQorCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L21hY2hpbmUtaWQKKworCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vKi5ydWxlcyAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvCisJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZworCWluc3RhbGwgLW0gMDY0NCAke0J9L3NyYy91ZGV2L3VkZXYucGMgJHtEfSR7bGliZGlyfS9wa2djb25maWcvCisKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8wMC1jcmVhdGUtdm9sYXRpbGUuY29uZiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLworCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3Zpbml0JywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KKwkJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKwkJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3lzdGVtZC11ZGV2ZAorCQlzZWQgLWkgcyVAVURFVkRAJSR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC11ZGV2ZCUgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c3RlbWQtdWRldmQKKwlmaQorCisJY2hvd24gcm9vdDpzeXN0ZW1kLWpvdXJuYWwgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xvZy9qb3VybmFsCisKKwkjIERlbGV0ZSBqb3VybmFsIFJFQURNRSwgYXMgbG9nIGNhbiBiZSBzeW1saW5rZWQgaW5zaWRlIHZvbGF0aWxlLgorCXJtIC1mICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9sb2cvUkVBRE1FCisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2dyYXBoaWNhbC50YXJnZXQud2FudHMKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL211bHRpLXVzZXIudGFyZ2V0LndhbnRzCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9wb3dlcm9mZi50YXJnZXQud2FudHMKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3JlYm9vdC50YXJnZXQud2FudHMKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Jlc2N1ZS50YXJnZXQud2FudHMKKworCSMgQ3JlYXRlIHN5bWxpbmtzIGZvciBzeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd1dG1wJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9ncmFwaGljYWwudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQorCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL211bHRpLXVzZXIudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQorCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Bvd2Vyb2ZmLnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKKwkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZWJvb3QudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQorCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Jlc2N1ZS50YXJnZXQud2FudHMvc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCisJZmkKKworCSMgRW5hYmxlIGpvdXJuYWwgdG8gZm9yd2FyZCBtZXNzYWdlIHRvIHN5c2xvZyBkYWVtb24KKwlzZWQgLWkgLWUgJ3MvLipGb3J3YXJkVG9TeXNsb2cuKi9Gb3J3YXJkVG9TeXNsb2c9eWVzLycgJHtEfSR7c3lzY29uZmRpcn0vc3lzdGVtZC9qb3VybmFsZC5jb25mCisJIyBTZXQgdGhlIG1heGltaXVtIHNpemUgb2YgcnVudGltZSBqb3VybmFsIHRvIDY0TSBhcyBkZWZhdWx0CisJc2VkIC1pIC1lICdzLy4qUnVudGltZU1heFVzZS4qL1J1bnRpbWVNYXhVc2U9NjRNLycgJHtEfSR7c3lzY29uZmRpcn0vc3lzdGVtZC9qb3VybmFsZC5jb25mCisKKwkjIHRoaXMgZmlsZSBpcyBuZWVkZWQgdG8gZXhpc3QgaWYgbmV0d29ya2QgaXMgZGlzYWJsZWQgYnV0IHRpbWVzeW5jZCBpcyBzdGlsbCBpbiB1c2Ugc2luY2UgdGltZXN5bmNkIGNoZWNrcyBpdAorCSMgZm9yIGV4aXN0ZW5jZSBlbHNlIGl0IGZhaWxzCisJaWYgWyAtcyAke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mIF07IHRoZW4KKwkJJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbmV0d29ya2QnLCAnOicsICdzZWQgLWkgLWUgIlwkYWQgL3J1bi9zeXN0ZW1kL25ldGlmL2xpbmtzIDA3NTUgcm9vdCByb290IC0iICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLmNvbmYnLCBkKX0KKwlmaQorCWlmICEgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncmVzb2x2ZWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQkjIGlmIHJlc29sdmVkIGlzIGRpc2FibGVkLCBpdCB3b24ndCBoYW5kbGUgdGhlIGxpbmsgb2YgcmVzb2x2LmNvbmYsIHNvCisJCSMgc2V0IGl0IHVwIG91cnNlbHZlcworCQlsbiAtcyAuLi9ydW4vcmVzb2x2LmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vcmVzb2x2LmNvbmYKKwkJZWNobyAnTCEgJHtzeXNjb25mZGlyfS9yZXNvbHYuY29uZiAtIC0gLSAtIC4uL3J1bi9yZXNvbHYuY29uZicgPj4ke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvZXRjLmNvbmYKKwkJZWNobyAnZiAvcnVuL3Jlc29sdi5jb25mIDA2NDQgcm9vdCByb290JyA+PiR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLmNvbmYKKwlmaQorCWluc3RhbGwgLURtIDA3NTUgJHtTfS9zcmMvc3lzdGVtY3RsL3N5c3RlbWQtc3lzdi1pbnN0YWxsLlNLRUxFVE9OICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtZC1zeXN2LWluc3RhbGwKK30KKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisgICAgICAgIyBpbnN0YWxsIGRhdGEgZmlsZXMgbmVlZGVkIGZvciB0ZXN0cworICAgICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvdGVzdAorICAgICAgIGNwIC1yZkwgJHtTfS90ZXN0LyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvdGVzdAorICAgICAgICMgcHl0aG9uIGlzIGRpc2FibGVkIGZvciBzeXN0ZW1kLCB0aHVzIHJlbW92aW5nIHRoZXNlIHB5dGhvbiB0ZXN0aW5nIHNjcmlwdHMKKyAgICAgICBybSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy90ZXN0LyoucHkKKyAgICAgICBzZWQgLWkgJ3MvInRyZWUiLyJscyIvJyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy90ZXN0L3VkZXYtdGVzdC5wbAorCisgICAgICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9jYXRhbG9nCisgICAgICAgaW5zdGFsbCAke1N9L2NhdGFsb2cvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9jYXRhbG9nLworCisgICAgICAgaW5zdGFsbCAtRCAke1N9L2J1aWxkLWF1eC90ZXN0LWRyaXZlciAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9idWlsZC1hdXgvdGVzdC1kcml2ZXIKKworICAgICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvcnVsZXMKKyAgICAgICBpbnN0YWxsICR7Qn0vcnVsZXMvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9ydWxlcy8KKworICAgICAgICMgVGhpcyBkaXJlY3RvcnkgbmVlZHMgdG8gYmUgdGhlcmUgZm9yIHVkZXYtdGVzdC5wbCB0byB3b3JrLgorICAgICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS91ZGV2L3J1bGVzLmQKKworICAgICAgICMgaW5zdGFsbCBhY3R1YWwgdGVzdCBiaW5hcmllcworICAgICAgIGluc3RhbGwgLW0gMDc1NSAke0J9L3Rlc3QtKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8KKyAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtCfS8ubGlicy90ZXN0LSogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvCisKKyAgICAgICBpbnN0YWxsICR7Qn0vTWFrZWZpbGUgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvCit9CisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpeworICAgIHN5c3RlbWRsaWJkaXIgPSBkLmdldFZhcigicm9vdGxpYmRpciIsIFRydWUpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgc3lzdGVtZGxpYmRpciwgJ15saWIoLiopXC5zb1wuKicsICdsaWIlcycsICdTeXN0ZW1kICVzIGxpYnJhcnknLCBleHRyYV9kZXBlbmRzPScnLCBhbGxvd19saW5rcz1UcnVlKQorfQorUEFDS0FHRVNfRFlOQU1JQyArPSAiXmxpYih1ZGV2fHN5c3RlbWQpLioiCisKK1BBQ0tBR0VTID0rICJcCisgICAgJHtQTn0tZ3VpIFwKKyAgICAke1BOfS12Y29uc29sZS1zZXR1cCBcCisgICAgJHtQTn0taW5pdHJhbWZzIFwKKyAgICAke1BOfS1hbmFseXplIFwKKyAgICAke1BOfS1rZXJuZWwtaW5zdGFsbCBcCisgICAgJHtQTn0tcnBtLW1hY3JvcyBcCisgICAgJHtQTn0tYmluZm10IFwKKyAgICAke1BOfS1wYW0gXAorICAgICR7UE59LXpzaC1jb21wbGV0aW9uIFwKKyAgICAke1BOfS14b3JnLXhpbml0cmMgXAorICAgICR7UE59LWNvbnRhaW5lciBcCisgICAgJHtQTn0tZXh0cmEtdXRpbHMgXAorIgorCitTVU1NQVJZXyR7UE59LWNvbnRhaW5lciA9ICJUb29scyBmb3IgY29udGFpbmVycyBhbmQgVk1zIgorREVTQ1JJUFRJT05fJHtQTn0tY29udGFpbmVyID0gIlN5c3RlbWQgdG9vbHMgdG8gc3Bhd24gYW5kIG1hbmFnZSBjb250YWluZXJzIGFuZCB2aXJ0dWFsIG1hY2hpbmVzLiIKKworU1lTVEVNRF9QQUNLQUdFUyA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdiaW5mbXQnLCAnJHtQTn0tYmluZm10JywgJycsIGQpfSIKK1NZU1RFTURfU0VSVklDRV8ke1BOfS1iaW5mbXQgPSAic3lzdGVtZC1iaW5mbXQuc2VydmljZSIKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSAke1BOfS1leHRyYS11dGlscyIKK1VTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ21pY3JvaHR0cGQnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWpvdXJuYWwtZ2F0ZXdheTsnLCAnJywgZCl9IgorVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbWljcm9odHRwZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtam91cm5hbC1yZW1vdGU7JywgJycsIGQpfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2pvdXJuYWwtdXBsb2FkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1qb3VybmFsLXVwbG9hZDsnLCAnJywgZCl9IgorVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndGltZXN5bmNkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC10aW1lc3luYzsnLCAnJywgZCl9IgorVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbmV0d29ya2QnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLW5ldHdvcms7JywgJycsIGQpfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2NvcmVkdW1wJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1jb3JlZHVtcDsnLCAnJywgZCl9IgorVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncmVzb2x2ZWQnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLXJlc29sdmU7JywgJycsIGQpfSIKK0dST1VQQUREX1BBUkFNXyR7UE59ID0gIi1yIGxvY2s7IC1yIHN5c3RlbWQtam91cm5hbCIKK1VTRVJBRERfUEFSQU1fJHtQTn0tZXh0cmEtdXRpbHMgKz0gIi0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1idXMtcHJveHk7IgorCitGSUxFU18ke1BOfS1hbmFseXplID0gIiR7YmluZGlyfS9zeXN0ZW1kLWFuYWx5emUiCisKK0ZJTEVTXyR7UE59LWluaXRyYW1mcyA9ICIvaW5pdCIKK1JERVBFTkRTXyR7UE59LWluaXRyYW1mcyA9ICIke1BOfSIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImdhd2sgbWFrZSBwZXJsIGJhc2ggeHogXAorICAgICAgICAgICAgICAgICAgICAgICAgIHR6ZGF0YSB0emRhdGEtYW1lcmljYXMgdHpkYXRhLWFzaWEgXAorICAgICAgICAgICAgICAgICAgICAgICAgIHR6ZGF0YS1ldXJvcGUgdHpkYXRhLWFmcmljYSB0emRhdGEtYW50YXJjdGljYSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgdHpkYXRhLWFyY3RpYyB0emRhdGEtYXRsYW50aWMgdHpkYXRhLWF1c3RyYWxpYSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgdHpkYXRhLXBhY2lmaWMgdHpkYXRhLXBvc2l4IgorCitGSUxFU18ke1BOfS1wdGVzdCArPSAiJHtsaWJkaXJ9L3VkZXYvcnVsZXMuZCIKKworRklMRVNfJHtQTn0tZ3VpID0gIiR7YmluZGlyfS9zeXN0ZW1hZG0iCisKK0ZJTEVTXyR7UE59LXZjb25zb2xlLXNldHVwID0gIiR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC12Y29uc29sZS1zZXR1cCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtdmNvbnNvbGUtc2V0dXAuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c2luaXQudGFyZ2V0LndhbnRzL3N5c3RlbWQtdmNvbnNvbGUtc2V0dXAuc2VydmljZSIKKworUkRFUEVORFNfJHtQTn0ta2VybmVsLWluc3RhbGwgKz0gImJhc2giCitGSUxFU18ke1BOfS1rZXJuZWwtaW5zdGFsbCA9ICIke2JpbmRpcn0va2VybmVsLWluc3RhbGwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9rZXJuZWwvIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9rZXJuZWwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCitGSUxFU18ke1BOfS1ycG0tbWFjcm9zID0gIiR7ZXhlY19wcmVmaXh9L2xpYi9ycG0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICIKKworRklMRVNfJHtQTn0teG9yZy14aW5pdHJjID0gIiR7c3lzY29uZmRpcn0vWDExL3hpbml0L3hpbml0cmMuZC8qIgorCitGSUxFU18ke1BOfS16c2gtY29tcGxldGlvbiA9ICIke2RhdGFkaXJ9L3pzaC9zaXRlLWZ1bmN0aW9ucyIKKworRklMRVNfJHtQTn0tYmluZm10ID0gIiR7c3lzY29uZmRpcn0vYmluZm10LmQvIFwKKyAgICAgICAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvYmluZm10LmQgXAorICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1iaW5mbXQgXAorICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcHJvYy1zeXMtZnMtYmluZm10X21pc2MuKiBcCisgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlIgorUlJFQ09NTUVORFNfJHtQTn0tYmluZm10ID0gImtlcm5lbC1tb2R1bGUtYmluZm10LW1pc2MiCisKK1JSRUNPTU1FTkRTXyR7UE59LXZjb25zb2xlLXNldHVwID0gImtiZCBrYmQtY29uc29sZWZvbnRzIGtiZC1rZXltYXBzIgorCitGSUxFU18ke1BOfS1jb250YWluZXIgPSAiJHtzeXNjb25mZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuY29uZiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLmNvbmYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L21hY2hpbmVjdGwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLW5zcGF3biBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtub25hcmNoX2xpYmRpcn0vc3lzdGVtZC9pbXBvcnQtcHVicmluZy5ncGcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vYnVzbmFtZXMudGFyZ2V0LndhbnRzL29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLmJ1c25hbWUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vYnVzbmFtZXMudGFyZ2V0LndhbnRzL29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5idXNuYW1lIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2xvY2FsLWZzLnRhcmdldC53YW50cy92YXItbGliLW1hY2hpbmVzLm1vdW50IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L21hY2hpbmUuc2xpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbWFjaGluZXMudGFyZ2V0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLmJ1c25hbWUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLmJ1c25hbWUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc3lzdGVtZC1pbXBvcnRkLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc3lzdGVtZC1tYWNoaW5lZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3Zhci1saWItbWFjaGluZXMubW91bnQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1pbXBvcnQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1pbXBvcnRkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtam91cm5hbC1nYXRld2F5ZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWpvdXJuYWwtcmVtb3RlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtam91cm5hbC11cGxvYWQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1tYWNoaW5lZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXB1bGwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c3RlbWQtbnNwYXduLmNvbmYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc3lzdGVtZC1uc3Bhd25ALnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJuc3NfbXltYWNoaW5lcy5zby4yIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMvb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzL29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3BvbGtpdC0xL2FjdGlvbnMvb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEucG9saWN5IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3BvbGtpdC0xL2FjdGlvbnMvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLnBvbGljeSBcCisgICAgICAgICAgICAgICAgICAgICAgICAiCisKK0ZJTEVTXyR7UE59LWV4dHJhLXV0aWxzID0gIlwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3N5c3RlbWQtZXNjYXBlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3N5c3RlbWQtaW5oaWJpdCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1kZXRlY3QtdmlydCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1wYXRoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLXJ1biBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1jYXQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtZGVsdGEgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtY2dscyBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1jZ3RvcCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1zdGRpby1icmlkZ2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC1hc2stcGFzc3dvcmQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC10dHktYXNrLXBhc3N3b3JkLWFnZW50IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1hc2stcGFzc3dvcmQtY29uc29sZS5wYXRoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1hc2stcGFzc3dvcmQtY29uc29sZS5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1hc2stcGFzc3dvcmQtd2FsbC5wYXRoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1hc2stcGFzc3dvcmQtd2FsbC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvc3lzdGVtZC1hc2stcGFzc3dvcmQtY29uc29sZS5wYXRoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvc3lzdGVtZC1hc2stcGFzc3dvcmQtd2FsbC5wYXRoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbXVsdGktdXNlci50YXJnZXQud2FudHMvc3lzdGVtZC1hc2stcGFzc3dvcmQtd2FsbC5wYXRoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1yZXNvbHZlLWhvc3QgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWFjLXBvd2VyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1hY3RpdmF0ZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtYnVzLXByb3h5ZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYnVzLXByb3h5ZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1idXMtcHJveHlkLnNvY2tldCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtc29ja2V0LXByb3h5ZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtcmVwbHktcGFzc3dvcmQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXNsZWVwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtLXNsZWVwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1oaWJlcm5hdGUuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtaHlicmlkLXNsZWVwLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLXN1c3BlbmQuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NsZWVwLnRhcmdldCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtaW5pdGN0bCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtaW5pdGN0bC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1pbml0Y3RsLnNvY2tldCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NvY2tldHMudGFyZ2V0LndhbnRzL3N5c3RlbWQtaW5pdGN0bC5zb2NrZXQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW0tZ2VuZXJhdG9ycy9zeXN0ZW1kLWdwdC1hdXRvLWdlbmVyYXRvciBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtY2dyb3Vwcy1hZ2VudCBcCisiCisKK0NPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L21hY2hpbmUtaWQgXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC9jb3JlZHVtcC5jb25mIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvam91cm5hbGQuY29uZiBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kL2xvZ2luZC5jb25mIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvc3lzdGVtLmNvbmYgXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC91c2VyLmNvbmYiCisKK0ZJTEVTXyR7UE59ID0gIiAke2Jhc2VfYmluZGlyfS8qIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcyBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3BvbGtpdC0xIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7QlBOfSBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9mYWN0b3J5IFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2RidXMtMS8gXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vbWFjaGluZS1pZCBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9tb2R1bGVzLWxvYWQuZC8gXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vcGFtLmQvIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c2N0bC5kLyBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kLyBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLyBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS94ZGcvIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC9SRUFETUUgXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vcmVzb2x2LmNvbmYgXAorICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvKiBcCisgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9LyogXAorICAgICAgICAgICAgICAgICR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5Lyouc28gXAorICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJuc3NfKiBcCisgICAgICAgICAgICAgICAgL2Nncm91cCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQqIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vYnVzY3RsIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vY29yZWR1bXBjdGwgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9sb2NhbGVjdGwgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9ob3N0bmFtZWN0bCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3RpbWVkYXRlY3RsIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vYm9vdGN0bCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2tlcm5lbC1pbnN0YWxsIFwKKyAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC8qLmNvbmYgXAorICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9zeXN0ZW1kIFwKKyAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvbW9kdWxlcy1sb2FkLmQgXAorICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9zeXNjdGwuZCBcCisgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3N5c3VzZXJzLmQgXAorICAgICAgICAgICAgICAgICR7bG9jYWxzdGF0ZWRpcn0gXAorICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzcwLXVhY2Nlc3MucnVsZXMgXAorICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzcxLXNlYXQucnVsZXMgXAorICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzczLXNlYXQtbGF0ZS5ydWxlcyBcCisgICAgICAgICAgICAgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQvOTktc3lzdGVtZC5ydWxlcyBcCisgICAgICAgICAgICAgICAiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkvKi5sYSAke2RhdGFkaXJ9L2RidXMtMS9pbnRlcmZhY2VzLyAke3N5c2NvbmZkaXJ9L3JwbS9tYWNyb3Muc3lzdGVtZCIKKworUkRFUEVORFNfJHtQTn0gKz0gImttb2QgZGJ1cyB1dGlsLWxpbnV4LW1vdW50IHVkZXYgKD0gJHtFWFRFTkRQS0dWfSkiCitSREVQRU5EU18ke1BOfSArPSAidm9sYXRpbGUtYmluZHMgdXBkYXRlLXJjLmQiCisKK1JSRUNPTU1FTkRTXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzZXJpYWwtZ2V0dHktZ2VuZXJhdG9yJywgJycsICdzeXN0ZW1kLXNlcmlhbGdldHR5JywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW1kLXZjb25zb2xlLXNldHVwIFwKKyAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW1kLWV4dHJhLXV0aWxzIFwKKyAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW1kLWNvbXBhdC11bml0cyB1ZGV2LWh3ZGIgXAorICAgICAgICAgICAgICAgICAgICAgIHV0aWwtbGludXgtYWdldHR5ICB1dGlsLWxpbnV4LWZzY2sgZTJmc3Byb2dzLWUyZnNjayBcCisgICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1hdXRvZnM0IGtlcm5lbC1tb2R1bGUtdW5peCBrZXJuZWwtbW9kdWxlLWlwdjYgXAorICAgICAgICAgICAgICAgICAgICAgIG9zLXJlbGVhc2UgXAorIgorCitJTlNBTkVfU0tJUF8ke1BOfS1kb2MgKz0gIiBsaWJkaXIiCisKK1BBQ0tBR0VTID0rICJ1ZGV2IHVkZXYtaHdkYiIKKworUlBST1ZJREVTX3VkZXYgPSAiaG90cGx1ZyIKKworUkRFUEVORFNfdWRldi1od2RiICs9ICJ1ZGV2IgorCitGSUxFU191ZGV2ICs9ICIke2Jhc2Vfc2JpbmRpcn0vdWRldmQgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXVkZXZkIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvYWNjZWxlcm9tZXRlciBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2F0YV9pZCBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2Nkcm9tX2lkIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvY29sbGVjdCBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2ZpbmRrZXlib2FyZHMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9rZXlib2FyZC1mb3JjZS1yZWxlYXNlLnNoIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYva2V5bWFwIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvbXRkX3Byb2JlIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvc2NzaV9pZCBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3Y0bF9pZCBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2tleW1hcHMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLyoucnVsZXMgXAorICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS91ZGV2IFwKKyAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c3RlbWQtdWRldmQgXAorICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qdWRldiogXAorICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qLndhbnRzLyp1ZGV2KiBcCisgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS91ZGV2YWRtIFwKKyAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vYmFzaC1jb21wbGV0aW9uL2NvbXBsZXRpb25zL3VkZXZhZG0gXAorICAgICAgICAgICAgICAiCisKK0ZJTEVTX3VkZXYtaHdkYiA9ICIke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2h3ZGIuZCIKKworSU5JVFNDUklQVF9QQUNLQUdFUyA9ICJ1ZGV2IgorSU5JVFNDUklQVF9OQU1FX3VkZXYgPSAic3lzdGVtZC11ZGV2ZCIKK0lOSVRTQ1JJUFRfUEFSQU1TX3VkZXYgPSAic3RhcnQgMDMgUyAuIgorCitweXRob24gX19hbm9ueW1vdXMoKSB7CisgICAgaWYgbm90IGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCBUcnVlLCBGYWxzZSwgZCk6CisgICAgICAgIGQuc2V0VmFyKCJJTkhJQklUX1VQREFURVJDRF9CQkNMQVNTIiwgIjEiKQorfQorCisjIFRPRE86CisjIHUtYSBmb3IgcnVubGV2ZWwgYW5kIHRlbGluaXQKKworQUxURVJOQVRJVkVfJHtQTn0gPSAiaW5pdCBoYWx0IHJlYm9vdCBzaHV0ZG93biBwb3dlcm9mZiBydW5sZXZlbCIKKworQUxURVJOQVRJVkVfVEFSR0VUW2luaXRdID0gIiR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtpbml0XSA9ICIke2Jhc2Vfc2JpbmRpcn0vaW5pdCIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW2luaXRdID89ICIzMDAiCisKK0FMVEVSTkFUSVZFX1RBUkdFVFtoYWx0XSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbaGFsdF0gPSAiJHtiYXNlX3NiaW5kaXJ9L2hhbHQiCitBTFRFUk5BVElWRV9QUklPUklUWVtoYWx0XSA/PSAiMzAwIgorCitBTFRFUk5BVElWRV9UQVJHRVRbcmVib290XSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcmVib290XSA9ICIke2Jhc2Vfc2JpbmRpcn0vcmVib290IgorQUxURVJOQVRJVkVfUFJJT1JJVFlbcmVib290XSA/PSAiMzAwIgorCitBTFRFUk5BVElWRV9UQVJHRVRbc2h1dGRvd25dID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtzaHV0ZG93bl0gPSAiJHtiYXNlX3NiaW5kaXJ9L3NodXRkb3duIgorQUxURVJOQVRJVkVfUFJJT1JJVFlbc2h1dGRvd25dID89ICIzMDAiCisKK0FMVEVSTkFUSVZFX1RBUkdFVFtwb3dlcm9mZl0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3Bvd2Vyb2ZmXSA9ICIke2Jhc2Vfc2JpbmRpcn0vcG93ZXJvZmYiCitBTFRFUk5BVElWRV9QUklPUklUWVtwb3dlcm9mZl0gPz0gIjMwMCIKKworQUxURVJOQVRJVkVfVEFSR0VUW3J1bmxldmVsXSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcnVubGV2ZWxdID0gIiR7YmFzZV9zYmluZGlyfS9ydW5sZXZlbCIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW3J1bmxldmVsXSA/PSAiMzAwIgorCitwa2dfcG9zdGluc3RfJHtQTn0gKCkgeworCXNlZCAtZSAnL15ob3N0czovcy9ccypcPG15aG9zdG5hbWVcPi8vJyBcCisJCS1lICdzL1woXmhvc3RzOi4qXClcKFw8ZmlsZXNcPlwpXCguKlwpXChcPGRuc1w+XClcKC4qXCkvXDFcMiBteWhvc3RuYW1lIFwzXDRcNS8nIFwKKwkJLWkgJEQke3N5c2NvbmZkaXJ9L25zc3dpdGNoLmNvbmYKK30KKworcGtnX3ByZXJtXyR7UE59ICgpIHsKKwlzZWQgLWUgJy9eaG9zdHM6L3MvXHMqXDxteWhvc3RuYW1lXD4vLycgXAorCQktZSAnL15ob3N0czovcy9ccypteWhvc3RuYW1lLy8nIFwKKwkJLWkgJEQke3N5c2NvbmZkaXJ9L25zc3dpdGNoLmNvbmYKK30KKworcGtnX3Bvc3RpbnN0X3VkZXYtaHdkYiAoKSB7CisJaWYgdGVzdCAtbiAiJEQiOyB0aGVuCisJCSR7QHFlbXVfcnVuX2JpbmFyeShkLCAnJEQnLCAnJHtiYXNlX2JpbmRpcn0vdWRldmFkbScpfSBod2RiIC0tdXBkYXRlIFwKKwkJCS0tcm9vdCAkRAorCQljaG93biByb290OnJvb3QgJEQke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5iaW4KKwllbHNlCisJCXVkZXZhZG0gaHdkYiAtLXVwZGF0ZQorCWZpCit9CisKK3BrZ19wcmVybV91ZGV2LWh3ZGIgKCkgeworCXJtIC1mICREJHtzeXNjb25mZGlyfS91ZGV2L2h3ZGIuYmluCit9CisKKyMgQXMgdGhpcyByZWNpcGUgYnVpbGRzIHVkZXYsIHJlc3BlY3Qgc3lzdGVtZCBiZWluZyBpbiBESVNUUk9fRkVBVFVSRVMgc28KKyMgdGhhdCB3ZSBkb24ndCBidWlsZCBib3RoIHVkZXYgYW5kIHN5c3RlbWQgaW4gd29ybGQgYnVpbGRzLgorcHl0aG9uICgpIHsKKyAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMgKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIFRydWUsIEZhbHNlLCBkKToKKyAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIidzeXN0ZW1kJyBub3QgaW4gRElTVFJPX0ZFQVRVUkVTIikKKworICAgIGltcG9ydCByZQorICAgIGlmIHJlLm1hdGNoKCcuKm11c2wqJywgZC5nZXRWYXIoJ1RBUkdFVF9PUycsIFRydWUpKSAhPSBOb25lOgorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiTm90IF95ZXRfIHN1cHBvcnRlZCBvbiBtdXNsIGJhc2VkIHRhcmdldHMiKQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0LWluaXR0YWJfMi44OGRzZi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC1pbml0dGFiXzIuODhkc2YuYmIKaW5kZXggYzViOGNkYy4uZjEzNmFkOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0LWluaXR0YWJfMi44OGRzZi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQtaW5pdHRhYl8yLjg4ZHNmLmJiCkBAIC0yNiw3ICsyNiw4IEBACiAgICAgZm9yIGkgaW4gJHRtcAogICAgIGRvCiAJaj1gZWNobyAke2l9IHwgc2VkIHMvXDsvXCAvZ2AKLQlsYWJlbD1gZWNobyAke2l9IHwgc2VkIC1lICdzL3R0eS8vJyAtZSAncy9eLio7Ly8nIC1lICdzLzsuKi8vJ2AKKwlsPWBlY2hvICR7aX0gfCBzZWQgLWUgJ3MvdHR5Ly8nIC1lICdzL14uKjsvLycgLWUgJ3MvOy4qLy8nYAorCWxhYmVsPWBlY2hvICRsIHwgc2VkICdzLy4qXCguLi4uXCkvXDEvJ2AKIAllY2hvICIkbGFiZWw6MTIzNDU6cmVzcGF3bjoke2Jhc2VfYmluZGlyfS9zdGFydF9nZXR0eSAke2p9IiA+PiAke0R9JHtzeXNjb25mZGlyfS9pbml0dGFiCiAgICAgZG9uZQogCkBAIC01Nyw5ICs1OCwxMiBAQAogCXRtcD0iJHtTRVJJQUxfQ09OU09MRVNfQ0hFQ0t9IgogCWZvciBpIGluICR0bXAKIAlkbwotCQlqPWBlY2hvICR7aX0gfCBzZWQgcy9eLipcOy8vZ2AKKwkJaj1gZWNobyAke2l9IHwgc2VkIC1lIHMvXi4qXDsvL2cgLWUgcy9cOi4qLy9nYAorCQlrPWBlY2hvICR7aX0gfCBzZWQgcy9eLipcOi8vZ2AKIAkJaWYgWyAteiAiYGdyZXAgJHtqfSAvcHJvYy9jb25zb2xlc2AiIF07IHRoZW4KLQkJCXNlZCAtaSAvXi4qJHtqfSQvZCAvZXRjL2luaXR0YWIKKwkJCWlmIFsgLXogIiR7a30iIF0gfHwgWyAteiAiYGdyZXAgJHtrfSAvcHJvYy9jb25zb2xlc2AiIF0gfHwgWyAhIC1lIC9kZXYvJHtqfSBdOyB0aGVuCisJCQkJc2VkIC1pIC9eLioke2p9JC9kIC9ldGMvaW5pdHRhYgorCQkJZmkKIAkJZmkKIAlkb25lCiAJa2lsbCAtSFVQIDEKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91Y2xpYmMvc2l0ZV9jb25maWcvZnVuY3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWNsaWJjL3NpdGVfY29uZmlnL2Z1bmNzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjY2M4NTM5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91Y2xpYmMvc2l0ZV9jb25maWcvZnVuY3MKKysrIC9kZXYvbnVsbApAQCAtMSw0NzQgKzAsMCBAQAotYTY0bAotYWJzCi1hY2Nlc3MKLV9fYWRqdGltZXgKLWFsYXJtCi1hbHBoYXNvcnQKLWFyZ3pfYXBwZW5kCi1fX2FyZ3pfY291bnQKLWFyZ3pfY3JlYXRlX3NlcAotYXJnel9pbnNlcnQKLV9fYXJnel9uZXh0Ci1hcmd6X25leHQKLV9fYXJnel9zdHJpbmdpZnkKLWFyZ3pfc3RyaW5naWZ5Ci1hc3ByaW50ZgotYXRleGl0Ci1hdG9mCi1hdG9pCi1iY21wCi1iY29weQotYmluZHJlc3Zwb3J0Ci1iaW5kX3RleHRkb21haW5fY29kZXNldAotYnRvd2MKLWJ6ZXJvCi1jYWxsb2MKLWNhbm9uaWNhbGl6ZV9maWxlX25hbWUKLWNhdGdldHMKLWNmZ2V0b3NwZWVkCi1jZnNldGlzcGVlZAotY2ZzZXRzcGVlZAotY2htb2QKLWNob3duCi1jaHJvb3QKLWNsb2NrCi1jbG9zZQotY2xvc2VkaXIKLWNsb3NlbG9nCi1jb25mc3RyCi1jb25uZWN0Ci1kYWVtb24KLWRjZ2V0dGV4dAotZGlmZnRpbWUKLWRpcmZkCi1kaXJuYW1lCi1kbmdldHRleHQKLWR1cDIKLWVjdnQKLWVuZGdyZW50Ci1lbmRtbnRlbnQKLWVuZHB3ZW50Ci1lbmR1dGVudAotZW5kdXR4ZW50Ci1lcG9sbF9jdGwKLWVycgotZXRoZXJfaG9zdHRvbgotZXRoZXJfbnRvaG9zdAotZXVpZGFjY2VzcwotZXhlY3YKLWZjaGRpcgotZmNobW9kCi1mY2htb2RhdAotZmNob3duCi1mY2hvd25hdAotZmNudGwKLWZjdnQKLWZkYXRhc3luYwotZmRvcGVuZGlyCi1mZW9mX3VubG9ja2VkCi1mZ2V0c191bmxvY2tlZAotZmdldHhhdHRyCi1maW5pdGUKLWZsaXN0eGF0dHIKLWZsb2NrCi1mbG9ja2ZpbGUKLWZubWF0Y2gKLWZvcmsKLWZwYXRoY29uZgotX19mcGVuZGluZwotZnByaW50ZgotZnJlZQotZnJlZWFkZHJpbmZvCi1mcmVlaWZhZGRycwotZnNlZWtvCi1fX2ZzZXRsb2NraW5nCi1mc2V0eGF0dHIKLWZzdGF0NjQKLWZzdGF0Ci1mc3RhdGZzCi1mc3luYwotZnRlbGxvCi1mdGltZQotZnRydW5jYXRlCi1mdW5sb2NrZmlsZQotZnV0aW1lcwotZnV0aW1lc2F0Ci1nYWlfc3RyZXJyb3IKLWdjdnQKLWdldGFkZHJpbmZvCi1nZXRjX3VubG9ja2VkCi1nZXRjd2QKLWdldGRlbGltCi1nZXRkb21haW5uYW1lCi1nZXRkdGFibGVzaXplCi1nZXRlZ2lkCi1nZXRlbnYKLWdldGV1aWQKLWdldGdpZAotZ2V0Z3JlbnQKLWdldGdyZW50X3IKLWdldGdyZ2lkX3IKLWdldGdybmFtCi1nZXRncm5hbV9yCi1nZXRncm91cGxpc3QKLWdldGdyb3VwcwotZ2V0aG9zdGJ5YWRkcl9yCi1nZXRob3N0YnluYW1lMgotZ2V0aG9zdGJ5bmFtZQotZ2V0aG9zdGJ5bmFtZV9yCi1nZXRob3N0ZW50Ci1nZXRob3N0aWQKLWdldGhvc3RuYW1lCi1nZXRpZmFkZHJzCi1nZXRsaW5lCi1nZXRsb2FkYXZnCi1nZXRtbnRlbnQKLWdldG1zZwotZ2V0bmFtZWluZm8KLWdldG5ldGJ5YWRkcl9yCi1nZXRuZXRncmVudF9yCi1nZXRvcHQKLWdldG9wdF9sb25nCi1nZXRvcHRfbG9uZ19vbmx5Ci1nZXRwYWdlc2l6ZQotZ2V0cGFzcwotZ2V0cGVlcm5hbWUKLWdldHBncnAKLWdldHBpZAotZ2V0cHBpZAotZ2V0cHJvdG9lbnRfcgotZ2V0cHdlbnQKLWdldHB3ZW50X3IKLWdldHB3bmFtCi1nZXRwd25hbV9yCi1nZXRwd3VpZAotZ2V0cHd1aWRfcgotZ2V0cmVzdWlkCi1nZXRybGltaXQKLWdldHJ1c2FnZQotZ2V0c2VydmJ5bmFtZQotZ2V0c2VydmJ5bmFtZV9yCi1nZXRzZXJ2Ynlwb3J0X3IKLWdldHNlcnZlbnQKLWdldHNlcnZlbnRfcgotZ2V0c3BuYW0KLWdldHNwbmFtX3IKLWdldHRpbWVvZmRheQotZ2V0dHR5ZW50Ci1nZXR0dHluYW0KLWdldHVpZAotZ2V0dXNlcnNoZWxsCi1nZXR1dGVudAotZ2V0dXRpZAotZ2V0dXRsaW5lCi1nZXR1dG1wCi1nZXR1dG1weAotZ2V0dXR4ZW50Ci1nZXR1dHhpZAotZ2V0dXR4bGluZQotZ2V0d2QKLWdldHhhdHRyCi1nbG9iCi1nbXRpbWUKLWdtdGltZV9yCi1ncmFudHB0Ci1ncm91cF9tZW1iZXIKLWhlcnJvcgotaHN0cmVycm9yCi1pY29udgotaWNvbnZfb3BlbgotaWZfZnJlZW5hbWVpbmRleAotaWZfaW5kZXh0b25hbWUKLWlmX25hbWVpbmRleAotaWZfbmFtZXRvaW5kZXgKLWluZGV4Ci1pbmV0X2FkZHIKLWluZXRfYXRvbgotaW5ldF9udG9hCi1pbmV0X250b3AKLWluZXRfcHRvbgotaW5pdGdyb3VwcwotaW5uZXRncgotaXJ1c2Vyb2sKLWlzYXNjaWkKLWlzYXR0eQotaXNibGFuawotaXNncmFwaAotaXNpbmYKLWlzbmFuCi1pc3ByaW50Ci1pc3NwYWNlCi1pc3dhbG51bQotaXN3Y250cmwKLWlzd2N0eXBlCi1pc3dwcmludAotaXN3c3BhY2UKLWlzd3VwcGVyCi1pc3hkaWdpdAota2lsbAota2lsbHBnCi1sY2hvd24KLWxja3B3ZGYKLWxnZXR4YXR0cgotbGluawotbGlzdHhhdHRyCi1sbGlzdHhhdHRyCi1sb2NhbHRpbWUKLWxvY2FsdGltZV9yCi1sb2NrZgotbHJhbmQ0OAotbHNlYXJjaAotbHNlZWs2NAotbHNldHhhdHRyCi1sc3RhdAotbWFsbGluZm8KLW1hbGxvYwotbWJsZW4KLW1icmxlbgotbWJydG93YwotbWJzaW5pdAotbWJzcnRvd2NzCi1tYnRvd2MKLW1lbWFsaWduCi1tZW1jaHIKLW1lbWNtcAotbWVtY3B5Ci1tZW1tb3ZlCi1tZW1wY3B5Ci1tZW1yY2hyCi1tZW1zZXQKLW1rZGlyCi1ta2RpcmF0Ci1ta2R0ZW1wCi1ta2ZpZm8KLW1rbm9kCi1ta3N0ZW1wNjQKLW1rc3RlbXAKLW1rdGltZQotbWxvY2sKLW1tYXAKLW10cmFjZQotbXVubG9jawotbXVubWFwCi1uYW5vc2xlZXAKLW5pY2UKLW5sX2xhbmdpbmZvCi1udHBfYWRqdGltZQotbnRwX2dldHRpbWUKLV9vYnN0YWNrX2ZyZWUKLW9uX2V4aXQKLW9wZW42NAotb3Blbgotb3BlbmF0Ci1vcGVuZGlyCi1vcGVubG9nCi1wYXRoY29uZgotcGlwZQotcG9sbAotcG9wZW4KLXBvc2l4X21lbWFsaWduCi1wcmN0bAotcHJlYWQKLXByaW50ZgotX19wcm9nbmFtZQotcHNlbGVjdAotcHRocmVhZF9tdXRleF9sb2NrCi1wdHNuYW1lCi1wdXRlbnYKLXB1dGdyZW50Ci1wdXRwd2VudAotcHV0c3BlbnQKLXB1dHV0bGluZQotcHV0dXR4bGluZQotcHV0d2MKLXB3cml0ZQotcXNvcnQKLXJhaXNlCi1yYW5kCi1yYW5kb20KLXJhbmRfcgotcmVhZAotcmVhZGRpcgotcmVhZGRpcl9yCi1yZWFkbGluawotcmVhbGxvYwotcmVhbHBhdGgKLXJlX2NvbXAKLXJlY3Ztc2cKLXJlX2V4ZWMKLXJlZ2NvbXAKLXJlZ2V4ZWMKLXJlbW92ZQotcmVuYW1lCi1yZV9zZWFyY2gKLXJtZGlyCi1ycG1hdGNoCi1ycmVzdnBvcnRfYWYKLXJ1c2Vyb2sKLXJ1c2Vyb2tfYWYKLXNicmsKLXNjYW5kaXIKLXNjaGVkX3NldHNjaGVkdWxlcgotc2NoZWRfeWllbGQKLV9fc2VjdXJlX2dldGVudgotc2VsZWN0Ci1zZW1jdGwKLXNlbWdldAotc2VuZG1zZwotc2V0YnVmCi1zZXRidWZmZXIKLXNldGVnaWQKLXNldGVudgotc2V0ZXVpZAotc2V0Z2lkCi1zZXRncm91cHMKLXNldGhvc3RuYW1lCi1zZXRpdGltZXIKLV9zZXRqbXAKLXNldGptcAotc2V0bGluZWJ1Zgotc2V0bG9jYWxlCi1zZXRtbnRlbnQKLXNldHBnaWQKLXNldHBncnAKLXNldHByaW9yaXR5Ci1zZXRyZWdpZAotc2V0cmVzZ2lkCi1zZXRyZXN1aWQKLXNldHJldWlkCi1zZXRybGltaXQKLXNldHNpZAotc2V0c29ja29wdAotc2V0dGltZW9mZGF5Ci1zZXR1aWQKLXNldHV0ZW50Ci1zZXR1dHhlbnQKLXNldHZidWYKLXNldHhhdHRyCi1zZ2V0c3BlbnQKLXNobWF0Ci1zaG1jdGwKLXNobWR0Ci1zaG1nZXQKLXNodXRkb3duCi1zaWdhY3Rpb24KLXNpZ2FkZHNldAotc2lnYWx0c3RhY2sKLXNpZ2Jsb2NrCi1zaWdlbXB0eXNldAotc2lnaG9sZAotc2lnaW50ZXJydXB0Ci1zaWduYWwKLXNpZ3Byb2NtYXNrCi1zaWdzZXQKLXNpZ3NldG1hc2sKLXNpZ3N0YWNrCi1zaWdzdXNwZW5kCi1zaWd2ZWMKLXNucHJpbnRmCi1zb2NrZXQKLXNvY2tldHBhaXIKLXNwcmludGYKLXNyYW5kNDgKLXNyYW5kCi1zcmFuZG9tCi1zc2NhbmYKLXN0YXQKLXN0YXRmcwotc3RhdHZmcwotc3RpbWUKLXN0cGNweQotc3RyY2FzZWNtcAotc3RyY2FzZXN0cgotc3RyY2hyCi1zdHJjaHJudWwKLXN0cmNtcAotc3RyY3Nwbgotc3RyZHVwCi1zdHJlcnJvcgotc3RyZXJyb3Jfcgotc3RyZnRpbWUKLXN0cmxlbgotc3RybmNhc2VjbXAKLXN0cm5jbXAKLXN0cm5kdXAKLXN0cm5sZW4KLXN0cnBicmsKLXN0cnB0aW1lCi1zdHJyY2hyCi1zdHJzZXAKLXN0cnNpZ25hbAotc3Ryc3BuCi1zdHJzdHIKLXN0cnRvZAotc3RydG9pbWF4Ci1zdHJ0b2tfcgotc3RydG9sCi1zdHJ0b2xsCi1zdHJ0b3VsCi1zdHJ0b3VsbAotc3RydG91bWF4Ci1zdHJ2ZXJzY21wCi1zdHJ4ZnJtCi1zeW1saW5rCi1zeW5jCi1zeXNjb25mCi1zeXNjdGwKLXN5c2luZm8KLXN5c2xvZwotX3N5c19zaWdsaXN0Ci1zeXNfc2lnbGlzdAotc3lzdGVtCi10Y2dldGF0dHIKLXRjZ2V0cGdycAotdGNzZXRhdHRyCi10Y3NldHBncnAKLXRpbWUKLXRpbWVnbQotdGltZXMKLXRpbWV6b25lCi10bXBuYW0KLXRvd2xvd2VyCi10b3d1cHBlcgotdHJ1bmNhdGUKLXRzZWFyY2gKLXR0eW5hbWUKLXR6c2V0Ci11bGltaXQKLXVtYXNrCi11bmFtZQotdW5saW5rCi11bnNldGVudgotdW5zaGFyZQotdXBkd3RtcAotdXBkd3RtcHgKLXVzbGVlcAotdXN0YXQKLXV0aW1lCi11dGltZXMKLXV0bXBuYW1lCi11dG1weG5hbWUKLXZhbGxvYwotdmFzcHJpbnRmCi12ZXJyeAotdmZvcmsKLXZmcHJpbnRmCi12ZnNjYW5mCi12aGFuZ3VwCi12cHJpbnRmCi12c25wcmludGYKLXZzcHJpbnRmCi13YWl0Mwotd2FpdDQKLXdhaXRwaWQKLXdjcnRvbWIKLXdjc2NvbGwKLXdjc2R1cAotd2NzbGVuCi13Y3RvYgotd2N0b21iCi13Y3R5cGUKLXdjd2lkdGgKLXdtZW1jaHIKLXdtZW1jcHkKLXdtZW1wY3B5CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWNsaWJjL3NpdGVfY29uZmlnL2hlYWRlcnMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWNsaWJjL3NpdGVfY29uZmlnL2hlYWRlcnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwOWFiNTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VjbGliYy9zaXRlX2NvbmZpZy9oZWFkZXJzCisrKyAvZGV2L251bGwKQEAgLTEsMTU2ICswLDAgQEAKLWFpby5oCi1hbGxvY2EuaAotYXJnei5oCi1hcnBhL2luZXQuaAotYXJwYS9uYW1lc2VyLmgKLWFzbS9ieXRlb3JkZXIuaAotYXNtL2lvY3Rscy5oCi1hc20vcGFnZS5oCi1hc20vdHlwZXMuaAotYXNzZXJ0LmgKLWJ5dGVzd2FwLmgKLWNyeXB0LmgKLWN0eXBlLmgKLWRpcmVudC5oCi1kbGZjbi5oCi1lbGYuaAotZW5kaWFuLmgKLWVyci5oCi1lcnJuby5oCi1leGVjaW5mby5oCi1mY250bC5oCi1mZWF0dXJlcy5oCi1mbG9hdC5oCi1mc3RhYi5oCi1mdHcuaAotZ2V0b3B0LmgKLWdsb2IuaAotZ3JwLmgKLWljb252LmgKLWlmYWRkcnMuaAotaW50dHlwZXMuaAotbGFuZ2luZm8uaAotbGFzdGxvZy5oCi1saWJnZW4uaAotbGliaW50bC5oCi1saW1pdHMuaAotbGludXgvY2FwYWJpbGl0eS5oCi1saW51eC9mZC5oCi1saW51eC9mcy5oCi1saW51eC9oYXllc2VzcC5oCi1saW51eC9oZHJlZy5oCi1saW51eC9pY21wLmgKLWxpbnV4L2luNi5oCi1saW51eC9qb3lzdGljay5oCi1saW51eC9wdHJhY2UuaAotbGludXgvc2VyaWFsLmgKLWxpbnV4L3NvbnlwaS5oCi1saW51eC91bmlzdGQuaAotbGludXgvdXRzbmFtZS5oCi1saW51eC92ZXJzaW9uLmgKLWxvY2FsZS5oCi1tYWxsb2MuaAotbWF0aC5oCi1tY2hlY2suaAotbWVtb3J5LmgKLW1udGVudC5oCi1tcXVldWUuaAotbmV0ZGIuaAotbmV0L2lmLmgKLW5ldGluZXQvZXRoZXIuaAotbmV0aW5ldC9pbi5oCi1uZXRpbmV0L2lwNi5oCi1uZXRpbmV0L2lwLmgKLW5ldGluZXQvdGNwLmgKLW5ldGluZXQvdWRwLmgKLW5ldGlweC9pcHguaAotbmV0L3JvdXRlLmgKLXBhdGhzLmgKLXBvbGwuaAotcHRocmVhZC5oCi1wdHkuaAotcHdkLmgKLXJlZ2V4LmgKLXJlc29sdi5oCi1ycGMvcnBjLmgKLXJwYy90eXBlcy5oCi1zY2hlZC5oCi1zY3NpL3Njc2kuaAotc2VhcmNoLmgKLXNlbWFwaG9yZS5oCi1zZXRqbXAuaAotc2d0dHkuaAotc2hhZG93LmgKLXNpZ25hbC5oCi1zdGRhcmcuaAotc3RkYm9vbC5oCi1zdGRjCi1zdGRkZWYuaAotc3RkaW50LmgKLXN0ZGlvLmgKLXN0ZGxpYi5oCi1zdHJpbmcuaAotc3RyaW5ncy5oCi1zdHJvcHRzLmgKLXN5cy9iaXR5cGVzLmgKLXN5cy9jZGVmcy5oCi1zeXMvZGlyLmgKLXN5cy9lcG9sbC5oCi1zeXNleGl0cy5oCi1zeXMvZmNudGwuaAotc3lzL2ZpbGUuaAotc3lzL2ZzdWlkLmgKLXN5cy9pb2N0bC5oCi1zeXMvaXBjLmgKLXN5c2xvZy5oCi1zeXMvbW1hbi5oCi1zeXMvbW91bnQuaAotc3lzL210aW8uaAotc3lzL3BhcmFtLmgKLXN5cy9wb2xsLmgKLXN5cy9wcmN0bC5oCi1zeXMvcHRyYWNlLmgKLXN5cy9xdWV1ZS5oCi1zeXMvcmVnLmgKLXN5cy9yZXNvdXJjZS5oCi1zeXMvc2VsZWN0LmgKLXN5cy9zZW0uaAotc3lzL3NobS5oCi1zeXMvc2lnbmFsLmgKLXN5cy9zb2NrZXQuaAotc3lzL3NvY2tldHZhci5oCi1zeXMvc291bmRjYXJkLmgKLXN5cy9zdGF0ZnMuaAotc3lzL3N0YXQuaAotc3lzL3N0YXR2ZnMuaAotc3lzL3N0cm9wdHMuaAotc3lzL3N3YXAuaAotc3lzL3N5c2N0bC5oCi1zeXMvc3lzaW5mby5oCi1zeXMvc3lzbWFjcm9zLmgKLXN5cy90ZXJtaW9zLmgKLXN5cy90aW1lYi5oCi1zeXMvdGltZS5oCi1zeXMvdGltZXMuaAotc3lzL3RpbWV4LmgKLXN5cy90eXBlcy5oCi1zeXMvdWlvLmgKLXN5cy91bi5oCi1zeXMvdW5pc3RkLmgKLXN5cy91c2VyLmgKLXN5cy91dHNuYW1lLmgKLXN5cy92ZnMuaAotc3lzL3dhaXQuaAotdGVybWlvLmgKLXRlcm1pb3MuaAotdGltZS5oCi10dHllbnQuaAotdWxpbWl0LmgKLXVuaXN0ZC5oCi11c3RhdC5oCi11dGltZS5oCi11dG1wLmgKLXV0bXB4LmgKLXZhbHVlcy5oCi13Y2hhci5oCi13Y3R5cGUuaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VjbGliYy9zaXRlX2NvbmZpZy90eXBlcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91Y2xpYmMvc2l0ZV9jb25maWcvdHlwZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3OGJkODUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VjbGliYy9zaXRlX2NvbmZpZy90eXBlcworKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLWNoYXIKLWNoYXIgKgotZG91YmxlCi1mbG9hdAotaW50Ci1sb25nCi1sb25nIGRvdWJsZQotbG9uZyBpbnQKLWxvbmcgbG9uZwotbG9uZyBsb25nIGludAotc2hvcnQKLXNob3J0IGludAotc2lnbmVkIGNoYXIKLXVuc2lnbmVkIGNoYXIKLXVuc2lnbmVkIGludAotdW5zaWduZWQgbG9uZwotdW5zaWduZWQgbG9uZyBpbnQKLXVuc2lnbmVkIGxvbmcgbG9uZyBpbnQKLXVuc2lnbmVkIHNob3J0Ci11bnNpZ25lZCBzaG9ydCBpbnQKLXZvaWQgKgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VjbGliYy91Y2xpYmMtY29uZmlnLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91Y2xpYmMvdWNsaWJjLWNvbmZpZy5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkN2I1MjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VjbGliYy91Y2xpYmMtY29uZmlnLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE0MyArMCwwIEBACi1ERVBFTkRTICs9ICJrZXJuLXRvb2xzLW5hdGl2ZSIKLWluaGVyaXQgY21sMQotIwotIyBTZXQgdGhlIEFSQ0ggZW52aXJvbm1lbnQgdmFyaWFibGUgZm9yIHVDbGliYyBjb21waWxhdGlvbi4KLSMgUmV0dXJuIHZhbHVlIG11c3QgbWF0Y2ggb25lIG9mIHRoZSBhcmNoaXRlY3R1cmVzIGtub3duIHRvIHVDbGliYzoKLSMgbGliYy9zeXNkZXBzLyovKgotIwotCi12YWxpZF9hcmNocyA9ICJcCi1hbHBoYSBcCi1hcm0gXAotYXZyMzIgXAotYmZpbiBcCi1jNnggXAotY3JpcyBcCi1lMSBcCi1mcnYgXAotaDgzMDAgXAotaHBwYSBcCi1pMzg2IFwKLWk5NjAgXAotaWE2NCBcCi1tNjhrIFwKLW1pY3JvYmxhemUgXAotbWlwcyBcCi1uaW9zIFwKLW5pb3MyIFwKLXBvd2VycGMgXAotc2ggXAotc2g2NCBcCi1zcGFyYyBcCi12ODUwIFwKLXZheCBcCi14ODZfNjQgXAoteHRlbnNhIFwKLSIKLWRlZiBtYXBfdWNsaWJjX2FyY2goYSwgZCk6Ci0gICAgIiIiUmV0dXJuIHRoZSB1Q2xpYmMgYXJjaGl0ZWN0dXJlIGZvciB0aGUgZ2l2ZW4gVEFSR0VUX0FSQ0guIiIiCi0gICAgaW1wb3J0IHJlCi0KLSAgICB2YWxpZF9hcmNocyA9IGQuZ2V0VmFyKCd2YWxpZF9hcmNocycsIFRydWUpLnNwbGl0KCkKLQotICAgIGlmIHJlLm1hdGNoKCdeKGFybXxzYTExMCkuKicsIGEpOgotICAgICAgICByZXR1cm4gJ2FybScKLSAgICBlbGlmIHJlLm1hdGNoKCdeKGkuODZ8YXRobG9uKSQnLCBhKToKLSAgICAgICAgcmV0dXJuICdpMzg2JwotICAgIGVsaWYgcmUubWF0Y2goJ15taXBzLionLCBhKToKLSAgICAgICAgcmV0dXJuICdtaXBzJwotICAgIGVsaWYgcmUubWF0Y2goJ15wYXJpc2MuKicsIGEpOgotICAgICAgICByZXR1cm4gJ2hwcGEnCi0gICAgZWxpZiByZS5tYXRjaCgnXnBwYy4qJywgYSk6Ci0gICAgICAgIHJldHVybiAncG93ZXJwYycKLSAgICBlbGlmIHJlLm1hdGNoKCdeczM5MC4qJywgYSk6Ci0gICAgICAgIHJldHVybiAnczM5MCcKLSAgICBlbGlmIHJlLm1hdGNoKCdec2guKicsIGEpOgotICAgICAgICByZXR1cm4gJ3NoJwotICAgIGVsaWYgcmUubWF0Y2goJ14oc3VufHNwYXJjKS4qJywgYSk6Ci0gICAgICAgIHJldHVybiAnc3BhcmMnCi0gICAgZWxpZiByZS5tYXRjaCgnXnh0ZW5zYS4qJywgYSk6Ci0gICAgICAgIHJldHVybiAneHRlbnNhJwotICAgIGVsaWYgYSBpbiB2YWxpZF9hcmNoczoKLSAgICAgICAgcmV0dXJuIGEKLSAgICBlbHNlOgotICAgICAgICBiYi5lcnJvcigiY2Fubm90IG1hcCAnJXMnIHRvIGEgdUNsaWJjIGFyY2hpdGVjdHVyZSIgJSBhKQotCi1leHBvcnQgVUNMSUJDX0FSQ0ggPSAiJHtAbWFwX3VjbGliY19hcmNoKGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcsIFRydWUpLCBkKX0iCi0KLWRlZiBtYXBfdWNsaWJjX2FiaShvLCBkKToKLSAgICAiIiJSZXR1cm4gdGhlIHVDbGliYyBBQkkgZm9yIHRoZSBnaXZlbiBUQVJHRVRfT1MuIiIiCi0gICAgaW1wb3J0IHJlCi0KLSAgICBhcmNoID0gZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJywgVHJ1ZSkKLSAgICBpZiBtYXBfdWNsaWJjX2FyY2goZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJywgVHJ1ZSksIGQpID09ICJhcm0iOgotICAgICAgICBpZiByZS5tYXRjaCgnLiplYWJpJCcsIG8pOgotICAgICAgICAgICAgcmV0dXJuICdBUk1fRUFCSScKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAnQVJNX09BQkknCi0gICAgIyBGSVhNRTogVGhpcyBpcyBpbmFjY3VyYXRlISBIYW5kbGUgbzMyLCBuMzIsIG42NAotICAgIGVsaWYgcmUubWF0Y2goJ15taXBzLio2NCQnLCBhcmNoKToKLSAgICAgICAgcmV0dXJuICdNSVBTX042NF9BQkknCi0gICAgZWxpZiByZS5tYXRjaCgnXm1pcHMuKicsIGFyY2gpOgotICAgICAgICByZXR1cm4gJ01JUFNfTzMyX0FCSScKLSAgICByZXR1cm4gIiIKLQotZXhwb3J0IFVDTElCQ19BQkkgPSAiJHtAbWFwX3VjbGliY19hYmkoZC5nZXRWYXIoJ1RBUkdFVF9PUycsIFRydWUpLCBkKX0iCi0KLWRlZiBtYXBfdWNsaWJjX2VuZGlhbihhLCBkKToKLSAgICAiIiJSZXR1cm4gdGhlIHVDbGliYyBlbmRpYW5lc3MgZm9yIHRoZSBnaXZlbiBUQVJHRVRfQVJDSC4iIiIKLSAgICBpbXBvcnQgcmUKLQotICAgICMgQWx3YXlzIEJFCi0gICAgaWYgcmUubWF0Y2goJ14oYXZyMzJ8ZTF8ZnJ2fChwYXJpc2N8aHBwYSl8bTY4a3xtaWNyb2JsYXplfHBvd2VycGMuKnwoc3BhcmN8c3VuKS4qKSQnLCBhKToKLSAgICAgICAgcmV0dXJuICdCSUcnCi0gICAgIyBQb3NzaWJseSBCRQotICAgIGVsaWYgcmUubWF0Y2goJ14oKChhcm18c2ExMTApLiplYil8aDgzMDAuKmVifChwYXJpc2N8aHBwYSkuKmVifG1pcHN8bWlwczY0fHNoLiplYnx4dGVuc2EuKmViKSQnLCBhKToKLSAgICAgICAgcmV0dXJuICdCSUcnCi0gICAgcmV0dXJuICdMSVRUTEUnCi0KLWV4cG9ydCBVQ0xJQkNfRU5ESUFOID0gIiR7QG1hcF91Y2xpYmNfZW5kaWFuKGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcsIFRydWUpLCBkKX0iCi0KLSMgaW50ZXJuYWwgaGVscGVyCi1kZWYgdWNsaWJjX2NmZyhmZWF0dXJlLCBmZWF0dXJlcywgdG9rZW5zLCBjbmYsIHJlbSk6Ci0gICAgaWYgdHlwZSh0b2tlbnMpID09IHR5cGUoIiIpOgotICAgICAgICB0b2tlbnMgPSBbdG9rZW5zXQotICAgIHJlbS5leHRlbmQoWycvXlsjIF0qJyArIHRva2VuICsgJ1sgPV0vZCcgZm9yIHRva2VuIGluIHRva2Vuc10pCi0gICAgaWYgdHlwZShmZWF0dXJlcykgPT0gdHlwZShbXSkgYW5kIGZlYXR1cmUgaW4gZmVhdHVyZXM6Ci0gICAgICAgIGNuZi5leHRlbmQoW3Rva2VuICsgJz15JyBmb3IgdG9rZW4gaW4gdG9rZW5zXSkKLSAgICBlbHNlOgotICAgICAgICBjbmYuZXh0ZW5kKFsnIyAnICsgdG9rZW4gKyAnIGlzIG5vdCBzZXQnIGZvciB0b2tlbiBpbiB0b2tlbnNdKQotCi0jIE1hcCBkaXN0cm8gZmVhdHVyZXMgdG8gY29uZmlnIHNldHRpbmdzCi1kZWYgZmVhdHVyZXNfdG9fdWNsaWJjX3NldHRpbmdzKGQpOgotICAgIGNuZiwgcmVtID0gKFtdLCBbXSkKLSAgICBkaXN0cm9fZmVhdHVyZXMgPSBkLmdldFZhcignRElTVFJPX0ZFQVRVUkVTJywgVHJ1ZSkuc3BsaXQoKQotICAgIHVjbGliY19jZmcoJ2lwdjQnLCAgICAgIGRpc3Ryb19mZWF0dXJlcywgJ1VDTElCQ19IQVNfSVBWNCcsIGNuZiwgcmVtKQotICAgIHVjbGliY19jZmcoJ2lwdjYnLCAgICAgIGRpc3Ryb19mZWF0dXJlcywgJ1VDTElCQ19IQVNfSVBWNicsIGNuZiwgcmVtKQotICAgIHVjbGliY19jZmcoJ2xhcmdlZmlsZScsIGRpc3Ryb19mZWF0dXJlcywgJ1VDTElCQ19IQVNfTEZTJywgY25mLCByZW0pCi0gICAgdWNsaWJjX2NmZygnbmxzJywgICAgICAgZGlzdHJvX2ZlYXR1cmVzLCAnVUNMSUJDX0hBU19MT0NBTEUnLCBjbmYsIHJlbSkKLSAgICB1Y2xpYmNfY2ZnKCd0aHVtYi1pbnRlcndvcmsnLCBkaXN0cm9fZmVhdHVyZXMsJ1VTRV9CWCcsIGNuZiwgcmVtKQotICAgIHVjbGliY19jZmcoJ3hhdHRyJywgICAgIGRpc3Ryb19mZWF0dXJlcywgJ1VDTElCQ19IQVNfWEFUVFInLCBjbmYsIHJlbSkKLSAgICB1Y2xpYmNfY2ZnKCdzc3AnLCAgICAgICBkaXN0cm9fZmVhdHVyZXMsICdVQ0xJQkNfSEFTX1NTUCcsIGNuZiwgcmVtKQotICAgIHVjbGliY19jZmcoJ3NzcCcsICAgICAgIGRpc3Ryb19mZWF0dXJlcywgJ1VDTElCQ19CVUlMRF9TU1AnLCBjbmYsIHJlbSkKLSAgICB1Y2xpYmNfY2ZnKCdhcmdwJywgICAgICAgZGlzdHJvX2ZlYXR1cmVzLCAnVUNMSUJDX0hBU19BUkdQJywgY25mLCByZW0pCi0gICAgdWNsaWJjX2NmZygnbGliYy1wb3NpeC1jbGFuZy13Y2hhcicsICBkaXN0cm9fZmVhdHVyZXMsJ1VDTElCQ19IQVNfV0NIQVInLCBjbmYsIHJlbSkKLSAgICByZXR1cm4gIlxuIi5qb2luKGNuZiksICJcbiIuam9pbihyZW0pCi0jIFgsIFkgPSAke0BmZWF0dXJlc190b191Y2xpYmNfc2V0dGluZ3MoZCl9Ci0jIHVuZm9ydHVuYXRlbHkgZG9lc24ndCBzZWVtIHRvIHdvcmsgd2l0aCBiaXRiYWtlLCB3b3JrYXJvdW5kOgotZGVmIGZlYXR1cmVzX3RvX3VjbGliY19jb25mKGQpOgotICAgIGNuZiwgcmVtID0gZmVhdHVyZXNfdG9fdWNsaWJjX3NldHRpbmdzKGQpCi0gICAgcmV0dXJuIGNuZgotZGVmIGZlYXR1cmVzX3RvX3VjbGliY19kZWwoZCk6Ci0gICAgY25mLCByZW0gPSBmZWF0dXJlc190b191Y2xpYmNfc2V0dGluZ3MoZCkKLSAgICByZXR1cm4gcmVtCi0KLSMgcmV0dXJucyBhbGwgdGhlIGVsZW1lbnRzIGZyb20gdGhlIHNyYyB1cmkgdGhhdCBhcmUgLmNmZyBmaWxlcwotZGVmIGZpbmRfY2ZncyhkKToKLSAgICBzb3VyY2VzPXNyY19wYXRjaGVzKGQsIFRydWUpCi0gICAgc291cmNlc19saXN0PVtdCi0gICAgZm9yIHMgaW4gc291cmNlczoKLSAgICAgICAgaWYgcy5lbmRzd2l0aCgnLmNmZycpOgotICAgICAgICAgICAgc291cmNlc19saXN0LmFwcGVuZChzKQotCi0gICAgcmV0dXJuIHNvdXJjZXNfbGlzdApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VjbGliYy91Y2xpYmMtZ2l0LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91Y2xpYmMvdWNsaWJjLWdpdC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1NmZhN2MuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VjbGliYy91Y2xpYmMtZ2l0LmluYworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVNSQ1JFViA9ICIwMDNiMjY2Y2JlYjM3MGE4ZWFlOTFkYzI1NjE5N2YwMDc5OGM2ZjkzIgotCi1QViA9ICIxLjAuMTIrZ2l0JHtTUkNQVn0iCi0KLUZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9L3VjbGliYy1naXQ6IgotCi1TUkNfVVJJID0gImdpdDovL3VjbGliYy1uZy5vcmcvZ2l0L3VjbGliYy1uZyBcCi0gICAgICAgIGZpbGU6Ly8wMDAxLURpc2FibGUtbHJvdW50X3Rlcy1mdW5jdGlvbi5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly91Q2xpYmMubWFjaGluZSBcCi0gICAgICAgIGZpbGU6Ly91Q2xpYmMuZGlzdHJvIFwKLSAgICAgICAgZmlsZTovL29ic3RhY2suY2ZnIFwKLSAgICAgICAgZmlsZTovL2xvY2FsZS5jZmcgXAotIgotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrXC5cZCsoXC5cZCspKikiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91Y2xpYmMvdWNsaWJjLWdpdC8wMDAxLURpc2FibGUtbHJvdW50X3Rlcy1mdW5jdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91Y2xpYmMvdWNsaWJjLWdpdC8wMDAxLURpc2FibGUtbHJvdW50X3Rlcy1mdW5jdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTA2ZjE0Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWNsaWJjL3VjbGliYy1naXQvMDAwMS1EaXNhYmxlLWxyb3VudF90ZXMtZnVuY3Rpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1Gcm9tIDE0Yjg2NWIzNDM4ZDBkZjI5YjQ5NjkxNDg2NzhkOGZhODk0M2UxZWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU3VuLCAxNiBBdWcgMjAxNSAyMDo0OTozMyAtMDcwMAotU3ViamVjdDogW1BBVENIIDEvN10gRGlzYWJsZSBscm91bnRfdGVzKCkgZnVuY3Rpb24KLQotSXRzIG5vdCB1c2VkIGFueXdheSwgYXZvaWRzIHNvbWUgc3RyaWN0IGNvbXBpbGVyIHdhcm5pbmdzCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gdGVzdC9tYXRoL2xpYm0tdGVzdC5pbmMgfCAyIC0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0L21hdGgvbGlibS10ZXN0LmluYyBiL3Rlc3QvbWF0aC9saWJtLXRlc3QuaW5jCi1pbmRleCBmNTBiNDhiLi42ZDcwYTk1IDEwMDY0NAotLS0tIGEvdGVzdC9tYXRoL2xpYm0tdGVzdC5pbmMKLSsrKyBiL3Rlc3QvbWF0aC9saWJtLXRlc3QuaW5jCi1AQCAtMzQ3MCw3ICszNDcwLDYgQEAgbG9nYl90ZXN0ICh2b2lkKQotIH0KLSAKLSAKLS0jaWYgMAotIHN0YXRpYyB2b2lkCi0gbHJvdW5kX3Rlc3QgKHZvaWQpCi0gewotQEAgLTM2MDUsNyArMzYwNCw2IEBAIGxscm91bmRfdGVzdCAodm9pZCkKLSAKLSAgIEVORCAobGxyb3VuZCk7Ci0gfQotLSNlbmRpZgotIAotIHN0YXRpYyB2b2lkCi0gbW9kZl90ZXN0ICh2b2lkKQotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWNsaWJjL3VjbGliYy1naXQvbG9jYWxlLmNmZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91Y2xpYmMvdWNsaWJjLWdpdC9sb2NhbGUuY2ZnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzY2NDM1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91Y2xpYmMvdWNsaWJjLWdpdC9sb2NhbGUuY2ZnCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1VQ0xJQkNfSEFTX0xPQ0FMRT15Ci1VQ0xJQkNfSEFTX1hMT0NBTEU9eQotVUNMSUJDX0JVSUxEX01JTklNQUxfTE9DQUxFPXkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91Y2xpYmMvdWNsaWJjLWdpdC9vYnN0YWNrLmNmZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91Y2xpYmMvdWNsaWJjLWdpdC9vYnN0YWNrLmNmZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzZiZjlkNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWNsaWJjL3VjbGliYy1naXQvb2JzdGFjay5jZmcKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1VQ0xJQkNfSEFTX09CU1RBQ0s9eQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VjbGliYy91Y2xpYmMtZ2l0L3VDbGliYy5kaXN0cm8gYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWNsaWJjL3VjbGliYy1naXQvdUNsaWJjLmRpc3RybwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzc4NWNlOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWNsaWJjL3VjbGliYy1naXQvdUNsaWJjLmRpc3RybworKysgL2Rldi9udWxsCkBAIC0xLDE5NSArMCwwIEBACi0jCi0jIEdlbmVyYWwgTGlicmFyeSBTZXR0aW5ncwotIwotIyBIQVZFX05PX1BJQyBpcyBub3Qgc2V0Ci0jIERPUElDIGlzIG5vdCBzZXQKLSMgSEFWRV9OT19TSEFSRUQgaXMgbm90IHNldAotIyBBUkNIX0hBU19OT19MRFNPIGlzIG5vdCBzZXQKLUhBVkVfU0hBUkVEPXkKLSMgRk9SQ0VfU0hBUkVBQkxFX1RFWFRfU0VHTUVOVFMgaXMgbm90IHNldAotTERTT19MRERfU1VQUE9SVD15Ci1MRFNPX0NBQ0hFX1NVUFBPUlQ9eQotIyBMRFNPX1BSRUxPQURfRklMRV9TVVBQT1JUIGlzIG5vdCBzZXQKLUxEU09fQkFTRV9GSUxFTkFNRT0ibGQuc28iCi0jIFVDTElCQ19TVEFUSUNfTERDT05GSUcgaXMgbm90IHNldAotTERTT19SVU5QQVRIPXkKLVVDTElCQ19DVE9SX0RUT1I9eQotTERTT19HTlVfSEFTSF9TVVBQT1JUPXkKLSMgSEFTX05PX1RIUkVBRFMgaXMgbm90IHNldAotVUNMSUJDX0hBU19USFJFQURTPXkKLVVDTElCQ19IQVNfVEhSRUFEU19OQVRJVkU9eQotUFRIUkVBRFNfREVCVUdfU1VQUE9SVD15Ci0jIExJTlVYVEhSRUFEU19PTEQgaXMgbm90IHNldAotVUNMSUJDX0hBU19MRlM9eQotIyBNQUxMT0MgaXMgbm90IHNldAotIyBNQUxMT0NfU0lNUExFIGlzIG5vdCBzZXQKLU1BTExPQ19TVEFOREFSRD15Ci1NQUxMT0NfR0xJQkNfQ09NUEFUPXkKLVVDTElCQ19EWU5BTUlDX0FURVhJVD15Ci1DT01QQVRfQVRFWElUPXkKLVVDTElCQ19TVVNWM19MRUdBQ1k9eQotVUNMSUJDX1NVU1YzX0xFR0FDWV9NQUNST1M9eQotVUNMSUJDX1NVU1Y0X0xFR0FDWT15Ci1VQ0xJQkNfSEFTX1NIQURPVz15Ci1VQ0xJQkNfSEFTX1BST0dSQU1fSU5WT0NBVElPTl9OQU1FPXkKLVVDTElCQ19IQVNfX19QUk9HTkFNRT15Ci1VTklYOThQVFlfT05MWT15Ci1BU1NVTUVfREVWUFRTPXkKLVVDTElCQ19IQVNfTElCVVRJTD15Ci1VQ0xJQkNfSEFTX1RNX0VYVEVOU0lPTlM9eQotVUNMSUJDX0hBU19UWl9DQUNISU5HPXkKLVVDTElCQ19IQVNfVFpfRklMRT15Ci1VQ0xJQkNfSEFTX1RaX0ZJTEVfUkVBRF9NQU5ZPXkKLVVDTElCQ19UWl9GSUxFX1BBVEg9Ii9ldGMvVFoiCi0KLSMKLSMgQWR2YW5jZWQgTGlicmFyeSBTZXR0aW5ncwotIwotVUNMSUJDX1BXRF9CVUZGRVJfU0laRT0yNTYKLVVDTElCQ19HUlBfQlVGRkVSX1NJWkU9MjU2Ci0KLSMKLSMgTmV0d29ya2luZyBTdXBwb3J0Ci0jCi1VQ0xJQkNfSEFTX0lQVjY9eQotVUNMSUJDX0hBU19SUEM9eQotVUNMSUJDX0hBU19GVUxMX1JQQz15Ci1VQ0xJQkNfSEFTX1JFRU5UUkFOVF9SUEM9eQotVUNMSUJDX1VTRV9ORVRMSU5LPXkKLVVDTElCQ19TVVBQT1JUX0FJX0FERFJDT05GSUc9eQotCi1VQ0xJQkNfSEFTX0JTRF9SRVNfQ0xPU0U9eQotVUNMSUJDX0hBU19MSUJSRVNPTFZfU1RVQj15Ci1VQ0xJQkNfSEFTX0xJQk5TTF9TVFVCPXkKLQotIwotIyBTdHJpbmcgYW5kIFN0ZGlvIFN1cHBvcnQKLSMKLVVDTElCQ19IQVNfU1RSSU5HX0dFTkVSSUNfT1BUPXkKLVVDTElCQ19IQVNfU1RSSU5HX0FSQ0hfT1BUPXkKLVVDTElCQ19IQVNfQ1RZUEVfVEFCTEVTPXkKLVVDTElCQ19IQVNfQ1RZUEVfU0lHTkVEPXkKLSMgVUNMSUJDX0hBU19DVFlQRV9VTlNBRkUgaXMgbm90IHNldAotVUNMSUJDX0hBU19DVFlQRV9DSEVDS0VEPXkKLSMgVUNMSUJDX0hBU19DVFlQRV9FTkZPUkNFRCBpcyBub3Qgc2V0Ci1VQ0xJQkNfSEFTX1dDSEFSPXkKLSMgVUNMSUJDX0hBU19MT0NBTEUgaXMgbm90IHNldAotVUNMSUJDX0hBU19IRVhBREVDSU1BTF9GTE9BVFM9eQotVUNMSUJDX0hBU19HTElCQ19DVVNUT01fUFJJTlRGPXkKLVVDTElCQ19QUklOVEZfU0NBTkZfUE9TSVRJT05BTF9BUkdTPTkKLVVDTElCQ19IQVNfU0NBTkZfR0xJQkNfQV9GTEFHPXkKLSMgVUNMSUJDX0hBU19TVERJT19CVUZTSVpfTk9ORSBpcyBub3Qgc2V0Ci0jIFVDTElCQ19IQVNfU1RESU9fQlVGU0laXzI1NiBpcyBub3Qgc2V0Ci0jIFVDTElCQ19IQVNfU1RESU9fQlVGU0laXzUxMiBpcyBub3Qgc2V0Ci0jIFVDTElCQ19IQVNfU1RESU9fQlVGU0laXzEwMjQgaXMgbm90IHNldAotIyBVQ0xJQkNfSEFTX1NURElPX0JVRlNJWl8yMDQ4IGlzIG5vdCBzZXQKLVVDTElCQ19IQVNfU1RESU9fQlVGU0laXzQwOTY9eQotIyBVQ0xJQkNfSEFTX1NURElPX0JVRlNJWl84MTkyIGlzIG5vdCBzZXQKLVVDTElCQ19IQVNfU1RESU9fQlVJTFRJTl9CVUZGRVJfTk9ORT15Ci0jIFVDTElCQ19IQVNfU1RESU9fQlVJTFRJTl9CVUZGRVJfNCBpcyBub3Qgc2V0Ci0jIFVDTElCQ19IQVNfU1RESU9fQlVJTFRJTl9CVUZGRVJfOCBpcyBub3Qgc2V0Ci0jIFVDTElCQ19IQVNfU1RESU9fU0hVVERPV05fT05fQUJPUlQgaXMgbm90IHNldAotVUNMSUJDX0hBU19TVERJT19HRVRDX01BQ1JPPXkKLVVDTElCQ19IQVNfU1RESU9fUFVUQ19NQUNSTz15Ci1VQ0xJQkNfSEFTX1NURElPX0FVVE9fUldfVFJBTlNJVElPTj15Ci0jIFVDTElCQ19IQVNfRk9QRU5fTEFSR0VGSUxFX01PREUgaXMgbm90IHNldAotVUNMSUJDX0hBU19GT1BFTl9FWENMVVNJVkVfTU9ERT15Ci1VQ0xJQkNfSEFTX0dMSUJDX0NVU1RPTV9TVFJFQU1TPXkKLVVDTElCQ19IQVNfUFJJTlRGX01fU1BFQz15Ci1VQ0xJQkNfSEFTX0VSUk5PX01FU1NBR0VTPXkKLSMgVUNMSUJDX0hBU19TWVNfRVJSTElTVCBpcyBub3Qgc2V0Ci1VQ0xJQkNfSEFTX1NJR05VTV9NRVNTQUdFUz15Ci0jIFVDTElCQ19IQVNfU1lTX1NJR0xJU1QgaXMgbm90IHNldAotVUNMSUJDX0hBU19HTlVfR0VUT1BUPXkKLVVDTElCQ19IQVNfR05VX0dFVFNVQk9QVD15Ci0KLSMKLSMgQmlnIGFuZCBUYWxsCi0jCi1VQ0xJQkNfSEFTX1JFR0VYPXkKLSMgVUNMSUJDX0hBU19SRUdFWF9PTEQgaXMgbm90IHNldAotVUNMSUJDX0hBU19GTk1BVENIPXkKLSMgVUNMSUJDX0hBU19GTk1BVENIX09MRCBpcyBub3Qgc2V0Ci1VQ0xJQkNfSEFTX1dPUkRFWFA9eQotVUNMSUJDX0hBU19ORlRXPXkKLVVDTElCQ19IQVNfRlRXPXkKLVVDTElCQ19IQVNfRlRTPXkKLVVDTElCQ19IQVNfR0xPQj15Ci1VQ0xJQkNfSEFTX0dOVV9HTE9CPXkKLQotIwotIyBMaWJyYXJ5IEluc3RhbGxhdGlvbiBPcHRpb25zCi0jCi1TSEFSRURfTElCX0xPQURFUl9QUkVGSVg9Ii9saWIiCi1SVU5USU1FX1BSRUZJWD0iLyIKLURFVkVMX1BSRUZJWD0iLy91c3IiCi1NVUxUSUxJQl9ESVI9ImxpYiIKLQotIwotIyBTZWN1cml0eSBvcHRpb25zCi0jCi0jIFVDTElCQ19CVUlMRF9QSUUgaXMgbm90IHNldAotIyBVQ0xJQkNfSEFTX0FSQzRSQU5ET00gaXMgbm90IHNldAotIyBIQVZFX05PX1NTUCBpcyBub3Qgc2V0Ci0jIFVDTElCQ19IQVNfU1NQIGlzIG5vdCBzZXQKLVVDTElCQ19CVUlMRF9SRUxSTz15Ci1VQ0xJQkNfQlVJTERfTk9XPXkKLVVDTElCQ19CVUlMRF9OT0VYRUNTVEFDSz15Ci0KLSMKLSMgdUNsaWJjIGRldmVsb3BtZW50L2RlYnVnZ2luZyBvcHRpb25zCi0jCi1DUk9TU19DT01QSUxFUl9QUkVGSVg9IiIKLVVDTElCQ19FWFRSQV9DRkxBR1M9IiIKLSMgRE9ERUJVRyBpcyBub3Qgc2V0Ci0jIERPREVCVUdfUFQgaXMgbm90IHNldAotIyBET1NUUklQIGlzIG5vdCBzZXQKLSMgRE9BU1NFUlRTIGlzIG5vdCBzZXQKLSMgU1VQUE9SVF9MRF9ERUJVRyBpcyBub3Qgc2V0Ci0jIFNVUFBPUlRfTERfREVCVUdfRUFSTFkgaXMgbm90IHNldAotIyBVQ0xJQkNfTUFMTE9DX0RFQlVHR0lORyBpcyBub3Qgc2V0Ci1VQ0xJQkNfSEFTX0JBQ0tUUkFDRT15Ci1XQVJOSU5HUz0iLVdhbGwiCi0jIEVYVFJBX1dBUk5JTkdTIGlzIG5vdCBzZXQKLSMgRE9NVUxUSSBpcyBub3Qgc2V0Ci0jIFVDTElCQ19NSk4zX09OTFkgaXMgbm90IHNldAotCi0jIG1hdGggc3R1ZmYgZm9yIHBlcmwKLURPX0M5OV9NQVRIPXkKLVVDTElCQ19IQVNfTE9OR19ET1VCTEVfTUFUSD15Ci1VQ0xJQkNfSEFTX0ZFTlY9eQotVUNMSUJDX0xJTlVYX01PRFVMRV8yNj15Ci0jIFVDTElCQ19MSU5VWF9NT0RVTEVfMjQgaXMgbm90IHNldAotVUNMSUJDX0xJTlVYX1NQRUNJRklDPXkKLVVDTElCQ19IQVNfUkVBTFRJTUU9eQotVUNMSUJDX0hBU19BRFZBTkNFRF9SRUFMVElNRT15Ci1VQ0xJQkNfSEFTX05FVFdPUktfU1VQUE9SVD15Ci1VQ0xJQkNfSEFTX1NPQ0tFVD15Ci1VQ0xJQkNfSEFTX0JTRF9FUlI9eQotVUNMSUJDX0hBU19TWVNMT0c9eQotVUNMSUJDX0hBU19DUllQVD15Ci1VQ0xJQkNfSEFTX0NSWVBUX0lNUEw9eQotVUNMSUJDX0hBU19HTlVfRVJST1I9eQotVUNMSUJDX0hBU19QVFk9eQotVUNMSUJDX0JTRF9TUEVDSUZJQz15Ci1VQ0xJQkNfSEFTX0VQT0xMPXkKLVVDTElCQ19IQVNfRkxPQVRTPXkKLQotIyBUaGUgYmVsb3cgb3B0aW9uIGlzIG5lZWRlZCBmb3IgQVJNIHNpbmNlIGRlcGVuZGluZwotIyB1cG9uZyB3aGF0IGludHJ1Y3Rpb24gc2V0IGlzIGNob3NlbiB0aGlzIHdpbGwgYmUKLSMgZW5hYmxlZC4gQXMgc3VjaCBpdCBpcyBoYXJtbGVzcyBhbmQgd2lsbCBiZSBwdW50ZWQKLSMgYnkgbWVudWNvbmZpZyBmb3Igb3RoZXIgYXJjaGVzLgotCi0jIENPTVBJTEVfSU5fVEhVTUJfTU9ERSBpcyBub3Qgc2V0Ci0KLSMgbmVlZGVkIGJ5IHNoYWRvdwotVUNMSUJDX0hBU19VVE1QPXkKLSMgbmVlZGVkIGJ5IHN5c3RlbWQKLVVDTElCQ19IQVNfVVRNUFg9eQotVUNMSUJDX0xJTlVYX01PRFVMRV8yNj15Ci1VQ0xJQkNfSEFTX1JFU09MVkVSX1NVUFBPUlQ9eQotIyBuZWVkZWQgZm9yIExUUAotVUNMSUJDX1NVU1Y0X0xFR0FDWT15Ci1VQ0xJQkNfSEFTX09CU09MRVRFX0JTRF9TSUdOQUw9eQotRE9fWFNJX01BVEg9eQotVUNMSUJDX1NWNF9ERVBSRUNBVEVEPXkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91Y2xpYmMvdWNsaWJjLWdpdC91Q2xpYmMubWFjaGluZSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91Y2xpYmMvdWNsaWJjLWdpdC91Q2xpYmMubWFjaGluZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTk1ZjQ0NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWNsaWJjL3VjbGliYy1naXQvdUNsaWJjLm1hY2hpbmUKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi0jCi0jIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG1ha2UgY29uZmlnOiBkb24ndCBlZGl0Ci0jIFZlcnNpb246IDAuOS4zMi1naXQKLSMgTW9uIEp1bCAxOSAwMTozNDoyOSAyMDEwCi0jCi0jCi0jIFVzaW5nIEVMRiBmaWxlIGZvcm1hdAotIwotRk9SQ0VfT1BUSU9OU19GT1JfQVJDSD15Ci1BUkNIX0hBU19NTVU9eQotQVJDSF9VU0VfTU1VPXkKLUtFUk5FTF9IRUFERVJTPSIvdXNyL2luY2x1ZGUiCi1IQVZFX0RPVF9DT05GSUc9eQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWNsaWJjL3VjbGliYy1pbml0aWFsX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91Y2xpYmMvdWNsaWJjLWluaXRpYWxfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTM3Y2NiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91Y2xpYmMvdWNsaWJjLWluaXRpYWxfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotU0VDVElPTiA9ICJiYXNlIgotcmVxdWlyZSB1Y2xpYmMuaW5jCi1yZXF1aXJlIHVjbGliYy1naXQuaW5jCi0KLURFUEVORFMgPSAibGludXgtbGliYy1oZWFkZXJzIG5jdXJzZXMtbmF0aXZlIHZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdjYy1pbml0aWFsIGxpYmdjYy1pbml0aWFsIGtlcm4tdG9vbHMtbmF0aXZlIgotUFJPVklERVMgPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9bGliYy1pbml0aWFsIgotCi1QQUNLQUdFUyA9ICIiCi1QQUNLQUdFU19EWU5BTUlDID0gIiIKLQotU1RBR0lOR0NDID0gImdjYy1jcm9zcy1pbml0aWFsLSR7VEFSR0VUX0FSQ0h9IgotU1RBR0lOR0NDX2NsYXNzLW5hdGl2ZXNkayA9ICJnY2MtY3Jvc3NzZGstaW5pdGlhbC0ke1RBUkdFVF9BUkNIfSIKLQotZG9faW5zdGFsbCgpIHsKLQkjIEluc3RhbGwgaW5pdGlhbCBoZWFkZXJzIGludG8gdGhlIGNyb3NzIGRpcgotCW1ha2UgUFJFRklYPSR7RH0gREVWRUxfUFJFRklYPSR7cHJlZml4fS8gUlVOVElNRV9QUkVGSVg9LyBcCi0JCWluc3RhbGxfaGVhZGVycyBpbnN0YWxsX3N0YXJ0ZmlsZXMKLQotICAgICAgICAjIGFkZCBsaW5rcyB0byBsaW51eC1saWJjLWhlYWRlcnM6IGZpbmFsIHVjbGliYyBidWlsZCBuZWVkIHRoaXMuCi0gICAgICAgIGZvciB0IGluIGxpbnV4IGFzbSBhc20tZ2VuZXJpYzsgZG8KLSAgICAgICAgICAgICAgICBpZiBbIC1kICR7RH0ke2luY2x1ZGVkaXJ9LyR0IF07IHRoZW4KLSAgICAgICAgICAgICAgICAgICAgcm0gLXJmICR7RH0ke2luY2x1ZGVkaXJ9LyR0Ci0gICAgICAgICAgICAgICAgZmkKLSAgICAgICAgICAgICAgICBsbiAtc2YgJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtpbmNsdWRlZGlyfS8kdCAke0R9JHtpbmNsdWRlZGlyfS8KLSAgICAgICAgZG9uZQotCi19Ci1kb19jb21waWxlKCkgewotCToKLX0KLQotZG9fc2l0ZWNvbmZpZyAoKSB7Ci0gICAgICAgIDoKLX0KLQotZG9fcG9wdWxhdGVfc3lzcm9vdFtzc3RhdGUtb3V0cHV0ZGlyc10gPSAiJHtTVEFHSU5HX0RJUl9UQ0JPT1RTVFJBUH0vIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VjbGliYy91Y2xpYmMtcGFja2FnZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWNsaWJjL3VjbGliYy1wYWNrYWdlLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDM5Zjg0ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWNsaWJjL3VjbGliYy1wYWNrYWdlLmluYworKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLSMgRW5zdXJlIHRoZSB1Y2xpYmMtZGV2IHBhY2thZ2UgaXMgcHJvY2Vzc2VkIGJlZm9yZSB1Y2xpYmMtc3RhdGljZGV2IHRvIGFsbG93Ci0jICpfbm9uc2hhcmVkLmEgbGlicmFyaWVzIHRvIGJlIHBhY2thZ2VkIGluIHRoZSB1Y2xpYmMtZGV2IHBhY2thZ2UuCi1QQUNLQUdFUyA9ICJsZGQgdWNsaWJjLXV0aWxzIHVjbGliYy1nY29udiB1Y2xpYmMtdGhyZWFkLWRiIHVjbGliYy1hcmdwIHVjbGliYy1iYWNrdHJhY2UgdWNsaWJjLWxpYmNyeXB0IHVjbGliYy1saWJpbnRsIHVjbGliYy1saWJuc2wgdWNsaWJjLWxpYnJlc29sdiB1Y2xpYmMtbGlibSB1Y2xpYmMtbGliZGwgdWNsaWJjLWxpYnV0aWwgdWNsaWJjLWxpYnB0aHJlYWQgdWNsaWJjLWxpYnJ0ICR7UE59LWRiZyAke1BOfS1kZXYgJHtQTn0tc3RhdGljZGV2ICR7UE59LWRvYyAke1BOfSIKLQotRklMRVNfdWNsaWJjLWxpYmNyeXB0ID0gIiR7YmFzZV9saWJkaXJ9L2xpYmNyeXB0Ki5zby4qICR7YmFzZV9saWJkaXJ9L2xpYmNyeXB0LSouc28iCi1GSUxFU191Y2xpYmMtbGliaW50bCA9ICIke2Jhc2VfbGliZGlyfS9saWJpbnRsKi5zby4qICR7YmFzZV9saWJkaXJ9L2xpYmludGwtKi5zbyIKLUZJTEVTX3VjbGliYy1saWJuc2wgPSAiJHtiYXNlX2xpYmRpcn0vbGlibnNsKi5zby4qICR7YmFzZV9saWJkaXJ9L2xpYm5zbC0qLnNvIgotRklMRVNfdWNsaWJjLWxpYnJlc29sdiA9ICIke2Jhc2VfbGliZGlyfS9saWJyZXNvbHYqLnNvLiogJHtiYXNlX2xpYmRpcn0vbGlicmVzb2x2LSouc28iCi1GSUxFU191Y2xpYmMtbGlibSA9ICIke2Jhc2VfbGliZGlyfS9saWJtKi5zby4qICR7YmFzZV9saWJkaXJ9L2xpYm0tKi5zbyIKLUZJTEVTX3VjbGliYy1saWJkbCA9ICIke2Jhc2VfbGliZGlyfS9saWJkbCouc28uKiAke2Jhc2VfbGliZGlyfS9saWJkbC0qLnNvIgotRklMRVNfdWNsaWJjLWxpYnV0aWwgPSAiJHtiYXNlX2xpYmRpcn0vbGlidXRpbCouc28uKiAke2Jhc2VfbGliZGlyfS9saWJ1dGlsLSouc28iCi1GSUxFU191Y2xpYmMtbGlicHRocmVhZCA9ICIke2Jhc2VfbGliZGlyfS9saWJwdGhyZWFkKi5zby4qICR7YmFzZV9saWJkaXJ9L2xpYnB0aHJlYWQtKi5zbyIKLUZJTEVTX3VjbGliYy1saWJydCA9ICIke2Jhc2VfbGliZGlyfS9saWJydCouc28uKiAke2Jhc2VfbGliZGlyfS9saWJydC0qLnNvIgotCi1GSUxFU19sZGQgPSAiJHtiaW5kaXJ9L2xkZCIKLUZJTEVTX3VjbGliYy11dGlscyA9ICIke2JpbmRpcn0gJHtzYmluZGlyfSIKLUZJTEVTX3VjbGliYy1nY29udiA9ICIke2xpYmRpcn0vZ2NvbnYiCi1GSUxFU191Y2xpYmMtdGhyZWFkLWRiID0gIiR7YmFzZV9saWJkaXJ9L2xpYnRocmVhZF9kYioiCi1GSUxFU191Y2xpYmMtYXJncCA9ICIke2Jhc2VfbGliZGlyfS9saWJ1YXJncC0qLnNvICR7YmFzZV9saWJkaXJ9L2xpYnVhcmdwKi5zby4qIgotRklMRVNfdWNsaWJjLWJhY2t0cmFjZSA9ICIke2Jhc2VfbGliZGlyfS9saWJ1YmFja3RyYWNlLSouc28gJHtiYXNlX2xpYmRpcn0vbGlidWJhY2t0cmFjZSouc28uKiIKLQotIyBUaGUgbGFzdCBsaW5lIChnZGIgYW5kIGxpYjEpIGlzIGZvciB1Y2xpbnV4LXVjbGliYyBidWlsZHMKLXVjbGliY19iYXNlbGlicyA9ICIke2Jhc2VfbGliZGlyfS9sZCouc28uKiAke2Jhc2VfbGliZGlyfS9sZCouc28gXAotICAgICAgICAgICAgICAgICAgICR7YmFzZV9saWJkaXJ9L2xpYmMqLnNvLiogJHtiYXNlX2xpYmRpcn0vbGlidUNsaWJjLSouc28gXAotICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJjLmdkYiAke2xpYmRpcn0vbGliYyAke2Jhc2VfbGliZGlyfS9saWIxLnNvIFwKLSAgICAgICAgICAgICAgICAgICIKLUZJTEVTX1NPTElCU0RFViA9ICIke2xpYmRpcn0vbGliKiR7U09MSUJTREVWfSIKLUZJTEVTXyR7UE59LWRldiArPSAiXAotICAgICAgICAke2xpYmRpcn0vbGliKi5zbyBcCi0gICAgICAgICR7bGliZGlyfS8qX25vbnNoYXJlZC5hIFwKLSAgICAgICAgJHtsaWJkaXJ9L1tTXSpjcnRbMWluXS5vIFwKLSAgICAgICAgJHtsaWJkaXJ9L2NydHJlbG9jKi5vIFwKLSAgICAgICAgJHtpbmNsdWRlZGlyfS8qLmggJHtpbmNsdWRlZGlyfS8qLyouaCBcCi0gICAgICAgIgotRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfSAke3VjbGliY19iYXNlbGlic30gL3NiaW4vbGRjb25maWcgXAotICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfSAke2RhdGFkaXJ9L3pvbmVpbmZvICR7bGliZGlyfS9sb2NhbGUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWNsaWJjL3VjbGliYy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWNsaWJjL3VjbGliYy5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkNDIyODQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VjbGliYy91Y2xpYmMuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTY4ICswLDAgQEAKLVNVTU1BUlkgPSAiQyBsaWJyYXJ5IGZvciBlbWJlZGRlZCBzeXN0ZW1zIgotREVTQ1JJUFRJT04gPSAiVGhlIG5hbWUgdUNsaWJjIGlzIGFuIGFiYnJldmlhdGlvbiBmb3IgJ3RoZSBcCi1taWNyb2NvbnRyb2xsZXIgQyBsaWJyYXJ5Jy4gRm9yIHNpbXBsaWNpdHksIHVDbGliYyBpcyBwcm9ub3VuY2VkIFwKLSd5ZXctc2VlLWxpYi1zZWUnLiAgVGhlIGdvYWwgb2YgdUNsaWJjIGlzIHRvIHByb3ZpZGUgYXMgbXVjaCBcCi1mdW5jdGlvbmFsaXR5IGFzIHBvc3NpYmxlIGluIGEgc21hbGwgYW1vdW50IG9mIHNwYWNlLCBhbmQgaXQgaXMgaW50ZW5kZWQgXAotcHJpbWFyaWx5IGZvciBlbWJlZGRlZCB1c2UuIEl0IGlzIGFsc28gaGlnaGx5IGNvbmZpZ3VyYWJsZSBpbiBzdXBwb3J0ZWQgXAotZmVhdHVyZXMsIGF0IHRoZSBjb3N0IG9mIEFCSSBkaWZmZXJlbmNlcyBmb3IgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb25zLiBcCi11Q2xpYmMgaGFzIGJlZW4gZGVzaWduZWQgZnJvbSB0aGUgZ3JvdW5kIHVwIHRvIGJlIGEgQyBsaWJyYXJ5IGZvciBcCi1lbWJlZGRlZCBMaW51eC4gIEl0IGlzIE5PVCBjb21wYXRpYmxlIHdpdGggYmluYXJpZXMgbGlua2VkIGFnYWluc3QgZ2xpYmMuIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTElCO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyBcCi0JCSAgICBmaWxlOi8vQ09QWUlORy5MSUIuYm9pbGVycGxhdGU7bWQ1PWFhZGRlYWRjZGRlYjkxODI5N2UwZTRhZmM1MmNlNDZmIFwKLWZpbGU6Ly8ke1N9L3Rlc3QvcmVnZXgvdGVzdHJlZ2V4LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0zMTttZDU9MjM0ZWZiMjI3ZDBhNDA2NzdmODk1ZTRhMWUyNmU5NjAiCi0KLXJlcXVpcmUgdWNsaWJjLWNvbmZpZy5pbmMKLQotUEFUSF9wcmVwZW5kID0gIiR7U1RBR0lOR19CSU5ESVJfVE9PTENIQUlOfS4ke1NUQUdJTkdDQ306IgotVE9PTENIQUlOX09QVElPTlMgPSAiIC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RDQk9PVFNUUkFQfSIKLQotIyBzaXRlY29uZmlnLmJiY2xhc3MgcnVucyBjb25maWd1cmUgd2hpY2ggbmVlZHMgYSB3b3JraW5nIGNvbXBpbGVyCi0jIEZvciB0aGUgY29tcGlsZXIgdG8gd29yayB3ZSBuZWVkIGEgd29ya2luZyBsaWJjIHlldCBsaWJjIGlzbid0Ci0jIGluIHRoZSBzeXNyb290cyBkaXJlY3RvcnkgYXQgdGhpcyBwb2ludC4gVGhpcyBtZWFucyB0aGUgbGliYy5zbwotIyBsaW5rZXIgc2NyaXB0IHdvbid0IHdvcmsgYXMgdGhlIC0tc3lzcm9vdCBzZXR0aW5nIGlzbid0IGNvcnJlY3QuCi0jIEhlcmUgd2UgY3JlYXRlIGEgaGFja2VkIHVwIGxpYmMgbGlua2VyIHNjcmlwdCBhbmQgcGFzcyBpbiB0aGUgcmlnaHQKLSMgZmxhZ3MgdG8gbGV0IGNvbmZpZ3VyZSB3b3JrLiBVZ2x5LgotRVhUUkFTSVRFQ09ORklHID0gIkNGTEFHUz0nJHtDRkxBR1N9IC1XbCwtTCR7V09SS0RJUn0vc2l0ZV9jb25maWdfbGliYyAtTCR7V09SS0RJUn0vc2l0ZV9jb25maWdfbGliYyAtTCR7U1lTUk9PVF9ERVNURElSfSR7bGliZGlyfSAtTCR7U1lTUk9PVF9ERVNURElSfSR7YmFzZV9saWJkaXJ9IC1XbCwtTCR7U1lTUk9PVF9ERVNURElSfSR7bGliZGlyfSAtV2wsLUwke1NZU1JPT1RfREVTVERJUn0ke2Jhc2VfbGliZGlyfSciCi1zaXRlY29uZmlnX2RvX3NpdGVjb25maWdfZ2VuY2FjaGVfcHJlcGVuZCA9ICIgXAotbWtkaXIgLXAgJHtXT1JLRElSfS9zaXRlX2NvbmZpZ19saWJjOyBcCi1jcCAke1NZU1JPT1RfREVTVERJUn0ke2xpYmRpcn0vbGliYy5zbyAke1dPUktESVJ9L3NpdGVfY29uZmlnX2xpYmM7IFwKLXNlZCAtaSAtZSAncyMgJHtiYXNlX2xpYmRpcn0jICR7U1lTUk9PVF9ERVNURElSfSR7YmFzZV9saWJkaXJ9I2cnIC1lICdzIyAke2xpYmRpcn0jICR7U1lTUk9PVF9ERVNURElSfSR7bGliZGlyfSNnJyAke1dPUktESVJ9L3NpdGVfY29uZmlnX2xpYmMvbGliYy5zbzsgXAotIgotCi0jIEZvciBub3csIHdlIHdpbGwgc2tpcCBidWlsZGluZyBvZiBhIGdjYyBwYWNrYWdlIGlmIGl0IGlzIGEgdWNsaWJjIG9uZQotIyBhbmQgb3VyIGJ1aWxkIGlzIG5vdCBhIHVjbGliYyBvbmUsIGFuZCB3ZSBza2lwIGEgZ2xpYmMgb25lIGlmIG91ciBidWlsZAotIyBpcyBhIHVjbGliYyBidWlsZC4KLUNPTVBBVElCTEVfSE9TVCA9ICIuKi11Y2xpYmMuKiIKLQotSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKLQotIyBUaGVyZSBhcHBlYXJzIHRvIGJlIGEgcGFyYWxsZWwgcmFjZSBpbiB1Y2xpYmM6Ci0jIEdFTiAvZXh0cmEvbG9jYWxlL2xvY2FsZV9jb2xsYXRlLmgKLSMgeGFyZ3M6IC4uLy4uLy9leHRyYS9sb2NhbGUvZ2VuX2NvbGxhdGU6IFRleHQgZmlsZSBidXN5Ci0jIG1ha2VbMV06ICoqKiBbLi4vLi4vL2V4dHJhL2xvY2FsZS9sb2NhbGVfY29sbGF0ZS5oXSBFcnJvciAxMjYKLVBBUkFMTEVMX01BS0UgPSAiIgotCi0jIGRvX3N0YWdlIGJhcmZzIG9uIGEgQ0Mgd2l0aCB3aGl0ZXNwYWNlLCB0aGVyZWZvcmUgcHV0IHRoZSAnSE9TVF9DQ19BUkNIJyBpbgotIyB0aGUgQ0ZMQUdTICh3aGVuIGJ1aWxkaW5nIHRoZSB1dGlscykuCi1PRU1BS0VfTk9fQ0MgPSAiJ1NUUklQVE9PTD10cnVlJyAnTEQ9JHtMRH0nIgotRVhUUkFfT0VNQUtFID0gIiR7T0VNQUtFX05PX0NDfSBcCi0gICAgICAgICAgICAgICAgJ0hPU1RDQz0ke0JVSUxEX0NDfScgXAotICAgICAgICAgICAgICAgICdIT1NUX0NGTEFHUz0ke0JVSUxEX0NGTEFHU30nIFwKLSAgICAgICAgICAgICAgICAnQ0M9JHtDQ30nIFwKLSAgICAgICAgICAgICAgICBBUkNIPSR7VUNMSUJDX0FSQ0h9IgotCi1FWFRSQV9PRU1BS0VfdGFza19kb19wYWNrYWdlID0gIiR7T0VNQUtFX05PX0NDfSIKLQotIyBlbmFibGUgdmVyYm9zZSBvdXRwdXQ6Ci1leHBvcnQgVj0iMiIKLQotIyAtTzxuPiAtZm5vLW9taXQtZnJhbWUtcG9pbnRlciBlbmRzIHVwIHdpdGggR0NDIElDRSBvbiB0aHVtYiBhcyByZXBvcnRlZAotIyBodHRwOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTQ0ODYwCi0jCi1DRkxBR1NfcmVtb3ZlX2FybSA9ICItZm5vLW9taXQtZnJhbWUtcG9pbnRlciIKLVVDTElCQ19FWFRSQV9DRkxBR1MgID0gIiR7QG9lX2ZpbHRlcl9vdXQoJygtSVxTK3wtaVxTKyknLCAnJHtDRkxBR1N9JywgZCl9IgotCi1jb25maWdtYW5nbGUgPSAnL15LRVJORUxfSEVBREVSUy9kOyBcCi0gICAgICAgICAgICAgICAgL15SVU5USU1FX1BSRUZJWC9kOyBcCi0gICAgICAgICAgICAgICAgL15ERVZFTF9QUkVGSVgvZDsgXAotICAgICAgICAgICAgICAgIC9eU0hBUkVEX0xJQl9MT0FERVJfUFJFRklYL2Q7IFwKLSAgICAgICAgICAgICAgICAvXlVDTElCQ19FWFRSQV9DRkxBR1MvZDsgXAotICAgICAgICAgICAgICAgIHMsLipVQ0xJQkNfSEFTX1dDSEFSLiosVUNMSUJDX0hBU19XQ0hBUj15LGc7IFwKLSAgICAgICAgICAgICAgICAke0BbIiIsInMsLipDT01QSUxFX0lOX1RIVU1CX01PREUuKixDT01QSUxFX0lOX1RIVU1CX01PREU9eSw7Il1bZC5nZXRWYXIoIkFSTV9JTlNUUlVDVElPTl9TRVQiLCBUcnVlKSA9PSAidGh1bWIiXX0gXAotICAgICAgICAgICAgICAgICR7QFsiIiwicywuKlVDTElCQ19IQVNfTE9DQUxFLiosVUNMSUJDX0hBU19MT0NBTEU9eSw7Il1bZC5nZXRWYXIoIlVTRV9OTFMiLCBUcnVlKSA9PSAieWVzIl19IFwKLSAgICAgICAgICAgICAgICAke0BbIiIsInMsLipMRFNPX0dOVV9IQVNIX1NVUFBPUlQuKiwjIExEU09fR05VX0hBU0hfU1VQUE9SVCBpcyBub3Qgc2V0LDsiXVtkLmdldFZhcigiVEFSR0VUX0FSQ0giLCBUcnVlKSBpbiBbJ21pcHMnLCAnbWlwc2VsJywgJ21pcHM2NCcsICdtaXBzNjRlbCcsICdhdnIzMiddXX0gXAotICAgICAgICAgICAgICAgIC9eQ1JPU1MvZDsgXAotICAgICAgICAgICAgICAgIC9eVEFSR0VUX0FSQ0g9L2Q7IFwKLSAgICAgICAgICAgICAgICAvXlRBUkdFVF8vcyxeXChbXj1dKlwpLiosIyBcMSBpcyBub3Qgc2V0LGc7IFwKLSAgICAgICAgICAgICAgICBzLF5ET1NUUklQLiosIyBET1NUUklQIGlzIG5vdCBzZXQsZzsgXAotICAgICAgICAgICAgICAgIC9fW0VPXSpBQkkvZDsgXAotICAgICAgICAgICAgICAgIC9IQVNfRlBVL2Q7IFwKLSAgICAgICAgICAgICAgICAke0BbIiIsInMsLipNVUxUSUxJQl9ESVIuKixNVUxUSUxJQl9ESVI9XCIke2Jhc2VsaWJ9XCIsOyJdW2QuZ2V0VmFyKCJiYXNlbGliIiwgVHJ1ZSkgIT0gImxpYiJdfSBcCi0gICAgICAgICAgICAgICAnCi1PRV9GRUFUVVJFUyA9ICIke0BmZWF0dXJlc190b191Y2xpYmNfY29uZihkKX0iCi1PRV9ERUwgICAgICA9ICIke0BmZWF0dXJlc190b191Y2xpYmNfZGVsKGQpfSIKLXB5dGhvbiAoKSB7Ci0gICAgaWYgIiR7T0VfREVMfSI6Ci0gICAgICAgIGQuc2V0VmFyKCdjb25maWdtYW5nbGVfYXBwZW5kJywgIiR7T0VfREVMfSIgKyAiXG4iKQotCi0gICAgIyBieSBkZWZhdWx0IHVjbGliYyB1c2VzIG1pcHMxIElTQSBmb3IgbzMyIEFCSQotICAgICMgaWYgd2UgdXNlIFRBUkdFVF9DQ19BUkNIPSItbWFyY2g9bWlwczMyIiB3ZSBlbmQgdXAgCi0gICAgIyB3aXRoIGNvbmZsaWN0aW5nIG1hcmNoIG9wdGlvbnMgdG8gZ2NjLiBIZXJlIHdlCi0gICAgIyBhc2sgZm9yIE1JUFMzMiBJU0EgdG8gbWF0Y2ggdGhlIGNob3NlbiBhcmNoCi0gICAgdHVuZSA9IGQuZ2V0VmFyKCJERUZBVUxUVFVORSIsIFRydWUpCi0gICAgaWYgdHVuZS5zdGFydHN3aXRoKCdtaXBzMzInKToKLSAgICAgICAgaW1wb3J0IHJlCi0gICAgICAgIHR1bmUgPSByZS5zdWIoJyhlbCkqKC1uZikqJywgJycsIHR1bmUpCi0gICAgICAgIGQuc2V0VmFyKCdjb25maWdtYW5nbGVfYXBwZW5kJywKLSAgICAgICAgICAgICAgICAgIi9eIyMjIE1JUFMzMl9DSEVDSyQvYVxcXG5DT05GSUdfTUlQU19JU0FfJXM9eVxuXG4iICUgKHR1bmUudXBwZXIoKSkpCi0gICAgaWYgIiR7T0VfRkVBVFVSRVN9IjoKLSAgICAgICAgZC5zZXRWYXIoJ2NvbmZpZ21hbmdsZV9hcHBlbmQnLAotICAgICAgICAgICAgICAgICAgICIvXiMjIyBESVNUUk8gRkVBVFVSRVMkL2FcXFxuJXNcblxuIiAlCi0gICAgICAgICAgICAgICAgICAgKCJcXG4iLmpvaW4oKGQuZXhwYW5kKCIke09FX0ZFQVRVUkVTfSIpLnNwbGl0KCJcbiIpKSkpKQotICAgIGQuc2V0VmFyKCdjb25maWdtYW5nbGVfYXBwZW5kJywKLSAgICAgICAgICAgICAgICAgIi9eIyMjIENST1NTJC9hXFxcbiVzXG4iICUKLSAgICAgICAgICAgICAgICAgICgiXFxuIi5qb2luKFsiQ1JPU1NfQ09NUElMRVJfUFJFRklYPVwiJHtUQVJHRVRfUFJFRklYfVwiIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJVQ0xJQkNfRVhUUkFfQ0ZMQUdTPVwiJHtVQ0xJQkNfRVhUUkFfQ0ZMQUdTfVwiIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiS0VSTkVMX0hFQURFUlM9XCIke1NUQUdJTkdfSU5DRElSfVwiIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiUlVOVElNRV9QUkVGSVg9XCIvXCIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICJERVZFTF9QUkVGSVg9XCIvJHtwcmVmaXh9XCIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICJTSEFSRURfTElCX0xPQURFUl9QUkVGSVg9XCIvbGliXCIiLAotICAgICAgICAgICAgICAgICAgICAgICAgXSkKLSAgICAgICAgICAgICAgICAgICkpCi0gICAgZC5zZXRWYXIoJ2NvbmZpZ21hbmdsZV9hcHBlbmQnLAotICAgICAgICAgICAgICAgICAiL14jIyMgVEdUJC9hXFxcblRBUkdFVF9BUkNIPVwiJXNcIlxcblRBUkdFVF8lcz15XG4iICUKLSAgICAgICAgICAgICAgICAgICAgICAgICgiJHtVQ0xJQkNfQVJDSH0iLCAiJHtVQ0xJQkNfQVJDSH0iKSkKLSAgICBkLnNldFZhcignY29uZmlnbWFuZ2xlX2FwcGVuZCcsCi0gICAgIi9eIyMjIEZQVSQvYVxcXG4lc1xuXG4iICUgKFsiVUNMSUJDX0hBU19GUFU9eSIsIiMgVUNMSUJDX0hBU19GUFUgaXMgbm90IHNldCJdW2QuZ2V0VmFyKCdUQVJHRVRfRlBVJywgVHJ1ZSkgaW4gWyAnc29mdCcgXV0pKQotICAgIGlmICIke1VDTElCQ19FTkRJQU59IjoKLSAgICAgICAgZC5zZXRWYXIoJ2NvbmZpZ21hbmdsZV9hcHBlbmQnLAotICAgICAgICAgICAgICAgICAgICIvXiMjIyBBQkkkL2FcXFxuQVJDSF9XQU5UU18lc19FTkRJQU49eVxuXG4iICUgKCIke1VDTElCQ19FTkRJQU59IikpCi0gICAgaWYgIiR7VUNMSUJDX0FCSX0iOgotICAgICAgICBkLnNldFZhcignY29uZmlnbWFuZ2xlX2FwcGVuZCcsCi0gICAgICAgICAgICAgICAgICAgIi9eIyMjIEFCSSQvYVxcXG5DT05GSUdfJXM9eVxuXG4iICUgKCIke1VDTElCQ19BQkl9IikpCi19Ci0KLXB5dGhvbiBkb19wYXRjaF9hcHBlbmQoKSB7Ci0gICAgaW1wb3J0IHN1YnByb2Nlc3MKLSAgICBzdWJwcm9jZXNzLmNhbGwoImxuIC1zZiAke1NUQUdJTkdfSU5DRElSfS9saW51eCAke1N9L2luY2x1ZGUvbGludXgiLCBzaGVsbD1UcnVlKQotICAgIHN1YnByb2Nlc3MuY2FsbCgibG4gLXNmICR7U1RBR0lOR19JTkNESVJ9L2FzbSAke1N9L2luY2x1ZGUvYXNtIiwgc2hlbGw9VHJ1ZSkKLX0KLQotZG9fY29uZmlndXJlKCkgewotICAgICAgICBybSAtZiAke1N9Ly5jb25maWcKLQotICAgICAgICAjIE9wZW5FbWJlZGRlZCBzcGxpdHMgdGhlIHVDbGliYy5jb25maWcgaW4gdHdvIHBhcnRzOgotICAgICAgICAjIHVDbGliYy5tYWNoaW5lLCB1Q2xpYmMuZGlzdHJvCi0gICAgICAgIGVjaG8gIiMjIyB1Q2xpYmMubWFjaGluZSAjIyMiID4ke1N9L21lcmdlZC5jb25maWcKLSAgICAgICAgY2F0ICR7V09SS0RJUn0vdUNsaWJjLm1hY2hpbmUgPj4ke1N9L21lcmdlZC5jb25maWcKLSAgICAgICAgZWNobyAiIyMjIHVDbGliYy5kaXN0cm8gIyMjIiA+PiR7U30vbWVyZ2VkLmNvbmZpZwotICAgICAgICBjYXQgJHtXT1JLRElSfS91Q2xpYmMuZGlzdHJvID4+JHtTfS9tZXJnZWQuY29uZmlnCi0gICAgICAgIGVjaG8gIiMjIyBDUk9TUyIgPj4ke1N9L21lcmdlZC5jb25maWcKLSAgICAgICAgZWNobyAiIyMjIFRHVCIgPj4ke1N9L21lcmdlZC5jb25maWcKLSAgICAgICAgZWNobyAiIyMjIE1NVSIgPj4ke1N9L21lcmdlZC5jb25maWcKLSAgICAgICAgZWNobyAiIyMjIEZQVSIgPj4ke1N9L21lcmdlZC5jb25maWcKLSAgICAgICAgZWNobyAiIyMjIEFCSSIgPj4ke1N9L21lcmdlZC5jb25maWcKLSAgICAgICAgZWNobyAiIyMjIERJU1RSTyBGRUFUVVJFUyIgPj4ke1N9L21lcmdlZC5jb25maWcKLSAgICAgICAgZWNobyAiIyMjIE1JUFMzMl9DSEVDSyIgPj4ke1N9L21lcmdlZC5jb25maWcKLQotICAgICAgICAjIE1hbmdsZSB0aGUgcmVzdWx0aW5nIC5jb25maWcgZGVwZW5kaW5nIG9uIE9FIHZhcmlhYmxlcwotICAgICAgICBzZWQgLWkgLWUgJyR7Y29uZmlnbWFuZ2xlfScgJHtTfS9tZXJnZWQuY29uZmlnCi0JY3AgJHtTfS9tZXJnZWQuY29uZmlnIC5jb25maWcKLSAgICAgICAgbWVyZ2VfY29uZmlnLnNoIC1yIC1uIC1tIC5jb25maWcgJHtAIiAiLmpvaW4oZmluZF9jZmdzKGQpKX0KLQljbWwxX2RvX2NvbmZpZ3VyZQotCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSBQUkVGSVg9JHtEfSBpbnN0YWxsCi0Jcm0gLXJmICR7RH0ke2luY2x1ZGVkaXJ9L2ljb252LmgKLX0KLQotIyBidWlsZCBsZGQsIGxkY29uZmlnIGFuZCBmcmllbmRzIGJ1dCBvbmx5IGZvciBmdWxsIHVjbGliYwotZG9faW5zdGFsbF9hcHBlbmRfcG4tdWNsaWJjICgpIHsKLSAgICAgICAgb2VfcnVubWFrZSBQUkVGSVg9JHtEfSAiU1NQX0FMTF9DRkxBR1M9JHtUQVJHRVRfTElOS19IQVNIX1NUWUxFfSIgLUMgdXRpbHMgdXRpbHNfaW5zdGFsbAotfQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWNsaWJjL3VjbGliY19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWNsaWJjL3VjbGliY19naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkMDJiM2QuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VjbGliYy91Y2xpYmNfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotcmVxdWlyZSB1Y2xpYmMuaW5jCi1yZXF1aXJlIHVjbGliYy1wYWNrYWdlLmluYwotcmVxdWlyZSB1Y2xpYmMtZ2l0LmluYwotCi1TVEFHSU5HQ0MgPSAiZ2NjLWNyb3NzLWluaXRpYWwtJHtUQVJHRVRfQVJDSH0iCi1TVEFHSU5HQ0NfY2xhc3MtbmF0aXZlc2RrID0gImdjYy1jcm9zc3Nkay1pbml0aWFsLSR7VEFSR0VUX0FSQ0h9IgotCi1QUk9WSURFUyArPSAidmlydHVhbC9saWJjIHZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWxpYmMtZm9yLWdjYyIKLQotREVQRU5EUyA9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1iaW51dGlscyBcCi0gICAgICAgICAgIHZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdjYy1pbml0aWFsIFwKLSAgICAgICAgICAgdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9bGliYy1pbml0aWFsIFwKLSAgICAgICAgICAgbGludXgtbGliYy1oZWFkZXJzIG5jdXJzZXMtbmF0aXZlIFwKLSAgICAgICAgICAgbGliZ2NjLWluaXRpYWwga2Vybi10b29scy1uYXRpdmUiCi0KLVJERVBFTkRTXyR7UE59LWRldiA9ICJsaW51eC1saWJjLWhlYWRlcnMtZGV2IgotUlBST1ZJREVTXyR7UE59LWRldiArPSAibGliYy1kZXYgdmlydHVhbC1saWJjLWRldiIKLSMgdWNsaWJjIGRvZXMgbm90IHJlYWxseSBoYXZlIGxpYnNlZ2ZhdWx0IGJ1dCB0aGVuIHVzaW5nIHRoZSBvbmUgZnJvbSBnbGliYyBpcyBhbHNvIG5vdAotIyBnb2luZyB0byB3b3JrLiBTbyB3ZSBwcmV0ZW5kIHRoYXQgd2UgaGF2ZSBpdCB0byBtYWtlIGJpdGJha2Ugbm90IHB1bGwgb3RoZXIgcmVjaXBlcwotIyB0byBzYXRpc2Z5IHRoaXMgZGVwZW5kZW5jeSBmb3IgdGhlIGltYWdlcy90YXNrcwotCi1SUFJPVklERVNfJHtQTn0gKz0gImxpYnNlZ2ZhdWx0IHJ0bGQoR05VX0hBU0gpIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvZXVkZXZfMy4xLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi9ldWRldl8zLjEuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWExOWVjNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi9ldWRldl8zLjEuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwNyArMCwwIEBACi1TVU1NQVJZID0gImV1ZGV2IGlzIGEgZm9yayBvZiBzeXN0ZW1kJ3MgdWRldiIKLUhPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nZW50b28ub3JnL3dpa2kvRXVkZXYiCi1MSUNFTlNFID0gIkdQTHYyLjArIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGdwZXJmLW5hdGl2ZSBrbW9kIGxpYnhzbHQtbmF0aXZlIHV0aWwtbGludXgiCi0KLVBST1ZJREVTID0gInVkZXYiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dlbnRvby8ke0JQTn0vYXJjaGl2ZS92JHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2RldmZzLXVkZXYucnVsZXMgXAotICAgICAgICAgICBmaWxlOi8vaW5pdCBcCi0gICAgICAgICAgIGZpbGU6Ly9saW5rcy5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL2xvY2FsLnJ1bGVzIFwKLSAgICAgICAgICAgZmlsZTovL3Blcm1pc3Npb25zLnJ1bGVzIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi5ydWxlcyBcCi0gICAgICAgICAgIGZpbGU6Ly91ZGV2LWNhY2hlIFwKLSAgICAgICAgICAgZmlsZTovL3VkZXYtY2FjaGUuZGVmYXVsdCBcCi0gICAgICAgICAgIGZpbGU6Ly91ZGV2LnJ1bGVzIFwKLSIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vZ2VudG9vL2V1ZGV2L3JlbGVhc2VzIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTEzMGY4OTJkODc0NGUyOTJjYjg1NWRiNzk5MzVmNjgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2U5ZDVmYTkxZTNhNDJjN2ViOTU1MTJjYTBmYTJhNjMxZTg5ODMzMDUzMDY2YmI2Y2RmNDIwNDZiMmE4ODU1MyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgcWVtdQotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLXNiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9IFwKLSAgICAtLWxpYmV4ZWNkaXI9JHtub25hcmNoX2Jhc2VfbGliZGlyfSBcCi0gICAgLS13aXRoLXJvb3RsaWJkaXI9JHtiYXNlX2xpYmRpcn0gXAotICAgIC0td2l0aC1yb290cHJlZml4PSBcCi0iCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0JaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvdWRldgotCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L3VkZXYtY2FjaGUgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3VkZXYtY2FjaGUKLQlzZWQgLWkgcyVAVURFVkRAJSR7YmFzZV9zYmluZGlyfS91ZGV2ZCUgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3VkZXYKLQlzZWQgLWkgcyVAVURFVkRAJSR7YmFzZV9zYmluZGlyfS91ZGV2ZCUgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3VkZXYtY2FjaGUKLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdAotCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L3VkZXYtY2FjaGUuZGVmYXVsdCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3VkZXYtY2FjaGUKLQotCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvY2FjaGUuZGF0YQotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQKLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9sb2NhbC5ydWxlcyAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvbG9jYWwucnVsZXMKLQotCSMgVXNlIGNsYXNzaWMgbmV0d29yayBpbnRlcmZhY2UgbmFtaW5nIHNjaGVtZQotCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZC84MC1uZXQtbmFtZS1zbG90LnJ1bGVzCi0KLQkjIEZpeCBmb3IgbXVsdGlsaWIgc3lzdGVtcyB3aGVyZSBsaWJzIGFsb25nIHdpdGggY29uZnMgYXJlIGluc3RhbGxlZCBpbmNvcnJlY3RseQotCWlmICEgWyAtZCAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2IF0KLQl0aGVuCi0JCWluc3RhbGwgLWQgJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldgotCQltdiAke0R9JHtiYXNlX2xpYmRpcn0vdWRldiAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfQotCWZpCi0KLQkjIGhpZDJoY2kgaGFzIG1vdmVkIHRvIGJsdWV6NC4gcmVtb3ZlZCBpbiB1ZGV2IGFzIG9mIHZlcnNpb24gMTY5Ci0Jcm0gLWYgJHtEfSR7YmFzZV9saWJkaXJ9L3VkZXYvaGlkMmhjaQotfQotCi1JTklUU0NSSVBUX1BBQ0tBR0VTID0gImV1ZGV2IHVkZXYtY2FjaGUiCi1JTklUU0NSSVBUX05BTUVfZXVkZXYgPSAidWRldiIKLUlOSVRTQ1JJUFRfUEFSQU1TX2V1ZGV2ID0gInN0YXJ0IDA0IFMgLiIKLUlOSVRTQ1JJUFRfTkFNRV91ZGV2LWNhY2hlID0gInVkZXYtY2FjaGUiCi1JTklUU0NSSVBUX1BBUkFNU191ZGV2LWNhY2hlID0gInN0YXJ0IDM2IFMgLiIKLQotUEFDS0FHRVMgPSsgImxpYnVkZXYiCi1QQUNLQUdFUyA9KyAidWRldi1jYWNoZSIKLVBBQ0tBR0VTID0rICJldWRldi1od2RiIgotCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmV4ZWNkaXJ9ICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldiAke2JpbmRpcn0vdWRldmFkbSIKLUZJTEVTXyR7UE59LWRldiA9ICIke2RhdGFkaXJ9L3BrZ2NvbmZpZy91ZGV2LnBjIFwKLSAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L2xpYnVkZXYuaCAke2xpYmRpcn0vbGlidWRldi5zbyBcCi0gICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS91ZGV2LmggJHtsaWJkaXJ9L2xpYnVkZXYubGEgXAotICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJ1ZGV2LmEgJHtsaWJkaXJ9L3BrZ2NvbmZpZy9saWJ1ZGV2LnBjIgotRklMRVNfbGlidWRldiA9ICIke2Jhc2VfbGliZGlyfS9saWJ1ZGV2LnNvLioiCi1GSUxFU191ZGV2LWNhY2hlID0gIiR7c3lzY29uZmRpcn0vaW5pdC5kL3VkZXYtY2FjaGUgJHtzeXNjb25mZGlyfS9kZWZhdWx0L3VkZXYtY2FjaGUiCi1GSUxFU19ldWRldi1od2RiID0gIiR7c3lzY29uZmRpcn0vdWRldi9od2RiLmQiCi0KLVJERVBFTkRTX2V1ZGV2LWh3ZGIgKz0gImV1ZGV2IgotCi1SUkVDT01NRU5EU18ke1BOfSArPSAidWRldi1jYWNoZSBldWRldi1od2RiIgotCi1SUFJPVklERVNfJHtQTn0gPSAiaG90cGx1ZyB1ZGV2IgotCi1weXRob24gKCkgewotICAgIGlmIGJiLnV0aWxzLmNvbnRhaW5zICgnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBUcnVlLCBGYWxzZSwgZCk6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCInc3lzdGVtZCcgaW4gRElTVFJPX0ZFQVRVUkVTIikKLX0KLQotcGtnX3Bvc3RpbnN0X2V1ZGV2LWh3ZGIgKCkgewotICAgIGlmIHRlc3QgLW4gIiREIjsgdGhlbgotICAgICAgICAke0BxZW11X3J1bl9iaW5hcnkoZCwgJyREJywgJyR7YmluZGlyfS91ZGV2YWRtJyl9IGh3ZGIgLS11cGRhdGUgLS1yb290ICRECi0gICAgICAgIGNob3duIHJvb3Q6cm9vdCAkRCR7c3lzY29uZmRpcn0vdWRldi9od2RiLmJpbgotICAgIGVsc2UKLSAgICAgICAgdWRldmFkbSBod2RiIC0tdXBkYXRlCi0gICAgZmkKLX0KLQotcGtnX3ByZXJtX2V1ZGV2LWh3ZGIgKCkgewotICAgICAgICBybSAtZiAkRCR7c3lzY29uZmRpcn0vdWRldi9od2RiLmJpbgotfQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi9ldWRldl8zLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi9ldWRldl8zLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjExMjUyYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L2V1ZGV2XzMuMi5iYgpAQCAtMCwwICsxLDEwMSBAQAorU1VNTUFSWSA9ICJldWRldiBpcyBhIGZvcmsgb2Ygc3lzdGVtZCdzIHVkZXYiCitIT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ2VudG9vLm9yZy93aWtpL0V1ZGV2IgorTElDRU5TRSA9ICJHUEx2Mi4wKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorCitERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBncGVyZi1uYXRpdmUga21vZCBsaWJ4c2x0LW5hdGl2ZSB1dGlsLWxpbnV4IgorCitQUk9WSURFUyA9ICJ1ZGV2IgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9nZW50b28vJHtCUE59L2FyY2hpdmUvdiR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9kZXZmcy11ZGV2LnJ1bGVzIFwKKyAgICAgICAgICAgZmlsZTovL2luaXQgXAorICAgICAgICAgICBmaWxlOi8vbGlua3MuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9sb2NhbC5ydWxlcyBcCisgICAgICAgICAgIGZpbGU6Ly9wZXJtaXNzaW9ucy5ydWxlcyBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4ucnVsZXMgXAorICAgICAgICAgICBmaWxlOi8vdWRldi1jYWNoZSBcCisgICAgICAgICAgIGZpbGU6Ly91ZGV2LWNhY2hlLmRlZmF1bHQgXAorICAgICAgICAgICBmaWxlOi8vdWRldi5ydWxlcyBcCisiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dlbnRvby9ldWRldi9yZWxlYXNlcyIKKworU1JDX1VSSVttZDVzdW1dID0gIjllYjQ3N2NjODcxOGRiMjcyYjVkMjRkZmYxMTI2YjA0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM3ODI5ZDM3ZjRiZWI3ZTM1OGNhMzNhYmMxYWQwOTA3ZDg3ZjkxN2NlMTU3Nzc3YWVhZWViZWFjYWUyNGVmZGMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHFlbXUgcGtnY29uZmlnCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0tc2JpbmRpcj0ke2Jhc2Vfc2JpbmRpcn0gXAorICAgIC0td2l0aC1yb290bGliZGlyPSR7YmFzZV9saWJkaXJ9IFwKKyAgICAtLXdpdGgtcm9vdHByZWZpeD0gXAorIgorCitQQUNLQUdFQ09ORklHID8/PSAiaHdkYiIKK1BBQ0tBR0VDT05GSUdbaHdkYl0gPSAiLS1lbmFibGUtaHdkYiwtLWRpc2FibGUtaHdkYiIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKwlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC91ZGV2CisJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vdWRldi1jYWNoZSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvdWRldi1jYWNoZQorCXNlZCAtaSBzJUBVREVWREAlJHtiYXNlX3NiaW5kaXJ9L3VkZXZkJSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvdWRldgorCXNlZCAtaSBzJUBVREVWREAlJHtiYXNlX3NiaW5kaXJ9L3VkZXZkJSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvdWRldi1jYWNoZQorCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0CisJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vdWRldi1jYWNoZS5kZWZhdWx0ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdWRldi1jYWNoZQorCisJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vdWRldi9jYWNoZS5kYXRhCisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZAorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2xvY2FsLnJ1bGVzICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZC9sb2NhbC5ydWxlcworCisJIyBVc2UgY2xhc3NpYyBuZXR3b3JrIGludGVyZmFjZSBuYW1pbmcgc2NoZW1lCisJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kLzgwLW5ldC1uYW1lLXNsb3QucnVsZXMKKworCSMgaGlkMmhjaSBoYXMgbW92ZWQgdG8gYmx1ZXo0LiByZW1vdmVkIGluIHVkZXYgYXMgb2YgdmVyc2lvbiAxNjkKKwlybSAtZiAke0R9JHtiYXNlX2xpYmRpcn0vdWRldi9oaWQyaGNpCit9CisKK0lOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiZXVkZXYgdWRldi1jYWNoZSIKK0lOSVRTQ1JJUFRfTkFNRV9ldWRldiA9ICJ1ZGV2IgorSU5JVFNDUklQVF9QQVJBTVNfZXVkZXYgPSAic3RhcnQgMDQgUyAuIgorSU5JVFNDUklQVF9OQU1FX3VkZXYtY2FjaGUgPSAidWRldi1jYWNoZSIKK0lOSVRTQ1JJUFRfUEFSQU1TX3VkZXYtY2FjaGUgPSAic3RhcnQgMzYgUyAuIgorCitQQUNLQUdFUyA9KyAibGlidWRldiIKK1BBQ0tBR0VTID0rICJ1ZGV2LWNhY2hlIgorUEFDS0FHRVMgPSsgImV1ZGV2LWh3ZGIiCisKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZXhlY2Rpcn0gJHtiYXNlX2xpYmRpcn0vdWRldiAke2JpbmRpcn0vdWRldmFkbSIKK0ZJTEVTXyR7UE59LWRldiA9ICIke2RhdGFkaXJ9L3BrZ2NvbmZpZy91ZGV2LnBjIFwKKyAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L2xpYnVkZXYuaCAke2xpYmRpcn0vbGlidWRldi5zbyBcCisgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS91ZGV2LmggJHtsaWJkaXJ9L2xpYnVkZXYubGEgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJ1ZGV2LmEgJHtsaWJkaXJ9L3BrZ2NvbmZpZy9saWJ1ZGV2LnBjIgorRklMRVNfbGlidWRldiA9ICIke2Jhc2VfbGliZGlyfS9saWJ1ZGV2LnNvLioiCitGSUxFU191ZGV2LWNhY2hlID0gIiR7c3lzY29uZmRpcn0vaW5pdC5kL3VkZXYtY2FjaGUgJHtzeXNjb25mZGlyfS9kZWZhdWx0L3VkZXYtY2FjaGUiCitGSUxFU19ldWRldi1od2RiID0gIiR7c3lzY29uZmRpcn0vdWRldi9od2RiLmQiCisKK1JERVBFTkRTX2V1ZGV2LWh3ZGIgKz0gImV1ZGV2IgorCitSUkVDT01NRU5EU18ke1BOfSArPSAidWRldi1jYWNoZSIKKworUlBST1ZJREVTXyR7UE59ID0gImhvdHBsdWcgdWRldiIKKworcHl0aG9uICgpIHsKKyAgICBpZiBiYi51dGlscy5jb250YWlucyAoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgVHJ1ZSwgRmFsc2UsIGQpOgorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiJ3N5c3RlbWQnIGluIERJU1RST19GRUFUVVJFUyIpCit9CisKK3BrZ19wb3N0aW5zdF9ldWRldi1od2RiICgpIHsKKyAgICBpZiB0ZXN0IC1uICIkRCI7IHRoZW4KKyAgICAgICAgJHtAcWVtdV9ydW5fYmluYXJ5KGQsICckRCcsICcke2JpbmRpcn0vdWRldmFkbScpfSBod2RiIC0tdXBkYXRlIC0tcm9vdCAkRAorICAgICAgICBjaG93biByb290OnJvb3QgJEQke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5iaW4KKyAgICBlbHNlCisgICAgICAgIHVkZXZhZG0gaHdkYiAtLXVwZGF0ZQorICAgIGZpCit9CisKK3BrZ19wcmVybV9ldWRldi1od2RiICgpIHsKKyAgICAgICAgcm0gLWYgJEQke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5iaW4KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91cGRhdGUtcmMuZC91cGRhdGUtcmMuZF8wLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXBkYXRlLXJjLmQvdXBkYXRlLXJjLmRfMC43LmJiCmluZGV4IGMxNWNiNzguLjNiOTY1YzUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91cGRhdGUtcmMuZC91cGRhdGUtcmMuZF8wLjcuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VwZGF0ZS1yYy5kL3VwZGF0ZS1yYy5kXzAuNy5iYgpAQCAtMSw1ICsxLDUgQEAKIFNVTU1BUlkgPSAibWFuYWdlIHN5bWxpbmtzIGluIC9ldGMvcmNOLmQiCi1ERVNDUklQVElPTiA9ICJ1cGRhdGUtcmMuZCBpcyBhIHV0aWxpdGllcyB0aGF0IGFsbG93cyB0aGUgbWFuYWdlbWVudCBvZiBzeW1saW5rcyB0byB0aGUgaW5pdHNjcmlwdHMgaW4gdGhlIC9ldGMvcmNOLmQgZGlyZWN0b3J5IHN0cnVjdHVyZS4iCitERVNDUklQVElPTiA9ICJ1cGRhdGUtcmMuZCBpcyBhIHV0aWxpdHkgdGhhdCBhbGxvd3MgdGhlIG1hbmFnZW1lbnQgb2Ygc3ltbGlua3MgdG8gdGhlIGluaXRzY3JpcHRzIGluIHRoZSAvZXRjL3JjTi5kIGRpcmVjdG9yeSBzdHJ1Y3R1cmUuIgogU0VDVElPTiA9ICJiYXNlIgogCiBMSUNFTlNFID0gIkdQTHYyKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXguaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC5pbmMKaW5kZXggOGMwYzYzMC4uYzYzNTUwMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC5pbmMKQEAgLTE3LDcgKzE3LDggQEAKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYm1vdW50L0NPUFlJTkc7bWQ1PWZiOTNmMDFkNDM2MTA2OWM1NjE2MzI3NzA1MzczYjE2IFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYmJsa2lkL0NPUFlJTkc7bWQ1PWZiOTNmMDFkNDM2MTA2OWM1NjE2MzI3NzA1MzczYjE2IgogCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyBzeXN0ZW1kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgcHl0aG9uLWRpciBwdGVzdCBiYXNoLWNvbXBsZXRpb24KKyNndGstZG9jIGlzIG5vdCBlbmFibGVkIGFzIGl0IHJlcXVpcmVzIHhtbHRvIHdoaWNoIHJlcXVpcmVzIHV0aWwtbGludXgKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIHN5c3RlbWQgdXBkYXRlLWFsdGVybmF0aXZlcyBweXRob24zLWRpciBiYXNoLWNvbXBsZXRpb24gcHRlc3QKIERFUEVORFMgPSAiemxpYiBuY3Vyc2VzIgogREVQRU5EU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBsem8tbmF0aXZlIgogREVQRU5EU19hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBsem8tbmF0aXZlIgpAQCAtMzIsNyArMzMsNyBAQAogICAgICAgICAgICAgIHV0aWwtbGludXgtbWtmcyB1dGlsLWxpbnV4LW1jb29raWUgdXRpbC1saW51eC1yZXNldCBcCiAgICAgICAgICAgICAgdXRpbC1saW51eC1ta2ZzLmNyYW1mcyB1dGlsLWxpbnV4LWZzY2suY3JhbWZzIHV0aWwtbGludXgtZnN0cmltIFwKICAgICAgICAgICAgICB1dGlsLWxpbnV4LXBhcnR4IHV0aWwtbGludXgtaHdjbG9jayB1dGlsLWxpbnV4LW1vdW50cG9pbnQgXAotICAgICAgICAgICAgIHV0aWwtbGludXgtZmluZGZzIHV0aWwtbGludXgtZ2V0b3B0IHV0aWwtbGludXgtc3Vsb2dpbiIKKyAgICAgICAgICAgICB1dGlsLWxpbnV4LWZpbmRmcyB1dGlsLWxpbnV4LWdldG9wdCB1dGlsLWxpbnV4LXN1bG9naW4gdXRpbC1saW51eC1wcmxpbWl0IgogUEFDS0FHRVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5bGlibW91bnQnLCAndXRpbC1saW51eC1weWxpYm1vdW50JywgJycsIGQpfSIKIFBBQ0tBR0VTID0rICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICd1dGlsLWxpbnV4LXJ1bnVzZXInLCAnJywgZCl9IgogCkBAIC02MSwxNCArNjIsMTQgQEAKIFBBQ0tBR0VDT05GSUdbbGliY2FwLW5nXSA9ICItLWVuYWJsZS1zZXRwcml2LC0tZGlzYWJsZS1zZXRwcml2LGxpYmNhcC1uZywiCiAKICMgQnVpbGQgcHl0aG9uIGJpbmRpbmdzIGZvciBsaWJtb3VudAotUEFDS0FHRUNPTkZJR1tweWxpYm1vdW50XSA9ICItLXdpdGgtcHl0aG9uIC0tZW5hYmxlLXB5bGlibW91bnQsLS13aXRob3V0LXB5dGhvbiAtLWRpc2FibGUtcHlsaWJtb3VudCxweXRob24iCitQQUNLQUdFQ09ORklHW3B5bGlibW91bnRdID0gIi0td2l0aC1weXRob249MyAtLWVuYWJsZS1weWxpYm1vdW50LC0td2l0aG91dC1weXRob24gLS1kaXNhYmxlLXB5bGlibW91bnQscHl0aG9uMyIKIAogIyBSZWFkbGluZSBzdXBwb3J0CiBQQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICItLXdpdGgtcmVhZGxpbmUsLS13aXRob3V0LXJlYWRsaW5lLHJlYWRsaW5lIgogCiBGSUxFU18ke1BOfS1kb2MgKz0gIiR7ZGF0YWRpcn0vZ2V0b3B0L2dldG9wdC0qLioiCiAKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vZGlzdC1wYWNrYWdlcy9saWJtb3VudC9weWxpYm1vdW50LmxhIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9saWJtb3VudC9weWxpYm1vdW50LmxhIgogCiBGSUxFU191dGlsLWxpbnV4LWFnZXR0eSA9ICIke2Jhc2Vfc2JpbmRpcn0vYWdldHR5IgogRklMRVNfdXRpbC1saW51eC1mZGlzayA9ICIke2Jhc2Vfc2JpbmRpcn0vZmRpc2suJHtCUE59IgpAQCAtODksOSArOTAsMTEgQEAKIEZJTEVTX3V0aWwtbGludXgtZmluZGZzID0gIiR7c2JpbmRpcn0vZmluZGZzIgogRklMRVNfdXRpbC1saW51eC1nZXRvcHQgPSAiJHtiYXNlX2JpbmRpcn0vZ2V0b3B0LiR7QlBOfSIKIEZJTEVTX3V0aWwtbGludXgtcnVudXNlciA9ICIke3NiaW5kaXJ9L3J1bnVzZXIiCitGSUxFU191dGlsLWxpbnV4LXBybGltaXQgPSAiJHtiaW5kaXJ9L3BybGltaXQiCiAKLUZJTEVTX3V0aWwtbGludXgtcHlsaWJtb3VudCA9ICIke2xpYmRpcn0vJHtQWVRIT05fRElSfS9kaXN0LXBhY2thZ2VzL2xpYm1vdW50L3B5bGlibW91bnQuc28gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L2Rpc3QtcGFja2FnZXMvbGlibW91bnQvX19pbml0X18uKiIKK0ZJTEVTX3V0aWwtbGludXgtcHlsaWJtb3VudCA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9saWJtb3VudC9weWxpYm1vdW50LnNvIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9saWJtb3VudC9fX2luaXRfXy4qIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9saWJtb3VudC9fX3B5Y2FjaGVfXy8qIgogRklMRVNfdXRpbC1saW51eC1sc2NwdSA9ICIke2JpbmRpcn0vbHNjcHUiCiAKIEZJTEVTX3V0aWwtbGludXgtZnNjayA9ICIke2Jhc2Vfc2JpbmRpcn0vZnNjayoiCkBAIC0xMTYsNyArMTE5LDcgQEAKIFJERVBFTkRTXyR7UE59ID0gInV0aWwtbGludXgtdW1vdW50IHV0aWwtbGludXgtc3dhcG9ub2ZmIHV0aWwtbGludXgtbG9zZXR1cCB1dGlsLWxpbnV4LXN1bG9naW4iCiBSREVQRU5EU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAndXRpbC1saW51eC1ydW51c2VyJywgJycsIGQpfSIKIAotUlJFQ09NTUVORFNfJHtQTn0gPSAidXRpbC1saW51eC1mZGlzayB1dGlsLWxpbnV4LWNmZGlzayB1dGlsLWxpbnV4LXNmZGlzayB1dGlsLWxpbnV4LW1vdW50IHV0aWwtbGludXgtcmVhZHByb2ZpbGUgdXRpbC1saW51eC1ta2ZzIHV0aWwtbGludXgtbW91bnRwb2ludCIKK1JSRUNPTU1FTkRTXyR7UE59ID0gInV0aWwtbGludXgtZmRpc2sgdXRpbC1saW51eC1jZmRpc2sgdXRpbC1saW51eC1zZmRpc2sgdXRpbC1saW51eC1tb3VudCB1dGlsLWxpbnV4LXJlYWRwcm9maWxlIHV0aWwtbGludXgtbWtmcyB1dGlsLWxpbnV4LW1vdW50cG9pbnQgdXRpbC1saW51eC1wcmxpbWl0IgogCiBSUkVDT01NRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgogUlJFQ09NTUVORFNfJHtQTn1fY2xhc3MtbmF0aXZlc2RrID0gIiIKQEAgLTI4MCw3ICsyODMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX2RlcGVuZHM9JycsIHByZXBlbmQ9VHJ1ZSwgYWxsb3dfbGlua3M9VHJ1ZSkKIH0KIAotUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiYmFzaCIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ID0gImJhc2ggZ3JlcCBjb3JldXRpbHMiCiAKIGRvX2NvbXBpbGVfcHRlc3QoKSB7CiAgICAgb2VfcnVubWFrZSBidWlsZHRlc3QtVEVTVFMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvYXZvaWRfdW5zdXBwb3J0ZWRfZ3JlcF9vcHRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC9hdm9pZF91bnN1cHBvcnRlZF9ncmVwX29wdHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwZDVlZmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC9hdm9pZF91bnN1cHBvcnRlZF9ncmVwX29wdHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1Bdm9pZCB1bnN1cHBvcnRlZCBncmVwIG9wdGlvbnMKLQotU2lnbmVkLW9mZi1ieTogVHVkb3IgRmxvcmVhIDx0dWRvci5mbG9yZWFAZW5lYS5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotZGlmZiAtcnVOIGEvdHMvaXBjcy9oZWFkZXJzIGIvdHMvaXBjcy9oZWFkZXJzCi0tLS0gYS90ZXN0cy90cy9pcGNzL2hlYWRlcnMJMjAxMy0wOS0wNCAxMTowMzozNi4xMTg2MTMyNTAgKzAyMDAKLSsrKyBiL3Rlc3RlL3RzL2lwY3MvaGVhZGVycwkyMDEzLTA5LTA0IDExOjAzOjI3LjkwNjk1ODQzNyArMDIwMAotQEAgLTIyLDM1ICsyMiwzNSBAQAotIHRzX2luaXQgIiQqIgotIAotIHRzX2xvZyAidGVzdDogc2htIGhlYWRlcnMiCi0tJFRTX0NNRF9JUENTIC1tIC10IHwgZ3JlcCAtLWFmdGVyLWNvbnRleHQ9MSAiXi0tLSIgID4+ICRUU19PVVRQVVQKLS0kVFNfQ01EX0lQQ1MgLW0gLXAgfCBncmVwIC0tYWZ0ZXItY29udGV4dD0xICJeLS0tIiAgPj4gJFRTX09VVFBVVAotLSRUU19DTURfSVBDUyAtbSAtYyB8IGdyZXAgLS1hZnRlci1jb250ZXh0PTEgIl4tLS0iICA+PiAkVFNfT1VUUFVUCi0rJFRTX0NNRF9JUENTIC1tIC10IHwgZ3JlcCAtQSAxICJeLS0tIiAgPj4gJFRTX09VVFBVVAotKyRUU19DTURfSVBDUyAtbSAtcCB8IGdyZXAgLUEgMSAiXi0tLSIgID4+ICRUU19PVVRQVVQKLSskVFNfQ01EX0lQQ1MgLW0gLWMgfCBncmVwIC1BIDEgIl4tLS0iICA+PiAkVFNfT1VUUFVUCi0gJFRTX0NNRF9JUENTIC1tIC1sIHwgZ3JlcCAiXi0tLSIgID4+ICRUU19PVVRQVVQKLSAkVFNfQ01EX0lQQ1MgLW0gLXUgfCBncmVwICJeLS0tIiAgPj4gJFRTX09VVFBVVAotIGVjaG8gPj4gJFRTX09VVFBVVAotIAotIHRzX2xvZyAidGVzdDogbWVzZyBoZWFkZXJzIgotLSRUU19DTURfSVBDUyAtcSAtdCB8IGdyZXAgLS1hZnRlci1jb250ZXh0PTEgIl4tLS0iICA+PiAkVFNfT1VUUFVUCi0tJFRTX0NNRF9JUENTIC1xIC1wIHwgZ3JlcCAtLWFmdGVyLWNvbnRleHQ9MSAiXi0tLSIgID4+ICRUU19PVVRQVVQKLS0kVFNfQ01EX0lQQ1MgLXEgLWMgfCBncmVwIC0tYWZ0ZXItY29udGV4dD0xICJeLS0tIiAgPj4gJFRTX09VVFBVVAotKyRUU19DTURfSVBDUyAtcSAtdCB8IGdyZXAgLUEgMSAiXi0tLSIgID4+ICRUU19PVVRQVVQKLSskVFNfQ01EX0lQQ1MgLXEgLXAgfCBncmVwIC1BIDEgIl4tLS0iICA+PiAkVFNfT1VUUFVUCi0rJFRTX0NNRF9JUENTIC1xIC1jIHwgZ3JlcCAtQSAxICJeLS0tIiAgPj4gJFRTX09VVFBVVAotICRUU19DTURfSVBDUyAtcSAtbCB8IGdyZXAgICJeLS0tIiAgPj4gJFRTX09VVFBVVAotICRUU19DTURfSVBDUyAtcSAtdSB8IGdyZXAgICJeLS0tIiAgPj4gJFRTX09VVFBVVAotIGVjaG8gPj4gJFRTX09VVFBVVAotIAotIHRzX2xvZyAidGVzdDogc2VtIGhlYWRlcnMiCi0tJFRTX0NNRF9JUENTIC1zIC10IHwgZ3JlcCAtLWFmdGVyLWNvbnRleHQ9MSAiXi0tLSIgID4+ICRUU19PVVRQVVQKLS0kVFNfQ01EX0lQQ1MgLXMgLXAgfCBncmVwIC0tYWZ0ZXItY29udGV4dD0xICJeLS0tIiAgPj4gJFRTX09VVFBVVAotLSRUU19DTURfSVBDUyAtcyAtYyB8IGdyZXAgLS1hZnRlci1jb250ZXh0PTEgIl4tLS0iICA+PiAkVFNfT1VUUFVUCi0rJFRTX0NNRF9JUENTIC1zIC10IHwgZ3JlcCAtQSAxICJeLS0tIiAgPj4gJFRTX09VVFBVVAotKyRUU19DTURfSVBDUyAtcyAtcCB8IGdyZXAgLUEgMSAiXi0tLSIgID4+ICRUU19PVVRQVVQKLSskVFNfQ01EX0lQQ1MgLXMgLWMgfCBncmVwIC1BIDEgIl4tLS0iICA+PiAkVFNfT1VUUFVUCi0gJFRTX0NNRF9JUENTIC1zIC1sIHwgZ3JlcCAgIl4tLS0iICA+PiAkVFNfT1VUUFVUCi0gJFRTX0NNRF9JUENTIC1zIC11IHwgZ3JlcCAgIl4tLS0iICA+PiAkVFNfT1VUUFVUCi0gZWNobyA+PiAkVFNfT1VUUFVUCi0gCi0gdHNfbG9nICJ0ZXN0OiBhbGwgaGVhZGVycyIKLS0kVFNfQ01EX0lQQ1MgLWEgfCBncmVwIC0tYWZ0ZXItY29udGV4dD0xICJeLS0tIiAgPj4gJFRTX09VVFBVVAotKyRUU19DTURfSVBDUyAtYSB8IGdyZXAgLUEgMSAiXi0tLSIgID4+ICRUU19PVVRQVVQKLSAKLS0kVFNfQ01EX0lQQ1MgLWEgLXQgfCBncmVwIC0tYWZ0ZXItY29udGV4dD0xICJeLS0tIiAgPj4gJFRTX09VVFBVVAotLSRUU19DTURfSVBDUyAtYSAtcCB8IGdyZXAgLS1hZnRlci1jb250ZXh0PTEgIl4tLS0iICA+PiAkVFNfT1VUUFVUCi0tJFRTX0NNRF9JUENTIC1hIC1jIHwgZ3JlcCAtLWFmdGVyLWNvbnRleHQ9MSAiXi0tLSIgID4+ICRUU19PVVRQVVQKLSskVFNfQ01EX0lQQ1MgLWEgLXQgfCBncmVwIC1BIDEgIl4tLS0iICA+PiAkVFNfT1VUUFVUCi0rJFRTX0NNRF9JUENTIC1hIC1wIHwgZ3JlcCAtQSAxICJeLS0tIiAgPj4gJFRTX09VVFBVVAotKyRUU19DTURfSVBDUyAtYSAtYyB8IGdyZXAgLUEgMSAiXi0tLSIgID4+ICRUU19PVVRQVVQKLSAkVFNfQ01EX0lQQ1MgLWEgLWwgfCBncmVwICJeLS0tIiAgPj4gJFRTX09VVFBVVAotICRUU19DTURfSVBDUyAtYSAtdSB8IGdyZXAgIl4tLS0iICA+PiAkVFNfT1VUUFVUCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4L2F2b2lkX3Vuc3VwcG9ydGVkX3NsZWVwX3BhcmFtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC9hdm9pZF91bnN1cHBvcnRlZF9zbGVlcF9wYXJhbS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2E2M2E0ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4L2F2b2lkX3Vuc3VwcG9ydGVkX3NsZWVwX3BhcmFtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotQXZvaWQgdW5zdXBwb3J0ZWQgc2xlZXAgcGFyYW1ldGVyCi0KLVNpZ25lZC1vZmYtYnk6IFR1ZG9yIEZsb3JlYSA8dHVkb3IuZmxvcmVhQGVuZWEuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLWRpZmYgLXJ1TiBhL3NpbXBsZSBiL3NpbXBsZQotLS0tIGEvdGVzdHMvdHMvdGFpbGYvc2ltcGxlCTIwMTUtMTEtMTIgMTE6MzQ6NDkuOTcxODE3MTMwICswMjAwCi0rKysgYi90ZXN0cy90cy90YWlsZi9zaW1wbGUJMjAxMy0xMS0xMiAxMTozNDozNy44NzYzMjUxMjggKzAyMDAKLUBAIC0yNyw5ICsyNyw5IEBACi0gCi0gJFRTX0NNRF9UQUlMRiAkSU5QVVQgPiAkVFNfT1VUUFVUIDI+JjEgJgotIAotLXNsZWVwIDAuNQotK3NsZWVwIDEKLSBlY2hvIHswLi45fSA+PiAkSU5QVVQKLS1zbGVlcCAwLjUKLStzbGVlcCAxCi0gCi0gcm0gLWYgJElOUFVUCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4L2Rpc3BsYXlfdGVzdG5hbWVfZm9yX3N1YnRlc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4L2Rpc3BsYXlfdGVzdG5hbWVfZm9yX3N1YnRlc3QucGF0Y2gKaW5kZXggMGViODgxMC4uNDE3Y2ExZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC9kaXNwbGF5X3Rlc3RuYW1lX2Zvcl9zdWJ0ZXN0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvZGlzcGxheV90ZXN0bmFtZV9mb3Jfc3VidGVzdC5wYXRjaApAQCAtMywxNiArMywyMyBAQAogU2lnbmVkLW9mZi1ieTogVHVkb3IgRmxvcmVhIDx0dWRvci5mbG9yZWFAZW5lYS5jb20+CiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAotZGlmZiAtcnVOIGEvZnVuY3Rpb25zLnNoIGIvZnVuY3Rpb25zLnNoCi0tLS0gYS90ZXN0cy9mdW5jdGlvbnMuc2gJMjAxNS0xMS0xMiAyMTozMjowMi40MzQ1NDIxMjQgKzAxMDAKLSsrKyBiL3Rlc3RzL2Z1bmN0aW9ucy5zaAkyMDE1LTExLTEyIDIxOjQwOjM3LjA5NTMxNzI4MCArMDEwMAotQEAgLTI5Nyw3ICsyOTcsNyBAQAotIAlpZiBbICIkVFNfUEFSQUxMRUwiID09ICJ5ZXMiIF07IHRoZW4KLSAJCVRTX1RJVExFPSQocHJpbnRmICIlMTNzOiAlLTMwcyAuLi5cbiUxNnM6ICUtMjdzIC4uLiIgIiRUU19DT01QT05FTlQiICIkVFNfREVTQyIgIiIgIiRUU19TVUJOQU1FIikKLSAJZWxzZQotLQkJVFNfVElUTEU9JChwcmludGYgIiUxNnM6ICUtMjdzIC4uLiIgIiIgIiRUU19TVUJOQU1FIikKLSsgICAgICAgICAgICAgICBUU19USVRMRT0kKHByaW50ZiAiJTEzczogJS0zMHMgLi4uIiAiJFRTX0NPTVBPTkVOVCIgIiRUU19TVUJOQU1FIikKLSAJCWVjaG8gLW4gIiRUU19USVRMRSIKKy0tLQorIHRlc3RzL2Z1bmN0aW9ucy5zaCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RzL2Z1bmN0aW9ucy5zaCBiL3Rlc3RzL2Z1bmN0aW9ucy5zaAoraW5kZXggNTI0NjYwNS4uYjI0ZGMxNSAxMDA2NDQKKy0tLSBhL3Rlc3RzL2Z1bmN0aW9ucy5zaAorKysrIGIvdGVzdHMvZnVuY3Rpb25zLnNoCitAQCAtMzIwLDcgKzMyMCw3IEBAIGZ1bmN0aW9uIHRzX2luaXRfc3VidGVzdCB7CisgCisgCWlmIFsgIiRUU19QQVJTQUJMRSIgIT0gInllcyIgXTsgdGhlbgorIAkJWyAkVFNfTlNVQlRFU1RTIC1lcSAxIF0gJiYgZWNobworLQkJcHJpbnRmICIlMTZzOiAlLTI3cyAuLi4iICIiICIkVFNfU1VCTkFNRSIKKysJCXByaW50ZiAiJTEzczogJS0zMHMgLi4uIiAiJFRTX0NPTVBPTkVOVCIgIiRUU19TVUJOQU1FIgogIAlmaQogIH0KKyAKKy0tIAorMi44LjMKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC9wdGVzdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvcHRlc3QucGF0Y2gKaW5kZXggODM3ZjE4OS4uMDUzN2Y3ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC9wdGVzdC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4L3B0ZXN0LnBhdGNoCkBAIC0yLDE2ICsyLDIyIEBACiAKIFNpZ25lZC1vZmYtYnk6IFR1ZG9yIEZsb3JlYSA8dHVkb3IuZmxvcmVhQGVuZWEuY29tPgogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBNYWtlZmlsZS5hbSB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQogCi1kaWZmIC1ydU4gYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi0tLS0gYS9NYWtlZmlsZS5hbQkyMDE1LTExLTEyIDIwOjI5OjQ2Ljc3ODM5NjkzNiArMDEwMAotKysrIGIvTWFrZWZpbGUuYW0JMjAxNS0xMS0xMiAyMDozMjoyNC4zNDI0NTAyNzkgKzAxMDAKLUBAIC00OCw3ICs0OCw3IEBACitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggYmJhY2NiMS4uN2Q1YTZiYiAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTQ4LDYgKzQ4LDcgQEAgc3lzdGVtZHN5c3RlbXVuaXRfREFUQSA9CiAgZGlzdF9iYXNoY29tcGxldGlvbl9EQVRBID0KICBjaGVja19QUk9HUkFNUyA9CiAgZGlzdF9jaGVja19TQ1JJUFRTID0KLS1URVNUUyA9CiArVEVTVFMgPSAkKGNoZWNrX1BST0dSQU1TKQogIAogIFBBVEhGSUxFUyA9CisgCistLSAKKzIuOC4zCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvdXRpbC1saW51eC1uYXRpdmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4L3V0aWwtbGludXgtbmF0aXZlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjQ5NmRlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvdXRpbC1saW51eC1uYXRpdmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1TdXBwb3J0IG9sZGVyIGhvc3RzIHdpdGggbGF0ZXN0IHV0aWwtbGludXgtbmF0aXZlCi0KLW1rb3N0ZW1wIGlzIG5vdCBkZWZpbmVkIG9uIG9sZGVyIG1hY2hpbmVzLiAgU28gd2UgZGV0ZWN0IHRoaXMgYW5kCi1wcm92aWRlIGEgZGVmaW5lIHRoYXQgdXNlcyBta3N0ZW1wIGluc3RlYWQuCi0KLU9fQ0xPRVhFQyBpcyBub3QgZGVmaW5lZCBvbiBvbGRlciBtYWNoaW5lcy4gIEl0IGlzIGhvd2V2ZXIgZGVmaW5lZAotaW4gdGhlICdjLmgnIGhlYWRlci4gIEZpeCB1cCB0aGUgdXNlcnMgdG8gaW5jbHVkZSAnYy5oJy4KLQotZmRpc2tzL2ZkaXNrc3VubGFiZWwuYyB3YXMgbW9kaWZpZWQgdG8gdXNlIHFzb3J0X3IsIGhvd2V2ZXIKLXRoaXMgaXMgbm90IGRlZmluZWQgb24gb2xkZXIgaG9zdHMuICBSZXZlcnQ6Ci0gIGNvbW1pdCBjNjliYmNhOWMxZjY2NDUwOTdiZDIwZmUzYTIxZjVhOTlhMmEwNjk4Ci0gIGZkaXNrOiAoc3VuKTogdXNlIGFzayBBUEksIHJlbW92ZSBnbG9iYWwgdmFyaWFibGUKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvdGhlcl0KLVBhdGNoZXMgcmV2ZXJ0IHVwc3RyZWFtIGNoYW5nZXMgaW4gb3JkZXIgdG8gc3VwcG9ydCBvbGRlcgotbWFjaGluZXMuCi0KLVNpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDEgKwotIGluY2x1ZGUvYy5oICB8IDcgKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGViMzY4MGIuLjkzZTAxNWYgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTMxOCw2ICszMTgsNyBAQCBBQ19DSEVDS19GVU5DUyhbIFwKLSAJbGxzZWVrIFwKLSAJbHNlZWs2NCBcCi0gCW1lbXBjcHkgXAotKwlta29zdGVtcCBcCi0gCW5hbm9zbGVlcCBcCi0gCW9wZW5fbWVtc3RyZWFtIFwKLSAJcGVyc29uYWxpdHkgXAotZGlmZiAtLWdpdCBhL2luY2x1ZGUvYy5oIGIvaW5jbHVkZS9jLmgKLWluZGV4IGU0MjNlOGIuLmNmMzNiOTQgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2MuaAotKysrIGIvaW5jbHVkZS9jLmgKLUBAIC0yMzMsNiArMjMzLDEzIEBAIHN0YXRpYyBpbmxpbmUgaW50IGRpcmZkKERJUiAqZCkKLSAjZW5kaWYKLSAKLSAvKgotKyAqIG1rb3N0ZW1wIHJlcGxhY2VtZW50Ci0rICovCi0rI2lmbmRlZiBIQVZFX01LT1NURU1QCi0rI2RlZmluZSBta29zdGVtcCh0ZW1wbGF0ZSwgZmxhZ3MpIG1rc3RlbXAodGVtcGxhdGUpCi0rI2VuZGlmCi0rCi0rLyoKLSAgKiBNQVhIT1NUTkFNRUxFTiByZXBsYWNlbWVudAotICAqLwotIHN0YXRpYyBpbmxpbmUgc2l6ZV90IGdldF9ob3N0bmFtZV9tYXgodm9pZCkKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC91dGlsLWxpbnV4LW5nLTIuMTYtbW91bnRfbG9ja19wYXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC91dGlsLWxpbnV4LW5nLTIuMTYtbW91bnRfbG9ja19wYXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzczZDdlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvdXRpbC1saW51eC1uZy0yLjE2LW1vdW50X2xvY2tfcGF0aC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLVRoZSBGSFMgaW5kaWNhdGVzIHRoYXQgL2V0YyBtdXN0IGJlIGNhcGFibGUgb2YgYmVpbmcgbW91bnRlZCBSL08uCi0KLVRoZSBGSFMgYWxzbyBpbmRpY2F0ZXMgdGhhdCBsb2NrIGZpbGVzIGJlbG9uZyBpbiAvdmFyL2xvY2ssIGFuZCAvdmFyIG11c3QKLWJlIFIvVyBhcyBzb29uIGFzIHBvc3NpYmxlIGR1cmluZyBib290LgotCi1UaGlzIHBhdGNoIG1vdmVzIHRoZSBtdGFiIGxvY2sgZmlsZSBmcm9tIHRoZSBwb3RlbnRpYWxseSBSL08gL2V0YywgdG8gdGhlCi1SL1cgL3Zhci9sb2NrIGFyZWEuICBUaGlzIGxvY2sgZmlsZSBpcyB1c2VkIHdoZW4gbW91bnRpbmcgZGlza3MgYW5kIG1ha2luZwotb3RoZXIgbW91bnQgYWRqdXN0bWVudHMuICBUaGUgX1BBVEhfTU9VTlRFRF9UTVAgaXMgbm90IGFkanVzdGVkLCBhcyBmYWlsaW5nCi10byB3cml0ZSB0byB0aGlzIGZpbGUgZG9lcyBub3QgY2F1c2UgYW55IGZ1bmN0aW9uYWwgbGltaXRhdGlvbnMuCi0KLShOb3RlLCBpZiAvZXRjIGlzIFIvTywgdGhlbiAvZXRjL210YWIgc2hvdWxkIGJlIGEgc3ltbGluayB0byAvcHJvYy9tb3VudHMpCi0KLVNpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KLQotLS0tIHV0aWwtbGludXgtbmctMi4xNi9pbmNsdWRlL3BhdGhuYW1lcy5oLm9yaWcKLSsrKyB1dGlsLWxpbnV4LW5nLTIuMTYvaW5jbHVkZS9wYXRobmFtZXMuaAotQEAgLTkwLDcgKzkwLDcgQEAKLSAjIGVuZGlmCi0gI2VuZGlmCi0gCi0tI2RlZmluZSBfUEFUSF9NT1VOVEVEX0xPQ0sJX1BBVEhfTU9VTlRFRCAifiIKLSsjZGVmaW5lIF9QQVRIX01PVU5URURfTE9DSwkiL3Zhci9sb2NrL210YWJ+IgotICNkZWZpbmUgX1BBVEhfTU9VTlRFRF9UTVAJX1BBVEhfTU9VTlRFRCAiLnRtcCIKLSAKLSAjaWZuZGVmIF9QQVRIX0RFVgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC91dWlkLXRlc3QtZXJyb3ItYXBpLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC91dWlkLXRlc3QtZXJyb3ItYXBpLnBhdGNoCmluZGV4IDFiMGZmNzkuLmE2ZmRlNWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvdXVpZC10ZXN0LWVycm9yLWFwaS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4L3V1aWQtdGVzdC1lcnJvci1hcGkucGF0Y2gKQEAgLTMsMTkgKzMsMjMgQEAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIAotSW5kZXg6IHV0aWwtbGludXgtMi4yNy4xL3Rlc3RzL2hlbHBlcnMvdGVzdF91dWlkZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdXRpbC1saW51eC0yLjI3LjEub3JpZy90ZXN0cy9oZWxwZXJzL3Rlc3RfdXVpZGQuYwotKysrIHV0aWwtbGludXgtMi4yNy4xL3Rlc3RzL2hlbHBlcnMvdGVzdF91dWlkZC5jCistLS0KKyBtaXNjLXV0aWxzL3Rlc3RfdXVpZGQuYyB8IDYyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNjEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbWlzYy11dGlscy90ZXN0X3V1aWRkLmMgYi9taXNjLXV0aWxzL3Rlc3RfdXVpZGQuYworaW5kZXggMzZmM2IzZC4uN2Q1NzljZSAxMDA2NDQKKy0tLSBhL21pc2MtdXRpbHMvdGVzdF91dWlkZC5jCisrKysgYi9taXNjLXV0aWxzL3Rlc3RfdXVpZGQuYwogQEAgLTIzLDcgKzIzLDYgQEAKICAgKgogICAqCW1ha2UgdXVpZGQgdXVpZGdlbiBsb2NhbHN0YXRlZGlyPS92YXIKICAgKi8KIC0jaW5jbHVkZSA8ZXJyb3IuaD4KLSAjaW5jbHVkZSA8bGliZ2VuLmg+CiAgI2luY2x1ZGUgPHB0aHJlYWQuaD4KICAjaW5jbHVkZSA8c3RkaW8uaD4KLUBAIC0zOSw2ICszOCwxNyBAQAorICNpbmNsdWRlIDxzdGRsaWIuaD4KK0BAIC0zOCw2ICszNywxNyBAQAogICNpbmNsdWRlICJ4YWxsb2MuaCIKICAjaW5jbHVkZSAic3RydXRpbHMuaCIKICAKQEAgLTMzLDcgKzM3LDcgQEAKICAjZGVmaW5lIExPRyhsZXZlbCxhcmdzKSBpZiAobG9nbGV2ID49IGxldmVsKSB7IGZwcmludGYgYXJnczsgfQogIAogIHNpemVfdCBucHJvY2Vzc2VzID0gNDsKLUBAIC0yNTcsNiArMjY3LDU2IEBAIHN0YXRpYyB2b2lkIG9iamVjdF9kdW1wKHNpemVfdCBpZHgsIG9iamUKK0BAIC0yNTYsNiArMjY2LDU2IEBAIHN0YXRpYyB2b2lkIG9iamVjdF9kdW1wKHNpemVfdCBpZHgsIG9iamVjdF90ICpvYmopCiAgCWZwcmludGYoc3RkZXJyLCAifVxuIik7CiAgfQogIApAQCAtOTAsMyArOTQsNiBAQAogIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgewogIAlzaXplX3QgaSwgbmZhaWxlZCA9IDAsIG5pZ25vcmVkID0gMDsKKy0tIAorMi44LjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eF8yLjI3LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4XzIuMjcuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzU0OTE1OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4XzIuMjcuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLU1BSk9SX1ZFUlNJT04gPSAiMi4yNyIKLXJlcXVpcmUgdXRpbC1saW51eC5pbmMKLQotIyBUbyBzdXBwb3J0IG9sZGVyIGhvc3RzLCB3ZSBuZWVkIHRvIHBhdGNoIGFuZC9vciByZXZlcnQKLSMgc29tZSB1cHN0cmVhbSBjaGFuZ2VzLiAgT25seSBkbyB0aGlzIGZvciBuYXRpdmUgcGFja2FnZXMuCi1PTERIT1NUID0gIiIKLU9MREhPU1RfY2xhc3MtbmF0aXZlID0gImZpbGU6Ly91dGlsLWxpbnV4LW5hdGl2ZS5wYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdXRpbC1saW51eC1uYXRpdmUtcXNvcnQucGF0Y2ggXAotCQkJIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vdXRpbC1saW51eC1uZy0yLjE2LW1vdW50X2xvY2tfcGF0aC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLXNiaW5kaXIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3J1bnVzZXIucGFtZCBcCi0gICAgICAgICAgICBmaWxlOi8vcnVudXNlci1sLnBhbWQgXAotICAgICAgICAgICAgJHtPTERIT1NUfSBcCi0gICAgICAgICAgICBmaWxlOi8vcHRlc3QucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgICBmaWxlOi8vYXZvaWRfdW5zdXBwb3J0ZWRfc2xlZXBfcGFyYW0ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2F2b2lkX3Vuc3VwcG9ydGVkX2dyZXBfb3B0cy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vZGlzcGxheV90ZXN0bmFtZV9mb3Jfc3VidGVzdC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3V1aWQtdGVzdC1lcnJvci1hcGkucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjNjZDI2OThkMTM2M2EyYzY0MDkxYzJkYWRjOTc0NjQ3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBhODE4ZmNkZWRlOTlhZWM0M2ZmZTZjYTViNTM4OGJmZjgwZDE2MmYyZjdiZDQ1NDFkY2E5NGZlY2I4N2EyOTAiCi0KLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJzY2FuZl9jdl9hbGxvY19tb2RpZmllcj1tcyIKLQotRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICIke1NIQVJFRF9FWFRSQV9PRUNPTkZ9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWZhbGxvY2F0ZSBcCi0JCQkgICAgIC0tZGlzYWJsZS11c2UtdHR5LWdyb3VwIFwKLSIKLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmVzZGsgPSAiJHtTSEFSRURfRVhUUkFfT0VDT05GfSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1mYWxsb2NhdGUgXAotCQkJCS0tZGlzYWJsZS11c2UtdHR5LWdyb3VwIFwKLSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXhfMi4yOC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eF8yLjI4LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjIzMmNiOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXhfMi4yOC4xLmJiCkBAIC0wLDAgKzEsMzEgQEAKK01BSk9SX1ZFUlNJT04gPSAiMi4yOCIKK3JlcXVpcmUgdXRpbC1saW51eC5pbmMKKworIyBUbyBzdXBwb3J0IG9sZGVyIGhvc3RzLCB3ZSBuZWVkIHRvIHBhdGNoIGFuZC9vciByZXZlcnQKKyMgc29tZSB1cHN0cmVhbSBjaGFuZ2VzLiAgT25seSBkbyB0aGlzIGZvciBuYXRpdmUgcGFja2FnZXMuCitPTERIT1NUID0gIiIKK09MREhPU1RfY2xhc3MtbmF0aXZlID0gImZpbGU6Ly91dGlsLWxpbnV4LW5hdGl2ZS1xc29ydC5wYXRjaCIKKworU1JDX1VSSSArPSAiZmlsZTovL2NvbmZpZ3VyZS1zYmluZGlyLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9ydW51c2VyLnBhbWQgXAorICAgICAgICAgICAgZmlsZTovL3J1bnVzZXItbC5wYW1kIFwKKyAgICAgICAgICAgICR7T0xESE9TVH0gXAorICAgICAgICAgICAgZmlsZTovL3B0ZXN0LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICAgZmlsZTovL2Rpc3BsYXlfdGVzdG5hbWVfZm9yX3N1YnRlc3QucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly91dWlkLXRlc3QtZXJyb3ItYXBpLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJlMmQ4NjNlZmFmNGZkMzMwYTQyYzVlZmU5ZjFiMDJiNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzZWNlNGVhNGEzNGVmNzg2YjY4ZjVjNDE1ZTg0ODM5MDQyNDIzMmFiZDFlZTAwZjdlZTViZGRjMzA2NTdiNjBmIgorCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAic2NhbmZfY3ZfYWxsb2NfbW9kaWZpZXI9bXMiCisKK0VYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiJHtTSEFSRURfRVhUUkFfT0VDT05GfSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1mYWxsb2NhdGUgXAorCQkJICAgICAtLWRpc2FibGUtdXNlLXR0eS1ncm91cCBcCisiCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlc2RrID0gIiR7U0hBUkVEX0VYVFJBX09FQ09ORn0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZmFsbG9jYXRlIFwKKwkJCQktLWRpc2FibGUtdXNlLXR0eS1ncm91cCBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQtbmF0aXZlLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC1uYXRpdmUuaW5jCmluZGV4IDI3Y2M5ZmYuLjlmYTIwNmUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC1uYXRpdmUuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC1uYXRpdmUuaW5jCkBAIC0xNyw4ICsxNyw4IEBACiB9CiAKIHB5dGhvbiBkb19pbnN0YWxsX2NvbmZpZyAoKSB7Ci0gICAgaW5kaXIgPSBvcy5wYXRoLmRpcm5hbWUoZC5nZXRWYXIoJ0ZJTEUnLDEpKQotICAgIGluZmlsZSA9IGZpbGUob2UucGF0aC5qb2luKGluZGlyLCAnZmlsZXMnLCAnYXB0LmNvbmYnKSwgJ3InKQorICAgIGluZGlyID0gb3MucGF0aC5kaXJuYW1lKGQuZ2V0VmFyKCdGSUxFJywgVHJ1ZSkpCisgICAgaW5maWxlID0gb3BlbihvZS5wYXRoLmpvaW4oaW5kaXIsICdmaWxlcycsICdhcHQuY29uZicpLCAncicpCiAgICAgZGF0YSA9IGluZmlsZS5yZWFkKCkKICAgICBpbmZpbGUuY2xvc2UoKQogCkBAIC0zMCw3ICszMCw3IEBACiAKICAgICBvdXRwYXRoID0gb2UucGF0aC5qb2luKG91dGRpciwgJ2FwdC5jb25mLnNhbXBsZScpCiAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG91dHBhdGgpOgotICAgICAgICBvdXRmaWxlID0gZmlsZShvdXRwYXRoLCAndycpCisgICAgICAgIG91dGZpbGUgPSBvcGVuKG91dHBhdGgsICd3JykKICAgICAgICAgb3V0ZmlsZS53cml0ZShkYXRhKQogICAgICAgICBvdXRmaWxlLmNsb3NlKCkKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC1uYXRpdmVfMS4wLjEwLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQtbmF0aXZlXzEuMi4xMi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0LW5hdGl2ZV8xLjAuMTAuMS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0LW5hdGl2ZV8xLjIuMTIuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQuaW5jCmluZGV4IDc4ZWY1YTcuLjMwMjYzNzAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0LmluYwpAQCAtMiw3ICsyLDcgQEAKIExJQ0VOU0UgPSAiR1BMdjIuMCsiCiBTRUNUSU9OID0gImJhc2UiCiAKLVNSQ19VUkkgPSAiaHR0cDovL3NuYXBzaG90LmRlYmlhbi5vcmcvYXJjaGl2ZS9kZWJpYW4vMjAxNTA4MDVUMDk0OTI4Wi9wb29sL21haW4vYS8ke0JQTn0vJHtCUE59XyR7UFZ9LnRhci54eiBcCitTUkNfVVJJID0gImh0dHA6Ly9zbmFwc2hvdC5kZWJpYW4ub3JnL2FyY2hpdmUvZGViaWFuLzIwMTYwNTI2VDE2Mjk0M1ovcG9vbC9tYWluL2EvJHtCUE59LyR7QlBOfV8ke1BWfS50YXIueHogXAogICAgICAgICAgICBmaWxlOi8vdXNlLWhvc3QucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vbWFrZXJhY2UucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vbm8tbmxzLWRwa2cucGF0Y2ggXApAQCAtMTIsMTYgKzEyLDE3IEBACiAgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWNvbmZpZ3VyZS1pbi1tYWtlZmlsZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLXRlc3QucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1lbnZpcm9ubWVudC5tYWstbXVzbC1iYXNlZC1zeXN0ZW1zLWNhbi1nZW5lcmF0ZS1zaGFyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYXB0LTEuMi4xMi1GaXgtbXVzbC1idWlsZC5wYXRjaCBcCiAgICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI2NTA1YzQyOTdiMzM4YWRiMjA4N2NlODdiYmM0YTI3NiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzZmIxZGU5NTk4MzYzYzQxNjU5MWQ0OWUzYzI4NTQ1OGUwOTViMDM1ZTZjMDZkNWI5NDRhNTRlMTVmYzliNTQzIgorU1JDX1VSSVttZDVzdW1dID0gIjgwZjZmMGVmMTEwYTQ1YTdlNWFmOGE5ZDIzM2ZiMGU3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImU4MjBkMjdjYmE3MzQ3NmRmNGFiY2ZmMjdkYWRkMWI1ODQ3NDc0YmZlODVmN2U5MjAyYTlhMDc1MjY5NzNlYTYiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkdQTDttZDU9MDYzNmU3M2ZmMDIxNWU4ZDY3MmRjNGMzMmMzMTdiYjMiCiAKICMgdGhlIHBhY2thZ2UgaXMgdGFrZW4gZnJvbSBzbmFwc2hvdHMuZGViaWFuLm9yZzsgdGhhdCBzb3VyY2UgaXMgc3RhdGljIGFuZCBnb2VzIHN0YWxlCiAjIHNvIHdlIGNoZWNrIHRoZSBsYXRlc3QgdXBzdHJlYW0gZnJvbSBhIGRpcmVjdG9yeSB0aGF0IGRvZXMgZ2V0IHVwZGF0ZWQKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vYS9hcHQvIgogCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0Citpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHVzZXJhZGQKIAogRVhUUkFfQVVUT1JFQ09ORiA9ICItLWV4Y2x1ZGU9YXV0b3BvaW50LGF1dG9oZWFkZXIiCiAKQEAgLTI5LDMgKzMwLDYgQEAKICAgICBybSAtcmYgJHtTfS9idWlsZGxpYi9jb25maWcuc3ViCiAgICAgcm0gLXJmICR7U30vYnVpbGRsaWIvY29uZmlnLmd1ZXNzCiB9CisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitVU0VSQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIC0tbm8tY3JlYXRlLWhvbWUgLS1ob21lLWRpciAvbm9uZXhpc3RlbnQgLS1zaGVsbCAvYmluL2ZhbHNlIC0tdXNlci1ncm91cCBfYXB0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0LzAwMDEtUmV2ZXJ0LWFsd2F5cy1ydW4tZHBrZy1jb25maWd1cmUtYS1hdC10aGUtZW5kLW9mLW91ci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC8wMDAxLVJldmVydC1hbHdheXMtcnVuLWRwa2ctY29uZmlndXJlLWEtYXQtdGhlLWVuZC1vZi1vdXIucGF0Y2gKaW5kZXggZDMzMDY5Yi4uYjNhODgzYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0LzAwMDEtUmV2ZXJ0LWFsd2F5cy1ydW4tZHBrZy1jb25maWd1cmUtYS1hdC10aGUtZW5kLW9mLW91ci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvMDAwMS1SZXZlcnQtYWx3YXlzLXJ1bi1kcGtnLWNvbmZpZ3VyZS1hLWF0LXRoZS1lbmQtb2Ytb3VyLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAxMDY3OTdmMWM2NmZhNTc4ZGFkMjFmZDkzODBiZjlkNTc2NTczZGZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBkZmMxMzcwZDUwMzIyZTJlOWQyMjVhN2E2M2I0NDk5M2ZjMDFhNzI3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgogRGF0ZTogRnJpLCAyMiBNYXkgMjAxNSAwODowNToxNSArMDgwMAogU3ViamVjdDogW1BBVENIXSBSZXZlcnQgImFsd2F5cyBydW4gJ2Rwa2cgLS1jb25maWd1cmUgLWEnIGF0IHRoZSBlbmQgb2Ygb3VyCkBAIC0xNiwyMSArMTYsMTYgQEAKIAogU2lnbmVkLW9mZi1ieTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgogLS0tCi0gYXB0LXBrZy9kZWIvZHBrZ3BtLmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOSArLS0KLSB0ZXN0L2ludGVncmF0aW9uL2ZyYW1ld29yayAgICAgICAgICAgICAgICAgICAgICAgICB8IDI1ICsrKystLS0tCi0gdGVzdC9pbnRlZ3JhdGlvbi90ZXN0LWFwdC1wcm9ncmVzcy1mZCAgICAgICAgICAgICAgfCA2NyArKysrKysrKystLS0tLS0tLS0tCi0gdGVzdC9pbnRlZ3JhdGlvbi90ZXN0LWFwdC1wcm9ncmVzcy1mZC1kZWI4MjIgICAgICAgfCAxOCArKy0tLS0KLSB0ZXN0L2ludGVncmF0aW9uL3Rlc3QtYXB0LXByb2dyZXNzLWZkLWVycm9yICAgICAgICB8ICAyICstCi0gLi4uZXN0LWJ1Zy03Njk2MDktdHJpZ2dlcnMtc3RpbGwtcGVuZGluZy1hZnRlci1ydW4gfCA3NSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gLi4uL3Rlc3Qtbm8tZmRzLWxlYWtlZC10by1tYWludGFpbmVyLXNjcmlwdHMgICAgICAgfCAgNiArLQotIDcgZmlsZXMgY2hhbmdlZCwgNTYgaW5zZXJ0aW9ucygrKSwgMTQ2IGRlbGV0aW9ucygtKQotIGRlbGV0ZSBtb2RlIDEwMDc1NSB0ZXN0L2ludGVncmF0aW9uL3Rlc3QtYnVnLTc2OTYwOS10cmlnZ2Vycy1zdGlsbC1wZW5kaW5nLWFmdGVyLXJ1bgorIGFwdC1wa2cvZGViL2Rwa2dwbS5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA5ICsrLS0tLS0tLQorIHRlc3QvaW50ZWdyYXRpb24vdGVzdC1hcHQtcHJvZ3Jlc3MtZmQtZGViODIyICAgICAgICAgICAgICB8IDE0ICsrKysrKystLS0tLS0tCisgdGVzdC9pbnRlZ3JhdGlvbi90ZXN0LW5vLWZkcy1sZWFrZWQtdG8tbWFpbnRhaW5lci1zY3JpcHRzIHwgIDYgKystLS0tCisgMyBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2FwdC1wa2cvZGViL2Rwa2dwbS5jYyBiL2FwdC1wa2cvZGViL2Rwa2dwbS5jYwotaW5kZXggYjE4N2VmYi4uZjI2OTc2NCAxMDA2NDQKK2luZGV4IDgzNGNiMGUuLjg0ZGVkM2EgMTAwNjQ0CiAtLS0gYS9hcHQtcGtnL2RlYi9kcGtncG0uY2MKICsrKyBiL2FwdC1wa2cvZGViL2Rwa2dwbS5jYwotQEAgLTEwNDksMTIgKzEwNDksNiBAQCB2b2lkIHBrZ0RQa2dQTTo6QnVpbGRQYWNrYWdlc1Byb2dyZXNzTWFwKCkKK0BAIC0xMDM3LDEyICsxMDM3LDYgQEAgdm9pZCBwa2dEUGtnUE06OkJ1aWxkUGFja2FnZXNQcm9ncmVzc01hcCgpCiAgCSBQYWNrYWdlc1RvdGFsKys7CiAgICAgICAgfQogICAgIH0KQEAgLTQyLDggKzM3LDggQEAKIC0gICArK1BhY2thZ2VzVG90YWw7CiAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qfX19Ki8KLSAjaWYgKEFQVF9QS0dfTUFKT1IgPj0gNCAmJiBBUFRfUEtHX01JTk9SIDwgMTMpCi1AQCAtMTI5NCw4ICsxMjg4LDkgQEAgYm9vbCBwa2dEUGtnUE06OkdvTm9BQklCcmVhayhBUFQ6OlByb2dyZXNzOjpQYWNrYWdlTWFuYWdlciAqcHJvZ3Jlc3MpCisgYm9vbCBwa2dEUGtnUE06OkdvKGludCBTdGF0dXNGZCkKK0BAIC0xMjUwLDggKzEyNDQsOSBAQCBib29sIHBrZ0RQa2dQTTo6R28oQVBUOjpQcm9ncmVzczo6UGFja2FnZU1hbmFnZXIgKnByb2dyZXNzKQogIAogICAgIC8vIHN1cHBvcnQgc3VicHJlc3Npbmcgb2YgdHJpZ2dlcnMgcHJvY2Vzc2luZyBmb3Igc3BlY2lhbAogICAgIC8vIGNhc2VzIGxpa2UgZC1pIHRoYXQgcnVucyB0aGUgdHJpZ2dlcnMgaGFuZGxpbmcgbWFudWFsbHkKQEAgLTU0LDE1OSArNDksMTEgQEAKICAgICAgICBMaXN0LnB1c2hfYmFjayhJdGVtKEl0ZW06OkNvbmZpZ3VyZVBlbmRpbmcsIFBrZ0l0ZXJhdG9yKCkpKTsKICAKICAgICAvLyBmb3IgdGhlIHByb2dyZXNzCi1kaWZmIC0tZ2l0IGEvdGVzdC9pbnRlZ3JhdGlvbi9mcmFtZXdvcmsgYi90ZXN0L2ludGVncmF0aW9uL2ZyYW1ld29yawotaW5kZXggNzBhZDM4MS4uMDA2NzJhZCAxMDA2NDQKLS0tLSBhL3Rlc3QvaW50ZWdyYXRpb24vZnJhbWV3b3JrCi0rKysgYi90ZXN0L2ludGVncmF0aW9uL2ZyYW1ld29yawotQEAgLTExNzgsMTMgKzExNzgsMTAgQEAgdGVzdG5vcGFja2FnZSgpIHsKLSAJZmkKLSB9Ci0gCi0tdGVzdGRwa2dzdGF0dXMoKSB7Ci0tCWxvY2FsIFNUQVRFPSIkMSIKLS0JbG9jYWwgTlI9IiQyIgotLQlzaGlmdCAyCi0tCW1zZ3Rlc3QgIlRlc3QgdGhhdCAkTlIgcGFja2FnZShzKSBhcmUgaW4gc3RhdGUgJFNUQVRFIHdpdGgiICJkcGtnIC1sICQqIgotLQlsb2NhbCBQS0dTPSIkKGRwa2cgLWwgIiRAIiAyPi9kZXYvbnVsbCB8IGdyZXAgIl4ke1NUQVRFfSIgfCB3YyAtbCkiCi0tCWlmIFsgIiRQS0dTIiAhPSAkTlIgXTsgdGhlbgotK3Rlc3RkcGtnaW5zdGFsbGVkKCkgewotKwltc2d0ZXN0ICJUZXN0IGZvciBjb3JyZWN0bHkgaW5zdGFsbGVkIHBhY2thZ2Uocykgd2l0aCIgImRwa2cgLWwgJCoiCi0rCWxvY2FsIFBLR1M9IiQoZHBrZyAtbCAiJEAiIDI+L2Rldi9udWxsIHwgZ3JlcCAnXmknIHwgd2MgLWwpIgotKwlpZiBbICIkUEtHUyIgIT0gJCMgXTsgdGhlbgotIAkJZWNobyA+JjIgJFBLR1MKLSAJCWRwa2cgLWwgIiRAIiB8IGdyZXAgJ15bYS16XScgPiYyCi0gCQltc2dmYWlsCi1AQCAtMTE5MywxMiArMTE5MCwxNiBAQCB0ZXN0ZHBrZ3N0YXR1cygpIHsKLSAJZmkKLSB9Ci0gCi0tdGVzdGRwa2dpbnN0YWxsZWQoKSB7Ci0tCXRlc3RkcGtnc3RhdHVzICdpaScgIiQjIiAiJEAiCi0tfQotLQotIHRlc3RkcGtnbm90aW5zdGFsbGVkKCkgewotLQl0ZXN0ZHBrZ3N0YXR1cyAnaWknICcwJyAiJEAiCi0rCW1zZ3Rlc3QgIlRlc3QgZm9yIGNvcnJlY3RseSBub3QtaW5zdGFsbGVkIHBhY2thZ2Uocykgd2l0aCIgImRwa2cgLWwgJCoiCi0rCWxvY2FsIFBLR1M9IiQoZHBrZyAtbCAiJEAiIDI+IC9kZXYvbnVsbCB8IGdyZXAgJ15pJyB8IHdjIC1sKSIKLSsJaWYgWyAiJFBLR1MiICE9IDAgXTsgdGhlbgotKwkJZWNobwotKwkJZHBrZyAtbCAiJEAiIHwgZ3JlcCAnXlthLXpdJyA+JjIKLSsJCW1zZ2ZhaWwKLSsJZWxzZQotKwkJbXNncGFzcwotKwlmaQotIH0KLSAKLSB0ZXN0bWFya2VkYXV0bygpIHsKLWRpZmYgLS1naXQgYS90ZXN0L2ludGVncmF0aW9uL3Rlc3QtYXB0LXByb2dyZXNzLWZkIGIvdGVzdC9pbnRlZ3JhdGlvbi90ZXN0LWFwdC1wcm9ncmVzcy1mZAotaW5kZXggNjhjYzA0My4uZDcyZTdlNyAxMDA3NTUKLS0tLSBhL3Rlc3QvaW50ZWdyYXRpb24vdGVzdC1hcHQtcHJvZ3Jlc3MtZmQKLSsrKyBiL3Rlc3QvaW50ZWdyYXRpb24vdGVzdC1hcHQtcHJvZ3Jlc3MtZmQKLUBAIC0xOSwxNCArMTksMTMgQEAgdGVzdGVxdWFsICJkbHN0YXR1czoxOjA6UmV0cmlldmluZyBmaWxlIDEgb2YgMQotIGRsc3RhdHVzOjE6MDpSZXRyaWV2aW5nIGZpbGUgMSBvZiAxCi0gcG1zdGF0dXM6ZHBrZy1leGVjOjA6UnVubmluZyBkcGtnCi0gcG1zdGF0dXM6dGVzdGluZzowOkluc3RhbGxpbmcgdGVzdGluZyAoYW1kNjQpCi0tcG1zdGF0dXM6dGVzdGluZzoxNi42NjY3OlByZXBhcmluZyB0ZXN0aW5nIChhbWQ2NCkKLS1wbXN0YXR1czp0ZXN0aW5nOjMzLjMzMzM6VW5wYWNraW5nIHRlc3RpbmcgKGFtZDY0KQotLXBtc3RhdHVzOnRlc3Rpbmc6NTA6UHJlcGFyaW5nIHRvIGNvbmZpZ3VyZSB0ZXN0aW5nIChhbWQ2NCkKLS1wbXN0YXR1czpkcGtnLWV4ZWM6NTA6UnVubmluZyBkcGtnCi0tcG1zdGF0dXM6dGVzdGluZzo1MDpDb25maWd1cmluZyB0ZXN0aW5nIChhbWQ2NCkKLS1wbXN0YXR1czp0ZXN0aW5nOjY2LjY2Njc6Q29uZmlndXJpbmcgdGVzdGluZyAoYW1kNjQpCi0tcG1zdGF0dXM6dGVzdGluZzo4My4zMzMzOkluc3RhbGxlZCB0ZXN0aW5nIChhbWQ2NCkKLS1wbXN0YXR1czpkcGtnLWV4ZWM6ODMuMzMzMzpSdW5uaW5nIGRwa2ciIGNhdCBhcHQtcHJvZ3Jlc3MubG9nCi0rcG1zdGF0dXM6dGVzdGluZzoyMDpQcmVwYXJpbmcgdGVzdGluZyAoYW1kNjQpCi0rcG1zdGF0dXM6dGVzdGluZzo0MDpVbnBhY2tpbmcgdGVzdGluZyAoYW1kNjQpCi0rcG1zdGF0dXM6dGVzdGluZzo2MDpQcmVwYXJpbmcgdG8gY29uZmlndXJlIHRlc3RpbmcgKGFtZDY0KQotK3Btc3RhdHVzOmRwa2ctZXhlYzo2MDpSdW5uaW5nIGRwa2cKLStwbXN0YXR1czp0ZXN0aW5nOjYwOkNvbmZpZ3VyaW5nIHRlc3RpbmcgKGFtZDY0KQotK3Btc3RhdHVzOnRlc3Rpbmc6ODA6Q29uZmlndXJpbmcgdGVzdGluZyAoYW1kNjQpCi0rcG1zdGF0dXM6dGVzdGluZzoxMDA6SW5zdGFsbGVkIHRlc3RpbmcgKGFtZDY0KSIgY2F0IGFwdC1wcm9ncmVzcy5sb2cKLSAKLSAjIHVwZ3JhZGUKLSBleGVjIDM+IGFwdC1wcm9ncmVzcy5sb2cKLUBAIC0zNSwxNCArMzQsMTMgQEAgdGVzdGVxdWFsICJkbHN0YXR1czoxOjA6UmV0cmlldmluZyBmaWxlIDEgb2YgMQotIGRsc3RhdHVzOjE6MDpSZXRyaWV2aW5nIGZpbGUgMSBvZiAxCi0gcG1zdGF0dXM6ZHBrZy1leGVjOjA6UnVubmluZyBkcGtnCi0gcG1zdGF0dXM6dGVzdGluZzowOkluc3RhbGxpbmcgdGVzdGluZyAoYW1kNjQpCi0tcG1zdGF0dXM6dGVzdGluZzoxNi42NjY3OlByZXBhcmluZyB0ZXN0aW5nIChhbWQ2NCkKLS1wbXN0YXR1czp0ZXN0aW5nOjMzLjMzMzM6VW5wYWNraW5nIHRlc3RpbmcgKGFtZDY0KQotLXBtc3RhdHVzOnRlc3Rpbmc6NTA6UHJlcGFyaW5nIHRvIGNvbmZpZ3VyZSB0ZXN0aW5nIChhbWQ2NCkKLS1wbXN0YXR1czpkcGtnLWV4ZWM6NTA6UnVubmluZyBkcGtnCi0tcG1zdGF0dXM6dGVzdGluZzo1MDpDb25maWd1cmluZyB0ZXN0aW5nIChhbWQ2NCkKLS1wbXN0YXR1czp0ZXN0aW5nOjY2LjY2Njc6Q29uZmlndXJpbmcgdGVzdGluZyAoYW1kNjQpCi0tcG1zdGF0dXM6dGVzdGluZzo4My4zMzMzOkluc3RhbGxlZCB0ZXN0aW5nIChhbWQ2NCkKLS1wbXN0YXR1czpkcGtnLWV4ZWM6ODMuMzMzMzpSdW5uaW5nIGRwa2ciIGNhdCBhcHQtcHJvZ3Jlc3MubG9nCi0rcG1zdGF0dXM6dGVzdGluZzoyMDpQcmVwYXJpbmcgdGVzdGluZyAoYW1kNjQpCi0rcG1zdGF0dXM6dGVzdGluZzo0MDpVbnBhY2tpbmcgdGVzdGluZyAoYW1kNjQpCi0rcG1zdGF0dXM6dGVzdGluZzo2MDpQcmVwYXJpbmcgdG8gY29uZmlndXJlIHRlc3RpbmcgKGFtZDY0KQotK3Btc3RhdHVzOmRwa2ctZXhlYzo2MDpSdW5uaW5nIGRwa2cKLStwbXN0YXR1czp0ZXN0aW5nOjYwOkNvbmZpZ3VyaW5nIHRlc3RpbmcgKGFtZDY0KQotK3Btc3RhdHVzOnRlc3Rpbmc6ODA6Q29uZmlndXJpbmcgdGVzdGluZyAoYW1kNjQpCi0rcG1zdGF0dXM6dGVzdGluZzoxMDA6SW5zdGFsbGVkIHRlc3RpbmcgKGFtZDY0KSIgY2F0IGFwdC1wcm9ncmVzcy5sb2cKLSAKLSAjIHJlaW5zdGFsbAotIGV4ZWMgMz4gYXB0LXByb2dyZXNzLmxvZwotQEAgLTUxLDI0ICs0OSwyMiBAQCB0ZXN0ZXF1YWwgImRsc3RhdHVzOjE6MDpSZXRyaWV2aW5nIGZpbGUgMSBvZiAxCi0gZGxzdGF0dXM6MTowOlJldHJpZXZpbmcgZmlsZSAxIG9mIDEKLSBwbXN0YXR1czpkcGtnLWV4ZWM6MDpSdW5uaW5nIGRwa2cKLSBwbXN0YXR1czp0ZXN0aW5nOjA6SW5zdGFsbGluZyB0ZXN0aW5nIChhbWQ2NCkKLS1wbXN0YXR1czp0ZXN0aW5nOjE2LjY2Njc6UHJlcGFyaW5nIHRlc3RpbmcgKGFtZDY0KQotLXBtc3RhdHVzOnRlc3Rpbmc6MzMuMzMzMzpVbnBhY2tpbmcgdGVzdGluZyAoYW1kNjQpCi0tcG1zdGF0dXM6dGVzdGluZzo1MDpQcmVwYXJpbmcgdG8gY29uZmlndXJlIHRlc3RpbmcgKGFtZDY0KQotLXBtc3RhdHVzOmRwa2ctZXhlYzo1MDpSdW5uaW5nIGRwa2cKLS1wbXN0YXR1czp0ZXN0aW5nOjUwOkNvbmZpZ3VyaW5nIHRlc3RpbmcgKGFtZDY0KQotLXBtc3RhdHVzOnRlc3Rpbmc6NjYuNjY2NzpDb25maWd1cmluZyB0ZXN0aW5nIChhbWQ2NCkKLS1wbXN0YXR1czp0ZXN0aW5nOjgzLjMzMzM6SW5zdGFsbGVkIHRlc3RpbmcgKGFtZDY0KQotLXBtc3RhdHVzOmRwa2ctZXhlYzo4My4zMzMzOlJ1bm5pbmcgZHBrZyIgY2F0IGFwdC1wcm9ncmVzcy5sb2cKLStwbXN0YXR1czp0ZXN0aW5nOjIwOlByZXBhcmluZyB0ZXN0aW5nIChhbWQ2NCkKLStwbXN0YXR1czp0ZXN0aW5nOjQwOlVucGFja2luZyB0ZXN0aW5nIChhbWQ2NCkKLStwbXN0YXR1czp0ZXN0aW5nOjYwOlByZXBhcmluZyB0byBjb25maWd1cmUgdGVzdGluZyAoYW1kNjQpCi0rcG1zdGF0dXM6ZHBrZy1leGVjOjYwOlJ1bm5pbmcgZHBrZwotK3Btc3RhdHVzOnRlc3Rpbmc6NjA6Q29uZmlndXJpbmcgdGVzdGluZyAoYW1kNjQpCi0rcG1zdGF0dXM6dGVzdGluZzo4MDpDb25maWd1cmluZyB0ZXN0aW5nIChhbWQ2NCkKLStwbXN0YXR1czp0ZXN0aW5nOjEwMDpJbnN0YWxsZWQgdGVzdGluZyAoYW1kNjQpIiBjYXQgYXB0LXByb2dyZXNzLmxvZwotIAotICMgYW5kIHJlbW92ZQotIGV4ZWMgMz4gYXB0LXByb2dyZXNzLmxvZwotIHRlc3RzdWNjZXNzIGFwdGdldCByZW1vdmUgdGVzdGluZyAteSAtbyBBUFQ6OlN0YXR1cy1GZD0zCi0gdGVzdGVxdWFsICJwbXN0YXR1czpkcGtnLWV4ZWM6MDpSdW5uaW5nIGRwa2cKLSBwbXN0YXR1czp0ZXN0aW5nOjA6UmVtb3ZpbmcgdGVzdGluZyAoYW1kNjQpCi0tcG1zdGF0dXM6dGVzdGluZzoyNTpQcmVwYXJpbmcgZm9yIHJlbW92YWwgb2YgdGVzdGluZyAoYW1kNjQpCi0tcG1zdGF0dXM6dGVzdGluZzo1MDpSZW1vdmluZyB0ZXN0aW5nIChhbWQ2NCkKLS1wbXN0YXR1czp0ZXN0aW5nOjc1OlJlbW92ZWQgdGVzdGluZyAoYW1kNjQpCi0tcG1zdGF0dXM6ZHBrZy1leGVjOjc1OlJ1bm5pbmcgZHBrZyIgY2F0IGFwdC1wcm9ncmVzcy5sb2cKLStwbXN0YXR1czp0ZXN0aW5nOjMzLjMzMzM6UHJlcGFyaW5nIGZvciByZW1vdmFsIG9mIHRlc3RpbmcgKGFtZDY0KQotK3Btc3RhdHVzOnRlc3Rpbmc6NjYuNjY2NzpSZW1vdmluZyB0ZXN0aW5nIChhbWQ2NCkKLStwbXN0YXR1czp0ZXN0aW5nOjEwMDpSZW1vdmVkIHRlc3RpbmcgKGFtZDY0KSIgY2F0IGFwdC1wcm9ncmVzcy5sb2cKLSAKLSAjIGluc3RhbGwgbm9uLW5hdGl2ZSBhbmQgZW5zdXJlIHdlIGdldCBwcm9wZXIgcHJvZ3Jlc3MgaW5mbwotIGV4ZWMgMz4gYXB0LXByb2dyZXNzLmxvZwotQEAgLTc5LDEzICs3NSwxMiBAQCB0ZXN0ZXF1YWwgImRsc3RhdHVzOjE6MDpSZXRyaWV2aW5nIGZpbGUgMSBvZiAxCi0gZGxzdGF0dXM6MTowOlJldHJpZXZpbmcgZmlsZSAxIG9mIDEKLSBwbXN0YXR1czpkcGtnLWV4ZWM6MDpSdW5uaW5nIGRwa2cKLSBwbXN0YXR1czp0ZXN0aW5nMjowOkluc3RhbGxpbmcgdGVzdGluZzIgKGkzODYpCi0tcG1zdGF0dXM6dGVzdGluZzI6MTYuNjY2NzpQcmVwYXJpbmcgdGVzdGluZzIgKGkzODYpCi0tcG1zdGF0dXM6dGVzdGluZzI6MzMuMzMzMzpVbnBhY2tpbmcgdGVzdGluZzIgKGkzODYpCi0tcG1zdGF0dXM6dGVzdGluZzI6NTA6UHJlcGFyaW5nIHRvIGNvbmZpZ3VyZSB0ZXN0aW5nMiAoaTM4NikKLS1wbXN0YXR1czpkcGtnLWV4ZWM6NTA6UnVubmluZyBkcGtnCi0tcG1zdGF0dXM6dGVzdGluZzI6NTA6Q29uZmlndXJpbmcgdGVzdGluZzIgKGkzODYpCi0tcG1zdGF0dXM6dGVzdGluZzI6NjYuNjY2NzpDb25maWd1cmluZyB0ZXN0aW5nMiAoaTM4NikKLS1wbXN0YXR1czp0ZXN0aW5nMjo4My4zMzMzOkluc3RhbGxlZCB0ZXN0aW5nMiAoaTM4NikKLS1wbXN0YXR1czpkcGtnLWV4ZWM6ODMuMzMzMzpSdW5uaW5nIGRwa2ciIGNhdCBhcHQtcHJvZ3Jlc3MubG9nCi0rcG1zdGF0dXM6dGVzdGluZzI6MjA6UHJlcGFyaW5nIHRlc3RpbmcyIChpMzg2KQotK3Btc3RhdHVzOnRlc3RpbmcyOjQwOlVucGFja2luZyB0ZXN0aW5nMiAoaTM4NikKLStwbXN0YXR1czp0ZXN0aW5nMjo2MDpQcmVwYXJpbmcgdG8gY29uZmlndXJlIHRlc3RpbmcyIChpMzg2KQotK3Btc3RhdHVzOmRwa2ctZXhlYzo2MDpSdW5uaW5nIGRwa2cKLStwbXN0YXR1czp0ZXN0aW5nMjo2MDpDb25maWd1cmluZyB0ZXN0aW5nMiAoaTM4NikKLStwbXN0YXR1czp0ZXN0aW5nMjo4MDpDb25maWd1cmluZyB0ZXN0aW5nMiAoaTM4NikKLStwbXN0YXR1czp0ZXN0aW5nMjoxMDA6SW5zdGFsbGVkIHRlc3RpbmcyIChpMzg2KSIgY2F0IGFwdC1wcm9ncmVzcy5sb2cKLSAKLSBybSAtZiBhcHQtcHJvZ3Jlc3MqLmxvZwogZGlmZiAtLWdpdCBhL3Rlc3QvaW50ZWdyYXRpb24vdGVzdC1hcHQtcHJvZ3Jlc3MtZmQtZGViODIyIGIvdGVzdC9pbnRlZ3JhdGlvbi90ZXN0LWFwdC1wcm9ncmVzcy1mZC1kZWI4MjIKLWluZGV4IGJhZGM5ODUuLjlkMjI3OTQgMTAwNzU1CitpbmRleCA1OGZkNzMyLi4zMzU5NzYyIDEwMDc1NQogLS0tIGEvdGVzdC9pbnRlZ3JhdGlvbi90ZXN0LWFwdC1wcm9ncmVzcy1mZC1kZWI4MjIKICsrKyBiL3Rlc3QvaW50ZWdyYXRpb24vdGVzdC1hcHQtcHJvZ3Jlc3MtZmQtZGViODIyCi1AQCAtMjcsNDEgKzI3LDM3IEBAIE1lc3NhZ2U6IEluc3RhbGxpbmcgdGVzdGluZyAoYW1kNjQpCitAQCAtMjcsMzYgKzI3LDM2IEBAIE1lc3NhZ2U6IEluc3RhbGxpbmcgdGVzdGluZyAoYW1kNjQpCiAgCiAgU3RhdHVzOiBwcm9ncmVzcwogIFBhY2thZ2U6IHRlc3Rpbmc6YW1kNjQKQEAgLTI0OCwxMDkgKzk1LDEwIEBACiAtUGVyY2VudDogODMuMzMzMwogK1BlcmNlbnQ6IDEwMAogIE1lc3NhZ2U6IEluc3RhbGxlZCB0ZXN0aW5nIChhbWQ2NCkKLS0KLS1TdGF0dXM6IHByb2dyZXNzCi0tUGVyY2VudDogODMuMzMzMwotLU1lc3NhZ2U6IFJ1bm5pbmcgZHBrZwotICIgY2F0IGFwdC1wcm9ncmVzcy5sb2cKICAKLSAKLWRpZmYgLS1naXQgYS90ZXN0L2ludGVncmF0aW9uL3Rlc3QtYXB0LXByb2dyZXNzLWZkLWVycm9yIGIvdGVzdC9pbnRlZ3JhdGlvbi90ZXN0LWFwdC1wcm9ncmVzcy1mZC1lcnJvcgotaW5kZXggNjMyMzAwNy4uYTQ3MDk1YiAxMDA3NTUKLS0tLSBhL3Rlc3QvaW50ZWdyYXRpb24vdGVzdC1hcHQtcHJvZ3Jlc3MtZmQtZXJyb3IKLSsrKyBiL3Rlc3QvaW50ZWdyYXRpb24vdGVzdC1hcHQtcHJvZ3Jlc3MtZmQtZXJyb3IKLUBAIC0xOCw3ICsxOCw3IEBAIHNldHVwYXB0YXJjaGl2ZQotIGV4ZWMgMz4gYXB0LXByb2dyZXNzLmxvZwotIHRlc3RmYWlsdXJlIGFwdGdldCBpbnN0YWxsIGZvbzEgZm9vMiAteSAtbyBBUFQ6OlN0YXR1cy1GZD0zCi0gbXNndGVzdCAiRW5zdXJlIGNvcnJlY3QgZXJyb3IgbWVzc2FnZSIKLS1pZiBncmVwIC1xICJhcHRhcmNoaXZlL3Bvb2wvZm9vMl8wLjguMTVfYW1kNjQuZGViOjM2LjM2MzY6dHJ5aW5nIHRvIG92ZXJ3cml0ZSAnL3Vzci9iaW4vZmlsZS1jb25mbGljdCcsIHdoaWNoIGlzIGFsc28gaW4gcGFja2FnZSBmb28xIDAuOC4xNSIgYXB0LXByb2dyZXNzLmxvZzsgdGhlbgotK2lmIGdyZXAgLXEgImFwdGFyY2hpdmUvcG9vbC9mb28yXzAuOC4xNV9hbWQ2NC5kZWI6NDA6dHJ5aW5nIHRvIG92ZXJ3cml0ZSAnL3Vzci9iaW4vZmlsZS1jb25mbGljdCcsIHdoaWNoIGlzIGFsc28gaW4gcGFja2FnZSBmb28xIDAuOC4xNSIgYXB0LXByb2dyZXNzLmxvZzsgdGhlbgotIAltc2dwYXNzCi0gZWxzZQotIAljYXQgYXB0LXByb2dyZXNzLmxvZwotZGlmZiAtLWdpdCBhL3Rlc3QvaW50ZWdyYXRpb24vdGVzdC1idWctNzY5NjA5LXRyaWdnZXJzLXN0aWxsLXBlbmRpbmctYWZ0ZXItcnVuIGIvdGVzdC9pbnRlZ3JhdGlvbi90ZXN0LWJ1Zy03Njk2MDktdHJpZ2dlcnMtc3RpbGwtcGVuZGluZy1hZnRlci1ydW4KLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQotaW5kZXggMTQ2ZmE3Ni4uMDAwMDAwMAotLS0tIGEvdGVzdC9pbnRlZ3JhdGlvbi90ZXN0LWJ1Zy03Njk2MDktdHJpZ2dlcnMtc3RpbGwtcGVuZGluZy1hZnRlci1ydW4KLSsrKyAvZGV2L251bGwKLUBAIC0xLDc1ICswLDAgQEAKLS0jIS9iaW4vc2gKLS1zZXQgLWUKLS0KLS1URVNURElSPSQocmVhZGxpbmsgLWYgJChkaXJuYW1lICQwKSkKLS0uICRURVNURElSL2ZyYW1ld29yawotLQotLXNldHVwZW52aXJvbm1lbnQKLS1jb25maWdhcmNoaXRlY3R1cmUgJ2FtZDY0JwotLQotLW1zZ3Rlc3QgJ0NoZWNrIGlmIGluc3RhbGxlZCBkcGtnIHN1cHBvcnRzJyAnbm9hd2FpdCB0cmlnZ2VyJwotLWlmIGRwa2ctY2hlY2tidWlsZGRlcHMgLWQgJ2Rwa2cgKD49IDEuMTYuMSknIC9kZXYvbnVsbDsgdGhlbgotLQltc2dwYXNzCi0tZWxzZQotLQltc2dza2lwICdkcGtnIHZlcnNpb24gdG9vIG9sZCcKLS0JZXhpdCAwCi0tZmkKLS1jb25maWdkcGtnbm9vcGNocm9vdAotLQotLWJ1aWxkdHJpZ2dlcnBhY2thZ2VzKCkgewotLQlsb2NhbCBUWVBFPSIkMSIKLS0Jc2V0dXBzaW1wbGVuYXRpdmVwYWNrYWdlICJ0cmlnZ2VyYWJsZS0kVFlQRSIgJ2FsbCcgJzEuMCcgJ3Vuc3RhYmxlJyAiRGVwZW5kczogdHJpZ2RlcGVuZHMtJFRZUEUiCi0tCUJVSUxERElSPSJpbmNvbWluZy90cmlnZ2VyYWJsZS0ke1RZUEV9LTEuMCIKLS0JY2F0ID4ke0JVSUxERElSfS9kZWJpYW4vcG9zdGluc3QgPDxFT0YKLS0jIS9iaW4vc2gKLS1pZiBbICJcJDEiID0gJ3RyaWdnZXJlZCcgXTsgdGhlbgotLQlscyAtbCAvcHJvYy9zZWxmL2ZkLwotLWZpCi0tRU9GCi0tCWVjaG8gIiRUWVBFIC91c3Ivc2hhcmUvZG9jIiA+ICR7QlVJTERESVJ9L2RlYmlhbi90cmlnZ2VycwotLQlidWlsZHBhY2thZ2UgIiRCVUlMRERJUiIgJ3Vuc3RhYmxlJyAnbWFpbicgJ25hdGl2ZScKLS0Jcm0gLXJmICIkQlVJTERESVIiCi0tCWJ1aWxkc2ltcGxlbmF0aXZlcGFja2FnZSAidHJpZ2RlcGVuZHMtJFRZUEUiICdhbGwnICcxLjAnICd1bnN0YWJsZScKLS19Ci0tCi0tI2J1aWxkdHJpZ2dlcnBhY2thZ2VzICdpbnRlcmVzdCcKLS1idWlsZHRyaWdnZXJwYWNrYWdlcyAnaW50ZXJlc3Qtbm9hd2FpdCcKLS1idWlsZHNpbXBsZW5hdGl2ZXBhY2thZ2UgInRyaWdzdHVmZiIgJ2FsbCcgJzEuMCcgJ3Vuc3RhYmxlJwotLQotLXNldHVwYXB0YXJjaGl2ZQotLQotLXJ1bnRlc3RzKCkgewotLQlsb2NhbCBUWVBFPSIkMSIKLS0JbXNnbXNnICdXb3JraW5nIHdpdGggdHJpZ2dlciB0eXBlJyAiJFRZUEUiCi0tCXRlc3RzdWNjZXNzIGFwdGdldCBpbnN0YWxsIHRyaWdnZXJhYmxlLSRUWVBFIC15Ci0tCWNwIHJvb3RkaXIvdG1wL3Rlc3RzdWNjZXNzLm91dHB1dCB0ZXJtaW5hbC5vdXRwdXQKLS0JdGVzdHN1Y2Nlc3MgZ3JlcCAnXlJFV1JJVEUgJyB0ZXJtaW5hbC5vdXRwdXQKLS0JdGVzdGRwa2dpbnN0YWxsZWQgdHJpZ2dlcmFibGUtJFRZUEUgdHJpZ2RlcGVuZHMtJFRZUEUKLS0KLS0JdGVzdHN1Y2Nlc3MgYXB0Z2V0IGluc3RhbGwgdHJpZ2RlcGVuZHMtJFRZUEUgLXkgLS1yZWluc3RhbGwKLS0JY3Agcm9vdGRpci90bXAvdGVzdHN1Y2Nlc3Mub3V0cHV0IHRlcm1pbmFsLm91dHB1dAotLQl0ZXN0c3VjY2VzcyBncmVwICdeUkVXUklURSAnIHRlcm1pbmFsLm91dHB1dAotLQl0ZXN0c3VjY2VzcyBncmVwICcgcm9vdCByb290ICcgdGVybWluYWwub3V0cHV0Ci0tCXRlc3RkcGtnaW5zdGFsbGVkIHRyaWdnZXJhYmxlLSRUWVBFIHRyaWdkZXBlbmRzLSRUWVBFCi0tCi0tCXRlc3RzdWNjZXNzIGFwdGdldCBpbnN0YWxsIHRyaWdzdHVmZiAteQotLQljcCByb290ZGlyL3RtcC90ZXN0c3VjY2Vzcy5vdXRwdXQgdGVybWluYWwub3V0cHV0Ci0tCXRlc3RzdWNjZXNzIGdyZXAgJ15SRVdSSVRFICcgdGVybWluYWwub3V0cHV0Ci0tCXRlc3RzdWNjZXNzIGdyZXAgJyByb290IHJvb3QgJyB0ZXJtaW5hbC5vdXRwdXQKLS0JdGVzdGRwa2dpbnN0YWxsZWQgdHJpZ2dlcmFibGUtJFRZUEUgdHJpZ2RlcGVuZHMtJFRZUEUgdHJpZ3N0dWZmCi0tCi0tCXRlc3RzdWNjZXNzIGFwdGdldCBwdXJnZSB0cmlnc3R1ZmYgLXkKLS0JY3Agcm9vdGRpci90bXAvdGVzdHN1Y2Nlc3Mub3V0cHV0IHRlcm1pbmFsLm91dHB1dAotLQl0ZXN0c3VjY2VzcyBncmVwICdeUkVXUklURSAnIHRlcm1pbmFsLm91dHB1dAotLQl0ZXN0c3VjY2VzcyBncmVwICcgcm9vdCByb290ICcgdGVybWluYWwub3V0cHV0Ci0tCXRlc3RkcGtnaW5zdGFsbGVkIHRyaWdnZXJhYmxlLSRUWVBFIHRyaWdkZXBlbmRzLSRUWVBFCi0tCXRlc3RkcGtnbm90aW5zdGFsbGVkIHRyaWdzdHVmZgotLQotLQl0ZXN0c3VjY2VzcyBhcHRnZXQgcHVyZ2UgdHJpZ2RlcGVuZHMtJFRZUEUgLXkKLS0JY3Agcm9vdGRpci90bXAvdGVzdHN1Y2Nlc3Mub3V0cHV0IHRlcm1pbmFsLm91dHB1dAotLQl0ZXN0ZmFpbHVyZSBncmVwICdeUkVXUklURSAnIHRlcm1pbmFsLm91dHB1dAotLQl0ZXN0ZmFpbHVyZSBncmVwICcgcm9vdCByb290ICcgdGVybWluYWwub3V0cHV0Ci0tCXRlc3RkcGtnbm90aW5zdGFsbGVkIHRyaWdnZXJhYmxlLSRUWVBFIHRyaWdkZXBlbmRzLSRUWVBFCi0tfQotLSNydW50ZXN0cyAnaW50ZXJlc3QnCi0tcnVudGVzdHMgJ2ludGVyZXN0LW5vYXdhaXQnCisgU3RhdHVzOiBwcm9ncmVzcwogZGlmZiAtLWdpdCBhL3Rlc3QvaW50ZWdyYXRpb24vdGVzdC1uby1mZHMtbGVha2VkLXRvLW1haW50YWluZXItc2NyaXB0cyBiL3Rlc3QvaW50ZWdyYXRpb24vdGVzdC1uby1mZHMtbGVha2VkLXRvLW1haW50YWluZXItc2NyaXB0cwotaW5kZXggNDFjMDU3MC4uZDM5NjBkNyAxMDA3NTUKK2luZGV4IGQ4NmU2MzguLmVmNmQyM2IgMTAwNzU1CiAtLS0gYS90ZXN0L2ludGVncmF0aW9uL3Rlc3Qtbm8tZmRzLWxlYWtlZC10by1tYWludGFpbmVyLXNjcmlwdHMKICsrKyBiL3Rlc3QvaW50ZWdyYXRpb24vdGVzdC1uby1mZHMtbGVha2VkLXRvLW1haW50YWluZXItc2NyaXB0cwogQEAgLTU5LDggKzU5LDcgQEAgc3RhcnR1cCBwYWNrYWdlcyBjb25maWd1cmUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC8wMDAxLWFwdC0xLjIuMTItRml4LW11c2wtYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvMDAwMS1hcHQtMS4yLjEyLUZpeC1tdXNsLWJ1aWxkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0YjA0MDYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvMDAwMS1hcHQtMS4yLjEyLUZpeC1tdXNsLWJ1aWxkLnBhdGNoCkBAIC0wLDAgKzEsNTAgQEAKK0Zyb20gMzNiOTdlMDg5ZDRhOThkM2FjZDIwYmQ3ODMzN2RkOTE1Yjk4OWJjMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9Bbj1DMz1BRGJhbD0yMExpbT1DMz1CM24/PSA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4KK0RhdGU6IEZyaSwgNSBBdWcgMjAxNiAxNToyNDoyNyAtMDUwMAorU3ViamVjdDogW1BBVENIXSBhcHQgMS4yLjEyOiBGaXggbXVzbCBidWlsZAorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCittZXRob2RzL2Nvbm5lY3QuY2M6IE11c2wgZG9lc24ndCBzdXBwb3J0IEFJX0lETiBmbGFnIGluIG5ldGRiLmgKK2hlYWRlciBzbyBkZWZpbmUgaXQgbWFudWFsbHkuCithcHQtcGtnL2NvbnRyaWIvc3J2cmVjLmg6IEFkZCBleHBsaWNpdHkgaW5jbHVkZSBvZiBzeXMvdHlwZXMuaAordG8gYXZvaWQgZXJyb3JzIGluIHR5cGVzIHVfaW50X1NJWkUuCisKK1Vwc3RyZWFtLXN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4KKy0tLQorIGFwdC1wa2cvY29udHJpYi9zcnZyZWMuaCB8IDEgKworIG1ldGhvZHMvY29ubmVjdC5jYyAgICAgICB8IDMgKysrCisgMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2FwdC1wa2cvY29udHJpYi9zcnZyZWMuaCBiL2FwdC1wa2cvY29udHJpYi9zcnZyZWMuaAoraW5kZXggMDFiODEwMi4uMTViNjg3NSAxMDA2NDQKKy0tLSBhL2FwdC1wa2cvY29udHJpYi9zcnZyZWMuaAorKysrIGIvYXB0LXBrZy9jb250cmliL3NydnJlYy5oCitAQCAtOSw2ICs5LDcgQEAKKyAjaWZuZGVmIFNSVlJFQ19ICisgI2RlZmluZSBTUlZSRUNfSAorIAorKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8YXJwYS9uYW1lc2VyLmg+CisgI2luY2x1ZGUgPHZlY3Rvcj4KKyAjaW5jbHVkZSA8c3RyaW5nPgorZGlmZiAtLWdpdCBhL21ldGhvZHMvY29ubmVjdC5jYyBiL21ldGhvZHMvY29ubmVjdC5jYworaW5kZXggMDdhNzMwYi4uYmIwYWI1YSAxMDA2NDQKKy0tLSBhL21ldGhvZHMvY29ubmVjdC5jYworKysrIGIvbWV0aG9kcy9jb25uZWN0LmNjCitAQCAtMzMsNiArMzMsOSBAQAorICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisgI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorICNpbmNsdWRlIDxuZXRkYi5oPgorKyNpZm5kZWYgQUlfSUROCisrI2RlZmluZSBBSV9JRE4gMHgwMDQwCisrI2VuZGlmCisgCisgI2luY2x1ZGUgImNvbm5lY3QuaCIKKyAjaW5jbHVkZSAicmZjMjU1M2VtdS5oIgorLS0gCisyLjEuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvMDAwMS1maXgtdGhlLWdjYy12ZXJzaW9uLWNoZWNrLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0LzAwMDEtZml4LXRoZS1nY2MtdmVyc2lvbi1jaGVjay5wYXRjaAppbmRleCBiZWVhNTZkLi4zYWM5MjQ2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvMDAwMS1maXgtdGhlLWdjYy12ZXJzaW9uLWNoZWNrLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC8wMDAxLWZpeC10aGUtZ2NjLXZlcnNpb24tY2hlY2sucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDE1YzZlZjZhODI3ZDM2ODFhZDA2ZTg2MmQyN2FiM2RmYjg0Y2I2ODcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDUzYzVkMDk4MmYwM2ZkMGUyNGM0MTk1ZDZlMWU0MmI5YWRlOWQ1MDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBSb3kgTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CiBEYXRlOiBXZWQsIDI3IE1heSAyMDE1IDE0OjMwOjI4ICswODAwCiBTdWJqZWN0OiBbUEFUQ0hdIGZpeCB0aGUgZ2NjIHZlcnNpb24gY2hlY2sKQEAgLTksMzcgKzksMjkgQEAKIAogU2lnbmVkLW9mZi1ieTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgogLS0tCi0gYXB0LXBrZy9jYWNoZXNldC5oICAgICAgICAgICB8ICA0ICsrLS0KLSBhcHQtcGtnL2RlYi9kZWJzcmNyZWNvcmRzLmNjIHwgMTIgKysrKysrLS0tLS0tCi0gYXB0LXBrZy9zcmNyZWNvcmRzLmNjICAgICAgICB8ICA0ICsrLS0KLSBhcHQtcGtnL3NyY3JlY29yZHMuaCAgICAgICAgIHwgIDQgKystLQotIGFwdC1wa2cvdmVuZG9ybGlzdC5jYyAgICAgICAgfCAgNCArKy0tCi0gNSBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKKyBhcHQtcGtnL2NvbnRyaWIvbWFjcm9zLmggICAgIHwgMiArLQorIGFwdC1wa2cvZGViL2RlYnNyY3JlY29yZHMuY2MgfCA0ICsrLS0KKyBhcHQtcGtnL3NyY3JlY29yZHMuY2MgICAgICAgIHwgNCArKy0tCisgMyBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9hcHQtcGtnL2NhY2hlc2V0LmggYi9hcHQtcGtnL2NhY2hlc2V0LmgKLWluZGV4IGI3MjI5YmMuLjhjYzI5MTcgMTAwNjQ0Ci0tLS0gYS9hcHQtcGtnL2NhY2hlc2V0LmgKLSsrKyBiL2FwdC1wa2cvY2FjaGVzZXQuaAotQEAgLTExOSwxMiArMTE5LDEyIEBAIHB1YmxpYzoKLSAJCWlubGluZSBzdGQ6OnN0cmluZyBGdWxsTmFtZShib29sIGNvbnN0IFByZXR0eSkgY29uc3QgeyByZXR1cm4gZ2V0UGtnKCkuRnVsbE5hbWUoUHJldHR5KTsgfQotIAkJaW5saW5lIHN0ZDo6c3RyaW5nIEZ1bGxOYW1lKCkgY29uc3QgeyByZXR1cm4gZ2V0UGtnKCkuRnVsbE5hbWUoKTsgfQotIAkJQVBUX0RFUFJFQ0FURUQgaW5saW5lIGNvbnN0IGNoYXIgKlNlY3Rpb24oKSBjb25zdCB7CitkaWZmIC0tZ2l0IGEvYXB0LXBrZy9jb250cmliL21hY3Jvcy5oIGIvYXB0LXBrZy9jb250cmliL21hY3Jvcy5oCitpbmRleCAyNzI3ZmQ4Li4wZWNhZTUwIDEwMDY0NAorLS0tIGEvYXB0LXBrZy9jb250cmliL21hY3Jvcy5oCisrKysgYi9hcHQtcGtnL2NvbnRyaWIvbWFjcm9zLmgKK0BAIC0xMzYsNyArMTM2LDcgQEAKKyAjZW5kaWYKKyAjZW5kaWYKKyAKIC0jaWYgX19HTlVDX18gPj0gNAogKyNpZiBfX0dOVUNfXyA+PSA0ICsgKDYgPj0gX19HTlVDX01JTk9SX18pCi0gCSNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaAotIAkjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0gI2VuZGlmCi0gCSAgIHJldHVybiBnZXRQa2coKS5TZWN0aW9uKCk7Ci0tI2lmIF9fR05VQ19fID49IDQKLSsjaWYgX19HTlVDX18gPj0gNCArICg2ID49IF9fR05VQ19NSU5PUl9fKQotIAkjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAotICNlbmRpZgotIAkJfQorIAkjZGVmaW5lIEFQVF9JR05PUkVfREVQUkVDQVRFRF9QVVNIIFwKKyAJCV9QcmFnbWEoIkdDQyBkaWFnbm9zdGljIHB1c2giKSBcCisgCQlfUHJhZ21hKCJHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkIFwiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9uc1wiIikKIGRpZmYgLS1naXQgYS9hcHQtcGtnL2RlYi9kZWJzcmNyZWNvcmRzLmNjIGIvYXB0LXBrZy9kZWIvZGVic3JjcmVjb3Jkcy5jYwotaW5kZXggNDlhMzQ4ZC4uNGJjOWRjZiAxMDA2NDQKK2luZGV4IGU4Mjk1ZGUuLjQwMTYwYjIgMTAwNjQ0CiAtLS0gYS9hcHQtcGtnL2RlYi9kZWJzcmNyZWNvcmRzLmNjCiArKysgYi9hcHQtcGtnL2RlYi9kZWJzcmNyZWNvcmRzLmNjCi1AQCAtMTI2LDEzICsxMjYsMTMgQEAgYm9vbCBkZWJTcmNSZWNvcmRQYXJzZXI6OkZpbGVzKHN0ZDo6dmVjdG9yPHBrZ1NyY1JlY29yZHM6OkZpbGU+ICZGKQorQEAgLTEzOSwxMyArMTM5LDEzIEBAIGJvb2wgZGViU3JjUmVjb3JkUGFyc2VyOjpGaWxlcyhzdGQ6OnZlY3Rvcjxwa2dTcmNSZWNvcmRzOjpGaWxlPiAmRikKICAgICBmb3IgKHN0ZDo6dmVjdG9yPHBrZ1NyY1JlY29yZHM6OkZpbGUyPjo6Y29uc3RfaXRlcmF0b3IgZjIgPSBGMi5iZWdpbigpOyBmMiAhPSBGMi5lbmQoKTsgKytmMikKICAgICB7CiAgICAgICAgcGtnU3JjUmVjb3Jkczo6RmlsZTIgZjsKQEAgLTU1LDQ2ICs0NywxMSBAQAogIAkjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAogICNlbmRpZgogICAgICAgIGYuUGF0aCA9IGYyLT5QYXRoOwotQEAgLTE5MCwxNCArMTkwLDE0IEBAIGJvb2wgZGViU3JjUmVjb3JkUGFyc2VyOjpGaWxlczIoc3RkOjp2ZWN0b3I8cGtnU3JjUmVjb3Jkczo6RmlsZTI+ICZMaXN0KQotIAkgLy8gd2UgaGF2ZSBpdCBhbHJlYWR5LCBzdG9yZSB0aGUgbmV3IGhhc2ggYW5kIGJlIGRvbmUKLSAJIGlmIChmaWxlICE9IExpc3QuZW5kKCkpCi0gCSB7Ci0tI2lmIF9fR05VQ19fID49IDQKLSsjaWYgX19HTlVDX18gPj0gNCArICg2ID49IF9fR05VQ19NSU5PUl9fKQotIAkvLyBzZXQgZm9yIGNvbXBhdGliaWxpdHkgb25seSwgc28gd2FybiB1c2VycyBub3QgdXMKLSAJI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCi0gCSNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLSAjZW5kaWYKLSAJICAgIGlmIChjaGVja3N1bUZpZWxkID09ICJGaWxlcyIpCi0gCSAgICAgICBmaWxlLT5NRDVIYXNoID0gaGFzaDsKLS0jaWYgX19HTlVDX18gPj0gNAotKyNpZiBfX0dOVUNfXyA+PSA0ICsgKDYgPj0gX19HTlVDX01JTk9SX18pCi0gCSNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCi0gI2VuZGlmCi0gCSAgICAvLyBhbiBlcnJvciBoZXJlIGluZGljYXRlcyB0aGF0IHdlIGhhdmUgdHdvIGRpZmZlcmVudCBoYXNoZXMgZm9yIHRoZSBzYW1lIGZpbGUKLUBAIC0yMTIsNyArMjEyLDcgQEAgYm9vbCBkZWJTcmNSZWNvcmRQYXJzZXI6OkZpbGVzMihzdGQ6OnZlY3Rvcjxwa2dTcmNSZWNvcmRzOjpGaWxlMj4gJkxpc3QpCi0gCSBGLkZpbGVTaXplID0gc3RydG91bGwoc2l6ZS5jX3N0cigpLCBOVUxMLCAxMCk7Ci0gCSBGLkhhc2hlcy5wdXNoX2JhY2soaGFzaFN0cmluZyk7Ci0gCi0tI2lmIF9fR05VQ19fID49IDQKLSsjaWYgX19HTlVDX18gPj0gNCArICg2ID49IF9fR05VQ19NSU5PUl9fKQotIAkvLyBzZXQgZm9yIGNvbXBhdGliaWxpdHkgb25seSwgc28gd2FybiB1c2VycyBub3QgdXMKLSAJI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCi0gCSNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLUBAIC0yMjAsNyArMjIwLDcgQEAgYm9vbCBkZWJTcmNSZWNvcmRQYXJzZXI6OkZpbGVzMihzdGQ6OnZlY3Rvcjxwa2dTcmNSZWNvcmRzOjpGaWxlMj4gJkxpc3QpCi0gCSBGLlNpemUgPSBGLkZpbGVTaXplOwotIAkgaWYgKGNoZWNrc3VtRmllbGQgPT0gIkZpbGVzIikKLSAJICAgIEYuTUQ1SGFzaCA9IGhhc2g7Ci0tI2lmIF9fR05VQ19fID49IDQKLSsjaWYgX19HTlVDX18gPj0gNCArICg2ID49IF9fR05VQ19NSU5PUl9fKQotIAkjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAotICNlbmRpZgotIAogZGlmZiAtLWdpdCBhL2FwdC1wa2cvc3JjcmVjb3Jkcy5jYyBiL2FwdC1wa2cvc3JjcmVjb3Jkcy5jYwotaW5kZXggMzE3NWVlNy4uMzQwZTc5NiAxMDA2NDQKK2luZGV4IDUzZDdlNjAuLjE0ODQ4MjggMTAwNjQ0CiAtLS0gYS9hcHQtcGtnL3NyY3JlY29yZHMuY2MKICsrKyBiL2FwdC1wa2cvc3JjcmVjb3Jkcy5jYwotQEAgLTE2MCw3ICsxNjAsNyBAQCBib29sIHBrZ1NyY1JlY29yZHM6OlBhcnNlcjo6RmlsZXMyKHN0ZDo6dmVjdG9yPHBrZ1NyY1JlY29yZHM6OkZpbGUyPiAmRjIpLyp7e3sqLworQEAgLTE1Nyw3ICsxNTcsNyBAQCBib29sIHBrZ1NyY1JlY29yZHM6OlBhcnNlcjo6RmlsZXMyKHN0ZDo6dmVjdG9yPHBrZ1NyY1JlY29yZHM6OkZpbGUyPiAmRjIpLyp7e3sqLwogICAgIGZvciAoc3RkOjp2ZWN0b3I8cGtnU3JjUmVjb3Jkczo6RmlsZT46OmNvbnN0X2l0ZXJhdG9yIGYgPSBGLmJlZ2luKCk7IGYgIT0gRi5lbmQoKTsgKytmKQogICAgIHsKICAgICAgICBwa2dTcmNSZWNvcmRzOjpGaWxlMiBmMjsKQEAgLTEwMyw3ICs2MCw3IEBACiAgCSNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaAogIAkjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCiAgI2VuZGlmCi1AQCAtMTY4LDcgKzE2OCw3IEBAIGJvb2wgcGtnU3JjUmVjb3Jkczo6UGFyc2VyOjpGaWxlczIoc3RkOjp2ZWN0b3I8cGtnU3JjUmVjb3Jkczo6RmlsZTI+ICZGMikvKnt7eyovCitAQCAtMTY1LDcgKzE2NSw3IEBAIGJvb2wgcGtnU3JjUmVjb3Jkczo6UGFyc2VyOjpGaWxlczIoc3RkOjp2ZWN0b3I8cGtnU3JjUmVjb3Jkczo6RmlsZTI+ICZGMikvKnt7eyovCiAgICAgICAgZjIuU2l6ZSA9IGYtPlNpemU7CiAgICAgICAgZjIuSGFzaGVzLnB1c2hfYmFjayhIYXNoU3RyaW5nKCJNRDVTdW0iLCBmLT5NRDVIYXNoKSk7CiAgICAgICAgZjIuRmlsZVNpemUgPSBmLT5TaXplOwpAQCAtMTEyLDQ5ICs2OSw2IEBACiAgCSNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCiAgI2VuZGlmCiAgICAgICAgZjIuUGF0aCA9IGYtPlBhdGg7Ci1kaWZmIC0tZ2l0IGEvYXB0LXBrZy9zcmNyZWNvcmRzLmggYi9hcHQtcGtnL3NyY3JlY29yZHMuaAotaW5kZXggZGRlMjJiZC4uOTFmODA2MSAxMDA2NDQKLS0tLSBhL2FwdC1wa2cvc3JjcmVjb3Jkcy5oCi0rKysgYi9hcHQtcGtnL3NyY3JlY29yZHMuaAotQEAgLTMwLDcgKzMwLDcgQEAgY2xhc3MgcGtnU3JjUmVjb3JkcwotIHsKLSAgICBwdWJsaWM6Ci0gCi0tI2lmIF9fR05VQ19fID49IDQKLSsjaWYgX19HTlVDX18gPj0gNCArICg2ID49IF9fR05VQ19NSU5PUl9fKQotIAkvLyBlbnN1cmUgdGhhdCBjb24tICYgZGUtc3RydWN0b3IgZG9uJ3QgdHJpZ2dlciB0aGlzIHdhcm5pbmcKLSAJI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCi0gCSNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLUBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIHBrZ1NyY1JlY29yZHMKLSAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgRmlsZVNpemU7Ci0gICAgICAgSGFzaFN0cmluZ0xpc3QgSGFzaGVzOwotICAgIH07Ci0tI2lmIF9fR05VQ19fID49IDQKLSsjaWYgX19HTlVDX18gPj0gNCArICg2ID49IF9fR05VQ19NSU5PUl9fKQotIAkjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAotICNlbmRpZgotIAotZGlmZiAtLWdpdCBhL2FwdC1wa2cvdmVuZG9ybGlzdC5jYyBiL2FwdC1wa2cvdmVuZG9ybGlzdC5jYwotaW5kZXggZmIzM2ZmMS4uYmExZDNjMyAxMDA2NDQKLS0tLSBhL2FwdC1wa2cvdmVuZG9ybGlzdC5jYwotKysrIGIvYXB0LXBrZy92ZW5kb3JsaXN0LmNjCi1AQCAtMTEsNyArMTEsNyBAQAotIAotICNpbmNsdWRlIDxhcHRpMThuLmg+Ci0gCi0tI2lmIF9fR05VQ19fID49IDQKLSsjaWYgX19HTlVDX18gPj0gNCArICg2ID49IF9fR05VQ19NSU5PUl9fKQotIAkjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKLSAJI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgotICNlbmRpZgotQEAgLTE2Myw2ICsxNjMsNiBAQCBjb25zdCBWZW5kb3IqIHBrZ1ZlbmRvckxpc3Q6OkZpbmRWZW5kb3IoY29uc3Qgc3RkOjp2ZWN0b3I8c3RyaW5nPiBHUEdWT3V0cHV0KQkvKgotIH0KLSAJCQkJCQkJCQkvKn19fSovCi0gCi0tI2lmIF9fR05VQ19fID49IDQKLSsjaWYgX19HTlVDX18gPj0gNCArICg2ID49IF9fR05VQ19NSU5PUl9fKQotIAkjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAotICNlbmRpZgogLS0gCi0xLjkuMQorMi4xLjQKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0LzAwMDEtcmVtb3ZlLVdzdWdnZXN0LWF0dHJpYnV0ZS1mcm9tLUNGTEFHUy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC8wMDAxLXJlbW92ZS1Xc3VnZ2VzdC1hdHRyaWJ1dGUtZnJvbS1DRkxBR1MucGF0Y2gKaW5kZXggN2M0MmZmMC4uNDc4NzBlMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0LzAwMDEtcmVtb3ZlLVdzdWdnZXN0LWF0dHJpYnV0ZS1mcm9tLUNGTEFHUy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvMDAwMS1yZW1vdmUtV3N1Z2dlc3QtYXR0cmlidXRlLWZyb20tQ0ZMQUdTLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAyYmZmN2VlMDZhNGY5NmU3ZDMyNjk5MWQ2MWZiODZmOGFhNjUxZDQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA5ZmRmNTBkNjNkZjA4ZWU2NWU3ZDhlNjJjMzVmMTlhYzQ4NDFiY2E5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgogRGF0ZTogV2VkLCAyNyBNYXkgMjAxNSAwOTo0ODo0NSArMDgwMAogU3ViamVjdDogW1BBVENIXSByZW1vdmUgV3N1Z2dlc3QtYXR0cmlidXRlIGZyb20gQ1hYRkxBR1MKQEAgLTE1LDI5ICsxNSwyOSBAQAogIDIgZmlsZXMgY2hhbmdlZCwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2J1aWxkbGliL2Vudmlyb25tZW50Lm1hay5pbiBiL2J1aWxkbGliL2Vudmlyb25tZW50Lm1hay5pbgotaW5kZXggYjBhOGQ5ZC4uOTFlZDAxMSAxMDA2NDQKK2luZGV4IDk2MjA3MjIuLmMzNDRkMDEgMTAwNjQ0CiAtLS0gYS9idWlsZGxpYi9lbnZpcm9ubWVudC5tYWsuaW4KICsrKyBiL2J1aWxkbGliL2Vudmlyb25tZW50Lm1hay5pbgotQEAgLTExLDcgKzExLDYgQEAgQ1BQRkxBR1MrPSBAQ1BQRkxBR1NAIEBERUZTQCAtRF9SRUVOVFJBTlQgLURfRk9SVElGWV9TT1VSQ0U9MgotIENYWCA9IEBDWFhACi0gQ1hYRkxBR1MrPSBAQ1hYRkxBR1NAIC1XYWxsIC1XZXh0cmEKK0BAIC0xNCw3ICsxNCw2IEBAIENYWEZMQUdTKz0gQENYWEZMQUdTQCAtV2FsbCAtV2V4dHJhCiAgQ1hYRkxBR1MrPSAtV2Nhc3QtYWxpZ24gLVdsb2dpY2FsLW9wIC1XcmVkdW5kYW50LWRlY2xzIC1XbWlzc2luZy1kZWNsYXJhdGlvbnMgLVd1bnNhZmUtbG9vcC1vcHRpbWl6YXRpb25zCi0tQ1hYRkxBR1MrPSAtV3N1Z2dlc3QtYXR0cmlidXRlPXB1cmUgLVdzdWdnZXN0LWF0dHJpYnV0ZT1jb25zdCAtV3N1Z2dlc3QtYXR0cmlidXRlPW5vcmV0dXJuCisgQ1hYRkxBR1MrPSAtV2N0b3ItZHRvci1wcml2YWN5IC1XZGlzYWJsZWQtb3B0aW1pemF0aW9uIC1XaW5pdC1zZWxmIC1XbWlzc2luZy1pbmNsdWRlLWRpcnMgLVdub2V4Y2VwdCAtV3NpZ24tcHJvbW8gLVd1bmRlZgorICMgc3VnZ2VzdHMgbWV0aG9kcyB3aGljaCBhbHJlYWR5IGhhdmUgc3VjaCBhbiBhdHRyaWJ1dGUKKy0jQ1hYRkxBR1MrPSAtV3N1Z2dlc3QtYXR0cmlidXRlPXB1cmUgLVdzdWdnZXN0LWF0dHJpYnV0ZT1jb25zdCAtV3N1Z2dlc3QtYXR0cmlidXRlPW5vcmV0dXJuCisgIyBzYW5pdGl6ZSBvcHRpb25zIHRvIGJlIGVuYWJsZWQgZm9yIHRlc3RpbmcKKyAjQ1hYRkxBR1MrPSAtZnNhbml0aXplPWFkZHJlc3MgLWZzYW5pdGl6ZT11bmRlZmluZWQgLWZuby1zYW5pdGl6ZT12cHRyCiAgIyBhIGJpdCB0b28gcGVkYW50aWMgdG8gYmUgcnVuIGJ5IGRlZmF1bHQKLSAjQ1hYRkxBR1MrPSAtV3BlZGFudGljIC1Xbm8tbG9uZy1sb25nIC1Xbm8tdmxhIC1Xbm8tdmFyaWFkaWMtbWFjcm9zCi0gTlVNX1BST0NTID0gQE5VTV9QUk9DU0AKIGRpZmYgLS1naXQgYS90ZXN0L2xpYmFwdC9tYWtlZmlsZSBiL3Rlc3QvbGliYXB0L21ha2VmaWxlCi1pbmRleCA3ZjIzYWNlLi5lODA1ZjEzIDEwMDY0NAoraW5kZXggNWZmOWNmNi4uYzViNTE5MCAxMDA2NDQKIC0tLSBhL3Rlc3QvbGliYXB0L21ha2VmaWxlCiArKysgYi90ZXN0L2xpYmFwdC9tYWtlZmlsZQotQEAgLTM5LDcgKzM5LDYgQEAgQ1hYRkxBR1MgKz0gLXB0aHJlYWQKK0BAIC00MCw3ICs0MCw2IEBAIENYWEZMQUdTICs9IC1wdGhyZWFkCiAgIyBkaXNhYmxlIHNvbWUgZmxhZ3MgZm9yIGd0ZXN0IGFnYWluCiAgQ1hYRkxBR1MrPSAtV25vLW1pc3NpbmctZGVjbGFyYXRpb25zCiAgQ1hYRkxBR1MrPSAtV25vLW1pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzCiAtQ1hYRkxBR1MrPSAtV25vLXN1Z2dlc3QtYXR0cmlidXRlPXB1cmUgLVduby1zdWdnZXN0LWF0dHJpYnV0ZT1jb25zdCAtV25vLXN1Z2dlc3QtYXR0cmlidXRlPW5vcmV0dXJuCisgQ1hYRkxBR1MrPSAtV25vLXVuZGVmCiAgCiAgIyBBbGwgR29vZ2xlIFRlc3QgaGVhZGVycy4gIFVzdWFsbHkgeW91IHNob3VsZG4ndCBjaGFuZ2UgdGhpcyBkZWZpbml0aW9uLgotIEdURVNUX0hFQURFUlMgPSAvdXNyL2luY2x1ZGUvZ3Rlc3QvKi5oIFwKIC0tIAotMS45LjEKKzIuMS40CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC9kaXNhYmxlLXRlc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvZGlzYWJsZS10ZXN0LnBhdGNoCmluZGV4IDY3Njc5NWQuLjA1MzI2NzEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC9kaXNhYmxlLXRlc3QucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0L2Rpc2FibGUtdGVzdC5wYXRjaApAQCAtMSwzNSArMSw1MSBAQAotW1BBVENIXSBkaXNhYmxlIHRlc3QKK0Zyb20gNjdiYzc5NDhlMGE3MjFjNzVkNjM2OTMxYWJjMTA1ZGE1ZGNiMDc2MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9Bbj1DMz1BRGJhbD0yMExpbT1DMz1CM24/PSA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4KK0RhdGU6IFRodSwgMjYgTWF5IDIwMTYgMTU6MzI6MTEgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gW1BBVENIXSBkaXNhYmxlIHRlc3QKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQogCiB0ZXN0IG5lZWRzIGd0ZXN0IHBhY2thZ2UsIHNvIG5vdCBidWlsZCB0aGUgdGVzdCBkaXIKIAogU2lnbmVkLW9mZi1ieTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogQW7DrWJhbCBMaW3Ds24gPGFuaWJhbC5saW1vbkBsaW51eC5pbnRlbC5jb20+CiAtLS0KLSBNYWtlZmlsZSAgICAgfCA3ICsrKy0tLS0KLSBjb25maWd1cmUuYWMgfCA2IC0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKKyBNYWtlZmlsZSAgICAgfCA5ICsrKy0tLS0tLQorIGNvbmZpZ3VyZS5hYyB8IDcgLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKLWluZGV4IDVmNWZiMjcuLjUwNzBlOTYgMTAwNjQ0CitpbmRleCA3NjgwZjA4Li42OTUyN2E1IDEwMDY0NAogLS0tIGEvTWFrZWZpbGUKICsrKyBiL01ha2VmaWxlCiBAQCAtOSw4ICs5LDggQEAgZW5kaWYKICAuUEhPTlk6IGRlZmF1bHQKICBkZWZhdWx0OiBzdGFydHVwIGFsbAogIAotLS5QSE9OWTogaGVhZGVycyBsaWJyYXJ5IGNsZWFuIHZlcnljbGVhbiBhbGwgYmluYXJ5IHByb2dyYW0gZG9jIHRlc3QgdXBkYXRlLXBvCistLlBIT05ZOiBmYXN0IGhlYWRlcnMgbGlicmFyeSBjbGVhbiB2ZXJ5Y2xlYW4gYWxsIGJpbmFyeSBwcm9ncmFtIGRvYyB0ZXN0IHVwZGF0ZS1wbwogLWFsbCBoZWFkZXJzIGxpYnJhcnkgY2xlYW4gdmVyeWNsZWFuIGJpbmFyeSBwcm9ncmFtIGRvYyBtYW5wYWdlcyBkb2Nib29rIHRlc3QgdXBkYXRlLXBvIHN0YXJ0dXAgZGlyczoKLSsuUEhPTlk6IGhlYWRlcnMgbGlicmFyeSBjbGVhbiB2ZXJ5Y2xlYW4gYWxsIGJpbmFyeSBwcm9ncmFtIGRvYyB1cGRhdGUtcG8KKysuUEhPTlk6IGZhc3QgaGVhZGVycyBsaWJyYXJ5IGNsZWFuIHZlcnljbGVhbiBhbGwgYmluYXJ5IHByb2dyYW0gZG9jIHVwZGF0ZS1wbwogK2FsbCBoZWFkZXJzIGxpYnJhcnkgY2xlYW4gdmVyeWNsZWFuIGJpbmFyeSBwcm9ncmFtIGRvYyBtYW5wYWdlcyBkb2Nib29rIHVwZGF0ZS1wbyBzdGFydHVwIGRpcnM6CiAgCSQoTUFLRSkgLUMgdmVuZG9yICRACiAgCSQoTUFLRSkgLUMgYXB0LXBrZyAkQAogIAkkKE1BS0UpIC1DIGFwdC1pbnN0ICRACi1AQCAtMjEsOSArMjEsOCBAQCBhbGwgaGVhZGVycyBsaWJyYXJ5IGNsZWFuIHZlcnljbGVhbiBiaW5hcnkgcHJvZ3JhbSBkb2MgbWFucGFnZXMgZG9jYm9vayB0ZXN0IHVwZAorQEAgLTIxLDggKzIxLDYgQEAgYWxsIGhlYWRlcnMgbGlicmFyeSBjbGVhbiB2ZXJ5Y2xlYW4gYmluYXJ5IHByb2dyYW0gZG9jIG1hbnBhZ2VzIGRvY2Jvb2sgdGVzdCB1cGQKICAJJChNQUtFKSAtQyBkc2VsZWN0ICRACi0gIwkkKE1BS0UpIC1DIGRvYyAkQAorIAkkKE1BS0UpIC1DIGRvYyAkQAogIAkkKE1BS0UpIC1DIHBvICRACi0tCSQoTUFLRSkgLUMgdGVzdCAkQAorLQkjIEZJWE1FOiAtQyB0ZXN0IGhhcyBpc3N1ZSBzd2l0aCBwYXJhbGxlbCBidWlsZHMsIGludmVzdGlnYXRlIQorLQktJChNQUtFKSAtQyB0ZXN0ICRACisgCisgZmFzdDoKKyAJJChNQUtFKSAtQyB2ZW5kb3IgYWxsCitAQCAtMzIsOSArMzAsOCBAQCBmYXN0OgorIAkkKE1BS0UpIC1DIG1ldGhvZHMgYWxsCisgCSQoTUFLRSkgLUMgY21kbGluZSBhbGwKKyAJJChNQUtFKSAtQyBmdHBhcmNoaXZlIGFsbAorLQkkKE1BS0UpIC1DIHRlc3QgYWxsCiAgCiAtYWxsIGhlYWRlcnMgbGlicmFyeSBjbGVhbiB2ZXJ5Y2xlYW4gYmluYXJ5IHByb2dyYW0gZG9jIG1hbnBhZ2VzIGRvY2Jvb2sgdGVzdCB1cGRhdGUtcG86IHN0YXJ0dXAgZGlycwogK2FsbCBoZWFkZXJzIGxpYnJhcnkgY2xlYW4gdmVyeWNsZWFuIGJpbmFyeSBwcm9ncmFtIGRvYyBtYW5wYWdlcyBkb2Nib29rIHVwZGF0ZS1wbzogc3RhcnR1cCBkaXJzCkBAIC0zNywyMiArNTMsMjMgQEAKICBkaXJzOiBzdGFydHVwCiAgCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA1NjYzYWFmLi5iMGY5NTY0IDEwMDY0NAoraW5kZXggMWYwNWRhNS4uZTQ3ZjQ1OSAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtODksMTIgKzg5LDYgQEAgQUNfQ0hFQ0tfTElCKGN1cmwsIGN1cmxfZWFzeV9pbml0LAorQEAgLTkwLDEzICs5MCw2IEBAIEFDX0NIRUNLX0xJQihjdXJsLCBjdXJsX2Vhc3lfaW5pdCwKICAgICAgIEFDX01TR19FUlJPUihbZmFpbGVkOiBJIG5lZWQgQ1VSTCBkdWUgaHR0cHMgc3VwcG9ydF0pLAogICkKICAKIC1BQ19MQU5HX1BVU0goW0MrK10pCiAtQUNfQ0hFQ0tfSEVBREVSKGd0ZXN0L2d0ZXN0LmgsLAotLSAgICAgQUNfTVNHX0VSUk9SKFtmYWlsZWQ6IEkgbmVlZCBndGVzdCB0byBidWlsZCB0ZXN0c10pLAorLSAgICAgQUNfTVNHX1dBUk4oW2ZhaWxlZDogSSBuZWVkIGd0ZXN0IChwYWNrYWdlZCBhcyBsaWJndGVzdC1kZXYpIGZvciB1bml0IHRlc3RpbmddKSwKIC0pCiAtQUNfTEFOR19QT1AoW0MrK10pCiAtCi0gCistCiAgQUNfU1VCU1QoQkRCTElCKQogIAorIEhBVkVfWkxJQj1ubwogLS0gCi0xLjkuMQorMi4xLjQKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0XzEuMC4xMC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0XzEuMC4xMC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NWMwZDU2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdF8xLjAuMTAuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLURFUEVORFMgPSAiY3VybCBkYiB6bGliIgotUkRFUEVORFNfJHtQTn0gPSAiZHBrZyBiYXNoIGRlYmlhbnV0aWxzIgotcmVxdWlyZSBhcHQuaW5jCi0KLXJlcXVpcmUgYXB0LXBhY2thZ2UuaW5jCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJsem1hIgotUEFDS0FHRUNPTkZJR1tsem1hXSA9ICJhY19jdl9saWJfbHptYV9sem1hX2Vhc3lfZW5jb2Rlcj15ZXMsYWNfY3ZfbGliX2x6bWFfbHptYV9lYXN5X2VuY29kZXI9bm8seHoiCi1QQUNLQUdFQ09ORklHW2J6Ml0gPSAiYWNfY3ZfbGliX2J6Ml9CWjJfYnpvcGVuPXllcyxhY19jdl9saWJfYnoyX0JaMl9iem9wZW49bm8sYnppcDIiCi0KLUZJTEVTXyR7UE59ICs9ICIke2JpbmRpcn0vYXB0LWtleSIKLWFwdC1tYW5wYWdlcyArPSAiZG9jL2FwdC1rZXkuOCIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgI1dyaXRlIHRoZSBjb3JyZWN0IGFwdC1hcmNoaXRlY3R1cmUgdG8gYXB0LmNvbmYKLSAgICBBUFRfQ09ORj0ke0R9L2V0Yy9hcHQvYXB0LmNvbmYKLSAgICBlY2hvICdBUFQ6OkFyY2hpdGVjdHVyZSAiJHtEUEtHX0FSQ0h9IjsnID4gJHtBUFRfQ09ORn0KLSAgICBvZV9saWJpbnN0YWxsIC1zbyAtQyBiaW4gbGliYXB0LXByaXZhdGUgJHtEfSR7bGliZGlyfS8KLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdF8xLjIuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHRfMS4yLjEyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlMGJjZTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHRfMS4yLjEyLmJiCkBAIC0wLDAgKzEsMjAgQEAKK0RFUEVORFMgPSAiY3VybCBkYiB6bGliIgorUkRFUEVORFNfJHtQTn0gPSAiZHBrZyBiYXNoIGRlYmlhbnV0aWxzIgorcmVxdWlyZSBhcHQuaW5jCisKK3JlcXVpcmUgYXB0LXBhY2thZ2UuaW5jCisKK1BBQ0tBR0VDT05GSUcgPz89ICJsem1hIgorUEFDS0FHRUNPTkZJR1tsem1hXSA9ICJhY19jdl9saWJfbHptYV9sem1hX2Vhc3lfZW5jb2Rlcj15ZXMsYWNfY3ZfbGliX2x6bWFfbHptYV9lYXN5X2VuY29kZXI9bm8seHoiCitQQUNLQUdFQ09ORklHW2J6Ml0gPSAiYWNfY3ZfbGliX2J6Ml9CWjJfYnpvcGVuPXllcyxhY19jdl9saWJfYnoyX0JaMl9iem9wZW49bm8sYnppcDIiCitQQUNLQUdFQ09ORklHW2x6NF0gPSAiYWNfY3ZfbGliX2x6NF9MWjRGX2NyZWF0ZUNvbXByZXNzaW9uQ29udGV4dD15ZXMsYWNfY3ZfbGliX2x6NF9MWjRGX2NyZWF0ZUNvbXByZXNzaW9uQ29udGV4dD1ubyxsejQiCisKK0ZJTEVTXyR7UE59ICs9ICIke2JpbmRpcn0vYXB0LWtleSIKK2FwdC1tYW5wYWdlcyArPSAiZG9jL2FwdC1rZXkuOCIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgI1dyaXRlIHRoZSBjb3JyZWN0IGFwdC1hcmNoaXRlY3R1cmUgdG8gYXB0LmNvbmYKKyAgICBBUFRfQ09ORj0ke0R9L2V0Yy9hcHQvYXB0LmNvbmYKKyAgICBlY2hvICdBUFQ6OkFyY2hpdGVjdHVyZSAiJHtEUEtHX0FSQ0h9IjsnID4gJHtBUFRfQ09ORn0KKyAgICBvZV9saWJpbnN0YWxsIC1zbyAtQyBiaW4gbGliYXB0LXByaXZhdGUgJHtEfSR7bGliZGlyfS8KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2ZpbGVzL25vLWN1cmwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9maWxlcy9uby1jdXJsLnBhdGNoCmluZGV4IDMwMjM4ZmEuLjA4Mzg1NTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2ZpbGVzL25vLWN1cmwucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvZmlsZXMvbm8tY3VybC5wYXRjaApAQCAtMSwxMyArMSwyMyBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQorRnJvbSA1ZDYxYWM4MjJmZDlhMzg3MWNkNTA4OTM4OWMyMTA2MDYyMzJlY2RjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0FuPUMzPUFEYmFsPTIwTGltPUMzPUIzbj89IDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPgorRGF0ZTogVGh1LCAyNiBNYXkgMjAxNiAxNTozNDo0NSAtMDUwMAorU3ViamVjdDogW1BBVENIXSBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CiAKK1NpZ25lZC1vZmYtYnk6IEFuw61iYWwgTGltw7NuIDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPgogLS0tCi0gY29uZmlndXJlLmluICAgICB8ICAgIDYgLS0tLS0tCi0gbWV0aG9kcy9tYWtlZmlsZSB8ICAgIDcgLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMTMgZGVsZXRpb25zKC0pCisgY29uZmlndXJlLmFjICAgICB8IDcgLS0tLS0tLQorIG1ldGhvZHMvbWFrZWZpbGUgfCA3IC0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDE0IGRlbGV0aW9ucygtKQogCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBlNDdmNDU5Li5jZDI0MjY0IDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC04NiwxMiArODYsNiBAQCBBQ19DSEVDS19IRUFERVIoZGIuaCwKK0BAIC04MywxMyArODMsNiBAQCBBQ19DSEVDS19IRUFERVIoZGIuaCwKICAKICBMSUJTPSIkc2F2ZUxJQlMiCiAgCkBAIC0xNyw5ICsyNywxMiBAQAogLSAgICAgICAgY3VybF9vaz1ubyldLAogLSAgICAgQUNfTVNHX0VSUk9SKFtmYWlsZWQ6IEkgbmVlZCBDVVJMIGR1ZSBodHRwcyBzdXBwb3J0XSksCiAtKQotIAorLQogIEFDX1NVQlNUKEJEQkxJQikKICAKKyBIQVZFX1pMSUI9bm8KK2RpZmYgLS1naXQgYS9tZXRob2RzL21ha2VmaWxlIGIvbWV0aG9kcy9tYWtlZmlsZQoraW5kZXggMzI3NGU5Mi4uMjU1MDg2YiAxMDA2NDQKIC0tLSBhL21ldGhvZHMvbWFrZWZpbGUKICsrKyBiL21ldGhvZHMvbWFrZWZpbGUKIEBAIC01MSwxMyArNTEsNiBAQCBMSUJfTUFLRVMgPSBhcHQtcGtnL21ha2VmaWxlCkBAIC0yOCwxMSArNDEsMTQgQEAKICAKIC0jIFRoZSBodHRwcyBtZXRob2QKIC1QUk9HUkFNPWh0dHBzCi0tU0xJQlMgPSAtbGFwdC1wa2cgLWxjdXJsICQoSU5UTExJQlMpCistU0xJQlMgPSAtbGFwdC1wa2cgLWxjdXJsICQoSU5UTExJQlMpIC1scmVzb2x2CiAtTElCX01BS0VTID0gYXB0LXBrZy9tYWtlZmlsZQogLVNPVVJDRSA9IGh0dHBzLmNjIHNlcnZlci5jYwogLWluY2x1ZGUgJChQUk9HUkFNX0gpCiAtCiAgIyBUaGUgZnRwIG1ldGhvZAogIFBST0dSQU09ZnRwCi0gU0xJQlMgPSAtbGFwdC1wa2cgJChTT0NLRVRMSUJTKSAkKElOVExMSUJTKQorIFNMSUJTID0gLWxhcHQtcGtnICQoU09DS0VUTElCUykgJChJTlRMTElCUykgLWxyZXNvbHYKKy0tIAorMi4xLjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvY29uZi9hdXRvY29uZi9hdXRvcmVjb25mLWluY2x1ZGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9jb25mL2F1dG9jb25mL2F1dG9yZWNvbmYtaW5jbHVkZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzEzMjZmMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9jb25mL2F1dG9jb25mL2F1dG9yZWNvbmYtaW5jbHVkZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1JbmRleDogYXV0b2NvbmYtMi42My9iaW4vYXV0b3JlY29uZi5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGF1dG9jb25mLTIuNjMub3JpZy9iaW4vYXV0b3JlY29uZi5pbgkyMDA4LTA4LTI4IDAzOjA4OjEwLjAwMDAwMDAwMCArMDEwMAotKysrIGF1dG9jb25mLTIuNjMvYmluL2F1dG9yZWNvbmYuaW4JMjAwOC0xMi0zMSAxNzozODo0MC4wMDAwMDAwMDAgKzAwMDAKLUBAIC0xOTAsNiArMTkwLDcgQEAKLSAgICRhdXRvY29uZiAgIC49IGpvaW4gKCcgLS1wcmVwZW5kLWluY2x1ZGU9JywgJycsIG1hcCB7IHNoZWxsX3F1b3RlICgkXykgfSBAcHJlcGVuZF9pbmNsdWRlKTsKLSAgICRhdXRvaGVhZGVyIC49IGpvaW4gKCcgLS1pbmNsdWRlPScsICcnLCBtYXAgeyBzaGVsbF9xdW90ZSAoJF8pIH0gQGluY2x1ZGUpOwotICAgJGF1dG9oZWFkZXIgLj0gam9pbiAoJyAtLXByZXBlbmQtaW5jbHVkZT0nLCAnJywgbWFwIHsgc2hlbGxfcXVvdGUgKCRfKSB9IEBwcmVwZW5kX2luY2x1ZGUpOwotKyAgJGFjbG9jYWwgICAgLj0gam9pbiAoJyAtSSAnLCAnJywgbWFwIHsgc2hlbGxfcXVvdGUgKCRfKSB9IEBpbmNsdWRlKTsKLSAKLSAgICMgLS1pbnN0YWxsIGFuZCAtLXN5bWxpbms7Ci0gICBpZiAoJGluc3RhbGwpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9jb25mL2F1dG9jb25mXzIuNjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9jb25mL2F1dG9jb25mXzIuNjkuYmIKaW5kZXggYWRiNmFkNy4uYWExODc3YSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvY29uZi9hdXRvY29uZl8yLjY5LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYvYXV0b2NvbmZfMi42OS5iYgpAQCAtNSw4ICs1LDcgQEAKIExJQ0VOU0UgPSAiR1BMdjIgJiBHUEx2MyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIFwKIAkJICAgIGZpbGU6Ly9DT1BZSU5HdjM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotU1JDX1VSSSArPSAiZmlsZTovL2F1dG9yZWNvbmYtaW5jbHVkZS5wYXRjaCBcCi0JICAgIGZpbGU6Ly9jaGVjay1hdXRvbWFrZS1jcm9zcy13YXJuaW5nLnBhdGNoIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly9jaGVjay1hdXRvbWFrZS1jcm9zcy13YXJuaW5nLnBhdGNoIFwKIAkgICAgZmlsZTovL2F1dG9yZWNvbmYtZXhjbHVkZS5wYXRjaCBcCiAJICAgIGZpbGU6Ly9hdXRvcmVjb25mLWdudWNvbmZpZ2l6ZS5wYXRjaCBcCiAgICAgICAgICAgICBmaWxlOi8vY29uZmlnX3NpdGUucGF0Y2ggXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvZ2VuL2F1dG9nZW4tbmF0aXZlXzUuMTguMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9nZW4vYXV0b2dlbi1uYXRpdmVfNS4xOC4xMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzQ0MjdjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvZ2VuL2F1dG9nZW4tbmF0aXZlXzUuMTguMTAuYmIKQEAgLTAsMCArMSwzNiBAQAorU1VNTUFSWSA9ICJBdXRvbWF0ZWQgdGV4dCBhbmQgcHJvZ3JhbSBnZW5lcmF0aW9uIHRvb2wiCitERVNDUklQVElPTiA9ICJBdXRvR2VuIGlzIGEgdG9vbCBkZXNpZ25lZCB0byBzaW1wbGlmeSB0aGUgY3JlYXRpb24gYW5kXAorIG1haW50ZW5hbmNlIG9mIHByb2dyYW1zIHRoYXQgY29udGFpbiBsYXJnZSBhbW91bnRzIG9mIHJlcGV0aXRpb3VzIHRleHQuXAorIEl0IGlzIGVzcGVjaWFsbHkgdmFsdWFibGUgaW4gcHJvZ3JhbXMgdGhhdCBoYXZlIHNldmVyYWwgYmxvY2tzIG9mIHRleHRcCisgdGhhdCBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvZ2VuLyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9hdXRvZ2VuL3JlbCR7UFZ9L2F1dG9nZW4tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2luY3JlYXNlLXRpbWVvdXQtbGltaXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbWstdHBsLWNvbmZpZy5zaC1mb3JjZS1leGl0LXZhbHVlLXRvLWJlLTAtaW4tc3VicHJvYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtc2NyaXB0LWVyci13aGVuLXByb2Nlc3NpbmctbGliZ3VpbGUucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMmQxYjUyMjZlMTkyOWQwNjgwMDExZGY2MzEyODk1NzEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGI4NjgxZDk3MjRjNDgxZDNiNzI2YjVhOWU4MWQzZDA5ZGM3ZjMwN2QxYTgwMWM3NmQwYTMwZDhmODQzZDIwYSIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9mdHAuZ251Lm9yZy9nbnUvYXV0b2dlbi8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJyZWwoP1A8cHZlcj5cZCsoXC5cZCspKykvIgorCitERVBFTkRTID0gImd1aWxlLW5hdGl2ZSBsaWJ0b29sLW5hdGl2ZSBsaWJ4bWwyLW5hdGl2ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBuYXRpdmUgcGtnY29uZmlnCisKKyMgYXV0b2dlbi1uYXRpdmUgbGlua3MgYWdhaW5zdCBsaWJndWlsZSB3aGljaCBtYXkgaGF2ZSBiZWVuIHJlbG9jYXRlZCB3aXRoIHNzdGF0ZQorIyB0aGVzZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZW5zdXJlIHRoZXJlIGlzbid0IGEgcmVsb2NhdGlvbiBpc3N1ZQorZXhwb3J0IEdVSUxFX0xPQURfUEFUSCA9ICIke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2d1aWxlLzIuMCIKK2V4cG9ydCBHVUlMRV9MT0FEX0NPTVBJTEVEX1BBVEggPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2d1aWxlLzIuMC9jY2FjaGUiCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9hdXRvZ2VuIFwKKwkJR1VJTEVfTE9BRF9QQVRIPSR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ3VpbGUvMi4wIFwKKwkJR1VJTEVfTE9BRF9DT01QSUxFRF9QQVRIPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9ndWlsZS8yLjAvY2NhY2hlCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9nZW4vYXV0b2dlbi1uYXRpdmVfNS4xOC42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvZ2VuL2F1dG9nZW4tbmF0aXZlXzUuMTguNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDc3YjgyNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9nZW4vYXV0b2dlbi1uYXRpdmVfNS4xOC42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotU1VNTUFSWSA9ICJBdXRvbWF0ZWQgdGV4dCBhbmQgcHJvZ3JhbSBnZW5lcmF0aW9uIHRvb2wiCi1ERVNDUklQVElPTiA9ICJBdXRvR2VuIGlzIGEgdG9vbCBkZXNpZ25lZCB0byBzaW1wbGlmeSB0aGUgY3JlYXRpb24gYW5kXAotIG1haW50ZW5hbmNlIG9mIHByb2dyYW1zIHRoYXQgY29udGFpbiBsYXJnZSBhbW91bnRzIG9mIHJlcGV0aXRpb3VzIHRleHQuXAotIEl0IGlzIGVzcGVjaWFsbHkgdmFsdWFibGUgaW4gcHJvZ3JhbXMgdGhhdCBoYXZlIHNldmVyYWwgYmxvY2tzIG9mIHRleHRcCi0gdGhhdCBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvZ2VuLyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9hdXRvZ2VuL3JlbCR7UFZ9L2F1dG9nZW4tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2luY3JlYXNlLXRpbWVvdXQtbGltaXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWstdHBsLWNvbmZpZy5zaC1mb3JjZS1leGl0LXZhbHVlLXRvLWJlLTAtaW4tc3VicHJvYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9yZWRpcmVjdC1vdXRwdXQtZGlyLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImZkZWU0MDNlNTI0YzBhZjNkZWQ2YjNiZWNiMzY1NjcxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJmYzdmMTJhNWVjYjNiMWU4YmQ0MzY0YWE5MDZiODM3Y2ZmMDFmODBlZGI3ZDJmYjM4ZWQ4YjlkZmJjZDMyNzEiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vZnRwLmdudS5vcmcvZ251L2F1dG9nZW4vIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAicmVsKD9QPHB2ZXI+XGQrKFwuXGQrKSspLyIKLQotREVQRU5EUyA9ICJndWlsZS1uYXRpdmUgbGlidG9vbC1uYXRpdmUgbGlieG1sMi1uYXRpdmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gbmF0aXZlIHBrZ2NvbmZpZwotCi0jIGF1dG9nZW4tbmF0aXZlIGxpbmtzIGFnYWluc3QgbGliZ3VpbGUgd2hpY2ggbWF5IGhhdmUgYmVlbiByZWxvY2F0ZWQgd2l0aCBzc3RhdGUKLSMgdGhlc2UgZW52aXJvbm1lbnQgdmFyaWFibGVzIGVuc3VyZSB0aGVyZSBpc24ndCBhIHJlbG9jYXRpb24gaXNzdWUKLWV4cG9ydCBHVUlMRV9MT0FEX1BBVEggPSAiJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9ndWlsZS8yLjAiCi1leHBvcnQgR1VJTEVfTE9BRF9DT01QSUxFRF9QQVRIID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9ndWlsZS8yLjAvY2NhY2hlIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0JY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vYXV0b2dlbiBcCi0JCUdVSUxFX0xPQURfUEFUSD0ke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2d1aWxlLzIuMCBcCi0JCUdVSUxFX0xPQURfQ09NUElMRURfUEFUSD0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ3VpbGUvMi4wL2NjYWNoZQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvZ2VuL2F1dG9nZW4vZml4LXNjcmlwdC1lcnItd2hlbi1wcm9jZXNzaW5nLWxpYmd1aWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvZ2VuL2F1dG9nZW4vZml4LXNjcmlwdC1lcnItd2hlbi1wcm9jZXNzaW5nLWxpYmd1aWxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5NGEzOTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9nZW4vYXV0b2dlbi9maXgtc2NyaXB0LWVyci13aGVuLXByb2Nlc3NpbmctbGliZ3VpbGUucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorYXV0b2dlbi1uYXRpdmU6IGZpeCBzY3JpcHQgZXJyIHdoZW4gcHJvY2Vzc2luZyBsaWJndWlsZQorCitkb19jb25maWd1cmUgZm9yIGF1dG9nZW4gd2lsbCBmYWlsIGlmIHByb2plY3QgZGlyZWN0b3J5IHBhdGgKK2NvbnRhaW5zICctSScgY2hhcmFjdGVyLCB3aGljaCBpcyBjYXVzZWQgYnkgdGhlIHVuc3VpdGFibGUgc2VkCitzY3JpcHQgd2hlbiBwcm9jZXNzaW5nIGxpYmd1aWxlLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogWmhlbmJvIEdhbyA8emhlbmJvLmdhb0B3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorCitkaWZmIC0tZ2l0IGEvY29uZmlnL2FnX21hY3Jvcy5tNCBiL2NvbmZpZy9hZ19tYWNyb3MubTQKK2luZGV4IDU4MTg2YjYuLjU4ZWQyYWQgMTAwNjQ0CistLS0gYS9jb25maWcvYWdfbWFjcm9zLm00CisrKysgYi9jb25maWcvYWdfbWFjcm9zLm00CitAQCAtMzIsNyArMzIsNyBAQCBBQ19ERUZVTihbSU5WT0tFX0FHX01BQ1JPU19MQVNUXSxbCisgICBHVUlMRV9GTEFHUworICAgW2FnX2d2PWBnZGlyPVxgcGtnLWNvbmZpZyAtLWNmbGFncy1vbmx5LUkgXAorICAgZ3VpbGUtJHtHVUlMRV9FRkZFQ1RJVkVfVkVSU0lPTn0gfCBcCistICBzZWQgJ3MvLUkgKi8vO3MvICotSS4qLyAvZydcYAorKyAgc2VkICdzLyAqLUkgKlwvLyBcLy9nJ1xgCisgICBmb3IgZCBpbiAkZ2RpcgorICAgZG8gIHRlc3QgLWYgIiRkL2xpYmd1aWxlL3ZlcnNpb24uaCIgJiYgZ2Rpcj0kZCAmJiBicmVhaworICAgZG9uZQorZGlmZiAtLWdpdCBhL2NvbmZpZy9taXNjLmRlZiBiL2NvbmZpZy9taXNjLmRlZgoraW5kZXggNDkwZDM2MS4uNmUxODNlZiAxMDA2NDQKKy0tLSBhL2NvbmZpZy9taXNjLmRlZgorKysrIGIvY29uZmlnL21pc2MuZGVmCitAQCAtMzQyLDcgKzM0Miw3IEBAIGRvLWFsd2F5cyA9IDw8LSBfRU5EX0FMV0FZU18KKyAJR1VJTEVfRkxBR1MKKyAJW2FnX2d2PWBnZGlyPVxgcGtnLWNvbmZpZyAtLWNmbGFncy1vbmx5LUkgXAorIAkJCWd1aWxlLSR7R1VJTEVfRUZGRUNUSVZFX1ZFUlNJT059IHwgXAorLQkJCXNlZCAncy8tSSAqLy87cy8gKi1JLiovIC9nJ1xgCisrCQkJc2VkICdzLyAqLUkgKlwvLyBcLy9nJ1xgCisgCQl0ZXN0IC16ICIkZ2RpciIgJiYgZ2Rpcj0vdXNyL2luY2x1ZGUKKyAJCWZvciBkIGluICRnZGlyCisgCQlkbyAgdGVzdCAtZiAiJGQvbGliZ3VpbGUvdmVyc2lvbi5oIiAmJiBnZGlyPSRkICYmIGJyZWFrCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9nZW4vYXV0b2dlbi9yZWRpcmVjdC1vdXRwdXQtZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvZ2VuL2F1dG9nZW4vcmVkaXJlY3Qtb3V0cHV0LWRpci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmM1YTcxYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9nZW4vYXV0b2dlbi9yZWRpcmVjdC1vdXRwdXQtZGlyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotW1BBVENIXSByZWRpcmVjdCB0aGUgZGlyIG9mIG1rbGlic3JjLWxvZy50eAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotcmVkaXJlY3QgbWtsaWJzcmMtbG9nLnR4IHRvIGJ1aWxkZGlyLCBub3QgL3RtcDsgb3RoZXJ3aXNlIG1rbGlic3JjLWxvZy50eAotbWF5YmUgdW5hYmxlIHRvIGJlIHdyaXR0ZW4gaWYgb3RoZXIgdXNlcnMgaXMgYnVpbGRpbmcgYXV0b2dlbiBhdCB0aGUgc2FtZSB0aW1lLgotCi1TaWduZWQtb2ZmLWJ5OiBSb3kgTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBwa2cvbGlib3B0cy9ta2xpYnNyYy5zaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3BrZy9saWJvcHRzL21rbGlic3JjLnNoIGIvcGtnL2xpYm9wdHMvbWtsaWJzcmMuc2gKLWluZGV4IDQxNmI0MDIuLmQ2MTJmYmMgMTAwNjQ0Ci0tLS0gYS9wa2cvbGlib3B0cy9ta2xpYnNyYy5zaAotKysrIGIvcGtnL2xpYm9wdHMvbWtsaWJzcmMuc2gKLUBAIC0xOSw3ICsxOSw3IEBACi0gIyMgIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotIAotIHNldCAtZXgKLS1leGVjIDI+IC90bXAvbWtsaWJzcmMtbG9nLnR4Ci0rZXhlYyAyPiAkdG9wX2J1aWxkZGlyL21rbGlic3JjLWxvZy50eAotIAotIHRvcF9idWlsZGRpcj1gY2QgJHRvcF9idWlsZGRpciA7IHB3ZGAKLSB0b3Bfc3JjZGlyPWBjZCAkdG9wX3NyY2RpciA7IHB3ZGAKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZS9weXRob24tbGliZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZS9weXRob24tbGliZGlyLnBhdGNoCmluZGV4IDQ3NTQxYmQuLjJhNDhiMTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2UvcHl0aG9uLWxpYmRpci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlL3B5dGhvbi1saWJkaXIucGF0Y2gKQEAgLTEsMyArMSw4IEBACitGcm9tIDQ3MmEzZDM2Yzk3ZWY3NTM1ZjA1ZDZjMTg1ZWRjYmMyMmIwMDc0YzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgorRGF0ZTogVGh1LCAxMSBBdWcgMjAxMSAwMToyNjozMyAtMDUwMAorU3ViamVjdDogW1BBVENIIDEvNF0gYXV0b21ha2U6IFVwZGF0ZSBmb3IgcHl0aG9uLm00IHRvIHJlc3BlY3QgbGliZGlyCisKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCiAKIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkBAIC01LDExICsxMCwxNyBAQAogVXBkYXRlZCBmb3IgYXV0b21ha2UtMS4xMi42CiAKIFNpZ25lZC1vZmYtYnk6IE1hcmtvIExpbmRxdmlzdCA8Y2F6Zmk3NEBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIAotZGlmZiAtTnVyZCBhdXRvbWFrZS0xLjEyLjYvbTQvcHl0aG9uLm00IGF1dG9tYWtlLTEuMTIuNi9tNC9weXRob24ubTQKLS0tLSBhdXRvbWFrZS0xLjEyLjYvbTQvcHl0aG9uLm00CTIwMTItMTItMTMgMjI6MDI6MjUuMDAwMDAwMDAwICswMjAwCi0rKysgYXV0b21ha2UtMS4xMi42L200L3B5dGhvbi5tNAkyMDEyLTEyLTI3IDE3OjQwOjI2LjU1ODE2NDY2MCArMDIwMAotQEAgLTkxLDEyICs5MSwxMyBAQAorLS0tCisgbTQvcHl0aG9uLm00IHwgMjcgKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tNC9weXRob24ubTQgYi9tNC9weXRob24ubTQKK2luZGV4IDViMmM2OTUuLmVkMTkyNjEgMTAwNjQ0CistLS0gYS9tNC9weXRob24ubTQKKysrKyBiL200L3B5dGhvbi5tNAorQEAgLTkxLDEyICs5MSwxMyBAQCBBQ19ERUZVTihbQU1fUEFUSF9QWVRIT05dLAogICAgICBbYW1fY3ZfcHl0aG9uX3ZlcnNpb249YCRQWVRIT04gLWMgImltcG9ydCBzeXM7IHN5cy5zdGRvdXQud3JpdGUoc3lzLnZlcnNpb25bWzozXV0pImBdKQogICAgQUNfU1VCU1QoW1BZVEhPTl9WRVJTSU9OXSwgWyRhbV9jdl9weXRob25fdmVyc2lvbl0pCiAgCkBAIC0yNSwxNyArMzYsMjMgQEAKICAgIEFDX1NVQlNUKFtQWVRIT05fRVhFQ19QUkVGSVhdLCBbJyR7ZXhlY19wcmVmaXh9J10pCiAgCiAgICBkbmwgQXQgdGltZXMgKGxpa2Ugd2hlbiBidWlsZGluZyBzaGFyZWQgbGlicmFyaWVzKSB5b3UgbWF5IHdhbnQKLUBAIC0xNDgsNyArMTQ5LDggQEAKLSBlbHNlOgotICAgICBmcm9tIGRpc3R1dGlscyBpbXBvcnQgc3lzY29uZmlnCi0gICAgIHNpdGVkaXIgPSBzeXNjb25maWcuZ2V0X3B5dGhvbl9saWIoMCwgMCwgcHJlZml4PSckYW1fcHlfcHJlZml4JykKK0BAIC0xNDEsMTQgKzE0Miw3IEBAIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgIGVsc2UKKyAgICAgICAgYW1fcHlfcHJlZml4PSRwcmVmaXgKKyAgICAgIGZpCistICAgICBhbV9jdl9weXRob25fcHl0aG9uZGlyPWAkUFlUSE9OIC1jICIKKy0kYW1fcHl0aG9uX3NldHVwX3N5c2NvbmZpZworLWlmIGNhbl91c2Vfc3lzY29uZmlnOgorLSAgICBzaXRlZGlyID0gc3lzY29uZmlnLmdldF9wYXRoKCdwdXJlbGliJywgdmFycz17J2Jhc2UnOickYW1fcHlfcHJlZml4J30pCistZWxzZToKKy0gICAgZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHN5c2NvbmZpZworLSAgICBzaXRlZGlyID0gc3lzY29uZmlnLmdldF9weXRob25fbGliKDAsIDAsIHByZWZpeD0nJGFtX3B5X3ByZWZpeCcpCiAtc3lzLnN0ZG91dC53cml0ZShzaXRlZGlyKSJgCi0rc3lzLnN0ZG91dC53cml0ZShzaXRlZGlyKSIgfHwKLSsgICAgIGVjaG8gIiRQWVRIT05fTElCX1BSRUZJWC9weXRob24kUFlUSE9OX1ZFUlNJT04vc2l0ZS1wYWNrYWdlcyJgCisrICAgICBhbV9jdl9weXRob25fcHl0aG9uZGlyPWBlY2hvICIkUFlUSE9OX0xJQl9QUkVGSVgvcHl0aG9uJFBZVEhPTl9WRVJTSU9OL3NpdGUtcGFja2FnZXMiYAogICAgICAgY2FzZSAkYW1fY3ZfcHl0aG9uX3B5dGhvbmRpciBpbgogICAgICAgJGFtX3B5X3ByZWZpeCopCiAgICAgICAgIGFtX19zdHJpcF9wcmVmaXg9YGVjaG8gIiRhbV9weV9wcmVmaXgiIHwgc2VkICdzfC58LnxnJ2AKLUBAIC0xNTgsNyArMTYwLDcgQEAKK0BAIC0xNTgsNyArMTUyLDcgQEAgc3lzLnN0ZG91dC53cml0ZShzaXRlZGlyKSJgCiAgICAgICAgIGNhc2UgJGFtX3B5X3ByZWZpeCBpbgogICAgICAgICAgIC91c3J8L1N5c3RlbSopIDs7CiAgICAgICAgICAgKikKQEAgLTQ0LDE3ICs2MSwyMyBAQAogIAkgIDs7CiAgICAgICAgIGVzYWMKICAgICAgICAgOzsKLUBAIC0xOTAsNyArMTkyLDggQEAKLSBlbHNlOgotICAgICBmcm9tIGRpc3R1dGlscyBpbXBvcnQgc3lzY29uZmlnCi0gICAgIHNpdGVkaXIgPSBzeXNjb25maWcuZ2V0X3B5dGhvbl9saWIoMSwgMCwgcHJlZml4PSckYW1fcHlfcHJlZml4JykKK0BAIC0xODMsMTQgKzE3Nyw3IEBAIHN5cy5zdGRvdXQud3JpdGUoc2l0ZWRpcikiYAorICAgICAgZWxzZQorICAgICAgICBhbV9weV9leGVjX3ByZWZpeD0kZXhlY19wcmVmaXgKKyAgICAgIGZpCistICAgICBhbV9jdl9weXRob25fcHlleGVjZGlyPWAkUFlUSE9OIC1jICIKKy0kYW1fcHl0aG9uX3NldHVwX3N5c2NvbmZpZworLWlmIGNhbl91c2Vfc3lzY29uZmlnOgorLSAgICBzaXRlZGlyID0gc3lzY29uZmlnLmdldF9wYXRoKCdwbGF0bGliJywgdmFycz17J3BsYXRiYXNlJzonJGFtX3B5X3ByZWZpeCd9KQorLWVsc2U6CistICAgIGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWcKKy0gICAgc2l0ZWRpciA9IHN5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYigxLCAwLCBwcmVmaXg9JyRhbV9weV9wcmVmaXgnKQogLXN5cy5zdGRvdXQud3JpdGUoc2l0ZWRpcikiYAotK3N5cy5zdGRvdXQud3JpdGUoc2l0ZWRpcikiIHx8Ci0rICAgICBlY2hvICIkUFlUSE9OX0xJQl9QUkVGSVgvcHl0aG9uJFBZVEhPTl9WRVJTSU9OL3NpdGUtcGFja2FnZXMiYAorKyAgICAgYW1fY3ZfcHl0aG9uX3B5ZXhlY2Rpcj1gZWNobyAiJFBZVEhPTl9MSUJfUFJFRklYL3B5dGhvbiRQWVRIT05fVkVSU0lPTi9zaXRlLXBhY2thZ2VzImAKICAgICAgIGNhc2UgJGFtX2N2X3B5dGhvbl9weWV4ZWNkaXIgaW4KICAgICAgICRhbV9weV9leGVjX3ByZWZpeCopCiAgICAgICAgIGFtX19zdHJpcF9wcmVmaXg9YGVjaG8gIiRhbV9weV9leGVjX3ByZWZpeCIgfCBzZWQgJ3N8LnwufGcnYAotQEAgLTIwMCw3ICsyMDMsNyBAQAorQEAgLTIwMCw3ICsxODcsNyBAQCBzeXMuc3Rkb3V0LndyaXRlKHNpdGVkaXIpImAKICAgICAgICAgY2FzZSAkYW1fcHlfZXhlY19wcmVmaXggaW4KICAgICAgICAgICAvdXNyfC9TeXN0ZW0qKSA7OwogICAgICAgICAgICopCkBAIC02MywzICs4Niw2IEBACiAgCSAgIDs7CiAgICAgICAgIGVzYWMKICAgICAgICAgOzsKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy0yLjI2LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtMi4yNi5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkNTM1ZmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy0yLjI2LmluYworKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLUxJQ19GSUxFU19DSEtTVU09IlwKLSAgICBmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTJcCi0gICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT05ZjYwNGQ4YTRmOGU3NGY0ZjUxNDA4NDVhMjFiNjY3NFwKLSAgICBmaWxlOi8vQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAotICAgIGZpbGU6Ly9DT1BZSU5HMy5MSUI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2XAotICAgIGZpbGU6Ly9nYXMvQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDRcCi0gICAgZmlsZTovL2luY2x1ZGUvQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTJcCi0gICAgZmlsZTovL2luY2x1ZGUvQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAotICAgIGZpbGU6Ly9saWJpYmVydHkvQ09QWUlORy5MSUI7bWQ1PWE5MTY0NjdiOTEwNzZlNjMxZGQ4ZWRiNzQyNDc2OWM3XAotICAgIGZpbGU6Ly9iZmQvQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDRcCi0gICAgIgotCi1kZWYgYmludXRpbHNfYnJhbmNoX3ZlcnNpb24oZCk6Ci0gICAgcHZzcGxpdCA9IGQuZ2V0VmFyKCdQVicsIFRydWUpLnNwbGl0KCcuJykKLSAgICByZXR1cm4gcHZzcGxpdFswXSArICJfIiArIHB2c3BsaXRbMV0KLQotQklOVVBWID0gIiR7QGJpbnV0aWxzX2JyYW5jaF92ZXJzaW9uKGQpfSIKLQotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiYmludXRpbHMtKD9QPHB2ZXI+XGQrXyhcZF8/KSopIgotCi1TUkNSRVYgPSAiNzFmYTU2NmE5Y2YyNTk3YjYwYTU4YzFkN2MxNDhiYWI2Mzc0NTRhNiIKLVNSQ19VUkkgPSAiXAotICAgICBnaXQ6Ly9zb3VyY2V3YXJlLm9yZy9naXQvYmludXRpbHMtZ2RiLmdpdDticmFuY2g9YmludXRpbHMtJHtCSU5VUFZ9LWJyYW5jaDtwcm90b2NvbD1naXQgXAotICAgICBmaWxlOi8vMDAwMi1jb25maWd1cmUtd2lkZW4tdGhlLXJlZ2V4cC1mb3ItU0gtYXJjaGl0ZWN0dXJlcy5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDAzLVBvaW50LXNjcmlwdHMtbG9jYXRpb24tdG8tbGliZGlyLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMDQtT25seS1nZW5lcmF0ZS1hbi1SUEFUSC1lbnRyeS1pZi1MRF9SVU5fUEFUSC1pcy1ub3QtZS5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDA1LUV4cGxpY2l0bHktbGluay13aXRoLWxpYm0tb24tdWNsaWJjLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMDYtVXNlLWxpYnRvb2wtMi40LnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMDctQWRkLXRoZS1hcm12NWUtYXJjaGl0ZWN0dXJlLXRvLWJpbnV0aWxzLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMDgtZG9uLXQtbGV0LXRoZS1kaXN0cm8tY29tcGlsZXItcG9pbnQtdG8tdGhlLXdyb25nLWlucy5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDA5LXdhcm4tZm9yLXVzZXMtb2Ytc3lzdGVtLWRpcmVjdG9yaWVzLXdoZW4tY3Jvc3MtbGlua2kucGF0Y2ggXAotICAgICBmaWxlOi8vMDAxMC1GaXgtcnBhdGgtaW4tbGlidG9vbC13aGVuLXN5c3Jvb3QtaXMtZW5hYmxlZC5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDExLUNoYW5nZS1kZWZhdWx0LWVtdWxhdGlvbi1mb3ItbWlwczY0LWxpbnV4LnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMTItQWRkLXN1cHBvcnQtZm9yLU5ldGxvZ2ljLVhMUC5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDEzLUZpeC1HT1QtYWRkcmVzcy1jb21wdXRhdGlvbnMtaW4taW5pdGlhbC1QTFQtZW50cmllcy0ucGF0Y2ggXAotICAgICBmaWxlOi8vMDAxNC1Db3JyZWN0LW5pb3MyLV9ncC1hZGRyZXNzLWNvbXB1dGF0aW9uLnBhdGNoIFwKLSIKLVMgID0gIiR7V09SS0RJUn0vZ2l0IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0gICAgICAgIHJtIC1yZiAke1N9L2dkYiAke1N9L2xpYmRlY251bWJlciAke1N9L3JlYWRsaW5lICR7U30vc2ltCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLTIuMjcuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy0yLjI3LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjE0MjBiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy0yLjI3LmluYwpAQCAtMCwwICsxLDQ0IEBACitMSUNfRklMRVNfQ0hLU1VNPSJcCisgICAgZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyXAorICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9OWY2MDRkOGE0ZjhlNzRmNGY1MTQwODQ1YTIxYjY2NzRcCisgICAgZmlsZTovL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKKyAgICBmaWxlOi8vQ09QWUlORzMuTElCO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNlwKKyAgICBmaWxlOi8vZ2FzL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAorICAgIGZpbGU6Ly9pbmNsdWRlL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyXAorICAgIGZpbGU6Ly9pbmNsdWRlL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKKyAgICBmaWxlOi8vbGliaWJlcnR5L0NPUFlJTkcuTElCO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljN1wKKyAgICBmaWxlOi8vYmZkL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAorICAgICIKKworZGVmIGJpbnV0aWxzX2JyYW5jaF92ZXJzaW9uKGQpOgorICAgIHB2c3BsaXQgPSBkLmdldFZhcignUFYnLCBUcnVlKS5zcGxpdCgnLicpCisgICAgcmV0dXJuIHB2c3BsaXRbMF0gKyAiXyIgKyBwdnNwbGl0WzFdCisKK0JJTlVQViA9ICIke0BiaW51dGlsc19icmFuY2hfdmVyc2lvbihkKX0iCisKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gImJpbnV0aWxzLSg/UDxwdmVyPlxkK18oXGRfPykqKSIKKworU1JDUkVWID0gIjVmZTUzY2UzN2Y5ZDlkZDU0NGVjOGNjOWUyODYzYjY4ZTFhNjFmNGMiCitTUkNfVVJJID0gIlwKKyAgICAgZ2l0Oi8vc291cmNld2FyZS5vcmcvZ2l0L2JpbnV0aWxzLWdkYi5naXQ7YnJhbmNoPWJpbnV0aWxzLSR7QklOVVBWfS1icmFuY2g7cHJvdG9jb2w9Z2l0IFwKKyAgICAgZmlsZTovLzAwMDItY29uZmlndXJlLXdpZGVuLXRoZS1yZWdleHAtZm9yLVNILWFyY2hpdGVjdHVyZXMucGF0Y2ggXAorICAgICBmaWxlOi8vMDAwMy1Qb2ludC1zY3JpcHRzLWxvY2F0aW9uLXRvLWxpYmRpci5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDA0LU9ubHktZ2VuZXJhdGUtYW4tUlBBVEgtZW50cnktaWYtTERfUlVOX1BBVEgtaXMtbm90LWUucGF0Y2ggXAorICAgICBmaWxlOi8vMDAwNS1FeHBsaWNpdGx5LWxpbmstd2l0aC1saWJtLW9uLXVjbGliYy5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDA2LVVzZS1saWJ0b29sLTIuNC5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDA3LUFkZC10aGUtYXJtdjVlLWFyY2hpdGVjdHVyZS10by1iaW51dGlscy5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDA4LWRvbi10LWxldC10aGUtZGlzdHJvLWNvbXBpbGVyLXBvaW50LXRvLXRoZS13cm9uZy1pbnMucGF0Y2ggXAorICAgICBmaWxlOi8vMDAwOS13YXJuLWZvci11c2VzLW9mLXN5c3RlbS1kaXJlY3Rvcmllcy13aGVuLWNyb3NzLWxpbmtpLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMTAtRml4LXJwYXRoLWluLWxpYnRvb2wtd2hlbi1zeXNyb290LWlzLWVuYWJsZWQucGF0Y2ggXAorICAgICBmaWxlOi8vMDAxMS1DaGFuZ2UtZGVmYXVsdC1lbXVsYXRpb24tZm9yLW1pcHM2NC1saW51eC5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDEyLUFkZC1zdXBwb3J0LWZvci1OZXRsb2dpYy1YTFAucGF0Y2ggXAorICAgICBmaWxlOi8vMDAxMy1maXgtdGhlLWluY29ycmVjdC1hc3NlbWJsaW5nLWZvci1wcGMtd2FpdC1tbmVtb25pYy5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDE0LWxpYnRvb2wtcmVtb3ZlLXJwYXRoLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMTUtYmludXRpbHMtbWlwcy1nYXMtcGljLXJlbGF4LWxpbmtvbmNlLmRpZmYgXAorICAgICBmaWxlOi8vMDAxNS1SZWZpbmUtLmNmaV9zZWN0aW9ucy1jaGVjay10by1vbmx5LWNvbnNpZGVyLWNvbXBhY3QtLnBhdGNoIFwKKyIKK1MgID0gIiR7V09SS0RJUn0vZ2l0IgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisgICAgICAgIHJtIC1yZiAke1N9L2dkYiAke1N9L2xpYmRlY251bWJlciAke1N9L3JlYWRsaW5lICR7U30vc2ltCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3NzLWNhbmFkaWFuXzIuMjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3NzLWNhbmFkaWFuXzIuMjcuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3MtY2FuYWRpYW5fMi4yNi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zcy1jYW5hZGlhbl8yLjI3LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3NzXzIuMjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3NzXzIuMjcuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3NfMi4yNi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zc18yLjI3LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3Nzc2RrXzIuMjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3Nzc2RrXzIuMjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4ODEwNmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zc3Nka18yLjI2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotcmVxdWlyZSBiaW51dGlscy1jcm9zc18ke1BWfS5iYgotCi1pbmhlcml0IGNyb3Nzc2RrCi0KLVBOID0gImJpbnV0aWxzLWNyb3Nzc2RrLSR7VEFSR0VUX0FSQ0h9IgotCi1QUk9WSURFUyA9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1iaW51dGlscy1jcm9zc3NkayIKLQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtR2VuZXJhdGUtcmVsb2NhdGFibGUtU0RLcy5wYXRjaCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCXNlZCAtaSAncyMvdXNyL2xvY2FsL2xpYiAvbGliIC91c3IvbGliIyR7U0RLUEFUSE5BVElWRX0vbGliICR7U0RLUEFUSE5BVElWRX0vdXNyL2xpYiAvdXNyL2xvY2FsL2xpYiAvbGliIC91c3IvbGliIycgJHtTfS9sZC9jb25maWd1cmUudGd0Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3Nzc2RrXzIuMjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3Nzc2RrXzIuMjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjJjMDNkNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3NzZGtfMi4yNy5iYgpAQCAtMCwwICsxLDEzIEBACityZXF1aXJlIGJpbnV0aWxzLWNyb3NzXyR7UFZ9LmJiCisKK2luaGVyaXQgY3Jvc3NzZGsKKworUE4gPSAiYmludXRpbHMtY3Jvc3NzZGstJHtTREtfU1lTfSIKKworUFJPVklERVMgPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9YmludXRpbHMtY3Jvc3NzZGsiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLUdlbmVyYXRlLXJlbG9jYXRhYmxlLVNES3MucGF0Y2giCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwlzZWQgLWkgJ3MjL3Vzci9sb2NhbC9saWIgL2xpYiAvdXNyL2xpYiMke1NES1BBVEhOQVRJVkV9L2xpYiAke1NES1BBVEhOQVRJVkV9L3Vzci9saWIgL3Vzci9sb2NhbC9saWIgL2xpYiAvdXNyL2xpYiMnICR7U30vbGQvY29uZmlndXJlLnRndAorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLmluYwppbmRleCA0M2UyYWEyLi43NWQxOTBmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLmluYwpAQCAtNTcsNyArNTcsNiBAQAogCXN0cmluZ3MgXAogCXN0cmlwIFwKICIKLVVTRV9BTFRFUk5BVElWRVNfRk9SX3JlbW92ZV9taXBzID0gImxkLmdvbGQgZHdwIgogCiBweXRob24gZG9fcGFja2FnZV9wcmVwZW5kKCkgewogICAgIG1ha2VfYWx0cyA9IGQuZ2V0VmFyKCJVU0VfQUxURVJOQVRJVkVTX0ZPUiIsIFRydWUpIG9yICIiCkBAIC03Miw2ICs3MSw3IEBACiAKIEVYVFJBX09FQ09ORiA9ICItLXByb2dyYW0tcHJlZml4PSR7VEFSR0VUX1BSRUZJWH0gXAogICAgICAgICAgICAgICAgIC0tZGlzYWJsZS13ZXJyb3IgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWRldGVybWluaXN0aWMtYXJjaGl2ZXMgXAogICAgICAgICAgICAgICAgIC0tZW5hYmxlLXBsdWdpbnMgXAogICAgICAgICAgICAgICAgICR7TERHT0xEfSBcCiAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdtdWx0aWFyY2gnLCAnLS1lbmFibGUtNjQtYml0LWJmZCcsICcnLCBkKX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDEtR2VuZXJhdGUtcmVsb2NhdGFibGUtU0RLcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMS1HZW5lcmF0ZS1yZWxvY2F0YWJsZS1TREtzLnBhdGNoCmluZGV4IDkxZjkwMTcuLmNhZDcwNGEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMS1HZW5lcmF0ZS1yZWxvY2F0YWJsZS1TREtzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMS1HZW5lcmF0ZS1yZWxvY2F0YWJsZS1TREtzLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSAzYzc1MzU1MzQyYTg1NjJjY2I2NWI4YmJiZTgxYTA0OTVmZWM1YzU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAyZGFlNmIxMzdjZTYwOWZkMDA4ZjIwNjMwMzRhNDQwM2Q5NTQ4NGM1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTo1ODo1NCArMDAwMAotU3ViamVjdDogW1BBVENIIDAxLzE0XSBHZW5lcmF0ZSByZWxvY2F0YWJsZSBTREtzCitTdWJqZWN0OiBbUEFUQ0ggMDEvMTNdIEdlbmVyYXRlIHJlbG9jYXRhYmxlIFNES3MKIAogVGhpcyBwYXRjaCB3aWxsIG1vZGlmeSB0aGUgRUxGIGxpbmtlciBzY3JpcHRzIHNvIHRoYXQgdGhlIGNyb3Nzc2RrCiBsaW5rZXIgd2lsbCBnZW5lcmF0ZSBiaW5hcmllcyB3aXRoIGEgNDA5NiBieXRlcyBQVF9JTlRFUlAgc2VjdGlvbi4gV2hlbiB0aGUgYmluYXJpZXMKQEAgLTE4LDcgKzE4LDcgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2xkL2dlbnNjcmlwdHMuc2ggYi9sZC9nZW5zY3JpcHRzLnNoCi1pbmRleCBhODRkMjMzLi5kMTJjNGUyIDEwMDc1NQoraW5kZXggZWIyNjJlNy4uMWEzYjhiYyAxMDA3NTUKIC0tLSBhL2xkL2dlbnNjcmlwdHMuc2gKICsrKyBiL2xkL2dlbnNjcmlwdHMuc2gKIEBAIC0yNzcsNiArMjc3LDcgQEAgREFUQV9BTElHTk1FTlRfdT0iJHtEQVRBX0FMSUdOTUVOVF91LSR7REFUQV9BTElHTk1FTlRfcn19IgpAQCAtNDMsNyArNDMsNyBAQAogIExEX0ZMQUc9CiAgREFUQV9BTElHTk1FTlQ9JHtEQVRBX0FMSUdOTUVOVF99CiBkaWZmIC0tZ2l0IGEvbGQvc2NyaXB0dGVtcGwvZWxmLnNjIGIvbGQvc2NyaXB0dGVtcGwvZWxmLnNjCi1pbmRleCBlYzc4YzkwLi5mOWU3YTMxIDEwMDY0NAoraW5kZXggZjBjNjQzOS4uMjIzYzU1ZiAxMDA2NDQKIC0tLSBhL2xkL3NjcmlwdHRlbXBsL2VsZi5zYwogKysrIGIvbGQvc2NyaXB0dGVtcGwvZWxmLnNjCiBAQCAtMTM2LDggKzEzNiw4IEBAIGlmIHRlc3QgLW4gIiR7Q09NTU9OUEFHRVNJWkV9IjsgdGhlbgpAQCAtNTgsNSArNTgsNSBAQAogIGlmIHRlc3QgLXogIiRQTFQiOyB0aGVuCiAgICBJUExUPSIuaXBsdCAgICAgICAgICR7UkVMT0NBVElORy0wfSA6IHsgKiguaXBsdCkgfSIKIC0tIAotMi43LjEKKzIuOS4wCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMi1jb25maWd1cmUtd2lkZW4tdGhlLXJlZ2V4cC1mb3ItU0gtYXJjaGl0ZWN0dXJlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMi1jb25maWd1cmUtd2lkZW4tdGhlLXJlZ2V4cC1mb3ItU0gtYXJjaGl0ZWN0dXJlcy5wYXRjaAppbmRleCA0YTIwMmQwLi44ZDdjZjAwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDItY29uZmlndXJlLXdpZGVuLXRoZS1yZWdleHAtZm9yLVNILWFyY2hpdGVjdHVyZXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAyLWNvbmZpZ3VyZS13aWRlbi10aGUtcmVnZXhwLWZvci1TSC1hcmNoaXRlY3R1cmVzLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBiMWFlNjA0ODgwNTYyZWQwNjVmNjE0YTc0NWQzZjg5MjI4MzhiYzVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBlNGNkNDA3MjJmNTk3ZGZmMzljNzIxNGZhYjE3NDJkZDViY2M2N2ViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTowNzozMyArMDAwMAotU3ViamVjdDogW1BBVENIIDAyLzE0XSBjb25maWd1cmU6IHdpZGVuIHRoZSByZWdleHAgZm9yIFNIIGFyY2hpdGVjdHVyZXMKK1N1YmplY3Q6IFtQQVRDSCAwMi8xM10gY29uZmlndXJlOiB3aWRlbiB0aGUgcmVnZXhwIGZvciBTSCBhcmNoaXRlY3R1cmVzCiAKIGdwcm9mIG5lZWRzIHRvIGtub3cgYWJvdXQgdWNsaWJjCiAKQEAgLTE0LDEwICsxNCwxMCBAQAogIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCi1pbmRleCAzNGI2NmY3Li44NTQxNGFiIDEwMDc1NQoraW5kZXggYWQzZGZiNy4uMmE3NGE3NyAxMDA3NTUKIC0tLSBhL2NvbmZpZ3VyZQogKysrIGIvY29uZmlndXJlCi1AQCAtMzQ0NSw3ICszNDQ1LDcgQEAgY2FzZSAiJHt0YXJnZXR9IiBpbgorQEAgLTM0NDQsNyArMzQ0NCw3IEBAIGNhc2UgIiR7dGFyZ2V0fSIgaW4KICAgICAgOzsKICAgIHMzOTAtKi0qIHwgczM5MHgtKi0qKQogICAgICA7OwpAQCAtMjYsNyArMjYsNyBAQAogICAgICA7OwogICAgc2g2NC0qLSogfCBzaDUqLSotKikKICAgICAgOzsKLUBAIC0zOTM5LDcgKzM5MzksNyBAQCBjYXNlICIke3RhcmdldH0iIGluCitAQCAtMzk0Niw3ICszOTQ2LDcgQEAgY2FzZSAiJHt0YXJnZXR9IiBpbgogICAgb3IxayotKi0qKQogICAgICBub2NvbmZpZ2RpcnM9IiRub2NvbmZpZ2RpcnMgZ2RiIgogICAgICA7OwpAQCAtMzYsMTAgKzM2LDEwIEBACiAgICAgICAgc2gqLSotZWxmKQogICAgICAgICAgIDs7CiBkaWZmIC0tZ2l0IGEvZ3Byb2YvY29uZmlndXJlIGIvZ3Byb2YvY29uZmlndXJlCi1pbmRleCA2OTNiOTI3Li5kNGRiNTU0IDEwMDc1NQoraW5kZXggYmYzZWNhYS4uNjI2ZTFjNyAxMDA3NTUKIC0tLSBhL2dwcm9mL2NvbmZpZ3VyZQogKysrIGIvZ3Byb2YvY29uZmlndXJlCi1AQCAtNTg2OSw2ICs1ODY5LDExIEBAIGxpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKK0BAIC01ODczLDYgKzU4NzMsMTEgQEAgbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQogICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKICAgIDs7CiAgCkBAIC01Miw1ICs1Miw1IEBACiAgICBpZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX18gPiAvZGV2L251bGw7IHRoZW4KICAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J21hdGNoX3BhdHRlcm4gL2xpYlteL10rKFwuc29cLlswLTldK1wuWzAtOV0rfF9waWNcLmEpJCcKIC0tIAotMi43LjEKKzIuOS4wCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMy1Qb2ludC1zY3JpcHRzLWxvY2F0aW9uLXRvLWxpYmRpci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMy1Qb2ludC1zY3JpcHRzLWxvY2F0aW9uLXRvLWxpYmRpci5wYXRjaAppbmRleCAyYzcwZWNkLi5hY2MxOThiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDMtUG9pbnQtc2NyaXB0cy1sb2NhdGlvbi10by1saWJkaXIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAzLVBvaW50LXNjcmlwdHMtbG9jYXRpb24tdG8tbGliZGlyLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSAwMTgwOGU4ZWY4ZWU3MDljODIxOGQ5NjI2MDFjMThhNjNhMDYzYTFmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA5M2M0OWY2MTk3YmQ1OWIyYWJiZjA0YjMyOTZiZjEwMDI5YjgwZjQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTowOTo1OCArMDAwMAotU3ViamVjdDogW1BBVENIIDAzLzE0XSBQb2ludCBzY3JpcHRzIGxvY2F0aW9uIHRvIGxpYmRpcgorU3ViamVjdDogW1BBVENIIDAzLzEzXSBQb2ludCBzY3JpcHRzIGxvY2F0aW9uIHRvIGxpYmRpcgogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2RlYmlhbiBwYXRjaF0KIApAQCAtMTIsNyArMTIsNyBAQAogIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvbGQvTWFrZWZpbGUuYW0gYi9sZC9NYWtlZmlsZS5hbQotaW5kZXggMGIzYjA0OS4uMzg3MWM3NCAxMDA2NDQKK2luZGV4IDA1OTg5MjMuLmI0NzhiYTcgMTAwNjQ0CiAtLS0gYS9sZC9NYWtlZmlsZS5hbQogKysrIGIvbGQvTWFrZWZpbGUuYW0KIEBAIC01Nyw3ICs1Nyw3IEBAIGVuZGlmCkBAIC0yNSwxMCArMjUsMTAgQEAKICBFTVVMID0gQEVNVUxACiAgRU1VTEFUSU9OX09GSUxFUyA9IEBFTVVMQVRJT05fT0ZJTEVTQAogZGlmZiAtLWdpdCBhL2xkL01ha2VmaWxlLmluIGIvbGQvTWFrZWZpbGUuaW4KLWluZGV4IGVkOThmODcuLjUzMGU0YzkgMTAwNjQ0CitpbmRleCA3Yzc4MTk4Li41ZWI2N2UwIDEwMDY0NAogLS0tIGEvbGQvTWFrZWZpbGUuaW4KICsrKyBiL2xkL01ha2VmaWxlLmluCi1AQCAtNDEzLDcgKzQxMyw3IEBAIEFNX0NGTEFHUyA9ICQoV0FSTl9DRkxBR1MpICQoRUxGX0NMRkFHUykKK0BAIC00NTEsNyArNDUxLDcgQEAgQU1fQ0ZMQUdTID0gJChXQVJOX0NGTEFHUykgJChFTEZfQ0xGQUdTKQogICMgV2UgcHV0IHRoZSBzY3JpcHRzIGluIHRoZSBkaXJlY3RvcnkgJChzY3JpcHRkaXIpL2xkc2NyaXB0cy4KICAjIFdlIGNhbid0IHB1dCB0aGUgc2NyaXB0cyBpbiAkKGRhdGFkaXIpIGJlY2F1c2UgdGhlIFNFQVJDSF9ESVIKICAjIGRpcmVjdGl2ZXMgbmVlZCB0byBiZSBkaWZmZXJlbnQgZm9yIG5hdGl2ZSBhbmQgY3Jvc3MgbGlua2Vycy4KQEAgLTM4LDUgKzM4LDUgQEAKICBCRkRESVIgPSAkKEJBU0VESVIpL2JmZAogIElOQ0RJUiA9ICQoQkFTRURJUikvaW5jbHVkZQogLS0gCi0yLjcuMQorMi45LjAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA0LU9ubHktZ2VuZXJhdGUtYW4tUlBBVEgtZW50cnktaWYtTERfUlVOX1BBVEgtaXMtbm90LWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDQtT25seS1nZW5lcmF0ZS1hbi1SUEFUSC1lbnRyeS1pZi1MRF9SVU5fUEFUSC1pcy1ub3QtZS5wYXRjaAppbmRleCA4ZjBhNDAyLi4yOGExN2YzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDQtT25seS1nZW5lcmF0ZS1hbi1SUEFUSC1lbnRyeS1pZi1MRF9SVU5fUEFUSC1pcy1ub3QtZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDQtT25seS1nZW5lcmF0ZS1hbi1SUEFUSC1lbnRyeS1pZi1MRF9SVU5fUEFUSC1pcy1ub3QtZS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gYzAwOGM3Zjk3YzFjZjQ4Nzc0OWM2YzM3NTgyMGExZjNiM2M2YzUzZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNGZmODM3NzlkZTg2MjE3MTVjNmMyYTc5Y2Y3ZWQ4ZDc0ZmYyZDdjNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6Mjc6MTcgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwNC8xNF0gT25seSBnZW5lcmF0ZSBhbiBSUEFUSCBlbnRyeSBpZiBMRF9SVU5fUEFUSCBpcyBub3QKK1N1YmplY3Q6IFtQQVRDSCAwNC8xM10gT25seSBnZW5lcmF0ZSBhbiBSUEFUSCBlbnRyeSBpZiBMRF9SVU5fUEFUSCBpcyBub3QKICBlbXB0eQogCiBmb3IgY2FzZXMgd2hlcmUgLXJwYXRoIGlzbid0IHNwZWNpZmllZC4gZGViaWFuICgjMTUxMDI0KQpAQCAtMTUsMTAgKzE1LDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvbGQvZW11bHRlbXBsL2VsZjMyLmVtIGIvbGQvZW11bHRlbXBsL2VsZjMyLmVtCi1pbmRleCAwNDA1ZDRmLi43M2M1NDQ3IDEwMDY0NAoraW5kZXggNDdmYTU0OS4uZjRjNjQwZSAxMDA2NDQKIC0tLSBhL2xkL2VtdWx0ZW1wbC9lbGYzMi5lbQogKysrIGIvbGQvZW11bHRlbXBsL2VsZjMyLmVtCi1AQCAtMTI0Miw2ICsxMjQyLDggQEAgZnJhZ21lbnQgPDxFT0YKK0BAIC0xMjQ0LDYgKzEyNDQsOCBAQCBmcmFnbWVudCA8PEVPRgogIAkgICAgICAmJiBjb21tYW5kX2xpbmUucnBhdGggPT0gTlVMTCkKICAJICAgIHsKICAJICAgICAgbGliX3BhdGggPSAoY29uc3QgY2hhciAqKSBnZXRlbnYgKCJMRF9SVU5fUEFUSCIpOwpAQCAtMjcsNyArMjcsNyBAQAogIAkgICAgICBpZiAoZ2xkJHtFTVVMQVRJT05fTkFNRX1fc2VhcmNoX25lZWRlZCAobGliX3BhdGgsICZuLAogIAkJCQkJCSAgICAgIGZvcmNlKSkKICAJCWJyZWFrOwotQEAgLTE1MjMsNiArMTUyNSw4IEBAIGdsZCR7RU1VTEFUSU9OX05BTUV9X2JlZm9yZV9hbGxvY2F0aW9uICh2b2lkKQorQEAgLTE1MjUsNiArMTUyNyw4IEBAIGdsZCR7RU1VTEFUSU9OX05BTUV9X2JlZm9yZV9hbGxvY2F0aW9uICh2b2lkKQogICAgcnBhdGggPSBjb21tYW5kX2xpbmUucnBhdGg7CiAgICBpZiAocnBhdGggPT0gTlVMTCkKICAgICAgcnBhdGggPSAoY29uc3QgY2hhciAqKSBnZXRlbnYgKCJMRF9SVU5fUEFUSCIpOwpAQCAtMzcsNSArMzcsNSBAQAogICAgZm9yIChhYmZkID0gbGlua19pbmZvLmlucHV0X2JmZHM7IGFiZmQ7IGFiZmQgPSBhYmZkLT5saW5rLm5leHQpCiAgICAgIGlmIChiZmRfZ2V0X2ZsYXZvdXIgKGFiZmQpID09IGJmZF90YXJnZXRfZWxmX2ZsYXZvdXIpCiAtLSAKLTIuNy4xCisyLjkuMAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDUtRXhwbGljaXRseS1saW5rLXdpdGgtbGlibS1vbi11Y2xpYmMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDUtRXhwbGljaXRseS1saW5rLXdpdGgtbGlibS1vbi11Y2xpYmMucGF0Y2gKaW5kZXggOTJlYWQ3Zi4uMzMxZjc4MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA1LUV4cGxpY2l0bHktbGluay13aXRoLWxpYm0tb24tdWNsaWJjLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNS1FeHBsaWNpdGx5LWxpbmstd2l0aC1saWJtLW9uLXVjbGliYy5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gNmE0MTYzNWUyOWM0YTZjMDY0YjFmNjZlNzlhOGZlMjAyNmY0MzYxYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMThhN2FlMTY5ZThkNTVhY2U2ODMzNTdkMWRlNmIwN2U0ZmRmNzk3YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6MzI6NDkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwNS8xNF0gRXhwbGljaXRseSBsaW5rIHdpdGggbGlibSBvbiB1Y2xpYmMKK1N1YmplY3Q6IFtQQVRDSCAwNS8xM10gRXhwbGljaXRseSBsaW5rIHdpdGggbGlibSBvbiB1Y2xpYmMKIAogRGVzY3JpcHRpb246CiAKQEAgLTMxLDcgKzMxLDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9nYXMvY29uZmlndXJlLnRndCBiL2dhcy9jb25maWd1cmUudGd0Ci1pbmRleCAwYjQ5MGQ0Li4wODZlMGQyIDEwMDY0NAoraW5kZXggZTJkZjY1OS4uMWI5ZmQ5OSAxMDA2NDQKIC0tLSBhL2dhcy9jb25maWd1cmUudGd0CiArKysgYi9nYXMvY29uZmlndXJlLnRndAogQEAgLTQ4Nyw2ICs0ODcsMTIgQEAgY2FzZSAke2dlbmVyaWNfdGFyZ2V0fSBpbgpAQCAtNDgsNSArNDgsNSBAQAogICAgYWFyY2g2NCB8IGFscGhhIHwgYXJtIHwgaTM4NiB8IGlhNjQgfCBtaWNyb2JsYXplIHwgbWlwcyB8IG5zMzJrIHwgb3IxayB8IG9yMWtuZCB8IHBkcDExIHwgcHBjIHwgc3BhcmMgfCB6ODAgfCB6OGspCiAgICAgIGJmZF9nYXM9eWVzCiAtLSAKLTIuNy4xCisyLjkuMAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDYtVXNlLWxpYnRvb2wtMi40LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA2LVVzZS1saWJ0b29sLTIuNC5wYXRjaAppbmRleCBlNTRhYjFiLi5mMGZkZjQ2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDYtVXNlLWxpYnRvb2wtMi40LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNi1Vc2UtbGlidG9vbC0yLjQucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGRhNzBmMDg3NmNkZDhlZDcwM2Q5ZWQxNTI0MjEyY2NmZWZiMDllZjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDcxYWRjZGUzNjQ4ZGI0N2Y3ZmExNTVkYjEyODEwNTkxZmZkM2FlMzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogU3VuLCAxNCBGZWIgMjAxNiAxNzowNDowNyArMDAwMAotU3ViamVjdDogW1BBVENIIDA2LzE0XSBVc2UgbGlidG9vbCAyLjQKK1N1YmplY3Q6IFtQQVRDSCAwNi8xM10gVXNlIGxpYnRvb2wgMi40CiAKIGdldCBsaWJ0b29sIHN5c3Jvb3Qgc3VwcG9ydAogCkBAIC05LDI4ICs5LDI4IEBACiAtLS0KIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCi0gYmZkL2NvbmZpZ3VyZSAgICAgICAgfCAxMzIyICsrKysrKysrKysrKysrKysrLS0tLS0tCisgYmZkL2NvbmZpZ3VyZSAgICAgICAgfCAxMzE4ICsrKysrKysrKysrKysrKysrLS0tLS0tCiAgYmZkL2NvbmZpZ3VyZS5hYyAgICAgfCAgICAyICstCi0gYmludXRpbHMvY29uZmlndXJlICAgfCAxMzIwICsrKysrKysrKysrKysrKysrLS0tLS0tCisgYmludXRpbHMvY29uZmlndXJlICAgfCAxMzE2ICsrKysrKysrKysrKysrKysrLS0tLS0tCiAgY29uZmlndXJlICAgICAgICAgICAgfCAgICA0ICstCi0gZ2FzL2NvbmZpZ3VyZSAgICAgICAgfCAxMzIwICsrKysrKysrKysrKysrKysrLS0tLS0tCi0gZ3Byb2YvY29uZmlndXJlICAgICAgfCAxMzI1ICsrKysrKysrKysrKysrKysrLS0tLS0tCi0gbGQvY29uZmlndXJlICAgICAgICAgfCAxNjk1ICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCisgZ2FzL2NvbmZpZ3VyZSAgICAgICAgfCAxMzE0ICsrKysrKysrKysrKysrKysrLS0tLS0tCisgZ3Byb2YvY29uZmlndXJlICAgICAgfCAxMzIxICsrKysrKysrKysrKysrKysrLS0tLS0tCisgbGQvY29uZmlndXJlICAgICAgICAgfCAxNjkxICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCiAgbGlidG9vbC5tNCAgICAgICAgICAgfCAxMDgwICsrKysrKysrKysrKystLS0tLS0KICBsdG1haW4uc2ggICAgICAgICAgICB8IDI5MjUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KICBsdG9wdGlvbnMubTQgICAgICAgICB8ICAgIDIgKy0KICBsdHZlcnNpb24ubTQgICAgICAgICB8ICAgMTIgKy0KICBsdH5vYnNvbGV0ZS5tNCAgICAgICB8ICAgIDIgKy0KLSBvcGNvZGVzL2NvbmZpZ3VyZSAgICB8IDEzMjIgKysrKysrKysrKysrKysrKystLS0tLS0KKyBvcGNvZGVzL2NvbmZpZ3VyZSAgICB8IDEzMTggKysrKysrKysrKysrKysrKystLS0tLS0KICBvcGNvZGVzL2NvbmZpZ3VyZS5hYyB8ICAgIDIgKy0KICB6bGliL2NvbmZpZ3VyZSAgICAgICB8IDEzMjAgKysrKysrKysrKysrKysrKystLS0tLS0KLSAxNSBmaWxlcyBjaGFuZ2VkLCA5OTQ0IGluc2VydGlvbnMoKyksIDM3MDkgZGVsZXRpb25zKC0pCisgMTUgZmlsZXMgY2hhbmdlZCwgOTkzMCBpbnNlcnRpb25zKCspLCAzNjk3IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvYmZkL2NvbmZpZ3VyZSBiL2JmZC9jb25maWd1cmUKLWluZGV4IDc0MTFjNmQuLmVhZTc0M2UgMTAwNzU1CitpbmRleCBhNDM3NTY5Li41NzVhMjU3IDEwMDc1NQogLS0tIGEvYmZkL2NvbmZpZ3VyZQogKysrIGIvYmZkL2NvbmZpZ3VyZQotQEAgLTY3MCw2ICs2NzAsOSBAQCBPVE9PTAorQEAgLTY3MSw2ICs2NzEsOSBAQCBPVE9PTAogIExJUE8KICBOTUVESVQKICBEU1lNVVRJTApAQCAtNDAsNyArNDAsNyBAQAogIE9CSkRVTVAKICBMTl9TCiAgTk0KLUBAIC03ODIsNiArNzg1LDcgQEAgZW5hYmxlX3N0YXRpYworQEAgLTc4NCw2ICs3ODcsNyBAQCBlbmFibGVfc3RhdGljCiAgd2l0aF9waWMKICBlbmFibGVfZmFzdF9pbnN0YWxsCiAgd2l0aF9nbnVfbGQKQEAgLTQ4LDcgKzQ4LDcgQEAKICBlbmFibGVfbGlidG9vbF9sb2NrCiAgZW5hYmxlX3BsdWdpbnMKICBlbmFibGVfbGFyZ2VmaWxlCi1AQCAtMTQ1OCw2ICsxNDYyLDggQEAgT3B0aW9uYWwgUGFja2FnZXM6CitAQCAtMTQ2MCw2ICsxNDY0LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6CiAgICAtLXdpdGgtcGljICAgICAgICAgICAgICB0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBbZGVmYXVsdD11c2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdGhdCiAgICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dCkBAIC01Nyw3ICs1Nyw3IEBACiAgICAtLXdpdGgtbW1hcCAgICAgICAgICAgICB0cnkgdXNpbmcgbW1hcCBmb3IgQkZEIGlucHV0IGZpbGVzIGlmIGF2YWlsYWJsZQogICAgLS13aXRoLXNlcGFyYXRlLWRlYnVnLWRpcj1ESVIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvb2sgZm9yIGdsb2JhbCBzZXBhcmF0ZSBkZWJ1ZyBpbmZvIGluIERJUgotQEAgLTUzODgsOCArNTM5NCw4IEBAIGVzYWMKK0BAIC01MzkyLDggKzUzOTgsOCBAQCBlc2FjCiAgCiAgCiAgCkBAIC02OCw3ICs2OCw3IEBACiAgCiAgCiAgCi1AQCAtNTQyOSw3ICs1NDM1LDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KK0BAIC01NDMzLDcgKzU0MzksNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITwogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQogICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9CiAgIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCkBAIC03Nyw3ICs3Nyw3IEBACiAgICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KICAgIEVDSE89J3ByaW50IC1yIC0tJwogIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi1AQCAtNjExNSw4ICs2MTIxLDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKK0BAIC02MTE5LDggKzYxMjUsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OwogICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCiAgeHNpX3NoZWxsPW5vCiAgKCBfbHRfZHVtbXk9ImEvYi9jIgpAQCAtODgsNyArODgsNyBAQAogICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCiAgICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCiAgICAmJiB4c2lfc2hlbGw9eWVzCi1AQCAtNjE2NSw2ICs2MTcxLDgwIEBAIGVzYWMKK0BAIC02MTY5LDYgKzYxNzUsODAgQEAgZXNhYwogIAogIAogIApAQCAtMTY5LDcgKzE2OSw3IEBACiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKICAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9CiAgaWYgdGVzdCAiJHtsdF9jdl9sZF9yZWxvYWRfZmxhZytzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNjE4MSw2ICs2MjYxLDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCitAQCAtNjE4NSw2ICs2MjY1LDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCiAgZXNhYwogIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKICBjYXNlICRob3N0X29zIGluCkBAIC0xODEsNyArMTgxLDcgQEAKICAgIGRhcndpbiopCiAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotQEAgLTYzNDksNyArNjQzNCw4IEBAIG1pbmd3KiB8IHB3MzIqKQorQEAgLTYzNTMsNyArNjQzOCw4IEBAIG1pbmd3KiB8IHB3MzIqKQogICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwogICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKICAgIGVsc2UKQEAgLTE5MSw3ICsxOTEsNyBAQAogICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCiAgICBmaQogICAgOzsKLUBAIC02NTAzLDYgKzY1ODksMjEgQEAgZXNhYworQEAgLTY1MDcsNiArNjU5MywyMSBAQCBlc2FjCiAgZmkKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjUKICAkYXNfZWNobyAiJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjY7IH0KQEAgLTIxMyw3ICsyMTMsNyBAQAogIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAogIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAogIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotQEAgLTY1MTgsOSArNjYxOSwxNjIgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCitAQCAtNjUyMiw5ICs2NjIzLDE2MiBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KICAKICAKICAKQEAgLTM3OCw3ICszNzgsNyBAQAogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KICBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTY1MzYsNyArNjc5MCw3IEBAIGRvCitAQCAtNjU0MCw3ICs2Nzk0LDcgQEAgZG8KICAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwogICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgpAQCAtMzg3LDcgKzM4Nyw3IEBACiAgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAgICBicmVhayAyCiAgICBmaQotQEAgLTY1NTYsMTEgKzY4MTAsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KK0BAIC02NTYwLDExICs2ODE0LDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9CiAgZmkKICAKICAKQEAgLTQwNiw3ICs0MDYsNyBAQAogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KICBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTY1NzYsNyArNjgzNCw3IEBAIGRvCitAQCAtNjU4MCw3ICs2ODM4LDcgQEAgZG8KICAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwogICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgpAQCAtNDE1LDcgKzQxNSw3IEBACiAgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAgICBicmVhayAyCiAgICBmaQotQEAgLTY1OTUsNiArNjg1MywxMCBAQCBlbHNlCitAQCAtNjU5OSw2ICs2ODU3LDEwIEBAIGVsc2UKICAkYXNfZWNobyAibm8iID4mNjsgfQogIGZpCiAgCkBAIC00MjYsNyArNDI2LDcgQEAKICAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgogICAgICBBUj0iZmFsc2UiCiAgICBlbHNlCi1AQCAtNjYwNiwxNiArNjg2OCw3MiBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKK0BAIC02NjEwLDE2ICs2ODcyLDcyIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OwogIGVzYWMKICAgICAgQVI9JGFjX2N0X0FSCiAgICBmaQpAQCAtNTAzLDcgKzUwMyw3IEBACiAgCiAgCiAgCi1AQCAtNjk1Nyw4ICs3Mjc1LDggQEAgZXNhYworQEAgLTY5NjEsOCArNzI3OSw4IEBAIGVzYWMKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgogIAogICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcwpAQCAtNTE0LDcgKzUxNCw3IEBACiAgCiAgIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCiAgb3B0X2NyPQotQEAgLTY5OTQsNiArNzMxMiw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KK0BAIC02OTk4LDYgKzczMTYsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCiAgICBlbHNlCiAgICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCiAgICBmaQpAQCAtNTIyLDcgKzUyMiw3IEBACiAgCiAgICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KICAgIHBpcGVfd29ya3M9bm8KLUBAIC03MDM1LDYgKzczNTQsMTggQEAgX0xUX0VPRgorQEAgLTcwMzksNiArNzM1OCwxOCBAQCBfTFRfRU9GCiAgICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KICAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCiAgCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKQEAgLTU0MSw3ICs1NDEsNyBAQAogICNpZmRlZiBfX2NwbHVzcGx1cwogIGV4dGVybiAiQyIgewogICNlbmRpZgotQEAgLTcwNDYsNyArNzM3Nyw3IEBAIF9MVF9FT0YKK0BAIC03MDUwLDcgKzczODEsNyBAQCBfTFRfRU9GCiAgCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0CiAgCiAgLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLwpAQCAtNTUwLDcgKzU1MCw3IEBACiAgICBjb25zdCBjaGFyICpuYW1lOwogICAgdm9pZCAgICAgICAqYWRkcmVzczsKICB9Ci1AQCAtNzA3Miw4ICs3NDAzLDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKK0BAIC03MDc2LDggKzc0MDcsOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgewogIF9MVF9FT0YKICAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgogIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dApAQCAtNTYxLDcgKzU2MSw3IEBACiAgCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKICAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCiAgCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1Ci1AQCAtNzA4Myw4ICs3NDE0LDggQEAgX0xUX0VPRgorQEAgLTcwODcsOCArNzQxOCw4IEBAIF9MVF9FT0YKICAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogIAkgICAgcGlwZV93b3Jrcz15ZXMKICAJICBmaQpAQCAtNTcyLDcgKzU3Miw3IEBACiAgCWVsc2UKICAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKICAJZmkKLUBAIC03MTIxLDYgKzc0NTIsMTYgQEAgZWxzZQorQEAgLTcxMjUsNiArNzQ1NiwxNiBAQCBlbHNlCiAgJGFzX2VjaG8gIm9rIiA+JjY7IH0KICBmaQogIApAQCAtNTg5LDcgKzU4OSw3IEBACiAgCiAgCiAgCi1AQCAtNzE0Miw2ICs3NDgzLDQ1IEBAIGZpCitAQCAtNzE0Niw2ICs3NDg3LDQ1IEBAIGZpCiAgCiAgCiAgCkBAIC02MzUsNyArNjM1LDcgQEAKICAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtbGlidG9vbC1sb2NrIHdhcyBnaXZlbi4KICBpZiB0ZXN0ICIke2VuYWJsZV9saWJ0b29sX2xvY2src2V0fSIgPSBzZXQ7IHRoZW4gOgogICAgZW5hYmxldmFsPSRlbmFibGVfbGlidG9vbF9sb2NrOwotQEAgLTczNDgsNiArNzcyOCwxMjMgQEAgZXNhYworQEAgLTczNTIsNiArNzczMiwxMjMgQEAgZXNhYwogIAogIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgogIApAQCAtNzU5LDcgKzc1OSw3IEBACiAgCiAgICBjYXNlICRob3N0X29zIGluCiAgICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCi1AQCAtNzkxMSw2ICs4NDA4LDggQEAgX0xUX0VPRgorQEAgLTc5MTUsNiArODQxMiw4IEBAIF9MVF9FT0YKICAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKICAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1CiAgICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQpAQCAtNzY4LDcgKzc2OCw3IEBACiAgICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCiAgaW50IG1haW4oKSB7IHJldHVybiAwO30KICBfTFRfRU9GCi1AQCAtODA3NSw3ICs4NTc0LDggQEAgZmkKK0BAIC04MDc5LDcgKzg1NzgsOCBAQCBmaQogIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKICAKICAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgpAQCAtNzc4LDcgKzc3OCw3IEBACiAgCiAgCiAgCi1AQCAtODE2NCw3ICs4NjY0LDcgQEAgYWl4MyopCitAQCAtODE2OCw3ICs4NjY4LDcgQEAgYWl4MyopCiAgZXNhYwogIAogICMgR2xvYmFsIHZhcmlhYmxlczoKQEAgLTc4Nyw3ICs3ODcsNyBAQAogIGNhbl9idWlsZF9zaGFyZWQ9eWVzCiAgCiAgIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCi1AQCAtODQ2Miw4ICs4OTYyLDYgQEAgZmkKK0BAIC04NDY2LDggKzg5NjYsNiBAQCBmaQogIGx0X3Byb2dfY29tcGlsZXJfcGljPQogIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQogIApAQCAtNzk2LDcgKzc5Niw3IEBACiAgCiAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJwotQEAgLTg2MjksNiArOTEyNywxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorQEAgLTg2MzMsNiArOTEzMSwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQogIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCiAgCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKICAJOzsKQEAgLTgwOSw3ICs4MDksNyBAQAogICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKICAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCiAgCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCi1AQCAtODY5MSw3ICs5MTk1LDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KK0BAIC04Njk1LDcgKzkxOTksNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQogICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKICAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCiAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KQEAgLTgxOCw3ICs4MTgsNyBAQAogIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKICAgICAgICAqKQogIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7Ci1AQCAtODc0OCwxMyArOTI1MiwxNyBAQCBjYXNlICRob3N0X29zIGluCitAQCAtODc1MiwxMyArOTI1NiwxNyBAQCBjYXNlICRob3N0X29zIGluCiAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCiAgICAgIDs7CiAgZXNhYwpAQCAtODQyLDcgKzg0Miw3IEBACiAgCiAgIwogICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLUBAIC04ODE1LDYgKzkzMjMsMTEgQEAgZmkKK0BAIC04ODE5LDYgKzkzMjcsMTEgQEAgZmkKICAKICAKICAKQEAgLTg1NCw3ICs4NTQsNyBAQAogICMKICAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCiAgIwotQEAgLTkxNjUsNyArOTY3OCw4IEBAIF9MVF9FT0YKK0BAIC05MTY5LDcgKzk2ODIsOCBAQCBfTFRfRU9GCiAgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKICAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KICAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwpAQCAtODY0LDcgKzg2NCw3IEBACiAgCiAgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgogICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLUBAIC05MjY0LDEyICs5Nzc4LDEyIEBAIF9MVF9FT0YKK0BAIC05MjY4LDEyICs5NzgyLDEyIEBAIF9MVF9FT0YKICAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKICAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQogIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJwpAQCAtODc5LDcgKzg3OSw3IEBACiAgCSAgZmkKICAJICA7OwogIAllc2FjCi1AQCAtOTI4Myw4ICs5Nzk3LDggQEAgX0xUX0VPRgorQEAgLTkyODcsOCArOTgwMSw4IEBAIF9MVF9FT0YKICAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJwogIAl3bGFyYz0KICAgICAgICBlbHNlCkBAIC04OTAsNyArODkwLDcgQEAKICAgICAgICBmaQogICAgICAgIDs7CiAgCi1AQCAtOTMwMiw4ICs5ODE2LDggQEAgX0xUX0VPRgorQEAgLTkzMDYsOCArOTgyMCw4IEBAIF9MVF9FT0YKICAKICBfTFRfRU9GCiAgICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCkBAIC05MDEsNyArOTAxLDcgQEAKICAgICAgICBlbHNlCiAgCWxkX3NobGlicz1ubwogICAgICAgIGZpCi1AQCAtOTM0OSw4ICs5ODYzLDggQEAgX0xUX0VPRgorQEAgLTkzNTMsOCArOTg2Nyw4IEBAIF9MVF9FT0YKICAKICAgICAgKikKICAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCkBAIC05MTIsNyArOTEyLDcgQEAKICAgICAgICBlbHNlCiAgCWxkX3NobGlicz1ubwogICAgICAgIGZpCi1AQCAtOTQ4MCw3ICs5OTk0LDEzIEBAIF9MVF9FT0YKK0BAIC05NDg0LDcgKzk5OTgsMTMgQEAgX0xUX0VPRgogIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJwogICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCiAgICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCkBAIC05MjcsNyArOTI3LDcgQEAKICAvKiBlbmQgY29uZmRlZnMuaC4gICovCiAgCiAgaW50Ci1AQCAtOTQ5MywyMiArMTAwMTMsMjkgQEAgbWFpbiAoKQorQEAgLTk0OTcsMjIgKzEwMDE3LDI5IEBAIG1haW4gKCkKICBfQUNFT0YKICBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CiAgCkBAIC05NzAsNyArOTcwLDcgQEAKICAKICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCiAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgotQEAgLTk1MjAsNyArMTAwNDcsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtOTUyNCw3ICsxMDA1MSwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKICAJZWxzZQogIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCiAgCSAjIGVtcHR5IGV4ZWN1dGFibGUuCkBAIC05ODUsNyArOTg1LDcgQEAKICAvKiBlbmQgY29uZmRlZnMuaC4gICovCiAgCiAgaW50Ci1AQCAtOTUzMywyMiArMTAwNjYsMjkgQEAgbWFpbiAoKQorQEAgLTk1MzcsMjIgKzEwMDcwLDI5IEBAIG1haW4gKCkKICBfQUNFT0YKICBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CiAgCkBAIC0xMDI4LDcgKzEwMjgsNyBAQAogIAogIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKICAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAotQEAgLTk1OTMsMjAgKzEwMTMzLDYzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTk1OTcsMjAgKzEwMTM3LDYzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQogICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCiAgICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwogICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCkBAIC0xMTA2LDcgKzExMDYsNyBAQAogICAgICAgIDs7CiAgCiAgICAgIGRhcndpbiogfCByaGFwc29keSopCi1AQCAtOTY2Nyw3ICsxMDI1MCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTk2NzEsNyArMTAyNTQsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKICAKICAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgogICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCkBAIC0xMTE1LDcgKzExMTUsNyBAQAogICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKICAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCiAgICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubwotQEAgLTk2NzUsNyArMTAyNTgsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC05Njc5LDcgKzEwMjYyLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCiAgCiAgICAgIGhwdXg5KikKICAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgpAQCAtMTEyNCw3ICsxMTI0LDcgQEAKICAgICAgICBlbHNlCiAgCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCiAgICAgICAgZmkKLUBAIC05NjkxLDcgKzEwMjc0LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtOTY5NSw3ICsxMDI3OCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQogIAogICAgICBocHV4MTAqKQogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgpAQCAtMTEzMyw3ICsxMTMzLDcgQEAKICAgICAgICBlbHNlCiAgCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKICAgICAgICBmaQotQEAgLTk3MTUsMTAgKzEwMjk4LDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTk3MTksMTAgKzEwMzAyLDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQogIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAgCSAgOzsKICAJaWE2NCopCkBAIC0xMTQ2LDcgKzExNDYsNyBAQAogIAkgIDs7CiAgCWVzYWMKICAgICAgICBlbHNlCi1AQCAtOTc5NywyMyArMTAzODAsMzYgQEAgZmkKK0BAIC05ODAxLDIzICsxMDM4NCwzNiBAQCBmaQogIAogICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCkBAIC0xMTkxLDcgKzExOTEsNyBAQAogICAgICAgIGVsc2UKICAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKICAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi1AQCAtOTg5OCw3ICsxMDQ5NCw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorQEAgLTk5MDIsNyArMTA0OTgsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKICAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCiAgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwpAQCAtMTIwMCw3ICsxMjAwLDcgQEAKICAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwogICAgICAgIGVsc2UKICAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi1AQCAtOTkxNyw5ICsxMDUxMyw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorQEAgLTk5MjEsOSArMTA1MTcsOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKICAgICAgICBub191bmRlZmluZWRfZmxhZz0nIC16IGRlZnMnCiAgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAJd2xhcmM9JyR7d2x9JwpAQCAtMTIxMiw3ICsxMjEyLDcgQEAKICAgICAgICBlbHNlCiAgCWNhc2UgYCRDQyAtViAyPiYxYCBpbgogIAkqIkNvbXBpbGVycyA1LjAiKikKLUBAIC0xMDQ5NSw4ICsxMTA5MSw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKK0BAIC0xMDQ5OSw4ICsxMTA5NSw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKICAgIG5lZWRfdmVyc2lvbj1ubwogICAgbmVlZF9saWJfcHJlZml4PW5vCiAgCkBAIC0xMjI0LDcgKzEyMjQsNyBAQAogICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJwogICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCiAgICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotQEAgLTEwNTI5LDEzICsxMTEyNiw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCitAQCAtMTA1MzMsMTMgKzExMTMwLDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKICAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCiAgICAgICAgOzsKICAgICAgZXNhYwpAQCAtMTI5Nyw3ICsxMjk3LDcgQEAKICAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgogICAgc2hsaWJwYXRoX3Zhcj1QQVRICiAgICA7OwotQEAgLTEwNjI3LDcgKzExMjgyLDcgQEAgaGFpa3UqKQorQEAgLTEwNjMxLDcgKzExMjg2LDcgQEAgaGFpa3UqKQogICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKICAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICiAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCkBAIC0xMzA2LDE2ICsxMzA2LDcgQEAKICAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKICAgIDs7CiAgCi1AQCAtMTE0MjMsNyArMTIwNzgsNyBAQCBlbHNlCi0gICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCi0gICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKLS0jbGluZSAxMTQyNiAiY29uZmlndXJlIgotKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSAjaWYgSEFWRV9ETEZDTl9ICi1AQCAtMTE0NjcsMTAgKzEyMTIyLDEwIEBAIGVsc2UKK0BAIC0xMTQ3MSwxMCArMTIxMjYsMTAgQEAgZWxzZQogIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKICAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCiAgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCkBAIC0xMzI4LDE2ICsxMzE5LDcgQEAKICBpbnQgbWFpbiAoKQogIHsKICAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTExNTI5LDcgKzEyMTg0LDcgQEAgZWxzZQotICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgotICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCi0tI2xpbmUgMTE1MzIgImNvbmZpZ3VyZSIKLSsjbGluZSAkTElORU5PICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gCi0gI2lmIEhBVkVfRExGQ05fSAotQEAgLTExNTczLDEwICsxMjIyOCwxMCBAQCBlbHNlCitAQCAtMTE1NzcsMTAgKzEyMjMyLDEwIEBAIGVsc2UKICAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCiAgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwogICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQpAQCAtMTM1MCw3ICsxMzMyLDcgQEAKICBpbnQgbWFpbiAoKQogIHsKICAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTE1MTIxLDcgKzE1Nzc2LDcgQEAgU0hBUkVEX0xERkxBR1M9CitAQCAtMTQwNzgsNyArMTQ3MzMsNyBAQCBTSEFSRURfTERGTEFHUz0KICBpZiB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSAieWVzIjsgdGhlbgogICAgeD1gc2VkIC1uIC1lICdzL15bIAldKlBJQ0ZMQUdbIAldKj1bIAldKi8vcCcgPCAuLi9saWJpYmVydHkvTWFrZWZpbGUgfCBzZWQgLW4gJyRwJ2AKICAgIGlmIHRlc3QgLW4gIiR4IjsgdGhlbgpAQCAtMTM1OSw3ICsxMzQxLDcgQEAKICAgIGZpCiAgCiAgIyBNb3JlIGhhY2tzIHRvIGJ1aWxkIERMTHMgb24gV2luZG93cy4KLUBAIC0xNjc0NiwxMyArMTc0MDEsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE2Nzg5LDEzICsxNzQ0NCwyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbHRfdW5zZXQ9J2AkRUNITyAiJGx0X3Vuc2V0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9TUDJOTD0nYCRFQ0hPICIkbHRfU1AyTkwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGx0X05MMlNQPSdgJEVDSE8gIiRsdF9OTDJTUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCkBAIC0xMzgwLDcgKzEzNjIsNyBAQAogIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTY3NjcsMTQgKzE3NDI5LDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCitAQCAtMTY4MTAsMTQgKzE3NDcyLDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwpAQCAtMTM5OSw3ICsxMzgxLDcgQEAKICBEU1lNVVRJTD0nYCRFQ0hPICIkRFNZTVVUSUwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIE5NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xNjgwNywxMiArMTc0NzIsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKK0BAIC0xNjg1MCwxMiArMTc1MTUsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKICBoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCkBAIC0xNDEzLDcgKzEzOTUsNyBAQAogIGZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBuZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiJG5lZWRfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTY4NjcsOCArMTc1MzIsMTMgQEAgcmVsb2FkX2ZsYWcgXAorQEAgLTE2OTEwLDggKzE3NTc1LDEzIEBAIHJlbG9hZF9mbGFnIFwKICBPQkpEVU1QIFwKICBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCiAgZmlsZV9tYWdpY19jbWQgXApAQCAtMTQyNyw3ICsxNDA5LDcgQEAKICBTVFJJUCBcCiAgUkFOTElCIFwKICBDQyBcCi1AQCAtMTY4NzgsMTIgKzE3NTQ4LDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAorQEAgLTE2OTIxLDEyICsxNzU5MSwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXApAQCAtMTQ0Myw3ICsxNDI1LDcgQEAKICBEU1lNVVRJTCBcCiAgTk1FRElUIFwKICBMSVBPIFwKLUBAIC0xNjg5OSw3ICsxNzU3MSw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKK0BAIC0xNjk0Miw3ICsxNzYxNCw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKQEAgLTE0NTEsNyArMTQzMyw3IEBACiAgZXhjbHVkZV9leHBzeW1zIFwKICBpbmNsdWRlX2V4cHN5bXMgXAogIGZpbGVfbGlzdF9zcGVjIFwKLUBAIC0xNjkzNSw2ICsxNzYwNiw3IEBAIG1vZHVsZV9jbWRzIFwKK0BAIC0xNjk3OCw2ICsxNzY0OSw3IEBAIG1vZHVsZV9jbWRzIFwKICBtb2R1bGVfZXhwc3ltX2NtZHMgXAogIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAogIHByZWxpbmtfY21kcyBcCkBAIC0xNDU5LDcgKzE0NDEsNyBAQAogIHBvc3RpbnN0YWxsX2NtZHMgXAogIHBvc3R1bmluc3RhbGxfY21kcyBcCiAgZmluaXNoX2NtZHMgXAotQEAgLTE3NzE0LDcgKzE4Mzg2LDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAorQEAgLTE3NzU3LDcgKzE4NDI5LDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAogICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgogICMKICAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LApAQCAtMTQ2OSw3ICsxNDUxLDcgQEAKICAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgogICMKICAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCi1AQCAtMTc4MTcsMTkgKzE4NDkwLDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAorQEAgLTE3ODYwLDE5ICsxODUzMyw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKICAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCiAgTkwyU1A9JGx0X2x0X05MMlNQCiAgCkBAIC0xNTEzLDcgKzE0OTUsNyBAQAogICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCiAgU1RSSVA9JGx0X1NUUklQCiAgCi1AQCAtMTc4NTksNiArMTg1NTUsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKK0BAIC0xNzkwMiw2ICsxODU5OCwxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcwogICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCiAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4CiAgCkBAIC0xNTI2LDcgKzE1MDgsNyBAQAogICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgogIG9iamRpcj0kb2JqZGlyCiAgCi1AQCAtMTc4NjgsNiArMTg1NzAsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAorQEAgLTE3OTExLDYgKzE4NjEzLDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKICAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPwogIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKICAKQEAgLTE1MzYsNyArMTUxOCw3IEBACiAgIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgogIERTWU1VVElMPSRsdF9EU1lNVVRJTAogIAotQEAgLTE3OTgyLDEyICsxODY4NywxMiBAQCB3aXRoX2djYz0kR0NDCitAQCAtMTgwMjUsMTIgKzE4NzMwLDEyIEBAIHdpdGhfZ2NjPSRHQ0MKICAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCiAgbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZwogIApAQCAtMTU1Miw3ICsxNTM0LDcgQEAKICAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCiAgbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKICAKLUBAIC0xODA3NCw5ICsxODc3OSw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKK0BAIC0xODExNyw5ICsxODgyMiw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKICAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KICBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCiAgCkBAIC0xNTYyLDcgKzE1NDQsNyBAQAogICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgogIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCiAgCi1AQCAtMTgwOTIsNiArMTg3OTQsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcworQEAgLTE4MTM1LDYgKzE4ODM3LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKICAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgogIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCiAgCkBAIC0xNTcyLDcgKzE1NTQsNyBAQAogICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgogIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYwogIAotQEAgLTE4MTI0LDIxMCArMTg4MjksMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgorQEAgLTE4MTY3LDIxMCArMTg4NzIsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgogICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgogICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KICAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/CkBAIC0xOTQ3LDEwICsxOTI5LDEwIEBACiAgICBjaG1vZCAreCAiJG9maWxlIgogIAogZGlmZiAtLWdpdCBhL2JmZC9jb25maWd1cmUuYWMgYi9iZmQvY29uZmlndXJlLmFjCi1pbmRleCA2ZjVlODVmLi40NGJkMDJjIDEwMDY0NAoraW5kZXggNjY5Y2ZmNy4uNWY1Nzg3NyAxMDA2NDQKIC0tLSBhL2JmZC9jb25maWd1cmUuYWMKICsrKyBiL2JmZC9jb25maWd1cmUuYWMKLUBAIC01NjcsNyArNTY3LDcgQEAgY2hhbmdlcXVvdGUoLClkbmwKK0BAIC0yNTMsNyArMjUzLDcgQEAgY2hhbmdlcXVvdGUoLClkbmwKICAgIHg9YHNlZCAtbiAtZSAncy9eWyAJXSpQSUNGTEFHWyAJXSo9WyAJXSovL3AnIDwgLi4vbGliaWJlcnR5L01ha2VmaWxlIHwgc2VkIC1uICckcCdgCiAgY2hhbmdlcXVvdGUoWyxdKWRubAogICAgaWYgdGVzdCAtbiAiJHgiOyB0aGVuCkBAIC0xOTYwLDEwICsxOTQyLDEwIEBACiAgCiAgIyBNb3JlIGhhY2tzIHRvIGJ1aWxkIERMTHMgb24gV2luZG93cy4KIGRpZmYgLS1naXQgYS9iaW51dGlscy9jb25maWd1cmUgYi9iaW51dGlscy9jb25maWd1cmUKLWluZGV4IGQ0ZjNlMWUuLmE2ZGY1YmIgMTAwNzU1CitpbmRleCA2Y2JmMTdjLi42ZDIwNjAwIDEwMDc1NQogLS0tIGEvYmludXRpbHMvY29uZmlndXJlCiArKysgYi9iaW51dGlscy9jb25maWd1cmUKLUBAIC02NTcsOCArNjU3LDExIEBAIE9UT09MCitAQCAtNjU4LDggKzY1OCwxMSBAQCBPVE9PTAogIExJUE8KICBOTUVESVQKICBEU1lNVVRJTApAQCAtMTk3NSw3ICsxOTU3LDcgQEAKICBPQkpEVU1QCiAgTE5fUwogIE5NCi1AQCAtNzY5LDYgKzc3Miw3IEBAIGVuYWJsZV9zdGF0aWMKK0BAIC03NzEsNiArNzc0LDcgQEAgZW5hYmxlX3N0YXRpYwogIHdpdGhfcGljCiAgZW5hYmxlX2Zhc3RfaW5zdGFsbAogIHdpdGhfZ251X2xkCkBAIC0xOTgzLDcgKzE5NjUsNyBAQAogIGVuYWJsZV9saWJ0b29sX2xvY2sKICBlbmFibGVfcGx1Z2lucwogIGVuYWJsZV9sYXJnZWZpbGUKLUBAIC0xNDQxLDYgKzE0NDUsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKK0BAIC0xNDQzLDYgKzE0NDcsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKICAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KICAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KQEAgLTE5OTIsNyArMTk3NCw3IEBACiAgICAtLXdpdGgtc3lzdGVtLXpsaWIgICAgICB1c2UgaW5zdGFsbGVkIGxpYnoKICAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBkZWZhdWx0PW5vCiAgICAtLXdpdGgtbGliaWNvbnYtcHJlZml4Wz1ESVJdICBzZWFyY2ggZm9yIGxpYmljb252IGluIERJUi9pbmNsdWRlIGFuZCBESVIvbGliCi1AQCAtNTE1NSw4ICs1MTYxLDggQEAgZXNhYworQEAgLTUxNTksOCArNTE2NSw4IEBAIGVzYWMKICAKICAKICAKQEAgLTIwMDMsNyArMTk4NSw3IEBACiAgCiAgCiAgCi1AQCAtNTE5Niw3ICs1MjAyLDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KK0BAIC01MjAwLDcgKzUyMDYsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITwogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQogICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9CiAgIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCkBAIC0yMDEyLDcgKzE5OTQsNyBAQAogICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCiAgICBFQ0hPPSdwcmludCAtciAtLScKICBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotQEAgLTU4ODIsOCArNTg4OCw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7CitAQCAtNTg4Niw4ICs1ODkyLDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKICAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcwogIHhzaV9zaGVsbD1ubwogICggX2x0X2R1bW15PSJhL2IvYyIKQEAgLTIwMjMsNyArMjAwNSw3IEBACiAgICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKICAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKICAgICYmIHhzaV9zaGVsbD15ZXMKLUBAIC01OTMyLDYgKzU5MzgsODAgQEAgZXNhYworQEAgLTU5MzYsNiArNTk0Miw4MCBAQCBlc2FjCiAgCiAgCiAgCkBAIC0yMTA0LDcgKzIwODYsNyBAQAogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1CiAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQogIGlmIHRlc3QgIiR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTU5NDgsNiArNjAyOCwxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgorQEAgLTU5NTIsNiArNjAzMiwxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgogIGVzYWMKICByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCiAgY2FzZSAkaG9zdF9vcyBpbgpAQCAtMjExNiw3ICsyMDk4LDcgQEAKICAgIGRhcndpbiopCiAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotQEAgLTYxMTYsNyArNjIwMSw4IEBAIG1pbmd3KiB8IHB3MzIqKQorQEAgLTYxMjAsNyArNjIwNSw4IEBAIG1pbmd3KiB8IHB3MzIqKQogICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwogICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKICAgIGVsc2UKQEAgLTIxMjYsNyArMjEwOCw3IEBACiAgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKICAgIGZpCiAgICA7OwotQEAgLTYyNzAsNiArNjM1NiwyMSBAQCBlc2FjCitAQCAtNjI3NCw2ICs2MzYwLDIxIEBAIGVzYWMKICBmaQogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQogICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQpAQCAtMjE0OCw3ICsyMTMwLDcgQEAKICBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKICBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKICB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLUBAIC02Mjg1LDkgKzYzODYsMTYyIEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorQEAgLTYyODksOSArNjM5MCwxNjIgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCiAgCiAgCiAgCkBAIC0yMzEzLDcgKzIyOTUsNyBAQAogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KICBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTYzMDMsNyArNjU1Nyw3IEBAIGRvCitAQCAtNjMwNyw3ICs2NTYxLDcgQEAgZG8KICAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwogICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgpAQCAtMjMyMiw3ICsyMzA0LDcgQEAKICAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICAgIGJyZWFrIDIKICAgIGZpCi1AQCAtNjMyMywxMSArNjU3NywxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQorQEAgLTYzMjcsMTEgKzY1ODEsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KICBmaQogIAogIApAQCAtMjM0MSw3ICsyMzIzLDcgQEAKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CiAgaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0FSK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC02MzQzLDcgKzY2MDEsNyBAQCBkbworQEAgLTYzNDcsNyArNjYwNSw3IEBAIGRvCiAgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KICAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KQEAgLTIzNTAsNyArMjMzMiw3IEBACiAgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAgICBicmVhayAyCiAgICBmaQotQEAgLTYzNjIsNiArNjYyMCwxMCBAQCBlbHNlCitAQCAtNjM2Niw2ICs2NjI0LDEwIEBAIGVsc2UKICAkYXNfZWNobyAibm8iID4mNjsgfQogIGZpCiAgCkBAIC0yMzYxLDcgKzIzNDMsNyBAQAogICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCiAgICAgIEFSPSJmYWxzZSIKICAgIGVsc2UKLUBAIC02MzczLDEyICs2NjM1LDEwIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OworQEAgLTYzNzcsMTIgKzY2MzksMTAgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7CiAgZXNhYwogICAgICBBUj0kYWNfY3RfQVIKICAgIGZpCkBAIC0yMzc2LDcgKzIzNTgsNyBAQAogIAogIAogIAotQEAgLTYzOTAsNiArNjY1MCw2NCBAQCB0ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQorQEAgLTYzOTQsNiArNjY1NCw2NCBAQCB0ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQogIAogIAogIApAQCAtMjQ0MSw3ICsyNDIzLDcgQEAKICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCiAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9c3RyaXAiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXN0cmlwOyBhY193b3JkPSQyCi1AQCAtNjcyNCw4ICs3MDQyLDggQEAgZXNhYworQEAgLTY3MjgsOCArNzA0Niw4IEBAIGVzYWMKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgogIAogICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcwpAQCAtMjQ1Miw3ICsyNDM0LDcgQEAKICAKICAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KICBvcHRfY3I9Ci1AQCAtNjc2MSw2ICs3MDc5LDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbworQEAgLTY3NjUsNiArNzA4Myw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KICAgIGVsc2UKICAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKICAgIGZpCkBAIC0yNDYwLDcgKzI0NDIsNyBAQAogIAogICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCiAgICBwaXBlX3dvcmtzPW5vCi1AQCAtNjgwMiw2ICs3MTIxLDE4IEBAIF9MVF9FT0YKK0BAIC02ODA2LDYgKzcxMjUsMTggQEAgX0xUX0VPRgogICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCiAgCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgogIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0CkBAIC0yNDc5LDcgKzI0NjEsNyBAQAogICNpZmRlZiBfX2NwbHVzcGx1cwogIGV4dGVybiAiQyIgewogICNlbmRpZgotQEAgLTY4MTMsNyArNzE0NCw3IEBAIF9MVF9FT0YKK0BAIC02ODE3LDcgKzcxNDgsNyBAQCBfTFRfRU9GCiAgCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0CiAgCiAgLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLwpAQCAtMjQ4OCw3ICsyNDcwLDcgQEAKICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICB2b2lkICAgICAgICphZGRyZXNzOwogIH0KLUBAIC02ODM5LDggKzcxNzAsOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgeworQEAgLTY4NDMsOCArNzE3NCw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7CiAgX0xUX0VPRgogIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCiAgCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0CkBAIC0yNDk5LDcgKzI0ODEsNyBAQAogIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCiAgCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgogIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQotQEAgLTY4NTAsOCArNzE4MSw4IEBAIF9MVF9FT0YKK0BAIC02ODU0LDggKzcxODUsOCBAQCBfTFRfRU9GCiAgICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAJICAgIHBpcGVfd29ya3M9eWVzCiAgCSAgZmkKQEAgLTI1MTAsNyArMjQ5Miw3IEBACiAgCWVsc2UKICAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKICAJZmkKLUBAIC02ODg4LDYgKzcyMTksMjEgQEAgZWxzZQorQEAgLTY4OTIsNiArNzIyMywyMSBAQCBlbHNlCiAgJGFzX2VjaG8gIm9rIiA+JjY7IH0KICBmaQogIApAQCAtMjUzMiw3ICsyNTE0LDcgQEAKICAKICAKICAKLUBAIC02OTA2LDYgKzcyNTIsNDAgQEAgZmkKK0BAIC02OTEwLDYgKzcyNTYsNDAgQEAgZmkKICAKICAKICAKQEAgLTI1NzMsNyArMjU1NSw3IEBACiAgCiAgCiAgCi1AQCAtNzExNSw2ICs3NDk1LDEyMyBAQCBlc2FjCitAQCAtNzExOSw2ICs3NDk5LDEyMyBAQCBlc2FjCiAgCiAgbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCiAgCkBAIC0yNjk3LDcgKzI2NzksNyBAQAogIAogICAgY2FzZSAkaG9zdF9vcyBpbgogICAgICByaGFwc29keSogfCBkYXJ3aW4qKQotQEAgLTc2NzgsNiArODE3NSw4IEBAIF9MVF9FT0YKK0BAIC03NjgyLDYgKzgxNzksOCBAQCBfTFRfRU9GCiAgICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1CiAgICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQogICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKQEAgLTI3MDYsNyArMjY4OCw3IEBACiAgICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCiAgaW50IG1haW4oKSB7IHJldHVybiAwO30KICBfTFRfRU9GCi1AQCAtNzg3Myw3ICs4MzcyLDggQEAgZmkKK0BAIC03ODc3LDcgKzgzNzYsOCBAQCBmaQogIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKICAKICAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgpAQCAtMjcxNiw3ICsyNjk4LDcgQEAKICAKICAKICAKLUBAIC03OTYyLDcgKzg0NjIsNyBAQCBhaXgzKikKK0BAIC03OTY2LDcgKzg0NjYsNyBAQCBhaXgzKikKICBlc2FjCiAgCiAgIyBHbG9iYWwgdmFyaWFibGVzOgpAQCAtMjcyNSw3ICsyNzA3LDcgQEAKICBjYW5fYnVpbGRfc2hhcmVkPXllcwogIAogICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAotQEAgLTgyNjAsOCArODc2MCw2IEBAIGZpCitAQCAtODI2NCw4ICs4NzY0LDYgQEAgZmkKICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0KICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KICAKQEAgLTI3MzQsNyArMjcxNiw3IEBACiAgCiAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJwotQEAgLTg0MjcsNiArODkyNSwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorQEAgLTg0MzEsNiArODkyOSwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQogIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCiAgCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKICAJOzsKQEAgLTI3NDcsNyArMjcyOSw3IEBACiAgICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQogICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKICAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKLUBAIC04NDg5LDcgKzg5OTMsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorQEAgLTg0OTMsNyArODk5Nyw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CiAgICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJwogICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgpAQCAtMjc1Niw3ICsyNzM4LDcgQEAKICAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7CiAgICAgICAgKikKICAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OwotQEAgLTg1NDYsMTMgKzkwNTAsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgorQEAgLTg1NTAsMTMgKzkwNTQsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgogICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgogICAgICA7OwogIGVzYWMKQEAgLTI3ODAsNyArMjc2Miw3IEBACiAgCiAgIwogICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLUBAIC04NjEzLDYgKzkxMjEsMTEgQEAgZmkKK0BAIC04NjE3LDYgKzkxMjUsMTEgQEAgZmkKICAKICAKICAKQEAgLTI3OTIsNyArMjc3NCw3IEBACiAgIwogICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KICAjCi1AQCAtODk2Myw3ICs5NDc2LDggQEAgX0xUX0VPRgorQEAgLTg5NjcsNyArOTQ4MCw4IEBAIF9MVF9FT0YKICAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAogICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubwogICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCkBAIC0yODAyLDcgKzI3ODQsNyBAQAogIAogICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KICAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi1AQCAtOTA2MiwxMiArOTU3NiwxMiBAQCBfTFRfRU9GCitAQCAtOTA2NiwxMiArOTU4MCwxMiBAQCBfTFRfRU9GCiAgCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCiAgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KICAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKQEAgLTI4MTcsNyArMjc5OSw3IEBACiAgCSAgZmkKICAJICA7OwogIAllc2FjCi1AQCAtOTA4MSw4ICs5NTk1LDggQEAgX0xUX0VPRgorQEAgLTkwODUsOCArOTU5OSw4IEBAIF9MVF9FT0YKICAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJwogIAl3bGFyYz0KICAgICAgICBlbHNlCkBAIC0yODI4LDcgKzI4MTAsNyBAQAogICAgICAgIGZpCiAgICAgICAgOzsKICAKLUBAIC05MTAwLDggKzk2MTQsOCBAQCBfTFRfRU9GCitAQCAtOTEwNCw4ICs5NjE4LDggQEAgX0xUX0VPRgogIAogIF9MVF9FT0YKICAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KQEAgLTI4MzksNyArMjgyMSw3IEBACiAgICAgICAgZWxzZQogIAlsZF9zaGxpYnM9bm8KICAgICAgICBmaQotQEAgLTkxNDcsOCArOTY2MSw4IEBAIF9MVF9FT0YKK0BAIC05MTUxLDggKzk2NjUsOCBAQCBfTFRfRU9GCiAgCiAgICAgICopCiAgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgpAQCAtMjg1MCw3ICsyODMyLDcgQEAKICAgICAgICBlbHNlCiAgCWxkX3NobGlicz1ubwogICAgICAgIGZpCi1AQCAtOTI3OCw3ICs5NzkyLDEzIEBAIF9MVF9FT0YKK0BAIC05MjgyLDcgKzk3OTYsMTMgQEAgX0xUX0VPRgogIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJwogICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCiAgICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCkBAIC0yODY1LDcgKzI4NDcsNyBAQAogIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KICAKICBpbnQKLUBAIC05MjkxLDIyICs5ODExLDI5IEBAIG1haW4gKCkKK0BAIC05Mjk1LDIyICs5ODE1LDI5IEBAIG1haW4gKCkKICBfQUNFT0YKICBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CiAgCkBAIC0yOTA4LDcgKzI4OTAsNyBAQAogIAogICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCi1AQCAtOTMxOCw3ICs5ODQ1LDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTkzMjIsNyArOTg0OSwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKICAJZWxzZQogIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCiAgCSAjIGVtcHR5IGV4ZWN1dGFibGUuCkBAIC0yOTIzLDcgKzI5MDUsNyBAQAogIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KICAKICBpbnQKLUBAIC05MzMxLDIyICs5ODY0LDI5IEBAIG1haW4gKCkKK0BAIC05MzM1LDIyICs5ODY4LDI5IEBAIG1haW4gKCkKICBfQUNFT0YKICBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CiAgCkBAIC0yOTY2LDcgKzI5NDgsNyBAQAogIAogIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKICAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAotQEAgLTkzOTEsMjAgKzk5MzEsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtOTM5NSwyMCArOTkzNSw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKICAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgogICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKICAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgpAQCAtMzA0NCw3ICszMDI2LDcgQEAKICAgICAgICA7OwogIAogICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQotQEAgLTk0NjUsNyArMTAwNDgsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC05NDY5LDcgKzEwMDUyLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCiAgCiAgICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KICAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQpAQCAtMzA1Myw3ICszMDM1LDcgQEAKICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCiAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwogICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KLUBAIC05NDczLDcgKzEwMDU2LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtOTQ3Nyw3ICsxMDA2MCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQogIAogICAgICBocHV4OSopCiAgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KQEAgLTMwNjIsNyArMzA0NCw3IEBACiAgICAgICAgZWxzZQogIAlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwogICAgICAgIGZpCi1AQCAtOTQ4OSw3ICsxMDA3Miw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTk0OTMsNyArMTAwNzYsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKICAKICAgICAgaHB1eDEwKikKICAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KQEAgLTMwNzEsNyArMzA1Myw3IEBACiAgICAgICAgZWxzZQogIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCiAgICAgICAgZmkKLUBAIC05NTEzLDEwICsxMDA5NiwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC05NTE3LDEwICsxMDEwMCwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKICAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogIAkgIDs7CiAgCWlhNjQqKQpAQCAtMzA4NCw3ICszMDY2LDcgQEAKICAJICA7OwogIAllc2FjCiAgICAgICAgZWxzZQotQEAgLTk1OTUsMjMgKzEwMTc4LDM2IEBAIGZpCitAQCAtOTU5OSwyMyArMTAxODIsMzYgQEAgZmkKICAKICAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKICAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgpAQCAtMzEyOSw3ICszMTExLDcgQEAKICAgICAgICBlbHNlCiAgCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAgCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotQEAgLTk2OTYsNyArMTAyOTIsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKK0BAIC05NzAwLDcgKzEwMjk2LDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCiAgICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZwogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKQEAgLTMxMzgsNyArMzEyMCw3IEBACiAgCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKICAgICAgICBlbHNlCiAgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotQEAgLTk3MTUsOSArMTAzMTEsOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKK0BAIC05NzE5LDkgKzEwMzE1LDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCiAgICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJwogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgCXdsYXJjPScke3dsfScKQEAgLTMxNTAsNyArMzEzMiw3IEBACiAgICAgICAgZWxzZQogIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KICAJKiJDb21waWxlcnMgNS4wIiopCi1AQCAtMTAyOTMsOCArMTA4ODksOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCitAQCAtMTAyOTcsOCArMTA4OTMsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCiAgICBuZWVkX3ZlcnNpb249bm8KICAgIG5lZWRfbGliX3ByZWZpeD1ubwogIApAQCAtMzE2Miw3ICszMTQ0LDcgQEAKICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKICAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwogICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLUBAIC0xMDMyNywxMyArMTA5MjQsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorQEAgLTEwMzMxLDEzICsxMDkyOCw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCiAgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwogICAgICAgIDs7CiAgICAgIGVzYWMKQEAgLTMyMzUsNyArMzIxNyw3IEBACiAgICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KICAgIHNobGlicGF0aF92YXI9UEFUSAogICAgOzsKLUBAIC0xMDQyNSw3ICsxMTA4MCw3IEBAIGhhaWt1KikKK0BAIC0xMDQyOSw3ICsxMTA4NCw3IEBAIGhhaWt1KikKICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCiAgICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAogICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwpAQCAtMzI0NCwxNiArMzIyNiw3IEBACiAgICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCiAgICA7OwogIAotQEAgLTExMjIxLDcgKzExODc2LDcgQEAgZWxzZQotICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgotICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCi0tI2xpbmUgMTEyMjQgImNvbmZpZ3VyZSIKLSsjbGluZSAkTElORU5PICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gCi0gI2lmIEhBVkVfRExGQ05fSAotQEAgLTExMjY1LDEwICsxMTkyMCwxMCBAQCBlbHNlCitAQCAtMTEyNjksMTAgKzExOTI0LDEwIEBAIGVsc2UKICAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCiAgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwogICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQpAQCAtMzI2NiwxNiArMzIzOSw3IEBACiAgaW50IG1haW4gKCkKICB7CiAgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xMTMyNyw3ICsxMTk4Miw3IEBAIGVsc2UKLSAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKLSAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgotLSNsaW5lIDExMzMwICJjb25maWd1cmUiCi0rI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotICNpZiBIQVZFX0RMRkNOX0gKLUBAIC0xMTM3MSwxMCArMTIwMjYsMTAgQEAgZWxzZQorQEAgLTExMzc1LDEwICsxMjAzMCwxMCBAQCBlbHNlCiAgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAogICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KICAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKQEAgLTMyODgsNyArMzI1Miw3IEBACiAgaW50IG1haW4gKCkKICB7CiAgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xNTM1NSwxMyArMTYwMTAsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE1MzkyLDEzICsxNjA0NywyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbHRfdW5zZXQ9J2AkRUNITyAiJGx0X3Vuc2V0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9TUDJOTD0nYCRFQ0hPICIkbHRfU1AyTkwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGx0X05MMlNQPSdgJEVDSE8gIiRsdF9OTDJTUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCkBAIC0zMzA5LDcgKzMyNzMsNyBAQAogIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTUzNzYsMTQgKzE2MDM4LDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCitAQCAtMTU0MTMsMTQgKzE2MDc1LDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwpAQCAtMzMyOCw3ICszMjkyLDcgQEAKICBEU1lNVVRJTD0nYCRFQ0hPICIkRFNZTVVUSUwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIE5NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xNTQxNiwxMiArMTYwODEsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKK0BAIC0xNTQ1MywxMiArMTYxMTgsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKICBoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCkBAIC0zMzQyLDcgKzMzMDYsNyBAQAogIGZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBuZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiJG5lZWRfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTU0NzYsOCArMTYxNDEsMTMgQEAgcmVsb2FkX2ZsYWcgXAorQEAgLTE1NTEzLDggKzE2MTc4LDEzIEBAIHJlbG9hZF9mbGFnIFwKICBPQkpEVU1QIFwKICBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCiAgZmlsZV9tYWdpY19jbWQgXApAQCAtMzM1Niw3ICszMzIwLDcgQEAKICBTVFJJUCBcCiAgUkFOTElCIFwKICBDQyBcCi1AQCAtMTU0ODcsMTIgKzE2MTU3LDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAorQEAgLTE1NTI0LDEyICsxNjE5NCwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXApAQCAtMzM3Miw3ICszMzM2LDcgQEAKICBEU1lNVVRJTCBcCiAgTk1FRElUIFwKICBMSVBPIFwKLUBAIC0xNTUwOCw3ICsxNjE4MCw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKK0BAIC0xNTU0NSw3ICsxNjIxNyw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKQEAgLTMzODAsNyArMzM0NCw3IEBACiAgZXhjbHVkZV9leHBzeW1zIFwKICBpbmNsdWRlX2V4cHN5bXMgXAogIGZpbGVfbGlzdF9zcGVjIFwKLUBAIC0xNTU0NCw2ICsxNjIxNSw3IEBAIG1vZHVsZV9jbWRzIFwKK0BAIC0xNTU4MSw2ICsxNjI1Miw3IEBAIG1vZHVsZV9jbWRzIFwKICBtb2R1bGVfZXhwc3ltX2NtZHMgXAogIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAogIHByZWxpbmtfY21kcyBcCkBAIC0zMzg4LDcgKzMzNTIsNyBAQAogIHBvc3RpbnN0YWxsX2NtZHMgXAogIHBvc3R1bmluc3RhbGxfY21kcyBcCiAgZmluaXNoX2NtZHMgXAotQEAgLTE2MzAxLDcgKzE2OTczLDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAorQEAgLTE2MzM4LDcgKzE3MDEwLDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAogICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgogICMKICAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LApAQCAtMzM5OCw3ICszMzYyLDcgQEAKICAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgogICMKICAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCi1AQCAtMTY0MDQsMTkgKzE3MDc3LDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAorQEAgLTE2NDQxLDE5ICsxNzExNCw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKICAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCiAgTkwyU1A9JGx0X2x0X05MMlNQCiAgCkBAIC0zNDQyLDcgKzM0MDYsNyBAQAogICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCiAgU1RSSVA9JGx0X1NUUklQCiAgCi1AQCAtMTY0NDYsNiArMTcxNDIsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKK0BAIC0xNjQ4Myw2ICsxNzE3OSwxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcwogICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCiAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4CiAgCkBAIC0zNDU1LDcgKzM0MTksNyBAQAogICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgogIG9iamRpcj0kb2JqZGlyCiAgCi1AQCAtMTY0NTUsNiArMTcxNTcsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAorQEAgLTE2NDkyLDYgKzE3MTk0LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKICAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPwogIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKICAKQEAgLTM0NjUsNyArMzQyOSw3IEBACiAgIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgogIERTWU1VVElMPSRsdF9EU1lNVVRJTAogIAotQEAgLTE2NTY5LDEyICsxNzI3NCwxMiBAQCB3aXRoX2djYz0kR0NDCitAQCAtMTY2MDYsMTIgKzE3MzExLDEyIEBAIHdpdGhfZ2NjPSRHQ0MKICAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCiAgbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZwogIApAQCAtMzQ4MSw3ICszNDQ1LDcgQEAKICAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCiAgbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKICAKLUBAIC0xNjY2MSw5ICsxNzM2Niw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKK0BAIC0xNjY5OCw5ICsxNzQwMyw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKICAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KICBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCiAgCkBAIC0zNDkxLDcgKzM0NTUsNyBAQAogICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgogIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCiAgCi1AQCAtMTY2NzksNiArMTczODEsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcworQEAgLTE2NzE2LDYgKzE3NDE4LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKICAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgogIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCiAgCkBAIC0zNTAxLDcgKzM0NjUsNyBAQAogICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgogIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYwogIAotQEAgLTE2NzExLDIxMCArMTc0MTYsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgorQEAgLTE2NzQ4LDIxMCArMTc0NTMsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgogICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgogICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KICAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/CkBAIC0zODc2LDEwICszODQwLDEwIEBACiAgICBjaG1vZCAreCAiJG9maWxlIgogIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQotaW5kZXggODU0MTRhYi4uMzRiNjZmNyAxMDA3NTUKK2luZGV4IDJhNzRhNzcuLmFkM2RmYjcgMTAwNzU1CiAtLS0gYS9jb25maWd1cmUKICsrKyBiL2NvbmZpZ3VyZQotQEAgLTM0NDUsNyArMzQ0NSw3IEBAIGNhc2UgIiR7dGFyZ2V0fSIgaW4KK0BAIC0zNDQ0LDcgKzM0NDQsNyBAQCBjYXNlICIke3RhcmdldH0iIGluCiAgICAgIDs7CiAgICBzMzkwLSotKiB8IHMzOTB4LSotKikKICAgICAgOzsKQEAgLTM4ODgsNyArMzg1Miw3IEBACiAgICAgIDs7CiAgICBzaDY0LSotKiB8IHNoNSotKi0qKQogICAgICA7OwotQEAgLTM5MzksNyArMzkzOSw3IEBAIGNhc2UgIiR7dGFyZ2V0fSIgaW4KK0BAIC0zOTQ2LDcgKzM5NDYsNyBAQCBjYXNlICIke3RhcmdldH0iIGluCiAgICBvcjFrKi0qLSopCiAgICAgIG5vY29uZmlnZGlycz0iJG5vY29uZmlnZGlycyBnZGIiCiAgICAgIDs7CkBAIC0zODk4LDEwICszODYyLDEwIEBACiAgICAgICAgc2gqLSotZWxmKQogICAgICAgICAgIDs7CiBkaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZ3VyZSBiL2dhcy9jb25maWd1cmUKLWluZGV4IGRkOWM5NTMuLjg5ZjE4YjMgMTAwNzU1CitpbmRleCBmNzc1M2I4Li40NWRhMDMwIDEwMDc1NQogLS0tIGEvZ2FzL2NvbmZpZ3VyZQogKysrIGIvZ2FzL2NvbmZpZ3VyZQotQEAgLTY0Nyw4ICs2NDcsMTEgQEAgT1RPT0wKK0BAIC02NDgsOCArNjQ4LDExIEBAIE9UT09MCiAgTElQTwogIE5NRURJVAogIERTWU1VVElMCkBAIC0zOTEzLDcgKzM4NzcsNyBAQAogIE9CSkRVTVAKICBMTl9TCiAgTk0KLUBAIC03NTksNiArNzYyLDcgQEAgZW5hYmxlX3N0YXRpYworQEAgLTc2MSw2ICs3NjQsNyBAQCBlbmFibGVfc3RhdGljCiAgd2l0aF9waWMKICBlbmFibGVfZmFzdF9pbnN0YWxsCiAgd2l0aF9nbnVfbGQKQEAgLTM5MjEsMTYgKzM4ODUsNyBAQAogIGVuYWJsZV9saWJ0b29sX2xvY2sKICBlbmFibGVfcGx1Z2lucwogIGVuYWJsZV9sYXJnZWZpbGUKLUBAIC0xNDMwLDYgKzE0MzQsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKLSAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KLSAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KLSsgIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCi0rICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuCi0gICAtLXdpdGgtc3lzdGVtLXpsaWIgICAgICB1c2UgaW5zdGFsbGVkIGxpYnoKLSAKLSBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKLUBAIC00OTA5LDggKzQ5MTUsOCBAQCBlc2FjCitAQCAtNDkxOSw4ICs0OTIzLDggQEAgZXNhYwogIAogIAogIApAQCAtMzk0MSw3ICszODk2LDcgQEAKICAKICAKICAKLUBAIC00OTUwLDcgKzQ5NTYsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworQEAgLTQ5NjAsNyArNDk2NCw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1CiAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KICAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KQEAgLTM5NTAsNyArMzkwNSw3IEBACiAgICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KICAgIEVDSE89J3ByaW50IC1yIC0tJwogIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi1AQCAtNTYzNiw4ICs1NjQyLDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKK0BAIC01NjQ2LDggKzU2NTAsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OwogICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCiAgeHNpX3NoZWxsPW5vCiAgKCBfbHRfZHVtbXk9ImEvYi9jIgpAQCAtMzk2MSw3ICszOTE2LDcgQEAKICAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAogICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAogICAgJiYgeHNpX3NoZWxsPXllcwotQEAgLTU2ODYsNiArNTY5Miw4MCBAQCBlc2FjCitAQCAtNTY5Niw2ICs1NzAwLDgwIEBAIGVzYWMKICAKICAKICAKQEAgLTQwNDIsNyArMzk5Nyw3IEBACiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKICAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9CiAgaWYgdGVzdCAiJHtsdF9jdl9sZF9yZWxvYWRfZmxhZytzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNTcwMiw2ICs1NzgyLDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCitAQCAtNTcxMiw2ICs1NzkwLDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCiAgZXNhYwogIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKICBjYXNlICRob3N0X29zIGluCkBAIC00MDU0LDcgKzQwMDksNyBAQAogICAgZGFyd2luKikKICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi1AQCAtNTg3MCw3ICs1OTU1LDggQEAgbWluZ3cqIHwgcHczMiopCitAQCAtNTg4MCw3ICs1OTYzLDggQEAgbWluZ3cqIHwgcHczMiopCiAgICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCiAgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJwogICAgZWxzZQpAQCAtNDA2NCw3ICs0MDE5LDcgQEAKICAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJwogICAgZmkKICAgIDs7Ci1AQCAtNjAyNCw2ICs2MTEwLDIxIEBAIGVzYWMKK0BAIC02MDM0LDYgKzYxMTgsMjEgQEAgZXNhYwogIGZpCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1CiAgJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9CkBAIC00MDg2LDcgKzQwNDEsNyBAQAogIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAogIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAogIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotQEAgLTYwMzksOSArNjE0MCwxNjIgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCitAQCAtNjA0OSw5ICs2MTQ4LDE2MiBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KICAKICAKICAKQEAgLTQyNTEsNyArNDIwNiw3IEBACiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQogIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19BUitzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNjA1Nyw3ICs2MzExLDcgQEAgZG8KK0BAIC02MDY3LDcgKzYzMTksNyBAQCBkbwogICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCiAgICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCkBAIC00MjYwLDcgKzQyMTUsNyBAQAogICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgICAgYnJlYWsgMgogICAgZmkKLUBAIC02MDc3LDExICs2MzMxLDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9CitAQCAtNjA4NywxMSArNjMzOSwxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQogIGZpCiAgCiAgCkBAIC00Mjc5LDcgKzQyMzQsNyBAQAogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KICBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTYwOTcsNyArNjM1NSw3IEBAIGRvCitAQCAtNjEwNyw3ICs2MzYzLDcgQEAgZG8KICAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwogICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgpAQCAtNDI4OCw3ICs0MjQzLDcgQEAKICAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICAgIGJyZWFrIDIKICAgIGZpCi1AQCAtNjExNiw2ICs2Mzc0LDEwIEBAIGVsc2UKK0BAIC02MTI2LDYgKzYzODIsMTAgQEAgZWxzZQogICRhc19lY2hvICJubyIgPiY2OyB9CiAgZmkKICAKQEAgLTQyOTksNyArNDI1NCw3IEBACiAgICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KICAgICAgQVI9ImZhbHNlIgogICAgZWxzZQotQEAgLTYxMjcsMTIgKzYzODksMTAgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7CitAQCAtNjEzNywxMiArNjM5NywxMCBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKICBlc2FjCiAgICAgIEFSPSRhY19jdF9BUgogICAgZmkKQEAgLTQzMTQsNyArNDI2OSw3IEBACiAgCiAgCiAgCi1AQCAtNjE0NCw2ICs2NDA0LDY0IEBAIHRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CitAQCAtNjE1NCw2ICs2NDEyLDY0IEBAIHRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CiAgCiAgCiAgCkBAIC00Mzc5LDcgKzQzMzQsNyBAQAogIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1zdHJpcCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiAgc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9c3RyaXA7IGFjX3dvcmQ9JDIKLUBAIC02NDc4LDggKzY3OTYsOCBAQCBlc2FjCitAQCAtNjQ4OCw4ICs2ODA0LDggQEAgZXNhYwogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCiAgCiAgIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCkBAIC00MzkwLDcgKzQzNDUsNyBAQAogIAogICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgogIG9wdF9jcj0KLUBAIC02NTE1LDYgKzY4MzMsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCitAQCAtNjUyNSw2ICs2ODQxLDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbwogICAgZWxzZQogICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgogICAgZmkKQEAgLTQzOTgsNyArNDM1Myw3IEBACiAgCiAgICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KICAgIHBpcGVfd29ya3M9bm8KLUBAIC02NTU2LDYgKzY4NzUsMTggQEAgX0xUX0VPRgorQEAgLTY1NjYsNiArNjg4MywxOCBAQCBfTFRfRU9GCiAgICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KICAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCiAgCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKQEAgLTQ0MTcsNyArNDM3Miw3IEBACiAgI2lmZGVmIF9fY3BsdXNwbHVzCiAgZXh0ZXJuICJDIiB7CiAgI2VuZGlmCi1AQCAtNjU2Nyw3ICs2ODk4LDcgQEAgX0xUX0VPRgorQEAgLTY1NzcsNyArNjkwNiw3IEBAIF9MVF9FT0YKICAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKICAKICAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCkBAIC00NDI2LDcgKzQzODEsNyBAQAogICAgY29uc3QgY2hhciAqbmFtZTsKICAgIHZvaWQgICAgICAgKmFkZHJlc3M7CiAgfQotQEAgLTY1OTMsOCArNjkyNCw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7CitAQCAtNjYwMyw4ICs2OTMyLDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKICBfTFRfRU9GCiAgCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KICAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKQEAgLTQ0MzcsNyArNDM5Miw3IEBACiAgCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKICAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCiAgCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1Ci1AQCAtNjYwNCw4ICs2OTM1LDggQEAgX0xUX0VPRgorQEAgLTY2MTQsOCArNjk0Myw4IEBAIF9MVF9FT0YKICAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogIAkgICAgcGlwZV93b3Jrcz15ZXMKICAJICBmaQpAQCAtNDQ0OCw3ICs0NDAzLDcgQEAKICAJZWxzZQogIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQogIAlmaQotQEAgLTY2NDIsNiArNjk3MywyMSBAQCBlbHNlCitAQCAtNjY1Miw2ICs2OTgxLDIxIEBAIGVsc2UKICAkYXNfZWNobyAib2siID4mNjsgfQogIGZpCiAgCkBAIC00NDcwLDcgKzQ0MjUsNyBAQAogIAogIAogIAotQEAgLTY2NjAsNiArNzAwNiw0MCBAQCBmaQorQEAgLTY2NzAsNiArNzAxNCw0MCBAQCBmaQogIAogIAogIApAQCAtNDUxMSw3ICs0NDY2LDcgQEAKICAKICAKICAKLUBAIC02ODY5LDYgKzcyNDksMTIzIEBAIGVzYWMKK0BAIC02ODc5LDYgKzcyNTcsMTIzIEBAIGVzYWMKICAKICBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKICAKQEAgLTQ2MzUsNyArNDU5MCw3IEBACiAgCiAgICBjYXNlICRob3N0X29zIGluCiAgICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCi1AQCAtNzQzMiw2ICs3OTI5LDggQEAgX0xUX0VPRgorQEAgLTc0NDIsNiArNzkzNyw4IEBAIF9MVF9FT0YKICAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKICAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1CiAgICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQpAQCAtNDY0NCw3ICs0NTk5LDcgQEAKICAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKICBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQogIF9MVF9FT0YKLUBAIC03NjI3LDcgKzgxMjYsOCBAQCBmaQorQEAgLTc2MzcsNyArODEzNCw4IEBAIGZpCiAgTElCVE9PTF9ERVBTPSIkbHRtYWluIgogIAogICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCkBAIC00NjU0LDcgKzQ2MDksNyBAQAogIAogIAogIAotQEAgLTc3MTYsNyArODIxNiw3IEBAIGFpeDMqKQorQEAgLTc3MjYsNyArODIyNCw3IEBAIGFpeDMqKQogIGVzYWMKICAKICAjIEdsb2JhbCB2YXJpYWJsZXM6CkBAIC00NjYzLDcgKzQ2MTgsNyBAQAogIGNhbl9idWlsZF9zaGFyZWQ9eWVzCiAgCiAgIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCi1AQCAtODAxNCw4ICs4NTE0LDYgQEAgZmkKK0BAIC04MDI0LDggKzg1MjIsNiBAQCBmaQogIGx0X3Byb2dfY29tcGlsZXJfcGljPQogIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQogIApAQCAtNDY3Miw3ICs0NjI3LDcgQEAKICAKICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCi1AQCAtODE4MSw2ICs4Njc5LDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CitAQCAtODE5MSw2ICs4Njg3LDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CiAgCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKICAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJwogIAk7OwpAQCAtNDY4NSw3ICs0NjQwLDcgQEAKICAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCiAgICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAogIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQotQEAgLTgyNDMsNyArODc0Nyw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CitAQCAtODI1Myw3ICs4NzU1LDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KICAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCiAgICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwogICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCkBAIC00Njk0LDcgKzQ2NDksNyBAQAogIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKICAgICAgICAqKQogIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7Ci1AQCAtODMwMCwxMyArODgwNCwxNyBAQCBjYXNlICRob3N0X29zIGluCitAQCAtODMxMCwxMyArODgxMiwxNyBAQCBjYXNlICRob3N0X29zIGluCiAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCiAgICAgIDs7CiAgZXNhYwpAQCAtNDcxOCw3ICs0NjczLDcgQEAKICAKICAjCiAgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotQEAgLTgzNjcsNiArODg3NSwxMSBAQCBmaQorQEAgLTgzNzcsNiArODg4MywxMSBAQCBmaQogIAogIAogIApAQCAtNDczMCw3ICs0Njg1LDcgQEAKICAjCiAgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgogICMKLUBAIC04NzE3LDcgKzkyMzAsOCBAQCBfTFRfRU9GCitAQCAtODcyNyw3ICs5MjM4LDggQEAgX0xUX0VPRgogICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCiAgICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCiAgICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKQEAgLTQ3NDAsNyArNDY5NSw3IEBACiAgCiAgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgogICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLUBAIC04ODE2LDEyICs5MzMwLDEyIEBAIF9MVF9FT0YKK0BAIC04ODI2LDEyICs5MzM4LDEyIEBAIF9MVF9FT0YKICAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKICAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQogIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJwpAQCAtNDc1NSw3ICs0NzEwLDcgQEAKICAJICBmaQogIAkgIDs7CiAgCWVzYWMKLUBAIC04ODM1LDggKzkzNDksOCBAQCBfTFRfRU9GCitAQCAtODg0NSw4ICs5MzU3LDggQEAgX0xUX0VPRgogIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCiAgCXdsYXJjPQogICAgICAgIGVsc2UKQEAgLTQ3NjYsNyArNDcyMSw3IEBACiAgICAgICAgZmkKICAgICAgICA7OwogIAotQEAgLTg4NTQsOCArOTM2OCw4IEBAIF9MVF9FT0YKK0BAIC04ODY0LDggKzkzNzYsOCBAQCBfTFRfRU9GCiAgCiAgX0xUX0VPRgogICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgpAQCAtNDc3Nyw3ICs0NzMyLDcgQEAKICAgICAgICBlbHNlCiAgCWxkX3NobGlicz1ubwogICAgICAgIGZpCi1AQCAtODkwMSw4ICs5NDE1LDggQEAgX0xUX0VPRgorQEAgLTg5MTEsOCArOTQyMyw4IEBAIF9MVF9FT0YKICAKICAgICAgKikKICAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCkBAIC00Nzg4LDcgKzQ3NDMsNyBAQAogICAgICAgIGVsc2UKICAJbGRfc2hsaWJzPW5vCiAgICAgICAgZmkKLUBAIC05MDMyLDcgKzk1NDYsMTMgQEAgX0xUX0VPRgorQEAgLTkwNDIsNyArOTU1NCwxMyBAQCBfTFRfRU9GCiAgCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCiAgICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KICAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KQEAgLTQ4MDMsNyArNDc1OCw3IEBACiAgLyogZW5kIGNvbmZkZWZzLmguICAqLwogIAogIGludAotQEAgLTkwNDUsMjIgKzk1NjUsMjkgQEAgbWFpbiAoKQorQEAgLTkwNTUsMjIgKzk1NzMsMjkgQEAgbWFpbiAoKQogIF9BQ0VPRgogIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKICAKQEAgLTQ4NDYsNyArNDgwMSw3IEBACiAgCiAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgogICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKLUBAIC05MDcyLDcgKzk1OTksMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtOTA4Miw3ICs5NjA3LDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQogIAllbHNlCiAgCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KICAJICMgZW1wdHkgZXhlY3V0YWJsZS4KQEAgLTQ4NjEsNyArNDgxNiw3IEBACiAgLyogZW5kIGNvbmZkZWZzLmguICAqLwogIAogIGludAotQEAgLTkwODUsMjIgKzk2MTgsMjkgQEAgbWFpbiAoKQorQEAgLTkwOTUsMjIgKzk2MjYsMjkgQEAgbWFpbiAoKQogIF9BQ0VPRgogIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKICAKQEAgLTQ5MDQsNyArNDg1OSw3IEBACiAgCiAgCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgogIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCi1AQCAtOTE0NSwyMCArOTY4NSw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC05MTU1LDIwICs5NjkzLDYzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQogICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCiAgICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwogICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCkBAIC00OTgyLDcgKzQ5MzcsNyBAQAogICAgICAgIDs7CiAgCiAgICAgIGRhcndpbiogfCByaGFwc29keSopCi1AQCAtOTIxOSw3ICs5ODAyLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtOTIyOSw3ICs5ODEwLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCiAgCiAgICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KICAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQpAQCAtNDk5MSw3ICs0OTQ2LDcgQEAKICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCiAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwogICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KLUBAIC05MjI3LDcgKzk4MTAsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC05MjM3LDcgKzk4MTgsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKICAKICAgICAgaHB1eDkqKQogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCkBAIC01MDAwLDcgKzQ5NTUsNyBAQAogICAgICAgIGVsc2UKICAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKICAgICAgICBmaQotQEAgLTkyNDMsNyArOTgyNiw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTkyNTMsNyArOTgzNCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQogIAogICAgICBocHV4MTAqKQogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgpAQCAtNTAwOSw3ICs0OTY0LDcgQEAKICAgICAgICBlbHNlCiAgCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKICAgICAgICBmaQotQEAgLTkyNjcsMTAgKzk4NTAsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtOTI3NywxMCArOTg1OCwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKICAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogIAkgIDs7CiAgCWlhNjQqKQpAQCAtNTAyMiw3ICs0OTc3LDcgQEAKICAJICA7OwogIAllc2FjCiAgICAgICAgZWxzZQotQEAgLTkzNDksMjMgKzk5MzIsMzYgQEAgZmkKK0BAIC05MzU5LDIzICs5OTQwLDM2IEBAIGZpCiAgCiAgICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCiAgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KQEAgLTUwNjcsNyArNTAyMiw3IEBACiAgICAgICAgZWxzZQogIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLUBAIC05NDUwLDcgKzEwMDQ2LDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCitAQCAtOTQ2MCw3ICsxMDA1NCw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAogICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKICAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCkBAIC01MDc2LDcgKzUwMzEsNyBAQAogIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCiAgICAgICAgZWxzZQogIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLUBAIC05NDY5LDkgKzEwMDY1LDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCitAQCAtOTQ3OSw5ICsxMDA3Myw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAogICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKICAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogIAl3bGFyYz0nJHt3bH0nCkBAIC01MDg4LDcgKzUwNDMsNyBAQAogICAgICAgIGVsc2UKICAJY2FzZSBgJENDIC1WIDI+JjFgIGluCiAgCSoiQ29tcGlsZXJzIDUuMCIqKQotQEAgLTEwMDQ3LDggKzEwNjQzLDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorQEAgLTEwMDU3LDggKzEwNjUxLDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQogICAgbmVlZF92ZXJzaW9uPW5vCiAgICBuZWVkX2xpYl9wcmVmaXg9bm8KICAKQEAgLTUxMDAsNyArNTA1NSw3IEBACiAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCiAgICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKICAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci1AQCAtMTAwODEsMTMgKzEwNjc4LDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKK0BAIC0xMDA5MSwxMyArMTA2ODYsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQogICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKICAgICAgICA7OwogICAgICBlc2FjCkBAIC01MTczLDcgKzUxMjgsNyBAQAogICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCiAgICBzaGxpYnBhdGhfdmFyPVBBVEgKICAgIDs7Ci1AQCAtMTAxNzksNyArMTA4MzQsNyBAQCBoYWlrdSopCitAQCAtMTAxODksNyArMTA4NDIsNyBAQCBoYWlrdSopCiAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwogICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKQEAgLTUxODIsMTYgKzUxMzcsNyBAQAogICAgaGFyZGNvZGVfaW50b19saWJzPXllcwogICAgOzsKICAKLUBAIC0xMDk3NSw3ICsxMTYzMCw3IEBAIGVsc2UKLSAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKLSAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgotLSNsaW5lIDEwOTc4ICJjb25maWd1cmUiCi0rI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotICNpZiBIQVZFX0RMRkNOX0gKLUBAIC0xMTAxOSwxMCArMTE2NzQsMTAgQEAgZWxzZQorQEAgLTExMDI5LDEwICsxMTY4MiwxMCBAQCBlbHNlCiAgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAogICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KICAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKQEAgLTUyMDQsMTYgKzUxNTAsNyBAQAogIGludCBtYWluICgpCiAgewogICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTEwODEsNyArMTE3MzYsNyBAQCBlbHNlCi0gICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCi0gICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKLS0jbGluZSAxMTA4NCAiY29uZmlndXJlIgotKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSAjaWYgSEFWRV9ETEZDTl9ICi1AQCAtMTExMjUsMTAgKzExNzgwLDEwIEBAIGVsc2UKK0BAIC0xMTEzNSwxMCArMTE3ODgsMTAgQEAgZWxzZQogIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKICAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCiAgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCkBAIC01MjI2LDcgKzUxNjMsNyBAQAogIGludCBtYWluICgpCiAgewogICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTUyNzYsMTMgKzE1OTMxLDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xNTM1MCwxMyArMTYwMDMsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwpAQCAtNTI0Nyw3ICs1MTg0LDcgQEAKICBTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIFJBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE1Mjk3LDE0ICsxNTk1OSwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQorQEAgLTE1MzcxLDE0ICsxNjAzMSwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKQEAgLTUyNjYsNyArNTIwMyw3IEBACiAgRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTUzMzcsMTIgKzE2MDAyLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCitAQCAtMTU0MTEsMTIgKzE2MDc0LDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCiAgaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwpAQCAtNTI4MCw3ICs1MjE3LDcgQEAKICBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE1Mzk3LDggKzE2MDYyLDEzIEBAIHJlbG9hZF9mbGFnIFwKK0BAIC0xNTQ3MSw4ICsxNjEzNCwxMyBAQCByZWxvYWRfZmxhZyBcCiAgT0JKRFVNUCBcCiAgZGVwbGlic19jaGVja19tZXRob2QgXAogIGZpbGVfbWFnaWNfY21kIFwKQEAgLTUyOTQsNyArNTIzMSw3IEBACiAgU1RSSVAgXAogIFJBTkxJQiBcCiAgQ0MgXAotQEAgLTE1NDA4LDEyICsxNjA3OCwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKK0BAIC0xNTQ4MiwxMiArMTYxNTAsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKQEAgLTUzMTAsNyArNTI0Nyw3IEBACiAgRFNZTVVUSUwgXAogIE5NRURJVCBcCiAgTElQTyBcCi1AQCAtMTU0MjksNyArMTYxMDEsNiBAQCBub191bmRlZmluZWRfZmxhZyBcCitAQCAtMTU1MDMsNyArMTYxNzMsNiBAQCBub191bmRlZmluZWRfZmxhZyBcCiAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBcCiAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCBcCiAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBcCkBAIC01MzE4LDcgKzUyNTUsNyBAQAogIGV4Y2x1ZGVfZXhwc3ltcyBcCiAgaW5jbHVkZV9leHBzeW1zIFwKICBmaWxlX2xpc3Rfc3BlYyBcCi1AQCAtMTU0NjUsNiArMTYxMzYsNyBAQCBtb2R1bGVfY21kcyBcCitAQCAtMTU1MzksNiArMTYyMDgsNyBAQCBtb2R1bGVfY21kcyBcCiAgbW9kdWxlX2V4cHN5bV9jbWRzIFwKICBleHBvcnRfc3ltYm9sc19jbWRzIFwKICBwcmVsaW5rX2NtZHMgXApAQCAtNTMyNiw3ICs1MjYzLDcgQEAKICBwb3N0aW5zdGFsbF9jbWRzIFwKICBwb3N0dW5pbnN0YWxsX2NtZHMgXAogIGZpbmlzaF9jbWRzIFwKLUBAIC0xNjIyOSw3ICsxNjkwMSw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKK0BAIC0xNjMwMyw3ICsxNjk3Myw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKICAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KICAjCiAgIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKQEAgLTUzMzYsNyArNTI3Myw3IEBACiAgIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKICAjCiAgIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgotQEAgLTE2MzMyLDE5ICsxNzAwNSw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKK0BAIC0xNjQwNiwxOSArMTcwNzcsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCiAgIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgogIE5MMlNQPSRsdF9sdF9OTDJTUAogIApAQCAtNTM4MCw3ICs1MzE3LDcgQEAKICAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgogIFNUUklQPSRsdF9TVFJJUAogIAotQEAgLTE2Mzc0LDYgKzE3MDcwLDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCitAQCAtMTY0NDgsNiArMTcxNDIsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKICAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgogIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAogIApAQCAtNTM5Myw3ICs1MzMwLDcgQEAKICAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KICBvYmpkaXI9JG9iamRpcgogIAotQEAgLTE2MzgzLDYgKzE3MDg1LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKK0BAIC0xNjQ1Nyw2ICsxNzE1Nyw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECiAgIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KICBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCiAgCkBAIC01NDAzLDcgKzUzNDAsNyBAQAogICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KICBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKICAKLUBAIC0xNjQ5NywxMiArMTcyMDIsMTIgQEAgd2l0aF9nY2M9JEdDQworQEAgLTE2NTcxLDEyICsxNzI3NCwxMiBAQCB3aXRoX2djYz0kR0NDCiAgIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgogIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKICAKQEAgLTU0MTksNyArNTM1Niw3IEBACiAgIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgogIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCiAgCi1AQCAtMTY1ODksOSArMTcyOTQsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCitAQCAtMTY2NjMsOSArMTczNjYsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCiAgIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCiAgbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicwogIApAQCAtNTQyOSw3ICs1MzY2LDcgQEAKICAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scwogIAotQEAgLTE2NjA3LDYgKzE3MzA5LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKK0BAIC0xNjY4MSw2ICsxNzM4MSw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCiAgIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KICBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcwogIApAQCAtNTQzOSw3ICs1Mzc2LDcgQEAKICAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KICBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKICAKLUBAIC0xNjYzOSwyMTAgKzE3MzQ0LDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKK0BAIC0xNjcxMywyMTAgKzE3NDE2LDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKICAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KICAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCiAgICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPwpAQCAtNTgxNCwxMCArNTc1MSwxMCBAQAogICAgY2htb2QgK3ggIiRvZmlsZSIKICAKIGRpZmYgLS1naXQgYS9ncHJvZi9jb25maWd1cmUgYi9ncHJvZi9jb25maWd1cmUKLWluZGV4IGQ0ZGI1NTQuLjc4YjI5MmMgMTAwNzU1CitpbmRleCA2MjZlMWM3Li5hODg3MTljIDEwMDc1NQogLS0tIGEvZ3Byb2YvY29uZmlndXJlCiArKysgYi9ncHJvZi9jb25maWd1cmUKLUBAIC02MjksOCArNjI5LDExIEBAIE9UT09MCitAQCAtNjMwLDggKzYzMCwxMSBAQCBPVE9PTAogIExJUE8KICBOTUVESVQKICBEU1lNVVRJTApAQCAtNTgyOSw3ICs1NzY2LDcgQEAKICBPQkpEVU1QCiAgTE5fUwogIE5NCi1AQCAtNzQxLDYgKzc0NCw3IEBAIGVuYWJsZV9zdGF0aWMKK0BAIC03NDMsNiArNzQ2LDcgQEAgZW5hYmxlX3N0YXRpYwogIHdpdGhfcGljCiAgZW5hYmxlX2Zhc3RfaW5zdGFsbAogIHdpdGhfZ251X2xkCkBAIC01ODM3LDcgKzU3NzQsNyBAQAogIGVuYWJsZV9saWJ0b29sX2xvY2sKICBlbmFibGVfcGx1Z2lucwogIGVuYWJsZV9sYXJnZWZpbGUKLUBAIC0xMzk5LDYgKzE0MDMsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKK0BAIC0xNDAxLDYgKzE0MDUsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKICAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KICAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KQEAgLTU4NDYsNyArNTc4Myw3IEBACiAgCiAgU29tZSBpbmZsdWVudGlhbCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6CiAgICBDQyAgICAgICAgICBDIGNvbXBpbGVyIGNvbW1hbmQKLUBAIC00ODMxLDggKzQ4MzcsOCBAQCBlc2FjCitAQCAtNDgzNSw4ICs0ODQxLDggQEAgZXNhYwogIAogIAogIApAQCAtNTg1Nyw3ICs1Nzk0LDcgQEAKICAKICAKICAKLUBAIC00ODcyLDcgKzQ4NzgsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworQEAgLTQ4NzYsNyArNDg4Miw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1CiAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KICAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KQEAgLTU4NjYsNyArNTgwMyw3IEBACiAgICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KICAgIEVDSE89J3ByaW50IC1yIC0tJwogIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi1AQCAtNTU1OCw4ICs1NTY0LDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKK0BAIC01NTYyLDggKzU1NjgsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OwogICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCiAgeHNpX3NoZWxsPW5vCiAgKCBfbHRfZHVtbXk9ImEvYi9jIgpAQCAtNTg3Nyw3ICs1ODE0LDcgQEAKICAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAogICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAogICAgJiYgeHNpX3NoZWxsPXllcwotQEAgLTU2MDgsNiArNTYxNCw4MCBAQCBlc2FjCitAQCAtNTYxMiw2ICs1NjE4LDgwIEBAIGVzYWMKICAKICAKICAKQEAgLTU5NTgsNyArNTg5NSw3IEBACiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKICAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9CiAgaWYgdGVzdCAiJHtsdF9jdl9sZF9yZWxvYWRfZmxhZytzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNTYyNCw2ICs1NzA0LDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCitAQCAtNTYyOCw2ICs1NzA4LDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCiAgZXNhYwogIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKICBjYXNlICRob3N0X29zIGluCkBAIC01OTcwLDcgKzU5MDcsNyBAQAogICAgZGFyd2luKikKICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi1AQCAtNTc5Miw3ICs1ODc3LDggQEAgbWluZ3cqIHwgcHczMiopCitAQCAtNTc5Niw3ICs1ODgxLDggQEAgbWluZ3cqIHwgcHczMiopCiAgICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCiAgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJwogICAgZWxzZQpAQCAtNTk4MCw3ICs1OTE3LDcgQEAKICAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJwogICAgZmkKICAgIDs7Ci1AQCAtNTg2OSwxMSArNTk1NSw2IEBAIGxpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKK0BAIC01ODczLDExICs1OTU5LDYgQEAgbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQogICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKICAgIDs7CiAgCkBAIC01OTkyLDcgKzU5MjksNyBAQAogIG5ldGJzZCopCiAgICBpZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX18gPiAvZGV2L251bGw7IHRoZW4KICAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J21hdGNoX3BhdHRlcm4gL2xpYlteL10rKFwuc29cLlswLTldK1wuWzAtOV0rfF9waWNcLmEpJCcKLUBAIC01OTUxLDYgKzYwMzIsMjEgQEAgZXNhYworQEAgLTU5NTUsNiArNjAzNiwyMSBAQCBlc2FjCiAgZmkKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjUKICAkYXNfZWNobyAiJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjY7IH0KQEAgLTYwMTQsNyArNTk1MSw3IEBACiAgZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCiAgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCiAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi1AQCAtNTk2Niw5ICs2MDYyLDE2MiBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KK0BAIC01OTcwLDkgKzYwNjYsMTYyIEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgogIAogIAogIApAQCAtNjE3OSw3ICs2MTE2LDcgQEAKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CiAgaWYgdGVzdCAiJHthY19jdl9wcm9nX0FSK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC01OTg0LDcgKzYyMzMsNyBAQCBkbworQEAgLTU5ODgsNyArNjIzNyw3IEBAIGRvCiAgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KICAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KQEAgLTYxODgsNyArNjEyNSw3IEBACiAgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAgICBicmVhayAyCiAgICBmaQotQEAgLTYwMDQsMTEgKzYyNTMsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KK0BAIC02MDA4LDExICs2MjU3LDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9CiAgZmkKICAKICAKQEAgLTYyMDcsNyArNjE0NCw3IEBACiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQogIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9BUitzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNjAyNCw3ICs2Mjc3LDcgQEAgZG8KK0BAIC02MDI4LDcgKzYyODEsNyBAQCBkbwogICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCiAgICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCkBAIC02MjE2LDcgKzYxNTMsNyBAQAogICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgICAgYnJlYWsgMgogICAgZmkKLUBAIC02MDQzLDYgKzYyOTYsMTAgQEAgZWxzZQorQEAgLTYwNDcsNiArNjMwMCwxMCBAQCBlbHNlCiAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KICBmaQogIApAQCAtNjIyNyw3ICs2MTY0LDcgQEAKICAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgogICAgICBBUj0iZmFsc2UiCiAgICBlbHNlCi1AQCAtNjA1NCwxMiArNjMxMSwxMCBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKK0BAIC02MDU4LDEyICs2MzE1LDEwIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OwogIGVzYWMKICAgICAgQVI9JGFjX2N0X0FSCiAgICBmaQpAQCAtNjI0Miw3ICs2MTc5LDcgQEAKICAKICAKICAKLUBAIC02MDcxLDYgKzYzMjYsNjQgQEAgdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKK0BAIC02MDc1LDYgKzYzMzAsNjQgQEAgdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKICAKICAKICAKQEAgLTYzMDcsNyArNjI0NCw3IEBACiAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgogICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fXN0cmlwIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KICBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1zdHJpcDsgYWNfd29yZD0kMgotQEAgLTY0MDUsOCArNjcxOCw4IEBAIGVzYWMKK0BAIC02NDA5LDggKzY3MjIsOCBAQCBlc2FjCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKICAKICAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKQEAgLTYzMTgsNyArNjI1NSw3IEBACiAgCiAgIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCiAgb3B0X2NyPQotQEAgLTY0NDIsNiArNjc1NSw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KK0BAIC02NDQ2LDYgKzY3NTksNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCiAgICBlbHNlCiAgICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCiAgICBmaQpAQCAtNjMyNiw3ICs2MjYzLDcgQEAKICAKICAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgogICAgcGlwZV93b3Jrcz1ubwotQEAgLTY0ODMsNiArNjc5NywxOCBAQCBfTFRfRU9GCitAQCAtNjQ4Nyw2ICs2ODAxLDE4IEBAIF9MVF9FT0YKICAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgogIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KICAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dApAQCAtNjM0NSw3ICs2MjgyLDcgQEAKICAjaWZkZWYgX19jcGx1c3BsdXMKICBleHRlcm4gIkMiIHsKICAjZW5kaWYKLUBAIC02NDk0LDcgKzY4MjAsNyBAQCBfTFRfRU9GCitAQCAtNjQ5OCw3ICs2ODI0LDcgQEAgX0xUX0VPRgogIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAogIAogIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KQEAgLTYzNTQsNyArNjI5MSw3IEBACiAgICBjb25zdCBjaGFyICpuYW1lOwogICAgdm9pZCAgICAgICAqYWRkcmVzczsKICB9Ci1AQCAtNjUyMCw4ICs2ODQ2LDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKK0BAIC02NTI0LDggKzY4NTAsOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgewogIF9MVF9FT0YKICAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgogIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dApAQCAtNjM2NSw3ICs2MzAyLDcgQEAKICAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgogIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKICAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKLUBAIC02NTMxLDggKzY4NTcsOCBAQCBfTFRfRU9GCitAQCAtNjUzNSw4ICs2ODYxLDggQEAgX0xUX0VPRgogICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgCSAgICBwaXBlX3dvcmtzPXllcwogIAkgIGZpCkBAIC02Mzc2LDcgKzYzMTMsNyBAQAogIAllbHNlCiAgCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1CiAgCWZpCi1AQCAtNjU2OSw2ICs2ODk1LDE4IEBAIGVsc2UKK0BAIC02NTczLDYgKzY4OTksMTggQEAgZWxzZQogICRhc19lY2hvICJvayIgPiY2OyB9CiAgZmkKICAKQEAgLTYzOTUsNyArNjMzMiw3IEBACiAgCiAgCiAgCi1AQCAtNjU5MCw2ICs2OTI4LDQzIEBAIGZpCitAQCAtNjU5NCw2ICs2OTMyLDQzIEBAIGZpCiAgCiAgCiAgCkBAIC02NDM5LDcgKzYzNzYsNyBAQAogICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1saWJ0b29sLWxvY2sgd2FzIGdpdmVuLgogIGlmIHRlc3QgIiR7ZW5hYmxlX2xpYnRvb2xfbG9jaytzZXR9IiA9IHNldDsgdGhlbiA6CiAgICBlbmFibGV2YWw9JGVuYWJsZV9saWJ0b29sX2xvY2s7Ci1AQCAtNjc5Niw2ICs3MTcxLDEyMyBAQCBlc2FjCitAQCAtNjgwMCw2ICs3MTc1LDEyMyBAQCBlc2FjCiAgCiAgbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCiAgCkBAIC02NTYzLDcgKzY1MDAsNyBAQAogIAogICAgY2FzZSAkaG9zdF9vcyBpbgogICAgICByaGFwc29keSogfCBkYXJ3aW4qKQotQEAgLTczNTksNiArNzg1MSw4IEBAIF9MVF9FT0YKK0BAIC03MzYzLDYgKzc4NTUsOCBAQCBfTFRfRU9GCiAgICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1CiAgICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQogICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKQEAgLTY1NzIsNyArNjUwOSw3IEBACiAgICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCiAgaW50IG1haW4oKSB7IHJldHVybiAwO30KICBfTFRfRU9GCi1AQCAtNzU1NCw3ICs4MDQ4LDggQEAgZmkKK0BAIC03NTU4LDcgKzgwNTIsOCBAQCBmaQogIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKICAKICAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgpAQCAtNjU4Miw3ICs2NTE5LDcgQEAKICAKICAKICAKLUBAIC03NjQzLDcgKzgxMzgsNyBAQCBhaXgzKikKK0BAIC03NjQ3LDcgKzgxNDIsNyBAQCBhaXgzKikKICBlc2FjCiAgCiAgIyBHbG9iYWwgdmFyaWFibGVzOgpAQCAtNjU5MSw3ICs2NTI4LDcgQEAKICBjYW5fYnVpbGRfc2hhcmVkPXllcwogIAogICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAotQEAgLTc5NDEsOCArODQzNiw2IEBAIGZpCitAQCAtNzk0NSw4ICs4NDQwLDYgQEAgZmkKICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0KICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KICAKQEAgLTY2MDAsNyArNjUzNyw3IEBACiAgCiAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJwotQEAgLTgxMDgsNiArODYwMSwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorQEAgLTgxMTIsNiArODYwNSwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQogIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCiAgCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKICAJOzsKQEAgLTY2MTMsNyArNjU1MCw3IEBACiAgICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQogICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKICAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKLUBAIC04MTcwLDcgKzg2NjksNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorQEAgLTgxNzQsNyArODY3Myw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CiAgICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJwogICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgpAQCAtNjYyMiw3ICs2NTU5LDcgQEAKICAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7CiAgICAgICAgKikKICAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OwotQEAgLTgyMjcsMTMgKzg3MjYsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgorQEAgLTgyMzEsMTMgKzg3MzAsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgogICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgogICAgICA7OwogIGVzYWMKQEAgLTY2NDYsNyArNjU4Myw3IEBACiAgCiAgIwogICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLUBAIC04Mjk0LDYgKzg3OTcsMTEgQEAgZmkKK0BAIC04Mjk4LDYgKzg4MDEsMTEgQEAgZmkKICAKICAKICAKQEAgLTY2NTgsNyArNjU5NSw3IEBACiAgIwogICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KICAjCi1AQCAtODY0NCw3ICs5MTUyLDggQEAgX0xUX0VPRgorQEAgLTg2NDgsNyArOTE1Niw4IEBAIF9MVF9FT0YKICAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAogICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubwogICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCkBAIC02NjY4LDcgKzY2MDUsNyBAQAogIAogICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KICAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi1AQCAtODc0MywxMiArOTI1MiwxMiBAQCBfTFRfRU9GCitAQCAtODc0NywxMiArOTI1NiwxMiBAQCBfTFRfRU9GCiAgCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCiAgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KICAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKQEAgLTY2ODMsNyArNjYyMCw3IEBACiAgCSAgZmkKICAJICA7OwogIAllc2FjCi1AQCAtODc2Miw4ICs5MjcxLDggQEAgX0xUX0VPRgorQEAgLTg3NjYsOCArOTI3NSw4IEBAIF9MVF9FT0YKICAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJwogIAl3bGFyYz0KICAgICAgICBlbHNlCkBAIC02Njk0LDcgKzY2MzEsNyBAQAogICAgICAgIGZpCiAgICAgICAgOzsKICAKLUBAIC04NzgxLDggKzkyOTAsOCBAQCBfTFRfRU9GCitAQCAtODc4NSw4ICs5Mjk0LDggQEAgX0xUX0VPRgogIAogIF9MVF9FT0YKICAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KQEAgLTY3MDUsNyArNjY0Miw3IEBACiAgICAgICAgZWxzZQogIAlsZF9zaGxpYnM9bm8KICAgICAgICBmaQotQEAgLTg4MjgsOCArOTMzNyw4IEBAIF9MVF9FT0YKK0BAIC04ODMyLDggKzkzNDEsOCBAQCBfTFRfRU9GCiAgCiAgICAgICopCiAgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgpAQCAtNjcxNiw3ICs2NjUzLDcgQEAKICAgICAgICBlbHNlCiAgCWxkX3NobGlicz1ubwogICAgICAgIGZpCi1AQCAtODk1OSw3ICs5NDY4LDEzIEBAIF9MVF9FT0YKK0BAIC04OTYzLDcgKzk0NzIsMTMgQEAgX0xUX0VPRgogIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJwogICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCiAgICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCkBAIC02NzMxLDcgKzY2NjgsNyBAQAogIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KICAKICBpbnQKLUBAIC04OTcyLDIyICs5NDg3LDI5IEBAIG1haW4gKCkKK0BAIC04OTc2LDIyICs5NDkxLDI5IEBAIG1haW4gKCkKICBfQUNFT0YKICBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CiAgCkBAIC02Nzc0LDcgKzY3MTEsNyBAQAogIAogICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCi1AQCAtODk5OSw3ICs5NTIxLDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTkwMDMsNyArOTUyNSwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKICAJZWxzZQogIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCiAgCSAjIGVtcHR5IGV4ZWN1dGFibGUuCkBAIC02Nzg5LDcgKzY3MjYsNyBAQAogIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KICAKICBpbnQKLUBAIC05MDEyLDIyICs5NTQwLDI5IEBAIG1haW4gKCkKK0BAIC05MDE2LDIyICs5NTQ0LDI5IEBAIG1haW4gKCkKICBfQUNFT0YKICBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CiAgCkBAIC02ODMyLDcgKzY3NjksNyBAQAogIAogIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKICAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAotQEAgLTkwNzIsMjAgKzk2MDcsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtOTA3NiwyMCArOTYxMSw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKICAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgogICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKICAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgpAQCAtNjkxMCw3ICs2ODQ3LDcgQEAKICAgICAgICA7OwogIAogICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQotQEAgLTkxNDYsNyArOTcyNCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTkxNTAsNyArOTcyOCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQogIAogICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCiAgICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKQEAgLTY5MTksNyArNjg1Niw3IEBACiAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwogICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKICAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCi1AQCAtOTE1NCw3ICs5NzMyLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtOTE1OCw3ICs5NzM2LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCiAgCiAgICAgIGhwdXg5KikKICAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgpAQCAtNjkyOCw3ICs2ODY1LDcgQEAKICAgICAgICBlbHNlCiAgCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCiAgICAgICAgZmkKLUBAIC05MTcwLDcgKzk3NDgsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC05MTc0LDcgKzk3NTIsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKICAKICAgICAgaHB1eDEwKikKICAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KQEAgLTY5MzcsNyArNjg3NCw3IEBACiAgICAgICAgZWxzZQogIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCiAgICAgICAgZmkKLUBAIC05MTk0LDEwICs5NzcyLDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTkxOTgsMTAgKzk3NzYsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCiAgCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKICAJICA7OwogIAlpYTY0KikKQEAgLTY5NTAsNyArNjg4Nyw3IEBACiAgCSAgOzsKICAJZXNhYwogICAgICAgIGVsc2UKLUBAIC05Mjc2LDIzICs5ODU0LDM2IEBAIGZpCitAQCAtOTI4MCwyMyArOTg1OCwzNiBAQCBmaQogIAogICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCkBAIC02OTk1LDcgKzY5MzIsNyBAQAogICAgICAgIGVsc2UKICAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKICAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi1AQCAtOTM3Nyw3ICs5OTY4LDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCitAQCAtOTM4MSw3ICs5OTcyLDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCiAgICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZwogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKQEAgLTcwMDQsNyArNjk0MSw3IEBACiAgCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKICAgICAgICBlbHNlCiAgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotQEAgLTkzOTYsOSArOTk4Nyw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorQEAgLTk0MDAsOSArOTk5MSw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAogICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKICAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogIAl3bGFyYz0nJHt3bH0nCkBAIC03MDE2LDcgKzY5NTMsNyBAQAogICAgICAgIGVsc2UKICAJY2FzZSBgJENDIC1WIDI+JjFgIGluCiAgCSoiQ29tcGlsZXJzIDUuMCIqKQotQEAgLTk5NzQsOCArMTA1NjUsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCitAQCAtOTk3OCw4ICsxMDU2OSw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKICAgIG5lZWRfdmVyc2lvbj1ubwogICAgbmVlZF9saWJfcHJlZml4PW5vCiAgCkBAIC03MDI4LDcgKzY5NjUsNyBAQAogICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJwogICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCiAgICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotQEAgLTEwMDA4LDEzICsxMDYwMCw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCitAQCAtMTAwMTIsMTMgKzEwNjA0LDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKICAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCiAgICAgICAgOzsKICAgICAgZXNhYwpAQCAtNzEwMSw3ICs3MDM4LDcgQEAKICAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgogICAgc2hsaWJwYXRoX3Zhcj1QQVRICiAgICA7OwotQEAgLTEwMTA2LDcgKzEwNzU2LDcgQEAgaGFpa3UqKQorQEAgLTEwMTEwLDcgKzEwNzYwLDcgQEAgaGFpa3UqKQogICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKICAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICiAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCkBAIC03MTEwLDE2ICs3MDQ3LDcgQEAKICAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKICAgIDs7CiAgCi1AQCAtMTA5MDIsNyArMTE1NTIsNyBAQCBlbHNlCi0gICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCi0gICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKLS0jbGluZSAxMDkwMCAiY29uZmlndXJlIgotKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSAjaWYgSEFWRV9ETEZDTl9ICi1AQCAtMTA5NDYsMTAgKzExNTk2LDEwIEBAIGVsc2UKK0BAIC0xMDk1MCwxMCArMTE2MDAsMTAgQEAgZWxzZQogIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKICAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCiAgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCkBAIC03MTMyLDE2ICs3MDYwLDcgQEAKICBpbnQgbWFpbiAoKQogIHsKICAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTExMDA4LDcgKzExNjU4LDcgQEAgZWxzZQotICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgotICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCi0tI2xpbmUgMTEwMDYgImNvbmZpZ3VyZSIKLSsjbGluZSAkTElORU5PICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gCi0gI2lmIEhBVkVfRExGQ05fSAotQEAgLTExMDUyLDEwICsxMTcwMiwxMCBAQCBlbHNlCitAQCAtMTEwNTYsMTAgKzExNzA2LDEwIEBAIGVsc2UKICAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCiAgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwogICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQpAQCAtNzE1NCw3ICs3MDczLDcgQEAKICBpbnQgbWFpbiAoKQogIHsKICAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTEyOTI0LDEzICsxMzU3NCwyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTI5NjEsMTMgKzEzNjExLDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKQEAgLTcxNzUsNyArNzA5NCw3IEBACiAgU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xMjk0NSwxNCArMTM2MDIsMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKK0BAIC0xMjk4MiwxNCArMTM2MzksMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCkBAIC03MTk0LDcgKzcxMTMsNyBAQAogIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTEyOTg1LDEyICsxMzY0NSwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQorQEAgLTEzMDIyLDEyICsxMzY4MiwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQogIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKQEAgLTcyMDgsNyArNzEyNyw3IEBACiAgZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xMzA0NSw4ICsxMzcwNSwxMyBAQCByZWxvYWRfZmxhZyBcCitAQCAtMTMwODIsOCArMTM3NDIsMTMgQEAgcmVsb2FkX2ZsYWcgXAogIE9CSkRVTVAgXAogIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKICBmaWxlX21hZ2ljX2NtZCBcCkBAIC03MjIyLDcgKzcxNDEsNyBAQAogIFNUUklQIFwKICBSQU5MSUIgXAogIENDIFwKLUBAIC0xMzA1NiwxMiArMTM3MjEsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCitAQCAtMTMwOTMsMTIgKzEzNzU4LDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCkBAIC03MjM4LDcgKzcxNTcsNyBAQAogIERTWU1VVElMIFwKICBOTUVESVQgXAogIExJUE8gXAotQEAgLTEzMDc3LDcgKzEzNzQ0LDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAorQEAgLTEzMTE0LDcgKzEzNzgxLDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAogIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAogIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAogIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXApAQCAtNzI0Niw3ICs3MTY1LDcgQEAKICBleGNsdWRlX2V4cHN5bXMgXAogIGluY2x1ZGVfZXhwc3ltcyBcCiAgZmlsZV9saXN0X3NwZWMgXAotQEAgLTEzMTEzLDYgKzEzNzc5LDcgQEAgbW9kdWxlX2NtZHMgXAorQEAgLTEzMTUwLDYgKzEzODE2LDcgQEAgbW9kdWxlX2NtZHMgXAogIG1vZHVsZV9leHBzeW1fY21kcyBcCiAgZXhwb3J0X3N5bWJvbHNfY21kcyBcCiAgcHJlbGlua19jbWRzIFwKQEAgLTcyNTQsNyArNzE3Myw3IEBACiAgcG9zdGluc3RhbGxfY21kcyBcCiAgcG9zdHVuaW5zdGFsbF9jbWRzIFwKICBmaW5pc2hfY21kcyBcCi1AQCAtMTM4NjksNyArMTQ1MzYsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8CitAQCAtMTM5MDYsNyArMTQ1NzMsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8CiAgIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCiAgIwogICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCkBAIC03MjY0LDcgKzcxODMsNyBAQAogICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CiAgIwogICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KLUBAIC0xMzk3MiwxOSArMTQ2NDAsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCitAQCAtMTQwMDksMTkgKzE0Njc3LDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAogICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KICBOTDJTUD0kbHRfbHRfTkwyU1AKICAKQEAgLTczMDgsNyArNzIyNyw3IEBACiAgIyBBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbS4KICBTVFJJUD0kbHRfU1RSSVAKICAKLUBAIC0xNDAxNCw2ICsxNDcwNSwxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcworQEAgLTE0MDUxLDYgKzE0NzQyLDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCiAgIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KICBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKICAKQEAgLTczMjEsNyArNzI0MCw3IEBACiAgIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXMuCiAgb2JqZGlyPSRvYmpkaXIKICAKLUBAIC0xNDAyMyw2ICsxNDcyMCw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECitAQCAtMTQwNjAsNiArMTQ3NTcsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAogICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/CiAgbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcwogIApAQCAtNzMzMSw3ICs3MjUwLDcgQEAKICAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCiAgRFNZTVVUSUw9JGx0X0RTWU1VVElMCiAgCi1AQCAtMTQxMzcsMTIgKzE0ODM3LDEyIEBAIHdpdGhfZ2NjPSRHQ0MKK0BAIC0xNDE3NCwxMiArMTQ4NzQsMTIgQEAgd2l0aF9nY2M9JEdDQwogICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KICBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCiAgCkBAIC03MzQ3LDcgKzcyNjYsNyBAQAogICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KICBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYwogIAotQEAgLTE0MjI5LDkgKzE0OTI5LDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAorQEAgLTE0MjY2LDkgKzE0OTY2LDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAogICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgogIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMKICAKQEAgLTczNTcsNyArNzI3Niw3IEBACiAgIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCiAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKICAKLUBAIC0xNDI0Nyw2ICsxNDk0NCw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCitAQCAtMTQyODQsNiArMTQ5ODEsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcwogICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCiAgcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMKICAKQEAgLTczNjcsNyArNzI4Niw3IEBACiAgIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCiAgZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCiAgCi1AQCAtMTQyNzksMjEwICsxNDk3OSwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCitAQCAtMTQzMTYsMjEwICsxNTAxNiwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCiAgICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCiAgICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQogICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KQEAgLTc3NDIsMTAgKzc2NjEsMTAgQEAKICAgIGNobW9kICt4ICIkb2ZpbGUiCiAgCiBkaWZmIC0tZ2l0IGEvbGQvY29uZmlndXJlIGIvbGQvY29uZmlndXJlCi1pbmRleCA4MDk1YjcxLi5lYjRmMGQ3IDEwMDc1NQoraW5kZXggZjliZTUxYS4uM2RmMTE0OSAxMDA3NTUKIC0tLSBhL2xkL2NvbmZpZ3VyZQogKysrIGIvbGQvY29uZmlndXJlCi1AQCAtNjU3LDggKzY1NywxMSBAQCBPVE9PTAorQEAgLTY1OCw4ICs2NTgsMTEgQEAgT1RPT0wKICBMSVBPCiAgTk1FRElUCiAgRFNZTVVUSUwKQEAgLTc3NTcsNyArNzY3Niw3IEBACiAgT0JKRFVNUAogIExOX1MKICBOTQotQEAgLTc3OSw2ICs3ODIsNyBAQCBlbmFibGVfc3RhdGljCitAQCAtNzgxLDYgKzc4NCw3IEBAIGVuYWJsZV9zdGF0aWMKICB3aXRoX3BpYwogIGVuYWJsZV9mYXN0X2luc3RhbGwKICB3aXRoX2dudV9sZApAQCAtNzc2NSw3ICs3Njg0LDcgQEAKICBlbmFibGVfbGlidG9vbF9sb2NrCiAgZW5hYmxlX3BsdWdpbnMKICBlbmFibGVfbGFyZ2VmaWxlCi1AQCAtMTQ1OCw2ICsxNDYyLDggQEAgT3B0aW9uYWwgUGFja2FnZXM6CitAQCAtMTQ2Miw2ICsxNDY2LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6CiAgICAtLXdpdGgtcGljICAgICAgICAgICAgICB0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBbZGVmYXVsdD11c2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdGhdCiAgICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dCkBAIC03Nzc0LDcgKzc2OTMsNyBAQAogICAgLS13aXRoLWxpYi1wYXRoPWRpcjE6ZGlyMi4uLiAgc2V0IGRlZmF1bHQgTElCX1BBVEgKICAgIC0td2l0aC1zeXNyb290PURJUiBTZWFyY2ggZm9yIHVzci9saWIgZXQgYWwgd2l0aGluIERJUi4KICAKLUBAIC01NjQ5LDggKzU2NTUsOCBAQCBlc2FjCitAQCAtNTY1Niw4ICs1NjYyLDggQEAgZXNhYwogIAogIAogIApAQCAtNzc4NSw3ICs3NzA0LDcgQEAKICAKICAKICAKLUBAIC01NjkwLDcgKzU2OTYsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworQEAgLTU2OTcsNyArNTcwMyw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1CiAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KICAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KQEAgLTc3OTQsNyArNzcxMyw3IEBACiAgICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KICAgIEVDSE89J3ByaW50IC1yIC0tJwogIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi1AQCAtNjM3Niw4ICs2MzgyLDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKK0BAIC02MzgzLDggKzYzODksOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OwogICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCiAgeHNpX3NoZWxsPW5vCiAgKCBfbHRfZHVtbXk9ImEvYi9jIgpAQCAtNzgwNSw3ICs3NzI0LDcgQEAKICAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAogICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAogICAgJiYgeHNpX3NoZWxsPXllcwotQEAgLTY0MjYsNiArNjQzMiw4MCBAQCBlc2FjCitAQCAtNjQzMyw2ICs2NDM5LDgwIEBAIGVzYWMKICAKICAKICAKQEAgLTc4ODYsNyArNzgwNSw3IEBACiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKICAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9CiAgaWYgdGVzdCAiJHtsdF9jdl9sZF9yZWxvYWRfZmxhZytzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNjQ0Miw2ICs2NTIyLDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCitAQCAtNjQ0OSw2ICs2NTI5LDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCiAgZXNhYwogIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKICBjYXNlICRob3N0X29zIGluCkBAIC03ODk4LDcgKzc4MTcsNyBAQAogICAgZGFyd2luKikKICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi1AQCAtNjYxMCw3ICs2Njk1LDggQEAgbWluZ3cqIHwgcHczMiopCitAQCAtNjYxNyw3ICs2NzAyLDggQEAgbWluZ3cqIHwgcHczMiopCiAgICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCiAgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJwogICAgZWxzZQpAQCAtNzkwOCw3ICs3ODI3LDcgQEAKICAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJwogICAgZmkKICAgIDs7Ci1AQCAtNjc2NCw2ICs2ODUwLDIxIEBAIGVzYWMKK0BAIC02NzcxLDYgKzY4NTcsMjEgQEAgZXNhYwogIGZpCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1CiAgJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9CkBAIC03OTMwLDcgKzc4NDksNyBAQAogIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAogIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAogIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotQEAgLTY3NzksOSArNjg4MCwxNjIgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCitAQCAtNjc4Niw5ICs2ODg3LDE2MiBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KICAKICAKICAKQEAgLTgwOTUsNyArODAxNCw3IEBACiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQogIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19BUitzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNjc5Nyw3ICs3MDUxLDcgQEAgZG8KK0BAIC02ODA0LDcgKzcwNTgsNyBAQCBkbwogICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCiAgICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCkBAIC04MTA0LDcgKzgwMjMsNyBAQAogICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgICAgYnJlYWsgMgogICAgZmkKLUBAIC02ODE3LDExICs3MDcxLDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9CitAQCAtNjgyNCwxMSArNzA3OCwxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQogIGZpCiAgCiAgCkBAIC04MTIzLDcgKzgwNDIsNyBAQAogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KICBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTY4MzcsNyArNzA5NSw3IEBAIGRvCitAQCAtNjg0NCw3ICs3MTAyLDcgQEAgZG8KICAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwogICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgpAQCAtODEzMiw3ICs4MDUxLDcgQEAKICAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICAgIGJyZWFrIDIKICAgIGZpCi1AQCAtNjg1Niw2ICs3MTE0LDEwIEBAIGVsc2UKK0BAIC02ODYzLDYgKzcxMjEsMTAgQEAgZWxzZQogICRhc19lY2hvICJubyIgPiY2OyB9CiAgZmkKICAKQEAgLTgxNDMsNyArODA2Miw3IEBACiAgICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KICAgICAgQVI9ImZhbHNlIgogICAgZWxzZQotQEAgLTY4NjcsMTIgKzcxMjksMTIgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7CitAQCAtNjg3NCwxMiArNzEzNiwxMiBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKICBlc2FjCiAgICAgIEFSPSRhY19jdF9BUgogICAgZmkKQEAgLTgxNjAsNyArODA3OSw3IEBACiAgCiAgCiAgCi1AQCAtNjg4Miw2ICs3MTQ0LDYyIEBAIHRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CitAQCAtNjg4OSw2ICs3MTUxLDYyIEBAIHRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CiAgCiAgCiAgCkBAIC04MjIzLDcgKzgxNDIsNyBAQAogIAogIAogIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLUBAIC03MjE4LDggKzc1MzYsOCBAQCBlc2FjCitAQCAtNzIyNSw4ICs3NTQzLDggQEAgZXNhYwogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCiAgCiAgIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCkBAIC04MjM0LDcgKzgxNTMsNyBAQAogIAogICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgogIG9wdF9jcj0KLUBAIC03MjU1LDYgKzc1NzMsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCitAQCAtNzI2Miw2ICs3NTgwLDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbwogICAgZWxzZQogICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgogICAgZmkKQEAgLTgyNDIsNyArODE2MSw3IEBACiAgCiAgICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KICAgIHBpcGVfd29ya3M9bm8KLUBAIC03Mjk2LDYgKzc2MTUsMTggQEAgX0xUX0VPRgorQEAgLTczMDMsNiArNzYyMiwxOCBAQCBfTFRfRU9GCiAgICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KICAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCiAgCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKQEAgLTgyNjEsNyArODE4MCw3IEBACiAgI2lmZGVmIF9fY3BsdXNwbHVzCiAgZXh0ZXJuICJDIiB7CiAgI2VuZGlmCi1AQCAtNzMwNyw3ICs3NjM4LDcgQEAgX0xUX0VPRgorQEAgLTczMTQsNyArNzY0NSw3IEBAIF9MVF9FT0YKICAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKICAKICAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCkBAIC04MjcwLDcgKzgxODksNyBAQAogICAgY29uc3QgY2hhciAqbmFtZTsKICAgIHZvaWQgICAgICAgKmFkZHJlc3M7CiAgfQotQEAgLTczMzMsOCArNzY2NCw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7CitAQCAtNzM0MCw4ICs3NjcxLDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKICBfTFRfRU9GCiAgCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KICAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKQEAgLTgyODEsNyArODIwMCw3IEBACiAgCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKICAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCiAgCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1Ci1AQCAtNzM0NCw4ICs3Njc1LDggQEAgX0xUX0VPRgorQEAgLTczNTEsOCArNzY4Miw4IEBAIF9MVF9FT0YKICAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogIAkgICAgcGlwZV93b3Jrcz15ZXMKICAJICBmaQpAQCAtODI5Miw3ICs4MjExLDcgQEAKICAJZWxzZQogIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQogIAlmaQotQEAgLTczODIsNiArNzcxMywxOSBAQCBlbHNlCitAQCAtNzM4OSw2ICs3NzIwLDE5IEBAIGVsc2UKICAkYXNfZWNobyAib2siID4mNjsgfQogIGZpCiAgCkBAIC04MzEyLDcgKzgyMzEsNyBAQAogIAogIAogIAotQEAgLTc0MDIsNiArNzc0Niw0MiBAQCBmaQorQEAgLTc0MDksNiArNzc1Myw0MiBAQCBmaQogIAogIAogIApAQCAtODM1NSw3ICs4Mjc0LDcgQEAKICAKICAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtbGlidG9vbC1sb2NrIHdhcyBnaXZlbi4KICBpZiB0ZXN0ICIke2VuYWJsZV9saWJ0b29sX2xvY2src2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTc2MDksNiArNzk4OSwxMjMgQEAgZXNhYworQEAgLTc2MTYsNiArNzk5NiwxMjMgQEAgZXNhYwogIAogIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgogIApAQCAtODQ3OSw3ICs4Mzk4LDcgQEAKICAKICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKLUBAIC04MTcyLDYgKzg2NjksOCBAQCBfTFRfRU9GCitAQCAtODE3OSw2ICs4Njc2LDggQEAgX0xUX0VPRgogICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQogICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKICAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1CkBAIC04NDg4LDcgKzg0MDcsNyBAQAogICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgogIGludCBtYWluKCkgeyByZXR1cm4gMDt9CiAgX0xUX0VPRgotQEAgLTgyNDAsNiArODczOSwxNiBAQCBkb25lCitAQCAtODI0Nyw2ICs4NzQ2LDE2IEBAIGRvbmUKICAKICAKICAKQEAgLTg1MDUsNyArODQyNCw3IEBACiAgCiAgCiAgIyBTZXQgb3B0aW9ucwotQEAgLTgzNjgsNyArODg3Nyw4IEBAIGZpCitAQCAtODM3NSw3ICs4ODg0LDggQEAgZmkKICBMSUJUT09MX0RFUFM9IiRsdG1haW4iCiAgCiAgIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KQEAgLTg1MTUsNyArODQzNCw3IEBACiAgCiAgCiAgCi1AQCAtODQ1Nyw3ICs4OTY3LDcgQEAgYWl4MyopCitAQCAtODQ2NCw3ICs4OTc0LDcgQEAgYWl4MyopCiAgZXNhYwogIAogICMgR2xvYmFsIHZhcmlhYmxlczoKQEAgLTg1MjQsNyArODQ0Myw3IEBACiAgY2FuX2J1aWxkX3NoYXJlZD15ZXMKICAKICAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKLUBAIC04NzU1LDggKzkyNjUsNiBAQCBmaQorQEAgLTg3NjIsOCArOTI3Miw2IEBAIGZpCiAgbHRfcHJvZ19jb21waWxlcl9waWM9CiAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9CiAgCkBAIC04NTMzLDcgKzg0NTIsNyBAQAogIAogICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKLUBAIC04OTIyLDYgKzk0MzAsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KK0BAIC04OTI5LDYgKzk0MzcsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KICAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJwogIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCiAgCTs7CkBAIC04NTQ2LDcgKzg0NjUsNyBAQAogICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKICAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCiAgCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCi1AQCAtODk4NCw3ICs5NDk4LDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KK0BAIC04OTkxLDcgKzk1MDUsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQogICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKICAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCiAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KQEAgLTg1NTUsNyArODQ3NCw3IEBACiAgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICc7OwogICAgICAgICopCiAgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKLUBAIC05MDQxLDEzICs5NTU1LDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KK0BAIC05MDQ4LDEzICs5NTYyLDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9IiRsdF9wcm9nX2NvbXBpbGVyX3BpYyAtRFBJQyIKICAgICAgOzsKICBlc2FjCkBAIC04NTc5LDcgKzg0OTgsNyBAQAogIAogICMKICAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCi1AQCAtOTEwOCw2ICs5NjI2LDExIEBAIGZpCitAQCAtOTExNSw2ICs5NjMzLDExIEBAIGZpCiAgCiAgCiAgCkBAIC04NTkxLDcgKzg1MTAsNyBAQAogICMKICAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCiAgIwotQEAgLTk0NTgsNyArOTk4MSw4IEBAIF9MVF9FT0YKK0BAIC05NDY1LDcgKzk5ODgsOCBAQCBfTFRfRU9GCiAgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKICAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KICAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwpAQCAtODYwMSw3ICs4NTIwLDcgQEAKICAKICAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCiAgICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotQEAgLTk1NTcsMTIgKzEwMDgxLDEyIEBAIF9MVF9FT0YKK0BAIC05NTY0LDEyICsxMDA4OCwxMiBAQCBfTFRfRU9GCiAgCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCiAgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KICAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKQEAgLTg2MTYsNyArODUzNSw3IEBACiAgCSAgZmkKICAJICA7OwogIAllc2FjCi1AQCAtOTU3Niw4ICsxMDEwMCw4IEBAIF9MVF9FT0YKK0BAIC05NTgzLDggKzEwMTA3LDggQEAgX0xUX0VPRgogIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCiAgCXdsYXJjPQogICAgICAgIGVsc2UKQEAgLTg2MjcsNyArODU0Niw3IEBACiAgICAgICAgZmkKICAgICAgICA7OwogIAotQEAgLTk1OTUsOCArMTAxMTksOCBAQCBfTFRfRU9GCitAQCAtOTYwMiw4ICsxMDEyNiw4IEBAIF9MVF9FT0YKICAKICBfTFRfRU9GCiAgICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCkBAIC04NjM4LDcgKzg1NTcsNyBAQAogICAgICAgIGVsc2UKICAJbGRfc2hsaWJzPW5vCiAgICAgICAgZmkKLUBAIC05NjQyLDggKzEwMTY2LDggQEAgX0xUX0VPRgorQEAgLTk2NDksOCArMTAxNzMsOCBAQCBfTFRfRU9GCiAgCiAgICAgICopCiAgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgpAQCAtODY0OSw3ICs4NTY4LDcgQEAKICAgICAgICBlbHNlCiAgCWxkX3NobGlicz1ubwogICAgICAgIGZpCi1AQCAtOTc3Myw3ICsxMDI5NywxMyBAQCBfTFRfRU9GCitAQCAtOTc4MCw3ICsxMDMwNCwxMyBAQCBfTFRfRU9GCiAgCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCiAgICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KICAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KQEAgLTg2NjQsNyArODU4Myw3IEBACiAgLyogZW5kIGNvbmZkZWZzLmguICAqLwogIAogIGludAotQEAgLTk3ODYsMjIgKzEwMzE2LDI5IEBAIG1haW4gKCkKK0BAIC05NzkzLDIyICsxMDMyMywyOSBAQCBtYWluICgpCiAgX0FDRU9GCiAgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgogIApAQCAtODcwNyw3ICs4NjI2LDcgQEAKICAKICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCiAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgotQEAgLTk4MTMsNyArMTAzNTAsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtOTgyMCw3ICsxMDM1NywxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKICAJZWxzZQogIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCiAgCSAjIGVtcHR5IGV4ZWN1dGFibGUuCkBAIC04NzIyLDcgKzg2NDEsNyBAQAogIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KICAKICBpbnQKLUBAIC05ODI2LDIyICsxMDM2OSwyOSBAQCBtYWluICgpCitAQCAtOTgzMywyMiArMTAzNzYsMjkgQEAgbWFpbiAoKQogIF9BQ0VPRgogIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKICAKQEAgLTg3NjUsNyArODY4NCw3IEBACiAgCiAgCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgogIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCi1AQCAtOTg4NSwyMSArMTA0MzUsNjQgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtOTg5MiwyMSArMTA0NDIsNjQgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCiAgICAgICAgIyBXaGVuIG5vdCB1c2luZyBnY2MsIHdlIGN1cnJlbnRseSBhc3N1bWUgdGhhdCB3ZSBhcmUgdXNpbmcKICAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgogICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKQEAgLTg4NDUsNyArODc2NCw3IEBACiAgICAgICAgOzsKICAKICAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLUBAIC05OTYwLDcgKzEwNTUzLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtOTk2Nyw3ICsxMDU2MCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQogIAogICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCiAgICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKQEAgLTg4NTQsNyArODc3Myw3IEBACiAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwogICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKICAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCi1AQCAtOTk2OCw3ICsxMDU2MSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTk5NzUsNyArMTA1NjgsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKICAKICAgICAgaHB1eDkqKQogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCkBAIC04ODYzLDcgKzg3ODIsNyBAQAogICAgICAgIGVsc2UKICAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKICAgICAgICBmaQotQEAgLTk5ODQsNyArMTA1NzcsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC05OTkxLDcgKzEwNTg0LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCiAgCiAgICAgIGhwdXgxMCopCiAgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCkBAIC04ODcyLDcgKzg3OTEsNyBAQAogICAgICAgIGVsc2UKICAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwogICAgICAgIGZpCi1AQCAtMTAwMDgsMTAgKzEwNjAxLDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTEwMDE1LDEwICsxMDYwOCwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKICAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogIAkgIDs7CiAgCWlhNjQqKQpAQCAtODg4NSw3ICs4ODA0LDcgQEAKICAJICA7OwogIAllc2FjCiAgICAgICAgZWxzZQotQEAgLTEwMDkwLDIzICsxMDY4MywzNiBAQCBmaQorQEAgLTEwMDk3LDIzICsxMDY5MCwzNiBAQCBmaQogIAogICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCkBAIC04OTMwLDcgKzg4NDksNyBAQAogICAgICAgIGVsc2UKICAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKICAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi1AQCAtMTAxOTEsNyArMTA3OTcsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKK0BAIC0xMDE5OCw3ICsxMDgwNCw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAogICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKICAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCkBAIC04OTM5LDcgKzg4NTgsNyBAQAogIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCiAgICAgICAgZWxzZQogIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLUBAIC0xMDIxMCw5ICsxMDgxNiw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorQEAgLTEwMjE3LDkgKzEwODIzLDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCiAgICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJwogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgCXdsYXJjPScke3dsfScKQEAgLTg5NTEsNyArODg3MCw3IEBACiAgICAgICAgZWxzZQogIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KICAJKiJDb21waWxlcnMgNS4wIiopCi1AQCAtMTA3ODgsOCArMTEzOTQsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCitAQCAtMTA3OTUsOCArMTE0MDEsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCiAgICBuZWVkX3ZlcnNpb249bm8KICAgIG5lZWRfbGliX3ByZWZpeD1ubwogIApAQCAtODk2Myw3ICs4ODgyLDcgQEAKICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKICAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwogICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLUBAIC0xMDgyMiwxMyArMTE0MjksNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorQEAgLTEwODI5LDEzICsxMTQzNiw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCiAgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwogICAgICAgIDs7CiAgICAgIGVzYWMKQEAgLTkwMzYsNyArODk1NSw3IEBACiAgICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KICAgIHNobGlicGF0aF92YXI9UEFUSAogICAgOzsKLUBAIC0xMDkyMCw3ICsxMTU4NSw3IEBAIGhhaWt1KikKK0BAIC0xMDkyNyw3ICsxMTU5Miw3IEBAIGhhaWt1KikKICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCiAgICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAogICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwpAQCAtOTA0NSwxNiArODk2NCw3IEBACiAgICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCiAgICA7OwogIAotQEAgLTExNzE2LDcgKzEyMzgxLDcgQEAgZWxzZQotICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgotICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCi0tI2xpbmUgMTE3MTkgImNvbmZpZ3VyZSIKLSsjbGluZSAkTElORU5PICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gCi0gI2lmIEhBVkVfRExGQ05fSAotQEAgLTExNzYwLDEwICsxMjQyNSwxMCBAQCBlbHNlCitAQCAtMTE3NjcsMTAgKzEyNDMyLDEwIEBAIGVsc2UKICAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCiAgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwogICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQpAQCAtOTA2NywxNiArODk3Nyw3IEBACiAgaW50IG1haW4gKCkKICB7CiAgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xMTgyMiw3ICsxMjQ4Nyw3IEBAIGVsc2UKLSAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKLSAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgotLSNsaW5lIDExODI1ICJjb25maWd1cmUiCi0rI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotICNpZiBIQVZFX0RMRkNOX0gKLUBAIC0xMTg2NiwxMCArMTI1MzEsMTAgQEAgZWxzZQorQEAgLTExODczLDEwICsxMjUzOCwxMCBAQCBlbHNlCiAgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAogICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KICAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKQEAgLTkwODksNyArODk5MCw3IEBACiAgaW50IG1haW4gKCkKICB7CiAgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xMjI2MSw2ICsxMjkyNiw3IEBAICRSTSAtciBjb25mdGVzdCoKK0BAIC0xMjI2OCw2ICsxMjkzMyw3IEBAICRSTSAtciBjb25mdGVzdCoKICAKICAgICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCiAgICBsdF9zYXZlX0NDPSRDQwpAQCAtOTA5Nyw3ICs4OTk4LDcgQEAKICAgIGx0X3NhdmVfTEQ9JExECiAgICBsdF9zYXZlX0dDQz0kR0NDCiAgICBHQ0M9JEdYWAotQEAgLTEyMjc4LDYgKzEyOTQ0LDcgQEAgJFJNIC1yIGNvbmZ0ZXN0KgorQEAgLTEyMjg1LDYgKzEyOTUxLDcgQEAgJFJNIC1yIGNvbmZ0ZXN0KgogICAgZmkKICAgIHRlc3QgLXogIiR7TERDWFgrc2V0fSIgfHwgTEQ9JExEQ1hYCiAgICBDQz0ke0NYWC0iYysrIn0KQEAgLTkxMDUsNyArOTAwNiw3IEBACiAgICBjb21waWxlcj0kQ0MKICAgIGNvbXBpbGVyX0NYWD0kQ0MKICAgIGZvciBjY190ZW1wIGluICRjb21waWxlciIiOyBkbwotQEAgLTEyNTYwLDcgKzEzMjI3LDEzIEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRjb21waWxlciBsaW5rZXIgKCRMRCkgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllCitAQCAtMTI1NjcsNyArMTMyMzQsMTMgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGNvbXBpbGVyIGxpbmtlciAoJExEKSBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWUKICAgICAgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWdfQ1hYPSctYmVyb2snCiAgICAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbiBlbXB0eQogICAgICAgICAgICAjIGV4ZWN1dGFibGUuCkBAIC05MTIwLDcgKzkwMjEsNyBAQAogIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KICAKICBpbnQKLUBAIC0xMjU3MywyMiArMTMyNDYsMjkgQEAgbWFpbiAoKQorQEAgLTEyNTgwLDIyICsxMzI1MywyOSBAQCBtYWluICgpCiAgX0FDRU9GCiAgaWYgYWNfZm5fY3h4X3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CiAgCkBAIC05MTYzLDcgKzkwNjQsNyBAQAogIAogICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKICAKLUBAIC0xMjYwMSw3ICsxMzI4MSwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC0xMjYwOCw3ICsxMzI4OCwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKICAgICAgICAgICAgZWxzZQogIAkgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCiAgCSAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCkBAIC05MTc4LDcgKzkwNzksNyBAQAogIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KICAKICBpbnQKLUBAIC0xMjYxNCwyMiArMTMzMDAsMjkgQEAgbWFpbiAoKQorQEAgLTEyNjIxLDIyICsxMzMwNywyOSBAQCBtYWluICgpCiAgX0FDRU9GCiAgaWYgYWNfZm5fY3h4X3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CiAgCkBAIC05MjIxLDcgKzkxMjIsNyBAQAogIAogIAkgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCiAgCSAgICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAotQEAgLTEyNjcyLDI5ICsxMzM2NSw3NSBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC0xMjY3OSwyOSArMTMzNzIsNzUgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCiAgICAgICAgICA7OwogIAogICAgICAgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKQEAgLTkzMjAsNyArOTIyMSw3IEBACiAgICAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKICAKICAKLUBAIC0xMjgwMCw3ICsxMzUzOSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTEyODA3LDcgKzEzNTQ2LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCiAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgKikKICAgICAgICAgICAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgpAQCAtOTMyOSw3ICs5MjMwLDcgQEAKICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKICAgICAgICAgICAgICAgIGxkX3NobGlic19DWFg9bm8KLUBAIC0xMjg3MSwxMCArMTM2MTAsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtMTI4NzgsMTAgKzEzNjE3LDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQogIAkgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCiAgCSAgICAgICAgICAgIDs7CiAgCSAgICAgICAgICBpYTY0KikKQEAgLTkzNDIsNyArOTI0Myw3IEBACiAgCSAgICAgICAgICAgIDs7CiAgCSAgICAgICAgZXNhYwogIAkgICAgICBmaQotQEAgLTEyOTE1LDkgKzEzNjU0LDkgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtMTI5MjIsOSArMTM2NjEsOSBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKICAgICAgICAgICAgKikKICAJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCiAgCSAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgpAQCAtOTM1NCw3ICs5MjU1LDcgQEAKICAJICAgICAgZmkKICAJICAgIGZpCiAgCSAgICBsaW5rX2FsbF9kZXBsaWJzX0NYWD15ZXMKLUBAIC0xMjk4NywyMCArMTM3MjYsMjAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtMTI5OTQsMjAgKzEzNzMzLDIwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQogIAkgICAgICBwcmVsaW5rX2NtZHNfQ1hYPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgogIAkJcm0gLXJmICR0cGxkaXJ+CiAgCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRvYmpzICRsaWJvYmpzICRjb21waWxlX2RlcGxpYnN+CkBAIC05Mzc5LDcgKzkyODAsNyBAQAogIAkgICAgICA7OwogIAkgICAgKikgIyBWZXJzaW9uIDYgYW5kIGFib3ZlIHVzZSB3ZWFrIHN5bWJvbHMKICAJICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCi1AQCAtMTMxOTUsNyArMTM5MzQsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC0xMzIwMiw3ICsxMzk0MSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQogIAkgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogIAkJICA7OwogIAkgICAgICAgICopCkBAIC05Mzg4LDcgKzkyODksNyBAQAogIAkJICA7OwogIAkgICAgICBlc2FjCiAgCi1AQCAtMTMyNDEsNyArMTM5ODAsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC0xMzI0OCw3ICsxMzk4Nyw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQogIAogICAgICAgIHNvbGFyaXMqKQogICAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KQEAgLTkzOTcsNyArOTI5OCw3IEBACiAgCSAgICAjIFN1biBDKysgNC4yLCA1LnggYW5kIENlbnRlcmxpbmUgQysrCiAgICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX25lZWRfbGNfQ1hYPXllcwogIAkgICAgbm9fdW5kZWZpbmVkX2ZsYWdfQ1hYPScgLXpkZWZzJwotQEAgLTEzMjgyLDkgKzE0MDIxLDkgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtMTMyODksOSArMTQwMjgsOSBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKICAJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgogIAkgICAgICBub191bmRlZmluZWRfZmxhZ19DWFg9JyAke3dsfS16ICR7d2x9ZGVmcycKICAJICAgICAgaWYgJENDIC0tdmVyc2lvbiB8ICRHUkVQIC12ICdeMlwuNycgPiAvZGV2L251bGw7IHRoZW4KQEAgLTk0MDksNyArOTMxMCw3IEBACiAgCiAgCSAgICAgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cwogIAkgICAgICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgotQEAgLTEzNDE5LDYgKzE0MTU4LDEzIEBAIHByaXZhdGU6CitAQCAtMTM0MjYsNiArMTQxNjUsMTMgQEAgcHJpdmF0ZToKICB9OwogIF9MVF9FT0YKICAKQEAgLTk0MjMsNyArOTMyNCw3IEBACiAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2NvbXBpbGVcIiI7IH0gPiY1CiAgICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQogICAgYWNfc3RhdHVzPSQ/Ci1AQCAtMTM0MzIsNyArMTQxNzgsNyBAQCBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKK0BAIC0xMzQzOSw3ICsxNDE4NSw3IEBAIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19jb21waWxlXCIiOyB9ID4mNQogICAgcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZT1ubwogIAogICAgZm9yIHAgaW4gYGV2YWwgIiRvdXRwdXRfdmVyYm9zZV9saW5rX2NtZCJgOyBkbwpAQCAtOTQzMiw3ICs5MzMzLDcgQEAKICAKICAgICAgLUwqIHwgLVIqIHwgLWwqKQogICAgICAgICAjIFNvbWUgY29tcGlsZXJzIHBsYWNlIHNwYWNlIGJldHdlZW4gIi17TCxSfSIgYW5kIHRoZSBwYXRoLgotQEAgLTEzNDQxLDEzICsxNDE4NywyMiBAQCBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKK0BAIC0xMzQ0OCwxMyArMTQxOTQsMjIgQEAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2NvbXBpbGVcIiI7IH0gPiY1CiAgICAgICAgICAgIHRlc3QgJHAgPSAiLVIiOyB0aGVuCiAgCSBwcmV2PSRwCiAgCSBjb250aW51ZQpAQCAtOTQ1OSw3ICs5MzYwLDcgQEAKICAJICAgIyBJbnRlcm5hbCBjb21waWxlciBsaWJyYXJ5IHBhdGhzIHNob3VsZCBjb21lIGFmdGVyIHRob3NlCiAgCSAgICMgcHJvdmlkZWQgdGhlIHVzZXIuICBUaGUgcG9zdGRlcHMgYWxyZWFkeSBjb21lIGFmdGVyIHRoZQogIAkgICAjIHVzZXIgc3VwcGxpZWQgbGlicyBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIHByb2Nlc3MgdGhlbS4KLUBAIC0xMzQ2Nyw4ICsxNDIyMiwxMCBAQCBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKK0BAIC0xMzQ3NCw4ICsxNDIyOSwxMCBAQCBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKICAJICAgcG9zdGRlcHNfQ1hYPSIke3Bvc3RkZXBzX0NYWH0gJHtwcmV2fSR7cH0iCiAgCSBmaQogICAgICAgICBmaQpAQCAtOTQ3MCw3ICs5MzcxLDcgQEAKICAgICAgKi4kb2JqZXh0KQogICAgICAgICAjIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSB0ZXN0IG9iamVjdCBmaWxlIG9ubHkgc2hvd3MgdXAKICAgICAgICAgIyBvbmNlIGluIHRoZSBjb21waWxlciBvdXRwdXQuCi1AQCAtMTM1MDQsNiArMTQyNjEsNyBAQCBlbHNlCitAQCAtMTM1MTEsNiArMTQyNjgsNyBAQCBlbHNlCiAgZmkKICAKICAkUk0gLWYgY29uZmVzdC4kb2JqZXh0CkBAIC05NDc4LDcgKzkzNzksNyBAQAogIAogICMgUE9SVE1FOiBvdmVycmlkZSBhYm92ZSB0ZXN0IG9uIHN5c3RlbXMgd2hlcmUgaXQgaXMgYnJva2VuCiAgY2FzZSAkaG9zdF9vcyBpbgotQEAgLTEzNTM5LDcgKzE0Mjk3LDcgQEAgbGludXgqKQorQEAgLTEzNTQ2LDcgKzE0MzA0LDcgQEAgbGludXgqKQogIAogIHNvbGFyaXMqKQogICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KQEAgLTk0ODcsNyArOTM4OCw3IEBACiAgICAgICMgVGhlIG1vcmUgc3RhbmRhcmRzLWNvbmZvcm1pbmcgc3RscG9ydDQgbGlicmFyeSBpcwogICAgICAjIGluY29tcGF0aWJsZSB3aXRoIHRoZSBDc3RkIGxpYnJhcnkuIEF2b2lkIHNwZWNpZnlpbmcKICAgICAgIyBpdCBpZiBpdCdzIGluIENYWEZMQUdTLiBJZ25vcmUgbGliQ3J1biBhcwotQEAgLTEzNjA0LDggKzE0MzYyLDYgQEAgZmkKK0BAIC0xMzYxMSw4ICsxNDM2OSw2IEBAIGZpCiAgbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYPQogIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljX0NYWD0KICAKQEAgLTk0OTYsNyArOTM5Nyw3IEBACiAgCiAgICAjIEMrKyBzcGVjaWZpYyBjYXNlcyBmb3IgcGljLCBzdGF0aWMsIHdsLCBldGMuCiAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgotQEAgLTEzNzEwLDYgKzE0NDY2LDExIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CitAQCAtMTM3MTcsNiArMTQ0NzMsMTEgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KICAJICA7OwogIAllc2FjCiAgCTs7CkBAIC05NTA4LDcgKzk0MDksNyBAQAogICAgICAgIGRndXgqKQogIAljYXNlICRjY19iYXNlbmFtZSBpbgogIAkgIGVjKysqKQotQEAgLTEzODYyLDcgKzE0NjIzLDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KK0BAIC0xMzg2OSw3ICsxNDYzMCw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CiAgCTs7CiAgICAgICAgc29sYXJpcyopCiAgCWNhc2UgJGNjX2Jhc2VuYW1lIGluCkBAIC05NTE3LDcgKzk0MTgsNyBAQAogIAkgICAgIyBTdW4gQysrIDQuMiwgNS54IGFuZCBDZW50ZXJsaW5lIEMrKwogIAkgICAgbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYPSctS1BJQycKICAJICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljX0NYWD0nLUJzdGF0aWMnCi1AQCAtMTM5MjcsMTAgKzE0Njg4LDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KK0BAIC0xMzkzNCwxMCArMTQ2OTUsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgogICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFg9IiRsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFggLURQSUMiCiAgICAgIDs7CiAgZXNhYwpAQCAtOTUzOCw3ICs5NDM5LDcgQEAKICAKICAjCiAgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotQEAgLTEzOTg4LDYgKzE0NzU2LDggQEAgZmkKK0BAIC0xMzk5NSw2ICsxNDc2Myw4IEBAIGZpCiAgCiAgCiAgCkBAIC05NTQ3LDcgKzk0NDgsNyBAQAogICMKICAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCiAgIwotQEAgLTE0MTY1LDYgKzE0OTM1LDcgQEAgZmkKK0BAIC0xNDE3Miw2ICsxNDk0Miw3IEBAIGZpCiAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGNvbXBpbGVyIGxpbmtlciAoJExEKSBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWVzLi4uICIgPiY2OyB9CiAgCiAgICBleHBvcnRfc3ltYm9sc19jbWRzX0NYWD0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEICdcJydzLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwpAQCAtOTU1NSw3ICs5NDU2LDcgQEAKICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgIGFpeFs0LTldKikKICAgICAgIyBJZiB3ZSdyZSB1c2luZyBHTlUgbm0sIHRoZW4gd2UgZG9uJ3Qgd2FudCB0aGUgIi1DIiBvcHRpb24uCi1AQCAtMTQxNzksMTUgKzE0OTUwLDIwIEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRjb21waWxlciBsaW5rZXIgKCRMRCkgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllCitAQCAtMTQxODYsMTUgKzE0OTU3LDIwIEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRjb21waWxlciBsaW5rZXIgKCRMRCkgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllCiAgICAgIDs7CiAgICBwdzMyKikKICAgICAgZXhwb3J0X3N5bWJvbHNfY21kc19DWFg9IiRsdGRsbF9jbWRzIgpAQCAtOTU4MSw3ICs5NDgyLDcgQEAKICAKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGxkX3NobGlic19DWFgiID4mNQogICRhc19lY2hvICIkbGRfc2hsaWJzX0NYWCIgPiY2OyB9Ci1AQCAtMTQ0NTAsOCArMTUyMjYsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCitAQCAtMTQ0NTcsOCArMTUyMzMsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCiAgICBuZWVkX3ZlcnNpb249bm8KICAgIG5lZWRfbGliX3ByZWZpeD1ubwogIApAQCAtOTU5Myw3ICs5NDk0LDcgQEAKICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKICAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwogICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLUBAIC0xNDQ4MywxMyArMTUyNjAsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorQEAgLTE0NDkwLDEzICsxNTI2Nyw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCiAgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwogICAgICAgIDs7CiAgICAgIGVzYWMKQEAgLTk2NjYsNyArOTU2Nyw3IEBACiAgICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KICAgIHNobGlicGF0aF92YXI9UEFUSAogICAgOzsKLUBAIC0xNDU4MCw3ICsxNTQxNSw3IEBAIGhhaWt1KikKK0BAIC0xNDU4Nyw3ICsxNTQyMiw3IEBAIGhhaWt1KikKICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCiAgICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAogICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwpAQCAtOTY3NSw3ICs5NTc2LDcgQEAKICAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKICAgIDs7CiAgCi1AQCAtMTUwMzksNiArMTU4NzQsNyBAQCBmaQorQEAgLTE1MDQ2LDYgKzE1ODgxLDcgQEAgZmkKICAgIGZpICMgdGVzdCAtbiAiJGNvbXBpbGVyIgogIAogICAgQ0M9JGx0X3NhdmVfQ0MKQEAgLTk2ODMsNyArOTU4NCw3IEBACiAgICBMRENYWD0kTEQKICAgIExEPSRsdF9zYXZlX0xECiAgICBHQ0M9JGx0X3NhdmVfR0NDCi1AQCAtMTc5NTMsMTMgKzE4Nzg5LDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xNzk4MiwxMyArMTg4MTgsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwpAQCAtOTcwNCw3ICs5NjA1LDcgQEAKICBTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIFJBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE3OTc0LDE0ICsxODgxNywxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQorQEAgLTE4MDAzLDE0ICsxODg0NiwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKQEAgLTk3MjMsNyArOTYyNCw3IEBACiAgRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTgwMTQsMTIgKzE4ODYwLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCitAQCAtMTgwNDMsMTIgKzE4ODg5LDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCiAgaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwpAQCAtOTczNyw3ICs5NjM4LDcgQEAKICBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE4MDU4LDggKzE4OTA0LDggQEAgb2xkX2FyY2hpdmVfY21kc19DWFg9J2AkRUNITyAiJG9sZF9hcmNoaXZlX2NtZHNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGUKK0BAIC0xODA4Nyw4ICsxODkzMyw4IEBAIG9sZF9hcmNoaXZlX2NtZHNfQ1hYPSdgJEVDSE8gIiRvbGRfYXJjaGl2ZV9jbWRzX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlCiAgY29tcGlsZXJfQ1hYPSdgJEVDSE8gIiRjb21waWxlcl9DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIEdDQ19DWFg9J2AkRUNITyAiJEdDQ19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnX0NYWD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWdfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKQEAgLTk3NDcsNyArOTY0OCw3IEBACiAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vX0NYWD0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX29fQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBhcmNoaXZlX2NtZHNfbmVlZF9sY19DWFg9J2AkRUNITyAiJGFyY2hpdmVfY21kc19uZWVkX2xjX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTgwODYsMTIgKzE4OTMyLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXJfQ1hYPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyX0NYWCIgfCAkU0VEICIkZGVsYXlfCitAQCAtMTgxMTUsMTIgKzE4OTYxLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXJfQ1hYPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyX0NYWCIgfCAkU0VEICIkZGVsYXlfCiAgaGFyZGNvZGVfYXV0b21hdGljX0NYWD0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgaW5oZXJpdF9ycGF0aF9DWFg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGhfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsaW5rX2FsbF9kZXBsaWJzX0NYWD0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlic19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwpAQCAtOTc2MSw3ICs5NjYyLDcgQEAKICBmaWxlX2xpc3Rfc3BlY19DWFg9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgaGFyZGNvZGVfYWN0aW9uX0NYWD0nYCRFQ0hPICIkaGFyZGNvZGVfYWN0aW9uX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgY29tcGlsZXJfbGliX3NlYXJjaF9kaXJzX0NYWD0nYCRFQ0hPICIkY29tcGlsZXJfbGliX3NlYXJjaF9kaXJzX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTgxMjksOCArMTg5NzUsMTMgQEAgcmVsb2FkX2ZsYWcgXAorQEAgLTE4MTU4LDggKzE5MDA0LDEzIEBAIHJlbG9hZF9mbGFnIFwKICBPQkpEVU1QIFwKICBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCiAgZmlsZV9tYWdpY19jbWQgXApAQCAtOTc3NSw3ICs5Njc2LDcgQEAKICBTVFJJUCBcCiAgUkFOTElCIFwKICBDQyBcCi1AQCAtMTgxNDAsMTIgKzE4OTkxLDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAorQEAgLTE4MTY5LDEyICsxOTAyMCwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXApAQCAtOTc5MSw3ICs5NjkyLDcgQEAKICBEU1lNVVRJTCBcCiAgTk1FRElUIFwKICBMSVBPIFwKLUBAIC0xODE2MSw3ICsxOTAxNCw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKK0BAIC0xODE5MCw3ICsxOTA0Myw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKQEAgLTk3OTksNyArOTcwMCw3IEBACiAgZXhjbHVkZV9leHBzeW1zIFwKICBpbmNsdWRlX2V4cHN5bXMgXAogIGZpbGVfbGlzdF9zcGVjIFwKLUBAIC0xODE4Myw4ICsxOTAzNSw4IEBAIExEX0NYWCBcCitAQCAtMTgyMTIsOCArMTkwNjQsOCBAQCBMRF9DWFggXAogIHJlbG9hZF9mbGFnX0NYWCBcCiAgY29tcGlsZXJfQ1hYIFwKICBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZ19DWFggXApAQCAtOTgwOSw3ICs5NzEwLDcgQEAKICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFggXAogIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vX0NYWCBcCiAgZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjX0NYWCBcCi1AQCAtMTgxOTYsNyArMTkwNDgsNiBAQCBub191bmRlZmluZWRfZmxhZ19DWFggXAorQEAgLTE4MjI1LDcgKzE5MDc3LDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWdfQ1hYIFwKICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWCBcCiAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZF9DWFggXAogIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3JfQ1hYIFwKQEAgLTk4MTcsNyArOTcxOCw3IEBACiAgZXhjbHVkZV9leHBzeW1zX0NYWCBcCiAgaW5jbHVkZV9leHBzeW1zX0NYWCBcCiAgZmlsZV9saXN0X3NwZWNfQ1hYIFwKLUBAIC0xODIzMCw2ICsxOTA4MSw3IEBAIG1vZHVsZV9jbWRzIFwKK0BAIC0xODI1OSw2ICsxOTExMCw3IEBAIG1vZHVsZV9jbWRzIFwKICBtb2R1bGVfZXhwc3ltX2NtZHMgXAogIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAogIHByZWxpbmtfY21kcyBcCkBAIC05ODI1LDcgKzk3MjYsNyBAQAogIHBvc3RpbnN0YWxsX2NtZHMgXAogIHBvc3R1bmluc3RhbGxfY21kcyBcCiAgZmluaXNoX2NtZHMgXAotQEAgLTE4MjQ0LDcgKzE5MDk2LDggQEAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFggXAorQEAgLTE4MjczLDcgKzE5MTI1LDggQEAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFggXAogIG1vZHVsZV9jbWRzX0NYWCBcCiAgbW9kdWxlX2V4cHN5bV9jbWRzX0NYWCBcCiAgZXhwb3J0X3N5bWJvbHNfY21kc19DWFggXApAQCAtOTgzNSw3ICs5NzM2LDcgQEAKICAgICAgY2FzZSBcYGV2YWwgXFxcXFwkRUNITyBcXFxcIiJcXFxcXCRcJHZhciJcXFxcIlxgIGluCiAgICAgICpbXFxcXFxcXGBcXCJcXFwkXSopCiAgICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJcXFwkXCR2YXJcXCIgfCBcXFwkU0VEIC1lIFxcIlxcXCRkb3VibGVfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJHNlZF9xdW90ZV9zdWJzdFxcIiAtZSBcXCJcXFwkZGVsYXlfdmFyaWFibGVfc3Vic3RcXCJcXFxgXFxcXFxcIiIKLUBAIC0xOTAzNyw3ICsxOTg5MCw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKK0BAIC0xOTA2Niw3ICsxOTkxOSw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKICAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KICAjCiAgIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKQEAgLTk4NDUsNyArOTc0Niw3IEBACiAgIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKICAjCiAgIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgotQEAgLTE5MTQwLDE5ICsxOTk5NCw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKK0BAIC0xOTE2OSwxOSArMjAwMjMsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCiAgIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgogIE5MMlNQPSRsdF9sdF9OTDJTUAogIApAQCAtOTg4OSw3ICs5NzkwLDcgQEAKICAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgogIFNUUklQPSRsdF9TVFJJUAogIAotQEAgLTE5MTgyLDYgKzIwMDU5LDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCitAQCAtMTkyMTEsNiArMjAwODgsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKICAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgogIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAogIApAQCAtOTkwMiw3ICs5ODAzLDcgQEAKICAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KICBvYmpkaXI9JG9iamRpcgogIAotQEAgLTE5MTkxLDYgKzIwMDc0LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKK0BAIC0xOTIyMCw2ICsyMDEwMyw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECiAgIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KICBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCiAgCkBAIC05OTEyLDcgKzk4MTMsNyBAQAogICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KICBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKICAKLUBAIC0xOTMwNSwxMiArMjAxOTEsMTIgQEAgd2l0aF9nY2M9JEdDQworQEAgLTE5MzM0LDEyICsyMDIyMCwxMiBAQCB3aXRoX2djYz0kR0NDCiAgIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgogIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKICAKQEAgLTk5MjgsNyArOTgyOSw3IEBACiAgIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgogIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCiAgCi1AQCAtMTkzOTcsOSArMjAyODMsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCitAQCAtMTk0MjYsOSArMjAzMTIsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCiAgIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCiAgbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicwogIApAQCAtOTkzOCw3ICs5ODM5LDcgQEAKICAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scwogIAotQEAgLTE5NDE1LDYgKzIwMjk4LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKK0BAIC0xOTQ0NCw2ICsyMDMyNyw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCiAgIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KICBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcwogIApAQCAtOTk0OCw3ICs5ODQ5LDcgQEAKICAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KICBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKICAKLUBAIC0xOTQ2MSwyMTAgKzIwMzQ3LDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKK0BAIC0xOTQ5MCwyMTAgKzIwMzc2LDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKICAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KICAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCiAgICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPwpAQCAtMTAzMjIsNyArMTAyMjMsNyBAQAogICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQogICAgY2htb2QgK3ggIiRvZmlsZSIKICAKLUBAIC0xOTY5MiwxMiArMjA1MzcsMTIgQEAgd2l0aF9nY2M9JEdDQ19DWFgKK0BAIC0xOTcyMSwxMiArMjA1NjYsMTIgQEAgd2l0aF9nY2M9JEdDQ19DWFgKICAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCiAgbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZ19DWFgKICAKQEAgLTEwMzM4LDcgKzEwMjM5LDcgQEAKICAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCiAgbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYCiAgCi1AQCAtMTk3ODQsOSArMjA2MjksNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoX0NYWAorQEAgLTE5ODEzLDkgKzIwNjU4LDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aF9DWFgKICAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KICBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzX0NYWAogIApAQCAtMTAzNDgsNyArMTAyNDksNyBAQAogICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgogIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWAogIAotQEAgLTE5ODAyLDYgKzIwNjQ0LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXNfQ1hYCitAQCAtMTk4MzEsNiArMjA2NzMsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltc19DWFgKICAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgogIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzX0NYWAogIApAQCAtMTAzNTksNyArMTAyNjAsNyBAQAogIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlY19DWFgKICAKIGRpZmYgLS1naXQgYS9saWJ0b29sLm00IGIvbGlidG9vbC5tNAotaW5kZXggNGIyZDMwYS4uMDA4ZDMzMSAxMDA2NDQKK2luZGV4IDI0ZDEzZjMuLmU0NWZkYzYgMTAwNjQ0CiAtLS0gYS9saWJ0b29sLm00CiArKysgYi9saWJ0b29sLm00CiBAQCAtMSw3ICsxLDggQEAKQEAgLTE2NDUxLDcgKzE2MzUyLDcgQEAKICAJICAgICAgY2FzZSAiJHBlcm1fcnBhdGggIiBpbgogIAkgICAgICAqIiAkbGliZGlyICIqKSA7OwogLQkgICAgICAqKSBwZXJtX3JwYXRoPSIkcGVybV9ycGF0aCAkbGliZGlyIiA7OwotKwkgICAgICAqKSBmdW5jX2FwcGVkIHBlcm1fcnBhdGggIiAkbGliZGlyIiA7OworKwkgICAgICAqKSBmdW5jX2FwcGVuZCBwZXJtX3JwYXRoICIgJGxpYmRpciIgOzsKICAJICAgICAgZXNhYwogIAkgICAgZmkKICAJICBkb25lCkBAIC0xNzQ0MiwxMCArMTczNDMsMTAgQEAKICAjIFRoZXNlIGV4aXN0IGVudGlyZWx5IHRvIGZvb2wgYWNsb2NhbCB3aGVuIGJvb3RzdHJhcHBpbmcgbGlidG9vbC4KICAjCiBkaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9jb25maWd1cmUgYi9vcGNvZGVzL2NvbmZpZ3VyZQotaW5kZXggZWVkYjE4NC4uZDMwNzZlMSAxMDA3NTUKK2luZGV4IGY2MTU2MzQuLmEzNDA5ODMgMTAwNzU1CiAtLS0gYS9vcGNvZGVzL2NvbmZpZ3VyZQogKysrIGIvb3Bjb2Rlcy9jb25maWd1cmUKLUBAIC02NDgsNiArNjQ4LDkgQEAgT1RPT0wKK0BAIC02NDksNiArNjQ5LDkgQEAgT1RPT0wKICBMSVBPCiAgTk1FRElUCiAgRFNZTVVUSUwKQEAgLTE3NDU1LDcgKzE3MzU2LDcgQEAKICBPQkpEVU1QCiAgTE5fUwogIE5NCi1AQCAtNzYwLDYgKzc2Myw3IEBAIGVuYWJsZV9zdGF0aWMKK0BAIC03NjIsNiArNzY1LDcgQEAgZW5hYmxlX3N0YXRpYwogIHdpdGhfcGljCiAgZW5hYmxlX2Zhc3RfaW5zdGFsbAogIHdpdGhfZ251X2xkCkBAIC0xNzQ2Myw3ICsxNzM2NCw3IEBACiAgZW5hYmxlX2xpYnRvb2xfbG9jawogIGVuYWJsZV90YXJnZXRzCiAgZW5hYmxlX3dlcnJvcgotQEAgLTE0MjAsNiArMTQyNCw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorQEAgLTE0MjIsNiArMTQyNiw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgogICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQogICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQpAQCAtMTc0NzIsNyArMTczNzMsNyBAQAogIAogIFNvbWUgaW5mbHVlbnRpYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzOgogICAgQ0MgICAgICAgICAgQyBjb21waWxlciBjb21tYW5kCi1AQCAtNTExMCw4ICs1MTE2LDggQEAgZXNhYworQEAgLTUxMTQsOCArNTEyMCw4IEBAIGVzYWMKICAKICAKICAKQEAgLTE3NDgzLDcgKzE3Mzg0LDcgQEAKICAKICAKICAKLUBAIC01MTUxLDcgKzUxNTcsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworQEAgLTUxNTUsNyArNTE2MSw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1CiAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KICAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KQEAgLTE3NDkyLDcgKzE3MzkzLDcgQEAKICAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgogICAgRUNITz0ncHJpbnQgLXIgLS0nCiAgZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLUBAIC01ODM3LDggKzU4NDMsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OworQEAgLTU4NDEsOCArNTg0Nyw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7CiAgIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKICB4c2lfc2hlbGw9bm8KICAoIF9sdF9kdW1teT0iYS9iL2MiCkBAIC0xNzUwMyw3ICsxNzQwNCw3IEBACiAgICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKICAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKICAgICYmIHhzaV9zaGVsbD15ZXMKLUBAIC01ODg3LDYgKzU4OTMsODAgQEAgZXNhYworQEAgLTU4OTEsNiArNTg5Nyw4MCBAQCBlc2FjCiAgCiAgCiAgCkBAIC0xNzU4NCw3ICsxNzQ4NSw3IEBACiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKICAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9CiAgaWYgdGVzdCAiJHtsdF9jdl9sZF9yZWxvYWRfZmxhZytzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNTkwMyw2ICs1OTgzLDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCitAQCAtNTkwNyw2ICs1OTg3LDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCiAgZXNhYwogIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKICBjYXNlICRob3N0X29zIGluCkBAIC0xNzU5Niw3ICsxNzQ5Nyw3IEBACiAgICBkYXJ3aW4qKQogICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLUBAIC02MDcxLDcgKzYxNTYsOCBAQCBtaW5ndyogfCBwdzMyKikKK0BAIC02MDc1LDcgKzYxNjAsOCBAQCBtaW5ndyogfCBwdzMyKikKICAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKICAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCiAgICBlbHNlCkBAIC0xNzYwNiw3ICsxNzUwNyw3IEBACiAgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKICAgIGZpCiAgICA7OwotQEAgLTYyMjUsNiArNjMxMSwyMSBAQCBlc2FjCitAQCAtNjIyOSw2ICs2MzE1LDIxIEBAIGVzYWMKICBmaQogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQogICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQpAQCAtMTc2MjgsNyArMTc1MjksNyBAQAogIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAogIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAogIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotQEAgLTYyNDAsOSArNjM0MSwxNjIgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCitAQCAtNjI0NCw5ICs2MzQ1LDE2MiBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KICAKICAKICAKQEAgLTE3NzkzLDcgKzE3Njk0LDcgQEAKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CiAgaWYgdGVzdCAiJHthY19jdl9wcm9nX0FSK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC02MjU4LDcgKzY1MTIsNyBAQCBkbworQEAgLTYyNjIsNyArNjUxNiw3IEBAIGRvCiAgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KICAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KQEAgLTE3ODAyLDcgKzE3NzAzLDcgQEAKICAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICAgIGJyZWFrIDIKICAgIGZpCi1AQCAtNjI3OCwxMSArNjUzMiwxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQorQEAgLTYyODIsMTEgKzY1MzYsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KICBmaQogIAogIApAQCAtMTc4MjEsNyArMTc3MjIsNyBAQAogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KICBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTYyOTgsNyArNjU1Niw3IEBAIGRvCitAQCAtNjMwMiw3ICs2NTYwLDcgQEAgZG8KICAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwogICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgpAQCAtMTc4MzAsNyArMTc3MzEsNyBAQAogICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgICAgYnJlYWsgMgogICAgZmkKLUBAIC02MzE3LDYgKzY1NzUsMTAgQEAgZWxzZQorQEAgLTYzMjEsNiArNjU3OSwxMCBAQCBlbHNlCiAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KICBmaQogIApAQCAtMTc4NDEsNyArMTc3NDIsNyBAQAogICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCiAgICAgIEFSPSJmYWxzZSIKICAgIGVsc2UKLUBAIC02MzI4LDE2ICs2NTkwLDcyIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OworQEAgLTYzMzIsMTYgKzY1OTQsNzIgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7CiAgZXNhYwogICAgICBBUj0kYWNfY3RfQVIKICAgIGZpCkBAIC0xNzkxOCw3ICsxNzgxOSw3IEBACiAgCiAgCiAgCi1AQCAtNjY3OSw4ICs2OTk3LDggQEAgZXNhYworQEAgLTY2ODMsOCArNzAwMSw4IEBAIGVzYWMKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgogIAogICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcwpAQCAtMTc5MjksNyArMTc4MzAsNyBAQAogIAogICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgogIG9wdF9jcj0KLUBAIC02NzE2LDYgKzcwMzQsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCitAQCAtNjcyMCw2ICs3MDM4LDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbwogICAgZWxzZQogICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgogICAgZmkKQEAgLTE3OTM3LDcgKzE3ODM4LDcgQEAKICAKICAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgogICAgcGlwZV93b3Jrcz1ubwotQEAgLTY3NTcsNiArNzA3NiwxOCBAQCBfTFRfRU9GCitAQCAtNjc2MSw2ICs3MDgwLDE4IEBAIF9MVF9FT0YKICAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgogIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KICAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dApAQCAtMTc5NTYsNyArMTc4NTcsNyBAQAogICNpZmRlZiBfX2NwbHVzcGx1cwogIGV4dGVybiAiQyIgewogICNlbmRpZgotQEAgLTY3NjgsNyArNzA5OSw3IEBAIF9MVF9FT0YKK0BAIC02NzcyLDcgKzcxMDMsNyBAQCBfTFRfRU9GCiAgCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0CiAgCiAgLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLwpAQCAtMTc5NjUsNyArMTc4NjYsNyBAQAogICAgY29uc3QgY2hhciAqbmFtZTsKICAgIHZvaWQgICAgICAgKmFkZHJlc3M7CiAgfQotQEAgLTY3OTQsOCArNzEyNSw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7CitAQCAtNjc5OCw4ICs3MTI5LDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKICBfTFRfRU9GCiAgCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KICAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKQEAgLTE3OTc2LDcgKzE3ODc3LDcgQEAKICAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgogIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKICAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKLUBAIC02ODA1LDggKzcxMzYsOCBAQCBfTFRfRU9GCitAQCAtNjgwOSw4ICs3MTQwLDggQEAgX0xUX0VPRgogICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgCSAgICBwaXBlX3dvcmtzPXllcwogIAkgIGZpCkBAIC0xNzk4Nyw3ICsxNzg4OCw3IEBACiAgCWVsc2UKICAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKICAJZmkKLUBAIC02ODQzLDYgKzcxNzQsMTYgQEAgZWxzZQorQEAgLTY4NDcsNiArNzE3OCwxNiBAQCBlbHNlCiAgJGFzX2VjaG8gIm9rIiA+JjY7IH0KICBmaQogIApAQCAtMTgwMDQsNyArMTc5MDUsNyBAQAogIAogIAogIAotQEAgLTY4NjQsNiArNzIwNSw0NSBAQCBmaQorQEAgLTY4NjgsNiArNzIwOSw0NSBAQCBmaQogIAogIAogIApAQCAtMTgwNTAsNyArMTc5NTEsNyBAQAogICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1saWJ0b29sLWxvY2sgd2FzIGdpdmVuLgogIGlmIHRlc3QgIiR7ZW5hYmxlX2xpYnRvb2xfbG9jaytzZXR9IiA9IHNldDsgdGhlbiA6CiAgICBlbmFibGV2YWw9JGVuYWJsZV9saWJ0b29sX2xvY2s7Ci1AQCAtNzA3MCw2ICs3NDUwLDEyMyBAQCBlc2FjCitAQCAtNzA3NCw2ICs3NDU0LDEyMyBAQCBlc2FjCiAgCiAgbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCiAgCkBAIC0xODE3NCw3ICsxODA3NSw3IEBACiAgCiAgICBjYXNlICRob3N0X29zIGluCiAgICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCi1AQCAtNzYzMyw2ICs4MTMwLDggQEAgX0xUX0VPRgorQEAgLTc2MzcsNiArODEzNCw4IEBAIF9MVF9FT0YKICAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKICAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1CiAgICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQpAQCAtMTgxODMsNyArMTgwODQsNyBAQAogICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgogIGludCBtYWluKCkgeyByZXR1cm4gMDt9CiAgX0xUX0VPRgotQEAgLTc3OTgsNyArODI5Nyw4IEBAIGZpCitAQCAtNzgwMiw3ICs4MzAxLDggQEAgZmkKICBMSUJUT09MX0RFUFM9IiRsdG1haW4iCiAgCiAgIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KQEAgLTE4MTkzLDcgKzE4MDk0LDcgQEAKICAKICAKICAKLUBAIC03ODg3LDcgKzgzODcsNyBAQCBhaXgzKikKK0BAIC03ODkxLDcgKzgzOTEsNyBAQCBhaXgzKikKICBlc2FjCiAgCiAgIyBHbG9iYWwgdmFyaWFibGVzOgpAQCAtMTgyMDIsNyArMTgxMDMsNyBAQAogIGNhbl9idWlsZF9zaGFyZWQ9eWVzCiAgCiAgIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCi1AQCAtODE4NSw4ICs4Njg1LDYgQEAgZmkKK0BAIC04MTg5LDggKzg2ODksNiBAQCBmaQogIGx0X3Byb2dfY29tcGlsZXJfcGljPQogIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQogIApAQCAtMTgyMTEsNyArMTgxMTIsNyBAQAogIAogICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKLUBAIC04MzUyLDYgKzg4NTAsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KK0BAIC04MzU2LDYgKzg4NTQsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KICAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJwogIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCiAgCTs7CkBAIC0xODIyNCw3ICsxODEyNSw3IEBACiAgICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQogICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKICAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKLUBAIC04NDE0LDcgKzg5MTgsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorQEAgLTg0MTgsNyArODkyMiw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CiAgICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJwogICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgpAQCAtMTgyMzMsNyArMTgxMzQsNyBAQAogIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKICAgICAgICAqKQogIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7Ci1AQCAtODQ3MSwxMyArODk3NSwxNyBAQCBjYXNlICRob3N0X29zIGluCitAQCAtODQ3NSwxMyArODk3OSwxNyBAQCBjYXNlICRob3N0X29zIGluCiAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCiAgICAgIDs7CiAgZXNhYwpAQCAtMTgyNTcsNyArMTgxNTgsNyBAQAogIAogICMKICAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCi1AQCAtODUzOCw2ICs5MDQ2LDExIEBAIGZpCitAQCAtODU0Miw2ICs5MDUwLDExIEBAIGZpCiAgCiAgCiAgCkBAIC0xODI2OSw3ICsxODE3MCw3IEBACiAgIwogICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KICAjCi1AQCAtODg4OCw3ICs5NDAxLDggQEAgX0xUX0VPRgorQEAgLTg4OTIsNyArOTQwNSw4IEBAIF9MVF9FT0YKICAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAogICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubwogICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCkBAIC0xODI3OSw3ICsxODE4MCw3IEBACiAgCiAgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgogICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLUBAIC04OTg3LDEyICs5NTAxLDEyIEBAIF9MVF9FT0YKK0BAIC04OTkxLDEyICs5NTA1LDEyIEBAIF9MVF9FT0YKICAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKICAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQogIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJwpAQCAtMTgyOTQsNyArMTgxOTUsNyBAQAogIAkgIGZpCiAgCSAgOzsKICAJZXNhYwotQEAgLTkwMDYsOCArOTUyMCw4IEBAIF9MVF9FT0YKK0BAIC05MDEwLDggKzk1MjQsOCBAQCBfTFRfRU9GCiAgCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKICAJd2xhcmM9CiAgICAgICAgZWxzZQpAQCAtMTgzMDUsNyArMTgyMDYsNyBAQAogICAgICAgIGZpCiAgICAgICAgOzsKICAKLUBAIC05MDI1LDggKzk1MzksOCBAQCBfTFRfRU9GCitAQCAtOTAyOSw4ICs5NTQzLDggQEAgX0xUX0VPRgogIAogIF9MVF9FT0YKICAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KQEAgLTE4MzE2LDcgKzE4MjE3LDcgQEAKICAgICAgICBlbHNlCiAgCWxkX3NobGlicz1ubwogICAgICAgIGZpCi1AQCAtOTA3Miw4ICs5NTg2LDggQEAgX0xUX0VPRgorQEAgLTkwNzYsOCArOTU5MCw4IEBAIF9MVF9FT0YKICAKICAgICAgKikKICAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCkBAIC0xODMyNyw3ICsxODIyOCw3IEBACiAgICAgICAgZWxzZQogIAlsZF9zaGxpYnM9bm8KICAgICAgICBmaQotQEAgLTkyMDMsNyArOTcxNywxMyBAQCBfTFRfRU9GCitAQCAtOTIwNyw3ICs5NzIxLDEzIEBAIF9MVF9FT0YKICAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Jy1iZXJvaycKICAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgogICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgpAQCAtMTgzNDIsNyArMTgyNDMsNyBAQAogIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KICAKICBpbnQKLUBAIC05MjE2LDIyICs5NzM2LDI5IEBAIG1haW4gKCkKK0BAIC05MjIwLDIyICs5NzQwLDI5IEBAIG1haW4gKCkKICBfQUNFT0YKICBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CiAgCkBAIC0xODM4NSw3ICsxODI4Niw3IEBACiAgCiAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgogICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKLUBAIC05MjQzLDcgKzk3NzAsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtOTI0Nyw3ICs5Nzc0LDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQogIAllbHNlCiAgCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KICAJICMgZW1wdHkgZXhlY3V0YWJsZS4KQEAgLTE4NDAwLDcgKzE4MzAxLDcgQEAKICAvKiBlbmQgY29uZmRlZnMuaC4gICovCiAgCiAgaW50Ci1AQCAtOTI1NiwyMiArOTc4OSwyOSBAQCBtYWluICgpCitAQCAtOTI2MCwyMiArOTc5MywyOSBAQCBtYWluICgpCiAgX0FDRU9GCiAgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgogIApAQCAtMTg0NDMsNyArMTgzNDQsNyBAQAogIAogIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKICAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAotQEAgLTkzMTYsMjAgKzk4NTYsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtOTMyMCwyMCArOTg2MCw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKICAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgogICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKICAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgpAQCAtMTg1MjEsNyArMTg0MjIsNyBAQAogICAgICAgIDs7CiAgCiAgICAgIGRhcndpbiogfCByaGFwc29keSopCi1AQCAtOTM5MCw3ICs5OTczLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtOTM5NCw3ICs5OTc3LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCiAgCiAgICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KICAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQpAQCAtMTg1MzAsNyArMTg0MzEsNyBAQAogICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKICAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCiAgICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubwotQEAgLTkzOTgsNyArOTk4MSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTk0MDIsNyArOTk4NSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQogIAogICAgICBocHV4OSopCiAgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KQEAgLTE4NTM5LDcgKzE4NDQwLDcgQEAKICAgICAgICBlbHNlCiAgCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCiAgICAgICAgZmkKLUBAIC05NDE0LDcgKzk5OTcsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC05NDE4LDcgKzEwMDAxLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCiAgCiAgICAgIGhwdXgxMCopCiAgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCkBAIC0xODU0OCw3ICsxODQ0OSw3IEBACiAgICAgICAgZWxzZQogIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCiAgICAgICAgZmkKLUBAIC05NDM4LDEwICsxMDAyMSwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC05NDQyLDEwICsxMDAyNSwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKICAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogIAkgIDs7CiAgCWlhNjQqKQpAQCAtMTg1NjEsNyArMTg0NjIsNyBAQAogIAkgIDs7CiAgCWVzYWMKICAgICAgICBlbHNlCi1AQCAtOTUyMCwyMyArMTAxMDMsMzYgQEAgZmkKK0BAIC05NTI0LDIzICsxMDEwNywzNiBAQCBmaQogIAogICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCkBAIC0xODYwNiw3ICsxODUwNyw3IEBACiAgICAgICAgZWxzZQogIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLUBAIC05NjIxLDcgKzEwMjE3LDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCitAQCAtOTYyNSw3ICsxMDIyMSw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAogICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKICAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCkBAIC0xODYxNSw3ICsxODUxNiw3IEBACiAgCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKICAgICAgICBlbHNlCiAgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotQEAgLTk2NDAsOSArMTAyMzYsOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKK0BAIC05NjQ0LDkgKzEwMjQwLDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCiAgICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJwogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgCXdsYXJjPScke3dsfScKQEAgLTE4NjI3LDcgKzE4NTI4LDcgQEAKICAgICAgICBlbHNlCiAgCWNhc2UgYCRDQyAtViAyPiYxYCBpbgogIAkqIkNvbXBpbGVycyA1LjAiKikKLUBAIC0xMDIxOCw4ICsxMDgxNCw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKK0BAIC0xMDIyMiw4ICsxMDgxOCw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKICAgIG5lZWRfdmVyc2lvbj1ubwogICAgbmVlZF9saWJfcHJlZml4PW5vCiAgCkBAIC0xODYzOSw3ICsxODU0MCw3IEBACiAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCiAgICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKICAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci1AQCAtMTAyNTIsMTMgKzEwODQ5LDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKK0BAIC0xMDI1NiwxMyArMTA4NTMsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQogICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKICAgICAgICA7OwogICAgICBlc2FjCkBAIC0xODcxMiw3ICsxODYxMyw3IEBACiAgICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KICAgIHNobGlicGF0aF92YXI9UEFUSAogICAgOzsKLUBAIC0xMDM1MCw3ICsxMTAwNSw3IEBAIGhhaWt1KikKK0BAIC0xMDM1NCw3ICsxMTAwOSw3IEBAIGhhaWt1KikKICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCiAgICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAogICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwpAQCAtMTg3MjEsMTYgKzE4NjIyLDcgQEAKICAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKICAgIDs7CiAgCi1AQCAtMTExNDYsNyArMTE4MDEsNyBAQCBlbHNlCi0gICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCi0gICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKLS0jbGluZSAxMTE0OSAiY29uZmlndXJlIgotKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSAjaWYgSEFWRV9ETEZDTl9ICi1AQCAtMTExOTAsMTAgKzExODQ1LDEwIEBAIGVsc2UKK0BAIC0xMTE5NCwxMCArMTE4NDksMTAgQEAgZWxzZQogIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKICAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCiAgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCkBAIC0xODc0MywxNiArMTg2MzUsNyBAQAogIGludCBtYWluICgpCiAgewogICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTEyNTIsNyArMTE5MDcsNyBAQCBlbHNlCi0gICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCi0gICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKLS0jbGluZSAxMTI1NSAiY29uZmlndXJlIgotKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSAjaWYgSEFWRV9ETEZDTl9ICi1AQCAtMTEyOTYsMTAgKzExOTUxLDEwIEBAIGVsc2UKK0BAIC0xMTMwMCwxMCArMTE5NTUsMTAgQEAgZWxzZQogIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKICAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCiAgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCkBAIC0xODc2NSw3ICsxODY0OCw3IEBACiAgaW50IG1haW4gKCkKICB7CiAgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xMjQ2Miw3ICsxMzExNyw3IEBAIGlmIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9ICJ5ZXMiOyB0aGVuCitAQCAtMTI0OTksNyArMTMxNTQsNyBAQCBpZiB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSAieWVzIjsgdGhlbgogICMgc2luY2UgbGliYmZkIG1heSBub3QgcHVsbCBpbiB0aGUgZW50aXJldHkgb2YgbGliaWJlcnR5LgogICAgeD1gc2VkIC1uIC1lICdzL15bIAldKlBJQ0ZMQUdbIAldKj1bIAldKi8vcCcgPCAuLi9saWJpYmVydHkvTWFrZWZpbGUgfCBzZWQgLW4gJyRwJ2AKICAgIGlmIHRlc3QgLW4gIiR4IjsgdGhlbgpAQCAtMTg3NzQsNyArMTg2NTcsNyBAQAogICAgZmkKICAKICAgIGNhc2UgIiR7aG9zdH0iIGluCi1AQCAtMTM0MzYsMTMgKzE0MDkxLDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xMzQ3MywxMyArMTQxMjgsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwpAQCAtMTg3OTUsNyArMTg2NzgsNyBAQAogIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTM0NTcsMTQgKzE0MTE5LDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCitAQCAtMTM0OTQsMTQgKzE0MTU2LDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwpAQCAtMTg4MTQsNyArMTg2OTcsNyBAQAogIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTEzNDk3LDEyICsxNDE2MiwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQorQEAgLTEzNTM0LDEyICsxNDE5OSwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQogIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKQEAgLTE4ODI4LDcgKzE4NzExLDcgQEAKICBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTEzNTU3LDggKzE0MjIyLDEzIEBAIHJlbG9hZF9mbGFnIFwKK0BAIC0xMzU5NCw4ICsxNDI1OSwxMyBAQCByZWxvYWRfZmxhZyBcCiAgT0JKRFVNUCBcCiAgZGVwbGlic19jaGVja19tZXRob2QgXAogIGZpbGVfbWFnaWNfY21kIFwKQEAgLTE4ODQyLDcgKzE4NzI1LDcgQEAKICBTVFJJUCBcCiAgUkFOTElCIFwKICBDQyBcCi1AQCAtMTM1NjgsMTIgKzE0MjM4LDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAorQEAgLTEzNjA1LDEyICsxNDI3NSwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXApAQCAtMTg4NTgsNyArMTg3NDEsNyBAQAogIERTWU1VVElMIFwKICBOTUVESVQgXAogIExJUE8gXAotQEAgLTEzNTg5LDcgKzE0MjYxLDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAorQEAgLTEzNjI2LDcgKzE0Mjk4LDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAogIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAogIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAogIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXApAQCAtMTg4NjYsNyArMTg3NDksNyBAQAogIGV4Y2x1ZGVfZXhwc3ltcyBcCiAgaW5jbHVkZV9leHBzeW1zIFwKICBmaWxlX2xpc3Rfc3BlYyBcCi1AQCAtMTM2MjUsNiArMTQyOTYsNyBAQCBtb2R1bGVfY21kcyBcCitAQCAtMTM2NjIsNiArMTQzMzMsNyBAQCBtb2R1bGVfY21kcyBcCiAgbW9kdWxlX2V4cHN5bV9jbWRzIFwKICBleHBvcnRfc3ltYm9sc19jbWRzIFwKICBwcmVsaW5rX2NtZHMgXApAQCAtMTg4NzQsNyArMTg3NTcsNyBAQAogIHBvc3RpbnN0YWxsX2NtZHMgXAogIHBvc3R1bmluc3RhbGxfY21kcyBcCiAgZmluaXNoX2NtZHMgXAotQEAgLTE0MzgxLDcgKzE1MDUzLDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAorQEAgLTE0NDE4LDcgKzE1MDkwLDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAogICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgogICMKICAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LApAQCAtMTg4ODQsNyArMTg3NjcsNyBAQAogICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CiAgIwogICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KLUBAIC0xNDQ4NCwxOSArMTUxNTcsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCitAQCAtMTQ1MjEsMTkgKzE1MTk0LDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAogICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KICBOTDJTUD0kbHRfbHRfTkwyU1AKICAKQEAgLTE4OTI4LDcgKzE4ODExLDcgQEAKICAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgogIFNUUklQPSRsdF9TVFJJUAogIAotQEAgLTE0NTI2LDYgKzE1MjIyLDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCitAQCAtMTQ1NjMsNiArMTUyNTksMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKICAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgogIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAogIApAQCAtMTg5NDEsNyArMTg4MjQsNyBAQAogICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgogIG9iamRpcj0kb2JqZGlyCiAgCi1AQCAtMTQ1MzUsNiArMTUyMzcsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAorQEAgLTE0NTcyLDYgKzE1Mjc0LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKICAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPwogIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKICAKQEAgLTE4OTUxLDcgKzE4ODM0LDcgQEAKICAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCiAgRFNZTVVUSUw9JGx0X0RTWU1VVElMCiAgCi1AQCAtMTQ2NDksMTIgKzE1MzU0LDEyIEBAIHdpdGhfZ2NjPSRHQ0MKK0BAIC0xNDY4NiwxMiArMTUzOTEsMTIgQEAgd2l0aF9nY2M9JEdDQwogICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KICBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCiAgCkBAIC0xODk2Nyw3ICsxODg1MCw3IEBACiAgIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgogIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCiAgCi1AQCAtMTQ3NDEsOSArMTU0NDYsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCitAQCAtMTQ3NzgsOSArMTU0ODMsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCiAgIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCiAgbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicwogIApAQCAtMTg5NzcsNyArMTg4NjAsNyBAQAogICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgogIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCiAgCi1AQCAtMTQ3NTksNiArMTU0NjEsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcworQEAgLTE0Nzk2LDYgKzE1NDk4LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKICAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgogIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCiAgCkBAIC0xODk4Nyw3ICsxODg3MCw3IEBACiAgIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCiAgZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCiAgCi1AQCAtMTQ3OTEsMjEwICsxNTQ5NiwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCitAQCAtMTQ4MjgsMjEwICsxNTUzMywxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCiAgICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCiAgICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQogICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KQEAgLTE5MzYyLDcgKzE5MjQ1LDcgQEAKICAgIGNobW9kICt4ICIkb2ZpbGUiCiAgCiBkaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9jb25maWd1cmUuYWMgYi9vcGNvZGVzL2NvbmZpZ3VyZS5hYwotaW5kZXggMDdlMzE2Mi4uYzBjNzVkNCAxMDA2NDQKK2luZGV4IGM3ZjQ3ODMuLmYyZTAwMmQgMTAwNjQ0CiAtLS0gYS9vcGNvZGVzL2NvbmZpZ3VyZS5hYwogKysrIGIvb3Bjb2Rlcy9jb25maWd1cmUuYWMKIEBAIC0xNjcsNyArMTY3LDcgQEAgY2hhbmdlcXVvdGUoLClkbmwKQEAgLTE5Mzc1LDcgKzE5MjU4LDcgQEAKICAKICAgIGNhc2UgIiR7aG9zdH0iIGluCiBkaWZmIC0tZ2l0IGEvemxpYi9jb25maWd1cmUgYi96bGliL2NvbmZpZ3VyZQotaW5kZXggODM3ODg1Ny4uNzU4NDk0MCAxMDA3NTUKK2luZGV4IGJiYTlmZDIuLjI1YTJkYWUgMTAwNzU1CiAtLS0gYS96bGliL2NvbmZpZ3VyZQogKysrIGIvemxpYi9jb25maWd1cmUKIEBAIC02MTQsOCArNjE0LDExIEBAIE9UT09MCkBAIC0xOTM5MCw3ICsxOTI3Myw3IEBACiAgT0JKRFVNUAogIExOX1MKICBOTQotQEAgLTczNiw2ICs3MzksNyBAQCBlbmFibGVfc3RhdGljCitAQCAtNzM3LDYgKzc0MCw3IEBAIGVuYWJsZV9zdGF0aWMKICB3aXRoX3BpYwogIGVuYWJsZV9mYXN0X2luc3RhbGwKICB3aXRoX2dudV9sZApAQCAtMTkzOTgsNyArMTkyODEsNyBAQAogIGVuYWJsZV9saWJ0b29sX2xvY2sKICBlbmFibGVfaG9zdF9zaGFyZWQKICAnCi1AQCAtMTM4NCw2ICsxMzg4LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6CitAQCAtMTM4NSw2ICsxMzg5LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6CiAgICAtLXdpdGgtcGljICAgICAgICAgICAgICB0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBbZGVmYXVsdD11c2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdGhdCiAgICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dCkBAIC0xOTQwNyw3ICsxOTI5MCw3IEBACiAgCiAgU29tZSBpbmZsdWVudGlhbCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6CiAgICBDQyAgICAgICAgICBDIGNvbXBpbGVyIGNvbW1hbmQKLUBAIC0zOTA3LDggKzM5MTMsOCBAQCBlc2FjCitAQCAtMzkxMCw4ICszOTE2LDggQEAgZXNhYwogIAogIAogIApAQCAtMTk0MTgsNyArMTkzMDEsNyBAQAogIAogIAogIAotQEAgLTM5NDgsNyArMzk1NCw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCitAQCAtMzk1MSw3ICszOTU3LDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKICAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQogICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgpAQCAtMTk0MjcsNyArMTkzMTAsNyBAQAogICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCiAgICBFQ0hPPSdwcmludCAtciAtLScKICBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotQEAgLTQ3NjQsOCArNDc3MCw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7CitAQCAtNDc2Nyw4ICs0NzczLDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKICAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcwogIHhzaV9zaGVsbD1ubwogICggX2x0X2R1bW15PSJhL2IvYyIKQEAgLTE5NDM4LDcgKzE5MzIxLDcgQEAKICAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAogICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAogICAgJiYgeHNpX3NoZWxsPXllcwotQEAgLTQ4MTQsNiArNDgyMCw4MCBAQCBlc2FjCitAQCAtNDgxNyw2ICs0ODIzLDgwIEBAIGVzYWMKICAKICAKICAKQEAgLTE5NTE5LDcgKzE5NDAyLDcgQEAKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQogICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KICBpZiB0ZXN0ICIke2x0X2N2X2xkX3JlbG9hZF9mbGFnK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC00ODMwLDYgKzQ5MTAsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KK0BAIC00ODMzLDYgKzQ5MTMsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KICBlc2FjCiAgcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwogIGNhc2UgJGhvc3Rfb3MgaW4KQEAgLTE5NTMxLDcgKzE5NDE0LDcgQEAKICAgIGRhcndpbiopCiAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotQEAgLTQ5OTgsNyArNTA4Myw4IEBAIG1pbmd3KiB8IHB3MzIqKQorQEAgLTUwMDEsNyArNTA4Niw4IEBAIG1pbmd3KiB8IHB3MzIqKQogICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwogICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKICAgIGVsc2UKQEAgLTE5NTQxLDcgKzE5NDI0LDcgQEAKICAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJwogICAgZmkKICAgIDs7Ci1AQCAtNTE1Miw2ICs1MjM4LDIxIEBAIGVzYWMKK0BAIC01MTU1LDYgKzUyNDEsMjEgQEAgZXNhYwogIGZpCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1CiAgJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9CkBAIC0xOTU2Myw3ICsxOTQ0Niw3IEBACiAgZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCiAgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCiAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi1AQCAtNTE2Nyw5ICs1MjY4LDE2MyBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KK0BAIC01MTcwLDkgKzUyNzEsMTYzIEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgogIAogIAogIApAQCAtMTk3MjksNyArMTk2MTIsNyBAQAogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KICBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTUxODUsNyArNTQ0MCw3IEBAIGRvCitAQCAtNTE4OCw3ICs1NDQzLDcgQEAgZG8KICAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwogICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgpAQCAtMTk3MzgsNyArMTk2MjEsNyBAQAogICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgICAgYnJlYWsgMgogICAgZmkKLUBAIC01MjA1LDExICs1NDYwLDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9CitAQCAtNTIwOCwxMSArNTQ2MywxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQogIGZpCiAgCiAgCkBAIC0xOTc1Nyw3ICsxOTY0MCw3IEBACiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQogIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9BUitzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNTIyNSw3ICs1NDg0LDcgQEAgZG8KK0BAIC01MjI4LDcgKzU0ODcsNyBAQCBkbwogICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCiAgICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCkBAIC0xOTc2Niw3ICsxOTY0OSw3IEBACiAgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAgICBicmVhayAyCiAgICBmaQotQEAgLTUyNDQsNiArNTUwMywxMCBAQCBlbHNlCitAQCAtNTI0Nyw2ICs1NTA2LDEwIEBAIGVsc2UKICAkYXNfZWNobyAibm8iID4mNjsgfQogIGZpCiAgCkBAIC0xOTc3Nyw3ICsxOTY2MCw3IEBACiAgICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KICAgICAgQVI9ImZhbHNlIgogICAgZWxzZQotQEAgLTUyNTUsMTYgKzU1MTgsNzIgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7CitAQCAtNTI1OCwxNiArNTUyMSw3MiBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKICBlc2FjCiAgICAgIEFSPSRhY19jdF9BUgogICAgZmkKQEAgLTE5ODU0LDcgKzE5NzM3LDcgQEAKICAKICAKICAKLUBAIC01NjA2LDggKzU5MjUsOCBAQCBlc2FjCitAQCAtNTYwOSw4ICs1OTI4LDggQEAgZXNhYwogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCiAgCiAgIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCkBAIC0xOTg2NSw3ICsxOTc0OCw3IEBACiAgCiAgIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCiAgb3B0X2NyPQotQEAgLTU2NDMsNiArNTk2Miw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KK0BAIC01NjQ2LDYgKzU5NjUsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCiAgICBlbHNlCiAgICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCiAgICBmaQpAQCAtMTk4NzMsNyArMTk3NTYsNyBAQAogIAogICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCiAgICBwaXBlX3dvcmtzPW5vCi1AQCAtNTY4NCw2ICs2MDA0LDE4IEBAIF9MVF9FT0YKK0BAIC01Njg3LDYgKzYwMDcsMTggQEAgX0xUX0VPRgogICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCiAgCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgogIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0CkBAIC0xOTg5Miw3ICsxOTc3NSw3IEBACiAgI2lmZGVmIF9fY3BsdXNwbHVzCiAgZXh0ZXJuICJDIiB7CiAgI2VuZGlmCi1AQCAtNTY5NSw3ICs2MDI3LDcgQEAgX0xUX0VPRgorQEAgLTU2OTgsNyArNjAzMCw3IEBAIF9MVF9FT0YKICAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKICAKICAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCkBAIC0xOTkwMSw3ICsxOTc4NCw3IEBACiAgICBjb25zdCBjaGFyICpuYW1lOwogICAgdm9pZCAgICAgICAqYWRkcmVzczsKICB9Ci1AQCAtNTcyMSw4ICs2MDUzLDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKK0BAIC01NzI0LDggKzYwNTYsOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgewogIF9MVF9FT0YKICAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgogIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dApAQCAtMTk5MTIsNyArMTk3OTUsNyBAQAogIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCiAgCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgogIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQotQEAgLTU3MzIsOCArNjA2NCw4IEBAIF9MVF9FT0YKK0BAIC01NzM1LDggKzYwNjcsOCBAQCBfTFRfRU9GCiAgICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAJICAgIHBpcGVfd29ya3M9eWVzCiAgCSAgZmkKQEAgLTE5OTIzLDcgKzE5ODA2LDcgQEAKICAJZWxzZQogIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQogIAlmaQotQEAgLTU3NzAsNiArNjEwMiwxOSBAQCBlbHNlCitAQCAtNTc3Myw2ICs2MTA1LDE5IEBAIGVsc2UKICAkYXNfZWNobyAib2siID4mNjsgfQogIGZpCiAgCkBAIC0xOTk0Myw3ICsxOTgyNiw3IEBACiAgCiAgCiAgCi1AQCAtNTc5MCw2ICs2MTM1LDQxIEBAIGZpCitAQCAtNTc5Myw2ICs2MTM4LDQxIEBAIGZpCiAgCiAgCiAgCkBAIC0xOTk4NSw3ICsxOTg2OCw3IEBACiAgCiAgCiAgIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWxpYnRvb2wtbG9jayB3YXMgZ2l2ZW4uCi1AQCAtNjAwMSw2ICs2MzgxLDEyMyBAQCBlc2FjCitAQCAtNjAwNCw2ICs2Mzg0LDEyMyBAQCBlc2FjCiAgCiAgbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCiAgCkBAIC0yMDEwOSw3ICsxOTk5Miw3IEBACiAgCiAgICBjYXNlICRob3N0X29zIGluCiAgICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCi1AQCAtNjU2Nyw2ICs3MDY0LDggQEAgX0xUX0VPRgorQEAgLTY1NzAsNiArNzA2Nyw4IEBAIF9MVF9FT0YKICAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKICAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1CiAgICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQpAQCAtMjAxMTgsNyArMjAwMDEsNyBAQAogICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgogIGludCBtYWluKCkgeyByZXR1cm4gMDt9CiAgX0xUX0VPRgotQEAgLTcwMzAsNyArNzUyOSw4IEBAIGZpCitAQCAtNzAzMyw3ICs3NTMyLDggQEAgZmkKICBMSUJUT09MX0RFUFM9IiRsdG1haW4iCiAgCiAgIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KQEAgLTIwMTI4LDcgKzIwMDExLDcgQEAKICAKICAKICAKLUBAIC03MTE5LDcgKzc2MTksNyBAQCBhaXgzKikKK0BAIC03MTIyLDcgKzc2MjIsNyBAQCBhaXgzKikKICBlc2FjCiAgCiAgIyBHbG9iYWwgdmFyaWFibGVzOgpAQCAtMjAxMzcsNyArMjAwMjAsNyBAQAogIGNhbl9idWlsZF9zaGFyZWQ9eWVzCiAgCiAgIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCi1AQCAtNzQxNyw4ICs3OTE3LDYgQEAgZmkKK0BAIC03NDIwLDggKzc5MjAsNiBAQCBmaQogIGx0X3Byb2dfY29tcGlsZXJfcGljPQogIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQogIApAQCAtMjAxNDYsNyArMjAwMjksNyBAQAogIAogICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKLUBAIC03NTg0LDYgKzgwODIsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KK0BAIC03NTg3LDYgKzgwODUsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KICAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJwogIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCiAgCTs7CkBAIC0yMDE1OSw3ICsyMDA0Miw3IEBACiAgICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQogICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKICAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKLUBAIC03NjQ2LDcgKzgxNTAsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorQEAgLTc2NDksNyArODE1Myw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CiAgICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJwogICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgpAQCAtMjAxNjgsNyArMjAwNTEsNyBAQAogIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKICAgICAgICAqKQogIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7Ci1AQCAtNzcwMywxMyArODIwNywxNyBAQCBjYXNlICRob3N0X29zIGluCitAQCAtNzcwNiwxMyArODIxMCwxNyBAQCBjYXNlICRob3N0X29zIGluCiAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCiAgICAgIDs7CiAgZXNhYwpAQCAtMjAxOTIsNyArMjAwNzUsNyBAQAogIAogICMKICAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCi1AQCAtNzc3MCw2ICs4Mjc4LDExIEBAIGZpCitAQCAtNzc3Myw2ICs4MjgxLDExIEBAIGZpCiAgCiAgCiAgCkBAIC0yMDIwNCw3ICsyMDA4Nyw3IEBACiAgIwogICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KICAjCi1AQCAtODEyMCw3ICs4NjMzLDggQEAgX0xUX0VPRgorQEAgLTgxMjMsNyArODYzNiw4IEBAIF9MVF9FT0YKICAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAogICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubwogICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCkBAIC0yMDIxNCw3ICsyMDA5Nyw3IEBACiAgCiAgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgogICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLUBAIC04MjE5LDEyICs4NzMzLDEyIEBAIF9MVF9FT0YKK0BAIC04MjIyLDEyICs4NzM2LDEyIEBAIF9MVF9FT0YKICAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKICAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQogIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJwpAQCAtMjAyMjksNyArMjAxMTIsNyBAQAogIAkgIGZpCiAgCSAgOzsKICAJZXNhYwotQEAgLTgyMzgsOCArODc1Miw4IEBAIF9MVF9FT0YKK0BAIC04MjQxLDggKzg3NTUsOCBAQCBfTFRfRU9GCiAgCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKICAJd2xhcmM9CiAgICAgICAgZWxzZQpAQCAtMjAyNDAsNyArMjAxMjMsNyBAQAogICAgICAgIGZpCiAgICAgICAgOzsKICAKLUBAIC04MjU3LDggKzg3NzEsOCBAQCBfTFRfRU9GCitAQCAtODI2MCw4ICs4Nzc0LDggQEAgX0xUX0VPRgogIAogIF9MVF9FT0YKICAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KQEAgLTIwMjUxLDcgKzIwMTM0LDcgQEAKICAgICAgICBlbHNlCiAgCWxkX3NobGlicz1ubwogICAgICAgIGZpCi1AQCAtODMwNCw4ICs4ODE4LDggQEAgX0xUX0VPRgorQEAgLTgzMDcsOCArODgyMSw4IEBAIF9MVF9FT0YKICAKICAgICAgKikKICAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCkBAIC0yMDI2Miw3ICsyMDE0NSw3IEBACiAgICAgICAgZWxzZQogIAlsZF9zaGxpYnM9bm8KICAgICAgICBmaQotQEAgLTg0MzUsNyArODk0OSwxMyBAQCBfTFRfRU9GCitAQCAtODQzOCw3ICs4OTUyLDEzIEBAIF9MVF9FT0YKICAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Jy1iZXJvaycKICAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgogICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgpAQCAtMjAyNzcsNyArMjAxNjAsNyBAQAogICAgYXNfZm5fZXJyb3IgIkxpbmsgdGVzdHMgYXJlIG5vdCBhbGxvd2VkIGFmdGVyIEdDQ19OT19FWEVDVVRBQkxFUy4iICIkTElORU5PIiA1CiAgZmkKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci1AQCAtODQ1MSwyMiArODk3MSwyOSBAQCBtYWluICgpCitAQCAtODQ1NCwyMiArODk3NCwyOSBAQCBtYWluICgpCiAgX0FDRU9GCiAgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgogIApAQCAtMjAzMjAsNyArMjAyMDMsNyBAQAogIAogICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCi1AQCAtODQ3OCw3ICs5MDA1LDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTg0ODEsNyArOTAwOCwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKICAJZWxzZQogIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCiAgCSAjIGVtcHR5IGV4ZWN1dGFibGUuCkBAIC0yMDMzNSw3ICsyMDIxOCw3IEBACiAgICBhc19mbl9lcnJvciAiTGluayB0ZXN0cyBhcmUgbm90IGFsbG93ZWQgYWZ0ZXIgR0NDX05PX0VYRUNVVEFCTEVTLiIgIiRMSU5FTk8iIDUKICBmaQogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLUBAIC04NDk0LDIyICs5MDI3LDI5IEBAIG1haW4gKCkKK0BAIC04NDk3LDIyICs5MDMwLDI5IEBAIG1haW4gKCkKICBfQUNFT0YKICBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CiAgCkBAIC0yMDM3OCw3ICsyMDI2MSw3IEBACiAgCiAgCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgogIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCi1AQCAtODU1NCwyMCArOTA5NCw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC04NTU3LDIwICs5MDk3LDYzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQogICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCiAgICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwogICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCkBAIC0yMDQ1Niw3ICsyMDMzOSw3IEBACiAgICAgICAgOzsKICAKICAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLUBAIC04NjI4LDcgKzkyMTEsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC04NjMxLDcgKzkyMTQsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKICAKICAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgogICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCkBAIC0yMDQ2NSw3ICsyMDM0OCw3IEBACiAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwogICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKICAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCi1AQCAtODYzNiw3ICs5MjE5LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtODYzOSw3ICs5MjIyLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCiAgCiAgICAgIGhwdXg5KikKICAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgpAQCAtMjA0NzQsNyArMjAzNTcsNyBAQAogICAgICAgIGVsc2UKICAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKICAgICAgICBmaQotQEAgLTg2NTIsNyArOTIzNSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTg2NTUsNyArOTIzOCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQogIAogICAgICBocHV4MTAqKQogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgpAQCAtMjA0ODMsNyArMjAzNjYsNyBAQAogICAgICAgIGVsc2UKICAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwogICAgICAgIGZpCi1AQCAtODY3NiwxMCArOTI1OSwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC04Njc5LDEwICs5MjYyLDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQogIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAgCSAgOzsKICAJaWE2NCopCkBAIC0yMDQ5Niw3ICsyMDM3OSw3IEBACiAgCSAgOzsKICAJZXNhYwogICAgICAgIGVsc2UKLUBAIC04NzU4LDI2ICs5MzQxLDM5IEBAIGZpCitAQCAtODc2MSwyNiArOTM0NCwzOSBAQCBmaQogIAogICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCkBAIC0yMDU0NCw3ICsyMDQyNyw3IEBACiAgICAgICAgZWxzZQogIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLUBAIC04ODYyLDcgKzk0NTgsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKK0BAIC04ODY1LDcgKzk0NjEsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKICAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCiAgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwpAQCAtMjA1NTMsNyArMjA0MzYsNyBAQAogIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCiAgICAgICAgZWxzZQogIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLUBAIC04ODgxLDkgKzk0NzcsOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKK0BAIC04ODg0LDkgKzk0ODAsOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKICAgICAgICBub191bmRlZmluZWRfZmxhZz0nIC16IGRlZnMnCiAgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAJd2xhcmM9JyR7d2x9JwpAQCAtMjA1NjUsNyArMjA0NDgsNyBAQAogICAgICAgIGVsc2UKICAJY2FzZSBgJENDIC1WIDI+JjFgIGluCiAgCSoiQ29tcGlsZXJzIDUuMCIqKQotQEAgLTk0NTksOCArMTAwNTUsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCitAQCAtOTQ2Miw4ICsxMDA1OCw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKICAgIG5lZWRfdmVyc2lvbj1ubwogICAgbmVlZF9saWJfcHJlZml4PW5vCiAgCkBAIC0yMDU3Nyw3ICsyMDQ2MCw3IEBACiAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCiAgICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKICAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci1AQCAtOTQ5MywxMyArMTAwOTAsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorQEAgLTk0OTYsMTMgKzEwMDkzLDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKICAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCiAgICAgICAgOzsKICAgICAgZXNhYwpAQCAtMjA2NTAsNyArMjA1MzMsNyBAQAogICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCiAgICBzaGxpYnBhdGhfdmFyPVBBVEgKICAgIDs7Ci1AQCAtOTU5MSw3ICsxMDI0Niw3IEBAIGhhaWt1KikKK0BAIC05NTk0LDcgKzEwMjQ5LDcgQEAgaGFpa3UqKQogICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKICAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICiAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCkBAIC0yMDY1OSwxNiArMjA1NDIsMTYgQEAKICAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKICAgIDs7CiAgCi1AQCAtMTA0MDUsNyArMTEwNjAsNyBAQCBlbHNlCitAQCAtMTA0MDgsNyArMTEwNjMsNyBAQCBlbHNlCiAgICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCiAgICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgogICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKLS0jbGluZSAxMDQwOCAiY29uZmlndXJlIgorLSNsaW5lIDEwNDExICJjb25maWd1cmUiCiArI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgogICNpbmNsdWRlICJjb25mZGVmcy5oIgogIAogICNpZiBIQVZFX0RMRkNOX0gKLUBAIC0xMDQ0OSwxMCArMTExMDQsMTAgQEAgZWxzZQorQEAgLTEwNDUyLDEwICsxMTEwNywxMCBAQCBlbHNlCiAgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAogICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KICAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKQEAgLTIwNjgxLDE2ICsyMDU2NCwxNiBAQAogIGludCBtYWluICgpCiAgewogICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTA1MTEsNyArMTExNjYsNyBAQCBlbHNlCitAQCAtMTA1MTQsNyArMTExNjksNyBAQCBlbHNlCiAgICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCiAgICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgogICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKLS0jbGluZSAxMDUxNCAiY29uZmlndXJlIgorLSNsaW5lIDEwNTE3ICJjb25maWd1cmUiCiArI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgogICNpbmNsdWRlICJjb25mZGVmcy5oIgogIAogICNpZiBIQVZFX0RMRkNOX0gKLUBAIC0xMDU1NSwxMCArMTEyMTAsMTAgQEAgZWxzZQorQEAgLTEwNTU4LDEwICsxMTIxMywxMCBAQCBlbHNlCiAgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAogICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KICAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKQEAgLTIwNzAzLDcgKzIwNTg2LDcgQEAKICBpbnQgbWFpbiAoKQogIHsKICAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTExOTkwLDEzICsxMjY0NSwyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTE5OTMsMTMgKzEyNjQ4LDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKQEAgLTIwNzI0LDcgKzIwNjA3LDcgQEAKICBTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIFJBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTEyMDExLDE0ICsxMjY3MywxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQorQEAgLTEyMDE0LDE0ICsxMjY3NiwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKQEAgLTIwNzQzLDcgKzIwNjI2LDcgQEAKICBEU1lNVVRJTD0nYCRFQ0hPICIkRFNZTVVUSUwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIE5NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xMjA1MSwxMiArMTI3MTYsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKK0BAIC0xMjA1NCwxMiArMTI3MTksMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKICBoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCkBAIC0yMDc1Nyw3ICsyMDY0MCw3IEBACiAgZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xMjExMSw4ICsxMjc3NiwxMyBAQCByZWxvYWRfZmxhZyBcCitAQCAtMTIxMTQsOCArMTI3NzksMTMgQEAgcmVsb2FkX2ZsYWcgXAogIE9CSkRVTVAgXAogIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKICBmaWxlX21hZ2ljX2NtZCBcCkBAIC0yMDc3MSw3ICsyMDY1NCw3IEBACiAgU1RSSVAgXAogIFJBTkxJQiBcCiAgQ0MgXAotQEAgLTEyMTIyLDEyICsxMjc5MiwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKK0BAIC0xMjEyNSwxMiArMTI3OTUsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKQEAgLTIwNzg3LDcgKzIwNjcwLDcgQEAKICBEU1lNVVRJTCBcCiAgTk1FRElUIFwKICBMSVBPIFwKLUBAIC0xMjE0Myw3ICsxMjgxNSw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKK0BAIC0xMjE0Niw3ICsxMjgxOCw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKQEAgLTIwNzk1LDcgKzIwNjc4LDcgQEAKICBleGNsdWRlX2V4cHN5bXMgXAogIGluY2x1ZGVfZXhwc3ltcyBcCiAgZmlsZV9saXN0X3NwZWMgXAotQEAgLTEyMTc5LDYgKzEyODUwLDcgQEAgbW9kdWxlX2NtZHMgXAorQEAgLTEyMTgyLDYgKzEyODUzLDcgQEAgbW9kdWxlX2NtZHMgXAogIG1vZHVsZV9leHBzeW1fY21kcyBcCiAgZXhwb3J0X3N5bWJvbHNfY21kcyBcCiAgcHJlbGlua19jbWRzIFwKQEAgLTIwODAzLDcgKzIwNjg2LDcgQEAKICBwb3N0aW5zdGFsbF9jbWRzIFwKICBwb3N0dW5pbnN0YWxsX2NtZHMgXAogIGZpbmlzaF9jbWRzIFwKLUBAIC0xMjc2OCw3ICsxMzQ0MCw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKK0BAIC0xMjc3MSw3ICsxMzQ0Myw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKICAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KICAjCiAgIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKQEAgLTIwODEzLDcgKzIwNjk2LDcgQEAKICAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgogICMKICAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCi1AQCAtMTI4NzEsMTkgKzEzNTQ0LDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAorQEAgLTEyODc0LDE5ICsxMzU0Nyw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKICAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCiAgTkwyU1A9JGx0X2x0X05MMlNQCiAgCkBAIC0yMDg1Nyw3ICsyMDc0MCw3IEBACiAgIyBBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbS4KICBTVFJJUD0kbHRfU1RSSVAKICAKLUBAIC0xMjkxMyw2ICsxMzYwOSwxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcworQEAgLTEyOTE2LDYgKzEzNjEyLDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCiAgIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KICBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKICAKQEAgLTIwODcwLDcgKzIwNzUzLDcgQEAKICAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KICBvYmpkaXI9JG9iamRpcgogIAotQEAgLTEyOTIyLDYgKzEzNjI0LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKK0BAIC0xMjkyNSw2ICsxMzYyNyw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECiAgIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KICBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCiAgCkBAIC0yMDg4MCw3ICsyMDc2Myw3IEBACiAgIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgogIERTWU1VVElMPSRsdF9EU1lNVVRJTAogIAotQEAgLTEzMDM2LDEyICsxMzc0MSwxMiBAQCB3aXRoX2djYz0kR0NDCitAQCAtMTMwMzksMTIgKzEzNzQ0LDEyIEBAIHdpdGhfZ2NjPSRHQ0MKICAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCiAgbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZwogIApAQCAtMjA4OTYsNyArMjA3NzksNyBAQAogICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KICBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYwogIAotQEAgLTEzMTI4LDkgKzEzODMzLDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAorQEAgLTEzMTMxLDkgKzEzODM2LDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAogICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgogIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMKICAKQEAgLTIwOTA2LDcgKzIwNzg5LDcgQEAKICAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scwogIAotQEAgLTEzMTQ2LDYgKzEzODQ4LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKK0BAIC0xMzE0OSw2ICsxMzg1MSw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCiAgIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KICBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcwogIApAQCAtMjA5MTYsNyArMjA3OTksNyBAQAogICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgogIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYwogIAotQEAgLTEzMTc4LDIxMCArMTM4ODMsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgorQEAgLTEzMTgxLDIxMCArMTM4ODYsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgogICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgogICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KICAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/CkBAIC0yMTI5MSw1ICsyMTE3NCw0IEBACiAgICBjaG1vZCAreCAiJG9maWxlIgogIAogLS0gCi0yLjcuMQotCisyLjkuMApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA3LUFkZC10aGUtYXJtdjVlLWFyY2hpdGVjdHVyZS10by1iaW51dGlscy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNy1BZGQtdGhlLWFybXY1ZS1hcmNoaXRlY3R1cmUtdG8tYmludXRpbHMucGF0Y2gKaW5kZXggY2IzZjgzYi4uNzk1YWJmMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA3LUFkZC10aGUtYXJtdjVlLWFyY2hpdGVjdHVyZS10by1iaW51dGlscy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDctQWRkLXRoZS1hcm12NWUtYXJjaGl0ZWN0dXJlLXRvLWJpbnV0aWxzLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA0ZmY5ZGJlMTNmMzhlNGZlYTI0ZmJjYzk4NzljZjczNTJjMDU2MWZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA5NDc1YWVlOGE3MDJhYTUzMTczN2VjMTJkZmQ5MjhkNTI5NTFiYzg0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTozNzoxMCArMDAwMAotU3ViamVjdDogW1BBVENIIDA3LzE0XSBBZGQgdGhlIGFybXY1ZSBhcmNoaXRlY3R1cmUgdG8gYmludXRpbHMKK1N1YmplY3Q6IFtQQVRDSCAwNy8xM10gQWRkIHRoZSBhcm12NWUgYXJjaGl0ZWN0dXJlIHRvIGJpbnV0aWxzCiAKIEJpbnV0aWxzIGhhcyBhIGNvbW1lbnQgdGhhdCBpbmRpY2F0ZXMgaXQgaXMgc3VwcG9zZWQgdG8gbWF0Y2ggZ2NjIGZvcgogYWxsIG9mIHRoZSBzdXBwb3J0ICItbWFyY2g9IiBzZXR0aW5ncywgYnV0IGl0IHdhcyBsYWNraW5nIHRoZSBhcm12NWUgc2V0dGluZy4KQEAgLTE5LDEwICsxOSwxMCBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQogCiBkaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZy90Yy1hcm0uYyBiL2dhcy9jb25maWcvdGMtYXJtLmMKLWluZGV4IDNiZDRiYzkuLjVkOTk5MjEgMTAwNjQ0CitpbmRleCA3M2QwNTMxLi40YjllMzJmIDEwMDY0NAogLS0tIGEvZ2FzL2NvbmZpZy90Yy1hcm0uYwogKysrIGIvZ2FzL2NvbmZpZy90Yy1hcm0uYwotQEAgLTI0NzkxLDYgKzI0NzkxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhcm1fYXJjaF9vcHRpb25fdGFibGUgYXJtX2FyY2hzW10gPQorQEAgLTI1NDIxLDYgKzI1NDIxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhcm1fYXJjaF9vcHRpb25fdGFibGUgYXJtX2FyY2hzW10gPQogICAgQVJNX0FSQ0hfT1BUICgiYXJtdjR0IiwJQVJNX0FSQ0hfVjRULAkgRlBVX0FSQ0hfRlBBKSwKICAgIEFSTV9BUkNIX09QVCAoImFybXY0dHhtIiwJQVJNX0FSQ0hfVjRUeE0sCSBGUFVfQVJDSF9GUEEpLAogICAgQVJNX0FSQ0hfT1BUICgiYXJtdjUiLAlBUk1fQVJDSF9WNSwJIEZQVV9BUkNIX1ZGUCksCkBAIC0zMSw1ICszMSw1IEBACiAgICBBUk1fQVJDSF9PUFQgKCJhcm12NXR4bSIsCUFSTV9BUkNIX1Y1VHhNLAkgRlBVX0FSQ0hfVkZQKSwKICAgIEFSTV9BUkNIX09QVCAoImFybXY1dGUiLAlBUk1fQVJDSF9WNVRFLAkgRlBVX0FSQ0hfVkZQKSwKIC0tIAotMi43LjEKKzIuOS4wCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwOC1kb24tdC1sZXQtdGhlLWRpc3Ryby1jb21waWxlci1wb2ludC10by10aGUtd3JvbmctaW5zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA4LWRvbi10LWxldC10aGUtZGlzdHJvLWNvbXBpbGVyLXBvaW50LXRvLXRoZS13cm9uZy1pbnMucGF0Y2gKaW5kZXggZjgzODJmOC4uYWY1MjRjZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA4LWRvbi10LWxldC10aGUtZGlzdHJvLWNvbXBpbGVyLXBvaW50LXRvLXRoZS13cm9uZy1pbnMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA4LWRvbi10LWxldC10aGUtZGlzdHJvLWNvbXBpbGVyLXBvaW50LXRvLXRoZS13cm9uZy1pbnMucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGNiMzZkOTRkYmQ1MjE3NTJlNjQ0NDQxOGFmNTAwZTEzOWEyNmVhYmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGIyZDI3NzkzN2QxMWYxY2UxZDU4MWY0OGZmNzRhMjU4MjJhMDUyZGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjM5OjAxICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDgvMTRdIGRvbid0IGxldCB0aGUgZGlzdHJvIGNvbXBpbGVyIHBvaW50IHRvIHRoZSB3cm9uZworU3ViamVjdDogW1BBVENIIDA4LzEzXSBkb24ndCBsZXQgdGhlIGRpc3RybyBjb21waWxlciBwb2ludCB0byB0aGUgd3JvbmcKICBpbnN0YWxsYXRpb24gbG9jYXRpb24KIAogVGhhbmtzIHRvIFJQIGZvciBoZWxwaW5nIGZpbmQgdGhlIHNvdXJjZSBjb2RlIGNhdXNpbmcgdGhlIGlzc3VlLgpAQCAtMTcsNyArMTcsNyBAQAogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2xpYmliZXJ0eS9NYWtlZmlsZS5pbiBiL2xpYmliZXJ0eS9NYWtlZmlsZS5pbgotaW5kZXggN2Q3ZTJmNC4uMWFhYWYwZSAxMDA2NDQKK2luZGV4IGM3YTQ1NjguLmY3NjZiNzIgMTAwNjQ0CiAtLS0gYS9saWJpYmVydHkvTWFrZWZpbGUuaW4KICsrKyBiL2xpYmliZXJ0eS9NYWtlZmlsZS5pbgogQEAgLTM2NCw3ICszNjQsOCBAQCBpbnN0YWxsLXN0cmlwOiBpbnN0YWxsCkBAIC0zMSw1ICszMSw1IEBACiAgCWlmIHRlc3QgLW4gIiR7dGFyZ2V0X2hlYWRlcl9kaXJ9IjsgdGhlbiBcCiAgCQkke21raW5zdGFsbGRpcnN9ICQoREVTVERJUikkKGxpYmRpcikvJChNVUxUSU9TRElSKTsgXAogLS0gCi0yLjcuMQorMi45LjAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA5LXdhcm4tZm9yLXVzZXMtb2Ytc3lzdGVtLWRpcmVjdG9yaWVzLXdoZW4tY3Jvc3MtbGlua2kucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDktd2Fybi1mb3ItdXNlcy1vZi1zeXN0ZW0tZGlyZWN0b3JpZXMtd2hlbi1jcm9zcy1saW5raS5wYXRjaAppbmRleCBkM2Y1MTBiLi4zYzgzZTY5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDktd2Fybi1mb3ItdXNlcy1vZi1zeXN0ZW0tZGlyZWN0b3JpZXMtd2hlbi1jcm9zcy1saW5raS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDktd2Fybi1mb3ItdXNlcy1vZi1zeXN0ZW0tZGlyZWN0b3JpZXMtd2hlbi1jcm9zcy1saW5raS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gNGRhYTg0MWNlMTZiYTUyYjcxN2JkZmY5ZWIxZGZjNGYxOTYzODgxNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gN2FiOGUzMTg2NTllYjVkOWFkYzc1OGM3OGQwODRhOTU1NjBiOTNmZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBGcmksIDE1IEphbiAyMDE2IDA2OjMxOjA5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDkvMTRdIHdhcm4gZm9yIHVzZXMgb2Ygc3lzdGVtIGRpcmVjdG9yaWVzIHdoZW4gY3Jvc3MgbGlua2luZworU3ViamVjdDogW1BBVENIIDA5LzEzXSB3YXJuIGZvciB1c2VzIG9mIHN5c3RlbSBkaXJlY3RvcmllcyB3aGVuIGNyb3NzIGxpbmtpbmcKIAogMjAwOC0wNy0wMiAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CiAKQEAgLTYzLDEwICs2MywxMCBAQAogIDkgZmlsZXMgY2hhbmdlZCwgODYgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvbGQvY29uZmlnLmluIGIvbGQvY29uZmlnLmluCi1pbmRleCAyNzZmYjc3Li4zNWM1OGViIDEwMDY0NAoraW5kZXggMmM2ZDY5OC4uZDNjYjdlOCAxMDA2NDQKIC0tLSBhL2xkL2NvbmZpZy5pbgogKysrIGIvbGQvY29uZmlnLmluCi1AQCAtMTQsNiArMTQsOSBAQAorQEAgLTE3LDYgKzE3LDkgQEAKICAgICBsYW5ndWFnZSBpcyByZXF1ZXN0ZWQuICovCiAgI3VuZGVmIEVOQUJMRV9OTFMKICAKQEAgLTc3LDEwICs3NywxMCBAQAogICN1bmRlZiBFWFRSQV9TSExJQl9FWFRFTlNJT04KICAKIGRpZmYgLS1naXQgYS9sZC9jb25maWd1cmUgYi9sZC9jb25maWd1cmUKLWluZGV4IGViNGYwZDcuLmU5MDU0YjQgMTAwNzU1CitpbmRleCAzZGYxMTQ5Li4wNjAxYzk4IDEwMDc1NQogLS0tIGEvbGQvY29uZmlndXJlCiArKysgYi9sZC9jb25maWd1cmUKLUBAIC03OTAsNiArNzkwLDcgQEAgd2l0aF9saWJfcGF0aAorQEAgLTc5Miw2ICs3OTIsNyBAQCB3aXRoX2xpYl9wYXRoCiAgZW5hYmxlX3RhcmdldHMKICBlbmFibGVfNjRfYml0X2JmZAogIHdpdGhfc3lzcm9vdApAQCAtODgsNyArODgsNyBAQAogIGVuYWJsZV9nb2xkCiAgZW5hYmxlX2dvdAogIGVuYWJsZV9jb21wcmVzc2VkX2RlYnVnX3NlY3Rpb25zCi1AQCAtMTQ0Niw2ICsxNDQ3LDggQEAgT3B0aW9uYWwgRmVhdHVyZXM6CitAQCAtMTQ0OSw2ICsxNDUwLDggQEAgT3B0aW9uYWwgRmVhdHVyZXM6CiAgICAtLWRpc2FibGUtbGFyZ2VmaWxlICAgICBvbWl0IHN1cHBvcnQgZm9yIGxhcmdlIGZpbGVzCiAgICAtLWVuYWJsZS10YXJnZXRzICAgICAgICBhbHRlcm5hdGl2ZSB0YXJnZXQgY29uZmlndXJhdGlvbnMKICAgIC0tZW5hYmxlLTY0LWJpdC1iZmQgICAgIDY0LWJpdCBzdXBwb3J0IChvbiBob3N0cyB3aXRoIG5hcnJvd2VyIHdvcmQgc2l6ZXMpCkBAIC05Nyw3ICs5Nyw3IEBACiAgICAtLWVuYWJsZS1nb2xkWz1BUkddICAgICBidWlsZCBnb2xkIFtBUkc9e2RlZmF1bHQseWVzLG5vfV0KICAgIC0tZW5hYmxlLWdvdD08dHlwZT4gICAgIEdPVCBoYW5kbGluZyBzY2hlbWUgKHRhcmdldCwgc2luZ2xlLCBuZWdhdGl2ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpZ290KQotQEAgLTE2MzA2LDYgKzE2MzA5LDE5IEBAIGZpCitAQCAtMTYzMTMsNiArMTYzMTYsMTkgQEAgZmkKICAKICAKICAKQEAgLTExOCw3ICsxMTgsNyBAQAogIGlmIHRlc3QgIiR7ZW5hYmxlX2dvbGQrc2V0fSIgPSBzZXQ7IHRoZW4gOgogICAgZW5hYmxldmFsPSRlbmFibGVfZ29sZDsgY2FzZSAiJHtlbmFibGV2YWx9IiBpbgogZGlmZiAtLWdpdCBhL2xkL2NvbmZpZ3VyZS5hYyBiL2xkL2NvbmZpZ3VyZS5hYwotaW5kZXggZTI4ZjM4ZS4uN2I0NzRlNyAxMDA2NDQKK2luZGV4IGQxNzI4MWYuLjlmYjNkYjkgMTAwNjQ0CiAtLS0gYS9sZC9jb25maWd1cmUuYWMKICsrKyBiL2xkL2NvbmZpZ3VyZS5hYwogQEAgLTk1LDYgKzk1LDE2IEBAIEFDX1NVQlNUKHVzZV9zeXNyb290KQpAQCAtMTM5LDEwICsxMzksMTAgQEAKICBkbmwgImluc3RhbGxfYXNfZGVmYXVsdCIgaXMgc2V0IHRvIGZhbHNlIGlmIGdvbGQgaXMgdGhlIGRlZmF1bHQgbGlua2VyLgogIGRubCAiaW5zdGFsbGVkX2xpbmtlciIgaXMgdGhlIGluc3RhbGxlZCBCRkQgbGlua2VyIG5hbWUuCiBkaWZmIC0tZ2l0IGEvbGQvbGQuaCBiL2xkL2xkLmgKLWluZGV4IGQ4NGVjNGUuLjM0NzZiMjYgMTAwNjQ0CitpbmRleCA4NWE0OGFkLi5hOGZkZGRmIDEwMDY0NAogLS0tIGEvbGQvbGQuaAogKysrIGIvbGQvbGQuaAotQEAgLTE2NCw2ICsxNjQsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgeworQEAgLTE2OSw2ICsxNjksMTQgQEAgdHlwZWRlZiBzdHJ1Y3QKICAgIC8qIElmIHNldCwgZGlzcGxheSB0aGUgdGFyZ2V0IG1lbW9yeSB1c2FnZSAocGVyIG1lbW9yeSByZWdpb24pLiAgKi8KICAgIGJmZF9ib29sZWFuIHByaW50X21lbW9yeV91c2FnZTsKICAKQEAgLTE1OCwxMCArMTU4LDEwIEBACiAgICBlbnVtIGVuZGlhbl9lbnVtIGVuZGlhbjsKICAKIGRpZmYgLS1naXQgYS9sZC9sZC50ZXhpbmZvIGIvbGQvbGQudGV4aW5mbwotaW5kZXggMjM4OTY2MS4uZDA2MTEyYiAxMDA2NDQKK2luZGV4IGJjMTY3NjQuLjgzOGM3NWQgMTAwNjQ0CiAtLS0gYS9sZC9sZC50ZXhpbmZvCiArKysgYi9sZC9sZC50ZXhpbmZvCi1AQCAtMjMzOCw2ICsyMzM4LDE4IEBAIHN0cmluZyBpZGVudGlmeWluZyB0aGUgb3JpZ2luYWwgbGlua2VkIGZpbGUgZG9lcyBub3QgY2hhbmdlLgorQEAgLTIzNTcsNiArMjM1NywxOCBAQCBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIG9yaWdpbmFsIGxpbmtlZCBmaWxlIGRvZXMgbm90IGNoYW5nZS4KICAKICBQYXNzaW5nIEBjb2Rle25vbmV9IGZvciBAdmFye3N0eWxlfSBkaXNhYmxlcyB0aGUgc2V0dGluZyBmcm9tIGFueQogIEBjb2Rley0tYnVpbGQtaWR9IG9wdGlvbnMgZWFybGllciBvbiB0aGUgY29tbWFuZCBsaW5lLgpAQCAtMTgxLDcgKzE4MSw3IEBACiAgCiAgQGMgbWFuIGVuZAogZGlmZiAtLWdpdCBhL2xkL2xkZmlsZS5jIGIvbGQvbGRmaWxlLmMKLWluZGV4IDk2ZjllY2MuLmFmMjMxYzAgMTAwNjQ0CitpbmRleCBlMzk3NzM3Li4wMTM3MjdiIDEwMDY0NAogLS0tIGEvbGQvbGRmaWxlLmMKICsrKyBiL2xkL2xkZmlsZS5jCiBAQCAtMTE0LDYgKzExNCwyMyBAQCBsZGZpbGVfYWRkX2xpYnJhcnlfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgYmZkX2Jvb2xlYW4gY21kbGluZSkKQEAgLTIwOSw3ICsyMDksNyBAQAogIAogIC8qIFRyeSB0byBvcGVuIGEgQkZEIGZvciBhIGxhbmdfaW5wdXRfc3RhdGVtZW50LiAgKi8KIGRpZmYgLS1naXQgYS9sZC9sZGxleC5oIGIvbGQvbGRsZXguaAotaW5kZXggNmYxMWU3Yi4uMGNhMzExMCAxMDA2NDQKK2luZGV4IGNmOTQzZTQuLjEyY2ZjYWEgMTAwNjQ0CiAtLS0gYS9sZC9sZGxleC5oCiArKysgYi9sZC9sZGxleC5oCiBAQCAtMTQ0LDYgKzE0NCw4IEBAIGVudW0gb3B0aW9uX3ZhbHVlcwpAQCAtMjIyLDcgKzIyMiw3IEBACiAgCiAgLyogVGhlIGluaXRpYWwgcGFyc2VyIHN0YXRlcy4gICovCiBkaWZmIC0tZ2l0IGEvbGQvbGRtYWluLmMgYi9sZC9sZG1haW4uYwotaW5kZXggYmIwYjljYy4uYTIzYzU2YyAxMDA2NDQKK2luZGV4IGU3YThkZmYuLjNjY2YyYWYgMTAwNjQ0CiAtLS0gYS9sZC9sZG1haW4uYwogKysrIGIvbGQvbGRtYWluLmMKIEBAIC0yNTcsNiArMjU3LDggQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQpAQCAtMjM1LDcgKzIzNSw3IEBACiAgICAvKiBXZSBpbml0aWFsaXplIERFTUFOR0xJTkcgYmFzZWQgb24gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCiAgICAgICBDT0xMRUNUX05PX0RFTUFOR0xFLiAgVGhlIGdjYyBjb2xsZWN0MiBwcm9ncmFtIHdpbGwgZGVtYW5nbGUgdGhlCiBkaWZmIC0tZ2l0IGEvbGQvbGV4c3VwLmMgYi9sZC9sZXhzdXAuYwotaW5kZXggZTJmYjIxMi4uYTIwNjRmMSAxMDA2NDQKK2luZGV4IDZkMjhlOTEuLjVjOWRhNTcgMTAwNjQ0CiAtLS0gYS9sZC9sZXhzdXAuYwogKysrIGIvbGQvbGV4c3VwLmMKIEBAIC01MzAsNiArNTMwLDE0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbGRfb3B0aW9uIGxkX29wdGlvbnNbXSA9CkBAIC0yNjksNSArMjY5LDUgQEAKICAgICAgfQogIAogLS0gCi0yLjcuMQorMi45LjAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEwLUZpeC1ycGF0aC1pbi1saWJ0b29sLXdoZW4tc3lzcm9vdC1pcy1lbmFibGVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEwLUZpeC1ycGF0aC1pbi1saWJ0b29sLXdoZW4tc3lzcm9vdC1pcy1lbmFibGVkLnBhdGNoCmluZGV4IDQwNzQyNDEuLmUyZjZhNTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMC1GaXgtcnBhdGgtaW4tbGlidG9vbC13aGVuLXN5c3Jvb3QtaXMtZW5hYmxlZC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTAtRml4LXJwYXRoLWluLWxpYnRvb2wtd2hlbi1zeXNyb290LWlzLWVuYWJsZWQucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGJiOWViMDk0MTFkZGNlZjUxNWYwZjdhZDdjMjkyMTRiMDc2NmU5NjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDI3ZmM3YTQ5MjdhYjkyOTI1YTViZTg0MjE3OTU5ZDlmMWM4MDhjY2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjQyOjM4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTAvMTRdIEZpeCBycGF0aCBpbiBsaWJ0b29sIHdoZW4gc3lzcm9vdCBpcyBlbmFibGVkCitTdWJqZWN0OiBbUEFUQ0ggMTAvMTNdIEZpeCBycGF0aCBpbiBsaWJ0b29sIHdoZW4gc3lzcm9vdCBpcyBlbmFibGVkCiAKIEVuYWJsaW5nIHN5c3Jvb3Qgc3VwcG9ydCBpbiBsaWJ0b29sIGV4cG9zZWQgYSBidWcgd2hlcmUgdGhlIGZpbmFsCiBsaWJyYXJ5IGhhZCBhbiBSUEFUSCBlbmNvZGVkIGludG8gaXQgd2hpY2ggc3RpbGwgcG9pbnRlZCB0byB0aGUKQEAgLTQ4LDUgKzQ4LDUgQEAKICAJICAgIGlmIHRlc3QgLXogIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgogIAkgICAgICBoYXJkY29kZV9saWJkaXJzPSIkbGliZGlyIgogLS0gCi0yLjcuMQorMi45LjAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDExLUNoYW5nZS1kZWZhdWx0LWVtdWxhdGlvbi1mb3ItbWlwczY0LWxpbnV4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDExLUNoYW5nZS1kZWZhdWx0LWVtdWxhdGlvbi1mb3ItbWlwczY0LWxpbnV4LnBhdGNoCmluZGV4IGMwZDJkNzEuLjNmZGI1ZWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMS1DaGFuZ2UtZGVmYXVsdC1lbXVsYXRpb24tZm9yLW1pcHM2NC1saW51eC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTEtQ2hhbmdlLWRlZmF1bHQtZW11bGF0aW9uLWZvci1taXBzNjQtbGludXgucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGFmMWI0ZWU2OWI0ZmQ2MTdiODgxMjdlZDQwYzNjYTczNTFhOTUzMmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDZiMDE4ZTgxMjkyOThkYmQ1YjcxNGU0NTllZjBiM2FlZjViYmNlMTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjQ0OjE0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTEvMTRdIENoYW5nZSBkZWZhdWx0IGVtdWxhdGlvbiBmb3IgbWlwczY0Ki0qLWxpbnV4CitTdWJqZWN0OiBbUEFUQ0ggMTEvMTNdIENoYW5nZSBkZWZhdWx0IGVtdWxhdGlvbiBmb3IgbWlwczY0Ki0qLWxpbnV4CiAKIHdlIGNoYW5nZSB0aGUgZGVmYXVsdCBlbXVsYXRpb25zIHRvIGJlIE42NCBpbnN0ZWFkIG9mIE4zMgogCkBAIC0xNCwxMCArMTQsMTAgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2JmZC9jb25maWcuYmZkIGIvYmZkL2NvbmZpZy5iZmQKLWluZGV4IGM1Njg4Y2IuLjVjMjdiNDkgMTAwNjQ0CitpbmRleCBiOTk4ODMwLi5hYjE3ZTcyIDEwMDY0NAogLS0tIGEvYmZkL2NvbmZpZy5iZmQKICsrKyBiL2JmZC9jb25maWcuYmZkCi1AQCAtMTA4NywxMiArMTA4NywxMiBAQCBjYXNlICIke3Rhcmd9IiBpbgorQEAgLTExMDEsMTIgKzExMDEsMTIgQEAgY2FzZSAiJHt0YXJnfSIgaW4KICAgICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX2xlX3ZlYyBtaXBzX2VsZjY0X2JlX3ZlYyBtaXBzX2VsZjY0X2xlX3ZlYyBtaXBzX2Vjb2ZmX2JlX3ZlYyBtaXBzX2Vjb2ZmX2xlX3ZlYyIKICAgICAgOzsKICAgIG1pcHM2NCplbC0qLWxpbnV4KikKQEAgLTM1LDEwICszNSwxMCBAQAogICAgbWlwcyplbC0qLWxpbnV4KikKICAgICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGYzMl90cmFkX2xlX3ZlYwogZGlmZiAtLWdpdCBhL2xkL2NvbmZpZ3VyZS50Z3QgYi9sZC9jb25maWd1cmUudGd0Ci1pbmRleCA2YjZiYmYyLi5iNDViMWU1IDEwMDY0NAoraW5kZXggYTNkYjkwOS4uMjEyMzI3YyAxMDA2NDQKIC0tLSBhL2xkL2NvbmZpZ3VyZS50Z3QKICsrKyBiL2xkL2NvbmZpZ3VyZS50Z3QKLUBAIC01MDksMTEgKzUwOSwxMSBAQCBtaXBzKmVsLSotdnh3b3JrcyopCXRhcmdfZW11bD1lbGYzMmVsbWlwdnh3b3JrcworQEAgLTUxMywxMSArNTEzLDExIEBAIG1pcHMqZWwtKi12eHdvcmtzKikJdGFyZ19lbXVsPWVsZjMyZWxtaXB2eHdvcmtzCiAgbWlwcyotKi12eHdvcmtzKikJdGFyZ19lbXVsPWVsZjMyZWJtaXB2eHdvcmtzCiAgCQkgICAgICAgIHRhcmdfZXh0cmFfZW11bHM9ImVsZjMyZWxtaXB2eHdvcmtzIiA7OwogIG1pcHMqLSotd2luZGlzcykJdGFyZ19lbXVsPWVsZjMybWlwc3dpbmRpc3MgOzsKQEAgLTU1LDUgKzU1LDUgQEAKICBtaXBzKmVsLSotbGludXgtKikJdGFyZ19lbXVsPWVsZjMybHRzbWlwCiAgCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJidHNtaXAgZWxmMzJsdHNtaXBuMzIgZWxmNjRsdHNtaXAgZWxmMzJidHNtaXBuMzIgZWxmNjRidHNtaXAiCiAtLSAKLTIuNy4xCisyLjkuMAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTItQWRkLXN1cHBvcnQtZm9yLU5ldGxvZ2ljLVhMUC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMi1BZGQtc3VwcG9ydC1mb3ItTmV0bG9naWMtWExQLnBhdGNoCmluZGV4IGFmN2YxMmYuLjgxMDMzNDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMi1BZGQtc3VwcG9ydC1mb3ItTmV0bG9naWMtWExQLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMi1BZGQtc3VwcG9ydC1mb3ItTmV0bG9naWMtWExQLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA5Zjk2N2M1NTViM2ZkYTY0YWY0NTQ5YWUyNTJhMGZiYTAwMTIwNTI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBjMmUxMzhmNGNjZGY4YWY4MWMxOGM4NTExYzkwMWQzZGVlZTY5NmI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFN1biwgMTQgRmViIDIwMTYgMTc6MDY6MTkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxMi8xNF0gQWRkIHN1cHBvcnQgZm9yIE5ldGxvZ2ljIFhMUAorU3ViamVjdDogW1BBVENIIDEyLzEzXSBBZGQgc3VwcG9ydCBmb3IgTmV0bG9naWMgWExQCiAKIFBhdGNoIEZyb206IE5lYnUgUGhpbGlwcyA8bnBoaWxpcHNAbmV0bG9naWNtaWNyby5jb20+CiAKQEAgLTM1LDEwICszNSwxMCBAQAogIDE1IGZpbGVzIGNoYW5nZWQsIDY1IGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvYmZkL2FvdXR4LmggYi9iZmQvYW91dHguaAotaW5kZXggZjc4YjkxMC4uZDBkOGRkMyAxMDA2NDQKK2luZGV4IGJlMDEyNmEuLjRjYTdlMjQgMTAwNjQ0CiAtLS0gYS9iZmQvYW91dHguaAogKysrIGIvYmZkL2FvdXR4LmgKLUBAIC04MDIsNiArODAyLDcgQEAgTkFNRSAoYW91dCwgbWFjaGluZV90eXBlKSAoZW51bSBiZmRfYXJjaGl0ZWN0dXJlIGFyY2gsCitAQCAtODEyLDYgKzgxMiw3IEBAIE5BTUUgKGFvdXQsIG1hY2hpbmVfdHlwZSkgKGVudW0gYmZkX2FyY2hpdGVjdHVyZSBhcmNoLAogIAljYXNlIGJmZF9tYWNoX21pcHNpc2E2NHI2OgogIAljYXNlIGJmZF9tYWNoX21pcHNfc2IxOgogIAljYXNlIGJmZF9tYWNoX21pcHNfeGxyOgpAQCAtNDcsMTAgKzQ3LDEwIEBACiAgCSAgYXJjaF9mbGFncyA9IE1fTUlQUzI7CiAgCSAgYnJlYWs7CiBkaWZmIC0tZ2l0IGEvYmZkL2FyY2h1cmVzLmMgYi9iZmQvYXJjaHVyZXMuYwotaW5kZXggNTEwNjhiOS4uNzI3NzQxZiAxMDA2NDQKK2luZGV4IDk2YzkxMDkuLjVhMzBkMDIgMTAwNjQ0CiAtLS0gYS9iZmQvYXJjaHVyZXMuYwogKysrIGIvYmZkL2FyY2h1cmVzLmMKLUBAIC0xODEsNiArMTgxLDcgQEAgREVTQ1JJUFRJT04KK0BAIC0xOTcsNiArMTk3LDcgQEAgREVTQ1JJUFRJT04KICAuI2RlZmluZSBiZmRfbWFjaF9taXBzX29jdGVvbjIJCTY1MDIKICAuI2RlZmluZSBiZmRfbWFjaF9taXBzX29jdGVvbjMgICAgICAgICAgNjUwMwogIC4jZGVmaW5lIGJmZF9tYWNoX21pcHNfeGxyICAgICAgICAgICAgICA4ODc2ODIgICB7KiBkZWNpbWFsICdYTFInICAqfQpAQCAtNTksMTAgKzU5LDEwIEBACiAgLiNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMycjIgICAgICAgICAgIDMzCiAgLiNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMycjMgICAgICAgICAgIDM0CiBkaWZmIC0tZ2l0IGEvYmZkL2JmZC1pbjIuaCBiL2JmZC9iZmQtaW4yLmgKLWluZGV4IDc3OWZmYmYuLmJmNWE1NjUgMTAwNjQ0CitpbmRleCAzMDUxM2M0Li41ZThlZDRjIDEwMDY0NAogLS0tIGEvYmZkL2JmZC1pbjIuaAogKysrIGIvYmZkL2JmZC1pbjIuaAotQEAgLTE5OTMsNiArMTk5Myw3IEBAIGVudW0gYmZkX2FyY2hpdGVjdHVyZQorQEAgLTIwMDgsNiArMjAwOCw3IEBAIGVudW0gYmZkX2FyY2hpdGVjdHVyZQogICNkZWZpbmUgYmZkX21hY2hfbWlwc19vY3Rlb24yICAgICAgICAgIDY1MDIKICAjZGVmaW5lIGJmZF9tYWNoX21pcHNfb2N0ZW9uMyAgICAgICAgICA2NTAzCiAgI2RlZmluZSBiZmRfbWFjaF9taXBzX3hsciAgICAgICAgICAgICAgODg3NjgyICAgLyogZGVjaW1hbCAnWExSJyAgKi8KQEAgLTcxLDEwICs3MSwxMCBAQAogICNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMycjIgICAgICAgICAgIDMzCiAgI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzJyMyAgICAgICAgICAgMzQKIGRpZmYgLS1naXQgYS9iZmQvY29uZmlnLmJmZCBiL2JmZC9jb25maWcuYmZkCi1pbmRleCA1YzI3YjQ5Li5kNTUzMDM5IDEwMDY0NAoraW5kZXggYWIxN2U3Mi4uODYzYmU4OSAxMDA2NDQKIC0tLSBhL2JmZC9jb25maWcuYmZkCiArKysgYi9iZmQvY29uZmlnLmJmZAotQEAgLTEwNjYsNiArMTA2NiwxMSBAQCBjYXNlICIke3Rhcmd9IiBpbgorQEAgLTEwODQsNiArMTA4NCwxMSBAQCBjYXNlICIke3Rhcmd9IiBpbgogICAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjMyX2xlX3ZlYwogICAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfYmVfdmVjIG1pcHNfZWxmNjRfYmVfdmVjIG1pcHNfZWxmNjRfbGVfdmVjIgogICAgICA7OwpAQCAtODMsMTEgKzgzLDExIEBACiArCXRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl90cmFkX2xlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfYmVfdmVjIG1pcHNfZWxmNjRfdHJhZF9sZV92ZWMiCiArCXdhbnQ2ND10cnVlCiArCTs7Ci0gICBtaXBzKi0qLWVsZiogfCBtaXBzKi0qLXJ0ZW1zKiB8IG1pcHMqLSotdnh3b3JrcyB8IG1pcHMqLSotd2luZGlzcykKKyAgIG1pcHMqLSotZWxmKiB8IG1pcHMqLSotcnRlbXMqIHwgbWlwcyotKi13aW5kaXNzIHwgbWlwcyotKi1ub25lKQogICAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjMyX2JlX3ZlYwogICAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfbGVfdmVjIG1pcHNfZWxmNjRfYmVfdmVjIG1pcHNfZWxmNjRfbGVfdmVjIgogZGlmZiAtLWdpdCBhL2JmZC9jcHUtbWlwcy5jIGIvYmZkL2NwdS1taXBzLmMKLWluZGV4IDhhOTQ3NWQuLmRlN2U1YTMgMTAwNjQ0CitpbmRleCBkMjA5ZmI2Li5iNmE4NmFlIDEwMDY0NAogLS0tIGEvYmZkL2NwdS1taXBzLmMKICsrKyBiL2JmZC9jcHUtbWlwcy5jCiBAQCAtMTA0LDcgKzEwNCw4IEBAIGVudW0KQEAgLTExMSwxMCArMTExLDEwIEBACiAgCiAgLyogVGhlIGRlZmF1bHQgYXJjaGl0ZWN0dXJlIGlzIG1pcHM6MzAwMCwgYnV0IHdpdGggYSBtYWNoaW5lIG51bWJlciBvZgogZGlmZiAtLWdpdCBhL2JmZC9lbGZ4eC1taXBzLmMgYi9iZmQvZWxmeHgtbWlwcy5jCi1pbmRleCAxZjJmNGEzLi43MDBhZmQzIDEwMDY0NAoraW5kZXggZTQ3Mjc2Yi4uNzFjMzBhMCAxMDA2NDQKIC0tLSBhL2JmZC9lbGZ4eC1taXBzLmMKICsrKyBiL2JmZC9lbGZ4eC1taXBzLmMKLUBAIC02NjA1LDYgKzY2MDUsOSBAQCBfYmZkX2VsZl9taXBzX21hY2ggKGZsYWd3b3JkIGZsYWdzKQorQEAgLTY2NDYsNiArNjY0Niw5IEBAIF9iZmRfZWxmX21pcHNfbWFjaCAoZmxhZ3dvcmQgZmxhZ3MpCiAgICAgIGNhc2UgRV9NSVBTX01BQ0hfWExSOgogICAgICAgIHJldHVybiBiZmRfbWFjaF9taXBzX3hscjsKICAKQEAgLTEyNCw3ICsxMjQsNyBAQAogICAgICBkZWZhdWx0OgogICAgICAgIHN3aXRjaCAoZmxhZ3MgJiBFRl9NSVBTX0FSQ0gpCiAgCXsKLUBAIC0xMTkwMSw2ICsxMTkwNCwxMCBAQCBtaXBzX3NldF9pc2FfZmxhZ3MgKGJmZCAqYWJmZCkKK0BAIC0xMTk0OSw2ICsxMTk1MiwxMCBAQCBtaXBzX3NldF9pc2FfZmxhZ3MgKGJmZCAqYWJmZCkKICAgICAgICB2YWwgPSBFX01JUFNfQVJDSF82NFIyIHwgRV9NSVBTX01BQ0hfT0NURU9OMjsKICAgICAgICBicmVhazsKICAKQEAgLTEzNSw3ICsxMzUsNyBAQAogICAgICBjYXNlIGJmZF9tYWNoX21pcHNpc2EzMjoKICAgICAgICB2YWwgPSBFX01JUFNfQVJDSF8zMjsKICAgICAgICBicmVhazsKLUBAIC0xMzkzMSw2ICsxMzkzOCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWlwc19tYWNoX2V4dGVuc2lvbiBtaXBzX21hY2hfZXh0ZW5zaW9uc1tdID0KK0BAIC0xMzk3NSw2ICsxMzk4Miw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWlwc19tYWNoX2V4dGVuc2lvbiBtaXBzX21hY2hfZXh0ZW5zaW9uc1tdID0KICAgIHsgYmZkX21hY2hfbWlwc19vY3Rlb25wLCBiZmRfbWFjaF9taXBzX29jdGVvbiB9LAogICAgeyBiZmRfbWFjaF9taXBzX29jdGVvbiwgYmZkX21hY2hfbWlwc2lzYTY0cjIgfSwKICAgIHsgYmZkX21hY2hfbWlwc19sb29uZ3Nvbl8zYSwgYmZkX21hY2hfbWlwc2lzYTY0cjIgfSwKQEAgLTE0NCwxMCArMTQ0LDEwIEBACiAgICAvKiBNSVBTNjQgZXh0ZW5zaW9ucy4gICovCiAgICB7IGJmZF9tYWNoX21pcHNpc2E2NHIyLCBiZmRfbWFjaF9taXBzaXNhNjQgfSwKIGRpZmYgLS1naXQgYS9iaW51dGlscy9yZWFkZWxmLmMgYi9iaW51dGlscy9yZWFkZWxmLmMKLWluZGV4IGQ1ZGQ0NmYuLjY2ODEwY2MgMTAwNjQ0CitpbmRleCAyNzRkZGQxLi5kMzE1NThjIDEwMDY0NAogLS0tIGEvYmludXRpbHMvcmVhZGVsZi5jCiArKysgYi9iaW51dGlscy9yZWFkZWxmLmMKLUBAIC0zMTQwLDYgKzMxNDAsNyBAQCBnZXRfbWFjaGluZV9mbGFncyAodW5zaWduZWQgZV9mbGFncywgdW5zaWduZWQgZV9tYWNoaW5lKQorQEAgLTMyMzAsNiArMzIzMCw3IEBAIGdldF9tYWNoaW5lX2ZsYWdzICh1bnNpZ25lZCBlX2ZsYWdzLCB1bnNpZ25lZCBlX21hY2hpbmUpCiAgCSAgICBjYXNlIEVfTUlQU19NQUNIX09DVEVPTjI6IHN0cmNhdCAoYnVmLCAiLCBvY3Rlb24yIik7IGJyZWFrOwogIAkgICAgY2FzZSBFX01JUFNfTUFDSF9PQ1RFT04zOiBzdHJjYXQgKGJ1ZiwgIiwgb2N0ZW9uMyIpOyBicmVhazsKICAJICAgIGNhc2UgRV9NSVBTX01BQ0hfWExSOiAgc3RyY2F0IChidWYsICIsIHhsciIpOyBicmVhazsKQEAgLTE1Niw3ICsxNTYsNyBAQAogIAkgICAgLyogV2Ugc2ltcGx5IGlnbm9yZSB0aGUgZmllbGQgaW4gdGhpcyBjYXNlIHRvIGF2b2lkIGNvbmZ1c2lvbjoKICAJICAgICAgIE1JUFMgRUxGIGRvZXMgbm90IHNwZWNpZnkgRUZfTUlQU19NQUNILCBpdCBpcyBhIEdOVQogZGlmZiAtLWdpdCBhL2dhcy9jb25maWcvdGMtbWlwcy5jIGIvZ2FzL2NvbmZpZy90Yy1taXBzLmMKLWluZGV4IGEyZDQ1YTQuLjc1OTAyYzAgMTAwNjQ0CitpbmRleCBlYjhiMjZiLi5lNTlkY2U2IDEwMDY0NAogLS0tIGEvZ2FzL2NvbmZpZy90Yy1taXBzLmMKICsrKyBiL2dhcy9jb25maWcvdGMtbWlwcy5jCiBAQCAtNTUyLDYgKzU1Miw3IEBAIHN0YXRpYyBpbnQgbWlwc18zMmJpdG1vZGUgPSAwOwpAQCAtMTc1LDIwICsxNzUsMjAgQEAKICAgICApCiAgCiAgLyogV2hldGhlciB0aGUgcHJvY2Vzc29yIHVzZXMgaGFyZHdhcmUgaW50ZXJsb2NrcyB0byBwcm90ZWN0IHJlYWRzCi1AQCAtMTg3MDIsNyArMTg3MDQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG1pcHNfY3B1X2luZm8gbWlwc19jcHVfaW5mb190YWJsZVtdID0KK0BAIC0xODg1OCw3ICsxODg2MCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWlwc19jcHVfaW5mbyBtaXBzX2NwdV9pbmZvX3RhYmxlW10gPQogICAgLyogQnJvYWRjb20gWExQLgogICAgICAgWExQIGlzIG1vc3RseSBsaWtlIFhMUiwgd2l0aCB0aGUgcHJvbWluZW50IGV4Y2VwdGlvbiB0aGF0IGl0IGlzCiAgICAgICBNSVBTNjRSMiByYXRoZXIgdGhhbiBNSVBTNjQuICAqLwogLSAgeyAieGxwIiwJICAgICAgMCwgMCwJCQlJU0FfTUlQUzY0UjIsIENQVV9YTFIgfSwKICsgIHsgInhscCIsCSAgICAgIDAsIDAsCQkJSVNBX01JUFM2NFIyLCBDUFVfWExQIH0sCiAgCi0gICAvKiBpNjQwMC4gICovCisgICAvKiBNSVBTIDY0IFJlbGVhc2UgNiAqLwogICAgeyAiaTY0MDAiLAkgICAgICAwLCBBU0VfTVNBLAkJSVNBX01JUFM2NFI2LCBDUFVfTUlQUzY0UjZ9LAogZGlmZiAtLWdpdCBhL2dhcy9jb25maWd1cmUgYi9nYXMvY29uZmlndXJlCi1pbmRleCA4OWYxOGIzLi44NmIxOWFlIDEwMDc1NQoraW5kZXggNDVkYTAzMC4uYWJhODlmNyAxMDA3NTUKIC0tLSBhL2dhcy9jb25maWd1cmUKICsrKyBiL2dhcy9jb25maWd1cmUKLUBAIC0xMjg1MSw2ICsxMjg1MSw5IEBAIF9BQ0VPRgorQEAgLTEyOTE0LDYgKzEyOTE0LDkgQEAgX0FDRU9GCiAgCSAgbWlwc2lzYTY0cjYgfCBtaXBzaXNhNjRyNmVsKQogIAkgICAgbWlwc19jcHU9bWlwczY0cjYKICAJICAgIDs7CkBAIC0xOTksNyArMTk5LDcgQEAKICAJICAgIG1pcHNfY3B1PXIzOTAwCiAgCSAgICA7OwogZGlmZiAtLWdpdCBhL2dhcy9jb25maWd1cmUudGd0IGIvZ2FzL2NvbmZpZ3VyZS50Z3QKLWluZGV4IDA4NmUwZDIuLjJiNzEyNzAgMTAwNjQ0CitpbmRleCAxYjlmZDk5Li5hOWYxOTc3IDEwMDY0NAogLS0tIGEvZ2FzL2NvbmZpZ3VyZS50Z3QKICsrKyBiL2dhcy9jb25maWd1cmUudGd0CiBAQCAtMzM5LDcgKzMzOSw3IEBAIGNhc2UgJHtnZW5lcmljX3RhcmdldH0gaW4KQEAgLTIxMiwxMCArMjEyLDEwIEBACiAgICBtaXBzLSotb3BlbmJzZCopCQkJZm10PWVsZiBlbT10bWlwcyA7OwogIAogZGlmZiAtLWdpdCBhL2luY2x1ZGUvZWxmL21pcHMuaCBiL2luY2x1ZGUvZWxmL21pcHMuaAotaW5kZXggNTdkZTNiYy4uOWJhMTQxZCAxMDA2NDQKK2luZGV4IDdlODEzZGUuLmQ3ZDcyYzEgMTAwNjQ0CiAtLS0gYS9pbmNsdWRlL2VsZi9taXBzLmgKICsrKyBiL2luY2x1ZGUvZWxmL21pcHMuaAotQEAgLTI4NSw2ICsyODUsNyBAQCBFTkRfUkVMT0NfTlVNQkVSUyAoUl9NSVBTX21heGV4dCkKK0BAIC0yOTAsNiArMjkwLDcgQEAgRU5EX1JFTE9DX05VTUJFUlMgKFJfTUlQU19tYXhleHQpCiAgI2RlZmluZSBFX01JUFNfTUFDSF9TQjEgICAgICAgICAweDAwOGEwMDAwCiAgI2RlZmluZSBFX01JUFNfTUFDSF9PQ1RFT04JMHgwMDhiMDAwMAogICNkZWZpbmUgRV9NSVBTX01BQ0hfWExSICAgICAJMHgwMDhjMDAwMApAQCAtMjI0LDEwICsyMjQsMTAgQEAKICAjZGVmaW5lIEVfTUlQU19NQUNIX09DVEVPTjMJMHgwMDhlMDAwMAogICNkZWZpbmUgRV9NSVBTX01BQ0hfNTQwMAkweDAwOTEwMDAwCiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9vcGNvZGUvbWlwcy5oIGIvaW5jbHVkZS9vcGNvZGUvbWlwcy5oCi1pbmRleCA5MzE4ZmNjLi45YmU1NjQ1IDEwMDY0NAoraW5kZXggYjFkNGVmNi4uZjJjOGU4OCAxMDA2NDQKIC0tLSBhL2luY2x1ZGUvb3Bjb2RlL21pcHMuaAogKysrIGIvaW5jbHVkZS9vcGNvZGUvbWlwcy5oCi1AQCAtMTIyOCw4ICsxMjI4LDEwIEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbWlwc19pc2FfdGFibGVbXSA9IHsKK0BAIC0xMjMyLDggKzEyMzIsMTAgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBtaXBzX2lzYV90YWJsZVtdID0gewogICNkZWZpbmUgSU5TTl9MT09OR1NPTl8yRiAgICAgICAgICAweDgwMDAwMDAwCiAgLyogTG9vbmdzb24gM0EuICAqLwogICNkZWZpbmUgSU5TTl9MT09OR1NPTl8zQSAgICAgICAgICAweDAwMDAwNDAwCkBAIC0yNDAsNyArMjQwLDcgQEAKICAKICAvKiBEU1AgQVNFICovCiAgI2RlZmluZSBBU0VfRFNQCQkJMHgwMDAwMDAwMQotQEAgLTEzMjYsNiArMTMyOCw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbWlwc19pc2FfdGFibGVbXSA9IHsKK0BAIC0xMzMxLDYgKzEzMzMsNyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG1pcHNfaXNhX3RhYmxlW10gPSB7CiAgI2RlZmluZSBDUFVfT0NURU9OMgk2NTAyCiAgI2RlZmluZSBDUFVfT0NURU9OMwk2NTAzCiAgI2RlZmluZSBDUFVfWExSICAgICAJODg3NjgyICAgCS8qIGRlY2ltYWwgJ1hMUicgICAqLwpAQCAtMjQ4LDcgKzI0OCw3IEBACiAgCiAgLyogUmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIENQVSBpcyBpbmNsdWRlZCBpbiBJTlNOXyogbWFzayBNQVNLLiAgKi8KICAKLUBAIC0xNDAzLDYgKzE0MDYsOSBAQCBjcHVfaXNfbWVtYmVyIChpbnQgY3B1LCB1bnNpZ25lZCBpbnQgbWFzaykKK0BAIC0xNDA4LDYgKzE0MTEsOSBAQCBjcHVfaXNfbWVtYmVyIChpbnQgY3B1LCB1bnNpZ25lZCBpbnQgbWFzaykKICAgICAgICByZXR1cm4gKChtYXNrICYgSU5TTl9JU0FfTUFTSykgPT0gSU5TTl9JU0EzMlI2KQogIAkgICAgIHx8ICgobWFzayAmIElOU05fSVNBX01BU0spID09IElOU05fSVNBNjRSNik7CiAgCkBAIC0yNTksMTAgKzI1OSwxMCBAQAogICAgICAgIHJldHVybiBGQUxTRTsKICAgICAgfQogZGlmZiAtLWdpdCBhL2xkL2NvbmZpZ3VyZS50Z3QgYi9sZC9jb25maWd1cmUudGd0Ci1pbmRleCBiNDViMWU1Li5mYjJmMzZhIDEwMDY0NAoraW5kZXggMjEyMzI3Yy4uMjEyZTA5YyAxMDA2NDQKIC0tLSBhL2xkL2NvbmZpZ3VyZS50Z3QKICsrKyBiL2xkL2NvbmZpZ3VyZS50Z3QKLUBAIC00OTUsNiArNDk1LDggQEAgbWlwcyplbC1zZGUtZWxmKikJdGFyZ19lbXVsPWVsZjMybHRzbWlwCitAQCAtNDk5LDYgKzQ5OSw4IEBAIG1pcHMqZWwtc2RlLWVsZiogfCBtaXBzKmVsLW10aS1lbGYqIHwgbWlwcyplbC1pbWctZWxmKikKICBtaXBzKi1zZGUtZWxmKiB8IG1pcHMqLW10aS1lbGYqIHwgbWlwcyotaW1nLWVsZiopCiAgCQkJdGFyZ19lbXVsPWVsZjMyYnRzbWlwCiAgCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJsdHNtaXAgZWxmMzJidHNtaXBuMzIgZWxmNjRidHNtaXAgZWxmMzJsdHNtaXBuMzIgZWxmNjRsdHNtaXAiIDs7CkBAIC0yNzIsNyArMjcyLDcgQEAKICAJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmxyNTkwMCIKICAJCQl0YXJnX2V4dHJhX2xpYnBhdGg9JHRhcmdfZXh0cmFfZW11bHMgOzsKIGRpZmYgLS1naXQgYS9vcGNvZGVzL21pcHMtZGlzLmMgYi9vcGNvZGVzL21pcHMtZGlzLmMKLWluZGV4IDgyMDA5MjAuLjQwZDlmZTIgMTAwNjQ0CitpbmRleCAzZjg3NGU3Li45ODEzZDBlIDEwMDY0NAogLS0tIGEvb3Bjb2Rlcy9taXBzLWRpcy5jCiArKysgYi9vcGNvZGVzL21pcHMtZGlzLmMKIEBAIC02NDgsMTMgKzY0OCwxMSBAQCBjb25zdCBzdHJ1Y3QgbWlwc19hcmNoX2Nob2ljZSBtaXBzX2FyY2hfY2hvaWNlc1tdID0KQEAgLTI5NSw3ICsyOTUsNyBAQAogICAgLyogVGhpcyBlbnRyeSwgbWlwczE2LCBpcyBoZXJlIG9ubHkgZm9yIElTQS9wcm9jZXNzb3Igc2VsZWN0aW9uOyBkbwogICAgICAgbm90IHByaW50IGl0cyBuYW1lLiAgKi8KIGRpZmYgLS1naXQgYS9vcGNvZGVzL21pcHMtb3BjLmMgYi9vcGNvZGVzL21pcHMtb3BjLmMKLWluZGV4IDQwMmY4ODcuLjM3NjQ4MzYgMTAwNjQ0CitpbmRleCBhOTVlZmYxLi45OWZiN2JiIDEwMDY0NAogLS0tIGEvb3Bjb2Rlcy9taXBzLW9wYy5jCiArKysgYi9vcGNvZGVzL21pcHMtb3BjLmMKIEBAIC0zMjAsNyArMzIwLDggQEAgZGVjb2RlX21pcHNfb3BlcmFuZCAoY29uc3QgY2hhciAqcCkKQEAgLTMwOCw3ICszMDgsNyBAQAogICNkZWZpbmUgSVZJUlQJQVNFX1ZJUlQKICAjZGVmaW5lIElWSVJUNjQJQVNFX1ZJUlQ2NAogIAotQEAgLTk1Nyw2ICs5NTgsNyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CitAQCAtOTU4LDYgKzk1OSw3IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KICB7ImNsbyIsCQkJIlUscyIsCQkweDcwMDAwMDIxLCAweGZjMDAwN2ZmLCBXUl8xfFJEXzIsCQkwLAkJSTMyfE41NSwJMCwJSTM3IH0sCiAgeyJjbHoiLAkJCSJkLHMiLAkJMHgwMDAwMDA1MCwgMHhmYzFmMDdmZiwgV1JfMXxSRF8yLAkJMCwJCUkzNywJCTAsCTAgfSwKICB7ImNseiIsCQkJIlUscyIsCQkweDcwMDAwMDIwLCAweGZjMDAwN2ZmLCBXUl8xfFJEXzIsCQkwLAkJSTMyfE41NSwJMCwJSTM3IH0sCkBAIC0zMTYsNyArMzE2LDcgQEAKICAvKiBjdGMwIGlzIGF0IHRoZSBib3R0b20gb2YgdGhlIHRhYmxlLiAgKi8KICB7ImN0YzEiLAkJInQsRyIsCQkweDQ0YzAwMDAwLCAweGZmZTAwN2ZmLAlSRF8xfFdSX0NDfENNLAkJMCwJCUkxLAkJMCwJMCB9LAogIHsiY3RjMSIsCQkidCxTIiwJCTB4NDRjMDAwMDAsIDB4ZmZlMDA3ZmYsCVJEXzF8V1JfQ0N8Q00sCQkwLAkJSTEsCQkwLAkwIH0sCi1AQCAtOTg5LDEyICs5OTEsMTMgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQorQEAgLTk5MCwxMiArOTkyLDEzIEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KICB7ImRhZGRpdSIsCQkidCxyLGoiLAkweDY0MDAwMDAwLCAweGZjMDAwMDAwLCBXUl8xfFJEXzIsCQkwLAkJSTMsCQkwLAkwIH0sCiAgeyJkYWRkdSIsCQkiZCx2LHQiLAkweDAwMDAwMDJkLCAweGZjMDAwN2ZmLCBXUl8xfFJEXzJ8UkRfMywJCTAsCQlJMywJCTAsCTAgfSwKICB7ImRhZGR1IiwJCSJ0LHIsSSIsCTAsICAgIChpbnQpIE1fREFERFVfSSwJSU5TTl9NQUNSTywJCTAsCQlJMywJCTAsCTAgfSwKQEAgLTMzMSw3ICszMzEsNyBAQAogIC8qIGRjdHIgYW5kIGRjdHcgYXJlIHVzZWQgb24gdGhlIHI1MDAwLiAgKi8KICB7ImRjdHIiLAkJIm8oYikiLAkgCTB4YmMwNTAwMDAsIDB4ZmMxZjAwMDAsIFJEXzIsCQkJMCwJCUkzLAkJMCwJMCB9LAogIHsiZGN0dyIsCQkibyhiKSIsCQkweGJjMDkwMDAwLCAweGZjMWYwMDAwLCBSRF8yLAkJCTAsCQlJMywJCTAsCTAgfSwKLUBAIC0xMDY2LDYgKzEwNjksNyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CitAQCAtMTA2Nyw2ICsxMDcwLDcgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQogIHsiZG1mYzAiLAkJInQsRyxIIiwJMHg0MDIwMDAwMCwgMHhmZmUwMDdmOCwJV1JfMXxSRF9DMHxMQywJCTAsCQlJNjQsCQkwLAkwIH0sCiAgeyJkbWZnYzAiLAkJInQsRyIsCQkweDQwNjAwMTAwLCAweGZmZTAwN2ZmLCBXUl8xfFJEX0MwfExDLAkJMCwJCTAsCQlJVklSVDY0LCAwIH0sCiAgeyJkbWZnYzAiLAkJInQsRyxIIiwJMHg0MDYwMDEwMCwgMHhmZmUwMDdmOCwgV1JfMXxSRF9DMHxMQywJCTAsCQkwLAkJSVZJUlQ2NCwgMCB9LApAQCAtMzM5LDcgKzMzOSw3IEBACiAgeyJkbXQiLAkJCSIiLAkJMHg0MTYwMGJjMSwgMHhmZmZmZmZmZiwgVFJBUCwJCQkwLAkJMCwJCU1UMzIsCTAgfSwKICB7ImRtdCIsCQkJInQiLAkJMHg0MTYwMGJjMSwgMHhmZmUwZmZmZiwgV1JfMXxUUkFQLAkJMCwJCTAsCQlNVDMyLAkwIH0sCiAgeyJkbXRjMCIsCQkidCxHIiwJCTB4NDBhMDAwMDAsIDB4ZmZlMDA3ZmYsCVJEXzF8V1JfQzB8V1JfQ0N8Q00sCTAsCQlJMywJCTAsCUVFIH0sCi1AQCAtMTA4MSw2ICsxMDg1LDggQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQorQEAgLTEwODIsNiArMTA4Niw4IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KICAvKiBkbWZjMyBpcyBhdCB0aGUgYm90dG9tIG9mIHRoZSB0YWJsZS4gICovCiAgLyogZG10YzMgaXMgYXQgdGhlIGJvdHRvbSBvZiB0aGUgdGFibGUuICAqLwogIHsiZG11aCIsCQkiZCxzLHQiLAkweDAwMDAwMGRjLCAweGZjMDAwN2ZmLCBXUl8xfFJEXzJ8UkRfMywJCTAsCQlJNjksCQkwLAkwIH0sCkBAIC0zNDgsNyArMzQ4LDcgQEAKICB7ImRtdWwiLAkJImQscyx0IiwJMHgwMDAwMDA5YywgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzMsCQkwLAkJSTY5LAkJMCwJMCB9LAogIHsiZG11bCIsCQkiZCx2LHQiLAkweDcwMDAwMDAzLCAweGZjMDAwN2ZmLCBXUl8xfFJEXzJ8UkRfM3xXUl9ISUxPLAkwLAkJSU9DVCwJCTAsCTAgfSwKICB7ImRtdWwiLAkJImQsdix0IiwJMCwgICAgKGludCkgTV9ETVVMLAlJTlNOX01BQ1JPLAkJMCwJCUkzLAkJMCwJTTMyfEk2OSB9LAotQEAgLTEyMzQsOSArMTI0MCw5IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KK0BAIC0xMjM1LDkgKzEyNDEsOSBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CiAgeyJsZCIsCQkJInMsLWIoK1IpIiwJMHhlYzE4MDAwMCwgMHhmYzFjMDAwMCwgV1JfMSwJCQlSRF9wYywJCUk2OSwJCTAsCTAgfSwKICB7ImxkIiwJCQkidCxBKGIpIiwJMCwgICAgKGludCkgTV9MRF9BQiwJSU5TTl9NQUNSTywJCTAsCQlJMSwJCTAsCTAgfSwKICB7ImxkIiwJCQkidCxvKGIpIiwJMHhkYzAwMDAwMCwgMHhmYzAwMDAwMCwgV1JfMXxSRF8zfExNLAkJMCwJCUkzLAkJMCwJMCB9LApAQCAtMzYxLDcgKzM2MSw3IEBACiAgeyJsZGMxIiwJCSJULG8oYikiLAkweGQ0MDAwMDAwLCAweGZjMDAwMDAwLCBXUl8xfFJEXzN8Q0xEfEZQX0QsCTAsCQlJMiwJCTAsCVNGIH0sCiAgeyJsZGMxIiwJCSJFLG8oYikiLAkweGQ0MDAwMDAwLCAweGZjMDAwMDAwLCBXUl8xfFJEXzN8Q0xEfEZQX0QsCTAsCQlJMiwJCTAsCVNGIH0sCiAgeyJsZGMxIiwJCSJULEEoYikiLAkwLCAgICAoaW50KSBNX0xEQzFfQUIsCUlOU05fTUFDUk8sCQlJTlNOMl9NX0ZQX0QsCUkyLAkJMCwJU0YgfSwKLUBAIC0xNDAxLDcgKzE0MDcsNyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CitAQCAtMTQwMiw3ICsxNDA4LDcgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQogIHsibWZsbyIsCQkiZCw5IiwJCTB4MDAwMDAwMTIsIDB4ZmY5ZjA3ZmYsIFdSXzF8UkRfTE8sCQkwLAkJMCwJCUQzMiwJMCB9LAogIHsibWZsbzEiLAkJImQiLAkJMHg3MDAwMDAxMiwgMHhmZmZmMDdmZiwJV1JfMXxSRF9MTywJCTAsCQlFRSwJCTAsCTAgfSwKICB7Im1mbGh4dSIsCQkiZCIsCQkweDAwMDAwMDUyLCAweGZmZmYwN2ZmLAlXUl8xfE1PRF9ISUxPLAkJMCwJCTAsCQlTTVQsCTAgfSwKQEAgLTM3MCw3ICszNzAsNyBAQAogIHsibWZzYSIsCQkiZCIsCQkweDAwMDAwMDI4LCAweGZmZmYwN2ZmLAlXUl8xLAkJCTAsCQlFRSwJCTAsCTAgfSwKICB7Im1pbi5vYiIsCQkiWCxZLFEiLAkweDc4MDAwMDA2LCAweGZjMjAwMDNmLAlXUl8xfFJEXzJ8UkRfM3xGUF9ELAkwLAkJU0IxLAkJTVgsCTAgfSwKICB7Im1pbi5vYiIsCQkiRCxTLFEiLAkweDQ4MDAwMDA2LCAweGZjMjAwMDNmLAlXUl8xfFJEXzJ8UkRfM3xGUF9ELAkwLAkJTjU0LAkJMCwJMCB9LAotQEAgLTE0NDYsMTAgKzE0NTIsMTMgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQorQEAgLTE0NDcsMTAgKzE0NTMsMTMgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQogIC8qIG1vdmUgaXMgYXQgdGhlIHRvcCBvZiB0aGUgdGFibGUuICAqLwogIHsibXNnbi5xaCIsCQkiWCxZLFEiLAkweDc4MjAwMDAwLCAweGZjMjAwMDNmLAlXUl8xfFJEXzJ8UkRfM3xGUF9ELAkwLAkJMCwJCU1YLAkwIH0sCiAgeyJtc2dzbmQiLAkJInQiLAkJMCwgICAgKGludCkgTV9NU0dTTkQsCUlOU05fTUFDUk8sCQkwLAkJWExSLAkJMCwJMCB9LApAQCAtMzg2LDcgKzM4Niw3IEBACiAgeyJtc3ViLmQiLAkJIkQsUixTLFQiLAkweDRjMDAwMDI5LCAweGZjMDAwMDNmLCBXUl8xfFJEXzJ8UkRfM3xSRF80fEZQX0QsIDAsCQlJNF8zMywJCTAsCUkzNyB9LAogIHsibXN1Yi5kIiwJCSJELFMsVCIsCTB4NDYyMDAwMTksIDB4ZmZlMDAwM2YsCVdSXzF8UkRfMnxSRF8zfEZQX0QsCTAsCQlJTDJFLAkJMCwJMCB9LAogIHsibXN1Yi5kIiwJCSJELFMsVCIsCTB4NzIyMDAwMTksIDB4ZmZlMDAwM2YsCVdSXzF8UkRfMnxSRF8zfEZQX0QsCTAsCQlJTDJGLAkJMCwJMCB9LAotQEAgLTE0OTksNyArMTUwOCw3IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KK0BAIC0xNTAwLDcgKzE1MDksNyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CiAgeyJtdGxvIiwJCSJzLDciLAkJMHgwMDAwMDAxMywgMHhmYzFmZTdmZiwgUkRfMXxXUl9MTywJCTAsCQkwLAkJRDMyLAkwIH0sCiAgeyJtdGxvMSIsCQkicyIsCQkweDcwMDAwMDEzLCAweGZjMWZmZmZmLAlSRF8xfFdSX0xPLAkJMCwJCUVFLAkJMCwJMCB9LAogIHsibXRsaHgiLAkJInMiLAkJMHgwMDAwMDA1MywgMHhmYzFmZmZmZiwJUkRfMXxNT0RfSElMTywJCTAsCQkwLAkJU01ULAkwIH0sCkBAIC0zOTUsNyArMzk1LDcgQEAKICB7Im10bTAiLAkJInMiLAkJMHg3MDAwMDAwOCwgMHhmYzFmZmZmZiwgUkRfMSwJCQkwLAkJSU9DVCwJCTAsCTAgfSwKICB7Im10bTAiLCAgICAJCSJzLHQiLAkJMHg3MDAwMDAwOCwgMHhmYzAwZmZmZiwgUkRfMXxSRF8yLAkJMCwJCUlPQ1QzLAkJMCwJMCB9LAogIHsibXRtMSIsCQkicyIsCQkweDcwMDAwMDBjLCAweGZjMWZmZmZmLCBSRF8xLAkJCTAsCQlJT0NULAkJMCwJMCB9LAotQEAgLTE5MzYsOSArMTk0NSw5IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KK0BAIC0xOTM3LDkgKzE5NDYsOSBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CiAgeyJzdXhjMSIsCQkiUyx0KGIpIiwJMHg0YzAwMDAwZCwgMHhmYzAwMDdmZiwgUkRfMXxSRF8yfFJEXzN8U018RlBfRCwJMCwJCUk1XzMzfE41NSwJMCwJSTM3fSwKICB7InN3IiwJCQkidCxvKGIpIiwJMHhhYzAwMDAwMCwgMHhmYzAwMDAwMCwJUkRfMXxSRF8zfFNNLAkJMCwJCUkxLAkJMCwJMCB9LAogIHsic3ciLAkJCSJ0LEEoYikiLAkwLCAgICAoaW50KSBNX1NXX0FCLAlJTlNOX01BQ1JPLAkJMCwJCUkxLAkJMCwJMCB9LApAQCAtNDA5LDUgKzQwOSw1IEBACiAgeyJzd2MwIiwJCSJFLEEoYikiLAkwLCAgICAoaW50KSBNX1NXQzBfQUIsCUlOU05fTUFDUk8sCQkwLAkJSTEsCQkwLAlJT0NUfElPQ1RQfElPQ1QyfEkzNyB9LAogIHsic3djMSIsCQkiVCxvKGIpIiwJMHhlNDAwMDAwMCwgMHhmYzAwMDAwMCwJUkRfMXxSRF8zfFNNfEZQX1MsCTAsCQlJMSwJCTAsCTAgfSwKIC0tIAotMi43LjEKKzIuOS4wCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMy1GaXgtR09ULWFkZHJlc3MtY29tcHV0YXRpb25zLWluLWluaXRpYWwtUExULWVudHJpZXMtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEzLUZpeC1HT1QtYWRkcmVzcy1jb21wdXRhdGlvbnMtaW4taW5pdGlhbC1QTFQtZW50cmllcy0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0YWYxMjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEzLUZpeC1HT1QtYWRkcmVzcy1jb21wdXRhdGlvbnMtaW4taW5pdGlhbC1QTFQtZW50cmllcy0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi1Gcm9tIDk2MTlhNjA4NTI4MzgzYTQ0Y2NjMTYzN2FlOTM5YjVmM2U5N2FkYzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTYW5kcmEgTG9vc2Vtb3JlIDxzYW5kcmFAY29kZXNvdXJjZXJ5LmNvbT4KLURhdGU6IFdlZCwgOSBEZWMgMjAxNSAxNjoxMzo1OCAtMDgwMAotU3ViamVjdDogW1BBVENIIDEzLzE0XSBGaXggR09UIGFkZHJlc3MgY29tcHV0YXRpb25zIGluIGluaXRpYWwgUExUIGVudHJpZXMgZm9yCi0gbmlvczIuCi0KLTIwMTUtMTItMDkgIFNhbmRyYSBMb29zZW1vcmUgIDxzYW5kcmFAY29kZXNvdXJjZXJ5LmNvbT4KLQotCWJmZC8KLQkqIGVsZjMyLW5pb3MyLmMgKG5pb3MyX2VsZjMyX2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zKTogQ29ycmVjdAotCSVoaWFkai8lbG8gY29tcHV0YXRpb25zIGZvciBfR0xPQkFMX09GRlNFVF9UQUJMRV8gaW4gaW5pdGlhbAotCVBMVCBlbnRyaWVzLiAgQXNzZXJ0IGFsaWdubWVudCByZXF1aXJlbWVudHMuCi0KLVNpZ25lZC1vZmYtYnk6IE1hcmVrIFZhc3V0IDxtYXJleEBkZW54LmRlPgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotLS0tCi0gYmZkL2VsZjMyLW5pb3MyLmMgfCAyMyArKysrKysrKysrKysrKysrLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYmZkL2VsZjMyLW5pb3MyLmMgYi9iZmQvZWxmMzItbmlvczIuYwotaW5kZXggNmIyOWQ4Yi4uMWM1NDMyMCAxMDA2NDQKLS0tLSBhL2JmZC9lbGYzMi1uaW9zMi5jCi0rKysgYi9iZmQvZWxmMzItbmlvczIuYwotQEAgLTUzODMsMTIgKzUzODMsMTcgQEAgbmlvczJfZWxmMzJfZmluaXNoX2R5bmFtaWNfc2VjdGlvbnMgKGJmZCAqb3V0cHV0X2JmZCwKLSAJCQkJICsgc2dvdHBsdC0+b3V0cHV0X29mZnNldCk7Ci0gCSAgaWYgKGJmZF9saW5rX3BpYyAoaW5mbykpCi0gCSAgICB7Ci0tCSAgICAgIGJmZF92bWEgY29ycmVjdGVkID0gZ290X2FkZHJlc3MgLSAoc3BsdC0+b3V0cHV0X3NlY3Rpb24tPnZtYQotLQkJCQkJCSArIHNwbHQtPm91dHB1dF9vZmZzZXQgKyA0KTsKLSsJICAgICAgYmZkX3ZtYSBnb3RfcGNyZWwgPSBnb3RfYWRkcmVzcyAtIChzcGx0LT5vdXRwdXRfc2VjdGlvbi0+dm1hCi0rCQkJCQkJICsgc3BsdC0+b3V0cHV0X29mZnNldCk7Ci0rCSAgICAgIC8qIEJvdGggR09UIGFuZCBQTFQgbXVzdCBiZSBhbGlnbmVkIHRvIGEgMTYtYnl0ZSBib3VuZGFyeQotKwkJIGZvciB0aGUgdHdvIGxvYWRzIHRvIHNoYXJlIHRoZSAlaGlhZGogcGFydC4gIFRoZSA0LWJ5dGUKLSsJCSBvZmZzZXQgZm9yIG5leHRwYyBpcyBhY2NvdW50ZWQgZm9yIGluIHRoZSAlbG8gb2Zmc2V0cwotKwkJIG9uIHRoZSBsb2Fkcy4gICovCi0rCSAgICAgIEJGRF9BU1NFUlQgKChnb3RfcGNyZWwgJiAweGYpID09IDApOwotIAkgICAgICBuaW9zMl9lbGYzMl9pbnN0YWxsX2RhdGEgKHNwbHQsIG5pb3MyX3NvX3BsdDBfZW50cnksIDAsIDYpOwotLQkgICAgICBuaW9zMl9lbGYzMl9pbnN0YWxsX2ltbTE2IChzcGx0LCA0LCBoaWFkaiAoY29ycmVjdGVkKSk7Ci0tCSAgICAgIG5pb3MyX2VsZjMyX2luc3RhbGxfaW1tMTYgKHNwbHQsIDEyLCAoY29ycmVjdGVkICYgMHhmZmZmKSArIDQpOwotLQkgICAgICBuaW9zMl9lbGYzMl9pbnN0YWxsX2ltbTE2IChzcGx0LCAxNiwgKGNvcnJlY3RlZCAmIDB4ZmZmZikgKyA4KTsKLSsJICAgICAgbmlvczJfZWxmMzJfaW5zdGFsbF9pbW0xNiAoc3BsdCwgNCwgaGlhZGogKGdvdF9wY3JlbCkpOwotKwkgICAgICBuaW9zMl9lbGYzMl9pbnN0YWxsX2ltbTE2IChzcGx0LCAxMiwgZ290X3BjcmVsICYgMHhmZmZmKTsKLSsJICAgICAgbmlvczJfZWxmMzJfaW5zdGFsbF9pbW0xNiAoc3BsdCwgMTYsIChnb3RfcGNyZWwgKyA0KSAmIDB4ZmZmZik7Ci0gCSAgICB9Ci0gCSAgZWxzZQotIAkgICAgewotQEAgLTU0MDQsNiArNTQwOSwxMCBAQCBuaW9zMl9lbGYzMl9maW5pc2hfZHluYW1pY19zZWN0aW9ucyAoYmZkICpvdXRwdXRfYmZkLAotIAkJCSAgICA2IHwgKChyZXNfc2l6ZSAtIChyZXNfb2Zmc2V0ICsgNCkpIDw8IDYpLAotIAkJCSAgICBzcGx0LT5jb250ZW50cyArIHJlc19vZmZzZXQpOwotIAotKwkgICAgICAvKiBUaGUgR09UIG11c3QgYmUgYWxpZ25lZCB0byBhIDE2LWJ5dGUgYm91bmRhcnkgZm9yIHRoZQotKwkJIHR3byBsb2FkcyB0byBzaGFyZSB0aGUgc2FtZSAlaGlhZGogcGFydC4gICovCi0rCSAgICAgIEJGRF9BU1NFUlQgKChnb3RfYWRkcmVzcyAmIDB4ZikgPT0gMCk7Ci0rCi0gCSAgICAgIG5pb3MyX2VsZjMyX2luc3RhbGxfZGF0YSAoc3BsdCwgbmlvczJfcGx0MF9lbnRyeSwgcmVzX3NpemUsIDcpOwotIAkgICAgICBuaW9zMl9lbGYzMl9pbnN0YWxsX2ltbTE2IChzcGx0LCByZXNfc2l6ZSwgaGlhZGogKHJlc19zdGFydCkpOwotIAkgICAgICBuaW9zMl9lbGYzMl9pbnN0YWxsX2ltbTE2IChzcGx0LCByZXNfc2l6ZSArIDQsCi1AQCAtNTQxMSw5ICs1NDIwLDkgQEAgbmlvczJfZWxmMzJfZmluaXNoX2R5bmFtaWNfc2VjdGlvbnMgKGJmZCAqb3V0cHV0X2JmZCwKLSAJICAgICAgbmlvczJfZWxmMzJfaW5zdGFsbF9pbW0xNiAoc3BsdCwgcmVzX3NpemUgKyAxMiwKLSAJCQkJCSBoaWFkaiAoZ290X2FkZHJlc3MpKTsKLSAJICAgICAgbmlvczJfZWxmMzJfaW5zdGFsbF9pbW0xNiAoc3BsdCwgcmVzX3NpemUgKyAxNiwKLS0JCQkJCSAoZ290X2FkZHJlc3MgJiAweGZmZmYpICsgNCk7Ci0rCQkJCQkgKGdvdF9hZGRyZXNzICsgNCkgJiAweGZmZmYpOwotIAkgICAgICBuaW9zMl9lbGYzMl9pbnN0YWxsX2ltbTE2IChzcGx0LCByZXNfc2l6ZSArIDIwLAotLQkJCQkJIChnb3RfYWRkcmVzcyAmIDB4ZmZmZikgKyA4KTsKLSsJCQkJCSAoZ290X2FkZHJlc3MgKyA4KSAmIDB4ZmZmZik7Ci0gCSAgICB9Ci0gCX0KLSAgICAgfQotLS0gCi0yLjcuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTMtZml4LXRoZS1pbmNvcnJlY3QtYXNzZW1ibGluZy1mb3ItcHBjLXdhaXQtbW5lbW9uaWMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTMtZml4LXRoZS1pbmNvcnJlY3QtYXNzZW1ibGluZy1mb3ItcHBjLXdhaXQtbW5lbW9uaWMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjMxNGQ2NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMy1maXgtdGhlLWluY29ycmVjdC1hc3NlbWJsaW5nLWZvci1wcGMtd2FpdC1tbmVtb25pYy5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIDBjMDRjM2I2MjY5OThjOGU3YjU5NTM4MWIzNTQ1NjQyODU4MWY1MmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBaaGVuaHVhIEx1byA8emhlbmh1YS5sdW9AbnhwLmNvbT4KK0RhdGU6IFNhdCwgMTEgSnVuIDIwMTYgMjI6MDg6MjkgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSCAxMy8xM10gZml4IHRoZSBpbmNvcnJlY3QgYXNzZW1ibGluZyBmb3IgcHBjIHdhaXQgbW5lbW9uaWMKKworU2lnbmVkLW9mZi1ieTogWmhlbmh1YSBMdW8gPHpoZW5odWEubHVvQG54cC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgb3Bjb2Rlcy9wcGMtb3BjLmMgfCAzICstLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL29wY29kZXMvcHBjLW9wYy5jIGIvb3Bjb2Rlcy9wcGMtb3BjLmMKK2luZGV4IDgxMDZhYjcuLmNhNGIwZjMgMTAwNjQ0CistLS0gYS9vcGNvZGVzL3BwYy1vcGMuYworKysrIGIvb3Bjb2Rlcy9wcGMtb3BjLmMKK0BAIC00ODExLDcgKzQ4MTEsNiBAQCBjb25zdCBzdHJ1Y3QgcG93ZXJwY19vcGNvZGUgcG93ZXJwY19vcGNvZGVzW10gPSB7CisgeyJsZGVweCIsCVgoMzEsMjkpLAlYX01BU0ssCSAgRTUwME1DfFBQQ0EyLCAwLAkJe1JULCBSQTAsIFJCfX0sCisgCisgeyJ3YWl0YXNlYyIsCVgoMzEsMzApLCAgICAgIFhSVFJBUkJfTUFTSywgUE9XRVI4LAlQT1dFUjksCQl7MH19LAorLXsid2FpdCIsCVgoMzEsMzApLAlYV0NfTUFTSywgICAgUE9XRVI5LAkwLAkJe1dDfX0sCisgCisgeyJsd2VweCIsCVgoMzEsMzEpLAlYX01BU0ssCSAgRTUwME1DfFBQQ0EyLCAwLAkJe1JULCBSQTAsIFJCfX0sCisgCitAQCAtNDg2NSw3ICs0ODY0LDcgQEAgY29uc3Qgc3RydWN0IHBvd2VycGNfb3Bjb2RlIHBvd2VycGNfb3Bjb2Rlc1tdID0geworIAorIHsid2FpdHJzdiIsCVgoMzEsNjIpfCgxPDwyMSksIDB4ZmZmZmZmZmYsIEU1MDBNQ3xQUENBMiwgMCwJCXswfX0sCisgeyJ3YWl0aW1wbCIsCVgoMzEsNjIpfCgyPDwyMSksIDB4ZmZmZmZmZmYsIEU1MDBNQ3xQUENBMiwgMCwJCXswfX0sCisteyJ3YWl0IiwJWCgzMSw2MiksCVhXQ19NQVNLLCAgICBFNTAwTUN8UFBDQTIsIDAsCQl7V0N9fSwKKyt7IndhaXQiLAlYKDMxLDYyKSwJWFdDX01BU0ssICAgIEU1MDBNQ3xQUENBMnxQT1dFUjksIDAsCXtXQ319LAorIAorIHsiZGNic3RlcCIsCVhSVCgzMSw2MywwKSwJWFJUX01BU0ssICAgIEU1MDBNQ3xQUENBMiwgMCwJCXtSQTAsIFJCfX0sCisgCistLSAKKzIuOS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNC1Db3JyZWN0LW5pb3MyLV9ncC1hZGRyZXNzLWNvbXB1dGF0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE0LUNvcnJlY3QtbmlvczItX2dwLWFkZHJlc3MtY29tcHV0YXRpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2ZWVkZWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE0LUNvcnJlY3QtbmlvczItX2dwLWFkZHJlc3MtY29tcHV0YXRpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotRnJvbSAyN2YxNTVmZDBhYjRiYTk1NDM2NjY0M2RiZmRjM2M3MTA0OTMzNzk0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU2FuZHJhIExvb3NlbW9yZSA8c2FuZHJhQGNvZGVzb3VyY2VyeS5jb20+Ci1EYXRlOiBTdW4sIDI3IERlYyAyMDE1IDEyOjMwOjI2IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMTQvMTRdIENvcnJlY3QgbmlvczIgX2dwIGFkZHJlc3MgY29tcHV0YXRpb24uCi0KLTIwMTUtMTItMjcgIFNhbmRyYSBMb29zZW1vcmUgIDxzYW5kcmFAY29kZXNvdXJjZXJ5LmNvbT4KLQotCWJmZC8KLQkqIGVsZjMyLW5pb3MyLmMgKG5pb3MyX2VsZl9hc3NpZ25fZ3ApOiBDb3JyZWN0IGNvbXB1dGF0aW9uIG9mIF9ncAotCWFkZHJlc3MuCi0JKG5pb3MyX2VsZjMyX3JlbG9jYXRlX3NlY3Rpb24pOiBUaWR5IGNvZGUgZm9yIFJfTklPUzJfR1BSRUwgZXJyb3IKLQltZXNzYWdlcy4KLQotU2lnbmVkLW9mZi1ieTogTWFyZWsgVmFzdXQgPG1hcmV4QGRlbnguZGU+Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0tLS0KLSBiZmQvZWxmMzItbmlvczIuYyB8IDMxICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9iZmQvZWxmMzItbmlvczIuYyBiL2JmZC9lbGYzMi1uaW9zMi5jCi1pbmRleCAxYzU0MzIwLi5iYWJlY2YzIDEwMDY0NAotLS0tIGEvYmZkL2VsZjMyLW5pb3MyLmMKLSsrKyBiL2JmZC9lbGYzMi1uaW9zMi5jCi1AQCAtMzA4Niw3ICszMDg2LDE1IEBAIGxvb2t1cDoKLSAJY2FzZSBiZmRfbGlua19oYXNoX2RlZmluZWQ6Ci0gCWNhc2UgYmZkX2xpbmtfaGFzaF9kZWZ3ZWFrOgotIAkgIGdwX2ZvdW5kID0gVFJVRTsKLS0JICAqcGdwID0gbGgtPnUuZGVmLnZhbHVlOwotKwkgIHsKLSsJICAgIGFzZWN0aW9uICpzeW1fc2VjID0gbGgtPnUuZGVmLnNlY3Rpb247Ci0rCSAgICBiZmRfdm1hIHN5bV92YWx1ZSA9IGxoLT51LmRlZi52YWx1ZTsKLSsKLSsJICAgIGlmIChzeW1fc2VjLT5vdXRwdXRfc2VjdGlvbikKLSsJICAgICAgc3ltX3ZhbHVlID0gKHN5bV92YWx1ZSArIHN5bV9zZWMtPm91dHB1dF9vZmZzZXQKLSsJCQkgICArIHN5bV9zZWMtPm91dHB1dF9zZWN0aW9uLT52bWEpOwotKwkgICAgKnBncCA9IHN5bV92YWx1ZTsKLSsJICB9Ci0gCSAgYnJlYWs7Ci0gCWNhc2UgYmZkX2xpbmtfaGFzaF9pbmRpcmVjdDoKLSAJY2FzZSBiZmRfbGlua19oYXNoX3dhcm5pbmc6Ci1AQCAtMzcxOSw3ICszNzI3LDYgQEAgbmlvczJfZWxmMzJfcmVsb2NhdGVfc2VjdGlvbiAoYmZkICpvdXRwdXRfYmZkLAotICAgICAgIHN0cnVjdCBlbGYzMl9uaW9zMl9saW5rX2hhc2hfZW50cnkgKmVoOwotICAgICAgIGJmZF92bWEgcmVsb2NhdGlvbjsKLSAgICAgICBiZmRfdm1hIGdwOwotLSAgICAgIGJmZF92bWEgcmVsb2NfYWRkcmVzczsKLSAgICAgICBiZmRfcmVsb2Nfc3RhdHVzX3R5cGUgciA9IGJmZF9yZWxvY19vazsKLSAgICAgICBjb25zdCBjaGFyICpuYW1lID0gTlVMTDsKLSAgICAgICBpbnQgcl90eXBlOwotQEAgLTM3NjIsMTIgKzM3NjksNiBAQCBuaW9zMl9lbGYzMl9yZWxvY2F0ZV9zZWN0aW9uIChiZmQgKm91dHB1dF9iZmQsCi0gICAgICAgaWYgKGJmZF9saW5rX3JlbG9jYXRhYmxlIChpbmZvKSkKLSAJY29udGludWU7Ci0gCi0tICAgICAgaWYgKHNlYyAmJiBzZWMtPm91dHB1dF9zZWN0aW9uKQotLQlyZWxvY19hZGRyZXNzID0gKHNlYy0+b3V0cHV0X3NlY3Rpb24tPnZtYSArIHNlYy0+b3V0cHV0X29mZnNldAotLQkJCSArIHJlbC0+cl9vZmZzZXQpOwotLSAgICAgIGVsc2UKLS0JcmVsb2NfYWRkcmVzcyA9IDA7Ci0tCi0gICAgICAgaWYgKGhvd3RvKQotIAl7Ci0gCSAgc3dpdGNoIChob3d0by0+dHlwZSkKLUBAIC0zODE2LDYgKzM4MTcsMTUgQEAgbmlvczJfZWxmMzJfcmVsb2NhdGVfc2VjdGlvbiAoYmZkICpvdXRwdXRfYmZkLAotIAkgICAgICAvKiBUdXJucyBhbiBhYnNvbHV0ZSBhZGRyZXNzIGludG8gYSBncC1yZWxhdGl2ZSBhZGRyZXNzLiAgKi8KLSAJICAgICAgaWYgKCFuaW9zMl9lbGZfYXNzaWduX2dwIChvdXRwdXRfYmZkLCAmZ3AsIGluZm8pKQotIAkJewotKwkJICBiZmRfdm1hIHJlbG9jX2FkZHJlc3M7Ci0rCi0rCQkgIGlmIChzZWMgJiYgc2VjLT5vdXRwdXRfc2VjdGlvbikKLSsJCSAgICByZWxvY19hZGRyZXNzID0gKHNlYy0+b3V0cHV0X3NlY3Rpb24tPnZtYQotKwkJCQkgICAgICsgc2VjLT5vdXRwdXRfb2Zmc2V0Ci0rCQkJCSAgICAgKyByZWwtPnJfb2Zmc2V0KTsKLSsJCSAgZWxzZQotKwkJICAgIHJlbG9jX2FkZHJlc3MgPSAwOwotKwotIAkJICBmb3JtYXQgPSBfKCJnbG9iYWwgcG9pbnRlciByZWxhdGl2ZSByZWxvY2F0aW9uIGF0IGFkZHJlc3MgIgotIAkJCSAgICAgIjB4JTA4eCB3aGVuIF9ncCBub3QgZGVmaW5lZFxuIik7Ci0gCQkgIHNwcmludGYgKG1zZ2J1ZiwgZm9ybWF0LCByZWxvY19hZGRyZXNzKTsKLUBAIC0zODI1LDcgKzM4MzUsNyBAQCBuaW9zMl9lbGYzMl9yZWxvY2F0ZV9zZWN0aW9uIChiZmQgKm91dHB1dF9iZmQsCi0gCSAgICAgIGVsc2UKLSAJCXsKLSAJCSAgYmZkX3ZtYSBzeW1ib2xfYWRkcmVzcyA9IHJlbC0+cl9hZGRlbmQgKyByZWxvY2F0aW9uOwotLQkJICByZWxvY2F0aW9uID0gcmVsb2NhdGlvbiArIHJlbC0+cl9hZGRlbmQgLSBncDsKLSsJCSAgcmVsb2NhdGlvbiA9IHN5bWJvbF9hZGRyZXNzIC0gZ3A7Ci0gCQkgIHJlbC0+cl9hZGRlbmQgPSAwOwotIAkJICBpZiAoKChzaWduZWQpIHJlbG9jYXRpb24gPCAtMzI3NjgKLSAJCSAgICAgICB8fCAoc2lnbmVkKSByZWxvY2F0aW9uID4gMzI3NjcpCi1AQCAtMzgzMyw2ICszODQzLDggQEAgbmlvczJfZWxmMzJfcmVsb2NhdGVfc2VjdGlvbiAoYmZkICpvdXRwdXRfYmZkLAotIAkJCSAgfHwgaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfZGVmaW5lZAotIAkJCSAgfHwgaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfZGVmd2VhaykpCi0gCQkgICAgewotKwkJICAgICAgaWYgKGgpCi0rCQkJbmFtZSA9IGgtPnJvb3Qucm9vdC5zdHJpbmc7Ci0gCQkgICAgICBmb3JtYXQgPSBfKCJVbmFibGUgdG8gcmVhY2ggJXMgKGF0IDB4JTA4eCkgZnJvbSB0aGUgIgotIAkJCQkgImdsb2JhbCBwb2ludGVyIChhdCAweCUwOHgpIGJlY2F1c2UgdGhlICIKLSAJCQkJICJvZmZzZXQgKCVkKSBpcyBvdXQgb2YgdGhlIGFsbG93ZWQgcmFuZ2UsICIKLUBAIC0zODQ4LDcgKzM4NjAsNiBAQCBuaW9zMl9lbGYzMl9yZWxvY2F0ZV9zZWN0aW9uIChiZmQgKm91dHB1dF9iZmQsCi0gCQkJCQkJICByZWwtPnJfb2Zmc2V0LCByZWxvY2F0aW9uLAotIAkJCQkJCSAgcmVsLT5yX2FkZGVuZCk7Ci0gCQl9Ci0tCi0gCSAgICAgIGJyZWFrOwotIAkgICAgY2FzZSBSX05JT1MyX1VKTVA6Ci0gCSAgICAgIHIgPSBuaW9zMl9lbGYzMl9kb191am1wX3JlbG9jYXRlIChpbnB1dF9iZmQsIGhvd3RvLAotLS0gCi0yLjcuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTQtbGlidG9vbC1yZW1vdmUtcnBhdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTQtbGlidG9vbC1yZW1vdmUtcnBhdGgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDU2OTQ4ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNC1saWJ0b29sLXJlbW92ZS1ycGF0aC5wYXRjaApAQCAtMCwwICsxLDEwMCBAQAorQXBwbHkgdGhlc2UgcGF0Y2hlcyBmcm9tIG91ciBsaWJ0b29sIHBhdGNoZXMgYXMgbm90IG9ubHkgYXJlIHJlZHVuZGFudCBSUEFUSHMgYQord2FzdGUgb2Ygc3BhY2UgYnV0IHRoZXkgY2FuIGNhdXNlIGluY29ycmVjdCBsaW5raW5nIHdoZW4gbmF0aXZlIHBhY2thZ2VzIGFyZQorcmVzdG9yZWQgZnJvbSBzc3RhdGUuCisKK2ZpeC1ycGF0aC5wYXRjaDoKK1dlIGRvbid0IHdhbnQgdG8gYWRkIFJQQVRIUyB3aGljaCBtYXRjaCBkZWZhdWx0IGxpbmtlcgorc2VhcmNoIHBhdGhzLCB0aGV5J3JlIGEgd2FzdGUgb2Ygc3BhY2UuIFRoaXMgcGF0Y2gKK2ZpbHRlcnMgbGlidG9vbHMgbGlzdCBhbmQgcmVtb3ZlcyB0aGUgb25lcyB3ZSBkb24ndCBuZWVkLgorCitub3JtLXJwYXRoLnBhdGNoOgorTGlidG9vbCBtYXkgYmUgcGFzc2VkIGxpbmsgcGF0aHMgb2YgdGhlIGZvcm0gIi91c3IvbGliLy4uL2xpYiIsIHdoaWNoCitmb29sIGl0cyBkZXRlY3Rpb24gY29kZSBpbnRvIHRoaW5raW5nIGl0IHNob3VsZCBiZSBpbmNsdWRlZCBhcyBhbgorUlBBVEggaW4gdGhlIGdlbmVyYXRlZCBiaW5hcnkuICBOb3JtYWxpemUgYmVmb3JlIGNvbXBhcmlzaW9uLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CisKK2RpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKK2luZGV4IDY4MzMxN2MuLjg2MGExNmEgMTAwNjQ0CistLS0gYS9sdG1haW4uc2gKKysrKyBiL2x0bWFpbi5zaAorQEAgLTgwNTMsOCArODA1MywxNCBAQCBFT0YKKyAJCSAgZXNhYworIAkJZmkKKyAJICAgICAgZWxzZQorLQkJZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorLQkJZnVuY19hcHBlbmQgZGVwX3JwYXRoICIgJGZsYWciCisrICAgICAgICAgICAgICAgICMgV2Ugb25seSB3YW50IHRvIGhhcmRjb2RlIGluIGFuIHJwYXRoIGlmIGl0IGlzbid0IGluIHRoZQorKyAgICAgICAgICAgICAgICAjIGRlZmF1bHQgZGxzZWFyY2ggcGF0aC4KKysJICAgICAgICBjYXNlICIgJHN5c19saWJfZGxzZWFyY2hfcGF0aCAiIGluCisrCSAgICAgICAgKiIgJGxpYmRpciAiKikgOzsKKysJICAgICAgICAqKSBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCisrICAgICAgICAgICAgICAgICAgIGZ1bmNfYXBwZW5kIGRlcF9ycGF0aCAiICRmbGFnIgorKyAgICAgICAgICAgICAgICAgICA7OworKwkgICAgICAgIGVzYWMKKyAJICAgICAgZmkKKyAJICAgIGVsaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgorIAkgICAgICBjYXNlICIkcGVybV9ycGF0aCAiIGluCitAQCAtODc5MCw4ICs4Nzk2LDE0IEBAIEVPRgorIAkgICAgICBlc2FjCisgCSAgICBmaQorIAkgIGVsc2UKKy0JICAgIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKy0JICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIgJGZsYWciCisrICAgICAgICAgICAgIyBXZSBvbmx5IHdhbnQgdG8gaGFyZGNvZGUgaW4gYW4gcnBhdGggaWYgaXQgaXNuJ3QgaW4gdGhlCisrICAgICAgICAgICAgIyBkZWZhdWx0IGRsc2VhcmNoIHBhdGguCisrCSAgICBjYXNlICIgJHN5c19saWJfZGxzZWFyY2hfcGF0aCAiIGluCisrCSAgICAqIiAkbGliZGlyICIqKSA7OworKwkgICAgKikgZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorKyAgICAgICAgICAgICAgIHJwYXRoKz0iICRmbGFnIgorKyAgICAgICAgICAgICAgIDs7CisrCSAgICBlc2FjCisgCSAgZmkKKyAJZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCisgCSAgY2FzZSAiJHBlcm1fcnBhdGggIiBpbgorQEAgLTg4NDEsOCArODg1MywxNCBAQCBFT0YKKyAJICAgICAgZXNhYworIAkgICAgZmkKKyAJICBlbHNlCistCSAgICBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCistCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiICRmbGFnIgorKyAgICAgICAgICAgICMgV2Ugb25seSB3YW50IHRvIGhhcmRjb2RlIGluIGFuIHJwYXRoIGlmIGl0IGlzbid0IGluIHRoZQorKyAgICAgICAgICAgICMgZGVmYXVsdCBkbHNlYXJjaCBwYXRoLgorKwkgICAgY2FzZSAiICRzeXNfbGliX2Rsc2VhcmNoX3BhdGggIiBpbgorKwkgICAgKiIgJGxpYmRpciAiKikgOzsKKysJICAgICopIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKysgICAgICAgICAgICAgICBmdW5jX2FwcGVuZCBycGF0aCAiICRmbGFnIgorKyAgICAgICAgICAgICAgIDs7CisrCSAgICBlc2FjCisgCSAgZmkKKyAJZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCisgCSAgY2FzZSAiJGZpbmFsaXplX3Blcm1fcnBhdGggIiBpbgorZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaAoraW5kZXggNjgzMzE3Yy4uODYwYTE2YSAxMDA2NDQKKy0tLSBhL2x0bWFpbi5zaAorKysrIGIvbHRtYWluLnNoCitAQCAtODA1NSw4ICs4MDU1LDEwIEBAIEVPRgorIAkgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICMgV2Ugb25seSB3YW50IHRvIGhhcmRjb2RlIGluIGFuIHJwYXRoIGlmIGl0IGlzbid0IGluIHRoZQorICAgICAgICAgICAgICAgICAjIGRlZmF1bHQgZGxzZWFyY2ggcGF0aC4KKysgICAgICAgICAgICAgICAgZnVuY19ub3JtYWxfYWJzcGF0aCAiJGxpYmRpciIKKysgICAgICAgICAgICAgICAgbGliZGlyX25vcm09JGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0CisgCSAgICAgICAgY2FzZSAiICRzeXNfbGliX2Rsc2VhcmNoX3BhdGggIiBpbgorLQkgICAgICAgICoiICRsaWJkaXIgIiopIDs7CisrCSAgICAgICAgKiIgJGxpYmRpcl9ub3JtICIqKSA7OworIAkgICAgICAgICopIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKyAgICAgICAgICAgICAgICAgICAgZnVuY19hcHBlbmQgZGVwX3JwYXRoICIgJGZsYWciCisgICAgICAgICAgICAgICAgICAgIDs7CitAQCAtODc5OCw4ICs4ODAwLDEwIEBAIEVPRgorIAkgIGVsc2UKKyAgICAgICAgICAgICAjIFdlIG9ubHkgd2FudCB0byBoYXJkY29kZSBpbiBhbiBycGF0aCBpZiBpdCBpc24ndCBpbiB0aGUKKyAgICAgICAgICAgICAjIGRlZmF1bHQgZGxzZWFyY2ggcGF0aC4KKysgICAgICAgICAgICBmdW5jX25vcm1hbF9hYnNwYXRoICIkbGliZGlyIgorKyAgICAgICAgICAgIGxpYmRpcl9ub3JtPSRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdAorIAkgICAgY2FzZSAiICRzeXNfbGliX2Rsc2VhcmNoX3BhdGggIiBpbgorLQkgICAgKiIgJGxpYmRpciAiKikgOzsKKysJICAgICoiICRsaWJkaXJfbm9ybSAiKikgOzsKKyAJICAgICopIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKyAgICAgICAgICAgICAgICBycGF0aCs9IiAkZmxhZyIKKyAgICAgICAgICAgICAgICA7OwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE1LVJlZmluZS0uY2ZpX3NlY3Rpb25zLWNoZWNrLXRvLW9ubHktY29uc2lkZXItY29tcGFjdC0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTUtUmVmaW5lLS5jZmlfc2VjdGlvbnMtY2hlY2stdG8tb25seS1jb25zaWRlci1jb21wYWN0LS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mM2UzYTExCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE1LVJlZmluZS0uY2ZpX3NlY3Rpb25zLWNoZWNrLXRvLW9ubHktY29uc2lkZXItY29tcGFjdC0ucGF0Y2gKQEAgLTAsMCArMSw5NyBAQAorRnJvbSAzZDM0MjRlOWE4ZDZhZDU2MTYwYjk4YmY2ZTIyM2MwMzQ2MTY0NDY4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF0dGhldyBGb3J0dW5lIDxtYXR0aGV3LmZvcnR1bmVAaW1ndGVjLmNvbT4KK0RhdGU6IFRodSwgMjkgU2VwIDIwMTYgMTE6MTM6NDYgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gUmVmaW5lIC5jZmlfc2VjdGlvbnMgY2hlY2sgdG8gb25seSBjb25zaWRlciBjb21wYWN0IGVoX2ZyYW1lCisKK1RoZSAuY2ZpX3NlY3Rpb25zIGRpcmVjdGl2ZSBjYW4gYmUgc2FmZWx5IHVzZWQgbXVsdGlwbGUgdGltZXMKK3dpdGggZGlmZmVyZW50IHNlY3Rpb25zIG5hbWVkIGF0IGFueSB0aW1lIHVubGVzcyB0aGUgY29tcGFjdCBmb3JtCitvZiBleGNlcHRpb24gaGFuZGxpbmcgaXMgcmVxdWVzdGVkIGFmdGVyIENGSSBpbmZvcm1hdGlvbiBoYXMKK2JlZW4gZW1pdHRlZC4gIE9ubHkgdGhlIGNvbXBhY3QgZm9ybSBvZiBDRkkgaW5mb3JtYXRpb24gY2hhbmdlcwordGhlIHdheSBpbiB3aGljaCBDRkkgaXMgZ2VuZXJhdGVkIGFuZCB0aGVyZWZvcmUgY2Fubm90IGJlCityZXRyb3NwZWN0aXZlbHkgcmVxdWVzdGVkIGFmdGVyIGdlbmVyYXRpbmcgQ0ZJIGluZm9ybWF0aW9uLgorCitnYXMvCisKKwlQUiBnYXMvMjA2NDgKKwkqIGR3MmdlbmNmaS5jIChkb3RfY2ZpX3NlY3Rpb25zKTogUmVmaW5lIHRoZSBjaGVjayBmb3IKKwlpbmNvbnNpc3RlbnQgLmNmaV9zZWN0aW9ucyB0byBvbmx5IGNvbnNpZGVyIGNvbXBhY3QgdnMgbm9uCisJY29tcGFjdCBmb3Jtcy4KKwkqIHRlc3RzdWl0ZS9nYXMvY2ZpL2NmaS1jb21tb24tOS5kOiBOZXcgZmlsZS4KKwkqIHRlc3RzdWl0ZS9nYXMvY2ZpL2NmaS1jb21tb24tOS5zOiBOZXcgZmlsZS4KKwkqIHRlc3RzdWl0ZS9nYXMvY2ZpL2NmaS5leHA6IFJ1biBuZXcgdGVzdC4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbQorCisgZ2FzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgIHwgMTAgKysrKysrKysrKworIGdhcy9kdzJnZW5jZmkuYyAgICAgICAgICAgICAgICAgICAgICB8ICA1ICsrKystCisgZ2FzL3Rlc3RzdWl0ZS9nYXMvY2ZpL2NmaS1jb21tb24tOS5kIHwgMjMgKysrKysrKysrKysrKysrKysrKysrKysKKyBnYXMvdGVzdHN1aXRlL2dhcy9jZmkvY2ZpLWNvbW1vbi05LnMgfCAgNCArKysrCisgZ2FzL3Rlc3RzdWl0ZS9nYXMvY2ZpL2NmaS5leHAgICAgICAgIHwgIDEgKworIDUgZmlsZXMgY2hhbmdlZCwgNDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBnYXMvdGVzdHN1aXRlL2dhcy9jZmkvY2ZpLWNvbW1vbi05LmQKKyBjcmVhdGUgbW9kZSAxMDA2NDQgZ2FzL3Rlc3RzdWl0ZS9nYXMvY2ZpL2NmaS1jb21tb24tOS5zCisKK0luZGV4OiBnaXQvZ2FzL2R3MmdlbmNmaS5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvZ2FzL2R3MmdlbmNmaS5jCisrKysgZ2l0L2dhcy9kdzJnZW5jZmkuYworQEAgLTEyNDQsNyArMTI0NCwxMCBAQCBkb3RfY2ZpX3NlY3Rpb25zIChpbnQgaWdub3JlZCBBVFRSSUJVVEVfCisgICAgICAgfQorIAorICAgZGVtYW5kX2VtcHR5X3Jlc3Rfb2ZfbGluZSAoKTsKKy0gIGlmIChjZmlfc2VjdGlvbnNfc2V0ICYmIGNmaV9zZWN0aW9ucyAhPSBzZWN0aW9ucykKKysgIGlmIChjZmlfc2VjdGlvbnNfc2V0CisrICAgICAgJiYgKHNlY3Rpb25zICYgKENGSV9FTUlUX2VoX2ZyYW1lIHwgQ0ZJX0VNSVRfZWhfZnJhbWVfY29tcGFjdCkpCisrICAgICAgJiYgKGNmaV9zZWN0aW9ucyAmIChDRklfRU1JVF9laF9mcmFtZSB8IENGSV9FTUlUX2VoX2ZyYW1lX2NvbXBhY3QpKQorKwkgIT0gKHNlY3Rpb25zICYgKENGSV9FTUlUX2VoX2ZyYW1lIHwgQ0ZJX0VNSVRfZWhfZnJhbWVfY29tcGFjdCkpKQorICAgICBhc19iYWQgKF8oImluY29uc2lzdGVudCB1c2VzIG9mIC5jZmlfc2VjdGlvbnMiKSk7CisgICBjZmlfc2VjdGlvbnMgPSBzZWN0aW9uczsKKyB9CitJbmRleDogZ2l0L2dhcy90ZXN0c3VpdGUvZ2FzL2NmaS9jZmktY29tbW9uLTkuZAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAorKysrIGdpdC9nYXMvdGVzdHN1aXRlL2dhcy9jZmkvY2ZpLWNvbW1vbi05LmQKK0BAIC0wLDAgKzEsMjMgQEAKKysjb2JqZHVtcDogLVdmCisrI25hbWU6IENGSSBjb21tb24gOQorKyMuLi4KKytDb250ZW50cyBvZiB0aGUgLmVoX2ZyYW1lIHNlY3Rpb246CisrCisrMDAwMDAwMDAgMCswMDEwIDArMDAwMCBDSUUKKysgIFZlcnNpb246ICAgICAgICAgICAgICAgMQorKyAgQXVnbWVudGF0aW9uOiAgICAgICAgICAielIiCisrICBDb2RlIGFsaWdubWVudCBmYWN0b3I6IC4qCisrICBEYXRhIGFsaWdubWVudCBmYWN0b3I6IC4qCisrICBSZXR1cm4gYWRkcmVzcyBjb2x1bW46IC4qCisrICBBdWdtZW50YXRpb24gZGF0YTogICAgIFswMV1iCisrCisrICBEV19DRkFfbm9wCisrICBEV19DRkFfbm9wCisrICBEV19DRkFfbm9wCisrCisrMDAwMDAwMTQgMCswMCgxMHwxOHwxY3wyMCkgMCswMDE4IEZERSBjaWU9MCswMDAwIHBjPS4qCisrCisrICBEV19DRkFfbm9wCisrICBEV19DRkFfbm9wCisrICBEV19DRkFfbm9wCisrIy4uLgorSW5kZXg6IGdpdC9nYXMvdGVzdHN1aXRlL2dhcy9jZmkvY2ZpLWNvbW1vbi05LnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwKKysrKyBnaXQvZ2FzL3Rlc3RzdWl0ZS9nYXMvY2ZpL2NmaS1jb21tb24tOS5zCitAQCAtMCwwICsxLDQgQEAKKysJLmNmaV9zZWN0aW9ucyAuZWhfZnJhbWUKKysJLmNmaV9zdGFydHByb2Mgc2ltcGxlCisrCS5jZmlfc2VjdGlvbnMgLmRlYnVnX2ZyYW1lCisrCS5jZmlfZW5kcHJvYworSW5kZXg6IGdpdC9nYXMvdGVzdHN1aXRlL2dhcy9jZmkvY2ZpLmV4cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2dhcy90ZXN0c3VpdGUvZ2FzL2NmaS9jZmkuZXhwCisrKysgZ2l0L2dhcy90ZXN0c3VpdGUvZ2FzL2NmaS9jZmkuZXhwCitAQCAtMTM1LDQgKzEzNSw1IEBAIGlmIHsgIVtpc3RhcmdldCAiaHBwYTY0Ki0qIl0gfSB0aGVuIHsKKyAgICAgcnVuX2R1bXBfdGVzdCAiY2ZpLWNvbW1vbi02IgorICAgfQorICAgcnVuX2R1bXBfdGVzdCAiY2ZpLWNvbW1vbi03IgorKyAgcnVuX2R1bXBfdGVzdCAiY2ZpLWNvbW1vbi05IgorIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNS1iaW51dGlscy1taXBzLWdhcy1waWMtcmVsYXgtbGlua29uY2UuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNS1iaW51dGlscy1taXBzLWdhcy1waWMtcmVsYXgtbGlua29uY2UuZGlmZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGI5NzFhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE1LWJpbnV0aWxzLW1pcHMtZ2FzLXBpYy1yZWxheC1saW5rb25jZS5kaWZmCkBAIC0wLDAgKzEsNjUgQEAKK1BhdGNoIHRha2VuIGZyb20gQmludXRpbHMgQnVnemlsbGE6CisKKyAgaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjA2NDkKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+CisKK0luZGV4OiBiaW51dGlscy9nYXMvY29uZmlnL3RjLW1pcHMuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGJpbnV0aWxzLm9yaWcvZ2FzL2NvbmZpZy90Yy1taXBzLmMJMjAxNi0wOS0yOSAwNToxMjozMS4wMDAwMDAwMDAgKzAxMDAKKysrKyBiaW51dGlscy9nYXMvY29uZmlnL3RjLW1pcHMuYwkyMDE2LTA5LTI5IDIwOjA1OjEzLjI1NzQxMTA4NCArMDEwMAorQEAgLTEzNTMsNyArMTM1Myw3IEBAIHN0YXRpYyB2b2lkIHNfbWlwc19zdGFiIChpbnQpOworIHN0YXRpYyB2b2lkIHNfbWlwc193ZWFrZXh0IChpbnQpOworIHN0YXRpYyB2b2lkIHNfbWlwc19maWxlIChpbnQpOworIHN0YXRpYyB2b2lkIHNfbWlwc19sb2MgKGludCk7Cistc3RhdGljIGJmZF9ib29sZWFuIHBpY19uZWVkX3JlbGF4IChzeW1ib2xTICosIGFzZWN0aW9uICopOworK3N0YXRpYyBiZmRfYm9vbGVhbiBwaWNfbmVlZF9yZWxheCAoc3ltYm9sUyAqKTsKKyBzdGF0aWMgaW50IHJlbGF4ZWRfYnJhbmNoX2xlbmd0aCAoZnJhZ1MgKiwgYXNlY3Rpb24gKiwgaW50KTsKKyBzdGF0aWMgaW50IHJlbGF4ZWRfbWljcm9taXBzXzE2Yml0X2JyYW5jaF9sZW5ndGggKGZyYWdTICosIGFzZWN0aW9uICosIGludCk7Cisgc3RhdGljIGludCByZWxheGVkX21pY3JvbWlwc18zMmJpdF9icmFuY2hfbGVuZ3RoIChmcmFnUyAqLCBhc2VjdGlvbiAqLCBpbnQpOworQEAgLTQyNTgsNiArNDI1OCw4IEBAIG1pcHNfbW92ZV90ZXh0X2xhYmVscyAodm9pZCkKKyAgIG1pcHNfbW92ZV9sYWJlbHMgKHNlZ19pbmZvIChub3dfc2VnKS0+bGFiZWxfbGlzdCwgVFJVRSk7CisgfQorIAorKy8qIER1cGxpY2F0ZSB0aGUgdGVzdCBmb3IgTElOS19PTkNFIHNlY3Rpb25zIGFzIGluIGBhZGp1c3RfcmVsb2Nfc3ltcycuICAqLworKworIHN0YXRpYyBiZmRfYm9vbGVhbgorIHNfaXNfbGlua29uY2UgKHN5bWJvbFMgKnN5bSwgc2VnVCBmcm9tX3NlZykKKyB7CitAQCAtMTQ4MjMsNyArMTQ4MjUsNyBAQCBtaXBzX2Zyb2JfZmlsZSAodm9pZCkKKyAJIGNvbnN0YW50czsgd2UnbGwgcmVwb3J0IGFuIGVycm9yIGZvciB0aG9zZSBsYXRlci4gICovCisgICAgICAgaWYgKGdvdDE2X3JlbG9jX3AgKGwtPmZpeHAtPmZ4X3JfdHlwZSkKKyAJICAmJiAhKGwtPmZpeHAtPmZ4X2FkZHN5CistCSAgICAgICAmJiBwaWNfbmVlZF9yZWxheCAobC0+Zml4cC0+ZnhfYWRkc3ksIGwtPnNlZykpKQorKwkgICAgICAgJiYgcGljX25lZWRfcmVsYXggKGwtPmZpeHAtPmZ4X2FkZHN5KSkpCisgCWNvbnRpbnVlOworIAorICAgICAgIC8qIENoZWNrIHF1aWNrbHkgd2hldGhlciB0aGUgbmV4dCBmaXh1cCBoYXBwZW5zIHRvIGJlIGEgbWF0Y2hpbmcgJWxvLiAgKi8KK0BAIC0xNzA0Myw3ICsxNzA0NSw3IEBAIG5vcGljX25lZWRfcmVsYXggKHN5bWJvbFMgKnN5bSwgaW50IGJlZm8KKyAvKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgZ2l2ZW4gc3ltYm9sIHNob3VsZCBiZSBjb25zaWRlcmVkIGxvY2FsIGZvciBTVlI0IFBJQy4gICovCisgCisgc3RhdGljIGJmZF9ib29sZWFuCistcGljX25lZWRfcmVsYXggKHN5bWJvbFMgKnN5bSwgYXNlY3Rpb24gKnNlZ3R5cGUpCisrcGljX25lZWRfcmVsYXggKHN5bWJvbFMgKnN5bSkKKyB7CisgICBhc2VjdGlvbiAqc3ltc2VjOworIAorQEAgLTE3MDY4LDcgKzE3MDcwLDYgQEAgcGljX25lZWRfcmVsYXggKHN5bWJvbFMgKnN5bSwgYXNlY3Rpb24gKgorICAgcmV0dXJuICghYmZkX2lzX3VuZF9zZWN0aW9uIChzeW1zZWMpCisgCSAgJiYgIWJmZF9pc19hYnNfc2VjdGlvbiAoc3ltc2VjKQorIAkgICYmICFiZmRfaXNfY29tX3NlY3Rpb24gKHN5bXNlYykKKy0JICAmJiAhc19pc19saW5rb25jZSAoc3ltLCBzZWd0eXBlKQorIAkgIC8qIEEgZ2xvYmFsIG9yIHdlYWsgc3ltYm9sIGlzIHRyZWF0ZWQgYXMgZXh0ZXJuYWwuICAqLworIAkgICYmICghU19JU19XRUFLIChzeW0pICYmICFTX0lTX0VYVEVSTkFMIChzeW0pKSk7CisgfQorQEAgLTE3NTA3LDcgKzE3NTA4LDcgQEAgbWRfZXN0aW1hdGVfc2l6ZV9iZWZvcmVfcmVsYXggKGZyYWdTICpmcgorICAgaWYgKG1pcHNfcGljID09IE5PX1BJQykKKyAgICAgY2hhbmdlID0gbm9waWNfbmVlZF9yZWxheCAoZnJhZ3AtPmZyX3N5bWJvbCwgMCk7CisgICBlbHNlIGlmIChtaXBzX3BpYyA9PSBTVlI0X1BJQykKKy0gICAgY2hhbmdlID0gcGljX25lZWRfcmVsYXggKGZyYWdwLT5mcl9zeW1ib2wsIHNlZ3R5cGUpOworKyAgICBjaGFuZ2UgPSBwaWNfbmVlZF9yZWxheCAoZnJhZ3AtPmZyX3N5bWJvbCk7CisgICBlbHNlIGlmIChtaXBzX3BpYyA9PSBWWFdPUktTX1BJQykKKyAgICAgLyogRm9yIHZ4d29ya3MsIEdPVDE2IHJlbG9jYXRpb25zIG5ldmVyIGhhdmUgYSBjb3JyZXNwb25kaW5nIExPMTYuICAqLworICAgICBjaGFuZ2UgPSAwOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlsc18yLjI2LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlsc18yLjI2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzBmZmJmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHNfMi4yNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLXJlcXVpcmUgYmludXRpbHMuaW5jCi1yZXF1aXJlIGJpbnV0aWxzLSR7UFZ9LmluYwotCi1ERVBFTkRTICs9ICJmbGV4IGJpc29uIHpsaWIiCi0KLUVYVFJBX09FQ09ORiArPSAiLS13aXRoLXN5c3Jvb3Q9LyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtaW5zdGFsbC1saWJiZmQgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGwtbGliaWJlcnR5IFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1zaGFyZWQgXAotICAgICAgICAgICAgICAgIC0td2l0aC1zeXN0ZW0temxpYiBcCi0gICAgICAgICAgICAgICAgIgotCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0tZW5hYmxlLXRhcmdldHM9YWxsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUtNjQtYml0LWJmZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGwtbGliaWJlcnR5IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUtaW5zdGFsbC1saWJiZmQiCi0KLWRvX2luc3RhbGxfY2xhc3MtbmF0aXZlICgpIHsKLQlhdXRvdG9vbHNfZG9faW5zdGFsbAotCi0JIyBJbnN0YWxsIHRoZSBsaWJpYmVydHkgaGVhZGVyCi0JaW5zdGFsbCAtZCAke0R9JHtpbmNsdWRlZGlyfQotCWluc3RhbGwgLW0gNjQ0ICR7U30vaW5jbHVkZS9hbnNpZGVjbC5oICR7RH0ke2luY2x1ZGVkaXJ9Ci0JaW5zdGFsbCAtbSA2NDQgJHtTfS9pbmNsdWRlL2xpYmliZXJ0eS5oICR7RH0ke2luY2x1ZGVkaXJ9Ci0KLQkjIFdlIG9ubHkgd2FudCBsaWJpYmVydHksIGxpYmJmZCBhbmQgbGlib3Bjb2RlcwotCXJtIC1yZiAke0R9JHtiaW5kaXJ9Ci0Jcm0gLXJmICR7RH0ke3ByZWZpeH0vJHtUQVJHRVRfU1lTfQotCXJtIC1yZiAke0R9JHtwcmVmaXh9L2xpYi9sZHNjcmlwdHMKLQlybSAtcmYgJHtEfSR7cHJlZml4fS9zaGFyZS9pbmZvCi0Jcm0gLXJmICR7RH0ke3ByZWZpeH0vc2hhcmUvbG9jYWxlCi0Jcm0gLXJmICR7RH0ke3ByZWZpeH0vc2hhcmUvbWFuCi0Jcm1kaXIgJHtEfSR7cHJlZml4fS9zaGFyZSB8fCA6Ci0Jcm1kaXIgJHtEfS8ke2xpYmRpcn0vZ2NjLWxpYiB8fCA6Ci0Jcm1kaXIgJHtEfS8ke2xpYmRpcn02NC9nY2MtbGliIHx8IDoKLQlybWRpciAke0R9LyR7bGliZGlyfSB8fCA6Ci0Jcm1kaXIgJHtEfS8ke2xpYmRpcn02NCB8fCA6Ci19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHNfMi4yNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHNfMi4yNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTE0MzdiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlsc18yLjI3LmJiCkBAIC0wLDAgKzEsNDUgQEAKK3JlcXVpcmUgYmludXRpbHMuaW5jCityZXF1aXJlIGJpbnV0aWxzLSR7UFZ9LmluYworCitERVBFTkRTICs9ICJmbGV4IGJpc29uIHpsaWIiCisKK0VYVFJBX09FQ09ORiArPSAiLS13aXRoLXN5c3Jvb3Q9LyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtaW5zdGFsbC1saWJiZmQgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGwtbGliaWJlcnR5IFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1zaGFyZWQgXAorICAgICAgICAgICAgICAgIC0td2l0aC1zeXN0ZW0temxpYiBcCisgICAgICAgICAgICAgICAgIgorCitFWFRSQV9PRU1BS0VfYXBwZW5kX2xpYmMtbXVzbCA9ICJcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndF9jdl9mdW5jX2dudWdldHRleHQxX2xpYmM9eWVzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd0X2N2X2Z1bmNfZ251Z2V0dGV4dDJfbGliYz15ZXMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0tZW5hYmxlLXRhcmdldHM9YWxsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUtNjQtYml0LWJmZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGwtbGliaWJlcnR5IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUtaW5zdGFsbC1saWJiZmQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWRpc2FibGUtd2Vycm9yIgorCitkb19pbnN0YWxsX2NsYXNzLW5hdGl2ZSAoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKworCSMgSW5zdGFsbCB0aGUgbGliaWJlcnR5IGhlYWRlcgorCWluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0KKwlpbnN0YWxsIC1tIDY0NCAke1N9L2luY2x1ZGUvYW5zaWRlY2wuaCAke0R9JHtpbmNsdWRlZGlyfQorCWluc3RhbGwgLW0gNjQ0ICR7U30vaW5jbHVkZS9saWJpYmVydHkuaCAke0R9JHtpbmNsdWRlZGlyfQorCisJIyBXZSBvbmx5IHdhbnQgbGliaWJlcnR5LCBsaWJiZmQgYW5kIGxpYm9wY29kZXMKKwlybSAtcmYgJHtEfSR7YmluZGlyfQorCXJtIC1yZiAke0R9JHtwcmVmaXh9LyR7VEFSR0VUX1NZU30KKwlybSAtcmYgJHtEfSR7cHJlZml4fS9saWIvbGRzY3JpcHRzCisJcm0gLXJmICR7RH0ke3ByZWZpeH0vc2hhcmUvaW5mbworCXJtIC1yZiAke0R9JHtwcmVmaXh9L3NoYXJlL2xvY2FsZQorCXJtIC1yZiAke0R9JHtwcmVmaXh9L3NoYXJlL21hbgorCXJtZGlyICR7RH0ke3ByZWZpeH0vc2hhcmUgfHwgOgorCXJtZGlyICR7RH0vJHtsaWJkaXJ9L2djYy1saWIgfHwgOgorCXJtZGlyICR7RH0vJHtsaWJkaXJ9NjQvZ2NjLWxpYiB8fCA6CisJcm1kaXIgJHtEfS8ke2xpYmRpcn0gfHwgOgorCXJtZGlyICR7RH0vJHtsaWJkaXJ9NjQgfHwgOgorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jvb3RjaGFydDIvYm9vdGNoYXJ0Mi8wMDAxLUZpeGVkLU1pc3NpbmctZGVmYXVsdC12YWx1ZS1mb3ItQk9PVExPR19ERVNULnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ib290Y2hhcnQyL2Jvb3RjaGFydDIvMDAwMS1GaXhlZC1NaXNzaW5nLWRlZmF1bHQtdmFsdWUtZm9yLUJPT1RMT0dfREVTVC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTg4MTRhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ib290Y2hhcnQyL2Jvb3RjaGFydDIvMDAwMS1GaXhlZC1NaXNzaW5nLWRlZmF1bHQtdmFsdWUtZm9yLUJPT1RMT0dfREVTVC5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIDIyMjVhYjIwMzhiZmU1MGYxNmY5NzJlMzlkODliY2QwYmQ3NzY3ZjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTdGVmZmVuIFBhbmtyYXR6IDxrcmF0ejAwQGdteC5kZT4KK0RhdGU6IFR1ZSwgOSBGZWIgMjAxNiAxMzo0OTo0MiArMDEwMAorU3ViamVjdDogW1BBVENIXSBGaXhlZDogTWlzc2luZyBkZWZhdWx0IHZhbHVlIGZvciBCT09UTE9HX0RFU1QKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitCVUlMRExPR19ERVNUIHNlZW1zIHRvIGJlIGEgdHlwbyBvciBtaXgtdXAgd2hpY2ggd2FzIGludHJvZHVjZWQgd2l0aCAyODFkMWRmODA4ODRiZjI5NjljNTA5ZWM2MGVlOGE2NTkzNTI0ZmU4CisKK1NpZ25lZC1vZmYtYnk6IFBldGVyIExpdSA8cGV0ZXIueC5saXVAZXh0ZXJuYWwuYXRsYXNjb3Bjby5jb20+CistLS0KKyBib290Y2hhcnRkLmluIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvYm9vdGNoYXJ0ZC5pbiBiL2Jvb3RjaGFydGQuaW4KK2luZGV4IGY1OGFiOWUuLjMwYWY2NzcgMTAwNzU1CistLS0gYS9ib290Y2hhcnRkLmluCisrKysgYi9ib290Y2hhcnRkLmluCitAQCAtMzcsNyArMzcsNyBAQCBQQVRIPSIvc2JpbjovYmluOi91c3Ivc2JpbjovdXNyL2JpbjokUEFUSCIKKyAKKyAjIERlZmF1bHRzLCBpbiBjYXNlIHdlIGNhbid0IGZpbmQgb3VyIGNvbmZpZ3VyYXRpb24KKyBTQU1QTEVfSFo9NTAKKy1CVUlMRExPR19ERVNUPS92YXIvbG9nL2Jvb3RjaGFydC50Z3oKKytCT09UTE9HX0RFU1Q9L3Zhci9sb2cvYm9vdGNoYXJ0LnRnegorIEFVVE9fUkVOREVSPSJubyIKKyBBVVRPX1JFTkRFUl9ESVI9Ii92YXIvbG9nIgorIEFVVE9fUkVOREVSX0ZPUk1BVD0icG5nIgorLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jvb3RjaGFydDIvYm9vdGNoYXJ0Mi8wMDAxLWNvbGxlY3Rvci1BbGxvY2F0ZS1zcGFjZS1vbi1oZWFwLWZvci1jaHVua3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jvb3RjaGFydDIvYm9vdGNoYXJ0Mi8wMDAxLWNvbGxlY3Rvci1BbGxvY2F0ZS1zcGFjZS1vbi1oZWFwLWZvci1jaHVua3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E4ODEzZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYm9vdGNoYXJ0Mi9ib290Y2hhcnQyLzAwMDEtY29sbGVjdG9yLUFsbG9jYXRlLXNwYWNlLW9uLWhlYXAtZm9yLWNodW5rcy5wYXRjaApAQCAtMCwwICsxLDQ1IEBACitGcm9tIDA5NTA1NTMyYjQ5NTczNjYzZmI0ZmY0ZGFkNDI0ZGMyZWY0YzFmODQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLeWxlIFJ1c3NlbGwgPGJreWxlcnVzc2VsbEBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDEzIEp1bCAyMDE2IDE3OjMwOjAwIC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbGxlY3RvcjogQWxsb2NhdGUgc3BhY2Ugb24gaGVhcCBmb3IgY2h1bmtzCisKK05pY2VyIGZvciBlbWJlZGRlZCBkZXZpY2VzIHdoaWNoIG1heSBoYXZlIHNtYWxsZXIgc3RhY2sgbGltaXRhdGlvbnMuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20veHJteC9ib290Y2hhcnQvcHVsbC83NF0KKworU2lnbmVkLW9mZi1ieTogS3lsZSBSdXNzZWxsIDxia3lsZXJ1c3NlbGxAZ21haWwuY29tPgorLS0tCisgY29sbGVjdG9yL2R1bXAuYyB8IDcgKysrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb2xsZWN0b3IvZHVtcC5jIGIvY29sbGVjdG9yL2R1bXAuYworaW5kZXggZTY3M2I1Yi4uMmYwOTRiNCAxMDA2NDQKKy0tLSBhL2NvbGxlY3Rvci9kdW1wLmMKKysrKyBiL2NvbGxlY3Rvci9kdW1wLmMKK0BAIC0xODQsMTIgKzE4NCwxMiBAQCBzdGF0aWMgdm9pZCBkdW1wX2J1ZmZlcnMgKER1bXBTdGF0ZSAqcykKKyAJbG9nICgicmVhZGluZyAlZCBjaHVua3MgKG9mICVkKSAuLi5cbiIsIG1heF9jaHVuaywgcy0+bWFwLm1heF9jaHVuayk7CisgCWZvciAoaSA9IDA7IGkgPCBtYXhfY2h1bms7IGkrKykgeworIAkJRklMRSAqb3V0cHV0OworLQkJY2hhciBidWZmZXJbQ0hVTktfU0laRV07CistCQlDaHVuayAqYyA9IChDaHVuayAqKSZidWZmZXI7CisrCQljaGFyICpidWZmZXIgPSBtYWxsb2MoQ0hVTktfU0laRSk7CisrCQlDaHVuayAqYyA9IChDaHVuayAqKWJ1ZmZlcjsKKyAJCXNpemVfdCBhZGRyID0gKHNpemVfdCkgcy0+bWFwLmNodW5rc1tpXTsKKyAKKyAJCWxzZWVrIChzLT5tZW0sIGFkZHIsIFNFRUtfU0VUKTsKKy0JCXJlYWQgKHMtPm1lbSwgJmJ1ZmZlciwgQ0hVTktfU0laRSk7CisrCQlyZWFkIChzLT5tZW0sIGJ1ZmZlciwgQ0hVTktfU0laRSk7CisgCQkvKiAgICAgIGxvZyAoInR5cGU6ICclcycgbGVuICVkXG4iLAorIAkJCWMtPmRlc3Rfc3RyZWFtLCAoaW50KWMtPmxlbmd0aCk7ICovCisgCitAQCAtMTk3LDYgKzE5Nyw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfYnVmZmVycyAoRHVtcFN0YXRlICpzKQorIAkJZndyaXRlIChjLT5kYXRhLCAxLCBjLT5sZW5ndGgsIG91dHB1dCk7CisgCQlieXRlc19kdW1wZWQgKz0gYy0+bGVuZ3RoOworIAkJZmNsb3NlIChvdXRwdXQpOworKyAgICAgICAgICAgICAgICBmcmVlKGJ1ZmZlcik7CisgCX0KKyAJbG9nICgid3JvdGUgJWxkIGtiXG4iLCAobG9uZykoYnl0ZXNfZHVtcGVkKzEwMjMpLzEwMjQpOworIH0KKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ib290Y2hhcnQyL2Jvb3RjaGFydDJfMC4xNC44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ib290Y2hhcnQyL2Jvb3RjaGFydDJfMC4xNC44LmJiCmluZGV4IDg2YzYxNGEuLjRmMDE3MzQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYm9vdGNoYXJ0Mi9ib290Y2hhcnQyXzAuMTQuOC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jvb3RjaGFydDIvYm9vdGNoYXJ0Ml8wLjE0LjguYmIKQEAgLTkyLDE0ICs5MiwxOCBAQAogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbW1lZWtzL2Jvb3RjaGFydC5naXQgXAogICAgICAgICAgICBmaWxlOi8vYm9vdGNoYXJ0ZF9zdG9wLnNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4ZWQtTWlzc2luZy1kZWZhdWx0LXZhbHVlLWZvci1CT09UTE9HX0RFU1QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb2xsZWN0b3ItQWxsb2NhdGUtc3BhY2Utb24taGVhcC1mb3ItY2h1bmtzLnBhdGNoIFwKICAgICAgICAgICAiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiBTUkNSRVYgPSAiNDhlMDA3MTA0ODU2NGM2YWY3NWFiOTY5ZTg0MmQ2ZGVjODA4ZGEwOSIKIAotaW5oZXJpdCBzeXN0ZW1kCi1pbmhlcml0IHVwZGF0ZS1yYy5kCi1pbmhlcml0IHB5dGhvbm5hdGl2ZQoraW5oZXJpdCBzeXN0ZW1kIHVwZGF0ZS1yYy5kIHB5dGhvbjNuYXRpdmUgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV8ke1BOfSA9ICJib290Y2hhcnRkIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2Jvb3RjaGFydGRdID0gIiR7YmFzZV9zYmluZGlyfS9ib290Y2hhcnRkIgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgogCiAjIFRoZSBvbmx5IHJlYXNvbiB0byBidWlsZCBib290Y2hhcnQyLW5hdGl2ZSBpcyBmb3IgYSBuYXRpdmUgcHlib290Y2hhcnRndWkuCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKQEAgLTExMCwxMyArMTE0LDYgQEAKIElOSVRTQ1JJUFRfTkFNRSA9ICJib290Y2hhcnRkX3N0b3Auc2giCiBJTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCA5OSAyIDMgNCA1IC4iCiAKLSMgV2Ugd2FudCBuYXRpdmUgcHlib290Y2hhcnRndWkgdG8gZXhlY3V0ZSB3aXRoIHRoZSBjb3JyZWN0IFB5dGhvbiBpbnRlcnBldGVyLgotZG9fY29tcGlsZV9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKLSAgICBlY2hvICIjISAke1BZVEhPTn0iIHwgY2F0IC0gJHtTfS9weWJvb3RjaGFydGd1aS5weSA+ICR7V09SS0RJUn0vdGVtcF9weWJvb3RjaGFydGd1aQotICAgIG12ICR7V09SS0RJUn0vdGVtcF9weWJvb3RjaGFydGd1aSAke1N9L3B5Ym9vdGNoYXJ0Z3VpLnB5Ci0gICAgY2htb2QgK3ggJHtTfS9weWJvb3RjaGFydGd1aQotfQotCiBkb19jb21waWxlX3ByZXBlbmQgKCkgewogICAgIGV4cG9ydCBQWV9MSUJESVI9IiR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9IgogICAgIGV4cG9ydCBCSU5ESVI9IiR7YmluZGlyfSIKQEAgLTEzNSwxNyArMTMyLDIxIEBACiAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vYm9vdGNoYXJ0ZF9zdG9wLnNoICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAogCiAgICAgZWNobyAnRVhJVF9QUk9DPSIkRVhJVF9QUk9DIG1hdGNoYm94LXdpbmRvdy1tYW5hZ2VyIicgPj4gJHtEfSR7c3lzY29uZmRpcn0vYm9vdGNoYXJ0ZC5jb25mCisKKyAgICMgVXNlIHB5dGhvbiAzIGluc3RlYWQgb2YgcHl0aG9uIDIKKyAgIHNlZCAtaSAtZSAnMXMsIyEuKnB5dGhvbi4qLCMhJHtiaW5kaXJ9L3B5dGhvbjMsJyAke0R9JHtiaW5kaXJ9L3B5Ym9vdGNoYXJ0Z3VpCiB9CiAKIFBBQ0tBR0VTID0rICJweWJvb3RjaGFydGd1aSIKLUZJTEVTX3B5Ym9vdGNoYXJ0Z3VpICs9ICIke2xpYmRpcn0vcHl0aG9uKi9zaXRlLXBhY2thZ2VzL3B5Ym9vdGNoYXJ0Z3VpICR7YmluZGlyfS9weWJvb3RjaGFydGd1aSIKLVJERVBFTkRTX3B5Ym9vdGNoYXJ0Z3VpID0gInB5dGhvbi1weWNhaXJvIHB5dGhvbi1jb21wcmVzc2lvbiBweXRob24taW1hZ2UgcHl0aG9uLXRleHR1dGlscyBweXRob24tc2hlbGwgcHl0aG9uLWNvbXByZXNzaW9uIHB5dGhvbi1jb2RlY3MiCitGSUxFU19weWJvb3RjaGFydGd1aSArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vcHlib290Y2hhcnRndWkgJHtiaW5kaXJ9L3B5Ym9vdGNoYXJ0Z3VpIgorUkRFUEVORFNfcHlib290Y2hhcnRndWkgPSAicHl0aG9uMy1weWNhaXJvIHB5dGhvbjMtY29tcHJlc3Npb24gcHl0aG9uMy1pbWFnZSBweXRob24zLXRleHR1dGlscyBweXRob24zLXNoZWxsIHB5dGhvbjMtY29tcHJlc3Npb24gcHl0aG9uMy1jb2RlY3MiCiBSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAnc3lzdmluaXQtcGlkb2YnLCAncHJvY3BzJywgZCl9IgogUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICJsc2IiCi1ERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIHB5dGhvbi1weWNhaXJvLW5hdGl2ZSIKK0RFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgcHl0aG9uMy1weWNhaXJvLW5hdGl2ZSIKIAogUEFDS0FHRVMgPSsgImJvb3RjaGFydGQtc3RvcC1pbml0c2NyaXB0IgogRklMRVNfYm9vdGNoYXJ0ZC1zdG9wLWluaXRzY3JpcHQgKz0gIiR7c3lzY29uZmRpcn0vaW5pdC5kICR7c3lzY29uZmRpcn0vcmMqLmQiCitSREVQRU5EU19ib290Y2hhcnRkLXN0b3AtaW5pdHNjcmlwdCA9ICIke1BOfSIKIAogRklMRVNfJHtQTn0gKz0gIiR7YmFzZV9saWJkaXJ9L2Jvb3RjaGFydC9ib290Y2hhcnQtY29sbGVjdG9yIgogRklMRVNfJHtQTn0gKz0gIiR7YmFzZV9saWJkaXJ9L2Jvb3RjaGFydC90bXBmcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHMvZml4LXN5bWxpbmstY3JlYXRpb24tbXVsdGlwbGUtdGltZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J0cmZzLXRvb2xzL2J0cmZzLXRvb2xzL2ZpeC1zeW1saW5rLWNyZWF0aW9uLW11bHRpcGxlLXRpbWVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTQ1NDk2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHMvZml4LXN5bWxpbmstY3JlYXRpb24tbXVsdGlwbGUtdGltZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1Gcm9tIDA1YWI3OGU5MTgzNTc1ZTM4ZjM0MmUwNWEwNTZjYjdiY2QxZTUyZTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDE4IEZlYiAyMDE2IDIwOjQxOjI4IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGJ0cmZzLXByb2dzOiBmaXggc3ltbGluayBjcmVhdGlvbiBtdWx0aXBsZSB0aW1lcwotCi1UaGUgcnVsZSB0byBjcmVhdGUgc3ltbGluayBpbiBNYWtlZmlsZSBjYXVzZWQgcGFyYWxsZWwgaXNzdWU6Ci0kIG1ha2UgLWogNDAgREVTVERJUj0vaW1hZ2UgaW5zdGFsbCBCVUlMRF9WRVJCT1NFPTEKLS4uLgotICAxICAgICBbTE5dICAgICBsaWJidHJmcy5zby4wCi0gIDIgICAgIFtMTl0gICAgIGxpYmJ0cmZzLnNvCi0gIDMgbG4gLXMgLWYgbGliYnRyZnMuc28uMC4xIGxpYmJ0cmZzLnNvLjAKLSAgNCBsbiAtcyAtZiBsaWJidHJmcy5zby4wLjEgbGliYnRyZnMuc28uMAotICA1IGxuIC1zIC1mIGxpYmJ0cmZzLnNvLjAuMSBsaWJidHJmcy5zbwotICA2IGxuIC1zIC1mIGxpYmJ0cmZzLnNvLjAuMSBsaWJidHJmcy5zbwotLi4uCi0KLUl0IGZhaWxlZCBvY2Nhc2lvbmFsbHk6Ci0uLi4KLXxzeW1saW5rYXQ6IGNvdWxkbid0IHN0YXQgJ2dpdC9saWJidHJmcy5zbycgZXZlbiB0aG91Z2ggc3ltbGluawotY3JlYXRpb24gc3VjY2VlZGVkIChObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5KS4KLXxsbjogZmFpbGVkIHRvIGNyZWF0ZSBzeW1ib2xpYyBsaW5rICdsaWJidHJmcy5zbyc6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKLS4uLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbbGludXgtYnRyZnNAdmdlci5rZXJuZWwub3JnXQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gTWFrZWZpbGUuaW4gfCAzICstLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KLWluZGV4IDFmNDAwMmUuLjE2ZWVhZjkgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5pbgotKysrIGIvTWFrZWZpbGUuaW4KLUBAIC0yMzYsOCArMjM2LDcgQEAgJChsaWJzX3N0YXRpYyk6ICQobGliYnRyZnNfb2JqZWN0cykKLSAKLSAkKGxpYl9saW5rcyk6Ci0gCUBlY2hvICIgICAgW0xOXSAgICAgJEAiCi0tCSQoUSkkKExOX1MpIC1mIGxpYmJ0cmZzLnNvLjAuMSBsaWJidHJmcy5zby4wCi0tCSQoUSkkKExOX1MpIC1mIGxpYmJ0cmZzLnNvLjAuMSBsaWJidHJmcy5zbwotKwkkKFEpJChMTl9TKSAtZiBsaWJidHJmcy5zby4wLjEgJEAKLSAKLSAjIGtlZXAgaW50ZXJtZWRpYXRlIGZpbGVzIGZyb20gdGhlIGJlbG93IGltcGxpY2l0IHJ1bGVzIGFyb3VuZAotIC5QUkVDSU9VUzogJChhZGRzdWZmaXggLm8sJChwcm9ncykpCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHNfNC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29sc180LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyZTdiYWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29sc180LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1TVU1NQVJZID0gIkNoZWNrc3VtbWluZyBDb3B5IG9uIFdyaXRlIEZpbGVzeXN0ZW0gdXRpbGl0aWVzIgotREVTQ1JJUFRJT04gPSAiQnRyZnMgaXMgYSBuZXcgY29weSBvbiB3cml0ZSBmaWxlc3lzdGVtIGZvciBMaW51eCBhaW1lZCBhdCBcCi1pbXBsZW1lbnRpbmcgYWR2YW5jZWQgZmVhdHVyZXMgd2hpbGUgZm9jdXNpbmcgb24gZmF1bHQgdG9sZXJhbmNlLCByZXBhaXIgYW5kIFwKLWVhc3kgYWRtaW5pc3RyYXRpb24uIFwKLVRoaXMgcGFja2FnZSBjb250YWlucyB1dGlsaXRpZXMgKG1rZnMsIGZzY2ssIGJ0cmZzY3RsKSB1c2VkIHRvIHdvcmsgd2l0aCBcCi1idHJmcyBhbmQgYW4gdXRpbGl0eSAoYnRyZnMtY29udmVydCkgdG8gbWFrZSBhIGJ0cmZzIGZpbGVzeXN0ZW0gZnJvbSBhbiBleHQzLiIKLQotSE9NRVBBR0UgPSAiaHR0cHM6Ly9idHJmcy53aWtpLmtlcm5lbC5vcmciCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mY2IwMmRjNTUyYTA0MWRlZTI3ZTRiODVjNzM5NjA2NyIKLVNFQ1RJT04gPSAiYmFzZSIKLURFUEVORFMgPSAidXRpbC1saW51eCBhdHRyIGUyZnNwcm9ncyBsem8gYWNsIgotUkRFUEVORFNfJHtQTn0gPSAibGliZ2NjIgotCi1TUkNSRVYgPSAiMjEyNThmYWIyY2FlYWRlNDA1YTE1YmE5MzJkMzczYjM2NGFhNmU4YyIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2tkYXZlL2J0cmZzLXByb2dzLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtcGFyYWxsZWwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LXN5bWxpbmstY3JlYXRpb24tbXVsdGlwbGUtdGltZXMucGF0Y2ggXAotIgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWRvY3VtZW50YXRpb24iCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLS1kaXNhYmxlLWJhY2t0cmFjZSAiCi0KLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgICBzaCBhdXRvZ2VuLnNoCi19Ci0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29sc180LjcuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHNfNC43LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmVjZjA5MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHNfNC43LjEuYmIKQEAgLTAsMCArMSwzMyBAQAorU1VNTUFSWSA9ICJDaGVja3N1bW1pbmcgQ29weSBvbiBXcml0ZSBGaWxlc3lzdGVtIHV0aWxpdGllcyIKK0RFU0NSSVBUSU9OID0gIkJ0cmZzIGlzIGEgbmV3IGNvcHkgb24gd3JpdGUgZmlsZXN5c3RlbSBmb3IgTGludXggYWltZWQgYXQgXAoraW1wbGVtZW50aW5nIGFkdmFuY2VkIGZlYXR1cmVzIHdoaWxlIGZvY3VzaW5nIG9uIGZhdWx0IHRvbGVyYW5jZSwgcmVwYWlyIGFuZCBcCitlYXN5IGFkbWluaXN0cmF0aW9uLiBcCitUaGlzIHBhY2thZ2UgY29udGFpbnMgdXRpbGl0aWVzIChta2ZzLCBmc2NrLCBidHJmc2N0bCkgdXNlZCB0byB3b3JrIHdpdGggXAorYnRyZnMgYW5kIGFuIHV0aWxpdHkgKGJ0cmZzLWNvbnZlcnQpIHRvIG1ha2UgYSBidHJmcyBmaWxlc3lzdGVtIGZyb20gYW4gZXh0My4iCisKK0hPTUVQQUdFID0gImh0dHBzOi8vYnRyZnMud2lraS5rZXJuZWwub3JnIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmNiMDJkYzU1MmEwNDFkZWUyN2U0Yjg1YzczOTYwNjciCitTRUNUSU9OID0gImJhc2UiCitERVBFTkRTID0gInV0aWwtbGludXggYXR0ciBlMmZzcHJvZ3MgbHpvIGFjbCIKK1JERVBFTkRTXyR7UE59ID0gImxpYmdjYyIKKworU1JDUkVWID0gIjY4MTlmYmNkY2FiNjNjMmQ5NWRhMWEyOTk3ZTM3YmU5YTcxY2E1MzMiCitTUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9rZGF2ZS9idHJmcy1wcm9ncy5naXQgXAorICAgICAgICAgICBmaWxlOi8vZml4LXBhcmFsbGVsLnBhdGNoIFwKKyIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZworCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1kb2N1bWVudGF0aW9uIgorRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIC0tZGlzYWJsZS1iYWNrdHJhY2UgIgorCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICAgc2ggYXV0b2dlbi5zaAorfQorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9idWlsZC1jb21wYXJlX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9idWlsZC1jb21wYXJlX2dpdC5iYgppbmRleCA2NzZmMTFkLi5mYTljNmI0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J1aWxkLWNvbXBhcmUvYnVpbGQtY29tcGFyZV9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2J1aWxkLWNvbXBhcmVfZ2l0LmJiCkBAIC05LDYgKzksMTIgQEAKICAgICAgICAgICAgZmlsZTovL1JlbmFtZS1ycG0tY2hlY2suc2gtdG8tcGtnLWRpZmYuc2gucGF0Y2g7c3RyaXBsZXZlbD0xIFwKICAgICAgICAgICAgZmlsZTovL0lnbm9yZS1EV0FSRi1zZWN0aW9ucy5wYXRjaDtzdHJpcGxldmVsPTEgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtc3VwcG9ydC1mb3ItZGViLWFuZC1pcGstcGFja2FnaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Z1bmN0aW9ucy5zaC1yZW1vdmUtc3BhY2UtYXQtaGVhZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9mdW5jdGlvbnMuc2gtcnVuLXJwbS1vbmNlLXRvLW1ha2UtaXQtZmFzdGVyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3BrZy1kaWZmLnNoLWNoZWNrLWZvci1maWZvLW5hbWVkLXBpcGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcGtnLWRpZmYuc2gtY2hlY2tfc2luZ2xlX2ZpbGUtcmV0dXJuLWF0LW9uY2Utd2hlbi1zYS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wa2ctZGlmZi5zaC1yZW1vdmUtc3BhY2UtaW4tdGhlLWVuZC1mb3ItZnR5cGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZnVuY3Rpb25zLnNoLWltcHJvdmUtZGViLWFuZC1pcGstY2hlY2tpbmcucGF0Y2ggXAogICAgICAgICAgICAiCiAKIFNSQ1JFViA9ICJjNTM1MmMwNTRjNmVmMTU3MzVkYTMxYjc2ZDZkODg2MjBmNGFmZjBhIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2ZpbGVzLzAwMDEtQWRkLXN1cHBvcnQtZm9yLWRlYi1hbmQtaXBrLXBhY2thZ2luZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9maWxlcy8wMDAxLUFkZC1zdXBwb3J0LWZvci1kZWItYW5kLWlway1wYWNrYWdpbmcucGF0Y2gKaW5kZXggNWMxNTIxOC4uODJmZDgxNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2ZpbGVzLzAwMDEtQWRkLXN1cHBvcnQtZm9yLWRlYi1hbmQtaXBrLXBhY2thZ2luZy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J1aWxkLWNvbXBhcmUvZmlsZXMvMDAwMS1BZGQtc3VwcG9ydC1mb3ItZGViLWFuZC1pcGstcGFja2FnaW5nLnBhdGNoCkBAIC0zLDcgKzMsNyBAQAogRGF0ZTogVHVlLCAxIFNlcCAyMDE1IDEyOjA0OjMzICswMTAwCiBTdWJqZWN0OiBbUEFUQ0hdIEFkZCBzdXBwb3J0IGZvciBkZWIgYW5kIGlwayBwYWNrYWdpbmcKIAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL29wZW5TVVNFL2J1aWxkLWNvbXBhcmUvcHVsbC8xMF0KIAogU2lnbmVkLW9mZi1ieTogUGF1bCBFZ2dsZXRvbiA8cGF1bC5lZ2dsZXRvbkBsaW51eC5pbnRlbC5jb20+CiAtLS0KQEAgLTM0LDcgKzM0LDcgQEAKICAgICAgcmV0dXJuICRSRVMKICB9CiArCi0rZnVuY3Rpb24gYWRqdXN0X2NvbnRyb2xmaWxlICgpIHsKKytmdW5jdGlvbiBhZGp1c3RfY29udHJvbGZpbGUoKSB7CiArICAgIGNhdCAkMS9jb250cm9sIHwgc2VkICcvXlZlcnNpb246IC9kJyA+ICQxL2NvbnRyb2wuZml4ZWQKICsgICAgbXYgJDEvY29udHJvbC5maXhlZCAkMS9jb250cm9sCiArICAgIGNhdCAkMi9jb250cm9sIHwgc2VkICcvXlZlcnNpb246IC9kJyA+ICQyL2NvbnRyb2wuZml4ZWQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9maWxlcy9mdW5jdGlvbnMuc2gtaW1wcm92ZS1kZWItYW5kLWlway1jaGVja2luZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9maWxlcy9mdW5jdGlvbnMuc2gtaW1wcm92ZS1kZWItYW5kLWlway1jaGVja2luZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTQyMGY4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2ZpbGVzL2Z1bmN0aW9ucy5zaC1pbXByb3ZlLWRlYi1hbmQtaXBrLWNoZWNraW5nLnBhdGNoCkBAIC0wLDAgKzEsMTE3IEBACitGcm9tIGI0ZWI3ZmRlMTAzMTgxNjJiZDJkMDJiOTAxN2VmNTE3NDY3NTJhOTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMTQgSnVsIDIwMTYgMjM6MTQ6MjEgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCA0LzRdIGZ1bmN0aW9ucy5zaDogaW1wcm92ZSBkZWIgYW5kIGlwayBjaGVja2luZworCisqIFRoZSBkZWIgYW5kIGlwaydzIGRlcGVuZHMgdmVyc2lvbiBzdHJpbmcgaXMgbGlrZToKKyAgRGVwZW5kczogbGliYzYgKD49IDIuMjQpCisgIFVwZGF0ZSB0cmltX3JlbGVhc2Vfb2xkIGFuZCB0cmltX3JlbGVhc2VfbmV3IHRvIG1hdGNoIHRoZSBicmFja2V0IGluCisgIHRoZSBlbmQgIikiLgorCisqIFRoZSBkZWIncyBkYXRhIHRhcmJhbGwgbm93IGlzIC50YXIueHosIGFuZCBpcGsncyBpcyAudGFyLmd6LgorCisqIFVwZGF0ZSBhZGp1c3RfY29udHJvbGZpbGUoKSB0byBtYWtlIGl0dXNlIHRyaW1fcmVsZWFzZV9vbGQgYW5kCisgIHRyaW1fcmVsZWFzZV9uZXcuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvYnVpbGQtY29tcGFyZS9wdWxsLzEwXQorCitTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIGZ1bmN0aW9ucy5zaCB8IDQ1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2Z1bmN0aW9ucy5zaCBiL2Z1bmN0aW9ucy5zaAoraW5kZXggYWE1NzJmOS4uZmU0OTNiYSAxMDA3NTUKKy0tLSBhL2Z1bmN0aW9ucy5zaAorKysrIGIvZnVuY3Rpb25zLnNoCitAQCAtNzgsNyArNzgsNyBAQCBjaGVja19oZWFkZXIoKQorIGZ1bmN0aW9uIHRyaW1fcmVsZWFzZV9vbGQoKQorIHsKKyAgIHNlZCAtZSAiCistICAvXChcL2Jvb3RcfFwvbGliXC9tb2R1bGVzXHxcL2xpYlwvZmlybXdhcmVcfFwvdXNyXC9zcmNcfCR2ZXJzaW9uX3JlbGVhc2Vfb2xkX3JlZ2V4X2xcJFwpL3tzLCR2ZXJzaW9uX3JlbGVhc2Vfb2xkX3JlZ2V4X2wsQFZFUlNJT05ALUBSRUxFQVNFX0xPTkdALGc7cywkdmVyc2lvbl9yZWxlYXNlX29sZF9yZWdleF9zLEBWRVJTSU9OQC1AUkVMRUFTRV9TSE9SVEAsZ30KKysgIC9cKFwvYm9vdFx8XC9saWJcL21vZHVsZXNcfFwvbGliXC9maXJtd2FyZVx8XC91c3JcL3NyY1x8JHZlcnNpb25fcmVsZWFzZV9vbGRfcmVnZXhfbFwkXHwkdmVyc2lvbl9yZWxlYXNlX29sZF9yZWdleF9sKVwpL3tzLCR2ZXJzaW9uX3JlbGVhc2Vfb2xkX3JlZ2V4X2wsQFZFUlNJT05ALUBSRUxFQVNFX0xPTkdALGc7cywkdmVyc2lvbl9yZWxlYXNlX29sZF9yZWdleF9zLEBWRVJTSU9OQC1AUkVMRUFTRV9TSE9SVEAsZ30KKyAgIHMvXChcL3ZhclwvYWRtXC91cGRhdGUtc2NyaXB0c1wvXCkke25hbWVfdmVyX3JlbF9vbGRfcmVnZXhfbH1cKFteWzpibGFuazpdXVwrXCkvXDFATkFNRV9WRVJfUkVMQFwyL2cKKyAgIHMvXiAqLy9nCisgICAiCitAQCAtODYsNyArODYsNyBAQCBmdW5jdGlvbiB0cmltX3JlbGVhc2Vfb2xkKCkKKyBmdW5jdGlvbiB0cmltX3JlbGVhc2VfbmV3KCkKKyB7CisgICBzZWQgLWUgIgorLSAgL1woXC9ib290XHxcL2xpYlwvbW9kdWxlc1x8XC9saWJcL2Zpcm13YXJlXHxcL3Vzclwvc3JjXHwkdmVyc2lvbl9yZWxlYXNlX25ld19yZWdleF9sXCRcKS97cywkdmVyc2lvbl9yZWxlYXNlX25ld19yZWdleF9sLEBWRVJTSU9OQC1AUkVMRUFTRV9MT05HQCxnO3MsJHZlcnNpb25fcmVsZWFzZV9uZXdfcmVnZXhfcyxAVkVSU0lPTkAtQFJFTEVBU0VfU0hPUlRALGd9CisrICAvXChcL2Jvb3RcfFwvbGliXC9tb2R1bGVzXHxcL2xpYlwvZmlybXdhcmVcfFwvdXNyXC9zcmNcfCR2ZXJzaW9uX3JlbGVhc2VfbmV3X3JlZ2V4X2xcJFx8JHZlcnNpb25fcmVsZWFzZV9uZXdfcmVnZXhfbClcKS97cywkdmVyc2lvbl9yZWxlYXNlX25ld19yZWdleF9sLEBWRVJTSU9OQC1AUkVMRUFTRV9MT05HQCxnO3MsJHZlcnNpb25fcmVsZWFzZV9uZXdfcmVnZXhfcyxAVkVSU0lPTkAtQFJFTEVBU0VfU0hPUlRALGd9CisgICBzL1woXC92YXJcL2FkbVwvdXBkYXRlLXNjcmlwdHNcL1wpJHtuYW1lX3Zlcl9yZWxfbmV3X3JlZ2V4X2x9XChbXls6Ymxhbms6XV1cK1wpL1wxQE5BTUVfVkVSX1JFTEBcMi9nCisgICBzL14gKi8vZworICAgIgorQEAgLTEzMyw4ICsxMzMsOCBAQCBmdW5jdGlvbiB1bnBhY2thZ2UoKQorICAgICAgICAgICAgIGFyIHggJGZpbGUKKyAgICAgICAgICAgICB0YXIgeGYgY29udHJvbC50YXIuZ3oKKyAgICAgICAgICAgICBybSBjb250cm9sLnRhci5negorLSAgICAgICAgICAgIHRhciB4ZiBkYXRhLnRhci5negorLSAgICAgICAgICAgIHJtIGRhdGEudGFyLmd6CisrICAgICAgICAgICAgdGFyIHhmIGRhdGEudGFyLlt4Z116CisrICAgICAgICAgICAgcm0gZGF0YS50YXIuW3hnXXoKKyAgICAgICAgICAgICA7OworICAgICBlc2FjCisgICAgIHBvcGQgMT4vZGV2L251bGwKK0BAIC0xNjQsNiArMTY0LDIyIEBAIGZ1bmN0aW9uIGdldF92YWx1ZSgpCisgICAgIHNlZCAtbiAtZSAiL15fX18kezF9X19fLywvXl9fXyR7MX1fX18vcCIgJDIgfCBzZWQgLWUgIi9eX19fJHsxfV9fXy9kIgorIH0KKyAKKysjIFNldCB2ZXJzaW9uX3JlbGVhc2Vfb2xkX3JlZ2V4X3MsIHZlcnNpb25fcmVsZWFzZV9vbGRfcmVnZXhfbCBhbmQKKysjIG5hbWVfdmVyX3JlbF9vbGRfcmVnZXhfbCwgYWxzbyB0aGUgbmV3IG9uZXMuCisrZnVuY3Rpb24gc2V0X3JlZ2V4KCkgeworKyAgICAjIFJlbWVtYmVyIHRvIHF1b3RlIHRoZSAuIHdoaWNoIGlzIGluIHJlbGVhc2UKKysgICAgIyBTaG9ydCB2ZXJzaW9uIHdpdGhvdXQgQl9DTgorKyAgICB2ZXJzaW9uX3JlbGVhc2Vfb2xkX3JlZ2V4X3M9JHt2ZXJzaW9uX3JlbGVhc2Vfb2xkJS4qfQorKyAgICB2ZXJzaW9uX3JlbGVhc2Vfb2xkX3JlZ2V4X3M9JHt2ZXJzaW9uX3JlbGVhc2Vfb2xkX3JlZ2V4X3MvLy4vXFwufQorKyAgICB2ZXJzaW9uX3JlbGVhc2VfbmV3X3JlZ2V4X3M9JHt2ZXJzaW9uX3JlbGVhc2VfbmV3JS4qfQorKyAgICB2ZXJzaW9uX3JlbGVhc2VfbmV3X3JlZ2V4X3M9JHt2ZXJzaW9uX3JlbGVhc2VfbmV3X3JlZ2V4X3MvLy4vXFwufQorKyAgICAjIExvbmcgdmVyc2lvbiB3aXRoIEJfQ05UCisrICAgIHZlcnNpb25fcmVsZWFzZV9vbGRfcmVnZXhfbD0ke3ZlcnNpb25fcmVsZWFzZV9vbGQvLy4vXFwufQorKyAgICB2ZXJzaW9uX3JlbGVhc2VfbmV3X3JlZ2V4X2w9JHt2ZXJzaW9uX3JlbGVhc2VfbmV3Ly8uL1xcLn0KKysgICAgbmFtZV92ZXJfcmVsX29sZF9yZWdleF9sPSR7bmFtZV92ZXJfcmVsX29sZC8vLi9cXC59CisrICAgIG5hbWVfdmVyX3JlbF9uZXdfcmVnZXhfbD0ke25hbWVfdmVyX3JlbF9uZXcvLy4vXFwufQorK30KKysKKyAjIENvbXBhcmUganVzdCB0aGUgcnBtIG1ldGEgZGF0YSBvZiB0d28gcnBtcworICMgUmV0dXJuczoKKyAjIDAgaW4gY2FzZSBvZiBzYW1lIGNvbnRlbnQKK0BAIC0xOTQsMTcgKzIxMCw3IEBAIGZ1bmN0aW9uIGNtcF9zcGVjICgpCisgICAgIHZlcnNpb25fcmVsZWFzZV9vbGQ9IiQoZ2V0X3ZhbHVlIFFGX1ZFUl9SRUwgJHNwZWNfb2xkKSIKKyAgICAgbmFtZV92ZXJfcmVsX29sZD0iJChnZXRfdmFsdWUgUUZfTkFNRV9WRVJfUkVMICRzcGVjX29sZCkiCisgCistICAgICMgUmVtZW1iZXIgdG8gcXVvdGUgdGhlIC4gd2hpY2ggaXMgaW4gcmVsZWFzZQorLSAgICAjIFNob3J0IHZlcnNpb24gd2l0aG91dCBCX0NOCistICAgIHZlcnNpb25fcmVsZWFzZV9vbGRfcmVnZXhfcz0ke3ZlcnNpb25fcmVsZWFzZV9vbGQlLip9CistICAgIHZlcnNpb25fcmVsZWFzZV9vbGRfcmVnZXhfcz0ke3ZlcnNpb25fcmVsZWFzZV9vbGRfcmVnZXhfcy8vLi9cXC59CistICAgIHZlcnNpb25fcmVsZWFzZV9uZXdfcmVnZXhfcz0ke3ZlcnNpb25fcmVsZWFzZV9uZXclLip9CistICAgIHZlcnNpb25fcmVsZWFzZV9uZXdfcmVnZXhfcz0ke3ZlcnNpb25fcmVsZWFzZV9uZXdfcmVnZXhfcy8vLi9cXC59CistICAgICMgTG9uZyB2ZXJzaW9uIHdpdGggQl9DTlQKKy0gICAgdmVyc2lvbl9yZWxlYXNlX29sZF9yZWdleF9sPSR7dmVyc2lvbl9yZWxlYXNlX29sZC8vLi9cXC59CistICAgIHZlcnNpb25fcmVsZWFzZV9uZXdfcmVnZXhfbD0ke3ZlcnNpb25fcmVsZWFzZV9uZXcvLy4vXFwufQorLSAgICBuYW1lX3Zlcl9yZWxfb2xkX3JlZ2V4X2w9JHtuYW1lX3Zlcl9yZWxfb2xkLy8uL1xcLn0KKy0gICAgbmFtZV92ZXJfcmVsX25ld19yZWdleF9sPSR7bmFtZV92ZXJfcmVsX25ldy8vLi9cXC59CisrICAgIHNldF9yZWdleAorIAorICAgICAjIENoZWNrIHRoZSB3aG9sZSBzcGVjIGZpbGUgYXQgZmlyc3QsIHJldHVybiAwIGltbWVkaWF0ZWx5IGlmIHRoZQorICAgICAjIGFyZSB0aGUgc2FtZS4KK0BAIC0yODUsOSArMjkxLDE0IEBAIGZ1bmN0aW9uIGNtcF9zcGVjICgpCisgfQorIAorIGZ1bmN0aW9uIGFkanVzdF9jb250cm9sZmlsZSgpIHsKKy0gICAgY2F0ICQxL2NvbnRyb2wgfCBzZWQgJy9eVmVyc2lvbjogL2QnID4gJDEvY29udHJvbC5maXhlZAorKyAgICB2ZXJzaW9uX3JlbGVhc2Vfb2xkPSJgc2VkIC1uZSAncy9eVmVyc2lvbjogXCguKlwpL1wxL3AnICQxL2NvbnRyb2xgIgorKyAgICBuYW1lX3Zlcl9yZWxfb2xkPSJgc2VkIC1uIC1lICdzL15QYWNrYWdlOiBcKC4qXCkvXDEvcCcgJDEvY29udHJvbGAtYHNlZCAtbiAtZSAncy9eVmVyc2lvbjogXCguKlwpL1wxL3AnICQxL2NvbnRyb2xgIgorKyAgICB2ZXJzaW9uX3JlbGVhc2VfbmV3PSJgc2VkIC1uZSAncy9eVmVyc2lvbjogXCguKlwpL1wxL3AnICQyL2NvbnRyb2xgIgorKyAgICBuYW1lX3Zlcl9yZWxfbmV3PSJgc2VkIC1uIC1lICdzL15QYWNrYWdlOiBcKC4qXCkvXDEvcCcgJDIvY29udHJvbGAtYHNlZCAtbiAtZSAncy9eVmVyc2lvbjogXCguKlwpL1wxL3AnICQyL2NvbnRyb2xgIgorKyAgICBzZXRfcmVnZXgKKysgICAgY2F0ICQxL2NvbnRyb2wgfCB0cmltX3JlbGVhc2Vfb2xkID4gJDEvY29udHJvbC5maXhlZAorICAgICBtdiAkMS9jb250cm9sLmZpeGVkICQxL2NvbnRyb2wKKy0gICAgY2F0ICQyL2NvbnRyb2wgfCBzZWQgJy9eVmVyc2lvbjogL2QnID4gJDIvY29udHJvbC5maXhlZAorKyAgICBjYXQgJDIvY29udHJvbCB8IHRyaW1fcmVsZWFzZV9uZXcgPiAkMi9jb250cm9sLmZpeGVkCisgICAgIG12ICQyL2NvbnRyb2wuZml4ZWQgJDIvY29udHJvbAorIH0KKyAKKy0tIAorMi45LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2ZpbGVzL2Z1bmN0aW9ucy5zaC1yZW1vdmUtc3BhY2UtYXQtaGVhZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9maWxlcy9mdW5jdGlvbnMuc2gtcmVtb3ZlLXNwYWNlLWF0LWhlYWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDJlOTZiYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9maWxlcy9mdW5jdGlvbnMuc2gtcmVtb3ZlLXNwYWNlLWF0LWhlYWQucGF0Y2gKQEAgLTAsMCArMSw0MSBAQAorRnJvbSA0MDJhODIxZTYwNGYyODBlNjJjMzRiZjRkNDBjNmQxYjRjNmM4OTJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDQgSnVsIDIwMTYgMjA6MTE6MzMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gZnVuY3Rpb25zLnNoOiByZW1vdmUgc3BhY2UgYXQgaGVhZAorCitUaGUgY29tbWFuZCBsaWtlOgorcnBtIC1xcCAtLW5vZGlnZXN0IC0tbm9zaWduYXR1cmUgLS1xZiAnPGZvbz4gWyV7UkVRVUlSRU5BTUV9XG5dXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5ec3BhY2UKKworVGhlIHNwYWNlIHdpbGwgYmUgcHJpbnRlZCwgYW5kIHdpbGwgaW1wYWN0IHRoZSBjaGVjayByZXN1bHQsIHNvIHJlbW92ZSBpdC4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9idWlsZC1jb21wYXJlL3B1bGwvOV0KKworU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBmdW5jdGlvbnMuc2ggfCAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZnVuY3Rpb25zLnNoIGIvZnVuY3Rpb25zLnNoCitpbmRleCA4NWM5MDAzLi5iMTA2OWQyIDEwMDY0NAorLS0tIGEvZnVuY3Rpb25zLnNoCisrKysgYi9mdW5jdGlvbnMuc2gKK0BAIC0yNiw2ICsyNiw3IEBAIGZ1bmN0aW9uIHRyaW1fcmVsZWFzZV9vbGQoKQorICAgc2VkIC1lICIKKyAgIC9cKFwvYm9vdFx8XC9saWJcL21vZHVsZXNcfFwvbGliXC9maXJtd2FyZVx8XC91c3JcL3NyY1x8JHZlcnNpb25fcmVsZWFzZV9vbGRfcmVnZXhfbFwkXCkve3MsJHZlcnNpb25fcmVsZWFzZV9vbGRfcmVnZXhfbCxAVkVSU0lPTkAtQFJFTEVBU0VfTE9OR0AsZztzLCR2ZXJzaW9uX3JlbGVhc2Vfb2xkX3JlZ2V4X3MsQFZFUlNJT05ALUBSRUxFQVNFX1NIT1JUQCxnfQorICAgcy9cKFwvdmFyXC9hZG1cL3VwZGF0ZS1zY3JpcHRzXC9cKSR7bmFtZV92ZXJfcmVsX29sZF9yZWdleF9sfVwoW15bOmJsYW5rOl1dXCtcKS9cMUBOQU1FX1ZFUl9SRUxAXDIvZworKyAgcy9eICovL2cKKyAgICIKKyB9CisgZnVuY3Rpb24gdHJpbV9yZWxlYXNlX25ldygpCitAQCAtMzMsNiArMzQsNyBAQCBmdW5jdGlvbiB0cmltX3JlbGVhc2VfbmV3KCkKKyAgIHNlZCAtZSAiCisgICAvXChcL2Jvb3RcfFwvbGliXC9tb2R1bGVzXHxcL2xpYlwvZmlybXdhcmVcfFwvdXNyXC9zcmNcfCR2ZXJzaW9uX3JlbGVhc2VfbmV3X3JlZ2V4X2xcJFwpL3tzLCR2ZXJzaW9uX3JlbGVhc2VfbmV3X3JlZ2V4X2wsQFZFUlNJT05ALUBSRUxFQVNFX0xPTkdALGc7cywkdmVyc2lvbl9yZWxlYXNlX25ld19yZWdleF9zLEBWRVJTSU9OQC1AUkVMRUFTRV9TSE9SVEAsZ30KKyAgIHMvXChcL3ZhclwvYWRtXC91cGRhdGUtc2NyaXB0c1wvXCkke25hbWVfdmVyX3JlbF9uZXdfcmVnZXhfbH1cKFteWzpibGFuazpdXVwrXCkvXDFATkFNRV9WRVJfUkVMQFwyL2cKKysgIHMvXiAqLy9nCisgICAiCisgfQorICMgR2V0IHNpbmdsZSBkaXJlY3Rvcnkgb3IgZmlsZW5hbWUgd2l0aCBsb25nIG9yIHNob3J0IHJlbGVhc2Ugc3RyaW5nCistLSAKKzIuOS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9maWxlcy9mdW5jdGlvbnMuc2gtcnVuLXJwbS1vbmNlLXRvLW1ha2UtaXQtZmFzdGVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2ZpbGVzL2Z1bmN0aW9ucy5zaC1ydW4tcnBtLW9uY2UtdG8tbWFrZS1pdC1mYXN0ZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjViOTlkOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9maWxlcy9mdW5jdGlvbnMuc2gtcnVuLXJwbS1vbmNlLXRvLW1ha2UtaXQtZmFzdGVyLnBhdGNoCkBAIC0wLDAgKzEsMzYxIEBACitGcm9tIGYzNGQ2MzJjNDI3YjFlMTU3MGVmOTEzNjQ1NGZjMDFkOGM5ZjEwYTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgNyBKdWwgMjAxNiAxOTozNDowOSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBmdW5jdGlvbnMuc2g6IHJ1biBycG0gb25jZSB0byBtYWtlIGl0IGZhc3RlcgorCitUaGUgcnBtIHRvb2wgaXMgYSBoZWF2eSBwcm9jZXNzLCBpdCByYW4gMTYgKG9yIDE3IGZvciBrZXJuZWwpCisicnBtIC1xcCIgdGltZXMgd2hlbiB0aGUgcGtncyBhcmUgaWRlbnRpY2FsLCBub3cgd2Ugb25seSBydW4KKyJycG0gLXFwIC0tcWYgPGFsbCB3ZSBuZWVkPiIgdHdpY2UgKG9uZSBpcyBmb3Igb2xkIHBrZywgYW5kIG9uZSBpcyBmb3IKK25ldyksIHNhdmUgdGhlIHJlc3VsdHMgdG8gc3BlY19vbGQgYW5kIHNwZWNfbmV3LCB0aGVuIHVzZSBzZWQgY29tbWFuZCB0bworZ2V0IHdoYXQgd2UgbmVlZCBsYXRlciwgdGhpcyBjYW4gbWFrZSBpdCA3NSUgZmFzdGVyIHdoZW4gdGhlIHBrZ3MgYXJlCitpZGVudGljYWwuIEhlcmUgaXMgdGhlIHJvdWdoIGRhdGEgb24gbXkgaG9zdCBVYnVudHUgMTQuMDQuNCwgMzIgY29yZXMKK0NQVSBhbmQgMTI4RyBtZW06CisqIFdoZW4gdGhlIHBrZ3MgYXJlIGlkZW50aWNhbDoKKyAgLSBCZWZvcmUgdGhlIHBhdGNoOiAxcworICAtIEFmdGVyIHRoZSBwYXRjaDogMC4yNnMKKyAgSSBjb21wYXJlIHRoZSB3aG9sZSBzcGVjIGZpcnN0bHksIGFuZCByZXR1cm4gMCBpZiB0aGV5IGFyZSB0aGUgc2FtZSwKKyAgb3IgZ28gb24gY2hlY2tpbmcgb25lIGJ5IG9uZSBpZiBub3QsIHdpdGhvdXQgdGhpcywgaXQgd291bGQgYmUgMC40NnMsCisgIHRoZSBnYWluIGlzIGdyZWF0IHdoZW4gdGhlcmUgYXJlIGxvdCBvZiBwYWNrYWdlcywgdXN1YWxseSwgd2UgaGF2ZQorICBtb3JlIHRoYW4gMTAsMDAwIHJwbXMgdG8gY29tcGFyZS4KKworKiBXaGVuIHRoZSBwa2dzIGFyZSBkaWZmZXJlbnQ6CisgIFRoYXQgZGVwZW5kcyBvbiB3aGVyZSBpcyB0aGUgZGlmZmVyZW50LCBpZiB0aGUgZGlmZmVyZW50IGlzIGF0IHRoZQorICBjb21wYXJpbmcgcnBtdGFncyBzdGFnZToKKyAgLSBCZWZvcmUgdGhlIHBhdGNoOiAwLjI2cworICAtIEFmdGVyIHRoZSBwYXRjaDogMC4yOXMKKyAgSW5jcmVhc2VkIDAuMDNzLCBidXQgaWYgdGhlIGRpZmZlcmVudCBpcyBoYXBwZW5kIGxhdGVyIHRoYW4gY29tcGFyaW5nCisgIHJwbXRhZ3MsIGl0IHdpbGwgc2F2ZSB0aW1lLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL29wZW5TVVNFL2J1aWxkLWNvbXBhcmUvcHVsbC85XQorCitTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIGZ1bmN0aW9ucy5zaCB8IDI0NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMzIgaW5zZXJ0aW9ucygrKSwgMTEzIGRlbGV0aW9ucygtKQorIG1vZGUgY2hhbmdlIDEwMDY0NCA9PiAxMDA3NTUgZnVuY3Rpb25zLnNoCisKK2RpZmYgLS1naXQgYS9mdW5jdGlvbnMuc2ggYi9mdW5jdGlvbnMuc2gKK29sZCBtb2RlIDEwMDY0NAorbmV3IG1vZGUgMTAwNzU1CitpbmRleCBiMTA2OWQyLi5hYTU3MmY5CistLS0gYS9mdW5jdGlvbnMuc2gKKysrKyBiL2Z1bmN0aW9ucy5zaAorQEAgLTEwLDkgKzEwLDYzIEBACisgCisgUlBNPSJycG0gLXFwIC0tbm9kaWdlc3QgLS1ub3NpZ25hdHVyZSIKKyAKKy1jaGVja19oZWFkZXIoKSAKKysjIE5hbWUsIFZlcnNpb24sIFJlbGVhc2UKKytRRl9OQU1FPSIle05BTUV9IgorK1FGX1ZFUl9SRUw9IiV7VkVSU0lPTn0tJXtSRUxFQVNFfSIKKytRRl9OQU1FX1ZFUl9SRUw9IiV7TkFNRX0tJXtWRVJTSU9OfS0le1JFTEVBU0V9IgorKworKyMgcHJvdmlkZXMgZGVzdHJveSB0aGlzIGJlY2F1c2UgYXQgbGVhc3QgdGhlIHNlbGYtcHJvdmlkZSBpbmNsdWRlcyB0aGUKKysjIC1idWlsZG51bWJlciA6LSgKKytRRl9QUk9WSURFUz0iWyV7UFJPVklERU5BTUV9ICV7UFJPVklERUZMQUdTfSAle1BST1ZJREVWRVJTSU9OfVxcbl1cXG4iCisrUUZfUFJPVklERVM9IiRRRl9QUk9WSURFUyBbJXtSRVFVSVJFTkFNRX0gJXtSRVFVSVJFRkxBR1N9ICV7UkVRVUlSRVZFUlNJT059XFxuXVxcbiIKKytRRl9QUk9WSURFUz0iJFFGX1BST1ZJREVTIFsle0NPTkZMSUNUTkFNRX0gJXtDT05GTElDVEZMQUdTfSAle0NPTkZMSUNUVkVSU0lPTn1cXG5dXFxuIgorK1FGX1BST1ZJREVTPSIkUUZfUFJPVklERVMgWyV7T0JTT0xFVEVOQU1FfSAle09CU09MRVRFRkxBR1N9ICV7T0JTT0xFVEVWRVJTSU9OfVxcbl1cXG4iCisrCisrIyBkb24ndCBsb29rIGF0IFJFTEVBU0UsIGl0IGNvbnRhaW5zIG91ciBidWlsZCBudW1iZXIKKytRRl9UQUdTPSIle05BTUV9ICV7VkVSU0lPTn0gJXtFUE9DSH1cXG4iCisrUUZfVEFHUz0iJFFGX1RBR1MgJXtTVU1NQVJZfVxcbiV7REVTQ1JJUFRJT059XFxuIgorKyMgdGhlIERJU1RVUkwgdGFnIGNhbiBiZSB1c2VkIGFzIGNoZWNraW4gSUQKKytRRl9UQUdTPSIkUUZfVEFHUyAle1ZFTkRPUn0gJXtESVNUUklCVVRJT059ICV7RElTVFVSTH0iCisrUUZfVEFHUz0iJFFGX1RBR1MgJXtMSUNFTlNFfSAle0xJQ0VOU0V9XFxuIgorK1FGX1RBR1M9IiRRRl9UQUdTICV7R1JPVVB9ICV7VVJMfSAle0VYQ0xVREVBUkNIfSAle0VYQ0xVREVPU30gJXtFWENMVVNJVkVBUkNIfVxcbiIKKytRRl9UQUdTPSIkUUZfVEFHUyAle0VYQ0xVU0lWRU9TfSAle1JQTVZFUlNJT059ICV7UExBVEZPUk19XFxuIgorK1FGX1RBR1M9IiRRRl9UQUdTICV7UEFZTE9BREZPUk1BVH0gJXtQQVlMT0FEQ09NUFJFU1NPUn0gJXtQQVlMT0FERkxBR1N9XFxuIgorKworKyMgWFhYIFdlIGFsc28gbmVlZCB0byBjaGVjayB0aGUgZXhpc3RlbmNlIChidXQgbm90IHRoZSBjb250ZW50ICghKSkKKysjIG9mIFNJR0dQRyAoYW5kIHBlcmhhcHMgdGhlIG90aGVyIFNJRyopCisrIyBYWFggV2UgZG9uJ3QgbG9vayBhdCB0cmlnZ2VycworK1FGX1RBR1M9IiRRRl9UQUdTIFsle1ZFUklGWVNDUklQVFBST0d9ICV7VkVSSUZZU0NSSVBUfV1cXG4iCisrIyBPbmx5IHRoZSBmaXJzdCBDaGFuZ2VMb2cgZW50cnk7IHNob3VsZCBiZSBlbm91Z2gKKytRRl9UQUdTPSIkUUZfVEFHUyAle0NIQU5HRUxPR1RJTUV9ICV7Q0hBTkdFTE9HTkFNRX0gJXtDSEFOR0VMT0dURVhUfVxcbiIKKysKKysjIHNjcmlwdHMsIG1pZ2h0IGNvbnRhaW4gcmVsZWFzZSBudW1iZXIKKytRRl9TQ1JJUFQ9Ilsle1BSRUlOUFJPR30gJXtQUkVJTn1cXG5dXFxuWyV7UE9TVElOUFJPR30gJXtQT1NUSU59XFxuXVxcblsle1BSRVVOUFJPR30gJXtQUkVVTn1cXG5dXFxuWyV7UE9TVFVOUFJPR30gJXtQT1NUVU59XFxuXVxcbiIKKysKKysjIE5vdyB0aGUgZmlsZXMuIFdlIGxlYXZlIG91dCBtdGltZSBhbmQgc2l6ZS4gIEZvciBub3JtYWwgZmlsZXMKKysjIHRoZSBzaXplIHdpbGwgaW5mbHVlbmNlIHRoZSBNRDUgYW55d2F5LiAgRm9yIGRpcmVjdG9yaWVzIHRoZSBzaXplcyBjYW4KKysjIGRpZmZlciwgZGVwZW5kaW5nIG9uIHdoaWNoIGZpbGUgc3lzdGVtIHRoZSBwYWNrYWdlIHdhcyBidWlsdC4gIFRvIG5vdAorKyMgaGF2ZSB0byBmaWx0ZXIgb3V0IGRpcmVjdG9yaWVzIHdlIHNpbXBseSBpZ25vcmUgYWxsIHNpemVzLgorKyMgQWxzbyBsZWF2ZSBvdXQgRklMRURFVklDRVMsIEZJTEVJTk9ERVMgKGRlcGVuZHMgb24gdGhlIGJ1aWxkIGhvc3QpLAorKyMgRklMRUNPTE9SUywgRklMRUNMQVNTIChub3JtYWxseSB1c2VmdWwgYnV0IGZpbGUgb3V0cHV0IGNvbnRhaW5zIG10aW1lcyksCisrIyBGSUxFREVQRU5EU1ggYW5kIEZJTEVERVBFTkRTTi4KKysjIEFsc28gRklMRUxBTkdTIChvcj8pCisrUUZfRklMRUxJU1Q9Ilsle0ZJTEVOQU1FU30gJXtGSUxFRkxBR1N9ICV7RklMRVNUQVRFU30gJXtGSUxFTU9ERVM6b2N0YWx9ICV7RklMRVVTRVJOQU1FfSAle0ZJTEVHUk9VUE5BTUV9ICV7RklMRVJERVZTfSAle0ZJTEVWRVJJRllGTEFHU30gJXtGSUxFTElOS1RPU31cbl1cXG4iCisrIyA/Pz8gd2hhdCB0byBkbyB3aXRoIEZJTEVQUk9WSURFIGFuZCBGSUxFUkVRVUlSRT8KKysKKytRRl9DSEVDS1NVTT0iWyV7RklMRU5BTUVTfSAle0ZJTEVNRDVTfSAle0ZJTEVGTEFHU31cbl1cXG4iCisrCisrUUZfQUxMPSJcbl9fX1FGX05BTUVfX19cbiR7UUZfTkFNRX1cbl9fX1FGX05BTUVfX19cbiIKKytRRl9BTEw9IiRRRl9BTExcbl9fX1FGX1RBR1NfX19cbiR7UUZfVEFHU31cbl9fX1FGX1RBR1NfX19cbiIKKytRRl9BTEw9IiRRRl9BTExcbl9fX1FGX1ZFUl9SRUxfX19cbiR7UUZfVkVSX1JFTH1cbl9fX1FGX1ZFUl9SRUxfX19cbiIKKytRRl9BTEw9IiRRRl9BTExcbl9fX1FGX05BTUVfVkVSX1JFTF9fX1xuJHtRRl9OQU1FX1ZFUl9SRUx9XG5fX19RRl9OQU1FX1ZFUl9SRUxfX19cbiIKKytRRl9BTEw9IiRRRl9BTExcbl9fX1FGX1BST1ZJREVTX19fXG4ke1FGX1BST1ZJREVTfVxuX19fUUZfUFJPVklERVNfX19cbiIKKytRRl9BTEw9IiRRRl9BTExcbl9fX1FGX1NDUklQVF9fX1xuJHtRRl9TQ1JJUFR9XG5fX19RRl9TQ1JJUFRfX19cbiIKKytRRl9BTEw9IiRRRl9BTExcbl9fX1FGX0ZJTEVMSVNUX19fXG4ke1FGX0ZJTEVMSVNUfVxuX19fUUZfRklMRUxJU1RfX19cbiIKKytRRl9BTEw9IiRRRl9BTExcbl9fX1FGX0NIRUNLU1VNX19fXG4ke1FGX0NIRUNLU1VNfVxuX19fUUZfQ0hFQ0tTVU1fX19cbiIKKysKKytjaGVja19oZWFkZXIoKQorIHsKKy0gICAkUlBNIC0tcWYgIiRRRiIgIiQxIgorKyAgICRSUE0gLS1xZiAiJDEiICIkMiIKKyB9CisgCisgIyBUcmltIHZlcnNpb24tcmVsZWFzZSBzdHJpbmc6CitAQCAtNDcsMTggKzEwMSw2IEBAIGZ1bmN0aW9uIGdyZXBfcmVsZWFzZV9uZXcoKQorICAgZ3JlcCAtRSAiKC9ib290fC9saWIvbW9kdWxlc3wvbGliL2Zpcm13YXJlfC91c3Ivc3JjKS9bXi9dKygke3ZlcnNpb25fcmVsZWFzZV9uZXdfcmVnZXhfbH0oXCR8W14vXStcJCl8JHt2ZXJzaW9uX3JlbGVhc2VfbmV3X3JlZ2V4X3N9KFwkfFteL10rXCQpKSIKKyB9CisgCistZnVuY3Rpb24gY2hlY2tfcHJvdmlkZXMoKQorLXsKKy0gIGxvY2FsIHBrZz0kMQorLSAgIyBwcm92aWRlcyBkZXN0cm95IHRoaXMgYmVjYXVzZSBhdCBsZWFzdCB0aGUgc2VsZi1wcm92aWRlIGluY2x1ZGVzIHRoZQorLSAgIyAtYnVpbGRudW1iZXIgOi0oCistICBRRj0iWyV7UFJPVklERU5BTUV9ICV7UFJPVklERUZMQUdTfSAle1BST1ZJREVWRVJTSU9OfVxcbl1cXG4iCistICBRRj0iJFFGIFsle1JFUVVJUkVOQU1FfSAle1JFUVVJUkVGTEFHU30gJXtSRVFVSVJFVkVSU0lPTn1cXG5dXFxuIgorLSAgUUY9IiRRRiBbJXtDT05GTElDVE5BTUV9ICV7Q09ORkxJQ1RGTEFHU30gJXtDT05GTElDVFZFUlNJT059XFxuXVxcbiIKKy0gIFFGPSIkUUYgWyV7T0JTT0xFVEVOQU1FfSAle09CU09MRVRFRkxBR1N9ICV7T0JTT0xFVEVWRVJTSU9OfVxcbl1cXG4iCistICBjaGVja19oZWFkZXIgIiRwa2ciCistfQorLQorICN1c2FnZSB1bnBhY2thZ2UgPGZpbGU+ICRkaXIKKyAjIFVucGFjayBmaWxlcyBpbiBkaXJlY3RvcnkgJGRpcgorICMgbGlrZSAvdXNyL2Jpbi91bnBhY2thZ2UgLSBqdXN0IGZvciBvbmUgZmlsZSBhbmQgd2l0aCBubyBvcHRpb25zCitAQCAtOTgsNiArMTQwLDMwIEBAIGZ1bmN0aW9uIHVucGFja2FnZSgpCisgICAgIHBvcGQgMT4vZGV2L251bGwKKyB9CisgCisrIyBSdW4gZGlmZiBjb21tYW5kIG9uIHRoZSBmaWxlcworKyMgJDE6IHByaW50ZWQgaW5mbworKyMgJDI6IGZpbGUxCisrIyAkMzogZmlsZTIKKytmdW5jdGlvbiBjb21wX2ZpbGUoKQorK3sKKysgICAgZWNobyAiY29tcGFyaW5nICQxIgorKyAgICBpZiAhIGRpZmYgLWF1ICQyICQzOyB0aGVuCisrICAgICAgaWYgdGVzdCAteiAiJGNoZWNrX2FsbCI7IHRoZW4KKysgICAgICAgIHJtICQyICQzICRzcGVjX29sZCAkc3BlY19uZXcKKysgICAgICAgIHJldHVybiAxCisrICAgICAgZmkKKysgICAgZmkKKysgICAgcmV0dXJuIDAKKyt9CisrCisrIyBHZXQgdmFyJ3MgdmFsdWUgZnJvbSBzcGVjZmlsZS4KKysjICQxOiB2YXIgbmFtZQorKyMgJDI6IHNwZWNmaWxlCisrZnVuY3Rpb24gZ2V0X3ZhbHVlKCkKKyt7CisrICAgIHNlZCAtbiAtZSAiL15fX18kezF9X19fLywvXl9fXyR7MX1fX18vcCIgJDIgfCBzZWQgLWUgIi9eX19fJHsxfV9fXy9kIgorK30KKysKKyAjIENvbXBhcmUganVzdCB0aGUgcnBtIG1ldGEgZGF0YSBvZiB0d28gcnBtcworICMgUmV0dXJuczoKKyAjIDAgaW4gY2FzZSBvZiBzYW1lIGNvbnRlbnQKK0BAIC0xMDcsNTYgKzE3MywyOSBAQCBmdW5jdGlvbiB1bnBhY2thZ2UoKQorIGZ1bmN0aW9uIGNtcF9zcGVjICgpCisgeworICAgICBsb2NhbCBSRVMKKy0gICAgbG9jYWwgZmlsZTEgZmlsZTIKKysgICAgbG9jYWwgZmlsZV9vbGQgZmlsZV9uZXcKKyAgICAgbG9jYWwgZgorICAgICBsb2NhbCBzaD0kMQorICAgICBsb2NhbCBvbGRycG09JDIKKyAgICAgbG9jYWwgbmV3cnBtPSQzCisgCistICAgIFFGPSIle05BTUV9IgorLSAgICAKKy0gICAgIyBkb24ndCBsb29rIGF0IFJFTEVBU0UsIGl0IGNvbnRhaW5zIG91ciBidWlsZCBudW1iZXIKKy0gICAgUUY9IiRRRiAle1ZFUlNJT059ICV7RVBPQ0h9XFxuIgorLSAgICBRRj0iJFFGICV7U1VNTUFSWX1cXG4le0RFU0NSSVBUSU9OfVxcbiIKKy0gICAgUUY9IiRRRiAle1ZFTkRPUn0gJXtESVNUUklCVVRJT059ICV7RElTVFVSTH0iCistICAgIFFGPSIkUUYgJXtMSUNFTlNFfSAle0xJQ0VOU0V9XFxuIgorLSAgICBRRj0iJFFGICV7R1JPVVB9ICV7VVJMfSAle0VYQ0xVREVBUkNIfSAle0VYQ0xVREVPU30gJXtFWENMVVNJVkVBUkNIfVxcbiIKKy0gICAgUUY9IiRRRiAle0VYQ0xVU0lWRU9TfSAle1JQTVZFUlNJT059ICV7UExBVEZPUk19XFxuIgorLSAgICBRRj0iJFFGICV7UEFZTE9BREZPUk1BVH0gJXtQQVlMT0FEQ09NUFJFU1NPUn0gJXtQQVlMT0FERkxBR1N9XFxuIgorLSAgICAKKy0gCistICAgICMgWFhYIFdlIGFsc28gbmVlZCB0byBjaGVjayB0aGUgZXhpc3RlbmNlIChidXQgbm90IHRoZSBjb250ZW50ICghKSkKKy0gICAgIyBvZiBTSUdHUEcgKGFuZCBwZXJoYXBzIHRoZSBvdGhlciBTSUcqKQorLSAgICAKKy0gICAgIyBYWFggV2UgZG9uJ3QgbG9vayBhdCB0cmlnZ2VycworLSAgICAKKy0gICAgUUY9IiRRRiBbJXtWRVJJRllTQ1JJUFRQUk9HfSAle1ZFUklGWVNDUklQVH1dXFxuIgorLSAgICAKKy0gICAgIyBPbmx5IHRoZSBmaXJzdCBDaGFuZ2VMb2cgZW50cnk7IHNob3VsZCBiZSBlbm91Z2gKKy0gICAgUUY9IiRRRiAle0NIQU5HRUxPR1RJTUV9ICV7Q0hBTkdFTE9HTkFNRX0gJXtDSEFOR0VMT0dURVhUfVxcbiIKKy0gICAgCistICAgIGZpbGUxPWBta3RlbXBgCistICAgIGZpbGUyPWBta3RlbXBgCistICAgIAorLSAgICBjaGVja19oZWFkZXIgJG9sZHJwbSA+ICRmaWxlMQorLSAgICBjaGVja19oZWFkZXIgJG5ld3JwbSA+ICRmaWxlMgorLSAgICAKKy0gICAgIyB0aGUgRElTVFVSTCB0YWcgY2FuIGJlIHVzZWQgYXMgY2hlY2tpbiBJRAorLSAgICAjZWNobyAiJFFGIgorLSAgICBlY2hvICJjb21wYXJpbmcgcnBtdGFncyIKKy0gICAgaWYgISBkaWZmIC1hdSAkZmlsZTEgJGZpbGUyOyB0aGVuCistICAgICAgaWYgdGVzdCAteiAiJGNoZWNrX2FsbCI7IHRoZW4KKy0gICAgICAgIHJtICRmaWxlMSAkZmlsZTIKKy0gICAgICAgIHJldHVybiAxCistICAgICAgZmkKKy0gICAgZmkKKy0gICAgCisrICAgIGZpbGVfb2xkPWBta3RlbXBgCisrICAgIGZpbGVfbmV3PWBta3RlbXBgCisrICAgIHNwZWNfb2xkPWBta3RlbXBgCisrICAgIHNwZWNfbmV3PWBta3RlbXBgCisrCisrICAgIGNoZWNrX2hlYWRlciAiJFFGX0FMTCIgJG9sZHJwbSA+ICRzcGVjX29sZAorKyAgICBjaGVja19oZWFkZXIgIiRRRl9BTEwiICRuZXdycG0gPiAkc3BlY19uZXcKKysKKysgICAgbmFtZV9uZXc9IiQoZ2V0X3ZhbHVlIFFGX05BTUUgJHNwZWNfbmV3KSIKKysgICAgdmVyc2lvbl9yZWxlYXNlX25ldz0iJChnZXRfdmFsdWUgUUZfVkVSX1JFTCAkc3BlY19uZXcpIgorKyAgICBuYW1lX3Zlcl9yZWxfbmV3PSIkKGdldF92YWx1ZSBRRl9OQU1FX1ZFUl9SRUwgJHNwZWNfbmV3KSIKKysKKysgICAgdmVyc2lvbl9yZWxlYXNlX29sZD0iJChnZXRfdmFsdWUgUUZfVkVSX1JFTCAkc3BlY19vbGQpIgorKyAgICBuYW1lX3Zlcl9yZWxfb2xkPSIkKGdldF92YWx1ZSBRRl9OQU1FX1ZFUl9SRUwgJHNwZWNfb2xkKSIKKysKKyAgICAgIyBSZW1lbWJlciB0byBxdW90ZSB0aGUgLiB3aGljaCBpcyBpbiByZWxlYXNlCistICAgIHZlcnNpb25fcmVsZWFzZV9vbGQ9JCgkUlBNIC0tcWYgIiV7VkVSU0lPTn0tJXtSRUxFQVNFfSIgIiRvbGRycG0iKQorLSAgICB2ZXJzaW9uX3JlbGVhc2VfbmV3PSQoJFJQTSAtLXFmICIle1ZFUlNJT059LSV7UkVMRUFTRX0iICIkbmV3cnBtIikKKy0gICAgbmFtZV92ZXJfcmVsX29sZD0kKCRSUE0gLS1xZiAiJXtOQU1FfS0le1ZFUlNJT059LSV7UkVMRUFTRX0iICIkb2xkcnBtIikKKy0gICAgbmFtZV92ZXJfcmVsX25ldz0kKCRSUE0gLS1xZiAiJXtOQU1FfS0le1ZFUlNJT059LSV7UkVMRUFTRX0iICIkbmV3cnBtIikKKy0gICAgIyBTaG9ydCB2ZXJzaW9uIHdpdGhvdXQgQl9DTlQKKysgICAgIyBTaG9ydCB2ZXJzaW9uIHdpdGhvdXQgQl9DTgorICAgICB2ZXJzaW9uX3JlbGVhc2Vfb2xkX3JlZ2V4X3M9JHt2ZXJzaW9uX3JlbGVhc2Vfb2xkJS4qfQorICAgICB2ZXJzaW9uX3JlbGVhc2Vfb2xkX3JlZ2V4X3M9JHt2ZXJzaW9uX3JlbGVhc2Vfb2xkX3JlZ2V4X3MvLy4vXFwufQorICAgICB2ZXJzaW9uX3JlbGVhc2VfbmV3X3JlZ2V4X3M9JHt2ZXJzaW9uX3JlbGVhc2VfbmV3JS4qfQorQEAgLTE2NiwxMCArMjA1LDI3IEBAIGZ1bmN0aW9uIGNtcF9zcGVjICgpCisgICAgIHZlcnNpb25fcmVsZWFzZV9uZXdfcmVnZXhfbD0ke3ZlcnNpb25fcmVsZWFzZV9uZXcvLy4vXFwufQorICAgICBuYW1lX3Zlcl9yZWxfb2xkX3JlZ2V4X2w9JHtuYW1lX3Zlcl9yZWxfb2xkLy8uL1xcLn0KKyAgICAgbmFtZV92ZXJfcmVsX25ld19yZWdleF9sPSR7bmFtZV92ZXJfcmVsX25ldy8vLi9cXC59CisrCisrICAgICMgQ2hlY2sgdGhlIHdob2xlIHNwZWMgZmlsZSBhdCBmaXJzdCwgcmV0dXJuIDAgaW1tZWRpYXRlbHkgaWYgdGhlCisrICAgICMgYXJlIHRoZSBzYW1lLgorKyAgICBjYXQgJHNwZWNfb2xkIHwgdHJpbV9yZWxlYXNlX29sZCA+ICRmaWxlX29sZAorKyAgICBjYXQgJHNwZWNfbmV3IHwgdHJpbV9yZWxlYXNlX25ldyA+ICRmaWxlX25ldworKyAgICBlY2hvICJjb21wYXJpbmcgdGhlIHdob2xlIHNwZWNmaWxlIgorKyAgICBpZiBkaWZmIC1hdSAkc3BlY19vbGQgJHNwZWNfbmV3OyB0aGVuCisrICAgICAgaWYgdGVzdCAteiAiJGNoZWNrX2FsbCI7IHRoZW4KKysgICAgICAgIHJtICRmaWxlX29sZCAkZmlsZV9uZXcgJHNwZWNfb2xkICRzcGVjX25ldworKyAgICAgICAgcmV0dXJuIDAKKysgICAgICBmaQorKyAgICBmaQorKworKyAgICBnZXRfdmFsdWUgUUZfVEFHUyAkc3BlY19vbGQgPiAkZmlsZV9vbGQKKysgICAgZ2V0X3ZhbHVlIFFGX1RBR1MgJHNwZWNfbmV3ID4gJGZpbGVfbmV3CisrICAgIGNvbXBfZmlsZSBycG10YWdzICRmaWxlX29sZCAkZmlsZV9uZXcgfHwgcmV0dXJuIDEKKysKKyAgICAgIyBUaGlzIG1pZ2h0IGhhcHBlbiB3aGVuPyEKKyAgICAgZWNobyAiY29tcGFyaW5nIFJFTEVBU0UiCisgICAgIGlmIFsgIiR7dmVyc2lvbl9yZWxlYXNlX29sZCUuKn0iICE9ICIke3ZlcnNpb25fcmVsZWFzZV9uZXclLip9IiBdIDsgdGhlbgorLSAgICAgIGNhc2UgJCgkUlBNIC0tcWYgJyV7TkFNRX0nICIkbmV3cnBtIikgaW4KKysgICAgICBjYXNlICRuYW1lX25ldyBpbgorICAgICAgICAga2VybmVsLSopCisgICAgICAgICAgICMgTWFrZSBzdXJlIGFsbCBrZXJuZWwgcGFja2FnZXMgaGF2ZSB0aGUgc2FtZSAlUkVMRUFTRQorICAgICAgICAgICBlY2hvICJyZWxlYXNlIHByZWZpeCBtaXNtYXRjaCIKK0BAIC0xODEsNzEgKzIzNywzNCBAQCBmdW5jdGlvbiBjbXBfc3BlYyAoKQorICAgICAgICAgKikgOzsKKyAgICAgICBlc2FjCisgICAgIGZpCistICAgIAorLSAgICBjaGVja19wcm92aWRlcyAkb2xkcnBtIHwgdHJpbV9yZWxlYXNlX29sZCB8IHNvcnQgPiAkZmlsZTEKKy0gICAgY2hlY2tfcHJvdmlkZXMgJG5ld3JwbSB8IHRyaW1fcmVsZWFzZV9uZXcgfCBzb3J0ID4gJGZpbGUyCistICAgIAorLSAgICBlY2hvICJjb21wYXJpbmcgUFJPVklERVMiCistICAgIGlmICEgZGlmZiAtYXUgJGZpbGUxICRmaWxlMjsgdGhlbgorLSAgICAgIGlmIHRlc3QgLXogIiRjaGVja19hbGwiOyB0aGVuCistICAgICAgICBybSAkZmlsZTEgJGZpbGUyCistICAgICAgICByZXR1cm4gMQorLSAgICAgIGZpCistICAgIGZpCisgCistICAgICMgc2NyaXB0cywgbWlnaHQgY29udGFpbiByZWxlYXNlIG51bWJlcgorLSAgICBRRj0iWyV7UFJFSU5QUk9HfSAle1BSRUlOfVxcbl1cXG5bJXtQT1NUSU5QUk9HfSAle1BPU1RJTn1cXG5dXFxuWyV7UFJFVU5QUk9HfSAle1BSRVVOfVxcbl1cXG5bJXtQT1NUVU5QUk9HfSAle1BPU1RVTn1cXG5dXFxuIgorLSAgICBjaGVja19oZWFkZXIgJG9sZHJwbSB8IHRyaW1fcmVsZWFzZV9vbGQgPiAkZmlsZTEKKy0gICAgY2hlY2tfaGVhZGVyICRuZXdycG0gfCB0cmltX3JlbGVhc2VfbmV3ID4gJGZpbGUyCisrICAgIGdldF92YWx1ZSBRRl9QUk9WSURFUyAkc3BlY19vbGQgfCB0cmltX3JlbGVhc2Vfb2xkIHwgc29ydCA+ICRmaWxlX29sZAorKyAgICBnZXRfdmFsdWUgUUZfUFJPVklERVMgJHNwZWNfbmV3IHwgdHJpbV9yZWxlYXNlX25ldyB8IHNvcnQgPiAkZmlsZV9uZXcKKysgICAgY29tcF9maWxlIFBST1ZJREVTICRmaWxlX29sZCAkZmlsZV9uZXcgfHwgcmV0dXJuIDEKKysKKysgICAgZ2V0X3ZhbHVlIFFGX1NDUklQVCAkc3BlY19vbGQgfCB0cmltX3JlbGVhc2Vfb2xkID4gJGZpbGVfb2xkCisrICAgIGdldF92YWx1ZSBRRl9TQ1JJUFQgJHNwZWNfbmV3IHwgdHJpbV9yZWxlYXNlX25ldyA+ICRmaWxlX25ldworKyAgICBjb21wX2ZpbGUgc2NyaXB0cyAkZmlsZV9vbGQgJGZpbGVfbmV3IHx8IHJldHVybiAxCisgCistICAgIGVjaG8gImNvbXBhcmluZyBzY3JpcHRzIgorLSAgICBpZiAhIGRpZmYgLWF1ICRmaWxlMSAkZmlsZTI7IHRoZW4KKy0gICAgICBpZiB0ZXN0IC16ICIkY2hlY2tfYWxsIjsgdGhlbgorLSAgICAgICAgcm0gJGZpbGUxICRmaWxlMgorLSAgICAgICAgcmV0dXJuIDEKKy0gICAgICBmaQorLSAgICBmaQorLSAgICAKKyAgICAgIyBGaXJzdCBjaGVjayB0aGUgZmlsZSBhdHRyaWJ1dGVzIGFuZCBsYXRlciB0aGUgbWQ1cworLSAgICAKKy0gICAgIyBOb3cgdGhlIGZpbGVzLiAgV2UgbGVhdmUgb3V0IG10aW1lIGFuZCBzaXplLiAgRm9yIG5vcm1hbCBmaWxlcworLSAgICAjIHRoZSBzaXplIHdpbGwgaW5mbHVlbmNlIHRoZSBNRDUgYW55d2F5LiAgRm9yIGRpcmVjdG9yaWVzIHRoZSBzaXplcyBjYW4KKy0gICAgIyBkaWZmZXIsIGRlcGVuZGluZyBvbiB3aGljaCBmaWxlIHN5c3RlbSB0aGUgcGFja2FnZSB3YXMgYnVpbHQuICBUbyBub3QKKy0gICAgIyBoYXZlIHRvIGZpbHRlciBvdXQgZGlyZWN0b3JpZXMgd2Ugc2ltcGx5IGlnbm9yZSBhbGwgc2l6ZXMuCistICAgICMgQWxzbyBsZWF2ZSBvdXQgRklMRURFVklDRVMsIEZJTEVJTk9ERVMgKGRlcGVuZHMgb24gdGhlIGJ1aWxkIGhvc3QpLAorLSAgICAjIEZJTEVDT0xPUlMsIEZJTEVDTEFTUyAobm9ybWFsbHkgdXNlZnVsIGJ1dCBmaWxlIG91dHB1dCBjb250YWlucyBtdGltZXMpLCAKKy0gICAgIyBGSUxFREVQRU5EU1ggYW5kIEZJTEVERVBFTkRTTi4gCistICAgICMgQWxzbyBGSUxFTEFOR1MgKG9yPykKKy0gICAgUUY9Ilsle0ZJTEVOQU1FU30gJXtGSUxFRkxBR1N9ICV7RklMRVNUQVRFU30gJXtGSUxFTU9ERVM6b2N0YWx9ICV7RklMRVVTRVJOQU1FfSAle0ZJTEVHUk9VUE5BTUV9ICV7RklMRVJERVZTfSAle0ZJTEVWRVJJRllGTEFHU30gJXtGSUxFTElOS1RPU31cbl1cXG4iCistICAgICMgPz8/IHdoYXQgdG8gZG8gd2l0aCBGSUxFUFJPVklERSBhbmQgRklMRVJFUVVJUkU/CistCistICAgIGNoZWNrX2hlYWRlciAkb2xkcnBtIHwgdHJpbV9yZWxlYXNlX29sZCA+ICRmaWxlMQorLSAgICBjaGVja19oZWFkZXIgJG5ld3JwbSB8IHRyaW1fcmVsZWFzZV9uZXcgPiAkZmlsZTIKKy0gICAgCistICAgIGVjaG8gImNvbXBhcmluZyBmaWxlbGlzdCIKKy0gICAgaWYgISBkaWZmIC1hdSAkZmlsZTEgJGZpbGUyOyB0aGVuCistICAgICAgaWYgdGVzdCAteiAiJGNoZWNrX2FsbCI7IHRoZW4KKy0gICAgICAgIHJtICRmaWxlMSAkZmlsZTIKKy0gICAgICAgIHJldHVybiAxCistICAgICAgZmkKKy0gICAgZmkKKy0gICAgCisrICAgIGdldF92YWx1ZSBRRl9GSUxFTElTVCAkc3BlY19vbGQgfCB0cmltX3JlbGVhc2Vfb2xkID4gJGZpbGVfb2xkCisrICAgIGdldF92YWx1ZSBRRl9GSUxFTElTVCAkc3BlY19uZXcgfCB0cmltX3JlbGVhc2VfbmV3ID4gJGZpbGVfbmV3CisrICAgIGNvbXBfZmlsZSBmaWxlbGlzdCAkZmlsZV9vbGQgJGZpbGVfbmV3IHx8IHJldHVybiAxCisrCisgICAgICMgbm93IHRoZSBtZDVzdW1zLiBpZiB0aGV5IGFyZSBkaWZmZXJlbnQsIHdlIGNoZWNrIG1vcmUgZGV0YWlsZWQKKyAgICAgIyBpZiB0aGVyZSBhcmUgZGlmZmVyZW50IGZpbGVuYW1lcywgd2Ugd2lsbCBhbHJlYWR5IGhhdmUgYWJvcnRlZCBiZWZvcmUKKyAgICAgIyBmaWxlIGZsYWcgNjQgbWVhbnMgImdob3N0IiwgZmlsdGVyIHRob3NlIG91dC4KKy0gICAgUUY9Ilsle0ZJTEVOQU1FU30gJXtGSUxFTUQ1U30gJXtGSUxFRkxBR1N9XG5dXFxuIgorLSAgICBjaGVja19oZWFkZXIgJG9sZHJwbSB8Z3JlcCAtdiAiIDY0JCJ8IHRyaW1fcmVsZWFzZV9vbGQgPiAkZmlsZTEKKy0gICAgY2hlY2tfaGVhZGVyICRuZXdycG0gfGdyZXAgLXYgIiA2NCQifCB0cmltX3JlbGVhc2VfbmV3ID4gJGZpbGUyCistICAgIAorKyAgICBnZXRfdmFsdWUgUUZfQ0hFQ0tTVU0gJHNwZWNfb2xkIHwgZ3JlcCAtdiAiIDY0JCIgfCB0cmltX3JlbGVhc2Vfb2xkID4gJGZpbGVfb2xkCisrICAgIGdldF92YWx1ZSBRRl9DSEVDS1NVTSAkc3BlY19uZXcgfCBncmVwIC12ICIgNjQkIiB8IHRyaW1fcmVsZWFzZV9uZXcgPiAkZmlsZV9uZXcKKyAgICAgUkVTPTIKKyAgICAgIyBkb25lIGlmIHRoZSBzYW1lCisgICAgIGVjaG8gImNvbXBhcmluZyBmaWxlIGNoZWNrc3VtIgorLSAgICBpZiBjbXAgLXMgJGZpbGUxICRmaWxlMjsgdGhlbgorKyAgICBpZiBjbXAgLXMgJGZpbGVfb2xkICRmaWxlX25ldzsgdGhlbgorICAgICAgIFJFUz0wCisgICAgIGZpCistICAgIAorKworICAgICAjIEdldCBvbmx5IGZpbGVzIHdpdGggZGlmZmVyZW50IE1ENXN1bXMKKy0gICAgZmlsZXM9YGRpZmYgLVUwICRmaWxlMSAkZmlsZTIgfCBmZ3JlcCAtdiArKysgfCBncmVwIF4rIHwgY3V0IC1iMi0gfCBhd2sgJ3twcmludCAkMX0nYAorKyAgICBmaWxlcz1gZGlmZiAtVTAgJGZpbGVfb2xkICRmaWxlX25ldyB8IGZncmVwIC12ICsrKyB8IGdyZXAgXisgfCBjdXQgLWIyLSB8IGF3ayAne3ByaW50ICQxfSdgCisgCisgICAgIGlmIHRlc3QgLWYgIiRzaCI7IHRoZW4KKyAgICAgICBlY2hvICJjcmVhdGluZyByZW5hbWUgc2NyaXB0IgorQEAgLTI2MSw3ICsyODAsNyBAQCBmdW5jdGlvbiBjbXBfc3BlYyAoKQorICAgICAgIGRvbmUgPj4gIiR7c2h9IgorICAgICBmaQorICAgICAjCistICAgIHJtICRmaWxlMSAkZmlsZTIKKysgICAgcm0gJGZpbGVfb2xkICRmaWxlX25ldworICAgICByZXR1cm4gJFJFUworIH0KKyAKKy0tIAorMi45LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2ZpbGVzL3BrZy1kaWZmLnNoLWNoZWNrLWZvci1maWZvLW5hbWVkLXBpcGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J1aWxkLWNvbXBhcmUvZmlsZXMvcGtnLWRpZmYuc2gtY2hlY2stZm9yLWZpZm8tbmFtZWQtcGlwZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNGYwYzU0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2ZpbGVzL3BrZy1kaWZmLnNoLWNoZWNrLWZvci1maWZvLW5hbWVkLXBpcGUucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorRnJvbSBhNzhmZTRmNzkyYTlhYzlmNGQzNjRlODM2Yzg4NTVmNDg1NjFkNmYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDE0IEp1bCAyMDE2IDE5OjUyOjE4IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMy80XSBwa2ctZGlmZi5zaDogY2hlY2sgZm9yIGZpZm8obmFtZWQgcGlwZSkKKworT3RoZXJ3aXNlICJjbXAgLXMgZmlmbzEgZmlmbzIiIHdpbGwgd2FpdCBmb3IgaW5wdXRpbmcgZm9yZXZlci4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9idWlsZC1jb21wYXJlL3B1bGwvMTBdCisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgcGtnLWRpZmYuc2ggfCA3ICsrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9wa2ctZGlmZi5zaCBiL3BrZy1kaWZmLnNoCitpbmRleCA1ZGQzYTM4Li4xZjM1M2FhIDEwMDY0NAorLS0tIGEvcGtnLWRpZmYuc2gKKysrKyBiL3BrZy1kaWZmLnNoCitAQCAtNzM1LDYgKzczNSwxMyBAQCBjaGVja19zaW5nbGVfZmlsZSgpCisgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgZmkKKyAgICAgICAgOzsKKysgICAgIGZpZm8qcGlwZSopCisrICAgICAgIGZ0eXBlX25ldz0iYC91c3IvYmluL2ZpbGUgbmV3LyRmaWxlIHwgc2VkIC1lICdzQF5bXjpdXCs6W1s6Ymxhbms6XV0qQEAnIC1lICdzQFtbOmJsYW5rOl1dKiRAQCdgIgorKyAgICAgICBpZiBbICIkZnR5cGVfbmV3IiA9ICIkZnR5cGUiICBdOyB0aGVuCisrICAgICAgICAgcmV0dXJuIDAKKysgICAgICAgZmkKKysgICAgICAgcmV0dXJuIDEKKysgICAgICAgOzsKKyAgICAgICopCisgICAgICAgIGlmICEgZGlmZl90d29fZmlsZXM7IHRoZW4KKyAgICAgICAgICAgIHJldHVybiAxCistLSAKKzIuOS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9maWxlcy9wa2ctZGlmZi5zaC1jaGVja19zaW5nbGVfZmlsZS1yZXR1cm4tYXQtb25jZS13aGVuLXNhLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2ZpbGVzL3BrZy1kaWZmLnNoLWNoZWNrX3NpbmdsZV9maWxlLXJldHVybi1hdC1vbmNlLXdoZW4tc2EucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQyYWYyNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9maWxlcy9wa2ctZGlmZi5zaC1jaGVja19zaW5nbGVfZmlsZS1yZXR1cm4tYXQtb25jZS13aGVuLXNhLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gNjU3OTgzZWY5Y2E4ZjgzNTQxNzI2ODJlMTc0MDhjNGY2YjViYzY2NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAxNCBKdWwgMjAxNiAxOTo0NjowOCAtMDcwMAorU3ViamVjdDogW1BBVENIIDEvNF0gcGtnLWRpZmYuc2g6IGNoZWNrX3NpbmdsZV9maWxlKCk6IHJldHVybiBhdCBvbmNlIHdoZW4KKyBzYW1lCisKK0lmIHRoZSB0d28gZmlsZXMgYXJlIHRoZSBzYW1lLCByZXR1cm4gYXQgb25jZSwgdGhpcyBjYW4gc2F2ZSBhIGxvdCBvZgordGltZSB3aGVuIHRoZXJlIGFyZSBhcmNoaXZlcyBpbnNpZGUgYXJjaGl2ZXMuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvYnVpbGQtY29tcGFyZS9wdWxsLzEwXQorCitTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIHBrZy1kaWZmLnNoIHwgNyArKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvcGtnLWRpZmYuc2ggYi9wa2ctZGlmZi5zaAoraW5kZXggM2NmMTBhYS4uNDAyZDRhNCAxMDA2NDQKKy0tLSBhL3BrZy1kaWZmLnNoCisrKysgYi9wa2ctZGlmZi5zaAorQEAgLTI5Myw2ICsyOTMsMTMgQEAgY2hlY2tfY29tcHJlc3NlZF9maWxlKCkKKyBjaGVja19zaW5nbGVfZmlsZSgpCisgeworICAgbG9jYWwgZmlsZT0iJDEiCisrCisrICAjIElmIHRoZSB0d28gZmlsZXMgYXJlIHRoZSBzYW1lLCByZXR1cm4gYXQgb25jZS4KKysgIGlmIFsgLWYgb2xkLyRmaWxlIC1hIC1mIG5ldy8kZmlsZSBdOyB0aGVuCisrICAgIGlmIGNtcCAtcyBvbGQvJGZpbGUgbmV3LyRmaWxlOyB0aGVuCisrICAgICAgcmV0dXJuIDAKKysgICAgZmkKKysgIGZpCisgICBjYXNlICRmaWxlIGluCisgICAgICouc3BlYykKKyAgICAgICAgc2VkIC1pIC1lICJzLFJlbGVhc2U6LiokcmVsZWFzZTEsUmVsZWFzZTogQFJFTEVBU0VALCIgb2xkLyRmaWxlCistLSAKKzIuOS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9maWxlcy9wa2ctZGlmZi5zaC1yZW1vdmUtc3BhY2UtaW4tdGhlLWVuZC1mb3ItZnR5cGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J1aWxkLWNvbXBhcmUvZmlsZXMvcGtnLWRpZmYuc2gtcmVtb3ZlLXNwYWNlLWluLXRoZS1lbmQtZm9yLWZ0eXBlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwNzcxNzIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J1aWxkLWNvbXBhcmUvZmlsZXMvcGtnLWRpZmYuc2gtcmVtb3ZlLXNwYWNlLWluLXRoZS1lbmQtZm9yLWZ0eXBlLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gODM2YTY3ODNkZjljNTgyYTgzNGZjYTIzOWYyMjcwNjNhNTY4NzcxNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAxNCBKdWwgMjAxNiAxOTo0OToxMiAtMDcwMAorU3ViamVjdDogW1BBVENIIDIvNF0gcGtnLWRpZmYuc2g6IHJlbW92ZSBzcGFjZSBpbiB0aGUgZW5kIGZvciBmdHlwZQorCitWZXJzaW9ucyBvZiBmaWxlIGxpa2UgNS4xNCByZXR1cm5zIGEgIiAiIGluIHRoZSBlbmQsIGZvciBleGFtcGxlOgorZnR5cGU9ImRpcmVjdG9yeSAiLCBidXQgd2UgbmVlZCBmdHlwZT0iZGlyZWN0b3J5IiwgcmVtb3ZlIHRoZSBzcGFjZSB0bworZml4IHRoZSBwcm9ibGVtLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL29wZW5TVVNFL2J1aWxkLWNvbXBhcmUvcHVsbC8xMF0KKworU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBwa2ctZGlmZi5zaCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3BrZy1kaWZmLnNoIGIvcGtnLWRpZmYuc2gKK2luZGV4IDQwMmQ0YTQuLjVkZDNhMzggMTAwNjQ0CistLS0gYS9wa2ctZGlmZi5zaAorKysrIGIvcGtnLWRpZmYuc2gKK0BAIC02MzMsNyArNjMzLDcgQEAgY2hlY2tfc2luZ2xlX2ZpbGUoKQorICAgICAgIDs7CisgICBlc2FjCisgCistICBmdHlwZT1gL3Vzci9iaW4vZmlsZSBvbGQvJGZpbGUgfCBzZWQgJ3NAXlteOl1cKzpbWzpibGFuazpdXSpAQCdgCisrICBmdHlwZT1gL3Vzci9iaW4vZmlsZSBvbGQvJGZpbGUgfCBzZWQgLWUgJ3NAXlteOl1cKzpbWzpibGFuazpdXSpAQCcgLWUgJ3NAW1s6Ymxhbms6XV0qJEBAJ2AKKyAgIGNhc2UgJGZ0eXBlIGluCisgICAgICBQRTMyXCBleGVjdXRhYmxlKk1vbm9cL1wuTmV0XCBhc3NlbWJseSopCisgICAgICAgIGVjaG8gIlBFMzIgTW9uby8uTmV0IGFzc2VtYmx5OiAkZmlsZSIKKy0tIAorMi45LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jY2FjaGUvY2NhY2hlXzMuMi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jY2FjaGUvY2NhY2hlXzMuMi40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDQ1ZTQxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2NhY2hlL2NjYWNoZV8zLjIuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLXJlcXVpcmUgY2NhY2hlLmluYwotCi1MSUNFTlNFID0gIkdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT1iM2MzMzdlNzY2NDU1OWE3ODlkOWY3YTkzZTUyODNjMSIKLQotU1JDUkVWID0gIjIyNTQ3OTdmMWM1Y2ZiODNjNDI3MmRhN2IxMzhmN2Y0NzIxOGViN2QiCi0KLVNSQ19VUkkgKz0gIiBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMi1kZXYubWsuaW4tZml4LWZpbGUtbmFtZS10b28tbG9uZy5wYXRjaCBcCi0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NjYWNoZS9jY2FjaGVfMy4yLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NjYWNoZS9jY2FjaGVfMy4yLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZkMWIwZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2NhY2hlL2NjYWNoZV8zLjIuNS5iYgpAQCAtMCwwICsxLDExIEBACityZXF1aXJlIGNjYWNoZS5pbmMKKworTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9YjhhNGZhMTczZWQ5MWMxYTUyMDRlYTRmOWM5ZWFkYzMiCisKK1NSQ1JFViA9ICI0MjRkM2FlMWZiNzM0NDRjNmMzOGJmMTg5ZjhmYzA0OGY2NmQ2NDk5IgorCitTUkNfVVJJICs9ICIgXAorICAgICAgICAgICAgZmlsZTovLzAwMDItZGV2Lm1rLmluLWZpeC1maWxlLW5hbWUtdG9vLWxvbmcucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL1JldmVydC1DcmVhdGUtbWFuLXBhZ2UtaW4tdGhlLW1ha2UtaW5zdGFsbC1mcm9tLWdpdC0ucGF0Y2ggXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jY2FjaGUvZmlsZXMvUmV2ZXJ0LUNyZWF0ZS1tYW4tcGFnZS1pbi10aGUtbWFrZS1pbnN0YWxsLWZyb20tZ2l0LS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2NhY2hlL2ZpbGVzL1JldmVydC1DcmVhdGUtbWFuLXBhZ2UtaW4tdGhlLW1ha2UtaW5zdGFsbC1mcm9tLWdpdC0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjAyMDhiOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2NhY2hlL2ZpbGVzL1JldmVydC1DcmVhdGUtbWFuLXBhZ2UtaW4tdGhlLW1ha2UtaW5zdGFsbC1mcm9tLWdpdC0ucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSA5NGZhYmNkZGE1YzdlNTRjY2RiYzFmMGFlY2NiMjZjZTMwZTYxMjI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDE4IEp1bCAyMDE2IDE5OjUzOjAwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIFJldmVydCAiQ3JlYXRlIG1hbiBwYWdlIGluIHRoZSBtYWtlLWluc3RhbGwtZnJvbS1naXQtcmVwbworIGNhc2UiCisKK1RoaXMgcmV2ZXJ0cyBjb21taXQgYjg2Nzg0OTAyZDI4ZGVmZDVlNDc1Yzg5MjJkZTU5NDc4N2RmNDU0MS4KKworV2UgZG9udCcgaGF2ZSBhc2NpaWRvYywgc28gcmV2ZXJ0IGl0LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLUNvcmUgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgTWFrZWZpbGUuaW4gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCitpbmRleCBkNDc0ZjJhLi5jNmNkYzA0IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuaW4KKysrKyBiL01ha2VmaWxlLmluCitAQCAtNzYsNyArNzYsNyBAQCBjY2FjaGUkKEVYRUVYVCk6ICQoY2NhY2hlX29ianMpICQoZXh0cmFfbGlicykKKyAJJChDQykgJChhbGxfY2ZsYWdzKSAtbyAkQCAkKGNjYWNoZV9vYmpzKSAkKExERkxBR1MpICQoZXh0cmFfbGlicykgJChMSUJTKQorIAorIC5QSE9OWTogaW5zdGFsbAorLWluc3RhbGw6IGFsbCAkKHNyY2RpcikvY2NhY2hlLjEKKytpbnN0YWxsOiBhbGwKKyAJJChpbnN0YWxsY21kKSAtZCAkKERFU1RESVIpJChiaW5kaXIpCisgCSQoaW5zdGFsbGNtZCkgLW0gNzU1IGNjYWNoZSQoRVhFRVhUKSAkKERFU1RESVIpJChiaW5kaXIpCisgCSQoaW5zdGFsbGNtZCkgLWQgJChERVNURElSKSQobWFuZGlyKS9tYW4xCistLSAKKzIuOS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UtbmF0aXZlXzMuNC4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS1uYXRpdmVfMy40LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiNGU3NDkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS1uYXRpdmVfMy40LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1yZXF1aXJlIGNtYWtlLmluYwotaW5oZXJpdCBuYXRpdmUKLQotIyBVc2luZyBjbWFrZSdzIGludGVybmFsIGxpYmFyY2hpdmUsIHNvIHNvbWUgZGVwZW5kZW5jaWVzIGFyZSBuZWVkZWQKLURFUEVORFMgKz0gImJ6aXAyLW5hdGl2ZSB6bGliLW5hdGl2ZSIKLQotU1JDX1VSSSArPSAiXAotICAgIGZpbGU6Ly9jbWxpYmFyY2hpdmUtZGlzYWJsZS1leHQyZnMucGF0Y2ggXAotIgotCi0jIERpc2FibGUgY2NtYWtlIHNpbmNlIHdlIGRvbid0IGRlcGVuZCBvbiBuY3Vyc2VzCi1DTUFLRV9FWFRSQUNPTkYgPSAiXAotICAgIC1EQlVJTERfQ3Vyc2VzRGlhbG9nPTAgXAotICAgIC1ERU5BQkxFX0FDTD0wIC1ESEFWRV9BQ0xfTElCQUNMX0g9MCBcCi0gICAgLURIQVZFX1NZU19BQ0xfSD0wIFwKLSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UtbmF0aXZlXzMuNi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS1uYXRpdmVfMy42LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWVjMGQ2NGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLW5hdGl2ZV8zLjYuMS5iYgpAQCAtMCwwICsxLDM2IEBACityZXF1aXJlIGNtYWtlLmluYworaW5oZXJpdCBuYXRpdmUKKworREVQRU5EUyArPSAiYnppcDItcmVwbGFjZW1lbnQtbmF0aXZlIGV4cGF0LW5hdGl2ZSB4ei1uYXRpdmUgemxpYi1uYXRpdmUgY3VybC1uYXRpdmUiCisKK1NSQ19VUkkgKz0gIlwKKyAgICBmaWxlOi8vY21saWJhcmNoaXZlLWRpc2FibGUtZXh0MmZzLnBhdGNoIFwKKyIKKworQiA9ICIke1dPUktESVJ9L2J1aWxkIgorZG9fY29uZmlndXJlW2NsZWFuZGlyc10gPSAiJHtCfSIKKworIyBEaXNhYmxlIGNjbWFrZSBzaW5jZSB3ZSBkb24ndCBkZXBlbmQgb24gbmN1cnNlcworQ01BS0VfRVhUUkFDT05GID0gIlwKKyAgICAtRENNQUtFX0xJQlJBUllfUEFUSD0ke1NUQUdJTkdfTElCRElSX05BVElWRX0gXAorICAgIC1EQlVJTERfQ3Vyc2VzRGlhbG9nPTAgXAorICAgIC1EQ01BS0VfVVNFX1NZU1RFTV9MSUJSQVJJRVM9MSBcCisgICAgLURDTUFLRV9VU0VfU1lTVEVNX0xJQlJBUllfSlNPTkNQUD0wIFwKKyAgICAtRENNQUtFX1VTRV9TWVNURU1fTElCUkFSWV9MSUJBUkNISVZFPTAgXAorICAgIC1ERU5BQkxFX0FDTD0wIC1ESEFWRV9BQ0xfTElCQUNMX0g9MCBcCisgICAgLURIQVZFX1NZU19BQ0xfSD0wIFwKKyIKKworZG9fY29uZmlndXJlICgpIHsKKwkke1N9L2NvbmZpZ3VyZSAtLXZlcmJvc2UgLS1wcmVmaXg9JHtwcmVmaXh9IC0tICR7Q01BS0VfRVhUUkFDT05GfQorfQorCitkb19jb21waWxlKCkgeworCW9lX3J1bm1ha2UKK30KKworZG9faW5zdGFsbCgpIHsKKwlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKK30KKworZG9fY29tcGlsZVtwcm9ncmVzc10gPSAicGVyY2VudCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS5pbmMKaW5kZXggOTY4ZDAwMy4uNGZjYjBiMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS5pbmMKQEAgLTYsMjQgKzYsMjEgQEAKIEJVR1RSQUNLRVIgPSAiaHR0cDovL3B1YmxpYy5raXR3YXJlLmNvbS9CdWcvbXlfdmlld19wYWdlLnBocCIKIFNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKIExJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ29weXJpZ2h0LnR4dDttZDU9M2JhNWE2YzM0NDgxNjUyY2U1NzNlNWM0ZTFkNzA3ZTQgXAorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ29weXJpZ2h0LnR4dDttZDU9MDUyZjg2YzE1YmJkZTY4YWY1NWM3ZjdiMzQwYWI2MzkgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vU291cmNlL2NtYWtlLmg7YmVnaW5saW5lPTE7ZW5kbGluZT0xMDttZDU9MzQxNzM2ZGFlODNjOWUzNDRiNTNlZWIxYmM3ZDdiYzIiCiAKLUNNQUtFX01BSk9SX1ZFUlNJT04gPSAiJHtAJy4nLmpvaW4oZC5nZXRWYXIoJ1BWJywxKS5zcGxpdCgnLicpWzA6Ml0pfSIKK0NNQUtFX01BSk9SX1ZFUlNJT04gPSAiJHtAJy4nLmpvaW4oZC5nZXRWYXIoJ1BWJywgVHJ1ZSkuc3BsaXQoJy4nKVswOjJdKX0iCiAKIFNSQ19VUkkgPSAiaHR0cHM6Ly9jbWFrZS5vcmcvZmlsZXMvdiR7Q01BS0VfTUFKT1JfVkVSU0lPTn0vY21ha2UtJHtQVn0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovL3N1cHBvcnQtb2UtcXQ0LXRvb2xzLW5hbWVzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3F0NC1mYWlsLXNpbGVudC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1OSU9TMi1DUFUtc3VwcG9ydC5wYXRjaCBcCiAgICAgICAgICAgICIKIAotU1JDX1VSSVttZDVzdW1dID0gIjRjYjNmZjM1YjI0NzJhYWU3MGY1NDIxMTZkNjE2ZTYzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImI3M2Y4YzEwMjk2MTFkZjdlZDgxNzk2YmY1Y2E4YmEwZWY0MWM2NzYxMTMyMzQwYzczZmZlNDI3MDRmOTgwZmEiCitTUkNfVVJJW21kNXN1bV0gPSAiZDZkZDY2MTM4MGFkYWNkYjEyZjQxYjkyNmVjOTk1NDUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjhlZTk4ZWM0MDQyN2Q0MWE0NTY3Mzg0N2RiN2E5MDViNTljZTkyNDNiYjg2NmVhZjU5ZGNlMGY1OGFhZWYxMSIKIAogVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiY21ha2UtKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCiAKLWluaGVyaXQgYXV0b3Rvb2xzCi0KICMgVWdseSBoYWNrIHRvIHdvcmsgYXJvdW5kIHVuZGVmaW5lZCBPRV9RTUFLRV9QQVRIX0VYVEVSTkFMX0hPU1RfQklOUyB2YXJpYWJsZQogIyBhbmQgcG9zc2libHkgbWlzc2luZyBxbWFrZSBiaW5hcnkgKHF0YmFzZS1uYXRpdmUgY2FuIGJlIHJlbW92ZWQgZnJvbSBzeXNyb290CiAjIGUuZy4gaW4gb3JkZXIgdG8gdXBncmFkZSBpdCwgZXZlbiB3aGVuIHRoZXJlIGlzIHRhcmdldCBxdGJhc2UpCkBAIC00NiwxMCArNDMsMyBAQAogCXNlZCAtaSAncy9eICBmaW5kX3BhY2thZ2UoUXQ1V2lkZ2V0cyBSRVFVSVJFRCkvIyAgZmluZF9wYWNrYWdlKFF0NVdpZGdldHMgUkVRVUlSRUQpL2cnICR7U30vVGVzdHMvUXRBdXRvZ2VuL0NNYWtlTGlzdHMudHh0CiAJc2VkIC1pICdzL14gIGZpbmRfcGFja2FnZShRdDVDb3JlIFJFUVVJUkVEKS8jICBmaW5kX3BhY2thZ2UoUXQ1Q29yZSBSRVFVSVJFRCkvZycgJHtTfS9UZXN0cy9RdEF1dG9nZW4vYXV0b3JjY19kZXBlbmRzL0NNYWtlTGlzdHMudHh0CiB9Ci0KLSMgRXh0cmEgZmxhZ3MgdG8gcGFzcyB0byBjbWFrZSBpbnZva2VkIGJ5IGJvb3RzdHJhcAotQ01BS0VfRVhUUkFDT05GID0gIiIKLQotZG9fY29uZmlndXJlICgpIHsKLQkke1N9L2NvbmZpZ3VyZSAtLXByZWZpeD0ke3ByZWZpeH0gLS0gJHtDTUFLRV9FWFRSQUNPTkZ9Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDEtQWRkLU5JT1MyLUNQVS1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAxLUFkZC1OSU9TMi1DUFUtc3VwcG9ydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmUwYWI5Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDEtQWRkLU5JT1MyLUNQVS1zdXBwb3J0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotRnJvbSAzZjhjM2QzMDExZWExOTJkYTJjNzYxNTYwYjYxNWY1NTc2MzcxNWVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFyZWsgVmFzdXQgPG1hcmV4QGRlbnguZGU+Ci1EYXRlOiBUaHUsIDI2IE5vdiAyMDE1IDIxOjMxOjA0ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFkZCBOSU9TMiBDUFUgc3VwcG9ydAotCi1BZGQgbmVjZXNzYXJ5IGJpdHMgdG8gc3VwcG9ydCB0aGUgTklPUzIgbGl0dGxlLWVuZGlhbiBDUFUuCi0KLVNpZ25lZC1vZmYtYnk6IE1hcmVrIFZhc3V0IDxtYXJleEBkZW54LmRlPgotQ2M6IExleSBGb29uIFRhbiA8bGZ0YW5AYWx0ZXJhLmNvbT4KLUNjOiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+Ci1DYzogV2FsdGVyIEdvb3NzZW5zIDx3YWx0ZXJnb29zc2Vuc0Bob21lLm5sPgotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLS0tLQotIFNvdXJjZS9rd3N5cy9DUFUuaC5pbiAgICB8IDQgKysrKwotIFV0aWxpdGllcy9LV0lNTC9BQkkuaC5pbiB8IDQgKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9Tb3VyY2Uva3dzeXMvQ1BVLmguaW4gYi9Tb3VyY2Uva3dzeXMvQ1BVLmguaW4KLWluZGV4IDg4NGQ3MWEuLjY2ZmZiYjEgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2Uva3dzeXMvQ1BVLmguaW4KLSsrKyBiL1NvdXJjZS9rd3N5cy9DUFUuaC5pbgotQEAgLTg4LDYgKzg4LDEwIEBACi0gI2VsaWYgZGVmaW5lZChfX21pcHMpIHx8IGRlZmluZWQoX19taXBzX18pIHx8IGRlZmluZWQoX19NSVBTX18pCi0gIyBkZWZpbmUgQEtXU1lTX05BTUVTUEFDRUBfQ1BVX0VORElBTl9JRCBAS1dTWVNfTkFNRVNQQUNFQF9DUFVfRU5ESUFOX0lEX0JJRwotIAotKy8qIE5JT1MyICovCi0rI2VsaWYgZGVmaW5lZChfX05JT1MyX18pIHx8IGRlZmluZWQoX19OSU9TMikgfHwgZGVmaW5lZChfX25pb3MyX18pCi0rIyBkZWZpbmUgQEtXU1lTX05BTUVTUEFDRUBfQ1BVX0VORElBTl9JRCBAS1dTWVNfTkFNRVNQQUNFQF9DUFVfRU5ESUFOX0lEX0xJVFRMRQotKwotIC8qIE9wZW5SSVNDIDEwMDAgKi8KLSAjZWxpZiBkZWZpbmVkKF9fb3Ixa19fKQotICMgZGVmaW5lIEBLV1NZU19OQU1FU1BBQ0VAX0NQVV9FTkRJQU5fSUQgQEtXU1lTX05BTUVTUEFDRUBfQ1BVX0VORElBTl9JRF9CSUcKLWRpZmYgLS1naXQgYS9VdGlsaXRpZXMvS1dJTUwvQUJJLmguaW4gYi9VdGlsaXRpZXMvS1dJTUwvQUJJLmguaW4KLWluZGV4IDYzMDBhZGEuLjg3YjZlOTYgMTAwNjQ0Ci0tLS0gYS9VdGlsaXRpZXMvS1dJTUwvQUJJLmguaW4KLSsrKyBiL1V0aWxpdGllcy9LV0lNTC9BQkkuaC5pbgotQEAgLTM5OCw2ICszOTgsMTAgQEAgc3VwcHJlc3Npb24gbWFjcm8gQEtXSU1MQF9BQklfTk9fVkVSSUZZIHdhcyBkZWZpbmVkLgotICNlbGlmIGRlZmluZWQoX19taXBzKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBkZWZpbmVkKF9fTUlQU19fKQotICMgZGVmaW5lIEBLV0lNTEBfQUJJX0VORElBTl9JRCBAS1dJTUxAX0FCSV9FTkRJQU5fSURfQklHCi0gCi0rLyogTklPUzIgKi8KLSsjZWxpZiBkZWZpbmVkKF9fTklPUzJfXykgfHwgZGVmaW5lZChfX05JT1MyKSB8fCBkZWZpbmVkKF9fbmlvczJfXykKLSsjIGRlZmluZSBAS1dJTUxAX0FCSV9FTkRJQU5fSUQgQEtXSU1MQF9BQklfRU5ESUFOX0lEX0xJVFRMRQotKwotIC8qIE9wZW5SSVNDIDEwMDAgKi8KLSAjZWxpZiBkZWZpbmVkKF9fb3Ixa19fKQotICMgZGVmaW5lIEBLV0lNTEBfQUJJX0VORElBTl9JRCBAS1dJTUxAX0FCSV9FTkRJQU5fSURfQklHCi0tLSAKLTIuNi4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvT0VUb29sY2hhaW5Db25maWcuY21ha2UgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlL09FVG9vbGNoYWluQ29uZmlnLmNtYWtlCmluZGV4IDYwMDE0YmIuLjY1MTg0MDggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvT0VUb29sY2hhaW5Db25maWcuY21ha2UKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS9PRVRvb2xjaGFpbkNvbmZpZy5jbWFrZQpAQCAtMywxMyArMywxNyBAQAogc2V0KCBDTUFLRV9DWFhfRkxBR1MgJEVOVntDWFhGTEFHU30gIENBQ0hFIFNUUklORyAiIiBGT1JDRSApCiBzZXQoIENNQUtFIEFTTV9GTEFHUyAke0NNQUtFX0NfRkxBR1N9IENBQ0hFIFNUUklORyAiIiBGT1JDRSApCiBzZXQoIENNQUtFX0xERkxBR1NfRkxBR1MgJHtDTUFLRV9DWFhfRkxBR1N9IENBQ0hFIFNUUklORyAiIiBGT1JDRSApCisKIHNldCggQ01BS0VfRklORF9ST09UX1BBVEggJEVOVntPRUNPUkVfVEFSR0VUX1NZU1JPT1R9ICRFTlZ7T0VDT1JFX05BVElWRV9TWVNST09UfSApCiBzZXQoIENNQUtFX0ZJTkRfUk9PVF9QQVRIX01PREVfUFJPR1JBTSBORVZFUiApCiBzZXQoIENNQUtFX0ZJTkRfUk9PVF9QQVRIX01PREVfTElCUkFSWSBPTkxZICkKIHNldCggQ01BS0VfRklORF9ST09UX1BBVEhfTU9ERV9JTkNMVURFIE9OTFkgKQorc2V0KCBDTUFLRV9GSU5EX1JPT1RfUEFUSF9NT0RFX1BBQ0tBR0UgT05MWSApCiAKLXN0cmluZyhSRUdFWCBNQVRDSCAic3lzcm9vdHMvKFthLXpBLVowLTldKykiIENNQUtFX1NZU1RFTV9QUk9DRVNTT1IgJEVOVntTREtUQVJHRVRTWVNST09UfSkKLXN0cmluZyhSRUdFWCBSRVBMQUNFICJzeXNyb290cy8iICIiIENNQUtFX1NZU1RFTV9QUk9DRVNTT1IgJHtDTUFLRV9TWVNURU1fUFJPQ0VTU09SfSkKKyMgU2V0IENNQUtFX1NZU1RFTV9QUk9DRVNTT1IgZnJvbSB0aGUgc3lzcm9vdCBuYW1lIChhc3N1bWluZyBwcm9jZXNzb3ItZGlzdHJvLW9zKS4KK2lmICgkRU5We1NES1RBUkdFVFNZU1JPT1R9IE1BVENIRVMgIi9zeXNyb290cy8oW2EtekEtWjAtOV8tXSspLS4rLS4rIikKKyAgc2V0KENNQUtFX1NZU1RFTV9QUk9DRVNTT1IgJHtDTUFLRV9NQVRDSF8xfSkKK2VuZGlmKCkKIAogIyBJbmNsdWRlIHRoZSB0b29sY2hhaW4gY29uZmlndXJhdGlvbiBzdWJzY3JpcHRzCiBmaWxlKCBHTE9CIHRvb2xjaGFpbl9jb25maWdfZmlsZXMgIiR7Q01BS0VfVE9PTENIQUlOX0ZJTEV9LmQvKi5jbWFrZSIgKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZV8zLjQuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2VfMy40LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmMTg4ZjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZV8zLjQuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLXJlcXVpcmUgY21ha2UuaW5jCi0KLWluaGVyaXQgY21ha2UKLQotREVQRU5EUyArPSAiY3VybCBleHBhdCB6bGliIGxpYmFyY2hpdmUgeHogbmN1cnNlcyBiemlwMiIKLQotU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBcCi0gICAgZmlsZTovL09FVG9vbGNoYWluQ29uZmlnLmNtYWtlIFwKLSAgICBmaWxlOi8vZW52aXJvbm1lbnQuZC1jbWFrZS5zaCIKLQotIyBTdHJpcCAke3ByZWZpeH0gZnJvbSAke2RvY2Rpcn0sIHNldCByZXN1bHQgaW50byBkb2NkaXJfc3RyaXBwZWQKLXB5dGhvbiAoKSB7Ci0gICAgcHJlZml4PWQuZ2V0VmFyKCJwcmVmaXgiLCBUcnVlKQotICAgIGRvY2Rpcj1kLmdldFZhcigiZG9jZGlyIiwgVHJ1ZSkKLQotICAgIGlmIG5vdCBkb2NkaXIuc3RhcnRzd2l0aChwcmVmaXgpOgotICAgICAgICByYWlzZSBiYi5idWlsZC5GdW5jRmFpbGVkKCdkb2NkaXIgbXVzdCBjb250YWluIHByZWZpeCBhcyBpdHMgcHJlZml4JykKLQotICAgIGRvY2Rpcl9zdHJpcHBlZCA9IGRvY2RpcltsZW4ocHJlZml4KTpdCi0gICAgaWYgbGVuKGRvY2Rpcl9zdHJpcHBlZCkgPiAwIGFuZCBkb2NkaXJfc3RyaXBwZWRbMF0gPT0gJy8nOgotICAgICAgICBkb2NkaXJfc3RyaXBwZWQgPSBkb2NkaXJfc3RyaXBwZWRbMTpdCi0KLSAgICBkLnNldFZhcigiZG9jZGlyX3N0cmlwcGVkIiwgZG9jZGlyX3N0cmlwcGVkKQotfQotCi1FWFRSQV9PRUNNQUtFPSIgXAotICAgIC1EQ01BS0VfRE9DX0RJUj0ke2RvY2Rpcl9zdHJpcHBlZH0vY21ha2UtJHtDTUFLRV9NQUpPUl9WRVJTSU9OfSBcCi0gICAgLURDTUFLRV9VU0VfU1lTVEVNX0xJQlJBUllfQlpJUDI9MSBcCi0gICAgLURDTUFLRV9VU0VfU1lTVEVNX0xJQlJBUllfQ1VSTD0xIFwKLSAgICAtRENNQUtFX1VTRV9TWVNURU1fTElCUkFSWV9FWFBBVD0xIFwKLSAgICAtRENNQUtFX1VTRV9TWVNURU1fTElCUkFSWV9GT1JNPTEgXAotICAgIC1EQ01BS0VfVVNFX1NZU1RFTV9MSUJSQVJZX0xJQkFSQ0hJVkU9MSBcCi0gICAgLURDTUFLRV9VU0VfU1lTVEVNX0xJQlJBUllfTElCTFpNQT0xIFwKLSAgICAtRENNQUtFX1VTRV9TWVNURU1fTElCUkFSWV9aTElCPTEgXAotICAgIC1ES1dTWVNfQ0hBUl9JU19TSUdORUQ9MSBcCi0gICAgLURCVUlMRF9DdXJzZXNEaWFsb2c9MCBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsYXJnZWZpbGUnLCAnLURLV1NZU19MRlNfV09SS1M9MScsICctREtXU1lTX0xGU19ESVNBQkxFPTEnLCBkKX0gXAotIgotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0gICAgbWtkaXIgLXAgJHtEfSR7ZGF0YWRpcn0vY21ha2UKLSAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L09FVG9vbGNoYWluQ29uZmlnLmNtYWtlICR7RH0ke2RhdGFkaXJ9L2NtYWtlLwotCi0gICAgbWtkaXIgLXAgJHtEfSR7U0RLUEFUSE5BVElWRX0vZW52aXJvbm1lbnQtc2V0dXAuZAotICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vZW52aXJvbm1lbnQuZC1jbWFrZS5zaCAke0R9JHtTREtQQVRITkFUSVZFfS9lbnZpcm9ubWVudC1zZXR1cC5kL2NtYWtlLnNoCi19Ci0KLUZJTEVTXyR7UE59X2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiICR7U0RLUEFUSE5BVElWRX0iCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2NtYWtlLSR7Q01BS0VfTUFKT1JfVkVSU0lPTn0iCi1GSUxFU18ke1BOfS1kb2MgKz0gIiR7ZG9jZGlyfS9jbWFrZS0ke0NNQUtFX01BSk9SX1ZFUlNJT059IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2VfMy42LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlXzMuNi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1MGQ2ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlXzMuNi4xLmJiCkBAIC0wLDAgKzEsNDggQEAKK3JlcXVpcmUgY21ha2UuaW5jCisKK2luaGVyaXQgY21ha2UKKworREVQRU5EUyArPSAiY3VybCBleHBhdCB6bGliIGxpYmFyY2hpdmUgeHogbmN1cnNlcyBiemlwMiIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBcCisgICAgZmlsZTovL09FVG9vbGNoYWluQ29uZmlnLmNtYWtlIFwKKyAgICBmaWxlOi8vZW52aXJvbm1lbnQuZC1jbWFrZS5zaCIKKworIyBTdHJpcCAke3ByZWZpeH0gZnJvbSAke2RvY2Rpcn0sIHNldCByZXN1bHQgaW50byBkb2NkaXJfc3RyaXBwZWQKK3B5dGhvbiAoKSB7CisgICAgcHJlZml4PWQuZ2V0VmFyKCJwcmVmaXgiLCBUcnVlKQorICAgIGRvY2Rpcj1kLmdldFZhcigiZG9jZGlyIiwgVHJ1ZSkKKworICAgIGlmIG5vdCBkb2NkaXIuc3RhcnRzd2l0aChwcmVmaXgpOgorICAgICAgICBiYi5mYXRhbCgnZG9jZGlyIG11c3QgY29udGFpbiBwcmVmaXggYXMgaXRzIHByZWZpeCcpCisKKyAgICBkb2NkaXJfc3RyaXBwZWQgPSBkb2NkaXJbbGVuKHByZWZpeCk6XQorICAgIGlmIGxlbihkb2NkaXJfc3RyaXBwZWQpID4gMCBhbmQgZG9jZGlyX3N0cmlwcGVkWzBdID09ICcvJzoKKyAgICAgICAgZG9jZGlyX3N0cmlwcGVkID0gZG9jZGlyX3N0cmlwcGVkWzE6XQorCisgICAgZC5zZXRWYXIoImRvY2Rpcl9zdHJpcHBlZCIsIGRvY2Rpcl9zdHJpcHBlZCkKK30KKworRVhUUkFfT0VDTUFLRT0iIFwKKyAgICAtRENNQUtFX0RPQ19ESVI9JHtkb2NkaXJfc3RyaXBwZWR9L2NtYWtlLSR7Q01BS0VfTUFKT1JfVkVSU0lPTn0gXAorICAgIC1EQ01BS0VfVVNFX1NZU1RFTV9MSUJSQVJJRVM9MSBcCisgICAgLURDTUFLRV9VU0VfU1lTVEVNX0xJQlJBUllfSlNPTkNQUD0wIFwKKyAgICAtREtXU1lTX0NIQVJfSVNfU0lHTkVEPTEgXAorICAgIC1EQlVJTERfQ3Vyc2VzRGlhbG9nPTAgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGFyZ2VmaWxlJywgJy1ES1dTWVNfTEZTX1dPUktTPTEnLCAnLURLV1NZU19MRlNfRElTQUJMRT0xJywgZCl9IFwKKyIKKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworICAgIG1rZGlyIC1wICR7RH0ke2RhdGFkaXJ9L2NtYWtlCisgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9PRVRvb2xjaGFpbkNvbmZpZy5jbWFrZSAke0R9JHtkYXRhZGlyfS9jbWFrZS8KKworICAgIG1rZGlyIC1wICR7RH0ke1NES1BBVEhOQVRJVkV9L2Vudmlyb25tZW50LXNldHVwLmQKKyAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L2Vudmlyb25tZW50LmQtY21ha2Uuc2ggJHtEfSR7U0RLUEFUSE5BVElWRX0vZW52aXJvbm1lbnQtc2V0dXAuZC9jbWFrZS5zaAorfQorCitGSUxFU18ke1BOfV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAke1NES1BBVEhOQVRJVkV9IgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9jbWFrZS0ke0NNQUtFX01BSk9SX1ZFUlNJT059IgorRklMRVNfJHtQTn0tZG9jICs9ICIke2RvY2Rpcn0vY21ha2UtJHtDTUFLRV9NQUpPUl9WRVJTSU9OfSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2N2ZS1jaGVjay10b29sL2N2ZS1jaGVjay10b29sXzUuNi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jdmUtY2hlY2stdG9vbC9jdmUtY2hlY2stdG9vbF81LjYuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmFhZGVhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jdmUtY2hlY2stdG9vbC9jdmUtY2hlY2stdG9vbF81LjYuNC5iYgpAQCAtMCwwICsxLDU0IEBACitTVU1NQVJZID0gImN2ZS1jaGVjay10b29sIgorREVTQ1JJUFRJT04gPSAiY3ZlLWNoZWNrLXRvb2wgaXMgYSB0b29sIGZvciBjaGVja2luZyBrbm93biAocHVibGljKSBDVkVzLlwKK1RoZSB0b29sIHdpbGwgaWRlbnRpZnkgcG90ZW50aWFsbHkgdnVubG5lcmFibGUgc29mdHdhcmUgcGFja2FnZXMgd2l0aGluIExpbnV4IGRpc3RyaWJ1dGlvbnMgdGhyb3VnaCB2ZXJzaW9uIG1hdGNoaW5nLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pa2V5ZG9oZXJ0eS9jdmUtY2hlY2stdG9vbCIKK1NFQ1RJT04gPSAiRGV2ZWxvcG1lbnQvVG9vbHMiCitMSUNFTlNFID0gIkdQTC0yLjArIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZThjMTQ1ODQzOGVhZDNjMzQ5NzRiYzBiZTNhMDNlZDYiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2lrZXlkb2hlcnR5LyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC92JHtQVn0vJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL2NoZWNrLWZvci1tYWxsb2NfdHJpbS1iZWZvcmUtdXNpbmctaXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1wcmludC1wcm9ncmVzcy1pbi1wZXJjZW50LXdoZW4tZG93bmxvYWRpbmctQ1ZFLWRiLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjNWY0MjQ3MTQwZmM5YmUzYmY0MTQ5MWQzMWEzNDE1NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiOGYyODNiZTcxOGFmOGQzMTIzMmFjMWJmYzEwYTAzNzhmYjk1OGFhYWE0OWFmMzkxNjhmOGFjZjUwMWU2YTViIgorCitERVBFTkRTID0gImxpYmNoZWNrIGdsaWItMi4wIGpzb24tZ2xpYiBjdXJsIGxpYnhtbDIgc3FsaXRlMyBvcGVuc3NsIGNhLWNlcnRpZmljYXRlcyIKKworUkRFUEVORFNfJHtQTn0gPSAiY2EtY2VydGlmaWNhdGVzIgorCitpbmhlcml0IHBrZ2NvbmZpZyBhdXRvdG9vbHMKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1jb3ZlcmFnZSIKK0NGTEFHU19hcHBlbmQgPSAiIC1Xbm8tZXJyb3I9cGVkYW50aWMiCisKK2RvX3BvcHVsYXRlX2N2ZV9kYigpIHsKKyAgICBpZiBbICIke0JCX05PX05FVFdPUkt9IiA9ICIxIiBdIDsgdGhlbgorICAgICAgICBiYmVycm9yICJCQl9OT19ORVRXT1JLIGlzIHNldDsgQ2FuJ3QgdXBkYXRlIGN2ZS1jaGVjay10b29sIGRhdGFiYXNlLCBDVkVzIHdvbid0IGJlIGNoZWNrZWQiCisgICAgICAgIHJldHVybgorICAgIGZpCisKKyAgICAjIEluIGNhc2Ugd2UgZG9uJ3QgaW5oZXJpdCBjdmUtY2hlY2sgY2xhc3MsIHVzZSBkZWZhdWx0IHZhbHVlcyBkZWZpbmVkIGluIHRoZSBjbGFzcy4KKyAgICBjdmVfZGlyPSIke0NWRV9DSEVDS19EQl9ESVJ9IgorICAgIGN2ZV9maWxlPSIke0NWRV9DSEVDS19UTVBfRklMRX0iCisKKyAgICBbIC16ICIke2N2ZV9kaXJ9IiBdICYmIGN2ZV9kaXI9IiR7RExfRElSfS9DVkVfQ0hFQ0siCisgICAgWyAteiAiJHtjdmVfZmlsZX0iIF0gJiYgY3ZlX2ZpbGU9IiR7VE1QRElSfS9jdmVfY2hlY2siCisKKyAgICBiYmRlYnVnIDIgIlVwZGF0aW5nIGN2ZS1jaGVjay10b29sIGRhdGFiYXNlIGxvY2F0ZWQgaW4gJGN2ZV9kaXIiCisgICAgaWYgY3ZlLWNoZWNrLXVwZGF0ZSAtZCAiJGN2ZV9kaXIiIDsgdGhlbgorICAgICAgICBwcmludGYgIkNWRSBkYXRhYmFzZSB3YXMgdXBkYXRlZCBvbiAlcyBVVENcblxuIiAiJChMQU5HPUMgZGF0ZSAtLXV0YyArJyVGICVUJykiID4gIiRjdmVfZmlsZSIKKyAgICBlbHNlCisgICAgICAgIGJid2FybiAiRXJyb3IgaW4gZXhlY3V0aW5nIGN2ZS1jaGVjay11cGRhdGUiCisgICAgICAgIGlmIFsgIiR7QCcxJyBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdjdmUtY2hlY2snLCBkKSBlbHNlICcwJ30iIC1uZSAwIF0gOyB0aGVuCisgICAgICAgICAgICBiYndhcm4gIkZhaWxlZCB0byB1cGRhdGUgY3ZlLWNoZWNrLXRvb2wgZGF0YWJhc2UsIENWRXMgd29uJ3QgYmUgY2hlY2tlZCIKKyAgICAgICAgZmkKKyAgICBmaQorfQorCithZGR0YXNrIHBvcHVsYXRlX2N2ZV9kYiBhZnRlciBkb19wb3B1bGF0ZV9zeXNyb290Citkb19wb3B1bGF0ZV9jdmVfZGJbbm9zdGFtcF0gPSAiMSIKK2RvX3BvcHVsYXRlX2N2ZV9kYltwcm9ncmVzc10gPSAicGVyY2VudCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jdmUtY2hlY2stdG9vbC9maWxlcy8wMDAxLXByaW50LXByb2dyZXNzLWluLXBlcmNlbnQtd2hlbi1kb3dubG9hZGluZy1DVkUtZGIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2N2ZS1jaGVjay10b29sL2ZpbGVzLzAwMDEtcHJpbnQtcHJvZ3Jlc3MtaW4tcGVyY2VudC13aGVuLWRvd25sb2FkaW5nLUNWRS1kYi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTEwZTNhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jdmUtY2hlY2stdG9vbC9maWxlcy8wMDAxLXByaW50LXByb2dyZXNzLWluLXBlcmNlbnQtd2hlbi1kb3dubG9hZGluZy1DVkUtZGIucGF0Y2gKQEAgLTAsMCArMSwxMzUgQEAKK0Zyb20gZTllZDI2Y2RlNjNmOGNhNzYwN2EwMTBhNTE4MzI5MzM5ZjhjMDJkMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9BbmRyPUMzPUE5PTIwRHJhc3ppaz89IDxnaXRAYW5kcmVkLm5ldD4KK0RhdGU6IE1vbiwgMjYgU2VwIDIwMTYgMTI6MTI6NDEgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gcHJpbnQgcHJvZ3Jlc3MgaW4gcGVyY2VudCB3aGVuIGRvd25sb2FkaW5nIENWRSBkYgorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFuZHLDqSBEcmFzemlrIDxnaXRAYW5kcmVkLm5ldD4KKy0tLQorIHNyYy9saWJyYXJ5L2ZldGNoLmMgfCAyOCArKysrKysrKysrKysrKysrKysrKysrKysrKystCisgc3JjL2xpYnJhcnkvZmV0Y2guaCB8ICAzICsrLQorIHNyYy91cGRhdGUuYyAgICAgICAgfCAxNiArKysrKysrKysrKystLS0tCisgMyBmaWxlcyBjaGFuZ2VkLCA0MSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2xpYnJhcnkvZmV0Y2guYyBiL3NyYy9saWJyYXJ5L2ZldGNoLmMKK2luZGV4IDA2ZDRiMzAuLjBmZTZkNzYgMTAwNjQ0CistLS0gYS9zcmMvbGlicmFyeS9mZXRjaC5jCisrKysgYi9zcmMvbGlicmFyeS9mZXRjaC5jCitAQCAtMzcsMTMgKzM3LDM3IEBAIHN0YXRpYyBzaXplX3Qgd3JpdGVfZnVuYyh2b2lkICpwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1lbWIsIHN0cnVjdCBmZXRjaF90ICpmCisgICAgICAgICByZXR1cm4gZndyaXRlKHB0ciwgc2l6ZSwgbm1lbWIsIGYtPmYpOworIH0KKyAKKy1GZXRjaFN0YXR1cyBmZXRjaF91cmkoY29uc3QgY2hhciAqdXJpLCBjb25zdCBjaGFyICp0YXJnZXQsIGJvb2wgdmVyYm9zZSkKKytzdHJ1Y3QgcGVyY2VudF90IHsKKysgICAgICAgIHVuc2lnbmVkIGludCBzdGFydDsKKysgICAgICAgIHVuc2lnbmVkIGludCBlbmQ7CisrfTsKKysKKytzdGF0aWMgaW50IHByb2dyZXNzX2NhbGxiYWNrX25ldyh2b2lkICpwdHIsIGN1cmxfb2ZmX3QgZGx0b3RhbCwgY3VybF9vZmZfdCBkbG5vdywgY3VybF9vZmZfdCB1bHRvdGFsLCBjdXJsX29mZl90IHVsbm93KQorK3sKKysgICAgICAgICh2b2lkKSB1bHRvdGFsOworKyAgICAgICAgKHZvaWQpIHVsbm93OworKworKyAgICAgICAgc3RydWN0IHBlcmNlbnRfdCAqcGVyY2VudCA9IChzdHJ1Y3QgcGVyY2VudF90ICopIHB0cjsKKysKKysgICAgICAgIGlmIChkbHRvdGFsICYmIHBlcmNlbnQgJiYgcGVyY2VudC0+ZW5kID49IHBlcmNlbnQtPnN0YXJ0KSB7CisrICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBkaWZmID0gcGVyY2VudC0+ZW5kIC0gcGVyY2VudC0+c3RhcnQ7CisrICAgICAgICAgICAgICAgIGlmIChkaWZmKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsImNvbXBsZXRlZDogIkNVUkxfRk9STUFUX09GRl9UIiUlXHIiLCBwZXJjZW50LT5zdGFydCArIChkaWZmICogZGxub3cgLyBkbHRvdGFsKSk7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysKKysgICAgICAgIHJldHVybiAwOworK30KKysKKytGZXRjaFN0YXR1cyBmZXRjaF91cmkoY29uc3QgY2hhciAqdXJpLCBjb25zdCBjaGFyICp0YXJnZXQsIGJvb2wgdmVyYm9zZSwKKysgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHN0YXJ0X3BlcmNlbnQsIHVuc2lnbmVkIGludCBlbmRfcGVyY2VudCkKKyB7CisgICAgICAgICBGZXRjaFN0YXR1cyByZXQgPSBGRVRDSF9TVEFUVVNfRkFJTDsKKyAgICAgICAgIENVUkxjb2RlIHJlczsKKyAgICAgICAgIHN0cnVjdCBzdGF0IHN0OworICAgICAgICAgQ1VSTCAqY3VybCA9IE5VTEw7CisgICAgICAgICBzdHJ1Y3QgZmV0Y2hfdCAqZiA9IE5VTEw7CisrICAgICAgICBzdHJ1Y3QgcGVyY2VudF90IHBlcmNlbnQgPSB7IC5zdGFydCA9IHN0YXJ0X3BlcmNlbnQsIC5lbmQgPSBlbmRfcGVyY2VudCB9OworIAorICAgICAgICAgY3VybCA9IGN1cmxfZWFzeV9pbml0KCk7CisgICAgICAgICBpZiAoIWN1cmwpIHsKK0BAIC02Nyw2ICs5MSw4IEBAIEZldGNoU3RhdHVzIGZldGNoX3VyaShjb25zdCBjaGFyICp1cmksIGNvbnN0IGNoYXIgKnRhcmdldCwgYm9vbCB2ZXJib3NlKQorICAgICAgICAgfQorICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgICAgICAgKHZvaWQpY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX05PUFJPR1JFU1MsIDBMKTsKKysgICAgICAgICAgICAgICAgKHZvaWQpY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1hGRVJJTkZPREFUQSwgJnBlcmNlbnQpOworKyAgICAgICAgICAgICAgICAodm9pZCljdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfWEZFUklORk9GVU5DVElPTiwgcHJvZ3Jlc3NfY2FsbGJhY2tfbmV3KTsKKyAgICAgICAgIH0KKyAgICAgICAgIHJlcyA9IGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9XUklURUZVTkNUSU9OLCAoY3VybF93cml0ZV9jYWxsYmFjayl3cml0ZV9mdW5jKTsKKyAgICAgICAgIGlmIChyZXMgIT0gQ1VSTEVfT0spIHsKK2RpZmYgLS1naXQgYS9zcmMvbGlicmFyeS9mZXRjaC5oIGIvc3JjL2xpYnJhcnkvZmV0Y2guaAoraW5kZXggNzBjMzc3OS4uNGNjZTVkMSAxMDA2NDQKKy0tLSBhL3NyYy9saWJyYXJ5L2ZldGNoLmgKKysrKyBiL3NyYy9saWJyYXJ5L2ZldGNoLmgKK0BAIC0yOCw3ICsyOCw4IEBAIHR5cGVkZWYgZW51bSB7CisgICogQHBhcmFtIHZlcmJvc2UgV2hldGhlciB0byBiZSB2ZXJib3NlCisgICogQHJldHVybiBBIEZldGNoU3RhdHVzLCBpbmRpY2F0aW5nIHRoZSBvcGVyYXRpb24gdGFrZW4KKyAgKi8KKy1GZXRjaFN0YXR1cyBmZXRjaF91cmkoY29uc3QgY2hhciAqdXJpLCBjb25zdCBjaGFyICp0YXJnZXQsIGJvb2wgdmVyYm9zZSk7CisrRmV0Y2hTdGF0dXMgZmV0Y2hfdXJpKGNvbnN0IGNoYXIgKnVyaSwgY29uc3QgY2hhciAqdGFyZ2V0LCBib29sIHZlcmJvc2UsCisrICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB0aGlzX3BlcmNlbnQsIHVuc2lnbmVkIGludCBuZXh0X3BlcmNlbnQpOworIAorIC8qKgorICAqIEF0dGVtcHQgdG8gZXh0cmFjdCB0aGUgZ2l2ZW4gZ3ppcHBlZCBmaWxlCitkaWZmIC0tZ2l0IGEvc3JjL3VwZGF0ZS5jIGIvc3JjL3VwZGF0ZS5jCitpbmRleCAzMGZiZTk2Li5lYWVlZWZkIDEwMDY0NAorLS0tIGEvc3JjL3VwZGF0ZS5jCisrKysgYi9zcmMvdXBkYXRlLmMKK0BAIC0yNjYsNyArMjY2LDggQEAgc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZV9lbmQoaW50IGZkLCBjb25zdCBjaGFyICp1cGRhdGVfZm5hbWUsIGJvb2wgb2spCisgfQorIAorIHN0YXRpYyBpbnQgZG9fZmV0Y2hfdXBkYXRlKGludCB5ZWFyLCBjb25zdCBjaGFyICpkYl9kaXIsIEN2ZURCICpjdmVfZGIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkYl9leGlzdCwgYm9vbCB2ZXJib3NlKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGJfZXhpc3QsIGJvb2wgdmVyYm9zZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdGhpc19wZXJjZW50LCB1bnNpZ25lZCBpbnQgbmV4dF9wZXJjZW50KQorIHsKKyAgICAgICAgIGNvbnN0IGNoYXIgbnZkX3VyaVtdID0gVVJJX1BSRUZJWDsKKyAgICAgICAgIGF1dG9mcmVlKGN2ZV9zdHJpbmcpICp1cmlfbWV0YSA9IE5VTEw7CitAQCAtMzMwLDE0ICszMzEsMTQgQEAgcmVmZXRjaDoKKyAgICAgICAgIH0KKyAKKyAgICAgICAgIC8qIEZldGNoIE5WRCBNRVRBIGZpbGUgKi8KKy0gICAgICAgIHN0ID0gZmV0Y2hfdXJpKHVyaV9tZXRhLT5zdHIsIG52ZGN2ZV9tZXRhLT5zdHIsIHZlcmJvc2UpOworKyAgICAgICAgc3QgPSBmZXRjaF91cmkodXJpX21ldGEtPnN0ciwgbnZkY3ZlX21ldGEtPnN0ciwgdmVyYm9zZSwgdGhpc19wZXJjZW50LCB0aGlzX3BlcmNlbnQpOworICAgICAgICAgaWYgKHN0ID09IEZFVENIX1NUQVRVU19GQUlMKSB7CisgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGZldGNoICVzXG4iLCB1cmlfbWV0YS0+c3RyKTsKKyAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgfQorIAorICAgICAgICAgLyogRmV0Y2ggTlZEIFhNTCBmaWxlICovCistICAgICAgICBzdCA9IGZldGNoX3VyaSh1cmlfZGF0YV9nei0+c3RyLCBudmRjdmVfZGF0YV9nei0+c3RyLCB2ZXJib3NlKTsKKysgICAgICAgIHN0ID0gZmV0Y2hfdXJpKHVyaV9kYXRhX2d6LT5zdHIsIG52ZGN2ZV9kYXRhX2d6LT5zdHIsIHZlcmJvc2UsIHRoaXNfcGVyY2VudCwgbmV4dF9wZXJjZW50KTsKKyAgICAgICAgIHN3aXRjaCAoc3QpIHsKKyAgICAgICAgIGNhc2UgRkVUQ0hfU1RBVFVTX0ZBSUw6CisgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGZldGNoICVzXG4iLCB1cmlfZGF0YV9nei0+c3RyKTsKK0BAIC00NTksMTAgKzQ2MCwxNyBAQCBib29sIHVwZGF0ZV9kYihib29sIHF1aWV0LCBjb25zdCBjaGFyICpkYl9maWxlKQorICAgICAgICAgZm9yIChpbnQgaSA9IFlFQVJfU1RBUlQ7IGkgPD0geWVhcisxOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgaW50IHkgPSBpID4geWVhciA/IC0xIDogaTsKKyAgICAgICAgICAgICAgICAgaW50IHJjOworKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc3RhcnRfcGVyY2VudCA9ICgoaSswIC0gWUVBUl9TVEFSVCkgKiAxMDApIC8gKHllYXIrMiAtIFlFQVJfU1RBUlQpOworKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZW5kX3BlcmNlbnQgPSAoKGkrMSAtIFlFQVJfU1RBUlQpICogMTAwKSAvICh5ZWFyKzIgLSBZRUFSX1NUQVJUKTsKKyAKKy0gICAgICAgICAgICAgICAgcmMgPSBkb19mZXRjaF91cGRhdGUoeSwgZGJfZGlyLCBjdmVfZGIsIGRiX2V4aXN0LCAhcXVpZXQpOworKyAgICAgICAgICAgICAgICBpZiAoIXF1aWV0KQorKyAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiY29tcGxldGVkOiAldSUlXHIiLCBzdGFydF9wZXJjZW50KTsKKysgICAgICAgICAgICAgICAgcmMgPSBkb19mZXRjaF91cGRhdGUoeSwgZGJfZGlyLCBjdmVfZGIsIGRiX2V4aXN0LCAhcXVpZXQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X3BlcmNlbnQsIGVuZF9wZXJjZW50KTsKKyAgICAgICAgICAgICAgICAgc3dpdGNoIChyYykgeworICAgICAgICAgICAgICAgICBjYXNlIDA6CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFxdWlldCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCJjb21wbGV0ZWQ6ICV1JSVcciIsIGVuZF9wZXJjZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgY2FzZSBFTk9NRU06CisgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvb207CistLSAKKzIuOS4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY3ZlLWNoZWNrLXRvb2wvZmlsZXMvY2hlY2stZm9yLW1hbGxvY190cmltLWJlZm9yZS11c2luZy1pdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY3ZlLWNoZWNrLXRvb2wvZmlsZXMvY2hlY2stZm9yLW1hbGxvY190cmltLWJlZm9yZS11c2luZy1pdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzc0YWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jdmUtY2hlY2stdG9vbC9maWxlcy9jaGVjay1mb3ItbWFsbG9jX3RyaW0tYmVmb3JlLXVzaW5nLWl0LnBhdGNoCkBAIC0wLDAgKzEsNTEgQEAKK0Zyb20gY2U2NDYzM2I5NzMzZTk2MmI4ZDg0ODIyNDQzMDFmNjE0ZDhiNTg0NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDIyIEF1ZyAyMDE2IDIyOjU0OjI0IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIENoZWNrIGZvciBtYWxsb2NfdHJpbSBiZWZvcmUgdXNpbmcgaXQKKworbWFsbG9jX3RyaW0gaXMgZ251IHNwZWNpZmljIGFuZCBub3QgYWxsIGxpYmMKK2ltcGxlbWVudCBpdCwgdGhyZWZvcmUgd3JpdGUgYSBjb25maWd1cmUgY2hlY2sKK3RvIHBva2UgZm9yIGl0IGZpcnN0IGFuZCB1c2UgdGhlIGRlZmluZSB0bworZ3VhcmQgaXRzIHVzZS4KKworSGVscHMgaW4gY29tcGlsaW5nIG9uIG11c2wgYmFzZWQgc3lzdGVtcworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2lrZXlkb2hlcnR5L2N2ZS1jaGVjay10b29sL3B1bGwvNDhdCisgY29uZmlndXJlLmFjIHwgMiArKworIHNyYy9jb3JlLmMgICB8IDQgKystLQorIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBkM2I2NmNlLi43OWMzNTQyIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xOSw2ICsxOSw4IEBAIG00X2RlZmluZShbanNvbl9yZXF1aXJlZF92ZXJzaW9uXSwgWzAuMTYuMF0pCisgbTRfZGVmaW5lKFtvcGVuc3NsX3JlcXVpcmVkX3ZlcnNpb25dLFsxLjAuMF0pCisgIyBUT0RPOiBTZXQgbWluaW11bSBzcWxpdGUKKyAKKytBQ19DSEVDS19GVU5DU19PTkNFKG1hbGxvY190cmltKQorKworIFBLR19DSEVDS19NT0RVTEVTKENWRV9DSEVDS19UT09MLAorICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgIGdsaWItMi4wID49IGdsaWJfcmVxdWlyZWRfdmVyc2lvbiwKK2RpZmYgLS1naXQgYS9zcmMvY29yZS5jIGIvc3JjL2NvcmUuYworaW5kZXggNjI2MzAzMS4uMGQ1ZGYyOSAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlLmMKKysrKyBiL3NyYy9jb3JlLmMKK0BAIC00OTgsOSArNDk4LDkgQEAgYm9vbCBjdmVfZGJfbG9hZChDdmVEQiAqc2VsZiwgY29uc3QgY2hhciAqZm5hbWUpCisgICAgICAgICB9CisgCisgICAgICAgICBiID0gdHJ1ZTsKKy0KKysjaWZkZWYgSEFWRV9NQUxMT0NfVFJJTQorICAgICAgICAgbWFsbG9jX3RyaW0oMCk7CistCisrI2VuZGlmCisgICAgICAgICB4bWxGcmVlVGV4dFJlYWRlcihyKTsKKyAgICAgICAgIGlmIChmZCkgeworICAgICAgICAgICAgICAgICBjbG9zZShmZCk7CistLSAKKzIuOS4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGVza3RvcC1maWxlLXV0aWxzL2Rlc2t0b3AtZmlsZS11dGlscy1uYXRpdmVfMC4yMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGVza3RvcC1maWxlLXV0aWxzL2Rlc2t0b3AtZmlsZS11dGlscy1uYXRpdmVfMC4yMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjg5OWNkMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rlc2t0b3AtZmlsZS11dGlscy9kZXNrdG9wLWZpbGUtdXRpbHMtbmF0aXZlXzAuMjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1TVU1NQVJZID0gIkNvbW1hbmQgbGluZSB1dGlsaXRpZXMgZm9yIHdvcmtpbmcgd2l0aCAqLmRlc2t0b3AgZmlsZXMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL2Rlc2t0b3AtZmlsZS11dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotREVQRU5EUyA9ICJnbGliLTIuMC1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2ZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS9kZXNrdG9wLWZpbGUtdXRpbHMvcmVsZWFzZXMvZGVza3RvcC1maWxlLXV0aWxzLSR7UFZ9LnRhci54eiIKLQotU1JDX1VSSVttZDVzdW1dID0gImM2YjlmOWFhYzFlYTE0MzA5MTE3OGMyMzQzN2U2Y2QwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg0MzUzMjY3MjY5MmY5OGU5YjJkNmFlNmNjODY1OGRhNTYyZGZkZTE2MDZjN2YzM2Q5ZDIyN2EzNDRkZTU2YzUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIG5hdGl2ZQotCi1TID0gIiR7V09SS0RJUn0vZGVza3RvcC1maWxlLXV0aWxzLSR7UFZ9IgotCi1FWFRSQV9PRUNPTkYgKz0gImFjX2N2X3Byb2dfRU1BQ1M9bm8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rlc2t0b3AtZmlsZS11dGlscy9kZXNrdG9wLWZpbGUtdXRpbHMtbmF0aXZlXzAuMjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rlc2t0b3AtZmlsZS11dGlscy9kZXNrdG9wLWZpbGUtdXRpbHMtbmF0aXZlXzAuMjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTRkYWFiZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGVza3RvcC1maWxlLXV0aWxzL2Rlc2t0b3AtZmlsZS11dGlscy1uYXRpdmVfMC4yMy5iYgpAQCAtMCwwICsxLDE4IEBACitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitTVU1NQVJZID0gIkNvbW1hbmQgbGluZSB1dGlsaXRpZXMgZm9yIHdvcmtpbmcgd2l0aCAqLmRlc2t0b3AgZmlsZXMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL2Rlc2t0b3AtZmlsZS11dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjIiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorREVQRU5EUyA9ICJnbGliLTIuMC1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cDovL2ZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS9kZXNrdG9wLWZpbGUtdXRpbHMvcmVsZWFzZXMvZGVza3RvcC1maWxlLXV0aWxzLSR7UFZ9LnRhci54eiIKKworU1JDX1VSSVttZDVzdW1dID0gIjU5OTEzM2Q1MWNjOWE0MWJmZWMxODY0MTQ5MDZiNmYxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZjMDk0MDMxYmRlYzQ2YzlmNjIxNzA4ZjkxOTA4NGUxY2I1Mjk0ZTJjNWIxZTRjODgzYjNlNzBjYjg5MDMzODUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIG5hdGl2ZQorCitTID0gIiR7V09SS0RJUn0vZGVza3RvcC1maWxlLXV0aWxzLSR7UFZ9IgorCitFWFRSQV9PRUNPTkYgKz0gImFjX2N2X3Byb2dfRU1BQ1M9bm8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rpc3RjYy9kaXN0Y2NfMy4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaXN0Y2MvZGlzdGNjXzMuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjg4NzljOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rpc3RjYy9kaXN0Y2NfMy4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzQgKzAsMCBAQAotU1VNTUFSWSA9ICJBIHBhcmFsbGVsIGJ1aWxkIHN5c3RlbSIKLURFU0NSSVBUSU9OID0gImRpc3RjYyBpcyBhIHBhcmFsbGVsIGJ1aWxkIHN5c3RlbSB0aGF0IGRpc3RyaWJ1dGVzIFwKLWNvbXBpbGF0aW9uIG9mIEMvQysrL09iakMgY29kZSBhY3Jvc3MgbWFjaGluZXMgb24gYSBuZXR3b3JrLiIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCi0KLURFUEVORFMgPSAiYXZhaGkiCi0KLUdUS0NPTkZJRyA9ICJndGsiCi1HVEtDT05GSUdfbGliYy11Y2xpYmMgPSAiIgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnJHtHVEtDT05GSUd9JywgJycsIGQpfSBwb3B0IgotUEFDS0FHRUNPTkZJR1tndGtdID0gIi0td2l0aC1ndGssLS13aXRob3V0LWd0ayAtLXdpdGhvdXQtZ25vbWUsZ3RrKyIKLSMgdXNlIHN5c3RlbSBwb3B0IGJ5IGRlZmF1bHQKLVBBQ0tBR0VDT05GSUdbcG9wdF0gPSAiLS13aXRob3V0LWluY2x1ZGVkLXBvcHQsLS13aXRoLWluY2x1ZGVkLXBvcHQscG9wdCIKLQotUlJFQ09NTUVORFNfJHtQTn0gPSAiYXZhaGktZGFlbW9uIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZGlzdGNjL2Rpc3RjYy5naXQgXAotICAgICAgICAgICBmaWxlOi8vc2VwYXJhdGVidWlsZGRpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXplcm9jb25mLUluY2x1ZGUtZmNudGwuaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWZhdWx0IFwKLSAgICAgICAgICAgZmlsZTovL2Rpc3RjY21vbi1nbm9tZS5kZXNrdG9wIFwKLSAgICAgICAgICAgZmlsZTovL2Rpc3RjYyBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXN0Y2Muc2VydmljZSIKLVNSQ1JFViA9ICI5YTE3MmQzZDIwMDQyNzU0YTMwYzBjZDlhNWQ2M2ZkMWE4MTIwYzMxIgotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwZGF0ZS1yYy5kIHVzZXJhZGQgc3lzdGVtZAotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1XZXJyb3IgUFlUSE9OPS9kZXYvbnVsbCIKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gXAotICAgICAgICAgICAgICAgICAgICAgICAtLWhvbWUgL2Rldi9udWxsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLS1uby1jcmVhdGUtaG9tZSBcCi0gICAgICAgICAgICAgICAgICAgICAgIC0tZ2lkIG5vZ3JvdXAgXAotICAgICAgICAgICAgICAgICAgICAgICBkaXN0Y2MiCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJkaXN0Y2MiCi0KLVNZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0iCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiZGlzdGNjLnNlcnZpY2UiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLwotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdAotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2Rpc3RjYyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vZGVmYXVsdCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L2Rpc3RjYwotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vZGlzdGNjLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBzZWQgLWkgLWUgJ3MsQEJJTkRJUkAsJHtiaW5kaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2Rpc3RjYy5zZXJ2aWNlCi0gICAgJHtERVNLVE9QSU5TVEFMTH0KLX0KLURFU0tUT1BJTlNUQUxMID0gIiIKLURFU0tUT1BJTlNUQUxMX2xpYmMtZ2xpYmMgKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vZGlzdGNjLwotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2Rpc3RjY21vbi1nbm9tZS5kZXNrdG9wICR7RH0ke2RhdGFkaXJ9L2Rpc3RjYy8KLX0KLVBBQ0tBR0VTICs9ICJkaXN0Y2MtZGlzdG1vbi1nbm9tZSIKLQotRklMRVNfJHtQTn0gPSAiICR7c3lzY29uZmRpcn0gXAotCQkke2JpbmRpcn0vZGlzdGNjIFwKLSAgICAke2JpbmRpcn0vbHNkaXN0Y2MgXAotCQkke2JpbmRpcn0vZGlzdGNjZCBcCi0JCSR7YmluZGlyfS9kaXN0Y2Ntb24tdGV4dCBcCi0JCSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vZGlzdGNjLnNlcnZpY2UiCi1GSUxFU19kaXN0Y2MtZGlzdG1vbi1nbm9tZSA9ICIgICR7YmluZGlyfS9kaXN0Y2Ntb24tZ25vbWUgXAotCQkJCSR7ZGF0YWRpcn0vZGlzdGNjIgotCi1wa2dfcG9zdHJtXyR7UE59ICgpIHsKLQlkZWx1c2VyIGRpc3RjYyB8fCB0cnVlCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rpc3RjYy9kaXN0Y2NfMy4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaXN0Y2MvZGlzdGNjXzMuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDg0YWQyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaXN0Y2MvZGlzdGNjXzMuMi5iYgpAQCAtMCwwICsxLDcxIEBACitTVU1NQVJZID0gIkEgcGFyYWxsZWwgYnVpbGQgc3lzdGVtIgorREVTQ1JJUFRJT04gPSAiZGlzdGNjIGlzIGEgcGFyYWxsZWwgYnVpbGQgc3lzdGVtIHRoYXQgZGlzdHJpYnV0ZXMgXAorY29tcGlsYXRpb24gb2YgQy9DKysvT2JqQyBjb2RlIGFjcm9zcyBtYWNoaW5lcyBvbiBhIG5ldHdvcmsuIgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKKworREVQRU5EUyA9ICJhdmFoaSBiaW51dGlscyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInBvcHQiCitQQUNLQUdFQ09ORklHW2d0a10gPSAiLS13aXRoLWd0aywtLXdpdGhvdXQtZ3RrIC0td2l0aG91dC1nbm9tZSxndGsrIgorIyB1c2Ugc3lzdGVtIHBvcHQgYnkgZGVmYXVsdAorUEFDS0FHRUNPTkZJR1twb3B0XSA9ICItLXdpdGhvdXQtaW5jbHVkZWQtcG9wdCwtLXdpdGgtaW5jbHVkZWQtcG9wdCxwb3B0IgorCitSUkVDT01NRU5EU18ke1BOfSA9ICJhdmFoaS1kYWVtb24iCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9kaXN0Y2MvZGlzdGNjLmdpdDticmFuY2g9JHtQVn0gXAorICAgICAgICAgICBmaWxlOi8vc2VwYXJhdGVidWlsZGRpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXplcm9jb25mLUluY2x1ZGUtZmNudGwuaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWZhdWx0IFwKKyAgICAgICAgICAgZmlsZTovL2Rpc3RjY21vbi1nbm9tZS5kZXNrdG9wIFwKKyAgICAgICAgICAgZmlsZTovL2Rpc3RjYyBcCisgICAgICAgICAgIGZpbGU6Ly9kaXN0Y2Muc2VydmljZSIKK1NSQ1JFViA9ICJkOGIxOGRmM2U5ZGNiZTRmMDkyYmVkNTY1ODM1ZDM5NzVlOTk0MzJjIgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwZGF0ZS1yYy5kIHVzZXJhZGQgc3lzdGVtZAorCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1XZXJyb3IgUFlUSE9OPScnIC0tZGlzYWJsZS1wdW1wLW1vZGUiCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitVU0VSQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIFwKKyAgICAgICAgICAgICAgICAgICAgICAgLS1ob21lIC9kZXYvbnVsbCBcCisgICAgICAgICAgICAgICAgICAgICAgIC0tbm8tY3JlYXRlLWhvbWUgXAorICAgICAgICAgICAgICAgICAgICAgICAtLWdpZCBub2dyb3VwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgZGlzdGNjIgorCitJTklUU0NSSVBUX05BTUUgPSAiZGlzdGNjIgorCitTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59IgorU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImRpc3RjYy5zZXJ2aWNlIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8KKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9kaXN0Y2MgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLworICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2RlZmF1bHQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC9kaXN0Y2MKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2Rpc3RjYy5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgc2VkIC1pIC1lICdzLEBCSU5ESVJALCR7YmluZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9kaXN0Y2Muc2VydmljZQorICAgICR7REVTS1RPUElOU1RBTEx9Cit9CitERVNLVE9QSU5TVEFMTCA9ICIiCitERVNLVE9QSU5TVEFMTF9saWJjLWdsaWJjICgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2Rpc3RjYy8KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9kaXN0Y2Ntb24tZ25vbWUuZGVza3RvcCAke0R9JHtkYXRhZGlyfS9kaXN0Y2MvCit9CitQQUNLQUdFUyArPSAiZGlzdGNjLWRpc3Rtb24tZ25vbWUiCisKK0ZJTEVTXyR7UE59ID0gIiAke3N5c2NvbmZkaXJ9IFwKKwkJJHtiaW5kaXJ9L2Rpc3RjYyBcCisgICAgJHtiaW5kaXJ9L2xzZGlzdGNjIFwKKwkJJHtiaW5kaXJ9L2Rpc3RjY2QgXAorCQkke2JpbmRpcn0vZGlzdGNjbW9uLXRleHQgXAorCQkke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2Rpc3RjYy5zZXJ2aWNlIgorRklMRVNfZGlzdGNjLWRpc3Rtb24tZ25vbWUgPSAiICAke2JpbmRpcn0vZGlzdGNjbW9uLWdub21lIFwKKwkJCQkke2RhdGFkaXJ9L2Rpc3RjYyIKKworcGtnX3Bvc3RybV8ke1BOfSAoKSB7CisJZGVsdXNlciBkaXN0Y2MgfHwgdHJ1ZQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaXN0Y2MvZmlsZXMvc2VwYXJhdGVidWlsZGRpci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlzdGNjL2ZpbGVzL3NlcGFyYXRlYnVpbGRkaXIucGF0Y2gKaW5kZXggYjllM2U0Mi4uNzU4MGI1NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaXN0Y2MvZmlsZXMvc2VwYXJhdGVidWlsZGRpci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rpc3RjYy9maWxlcy9zZXBhcmF0ZWJ1aWxkZGlyLnBhdGNoCkBAIC02LDE2ICs2LDE2IEBACiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCi1JbmRleDogZGlzdGNjLTMuMS9NYWtlZmlsZS5pbgorSW5kZXg6IGdpdC9NYWtlZmlsZS5pbgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGRpc3RjYy0zLjEub3JpZy9NYWtlZmlsZS5pbgkyMDA4LTEyLTAyIDIxOjUwOjMxLjAwMDAwMDAwMCArMDAwMAotKysrIGRpc3RjYy0zLjEvTWFrZWZpbGUuaW4JMjAxMy0wMy0wOCAxMDo0OToyNC4yMjQ0MDA5MzcgKzAwMDAKLUBAIC0xMDg4LDcgKzEwODgsNyBAQAorLS0tIGdpdC5vcmlnL01ha2VmaWxlLmluCisrKysgZ2l0L01ha2VmaWxlLmluCitAQCAtMTExNyw3ICsxMTE3LDcgQEAgaW5zdGFsbC1leGFtcGxlOiAkKGV4YW1wbGVfRE9DUykKICBpbnN0YWxsLWdub21lLWRhdGE6ICQoZ25vbWVfZGF0YSkKICAJJChta2luc3RhbGxkaXJzKSAiJChERVNURElSKSQocGtnZGF0YWRpcikiCi0gCWZvciBwIGluICQoZ25vbWVfZGF0YSk7IGRvCQkJCVwKLS0JJChJTlNUQUxMX0RBVEEpICIkJHAiICIkKERFU1RESVIpJChwa2dkYXRhZGlyKSIgfHwgZXhpdCAxOyBcCi0rCSQoSU5TVEFMTF9EQVRBKSAiJChzcmNkaXIpLyQkcCIgIiQoREVTVERJUikkKHBrZ2RhdGFkaXIpIiB8fCBleGl0IDE7IFwKKyAJZm9yIHAgaW4gJChnbm9tZV9kYXRhKTsgZG8gXAorLQkgICQoSU5TVEFMTF9EQVRBKSAiJCRwIiAiJChERVNURElSKSQocGtnZGF0YWRpcikiIHx8IGV4aXQgMTsgXAorKwkgICQoSU5TVEFMTF9EQVRBKSAiJChzcmNkaXIpLyQkcCIgIiQoREVTVERJUikkKHBrZ2RhdGFkaXIpIiB8fCBleGl0IDE7IFwKICAJZG9uZQogIAogIGluc3RhbGwtY29uZjogJChjb25mX2ZpbGVzKSAkKGRlZmF1bHRfZmlsZXMpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RvY2Jvb2steG1sL2RvY2Jvb2steG1sLWR0ZDRfNC41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kb2Nib29rLXhtbC9kb2Nib29rLXhtbC1kdGQ0XzQuNS5iYgppbmRleCBkZTFiYzM5Li4yZjEzZGJhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RvY2Jvb2steG1sL2RvY2Jvb2steG1sLWR0ZDRfNC41LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG9jYm9vay14bWwvZG9jYm9vay14bWwtZHRkNF80LjUuYmIKQEAgLTExLDcgKzExLDcgQEAKICMgTm90ZTogdGhlIHVwc3RyZWFtIHNvdXJjZXMgYXJlIG5vdCBkaXN0cmlidXRlZCB3aXRoIGEgbGljZW5zZSBmaWxlLgogIyBMSUNFTlNFLU9BU0lTIGlzIGluY2x1ZGVkIGFzIGEgInBhdGNoIiB0byB3b3JrYXJvdW5kIHRoaXMuIFdoZW4KICMgdXBncmFkaW5nIHRoaXMgcmVjaXBlLCBwbGVhc2UgdmVyaWZ5IHdoZXRoZXIgdGhpcyBpcyBzdGlsbCBuZWVkZWQuCi1TUkNfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9kL2RvY2Jvb2steG1sL2RvY2Jvb2steG1sXyR7UFZ9Lm9yaWcudGFyLmd6IFwKK1NSQ19VUkkgPSAiaHR0cDovL3NuYXBzaG90LmRlYmlhbi5vcmcvYXJjaGl2ZS9kZWJpYW4vMjAxNjA3MjhUMDQzNDQzWi9wb29sL21haW4vZC9kb2Nib29rLXhtbC9kb2Nib29rLXhtbF8ke1BWfS5vcmlnLnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLU9BU0lTIFwKICAgICAgICAgICAgZmlsZTovL2RvY2Jvb2steG1sLXVwZGF0ZS1jYXRhbG9nLnhtbC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9kb2Nib29rLXhtbC54bWwgXApAQCAtMjAsNiArMjAsOCBAQAogU1JDX1VSSVttZDVzdW1dID0gIjQ4N2I0ZDQ0ZTE1Y2ZmYjFmNDA0OGFmMjNmOTgyMDhlIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImIwZjhlZGNmNjk3ZjUzMThlNjNkZDk4YzlhOTMxZjNmZWUxNjdhZjA4MDViYTQ0MWRiMzcyZTBmMTdiMmE0NGYiCiAKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vZC9kb2Nib29rLXhtbC8iCisKIFM9IiR7V09SS0RJUn0vZG9jYm9vay14bWwtNC41LmMzMTQyNCIKIAogaW5oZXJpdCBhbGxhcmNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RvY2Jvb2steG1sL2RvY2Jvb2steHNsLXN0eWxlc2hlZXRzL2RvY2Jvb2steHNsLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG9jYm9vay14bWwvZG9jYm9vay14c2wtc3R5bGVzaGVldHMvZG9jYm9vay14c2wueG1sCmluZGV4IGExYTU3NmEuLmM2MDU1NWEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG9jYm9vay14bWwvZG9jYm9vay14c2wtc3R5bGVzaGVldHMvZG9jYm9vay14c2wueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG9jYm9vay14bWwvZG9jYm9vay14c2wtc3R5bGVzaGVldHMvZG9jYm9vay14c2wueG1sCkBAIC0xLDYgKzEsNiBAQAogPD94bWwgdmVyc2lvbj0iMS4wIj8+CiA8IURPQ1RZUEUgY2F0YWxvZyBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRW50aXR5IFJlc29sdXRpb24gWE1MIENhdGFsb2cgVjEuMC8vRU4iICJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2NvbW1pdHRlZXMvZW50aXR5L3JlbGVhc2UvMS4wL2NhdGFsb2cuZHRkIj4KIDxjYXRhbG9nIHhtbG5zPSJ1cm46b2FzaXM6bmFtZXM6dGM6ZW50aXR5OnhtbG5zOnhtbDpjYXRhbG9nIj4KLTxkZWxlZ2F0ZVVSSSB1cmlTdGFydFN0cmluZz0iaHR0cDovL2RvY2Jvb2suc291cmNlZm9yZ2UubmV0L3JlbGVhc2UveHNsLyIgY2F0YWxvZz0iZmlsZTovLy91c3Ivc2hhcmUveG1sL2RvY2Jvb2sveHNsLXN0eWxlc2hlZXRzLTEuNzguMS9jYXRhbG9nLnhtbCIvPgotPGRlbGVnYXRlU3lzdGVtIHN5c3RlbUlkU3RhcnRTdHJpbmc9Imh0dHA6Ly9kb2Nib29rLnNvdXJjZWZvcmdlLm5ldC9yZWxlYXNlL3hzbC8iIGNhdGFsb2c9ImZpbGU6Ly8vdXNyL3NoYXJlL3htbC9kb2Nib29rL3hzbC1zdHlsZXNoZWV0cy0xLjc4LjEvY2F0YWxvZy54bWwiLz4KKzxkZWxlZ2F0ZVVSSSB1cmlTdGFydFN0cmluZz0iaHR0cDovL2RvY2Jvb2suc291cmNlZm9yZ2UubmV0L3JlbGVhc2UveHNsLyIgY2F0YWxvZz0iZmlsZTovLy91c3Ivc2hhcmUveG1sL2RvY2Jvb2sveHNsLXN0eWxlc2hlZXRzL2NhdGFsb2cueG1sIi8+Cis8ZGVsZWdhdGVTeXN0ZW0gc3lzdGVtSWRTdGFydFN0cmluZz0iaHR0cDovL2RvY2Jvb2suc291cmNlZm9yZ2UubmV0L3JlbGVhc2UveHNsLyIgY2F0YWxvZz0iZmlsZTovLy91c3Ivc2hhcmUveG1sL2RvY2Jvb2sveHNsLXN0eWxlc2hlZXRzL2NhdGFsb2cueG1sIi8+CiA8L2NhdGFsb2c+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RvY2Jvb2steG1sL2RvY2Jvb2steHNsLXN0eWxlc2hlZXRzXzEuNzguMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG9jYm9vay14bWwvZG9jYm9vay14c2wtc3R5bGVzaGVldHNfMS43OC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MmRlM2FiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG9jYm9vay14bWwvZG9jYm9vay14c2wtc3R5bGVzaGVldHNfMS43OC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzQgKzAsMCBAQAotU1VNTUFSWSA9ICJYU0wgc3R5bGVzaGVldHMgZm9yIHByb2Nlc3NpbmcgRG9jQm9vayBYTUwgdG8gdmFyaW91cyBvdXRwdXQgZm9ybWF0cyIKLUhPTUVQQUdFID0gImh0dHA6Ly9kb2Nib29rLnNvdXJjZWZvcmdlLm5ldCIKLUxJQ0VOU0UgPSAiWFNMIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTZlZWVlZDQzZDQ5OGMyMmE4MzUzODI1MzMzNTY0NjIiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2RvY2Jvb2svZG9jYm9vay14c2wtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9kb2Nib29rLXhzbC54bWwgXAotICAgICAgICAgICBmaWxlOi8vZG9jYm9vay14c2wtc3R5bGVzaGVldHMtbm8tYmFzaGlzbS1pbi1kb2Nib29rLXhzbC11cC5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2ZGQwZjg5MTMxY2MzNWJmNGYyZWQxMDVhMWMxNzc3MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjOThmNzI5NmFiNWM4Y2NkMmUwYmMwNzYzNDk3NmEzN2Y1MDg0N2RmMmQ4YTU5YmRiMWUxNTc2NjQ3MDBiNDY3IgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9kb2Nib29rL2ZpbGVzL2RvY2Jvb2steHNsLyIKLSMgUmVqZWN0IHZlcnNpb25zIGVuZGluZyBpbiAuMCBhcyB0aG9zZSBhcmUgcmVsZWFzZSBjYW5kaWRhdGVzCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvZG9jYm9vay14c2wvKD9QPHB2ZXI+KFxkK1tcLlwtX10qKSsoPyFcLjApXC5cZCspLyIKLQotUyA9ICIke1dPUktESVJ9L2RvY2Jvb2steHNsLSR7UFZ9IgotCi1pbmhlcml0IGFsbGFyY2gKLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1TU1RBVEVQT1NUSU5TVEZVTkNTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGRvY2Jvb2tfeHNsX3N0eWxlc2hlZXRzX3NzdGF0ZV9wb3N0aW5zdCIKLVNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBkb2Nib29rX3hzbF9zdHlsZXNoZWV0c19zeXNyb290X3ByZXByb2Nlc3MiCi0KLWRvX2NvbmZpZ3VyZSAoKXsKLQk6Ci19Ci0KLWRvX2NvbXBpbGUgKCl7Ci0JOgotfQotCi1kb19pbnN0YWxsICgpIHsKLQkjIFJlZmVyIHRvIGh0dHA6Ly93d3cubGludXhmcm9tc2NyYXRjaC5vcmcvYmxmcy92aWV3L3N0YWJsZS9wc3QvZG9jYm9vay14c2wuaHRtbAotCSMgZm9yIGRldGFpbHMuCi0JaW5zdGFsbCAtdiAtbTc1NSAtZCAke0R9JHtkYXRhZGlyfS94bWwvZG9jYm9vay94c2wtc3R5bGVzaGVldHMtJHtQVn0KLQlsbiAtcyB4c2wtc3R5bGVzaGVldHMtJHtQVn0gJHtEfSR7ZGF0YWRpcn0veG1sL2RvY2Jvb2sveHNsLXN0eWxlc2hlZXRzCi0KLQljcCAtdiAtUiBWRVJTSU9OIGNvbW1vbiBlY2xpcHNlIGVwdWIgZXh0ZW5zaW9ucyBmbyBoaWdobGlnaHRpbmcgaHRtbCBcCi0JCWh0bWxoZWxwIGltYWdlcyBqYXZhaGVscCBsaWIgbWFucGFnZXMgcGFyYW1zIHByb2ZpbGluZyBcCi0JCXJvdW5kdHJpcCBzbGlkZXMgdGVtcGxhdGUgdGVzdHMgdG9vbHMgd2ViaGVscCB3ZWJzaXRlIFwKLQkJeGh0bWwgeGh0bWwtMV8xIGNhdGFsb2cueG1sIFwKLQkke0R9JHtkYXRhZGlyfS94bWwvZG9jYm9vay94c2wtc3R5bGVzaGVldHMtMS43OC4xCi0KLQlsbiAtcyBWRVJTSU9OICR7RH0vJHtkYXRhZGlyfS94bWwvZG9jYm9vay94c2wtc3R5bGVzaGVldHMtMS43OC4xL1ZFUlNJT04ueHNsCi0KLQlpbnN0YWxsIC12IC1tNjQ0IC1EIFJFQURNRSBcCi0JCSR7RH0ke2RhdGFkaXJ9L2RvYy9kb2Nib29rLXhzbC0xLjc4LjEvUkVBRE1FLnR4dAotCWluc3RhbGwgLXYgLW02NDQgICAgUkVMRUFTRS1OT1RFUyogTkVXUyogXAotCQkke0R9JHtkYXRhZGlyfS9kb2MvZG9jYm9vay14c2wtMS43OC4xCi0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3htbC8KLQlpbnN0YWxsIC1tIDc1NSAgJHtXT1JLRElSfS9kb2Nib29rLXhzbC54bWwgJHtEfSR7c3lzY29uZmRpcn0veG1sL2RvY2Jvb2steHNsLnhtbAotCi19Ci0KLWRvY2Jvb2tfeHNsX3N0eWxlc2hlZXRzX3NzdGF0ZV9wb3N0aW5zdCAoKSB7Ci0gICAgaWYgWyAiJHtCQl9DVVJSRU5UVEFTS30iID0gInBvcHVsYXRlX3N5c3Jvb3QiIC1vICIke0JCX0NVUlJFTlRUQVNLfSIgPSAicG9wdWxhdGVfc3lzcm9vdF9zZXRzY2VuZSIgXQotICAgIHRoZW4KLSAgICAgICAgIyBFbnN1cmUgdGhhdCB0aGUgY2F0YWxvZyBmaWxlIHNnbWwtZG9jYm9vay5jYXQgaXMgcHJvcGVybHkKLSAgICAgICAgIyB1cGRhdGVkIHdoZW4gdGhlIHBhY2thZ2UgaXMgaW5zdGFsbGVkIGZyb20gc3N0YXRlIGNhY2hlLgotICAgICAgICBzZWQgLWkgLWUgInN8ZmlsZTovLy4qL3Vzci9zaGFyZS94bWx8ZmlsZTovLyR7ZGF0YWRpcn0veG1sfGciICR7U1lTUk9PVF9ERVNURElSfSR7c3lzY29uZmRpcn0veG1sL2RvY2Jvb2steHNsLnhtbAotICAgIGZpCi19Ci0KLWRvY2Jvb2tfeHNsX3N0eWxlc2hlZXRzX3N5c3Jvb3RfcHJlcHJvY2VzcyAoKSB7Ci0gICAgIyBVcGRhdGUgdGhlIGhhcmRjb2RlIGRpciBpbiBkb2Nib29rLXhtbC54bWwKLSAgICBzZWQgLWkgLWUgInN8ZmlsZTovLy91c3Ivc2hhcmUveG1sfGZpbGU6Ly8ke2RhdGFkaXJ9L3htbHxnIiAke1NZU1JPT1RfREVTVERJUn0ke3N5c2NvbmZkaXJ9L3htbC9kb2Nib29rLXhzbC54bWwKLX0KLQotUkRFUEVORFNfJHtQTn0gKz0gInBlcmwiCi1GSUxFU18ke1BOfSA9ICIke2RhdGFkaXJ9L3htbC8qICR7c3lzY29uZmRpcn0veG1sL2RvY2Jvb2steHNsLnhtbCIKLUZJTEVTXyR7UE59LWRvYyA9ICIke2RhdGFkaXJ9L2RvYy8qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kb2Nib29rLXhtbC9kb2Nib29rLXhzbC1zdHlsZXNoZWV0c18xLjc5LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RvY2Jvb2steG1sL2RvY2Jvb2steHNsLXN0eWxlc2hlZXRzXzEuNzkuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTAzYTgyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kb2Nib29rLXhtbC9kb2Nib29rLXhzbC1zdHlsZXNoZWV0c18xLjc5LjEuYmIKQEAgLTAsMCArMSw3NCBAQAorU1VNTUFSWSA9ICJYU0wgc3R5bGVzaGVldHMgZm9yIHByb2Nlc3NpbmcgRG9jQm9vayBYTUwgdG8gdmFyaW91cyBvdXRwdXQgZm9ybWF0cyIKK0hPTUVQQUdFID0gImh0dHA6Ly9kb2Nib29rLnNvdXJjZWZvcmdlLm5ldCIKK0xJQ0VOU0UgPSAiWFNMIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NmJlYWRkOThmOWM1NGFiMGMzODdlMTQyMTFlZTRkMGUiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2RvY2Jvb2svZG9jYm9vay14c2wtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9kb2Nib29rLXhzbC54bWwgXAorICAgICAgICAgICBmaWxlOi8vZG9jYm9vay14c2wtc3R5bGVzaGVldHMtbm8tYmFzaGlzbS1pbi1kb2Nib29rLXhzbC11cC5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiNDhjYmY5MjlhMmFkODVlNjY3MmY3MTA3NzdjYTdiYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3MjVmNDUyZTEyYjI5Njk1NmU4YmZiODc2Y2NlY2U3MWVlZWNkZDE0Yjk0ZjY2N2YzZWQ5MDkxNzYxYTRhOTY4IgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9kb2Nib29rL2ZpbGVzL2RvY2Jvb2steHNsLyIKKyMgUmVqZWN0IHZlcnNpb25zIGVuZGluZyBpbiAuMCBhcyB0aG9zZSBhcmUgcmVsZWFzZSBjYW5kaWRhdGVzCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvZG9jYm9vay14c2wvKD9QPHB2ZXI+KFxkK1tcLlwtX10qKSsoPyFcLjApXC5cZCspLyIKKworUyA9ICIke1dPUktESVJ9L2RvY2Jvb2steHNsLSR7UFZ9IgorCitpbmhlcml0IGFsbGFyY2gKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitTU1RBVEVQT1NUSU5TVEZVTkNTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGRvY2Jvb2tfeHNsX3N0eWxlc2hlZXRzX3NzdGF0ZV9wb3N0aW5zdCIKK1NZU1JPT1RfUFJFUFJPQ0VTU19GVU5DU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBkb2Nib29rX3hzbF9zdHlsZXNoZWV0c19zeXNyb290X3ByZXByb2Nlc3MiCisKK2RvX2NvbmZpZ3VyZSAoKXsKKwk6Cit9CisKK2RvX2NvbXBpbGUgKCl7CisJOgorfQorCitkb19pbnN0YWxsICgpIHsKKwkjIFJlZmVyIHRvIGh0dHA6Ly93d3cubGludXhmcm9tc2NyYXRjaC5vcmcvYmxmcy92aWV3L3N0YWJsZS9wc3QvZG9jYm9vay14c2wuaHRtbAorCSMgZm9yIGRldGFpbHMuCisJaW5zdGFsbCAtdiAtbTc1NSAtZCAke0R9JHtkYXRhZGlyfS94bWwvZG9jYm9vay94c2wtc3R5bGVzaGVldHMtJHtQVn0KKwlsbiAtcyB4c2wtc3R5bGVzaGVldHMtJHtQVn0gJHtEfSR7ZGF0YWRpcn0veG1sL2RvY2Jvb2sveHNsLXN0eWxlc2hlZXRzCisKKwljcCAtdiAtUiBWRVJTSU9OIGFzc2VtYmx5IGNvbW1vbiBlY2xpcHNlIGVwdWIgZXB1YjMgZm8gXAorCQloaWdobGlnaHRpbmcgaHRtbCBodG1saGVscCBpbWFnZXMgamF2YWhlbHAgbGliIG1hbnBhZ2VzIFwKKwkJcGFyYW1zIHByb2ZpbGluZyByb3VuZHRyaXAgc2xpZGVzIHRlbXBsYXRlIHdlYmhlbHAgd2Vic2l0ZSBcCisJCXhodG1sIHhodG1sLTFfMSB4aHRtbDUgY2F0YWxvZy54bWwgXAorCQkke0R9JHtkYXRhZGlyfS94bWwvZG9jYm9vay94c2wtc3R5bGVzaGVldHMtJHtQVn0KKworCWxuIC1zIFZFUlNJT04gJHtEfS8ke2RhdGFkaXJ9L3htbC9kb2Nib29rL3hzbC1zdHlsZXNoZWV0cy0ke1BWfS9WRVJTSU9OLnhzbAorCisJaW5zdGFsbCAtdiAtbTY0NCAtRCBSRUFETUUgXAorCQkke0R9JHtkYXRhZGlyfS9kb2MvZG9jYm9vay14c2wtJHtQVn0vUkVBRE1FLnR4dAorCWluc3RhbGwgLXYgLW02NDQgICAgUkVMRUFTRS1OT1RFUyogTkVXUyogXAorCQkke0R9JHtkYXRhZGlyfS9kb2MvZG9jYm9vay14c2wtJHtQVn0KKworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0veG1sLworCWluc3RhbGwgLW0gNzU1ICAke1dPUktESVJ9L2RvY2Jvb2steHNsLnhtbCAke0R9JHtzeXNjb25mZGlyfS94bWwvZG9jYm9vay14c2wueG1sCisKK30KKworZG9jYm9va194c2xfc3R5bGVzaGVldHNfc3N0YXRlX3Bvc3RpbnN0ICgpIHsKKyAgICBpZiBbICIke0JCX0NVUlJFTlRUQVNLfSIgPSAicG9wdWxhdGVfc3lzcm9vdCIgLW8gIiR7QkJfQ1VSUkVOVFRBU0t9IiA9ICJwb3B1bGF0ZV9zeXNyb290X3NldHNjZW5lIiBdCisgICAgdGhlbgorICAgICAgICAjIEVuc3VyZSB0aGF0IHRoZSBjYXRhbG9nIGZpbGUgc2dtbC1kb2Nib29rLmNhdCBpcyBwcm9wZXJseQorICAgICAgICAjIHVwZGF0ZWQgd2hlbiB0aGUgcGFja2FnZSBpcyBpbnN0YWxsZWQgZnJvbSBzc3RhdGUgY2FjaGUuCisgICAgICAgIHNlZCAtaSAtZSAic3xmaWxlOi8vLiovdXNyL3NoYXJlL3htbHxmaWxlOi8vJHtkYXRhZGlyfS94bWx8ZyIgJHtTWVNST09UX0RFU1RESVJ9JHtzeXNjb25mZGlyfS94bWwvZG9jYm9vay14c2wueG1sCisgICAgZmkKK30KKworZG9jYm9va194c2xfc3R5bGVzaGVldHNfc3lzcm9vdF9wcmVwcm9jZXNzICgpIHsKKyAgICAjIFVwZGF0ZSB0aGUgaGFyZGNvZGUgZGlyIGluIGRvY2Jvb2steG1sLnhtbAorICAgIHNlZCAtaSAtZSAic3xmaWxlOi8vL3Vzci9zaGFyZS94bWx8ZmlsZTovLyR7ZGF0YWRpcn0veG1sfGciICR7U1lTUk9PVF9ERVNURElSfSR7c3lzY29uZmRpcn0veG1sL2RvY2Jvb2steHNsLnhtbAorfQorCitSREVQRU5EU18ke1BOfSArPSAicGVybCIKK0ZJTEVTXyR7UE59ID0gIiR7ZGF0YWRpcn0veG1sLyogJHtzeXNjb25mZGlyfS94bWwvZG9jYm9vay14c2wueG1sIgorRklMRVNfJHtQTn0tZG9jID0gIiR7ZGF0YWRpcn0vZG9jLyoiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rvc2ZzdG9vbHMvZG9zZnN0b29scy8wMDAxLW1rZnMuZmF0LWZpeC1pbmNvcnJlY3QtaW50LXR5cGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rvc2ZzdG9vbHMvZG9zZnN0b29scy8wMDAxLW1rZnMuZmF0LWZpeC1pbmNvcnJlY3QtaW50LXR5cGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0OTdjYTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kb3Nmc3Rvb2xzL2Rvc2ZzdG9vbHMvMDAwMS1ta2ZzLmZhdC1maXgtaW5jb3JyZWN0LWludC10eXBlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotRnJvbSAzYjk1Nzg2YWYxM2UyODE1N2Q4ODliZDkwYTM4NGVlMjU1ZjJkOTFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIllhbm4gRS4gTU9SSU4iIDx5YW5uLm1vcmluLjE5OThAZnJlZS5mcj4KLURhdGU6IFN1biwgMTYgQXVnIDIwMTUgMTU6NTU6NDMgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gbWtmcy5mYXQ6IGZpeCBpbmNvcnJlY3QgaW50IHR5cGUKLQotdV9pbnQzMl90IGlzIG5vdCBhIHN0YW5hcmQgdHlwZSwgd2hpbGUgdWludDMyX3QgaXMuIFRoaXMgZml4ZXMgYnVpbGRzCi13aXRoIHRoZSBtdXNsIEMgbGlicmFyeSwgd2hpY2ggb25seSBkZWZpbmVzIHNvLWNhbGxlZCAiY2xlYW4iIGhlYWRlcnM7Ci1idWlsZCBmYWlsdXJlcyBhcmUgbGlrZSAoYmFjay1xdW90ZXMgYW5kIGVsaXNpb24gbWFudWFsbHkgYWRkZWQgZm9yCi1yZWFkYWJpbGl0eSk6Ci0KLSAgICBodHRwOi8vYXV0b2J1aWxkLmJ1aWxkcm9vdC5vcmcvcmVzdWx0cy9hMDkvYTA5MjNkN2Y2ZDRkYmFlMDJlYmE0YzUwMjRiYmRhZTNhNTJhYTg1YS9idWlsZC1lbmQubG9nCi0KLSAgICAvaG9tZS9wZWtvL2F1dG9idWlsZC9pbnN0YW5jZS0xL291dHB1dC9ob3N0L3Vzci9iaW4veDg2XzY0LWxpbnV4LWdjYyAtRF9MQVJHRUZJTEVfU09VUkNFIFwKLSAgICAgICAgLURfTEFSR0VGSUxFNjRfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgICAtT3MgIC1EX0dOVV9TT1VSQ0UgLURfTEFSR0VGSUxFX1NPVVJDRSBcCi0gICAgICAgIC1EX0xBUkdFRklMRTY0X1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0ICAtYyAtbyBta2ZzLmZhdC5vIHNyYy9ta2ZzLmZhdC5jCi0gICAgc3JjL21rZnMuZmF0LmM6IEluIGZ1bmN0aW9uICdtYWluJzoKLSAgICBzcmMvbWtmcy5mYXQuYzoxNDE1OjE4OiBlcnJvcjogJ3VfaW50MzJfdCcgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pCi0gICAgICAgICB2b2x1bWVfaWQgPSAodV9pbnQzMl90KSAoKGNyZWF0ZV90aW1ldmFsLnR2X3NlYyA8PCAyMCkgfCBjcmVhdGVfdGltZXZhbC50dl91c2VjKTsgWy4uLl0KLSAgICAgICAgICAgICAgICAgICAgICBeCi0gICAgc3JjL21rZnMuZmF0LmM6MTQxNToxODogbm90ZTogZWFjaCB1bmRlY2xhcmVkIGlkZW50aWZpZXIgaXMgcmVwb3J0ZWQgb25seSBvbmNlIGZvciBlYWNoCi0gICAgZnVuY3Rpb24gaXQgYXBwZWFycyBpbgotCi1TaWduZWQtb2ZmLWJ5OiAiWWFubiBFLiBNT1JJTiIgPHlhbm4ubW9yaW4uMTk5OEBmcmVlLmZyPgotU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBCb21iZSA8YWViQGRlYmlhbi5vcmc+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotIHNyYy9ta2ZzLmZhdC5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL21rZnMuZmF0LmMgYi9zcmMvbWtmcy5mYXQuYwotaW5kZXggYjM4ZDExNi4uZGRkYmUyNCAxMDA2NDQKLS0tLSBhL3NyYy9ta2ZzLmZhdC5jCi0rKysgYi9zcmMvbWtmcy5mYXQuYwotQEAgLTE0MTIsNyArMTQxMiw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAKLSAgICAgZ2V0dGltZW9mZGF5KCZjcmVhdGVfdGltZXZhbCwgTlVMTCk7Ci0gICAgIGNyZWF0ZV90aW1lID0gY3JlYXRlX3RpbWV2YWwudHZfc2VjOwotLSAgICB2b2x1bWVfaWQgPSAodV9pbnQzMl90KSAoKGNyZWF0ZV90aW1ldmFsLnR2X3NlYyA8PCAyMCkgfCBjcmVhdGVfdGltZXZhbC50dl91c2VjKTsJLyogRGVmYXVsdCB2b2x1bWUgSUQgPSBjcmVhdGlvbiB0aW1lLCBmdWRnZWQgZm9yIG1vcmUgdW5pcXVlbmVzcyAqLwotKyAgICB2b2x1bWVfaWQgPSAodWludDMyX3QpICgoY3JlYXRlX3RpbWV2YWwudHZfc2VjIDw8IDIwKSB8IGNyZWF0ZV90aW1ldmFsLnR2X3VzZWMpOwkvKiBEZWZhdWx0IHZvbHVtZSBJRCA9IGNyZWF0aW9uIHRpbWUsIGZ1ZGdlZCBmb3IgbW9yZSB1bmlxdWVuZXNzICovCi0gICAgIGNoZWNrX2F0YXJpKCk7Ci0gCi0gICAgIHByaW50ZigibWtmcy5mYXQgIiBWRVJTSU9OICIgKCIgVkVSU0lPTl9EQVRFICIpXG4iKTsKLS0tIAotMi43LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kb3Nmc3Rvb2xzL2Rvc2ZzdG9vbHMvbGFyZ2VmaWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kb3Nmc3Rvb2xzL2Rvc2ZzdG9vbHMvbGFyZ2VmaWxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjdkODM1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG9zZnN0b29scy9kb3Nmc3Rvb2xzL2xhcmdlZmlsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLWRlZmVyIHNldHRpbmcgbGFyZ2VmaWxlIGZsYWdzIHRvIGJ1aWxkIG1ha2VyeQotaW4gYSBjcm9zcyBidWlsZCB3ZSBjYW4gbm90IGRvIHJ1bnRpbWUgY29uZmlnIHRlc3RzCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGVbQ3Jvc3MgY29tcGlsZSBTcGVjaWZpY10KLUluZGV4OiBkb3Nmc3Rvb2xzLTMuMC4yOC9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGRvc2ZzdG9vbHMtMy4wLjI4Lm9yaWcvTWFrZWZpbGUKLSsrKyBkb3Nmc3Rvb2xzLTMuMC4yOC9NYWtlZmlsZQotQEAgLTI3LDggKzI3LDcgQEAgU0JJTkRJUiA9ICQoUFJFRklYKS9zYmluCi0gRE9DRElSID0gJChQUkVGSVgpL3NoYXJlL2RvYwotIE1BTkRJUiA9ICQoUFJFRklYKS9zaGFyZS9tYW4KLSAKLS0jT1BURkxBR1MgPSAtTzIgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLURfTEFSR0VGSUxFX1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0Ci0tT1BURkxBR1MgPSAtTzIgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLURfR05VX1NPVVJDRSAkKHNoZWxsIGdldGNvbmYgTEZTX0NGTEFHUykKLStPUFRGTEFHUyA9IC1PMiAtZm9taXQtZnJhbWUtcG9pbnRlcgotICNXQVJORkxBR1MgPSAtV2FsbCAtcGVkYW50aWMgLXN0ZD1jOTkKLSBXQVJORkxBR1MgPSAtV2FsbCAtV2V4dHJhIC1Xbm8tc2lnbi1jb21wYXJlIC1Xbm8tbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMgLVdtaXNzaW5nLXByb3RvdHlwZXMgLVdzdHJpY3QtcHJvdG90eXBlcyAtV3dyaXRlLXN0cmluZ3MKLSBERUJVR0ZMQUdTID0gLWcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG9zZnN0b29scy9kb3Nmc3Rvb2xzXzMuMC4yOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG9zZnN0b29scy9kb3Nmc3Rvb2xzXzMuMC4yOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmZjM2U0MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rvc2ZzdG9vbHMvZG9zZnN0b29sc18zLjAuMjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0jIGRvc2ZzdG9vbHMgT0UgYnVpbGQgZmlsZQotIyBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwNiwgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZAotIyBDb3B5cmlnaHQgKEMpIDIwMTUsIFPDg8K2cmVuIEJyaW5rbWFubiA8c29lcmVuLmJyaW5rbWFubkBnbWFpbD4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQKLSMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgcGFja2FnZXMvQ09QWUlORykKLVNVTU1BUlkgPSAiRE9TIEZBVCBGaWxlc3lzdGVtIFV0aWxpdGllcyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9kb3Nmc3Rvb2xzL2Rvc2ZzdG9vbHMiCi0KLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vZG9zZnN0b29scy9kb3Nmc3Rvb2xzL3JlbGVhc2VzL2Rvd25sb2FkL3YzLjAuMjgvZG9zZnN0b29scy0zLjAuMjgudGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL2xhcmdlZmlsZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW1rZnMuZmF0LWZpeC1pbmNvcnJlY3QtaW50LXR5cGUucGF0Y2ggXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI2YTA0N2E2YzY1MTg2YjllYmIxODUzNzA5YWRiMzZkYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlZTk1OTEzMDQ0ZWNmMjcxOWI2M2VhMTEyMTI5MTc2NDk3MDlhNmU1MzIwOWE3MmQ2MjIxMzVhYWE4NTE3ZWUyIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2Rvc2ZzdG9vbHMvZG9zZnN0b29scy9yZWxlYXNlcyIKLQotQ0ZMQUdTICs9ICItRF9HTlVfU09VUkNFICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGFyZ2VmaWxlJywgJy1EX0xBUkdFRklMRV9TT1VSQ0UgLURfRklMRV9PRkZTRVRfQklUUz02NCcsICcnLCBkKX0iCi0KLUZJTEVTXyR7UE59ID0gIiR7YmFzZV9zYmluZGlyfSIKLUZJTEVTXyR7UE59LWRvYyA9ICIke21hbmRpcn0gJHtkb2NkaXJ9IgotCi1kb19pbnN0YWxsICgpIHsKLQlvZV9ydW5tYWtlICJQUkVGSVg9JHtEfSR7cHJlZml4fSIgIlNCSU5ESVI9JHtEfSR7YmFzZV9zYmluZGlyfSIgXAotCQkgICAiTUFORElSPSR7RH0ke21hbmRpcn0iICJET0NESVI9JHtEfSR7ZG9jZGlyfSIgaW5zdGFsbAotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG9zZnN0b29scy9kb3Nmc3Rvb2xzXzQuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG9zZnN0b29scy9kb3Nmc3Rvb2xzXzQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lN2IxZjYxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kb3Nmc3Rvb2xzL2Rvc2ZzdG9vbHNfNC4wLmJiCkBAIC0wLDAgKzEsMjUgQEAKKyMgZG9zZnN0b29scyBPRSBidWlsZCBmaWxlCisjIENvcHlyaWdodCAoQykgMjAwNC0yMDA2LCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuICBBbGwgUmlnaHRzIFJlc2VydmVkCisjIENvcHlyaWdodCAoQykgMjAxNSwgU8ODwrZyZW4gQnJpbmttYW5uIDxzb2VyZW4uYnJpbmttYW5uQGdtYWlsPiAgQWxsIFJpZ2h0cyBSZXNlcnZlZAorIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBwYWNrYWdlcy9DT1BZSU5HKQorU1VNTUFSWSA9ICJET1MgRkFUIEZpbGVzeXN0ZW0gVXRpbGl0aWVzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2Rvc2ZzdG9vbHMvZG9zZnN0b29scyIKKworU0VDVElPTiA9ICJiYXNlIgorTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9kb3Nmc3Rvb2xzL2Rvc2ZzdG9vbHMvcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9LyR7QlB9LnRhci54eiBcCisgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjIwZjgzODhiOTk3MDJmMjc2Yzk3M2QyMjhjN2NmZjQ1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkwMzc3Mzg5NTM1NTlkMWVmZTA0ZmM1NDA4YjY4NDYyMTZjYzAxMzhmN2Y5ZDMyZGU4MGI2ZWMzYzM1ZTdkYWYiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vZG9zZnN0b29scy9kb3Nmc3Rvb2xzL3JlbGVhc2VzIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC11ZGV2IC0tZW5hYmxlLWNvbXBhdC1zeW1saW5rcyIKKworQ0ZMQUdTICs9ICItRF9HTlVfU09VUkNFICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGFyZ2VmaWxlJywgJy1EX0xBUkdFRklMRV9TT1VSQ0UgLURfRklMRV9PRkZTRVRfQklUUz02NCcsICcnLCBkKX0iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cuaW5jCmluZGV4IDNkOWU3ZTMuLmU4ZDhhOWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy5pbmMKQEAgLTIsMTUgKzIsMTMgQEAKIExJQ0VOU0UgPSAiR1BMdjIuMCsiCiBTRUNUSU9OID0gImJhc2UiCiAKLVNSQ19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL2QvZHBrZy9kcGtnXyR7UFZ9LnRhci54eiIKLQotU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vMDAwMS1XaGVuLXJ1bm5pbmctZG9fcGFja2FnZV93cml0ZV9kZWItd2UtaGF2ZS10cmVlcy1vZi1oLnBhdGNoIgotCiBERVBFTkRTID0gInpsaWIgYnppcDIgcGVybCBuY3Vyc2VzIgogREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiYnppcDItcmVwbGFjZW1lbnQtbmF0aXZlIHpsaWItbmF0aXZlIHZpcnR1YWwvdXBkYXRlLWFsdGVybmF0aXZlcy1uYXRpdmUgZ2V0dGV4dC1uYXRpdmUgcGVybC1uYXRpdmUiCiBSREVQRU5EU18ke1BOfSA9ICIke1ZJUlRVQUwtUlVOVElNRV91cGRhdGUtYWx0ZXJuYXRpdmVzfSB4eiBydW4tcG9zdGluc3RzIHBlcmwiCiBSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAieHotbmF0aXZlIgogCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL2QvZHBrZy8iCisKIGluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGVybG5hdGl2ZSBwa2djb25maWcgc3lzdGVtZAogCiBweXRob24gKCkgewpAQCAtMzUsNiArMzMsNyBAQAogCQkiCiAKIEVYVFJBX09FQ09ORiArPSAiVEFSPXRhciIKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBERUJfSE9TVF9BUkNIPSR7RFBLR19BUkNIfSIKIAogZG9fY29uZmlndXJlICgpIHsKICAgICBlY2hvID4+ICR7U30vbTQvY29tcGlsZXIubTQKQEAgLTc0LDYgKzczLDE0IEBACiBQQUNLQUdFUyArPSAiJHtQTn0tcGVybCIKIEZJTEVTXyR7UE59LXBlcmwgPSAiJHtsaWJkaXJ9L3BlcmwiCiAKKyMgU3BsaXQgb3V0IHN0YXJ0LXN0b3AtZGFlbW9uIHRvIGl0cyBvd24gcGFja2FnZS4gIE5vdGUgdGhhdCBpdAorIyBpcyBpbnN0YWxsZWQgaW4gYSBkaWZmZXJlbnQgZGlyZWN0b3J5IHRoYW4gdGhlIG9uZSB1c2VkIGZvcgorIyB0aGUgYml0YmFrZSB2ZXJzaW9uLgorIworUEFDS0FHRVMgPSsgIiR7UE59LXN0YXJ0LXN0b3AiCitGSUxFU18ke1BOfS1zdGFydC1zdG9wID0gIiR7c2JpbmRpcn0vc3RhcnQtc3RvcC1kYWVtb24iCisKK1JERVBFTkRTXyR7UE59ICs9ICIke1BOfS1zdGFydC1zdG9wIgorCisKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnLzAwMDEtV2hlbi1ydW5uaW5nLWRvX3BhY2thZ2Vfd3JpdGVfZGViLXdlLWhhdmUtdHJlZXMtb2YtaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnLzAwMDEtV2hlbi1ydW5uaW5nLWRvX3BhY2thZ2Vfd3JpdGVfZGViLXdlLWhhdmUtdHJlZXMtb2YtaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDllZjg1My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy8wMDAxLVdoZW4tcnVubmluZy1kb19wYWNrYWdlX3dyaXRlX2RlYi13ZS1oYXZlLXRyZWVzLW9mLWgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi1Gcm9tIGUzOTFiZGJhMjM4ZDEzNzFmYzViNjdjZGFlMDhiMDZlYjVhZGE1YzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjYgQXVnIDIwMTUgMTU6NDg6MTMgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gV2hlbiBydW5uaW5nIGRvX3BhY2thZ2Vfd3JpdGVfZGViLCB3ZSBoYXZlIHRyZWVzIG9mCi0gaGFyZGxpbmtlZCBmaWxlcyBzdWNoIGFzIHRoZSBkYmcgc291cmNlIGZpbGVzIGluICR7UE59LWRiZy4gSWYgc29tZXRoaW5nCi0gbWFrZXMgYW5vdGhlciBjb3B5IG9mIG9uZSBvZiB0aG9zZSBmaWxlcyAob3IgZGVsZXRlcyBvbmUpLCB0aGUgbnVtYmVyIG9mCi0gbGlua3MgYSBmaWxlIGhhcyBjaGFuZ2VzIGFuZCB0YXIgY2FuIG5vdGljZSB0aGlzLCBlLmcuOgotCi18IERFQlVHOiBFeGVjdXRpbmcgcHl0aG9uIGZ1bmN0aW9uIGRvX3BhY2thZ2VfZGViCi18IGRwa2ctZGViOiBidWlsZGluZyBwYWNrYWdlIGBzZWQtcHRlc3QnIGluIGAvbWVkaWEvYnVpbGQxL3Bva3kvYnVpbGQvdG1wL3dvcmsvaTU4Ni1wb2t5LWxpbnV4L3NlZC80LjIuMi1yMC9kZXBsb3ktZGVicy9pNTg2L3NlZC1wdGVzdF80LjIuMi1yMC4zX2kzODYuZGViJy4KLXwgdGFyOiAuL3Vzci9saWIvc2VkL3B0ZXN0L3Rlc3RzdWl0ZS90c3QtcmVnZXgyOiBmaWxlIGNoYW5nZWQgYXMgd2UgcmVhZCBpdAotfCBkcGtnLWRlYjogZXJyb3I6IHN1YnByb2Nlc3MgdGFyIC1jZiByZXR1cm5lZCBlcnJvciBleGl0IHN0YXR1cyAxCi0KLVRhciByZXR1cm5zIGFuIGVycm9yIG9mIDEgd2hlbiBmaWxlcyAnY2hhbmdlJyBhbmQgb3RoZXIgZXJyb3JzIGNvZGVzCi1pbiBvdGhlciBlcnJvciBjYXNlcy4gV2UgdHdlYWsgZHBrZy1kZWIgaGVyZSBzbyB0aGF0IGl0IGlnbm9yZXMgYW4gZXhpdAotY29kZSBvZiAxIGZyb20gdGFyLiBUaGUgZmlsZXMgZG9uJ3QgcmVhbGx5IGNoYW5nZSAoYW5kIHdlIGhhdmUgbG9ja2luZyBpbgotcGxhY2UgdG8gYXZvaWQgdGhhdCBraW5kIG9mIGlzc3VlKS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCi1SUCAyMDE1LzMvMjcKLS0tLQotIGRwa2ctZGViL2J1aWxkLmMgfCAxMiArKysrKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZHBrZy1kZWIvYnVpbGQuYyBiL2Rwa2ctZGViL2J1aWxkLmMKLWluZGV4IDJkZGVlYzYuLmFmMzYzZjAgMTAwNjQ0Ci0tLS0gYS9kcGtnLWRlYi9idWlsZC5jCi0rKysgYi9kcGtnLWRlYi9idWlsZC5jCi1AQCAtNDUyLDcgKzQ1Miw3IEBAIHN0YXRpYyB2b2lkCi0gdGFyYmFsbF9wYWNrKGNvbnN0IGNoYXIgKmRpciwgZmlsZW5hbWVzX2ZlZWRfZnVuYyAqdGFyX2ZpbGVuYW1lc19mZWVkZXIsCi0gICAgICAgICAgICAgIHN0cnVjdCBjb21wcmVzc19wYXJhbXMgKnRhcl9jb21wcmVzc19wYXJhbXMsIGludCBmZF9vdXQpCi0gewotLSAgaW50IHBpcGVfZmlsZW5hbWVzWzJdLCBwaXBlX3RhcmJhbGxbMl07Ci0rICBpbnQgcGlwZV9maWxlbmFtZXNbMl0sIHBpcGVfdGFyYmFsbFsyXSwgcmM7Ci0gICBwaWRfdCBwaWRfdGFyLCBwaWRfY29tcDsKLSAKLSAgIC8qIEZvcmsgb2ZmIGEgdGFyLiBXZSB3aWxsIGZlZWQgaXQgYSBsaXN0IG9mIGZpbGVuYW1lcyBvbiBzdGRpbiBsYXRlci4gKi8KLUBAIC00OTMsNyArNDkzLDkgQEAgdGFyYmFsbF9wYWNrKGNvbnN0IGNoYXIgKmRpciwgZmlsZW5hbWVzX2ZlZWRfZnVuYyAqdGFyX2ZpbGVuYW1lc19mZWVkZXIsCi0gICAvKiBBbGwgZG9uZSwgY2xlYW4gdXAgd2FpdCBmb3IgdGFyIGFuZCA8Y29tcHJlc3M+IHRvIGZpbmlzaCB0aGVpciBqb2IuICovCi0gICBjbG9zZShwaXBlX2ZpbGVuYW1lc1sxXSk7Ci0gICBzdWJwcm9jX3JlYXAocGlkX2NvbXAsIF8oIjxjb21wcmVzcz4gZnJvbSB0YXIgLWNmIiksIDApOwotLSAgc3VicHJvY19yZWFwKHBpZF90YXIsICJ0YXIgLWNmIiwgMCk7Ci0rICByYyA9IHN1YnByb2NfcmVhcChwaWRfdGFyLCAidGFyIC1jZiIsIFNVQlBST0NfUkVURVJST1IpOwotKyAgaWYgKHJjICYmIHJjICE9IDEpCi0rICAgIG9oc2hpdGUoXygic3VicHJvY2VzcyAlcyByZXR1cm5lZCBlcnJvciBleGl0IHN0YXR1cyAlZCIpLCAidGFyIC1jZiIsIHJjKTsKLSB9Ci0gCi0gLyoqCi1AQCAtNTA5LDcgKzUxMSw3IEBAIGRvX2J1aWxkKGNvbnN0IGNoYXIgKmNvbnN0ICphcmd2KQotICAgY2hhciAqZGViYXI7Ci0gICBjaGFyICp0ZmJ1ZjsKLSAgIGludCBhcmZkOwotLSAgaW50IHAxWzJdLCBnemZkOwotKyAgaW50IHAxWzJdLCBnemZkLCByYzsKLSAgIHBpZF90IGMxLCBjMjsKLSAKLSAgIC8qIERlY29kZSBvdXIgYXJndW1lbnRzLiAqLwotQEAgLTU5MCw3ICs1OTIsOSBAQCBkb19idWlsZChjb25zdCBjaGFyICpjb25zdCAqYXJndikKLSAgIH0KLSAgIGNsb3NlKHAxWzBdKTsKLSAgIHN1YnByb2NfcmVhcChjMiwgXygiPGNvbXByZXNzPiBmcm9tIHRhciAtY2YiKSwgMCk7Ci0tICBzdWJwcm9jX3JlYXAoYzEsICJ0YXIgLWNmIiwgMCk7Ci0rICByYyA9IHN1YnByb2NfcmVhcChjMSwgInRhciAtY2YiLCBTVUJQUk9DX1JFVEVSUk9SKTsKLSsgIGlmIChyYyAmJiByYyAhPSAxKQotKyAgICBvaHNoaXRlKF8oInN1YnByb2Nlc3MgJXMgcmV0dXJuZWQgZXJyb3IgZXhpdCBzdGF0dXMgJWQiKSwgInRhciAtY2YiLCByYyk7Ci0gCi0gICBpZiAobHNlZWsoZ3pmZCwgMCwgU0VFS19TRVQpKQotICAgICBvaHNoaXRlKF8oImZhaWxlZCB0byByZXdpbmQgdGVtcG9yYXJ5IGZpbGUgKCVzKSIpLCBfKCJjb250cm9sIG1lbWJlciIpKTsKLS0tIAotMi43LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvMDAwMy1PdXItcHJlLXBvc3RpbnN0cy1leHBlY3QtRC10by1iZS1zZXQtd2hlbi1ydW5uaW5nLWluLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvMDAwMy1PdXItcHJlLXBvc3RpbnN0cy1leHBlY3QtRC10by1iZS1zZXQtd2hlbi1ydW5uaW5nLWluLnBhdGNoCmluZGV4IDlmNzdjNmMuLjgwNTA0Y2UgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnLzAwMDMtT3VyLXByZS1wb3N0aW5zdHMtZXhwZWN0LUQtdG8tYmUtc2V0LXdoZW4tcnVubmluZy1pbi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy8wMDAzLU91ci1wcmUtcG9zdGluc3RzLWV4cGVjdC1ELXRvLWJlLXNldC13aGVuLXJ1bm5pbmctaW4ucGF0Y2gKQEAgLTgsMzAgKzgsNDEgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgU3BlY2lmaWNdCiAKIFJQIDIwMTEvMTIvMDcKK0FMSU1PTiAyMDE2LzA1LzI2CisKIC0tLQotIHNyYy9zY3JpcHQuYyB8IDMxICsrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkKKyBzcmMvc2NyaXB0LmMgfCAzOSArKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzNiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3NyYy9zY3JpcHQuYyBiL3NyYy9zY3JpcHQuYwotaW5kZXggYTk1ODE0NS4uMjRjNDlmOSAxMDA2NDQKK2luZGV4IDNjODhiZTguLmNlNjZhODYgMTAwNjQ0CiAtLS0gYS9zcmMvc2NyaXB0LmMKICsrKyBiL3NyYy9zY3JpcHQuYwotQEAgLTEwMCwzNiArMTAwLDkgQEAgbWFpbnRzY3JpcHRfcHJlX2V4ZWMoc3RydWN0IGNvbW1hbmQgKmNtZCkKLSAJc2l6ZV90IGluc3RkaXJsID0gc3RybGVuKGluc3RkaXIpOwotIAotIAlpZiAoKmluc3RkaXIpIHsKK0BAIC05Nyw0MyArOTcsMTAgQEAgc2V0ZXhlY3V0ZShjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdCAqc3RhYikKKyBzdGF0aWMgY29uc3QgY2hhciAqCisgbWFpbnRzY3JpcHRfcHJlX2V4ZWMoc3RydWN0IGNvbW1hbmQgKmNtZCkKKyB7CistCWNvbnN0IGNoYXIgKmFkbWluZGlyID0gZHBrZ19kYl9nZXRfZGlyKCk7CistCWNvbnN0IGNoYXIgKmNoYW5nZWRpciA9IGZjX3NjcmlwdF9jaHJvb3RsZXNzID8gaW5zdGRpciA6ICIvIjsKKy0Jc2l6ZV90IGluc3RkaXJsID0gc3RybGVuKGluc3RkaXIpOworLQorLQlpZiAoKmluc3RkaXIgJiYgIWZjX3NjcmlwdF9jaHJvb3RsZXNzKSB7CiAtCQlpZiAoc3RybmNtcChhZG1pbmRpciwgaW5zdGRpciwgaW5zdGRpcmwpICE9IDApCiAtCQkJb2hzaGl0KF8oImFkbWluZGlyIG11c3QgYmUgaW5zaWRlIGluc3RkaXIgZm9yIGRwa2cgdG8gd29yayBwcm9wZXJseSIpKTsKIC0JCWlmIChzZXRlbnYoIkRQS0dfQURNSU5ESVIiLCBhZG1pbmRpciArIGluc3RkaXJsLCAxKSA8IDApCiAtCQkJb2hzaGl0ZShfKCJ1bmFibGUgdG8gc2V0ZW52IGZvciBzdWJwcm9jZXNzZXMiKSk7CistCQlpZiAoc2V0ZW52KCJEUEtHX1JPT1QiLCAiIiwgMSkgPCAwKQorLQkJCW9oc2hpdGUoXygidW5hYmxlIHRvIHNldGVudiBmb3Igc3VicHJvY2Vzc2VzIikpOwogLQogLQkJaWYgKGNocm9vdChpbnN0ZGlyKSkKIC0JCQlvaHNoaXRlKF8oImZhaWxlZCB0byBjaHJvb3QgdG8gJyUuMjUwcyciKSwgaW5zdGRpcik7Ci0tCX0KKysJaWYgKCppbnN0ZGlyKSB7CisrCQlzZXRlbnYoIkQiLCBpbnN0ZGlyLCAxKTsKKyAJfQogLQkvKiBTd2l0Y2ggdG8gYSBrbm93biBnb29kIGRpcmVjdG9yeSB0byBnaXZlIHRoZSBtYWludGFpbmVyIHNjcmlwdAogLQkgKiBhIHNhbmVyIGVudmlyb25tZW50LCBhbHNvIG5lZWRlZCBhZnRlciB0aGUgY2hyb290KCkuICovCi0tCWlmIChjaGRpcigiLyIpKQotLQkJb2hzaGl0ZShfKCJmYWlsZWQgdG8gY2hkaXIgdG8gJyUuMjU1cyciKSwgIi8iKTsKKy0JaWYgKGNoZGlyKGNoYW5nZWRpcikpCistCQlvaHNoaXRlKF8oImZhaWxlZCB0byBjaGRpciB0byAnJS4yNTVzJyIpLCBjaGFuZ2VkaXIpOwogLQlpZiAoZGVidWdfaGFzX2ZsYWcoZGJnX3NjcmlwdHMpKSB7CiAtCQlzdHJ1Y3QgdmFyYnVmIGFyZ3MgPSBWQVJCVUZfSU5JVDsKIC0JCWNvbnN0IGNoYXIgKiphcmd2ID0gY21kLT5hcmd2OwpAQCAtNDQsOSArNTUsOCBAQAogLQkJZGVidWcoZGJnX3NjcmlwdHMsICJmb3JrL2V4ZWMgJXMgKCVzICkiLCBjbWQtPmZpbGVuYW1lLAogLQkJICAgICAgYXJncy5idWYpOwogLQkJdmFyYnVmX2Rlc3Ryb3koJmFyZ3MpOwotKwkJc2V0ZW52KCJEIiwgaW5zdGRpciwgMSk7Ci0gCX0KLS0JaWYgKCFpbnN0ZGlybCkKKy0JfQorLQlpZiAoIWluc3RkaXJsIHx8IGZjX3NjcmlwdF9jaHJvb3RsZXNzKQogLQkJcmV0dXJuIGNtZC0+ZmlsZW5hbWU7CiAtCiAtCWFzc2VydChzdHJsZW4oY21kLT5maWxlbmFtZSkgPj0gaW5zdGRpcmwpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvYWRkX2FybWViX3RyaXBsZXRfZW50cnkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy9hZGRfYXJtZWJfdHJpcGxldF9lbnRyeS5wYXRjaAppbmRleCBhZjI3NWRlLi5kYzY5ZWIyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy9hZGRfYXJtZWJfdHJpcGxldF9lbnRyeS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy9hZGRfYXJtZWJfdHJpcGxldF9lbnRyeS5wYXRjaApAQCAtMjUsMTQgKzI1LDIyIEBACiAKIFNpZ25lZC1vZmYtYnk6IEtyaXNobmFuamFuYXBwYSwgSmFnYWRlZXNoIDxqYWdhZGVlc2gua3Jpc2huYW5qYW5hcHBhQGNhdml1bW5ldHdvcmtzLmNvbT4KIAotZGlmZiAtTmF1cnAgZHBrZy0xLjE3LjIxX29yZy90cmlwbGV0dGFibGUgZHBrZy0xLjE3LjIxL3RyaXBsZXR0YWJsZQotLS0tIGRwa2ctMS4xNy4yMV9vcmcvdHJpcGxldHRhYmxlCTIwMTUtMDQtMDggMTc6MDg6NTIuMzcwNzU5MTcxICswNTMwCi0rKysgZHBrZy0xLjE3LjIxL3RyaXBsZXR0YWJsZQkyMDE1LTA0LTA4IDE3OjA5OjEyLjQwNjc1MjA4MSArMDUzMAotQEAgLTksNiArOSw3IEBAIG11c2xlYWJpaGYtbGludXgtYXJtCW11c2wtbGludXgtYXJtaGYKLSBtdXNsLWxpbnV4LTxjcHU+CW11c2wtbGludXgtPGNwdT4KLSBnbnVlYWJpaGYtbGludXgtYXJtCWFybWhmCistLS0KKyB0cmlwbGV0dGFibGUgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3RyaXBsZXR0YWJsZSBiL3RyaXBsZXR0YWJsZQoraW5kZXggYWJlNDcyNi4uMWU5YzI0NyAxMDA2NDQKKy0tLSBhL3RyaXBsZXR0YWJsZQorKysrIGIvdHJpcGxldHRhYmxlCitAQCAtMTEsNiArMTEsNyBAQCBnbnVlYWJpaGYtbGludXgtYXJtCWFybWhmCiAgZ251ZWFiaS1saW51eC1hcm0JYXJtZWwKKyBnbnVhYmluMzItbGludXgtbWlwczY0cjZlbAltaXBzbjMycjZlbAorIGdudWFiaW4zMi1saW51eC1taXBzNjRyNgltaXBzbjMycjYKICtnbnVlYWJpLWxpbnV4LWFybWViCWFybWViCiAgZ251YWJpbjMyLWxpbnV4LW1pcHM2NGVsCW1pcHNuMzJlbAogIGdudWFiaW4zMi1saW51eC1taXBzNjQJbWlwc24zMgotIGdudWFiaTY0LWxpbnV4LW1pcHM2NGVsCW1pcHM2NGVsCisgZ251YWJpNjQtbGludXgtbWlwczY0cjZlbAltaXBzNjRyNmVsCistLSAKKzIuMS40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnL2ZpeC1hYnMtcmVkZWZpbmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy9maXgtYWJzLXJlZGVmaW5lLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzMzMTFjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnL2ZpeC1hYnMtcmVkZWZpbmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotZHBrZyBkZWZpbmVzOgotI2RlZmluZSBEUEtHX0JFR0lOX0RFQ0xTCWV4dGVybiAiQyIgewotCi1UaGF0IG1ha2VzIGhlYWRlciBjc3RkbGliIGluY2x1ZGVkIGluIGEgZXh0ZXJuICJDIiBibG9jayB3aGljaCBpcyBub3Qgc3VwcG9ydGVkCi1ieSBnY2MgNC44LiBJdCBmYWlscyBvbiBGZWRvcmEgMTk6Ci0KLS91c3IvaW5jbHVkZS9jKysvNC44LjEvY3N0ZGxpYjogSW4gZnVuY3Rpb24g4oCYbG9uZyBsb25nIGludCBzdGQ6OmFicyhsb25nIGxvbmcgaW50KeKAmToKLS91c3IvaW5jbHVkZS9jKysvNC44LjEvY3N0ZGxpYjoxNzQ6MjA6IGVycm9yOiBkZWNsYXJhdGlvbiBvZiBDIGZ1bmN0aW9uIOKAmGxvbmcgbG9uZyBpbnQgc3RkOjphYnMobG9uZyBsb25nIGludCnigJkgY29uZmxpY3RzIHdpdGgKLSAgIGFicyhsb25nIGxvbmcgX194KSB7IHJldHVybiBfX2J1aWx0aW5fbGxhYnMgKF9feCk7IH0KLSAgICAgICAgICAgICAgICAgICAgXgotL3Vzci9pbmNsdWRlL2MrKy80LjguMS9jc3RkbGliOjE2NjozOiBlcnJvcjogcHJldmlvdXMgZGVjbGFyYXRpb24g4oCYbG9uZyBpbnQgc3RkOjphYnMobG9uZyBpbnQp4oCZIGhlcmUKLSAgIGFicyhsb25nIF9faSkgeyByZXR1cm4gX19idWlsdGluX2xhYnMoX19pKTsgfQotICAgXgotCi1Nb3ZlIGluY2x1ZGUgZ2V0dGV4dC5oIG91dCBvZiB0aGUgZXh0ZXJuICJDIiBibG9jayB0byBmaXggdGhpcyBpc3N1ZS4KLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0KLS0tLSBkcGtnLTEuMTcuMS9saWIvZHBrZy9pMThuLmgub3JpZwkyMDEzLTA4LTEzIDE3OjMxOjI4Ljg3MDkzNTU3MyArMDgwMAotKysrIGRwa2ctMS4xNy4xL2xpYi9kcGtnL2kxOG4uaAkyMDEzLTA4LTEzIDE3OjMxOjM3Ljg5MzA2NTI0OSArMDgwMAotQEAgLTIzLDggKzIzLDYgQEAKLSAKLSAjaW5jbHVkZSA8ZHBrZy9tYWNyb3MuaD4KLSAKLS1EUEtHX0JFR0lOX0RFQ0xTCi0tCi0gLyoqCi0gICogQGRlZmdyb3VwIGkxOG4gSW50ZXJuYXRpb25hbGl6YXRpb24gc3VwcG9ydAotICAqIEBpbmdyb3VwIGRwa2ctaW50ZXJuYWwKLUBAIC0zMyw2ICszMSw4IEBACi0gCi0gI2luY2x1ZGUgPGdldHRleHQuaD4KLSAKLStEUEtHX0JFR0lOX0RFQ0xTCi0rCi0gLyogV2UgbmVlZCB0byBpbmNsdWRlIHRoaXMgYmVjYXVzZSBwZ2V0dGV4dCgpIHVzZXMgTENfTUVTU0FHRVMsIGJ1dCBsaWJpbnRsLmgKLSAgKiB3aGljaCBnZXRzIHB1bGxlZCBieSBnZXR0ZXh0Lmggb25seSBpbmNsdWRlcyBpdCBpZiBidWlsZGluZyBvcHRpbWl6ZWQuICovCi0gI2luY2x1ZGUgPGxvY2FsZS5oPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2dfMS4xOC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2dfMS4xOC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ODc2OTQ0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnXzEuMTguNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLXJlcXVpcmUgZHBrZy5pbmMKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSIgZmlsZTovL2dsaWJjMi41LXN5bmNfZmlsZV9yYW5nZS5wYXRjaCAiCi1TUkNfVVJJICs9ICJmaWxlOi8vbm9tYW4ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3JlbW92ZS10YXItbm8tdGltZXN0YW1wLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9maXgtYWJzLXJlZGVmaW5lLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9hcmNoX3BtLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9kcGtnLWNvbmZpZ3VyZS5zZXJ2aWNlIFwKLSAgICAgICAgICAgIGZpbGU6Ly9hZGRfYXJtZWJfdHJpcGxldF9lbnRyeS5wYXRjaCBcCi0JICAgIGZpbGU6Ly8wMDAyLUFkYXB0LXRvLWxpbnV4LXdycy1rZXJuZWwtdmVyc2lvbi13aGljaC1oYXMtY2hhcmFjdGUucGF0Y2ggXAotCSAgICBmaWxlOi8vMDAwMy1PdXItcHJlLXBvc3RpbnN0cy1leHBlY3QtRC10by1iZS1zZXQtd2hlbi1ydW5uaW5nLWluLnBhdGNoIFwKLQkgICAgZmlsZTovLzAwMDQtVGhlLWx1dGltZXMtZnVuY3Rpb24tZG9lc24tdC13b3JrLXByb3Blcmx5LWZvci1hbGwtcy5wYXRjaCBcCi0JICAgIGZpbGU6Ly8wMDA1LWRwa2ctY29tcGlsZXIubTQtcmVtb3ZlLVd2bGEucGF0Y2ggXAotCSAgICBmaWxlOi8vMDAwNi1hZGQtbXVzbGVhYmktdG8ta25vd24tdGFyZ2V0LXRyaXBldHMucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlOTViNTEzYzg5NjkzZjZlYzNhYjUzYjZiMWMzZGVmZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmZTg5MjQzODY4ODg4Y2U3MTViZjQ1ODYxZjI2MjY0Zjc2N2Q0ZTRkYmQwZDZmMWEyNmNlNjBiYmJiZjEwNmRhIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZ18xLjE4LjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZ18xLjE4LjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjhmZGMxMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnXzEuMTguNy5iYgpAQCAtMCwwICsxLDE5IEBACityZXF1aXJlIGRwa2cuaW5jCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKKworU1JDX1VSSSA9ICJodHRwOi8vc25hcHNob3QuZGViaWFuLm9yZy9hcmNoaXZlL2RlYmlhbi8yMDE2MDUwOVQxMDAwNDJaL3Bvb2wvbWFpbi9kLyR7QlBOfS8ke0JQTn1fJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL25vbWFuLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JlbW92ZS10YXItbm8tdGltZXN0YW1wLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2FyY2hfcG0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZHBrZy1jb25maWd1cmUuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9hZGRfYXJtZWJfdHJpcGxldF9lbnRyeS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLUFkYXB0LXRvLWxpbnV4LXdycy1rZXJuZWwtdmVyc2lvbi13aGljaC1oYXMtY2hhcmFjdGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1PdXItcHJlLXBvc3RpbnN0cy1leHBlY3QtRC10by1iZS1zZXQtd2hlbi1ydW5uaW5nLWluLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtVGhlLWx1dGltZXMtZnVuY3Rpb24tZG9lc24tdC13b3JrLXByb3Blcmx5LWZvci1hbGwtcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LWRwa2ctY29tcGlsZXIubTQtcmVtb3ZlLVd2bGEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1hZGQtbXVzbGVhYmktdG8ta25vd24tdGFyZ2V0LXRyaXBldHMucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly9nbGliYzIuNS1zeW5jX2ZpbGVfcmFuZ2UucGF0Y2ggIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMDczZGJmMjEyOWE1NGIwZmM2Mjc0NjRiZjhhZjRhMWIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWNlMzZkM2E2ZGM3NTBhNDJiYWY3OTdmOWU3NWVjNTgwYTIxZjkyYmI5ZmY5NmI0ODIxMDA3NTVkNmQ5Yjg3YiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MuaW5jCmluZGV4IDA5ZTRlYTUuLjc0ZTkyZjYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzLmluYwpAQCAtOSw3ICs5LDcgQEAKIExJQ0VOU0VfZTJmc3Byb2dzLWZzY2sgPSAiR1BMdjIiCiBMSUNFTlNFX2UyZnNwcm9ncy10dW5lMmZzID0gIkdQTHYyIgogTElDRU5TRV9lMmZzcHJvZ3MtYmFkYmxvY2tzID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjQ4ZjIxZDc2NWI4NzViZDEwNDAwOTc1ZDEyYzFjYTIgXAorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTk9USUNFO21kNT1iNDhmMjFkNzY1Yjg3NWJkMTA0MDA5NzVkMTJjMWNhMiBcCiAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi9leHQyZnMvZXh0MmZzLmg7YmVnaW5saW5lPTE7ZW5kbGluZT05O21kNT01OTZhOGRlZGNiNGU3MzFjNmIyMWM3YTQ2ZmJhNmJlZiBcCiAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi9lMnAvZTJwLmg7YmVnaW5saW5lPTE7ZW5kbGluZT03O21kNT04YTc0YWRlOGY5ZDY1MDk1ZDcwZWYyZDRiZjQ4ZTM2YSBcCiAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dWlkL3V1aWQuaC5pbjtiZWdpbmxpbmU9MTtlbmRsaW5lPTMyO21kNT1kYmI4MDc5ZTExNGE1Zjg0MTkzNGI5OWU1OWM4ODIwYSBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvUmV2ZXJ0LW1rZTJmcy1lbmFibGUtdGhlLW1ldGFkYXRhX2NzdW0tYW5kLTY0Yml0LWZlYS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9SZXZlcnQtbWtlMmZzLWVuYWJsZS10aGUtbWV0YWRhdGFfY3N1bS1hbmQtNjRiaXQtZmVhLnBhdGNoCmluZGV4IDY1NmZiNmUuLmU2NmNkNGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9SZXZlcnQtbWtlMmZzLWVuYWJsZS10aGUtbWV0YWRhdGFfY3N1bS1hbmQtNjRiaXQtZmVhLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9SZXZlcnQtbWtlMmZzLWVuYWJsZS10aGUtbWV0YWRhdGFfY3N1bS1hbmQtNjRiaXQtZmVhLnBhdGNoCkBAIC05LDI2ICs5LDMxIEBACiB0aGUgbGF0ZXN0IHN0YWJsZSBlMmZzcHJvZ3MgcmVsZWFzZS4KIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCiBTaWduZWQtb2ZmLWJ5OiBKb25hdGhhbiBMaXUgPG5ldDE0N0BnbWFpbC5jb20+CisKK1JlYmFzZSB0byAxLjQzOgorVGhlIHVwc3RyZWFtIGhhcyBkaXNhYmxlZCBtZXRhZGF0YV9jc3VtIGJ5IGRlZmF1bHQKK3RoaXMgcmViYXNlIGp1c3QgcmV2ZXJ0IDY0Yml0IGZlYXR1cmUuCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiAtLS0KICBtaXNjL21rZTJmcy5jb25mLmluIHwgMyArKy0KICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9taXNjL21rZTJmcy5jb25mLmluIGIvbWlzYy9ta2UyZnMuY29uZi5pbgotaW5kZXggYTA0OWQ2MS4uMTA2ZWU4MCAxMDA2NDQKK2luZGV4IDc4ZmU1MGEuLjZmMTk0MGUgMTAwNjQ0CiAtLS0gYS9taXNjL21rZTJmcy5jb25mLmluCiArKysgYi9taXNjL21rZTJmcy5jb25mLmluCi1AQCAtMTEsNyArMTEsOCBAQAorQEAgLTExLDggKzExLDkgQEAKICAJCWZlYXR1cmVzID0gaGFzX2pvdXJuYWwKICAJfQogIAlleHQ0ID0gewotLQkJZmVhdHVyZXMgPSBoYXNfam91cm5hbCxleHRlbnQsaHVnZV9maWxlLGZsZXhfYmcsbWV0YWRhdGFfY3N1bSw2NGJpdCxkaXJfbmxpbmssZXh0cmFfaXNpemUKKy0JCWZlYXR1cmVzID0gaGFzX2pvdXJuYWwsZXh0ZW50LGh1Z2VfZmlsZSxmbGV4X2JnLDY0Yml0LGRpcl9ubGluayxleHRyYV9pc2l6ZQogKwkJZmVhdHVyZXMgPSBoYXNfam91cm5hbCxleHRlbnQsaHVnZV9maWxlLGZsZXhfYmcsdW5pbml0X2JnLGRpcl9ubGluayxleHRyYV9pc2l6ZQotKwkJYXV0b182NC1iaXRfc3VwcG9ydCA9IDEKICAJCWlub2RlX3NpemUgPSAyNTYKKysJCWF1dG9fNjQtYml0X3N1cHBvcnQgPSAxCiAgCX0KICAJZXh0NGRldiA9IHsKKyAJCWZlYXR1cmVzID0gaGFzX2pvdXJuYWwsZXh0ZW50LGh1Z2VfZmlsZSxmbGV4X2JnLGlubGluZV9kYXRhLDY0Yml0LGRpcl9ubGluayxleHRyYV9pc2l6ZQogLS0gCi0yLjcuMgorMi44LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL2UyZnNwcm9ncy1maXgtbWlzc2luZy1jaGVjay1mb3ItcGVybWlzc2lvbi1kZW5pZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvZTJmc3Byb2dzLWZpeC1taXNzaW5nLWNoZWNrLWZvci1wZXJtaXNzaW9uLWRlbmllZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzA1NGM2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL2UyZnNwcm9ncy1maXgtbWlzc2luZy1jaGVjay1mb3ItcGVybWlzc2lvbi1kZW5pZWQucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorU3ViamVjdDogW1BBVENIXSBGaXggbWlzc2luZyBjaGVjayBmb3IgcGVybWlzc2lvbiBkZW5pZWQuCisKK0lmIHRoZSBwYXRoIHRvICJST09UX1NZU0NPTkZESVIvbWtlMmZzLmNvbmYiIGhhcyBhIHBlcm1pc3Npb24gZGVuaWVkIHByb2JsZW0sCit0aGVuIHRoZSBnZXRfZGlybGlzdCgpIGNhbGwgd2lsbCByZXR1cm4gRUFDQ0VTLiBCdXQgdGhlIGNvZGUgaW4gcHJvZmlsZV9pbml0Cit3aWxsIHRyZWF0IHRoYXQgYXMgYSBmYXRhbCBlcnJvciBhbmQgYWxsIGV4ZWN1dGlvbnMgd2lsbCBmYWlsIHdpdGg6CisgICAgICBDb3VsZG4ndCBpbml0IHByb2ZpbGUgc3VjY2Vzc2Z1bGx5IChlcnJvcjogMTMpLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworV3JpdHRlbi1ieTogSGVucmlrIFdhbGxpbiA8aGVucmlrLmIud2FsbGluQGVyaWNzc29uLmNvbT4KKworU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYi9zdXBwb3J0L3Byb2ZpbGUuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpYi9zdXBwb3J0L3Byb2ZpbGUuYyBiL2xpYi9zdXBwb3J0L3Byb2ZpbGUuYworaW5kZXggNTFhMzMxNC4uMWMxMDM5ZiAxMDA2NDQKKy0tLSBhL2xpYi9zdXBwb3J0L3Byb2ZpbGUuYworKysrIGIvbGliL3N1cHBvcnQvcHJvZmlsZS5jCitAQCAtMzM1LDcgKzMzNSw3IEBAIHByb2ZpbGVfaW5pdChjb25zdCBjaGFyICoqZmlsZXMsIHByb2ZpbGVfdCAqcmV0X3Byb2ZpbGUpCisgCQkJCSpsYXN0ID0gbmV3X2ZpbGU7CisgCQkJCWxhc3QgPSAmbmV3X2ZpbGUtPm5leHQ7CisgCQkJfQorLQkJfSBlbHNlIGlmICgocmV0dmFsICE9IEVOT1RESVIpICYmCisrCQl9IGVsc2UgaWYgKChyZXR2YWwgIT0gRU5PVERJUikgJiYgKHJldHZhbCAhPSBFQUNDRVMpICYmCisgCQkJICAgc3RyY21wKCpmcywgZGVmYXVsdF9maWxlbmFtZSkpCisgCQkJZ290byBlcnJvdXQ7CisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy94YXR0cl9vcmRlcmluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy94YXR0cl9vcmRlcmluZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzgyYTdiMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MveGF0dHJfb3JkZXJpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMTkgKzAsMCBAQAotRnJvbTogIkRhcnJpY2sgSi4gV29uZyIgPGRhcnJpY2sud29uZ0BvcmFjbGUuY29tPgotVG86IHR5dHNvQG1pdC5lZHUsIGRhcnJpY2sud29uZ0BvcmFjbGUuY29tCi1DYzogbGludXgtZXh0NEB2Z2VyLmtlcm5lbC5vcmcsIERhcnJlbiBIYXJ0IDxkdmhhcnRAbGludXguaW50ZWwuY29tPiwKLSBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KLURhdGU6IFNhdCwgMTMgRmViIDIwMTYgMTQ6Mzg6MjQgLTA4MDAKLU1lc3NhZ2UtSUQ6IDwyMDE2MDIxMzIyMzgyNC4yNTM4MS44MDAyLnN0Z2l0QGJpcmNoLmRqd29uZy5vcmc+Ci1Jbi1SZXBseS1UbzogPDIwMTYwMjEzMjIzNzI1LjI1MzgxLjIwOTI5LnN0Z2l0QGJpcmNoLmRqd29uZy5vcmc+Ci1SZWZlcmVuY2VzOiA8MjAxNjAyMTMyMjM3MjUuMjUzODEuMjA5Mjkuc3RnaXRAYmlyY2guZGp3b25nLm9yZz4KLVVzZXItQWdlbnQ6IFN0R2l0LzAuMTcuMS1kaXJ0eQotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0idXRmLTgiCi1YLVNvdXJjZS1JUDogYXNlcnYwMDIyLm9yYWNsZS5jb20gWzE0MS4xNDYuMTI2LjIzNF0KLVgtRXZvbHV0aW9uLVNvdXJjZTogMTM1ODg2MDM2MS40NTY2LjMzQHRlZAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1SaWNoYXJkIFB1cmRpZSByZXBvcnRzIHRoYXQgbGliZXh0MmZzIGRvZXNuJ3Qgc29ydCBhdHRyaWJ1dGUga2V5cyBpbgotdGhlIHhhdHRyIGJsb2NrIGNvcnJlY3RseSwgY2F1c2luZyB0aGUga2VybmVsIHRvIHJldHVybiAtRU5PREFUQSB3aGVuCi1xdWVyeWluZyBhdHRyaWJ1dGVzIHRoYXQgc2hvdWxkIGJlIHRoZXJlLiAgVGhlcmVmb3JlLCBzb3J0IGF0dHJpYnV0ZXMKLXNvIHRoYXQgd2hhdGV2ZXIgZW5kcyB1cCBpbiB0aGUgeGF0dHIgYmxvY2sgaXMgc29ydGVkIGFjY29yZGluZyB0bwotd2hhdCB0aGUga2VybmVsIGV4cGVjdHMuCi0KLUNjOiBEYXJyZW4gSGFydCA8ZHZoYXJ0QGxpbnV4LmludGVsLmNvbT4KLVJlcG9ydGVkLWJ5OiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KLVNpZ25lZC1vZmYtYnk6IERhcnJpY2sgSi4gV29uZyA8ZGFycmljay53b25nQG9yYWNsZS5jb20+Ci0tLS0KLSBsaWIvZXh0MmZzL2V4dF9hdHRyLmMgICAgICAgIHwgICAyNCArKysrKysrKysrKy0KLSB0ZXN0cy9kX3hhdHRyX3NvcnRpbmcvZXhwZWN0IHwgICAyOSArKysrKysrKysrKysrKwotIHRlc3RzL2RfeGF0dHJfc29ydGluZy9uYW1lICAgfCAgICAxIAotIHRlc3RzL2RfeGF0dHJfc29ydGluZy9zY3JpcHQgfCAgIDg2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDQgZmlsZXMgY2hhbmdlZCwgMTM5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvZF94YXR0cl9zb3J0aW5nL2V4cGVjdAotIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9kX3hhdHRyX3NvcnRpbmcvbmFtZQotIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9kX3hhdHRyX3NvcnRpbmcvc2NyaXB0Ci0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi0KLQotZGlmZiAtLWdpdCBhL2xpYi9leHQyZnMvZXh0X2F0dHIuYyBiL2xpYi9leHQyZnMvZXh0X2F0dHIuYwotaW5kZXggMGE0ZjhjMC4uYjEyMTgzNyAxMDA2NDQKLS0tLSBhL2xpYi9leHQyZnMvZXh0X2F0dHIuYwotKysrIGIvbGliL2V4dDJmcy9leHRfYXR0ci5jCi1AQCAtMjU0LDEwICsyNTQsMTUgQEAgc3RhdGljIHN0cnVjdCBlYV9uYW1lX2luZGV4IGVhX25hbWVzW10gPSB7Ci0gCXswLCBOVUxMfSwKLSB9OwotIAotK3N0YXRpYyBpbnQgZmluZF9lYV9pbmRleChjaGFyICpmdWxsbmFtZSwgY2hhciAqKm5hbWUsIGludCAqaW5kZXgpOwotKwotIC8qIFB1c2ggZW1wdHkgYXR0cmlidXRlcyB0byB0aGUgZW5kIGFuZCBpbmxpbmVkYXRhIHRvIHRoZSBmcm9udC4gKi8KLSBzdGF0aWMgaW50IGF0dHJfY29tcGFyZShjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQotIHsKLSAJY29uc3Qgc3RydWN0IGV4dDJfeGF0dHIgKnhhID0gYSwgKnhiID0gYjsKLSsJY2hhciAqeGFfc3VmZml4LCAqeGJfc3VmZml4OwotKwlpbnQgeGFfaWR4LCB4Yl9pZHg7Ci0rCWludCBjbXA7Ci0gCi0gCWlmICh4YS0+bmFtZSA9PSBOVUxMKQotIAkJcmV0dXJuICsxOwotQEAgLTI2Nyw3ICsyNzIsMjQgQEAgc3RhdGljIGludCBhdHRyX2NvbXBhcmUoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKLSAJCXJldHVybiAtMTsKLSAJZWxzZSBpZiAoIXN0cmNtcCh4Yi0+bmFtZSwgInN5c3RlbS5kYXRhIikpCi0gCQlyZXR1cm4gKzE7Ci0tCXJldHVybiAwOwotKwotKwkvKgotKwkgKiBEdXBsaWNhdGUgdGhlIGtlcm5lbCdzIHNvcnRpbmcgYWxnb3JpdGhtIGJlY2F1c2UgeGF0dHIgYmxvY2tzCi0rCSAqIHJlcXVpcmUgc29ydGVkIGtleXMuCi0rCSAqLwotKwl4YV9zdWZmaXggPSB4YS0+bmFtZTsKLSsJeGJfc3VmZml4ID0geGItPm5hbWU7Ci0rCXhhX2lkeCA9IHhiX2lkeCA9IDA7Ci0rCWZpbmRfZWFfaW5kZXgoeGEtPm5hbWUsICZ4YV9zdWZmaXgsICZ4YV9pZHgpOwotKwlmaW5kX2VhX2luZGV4KHhiLT5uYW1lLCAmeGJfc3VmZml4LCAmeGJfaWR4KTsKLSsJY21wID0geGFfaWR4IC0geGJfaWR4OwotKwlpZiAoY21wKQotKwkJcmV0dXJuIGNtcDsKLSsJY21wID0gc3RybGVuKHhhX3N1ZmZpeCkgLSBzdHJsZW4oeGJfc3VmZml4KTsKLSsJaWYgKGNtcCkKLSsJCXJldHVybiBjbXA7Ci0rCWNtcCA9IHN0cmNtcCh4YV9zdWZmaXgsIHhiX3N1ZmZpeCk7Ci0rCXJldHVybiBjbXA7Ci0gfQotIAotIHN0YXRpYyBjb25zdCBjaGFyICpmaW5kX2VhX3ByZWZpeChpbnQgaW5kZXgpCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZF94YXR0cl9zb3J0aW5nL2V4cGVjdCBiL3Rlc3RzL2RfeGF0dHJfc29ydGluZy9leHBlY3QKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4xN2RhNjYzCi0tLS0gL2Rldi9udWxsCi0rKysgYi90ZXN0cy9kX3hhdHRyX3NvcnRpbmcvZXhwZWN0Ci1AQCAtMCwwICsxLDI5IEBACi0rZGVidWdmcyBzb3J0IGV4dGVuZGVkIGF0dHJpYnV0ZXMKLStta2UyZnMgLUZxIC1iIDEwMjQgdGVzdC5pbWcgNTEyCi0rRXhpdCBzdGF0dXMgaXMgMAotK2VhX3NldCAvIHNlY3VyaXR5LlNNRUc2NCAtZiAvdG1wL2IKLStFeGl0IHN0YXR1cyBpcyAwCi0rZWFfc2V0IC8gc2VjdXJpdHkuaW1iIC1mIC90bXAvYgotK0V4aXQgc3RhdHVzIGlzIDAKLStlYV9zZXQgLyB1c2VyLm1vbyBjb3cKLStFeGl0IHN0YXR1cyBpcyAwCi0rZWFfbGlzdCAvCi0rRXh0ZW5kZWQgYXR0cmlidXRlczoKLSsgIHVzZXIubW9vID0gImNvdyIgKDMpCi0rICBzZWN1cml0eS5pbWIgPSAieHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eCIgKDI1NikKLSsgIHNlY3VyaXR5LlNNRUc2NCA9ICJ4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4IiAoMjU2KQotK0V4aXQgc3RhdHVzIGlzIDAKLStlYV9nZXQgLyBzZWN1cml0eS5pbWIKLSt4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4Ci0rRXhpdCBzdGF0dXMgaXMgMAotK2VhX2dldCAvIG5vc3VjaGVhCi0rZWFfZ2V0OiBFeHRlbmRlZCBhdHRyaWJ1dGUga2V5IG5vdCBmb3VuZCB3aGlsZSBnZXR0aW5nIGV4dGVuZGVkIGF0dHJpYnV0ZQotK0V4aXQgc3RhdHVzIGlzIDAKLStlMmZzY2sgLXlmIC1OIHRlc3RfZmlsZXN5cwotK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcwotK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQotK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQotK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cwotK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgotK3Rlc3RfZmlsZXN5czogMTEvNjQgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyOS81MTIgYmxvY2tzCi0rRXhpdCBzdGF0dXMgaXMgMAotZGlmZiAtLWdpdCBhL3Rlc3RzL2RfeGF0dHJfc29ydGluZy9uYW1lIGIvdGVzdHMvZF94YXR0cl9zb3J0aW5nL25hbWUKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5kZGU4OTI2Ci0tLS0gL2Rldi9udWxsCi0rKysgYi90ZXN0cy9kX3hhdHRyX3NvcnRpbmcvbmFtZQotQEAgLTAsMCArMSBAQAotK3NvcnQgZXh0ZW5kZWQgYXR0cmlidXRlcyBpbiBkZWJ1Z2ZzCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZF94YXR0cl9zb3J0aW5nL3NjcmlwdCBiL3Rlc3RzL2RfeGF0dHJfc29ydGluZy9zY3JpcHQKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4zMGMxODlhCi0tLS0gL2Rldi9udWxsCi0rKysgYi90ZXN0cy9kX3hhdHRyX3NvcnRpbmcvc2NyaXB0Ci1AQCAtMCwwICsxLDg2IEBACi0raWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KLSsKLStPVVQ9JHRlc3RfbmFtZS5sb2cKLStFWFA9JHRlc3RfZGlyL2V4cGVjdAotK1ZFUklGWV9GU0NLX09QVD0teWYKLSsKLStURVNUX0RBVEE9JHRlc3RfbmFtZS50bXAKLStWRVJJRllfREFUQT0kdGVzdF9uYW1lLnZlci50bXAKLSsKLStlY2hvICJkZWJ1Z2ZzIHNvcnQgZXh0ZW5kZWQgYXR0cmlidXRlcyIgPiAkT1VUCi0rCi0rZGQgaWY9L2Rldi96ZXJvIG9mPSRUTVBGSUxFIGJzPTFrIGNvdW50PTUxMiA+IC9kZXYvbnVsbCAyPiYxCi0rCi0rZWNobyAibWtlMmZzIC1GcSAtYiAxMDI0IHRlc3QuaW1nIDUxMiIgPj4gJE9VVAotKwotKyRNS0UyRlMgLUZxICRUTVBGSUxFIDUxMiA+IC9kZXYvbnVsbCAyPiYxCi0rc3RhdHVzPSQ/Ci0rZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQKLSsKLStwZXJsIC1lICdwcmludCAieCIgeCAyNTY7JyA+IC90bXAvYgotKwotK2VjaG8gImVhX3NldCAvIHNlY3VyaXR5LlNNRUc2NCAtZiAvdG1wL2IiID4gJE9VVC5uZXcKLSskREVCVUdGUyAtdyAtUiAiZWFfc2V0IC8gc2VjdXJpdHkuU01FRzY0IC1mIC90bXAvYiIgJFRNUEZJTEUgPj4gJE9VVC5uZXcgMj4mMQotK3N0YXR1cz0kPwotK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldwotK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkICRPVVQubmV3ID4+ICRPVVQKLSsKLStlY2hvICJlYV9zZXQgLyBzZWN1cml0eS5pbWIgLWYgL3RtcC9iIiA+ICRPVVQubmV3Ci0rJERFQlVHRlMgLXcgLVIgImVhX3NldCAvIHNlY3VyaXR5LmltYiAtZiAvdG1wL2IiICRUTVBGSUxFID4+ICRPVVQubmV3IDI+JjEKLStzdGF0dXM9JD8KLStlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKLStzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAkT1VULm5ldyA+PiAkT1VUCi0rCi0rZWNobyAiZWFfc2V0IC8gdXNlci5tb28gY293IiA+ICRPVVQubmV3Ci0rJERFQlVHRlMgLXcgLVIgImVhX3NldCAvIHVzZXIubW9vIGNvdyIgJFRNUEZJTEUgPj4gJE9VVC5uZXcgMj4mMQotK3N0YXR1cz0kPwotK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldwotK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkICRPVVQubmV3ID4+ICRPVVQKLSsKLStybSAtcmYgL3RtcC9iCi0rCi0rZWNobyAiZWFfbGlzdCAvIiA+ICRPVVQubmV3Ci0rJERFQlVHRlMgLXcgLVIgImVhX2xpc3QgLyIgJFRNUEZJTEUgPj4gJE9VVC5uZXcgMj4mMQotK3N0YXR1cz0kPwotK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldwotK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkICRPVVQubmV3ID4+ICRPVVQKLSsKLStlY2hvICJlYV9nZXQgLyBzZWN1cml0eS5pbWIiID4gJE9VVC5uZXcKLSskREVCVUdGUyAtdyAtUiAiZWFfZ2V0IC8gc2VjdXJpdHkuaW1iIiAkVE1QRklMRSA+PiAkT1VULm5ldyAyPiYxCi0rc3RhdHVzPSQ/Ci0rZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3Ci0rc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgJE9VVC5uZXcgPj4gJE9VVAotKwotK2VjaG8gImVhX2dldCAvIG5vc3VjaGVhIiA+ICRPVVQubmV3Ci0rJERFQlVHRlMgLXcgLVIgImVhX2dldCAvIG5vc3VjaGVhIiAkVE1QRklMRSA+PiAkT1VULm5ldyAyPiYxCi0rc3RhdHVzPSQ/Ci0rZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3Ci0rc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgJE9VVC5uZXcgPj4gJE9VVAotKwotK2VjaG8gZTJmc2NrICRWRVJJRllfRlNDS19PUFQgLU4gdGVzdF9maWxlc3lzID4gJE9VVC5uZXcKLSskRlNDSyAkVkVSSUZZX0ZTQ0tfT1BUIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+PiAkT1VULm5ldyAyPiYxCi0rc3RhdHVzPSQ/Ci0rZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3Ci0rc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgJE9VVC5uZXcgPj4gJE9VVAotKwotKyMKLSsjIERvIHRoZSB2ZXJpZmljYXRpb24KLSsjCi0rCi0rcm0gLWYgJFRNUEZJTEUgJE9VVC5uZXcKLStjbXAgLXMgJE9VVCAkRVhQCi0rc3RhdHVzPSQ/Ci0rCi0raWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCi0rCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKLSsJdG91Y2ggJHRlc3RfbmFtZS5vawotK2Vsc2UKLSsJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKLSsJZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCi0rZmkKLSsKLSt1bnNldCBWRVJJRllfRlNDS19PUFQgTkFUSVZFX0ZTQ0tfT1BUIE9VVCBFWFAgVEVTVF9EQVRBIFZFUklGWV9EQVRBCi0rCi0rZWxzZSAjaWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KLSsJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IHNraXBwZWQiCi0rZmkKLQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3NfMS40My5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9nc18xLjQzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0ODU1YmMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3NfMS40My5iYgpAQCAtMCwwICsxLDExMSBAQAorcmVxdWlyZSBlMmZzcHJvZ3MuaW5jCisKK1BSID0gInIxIgorCitTUkNfVVJJICs9ICJmaWxlOi8vYWNpbmNsdWRlLm00IFwKKyAgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUubGRjb25maWcuY2FsbC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcXVpZXQtZGVidWdmcy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgIGZpbGU6Ly9wdGVzdC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vbWtkaXIucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL1JldmVydC1ta2UyZnMtZW5hYmxlLXRoZS1tZXRhZGF0YV9jc3VtLWFuZC02NGJpdC1mZWEucGF0Y2ggXAorIgorCitTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly9lMmZzcHJvZ3MtZml4LW1pc3NpbmctY2hlY2stZm9yLXBlcm1pc3Npb24tZGVuaWVkLnBhdGNoIgorCitTUkNSRVYgPSAiZDZhZGYwNzBiMGU4NWYyMDljMGQ3ZjMxMDE4OGIxMzRiNWNiNzE4MCIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInYoP1A8cHZlcj5cZCtcLlxkKyhcLlxkKykqKSQiCisKK0VYVFJBX09FQ09ORiArPSAiLS1saWJkaXI9JHtiYXNlX2xpYmRpcn0gLS1zYmluZGlyPSR7YmFzZV9zYmluZGlyfSBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtZWxmLXNobGlicyAtLWRpc2FibGUtbGlidXVpZCAtLWRpc2FibGUtdXVpZGQgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1saWJibGtpZCAtLWVuYWJsZS12ZXJib3NlLW1ha2VjbWRzIgorCitFWFRSQV9PRUNPTkZfZGFyd2luID0gIi0tbGliZGlyPSR7YmFzZV9saWJkaXJ9IC0tc2JpbmRpcj0ke2Jhc2Vfc2JpbmRpcn0gLS1lbmFibGUtYnNkLXNobGlicyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbZnVzZV0gPSAnLS1lbmFibGUtZnVzZTJmcywtLWRpc2FibGUtZnVzZTJmcyxmdXNlJworCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJY3AgJHtXT1JLRElSfS9hY2luY2x1ZGUubTQgJHtTfS8KK30KKworZG9faW5zdGFsbCAoKSB7CisJb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCisJb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsLWxpYnMKKwkjIFdlIHVzZSBibGtpZCBmcm9tIHV0aWwtbGludXggbm93IHNvIHJlbW92ZSBmcm9tIGhlcmUKKwlybSAtZiAke0R9JHtiYXNlX2xpYmRpcn0vbGliYmxraWQqCisJcm0gLXJmICR7RH0ke2luY2x1ZGVkaXJ9L2Jsa2lkCisJcm0gLWYgJHtEfSR7YmFzZV9saWJkaXJ9L3BrZ2NvbmZpZy9ibGtpZC5wYworCXJtIC1mICR7RH0ke2Jhc2Vfc2JpbmRpcn0vYmxraWQKKwlybSAtZiAke0R9JHtiYXNlX3NiaW5kaXJ9L2ZzY2sKKwlybSAtZiAke0R9JHtiYXNlX3NiaW5kaXJ9L2ZpbmRmcworCisJIyBlMmluaXRyZF9oZWxwZXIgYW5kIHRoZSBwa2djb25maWcgZmlsZXMgYmVsb25nIGluIGxpYmRpcgorCWlmIFsgISAke0R9JHtsaWJkaXJ9IC1lZiAke0R9JHtiYXNlX2xpYmRpcn0gXTsgdGhlbgorCQlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0KKwkJbXYgJHtEfSR7YmFzZV9saWJkaXJ9L2UyaW5pdHJkX2hlbHBlciAke0R9JHtsaWJkaXJ9CisJCW12ICR7RH0ke2Jhc2VfbGliZGlyfS9wa2djb25maWcgJHtEfSR7bGliZGlyfQorCWZpCisKKwlvZV9tdWx0aWxpYl9oZWFkZXIgZXh0MmZzL2V4dDJfdHlwZXMuaAorCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9CisJbXYgJHtEfSR7YmluZGlyfS9jaGF0dHIgJHtEfSR7YmFzZV9iaW5kaXJ9L2NoYXR0ci5lMmZzcHJvZ3MKKworCWluc3RhbGwgLXYgLW0gNzU1ICR7U30vY29udHJpYi9wb3B1bGF0ZS1leHRmcy5zaCAke0R9JHtiYXNlX3NiaW5kaXJ9LworCisJIyBDbGVhbiBob3N0IHBhdGggKGJ1aWxkIGRpcmVjdG9yeSkgaW4gY29tcGlsZV9ldCwgbWtfY21kcworCXNlZCAtaSAtZSAicyxcKEVUX0RJUj0uKlwpJHtTfS9saWIvZXRcKC4qXCksXDEke2RhdGFkaXJ9L2V0XDIsZyIgJHtEfSR7YmluZGlyfS9jb21waWxlX2V0CisJc2VkIC1pIC1lICJzLFwoU1NfRElSPS4qXCkke1N9L2xpYi9zc1woLipcKSxcMSR7ZGF0YWRpcn0vc3NcMixnIiAke0R9JHtiaW5kaXJ9L21rX2NtZHMKK30KKworIyBOZWVkIHRvIGZpbmQgdGhlIHJpZ2h0IG1rZTJmcy5jb25mIGZpbGUKK2UyZnNwcm9nc19jb25mX2ZpeHVwICgpIHsKKwlmb3IgaSBpbiBta2UyZnMgbWtmcy5leHQyIG1rZnMuZXh0MyBta2ZzLmV4dDQgbWtmcy5leHQ0ZGV2OyBkbworCQljcmVhdGVfd3JhcHBlciAke0R9JHtiYXNlX3NiaW5kaXJ9LyRpIE1LRTJGU19DT05GSUc9JHtzeXNjb25mZGlyfS9ta2UyZnMuY29uZgorCWRvbmUKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworCWUyZnNwcm9nc19jb25mX2ZpeHVwCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKwllMmZzcHJvZ3NfY29uZl9maXh1cAorfQorCitSREVQRU5EU19lMmZzcHJvZ3MgPSAiZTJmc3Byb2dzLWJhZGJsb2NrcyIKK1JSRUNPTU1FTkRTX2UyZnNwcm9ncyA9ICJlMmZzcHJvZ3MtbWtlMmZzIGUyZnNwcm9ncy1lMmZzY2siCisKK1BBQ0tBR0VTID0rICJlMmZzcHJvZ3MtZTJmc2NrIGUyZnNwcm9ncy1ta2UyZnMgZTJmc3Byb2dzLXR1bmUyZnMgZTJmc3Byb2dzLWJhZGJsb2NrcyBlMmZzcHJvZ3MtcmVzaXplMmZzIgorUEFDS0FHRVMgPSsgImxpYmNvbWVyciBsaWJzcyBsaWJlMnAgbGliZXh0MmZzIgorCitGSUxFU19lMmZzcHJvZ3MtcmVzaXplMmZzID0gIiR7YmFzZV9zYmluZGlyfS9yZXNpemUyZnMqIgorRklMRVNfZTJmc3Byb2dzLWUyZnNjayA9ICIke2Jhc2Vfc2JpbmRpcn0vZTJmc2NrICR7YmFzZV9zYmluZGlyfS9mc2NrLmV4dCoiCitGSUxFU19lMmZzcHJvZ3MtbWtlMmZzID0gIiR7YmFzZV9zYmluZGlyfS9ta2UyZnMgJHtiYXNlX3NiaW5kaXJ9L21rZnMuZXh0KiAke3N5c2NvbmZkaXJ9L21rZTJmcy5jb25mIgorRklMRVNfZTJmc3Byb2dzLXR1bmUyZnMgPSAiJHtiYXNlX3NiaW5kaXJ9L3R1bmUyZnMgJHtiYXNlX3NiaW5kaXJ9L2UybGFiZWwiCitGSUxFU19lMmZzcHJvZ3MtYmFkYmxvY2tzID0gIiR7YmFzZV9zYmluZGlyfS9iYWRibG9ja3MiCitGSUxFU19saWJjb21lcnIgPSAiJHtiYXNlX2xpYmRpcn0vbGliY29tX2Vyci5zby4qIgorRklMRVNfbGlic3MgPSAiJHtiYXNlX2xpYmRpcn0vbGlic3Muc28uKiIKK0ZJTEVTX2xpYmUycCA9ICIke2Jhc2VfbGliZGlyfS9saWJlMnAuc28uKiIKK0ZJTEVTX2xpYmV4dDJmcyA9ICIke2xpYmRpcn0vZTJpbml0cmRfaGVscGVyICR7YmFzZV9saWJkaXJ9L2xpYmV4dDJmcy5zby4qIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9LyovKi5hd2sgJHtkYXRhZGlyfS8qLyouc2VkICR7YmFzZV9saWJkaXJ9Lyouc28gJHtiaW5kaXJ9L2NvbXBpbGVfZXQgJHtiaW5kaXJ9L21rX2NtZHMiCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gImNoYXR0ciIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtjaGF0dHJdID0gIiR7YmFzZV9iaW5kaXJ9L2NoYXR0ciIKK0FMVEVSTkFUSVZFX1RBUkdFVFtjaGF0dHJdID0gIiR7YmFzZV9iaW5kaXJ9L2NoYXR0ci5lMmZzcHJvZ3MiCisKK0FMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJmc2NrLjgiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZnNjay44XSA9ICIke21hbmRpcn0vbWFuOC9mc2NrLjgiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIke1BOfSAke1BOfS10dW5lMmZzIGNvcmV1dGlscyBwcm9jcHMgYmFzaCIKKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKwlvZV9ydW5tYWtlIC1DICR7Qn0vdGVzdHMKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwljcCAtYSAke0J9L3Rlc3RzICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKKwljcCAtYSAke1N9L3Rlc3RzLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorCXNlZCAtZSAncyEuLi9lMmZzY2svZTJmc2NrIWUyZnNjayFnJyAtaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0LyovZXhwZWN0KgorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9nc19naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljZGU4ZTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExMSArMCwwIEBACi1yZXF1aXJlIGUyZnNwcm9ncy5pbmMKLQotU1JDX1VSSSArPSAiZmlsZTovL2FjaW5jbHVkZS5tNCBcCi0gICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLmxkY29uZmlnLmNhbGwucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3F1aWV0LWRlYnVnZnMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgICBmaWxlOi8vcHRlc3QucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL21rZGlyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly94YXR0cl9vcmRlcmluZy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vUmV2ZXJ0LW1rZTJmcy1lbmFibGUtdGhlLW1ldGFkYXRhX2NzdW0tYW5kLTY0Yml0LWZlYS5wYXRjaCBcCi0iCi0KLVNSQ1JFViA9ICIwZjI2NzQ3MTY3Y2M5ZDgyZGY4NDliMGFhZDM4N2JmODI0ZjA0NTQ0IgotUFYgPSAiMS40Mi45OSsxLjQzK2dpdCR7U1JDUFZ9IgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPlxkK1wuXGQrKFwuXGQrKSopJCIKLQotRVhUUkFfT0VDT05GICs9ICItLWxpYmRpcj0ke2Jhc2VfbGliZGlyfSAtLXNiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9IFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1lbGYtc2hsaWJzIC0tZGlzYWJsZS1saWJ1dWlkIC0tZGlzYWJsZS11dWlkZCBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLWxpYmJsa2lkIC0tZW5hYmxlLXZlcmJvc2UtbWFrZWNtZHMiCi0KLUVYVFJBX09FQ09ORl9kYXJ3aW4gPSAiLS1saWJkaXI9JHtiYXNlX2xpYmRpcn0gLS1zYmluZGlyPSR7YmFzZV9zYmluZGlyfSAtLWVuYWJsZS1ic2Qtc2hsaWJzIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tmdXNlXSA9ICctLWVuYWJsZS1mdXNlMmZzLC0tZGlzYWJsZS1mdXNlMmZzLGZ1c2UnCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQljcCAke1dPUktESVJ9L2FjaW5jbHVkZS5tNCAke1N9LwotfQotCi1kb19pbnN0YWxsICgpIHsKLQlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKLQlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwtbGlicwotCSMgV2UgdXNlIGJsa2lkIGZyb20gdXRpbC1saW51eCBub3cgc28gcmVtb3ZlIGZyb20gaGVyZQotCXJtIC1mICR7RH0ke2Jhc2VfbGliZGlyfS9saWJibGtpZCoKLQlybSAtcmYgJHtEfSR7aW5jbHVkZWRpcn0vYmxraWQKLQlybSAtZiAke0R9JHtiYXNlX2xpYmRpcn0vcGtnY29uZmlnL2Jsa2lkLnBjCi0Jcm0gLWYgJHtEfSR7YmFzZV9zYmluZGlyfS9ibGtpZAotCXJtIC1mICR7RH0ke2Jhc2Vfc2JpbmRpcn0vZnNjawotCXJtIC1mICR7RH0ke2Jhc2Vfc2JpbmRpcn0vZmluZGZzCi0KLQkjIGUyaW5pdHJkX2hlbHBlciBhbmQgdGhlIHBrZ2NvbmZpZyBmaWxlcyBiZWxvbmcgaW4gbGliZGlyCi0JaWYgWyAhICR7RH0ke2xpYmRpcn0gLWVmICR7RH0ke2Jhc2VfbGliZGlyfSBdOyB0aGVuCi0JCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfQotCQltdiAke0R9JHtiYXNlX2xpYmRpcn0vZTJpbml0cmRfaGVscGVyICR7RH0ke2xpYmRpcn0KLQkJbXYgJHtEfSR7YmFzZV9saWJkaXJ9L3BrZ2NvbmZpZyAke0R9JHtsaWJkaXJ9Ci0JZmkKLQotCW9lX211bHRpbGliX2hlYWRlciBleHQyZnMvZXh0Ml90eXBlcy5oCi0JaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KLQltdiAke0R9JHtiaW5kaXJ9L2NoYXR0ciAke0R9JHtiYXNlX2JpbmRpcn0vY2hhdHRyLmUyZnNwcm9ncwotCi0JaW5zdGFsbCAtdiAtbSA3NTUgJHtTfS9jb250cmliL3BvcHVsYXRlLWV4dGZzLnNoICR7RH0ke2Jhc2Vfc2JpbmRpcn0vCi19Ci0KLSMgTmVlZCB0byBmaW5kIHRoZSByaWdodCBta2UyZnMuY29uZiBmaWxlCi1lMmZzcHJvZ3NfY29uZl9maXh1cCAoKSB7Ci0JZm9yIGkgaW4gbWtlMmZzIG1rZnMuZXh0MiBta2ZzLmV4dDMgbWtmcy5leHQ0IG1rZnMuZXh0NGRldjsgZG8KLQkJY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmFzZV9zYmluZGlyfS8kaSBNS0UyRlNfQ09ORklHPSR7c3lzY29uZmRpcn0vbWtlMmZzLmNvbmYKLQlkb25lCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLQkjIENsZWFuIGhvc3QgcGF0aCBpbiBjb21waWxlX2V0LCBta19jbWRzCi0Jc2VkIC1pIC1lICJzLEVUX0RJUj1cIiR7U30vbGliL2V0XCIsRVRfRElSPVwiJHtkYXRhZGlyfS9ldFwiLGciICR7RH0ke2JpbmRpcn0vY29tcGlsZV9ldAotCXNlZCAtaSAtZSAicyxTU19ESVI9XCIke1N9L2xpYi9zc1wiLFNTX0RJUj1cIiR7ZGF0YWRpcn0vc3NcIixnIiAke0R9JHtiaW5kaXJ9L21rX2NtZHMKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotCWUyZnNwcm9nc19jb25mX2ZpeHVwCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKLQllMmZzcHJvZ3NfY29uZl9maXh1cAotfQotCi1SREVQRU5EU19lMmZzcHJvZ3MgPSAiZTJmc3Byb2dzLWJhZGJsb2NrcyIKLVJSRUNPTU1FTkRTX2UyZnNwcm9ncyA9ICJlMmZzcHJvZ3MtbWtlMmZzIGUyZnNwcm9ncy1lMmZzY2siCi0KLVBBQ0tBR0VTID0rICJlMmZzcHJvZ3MtZTJmc2NrIGUyZnNwcm9ncy1ta2UyZnMgZTJmc3Byb2dzLXR1bmUyZnMgZTJmc3Byb2dzLWJhZGJsb2NrcyBlMmZzcHJvZ3MtcmVzaXplMmZzIgotUEFDS0FHRVMgPSsgImxpYmNvbWVyciBsaWJzcyBsaWJlMnAgbGliZXh0MmZzIgotCi1GSUxFU19lMmZzcHJvZ3MtcmVzaXplMmZzID0gIiR7YmFzZV9zYmluZGlyfS9yZXNpemUyZnMqIgotRklMRVNfZTJmc3Byb2dzLWUyZnNjayA9ICIke2Jhc2Vfc2JpbmRpcn0vZTJmc2NrICR7YmFzZV9zYmluZGlyfS9mc2NrLmV4dCoiCi1GSUxFU19lMmZzcHJvZ3MtbWtlMmZzID0gIiR7YmFzZV9zYmluZGlyfS9ta2UyZnMgJHtiYXNlX3NiaW5kaXJ9L21rZnMuZXh0KiAke3N5c2NvbmZkaXJ9L21rZTJmcy5jb25mIgotRklMRVNfZTJmc3Byb2dzLXR1bmUyZnMgPSAiJHtiYXNlX3NiaW5kaXJ9L3R1bmUyZnMgJHtiYXNlX3NiaW5kaXJ9L2UybGFiZWwiCi1GSUxFU19lMmZzcHJvZ3MtYmFkYmxvY2tzID0gIiR7YmFzZV9zYmluZGlyfS9iYWRibG9ja3MiCi1GSUxFU19saWJjb21lcnIgPSAiJHtiYXNlX2xpYmRpcn0vbGliY29tX2Vyci5zby4qIgotRklMRVNfbGlic3MgPSAiJHtiYXNlX2xpYmRpcn0vbGlic3Muc28uKiIKLUZJTEVTX2xpYmUycCA9ICIke2Jhc2VfbGliZGlyfS9saWJlMnAuc28uKiIKLUZJTEVTX2xpYmV4dDJmcyA9ICIke2xpYmRpcn0vZTJpbml0cmRfaGVscGVyICR7YmFzZV9saWJkaXJ9L2xpYmV4dDJmcy5zby4qIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9LyovKi5hd2sgJHtkYXRhZGlyfS8qLyouc2VkICR7YmFzZV9saWJkaXJ9Lyouc28iCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gImNoYXR0ciIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtjaGF0dHJdID0gIiR7YmFzZV9iaW5kaXJ9L2NoYXR0ciIKLUFMVEVSTkFUSVZFX1RBUkdFVFtjaGF0dHJdID0gIiR7YmFzZV9iaW5kaXJ9L2NoYXR0ci5lMmZzcHJvZ3MiCi0KLUFMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJmc2NrLjgiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbZnNjay44XSA9ICIke21hbmRpcn0vbWFuOC9mc2NrLjgiCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIke1BOfSAke1BOfS10dW5lMmZzIGNvcmV1dGlscyBwcm9jcHMgYmFzaCIKLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQlvZV9ydW5tYWtlIC1DICR7Qn0vdGVzdHMKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQljcCAtYSAke0J9L3Rlc3RzICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKLQljcCAtYSAke1N9L3Rlc3RzLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAotCXNlZCAtZSAncyEuLi9lMmZzY2svZTJmc2NrIWUyZnNjayFnJyAtaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0LyovZXhwZWN0KgotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE0OC9maXhfZm9yX2djYy00LjcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTQ4L2ZpeF9mb3JfZ2NjLTQuNy5wYXRjaAppbmRleCBiZDYzNGI0Li5jNzhmOTVkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTQ4L2ZpeF9mb3JfZ2NjLTQuNy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTQ4L2ZpeF9mb3JfZ2NjLTQuNy5wYXRjaApAQCAtMiw3ICsyLDcgQEAKIGdjYyA0LjcgZG9lcyBub3QgbGlrZSBwb2ludGVyIGNvbnZlcnNpb24sIHNvIGhhdmUgYSB2b2lkICogdG1wIHZhciB0byB3b3JrIAogYXJvdW5kIGZvbGxvd2luZyBjb21waWxhdGlvbiBpc3N1ZS4KIAotU2lnbmVkLU9mZi1CeTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+CiAyMDExLzA3LzA3CiAKIHwgbWQ1LmM6IEluIGZ1bmN0aW9uICdtZDVfZmluaXNoX2N0eCc6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTQ4L2djYzYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTQ4L2djYzYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjU2YTc1NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNDgvZ2NjNi5wYXRjaApAQCAtMCwwICsxLDIzIEBACitGaXggd2FybmluZ3MgZm91bmQgd2l0aCBnY2M2CisKK3wgLi4vLi4vZWxmdXRpbHMtMC4xNDgvbGliZHcvZHdhcmZfc2libGluZ29mLmM6IEluIGZ1bmN0aW9uICdkd2FyZl9zaWJsaW5nb2YnOgorfCAuLi8uLi9lbGZ1dGlscy0wLjE0OC9saWJkdy9kd2FyZl9zaWJsaW5nb2YuYzo2OTo2OiBlcnJvcjogbm9ubnVsbCBhcmd1bWVudCAncmVzdWx0JyBjb21wYXJlZCB0byBOVUxMIFstV2Vycm9yPW5vbm51bGwtY29tcGFyZV0KK3wgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorfCAgICAgICBeCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgWyB1bm1haW50YWluZWQgXQorSW5kZXg6IGVsZnV0aWxzLTAuMTQ4L2xpYmR3L2R3YXJmX3NpYmxpbmdvZi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZWxmdXRpbHMtMC4xNDgub3JpZy9saWJkdy9kd2FyZl9zaWJsaW5nb2YuYworKysrIGVsZnV0aWxzLTAuMTQ4L2xpYmR3L2R3YXJmX3NpYmxpbmdvZi5jCitAQCAtNjYsOSArNjYsNiBAQCBkd2FyZl9zaWJsaW5nb2YgKGRpZSwgcmVzdWx0KQorICAgaWYgKGRpZSA9PSBOVUxMKQorICAgICByZXR1cm4gLTE7CisgCistICBpZiAocmVzdWx0ID09IE5VTEwpCistICAgIHJldHVybiAtMTsKKy0KKyAgIGlmIChyZXN1bHQgIT0gZGllKQorICAgICByZXN1bHQtPmFkZHIgPSBOVUxMOworIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2NC8wMDAxLWJ1aWxkLVByb3ZpZGUtYWx0ZXJuYXRpdmVzLWZvci1nbGliYy1hc3N1bXB0aW9ucy1oZWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY0LzAwMDEtYnVpbGQtUHJvdmlkZS1hbHRlcm5hdGl2ZXMtZm9yLWdsaWJjLWFzc3VtcHRpb25zLWhlbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzhkMWM4OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY0LzAwMDEtYnVpbGQtUHJvdmlkZS1hbHRlcm5hdGl2ZXMtZm9yLWdsaWJjLWFzc3VtcHRpb25zLWhlbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExNjMgKzAsMCBAQAotRnJvbSA0YjBmZTgwYjM5NTFmMDQ0YzFjMWIxNGQxZDdmNWYwYjhhYjY3NTA3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMzEgRGVjIDIwMTUgMDY6MzU6MzQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gYnVpbGQ6IFByb3ZpZGUgYWx0ZXJuYXRpdmVzIGZvciBnbGliYyBhc3N1bXB0aW9ucyBoZWxwcwotIGNvbXBpbGluZyBpdCBvbiBtdXNsCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIGxpYi9jb2xvci5jICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBsaWIvY3JjMzJfZmlsZS5jICAgICAgICAgICAgICAgICB8ICA0ICsrKy0KLSBsaWIvZml4ZWRzaXplaGFzaC5oICAgICAgICAgICAgICB8ICA0ICsrLS0KLSBsaWIvc3lzdGVtLmggICAgICAgICAgICAgICAgICAgICB8IDExICsrKysrKysrKysrCi0gbGliL3htYWxsb2MuYyAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIGxpYmFzbS9hc21fZW5kLmMgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBsaWJhc20vYXNtX25ld3Njbi5jICAgICAgICAgICAgICB8ICAyICstCi0gbGliY3B1L2kzODZfZ2VuZGlzLmMgICAgICAgICAgICAgfCAgMiArLQotIGxpYmNwdS9pMzg2X2xleC5jICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBsaWJjcHUvaTM4Nl9wYXJzZS5jICAgICAgICAgICAgICB8ICAyICstCi0gbGliZHcvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgfCAgMiArLQotIGxpYmR3L2xpYmR3X2FsbG9jLmMgICAgICAgICAgICAgIHwgIDMgKystCi0gbGliZHdmbC9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgfCAgMiArKwotIGxpYmR3ZmwvZHdmbF9idWlsZF9pZF9maW5kX2VsZi5jIHwgIDMgKystCi0gbGliZHdmbC9kd2ZsX2Vycm9yLmMgICAgICAgICAgICAgfCAgNCArKystCi0gbGliZHdmbC9kd2ZsX21vZHVsZV9nZXRkd2FyZi5jICAgfCAgMSArCi0gbGliZHdmbC9maW5kLWRlYnVnaW5mby5jICAgICAgICAgfCAgMiArLQotIGxpYmR3ZmwvbGliZHdmbF9jcmMzMl9maWxlLmMgICAgIHwgMTAgKysrKysrKysrKwotIGxpYmR3ZmwvbGludXgta2VybmVsLW1vZHVsZXMuYyAgIHwgIDEgKwotIGxpYmVibC9lYmxvcGVuYmFja2VuZC5jICAgICAgICAgIHwgIDIgKy0KLSBsaWJlYmwvZWJsd3N0cnRhYi5jICAgICAgICAgICAgICB8ICAyICstCi0gbGliZWxmL2VsZi5oICAgICAgICAgICAgICAgICAgICAgfCAgOSArKysrKystLS0KLSBsaWJlbGYvbGliZWxmLmggICAgICAgICAgICAgICAgICB8ICAxICsKLSBsaWJlbGYvbGliZWxmUC5oICAgICAgICAgICAgICAgICB8ICAxICsKLSBzcmMvYWRkcjJsaW5lLmMgICAgICAgICAgICAgICAgICB8ICAyICstCi0gc3JjL2FyLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHNyYy9hcmxpYi5jICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvYXJsaWIyLmMgICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gc3JjL2VsZmNtcC5jICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHNyYy9lbGZsaW50LmMgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvZmluZHRleHRyZWwuYyAgICAgICAgICAgICAgICB8ICAyICstCi0gc3JjL2kzODZfbGQuYyAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHNyYy9sZC5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvbGRnZW5lcmljLmMgICAgICAgICAgICAgICAgICB8ICAyICstCi0gc3JjL2xkbGV4LmMgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHNyYy9sZHNjcmlwdC5jICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvbm0uYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gc3JjL29iamR1bXAuYyAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHNyYy9yYW5saWIuYyAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvcmVhZGVsZi5jICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gc3JjL3NpemUuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHNyYy9zdGFjay5jICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvc3RyaW5ncy5jICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gc3JjL3N0cmlwLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHNyYy91bnN0cmlwLmMgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9hZGRyc2NvcGVzLmMgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvYWxscmVncy5jICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2JhY2t0cmFjZS1kYXRhLmMgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9iYWNrdHJhY2UtZHdhcmYuYyAgICAgICAgICB8ICAyICstCi0gdGVzdHMvYmFja3RyYWNlLmMgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2J1aWxkaWQuYyAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9kZWJ1Z2FsdGxpbmsuYyAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvZGVidWdsaW5rLmMgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2RlbGV0ZWQuYyAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9kd2ZsLWFkZHItc2VjdC5jICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvZHdmbC1idWctYWRkci1vdmVyZmxvdy5jICAgfCAgMiArLQotIHRlc3RzL2R3ZmwtYnVnLWZkLWxlYWsuYyAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9kd2ZsLWJ1Zy1nZXRtb2R1bGVzLmMgICAgICB8ICAyICstCi0gdGVzdHMvZHdmbC1yZXBvcnQtZWxmLWFsaWduLmMgICAgfCAgMiArLQotIHRlc3RzL2R3ZmxsaW5lcy5jICAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9kd2ZsbW9kdGVzdC5jICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvZHdmbHN5bXMuYyAgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2Vhcmx5LW9mZnNjbi5jICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9lY3AuYyAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvZmluZC1wcm9sb2d1ZXMuYyAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2Z1bmNyZXR2YWwuYyAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9mdW5jc2NvcGVzLmMgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvZ2V0c3JjX2RpZS5jICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2xpbmUyYWRkci5jICAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9sb3dfaGlnaF9wYy5jICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvbWQ1LXNoYTEtdGVzdC5jICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL3Jkd3JtbWFwLmMgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9zYXJpZHguYyAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvc2VjdGlvbmR1bXAuYyAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL3ZhcmxvY3MuYyAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy92ZHNvc3ltcy5jICAgICAgICAgICAgICAgICB8ICAyICstCi0gNzcgZmlsZXMgY2hhbmdlZCwgMTA5IGluc2VydGlvbnMoKyksIDczIGRlbGV0aW9ucygtKQotCi1JbmRleDogZWxmdXRpbHMtMC4xNjQvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbGZ1dGlscy0wLjE2NC5vcmlnL01ha2VmaWxlLmFtCi0rKysgZWxmdXRpbHMtMC4xNjQvTWFrZWZpbGUuYW0KLUBAIC0yNCw3ICsyNCw3IEBAIHBrZ2luY2x1ZGVfSEVBREVSUyA9IHZlcnNpb24uaAotIAotICMgQWRkIGRvYyBiYWNrIHdoZW4gd2UgaGF2ZSBzb21lIHJlYWwgY29udGVudC4KLSBTVUJESVJTID0gY29uZmlnIG00IGxpYiBsaWJlbGYgbGliZWJsIGxpYmR3ZWxmIGxpYmR3ZmwgbGliZHcgbGliY3B1IGxpYmFzbSBcCi0tCSAgYmFja2VuZHMgc3JjIHBvIHRlc3RzCi0rCSAgYmFja2VuZHMgcG8gdGVzdHMKLSAKLSBFWFRSQV9ESVNUID0gZWxmdXRpbHMuc3BlYyBHUEctS0VZIE5PVEVTIENPTlRSSUJVVElORyBcCi0gCSAgICAgQ09QWUlORyBDT1BZSU5HLUdQTFYyIENPUFlJTkctTEdQTFYzCi1JbmRleDogZWxmdXRpbHMtMC4xNjQvbGliL2NvbG9yLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbGZ1dGlscy0wLjE2NC5vcmlnL2xpYi9jb2xvci5jCi0rKysgZWxmdXRpbHMtMC4xNjQvbGliL2NvbG9yLmMKLUBAIC0zMiw3ICszMiw3IEBACi0gI2VuZGlmCi0gCi0gI2luY2x1ZGUgPGFyZ3AuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGxpYmludGwuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotSW5kZXg6IGVsZnV0aWxzLTAuMTY0L2xpYi9jcmMzMl9maWxlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbGZ1dGlscy0wLjE2NC5vcmlnL2xpYi9jcmMzMl9maWxlLmMKLSsrKyBlbGZ1dGlscy0wLjE2NC9saWIvY3JjMzJfZmlsZS5jCi1AQCAtMzAsMTIgKzMwLDE0IEBACi0gIyBpbmNsdWRlIDxjb25maWcuaD4KLSAjZW5kaWYKLSAKLS0jaW5jbHVkZSAic3lzdGVtLmgiCi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotKyNpbmNsdWRlIDxzdGRpbnQuaD4KLSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSAjaW5jbHVkZSA8c3lzL21tYW4uaD4KLSAKLSsjaW5jbHVkZSAic3lzdGVtLmgiCi0rCi0gaW50Ci0gY3JjMzJfZmlsZSAoaW50IGZkLCB1aW50MzJfdCAqcmVzcCkKLSB7Ci1JbmRleDogZWxmdXRpbHMtMC4xNjQvbGliL2ZpeGVkc2l6ZWhhc2guaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTY0Lm9yaWcvbGliL2ZpeGVkc2l6ZWhhc2guaAotKysrIGVsZnV0aWxzLTAuMTY0L2xpYi9maXhlZHNpemVoYXNoLmgKLUBAIC0zMCwxMiArMzAsMTIgQEAKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotLSNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLSAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0gCi0gI2luY2x1ZGUgPHN5c3RlbS5oPgotIAotLSNkZWZpbmUgQ09OQ0FUKHQxLHQyKSBfX0NPTkNBVCAodDEsdDIpCi0rI2RlZmluZSBDT05DQVQxKHgseSkgeCMjeQotKyNkZWZpbmUgQ09OQ0FUKHgseSkgQ09OQ0FUMSh4LHkpCi0gCi0gLyogQmVmb3JlIGluY2x1ZGluZyB0aGlzIGZpbGUgdGhlIGZvbGxvd2luZyBtYWNyb3MgbXVzdCBiZSBkZWZpbmVkOgotIAotSW5kZXg6IGVsZnV0aWxzLTAuMTY0L2xpYi9zeXN0ZW0uaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTY0Lm9yaWcvbGliL3N5c3RlbS5oCi0rKysgZWxmdXRpbHMtMC4xNjQvbGliL3N5c3RlbS5oCi1AQCAtNDksNiArNDksMTYgQEAKLSAjZWxzZQotICMgZXJyb3IgIlVua25vd24gYnl0ZSBvcmRlciIKLSAjZW5kaWYKLSsjaWZuZGVmIFRFTVBfRkFJTFVSRV9SRVRSWQotKyNkZWZpbmUgVEVNUF9GQUlMVVJFX1JFVFJZKGV4cHJlc3Npb24pIFwKLSsgIChfX2V4dGVuc2lvbl9fCQkJCQkJCSAgICAgIFwKLSsgICAgKHsgbG9uZyBpbnQgX19yZXN1bHQ7CQkJCQkJICAgICAgXAotKyAgICAgICBkbyBfX3Jlc3VsdCA9IChsb25nIGludCkgKGV4cHJlc3Npb24pOwkJCQkgICAgICBcCi0rICAgICAgIHdoaWxlIChfX3Jlc3VsdCA9PSAtMUwgJiYgZXJybm8gPT0gRUlOVFIpOwkJCSAgICAgIFwKLSsgICAgICAgX19yZXN1bHQ7IH0pKQotKyNlbmRpZgotKwotKyNkZWZpbmUgZXJyb3Ioc3RhdHVzLCBlcnJubywgLi4uKSBlcnIoc3RhdHVzLCBfX1ZBX0FSR1NfXykKLSAKLSBleHRlcm4gdm9pZCAqeG1hbGxvYyAoc2l6ZV90KSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwotIGV4dGVybiB2b2lkICp4Y2FsbG9jIChzaXplX3QsIHNpemVfdCkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKLUluZGV4OiBlbGZ1dGlscy0wLjE2NC9saWIveG1hbGxvYy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZWxmdXRpbHMtMC4xNjQub3JpZy9saWIveG1hbGxvYy5jCi0rKysgZWxmdXRpbHMtMC4xNjQvbGliL3htYWxsb2MuYwotQEAgLTMwLDcgKzMwLDcgQEAKLSAjIGluY2x1ZGUgPGNvbmZpZy5oPgotICNlbmRpZgotIAotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8bGliaW50bC5oPgotICNpbmNsdWRlIDxzdGRkZWYuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci1JbmRleDogZWxmdXRpbHMtMC4xNjQvbGliYXNtL2FzbV9lbmQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTY0Lm9yaWcvbGliYXNtL2FzbV9lbmQuYwotKysrIGVsZnV0aWxzLTAuMTY0L2xpYmFzbS9hc21fZW5kLmMKLUBAIC0zMiw3ICszMiw3IEBACi0gI2VuZGlmCi0gCi0gI2luY2x1ZGUgPGFzc2VydC5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8bGliaW50bC5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLUluZGV4OiBlbGZ1dGlscy0wLjE2NC9saWJhc20vYXNtX25ld3Njbi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZWxmdXRpbHMtMC4xNjQub3JpZy9saWJhc20vYXNtX25ld3Njbi5jCi0rKysgZWxmdXRpbHMtMC4xNjQvbGliYXNtL2FzbV9uZXdzY24uYwotQEAgLTMyLDcgKzMyLDcgQEAKLSAjZW5kaWYKLSAKLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxsaWJpbnRsLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLUluZGV4OiBlbGZ1dGlscy0wLjE2NC9saWJjcHUvaTM4Nl9nZW5kaXMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTY0Lm9yaWcvbGliY3B1L2kzODZfZ2VuZGlzLmMKLSsrKyBlbGZ1dGlscy0wLjE2NC9saWJjcHUvaTM4Nl9nZW5kaXMuYwotQEAgLTMxLDcgKzMxLDcgQEAKLSAjIGluY2x1ZGUgPGNvbmZpZy5oPgotICNlbmRpZgotIAotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci1JbmRleDogZWxmdXRpbHMtMC4xNjQvbGliY3B1L2kzODZfbGV4LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbGZ1dGlscy0wLjE2NC5vcmlnL2xpYmNwdS9pMzg2X2xleC5jCi0rKysgZWxmdXRpbHMtMC4xNjQvbGliY3B1L2kzODZfbGV4LmMKLUBAIC01NzEsNyArNTcxLDcgQEAgY2hhciAqaTM4Nl90ZXh0OwotICNlbmRpZgotIAotICNpbmNsdWRlIDxjdHlwZS5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8bGliaW50bC5oPgotIAotICNpbmNsdWRlIDxzeXN0ZW0uaD4KLUluZGV4OiBlbGZ1dGlscy0wLjE2NC9saWJjcHUvaTM4Nl9wYXJzZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZWxmdXRpbHMtMC4xNjQub3JpZy9saWJjcHUvaTM4Nl9wYXJzZS5jCi0rKysgZWxmdXRpbHMtMC4xNjQvbGliY3B1L2kzODZfcGFyc2UuYwotQEAgLTEwNyw3ICsxMDcsNyBAQAotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0gI2luY2x1ZGUgPGxpYmludGwuaD4KLSAjaW5jbHVkZSA8bWF0aC5oPgotSW5kZXg6IGVsZnV0aWxzLTAuMTY0L2xpYmR3L01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZWxmdXRpbHMtMC4xNjQub3JpZy9saWJkdy9NYWtlZmlsZS5hbQotKysrIGVsZnV0aWxzLTAuMTY0L2xpYmR3L01ha2VmaWxlLmFtCi1AQCAtMTE3LDcgKzExNyw3IEBAIGxpYmR3LnNvJChFWEVFWFQpOiAkKHNyY2RpcikvbGliZHcubWFwIGwKLSAJCS1XbCwtLWVuYWJsZS1uZXctZHRhZ3MsLXJwYXRoLCQocGtnbGliZGlyKSBcCi0gCQktV2wsLS12ZXJzaW9uLXNjcmlwdCwkPCwtLW5vLXVuZGVmaW5lZCBcCi0gCQktV2wsLS13aG9sZS1hcmNoaXZlICQoZmlsdGVyLW91dCAkPCwkXikgLVdsLC0tbm8td2hvbGUtYXJjaGl2ZVwKLS0JCS1sZGwgJChhcmdwX0xEQUREKSAkKHppcF9MSUJTKSAkKGxpYmR3X3NvX0xETElCUykKLSsJCS1sZGwgJChhcmdwX0xEQUREKSAkKHppcF9MSUJTKSAkKGxpYmR3X3NvX0xETElCUykgLWxmdHMgLWxhcmdwCi0gCUAkKHRleHRyZWxfY2hlY2spCi0gCSQoQU1fVl9hdClsbiAtZnMgJEAgJEAuJChWRVJTSU9OKQotIAotSW5kZXg6IGVsZnV0aWxzLTAuMTY0L2xpYmR3L2xpYmR3X2FsbG9jLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbGZ1dGlscy0wLjE2NC5vcmlnL2xpYmR3L2xpYmR3X2FsbG9jLmMKLSsrKyBlbGZ1dGlscy0wLjE2NC9saWJkdy9saWJkd19hbGxvYy5jCi1AQCAtMzEsMTEgKzMxLDEyIEBACi0gIyBpbmNsdWRlIDxjb25maWcuaD4KLSAjZW5kaWYKLSAKLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLSAjaW5jbHVkZSAibGliZHdQLmgiCi0rI2luY2x1ZGUgInN5c3RlbS5oIgotIAotIAotIHZvaWQgKgotSW5kZXg6IGVsZnV0aWxzLTAuMTY0L2xpYmR3ZmwvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbGZ1dGlscy0wLjE2NC5vcmlnL2xpYmR3ZmwvTWFrZWZpbGUuYW0KLSsrKyBlbGZ1dGlscy0wLjE2NC9saWJkd2ZsL01ha2VmaWxlLmFtCi1AQCAtODYsNiArODYsOCBAQCBsaWJlbGYgPSAuLi9saWJlbGYvbGliZWxmLnNvCi0gbGliZWJsID0gLi4vbGliZWJsL2xpYmVibC5hCi0gbGliZXUgPSAuLi9saWIvbGliZXUuYQotIAotK0xEQUREID0gLWxmdHMKLSsKLSBsaWJkd2ZsX3BpY19hX1NPVVJDRVMgPQotIGFtX2xpYmR3ZmxfcGljX2FfT0JKRUNUUyA9ICQobGliZHdmbF9hX1NPVVJDRVM6LmM9Lm9zKQotIAotSW5kZXg6IGVsZnV0aWxzLTAuMTY0L2xpYmR3ZmwvZHdmbF9idWlsZF9pZF9maW5kX2VsZi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZWxmdXRpbHMtMC4xNjQub3JpZy9saWJkd2ZsL2R3ZmxfYnVpbGRfaWRfZmluZF9lbGYuYwotKysrIGVsZnV0aWxzLTAuMTY0L2xpYmR3ZmwvZHdmbF9idWlsZF9pZF9maW5kX2VsZi5jCi1AQCAtMjcsNiArMjcsNyBAQAotICAgIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0gCi0gI2luY2x1ZGUgImxpYmR3ZmxQLmgiCi0rI2luY2x1ZGUgInN5c3RlbS5oIgotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLUBAIC05NCw3ICs5NSw3IEBAIF9fbGliZHdmbF9vcGVuX2J5X2J1aWxkX2lkIChEd2ZsX01vZHVsZQotIAl7Ci0gCSAgaWYgKCpmaWxlX25hbWUgIT0gTlVMTCkKLSAJICAgIGZyZWUgKCpmaWxlX25hbWUpOwotLQkgICpmaWxlX25hbWUgPSBjYW5vbmljYWxpemVfZmlsZV9uYW1lIChuYW1lKTsKLSsJICAqZmlsZV9uYW1lID0gcmVhbHBhdGggKG5hbWUsIE5VTEwpOwotIAkgIGlmICgqZmlsZV9uYW1lID09IE5VTEwpCi0gCSAgICB7Ci0gCSAgICAgICpmaWxlX25hbWUgPSBuYW1lOwotSW5kZXg6IGVsZnV0aWxzLTAuMTY0L2xpYmR3ZmwvZHdmbF9lcnJvci5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZWxmdXRpbHMtMC4xNjQub3JpZy9saWJkd2ZsL2R3ZmxfZXJyb3IuYwotKysrIGVsZnV0aWxzLTAuMTY0L2xpYmR3ZmwvZHdmbF9lcnJvci5jCi1AQCAtMTQwLDYgKzE0MCw3IEBAIF9fbGliZHdmbF9zZXRlcnJubyAoRHdmbF9FcnJvciBlcnJvcikKLSBjb25zdCBjaGFyICoKLSBkd2ZsX2Vycm1zZyAoaW50IGVycm9yKQotIHsKLSsgIHN0YXRpYyBfX3RocmVhZCBjaGFyIHNbNjRdID0gIiI7Ci0gICBpZiAoZXJyb3IgPT0gMCB8fCBlcnJvciA9PSAtMSkKLSAgICAgewotICAgICAgIGludCBsYXN0X2Vycm9yID0gZ2xvYmFsX2Vycm9yOwotQEAgLTE1NCw3ICsxNTUsOCBAQCBkd2ZsX2Vycm1zZyAoaW50IGVycm9yKQotICAgc3dpdGNoIChlcnJvciAmfiAweGZmZmYpCi0gICAgIHsKLSAgICAgY2FzZSBPVEhFUl9FUlJPUiAoRVJSTk8pOgotLSAgICAgIHJldHVybiBzdHJlcnJvcl9yIChlcnJvciAmIDB4ZmZmZiwgImJhZCIsIDApOwotKyAgICAgIHN0cmVycm9yX3IgKGVycm9yICYgMHhmZmZmLCBzLCBzaXplb2YocykpOwotKyAgICAgIHJldHVybiBzOwotICAgICBjYXNlIE9USEVSX0VSUk9SIChMSUJFTEYpOgotICAgICAgIHJldHVybiBlbGZfZXJybXNnIChlcnJvciAmIDB4ZmZmZik7Ci0gICAgIGNhc2UgT1RIRVJfRVJST1IgKExJQkRXKToKLUluZGV4OiBlbGZ1dGlscy0wLjE2NC9saWJkd2ZsL2R3ZmxfbW9kdWxlX2dldGR3YXJmLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbGZ1dGlscy0wLjE2NC5vcmlnL2xpYmR3ZmwvZHdmbF9tb2R1bGVfZ2V0ZHdhcmYuYwotKysrIGVsZnV0aWxzLTAuMTY0L2xpYmR3ZmwvZHdmbF9tb2R1bGVfZ2V0ZHdhcmYuYwotQEAgLTMxLDYgKzMxLDcgQEAKLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotKyNpbmNsdWRlICJzeXN0ZW0uaCIKLSAjaW5jbHVkZSAiLi4vbGliZHcvbGliZHdQLmgiCS8qIERXQVJGX0VfKiB2YWx1ZXMgYXJlIGhlcmUuICAqLwotICNpbmNsdWRlICIuLi9saWJlbGYvbGliZWxmUC5oIgotIAotSW5kZXg6IGVsZnV0aWxzLTAuMTY0L2xpYmR3ZmwvZmluZC1kZWJ1Z2luZm8uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTY0Lm9yaWcvbGliZHdmbC9maW5kLWRlYnVnaW5mby5jCi0rKysgZWxmdXRpbHMtMC4xNjQvbGliZHdmbC9maW5kLWRlYnVnaW5mby5jCi1AQCAtMzcyLDcgKzM3Miw3IEBAIGR3Zmxfc3RhbmRhcmRfZmluZF9kZWJ1Z2luZm8gKER3ZmxfTW9kdWwKLSAgICAgICAvKiBJZiBGSUxFX05BTUUgaXMgYSBzeW1saW5rLCB0aGUgZGVidWcgZmlsZSBtaWdodCBiZSBhc3NvY2lhdGVkCi0gCSB3aXRoIHRoZSBzeW1saW5rIHRhcmdldCBuYW1lIGluc3RlYWQuICAqLwotIAotLSAgICAgIGNoYXIgKmNhbm9uID0gY2Fub25pY2FsaXplX2ZpbGVfbmFtZSAoZmlsZV9uYW1lKTsKLSsgICAgICBjaGFyICpjYW5vbiA9IHJlYWxwYXRoIChmaWxlX25hbWUsIE5VTEwpOwotICAgICAgIGlmIChjYW5vbiAhPSBOVUxMICYmIHN0cmNtcCAoZmlsZV9uYW1lLCBjYW5vbikpCi0gCWZkID0gZmluZF9kZWJ1Z2luZm9faW5fcGF0aCAobW9kLCBjYW5vbiwKLSAJCQkJICAgICBkZWJ1Z2xpbmtfZmlsZSwgZGVidWdsaW5rX2NyYywKLUluZGV4OiBlbGZ1dGlscy0wLjE2NC9saWJkd2ZsL2xpYmR3ZmxfY3JjMzJfZmlsZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZWxmdXRpbHMtMC4xNjQub3JpZy9saWJkd2ZsL2xpYmR3ZmxfY3JjMzJfZmlsZS5jCi0rKysgZWxmdXRpbHMtMC4xNjQvbGliZHdmbC9saWJkd2ZsX2NyYzMyX2ZpbGUuYwotQEAgLTMxLDYgKzMxLDE2IEBACi0gCi0gI2RlZmluZSBjcmMzMl9maWxlIGF0dHJpYnV0ZV9oaWRkZW4gX19saWJkd2ZsX2NyYzMyX2ZpbGUKLSAjZGVmaW5lIGNyYzMyIF9fbGliZHdmbF9jcmMzMgotKwotKyNpZm5kZWYgVEVNUF9GQUlMVVJFX1JFVFJZCi0rI2RlZmluZSBURU1QX0ZBSUxVUkVfUkVUUlkoZXhwcmVzc2lvbikgXAotKyAgKF9fZXh0ZW5zaW9uX18JCQkJCQkJICAgICAgXAotKyAgICAoeyBsb25nIGludCBfX3Jlc3VsdDsJCQkJCQkgICAgICBcCi0rICAgICAgIGRvIF9fcmVzdWx0ID0gKGxvbmcgaW50KSAoZXhwcmVzc2lvbik7CQkJCSAgICAgIFwKLSsgICAgICAgd2hpbGUgKF9fcmVzdWx0ID09IC0xTCAmJiBlcnJubyA9PSBFSU5UUik7CQkJICAgICAgXAotKyAgICAgICBfX3Jlc3VsdDsgfSkpCi0rI2VuZGlmCi0rCi0gI2RlZmluZSBMSUJfU1lTVEVNX0gJMQotICNpbmNsdWRlIDxsaWJkd2ZsUC5oPgotICNpbmNsdWRlICIuLi9saWIvY3JjMzJfZmlsZS5jIgotSW5kZXg6IGVsZnV0aWxzLTAuMTY0L2xpYmR3ZmwvbGludXgta2VybmVsLW1vZHVsZXMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTY0Lm9yaWcvbGliZHdmbC9saW51eC1rZXJuZWwtbW9kdWxlcy5jCi0rKysgZWxmdXRpbHMtMC4xNjQvbGliZHdmbC9saW51eC1rZXJuZWwtbW9kdWxlcy5jCi1AQCAtMzQsNiArMzQsNyBAQAotICNpbmNsdWRlIDxjb25maWcuaD4KLSAKLSAjaW5jbHVkZSAibGliZHdmbFAuaCIKLSsjaW5jbHVkZSAic3lzdGVtLmgiCi0gI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci1JbmRleDogZWxmdXRpbHMtMC4xNjQvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbGZ1dGlscy0wLjE2NC5vcmlnL2xpYmVibC9lYmxvcGVuYmFja2VuZC5jCi0rKysgZWxmdXRpbHMtMC4xNjQvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMKLUBAIC0zMiw3ICszMiw3IEBACi0gCi0gI2luY2x1ZGUgPGFzc2VydC5oPgotICNpbmNsdWRlIDxkbGZjbi5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8bGliZWxmUC5oPgotICNpbmNsdWRlIDxkd2FyZi5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLUluZGV4OiBlbGZ1dGlscy0wLjE2NC9saWJlYmwvZWJsd3N0cnRhYi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZWxmdXRpbHMtMC4xNjQub3JpZy9saWJlYmwvZWJsd3N0cnRhYi5jCi0rKysgZWxmdXRpbHMtMC4xNjQvbGliZWJsL2VibHdzdHJ0YWIuYwotQEAgLTMwNSw3ICszMDUsNyBAQCBjb3B5c3RyaW5ncyAoc3RydWN0IEVibF9XU3RyZW50ICpub2RlcCwKLSAKLSAgIC8qIFByb2Nlc3MgdGhlIGN1cnJlbnQgbm9kZS4gICovCi0gICBub2RlcC0+b2Zmc2V0ID0gKm9mZnNldHA7Ci0tICAqZnJlZXAgPSB3bWVtcGNweSAoKmZyZWVwLCBub2RlcC0+c3RyaW5nLCBub2RlcC0+bGVuKTsKLSsgICpmcmVlcCA9IHdtZW1jcHkgKCpmcmVlcCwgbm9kZXAtPnN0cmluZywgbm9kZXAtPmxlbikgKyBub2RlcC0+bGVuOwotICAgKm9mZnNldHAgKz0gbm9kZXAtPmxlbiAqIHNpemVvZiAod2NoYXJfdCk7Ci0gCi0gICBmb3IgKHN1YnMgPSBub2RlcC0+bmV4dDsgc3VicyAhPSBOVUxMOyBzdWJzID0gc3Vicy0+bmV4dCkKLUluZGV4OiBlbGZ1dGlscy0wLjE2NC9saWJlbGYvZWxmLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbGZ1dGlscy0wLjE2NC5vcmlnL2xpYmVsZi9lbGYuaAotKysrIGVsZnV0aWxzLTAuMTY0L2xpYmVsZi9lbGYuaAotQEAgLTIxLDcgKzIxLDkgQEAKLSAKLSAjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSAKLS1fX0JFR0lOX0RFQ0xTCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rZXh0ZXJuICJDIiB7Ci0rI2VuZGlmCi0gCi0gLyogU3RhbmRhcmQgRUxGIHR5cGVzLiAgKi8KLSAKLUBAIC0zNTUyLDcgKzM1NTQsOCBAQCBlbnVtCi0gCi0gI2RlZmluZSBSX1RJTEVHWF9OVU0JCTEzMAotIAotLQotLV9fRU5EX0RFQ0xTCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rfQotKyNlbmRpZgotIAotICNlbmRpZgkvKiBlbGYuaCAqLwotSW5kZXg6IGVsZnV0aWxzLTAuMTY0L2xpYmVsZi9saWJlbGYuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTY0Lm9yaWcvbGliZWxmL2xpYmVsZi5oCi0rKysgZWxmdXRpbHMtMC4xNjQvbGliZWxmL2xpYmVsZi5oCi1AQCAtMjksNiArMjksNyBAQAotICNpZm5kZWYgX0xJQkVMRl9ICi0gI2RlZmluZSBfTElCRUxGX0ggMQotIAotKyNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxzdGRpbnQuaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gCi1JbmRleDogZWxmdXRpbHMtMC4xNjQvbGliZWxmL2xpYmVsZlAuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTY0Lm9yaWcvbGliZWxmL2xpYmVsZlAuaAotKysrIGVsZnV0aWxzLTAuMTY0L2xpYmVsZi9saWJlbGZQLmgKLUBAIC0zNiw2ICszNiw3IEBACi0gCi0gI2luY2x1ZGUgPGFyLmg+Ci0gI2luY2x1ZGUgPGdlbGYuaD4KLSsjaW5jbHVkZSA8bGliZWxmLmg+Ci0gCi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPHN0ZGludC5oPgotSW5kZXg6IGVsZnV0aWxzLTAuMTY0L3NyYy9hZGRyMmxpbmUuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTY0Lm9yaWcvc3JjL2FkZHIybGluZS5jCi0rKysgZWxmdXRpbHMtMC4xNjQvc3JjL2FkZHIybGluZS5jCi1AQCAtMjMsNyArMjMsNyBAQAotICNpbmNsdWRlIDxhcmdwLmg+Ci0gI2luY2x1ZGUgPGFzc2VydC5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSAjaW5jbHVkZSA8bGliZHdmbC5oPgotSW5kZXg6IGVsZnV0aWxzLTAuMTY0L3NyYy9hci5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZWxmdXRpbHMtMC4xNjQub3JpZy9zcmMvYXIuYwotKysrIGVsZnV0aWxzLTAuMTY0L3NyYy9hci5jCi1AQCAtMjIsNyArMjIsNyBAQAotIAotICNpbmNsdWRlIDxhcmdwLmg+Ci0gI2luY2x1ZGUgPGFzc2VydC5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8Z2VsZi5oPgotICNpbmNsdWRlIDxsaWJpbnRsLmg+Ci1JbmRleDogZWxmdXRpbHMtMC4xNjQvc3JjL2FybGliLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbGZ1dGlscy0wLjE2NC5vcmlnL3NyYy9hcmxpYi5jCi0rKysgZWxmdXRpbHMtMC4xNjQvc3JjL2FybGliLmMKLUBAIC0yMSw3ICsyMSw3IEBACi0gI2VuZGlmCi0gCi0gI2luY2x1ZGUgPGFzc2VydC5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8Z2VsZi5oPgotICNpbmNsdWRlIDxsaWJpbnRsLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci1JbmRleDogZWxmdXRpbHMtMC4xNjQvc3JjL2FybGliMi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZWxmdXRpbHMtMC4xNjQub3JpZy9zcmMvYXJsaWIyLmMKLSsrKyBlbGZ1dGlscy0wLjE2NC9zcmMvYXJsaWIyLmMKLUBAIC0yMCw3ICsyMCw3IEBACi0gIyBpbmNsdWRlIDxjb25maWcuaD4KLSAjZW5kaWYKLSAKLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGxpYmludGwuaD4KLSAjaW5jbHVkZSA8bGltaXRzLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotSW5kZXg6IGVsZnV0aWxzLTAuMTY0L3NyYy9lbGZjbXAuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTY0Lm9yaWcvc3JjL2VsZmNtcC5jCi0rKysgZWxmdXRpbHMtMC4xNjQvc3JjL2VsZmNtcC5jCi1AQCAtMjMsNyArMjMsNyBAQAotICNpbmNsdWRlIDxhcmdwLmg+Ci0gI2luY2x1ZGUgPGFzc2VydC5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8bG9jYWxlLmg+Ci0gI2luY2x1ZGUgPGxpYmludGwuaD4KLUluZGV4OiBlbGZ1dGlscy0wLjE2NC9zcmMvZWxmbGludC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZWxmdXRpbHMtMC4xNjQub3JpZy9zcmMvZWxmbGludC5jCi0rKysgZWxmdXRpbHMtMC4xNjQvc3JjL2VsZmxpbnQuYwotQEAgLTI0LDcgKzI0LDcgQEAKLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0gI2luY2x1ZGUgPGJ5dGVzd2FwLmg+Ci0gI2luY2x1ZGUgPGVuZGlhbi5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8Z2VsZi5oPgotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotSW5kZXg6IGVsZnV0aWxzLTAuMTY0L3NyYy9maW5kdGV4dHJlbC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZWxmdXRpbHMtMC4xNjQub3JpZy9zcmMvZmluZHRleHRyZWwuYwotKysrIGVsZnV0aWxzLTAuMTY0L3NyYy9maW5kdGV4dHJlbC5jCi1AQCAtMjMsNyArMjMsNyBAQAotICNpbmNsdWRlIDxhcmdwLmg+Ci0gI2luY2x1ZGUgPGFzc2VydC5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8Z2VsZi5oPgotICNpbmNsdWRlIDxsaWJkdy5oPgotSW5kZXg6IGVsZnV0aWxzLTAuMTY0L3NyYy9pMzg2X2xkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbGZ1dGlscy0wLjE2NC5vcmlnL3NyYy9pMzg2X2xkLmMKLSsrKyBlbGZ1dGlscy0wLjE2NC9zcmMvaTM4Nl9sZC5jCi1AQCAtMjAsNyArMjAsNyBAQAotICNlbmRpZgotIAotICNpbmNsdWRlIDxhc3NlcnQuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGxpYmludGwuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotSW5kZXg6IGVsZnV0aWxzLTAuMTY0L3NyYy9sZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZWxmdXRpbHMtMC4xNjQub3JpZy9zcmMvbGQuYwotKysrIGVsZnV0aWxzLTAuMTY0L3NyYy9sZC5jCi1AQCAtMjEsNyArMjEsNyBAQAotIAotICNpbmNsdWRlIDxhcmdwLmg+Ci0gI2luY2x1ZGUgPGFzc2VydC5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8bGliZWxmLmg+Ci0gI2luY2x1ZGUgPGxpYmludGwuaD4KLUluZGV4OiBlbGZ1dGlscy0wLjE2NC9zcmMvbGRnZW5lcmljLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbGZ1dGlscy0wLjE2NC5vcmlnL3NyYy9sZGdlbmVyaWMuYwotKysrIGVsZnV0aWxzLTAuMTY0L3NyYy9sZGdlbmVyaWMuYwotQEAgLTIzLDcgKzIzLDcgQEAKLSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSAjaW5jbHVkZSA8ZGxmY24uaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGZubWF0Y2guaD4KLSAjaW5jbHVkZSA8Z2VsZi5oPgotSW5kZXg6IGVsZnV0aWxzLTAuMTY0L3NyYy9sZGxleC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZWxmdXRpbHMtMC4xNjQub3JpZy9zcmMvbGRsZXguYwotKysrIGVsZnV0aWxzLTAuMTY0L3NyYy9sZGxleC5jCi1AQCAtMTA5OSw3ICsxMDk5LDcgQEAgY2hhciAqbGR0ZXh0OwotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSAjaW5jbHVkZSA8ZWxmLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICNpbmNsdWRlIDxsaWJpbnRsLmg+Ci0gI2luY2x1ZGUgPHN0ZGJvb2wuaD4KLUluZGV4OiBlbGZ1dGlscy0wLjE2NC9zcmMvbGRzY3JpcHQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTY0Lm9yaWcvc3JjL2xkc2NyaXB0LmMKLSsrKyBlbGZ1dGlscy0wLjE2NC9zcmMvbGRzY3JpcHQuYwotQEAgLTk1LDcgKzk1LDcgQEAKLSAjZW5kaWYKLSAKLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxsaWJpbnRsLmg+Ci0gI2luY2x1ZGUgPHN0ZGJvb2wuaD4KLSAjaW5jbHVkZSA8c3RkaW50Lmg+Ci1JbmRleDogZWxmdXRpbHMtMC4xNjQvc3JjL25tLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbGZ1dGlscy0wLjE2NC5vcmlnL3NyYy9ubS5jCi0rKysgZWxmdXRpbHMtMC4xNjQvc3JjL25tLmMKLUBAIC0yNiw3ICsyNiw3IEBACi0gI2luY2x1ZGUgPGN0eXBlLmg+Ci0gI2luY2x1ZGUgPGR3YXJmLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxnZWxmLmg+Ci0gI2luY2x1ZGUgPGludHR5cGVzLmg+Ci1JbmRleDogZWxmdXRpbHMtMC4xNjQvc3JjL29iamR1bXAuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTY0Lm9yaWcvc3JjL29iamR1bXAuYwotKysrIGVsZnV0aWxzLTAuMTY0L3NyYy9vYmpkdW1wLmMKLUBAIC0yMSw3ICsyMSw3IEBACi0gI2VuZGlmCi0gCi0gI2luY2x1ZGUgPGFyZ3AuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0gI2luY2x1ZGUgPGxpYmludGwuaD4KLUluZGV4OiBlbGZ1dGlscy0wLjE2NC9zcmMvcmFubGliLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbGZ1dGlscy0wLjE2NC5vcmlnL3NyYy9yYW5saWIuYwotKysrIGVsZnV0aWxzLTAuMTY0L3NyYy9yYW5saWIuYwotQEAgLTI0LDcgKzI0LDcgQEAKLSAjaW5jbHVkZSA8YXJncC5oPgotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGdlbGYuaD4KLSAjaW5jbHVkZSA8bGliaW50bC5oPgotSW5kZXg6IGVsZnV0aWxzLTAuMTY0L3NyYy9yZWFkZWxmLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbGZ1dGlscy0wLjE2NC5vcmlnL3NyYy9yZWFkZWxmLmMKLSsrKyBlbGZ1dGlscy0wLjE2NC9zcmMvcmVhZGVsZi5jCi1AQCAtMjUsNyArMjUsNyBAQAotICNpbmNsdWRlIDxjdHlwZS5oPgotICNpbmNsdWRlIDxkd2FyZi5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8Z2VsZi5oPgotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotSW5kZXg6IGVsZnV0aWxzLTAuMTY0L3NyYy9zaXplLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbGZ1dGlscy0wLjE2NC5vcmlnL3NyYy9zaXplLmMKLSsrKyBlbGZ1dGlscy0wLjE2NC9zcmMvc2l6ZS5jCi1AQCAtMjEsNyArMjEsNyBAQAotICNlbmRpZgotIAotICNpbmNsdWRlIDxhcmdwLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxnZWxmLmg+Ci0gI2luY2x1ZGUgPGludHR5cGVzLmg+Ci1JbmRleDogZWxmdXRpbHMtMC4xNjQvc3JjL3N0YWNrLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbGZ1dGlscy0wLjE2NC5vcmlnL3NyYy9zdGFjay5jCi0rKysgZWxmdXRpbHMtMC4xNjQvc3JjL3N0YWNrLmMKLUBAIC0xOCw3ICsxOCw3IEBACi0gI2luY2x1ZGUgPGNvbmZpZy5oPgotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8YXJncC5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci1JbmRleDogZWxmdXRpbHMtMC4xNjQvc3JjL3N0cmluZ3MuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTY0Lm9yaWcvc3JjL3N0cmluZ3MuYwotKysrIGVsZnV0aWxzLTAuMTY0L3NyYy9zdHJpbmdzLmMKLUBAIC0yNSw3ICsyNSw3IEBACi0gI2luY2x1ZGUgPGN0eXBlLmg+Ci0gI2luY2x1ZGUgPGVuZGlhbi5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8Z2VsZi5oPgotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotSW5kZXg6IGVsZnV0aWxzLTAuMTY0L3NyYy9zdHJpcC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZWxmdXRpbHMtMC4xNjQub3JpZy9zcmMvc3RyaXAuYwotKysrIGVsZnV0aWxzLTAuMTY0L3NyYy9zdHJpcC5jCi1AQCAtMjQsNyArMjQsNyBAQAotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8Ynl0ZXN3YXAuaD4KLSAjaW5jbHVkZSA8ZW5kaWFuLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxnZWxmLmg+Ci0gI2luY2x1ZGUgPGxpYmVsZi5oPgotSW5kZXg6IGVsZnV0aWxzLTAuMTY0L3NyYy91bnN0cmlwLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbGZ1dGlscy0wLjE2NC5vcmlnL3NyYy91bnN0cmlwLmMKLSsrKyBlbGZ1dGlscy0wLjE2NC9zcmMvdW5zdHJpcC5jCi1AQCAtMzEsNyArMzEsNyBAQAotICNpbmNsdWRlIDxhcmdwLmg+Ci0gI2luY2x1ZGUgPGFzc2VydC5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8Zm5tYXRjaC5oPgotICNpbmNsdWRlIDxsaWJpbnRsLmg+Ci1JbmRleDogZWxmdXRpbHMtMC4xNjQvdGVzdHMvYWRkcnNjb3Blcy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZWxmdXRpbHMtMC4xNjQub3JpZy90ZXN0cy9hZGRyc2NvcGVzLmMKLSsrKyBlbGZ1dGlscy0wLjE2NC90ZXN0cy9hZGRyc2NvcGVzLmMKLUBAIC0yNSw3ICsyNSw3IEBACi0gI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAKLSAKLUluZGV4OiBlbGZ1dGlscy0wLjE2NC90ZXN0cy9hbGxyZWdzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbGZ1dGlscy0wLjE2NC5vcmlnL3Rlc3RzL2FsbHJlZ3MuYwotKysrIGVsZnV0aWxzLTAuMTY0L3Rlc3RzL2FsbHJlZ3MuYwotQEAgLTIxLDcgKzIxLDcgQEAKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8bG9jYWxlLmg+Ci0gI2luY2x1ZGUgPGFyZ3AuaD4KLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci1JbmRleDogZWxmdXRpbHMtMC4xNjQvdGVzdHMvYmFja3RyYWNlLWRhdGEuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTY0Lm9yaWcvdGVzdHMvYmFja3RyYWNlLWRhdGEuYwotKysrIGVsZnV0aWxzLTAuMTY0L3Rlc3RzL2JhY2t0cmFjZS1kYXRhLmMKLUBAIC0yNyw3ICsyNyw3IEBACi0gI2luY2x1ZGUgPGRpcmVudC5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlIDxkd2FyZi5oPgotICNpZiBkZWZpbmVkKF9feDg2XzY0X18pICYmIGRlZmluZWQoX19saW51eF9fKQotSW5kZXg6IGVsZnV0aWxzLTAuMTY0L3Rlc3RzL2JhY2t0cmFjZS1kd2FyZi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZWxmdXRpbHMtMC4xNjQub3JpZy90ZXN0cy9iYWNrdHJhY2UtZHdhcmYuYwotKysrIGVsZnV0aWxzLTAuMTY0L3Rlc3RzL2JhY2t0cmFjZS1kd2FyZi5jCi1AQCAtMjIsNyArMjIsNyBAQAotICNpbmNsdWRlIDxzdGRpb19leHQuaD4KLSAjaW5jbHVkZSA8bG9jYWxlLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLUluZGV4OiBlbGZ1dGlscy0wLjE2NC90ZXN0cy9iYWNrdHJhY2UuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTY0Lm9yaWcvdGVzdHMvYmFja3RyYWNlLmMKLSsrKyBlbGZ1dGlscy0wLjE2NC90ZXN0cy9iYWNrdHJhY2UuYwotQEAgLTI0LDcgKzI0LDcgQEAKLSAjaW5jbHVkZSA8ZGlyZW50Lmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPGR3YXJmLmg+Ci0gI2lmZGVmIF9fbGludXhfXwotSW5kZXg6IGVsZnV0aWxzLTAuMTY0L3Rlc3RzL2J1aWxkaWQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTY0Lm9yaWcvdGVzdHMvYnVpbGRpZC5jCi0rKysgZWxmdXRpbHMtMC4xNjQvdGVzdHMvYnVpbGRpZC5jCi1AQCAtMjMsNyArMjMsNyBAQAotICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihlbGYpCi0gI2luY2x1ZGUgRUxGVVRJTFNfSEVBREVSKGR3ZWxmKQotICNpbmNsdWRlIDxzdGRpby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLUluZGV4OiBlbGZ1dGlscy0wLjE2NC90ZXN0cy9kZWJ1Z2FsdGxpbmsuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTY0Lm9yaWcvdGVzdHMvZGVidWdhbHRsaW5rLmMKLSsrKyBlbGZ1dGlscy0wLjE2NC90ZXN0cy9kZWJ1Z2FsdGxpbmsuYwotQEAgLTIzLDcgKzIzLDcgQEAKLSAjaW5jbHVkZSBFTEZVVElMU19IRUFERVIoZHcpCi0gI2luY2x1ZGUgRUxGVVRJTFNfSEVBREVSKGR3ZWxmKQotICNpbmNsdWRlIDxzdGRpby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLUluZGV4OiBlbGZ1dGlscy0wLjE2NC90ZXN0cy9kZWJ1Z2xpbmsuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTY0Lm9yaWcvdGVzdHMvZGVidWdsaW5rLmMKLSsrKyBlbGZ1dGlscy0wLjE2NC90ZXN0cy9kZWJ1Z2xpbmsuYwotQEAgLTIxLDcgKzIxLDcgQEAKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSBFTEZVVElMU19IRUFERVIoZHdlbGYpCi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotSW5kZXg6IGVsZnV0aWxzLTAuMTY0L3Rlc3RzL2RlbGV0ZWQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTY0Lm9yaWcvdGVzdHMvZGVsZXRlZC5jCi0rKysgZWxmdXRpbHMtMC4xNjQvdGVzdHMvZGVsZXRlZC5jCi1AQCAtMjEsNyArMjEsNyBAQAotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotICNpZmRlZiBfX2xpbnV4X18KLSAjaW5jbHVkZSA8c3lzL3ByY3RsLmg+Ci1JbmRleDogZWxmdXRpbHMtMC4xNjQvdGVzdHMvZHdmbC1hZGRyLXNlY3QuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTY0Lm9yaWcvdGVzdHMvZHdmbC1hZGRyLXNlY3QuYwotKysrIGVsZnV0aWxzLTAuMTY0L3Rlc3RzL2R3ZmwtYWRkci1zZWN0LmMKLUBAIC0yMyw3ICsyMyw3IEBACi0gI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAjaW5jbHVkZSA8YXJncC5oPgotICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihkd2ZsKQotSW5kZXg6IGVsZnV0aWxzLTAuMTY0L3Rlc3RzL2R3ZmwtYnVnLWFkZHItb3ZlcmZsb3cuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTY0Lm9yaWcvdGVzdHMvZHdmbC1idWctYWRkci1vdmVyZmxvdy5jCi0rKysgZWxmdXRpbHMtMC4xNjQvdGVzdHMvZHdmbC1idWctYWRkci1vdmVyZmxvdy5jCi1AQCAtMjAsNyArMjAsNyBAQAotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdGRpb19leHQuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGxvY2FsZS5oPgotICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihkd2ZsKQotIAotSW5kZXg6IGVsZnV0aWxzLTAuMTY0L3Rlc3RzL2R3ZmwtYnVnLWZkLWxlYWsuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTY0Lm9yaWcvdGVzdHMvZHdmbC1idWctZmQtbGVhay5jCi0rKysgZWxmdXRpbHMtMC4xNjQvdGVzdHMvZHdmbC1idWctZmQtbGVhay5jCi1AQCAtMjQsNyArMjQsNyBAQAotICNpbmNsdWRlIDxkaXJlbnQuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8ZHdhcmYuaD4KLSAjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+Ci1JbmRleDogZWxmdXRpbHMtMC4xNjQvdGVzdHMvZHdmbC1idWctZ2V0bW9kdWxlcy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZWxmdXRpbHMtMC4xNjQub3JpZy90ZXN0cy9kd2ZsLWJ1Zy1nZXRtb2R1bGVzLmMKLSsrKyBlbGZ1dGlscy0wLjE2NC90ZXN0cy9kd2ZsLWJ1Zy1nZXRtb2R1bGVzLmMKLUBAIC0xOCw3ICsxOCw3IEBACi0gI2luY2x1ZGUgPGNvbmZpZy5oPgotICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihkd2ZsKQotIAotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAKLSBzdGF0aWMgY29uc3QgRHdmbF9DYWxsYmFja3MgY2FsbGJhY2tzID0KLSAgIHsKLUluZGV4OiBlbGZ1dGlscy0wLjE2NC90ZXN0cy9kd2ZsLXJlcG9ydC1lbGYtYWxpZ24uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTY0Lm9yaWcvdGVzdHMvZHdmbC1yZXBvcnQtZWxmLWFsaWduLmMKLSsrKyBlbGZ1dGlscy0wLjE2NC90ZXN0cy9kd2ZsLXJlcG9ydC1lbGYtYWxpZ24uYwotQEAgLTIwLDcgKzIwLDcgQEAKLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotSW5kZXg6IGVsZnV0aWxzLTAuMTY0L3Rlc3RzL2R3ZmxsaW5lcy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZWxmdXRpbHMtMC4xNjQub3JpZy90ZXN0cy9kd2ZsbGluZXMuYwotKysrIGVsZnV0aWxzLTAuMTY0L3Rlc3RzL2R3ZmxsaW5lcy5jCi1AQCAtMjcsNyArMjcsNyBAQAotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotIAotIGludAotIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCi1JbmRleDogZWxmdXRpbHMtMC4xNjQvdGVzdHMvZHdmbG1vZHRlc3QuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTY0Lm9yaWcvdGVzdHMvZHdmbG1vZHRlc3QuYwotKysrIGVsZnV0aWxzLTAuMTY0L3Rlc3RzL2R3Zmxtb2R0ZXN0LmMKLUBAIC0yMyw3ICsyMyw3IEBACi0gI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAjaW5jbHVkZSA8YXJncC5oPgotICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihkd2ZsKQotSW5kZXg6IGVsZnV0aWxzLTAuMTY0L3Rlc3RzL2R3ZmxzeW1zLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbGZ1dGlscy0wLjE2NC5vcmlnL3Rlc3RzL2R3ZmxzeW1zLmMKLSsrKyBlbGZ1dGlscy0wLjE2NC90ZXN0cy9kd2Zsc3ltcy5jCi1AQCAtMjUsNyArMjUsNyBAQAotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdGRpb19leHQuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAKLSBzdGF0aWMgY29uc3QgY2hhciAqCi1JbmRleDogZWxmdXRpbHMtMC4xNjQvdGVzdHMvZWFybHktb2Zmc2NuLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbGZ1dGlscy0wLjE2NC5vcmlnL3Rlc3RzL2Vhcmx5LW9mZnNjbi5jCi0rKysgZWxmdXRpbHMtMC4xNjQvdGVzdHMvZWFybHktb2Zmc2NuLmMKLUBAIC0xOSw3ICsxOSw3IEBACi0gI2VuZGlmCi0gCi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxnZWxmLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci1JbmRleDogZWxmdXRpbHMtMC4xNjQvdGVzdHMvZWNwLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbGZ1dGlscy0wLjE2NC5vcmlnL3Rlc3RzL2VjcC5jCi0rKysgZWxmdXRpbHMtMC4xNjQvdGVzdHMvZWNwLmMKLUBAIC0yMCw3ICsyMCw3IEBACi0gI2VuZGlmCi0gCi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxnZWxmLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotSW5kZXg6IGVsZnV0aWxzLTAuMTY0L3Rlc3RzL2ZpbmQtcHJvbG9ndWVzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbGZ1dGlscy0wLjE2NC5vcmlnL3Rlc3RzL2ZpbmQtcHJvbG9ndWVzLmMKLSsrKyBlbGZ1dGlscy0wLjE2NC90ZXN0cy9maW5kLXByb2xvZ3Vlcy5jCi1AQCAtMjUsNyArMjUsNyBAQAotICNpbmNsdWRlIDxzdGRpb19leHQuaD4KLSAjaW5jbHVkZSA8bG9jYWxlLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPGZubWF0Y2guaD4KLSAKLUluZGV4OiBlbGZ1dGlscy0wLjE2NC90ZXN0cy9mdW5jcmV0dmFsLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbGZ1dGlscy0wLjE2NC5vcmlnL3Rlc3RzL2Z1bmNyZXR2YWwuYwotKysrIGVsZnV0aWxzLTAuMTY0L3Rlc3RzL2Z1bmNyZXR2YWwuYwotQEAgLTI1LDcgKzI1LDcgQEAKLSAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+Ci0gI2luY2x1ZGUgPGxvY2FsZS5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxmbm1hdGNoLmg+Ci0gCi1JbmRleDogZWxmdXRpbHMtMC4xNjQvdGVzdHMvZnVuY3Njb3Blcy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZWxmdXRpbHMtMC4xNjQub3JpZy90ZXN0cy9mdW5jc2NvcGVzLmMKLSsrKyBlbGZ1dGlscy0wLjE2NC90ZXN0cy9mdW5jc2NvcGVzLmMKLUBAIC0yNSw3ICsyNSw3IEBACi0gI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8Zm5tYXRjaC5oPgotIAotSW5kZXg6IGVsZnV0aWxzLTAuMTY0L3Rlc3RzL2dldHNyY19kaWUuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTY0Lm9yaWcvdGVzdHMvZ2V0c3JjX2RpZS5jCi0rKysgZWxmdXRpbHMtMC4xNjQvdGVzdHMvZ2V0c3JjX2RpZS5jCi1AQCAtMTksNyArMTksNyBAQAotICNlbmRpZgotIAotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSAjaW5jbHVkZSA8bGliZWxmLmg+Ci1JbmRleDogZWxmdXRpbHMtMC4xNjQvdGVzdHMvbGluZTJhZGRyLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbGZ1dGlscy0wLjE2NC5vcmlnL3Rlc3RzL2xpbmUyYWRkci5jCi0rKysgZWxmdXRpbHMtMC4xNjQvdGVzdHMvbGluZTJhZGRyLmMKLUBAIC0yNiw3ICsyNiw3IEBACi0gI2luY2x1ZGUgPGxvY2FsZS5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotIAotIAotIHN0YXRpYyB2b2lkCi1JbmRleDogZWxmdXRpbHMtMC4xNjQvdGVzdHMvbG93X2hpZ2hfcGMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTY0Lm9yaWcvdGVzdHMvbG93X2hpZ2hfcGMuYwotKysrIGVsZnV0aWxzLTAuMTY0L3Rlc3RzL2xvd19oaWdoX3BjLmMKLUBAIC0yNSw3ICsyNSw3IEBACi0gI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8Zm5tYXRjaC5oPgotIAotSW5kZXg6IGVsZnV0aWxzLTAuMTY0L3Rlc3RzL21kNS1zaGExLXRlc3QuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTY0Lm9yaWcvdGVzdHMvbWQ1LXNoYTEtdGVzdC5jCi0rKysgZWxmdXRpbHMtMC4xNjQvdGVzdHMvbWQ1LXNoYTEtdGVzdC5jCi1AQCAtMTksNyArMTksNyBAQAotICNlbmRpZgotIAotICNpbmNsdWRlIDxzdHJpbmcuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gCi0gI2luY2x1ZGUgIm1kNS5oIgotICNpbmNsdWRlICJzaGExLmgiCi1JbmRleDogZWxmdXRpbHMtMC4xNjQvdGVzdHMvcmR3cm1tYXAuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTY0Lm9yaWcvdGVzdHMvcmR3cm1tYXAuYwotKysrIGVsZnV0aWxzLTAuMTY0L3Rlc3RzL3Jkd3JtbWFwLmMKLUBAIC0xOSw3ICsxOSw3IEBACi0gI2VuZGlmCi0gCi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLUluZGV4OiBlbGZ1dGlscy0wLjE2NC90ZXN0cy9zYXJpZHguYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTY0Lm9yaWcvdGVzdHMvc2FyaWR4LmMKLSsrKyBlbGZ1dGlscy0wLjE2NC90ZXN0cy9zYXJpZHguYwotQEAgLTE3LDcgKzE3LDcgQEAKLSAKLSAjaW5jbHVkZSA8Y29uZmlnLmg+Ci0gCi0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxnZWxmLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci1JbmRleDogZWxmdXRpbHMtMC4xNjQvdGVzdHMvc2VjdGlvbmR1bXAuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTY0Lm9yaWcvdGVzdHMvc2VjdGlvbmR1bXAuYwotKysrIGVsZnV0aWxzLTAuMTY0L3Rlc3RzL3NlY3Rpb25kdW1wLmMKLUBAIC0xOCw3ICsxOCw3IEBACi0gI2luY2x1ZGUgPGNvbmZpZy5oPgotIAotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8Z2VsZi5oPgotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotSW5kZXg6IGVsZnV0aWxzLTAuMTY0L3Rlc3RzL3ZhcmxvY3MuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTY0Lm9yaWcvdGVzdHMvdmFybG9jcy5jCi0rKysgZWxmdXRpbHMtMC4xNjQvdGVzdHMvdmFybG9jcy5jCi1AQCAtMjUsNyArMjUsNyBAQAotICNpbmNsdWRlIDxkd2FyZi5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLUluZGV4OiBlbGZ1dGlscy0wLjE2NC90ZXN0cy92ZHNvc3ltcy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZWxmdXRpbHMtMC4xNjQub3JpZy90ZXN0cy92ZHNvc3ltcy5jCi0rKysgZWxmdXRpbHMtMC4xNjQvdGVzdHMvdmRzb3N5bXMuYwotQEAgLTE4LDcgKzE4LDcgQEAKLSAjaW5jbHVkZSA8Y29uZmlnLmg+Ci0gI2luY2x1ZGUgPGFzc2VydC5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci1JbmRleDogZWxmdXRpbHMtMC4xNjQvbGliZWxmL2VsZl9nZXRhcnN5bS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZWxmdXRpbHMtMC4xNjQub3JpZy9saWJlbGYvZWxmX2dldGFyc3ltLmMKLSsrKyBlbGZ1dGlscy0wLjE2NC9saWJlbGYvZWxmX2dldGFyc3ltLmMKLUBAIC0zMDIsNyArMzAyLDcgQEAgZWxmX2dldGFyc3ltIChFbGYgKmVsZiwgc2l6ZV90ICpwdHIpCi0gCQlhcnN5bVtjbnRdLmFzX29mZiA9ICgqdTMyKVtjbnRdOwotIAotIAkgICAgICBhcnN5bVtjbnRdLmFzX2hhc2ggPSBfZGxfZWxmX2hhc2ggKHN0cl9kYXRhKTsKLS0JICAgICAgc3RyX2RhdGEgPSByYXdtZW1jaHIgKHN0cl9kYXRhLCAnXDAnKSArIDE7Ci0rCSAgICAgIHN0cl9kYXRhID0gbWVtY2hyIChzdHJfZGF0YSwgJ1wwJywgU0laRV9NQVgpICsgMTsKLSAJICAgIH0KLSAKLSAJICAvKiBBdCB0aGUgZW5kIGEgc3BlY2lhbCBlbnRyeS4gICovCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY0L3VjbGliYy1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2NC91Y2xpYmMtc3VwcG9ydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTY2YjcwZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY0L3VjbGliYy1zdXBwb3J0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTI5ICswLDAgQEAKLUZyb20gM2RhZWMyZGQxMWEwNDk1NWY5NWU4ZjY1YTQ4ODIwMTAzZDg0ZGJlYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1bmxpbmcgWmhlbmcgPHpoZW5nanVubGluZ0BodWF3ZWkuY29tPgotRGF0ZTogVGh1LCA5IEFwciAyMDE1IDEyOjEyOjQ5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIHVjbGliYyBzdXBwb3J0IGZvciBlbGZ1dGlscyAwLjE2MQotCi1vbiB1Y2xpYmMgc3lzdGVtcyBsaWJpbnRsIGFuZCBsaWJ1YXJncCBhcmUgc2VwYXJhdGUgZnJvbSBsaWJjLgotc28gdGhleSBuZWVkIHRvIGJlIHNwZWNpZmllZCBvbiBjb21tYW5kbGluZSB3aGVuIHdlIHVzZSBwcm94eS1saWJpbnRsCi10aGVuIGxpYmludGwgaXMgYSBzdGF0aWMgYXJjaGl2ZSBzbyBpdCBzaG91bGQgYmUgbGlzdGVkIGxhc3Qgc2luY2UKLWVsZnV0aWxzIGRvZXMgbm90IHJlc3BlY3QgZGlzYWJsZS1ubHMgd2UgbmVlZCB0byBsaW5rIGluIGxpYmludGwKLQotV2UgYWRkIGEgbmV3IG9wdGlvbiAtLWVuYWJsZS11Y2xpYmMgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNvbnRyb2wKLXRoZSB1Y2xpYmMgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgZHVyaW5nIGJ1aWxkLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3VjbGliYyBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtPgotU2lnbmVkLW9mZi1ieTogSnVubGluZyBaaGVuZyA8emhlbmdqdW5saW5nQGh1YXdlaS5jb20+Ci1bSnVubGluZyBaaGVuZzoKLSAtIGFkanVzdCBjb250ZXh0Ci1dCi0tLS0KLSBjb25maWd1cmUuYWMgICAgICAgfCA4ICsrKysrKysrCi0gbGliY3B1L01ha2VmaWxlLmFtIHwgNCArKysrCi0gbGliZHcvTWFrZWZpbGUuYW0gIHwgNyArKysrKystCi0gbGliZWxmL01ha2VmaWxlLmFtIHwgNSArKysrKwotIDQgZmlsZXMgY2hhbmdlZCwgMjMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1JbmRleDogZWxmdXRpbHMtMC4xNjQvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZWxmdXRpbHMtMC4xNjQub3JpZy9jb25maWd1cmUuYWMKLSsrKyBlbGZ1dGlscy0wLjE2NC9jb25maWd1cmUuYWMKLUBAIC02Niw2ICs2NiwxNCBAQCBBU19JRihbdGVzdCAiJHVzZV9sb2NrcyIgPSB5ZXNdLAotIAotIEFIX1RFTVBMQVRFKFtVU0VfTE9DS1NdLCBbRGVmaW5lZCBpZiBsaWJyYXJpZXMgc2hvdWxkIGJlIHRocmVhZC1zYWZlLl0pCi0gCi0rQUNfQVJHX0VOQUJMRShbdWNsaWJjXSwKLStBU19IRUxQX1NUUklORyhbLS1lbmFibGUtdWNsaWJjXSwgW1VzZSB1Y2xpYmMgZm9yIHN5c3RlbSBsaWJyYXJpZXNdKSwKLSt1c2VfdWNsaWJjPXllcywgdXNlX3VjbGliYz1ubykKLStBTV9DT05ESVRJT05BTChVU0VfVUNMSUJDLCB0ZXN0ICIkdXNlX3VjbGliYyIgPSB5ZXMpCi0rQVNfSUYoW3Rlc3QgIiR1c2VfdWNsaWJjIiA9IHllc10sIFtBQ19ERUZJTkUoVVNFX1VDTElCQyldKQotKwotK0FIX1RFTVBMQVRFKFtVU0VfVUNMSUJDXSwgW0RlZmluZWQgaWYgdWNsaWJjIGxpYnJhcmllcyBhcmUgdXNlZC5dKQotKwotIEFDX1BST0dfQ0MKLSBBQ19QUk9HX1JBTkxJQgotIEFDX1BST0dfWUFDQwotQEAgLTI5MSwxOCArMjk5LDEzIEBAIEFDX0xJTktfSUZFTFNFKAotICkKLSAKLSBkbmwgSWYgb3VyIGxpYmMgZG9lc24ndCBwcm92aWRlIGFyZ3AsIHRoZW4gdGVzdCBmb3IgbGliYXJncAotLWlmIHRlc3QgIiRsaWJjX2hhc19hcmdwIiA9ICJmYWxzZSIgOyB0aGVuCi0tCUFDX01TR19XQVJOKCJsaWJjIGRvZXMgbm90IGhhdmUgYXJncCIpCi0tCUFDX0NIRUNLX0xJQihbYXJncF0sIFthcmdwX3BhcnNlXSwgW2hhdmVfYXJncD0idHJ1ZSJdLCBbaGF2ZV9hcmdwPSJmYWxzZSJdKQotLQotLQlpZiB0ZXN0ICIkaGF2ZV9hcmdwIiA9ICJmYWxzZSI7IHRoZW4KLS0JCUFDX01TR19FUlJPUigibm8gbGliYXJncCBmb3VuZCIpCi0tCWVsc2UKLS0JCWFyZ3BfTERBREQ9Ii1sYXJncCIKLS0JZmkKLS1lbHNlCi0tCWFyZ3BfTERBREQ9IiIKLS1maQotK0FTX0lGKFt0ZXN0ICJ4JGxpYmNfaGFzX2FyZ3AiID0gInhmYWxzZSJdLAotKwlbQUNfTVNHX1dBUk4oImxpYmMgZG9lcyBub3QgaGF2ZSBhcmdwIikKLSsJQUNfQ0hFQ0tfTElCKFthcmdwXSwgW2FyZ3BfcGFyc2VdLCBbaGF2ZV9hcmdwPSJ0cnVlIiBhcmdwX0xEQUREPSItbGFyZ3AiXSwgW2hhdmVfYXJncD0iZmFsc2UiXSldLCBbYXJncF9MREFERD0iIl0pCi0rCi0rQVNfSUYoW3Rlc3QgIngkbGliY19oYXNfYXJncCIgPSAieGZhbHNlIiAtYSAieCRoYXZlX2FyZ3AiID0gInhmYWxzZSJdLAotKwlBQ19DSEVDS19MSUIoW3VhcmdwXSwgW2FyZ3BfcGFyc2VdLCBbaGF2ZV91YXJncD0idHJ1ZSIgYXJncF9MREFERD0iLWx1YXJncCJdLCBbaGF2ZV91YXJncD0iZmFsc2UiXSldLCBbYXJncF9MREFERD0iIl0pCi0rCi0gQUNfU1VCU1QoW2FyZ3BfTERBRERdKQotIAotIGRubCBUaGUgZGlyZWN0b3JpZXMgd2l0aCBjb250ZW50LgotSW5kZXg6IGVsZnV0aWxzLTAuMTY0L2xpYmNwdS9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTY0Lm9yaWcvbGliY3B1L01ha2VmaWxlLmFtCi0rKysgZWxmdXRpbHMtMC4xNjQvbGliY3B1L01ha2VmaWxlLmFtCi1AQCAtODAsNiArODAsMTAgQEAgaTM4Nl9wYXJzZV9DRkxBR1MgPSAtRE5NTkVTPSJgd2MgLWwgPCBpMwotIGkzODZfbGV4Lm86IGkzODZfcGFyc2UuaAotIGkzODZfZ2VuZGlzX0xEQUREID0gJChsaWJldSkgLWxtCi0gCi0raWYgVVNFX1VDTElCQwotK2kzODZfZ2VuZGlzX0xEQUREICs9IC1saW50bAotK2VuZGlmCi0rCi0gaTM4Nl9wYXJzZS5oOiBpMzg2X3BhcnNlLmMgOwotIAotIEVYVFJBX0RJU1QgPSBkZWZzL2kzODYKLUluZGV4OiBlbGZ1dGlscy0wLjE2NC9saWJkdy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTY0Lm9yaWcvbGliZHcvTWFrZWZpbGUuYW0KLSsrKyBlbGZ1dGlscy0wLjE2NC9saWJkdy9NYWtlZmlsZS5hbQotQEAgLTEwMiw2ICsxMDIsMTEgQEAgZW5kaWYKLSBsaWJkd19waWNfYV9TT1VSQ0VTID0KLSBhbV9saWJkd19waWNfYV9PQkpFQ1RTID0gJChsaWJkd19hX1NPVVJDRVM6LmM9Lm9zKQotIAotK2xpYmR3X3NvX0xETElCUyA9Ci0raWYgVVNFX1VDTElCQwotK2xpYmR3X3NvX0xETElCUyArPSAtbGludGwKLStlbmRpZgotKwotIGxpYmR3X3NvX1NPVVJDRVMgPQotIGxpYmR3LnNvJChFWEVFWFQpOiAkKHNyY2RpcikvbGliZHcubWFwIGxpYmR3X3BpYy5hIC4uL2xpYmR3ZWxmL2xpYmR3ZWxmX3BpYy5hIFwKLSAJICAuLi9saWJkd2ZsL2xpYmR3ZmxfcGljLmEgLi4vbGliZWJsL2xpYmVibC5hIFwKLUBAIC0xMTIsNyArMTE3LDcgQEAgbGliZHcuc28kKEVYRUVYVCk6ICQoc3JjZGlyKS9saWJkdy5tYXAgbAotIAkJLVdsLC0tZW5hYmxlLW5ldy1kdGFncywtcnBhdGgsJChwa2dsaWJkaXIpIFwKLSAJCS1XbCwtLXZlcnNpb24tc2NyaXB0LCQ8LC0tbm8tdW5kZWZpbmVkIFwKLSAJCS1XbCwtLXdob2xlLWFyY2hpdmUgJChmaWx0ZXItb3V0ICQ8LCReKSAtV2wsLS1uby13aG9sZS1hcmNoaXZlXAotLQkJLWxkbCAkKGFyZ3BfTERBREQpICQoemlwX0xJQlMpCi0rCQktbGRsICQoYXJncF9MREFERCkgJCh6aXBfTElCUykgJChsaWJkd19zb19MRExJQlMpCi0gCUAkKHRleHRyZWxfY2hlY2spCi0gCSQoQU1fVl9hdClsbiAtZnMgJEAgJEAuJChWRVJTSU9OKQotIAotSW5kZXg6IGVsZnV0aWxzLTAuMTY0L2xpYmVsZi9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTY0Lm9yaWcvbGliZWxmL01ha2VmaWxlLmFtCi0rKysgZWxmdXRpbHMtMC4xNjQvbGliZWxmL01ha2VmaWxlLmFtCi1AQCAtOTMsNyArOTMsMTIgQEAgbGliZWxmX2FfU09VUkNFUyA9IGVsZl92ZXJzaW9uLmMgZWxmX2hhcwotIGxpYmVsZl9waWNfYV9TT1VSQ0VTID0KLSBhbV9saWJlbGZfcGljX2FfT0JKRUNUUyA9ICQobGliZWxmX2FfU09VUkNFUzouYz0ub3MpCi0gCi0rCi0gbGliZWxmX3NvX0xETElCUyA9Ci0raWYgVVNFX1VDTElCQwotK2xpYmVsZl9zb19MRExJQlMgKz0gLWxpbnRsCi0rZW5kaWYKLSsKLSBpZiBVU0VfTE9DS1MKLSBsaWJlbGZfc29fTERMSUJTICs9IC1scHRocmVhZAotIGVuZGlmCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY0LzAwMDEtSWdub3JlLWRpZmZlcmVuY2VzLWJldHdlZW4tbWlwcy1tYWNoaW5lLWlkZW50aWZpZXJzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2Ni8wMDAxLUlnbm9yZS1kaWZmZXJlbmNlcy1iZXR3ZWVuLW1pcHMtbWFjaGluZS1pZGVudGlmaWVycy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2NC8wMDAxLUlnbm9yZS1kaWZmZXJlbmNlcy1iZXR3ZWVuLW1pcHMtbWFjaGluZS1pZGVudGlmaWVycy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2Ni8wMDAxLUlnbm9yZS1kaWZmZXJlbmNlcy1iZXR3ZWVuLW1pcHMtbWFjaGluZS1pZGVudGlmaWVycy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2Ni8wMDAxLWJ1aWxkLVByb3ZpZGUtYWx0ZXJuYXRpdmVzLWZvci1nbGliYy1hc3N1bXB0aW9ucy1oZWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY2LzAwMDEtYnVpbGQtUHJvdmlkZS1hbHRlcm5hdGl2ZXMtZm9yLWdsaWJjLWFzc3VtcHRpb25zLWhlbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOGIzMWY2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2Ni8wMDAxLWJ1aWxkLVByb3ZpZGUtYWx0ZXJuYXRpdmVzLWZvci1nbGliYy1hc3N1bXB0aW9ucy1oZWwucGF0Y2gKQEAgLTAsMCArMSwxMTYzIEBACitGcm9tIDRiMGZlODBiMzk1MWYwNDRjMWMxYjE0ZDFkN2Y1ZjBiOGFiNjc1MDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAzMSBEZWMgMjAxNSAwNjozNTozNCArMDAwMAorU3ViamVjdDogW1BBVENIXSBidWlsZDogUHJvdmlkZSBhbHRlcm5hdGl2ZXMgZm9yIGdsaWJjIGFzc3VtcHRpb25zIGhlbHBzCisgY29tcGlsaW5nIGl0IG9uIG11c2wKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBNYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCisgbGliL2NvbG9yLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQorIGxpYi9jcmMzMl9maWxlLmMgICAgICAgICAgICAgICAgIHwgIDQgKysrLQorIGxpYi9maXhlZHNpemVoYXNoLmggICAgICAgICAgICAgIHwgIDQgKystLQorIGxpYi9zeXN0ZW0uaCAgICAgICAgICAgICAgICAgICAgIHwgMTEgKysrKysrKysrKysKKyBsaWIveG1hbGxvYy5jICAgICAgICAgICAgICAgICAgICB8ICAyICstCisgbGliYXNtL2FzbV9lbmQuYyAgICAgICAgICAgICAgICAgfCAgMiArLQorIGxpYmFzbS9hc21fbmV3c2NuLmMgICAgICAgICAgICAgIHwgIDIgKy0KKyBsaWJjcHUvaTM4Nl9nZW5kaXMuYyAgICAgICAgICAgICB8ICAyICstCisgbGliY3B1L2kzODZfbGV4LmMgICAgICAgICAgICAgICAgfCAgMiArLQorIGxpYmNwdS9pMzg2X3BhcnNlLmMgICAgICAgICAgICAgIHwgIDIgKy0KKyBsaWJkdy9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICB8ICAyICstCisgbGliZHcvbGliZHdfYWxsb2MuYyAgICAgICAgICAgICAgfCAgMyArKy0KKyBsaWJkd2ZsL01ha2VmaWxlLmFtICAgICAgICAgICAgICB8ICAyICsrCisgbGliZHdmbC9kd2ZsX2J1aWxkX2lkX2ZpbmRfZWxmLmMgfCAgMyArKy0KKyBsaWJkd2ZsL2R3ZmxfZXJyb3IuYyAgICAgICAgICAgICB8ICA0ICsrKy0KKyBsaWJkd2ZsL2R3ZmxfbW9kdWxlX2dldGR3YXJmLmMgICB8ICAxICsKKyBsaWJkd2ZsL2ZpbmQtZGVidWdpbmZvLmMgICAgICAgICB8ICAyICstCisgbGliZHdmbC9saWJkd2ZsX2NyYzMyX2ZpbGUuYyAgICAgfCAxMCArKysrKysrKysrCisgbGliZHdmbC9saW51eC1rZXJuZWwtbW9kdWxlcy5jICAgfCAgMSArCisgbGliZWJsL2VibG9wZW5iYWNrZW5kLmMgICAgICAgICAgfCAgMiArLQorIGxpYmVibC9lYmx3c3RydGFiLmMgICAgICAgICAgICAgIHwgIDIgKy0KKyBsaWJlbGYvZWxmLmggICAgICAgICAgICAgICAgICAgICB8ICA5ICsrKysrKy0tLQorIGxpYmVsZi9saWJlbGYuaCAgICAgICAgICAgICAgICAgIHwgIDEgKworIGxpYmVsZi9saWJlbGZQLmggICAgICAgICAgICAgICAgIHwgIDEgKworIHNyYy9hZGRyMmxpbmUuYyAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBzcmMvYXIuYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCisgc3JjL2FybGliLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQorIHNyYy9hcmxpYjIuYyAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBzcmMvZWxmY21wLmMgICAgICAgICAgICAgICAgICAgICB8ICAyICstCisgc3JjL2VsZmxpbnQuYyAgICAgICAgICAgICAgICAgICAgfCAgMiArLQorIHNyYy9maW5kdGV4dHJlbC5jICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBzcmMvaTM4Nl9sZC5jICAgICAgICAgICAgICAgICAgICB8ICAyICstCisgc3JjL2xkLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQorIHNyYy9sZGdlbmVyaWMuYyAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBzcmMvbGRsZXguYyAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCisgc3JjL2xkc2NyaXB0LmMgICAgICAgICAgICAgICAgICAgfCAgMiArLQorIHNyYy9ubS5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBzcmMvb2JqZHVtcC5jICAgICAgICAgICAgICAgICAgICB8ICAyICstCisgc3JjL3JhbmxpYi5jICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQorIHNyYy9yZWFkZWxmLmMgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBzcmMvc2l6ZS5jICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCisgc3JjL3N0YWNrLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQorIHNyYy9zdHJpbmdzLmMgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBzcmMvc3RyaXAuYyAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCisgc3JjL3Vuc3RyaXAuYyAgICAgICAgICAgICAgICAgICAgfCAgMiArLQorIHRlc3RzL2FkZHJzY29wZXMuYyAgICAgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy9hbGxyZWdzLmMgICAgICAgICAgICAgICAgICB8ICAyICstCisgdGVzdHMvYmFja3RyYWNlLWRhdGEuYyAgICAgICAgICAgfCAgMiArLQorIHRlc3RzL2JhY2t0cmFjZS1kd2FyZi5jICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy9iYWNrdHJhY2UuYyAgICAgICAgICAgICAgICB8ICAyICstCisgdGVzdHMvYnVpbGRpZC5jICAgICAgICAgICAgICAgICAgfCAgMiArLQorIHRlc3RzL2RlYnVnYWx0bGluay5jICAgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy9kZWJ1Z2xpbmsuYyAgICAgICAgICAgICAgICB8ICAyICstCisgdGVzdHMvZGVsZXRlZC5jICAgICAgICAgICAgICAgICAgfCAgMiArLQorIHRlc3RzL2R3ZmwtYWRkci1zZWN0LmMgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy9kd2ZsLWJ1Zy1hZGRyLW92ZXJmbG93LmMgICB8ICAyICstCisgdGVzdHMvZHdmbC1idWctZmQtbGVhay5jICAgICAgICAgfCAgMiArLQorIHRlc3RzL2R3ZmwtYnVnLWdldG1vZHVsZXMuYyAgICAgIHwgIDIgKy0KKyB0ZXN0cy9kd2ZsLXJlcG9ydC1lbGYtYWxpZ24uYyAgICB8ICAyICstCisgdGVzdHMvZHdmbGxpbmVzLmMgICAgICAgICAgICAgICAgfCAgMiArLQorIHRlc3RzL2R3Zmxtb2R0ZXN0LmMgICAgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy9kd2Zsc3ltcy5jICAgICAgICAgICAgICAgICB8ICAyICstCisgdGVzdHMvZWFybHktb2Zmc2NuLmMgICAgICAgICAgICAgfCAgMiArLQorIHRlc3RzL2VjcC5jICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy9maW5kLXByb2xvZ3Vlcy5jICAgICAgICAgICB8ICAyICstCisgdGVzdHMvZnVuY3JldHZhbC5jICAgICAgICAgICAgICAgfCAgMiArLQorIHRlc3RzL2Z1bmNzY29wZXMuYyAgICAgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy9nZXRzcmNfZGllLmMgICAgICAgICAgICAgICB8ICAyICstCisgdGVzdHMvbGluZTJhZGRyLmMgICAgICAgICAgICAgICAgfCAgMiArLQorIHRlc3RzL2xvd19oaWdoX3BjLmMgICAgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy9tZDUtc2hhMS10ZXN0LmMgICAgICAgICAgICB8ICAyICstCisgdGVzdHMvcmR3cm1tYXAuYyAgICAgICAgICAgICAgICAgfCAgMiArLQorIHRlc3RzL3NhcmlkeC5jICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy9zZWN0aW9uZHVtcC5jICAgICAgICAgICAgICB8ICAyICstCisgdGVzdHMvdmFybG9jcy5jICAgICAgICAgICAgICAgICAgfCAgMiArLQorIHRlc3RzL3Zkc29zeW1zLmMgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyA3NyBmaWxlcyBjaGFuZ2VkLCAxMDkgaW5zZXJ0aW9ucygrKSwgNzMgZGVsZXRpb25zKC0pCisKK0luZGV4OiBlbGZ1dGlscy0wLjE2Ni9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGVsZnV0aWxzLTAuMTY2Lm9yaWcvTWFrZWZpbGUuYW0KKysrKyBlbGZ1dGlscy0wLjE2Ni9NYWtlZmlsZS5hbQorQEAgLTI4LDcgKzI4LDcgQEAgcGtnaW5jbHVkZV9IRUFERVJTID0gdmVyc2lvbi5oCisgCisgIyBBZGQgZG9jIGJhY2sgd2hlbiB3ZSBoYXZlIHNvbWUgcmVhbCBjb250ZW50LgorIFNVQkRJUlMgPSBjb25maWcgbTQgbGliIGxpYmVsZiBsaWJlYmwgbGliZHdlbGYgbGliZHdmbCBsaWJkdyBsaWJjcHUgbGliYXNtIFwKKy0JICBiYWNrZW5kcyBzcmMgcG8gdGVzdHMKKysJICBiYWNrZW5kcyBwbyB0ZXN0cworIAorIEVYVFJBX0RJU1QgPSBlbGZ1dGlscy5zcGVjIEdQRy1LRVkgTk9URVMgQ09OVFJJQlVUSU5HIFwKKyAJICAgICBDT1BZSU5HIENPUFlJTkctR1BMVjIgQ09QWUlORy1MR1BMVjMKK0luZGV4OiBlbGZ1dGlscy0wLjE2Ni9saWIvY29sb3IuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGVsZnV0aWxzLTAuMTY2Lm9yaWcvbGliL2NvbG9yLmMKKysrKyBlbGZ1dGlscy0wLjE2Ni9saWIvY29sb3IuYworQEAgLTMyLDcgKzMyLDcgQEAKKyAjZW5kaWYKKyAKKyAjaW5jbHVkZSA8YXJncC5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8bGliaW50bC5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CitJbmRleDogZWxmdXRpbHMtMC4xNjYvbGliL2NyYzMyX2ZpbGUuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGVsZnV0aWxzLTAuMTY2Lm9yaWcvbGliL2NyYzMyX2ZpbGUuYworKysrIGVsZnV0aWxzLTAuMTY2L2xpYi9jcmMzMl9maWxlLmMKK0BAIC0zMCwxMiArMzAsMTQgQEAKKyAjIGluY2x1ZGUgPGNvbmZpZy5oPgorICNlbmRpZgorIAorLSNpbmNsdWRlICJzeXN0ZW0uaCIKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisrI2luY2x1ZGUgPHN0ZGludC5oPgorICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorICNpbmNsdWRlIDxzeXMvbW1hbi5oPgorIAorKyNpbmNsdWRlICJzeXN0ZW0uaCIKKysKKyBpbnQKKyBjcmMzMl9maWxlIChpbnQgZmQsIHVpbnQzMl90ICpyZXNwKQorIHsKK0luZGV4OiBlbGZ1dGlscy0wLjE2Ni9saWIvZml4ZWRzaXplaGFzaC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZWxmdXRpbHMtMC4xNjYub3JpZy9saWIvZml4ZWRzaXplaGFzaC5oCisrKysgZWxmdXRpbHMtMC4xNjYvbGliL2ZpeGVkc2l6ZWhhc2guaAorQEAgLTMwLDEyICszMCwxMiBAQAorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CistI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgorICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyAKKyAjaW5jbHVkZSA8c3lzdGVtLmg+CisgCistI2RlZmluZSBDT05DQVQodDEsdDIpIF9fQ09OQ0FUICh0MSx0MikKKysjZGVmaW5lIENPTkNBVDEoeCx5KSB4IyN5CisrI2RlZmluZSBDT05DQVQoeCx5KSBDT05DQVQxKHgseSkKKyAKKyAvKiBCZWZvcmUgaW5jbHVkaW5nIHRoaXMgZmlsZSB0aGUgZm9sbG93aW5nIG1hY3JvcyBtdXN0IGJlIGRlZmluZWQ6CisgCitJbmRleDogZWxmdXRpbHMtMC4xNjYvbGliL3N5c3RlbS5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZWxmdXRpbHMtMC4xNjYub3JpZy9saWIvc3lzdGVtLmgKKysrKyBlbGZ1dGlscy0wLjE2Ni9saWIvc3lzdGVtLmgKK0BAIC00OSw2ICs0OSwxNiBAQAorICNlbHNlCisgIyBlcnJvciAiVW5rbm93biBieXRlIG9yZGVyIgorICNlbmRpZgorKyNpZm5kZWYgVEVNUF9GQUlMVVJFX1JFVFJZCisrI2RlZmluZSBURU1QX0ZBSUxVUkVfUkVUUlkoZXhwcmVzc2lvbikgXAorKyAgKF9fZXh0ZW5zaW9uX18JCQkJCQkJICAgICAgXAorKyAgICAoeyBsb25nIGludCBfX3Jlc3VsdDsJCQkJCQkgICAgICBcCisrICAgICAgIGRvIF9fcmVzdWx0ID0gKGxvbmcgaW50KSAoZXhwcmVzc2lvbik7CQkJCSAgICAgIFwKKysgICAgICAgd2hpbGUgKF9fcmVzdWx0ID09IC0xTCAmJiBlcnJubyA9PSBFSU5UUik7CQkJICAgICAgXAorKyAgICAgICBfX3Jlc3VsdDsgfSkpCisrI2VuZGlmCisrCisrI2RlZmluZSBlcnJvcihzdGF0dXMsIGVycm5vLCAuLi4pIGVycihzdGF0dXMsIF9fVkFfQVJHU19fKQorIAorIGV4dGVybiB2b2lkICp4bWFsbG9jIChzaXplX3QpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CisgZXh0ZXJuIHZvaWQgKnhjYWxsb2MgKHNpemVfdCwgc2l6ZV90KSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOworSW5kZXg6IGVsZnV0aWxzLTAuMTY2L2xpYi94bWFsbG9jLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBlbGZ1dGlscy0wLjE2Ni5vcmlnL2xpYi94bWFsbG9jLmMKKysrKyBlbGZ1dGlscy0wLjE2Ni9saWIveG1hbGxvYy5jCitAQCAtMzAsNyArMzAsNyBAQAorICMgaW5jbHVkZSA8Y29uZmlnLmg+CisgI2VuZGlmCisgCistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxsaWJpbnRsLmg+CisgI2luY2x1ZGUgPHN0ZGRlZi5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KK0luZGV4OiBlbGZ1dGlscy0wLjE2Ni9saWJhc20vYXNtX2VuZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZWxmdXRpbHMtMC4xNjYub3JpZy9saWJhc20vYXNtX2VuZC5jCisrKysgZWxmdXRpbHMtMC4xNjYvbGliYXNtL2FzbV9lbmQuYworQEAgLTMyLDcgKzMyLDcgQEAKKyAjZW5kaWYKKyAKKyAjaW5jbHVkZSA8YXNzZXJ0Lmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxsaWJpbnRsLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorSW5kZXg6IGVsZnV0aWxzLTAuMTY2L2xpYmFzbS9hc21fbmV3c2NuLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBlbGZ1dGlscy0wLjE2Ni5vcmlnL2xpYmFzbS9hc21fbmV3c2NuLmMKKysrKyBlbGZ1dGlscy0wLjE2Ni9saWJhc20vYXNtX25ld3Njbi5jCitAQCAtMzIsNyArMzIsNyBAQAorICNlbmRpZgorIAorICNpbmNsdWRlIDxhc3NlcnQuaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGxpYmludGwuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorSW5kZXg6IGVsZnV0aWxzLTAuMTY2L2xpYmNwdS9pMzg2X2dlbmRpcy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZWxmdXRpbHMtMC4xNjYub3JpZy9saWJjcHUvaTM4Nl9nZW5kaXMuYworKysrIGVsZnV0aWxzLTAuMTY2L2xpYmNwdS9pMzg2X2dlbmRpcy5jCitAQCAtMzEsNyArMzEsNyBAQAorICMgaW5jbHVkZSA8Y29uZmlnLmg+CisgI2VuZGlmCisgCistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KK0luZGV4OiBlbGZ1dGlscy0wLjE2Ni9saWJjcHUvaTM4Nl9sZXguYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGVsZnV0aWxzLTAuMTY2Lm9yaWcvbGliY3B1L2kzODZfbGV4LmMKKysrKyBlbGZ1dGlscy0wLjE2Ni9saWJjcHUvaTM4Nl9sZXguYworQEAgLTU3OCw3ICs1NzgsNyBAQCBjaGFyICppMzg2X3RleHQ7CisgI2VuZGlmCisgCisgI2luY2x1ZGUgPGN0eXBlLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxsaWJpbnRsLmg+CisgCisgI2luY2x1ZGUgPHN5c3RlbS5oPgorSW5kZXg6IGVsZnV0aWxzLTAuMTY2L2xpYmNwdS9pMzg2X3BhcnNlLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBlbGZ1dGlscy0wLjE2Ni5vcmlnL2xpYmNwdS9pMzg2X3BhcnNlLmMKKysrKyBlbGZ1dGlscy0wLjE2Ni9saWJjcHUvaTM4Nl9wYXJzZS5jCitAQCAtMTA3LDcgKzEwNyw3IEBACisgI2luY2x1ZGUgPGFzc2VydC5oPgorICNpbmNsdWRlIDxjdHlwZS5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyAjaW5jbHVkZSA8bGliaW50bC5oPgorICNpbmNsdWRlIDxtYXRoLmg+CitJbmRleDogZWxmdXRpbHMtMC4xNjYvbGliZHcvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBlbGZ1dGlscy0wLjE2Ni5vcmlnL2xpYmR3L01ha2VmaWxlLmFtCisrKysgZWxmdXRpbHMtMC4xNjYvbGliZHcvTWFrZWZpbGUuYW0KK0BAIC0xMTcsNyArMTE3LDcgQEAgbGliZHcuc28kKEVYRUVYVCk6ICQoc3JjZGlyKS9saWJkdy5tYXAgbAorIAkJLVdsLC0tZW5hYmxlLW5ldy1kdGFncywtcnBhdGgsJChwa2dsaWJkaXIpIFwKKyAJCS1XbCwtLXZlcnNpb24tc2NyaXB0LCQ8LC0tbm8tdW5kZWZpbmVkIFwKKyAJCS1XbCwtLXdob2xlLWFyY2hpdmUgJChmaWx0ZXItb3V0ICQ8LCReKSAtV2wsLS1uby13aG9sZS1hcmNoaXZlXAorLQkJLWxkbCAtbHogJChhcmdwX0xEQUREKSAkKHppcF9MSUJTKSAkKGxpYmR3X3NvX0xETElCUykKKysJCS1sZGwgLWx6ICQoYXJncF9MREFERCkgJCh6aXBfTElCUykgJChsaWJkd19zb19MRExJQlMpIC1sZnRzIC1sYXJncAorIAlAJCh0ZXh0cmVsX2NoZWNrKQorIAkkKEFNX1ZfYXQpbG4gLWZzICRAICRALiQoVkVSU0lPTikKKyAKK0luZGV4OiBlbGZ1dGlscy0wLjE2Ni9saWJkdy9saWJkd19hbGxvYy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZWxmdXRpbHMtMC4xNjYub3JpZy9saWJkdy9saWJkd19hbGxvYy5jCisrKysgZWxmdXRpbHMtMC4xNjYvbGliZHcvbGliZHdfYWxsb2MuYworQEAgLTMxLDExICszMSwxMiBAQAorICMgaW5jbHVkZSA8Y29uZmlnLmg+CisgI2VuZGlmCisgCistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisgI2luY2x1ZGUgImxpYmR3UC5oIgorKyNpbmNsdWRlICJzeXN0ZW0uaCIKKyAKKyAKKyB2b2lkICoKK0luZGV4OiBlbGZ1dGlscy0wLjE2Ni9saWJkd2ZsL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZWxmdXRpbHMtMC4xNjYub3JpZy9saWJkd2ZsL01ha2VmaWxlLmFtCisrKysgZWxmdXRpbHMtMC4xNjYvbGliZHdmbC9NYWtlZmlsZS5hbQorQEAgLTg0LDYgKzg0LDggQEAgbGliZWxmID0gLi4vbGliZWxmL2xpYmVsZi5zbworIGxpYmVibCA9IC4uL2xpYmVibC9saWJlYmwuYQorIGxpYmV1ID0gLi4vbGliL2xpYmV1LmEKKyAKKytMREFERCA9IC1sZnRzCisrCisgbGliZHdmbF9waWNfYV9TT1VSQ0VTID0KKyBhbV9saWJkd2ZsX3BpY19hX09CSkVDVFMgPSAkKGxpYmR3ZmxfYV9TT1VSQ0VTOi5jPS5vcykKKyAKK0luZGV4OiBlbGZ1dGlscy0wLjE2Ni9saWJkd2ZsL2R3ZmxfYnVpbGRfaWRfZmluZF9lbGYuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGVsZnV0aWxzLTAuMTY2Lm9yaWcvbGliZHdmbC9kd2ZsX2J1aWxkX2lkX2ZpbmRfZWxmLmMKKysrKyBlbGZ1dGlscy0wLjE2Ni9saWJkd2ZsL2R3ZmxfYnVpbGRfaWRfZmluZF9lbGYuYworQEAgLTI3LDYgKzI3LDcgQEAKKyAgICBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworIAorICNpbmNsdWRlICJsaWJkd2ZsUC5oIgorKyNpbmNsdWRlICJzeXN0ZW0uaCIKKyAjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CitAQCAtOTQsNyArOTUsNyBAQCBfX2xpYmR3Zmxfb3Blbl9ieV9idWlsZF9pZCAoRHdmbF9Nb2R1bGUKKyAJeworIAkgIGlmICgqZmlsZV9uYW1lICE9IE5VTEwpCisgCSAgICBmcmVlICgqZmlsZV9uYW1lKTsKKy0JICAqZmlsZV9uYW1lID0gY2Fub25pY2FsaXplX2ZpbGVfbmFtZSAobmFtZSk7CisrCSAgKmZpbGVfbmFtZSA9IHJlYWxwYXRoIChuYW1lLCBOVUxMKTsKKyAJICBpZiAoKmZpbGVfbmFtZSA9PSBOVUxMKQorIAkgICAgeworIAkgICAgICAqZmlsZV9uYW1lID0gbmFtZTsKK0luZGV4OiBlbGZ1dGlscy0wLjE2Ni9saWJkd2ZsL2R3ZmxfZXJyb3IuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGVsZnV0aWxzLTAuMTY2Lm9yaWcvbGliZHdmbC9kd2ZsX2Vycm9yLmMKKysrKyBlbGZ1dGlscy0wLjE2Ni9saWJkd2ZsL2R3ZmxfZXJyb3IuYworQEAgLTE0MCw2ICsxNDAsNyBAQCBfX2xpYmR3Zmxfc2V0ZXJybm8gKER3ZmxfRXJyb3IgZXJyb3IpCisgY29uc3QgY2hhciAqCisgZHdmbF9lcnJtc2cgKGludCBlcnJvcikKKyB7CisrICBzdGF0aWMgX190aHJlYWQgY2hhciBzWzY0XSA9ICIiOworICAgaWYgKGVycm9yID09IDAgfHwgZXJyb3IgPT0gLTEpCisgICAgIHsKKyAgICAgICBpbnQgbGFzdF9lcnJvciA9IGdsb2JhbF9lcnJvcjsKK0BAIC0xNTQsNyArMTU1LDggQEAgZHdmbF9lcnJtc2cgKGludCBlcnJvcikKKyAgIHN3aXRjaCAoZXJyb3IgJn4gMHhmZmZmKQorICAgICB7CisgICAgIGNhc2UgT1RIRVJfRVJST1IgKEVSUk5PKToKKy0gICAgICByZXR1cm4gc3RyZXJyb3JfciAoZXJyb3IgJiAweGZmZmYsICJiYWQiLCAwKTsKKysgICAgICBzdHJlcnJvcl9yIChlcnJvciAmIDB4ZmZmZiwgcywgc2l6ZW9mKHMpKTsKKysgICAgICByZXR1cm4gczsKKyAgICAgY2FzZSBPVEhFUl9FUlJPUiAoTElCRUxGKToKKyAgICAgICByZXR1cm4gZWxmX2Vycm1zZyAoZXJyb3IgJiAweGZmZmYpOworICAgICBjYXNlIE9USEVSX0VSUk9SIChMSUJEVyk6CitJbmRleDogZWxmdXRpbHMtMC4xNjYvbGliZHdmbC9kd2ZsX21vZHVsZV9nZXRkd2FyZi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZWxmdXRpbHMtMC4xNjYub3JpZy9saWJkd2ZsL2R3ZmxfbW9kdWxlX2dldGR3YXJmLmMKKysrKyBlbGZ1dGlscy0wLjE2Ni9saWJkd2ZsL2R3ZmxfbW9kdWxlX2dldGR3YXJmLmMKK0BAIC0zMSw2ICszMSw3IEBACisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKysjaW5jbHVkZSAic3lzdGVtLmgiCisgI2luY2x1ZGUgIi4uL2xpYmR3L2xpYmR3UC5oIgkvKiBEV0FSRl9FXyogdmFsdWVzIGFyZSBoZXJlLiAgKi8KKyAjaW5jbHVkZSAiLi4vbGliZWxmL2xpYmVsZlAuaCIKKyAKK0luZGV4OiBlbGZ1dGlscy0wLjE2Ni9saWJkd2ZsL2ZpbmQtZGVidWdpbmZvLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBlbGZ1dGlscy0wLjE2Ni5vcmlnL2xpYmR3ZmwvZmluZC1kZWJ1Z2luZm8uYworKysrIGVsZnV0aWxzLTAuMTY2L2xpYmR3ZmwvZmluZC1kZWJ1Z2luZm8uYworQEAgLTM4NSw3ICszODUsNyBAQCBkd2ZsX3N0YW5kYXJkX2ZpbmRfZGVidWdpbmZvIChEd2ZsX01vZHVsCisgICAgICAgLyogSWYgRklMRV9OQU1FIGlzIGEgc3ltbGluaywgdGhlIGRlYnVnIGZpbGUgbWlnaHQgYmUgYXNzb2NpYXRlZAorIAkgd2l0aCB0aGUgc3ltbGluayB0YXJnZXQgbmFtZSBpbnN0ZWFkLiAgKi8KKyAKKy0gICAgICBjaGFyICpjYW5vbiA9IGNhbm9uaWNhbGl6ZV9maWxlX25hbWUgKGZpbGVfbmFtZSk7CisrICAgICAgY2hhciAqY2Fub24gPSByZWFscGF0aCAoZmlsZV9uYW1lLCBOVUxMKTsKKyAgICAgICBpZiAoY2Fub24gIT0gTlVMTCAmJiBzdHJjbXAgKGZpbGVfbmFtZSwgY2Fub24pKQorIAlmZCA9IGZpbmRfZGVidWdpbmZvX2luX3BhdGggKG1vZCwgY2Fub24sCisgCQkJCSAgICAgZGVidWdsaW5rX2ZpbGUsIGRlYnVnbGlua19jcmMsCitJbmRleDogZWxmdXRpbHMtMC4xNjYvbGliZHdmbC9saWJkd2ZsX2NyYzMyX2ZpbGUuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGVsZnV0aWxzLTAuMTY2Lm9yaWcvbGliZHdmbC9saWJkd2ZsX2NyYzMyX2ZpbGUuYworKysrIGVsZnV0aWxzLTAuMTY2L2xpYmR3ZmwvbGliZHdmbF9jcmMzMl9maWxlLmMKK0BAIC0zMSw2ICszMSwxNiBAQAorIAorICNkZWZpbmUgY3JjMzJfZmlsZSBhdHRyaWJ1dGVfaGlkZGVuIF9fbGliZHdmbF9jcmMzMl9maWxlCisgI2RlZmluZSBjcmMzMiBfX2xpYmR3ZmxfY3JjMzIKKysKKysjaWZuZGVmIFRFTVBfRkFJTFVSRV9SRVRSWQorKyNkZWZpbmUgVEVNUF9GQUlMVVJFX1JFVFJZKGV4cHJlc3Npb24pIFwKKysgIChfX2V4dGVuc2lvbl9fCQkJCQkJCSAgICAgIFwKKysgICAgKHsgbG9uZyBpbnQgX19yZXN1bHQ7CQkJCQkJICAgICAgXAorKyAgICAgICBkbyBfX3Jlc3VsdCA9IChsb25nIGludCkgKGV4cHJlc3Npb24pOwkJCQkgICAgICBcCisrICAgICAgIHdoaWxlIChfX3Jlc3VsdCA9PSAtMUwgJiYgZXJybm8gPT0gRUlOVFIpOwkJCSAgICAgIFwKKysgICAgICAgX19yZXN1bHQ7IH0pKQorKyNlbmRpZgorKworICNkZWZpbmUgTElCX1NZU1RFTV9ICTEKKyAjaW5jbHVkZSA8bGliZHdmbFAuaD4KKyAjaW5jbHVkZSAiLi4vbGliL2NyYzMyX2ZpbGUuYyIKK0luZGV4OiBlbGZ1dGlscy0wLjE2Ni9saWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBlbGZ1dGlscy0wLjE2Ni5vcmlnL2xpYmR3ZmwvbGludXgta2VybmVsLW1vZHVsZXMuYworKysrIGVsZnV0aWxzLTAuMTY2L2xpYmR3ZmwvbGludXgta2VybmVsLW1vZHVsZXMuYworQEAgLTM0LDYgKzM0LDcgQEAKKyAjaW5jbHVkZSA8Y29uZmlnLmg+CisgCisgI2luY2x1ZGUgImxpYmR3ZmxQLmgiCisrI2luY2x1ZGUgInN5c3RlbS5oIgorICNpbmNsdWRlIDxpbnR0eXBlcy5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorSW5kZXg6IGVsZnV0aWxzLTAuMTY2L2xpYmVibC9lYmxvcGVuYmFja2VuZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZWxmdXRpbHMtMC4xNjYub3JpZy9saWJlYmwvZWJsb3BlbmJhY2tlbmQuYworKysrIGVsZnV0aWxzLTAuMTY2L2xpYmVibC9lYmxvcGVuYmFja2VuZC5jCitAQCAtMzIsNyArMzIsNyBAQAorIAorICNpbmNsdWRlIDxhc3NlcnQuaD4KKyAjaW5jbHVkZSA8ZGxmY24uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGxpYmVsZlAuaD4KKyAjaW5jbHVkZSA8ZHdhcmYuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CitJbmRleDogZWxmdXRpbHMtMC4xNjYvbGliZWJsL2VibHdzdHJ0YWIuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGVsZnV0aWxzLTAuMTY2Lm9yaWcvbGliZWJsL2VibHdzdHJ0YWIuYworKysrIGVsZnV0aWxzLTAuMTY2L2xpYmVibC9lYmx3c3RydGFiLmMKK0BAIC0zMDUsNyArMzA1LDcgQEAgY29weXN0cmluZ3MgKHN0cnVjdCBFYmxfV1N0cmVudCAqbm9kZXAsCisgCisgICAvKiBQcm9jZXNzIHRoZSBjdXJyZW50IG5vZGUuICAqLworICAgbm9kZXAtPm9mZnNldCA9ICpvZmZzZXRwOworLSAgKmZyZWVwID0gd21lbXBjcHkgKCpmcmVlcCwgbm9kZXAtPnN0cmluZywgbm9kZXAtPmxlbik7CisrICAqZnJlZXAgPSB3bWVtY3B5ICgqZnJlZXAsIG5vZGVwLT5zdHJpbmcsIG5vZGVwLT5sZW4pICsgbm9kZXAtPmxlbjsKKyAgICpvZmZzZXRwICs9IG5vZGVwLT5sZW4gKiBzaXplb2YgKHdjaGFyX3QpOworIAorICAgZm9yIChzdWJzID0gbm9kZXAtPm5leHQ7IHN1YnMgIT0gTlVMTDsgc3VicyA9IHN1YnMtPm5leHQpCitJbmRleDogZWxmdXRpbHMtMC4xNjYvbGliZWxmL2VsZi5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZWxmdXRpbHMtMC4xNjYub3JpZy9saWJlbGYvZWxmLmgKKysrKyBlbGZ1dGlscy0wLjE2Ni9saWJlbGYvZWxmLmgKK0BAIC0yMSw3ICsyMSw5IEBACisgCisgI2luY2x1ZGUgPGZlYXR1cmVzLmg+CisgCistX19CRUdJTl9ERUNMUworKyNpZmRlZiBfX2NwbHVzcGx1cworK2V4dGVybiAiQyIgeworKyNlbmRpZgorIAorIC8qIFN0YW5kYXJkIEVMRiB0eXBlcy4gICovCisgCitAQCAtMzU5MSw3ICszNTkzLDggQEAgZW51bQorIAorICNkZWZpbmUgUl9USUxFR1hfTlVNCQkxMzAKKyAKKy0KKy1fX0VORF9ERUNMUworKyNpZmRlZiBfX2NwbHVzcGx1cworK30KKysjZW5kaWYKKyAKKyAjZW5kaWYJLyogZWxmLmggKi8KK0luZGV4OiBlbGZ1dGlscy0wLjE2Ni9saWJlbGYvbGliZWxmLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBlbGZ1dGlscy0wLjE2Ni5vcmlnL2xpYmVsZi9saWJlbGYuaAorKysrIGVsZnV0aWxzLTAuMTY2L2xpYmVsZi9saWJlbGYuaAorQEAgLTI5LDYgKzI5LDcgQEAKKyAjaWZuZGVmIF9MSUJFTEZfSAorICNkZWZpbmUgX0xJQkVMRl9IIDEKKyAKKysjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8c3RkaW50Lmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorIAorSW5kZXg6IGVsZnV0aWxzLTAuMTY2L2xpYmVsZi9saWJlbGZQLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBlbGZ1dGlscy0wLjE2Ni5vcmlnL2xpYmVsZi9saWJlbGZQLmgKKysrKyBlbGZ1dGlscy0wLjE2Ni9saWJlbGYvbGliZWxmUC5oCitAQCAtMzYsNiArMzYsNyBAQAorIAorICNpbmNsdWRlIDxhci5oPgorICNpbmNsdWRlIDxnZWxmLmg+CisrI2luY2x1ZGUgPGxpYmVsZi5oPgorIAorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxzdGRib29sLmg+CitJbmRleDogZWxmdXRpbHMtMC4xNjYvc3JjL2FkZHIybGluZS5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZWxmdXRpbHMtMC4xNjYub3JpZy9zcmMvYWRkcjJsaW5lLmMKKysrKyBlbGZ1dGlscy0wLjE2Ni9zcmMvYWRkcjJsaW5lLmMKK0BAIC0yMyw3ICsyMyw3IEBACisgI2luY2x1ZGUgPGFyZ3AuaD4KKyAjaW5jbHVkZSA8YXNzZXJ0Lmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxpbnR0eXBlcy5oPgorICNpbmNsdWRlIDxsaWJkd2ZsLmg+CitJbmRleDogZWxmdXRpbHMtMC4xNjYvc3JjL2FyLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBlbGZ1dGlscy0wLjE2Ni5vcmlnL3NyYy9hci5jCisrKysgZWxmdXRpbHMtMC4xNjYvc3JjL2FyLmMKK0BAIC0yMiw3ICsyMiw3IEBACisgCisgI2luY2x1ZGUgPGFyZ3AuaD4KKyAjaW5jbHVkZSA8YXNzZXJ0Lmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxnZWxmLmg+CisgI2luY2x1ZGUgPGxpYmludGwuaD4KK0luZGV4OiBlbGZ1dGlscy0wLjE2Ni9zcmMvYXJsaWIuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGVsZnV0aWxzLTAuMTY2Lm9yaWcvc3JjL2FybGliLmMKKysrKyBlbGZ1dGlscy0wLjE2Ni9zcmMvYXJsaWIuYworQEAgLTIxLDcgKzIxLDcgQEAKKyAjZW5kaWYKKyAKKyAjaW5jbHVkZSA8YXNzZXJ0Lmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxnZWxmLmg+CisgI2luY2x1ZGUgPGxpYmludGwuaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KK0luZGV4OiBlbGZ1dGlscy0wLjE2Ni9zcmMvYXJsaWIyLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBlbGZ1dGlscy0wLjE2Ni5vcmlnL3NyYy9hcmxpYjIuYworKysrIGVsZnV0aWxzLTAuMTY2L3NyYy9hcmxpYjIuYworQEAgLTIwLDcgKzIwLDcgQEAKKyAjIGluY2x1ZGUgPGNvbmZpZy5oPgorICNlbmRpZgorIAorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8bGliaW50bC5oPgorICNpbmNsdWRlIDxsaW1pdHMuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CitJbmRleDogZWxmdXRpbHMtMC4xNjYvc3JjL2VsZmNtcC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZWxmdXRpbHMtMC4xNjYub3JpZy9zcmMvZWxmY21wLmMKKysrKyBlbGZ1dGlscy0wLjE2Ni9zcmMvZWxmY21wLmMKK0BAIC0yMyw3ICsyMyw3IEBACisgI2luY2x1ZGUgPGFyZ3AuaD4KKyAjaW5jbHVkZSA8YXNzZXJ0Lmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxsb2NhbGUuaD4KKyAjaW5jbHVkZSA8bGliaW50bC5oPgorSW5kZXg6IGVsZnV0aWxzLTAuMTY2L3NyYy9lbGZsaW50LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBlbGZ1dGlscy0wLjE2Ni5vcmlnL3NyYy9lbGZsaW50LmMKKysrKyBlbGZ1dGlscy0wLjE2Ni9zcmMvZWxmbGludC5jCitAQCAtMjQsNyArMjQsNyBAQAorICNpbmNsdWRlIDxhc3NlcnQuaD4KKyAjaW5jbHVkZSA8Ynl0ZXN3YXAuaD4KKyAjaW5jbHVkZSA8ZW5kaWFuLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxnZWxmLmg+CisgI2luY2x1ZGUgPGludHR5cGVzLmg+CitJbmRleDogZWxmdXRpbHMtMC4xNjYvc3JjL2ZpbmR0ZXh0cmVsLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBlbGZ1dGlscy0wLjE2Ni5vcmlnL3NyYy9maW5kdGV4dHJlbC5jCisrKysgZWxmdXRpbHMtMC4xNjYvc3JjL2ZpbmR0ZXh0cmVsLmMKK0BAIC0yMyw3ICsyMyw3IEBACisgI2luY2x1ZGUgPGFyZ3AuaD4KKyAjaW5jbHVkZSA8YXNzZXJ0Lmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxnZWxmLmg+CisgI2luY2x1ZGUgPGxpYmR3Lmg+CitJbmRleDogZWxmdXRpbHMtMC4xNjYvc3JjL2kzODZfbGQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGVsZnV0aWxzLTAuMTY2Lm9yaWcvc3JjL2kzODZfbGQuYworKysrIGVsZnV0aWxzLTAuMTY2L3NyYy9pMzg2X2xkLmMKK0BAIC0yMCw3ICsyMCw3IEBACisgI2VuZGlmCisgCisgI2luY2x1ZGUgPGFzc2VydC5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8bGliaW50bC5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CitJbmRleDogZWxmdXRpbHMtMC4xNjYvc3JjL2xkLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBlbGZ1dGlscy0wLjE2Ni5vcmlnL3NyYy9sZC5jCisrKysgZWxmdXRpbHMtMC4xNjYvc3JjL2xkLmMKK0BAIC0yMSw3ICsyMSw3IEBACisgCisgI2luY2x1ZGUgPGFyZ3AuaD4KKyAjaW5jbHVkZSA8YXNzZXJ0Lmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxsaWJlbGYuaD4KKyAjaW5jbHVkZSA8bGliaW50bC5oPgorSW5kZXg6IGVsZnV0aWxzLTAuMTY2L3NyYy9sZGdlbmVyaWMuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGVsZnV0aWxzLTAuMTY2Lm9yaWcvc3JjL2xkZ2VuZXJpYy5jCisrKysgZWxmdXRpbHMtMC4xNjYvc3JjL2xkZ2VuZXJpYy5jCitAQCAtMjMsNyArMjMsNyBAQAorICNpbmNsdWRlIDxjdHlwZS5oPgorICNpbmNsdWRlIDxkbGZjbi5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8Zm5tYXRjaC5oPgorICNpbmNsdWRlIDxnZWxmLmg+CitJbmRleDogZWxmdXRpbHMtMC4xNjYvc3JjL2xkbGV4LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBlbGZ1dGlscy0wLjE2Ni5vcmlnL3NyYy9sZGxleC5jCisrKysgZWxmdXRpbHMtMC4xNjYvc3JjL2xkbGV4LmMKK0BAIC0xMTA2LDcgKzExMDYsNyBAQCBjaGFyICpsZHRleHQ7CisgI2luY2x1ZGUgPGFzc2VydC5oPgorICNpbmNsdWRlIDxjdHlwZS5oPgorICNpbmNsdWRlIDxlbGYuaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGludHR5cGVzLmg+CisgI2luY2x1ZGUgPGxpYmludGwuaD4KKyAjaW5jbHVkZSA8c3RkYm9vbC5oPgorSW5kZXg6IGVsZnV0aWxzLTAuMTY2L3NyYy9sZHNjcmlwdC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZWxmdXRpbHMtMC4xNjYub3JpZy9zcmMvbGRzY3JpcHQuYworKysrIGVsZnV0aWxzLTAuMTY2L3NyYy9sZHNjcmlwdC5jCitAQCAtOTUsNyArOTUsNyBAQAorICNlbmRpZgorIAorICNpbmNsdWRlIDxhc3NlcnQuaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGxpYmludGwuaD4KKyAjaW5jbHVkZSA8c3RkYm9vbC5oPgorICNpbmNsdWRlIDxzdGRpbnQuaD4KK0luZGV4OiBlbGZ1dGlscy0wLjE2Ni9zcmMvbm0uYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGVsZnV0aWxzLTAuMTY2Lm9yaWcvc3JjL25tLmMKKysrKyBlbGZ1dGlscy0wLjE2Ni9zcmMvbm0uYworQEAgLTI2LDcgKzI2LDcgQEAKKyAjaW5jbHVkZSA8Y3R5cGUuaD4KKyAjaW5jbHVkZSA8ZHdhcmYuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPGdlbGYuaD4KKyAjaW5jbHVkZSA8aW50dHlwZXMuaD4KK0luZGV4OiBlbGZ1dGlscy0wLjE2Ni9zcmMvb2JqZHVtcC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZWxmdXRpbHMtMC4xNjYub3JpZy9zcmMvb2JqZHVtcC5jCisrKysgZWxmdXRpbHMtMC4xNjYvc3JjL29iamR1bXAuYworQEAgLTIxLDcgKzIxLDcgQEAKKyAjZW5kaWYKKyAKKyAjaW5jbHVkZSA8YXJncC5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyAjaW5jbHVkZSA8bGliaW50bC5oPgorSW5kZXg6IGVsZnV0aWxzLTAuMTY2L3NyYy9yYW5saWIuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGVsZnV0aWxzLTAuMTY2Lm9yaWcvc3JjL3JhbmxpYi5jCisrKysgZWxmdXRpbHMtMC4xNjYvc3JjL3JhbmxpYi5jCitAQCAtMjQsNyArMjQsNyBAQAorICNpbmNsdWRlIDxhcmdwLmg+CisgI2luY2x1ZGUgPGFzc2VydC5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8Z2VsZi5oPgorICNpbmNsdWRlIDxsaWJpbnRsLmg+CitJbmRleDogZWxmdXRpbHMtMC4xNjYvc3JjL3JlYWRlbGYuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGVsZnV0aWxzLTAuMTY2Lm9yaWcvc3JjL3JlYWRlbGYuYworKysrIGVsZnV0aWxzLTAuMTY2L3NyYy9yZWFkZWxmLmMKK0BAIC0yNSw3ICsyNSw3IEBACisgI2luY2x1ZGUgPGN0eXBlLmg+CisgI2luY2x1ZGUgPGR3YXJmLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxnZWxmLmg+CisgI2luY2x1ZGUgPGludHR5cGVzLmg+CitJbmRleDogZWxmdXRpbHMtMC4xNjYvc3JjL3NpemUuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGVsZnV0aWxzLTAuMTY2Lm9yaWcvc3JjL3NpemUuYworKysrIGVsZnV0aWxzLTAuMTY2L3NyYy9zaXplLmMKK0BAIC0yMSw3ICsyMSw3IEBACisgI2VuZGlmCisgCisgI2luY2x1ZGUgPGFyZ3AuaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPGdlbGYuaD4KKyAjaW5jbHVkZSA8aW50dHlwZXMuaD4KK0luZGV4OiBlbGZ1dGlscy0wLjE2Ni9zcmMvc3RhY2suYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGVsZnV0aWxzLTAuMTY2Lm9yaWcvc3JjL3N0YWNrLmMKKysrKyBlbGZ1dGlscy0wLjE2Ni9zcmMvc3RhY2suYworQEAgLTE4LDcgKzE4LDcgQEAKKyAjaW5jbHVkZSA8Y29uZmlnLmg+CisgI2luY2x1ZGUgPGFzc2VydC5oPgorICNpbmNsdWRlIDxhcmdwLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KK0luZGV4OiBlbGZ1dGlscy0wLjE2Ni9zcmMvc3RyaW5ncy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZWxmdXRpbHMtMC4xNjYub3JpZy9zcmMvc3RyaW5ncy5jCisrKysgZWxmdXRpbHMtMC4xNjYvc3JjL3N0cmluZ3MuYworQEAgLTI1LDcgKzI1LDcgQEAKKyAjaW5jbHVkZSA8Y3R5cGUuaD4KKyAjaW5jbHVkZSA8ZW5kaWFuLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxnZWxmLmg+CisgI2luY2x1ZGUgPGludHR5cGVzLmg+CitJbmRleDogZWxmdXRpbHMtMC4xNjYvc3JjL3N0cmlwLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBlbGZ1dGlscy0wLjE2Ni5vcmlnL3NyYy9zdHJpcC5jCisrKysgZWxmdXRpbHMtMC4xNjYvc3JjL3N0cmlwLmMKK0BAIC0yNCw3ICsyNCw3IEBACisgI2luY2x1ZGUgPGFzc2VydC5oPgorICNpbmNsdWRlIDxieXRlc3dhcC5oPgorICNpbmNsdWRlIDxlbmRpYW4uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPGdlbGYuaD4KKyAjaW5jbHVkZSA8bGliZWxmLmg+CitJbmRleDogZWxmdXRpbHMtMC4xNjYvc3JjL3Vuc3RyaXAuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGVsZnV0aWxzLTAuMTY2Lm9yaWcvc3JjL3Vuc3RyaXAuYworKysrIGVsZnV0aWxzLTAuMTY2L3NyYy91bnN0cmlwLmMKK0BAIC0zMSw3ICszMSw3IEBACisgI2luY2x1ZGUgPGFyZ3AuaD4KKyAjaW5jbHVkZSA8YXNzZXJ0Lmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxmbm1hdGNoLmg+CisgI2luY2x1ZGUgPGxpYmludGwuaD4KK0luZGV4OiBlbGZ1dGlscy0wLjE2Ni90ZXN0cy9hZGRyc2NvcGVzLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBlbGZ1dGlscy0wLjE2Ni5vcmlnL3Rlc3RzL2FkZHJzY29wZXMuYworKysrIGVsZnV0aWxzLTAuMTY2L3Rlc3RzL2FkZHJzY29wZXMuYworQEAgLTI1LDcgKzI1LDcgQEAKKyAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+CisgI2luY2x1ZGUgPGxvY2FsZS5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorIAorIAorSW5kZXg6IGVsZnV0aWxzLTAuMTY2L3Rlc3RzL2FsbHJlZ3MuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGVsZnV0aWxzLTAuMTY2Lm9yaWcvdGVzdHMvYWxscmVncy5jCisrKysgZWxmdXRpbHMtMC4xNjYvdGVzdHMvYWxscmVncy5jCitAQCAtMjEsNyArMjEsNyBAQAorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxsb2NhbGUuaD4KKyAjaW5jbHVkZSA8YXJncC5oPgorICNpbmNsdWRlIDxhc3NlcnQuaD4KK0luZGV4OiBlbGZ1dGlscy0wLjE2Ni90ZXN0cy9iYWNrdHJhY2UtZGF0YS5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZWxmdXRpbHMtMC4xNjYub3JpZy90ZXN0cy9iYWNrdHJhY2UtZGF0YS5jCisrKysgZWxmdXRpbHMtMC4xNjYvdGVzdHMvYmFja3RyYWNlLWRhdGEuYworQEAgLTI3LDcgKzI3LDcgQEAKKyAjaW5jbHVkZSA8ZGlyZW50Lmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPGR3YXJmLmg+CisgI2lmIGRlZmluZWQoX194ODZfNjRfXykgJiYgZGVmaW5lZChfX2xpbnV4X18pCitJbmRleDogZWxmdXRpbHMtMC4xNjYvdGVzdHMvYmFja3RyYWNlLWR3YXJmLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBlbGZ1dGlscy0wLjE2Ni5vcmlnL3Rlc3RzL2JhY2t0cmFjZS1kd2FyZi5jCisrKysgZWxmdXRpbHMtMC4xNjYvdGVzdHMvYmFja3RyYWNlLWR3YXJmLmMKK0BAIC0yMiw3ICsyMiw3IEBACisgI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgorICNpbmNsdWRlIDxsb2NhbGUuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlIDxzeXMvcHRyYWNlLmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorSW5kZXg6IGVsZnV0aWxzLTAuMTY2L3Rlc3RzL2JhY2t0cmFjZS5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZWxmdXRpbHMtMC4xNjYub3JpZy90ZXN0cy9iYWNrdHJhY2UuYworKysrIGVsZnV0aWxzLTAuMTY2L3Rlc3RzL2JhY2t0cmFjZS5jCitAQCAtMjQsNyArMjQsNyBAQAorICNpbmNsdWRlIDxkaXJlbnQuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8ZHdhcmYuaD4KKyAjaWZkZWYgX19saW51eF9fCitJbmRleDogZWxmdXRpbHMtMC4xNjYvdGVzdHMvYnVpbGRpZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZWxmdXRpbHMtMC4xNjYub3JpZy90ZXN0cy9idWlsZGlkLmMKKysrKyBlbGZ1dGlscy0wLjE2Ni90ZXN0cy9idWlsZGlkLmMKK0BAIC0yMyw3ICsyMyw3IEBACisgI2luY2x1ZGUgRUxGVVRJTFNfSEVBREVSKGVsZikKKyAjaW5jbHVkZSBFTEZVVElMU19IRUFERVIoZHdlbGYpCisgI2luY2x1ZGUgPHN0ZGlvLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorSW5kZXg6IGVsZnV0aWxzLTAuMTY2L3Rlc3RzL2RlYnVnYWx0bGluay5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZWxmdXRpbHMtMC4xNjYub3JpZy90ZXN0cy9kZWJ1Z2FsdGxpbmsuYworKysrIGVsZnV0aWxzLTAuMTY2L3Rlc3RzL2RlYnVnYWx0bGluay5jCitAQCAtMjMsNyArMjMsNyBAQAorICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihkdykKKyAjaW5jbHVkZSBFTEZVVElMU19IRUFERVIoZHdlbGYpCisgI2luY2x1ZGUgPHN0ZGlvLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorSW5kZXg6IGVsZnV0aWxzLTAuMTY2L3Rlc3RzL2RlYnVnbGluay5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZWxmdXRpbHMtMC4xNjYub3JpZy90ZXN0cy9kZWJ1Z2xpbmsuYworKysrIGVsZnV0aWxzLTAuMTY2L3Rlc3RzL2RlYnVnbGluay5jCitAQCAtMjEsNyArMjEsNyBAQAorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihkd2VsZikKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CitJbmRleDogZWxmdXRpbHMtMC4xNjYvdGVzdHMvZGVsZXRlZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZWxmdXRpbHMtMC4xNjYub3JpZy90ZXN0cy9kZWxldGVkLmMKKysrKyBlbGZ1dGlscy0wLjE2Ni90ZXN0cy9kZWxldGVkLmMKK0BAIC0yMSw3ICsyMSw3IEBACisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlIDxhc3NlcnQuaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2lmZGVmIF9fbGludXhfXworICNpbmNsdWRlIDxzeXMvcHJjdGwuaD4KK0luZGV4OiBlbGZ1dGlscy0wLjE2Ni90ZXN0cy9kd2ZsLWFkZHItc2VjdC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZWxmdXRpbHMtMC4xNjYub3JpZy90ZXN0cy9kd2ZsLWFkZHItc2VjdC5jCisrKysgZWxmdXRpbHMtMC4xNjYvdGVzdHMvZHdmbC1hZGRyLXNlY3QuYworQEAgLTIzLDcgKzIzLDcgQEAKKyAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGxvY2FsZS5oPgorICNpbmNsdWRlIDxhcmdwLmg+CisgI2luY2x1ZGUgRUxGVVRJTFNfSEVBREVSKGR3ZmwpCitJbmRleDogZWxmdXRpbHMtMC4xNjYvdGVzdHMvZHdmbC1idWctYWRkci1vdmVyZmxvdy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZWxmdXRpbHMtMC4xNjYub3JpZy90ZXN0cy9kd2ZsLWJ1Zy1hZGRyLW92ZXJmbG93LmMKKysrKyBlbGZ1dGlscy0wLjE2Ni90ZXN0cy9kd2ZsLWJ1Zy1hZGRyLW92ZXJmbG93LmMKK0BAIC0yMCw3ICsyMCw3IEBACisgI2luY2x1ZGUgPGludHR5cGVzLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8bG9jYWxlLmg+CisgI2luY2x1ZGUgRUxGVVRJTFNfSEVBREVSKGR3ZmwpCisgCitJbmRleDogZWxmdXRpbHMtMC4xNjYvdGVzdHMvZHdmbC1idWctZmQtbGVhay5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZWxmdXRpbHMtMC4xNjYub3JpZy90ZXN0cy9kd2ZsLWJ1Zy1mZC1sZWFrLmMKKysrKyBlbGZ1dGlscy0wLjE2Ni90ZXN0cy9kd2ZsLWJ1Zy1mZC1sZWFrLmMKK0BAIC0yNCw3ICsyNCw3IEBACisgI2luY2x1ZGUgPGRpcmVudC5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlIDxkd2FyZi5oPgorIAorSW5kZXg6IGVsZnV0aWxzLTAuMTY2L3Rlc3RzL2R3ZmwtYnVnLWdldG1vZHVsZXMuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGVsZnV0aWxzLTAuMTY2Lm9yaWcvdGVzdHMvZHdmbC1idWctZ2V0bW9kdWxlcy5jCisrKysgZWxmdXRpbHMtMC4xNjYvdGVzdHMvZHdmbC1idWctZ2V0bW9kdWxlcy5jCitAQCAtMTgsNyArMTgsNyBAQAorICNpbmNsdWRlIDxjb25maWcuaD4KKyAjaW5jbHVkZSBFTEZVVElMU19IRUFERVIoZHdmbCkKKyAKKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgCisgc3RhdGljIGNvbnN0IER3ZmxfQ2FsbGJhY2tzIGNhbGxiYWNrcyA9CisgICB7CitJbmRleDogZWxmdXRpbHMtMC4xNjYvdGVzdHMvZHdmbC1yZXBvcnQtZWxmLWFsaWduLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBlbGZ1dGlscy0wLjE2Ni5vcmlnL3Rlc3RzL2R3ZmwtcmVwb3J0LWVsZi1hbGlnbi5jCisrKysgZWxmdXRpbHMtMC4xNjYvdGVzdHMvZHdmbC1yZXBvcnQtZWxmLWFsaWduLmMKK0BAIC0yMCw3ICsyMCw3IEBACisgI2luY2x1ZGUgPGludHR5cGVzLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8bG9jYWxlLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KK0luZGV4OiBlbGZ1dGlscy0wLjE2Ni90ZXN0cy9kd2ZsbGluZXMuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGVsZnV0aWxzLTAuMTY2Lm9yaWcvdGVzdHMvZHdmbGxpbmVzLmMKKysrKyBlbGZ1dGlscy0wLjE2Ni90ZXN0cy9kd2ZsbGluZXMuYworQEAgLTI3LDcgKzI3LDcgQEAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAKKyBpbnQKKyBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQorSW5kZXg6IGVsZnV0aWxzLTAuMTY2L3Rlc3RzL2R3Zmxtb2R0ZXN0LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBlbGZ1dGlscy0wLjE2Ni5vcmlnL3Rlc3RzL2R3Zmxtb2R0ZXN0LmMKKysrKyBlbGZ1dGlscy0wLjE2Ni90ZXN0cy9kd2ZsbW9kdGVzdC5jCitAQCAtMjMsNyArMjMsNyBAQAorICNpbmNsdWRlIDxzdGRpb19leHQuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8bG9jYWxlLmg+CisgI2luY2x1ZGUgPGFyZ3AuaD4KKyAjaW5jbHVkZSBFTEZVVElMU19IRUFERVIoZHdmbCkKK0luZGV4OiBlbGZ1dGlscy0wLjE2Ni90ZXN0cy9kd2Zsc3ltcy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZWxmdXRpbHMtMC4xNjYub3JpZy90ZXN0cy9kd2Zsc3ltcy5jCisrKysgZWxmdXRpbHMtMC4xNjYvdGVzdHMvZHdmbHN5bXMuYworQEAgLTI1LDcgKzI1LDcgQEAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgCisgc3RhdGljIGNvbnN0IGNoYXIgKgorSW5kZXg6IGVsZnV0aWxzLTAuMTY2L3Rlc3RzL2Vhcmx5LW9mZnNjbi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZWxmdXRpbHMtMC4xNjYub3JpZy90ZXN0cy9lYXJseS1vZmZzY24uYworKysrIGVsZnV0aWxzLTAuMTY2L3Rlc3RzL2Vhcmx5LW9mZnNjbi5jCitAQCAtMTksNyArMTksNyBAQAorICNlbmRpZgorIAorICNpbmNsdWRlIDxlcnJuby5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8Z2VsZi5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorSW5kZXg6IGVsZnV0aWxzLTAuMTY2L3Rlc3RzL2VjcC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZWxmdXRpbHMtMC4xNjYub3JpZy90ZXN0cy9lY3AuYworKysrIGVsZnV0aWxzLTAuMTY2L3Rlc3RzL2VjcC5jCitAQCAtMjAsNyArMjAsNyBAQAorICNlbmRpZgorIAorICNpbmNsdWRlIDxlcnJuby5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8Z2VsZi5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KK0luZGV4OiBlbGZ1dGlscy0wLjE2Ni90ZXN0cy9maW5kLXByb2xvZ3Vlcy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZWxmdXRpbHMtMC4xNjYub3JpZy90ZXN0cy9maW5kLXByb2xvZ3Vlcy5jCisrKysgZWxmdXRpbHMtMC4xNjYvdGVzdHMvZmluZC1wcm9sb2d1ZXMuYworQEAgLTI1LDcgKzI1LDcgQEAKKyAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+CisgI2luY2x1ZGUgPGxvY2FsZS5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDxmbm1hdGNoLmg+CisgCitJbmRleDogZWxmdXRpbHMtMC4xNjYvdGVzdHMvZnVuY3JldHZhbC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZWxmdXRpbHMtMC4xNjYub3JpZy90ZXN0cy9mdW5jcmV0dmFsLmMKKysrKyBlbGZ1dGlscy0wLjE2Ni90ZXN0cy9mdW5jcmV0dmFsLmMKK0BAIC0yNSw3ICsyNSw3IEBACisgI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgorICNpbmNsdWRlIDxsb2NhbGUuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8Zm5tYXRjaC5oPgorIAorSW5kZXg6IGVsZnV0aWxzLTAuMTY2L3Rlc3RzL2Z1bmNzY29wZXMuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGVsZnV0aWxzLTAuMTY2Lm9yaWcvdGVzdHMvZnVuY3Njb3Blcy5jCisrKysgZWxmdXRpbHMtMC4xNjYvdGVzdHMvZnVuY3Njb3Blcy5jCitAQCAtMjUsNyArMjUsNyBAQAorICNpbmNsdWRlIDxzdGRpb19leHQuaD4KKyAjaW5jbHVkZSA8bG9jYWxlLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPGZubWF0Y2guaD4KKyAKK0luZGV4OiBlbGZ1dGlscy0wLjE2Ni90ZXN0cy9nZXRzcmNfZGllLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBlbGZ1dGlscy0wLjE2Ni5vcmlnL3Rlc3RzL2dldHNyY19kaWUuYworKysrIGVsZnV0aWxzLTAuMTY2L3Rlc3RzL2dldHNyY19kaWUuYworQEAgLTE5LDcgKzE5LDcgQEAKKyAjZW5kaWYKKyAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPGludHR5cGVzLmg+CisgI2luY2x1ZGUgPGxpYmVsZi5oPgorSW5kZXg6IGVsZnV0aWxzLTAuMTY2L3Rlc3RzL2xpbmUyYWRkci5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZWxmdXRpbHMtMC4xNjYub3JpZy90ZXN0cy9saW5lMmFkZHIuYworKysrIGVsZnV0aWxzLTAuMTY2L3Rlc3RzL2xpbmUyYWRkci5jCitAQCAtMjYsNyArMjYsNyBAQAorICNpbmNsdWRlIDxsb2NhbGUuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAKKyAKKyBzdGF0aWMgdm9pZAorSW5kZXg6IGVsZnV0aWxzLTAuMTY2L3Rlc3RzL2xvd19oaWdoX3BjLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBlbGZ1dGlscy0wLjE2Ni5vcmlnL3Rlc3RzL2xvd19oaWdoX3BjLmMKKysrKyBlbGZ1dGlscy0wLjE2Ni90ZXN0cy9sb3dfaGlnaF9wYy5jCitAQCAtMjUsNyArMjUsNyBAQAorICNpbmNsdWRlIDxzdGRpb19leHQuaD4KKyAjaW5jbHVkZSA8bG9jYWxlLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPGZubWF0Y2guaD4KKyAKK0luZGV4OiBlbGZ1dGlscy0wLjE2Ni90ZXN0cy9tZDUtc2hhMS10ZXN0LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBlbGZ1dGlscy0wLjE2Ni5vcmlnL3Rlc3RzL21kNS1zaGExLXRlc3QuYworKysrIGVsZnV0aWxzLTAuMTY2L3Rlc3RzL21kNS1zaGExLXRlc3QuYworQEAgLTE5LDcgKzE5LDcgQEAKKyAjZW5kaWYKKyAKKyAjaW5jbHVkZSA8c3RyaW5nLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorIAorICNpbmNsdWRlICJtZDUuaCIKKyAjaW5jbHVkZSAic2hhMS5oIgorSW5kZXg6IGVsZnV0aWxzLTAuMTY2L3Rlc3RzL3Jkd3JtbWFwLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBlbGZ1dGlscy0wLjE2Ni5vcmlnL3Rlc3RzL3Jkd3JtbWFwLmMKKysrKyBlbGZ1dGlscy0wLjE2Ni90ZXN0cy9yZHdybW1hcC5jCitAQCAtMTksNyArMTksNyBAQAorICNlbmRpZgorIAorICNpbmNsdWRlIDxlcnJuby5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CitJbmRleDogZWxmdXRpbHMtMC4xNjYvdGVzdHMvc2FyaWR4LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBlbGZ1dGlscy0wLjE2Ni5vcmlnL3Rlc3RzL3NhcmlkeC5jCisrKysgZWxmdXRpbHMtMC4xNjYvdGVzdHMvc2FyaWR4LmMKK0BAIC0xNyw3ICsxNyw3IEBACisgCisgI2luY2x1ZGUgPGNvbmZpZy5oPgorIAorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8Z2VsZi5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorSW5kZXg6IGVsZnV0aWxzLTAuMTY2L3Rlc3RzL3NlY3Rpb25kdW1wLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBlbGZ1dGlscy0wLjE2Ni5vcmlnL3Rlc3RzL3NlY3Rpb25kdW1wLmMKKysrKyBlbGZ1dGlscy0wLjE2Ni90ZXN0cy9zZWN0aW9uZHVtcC5jCitAQCAtMTgsNyArMTgsNyBAQAorICNpbmNsdWRlIDxjb25maWcuaD4KKyAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPGdlbGYuaD4KKyAjaW5jbHVkZSA8aW50dHlwZXMuaD4KK0luZGV4OiBlbGZ1dGlscy0wLjE2Ni90ZXN0cy92YXJsb2NzLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBlbGZ1dGlscy0wLjE2Ni5vcmlnL3Rlc3RzL3ZhcmxvY3MuYworKysrIGVsZnV0aWxzLTAuMTY2L3Rlc3RzL3ZhcmxvY3MuYworQEAgLTI1LDcgKzI1LDcgQEAKKyAjaW5jbHVkZSA8ZHdhcmYuaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CitJbmRleDogZWxmdXRpbHMtMC4xNjYvdGVzdHMvdmRzb3N5bXMuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGVsZnV0aWxzLTAuMTY2Lm9yaWcvdGVzdHMvdmRzb3N5bXMuYworKysrIGVsZnV0aWxzLTAuMTY2L3Rlc3RzL3Zkc29zeW1zLmMKK0BAIC0xOCw3ICsxOCw3IEBACisgI2luY2x1ZGUgPGNvbmZpZy5oPgorICNpbmNsdWRlIDxhc3NlcnQuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGludHR5cGVzLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorSW5kZXg6IGVsZnV0aWxzLTAuMTY2L2xpYmVsZi9lbGZfZ2V0YXJzeW0uYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGVsZnV0aWxzLTAuMTY2Lm9yaWcvbGliZWxmL2VsZl9nZXRhcnN5bS5jCisrKysgZWxmdXRpbHMtMC4xNjYvbGliZWxmL2VsZl9nZXRhcnN5bS5jCitAQCAtMzAyLDcgKzMwMiw3IEBAIGVsZl9nZXRhcnN5bSAoRWxmICplbGYsIHNpemVfdCAqcHRyKQorIAkJYXJzeW1bY250XS5hc19vZmYgPSAoKnUzMilbY250XTsKKyAKKyAJICAgICAgYXJzeW1bY250XS5hc19oYXNoID0gX2RsX2VsZl9oYXNoIChzdHJfZGF0YSk7CistCSAgICAgIHN0cl9kYXRhID0gcmF3bWVtY2hyIChzdHJfZGF0YSwgJ1wwJykgKyAxOworKwkgICAgICBzdHJfZGF0YSA9IG1lbWNociAoc3RyX2RhdGEsICdcMCcsIFNJWkVfTUFYKSArIDE7CisgCSAgICB9CisgCisgCSAgLyogQXQgdGhlIGVuZCBhIHNwZWNpYWwgZW50cnkuICAqLwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2NC8wMDAxLWVsZl9nZXRhcnN5bS1TaWxlbmNlLVdlcnJvci1tYXliZS11bmluaXRpYWxpemVkLWZhbHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY2LzAwMDEtZWxmX2dldGFyc3ltLVNpbGVuY2UtV2Vycm9yLW1heWJlLXVuaW5pdGlhbGl6ZWQtZmFscy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2NC8wMDAxLWVsZl9nZXRhcnN5bS1TaWxlbmNlLVdlcnJvci1tYXliZS11bmluaXRpYWxpemVkLWZhbHMucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjYvMDAwMS1lbGZfZ2V0YXJzeW0tU2lsZW5jZS1XZXJyb3ItbWF5YmUtdW5pbml0aWFsaXplZC1mYWxzLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY0LzAwMDEtZml4LWEtc3RhY2stdXNhZ2Utd2FybmluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjYvMDAwMS1maXgtYS1zdGFjay11c2FnZS13YXJuaW5nLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY0LzAwMDEtZml4LWEtc3RhY2stdXNhZ2Utd2FybmluZy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2Ni8wMDAxLWZpeC1hLXN0YWNrLXVzYWdlLXdhcm5pbmcucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjQvMDAwMS1yZW1vdmUtdGhlLXVubmVlZC1jaGVja2luZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjYvMDAwMS1yZW1vdmUtdGhlLXVubmVlZC1jaGVja2luZy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2NC8wMDAxLXJlbW92ZS10aGUtdW5uZWVkLWNoZWNraW5nLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY2LzAwMDEtcmVtb3ZlLXRoZS11bm5lZWQtY2hlY2tpbmcucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjQvMDAwMi1BZGQtc3VwcG9ydC1mb3ItbWlwczY0LWFiaXMtaW4tbWlwc19yZXR2YWwuYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjYvMDAwMi1BZGQtc3VwcG9ydC1mb3ItbWlwczY0LWFiaXMtaW4tbWlwc19yZXR2YWwuYy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2NC8wMDAyLUFkZC1zdXBwb3J0LWZvci1taXBzNjQtYWJpcy1pbi1taXBzX3JldHZhbC5jLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY2LzAwMDItQWRkLXN1cHBvcnQtZm9yLW1pcHM2NC1hYmlzLWluLW1pcHNfcmV0dmFsLmMucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjQvMDAwMy1BZGQtbWlwcy1uNjQtcmVsb2NhdGlvbi1mb3JtYXQtaGFjay5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjYvMDAwMy1BZGQtbWlwcy1uNjQtcmVsb2NhdGlvbi1mb3JtYXQtaGFjay5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2NC8wMDAzLUFkZC1taXBzLW42NC1yZWxvY2F0aW9uLWZvcm1hdC1oYWNrLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY2LzAwMDMtQWRkLW1pcHMtbjY0LXJlbG9jYXRpb24tZm9ybWF0LWhhY2sucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjQvYWFyY2g2NF91aW8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY2L2FhcmNoNjRfdWlvLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY0L2FhcmNoNjRfdWlvLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY2L2FhcmNoNjRfdWlvLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY0L2FybV9iYWNrZW5kLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY2L2FybV9iYWNrZW5kLmRpZmYKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjQvYXJtX2JhY2tlbmQuZGlmZgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2Ni9hcm1fYmFja2VuZC5kaWZmCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY2L2VsZmNtcC1maXgtc2VsZi1jb21wYXJpc2lvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjYvZWxmY21wLWZpeC1zZWxmLWNvbXBhcmlzaW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjMTUwYmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY2L2VsZmNtcC1maXgtc2VsZi1jb21wYXJpc2lvbi5wYXRjaApAQCAtMCwwICsxLDQxIEBACitGcm9tIDgzNmExNmZlNWI1YmFiNGEzYWZlMmM5OTFjMTA0NjUyNzc1Y2UzYTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEYXZpZCBBYmR1cmFjaG1hbm92IDxkYXZpZGx0QGNlcm4uY2g+CitEYXRlOiBNb24sIDExIEFwciAyMDE2IDE2OjAwOjU3ICswMjAwCitTdWJqZWN0OiBlbGZjbXA6IGZpeCBzZWxmLWNvbXBhcmlzb24gZXJyb3Igd2l0aCBHQ0MgNgorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitOb3RpY2VkIHdpdGggRmVkb3JhIDI0IEFscGhhLCBnY2MgKEdDQykgNi4wLjAgMjAxNjA0MDYKKyhSZWQgSGF0IDYuMC4wLTAuMjApLgorCitlbGZjbXAuYzogSW4gZnVuY3Rpb24g4oCYbWFpbuKAmToKK2VsZmNtcC5jOjM2NDoxOTk6IGVycm9yOiBzZWxmLWNvbXBhcmlzb24gYWx3YXlzIGV2YWx1YXRlcwordG8gZmFsc2UgWy1XZXJyb3I9dGF1dG9sb2dpY2FsLWNvbXBhcmVdCisgICAgICAgIGlmICh1bmxpa2VseSAobmFtZTEgPT0gTlVMTCB8fCBuYW1lMiA9PSBOVUxMCisKK1NpZ25lZC1vZmYtYnk6IERhdmlkIEFiZHVyYWNobWFub3YgPGRhdmlkbHRAY2Vybi5jaD4KKy0tLQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKKyBzcmMvQ2hhbmdlTG9nIHwgNCArKysrCisgc3JjL2VsZmNtcC5jICB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2VsZmNtcC5jIGIvc3JjL2VsZmNtcC5jCitpbmRleCA4NTJiOTJmLi43YjVkMzljIDEwMDY0NAorLS0tIGEvc3JjL2VsZmNtcC5jCisrKysgYi9zcmMvZWxmY21wLmMKK0BAIC0zNjgsNyArMzY4LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJCQkJJiYgc3ltMS0+c3Rfc2huZHggIT0gU0hOX1VOREVGKQorIAkJCSAgICB8fCBzeW0xLT5zdF9pbmZvICE9IHN5bTItPnN0X2luZm8KKyAJCQkgICAgfHwgc3ltMS0+c3Rfb3RoZXIgIT0gc3ltMi0+c3Rfb3RoZXIKKy0JCQkgICAgfHwgc3ltMS0+c3Rfc2huZHggIT0gc3ltMS0+c3Rfc2huZHgpKQorKwkJCSAgICB8fCBzeW0xLT5zdF9zaG5keCAhPSBzeW0yLT5zdF9zaG5keCkpCisgCQl7CisgCQkgIC8vIFhYWCBEbyB3ZSB3YW50IHRvIGFsbG93IHJlb3JkZXJlZCBzeW1ib2wgdGFibGVzPworIAkJc3ltdGFiX21pc21hdGNoOgorLS0gCitjZ2l0IHYwLjEyCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjQvZml4aGVhZGVyY2hlY2sucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY2L2ZpeGhlYWRlcmNoZWNrLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY0L2ZpeGhlYWRlcmNoZWNrLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY2L2ZpeGhlYWRlcmNoZWNrLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY0L2hwcGFfYmFja2VuZC5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2Ni9ocHBhX2JhY2tlbmQuZGlmZgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2NC9ocHBhX2JhY2tlbmQuZGlmZgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2Ni9ocHBhX2JhY2tlbmQuZGlmZgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2NC9rZnJlZWJzZF9wYXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2Ni9rZnJlZWJzZF9wYXRoLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY0L2tmcmVlYnNkX3BhdGgucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjYva2ZyZWVic2RfcGF0aC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2NC9tNjhrX2JhY2tlbmQuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjYvbTY4a19iYWNrZW5kLmRpZmYKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjQvbTY4a19iYWNrZW5kLmRpZmYKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjYvbTY4a19iYWNrZW5kLmRpZmYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjQvbWlwc19iYWNrZW5kLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY2L21pcHNfYmFja2VuZC5kaWZmCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY0L21pcHNfYmFja2VuZC5kaWZmCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY2L21pcHNfYmFja2VuZC5kaWZmCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY0L21pcHNfcmVhZGVsZl93LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2Ni9taXBzX3JlYWRlbGZfdy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2NC9taXBzX3JlYWRlbGZfdy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2Ni9taXBzX3JlYWRlbGZfdy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2NC9zaGFkb3cucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY2L3NoYWRvdy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2NC9zaGFkb3cucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjYvc2hhZG93LnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY0L3Rlc3RzdWl0ZS1pZ25vcmUtZWxmbGludC5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2Ni90ZXN0c3VpdGUtaWdub3JlLWVsZmxpbnQuZGlmZgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2NC90ZXN0c3VpdGUtaWdub3JlLWVsZmxpbnQuZGlmZgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2Ni90ZXN0c3VpdGUtaWdub3JlLWVsZmxpbnQuZGlmZgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2Ni91Y2xpYmMtc3VwcG9ydC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjYvdWNsaWJjLXN1cHBvcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjI5OTk5OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjYvdWNsaWJjLXN1cHBvcnQucGF0Y2gKQEAgLTAsMCArMSwxMjggQEAKK0Zyb20gM2RhZWMyZGQxMWEwNDk1NWY5NWU4ZjY1YTQ4ODIwMTAzZDg0ZGJlYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEp1bmxpbmcgWmhlbmcgPHpoZW5nanVubGluZ0BodWF3ZWkuY29tPgorRGF0ZTogVGh1LCA5IEFwciAyMDE1IDEyOjEyOjQ5ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIHVjbGliYyBzdXBwb3J0IGZvciBlbGZ1dGlscyAwLjE2MQorCitvbiB1Y2xpYmMgc3lzdGVtcyBsaWJpbnRsIGFuZCBsaWJ1YXJncCBhcmUgc2VwYXJhdGUgZnJvbSBsaWJjLgorc28gdGhleSBuZWVkIHRvIGJlIHNwZWNpZmllZCBvbiBjb21tYW5kbGluZSB3aGVuIHdlIHVzZSBwcm94eS1saWJpbnRsCit0aGVuIGxpYmludGwgaXMgYSBzdGF0aWMgYXJjaGl2ZSBzbyBpdCBzaG91bGQgYmUgbGlzdGVkIGxhc3Qgc2luY2UKK2VsZnV0aWxzIGRvZXMgbm90IHJlc3BlY3QgZGlzYWJsZS1ubHMgd2UgbmVlZCB0byBsaW5rIGluIGxpYmludGwKKworV2UgYWRkIGEgbmV3IG9wdGlvbiAtLWVuYWJsZS11Y2xpYmMgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNvbnRyb2wKK3RoZSB1Y2xpYmMgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgZHVyaW5nIGJ1aWxkLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3VjbGliYyBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtPgorU2lnbmVkLW9mZi1ieTogSnVubGluZyBaaGVuZyA8emhlbmdqdW5saW5nQGh1YXdlaS5jb20+CitbSnVubGluZyBaaGVuZzoKKyAtIGFkanVzdCBjb250ZXh0CitdCistLS0KKyBjb25maWd1cmUuYWMgICAgICAgfCA4ICsrKysrKysrCisgbGliY3B1L01ha2VmaWxlLmFtIHwgNCArKysrCisgbGliZHcvTWFrZWZpbGUuYW0gIHwgNyArKysrKystCisgbGliZWxmL01ha2VmaWxlLmFtIHwgNSArKysrKworIDQgZmlsZXMgY2hhbmdlZCwgMjMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitJbmRleDogZWxmdXRpbHMtMC4xNjYvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZWxmdXRpbHMtMC4xNjYub3JpZy9jb25maWd1cmUuYWMKKysrKyBlbGZ1dGlscy0wLjE2Ni9jb25maWd1cmUuYWMKK0BAIC03OSw2ICs3OSwxNCBAQCBBU19JRihbdGVzdCAiJHVzZV9sb2NrcyIgPSB5ZXNdLAorIAorIEFIX1RFTVBMQVRFKFtVU0VfTE9DS1NdLCBbRGVmaW5lZCBpZiBsaWJyYXJpZXMgc2hvdWxkIGJlIHRocmVhZC1zYWZlLl0pCisgCisrQUNfQVJHX0VOQUJMRShbdWNsaWJjXSwKKytBU19IRUxQX1NUUklORyhbLS1lbmFibGUtdWNsaWJjXSwgW1VzZSB1Y2xpYmMgZm9yIHN5c3RlbSBsaWJyYXJpZXNdKSwKKyt1c2VfdWNsaWJjPXllcywgdXNlX3VjbGliYz1ubykKKytBTV9DT05ESVRJT05BTChVU0VfVUNMSUJDLCB0ZXN0ICIkdXNlX3VjbGliYyIgPSB5ZXMpCisrQVNfSUYoW3Rlc3QgIiR1c2VfdWNsaWJjIiA9IHllc10sIFtBQ19ERUZJTkUoVVNFX1VDTElCQyldKQorKworK0FIX1RFTVBMQVRFKFtVU0VfVUNMSUJDXSwgW0RlZmluZWQgaWYgdWNsaWJjIGxpYnJhcmllcyBhcmUgdXNlZC5dKQorKworIEFDX1BST0dfQ0MKKyBBQ19QUk9HX1JBTkxJQgorIEFDX1BST0dfWUFDQworQEAgLTM0NywxOCArMzU1LDEzIEBAIEFDX0xJTktfSUZFTFNFKAorICkKKyAKKyBkbmwgSWYgb3VyIGxpYmMgZG9lc24ndCBwcm92aWRlIGFyZ3AsIHRoZW4gdGVzdCBmb3IgbGliYXJncAorLWlmIHRlc3QgIiRsaWJjX2hhc19hcmdwIiA9ICJmYWxzZSIgOyB0aGVuCistCUFDX01TR19XQVJOKCJsaWJjIGRvZXMgbm90IGhhdmUgYXJncCIpCistCUFDX0NIRUNLX0xJQihbYXJncF0sIFthcmdwX3BhcnNlXSwgW2hhdmVfYXJncD0idHJ1ZSJdLCBbaGF2ZV9hcmdwPSJmYWxzZSJdKQorLQorLQlpZiB0ZXN0ICIkaGF2ZV9hcmdwIiA9ICJmYWxzZSI7IHRoZW4KKy0JCUFDX01TR19FUlJPUigibm8gbGliYXJncCBmb3VuZCIpCistCWVsc2UKKy0JCWFyZ3BfTERBREQ9Ii1sYXJncCIKKy0JZmkKKy1lbHNlCistCWFyZ3BfTERBREQ9IiIKKy1maQorK0FTX0lGKFt0ZXN0ICJ4JGxpYmNfaGFzX2FyZ3AiID0gInhmYWxzZSJdLAorKwlbQUNfTVNHX1dBUk4oImxpYmMgZG9lcyBub3QgaGF2ZSBhcmdwIikKKysJQUNfQ0hFQ0tfTElCKFthcmdwXSwgW2FyZ3BfcGFyc2VdLCBbaGF2ZV9hcmdwPSJ0cnVlIiBhcmdwX0xEQUREPSItbGFyZ3AiXSwgW2hhdmVfYXJncD0iZmFsc2UiXSldLCBbYXJncF9MREFERD0iIl0pCisrCisrQVNfSUYoW3Rlc3QgIngkbGliY19oYXNfYXJncCIgPSAieGZhbHNlIiAtYSAieCRoYXZlX2FyZ3AiID0gInhmYWxzZSJdLAorKwlBQ19DSEVDS19MSUIoW3VhcmdwXSwgW2FyZ3BfcGFyc2VdLCBbaGF2ZV91YXJncD0idHJ1ZSIgYXJncF9MREFERD0iLWx1YXJncCJdLCBbaGF2ZV91YXJncD0iZmFsc2UiXSldLCBbYXJncF9MREFERD0iIl0pCisrCisgQUNfU1VCU1QoW2FyZ3BfTERBRERdKQorIAorIGRubCBUaGUgZGlyZWN0b3JpZXMgd2l0aCBjb250ZW50LgorSW5kZXg6IGVsZnV0aWxzLTAuMTY2L2xpYmNwdS9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGVsZnV0aWxzLTAuMTY2Lm9yaWcvbGliY3B1L01ha2VmaWxlLmFtCisrKysgZWxmdXRpbHMtMC4xNjYvbGliY3B1L01ha2VmaWxlLmFtCitAQCAtODAsNiArODAsMTAgQEAgaTM4Nl9wYXJzZV9DRkxBR1MgPSAtRE5NTkVTPSJgd2MgLWwgPCBpMworIGkzODZfbGV4Lm86IGkzODZfcGFyc2UuaAorIGkzODZfZ2VuZGlzX0xEQUREID0gJChsaWJldSkgLWxtCisgCisraWYgVVNFX1VDTElCQworK2kzODZfZ2VuZGlzX0xEQUREICs9IC1saW50bAorK2VuZGlmCisrCisgaTM4Nl9wYXJzZS5oOiBpMzg2X3BhcnNlLmMgOworIAorIEVYVFJBX0RJU1QgPSBkZWZzL2kzODYKK0luZGV4OiBlbGZ1dGlscy0wLjE2Ni9saWJkdy9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGVsZnV0aWxzLTAuMTY2Lm9yaWcvbGliZHcvTWFrZWZpbGUuYW0KKysrKyBlbGZ1dGlscy0wLjE2Ni9saWJkdy9NYWtlZmlsZS5hbQorQEAgLTEwMiw2ICsxMDIsMTEgQEAgZW5kaWYKKyBsaWJkd19waWNfYV9TT1VSQ0VTID0KKyBhbV9saWJkd19waWNfYV9PQkpFQ1RTID0gJChsaWJkd19hX1NPVVJDRVM6LmM9Lm9zKQorIAorK2xpYmR3X3NvX0xETElCUyA9CisraWYgVVNFX1VDTElCQworK2xpYmR3X3NvX0xETElCUyArPSAtbGludGwKKytlbmRpZgorKworIGxpYmR3X3NvX1NPVVJDRVMgPQorIGxpYmR3LnNvJChFWEVFWFQpOiAkKHNyY2RpcikvbGliZHcubWFwIGxpYmR3X3BpYy5hIC4uL2xpYmR3ZWxmL2xpYmR3ZWxmX3BpYy5hIFwKKyAJICAuLi9saWJkd2ZsL2xpYmR3ZmxfcGljLmEgLi4vbGliZWJsL2xpYmVibC5hIFwKK0BAIC0xMTIsNyArMTE3LDcgQEAgbGliZHcuc28kKEVYRUVYVCk6ICQoc3JjZGlyKS9saWJkdy5tYXAgbAorIAkJLVdsLC0tZW5hYmxlLW5ldy1kdGFncywtcnBhdGgsJChwa2dsaWJkaXIpIFwKKyAJCS1XbCwtLXZlcnNpb24tc2NyaXB0LCQ8LC0tbm8tdW5kZWZpbmVkIFwKKyAJCS1XbCwtLXdob2xlLWFyY2hpdmUgJChmaWx0ZXItb3V0ICQ8LCReKSAtV2wsLS1uby13aG9sZS1hcmNoaXZlXAorLQkJLWxkbCAtbHogJChhcmdwX0xEQUREKSAkKHppcF9MSUJTKQorKwkJLWxkbCAtbHogJChhcmdwX0xEQUREKSAkKHppcF9MSUJTKSAkKGxpYmR3X3NvX0xETElCUykKKyAJQCQodGV4dHJlbF9jaGVjaykKKyAJJChBTV9WX2F0KWxuIC1mcyAkQCAkQC4kKFZFUlNJT04pCisgCitJbmRleDogZWxmdXRpbHMtMC4xNjYvbGliZWxmL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZWxmdXRpbHMtMC4xNjYub3JpZy9saWJlbGYvTWFrZWZpbGUuYW0KKysrKyBlbGZ1dGlscy0wLjE2Ni9saWJlbGYvTWFrZWZpbGUuYW0KK0BAIC05Niw2ICs5NiwxMSBAQCBsaWJlbGZfcGljX2FfU09VUkNFUyA9CisgYW1fbGliZWxmX3BpY19hX09CSkVDVFMgPSAkKGxpYmVsZl9hX1NPVVJDRVM6LmM9Lm9zKQorIAorIGxpYmVsZl9zb19MRExJQlMgPSAtbHoKKysKKytpZiBVU0VfVUNMSUJDCisrbGliZWxmX3NvX0xETElCUyArPSAtbGludGwKKytlbmRpZgorKworIGlmIFVTRV9MT0NLUworIGxpYmVsZl9zb19MRExJQlMgKz0gLWxwdGhyZWFkCisgZW5kaWYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHNfMC4xNDguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTQ4LmJiCmluZGV4IGZmNTMyNTcuLjYwODBjMTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHNfMC4xNDguYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlsc18wLjE0OC5iYgpAQCAtMzQsNiArMzQsNyBAQAogICAgICAgICBmaWxlOi8vRml4X2VsZl9jdnRfZ3VuaGFzaC5wYXRjaCBcCiAgICAgICAgIGZpbGU6Ly9lbGZfYmVnaW4uYy1DVkUtMjAxNC05NDQ3LWZpeC5wYXRjaCBcCiAgICAgICAgIGZpbGU6Ly9maXgtYnVpbGQtZ2NjLTQuOC5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly9nY2M2LnBhdGNoIFwKICIKICMgT25seSBhcHBseSB3aGVuIGJ1aWxkaW5nIHVjbGliYyBiYXNlZCB0YXJnZXQgcmVjaXBlCiBTUkNfVVJJX2FwcGVuZF9saWJjLXVjbGliYyA9ICIgZmlsZTovL3VjbGliYy1zdXBwb3J0LWZvci1lbGZ1dGlscy0wLjE0OC5wYXRjaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHNfMC4xNjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTY0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTY0YzA1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHNfMC4xNjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi1TVU1NQVJZID0gIlV0aWxpdGllcyBhbmQgbGlicmFyaWVzIGZvciBoYW5kbGluZyBjb21waWxlZCBvYmplY3QgZmlsZXMiCi1IT01FUEFHRSA9ICJodHRwczovL2ZlZG9yYWhvc3RlZC5vcmcvZWxmdXRpbHMiCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIihHUEx2MyAmIEVsZnV0aWxzLUV4Y2VwdGlvbikiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLURFUEVORFMgPSAibGlidG9vbCBiemlwMiB6bGliIHZpcnR1YWwvbGliaW50bCIKLURFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgYXJncC1zdGFuZGFsb25lIGZ0cyAiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9mZWRvcmFob3N0ZWQub3JnL3JlbGVhc2VzL2UvbC9lbGZ1dGlscy8ke1BWfS8ke0JQfS50YXIuYnoyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMmU0NTM2YzFjNDgwMzRmMTg4YTgwNzg5YTU5MTE0ZDgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTY4M2MwMjU5MjhhMTJkMDZiN2ZlODEyOTI4YWE2MjM1MjQ5ZTIyZDE5N2QwODZmNzA4NDYwNmE0ODE2NTkwMCIKLQotU1JDX1VSSSArPSAiXAotICAgICAgICBmaWxlOi8vZHNvLWxpbmstY2hhbmdlLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL0ZpeF9lbGZfY3Z0X2d1bmhhc2gucGF0Y2ggXAotICAgICAgICBmaWxlOi8vZml4aGVhZGVyY2hlY2sucGF0Y2ggXAotICAgICAgICBmaWxlOi8vMDAwMS1lbGZfZ2V0YXJzeW0tU2lsZW5jZS1XZXJyb3ItbWF5YmUtdW5pbml0aWFsaXplZC1mYWxzLnBhdGNoIFwKLSAgICAgICAgZmlsZTovLzAwMDEtcmVtb3ZlLXRoZS11bm5lZWQtY2hlY2tpbmcucGF0Y2ggXAotICAgICAgICBmaWxlOi8vMDAwMS1maXgtYS1zdGFjay11c2FnZS13YXJuaW5nLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL2FhcmNoNjRfdWlvLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL3NoYWRvdy5wYXRjaCBcCi0iCi0KLSMgcGljayB0aGUgcGF0Y2ggZnJvbSBkZWJpYW4KLSMgaHR0cDovL2Z0cC5kZS5kZWJpYW4ub3JnL2RlYmlhbi9wb29sL21haW4vZS9lbGZ1dGlscy9lbGZ1dGlsc18wLjE2NC0xLmRlYmlhbi50YXIueHoKLVNSQ19VUkkgKz0gIlwKLSAgICAgICAgZmlsZTovL2hwcGFfYmFja2VuZC5kaWZmIFwKLSAgICAgICAgZmlsZTovL2FybV9iYWNrZW5kLmRpZmYgXAotICAgICAgICBmaWxlOi8vbWlwc19iYWNrZW5kLmRpZmYgXAotICAgICAgICBmaWxlOi8vbTY4a19iYWNrZW5kLmRpZmYgXAotICAgICAgICBmaWxlOi8vdGVzdHN1aXRlLWlnbm9yZS1lbGZsaW50LmRpZmYgXAotICAgICAgICBmaWxlOi8vbWlwc19yZWFkZWxmX3cucGF0Y2ggXAotICAgICAgICBmaWxlOi8va2ZyZWVic2RfcGF0aC5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly8wMDAxLUlnbm9yZS1kaWZmZXJlbmNlcy1iZXR3ZWVuLW1pcHMtbWFjaGluZS1pZGVudGlmaWVycy5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly8wMDAyLUFkZC1zdXBwb3J0LWZvci1taXBzNjQtYWJpcy1pbi1taXBzX3JldHZhbC5jLnBhdGNoIFwKLSAgICAgICAgZmlsZTovLzAwMDMtQWRkLW1pcHMtbjY0LXJlbG9jYXRpb24tZm9ybWF0LWhhY2sucGF0Y2ggXAotICAgICAgICBmaWxlOi8vdWNsaWJjLXN1cHBvcnQucGF0Y2ggXAotIgotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vMDAwMS1idWlsZC1Qcm92aWRlLWFsdGVybmF0aXZlcy1mb3ItZ2xpYmMtYXNzdW1wdGlvbnMtaGVsLnBhdGNoICIKLQotIyBUaGUgYnVpbGRzeXN0ZW0gd2FudHMgdG8gZ2VuZXJhdGUgMiAuaCBmaWxlcyBmcm9tIHNvdXJjZSB1c2luZyBhIGJpbmFyeSBpdCBqdXN0IGJ1aWx0LAotIyB3aGljaCBjYW4gbm90IHBhc3MgdGhlIGNyb3NzIGNvbXBpbGluZywgc28gbGV0J3Mgd29yayBhcm91bmQgaXQgYnkgYWRkaW5nIDIgLmggZmlsZXMKLSMgYWxvbmcgd2l0aCB0aGUgZG9fY29uZmlndXJlX3ByZXBlbmQoKQotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0Ci0KLUVYVFJBX09FQ09ORiA9ICItLXByb2dyYW0tcHJlZml4PWV1LSAtLXdpdGhvdXQtbHptYSIKLUVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtLXdpdGhvdXQtYnpsaWIiCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAtLWVuYWJsZS11Y2xpYmMiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCWlmIFsgIiR7VEFSR0VUX0FSQ0h9IiAhPSAieDg2XzY0IiBdICYmIFsgLXogYGVjaG8gIiR7VEFSR0VUX0FSQ0h9InxncmVwICdpLjg2J2AgXTt0aGVuCi0JCXJtIC1mICR7RH0ke2JpbmRpcn0vZXUtb2JqZHVtcAotCWZpCi19Ci0KLSMgd2UgY2FuIG5vdCBidWlsZCBjb21wbGV0ZSBlbGZ1dGlscyB3aGVuIHVzaW5nIHVjbGliYwotIyBidXQgc29tZSByZWNpcGVzIGUuZy4gZ2NjIDQuNSBkZXBlbmRzIG9uIGxpYmVsZiBzbyB3ZQotIyBidWlsZCBvbmx5IGxpYmVsZiBmb3IgdWNsaWJjIGNhc2UKLQotRVhUUkFfT0VNQUtFX2xpYmMtdWNsaWJjID0gIi1DIGxpYmVsZiIKLUVYVFJBX09FTUFLRV9jbGFzcy1uYXRpdmUgPSAiIgotRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZXNkayA9ICIiCi0KLUFMTE9XX0VNUFRZXyR7UE59X2xpYmMtbXVzbCA9ICIxIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLSMgUGFja2FnZSB1dGlsaXRpZXMgc2VwYXJhdGVseQotUEFDS0FHRVMgPSsgIiR7UE59LWJpbnV0aWxzIGxpYmVsZiBsaWJhc20gbGliZHciCi1GSUxFU18ke1BOfS1iaW51dGlscyA9ICJcCi0gICAgJHtiaW5kaXJ9L2V1LWFkZHIybGluZSBcCi0gICAgJHtiaW5kaXJ9L2V1LWxkIFwKLSAgICAke2JpbmRpcn0vZXUtbm0gXAotICAgICR7YmluZGlyfS9ldS1yZWFkZWxmIFwKLSAgICAke2JpbmRpcn0vZXUtc2l6ZSBcCi0gICAgJHtiaW5kaXJ9L2V1LXN0cmlwIgotCi1GSUxFU19saWJlbGYgPSAiJHtsaWJkaXJ9L2xpYmVsZi0ke1BWfS5zbyAke2xpYmRpcn0vbGliZWxmLnNvLioiCi1GSUxFU19saWJhc20gPSAiJHtsaWJkaXJ9L2xpYmFzbS0ke1BWfS5zbyAke2xpYmRpcn0vbGliYXNtLnNvLioiCi1GSUxFU19saWJkdyAgPSAiJHtsaWJkaXJ9L2xpYmR3LSR7UFZ9LnNvICR7bGliZGlyfS9saWJkdy5zby4qICR7bGliZGlyfS9lbGZ1dGlscy9saWIqIgotIyBTb21lIHBhY2thZ2VzIGhhdmUgdGhlIHZlcnNpb24gcHJlY2VlZGluZyB0aGUgLnNvIGluc3RlYWQgcHJvcGVybHkKLSMgdmVyc2lvbmVkIC5zby48dmVyc2lvbj4sIHNvIHdlIG5lZWQgdG8gcmVvcmRlciBhbmQgcmVwYWNrYWdlLgotI0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vKi0ke1BWfS5zbyAke2Jhc2VfbGliZGlyfS8qLSR7UFZ9LnNvIgotI0ZJTEVTX1NPTElCU0RFViA9ICIke2xpYmRpcn0vbGliYXNtLnNvICR7bGliZGlyfS9saWJkdy5zbyAke2xpYmRpcn0vbGliZWxmLnNvIgotCi0jIFRoZSBwYWNrYWdlIGNvbnRhaW5zIHN5bWxpbmtzIHRoYXQgdHJpcCB1cCBpbnNhbmUKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliZHcgPSAiZGV2LXNvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlsc18wLjE2Ni5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHNfMC4xNjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWM0MzZkMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHNfMC4xNjYuYmIKQEAgLTAsMCArMSw4OSBAQAorU1VNTUFSWSA9ICJVdGlsaXRpZXMgYW5kIGxpYnJhcmllcyBmb3IgaGFuZGxpbmcgY29tcGlsZWQgb2JqZWN0IGZpbGVzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9mZWRvcmFob3N0ZWQub3JnL2VsZnV0aWxzIgorU0VDVElPTiA9ICJiYXNlIgorTElDRU5TRSA9ICIoR1BMdjMgJiBFbGZ1dGlscy1FeGNlcHRpb24pIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCitERVBFTkRTID0gImxpYnRvb2wgYnppcDIgemxpYiB2aXJ0dWFsL2xpYmludGwiCitERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGFyZ3Atc3RhbmRhbG9uZSBmdHMgIgorCitTUkNfVVJJID0gImh0dHBzOi8vZmVkb3JhaG9zdGVkLm9yZy9yZWxlYXNlcy9lL2wvZWxmdXRpbHMvJHtQVn0vJHtCUH0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkNGU0NjJiNzg5MTkxNWRjNTMyNmJjY2VmYTIwMjRmZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzYzA1NjkxNGM4YTQzOGIyMTBiZTBkNzkwNDYzYjk2MGZjNzlkMjM0YzNmMDVjZTcwN2NiZmY4MGU5NGNiYTMwIgorCitTUkNfVVJJICs9ICJcCisgICAgICAgIGZpbGU6Ly9kc28tbGluay1jaGFuZ2UucGF0Y2ggXAorICAgICAgICBmaWxlOi8vRml4X2VsZl9jdnRfZ3VuaGFzaC5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly9maXhoZWFkZXJjaGVjay5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly8wMDAxLWVsZl9nZXRhcnN5bS1TaWxlbmNlLVdlcnJvci1tYXliZS11bmluaXRpYWxpemVkLWZhbHMucGF0Y2ggXAorICAgICAgICBmaWxlOi8vMDAwMS1yZW1vdmUtdGhlLXVubmVlZC1jaGVja2luZy5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1hLXN0YWNrLXVzYWdlLXdhcm5pbmcucGF0Y2ggXAorICAgICAgICBmaWxlOi8vYWFyY2g2NF91aW8ucGF0Y2ggXAorICAgICAgICBmaWxlOi8vc2hhZG93LnBhdGNoIFwKKyIKKworIyBwaWNrIHRoZSBwYXRjaCBmcm9tIGRlYmlhbgorIyBodHRwOi8vZnRwLmRlLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wvbWFpbi9lL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTY0LTEuZGViaWFuLnRhci54egorU1JDX1VSSSArPSAiXAorICAgICAgICBmaWxlOi8vaHBwYV9iYWNrZW5kLmRpZmYgXAorICAgICAgICBmaWxlOi8vYXJtX2JhY2tlbmQuZGlmZiBcCisgICAgICAgIGZpbGU6Ly9taXBzX2JhY2tlbmQuZGlmZiBcCisgICAgICAgIGZpbGU6Ly9tNjhrX2JhY2tlbmQuZGlmZiBcCisgICAgICAgIGZpbGU6Ly90ZXN0c3VpdGUtaWdub3JlLWVsZmxpbnQuZGlmZiBcCisgICAgICAgIGZpbGU6Ly9taXBzX3JlYWRlbGZfdy5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly9rZnJlZWJzZF9wYXRoLnBhdGNoIFwKKyAgICAgICAgZmlsZTovLzAwMDEtSWdub3JlLWRpZmZlcmVuY2VzLWJldHdlZW4tbWlwcy1tYWNoaW5lLWlkZW50aWZpZXJzLnBhdGNoIFwKKyAgICAgICAgZmlsZTovLzAwMDItQWRkLXN1cHBvcnQtZm9yLW1pcHM2NC1hYmlzLWluLW1pcHNfcmV0dmFsLmMucGF0Y2ggXAorICAgICAgICBmaWxlOi8vMDAwMy1BZGQtbWlwcy1uNjQtcmVsb2NhdGlvbi1mb3JtYXQtaGFjay5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly91Y2xpYmMtc3VwcG9ydC5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly9lbGZjbXAtZml4LXNlbGYtY29tcGFyaXNpb24ucGF0Y2ggXAorIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vMDAwMS1idWlsZC1Qcm92aWRlLWFsdGVybmF0aXZlcy1mb3ItZ2xpYmMtYXNzdW1wdGlvbnMtaGVsLnBhdGNoICIKKworIyBUaGUgYnVpbGRzeXN0ZW0gd2FudHMgdG8gZ2VuZXJhdGUgMiAuaCBmaWxlcyBmcm9tIHNvdXJjZSB1c2luZyBhIGJpbmFyeSBpdCBqdXN0IGJ1aWx0LAorIyB3aGljaCBjYW4gbm90IHBhc3MgdGhlIGNyb3NzIGNvbXBpbGluZywgc28gbGV0J3Mgd29yayBhcm91bmQgaXQgYnkgYWRkaW5nIDIgLmggZmlsZXMKKyMgYWxvbmcgd2l0aCB0aGUgZG9fY29uZmlndXJlX3ByZXBlbmQoKQorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0CisKK0VYVFJBX09FQ09ORiA9ICItLXByb2dyYW0tcHJlZml4PWV1LSAtLXdpdGhvdXQtbHptYSIKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtLXdpdGhvdXQtYnpsaWIiCitFWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAtLWVuYWJsZS11Y2xpYmMiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCWlmIFsgIiR7VEFSR0VUX0FSQ0h9IiAhPSAieDg2XzY0IiBdICYmIFsgLXogYGVjaG8gIiR7VEFSR0VUX0FSQ0h9InxncmVwICdpLjg2J2AgXTt0aGVuCisJCXJtIC1mICR7RH0ke2JpbmRpcn0vZXUtb2JqZHVtcAorCWZpCit9CisKKyMgd2UgY2FuIG5vdCBidWlsZCBjb21wbGV0ZSBlbGZ1dGlscyB3aGVuIHVzaW5nIHVjbGliYworIyBidXQgc29tZSByZWNpcGVzIGUuZy4gZ2NjIDQuNSBkZXBlbmRzIG9uIGxpYmVsZiBzbyB3ZQorIyBidWlsZCBvbmx5IGxpYmVsZiBmb3IgdWNsaWJjIGNhc2UKKworRVhUUkFfT0VNQUtFX2xpYmMtdWNsaWJjID0gIi1DIGxpYmVsZiIKK0VYVFJBX09FTUFLRV9jbGFzcy1uYXRpdmUgPSAiIgorRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZXNkayA9ICIiCisKK0FMTE9XX0VNUFRZXyR7UE59X2xpYmMtbXVzbCA9ICIxIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKKyMgUGFja2FnZSB1dGlsaXRpZXMgc2VwYXJhdGVseQorUEFDS0FHRVMgPSsgIiR7UE59LWJpbnV0aWxzIGxpYmVsZiBsaWJhc20gbGliZHciCitGSUxFU18ke1BOfS1iaW51dGlscyA9ICJcCisgICAgJHtiaW5kaXJ9L2V1LWFkZHIybGluZSBcCisgICAgJHtiaW5kaXJ9L2V1LWxkIFwKKyAgICAke2JpbmRpcn0vZXUtbm0gXAorICAgICR7YmluZGlyfS9ldS1yZWFkZWxmIFwKKyAgICAke2JpbmRpcn0vZXUtc2l6ZSBcCisgICAgJHtiaW5kaXJ9L2V1LXN0cmlwIgorCitGSUxFU19saWJlbGYgPSAiJHtsaWJkaXJ9L2xpYmVsZi0ke1BWfS5zbyAke2xpYmRpcn0vbGliZWxmLnNvLioiCitGSUxFU19saWJhc20gPSAiJHtsaWJkaXJ9L2xpYmFzbS0ke1BWfS5zbyAke2xpYmRpcn0vbGliYXNtLnNvLioiCitGSUxFU19saWJkdyAgPSAiJHtsaWJkaXJ9L2xpYmR3LSR7UFZ9LnNvICR7bGliZGlyfS9saWJkdy5zby4qICR7bGliZGlyfS9lbGZ1dGlscy9saWIqIgorIyBTb21lIHBhY2thZ2VzIGhhdmUgdGhlIHZlcnNpb24gcHJlY2VlZGluZyB0aGUgLnNvIGluc3RlYWQgcHJvcGVybHkKKyMgdmVyc2lvbmVkIC5zby48dmVyc2lvbj4sIHNvIHdlIG5lZWQgdG8gcmVvcmRlciBhbmQgcmVwYWNrYWdlLgorI0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vKi0ke1BWfS5zbyAke2Jhc2VfbGliZGlyfS8qLSR7UFZ9LnNvIgorI0ZJTEVTX1NPTElCU0RFViA9ICIke2xpYmRpcn0vbGliYXNtLnNvICR7bGliZGlyfS9saWJkdy5zbyAke2xpYmRpcn0vbGliZWxmLnNvIgorCisjIFRoZSBwYWNrYWdlIGNvbnRhaW5zIHN5bWxpbmtzIHRoYXQgdHJpcCB1cCBpbnNhbmUKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliZHcgPSAiZGV2LXNvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGUvaG9zdC1maWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGUvaG9zdC1maWxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhN2VmYmRjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlL2hvc3QtZmlsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIChodHRwOi8vYnVncy5ndy5jb20vdmlldy5waHA/aWQ9NDg1KQotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSAzY2RlMTk5ZDAzYjM5NjMyMzYxYzI3NWNkMzBmYTA2MTJhMDMxMzhiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLURhdGU6IE1vbiwgMTkgT2N0IDIwMTUgMTA6MzA6NTcgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzJdIFdoZW4gdXNpbmcgdGhlIGhvc3QgZmlsZSwgcmVzcGVjdCBGSUxFX0NPTVBJTEUKLQotSWYgd2UncmUgY3Jvc3MtY29tcGlsaW5nIGFuZCBub3QgdXNpbmcgdGhlIGZpbGUgYmluYXJ5IHRoYXQgd2FzIGp1c3QgYnVpbHQsCi1leGVjdXRlIHRoZSBiaW5hcnkgdGhhdCB3ZSd2ZSBiZWVuIHRvbGQgdG8gdXNlICh2aWEgRklMRV9DT01QSUxFKSB3aGVuIGNoZWNraW5nCi10aGUgdmVyc2lvbiBpbnN0ZWFkIG9mIGFzc3VtaW5nIHRoYXQgImZpbGUiIGlzIGNvcnJlY3QgYXMgdGhlIGFjdHVhbCBjb21waWxlCi11c2VzIEZJTEVfQ09NUElMRSBzbyBkaWZmZXJlbnQgYmluYXJpZXMgbWF5IGJlIHVzZWQuCi0tLS0KLSBtYWdpYy9NYWtlZmlsZS5hbSB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL21hZ2ljL01ha2VmaWxlLmFtIGIvbWFnaWMvTWFrZWZpbGUuYW0KLWluZGV4IDg5YWM4NDQuLjY3MDY3ZmUgMTAwNjQ0Ci0tLS0gYS9tYWdpYy9NYWtlZmlsZS5hbQotKysrIGIvbWFnaWMvTWFrZWZpbGUuYW0KLUBAIC0yOTMsNyArMjkzLDcgQEAgJHtNQUdJQ306ICQoRVhUUkFfRElTVCkgJChGSUxFX0NPTVBJTEVfREVQKQotIAlAKGlmIGV4cHIgIiR7RklMRV9DT01QSUxFfSIgOiAnLiovLionID4gL2Rldi9udWxsOyB0aGVuIFwKLSAJICAgIGVjaG8gIlVzaW5nICR7RklMRV9DT01QSUxFfSB0byBnZW5lcmF0ZSAke01BR0lDfSIgPiAvZGV2L251bGw7IFwKLSAJICBlbHNlIFwKLS0JICAgIHY9JCQoZmlsZSAtLXZlcnNpb24gfCBzZWQgLWUgcy9maWxlLS8vIC1lIHEpOyBcCi0rCSAgICB2PSQkKCR7RklMRV9DT01QSUxFfSAtLXZlcnNpb24gfCBzZWQgLWUgcy9maWxlLS8vIC1lIHEpOyBcCi0gCSAgICBpZiBbICIkJHYiICE9ICIke1BBQ0tBR0VfVkVSU0lPTn0iIF07IHRoZW4gXAotIAkJZWNobyAiQ2Fubm90IHVzZSB0aGUgaW5zdGFsbGVkIHZlcnNpb24gb2YgZmlsZSAoJCR2KSB0byI7IFwKLSAJCWVjaG8gImNyb3NzLWNvbXBpbGUgZmlsZSAke1BBQ0tBR0VfVkVSU0lPTn0iOyBcCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlXzUuMjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZV81LjI1LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OGJhZDY5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlXzUuMjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi1TVU1NQVJZID0gIkZpbGUgY2xhc3NpZmljYXRpb24gdG9vbCIKLURFU0NSSVBUSU9OID0gIkZpbGUgYXR0ZW1wdHMgdG8gY2xhc3NpZnkgZmlsZXMgZGVwZW5kaW5nIFwKLW9uIHRoZWlyIGNvbnRlbnRzIGFuZCBwcmludHMgYSBkZXNjcmlwdGlvbiBpZiBhIG1hdGNoIGlzIGZvdW5kLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZGFyd2luc3lzLmNvbS9maWxlLyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLQotIyB0d28gY2xhdXNlIEJTRAotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO2JlZ2lubGluZT0yO21kNT02YTczODI4NzJlZGI2OGQzM2UxYTkzOThiNmUwMzE4OCIKLQotREVQRU5EUyA9ICJ6bGliIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIgotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiemxpYi1uYXRpdmUiCi0KLSMgQmxhY2tsaXN0IGEgYm9ndXMgdGFnIGluIHVwc3RyZWFtIGNoZWNrCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJGSUxFKD9QPHB2ZXI+KD8hNl8yMykuKykiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9maWxlL2ZpbGUuZ2l0IFwKLSAgICAgICAgZmlsZTovL2RlYmlhbi03NDIyNjIucGF0Y2ggXAotICAgICAgICBmaWxlOi8vMDAwMS1BZGQtUC1wcm9tcHQtaW50by1Vc2FnZS1pbmZvLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL2hvc3QtZmlsZS5wYXRjaCBcCi0gICAgICAgICIKLQotU1JDUkVWID0gImY0NWRiODlkZGM5MTY5MmI2NjJmZmZiYWJiZGFmYzdiYzRjMDBmNWUiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scwotCi1FWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICItZSBGSUxFX0NPTVBJTEU9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2ZpbGUtbmF0aXZlL2ZpbGUiCi1FWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICItZSBGSUxFX0NPTVBJTEU9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2ZpbGUtbmF0aXZlL2ZpbGUiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L21pc2MvKi5tZ2MiCi0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLQljcmVhdGVfY21kbGluZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2ZpbGUgXAotCQktLW1hZ2ljLWZpbGUgJHtkYXRhZGlyfS9taXNjL21hZ2ljLm1nYwotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0JY3JlYXRlX2NtZGxpbmVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9maWxlIFwKLQkJLS1tYWdpYy1maWxlICR7ZGF0YWRpcn0vbWlzYy9tYWdpYy5tZ2MKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotUFJPVklERVNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUiCi0jIERvbid0IHVzZSBOQVRJVkVfUEFDS0FHRV9QQVRIX1NVRkZJWCBhcyB0aGF0IGhpZGVzIGxpYm1hZ2ljIGZyb20gYW55b25lIHdobwotIyBkZXBlbmRzIG9uIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlLgotYmluZGlyX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiL2ZpbGUtbmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGVfNS4yOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlXzUuMjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY0YTg5YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlXzUuMjguYmIKQEAgLTAsMCArMSw0OCBAQAorU1VNTUFSWSA9ICJGaWxlIGNsYXNzaWZpY2F0aW9uIHRvb2wiCitERVNDUklQVElPTiA9ICJGaWxlIGF0dGVtcHRzIHRvIGNsYXNzaWZ5IGZpbGVzIGRlcGVuZGluZyBcCitvbiB0aGVpciBjb250ZW50cyBhbmQgcHJpbnRzIGEgZGVzY3JpcHRpb24gaWYgYSBtYXRjaCBpcyBmb3VuZC4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmRhcndpbnN5cy5jb20vZmlsZS8iCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCisKKyMgdHdvIGNsYXVzZSBCU0QKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORztiZWdpbmxpbmU9MjttZDU9NmE3MzgyODcyZWRiNjhkMzNlMWE5Mzk4YjZlMDMxODgiCisKK0RFUEVORFMgPSAiemxpYiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSIKK0RFUEVORFNfY2xhc3MtbmF0aXZlID0gInpsaWItbmF0aXZlIgorCisjIEJsYWNrbGlzdCBhIGJvZ3VzIHRhZyBpbiB1cHN0cmVhbSBjaGVjaworVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiRklMRSg/UDxwdmVyPig/ITZfMjMpLispIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZmlsZS9maWxlLmdpdCBcCisgICAgICAgIGZpbGU6Ly9kZWJpYW4tNzQyMjYyLnBhdGNoIFwKKyAgICAgICAgZmlsZTovLzAwMDEtQWRkLVAtcHJvbXB0LWludG8tVXNhZ2UtaW5mby5wYXRjaCBcCisgICAgICAgICIKKworU1JDUkVWID0gIjNjNTIxODE3MzIyYTZiZjUxNjBjZmViMDliOTE0NWNjZGU1ODdiMmEiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scworCitFWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICItZSBGSUxFX0NPTVBJTEU9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2ZpbGUtbmF0aXZlL2ZpbGUiCitFWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICItZSBGSUxFX0NPTVBJTEU9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2ZpbGUtbmF0aXZlL2ZpbGUiCisKK0NGTEFHU19hcHBlbmQgPSAiIC1zdGQ9Yzk5IgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9taXNjLyoubWdjIgorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisJY3JlYXRlX2NtZGxpbmVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9maWxlIFwKKwkJLS1tYWdpYy1maWxlICR7ZGF0YWRpcn0vbWlzYy9tYWdpYy5tZ2MKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworCWNyZWF0ZV9jbWRsaW5lX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZmlsZSBcCisJCS0tbWFnaWMtZmlsZSAke2RhdGFkaXJ9L21pc2MvbWFnaWMubWdjCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKK1BST1ZJREVTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIgorIyBEb24ndCB1c2UgTkFUSVZFX1BBQ0tBR0VfUEFUSF9TVUZGSVggYXMgdGhhdCBoaWRlcyBsaWJtYWdpYyBmcm9tIGFueW9uZSB3aG8KKyMgZGVwZW5kcyBvbiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZS4KK2JpbmRpcl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIi9maWxlLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4LzAwMDItYXZvaWQtYy1jb21tZW50cy1pbi1jLWNvZGUtZmFpbHMtd2l0aC1nY2MtNi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4LzAwMDItYXZvaWQtYy1jb21tZW50cy1pbi1jLWNvZGUtZmFpbHMtd2l0aC1nY2MtNi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzhjYTVmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXgvMDAwMi1hdm9pZC1jLWNvbW1lbnRzLWluLWMtY29kZS1mYWlscy13aXRoLWdjYy02LnBhdGNoCkBAIC0wLDAgKzEsNjQgQEAKK0Zyb20gNzA3MmJlZmUxMzk3YWY0ZWIwMWMzZmY3ZWRmOTlmMGNkNTA3NjA4OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMzAgQXVnIDIwMTYgMTQ6MjU6MzIgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gYXZvaWQgYysrIGNvbW1lbnRzIGluIGMtY29kZSAtIGZhaWxzIHdpdGggZ2NjLTYKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworZml4ZXM6CisKK3wgZXJyb3I6IEMrKyBzdHlsZSBjb21tZW50cyBhcmUgbm90IGFsbG93ZWQgaW4gSVNPIEM5MAorfCBudW1fdG9fYWxsb2MgPSAxOyAvLyBBZnRlciBhbGwgdGhhdCB0YWxrLCB0aGlzIHdhcyBzZXQgdG8gMSBhbnl3YXlzLi4uCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+CistLS0KKyBzcmMvZmxleC5za2wgfCAyICstCisgc3JjL3NjYW4uYyAgIHwgMiArLQorIHNyYy9za2VsLmMgICB8IDIgKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9mbGV4LnNrbCBiL3NyYy9mbGV4LnNrbAoraW5kZXggNzNhMGI5ZS4uZWQ3MTYyNyAxMDA2NDQKKy0tLSBhL3NyYy9mbGV4LnNrbAorKysrIGIvc3JjL2ZsZXguc2tsCitAQCAtMjM1MCw3ICsyMzUwLDcgQEAgdm9pZCB5eUZsZXhMZXhlcjo6eXllbnN1cmVfYnVmZmVyX3N0YWNrKHZvaWQpCisgCQkgKiBzY2FubmVyIHdpbGwgZXZlbiBuZWVkIGEgc3RhY2suIFdlIHVzZSAyIGluc3RlYWQgb2YgMSB0byBhdm9pZCBhbgorIAkJICogaW1tZWRpYXRlIHJlYWxsb2Mgb24gdGhlIG5leHQgY2FsbC4KKyAgICAgICAgICAqLworLQkJbnVtX3RvX2FsbG9jID0gMTsgLy8gQWZ0ZXIgYWxsIHRoYXQgdGFsaywgdGhpcyB3YXMgc2V0IHRvIDEgYW55d2F5cy4uLgorKwkJbnVtX3RvX2FsbG9jID0gMTsgLyogQWZ0ZXIgYWxsIHRoYXQgdGFsaywgdGhpcyB3YXMgc2V0IHRvIDEgYW55d2F5cy4uLiAqLworIAkJWVlfRyh5eV9idWZmZXJfc3RhY2spID0gKHN0cnVjdCB5eV9idWZmZXJfc3RhdGUqKil5eWFsbG9jCisgCQkJCQkJCQkobnVtX3RvX2FsbG9jICogc2l6ZW9mKHN0cnVjdCB5eV9idWZmZXJfc3RhdGUqKQorIAkJCQkJCQkJTTRfWVlfQ0FMTF9MQVNUX0FSRyk7CitkaWZmIC0tZ2l0IGEvc3JjL3NjYW4uYyBiL3NyYy9zY2FuLmMKK2luZGV4IGI1NWRmMmQuLmYxZGNlNzUgMTAwNjQ0CistLS0gYS9zcmMvc2Nhbi5jCisrKysgYi9zcmMvc2Nhbi5jCitAQCAtNDY3Miw3ICs0NjcyLDcgQEAgc3RhdGljIHZvaWQgeXllbnN1cmVfYnVmZmVyX3N0YWNrICh2b2lkKQorIAkJICogc2Nhbm5lciB3aWxsIGV2ZW4gbmVlZCBhIHN0YWNrLiBXZSB1c2UgMiBpbnN0ZWFkIG9mIDEgdG8gYXZvaWQgYW4KKyAJCSAqIGltbWVkaWF0ZSByZWFsbG9jIG9uIHRoZSBuZXh0IGNhbGwuCisgICAgICAgICAgKi8KKy0JCW51bV90b19hbGxvYyA9IDE7IC8vIEFmdGVyIGFsbCB0aGF0IHRhbGssIHRoaXMgd2FzIHNldCB0byAxIGFueXdheXMuLi4KKysJCW51bV90b19hbGxvYyA9IDE7IC8qIEFmdGVyIGFsbCB0aGF0IHRhbGssIHRoaXMgd2FzIHNldCB0byAxIGFueXdheXMuLi4qLworIAkJKHl5X2J1ZmZlcl9zdGFjaykgPSAoc3RydWN0IHl5X2J1ZmZlcl9zdGF0ZSoqKXl5YWxsb2MKKyAJCQkJCQkJCShudW1fdG9fYWxsb2MgKiBzaXplb2Yoc3RydWN0IHl5X2J1ZmZlcl9zdGF0ZSopCisgCQkJCQkJCQkpOworZGlmZiAtLWdpdCBhL3NyYy9za2VsLmMgYi9zcmMvc2tlbC5jCitpbmRleCBlZjY1N2QzLi4yNmNjODg5IDEwMDY0NAorLS0tIGEvc3JjL3NrZWwuYworKysrIGIvc3JjL3NrZWwuYworQEAgLTI1NjEsNyArMjU2MSw3IEBAIGNvbnN0IGNoYXIgKnNrZWxbXSA9IHsKKyAgICIJCSAqIHNjYW5uZXIgd2lsbCBldmVuIG5lZWQgYSBzdGFjay4gV2UgdXNlIDIgaW5zdGVhZCBvZiAxIHRvIGF2b2lkIGFuIiwKKyAgICIJCSAqIGltbWVkaWF0ZSByZWFsbG9jIG9uIHRoZSBuZXh0IGNhbGwuIiwKKyAgICIgICAgICAgICAqLyIsCistICAiCQludW1fdG9fYWxsb2MgPSAxOyAvLyBBZnRlciBhbGwgdGhhdCB0YWxrLCB0aGlzIHdhcyBzZXQgdG8gMSBhbnl3YXlzLi4uIiwKKysgICIJCW51bV90b19hbGxvYyA9IDE7IC8qIEFmdGVyIGFsbCB0aGF0IHRhbGssIHRoaXMgd2FzIHNldCB0byAxIGFueXdheXMuLi4gKi8iLAorICAgIgkJWVlfRyh5eV9idWZmZXJfc3RhY2spID0gKHN0cnVjdCB5eV9idWZmZXJfc3RhdGUqKil5eWFsbG9jIiwKKyAgICIJCQkJCQkJCShudW1fdG9fYWxsb2MgKiBzaXplb2Yoc3RydWN0IHl5X2J1ZmZlcl9zdGF0ZSopIiwKKyAgICIJCQkJCQkJCU00X1lZX0NBTExfTEFTVF9BUkcpOyIsCistLSAKKzIuNS41CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4L0NWRS0yMDE2LTYzNTQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleC9DVkUtMjAxNi02MzU0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxNmFjN2EKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleC9DVkUtMjAxNi02MzU0LnBhdGNoCkBAIC0wLDAgKzEsNTkgQEAKK0Zyb20gMzkzOWVjY2RmZjU5OGY0N2U1YjM3YjA1ZDU4YmYxYjQ0ZDM3OTZlNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitEYXRlOiBGcmksIDcgT2N0IDIwMTYgMTQ6MTU6MzggKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gUHJldmVudCBidWZmZXIgb3ZlcmZsb3cgaW4geXlfZ2V0X25leHRfYnVmZmVyCisKK1RoaXMgaXMgdXBzdHJlYW0gY29tbWl0IGE1Y2JlOTI5YWMzMjU1ZDM3MWU2OThmNjJkYzI1NmFmZTcwMDY0NjYKK3dpdGggc29tZSBhZGRpdGlvbmFsIGJhY2twb3J0aW5nIHRvIG1ha2UgYmludXRpbHMgYnVpbGQgYWdhaW4uCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK0NWRTogQ1ZFLTIwMTYtNjM1NAorU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KKy0tLQorIHNyYy9mbGV4LnNrbCB8IDIgKy0KKyBzcmMvc2Nhbi5jICAgfCAyICstCisgc3JjL3NrZWwuYyAgIHwgMiArLQorIDMgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2ZsZXguc2tsIGIvc3JjL2ZsZXguc2tsCitpbmRleCBlZDcxNjI3Li44MTRkNTYyIDEwMDY0NAorLS0tIGEvc3JjL2ZsZXguc2tsCisrKysgYi9zcmMvZmxleC5za2wKK0BAIC0xNzE4LDcgKzE3MTgsNyBAQCBpbnQgeXlGbGV4TGV4ZXI6Onl5X2dldF9uZXh0X2J1ZmZlcigpCisgCisgCWVsc2UKKyAJCXsKKy0JCQl5eV9zaXplX3QgbnVtX3RvX3JlYWQgPQorKwkJCWludCBudW1fdG9fcmVhZCA9CisgCQkJWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9idWZfc2l6ZSAtIG51bWJlcl90b19tb3ZlIC0gMTsKKyAKKyAJCXdoaWxlICggbnVtX3RvX3JlYWQgPD0gMCApCitkaWZmIC0tZ2l0IGEvc3JjL3NjYW4uYyBiL3NyYy9zY2FuLmMKK2luZGV4IGYxZGNlNzUuLjE5NDk4NzIgMTAwNjQ0CistLS0gYS9zcmMvc2Nhbi5jCisrKysgYi9zcmMvc2Nhbi5jCitAQCAtNDE4MSw3ICs0MTgxLDcgQEAgc3RhdGljIGludCB5eV9nZXRfbmV4dF9idWZmZXIgKHZvaWQpCisgCisgCWVsc2UKKyAJCXsKKy0JCQl5eV9zaXplX3QgbnVtX3RvX3JlYWQgPQorKwkJCWludCBudW1fdG9fcmVhZCA9CisgCQkJWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9idWZfc2l6ZSAtIG51bWJlcl90b19tb3ZlIC0gMTsKKyAKKyAJCXdoaWxlICggbnVtX3RvX3JlYWQgPD0gMCApCitkaWZmIC0tZ2l0IGEvc3JjL3NrZWwuYyBiL3NyYy9za2VsLmMKK2luZGV4IDI2Y2M4ODkuLjAzNDRkMTggMTAwNjQ0CistLS0gYS9zcmMvc2tlbC5jCisrKysgYi9zcmMvc2tlbC5jCitAQCAtMTkyOSw3ICsxOTI5LDcgQEAgY29uc3QgY2hhciAqc2tlbFtdID0geworICAgIiIsCisgICAiCWVsc2UiLAorICAgIgkJeyIsCistICAiCQkJeXlfc2l6ZV90IG51bV90b19yZWFkID0iLAorKyAgIgkJCWludCBudW1fdG9fcmVhZCA9IiwKKyAgICIJCQlZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2J1Zl9zaXplIC0gbnVtYmVyX3RvX21vdmUgLSAxOyIsCisgICAiIiwKKyAgICIJCXdoaWxlICggbnVtX3RvX3JlYWQgPD0gMCApIiwKKy0tIAorMi4xLjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXhfMi42LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleF8yLjYuMC5iYgppbmRleCA4Mjg1NDI2Li5hYjM1YjA5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleF8yLjYuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleF8yLjYuMC5iYgpAQCAtMTQsMTIgKzE0LDE2IEBACiAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAogICAgICAgICAgICBmaWxlOi8vZG9fbm90X2NyZWF0ZV9wZGZfZG9jLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdHMtYWRkLWEtdGFyZ2V0LWZvci1idWlsZGluZy10ZXN0cy13aXRob3V0LXJ1bm5pbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWF2b2lkLWMtY29tbWVudHMtaW4tYy1jb2RlLWZhaWxzLXdpdGgtZ2NjLTYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTYtNjM1NC5wYXRjaCBcCiAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQVEVTVF9FTkFCTEVEJywgJzEnLCAnJywgJ2ZpbGU6Ly9kaXNhYmxlLXRlc3RzLnBhdGNoJywgZCl9IFwKICAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiMjY2MjcwZjEzYzQ4ZWQwNDNkOTU2NDgwNzUwODRkNTkiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjRlNjExZWY1YTQ3MDNhMTkxMDEyZjgwYzEwMjdkYzlkMTI1NTUxODNjZTBlY2Q0NmYzNjM2ZTU4N2U5YjhlOSIKIAorIyBGbGV4IGhhcyBtb3ZlZCB0byBnaXRodWIgZnJvbSAyLjYuMSBvbndhcmRzCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3dlc3Rlcy9mbGV4L3JlbGVhc2VzIgogVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiZmxleC0oP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKIAogaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIHB0ZXN0CkBAIC01MSw1ICs1NSw4IEBACiAJY3AgJHtTfS9idWlsZC1hdXgvdGVzdC1kcml2ZXIgJHtEfSR7UFRFU1RfUEFUSH0vYnVpbGQtYXV4LwogCWNwIC1yICR7U30vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfQogCWNwIC1yICR7Qn0vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfQotCXNlZCAtZSAncy9eTWFrZWZpbGU6L19NYWtlZmlsZTovJyAtZSAncy9ec3JjZGlyID0gXCguKlwpL3NyY2RpciA9IC4vJyAtZSAncy9edG9wX3NyY2RpciA9IFwoLipcKS90b3Bfc3JjZGlyID0gLi8nICAtaSAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQorCXNlZCAtZSAncy9eTWFrZWZpbGU6L19NYWtlZmlsZTovJyBcCisJICAgIC1lICdzL15zcmNkaXIgPSBcKC4qXCkvc3JjZGlyID0gLi8nIC1lICdzL150b3Bfc3JjZGlyID0gXCguKlwpL3RvcF9zcmNkaXIgPSAuLycgXAorCSAgICAtZSAncy9eYnVpbGRkaXIgPSBcKC4qXCkvYnVpbGRkaXIgPSAuLycgLWUgJ3MvXnRvcF9idWlsZGRpciA9IFwoLipcKS90b3BfYnVpbGRkaXIgPSAuLycgXAorCSAgICAtaSAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2UwM2YzMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LmluYworKysgL2Rldi9udWxsCkBAIC0xLDEzOSArMCwwIEBACi1yZXF1aXJlIGdjYy1jb21tb24uaW5jCi0KLSMgVGhpcmQgZGlnaXQgaW4gUFYgc2hvdWxkIGJlIGluY3JlbWVudGVkIGFmdGVyIGEgbWlub3IgcmVsZWFzZQotCi1QViA9ICI0LjkuMyIKLQotIyBCSU5WIHNob3VsZCBiZSBpbmNyZW1lbnRlZCB0byBhIHJldmlzaW9uIGFmdGVyIGEgbWlub3IgZ2NjIHJlbGVhc2UKLQotQklOViA9ICI0LjkuMyIKLQotRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vZ2NjLTQuOToiCi0KLURFUEVORFMgPSsgIm1wZnIgZ21wIGxpYm1wYyB6bGliIgotTkFUSVZFREVQUyA9ICJtcGZyLW5hdGl2ZSBnbXAtbmF0aXZlIGxpYm1wYy1uYXRpdmUgemxpYi1uYXRpdmUiCi0KLUxJQ0VOU0UgPSAiR1BMLTMuMC13aXRoLUdDQy1leGNlcHRpb24gJiBHUEx2MyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJcCi0gICAgZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIFwKLSAgICBmaWxlOi8vQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICBmaWxlOi8vQ09QWUlORzMuTElCO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiBcCi0gICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSBcCi0gICAgZmlsZTovL0NPUFlJTkcuUlVOVElNRTttZDU9ZmU2MGQ4NzA0ODU2N2Q0ZmU4YzhhMGVkMjQ0OGJjYzggXAotIgotCi1TUkNfVVJJID0gIlwKLSAgICAke0dOVV9NSVJST1J9L2djYy9nY2MtJHtQVn0vZ2NjLSR7UFZ9LnRhci5iejIgXAotICAgIGZpbGU6Ly8wMDAxLWdjYy00LjMuMS1BUkNIX0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLXVjbGliYy1jb25mLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMy1nY2MtdWNsaWJjLWxvY2FsZS1jdHlwZV90b3VwbG93X3QucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA0LXVjbGliYy1sb2NhbGUucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA1LXVjbGliYy1sb2NhbGUtbm9fX3gucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA2LXVjbGliYy1sb2NhbGUtd2NoYXJfZml4LnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwNy11Y2xpYmMtbG9jYWxlLXVwZGF0ZS5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDgtbWlzc2luZy1leGVjaW5mb19oLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwOS1jOTktc25wcmludGYucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDEwLWM5OS1jb21wbGV4LXVnbHktaGFjay5wYXRjaCBcCi0gICAgZmlsZTovLzAwMTEtaW5kZXhfbWFjcm8ucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDEzLWxpYnN0ZGMtbmFtZXNwYWNlLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAxNC1zaC1wcjI0ODM2LnBhdGNoIFwKLSAgICBmaWxlOi8vMDAxNS1hcm0tVXNlLVRBUkdFVF9FTkRJQU5fT1BUSU9OLWZvci1kZXRlcm1pbmluZy1NVUxUSUxJLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAxNi1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMTctZ2NjLXBvaXNvbi1kaXItZXh0ZW5kLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAxOC1nY2MtNC4zLjMtU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMTktNjQtYml0LW11bHRpbGliLWhhY2sucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDIwLW9wdGlvbmFsLWxpYnN0ZGMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDIxLWdjYy1kaXNhYmxlLU1BU0tfUkVMQVhfUElDX0NBTExTLWJpdC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMjItQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMjMtVXNlLXRoZS1kZWZhdWx0cy5oLWluLUItaW5zdGVhZC1vZi1TLWFuZC10LW9lLWluLUIucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDI1LWZvcnRyYW4tY3Jvc3MtY29tcGlsZS1oYWNrLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAyNi1saWJnY2Mtc2psai1jaGVjay5wYXRjaCBcCi0gICAgZmlsZTovLzAwMjctY3BwLWhvbm9yLXN5c3Jvb3QucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDI4LU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDI5LURlZmluZS1HTElCQ19EWU5BTUlDX0xJTktFUi1hbmQtVUNMSUJDX0RZTkFNSUNfTElOS0UucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDMwLWdjYy1GaXgtYXJndW1lbnQtbGlzdC10b28tbG9uZy1lcnJvci5wYXRjaCBcCi0gICAgZmlsZTovLzAwMzEtRGlzYWJsZS1zZHQucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDMyLWxpYnRvb2wucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDMzLWdjYy1hcm12NC1wYXNzLWZpeC12NGJ4LXRvLWxpbmtlci10by1zdXBwb3J0LUVBQkkucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDM0LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDQwLWZpeC1nKystc3lzcm9vdC5wYXRjaCBcCi0gICAgZmlsZTovLzAwNDEtbGlidG9vbC1hdm9pZC1saWJkaXIucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDQzLWNwcC5wYXRjaCBcCi0gICAgZmlsZTovLzAwNDQtZ2VuZ3R5cGVzLnBhdGNoIFwKLSAgICBmaWxlOi8vMDA0Ni1saWJhdG9taWMtZGVwdHJhY2tpbmcucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDQ3LXJlcG9tZW1idWcucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDQ5LUVuYWJsZS1TUEUtQWx0aVZlYy1nZW5lcmF0aW9uLW9uLXBvd2VwYy1saW51eC10YXJnZXQucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDUwLVJldmVydC1Vc2UtZGJ4X3JlZ19udW1iZXItZm9yLXNwYW5uaW5nLXJlZ2lzdGVycy5wYXRjaCBcCi0gICAgZmlsZTovLzAwNTEtZWFiaXNwZS5wYXRjaCBcCi0gICAgZmlsZTovLzAwNTItQWRkLXRhcmdldC1ob29rLXRvLW92ZXJyaWRlLURXQVJGMi1mcmFtZS1yZWdpc3Rlci1zaS5wYXRjaCBcCi0gICAgZmlsZTovLzAwNTMtZ2NjLWZpeC1zZWdmYXVsdC1mcm9tLWNhbGxpbmctZnJlZS1vbi1ub24tbWFsbG9jLWQtYS5wYXRjaCBcCi0gICAgZmlsZTovLzAwNTQtZ2NjLU1ha2VmaWxlLmluLWZpeC1wYXJhbGxlbC1idWlsZGluZy1mYWlsdXJlLnBhdGNoIFwKLSAgICBmaWxlOi8vMDA1NS1kd2FyZi1yZWctcHJvY2Vzc2luZy1oZWxwZXIucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDU2LWRlZmluZS1kZWZhdWx0LWNmYS1yZWdpc3Rlci1tYXBwaW5nLnBhdGNoIFwKLSAgICBmaWxlOi8vMDA1Ny1hYXJjaDY0LWNvbmZpZy5wYXRjaCBcCi0gICAgZmlsZTovLzAwNTgtZ2NjLXIyMTIxNzEucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDU5LWdjYy1QUi1ydGwtb3B0aW1pemF0aW9uLTYzMzQ4LnBhdGNoIFwKLSAgICBmaWxlOi8vMDA2MC1Pbmx5LWFsbG93LWU1MDAtZG91YmxlLWluLVNQRV9TSU1EX1JFR05PX1AtcmVnaXN0ZXJzLnBhdGNoIFwKLSAgICBmaWxlOi8vMDA2MS10YXJnZXQtZ2NjLWluY2x1ZGVkaXIucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDYyLVVzZS1TWVNURU1MSUJTX0RJUi1yZXBsYWNlbWVudC1pbnN0ZWFkLW9mLWhhcmRjb2RpbmcucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDYzLW5hdGl2ZXNkay1nY2Mtc3VwcG9ydC5wYXRjaCBcCi0gICAgZmlsZTovLzAwNjQtaGFuZGxlLXRhcmdldC1zeXNyb290LW11bHRpbGliLnBhdGNoIFwKLSAgICBmaWxlOi8vMDA2NS1nY2MtNDgzLXVuaXZlcnNhbC1pbml0aWFsaXplci1uby13YXJuaW5nLnBhdGNoIFwKLSAgICBmaWxlOi8vMDA2Ni1jeHhmbGFncy1mb3ItYnVpbGQucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDY3LWZpeC1hcm0tdGh1bWIucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDY3LWdjYy1tdXNsLXN1cHBvcnQucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDY4LW11c2wtZHluYW1pYy1saW5rZXIucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDY5LW11c2wtbm8tZml4aW5jbHVkZXMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDcwLWxpYnN0ZGMtbXVzbC5wYXRjaCBcCi0gICAgZmlsZTovLzAwNzEtSWdub3JlLWZkZWJ1Zy1wcmVmaXgtbWFwLWluLXByb2R1Y2VyLXN0cmluZy1ieS1EYW5pZS5wYXRjaCBcCi0gICAgZmlsZTovLzAwNzItc3VwcG9ydC1mZmlsZS1wcmVmaXgtbWFwLnBhdGNoIFwKLSAgICBmaWxlOi8vMDA3My1SZXVzZS1mZGVidWctcHJlZml4LW1hcC10by1yZXBsYWNlLWZmaWxlLXByZWZpeC1tYXAucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDc0LWZkZWJ1Zy1wcmVmaXgtbWFwLXN1cHBvcnQtdG8tcmVtYXAtcmVsYXRpdmUtcGF0aC5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiNmY4MzFiNGQyNTE4NzI3MzZlOGU5Y2MwOTc0NmYzMjciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjMzMmIyYTVhMzIxYjU3NTA4YjkwMzEzNTRhODUwM2FmNmZkZmI4NjhiOGMxNzQ4ZDMzMDI4ZDEwMGE4YjY3ZSIKLQotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiZ2NjLSg/UDxwdmVyPjRcLjlcLlxkKykudGFyIgotCi1TID0gIiR7VE1QRElSfS93b3JrLXNoYXJlZC9nY2MtJHtQVn0tJHtQUn0vZ2NjLSR7UFZ9IgotQiA9ICIke1dPUktESVJ9L2djYy0ke1BWfS9idWlsZC4ke0hPU1RfU1lTfS4ke1RBUkdFVF9TWVN9IgotCi0jIExhbmd1YWdlIE92ZXJyaWRlcwotRk9SVFJBTiA9ICIiCi1KQVZBID0gIiIKLQotTFRPID0gIi0tZW5hYmxlLWx0byIKLQotRVhUUkFfT0VDT05GX0JBU0UgPSAiXAotICAgICR7TFRPfSBcCi0gICAgLS1lbmFibGUtbGlic3NwIFwKLSAgICAtLWRpc2FibGUtYm9vdHN0cmFwIFwKLSAgICAtLWRpc2FibGUtbGlibXVkZmxhcCBcCi0gICAgLS13aXRoLXN5c3RlbS16bGliIFwKLSAgICAtLXdpdGgtbGlua2VyLWhhc2gtc3R5bGU9JHtMSU5LRVJfSEFTSF9TVFlMRX0gXAotICAgIC0tZW5hYmxlLWxpbmtlci1idWlsZC1pZCBcCi0gICAgLS13aXRoLXBwbD1ubyBcCi0gICAgLS13aXRoLWNsb29nPW5vIFwKLSAgICAtLWVuYWJsZS1jaGVja2luZz1yZWxlYXNlIFwKLSAgICAtLWVuYWJsZS1jaGVhZGVycz1jX2dsb2JhbCBcCi0iCi0KLUVYVFJBX09FQ09ORl9JTklUSUFMID0gIlwKLSAgICAtLWRpc2FibGUtbGlibXVkZmxhcCBcCi0gICAgLS1kaXNhYmxlLWxpYmdvbXAgXAotICAgIC0tZGlzYWJsZS1saWJzc3AgXAotICAgIC0tZGlzYWJsZS1saWJxdWFkbWF0aCBcCi0gICAgLS13aXRoLXN5c3RlbS16bGliIFwKLSAgICAtLWRpc2FibGUtbHRvIFwKLSAgICAtLWRpc2FibGUtcGx1Z2luIFwKLSAgICAtLWVuYWJsZS1kZWNpbWFsLWZsb2F0PW5vIFwKLSIKLQotRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLXVjbGliYyA9ICIgLS1kaXNhYmxlLWRlY2ltYWwtZmxvYXQgIgotCi1FWFRSQV9PRUNPTkZfUEFUSFMgPSAiXAotICAgIC0td2l0aC1neHgtaW5jbHVkZS1kaXI9L25vdC9leGlzdHt0YXJnZXRfaW5jbHVkZWRpcn0vYysrLyR7QklOVn0gXAotICAgIC0td2l0aC1zeXNyb290PS9ub3QvZXhpc3QgXAotICAgIC0td2l0aC1idWlsZC1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSBcCi0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwMDEtZ2NjLTQuMy4xLUFSQ0hfRkxBR1NfRk9SX1RBUkdFVC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDAwMS1nY2MtNC4zLjEtQVJDSF9GTEFHU19GT1JfVEFSR0VULnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTg4MDExLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDAwMS1nY2MtNC4zLjEtQVJDSF9GTEFHU19GT1JfVEFSR0VULnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSBiZjNkOTZhZTU4ZmExODBiOGI0NjhkMjVkYzJlMDIwOWRhY2EyNzUxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6Mzc6MTEgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwMS8zNV0gZ2NjLTQuMy4xOiBBUkNIX0ZMQUdTX0ZPUl9UQVJHRVQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLS0tLQotIGNvbmZpZ3VyZSAgICB8ICAgIDIgKy0KLSBjb25maWd1cmUuYWMgfCAgICAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKLWluZGV4IGQ4MDk1MzUuLjFiNzZjOTAgMTAwNzU1Ci0tLS0gYS9jb25maWd1cmUKLSsrKyBiL2NvbmZpZ3VyZQotQEAgLTc0MzksNyArNzQzOSw3IEBAIGZpCi0gIyBmb3IgdGFyZ2V0X2FsaWFzIGFuZCBnY2MgZG9lc24ndCBtYW5hZ2UgaXQgY29uc2lzdGVudGx5LgotIHRhcmdldF9jb25maWdhcmdzPSItLWNhY2hlLWZpbGU9Li9jb25maWcuY2FjaGUgJHt0YXJnZXRfY29uZmlnYXJnc30iCi0gCi0tRkxBR1NfRk9SX1RBUkdFVD0KLStGTEFHU19GT1JfVEFSR0VUPSIkQVJDSF9GTEFHU19GT1JfVEFSR0VUIgotIGNhc2UgIiAkdGFyZ2V0X2NvbmZpZ2RpcnMgIiBpbgotICAqIiBuZXdsaWIgIiopCi0gICBjYXNlICIgJHRhcmdldF9jb25maWdhcmdzICIgaW4KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDQ4ZWMxYWEuLjg5ZDFkM2YgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTI4NzMsNyArMjg3Myw3IEBAIGZpCi0gIyBmb3IgdGFyZ2V0X2FsaWFzIGFuZCBnY2MgZG9lc24ndCBtYW5hZ2UgaXQgY29uc2lzdGVudGx5LgotIHRhcmdldF9jb25maWdhcmdzPSItLWNhY2hlLWZpbGU9Li9jb25maWcuY2FjaGUgJHt0YXJnZXRfY29uZmlnYXJnc30iCi0gCi0tRkxBR1NfRk9SX1RBUkdFVD0KLStGTEFHU19GT1JfVEFSR0VUPSIkQVJDSF9GTEFHU19GT1JfVEFSR0VUIgotIGNhc2UgIiAkdGFyZ2V0X2NvbmZpZ2RpcnMgIiBpbgotICAqIiBuZXdsaWIgIiopCi0gICBjYXNlICIgJHRhcmdldF9jb25maWdhcmdzICIgaW4KLS0tIAotMS43LjEwLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDAyLXVjbGliYy1jb25mLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDAyLXVjbGliYy1jb25mLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZGEzYjEwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDAwMi11Y2xpYmMtY29uZi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLUZyb20gZDAzMDk3M2M4NzJjMDBkOTE2OTIxZDg0ZGVlZTBhZjJjMGQzODA4MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjM4OjI1ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDIvMzVdIHVjbGliYy1jb25mCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gY29udHJpYi9yZWdyZXNzaW9uL29ianMtZ2NjLnNoIHwgICAgNCArKysrCi0gbGliamF2YS9jbGFzc3BhdGgvbHRjb25maWcgICAgIHwgICAgNCArKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb250cmliL3JlZ3Jlc3Npb24vb2Jqcy1nY2Muc2ggYi9jb250cmliL3JlZ3Jlc3Npb24vb2Jqcy1nY2Muc2gKLWluZGV4IDYwYjA0OTcuLjZkYzdlYWQgMTAwNzU1Ci0tLS0gYS9jb250cmliL3JlZ3Jlc3Npb24vb2Jqcy1nY2Muc2gKLSsrKyBiL2NvbnRyaWIvcmVncmVzc2lvbi9vYmpzLWdjYy5zaAotQEAgLTEwNiw2ICsxMDYsMTAgQEAgaWYgWyAkSF9SRUFMX1RBUkdFVCA9ICRIX1JFQUxfSE9TVCAtYSAkSF9SRUFMX1RBUkdFVCA9IGk2ODYtcGMtbGludXgtZ251IF0KLSAgdGhlbgotICAgbWFrZSBhbGwtZ2RiIGFsbC1kZWphZ251IGFsbC1sZCB8fCBleGl0IDEKLSAgIG1ha2UgaW5zdGFsbC1nZGIgaW5zdGFsbC1kZWphZ251IGluc3RhbGwtbGQgfHwgZXhpdCAxCi0rZWxpZiBbICRIX1JFQUxfVEFSR0VUID0gJEhfUkVBTF9IT1NUIC1hICRIX1JFQUxfVEFSR0VUID0gaTY4Ni1wYy1saW51eC11Y2xpYmMgXQotKyB0aGVuCi0rICBtYWtlIGFsbC1nZGIgYWxsLWRlamFnbnUgYWxsLWxkIHx8IGV4aXQgMQotKyAgbWFrZSBpbnN0YWxsLWdkYiBpbnN0YWxsLWRlamFnbnUgaW5zdGFsbC1sZCB8fCBleGl0IDEKLSBlbGlmIFsgJEhfUkVBTF9UQVJHRVQgPSAkSF9SRUFMX0hPU1QgXSA7IHRoZW4KLSAgIG1ha2UgYm9vdHN0cmFwIHx8IGV4aXQgMQotICAgbWFrZSBpbnN0YWxsIHx8IGV4aXQgMQotZGlmZiAtLWdpdCBhL2xpYmphdmEvY2xhc3NwYXRoL2x0Y29uZmlnIGIvbGliamF2YS9jbGFzc3BhdGgvbHRjb25maWcKLWluZGV4IDc0M2Q5NTEuLmFlNGVhNjAgMTAwNzU1Ci0tLS0gYS9saWJqYXZhL2NsYXNzcGF0aC9sdGNvbmZpZwotKysrIGIvbGliamF2YS9jbGFzc3BhdGgvbHRjb25maWcKLUBAIC02MDMsNyArNjAzLDcgQEAgaG9zdF9vcz1gZWNobyAkaG9zdCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wzLydgCi0gCi0gIyBUcmFuc2Zvcm0gbGludXgqIHRvICotKi1saW51eC1nbnUqLCB0byBzdXBwb3J0IG9sZCBjb25maWd1cmUgc2NyaXB0cy4KLSBjYXNlICRob3N0X29zIGluCi0tbGludXgtZ251KikgOzsKLStsaW51eC1nbnUqfGxpbnV4LXVjbGliYyopIDs7Ci0gbGludXgqKSBob3N0PWBlY2hvICRob3N0IHwgc2VkICdzL15cKC4qLS4qLWxpbnV4XClcKC4qXCkkL1wxLWdudVwyLydgCi0gZXNhYwotIAotQEAgLTEyNDcsNyArMTI0Nyw3IEBAIGxpbnV4LWdudW9sZGxkKiB8IGxpbnV4LWdudWFvdXQqIHwgbGludXgtZ251Y29mZiopCi0gICA7OwotIAotICMgVGhpcyBtdXN0IGJlIExpbnV4IEVMRi4KLS1saW51eC1nbnUqKQotK2xpbnV4KikKLSAgIHZlcnNpb25fdHlwZT1saW51eAotICAgbmVlZF9saWJfcHJlZml4PW5vCi0gICBuZWVkX3ZlcnNpb249bm8KLS0tIAotMS43LjEwLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDAzLWdjYy11Y2xpYmMtbG9jYWxlLWN0eXBlX3RvdXBsb3dfdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDAwMy1nY2MtdWNsaWJjLWxvY2FsZS1jdHlwZV90b3VwbG93X3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwOThlOTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDAzLWdjYy11Y2xpYmMtbG9jYWxlLWN0eXBlX3RvdXBsb3dfdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLUZyb20gZDJkOWRkNzU2YzQzNTZkMTRkZDdhZTAwMzg1NjM0NGNiNGYzNzk4NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjQwOjEyICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDMvMzVdIGdjYy11Y2xpYmMtbG9jYWxlLWN0eXBlX3RvdXBsb3dfdAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL2dlbmVyaWMvY19sb2NhbGUuY2MgfCAgICA1ICsrKysrCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5oICB8ICAgIDkgKysrKysrKysrCi0gbGlic3RkYysrLXYzL2NvbmZpZy9vcy9nbnUtbGludXgvY3R5cGVfYmFzZS5oICB8ICAgIDkgKysrKysrKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCAyMyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS9nZW5lcmljL2NfbG9jYWxlLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5jYwotaW5kZXggMGQzMDlhNS4uZjJmMWUxZiAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL2dlbmVyaWMvY19sb2NhbGUuY2MKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL2dlbmVyaWMvY19sb2NhbGUuY2MKLUBAIC0yNjMsNSArMjYzLDEwIEBAIF9HTElCQ1hYX0VORF9OQU1FU1BBQ0VfVkVSU0lPTgotICNpZmRlZiBfR0xJQkNYWF9MT05HX0RPVUJMRV9DT01QQVQKLSAjZGVmaW5lIF9HTElCQ1hYX0xEQkxfQ09NUEFUKGRibCwgbGRibCkgXAotICAgZXh0ZXJuICJDIiB2b2lkIGxkYmwgKHZvaWQpIF9fYXR0cmlidXRlX18gKChhbGlhcyAoI2RibCkpKQotKyNpZmRlZiBfX1VDTElCQ19fCi0rLy8gVGhpcyBpcyBiZWNhdXNlIF9fY19sb2NhbGUgaXMgb2YgdHlwZSBfX2N0eXBlX3RvdXBsb3dfdCogd2hpY2ggaXMgc2hvcnQgb24gdWNsaWJjLiBmb3IgZ2xpYmMgaXRzIGludCoKLStfR0xJQkNYWF9MREJMX0NPTVBBVChfWlN0MTRfX2NvbnZlcnRfdG9fdklkRXZQS2NSVF9SU3QxMl9Jb3NfSW9zdGF0ZVJLUHMsIF9aU3QxNF9fY29udmVydF90b192SWVFdlBLY1JUX1JTdDEyX0lvc19Jb3N0YXRlUktQcyk7Ci0rI2Vsc2UKLSBfR0xJQkNYWF9MREJMX0NPTVBBVChfWlN0MTRfX2NvbnZlcnRfdG9fdklkRXZQS2NSVF9SU3QxMl9Jb3NfSW9zdGF0ZVJLUGksIF9aU3QxNF9fY29udmVydF90b192SWVFdlBLY1JUX1JTdDEyX0lvc19Jb3N0YXRlUktQaSk7Ci0rI2VuZGlmCi0gI2VuZGlmIC8vIF9HTElCQ1hYX0xPTkdfRE9VQkxFX0NPTVBBVAotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL2dlbmVyaWMvY19sb2NhbGUuaCBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL2dlbmVyaWMvY19sb2NhbGUuaAotaW5kZXggYjVmZDk4OS4uM2RhOWE1ZCAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL2dlbmVyaWMvY19sb2NhbGUuaAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5oCi1AQCAtNDAsMTMgKzQwLDIyIEBACi0gCi0gI2luY2x1ZGUgPGNsb2NhbGU+Ci0gCi0rI2lmZGVmIF9fVUNMSUJDX18KLSsjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSsjaW5jbHVkZSA8Y3R5cGUuaD4KLSsjZW5kaWYKLSsKLSAjZGVmaW5lIF9HTElCQ1hYX05VTV9DQVRFR09SSUVTIDAKLSAKLSBuYW1lc3BhY2Ugc3RkIF9HTElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkKLSB7Ci0gX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KLSAKLSsjaWZkZWYgX19VQ0xJQkNfXwotKyAgdHlwZWRlZiBfX2N0eXBlX3RvdXBsb3dfdCoJX19jX2xvY2FsZTsKLSsjZWxzZQotICAgdHlwZWRlZiBpbnQqCQkJX19jX2xvY2FsZTsKLSsjZW5kaWYKLSAKLSAgIC8vIENvbnZlcnQgbnVtZXJpYyB2YWx1ZSBvZiB0eXBlIGRvdWJsZSBhbmQgbG9uZyBkb3VibGUgdG8gc3RyaW5nIGFuZAotICAgLy8gcmV0dXJuIGxlbmd0aCBvZiBzdHJpbmcuICBJZiB2c25wcmludGYgaXMgYXZhaWxhYmxlIHVzZSBpdCwgb3RoZXJ3aXNlCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9vcy9nbnUtbGludXgvY3R5cGVfYmFzZS5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9vcy9nbnUtbGludXgvY3R5cGVfYmFzZS5oCi1pbmRleCAyZDhlOTc4Li4xNGViMDhmIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9vcy9nbnUtbGludXgvY3R5cGVfYmFzZS5oCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL29zL2dudS1saW51eC9jdHlwZV9iYXNlLmgKLUBAIC0zMyw2ICszMywxMSBAQAotIAotIC8vIEluZm9ybWF0aW9uIGFzIGdsZWFuZWQgZnJvbSAvdXNyL2luY2x1ZGUvY3R5cGUuaAotIAotKyNpZmRlZiBfX1VDTElCQ19fCi0rI2luY2x1ZGUgPGZlYXR1cmVzLmg+Ci0rI2luY2x1ZGUgPGN0eXBlLmg+Ci0rI2VuZGlmCi0rCi0gbmFtZXNwYWNlIHN0ZCBfR0xJQkNYWF9WSVNJQklMSVRZKGRlZmF1bHQpCi0gewotIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCi1AQCAtNDEsNyArNDYsMTEgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KLSAgIHN0cnVjdCBjdHlwZV9iYXNlCi0gICB7Ci0gICAgIC8vIE5vbi1zdGFuZGFyZCB0eXBlZGVmcy4KLSsjaWZkZWYgX19VQ0xJQkNfXwotKyAgICB0eXBlZGVmIGNvbnN0IF9fY3R5cGVfdG91cGxvd190KglfX3RvX3R5cGU7Ci0rI2Vsc2UKLSAgICAgdHlwZWRlZiBjb25zdCBpbnQqIAkJX190b190eXBlOwotKyNlbmRpZgotIAotICAgICAvLyBOQjogT2Zmc2V0cyBpbnRvIGN0eXBlPGNoYXI+OjpfTV90YWJsZSBmb3JjZSBhIHBhcnRpY3VsYXIgc2l6ZQotICAgICAvLyBvbiB0aGUgbWFzayB0eXBlLiBCZWNhdXNlIG9mIHRoaXMsIHdlIGRvbid0IHVzZSBhbiBlbnVtLgotLS0gCi0xLjcuMTAuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwMDQtdWNsaWJjLWxvY2FsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDAwNC11Y2xpYmMtbG9jYWxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OWY1ZjMzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDAwNC11Y2xpYmMtbG9jYWxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjg2MiArMCwwIEBACi1Gcm9tIGE1NWM3NTFhNDQ5YzJjYmYwYjNmY2MwN2FhYjFiODZiZjk2NjE1MTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODo0MTozOSArMDQwMAotU3ViamVjdDogW1BBVENIIDA0LzM1XSB1Y2xpYmMtbG9jYWxlCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gbGlic3RkYysrLXYzL2FjaW5jbHVkZS5tNCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDM3ICsrCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oICAgICAgfCAgIDYzICsrCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjICAgICAgfCAgMTYwICsrKysrCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmggICAgICAgfCAgMTE3ICsrKysKLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvY29kZWN2dF9tZW1iZXJzLmNjICAgICAgICB8ICAzMDggKysrKysrKysrCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvbGxhdGVfbWVtYmVycy5jYyAgICAgICAgfCAgIDgwICsrKwotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjIHwgIDMwMCArKysrKysrKysKLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5jYyAgICAgICB8ICAxMDAgKysrCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaCAgICAgICAgfCAgMTE4ICsrKysKLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYyAgICAgICB8ICA2OTIgKysrKysrKysrKysrKysrKysrKysKLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjICAgICAgICB8ICAxNjAgKysrKysKLSBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjICB8ICA0MDYgKysrKysrKysrKysrCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oICAgfCAgIDY4ICsrCi0gbGlic3RkYysrLXYzL2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDc1ICsrKwotIGxpYnN0ZGMrKy12My9pbmNsdWRlL2NfY29tcGF0aWJpbGl0eS93Y2hhci5oICAgICAgIHwgICAgMiArCi0gbGlic3RkYysrLXYzL2luY2x1ZGUvY19zdGQvY3djaGFyICAgICAgICAgICAgICAgICAgfCAgICAyICsKLSAxNiBmaWxlcyBjaGFuZ2VkLCAyNjg4IGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaAotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY29kZWN2dF9tZW1iZXJzLmNjCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jb2xsYXRlX21lbWJlcnMuY2MKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuY2MKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaAotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oCi0KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvYWNpbmNsdWRlLm00IGIvbGlic3RkYysrLXYzL2FjaW5jbHVkZS5tNAotaW5kZXggMDg3MWE2YS4uMzI2ZDdlZiAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9hY2luY2x1ZGUubTQKLSsrKyBiL2xpYnN0ZGMrKy12My9hY2luY2x1ZGUubTQKLUBAIC0xOTA1LDYgKzE5MDUsOSBAQCBBQ19ERUZVTihbR0xJQkNYWF9FTkFCTEVfQ0xPQ0FMRV0sIFsKLSAgICMgRGVmYXVsdCB0byAiZ2VuZXJpYyIuCi0gICBpZiB0ZXN0ICRlbmFibGVfY2xvY2FsZV9mbGFnID0gYXV0bzsgdGhlbgotICAgICBjYXNlICR7dGFyZ2V0X29zfSBpbgotKyAgICAgICotdWNsaWJjKikKLSsgICAgICAgIGVuYWJsZV9jbG9jYWxlX2ZsYWc9dWNsaWJjCi0rICAgICAgICA7OwotICAgICAgIGxpbnV4KiB8IGdudSogfCBrZnJlZWJzZCotZ251IHwga25ldGJzZCotZ251KQotIAllbmFibGVfY2xvY2FsZV9mbGFnPWdudQotIAk7OwotQEAgLTIwNjksNiArMjA3Miw0MCBAQCBBQ19ERUZVTihbR0xJQkNYWF9FTkFCTEVfQ0xPQ0FMRV0sIFsKLSAgICAgICBDVElNRV9DQz1jb25maWcvbG9jYWxlL2dlbmVyaWMvdGltZV9tZW1iZXJzLmNjCi0gICAgICAgQ0xPQ0FMRV9JTlRFUk5BTF9IPWNvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jKytsb2NhbGVfaW50ZXJuYWwuaAotICAgICAgIDs7Ci0rICAgIHVjbGliYykKLSsgICAgICBBQ19NU0dfUkVTVUxUKHVjbGliYykKLSsKLSsgICAgICAjIERlY2xhcmUgaW50ZW50aW9uIHRvIHVzZSBnZXR0ZXh0LCBhbmQgYWRkIHN1cHBvcnQgZm9yIHNwZWNpZmljCi0rICAgICAgIyBsYW5ndWFnZXMuCi0rICAgICAgIyBGb3Igc29tZSByZWFzb24sIEFMTF9MSU5HVUFTIGhhcyB0byBiZSBiZWZvcmUgQU0tR05VLUdFVFRFWFQKLSsgICAgICBBTExfTElOR1VBUz0iZGUgZnIiCi0rCi0rICAgICAgIyBEb24ndCBjYWxsIEFNLUdOVS1HRVRURVhUIGhlcmUuIEluc3RlYWQsIGFzc3VtZSBnbGliYy4KLSsgICAgICBBQ19DSEVDS19QUk9HKGNoZWNrX21zZ2ZtdCwgbXNnZm10LCB5ZXMsIG5vKQotKyAgICAgIGlmIHRlc3QgeCIkY2hlY2tfbXNnZm10IiA9IHgieWVzIiAmJiB0ZXN0IHgiJGVuYWJsZV9ubHMiID0geCJ5ZXMiOyB0aGVuCi0rICAgICAgICBVU0VfTkxTPXllcwotKyAgICAgIGZpCi0rICAgICAgIyBFeHBvcnQgdGhlIGJ1aWxkIG9iamVjdHMuCi0rICAgICAgZm9yIGxpbmcgaW4gJEFMTF9MSU5HVUFTOyBkbyBcCi0rICAgICAgICBnbGliY3h4X01PRklMRVM9IiRnbGliY3h4X01PRklMRVMgJGxpbmcubW8iOyBcCi0rICAgICAgICBnbGliY3h4X1BPRklMRVM9IiRnbGliY3h4X1BPRklMRVMgJGxpbmcucG8iOyBcCi0rICAgICAgZG9uZQotKyAgICAgIEFDX1NVQlNUKGdsaWJjeHhfTU9GSUxFUykKLSsgICAgICBBQ19TVUJTVChnbGliY3h4X1BPRklMRVMpCi0rCi0rICAgICAgQ0xPQ0FMRV9IPWNvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmgKLSsgICAgICBDTE9DQUxFX0NDPWNvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCi0rICAgICAgQ0NPREVDVlRfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvY29kZWN2dF9tZW1iZXJzLmNjCi0rICAgICAgQ0NPTExBVEVfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvY29sbGF0ZV9tZW1iZXJzLmNjCi0rICAgICAgQ0NUWVBFX0NDPWNvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MKLSsgICAgICBDTUVTU0FHRVNfSD1jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmgKLSsgICAgICBDTUVTU0FHRVNfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5jYwotKyAgICAgIENNT05FWV9DQz1jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCi0rICAgICAgQ05VTUVSSUNfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjCi0rICAgICAgQ1RJTUVfSD1jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuaAotKyAgICAgIENUSU1FX0NDPWNvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYwotKyAgICAgIENMT0NBTEVfSU5URVJOQUxfSD1jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaAotKyAgICAgIDs7Ci0gICBlc2FjCi0gCi0gICAjIFRoaXMgaXMgd2hlcmUgdGhlIHRlc3RzdWl0ZSBsb29rcyBmb3IgbG9jYWxlIGNhdGFsb2dzLCB1c2luZyB0aGUKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmggYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4yYWUzZTRhCi0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmgKLUBAIC0wLDAgKzEsNjMgQEAKLSsvLyBQcm90b3R5cGVzIGZvciBHTElCQyB0aHJlYWQgbG9jYWxlIF9fLXByZWZpeGVkIGZ1bmN0aW9ucyAtKi0gQysrIC0qLQotKwotKy8vIENvcHlyaWdodCAoQykgMjAwMiwgMjAwNCwgMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvLwotKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKLSsvLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKLSsvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKy8vIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKy8vIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rLy8gU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rLy8gVVNBLgotKwotKy8vIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgdXNlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgZnJlZSBzb2Z0d2FyZQotKy8vIGxpYnJhcnkgd2l0aG91dCByZXN0cmljdGlvbi4gIFNwZWNpZmljYWxseSwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUKLSsvLyB0ZW1wbGF0ZXMgb3IgdXNlIG1hY3JvcyBvciBpbmxpbmUgZnVuY3Rpb25zIGZyb20gdGhpcyBmaWxlLCBvciB5b3UgY29tcGlsZQotKy8vIHRoaXMgZmlsZSBhbmQgbGluayBpdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gZXhlY3V0YWJsZSwgdGhpcwotKy8vIGZpbGUgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlcgotKy8vIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSBleGVjdXRhYmxlIGZpbGUgbWlnaHQgYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLSsKLSsvLyBXcml0dGVuIGJ5IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+Ci0rCi0rI2luY2x1ZGUgPGJpdHMvYysrY29uZmlnLmg+Ci0rI2luY2x1ZGUgPGNsb2NhbGU+Ci0rCi0rI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0rI3dhcm5pbmcgY2xlYW4gdGhpcyB1cAotKyNlbmRpZgotKwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rCi0rZXh0ZXJuICJDIiBfX3R5cGVvZihubF9sYW5naW5mb19sKSBfX25sX2xhbmdpbmZvX2w7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZihzdHJjb2xsX2wpIF9fc3RyY29sbF9sOwotK2V4dGVybiAiQyIgX190eXBlb2Yoc3RyZnRpbWVfbCkgX19zdHJmdGltZV9sOwotK2V4dGVybiAiQyIgX190eXBlb2Yoc3RydG9kX2wpIF9fc3RydG9kX2w7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZihzdHJ0b2ZfbCkgX19zdHJ0b2ZfbDsKLStleHRlcm4gIkMiIF9fdHlwZW9mKHN0cnRvbGRfbCkgX19zdHJ0b2xkX2w7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZihzdHJ4ZnJtX2wpIF9fc3RyeGZybV9sOwotK2V4dGVybiAiQyIgX190eXBlb2YobmV3bG9jYWxlKSBfX25ld2xvY2FsZTsKLStleHRlcm4gIkMiIF9fdHlwZW9mKGZyZWVsb2NhbGUpIF9fZnJlZWxvY2FsZTsKLStleHRlcm4gIkMiIF9fdHlwZW9mKGR1cGxvY2FsZSkgX19kdXBsb2NhbGU7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZih1c2Vsb2NhbGUpIF9fdXNlbG9jYWxlOwotKwotKyNpZmRlZiBfR0xJQkNYWF9VU0VfV0NIQVJfVAotK2V4dGVybiAiQyIgX190eXBlb2YoaXN3Y3R5cGVfbCkgX19pc3djdHlwZV9sOwotK2V4dGVybiAiQyIgX190eXBlb2YodG93bG93ZXJfbCkgX190b3dsb3dlcl9sOwotK2V4dGVybiAiQyIgX190eXBlb2YodG93dXBwZXJfbCkgX190b3d1cHBlcl9sOwotK2V4dGVybiAiQyIgX190eXBlb2Yod2NzY29sbF9sKSBfX3djc2NvbGxfbDsKLStleHRlcm4gIkMiIF9fdHlwZW9mKHdjc2Z0aW1lX2wpIF9fd2NzZnRpbWVfbDsKLStleHRlcm4gIkMiIF9fdHlwZW9mKHdjc3hmcm1fbCkgX193Y3N4ZnJtX2w7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZih3Y3R5cGVfbCkgX193Y3R5cGVfbDsKLSsjZW5kaWYKLSsKLSsjZW5kaWYgLy8gR0xJQkMgMi4zIGFuZCBsYXRlcgotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjUwODFkYzEKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYwotQEAgLTAsMCArMSwxNjAgQEAKLSsvLyBXcmFwcGVyIGZvciB1bmRlcmx5aW5nIEMtbGFuZ3VhZ2UgbG9jYWxpemF0aW9uIC0qLSBDKysgLSotCi0rCi0rLy8gQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyLCAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8vCi0rLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQotKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQotKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rLy8gYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsvLyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsvLyBVU0EuCi0rCi0rLy8gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSB1c2UgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBmcmVlIHNvZnR3YXJlCi0rLy8gbGlicmFyeSB3aXRob3V0IHJlc3RyaWN0aW9uLiAgU3BlY2lmaWNhbGx5LCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZQotKy8vIHRlbXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5jdGlvbnMgZnJvbSB0aGlzIGZpbGUsIG9yIHlvdSBjb21waWxlCi0rLy8gdGhpcyBmaWxlIGFuZCBsaW5rIGl0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzCi0rLy8gZmlsZSBkb2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyCi0rLy8gaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotKwotKy8vCi0rLy8gSVNPIEMrKyAxNDg4MjogMjIuOCAgU3RhbmRhcmQgbG9jYWxlIGNhdGVnb3JpZXMuCi0rLy8KLSsKLSsvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotKwotKyNpbmNsdWRlIDxjZXJybm8+ICAvLyBGb3IgZXJybm8KLSsjaW5jbHVkZSA8bG9jYWxlPgotKyNpbmNsdWRlIDxzdGRleGNlcHQ+Ci0rI2luY2x1ZGUgPGxhbmdpbmZvLmg+Ci0rI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+Ci0rCi0rI2lmbmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rI2RlZmluZSBfX3N0cnRvbF9sKFMsIEUsIEIsIEwpICAgICAgc3RydG9sKChTKSwgKEUpLCAoQikpCi0rI2RlZmluZSBfX3N0cnRvdWxfbChTLCBFLCBCLCBMKSAgICAgc3RydG91bCgoUyksIChFKSwgKEIpKQotKyNkZWZpbmUgX19zdHJ0b2xsX2woUywgRSwgQiwgTCkgICAgIHN0cnRvbGwoKFMpLCAoRSksIChCKSkKLSsjZGVmaW5lIF9fc3RydG91bGxfbChTLCBFLCBCLCBMKSAgICBzdHJ0b3VsbCgoUyksIChFKSwgKEIpKQotKyNkZWZpbmUgX19zdHJ0b2ZfbChTLCBFLCBMKSAgICAgICAgIHN0cnRvZigoUyksIChFKSkKLSsjZGVmaW5lIF9fc3RydG9kX2woUywgRSwgTCkgICAgICAgICBzdHJ0b2QoKFMpLCAoRSkpCi0rI2RlZmluZSBfX3N0cnRvbGRfbChTLCBFLCBMKSAgICAgICAgc3RydG9sZCgoUyksIChFKSkKLSsjd2FybmluZyBzaG91bGQgZHVtbXkgX19uZXdsb2NhbGUgY2hlY2sgZm9yIEN8UE9TSVggPwotKyNkZWZpbmUgX19uZXdsb2NhbGUoYSwgYiwgYykgICAgICAgIE5VTEwKLSsjZGVmaW5lIF9fZnJlZWxvY2FsZShhKSAgICAgICAgICAgICAoKHZvaWQpMCkKLSsjZGVmaW5lIF9fZHVwbG9jYWxlKGEpICAgICAgICAgICAgICBfX2NfbG9jYWxlKCkKLSsjZW5kaWYKLSsKLStuYW1lc3BhY2Ugc3RkCi0rewotKyAgdGVtcGxhdGU8PgotKyAgICB2b2lkCi0rICAgIF9fY29udmVydF90b192KGNvbnN0IGNoYXIqIF9fcywgZmxvYXQmIF9fdiwgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLAotKwkJICAgY29uc3QgX19jX2xvY2FsZSYgX19jbG9jKQotKyAgICB7Ci0rICAgICAgaWYgKCEoX19lcnIgJiBpb3NfYmFzZTo6ZmFpbGJpdCkpCi0rCXsKLSsJICBjaGFyKiBfX3Nhbml0eTsKLSsJICBlcnJubyA9IDA7Ci0rCSAgZmxvYXQgX19mID0gX19zdHJ0b2ZfbChfX3MsICZfX3Nhbml0eSwgX19jbG9jKTsKLSsgICAgICAgICAgaWYgKF9fc2FuaXR5ICE9IF9fcyAmJiBlcnJubyAhPSBFUkFOR0UpCi0rCSAgICBfX3YgPSBfX2Y7Ci0rCSAgZWxzZQotKwkgICAgX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7Ci0rCX0KLSsgICAgfQotKwotKyAgdGVtcGxhdGU8PgotKyAgICB2b2lkCi0rICAgIF9fY29udmVydF90b192KGNvbnN0IGNoYXIqIF9fcywgZG91YmxlJiBfX3YsIGlvc19iYXNlOjppb3N0YXRlJiBfX2VyciwKLSsJCSAgIGNvbnN0IF9fY19sb2NhbGUmIF9fY2xvYykKLSsgICAgewotKyAgICAgIGlmICghKF9fZXJyICYgaW9zX2Jhc2U6OmZhaWxiaXQpKQotKwl7Ci0rCSAgY2hhciogX19zYW5pdHk7Ci0rCSAgZXJybm8gPSAwOwotKwkgIGRvdWJsZSBfX2QgPSBfX3N0cnRvZF9sKF9fcywgJl9fc2FuaXR5LCBfX2Nsb2MpOwotKyAgICAgICAgICBpZiAoX19zYW5pdHkgIT0gX19zICYmIGVycm5vICE9IEVSQU5HRSkKLSsJICAgIF9fdiA9IF9fZDsKLSsJICBlbHNlCi0rCSAgICBfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKLSsJfQotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHZvaWQKLSsgICAgX19jb252ZXJ0X3RvX3YoY29uc3QgY2hhciogX19zLCBsb25nIGRvdWJsZSYgX192LCBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsCi0rCQkgICBjb25zdCBfX2NfbG9jYWxlJiBfX2Nsb2MpCi0rICAgIHsKLSsgICAgICBpZiAoIShfX2VyciAmIGlvc19iYXNlOjpmYWlsYml0KSkKLSsJewotKwkgIGNoYXIqIF9fc2FuaXR5OwotKwkgIGVycm5vID0gMDsKLSsJICBsb25nIGRvdWJsZSBfX2xkID0gX19zdHJ0b2xkX2woX19zLCAmX19zYW5pdHksIF9fY2xvYyk7Ci0rICAgICAgICAgIGlmIChfX3Nhbml0eSAhPSBfX3MgJiYgZXJybm8gIT0gRVJBTkdFKQotKwkgICAgX192ID0gX19sZDsKLSsJICBlbHNlCi0rCSAgICBfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKLSsJfQotKyAgICB9Ci0rCi0rICB2b2lkCi0rICBsb2NhbGU6OmZhY2V0OjpfU19jcmVhdGVfY19sb2NhbGUoX19jX2xvY2FsZSYgX19jbG9jLCBjb25zdCBjaGFyKiBfX3MsCi0rCQkJCSAgICBfX2NfbG9jYWxlIF9fb2xkKQotKyAgewotKyAgICBfX2Nsb2MgPSBfX25ld2xvY2FsZSgxIDw8IExDX0FMTCwgX19zLCBfX29sZCk7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgaWYgKCFfX2Nsb2MpCi0rICAgICAgewotKwkvLyBUaGlzIG5hbWVkIGxvY2FsZSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSB1bmRlcmx5aW5nIE9TLgotKwlfX3Rocm93X3J1bnRpbWVfZXJyb3IoX19OKCJsb2NhbGU6OmZhY2V0OjpfU19jcmVhdGVfY19sb2NhbGUgIgotKwkJCSAgICAgICJuYW1lIG5vdCB2YWxpZCIpKTsKLSsgICAgICB9Ci0rI2VuZGlmCi0rICB9Ci0rCi0rICB2b2lkCi0rICBsb2NhbGU6OmZhY2V0OjpfU19kZXN0cm95X2NfbG9jYWxlKF9fY19sb2NhbGUmIF9fY2xvYykKLSsgIHsKLSsgICAgaWYgKF9TX2dldF9jX2xvY2FsZSgpICE9IF9fY2xvYykKLSsgICAgICBfX2ZyZWVsb2NhbGUoX19jbG9jKTsKLSsgIH0KLSsKLSsgIF9fY19sb2NhbGUKLSsgIGxvY2FsZTo6ZmFjZXQ6Ol9TX2Nsb25lX2NfbG9jYWxlKF9fY19sb2NhbGUmIF9fY2xvYykKLSsgIHsgcmV0dXJuIF9fZHVwbG9jYWxlKF9fY2xvYyk7IH0KLSt9IC8vIG5hbWVzcGFjZSBzdGQKLSsKLStuYW1lc3BhY2UgX19nbnVfY3h4Ci0rewotKyAgY29uc3QgY2hhciogY29uc3QgY2F0ZWdvcnlfbmFtZXNbNiArIF9HTElCQ1hYX05VTV9DQVRFR09SSUVTXSA9Ci0rICAgIHsKLSsgICAgICAiTENfQ1RZUEUiLAotKyAgICAgICJMQ19OVU1FUklDIiwKLSsgICAgICAiTENfVElNRSIsCi0rICAgICAgIkxDX0NPTExBVEUiLAotKyAgICAgICJMQ19NT05FVEFSWSIsCi0rICAgICAgIkxDX01FU1NBR0VTIiwKLSsjaWYgX0dMSUJDWFhfTlVNX0NBVEVHT1JJRVMgIT0gMAotKyAgICAgICJMQ19QQVBFUiIsCi0rICAgICAgIkxDX05BTUUiLAotKyAgICAgICJMQ19BRERSRVNTIiwKLSsgICAgICAiTENfVEVMRVBIT05FIiwKLSsgICAgICAiTENfTUVBU1VSRU1FTlQiLAotKyAgICAgICJMQ19JREVOVElGSUNBVElPTiIKLSsjZW5kaWYKLSsgICAgfTsKLSt9Ci0rCi0rbmFtZXNwYWNlIHN0ZAotK3sKLSsgIGNvbnN0IGNoYXIqIGNvbnN0KiBjb25zdCBsb2NhbGU6Ol9TX2NhdGVnb3JpZXMgPSBfX2dudV9jeHg6OmNhdGVnb3J5X25hbWVzOwotK30gIC8vIG5hbWVzcGFjZSBzdGQKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaCBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZGEwN2MxZgotLS0tIC9kZXYvbnVsbAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmgKLUBAIC0wLDAgKzEsMTE3IEBACi0rLy8gV3JhcHBlciBmb3IgdW5kZXJseWluZyBDLWxhbmd1YWdlIGxvY2FsaXphdGlvbiAtKi0gQysrIC0qLQotKwotKy8vIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvLwotKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKLSsvLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKLSsvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKy8vIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKy8vIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rLy8gU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rLy8gVVNBLgotKwotKy8vIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgdXNlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgZnJlZSBzb2Z0d2FyZQotKy8vIGxpYnJhcnkgd2l0aG91dCByZXN0cmljdGlvbi4gIFNwZWNpZmljYWxseSwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUKLSsvLyB0ZW1wbGF0ZXMgb3IgdXNlIG1hY3JvcyBvciBpbmxpbmUgZnVuY3Rpb25zIGZyb20gdGhpcyBmaWxlLCBvciB5b3UgY29tcGlsZQotKy8vIHRoaXMgZmlsZSBhbmQgbGluayBpdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gZXhlY3V0YWJsZSwgdGhpcwotKy8vIGZpbGUgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlcgotKy8vIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSBleGVjdXRhYmxlIGZpbGUgbWlnaHQgYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLSsKLSsvLwotKy8vIElTTyBDKysgMTQ4ODI6IDIyLjggIFN0YW5kYXJkIGxvY2FsZSBjYXRlZ29yaWVzLgotKy8vCi0rCi0rLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KLSsKLSsjaWZuZGVmIF9DX0xPQ0FMRV9ICi0rI2RlZmluZSBfQ19MT0NBTEVfSCAxCi0rCi0rI3ByYWdtYSBHQ0Mgc3lzdGVtX2hlYWRlcgotKwotKyNpbmNsdWRlIDxjc3RyaW5nPiAgICAgICAgICAgICAgLy8gZ2V0IHN0ZDo6c3RybGVuCi0rI2luY2x1ZGUgPGNzdGRpbz4gICAgICAgICAgICAgICAvLyBnZXQgc3RkOjpzbnByaW50ZiBvciBzdGQ6OnNwcmludGYKLSsjaW5jbHVkZSA8Y2xvY2FsZT4KLSsjaW5jbHVkZSA8bGFuZ2luZm8uaD4JCS8vIEZvciBjb2RlY3Z0Ci0rI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0rI3dhcm5pbmcgZml4IHRoaXMKLSsjZW5kaWYKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX0xPQ0FMRV9fCi0rI2luY2x1ZGUgPGljb252Lmg+CQkvLyBGb3IgY29kZWN2dCB1c2luZyBpY29udiwgaWNvbnZfdAotKyNlbmRpZgotKyNpZmRlZiBfX1VDTElCQ19IQVNfR0VUVEVYVF9BV0FSRU5FU1NfXwotKyNpbmNsdWRlIDxsaWJpbnRsLmg+IAkJLy8gRm9yIG1lc3NhZ2VzCi0rI2VuZGlmCi0rCi0rI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0rI3dhcm5pbmcgd2hhdCBpcyBfR0xJQkNYWF9DX0xPQ0FMRV9HTlUgZm9yCi0rI2VuZGlmCi0rI2RlZmluZSBfR0xJQkNYWF9DX0xPQ0FMRV9HTlUgMQotKwotKyNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotKyN3YXJuaW5nIGZpeCBjYXRlZ29yaWVzCi0rI2VuZGlmCi0rLy8gI2RlZmluZSBfR0xJQkNYWF9OVU1fQ0FURUdPUklFUyA2Ci0rI2RlZmluZSBfR0xJQkNYWF9OVU1fQ0FURUdPUklFUyAwCi0rCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLStuYW1lc3BhY2UgX19nbnVfY3h4Ci0rewotKyAgZXh0ZXJuICJDIiBfX3R5cGVvZih1c2Vsb2NhbGUpIF9fdXNlbG9jYWxlOwotK30KLSsjZW5kaWYKLSsKLStuYW1lc3BhY2Ugc3RkCi0rewotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICB0eXBlZGVmIF9fbG9jYWxlX3QJCV9fY19sb2NhbGU7Ci0rI2Vsc2UKLSsgIHR5cGVkZWYgaW50KgkJCV9fY19sb2NhbGU7Ci0rI2VuZGlmCi0rCi0rICAvLyBDb252ZXJ0IG51bWVyaWMgdmFsdWUgb2YgdHlwZSBfVHYgdG8gc3RyaW5nIGFuZCByZXR1cm4gbGVuZ3RoIG9mCi0rICAvLyBzdHJpbmcuICBJZiBzbnByaW50ZiBpcyBhdmFpbGFibGUgdXNlIGl0LCBvdGhlcndpc2UgZmFsbCBiYWNrIHRvCi0rICAvLyB0aGUgdW5zYWZlIHNwcmludGYgd2hpY2gsIGluIGdlbmVyYWwsIGNhbiBiZSBkYW5nZXJvdXMgYW5kIHNob3VsZAotKyAgLy8gYmUgYXZvaWRlZC4KLSsgIHRlbXBsYXRlPHR5cGVuYW1lIF9Udj4KLSsgICAgaW50Ci0rICAgIF9fY29udmVydF9mcm9tX3YoY2hhciogX19vdXQsCi0rCQkgICAgIGNvbnN0IGludCBfX3NpemUgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKSwKLSsJCSAgICAgY29uc3QgY2hhciogX19mbXQsCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YQ0xPQ0FMRV9fCi0rCQkgICAgIF9UdiBfX3YsIGNvbnN0IF9fY19sb2NhbGUmIF9fY2xvYywgaW50IF9fcHJlYykKLSsgICAgewotKyAgICAgIF9fY19sb2NhbGUgX19vbGQgPSBfX2dudV9jeHg6Ol9fdXNlbG9jYWxlKF9fY2xvYyk7Ci0rI2Vsc2UKLSsJCSAgICAgX1R2IF9fdiwgY29uc3QgX19jX2xvY2FsZSYsIGludCBfX3ByZWMpCi0rICAgIHsKLSsjIGlmZGVmIF9fVUNMSUJDX0hBU19MT0NBTEVfXwotKyAgICAgIGNoYXIqIF9fb2xkID0gc3RkOjpzZXRsb2NhbGUoTENfQUxMLCBOVUxMKTsKLSsgICAgICBjaGFyKiBfX3NhdiA9IG5ldyBjaGFyW3N0ZDo6c3RybGVuKF9fb2xkKSArIDFdOwotKyAgICAgIHN0ZDo6c3RyY3B5KF9fc2F2LCBfX29sZCk7Ci0rICAgICAgc3RkOjpzZXRsb2NhbGUoTENfQUxMLCAiQyIpOwotKyMgZW5kaWYKLSsjZW5kaWYKLSsKLSsgICAgICBjb25zdCBpbnQgX19yZXQgPSBzdGQ6OnNucHJpbnRmKF9fb3V0LCBfX3NpemUsIF9fZm10LCBfX3ByZWMsIF9fdik7Ci0rCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YQ0xPQ0FMRV9fCi0rICAgICAgX19nbnVfY3h4OjpfX3VzZWxvY2FsZShfX29sZCk7Ci0rI2VsaWYgZGVmaW5lZCBfX1VDTElCQ19IQVNfTE9DQUxFX18KLSsgICAgICBzdGQ6OnNldGxvY2FsZShMQ19BTEwsIF9fc2F2KTsKLSsgICAgICBkZWxldGUgW10gX19zYXY7Ci0rI2VuZGlmCi0rICAgICAgcmV0dXJuIF9fcmV0OwotKyAgICB9Ci0rfQotKwotKyNlbmRpZgotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jb2RlY3Z0X21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY29kZWN2dF9tZW1iZXJzLmNjCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNjRhYTk2MgotLS0tIC9kZXYvbnVsbAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvZGVjdnRfbWVtYmVycy5jYwotQEAgLTAsMCArMSwzMDggQEAKLSsvLyBzdGQ6OmNvZGVjdnQgaW1wbGVtZW50YXRpb24gZGV0YWlscywgR05VIHZlcnNpb24gLSotIEMrKyAtKi0KLSsKLSsvLyBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLy8KLSsvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCi0rLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCi0rLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKy8vIFVTQS4KLSsKLSsvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUKLSsvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlCi0rLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUKLSsvLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMKLSsvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIKLSsvLyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rCi0rLy8KLSsvLyBJU08gQysrIDE0ODgyOiAyMi4yLjEuNSAtIFRlbXBsYXRlIGNsYXNzIGNvZGVjdnQKLSsvLwotKwotKy8vIFdyaXR0ZW4gYnkgQmVuamFtaW4gS29zbmlrIDxia296QHJlZGhhdC5jb20+Ci0rCi0rI2luY2x1ZGUgPGxvY2FsZT4KLSsjaW5jbHVkZSA8Y3N0ZGxpYj4gIC8vIEZvciBNQl9DVVJfTUFYCi0rI2luY2x1ZGUgPGNsaW1pdHM+ICAvLyBGb3IgTUJfTEVOX01BWAotKyNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgotKwotK25hbWVzcGFjZSBzdGQKLSt7Ci0rICAvLyBTcGVjaWFsaXphdGlvbnMuCi0rI2lmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0rICBjb2RlY3Z0X2Jhc2U6OnJlc3VsdAotKyAgY29kZWN2dDx3Y2hhcl90LCBjaGFyLCBtYnN0YXRlX3Q+OjoKLSsgIGRvX291dChzdGF0ZV90eXBlJiBfX3N0YXRlLCBjb25zdCBpbnRlcm5fdHlwZSogX19mcm9tLAotKwkgY29uc3QgaW50ZXJuX3R5cGUqIF9fZnJvbV9lbmQsIGNvbnN0IGludGVybl90eXBlKiYgX19mcm9tX25leHQsCi0rCSBleHRlcm5fdHlwZSogX190bywgZXh0ZXJuX3R5cGUqIF9fdG9fZW5kLAotKwkgZXh0ZXJuX3R5cGUqJiBfX3RvX25leHQpIGNvbnN0Ci0rICB7Ci0rICAgIHJlc3VsdCBfX3JldCA9IG9rOwotKyAgICBzdGF0ZV90eXBlIF9fdG1wX3N0YXRlKF9fc3RhdGUpOwotKwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgIF9fY19sb2NhbGUgX19vbGQgPSBfX3VzZWxvY2FsZShfTV9jX2xvY2FsZV9jb2RlY3Z0KTsKLSsjZW5kaWYKLSsKLSsgICAgLy8gd2NzbnJ0b21icyBpcyAqdmVyeSogZmFzdCBidXQgc3RvcHMgaWYgZW5jb3VudGVycyBOVUwgY2hhcmFjdGVyczoKLSsgICAgLy8gaW4gY2FzZSB3ZSBmYWxsIGJhY2sgdG8gd2NydG9tYiBhbmQgdGhlbiBjb250aW51ZSwgaW4gYSBsb29wLgotKyAgICAvLyBOQjogd2NzbnJ0b21icyBpcyBhIEdOVSBleHRlbnNpb24KLSsgICAgZm9yIChfX2Zyb21fbmV4dCA9IF9fZnJvbSwgX190b19uZXh0ID0gX190bzsKLSsJIF9fZnJvbV9uZXh0IDwgX19mcm9tX2VuZCAmJiBfX3RvX25leHQgPCBfX3RvX2VuZAotKwkgJiYgX19yZXQgPT0gb2s7KQotKyAgICAgIHsKLSsJY29uc3QgaW50ZXJuX3R5cGUqIF9fZnJvbV9jaHVua19lbmQgPSB3bWVtY2hyKF9fZnJvbV9uZXh0LCBMJ1wwJywKLSsJCQkJCQkgICAgICBfX2Zyb21fZW5kIC0gX19mcm9tX25leHQpOwotKwlpZiAoIV9fZnJvbV9jaHVua19lbmQpCi0rCSAgX19mcm9tX2NodW5rX2VuZCA9IF9fZnJvbV9lbmQ7Ci0rCi0rCV9fZnJvbSA9IF9fZnJvbV9uZXh0OwotKwljb25zdCBzaXplX3QgX19jb252ID0gd2NzbnJ0b21icyhfX3RvX25leHQsICZfX2Zyb21fbmV4dCwKLSsJCQkJCSBfX2Zyb21fY2h1bmtfZW5kIC0gX19mcm9tX25leHQsCi0rCQkJCQkgX190b19lbmQgLSBfX3RvX25leHQsICZfX3N0YXRlKTsKLSsJaWYgKF9fY29udiA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KC0xKSkKLSsJICB7Ci0rCSAgICAvLyBJbiBjYXNlIG9mIGVycm9yLCBpbiBvcmRlciB0byBzdG9wIGF0IHRoZSBleGFjdCBwbGFjZSB3ZQotKwkgICAgLy8gaGF2ZSB0byBzdGFydCBhZ2FpbiBmcm9tIHRoZSBiZWdpbm5pbmcgd2l0aCBhIHNlcmllcyBvZgotKwkgICAgLy8gd2NydG9tYi4KLSsJICAgIGZvciAoOyBfX2Zyb20gPCBfX2Zyb21fbmV4dDsgKytfX2Zyb20pCi0rCSAgICAgIF9fdG9fbmV4dCArPSB3Y3J0b21iKF9fdG9fbmV4dCwgKl9fZnJvbSwgJl9fdG1wX3N0YXRlKTsKLSsJICAgIF9fc3RhdGUgPSBfX3RtcF9zdGF0ZTsKLSsJICAgIF9fcmV0ID0gZXJyb3I7Ci0rCSAgfQotKwllbHNlIGlmIChfX2Zyb21fbmV4dCAmJiBfX2Zyb21fbmV4dCA8IF9fZnJvbV9jaHVua19lbmQpCi0rCSAgewotKwkgICAgX190b19uZXh0ICs9IF9fY29udjsKLSsJICAgIF9fcmV0ID0gcGFydGlhbDsKLSsJICB9Ci0rCWVsc2UKLSsJICB7Ci0rCSAgICBfX2Zyb21fbmV4dCA9IF9fZnJvbV9jaHVua19lbmQ7Ci0rCSAgICBfX3RvX25leHQgKz0gX19jb252OwotKwkgIH0KLSsKLSsJaWYgKF9fZnJvbV9uZXh0IDwgX19mcm9tX2VuZCAmJiBfX3JldCA9PSBvaykKLSsJICB7Ci0rCSAgICBleHRlcm5fdHlwZSBfX2J1ZltNQl9MRU5fTUFYXTsKLSsJICAgIF9fdG1wX3N0YXRlID0gX19zdGF0ZTsKLSsJICAgIGNvbnN0IHNpemVfdCBfX2NvbnYgPSB3Y3J0b21iKF9fYnVmLCAqX19mcm9tX25leHQsICZfX3RtcF9zdGF0ZSk7Ci0rCSAgICBpZiAoX19jb252ID4gc3RhdGljX2Nhc3Q8c2l6ZV90PihfX3RvX2VuZCAtIF9fdG9fbmV4dCkpCi0rCSAgICAgIF9fcmV0ID0gcGFydGlhbDsKLSsJICAgIGVsc2UKLSsJICAgICAgewotKwkJbWVtY3B5KF9fdG9fbmV4dCwgX19idWYsIF9fY29udik7Ci0rCQlfX3N0YXRlID0gX190bXBfc3RhdGU7Ci0rCQlfX3RvX25leHQgKz0gX19jb252OwotKwkJKytfX2Zyb21fbmV4dDsKLSsJICAgICAgfQotKwkgIH0KLSsgICAgICB9Ci0rCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgX191c2Vsb2NhbGUoX19vbGQpOwotKyNlbmRpZgotKwotKyAgICByZXR1cm4gX19yZXQ7Ci0rICB9Ci0rCi0rICBjb2RlY3Z0X2Jhc2U6OnJlc3VsdAotKyAgY29kZWN2dDx3Y2hhcl90LCBjaGFyLCBtYnN0YXRlX3Q+OjoKLSsgIGRvX2luKHN0YXRlX3R5cGUmIF9fc3RhdGUsIGNvbnN0IGV4dGVybl90eXBlKiBfX2Zyb20sCi0rCWNvbnN0IGV4dGVybl90eXBlKiBfX2Zyb21fZW5kLCBjb25zdCBleHRlcm5fdHlwZSomIF9fZnJvbV9uZXh0LAotKwlpbnRlcm5fdHlwZSogX190bywgaW50ZXJuX3R5cGUqIF9fdG9fZW5kLAotKwlpbnRlcm5fdHlwZSomIF9fdG9fbmV4dCkgY29uc3QKLSsgIHsKLSsgICAgcmVzdWx0IF9fcmV0ID0gb2s7Ci0rICAgIHN0YXRlX3R5cGUgX190bXBfc3RhdGUoX19zdGF0ZSk7Ci0rCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9NX2NfbG9jYWxlX2NvZGVjdnQpOwotKyNlbmRpZgotKwotKyAgICAvLyBtYnNucnRvd2NzIGlzICp2ZXJ5KiBmYXN0IGJ1dCBzdG9wcyBpZiBlbmNvdW50ZXJzIE5VTCBjaGFyYWN0ZXJzOgotKyAgICAvLyBpbiBjYXNlIHdlIHN0b3JlIGEgTCdcMCcgYW5kIHRoZW4gY29udGludWUsIGluIGEgbG9vcC4KLSsgICAgLy8gTkI6IG1ic25ydG93Y3MgaXMgYSBHTlUgZXh0ZW5zaW9uCi0rICAgIGZvciAoX19mcm9tX25leHQgPSBfX2Zyb20sIF9fdG9fbmV4dCA9IF9fdG87Ci0rCSBfX2Zyb21fbmV4dCA8IF9fZnJvbV9lbmQgJiYgX190b19uZXh0IDwgX190b19lbmQKLSsJICYmIF9fcmV0ID09IG9rOykKLSsgICAgICB7Ci0rCWNvbnN0IGV4dGVybl90eXBlKiBfX2Zyb21fY2h1bmtfZW5kOwotKwlfX2Zyb21fY2h1bmtfZW5kID0gc3RhdGljX2Nhc3Q8Y29uc3QgZXh0ZXJuX3R5cGUqPihtZW1jaHIoX19mcm9tX25leHQsICdcMCcsCi0rCQkJCQkJCQkgIF9fZnJvbV9lbmQKLSsJCQkJCQkJCSAgLSBfX2Zyb21fbmV4dCkpOwotKwlpZiAoIV9fZnJvbV9jaHVua19lbmQpCi0rCSAgX19mcm9tX2NodW5rX2VuZCA9IF9fZnJvbV9lbmQ7Ci0rCi0rCV9fZnJvbSA9IF9fZnJvbV9uZXh0OwotKwlzaXplX3QgX19jb252ID0gbWJzbnJ0b3djcyhfX3RvX25leHQsICZfX2Zyb21fbmV4dCwKLSsJCQkJICAgX19mcm9tX2NodW5rX2VuZCAtIF9fZnJvbV9uZXh0LAotKwkJCQkgICBfX3RvX2VuZCAtIF9fdG9fbmV4dCwgJl9fc3RhdGUpOwotKwlpZiAoX19jb252ID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpKQotKwkgIHsKLSsJICAgIC8vIEluIGNhc2Ugb2YgZXJyb3IsIGluIG9yZGVyIHRvIHN0b3AgYXQgdGhlIGV4YWN0IHBsYWNlIHdlCi0rCSAgICAvLyBoYXZlIHRvIHN0YXJ0IGFnYWluIGZyb20gdGhlIGJlZ2lubmluZyB3aXRoIGEgc2VyaWVzIG9mCi0rCSAgICAvLyBtYnJ0b3djLgotKwkgICAgZm9yICg7OyArK19fdG9fbmV4dCwgX19mcm9tICs9IF9fY29udikKLSsJICAgICAgewotKwkJX19jb252ID0gbWJydG93YyhfX3RvX25leHQsIF9fZnJvbSwgX19mcm9tX2VuZCAtIF9fZnJvbSwKLSsJCQkJICZfX3RtcF9zdGF0ZSk7Ci0rCQlpZiAoX19jb252ID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpCi0rCQkgICAgfHwgX19jb252ID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTIpKQotKwkJICBicmVhazsKLSsJICAgICAgfQotKwkgICAgX19mcm9tX25leHQgPSBfX2Zyb207Ci0rCSAgICBfX3N0YXRlID0gX190bXBfc3RhdGU7Ci0rCSAgICBfX3JldCA9IGVycm9yOwotKwkgIH0KLSsJZWxzZSBpZiAoX19mcm9tX25leHQgJiYgX19mcm9tX25leHQgPCBfX2Zyb21fY2h1bmtfZW5kKQotKwkgIHsKLSsJICAgIC8vIEl0IGlzIHVuY2xlYXIgd2hhdCB0byByZXR1cm4gaW4gdGhpcyBjYXNlIChzZWUgRFIgMzgyKS4KLSsJICAgIF9fdG9fbmV4dCArPSBfX2NvbnY7Ci0rCSAgICBfX3JldCA9IHBhcnRpYWw7Ci0rCSAgfQotKwllbHNlCi0rCSAgewotKwkgICAgX19mcm9tX25leHQgPSBfX2Zyb21fY2h1bmtfZW5kOwotKwkgICAgX190b19uZXh0ICs9IF9fY29udjsKLSsJICB9Ci0rCi0rCWlmIChfX2Zyb21fbmV4dCA8IF9fZnJvbV9lbmQgJiYgX19yZXQgPT0gb2spCi0rCSAgewotKwkgICAgaWYgKF9fdG9fbmV4dCA8IF9fdG9fZW5kKQotKwkgICAgICB7Ci0rCQkvLyBYWFggUHJvYmFibHkgd3JvbmcgZm9yIHN0YXRlZnVsIGVuY29kaW5ncwotKwkJX190bXBfc3RhdGUgPSBfX3N0YXRlOwotKwkJKytfX2Zyb21fbmV4dDsKLSsJCSpfX3RvX25leHQrKyA9IEwnXDAnOwotKwkgICAgICB9Ci0rCSAgICBlbHNlCi0rCSAgICAgIF9fcmV0ID0gcGFydGlhbDsKLSsJICB9Ci0rICAgICAgfQotKwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZW5kaWYKLSsKLSsgICAgcmV0dXJuIF9fcmV0OwotKyAgfQotKwotKyAgaW50Ci0rICBjb2RlY3Z0PHdjaGFyX3QsIGNoYXIsIG1ic3RhdGVfdD46OgotKyAgZG9fZW5jb2RpbmcoKSBjb25zdCB0aHJvdygpCi0rICB7Ci0rICAgIC8vIFhYWCBUaGlzIGltcGxlbWVudGF0aW9uIGFzc3VtZXMgdGhhdCB0aGUgZW5jb2RpbmcgaXMKLSsgICAgLy8gc3RhdGVsZXNzIGFuZCBpcyBlaXRoZXIgc2luZ2xlLWJ5dGUgb3IgdmFyaWFibGUtd2lkdGguCi0rICAgIGludCBfX3JldCA9IDA7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9NX2NfbG9jYWxlX2NvZGVjdnQpOwotKyNlbmRpZgotKyAgICBpZiAoTUJfQ1VSX01BWCA9PSAxKQotKyAgICAgIF9fcmV0ID0gMTsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX3VzZWxvY2FsZShfX29sZCk7Ci0rI2VuZGlmCi0rICAgIHJldHVybiBfX3JldDsKLSsgIH0KLSsKLSsgIGludAotKyAgY29kZWN2dDx3Y2hhcl90LCBjaGFyLCBtYnN0YXRlX3Q+OjoKLSsgIGRvX21heF9sZW5ndGgoKSBjb25zdCB0aHJvdygpCi0rICB7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9NX2NfbG9jYWxlX2NvZGVjdnQpOwotKyNlbmRpZgotKyAgICAvLyBYWFggUHJvYmFibHkgd3JvbmcgZm9yIHN0YXRlZnVsIGVuY29kaW5ncy4KLSsgICAgaW50IF9fcmV0ID0gTUJfQ1VSX01BWDsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX3VzZWxvY2FsZShfX29sZCk7Ci0rI2VuZGlmCi0rICAgIHJldHVybiBfX3JldDsKLSsgIH0KLSsKLSsgIGludAotKyAgY29kZWN2dDx3Y2hhcl90LCBjaGFyLCBtYnN0YXRlX3Q+OjoKLSsgIGRvX2xlbmd0aChzdGF0ZV90eXBlJiBfX3N0YXRlLCBjb25zdCBleHRlcm5fdHlwZSogX19mcm9tLAotKwkgICAgY29uc3QgZXh0ZXJuX3R5cGUqIF9fZW5kLCBzaXplX3QgX19tYXgpIGNvbnN0Ci0rICB7Ci0rICAgIGludCBfX3JldCA9IDA7Ci0rICAgIHN0YXRlX3R5cGUgX190bXBfc3RhdGUoX19zdGF0ZSk7Ci0rCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9NX2NfbG9jYWxlX2NvZGVjdnQpOwotKyNlbmRpZgotKwotKyAgICAvLyBtYnNucnRvd2NzIGlzICp2ZXJ5KiBmYXN0IGJ1dCBzdG9wcyBpZiBlbmNvdW50ZXJzIE5VTCBjaGFyYWN0ZXJzOgotKyAgICAvLyBpbiBjYXNlIHdlIGFkdmFuY2UgcGFzdCBpdCBhbmQgdGhlbiBjb250aW51ZSwgaW4gYSBsb29wLgotKyAgICAvLyBOQjogbWJzbnJ0b3djcyBpcyBhIEdOVSBleHRlbnNpb24KLSsKLSsgICAgLy8gQSBkdW1teSBpbnRlcm5hbCBidWZmZXIgaXMgbmVlZGVkIGluIG9yZGVyIGZvciBtYnNucnRvY3dzIHRvIGNvbnNpZGVyCi0rICAgIC8vIGl0cyBmb3VydGggcGFyYW1ldGVyIChpdCB3b3VsZG4ndCB3aXRoIE5VTEwgYXMgZmlyc3QgcGFyYW1ldGVyKS4KLSsgICAgd2NoYXJfdCogX190byA9IHN0YXRpY19jYXN0PHdjaGFyX3QqPihfX2J1aWx0aW5fYWxsb2NhKHNpemVvZih3Y2hhcl90KQotKwkJCQkJCQkgICAqIF9fbWF4KSk7Ci0rICAgIHdoaWxlIChfX2Zyb20gPCBfX2VuZCAmJiBfX21heCkKLSsgICAgICB7Ci0rCWNvbnN0IGV4dGVybl90eXBlKiBfX2Zyb21fY2h1bmtfZW5kOwotKwlfX2Zyb21fY2h1bmtfZW5kID0gc3RhdGljX2Nhc3Q8Y29uc3QgZXh0ZXJuX3R5cGUqPihtZW1jaHIoX19mcm9tLCAnXDAnLAotKwkJCQkJCQkJICBfX2VuZAotKwkJCQkJCQkJICAtIF9fZnJvbSkpOwotKwlpZiAoIV9fZnJvbV9jaHVua19lbmQpCi0rCSAgX19mcm9tX2NodW5rX2VuZCA9IF9fZW5kOwotKwotKwljb25zdCBleHRlcm5fdHlwZSogX190bXBfZnJvbSA9IF9fZnJvbTsKLSsJc2l6ZV90IF9fY29udiA9IG1ic25ydG93Y3MoX190bywgJl9fZnJvbSwKLSsJCQkJICAgX19mcm9tX2NodW5rX2VuZCAtIF9fZnJvbSwKLSsJCQkJICAgX19tYXgsICZfX3N0YXRlKTsKLSsJaWYgKF9fY29udiA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KC0xKSkKLSsJICB7Ci0rCSAgICAvLyBJbiBjYXNlIG9mIGVycm9yLCBpbiBvcmRlciB0byBzdG9wIGF0IHRoZSBleGFjdCBwbGFjZSB3ZQotKwkgICAgLy8gaGF2ZSB0byBzdGFydCBhZ2FpbiBmcm9tIHRoZSBiZWdpbm5pbmcgd2l0aCBhIHNlcmllcyBvZgotKwkgICAgLy8gbWJydG93Yy4KLSsJICAgIGZvciAoX19mcm9tID0gX190bXBfZnJvbTs7IF9fZnJvbSArPSBfX2NvbnYpCi0rCSAgICAgIHsKLSsJCV9fY29udiA9IG1icnRvd2MoTlVMTCwgX19mcm9tLCBfX2VuZCAtIF9fZnJvbSwKLSsJCQkJICZfX3RtcF9zdGF0ZSk7Ci0rCQlpZiAoX19jb252ID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpCi0rCQkgICAgfHwgX19jb252ID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTIpKQotKwkJICBicmVhazsKLSsJICAgICAgfQotKwkgICAgX19zdGF0ZSA9IF9fdG1wX3N0YXRlOwotKwkgICAgX19yZXQgKz0gX19mcm9tIC0gX190bXBfZnJvbTsKLSsJICAgIGJyZWFrOwotKwkgIH0KLSsJaWYgKCFfX2Zyb20pCi0rCSAgX19mcm9tID0gX19mcm9tX2NodW5rX2VuZDsKLSsKLSsJX19yZXQgKz0gX19mcm9tIC0gX190bXBfZnJvbTsKLSsJX19tYXggLT0gX19jb252OwotKwotKwlpZiAoX19mcm9tIDwgX19lbmQgJiYgX19tYXgpCi0rCSAgewotKwkgICAgLy8gWFhYIFByb2JhYmx5IHdyb25nIGZvciBzdGF0ZWZ1bCBlbmNvZGluZ3MKLSsJICAgIF9fdG1wX3N0YXRlID0gX19zdGF0ZTsKLSsJICAgICsrX19mcm9tOwotKwkgICAgKytfX3JldDsKLSsJICAgIC0tX19tYXg7Ci0rCSAgfQotKyAgICAgIH0KLSsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX3VzZWxvY2FsZShfX29sZCk7Ci0rI2VuZGlmCi0rCi0rICAgIHJldHVybiBfX3JldDsKLSsgIH0KLSsjZW5kaWYKLSt9Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvbGxhdGVfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jb2xsYXRlX21lbWJlcnMuY2MKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5jMjY2NGE3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY29sbGF0ZV9tZW1iZXJzLmNjCi1AQCAtMCwwICsxLDgwIEBACi0rLy8gc3RkOjpjb2xsYXRlIGltcGxlbWVudGF0aW9uIGRldGFpbHMsIEdOVSB2ZXJzaW9uIC0qLSBDKysgLSotCi0rCi0rLy8gQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8vCi0rLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQotKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQotKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rLy8gYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsvLyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsvLyBVU0EuCi0rCi0rLy8gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSB1c2UgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBmcmVlIHNvZnR3YXJlCi0rLy8gbGlicmFyeSB3aXRob3V0IHJlc3RyaWN0aW9uLiAgU3BlY2lmaWNhbGx5LCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZQotKy8vIHRlbXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5jdGlvbnMgZnJvbSB0aGlzIGZpbGUsIG9yIHlvdSBjb21waWxlCi0rLy8gdGhpcyBmaWxlIGFuZCBsaW5rIGl0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzCi0rLy8gZmlsZSBkb2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyCi0rLy8gaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotKwotKy8vCi0rLy8gSVNPIEMrKyAxNDg4MjogMjIuMi40LjEuMiAgY29sbGF0ZSB2aXJ0dWFsIGZ1bmN0aW9ucwotKy8vCi0rCi0rLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KLSsKLSsjaW5jbHVkZSA8bG9jYWxlPgotKyNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgotKwotKyNpZm5kZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyNkZWZpbmUgX19zdHJjb2xsX2woUzEsIFMyLCBMKSAgICAgIHN0cmNvbGwoKFMxKSwgKFMyKSkKLSsjZGVmaW5lIF9fc3RyeGZybV9sKFMxLCBTMiwgTiwgTCkgICBzdHJ4ZnJtKChTMSksIChTMiksIChOKSkKLSsjZGVmaW5lIF9fd2NzY29sbF9sKFMxLCBTMiwgTCkgICAgICB3Y3Njb2xsKChTMSksIChTMikpCi0rI2RlZmluZSBfX3djc3hmcm1fbChTMSwgUzIsIE4sIEwpICAgd2NzeGZybSgoUzEpLCAoUzIpLCAoTikpCi0rI2VuZGlmCi0rCi0rbmFtZXNwYWNlIHN0ZAotK3sKLSsgIC8vIFRoZXNlIGFyZSBiYXNpY2FsbHkgZXh0ZW5zaW9ucyB0byBjaGFyX3RyYWl0cywgYW5kIHBlcmhhcHMgc2hvdWxkCi0rICAvLyBiZSBwdXQgdGhlcmUgaW5zdGVhZCBvZiBoZXJlLgotKyAgdGVtcGxhdGU8PgotKyAgICBpbnQKLSsgICAgY29sbGF0ZTxjaGFyPjo6X01fY29tcGFyZShjb25zdCBjaGFyKiBfX29uZSwgY29uc3QgY2hhciogX190d28pIGNvbnN0Ci0rICAgIHsKLSsgICAgICBpbnQgX19jbXAgPSBfX3N0cmNvbGxfbChfX29uZSwgX190d28sIF9NX2NfbG9jYWxlX2NvbGxhdGUpOwotKyAgICAgIHJldHVybiAoX19jbXAgPj4gKDggKiBzaXplb2YgKGludCkgLSAyKSkgfCAoX19jbXAgIT0gMCk7Ci0rICAgIH0KLSsKLSsgIHRlbXBsYXRlPD4KLSsgICAgc2l6ZV90Ci0rICAgIGNvbGxhdGU8Y2hhcj46Ol9NX3RyYW5zZm9ybShjaGFyKiBfX3RvLCBjb25zdCBjaGFyKiBfX2Zyb20sCi0rCQkJCXNpemVfdCBfX24pIGNvbnN0Ci0rICAgIHsgcmV0dXJuIF9fc3RyeGZybV9sKF9fdG8sIF9fZnJvbSwgX19uLCBfTV9jX2xvY2FsZV9jb2xsYXRlKTsgfQotKwotKyNpZmRlZiBfR0xJQkNYWF9VU0VfV0NIQVJfVAotKyAgdGVtcGxhdGU8PgotKyAgICBpbnQKLSsgICAgY29sbGF0ZTx3Y2hhcl90Pjo6X01fY29tcGFyZShjb25zdCB3Y2hhcl90KiBfX29uZSwKLSsJCQkJIGNvbnN0IHdjaGFyX3QqIF9fdHdvKSBjb25zdAotKyAgICB7Ci0rICAgICAgaW50IF9fY21wID0gX193Y3Njb2xsX2woX19vbmUsIF9fdHdvLCBfTV9jX2xvY2FsZV9jb2xsYXRlKTsKLSsgICAgICByZXR1cm4gKF9fY21wID4+ICg4ICogc2l6ZW9mIChpbnQpIC0gMikpIHwgKF9fY21wICE9IDApOwotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHNpemVfdAotKyAgICBjb2xsYXRlPHdjaGFyX3Q+OjpfTV90cmFuc2Zvcm0od2NoYXJfdCogX190bywgY29uc3Qgd2NoYXJfdCogX19mcm9tLAotKwkJCQkgICBzaXplX3QgX19uKSBjb25zdAotKyAgICB7IHJldHVybiBfX3djc3hmcm1fbChfX3RvLCBfX2Zyb20sIF9fbiwgX01fY19sb2NhbGVfY29sbGF0ZSk7IH0KLSsjZW5kaWYKLSt9Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjcyOTRlM2EKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjCi1AQCAtMCwwICsxLDMwMCBAQAotKy8vIHN0ZDo6Y3R5cGUgaW1wbGVtZW50YXRpb24gZGV0YWlscywgR05VIHZlcnNpb24gLSotIEMrKyAtKi0KLSsKLSsvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLy8KLSsvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCi0rLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCi0rLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKy8vIFVTQS4KLSsKLSsvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUKLSsvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlCi0rLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUKLSsvLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMKLSsvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIKLSsvLyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rCi0rLy8KLSsvLyBJU08gQysrIDE0ODgyOiAyMi4yLjEuMS4yICBjdHlwZSB2aXJ0dWFsIGZ1bmN0aW9ucy4KLSsvLwotKwotKy8vIFdyaXR0ZW4gYnkgQmVuamFtaW4gS29zbmlrIDxia296QHJlZGhhdC5jb20+Ci0rCi0rI2RlZmluZSBfTElCQwotKyNpbmNsdWRlIDxsb2NhbGU+Ci0rI3VuZGVmIF9MSUJDCi0rI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+Ci0rCi0rI2lmbmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rI2RlZmluZSBfX3djdHlwZV9sKFMsIEwpICAgICAgICAgICB3Y3R5cGUoKFMpKQotKyNkZWZpbmUgX190b3d1cHBlcl9sKEMsIEwpICAgICAgICAgdG93dXBwZXIoKEMpKQotKyNkZWZpbmUgX190b3dsb3dlcl9sKEMsIEwpICAgICAgICAgdG93bG93ZXIoKEMpKQotKyNkZWZpbmUgX19pc3djdHlwZV9sKEMsIE0sIEwpICAgICAgaXN3Y3R5cGUoKEMpLCAoTSkpCi0rI2VuZGlmCi0rCi0rbmFtZXNwYWNlIHN0ZAotK3sKLSsgIC8vIE5COiBUaGUgb3RoZXIgY3R5cGU8Y2hhcj4gc3BlY2lhbGl6YXRpb25zIGFyZSBpbiBzcmMvbG9jYWxlLmNjIGFuZAotKyAgLy8gdmFyaW91cyAvY29uZmlnL29zLyogZmlsZXMuCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIGN0eXBlX2J5bmFtZTxjaGFyPjo6Y3R5cGVfYnluYW1lKGNvbnN0IGNoYXIqIF9fcywgc2l6ZV90IF9fcmVmcykKLSsgICAgOiBjdHlwZTxjaGFyPigwLCBmYWxzZSwgX19yZWZzKQotKyAgICB7Ci0rICAgICAgaWYgKHN0ZDo6c3RyY21wKF9fcywgIkMiKSAhPSAwICYmIHN0ZDo6c3RyY21wKF9fcywgIlBPU0lYIikgIT0gMCkKLSsJewotKwkgIHRoaXMtPl9TX2Rlc3Ryb3lfY19sb2NhbGUodGhpcy0+X01fY19sb2NhbGVfY3R5cGUpOwotKwkgIHRoaXMtPl9TX2NyZWF0ZV9jX2xvY2FsZSh0aGlzLT5fTV9jX2xvY2FsZV9jdHlwZSwgX19zKTsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKwkgIHRoaXMtPl9NX3RvdXBwZXIgPSB0aGlzLT5fTV9jX2xvY2FsZV9jdHlwZS0+X19jdHlwZV90b3VwcGVyOwotKwkgIHRoaXMtPl9NX3RvbG93ZXIgPSB0aGlzLT5fTV9jX2xvY2FsZV9jdHlwZS0+X19jdHlwZV90b2xvd2VyOwotKwkgIHRoaXMtPl9NX3RhYmxlID0gdGhpcy0+X01fY19sb2NhbGVfY3R5cGUtPl9fY3R5cGVfYjsKLSsjZW5kaWYKLSsJfQotKyAgICB9Ci0rCi0rI2lmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0rICBjdHlwZTx3Y2hhcl90Pjo6X193bWFza190eXBlCi0rICBjdHlwZTx3Y2hhcl90Pjo6X01fY29udmVydF90b193bWFzayhjb25zdCBtYXNrIF9fbSkgY29uc3QKLSsgIHsKLSsgICAgX193bWFza190eXBlIF9fcmV0OwotKyAgICBzd2l0Y2ggKF9fbSkKLSsgICAgICB7Ci0rICAgICAgY2FzZSBzcGFjZToKLSsJX19yZXQgPSBfX3djdHlwZV9sKCJzcGFjZSIsIF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSBwcmludDoKLSsJX19yZXQgPSBfX3djdHlwZV9sKCJwcmludCIsIF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSBjbnRybDoKLSsJX19yZXQgPSBfX3djdHlwZV9sKCJjbnRybCIsIF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSB1cHBlcjoKLSsJX19yZXQgPSBfX3djdHlwZV9sKCJ1cHBlciIsIF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSBsb3dlcjoKLSsJX19yZXQgPSBfX3djdHlwZV9sKCJsb3dlciIsIF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSBhbHBoYToKLSsJX19yZXQgPSBfX3djdHlwZV9sKCJhbHBoYSIsIF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSBkaWdpdDoKLSsJX19yZXQgPSBfX3djdHlwZV9sKCJkaWdpdCIsIF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSBwdW5jdDoKLSsJX19yZXQgPSBfX3djdHlwZV9sKCJwdW5jdCIsIF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSB4ZGlnaXQ6Ci0rCV9fcmV0ID0gX193Y3R5cGVfbCgieGRpZ2l0IiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIGFsbnVtOgotKwlfX3JldCA9IF9fd2N0eXBlX2woImFsbnVtIiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIGdyYXBoOgotKwlfX3JldCA9IF9fd2N0eXBlX2woImdyYXBoIiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBkZWZhdWx0OgotKwlfX3JldCA9IF9fd21hc2tfdHlwZSgpOwotKyAgICAgIH0KLSsgICAgcmV0dXJuIF9fcmV0OwotKyAgfQotKwotKyAgd2NoYXJfdAotKyAgY3R5cGU8d2NoYXJfdD46OmRvX3RvdXBwZXIod2NoYXJfdCBfX2MpIGNvbnN0Ci0rICB7IHJldHVybiBfX3Rvd3VwcGVyX2woX19jLCBfTV9jX2xvY2FsZV9jdHlwZSk7IH0KLSsKLSsgIGNvbnN0IHdjaGFyX3QqCi0rICBjdHlwZTx3Y2hhcl90Pjo6ZG9fdG91cHBlcih3Y2hhcl90KiBfX2xvLCBjb25zdCB3Y2hhcl90KiBfX2hpKSBjb25zdAotKyAgewotKyAgICB3aGlsZSAoX19sbyA8IF9faGkpCi0rICAgICAgewotKyAgICAgICAgKl9fbG8gPSBfX3Rvd3VwcGVyX2woKl9fbG8sIF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsgICAgICAgICsrX19sbzsKLSsgICAgICB9Ci0rICAgIHJldHVybiBfX2hpOwotKyAgfQotKwotKyAgd2NoYXJfdAotKyAgY3R5cGU8d2NoYXJfdD46OmRvX3RvbG93ZXIod2NoYXJfdCBfX2MpIGNvbnN0Ci0rICB7IHJldHVybiBfX3Rvd2xvd2VyX2woX19jLCBfTV9jX2xvY2FsZV9jdHlwZSk7IH0KLSsKLSsgIGNvbnN0IHdjaGFyX3QqCi0rICBjdHlwZTx3Y2hhcl90Pjo6ZG9fdG9sb3dlcih3Y2hhcl90KiBfX2xvLCBjb25zdCB3Y2hhcl90KiBfX2hpKSBjb25zdAotKyAgewotKyAgICB3aGlsZSAoX19sbyA8IF9faGkpCi0rICAgICAgewotKyAgICAgICAgKl9fbG8gPSBfX3Rvd2xvd2VyX2woKl9fbG8sIF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsgICAgICAgICsrX19sbzsKLSsgICAgICB9Ci0rICAgIHJldHVybiBfX2hpOwotKyAgfQotKwotKyAgYm9vbAotKyAgY3R5cGU8d2NoYXJfdD46OgotKyAgZG9faXMobWFzayBfX20sIHdjaGFyX3QgX19jKSBjb25zdAotKyAgewotKyAgICAvLyBIaWdoZXN0IGJpdG1hc2sgaW4gY3R5cGVfYmFzZSA9PSAxMCwgYnV0IGV4dHJhIGluICJDIgotKyAgICAvLyBsaWJyYXJ5IGZvciBibGFuay4KLSsgICAgYm9vbCBfX3JldCA9IGZhbHNlOwotKyAgICBjb25zdCBzaXplX3QgX19iaXRtYXNrc2l6ZSA9IDExOwotKyAgICBmb3IgKHNpemVfdCBfX2JpdGN1ciA9IDA7IF9fYml0Y3VyIDw9IF9fYml0bWFza3NpemU7ICsrX19iaXRjdXIpCi0rICAgICAgaWYgKF9fbSAmIF9NX2JpdFtfX2JpdGN1cl0KLSsJICAmJiBfX2lzd2N0eXBlX2woX19jLCBfTV93bWFza1tfX2JpdGN1cl0sIF9NX2NfbG9jYWxlX2N0eXBlKSkKLSsJewotKwkgIF9fcmV0ID0gdHJ1ZTsKLSsJICBicmVhazsKLSsJfQotKyAgICByZXR1cm4gX19yZXQ7Ci0rICB9Ci0rCi0rICBjb25zdCB3Y2hhcl90KgotKyAgY3R5cGU8d2NoYXJfdD46OgotKyAgZG9faXMoY29uc3Qgd2NoYXJfdCogX19sbywgY29uc3Qgd2NoYXJfdCogX19oaSwgbWFzayogX192ZWMpIGNvbnN0Ci0rICB7Ci0rICAgIGZvciAoOyBfX2xvIDwgX19oaTsgKytfX3ZlYywgKytfX2xvKQotKyAgICAgIHsKLSsJLy8gSGlnaGVzdCBiaXRtYXNrIGluIGN0eXBlX2Jhc2UgPT0gMTAsIGJ1dCBleHRyYSBpbiAiQyIKLSsJLy8gbGlicmFyeSBmb3IgYmxhbmsuCi0rCWNvbnN0IHNpemVfdCBfX2JpdG1hc2tzaXplID0gMTE7Ci0rCW1hc2sgX19tID0gMDsKLSsJZm9yIChzaXplX3QgX19iaXRjdXIgPSAwOyBfX2JpdGN1ciA8PSBfX2JpdG1hc2tzaXplOyArK19fYml0Y3VyKQotKwkgIGlmIChfX2lzd2N0eXBlX2woKl9fbG8sIF9NX3dtYXNrW19fYml0Y3VyXSwgX01fY19sb2NhbGVfY3R5cGUpKQotKwkgICAgX19tIHw9IF9NX2JpdFtfX2JpdGN1cl07Ci0rCSpfX3ZlYyA9IF9fbTsKLSsgICAgICB9Ci0rICAgIHJldHVybiBfX2hpOwotKyAgfQotKwotKyAgY29uc3Qgd2NoYXJfdCoKLSsgIGN0eXBlPHdjaGFyX3Q+OjoKLSsgIGRvX3NjYW5faXMobWFzayBfX20sIGNvbnN0IHdjaGFyX3QqIF9fbG8sIGNvbnN0IHdjaGFyX3QqIF9faGkpIGNvbnN0Ci0rICB7Ci0rICAgIHdoaWxlIChfX2xvIDwgX19oaSAmJiAhdGhpcy0+ZG9faXMoX19tLCAqX19sbykpCi0rICAgICAgKytfX2xvOwotKyAgICByZXR1cm4gX19sbzsKLSsgIH0KLSsKLSsgIGNvbnN0IHdjaGFyX3QqCi0rICBjdHlwZTx3Y2hhcl90Pjo6Ci0rICBkb19zY2FuX25vdChtYXNrIF9fbSwgY29uc3QgY2hhcl90eXBlKiBfX2xvLCBjb25zdCBjaGFyX3R5cGUqIF9faGkpIGNvbnN0Ci0rICB7Ci0rICAgIHdoaWxlIChfX2xvIDwgX19oaSAmJiB0aGlzLT5kb19pcyhfX20sICpfX2xvKSAhPSAwKQotKyAgICAgICsrX19sbzsKLSsgICAgcmV0dXJuIF9fbG87Ci0rICB9Ci0rCi0rICB3Y2hhcl90Ci0rICBjdHlwZTx3Y2hhcl90Pjo6Ci0rICBkb193aWRlbihjaGFyIF9fYykgY29uc3QKLSsgIHsgcmV0dXJuIF9NX3dpZGVuW3N0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KF9fYyldOyB9Ci0rCi0rICBjb25zdCBjaGFyKgotKyAgY3R5cGU8d2NoYXJfdD46OgotKyAgZG9fd2lkZW4oY29uc3QgY2hhciogX19sbywgY29uc3QgY2hhciogX19oaSwgd2NoYXJfdCogX19kZXN0KSBjb25zdAotKyAgewotKyAgICB3aGlsZSAoX19sbyA8IF9faGkpCi0rICAgICAgewotKwkqX19kZXN0ID0gX01fd2lkZW5bc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oKl9fbG8pXTsKLSsJKytfX2xvOwotKwkrK19fZGVzdDsKLSsgICAgICB9Ci0rICAgIHJldHVybiBfX2hpOwotKyAgfQotKwotKyAgY2hhcgotKyAgY3R5cGU8d2NoYXJfdD46OgotKyAgZG9fbmFycm93KHdjaGFyX3QgX193YywgY2hhciBfX2RmYXVsdCkgY29uc3QKLSsgIHsKLSsgICAgaWYgKF9fd2MgPj0gMCAmJiBfX3djIDwgMTI4ICYmIF9NX25hcnJvd19vaykKLSsgICAgICByZXR1cm4gX01fbmFycm93W19fd2NdOwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgIF9fY19sb2NhbGUgX19vbGQgPSBfX3VzZWxvY2FsZShfTV9jX2xvY2FsZV9jdHlwZSk7Ci0rI2VuZGlmCi0rICAgIGNvbnN0IGludCBfX2MgPSB3Y3RvYihfX3djKTsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX3VzZWxvY2FsZShfX29sZCk7Ci0rI2VuZGlmCi0rICAgIHJldHVybiAoX19jID09IEVPRiA/IF9fZGZhdWx0IDogc3RhdGljX2Nhc3Q8Y2hhcj4oX19jKSk7Ci0rICB9Ci0rCi0rICBjb25zdCB3Y2hhcl90KgotKyAgY3R5cGU8d2NoYXJfdD46OgotKyAgZG9fbmFycm93KGNvbnN0IHdjaGFyX3QqIF9fbG8sIGNvbnN0IHdjaGFyX3QqIF9faGksIGNoYXIgX19kZmF1bHQsCi0rCSAgICBjaGFyKiBfX2Rlc3QpIGNvbnN0Ci0rICB7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsjZW5kaWYKLSsgICAgaWYgKF9NX25hcnJvd19vaykKLSsgICAgICB3aGlsZSAoX19sbyA8IF9faGkpCi0rCXsKLSsJICBpZiAoKl9fbG8gPj0gMCAmJiAqX19sbyA8IDEyOCkKLSsJICAgICpfX2Rlc3QgPSBfTV9uYXJyb3dbKl9fbG9dOwotKwkgIGVsc2UKLSsJICAgIHsKLSsJICAgICAgY29uc3QgaW50IF9fYyA9IHdjdG9iKCpfX2xvKTsKLSsJICAgICAgKl9fZGVzdCA9IChfX2MgPT0gRU9GID8gX19kZmF1bHQgOiBzdGF0aWNfY2FzdDxjaGFyPihfX2MpKTsKLSsJICAgIH0KLSsJICArK19fbG87Ci0rCSAgKytfX2Rlc3Q7Ci0rCX0KLSsgICAgZWxzZQotKyAgICAgIHdoaWxlIChfX2xvIDwgX19oaSkKLSsJewotKwkgIGNvbnN0IGludCBfX2MgPSB3Y3RvYigqX19sbyk7Ci0rCSAgKl9fZGVzdCA9IChfX2MgPT0gRU9GID8gX19kZmF1bHQgOiBzdGF0aWNfY2FzdDxjaGFyPihfX2MpKTsKLSsJICArK19fbG87Ci0rCSAgKytfX2Rlc3Q7Ci0rCX0KLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX3VzZWxvY2FsZShfX29sZCk7Ci0rI2VuZGlmCi0rICAgIHJldHVybiBfX2hpOwotKyAgfQotKwotKyAgdm9pZAotKyAgY3R5cGU8d2NoYXJfdD46Ol9NX2luaXRpYWxpemVfY3R5cGUoKQotKyAgewotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgIF9fY19sb2NhbGUgX19vbGQgPSBfX3VzZWxvY2FsZShfTV9jX2xvY2FsZV9jdHlwZSk7Ci0rI2VuZGlmCi0rICAgIHdpbnRfdCBfX2k7Ci0rICAgIGZvciAoX19pID0gMDsgX19pIDwgMTI4OyArK19faSkKLSsgICAgICB7Ci0rCWNvbnN0IGludCBfX2MgPSB3Y3RvYihfX2kpOwotKwlpZiAoX19jID09IEVPRikKLSsJICBicmVhazsKLSsJZWxzZQotKwkgIF9NX25hcnJvd1tfX2ldID0gc3RhdGljX2Nhc3Q8Y2hhcj4oX19jKTsKLSsgICAgICB9Ci0rICAgIGlmIChfX2kgPT0gMTI4KQotKyAgICAgIF9NX25hcnJvd19vayA9IHRydWU7Ci0rICAgIGVsc2UKLSsgICAgICBfTV9uYXJyb3dfb2sgPSBmYWxzZTsKLSsgICAgZm9yIChzaXplX3QgX19qID0gMDsKLSsJIF9faiA8IHNpemVvZihfTV93aWRlbikgLyBzaXplb2Yod2ludF90KTsgKytfX2opCi0rICAgICAgX01fd2lkZW5bX19qXSA9IGJ0b3djKF9faik7Ci0rCi0rICAgIGZvciAoc2l6ZV90IF9fayA9IDA7IF9fayA8PSAxMTsgKytfX2spCi0rICAgICAgewotKwlfTV9iaXRbX19rXSA9IHN0YXRpY19jYXN0PG1hc2s+KF9JU2JpdChfX2spKTsKLSsJX01fd21hc2tbX19rXSA9IF9NX2NvbnZlcnRfdG9fd21hc2soX01fYml0W19fa10pOwotKyAgICAgIH0KLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX3VzZWxvY2FsZShfX29sZCk7Ci0rI2VuZGlmCi0rICB9Ci0rI2VuZGlmIC8vICBfR0xJQkNYWF9VU0VfV0NIQVJfVAotK30KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmNjCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMTM1OTRkOQotLS0tIC9kZXYvbnVsbAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuY2MKLUBAIC0wLDAgKzEsMTAwIEBACi0rLy8gc3RkOjptZXNzYWdlcyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCBHTlUgdmVyc2lvbiAtKi0gQysrIC0qLQotKwotKy8vIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvLwotKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKLSsvLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKLSsvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKy8vIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKy8vIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rLy8gU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rLy8gVVNBLgotKwotKy8vIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgdXNlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgZnJlZSBzb2Z0d2FyZQotKy8vIGxpYnJhcnkgd2l0aG91dCByZXN0cmljdGlvbi4gIFNwZWNpZmljYWxseSwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUKLSsvLyB0ZW1wbGF0ZXMgb3IgdXNlIG1hY3JvcyBvciBpbmxpbmUgZnVuY3Rpb25zIGZyb20gdGhpcyBmaWxlLCBvciB5b3UgY29tcGlsZQotKy8vIHRoaXMgZmlsZSBhbmQgbGluayBpdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gZXhlY3V0YWJsZSwgdGhpcwotKy8vIGZpbGUgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlcgotKy8vIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSBleGVjdXRhYmxlIGZpbGUgbWlnaHQgYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLSsKLSsvLwotKy8vIElTTyBDKysgMTQ4ODI6IDIyLjIuNy4xLjIgIG1lc3NhZ2VzIHZpcnR1YWwgZnVuY3Rpb25zCi0rLy8KLSsKLSsvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotKwotKyNpbmNsdWRlIDxsb2NhbGU+Ci0rI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+Ci0rCi0rI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0rI3dhcm5pbmcgZml4IGdldHRleHQgc3R1ZmYKLSsjZW5kaWYKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX0dFVFRFWFRfQVdBUkVORVNTX18KLStleHRlcm4gIkMiIGNoYXIgKl9fZGNnZXR0ZXh0KGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsCi0rCQkJICAgICBjb25zdCBjaGFyICptc2dpZCwgaW50IGNhdGVnb3J5KTsKLSsjdW5kZWYgZ2V0dGV4dAotKyNkZWZpbmUgZ2V0dGV4dChtc2dpZCkgX19kY2dldHRleHQoTlVMTCwgbXNnaWQsIExDX01FU1NBR0VTKQotKyNlbHNlCi0rI3VuZGVmIGdldHRleHQKLSsjZGVmaW5lIGdldHRleHQobXNnaWQpIChtc2dpZCkKLSsjZW5kaWYKLSsKLStuYW1lc3BhY2Ugc3RkCi0rewotKyAgLy8gU3BlY2lhbGl6YXRpb25zLgotKyAgdGVtcGxhdGU8PgotKyAgICBzdHJpbmcKLSsgICAgbWVzc2FnZXM8Y2hhcj46OmRvX2dldChjYXRhbG9nLCBpbnQsIGludCwgY29uc3Qgc3RyaW5nJiBfX2RmYXVsdCkgY29uc3QKLSsgICAgewotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgICAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9NX2NfbG9jYWxlX21lc3NhZ2VzKTsKLSsgICAgICBjb25zdCBjaGFyKiBfX21zZyA9IGNvbnN0X2Nhc3Q8Y29uc3QgY2hhcio+KGdldHRleHQoX19kZmF1bHQuY19zdHIoKSkpOwotKyAgICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsgICAgICByZXR1cm4gc3RyaW5nKF9fbXNnKTsKLSsjZWxpZiBkZWZpbmVkIF9fVUNMSUJDX0hBU19MT0NBTEVfXwotKyAgICAgIGNoYXIqIF9fb2xkID0gc3RyZHVwKHNldGxvY2FsZShMQ19BTEwsIE5VTEwpKTsKLSsgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfTV9uYW1lX21lc3NhZ2VzKTsKLSsgICAgICBjb25zdCBjaGFyKiBfX21zZyA9IGdldHRleHQoX19kZmF1bHQuY19zdHIoKSk7Ci0rICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOwotKyAgICAgIGZyZWUoX19vbGQpOwotKyAgICAgIHJldHVybiBzdHJpbmcoX19tc2cpOwotKyNlbHNlCi0rICAgICAgY29uc3QgY2hhciogX19tc2cgPSBnZXR0ZXh0KF9fZGZhdWx0LmNfc3RyKCkpOwotKyAgICAgIHJldHVybiBzdHJpbmcoX19tc2cpOwotKyNlbmRpZgotKyAgICB9Ci0rCi0rI2lmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHdzdHJpbmcKLSsgICAgbWVzc2FnZXM8d2NoYXJfdD46OmRvX2dldChjYXRhbG9nLCBpbnQsIGludCwgY29uc3Qgd3N0cmluZyYgX19kZmF1bHQpIGNvbnN0Ci0rICAgIHsKLSsjIGlmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX01fY19sb2NhbGVfbWVzc2FnZXMpOwotKyAgICAgIGNoYXIqIF9fbXNnID0gZ2V0dGV4dChfTV9jb252ZXJ0X3RvX2NoYXIoX19kZmF1bHQpKTsKLSsgICAgICBfX3VzZWxvY2FsZShfX29sZCk7Ci0rICAgICAgcmV0dXJuIF9NX2NvbnZlcnRfZnJvbV9jaGFyKF9fbXNnKTsKLSsjIGVsaWYgZGVmaW5lZCBfX1VDTElCQ19IQVNfTE9DQUxFX18KLSsgICAgICBjaGFyKiBfX29sZCA9IHN0cmR1cChzZXRsb2NhbGUoTENfQUxMLCBOVUxMKSk7Ci0rICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX01fbmFtZV9tZXNzYWdlcyk7Ci0rICAgICAgY2hhciogX19tc2cgPSBnZXR0ZXh0KF9NX2NvbnZlcnRfdG9fY2hhcihfX2RmYXVsdCkpOwotKyAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKLSsgICAgICBmcmVlKF9fb2xkKTsKLSsgICAgICByZXR1cm4gX01fY29udmVydF9mcm9tX2NoYXIoX19tc2cpOwotKyMgZWxzZQotKyAgICAgIGNoYXIqIF9fbXNnID0gZ2V0dGV4dChfTV9jb252ZXJ0X3RvX2NoYXIoX19kZmF1bHQpKTsKLSsgICAgICByZXR1cm4gX01fY29udmVydF9mcm9tX2NoYXIoX19tc2cpOwotKyMgZW5kaWYKLSsgICAgfQotKyNlbmRpZgotK30KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjE0MjQwNzgKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmgKLUBAIC0wLDAgKzEsMTE4IEBACi0rLy8gc3RkOjptZXNzYWdlcyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCBHTlUgdmVyc2lvbiAtKi0gQysrIC0qLQotKwotKy8vIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvLwotKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKLSsvLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKLSsvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKy8vIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKy8vIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rLy8gU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rLy8gVVNBLgotKwotKy8vIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgdXNlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgZnJlZSBzb2Z0d2FyZQotKy8vIGxpYnJhcnkgd2l0aG91dCByZXN0cmljdGlvbi4gIFNwZWNpZmljYWxseSwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUKLSsvLyB0ZW1wbGF0ZXMgb3IgdXNlIG1hY3JvcyBvciBpbmxpbmUgZnVuY3Rpb25zIGZyb20gdGhpcyBmaWxlLCBvciB5b3UgY29tcGlsZQotKy8vIHRoaXMgZmlsZSBhbmQgbGluayBpdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gZXhlY3V0YWJsZSwgdGhpcwotKy8vIGZpbGUgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlcgotKy8vIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSBleGVjdXRhYmxlIGZpbGUgbWlnaHQgYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLSsKLSsvLwotKy8vIElTTyBDKysgMTQ4ODI6IDIyLjIuNy4xLjIgIG1lc3NhZ2VzIGZ1bmN0aW9ucwotKy8vCi0rCi0rLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KLSsKLSsjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSsjd2FybmluZyBmaXggcHJvdG90eXBlcyBmb3IgKnRleHRkb21haW4gZnVuY3MKLSsjZW5kaWYKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX0dFVFRFWFRfQVdBUkVORVNTX18KLStleHRlcm4gIkMiIGNoYXIgKl9fdGV4dGRvbWFpbihjb25zdCBjaGFyICpkb21haW5uYW1lKTsKLStleHRlcm4gIkMiIGNoYXIgKl9fYmluZHRleHRkb21haW4oY29uc3QgY2hhciAqZG9tYWlubmFtZSwKLSsJCQkJICBjb25zdCBjaGFyICpkaXJuYW1lKTsKLSsjZWxzZQotKyN1bmRlZiBfX3RleHRkb21haW4KLSsjdW5kZWYgX19iaW5kdGV4dGRvbWFpbgotKyNkZWZpbmUgX190ZXh0ZG9tYWluKEQpICAgICAgICAgICAoKHZvaWQpMCkKLSsjZGVmaW5lIF9fYmluZHRleHRkb21haW4oRCxQKSAgICAgKCh2b2lkKTApCi0rI2VuZGlmCi0rCi0rICAvLyBOb24tdmlydHVhbCBtZW1iZXIgZnVuY3Rpb25zLgotKyAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgotKyAgICAgbWVzc2FnZXM8X0NoYXJUPjo6bWVzc2FnZXMoc2l6ZV90IF9fcmVmcykKLSsgICAgIDogZmFjZXQoX19yZWZzKSwgX01fY19sb2NhbGVfbWVzc2FnZXMoX1NfZ2V0X2NfbG9jYWxlKCkpLAotKyAgICAgX01fbmFtZV9tZXNzYWdlcyhfU19nZXRfY19uYW1lKCkpCi0rICAgICB7IH0KLSsKLSsgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KLSsgICAgIG1lc3NhZ2VzPF9DaGFyVD46Om1lc3NhZ2VzKF9fY19sb2NhbGUgX19jbG9jLCBjb25zdCBjaGFyKiBfX3MsCi0rCQkJCXNpemVfdCBfX3JlZnMpCi0rICAgICA6IGZhY2V0KF9fcmVmcyksIF9NX2NfbG9jYWxlX21lc3NhZ2VzKF9TX2Nsb25lX2NfbG9jYWxlKF9fY2xvYykpLAotKyAgICAgX01fbmFtZV9tZXNzYWdlcyhfX3MpCi0rICAgICB7Ci0rICAgICAgIGNoYXIqIF9fdG1wID0gbmV3IGNoYXJbc3RkOjpzdHJsZW4oX19zKSArIDFdOwotKyAgICAgICBzdGQ6OnN0cmNweShfX3RtcCwgX19zKTsKLSsgICAgICAgX01fbmFtZV9tZXNzYWdlcyA9IF9fdG1wOwotKyAgICAgfQotKwotKyAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgotKyAgICB0eXBlbmFtZSBtZXNzYWdlczxfQ2hhclQ+OjpjYXRhbG9nCi0rICAgIG1lc3NhZ2VzPF9DaGFyVD46Om9wZW4oY29uc3QgYmFzaWNfc3RyaW5nPGNoYXI+JiBfX3MsIGNvbnN0IGxvY2FsZSYgX19sb2MsCi0rCQkJICAgY29uc3QgY2hhciogX19kaXIpIGNvbnN0Ci0rICAgIHsKLSsgICAgICBfX2JpbmR0ZXh0ZG9tYWluKF9fcy5jX3N0cigpLCBfX2Rpcik7Ci0rICAgICAgcmV0dXJuIHRoaXMtPmRvX29wZW4oX19zLCBfX2xvYyk7Ci0rICAgIH0KLSsKLSsgIC8vIFZpcnR1YWwgbWVtYmVyIGZ1bmN0aW9ucy4KLSsgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KLSsgICAgbWVzc2FnZXM8X0NoYXJUPjo6fm1lc3NhZ2VzKCkKLSsgICAgewotKyAgICAgIGlmIChfTV9uYW1lX21lc3NhZ2VzICE9IF9TX2dldF9jX25hbWUoKSkKLSsJZGVsZXRlIFtdIF9NX25hbWVfbWVzc2FnZXM7Ci0rICAgICAgX1NfZGVzdHJveV9jX2xvY2FsZShfTV9jX2xvY2FsZV9tZXNzYWdlcyk7Ci0rICAgIH0KLSsKLSsgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KLSsgICAgdHlwZW5hbWUgbWVzc2FnZXM8X0NoYXJUPjo6Y2F0YWxvZwotKyAgICBtZXNzYWdlczxfQ2hhclQ+Ojpkb19vcGVuKGNvbnN0IGJhc2ljX3N0cmluZzxjaGFyPiYgX19zLAotKwkJCSAgICAgIGNvbnN0IGxvY2FsZSYpIGNvbnN0Ci0rICAgIHsKLSsgICAgICAvLyBObyBlcnJvciBjaGVja2luZyBpcyBkb25lLCBhc3N1bWUgdGhlIGNhdGFsb2cgZXhpc3RzIGFuZCBjYW4KLSsgICAgICAvLyBiZSB1c2VkLgotKyAgICAgIF9fdGV4dGRvbWFpbihfX3MuY19zdHIoKSk7Ci0rICAgICAgcmV0dXJuIDA7Ci0rICAgIH0KLSsKLSsgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KLSsgICAgdm9pZAotKyAgICBtZXNzYWdlczxfQ2hhclQ+Ojpkb19jbG9zZShjYXRhbG9nKSBjb25zdAotKyAgICB7IH0KLSsKLSsgICAvLyBtZXNzYWdlc19ieW5hbWUKLSsgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+Ci0rICAgICBtZXNzYWdlc19ieW5hbWU8X0NoYXJUPjo6bWVzc2FnZXNfYnluYW1lKGNvbnN0IGNoYXIqIF9fcywgc2l6ZV90IF9fcmVmcykKLSsgICAgIDogbWVzc2FnZXM8X0NoYXJUPihfX3JlZnMpCi0rICAgICB7Ci0rICAgICAgIGlmICh0aGlzLT5fTV9uYW1lX21lc3NhZ2VzICE9IGxvY2FsZTo6ZmFjZXQ6Ol9TX2dldF9jX25hbWUoKSkKLSsJIGRlbGV0ZSBbXSB0aGlzLT5fTV9uYW1lX21lc3NhZ2VzOwotKyAgICAgICBjaGFyKiBfX3RtcCA9IG5ldyBjaGFyW3N0ZDo6c3RybGVuKF9fcykgKyAxXTsKLSsgICAgICAgc3RkOjpzdHJjcHkoX190bXAsIF9fcyk7Ci0rICAgICAgIHRoaXMtPl9NX25hbWVfbWVzc2FnZXMgPSBfX3RtcDsKLSsKLSsgICAgICAgaWYgKHN0ZDo6c3RyY21wKF9fcywgIkMiKSAhPSAwICYmIHN0ZDo6c3RyY21wKF9fcywgIlBPU0lYIikgIT0gMCkKLSsJIHsKLSsJICAgdGhpcy0+X1NfZGVzdHJveV9jX2xvY2FsZSh0aGlzLT5fTV9jX2xvY2FsZV9tZXNzYWdlcyk7Ci0rCSAgIHRoaXMtPl9TX2NyZWF0ZV9jX2xvY2FsZSh0aGlzLT5fTV9jX2xvY2FsZV9tZXNzYWdlcywgX19zKTsKLSsJIH0KLSsgICAgIH0KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYWE1MjczMQotLS0tIC9kZXYvbnVsbAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKLUBAIC0wLDAgKzEsNjkyIEBACi0rLy8gc3RkOjptb25leXB1bmN0IGltcGxlbWVudGF0aW9uIGRldGFpbHMsIEdOVSB2ZXJzaW9uIC0qLSBDKysgLSotCi0rCi0rLy8gQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8vCi0rLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQotKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQotKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rLy8gYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsvLyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsvLyBVU0EuCi0rCi0rLy8gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSB1c2UgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBmcmVlIHNvZnR3YXJlCi0rLy8gbGlicmFyeSB3aXRob3V0IHJlc3RyaWN0aW9uLiAgU3BlY2lmaWNhbGx5LCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZQotKy8vIHRlbXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5jdGlvbnMgZnJvbSB0aGlzIGZpbGUsIG9yIHlvdSBjb21waWxlCi0rLy8gdGhpcyBmaWxlIGFuZCBsaW5rIGl0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzCi0rLy8gZmlsZSBkb2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyCi0rLy8gaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotKwotKy8vCi0rLy8gSVNPIEMrKyAxNDg4MjogMjIuMi42LjMuMiAgbW9uZXlwdW5jdCB2aXJ0dWFsIGZ1bmN0aW9ucwotKy8vCi0rCi0rLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KLSsKLSsjZGVmaW5lIF9MSUJDCi0rI2luY2x1ZGUgPGxvY2FsZT4KLSsjdW5kZWYgX0xJQkMKLSsjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSsKLSsjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSsjd2FybmluZyBvcHRpbWl6ZSB0aGlzIGZvciB1Y2xpYmMKLSsjd2FybmluZyB0YWlsb3IgZm9yIHN0dWIgbG9jYWxlIHN1cHBvcnQKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsjZGVmaW5lIF9fbmxfbGFuZ2luZm9fbChOLCBMKSAgICAgICAgIG5sX2xhbmdpbmZvKChOKSkKLSsjZW5kaWYKLSsKLStuYW1lc3BhY2Ugc3RkCi0rewotKyAgLy8gQ29uc3RydWN0IGFuZCByZXR1cm4gdmFsaWQgcGF0dGVybiBjb25zaXN0aW5nIG9mIHNvbWUgY29tYmluYXRpb24gb2Y6Ci0rICAvLyBzcGFjZSBub25lIHN5bWJvbCBzaWduIHZhbHVlCi0rICBtb25leV9iYXNlOjpwYXR0ZXJuCi0rICBtb25leV9iYXNlOjpfU19jb25zdHJ1Y3RfcGF0dGVybihjaGFyIF9fcHJlY2VkZXMsIGNoYXIgX19zcGFjZSwgY2hhciBfX3Bvc24pCi0rICB7Ci0rICAgIHBhdHRlcm4gX19yZXQ7Ci0rCi0rICAgIC8vIFRoaXMgaW5zYW5lbHkgY29tcGxpY2F0ZWQgcm91dGluZSBhdHRlbXB0cyB0byBjb25zdHJ1Y3QgYSB2YWxpZAotKyAgICAvLyBwYXR0ZXJuIGZvciB1c2Ugd2l0aCBtb255ZXB1bmN0LiBBIGNvdXBsZSBvZiBpbnZhcmlhbnRzOgotKwotKyAgICAvLyBpZiAoX19wcmVjZWRlcykgc3ltYm9sIC0+IHZhbHVlCi0rICAgIC8vIGVsc2UgdmFsdWUgLT4gc3ltYm9sCi0rCi0rICAgIC8vIGlmIChfX3NwYWNlKSBzcGFjZQotKyAgICAvLyBlbHNlIG5vbmUKLSsKLSsgICAgLy8gbm9uZSA9PSBuZXZlciBmaXJzdAotKyAgICAvLyBzcGFjZSBuZXZlciBmaXJzdCBvciBsYXN0Ci0rCi0rICAgIC8vIEFueSBlbGVnYW50IGltcGxlbWVudGF0aW9ucyBvZiB0aGlzIGFyZSB3ZWxjb21lLgotKyAgICBzd2l0Y2ggKF9fcG9zbikKLSsgICAgICB7Ci0rICAgICAgY2FzZSAwOgotKyAgICAgIGNhc2UgMToKLSsJLy8gMSBUaGUgc2lnbiBwcmVjZWRlcyB0aGUgdmFsdWUgYW5kIHN5bWJvbC4KLSsJX19yZXQuZmllbGRbMF0gPSBzaWduOwotKwlpZiAoX19zcGFjZSkKLSsJICB7Ci0rCSAgICAvLyBQYXR0ZXJuIHN0YXJ0cyB3aXRoIHNpZ24uCi0rCSAgICBpZiAoX19wcmVjZWRlcykKLSsJICAgICAgewotKwkJX19yZXQuZmllbGRbMV0gPSBzeW1ib2w7Ci0rCQlfX3JldC5maWVsZFszXSA9IHZhbHVlOwotKwkgICAgICB9Ci0rCSAgICBlbHNlCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzFdID0gdmFsdWU7Ci0rCQlfX3JldC5maWVsZFszXSA9IHN5bWJvbDsKLSsJICAgICAgfQotKwkgICAgX19yZXQuZmllbGRbMl0gPSBzcGFjZTsKLSsJICB9Ci0rCWVsc2UKLSsJICB7Ci0rCSAgICAvLyBQYXR0ZXJuIHN0YXJ0cyB3aXRoIHNpZ24gYW5kIGVuZHMgd2l0aCBub25lLgotKwkgICAgaWYgKF9fcHJlY2VkZXMpCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzFdID0gc3ltYm9sOwotKwkJX19yZXQuZmllbGRbMl0gPSB2YWx1ZTsKLSsJICAgICAgfQotKwkgICAgZWxzZQotKwkgICAgICB7Ci0rCQlfX3JldC5maWVsZFsxXSA9IHZhbHVlOwotKwkJX19yZXQuZmllbGRbMl0gPSBzeW1ib2w7Ci0rCSAgICAgIH0KLSsJICAgIF9fcmV0LmZpZWxkWzNdID0gbm9uZTsKLSsJICB9Ci0rCWJyZWFrOwotKyAgICAgIGNhc2UgMjoKLSsJLy8gMiBUaGUgc2lnbiBmb2xsb3dzIHRoZSB2YWx1ZSBhbmQgc3ltYm9sLgotKwlpZiAoX19zcGFjZSkKLSsJICB7Ci0rCSAgICAvLyBQYXR0ZXJuIGVpdGhlciBlbmRzIHdpdGggc2lnbi4KLSsJICAgIGlmIChfX3ByZWNlZGVzKQotKwkgICAgICB7Ci0rCQlfX3JldC5maWVsZFswXSA9IHN5bWJvbDsKLSsJCV9fcmV0LmZpZWxkWzJdID0gdmFsdWU7Ci0rCSAgICAgIH0KLSsJICAgIGVsc2UKLSsJICAgICAgewotKwkJX19yZXQuZmllbGRbMF0gPSB2YWx1ZTsKLSsJCV9fcmV0LmZpZWxkWzJdID0gc3ltYm9sOwotKwkgICAgICB9Ci0rCSAgICBfX3JldC5maWVsZFsxXSA9IHNwYWNlOwotKwkgICAgX19yZXQuZmllbGRbM10gPSBzaWduOwotKwkgIH0KLSsJZWxzZQotKwkgIHsKLSsJICAgIC8vIFBhdHRlcm4gZW5kcyB3aXRoIHNpZ24gdGhlbiBub25lLgotKwkgICAgaWYgKF9fcHJlY2VkZXMpCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzBdID0gc3ltYm9sOwotKwkJX19yZXQuZmllbGRbMV0gPSB2YWx1ZTsKLSsJICAgICAgfQotKwkgICAgZWxzZQotKwkgICAgICB7Ci0rCQlfX3JldC5maWVsZFswXSA9IHZhbHVlOwotKwkJX19yZXQuZmllbGRbMV0gPSBzeW1ib2w7Ci0rCSAgICAgIH0KLSsJICAgIF9fcmV0LmZpZWxkWzJdID0gc2lnbjsKLSsJICAgIF9fcmV0LmZpZWxkWzNdID0gbm9uZTsKLSsJICB9Ci0rCWJyZWFrOwotKyAgICAgIGNhc2UgMzoKLSsJLy8gMyBUaGUgc2lnbiBpbW1lZGlhdGVseSBwcmVjZWRlcyB0aGUgc3ltYm9sLgotKwlpZiAoX19wcmVjZWRlcykKLSsJICB7Ci0rCSAgICBfX3JldC5maWVsZFswXSA9IHNpZ247Ci0rCSAgICBfX3JldC5maWVsZFsxXSA9IHN5bWJvbDsKLSsJICAgIGlmIChfX3NwYWNlKQotKwkgICAgICB7Ci0rCQlfX3JldC5maWVsZFsyXSA9IHNwYWNlOwotKwkJX19yZXQuZmllbGRbM10gPSB2YWx1ZTsKLSsJICAgICAgfQotKwkgICAgZWxzZQotKwkgICAgICB7Ci0rCQlfX3JldC5maWVsZFsyXSA9IHZhbHVlOwotKwkJX19yZXQuZmllbGRbM10gPSBub25lOwotKwkgICAgICB9Ci0rCSAgfQotKwllbHNlCi0rCSAgewotKwkgICAgX19yZXQuZmllbGRbMF0gPSB2YWx1ZTsKLSsJICAgIGlmIChfX3NwYWNlKQotKwkgICAgICB7Ci0rCQlfX3JldC5maWVsZFsxXSA9IHNwYWNlOwotKwkJX19yZXQuZmllbGRbMl0gPSBzaWduOwotKwkJX19yZXQuZmllbGRbM10gPSBzeW1ib2w7Ci0rCSAgICAgIH0KLSsJICAgIGVsc2UKLSsJICAgICAgewotKwkJX19yZXQuZmllbGRbMV0gPSBzaWduOwotKwkJX19yZXQuZmllbGRbMl0gPSBzeW1ib2w7Ci0rCQlfX3JldC5maWVsZFszXSA9IG5vbmU7Ci0rCSAgICAgIH0KLSsJICB9Ci0rCWJyZWFrOwotKyAgICAgIGNhc2UgNDoKLSsJLy8gNCBUaGUgc2lnbiBpbW1lZGlhdGVseSBmb2xsb3dzIHRoZSBzeW1ib2wuCi0rCWlmIChfX3ByZWNlZGVzKQotKwkgIHsKLSsJICAgIF9fcmV0LmZpZWxkWzBdID0gc3ltYm9sOwotKwkgICAgX19yZXQuZmllbGRbMV0gPSBzaWduOwotKwkgICAgaWYgKF9fc3BhY2UpCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzJdID0gc3BhY2U7Ci0rCQlfX3JldC5maWVsZFszXSA9IHZhbHVlOwotKwkgICAgICB9Ci0rCSAgICBlbHNlCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzJdID0gdmFsdWU7Ci0rCQlfX3JldC5maWVsZFszXSA9IG5vbmU7Ci0rCSAgICAgIH0KLSsJICB9Ci0rCWVsc2UKLSsJICB7Ci0rCSAgICBfX3JldC5maWVsZFswXSA9IHZhbHVlOwotKwkgICAgaWYgKF9fc3BhY2UpCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzFdID0gc3BhY2U7Ci0rCQlfX3JldC5maWVsZFsyXSA9IHN5bWJvbDsKLSsJCV9fcmV0LmZpZWxkWzNdID0gc2lnbjsKLSsJICAgICAgfQotKwkgICAgZWxzZQotKwkgICAgICB7Ci0rCQlfX3JldC5maWVsZFsxXSA9IHN5bWJvbDsKLSsJCV9fcmV0LmZpZWxkWzJdID0gc2lnbjsKLSsJCV9fcmV0LmZpZWxkWzNdID0gbm9uZTsKLSsJICAgICAgfQotKwkgIH0KLSsJYnJlYWs7Ci0rICAgICAgZGVmYXVsdDoKLSsJOwotKyAgICAgIH0KLSsgICAgcmV0dXJuIF9fcmV0OwotKyAgfQotKwotKyAgdGVtcGxhdGU8PgotKyAgICB2b2lkCi0rICAgIG1vbmV5cHVuY3Q8Y2hhciwgdHJ1ZT46Ol9NX2luaXRpYWxpemVfbW9uZXlwdW5jdChfX2NfbG9jYWxlIF9fY2xvYywKLSsJCQkJCQkgICAgIGNvbnN0IGNoYXIqKQotKyAgICB7Ci0rICAgICAgaWYgKCFfTV9kYXRhKQotKwlfTV9kYXRhID0gbmV3IF9fbW9uZXlwdW5jdF9jYWNoZTxjaGFyLCB0cnVlPjsKLSsKLSsgICAgICBpZiAoIV9fY2xvYykKLSsJewotKwkgIC8vICJDIiBsb2NhbGUKLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gJy4nOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSAnLCc7Ci0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSAiIjsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZ19zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbCA9ICIiOwotKwkgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ24gPSAiIjsKLSsJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSAiIjsKLSsJICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX2ZyYWNfZGlnaXRzID0gMDsKLSsJICBfTV9kYXRhLT5fTV9wb3NfZm9ybWF0ID0gbW9uZXlfYmFzZTo6X1NfZGVmYXVsdF9wYXR0ZXJuOwotKwkgIF9NX2RhdGEtPl9NX25lZ19mb3JtYXQgPSBtb25leV9iYXNlOjpfU19kZWZhdWx0X3BhdHRlcm47Ci0rCi0rCSAgZm9yIChzaXplX3QgX19pID0gMDsgX19pIDwgbW9uZXlfYmFzZTo6X1NfZW5kOyArK19faSkKLSsJICAgIF9NX2RhdGEtPl9NX2F0b21zW19faV0gPSBtb25leV9iYXNlOjpfU19hdG9tc1tfX2ldOwotKwl9Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgLy8gTmFtZWQgbG9jYWxlLgotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSAqKF9fbmxfbGFuZ2luZm9fbChfX01PTl9ERUNJTUFMX1BPSU5ULAotKwkJCQkJCQlfX2Nsb2MpKTsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gKihfX25sX2xhbmdpbmZvX2woX19NT05fVEhPVVNBTkRTX1NFUCwKLSsJCQkJCQkJX19jbG9jKSk7Ci0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSBfX25sX2xhbmdpbmZvX2woX19NT05fR1JPVVBJTkcsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmdfc2l6ZSA9IHN0cmxlbihfTV9kYXRhLT5fTV9ncm91cGluZyk7Ci0rCSAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbiA9IF9fbmxfbGFuZ2luZm9fbChfX1BPU0lUSVZFX1NJR04sIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbl9zaXplID0gc3RybGVuKF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ24pOwotKwotKwkgIGNoYXIgX19ucG9zbiA9ICooX19ubF9sYW5naW5mb19sKF9fSU5UX05fU0lHTl9QT1NOLCBfX2Nsb2MpKTsKLSsJICBpZiAoIV9fbnBvc24pCi0rCSAgICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduID0gIigpIjsKLSsJICBlbHNlCi0rCSAgICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduID0gX19ubF9sYW5naW5mb19sKF9fTkVHQVRJVkVfU0lHTiwKLSsJCQkJCQkJX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduX3NpemUgPSBzdHJsZW4oX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbik7Ci0rCi0rCSAgLy8gX0ludGwgPT0gdHJ1ZQotKwkgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sID0gX19ubF9sYW5naW5mb19sKF9fSU5UX0NVUlJfU1lNQk9MLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sX3NpemUgPSBzdHJsZW4oX01fZGF0YS0+X01fY3Vycl9zeW1ib2wpOwotKwkgIF9NX2RhdGEtPl9NX2ZyYWNfZGlnaXRzID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfRlJBQ19ESUdJVFMsCi0rCQkJCQkJICAgICAgX19jbG9jKSk7Ci0rCSAgY2hhciBfX3BwcmVjZWRlcyA9ICooX19ubF9sYW5naW5mb19sKF9fSU5UX1BfQ1NfUFJFQ0VERVMsIF9fY2xvYykpOwotKwkgIGNoYXIgX19wc3BhY2UgPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9QX1NFUF9CWV9TUEFDRSwgX19jbG9jKSk7Ci0rCSAgY2hhciBfX3Bwb3NuID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfUF9TSUdOX1BPU04sIF9fY2xvYykpOwotKwkgIF9NX2RhdGEtPl9NX3Bvc19mb3JtYXQgPSBfU19jb25zdHJ1Y3RfcGF0dGVybihfX3BwcmVjZWRlcywgX19wc3BhY2UsCi0rCQkJCQkJCV9fcHBvc24pOwotKwkgIGNoYXIgX19ucHJlY2VkZXMgPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9OX0NTX1BSRUNFREVTLCBfX2Nsb2MpKTsKLSsJICBjaGFyIF9fbnNwYWNlID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfTl9TRVBfQllfU1BBQ0UsIF9fY2xvYykpOwotKwkgIF9NX2RhdGEtPl9NX25lZ19mb3JtYXQgPSBfU19jb25zdHJ1Y3RfcGF0dGVybihfX25wcmVjZWRlcywgX19uc3BhY2UsCi0rCQkJCQkJCV9fbnBvc24pOwotKwl9Ci0rICAgIH0KLSsKLSsgIHRlbXBsYXRlPD4KLSsgICAgdm9pZAotKyAgICBtb25leXB1bmN0PGNoYXIsIGZhbHNlPjo6X01faW5pdGlhbGl6ZV9tb25leXB1bmN0KF9fY19sb2NhbGUgX19jbG9jLAotKwkJCQkJCSAgICAgIGNvbnN0IGNoYXIqKQotKyAgICB7Ci0rICAgICAgaWYgKCFfTV9kYXRhKQotKwlfTV9kYXRhID0gbmV3IF9fbW9uZXlwdW5jdF9jYWNoZTxjaGFyLCBmYWxzZT47Ci0rCi0rICAgICAgaWYgKCFfX2Nsb2MpCi0rCXsKLSsJICAvLyAiQyIgbG9jYWxlCi0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9ICcuJzsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gJywnOwotKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nID0gIiI7Ci0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmdfc2l6ZSA9IDA7Ci0rCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2wgPSAiIjsKLSsJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbF9zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduID0gIiI7Ci0rCSAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbl9zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduID0gIiI7Ci0rCSAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbl9zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9mcmFjX2RpZ2l0cyA9IDA7Ci0rCSAgX01fZGF0YS0+X01fcG9zX2Zvcm1hdCA9IG1vbmV5X2Jhc2U6Ol9TX2RlZmF1bHRfcGF0dGVybjsKLSsJICBfTV9kYXRhLT5fTV9uZWdfZm9ybWF0ID0gbW9uZXlfYmFzZTo6X1NfZGVmYXVsdF9wYXR0ZXJuOwotKwotKwkgIGZvciAoc2l6ZV90IF9faSA9IDA7IF9faSA8IG1vbmV5X2Jhc2U6Ol9TX2VuZDsgKytfX2kpCi0rCSAgICBfTV9kYXRhLT5fTV9hdG9tc1tfX2ldID0gbW9uZXlfYmFzZTo6X1NfYXRvbXNbX19pXTsKLSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIC8vIE5hbWVkIGxvY2FsZS4KLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gKihfX25sX2xhbmdpbmZvX2woX19NT05fREVDSU1BTF9QT0lOVCwKLSsJCQkJCQkJX19jbG9jKSk7Ci0rCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9ICooX19ubF9sYW5naW5mb19sKF9fTU9OX1RIT1VTQU5EU19TRVAsCi0rCQkJCQkJCV9fY2xvYykpOwotKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nID0gX19ubF9sYW5naW5mb19sKF9fTU9OX0dST1VQSU5HLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nX3NpemUgPSBzdHJsZW4oX01fZGF0YS0+X01fZ3JvdXBpbmcpOwotKwkgIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ24gPSBfX25sX2xhbmdpbmZvX2woX19QT1NJVElWRV9TSUdOLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ25fc2l6ZSA9IHN0cmxlbihfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduKTsKLSsKLSsJICBjaGFyIF9fbnBvc24gPSAqKF9fbmxfbGFuZ2luZm9fbChfX05fU0lHTl9QT1NOLCBfX2Nsb2MpKTsKLSsJICBpZiAoIV9fbnBvc24pCi0rCSAgICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduID0gIigpIjsKLSsJICBlbHNlCi0rCSAgICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduID0gX19ubF9sYW5naW5mb19sKF9fTkVHQVRJVkVfU0lHTiwKLSsJCQkJCQkJX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduX3NpemUgPSBzdHJsZW4oX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbik7Ci0rCi0rCSAgLy8gX0ludGwgPT0gZmFsc2UKLSsJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbCA9IF9fbmxfbGFuZ2luZm9fbChfX0NVUlJFTkNZX1NZTUJPTCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbF9zaXplID0gc3RybGVuKF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sKTsKLSsJICBfTV9kYXRhLT5fTV9mcmFjX2RpZ2l0cyA9ICooX19ubF9sYW5naW5mb19sKF9fRlJBQ19ESUdJVFMsIF9fY2xvYykpOwotKwkgIGNoYXIgX19wcHJlY2VkZXMgPSAqKF9fbmxfbGFuZ2luZm9fbChfX1BfQ1NfUFJFQ0VERVMsIF9fY2xvYykpOwotKwkgIGNoYXIgX19wc3BhY2UgPSAqKF9fbmxfbGFuZ2luZm9fbChfX1BfU0VQX0JZX1NQQUNFLCBfX2Nsb2MpKTsKLSsJICBjaGFyIF9fcHBvc24gPSAqKF9fbmxfbGFuZ2luZm9fbChfX1BfU0lHTl9QT1NOLCBfX2Nsb2MpKTsKLSsJICBfTV9kYXRhLT5fTV9wb3NfZm9ybWF0ID0gX1NfY29uc3RydWN0X3BhdHRlcm4oX19wcHJlY2VkZXMsIF9fcHNwYWNlLAotKwkJCQkJCQlfX3Bwb3NuKTsKLSsJICBjaGFyIF9fbnByZWNlZGVzID0gKihfX25sX2xhbmdpbmZvX2woX19OX0NTX1BSRUNFREVTLCBfX2Nsb2MpKTsKLSsJICBjaGFyIF9fbnNwYWNlID0gKihfX25sX2xhbmdpbmZvX2woX19OX1NFUF9CWV9TUEFDRSwgX19jbG9jKSk7Ci0rCSAgX01fZGF0YS0+X01fbmVnX2Zvcm1hdCA9IF9TX2NvbnN0cnVjdF9wYXR0ZXJuKF9fbnByZWNlZGVzLCBfX25zcGFjZSwKLSsJCQkJCQkJX19ucG9zbik7Ci0rCX0KLSsgICAgfQotKwotKyAgdGVtcGxhdGU8PgotKyAgICBtb25leXB1bmN0PGNoYXIsIHRydWU+Ojp+bW9uZXlwdW5jdCgpCi0rICAgIHsgZGVsZXRlIF9NX2RhdGE7IH0KLSsKLSsgIHRlbXBsYXRlPD4KLSsgICAgbW9uZXlwdW5jdDxjaGFyLCBmYWxzZT46On5tb25leXB1bmN0KCkKLSsgICAgeyBkZWxldGUgX01fZGF0YTsgfQotKwotKyNpZmRlZiBfR0xJQkNYWF9VU0VfV0NIQVJfVAotKyAgdGVtcGxhdGU8PgotKyAgICB2b2lkCi0rICAgIG1vbmV5cHVuY3Q8d2NoYXJfdCwgdHJ1ZT46Ol9NX2luaXRpYWxpemVfbW9uZXlwdW5jdChfX2NfbG9jYWxlIF9fY2xvYywKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKwkJCQkJCQljb25zdCBjaGFyKikKLSsjZWxzZQotKwkJCQkJCQljb25zdCBjaGFyKiBfX25hbWUpCi0rI2VuZGlmCi0rICAgIHsKLSsgICAgICBpZiAoIV9NX2RhdGEpCi0rCV9NX2RhdGEgPSBuZXcgX19tb25leXB1bmN0X2NhY2hlPHdjaGFyX3QsIHRydWU+OwotKwotKyAgICAgIGlmICghX19jbG9jKQotKwl7Ci0rCSAgLy8gIkMiIGxvY2FsZQotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBMJy4nOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBMJywnOwotKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nID0gIiI7Ci0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmdfc2l6ZSA9IDA7Ci0rCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2wgPSBMIiI7Ci0rCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2xfc2l6ZSA9IDA7Ci0rCSAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbiA9IEwiIjsKLSsJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSBMIiI7Ci0rCSAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbl9zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9mcmFjX2RpZ2l0cyA9IDA7Ci0rCSAgX01fZGF0YS0+X01fcG9zX2Zvcm1hdCA9IG1vbmV5X2Jhc2U6Ol9TX2RlZmF1bHRfcGF0dGVybjsKLSsJICBfTV9kYXRhLT5fTV9uZWdfZm9ybWF0ID0gbW9uZXlfYmFzZTo6X1NfZGVmYXVsdF9wYXR0ZXJuOwotKwotKwkgIC8vIFVzZSBjdHlwZTo6d2lkZW4gY29kZSB3aXRob3V0IHRoZSBmYWNldC4uLgotKwkgIGZvciAoc2l6ZV90IF9faSA9IDA7IF9faSA8IG1vbmV5X2Jhc2U6Ol9TX2VuZDsgKytfX2kpCi0rCSAgICBfTV9kYXRhLT5fTV9hdG9tc1tfX2ldID0KLSsJICAgICAgc3RhdGljX2Nhc3Q8d2NoYXJfdD4obW9uZXlfYmFzZTo6X1NfYXRvbXNbX19pXSk7Ci0rCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICAvLyBOYW1lZCBsb2NhbGUuCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsJICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX19jbG9jKTsKLSsjZWxzZQotKwkgIC8vIFN3aXRjaCB0byBuYW1lZCBsb2NhbGUgc28gdGhhdCBtYnNydG93Y3Mgd2lsbCB3b3JrLgotKwkgIGNoYXIqIF9fb2xkID0gc3RyZHVwKHNldGxvY2FsZShMQ19BTEwsIE5VTEwpKTsKLSsJICBzZXRsb2NhbGUoTENfQUxMLCBfX25hbWUpOwotKyNlbmRpZgotKwotKyNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotKyN3YXJuaW5nIGZpeCB0aGlzLi4uIHNob3VsZCBiZSBtb25ldGFyeQotKyNlbmRpZgotKyNpZmRlZiBfX1VDTElCQ19fCi0rIyBpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fY2xvYy0+ZGVjaW1hbF9wb2ludF93YzsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX19jbG9jLT50aG91c2FuZHNfc2VwX3djOwotKyMgZWxzZQotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBfX2dsb2JhbF9sb2NhbGUtPmRlY2ltYWxfcG9pbnRfd2M7Ci0rCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IF9fZ2xvYmFsX2xvY2FsZS0+dGhvdXNhbmRzX3NlcF93YzsKLSsjIGVuZGlmCi0rI2Vsc2UKLSsJICB1bmlvbiB7IGNoYXIgKl9fczsgd2NoYXJfdCBfX3c7IH0gX191OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX01PTkVUQVJZX0RFQ0lNQUxfUE9JTlRfV0MsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fdS5fX3c7Ci0rCi0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfTU9ORVRBUllfVEhPVVNBTkRTX1NFUF9XQywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX191Ll9fdzsKLSsjZW5kaWYKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZyA9IF9fbmxfbGFuZ2luZm9fbChfX01PTl9HUk9VUElORywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZ19zaXplID0gc3RybGVuKF9NX2RhdGEtPl9NX2dyb3VwaW5nKTsKLSsKLSsJICBjb25zdCBjaGFyKiBfX2Nwb3NzaWduID0gX19ubF9sYW5naW5mb19sKF9fUE9TSVRJVkVfU0lHTiwgX19jbG9jKTsKLSsJICBjb25zdCBjaGFyKiBfX2NuZWdzaWduID0gX19ubF9sYW5naW5mb19sKF9fTkVHQVRJVkVfU0lHTiwgX19jbG9jKTsKLSsJICBjb25zdCBjaGFyKiBfX2NjdXJyID0gX19ubF9sYW5naW5mb19sKF9fSU5UX0NVUlJfU1lNQk9MLCBfX2Nsb2MpOwotKwotKwkgIHdjaGFyX3QqIF9fd2NzX3BzID0gMDsKLSsJICB3Y2hhcl90KiBfX3djc19ucyA9IDA7Ci0rCSAgY29uc3QgY2hhciBfX25wb3NuID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfTl9TSUdOX1BPU04sIF9fY2xvYykpOwotKwkgIHRyeQotKwkgICAgewotKwkgICAgICBtYnN0YXRlX3QgX19zdGF0ZTsKLSsJICAgICAgc2l6ZV90IF9fbGVuID0gc3RybGVuKF9fY3Bvc3NpZ24pOwotKwkgICAgICBpZiAoX19sZW4pCi0rCQl7Ci0rCQkgICsrX19sZW47Ci0rCQkgIG1lbXNldCgmX19zdGF0ZSwgMCwgc2l6ZW9mKG1ic3RhdGVfdCkpOwotKwkJICBfX3djc19wcyA9IG5ldyB3Y2hhcl90W19fbGVuXTsKLSsJCSAgbWJzcnRvd2NzKF9fd2NzX3BzLCAmX19jcG9zc2lnbiwgX19sZW4sICZfX3N0YXRlKTsKLSsJCSAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbiA9IF9fd2NzX3BzOwotKwkJfQotKwkgICAgICBlbHNlCi0rCQlfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduID0gTCIiOwotKwkgICAgICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduX3NpemUgPSB3Y3NsZW4oX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbik7Ci0rCi0rCSAgICAgIF9fbGVuID0gc3RybGVuKF9fY25lZ3NpZ24pOwotKwkgICAgICBpZiAoIV9fbnBvc24pCi0rCQlfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduID0gTCIoKSI7Ci0rCSAgICAgIGVsc2UgaWYgKF9fbGVuKQotKwkJewotKwkJICArK19fbGVuOwotKwkJICBtZW1zZXQoJl9fc3RhdGUsIDAsIHNpemVvZihtYnN0YXRlX3QpKTsKLSsJCSAgX193Y3NfbnMgPSBuZXcgd2NoYXJfdFtfX2xlbl07Ci0rCQkgIG1ic3J0b3djcyhfX3djc19ucywgJl9fY25lZ3NpZ24sIF9fbGVuLCAmX19zdGF0ZSk7Ci0rCQkgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSBfX3djc19uczsKLSsJCX0KLSsJICAgICAgZWxzZQotKwkJX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbiA9IEwiIjsKLSsJICAgICAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbl9zaXplID0gd2NzbGVuKF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24pOwotKwotKwkgICAgICAvLyBfSW50bCA9PSB0cnVlLgotKwkgICAgICBfX2xlbiA9IHN0cmxlbihfX2NjdXJyKTsKLSsJICAgICAgaWYgKF9fbGVuKQotKwkJewotKwkJICArK19fbGVuOwotKwkJICBtZW1zZXQoJl9fc3RhdGUsIDAsIHNpemVvZihtYnN0YXRlX3QpKTsKLSsJCSAgd2NoYXJfdCogX193Y3MgPSBuZXcgd2NoYXJfdFtfX2xlbl07Ci0rCQkgIG1ic3J0b3djcyhfX3djcywgJl9fY2N1cnIsIF9fbGVuLCAmX19zdGF0ZSk7Ci0rCQkgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sID0gX193Y3M7Ci0rCQl9Ci0rCSAgICAgIGVsc2UKLSsJCV9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sID0gTCIiOwotKwkgICAgICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbF9zaXplID0gd2NzbGVuKF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sKTsKLSsJICAgIH0KLSsJICBjYXRjaCAoLi4uKQotKwkgICAgewotKwkgICAgICBkZWxldGUgX01fZGF0YTsKLSsJICAgICAgX01fZGF0YSA9IDA7Ci0rCSAgICAgIGRlbGV0ZSBfX3djc19wczsKLSsJICAgICAgZGVsZXRlIF9fd2NzX25zOwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rCSAgICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZWxzZQotKwkgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfX29sZCk7Ci0rCSAgICAgIGZyZWUoX19vbGQpOwotKyNlbmRpZgotKwkgICAgICBfX3Rocm93X2V4Y2VwdGlvbl9hZ2FpbjsKLSsJICAgIH0KLSsKLSsJICBfTV9kYXRhLT5fTV9mcmFjX2RpZ2l0cyA9ICooX19ubF9sYW5naW5mb19sKF9fSU5UX0ZSQUNfRElHSVRTLAotKwkJCQkJCSAgICAgIF9fY2xvYykpOwotKwkgIGNoYXIgX19wcHJlY2VkZXMgPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9QX0NTX1BSRUNFREVTLCBfX2Nsb2MpKTsKLSsJICBjaGFyIF9fcHNwYWNlID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfUF9TRVBfQllfU1BBQ0UsIF9fY2xvYykpOwotKwkgIGNoYXIgX19wcG9zbiA9ICooX19ubF9sYW5naW5mb19sKF9fSU5UX1BfU0lHTl9QT1NOLCBfX2Nsb2MpKTsKLSsJICBfTV9kYXRhLT5fTV9wb3NfZm9ybWF0ID0gX1NfY29uc3RydWN0X3BhdHRlcm4oX19wcHJlY2VkZXMsIF9fcHNwYWNlLAotKwkJCQkJCQlfX3Bwb3NuKTsKLSsJICBjaGFyIF9fbnByZWNlZGVzID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfTl9DU19QUkVDRURFUywgX19jbG9jKSk7Ci0rCSAgY2hhciBfX25zcGFjZSA9ICooX19ubF9sYW5naW5mb19sKF9fSU5UX05fU0VQX0JZX1NQQUNFLCBfX2Nsb2MpKTsKLSsJICBfTV9kYXRhLT5fTV9uZWdfZm9ybWF0ID0gX1NfY29uc3RydWN0X3BhdHRlcm4oX19ucHJlY2VkZXMsIF9fbnNwYWNlLAotKwkJCQkJCQlfX25wb3NuKTsKLSsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKwkgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZWxzZQotKwkgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKLSsJICBmcmVlKF9fb2xkKTsKLSsjZW5kaWYKLSsJfQotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICB2b2lkCi0rICBtb25leXB1bmN0PHdjaGFyX3QsIGZhbHNlPjo6X01faW5pdGlhbGl6ZV9tb25leXB1bmN0KF9fY19sb2NhbGUgX19jbG9jLAotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rCQkJCQkJICAgICAgIGNvbnN0IGNoYXIqKQotKyNlbHNlCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIF9fbmFtZSkKLSsjZW5kaWYKLSsgIHsKLSsgICAgaWYgKCFfTV9kYXRhKQotKyAgICAgIF9NX2RhdGEgPSBuZXcgX19tb25leXB1bmN0X2NhY2hlPHdjaGFyX3QsIGZhbHNlPjsKLSsKLSsgICAgaWYgKCFfX2Nsb2MpCi0rCXsKLSsJICAvLyAiQyIgbG9jYWxlCi0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IEwnLic7Ci0rCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IEwnLCc7Ci0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSAiIjsKLSsgICAgICAgICAgX01fZGF0YS0+X01fZ3JvdXBpbmdfc2l6ZSA9IDA7Ci0rCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2wgPSBMIiI7Ci0rCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2xfc2l6ZSA9IDA7Ci0rCSAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbiA9IEwiIjsKLSsJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSBMIiI7Ci0rCSAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbl9zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9mcmFjX2RpZ2l0cyA9IDA7Ci0rCSAgX01fZGF0YS0+X01fcG9zX2Zvcm1hdCA9IG1vbmV5X2Jhc2U6Ol9TX2RlZmF1bHRfcGF0dGVybjsKLSsJICBfTV9kYXRhLT5fTV9uZWdfZm9ybWF0ID0gbW9uZXlfYmFzZTo6X1NfZGVmYXVsdF9wYXR0ZXJuOwotKwotKwkgIC8vIFVzZSBjdHlwZTo6d2lkZW4gY29kZSB3aXRob3V0IHRoZSBmYWNldC4uLgotKwkgIGZvciAoc2l6ZV90IF9faSA9IDA7IF9faSA8IG1vbmV5X2Jhc2U6Ol9TX2VuZDsgKytfX2kpCi0rCSAgICBfTV9kYXRhLT5fTV9hdG9tc1tfX2ldID0KLSsJICAgICAgc3RhdGljX2Nhc3Q8d2NoYXJfdD4obW9uZXlfYmFzZTo6X1NfYXRvbXNbX19pXSk7Ci0rCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICAvLyBOYW1lZCBsb2NhbGUuCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsJICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX19jbG9jKTsKLSsjZWxzZQotKwkgIC8vIFN3aXRjaCB0byBuYW1lZCBsb2NhbGUgc28gdGhhdCBtYnNydG93Y3Mgd2lsbCB3b3JrLgotKwkgIGNoYXIqIF9fb2xkID0gc3RyZHVwKHNldGxvY2FsZShMQ19BTEwsIE5VTEwpKTsKLSsJICBzZXRsb2NhbGUoTENfQUxMLCBfX25hbWUpOwotKyNlbmRpZgotKwotKyNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotKyN3YXJuaW5nIGZpeCB0aGlzLi4uIHNob3VsZCBiZSBtb25ldGFyeQotKyNlbmRpZgotKyNpZmRlZiBfX1VDTElCQ19fCi0rIyBpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fY2xvYy0+ZGVjaW1hbF9wb2ludF93YzsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX19jbG9jLT50aG91c2FuZHNfc2VwX3djOwotKyMgZWxzZQotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBfX2dsb2JhbF9sb2NhbGUtPmRlY2ltYWxfcG9pbnRfd2M7Ci0rCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IF9fZ2xvYmFsX2xvY2FsZS0+dGhvdXNhbmRzX3NlcF93YzsKLSsjIGVuZGlmCi0rI2Vsc2UKLSsgICAgICAgICAgdW5pb24geyBjaGFyICpfX3M7IHdjaGFyX3QgX193OyB9IF9fdTsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9NT05FVEFSWV9ERUNJTUFMX1BPSU5UX1dDLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBfX3UuX193OwotKwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX01PTkVUQVJZX1RIT1VTQU5EU19TRVBfV0MsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IF9fdS5fX3c7Ci0rI2VuZGlmCi0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSBfX25sX2xhbmdpbmZvX2woX19NT05fR1JPVVBJTkcsIF9fY2xvYyk7Ci0rICAgICAgICAgIF9NX2RhdGEtPl9NX2dyb3VwaW5nX3NpemUgPSBzdHJsZW4oX01fZGF0YS0+X01fZ3JvdXBpbmcpOwotKwotKwkgIGNvbnN0IGNoYXIqIF9fY3Bvc3NpZ24gPSBfX25sX2xhbmdpbmZvX2woX19QT1NJVElWRV9TSUdOLCBfX2Nsb2MpOwotKwkgIGNvbnN0IGNoYXIqIF9fY25lZ3NpZ24gPSBfX25sX2xhbmdpbmZvX2woX19ORUdBVElWRV9TSUdOLCBfX2Nsb2MpOwotKwkgIGNvbnN0IGNoYXIqIF9fY2N1cnIgPSBfX25sX2xhbmdpbmZvX2woX19DVVJSRU5DWV9TWU1CT0wsIF9fY2xvYyk7Ci0rCi0rCSAgd2NoYXJfdCogX193Y3NfcHMgPSAwOwotKwkgIHdjaGFyX3QqIF9fd2NzX25zID0gMDsKLSsJICBjb25zdCBjaGFyIF9fbnBvc24gPSAqKF9fbmxfbGFuZ2luZm9fbChfX05fU0lHTl9QT1NOLCBfX2Nsb2MpKTsKLSsJICB0cnkKLSsgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICBtYnN0YXRlX3QgX19zdGF0ZTsKLSsgICAgICAgICAgICAgIHNpemVfdCBfX2xlbjsKLSsgICAgICAgICAgICAgIF9fbGVuID0gc3RybGVuKF9fY3Bvc3NpZ24pOwotKyAgICAgICAgICAgICAgaWYgKF9fbGVuKQotKyAgICAgICAgICAgICAgICB7Ci0rCQkgICsrX19sZW47Ci0rCQkgIG1lbXNldCgmX19zdGF0ZSwgMCwgc2l6ZW9mKG1ic3RhdGVfdCkpOwotKwkJICBfX3djc19wcyA9IG5ldyB3Y2hhcl90W19fbGVuXTsKLSsJCSAgbWJzcnRvd2NzKF9fd2NzX3BzLCAmX19jcG9zc2lnbiwgX19sZW4sICZfX3N0YXRlKTsKLSsJCSAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbiA9IF9fd2NzX3BzOwotKwkJfQotKwkgICAgICBlbHNlCi0rCQlfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduID0gTCIiOwotKyAgICAgICAgICAgICAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbl9zaXplID0gd2NzbGVuKF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ24pOwotKwotKwkgICAgICBfX2xlbiA9IHN0cmxlbihfX2NuZWdzaWduKTsKLSsJICAgICAgaWYgKCFfX25wb3NuKQotKwkJX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbiA9IEwiKCkiOwotKwkgICAgICBlbHNlIGlmIChfX2xlbikKLSsJCXsKLSsJCSAgKytfX2xlbjsKLSsJCSAgbWVtc2V0KCZfX3N0YXRlLCAwLCBzaXplb2YobWJzdGF0ZV90KSk7Ci0rCQkgIF9fd2NzX25zID0gbmV3IHdjaGFyX3RbX19sZW5dOwotKwkJICBtYnNydG93Y3MoX193Y3NfbnMsICZfX2NuZWdzaWduLCBfX2xlbiwgJl9fc3RhdGUpOwotKwkJICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduID0gX193Y3NfbnM7Ci0rCQl9Ci0rCSAgICAgIGVsc2UKLSsJCV9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSBMIiI7Ci0rICAgICAgICAgICAgICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduX3NpemUgPSB3Y3NsZW4oX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbik7Ci0rCi0rCSAgICAgIC8vIF9JbnRsID09IHRydWUuCi0rCSAgICAgIF9fbGVuID0gc3RybGVuKF9fY2N1cnIpOwotKwkgICAgICBpZiAoX19sZW4pCi0rCQl7Ci0rCQkgICsrX19sZW47Ci0rCQkgIG1lbXNldCgmX19zdGF0ZSwgMCwgc2l6ZW9mKG1ic3RhdGVfdCkpOwotKwkJICB3Y2hhcl90KiBfX3djcyA9IG5ldyB3Y2hhcl90W19fbGVuXTsKLSsJCSAgbWJzcnRvd2NzKF9fd2NzLCAmX19jY3VyciwgX19sZW4sICZfX3N0YXRlKTsKLSsJCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2wgPSBfX3djczsKLSsJCX0KLSsJICAgICAgZWxzZQotKwkJX01fZGF0YS0+X01fY3Vycl9zeW1ib2wgPSBMIiI7Ci0rICAgICAgICAgICAgICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbF9zaXplID0gd2NzbGVuKF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sKTsKLSsJICAgIH0KLSsgICAgICAgICAgY2F0Y2ggKC4uLikKLSsJICAgIHsKLSsJICAgICAgZGVsZXRlIF9NX2RhdGE7Ci0rICAgICAgICAgICAgICBfTV9kYXRhID0gMDsKLSsJICAgICAgZGVsZXRlIF9fd2NzX3BzOwotKwkgICAgICBkZWxldGUgX193Y3NfbnM7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsJICAgICAgX191c2Vsb2NhbGUoX19vbGQpOwotKyNlbHNlCi0rCSAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKLSsJICAgICAgZnJlZShfX29sZCk7Ci0rI2VuZGlmCi0rICAgICAgICAgICAgICBfX3Rocm93X2V4Y2VwdGlvbl9hZ2FpbjsKLSsJICAgIH0KLSsKLSsJICBfTV9kYXRhLT5fTV9mcmFjX2RpZ2l0cyA9ICooX19ubF9sYW5naW5mb19sKF9fRlJBQ19ESUdJVFMsIF9fY2xvYykpOwotKwkgIGNoYXIgX19wcHJlY2VkZXMgPSAqKF9fbmxfbGFuZ2luZm9fbChfX1BfQ1NfUFJFQ0VERVMsIF9fY2xvYykpOwotKwkgIGNoYXIgX19wc3BhY2UgPSAqKF9fbmxfbGFuZ2luZm9fbChfX1BfU0VQX0JZX1NQQUNFLCBfX2Nsb2MpKTsKLSsJICBjaGFyIF9fcHBvc24gPSAqKF9fbmxfbGFuZ2luZm9fbChfX1BfU0lHTl9QT1NOLCBfX2Nsb2MpKTsKLSsJICBfTV9kYXRhLT5fTV9wb3NfZm9ybWF0ID0gX1NfY29uc3RydWN0X3BhdHRlcm4oX19wcHJlY2VkZXMsIF9fcHNwYWNlLAotKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Bwb3NuKTsKLSsJICBjaGFyIF9fbnByZWNlZGVzID0gKihfX25sX2xhbmdpbmZvX2woX19OX0NTX1BSRUNFREVTLCBfX2Nsb2MpKTsKLSsJICBjaGFyIF9fbnNwYWNlID0gKihfX25sX2xhbmdpbmZvX2woX19OX1NFUF9CWV9TUEFDRSwgX19jbG9jKSk7Ci0rCSAgX01fZGF0YS0+X01fbmVnX2Zvcm1hdCA9IF9TX2NvbnN0cnVjdF9wYXR0ZXJuKF9fbnByZWNlZGVzLCBfX25zcGFjZSwKLSsJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19ucG9zbik7Ci0rCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsJICBfX3VzZWxvY2FsZShfX29sZCk7Ci0rI2Vsc2UKLSsJICBzZXRsb2NhbGUoTENfQUxMLCBfX29sZCk7Ci0rCSAgZnJlZShfX29sZCk7Ci0rI2VuZGlmCi0rCX0KLSsgICAgfQotKwotKyAgdGVtcGxhdGU8PgotKyAgICBtb25leXB1bmN0PHdjaGFyX3QsIHRydWU+Ojp+bW9uZXlwdW5jdCgpCi0rICAgIHsKLSsgICAgICBpZiAoX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbl9zaXplKQotKwlkZWxldGUgW10gX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbjsKLSsgICAgICBpZiAoX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbl9zaXplCi0rICAgICAgICAgICYmIHdjc2NtcChfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduLCBMIigpIikgIT0gMCkKLSsJZGVsZXRlIFtdIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ247Ci0rICAgICAgaWYgKF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sX3NpemUpCi0rCWRlbGV0ZSBbXSBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbDsKLSsgICAgICBkZWxldGUgX01fZGF0YTsKLSsgICAgfQotKwotKyAgdGVtcGxhdGU8PgotKyAgICBtb25leXB1bmN0PHdjaGFyX3QsIGZhbHNlPjo6fm1vbmV5cHVuY3QoKQotKyAgICB7Ci0rICAgICAgaWYgKF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ25fc2l6ZSkKLSsJZGVsZXRlIFtdIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ247Ci0rICAgICAgaWYgKF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ25fc2l6ZQotKyAgICAgICAgICAmJiB3Y3NjbXAoX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbiwgTCIoKSIpICE9IDApCi0rCWRlbGV0ZSBbXSBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduOwotKyAgICAgIGlmIChfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbF9zaXplKQotKwlkZWxldGUgW10gX01fZGF0YS0+X01fY3Vycl9zeW1ib2w7Ci0rICAgICAgZGVsZXRlIF9NX2RhdGE7Ci0rICAgIH0KLSsjZW5kaWYKLSt9Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi44ODNlYzFhCi0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjCi1AQCAtMCwwICsxLDE2MCBAQAotKy8vIHN0ZDo6bnVtcHVuY3QgaW1wbGVtZW50YXRpb24gZGV0YWlscywgR05VIHZlcnNpb24gLSotIEMrKyAtKi0KLSsKLSsvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLy8KLSsvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCi0rLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCi0rLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKy8vIFVTQS4KLSsKLSsvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUKLSsvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlCi0rLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUKLSsvLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMKLSsvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIKLSsvLyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rCi0rLy8KLSsvLyBJU08gQysrIDE0ODgyOiAyMi4yLjMuMS4yICBudW1wdW5jdCB2aXJ0dWFsIGZ1bmN0aW9ucwotKy8vCi0rCi0rLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KLSsKLSsjZGVmaW5lIF9MSUJDCi0rI2luY2x1ZGUgPGxvY2FsZT4KLSsjdW5kZWYgX0xJQkMKLSsjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSsKLSsjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSsjd2FybmluZyB0YWlsb3IgZm9yIHN0dWIgbG9jYWxlIHN1cHBvcnQKLSsjZW5kaWYKLSsjaWZuZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsjZGVmaW5lIF9fbmxfbGFuZ2luZm9fbChOLCBMKSAgICAgICAgIG5sX2xhbmdpbmZvKChOKSkKLSsjZW5kaWYKLSsKLStuYW1lc3BhY2Ugc3RkCi0rewotKyAgdGVtcGxhdGU8PgotKyAgICB2b2lkCi0rICAgIG51bXB1bmN0PGNoYXI+OjpfTV9pbml0aWFsaXplX251bXB1bmN0KF9fY19sb2NhbGUgX19jbG9jKQotKyAgICB7Ci0rICAgICAgaWYgKCFfTV9kYXRhKQotKwlfTV9kYXRhID0gbmV3IF9fbnVtcHVuY3RfY2FjaGU8Y2hhcj47Ci0rCi0rICAgICAgaWYgKCFfX2Nsb2MpCi0rCXsKLSsJICAvLyAiQyIgbG9jYWxlCi0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSAiIjsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZ19zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV91c2VfZ3JvdXBpbmcgPSBmYWxzZTsKLSsKLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gJy4nOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSAnLCc7Ci0rCi0rCSAgZm9yIChzaXplX3QgX19pID0gMDsgX19pIDwgX19udW1fYmFzZTo6X1Nfb2VuZDsgKytfX2kpCi0rCSAgICBfTV9kYXRhLT5fTV9hdG9tc19vdXRbX19pXSA9IF9fbnVtX2Jhc2U6Ol9TX2F0b21zX291dFtfX2ldOwotKwotKwkgIGZvciAoc2l6ZV90IF9faiA9IDA7IF9faiA8IF9fbnVtX2Jhc2U6Ol9TX2llbmQ7ICsrX19qKQotKwkgICAgX01fZGF0YS0+X01fYXRvbXNfaW5bX19qXSA9IF9fbnVtX2Jhc2U6Ol9TX2F0b21zX2luW19fal07Ci0rCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICAvLyBOYW1lZCBsb2NhbGUuCi0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9ICooX19ubF9sYW5naW5mb19sKERFQ0lNQUxfUE9JTlQsCi0rCQkJCQkJCV9fY2xvYykpOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSAqKF9fbmxfbGFuZ2luZm9fbChUSE9VU0FORFNfU0VQLAotKwkJCQkJCQlfX2Nsb2MpKTsKLSsKLSsJICAvLyBDaGVjayBmb3IgTlVMTCwgd2hpY2ggaW1wbGllcyBubyBncm91cGluZy4KLSsJICBpZiAoX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9PSAnXDAnKQotKwkgICAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSAiIjsKLSsJICBlbHNlCi0rCSAgICBfTV9kYXRhLT5fTV9ncm91cGluZyA9IF9fbmxfbGFuZ2luZm9fbChHUk9VUElORywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZ19zaXplID0gc3RybGVuKF9NX2RhdGEtPl9NX2dyb3VwaW5nKTsKLSsJfQotKwotKyAgICAgIC8vIE5COiBUaGVyZSBpcyBubyB3YXkgdG8gZXh0YWN0IHRoaXMgaW5mbyBmcm9tIHBvc2l4IGxvY2FsZXMuCi0rICAgICAgLy8gX01fdHJ1ZW5hbWUgPSBfX25sX2xhbmdpbmZvX2woWUVTU1RSLCBfX2Nsb2MpOwotKyAgICAgIF9NX2RhdGEtPl9NX3RydWVuYW1lID0gInRydWUiOwotKyAgICAgIF9NX2RhdGEtPl9NX3RydWVuYW1lX3NpemUgPSA0OwotKyAgICAgIC8vIF9NX2ZhbHNlbmFtZSA9IF9fbmxfbGFuZ2luZm9fbChOT1NUUiwgX19jbG9jKTsKLSsgICAgICBfTV9kYXRhLT5fTV9mYWxzZW5hbWUgPSAiZmFsc2UiOwotKyAgICAgIF9NX2RhdGEtPl9NX2ZhbHNlbmFtZV9zaXplID0gNTsKLSsgICAgfQotKwotKyAgdGVtcGxhdGU8PgotKyAgICBudW1wdW5jdDxjaGFyPjo6fm51bXB1bmN0KCkKLSsgICAgeyBkZWxldGUgX01fZGF0YTsgfQotKwotKyNpZmRlZiBfR0xJQkNYWF9VU0VfV0NIQVJfVAotKyAgdGVtcGxhdGU8PgotKyAgICB2b2lkCi0rICAgIG51bXB1bmN0PHdjaGFyX3Q+OjpfTV9pbml0aWFsaXplX251bXB1bmN0KF9fY19sb2NhbGUgX19jbG9jKQotKyAgICB7Ci0rICAgICAgaWYgKCFfTV9kYXRhKQotKwlfTV9kYXRhID0gbmV3IF9fbnVtcHVuY3RfY2FjaGU8d2NoYXJfdD47Ci0rCi0rICAgICAgaWYgKCFfX2Nsb2MpCi0rCXsKLSsJICAvLyAiQyIgbG9jYWxlCi0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSAiIjsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZ19zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV91c2VfZ3JvdXBpbmcgPSBmYWxzZTsKLSsKLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gTCcuJzsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gTCcsJzsKLSsKLSsJICAvLyBVc2UgY3R5cGU6OndpZGVuIGNvZGUgd2l0aG91dCB0aGUgZmFjZXQuLi4KLSsJICBmb3IgKHNpemVfdCBfX2kgPSAwOyBfX2kgPCBfX251bV9iYXNlOjpfU19vZW5kOyArK19faSkKLSsJICAgIF9NX2RhdGEtPl9NX2F0b21zX291dFtfX2ldID0KLSsJICAgICAgc3RhdGljX2Nhc3Q8d2NoYXJfdD4oX19udW1fYmFzZTo6X1NfYXRvbXNfb3V0W19faV0pOwotKwotKwkgIGZvciAoc2l6ZV90IF9faiA9IDA7IF9faiA8IF9fbnVtX2Jhc2U6Ol9TX2llbmQ7ICsrX19qKQotKwkgICAgX01fZGF0YS0+X01fYXRvbXNfaW5bX19qXSA9Ci0rCSAgICAgIHN0YXRpY19jYXN0PHdjaGFyX3Q+KF9fbnVtX2Jhc2U6Ol9TX2F0b21zX2luW19fal0pOwotKwl9Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgLy8gTmFtZWQgbG9jYWxlLgotKwkgIC8vIE5COiBJbiB0aGUgR05VIG1vZGVsIHdjaGFyX3QgaXMgYWx3YXlzIDMyIGJpdCB3aWRlLgotKwkgIHVuaW9uIHsgY2hhciAqX19zOyB3Y2hhcl90IF9fdzsgfSBfX3U7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfTlVNRVJJQ19ERUNJTUFMX1BPSU5UX1dDLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBfX3UuX193OwotKwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX05VTUVSSUNfVEhPVVNBTkRTX1NFUF9XQywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX191Ll9fdzsKLSsKLSsJICBpZiAoX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9PSBMJ1wwJykKLSsJICAgIF9NX2RhdGEtPl9NX2dyb3VwaW5nID0gIiI7Ci0rCSAgZWxzZQotKwkgICAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSBfX25sX2xhbmdpbmZvX2woR1JPVVBJTkcsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmdfc2l6ZSA9IHN0cmxlbihfTV9kYXRhLT5fTV9ncm91cGluZyk7Ci0rCX0KLSsKLSsgICAgICAvLyBOQjogVGhlcmUgaXMgbm8gd2F5IHRvIGV4dGFjdCB0aGlzIGluZm8gZnJvbSBwb3NpeCBsb2NhbGVzLgotKyAgICAgIC8vIF9NX3RydWVuYW1lID0gX19ubF9sYW5naW5mb19sKFlFU1NUUiwgX19jbG9jKTsKLSsgICAgICBfTV9kYXRhLT5fTV90cnVlbmFtZSA9IEwidHJ1ZSI7Ci0rICAgICAgX01fZGF0YS0+X01fdHJ1ZW5hbWVfc2l6ZSA9IDQ7Ci0rICAgICAgLy8gX01fZmFsc2VuYW1lID0gX19ubF9sYW5naW5mb19sKE5PU1RSLCBfX2Nsb2MpOwotKyAgICAgIF9NX2RhdGEtPl9NX2ZhbHNlbmFtZSA9IEwiZmFsc2UiOwotKyAgICAgIF9NX2RhdGEtPl9NX2ZhbHNlbmFtZV9zaXplID0gNTsKLSsgICAgfQotKwotKyAgdGVtcGxhdGU8PgotKyAgICBudW1wdW5jdDx3Y2hhcl90Pjo6fm51bXB1bmN0KCkKLSsgICAgeyBkZWxldGUgX01fZGF0YTsgfQotKyAjZW5kaWYKLSt9Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5lMDcwN2Q3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjCi1AQCAtMCwwICsxLDQwNiBAQAotKy8vIHN0ZDo6dGltZV9nZXQsIHN0ZDo6dGltZV9wdXQgaW1wbGVtZW50YXRpb24sIEdOVSB2ZXJzaW9uIC0qLSBDKysgLSotCi0rCi0rLy8gQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8vCi0rLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQotKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQotKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rLy8gYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsvLyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsvLyBVU0EuCi0rCi0rLy8gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSB1c2UgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBmcmVlIHNvZnR3YXJlCi0rLy8gbGlicmFyeSB3aXRob3V0IHJlc3RyaWN0aW9uLiAgU3BlY2lmaWNhbGx5LCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZQotKy8vIHRlbXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5jdGlvbnMgZnJvbSB0aGlzIGZpbGUsIG9yIHlvdSBjb21waWxlCi0rLy8gdGhpcyBmaWxlIGFuZCBsaW5rIGl0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzCi0rLy8gZmlsZSBkb2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyCi0rLy8gaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotKwotKy8vCi0rLy8gSVNPIEMrKyAxNDg4MjogMjIuMi41LjEuMiAtIHRpbWVfZ2V0IHZpcnR1YWwgZnVuY3Rpb25zCi0rLy8gSVNPIEMrKyAxNDg4MjogMjIuMi41LjMuMiAtIHRpbWVfcHV0IHZpcnR1YWwgZnVuY3Rpb25zCi0rLy8KLSsKLSsvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotKwotKyNpbmNsdWRlIDxsb2NhbGU+Ci0rI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+Ci0rCi0rI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0rI3dhcm5pbmcgdGFpbG9yIGZvciBzdHViIGxvY2FsZSBzdXBwb3J0Ci0rI2VuZGlmCi0rI2lmbmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rI2RlZmluZSBfX25sX2xhbmdpbmZvX2woTiwgTCkgICAgICAgICBubF9sYW5naW5mbygoTikpCi0rI2VuZGlmCi0rCi0rbmFtZXNwYWNlIHN0ZAotK3sKLSsgIHRlbXBsYXRlPD4KLSsgICAgdm9pZAotKyAgICBfX3RpbWVwdW5jdDxjaGFyPjo6Ci0rICAgIF9NX3B1dChjaGFyKiBfX3MsIHNpemVfdCBfX21heGxlbiwgY29uc3QgY2hhciogX19mb3JtYXQsCi0rCSAgIGNvbnN0IHRtKiBfX3RtKSBjb25zdAotKyAgICB7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgICBjb25zdCBzaXplX3QgX19sZW4gPSBfX3N0cmZ0aW1lX2woX19zLCBfX21heGxlbiwgX19mb3JtYXQsIF9fdG0sCi0rCQkJCQlfTV9jX2xvY2FsZV90aW1lcHVuY3QpOwotKyNlbHNlCi0rICAgICAgY2hhciogX19vbGQgPSBzdHJkdXAoc2V0bG9jYWxlKExDX0FMTCwgTlVMTCkpOwotKyAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9NX25hbWVfdGltZXB1bmN0KTsKLSsgICAgICBjb25zdCBzaXplX3QgX19sZW4gPSBzdHJmdGltZShfX3MsIF9fbWF4bGVuLCBfX2Zvcm1hdCwgX190bSk7Ci0rICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOwotKyAgICAgIGZyZWUoX19vbGQpOwotKyNlbmRpZgotKyAgICAgIC8vIE1ha2Ugc3VyZSBfX3MgaXMgbnVsbCB0ZXJtaW5hdGVkLgotKyAgICAgIGlmIChfX2xlbiA9PSAwKQotKwlfX3NbMF0gPSAnXDAnOwotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHZvaWQKLSsgICAgX190aW1lcHVuY3Q8Y2hhcj46Ol9NX2luaXRpYWxpemVfdGltZXB1bmN0KF9fY19sb2NhbGUgX19jbG9jKQotKyAgICB7Ci0rICAgICAgaWYgKCFfTV9kYXRhKQotKwlfTV9kYXRhID0gbmV3IF9fdGltZXB1bmN0X2NhY2hlPGNoYXI+OwotKwotKyAgICAgIGlmICghX19jbG9jKQotKwl7Ci0rCSAgLy8gIkMiIGxvY2FsZQotKwkgIF9NX2NfbG9jYWxlX3RpbWVwdW5jdCA9IF9TX2dldF9jX2xvY2FsZSgpOwotKwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfZm9ybWF0ID0gIiVtLyVkLyV5IjsKLSsJICBfTV9kYXRhLT5fTV9kYXRlX2VyYV9mb3JtYXQgPSAiJW0vJWQvJXkiOwotKwkgIF9NX2RhdGEtPl9NX3RpbWVfZm9ybWF0ID0gIiVIOiVNOiVTIjsKLSsJICBfTV9kYXRhLT5fTV90aW1lX2VyYV9mb3JtYXQgPSAiJUg6JU06JVMiOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfdGltZV9mb3JtYXQgPSAiIjsKLSsJICBfTV9kYXRhLT5fTV9kYXRlX3RpbWVfZXJhX2Zvcm1hdCA9ICIiOwotKwkgIF9NX2RhdGEtPl9NX2FtID0gIkFNIjsKLSsJICBfTV9kYXRhLT5fTV9wbSA9ICJQTSI7Ci0rCSAgX01fZGF0YS0+X01fYW1fcG1fZm9ybWF0ID0gIiI7Ci0rCi0rCSAgLy8gRGF5IG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIFN1bmRheS4KLSsJICBfTV9kYXRhLT5fTV9kYXkxID0gIlN1bmRheSI7Ci0rCSAgX01fZGF0YS0+X01fZGF5MiA9ICJNb25kYXkiOwotKwkgIF9NX2RhdGEtPl9NX2RheTMgPSAiVHVlc2RheSI7Ci0rCSAgX01fZGF0YS0+X01fZGF5NCA9ICJXZWRuZXNkYXkiOwotKwkgIF9NX2RhdGEtPl9NX2RheTUgPSAiVGh1cnNkYXkiOwotKwkgIF9NX2RhdGEtPl9NX2RheTYgPSAiRnJpZGF5IjsKLSsJICBfTV9kYXRhLT5fTV9kYXk3ID0gIlNhdHVyZGF5IjsKLSsKLSsJICAvLyBBYmJyZXZpYXRlZCBkYXkgbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgU3VuLgotKwkgIF9NX2RhdGEtPl9NX2FkYXkxID0gIlN1biI7Ci0rCSAgX01fZGF0YS0+X01fYWRheTIgPSAiTW9uIjsKLSsJICBfTV9kYXRhLT5fTV9hZGF5MyA9ICJUdWUiOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk0ID0gIldlZCI7Ci0rCSAgX01fZGF0YS0+X01fYWRheTUgPSAiVGh1IjsKLSsJICBfTV9kYXRhLT5fTV9hZGF5NiA9ICJGcmkiOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk3ID0gIlNhdCI7Ci0rCi0rCSAgLy8gTW9udGggbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgSmFudWFyeS4KLSsJICBfTV9kYXRhLT5fTV9tb250aDAxID0gIkphbnVhcnkiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDIgPSAiRmVicnVhcnkiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDMgPSAiTWFyY2giOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDQgPSAiQXByaWwiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDUgPSAiTWF5IjsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA2ID0gIkp1bmUiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDcgPSAiSnVseSI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwOCA9ICJBdWd1c3QiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDkgPSAiU2VwdGVtYmVyIjsKLSsJICBfTV9kYXRhLT5fTV9tb250aDEwID0gIk9jdG9iZXIiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMTEgPSAiTm92ZW1iZXIiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMTIgPSAiRGVjZW1iZXIiOwotKwotKwkgIC8vIEFiYnJldmlhdGVkIG1vbnRoIG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIEphbi4KLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwMSA9ICJKYW4iOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDAyID0gIkZlYiI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDMgPSAiTWFyIjsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwNCA9ICJBcHIiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA1ID0gIk1heSI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDYgPSAiSnVuIjsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwNyA9ICJKdWwiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA4ID0gIkF1ZyI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDkgPSAiU2VwIjsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgxMCA9ICJPY3QiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDExID0gIk5vdiI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMTIgPSAiRGVjIjsKLSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIF9NX2NfbG9jYWxlX3RpbWVwdW5jdCA9IF9TX2Nsb25lX2NfbG9jYWxlKF9fY2xvYyk7Ci0rCi0rCSAgX01fZGF0YS0+X01fZGF0ZV9mb3JtYXQgPSBfX25sX2xhbmdpbmZvX2woRF9GTVQsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF0ZV9lcmFfZm9ybWF0ID0gX19ubF9sYW5naW5mb19sKEVSQV9EX0ZNVCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV90aW1lX2Zvcm1hdCA9IF9fbmxfbGFuZ2luZm9fbChUX0ZNVCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV90aW1lX2VyYV9mb3JtYXQgPSBfX25sX2xhbmdpbmZvX2woRVJBX1RfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfdGltZV9mb3JtYXQgPSBfX25sX2xhbmdpbmZvX2woRF9UX0ZNVCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXRlX3RpbWVfZXJhX2Zvcm1hdCA9IF9fbmxfbGFuZ2luZm9fbChFUkFfRF9UX0ZNVCwKLSsJCQkJCQkJICAgICBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FtID0gX19ubF9sYW5naW5mb19sKEFNX1NUUiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9wbSA9IF9fbmxfbGFuZ2luZm9fbChQTV9TVFIsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1fcG1fZm9ybWF0ID0gX19ubF9sYW5naW5mb19sKFRfRk1UX0FNUE0sIF9fY2xvYyk7Ci0rCi0rCSAgLy8gRGF5IG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIFN1bmRheS4KLSsJICBfTV9kYXRhLT5fTV9kYXkxID0gX19ubF9sYW5naW5mb19sKERBWV8xLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RheTIgPSBfX25sX2xhbmdpbmZvX2woREFZXzIsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF5MyA9IF9fbmxfbGFuZ2luZm9fbChEQVlfMywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXk0ID0gX19ubF9sYW5naW5mb19sKERBWV80LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RheTUgPSBfX25sX2xhbmdpbmZvX2woREFZXzUsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF5NiA9IF9fbmxfbGFuZ2luZm9fbChEQVlfNiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXk3ID0gX19ubF9sYW5naW5mb19sKERBWV83LCBfX2Nsb2MpOwotKwotKwkgIC8vIEFiYnJldmlhdGVkIGRheSBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBTdW4uCi0rCSAgX01fZGF0YS0+X01fYWRheTEgPSBfX25sX2xhbmdpbmZvX2woQUJEQVlfMSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hZGF5MiA9IF9fbmxfbGFuZ2luZm9fbChBQkRBWV8yLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FkYXkzID0gX19ubF9sYW5naW5mb19sKEFCREFZXzMsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYWRheTQgPSBfX25sX2xhbmdpbmZvX2woQUJEQVlfNCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hZGF5NSA9IF9fbmxfbGFuZ2luZm9fbChBQkRBWV81LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk2ID0gX19ubF9sYW5naW5mb19sKEFCREFZXzYsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYWRheTcgPSBfX25sX2xhbmdpbmZvX2woQUJEQVlfNywgX19jbG9jKTsKLSsKLSsJICAvLyBNb250aCBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBKYW51YXJ5LgotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDEgPSBfX25sX2xhbmdpbmZvX2woTU9OXzEsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwMiA9IF9fbmxfbGFuZ2luZm9fbChNT05fMiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDAzID0gX19ubF9sYW5naW5mb19sKE1PTl8zLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDQgPSBfX25sX2xhbmdpbmZvX2woTU9OXzQsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNSA9IF9fbmxfbGFuZ2luZm9fbChNT05fNSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA2ID0gX19ubF9sYW5naW5mb19sKE1PTl82LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDcgPSBfX25sX2xhbmdpbmZvX2woTU9OXzcsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwOCA9IF9fbmxfbGFuZ2luZm9fbChNT05fOCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA5ID0gX19ubF9sYW5naW5mb19sKE1PTl85LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMTAgPSBfX25sX2xhbmdpbmZvX2woTU9OXzEwLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMTEgPSBfX25sX2xhbmdpbmZvX2woTU9OXzExLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMTIgPSBfX25sX2xhbmdpbmZvX2woTU9OXzEyLCBfX2Nsb2MpOwotKwotKwkgIC8vIEFiYnJldmlhdGVkIG1vbnRoIG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIEphbi4KLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwMSA9IF9fbmxfbGFuZ2luZm9fbChBQk1PTl8xLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDAyID0gX19ubF9sYW5naW5mb19sKEFCTU9OXzIsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDMgPSBfX25sX2xhbmdpbmZvX2woQUJNT05fMywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwNCA9IF9fbmxfbGFuZ2luZm9fbChBQk1PTl80LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA1ID0gX19ubF9sYW5naW5mb19sKEFCTU9OXzUsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDYgPSBfX25sX2xhbmdpbmZvX2woQUJNT05fNiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwNyA9IF9fbmxfbGFuZ2luZm9fbChBQk1PTl83LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA4ID0gX19ubF9sYW5naW5mb19sKEFCTU9OXzgsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDkgPSBfX25sX2xhbmdpbmZvX2woQUJNT05fOSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgxMCA9IF9fbmxfbGFuZ2luZm9fbChBQk1PTl8xMCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgxMSA9IF9fbmxfbGFuZ2luZm9fbChBQk1PTl8xMSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgxMiA9IF9fbmxfbGFuZ2luZm9fbChBQk1PTl8xMiwgX19jbG9jKTsKLSsJfQotKyAgICB9Ci0rCi0rI2lmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHZvaWQKLSsgICAgX190aW1lcHVuY3Q8d2NoYXJfdD46OgotKyAgICBfTV9wdXQod2NoYXJfdCogX19zLCBzaXplX3QgX19tYXhsZW4sIGNvbnN0IHdjaGFyX3QqIF9fZm9ybWF0LAotKwkgICBjb25zdCB0bSogX190bSkgY29uc3QKLSsgICAgewotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgICAgX193Y3NmdGltZV9sKF9fcywgX19tYXhsZW4sIF9fZm9ybWF0LCBfX3RtLCBfTV9jX2xvY2FsZV90aW1lcHVuY3QpOwotKyAgICAgIGNvbnN0IHNpemVfdCBfX2xlbiA9IF9fd2NzZnRpbWVfbChfX3MsIF9fbWF4bGVuLCBfX2Zvcm1hdCwgX190bSwKLSsJCQkJCV9NX2NfbG9jYWxlX3RpbWVwdW5jdCk7Ci0rI2Vsc2UKLSsgICAgICBjaGFyKiBfX29sZCA9IHN0cmR1cChzZXRsb2NhbGUoTENfQUxMLCBOVUxMKSk7Ci0rICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX01fbmFtZV90aW1lcHVuY3QpOwotKyAgICAgIGNvbnN0IHNpemVfdCBfX2xlbiA9IHdjc2Z0aW1lKF9fcywgX19tYXhsZW4sIF9fZm9ybWF0LCBfX3RtKTsKLSsgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfX29sZCk7Ci0rICAgICAgZnJlZShfX29sZCk7Ci0rI2VuZGlmCi0rICAgICAgLy8gTWFrZSBzdXJlIF9fcyBpcyBudWxsIHRlcm1pbmF0ZWQuCi0rICAgICAgaWYgKF9fbGVuID09IDApCi0rCV9fc1swXSA9IEwnXDAnOwotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHZvaWQKLSsgICAgX190aW1lcHVuY3Q8d2NoYXJfdD46Ol9NX2luaXRpYWxpemVfdGltZXB1bmN0KF9fY19sb2NhbGUgX19jbG9jKQotKyAgICB7Ci0rICAgICAgaWYgKCFfTV9kYXRhKQotKwlfTV9kYXRhID0gbmV3IF9fdGltZXB1bmN0X2NhY2hlPHdjaGFyX3Q+OwotKwotKyN3YXJuaW5nIHdpZGUgdGltZSBzdHVmZgotKy8vICAgICAgIGlmICghX19jbG9jKQotKwl7Ci0rCSAgLy8gIkMiIGxvY2FsZQotKwkgIF9NX2NfbG9jYWxlX3RpbWVwdW5jdCA9IF9TX2dldF9jX2xvY2FsZSgpOwotKwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfZm9ybWF0ID0gTCIlbS8lZC8leSI7Ci0rCSAgX01fZGF0YS0+X01fZGF0ZV9lcmFfZm9ybWF0ID0gTCIlbS8lZC8leSI7Ci0rCSAgX01fZGF0YS0+X01fdGltZV9mb3JtYXQgPSBMIiVIOiVNOiVTIjsKLSsJICBfTV9kYXRhLT5fTV90aW1lX2VyYV9mb3JtYXQgPSBMIiVIOiVNOiVTIjsKLSsJICBfTV9kYXRhLT5fTV9kYXRlX3RpbWVfZm9ybWF0ID0gTCIiOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfdGltZV9lcmFfZm9ybWF0ID0gTCIiOwotKwkgIF9NX2RhdGEtPl9NX2FtID0gTCJBTSI7Ci0rCSAgX01fZGF0YS0+X01fcG0gPSBMIlBNIjsKLSsJICBfTV9kYXRhLT5fTV9hbV9wbV9mb3JtYXQgPSBMIiI7Ci0rCi0rCSAgLy8gRGF5IG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIFN1bmRheS4KLSsJICBfTV9kYXRhLT5fTV9kYXkxID0gTCJTdW5kYXkiOwotKwkgIF9NX2RhdGEtPl9NX2RheTIgPSBMIk1vbmRheSI7Ci0rCSAgX01fZGF0YS0+X01fZGF5MyA9IEwiVHVlc2RheSI7Ci0rCSAgX01fZGF0YS0+X01fZGF5NCA9IEwiV2VkbmVzZGF5IjsKLSsJICBfTV9kYXRhLT5fTV9kYXk1ID0gTCJUaHVyc2RheSI7Ci0rCSAgX01fZGF0YS0+X01fZGF5NiA9IEwiRnJpZGF5IjsKLSsJICBfTV9kYXRhLT5fTV9kYXk3ID0gTCJTYXR1cmRheSI7Ci0rCi0rCSAgLy8gQWJicmV2aWF0ZWQgZGF5IG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIFN1bi4KLSsJICBfTV9kYXRhLT5fTV9hZGF5MSA9IEwiU3VuIjsKLSsJICBfTV9kYXRhLT5fTV9hZGF5MiA9IEwiTW9uIjsKLSsJICBfTV9kYXRhLT5fTV9hZGF5MyA9IEwiVHVlIjsKLSsJICBfTV9kYXRhLT5fTV9hZGF5NCA9IEwiV2VkIjsKLSsJICBfTV9kYXRhLT5fTV9hZGF5NSA9IEwiVGh1IjsKLSsJICBfTV9kYXRhLT5fTV9hZGF5NiA9IEwiRnJpIjsKLSsJICBfTV9kYXRhLT5fTV9hZGF5NyA9IEwiU2F0IjsKLSsKLSsJICAvLyBNb250aCBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBKYW51YXJ5LgotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDEgPSBMIkphbnVhcnkiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDIgPSBMIkZlYnJ1YXJ5IjsKLSsJICBfTV9kYXRhLT5fTV9tb250aDAzID0gTCJNYXJjaCI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNCA9IEwiQXByaWwiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDUgPSBMIk1heSI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNiA9IEwiSnVuZSI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNyA9IEwiSnVseSI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwOCA9IEwiQXVndXN0IjsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA5ID0gTCJTZXB0ZW1iZXIiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMTAgPSBMIk9jdG9iZXIiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMTEgPSBMIk5vdmVtYmVyIjsKLSsJICBfTV9kYXRhLT5fTV9tb250aDEyID0gTCJEZWNlbWJlciI7Ci0rCi0rCSAgLy8gQWJicmV2aWF0ZWQgbW9udGggbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgSmFuLgotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDAxID0gTCJKYW4iOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDAyID0gTCJGZWIiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDAzID0gTCJNYXIiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA0ID0gTCJBcHIiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA1ID0gTCJNYXkiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA2ID0gTCJKdW4iOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA3ID0gTCJKdWwiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA4ID0gTCJBdWciOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA5ID0gTCJTZXAiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDEwID0gTCJPY3QiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDExID0gTCJOb3YiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDEyID0gTCJEZWMiOwotKwl9Ci0rI2lmIDAKLSsgICAgICBlbHNlCi0rCXsKLSsJICBfTV9jX2xvY2FsZV90aW1lcHVuY3QgPSBfU19jbG9uZV9jX2xvY2FsZShfX2Nsb2MpOwotKwotKwkgIHVuaW9uIHsgY2hhciAqX19zOyB3Y2hhcl90ICpfX3c7IH0gX191OwotKwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dEX0ZNVCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXRlX2Zvcm1hdCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0VSQV9EX0ZNVCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXRlX2VyYV9mb3JtYXQgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dUX0ZNVCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV90aW1lX2Zvcm1hdCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0VSQV9UX0ZNVCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV90aW1lX2VyYV9mb3JtYXQgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dEX1RfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfdGltZV9mb3JtYXQgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dFUkFfRF9UX0ZNVCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXRlX3RpbWVfZXJhX2Zvcm1hdCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FNX1NUUiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbSA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV1BNX1NUUiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9wbSA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV1RfRk1UX0FNUE0sIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1fcG1fZm9ybWF0ID0gX191Ll9fdzsKLSsKLSsJICAvLyBEYXkgbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgU3VuZGF5LgotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dEQVlfMSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXkxID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XREFZXzIsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF5MiA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0RBWV8zLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RheTMgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dEQVlfNCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXk0ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XREFZXzUsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF5NSA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0RBWV82LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RheTYgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dEQVlfNywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXk3ID0gX191Ll9fdzsKLSsKLSsJICAvLyBBYmJyZXZpYXRlZCBkYXkgbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgU3VuLgotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQkRBWV8xLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FkYXkxID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJEQVlfMiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hZGF5MiA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCREFZXzMsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYWRheTMgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQkRBWV80LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk0ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJEQVlfNSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hZGF5NSA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCREFZXzYsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYWRheTYgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQkRBWV83LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk3ID0gX191Ll9fdzsKLSsKLSsJICAvLyBNb250aCBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBKYW51YXJ5LgotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dNT05fMSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDAxID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XTU9OXzIsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwMiA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV01PTl8zLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDMgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dNT05fNCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA0ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XTU9OXzUsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNSA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV01PTl82LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDYgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dNT05fNywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA3ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XTU9OXzgsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwOCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV01PTl85LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDkgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dNT05fMTAsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgxMCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV01PTl8xMSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDExID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XTU9OXzEyLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMTIgPSBfX3UuX193OwotKwotKwkgIC8vIEFiYnJldmlhdGVkIG1vbnRoIG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIEphbi4KLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJNT05fMSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwMSA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCTU9OXzIsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDIgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQk1PTl8zLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDAzID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJNT05fNCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwNCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCTU9OXzUsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDUgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQk1PTl82LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA2ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJNT05fNywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwNyA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCTU9OXzgsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDggPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQk1PTl85LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA5ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJNT05fMTAsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMTAgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQk1PTl8xMSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgxMSA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCTU9OXzEyLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDEyID0gX191Ll9fdzsKLSsJfQotKyNlbmRpZiAvLyAwCi0rICAgIH0KLSsjZW5kaWYKLSt9Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYmE4ZTg1OAotLS0tIC9kZXYvbnVsbAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oCi1AQCAtMCwwICsxLDY4IEBACi0rLy8gc3RkOjp0aW1lX2dldCwgc3RkOjp0aW1lX3B1dCBpbXBsZW1lbnRhdGlvbiwgR05VIHZlcnNpb24gLSotIEMrKyAtKi0KLSsKLSsvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLy8KLSsvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCi0rLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCi0rLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKy8vIFVTQS4KLSsKLSsvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUKLSsvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlCi0rLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUKLSsvLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMKLSsvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIKLSsvLyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rCi0rLy8KLSsvLyBJU08gQysrIDE0ODgyOiAyMi4yLjUuMS4yIC0gdGltZV9nZXQgZnVuY3Rpb25zCi0rLy8gSVNPIEMrKyAxNDg4MjogMjIuMi41LjMuMiAtIHRpbWVfcHV0IGZ1bmN0aW9ucwotKy8vCi0rCi0rLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KLSsKLSsgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KLSsgICAgX190aW1lcHVuY3Q8X0NoYXJUPjo6X190aW1lcHVuY3Qoc2l6ZV90IF9fcmVmcykKLSsgICAgOiBmYWNldChfX3JlZnMpLCBfTV9kYXRhKE5VTEwpLCBfTV9jX2xvY2FsZV90aW1lcHVuY3QoTlVMTCksCi0rICAgIF9NX25hbWVfdGltZXB1bmN0KF9TX2dldF9jX25hbWUoKSkKLSsgICAgeyBfTV9pbml0aWFsaXplX3RpbWVwdW5jdCgpOyB9Ci0rCi0rICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+Ci0rICAgIF9fdGltZXB1bmN0PF9DaGFyVD46Ol9fdGltZXB1bmN0KF9fY2FjaGVfdHlwZSogX19jYWNoZSwgc2l6ZV90IF9fcmVmcykKLSsgICAgOiBmYWNldChfX3JlZnMpLCBfTV9kYXRhKF9fY2FjaGUpLCBfTV9jX2xvY2FsZV90aW1lcHVuY3QoTlVMTCksCi0rICAgIF9NX25hbWVfdGltZXB1bmN0KF9TX2dldF9jX25hbWUoKSkKLSsgICAgeyBfTV9pbml0aWFsaXplX3RpbWVwdW5jdCgpOyB9Ci0rCi0rICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+Ci0rICAgIF9fdGltZXB1bmN0PF9DaGFyVD46Ol9fdGltZXB1bmN0KF9fY19sb2NhbGUgX19jbG9jLCBjb25zdCBjaGFyKiBfX3MsCi0rCQkJCSAgICAgc2l6ZV90IF9fcmVmcykKLSsgICAgOiBmYWNldChfX3JlZnMpLCBfTV9kYXRhKE5VTEwpLCBfTV9jX2xvY2FsZV90aW1lcHVuY3QoTlVMTCksCi0rICAgIF9NX25hbWVfdGltZXB1bmN0KF9fcykKLSsgICAgewotKyAgICAgIGNoYXIqIF9fdG1wID0gbmV3IGNoYXJbc3RkOjpzdHJsZW4oX19zKSArIDFdOwotKyAgICAgIHN0ZDo6c3RyY3B5KF9fdG1wLCBfX3MpOwotKyAgICAgIF9NX25hbWVfdGltZXB1bmN0ID0gX190bXA7Ci0rICAgICAgX01faW5pdGlhbGl6ZV90aW1lcHVuY3QoX19jbG9jKTsKLSsgICAgfQotKwotKyAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgotKyAgICBfX3RpbWVwdW5jdDxfQ2hhclQ+Ojp+X190aW1lcHVuY3QoKQotKyAgICB7Ci0rICAgICAgaWYgKF9NX25hbWVfdGltZXB1bmN0ICE9IF9TX2dldF9jX25hbWUoKSkKLSsJZGVsZXRlIFtdIF9NX25hbWVfdGltZXB1bmN0OwotKyAgICAgIGRlbGV0ZSBfTV9kYXRhOwotKyAgICAgIF9TX2Rlc3Ryb3lfY19sb2NhbGUoX01fY19sb2NhbGVfdGltZXB1bmN0KTsKLSsgICAgfQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUgYi9saWJzdGRjKystdjMvY29uZmlndXJlCi1pbmRleCBmNDBkZGNmLi5jNTdhNzUxIDEwMDc1NQotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZQotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZQotQEAgLTE1ODIyLDYgKzE1ODIyLDkgQEAgZmkKLSAgICMgRGVmYXVsdCB0byAiZ2VuZXJpYyIuCi0gICBpZiB0ZXN0ICRlbmFibGVfY2xvY2FsZV9mbGFnID0gYXV0bzsgdGhlbgotICAgICBjYXNlICR7dGFyZ2V0X29zfSBpbgotKyAgICAgICotdWNsaWJjKikKLSsgICAgICAgIGVuYWJsZV9jbG9jYWxlX2ZsYWc9dWNsaWJjCi0rICAgICAgICA7OwotICAgICAgIGxpbnV4KiB8IGdudSogfCBrZnJlZWJzZCotZ251IHwga25ldGJzZCotZ251KQotIAllbmFibGVfY2xvY2FsZV9mbGFnPWdudQotIAk7OwotQEAgLTE2MDc5LDYgKzE2MDgyLDc4IEBAICRhc19lY2hvICJuZXdsaWIiID4mNjsgfQotICAgICAgIENUSU1FX0NDPWNvbmZpZy9sb2NhbGUvZ2VuZXJpYy90aW1lX21lbWJlcnMuY2MKLSAgICAgICBDTE9DQUxFX0lOVEVSTkFMX0g9Y29uZmlnL2xvY2FsZS9nZW5lcmljL2MrK2xvY2FsZV9pbnRlcm5hbC5oCi0gICAgICAgOzsKLSsgICAgdWNsaWJjKQotKyAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB1Y2xpYmMiID4mNQotKyRhc19lY2hvICJ1Y2xpYmMiID4mNjsgfQotKwotKyAgICAgICMgRGVjbGFyZSBpbnRlbnRpb24gdG8gdXNlIGdldHRleHQsIGFuZCBhZGQgc3VwcG9ydCBmb3Igc3BlY2lmaWMKLSsgICAgICAjIGxhbmd1YWdlcy4KLSsgICAgICAjIEZvciBzb21lIHJlYXNvbiwgQUxMX0xJTkdVQVMgaGFzIHRvIGJlIGJlZm9yZSBBTS1HTlUtR0VUVEVYVAotKyAgICAgIEFMTF9MSU5HVUFTPSJkZSBmciIKLSsKLSsgICAgICAjIERvbid0IGNhbGwgQU0tR05VLUdFVFRFWFQgaGVyZS4gSW5zdGVhZCwgYXNzdW1lIGdsaWJjLgotKyAgICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXNnZm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgbXNnZm10OyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19jaGVja19tc2dmbXQrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkY2hlY2tfbXNnZm10IjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19jaGVja19tc2dmbXQ9IiRjaGVja19tc2dmbXQiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19jaGVja19tc2dmbXQ9InllcyIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLSsgIHRlc3QgLXogIiRhY19jdl9wcm9nX2NoZWNrX21zZ2ZtdCIgJiYgYWNfY3ZfcHJvZ19jaGVja19tc2dmbXQ9Im5vIgotK2ZpCi0rZmkKLStjaGVja19tc2dmbXQ9JGFjX2N2X3Byb2dfY2hlY2tfbXNnZm10Ci0raWYgdGVzdCAtbiAiJGNoZWNrX21zZ2ZtdCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkY2hlY2tfbXNnZm10IiA+JjUKLSskYXNfZWNobyAiJGNoZWNrX21zZ2ZtdCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rCi0rICAgICAgaWYgdGVzdCB4IiRjaGVja19tc2dmbXQiID0geCJ5ZXMiICYmIHRlc3QgeCIkZW5hYmxlX25scyIgPSB4InllcyI7IHRoZW4KLSsgICAgICAgIFVTRV9OTFM9eWVzCi0rICAgICAgZmkKLSsgICAgICAjIEV4cG9ydCB0aGUgYnVpbGQgb2JqZWN0cy4KLSsgICAgICBmb3IgbGluZyBpbiAkQUxMX0xJTkdVQVM7IGRvIFwKLSsgICAgICAgIGdsaWJjeHhfTU9GSUxFUz0iJGdsaWJjeHhfTU9GSUxFUyAkbGluZy5tbyI7IFwKLSsgICAgICAgIGdsaWJjeHhfUE9GSUxFUz0iJGdsaWJjeHhfUE9GSUxFUyAkbGluZy5wbyI7IFwKLSsgICAgICBkb25lCi0rCi0rCi0rCi0rICAgICAgQ0xPQ0FMRV9IPWNvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmgKLSsgICAgICBDTE9DQUxFX0NDPWNvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCi0rICAgICAgQ0NPREVDVlRfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvY29kZWN2dF9tZW1iZXJzLmNjCi0rICAgICAgQ0NPTExBVEVfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvY29sbGF0ZV9tZW1iZXJzLmNjCi0rICAgICAgQ0NUWVBFX0NDPWNvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MKLSsgICAgICBDTUVTU0FHRVNfSD1jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmgKLSsgICAgICBDTUVTU0FHRVNfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5jYwotKyAgICAgIENNT05FWV9DQz1jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCi0rICAgICAgQ05VTUVSSUNfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjCi0rICAgICAgQ1RJTUVfSD1jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuaAotKyAgICAgIENUSU1FX0NDPWNvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYwotKyAgICAgIENMT0NBTEVfSU5URVJOQUxfSD1jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaAotKyAgICAgIDs7Ci0gICBlc2FjCi0gCi0gICAjIFRoaXMgaXMgd2hlcmUgdGhlIHRlc3RzdWl0ZSBsb29rcyBmb3IgbG9jYWxlIGNhdGFsb2dzLCB1c2luZyB0aGUKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvaW5jbHVkZS9jX2NvbXBhdGliaWxpdHkvd2NoYXIuaCBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL2NfY29tcGF0aWJpbGl0eS93Y2hhci5oCi1pbmRleCA1ODBkNzI1Li4zZmU2MWI4IDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2luY2x1ZGUvY19jb21wYXRpYmlsaXR5L3djaGFyLmgKLSsrKyBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL2NfY29tcGF0aWJpbGl0eS93Y2hhci5oCi1AQCAtMTAxLDcgKzEwMSw5IEBAIHVzaW5nIHN0ZDo6d21lbWNtcDsKLSB1c2luZyBzdGQ6OndtZW1jcHk7Ci0gdXNpbmcgc3RkOjp3bWVtbW92ZTsKLSB1c2luZyBzdGQ6OndtZW1zZXQ7Ci0rI2lmIF9HTElCQ1hYX0hBVkVfV0NTRlRJTUUKLSB1c2luZyBzdGQ6Ondjc2Z0aW1lOwotKyNlbmRpZgotIAotICNpZiBfR0xJQkNYWF9VU0VfQzk5Ci0gdXNpbmcgc3RkOjp3Y3N0b2xkOwotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2N3Y2hhciBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2N3Y2hhcgotaW5kZXggMGU2YjFmYy4uNDA1YWVlMiAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2N3Y2hhcgotKysrIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvY19zdGQvY3djaGFyCi1AQCAtMTc1LDcgKzE3NSw5IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCi0gICB1c2luZyA6Ondjc2NvbGw7Ci0gICB1c2luZyA6Ondjc2NweTsKLSAgIHVzaW5nIDo6d2NzY3NwbjsKLSsjaWYgX0dMSUJDWFhfSEFWRV9XQ1NGVElNRQotICAgdXNpbmcgOjp3Y3NmdGltZTsKLSsjZW5kaWYKLSAgIHVzaW5nIDo6d2NzbGVuOwotICAgdXNpbmcgOjp3Y3NuY2F0OwotICAgdXNpbmcgOjp3Y3NuY21wOwotLS0gCi0xLjcuMTAuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwMDUtdWNsaWJjLWxvY2FsZS1ub19feC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDAwNS11Y2xpYmMtbG9jYWxlLW5vX194LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkY2JiZmU0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDAwNS11Y2xpYmMtbG9jYWxlLW5vX194LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjU3ICswLDAgQEAKLUZyb20gNmEzZTg1MDZhMTJjMTI3MjhkOGIyOTkwMWRlZmQ3MzhiZTQzNzU3ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjQyOjM2ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDUvMzVdIHVjbGliYy1sb2NhbGUtbm9fX3gKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmggICAgICB8ICAgNDUgKysrKysrKysrKysrKysrKysrKysKLSBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuY2MgICAgICB8ICAgMTQgLS0tLS0tCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmggICAgICAgfCAgICAxICsKLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvY29sbGF0ZV9tZW1iZXJzLmNjICAgICAgICB8ICAgIDcgLS0tCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MgfCAgICA3IC0tLQotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmNjICAgICAgIHwgICAgNyArLS0KLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oICAgICAgICB8ICAgMTggKysrLS0tLS0KLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYyAgICAgICB8ICAgIDQgLS0KLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjICAgICAgICB8ICAgIDMgLS0KLSBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjICB8ICAgIDMgLS0KLSAxMCBmaWxlcyBjaGFuZ2VkLCA1NSBpbnNlcnRpb25zKCspLCA1NCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaCBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaAotaW5kZXggMmFlM2U0YS4uZTc0ZmRkZiAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oCi1AQCAtNjAsNCArNjAsNDkgQEAgZXh0ZXJuICJDIiBfX3R5cGVvZih3Y3N4ZnJtX2wpIF9fd2NzeGZybV9sOwotIGV4dGVybiAiQyIgX190eXBlb2Yod2N0eXBlX2wpIF9fd2N0eXBlX2w7Ci0gI2VuZGlmCi0gCi0rIyBkZWZpbmUgX19ubF9sYW5naW5mb19sIG5sX2xhbmdpbmZvX2wKLSsjIGRlZmluZSBfX3N0cmNvbGxfbCBzdHJjb2xsX2wKLSsjIGRlZmluZSBfX3N0cmZ0aW1lX2wgc3RyZnRpbWVfbAotKyMgZGVmaW5lIF9fc3RydG9kX2wgc3RydG9kX2wKLSsjIGRlZmluZSBfX3N0cnRvZl9sIHN0cnRvZl9sCi0rIyBkZWZpbmUgX19zdHJ0b2xkX2wgc3RydG9sZF9sCi0rIyBkZWZpbmUgX19zdHJ4ZnJtX2wgc3RyeGZybV9sCi0rIyBkZWZpbmUgX19uZXdsb2NhbGUgbmV3bG9jYWxlCi0rIyBkZWZpbmUgX19mcmVlbG9jYWxlIGZyZWVsb2NhbGUKLSsjIGRlZmluZSBfX2R1cGxvY2FsZSBkdXBsb2NhbGUKLSsjIGRlZmluZSBfX3VzZWxvY2FsZSB1c2Vsb2NhbGUKLSsKLSsjIGlmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0rIyAgZGVmaW5lIF9faXN3Y3R5cGVfbCBpc3djdHlwZV9sCi0rIyAgZGVmaW5lIF9fdG93bG93ZXJfbCB0b3dsb3dlcl9sCi0rIyAgZGVmaW5lIF9fdG93dXBwZXJfbCB0b3d1cHBlcl9sCi0rIyAgZGVmaW5lIF9fd2NzY29sbF9sIHdjc2NvbGxfbAotKyMgIGRlZmluZSBfX3djc2Z0aW1lX2wgd2NzZnRpbWVfbAotKyMgIGRlZmluZSBfX3djc3hmcm1fbCB3Y3N4ZnJtX2wKLSsjICBkZWZpbmUgX193Y3R5cGVfbCB3Y3R5cGVfbAotKyMgZW5kaWYKLSsKLSsjZWxzZQotKyMgZGVmaW5lIF9fbmxfbGFuZ2luZm9fbChOLCBMKSAgICAgICBubF9sYW5naW5mbygoTikpCi0rIyBkZWZpbmUgX19zdHJjb2xsX2woUzEsIFMyLCBMKSAgICAgIHN0cmNvbGwoKFMxKSwgKFMyKSkKLSsjIGRlZmluZSBfX3N0cnRvZF9sKFMsIEUsIEwpICAgICAgICAgc3RydG9kKChTKSwgKEUpKQotKyMgZGVmaW5lIF9fc3RydG9mX2woUywgRSwgTCkgICAgICAgICBzdHJ0b2YoKFMpLCAoRSkpCi0rIyBkZWZpbmUgX19zdHJ0b2xkX2woUywgRSwgTCkgICAgICAgIHN0cnRvbGQoKFMpLCAoRSkpCi0rIyBkZWZpbmUgX19zdHJ4ZnJtX2woUzEsIFMyLCBOLCBMKSAgIHN0cnhmcm0oKFMxKSwgKFMyKSwgKE4pKQotKyMgd2FybmluZyBzaG91bGQgZHVtbXkgX19uZXdsb2NhbGUgY2hlY2sgZm9yIEN8UE9TSVggPwotKyMgZGVmaW5lIF9fbmV3bG9jYWxlKGEsIGIsIGMpICAgICAgICBOVUxMCi0rIyBkZWZpbmUgX19mcmVlbG9jYWxlKGEpICAgICAgICAgICAgICgodm9pZCkwKQotKyMgZGVmaW5lIF9fZHVwbG9jYWxlKGEpICAgICAgICAgICAgICBfX2NfbG9jYWxlKCkKLSsvLyMgZGVmaW5lIF9fdXNlbG9jYWxlID8KLSsvLwotKyMgaWZkZWYgX0dMSUJDWFhfVVNFX1dDSEFSX1QKLSsjICBkZWZpbmUgX19pc3djdHlwZV9sKEMsIE0sIEwpICAgICAgIGlzd2N0eXBlKChDKSwgKE0pKQotKyMgIGRlZmluZSBfX3Rvd2xvd2VyX2woQywgTCkgICAgICAgICAgdG93bG93ZXIoKEMpKQotKyMgIGRlZmluZSBfX3Rvd3VwcGVyX2woQywgTCkgICAgICAgICAgdG93dXBwZXIoKEMpKQotKyMgIGRlZmluZSBfX3djc2NvbGxfbChTMSwgUzIsIEwpICAgICAgd2NzY29sbCgoUzEpLCAoUzIpKQotKy8vIyAgZGVmaW5lIF9fd2NzZnRpbWVfbChTLCBNLCBGLCBULCBMKSAgd2NzZnRpbWUoKFMpLCAoTSksIChGKSwgKFQpKQotKyMgIGRlZmluZSBfX3djc3hmcm1fbChTMSwgUzIsIE4sIEwpICAgd2NzeGZybSgoUzEpLCAoUzIpLCAoTikpCi0rIyAgZGVmaW5lIF9fd2N0eXBlX2woUywgTCkgICAgICAgICAgICB3Y3R5cGUoKFMpKQotKyMgZW5kaWYKLSsKLSAjZW5kaWYgLy8gR0xJQkMgMi4zIGFuZCBsYXRlcgotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYwotaW5kZXggNTA4MWRjMS4uMjE0MzBkMCAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCi1AQCAtMzksMjAgKzM5LDYgQEAKLSAjaW5jbHVkZSA8bGFuZ2luZm8uaD4KLSAjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSAKLS0jaWZuZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLS0jZGVmaW5lIF9fc3RydG9sX2woUywgRSwgQiwgTCkgICAgICBzdHJ0b2woKFMpLCAoRSksIChCKSkKLS0jZGVmaW5lIF9fc3RydG91bF9sKFMsIEUsIEIsIEwpICAgICBzdHJ0b3VsKChTKSwgKEUpLCAoQikpCi0tI2RlZmluZSBfX3N0cnRvbGxfbChTLCBFLCBCLCBMKSAgICAgc3RydG9sbCgoUyksIChFKSwgKEIpKQotLSNkZWZpbmUgX19zdHJ0b3VsbF9sKFMsIEUsIEIsIEwpICAgIHN0cnRvdWxsKChTKSwgKEUpLCAoQikpCi0tI2RlZmluZSBfX3N0cnRvZl9sKFMsIEUsIEwpICAgICAgICAgc3RydG9mKChTKSwgKEUpKQotLSNkZWZpbmUgX19zdHJ0b2RfbChTLCBFLCBMKSAgICAgICAgIHN0cnRvZCgoUyksIChFKSkKLS0jZGVmaW5lIF9fc3RydG9sZF9sKFMsIEUsIEwpICAgICAgICBzdHJ0b2xkKChTKSwgKEUpKQotLSN3YXJuaW5nIHNob3VsZCBkdW1teSBfX25ld2xvY2FsZSBjaGVjayBmb3IgQ3xQT1NJWCA/Ci0tI2RlZmluZSBfX25ld2xvY2FsZShhLCBiLCBjKSAgICAgICAgTlVMTAotLSNkZWZpbmUgX19mcmVlbG9jYWxlKGEpICAgICAgICAgICAgICgodm9pZCkwKQotLSNkZWZpbmUgX19kdXBsb2NhbGUoYSkgICAgICAgICAgICAgIF9fY19sb2NhbGUoKQotLSNlbmRpZgotLQotIG5hbWVzcGFjZSBzdGQKLSB7Ci0gICB0ZW1wbGF0ZTw+Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmggYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaAotaW5kZXggZGEwN2MxZi4uNGJjYTVmMSAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaAotQEAgLTY4LDYgKzY4LDcgQEAgbmFtZXNwYWNlIF9fZ251X2N4eAotIHsKLSAgIGV4dGVybiAiQyIgX190eXBlb2YodXNlbG9jYWxlKSBfX3VzZWxvY2FsZTsKLSB9Ci0rI2RlZmluZSBfX3VzZWxvY2FsZSB1c2Vsb2NhbGUKLSAjZW5kaWYKLSAKLSBuYW1lc3BhY2Ugc3RkCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvbGxhdGVfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jb2xsYXRlX21lbWJlcnMuY2MKLWluZGV4IGMyNjY0YTcuLmVjNWMzMjkgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY29sbGF0ZV9tZW1iZXJzLmNjCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY29sbGF0ZV9tZW1iZXJzLmNjCi1AQCAtMzYsMTMgKzM2LDYgQEAKLSAjaW5jbHVkZSA8bG9jYWxlPgotICNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgotIAotLSNpZm5kZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotLSNkZWZpbmUgX19zdHJjb2xsX2woUzEsIFMyLCBMKSAgICAgIHN0cmNvbGwoKFMxKSwgKFMyKSkKLS0jZGVmaW5lIF9fc3RyeGZybV9sKFMxLCBTMiwgTiwgTCkgICBzdHJ4ZnJtKChTMSksIChTMiksIChOKSkKLS0jZGVmaW5lIF9fd2NzY29sbF9sKFMxLCBTMiwgTCkgICAgICB3Y3Njb2xsKChTMSksIChTMikpCi0tI2RlZmluZSBfX3djc3hmcm1fbChTMSwgUzIsIE4sIEwpICAgd2NzeGZybSgoUzEpLCAoUzIpLCAoTikpCi0tI2VuZGlmCi0tCi0gbmFtZXNwYWNlIHN0ZAotIHsKLSAgIC8vIFRoZXNlIGFyZSBiYXNpY2FsbHkgZXh0ZW5zaW9ucyB0byBjaGFyX3RyYWl0cywgYW5kIHBlcmhhcHMgc2hvdWxkCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYwotaW5kZXggNzI5NGUzYS4uN2IxMjg2MSAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYwotQEAgLTM4LDEzICszOCw2IEBACi0gI3VuZGVmIF9MSUJDCi0gI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+Ci0gCi0tI2lmbmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0tI2RlZmluZSBfX3djdHlwZV9sKFMsIEwpICAgICAgICAgICB3Y3R5cGUoKFMpKQotLSNkZWZpbmUgX190b3d1cHBlcl9sKEMsIEwpICAgICAgICAgdG93dXBwZXIoKEMpKQotLSNkZWZpbmUgX190b3dsb3dlcl9sKEMsIEwpICAgICAgICAgdG93bG93ZXIoKEMpKQotLSNkZWZpbmUgX19pc3djdHlwZV9sKEMsIE0sIEwpICAgICAgaXN3Y3R5cGUoKEMpLCAoTSkpCi0tI2VuZGlmCi0tCi0gbmFtZXNwYWNlIHN0ZAotIHsKLSAgIC8vIE5COiBUaGUgb3RoZXIgY3R5cGU8Y2hhcj4gc3BlY2lhbGl6YXRpb25zIGFyZSBpbiBzcmMvbG9jYWxlLmNjIGFuZAotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuY2MKLWluZGV4IDEzNTk0ZDkuLmQ3NjkzYjQgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5jYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuY2MKLUBAIC0zOSwxMyArMzksMTAgQEAKLSAjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSAjd2FybmluZyBmaXggZ2V0dGV4dCBzdHVmZgotICNlbmRpZgotLSNpZmRlZiBfX1VDTElCQ19IQVNfR0VUVEVYVF9BV0FSRU5FU1NfXwotLWV4dGVybiAiQyIgY2hhciAqX19kY2dldHRleHQoY29uc3QgY2hhciAqZG9tYWlubmFtZSwKLS0JCQkgICAgIGNvbnN0IGNoYXIgKm1zZ2lkLCBpbnQgY2F0ZWdvcnkpOwotICN1bmRlZiBnZXR0ZXh0Ci0tI2RlZmluZSBnZXR0ZXh0KG1zZ2lkKSBfX2RjZ2V0dGV4dChOVUxMLCBtc2dpZCwgTENfTUVTU0FHRVMpCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19HRVRURVhUX0FXQVJFTkVTU19fCi0rI2RlZmluZSBnZXR0ZXh0KG1zZ2lkKSBkY2dldHRleHQoTlVMTCwgbXNnaWQsIExDX01FU1NBR0VTKQotICNlbHNlCi0tI3VuZGVmIGdldHRleHQKLSAjZGVmaW5lIGdldHRleHQobXNnaWQpIChtc2dpZCkKLSAjZW5kaWYKLSAKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaAotaW5kZXggMTQyNDA3OC4uZDg5ZGEzMyAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmgKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmgKLUBAIC0zNiwxNSArMzYsMTEgQEAKLSAjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSAjd2FybmluZyBmaXggcHJvdG90eXBlcyBmb3IgKnRleHRkb21haW4gZnVuY3MKLSAjZW5kaWYKLS0jaWZkZWYgX19VQ0xJQkNfSEFTX0dFVFRFWFRfQVdBUkVORVNTX18KLS1leHRlcm4gIkMiIGNoYXIgKl9fdGV4dGRvbWFpbihjb25zdCBjaGFyICpkb21haW5uYW1lKTsKLS1leHRlcm4gIkMiIGNoYXIgKl9fYmluZHRleHRkb21haW4oY29uc3QgY2hhciAqZG9tYWlubmFtZSwKLS0JCQkJICBjb25zdCBjaGFyICpkaXJuYW1lKTsKLS0jZWxzZQotLSN1bmRlZiBfX3RleHRkb21haW4KLS0jdW5kZWYgX19iaW5kdGV4dGRvbWFpbgotLSNkZWZpbmUgX190ZXh0ZG9tYWluKEQpICAgICAgICAgICAoKHZvaWQpMCkKLS0jZGVmaW5lIF9fYmluZHRleHRkb21haW4oRCxQKSAgICAgKCh2b2lkKTApCi0rI2lmbmRlZiBfX1VDTElCQ19IQVNfR0VUVEVYVF9BV0FSRU5FU1NfXwotKyN1bmRlZiB0ZXh0ZG9tYWluCi0rI3VuZGVmIGJpbmR0ZXh0ZG9tYWluCi0rI2RlZmluZSB0ZXh0ZG9tYWluKEQpICAgICAgICAgICAoKHZvaWQpMCkKLSsjZGVmaW5lIGJpbmR0ZXh0ZG9tYWluKEQsUCkgICAgICgodm9pZCkwKQotICNlbmRpZgotIAotICAgLy8gTm9uLXZpcnR1YWwgbWVtYmVyIGZ1bmN0aW9ucy4KLUBAIC03MCw3ICs2Niw3IEBAIGV4dGVybiAiQyIgY2hhciAqX19iaW5kdGV4dGRvbWFpbihjb25zdCBjaGFyICpkb21haW5uYW1lLAotICAgICBtZXNzYWdlczxfQ2hhclQ+OjpvcGVuKGNvbnN0IGJhc2ljX3N0cmluZzxjaGFyPiYgX19zLCBjb25zdCBsb2NhbGUmIF9fbG9jLAotIAkJCSAgIGNvbnN0IGNoYXIqIF9fZGlyKSBjb25zdAotICAgICB7Ci0tICAgICAgX19iaW5kdGV4dGRvbWFpbihfX3MuY19zdHIoKSwgX19kaXIpOwotKyAgICAgIGJpbmR0ZXh0ZG9tYWluKF9fcy5jX3N0cigpLCBfX2Rpcik7Ci0gICAgICAgcmV0dXJuIHRoaXMtPmRvX29wZW4oX19zLCBfX2xvYyk7Ci0gICAgIH0KLSAKLUBAIC05MCw3ICs4Niw3IEBAIGV4dGVybiAiQyIgY2hhciAqX19iaW5kdGV4dGRvbWFpbihjb25zdCBjaGFyICpkb21haW5uYW1lLAotICAgICB7Ci0gICAgICAgLy8gTm8gZXJyb3IgY2hlY2tpbmcgaXMgZG9uZSwgYXNzdW1lIHRoZSBjYXRhbG9nIGV4aXN0cyBhbmQgY2FuCi0gICAgICAgLy8gYmUgdXNlZC4KLS0gICAgICBfX3RleHRkb21haW4oX19zLmNfc3RyKCkpOwotKyAgICAgIHRleHRkb21haW4oX19zLmNfc3RyKCkpOwotICAgICAgIHJldHVybiAwOwotICAgICB9Ci0gCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYwotaW5kZXggYWE1MjczMS4uMmU2ZjgwYSAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYwotQEAgLTQzLDEwICs0Myw2IEBACi0gI3dhcm5pbmcgdGFpbG9yIGZvciBzdHViIGxvY2FsZSBzdXBwb3J0Ci0gI2VuZGlmCi0gCi0tI2lmbmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0tI2RlZmluZSBfX25sX2xhbmdpbmZvX2woTiwgTCkgICAgICAgICBubF9sYW5naW5mbygoTikpCi0tI2VuZGlmCi0tCi0gbmFtZXNwYWNlIHN0ZAotIHsKLSAgIC8vIENvbnN0cnVjdCBhbmQgcmV0dXJuIHZhbGlkIHBhdHRlcm4gY29uc2lzdGluZyBvZiBzb21lIGNvbWJpbmF0aW9uIG9mOgotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjCi1pbmRleCA4ODNlYzFhLi4yYzcwNjQyIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYwotQEAgLTQxLDkgKzQxLDYgQEAKLSAjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSAjd2FybmluZyB0YWlsb3IgZm9yIHN0dWIgbG9jYWxlIHN1cHBvcnQKLSAjZW5kaWYKLS0jaWZuZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLS0jZGVmaW5lIF9fbmxfbGFuZ2luZm9fbChOLCBMKSAgICAgICAgIG5sX2xhbmdpbmZvKChOKSkKLS0jZW5kaWYKLSAKLSBuYW1lc3BhY2Ugc3RkCi0gewotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjCi1pbmRleCBlMDcwN2Q3Li5kODQ4ZWQ1IDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYwotQEAgLTQwLDkgKzQwLDYgQEAKLSAjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSAjd2FybmluZyB0YWlsb3IgZm9yIHN0dWIgbG9jYWxlIHN1cHBvcnQKLSAjZW5kaWYKLS0jaWZuZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLS0jZGVmaW5lIF9fbmxfbGFuZ2luZm9fbChOLCBMKSAgICAgICAgIG5sX2xhbmdpbmZvKChOKSkKLS0jZW5kaWYKLSAKLSBuYW1lc3BhY2Ugc3RkCi0gewotLS0gCi0xLjcuMTAuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwMDYtdWNsaWJjLWxvY2FsZS13Y2hhcl9maXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwMDYtdWNsaWJjLWxvY2FsZS13Y2hhcl9maXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0MDY4NTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDA2LXVjbGliYy1sb2NhbGUtd2NoYXJfZml4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotRnJvbSAyMjU1MTFhM2FlYjE5M2E5MTZiMzk5OWYwYjY0MGEzOTJjYWE2N2NkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6NDU6NTcgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwNi8zNV0gdWNsaWJjLWxvY2FsZS13Y2hhcl9maXgKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYyB8ICAgIDQgKystLQotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MgIHwgICAxMyArKysrKysrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYwotaW5kZXggMmU2ZjgwYS4uMzFlYmI5ZiAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYwotQEAgLTQwMSw3ICs0MDEsNyBAQCBuYW1lc3BhY2Ugc3RkCi0gIyBpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0gCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fY2xvYy0+ZGVjaW1hbF9wb2ludF93YzsKLSAJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX19jbG9jLT50aG91c2FuZHNfc2VwX3djOwotLSMgZWxzZQotKyMgZWxpZiBkZWZpbmVkIF9fVUNMSUJDX0hBU19MT0NBTEVfXwotIAkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBfX2dsb2JhbF9sb2NhbGUtPmRlY2ltYWxfcG9pbnRfd2M7Ci0gCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IF9fZ2xvYmFsX2xvY2FsZS0+dGhvdXNhbmRzX3NlcF93YzsKLSAjIGVuZGlmCi1AQCAtNTU2LDcgKzU1Niw3IEBAIG5hbWVzcGFjZSBzdGQKLSAjIGlmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSAJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gX19jbG9jLT5kZWNpbWFsX3BvaW50X3djOwotIAkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX2Nsb2MtPnRob3VzYW5kc19zZXBfd2M7Ci0tIyBlbHNlCi0rIyBlbGlmIGRlZmluZWQgX19VQ0xJQkNfSEFTX0xPQ0FMRV9fCi0gCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fZ2xvYmFsX2xvY2FsZS0+ZGVjaW1hbF9wb2ludF93YzsKLSAJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX19nbG9iYWxfbG9jYWxlLT50aG91c2FuZHNfc2VwX3djOwotICMgZW5kaWYKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYwotaW5kZXggMmM3MDY0Mi4uZDVjODk2MSAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLUBAIC0xMjcsMTIgKzEyNywyNSBAQCBuYW1lc3BhY2Ugc3RkCi0gCXsKLSAJICAvLyBOYW1lZCBsb2NhbGUuCi0gCSAgLy8gTkI6IEluIHRoZSBHTlUgbW9kZWwgd2NoYXJfdCBpcyBhbHdheXMgMzIgYml0IHdpZGUuCi0rI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0rI3dhcm5pbmcgZml4IHRoaXMuLi4gc2hvdWxkIGJlIG51bWVyaWMKLSsjZW5kaWYKLSsjaWZkZWYgX19VQ0xJQkNfXwotKyMgaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBfX2Nsb2MtPmRlY2ltYWxfcG9pbnRfd2M7Ci0rCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IF9fY2xvYy0+dGhvdXNhbmRzX3NlcF93YzsKLSsjIGVsaWYgZGVmaW5lZCBfX1VDTElCQ19IQVNfTE9DQUxFX18KLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gX19nbG9iYWxfbG9jYWxlLT5kZWNpbWFsX3BvaW50X3djOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX2dsb2JhbF9sb2NhbGUtPnRob3VzYW5kc19zZXBfd2M7Ci0rIyBlbmRpZgotKyNlbHNlCi0gCSAgdW5pb24geyBjaGFyICpfX3M7IHdjaGFyX3QgX193OyB9IF9fdTsKLSAJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9OVU1FUklDX0RFQ0lNQUxfUE9JTlRfV0MsIF9fY2xvYyk7Ci0gCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fdS5fX3c7Ci0gCi0gCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfTlVNRVJJQ19USE9VU0FORFNfU0VQX1dDLCBfX2Nsb2MpOwotIAkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX3UuX193OwotKyNlbmRpZgotIAotIAkgIGlmIChfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID09IEwnXDAnKQotIAkgICAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSAiIjsKLS0tIAotMS43LjEwLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDA3LXVjbGliYy1sb2NhbGUtdXBkYXRlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDA3LXVjbGliYy1sb2NhbGUtdXBkYXRlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ODUxMTIzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDAwNy11Y2xpYmMtbG9jYWxlLXVwZGF0ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU0MiArMCwwIEBACi1Gcm9tIDZmZmU3YzQ2ZjUyZDI3ODY0YzNkZjM2NjNlMTZlYzlkZGVlNzFlOGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODo0Njo1OCArMDQwMAotU3ViamVjdDogW1BBVENIIDA3LzM1XSB1Y2xpYmMtbG9jYWxlLXVwZGF0ZQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaCAgICAgIHwgICAgMyArCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjICAgICAgfCAgIDc0ICsrKysrKysrKy0tLS0tLS0tLS0tCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmggICAgICAgfCAgIDQyICsrKysrKy0tLS0tCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MgfCAgIDUxICsrKysrKysrKystLS0tCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaCAgICAgICAgfCAgIDEyICsrLS0KLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYyAgICAgICB8ICAgMzQgKysrKystLS0tCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYyAgICAgICAgfCAgICA1ICsrCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYyAgfCAgIDE4ICsrKy0tCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oICAgfCAgIDE3ICsrKy0tCi0gOSBmaWxlcyBjaGFuZ2VkLCAxNTggaW5zZXJ0aW9ucygrKSwgOTggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmggYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmgKLWluZGV4IGU3NGZkZGYuLjk3MWE2YjQgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmgKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaAotQEAgLTMxLDYgKzMxLDkgQEAKLSAKLSAjaW5jbHVkZSA8Yml0cy9jKytjb25maWcuaD4KLSAjaW5jbHVkZSA8Y2xvY2FsZT4KLSsjaW5jbHVkZSA8Y3N0ZGxpYj4KLSsjaW5jbHVkZSA8Y3N0cmluZz4KLSsjaW5jbHVkZSA8Y3N0ZGRlZj4KLSAKLSAjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSAjd2FybmluZyBjbGVhbiB0aGlzIHVwCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCi1pbmRleCAyMTQzMGQwLi4xYjlkOGUxIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuY2MKLUBAIC0zOSwyMyArMzksMjAgQEAKLSAjaW5jbHVkZSA8bGFuZ2luZm8uaD4KLSAjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSAKLS1uYW1lc3BhY2Ugc3RkCi0tewotK19HTElCQ1hYX0JFR0lOX05BTUVTUEFDRShzdGQpCi0rCi0gICB0ZW1wbGF0ZTw+Ci0gICAgIHZvaWQKLSAgICAgX19jb252ZXJ0X3RvX3YoY29uc3QgY2hhciogX19zLCBmbG9hdCYgX192LCBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsCi0gCQkgICBjb25zdCBfX2NfbG9jYWxlJiBfX2Nsb2MpCi0gICAgIHsKLS0gICAgICBpZiAoIShfX2VyciAmIGlvc19iYXNlOjpmYWlsYml0KSkKLS0JewotLQkgIGNoYXIqIF9fc2FuaXR5OwotLQkgIGVycm5vID0gMDsKLS0JICBmbG9hdCBfX2YgPSBfX3N0cnRvZl9sKF9fcywgJl9fc2FuaXR5LCBfX2Nsb2MpOwotLSAgICAgICAgICBpZiAoX19zYW5pdHkgIT0gX19zICYmIGVycm5vICE9IEVSQU5HRSkKLS0JICAgIF9fdiA9IF9fZjsKLS0JICBlbHNlCi0tCSAgICBfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKLS0JfQotKyAgICAgIGNoYXIqIF9fc2FuaXR5OwotKyAgICAgIGVycm5vID0gMDsKLSsgICAgICBmbG9hdCBfX2YgPSBfX3N0cnRvZl9sKF9fcywgJl9fc2FuaXR5LCBfX2Nsb2MpOwotKyAgICAgIGlmIChfX3Nhbml0eSAhPSBfX3MgJiYgZXJybm8gIT0gRVJBTkdFKQotKwlfX3YgPSBfX2Y7Ci0rICAgICAgZWxzZQotKwlfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKLSAgICAgfQotIAotICAgdGVtcGxhdGU8PgotQEAgLTYzLDE2ICs2MCwxMyBAQCBuYW1lc3BhY2Ugc3RkCi0gICAgIF9fY29udmVydF90b192KGNvbnN0IGNoYXIqIF9fcywgZG91YmxlJiBfX3YsIGlvc19iYXNlOjppb3N0YXRlJiBfX2VyciwKLSAJCSAgIGNvbnN0IF9fY19sb2NhbGUmIF9fY2xvYykKLSAgICAgewotLSAgICAgIGlmICghKF9fZXJyICYgaW9zX2Jhc2U6OmZhaWxiaXQpKQotLQl7Ci0tCSAgY2hhciogX19zYW5pdHk7Ci0tCSAgZXJybm8gPSAwOwotLQkgIGRvdWJsZSBfX2QgPSBfX3N0cnRvZF9sKF9fcywgJl9fc2FuaXR5LCBfX2Nsb2MpOwotLSAgICAgICAgICBpZiAoX19zYW5pdHkgIT0gX19zICYmIGVycm5vICE9IEVSQU5HRSkKLS0JICAgIF9fdiA9IF9fZDsKLS0JICBlbHNlCi0tCSAgICBfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKLS0JfQotKyAgICAgIGNoYXIqIF9fc2FuaXR5OwotKyAgICAgIGVycm5vID0gMDsKLSsgICAgICBkb3VibGUgX19kID0gX19zdHJ0b2RfbChfX3MsICZfX3Nhbml0eSwgX19jbG9jKTsKLSsgICAgICBpZiAoX19zYW5pdHkgIT0gX19zICYmIGVycm5vICE9IEVSQU5HRSkKLSsJX192ID0gX19kOwotKyAgICAgIGVsc2UKLSsJX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7Ci0gICAgIH0KLSAKLSAgIHRlbXBsYXRlPD4KLUBAIC04MCwxNiArNzQsMTMgQEAgbmFtZXNwYWNlIHN0ZAotICAgICBfX2NvbnZlcnRfdG9fdihjb25zdCBjaGFyKiBfX3MsIGxvbmcgZG91YmxlJiBfX3YsIGlvc19iYXNlOjppb3N0YXRlJiBfX2VyciwKLSAJCSAgIGNvbnN0IF9fY19sb2NhbGUmIF9fY2xvYykKLSAgICAgewotLSAgICAgIGlmICghKF9fZXJyICYgaW9zX2Jhc2U6OmZhaWxiaXQpKQotLQl7Ci0tCSAgY2hhciogX19zYW5pdHk7Ci0tCSAgZXJybm8gPSAwOwotLQkgIGxvbmcgZG91YmxlIF9fbGQgPSBfX3N0cnRvbGRfbChfX3MsICZfX3Nhbml0eSwgX19jbG9jKTsKLS0gICAgICAgICAgaWYgKF9fc2FuaXR5ICE9IF9fcyAmJiBlcnJubyAhPSBFUkFOR0UpCi0tCSAgICBfX3YgPSBfX2xkOwotLQkgIGVsc2UKLS0JICAgIF9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0OwotLQl9Ci0rICAgICAgY2hhciogX19zYW5pdHk7Ci0rICAgICAgZXJybm8gPSAwOwotKyAgICAgIGxvbmcgZG91YmxlIF9fbGQgPSBfX3N0cnRvbGRfbChfX3MsICZfX3Nhbml0eSwgX19jbG9jKTsKLSsgICAgICBpZiAoX19zYW5pdHkgIT0gX19zICYmIGVycm5vICE9IEVSQU5HRSkKLSsJX192ID0gX19sZDsKLSsgICAgICBlbHNlCi0rCV9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0OwotICAgICB9Ci0gCi0gICB2b2lkCi1AQCAtMTEwLDE3ICsxMDEsMTggQEAgbmFtZXNwYWNlIHN0ZAotICAgdm9pZAotICAgbG9jYWxlOjpmYWNldDo6X1NfZGVzdHJveV9jX2xvY2FsZShfX2NfbG9jYWxlJiBfX2Nsb2MpCi0gICB7Ci0tICAgIGlmIChfU19nZXRfY19sb2NhbGUoKSAhPSBfX2Nsb2MpCi0rICAgIGlmIChfX2Nsb2MgJiYgX1NfZ2V0X2NfbG9jYWxlKCkgIT0gX19jbG9jKQotICAgICAgIF9fZnJlZWxvY2FsZShfX2Nsb2MpOwotICAgfQotIAotICAgX19jX2xvY2FsZQotICAgbG9jYWxlOjpmYWNldDo6X1NfY2xvbmVfY19sb2NhbGUoX19jX2xvY2FsZSYgX19jbG9jKQotICAgeyByZXR1cm4gX19kdXBsb2NhbGUoX19jbG9jKTsgfQotLX0gLy8gbmFtZXNwYWNlIHN0ZAotIAotLW5hbWVzcGFjZSBfX2dudV9jeHgKLS17Ci0rX0dMSUJDWFhfRU5EX05BTUVTUEFDRQotKwotK19HTElCQ1hYX0JFR0lOX05BTUVTUEFDRShfX2dudV9jeHgpCi0rCi0gICBjb25zdCBjaGFyKiBjb25zdCBjYXRlZ29yeV9uYW1lc1s2ICsgX0dMSUJDWFhfTlVNX0NBVEVHT1JJRVNdID0KLSAgICAgewotICAgICAgICJMQ19DVFlQRSIsCi1AQCAtMTM4LDkgKzEzMCwxMSBAQCBuYW1lc3BhY2UgX19nbnVfY3h4Ci0gICAgICAgIkxDX0lERU5USUZJQ0FUSU9OIgotICNlbmRpZgotICAgICB9OwotLX0KLSAKLS1uYW1lc3BhY2Ugc3RkCi0tewotK19HTElCQ1hYX0VORF9OQU1FU1BBQ0UKLSsKLStfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0Uoc3RkKQotKwotICAgY29uc3QgY2hhciogY29uc3QqIGNvbnN0IGxvY2FsZTo6X1NfY2F0ZWdvcmllcyA9IF9fZ251X2N4eDo6Y2F0ZWdvcnlfbmFtZXM7Ci0tfSAgLy8gbmFtZXNwYWNlIHN0ZAotKwotK19HTElCQ1hYX0VORF9OQU1FU1BBQ0UKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaCBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oCi1pbmRleCA0YmNhNWYxLi42NGE2ZDQ2IDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmgKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oCi1AQCAtMzksMjEgKzM5LDIzIEBACi0gI3ByYWdtYSBHQ0Mgc3lzdGVtX2hlYWRlcgotIAotICNpbmNsdWRlIDxjc3RyaW5nPiAgICAgICAgICAgICAgLy8gZ2V0IHN0ZDo6c3RybGVuCi0tI2luY2x1ZGUgPGNzdGRpbz4gICAgICAgICAgICAgICAvLyBnZXQgc3RkOjpzbnByaW50ZiBvciBzdGQ6OnNwcmludGYKLSsjaW5jbHVkZSA8Y3N0ZGlvPiAgICAgICAgICAgICAgIC8vIGdldCBzdGQ6OnZzbnByaW50ZiBvciBzdGQ6OnZzcHJpbnRmCi0gI2luY2x1ZGUgPGNsb2NhbGU+Ci0gI2luY2x1ZGUgPGxhbmdpbmZvLmg+CQkvLyBGb3IgY29kZWN2dAotICNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotICN3YXJuaW5nIGZpeCB0aGlzCi0gI2VuZGlmCi0tI2lmZGVmIF9fVUNMSUJDX0hBU19MT0NBTEVfXwotKyNpZmRlZiBfR0xJQkNYWF9VU0VfSUNPTlYKLSAjaW5jbHVkZSA8aWNvbnYuaD4JCS8vIEZvciBjb2RlY3Z0IHVzaW5nIGljb252LCBpY29udl90Ci0gI2VuZGlmCi0tI2lmZGVmIF9fVUNMSUJDX0hBU19HRVRURVhUX0FXQVJFTkVTU19fCi0tI2luY2x1ZGUgPGxpYmludGwuaD4gCQkvLyBGb3IgbWVzc2FnZXMKLSsjaWZkZWYgSEFWRV9MSUJJTlRMX0gKLSsjaW5jbHVkZSA8bGliaW50bC5oPgkJLy8gRm9yIG1lc3NhZ2VzCi0gI2VuZGlmCi0rI2luY2x1ZGUgPGNzdGRhcmc+Ci0gCi0gI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0gI3dhcm5pbmcgd2hhdCBpcyBfR0xJQkNYWF9DX0xPQ0FMRV9HTlUgZm9yCi0rLy8gcHNtOiB1c2VkIGluIG9zL2dudS1saW51eC9jdHlwZV9ub25pbmxpbmUuaAotICNlbmRpZgotICNkZWZpbmUgX0dMSUJDWFhfQ19MT0NBTEVfR05VIDEKLSAKLUBAIC03OCwyMyArODAsMjUgQEAgbmFtZXNwYWNlIHN0ZAotICNlbHNlCi0gICB0eXBlZGVmIGludCoJCQlfX2NfbG9jYWxlOwotICNlbmRpZgotLQotLSAgLy8gQ29udmVydCBudW1lcmljIHZhbHVlIG9mIHR5cGUgX1R2IHRvIHN0cmluZyBhbmQgcmV0dXJuIGxlbmd0aCBvZgotLSAgLy8gc3RyaW5nLiAgSWYgc25wcmludGYgaXMgYXZhaWxhYmxlIHVzZSBpdCwgb3RoZXJ3aXNlIGZhbGwgYmFjayB0bwotLSAgLy8gdGhlIHVuc2FmZSBzcHJpbnRmIHdoaWNoLCBpbiBnZW5lcmFsLCBjYW4gYmUgZGFuZ2Vyb3VzIGFuZCBzaG91bGQKLSsgIC8vIENvbnZlcnQgbnVtZXJpYyB2YWx1ZSBvZiB0eXBlIGRvdWJsZSB0byBzdHJpbmcgYW5kIHJldHVybiBsZW5ndGggb2YKLSsgIC8vIHN0cmluZy4gIElmIHZzbnByaW50ZiBpcyBhdmFpbGFibGUgdXNlIGl0LCBvdGhlcndpc2UgZmFsbCBiYWNrIHRvCi0rICAvLyB0aGUgdW5zYWZlIHZzcHJpbnRmIHdoaWNoLCBpbiBnZW5lcmFsLCBjYW4gYmUgZGFuZ2Vyb3VzIGFuZCBzaG91bGQKLSAgIC8vIGJlIGF2b2lkZWQuCi0tICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHY+Ci0tICAgIGludAotLSAgICBfX2NvbnZlcnRfZnJvbV92KGNoYXIqIF9fb3V0LAotLQkJICAgICBjb25zdCBpbnQgX19zaXplIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSksCi0tCQkgICAgIGNvbnN0IGNoYXIqIF9fZm10LAotLSNpZmRlZiBfX1VDTElCQ19IQVNfWENMT0NBTEVfXwotLQkJICAgICBfVHYgX192LCBjb25zdCBfX2NfbG9jYWxlJiBfX2Nsb2MsIGludCBfX3ByZWMpCi0rICAgIGlubGluZSBpbnQKLSsgICAgX19jb252ZXJ0X2Zyb21fdihjb25zdCBfX2NfbG9jYWxlJgotKyNpZm5kZWYgX19VQ0xJQkNfSEFTX1hDTE9DQUxFX18KLSsJX19jbG9jIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSkKLSsjZW5kaWYKLSsJCSAgICAgLAotKwkJICAgICBjaGFyKiBfX291dCwKLSsJCSAgICAgY29uc3QgaW50IF9fc2l6ZSwKLSsJCSAgICAgY29uc3QgY2hhciogX19mbXQsIC4uLikKLSAgICAgewotKyAgICAgIHZhX2xpc3QgX19hcmdzOwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWENMT0NBTEVfXwotKwotICAgICAgIF9fY19sb2NhbGUgX19vbGQgPSBfX2dudV9jeHg6Ol9fdXNlbG9jYWxlKF9fY2xvYyk7Ci0gI2Vsc2UKLS0JCSAgICAgX1R2IF9fdiwgY29uc3QgX19jX2xvY2FsZSYsIGludCBfX3ByZWMpCi0tICAgIHsKLSAjIGlmZGVmIF9fVUNMSUJDX0hBU19MT0NBTEVfXwotICAgICAgIGNoYXIqIF9fb2xkID0gc3RkOjpzZXRsb2NhbGUoTENfQUxMLCBOVUxMKTsKLSAgICAgICBjaGFyKiBfX3NhdiA9IG5ldyBjaGFyW3N0ZDo6c3RybGVuKF9fb2xkKSArIDFdOwotQEAgLTEwMyw3ICsxMDcsOSBAQCBuYW1lc3BhY2Ugc3RkCi0gIyBlbmRpZgotICNlbmRpZgotIAotLSAgICAgIGNvbnN0IGludCBfX3JldCA9IHN0ZDo6c25wcmludGYoX19vdXQsIF9fc2l6ZSwgX19mbXQsIF9fcHJlYywgX192KTsKLSsgICAgICB2YV9zdGFydChfX2FyZ3MsIF9fZm10KTsKLSsgICAgICBjb25zdCBpbnQgX19yZXQgPSBzdGQ6OnZzbnByaW50ZihfX291dCwgX19zaXplLCBfX2ZtdCwgX19hcmdzKTsKLSsgICAgICB2YV9lbmQoX19hcmdzKTsKLSAKLSAjaWZkZWYgX19VQ0xJQkNfSEFTX1hDTE9DQUxFX18KLSAgICAgICBfX2dudV9jeHg6Ol9fdXNlbG9jYWxlKF9fb2xkKTsKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjCi1pbmRleCA3YjEyODYxLi4xM2UwMTFkIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjCi1AQCAtMzMsMTYgKzMzLDIwIEBACi0gCi0gLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KLSAKLSsjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSsjaWZkZWYgX19VQ0xJQkNfSEFTX0xPQ0FMRV9fCi0gI2RlZmluZSBfTElCQwotICNpbmNsdWRlIDxsb2NhbGU+Ci0gI3VuZGVmIF9MSUJDCi0rI2Vsc2UKLSsjaW5jbHVkZSA8bG9jYWxlPgotKyNlbmRpZgotICNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgotIAotLW5hbWVzcGFjZSBzdGQKLS17Ci0rX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFKHN0ZCkKLSsKLSAgIC8vIE5COiBUaGUgb3RoZXIgY3R5cGU8Y2hhcj4gc3BlY2lhbGl6YXRpb25zIGFyZSBpbiBzcmMvbG9jYWxlLmNjIGFuZAotICAgLy8gdmFyaW91cyAvY29uZmlnL29zLyogZmlsZXMuCi0tICB0ZW1wbGF0ZTw+Ci0gICAgIGN0eXBlX2J5bmFtZTxjaGFyPjo6Y3R5cGVfYnluYW1lKGNvbnN0IGNoYXIqIF9fcywgc2l6ZV90IF9fcmVmcykKLSAgICAgOiBjdHlwZTxjaGFyPigwLCBmYWxzZSwgX19yZWZzKQotICAgICB7Ci1AQCAtNTcsNiArNjEsOCBAQCBuYW1lc3BhY2Ugc3RkCi0gI2VuZGlmCi0gCX0KLSAgICAgfQotKyAgICBjdHlwZV9ieW5hbWU8Y2hhcj46On5jdHlwZV9ieW5hbWUoKQotKyAgICB7IH0KLSAKLSAjaWZkZWYgX0dMSUJDWFhfVVNFX1dDSEFSX1QKLSAgIGN0eXBlPHdjaGFyX3Q+OjpfX3dtYXNrX3R5cGUKLUBAIC0xMzgsMTcgKzE0NCwzMyBAQCBuYW1lc3BhY2Ugc3RkCi0gICBjdHlwZTx3Y2hhcl90Pjo6Ci0gICBkb19pcyhtYXNrIF9fbSwgd2NoYXJfdCBfX2MpIGNvbnN0Ci0gICB7Ci0tICAgIC8vIEhpZ2hlc3QgYml0bWFzayBpbiBjdHlwZV9iYXNlID09IDEwLCBidXQgZXh0cmEgaW4gIkMiCi0tICAgIC8vIGxpYnJhcnkgZm9yIGJsYW5rLgotKyAgICAvLyBUaGUgY2FzZSBvZiBfX20gPT0gY3R5cGVfYmFzZTo6c3BhY2UgaXMgcGFydGljdWxhcmx5IGltcG9ydGFudCwKLSsgICAgLy8gZHVlIHRvIGl0cyB1c2UgaW4gbWFueSBpc3RyZWFtIGZ1bmN0aW9ucy4gIFRoZXJlZm9yZSB3ZSBkZWFsIHdpdGgKLSsgICAgLy8gaXQgZmlyc3QsIGV4cGxvaXRpbmcgdGhlIGtub3dsZWRnZSB0aGF0IG9uIEdOVSBzeXN0ZW1zIF9NX2JpdFs1XQotKyAgICAvLyBpcyB0aGUgbWFzayBjb3JyZXNwb25kaW5nIHRvIGN0eXBlX2Jhc2U6OnNwYWNlLiAgTkI6IGFuIGVuY29kaW5nCi0rICAgIC8vIGNoYW5nZSB3b3VsZCBub3QgYWZmZWN0IGNvcnJlY3RuZXNzIQotKwotICAgICBib29sIF9fcmV0ID0gZmFsc2U7Ci0tICAgIGNvbnN0IHNpemVfdCBfX2JpdG1hc2tzaXplID0gMTE7Ci0tICAgIGZvciAoc2l6ZV90IF9fYml0Y3VyID0gMDsgX19iaXRjdXIgPD0gX19iaXRtYXNrc2l6ZTsgKytfX2JpdGN1cikKLS0gICAgICBpZiAoX19tICYgX01fYml0W19fYml0Y3VyXQotLQkgICYmIF9faXN3Y3R5cGVfbChfX2MsIF9NX3dtYXNrW19fYml0Y3VyXSwgX01fY19sb2NhbGVfY3R5cGUpKQotLQl7Ci0tCSAgX19yZXQgPSB0cnVlOwotLQkgIGJyZWFrOwotLQl9Ci0rICAgIGlmIChfX20gPT0gX01fYml0WzVdKQotKyAgICAgIF9fcmV0ID0gX19pc3djdHlwZV9sKF9fYywgX01fd21hc2tbNV0sIF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsgICAgZWxzZQotKyAgICAgIHsKLSsJLy8gSGlnaGVzdCBiaXRtYXNrIGluIGN0eXBlX2Jhc2UgPT0gMTAsIGJ1dCBleHRyYSBpbiAiQyIKLSsJLy8gbGlicmFyeSBmb3IgYmxhbmsuCi0rCWNvbnN0IHNpemVfdCBfX2JpdG1hc2tzaXplID0gMTE7Ci0rCWZvciAoc2l6ZV90IF9fYml0Y3VyID0gMDsgX19iaXRjdXIgPD0gX19iaXRtYXNrc2l6ZTsgKytfX2JpdGN1cikKLSsJICBpZiAoX19tICYgX01fYml0W19fYml0Y3VyXSkKLSsJICAgIHsKLSsJICAgICAgaWYgKF9faXN3Y3R5cGVfbChfX2MsIF9NX3dtYXNrW19fYml0Y3VyXSwgX01fY19sb2NhbGVfY3R5cGUpKQotKwkJewotKwkJICBfX3JldCA9IHRydWU7Ci0rCQkgIGJyZWFrOwotKwkJfQotKwkgICAgICBlbHNlIGlmIChfX20gPT0gX01fYml0W19fYml0Y3VyXSkKLSsJCWJyZWFrOwotKwkgICAgfQotKyAgICAgIH0KLSsKLSAgICAgcmV0dXJuIF9fcmV0OwotICAgfQotIAotQEAgLTI5MCw0ICszMTIsNSBAQCBuYW1lc3BhY2Ugc3RkCi0gI2VuZGlmCi0gICB9Ci0gI2VuZGlmIC8vICBfR0xJQkNYWF9VU0VfV0NIQVJfVAotLX0KLSsKLStfR0xJQkNYWF9FTkRfTkFNRVNQQUNFCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaCBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmgKLWluZGV4IGQ4OWRhMzMuLjA2NzY1N2EgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oCi1AQCAtNTMsMTIgKzUzLDE2IEBACi0gICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+Ci0gICAgICBtZXNzYWdlczxfQ2hhclQ+OjptZXNzYWdlcyhfX2NfbG9jYWxlIF9fY2xvYywgY29uc3QgY2hhciogX19zLAotIAkJCQlzaXplX3QgX19yZWZzKQotLSAgICAgOiBmYWNldChfX3JlZnMpLCBfTV9jX2xvY2FsZV9tZXNzYWdlcyhfU19jbG9uZV9jX2xvY2FsZShfX2Nsb2MpKSwKLS0gICAgIF9NX25hbWVfbWVzc2FnZXMoX19zKQotKyAgICAgOiBmYWNldChfX3JlZnMpLCBfTV9jX2xvY2FsZV9tZXNzYWdlcyhOVUxMKSwKLSsgICAgIF9NX25hbWVfbWVzc2FnZXMoTlVMTCkKLSAgICAgIHsKLS0gICAgICAgY2hhciogX190bXAgPSBuZXcgY2hhcltzdGQ6OnN0cmxlbihfX3MpICsgMV07Ci0tICAgICAgIHN0ZDo6c3RyY3B5KF9fdG1wLCBfX3MpOwotKyAgICAgICBjb25zdCBzaXplX3QgX19sZW4gPSBzdGQ6OnN0cmxlbihfX3MpICsgMTsKLSsgICAgICAgY2hhciogX190bXAgPSBuZXcgY2hhcltfX2xlbl07Ci0rICAgICAgIHN0ZDo6bWVtY3B5KF9fdG1wLCBfX3MsIF9fbGVuKTsKLSAgICAgICAgX01fbmFtZV9tZXNzYWdlcyA9IF9fdG1wOwotKwotKyAgICAgICAvLyBMYXN0IHRvIGF2b2lkIGxlYWtpbmcgbWVtb3J5IGlmIG5ldyB0aHJvd3MuCi0rICAgICAgIF9NX2NfbG9jYWxlX21lc3NhZ2VzID0gX1NfY2xvbmVfY19sb2NhbGUoX19jbG9jKTsKLSAgICAgIH0KLSAKLSAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCi1pbmRleCAzMWViYjlmLi43Njc5YjljIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCi1AQCAtMzMsOSArMzMsMTQgQEAKLSAKLSAvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotIAotKyNpbmNsdWRlIDxmZWF0dXJlcy5oPgotKyNpZmRlZiBfX1VDTElCQ19IQVNfTE9DQUxFX18KLSAjZGVmaW5lIF9MSUJDCi0gI2luY2x1ZGUgPGxvY2FsZT4KLSAjdW5kZWYgX0xJQkMKLSsjZWxzZQotKyNpbmNsdWRlIDxsb2NhbGU+Ci0rI2VuZGlmCi0gI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+Ci0gCi0gI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi1AQCAtMjA2LDcgKzIxMSw3IEBAIG5hbWVzcGFjZSBzdGQKLSAJICB9Ci0gCWJyZWFrOwotICAgICAgIGRlZmF1bHQ6Ci0tCTsKLSsJX19yZXQgPSBwYXR0ZXJuKCk7Ci0gICAgICAgfQotICAgICByZXR1cm4gX19yZXQ7Ci0gICB9Ci1AQCAtMzkwLDcgKzM5NSw5IEBAIG5hbWVzcGFjZSBzdGQKLSAJICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX19jbG9jKTsKLSAjZWxzZQotIAkgIC8vIFN3aXRjaCB0byBuYW1lZCBsb2NhbGUgc28gdGhhdCBtYnNydG93Y3Mgd2lsbCB3b3JrLgotLQkgIGNoYXIqIF9fb2xkID0gc3RyZHVwKHNldGxvY2FsZShMQ19BTEwsIE5VTEwpKTsKLSsgIAkgIGNoYXIqIF9fb2xkID0gc2V0bG9jYWxlKExDX0FMTCwgTlVMTCk7Ci0rICAgICAgICAgIGNvbnN0IHNpemVfdCBfX2xsZW4gPSBzdHJsZW4oX19vbGQpICsgMTsKLSsgICAgICAgICAgY2hhciogX19zYXYgPSBuZXcgY2hhcltfX2xsZW5dOwotIAkgIHNldGxvY2FsZShMQ19BTEwsIF9fbmFtZSk7Ci0gI2VuZGlmCi0gCi1AQCAtNDc3LDggKzQ4NCw4IEBAIG5hbWVzcGFjZSBzdGQKLSAjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotIAkgICAgICBfX3VzZWxvY2FsZShfX29sZCk7Ci0gI2Vsc2UKLS0JICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOwotLQkgICAgICBmcmVlKF9fb2xkKTsKLSsJICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19zYXYpOwotKwkgICAgICBkZWxldGUgW10gX19zYXY7Ci0gI2VuZGlmCi0gCSAgICAgIF9fdGhyb3dfZXhjZXB0aW9uX2FnYWluOwotIAkgICAgfQotQEAgLTQ5OCw4ICs1MDUsOCBAQCBuYW1lc3BhY2Ugc3RkCi0gI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSAJICBfX3VzZWxvY2FsZShfX29sZCk7Ci0gI2Vsc2UKLS0JICBzZXRsb2NhbGUoTENfQUxMLCBfX29sZCk7Ci0tCSAgZnJlZShfX29sZCk7Ci0rCSAgc2V0bG9jYWxlKExDX0FMTCwgX19zYXYpOwotKwkgIGRlbGV0ZSBbXSBfX3NhdjsKLSAjZW5kaWYKLSAJfQotICAgICB9Ci1AQCAtNTQ1LDggKzU1MiwxMSBAQCBuYW1lc3BhY2Ugc3RkCi0gCSAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9fY2xvYyk7Ci0gI2Vsc2UKLSAJICAvLyBTd2l0Y2ggdG8gbmFtZWQgbG9jYWxlIHNvIHRoYXQgbWJzcnRvd2NzIHdpbGwgd29yay4KLS0JICBjaGFyKiBfX29sZCA9IHN0cmR1cChzZXRsb2NhbGUoTENfQUxMLCBOVUxMKSk7Ci0tCSAgc2V0bG9jYWxlKExDX0FMTCwgX19uYW1lKTsKLSsgICAgICAgICAgY2hhciogX19vbGQgPSBzZXRsb2NhbGUoTENfQUxMLCBOVUxMKTsKLSsgICAgICAgICAgY29uc3Qgc2l6ZV90IF9fbGxlbiA9IHN0cmxlbihfX29sZCkgKyAxOwotKyAgICAgICAgICBjaGFyKiBfX3NhdiA9IG5ldyBjaGFyW19fbGxlbl07Ci0rICAgICAgICAgIG1lbWNweShfX3NhdiwgX19vbGQsIF9fbGxlbik7Ci0rICAgICAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fbmFtZSk7Ci0gI2VuZGlmCi0gCi0gI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi1AQCAtNjMzLDggKzY0Myw4IEBAIG5hbWVzcGFjZSBzdGQKLSAjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotIAkgICAgICBfX3VzZWxvY2FsZShfX29sZCk7Ci0gI2Vsc2UKLS0JICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOwotLQkgICAgICBmcmVlKF9fb2xkKTsKLSsJICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19zYXYpOwotKwkgICAgICBkZWxldGUgW10gX19zYXY7Ci0gI2VuZGlmCi0gICAgICAgICAgICAgICBfX3Rocm93X2V4Y2VwdGlvbl9hZ2FpbjsKLSAJICAgIH0KLUBAIC02NTMsOCArNjYzLDggQEAgbmFtZXNwYWNlIHN0ZAotICNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0gCSAgX191c2Vsb2NhbGUoX19vbGQpOwotICNlbHNlCi0tCSAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOwotLQkgIGZyZWUoX19vbGQpOwotKwkgIHNldGxvY2FsZShMQ19BTEwsIF9fc2F2KTsKLSsJICBkZWxldGUgW10gX19zYXY7Ci0gI2VuZGlmCi0gCX0KLSAgICAgfQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjCi1pbmRleCBkNWM4OTYxLi44YWU4OTY5IDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYwotQEAgLTMzLDkgKzMzLDE0IEBACi0gCi0gLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KLSAKLSsjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSsjaWZkZWYgX19VQ0xJQkNfSEFTX0xPQ0FMRV9fCi0gI2RlZmluZSBfTElCQwotICNpbmNsdWRlIDxsb2NhbGU+Ci0gI3VuZGVmIF9MSUJDCi0rI2Vsc2UKLSsjaW5jbHVkZSA8bG9jYWxlPgotKyNlbmRpZgotICNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgotIAotICNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjCi1pbmRleCBkODQ4ZWQ1Li5mMjRkNTNlIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYwotQEAgLTUzLDExICs1MywxNCBAQCBuYW1lc3BhY2Ugc3RkCi0gICAgICAgY29uc3Qgc2l6ZV90IF9fbGVuID0gX19zdHJmdGltZV9sKF9fcywgX19tYXhsZW4sIF9fZm9ybWF0LCBfX3RtLAotIAkJCQkJX01fY19sb2NhbGVfdGltZXB1bmN0KTsKLSAjZWxzZQotLSAgICAgIGNoYXIqIF9fb2xkID0gc3RyZHVwKHNldGxvY2FsZShMQ19BTEwsIE5VTEwpKTsKLSsgICAgICBjaGFyKiBfX29sZCA9IHNldGxvY2FsZShMQ19BTEwsIE5VTEwpOwotKyAgICAgIGNvbnN0IHNpemVfdCBfX2xsZW4gPSBzdHJsZW4oX19vbGQpICsgMTsKLSsgICAgICBjaGFyKiBfX3NhdiA9IG5ldyBjaGFyW19fbGxlbl07Ci0rICAgICAgbWVtY3B5KF9fc2F2LCBfX29sZCwgX19sbGVuKTsKLSAgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfTV9uYW1lX3RpbWVwdW5jdCk7Ci0gICAgICAgY29uc3Qgc2l6ZV90IF9fbGVuID0gc3RyZnRpbWUoX19zLCBfX21heGxlbiwgX19mb3JtYXQsIF9fdG0pOwotLSAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKLS0gICAgICBmcmVlKF9fb2xkKTsKLSsgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfX3Nhdik7Ci0rICAgICAgZGVsZXRlIFtdIF9fc2F2OwotICNlbmRpZgotICAgICAgIC8vIE1ha2Ugc3VyZSBfX3MgaXMgbnVsbCB0ZXJtaW5hdGVkLgotICAgICAgIGlmIChfX2xlbiA9PSAwKQotQEAgLTIwNywxMSArMjEwLDE0IEBAIG5hbWVzcGFjZSBzdGQKLSAgICAgICBjb25zdCBzaXplX3QgX19sZW4gPSBfX3djc2Z0aW1lX2woX19zLCBfX21heGxlbiwgX19mb3JtYXQsIF9fdG0sCi0gCQkJCQlfTV9jX2xvY2FsZV90aW1lcHVuY3QpOwotICNlbHNlCi0tICAgICAgY2hhciogX19vbGQgPSBzdHJkdXAoc2V0bG9jYWxlKExDX0FMTCwgTlVMTCkpOwotKyAgICAgIGNoYXIqIF9fb2xkID0gc2V0bG9jYWxlKExDX0FMTCwgTlVMTCk7Ci0rICAgICAgY29uc3Qgc2l6ZV90IF9fbGxlbiA9IHN0cmxlbihfX29sZCkgKyAxOwotKyAgICAgIGNoYXIqIF9fc2F2ID0gbmV3IGNoYXJbX19sbGVuXTsKLSsgICAgICBtZW1jcHkoX19zYXYsIF9fb2xkLCBfX2xsZW4pOwotICAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9NX25hbWVfdGltZXB1bmN0KTsKLSAgICAgICBjb25zdCBzaXplX3QgX19sZW4gPSB3Y3NmdGltZShfX3MsIF9fbWF4bGVuLCBfX2Zvcm1hdCwgX190bSk7Ci0tICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOwotLSAgICAgIGZyZWUoX19vbGQpOwotKyAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fc2F2KTsKLSsgICAgICBkZWxldGUgW10gX19zYXY7Ci0gI2VuZGlmCi0gICAgICAgLy8gTWFrZSBzdXJlIF9fcyBpcyBudWxsIHRlcm1pbmF0ZWQuCi0gICAgICAgaWYgKF9fbGVuID09IDApCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oCi1pbmRleCBiYThlODU4Li4xNjY1ZGRlIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmgKLUBAIC01MCwxMiArNTAsMjEgQEAKLSAgICAgX190aW1lcHVuY3Q8X0NoYXJUPjo6X190aW1lcHVuY3QoX19jX2xvY2FsZSBfX2Nsb2MsIGNvbnN0IGNoYXIqIF9fcywKLSAJCQkJICAgICBzaXplX3QgX19yZWZzKQotICAgICA6IGZhY2V0KF9fcmVmcyksIF9NX2RhdGEoTlVMTCksIF9NX2NfbG9jYWxlX3RpbWVwdW5jdChOVUxMKSwKLS0gICAgX01fbmFtZV90aW1lcHVuY3QoX19zKQotKyAgICBfTV9uYW1lX3RpbWVwdW5jdChOVUxMKQotICAgICB7Ci0tICAgICAgY2hhciogX190bXAgPSBuZXcgY2hhcltzdGQ6OnN0cmxlbihfX3MpICsgMV07Ci0tICAgICAgc3RkOjpzdHJjcHkoX190bXAsIF9fcyk7Ci0rICAgICAgY29uc3Qgc2l6ZV90IF9fbGVuID0gc3RkOjpzdHJsZW4oX19zKSArIDE7Ci0rICAgICAgY2hhciogX190bXAgPSBuZXcgY2hhcltfX2xlbl07Ci0rICAgICAgc3RkOjptZW1jcHkoX190bXAsIF9fcywgX19sZW4pOwotICAgICAgIF9NX25hbWVfdGltZXB1bmN0ID0gX190bXA7Ci0tICAgICAgX01faW5pdGlhbGl6ZV90aW1lcHVuY3QoX19jbG9jKTsKLSsKLSsgICAgICB0cnkKLSsJeyBfTV9pbml0aWFsaXplX3RpbWVwdW5jdChfX2Nsb2MpOyB9Ci0rICAgICAgY2F0Y2goLi4uKQotKwl7Ci0rCSAgZGVsZXRlIFtdIF9NX25hbWVfdGltZXB1bmN0OwotKwkgIF9fdGhyb3dfZXhjZXB0aW9uX2FnYWluOwotKwl9Ci0rCi0gICAgIH0KLSAKLSAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KLS0tIAotMS43LjEwLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDA4LW1pc3NpbmctZXhlY2luZm9faC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDAwOC1taXNzaW5nLWV4ZWNpbmZvX2gucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4MjM4MDkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDA4LW1pc3NpbmctZXhlY2luZm9faC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gOWYyMTU4NDUxOTgxY2YwYTgwY2ZhYmRjNzlhZTMxYmI2OTc2YTgwMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjQ4OjEwICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDgvMzVdIG1pc3NpbmctZXhlY2luZm9faAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGJvZWhtLWdjL2luY2x1ZGUvZ2MuaCB8ICAgIDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2JvZWhtLWdjL2luY2x1ZGUvZ2MuaCBiL2JvZWhtLWdjL2luY2x1ZGUvZ2MuaAotaW5kZXggYzUxZTAxNy4uYTdiYThkYyAxMDA2NDQKLS0tLSBhL2JvZWhtLWdjL2luY2x1ZGUvZ2MuaAotKysrIGIvYm9laG0tZ2MvaW5jbHVkZS9nYy5oCi1AQCAtNTAzLDcgKzUwMyw3IEBAIEdDX0FQSSBHQ19QVFIgR0NfbWFsbG9jX2F0b21pY19pZ25vcmVfb2ZmX3BhZ2UgR0NfUFJPVE8oKHNpemVfdCBsYikpOwotICNpZiBkZWZpbmVkKF9fbGludXhfXykgfHwgZGVmaW5lZChfX0dMSUJDX18pCi0gIyBpbmNsdWRlIDxmZWF0dXJlcy5oPgotICMgaWYgKF9fR0xJQkNfXyA9PSAyICYmIF9fR0xJQkNfTUlOT1JfXyA+PSAxIHx8IF9fR0xJQkNfXyA+IDIpIFwKLS0gICAgICYmICFkZWZpbmVkKF9faWE2NF9fKQotKyAgICAgJiYgIWRlZmluZWQoX19pYTY0X18pICYmICFkZWZpbmVkKF9fVUNMSUJDX18pCi0gIyAgIGlmbmRlZiBHQ19IQVZFX0JVSUxUSU5fQkFDS1RSQUNFCi0gIyAgICAgZGVmaW5lIEdDX0hBVkVfQlVJTFRJTl9CQUNLVFJBQ0UKLSAjICAgZW5kaWYKLS0tIAotMS43LjEwLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDA5LWM5OS1zbnByaW50Zi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDAwOS1jOTktc25wcmludGYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxNjg3NzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDA5LWM5OS1zbnByaW50Zi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gZTM5M2UwNzZmMWFiODJkMjVlMWFhMDRkNmVkZWEyN2I0MWQzZWIwNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjQ5OjAzICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDkvMzVdIGM5OS1zbnByaW50ZgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGxpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2NzdGRpbyB8ICAgIDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2NzdGRpbyBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2NzdGRpbwotaW5kZXggZTg1YmQ4My4uNmFmODM5YSAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2NzdGRpbwotKysrIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvY19zdGQvY3N0ZGlvCi1AQCAtMTM5LDcgKzEzOSw3IEBAIG5hbWVzcGFjZSBzdGQKLSAgIHVzaW5nIDo6dnNwcmludGY7Ci0gfSAvLyBuYW1lc3BhY2Ugc3RkCi0gCi0tI2lmIF9HTElCQ1hYX1VTRV9DOTkKLSsjaWYgX0dMSUJDWFhfVVNFX0M5OSB8fCBkZWZpbmVkKF9fVUNMSUJDX18pCi0gCi0gI3VuZGVmIHNucHJpbnRmCi0gI3VuZGVmIHZmc2NhbmYKLS0tIAotMS43LjEwLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDEwLWM5OS1jb21wbGV4LXVnbHktaGFjay5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDAxMC1jOTktY29tcGxleC11Z2x5LWhhY2sucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2Mjg1NzEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDEwLWM5OS1jb21wbGV4LXVnbHktaGFjay5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLUZyb20gNzNmNjlkODA2ZTJjOTU2MWE1NDk5NTIyMzQzMWExMDc2Y2ZkNjE2NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjQ5OjU3ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTAvMzVdIGM5OS1jb21wbGV4LXVnbHktaGFjawotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotLS0tCi0gbGlic3RkYysrLXYzL2NvbmZpZ3VyZSB8ICAgIDMgKysrCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZSBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUKLWluZGV4IGM1N2E3NTEuLmExMzMzZTIgMTAwNzU1Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlndXJlCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlndXJlCi1AQCAtMTg3MzQsNiArMTg3MzQsOSBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgSVNPIEM5OSBzdXBwb3J0IHRvIFRSMSBpbiA8Y29tcGxleC5oPi4uLiAiID4mNjsgfQotICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotICNpbmNsdWRlIDxjb21wbGV4Lmg+Ci0rI2lmZGVmIF9fVUNMSUJDX18KLSsjZXJyb3IgdWdseSBoYWNrIHRvIG1ha2Ugc3VyZSBjb25maWd1cmUgdGVzdCBmYWlscyBoZXJlIGZvciBjcm9zcyB1bnRpbCB1Q2xpYmMgc3VwcG9ydHMgdGhlIGNvbXBsZXggZnVuY3MKLSsjZW5kaWYKLSBpbnQKLSBtYWluICgpCi0gewotLS0gCi0xLjcuMTAuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwMTEtaW5kZXhfbWFjcm8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwMTEtaW5kZXhfbWFjcm8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlZTc5YjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDExLWluZGV4X21hY3JvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotRnJvbSBiMDM3OTUzZTQwMzEyYjQ1YWI4NGVkMGEzYWQ4ODJiYjVlNDEzMTAxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6NTE6MDIgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxMS8zNV0gaW5kZXhfbWFjcm8KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBsaWJzdGRjKystdjMvaW5jbHVkZS9leHQvcm9wZSAgICAgICB8ICAgIDMgKysrCi0gbGlic3RkYysrLXYzL2luY2x1ZGUvZXh0L3JvcGVpbXBsLmggfCAgICAzICsrKwotIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvaW5jbHVkZS9leHQvcm9wZSBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL2V4dC9yb3BlCi1pbmRleCAzOGViMWU4Li4xNThkMjFhIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2luY2x1ZGUvZXh0L3JvcGUKLSsrKyBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL2V4dC9yb3BlCi1AQCAtNTUsNiArNTUsOSBAQAotICNpbmNsdWRlIDxiaXRzL2d0aHIuaD4KLSAjaW5jbHVkZSA8dHIxL2Z1bmN0aW9uYWw+Ci0gCi0rLyogY29wZSB3LyBpbmRleCBkZWZpbmVkIGFzIG1hY3JvLCBTdVN2MyBwcm9wb3NhbCAqLwotKyN1bmRlZiBpbmRleAotKwotICMgaWZkZWYgX19HQwotICMgICBkZWZpbmUgX19HQ19DT05TVCBjb25zdAotICMgZWxzZQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2V4dC9yb3BlaW1wbC5oIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvZXh0L3JvcGVpbXBsLmgKLWluZGV4IGQ3YjVjYmQuLmI5YjNhY2IgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvaW5jbHVkZS9leHQvcm9wZWltcGwuaAotKysrIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvZXh0L3JvcGVpbXBsLmgKLUBAIC00OCw2ICs0OCw5IEBACi0gI2luY2x1ZGUgPGV4dC9tZW1vcnk+IC8vIEZvciB1bmluaXRpYWxpemVkX2NvcHlfbgotICNpbmNsdWRlIDxleHQvbnVtZXJpYz4gLy8gRm9yIHBvd2VyCi0gCi0rLyogY29wZSB3LyBpbmRleCBkZWZpbmVkIGFzIG1hY3JvLCBTdVN2MyBwcm9wb3NhbCAqLwotKyN1bmRlZiBpbmRleAotKwotIG5hbWVzcGFjZSBfX2dudV9jeHggX0dMSUJDWFhfVklTSUJJTElUWShkZWZhdWx0KQotIHsKLSBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgotLS0gCi0xLjcuMTAuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwMTMtbGlic3RkYy1uYW1lc3BhY2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwMTMtbGlic3RkYy1uYW1lc3BhY2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhM2VmZGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDEzLWxpYnN0ZGMtbmFtZXNwYWNlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotRnJvbSAxMDRlNGQ2NjIwOGYyNzI2YjE0ZDJmNWVlYmNlOTA3MDBjYmM4M2M4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6NTQ6MDIgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxMy8zNV0gbGlic3RkYysrLW5hbWVzcGFjZQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmggfCAgICA0ICsrKy0KLSBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmggICAgIHwgICAgNCArKystCi0gMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaAotaW5kZXggMDY3NjU3YS4uZGQ3NmE2YyAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmgKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmgKLUBAIC0zMiw3ICszMiw4IEBACi0gLy8KLSAKLSAvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotLQotK25hbWVzcGFjZSBzdGQKLSt7Ci0gI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0gI3dhcm5pbmcgZml4IHByb3RvdHlwZXMgZm9yICp0ZXh0ZG9tYWluIGZ1bmNzCi0gI2VuZGlmCi1AQCAtMTE2LDMgKzExNyw0IEBACi0gCSAgIHRoaXMtPl9TX2NyZWF0ZV9jX2xvY2FsZSh0aGlzLT5fTV9jX2xvY2FsZV9tZXNzYWdlcywgX19zKTsKLSAJIH0KLSAgICAgIH0KLSt9Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oCi1pbmRleCAxNjY1ZGRlLi45MDVjNDMzIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmgKLUBAIC0zMyw3ICszMyw4IEBACi0gLy8KLSAKLSAvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotLQotK25hbWVzcGFjZSBzdGQKLSt7Ci0gICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+Ci0gICAgIF9fdGltZXB1bmN0PF9DaGFyVD46Ol9fdGltZXB1bmN0KHNpemVfdCBfX3JlZnMpCi0gICAgIDogZmFjZXQoX19yZWZzKSwgX01fZGF0YShOVUxMKSwgX01fY19sb2NhbGVfdGltZXB1bmN0KE5VTEwpLAotQEAgLTc1LDMgKzc2LDQgQEAKLSAgICAgICBkZWxldGUgX01fZGF0YTsKLSAgICAgICBfU19kZXN0cm95X2NfbG9jYWxlKF9NX2NfbG9jYWxlX3RpbWVwdW5jdCk7Ci0gICAgIH0KLSt9Ci0tLSAKLTEuNy4xMC40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDAxNC1zaC1wcjI0ODM2LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDE0LXNoLXByMjQ4MzYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiOGZkNTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDE0LXNoLXByMjQ4MzYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1Gcm9tIGVkYzlhY2IxODE4MTBmMjM0YjZiOWY3ZDI4MjBiMGU0ZjZhMWVlYWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODo1NDo0OCArMDQwMAotU3ViamVjdDogW1BBVENIIDE0LzM1XSBzaC1wcjI0ODM2Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1odHRwOi8vc291cmNlZm9yZ2UubmV0L21haWxhcmNoaXZlL2ZvcnVtLnBocD90aHJlYWRfaWQ9ODk1OTMwNCZmb3J1bV9pZD01MzQ4Ci1odHRwOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI0ODM2Ci0tLS0KLSBnY2MvY29uZmlndXJlICAgIHwgICAgMiArLQotIGdjYy9jb25maWd1cmUuYWMgfCAgICAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQotaW5kZXggZTEyYTE4MC4uMTM1YmJmNSAxMDA3NTUKLS0tLSBhL2djYy9jb25maWd1cmUKLSsrKyBiL2djYy9jb25maWd1cmUKLUBAIC0yMzM3OCw3ICsyMzM3OCw3IEBAIGZvbzoJLmxvbmcJMjUKLSAJdGxzX2ZpcnN0X21pbm9yPTE0Ci0gCXRsc19hc19vcHQ9Ii1tNjQgLUFlc2FtZSAtLWZhdGFsLXdhcm5pbmdzIgotIAk7OwotLSAgc2gtKi0qIHwgc2hbMzRdLSotKikKLSsgIHNoLSotKiB8IHNoWzM0XSotKi0qKQotICAgICBjb25mdGVzdF9zPScKLSAJLnNlY3Rpb24gIi50ZGF0YSIsImF3VCIsQHByb2diaXRzCi0gZm9vOgkubG9uZwkyNQotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCi1pbmRleCBlYmEzNTc3Li42MzYzYTIxIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYwotKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYwotQEAgLTMxNDEsNyArMzE0MSw3IEBAIGZvbzoJLmxvbmcJMjUKLSAJdGxzX2ZpcnN0X21pbm9yPTE0Ci0gCXRsc19hc19vcHQ9Ii1tNjQgLUFlc2FtZSAtLWZhdGFsLXdhcm5pbmdzIgotIAk7OwotLSAgc2gtKi0qIHwgc2hbMzRdLSotKikKLSsgIHNoLSotKiB8IHNoWzM0XSotKi0qKQotICAgICBjb25mdGVzdF9zPScKLSAJLnNlY3Rpb24gIi50ZGF0YSIsImF3VCIsQHByb2diaXRzCi0gZm9vOgkubG9uZwkyNQotLS0gCi0xLjcuMTAuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwMTUtYXJtLVVzZS1UQVJHRVRfRU5ESUFOX09QVElPTi1mb3ItZGV0ZXJtaW5pbmctTVVMVElMSS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDAxNS1hcm0tVXNlLVRBUkdFVF9FTkRJQU5fT1BUSU9OLWZvci1kZXRlcm1pbmluZy1NVUxUSUxJLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzN2M0NmZjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDAxNS1hcm0tVXNlLVRBUkdFVF9FTkRJQU5fT1BUSU9OLWZvci1kZXRlcm1pbmluZy1NVUxUSUxJLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotRnJvbSA1MGU1MzY2MDA1YjBmNmFmMjczNzhlMmE1YzNjYjlmOTkzNmE3ZTYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6NTg6MzYgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxNS8zNV0gYXJtOiBVc2UgVEFSR0VUX0VORElBTl9PUFRJT04gZm9yIGRldGVybWluaW5nCi0gTVVMVElMSUJfREVGQVVMVFMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBnY2MvY29uZmlnL2FybS9saW51eC1lbGYuaCB8ICAgIDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IGdjYy00LjkuMi9nY2MvY29uZmlnL2FybS9jb2ZmLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtNC45LjIub3JpZy9nY2MvY29uZmlnL2FybS9jb2ZmLmgKLSsrKyBnY2MtNC45LjIvZ2NjL2NvbmZpZy9hcm0vY29mZi5oCi1AQCAtMzIsOCArMzIsMTEgQEAKLSAjZGVmaW5lIFRBUkdFVF9ERUZBVUxUIChNQVNLX0FQQ1NfRlJBTUUpCi0gCi0gI2lmbmRlZiBNVUxUSUxJQl9ERUZBVUxUUwotKyNpZm5kZWYgVEFSR0VUX0VORElBTl9PUFRJT04KLSsjZGVmaW5lIFRBUkdFVF9FTkRJQU5fT1BUSU9OICJtbGl0dGxlLWVuZGlhbiIKLSsjZW5kaWYKLSAjZGVmaW5lIE1VTFRJTElCX0RFRkFVTFRTIFwKLS0gIHsgIm1hcm0iLCAibWxpdHRsZS1lbmRpYW4iLCAibWZsb2F0LWFiaT1zb2Z0IiwgIm1uby10aHVtYi1pbnRlcndvcmsiIH0KLSsgIHsgIm1hcm0iLCBUQVJHRVRfRU5ESUFOX09QVElPTiwgIm1mbG9hdC1hYmk9c29mdCIsICJtbm8tdGh1bWItaW50ZXJ3b3JrIiB9Ci0gI2VuZGlmCi0gDAotIC8qIFRoaXMgaXMgQ09GRiwgYnV0IHByZWZlciBzdGFicy4gICovCi1JbmRleDogZ2NjLTQuOS4yL2djYy9jb25maWcvYXJtL2VsZi5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2NjLTQuOS4yLm9yaWcvZ2NjL2NvbmZpZy9hcm0vZWxmLmgKLSsrKyBnY2MtNC45LjIvZ2NjL2NvbmZpZy9hcm0vZWxmLmgKLUBAIC0xMTYsOCArMTE2LDExIEBACi0gI2VuZGlmCi0gCi0gI2lmbmRlZiBNVUxUSUxJQl9ERUZBVUxUUwotKyNpZm5kZWYgVEFSR0VUX0VORElBTl9PUFRJT04KLSsjZGVmaW5lIFRBUkdFVF9FTkRJQU5fT1BUSU9OICJtbGl0dGxlLWVuZGlhbiIKLSsjZW5kaWYKLSAjZGVmaW5lIE1VTFRJTElCX0RFRkFVTFRTIFwKLS0gIHsgIm1hcm0iLCAibWxpdHRsZS1lbmRpYW4iLCAibWZsb2F0LWFiaT1zb2Z0IiwgIm1uby10aHVtYi1pbnRlcndvcmsiLCAiZm5vLWxlYWRpbmctdW5kZXJzY29yZSIgfQotKyAgeyAibWFybSIsIFRBUkdFVF9FTkRJQU5fT1BUSU9OLCAibWZsb2F0LWFiaT1zb2Z0IiwgIm1uby10aHVtYi1pbnRlcndvcmsiLCAiZm5vLWxlYWRpbmctdW5kZXJzY29yZSIgfQotICNlbmRpZgotIAwKLSAjZGVmaW5lIFRBUkdFVF9BU01fRklMRV9TVEFSVF9BUFBfT0ZGIHRydWUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDAxNi1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDAxNi1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDc1ZWY5Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwMTYtZ2NjLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOTAgKzAsMCBAQAotRnJvbSAxNjAzOTdlZjNjMzMzMTA5OWFmMDI4ZjFiOGQzZTA4NWIwN2Q4OGFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6NTk6MDAgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxNi8zNV0gZ2NjOiBwb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZGlzdHJpYnV0aW9uOiBjb2Rlc291cmNlcnldCi0tLS0KLSBnY2MvTWFrZWZpbGUuaW4gICAgIHwgICAgMiArLQotIGdjYy9jb21tb24ub3B0ICAgICAgfCAgICA0ICsrKysKLSBnY2MvY29uZmlnLmluICAgICAgIHwgICAgNiArKysrKysKLSBnY2MvY29uZmlndXJlICAgICAgIHwgICAyMCArKysrKysrKysrKysrKysrKystLQotIGdjYy9jb25maWd1cmUuYWMgICAgfCAgIDEwICsrKysrKysrKysKLSBnY2MvZG9jL2ludm9rZS50ZXhpIHwgICAgOSArKysrKysrKysKLSBnY2MvZ2NjLmMgICAgICAgICAgIHwgICAgMiArKwotIGdjYy9pbmNwYXRoLmMgICAgICAgfCAgIDE5ICsrKysrKysrKysrKysrKysrKysKLSA4IGZpbGVzIGNoYW5nZWQsIDY5IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnY2MtNC45LTIwMTQwMzE2L2djYy9jb21tb24ub3B0Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2NjLTQuOS0yMDE0MDMxNi5vcmlnL2djYy9jb21tb24ub3B0Ci0rKysgZ2NjLTQuOS0yMDE0MDMxNi9nY2MvY29tbW9uLm9wdAotQEAgLTYwMyw2ICs2MDMsMTAgQEAgV3BlZGFudGljCi0gQ29tbW9uIFZhcihwZWRhbnRpYykgV2FybmluZwotIElzc3VlIHdhcm5pbmdzIG5lZWRlZCBmb3Igc3RyaWN0IGNvbXBsaWFuY2UgdG8gdGhlIHN0YW5kYXJkCi0gCi0rV3BvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKLStDb21tb24gVmFyKGZsYWdfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcykgSW5pdCgxKSBXYXJuaW5nCi0rV2FybiBmb3IgLUkgYW5kIC1MIG9wdGlvbnMgdXNpbmcgc3lzdGVtIGRpcmVjdG9yaWVzIGlmIGNyb3NzIGNvbXBpbGluZwotKwotIFdzaGFkb3cKLSBDb21tb24gVmFyKHdhcm5fc2hhZG93KSBXYXJuaW5nCi0gV2FybiB3aGVuIG9uZSBsb2NhbCB2YXJpYWJsZSBzaGFkb3dzIGFub3RoZXIKLUluZGV4OiBnY2MtNC45LTIwMTQwMzE2L2djYy9jb25maWcuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtNC45LTIwMTQwMzE2Lm9yaWcvZ2NjL2NvbmZpZy5pbgotKysrIGdjYy00LjktMjAxNDAzMTYvZ2NjL2NvbmZpZy5pbgotQEAgLTEzOCw2ICsxMzgsMTIgQEAKLSAjZW5kaWYKLSAKLSAKLSsvKiBEZWZpbmUgdG8gd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gaGVhZGVyIGRpcmVjdG9yaWVzICovCi0rI2lmbmRlZiBVU0VEX0ZPUl9UQVJHRVQKLSsjdW5kZWYgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMKLSsjZW5kaWYKLSsKLSsKLSAvKiBEZWZpbmUgaWYgeW91IHdhbnQgYWxsIG9wZXJhdGlvbnMgb24gUlRMICh0aGUgYmFzaWMgZGF0YSBzdHJ1Y3R1cmUgb2YgdGhlCi0gICAgb3B0aW1pemVyIGFuZCBiYWNrIGVuZCkgdG8gYmUgY2hlY2tlZCBmb3IgZHluYW1pYyB0eXBlIHNhZmV0eSBhdCBydW50aW1lLgotICAgIFRoaXMgaXMgcXVpdGUgZXhwZW5zaXZlLiAqLwotSW5kZXg6IGdjYy00LjktMjAxNDAzMTYvZ2NjL2NvbmZpZ3VyZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy00LjktMjAxNDAzMTYub3JpZy9nY2MvY29uZmlndXJlCi0rKysgZ2NjLTQuOS0yMDE0MDMxNi9nY2MvY29uZmlndXJlCi1AQCAtOTI4LDYgKzkyOCw3IEBAIHdpdGhfc3lzdGVtX3psaWIKLSBlbmFibGVfbWFpbnRhaW5lcl9tb2RlCi0gZW5hYmxlX2xpbmtfbXV0ZXgKLSBlbmFibGVfdmVyc2lvbl9zcGVjaWZpY19ydW50aW1lX2xpYnMKLStlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcwotIGVuYWJsZV9wbHVnaW4KLSBlbmFibGVfaG9zdF9zaGFyZWQKLSBlbmFibGVfbGlicXVhZG1hdGhfc3VwcG9ydAotQEAgLTE2NDgsNiArMTY0OSw4IEBAIE9wdGlvbmFsIEZlYXR1cmVzOgotICAgLS1lbmFibGUtdmVyc2lvbi1zcGVjaWZpYy1ydW50aW1lLWxpYnMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZnkgdGhhdCBydW50aW1lIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBhIGNvbXBpbGVyLXNwZWNpZmljIGRpcmVjdG9yeQotKyAgLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gaGVhZGVyIGRpcmVjdG9yaWVzCi0gICAtLWVuYWJsZS1wbHVnaW4gICAgICAgICBlbmFibGUgcGx1Z2luIHN1cHBvcnQKLSAgIC0tZW5hYmxlLWhvc3Qtc2hhcmVkICAgIGJ1aWxkIGhvc3QgY29kZSBhcyBzaGFyZWQgbGlicmFyaWVzCi0gICAtLWRpc2FibGUtbGlicXVhZG1hdGgtc3VwcG9ydAotQEAgLTI3NzAyLDYgKzI3NzA1LDE5IEBAIGlmIHRlc3QgIiR7ZW5hYmxlX3ZlcnNpb25fc3BlY2lmaWNfcnVudGkKLSBmaQotIAotIAotKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIHdhcyBnaXZlbi4KLStpZiB0ZXN0ICIke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgIGVuYWJsZXZhbD0kZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM7Ci0rZWxzZQotKyAgZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM9bm8KLStmaQotKwotK2lmIHRlc3QgIngke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzfSIgPSAieHllcyI7IHRoZW4KLSsKLSskYXNfZWNobyAiI2RlZmluZSBFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUyAxIiA+PmNvbmZkZWZzLmgKLSsKLStmaQotKwotICMgU3Vic3RpdHV0ZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcwotIAotIAotSW5kZXg6IGdjYy00LjktMjAxNDAzMTYvZ2NjL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy00LjktMjAxNDAzMTYub3JpZy9nY2MvY29uZmlndXJlLmFjCi0rKysgZ2NjLTQuOS0yMDE0MDMxNi9nY2MvY29uZmlndXJlLmFjCi1AQCAtNTM2Niw2ICs1MzY2LDE2IEBAIEFDX0FSR19FTkFCTEUodmVyc2lvbi1zcGVjaWZpYy1ydW50aW1lLWwKLSAgICAgICAgICAgICAgICAgW3NwZWNpZnkgdGhhdCBydW50aW1lIGxpYnJhcmllcyBzaG91bGQgYmUKLSAgICAgICAgICAgICAgICAgIGluc3RhbGxlZCBpbiBhIGNvbXBpbGVyLXNwZWNpZmljIGRpcmVjdG9yeV0pXSkKLSAKLStBQ19BUkdfRU5BQkxFKFtwb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzXSwKLSsgICAgICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXNdLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gaGVhZGVyIGRpcmVjdG9yaWVzXSksLAotKyAgICAgICAgICAgICBbZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM9bm9dKQotK2lmIHRlc3QgIngke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzfSIgPSAieHllcyI7IHRoZW4KLSsgIEFDX0RFRklORShbRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVNdLAotKyAgICAgICAgICAgWzFdLAotKyAgICAgICAgICAgW0RlZmluZSB0byB3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBoZWFkZXIgZGlyZWN0b3JpZXNdKQotK2ZpCi0rCi0gIyBTdWJzdGl0dXRlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzCi0gQUNfU1VCU1Qoc3ViZGlycykKLSBBQ19TVUJTVChzcmNkaXIpCi1JbmRleDogZ2NjLTQuOS0yMDE0MDMxNi9nY2MvZG9jL2ludm9rZS50ZXhpCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2NjLTQuOS0yMDE0MDMxNi5vcmlnL2djYy9kb2MvaW52b2tlLnRleGkKLSsrKyBnY2MtNC45LTIwMTQwMzE2L2djYy9kb2MvaW52b2tlLnRleGkKLUBAIC0yNjAsNiArMjYwLDcgQEAgT2JqZWN0aXZlLUMgYW5kIE9iamVjdGl2ZS1DKysgRGlhbGVjdHN9LgotIC1Xb3Zlcmxlbmd0aC1zdHJpbmdzICAtV3BhY2tlZCAgLVdwYWNrZWQtYml0ZmllbGQtY29tcGF0ICAtV3BhZGRlZCBAZ29sCi0gLVdwYXJlbnRoZXNlcyAgLVdwZWRhbnRpYy1tcy1mb3JtYXQgLVduby1wZWRhbnRpYy1tcy1mb3JtYXQgQGdvbAotIC1XcG9pbnRlci1hcml0aCAgLVduby1wb2ludGVyLXRvLWludC1jYXN0IEBnb2wKLSstV25vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMgQGdvbAotIC1XcmVkdW5kYW50LWRlY2xzICAtV25vLXJldHVybi1sb2NhbC1hZGRyIEBnb2wKLSAtV3JldHVybi10eXBlICAtV3NlcXVlbmNlLXBvaW50ICAtV3NoYWRvdyBAZ29sCi0gLVdzaWduLWNvbXBhcmUgIC1Xc2lnbi1jb252ZXJzaW9uIC1XZmxvYXQtY29udmVyc2lvbiBAZ29sCi1AQCAtNDIzMCw2ICs0MjMxLDE0IEBAIGhlYWRlcnMtLS1mb3IgdGhhdCwgQG9wdGlvbnstV3Vua25vd24tcHIKLSAgZm9yIG1vc3QgdGFyZ2V0cywgaXQgaXMgbWFkZSB1cCBvZiBjb2RlIGFuZCB0aHVzIHJlcXVpcmVzIHRoZSBzdGFjawotICB0byBiZSBtYWRlIGV4ZWN1dGFibGUgaW4gb3JkZXIgZm9yIHRoZSBwcm9ncmFtIHRvIHdvcmsgcHJvcGVybHkuCi0gCi0rQGl0ZW0gLVduby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCi0rQG9waW5kZXggV25vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKLStEbyBub3Qgd2FybiBmb3IgQG9wdGlvbnstSX0gb3IgQG9wdGlvbnstTH0gb3B0aW9ucyB1c2luZyBzeXN0ZW0KLStkaXJlY3RvcmllcyBzdWNoIGFzIEBmaWxley91c3IvaW5jbHVkZX0gd2hlbiBjcm9zcyBjb21waWxpbmcuICBUaGlzCi0rb3B0aW9uIGlzIGludGVuZGVkIGZvciB1c2UgaW4gY2hyb290IGVudmlyb25tZW50cyB3aGVuIHN1Y2gKLStkaXJlY3RvcmllcyBjb250YWluIHRoZSBjb3JyZWN0IGhlYWRlcnMgYW5kIGxpYnJhcmllcyBmb3IgdGhlIHRhcmdldAotK3N5c3RlbSByYXRoZXIgdGhhbiB0aGUgaG9zdC4KLSsKLSBAaXRlbSAtV2Zsb2F0LWVxdWFsCi0gQG9waW5kZXggV2Zsb2F0LWVxdWFsCi0gQG9waW5kZXggV25vLWZsb2F0LWVxdWFsCi1JbmRleDogZ2NjLTQuOS0yMDE0MDMxNi9nY2MvZ2NjLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtNC45LTIwMTQwMzE2Lm9yaWcvZ2NjL2djYy5jCi0rKysgZ2NjLTQuOS0yMDE0MDMxNi9nY2MvZ2NjLmMKLUBAIC03NjQsNiArNzY0LDggQEAgcHJvcGVyIHBvc2l0aW9uIGFtb25nIHRoZSBvdGhlciBvdXRwdXQgZgotICAgICIle2Z1c2UtbGQ9KjotZnVzZS1sZD0lKn1cCi0gICAgICVYICV7byp9ICV7ZSp9ICV7Tn0gJXtufSAle3J9XAotICAgICAle3N9ICV7dH0gJXt1Kn0gJXt6fSAle1p9ICV7IW5vc3RkbGliOiV7IW5vc3RhcnRmaWxlczolU319ICIgVlRBQkxFX1ZFUklGSUNBVElPTl9TUEVDICIgXAotKyAgICAle1duby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzOi0tbm8tcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc31cCi0rICAgICV7V2Vycm9yPXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXM6LS1lcnJvci1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzfVwKLSAgICAgJXtzdGF0aWM6fSAle0wqfSAlKG1md3JhcCkgJShsaW5rX2xpYmdjYykgIiBTQU5JVElaRVJfRUFSTFlfU1BFQyAiICVvXAotICAgICAle2ZvcGVubXB8ZnRyZWUtcGFyYWxsZWxpemUtbG9vcHM9KjolOmluY2x1ZGUobGliZ29tcC5zcGVjKSUobGlua19nb21wKX1cCi0gICAgICV7ZmdudS10bTolOmluY2x1ZGUobGliaXRtLnNwZWMpJShsaW5rX2l0bSl9XAotSW5kZXg6IGdjYy00LjktMjAxNDAzMTYvZ2NjL2luY3BhdGguYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy00LjktMjAxNDAzMTYub3JpZy9nY2MvaW5jcGF0aC5jCi0rKysgZ2NjLTQuOS0yMDE0MDMxNi9nY2MvaW5jcGF0aC5jCi1AQCAtMjgsNiArMjgsNyBAQAotICNpbmNsdWRlICJpbnRsLmgiCi0gI2luY2x1ZGUgImluY3BhdGguaCIKLSAjaW5jbHVkZSAiY3BwZGVmYXVsdC5oIgotKyNpbmNsdWRlICJkaWFnbm9zdGljLWNvcmUuaCIKLSAKLSAvKiBNaWNyb3NvZnQgV2luZG93cyBkb2VzIG5vdCBuYXRpdmVseSBzdXBwb3J0IGlub2Rlcy4KLSAgICBWTVMgaGFzIG5vbi1udW1lcmljIGlub2Rlcy4gICovCi1AQCAtMzgyLDYgKzM4MywyNCBAQCBtZXJnZV9pbmNsdWRlX2NoYWlucyAoY29uc3QgY2hhciAqc3lzcm9vCi0gCX0KLSAgICAgICBmcHJpbnRmIChzdGRlcnIsIF8oIkVuZCBvZiBzZWFyY2ggbGlzdC5cbiIpKTsKLSAgICAgfQotKwotKyNpZmRlZiBFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUwotKyAgaWYgKGZsYWdfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcykKLSsgICAgewotKyAgICAgICBzdHJ1Y3QgY3BwX2RpciAqcDsKLSsKLSsgICAgICAgZm9yIChwID0gaGVhZHNbUVVPVEVdOyBwOyBwID0gcC0+bmV4dCkKLSsgICAgICAgICB7Ci0rICAgICAgICAgIGlmICgoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL2luY2x1ZGUiLCAxMikpCi0rICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL2xvY2FsL2luY2x1ZGUiLCAxOCkpCi0rICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL1gxMVI2L2luY2x1ZGUiLCAxOCkpKQotKyAgICAgICAgICAgIHdhcm5pbmcgKE9QVF9XcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcywKLSsgICAgICAgICAgICAgICAgICAgICAiaW5jbHVkZSBsb2NhdGlvbiBcIiVzXCIgaXMgdW5zYWZlIGZvciAiCi0rICAgICAgICAgICAgICAgICAgICAgImNyb3NzLWNvbXBpbGF0aW9uIiwKLSsgICAgICAgICAgICAgICAgICAgICBwLT5uYW1lKTsKLSsgICAgICAgICB9Ci0rICAgIH0KLSsjZW5kaWYKLSB9Ci0gCi0gLyogVXNlIGdpdmVuIC1JIHBhdGhzIGZvciAjaW5jbHVkZSAiLi4uIiBidXQgbm90ICNpbmNsdWRlIDwuLi4+LCBhbmQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDAxNy1nY2MtcG9pc29uLWRpci1leHRlbmQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwMTctZ2NjLXBvaXNvbi1kaXItZXh0ZW5kLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTgxZWZkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDAxNy1nY2MtcG9pc29uLWRpci1leHRlbmQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1Gcm9tIGU5OWM5Yzk3MjY2ZDZkM2U4Y2FjNzk4YWE5MTQwODI1MGM0ZDYwY2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOTowMDozNCArMDQwMAotU3ViamVjdDogW1BBVENIIDE3LzM1XSBnY2MtcG9pc29uLWRpci1leHRlbmQKLQotQWRkIC9zdy9pbmNsdWRlIGFuZCAvb3B0L2luY2x1ZGUgYmFzZWQgb24gdGhlIG9yaWdpbmFsCi16ZWNrZS1uby1ob3N0LWluY2x1ZGVzLnBhdGNoIHBhdGNoLiAgVGhlIG9yaWdpbmFsIHBhdGNoIGNoZWNrZWQgZm9yCi0vdXNyL2luY2x1ZGUsIC9zdy9pbmNsdWRlIGFuZCAvb3B0L2luY2x1ZGUgYW5kIHRoZW4gdHJpZ2dlcmVkIGEgZmFpbHVyZSBhbmQKLWFib3J0ZWQuCi0KLUluc3RlYWQsIHdlIGFkZCB0aGUgdHdvIG1pc3NpbmcgaXRlbXMgdG8gdGhlIGN1cnJlbnQgc2Nhbi4gIElmIHRoZSB1c2VyCi13YW50cyB0aGlzIHRvIGJlIGEgZmFpbHVyZSwgdGhleSBjYW4gYWRkICItV2Vycm9yPXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMiLgotCi1TaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGdjYy9pbmNwYXRoLmMgfCAgICA0ICsrKy0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvaW5jcGF0aC5jIGIvZ2NjL2luY3BhdGguYwotaW5kZXggY2Q0MWM3OC4uZWFjNGE5MiAxMDA2NDQKLS0tLSBhL2djYy9pbmNwYXRoLmMKLSsrKyBiL2djYy9pbmNwYXRoLmMKLUBAIC0zOTMsNyArMzkzLDkgQEAgbWVyZ2VfaW5jbHVkZV9jaGFpbnMgKGNvbnN0IGNoYXIgKnN5c3Jvb3QsIGNwcF9yZWFkZXIgKnBmaWxlLCBpbnQgdmVyYm9zZSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgIGlmICgoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL2luY2x1ZGUiLCAxMikpCi0gICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL2xvY2FsL2luY2x1ZGUiLCAxOCkpCi0tICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL1gxMVI2L2luY2x1ZGUiLCAxOCkpKQotKyAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL3Vzci9YMTFSNi9pbmNsdWRlIiwgMTgpKQotKyAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL3N3L2luY2x1ZGUiLCAxMSkpCi0rICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvb3B0L2luY2x1ZGUiLCAxMikpKQotICAgICAgICAgICAgIHdhcm5pbmcgKE9QVF9XcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcywKLSAgICAgICAgICAgICAgICAgICAgICAiaW5jbHVkZSBsb2NhdGlvbiBcIiVzXCIgaXMgdW5zYWZlIGZvciAiCi0gICAgICAgICAgICAgICAgICAgICAgImNyb3NzLWNvbXBpbGF0aW9uIiwKLS0tIAotMS43LjEwLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDE4LWdjYy00LjMuMy1TWVNST09UX0NGTEFHU19GT1JfVEFSR0VULnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDE4LWdjYy00LjMuMy1TWVNST09UX0NGTEFHU19GT1JfVEFSR0VULnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMjhjYWZkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDAxOC1nY2MtNC4zLjMtU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLUZyb20gNTYyMDdmYTI5MjNlOGVkZjc3NGU5OGZmYWM4MjY2NjA5MTA3NmJlMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjA4OjMxICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTgvMzVdIGdjYy00LjMuMzogU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVAotCi1CZWZvcmUgY29tbWl0dGluZywgSSBub3RpY2VkIHRoYXQgUFIvMzIxNjEgd2FzIG1hcmtlZCBhcyBhIGR1cCBvZiBQUi8zMjAwOSwgYnV0IG15IHByZXZpb3VzIHBhdGNoIGRpZCBub3QgZml4IGl0LgotCi1UaGlzIGFsdGVybmF0aXZlIHBhdGNoIGlzIGJldHRlciBiZWNhdXNlIGl0IGxldHMgeW91IGp1c3QgdXNlIENGTEFHU19GT1JfVEFSR0VUIHRvIHNldCB0aGUgY29tcGlsYXRpb24gZmxhZ3MgZm9yIGxpYmdjYy4gU2luY2UgYm9vdHN0cmFwcGVkIHRhcmdldCBsaWJyYXJpZXMgYXJlIG5ldmVyIGNvbXBpbGVkIHdpdGggdGhlIG5hdGl2ZSBjb21waWxlciwgaXQgbWFrZXMgbGl0dGxlIHNlbnNlIHRvIHVzZSBkaWZmZXJlbnQgZmxhZ3MgZm9yIHN0YWdlMSBhbmQgbGF0ZXIgc3RhZ2VzLiBBbmQgaXQgYWxzbyBtYWtlcyBsaXR0bGUgc2Vuc2UgdG8gdXNlIGEgZGlmZmVyZW50IHZhcmlhYmxlIHRoYW4gQ0ZMQUdTX0ZPUl9UQVJHRVQuCi0KLU90aGVyIGNoYW5nZXMgSSBoYWQgdG8gZG8gaW5jbHVkZToKLQotLSBtb3ZpbmcgdGhlIGNyZWF0aW9uIG9mIGRlZmF1bHQgQ0ZMQUdTX0ZPUl9UQVJHRVQgZnJvbSBNYWtlZmlsZS5hbSB0byBjb25maWd1cmUuYWMsIGJlY2F1c2Ugb3RoZXJ3aXNlIHRoZSBCT09UX0NGTEFHUyBhcmUgc3Vic3RpdHV0ZWQgaW50byBDRkxBR1NfRk9SX1RBUkdFVCAod2hpY2ggaXMgIi1PMiAtZyAkKENGTEFHUykiKSB2aWEgJChDRkxBR1MpLiBJdCBpcyBhbHNvIGNsZWFuZXIgdGhpcyB3YXkgdGhvdWdoLgotCi0tIHBhc3NpbmcgdGhlIHJpZ2h0IENGTEFHUyB0byBjb25maWd1cmUgc2NyaXB0cyBhcyBleHBvcnRlZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMKLQotSSBhbHNvIHN0b3BwZWQgcGFzc2luZyBMSUJDRkxBR1MgdG8gY29uZmlndXJlIHNjcmlwdHMgc2luY2UgdGhleSBhcmUgdW51c2VkIGluIHRoZSB3aG9sZSBzcmMgdHJlZS4gQW5kIEkgdXBkYXRlZCB0aGUgZG9jdW1lbnRhdGlvbiBhcyBILVAgcmVtaW5kZWQgbWUgdG8gZG8uCi0KLUJvb3RzdHJhcHBlZC9yZWd0ZXN0ZWQgaTY4Ni1wYy1saW51eC1nbnUsIHdpbGwgY29tbWl0IHRvIDQuNCBzaG9ydGx5LiBPayBmb3IgNC4zPwotCi1TaWduZWQtb2ZmLWJ5OiBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBjb25maWd1cmUgfCAgIDMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQotaW5kZXggMWI3NmM5MC4uZTRkY2U3YyAxMDA3NTUKLS0tLSBhL2NvbmZpZ3VyZQotKysrIGIvY29uZmlndXJlCi1AQCAtNjc3Miw2ICs2NzcyLDM4IEBAIGZpCi0gCi0gCi0gCi0rIyBEdXJpbmcgZ2NjIGJvb3RzdHJhcCwgaWYgd2UgdXNlIHNvbWUgcmFuZG9tIGNjIGZvciBzdGFnZTEgdGhlbiBDRkxBR1MKLSsjIG1pZ2h0IGJlIGVtcHR5IG9yICItZyIuICBXZSBkb24ndCByZXF1aXJlIGEgQysrIGNvbXBpbGVyLCBzbyBDWFhGTEFHUwotKyMgbWlnaHQgYWxzbyBiZSBlbXB0eSAob3IgIi1nIiwgaWYgYSBub24tR0NDIEMrKyBjb21waWxlciBpcyBpbiB0aGUgcGF0aCkuCi0rIyBXZSB3YW50IHRvIGVuc3VyZSB0aGF0IFRBUkdFVCBsaWJyYXJpZXMgKHdoaWNoIHdlIGtub3cgYXJlIGJ1aWx0IHdpdGgKLSsjIGdjYykgYXJlIGJ1aWx0IHdpdGggIi1PMiAtZyIsIHNvIGluY2x1ZGUgdGhvc2Ugb3B0aW9ucyB3aGVuIHNldHRpbmcKLSsjIENGTEFHU19GT1JfVEFSR0VUIGFuZCBDWFhGTEFHU19GT1JfVEFSR0VULgotK2lmIHRlc3QgIngkQ0ZMQUdTX0ZPUl9UQVJHRVQiID0geDsgdGhlbgotKyAgQ0ZMQUdTX0ZPUl9UQVJHRVQ9JENGTEFHUwotKyAgY2FzZSAiICRDRkxBR1MgIiBpbgotKyAgICAqIiAtTzIgIiopIDs7Ci0rICAgICopIENGTEFHU19GT1JfVEFSR0VUPSItTzIgJENGTEFHUyIgOzsKLSsgIGVzYWMKLSsgIGNhc2UgIiAkQ0ZMQUdTICIgaW4KLSsgICAgKiIgLWcgIiogfCAqIiAtZzMgIiopIDs7Ci0rICAgICopIENGTEFHU19GT1JfVEFSR0VUPSItZyAkQ0ZMQUdTIiA7OwotKyAgZXNhYwotK2ZpCi0rCi0rCi0raWYgdGVzdCAieCRDWFhGTEFHU19GT1JfVEFSR0VUIiA9IHg7IHRoZW4KLSsgIENYWEZMQUdTX0ZPUl9UQVJHRVQ9JENYWEZMQUdTCi0rICBjYXNlICIgJENYWEZMQUdTICIgaW4KLSsgICAgKiIgLU8yICIqKSA7OwotKyAgICAqKSBDWFhGTEFHU19GT1JfVEFSR0VUPSItTzIgJENYWEZMQUdTIiA7OwotKyAgZXNhYwotKyAgY2FzZSAiICRDWFhGTEFHUyAiIGluCi0rICAgICoiIC1nICIqIHwgKiIgLWczICIqKSA7OwotKyAgICAqKSBDWFhGTEFHU19GT1JfVEFSR0VUPSItZyAkQ1hYRkxBR1MiIDs7Ci0rICBlc2FjCi0rZmkKLSsKLSsKLSAjIEhhbmRsZSAtLXdpdGgtaGVhZGVycz1YWFguICBJZiB0aGUgdmFsdWUgaXMgbm90ICJ5ZXMiLCB0aGUgY29udGVudHMgb2YKLSAjIHRoZSBuYW1lZCBkaXJlY3RvcnkgYXJlIGNvcGllZCB0byAkKHRvb2xkaXIpL3N5cy1pbmNsdWRlLgotIGlmIHRlc3QgeCIke3dpdGhfaGVhZGVyc30iICE9IHggJiYgdGVzdCB4IiR7d2l0aF9oZWFkZXJzfSIgIT0geG5vIDsgdGhlbgotLS0gCi0xLjcuMTAuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwMTktNjQtYml0LW11bHRpbGliLWhhY2sucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwMTktNjQtYml0LW11bHRpbGliLWhhY2sucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1OGJlMGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDE5LTY0LWJpdC1tdWx0aWxpYi1oYWNrLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotRnJvbSAxOGZkZTU3NDBiMDkzMjRkZmI5Y2Y0MWU5ODQ5NjcyNTczZmY1ZmEwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MTA6MDYgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxOS8zNV0gNjQtYml0IG11bHRpbGliIGhhY2suCi0KLUdDQyBoYXMgaW50ZXJuYWwgbXVsdGlsaWIgaGFuZGxpbmcgY29kZSBidXQgaXQgYXNzdW1lcyBhIHZlcnkgc3BlY2lmaWMgcmlnaWQgZGlyZWN0b3J5Ci1sYXlvdXQuIFRoZSBidWlsZCBzeXN0ZW0gaW1wbGVtZW50YXRpb24gb2YgbXVsdGlsaWIgbGF5b3V0IGlzIHZlcnkgZ2VuZXJpYyBhbmQgYWxsb3dzCi1jb21wbGV0ZSBjdXN0b21pc2F0aW9uIG9mIHRoZSBsaWJyYXJ5IGRpcmVjdG9yaWVzLgotCi1UaGlzIHBhdGNoIGlzIGEgcGFydGlhbCBzb2x1dGlvbiB0byBhbGxvdyBhbnkgY3VzdG9tIGRpcmVjdG9yaWVzIHRvIGJlIHBhc3NlZCBpbnRvIGdjYwotYW5kIGhhbmRsZWQgY29ycmVjdGx5LiBJdCBmb3JjZXMgZ2NjIHRvIHVzZSB0aGUgYmFzZV9saWJkaXIgKHdoaWNoIGlzIHRoZSBjdXJyZW50Ci1kaXJlY3RvcnksICIuIikuIFdlIG5lZWQgdG8gZG8gdGhpcyBmb3IgZWFjaCBtdWx0aWxpYiB0aGF0IGlzIGNvbmZpZ3VyZWQgYXMgd2UgZG9uJ3QKLWtub3cgd2hpY2ggY29tcGlsZXIgb3B0aW9ucyBtYXkgYmUgYmVpbmcgcGFzc2VkIGludG8gdGhlIGNvbXBpbGVyLiBTaW5jZSB3ZSBoYXZlIGEgY29tcGlsZXIKLXBlciBtdWxpdGxpYiBhdCB0aGlzIHBvaW50IHRoYXQgaXNuJ3QgYW4gaXNzdWUuCi0KLVRoZSBvbmUgcHJvYmxlbSBpcyB0aGUgdGFyZ2V0IGNvbXBpbGVyIGlzIG9ubHkgZ29pbmcgdG8gd29yayBmb3IgdGhlIGRlZmF1bHQgbXVsdGxpbGliIGF0Ci10aGlzIHBvaW50LiBJZGVhbGx5IHdlJ2QgZmlndXJlIG91dCB3aGljaCBtdWx0aWxpYnMgd2VyZSBiZWluZyBlbmFibGVkIHdpdGggd2hpY2ggcGF0aHMKLWFuZCBiZSBhYmxlIHRvIHBhdGNoIHRoZXNlIGVudHJpZXMgd2l0aCBhIGNvbXBsZXRlIHNldCBvZiBjb3JyZWN0IHBhdGhzIGJ1dCB0aGlzIHdlCi1kb24ndCBoYXZlIHN1Y2ggY29kZSBhdCB0aGlzIHBvaW50LiBUaGlzIGlzIHNvbWV0aGluZyB0aGUgdGFyZ2V0IGdjYyByZWNpcGUgc2hvdWxkIGRvCi1hbmQgb3ZlcnJpZGUgdGhlc2UgcGxhdGZvcm0gZGVmYXVsdHMgaW4gaXRzIGJ1aWxkIGNvbmZpZy4KLQotUlAgMTUvOC8xMQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogRWx2aXMgRG93c29uIDxlbHZpcy5kb3dzb25AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGdjYy9jb25maWcvaTM4Ni90LWxpbnV4NjQgICB8ICAgIDYgKystLS0tCi0gZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NCAgIHwgICAxMCArKystLS0tLS0tCi0gZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0IHwgICAgNSArKy0tLQotIDMgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdjYy00LjktMjAxNDAzMTYvZ2NjL2NvbmZpZy9pMzg2L3QtbGludXg2NAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy00LjktMjAxNDAzMTYub3JpZy9nY2MvY29uZmlnL2kzODYvdC1saW51eDY0Ci0rKysgZ2NjLTQuOS0yMDE0MDMxNi9nY2MvY29uZmlnL2kzODYvdC1saW51eDY0Ci1AQCAtMzIsNyArMzIsNSBAQAotICMKLSBjb21tYT0sCi0gTVVMVElMSUJfT1BUSU9OUyAgICA9ICQoc3Vic3QgJChjb21tYSksLywkKFRNX01VTFRJTElCX0NPTkZJRykpCi0tTVVMVElMSUJfRElSTkFNRVMgICA9ICQocGF0c3Vic3QgbSUsICUsICQoc3Vic3QgLywgLCQoTVVMVElMSUJfT1BUSU9OUykpKQotLU1VTFRJTElCX09TRElSTkFNRVMgPSBtNjQ9Li4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDp4ODZfNjQtbGludXgtZ251KQotLU1VTFRJTElCX09TRElSTkFNRVMrPSBtMzI9JChpZiAkKHdpbGRjYXJkICQoc2hlbGwgZWNobyAkKFNZU1RFTV9IRUFERVJfRElSKSkvLi4vLi4vdXNyL2xpYjMyKSwuLi9saWIzMiwuLi9saWIpJChjYWxsIGlmX211bHRpYXJjaCw6aTM4Ni1saW51eC1nbnUpCi0tTVVMVElMSUJfT1NESVJOQU1FUys9IG14MzI9Li4vbGlieDMyJChjYWxsIGlmX211bHRpYXJjaCw6eDg2XzY0LWxpbnV4LWdudXgzMikKLStNVUxUSUxJQl9ESVJOQU1FUyA9IC4gLgotK01VTFRJTElCX09TRElSTkFNRVMgPSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKQotSW5kZXg6IGdjYy00LjktMjAxNDAzMTYvZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy00LjktMjAxNDAzMTYub3JpZy9nY2MvY29uZmlnL21pcHMvdC1saW51eDY0Ci0rKysgZ2NjLTQuOS0yMDE0MDMxNi9nY2MvY29uZmlnL21pcHMvdC1saW51eDY0Ci1AQCAtMTcsMTAgKzE3LDYgQEAKLSAjIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSAKLSBNVUxUSUxJQl9PUFRJT05TID0gbWFiaT1uMzIvbWFiaT0zMi9tYWJpPTY0Ci0tTVVMVElMSUJfRElSTkFNRVMgPSBuMzIgMzIgNjQKLS1NSVBTX0VMID0gJChpZiAkKGZpbHRlciAlZWwsICQoZmlyc3R3b3JkICQoc3Vic3QgLSwgLCQodGFyZ2V0KSkpKSxlbCkKLS1NSVBTX1NPRlQgPSAkKGlmICQoc3RyaXAgJChmaWx0ZXIgTUFTS19TT0ZUX0ZMT0FUX0FCSSwgJCh0YXJnZXRfY3B1X2RlZmF1bHQpKSAkKGZpbHRlciBzb2Z0LCAkKHdpdGhfZmxvYXQpKSksc29mdCkKLS1NVUxUSUxJQl9PU0RJUk5BTUVTID0gXAotLQkuLi9saWIzMiQoY2FsbCBpZl9tdWx0aWFyY2gsOm1pcHM2NCQoTUlQU19FTCktbGludXgtZ251YWJpbjMyJChNSVBTX1NPRlQpKSBcCi0tCS4uL2xpYiQoY2FsbCBpZl9tdWx0aWFyY2gsOm1pcHMkKE1JUFNfRUwpLWxpbnV4LWdudSQoTUlQU19TT0ZUKSkgXAotLQkuLi9saWI2NCQoY2FsbCBpZl9tdWx0aWFyY2gsOm1pcHM2NCQoTUlQU19FTCktbGludXgtZ251YWJpNjQkKE1JUFNfU09GVCkpCi0rTVVMVElMSUJfRElSTkFNRVMgPSAuIC4gLgotK01VTFRJTElCX09TRElSTkFNRVMgPSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKQotKwotSW5kZXg6IGdjYy00LjktMjAxNDAzMTYvZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2NjLTQuOS0yMDE0MDMxNi5vcmlnL2djYy9jb25maWcvcnM2MDAwL3QtbGludXg2NAotKysrIGdjYy00LjktMjAxNDAzMTYvZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0Ci1AQCAtMjYsMTAgKzI2LDkgQEAKLSAjIE1VTFRJTElCX09TRElSTkFNRVMgYWNjb3JkaW5nIHRvIHdoYXQgaXMgZm91bmQgb24gdGhlIHRhcmdldC4KLSAKLSBNVUxUSUxJQl9PUFRJT05TICAgIDo9IG02NC9tMzIKLS1NVUxUSUxJQl9ESVJOQU1FUyAgIDo9IDY0IDMyCi0rTVVMVElMSUJfRElSTkFNRVMgICA6PSAuIC4KLSBNVUxUSUxJQl9FWFRSQV9PUFRTIDo9IAotLU1VTFRJTElCX09TRElSTkFNRVMgOj0gbTY0PS4uL2xpYjY0JChjYWxsIGlmX211bHRpYXJjaCw6cG93ZXJwYzY0LWxpbnV4LWdudSkKLS1NVUxUSUxJQl9PU0RJUk5BTUVTICs9IG0zMj0kKGlmICQod2lsZGNhcmQgJChzaGVsbCBlY2hvICQoU1lTVEVNX0hFQURFUl9ESVIpKS8uLi8uLi91c3IvbGliMzIpLC4uL2xpYjMyLC4uL2xpYikkKGNhbGwgaWZfbXVsdGlhcmNoLDpwb3dlcnBjLWxpbnV4LWdudSkKLStNVUxUSUxJQl9PU0RJUk5BTUVTIDo9IC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpIC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpCi0gCi0gcnM2MDAwLWxpbnV4Lm86ICQoc3JjZGlyKS9jb25maWcvcnM2MDAwL3JzNjAwMC1saW51eC5jCi0gCSQoQ09NUElMRSkgJDwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDAyMC1vcHRpb25hbC1saWJzdGRjLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDIwLW9wdGlvbmFsLWxpYnN0ZGMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViNDY2MTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDIwLW9wdGlvbmFsLWxpYnN0ZGMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi1Gcm9tIDMwN2M4ZmYzZWY2NjZiN2JkNWFjNzMzODYzZjJmYmIyN2E5ZDUyMWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToxMjo1NiArMDQwMAotU3ViamVjdDogW1BBVENIIDIwLzM1XSBvcHRpb25hbCBsaWJzdGRjCi0KLWdjYy1ydW50aW1lIGJ1aWxkcyBsaWJzdGRjKysgc2VwYXJhdGVseSBmcm9tIGdjYy1jcm9zcy0qLiBJdHMgY29uZmlndXJlIHRlc3RzIHVzaW5nIGcrKwotd2lsbCBub3QgcnVuIGNvcnJlY3RseSBzaW5jZSBieSBkZWZhdWx0IHRoZSBsaW5rZXIgd2lsbCB0cnkgdG8gbGluayBhZ2FpbnN0IGxpYnN0ZGMrKwotd2hpY2ggc2hvdWxkbid0IGV4aXN0IHlldC4gV2UgbmVlZCBhbiBvcHRpb24gdG8gZGlzYWJsZSAtbHN0ZGMrKwotb3B0aW9uIHdoaWxzdCBsZWF2aW5nIC1sYywgLWxnY2MgYW5kIG90aGVyIGF1dG9tYXRpYyBsaWJyYXJ5IGRlcGVuZGVuY2llcyBhZGRlZCBieSBnY2MKLWRyaXZlci4gVGhpcyBwYXRjaCBhZGRzIHN1Y2ggYW4gb3B0aW9uIHdoaWNoIG9ubHkgZGlzYWJsZXMgdGhlIC1sc3RkYysrLgotCi1BICJzdGFuZGFyZCIgZ2NjIGJ1aWxkIHVzZXMgeGdjYyBhbmQgaGVuY2UgYXZvaWRzIHRoaXMuIFdlIHNob3VsZCBhc2sgdXBzdHJlYW0gaG93IHRvCi1kbyB0aGlzIG9mZmljaWFsbHksIHRoZSBsaWtlbHkgYW5zd2VyIGlzIGRvbid0IGJ1aWxkIGxpYnN0ZGMrKyBzZXBhcmF0ZWx5LgotCi1SUCAyOS82LzEwCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0tLS0KLSBnY2MvYy1mYW1pbHkvYy5vcHQgIHwgICAgNCArKysrCi0gZ2NjL2NwL2crK3NwZWMuYyAgICB8ICAgIDEgKwotIGdjYy9kb2MvaW52b2tlLnRleGkgfCAgICA5ICsrKysrKystLQotIGdjYy9nY2MuYyAgICAgICAgICAgfCAgICAxICsKLSA0IGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnY2MtNC45LTIwMTQwMzE2L2djYy9jLWZhbWlseS9jLm9wdAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy00LjktMjAxNDAzMTYub3JpZy9nY2MvYy1mYW1pbHkvYy5vcHQKLSsrKyBnY2MtNC45LTIwMTQwMzE2L2djYy9jLWZhbWlseS9jLm9wdAotQEAgLTEzMjMsNiArMTMyMywxMCBAQCBub3N0ZGluYysrCi0gQysrIE9iakMrKwotIERvIG5vdCBzZWFyY2ggc3RhbmRhcmQgc3lzdGVtIGluY2x1ZGUgZGlyZWN0b3JpZXMgZm9yIEMrKwotIAotK25vc3RkbGliKysKLStEcml2ZXIKLStEbyBub3QgbGluayBzdGFuZGFyZCBDKysgcnVudGltZSBsaWJyYXJ5Ci0rCi0gbwotIEMgT2JqQyBDKysgT2JqQysrIEpvaW5lZCBTZXBhcmF0ZQotIDsgRG9jdW1lbnRlZCBpbiBjb21tb24ub3B0Ci1JbmRleDogZ2NjLTQuOS0yMDE0MDMxNi9nY2MvY3AvZysrc3BlYy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2NjLTQuOS0yMDE0MDMxNi5vcmlnL2djYy9jcC9nKytzcGVjLmMKLSsrKyBnY2MtNC45LTIwMTQwMzE2L2djYy9jcC9nKytzcGVjLmMKLUBAIC0xMzgsNiArMTM4LDcgQEAgbGFuZ19zcGVjaWZpY19kcml2ZXIgKHN0cnVjdCBjbF9kZWNvZGVkXwotICAgICAgIHN3aXRjaCAoZGVjb2RlZF9vcHRpb25zW2ldLm9wdF9pbmRleCkKLSAJewotIAljYXNlIE9QVF9ub3N0ZGxpYjoKLSsJY2FzZSBPUFRfbm9zdGRsaWJfXzoKLSAJY2FzZSBPUFRfbm9kZWZhdWx0bGliczoKLSAJICBsaWJyYXJ5ID0gLTE7Ci0gCSAgYnJlYWs7Ci1JbmRleDogZ2NjLTQuOS0yMDE0MDMxNi9nY2MvZG9jL2ludm9rZS50ZXhpCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2NjLTQuOS0yMDE0MDMxNi5vcmlnL2djYy9kb2MvaW52b2tlLnRleGkKLSsrKyBnY2MtNC45LTIwMTQwMzE2L2djYy9kb2MvaW52b2tlLnRleGkKLUBAIC0xOTMsNiArMTkzLDcgQEAgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9ucy4KLSAtZnZpc2liaWxpdHktaW5saW5lcy1oaWRkZW4gQGdvbAotIC1mdnRhYmxlLXZlcmlmeT1AdmFye3N0ZHxwcmVpbml0fG5vbmV9IEBnb2wKLSAtZnZ0di1jb3VudHMgLWZ2dHYtZGVidWcgQGdvbAotKy1ub3N0ZGxpYisrIEBnb2wKLSAtZnZpc2liaWxpdHktbXMtY29tcGF0IEBnb2wKLSAtZmV4dC1udW1lcmljLWxpdGVyYWxzIEBnb2wKLSAtV2FiaSAgLVdjb252ZXJzaW9uLW51bGwgIC1XY3Rvci1kdG9yLXByaXZhY3kgQGdvbAotQEAgLTQ1Nyw3ICs0NTgsNyBAQCBPYmplY3RpdmUtQyBhbmQgT2JqZWN0aXZlLUMrKyBEaWFsZWN0c30uCi0gLW5vc3RhcnRmaWxlcyAgLW5vZGVmYXVsdGxpYnMgIC1ub3N0ZGxpYiAtcGllIC1yZHluYW1pYyBAZ29sCi0gLXMgIC1zdGF0aWMgLXN0YXRpYy1saWJnY2MgLXN0YXRpYy1saWJzdGRjKysgQGdvbAotIC1zdGF0aWMtbGliYXNhbiAtc3RhdGljLWxpYnRzYW4gLXN0YXRpYy1saWJsc2FuIC1zdGF0aWMtbGlidWJzYW4gQGdvbAotLS1zaGFyZWQgLXNoYXJlZC1saWJnY2MgIC1zeW1ib2xpYyBAZ29sCi0rLXNoYXJlZCAtc2hhcmVkLWxpYmdjYyAgLXN5bWJvbGljIC1ub3N0ZGxpYisrIEBnb2wKLSAtVCBAdmFye3NjcmlwdH0gIC1XbCxAdmFye29wdGlvbn0gIC1YbGlua2VyIEB2YXJ7b3B0aW9ufSBAZ29sCi0gLXUgQHZhcntzeW1ib2x9fQotIAotQEAgLTEwMjg1LDYgKzEwMjg2LDExIEBAIFRoZXNlIGVudHJpZXMgYXJlIHVzdWFsbHkgcmVzb2x2ZWQgYnkgZW4KLSBsaWJjLiAgVGhlc2UgZW50cnkgcG9pbnRzIHNob3VsZCBiZSBzdXBwbGllZCB0aHJvdWdoIHNvbWUgb3RoZXIKLSBtZWNoYW5pc20gd2hlbiB0aGlzIG9wdGlvbiBpcyBzcGVjaWZpZWQuCi0gCi0rQGl0ZW0gLW5vc3RkbGliKysKLStAb3BpbmRleCBub3N0ZGxpYisrCi0rRG8gbm90IHVzZSB0aGUgc3RhbmRhcmQgc3lzdGVtIEMrKyBydW50aW1lIGxpYnJhcmllcyB3aGVuIGxpbmtpbmcuCi0rT25seSB0aGUgbGlicmFyaWVzIHlvdSBzcGVjaWZ5IHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBsaW5rZXIuCi0rCi0gQGNpbmRleCBAb3B0aW9uey1sZ2NjfSwgdXNlIHdpdGggQG9wdGlvbnstbm9zdGRsaWJ9Ci0gQGNpbmRleCBAb3B0aW9uey1ub3N0ZGxpYn0gYW5kIHVucmVzb2x2ZWQgcmVmZXJlbmNlcwotIEBjaW5kZXggdW5yZXNvbHZlZCByZWZlcmVuY2VzIGFuZCBAb3B0aW9uey1ub3N0ZGxpYn0KLUluZGV4OiBnY2MtNC45LTIwMTQwMzE2L2djYy9nY2MuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy00LjktMjAxNDAzMTYub3JpZy9nY2MvZ2NjLmMKLSsrKyBnY2MtNC45LTIwMTQwMzE2L2djYy9nY2MuYwotQEAgLTc3Miw2ICs3NzIsNyBAQCBwcm9wZXIgcG9zaXRpb24gYW1vbmcgdGhlIG90aGVyIG91dHB1dCBmCi0gICAgICUobWZsaWIpICIgU1RBQ0tfU1BMSVRfU1BFQyAiXAotICAgICAle2Zwcm9maWxlLWFyY3N8ZnByb2ZpbGUtZ2VuZXJhdGUqfGNvdmVyYWdlOi1sZ2Nvdn0gIiBTQU5JVElaRVJfU1BFQyAiIFwKLSAgICAgJXshbm9zdGRsaWI6JXshbm9kZWZhdWx0bGliczolKGxpbmtfc3NwKSAlKGxpbmtfZ2NjX2Nfc2VxdWVuY2UpfX1cCi0rICAgICV7IW5vc3RkbGliKys6fVwKLSAgICAgJXshbm9zdGRsaWI6JXshbm9zdGFydGZpbGVzOiVFfX0gJXtUKn0gfX19fX19IgotICNlbmRpZgotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDIxLWdjYy1kaXNhYmxlLU1BU0tfUkVMQVhfUElDX0NBTExTLWJpdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDAyMS1nY2MtZGlzYWJsZS1NQVNLX1JFTEFYX1BJQ19DQUxMUy1iaXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViM2M2MWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDIxLWdjYy1kaXNhYmxlLU1BU0tfUkVMQVhfUElDX0NBTExTLWJpdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLUZyb20gMDA0Njk2ZTA1NGFlOWRjNzFkNTEyY2M3NTVjY2M0MDc0ZmM2MmIyZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjE0OjIwICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjEvMzVdIGdjYzogZGlzYWJsZSBNQVNLX1JFTEFYX1BJQ19DQUxMUyBiaXQKLQotVGhlIG5ldyBmZWF0dXJlIGFkZGVkIGFmdGVyIDQuMy4zCi0iaHR0cDovL3d3dy5wdWJicy5uZXQvMjAwOTA5L2djYy85NDA0OC1wYXRjaC1hZGQtc3VwcG9ydC1mb3Itcm1pcHNqYWxyLmh0bWwiCi13aWxsIGNhdXNlIGNjMXBsdXMgZWF0IHVwIGFsbCB0aGUgc3lzdGVtIG1lbW9yeSB3aGVuIGJ1aWxkIHdlYmtpdC1ndGsuCi1UaGUgZnVuY3Rpb24gbWlwc19nZXRfcGljX2NhbGxfc3ltYm9sIGtlZXBzIG9uIHJlY3Vyc2l2ZWx5IGNhbGxpbmcgaXRzZWxmLgotRGlzYWJsZSB0aGlzIGZlYXR1cmUgdG8gd2FsayBhc2lkZSB0aGUgYnVnLgotCi1TaWduZWQtb2ZmLWJ5OiBEb25neGlhbyBYdSA8ZG9uZ3hpYW8ueHVAaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotLS0tCi0gZ2NjL2NvbmZpZ3VyZSAgICB8ICAgIDcgLS0tLS0tLQotIGdjYy9jb25maWd1cmUuYWMgfCAgICA3IC0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDE0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKLWluZGV4IGI2NWQyMWQuLmJkYWI0NWEgMTAwNzU1Ci0tLS0gYS9nY2MvY29uZmlndXJlCi0rKysgYi9nY2MvY29uZmlndXJlCi1AQCAtMjU4MjksMTMgKzI1ODI5LDYgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgYXNzZW1ibGVyIGFuZCBsaW5rZXIgZm9yIGV4cGxpY2l0IEpBTFIgcmVsb2NhdGlvbi4uLiAiID4mNjsKLSAgICAgICAgIHJtIC1mIGNvbmZ0ZXN0LioKLSAgICAgICBmaQotICAgICBmaQotLSAgICBpZiB0ZXN0ICRnY2NfY3ZfYXNfbGRfamFscl9yZWxvYyA9IHllczsgdGhlbgotLSAgICAgIGlmIHRlc3QgeCR0YXJnZXRfY3B1X2RlZmF1bHQgPSB4OyB0aGVuCi0tICAgICAgICB0YXJnZXRfY3B1X2RlZmF1bHQ9TUFTS19SRUxBWF9QSUNfQ0FMTFMKLS0gICAgICBlbHNlCi0tICAgICAgICB0YXJnZXRfY3B1X2RlZmF1bHQ9IigkdGFyZ2V0X2NwdV9kZWZhdWx0KXxNQVNLX1JFTEFYX1BJQ19DQUxMUyIKLS0gICAgICBmaQotLSAgICBmaQotICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdjY19jdl9hc19sZF9qYWxyX3JlbG9jIiA+JjUKLSAkYXNfZWNobyAiJGdjY19jdl9hc19sZF9qYWxyX3JlbG9jIiA+JjY7IH0KLSAKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYwotaW5kZXggZTIyNmI4NS4uNWY1YzkwOSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWd1cmUuYWMKLSsrKyBiL2djYy9jb25maWd1cmUuYWMKLUBAIC00MDk5LDEzICs0MDk5LDYgQEAgeDoKLSAgICAgICAgIHJtIC1mIGNvbmZ0ZXN0LioKLSAgICAgICBmaQotICAgICBmaQotLSAgICBpZiB0ZXN0ICRnY2NfY3ZfYXNfbGRfamFscl9yZWxvYyA9IHllczsgdGhlbgotLSAgICAgIGlmIHRlc3QgeCR0YXJnZXRfY3B1X2RlZmF1bHQgPSB4OyB0aGVuCi0tICAgICAgICB0YXJnZXRfY3B1X2RlZmF1bHQ9TUFTS19SRUxBWF9QSUNfQ0FMTFMKLS0gICAgICBlbHNlCi0tICAgICAgICB0YXJnZXRfY3B1X2RlZmF1bHQ9IigkdGFyZ2V0X2NwdV9kZWZhdWx0KXxNQVNLX1JFTEFYX1BJQ19DQUxMUyIKLS0gICAgICBmaQotLSAgICBmaQotICAgICBBQ19NU0dfUkVTVUxUKCRnY2NfY3ZfYXNfbGRfamFscl9yZWxvYykKLSAKLSAgICAgQUNfQ0FDSEVfQ0hFQ0soW2xpbmtlciBmb3IgLmVoX2ZyYW1lIHBlcnNvbmFsaXR5IHJlbGF4YXRpb25dLAotLS0gCi0xLjcuMTAuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwMjItQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDAyMi1DT0xMRUNUX0dDQ19PUFRJT05TLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MGM4YWJmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDAyMi1DT0xMRUNUX0dDQ19PUFRJT05TLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotRnJvbSA3ZjVjOWRjYzcxYzhiODNhMGI1NTk2MjY2Y2M0YmRmMDkzNmU4ZTAwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MTY6MjggKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAyMi8zNV0gQ09MTEVDVF9HQ0NfT1BUSU9OUwotCi1UaGlzIHBhdGNoIGFkZHMgLS1zeXNyb290IGludG8gQ09MTEVDVF9HQ0NfT1BUSU9OUyB3aGljaCBpcyB1c2VkIHRvCi1pbnZva2UgY29sbGVjdDIuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gZ2NjL2djYy5jIHwgICAgOSArKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKLWluZGV4IDQ3Nzc1MmYuLjUxMDYyYWEgMTAwNjQ0Ci0tLS0gYS9nY2MvZ2NjLmMKLSsrKyBiL2djYy9nY2MuYwotQEAgLTQwOTgsNiArNDA5OCwxNSBAQCBzZXRfY29sbGVjdF9nY2Nfb3B0aW9ucyAodm9pZCkKLSAJCXNpemVvZiAoIkNPTExFQ1RfR0NDX09QVElPTlM9IikgLSAxKTsKLSAKLSAgIGZpcnN0X3RpbWUgPSBUUlVFOwotKyNpZmRlZiBIQVZFX0xEX1NZU1JPT1QKLSsgIGlmICh0YXJnZXRfc3lzdGVtX3Jvb3RfY2hhbmdlZCAmJiB0YXJnZXRfc3lzdGVtX3Jvb3QpCi0rICAgIHsKLSsgICAgICBvYnN0YWNrX2dyb3cgKCZjb2xsZWN0X29ic3RhY2ssICInLS1zeXNyb290PSIsIHNpemVvZigiJy0tc3lzcm9vdD0iKS0xKTsKLSsgICAgICBvYnN0YWNrX2dyb3cgKCZjb2xsZWN0X29ic3RhY2ssIHRhcmdldF9zeXN0ZW1fcm9vdCxzdHJsZW4odGFyZ2V0X3N5c3RlbV9yb290KSk7Ci0rICAgICAgb2JzdGFja19ncm93ICgmY29sbGVjdF9vYnN0YWNrLCAiJyIsIDEpOwotKyAgICAgIGZpcnN0X3RpbWUgPSBGQUxTRTsKLSsgICAgfQotKyNlbmRpZgotICAgZm9yIChpID0gMDsgKGludCkgaSA8IG5fc3dpdGNoZXM7IGkrKykKLSAgICAgewotICAgICAgIGNvbnN0IGNoYXIgKmNvbnN0ICphcmdzOwotLS0gCi0xLjcuMTAuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwMjMtVXNlLXRoZS1kZWZhdWx0cy5oLWluLUItaW5zdGVhZC1vZi1TLWFuZC10LW9lLWluLUIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwMjMtVXNlLXRoZS1kZWZhdWx0cy5oLWluLUItaW5zdGVhZC1vZi1TLWFuZC10LW9lLWluLUIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkZGZlOWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDIzLVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTYgKzAsMCBAQAotRnJvbSBmN2Q0OWNhNDQ1ZTYwZmFhMWI1MjU2YzZiNGY5NmMxZWU1YzBlMzUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MTc6MjUgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAyMy8zNV0gVXNlIHRoZSBkZWZhdWx0cy5oIGluICR7Qn0gaW5zdGVhZCBvZiAke1N9LCBhbmQgdC1vZQotIGluICR7Qn0KLQotVXNlIHRoZSBkZWZhdWx0cy5oIGluICR7Qn0gaW5zdGVhZCBvZiAke1N9LCBhbmQgdC1vZSBpbiAke0J9LCBzbyB0aGF0Ci10aGUgc291cmNlIGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBnY2MtY3Jvc3MtaW5pdGlhbCwKLWdjYy1jcm9zcy1pbnRlcm1lZGlhdGUsIGdjYy1jcm9zcywgZ2NjLXJ1bnRpbWUsIGFuZCBhbHNvIHRoZSBzZGsgYnVpbGQuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1XaGlsZSBjb21waWxpbmcgZ2NjLWNyb3Nzc2RrLWluaXRpYWwteDg2XzY0IG9uIHNvbWUgaG9zdCwgdGhlcmUgaXMKLW9jY2FzaW9uYWxseSBmYWlsdXJlIHRoYXQgdGVzdCB0aGUgZXhpc3RhbmNlIG9mIGRlZmF1bHQuaCBkb2Vzbid0Ci13b3JrLCB0aGUgcmVhc29uIGlzIHRtX2luY2x1ZGVfbGlzdD0nKiogZGVmYXVsdHMuaCcgcmF0aGVyIHRoYW4KLXRtX2luY2x1ZGVfbGlzdD0nKiogLi9kZWZhdWx0cy5oJwotCi1TbyB3ZSBhZGQgdGhlIHRlc3QgY29uZGl0aW9uIGZvciB0aGlzIHNpdHVhdGlvbi4KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGdjYy9NYWtlZmlsZS5pbiAgfCAgICAyICstCi0gZ2NjL2NvbmZpZ3VyZSAgICB8ICAgIDQgKystLQotIGdjYy9jb25maWd1cmUuYWMgfCAgICA0ICsrLS0KLSBnY2MvbWtjb25maWcuc2ggIHwgICAgNCArKy0tCi0gNCBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvTWFrZWZpbGUuaW4gYi9nY2MvTWFrZWZpbGUuaW4KLWluZGV4IGQxYWIyMmYuLjE1ZmU0YjYgMTAwNjQ0Ci0tLS0gYS9nY2MvTWFrZWZpbGUuaW4KLSsrKyBiL2djYy9NYWtlZmlsZS5pbgotQEAgLTQ4Myw3ICs0ODMsNyBAQCBUQVJHRVRfU1lTVEVNX1JPT1QgPSBAVEFSR0VUX1NZU1RFTV9ST09UQAotIFRBUkdFVF9TWVNURU1fUk9PVF9ERUZJTkUgPSBAVEFSR0VUX1NZU1RFTV9ST09UX0RFRklORUAKLSAKLSB4bWFrZV9maWxlPUB4bWFrZV9maWxlQAotLXRtYWtlX2ZpbGU9QHRtYWtlX2ZpbGVACi0rdG1ha2VfZmlsZT1AdG1ha2VfZmlsZUAgLi90LW9lCi0gVE1fRU5ESUFOX0NPTkZJRz1AVE1fRU5ESUFOX0NPTkZJR0AKLSBUTV9NVUxUSUxJQl9DT05GSUc9QFRNX01VTFRJTElCX0NPTkZJR0AKLSBUTV9NVUxUSUxJQl9FWENFUFRJT05TX0NPTkZJRz1AVE1fTVVMVElMSUJfRVhDRVBUSU9OU19DT05GSUdACi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKLWluZGV4IDUzOTliMmIuLjYwYTA0YmQgMTAwNzU1Ci0tLS0gYS9nY2MvY29uZmlndXJlCi0rKysgYi9nY2MvY29uZmlndXJlCi1AQCAtMTE2MzEsOCArMTE2MzEsOCBAQCBmb3IgZiBpbiAkdG1fZmlsZTsgZG8KLSAgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gJGYiCi0gICAgICAgIDs7Ci0gICAgIGRlZmF1bHRzLmggKQotLSAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSBcJChzcmNkaXIpLyRmIgotLSAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAkZiIKLSsgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi8kZiIKLSsgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gLi8kZiIKLSAgICAgICAgOzsKLSAgICAgKiApCi0gICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IFwkKHNyY2RpcikvY29uZmlnLyRmIgotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCi1pbmRleCBmODdjM2I2Li40NjBlMGQ5IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYwotKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYwotQEAgLTE3NDAsOCArMTc0MCw4IEBAIGZvciBmIGluICR0bV9maWxlOyBkbwotICAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAkZiIKLSAgICAgICAgOzsKLSAgICAgZGVmYXVsdHMuaCApCi0tICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IFwkKHNyY2RpcikvJGYiCi0tICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9ICRmIgotKyAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSAuLyRmIgotKyAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAuLyRmIgotICAgICAgICA7OwotICAgICAqICkKLSAgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gXCQoc3JjZGlyKS9jb25maWcvJGYiCi1kaWZmIC0tZ2l0IGEvZ2NjL21rY29uZmlnLnNoIGIvZ2NjL21rY29uZmlnLnNoCi1pbmRleCBjNzE0NmVkLi5iMTUzZjQ1IDEwMDY0NAotLS0tIGEvZ2NjL21rY29uZmlnLnNoCi0rKysgYi9nY2MvbWtjb25maWcuc2gKLUBAIC03Nyw3ICs3Nyw3IEBAIGlmIFsgLW4gIiRIRUFERVJTIiBdOyB0aGVuCi0gICAgIGlmIFsgJCMgLWdlIDEgXTsgdGhlbgotIAllY2hvICcjaWZkZWYgSU5fR0NDJyA+PiAke291dHB1dH1UCi0gCWZvciBmaWxlIGluICIkQCI7IGRvCi0tCSAgICBpZiB0ZXN0IHgiJGZpbGUiID0geCJkZWZhdWx0cy5oIjsgdGhlbgotKwkgICAgaWYgdGVzdCB4IiRmaWxlIiA9IHgiLi9kZWZhdWx0cy5oIiAtbyB4IiRmaWxlIiA9IHgiZGVmYXVsdHMuaCI7IHRoZW4KLSAJCXBvc3Rwb25lX2RlZmF1bHRzX2g9InllcyIKLSAJICAgIGVsc2UKLSAJCWVjaG8gIiMgaW5jbHVkZSBcIiRmaWxlXCIiID4+ICR7b3V0cHV0fVQKLUBAIC0xMDYsNyArMTA2LDcgQEAgZXNhYwotIAotICMgSWYgd2UgcG9zdHBvbmVkIGluY2x1ZGluZyBkZWZhdWx0cy5oLCBhZGQgdGhlICNpbmNsdWRlIG5vdy4KLSBpZiB0ZXN0IHgiJHBvc3Rwb25lX2RlZmF1bHRzX2giID0geCJ5ZXMiOyB0aGVuCi0tICAgIGVjaG8gIiMgaW5jbHVkZSBcImRlZmF1bHRzLmhcIiIgPj4gJHtvdXRwdXR9VAotKyAgICBlY2hvICIjIGluY2x1ZGUgXCIuL2RlZmF1bHRzLmhcIiIgPj4gJHtvdXRwdXR9VAotIGZpCi0gCi0gIyBBZGQgbXVsdGlwbGUgaW5jbHVzaW9uIHByb3RlY3Rpb24gZ3VhcmQsIHBhcnQgdHdvLgotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwMjUtZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwMjUtZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlNzkxNGQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDI1LWZvcnRyYW4tY3Jvc3MtY29tcGlsZS1oYWNrLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotRnJvbSBhZjhhNTZlYTRlMTdiMjkwOWVmZjJjNTc3MDRhYjQzZWYyNGYyOGQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjA6MDEgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAyNS8zNV0gZm9ydHJhbiBjcm9zcy1jb21waWxlIGhhY2suCi0KLSogRm9ydHJhbiB3b3VsZCBoYXZlIHNlYXJjaGVkIGZvciBhcm0tYW5nc3Ryb20tZ251ZWFiaS1nZm9ydHJhbiBidXQgd291bGQgaGF2ZSB1c2VkCi11c2VkIGdmb3J0YW4uIEZvciBnY2NfNC4yLjIuYmIgd2Ugd2FudCB0byB1c2UgdGhlIGdmb3J0cmFuIGNvbXBpbGVyIGZyb20gb3VyIGNyb3NzCi1kaXJlY3RvcnkuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0tLS0KLSBsaWJnZm9ydHJhbi9jb25maWd1cmUgICAgfCAgICAyICstCi0gbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjIHwgICAgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vY29uZmlndXJlIGIvbGliZ2ZvcnRyYW4vY29uZmlndXJlCi1pbmRleCA4Mzg1ZTk2Li5iOGY3YTkyIDEwMDc1NQotLS0tIGEvbGliZ2ZvcnRyYW4vY29uZmlndXJlCi0rKysgYi9saWJnZm9ydHJhbi9jb25maWd1cmUKLUBAIC0xMjcwNCw3ICsxMjcwNCw3IEBAIGVzYWMKLSAKLSAjIFdlIG5lZWQgZ2ZvcnRyYW4gdG8gY29tcGlsZSBwYXJ0cyBvZiB0aGUgbGlicmFyeQotICNBQ19QUk9HX0ZDKGdmb3J0cmFuKQotLUZDPSIkR0ZPUlRSQU4iCi0rI0ZDPSIkR0ZPUlRSQU4iCi0gYWNfZXh0PSR7YWNfZmNfc3JjZXh0LWZ9Ci0gYWNfY29tcGlsZT0nJEZDIC1jICRGQ0ZMQUdTICRhY19mY2ZsYWdzX3NyY2V4dCBjb25mdGVzdC4kYWNfZXh0ID4mNScKLSBhY19saW5rPSckRkMgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRGQ0ZMQUdTICRMREZMQUdTICRhY19mY2ZsYWdzX3NyY2V4dCBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKLWRpZmYgLS1naXQgYS9saWJnZm9ydHJhbi9jb25maWd1cmUuYWMgYi9saWJnZm9ydHJhbi9jb25maWd1cmUuYWMKLWluZGV4IDdkOTdmZWQuLjNmOWY0ODQgMTAwNjQ0Ci0tLS0gYS9saWJnZm9ydHJhbi9jb25maWd1cmUuYWMKLSsrKyBiL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZS5hYwotQEAgLTIyNyw3ICsyMjcsNyBAQCBBQ19TVUJTVChlbmFibGVfc3RhdGljKQotIAotICMgV2UgbmVlZCBnZm9ydHJhbiB0byBjb21waWxlIHBhcnRzIG9mIHRoZSBsaWJyYXJ5Ci0gI0FDX1BST0dfRkMoZ2ZvcnRyYW4pCi0tRkM9IiRHRk9SVFJBTiIKLSsjRkM9IiRHRk9SVFJBTiIKLSBBQ19QUk9HX0ZDKGdmb3J0cmFuKQotIAotICMgZXh0cmEgTEQgRmxhZ3Mgd2hpY2ggYXJlIHJlcXVpcmVkIGZvciB0YXJnZXRzCi0tLSAKLTEuNy4xMC40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDAyNi1saWJnY2Mtc2psai1jaGVjay5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDAyNi1saWJnY2Mtc2psai1jaGVjay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDRlZmFiOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwMjYtbGliZ2NjLXNqbGotY2hlY2sucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi1Gcm9tIDA4YzIzOTg0NDVlNmNhYzI4MjQ4OGY2NGFlNmJmMjljYmNkOGRiMjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyMDo1MCArMDQwMAotU3ViamVjdDogW1BBVENIIDI2LzM1XSBsaWJnY2Mtc2psai1jaGVjawotCi1hY19mbl9jX3RyeV9jb21waWxlIGRvZXNudCBzZWVtIHRvIGtlZXAgdGhlIGludGVybWVkaWF0ZSBmaWxlcwotd2hpY2ggYXJlIG5lZWRlZCBmb3Igc2psaiB0ZXN0IHRvIHBhc3Mgc2luY2UgaXQgZ3JlcHMgaW50byB0aGUKLWdlbmVyYXRlZCBmaWxlLiBTbyB3ZSBydW4gdGhlIGNvbXBpbGVyIGNvbW1hbmQgdXNpbmcgQUNfVFJZX0NPTU1BTkQKLXdoaWNoIHRoZW4gZ2VuZXJhdGVzIHRoZSBuZWVkZWQgLnMgZmlsZQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGxpYmdjYy9jb25maWd1cmUgICAgfCAgIDEwICsrKysrKy0tLS0KLSBsaWJnY2MvY29uZmlndXJlLmFjIHwgICAxMCArKysrLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmdjYy9jb25maWd1cmUgYi9saWJnY2MvY29uZmlndXJlCi1pbmRleCAxNDI1ZGY2Li5kMThlM2NiIDEwMDY0NAotLS0tIGEvbGliZ2NjL2NvbmZpZ3VyZQotKysrIGIvbGliZ2NjL2NvbmZpZ3VyZQotQEAgLTQyMDgsMTcgKzQyMDgsMTkgQEAgdm9pZCBmb28gKCkKLSB9Ci0gCi0gX0FDRU9GCi0tQ0ZMQUdTX2hvbGQ9JENGTEFHUwotLUNGTEFHUz0iLS1zYXZlLXRlbXBzIC1mZXhjZXB0aW9ucyIKLSBsaWJnY2NfY3ZfbGliX3NqbGpfZXhjZXB0aW9ucz11bmtub3duCi0taWYgYWNfZm5fY190cnlfY29tcGlsZTsgdGhlbiA6Ci0raWYgeyBhY190cnk9JyR7Q0MtY2N9IC1mZXhjZXB0aW9ucyAtUyBjb25mdGVzdC5jIC1vIGNvbmZ0ZXN0LnMgMT4mNScKLSsgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY190cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgfTsgdGhlbgotICAgaWYgZ3JlcCBfVW53aW5kX1NqTGpfUmVzdW1lIGNvbmZ0ZXN0LnMgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0gICAgIGxpYmdjY19jdl9saWJfc2psal9leGNlcHRpb25zPXllcwotICAgZWxpZiBncmVwIF9VbndpbmRfUmVzdW1lIGNvbmZ0ZXN0LnMgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0gICAgIGxpYmdjY19jdl9saWJfc2psal9leGNlcHRpb25zPW5vCi0gICBmaQotIGZpCi0tQ0ZMQUdTPSRDRkxBR1NfaG9sZAotIHJtIC1mIGNvbmZ0ZXN0KgotIAotIGZpCi1kaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZ3VyZS5hYyBiL2xpYmdjYy9jb25maWd1cmUuYWMKLWluZGV4IDhiN2FiYTUuLmM3Yzk2NDQgMTAwNjQ0Ci0tLS0gYS9saWJnY2MvY29uZmlndXJlLmFjCi0rKysgYi9saWJnY2MvY29uZmlndXJlLmFjCi1AQCAtMjE2LDE2ICsyMTYsMTQgQEAgdm9pZCBmb28gKCkKLSAgIGJhcigpOwotIH0KLSBdKV0pCi0tQ0ZMQUdTX2hvbGQ9JENGTEFHUwotLUNGTEFHUz0iLS1zYXZlLXRlbXBzIC1mZXhjZXB0aW9ucyIKLSBsaWJnY2NfY3ZfbGliX3NqbGpfZXhjZXB0aW9ucz11bmtub3duCi0tQVNfSUYoW2FjX2ZuX2NfdHJ5X2NvbXBpbGVdLAotLSAgW2lmIGdyZXAgX1Vud2luZF9TakxqX1Jlc3VtZSBjb25mdGVzdC5zID4vZGV2L251bGwgMj4mMTsgdGhlbgotK2lmIEFDX1RSWV9DT01NQU5EKCR7Q0MtY2N9IC1mZXhjZXB0aW9ucyAtUyBjb25mdGVzdC5jIC1vIGNvbmZ0ZXN0LnMgMT4mQVNfTUVTU0FHRV9MT0dfRkQpOyB0aGVuCi0rICBpZiBncmVwIF9VbndpbmRfU2pMal9SZXN1bWUgY29uZnRlc3QucyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSAgICAgbGliZ2NjX2N2X2xpYl9zamxqX2V4Y2VwdGlvbnM9eWVzCi0gICBlbGlmIGdyZXAgX1Vud2luZF9SZXN1bWUgY29uZnRlc3QucyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSAgICAgbGliZ2NjX2N2X2xpYl9zamxqX2V4Y2VwdGlvbnM9bm8KLS0gIGZpXSkKLS1DRkxBR1M9JENGTEFHU19ob2xkCi0rICBmaQotK2ZpCi0gcm0gLWYgY29uZnRlc3QqCi0gXSkKLSAKLS0tIAotMS43LjEwLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDI3LWNwcC1ob25vci1zeXNyb290LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDI3LWNwcC1ob25vci1zeXNyb290LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNWU5NTIxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDAyNy1jcHAtaG9ub3Itc3lzcm9vdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLUZyb20gYTBmOWJkMDljODE2YWQyOWVjZjdjMjlkNmMyN2Y3ZGY5NzcxMDM2NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjIyOjAwICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjcvMzVdIGNwcDogaG9ub3Igc3lzcm9vdC4KLQotQ3VycmVudGx5LCBpZiB0aGUgZ2NjIHRvb2xjaGFpbiBpcyByZWxvY2F0ZWQgYW5kIGluc3RhbGxlZCBmcm9tIHNzdGF0ZSwgdGhlbiB5b3UgdHJ5IGFuZCBjb21waWxlCi1wcmVwcm9jZXNzZWQgc291cmNlICguaSBvciAuaWkgZmlsZXMpLCB0aGUgY29tcGlsZXIgd2lsbCB0cnkgYW5kIGFjY2VzcyB0aGUgYnVpbHRpbiBzeXNyb290IGxvY2F0aW9uCi1yYXRoZXIgdGhhbiB0aGUgLS1zeXNyb290IG9wdGlvbiBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmRsaW5lLiBJZiBhY2Nlc3MgdG8gdGhhdCBkaXJlY3RvcnkgaXMKLXBlcm1pc3Npb24gZGVuaWVkICh1bnJlYWRhYmxlKSwgZ2NjIHdpbGwgZXJyb3IuCi0KLVRoaXMgaGFwcGVucyB3aGVuIGNjYWNoZSBpcyBpbiB1c2UgZHVlIHRvIHRoZSBmYWN0IGl0IHVzZXMgcHJlcHJvY2Vzc2VkIHNvdXJjZSBmaWxlcy4KLQotVGhlIGZpeCBiZWxvdyBhZGRzICVJIHRvIHRoZSBjcHAtb3V0cHV0IHNwZWMgbWFjcm8gc28gdGhlIGRlZmF1bHQgc3Vic3RpdHV0aW9ucyBmb3IgLWlwcmVmaXgsCi0taXN5c3RlbSwgLWlzeXNyb290IGhhcHBlbiBhbmQgdGhlIGNvcnJlY3Qgc3lzcm9vdCBpcyB1c2VkLgotCi1bWU9DVE8gIzIwNzRdCi0KLVJQIDIwMTIvMDQvMTMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBnY2MvY3AvbGFuZy1zcGVjcy5oIHwgICAgMiArLQotIGdjYy9nY2MuYyAgICAgICAgICAgfCAgICAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY3AvbGFuZy1zcGVjcy5oIGIvZ2NjL2NwL2xhbmctc3BlY3MuaAotaW5kZXggYTAwMWMzZS4uMWFhZTFlNCAxMDA2NDQKLS0tLSBhL2djYy9jcC9sYW5nLXNwZWNzLmgKLSsrKyBiL2djYy9jcC9sYW5nLXNwZWNzLmgKLUBAIC02Myw1ICs2Myw1IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gICB7Ii5paSIsICJAYysrLWNwcC1vdXRwdXQiLCAwLCAwLCAwfSwKLSAgIHsiQGMrKy1jcHAtb3V0cHV0IiwKLSAgICAiJXshTToleyFNTToleyFFOlwKLS0gICAgY2MxcGx1cyAtZnByZXByb2Nlc3NlZCAlaSAlKGNjMV9vcHRpb25zKSAlMlwKLSsgICAgY2MxcGx1cyAtZnByZXByb2Nlc3NlZCAlaSAlSSAlKGNjMV9vcHRpb25zKSAlMlwKLSAgICAgJXshZnN5bnRheC1vbmx5OiUoaW52b2tlX2FzKX19fX0iLCAwLCAwLCAwfSwKLWRpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKLWluZGV4IDUxMDYyYWEuLmNmNmI5OWUgMTAwNjQ0Ci0tLS0gYS9nY2MvZ2NjLmMKLSsrKyBiL2djYy9nY2MuYwotQEAgLTEwNDIsNyArMTA0Miw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY29tcGlsZXIgZGVmYXVsdF9jb21waWxlcnNbXSA9Ci0gICAgICAgICAgICAgICAgICAgICAlV3tvKjotLW91dHB1dC1wY2g9JSp9fSVWfX19fX19IiwgMCwgMCwgMH0sCi0gICB7Ii5pIiwgIkBjcHAtb3V0cHV0IiwgMCwgMCwgMH0sCi0gICB7IkBjcHAtb3V0cHV0IiwKLS0gICAiJXshTToleyFNTToleyFFOmNjMSAtZnByZXByb2Nlc3NlZCAlaSAlKGNjMV9vcHRpb25zKSAleyFmc3ludGF4LW9ubHk6JShpbnZva2VfYXMpfX19fSIsIDAsIDAsIDB9LAotKyAgICIleyFNOiV7IU1NOiV7IUU6Y2MxIC1mcHJlcHJvY2Vzc2VkICVpICVJICUoY2MxX29wdGlvbnMpICV7IWZzeW50YXgtb25seTolKGludm9rZV9hcyl9fX19IiwgMCwgMCwgMH0sCi0gICB7Ii5zIiwgIkBhc3NlbWJsZXIiLCAwLCAwLCAwfSwKLSAgIHsiQGFzc2VtYmxlciIsCi0gICAgIiV7IU06JXshTU06JXshRToleyFTOmFzICUoYXNtX2RlYnVnKSAlKGFzbV9vcHRpb25zKSAlaSAlQSB9fX19IiwgMCwgMCwgMH0sCi0tLSAKLTEuNy4xMC40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDAyOC1NSVBTNjQtRGVmYXVsdC10by1ONjQtQUJJLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDI4LU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2Mzg3MjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDI4LU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIDMwMWUxOGQ0NzExZGI1OTI1ZTc2N2ZhZDA4ZGZmYTljZmUwYTJmMWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyMzowOCArMDQwMAotU3ViamVjdDogW1BBVENIIDI4LzM1XSBNSVBTNjQ6IERlZmF1bHQgdG8gTjY0IEFCSQotCi1NSVBTNjQgZGVmYXVsdHMgdG8gbjMyIEFCSSwgdGhpcyBwYXRjaCBtYWtlcyBpdAotc28gdGhhdCBpdCBkZWZhdWx0cyB0byBONjQgQUJJCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlnIHNwZWNpZmljXQotLS0tCi0gZ2NjL2NvbmZpZy5nY2MgfCAgICAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnLmdjYyBiL2djYy9jb25maWcuZ2NjCi1pbmRleCAxYTBiZTUwLi45ODljMmZiIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy5nY2MKLSsrKyBiL2djYy9jb25maWcuZ2NjCi1AQCAtMTc5Nyw3ICsxNzk3LDcgQEAgbWlwcyotbXRpLWxpbnV4KikKLSBtaXBzNjQqLSotbGludXgqIHwgbWlwc2lzYTY0Ki0qLWxpbnV4KikKLSAJdG1fZmlsZT0iZGJ4ZWxmLmggZWxmb3MuaCBnbnUtdXNlci5oIGxpbnV4LmggZ2xpYmMtc3RkaW50LmggJHt0bV9maWxlfSBtaXBzL2dudS11c2VyLmggbWlwcy9nbnUtdXNlcjY0LmggbWlwcy9saW51eDY0LmggbWlwcy9saW51eC1jb21tb24uaCIKLSAJdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlfSBtaXBzL3QtbGludXg2NCIKLS0JdG1fZGVmaW5lcz0iJHt0bV9kZWZpbmVzfSBNSVBTX0FCSV9ERUZBVUxUPUFCSV9OMzIiCi0rCXRtX2RlZmluZXM9IiR7dG1fZGVmaW5lc30gTUlQU19BQklfREVGQVVMVD1BQklfNjQiCi0gCWNhc2UgJHt0YXJnZXR9IGluCi0gCQltaXBzNjRlbC1zdC1saW51eC1nbnUpCi0gCQkJdG1fZmlsZT0iJHt0bV9maWxlfSBtaXBzL3N0LmgiCi0tLSAKLTEuNy4xMC40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDAyOS1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDI5LURlZmluZS1HTElCQ19EWU5BTUlDX0xJTktFUi1hbmQtVUNMSUJDX0RZTkFNSUNfTElOS0UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2OWQyOTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDI5LURlZmluZS1HTElCQ19EWU5BTUlDX0xJTktFUi1hbmQtVUNMSUJDX0RZTkFNSUNfTElOS0UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMjggKzAsMCBAQAotRnJvbSAyOWQxMjM0NGZiNjgyYTA1M2RlNTNlYjA4Yjk1NzA0Y2YzYjY3YWYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjQ6NTAgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAyOS8zNV0gRGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIGFuZCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIKLSByZWxhdGl2ZSB0byBTWVNURU1MSUJTX0RJUgotCi1UaGlzIHBhdGNoIGRlZmluZXMgR0xJQkNfRFlOQU1JQ19MSU5LRVIgYW5kIFVDTElCQ19EWU5BTUlDX0xJTktFUgotcmVsYXRpdmUgdG8gU1lTVEVNTElCU19ESVIgd2hpY2ggY2FuIGJlIHNldCBpbiBnZW5lcmF0ZWQgaGVhZGVycwotVGhpcyBicmVha3MgdGhlIGFzc3VtcHRpb24gb2YgaGFyZGNvZGVkIG11bHRpbGliIGluIGdjYwotQ2hhbmdlIGlzIG9ubHkgZm9yIHRoZSBzdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlcyBpbiBPRSBpbmNsdWRpbmcKLVNILCBzcGFyYywgYWxwaGEgZm9yIHBvc3NpYmxlIGZ1dHVyZSBzdXBwb3J0IChpZiBhbnkpCi0KLVJlbW92ZXMgdGhlIGRvX2hlYWRlcmZpeCB0YXNrIGluIG1ldGFkYXRhCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlndXJhdGlvbl0KLS0tLQotIGdjYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmggfCAgICA0ICsrLS0KLSBnY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmggIHwgICAgNCArKy0tCi0gZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmggICB8ICAgIDIgKy0KLSBnY2MvY29uZmlnL2kzODYvbGludXguaCAgICAgIHwgICAgMiArLQotIGdjYy9jb25maWcvaTM4Ni9saW51eDY0LmggICAgfCAgICA2ICsrKy0tLQotIGdjYy9jb25maWcvbWlwcy9saW51eC5oICAgICAgfCAgICAyICstCi0gZ2NjL2NvbmZpZy9taXBzL2xpbnV4NjQuaCAgICB8ICAgIDggKysrKy0tLS0KLSBnY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmggIHwgICAgOCArKysrLS0tLQotIGdjYy9jb25maWcvc2gvbGludXguaCAgICAgICAgfCAgICAyICstCi0gZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oICAgICB8ICAgIDIgKy0KLSBnY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaCAgIHwgICAgNCArKy0tCi0gMTEgZmlsZXMgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKSwgMjIgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnY2MtNC45LjAvZ2NjL2NvbmZpZy9hbHBoYS9saW51eC1lbGYuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy00LjkuMC5vcmlnL2djYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmgJMjAxNC0wNS0wNyAxNjo0Mzo1MC42MDkxMDY1MzUgKzAwMDAKLSsrKyBnY2MtNC45LjAvZ2NjL2NvbmZpZy9hbHBoYS9saW51eC1lbGYuaAkyMDE0LTA1LTA3IDE2OjQzOjUwLjYwNTEwNjUzNSArMDAwMAotQEAgLTIzLDggKzIzLDggQEAKLSAjZGVmaW5lIEVYVFJBX1NQRUNTIFwKLSB7ICJlbGZfZHluYW1pY19saW5rZXIiLCBFTEZfRFlOQU1JQ19MSU5LRVIgfSwKLSAKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSCSIvbGliL2xkLWxpbnV4LnNvLjIiCi0tI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtdUNsaWJjLnNvLjAiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUglTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKLSsjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUiAgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wIgotICNpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19VQ0xJQkMKLSAjZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVKSAiJXttZ2xpYmM6IiBHICI7OiIgVSAifSIKLSAjZWxpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19HTElCQwotSW5kZXg6IGdjYy00LjkuMC9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtNC45LjAub3JpZy9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgJMjAxNC0wNS0wNyAxNjo0Mzo1MC42MDkxMDY1MzUgKzAwMDAKLSsrKyBnY2MtNC45LjAvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCTIwMTQtMDUtMDcgMTY6NDM6NTAuNjA1MTA2NTM1ICswMDAwCi1AQCAtNjgsOCArNjgsOCBAQAotICAgIEdMSUJDX0RZTkFNSUNfTElOS0VSX0RFRkFVTFQgYW5kIFRBUkdFVF9ERUZBVUxUX0ZMT0FUX0FCSS4gICovCi0gCi0gI3VuZGVmICBHTElCQ19EWU5BTUlDX0xJTktFUgotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJfU09GVF9GTE9BVCAiL2xpYi9sZC1saW51eC5zby4zIgotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJfSEFSRF9GTE9BVCAiL2xpYi9sZC1saW51eC1hcm1oZi5zby4zIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJfU09GVF9GTE9BVCBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMyIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX0hBUkRfRkxPQVQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LWFybWhmLnNvLjMiCi0gI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUl9ERUZBVUxUIEdMSUJDX0RZTkFNSUNfTElOS0VSX1NPRlRfRkxPQVQKLSAKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFwKLUluZGV4OiBnY2MtNC45LjAvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtNC45LjAub3JpZy9nY2MvY29uZmlnL2FybS9saW51eC1lbGYuaAkyMDE0LTA1LTA3IDE2OjQzOjUwLjYwOTEwNjUzNSArMDAwMAotKysrIGdjYy00LjkuMC9nY2MvY29uZmlnL2FybS9saW51eC1lbGYuaAkyMDE0LTA1LTA3IDE2OjQzOjUwLjYwNTEwNjUzNSArMDAwMAotQEAgLTU3LDcgKzU3LDcgQEAKLSAKLSAjZGVmaW5lIExJQkdDQ19TUEVDICIle21mbG9hdC1hYmk9c29mdCo6LWxmbG9hdH0gLWxnY2MiCi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0gCi0gI2RlZmluZSBMSU5VWF9UQVJHRVRfTElOS19TUEVDICAiJXtoKn0gXAotICAgICV7c3RhdGljOi1Cc3RhdGljfSBcCi1JbmRleDogZ2NjLTQuOS4wL2djYy9jb25maWcvaTM4Ni9saW51eC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2NjLTQuOS4wLm9yaWcvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmgJMjAxNC0wNS0wNyAxNjo0Mzo1MC42MDkxMDY1MzUgKzAwMDAKLSsrKyBnY2MtNC45LjAvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmgJMjAxNC0wNS0wNyAxNjo0Mzo1MC42MDUxMDY1MzUgKzAwMDAKLUBAIC0yMCw0ICsyMCw0IEBACi0gPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSAKLSAjZGVmaW5lIEdOVV9VU0VSX0xJTktfRU1VTEFUSU9OICJlbGZfaTM4NiIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LnNvLjIiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKLUluZGV4OiBnY2MtNC45LjAvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy00LjkuMC5vcmlnL2djYy9jb25maWcvaTM4Ni9saW51eDY0LmgJMjAxNC0wNS0wNyAxNjo0Mzo1MC42MDkxMDY1MzUgKzAwMDAKLSsrKyBnY2MtNC45LjAvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaAkyMDE0LTA1LTA3IDE2OjQzOjUwLjYwNTEwNjUzNSArMDAwMAotQEAgLTI3LDYgKzI3LDYgQEAKLSAjZGVmaW5lIEdOVV9VU0VSX0xJTktfRU1VTEFUSU9ONjQgImVsZl94ODZfNjQiCi0gI2RlZmluZSBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTlgzMiAiZWxmMzJfeDg2XzY0IgotIAotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC1saW51eC5zby4yIgotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiL2xpYjY0L2xkLWxpbnV4LXg4Ni02NC5zby4yIgotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJYMzIgIi9saWJ4MzIvbGQtbGludXgteDMyLnNvLjIiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBTWVNURU1MSUJTX0RJUiAibGQtbGludXgteDg2LTY0LnNvLjIiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUlgzMiBTWVNURU1MSUJTX0RJUiAibGQtbGludXgteDMyLnNvLjIiCi1JbmRleDogZ2NjLTQuOS4wL2djYy9jb25maWcvbWlwcy9saW51eC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2NjLTQuOS4wLm9yaWcvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmgJMjAxNC0wNS0wNyAxNjo0Mzo1MC42MDkxMDY1MzUgKzAwMDAKLSsrKyBnY2MtNC45LjAvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmgJMjAxNC0wNS0wNyAxNjo0Mzo1MC42MDUxMDY1MzUgKzAwMDAKLUBAIC0xOCw4ICsxOCw4IEBACi0gPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSAKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFwKLS0gICIle21uYW49MjAwODovbGliL2xkLWxpbnV4LW1pcHNuOC5zby4xOzovbGliL2xkLnNvLjF9IgotKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LW1pcHNuOC5zby4xOzoiIFNZU1RFTUxJQlNfRElSICJsZC5zby4xfSIKLSAKLSAjdW5kZWYgVUNMSUJDX0RZTkFNSUNfTElOS0VSCi0gI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIgXAotLSAgIiV7bW5hbj0yMDA4Oi9saWIvbGQtdUNsaWJjLW1pcHNuOC5zby4wOzovbGliL2xkLXVDbGliYy5zby4wfSIKLSsgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMtbWlwc244LnNvLjA7OiIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wfSIKLUluZGV4OiBnY2MtNC45LjAvZ2NjL2NvbmZpZy9taXBzL2xpbnV4NjQuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy00LjkuMC5vcmlnL2djYy9jb25maWcvbWlwcy9saW51eDY0LmgJMjAxNC0wNS0wNyAxNjo0Mzo1MC42MDkxMDY1MzUgKzAwMDAKLSsrKyBnY2MtNC45LjAvZ2NjL2NvbmZpZy9taXBzL2xpbnV4NjQuaAkyMDE0LTA1LTA3IDE2OjQzOjUwLjYwNTEwNjUzNSArMDAwMAotQEAgLTIzLDIwICsyMywyMCBAQAotICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT05OMzIgImVsZjMyJXtFQjpifSV7RUw6bH10c21pcG4zMiIKLSAKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgXAotLSAgIiV7bW5hbj0yMDA4Oi9saWIvbGQtbGludXgtbWlwc244LnNvLjE7Oi9saWIvbGQuc28uMX0iCi0rICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtbWlwc244LnNvLjE7OiIgU1lTVEVNTElCU19ESVIgImxkLnNvLjF9IgotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBcCi0tICAiJXttbmFuPTIwMDg6L2xpYjY0L2xkLWxpbnV4LW1pcHNuOC5zby4xOzovbGliNjQvbGQuc28uMX0iCi0rICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtbWlwc244LnNvLjE7OiIgU1lTVEVNTElCU19ESVIgImxkLnNvLjF9IgotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJOMzIgXAotLSAgIiV7bW5hbj0yMDA4Oi9saWIzMi9sZC1saW51eC1taXBzbjguc28uMTs6L2xpYjMyL2xkLnNvLjF9IgotKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LW1pcHNuOC5zby4xOzoiIFNZU1RFTUxJQlNfRElSICJsZC5zby4xfSIKLSAKLSAjdW5kZWYgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIKLSAjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyIFwKLS0gICIle21uYW49MjAwODovbGliL2xkLXVDbGliYy1taXBzbjguc28uMDs6L2xpYi9sZC11Q2xpYmMuc28uMH0iCi0rICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLW1pcHNuOC5zby4wOzoiIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMH0iCi0gI3VuZGVmIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0Ci0gI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBcCi0tICAiJXttbmFuPTIwMDg6L2xpYi9sZDY0LXVDbGliYy1taXBzbjguc28uMDs6L2xpYi9sZDY0LXVDbGliYy5zby4wfSIKLSsgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZDY0LXVDbGliYy1taXBzbjguc28uMDs6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC11Q2xpYmMuc28uMH0iCi0gI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVJOMzIgXAotLSAgIiV7bW5hbj0yMDA4Oi9saWIzMi9sZC11Q2xpYmMtbWlwc244LnNvLjA7Oi9saWIzMi9sZC11Q2xpYmMuc28uMH0iCi0rICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLW1pcHNuOC5zby4wOzoiIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMH0iCi0gCi0gI2RlZmluZSBCSU9OSUNfRFlOQU1JQ19MSU5LRVJOMzIgIi9zeXN0ZW0vYmluL2xpbmtlcjMyIgotICNkZWZpbmUgR05VX1VTRVJfRFlOQU1JQ19MSU5LRVJOMzIgXAotSW5kZXg6IGdjYy00LjkuMC9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtNC45LjAub3JpZy9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgJMjAxNC0wNS0wNyAxNjo0Mzo1MC42MDkxMDY1MzUgKzAwMDAKLSsrKyBnY2MtNC45LjAvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCTIwMTQtMDUtMDcgMTY6NDM6NTAuNjA1MTA2NTM1ICswMDAwCi1AQCAtMzY3LDE0ICszNjcsMTQgQEAKLSAjdW5kZWYJTElOS19PU19ERUZBVUxUX1NQRUMKLSAjZGVmaW5lIExJTktfT1NfREVGQVVMVF9TUEVDICIlKGxpbmtfb3NfbGludXgpIgotIAotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC5zby4xIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQuc28uMSIKLSAjaWZkZWYgTElOVVg2NF9ERUZBVUxUX0FCSV9FTEZ2MgotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiJXttYWJpPWVsZnYxOi9saWI2NC9sZDY0LnNvLjE7Oi9saWI2NC9sZDY0LnNvLjJ9IgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiJXttYWJpPWVsZnYxOiIgU1lTVEVNTElCU19ESVIgImxkNjQuc28uMTs6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC5zby4yfSIKLSAjZWxzZQotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiJXttYWJpPWVsZnYyOi9saWI2NC9sZDY0LnNvLjI7Oi9saWI2NC9sZDY0LnNvLjF9IgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiJXttYWJpPWVsZnYyOiIgU1lTVEVNTElCU19ESVIgImxkNjQuc28uMjs6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC5zby4xfSIKLSAjZW5kaWYKLS0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyICIvbGliL2xkLXVDbGliYy5zby4wIgotLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQgIi9saWIvbGQ2NC11Q2xpYmMuc28uMCIKLSsjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMCIKLSsjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0IFNZU1RFTUxJQlNfRElSICJsZDY0LXVDbGliYy5zby4wIgotICNpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19VQ0xJQkMKLSAjZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVKSAiJXttZ2xpYmM6IiBHICI7OiIgVSAifSIKLSAjZWxpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19HTElCQwotSW5kZXg6IGdjYy00LjkuMC9nY2MvY29uZmlnL3NoL2xpbnV4LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtNC45LjAub3JpZy9nY2MvY29uZmlnL3NoL2xpbnV4LmgJMjAxNC0wNS0wNyAxNjo0Mzo1MC42MDkxMDY1MzUgKzAwMDAKLSsrKyBnY2MtNC45LjAvZ2NjL2NvbmZpZy9zaC9saW51eC5oCTIwMTQtMDUtMDcgMTY6NDM6NTAuNjA1MTA2NTM1ICswMDAwCi1AQCAtNDMsNyArNDMsNyBAQAotIAotICNkZWZpbmUgVEFSR0VUX0FTTV9GSUxFX0VORCBmaWxlX2VuZF9pbmRpY2F0ZV9leGVjX3N0YWNrCi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0gCi0gI3VuZGVmIFNVQlRBUkdFVF9MSU5LX0VNVUxfU1VGRklYCi0gI2RlZmluZSBTVUJUQVJHRVRfTElOS19FTVVMX1NVRkZJWCAiX2xpbnV4IgotSW5kZXg6IGdjYy00LjkuMC9nY2MvY29uZmlnL3NwYXJjL2xpbnV4LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtNC45LjAub3JpZy9nY2MvY29uZmlnL3NwYXJjL2xpbnV4LmgJMjAxNC0wNS0wNyAxNjo0Mzo1MC42MDkxMDY1MzUgKzAwMDAKLSsrKyBnY2MtNC45LjAvZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oCTIwMTQtMDUtMDcgMTY6NDM6NTAuNjA1MTA2NTM1ICswMDAwCi1AQCAtODMsNyArODMsNyBAQAotICAgIFdoZW4gdGhlIC1zaGFyZWQgbGluayBvcHRpb24gaXMgdXNlZCBhIGZpbmFsIGxpbmsgaXMgbm90IGJlaW5nCi0gICAgZG9uZS4gICovCi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0gCi0gI3VuZGVmICBMSU5LX1NQRUMKLSAjZGVmaW5lIExJTktfU1BFQyAiLW0gZWxmMzJfc3BhcmMgJXtzaGFyZWQ6LXNoYXJlZH0gXAotSW5kZXg6IGdjYy00LjkuMC9nY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy00LjkuMC5vcmlnL2djYy9jb25maWcvc3BhcmMvbGludXg2NC5oCTIwMTQtMDUtMDcgMTY6NDM6NTAuNjA5MTA2NTM1ICswMDAwCi0rKysgZ2NjLTQuOS4wL2djYy9jb25maWcvc3BhcmMvbGludXg2NC5oCTIwMTQtMDUtMDcgMTY6NDM6NTAuNjA1MTA2NTM1ICswMDAwCi1AQCAtOTIsOCArOTIsOCBAQAotICAgIFdoZW4gdGhlIC1zaGFyZWQgbGluayBvcHRpb24gaXMgdXNlZCBhIGZpbmFsIGxpbmsgaXMgbm90IGJlaW5nCi0gICAgZG9uZS4gICovCi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyICIvbGliL2xkLWxpbnV4LnNvLjIiCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0ICIvbGliNjQvbGQtbGludXguc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgotIAotICNpZmRlZiBTUEFSQ19CSV9BUkNICi0gCi1JbmRleDogZ2NjLTQuOS4wL2djYy9jb25maWcvbGludXguaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy00LjkuMC5vcmlnL2djYy9jb25maWcvbGludXguaAkyMDE0LTA1LTA3IDE2OjQzOjUwLjYwOTEwNjUzNSArMDAwMAotKysrIGdjYy00LjkuMC9nY2MvY29uZmlnL2xpbnV4LmgJMjAxNC0wNS0wNyAxNjo0Mzo1MC42MDUxMDY1MzUgKzAwMDAKLUBAIC03MywxMCArNzMsMTAgQEAKLSAgICBHTElCQ19EWU5BTUlDX0xJTktFUiBtdXN0IGJlIGRlZmluZWQgZm9yIGVhY2ggdGFyZ2V0IHVzaW5nIHRoZW0sIG9yCi0gICAgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBhbmQgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBmb3IgdGFyZ2V0cwotICAgIHN1cHBvcnRpbmcgYm90aCAzMi1iaXQgYW5kIDY0LWJpdCBjb21waWxhdGlvbi4gICovCi0tI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtdUNsaWJjLnNvLjAiCi0tI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC11Q2xpYmMuc28uMCIKLS0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0ICIvbGliL2xkNjQtdUNsaWJjLnNvLjAiCi0tI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVJYMzIgIi9saWIvbGR4MzItdUNsaWJjLnNvLjAiCi0rI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wIgotKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wIgotKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkNjQtdUNsaWJjLnNvLjAiCi0rI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVJYMzIgU1lTVEVNTElCU19ESVIgImxkeDMyLXVDbGliYy5zby4wIgotICNkZWZpbmUgQklPTklDX0RZTkFNSUNfTElOS0VSICIvc3lzdGVtL2Jpbi9saW5rZXIiCi0gI2RlZmluZSBCSU9OSUNfRFlOQU1JQ19MSU5LRVIzMiAiL3N5c3RlbS9iaW4vbGlua2VyIgotICNkZWZpbmUgQklPTklDX0RZTkFNSUNfTElOS0VSNjQgIi9zeXN0ZW0vYmluL2xpbmtlcjY0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDMwLWdjYy1GaXgtYXJndW1lbnQtbGlzdC10b28tbG9uZy1lcnJvci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDAzMC1nY2MtRml4LWFyZ3VtZW50LWxpc3QtdG9vLWxvbmctZXJyb3IucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjZWFmZjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDMwLWdjYy1GaXgtYXJndW1lbnQtbGlzdC10b28tbG9uZy1lcnJvci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gYzE4MTZjMTYwMTU2Zjk5YzM0ZTZhMGEwMzExYmIwMjE5MzI2ODA0ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjI2OjM3ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMzAvMzVdIGdjYzogRml4IGFyZ3VtZW50IGxpc3QgdG9vIGxvbmcgZXJyb3IuCi0KLVRoZXJlIHdvdWxkIGJlIGFuICJBcmd1bWVudCBsaXN0IHRvbyBsb25nIiBlcnJvciB3aGVuIHRoZQotYnVpbGQgZGlyZWN0b3J5IGlzIGxvbmdlciB0aGFuIDIwMCwgdGhpcyBpcyBjYXVzZWQgYnk6Ci0KLWhlYWRlcnM9YGVjaG8gJChQTFVHSU5fSEVBREVSUykgfCB0ciAnICcgJ1wwMTInIHwgc29ydCAtdWAKLQotVGhlIFBMVUdJTl9IRUFERVJTIGlzIHRvbyBsb25nIGJlZm9yZSBzb3J0LCBzbyB0aGUgImVjaG8iIGNhbid0IGhhbmRsZQotaXQsIHVzZSB0aGUgJChzb3J0IGxpc3QpIG9mIEdOVSBtYWtlIHdoaWNoIGNhbiBoYW5kbGUgdGhlIHRvbyBsb25nIGxpc3QKLXdvdWxkIGZpeCB0aGUgcHJvYmxlbSwgdGhlIGhlYWRlciB3b3VsZCBiZSBzaG9ydCBlbm91Z2ggYWZ0ZXIgc29ydGVkLgotVGhlICJ0ciAnICcgJ1wwMTInIiB3YXMgdXNlZCBmb3IgdHJhbnNsYXRpbmcgdGhlIHNwYWNlIHRvICJcbiIsIHRoZQotJChzb3J0IGxpc3QpIGRvZXNuJ3QgbmVlZCB0aGlzLgotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gZ2NjL01ha2VmaWxlLmluIHwgICAgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL01ha2VmaWxlLmluIGIvZ2NjL01ha2VmaWxlLmluCi1pbmRleCAyMzIwNDk3Li44NTYyYTYyIDEwMDY0NAotLS0tIGEvZ2NjL01ha2VmaWxlLmluCi0rKysgYi9nY2MvTWFrZWZpbGUuaW4KLUBAIC00NjI3LDcgKzQ2MjcsNyBAQCBpbnN0YWxsLXBsdWdpbjogaW5zdGFsbGRpcnMgbGFuZy5pbnN0YWxsLXBsdWdpbiBzLWhlYWRlci12YXJzIGluc3RhbGwtZ2VuZ3R5cGUKLSAjIFdlIGtlZXAgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGZpbGVzIGluIGNvbmZpZyBvciBjLWZhbWlseSBhbmQgLmRlZgotICMgZmlsZXMuIEFsbCBvdGhlciBmaWxlcyBhcmUgZmxhdHRlbmVkIHRvIGEgc2luZ2xlIGRpcmVjdG9yeS4KLSAJJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChwbHVnaW5faW5jbHVkZWRpcikKLS0JaGVhZGVycz1gZWNobyAkKFBMVUdJTl9IRUFERVJTKSB8IHRyICcgJyAnXDAxMicgfCBzb3J0IC11YDsgXAotKwloZWFkZXJzPSIkKHNvcnQgJChQTFVHSU5fSEVBREVSUykpIjsgXAotIAlzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIpIiB8IHNlZCAncy9bXS5bXiQkXFwqfF0vXFxcXCYvZydgOyBcCi0gCWZvciBmaWxlIGluICQkaGVhZGVyczsgZG8gXAotIAkgIGlmIFsgLWYgJCRmaWxlIF0gOyB0aGVuIFwKLS0tIAotMS43LjEwLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDMxLURpc2FibGUtc2R0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDMxLURpc2FibGUtc2R0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzFkNWUwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDAzMS1EaXNhYmxlLXNkdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExMyArMCwwIEBACi1Gcm9tIGI4NTI2NWJjOTRlYzFiZWFmMWQzYjY5N2MwM2RiNjI5OTE1NTM0NjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyODoxMCArMDQwMAotU3ViamVjdDogW1BBVENIIDMxLzM1XSBEaXNhYmxlIHNkdC4KLQotV2UgZG9uJ3QgbGlzdCBkdHJhY2UgaW4gREVQRU5EUyBzbyB3ZSBzaG91bGRuJ3QgYmUgZGVwZW5kaW5nIG9uIHRoaXMgaGVhZGVyLgotSXQgbWF5IG9yIG1heSBub3QgZXhpc3QgZnJvbSBwcmVpdm91cyBidWlsZHMgdGhvdWdoLiBUbyBiZSBkZXRlcm1pbnN0aWMsIGRpc2FibGUKLXNkdC5oIHVzYWdlIGFsd2F5cy4gVGhpcyBhdm9pZHMgYnVpbGQgZmFpbHVyZXMgaWYgdGhlIGhlYWRlciBpcyByZW1vdmVkIGFmdGVyIGNvbmZpZ3VyZQotYnV0IGJlZm9yZSBsaWJnY2MgaXMgY29tcGlsZWQgZm9yIGV4YW1wbGUuCi0KLVJQIDIwMTIvOC83Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLURpc2FibGUgc2R0IGZvciBsaWJzdGRjKystdjMuCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2hhY2tdCi0tLS0KLSBnY2MvY29uZmlndXJlICAgICAgICAgICAgIHwgMTIgKysrKysrLS0tLS0tCi0gZ2NjL2NvbmZpZ3VyZS5hYyAgICAgICAgICB8IDE4ICsrKysrKysrKy0tLS0tLS0tLQotIGxpYnN0ZGMrKy12My9jb25maWd1cmUgICAgfCAgNiArKystLS0KLSBsaWJzdGRjKystdjMvY29uZmlndXJlLmFjIHwgIDIgKy0KLSA0IGZpbGVzIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKLWluZGV4IDNjNTUwYTYuLjAxYzc2MjYgMTAwNzU1Ci0tLS0gYS9nY2MvY29uZmlndXJlCi0rKysgYi9nY2MvY29uZmlndXJlCi1AQCAtMjY4MTIsMTIgKzI2ODEyLDEyIEBAIGZpCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBzeXMvc2R0LmggaW4gdGhlIHRhcmdldCBDIGxpYnJhcnkiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIHN5cy9zZHQuaCBpbiB0aGUgdGFyZ2V0IEMgbGlicmFyeS4uLiAiID4mNjsgfQotIGhhdmVfc3lzX3NkdF9oPW5vCi0taWYgdGVzdCAtZiAkdGFyZ2V0X2hlYWRlcl9kaXIvc3lzL3NkdC5oOyB0aGVuCi0tICBoYXZlX3N5c19zZHRfaD15ZXMKLS0KLS0kYXNfZWNobyAiI2RlZmluZSBIQVZFX1NZU19TRFRfSCAxIiA+PmNvbmZkZWZzLmgKLS0KLS1maQotKyNpZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KLSsjICBoYXZlX3N5c19zZHRfaD15ZXMKLSsjCi0rIyRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1lTX1NEVF9IIDEiID4+Y29uZmRlZnMuaAotKyMKLSsjZmkKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGhhdmVfc3lzX3NkdF9oIiA+JjUKLSAkYXNfZWNobyAiJGhhdmVfc3lzX3NkdF9oIiA+JjY7IH0KLSAKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYwotaW5kZXggMzYwMWFiNi4uMDZlNTAxZiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWd1cmUuYWMKLSsrKyBiL2djYy9jb25maWd1cmUuYWMKLUBAIC00Nzc5LDE1ICs0Nzc5LDE1IEBAIGlmIHRlc3QgeCRnY2NfY3ZfbGliY19wcm92aWRlc19zc3AgPSB4eWVzOyB0aGVuCi0gZmkKLSAKLSAjIFRlc3QgZm9yIDxzeXMvc2R0Lmg+IG9uIHRoZSB0YXJnZXQuCi0tR0NDX1RBUkdFVF9URU1QTEFURShbSEFWRV9TWVNfU0RUX0hdKQotLUFDX01TR19DSEVDS0lORyhzeXMvc2R0LmggaW4gdGhlIHRhcmdldCBDIGxpYnJhcnkpCi0taGF2ZV9zeXNfc2R0X2g9bm8KLS1pZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KLS0gIGhhdmVfc3lzX3NkdF9oPXllcwotLSAgQUNfREVGSU5FKEhBVkVfU1lTX1NEVF9ILCAxLAotLSAgICAgICAgICAgIFtEZWZpbmUgaWYgeW91ciB0YXJnZXQgQyBsaWJyYXJ5IHByb3ZpZGVzIHN5cy9zZHQuaF0pCi0tZmkKLS1BQ19NU0dfUkVTVUxUKCRoYXZlX3N5c19zZHRfaCkKLSsjR0NDX1RBUkdFVF9URU1QTEFURShbSEFWRV9TWVNfU0RUX0hdKQotKyNBQ19NU0dfQ0hFQ0tJTkcoc3lzL3NkdC5oIGluIHRoZSB0YXJnZXQgQyBsaWJyYXJ5KQotKyNoYXZlX3N5c19zZHRfaD1ubwotKyNpZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KLSsjICBoYXZlX3N5c19zZHRfaD15ZXMKLSsjICBBQ19ERUZJTkUoSEFWRV9TWVNfU0RUX0gsIDEsCi0rIyAgICAgICAgICAgIFtEZWZpbmUgaWYgeW91ciB0YXJnZXQgQyBsaWJyYXJ5IHByb3ZpZGVzIHN5cy9zZHQuaF0pCi0rI2ZpCi0rI0FDX01TR19SRVNVTFQoJGhhdmVfc3lzX3NkdF9oKQotIAotICMgQ2hlY2sgaWYgVEZtb2RlIGxvbmcgZG91YmxlIHNob3VsZCBiZSB1c2VkIGJ5IGRlZmF1bHQgb3Igbm90LgotICMgU29tZSBnbGliYyB0YXJnZXRzIHVzZWQgREZtb2RlIGxvbmcgZG91YmxlLCBidXQgd2l0aCBnbGliYyAyLjQKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlndXJlIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZQotaW5kZXggNDk1M2M5Zi4uNTNhMTE0NSAxMDA3NTUKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUKLUBAIC0yMDU3OCwxMSArMjA1NzgsMTEgQEAgYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JwotIGFjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCi0gYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQotIAotLSAgaWYgdGVzdCAkZ2xpYmN4eF9jdl9zeXNfc2R0X2ggPSB5ZXM7IHRoZW4KLSsjICBpZiB0ZXN0ICRnbGliY3h4X2N2X3N5c19zZHRfaCA9IHllczsgdGhlbgotIAotLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1lTX1NEVF9IIDEiID4+Y29uZmRlZnMuaAotKyMkYXNfZWNobyAiI2RlZmluZSBIQVZFX1NZU19TRFRfSCAxIiA+PmNvbmZkZWZzLmgKLSAKLS0gIGZpCi0rIyAgZmkKLSAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xpYmN4eF9jdl9zeXNfc2R0X2giID4mNQotICRhc19lY2hvICIkZ2xpYmN4eF9jdl9zeXNfc2R0X2giID4mNjsgfQotIAotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMgYi9saWJzdGRjKystdjMvY29uZmlndXJlLmFjCi1pbmRleCA3M2Q0MzBhLi5mMjEzNWUyIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYwotQEAgLTIxMSw3ICsyMTEsNyBAQCBHTElCQ1hYX0NIRUNLX1NDX05QUk9DRVNTT1JTX09OTE4KLSBHTElCQ1hYX0NIRUNLX1NDX05QUk9DX09OTE4KLSBHTElCQ1hYX0NIRUNLX1BUSFJFQURTX05VTV9QUk9DRVNTT1JTX05QCi0gR0xJQkNYWF9DSEVDS19TWVNDVExfSFdfTkNQVQotLUdMSUJDWFhfQ0hFQ0tfU0RUX0gKLSsjR0xJQkNYWF9DSEVDS19TRFRfSAotIAotICMgQ2hlY2sgZm9yIGF2YWlsYWJsZSBoZWFkZXJzLgotIEFDX0NIRUNLX0hFQURFUlMoW2VuZGlhbi5oIGV4ZWNpbmZvLmggZmxvYXQuaCBmcC5oIGllZWVmcC5oIGludHR5cGVzLmggXAotLS0gCi0xLjguMy4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDAzMi1saWJ0b29sLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDMyLWxpYnRvb2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiM2QxYjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDMyLWxpYnRvb2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1Gcm9tIDZjNzE1ZmNmYTI2MmFkYWRjYTgxYzY4YTFmM2Y2OWFhMzE4N2E1MDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyOToxMSArMDQwMAotU3ViamVjdDogW1BBVENIIDMyLzM1XSBsaWJ0b29sCi0KLWxpYnN0ZGMrKyBmcm9tIGdjYy1ydW50aW1lIGdldHMgY3JlYXRlZCB3aXRoIC1ycGF0aD0vdXNyL2xpYi8uLi9saWIgZm9yIHFlbXV4ODYtNjQKLXdoZW4gcnVubmluZyBvbiBhbSB4ODZfNjQgYnVpbGQgaG9zdC4KLQotVGhpcyBwYXRjaCBzdG9wcyB0aGlzIHNwZWFkaW5nIHRvIGxpYmRpciBpbiB0aGUgbGlic3RkYysrLmxhIGZpbGUgd2l0aGluIGxpYnRvb2wuCi1Bcmd1YWJseSwgaXQgc2hvdWxkbid0IGJlIHBhc3NpbmcgdGhpcyBpbnRvIGxpYnRvb2wgaW4gdGhlIGZpcnN0IHBsYWNlIGJ1dAotZm9yIG5vdyB0aGlzIHJlc29sdmVzIHRoZSBuYXN0aWVzdCBwcm9ibGVtcyB0aGlzIGNhdXNlcy4KLQotZnVuY19ub3JtYWxfYWJzcGF0aCB3b3VsZCByZXNvbHZlIGFuIGVtcHR5IHBhdGggdG8gYHB3ZGAgc28gd2UgbmVlZAotdG8gZmlsdGVyIHRoZSB6ZXJvIGNhc2UuCi0KLVJQIDIwMTIvOC8yNAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGx0bWFpbi5zaCB8ICAgIDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaAotaW5kZXggYTAzNDMzZi4uNDZmNDdjMiAxMDA2NDQKLS0tLSBhL2x0bWFpbi5zaAotKysrIGIvbHRtYWluLnNoCi1AQCAtNjM1OSw2ICs2MzU5LDEwIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCWZ1bmNfd2FybmluZyAiaWdub3JpbmcgbXVsdGlwbGUgXGAtcnBhdGgncyBmb3IgYSBsaWJ0b29sIGxpYnJhcnkiCi0gCi0gICAgICAgaW5zdGFsbF9saWJkaXI9IiQxIgotKyAgICAgIGlmIHRlc3QgLW4gIiRpbnN0YWxsX2xpYmRpciI7IHRoZW4KLSsJZnVuY19ub3JtYWxfYWJzcGF0aCAiJGluc3RhbGxfbGliZGlyIgotKwlpbnN0YWxsX2xpYmRpcj0kZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQKLSsgICAgICBmaQotIAotICAgICAgIG9sZGxpYnM9Ci0gICAgICAgaWYgdGVzdCAteiAiJHJwYXRoIjsgdGhlbgotLS0gCi0xLjcuMTAuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwMzMtZ2NjLWFybXY0LXBhc3MtZml4LXY0YngtdG8tbGlua2VyLXRvLXN1cHBvcnQtRUFCSS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDAzMy1nY2MtYXJtdjQtcGFzcy1maXgtdjRieC10by1saW5rZXItdG8tc3VwcG9ydC1FQUJJLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMjM2YzM3YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwMzMtZ2NjLWFybXY0LXBhc3MtZml4LXY0YngtdG8tbGlua2VyLXRvLXN1cHBvcnQtRUFCSS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gOTdlNDU5MWMyMDMxMDQyNWU3YWNhMGU2NzEyYThkOTQ4MGU3NzQ0YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjMwOjMyICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMzMvMzVdIGdjYzogYXJtdjQ6IHBhc3MgZml4LXY0YnggdG8gbGlua2VyIHRvIHN1cHBvcnQgRUFCSS4KLQotVGhlIExJTktfU1BFQyBmb3IgbGludXggZ2V0cyBvdmVyd3JpdHRlbiBieSBsaW51eC1lYWJpLmggd2hpY2gKLW1lYW5zIHRoZSB2YWx1ZSBvZiBUQVJHRVRfRklYX1Y0QlhfU1BFQyBnZXRzIGxvc3QgYW5kIGFzIGEgcmVzdWx0Ci10aGUgb3B0aW9uIGlzIG5vdCBwYXNzZWQgdG8gbGlua2VyIHdoZW4gY2hvc2luZyBtYXJjaD1hcm12NAotVGhpcyBwYXRjaCByZWRlZmluZXMgdGhpcyBpbiBsaW51eC1lYWJpLmggYW5kIHJlaW5zZXJ0cyBpdAotZm9yIGVhYmkgZGVmYXVsdGluZyB0b29sY2hhaW5zLgotCi1XZSBtaWdodCB3YW50IHRvIHNlbmQgaXQgdXBzdHJlYW0uCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oIHwgICAgNiArKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLUluZGV4OiBnY2MtNC45LTIwMTQwMzE2L2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy00LjktMjAxNDAzMTYub3JpZy9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLSsrKyBnY2MtNC45LTIwMTQwMzE2L2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAotQEAgLTc3LDEwICs3NywxNCBAQAotICAgICAle21mbG9hdC1hYmk9c29mdCo6IiBHTElCQ19EWU5BTUlDX0xJTktFUl9TT0ZUX0ZMT0FUICJ9IFwKLSAgICAgJXshbWZsb2F0LWFiaT0qOiIgR0xJQkNfRFlOQU1JQ19MSU5LRVJfREVGQVVMVCAifSIKLSAKLSsvKiBGb3IgYXJtdjQgd2UgcGFzcyAtLWZpeC12NGJ4IHRvIGxpbmtlciB0byBzdXBwb3J0IEVBQkkgKi8KLSsjdW5kZWYgVEFSR0VUX0ZJWF9WNEJYX1NQRUMKLSsjZGVmaW5lIFRBUkdFVF9GSVhfVjRCWF9TUEVDICIle21jcHU9YXJtOHxtY3B1PWFybTgxMHxtY3B1PXN0cm9uZ2FybSp8bWFyY2g9YXJtdjQ6IC0tZml4LXY0Ynh9IgotKwotIC8qIEF0IHRoaXMgcG9pbnQsIGJwYWJpLmggd2lsbCBoYXZlIGNsb2JiZXJlZCBMSU5LX1NQRUMuICBXZSB3YW50IHRvCi0gICAgdXNlIHRoZSBHTlUvTGludXggdmVyc2lvbiwgbm90IHRoZSBnZW5lcmljIEJQQUJJIHZlcnNpb24uICAqLwotICN1bmRlZiAgTElOS19TUEVDCi0tI2RlZmluZSBMSU5LX1NQRUMgRUFCSV9MSU5LX1NQRUMJCQkJCVwKLSsjZGVmaW5lIExJTktfU1BFQyBUQVJHRVRfRklYX1Y0QlhfU1BFQyBFQUJJX0xJTktfU1BFQwkJCVwKLSAgIExJTlVYX09SX0FORFJPSURfTEQgKExJTlVYX1RBUkdFVF9MSU5LX1NQRUMsCQkJCVwKLSAJCSAgICAgICBMSU5VWF9UQVJHRVRfTElOS19TUEVDICIgIiBBTkRST0lEX0xJTktfU1BFQykKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDAzNC1Vc2UtdGhlLW11bHRpbGliLWNvbmZpZy1maWxlcy1mcm9tLUItaW5zdGVhZC1vZi11c2luLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDM0LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2YjlmODkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDM0LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotRnJvbSBmYzVlNGJlYWVhODU2YTJiNDg2Yzc3MGFkM2FkZGMwZjViYjMxMDBlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MzM6MDQgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAzNC8zNV0gVXNlIHRoZSBtdWx0aWxpYiBjb25maWcgZmlsZXMgZnJvbSAke0J9IGluc3RlYWQgb2YKLSB1c2luZyB0aGUgb25lcyBmcm9tICR7U30KLQotVXNlIHRoZSBtdWx0aWxpYiBjb25maWcgZmlsZXMgZnJvbSAke0J9IGluc3RlYWQgb2YgdXNpbmcgdGhlIG9uZXMgZnJvbSAke1N9Ci1zbyB0aGF0IHRoZSBzb3VyY2UgY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIGdjYy1jcm9zcy1pbml0aWFsLAotZ2NjLWNyb3NzLWludGVybWVkaWF0ZSwgZ2NjLWNyb3NzLCBnY2MtcnVudGltZSwgYW5kIGFsc28gdGhlIHNkayBidWlsZC4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IENvbnN0YW50aW4gTXVzY2EgPGNvbnN0YW50aW54Lm11c2NhQGludGVsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotLS0tCi0gZ2NjL2NvbmZpZ3VyZSAgICB8ICAgMjIgKysrKysrKysrKysrKysrKysrLS0tLQotIGdjYy9jb25maWd1cmUuYWMgfCAgIDIyICsrKysrKysrKysrKysrKysrKy0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDM2IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQotaW5kZXggOGJjMGM5OC4uM2NkMDgxNyAxMDA3NTUKLS0tLSBhL2djYy9jb25maWd1cmUKLSsrKyBiL2djYy9jb25maWd1cmUKLUBAIC0xMTUxOSwxMCArMTE1MTksMjAgQEAgZG9uZQotIHRtYWtlX2ZpbGVfPQotIGZvciBmIGluICR7dG1ha2VfZmlsZX0KLSBkbwotLQlpZiB0ZXN0IC1mICR7c3JjZGlyfS9jb25maWcvJGYKLS0JdGhlbgotLQkJdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IFwkKHNyY2RpcikvY29uZmlnLyRmIgotLQlmaQotKyAgY2FzZSAkZiBpbgotKyAgICAqL3QtbGludXg2NCApCi0rICAgICAgIGlmIHRlc3QgLWYgLi9jb25maWcvJGYKLSsgICAgICAgdGhlbgotKyAgICAgICAgIHRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSAuL2NvbmZpZy8kZiIKLSsgICAgICAgZmkKLSsgICAgICAgOzsKLSsgICAgKiApCi0rICAgICAgIGlmIHRlc3QgLWYgJHtzcmNkaXJ9L2NvbmZpZy8kZgotKyAgICAgICB0aGVuCi0rICAgICAgICAgdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IFwkKHNyY2RpcikvY29uZmlnLyRmIgotKyAgICAgICBmaQotKyAgICAgICA7OwotKyAgZXNhYwotIGRvbmUKLSB0bWFrZV9maWxlPSIke3RtYWtlX2ZpbGVffSIKLSAKLUBAIC0xMTUzMyw2ICsxMTU0MywxMCBAQCB0bV9maWxlX2xpc3Q9Im9wdGlvbnMuaCIKLSB0bV9pbmNsdWRlX2xpc3Q9Im9wdGlvbnMuaCBpbnNuLWNvbnN0YW50cy5oIgotIGZvciBmIGluICR0bV9maWxlOyBkbwotICAgY2FzZSAkZiBpbgotKyAgICAqL2xpbnV4NjQuaCApCi0rICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IC4vY29uZmlnLyRmIgotKyAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAuL2NvbmZpZy8kZiIKLSsgICAgICAgOzsKLSAgICAgLi8qICkKLSAgICAgICAgZj1gZWNobyAkZiB8IHNlZCAncy9eLi4vLydgCi0gICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9ICRmIgotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCi1pbmRleCA1ZTVlODRmLi40MTVhNmRmIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYwotKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYwotQEAgLTE3MDAsMTAgKzE3MDAsMjAgQEAgZG9uZQotIHRtYWtlX2ZpbGVfPQotIGZvciBmIGluICR7dG1ha2VfZmlsZX0KLSBkbwotLQlpZiB0ZXN0IC1mICR7c3JjZGlyfS9jb25maWcvJGYKLS0JdGhlbgotLQkJdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IFwkKHNyY2RpcikvY29uZmlnLyRmIgotLQlmaQotKyAgY2FzZSAkZiBpbgotKyAgICAqL3QtbGludXg2NCApCi0rICAgICAgIGlmIHRlc3QgLWYgLi9jb25maWcvJGYKLSsgICAgICAgdGhlbgotKyAgICAgICAgIHRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSAuL2NvbmZpZy8kZiIKLSsgICAgICAgZmkKLSsgICAgICAgOzsKLSsgICAgKiApCi0rICAgICAgIGlmIHRlc3QgLWYgJHtzcmNkaXJ9L2NvbmZpZy8kZgotKyAgICAgICB0aGVuCi0rICAgICAgICAgdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IFwkKHNyY2RpcikvY29uZmlnLyRmIgotKyAgICAgICBmaQotKyAgICAgICA7OwotKyAgZXNhYwotIGRvbmUKLSB0bWFrZV9maWxlPSIke3RtYWtlX2ZpbGVffSIKLSAKLUBAIC0xNzE0LDYgKzE3MjQsMTAgQEAgdG1fZmlsZV9saXN0PSJvcHRpb25zLmgiCi0gdG1faW5jbHVkZV9saXN0PSJvcHRpb25zLmggaW5zbi1jb25zdGFudHMuaCIKLSBmb3IgZiBpbiAkdG1fZmlsZTsgZG8KLSAgIGNhc2UgJGYgaW4KLSsgICAgKi9saW51eDY0LmggKQotKyAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSAuL2NvbmZpZy8kZiIKLSsgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gLi9jb25maWcvJGYiCi0rICAgICAgIDs7Ci0gICAgIC4vKiApCi0gICAgICAgIGY9YGVjaG8gJGYgfCBzZWQgJ3MvXi4uLy8nYAotICAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSAkZiIKLS0tIAotMS43LjEwLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDQwLWZpeC1nKystc3lzcm9vdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDA0MC1maXgtZysrLXN5c3Jvb3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1MGFhNWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDQwLWZpeC1nKystc3lzcm9vdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLVBvcnRpb25zIG9mCi0KLWh0dHA6Ly93d3cubWFpbC1hcmNoaXZlLmNvbS9nY2MtcGF0Y2hlc0BnY2MuZ251Lm9yZy9tc2cyNjAxMy5odG1sCi0KLWFyZSBub3QgdXBzdHJlYW1lZCB5ZXQuIFNvIGxldHMga2VlcCBtaXNzaW5nIHBpZWNlcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLUluZGV4OiBnY2MtNC44LjEvZ2NjL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy00LjguMS5vcmlnL2djYy9jb25maWd1cmUuYWMJMjAxMy0wNy0xNSAxNTo1NTo0OS40ODgzOTkxMzIgLTA3MDAKLSsrKyBnY2MtNC44LjEvZ2NjL2NvbmZpZ3VyZS5hYwkyMDEzLTA3LTE1IDE2OjAyOjMxLjc3MjQwNjY3OSAtMDcwMAotQEAgLTE0OCw3ICsxNDgsOSBAQAotIGlmIHRlc3QgIiR7d2l0aF9zeXNyb290K3NldH0iID0gc2V0OyB0aGVuCi0gICBnY2NfZ3h4X3dpdGhvdXRfc3lzcm9vdD1gZXhwciAiJHtnY2NfZ3h4X2luY2x1ZGVfZGlyfSIgOiAiJHt3aXRoX3N5c3Jvb3R9IidcKC4qXCknYAotICAgaWYgdGVzdCAiJHtnY2NfZ3h4X3dpdGhvdXRfc3lzcm9vdH0iOyB0aGVuCi0tICAgIGdjY19neHhfaW5jbHVkZV9kaXI9IiR7Z2NjX2d4eF93aXRob3V0X3N5c3Jvb3R9IgotKyAgICBpZiB0ZXN0IHgke3dpdGhfc3lzcm9vdH0gIT0geC87IHRoZW4KLSsgICAgICBnY2NfZ3h4X2luY2x1ZGVfZGlyPSIke2djY19neHhfd2l0aG91dF9zeXNyb290fSIKLSsgICAgZmkKLSAgICAgZ2NjX2d4eF9pbmNsdWRlX2Rpcl9hZGRfc3lzcm9vdD0xCi0gICBmaQotIGZpCi1JbmRleDogZ2NjLTQuOC4xL2djYy9jb25maWd1cmUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtNC44LjEub3JpZy9nY2MvY29uZmlndXJlCTIwMTMtMDctMTUgMTU6NTU6NDkuNDcyMzk5MTMyIC0wNzAwCi0rKysgZ2NjLTQuOC4xL2djYy9jb25maWd1cmUJMjAxMy0wNy0xNSAxNjowMjozMS43ODA0MDY2ODAgLTA3MDAKLUBAIC0zMzI1LDcgKzMzMjUsOSBAQAotIGlmIHRlc3QgIiR7d2l0aF9zeXNyb290K3NldH0iID0gc2V0OyB0aGVuCi0gICBnY2NfZ3h4X3dpdGhvdXRfc3lzcm9vdD1gZXhwciAiJHtnY2NfZ3h4X2luY2x1ZGVfZGlyfSIgOiAiJHt3aXRoX3N5c3Jvb3R9IidcKC4qXCknYAotICAgaWYgdGVzdCAiJHtnY2NfZ3h4X3dpdGhvdXRfc3lzcm9vdH0iOyB0aGVuCi0tICAgIGdjY19neHhfaW5jbHVkZV9kaXI9IiR7Z2NjX2d4eF93aXRob3V0X3N5c3Jvb3R9IgotKyAgICBpZiB0ZXN0IHgke3dpdGhfc3lzcm9vdH0gIT0geC87IHRoZW4KLSsgICAgICBnY2NfZ3h4X2luY2x1ZGVfZGlyPSIke2djY19neHhfd2l0aG91dF9zeXNyb290fSIKLSsgICAgZmkKLSAgICAgZ2NjX2d4eF9pbmNsdWRlX2Rpcl9hZGRfc3lzcm9vdD0xCi0gICBmaQotIGZpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNDEtbGlidG9vbC1hdm9pZC1saWJkaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNDEtbGlidG9vbC1hdm9pZC1saWJkaXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkZDk2MTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDQxLWxpYnRvb2wtYXZvaWQtbGliZGlyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotQXZvaWQgdXNpbmcgbGliZGlyIGZyb20gLmxhIHdoaWNoIHVzdWFsbHkgcG9pbnRzIHRvIGEgaG9zdCBwYXRoCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi1TaWduZWQtb2ZmLWJ5OiBKb25hdGhhbiBMaXUgPG5ldDE0N0BnbWFpbC5jb20+Ci0KLWRpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKLWluZGV4IGEwMzQzM2YuLjE5MDJhOTAgMTAwNjQ0Ci0tLS0gYS9sdG1haW4uc2gKLSsrKyBiL2x0bWFpbi5zaAotQEAgLTU2MjgsNiArNTYyOCw5IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIiCi0gCSAgICBsaWJkaXI9IiRhYnNfbGFkaXIiCi0gCSAgZWxzZQotKwkgICAgIyBJbnN0ZWFkIG9mIHVzaW5nIGxpYmRpciBmcm9tIC5sYSB3aGljaCB1c3VhbGx5IHBvaW50cyB0byBhIGhvc3QgcGF0aCwKLSsJICAgICMgdXNlIHRoZSBwYXRoIHRoZSAubGEgaXMgY29udGFpbmVkIGluLgotKwkgICAgbGliZGlyPSIkYWJzX2xhZGlyIgotIAkgICAgZGlyPSIkbGliZGlyIgotIAkgICAgYWJzZGlyPSIkbGliZGlyIgotIAkgIGZpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNDMtY3BwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDQzLWNwcC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWFmODY0Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNDMtY3BwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotVGhlIE9FIGVudmlyb25tZW50IHNldHMgYW5kIGV4cG9ydHMgQ1BQIGFzIGJlaW5nIHRoZSB0YXJnZXQgZ2NjLiBXaGVuIGJ1aWxkaW5nIAotZ2NjLWNyb3NzLWNhbmFkaWFuIGZvciBhIG1pbmd3IHRhcmdldHRlZCBzZGssIHRoZSBmb2xsb3dpbmcgY2FuIGJlIGZvdW5kIGluCi1idWlsZC54ODZfNjQtcG9reXNkay1taW5ndzMyLmk1ODYtcG9reS1saW51eC9idWlsZC14ODZfNjQtbGludXgvbGliaWJlcnR5L2NvbmZpZy5sb2c6Ci0KLWNvbmZpZ3VyZTozNjQxOiBjaGVja2luZyBmb3IgX0ZJTEVfT0ZGU0VUX0JJVFMgdmFsdWUgbmVlZGVkIGZvciBsYXJnZSBmaWxlcwotY29uZmlndXJlOjM2NjY6IGdjYyAgLWMgLWlzeXN0ZW0vbWVkaWEvYnVpbGQxL3Bva3kvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvaW5jbHVkZSAtTzIgLXBpcGUgIGNvbmZ0ZXN0LmMgPiY1Ci1jb25maWd1cmU6MzY2NjogJD8gPSAwCi1jb25maWd1cmU6MzY5ODogcmVzdWx0OiBubwotY29uZmlndXJlOjM3ODY6IGNoZWNraW5nIGhvdyB0byBydW4gdGhlIEMgcHJlcHJvY2Vzc29yCi1jb25maWd1cmU6Mzg1NjogcmVzdWx0OiB4ODZfNjQtcG9reXNkay1taW5ndzMyLWdjYyAtRSAtLXN5c3Jvb3Q9L21lZGlhL2J1aWxkMS9wb2t5L2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbmF0aXZlc2RrLW1pbmd3MzItcG9reXNkay1taW5ndzMyCi1jb25maWd1cmU6Mzg3NjogeDg2XzY0LXBva3lzZGstbWluZ3czMi1nY2MgLUUgLS1zeXNyb290PS9tZWRpYS9idWlsZDEvcG9reS9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LW5hdGl2ZXNkay1taW5ndzMyLXBva3lzZGstbWluZ3czMiAgY29uZnRlc3QuYwotY29uZmlndXJlOjM4NzY6ICQ/ID0gMAotCi1Ob3RlIHRoaXMgaXMgYSAqYnVpbGQqIHRhcmdldCAoaW4gYnVpbGQteDg2XzY0LWxpbnV4KSBzbyBpdCBzaG91bGQgYmUgdXNpbmcgCi10aGUgaG9zdCAiZ2NjIiwgbm90IHg4Nl82NC1wb2t5c2RrLW1pbmd3MzItZ2NjLiBTaW5jZSB0aGUgbWluZ3czMiBoZWFkZXJzIGFyZSAKLXZlcnkgZGlmZmVyZW50LCB1c2luZyB0aGUgd3JvbmcgY3BwIGlzIGEgcmVhbCBwcm9ibGVtLiBJdCBpcyBsZWFraW5nIGludG8gCi1jb25maWd1cmUgdGhyb3VnaCB0aGUgQ1BQIHZhcmlhYmxlLiBVbHRpbWF0ZWx5IHRoaXMgbGVhZHMgdG8gYnVpbGQgZmFpbHVyZXMgCi1yZWxhdGVkIHRvIG5vdCBiZWluZyBhYmxlIHRvIGluY2x1ZGUgYSBwcm9jZXNzLmggZmlsZSBmb3IgcGVtLXVuaXguYy4KLQotVGhlIGZpeCBpcyB0byBlbnN1cmUgd2UgZXhwb3J0IGEgc2FuZSBDUFAgdmFsdWUgaW50byB0aGUgYnVpbGQgZW52aXJvbm1lbnQgd2hlbgotdXNpbmcgYnVpbGQgdGFyZ2V0cy4gV2UgY291bGQgZGVmaW5lIGEgQ1BQX0ZPUl9CVUlMRCB2YWx1ZSB3aGljaCBtYXkgYmUgdGhlIHZlcnNpb24KLXdoaWNoIG5lZWRzIHRvIGJlIHVwc3RyZWFtZWQgYnV0IGZvciBub3csIHRoaXMgZml4IGlzIGdvb2QgZW5vdWdoIHRvIGF2b2lkIHRoZSAKLXByb2JsZW0uCi0KLVJQIDIyLzA4LzIwMTMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUluZGV4OiBnY2MtNC44LjEvTWFrZWZpbGUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtNC44LjEub3JpZy9NYWtlZmlsZS5pbgkyMDEzLTAzLTMwIDExOjI1OjAzLjAwMDAwMDAwMCArMDAwMAotKysrIGdjYy00LjguMS9NYWtlZmlsZS5pbgkyMDEzLTA4LTEzIDEyOjAzOjE3LjE1MTk4ODg4MiArMDAwMAotQEAgLTE0OSw2ICsxNDksNyBAQAotIAlBUj0iJChBUl9GT1JfQlVJTEQpIjsgZXhwb3J0IEFSOyBcCi0gCUFTPSIkKEFTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQVM7IFwKLSAJQ0M9IiQoQ0NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDQzsgXAotKwlDUFA9IiQoQ0NfRk9SX0JVSUxEKSAtRSI7IGV4cG9ydCBDUFA7IFwKLSAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENGTEFHUzsgXAotIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAotIAlDWFg9IiQoQ1hYX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1hYOyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNDQtZ2VuZ3R5cGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDQ0LWdlbmd0eXBlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTM4NzYxZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNDQtZ2VuZ3R5cGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotZ2VuZ3R5cGUgaXMgZ2VuZXJhdGVkIGZvciBib3RoIHRoZSBidWlsZCBzeXN0ZW0gYW5kIHRoZSB0YXJnZXQuIC1ER0VORVJBVE9SX0ZJTEUKLXdhcyBhZGRlZCBpbiB0aGUgcGF0Y2ggaHR0cDovL2djYy5nbnUub3JnL21sL2djYy1wYXRjaGVzLzIwMTItMDcvbXNnMDAyNzMuaHRtbAotYW5kIHdhcyBhcHBsaWVkIHRvIGJvdGggdmVyc2lvbnMgb2YgZ2VuZ3R5cGUuCi0KLVVuZm9ydHVuYXRlbHkgdGhlIHByZXNlbmNlIG9mIHRoaXMgZmxhZyB0cmlnZ2VycyB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiAoYmNvbmZpZy5oKSAKLXRvIGJlIGluY2x1ZGVkIGZvciB0aGUgdGFyZ2V0IGJ1aWxkIG9mIGdlbmd0eXBlLiBDb21waWxpbmcgZ2VuZ3R5cGUgd2l0aCB0aGUgdGFyZ2V0IAotY29tcGlsZXIgYW5kIGJjb25maWcuaCBjYW4gcmVzdWx0IGluIGVycm9ycyBpZiB0aGUgYnVpbGQgYW5kIHRhcmdldCBzeXN0ZW1zIGFyZSAKLWRpc3NpbWlsYXIuIEFuIGV4YW1wbGUgY2FzZSB0aGlzIGZhaWxzIGlzIGNyb3NzIGNvbXBpbGluZyBnY2Mgb24gbGludXggZm9yIGEgZGFyd2luIAotdGFyZ2V0IHN5c3RlbToKLQotSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC9tZWRpYS9idWlsZDEvcG9reS9idWlsZC90bXAvd29yay1zaGFyZWQvZ2NjLTQuOC4xLXIwL2djYy00LjguMS9nY2MvZ2VuZ3R5cGUtcGFyc2UuYzoyNTowOgotfCAvbWVkaWEvYnVpbGQxL3Bva3kvYnVpbGQvdG1wL3dvcmstc2hhcmVkL2djYy00LjguMS1yMC9nY2MtNC44LjEvZ2NjL2dlbmd0eXBlLXBhcnNlLmM6IEluIGZ1bmN0aW9uICd2b2lkIHBhcnNlX2Vycm9yKGNvbnN0IGNoYXIqLCAuLi4pJzoKLXwgL21lZGlhL2J1aWxkMS9wb2t5L2J1aWxkL3RtcC93b3JrLXNoYXJlZC9nY2MtNC44LjEtcjAvZ2NjLTQuOC4xL2djYy9zeXN0ZW0uaDo5Mzo1MzogZXJyb3I6ICdmcHV0Y191bmxvY2tlZCcgd2FzIG5vdCBkZWNsYXJlZCBpbiB0aGlzIHNjb3BlCi18ICAjICBkZWZpbmUgZnB1dGMoQywgU3RyZWFtKSBmcHV0Y191bmxvY2tlZCAoQywgU3RyZWFtKQotCi13aGljaCBvY2N1cnMgc2luY2UgYXV0by1idWlsZC5oIGFuZCBhdXRvLWhvc3QuaCBoYXZlIGRpZmZlcm5ldCB2YWx1ZXMgb2YKLUhBVkVfRlBVVENfVU5MT0NLRUQ6Ci0KLSNkZWZpbmUgSEFWRV9GUFVUQ19VTkxPQ0tFRCAxCi0vKiAjdW5kZWYgSEFWRV9GUFVUU19VTkxPQ0tFRCAqLwotCi1UaGUgb2J2aW91cyBmaXggaXMgdG8gb25seSBpbmNsdWRlIHRoZSBmbGFnIG9uIGJ1aWxkLyB0YXJnZXRzIHdoaWNoIHRoaXMgcGF0Y2ggZG9lcywgaG93ZXZlciAKLXRoaXMgYWxzbyBsZWFkcyB0byBjb21waWxlIGVycm9ycyBkdWUgdG8gY29uc3RfdHJlZSBiZWluZyB1bmRlZmluZWQgYnV0IHVzZWQgaW4gZG91YmxlX2ludC5oCi0KLUkgYWRkZWQgYSBHRU5FUkFUT1JfRklMRTIgZmxhZyB0byB3b3JrYXJvdW5kIHRob3NlIGluIHRoZSAKLXRhcmdldCBjYXNlIGFuZCBhbGxvdyB0aGUgYnVpbGQgdG8gc3VjY2VlZC4KLQotT25seSB0aGUgYnVpbGQvZ2VuZ3R5cGVzIHNob3VsZCBoYXZlIHRoZSAtREdFTkVSQVRPUl9GSUxFIAotCi1SUCAyMi84LzIwMTMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUluZGV4OiBnY2MtNC44LjEvZ2NjL01ha2VmaWxlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2NjLTQuOC4xLm9yaWcvZ2NjL01ha2VmaWxlLmluCTIwMTMtMDgtMTkgMTE6NDA6MzYuODQ0MDE0NDI0ICswMDAwCi0rKysgZ2NjLTQuOC4xL2djYy9NYWtlZmlsZS5pbgkyMDEzLTA4LTE5IDExOjQwOjM3Ljc4NDAxNDQwMiArMDAwMAotQEAgLTM5MDMsMjcgKzM5MDMsMjkgQEAKLSAKLSBnZW5ndHlwZS1sZXgubyBidWlsZC9nZW5ndHlwZS1sZXgubyA6IGdlbmd0eXBlLWxleC5jIGdlbmd0eXBlLmggJChTWVNURU1fSCkKLSBnZW5ndHlwZS1sZXgubzogJChDT05GSUdfSCkgJChCQ09ORklHX0gpCi0tQ0ZMQUdTLWdlbmd0eXBlLWxleC5vICs9IC1ER0VORVJBVE9SX0ZJTEUKLStDRkxBR1MtYnVpbGQvZ2VuZ3R5cGUtbGV4Lm8gKz0gLURHRU5FUkFUT1JfRklMRQotIGJ1aWxkL2dlbmd0eXBlLWxleC5vOiAkKEJDT05GSUdfSCkKLSAKLSBnZW5ndHlwZS1wYXJzZS5vIGJ1aWxkL2dlbmd0eXBlLXBhcnNlLm8gOiBnZW5ndHlwZS1wYXJzZS5jIGdlbmd0eXBlLmggXAotICAgJChTWVNURU1fSCkKLSBnZW5ndHlwZS1wYXJzZS5vOiAkKENPTkZJR19IKQotLUNGTEFHUy1nZW5ndHlwZS1wYXJzZS5vICs9IC1ER0VORVJBVE9SX0ZJTEUKLStDRkxBR1MtYnVpbGQvZ2VuZ3R5cGUtcGFyc2UubyArPSAtREdFTkVSQVRPUl9GSUxFCi0gYnVpbGQvZ2VuZ3R5cGUtcGFyc2UubzogJChCQ09ORklHX0gpCi0gCi0gZ2VuZ3R5cGUtc3RhdGUubyBidWlsZC9nZW5ndHlwZS1zdGF0ZS5vOiBnZW5ndHlwZS1zdGF0ZS5jICQoU1lTVEVNX0gpIFwKLSAgIGdlbmd0eXBlLmggZXJyb3JzLmggZG91YmxlLWludC5oIHZlcnNpb24uaCAkKEhBU0hUQUJfSCkgJChPQlNUQUNLX0gpIFwKLSAgICQoWFJFR0VYX0gpCi0gZ2VuZ3R5cGUtc3RhdGUubzogJChDT05GSUdfSCkKLS1DRkxBR1MtZ2VuZ3R5cGUtc3RhdGUubyArPSAtREdFTkVSQVRPUl9GSUxFCi0rQ0ZMQUdTLWdlbmd0eXBlLXN0YXRlLm8gKz0gLURHRU5FUkFUT1JfRklMRTIKLStDRkxBR1MtYnVpbGQvZ2VuZ3R5cGUtc3RhdGUubyArPSAtREdFTkVSQVRPUl9GSUxFCi0gYnVpbGQvZ2VuZ3R5cGUtc3RhdGUubzogJChCQ09ORklHX0gpCi0gCi0gZ2VuZ3R5cGUubyBidWlsZC9nZW5ndHlwZS5vIDogZ2VuZ3R5cGUuYyAkKFNZU1RFTV9IKSBnZW5ndHlwZS5oIAlcCi0gICBydGwuZGVmIGluc24tbm90ZXMuZGVmIGVycm9ycy5oIGRvdWJsZS1pbnQuaCB2ZXJzaW9uLmggJChIQVNIVEFCX0gpIFwKLSAgICQoT0JTVEFDS19IKSAkKFhSRUdFWF9IKQotIGdlbmd0eXBlLm86ICQoQ09ORklHX0gpCi0tQ0ZMQUdTLWdlbmd0eXBlLm8gKz0gLURHRU5FUkFUT1JfRklMRQotK0NGTEFHUy1nZW5ndHlwZS5vICs9IC1ER0VORVJBVE9SX0ZJTEUyCi0rQ0ZMQUdTLWJ1aWxkL2dlbmd0eXBlLm8gKz0gLURHRU5FUkFUT1JfRklMRQotIGJ1aWxkL2dlbmd0eXBlLm86ICQoQkNPTkZJR19IKQotIAotIGJ1aWxkL2dlbm1kZGVwcy5vOiBnZW5tZGRlcHMuYyAkKEJDT05GSUdfSCkgJChTWVNURU1fSCkgY29yZXR5cGVzLmgJXAotQEAgLTM5ODgsNyArMzk5MCw3IEBACi0gIyBhbnkgc3lzdGVtIGhlYWRlciBpcyBpbmNsdWRlZC4KLSBnZW5ndHlwZS1sZXguYyA6IGdlbmd0eXBlLWxleC5sCi0gCS0kKEZMRVgpICQoRkxFWEZMQUdTKSAtbyRAICQ8ICYmIHsgXAotLQkgIGVjaG8gJyNpbmNsdWRlICJiY29uZmlnLmgiJyA+ICRALnRtcDsgXAotKwkgIGVjaG8gJycgPiAkQC50bXA7IFwKLSAJICBjYXQgJEAgPj4gJEAudG1wOyBcCi0gCSAgbXYgJEAudG1wICRAOyBcCi0gCX0KLUluZGV4OiBnY2MtNC44LjEvZ2NjL2RvdWJsZS1pbnQuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy00LjguMS5vcmlnL2djYy9kb3VibGUtaW50LmgJMjAxMy0wMS0zMCAxMTowNDozMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnY2MtNC44LjEvZ2NjL2RvdWJsZS1pbnQuaAkyMDEzLTA4LTE5IDExOjQxOjUxLjU2NDAxMjcxOSArMDAwMAotQEAgLTQ0OCwxMCArNDQ4LDEyIEBACi0gCi0gCi0gI2lmbmRlZiBHRU5FUkFUT1JfRklMRQotKyNpZm5kZWYgR0VORVJBVE9SX0ZJTEUyCi0gLyogQ29udmVyc2lvbiB0byBhbmQgZnJvbSBHTVAgaW50ZWdlciByZXByZXNlbnRhdGlvbnMuICAqLwotIAotIHZvaWQgbXB6X3NldF9kb3VibGVfaW50IChtcHpfdCwgZG91YmxlX2ludCwgYm9vbCk7Ci0gZG91YmxlX2ludCBtcHpfZ2V0X2RvdWJsZV9pbnQgKGNvbnN0X3RyZWUsIG1wel90LCBib29sKTsKLSAjZW5kaWYKLSsjZW5kaWYKLSAKLSAjZW5kaWYgLyogRE9VQkxFX0lOVF9IICovCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNDYtbGliYXRvbWljLWRlcHRyYWNraW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDQ2LWxpYmF0b21pYy1kZXB0cmFja2luZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmVhNGY0Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNDYtbGliYXRvbWljLWRlcHRyYWNraW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotZ2NjIDQuOCB3b24ndCBidWlsZCB3aXRoIC0tZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nIHNpbmNlIHRoZSAqLlBwbyBmaWxlcwotZG9uJ3QgZ2V0IGNyZWF0ZWQgdW5sZXNzIC0tZW5hYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcgaXMgdHJ1ZS4KLQotVGhpcyBwYXRjaCBlbnN1cmVzIHdlIG9ubHkgdXNlIHRob3NlIGNvbXBpbGVyIG9wdGlvbnMgd2hlbiBpdHMgZW5hYmxlZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLQotKFByb2JsZW0gd2FzIGFscmVhZHkgcmVwb3J0ZWQgdXBzdHJlYW0sIGF0dGFjaGVkIHRoaXMgcGF0Y2ggdGhlcmUKLWh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NTU5MzApCi0KLVJQIAotMjAxMi8wOS8yMgotCi1JbmRleDogZ2NjLTQuOC4xL2xpYmF0b21pYy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy00LjguMS5vcmlnL2xpYmF0b21pYy9NYWtlZmlsZS5hbQkyMDEzLTAxLTE0IDE4OjE2OjIzLjAwMDAwMDAwMCArMDAwMAotKysrIGdjYy00LjguMS9saWJhdG9taWMvTWFrZWZpbGUuYW0JMjAxMy0wOS0yMiAxMDozODoxOC45MDQwNjQ3NTAgKzAwMDAKLUBAIC0xMDAsNyArMTAwLDggQEAKLSBJRlVOQ19ERUYJPSAtRElGVU5DX0FMVD0kKFBBVF9TKQotIElGVU5DX09QVAk9ICQod29yZCAkKFBBVF9TKSwkKElGVU5DX09QVElPTlMpKQotIAotLU1fREVQUwkJPSAtTVQgJEAgLU1EIC1NUCAtTUYgJChERVBESVIpLyQoQEYpLlBwbwotK0BBTURFUF9UUlVFQE1fREVQUwkJPSAtTVQgJEAgLU1EIC1NUCAtTUYgJChERVBESVIpLyQoQEYpLlBwbwotK0BBTURFUF9GQUxTRUBNX0RFUFMJCT0gCi0gTV9TSVpFCQk9IC1ETj0kKFBBVF9OKQotIE1fSUZVTkMJCT0gJChpZiAkKFBBVF9TKSwkKElGVU5DX0RFRikgJChJRlVOQ19PUFQpKQotIE1fRklMRQkJPSAkKFBBVF9CQVNFKV9uLmMKLUluZGV4OiBnY2MtNC44LjEvbGliYXRvbWljL01ha2VmaWxlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2NjLTQuOC4xLm9yaWcvbGliYXRvbWljL01ha2VmaWxlLmluCTIwMTMtMDUtMzEgMDk6MDk6MjYuMDAwMDAwMDAwICswMDAwCi0rKysgZ2NjLTQuOC4xL2xpYmF0b21pYy9NYWtlZmlsZS5pbgkyMDEzLTA5LTIyIDEwOjQwOjQyLjUyMDA1OTkxNyArMDAwMAotQEAgLTI5OCw3ICsyOTgsOCBAQAotIFBBVF9TID0gJCh3b3JkIDMsJChQQVRfU1BMSVQpKQotIElGVU5DX0RFRiA9IC1ESUZVTkNfQUxUPSQoUEFUX1MpCi0gSUZVTkNfT1BUID0gJCh3b3JkICQoUEFUX1MpLCQoSUZVTkNfT1BUSU9OUykpCi0tTV9ERVBTID0gLU1UICRAIC1NRCAtTVAgLU1GICQoREVQRElSKS8kKEBGKS5QcG8KLStAQU1ERVBfVFJVRUBNX0RFUFMgPSAtTVQgJEAgLU1EIC1NUCAtTUYgJChERVBESVIpLyQoQEYpLlBwbwotK0BBTURFUF9GQUxTRUBNX0RFUFMgPSAKLSBNX1NJWkUgPSAtRE49JChQQVRfTikKLSBNX0lGVU5DID0gJChpZiAkKFBBVF9TKSwkKElGVU5DX0RFRikgJChJRlVOQ19PUFQpKQotIE1fRklMRSA9ICQoUEFUX0JBU0UpX24uYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDQ3LXJlcG9tZW1idWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNDctcmVwb21lbWJ1Zy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWFmZDU1Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNDctcmVwb21lbWJ1Zy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLVdoZW4gY29tcGlsaW5nIGEgcHJvamVjdCB1c2luZyAtZnJlcG8sIC5ycG8gZmlsZXMgYXJlIHdyaXR0ZW4gYWxvbmdzaWRlCi10aGUgLm8gZmlsZSwgdGhlIHN5bWJvbHMgZWl0aGVyIGhhdmUgTyBvciBDIGFnYWluc3QgdGhlbS4gRHVyaW5nIGZpbmFsIGxpbmtpbmcsCi10aGUgb2JqZWN0cyBjYW4gYmUgcmVjb21waWxlZCB3aXRoIHNvbWUgb2YgdGhlIGVudHJpZXMgdHdlYWtlZC9jaG9zZW4gYnkgdGhlIAotdGxpbmsuYyBjb2RlICh2aXNpYmxlIHdpdGggVExJTktfVkVSQk9TRT0zKSwgaXQgZG9lcyB0aGlzIGJ5IGNoYW5naW5nIE8gLT4gQwotaW4gdGhlIC5ycG8gZmlsZXMuCi0KLU15IHRlc3RzIHNob3dlZCB0aGF0IGluaXRfcmVwbyAoY3AvcmVwby5jKSB3YXMgY29ycmVjdGx5IGNhbGxpbmcgCi1JREVOVElGSUVSX1JFUE9fQ0hPU0VOIGFnYWluc3QgdGhlIHJpZ2h0IGlkZW50aWZlcnMgYW5kIHNldHRpbmcgdGhlCi1jaG9zZW4gYml0LgotCi1CeSB0aGUgdGltZSBmaW5pc2hfcmVwbygpIG9yIGVtaXRfcmVwb19wKCkgd2VyZSBjYWxsZWQsIHRoZSBwb2ludGVyIHJldHVybmVkCi1ieSBnZXRfaWRlbnRpZmllcigpIGZvciB0aGUgc3ltYm9sIG1hcmtlZCBkdXJpbmcgaW5pdF9yZXBvIGhhZCBjaGFuZ2VkIGFuZAotdGhlIGNob3NlbiBiaXQgd2FzIG5vIGxvbmdlciBzZXQuIFRoaXMgbGVhZCB0byBsaW5raW5nIGJ1Z3MgbGlrZToKLQotY29sbGVjdDogcmVsaW5raW5nCi1jb2xsZWN0MjogZXJyb3I6ICdfWk5LNnN1ZG9rdTVDbGVhcklOU184U2VxdWVuY2VFRWNsRVJTMV8nIHdhcyBhc3NpZ25lZCB0byAnYm9hcmQucnBvJywgYnV0IHdhcyBub3QgZGVmaW5lZCBkdXJpbmcgcmVjb21waWxhdGlvbiwgb3IgdmljZSB2ZXJzYQotCi1UaGUgcHJvYmxlbSBpcyB0aGF0IHRoZSBnYXJiYWdlIGNvbGxlY3Rpb24gaXMgZ2V0dGluZyBjYWxsZWQgYmVmb3JlCi1maW5pc2hfcmVwbygpIGlzIGNhbGxlZCBhbmQgZ2djX3Byb3RlY3RfaWRlbnRpZmllcnMgaXMgc2V0IHRvIGZhbHNlIAotc28gdGhlIGlkZW50aWZpZXJzIGFyZSBub3QgcHJlc2VydmVkLiBUaGV5IGFyZSByZWNyZWF0ZWQgYnV0IHRoZSAKLWNob3NlbiBiaXRzIGdldCB3aXBlZCBvdXQgd2hpY2ggaXMgd2h5IHRoZSBwb2ludGVyIGNoYW5nZXMgYW5kIHRoZSAKLWNob3NlbiBiaXQgaXMgbm90IHNldC4KLQotVGhlIGZpeCBpcyB0byBjaGFuZ2UgZ2djX3Byb3RlY3RfaWRlbnRpZmllcnMgKmFmdGVyKiB0aGUgZmluaXNoX3JlcG8gCi1jYWxscyBhcmUgbWFkZS4KLQotUmVwcm9kdWN0aW9uIGlzIHRyaWNreSBzaW5jZSB5b3UgbmVlZCB0byB0cmlnZ2VyIHRoZSBnYXJiYWdlIGNvbGxlY3RvciBhdAotanVzdCB0aGUgcmlnaHQgbW9tZW50LgotCi1SUCAyMDEzLzEwLzkKLQotW1lPQ1RPICM1MTMzXQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotSW5kZXg6IGdjYy00LjguMS9nY2MvdG9wbGV2LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtNC44LjEub3JpZy9nY2MvdG9wbGV2LmMJMjAxMy0wMy0yOCAwODoyOTo1MS4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnY2MtNC44LjEvZ2NjL3RvcGxldi5jCTIwMTMtMTAtMDkgMjA6Mjc6MTcuMDg5MjI4MDIzICswMDAwCi1AQCAtNTUxLDExICs1NTEsMTEgQEAKLSAgIGlmIChmbGFnX3N5bnRheF9vbmx5IHx8IGZsYWdfd3BhKQotICAgICByZXR1cm47Ci0gCi0tICBnZ2NfcHJvdGVjdF9pZGVudGlmaWVycyA9IGZhbHNlOwotLQotICAgLyogVGhpcyBtdXN0IGFsc28gY2FsbCBmaW5hbGl6ZV9jb21waWxhdGlvbl91bml0LiAgKi8KLSAgIGxhbmdfaG9va3MuZGVjbHMuZmluYWxfd3JpdGVfZ2xvYmFscyAoKTsKLSAKLSsgIGdnY19wcm90ZWN0X2lkZW50aWZpZXJzID0gZmFsc2U7Ci0rCi0gICBpZiAoc2Vlbl9lcnJvciAoKSkKLSAgICAgcmV0dXJuOwotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDQ5LUVuYWJsZS1TUEUtQWx0aVZlYy1nZW5lcmF0aW9uLW9uLXBvd2VwYy1saW51eC10YXJnZXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNDktRW5hYmxlLVNQRS1BbHRpVmVjLWdlbmVyYXRpb24tb24tcG93ZXBjLWxpbnV4LXRhcmdldC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjk4ZjhmZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNDktRW5hYmxlLVNQRS1BbHRpVmVjLWdlbmVyYXRpb24tb24tcG93ZXBjLWxpbnV4LXRhcmdldC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLUZyb20gOWUwZTE5ZWFjMjU2MmY3Mzg1ODYwMmZlMjZlMjA0NGViOGIyMGM0NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRydS1DZXphciBTYXJkYW4gPGFsZXhhbmRydS5zYXJkYW5AZnJlZXNjYWxlLmNvbT4KLURhdGU6IFdlZCwgNSBGZWIgMjAxNCAxNjo1MjozMSArMDIwMAotU3ViamVjdDogW1BBVENIXSBFbmFibGUgU1BFICYgQWx0aVZlYyBnZW5lcmF0aW9uIG9uIHBvd2VwYypsaW51eCB0YXJnZXQKLQotV2hlbiBpcyBjb25maWd1cmVkIHdpdGggLS10YXJnZXQ9cG93ZXJwYy1saW51eCwgdGhlIHJlc3VsdGluZyBHQ0Mgd2lsbCAKLW5vdCBiZSBhYmxlIHRvIGdlbmVyYXRlIGNvZGUgZm9yIFNQRSB0YXJnZXRzIChlNTAwdjEvdjIpLgotR0NDIGNvbmZpZ3VyZWQgd2l0aCAtLXRhcmdldD1wb3dlcnBjLWxpbnV4c3BlIHdpbGwgbm90IGJlIGFibGUgdG8KLWdlbmVyYXRlIEFsdGlWZWMgaW5zdHJ1Y3Rpb25zIChmb3IgZTY1MDApLgotVGhpcyBwYXRjaCBtb2RpZmllcyB0aGUgY29uZmlndXJlZCBmaWxlIHN1Y2ggdGhhdCBTUEUgb3IgQWx0aVZlYyBjb2RlCi1jYW4gYmUgZ2VuZXJhdGVkIHdoZW4gZ2NjIGlzIGNvbmZpZ3VyZWQgd2l0aCAtLXRhcmdldD1wb3dlcnBjLWxpbnV4LgotVGhlIEFCSSBhbmQgc3BlY2lmZmljIGluc3RydWN0aW9ucyBjYW4gYmUgc2VsZWN0ZWQgdGhyb3VnaCB0aGUKLSItbWFiaT1zcGUgb3IgLW1hYmk9YWx0aXZlYyIgYW5kIHRoZSAiLW1zcGUgb3IgLW1hbHRpdmVjIiBwYXJhbWV0ZXJzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRydS1DZXphciBTYXJkYW4gPGFsZXhhbmRydS5zYXJkYW5AZnJlZXNjYWxlLmNvbT4KLS0tLQotIGdjYy9jb25maWcuZ2NjIHwgICAgNyArKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy5nY2MgYi9nY2MvY29uZmlnLmdjYwotaW5kZXggY2I3YTk0ZS4uZDM5MmMyYiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcuZ2NjCi0rKysgYi9nY2MvY29uZmlnLmdjYwotQEAgLTIwNjgsNyArMjA2OCwxMiBAQCBwb3dlcnBjLSotcnRlbXMqKQotIAl0bWFrZV9maWxlPSJyczYwMDAvdC1mcHJ1bGVzIHJzNjAwMC90LXJ0ZW1zIHQtcnRlbXMgcnM2MDAwL3QtcHBjY29tbSIKLSAJOzsKLSBwb3dlcnBjKi0qLWxpbnV4KikKLS0JdG1fZmlsZT0iJHt0bV9maWxlfSBkYnhlbGYuaCBlbGZvcy5oIGZyZWVic2Qtc3BlYy5oIHJzNjAwMC9zeXN2NC5oIgotKwljYXNlICR7dGFyZ2V0fSBpbgotKwkgICAgcG93ZXJwYyotKi1saW51eCpzcGUqIHwgcG93ZXJwYyotKi1saW51eCphbHRpdmVjKikKLSsJCXRtX2ZpbGU9IiR7dG1fZmlsZX0gZGJ4ZWxmLmggZWxmb3MuaCBmcmVlYnNkLXNwZWMuaCByczYwMDAvc3lzdjQuaCIgOzsKLSsJICAgICopCi0rCQl0bV9maWxlPSIke3RtX2ZpbGV9IGRieGVsZi5oIGVsZm9zLmggZnJlZWJzZC1zcGVjLmggcnM2MDAwL3N5c3Y0LmggcnM2MDAwL2xpbnV4YWx0aXZlYy5oIHJzNjAwMC9saW51eHNwZS5oIHJzNjAwMC9lNTAwLmgiIDs7Ci0rCWVzYWMKLSAJZXh0cmFfb3B0aW9ucz0iJHtleHRyYV9vcHRpb25zfSByczYwMDAvc3lzdjQub3B0IgotIAl0bWFrZV9maWxlPSJyczYwMDAvdC1mcHJ1bGVzIHJzNjAwMC90LXBwY29zICR7dG1ha2VfZmlsZX0gcnM2MDAwL3QtcHBjY29tbSIKLSAJY2FzZSAke3RhcmdldH0gaW4KLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNTAtUmV2ZXJ0LVVzZS1kYnhfcmVnX251bWJlci1mb3Itc3Bhbm5pbmctcmVnaXN0ZXJzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDUwLVJldmVydC1Vc2UtZGJ4X3JlZ19udW1iZXItZm9yLXNwYW5uaW5nLXJlZ2lzdGVycy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVhZDZmNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNTAtUmV2ZXJ0LVVzZS1kYnhfcmVnX251bWJlci1mb3Itc3Bhbm5pbmctcmVnaXN0ZXJzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUZyb20gY2I5YjFjMDQxYjYzNGE0YzEyODg5NmUzZDNlZWQ0MDgyNjA4Yzc5NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDMgTWF5IDIwMTQgMTk6MjU6MTcgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gUmV2ZXJ0ICIyMDEzLTA1LTIxICBDaHJpc3RpYW4gQnJ1ZWwgCi0gPGNocmlzdGlhbi5icnVlbEBzdC5jb20+IgotCi1UaGlzIHJldmVydHMgY29tbWl0IDM5ODMwMzZhOGI2YjI3MTBjNTc3NzcxOTRmMjE1MDc4MTlhNzM1NTMuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLUNvbmZsaWN0czoKLQlnY2MvQ2hhbmdlTG9nCi0tLS0KLSBnY2MvQ2hhbmdlTG9nICAgfCAyMTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KLSBnY2MvZHdhcmYyb3V0LmMgfCAgMzMgKysrKystLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAyMzQgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvZHdhcmYyb3V0LmMgYi9nY2MvZHdhcmYyb3V0LmMKLWluZGV4IDEyNzIzMjYuLjZhYzJiMjggMTAwNjQ0Ci0tLS0gYS9nY2MvZHdhcmYyb3V0LmMKLSsrKyBiL2djYy9kd2FyZjJvdXQuYwotQEAgLTEwODcwLDI3ICsxMDg3MCwyNSBAQCBzdGF0aWMgZHdfbG9jX2Rlc2NyX3JlZgotIG11bHRpcGxlX3JlZ19sb2NfZGVzY3JpcHRvciAocnR4IHJ0bCwgcnR4IHJlZ3MsCi0gCQkJICAgICBlbnVtIHZhcl9pbml0X3N0YXR1cyBpbml0aWFsaXplZCkKLSB7Ci0tICBpbnQgc2l6ZSwgaTsKLSsgIGludCBucmVncywgc2l6ZSwgaTsKLSsgIHVuc2lnbmVkIHJlZzsKLSAgIGR3X2xvY19kZXNjcl9yZWYgbG9jX3Jlc3VsdCA9IE5VTEw7Ci0gCi0tICAvKiBTaW1wbGUsIGNvbnRpZ3VvdXMgcmVnaXN0ZXJzLiAgKi8KLS0gIGlmIChyZWdzID09IE5VTExfUlRYKQotLSAgICB7Ci0tICAgICAgdW5zaWduZWQgcmVnID0gUkVHTk8gKHJ0bCk7Ci0tICAgICAgaW50IG5yZWdzOwotLQotKyAgcmVnID0gUkVHTk8gKHJ0bCk7Ci0gI2lmZGVmIExFQUZfUkVHX1JFTUFQCi0tICAgICAgaWYgKGNydGwtPnVzZXNfb25seV9sZWFmX3JlZ3MpCi0tCXsKLS0JICBpbnQgbGVhZl9yZWcgPSBMRUFGX1JFR19SRU1BUCAocmVnKTsKLS0JICBpZiAobGVhZl9yZWcgIT0gLTEpCi0tCSAgICByZWcgPSAodW5zaWduZWQpIGxlYWZfcmVnOwotLQl9Ci0rICBpZiAoY3J0bC0+dXNlc19vbmx5X2xlYWZfcmVncykKLSsgICAgewotKyAgICAgIGludCBsZWFmX3JlZyA9IExFQUZfUkVHX1JFTUFQIChyZWcpOwotKyAgICAgIGlmIChsZWFmX3JlZyAhPSAtMSkKLSsJcmVnID0gKHVuc2lnbmVkKSBsZWFmX3JlZzsKLSsgICAgfQotICNlbmRpZgotKyAgZ2NjX2Fzc2VydCAoKHVuc2lnbmVkKSBEQlhfUkVHSVNURVJfTlVNQkVSIChyZWcpID09IGRieF9yZWdfbnVtYmVyIChydGwpKTsKLSsgIG5yZWdzID0gaGFyZF9yZWdub19ucmVnc1tSRUdOTyAocnRsKV1bR0VUX01PREUgKHJ0bCldOwotIAotLSAgICAgIGdjY19hc3NlcnQgKCh1bnNpZ25lZCkgREJYX1JFR0lTVEVSX05VTUJFUiAocmVnKSA9PSBkYnhfcmVnX251bWJlciAocnRsKSk7Ci0tICAgICAgbnJlZ3MgPSBoYXJkX3JlZ25vX25yZWdzW1JFR05PIChydGwpXVtHRVRfTU9ERSAocnRsKV07Ci0tCi0rICAvKiBTaW1wbGUsIGNvbnRpZ3VvdXMgcmVnaXN0ZXJzLiAgKi8KLSsgIGlmIChyZWdzID09IE5VTExfUlRYKQotKyAgICB7Ci0gICAgICAgc2l6ZSA9IEdFVF9NT0RFX1NJWkUgKEdFVF9NT0RFIChydGwpKSAvIG5yZWdzOwotIAotICAgICAgIGxvY19yZXN1bHQgPSBOVUxMOwotQEAgLTEwOTE4LDkgKzEwOTE2LDEwIEBAIG11bHRpcGxlX3JlZ19sb2NfZGVzY3JpcHRvciAocnR4IHJ0bCwgcnR4IHJlZ3MsCi0gICAgIHsKLSAgICAgICBkd19sb2NfZGVzY3JfcmVmIHQ7Ci0gCi0tICAgICAgdCA9IG9uZV9yZWdfbG9jX2Rlc2NyaXB0b3IgKGRieF9yZWdfbnVtYmVyIChYVkVDRVhQIChyZWdzLCAwLCBpKSksCi0rICAgICAgdCA9IG9uZV9yZWdfbG9jX2Rlc2NyaXB0b3IgKFJFR05PIChYVkVDRVhQIChyZWdzLCAwLCBpKSksCi0gCQkJCSAgVkFSX0lOSVRfU1RBVFVTX0lOSVRJQUxJWkVEKTsKLSAgICAgICBhZGRfbG9jX2Rlc2NyICgmbG9jX3Jlc3VsdCwgdCk7Ci0rICAgICAgc2l6ZSA9IEdFVF9NT0RFX1NJWkUgKEdFVF9NT0RFIChYVkVDRVhQIChyZWdzLCAwLCAwKSkpOwotICAgICAgIGFkZF9sb2NfZGVzY3Jfb3BfcGllY2UgKCZsb2NfcmVzdWx0LCBzaXplKTsKLSAgICAgfQotIAotLS0gCi0xLjkuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNTEtZWFiaXNwZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDA1MS1lYWJpc3BlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NWUzODkwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDA1MS1lYWJpc3BlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVRha2VuIGZyb20gaHR0cDovL2djYy5nbnUub3JnL21sL2djYy1wYXRjaGVzLzIwMTQtMDQvbXNnMDIwNjQuaHRtbAotCi0yMDE0LTA0LTMwICBDZXNhciBQaGlsaXBwaWRpcyAgPGNlc2FyQGNvZGVzb3VyY2VyeS5jb20+Ci0KLQlnY2MvCi0JKiBkd2FyZjJjZmkuYyAoZHdmX3JlZ25vKTogRG9uJ3QgYXNzZXJ0IHJlZyBpcyBhIHBzZXVkbwotCXJlZ2lzdGVyLgotCQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2R3YXJmMmNmaS5jIGIvZ2NjL2R3YXJmMmNmaS5jCi1pbmRleCA0MTgwODkwLi40MGVmMGUyIDEwMDY0NAotLS0tIGEvZ2NjL2R3YXJmMmNmaS5jCi0rKysgYi9nY2MvZHdhcmYyY2ZpLmMKLUBAIC05MDYsNyArOTA2LDYgQEAgbm90aWNlX2VoX3Rocm93IChydHggaW5zbikKLSBzdGF0aWMgaW5saW5lIHVuc2lnbmVkCi0gZHdmX3JlZ25vIChjb25zdF9ydHggcmVnKQotIHsKLS0gIGdjY19hc3NlcnQgKFJFR05PIChyZWcpIDwgRklSU1RfUFNFVURPX1JFR0lTVEVSKTsKLSAgIHJldHVybiBEV0FSRl9GUkFNRV9SRUdOVU0gKFJFR05PIChyZWcpKTsKLSB9Ci0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNTItQWRkLXRhcmdldC1ob29rLXRvLW92ZXJyaWRlLURXQVJGMi1mcmFtZS1yZWdpc3Rlci1zaS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDA1Mi1BZGQtdGFyZ2V0LWhvb2stdG8tb3ZlcnJpZGUtRFdBUkYyLWZyYW1lLXJlZ2lzdGVyLXNpLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjk1OGIzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDA1Mi1BZGQtdGFyZ2V0LWhvb2stdG8tb3ZlcnJpZGUtRFdBUkYyLWZyYW1lLXJlZ2lzdGVyLXNpLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTM4ICswLDAgQEAKLUZyb20gZDYyNjI5N2U4N2UxOTI1MWEyODRlYTFlOTM2MGU4MzFiNDg5OTljYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IG1wZiA8bXBmQDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KLURhdGU6IFRodSwgNCBTZXAgMjAxNCAwODozMjowNSArMDAwMAotU3ViamVjdDogW1BBVENIXSBBZGQgdGFyZ2V0IGhvb2sgdG8gb3ZlcnJpZGUgRFdBUkYyIGZyYW1lIHJlZ2lzdGVyIHNpemUKLQotZ2NjLwotCi0JKiB0YXJnZXQuZGVmIChUQVJHRVRfRFdBUkZfRlJBTUVfUkVHX01PREUpOiBOZXcgdGFyZ2V0IGhvb2suCi0JKiB0YXJnaG9va3MuYyAoZGVmYXVsdF9kd2FyZl9mcmFtZV9yZWdfbW9kZSk6IE5ldyBmdW5jdGlvbi4KLQkqIHRhcmdob29rcy5oIChkZWZhdWx0X2R3YXJmX2ZyYW1lX3JlZ19tb2RlKTogTmV3IHByb3RvdHlwZS4KLQkqIGRvYy90bS50ZXhpLmluIChUQVJHRVRfRFdBUkZfRlJBTUVfUkVHX01PREUpOiBEb2N1bWVudC4KLQkqIGRvYy90bS50ZXhpOiBSZWdlbmVyYXRlLgotCSogZHdhcmYyY2ZpLmMgKGV4cGFuZF9idWlsdGluX2luaXRfZHdhcmZfcmVnX3NpemVzKTogQWJzdHJhY3QgbW9kZQotCXNlbGVjdGlvbiBsb2dpYyB0byBkZWZhdWx0X2R3YXJmX2ZyYW1lX3JlZ19tb2RlLgotCi0KLQotZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2djYy5nbnUub3JnL3N2bi9nY2MvdHJ1bmtAMjE0ODk4IDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhNAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZ2NjIDUuMF0KLQotLS0tCi0gZ2NjL0NoYW5nZUxvZyAgICAgIHwgMTAgKysrKysrKysrKwotIGdjYy9kb2MvdG0udGV4aSAgICB8ICA3ICsrKysrKysKLSBnY2MvZG9jL3RtLnRleGkuaW4gfCAgMiArKwotIGdjYy9kd2FyZjJjZmkuYyAgICB8ICA0ICstLS0KLSBnY2MvdGFyZ2V0LmRlZiAgICAgfCAxMSArKysrKysrKysrKwotIGdjYy90YXJnaG9va3MuYyAgICB8IDEzICsrKysrKysrKysrKysKLSBnY2MvdGFyZ2hvb2tzLmggICAgfCAgMSArCi0gNyBmaWxlcyBjaGFuZ2VkLCA0NSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2NjLTQuOS4yL2djYy9kb2MvdG0udGV4aQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy00LjkuMi5vcmlnL2djYy9kb2MvdG0udGV4aQotKysrIGdjYy00LjkuMi9nY2MvZG9jL3RtLnRleGkKLUBAIC05MDE3LDYgKzkwMTcsMTMgQEAgcmVnaXN0ZXIgaW4gRHdhcmYuICBPdGhlcndpc2UsIHRoaXMgaG9vawotIElmIG5vdCBkZWZpbmVkLCB0aGUgZGVmYXVsdCBpcyB0byByZXR1cm4gQGNvZGV7TlVMTF9SVFh9LgotIEBlbmQgZGVmdHlwZWZuCi0gCi0rQGRlZnR5cGVmbiB7VGFyZ2V0IEhvb2t9IHtlbnVtIG1hY2hpbmVfbW9kZX0gVEFSR0VUX0RXQVJGX0ZSQU1FX1JFR19NT0RFIChpbnQgQHZhcntyZWdub30pCi0rR2l2ZW4gYSByZWdpc3RlciwgdGhpcyBob29rIHNob3VsZCByZXR1cm4gdGhlIG1vZGUgd2hpY2ggdGhlCi0rY29ycmVzcG9uZGluZyBEd2FyZiBmcmFtZSByZWdpc3RlciBzaG91bGQgaGF2ZS4gIFRoaXMgaXMgbm9ybWFsbHkKLSt1c2VkIHRvIHJldHVybiBhIHNtYWxsZXIgbW9kZSB0aGFuIHRoZSByYXcgbW9kZSB0byBwcmV2ZW50IGNhbGwKLStjbG9iYmVyZWQgcGFydHMgb2YgYSByZWdpc3RlciBhbHRlcmluZyB0aGUgZnJhbWUgcmVnaXN0ZXIgc2l6ZQotK0BlbmQgZGVmdHlwZWZuCi0rCi0gQGRlZnR5cGVmbiB7VGFyZ2V0IEhvb2t9IHZvaWQgVEFSR0VUX0lOSVRfRFdBUkZfUkVHX1NJWkVTX0VYVFJBICh0cmVlIEB2YXJ7YWRkcmVzc30pCi0gSWYgc29tZSByZWdpc3RlcnMgYXJlIHJlcHJlc2VudGVkIGluIER3YXJmLTIgdW53aW5kIGluZm9ybWF0aW9uIGluCi0gbXVsdGlwbGUgcGllY2VzLCBkZWZpbmUgdGhpcyBob29rIHRvIGZpbGwgaW4gaW5mb3JtYXRpb24gYWJvdXQgdGhlCi1JbmRleDogZ2NjLTQuOS4yL2djYy9kb2MvdG0udGV4aS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy00LjkuMi5vcmlnL2djYy9kb2MvdG0udGV4aS5pbgotKysrIGdjYy00LjkuMi9nY2MvZG9jL3RtLnRleGkuaW4KLUBAIC02NzQ1LDYgKzY3NDUsOCBAQCB0aGUgdGFyZ2V0IHN1cHBvcnRzIERXQVJGIDIgZnJhbWUgdW53aW5kCi0gCi0gQGhvb2sgVEFSR0VUX0RXQVJGX1JFR0lTVEVSX1NQQU4KLSAKLStAaG9vayBUQVJHRVRfRFdBUkZfRlJBTUVfUkVHX01PREUKLSsKLSBAaG9vayBUQVJHRVRfSU5JVF9EV0FSRl9SRUdfU0laRVNfRVhUUkEKLSAKLSBAaG9vayBUQVJHRVRfQVNNX1RUWVBFCi1JbmRleDogZ2NjLTQuOS4yL2djYy9kd2FyZjJjZmkuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy00LjkuMi5vcmlnL2djYy9kd2FyZjJjZmkuYwotKysrIGdjYy00LjkuMi9nY2MvZHdhcmYyY2ZpLmMKLUBAIC0yNzEsMTEgKzI3MSw5IEBAIGV4cGFuZF9idWlsdGluX2luaXRfZHdhcmZfcmVnX3NpemVzICh0cmUKLSAgICAgICBpZiAocm51bSA8IERXQVJGX0ZSQU1FX1JFR0lTVEVSUykKLSAJewotIAkgIEhPU1RfV0lERV9JTlQgb2Zmc2V0ID0gcm51bSAqIEdFVF9NT0RFX1NJWkUgKG1vZGUpOwotLQkgIGVudW0gbWFjaGluZV9tb2RlIHNhdmVfbW9kZSA9IHJlZ19yYXdfbW9kZVtpXTsKLSAJICBIT1NUX1dJREVfSU5UIHNpemU7Ci0rCSAgZW51bSBtYWNoaW5lX21vZGUgc2F2ZV9tb2RlID0gdGFyZ2V0bS5kd2FyZl9mcmFtZV9yZWdfbW9kZSAoaSk7Ci0gCi0tCSAgaWYgKEhBUkRfUkVHTk9fQ0FMTF9QQVJUX0NMT0JCRVJFRCAoaSwgc2F2ZV9tb2RlKSkKLS0JICAgIHNhdmVfbW9kZSA9IGNob29zZV9oYXJkX3JlZ19tb2RlIChpLCAxLCB0cnVlKTsKLSAJICBpZiAoZG51bSA9PSBEV0FSRl9GUkFNRV9SRVRVUk5fQ09MVU1OKQotIAkgICAgewotIAkgICAgICBpZiAoc2F2ZV9tb2RlID09IFZPSURtb2RlKQotSW5kZXg6IGdjYy00LjkuMi9nY2MvdGFyZ2V0LmRlZgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy00LjkuMi5vcmlnL2djYy90YXJnZXQuZGVmCi0rKysgZ2NjLTQuOS4yL2djYy90YXJnZXQuZGVmCi1AQCAtMzIxOCw2ICszMjE4LDE3IEBAIElmIG5vdCBkZWZpbmVkLCB0aGUgZGVmYXVsdCBpcyB0byByZXR1cm4KLSAgcnR4LCAocnR4IHJlZyksCi0gIGhvb2tfcnR4X3J0eF9udWxsKQotIAotKy8qIEdpdmVuIGEgcmVnaXN0ZXIgcmV0dXJuIHRoZSBtb2RlIG9mIHRoZSBjb3JyZXNwb25kaW5nIERXQVJGIGZyYW1lCi0rICAgcmVnaXN0ZXIuICAqLwotK0RFRkhPT0sKLSsoZHdhcmZfZnJhbWVfcmVnX21vZGUsCi0rICJHaXZlbiBhIHJlZ2lzdGVyLCB0aGlzIGhvb2sgc2hvdWxkIHJldHVybiB0aGUgbW9kZSB3aGljaCB0aGVcblwKLStjb3JyZXNwb25kaW5nIER3YXJmIGZyYW1lIHJlZ2lzdGVyIHNob3VsZCBoYXZlLiAgVGhpcyBpcyBub3JtYWxseVxuXAotK3VzZWQgdG8gcmV0dXJuIGEgc21hbGxlciBtb2RlIHRoYW4gdGhlIHJhdyBtb2RlIHRvIHByZXZlbnQgY2FsbFxuXAotK2Nsb2JiZXJlZCBwYXJ0cyBvZiBhIHJlZ2lzdGVyIGFsdGVyaW5nIHRoZSBmcmFtZSByZWdpc3RlciBzaXplIiwKLSsgZW51bSBtYWNoaW5lX21vZGUsIChpbnQgcmVnbm8pLAotKyBkZWZhdWx0X2R3YXJmX2ZyYW1lX3JlZ19tb2RlKQotKwotIC8qIElmIGV4cGFuZF9idWlsdGluX2luaXRfZHdhcmZfcmVnX3NpemVzIG5lZWRzIHRvIGZpbGwgaW4gdGFibGUKLSAgICBlbnRyaWVzIG5vdCBjb3JyZXNwb25kaW5nIGRpcmVjdGx5IHRvIHJlZ2lzdGVycyBiZWxvdwotICAgIEZJUlNUX1BTRVVET19SRUdJU1RFUiwgdGhpcyBob29rIHNob3VsZCBnZW5lcmF0ZSB0aGUgbmVjZXNzYXJ5Ci1JbmRleDogZ2NjLTQuOS4yL2djYy90YXJnaG9va3MuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy00LjkuMi5vcmlnL2djYy90YXJnaG9va3MuYwotKysrIGdjYy00LjkuMi9nY2MvdGFyZ2hvb2tzLmMKLUBAIC0xNDM4LDYgKzE0MzgsMTkgQEAgZGVmYXVsdF9kZWJ1Z191bndpbmRfaW5mbyAodm9pZCkKLSAgIHJldHVybiBVSV9OT05FOwotIH0KLSAKLSsvKiBEZXRlcm1pbmUgdGhlIGNvcnJlY3QgbW9kZSBmb3IgYSBEd2FyZiBmcmFtZSByZWdpc3RlciB0aGF0IHJlcHJlc2VudHMKLSsgICByZWdpc3RlciBSRUdOTy4gICovCi0rCi0rZW51bSBtYWNoaW5lX21vZGUKLStkZWZhdWx0X2R3YXJmX2ZyYW1lX3JlZ19tb2RlIChpbnQgcmVnbm8pCi0rewotKyAgZW51bSBtYWNoaW5lX21vZGUgc2F2ZV9tb2RlID0gcmVnX3Jhd19tb2RlW3JlZ25vXTsKLSsKLSsgIGlmIChIQVJEX1JFR05PX0NBTExfUEFSVF9DTE9CQkVSRUQgKHJlZ25vLCBzYXZlX21vZGUpKQotKyAgICBzYXZlX21vZGUgPSBjaG9vc2VfaGFyZF9yZWdfbW9kZSAocmVnbm8sIDEsIHRydWUpOwotKyAgcmV0dXJuIHNhdmVfbW9kZTsKLSt9Ci0rCi0gLyogVG8gYmUgdXNlZCBieSB0YXJnZXRzIHdoZXJlIHJlZ19yYXdfbW9kZSBkb2Vzbid0IHJldHVybiB0aGUgcmlnaHQKLSAgICBtb2RlIGZvciByZWdpc3RlcnMgdXNlZCBpbiBhcHBseV9idWlsdGluX3JldHVybiBhbmQgYXBwbHlfYnVpbHRpbl9hcmcuICAqLwotIAotSW5kZXg6IGdjYy00LjkuMi9nY2MvdGFyZ2hvb2tzLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtNC45LjIub3JpZy9nY2MvdGFyZ2hvb2tzLmgKLSsrKyBnY2MtNC45LjIvZ2NjL3Rhcmdob29rcy5oCi1AQCAtMTk0LDYgKzE5NCw3IEBAIGV4dGVybiBpbnQgZGVmYXVsdF9sYWJlbF9hbGlnbl9tYXhfc2tpcAotIGV4dGVybiBpbnQgZGVmYXVsdF9qdW1wX2FsaWduX21heF9za2lwIChydHgpOwotIGV4dGVybiBzZWN0aW9uICogZGVmYXVsdF9mdW5jdGlvbl9zZWN0aW9uKHRyZWUgZGVjbCwgZW51bSBub2RlX2ZyZXF1ZW5jeSBmcmVxLAotIAkJCQkJICBib29sIHN0YXJ0dXAsIGJvb2wgZXhpdCk7Ci0rZXh0ZXJuIGVudW0gbWFjaGluZV9tb2RlIGRlZmF1bHRfZHdhcmZfZnJhbWVfcmVnX21vZGUgKGludCk7Ci0gZXh0ZXJuIGVudW0gbWFjaGluZV9tb2RlIGRlZmF1bHRfZ2V0X3JlZ19yYXdfbW9kZSAoaW50KTsKLSAKLSBleHRlcm4gdm9pZCAqZGVmYXVsdF9nZXRfcGNoX3ZhbGlkaXR5IChzaXplX3QgKik7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNTMtZ2NjLWZpeC1zZWdmYXVsdC1mcm9tLWNhbGxpbmctZnJlZS1vbi1ub24tbWFsbG9jLWQtYS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDA1My1nY2MtZml4LXNlZ2ZhdWx0LWZyb20tY2FsbGluZy1mcmVlLW9uLW5vbi1tYWxsb2MtZC1hLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyM2I0NDVjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDA1My1nY2MtZml4LXNlZ2ZhdWx0LWZyb20tY2FsbGluZy1mcmVlLW9uLW5vbi1tYWxsb2MtZC1hLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotRnJvbSBhMjJhMjIyYzhmOTI5OWY2YzA3YTAyNzQzODhhZGU3ZDRhYjhjMjhkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBGcmksIDIwIEp1biAyMDE0IDE2OjQxOjA4IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGdjYzogZml4IHNlZ2ZhdWx0IGZyb20gY2FsbGluZyBmcmVlIG9uIG5vbi1tYWxsb2MnZCBhcmVhCi0KLVdlIHNlZSB0aGUgZm9sbG93aW5nIG9uIGEgMzJiaXQgZ2NjIGluc3RhbGxlZCBvbiA2NCBiaXQgaG9zdDoKLQotICBSZWFkaW5nIHN5bWJvbHMgZnJvbSAuL2k1ODYtcG9reW1sbGliMzItbGludXgtZ2NjLi4uZG9uZS4KLSAgKGdkYikgcnVuCi0gIFN0YXJ0aW5nIHByb2dyYW06IHg4Ni1wb2t5bWxsaWIzMi1saW51eC9saWIzMi1nY2MvNC45LjAtcjAvaW1hZ2UvdXNyL2Jpbi9pNTg2LXBva3ltbGxpYjMyLWxpbnV4LWdjYwotCi0gIFByb2dyYW0gcmVjZWl2ZWQgc2lnbmFsIFNJR1NFR1YsIFNlZ21lbnRhdGlvbiBmYXVsdC4KLSAgMHhmN2U5NTdlMCBpbiBmcmVlICgpIGZyb20gL2xpYi9pMzg2LWxpbnV4LWdudS9saWJjLnNvLjYKLSAgKGdkYikgYnQKLSAgIzAgIDB4ZjdlOTU3ZTAgaW4gZnJlZSAoKSBmcm9tIC9saWIvaTM4Ni1saW51eC1nbnUvbGliYy5zby42Ci0gICMxICAweDA4MDRiNzNjIGluIHNldF9tdWx0aWxpYl9kaXIgKCkgYXQgZ2NjLTQuOS4wL2djYy9nY2MuYzo3ODI3Ci0gICMyICBtYWluIChhcmdjPTEsIGFyZ3Y9MHhmZmZmZDUwNCkgYXQgZ2NjLTQuOS4wL2djYy9nY2MuYzo2Njg4Ci0gIChnZGIpCi0KLVRoZSBwcm9ibGVtIGFyaXNlcyBiZWNhdXNlIHdlIGNvbmRpdGlvbmFsbHkgYXNzaWduIHRoZSBwb2ludGVyIHdlCi1ldmVudHVhbGx5IGZyZWUsIGFuZCB0aGUgY29uZGl0aW9uYWwgbWF5IGFzc2lnbiB0aGUgcG9pbnRlciB0byB0aGUKLW5vbi1tYWxsb2MnZCBpbnRlcm5hbCBzdHJpbmcgIi4iIHdoaWNoIGZhaWxzIHdoZW4gd2UgZnJlZSBpdCBoZXJlOgotCi0gICBpZiAobXVsdGlsaWJfZGlyID09IE5VTEwgJiYgbXVsdGlsaWJfb3NfZGlyICE9IE5VTEwKLSAgICAgICAmJiBzdHJjbXAgKG11bHRpbGliX29zX2RpciwgIi4iKSA9PSAwKQotICAgICB7Ci0gICAgICAgZnJlZSAoQ09OU1RfQ0FTVCAoY2hhciAqLCBtdWx0aWxpYl9vc19kaXIpKTsKLSAgICAgICAuLi4KLQotQXMgc3VnZ2VzdGVkIGJ5IEpha3ViLCBlbnN1cmUgdGhlICIuIiBjYXNlIGlzIGFsc28gbWFsbG9jJ2QgdmlhCi14c3RyZHVwKCkgYW5kIGhlbmNlIHRoZSBwb2ludGVyIGZvciB0aGUgIi4iIGNhc2UgY2FuIGJlIGZyZWVkLgotCi1DYzogSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4KLUNjOiBKZWZmIExhdyA8bGF3QHJlZGhhdC5jb20+Ci1DYzogTWF0dGhpYXMgS2xvc2UgPGRva29AdWJ1bnR1LmNvbT4KLUNDOiBUb2JpYXMgQnVybnVzIDxidXJudXNAbmV0LWIuZGU+Ci1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFsgaHR0cHM6Ly9nY2MuZ251Lm9yZy9tbC9nY2MtcGF0Y2hlcy8yMDE0LTA2L21zZzAyMDY5Lmh0bWwgXQotU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci0KLWRpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKLWluZGV4IDlhYzE4ZTYwZDgwMS4uMTY4YWNmN2ViMGM5IDEwMDY0NAotLS0tIGEvZ2NjL2djYy5jCi0rKysgYi9nY2MvZ2NjLmMKLUBAIC03NzkwLDEwICs3NzkwLDE1IEBAIHNldF9tdWx0aWxpYl9kaXIgKHZvaWQpCi0gCQlxMisrOwotIAkgICAgICBpZiAoKnEyID09ICc6JykKLSAJCW1sX2VuZCA9IHEyOwotLQkgICAgICBuZXdfbXVsdGlsaWJfb3NfZGlyID0gWE5FV1ZFQyAoY2hhciwgbWxfZW5kIC0gcSk7Ci0tCSAgICAgIG1lbWNweSAobmV3X211bHRpbGliX29zX2RpciwgcSArIDEsIG1sX2VuZCAtIHEgLSAxKTsKLS0JICAgICAgbmV3X211bHRpbGliX29zX2RpclttbF9lbmQgLSBxIC0gMV0gPSAnXDAnOwotLQkgICAgICBtdWx0aWxpYl9vc19kaXIgPSAqbmV3X211bHRpbGliX29zX2RpciA/IG5ld19tdWx0aWxpYl9vc19kaXIgOiAiLiI7Ci0rCSAgICAgIGlmIChtbF9lbmQgLSBxID09IDEpCi0rCQltdWx0aWxpYl9vc19kaXIgPSB4c3RyZHVwICgiLiIpOwotKwkgICAgICBlbHNlCi0rCQl7Ci0rCQkgIG5ld19tdWx0aWxpYl9vc19kaXIgPSBYTkVXVkVDIChjaGFyLCBtbF9lbmQgLSBxKTsKLSsJCSAgbWVtY3B5IChuZXdfbXVsdGlsaWJfb3NfZGlyLCBxICsgMSwgbWxfZW5kIC0gcSAtIDEpOwotKwkJICBuZXdfbXVsdGlsaWJfb3NfZGlyW21sX2VuZCAtIHEgLSAxXSA9ICdcMCc7Ci0rCQkgIG11bHRpbGliX29zX2RpciA9IG5ld19tdWx0aWxpYl9vc19kaXI7Ci0rCQl9Ci0gCi0gCSAgICAgIGlmIChxMiA8IGVuZCAmJiAqcTIgPT0gJzonKQotIAkJewotLS0gCi0xLjkuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNTQtZ2NjLU1ha2VmaWxlLmluLWZpeC1wYXJhbGxlbC1idWlsZGluZy1mYWlsdXJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDU0LWdjYy1NYWtlZmlsZS5pbi1maXgtcGFyYWxsZWwtYnVpbGRpbmctZmFpbHVyZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2U4ZWZhMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNTQtZ2NjLU1ha2VmaWxlLmluLWZpeC1wYXJhbGxlbC1idWlsZGluZy1mYWlsdXJlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotZ2NjL01ha2VmaWxlLmluOiBmaXggcGFyYWxsZWwgYnVpbGRpbmcgZmFpbHVyZQotCi1UaGUgZ2NjLWFyLm8sIGdjYy1ubS5vLCBnY2MtcmFubGliLm8gYW5kIGVycm9ycy5vIGluY2x1ZGVkCi1jb25maWcuaCB3aGljaCB3YXMgYSBnZW5lcmF0ZWQgZmlsZS4gQnV0IG5vIGV4cGxpY2l0eSBydWxlCi10byBjbGFyaWZ5IHRoZSBkZXBlbmRlbmN5LiBUaGVyZSB3YXMgcG90ZW50aWFsIGJ1aWxkaW5nCi1mYWlsdXJlIHdoaWxlIHBhcmFsbGVsIG1ha2UuCi0KLUZvciBnY2MtYXIubywgZ2NjLW5tLm8gYW5kIGdjYy1yYW5saWIubywgdGhleSB3ZXJlIGNvbXBpbGVkIGZyb20gb25lIEMKLXNvdXJjZSBmaWxlIGdjYy1hci5jLCB3ZSBhZGQgdGhlbSB0byBBTExfSE9TVF9CQUNLRU5EX09CSlMsIHNvIHRoZQotJyQoQUxMX0hPU1RfT0JKUykgOiB8ICQoZ2VuZXJhdGVkX2ZpbGVzKScgcnVsZSBjb3VsZCB3b3JrIGZvciB0aGVzZQotb2JqZWN0cy4KLQotRm9yIGVycm9ycy5vLCBpdCBpcyBwYXJ0IG9mIGdlbmd0eXBlLCBhbmQgdGhlIGdlbmd0eXBlIGdlbmVyYXRvciBwcm9ncmFtCi1pcyBzcGVjaWFsOiBUd28gdmVyc2lvbnMgYXJlIGJ1aWx0LiBPbmUgaXMgZm9yIHRoZSBidWlsZCBtYWNoaW5lLCBhbmQgb25lCi1pcyBmb3IgdGhlIGhvc3QuIFdlIHJlZmVyZWQgd2hhdCBnZW5ndHlwZS1wYXJzZS5vIGRpZCAod2hpY2ggYWxzbyBpcyBwYXJ0Ci1vZiBnZW5ndHlwZSkuCi0KLVtHQ0MgIzYxODk5XQotaHR0cHM6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NjE4OTkKLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2djYy1wYXRjaGVzQGdjYy5nbnUub3JnXQotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBnY2MvTWFrZWZpbGUuaW4gfCA3ICsrKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvTWFrZWZpbGUuaW4gYi9nY2MvTWFrZWZpbGUuaW4KLWluZGV4IDY0NzVjYmEuLjU2ZTUwYmIgMTAwNjQ0Ci0tLS0gYS9nY2MvTWFrZWZpbGUuaW4KLSsrKyBiL2djYy9NYWtlZmlsZS5pbgotQEAgLTE0ODEsMTMgKzE0ODEsMTYgQEAgT0JKUy1saWJjb21tb24tdGFyZ2V0ID0gJChjb21tb25fb3V0X29iamVjdF9maWxlKSBwcmVmaXgubyBwYXJhbXMubyBcCi0gCW9wdHMubyBvcHRzLWNvbW1vbi5vIG9wdGlvbnMubyB2ZWMubyBob29rcy5vIGNvbW1vbi9jb21tb24tdGFyZ2hvb2tzLm8gXAotIAloYXNoLXRhYmxlLm8gZmlsZS1maW5kLm8KLSAKLSsjIE9iamVjdHMgY29tcGlsZWQgZnJvbSBvbmUgQyBzb3VyY2UgZmlsZSBnY2MtYXIuYwotK09CSlMtZ2NjLWFyID0gZ2NjLWFyLm8gZ2NjLW5tLm8gZ2NjLXJhbmxpYi5vCi0rCi0gIyBUaGlzIGxpc3RzIGFsbCBob3N0IG9iamVjdHMgZm9yIHRoZSBmcm9udCBlbmRzLgotIEFMTF9IT1NUX0ZST05URU5EX09CSlMgPSAkKGZvcmVhY2ggdiwkKENPTkZJR19MQU5HVUFHRVMpLCQoJCh2KV9PQkpTKSkKLSAKLSBBTExfSE9TVF9CQUNLRU5EX09CSlMgPSAkKEdDQ19PQkpTKSAkKE9CSlMpICQoT0JKUy1saWJjb21tb24pIFwKLSAgICQoT0JKUy1saWJjb21tb24tdGFyZ2V0KSBAVFJFRUJST1dTRVJAIG1haW4ubyBjLWZhbWlseS9jcHBzcGVjLm8gXAotICAgJChDT0xMRUNUMl9PQkpTKSAkKEVYVFJBX0dDQ19PQkpTKSAkKEdDT1ZfT0JKUykgJChHQ09WX0RVTVBfT0JKUykgXAotLSAgbHRvLXdyYXBwZXIubwotKyAgbHRvLXdyYXBwZXIubyAkKE9CSlMtZ2NjLWFyKQotIAotICMgVGhpcyBsaXN0cyBhbGwgaG9zdCBvYmplY3QgZmlsZXMsIHdoZXRoZXIgdGhleSBhcmUgaW5jbHVkZWQgaW4gdGhpcwotICMgY29tcGlsYXRpb24gb3Igbm90LgotQEAgLTI0MzcsNiArMjQ0MCw4IEBAIGdlbmd0eXBlLXBhcnNlLm86ICQoQ09ORklHX0gpCi0gQ0ZMQUdTLWJ1aWxkL2dlbmd0eXBlLXBhcnNlLm8gKz0gLURHRU5FUkFUT1JfRklMRQotIGJ1aWxkL2dlbmd0eXBlLXBhcnNlLm86ICQoQkNPTkZJR19IKQotIAotK2Vycm9ycy5vIDogJChDT05GSUdfSCkKLSsKLSBnZW5ndHlwZS1zdGF0ZS5vIGJ1aWxkL2dlbmd0eXBlLXN0YXRlLm86IGdlbmd0eXBlLXN0YXRlLmMgJChTWVNURU1fSCkgXAotICAgZ2VuZ3R5cGUuaCBlcnJvcnMuaCBkb3VibGUtaW50LmggdmVyc2lvbi5oICQoSEFTSFRBQl9IKSAkKE9CU1RBQ0tfSCkgXAotICAgJChYUkVHRVhfSCkKLS0tIAotMS44LjEuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNTUtZHdhcmYtcmVnLXByb2Nlc3NpbmctaGVscGVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDU1LWR3YXJmLXJlZy1wcm9jZXNzaW5nLWhlbHBlci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTU3ZGFiMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNTUtZHdhcmYtcmVnLXByb2Nlc3NpbmctaGVscGVyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQ4ICswLDAgQEAKLUZyb20gNGZkMzlmMTMyOTM3OWUwMGY5NTgzOTRhZGRlNmJlOTZmMGNhZjIxZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGhhaW5xdWUgPGhhaW5xdWVAMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0PgotRGF0ZTogRnJpLCA1IERlYyAyMDE0IDE2OjUzOjIyICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIDIwMTQtMTItMDUgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWRhY29yZS5jb20+Ci0KLSAgICAgICAgKiBkd2FyZjJjZmkuYyAoaW5pdF9vbmVfZHdhcmZfcmVnX3NpemUpOiBOZXcgaGVscGVyLCBwcm9jZXNzaW5nCi0gICAgICAgIG9uZSBwYXJ0aWN1bGFyIHJlZyBmb3IgZXhwYW5kX2J1aWx0aW5faW5pdF9kd2FyZl9yZWdfc2l6ZXMuCi0gICAgICAgIChleHBhbmRfYnVpbHRpbl9pbml0X2R3YXJmX3JlZ19zaXplcyk6IFJld29yayB0byB1c2UgaGVscGVyIGFuZAotICAgICAgICBhY2NvdW50IGZvciBkd2FyZiByZWdpc3RlciBzcGFucy4KLQotCi0KLWdpdC1zdm4taWQ6IHN2bitzc2g6Ly9nY2MuZ251Lm9yZy9zdm4vZ2NjL3RydW5rQDIxODQyOCAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2djYyA1LjBdCi0KLS0tLQotIGdjYy9DaGFuZ2VMb2cgICB8ICA3ICsrKysrCi0gZ2NjL2R3YXJmMmNmaS5jIHwgOTggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA4NSBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdjYy00LjkuMi9nY2MvZHdhcmYyY2ZpLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtNC45LjIub3JpZy9nY2MvZHdhcmYyY2ZpLmMKLSsrKyBnY2MtNC45LjIvZ2NjL2R3YXJmMmNmaS5jCi1AQCAtMjUyLDcgKzI1Miw1OSBAQCBpbml0X3JldHVybl9jb2x1bW5fc2l6ZSAoZW51bSBtYWNoaW5lX21vCi0gCQkgIGdlbl9pbnRfbW9kZSAoc2l6ZSwgbW9kZSkpOwotIH0KLSAKLS0vKiBHZW5lcmF0ZSBjb2RlIHRvIGluaXRpYWxpemUgdGhlIHJlZ2lzdGVyIHNpemUgdGFibGUuICAqLwotKy8qIERhdGFzdHJ1Y3R1cmUgdXNlZCBieSBleHBhbmRfYnVpbHRpbl9pbml0X2R3YXJmX3JlZ19zaXplcyBhbmQKLSsgICBpbml0X29uZV9kd2FyZl9yZWdfc2l6ZSB0byBjb21tdW5pY2F0ZSBvbiB3aGF0IGhhcyBiZWVuIGRvbmUgYnkgdGhlCi0rICAgbGF0dGVyLiAgKi8KLSsKLSt0eXBlZGVmIHN0cnVjdAotK3sKLSsgIC8qIFdoZXRoZXIgdGhlIGR3YXJmIHJldHVybiBjb2x1bW4gd2FzIGluaXRpYWxpemVkLiAgKi8KLSsgIGJvb2wgd3JvdGVfcmV0dXJuX2NvbHVtbjsKLSsKLSsgIC8qIEZvciBlYWNoIGhhcmQgcmVnaXN0ZXIgUkVHTk8sIHdoZXRoZXIgaW5pdF9vbmVfZHdhcmZfcmVnX3NpemUKLSsgICAgIHdhcyBnaXZlbiBSRUdOTyB0byBwcm9jZXNzIGFscmVhZHkuICAqLwotKyAgYm9vbCBwcm9jZXNzZWRfcmVnbm8gW0ZJUlNUX1BTRVVET19SRUdJU1RFUl07Ci0rCi0rfSBpbml0X29uZV9kd2FyZl9yZWdfc3RhdGU7Ci0rCi0rLyogSGVscGVyIGZvciBleHBhbmRfYnVpbHRpbl9pbml0X2R3YXJmX3JlZ19zaXplcy4gIEdlbmVyYXRlIGNvZGUgdG8KLSsgICBpbml0aWFsaXplIHRoZSBkd2FyZiByZWdpc3RlciBzaXplIHRhYmxlIGVudHJ5IGNvcnJlc3BvbmRpbmcgdG8gcmVnaXN0ZXIKLSsgICBSRUdOTyBpbiBSRUdNT0RFLiAgVEFCTEUgaXMgdGhlIHRhYmxlIGJhc2UgYWRkcmVzcywgU0xPVE1PREUgaXMgdGhlIG1vZGUgdG8KLSsgICB1c2UgZm9yIHRoZSBzaXplIGVudHJ5IHRvIGluaXRpYWxpemUsIGFuZCBJTklUX1NUQVRFIGlzIHRoZSBjb21tdW5pY2F0aW9uCi0rICAgZGF0YXN0cnVjdHVyZSBjb252ZXlpbmcgd2hhdCB3ZSdyZSBkb2luZyB0byBvdXIgY2FsbGVyLiAgKi8KLSsKLStzdGF0aWMKLSt2b2lkIGluaXRfb25lX2R3YXJmX3JlZ19zaXplIChpbnQgcmVnbm8sIG1hY2hpbmVfbW9kZSByZWdtb2RlLAotKwkJCSAgICAgIHJ0eCB0YWJsZSwgbWFjaGluZV9tb2RlIHNsb3Rtb2RlLAotKwkJCSAgICAgIGluaXRfb25lX2R3YXJmX3JlZ19zdGF0ZSAqaW5pdF9zdGF0ZSkKLSt7Ci0rICBjb25zdCB1bnNpZ25lZCBpbnQgZG51bSA9IERXQVJGX0ZSQU1FX1JFR05VTSAocmVnbm8pOwotKyAgY29uc3QgdW5zaWduZWQgaW50IHJudW0gPSBEV0FSRjJfRlJBTUVfUkVHX09VVCAoZG51bSwgMSk7Ci0rCi0rICBjb25zdCBIT1NUX1dJREVfSU5UIHNsb3RvZmZzZXQgPSBybnVtICogR0VUX01PREVfU0laRSAoc2xvdG1vZGUpOwotKyAgY29uc3QgSE9TVF9XSURFX0lOVCByZWdzaXplID0gR0VUX01PREVfU0laRSAocmVnbW9kZSk7Ci0rCi0rICBpbml0X3N0YXRlLT5wcm9jZXNzZWRfcmVnbm9bcmVnbm9dID0gdHJ1ZTsKLSsKLSsgIGlmIChybnVtID49IERXQVJGX0ZSQU1FX1JFR0lTVEVSUykKLSsgICAgcmV0dXJuOwotKwotKyAgaWYgKGRudW0gPT0gRFdBUkZfRlJBTUVfUkVUVVJOX0NPTFVNTikKLSsgICAgewotKyAgICAgIGlmIChyZWdtb2RlID09IFZPSURtb2RlKQotKwlyZXR1cm47Ci0rICAgICAgaW5pdF9zdGF0ZS0+d3JvdGVfcmV0dXJuX2NvbHVtbiA9IHRydWU7Ci0rICAgIH0KLSsKLSsgIGlmIChzbG90b2Zmc2V0IDwgMCkKLSsgICAgcmV0dXJuOwotKwotKyAgZW1pdF9tb3ZlX2luc24gKGFkanVzdF9hZGRyZXNzICh0YWJsZSwgc2xvdG1vZGUsIHNsb3RvZmZzZXQpLAotKwkJICBnZW5faW50X21vZGUgKHJlZ3NpemUsIHNsb3Rtb2RlKSk7Ci0rfQotKwotKy8qIEdlbmVyYXRlIGNvZGUgdG8gaW5pdGlhbGl6ZSB0aGUgZHdhcmYgcmVnaXN0ZXIgc2l6ZSB0YWJsZSBsb2NhdGVkCi0rICAgYXQgdGhlIHByb3ZpZGVkIEFERFJFU1MuICAqLwotIAotIHZvaWQKLSBleHBhbmRfYnVpbHRpbl9pbml0X2R3YXJmX3JlZ19zaXplcyAodHJlZSBhZGRyZXNzKQotQEAgLTI2MSwzNSArMzEzLDQwIEBAIGV4cGFuZF9idWlsdGluX2luaXRfZHdhcmZfcmVnX3NpemVzICh0cmUKLSAgIGVudW0gbWFjaGluZV9tb2RlIG1vZGUgPSBUWVBFX01PREUgKGNoYXJfdHlwZV9ub2RlKTsKLSAgIHJ0eCBhZGRyID0gZXhwYW5kX25vcm1hbCAoYWRkcmVzcyk7Ci0gICBydHggbWVtID0gZ2VuX3J0eF9NRU0gKEJMS21vZGUsIGFkZHIpOwotLSAgYm9vbCB3cm90ZV9yZXR1cm5fY29sdW1uID0gZmFsc2U7Ci0rCi0rICBpbml0X29uZV9kd2FyZl9yZWdfc3RhdGUgaW5pdF9zdGF0ZTsKLSsKLSsgIG1lbXNldCAoKGNoYXIgKikmaW5pdF9zdGF0ZSwgMCwgc2l6ZW9mIChpbml0X3N0YXRlKSk7Ci0gCi0gICBmb3IgKGkgPSAwOyBpIDwgRklSU1RfUFNFVURPX1JFR0lTVEVSOyBpKyspCi0gICAgIHsKLS0gICAgICB1bnNpZ25lZCBpbnQgZG51bSA9IERXQVJGX0ZSQU1FX1JFR05VTSAoaSk7Ci0tICAgICAgdW5zaWduZWQgaW50IHJudW0gPSBEV0FSRjJfRlJBTUVfUkVHX09VVCAoZG51bSwgMSk7Ci0tCi0tICAgICAgaWYgKHJudW0gPCBEV0FSRl9GUkFNRV9SRUdJU1RFUlMpCi0tCXsKLS0JICBIT1NUX1dJREVfSU5UIG9mZnNldCA9IHJudW0gKiBHRVRfTU9ERV9TSVpFIChtb2RlKTsKLS0JICBIT1NUX1dJREVfSU5UIHNpemU7Ci0tCSAgZW51bSBtYWNoaW5lX21vZGUgc2F2ZV9tb2RlID0gdGFyZ2V0bS5kd2FyZl9mcmFtZV9yZWdfbW9kZSAoaSk7Ci0rICAgICAgbWFjaGluZV9tb2RlIHNhdmVfbW9kZTsKLSsgICAgICBydHggc3BhbjsKLSAKLS0JICBpZiAoZG51bSA9PSBEV0FSRl9GUkFNRV9SRVRVUk5fQ09MVU1OKQotKyAgICAgIC8qIE5vIHBvaW50IGluIHByb2Nlc3NpbmcgYSByZWdpc3RlciBtdWx0aXBsZSB0aW1lcy4gIFRoaXMgY291bGQgaGFwcGVuCi0rICAgICAgICB3aXRoIHJlZ2lzdGVyIHNwYW5zLCBlLmcuIHdoZW4gYSByZWcgaXMgZmlyc3QgcHJvY2Vzc2VkIGFzIGEgcGllY2Ugb2YKLSsgICAgICAgIGEgc3BhbiwgdGhlbiBhcyBhIHJlZ2lzdGVyIG9uIGl0cyBvd24gbGF0ZXIgb24uICAqLwotKwotKyAgICAgIGlmIChpbml0X3N0YXRlLnByb2Nlc3NlZF9yZWdub1tpXSkKLSsgICAgICAgY29udGludWU7Ci0rCi0rICAgICAgc2F2ZV9tb2RlID0gdGFyZ2V0bS5kd2FyZl9mcmFtZV9yZWdfbW9kZSAoaSk7Ci0rICAgICAgc3BhbiA9IHRhcmdldG0uZHdhcmZfcmVnaXN0ZXJfc3BhbiAoZ2VuX3J0eF9SRUcgKHNhdmVfbW9kZSwgaSkpOwotKyAgICAgIGlmICghc3BhbikKLSsgICAgICAgaW5pdF9vbmVfZHdhcmZfcmVnX3NpemUgKGksIHNhdmVfbW9kZSwgbWVtLCBtb2RlLCAmaW5pdF9zdGF0ZSk7Ci0rICAgICAgZWxzZQotKyAgICAgICB7Ci0rICAgICAgICAgZm9yIChpbnQgc2kgPSAwOyBzaSA8IFhWRUNMRU4gKHNwYW4sIDApOyBzaSsrKQotIAkgICAgewotLQkgICAgICBpZiAoc2F2ZV9tb2RlID09IFZPSURtb2RlKQotLQkJY29udGludWU7Ci0tCSAgICAgIHdyb3RlX3JldHVybl9jb2x1bW4gPSB0cnVlOwotLQkgICAgfQotLQkgIHNpemUgPSBHRVRfTU9ERV9TSVpFIChzYXZlX21vZGUpOwotLQkgIGlmIChvZmZzZXQgPCAwKQotLQkgICAgY29udGludWU7Ci0rICAgICAgICAgICAgIHJ0eCByZWcgPSBYVkVDRVhQIChzcGFuLCAwLCBzaSk7Ci0rICAgICAgICAgICAgIGluaXRfb25lX2R3YXJmX3JlZ19zaXplCi0rICAgICAgICAgICAgICAgKFJFR05PIChyZWcpLCBHRVRfTU9ERSAocmVnKSwgbWVtLCBtb2RlLCAmaW5pdF9zdGF0ZSk7Ci0rICAgICAgICAgICB9Ci0gCi0tCSAgZW1pdF9tb3ZlX2luc24gKGFkanVzdF9hZGRyZXNzIChtZW0sIG1vZGUsIG9mZnNldCksCi0tCQkJICBnZW5faW50X21vZGUgKHNpemUsIG1vZGUpKTsKLSAJfQotICAgICB9Ci0gCi0tICBpZiAoIXdyb3RlX3JldHVybl9jb2x1bW4pCi0rICBpZiAoIWluaXRfc3RhdGUud3JvdGVfcmV0dXJuX2NvbHVtbikKLSAgICAgaW5pdF9yZXR1cm5fY29sdW1uX3NpemUgKG1vZGUsIG1lbSwgRFdBUkZfRlJBTUVfUkVUVVJOX0NPTFVNTik7Ci0gCi0gI2lmZGVmIERXQVJGX0FMVF9GUkFNRV9SRVRVUk5fQ09MVU1OCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNTYtZGVmaW5lLWRlZmF1bHQtY2ZhLXJlZ2lzdGVyLW1hcHBpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNTYtZGVmaW5lLWRlZmF1bHQtY2ZhLXJlZ2lzdGVyLW1hcHBpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiNmM5NGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDU2LWRlZmluZS1kZWZhdWx0LWNmYS1yZWdpc3Rlci1tYXBwaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotRnJvbSBjMDIzNWEzM2RlOGM0Zjc4Y2NlMzViMmE4YzIwMzVjODNmZTFiZDE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogaGFpbnF1ZSA8aGFpbnF1ZUAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQ+Ci1EYXRlOiBGcmksIDUgRGVjIDIwMTQgMTc6MDE6NDIgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gMjAxNC0xMi0wNSAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhZGFjb3JlLmNvbT4KLQotICAgICAgICBnY2MvCi0gICAgICAgICogZGVmYXVsdHMuaDogKERXQVJGX1JFR19UT19VTldJTkRfQ09MVU1OKTogRGVmaW5lIGRlZmF1bHQuCi0gICAgICAgICogZHdhcmYyY2ZpLmMgKGluaXRfb25lX2R3YXJmX3JlZ19zaXplKTogSG9ub3IKLSAgICAgICAgRFdBUkZfUkVHX1RPX1VOV0lORF9DT0xVTU4uCi0KLSAgICAgICAgbGliZ2NjLwotICAgICAgICAqIHVud2luZC1kdzIuYyAoRFdBUkZfUkVHX1RPX1VOV0lORF9DT0xVTU4pOiBSZW1vdmUgZGVmYXVsdCBkZWYsCi0gICAgICAgIG5vdyBwcm92aWRlZCBieSBkZWZhdWx0cy5oLgotCi0KLQotZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2djYy5nbnUub3JnL3N2bi9nY2MvdHJ1bmtAMjE4NDI5IDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhNAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZ2NjIDUuMF0KLQotLS0tCi0gZ2NjL0NoYW5nZUxvZyAgICAgICB8IDYgKysrKysrCi0gZ2NjL2RlZmF1bHRzLmggICAgICB8IDUgKysrKysKLSBnY2MvZHdhcmYyY2ZpLmMgICAgIHwgMyArKy0KLSBsaWJnY2MvQ2hhbmdlTG9nICAgIHwgNSArKysrKwotIGxpYmdjYy91bndpbmQtZHcyLmMgfCA0IC0tLS0KLSA1IGZpbGVzIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnY2MtNC45LjIvZ2NjL2RlZmF1bHRzLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtNC45LjIub3JpZy9nY2MvZGVmYXVsdHMuaAotKysrIGdjYy00LjkuMi9nY2MvZGVmYXVsdHMuaAotQEAgLTQzOCw2ICs0MzgsMTEgQEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USQotICNkZWZpbmUgRFdBUkZfRlJBTUVfUkVHTlVNKFJFRykgREJYX1JFR0lTVEVSX05VTUJFUiAoUkVHKQotICNlbmRpZgotIAotKy8qIFRoZSBtYXBwaW5nIGZyb20gZHdhcmYgQ0ZBIHJlZyBudW1iZXIgdG8gaW50ZXJuYWwgZHdhcmYgcmVnIG51bWJlcnMuICAqLwotKyNpZm5kZWYgRFdBUkZfUkVHX1RPX1VOV0lORF9DT0xVTU4KLSsjZGVmaW5lIERXQVJGX1JFR19UT19VTldJTkRfQ09MVU1OKFJFR05PKSAoUkVHTk8pCi0rI2VuZGlmCi0rCi0gLyogTWFwIHJlZ2lzdGVyIG51bWJlcnMgaGVsZCBpbiB0aGUgY2FsbCBmcmFtZSBpbmZvIHRoYXQgZ2NjIGhhcwotICAgIGNvbGxlY3RlZCB1c2luZyBEV0FSRl9GUkFNRV9SRUdOVU0gdG8gdGhvc2UgdGhhdCBzaG91bGQgYmUgb3V0cHV0IGluCi0gICAgLmRlYnVnX2ZyYW1lIGFuZCAuZWhfZnJhbWUuICAqLwotSW5kZXg6IGdjYy00LjkuMi9nY2MvZHdhcmYyY2ZpLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtNC45LjIub3JpZy9nY2MvZHdhcmYyY2ZpLmMKLSsrKyBnY2MtNC45LjIvZ2NjL2R3YXJmMmNmaS5jCi1AQCAtMjgwLDggKzI4MCw5IEBAIHZvaWQgaW5pdF9vbmVfZHdhcmZfcmVnX3NpemUgKGludCByZWdubywKLSB7Ci0gICBjb25zdCB1bnNpZ25lZCBpbnQgZG51bSA9IERXQVJGX0ZSQU1FX1JFR05VTSAocmVnbm8pOwotICAgY29uc3QgdW5zaWduZWQgaW50IHJudW0gPSBEV0FSRjJfRlJBTUVfUkVHX09VVCAoZG51bSwgMSk7Ci0rICBjb25zdCB1bnNpZ25lZCBpbnQgZGNvbCA9IERXQVJGX1JFR19UT19VTldJTkRfQ09MVU1OIChybnVtKTsKLSAKLS0gIGNvbnN0IEhPU1RfV0lERV9JTlQgc2xvdG9mZnNldCA9IHJudW0gKiBHRVRfTU9ERV9TSVpFIChzbG90bW9kZSk7Ci0rICBjb25zdCBIT1NUX1dJREVfSU5UIHNsb3RvZmZzZXQgPSBkY29sICogR0VUX01PREVfU0laRSAoc2xvdG1vZGUpOwotICAgY29uc3QgSE9TVF9XSURFX0lOVCByZWdzaXplID0gR0VUX01PREVfU0laRSAocmVnbW9kZSk7Ci0gCi0gICBpbml0X3N0YXRlLT5wcm9jZXNzZWRfcmVnbm9bcmVnbm9dID0gdHJ1ZTsKLUluZGV4OiBnY2MtNC45LjIvbGliZ2NjL3Vud2luZC1kdzIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy00LjkuMi5vcmlnL2xpYmdjYy91bndpbmQtZHcyLmMKLSsrKyBnY2MtNC45LjIvbGliZ2NjL3Vud2luZC1kdzIuYwotQEAgLTU1LDEwICs1NSw2IEBACi0gI2RlZmluZSBQUkVfR0NDM19EV0FSRl9GUkFNRV9SRUdJU1RFUlMgRFdBUkZfRlJBTUVfUkVHSVNURVJTCi0gI2VuZGlmCi0gCi0tI2lmbmRlZiBEV0FSRl9SRUdfVE9fVU5XSU5EX0NPTFVNTgotLSNkZWZpbmUgRFdBUkZfUkVHX1RPX1VOV0lORF9DT0xVTU4oUkVHTk8pIChSRUdOTykKLS0jZW5kaWYKLS0KLSAvKiA/Pz8gRm9yIHRoZSBwdWJsaWMgZnVuY3Rpb24gaW50ZXJmYWNlcywgd2UgdGVuZCB0byBnY2NfYXNzZXJ0IHRoYXQgdGhlCi0gICAgY29sdW1uIG51bWJlcnMgYXJlIGluIHJhbmdlLiAgRm9yIHRoZSBkd2FyZjIgdW53aW5kIGluZm8gdGhpcyBkb2VzIGhhcHBlbiwKLSAgICBhbHRob3VnaCBzbyBmYXIgaW4gYSBjYXNlIHRoYXQgZG9lc24ndCBhY3R1YWxseSBtYXR0ZXIuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNTctYWFyY2g2NC1jb25maWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNTctYWFyY2g2NC1jb25maWcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyOTU1OTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDU3LWFhcmNoNjQtY29uZmlnLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRGlzYWJsZSB0aGUgTVVMVElMSUJfT1NESVJOQU1FUyBhbmQgb3RoZXIgbXVsdGlsaWIgb3B0aW9ucy4KLQotSGFyZCBjb2RpbmcgdGhlIE1VTFRJTElCX09TRElSTkFNRVMgd2l0aCAuLi9saWI2NCBpcyBjYXVzaW5nIHByb2JsZW1zIG9uCi1zeXN0ZW1zIHdoZXJlIHRoZSBsaWJkaXIgaXMgTk9UIHNldCB0byAvbGliNjQuICBUaGlzIGlzIGFsbG93ZWQgYnkgdGhlIEFCSSwgYXMKLWxvbmcgYXMgdGhlIGR5bmFtaWMgbG9hZGVyIGlzIHByZXNlbnQgaW4gL2xpYi4KLQotV2Ugc2ltcGx5IHdhbnQgdG8gdXNlIHRoZSBkZWZhdWx0IHJ1bGVzIGluIGdjYyB0byBmaW5kIGFuZCBjb25maWd1cmUgdGhlIAotbm9ybWFsIGxpYmRpci4KLQotU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotCi1JbmRleDogZ2NjLTQuOS4xL2djYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtNC45LjEub3JpZy9nY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4Ci0rKysgZ2NjLTQuOS4xL2djYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXgKLUBAIC0yMSwxMSArMjEsMTEgQEAKLSBMSUIxQVNNU1JDICAgPSBhYXJjaDY0L2xpYjFmdW5jcy5hc20KLSBMSUIxQVNNRlVOQ1MgPSBfYWFyY2g2NF9zeW5jX2NhY2hlX3JhbmdlCi0gCi0tQUFSQ0hfQkUgPSAkKGlmICQoZmluZHN0cmluZyBUQVJHRVRfQklHX0VORElBTl9ERUZBVUxUPTEsICQodG1fZGVmaW5lcykpLF9iZSkKLS1NVUxUSUxJQl9PU0RJUk5BTUVTID0gLj0uLi9saWI2NCQoY2FsbCBpZl9tdWx0aWFyY2gsOmFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnUpCi0tTVVMVElBUkNIX0RJUk5BTUUgPSAkKGNhbGwgaWZfbXVsdGlhcmNoLGFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnUpCi0rI0FBUkNIX0JFID0gJChpZiAkKGZpbmRzdHJpbmcgVEFSR0VUX0JJR19FTkRJQU5fREVGQVVMVD0xLCAkKHRtX2RlZmluZXMpKSxfYmUpCi0rI01VTFRJTElCX09TRElSTkFNRVMgPSAuPS4uL2xpYjY0JChjYWxsIGlmX211bHRpYXJjaCw6YWFyY2g2NCQoQUFSQ0hfQkUpLWxpbnV4LWdudSkKLSsjTVVMVElBUkNIX0RJUk5BTUUgPSAkKGNhbGwgaWZfbXVsdGlhcmNoLGFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnUpCi0gCi0gIyBEaXNhYmxlIHRoZSBtdWx0aWxpYiBmb3IgbGludXgtZ251IHRhcmdldHMgZm9yIHRoZSB0aW1lIGJlaW5nOyBmb2N1cwotICMgb24gdGhlIGJhcmVtZXRhbCB0YXJnZXRzLgotLU1VTFRJTElCX09QVElPTlMgICAgPQotLU1VTFRJTElCX0RJUk5BTUVTICAgPQotKyNNVUxUSUxJQl9PUFRJT05TICAgID0KLSsjTVVMVElMSUJfRElSTkFNRVMgICA9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNTgtZ2NjLXIyMTIxNzEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNTgtZ2NjLXIyMTIxNzEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0NDJiYTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDU4LWdjYy1yMjEyMTcxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEzICswLDAgQEAKLUZyb20gY2EwM2NmMWIxMzNkNjZlYjk3OGM2OGY2ZGJjMzQ1ZTlhYWJjYmE4OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IHVyb3MgPHVyb3NAMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0PgotRGF0ZTogTW9uLCAzMCBKdW4gMjAxNCAxOTozMDo1MiArMDAwMAotU3ViamVjdDogW1BBVENIXSByMjEyMTcxCi0KLSogZXhjZXB0LmMgKGVtaXRfbm90ZV9laF9yZWdpb25fZW5kKTogTmV3IGhlbHBlcgotIGZ1bmN0aW9uLiAJKGNvbnZlcnRfdG9fZWhfcmVnaW9uX3Jhbmdlcyk6IFVzZQotIGVtaXRfbm90ZV9laF9yZWdpb25fZW5kIHRvIAllbWl0IEVIX1JFR0lPTl9FTkQgbm90ZS4gCi0gKiBqdW1wLmMgKGNsZWFudXBfYmFycmllcnMpOiBEbyBub3Qgc3BsaXQgYSBjYWxsIGFuZCBpdHMgCi0gY29ycmVzcG9uZGluZyBDQUxMX0FSR19MT0NBVElPTiBub3RlLgotCi1naXQtc3ZuLWlkOiBzdm4rc3NoOi8vZ2NjLmdudS5vcmcvc3ZuL2djYy90cnVua0AyMTIxNzEgMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2NjLmdudS5vcmcvdmlld2N2cy9nY2M/dmlldz1yZXZpc2lvbiZyZXZpc2lvbj0yMTIxNzFdCi1TaWduZWQtb2ZmLWJ5OiBCYW9zaGFuIFBhbmcgPGJhb3NoYW4ucGFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gZ2NjL2V4Y2VwdC5jIHwgICAyMyArKysrKysrKysrKysrKysrKystLS0tLQotIGdjYy9qdW1wLmMgICB8ICAgMTkgKysrKysrKysrKysrKysrLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9leGNlcHQuYyBiL2djYy9leGNlcHQuYwotaW5kZXggZGM1YzFkMi4uN2FjMTE0ZiAxMDA2NDQKLS0tLSBhL2djYy9leGNlcHQuYwotKysrIGIvZ2NjL2V4Y2VwdC5jCi1AQCAtMjQ2Niw2ICsyNDY2LDIwIEBAIGFkZF9jYWxsX3NpdGUgKHJ0eCBsYW5kaW5nX3BhZCwgaW50IGFjdGlvbiwgaW50IHNlY3Rpb24pCi0gICByZXR1cm4gY2FsbF9zaXRlX2Jhc2UgKyBjcnRsLT5laC5jYWxsX3NpdGVfcmVjb3JkX3Zbc2VjdGlvbl0tPmxlbmd0aCAoKSAtIDE7Ci0gfQotIAotK3N0YXRpYyBydHgKLStlbWl0X25vdGVfZWhfcmVnaW9uX2VuZCAocnR4IGluc24pCi0rewotKyAgcnR4IG5leHQgPSBORVhUX0lOU04gKGluc24pOwotKwotKyAgLyogTWFrZSBzdXJlIHdlIGRvIG5vdCBzcGxpdCBhIGNhbGwgYW5kIGl0cyBjb3JyZXNwb25kaW5nCi0rICAgICBDQUxMX0FSR19MT0NBVElPTiBub3RlLiAgKi8KLSsgIGlmIChuZXh0ICYmIE5PVEVfUCAobmV4dCkKLSsgICAgICAmJiBOT1RFX0tJTkQgKG5leHQpID09IE5PVEVfSU5TTl9DQUxMX0FSR19MT0NBVElPTikKLSsgICAgaW5zbiA9IG5leHQ7Ci0rCi0rICByZXR1cm4gZW1pdF9ub3RlX2FmdGVyIChOT1RFX0lOU05fRUhfUkVHSU9OX0VORCwgaW5zbik7Ci0rfQotKwotIC8qIFR1cm4gUkVHX0VIX1JFR0lPTiBub3RlcyBiYWNrIGludG8gTk9URV9JTlNOX0VIX1JFR0lPTiBub3Rlcy4KLSAgICBUaGUgbmV3IG5vdGUgbnVtYmVycyB3aWxsIG5vdCByZWZlciB0byByZWdpb24gbnVtYmVycywgYnV0Ci0gICAgaW5zdGVhZCB0byBjYWxsIHNpdGUgZW50cmllcy4gICovCi1AQCAtMjU0NCw4ICsyNTU4LDggQEAgY29udmVydF90b19laF9yZWdpb25fcmFuZ2VzICh2b2lkKQotIAkJbm90ZSA9IGVtaXRfbm90ZV9iZWZvcmUgKE5PVEVfSU5TTl9FSF9SRUdJT05fQkVHLAotIAkJCQkJIGZpcnN0X25vX2FjdGlvbl9pbnNuX2JlZm9yZV9zd2l0Y2gpOwotIAkJTk9URV9FSF9IQU5ETEVSIChub3RlKSA9IGNhbGxfc2l0ZTsKLS0JCW5vdGUgPSBlbWl0X25vdGVfYWZ0ZXIgKE5PVEVfSU5TTl9FSF9SRUdJT05fRU5ELAotLQkJCQkJbGFzdF9ub19hY3Rpb25faW5zbl9iZWZvcmVfc3dpdGNoKTsKLSsJCW5vdGUKLSsJCSAgPSBlbWl0X25vdGVfZWhfcmVnaW9uX2VuZCAobGFzdF9ub19hY3Rpb25faW5zbl9iZWZvcmVfc3dpdGNoKTsKLSAJCU5PVEVfRUhfSEFORExFUiAobm90ZSkgPSBjYWxsX3NpdGU7Ci0gCQlnY2NfYXNzZXJ0IChsYXN0X2FjdGlvbiAhPSAtMwotIAkJCSAgICB8fCAobGFzdF9hY3Rpb25faW5zbgotQEAgLTI1NjksOCArMjU4Myw3IEBAIGNvbnZlcnRfdG9fZWhfcmVnaW9uX3JhbmdlcyAodm9pZCkKLSAJCSAgICBmaXJzdF9ub19hY3Rpb25faW5zbiA9IE5VTExfUlRYOwotIAkJICB9Ci0gCi0tCQlub3RlID0gZW1pdF9ub3RlX2FmdGVyIChOT1RFX0lOU05fRUhfUkVHSU9OX0VORCwKLS0JCQkJCWxhc3RfYWN0aW9uX2luc24pOwotKwkJbm90ZSA9IGVtaXRfbm90ZV9laF9yZWdpb25fZW5kIChsYXN0X2FjdGlvbl9pbnNuKTsKLSAJCU5PVEVfRUhfSEFORExFUiAobm90ZSkgPSBjYWxsX3NpdGU7Ci0gCSAgICAgIH0KLSAKLUBAIC0yNjE3LDcgKzI2MzAsNyBAQCBjb252ZXJ0X3RvX2VoX3JlZ2lvbl9yYW5nZXMgKHZvaWQpCi0gCi0gICBpZiAobGFzdF9hY3Rpb24gPj0gLTEgJiYgISBmaXJzdF9ub19hY3Rpb25faW5zbikKLSAgICAgewotLSAgICAgIG5vdGUgPSBlbWl0X25vdGVfYWZ0ZXIgKE5PVEVfSU5TTl9FSF9SRUdJT05fRU5ELCBsYXN0X2FjdGlvbl9pbnNuKTsKLSsgICAgICBub3RlID0gZW1pdF9ub3RlX2VoX3JlZ2lvbl9lbmQgKGxhc3RfYWN0aW9uX2luc24pOwotICAgICAgIE5PVEVfRUhfSEFORExFUiAobm90ZSkgPSBjYWxsX3NpdGU7Ci0gICAgIH0KLSAKLWRpZmYgLS1naXQgYS9nY2MvanVtcC5jIGIvZ2NjL2p1bXAuYwotaW5kZXggOTQxOGY2NS4uYTVlNWY1MiAxMDA2NDQKLS0tLSBhL2djYy9qdW1wLmMKLSsrKyBiL2djYy9qdW1wLmMKLUBAIC0xMjEsMTUgKzEyMSwyNiBAQCByZWJ1aWxkX2p1bXBfbGFiZWxzX2NoYWluIChydHggY2hhaW4pCi0gc3RhdGljIHVuc2lnbmVkIGludAotIGNsZWFudXBfYmFycmllcnMgKHZvaWQpCi0gewotLSAgcnR4IGluc24sIG5leHQsIHByZXY7Ci0tICBmb3IgKGluc24gPSBnZXRfaW5zbnMgKCk7IGluc247IGluc24gPSBuZXh0KQotKyAgcnR4IGluc247Ci0rICBmb3IgKGluc24gPSBnZXRfaW5zbnMgKCk7IGluc247IGluc24gPSBORVhUX0lOU04gKGluc24pKQotICAgICB7Ci0tICAgICAgbmV4dCA9IE5FWFRfSU5TTiAoaW5zbik7Ci0gICAgICAgaWYgKEJBUlJJRVJfUCAoaW5zbikpCi0gCXsKLS0JICBwcmV2ID0gcHJldl9ub25ub3RlX2luc24gKGluc24pOwotKwkgIHJ0eCBwcmV2ID0gcHJldl9ub25ub3RlX2luc24gKGluc24pOwotIAkgIGlmICghcHJldikKLSAJICAgIGNvbnRpbnVlOwotKwotKwkgIGlmIChDQUxMX1AgKHByZXYpKQotKwkgICAgewotKwkgICAgICAvKiBNYWtlIHN1cmUgd2UgZG8gbm90IHNwbGl0IGEgY2FsbCBhbmQgaXRzIGNvcnJlc3BvbmRpbmcKLSsJCSBDQUxMX0FSR19MT0NBVElPTiBub3RlLiAgKi8KLSsJICAgICAgcnR4IG5leHQgPSBORVhUX0lOU04gKHByZXYpOwotKwotKwkgICAgICBpZiAoTk9URV9QIChuZXh0KQotKwkJICAmJiBOT1RFX0tJTkQgKG5leHQpID09IE5PVEVfSU5TTl9DQUxMX0FSR19MT0NBVElPTikKLSsJCXByZXYgPSBuZXh0OwotKwkgICAgfQotKwotIAkgIGlmIChCQVJSSUVSX1AgKHByZXYpKQotIAkgICAgZGVsZXRlX2luc24gKGluc24pOwotIAkgIGVsc2UgaWYgKHByZXYgIT0gUFJFVl9JTlNOIChpbnNuKSkKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNTktZ2NjLVBSLXJ0bC1vcHRpbWl6YXRpb24tNjMzNDgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNTktZ2NjLVBSLXJ0bC1vcHRpbWl6YXRpb24tNjMzNDgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlODI3Y2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDU5LWdjYy1QUi1ydGwtb3B0aW1pemF0aW9uLTYzMzQ4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotRnJvbSA2ZWFlM2U2MzdmY2MyMmQyMWI1MWQ0NGQ2MWUzYTljYjQ4MjVlNzc2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMzAgT2N0IDIwMTQgMjA6Mzc6MTQgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF1QUiBydGwtb3B0aW1pemF0aW9uLzYzMzQ4Ci0gCi1QUiBydGwtb3B0aW1pemF0aW9uLzYzMzQ4Ci0qIGVtaXQtcnRsLmMgKHRyeV9zcGxpdCk6IERvIG5vdCBlbWl0IGV4dHJhIGJhcnJpZXIuCi0KLU5vdGU6IHRoaXMgcGF0Y2ggaXMgdG8gZml4IHRoZSBzaWRlIGVmZmVjdCBpbnRyb2R1Y2VkIGJ5IHIyMTIxNzEgd2hpY2ggd2FzIHJlcG9ydGVkIGF0OgotaHR0cHM6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NjMzNDgKLQotZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2djYy5nbnUub3JnL3N2bi9nY2MvdHJ1bmtAMjE1NjEzIDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhNAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2djYy5nbnUub3JnL3ZpZXdjdnMvZ2NjP3ZpZXc9cmV2aXNpb24mcmV2aXNpb249MjE1NjEzXQotU2lnbmVkLW9mZi1ieTogQmFvc2hhbiBQYW5nIDxiYW9zaGFuLnBhbmdAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBnY2MvZW1pdC1ydGwuYyB8ICAgMTEgLS0tLS0tLS0tLS0KLSAxIGZpbGVzIGNoYW5nZWQsIDAgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvZW1pdC1ydGwuYyBiL2djYy9lbWl0LXJ0bC5jCi1pbmRleCA0NzM2ZjhkLi5hZTY5ZGJkIDEwMDY0NAotLS0tIGEvZ2NjL2VtaXQtcnRsLmMKLSsrKyBiL2djYy9lbWl0LXJ0bC5jCi1AQCAtMzQyMiw3ICszNDIyLDYgQEAgdHJ5X3NwbGl0IChydHggcGF0LCBydHggdHJpYWwsIGludCBsYXN0KQotIHsKLSAgIHJ0eCBiZWZvcmUgPSBQUkVWX0lOU04gKHRyaWFsKTsKLSAgIHJ0eCBhZnRlciA9IE5FWFRfSU5TTiAodHJpYWwpOwotLSAgaW50IGhhc19iYXJyaWVyID0gMDsKLSAgIHJ0eCBub3RlLCBzZXEsIHRlbTsKLSAgIGludCBwcm9iYWJpbGl0eTsKLSAgIHJ0eCBpbnNuX2xhc3QsIGluc247Ci1AQCAtMzQ0MSwxNCArMzQ0MCw2IEBAIHRyeV9zcGxpdCAocnR4IHBhdCwgcnR4IHRyaWFsLCBpbnQgbGFzdCkKLSAKLSAgIHNwbGl0X2JyYW5jaF9wcm9iYWJpbGl0eSA9IC0xOwotIAotLSAgLyogSWYgd2UgYXJlIHNwbGl0dGluZyBhIEpVTVBfSU5TTiwgaXQgbWlnaHQgYmUgZm9sbG93ZWQgYnkgYSBCQVJSSUVSLgotLSAgICAgV2UgbWF5IG5lZWQgdG8gaGFuZGxlIHRoaXMgc3BlY2lhbGx5LiAgKi8KLS0gIGlmIChhZnRlciAmJiBCQVJSSUVSX1AgKGFmdGVyKSkKLS0gICAgewotLSAgICAgIGhhc19iYXJyaWVyID0gMTsKLS0gICAgICBhZnRlciA9IE5FWFRfSU5TTiAoYWZ0ZXIpOwotLSAgICB9Ci0tCi0gICBpZiAoIXNlcSkKLSAgICAgcmV0dXJuIHRyaWFsOwotIAotQEAgLTM1OTQsOCArMzU4NSw2IEBAIHRyeV9zcGxpdCAocnR4IHBhdCwgcnR4IHRyaWFsLCBpbnQgbGFzdCkKLSAgIHRlbSA9IGVtaXRfaW5zbl9hZnRlcl9zZXRsb2MgKHNlcSwgdHJpYWwsIElOU05fTE9DQVRJT04gKHRyaWFsKSk7Ci0gCi0gICBkZWxldGVfaW5zbiAodHJpYWwpOwotLSAgaWYgKGhhc19iYXJyaWVyKQotLSAgICBlbWl0X2JhcnJpZXJfYWZ0ZXIgKHRlbSk7Ci0gCi0gICAvKiBSZWN1cnNpdmVseSBjYWxsIHRyeV9zcGxpdCBmb3IgZWFjaCBuZXcgaW5zbiBjcmVhdGVkOyBieSB0aGUKLSAgICAgIHRpbWUgY29udHJvbCByZXR1cm5zIGhlcmUgdGhhdCBpbnNuIHdpbGwgYmUgZnVsbHkgc3BsaXQsIHNvCi0tLSAKLTEuNy4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDA2MC1Pbmx5LWFsbG93LWU1MDAtZG91YmxlLWluLVNQRV9TSU1EX1JFR05PX1AtcmVnaXN0ZXJzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDYwLU9ubHktYWxsb3ctZTUwMC1kb3VibGUtaW4tU1BFX1NJTURfUkVHTk9fUC1yZWdpc3RlcnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1YTlmZGQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDYwLU9ubHktYWxsb3ctZTUwMC1kb3VibGUtaW4tU1BFX1NJTURfUkVHTk9fUC1yZWdpc3RlcnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi1Gcm9tIDVjMDA5MjA3MDI1MzExM2NmMGQ5YzQ1ZWFjYzg4NGIzZWNjMzRkODEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBqc20yOCA8anNtMjhAMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0PgotRGF0ZTogU2F0LCAyNSBPY3QgMjAxNCAwMDoyMzoxNyArMDAwMAotU3ViamVjdDogW1BBVENIXSBPbmx5IGFsbG93IGU1MDAgZG91YmxlIGluIFNQRV9TSU1EX1JFR05PX1AgcmVnaXN0ZXJzLgotCi1yczYwMDBfaGFyZF9yZWdub19ucmVnc19pbnRlcm5hbCBhbGxvd3MgU1BFIHZlY3RvcnMgaW4gc2luZ2xlCi1yZWdpc3RlcnMgc2F0aXNmeWluZyBTUEVfU0lNRF9SRUdOT19QIChpLmUuIHJlZ2lzdGVyIG51bWJlcnMgMCB0bwotMzEpLiAgSG93ZXZlciwgdGhlIGNvcnJlc3BvbmRpbmcgdGVzdCBmb3IgZTUwMCBkb3VibGUgdHJlYXRzIGFsbAotcmVnaXN0ZXJzIGFzIGJlaW5nIGFibGUgdG8gc3RvcmUgYSA2NC1iaXQgdmFsdWUsIHJhdGhlciB0aGFuIGp1c3QKLXRob3NlIEdQUnMuCi0KLUxvZ2ljYWxseSB0aGlzIGluY29uc2lzdGVuY3kgaXMgd3Jvbmc7IGluIGFkZGl0aW9uLCBpdCBjYXVzZXMgcHJvYmxlbXMKLXVud2luZGluZyBmcm9tIHNpZ25hbCBoYW5kbGVycy4gIGxpbnV4LXVud2luZC5oIHVzZXMKLUFSR19QT0lOVEVSX1JFR05VTSBhcyBhIHBsYWNlIHRvIHN0b3JlIHRoZSByZXR1cm4gYWRkcmVzcyBmcm9tIGEKLXNpZ25hbCBoYW5kbGVyLCBidXQgdGhpcyBsb2dpYyBpbiByczYwMDBfaGFyZF9yZWdub19ucmVnc19pbnRlcm5hbAotcmVzdWx0cyBpbiB0aGF0IGJlaW5nIGNvbnNpZGVyZWQgYW4gOC1ieXRlIHJlZ2lzdGVyLCByZXN1bHRpbmcgaW4KLWFzc2VydGlvbiBmYWlsdXJlcy4KLSg8aHR0cHM6Ly9nY2MuZ251Lm9yZy9tbC9nY2MtcGF0Y2hlcy8yMDE0LTA5L21zZzAyNjI1Lmh0bWw+IGZpcnN0Ci1uZWVkcyB0byBiZSBhcHBsaWVkIGZvciB1bndpbmRpbmcgdG8gd29yayBpbiBnZW5lcmFsIG9uIGU1MDAuKSAgVGhpcwotcGF0Y2ggbWFrZXMgcnM2MDAwX2hhcmRfcmVnbm9fbnJlZ3NfaW50ZXJuYWwgaGFuZGxlIHRoZSBlNTAwIGRvdWJsZQotY2FzZSBjb25zaXN0ZW50bHkgd2l0aCBTUEUgdmVjdG9ycy4KLQotVGVzdGVkIHdpdGggbm8gcmVncmVzc2lvbnMgd2l0aCBjcm9zcyB0byBwb3dlcnBjLWxpbnV4LWdudXNwZSAoZ2l2ZW4KLXRoZSBhZm9yZW1lbnRpb25lZCBwYXRjaCBhcHBsaWVkKS4gIEZhaWx1cmVzIG9mIHNpZ25hbCBoYW5kbGluZwotdW53aW5kaW5nIHRlc3RzIHN1Y2ggYXMgZ2NjLmRnL2NsZWFudXAtezgsOSwxMCwxMX0uYyBhcmUgZml4ZWQgYnkgdGhpcwotcGF0Y2guCi0KLQkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9oYXJkX3JlZ25vX25yZWdzX2ludGVybmFsKTogRG8KLQlub3QgYWxsb3cgZTUwMCBkb3VibGUgaW4gcmVnaXN0ZXJzIG5vdCBzYXRpc3lmaW5nCi0JU1BFX1NJTURfUkVHTk9fUC4KLQotCi1naXQtc3ZuLWlkOiBzdm4rc3NoOi8vZ2NjLmdudS5vcmcvc3ZuL2djYy90cnVua0AyMTY2ODggMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtnY2MgNS4wXQotCi0tLS0KLSBnY2MvQ2hhbmdlTG9nICAgICAgICAgICAgICB8IDYgKysrKysrCi0gZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLmMgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IGdjYy00LjkuMi9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy00LjkuMi5vcmlnL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5jCi0rKysgZ2NjLTQuOS4yL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5jCi1AQCAtMTcwMyw3ICsxNzAzLDcgQEAgcnM2MDAwX2hhcmRfcmVnbm9fbnJlZ3NfaW50ZXJuYWwgKGludCByZQotICAgICAgU0Ntb2RlIHNvIGFzIHRvIHBhc3MgdGhlIHZhbHVlIGNvcnJlY3RseSBpbiBhIHBhaXIgb2YKLSAgICAgIHJlZ2lzdGVycy4gICovCi0gICBlbHNlIGlmIChUQVJHRVRfRTUwMF9ET1VCTEUgJiYgRkxPQVRfTU9ERV9QIChtb2RlKSAmJiBtb2RlICE9IFNDbW9kZQotLQkgICAmJiAhREVDSU1BTF9GTE9BVF9NT0RFX1AgKG1vZGUpKQotKwkgICAmJiAhREVDSU1BTF9GTE9BVF9NT0RFX1AgKG1vZGUpICYmIFNQRV9TSU1EX1JFR05PX1AgKHJlZ25vKSkKLSAgICAgcmVnX3NpemUgPSBVTklUU19QRVJfRlBfV09SRDsKLSAKLSAgIGVsc2UKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDA2MS10YXJnZXQtZ2NjLWluY2x1ZGVkaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNjEtdGFyZ2V0LWdjYy1pbmNsdWRlZGlyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDhjNjZkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDA2MS10YXJnZXQtZ2NjLWluY2x1ZGVkaXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi1FbnN1cmUgdGFyZ2V0IGdjYyBoZWFkZXJzIGNhbiBiZSBpbmNsdWRlZAotCi1UaGVyZSBhcmUgYSBmZXcgaGVhZGVycyBpbnN0YWxsZWQgYXMgcGFydCBvZiB0aGUgT3BlbkVtYmVkZGVkCi1nY2MtcnVudGltZSB0YXJnZXQgKG9tcC5oLCBzc3AvKi5oKS4gQmVpbmcgaW5zdGFsbGVkIGZyb20gYSByZWNpcGUKLWJ1aWx0IGZvciB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSwgdGhlc2UgYXJlIHdpdGhpbiB0aGUgdGFyZ2V0Ci1zeXNyb290IGFuZCBub3QgY3Jvc3MvbmF0aXZlc2RrOyB0aHVzIHRoZXkgd2VyZW4ndCBhYmxlIHRvIGJlCi1mb3VuZCBieSBnY2Mgd2l0aCB0aGUgZXhpc3Rpbmcgc2VhcmNoIHBhdGhzLiBBZGQgc3VwcG9ydCBmb3IKLXBpY2tpbmcgdXAgdGhlc2UgaGVhZGVycyB1bmRlciB0aGUgc3lzcm9vdCBzdXBwbGllZCBvbiB0aGUgZ2NjCi1jb21tYW5kIGxpbmUgaW4gb3JkZXIgdG8gcmVzb2x2ZSB0aGlzLgotCi1TaWduZWQtb2ZmLWJ5OiBQYXVsIEVnZ2xldG9uIDxwYXVsLmVnZ2xldG9uQGxpbnV4LmludGVsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLS0tLSBhL2djYy9NYWtlZmlsZS5pbgkyMDE0LTEyLTIzIDExOjU3OjMzLjMyNzg3MzMzMSArMDAwMAotKysrIGIvZ2NjL01ha2VmaWxlLmluCTIwMTUtMDEtMjEgMTE6MzI6MzUuNDQ3MzA1Mzk0ICswMDAwCi1AQCAtNTg3LDYgKzU4Nyw3IEBACi0gCi0gIyBEaXJlY3RvcnkgaW4gd2hpY2ggdGhlIGNvbXBpbGVyIGZpbmRzIGxpYnJhcmllcyBldGMuCi0gbGlic3ViZGlyID0gJChsaWJkaXIpL2djYy8kKHRhcmdldF9ub25jYW5vbmljYWwpLyQodmVyc2lvbikKLStsaWJzdWJkaXJfdGFyZ2V0ID0gZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJCh2ZXJzaW9uKQotICMgRGlyZWN0b3J5IGluIHdoaWNoIHRoZSBjb21waWxlciBmaW5kcyBleGVjdXRhYmxlcwotIGxpYmV4ZWNzdWJkaXIgPSAkKGxpYmV4ZWNkaXIpL2djYy8kKHRhcmdldF9ub25jYW5vbmljYWwpLyQodmVyc2lvbikKLSAjIERpcmVjdG9yeSBpbiB3aGljaCBhbGwgcGx1Z2luIHJlc291cmNlcyBhcmUgaW5zdGFsbGVkCi1AQCAtMjUzNCw2ICsyNTM1LDcgQEAKLSAKLSBQUkVQUk9DRVNTT1JfREVGSU5FUyA9IFwKLSAgIC1ER0NDX0lOQ0xVREVfRElSPVwiJChsaWJzdWJkaXIpL2luY2x1ZGVcIiBcCi0rICAtREdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQ9XCIkKGxpYnN1YmRpcl90YXJnZXQpL2luY2x1ZGVcIiBcCi0gICAtREZJWEVEX0lOQ0xVREVfRElSPVwiJChsaWJzdWJkaXIpL2luY2x1ZGUtZml4ZWRcIiBcCi0gICAtREdQTFVTUExVU19JTkNMVURFX0RJUj1cIiQoZ2NjX2d4eF9pbmNsdWRlX2RpcilcIiBcCi0gICAtREdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVD0kKGdjY19neHhfaW5jbHVkZV9kaXJfYWRkX3N5c3Jvb3QpIFwKLS0tLSBhL2djYy9jcHBkZWZhdWx0LmMJMjAxNS0wMS0xMyAxNzo0MDoyNi4xMzEwMTI3MjUgKzAwMDAKLSsrKyBiL2djYy9jcHBkZWZhdWx0LmMJMjAxNS0wMS0yMSAxMTozMDowOC45Mjg0MjY0OTIgKzAwMDAKLUBAIC01OSw2ICs1OSwxMCBAQAotICAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGdjYydzIHByaXZhdGUgaGVhZGVycy4gICovCi0gICAgIHsgR0NDX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAotICNlbmRpZgotKyNpZmRlZiBHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VUCi0rICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZ2NjJ3MgcHJpdmF0ZSBoZWFkZXJzIHVuZGVyIHRoZSBzcGVjaWZpZWQgc3lzcm9vdC4gICovCi0rICAgIHsgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQsICJHQ0MiLCAwLCAwLCAxLCAwIH0sCi0rI2VuZGlmCi0gI2lmZGVmIExPQ0FMX0lOQ0xVREVfRElSCi0gICAgIC8qIC91c3IvbG9jYWwvaW5jbHVkZSBjb21lcyBiZWZvcmUgdGhlIGZpeGluY2x1ZGVkIGhlYWRlciBmaWxlcy4gICovCi0gICAgIHsgTE9DQUxfSU5DTFVERV9ESVIsIDAsIDAsIDEsIDEsIDIgfSwKLWRpZmYgLS1naXQgYS9nY2MvZGVmYXVsdHMuaCBiL2djYy9kZWZhdWx0cy5oCi1pbmRleCBmOTRhZTE3Li5kOThiNDBiIDEwMDY0NAotLS0tIGEvZ2NjL2RlZmF1bHRzLmgKLSsrKyBiL2djYy9kZWZhdWx0cy5oCi1AQCAtMTM5MCw0ICsxMzkwLDEzIEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQotIAotICNlbmRpZiAvKiBHQ0NfSU5TTl9GTEFHU19IICAqLwotIAotKy8qIERlZmF1bHQgcHJlZml4ZXMgdG8gYXR0YWNoIHRvIGNvbW1hbmQgbmFtZXMuICAqLwotKwotKyNpZm5kZWYgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8xCi0rI2RlZmluZSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzEgIi9saWIvIgotKyNlbmRpZgotKyNpZm5kZWYgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yCi0rI2RlZmluZSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgIi91c3IvbGliLyIKLSsjZW5kaWYKLSsKLSAjZW5kaWYgIC8qICEgR0NDX0RFRkFVTFRTX0ggKi8KLWRpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKLWluZGV4IDlmMGI3ODEuLjE3NGZjYTggMTAwNjQ0Ci0tLS0gYS9nY2MvZ2NjLmMKLSsrKyBiL2djYy9nY2MuYwotQEAgLTExODksMTMgKzExODksNiBAQCBzdGF0aWMgY29uc3QgY2hhciAqZ2NjX2xpYmV4ZWNfcHJlZml4OwotIAotIC8qIERlZmF1bHQgcHJlZml4ZXMgdG8gYXR0YWNoIHRvIGNvbW1hbmQgbmFtZXMuICAqLwotIAotLSNpZm5kZWYgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8xCi0tI2RlZmluZSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzEgIi9saWIvIgotLSNlbmRpZgotLSNpZm5kZWYgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yCi0tI2RlZmluZSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgIi91c3IvbGliLyIKLS0jZW5kaWYKLS0KLSAjaWZkZWYgQ1JPU1NfRElSRUNUT1JZX1NUUlVDVFVSRSAgLyogRG9uJ3QgdXNlIHRoZXNlIHByZWZpeGVzIGZvciBhIGNyb3NzIGNvbXBpbGVyLiAgKi8KLSAjdW5kZWYgTURfRVhFQ19QUkVGSVgKLSAjdW5kZWYgTURfU1RBUlRGSUxFX1BSRUZJWApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDYyLVVzZS1TWVNURU1MSUJTX0RJUi1yZXBsYWNlbWVudC1pbnN0ZWFkLW9mLWhhcmRjb2RpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNjItVXNlLVNZU1RFTUxJQlNfRElSLXJlcGxhY2VtZW50LWluc3RlYWQtb2YtaGFyZGNvZGluZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ4YmQ0OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNjItVXNlLVNZU1RFTUxJQlNfRElSLXJlcGxhY2VtZW50LWluc3RlYWQtb2YtaGFyZGNvZGluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLUZyb20gODYxYmNmZDRhZTgxNGYzNTFlMGM2NjhlZTI2ZDAxZDEzMzFlMDQyMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDI4IEFwciAyMDE1IDIzOjE1OjI3IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMzYvMzddIFVzZSBTWVNURU1MSUJTX0RJUiByZXBsYWNlbWVudCBpbnN0ZWFkIG9mIGhhcmRjb2RpbmcKLSBiYXNlX2xpYmRpcgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IGdjYy00LjkuMi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2NjLTQuOS4yLm9yaWcvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAotKysrIGdjYy00LjkuMi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCi1AQCAtMjEsNyArMjEsNyBAQAotICNpZm5kZWYgR0NDX0FBUkNINjRfTElOVVhfSAotICNkZWZpbmUgR0NDX0FBUkNINjRfTElOVVhfSAotIAotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXgtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfS5zby4xIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LWFhcmNoNjQle21iaWctZW5kaWFuOl9iZX0uc28uMSIKLSAKLSAjZGVmaW5lIENQUF9TUEVDICIle3B0aHJlYWQ6LURfUkVFTlRSQU5UfSIKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDA2My1uYXRpdmVzZGstZ2NjLXN1cHBvcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNjMtbmF0aXZlc2RrLWdjYy1zdXBwb3J0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOWVmYTQ1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDA2My1uYXRpdmVzZGstZ2NjLXN1cHBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOTggKzAsMCBAQAotQmVpbmcgYWJsZSB0byBidWlsZCBhIG5hdGl2ZXNkayBnY2MgaXMgdXNlZnVsLCBwYXJ0aWN1bGFybHkgaW4gY2FzZXMKLXdoZXJlIHRoZSBob3N0IGNvbXBpbGVyIG1heSBiZSBvZiBhbiBpbmNvbXBhdGlibGUgdmVyc2lvbiAob3IgYSAzMgotYml0IGNvbXBpbGVyIGlzIG5lZWRlZCkuCi0KLVNhZGx5LCBidWlsZGluZyBuYXRpdmVzZGstZ2NjIGlzIG5vdCBzdHJhaWdodCBmb3J3YXJkLiBXZSBpbnN0YWxsCi1uYXRpdmVzZGstZ2NjIGludG8gYSByZWxvY2F0YWJsZSBsb2NhdGlvbiBhbmQgdGhpcyBtZWFucyB0aGF0IGl0cwotbGlicmFyeSBsb2NhdGlvbnMgY2FuIGNoYW5nZS4gIk5vcm1hbCIgc3lzcm9vdCBzdXBwb3J0IGRvZXNuJ3QgaGVscAotaW4gdGhpcyBjYXNlIHNpbmNlIHRoZSB2YWx1ZXMgb2YgcGF0aHMgbGlrZSAibGliZGlyIiBjaGFuZ2UsIG5vdCBqdXN0Ci1iYXNlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBzeXN0ZW0uCi0KLUluIG9yZGVyIHRvIGhhbmRsZSB0aGlzIHdlIGRvIHR3byB0aGluZ3M6Ci0KLWEpIEFkZCAlciBpbnRvIHNwZWMgZmlsZSBtYXJrdXAgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIGluamVjdGVkIHBhdGhzCi0gICBzdWNoIGFzIFNZU1RFTUxJQlNfRElSIChzZWUgZ2NjX211bHRpbGliX3NldHVwKCkpLgotYikgQWRkIG90aGVyIHBhdGhzIHdoaWNoIG5lZWQgcmVsb2NhdGlvbiBpbnRvIGEgLmdjY3JlbG9jcHJlZml4IHNlY3Rpb24KLSAgIHdoaWNoIHRoZSByZWxvY2F0aW9uIGNvZGUgd2lsbCBub3RpY2UgYW5kIGFkanVzdCBhdXRvbWF0aWNhbGx5LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLVJQIDIwMTUvNy8yOAotZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYwotaW5kZXggNWZkM2QwYS4uMmRlMjlhYSAxMDA2NDQKLS0tLSBhL2djYy9nY2MuYwotKysrIGIvZ2NjL2djYy5jCi1AQCAtMTIwLDYgKzEyMCw4IEBAIHN0YXRpYyBjb25zdCBjaGFyICp0YXJnZXRfc3lzdGVtX3Jvb3QgPSBUQVJHRVRfU1lTVEVNX1JPT1Q7Ci0gI2Vsc2UKLSBzdGF0aWMgY29uc3QgY2hhciAqdGFyZ2V0X3N5c3RlbV9yb290ID0gMDsKLSAjZW5kaWYKLSsgCi0rc3RhdGljIGNoYXIgdGFyZ2V0X3JlbG9jYXRhYmxlX3ByZWZpeFs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTWVNURU1MSUJTX0RJUjsKLSAKLSAvKiBOb256ZXJvIG1lYW5zIHBhc3MgdGhlIHVwZGF0ZWQgdGFyZ2V0X3N5c3RlbV9yb290IHRvIHRoZSBjb21waWxlci4gICovCi0gCi1AQCAtMzg0LDYgKzM4Niw3IEBAIG9yIHdpdGggY29uc3RhbnQgdGV4dCBpbiBhIHNpbmdsZSBhcmd1bWVudC4KLSAgJUcgICAgIHByb2Nlc3MgTElCR0NDX1NQRUMgYXMgYSBzcGVjLgotICAlUiAgICAgT3V0cHV0IHRoZSBjb25jYXRlbmF0aW9uIG9mIHRhcmdldF9zeXN0ZW1fcm9vdCBhbmQKLSAgICAgICAgIHRhcmdldF9zeXNyb290X3N1ZmZpeC4KLSsgJXIgICAgIE91dHB1dCB0aGUgYmFzZSBwYXRoIHRhcmdldF9yZWxvY2F0YWJsZV9wcmVmaXgKLSAgJVMgICAgIHByb2Nlc3MgU1RBUlRGSUxFX1NQRUMgYXMgYSBzcGVjLiAgQSBjYXBpdGFsIFMgaXMgYWN0dWFsbHkgdXNlZCBoZXJlLgotICAlRSAgICAgcHJvY2VzcyBFTkRGSUxFX1NQRUMgYXMgYSBzcGVjLiAgQSBjYXBpdGFsIEUgaXMgYWN0dWFsbHkgdXNlZCBoZXJlLgotICAlQyAgICAgcHJvY2VzcyBDUFBfU1BFQyBhcyBhIHNwZWMuCi1AQCAtMTIxOCwxMCArMTIyMSwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciAqZ2NjX2xpYmV4ZWNfcHJlZml4OwotICAgIGdjY19leGVjX3ByZWZpeCBpcyBzZXQgYmVjYXVzZSwgaW4gdGhhdCBjYXNlLCB3ZSBrbm93IHdoZXJlIHRoZQotICAgIGNvbXBpbGVyIGhhcyBiZWVuIGluc3RhbGxlZCwgYW5kIHVzZSBwYXRocyByZWxhdGl2ZSB0byB0aGF0Ci0gICAgbG9jYXRpb24gaW5zdGVhZC4gICovCi0tc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX2V4ZWNfcHJlZml4ID0gU1RBTkRBUkRfRVhFQ19QUkVGSVg7Ci0tc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX2xpYmV4ZWNfcHJlZml4ID0gU1RBTkRBUkRfTElCRVhFQ19QUkVGSVg7Ci0tc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX2JpbmRpcl9wcmVmaXggPSBTVEFOREFSRF9CSU5ESVJfUFJFRklYOwotLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4ID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWDsKLStzdGF0aWMgY2hhciBzdGFuZGFyZF9leGVjX3ByZWZpeFs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTVEFOREFSRF9FWEVDX1BSRUZJWDsKLStzdGF0aWMgY2hhciBzdGFuZGFyZF9saWJleGVjX3ByZWZpeFs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTVEFOREFSRF9MSUJFWEVDX1BSRUZJWDsKLStzdGF0aWMgY2hhciBzdGFuZGFyZF9iaW5kaXJfcHJlZml4WzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFNUQU5EQVJEX0JJTkRJUl9QUkVGSVg7Ci0rc3RhdGljIGNoYXIgKmNvbnN0IHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXggPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYOwotIAotIC8qIEZvciBuYXRpdmUgY29tcGlsZXJzLCB0aGVzZSBhcmUgd2VsbC1rbm93biBwYXRocyBjb250YWluaW5nCi0gICAgY29tcG9uZW50cyB0aGF0IG1heSBiZSBwcm92aWRlZCBieSB0aGUgc3lzdGVtLiAgRm9yIGNyb3NzCi1AQCAtMTIyOSw5ICsxMjMyLDkgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXggPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYOwotIHN0YXRpYyBjb25zdCBjaGFyICptZF9leGVjX3ByZWZpeCA9IE1EX0VYRUNfUFJFRklYOwotIHN0YXRpYyBjb25zdCBjaGFyICptZF9zdGFydGZpbGVfcHJlZml4ID0gTURfU1RBUlRGSUxFX1BSRUZJWDsKLSBzdGF0aWMgY29uc3QgY2hhciAqbWRfc3RhcnRmaWxlX3ByZWZpeF8xID0gTURfU1RBUlRGSUxFX1BSRUZJWF8xOwotLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4XzEKLStzdGF0aWMgY2hhciBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4XzFbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpCi0gICA9IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMTsKLS1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeF8yCi0rc3RhdGljIGNoYXIgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeF8yWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKQotICAgPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzI7Ci0gCi0gLyogQSByZWxhdGl2ZSBwYXRoIHRvIGJlIHVzZWQgaW4gZmluZGluZyB0aGUgbG9jYXRpb24gb2YgdG9vbHMKLUBAIC01MzA1LDYgKzUzMDgsMTEgQEAgZG9fc3BlY18xIChjb25zdCBjaGFyICpzcGVjLCBpbnQgaW5zd2l0Y2gsIGNvbnN0IGNoYXIgKnNvZnRfbWF0Y2hlZF9wYXJ0KQotIAkgICAgICB9Ci0gCSAgICBicmVhazsKLSAKLSsgICAgICAgICAgY2FzZSAncic6Ci0rICAgICAgICAgICAgICBvYnN0YWNrX2dyb3cgKCZvYnN0YWNrLCB0YXJnZXRfcmVsb2NhdGFibGVfcHJlZml4LAotKwkJICAgICAgc3RybGVuICh0YXJnZXRfcmVsb2NhdGFibGVfcHJlZml4KSk7Ci0rICAgICAgICAgICAgYnJlYWs7Ci0rCi0gCSAgY2FzZSAnUyc6Ci0gCSAgICB2YWx1ZSA9IGRvX3NwZWNfMSAoc3RhcnRmaWxlX3NwZWMsIDAsIE5VTEwpOwotIAkgICAgaWYgKHZhbHVlICE9IDApCi0KLWRpZmYgLS1naXQgYS9nY2MvY3BwZGVmYXVsdC5jIGIvZ2NjL2NwcGRlZmF1bHQuYwotaW5kZXggZGFkNjllNi4uY2Y0M2YyOCAxMDA2NDQKLS0tLSBhL2djYy9jcHBkZWZhdWx0LmMKLSsrKyBiL2djYy9jcHBkZWZhdWx0LmMKLUBAIC0zNSw2ICszNSwzMCBAQAotICMgdW5kZWYgQ1JPU1NfSU5DTFVERV9ESVIKLSAjZW5kaWYKLSAKLStzdGF0aWMgY2hhciBHUExVU1BMVVNfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gR1BMVVNQTFVTX0lOQ0xVREVfRElSOwotK3N0YXRpYyBjaGFyIEdDQ19JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBHQ0NfSU5DTFVERV9ESVI7Ci0rc3RhdGljIGNoYXIgR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVI7Ci0rc3RhdGljIGNoYXIgR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUjsKLStzdGF0aWMgY2hhciBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQ7Ci0rI2lmZGVmIExPQ0FMX0lOQ0xVREVfRElSCi0rc3RhdGljIGNoYXIgTE9DQUxfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gTE9DQUxfSU5DTFVERV9ESVI7Ci0rI2VuZGlmCi0rI2lmZGVmIFBSRUZJWF9JTkNMVURFX0RJUgotK3N0YXRpYyBjaGFyIFBSRUZJWF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBQUkVGSVhfSU5DTFVERV9ESVI7Ci0rI2VuZGlmCi0rI2lmZGVmIEZJWEVEX0lOQ0xVREVfRElSCi0rc3RhdGljIGNoYXIgRklYRURfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gRklYRURfSU5DTFVERV9ESVI7Ci0rI2VuZGlmCi0rI2lmZGVmIENST1NTX0lOQ0xVREVfRElSCi0rc3RhdGljIGNoYXIgQ1JPU1NfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gQ1JPU1NfSU5DTFVERV9ESVI7Ci0rI2VuZGlmCi0rI2lmZGVmIFRPT0xfSU5DTFVERV9ESVIKLStzdGF0aWMgY2hhciBUT09MX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFRPT0xfSU5DTFVERV9ESVI7Ci0rI2VuZGlmCi0rI2lmZGVmIE5BVElWRV9TWVNURU1fSEVBREVSX0RJUgotK3N0YXRpYyBjaGFyIE5BVElWRV9TWVNURU1fSEVBREVSX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVI7Ci0rI2VuZGlmCi0rCi0gY29uc3Qgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSBjcHBfaW5jbHVkZV9kZWZhdWx0c1tdCi0gI2lmZGVmIElOQ0xVREVfREVGQVVMVFMKLSA9IElOQ0xVREVfREVGQVVMVFM7Ci1AQCAtNDIsMzggKzY2LDM4IEBAIGNvbnN0IHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUgY3BwX2luY2x1ZGVfZGVmYXVsdHNbXQotID0gewotICNpZmRlZiBHUExVU1BMVVNfSU5DTFVERV9ESVIKLSAgICAgLyogUGljayB1cCBHTlUgQysrIGdlbmVyaWMgaW5jbHVkZSBmaWxlcy4gICovCi0tICAgIHsgR1BMVVNQTFVTX0lOQ0xVREVfRElSLCAiRysrIiwgMSwgMSwKLSsgICAgeyBHUExVU1BMVVNfSU5DTFVERV9ESVJWQVIsICJHKysiLCAxLCAxLAotICAgICAgIEdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVCwgMCB9LAotICNlbmRpZgotICNpZmRlZiBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUgotICAgICAvKiBQaWNrIHVwIEdOVSBDKysgdGFyZ2V0LWRlcGVuZGVudCBpbmNsdWRlIGZpbGVzLiAgKi8KLS0gICAgeyBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUiwgIkcrKyIsIDEsIDEsCi0rICAgIHsgR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVJWQVIsICJHKysiLCAxLCAxLAotICAgICAgIEdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVCwgMSB9LAotICNlbmRpZgotICNpZmRlZiBHUExVU1BMVVNfQkFDS1dBUkRfSU5DTFVERV9ESVIKLSAgICAgLyogUGljayB1cCBHTlUgQysrIGJhY2t3YXJkIGFuZCBkZXByZWNhdGVkIGluY2x1ZGUgZmlsZXMuICAqLwotLSAgICB7IEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUiwgIkcrKyIsIDEsIDEsCi0rICAgIHsgR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSVkFSLCAiRysrIiwgMSwgMSwKLSAgICAgICBHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1QsIDAgfSwKLSAjZW5kaWYKLSAjaWZkZWYgR0NDX0lOQ0xVREVfRElSCi0gICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZ2NjJ3MgcHJpdmF0ZSBoZWFkZXJzLiAgKi8KLS0gICAgeyBHQ0NfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCi0rICAgIHsgR0NDX0lOQ0xVREVfRElSVkFSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAotICNlbmRpZgotICNpZmRlZiBHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VUCi0gICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZ2NjJ3MgcHJpdmF0ZSBoZWFkZXJzIHVuZGVyIHRoZSBzcGVjaWZpZWQgc3lzcm9vdC4gICovCi0tICAgIHsgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQsICJHQ0MiLCAwLCAwLCAxLCAwIH0sCi0rICAgIHsgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yVkFSLCAiR0NDIiwgMCwgMCwgMSwgMCB9LAotICNlbmRpZgotICNpZmRlZiBMT0NBTF9JTkNMVURFX0RJUgotICAgICAvKiAvdXNyL2xvY2FsL2luY2x1ZGUgY29tZXMgYmVmb3JlIHRoZSBmaXhpbmNsdWRlZCBoZWFkZXIgZmlsZXMuICAqLwotLSAgICB7IExPQ0FMX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAxLCAyIH0sCi0tICAgIHsgTE9DQUxfSU5DTFVERV9ESVIsIDAsIDAsIDEsIDEsIDAgfSwKLSsgICAgeyBMT0NBTF9JTkNMVURFX0RJUlZBUiwgMCwgMCwgMSwgMSwgMiB9LAotKyAgICB7IExPQ0FMX0lOQ0xVREVfRElSVkFSLCAwLCAwLCAxLCAxLCAwIH0sCi0gI2VuZGlmCi0gI2lmZGVmIFBSRUZJWF9JTkNMVURFX0RJUgotLSAgICB7IFBSRUZJWF9JTkNMVURFX0RJUiwgMCwgMCwgMSwgMCwgMCB9LAotKyAgICB7IFBSRUZJWF9JTkNMVURFX0RJUlZBUiwgMCwgMCwgMSwgMCwgMCB9LAotICNlbmRpZgotICNpZmRlZiBGSVhFRF9JTkNMVURFX0RJUgotICAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGZpeGluY2x1ZGVzLiAgKi8KLS0gICAgeyBGSVhFRF9JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDAsIDAsCi0rICAgIHsgRklYRURfSU5DTFVERV9ESVJWQVIsICJHQ0MiLCAwLCAwLCAwLAotICAgICAgIC8qIEEgbXVsdGlsaWIgc3VmZml4IG5lZWRzIGFkZGluZyBpZiBkaWZmZXJlbnQgbXVsdGlsaWJzIHVzZQotIAkgZGlmZmVyZW50IGhlYWRlcnMuICAqLwotICNpZmRlZiBTWVNST09UX0hFQURFUlNfU1VGRklYX1NQRUMKLUBAIC04NSwxNiArMTA5LDE2IEBAIGNvbnN0IHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUgY3BwX2luY2x1ZGVfZGVmYXVsdHNbXQotICNlbmRpZgotICNpZmRlZiBDUk9TU19JTkNMVURFX0RJUgotICAgICAvKiBPbmUgcGxhY2UgdGhlIHRhcmdldCBzeXN0ZW0ncyBoZWFkZXJzIG1pZ2h0IGJlLiAgKi8KLS0gICAgeyBDUk9TU19JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDAsIDAsIDAgfSwKLSsgICAgeyBDUk9TU19JTkNMVURFX0RJUlZBUiwgIkdDQyIsIDAsIDAsIDAsIDAgfSwKLSAjZW5kaWYKLSAjaWZkZWYgVE9PTF9JTkNMVURFX0RJUgotICAgICAvKiBBbm90aGVyIHBsYWNlIHRoZSB0YXJnZXQgc3lzdGVtJ3MgaGVhZGVycyBtaWdodCBiZS4gICovCi0tICAgIHsgVE9PTF9JTkNMVURFX0RJUiwgIkJJTlVUSUxTIiwgMCwgMSwgMCwgMCB9LAotKyAgICB7IFRPT0xfSU5DTFVERV9ESVJWQVIsICJCSU5VVElMUyIsIDAsIDEsIDAsIDAgfSwKLSAjZW5kaWYKLSAjaWZkZWYgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSCi0gICAgIC8qIC91c3IvaW5jbHVkZSBjb21lcyBkZWFkIGxhc3QuICAqLwotLSAgICB7IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUiwgTkFUSVZFX1NZU1RFTV9IRUFERVJfQ09NUE9ORU5ULCAwLCAwLCAxLCAyIH0sCi0tICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSLCBOQVRJVkVfU1lTVEVNX0hFQURFUl9DT01QT05FTlQsIDAsIDAsIDEsIDAgfSwKLSsgICAgeyBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVJWQVIsIE5BVElWRV9TWVNURU1fSEVBREVSX0NPTVBPTkVOVCwgMCwgMCwgMSwgMiB9LAotKyAgICB7IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUlZBUiwgTkFUSVZFX1NZU1RFTV9IRUFERVJfQ09NUE9ORU5ULCAwLCAwLCAxLCAwIH0sCi0gI2VuZGlmCi0gICAgIHsgMCwgMCwgMCwgMCwgMCwgMCB9Ci0gICB9OwotZGlmZiAtLWdpdCBhL2djYy9jcHBkZWZhdWx0LmggYi9nY2MvY3BwZGVmYXVsdC5oCi1pbmRleCAzMGI2ZmVkLi4yZWY5NmI3IDEwMDY0NAotLS0tIGEvZ2NjL2NwcGRlZmF1bHQuaAotKysrIGIvZ2NjL2NwcGRlZmF1bHQuaAotQEAgLTMzLDcgKzMzLDggQEAKLSAKLSBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlCi0gewotLSAgY29uc3QgY2hhciAqY29uc3QgZm5hbWU7CS8qIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkuICAqLwotKyAgY29uc3QgY2hhciAqZm5hbWU7ICAgICAvKiBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5LiAgKi8KLSsKLSAgIGNvbnN0IGNoYXIgKmNvbnN0IGNvbXBvbmVudDsJLyogVGhlIGNvbXBvbmVudCBjb250YWluaW5nIHRoZSBkaXJlY3RvcnkKLSAJCQkJICAgKHNlZSB1cGRhdGVfcGF0aCBpbiBwcmVmaXguYykgKi8KLSAgIGNvbnN0IGNoYXIgY3BsdXNwbHVzOwkJLyogT25seSBsb29rIGhlcmUgaWYgd2UncmUgY29tcGlsaW5nIEMrKy4gICovCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNjQtaGFuZGxlLXRhcmdldC1zeXNyb290LW11bHRpbGliLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDY0LWhhbmRsZS10YXJnZXQtc3lzcm9vdC1tdWx0aWxpYi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTM1Njk4NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNjQtaGFuZGxlLXRhcmdldC1zeXNyb290LW11bHRpbGliLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotU2VhcmNoIHRhcmdldCBzeXNyb290IGdjYyB2ZXJzaW9uIHNwZWNpZmljIGRpcnMgd2l0aCBtdWx0aWxpYi4KLQotV2UgaW5zdGFsbCB0aGUgZ2NjIGxpYnJhcmllcyAoc3VjaCBhcyBjcnRiZWdpbi5wKSBpbnRvCi08c3lzcm9vdD48bGliZGlyPi88dGFyZ2V0LXN5cz4vNS4yLjAvCi13aGljaCBpcyBhIGRlZmF1bHQgc2VhcmNoIHBhdGggZm9yIEdDQyAoYWthIG11bHRpX3N1ZmZpeCBpbiB0aGUgCi1jb2RlIGJlbG93KS4gPHRhcmdldC1zeXM+IGlzICdtYWNoaW5lJyBpbiBnY2MncyB0ZXJtaW5vbG9neS4gV2UgdXNlCi10aGVzZSBkaXJlY3RvcmllcyBzbyB0aGF0IG11bHRpcGxlIGdjYyB2ZXJzaW9ucyBjb3VsZCBpbiB0aGVvcnkgCi1jby1leGlzdCBvbiB0YXJnZXQuCi0KLVdlIG9ubHkgd2FudCB0byBidWlsZCBvbmUgZ2NjLWNyb3NzLWNhbmFkaWFuIHBlciBhcmNoIGFuZCBoYXZlIHRoaXMgd29yayAKLWZvciBhbGwgbXVsdGlsaWJzLiA8dGFyZ2V0LXN5cz4gY2FuIGJlIGhhbmRsZWQgYnkgbWFwcGluZyB0aGUgbXVsdGlsaWIKLTx0YXJnZXQtc3lzPiB0byB0aGUgb25lIHVzZWQgYnkgZ2NjLWNyb3NzLWNhbmFkaWFuLCBlLmcuIG1pcHM2NC1wb2xrbWxsaWIzMi1saW51eCAKLWlzIHN5bWxpbmtlZCB0byBieSBtaXBzNjQtcG9reS1saW51eC4KLQotVGhlIGRlZmF1bHQgZ2NjIHNlYXJjaCBwYXRoIGluIHRoZSB0YXJnZXQgc3lzcm9vdCBmb3IgYSAibGliNjQiIG11dGxpbGliIGlzOgotCi08c3lzcm9vdD4vbGliMzIvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCi08c3lzcm9vdD4vbGliMzIvLi4vbGliNjQvCi08c3lzcm9vdD4vdXNyL2xpYjMyL21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLwotPHN5c3Jvb3Q+L3Vzci9saWIzMi8uLi9saWI2NC8KLTxzeXNyb290Pi9saWIzMi8KLTxzeXNyb290Pi91c3IvbGliMzIvCi0KLXdoaWNoIG1lYW5zIHRoYXQgdGhlIGxpYjMyIGNydGJlZ2luLm8gd2lsbCBiZSBmb3VuZCBhbmQgdGhlIGxpYjY0IG9uZXMKLXdpbGwgbm90IHdoaWNoIGxlYWRzIHRvIGNvbXBpbGVyIGZhaWx1cmVzLgotCi1UaGlzIHBhdGNoIGluamVjdHMgYSBtdWx0aWxpYiB2ZXJzaW9uIG9mIHRoYXQgcGF0aCBmaXJzdCBzbyB0aGUgbGliNjQKLWJpbmFyaWVzIGNhbiBiZSBmb3VuZCBmaXJzdC4gV2l0aCB0aGlzIGNoYW5nZSB0aGUgc2VhcmNoIHBhdGggYmVjb21lczoKLQotPHN5c3Jvb3Q+L2xpYjMyLy4uL2xpYjY0L21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLwotPHN5c3Jvb3Q+L2xpYjMyL21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLwotPHN5c3Jvb3Q+L2xpYjMyLy4uL2xpYjY0LwotPHN5c3Jvb3Q+L3Vzci9saWIzMi8uLi9saWI2NC9taXBzNjQtcG9reS1saW51eC81LjIuMC8KLTxzeXNyb290Pi91c3IvbGliMzIvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCi08c3lzcm9vdD4vdXNyL2xpYjMyLy4uL2xpYjY0LwotPHN5c3Jvb3Q+L2xpYjMyLwotPHN5c3Jvb3Q+L3Vzci9saWIzMi8KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1SUCAyMDE1LzcvMzEKLQotSW5kZXg6IGdjYy01LjIuMC9nY2MvZ2NjLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtNS4yLjAub3JpZy9nY2MvZ2NjLmMKLSsrKyBnY2MtNS4yLjAvZ2NjL2djYy5jCi1AQCAtMjMwNSw3ICsyMzA1LDcgQEAgZm9yX2VhY2hfcGF0aCAoY29uc3Qgc3RydWN0IHBhdGhfcHJlZml4Ci0gICAgICAgaWYgKHBhdGggPT0gTlVMTCkKLSAJewotIAkgIGxlbiA9IHBhdGhzLT5tYXhfbGVuICsgZXh0cmFfc3BhY2UgKyAxOwotLQkgIGxlbiArPSBNQVggKE1BWCAoc3VmZml4X2xlbiwgbXVsdGlfb3NfZGlyX2xlbiksIG11bHRpYXJjaF9sZW4pOwotKwkgIGxlbiArPSBNQVggKChzdWZmaXhfbGVuICsgbXVsdGlfb3NfZGlyX2xlbiksIG11bHRpYXJjaF9sZW4pOwotIAkgIHBhdGggPSBYTkVXVkVDIChjaGFyLCBsZW4pOwotIAl9Ci0gCi1AQCAtMjMxNyw2ICsyMzE3LDMzIEBAIGZvcl9lYWNoX3BhdGggKGNvbnN0IHN0cnVjdCBwYXRoX3ByZWZpeAotIAkgIC8qIExvb2sgZmlyc3QgaW4gTUFDSElORS9WRVJTSU9OIHN1YmRpcmVjdG9yeS4gICovCi0gCSAgaWYgKCFza2lwX211bHRpX2RpcikKLSAJICAgIHsKLSsJICAgICAgaWYgKCEocGwtPm9zX211bHRpbGliID8gc2tpcF9tdWx0aV9vc19kaXIgOiBza2lwX211bHRpX2RpcikpCi0rCSAgICAgICAgewotKwkgICAgICAgICAgY29uc3QgY2hhciAqdGhpc19tdWx0aTsKLSsJICAgICAgICAgIHNpemVfdCB0aGlzX211bHRpX2xlbjsKLSsKLSsJICAgICAgICAgIGlmIChwbC0+b3NfbXVsdGlsaWIpCi0rCQkgICAgewotKwkJICAgICAgdGhpc19tdWx0aSA9IG11bHRpX29zX2RpcjsKLSsJCSAgICAgIHRoaXNfbXVsdGlfbGVuID0gbXVsdGlfb3NfZGlyX2xlbjsKLSsJCSAgICB9Ci0rCSAgICAgICAgICBlbHNlCi0rCQkgICAgewotKwkJICAgICAgdGhpc19tdWx0aSA9IG11bHRpX2RpcjsKLSsJCSAgICAgIHRoaXNfbXVsdGlfbGVuID0gbXVsdGlfZGlyX2xlbjsKLSsJCSAgICB9Ci0rCi0rCSAgICAgICAgICAvKiBMb29rIGluIG11bHRpbGliIE1BQ0hJTkUvVkVSU0lPTiBzdWJkaXJlY3RvcnkgZmlyc3QgKi8KLSsJICAgICAgICAgIGlmICh0aGlzX211bHRpX2xlbikKLSsJICAgICAgICAgICAgewotKwkJICAgICAgbWVtY3B5IChwYXRoICsgbGVuLCB0aGlzX211bHRpLCB0aGlzX211bHRpX2xlbiArIDEpOwotKwkgICAgICAgICAgICAgIG1lbWNweSAocGF0aCArIGxlbiArIHRoaXNfbXVsdGlfbGVuLCBtdWx0aV9zdWZmaXgsIHN1ZmZpeF9sZW4gKyAxKTsKLSsJICAgICAgICAgICAgICByZXQgPSBjYWxsYmFjayAocGF0aCwgY2FsbGJhY2tfaW5mbyk7Ci0rCSAgICAgICAgICAgICAgICBpZiAocmV0KQotKwkJICAgICAgICAgIGJyZWFrOwotKwkgICAgICAgICAgICB9Ci0rCSAgICAgICAgfQotKwotIAkgICAgICBtZW1jcHkgKHBhdGggKyBsZW4sIG11bHRpX3N1ZmZpeCwgc3VmZml4X2xlbiArIDEpOwotIAkgICAgICByZXQgPSBjYWxsYmFjayAocGF0aCwgY2FsbGJhY2tfaW5mbyk7Ci0gCSAgICAgIGlmIChyZXQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNjUtZ2NjLTQ4My11bml2ZXJzYWwtaW5pdGlhbGl6ZXItbm8td2FybmluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDA2NS1nY2MtNDgzLXVuaXZlcnNhbC1pbml0aWFsaXplci1uby13YXJuaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZGUyMjdiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDA2NS1nY2MtNDgzLXVuaXZlcnNhbC1pbml0aWFsaXplci1uby13YXJuaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTA3ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLUZpeCBmb3IgaHR0cHM6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NTMxMTkKLXdyb25nIHdhcm5pbmcgd2hlbiB1c2luZyB0aGUgdW5pdmVyc2FsIHplcm8gaW5pdGlhbGl6ZXIgezB9Ci0KLUJhY2twb3J0ZWQgdG8gR0NDIDQuOC4zCi0KLVN1YmplY3Q6IDIwMTQtMDYtMDUgIFMuIEdpbGxlcyAgPHNnaWxsZXNAdGVycG1haWwudW1kLmVkdT4KLVgtR2l0LVVybDogaHR0cDovL3JlcG8ub3IuY3ovdy9vZmZpY2lhbC1nY2MuZ2l0L2NvbW1pdGRpZmZfcGxhaW4vOTVjZGYzZmRmMmQ0NDBlYjc3NzVkZWY4ZTM1YWI5NzA2NTFjMzNkOT9ocD0xNGEzMDkzZTk5NDM5MzdjYmM2M2RmYmY0ZDUxY2E2MGY4MzI1YjI5Ci1naXQtc3ZuLWlkOiBzdm4rc3NoOi8vZ2NjLmdudS5vcmcvc3ZuL2djYy90cnVua0AyMTEyODkgMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0Ci0KLS0tLSBnY2MtNC44LjMub3JnL2djYy9jL2MtdHlwZWNrLmMJMjAxNC0wOC0wMyAyMDo1MjowOS4yNTcwNDIxMzcgKzAyMDAKLSsrKyBnY2MtNC44LjMvZ2NjL2MvYy10eXBlY2suYwkyMDE0LTA4LTAzIDIwOjU3OjEwLjY0NTA0MjYxNCArMDIwMAotQEAgLTYyLDkgKzYyLDkgQEAKLSAgICBpZiBleHByLm9yaWdpbmFsX2NvZGUgPT0gU0laRU9GX0VYUFIuICAqLwotIHRyZWUgY19sYXN0X3NpemVvZl9hcmc7Ci0gCi0tLyogTm9uemVybyBpZiB3ZSd2ZSBhbHJlYWR5IHByaW50ZWQgYSAibWlzc2luZyBicmFjZXMgYXJvdW5kIGluaXRpYWxpemVyIgotLSAgIG1lc3NhZ2Ugd2l0aGluIHRoaXMgaW5pdGlhbGl6ZXIuICAqLwotLXN0YXRpYyBpbnQgbWlzc2luZ19icmFjZXNfbWVudGlvbmVkOwotKy8qIE5vbnplcm8gaWYgd2UgbWlnaHQgbmVlZCB0byBwcmludCBhICJtaXNzaW5nIGJyYWNlcyBhcm91bmQKLSsgICBpbml0aWFsaXplciIgbWVzc2FnZSB3aXRoaW4gdGhpcyBpbml0aWFsaXplci4gICovCi0rc3RhdGljIGludCBmb3VuZF9taXNzaW5nX2JyYWNlczsKLSAKLSBzdGF0aWMgaW50IHJlcXVpcmVfY29uc3RhbnRfdmFsdWU7Ci0gc3RhdGljIGludCByZXF1aXJlX2NvbnN0YW50X2VsZW1lbnRzOwotQEAgLTYzNzksNiArNjM3OSw5IEBACi0gLyogMSBpZiB0aGlzIGNvbnN0cnVjdG9yIGlzIGVycm9uZW91cyBzbyBmYXIuICAqLwotIHN0YXRpYyBpbnQgY29uc3RydWN0b3JfZXJyb25lb3VzOwotIAotKy8qIDEgaWYgdGhpcyBjb25zdHJ1Y3RvciBpcyB0aGUgdW5pdmVyc2FsIHplcm8gaW5pdGlhbGl6ZXIgeyAwIH0uICAqLwotK3N0YXRpYyBpbnQgY29uc3RydWN0b3JfemVyb2luaXQ7Ci0rCi0gLyogU3RydWN0dXJlIGZvciBtYW5hZ2luZyBwZW5kaW5nIGluaXRpYWxpemVyIGVsZW1lbnRzLCBvcmdhbml6ZWQgYXMgYW4KLSAgICBBVkwgdHJlZS4gICovCi0gCi1AQCAtNjU0MCw3ICs2NTQzLDcgQEAKLSAgIGNvbnN0cnVjdG9yX3N0YWNrID0gMDsKLSAgIGNvbnN0cnVjdG9yX3JhbmdlX3N0YWNrID0gMDsKLSAKLS0gIG1pc3NpbmdfYnJhY2VzX21lbnRpb25lZCA9IDA7Ci0rICBmb3VuZF9taXNzaW5nX2JyYWNlcyA9IDA7Ci0gCi0gICBzcGVsbGluZ19iYXNlID0gMDsKLSAgIHNwZWxsaW5nX3NpemUgPSAwOwotQEAgLTY2MzUsNiArNjYzOCw3IEBACi0gICBjb25zdHJ1Y3Rvcl90eXBlID0gdHlwZTsKLSAgIGNvbnN0cnVjdG9yX2luY3JlbWVudGFsID0gMTsKLSAgIGNvbnN0cnVjdG9yX2Rlc2lnbmF0ZWQgPSAwOwotKyAgY29uc3RydWN0b3JfemVyb2luaXQgPSAxOwotICAgZGVzaWduYXRvcl9kZXB0aCA9IDA7Ci0gICBkZXNpZ25hdG9yX2Vycm9uZW91cyA9IDA7Ci0gCi1AQCAtNjgzMiwxMSArNjgzNiw4IEBACi0gCXNldF9ub25pbmNyZW1lbnRhbF9pbml0IChicmFjZWRfaW5pdF9vYnN0YWNrKTsKLSAgICAgfQotIAotLSAgaWYgKGltcGxpY2l0ID09IDEgJiYgd2Fybl9taXNzaW5nX2JyYWNlcyAmJiAhbWlzc2luZ19icmFjZXNfbWVudGlvbmVkKQotLSAgICB7Ci0tICAgICAgbWlzc2luZ19icmFjZXNfbWVudGlvbmVkID0gMTsKLS0gICAgICB3YXJuaW5nX2luaXQgKE9QVF9XbWlzc2luZ19icmFjZXMsICJtaXNzaW5nIGJyYWNlcyBhcm91bmQgaW5pdGlhbGl6ZXIiKTsKLS0gICAgfQotKyAgaWYgKGltcGxpY2l0ID09IDEpCi0rICAgIGZvdW5kX21pc3NpbmdfYnJhY2VzID0gMTsKLSAKLSAgIGlmIChUUkVFX0NPREUgKGNvbnN0cnVjdG9yX3R5cGUpID09IFJFQ09SRF9UWVBFCi0gCSAgIHx8IFRSRUVfQ09ERSAoY29uc3RydWN0b3JfdHlwZSkgPT0gVU5JT05fVFlQRSkKLUBAIC02OTY5LDE2ICs2OTcwLDIzIEBACi0gCX0KLSAgICAgfQotIAotKyAgaWYgKHZlY19zYWZlX2xlbmd0aCAoY29uc3RydWN0b3JfZWxlbWVudHMpICE9IDEpCi0rICAgIGNvbnN0cnVjdG9yX3plcm9pbml0ID0gMDsKLSsKLSsgIC8qIFdhcm4gd2hlbiBzb21lIHN0cnVjdHMgYXJlIGluaXRpYWxpemVkIHdpdGggZGlyZWN0IGFnZ3JlZ2F0aW9uLiAgKi8KLSsgIGlmICghaW1wbGljaXQgJiYgZm91bmRfbWlzc2luZ19icmFjZXMgJiYgd2Fybl9taXNzaW5nX2JyYWNlcwotKyAgICAgICYmICFjb25zdHJ1Y3Rvcl96ZXJvaW5pdCkKLSsgICAgewotKyAgICAgIHdhcm5pbmdfaW5pdCAoT1BUX1dtaXNzaW5nX2JyYWNlcywKLSsJCSAgICAibWlzc2luZyBicmFjZXMgYXJvdW5kIGluaXRpYWxpemVyIik7Ci0rICAgIH0KLSsKLSAgIC8qIFdhcm4gd2hlbiBzb21lIHN0cnVjdCBlbGVtZW50cyBhcmUgaW1wbGljaXRseSBpbml0aWFsaXplZCB0byB6ZXJvLiAgKi8KLSAgIGlmICh3YXJuX21pc3NpbmdfZmllbGRfaW5pdGlhbGl6ZXJzCi0gICAgICAgJiYgY29uc3RydWN0b3JfdHlwZQotICAgICAgICYmIFRSRUVfQ09ERSAoY29uc3RydWN0b3JfdHlwZSkgPT0gUkVDT1JEX1RZUEUKLSAgICAgICAmJiBjb25zdHJ1Y3Rvcl91bmZpbGxlZF9maWVsZHMpCi0gICAgIHsKLS0JYm9vbCBjb25zdHJ1Y3Rvcl96ZXJvaW5pdCA9Ci0tCSAodmVjX3NhZmVfbGVuZ3RoIChjb25zdHJ1Y3Rvcl9lbGVtZW50cykgPT0gMQotLQkgICYmIGludGVnZXJfemVyb3AgKCgqY29uc3RydWN0b3JfZWxlbWVudHMpWzBdLnZhbHVlKSk7Ci0tCi0gCS8qIERvIG5vdCB3YXJuIGZvciBmbGV4aWJsZSBhcnJheSBtZW1iZXJzIG9yIHplcm8tbGVuZ3RoIGFycmF5cy4gICovCi0gCXdoaWxlIChjb25zdHJ1Y3Rvcl91bmZpbGxlZF9maWVsZHMKLSAJICAgICAgICYmICghREVDTF9TSVpFIChjb25zdHJ1Y3Rvcl91bmZpbGxlZF9maWVsZHMpCi1AQCAtODA5Myw2ICs4MTAxLDkgQEAKLSAgIGRlc2lnbmF0b3JfZGVwdGggPSAwOwotICAgZGVzaWduYXRvcl9lcnJvbmVvdXMgPSAwOwotIAotKyAgaWYgKCFpbXBsaWNpdCAmJiB2YWx1ZS52YWx1ZSAmJiAhaW50ZWdlcl96ZXJvcCAodmFsdWUudmFsdWUpKQotKyAgICBjb25zdHJ1Y3Rvcl96ZXJvaW5pdCA9IDA7Ci0rCi0gICAvKiBIYW5kbGUgc3VwZXJmbHVvdXMgYnJhY2VzIGFyb3VuZCBzdHJpbmcgY3N0IGFzIGluCi0gICAgICBjaGFyIHhbXSA9IHsiZm9vIn07ICovCi0gICBpZiAoc3RyaW5nX2ZsYWcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDA2Ni1jeHhmbGFncy1mb3ItYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNjYtY3h4ZmxhZ3MtZm9yLWJ1aWxkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTA1ZTI5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDA2Ni1jeHhmbGFncy1mb3ItYnVpbGQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotRml4IHZhcmlvdXMgX0ZPUl9CVUlMRCBhbmQgcmVsYXRlZCB2YXJpYWJsZXMKLQotV2hlbiBkb2luZyBhIEZPUl9CVUlMRCB0aGluZywgeW91IGhhdmUgdG8gb3ZlcnJpZGUgQ0ZMQUdTIHdpdGgKLUNGTEFHU19GT1JfQlVJTEQuIEFuZCBpZiB5b3UgdXNlIEMrKywgeW91IGFsc28gaGF2ZSB0byBvdmVycmlkZQotQ1hYRkxBR1Mgd2l0aCBDWFhGTEFHU19GT1JfQlVJTEQuCi1XaXRob3V0IHRoaXMsIHdoZW4gYnVpbGRpbmcgZm9yIG1pbmd3LCB5b3UgZW5kIHVwIHRyeWluZyB0byB1c2UKLXRoZSBtaW5ndyBoZWFkZXJzIGZvciBhIGhvc3QgYnVpbGQuCi0KLVRoZSBzYW1lIGdvZXMgZm9yIG90aGVyIHZhcmlhYmxlcyBhcyB3ZWxsLCBzdWNoIGFzIENQUEZMQUdTLAotQ1BQLCBhbmQgR01QSU5DLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogUGV0ZXIgU2VlYmFjaCA8cGV0ZXIuc2VlYmFjaEB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgotaW5kZXggOTM3MDE3NC4uMDExYzI5YSAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmluCi0rKysgYi9NYWtlZmlsZS5pbgotQEAgLTE1Miw2ICsxNTIsNyBAQCBCVUlMRF9FWFBPUlRTID0gXAotIAlDUFA9IiQoQ0NfRk9SX0JVSUxEKSAtRSI7IGV4cG9ydCBDUFA7IFwKLSAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENGTEFHUzsgXAotIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAotKwlDUFBGTEFHUz0iJChDUFBGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENQUEZMQUdTOyBcCi0gCUNYWD0iJChDWFhfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFg7IFwKLSAJQ1hYRkxBR1M9IiQoQ1hYRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFhGTEFHUzsgXAotIAlHQ0o9IiQoR0NKX0ZPUl9CVUlMRCkiOyBleHBvcnQgR0NKOyBcCi1AQCAtMTcwLDYgKzE3MSw5IEBAIEJVSUxEX0VYUE9SVFMgPSBcCi0gIyBidWlsdCBmb3IgdGhlIGJ1aWxkIHN5c3RlbSB0byBvdmVycmlkZSB0aG9zZSBpbiBCQVNFX0ZMQUdTX1RPX1BBU1MuCi0gRVhUUkFfQlVJTERfRkxBR1MgPSBcCi0gCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSIgXAotKwlDWFhGTEFHUz0iJChDWFhGTEFHU19GT1JfQlVJTEQpIiBcCi0rCUNQUD0iJChDQ19GT1JfQlVJTEQpIC1FIiBcCi0rCUNQUEZMQUdTPSIkKENQUEZMQUdTX0ZPUl9CVUlMRCkiIFwKLSAJTERGTEFHUz0iJChMREZMQUdTX0ZPUl9CVUlMRCkiCi0gCi0gIyBUaGlzIGlzIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIGJ1aWx0IGZvciB0aGUgaG9zdCBzeXN0ZW0uCi1AQCAtMTg3LDYgKzE5MSw3IEBAIEhPU1RfU1VCRElSID0gQGhvc3Rfc3ViZGlyQAotIEhPU1RfRVhQT1JUUyA9IFwKLSAJJChCQVNFX0VYUE9SVFMpIFwKLSAJQ0M9IiQoQ0MpIjsgZXhwb3J0IENDOyBcCi0rCUNQUD0iJChDQykgLUUiOyBleHBvcnQgQ1BQOyBcCi0gCUFEQV9DRkxBR1M9IiQoQURBX0NGTEFHUykiOyBleHBvcnQgQURBX0NGTEFHUzsgXAotIAlDRkxBR1M9IiQoQ0ZMQUdTKSI7IGV4cG9ydCBDRkxBR1M7IFwKLSAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKLUBAIC03MTEsNiArNzE1LDcgQEAgQkFTRV9GTEFHU19UT19QQVNTID0gXAotIAkiQ0NfRk9SX0JVSUxEPSQoQ0NfRk9SX0JVSUxEKSIgXAotIAkiQ0ZMQUdTX0ZPUl9CVUlMRD0kKENGTEFHU19GT1JfQlVJTEQpIiBcCi0gCSJDWFhfRk9SX0JVSUxEPSQoQ1hYX0ZPUl9CVUlMRCkiIFwKLSsJIkNYWEZMQUdTX0ZPUl9CVUlMRD0kKENYWEZMQUdTX0ZPUl9CVUlMRCkiIFwKLSAJIkVYUEVDVD0kKEVYUEVDVCkiIFwKLSAJIkZMRVg9JChGTEVYKSIgXAotIAkiSU5TVEFMTD0kKElOU1RBTEwpIiBcCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUudHBsIGIvTWFrZWZpbGUudHBsCi1pbmRleCAxZWExOTU0Li43OGE1OWMzIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUudHBsCi0rKysgYi9NYWtlZmlsZS50cGwKLUBAIC0xNTQsNiArMTU0LDcgQEAgQlVJTERfRVhQT1JUUyA9IFwKLSAJQ0M9IiQoQ0NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDQzsgXAotIAlDRkxBR1M9IiQoQ0ZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ0ZMQUdTOyBcCi0gCUNPTkZJR19TSEVMTD0iJChTSEVMTCkiOyBleHBvcnQgQ09ORklHX1NIRUxMOyBcCi0rCUNQUEZMQUdTPSIkKENQUEZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1BQRkxBR1M7IFwKLSAJQ1hYPSIkKENYWF9GT1JfQlVJTEQpIjsgZXhwb3J0IENYWDsgXAotIAlDWFhGTEFHUz0iJChDWFhGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENYWEZMQUdTOyBcCi0gCUdDSj0iJChHQ0pfRk9SX0JVSUxEKSI7IGV4cG9ydCBHQ0o7IFwKLUBAIC0xNzIsNiArMTczLDkgQEAgQlVJTERfRVhQT1JUUyA9IFwKLSAjIGJ1aWx0IGZvciB0aGUgYnVpbGQgc3lzdGVtIHRvIG92ZXJyaWRlIHRob3NlIGluIEJBU0VfRkxBR1NfVE9fUEFTUy4KLSBFWFRSQV9CVUlMRF9GTEFHUyA9IFwKLSAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIiBcCi0rCUNYWEZMQUdTPSIkKENYWEZMQUdTX0ZPUl9CVUlMRCkiIFwKLSsJQ1BQPSIkKENDX0ZPUl9CVUlMRCkgLUUiIFwKLSsJQ1BQRkxBR1M9IiQoQ1BQRkxBR1NfRk9SX0JVSUxEKSIgXAotIAlMREZMQUdTPSIkKExERkxBR1NfRk9SX0JVSUxEKSIKLSAKLSAjIFRoaXMgaXMgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdG8gYnVpbHQgZm9yIHRoZSBob3N0IHN5c3RlbS4KLUBAIC0xODksNiArMTkzLDcgQEAgSE9TVF9TVUJESVIgPSBAaG9zdF9zdWJkaXJACi0gSE9TVF9FWFBPUlRTID0gXAotIAkkKEJBU0VfRVhQT1JUUykgXAotIAlDQz0iJChDQykiOyBleHBvcnQgQ0M7IFwKLSsJQ1BQPSIkKENDKSAtRSI7IGV4cG9ydCBDUFA7IFwKLSAJQURBX0NGTEFHUz0iJChBREFfQ0ZMQUdTKSI7IGV4cG9ydCBBREFfQ0ZMQUdTOyBcCi0gCUNGTEFHUz0iJChDRkxBR1MpIjsgZXhwb3J0IENGTEFHUzsgXAotIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAotZGlmZiAtLWdpdCBhL2djYy9NYWtlZmlsZS5pbiBiL2djYy9NYWtlZmlsZS5pbgotaW5kZXggY2Q1YmM0YS4uOThhZTRmNCAxMDA2NDQKLS0tLSBhL2djYy9NYWtlZmlsZS5pbgotKysrIGIvZ2NjL01ha2VmaWxlLmluCi1AQCAtNzYyLDcgKzc2Miw3IEBAIEJVSUxEX0xJTktFUkZMQUdTID0gJChCVUlMRF9DWFhGTEFHUykKLSAjIE5hdGl2ZSBsaW5rZXIgYW5kIHByZXByb2Nlc3NvciBmbGFncy4gIEZvciB4LWZyYWdtZW50IG92ZXJyaWRlcy4KLSBCVUlMRF9MREZMQUdTPUBCVUlMRF9MREZMQUdTQAotIEJVSUxEX0NQUEZMQUdTPSAtSS4gLUkkKEBEKSAtSSQoc3JjZGlyKSAtSSQoc3JjZGlyKS8kKEBEKSBcCi0tCQktSSQoc3JjZGlyKS8uLi9pbmNsdWRlIEBJTkNJTlRMQCAkKENQUElOQykgJChDUFBGTEFHUykKLSsJCS1JJChzcmNkaXIpLy4uL2luY2x1ZGUgQElOQ0lOVExAICQoQ1BQSU5DKSAkKENQUEZMQUdTX0ZPUl9CVUlMRCkKLSAKLSAjIEFjdHVhbCBuYW1lIHRvIHVzZSB3aGVuIGluc3RhbGxpbmcgYSBuYXRpdmUgY29tcGlsZXIuCi0gR0NDX0lOU1RBTExfTkFNRSA6PSAkKHNoZWxsIGVjaG8gZ2NjfHNlZCAnJChwcm9ncmFtX3RyYW5zZm9ybV9uYW1lKScpCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKLWluZGV4IGM3YWMxNGIuLjVhYzYzZTQgMTAwNzU1Ci0tLS0gYS9nY2MvY29uZmlndXJlCi0rKysgYi9nY2MvY29uZmlndXJlCi1AQCAtMTE1MjEsNyArMTE1MjEsNyBAQCBlbHNlCi0gCUNDPSIke0NDX0ZPUl9CVUlMRH0iIENGTEFHUz0iJHtDRkxBR1NfRk9SX0JVSUxEfSIgXAotIAlDWFg9IiR7Q1hYX0ZPUl9CVUlMRH0iIENYWEZMQUdTPSIke0NYWEZMQUdTX0ZPUl9CVUlMRH0iIFwKLSAJTEQ9IiR7TERfRk9SX0JVSUxEfSIgTERGTEFHUz0iJHtMREZMQUdTX0ZPUl9CVUlMRH0iIFwKLS0JR01QSU5DPSIiIENQUEZMQUdTPSIke0NQUEZMQUdTfSAtREdFTkVSQVRPUl9GSUxFIiBcCi0rCUdNUElOQz0iIiBDUFBGTEFHUz0iJHtDUFBGTEFHU19GT1JfQlVJTER9IC1ER0VORVJBVE9SX0ZJTEUiIFwKLSAJJHtyZWFsc3JjZGlyfS9jb25maWd1cmUgXAotIAkJLS1lbmFibGUtbGFuZ3VhZ2VzPSR7ZW5hYmxlX2xhbmd1YWdlcy1hbGx9IFwKLSAJCS0tdGFyZ2V0PSR0YXJnZXRfYWxpYXMgLS1ob3N0PSRidWlsZF9hbGlhcyAtLWJ1aWxkPSRidWlsZF9hbGlhcwotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCi1pbmRleCA1MDg1NmU2Li4xN2E0ZGZkIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYwotKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYwotQEAgLTE2MzMsNyArMTYzMyw3IEBAIGVsc2UKLSAJQ0M9IiR7Q0NfRk9SX0JVSUxEfSIgQ0ZMQUdTPSIke0NGTEFHU19GT1JfQlVJTER9IiBcCi0gCUNYWD0iJHtDWFhfRk9SX0JVSUxEfSIgQ1hYRkxBR1M9IiR7Q1hYRkxBR1NfRk9SX0JVSUxEfSIgXAotIAlMRD0iJHtMRF9GT1JfQlVJTER9IiBMREZMQUdTPSIke0xERkxBR1NfRk9SX0JVSUxEfSIgXAotLQlHTVBJTkM9IiIgQ1BQRkxBR1M9IiR7Q1BQRkxBR1N9IC1ER0VORVJBVE9SX0ZJTEUiIFwKLSsJR01QSU5DPSIiIENQUEZMQUdTPSIke0NQUEZMQUdTX0ZPUl9CVUlMRH0gLURHRU5FUkFUT1JfRklMRSIgXAotIAkke3JlYWxzcmNkaXJ9L2NvbmZpZ3VyZSBcCi0gCQktLWVuYWJsZS1sYW5ndWFnZXM9JHtlbmFibGVfbGFuZ3VhZ2VzLWFsbH0gXAotIAkJLS10YXJnZXQ9JHRhcmdldF9hbGlhcyAtLWhvc3Q9JGJ1aWxkX2FsaWFzIC0tYnVpbGQ9JGJ1aWxkX2FsaWFzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNjctZml4LWFybS10aHVtYi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDA2Ny1maXgtYXJtLXRodW1iLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjI2MmUzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDA2Ny1maXgtYXJtLXRodW1iLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZAotCi1TaWduZWQtb2ZmLWJ5OiBEbWl0cnkgRXJlbWluLVNvbGVuaWtvdiA8ZGJhcnlzaGtvdkBnbWFpbC5jb20+Ci0tLS0KLQotMjAxNS0xMS0yNSAgVmxhZGltaXIgTWFrYXJvdiAgPHZtYWthcm92QHJlZGhhdC5jb20+Ci0KLQlQUiBydGwtb3B0aW1pemF0aW9uLzY3OTU0Ci0JKiBscmEtY29uc3RyYWludHMuYyAoY3Vycl9pbnNuX3RyYW5zZm9ybSk6IEFkZCBjaGVjayBvbiBzY3JhdGNoCi0JcHNldWRvIHdoZW4gY2hhbmdlIGNsYXNzIHRvIE5PX1JFR1MuICBBZGQgYW4gYXNzZXJ0LgotCi0KLQotZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2djYy5nbnUub3JnL3N2bi9nY2MvdHJ1bmtAMjMwODk0IDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhNAotLS0tCi0KLWRpZmYgLS1naXQgYS9nY2MvbHJhLWNvbnN0cmFpbnRzLmMgYi9nY2MvbHJhLWNvbnN0cmFpbnRzLmMKLWluZGV4IDQ2NzBlODEuLmM2MmJmNmEgMTAwNjQ0Ci0tLS0gYS9nY2MvbHJhLWNvbnN0cmFpbnRzLmMKLSsrKyBiL2djYy9scmEtY29uc3RyYWludHMuYwotQEAgLTM3MjUsNyArMzcyNSw4IEBAIGN1cnJfaW5zbl90cmFuc2Zvcm0gKGJvb2wgY2hlY2tfb25seV9wKQotIAkJIGFzc2lnbWVudCBwYXNzIGFuZCB0aGUgc2NyYXRjaCBwc2V1ZG8gd2lsbCBiZQotIAkJIHNwaWxsZWQuICBTcGlsbGVkIHNjcmF0Y2ggcHNldWRvcyBhcmUgdHJhbnNmb3JtZWQKLSAJCSBiYWNrIHRvIHNjcmF0Y2hlcyBhdCB0aGUgTFJBIGVuZC4gICovCi0tCSAgICAgICYmIGxyYV9mb3JtZXJfc2NyYXRjaF9vcGVyYW5kX3AgKGN1cnJfaW5zbiwgaSkpCi0rCSAgICAgICYmIGxyYV9mb3JtZXJfc2NyYXRjaF9vcGVyYW5kX3AgKGN1cnJfaW5zbiwgaSkKLSsJICAgICAgJiYgbHJhX2Zvcm1lcl9zY3JhdGNoX3AgKFJFR05PIChvcCkpKQotIAkgICAgewotIAkgICAgICBpbnQgcmVnbm8gPSBSRUdOTyAob3ApOwotIAkgICAgICBscmFfY2hhbmdlX2NsYXNzIChyZWdubywgTk9fUkVHUywgIiAgICAgIENoYW5nZSB0byIsIHRydWUpOwotQEAgLTM3MzQsNiArMzczNSw4IEBAIGN1cnJfaW5zbl90cmFuc2Zvcm0gKGJvb2wgY2hlY2tfb25seV9wKQotIAkJICAgc3BpbGxlZCBwc2V1ZG8gYXMgdGhlcmUgaXMgb25seSBvbmUgc3VjaCBpbnNuLCB0aGUKLSAJCSAgIGN1cnJlbnQgb25lLiAgKi8KLSAJCXJlZ19yZW51bWJlcltyZWdub10gPSAtMTsKLSsJICAgICAgbHJhX2Fzc2VydCAoYml0bWFwX3NpbmdsZV9iaXRfc2V0X3AKLSsJCQkgICgmbHJhX3JlZ19pbmZvW1JFR05PIChvcCldLmluc25fYml0bWFwKSk7Ci0gCSAgICB9Ci0gCSAgLyogV2UgY2FuIGRvIGFuIG9wdGlvbmFsIHJlbG9hZC4gIElmIHRoZSBwc2V1ZG8gZ290IGEgaGFyZAotIAkgICAgIHJlZywgd2UgbWlnaHQgaW1wcm92ZSB0aGUgY29kZSB0aHJvdWdoIGluaGVyaXRhbmNlLiAgSWYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDA2Ny1nY2MtbXVzbC1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDY3LWdjYy1tdXNsLXN1cHBvcnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhMGI1YWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDY3LWdjYy1tdXNsLXN1cHBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNjcgKzAsMCBAQAotIyBIRyBjaGFuZ2VzZXQgcGF0Y2gKLSMgUGFyZW50IGU1YjQ1NjRmMjQ5Zjg2MzQxOTRiZGFiZWY0YjMwNTdkMGU1NGVlOTcKLUFkZGluZyAtbW11c2wgYXMgYSBtdXNsIGxpYmMgc3BlY2lmaWVyLCBhbmQgdGhlIG5lY2Vzc2FyeSBoYWNrcyBmb3IgaXQgdG8ga25vdyBob3cgdG8gZmluZCBtdXNsJ3MgZHluYW1pYyBsaW5rZXIuCi1VcHN0cmVhbS1TdGF0dXM6IGJhY2twb3J0IFtwYXJ0aWFsXQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotCi1JbmRleDogZ2NjLTQuOS4wL2djYy9jb25maWcuZ2NjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2NjLTQuOS4wLm9yaWcvZ2NjL2NvbmZpZy5nY2MJMjAxNC0wNC0yMiAyMjo0NDoxNy4xNTM1NjcxNTAgLTA3MDAKLSsrKyBnY2MtNC45LjAvZ2NjL2NvbmZpZy5nY2MJMjAxNC0wNC0yMyAyMzo1NDozMS40MjczNTcwNTEgLTA3MDAKLUBAIC01OTQsNyArNTk0LDcgQEAKLSBlc2FjCi0gCi0gIyBDb21tb24gQyBsaWJyYXJpZXMuCi0tdG1fZGVmaW5lcz0iJHRtX2RlZmluZXMgTElCQ19HTElCQz0xIExJQkNfVUNMSUJDPTIgTElCQ19CSU9OSUM9MyIKLSt0bV9kZWZpbmVzPSIkdG1fZGVmaW5lcyBMSUJDX0dMSUJDPTEgTElCQ19VQ0xJQkM9MiBMSUJDX0JJT05JQz0zIExJQkNfTVVTTD00IgotIAotICMgMzItYml0IHg4NiBwcm9jZXNzb3JzIHN1cHBvcnRlZCBieSAtLXdpdGgtYXJjaD0uICBFYWNoIHByb2Nlc3NvcgotICMgTVVTVCBiZSBzZXBhcmF0ZWQgYnkgZXhhY3RseSBvbmUgc3BhY2UuCi1AQCAtNzE5LDYgKzcxOSw5IEBACi0gICAgICotKi0qdWNsaWJjKikKLSAgICAgICB0bV9kZWZpbmVzPSIkdG1fZGVmaW5lcyBERUZBVUxUX0xJQkM9TElCQ19VQ0xJQkMiCi0gICAgICAgOzsKLSsgICAgKi0qLSptdXNsKikKLSsgICAgICB0bV9kZWZpbmVzPSIkdG1fZGVmaW5lcyBERUZBVUxUX0xJQkM9TElCQ19NVVNMIgotKyAgICAgIDs7Ci0gICAgICopCi0gICAgICAgdG1fZGVmaW5lcz0iJHRtX2RlZmluZXMgREVGQVVMVF9MSUJDPUxJQkNfR0xJQkMiCi0gICAgICAgOzsKLUBAIC0yMzI4LDYgKzIzMzEsMTEgQEAKLSAJICAgIHBvd2VycGMqLSotbGludXgqcGFpcmVkKikKLSAJCXRtX2ZpbGU9IiR7dG1fZmlsZX0gcnM2MDAwLzc1MGNsLmgiIDs7Ci0gCWVzYWMKLSsgICAgICAgIGNhc2UgJHt0YXJnZXR9IGluCi0rCSAgICAqLWxpbnV4Ki1tdXNsKikKLSsJCWVuYWJsZV9zZWN1cmVwbHQ9eWVzIDs7Ci0rCWVzYWMKLSsKLSAJaWYgdGVzdCB4JHtlbmFibGVfc2VjdXJlcGx0fSA9IHh5ZXM7IHRoZW4KLSAJCXRtX2ZpbGU9InJzNjAwMC9zZWN1cmVwbHQuaCAke3RtX2ZpbGV9IgotIAlmaQotSW5kZXg6IGdjYy00LjkuMC9nY2MvY29uZmlnL2xpbnV4LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtNC45LjAub3JpZy9nY2MvY29uZmlnL2xpbnV4LmgJMjAxNC0wMS0wMiAxNDoyMzoyNi4wMDAwMDAwMDAgLTA4MDAKLSsrKyBnY2MtNC45LjAvZ2NjL2NvbmZpZy9saW51eC5oCTIwMTQtMDQtMjQgMDA6MTE6MjkuMDM0MDI4ODk1IC0wNzAwCi1AQCAtMzIsMTAgKzMyLDEyIEBACi0gI2RlZmluZSBPUFRJT05fR0xJQkMgIChERUZBVUxUX0xJQkMgPT0gTElCQ19HTElCQykKLSAjZGVmaW5lIE9QVElPTl9VQ0xJQkMgKERFRkFVTFRfTElCQyA9PSBMSUJDX1VDTElCQykKLSAjZGVmaW5lIE9QVElPTl9CSU9OSUMgKERFRkFVTFRfTElCQyA9PSBMSUJDX0JJT05JQykKLSsjZGVmaW5lIE9QVElPTl9NVVNMICAgKERFRkFVTFRfTElCQyA9PSBMSUJDX01VU0wpCi0gI2Vsc2UKLSAjZGVmaW5lIE9QVElPTl9HTElCQyAgKGxpbnV4X2xpYmMgPT0gTElCQ19HTElCQykKLSAjZGVmaW5lIE9QVElPTl9VQ0xJQkMgKGxpbnV4X2xpYmMgPT0gTElCQ19VQ0xJQkMpCi0gI2RlZmluZSBPUFRJT05fQklPTklDIChsaW51eF9saWJjID09IExJQkNfQklPTklDKQotKyNkZWZpbmUgT1BUSU9OX01VU0wgICAobGludXhfbGliYyA9PSBMSUJDX01VU0wpCi0gI2VuZGlmCi0gCi0gI2RlZmluZSBHTlVfVVNFUl9UQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKCkJCQlcCi1AQCAtNTMsMTggKzU1LDIxIEBACi0gICAgdUNsaWJjIG9yIEJpb25pYyBpcyB0aGUgZGVmYXVsdCBDIGxpYnJhcnkgYW5kIHdoZXRoZXIKLSAgICAtbXVjbGliYyBvciAtbWdsaWJjIG9yIC1tYmlvbmljIGhhcyBiZWVuIHBhc3NlZCB0byBjaGFuZ2UgdGhlIGRlZmF1bHQuICAqLwotIAotLSNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSMShMSUJDMSwgTElCQzIsIExJQkMzLCBMRDEsIExEMiwgTEQzKQlcCi0tICAiJXsiIExJQkMyICI6IiBMRDIgIjs6JXsiIExJQkMzICI6IiBMRDMgIjs6IiBMRDEgIn19IgotKyNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSMShMSUJDMSwgTElCQzIsIExJQkMzLCBMSUJDNCwgTEQxLCBMRDIsIExEMywgTEQ0KQlcCi0rICAiJXsiIExJQkMyICI6IiBMRDIgIjs6JXsiIExJQkMzICI6IiBMRDMgIjs6JXsiIExJQkM0ICI6IiBMRDQgIjs6IiBMRDEgIn19fSIKLSAKLSAjaWYgREVGQVVMVF9MSUJDID09IExJQkNfR0xJQkMKLS0jZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVLCBCKSBcCi0tICBDSE9PU0VfRFlOQU1JQ19MSU5LRVIxICgibWdsaWJjIiwgIm11Y2xpYmMiLCAibWJpb25pYyIsIEcsIFUsIEIpCi0rI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIoRywgVSwgQiwgTSkgXAotKyAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSMSAoIm1nbGliYyIsICJtdWNsaWJjIiwgIm1iaW9uaWMiLCAibW11c2wiLCBHLCBVLCBCLCBNKQotICNlbGlmIERFRkFVTFRfTElCQyA9PSBMSUJDX1VDTElCQwotLSNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUsIEIpIFwKLS0gIENIT09TRV9EWU5BTUlDX0xJTktFUjEgKCJtdWNsaWJjIiwgIm1nbGliYyIsICJtYmlvbmljIiwgVSwgRywgQikKLSsjZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVLCBCLCBNKSBcCi0rICBDSE9PU0VfRFlOQU1JQ19MSU5LRVIxICgibXVjbGliYyIsICJtZ2xpYmMiLCAibWJpb25pYyIsICJtbXVzbCIsIFUsIEcsIEIsIE0pCi0gI2VsaWYgREVGQVVMVF9MSUJDID09IExJQkNfQklPTklDCi0tI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIoRywgVSwgQikgXAotLSAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSMSAoIm1iaW9uaWMiLCAibWdsaWJjIiwgIm11Y2xpYmMiLCBCLCBHLCBVKQotKyNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUsIEIsIE0pIFwKLSsgIENIT09TRV9EWU5BTUlDX0xJTktFUjEgKCJtYmlvbmljIiwgIm1nbGliYyIsICJtdWNsaWJjIiwgIm1tdXNsIiwgQiwgRywgVSwgTSkKLSsjZWxpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19NVVNMCi0rI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIoRywgVSwgQiwgTSkgXAotKyAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSMSAoIm1tdXNsIiwgIm1nbGliYyIsICJtdWNsaWJjIiwgIm1iaW9uaWMiLCBNLCBHLCBVLCBCKQotICNlbHNlCi0gI2Vycm9yICJVbnN1cHBvcnRlZCBERUZBVUxUX0xJQkMiCi0gI2VuZGlmIC8qIERFRkFVTFRfTElCQyAqLwotQEAgLTg0LDE2ICs4OSwxNiBAQAotIAotICNkZWZpbmUgR05VX1VTRVJfRFlOQU1JQ19MSU5LRVIJCQkJCQlcCi0gICBDSE9PU0VfRFlOQU1JQ19MSU5LRVIgKEdMSUJDX0RZTkFNSUNfTElOS0VSLCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIsCVwKLS0JCQkgQklPTklDX0RZTkFNSUNfTElOS0VSKQotKwkJCSBCSU9OSUNfRFlOQU1JQ19MSU5LRVIsIE1VU0xfRFlOQU1JQ19MSU5LRVIpCi0gI2RlZmluZSBHTlVfVVNFUl9EWU5BTUlDX0xJTktFUjMyCQkJCQlcCi0gICBDSE9PU0VfRFlOQU1JQ19MSU5LRVIgKEdMSUJDX0RZTkFNSUNfTElOS0VSMzIsIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyLCBcCi0tCQkJIEJJT05JQ19EWU5BTUlDX0xJTktFUjMyKQotKwkJCSBCSU9OSUNfRFlOQU1JQ19MSU5LRVIzMiwgTVVTTF9EWU5BTUlDX0xJTktFUjMyKQotICNkZWZpbmUgR05VX1VTRVJfRFlOQU1JQ19MSU5LRVI2NAkJCQkJXAotICAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSIChHTElCQ19EWU5BTUlDX0xJTktFUjY0LCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCwgXAotLQkJCSBCSU9OSUNfRFlOQU1JQ19MSU5LRVI2NCkKLSsJCQkgQklPTklDX0RZTkFNSUNfTElOS0VSNjQsIE1VU0xfRFlOQU1JQ19MSU5LRVI2NCkKLSAjZGVmaW5lIEdOVV9VU0VSX0RZTkFNSUNfTElOS0VSWDMyCQkJCQlcCi0gICBDSE9PU0VfRFlOQU1JQ19MSU5LRVIgKEdMSUJDX0RZTkFNSUNfTElOS0VSWDMyLCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVJYMzIsIFwKLS0JCQkgQklPTklDX0RZTkFNSUNfTElOS0VSWDMyKQotKwkJCSBCSU9OSUNfRFlOQU1JQ19MSU5LRVJYMzIsIE1VU0xfRFlOQU1JQ19MSU5LRVJYMzIpCi0gCi0gLyogV2hldGhlciB3ZSBoYXZlIEJpb25pYyBsaWJjIHJ1bnRpbWUgKi8KLSAjdW5kZWYgVEFSR0VUX0hBU19CSU9OSUMKLUBAIC0xMjcsMyArMTMyLDc0IEBACi0gIyBkZWZpbmUgVEFSR0VUX0xJQkNfSEFTX0ZVTkNUSU9OIGxpbnV4X2xpYmNfaGFzX2Z1bmN0aW9uCi0gCi0gI2VuZGlmCi0rCi0rLyogbXVzbCBhdm9pZHMgcHJvYmxlbWF0aWMgaW5jbHVkZXMgYnkgcmVhcnJhbmdpbmcgdGhlIGluY2x1ZGUgZGlyZWN0b3JpZXMuCi0rICogVW5mb3J0dW5hdGVseSwgdGhpcyBpcyBtb3N0bHkgZHVwbGljYXRlZCBmcm9tIGNwcGRlZmF1bHQuYyAqLwotKyNpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19NVVNMCi0rI2RlZmluZSBJTkNMVURFX0RFRkFVTFRTX01VU0xfR1BQCQkJXAotKyAgICB7IEdQTFVTUExVU19JTkNMVURFX0RJUiwgIkcrKyIsIDEsIDEsCQlcCi0rICAgICAgR1BMVVNQTFVTX0lOQ0xVREVfRElSX0FERF9TWVNST09ULCAwIH0sCQlcCi0rICAgIHsgR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVIsICJHKysiLCAxLCAxLAkJXAotKyAgICAgIEdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVCwgMSB9LAkJXAotKyAgICB7IEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUiwgIkcrKyIsIDEsIDEsCVwKLSsgICAgICBHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1QsIDAgfSwKLSsKLSsjaWZkZWYgTE9DQUxfSU5DTFVERV9ESVIKLSsjZGVmaW5lIElOQ0xVREVfREVGQVVMVFNfTVVTTF9MT0NBTAkJCVwKLSsgICAgeyBMT0NBTF9JTkNMVURFX0RJUiwgMCwgMCwgMSwgMSwgMiB9LAkJXAotKyAgICB7IExPQ0FMX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAxLCAwIH0sCi0rI2Vsc2UKLSsjZGVmaW5lIElOQ0xVREVfREVGQVVMVFNfTVVTTF9MT0NBTAotKyNlbmRpZgotKwotKyNpZmRlZiBQUkVGSVhfSU5DTFVERV9ESVIKLSsjZGVmaW5lIElOQ0xVREVfREVGQVVMVFNfTVVTTF9QUkVGSVgJCQlcCi0rICAgIHsgUFJFRklYX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAwLCAwfSwKLSsjZWxzZQotKyNkZWZpbmUgSU5DTFVERV9ERUZBVUxUU19NVVNMX1BSRUZJWAotKyNlbmRpZgotKwotKyNpZmRlZiBDUk9TU19JTkNMVURFX0RJUgotKyNkZWZpbmUgSU5DTFVERV9ERUZBVUxUU19NVVNMX0NST1NTCQkJXAotKyAgICB7IENST1NTX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMCwgMCwgMH0sCi0rI2Vsc2UKLSsjZGVmaW5lIElOQ0xVREVfREVGQVVMVFNfTVVTTF9DUk9TUwotKyNlbmRpZgotKwotKyNpZmRlZiBUT09MX0lOQ0xVREVfRElSCi0rI2RlZmluZSBJTkNMVURFX0RFRkFVTFRTX01VU0xfVE9PTAkJCVwKLSsgICAgeyBUT09MX0lOQ0xVREVfRElSLCAiQklOVVRJTFMiLCAwLCAxLCAwLCAwfSwKLSsjZWxzZQotKyNkZWZpbmUgSU5DTFVERV9ERUZBVUxUU19NVVNMX1RPT0wKLSsjZW5kaWYKLSsKLSsjaWZkZWYgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSCi0rI2RlZmluZSBJTkNMVURFX0RFRkFVTFRTX01VU0xfTkFUSVZFCQkJXAotKyAgICB7IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUiwgMCwgMCwgMCwgMSwgMiB9LAlcCi0rICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSLCAwLCAwLCAwLCAxLCAwIH0sCi0rI2Vsc2UKLSsjZGVmaW5lIElOQ0xVREVfREVGQVVMVFNfTVVTTF9OQVRJVkUKLSsjZW5kaWYKLSsKLSsjaWYgZGVmaW5lZCAoQ1JPU1NfRElSRUNUT1JZX1NUUlVDVFVSRSkgJiYgIWRlZmluZWQgKFRBUkdFVF9TWVNURU1fUk9PVCkKLSsjIHVuZGVmIElOQ0xVREVfREVGQVVMVFNfTVVTTF9MT0NBTAotKyMgZGVmaW5lIElOQ0xVREVfREVGQVVMVFNfTVVTTF9MT0NBTAotKyMgdW5kZWYgSU5DTFVERV9ERUZBVUxUU19NVVNMX05BVElWRQotKyMgZGVmaW5lIElOQ0xVREVfREVGQVVMVFNfTVVTTF9OQVRJVkUKLSsjZWxzZQotKyMgdW5kZWYgSU5DTFVERV9ERUZBVUxUU19NVVNMX0NST1NTCi0rIyBkZWZpbmUgSU5DTFVERV9ERUZBVUxUU19NVVNMX0NST1NTCi0rI2VuZGlmCi0rCi0rI3VuZGVmIElOQ0xVREVfREVGQVVMVFMKLSsjZGVmaW5lIElOQ0xVREVfREVGQVVMVFMJCQkJXAotKyAgewkJCQkJCQlcCi0rICAgIElOQ0xVREVfREVGQVVMVFNfTVVTTF9HUFAJCQkJXAotKyAgICBJTkNMVURFX0RFRkFVTFRTX01VU0xfUFJFRklYCQkJXAotKyAgICBJTkNMVURFX0RFRkFVTFRTX01VU0xfQ1JPU1MJCQkJXAotKyAgICBJTkNMVURFX0RFRkFVTFRTX01VU0xfVE9PTAkJCQlcCi0rICAgIElOQ0xVREVfREVGQVVMVFNfTVVTTF9OQVRJVkUJCQlcCi0rICAgIHsgR0NDX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMSwgMCwgMCB9LAkJXAotKyAgICB7IDAsIDAsIDAsIDAsIDAsIDAgfQkJCQlcCi0rICB9Ci0rI2VuZGlmCi1JbmRleDogZ2NjLTQuOS4wL2djYy9jb25maWcvbGludXgub3B0Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2NjLTQuOS4wLm9yaWcvZ2NjL2NvbmZpZy9saW51eC5vcHQJMjAxNC0wMS0wMiAxNDoyMzoyNi4wMDAwMDAwMDAgLTA4MDAKLSsrKyBnY2MtNC45LjAvZ2NjL2NvbmZpZy9saW51eC5vcHQJMjAxNC0wNC0yMiAyMjo0NDoxNy4yODAyMzM4MTcgLTA3MDAKLUBAIC0zMCwzICszMCw3IEBACi0gbXVjbGliYwotIFRhcmdldCBSZXBvcnQgUmVqZWN0TmVnYXRpdmUgVmFyKGxpbnV4X2xpYmMsTElCQ19VQ0xJQkMpIE5lZ2F0aXZlKG1iaW9uaWMpCi0gVXNlIHVDbGliYyBDIGxpYnJhcnkKLSsKLSttbXVzbAotK1RhcmdldCBSZXBvcnQgUmVqZWN0TmVnYXRpdmUgVmFyKGxpbnV4X2xpYmMsTElCQ19NVVNMKSBOZWdhdGl2ZShtZ2xpYmMpCi0rVXNlIG11c2wgQyBsaWJyYXJ5Ci1JbmRleDogZ2NjLTQuOS4wL2djYy9naW5jbHVkZS9zdGRkZWYuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy00LjkuMC5vcmlnL2djYy9naW5jbHVkZS9zdGRkZWYuaAkyMDE0LTAxLTAyIDE0OjIzOjI2LjAwMDAwMDAwMCAtMDgwMAotKysrIGdjYy00LjkuMC9nY2MvZ2luY2x1ZGUvc3RkZGVmLmgJMjAxNC0wNC0yMiAyMjo0NDoxNy4yODAyMzM4MTcgLTA3MDAKLUBAIC0xODEsNiArMTgxLDcgQEAKLSAjaWZuZGVmIF9HQ0NfU0laRV9UCi0gI2lmbmRlZiBfU0laRVRfCi0gI2lmbmRlZiBfX3NpemVfdAotKyNpZm5kZWYgX19ERUZJTkVEX3NpemVfdCAvKiBtdXNsICovCi0gI2RlZmluZSBfX3NpemVfdF9fCS8qIEJlT1MgKi8KLSAjZGVmaW5lIF9fU0laRV9UX18JLyogQ3JheSBVbmljb3MvTWsgKi8KLSAjZGVmaW5lIF9TSVpFX1QKLUBAIC0xOTcsNiArMTk4LDcgQEAKLSAjZGVmaW5lIF9fX2ludF9zaXplX3RfaAotICNkZWZpbmUgX0dDQ19TSVpFX1QKLSAjZGVmaW5lIF9TSVpFVF8KLSsjZGVmaW5lIF9fREVGSU5FRF9zaXplX3QgLyogbXVzbCAqLwotICNpZiAoZGVmaW5lZCAoX19GcmVlQlNEX18pICYmIChfX0ZyZWVCU0RfXyA+PSA1KSkgXAotICAgfHwgZGVmaW5lZChfX0ZyZWVCU0Rfa2VybmVsX18pCi0gLyogX19zaXplX3QgaXMgYSB0eXBlZGVmIG9uIEZyZWVCU0QgNSwgbXVzdCBub3QgdHJhc2ggaXQuICovCi1AQCAtMjE0LDYgKzIxNiw3IEBACi0gdHlwZWRlZiBsb25nIHNzaXplX3Q7Ci0gI2VuZGlmIC8qIF9fQkVPU19fICovCi0gI2VuZGlmIC8qICEoZGVmaW5lZCAoX19HTlVHX18pICYmIGRlZmluZWQgKHNpemVfdCkpICovCi0rI2VuZGlmIC8qIF9fREVGSU5FRF9zaXplX3QgKi8KLSAjZW5kaWYgLyogX19zaXplX3QgKi8KLSAjZW5kaWYgLyogX1NJWkVUXyAqLwotICNlbmRpZiAvKiBfR0NDX1NJWkVfVCAqLwotSW5kZXg6IGdjYy00LjkuMC9nY2MvY29uZmlnL3JzNjAwMC9zZWN1cmVwbHQuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy00LjkuMC5vcmlnL2djYy9jb25maWcvcnM2MDAwL3NlY3VyZXBsdC5oCTIwMTQtMDEtMDIgMTQ6MjM6MjYuMDAwMDAwMDAwIC0wODAwCi0rKysgZ2NjLTQuOS4wL2djYy9jb25maWcvcnM2MDAwL3NlY3VyZXBsdC5oCTIwMTQtMDQtMjMgMjM6NTU6MTUuMTE0MDI0MTc1IC0wNzAwCi1AQCAtMTgsMyArMTgsNCBAQAotIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0gCi0gI2RlZmluZSBDQzFfU0VDVVJFX1BMVF9ERUZBVUxUX1NQRUMgIi1tc2VjdXJlLXBsdCIKLSsjZGVmaW5lIExJTktfU0VDVVJFX1BMVF9ERUZBVUxUX1NQRUMgIi0tc2VjdXJlLXBsdCIKLUluZGV4OiBnY2MtNC45LjAvZ2NjL2NvbmZpZy9yczYwMDAvc3lzdjQuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy00LjkuMC5vcmlnL2djYy9jb25maWcvcnM2MDAwL3N5c3Y0LmgJMjAxNC0wNC0yMyAyMzo1MjoxMy44NTQwMjMwMTUgLTA3MDAKLSsrKyBnY2MtNC45LjAvZ2NjL2NvbmZpZy9yczYwMDAvc3lzdjQuaAkyMDE0LTA0LTI0IDAwOjEwOjU1LjU1MDY5NTMzNCAtMDcwMAotQEAgLTUzOCw2ICs1MzgsMTAgQEAKLSAjZGVmaW5lIENDMV9TRUNVUkVfUExUX0RFRkFVTFRfU1BFQyAiIgotICNlbmRpZgotIAotKyNpZm5kZWYgTElOS19TRUNVUkVfUExUX0RFRkFVTFRfU1BFQwotKyNkZWZpbmUgTElOS19TRUNVUkVfUExUX0RFRkFVTFRfU1BFQyAiIgotKyNlbmRpZgotKwotIC8qIFBhc3MgLUcgeHh4IHRvIHRoZSBjb21waWxlci4gICovCi0gI2RlZmluZQlDQzFfU1BFQyAiJXtHKn0gJShjYzFfY3B1KSIgXAotICIle21lYWJpOiAleyFtY2FsbC0qOiAtbWNhbGwtc3lzdiB9fSBcCi1AQCAtNTg1LDcgKzU4OSw4IEBACi0gCi0gLyogT3ZlcnJpZGUgdGhlIGRlZmF1bHQgdGFyZ2V0IG9mIHRoZSBsaW5rZXIuICAqLwotICNkZWZpbmUJTElOS19UQVJHRVRfU1BFQyBcCi0tICBFTkRJQU5fU0VMRUNUKCIiLCAiIC0tb2Zvcm1hdCBlbGYzMi1wb3dlcnBjbGUiLCAiIikKLSsgIEVORElBTl9TRUxFQ1QoIiIsICIgLS1vZm9ybWF0IGVsZjMyLXBvd2VycGNsZSIsICIiKSBcCi0rICAiJXshbWJzcy1wbHQ6ICV7IW1zZWN1cmUtcGx0OiAlKGxpbmtfc2VjdXJlX3BsdF9kZWZhdWx0KX19IgotIAotIC8qIEFueSBzcGVjaWZpYyBPUyBmbGFncy4gICovCi0gI2RlZmluZSBMSU5LX09TX1NQRUMgIlwKLUBAIC04OTQsNiArODk5LDcgQEAKLSAgIHsgImxpbmtfb3Nfb3BlbmJzZCIsCQlMSU5LX09TX09QRU5CU0RfU1BFQyB9LAkJCVwKLSAgIHsgImxpbmtfb3NfZGVmYXVsdCIsCQlMSU5LX09TX0RFRkFVTFRfU1BFQyB9LAkJCVwKLSAgIHsgImNjMV9zZWN1cmVfcGx0X2RlZmF1bHQiLAlDQzFfU0VDVVJFX1BMVF9ERUZBVUxUX1NQRUMgfSwJCVwKLSsgIHsgImxpbmtfc2VjdXJlX3BsdF9kZWZhdWx0IiwJTElOS19TRUNVUkVfUExUX0RFRkFVTFRfU1BFQyB9LAkJXAotICAgeyAiY3BwX29zX2FkcyIsCQlDUFBfT1NfQURTX1NQRUMgfSwJCQlcCi0gICB7ICJjcHBfb3NfeWVsbG93a25pZmUiLAlDUFBfT1NfWUVMTE9XS05JRkVfU1BFQyB9LAkJXAotICAgeyAiY3BwX29zX212bWUiLAkJQ1BQX09TX01WTUVfU1BFQyB9LAkJCVwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDA2OC1tdXNsLWR5bmFtaWMtbGlua2VyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDY4LW11c2wtZHluYW1pYy1saW5rZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwNWFjNjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDY4LW11c2wtZHluYW1pYy1saW5rZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMDUgKzAsMCBAQAotIyBIRyBjaGFuZ2VzZXQgcGF0Y2gKLSMgUGFyZW50IDY3MzhmZDZmNmZjYzJhNzJmMmJhNTI3YmRhMzMyNTY0MmFmMjY4ODUKLVN1cHBvcnQgZm9yIGFybS1saW51eC1tdXNsLgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbcGFydGlhbF0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLQotSW5kZXg6IGdjYy00LjkuMi9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtNC45LjIub3JpZy9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLSsrKyBnY2MtNC45LjIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCi1AQCAtODEsNiArODEsMjMgQEAKLSAjdW5kZWYgVEFSR0VUX0ZJWF9WNEJYX1NQRUMKLSAjZGVmaW5lIFRBUkdFVF9GSVhfVjRCWF9TUEVDICIle21jcHU9YXJtOHxtY3B1PWFybTgxMHxtY3B1PXN0cm9uZ2FybSp8bWFyY2g9YXJtdjQ6IC0tZml4LXY0Ynh9IgotIAotKy8qIEZvciBBUk0gbXVzbCBjdXJyZW50bHkgc3VwcG9ydHMgZm91ciBkeW5hbWljIGxpbmtlcnM6Ci0rICAgLSBsZC1tdXNsLWFybS5zby4xIC0gZm9yIHRoZSBFQUJJLWRlcml2ZWQgc29mdC1mbG9hdCBBQkkKLSsgICAtIGxkLW11c2wtYXJtaGYuc28uMSAtIGZvciB0aGUgRUFCSS1kZXJpdmVkIGhhcmQtZmxvYXQgQUJJCi0rICAgLSBsZC1tdXNsLWFybWViLnNvLjEgLSBmb3IgdGhlIEVBQkktZGVyaXZlZCBzb2Z0LWZsb2F0IEFCSSwgRUIKLSsgICAtIGxkLW11c2wtYXJtZWJoZi5zby4xIC0gZm9yIHRoZSBFQUJJLWRlcml2ZWQgaGFyZC1mbG9hdCBBQkksIEVCCi0rICAgbXVzbCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBsZWdhY3kgT0FCSSBtb2RlLgotKyAgIEFsbCB0aGUgZHluYW1pYyBsaW5rZXJzIGxpdmUgaW4gL2xpYi4KLSsgICBXZSBkZWZhdWx0IHRvIHNvZnQtZmxvYXQsIEVMLiAqLwotKyN1bmRlZiAgTVVTTF9EWU5BTUlDX0xJTktFUgotKyNpZiBUQVJHRVRfQklHX0VORElBTl9ERUZBVUxUCi0rI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSX0UgIiV7bWxpdHRsZS1lbmRpYW46OzplYn0iCi0rI2Vsc2UKLSsjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVJfRSAiJXttYmlnLWVuZGlhbjplYn0iCi0rI2VuZGlmCi0rI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSIFwKLSsgIFNZU1RFTUxJQlNfRElSICJsZC1tdXNsLWFybSIgTVVTTF9EWU5BTUlDX0xJTktFUl9FICIle21mbG9hdC1hYmk9aGFyZDpoZn0uc28uMSIKLSsKLSAvKiBBdCB0aGlzIHBvaW50LCBicGFiaS5oIHdpbGwgaGF2ZSBjbG9iYmVyZWQgTElOS19TUEVDLiAgV2Ugd2FudCB0bwotICAgIHVzZSB0aGUgR05VL0xpbnV4IHZlcnNpb24sIG5vdCB0aGUgZ2VuZXJpYyBCUEFCSSB2ZXJzaW9uLiAgKi8KLSAjdW5kZWYgIExJTktfU1BFQwotSW5kZXg6IGdjYy00LjkuMi9saWJpdG0vY29uZmlnL2FybS9od2NhcC5jYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy00LjkuMi5vcmlnL2xpYml0bS9jb25maWcvYXJtL2h3Y2FwLmNjCi0rKysgZ2NjLTQuOS4yL2xpYml0bS9jb25maWcvYXJtL2h3Y2FwLmNjCi1AQCAtNDAsNyArNDAsMTEgQEAgaW50IEdUTV9od2NhcCBISURERU4gPSAwCi0gCi0gI2lmZGVmIF9fbGludXhfXwotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSsjaWZkZWYgX19HTElCQ19fCi0gI2luY2x1ZGUgPHN5cy9mY250bC5oPgotKyNlbHNlCi0rI2luY2x1ZGUgPGZjbnRsLmg+Ci0rI2VuZGlmCi0gI2luY2x1ZGUgPGVsZi5oPgotIAotIHN0YXRpYyB2b2lkIF9fYXR0cmlidXRlX18oKGNvbnN0cnVjdG9yKSkKLUluZGV4OiBnY2MtNC45LjIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtNC45LjIub3JpZy9nY2MvY29uZmlnL2kzODYvbGludXguaAotKysrIGdjYy00LjkuMi9nY2MvY29uZmlnL2kzODYvbGludXguaAotQEAgLTIxLDMgKzIxLDQgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4KLSAKLSAjZGVmaW5lIEdOVV9VU0VSX0xJTktfRU1VTEFUSU9OICJlbGZfaTM4NiIKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgotKyNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtbXVzbC1pMzg2LnNvLjEiCi1JbmRleDogZ2NjLTQuOS4yL2djYy9jb25maWcvaTM4Ni9saW51eDY0LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtNC45LjIub3JpZy9nY2MvY29uZmlnL2kzODYvbGludXg2NC5oCi0rKysgZ2NjLTQuOS4yL2djYy9jb25maWcvaTM4Ni9saW51eDY0LmgKLUBAIC0zMCwzICszMCw4IEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVEkKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0gI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFNZU1RFTUxJQlNfRElSICJsZC1saW51eC14ODYtNjQuc28uMiIKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSWDMyIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC14MzIuc28uMiIKLSsKLSsjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtbXVzbC1pMzg2LnNvLjEiCi0rI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkLW11c2wteDg2XzY0LnNvLjEiCi0rI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSWDMyIFNZU1RFTUxJQlNfRElSICJsZC1tdXNsLXgzMi5zby4xIgotKwotSW5kZXg6IGdjYy00LjkuMi9nY2MvY29uZmlnL21pcHMvbGludXguaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy00LjkuMi5vcmlnL2djYy9jb25maWcvbWlwcy9saW51eC5oCi0rKysgZ2NjLTQuOS4yL2djYy9jb25maWcvbWlwcy9saW51eC5oCi1AQCAtMjMsMyArMjMsNiBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLgotICN1bmRlZiBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIKLSAjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUiBcCi0gICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLW1pcHNuOC5zby4wOzoiIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMH0iCi0rCi0rI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1tdXNsLW1pcHMuc28uMSIKLSsKLUluZGV4OiBnY2MtNC45LjIvZ2NjL2NvbmZpZy9taXBzL2xpbnV4NjQuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy00LjkuMi5vcmlnL2djYy9jb25maWcvbWlwcy9saW51eDY0LmgKLSsrKyBnY2MtNC45LjIvZ2NjL2NvbmZpZy9taXBzL2xpbnV4NjQuaAotQEAgLTM5LDYgKzM5LDExIEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuCi0gICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLW1pcHNuOC5zby4wOzoiIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMH0iCi0gCi0gI2RlZmluZSBCSU9OSUNfRFlOQU1JQ19MSU5LRVJOMzIgIi9zeXN0ZW0vYmluL2xpbmtlcjMyIgotKwotKyNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUk4zMiBTWVNURU1MSUJTX0RJUiAibGQtbXVzbC1taXBzLnNvLjEiCi0rI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSMzIgU1lTVEVNTElCU19ESVIgImxkLW11c2wtbWlwcy5zby4xIgotKyNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUjY0IFNZU1RFTUxJQlNfRElSICJsZC1tdXNsLW1pcHMuc28uMSIKLSsKLSAjZGVmaW5lIEdOVV9VU0VSX0RZTkFNSUNfTElOS0VSTjMyIFwKLSAgIENIT09TRV9EWU5BTUlDX0xJTktFUiAoR0xJQkNfRFlOQU1JQ19MSU5LRVJOMzIsIFVDTElCQ19EWU5BTUlDX0xJTktFUk4zMiwgXAotLQkJCSBCSU9OSUNfRFlOQU1JQ19MSU5LRVJOMzIpCi0rCQkJIEJJT05JQ19EWU5BTUlDX0xJTktFUk4zMiwgTVVTTF9EWU5BTUlDX0xJTktFUk4zMikKLUluZGV4OiBnY2MtNC45LjIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2NjLTQuOS4yLm9yaWcvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCi0rKysgZ2NjLTQuOS4yL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAotQEAgLTM3NSwxNyArMzc1LDIyIEBAIGV4dGVybiBpbnQgZG90X3N5bWJvbHM7Ci0gI2VuZGlmCi0gI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCi0gI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBTWVNURU1MSUJTX0RJUiAibGQ2NC11Q2xpYmMuc28uMCIKLSsjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtbXVzbC1wb3dlcnBjLnNvLjEiCi0rI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkLW11c2wtcG93ZXJwYzY0LnNvLjEiCi0rCi0gI2lmIERFRkFVTFRfTElCQyA9PSBMSUJDX1VDTElCQwotLSNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUpICIle21nbGliYzoiIEcgIjs6IiBVICJ9IgotKyNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUsIE0pICIle21nbGliYzoiIEcgIjs6JXttbXVzbDoiIE0gIjs6IiBVICJ9fSIKLSAjZWxpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19HTElCQwotLSNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUpICIle211Y2xpYmM6IiBVICI7OiIgRyAifSIKLSsjZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVLCBNKSAiJXttdWNsaWJjOiIgVSAiOzole21tdXNsOiIgTSAiOzoiIEcgIn19IgotKyNlbGlmIERFRkFVTFRfTElCQyA9PSBMSUJDX01VU0wKLSsjZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVLCBNKSAiJXttZ2xpYmM6IiBHICI7OiV7bXVjbGliYzoiIFUgIjs6IiBNICJ9fSIKLSAjZWxzZQotICNlcnJvciAiVW5zdXBwb3J0ZWQgREVGQVVMVF9MSUJDIgotICNlbmRpZgotICNkZWZpbmUgR05VX1VTRVJfRFlOQU1JQ19MSU5LRVIzMiBcCi0tICBDSE9PU0VfRFlOQU1JQ19MSU5LRVIgKEdMSUJDX0RZTkFNSUNfTElOS0VSMzIsIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyKQotKyAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSIChHTElCQ19EWU5BTUlDX0xJTktFUjMyLCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiwgTVVTTF9EWU5BTUlDX0xJTktFUjMyKQotICNkZWZpbmUgR05VX1VTRVJfRFlOQU1JQ19MSU5LRVI2NCBcCi0tICBDSE9PU0VfRFlOQU1JQ19MSU5LRVIgKEdMSUJDX0RZTkFNSUNfTElOS0VSNjQsIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0KQotKyAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSIChHTElCQ19EWU5BTUlDX0xJTktFUjY0LCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCwgTVVTTF9EWU5BTUlDX0xJTktFUjY0KQotIAotICN1bmRlZiAgREVGQVVMVF9BU01fRU5ESUFOCi0gI2lmIChUQVJHRVRfREVGQVVMVCAmIE1BU0tfTElUVExFX0VORElBTikKLUluZGV4OiBnY2MtNC45LjIvZ2NjL2NvbmZpZy9yczYwMDAvc3lzdjQuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy00LjkuMi5vcmlnL2djYy9jb25maWcvcnM2MDAwL3N5c3Y0LmgKLSsrKyBnY2MtNC45LjIvZ2NjL2NvbmZpZy9yczYwMDAvc3lzdjQuaAotQEAgLTc2OCwxNSArNzY4LDE5IEBAIEVORElBTl9TRUxFQ1QoIiAtbWJpZyIsICIgLW1saXR0bGUiLCBERUYKLSAKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLnNvLjEiCi0gI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtdUNsaWJjLnNvLjAiCi0rI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLW11c2wtcG93ZXJwYy5zby4xIgotKwotICNpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19VQ0xJQkMKLS0jZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVKSAiJXttZ2xpYmM6IiBHICI7OiIgVSAifSIKLSsjZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVLCBNKSAiJXttZ2xpYmM6IiBHICI7OiV7bW11c2w6IiBNICI7OiIgVSAifX0iCi0rI2VsaWYgREVGQVVMVF9MSUJDID09IExJQkNfTVVTTAotKyNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUsIE0pICIle21nbGliYzoiIEcgIjs6JXttdWNsaWJjOiIgVSAiOzoiIE0gIn19IgotICNlbGlmICFkZWZpbmVkIChERUZBVUxUX0xJQkMpIHx8IERFRkFVTFRfTElCQyA9PSBMSUJDX0dMSUJDCi0tI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIoRywgVSkgIiV7bXVjbGliYzoiIFUgIjs6IiBHICJ9IgotKyNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUsIE0pICIle211Y2xpYmM6IiBVICI7OiV7bW11c2w6IiBNICI7OiIgRyAifX0iCi0gI2Vsc2UKLSAjZXJyb3IgIlVuc3VwcG9ydGVkIERFRkFVTFRfTElCQyIKLSAjZW5kaWYKLSAjZGVmaW5lIEdOVV9VU0VSX0RZTkFNSUNfTElOS0VSIFwKLS0gIENIT09TRV9EWU5BTUlDX0xJTktFUiAoR0xJQkNfRFlOQU1JQ19MSU5LRVIsIFVDTElCQ19EWU5BTUlDX0xJTktFUikKLSsgIENIT09TRV9EWU5BTUlDX0xJTktFUiAoR0xJQkNfRFlOQU1JQ19MSU5LRVIsIFVDTElCQ19EWU5BTUlDX0xJTktFUiwgTVVTTF9EWU5BTUlDX0xJTktFUikKLSAKLSAjZGVmaW5lIExJTktfT1NfTElOVVhfU1BFQyAiLW0gZWxmMzJwcGNsaW51eCAleyFzaGFyZWQ6ICV7IXN0YXRpYzogXAotICAgJXtyZHluYW1pYzotZXhwb3J0LWR5bmFtaWN9IFwKLUluZGV4OiBnY2MtNC45LjIvbGliaXRtL2NvbmZpZy9saW51eC94ODYvdGxzLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtNC45LjIub3JpZy9saWJpdG0vY29uZmlnL2xpbnV4L3g4Ni90bHMuaAotKysrIGdjYy00LjkuMi9saWJpdG0vY29uZmlnL2xpbnV4L3g4Ni90bHMuaAotQEAgLTI1LDE2ICsyNSwxOSBAQAotICNpZm5kZWYgTElCSVRNX1g4Nl9UTFNfSAotICNkZWZpbmUgTElCSVRNX1g4Nl9UTFNfSCAxCi0gCi0tI2lmIGRlZmluZWQoX19HTElCQ19QUkVSRVEpICYmIF9fR0xJQkNfUFJFUkVRKDIsIDEwKQotKyNpZiBkZWZpbmVkKF9fR0xJQkNfUFJFUkVRKQotKyNpZiBfX0dMSUJDX1BSRVJFUSgyLCAxMCkKLSAvKiBVc2Ugc2xvdHMgaW4gdGhlIFRDQiBoZWFkIHJhdGhlciB0aGFuIF9fdGhyZWFkIGxvb2t1cHMuCi0gICAgR0xJQkMgaGFzIHJlc2VydmVkIHdvcmRzIDEwIHRocm91Z2ggMTMgZm9yIFRNLiAgKi8KLSAjZGVmaW5lIEhBVkVfQVJDSF9HVE1fVEhSRUFEIDEKLSAjZGVmaW5lIEhBVkVfQVJDSF9HVE1fVEhSRUFEX0RJU1AgMQotICNlbmRpZgotKyNlbmRpZgotIAotICNpbmNsdWRlICJjb25maWcvZ2VuZXJpYy90bHMuaCIKLSAKLS0jaWYgZGVmaW5lZChfX0dMSUJDX1BSRVJFUSkgJiYgX19HTElCQ19QUkVSRVEoMiwgMTApCi0rI2lmIGRlZmluZWQoX19HTElCQ19QUkVSRVEpCi0rI2lmIF9fR0xJQkNfUFJFUkVRKDIsIDEwKQotIG5hbWVzcGFjZSBHVE0gSElEREVOIHsKLSAKLSAjaWZkZWYgX194ODZfNjRfXwotQEAgLTEwMSw1ICsxMDQsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2FiaV9kaXNwKHN0cnVjdCBhCi0gCi0gfSAvLyBuYW1lc3BhY2UgR1RNCi0gI2VuZGlmIC8qID49IEdMSUJDIDIuMTAgKi8KLSsjZW5kaWYKLSAKLSAjZW5kaWYgLy8gTElCSVRNX1g4Nl9UTFNfSAotSW5kZXg6IGdjYy00LjkuMi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2NjLTQuOS4yLm9yaWcvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAotKysrIGdjYy00LjkuMi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCi1AQCAtMjUsNiArMjUsOCBAQAotIAotICNkZWZpbmUgQ1BQX1NQRUMgIiV7cHRocmVhZDotRF9SRUVOVFJBTlR9IgotIAotKyNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtbXVzbC1hYXJjaDY0LnNvLjEiCi0rCi0gI2RlZmluZSBMSU5VWF9UQVJHRVRfTElOS19TUEVDICAiJXtoKn0JCVwKLSAgICAle3N0YXRpYzotQnN0YXRpY30JCQkJXAotICAgICV7c2hhcmVkOi1zaGFyZWR9CQkJCVwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDA2OS1tdXNsLW5vLWZpeGluY2x1ZGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDY5LW11c2wtbm8tZml4aW5jbHVkZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyYjE4YTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDY5LW11c2wtbm8tZml4aW5jbHVkZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0jIEhHIGNoYW5nZXNldCBwYXRjaAotIyBQYXJlbnQgNjAwYThhNDIyY2NhZjU2MjdhZDFmNWExMzhlNzM5OGRmMmI5ZTlkOAotR2V0IHJpZCBvZiBldmVyLWJyb2tlbiBmaXhpbmNsdWRlcyBvbiBtdXNsLgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0KLUluZGV4OiBnY2MtNC45LTIwMTQwMzE2L2ZpeGluY2x1ZGVzL21rZml4aW5jLnNoCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2NjLTQuOS0yMDE0MDMxNi5vcmlnL2ZpeGluY2x1ZGVzL21rZml4aW5jLnNoCi0rKysgZ2NjLTQuOS0yMDE0MDMxNi9maXhpbmNsdWRlcy9ta2ZpeGluYy5zaAotQEAgLTE5LDcgKzE5LDggQEAgY2FzZSAkbWFjaGluZSBpbgotICAgICBwb3dlcnBjLSotZWFiaSogICAgfCBcCi0gICAgIHBvd2VycGMtKi1ydGVtcyogICB8IFwKLSAgICAgcG93ZXJwY2xlLSotZWFiaXNpbSogfCBcCi0tICAgIHBvd2VycGNsZS0qLWVhYmkqICkKLSsgICAgcG93ZXJwY2xlLSotZWFiaSogfCBcCi0rICAgICotbXVzbCogKQotIAkjICBJRiB0aGVyZSBpcyBubyBpbmNsdWRlIGZpeGluZywKLSAJIyAgVEhFTiBjcmVhdGUgYSBuby1vcCBmaXhlciBhbmQgZXhpdAotIAkoZWNobyAiIyEgL2Jpbi9zaCIgOyBlY2hvICJleGl0IDAiICkgPiAke3RhcmdldH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDA3MC1saWJzdGRjLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNzAtbGlic3RkYy1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDhlNDgxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDA3MC1saWJzdGRjLW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLUluZGV4OiBnY2MtNC45LTIwMTQwMzE2L2xpYnN0ZGMrKy12My9jb25maWd1cmUuaG9zdAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy00LjktMjAxNDAzMTYub3JpZy9saWJzdGRjKystdjMvY29uZmlndXJlLmhvc3QJMjAxNC0wMy0yNiAwMToxMjoxOS40NjYwMDgxOTMgLTA3MDAKLSsrKyBnY2MtNC45LTIwMTQwMzE2L2xpYnN0ZGMrKy12My9jb25maWd1cmUuaG9zdAkyMDE0LTAzLTI2IDAxOjQzOjQ4LjIyMjY4NDM1NyAtMDcwMAotQEAgLTI2NCwxNCArMjY0LDI0IEBACi0gICAgIG9zX2luY2x1ZGVfZGlyPSJvcy9ic2QvZnJlZWJzZCIKLSAgICAgOzsKLSAgIGdudSogfCBsaW51eCogfCBrZnJlZWJzZCotZ251IHwga25ldGJzZCotZ251KQotKyAgICAjIGNoZWNrIGZvciBtdXNsIGJ5IHRhcmdldAotKyAgICBjYXNlICIke2hvc3Rfb3N9IiBpbgotKyAgICAgICotbXVzbCopCi0rICAgICAgICBvc19pbmNsdWRlX2Rpcj0ib3MvZ2VuZXJpYyIKLSsgICAgICAgIDs7Ci0rICAgICAgKikKLSAgICAgaWYgWyAiJHVjbGliYyIgPSAieWVzIiBdOyB0aGVuCi0gICAgICAgb3NfaW5jbHVkZV9kaXI9Im9zL3VjbGliYyIKLSAgICAgZWxpZiBbICIkYmlvbmljIiA9ICJ5ZXMiIF07IHRoZW4KLSAgICAgICBvc19pbmNsdWRlX2Rpcj0ib3MvYmlvbmljIgotKyAgICBlbGlmIFsgIiRtdXNsIiA9ICJ5ZXMiIF07IHRoZW4KLSsgICAgICBvc19pbmNsdWRlX2Rpcj0ib3MvZ2VuZXJpYyIKLSAgICAgZWxzZQotICAgICAgIG9zX2luY2x1ZGVfZGlyPSJvcy9nbnUtbGludXgiCi0gICAgIGZpCi0gICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSAgIGhwdXgqKQotICAgICBvc19pbmNsdWRlX2Rpcj0ib3MvaHB1eCIKLSAgICAgOzsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy00LjkvMDA3MS1JZ25vcmUtZmRlYnVnLXByZWZpeC1tYXAtaW4tcHJvZHVjZXItc3RyaW5nLWJ5LURhbmllLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDcxLUlnbm9yZS1mZGVidWctcHJlZml4LW1hcC1pbi1wcm9kdWNlci1zdHJpbmctYnktRGFuaWUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4Zjc5YjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDcxLUlnbm9yZS1mZGVidWctcHJlZml4LW1hcC1pbi1wcm9kdWNlci1zdHJpbmctYnktRGFuaWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIDMyNTkzYjM4MDgyZWE2NWY0YzgyMTU5MjU0YWRmMWUwZGMyNDIzYmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBiZXJuZHMgPGJlcm5kc0AxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQ+Ci1EYXRlOiBUdWUsIDE2IEZlYiAyMDE2IDAzOjE1OjE1IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIElnbm9yZSAtZmRlYnVnLXByZWZpeC1tYXAgaW4gcHJvZHVjZXIgc3RyaW5nIChieSBEYW5pZWwgS2FobgotIEdpbGxtb3IpCi0KLSogZHdhcmYyb3V0LmMgKGdlbl9wcm9kdWNlcl9zdHJpbmcpOiBJZ25vcmUgLWZkZWJ1Zy1wcmVmaXgtbWFwLgotCi1naXQtc3ZuLWlkOiBzdm4rc3NoOi8vZ2NjLmdudS5vcmcvc3ZuL2djYy90cnVua0AyMzE4MzUgMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGdjYy9kd2FyZjJvdXQuYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2R3YXJmMm91dC5jIGIvZ2NjL2R3YXJmMm91dC5jCi1pbmRleCAzNjE0YzEwLi41MjZmMTE0IDEwMDY0NAotLS0tIGEvZ2NjL2R3YXJmMm91dC5jCi0rKysgYi9nY2MvZHdhcmYyb3V0LmMKLUBAIC0xOTY3MCw2ICsxOTY3MCw3IEBAIGdlbl9wcm9kdWNlcl9zdHJpbmcgKHZvaWQpCi0gICAgICAgY2FzZSBPUFRfZnByZXByb2Nlc3NlZDoKLSAgICAgICBjYXNlIE9QVF9mbHRyYW5zX291dHB1dF9saXN0XzoKLSAgICAgICBjYXNlIE9QVF9mcmVzb2x1dGlvbl86Ci0rICAgICAgY2FzZSBPUFRfZmRlYnVnX3ByZWZpeF9tYXBfOgotIAkvKiBJZ25vcmUgdGhlc2UuICAqLwotIAljb250aW51ZTsKLSAgICAgICBkZWZhdWx0OgotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNzItc3VwcG9ydC1mZmlsZS1wcmVmaXgtbWFwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDcyLXN1cHBvcnQtZmZpbGUtcHJlZml4LW1hcC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTgwOWE2YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNzItc3VwcG9ydC1mZmlsZS1wcmVmaXgtbWFwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjg0ICswLDAgQEAKLUZyb20gZTg2M2JlNzk4ZWQxMzMxMmEwZmFmMGI5NjEyNzVmMjExYTgxMjNhYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMTcgTWFyIDIwMTYgMDA6MzI6MTcgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gZ2NjL2xpYmNwcDogc3VwcG9ydCAtZmZpbGUtcHJlZml4LW1hcD08b2xkPj08bmV3PgotCi1TaW1pbGFyIC1mZGVidWctcHJlZml4LW1hcCwgYWRkIG9wdGlvbiAtZmZpbGUtcHJlZml4LW1hcCB0byBtYXAgb25lCi1kaXJlY3RvcnkgbmFtZSAob2xkKSB0byBhbm90aGVyIChuZXcpIGluIF9fRklMRV9fLCBfX0JBU0VfRklMRV9fIGFuZAotX19idWlsdGluX0ZJTEUgKCkuCi0KLWh0dHBzOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTcwMjY4Ci0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtnY2MtcGF0Y2hlc0BnY2MuZ251Lm9yZ10KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGdjYy9jLWZhbWlseS9jLW9wdHMuYyAgICAgfCAgNiArKysrCi0gZ2NjL2MtZmFtaWx5L2Mub3B0ICAgICAgICB8ICA0ICsrKwotIGdjYy9kd2FyZjJvdXQuYyAgICAgICAgICAgfCAgMSArCi0gZ2NjL2dpbXBsaWZ5LmMgICAgICAgICAgICB8ICAyICsrCi0gbGliY3BwL01ha2VmaWxlLmluICAgICAgICB8IDEwICsrKy0tLQotIGxpYmNwcC9maWxlLW1hcC5jICAgICAgICAgfCA5MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGxpYmNwcC9pbmNsdWRlL2ZpbGUtbWFwLmggfCAzMCArKysrKysrKysrKysrKysrCi0gbGliY3BwL21hY3JvLmMgICAgICAgICAgICB8ICAyICsrCi0gOCBmaWxlcyBjaGFuZ2VkLCAxNDIgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGliY3BwL2ZpbGUtbWFwLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGliY3BwL2luY2x1ZGUvZmlsZS1tYXAuaAotCi1kaWZmIC0tZ2l0IGEvZ2NjL2MtZmFtaWx5L2Mtb3B0cy5jIGIvZ2NjL2MtZmFtaWx5L2Mtb3B0cy5jCi1pbmRleCBkZDVmZDIzLi45YzAwNGExIDEwMDY0NAotLS0tIGEvZ2NjL2MtZmFtaWx5L2Mtb3B0cy5jCi0rKysgYi9nY2MvYy1mYW1pbHkvYy1vcHRzLmMKLUBAIC0zNiw2ICszNiw3IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gI2luY2x1ZGUgIm9wdGlvbnMuaCIKLSAjaW5jbHVkZSAicGx1Z2luLmgiCQkvKiBGb3IgUExVR0lOX0lOQ0xVREVfRklMRSBldmVudC4gICovCi0gI2luY2x1ZGUgIm1rZGVwcy5oIgotKyNpbmNsdWRlICJmaWxlLW1hcC5oIgotICNpbmNsdWRlICJjLXRhcmdldC5oIgotICNpbmNsdWRlICJ0bS5oIgkJCS8qIEZvciBCWVRFU19CSUdfRU5ESUFOLAotIAkJCQkgICBET0xMQVJTX0lOX0lERU5USUZJRVJTLAotQEAgLTU1Myw2ICs1NTQsMTEgQEAgY19jb21tb25faGFuZGxlX29wdGlvbiAoc2l6ZV90IHNjb2RlLCBjb25zdCBjaGFyICphcmcsIGludCB2YWx1ZSwKLSAgICAgICBjcHBfb3B0cy0+bmFycm93X2NoYXJzZXQgPSBhcmc7Ci0gICAgICAgYnJlYWs7Ci0gCi0rICAgIGNhc2UgT1BUX2ZmaWxlX3ByZWZpeF9tYXBfOgotKyAgICAgIGlmIChhZGRfZmlsZV9wcmVmaXhfbWFwIChhcmcpIDwgMCkKLSsgICAgICAgIGVycm9yICgiaW52YWxpZCBhcmd1bWVudCAlcXMgdG8gLWZmaWxlLXByZWZpeC1tYXAiLCBhcmcpOwotKyAgICAgIGJyZWFrOwotKwotICAgICBjYXNlIE9QVF9md2lkZV9leGVjX2NoYXJzZXRfOgotICAgICAgIGNwcF9vcHRzLT53aWRlX2NoYXJzZXQgPSBhcmc7Ci0gICAgICAgYnJlYWs7Ci1kaWZmIC0tZ2l0IGEvZ2NjL2MtZmFtaWx5L2Mub3B0IGIvZ2NjL2MtZmFtaWx5L2Mub3B0Ci1pbmRleCBmMjk1ODA1Li4zYTk5NjYyIDEwMDY0NAotLS0tIGEvZ2NjL2MtZmFtaWx5L2Mub3B0Ci0rKysgYi9nY2MvYy1mYW1pbHkvYy5vcHQKLUBAIC05MjgsNiArOTI4LDEwIEBAIGZleGVjLWNoYXJzZXQ9Ci0gQyBPYmpDIEMrKyBPYmpDKysgSm9pbmVkIFJlamVjdE5lZ2F0aXZlCi0gLWZleGVjLWNoYXJzZXQ9PGNzZXQ+CUNvbnZlcnQgYWxsIHN0cmluZ3MgYW5kIGNoYXJhY3RlciBjb25zdGFudHMgdG8gY2hhcmFjdGVyIHNldCA8Y3NldD4KLSAKLStmZmlsZS1wcmVmaXgtbWFwPQotK0MgT2JqQyBDKysgT2JqQysrIEpvaW5lZCBSZWplY3ROZWdhdGl2ZQotKy1mZmlsZS1wcmVmaXgtbWFwPTxvbGQ9bmV3PglNYXAgb25lIGRpcmVjdG9yeSBuYW1lIHRvIGFub3RoZXIgaW4gX19GSUxFX18sIF9fQkFTRV9GSUxFX18gYW5kIF9fYnVpbHRpbl9GSUxFICgpCi0rCi0gZmV4dGVuZGVkLWlkZW50aWZpZXJzCi0gQyBPYmpDIEMrKyBPYmpDKysKLSBQZXJtaXQgdW5pdmVyc2FsIGNoYXJhY3RlciBuYW1lcyAoXFx1IGFuZCBcXFUpIGluIGlkZW50aWZpZXJzCi1kaWZmIC0tZ2l0IGEvZ2NjL2R3YXJmMm91dC5jIGIvZ2NjL2R3YXJmMm91dC5jCi1pbmRleCA5OWJmNmUyLi4zZTU4Y2ZkIDEwMDY0NAotLS0tIGEvZ2NjL2R3YXJmMm91dC5jCi0rKysgYi9nY2MvZHdhcmYyb3V0LmMKLUBAIC0xOTE5OSw2ICsxOTE5OSw3IEBAIGdlbl9wcm9kdWNlcl9zdHJpbmcgKHZvaWQpCi0gICAgICAgY2FzZSBPUFRfZmx0cmFuc19vdXRwdXRfbGlzdF86Ci0gICAgICAgY2FzZSBPUFRfZnJlc29sdXRpb25fOgotICAgICAgIGNhc2UgT1BUX2ZkZWJ1Z19wcmVmaXhfbWFwXzoKLSsgICAgICBjYXNlIE9QVF9mZmlsZV9wcmVmaXhfbWFwXzoKLSAJLyogSWdub3JlIHRoZXNlLiAgKi8KLSAJY29udGludWU7Ci0gICAgICAgZGVmYXVsdDoKLWRpZmYgLS1naXQgYS9nY2MvZ2ltcGxpZnkuYyBiL2djYy9naW1wbGlmeS5jCi1pbmRleCA4OWU3MzM0Li5hN2E5N2MwIDEwMDY0NAotLS0tIGEvZ2NjL2dpbXBsaWZ5LmMKLSsrKyBiL2djYy9naW1wbGlmeS5jCi1AQCAtNTksNiArNTksNyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotICNpbmNsdWRlICJvbXAtbG93LmgiCi0gI2luY2x1ZGUgImdpbXBsZS1sb3cuaCIKLSAjaW5jbHVkZSAiY2lsay5oIgotKyNpbmNsdWRlICJmaWxlLW1hcC5oIgotIAotICNpbmNsdWRlICJsYW5naG9va3MtZGVmLmgiCS8qIEZJWE1FOiBmb3IgbGhkX3NldF9kZWNsX2Fzc2VtYmxlcl9uYW1lICovCi0gI2luY2x1ZGUgInRyZWUtcGFzcy5oIgkJLyogRklYTUU6IG9ubHkgZm9yIFBST1BfZ2ltcGxlX2FueSAqLwotQEAgLTIyODgsNiArMjI4OSw3IEBAIGdpbXBsaWZ5X2NhbGxfZXhwciAodHJlZSAqZXhwcl9wLCBnaW1wbGVfc2VxICpwcmVfcCwgYm9vbCB3YW50X3ZhbHVlKQotICAgICAgIGNhc2UgQlVJTFRfSU5fRklMRToKLSAJewotIAkgIGV4cGFuZGVkX2xvY2F0aW9uIGxvYyA9IGV4cGFuZF9sb2NhdGlvbiAoRVhQUl9MT0NBVElPTiAoKmV4cHJfcCkpOwotKwkgIGxvYy5maWxlID0gcmVtYXBfZmlsZV9maWxlbmFtZSAobG9jLmZpbGUpOwotIAkgICpleHByX3AgPSBidWlsZF9zdHJpbmdfbGl0ZXJhbCAoc3RybGVuIChsb2MuZmlsZSkgKyAxLCBsb2MuZmlsZSk7Ci0gCSAgcmV0dXJuIEdTX09LOwotIAl9Ci1kaWZmIC0tZ2l0IGEvbGliY3BwL01ha2VmaWxlLmluIGIvbGliY3BwL01ha2VmaWxlLmluCi1pbmRleCA1NTYxYzk3Li41MDE3MjU2IDEwMDY0NAotLS0tIGEvbGliY3BwL01ha2VmaWxlLmluCi0rKysgYi9saWJjcHAvTWFrZWZpbGUuaW4KLUBAIC04NCwxMiArODQsMTIgQEAgREVQTU9ERSA9ICQoQ1hYREVQTU9ERSkKLSAKLSAKLSBsaWJjcHBfYV9PQkpTID0gY2hhcnNldC5vIGRpcmVjdGl2ZXMubyBkaXJlY3RpdmVzLW9ubHkubyBlcnJvcnMubyBcCi0tCWV4cHIubyBmaWxlcy5vIGlkZW50aWZpZXJzLm8gaW5pdC5vIGxleC5vIGxpbmUtbWFwLm8gbWFjcm8ubyBcCi0tCW1rZGVwcy5vIHBjaC5vIHN5bXRhYi5vIHRyYWRpdGlvbmFsLm8KLSsJZXhwci5vIGZpbGUtbWFwLm8gZmlsZXMubyBpZGVudGlmaWVycy5vIGluaXQubyBsZXgubyBsaW5lLW1hcC5vIFwKLSsJbWFjcm8ubyBta2RlcHMubyBwY2gubyBzeW10YWIubyB0cmFkaXRpb25hbC5vCi0gCi0gbGliY3BwX2FfU09VUkNFUyA9IGNoYXJzZXQuYyBkaXJlY3RpdmVzLmMgZGlyZWN0aXZlcy1vbmx5LmMgZXJyb3JzLmMgXAotLQlleHByLmMgZmlsZXMuYyBpZGVudGlmaWVycy5jIGluaXQuYyBsZXguYyBsaW5lLW1hcC5jIG1hY3JvLmMgXAotLQlta2RlcHMuYyBwY2guYyBzeW10YWIuYyB0cmFkaXRpb25hbC5jCi0rCWV4cHIuYyBmaWxlLW1hcC5jIGZpbGVzLmMgaWRlbnRpZmllcnMuYyBpbml0LmMgbGV4LmMgbGluZS1tYXAuYyBcCi0rCW1hY3JvLmMgbWtkZXBzLmMgcGNoLmMgc3ltdGFiLmMgdHJhZGl0aW9uYWwuYwotIAotIGFsbDogbGliY3BwLmEgJChVU0VEX0NBVEFMT0dTKQotIAotQEAgLTI2Myw3ICsyNjMsNyBAQCBwby8kKFBBQ0tBR0UpLnBvdDogJChsaWJjcHBfYV9TT1VSQ0VTKQotIAotIFRBR1NfU09VUkNFUyA9ICQobGliY3BwX2FfU09VUkNFUykgaW50ZXJuYWwuaCB1Y25pZC5oIFwKLSAgICAgaW5jbHVkZS9saW5lLW1hcC5oIGluY2x1ZGUvc3ltdGFiLmggaW5jbHVkZS9jcHAtaWQtZGF0YS5oIFwKLS0gICAgaW5jbHVkZS9jcHBsaWIuaCBpbmNsdWRlL21rZGVwcy5oIHN5c3RlbS5oCi0rICAgIGluY2x1ZGUvY3BwbGliLmggaW5jbHVkZS9ta2RlcHMuaCBzeXN0ZW0uaCBpbmNsdWRlL2ZpbGUtbWFwLmgKLSAKLSBUQUdTOiAkKFRBR1NfU09VUkNFUykKLSAJY2QgJChzcmNkaXIpICYmIGV0YWdzICQoVEFHU19TT1VSQ0VTKQotZGlmZiAtLWdpdCBhL2xpYmNwcC9maWxlLW1hcC5jIGIvbGliY3BwL2ZpbGUtbWFwLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4wNGU4NTFiCi0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJjcHAvZmlsZS1tYXAuYwotQEAgLTAsMCArMSw5MiBAQAotKy8qIE1hcCBvbmUgZGlyZWN0b3J5IG5hbWUgdG8gYW5vdGhlciBpbiBfX0ZJTEVfXywgX19CQVNFX0ZJTEVfXwotKyAgIGFuZCBfX2J1aWx0aW5fRklMRSAoKS4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLStUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotK3VuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotK0ZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkKLStsYXRlciB2ZXJzaW9uLgotKwotK1RoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotK2J1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotK0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSthbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotKzxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsgSW4gb3RoZXIgd29yZHMsIHlvdSBhcmUgd2VsY29tZSB0byB1c2UsIHNoYXJlIGFuZCBpbXByb3ZlIHRoaXMgcHJvZ3JhbS4KLSsgWW91IGFyZSBmb3JiaWRkZW4gdG8gZm9yYmlkIGFueW9uZSBlbHNlIHRvIHVzZSwgc2hhcmUgYW5kIGltcHJvdmUKLSsgd2hhdCB5b3UgZ2l2ZSB0aGVtLiAgIEhlbHAgc3RhbXAgb3V0IHNvZnR3YXJlLWhvYXJkaW5nISAgKi8KLSsKLSsjaW5jbHVkZSAiY29uZmlnLmgiCi0rI2luY2x1ZGUgInN5c3RlbS5oIgotKyNpbmNsdWRlICJmaWxlLW1hcC5oIgotKwotKy8qIFN0cnVjdHVyZSByZWNvcmRpbmcgdGhlIG1hcHBpbmcgZnJvbSBzb3VyY2UgZmlsZSBhbmQgZGlyZWN0b3J5Ci0rICAgbmFtZXMgYXQgY29tcGlsZSB0aW1lIHRvIF9fRklMRV9fICovCi0rdHlwZWRlZiBzdHJ1Y3QgZmlsZV9wcmVmaXhfbWFwCi0rewotKyAgY29uc3QgY2hhciAqb2xkX3ByZWZpeDsKLSsgIGNvbnN0IGNoYXIgKm5ld19wcmVmaXg7Ci0rICBzaXplX3Qgb2xkX2xlbjsKLSsgIHNpemVfdCBuZXdfbGVuOwotKyAgc3RydWN0IGZpbGVfcHJlZml4X21hcCAqbmV4dDsKLSt9IGZpbGVfcHJlZml4X21hcDsKLSsKLSsvKiBMaW5rZWQgbGlzdCBvZiBzdWNoIHN0cnVjdHVyZXMuICAqLwotK3N0YXRpYyBmaWxlX3ByZWZpeF9tYXAgKmZpbGVfcHJlZml4X21hcHM7Ci0rCi0rLyogUmVjb3JkIHByZWZpeCBtYXBwaW5nIG9mIF9fRklMRV9fLiAgQVJHIGlzIHRoZSBhcmd1bWVudCB0bwotKyAgIC1mZmlsZS1wcmVmaXgtbWFwIGFuZCBtdXN0IGJlIG9mIHRoZSBmb3JtIE9MRD1ORVcuICAqLwotK2ludAotK2FkZF9maWxlX3ByZWZpeF9tYXAgKGNvbnN0IGNoYXIgKmFyZykKLSt7Ci0rICBmaWxlX3ByZWZpeF9tYXAgKm1hcDsKLSsgIGNvbnN0IGNoYXIgKnA7Ci0rCi0rICBwID0gc3RyY2hyIChhcmcsICc9Jyk7Ci0rICBpZiAoIXApCi0rICB7Ci0rICAgICAgZnByaW50ZihzdGRlcnIsICJpbnZhbGlkIGFyZ3VtZW50ICVxcyB0byAtZmZpbGUtcHJlZml4LW1hcCIsIGFyZyk7Ci0rICAgICAgcmV0dXJuIC0xOwotKyAgfQotKyAgbWFwID0gWE5FVyAoZmlsZV9wcmVmaXhfbWFwKTsKLSsgIG1hcC0+b2xkX3ByZWZpeCA9IHhzdHJuZHVwIChhcmcsIHAgLSBhcmcpOwotKyAgbWFwLT5vbGRfbGVuID0gcCAtIGFyZzsKLSsgIHArKzsKLSsgIG1hcC0+bmV3X3ByZWZpeCA9IHhzdHJkdXAgKHApOwotKyAgbWFwLT5uZXdfbGVuID0gc3RybGVuIChwKTsKLSsgIG1hcC0+bmV4dCA9IGZpbGVfcHJlZml4X21hcHM7Ci0rICBmaWxlX3ByZWZpeF9tYXBzID0gbWFwOwotKwotKyAgcmV0dXJuIDA7Ci0rfQotKwotKy8qIFBlcmZvcm0gdXNlci1zcGVjaWZpZWQgbWFwcGluZyBvZiBfX0ZJTEVfXyBwcmVmaXhlcy4gIFJldHVybgotKyAgIHRoZSBuZXcgbmFtZSBjb3JyZXNwb25kaW5nIHRvIGZpbGVuYW1lLiAgKi8KLSsKLStjb25zdCBjaGFyICoKLStyZW1hcF9maWxlX2ZpbGVuYW1lIChjb25zdCBjaGFyICpmaWxlbmFtZSkKLSt7Ci0rICBmaWxlX3ByZWZpeF9tYXAgKm1hcDsKLSsgIGNoYXIgKnM7Ci0rICBjb25zdCBjaGFyICpuYW1lOwotKyAgc2l6ZV90IG5hbWVfbGVuOwotKwotKyAgZm9yIChtYXAgPSBmaWxlX3ByZWZpeF9tYXBzOyBtYXA7IG1hcCA9IG1hcC0+bmV4dCkKLSsgICAgaWYgKGZpbGVuYW1lX25jbXAgKGZpbGVuYW1lLCBtYXAtPm9sZF9wcmVmaXgsIG1hcC0+b2xkX2xlbikgPT0gMCkKLSsgICAgICBicmVhazsKLSsgIGlmICghbWFwKQotKyAgICByZXR1cm4gZmlsZW5hbWU7Ci0rICBuYW1lID0gZmlsZW5hbWUgKyBtYXAtPm9sZF9sZW47Ci0rICBuYW1lX2xlbiA9IHN0cmxlbiAobmFtZSkgKyAxOwotKyAgcyA9IChjaGFyICopIGFsbG9jYSAobmFtZV9sZW4gKyBtYXAtPm5ld19sZW4pOwotKyAgbWVtY3B5IChzLCBtYXAtPm5ld19wcmVmaXgsIG1hcC0+bmV3X2xlbik7Ci0rICBtZW1jcHkgKHMgKyBtYXAtPm5ld19sZW4sIG5hbWUsIG5hbWVfbGVuKTsKLSsKLSsgIHJldHVybiB4c3RyZHVwIChzKTsKLSt9Ci0rCi0rCi1kaWZmIC0tZ2l0IGEvbGliY3BwL2luY2x1ZGUvZmlsZS1tYXAuaCBiL2xpYmNwcC9pbmNsdWRlL2ZpbGUtbWFwLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5lNmY4Y2JmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJjcHAvaW5jbHVkZS9maWxlLW1hcC5oCi1AQCAtMCwwICsxLDMwIEBACi0rLyogTWFwIG9uZSBkaXJlY3RvcnkgbmFtZSB0byBhbm90aGVyIGluIF9fRklMRV9fLCBfX0JBU0VfRklMRV9fCi0rICAgYW5kIF9fYnVpbHRpbl9GSUxFICgpLgotKyAgIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotK1RoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91ciBvcHRpb24pIGFueQotK2xhdGVyIHZlcnNpb24uCi0rCi0rVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLStNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLStZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotK2Fsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0rPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotKyBJbiBvdGhlciB3b3JkcywgeW91IGFyZSB3ZWxjb21lIHRvIHVzZSwgc2hhcmUgYW5kIGltcHJvdmUgdGhpcyBwcm9ncmFtLgotKyBZb3UgYXJlIGZvcmJpZGRlbiB0byBmb3JiaWQgYW55b25lIGVsc2UgdG8gdXNlLCBzaGFyZSBhbmQgaW1wcm92ZQotKyB3aGF0IHlvdSBnaXZlIHRoZW0uICAgSGVscCBzdGFtcCBvdXQgc29mdHdhcmUtaG9hcmRpbmchICAqLwotKwotKyNpZm5kZWYgTElCQ1BQX0ZJTEVfTUFQX0gKLSsjZGVmaW5lIExJQkNQUF9GSUxFX01BUF9ICi0rCi0rY29uc3QgY2hhciAqIHJlbWFwX2ZpbGVfZmlsZW5hbWUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKLSsKLStpbnQgYWRkX2ZpbGVfcHJlZml4X21hcCAoY29uc3QgY2hhciAqYXJnKTsKLSsKLSsjZW5kaWYgLyogIUxJQkNQUF9GSUxFX01BUF9IICAqLwotZGlmZiAtLWdpdCBhL2xpYmNwcC9tYWNyby5jIGIvbGliY3BwL21hY3JvLmMKLWluZGV4IDExZTUwZjQuLjVjNmY5MGUgMTAwNjQ0Ci0tLS0gYS9saWJjcHAvbWFjcm8uYwotKysrIGIvbGliY3BwL21hY3JvLmMKLUBAIC0yNiw2ICsyNiw3IEBAIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gI2luY2x1ZGUgInN5c3RlbS5oIgotICNpbmNsdWRlICJjcHBsaWIuaCIKLSAjaW5jbHVkZSAiaW50ZXJuYWwuaCIKLSsjaW5jbHVkZSAiZmlsZS1tYXAuaCIKLSAKLSB0eXBlZGVmIHN0cnVjdCBtYWNyb19hcmcgbWFjcm9fYXJnOwotIC8qIFRoaXMgc3RydWN0dXJlIHJlcHJlc2VudHMgdGhlIHRva2VucyBvZiBhIG1hY3JvIGFyZ3VtZW50LiAgVGhlc2UKLUBAIC0yODgsNiArMjg5LDcgQEAgX2NwcF9idWlsdGluX21hY3JvX3RleHQgKGNwcF9yZWFkZXIgKnBmaWxlLCBjcHBfaGFzaG5vZGUgKm5vZGUpCi0gCSAgICBpZiAoIW5hbWUpCi0gCSAgICAgIGFib3J0ICgpOwotIAkgIH0KLSsJbmFtZSA9IHJlbWFwX2ZpbGVfZmlsZW5hbWUgKG5hbWUpOwotIAlsZW4gPSBzdHJsZW4gKG5hbWUpOwotIAlidWYgPSBfY3BwX3VuYWxpZ25lZF9hbGxvYyAocGZpbGUsIGxlbiAqIDIgKyAzKTsKLSAJcmVzdWx0ID0gYnVmOwotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNzMtUmV1c2UtZmRlYnVnLXByZWZpeC1tYXAtdG8tcmVwbGFjZS1mZmlsZS1wcmVmaXgtbWFwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDczLVJldXNlLWZkZWJ1Zy1wcmVmaXgtbWFwLXRvLXJlcGxhY2UtZmZpbGUtcHJlZml4LW1hcC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTRlNDVlZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNzMtUmV1c2UtZmRlYnVnLXByZWZpeC1tYXAtdG8tcmVwbGFjZS1mZmlsZS1wcmVmaXgtbWFwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotRnJvbSA1ZTEwYmFmZjg0MDM4ZDI2ZGMzZDU5YjI0MTJiYTFkYjkyY2I4Mjc0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCAxNyBNYXIgMjAxNiAwMDozNDowMSAtMDQwMAotU3ViamVjdDogW1BBVENIIDIvMl0gUmV1c2UgLWZkZWJ1Zy1wcmVmaXgtbWFwIHRvIHJlcGxhY2UgLWZmaWxlLXByZWZpeC1tYXAKLQotVGhlIG9lLWNvcmUgbWF5IHVzZSBleHRlcm5hbCB0b29sY2hhaW4gdG8gY29tcGlsZSwKLXdoaWNoIG1heSBub3Qgc3VwcG9ydCAtZmZpbGUtcHJlZml4LW1hcC4KLQotU2luY2Ugd2UgdXNlIC1mZGVidWctcHJlZml4LW1hcCB0byBkbyB0aGUgc2FtZSB0aGluZywKLXNvIHdlIGNvdWxkIHJldXNlIGl0IHRvIHJlcGxhY2UgLWZmaWxlLXByZWZpeC1tYXAuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZVtvZS1jb3JlIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBnY2Mvb3B0cy1nbG9iYWwuYyB8IDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2djYy9vcHRzLWdsb2JhbC5jIGIvZ2NjL29wdHMtZ2xvYmFsLmMKLWluZGV4IDExMTg4NGIuLjAzN2Y2YzggMTAwNjQ0Ci0tLS0gYS9nY2Mvb3B0cy1nbG9iYWwuYwotKysrIGIvZ2NjL29wdHMtZ2xvYmFsLmMKLUBAIC00Miw2ICs0Miw3IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gI2luY2x1ZGUgInRvcGxldi5oIgotICNpbmNsdWRlICJ0cmVlLXBhc3MuaCIKLSAjaW5jbHVkZSAiY29udGV4dC5oIgotKyNpbmNsdWRlICJmaWxlLW1hcC5oIgotIAotIHR5cGVkZWYgY29uc3QgY2hhciAqY29uc3RfY2hhcl9wOyAvKiBGb3IgREVGX1ZFQ19QLiAgKi8KLSAKLUBAIC0zNTQsNiArMzU1LDkgQEAgaGFuZGxlX2NvbW1vbl9kZWZlcnJlZF9vcHRpb25zICh2b2lkKQotIAotIAljYXNlIE9QVF9mZGVidWdfcHJlZml4X21hcF86Ci0gCSAgYWRkX2RlYnVnX3ByZWZpeF9tYXAgKG9wdC0+YXJnKTsKLSsKLSsJICAvKiBSZXVzZSAtZmRlYnVnLXByZWZpeC1tYXAgdG8gcmVwbGFjZSAtZmZpbGUtcHJlZml4LW1hcCAqLwotKwkgIGFkZF9maWxlX3ByZWZpeF9tYXAgKG9wdC0+YXJnKTsKLSAJICBicmVhazsKLSAKLSAJY2FzZSBPUFRfZmR1bXBfOgotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNzQtZmRlYnVnLXByZWZpeC1tYXAtc3VwcG9ydC10by1yZW1hcC1yZWxhdGl2ZS1wYXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTQuOS8wMDc0LWZkZWJ1Zy1wcmVmaXgtbWFwLXN1cHBvcnQtdG8tcmVtYXAtcmVsYXRpdmUtcGF0aC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGI5MWZkYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNC45LzAwNzQtZmRlYnVnLXByZWZpeC1tYXAtc3VwcG9ydC10by1yZW1hcC1yZWxhdGl2ZS1wYXRoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotRnJvbSAyODlhZDI5NjlhNTk2NmM2MDNiZjY5MjhjZTQ0MmRiNzRjNGNiYjI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCAyNCBNYXIgMjAxNiAxMToyMzoxNCAtMDQwMAotU3ViamVjdDogW1BBVENIXSBnY2MvZmluYWwuYzogLWZkZWJ1Zy1wcmVmaXgtbWFwIHN1cHBvcnQgdG8gcmVtYXAgc291cmNlcyB3aXRoCi0gcmVsYXRpdmUgcGF0aAotCi1QUiBvdGhlci83MDQyOAotKiBmaW5hbC5jIChyZW1hcF9kZWJ1Z19maWxlbmFtZSk6IFVzZSBscmVhbHBhdGggdG8gdHJhbnNsYXRlCi1yZWxhdGl2ZSBwYXRoIGJlZm9yZSByZW1hcHBpbmcKLQotaHR0cHM6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NzA0MjgKLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtnY2MtcGF0Y2hlc0BnY2MuZ251Lm9yZ10KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi1kaWZmIC0tZ2l0IGEvZ2NjL2ZpbmFsLmMgYi9nY2MvZmluYWwuYwotaW5kZXggNTVjZjUwOS4uYzM1OTRjMiAxMDA2NDQKLS0tLSBhL2djYy9maW5hbC5jCi0rKysgYi9nY2MvZmluYWwuYwotQEAgLTE1NTQsMTYgKzE1NTQsMjUgQEAgcmVtYXBfZGVidWdfZmlsZW5hbWUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotICAgY29uc3QgY2hhciAqbmFtZTsKLSAgIHNpemVfdCBuYW1lX2xlbjsKLSAKLSsgIC8qIFN1cHBvcnQgdG8gcmVtYXAgZmlsZW5hbWUgd2l0aCByZWxhdGl2ZSBwYXRoICAqLwotKyAgY2hhciAqcmVhbHBhdGggPSBscmVhbHBhdGggKGZpbGVuYW1lKTsKLSsgIGlmIChyZWFscGF0aCA9PSBOVUxMKQotKyAgICByZXR1cm4gZmlsZW5hbWU7Ci0rCi0gICBmb3IgKG1hcCA9IGRlYnVnX3ByZWZpeF9tYXBzOyBtYXA7IG1hcCA9IG1hcC0+bmV4dCkKLS0gICAgaWYgKGZpbGVuYW1lX25jbXAgKGZpbGVuYW1lLCBtYXAtPm9sZF9wcmVmaXgsIG1hcC0+b2xkX2xlbikgPT0gMCkKLSsgICAgaWYgKGZpbGVuYW1lX25jbXAgKHJlYWxwYXRoLCBtYXAtPm9sZF9wcmVmaXgsIG1hcC0+b2xkX2xlbikgPT0gMCkKLSAgICAgICBicmVhazsKLSAgIGlmICghbWFwKQotLSAgICByZXR1cm4gZmlsZW5hbWU7Ci0tICBuYW1lID0gZmlsZW5hbWUgKyBtYXAtPm9sZF9sZW47Ci0rICAgIHsKLSsgICAgICBmcmVlIChyZWFscGF0aCk7Ci0rICAgICAgcmV0dXJuIGZpbGVuYW1lOwotKyAgICB9Ci0rICBuYW1lID0gcmVhbHBhdGggKyBtYXAtPm9sZF9sZW47Ci0gICBuYW1lX2xlbiA9IHN0cmxlbiAobmFtZSkgKyAxOwotICAgcyA9IChjaGFyICopIGFsbG9jYSAobmFtZV9sZW4gKyBtYXAtPm5ld19sZW4pOwotICAgbWVtY3B5IChzLCBtYXAtPm5ld19wcmVmaXgsIG1hcC0+bmV3X2xlbik7Ci0gICBtZW1jcHkgKHMgKyBtYXAtPm5ld19sZW4sIG5hbWUsIG5hbWVfbGVuKTsKLSsgIGZyZWUgKHJlYWxwYXRoKTsKLSAgIHJldHVybiBnZ2Nfc3RyZHVwIChzKTsKLSB9Ci0gDAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS4zLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODA4YmUxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAKLXJlcXVpcmUgZ2NjLWNvbW1vbi5pbmMKLQotIyBUaGlyZCBkaWdpdCBpbiBQViBzaG91bGQgYmUgaW5jcmVtZW50ZWQgYWZ0ZXIgYSBtaW5vciByZWxlYXNlCi0KLVBWID0gIjUuMy4wIgotCi0jU05BUCA9ICI1LTIwMTUwNDA1IgotCi0jIEJJTlYgc2hvdWxkIGJlIGluY3JlbWVudGVkIHRvIGEgcmV2aXNpb24gYWZ0ZXIgYSBtaW5vciBnY2MgcmVsZWFzZQotCi1CSU5WID0gIjUuMy4wIgotCi1GSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS9nY2MtNS4zOiR7RklMRV9ESVJOQU1FfS9nY2MtNS4zL2JhY2twb3J0OiIKLQotREVQRU5EUyA9KyAibXBmciBnbXAgbGlibXBjIHpsaWIiCi1OQVRJVkVERVBTID0gIm1wZnItbmF0aXZlIGdtcC1uYXRpdmUgbGlibXBjLW5hdGl2ZSB6bGliLW5hdGl2ZSIKLQotTElDRU5TRSA9ICJHUEwtMy4wLXdpdGgtR0NDLWV4Y2VwdGlvbiAmIEdQTHYzIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gIlwKLSAgICBmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAotICAgIGZpbGU6Ly9DT1BZSU5HMzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgIGZpbGU6Ly9DT1BZSU5HMy5MSUI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IFwKLSAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIFwKLSAgICBmaWxlOi8vQ09QWUlORy5SVU5USU1FO21kNT1mZTYwZDg3MDQ4NTY3ZDRmZThjOGEwZWQyNDQ4YmNjOCBcCi0iCi0jQkFTRVVSSSA9ICJodHRwOi8vd3d3Lm5ldGd1bGwuY29tL2djYy9zbmFwc2hvdHMvJHtTTkFQfS9nY2MtJHtTTkFQfS50YXIuYnoyIgotQkFTRVVSSSA9ICIke0dOVV9NSVJST1J9L2djYy9nY2MtJHtQVn0vZ2NjLSR7UFZ9LnRhci5iejIiCi0KLVNSQ19VUkkgPSAiXAotICAgICAgICAgICAke0JBU0VVUkl9IFwKLSAgICAgICAgICAgJHtCQUNLUE9SVFN9IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZ2NjLTQuMy4xLUFSQ0hfRkxBR1NfRk9SX1RBUkdFVC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLXVjbGliYy1jb25mLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtZ2NjLXVjbGliYy1sb2NhbGUtY3R5cGVfdG91cGxvd190LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtdWNsaWJjLWxvY2FsZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LXVjbGliYy1sb2NhbGUtbm9fX3gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNi11Y2xpYmMtbG9jYWxlLXdjaGFyX2ZpeC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA3LXVjbGliYy1sb2NhbGUtdXBkYXRlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDgtbWlzc2luZy1leGVjaW5mb19oLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDktYzk5LXNucHJpbnRmLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTAtZ2NjLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMS1nY2MtcG9pc29uLWRpci1leHRlbmQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMi1nY2MtNC4zLjMtU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEzLTY0LWJpdC1tdWx0aWxpYi1oYWNrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTQtb3B0aW9uYWwtbGlic3RkYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE1LWdjYy1kaXNhYmxlLU1BU0tfUkVMQVhfUElDX0NBTExTLWJpdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE2LUNPTExFQ1RfR0NDX09QVElPTlMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNy1Vc2UtdGhlLWRlZmF1bHRzLmgtaW4tQi1pbnN0ZWFkLW9mLVMtYW5kLXQtb2UtaW4tQi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE4LWZvcnRyYW4tY3Jvc3MtY29tcGlsZS1oYWNrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTktbGliZ2NjLXNqbGotY2hlY2sucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMC1jcHAtaG9ub3Itc3lzcm9vdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIxLU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMi1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjMtZ2NjLUZpeC1hcmd1bWVudC1saXN0LXRvby1sb25nLWVycm9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjQtRGlzYWJsZS1zZHQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNS1saWJ0b29sLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjYtZ2NjLWFybXY0LXBhc3MtZml4LXY0YngtdG8tbGlua2VyLXRvLXN1cHBvcnQtRUFCSS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI3LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyOC1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjktZXhwb3J0LUNQUC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDMwLUVuYWJsZS1TUEUtQWx0aVZlYy1nZW5lcmF0aW9uLW9uLXBvd2VwYy1saW51eC10YXJnZXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzMS1EaXNhYmxlLXRoZS1NVUxUSUxJQl9PU0RJUk5BTUVTLWFuZC1vdGhlci1tdWx0aWxpYi1vLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzItRW5zdXJlLXRhcmdldC1nY2MtaGVhZGVycy1jYW4tYmUtaW5jbHVkZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzMy1nY2MtNC44LXdvbi10LWJ1aWxkLXdpdGgtZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzQtRG9uLXQtc2VhcmNoLWhvc3QtZGlyZWN0b3J5LWR1cmluZy1yZWxpbmstaWYtaW5zdF9wci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDM1LURvbnQtbGluay10aGUtcGx1Z2lucy13aXRoLWxpYmdvbXAtZXhwbGljaXRseS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDM2LVVzZS1TWVNURU1MSUJTX0RJUi1yZXBsYWNlbWVudC1pbnN0ZWFkLW9mLWhhcmRjb2RpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzNy1hYXJjaDY0LUFkZC1zdXBwb3J0LWZvci1tdXNsLWxkc28ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzOC1maXgtZy1zeXNyb290LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzktbGliY2MxLWZpeC1saWJjYzEtcy1pbnN0YWxsLXBhdGgtYW5kLXJwYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNDAtaGFuZGxlLXN5c3Jvb3Qtc3VwcG9ydC1mb3ItbmF0aXZlc2RrLWdjYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDQxLVNlYXJjaC10YXJnZXQtc3lzcm9vdC1nY2MtdmVyc2lvbi1zcGVjaWZpYy1kaXJzLXdpdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA0Mi1GaXgtdmFyaW91cy1fRk9SX0JVSUxELWFuZC1yZWxhdGVkLXZhcmlhYmxlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDQzLWxpYnN0ZGMtU3VwcG9ydC1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNDQtQWRkaW5nLW1tdXNsLWFzLWEtbXVzbC1saWJjLXNwZWNpZmllci1hbmQtdGhlLW5lY2Vzcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDQ1LVN1cHBvcnQtZm9yLWFybS1saW51eC1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNDYtR2V0LXJpZC1vZi1ldmVyLWJyb2tlbi1maXhpbmNsdWRlcy1vbi1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNDctbmlvczItRGVmaW5lLU1VU0xfRFlOQU1JQ19MSU5LRVIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA0OC1zc3Bfbm9uc2hhcmVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNDktRGlzYWJsZS10aGUtd2Vhay1yZWZlcmVuY2UtbG9naWMtaW4tZ3Roci5oLWZvci1vcy1nZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDUwLXBvd2VycGMtcGFzcy1zZWN1cmUtcGx0LXRvLXRoZS1saW5rZXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA1MS1JZ25vcmUtZmRlYnVnLXByZWZpeC1tYXAtaW4tcHJvZHVjZXItc3RyaW5nLWJ5LURhbmllLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNTItbmlvczItdXNlLXJldC13aXRoLXIzMS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDUzLWV4cHIuYy1QUi10YXJnZXQtNjUzNTgtQXZvaWQtY2xvYmJlcmluZy1wYXJ0aWFsLWFyZ3UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA1NC1zdXBwb3J0LWZmaWxlLXByZWZpeC1tYXAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA1NS1SZXVzZS1mZGVidWctcHJlZml4LW1hcC10by1yZXBsYWNlLWZmaWxlLXByZWZpeC1tYXAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA1Ni1FbmFibGUtbGliYy1wcm92aWRlLXNzcC1hbmQtZ2NjX2N2X3RhcmdldF9kbF9pdGVyYXRlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNTctdW53aW5kLWZpeC1mb3ItbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDU4LWZkZWJ1Zy1wcmVmaXgtbWFwLXN1cHBvcnQtdG8tcmVtYXAtcmVsYXRpdmUtcGF0aC5wYXRjaCBcCi0iCi0KLUJBQ0tQT1JUUyA9ICIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjOTYxNmZkNDQ4Zjk4MDI1OWMzMWRlNjEzZTU3NTcxOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiODRmNTU5MmU5MjE4YjczZGJhZTYxMmI1MjUzMDM1YTdiMzRhOWExZjc2ODhkMmUxYmZhYWY3MjY3ZDVjNGRiIgotCi0jUyA9ICIke1RNUERJUn0vd29yay1zaGFyZWQvZ2NjLSR7UFZ9LSR7UFJ9L2djYy0ke1NOQVB9IgotUyA9ICIke1RNUERJUn0vd29yay1zaGFyZWQvZ2NjLSR7UFZ9LSR7UFJ9L2djYy0ke1BWfSIKLUIgPSAiJHtXT1JLRElSfS9nY2MtJHtQVn0vYnVpbGQuJHtIT1NUX1NZU30uJHtUQVJHRVRfU1lTfSIKLQotIyBMYW5ndWFnZSBPdmVycmlkZXMKLUZPUlRSQU4gPSAiIgotSkFWQSA9ICIiCi0KLUxUTyA9ICItLWVuYWJsZS1sdG8iCi0KLUVYVFJBX09FQ09ORl9CQVNFID0gIlwKLSAgICAke0xUT30gXAotICAgIC0tZW5hYmxlLWxpYnNzcCBcCi0gICAgLS1lbmFibGUtbGliaXRtIFwKLSAgICAtLWRpc2FibGUtYm9vdHN0cmFwIFwKLSAgICAtLWRpc2FibGUtbGlibXVkZmxhcCBcCi0gICAgLS13aXRoLXN5c3RlbS16bGliIFwKLSAgICAtLXdpdGgtbGlua2VyLWhhc2gtc3R5bGU9JHtMSU5LRVJfSEFTSF9TVFlMRX0gXAotICAgIC0tZW5hYmxlLWxpbmtlci1idWlsZC1pZCBcCi0gICAgLS13aXRoLXBwbD1ubyBcCi0gICAgLS13aXRoLWNsb29nPW5vIFwKLSAgICAtLWVuYWJsZS1jaGVja2luZz1yZWxlYXNlIFwKLSAgICAtLWVuYWJsZS1jaGVhZGVycz1jX2dsb2JhbCBcCi0gICAgLS13aXRob3V0LWlzbCBcCi0iCi0KLUVYVFJBX09FQ09ORl9JTklUSUFMID0gIlwKLSAgICAtLWRpc2FibGUtbGlibXVkZmxhcCBcCi0gICAgLS1kaXNhYmxlLWxpYmdvbXAgXAotICAgIC0tZGlzYWJsZS1saWJpdG0gXAotICAgIC0tZGlzYWJsZS1saWJxdWFkbWF0aCBcCi0gICAgLS13aXRoLXN5c3RlbS16bGliIFwKLSAgICAtLWRpc2FibGUtbHRvIFwKLSAgICAtLWRpc2FibGUtcGx1Z2luIFwKLSAgICAtLWVuYWJsZS1kZWNpbWFsLWZsb2F0PW5vIFwKLSAgICAtLXdpdGhvdXQtaXNsIFwKLSAgICBnY2NfY3ZfbGliY19wcm92aWRlc19zc3A9eWVzIFwKLSIKLQotRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLXVjbGliYyA9ICIgLS1kaXNhYmxlLWRlY2ltYWwtZmxvYXQgIgotCi1FWFRSQV9PRUNPTkZfUEFUSFMgPSAiXAotICAgIC0td2l0aC1neHgtaW5jbHVkZS1kaXI9L25vdC9leGlzdHt0YXJnZXRfaW5jbHVkZWRpcn0vYysrLyR7QklOVn0gXAotICAgIC0td2l0aC1zeXNyb290PS9ub3QvZXhpc3QgXAotICAgIC0td2l0aC1idWlsZC1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSBcCi0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS4zLzAwNDQtQWRkaW5nLW1tdXNsLWFzLWEtbXVzbC1saWJjLXNwZWNpZmllci1hbmQtdGhlLW5lY2Vzcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDA0NC1BZGRpbmctbW11c2wtYXMtYS1tdXNsLWxpYmMtc3BlY2lmaWVyLWFuZC10aGUtbmVjZXNzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOTFjMDJkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDA0NC1BZGRpbmctbW11c2wtYXMtYS1tdXNsLWxpYmMtc3BlY2lmaWVyLWFuZC10aGUtbmVjZXNzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjcwICswLDAgQEAKLUZyb20gMGI1NDc5OWQ4MGZiODU5YzdiMTQyNDY3ZTRkNDJjOTlkYjU5ZGY1MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDggRGVjIDIwMTUgMDg6MzA6MzUgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCA0NC80Nl0gQWRkaW5nIC1tbXVzbCBhcyBhIG11c2wgbGliYyBzcGVjaWZpZXIsIGFuZCB0aGUKLSBuZWNlc3NhcnkgaGFja3MgZm9yIGl0IHRvIGtub3cgaG93IHRvIGZpbmQgbXVzbCdzIGR5bmFtaWMgbGlua2VyLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtwYXJ0aWFsXQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdjYy9jb25maWcuZ2NjICAgICAgICAgICAgICAgIHwgIDEwICsrKystCi0gZ2NjL2NvbmZpZy9saW51eC5oICAgICAgICAgICAgfCAxMDAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCi0gZ2NjL2NvbmZpZy9saW51eC5vcHQgICAgICAgICAgfCAgIDQgKysKLSBnY2MvY29uZmlnL3JzNjAwMC9zZWN1cmVwbHQuaCB8ICAgMSArCi0gZ2NjL2NvbmZpZy9yczYwMDAvc3lzdjQuaCAgICAgfCAgIDUgKysrCi0gZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oICAgICAgICAgfCAgIDMgKysKLSA2IGZpbGVzIGNoYW5nZWQsIDExMCBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcuZ2NjIGIvZ2NjL2NvbmZpZy5nY2MKLWluZGV4IDM4MjViZDUuLjM5Y2UwNDcgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnLmdjYwotKysrIGIvZ2NjL2NvbmZpZy5nY2MKLUBAIC01NzUsNyArNTc1LDcgQEAgY2FzZSAke3RhcmdldH0gaW4KLSBlc2FjCi0gCi0gIyBDb21tb24gQyBsaWJyYXJpZXMuCi0tdG1fZGVmaW5lcz0iJHRtX2RlZmluZXMgTElCQ19HTElCQz0xIExJQkNfVUNMSUJDPTIgTElCQ19CSU9OSUM9MyIKLSt0bV9kZWZpbmVzPSIkdG1fZGVmaW5lcyBMSUJDX0dMSUJDPTEgTElCQ19VQ0xJQkM9MiBMSUJDX0JJT05JQz0zIExJQkNfTVVTTD00IgotIAotICMgMzItYml0IHg4NiBwcm9jZXNzb3JzIHN1cHBvcnRlZCBieSAtLXdpdGgtYXJjaD0uICBFYWNoIHByb2Nlc3NvcgotICMgTVVTVCBiZSBzZXBhcmF0ZWQgYnkgZXhhY3RseSBvbmUgc3BhY2UuCi1AQCAtNzIwLDYgKzcyMCw5IEBAIGNhc2UgJHt0YXJnZXR9IGluCi0gICAgICotKi0qdWNsaWJjKikKLSAgICAgICB0bV9kZWZpbmVzPSIkdG1fZGVmaW5lcyBERUZBVUxUX0xJQkM9TElCQ19VQ0xJQkMiCi0gICAgICAgOzsKLSsgICAgKi0qLSptdXNsKikKLSsgICAgICB0bV9kZWZpbmVzPSIkdG1fZGVmaW5lcyBERUZBVUxUX0xJQkM9TElCQ19NVVNMIgotKyAgICAgIDs7Ci0gICAgICopCi0gICAgICAgdG1fZGVmaW5lcz0iJHRtX2RlZmluZXMgREVGQVVMVF9MSUJDPUxJQkNfR0xJQkMiCi0gICAgICAgOzsKLUBAIC0yNDIwLDYgKzI0MjMsMTEgQEAgcG93ZXJwYyotKi1saW51eCopCi0gCSAgICBwb3dlcnBjKi0qLWxpbnV4KnBhaXJlZCopCi0gCQl0bV9maWxlPSIke3RtX2ZpbGV9IHJzNjAwMC83NTBjbC5oIiA7OwotIAllc2FjCi0rICAgICAgICBjYXNlICR7dGFyZ2V0fSBpbgotKwkgICAgKi1saW51eCotbXVzbCopCi0rCQllbmFibGVfc2VjdXJlcGx0PXllcyA7OwotKwllc2FjCi0rCi0gCWlmIHRlc3QgeCR7ZW5hYmxlX3NlY3VyZXBsdH0gPSB4eWVzOyB0aGVuCi0gCQl0bV9maWxlPSJyczYwMDAvc2VjdXJlcGx0LmggJHt0bV9maWxlfSIKLSAJZmkKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2xpbnV4LmggYi9nY2MvY29uZmlnL2xpbnV4LmgKLWluZGV4IDIyYjliZTUuLmNhOWExN2YgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2xpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvbGludXguaAotQEAgLTMyLDEwICszMiwxMiBAQCBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKLSAjZGVmaW5lIE9QVElPTl9HTElCQyAgKERFRkFVTFRfTElCQyA9PSBMSUJDX0dMSUJDKQotICNkZWZpbmUgT1BUSU9OX1VDTElCQyAoREVGQVVMVF9MSUJDID09IExJQkNfVUNMSUJDKQotICNkZWZpbmUgT1BUSU9OX0JJT05JQyAoREVGQVVMVF9MSUJDID09IExJQkNfQklPTklDKQotKyNkZWZpbmUgT1BUSU9OX01VU0wgICAoREVGQVVMVF9MSUJDID09IExJQkNfTVVTTCkKLSAjZWxzZQotICNkZWZpbmUgT1BUSU9OX0dMSUJDICAobGludXhfbGliYyA9PSBMSUJDX0dMSUJDKQotICNkZWZpbmUgT1BUSU9OX1VDTElCQyAobGludXhfbGliYyA9PSBMSUJDX1VDTElCQykKLSAjZGVmaW5lIE9QVElPTl9CSU9OSUMgKGxpbnV4X2xpYmMgPT0gTElCQ19CSU9OSUMpCi0rI2RlZmluZSBPUFRJT05fTVVTTCAgIChsaW51eF9saWJjID09IExJQkNfTVVTTCkKLSAjZW5kaWYKLSAKLSAjZGVmaW5lIEdOVV9VU0VSX1RBUkdFVF9PU19DUFBfQlVJTFRJTlMoKQkJCVwKLUBAIC01MywxOCArNTUsMjEgQEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCi0gICAgdUNsaWJjIG9yIEJpb25pYyBpcyB0aGUgZGVmYXVsdCBDIGxpYnJhcnkgYW5kIHdoZXRoZXIKLSAgICAtbXVjbGliYyBvciAtbWdsaWJjIG9yIC1tYmlvbmljIGhhcyBiZWVuIHBhc3NlZCB0byBjaGFuZ2UgdGhlIGRlZmF1bHQuICAqLwotIAotLSNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSMShMSUJDMSwgTElCQzIsIExJQkMzLCBMRDEsIExEMiwgTEQzKQlcCi0tICAiJXsiIExJQkMyICI6IiBMRDIgIjs6JXsiIExJQkMzICI6IiBMRDMgIjs6IiBMRDEgIn19IgotKyNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSMShMSUJDMSwgTElCQzIsIExJQkMzLCBMSUJDNCwgTEQxLCBMRDIsIExEMywgTEQ0KQlcCi0rICAiJXsiIExJQkMyICI6IiBMRDIgIjs6JXsiIExJQkMzICI6IiBMRDMgIjs6JXsiIExJQkM0ICI6IiBMRDQgIjs6IiBMRDEgIn19fSIKLSAKLSAjaWYgREVGQVVMVF9MSUJDID09IExJQkNfR0xJQkMKLS0jZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVLCBCKSBcCi0tICBDSE9PU0VfRFlOQU1JQ19MSU5LRVIxICgibWdsaWJjIiwgIm11Y2xpYmMiLCAibWJpb25pYyIsIEcsIFUsIEIpCi0rI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIoRywgVSwgQiwgTSkgXAotKyAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSMSAoIm1nbGliYyIsICJtdWNsaWJjIiwgIm1iaW9uaWMiLCAibW11c2wiLCBHLCBVLCBCLCBNKQotICNlbGlmIERFRkFVTFRfTElCQyA9PSBMSUJDX1VDTElCQwotLSNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUsIEIpIFwKLS0gIENIT09TRV9EWU5BTUlDX0xJTktFUjEgKCJtdWNsaWJjIiwgIm1nbGliYyIsICJtYmlvbmljIiwgVSwgRywgQikKLSsjZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVLCBCLCBNKSBcCi0rICBDSE9PU0VfRFlOQU1JQ19MSU5LRVIxICgibXVjbGliYyIsICJtZ2xpYmMiLCAibWJpb25pYyIsICJtbXVzbCIsIFUsIEcsIEIsIE0pCi0gI2VsaWYgREVGQVVMVF9MSUJDID09IExJQkNfQklPTklDCi0tI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIoRywgVSwgQikgXAotLSAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSMSAoIm1iaW9uaWMiLCAibWdsaWJjIiwgIm11Y2xpYmMiLCBCLCBHLCBVKQotKyNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUsIEIsIE0pIFwKLSsgIENIT09TRV9EWU5BTUlDX0xJTktFUjEgKCJtYmlvbmljIiwgIm1nbGliYyIsICJtdWNsaWJjIiwgIm1tdXNsIiwgQiwgRywgVSwgTSkKLSsjZWxpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19NVVNMCi0rI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIoRywgVSwgQiwgTSkgXAotKyAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSMSAoIm1tdXNsIiwgIm1nbGliYyIsICJtdWNsaWJjIiwgIm1iaW9uaWMiLCBNLCBHLCBVLCBCKQotICNlbHNlCi0gI2Vycm9yICJVbnN1cHBvcnRlZCBERUZBVUxUX0xJQkMiCi0gI2VuZGlmIC8qIERFRkFVTFRfTElCQyAqLwotQEAgLTg0LDE2ICs4OSwxNiBAQCBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKLSAKLSAjZGVmaW5lIEdOVV9VU0VSX0RZTkFNSUNfTElOS0VSCQkJCQkJXAotICAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSIChHTElCQ19EWU5BTUlDX0xJTktFUiwgVUNMSUJDX0RZTkFNSUNfTElOS0VSLAlcCi0tCQkJIEJJT05JQ19EWU5BTUlDX0xJTktFUikKLSsJCQkgQklPTklDX0RZTkFNSUNfTElOS0VSLCBNVVNMX0RZTkFNSUNfTElOS0VSKQotICNkZWZpbmUgR05VX1VTRVJfRFlOQU1JQ19MSU5LRVIzMgkJCQkJXAotICAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSIChHTElCQ19EWU5BTUlDX0xJTktFUjMyLCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiwgXAotLQkJCSBCSU9OSUNfRFlOQU1JQ19MSU5LRVIzMikKLSsJCQkgQklPTklDX0RZTkFNSUNfTElOS0VSMzIsIE1VU0xfRFlOQU1JQ19MSU5LRVIzMikKLSAjZGVmaW5lIEdOVV9VU0VSX0RZTkFNSUNfTElOS0VSNjQJCQkJCVwKLSAgIENIT09TRV9EWU5BTUlDX0xJTktFUiAoR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCwgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQsIFwKLS0JCQkgQklPTklDX0RZTkFNSUNfTElOS0VSNjQpCi0rCQkJIEJJT05JQ19EWU5BTUlDX0xJTktFUjY0LCBNVVNMX0RZTkFNSUNfTElOS0VSNjQpCi0gI2RlZmluZSBHTlVfVVNFUl9EWU5BTUlDX0xJTktFUlgzMgkJCQkJXAotICAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSIChHTElCQ19EWU5BTUlDX0xJTktFUlgzMiwgVUNMSUJDX0RZTkFNSUNfTElOS0VSWDMyLCBcCi0tCQkJIEJJT05JQ19EWU5BTUlDX0xJTktFUlgzMikKLSsJCQkgQklPTklDX0RZTkFNSUNfTElOS0VSWDMyLCBNVVNMX0RZTkFNSUNfTElOS0VSWDMyKQotIAotIC8qIFdoZXRoZXIgd2UgaGF2ZSBCaW9uaWMgbGliYyBydW50aW1lICovCi0gI3VuZGVmIFRBUkdFVF9IQVNfQklPTklDCi1AQCAtMTIzLDMgKzEyOCw3NCBAQCBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKLSAjIGRlZmluZSBUQVJHRVRfTElCQ19IQVNfRlVOQ1RJT04gbGludXhfbGliY19oYXNfZnVuY3Rpb24KLSAKLSAjZW5kaWYKLSsKLSsvKiBtdXNsIGF2b2lkcyBwcm9ibGVtYXRpYyBpbmNsdWRlcyBieSByZWFycmFuZ2luZyB0aGUgaW5jbHVkZSBkaXJlY3Rvcmllcy4KLSsgKiBVbmZvcnR1bmF0ZWx5LCB0aGlzIGlzIG1vc3RseSBkdXBsaWNhdGVkIGZyb20gY3BwZGVmYXVsdC5jICovCi0rI2lmIERFRkFVTFRfTElCQyA9PSBMSUJDX01VU0wKLSsjZGVmaW5lIElOQ0xVREVfREVGQVVMVFNfTVVTTF9HUFAJCQlcCi0rICAgIHsgR1BMVVNQTFVTX0lOQ0xVREVfRElSLCAiRysrIiwgMSwgMSwJCVwKLSsgICAgICBHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1QsIDAgfSwJCVwKLSsgICAgeyBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUiwgIkcrKyIsIDEsIDEsCQlcCi0rICAgICAgR1BMVVNQTFVTX0lOQ0xVREVfRElSX0FERF9TWVNST09ULCAxIH0sCQlcCi0rICAgIHsgR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSLCAiRysrIiwgMSwgMSwJXAotKyAgICAgIEdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVCwgMCB9LAotKwotKyNpZmRlZiBMT0NBTF9JTkNMVURFX0RJUgotKyNkZWZpbmUgSU5DTFVERV9ERUZBVUxUU19NVVNMX0xPQ0FMCQkJXAotKyAgICB7IExPQ0FMX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAxLCAyIH0sCQlcCi0rICAgIHsgTE9DQUxfSU5DTFVERV9ESVIsIDAsIDAsIDEsIDEsIDAgfSwKLSsjZWxzZQotKyNkZWZpbmUgSU5DTFVERV9ERUZBVUxUU19NVVNMX0xPQ0FMCi0rI2VuZGlmCi0rCi0rI2lmZGVmIFBSRUZJWF9JTkNMVURFX0RJUgotKyNkZWZpbmUgSU5DTFVERV9ERUZBVUxUU19NVVNMX1BSRUZJWAkJCVwKLSsgICAgeyBQUkVGSVhfSU5DTFVERV9ESVIsIDAsIDAsIDEsIDAsIDB9LAotKyNlbHNlCi0rI2RlZmluZSBJTkNMVURFX0RFRkFVTFRTX01VU0xfUFJFRklYCi0rI2VuZGlmCi0rCi0rI2lmZGVmIENST1NTX0lOQ0xVREVfRElSCi0rI2RlZmluZSBJTkNMVURFX0RFRkFVTFRTX01VU0xfQ1JPU1MJCQlcCi0rICAgIHsgQ1JPU1NfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAwLCAwLCAwfSwKLSsjZWxzZQotKyNkZWZpbmUgSU5DTFVERV9ERUZBVUxUU19NVVNMX0NST1NTCi0rI2VuZGlmCi0rCi0rI2lmZGVmIFRPT0xfSU5DTFVERV9ESVIKLSsjZGVmaW5lIElOQ0xVREVfREVGQVVMVFNfTVVTTF9UT09MCQkJXAotKyAgICB7IFRPT0xfSU5DTFVERV9ESVIsICJCSU5VVElMUyIsIDAsIDEsIDAsIDB9LAotKyNlbHNlCi0rI2RlZmluZSBJTkNMVURFX0RFRkFVTFRTX01VU0xfVE9PTAotKyNlbmRpZgotKwotKyNpZmRlZiBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVIKLSsjZGVmaW5lIElOQ0xVREVfREVGQVVMVFNfTVVTTF9OQVRJVkUJCQlcCi0rICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSLCAwLCAwLCAwLCAxLCAyIH0sCVwKLSsgICAgeyBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVIsIDAsIDAsIDAsIDEsIDAgfSwKLSsjZWxzZQotKyNkZWZpbmUgSU5DTFVERV9ERUZBVUxUU19NVVNMX05BVElWRQotKyNlbmRpZgotKwotKyNpZiBkZWZpbmVkIChDUk9TU19ESVJFQ1RPUllfU1RSVUNUVVJFKSAmJiAhZGVmaW5lZCAoVEFSR0VUX1NZU1RFTV9ST09UKQotKyMgdW5kZWYgSU5DTFVERV9ERUZBVUxUU19NVVNMX0xPQ0FMCi0rIyBkZWZpbmUgSU5DTFVERV9ERUZBVUxUU19NVVNMX0xPQ0FMCi0rIyB1bmRlZiBJTkNMVURFX0RFRkFVTFRTX01VU0xfTkFUSVZFCi0rIyBkZWZpbmUgSU5DTFVERV9ERUZBVUxUU19NVVNMX05BVElWRQotKyNlbHNlCi0rIyB1bmRlZiBJTkNMVURFX0RFRkFVTFRTX01VU0xfQ1JPU1MKLSsjIGRlZmluZSBJTkNMVURFX0RFRkFVTFRTX01VU0xfQ1JPU1MKLSsjZW5kaWYKLSsKLSsjdW5kZWYgSU5DTFVERV9ERUZBVUxUUwotKyNkZWZpbmUgSU5DTFVERV9ERUZBVUxUUwkJCQlcCi0rICB7CQkJCQkJCVwKLSsgICAgSU5DTFVERV9ERUZBVUxUU19NVVNMX0dQUAkJCQlcCi0rICAgIElOQ0xVREVfREVGQVVMVFNfTVVTTF9QUkVGSVgJCQlcCi0rICAgIElOQ0xVREVfREVGQVVMVFNfTVVTTF9DUk9TUwkJCQlcCi0rICAgIElOQ0xVREVfREVGQVVMVFNfTVVTTF9UT09MCQkJCVwKLSsgICAgSU5DTFVERV9ERUZBVUxUU19NVVNMX05BVElWRQkJCVwKLSsgICAgeyBHQ0NfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAxLCAwLCAwIH0sCQlcCi0rICAgIHsgMCwgMCwgMCwgMCwgMCwgMCB9CQkJCVwKLSsgIH0KLSsjZW5kaWYKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2xpbnV4Lm9wdCBiL2djYy9jb25maWcvbGludXgub3B0Ci1pbmRleCBjMDU0MzM4Li45MzM0Zjc0IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9saW51eC5vcHQKLSsrKyBiL2djYy9jb25maWcvbGludXgub3B0Ci1AQCAtMzAsMyArMzAsNyBAQCBVc2UgR05VIEMgbGlicmFyeQotIG11Y2xpYmMKLSBUYXJnZXQgUmVwb3J0IFJlamVjdE5lZ2F0aXZlIFZhcihsaW51eF9saWJjLExJQkNfVUNMSUJDKSBOZWdhdGl2ZShtYmlvbmljKQotIFVzZSB1Q2xpYmMgQyBsaWJyYXJ5Ci0rCi0rbW11c2wKLStUYXJnZXQgUmVwb3J0IFJlamVjdE5lZ2F0aXZlIFZhcihsaW51eF9saWJjLExJQkNfTVVTTCkgTmVnYXRpdmUobWdsaWJjKQotK1VzZSBtdXNsIEMgbGlicmFyeQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL3NlY3VyZXBsdC5oIGIvZ2NjL2NvbmZpZy9yczYwMDAvc2VjdXJlcGx0LmgKLWluZGV4IGI0NjM0NjMuLjc3ZWRmMmEgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9zZWN1cmVwbHQuaAotKysrIGIvZ2NjL2NvbmZpZy9yczYwMDAvc2VjdXJlcGx0LmgKLUBAIC0xOCwzICsxOCw0IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSAKLSAjZGVmaW5lIENDMV9TRUNVUkVfUExUX0RFRkFVTFRfU1BFQyAiLW1zZWN1cmUtcGx0IgotKyNkZWZpbmUgTElOS19TRUNVUkVfUExUX0RFRkFVTFRfU1BFQyAiLS1zZWN1cmUtcGx0IgotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL3N5c3Y0LmggYi9nY2MvY29uZmlnL3JzNjAwMC9zeXN2NC5oCi1pbmRleCBjNmMzMWRjLi43Y2QwN2UwIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvc3lzdjQuaAotKysrIGIvZ2NjL2NvbmZpZy9yczYwMDAvc3lzdjQuaAotQEAgLTUzOCw2ICs1MzgsMTAgQEAgRU5ESUFOX1NFTEVDVCgiIC1tYmlnIiwgIiAtbWxpdHRsZSIsIERFRkFVTFRfQVNNX0VORElBTikKLSAjZGVmaW5lIENDMV9TRUNVUkVfUExUX0RFRkFVTFRfU1BFQyAiIgotICNlbmRpZgotIAotKyNpZm5kZWYgTElOS19TRUNVUkVfUExUX0RFRkFVTFRfU1BFQwotKyNkZWZpbmUgTElOS19TRUNVUkVfUExUX0RFRkFVTFRfU1BFQyAiIgotKyNlbmRpZgotKwotIC8qIFBhc3MgLUcgeHh4IHRvIHRoZSBjb21waWxlci4gICovCi0gI3VuZGVmIENDMV9TUEVDCi0gI2RlZmluZQlDQzFfU1BFQyAiJXtHKn0gJShjYzFfY3B1KSIgXAotQEAgLTg4OSw2ICs4OTMsNyBAQCBuY3J0bi5vJXMiCi0gICB7ICJsaW5rX29zX29wZW5ic2QiLAkJTElOS19PU19PUEVOQlNEX1NQRUMgfSwJCQlcCi0gICB7ICJsaW5rX29zX2RlZmF1bHQiLAkJTElOS19PU19ERUZBVUxUX1NQRUMgfSwJCQlcCi0gICB7ICJjYzFfc2VjdXJlX3BsdF9kZWZhdWx0IiwJQ0MxX1NFQ1VSRV9QTFRfREVGQVVMVF9TUEVDIH0sCQlcCi0rICB7ICJsaW5rX3NlY3VyZV9wbHRfZGVmYXVsdCIsCUxJTktfU0VDVVJFX1BMVF9ERUZBVUxUX1NQRUMgfSwJCVwKLSAgIHsgImNwcF9vc19hZHMiLAkJQ1BQX09TX0FEU19TUEVDIH0sCQkJXAotICAgeyAiY3BwX29zX3llbGxvd2tuaWZlIiwJQ1BQX09TX1lFTExPV0tOSUZFX1NQRUMgfSwJCVwKLSAgIHsgImNwcF9vc19tdm1lIiwJCUNQUF9PU19NVk1FX1NQRUMgfSwJCQlcCi1kaWZmIC0tZ2l0IGEvZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oIGIvZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oCi1pbmRleCBmMjBhNDFiLi5lYjg3OWVmIDEwMDY0NAotLS0tIGEvZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oCi0rKysgYi9nY2MvZ2luY2x1ZGUvc3RkZGVmLmgKLUBAIC0xODQsNiArMTg0LDcgQEAgdHlwZWRlZiBfX1BUUkRJRkZfVFlQRV9fIHB0cmRpZmZfdDsKLSAjaWZuZGVmIF9HQ0NfU0laRV9UCi0gI2lmbmRlZiBfU0laRVRfCi0gI2lmbmRlZiBfX3NpemVfdAotKyNpZm5kZWYgX19ERUZJTkVEX3NpemVfdCAvKiBtdXNsICovCi0gI2RlZmluZSBfX3NpemVfdF9fCS8qIEJlT1MgKi8KLSAjZGVmaW5lIF9fU0laRV9UX18JLyogQ3JheSBVbmljb3MvTWsgKi8KLSAjZGVmaW5lIF9TSVpFX1QKLUBAIC0yMDAsNiArMjAxLDcgQEAgdHlwZWRlZiBfX1BUUkRJRkZfVFlQRV9fIHB0cmRpZmZfdDsKLSAjZGVmaW5lIF9fX2ludF9zaXplX3RfaAotICNkZWZpbmUgX0dDQ19TSVpFX1QKLSAjZGVmaW5lIF9TSVpFVF8KLSsjZGVmaW5lIF9fREVGSU5FRF9zaXplX3QgLyogbXVzbCAqLwotICNpZiAoZGVmaW5lZCAoX19GcmVlQlNEX18pICYmIChfX0ZyZWVCU0RfXyA+PSA1KSkgXAotICAgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKSBcCi0gICB8fCBkZWZpbmVkKF9fRnJlZUJTRF9rZXJuZWxfXykKLUBAIC0yMTgsNiArMjIwLDcgQEAgdHlwZWRlZiBfX1NJWkVfVFlQRV9fIHNpemVfdDsKLSB0eXBlZGVmIGxvbmcgc3NpemVfdDsKLSAjZW5kaWYgLyogX19CRU9TX18gKi8KLSAjZW5kaWYgLyogIShkZWZpbmVkIChfX0dOVUdfXykgJiYgZGVmaW5lZCAoc2l6ZV90KSkgKi8KLSsjZW5kaWYgLyogX19ERUZJTkVEX3NpemVfdCAqLwotICNlbmRpZiAvKiBfX3NpemVfdCAqLwotICNlbmRpZiAvKiBfU0laRVRfICovCi0gI2VuZGlmIC8qIF9HQ0NfU0laRV9UICovCi0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM4NTMwZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQuaW5jCkBAIC0wLDAgKzEsMTQ2IEBACityZXF1aXJlIGdjYy1jb21tb24uaW5jCisKKyMgVGhpcmQgZGlnaXQgaW4gUFYgc2hvdWxkIGJlIGluY3JlbWVudGVkIGFmdGVyIGEgbWlub3IgcmVsZWFzZQorCitQViA9ICI1LjQuMCIKKworI1NOQVAgPSAiNS0yMDE1MDQwNSIKKworIyBCSU5WIHNob3VsZCBiZSBpbmNyZW1lbnRlZCB0byBhIHJldmlzaW9uIGFmdGVyIGEgbWlub3IgZ2NjIHJlbGVhc2UKKworQklOViA9ICI1LjQuMCIKKworRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vZ2NjLTUuNDoke0ZJTEVfRElSTkFNRX0vZ2NjLTUuNC9iYWNrcG9ydDoiCisKK0RFUEVORFMgPSsgIm1wZnIgZ21wIGxpYm1wYyB6bGliIgorTkFUSVZFREVQUyA9ICJtcGZyLW5hdGl2ZSBnbXAtbmF0aXZlIGxpYm1wYy1uYXRpdmUgemxpYi1uYXRpdmUiCisKK0xJQ0VOU0UgPSAiR1BMLTMuMC13aXRoLUdDQy1leGNlcHRpb24gJiBHUEx2MyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJcCisgICAgZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIFwKKyAgICBmaWxlOi8vQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICBmaWxlOi8vQ09QWUlORzMuTElCO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiBcCisgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSBcCisgICAgZmlsZTovL0NPUFlJTkcuUlVOVElNRTttZDU9ZmU2MGQ4NzA0ODU2N2Q0ZmU4YzhhMGVkMjQ0OGJjYzggXAorIgorI0JBU0VVUkkgPSAiaHR0cDovL3d3dy5uZXRndWxsLmNvbS9nY2Mvc25hcHNob3RzLyR7U05BUH0vZ2NjLSR7U05BUH0udGFyLmJ6MiIKK0JBU0VVUkkgPSAiJHtHTlVfTUlSUk9SfS9nY2MvZ2NjLSR7UFZ9L2djYy0ke1BWfS50YXIuYnoyIgorCitTUkNfVVJJID0gIlwKKyAgICAgICAgICAgJHtCQVNFVVJJfSBcCisgICAgICAgICAgICR7QkFDS1BPUlRTfSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWdjYy00LjMuMS1BUkNIX0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi11Y2xpYmMtY29uZi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLWdjYy11Y2xpYmMtbG9jYWxlLWN0eXBlX3RvdXBsb3dfdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LXVjbGliYy1sb2NhbGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS11Y2xpYmMtbG9jYWxlLW5vX194LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtdWNsaWJjLWxvY2FsZS13Y2hhcl9maXgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNy11Y2xpYmMtbG9jYWxlLXVwZGF0ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA4LW1pc3NpbmctZXhlY2luZm9faC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA5LWM5OS1zbnByaW50Zi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEwLWdjYy1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTEtZ2NjLXBvaXNvbi1kaXItZXh0ZW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTItZ2NjLTQuMy4zLVNZU1JPT1RfQ0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMy02NC1iaXQtbXVsdGlsaWItaGFjay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE0LW9wdGlvbmFsLWxpYnN0ZGMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNS1nY2MtZGlzYWJsZS1NQVNLX1JFTEFYX1BJQ19DQUxMUy1iaXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNi1DT0xMRUNUX0dDQ19PUFRJT05TLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTctVXNlLXRoZS1kZWZhdWx0cy5oLWluLUItaW5zdGVhZC1vZi1TLWFuZC10LW9lLWluLUIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxOC1mb3J0cmFuLWNyb3NzLWNvbXBpbGUtaGFjay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE5LWxpYmdjYy1zamxqLWNoZWNrLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjAtY3BwLWhvbm9yLXN5c3Jvb3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMS1NSVBTNjQtRGVmYXVsdC10by1ONjQtQUJJLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjItRGVmaW5lLUdMSUJDX0RZTkFNSUNfTElOS0VSLWFuZC1VQ0xJQkNfRFlOQU1JQ19MSU5LRS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIzLWdjYy1GaXgtYXJndW1lbnQtbGlzdC10b28tbG9uZy1lcnJvci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI0LURpc2FibGUtc2R0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjUtbGlidG9vbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI2LWdjYy1hcm12NC1wYXNzLWZpeC12NGJ4LXRvLWxpbmtlci10by1zdXBwb3J0LUVBQkkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNy1Vc2UtdGhlLW11bHRpbGliLWNvbmZpZy1maWxlcy1mcm9tLUItaW5zdGVhZC1vZi11c2luLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjgtQXZvaWQtdXNpbmctbGliZGlyLWZyb20tLmxhLXdoaWNoLXVzdWFsbHktcG9pbnRzLXRvLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI5LWV4cG9ydC1DUFAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzMC1FbmFibGUtU1BFLUFsdGlWZWMtZ2VuZXJhdGlvbi1vbi1wb3dlcGMtbGludXgtdGFyZ2V0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzEtRGlzYWJsZS10aGUtTVVMVElMSUJfT1NESVJOQU1FUy1hbmQtb3RoZXItbXVsdGlsaWItby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDMyLUVuc3VyZS10YXJnZXQtZ2NjLWhlYWRlcnMtY2FuLWJlLWluY2x1ZGVkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzMtZ2NjLTQuOC13b24tdC1idWlsZC13aXRoLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM0LURvbi10LXNlYXJjaC1ob3N0LWRpcmVjdG9yeS1kdXJpbmctcmVsaW5rLWlmLWluc3RfcHIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzNS1Eb250LWxpbmstdGhlLXBsdWdpbnMtd2l0aC1saWJnb21wLWV4cGxpY2l0bHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzNi1Vc2UtU1lTVEVNTElCU19ESVItcmVwbGFjZW1lbnQtaW5zdGVhZC1vZi1oYXJkY29kaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzctYWFyY2g2NC1BZGQtc3VwcG9ydC1mb3ItbXVzbC1sZHNvLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzgtZml4LWctc3lzcm9vdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM5LWxpYmNjMS1maXgtbGliY2MxLXMtaW5zdGFsbC1wYXRoLWFuZC1ycGF0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDQwLWhhbmRsZS1zeXNyb290LXN1cHBvcnQtZm9yLW5hdGl2ZXNkay1nY2MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDA0MS1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwNDItRml4LXZhcmlvdXMtX0ZPUl9CVUlMRC1hbmQtcmVsYXRlZC12YXJpYWJsZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDA0My1saWJzdGRjLVN1cHBvcnQtbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDQ0LUFkZGluZy1tbXVzbC1hcy1hLW11c2wtbGliYy1zcGVjaWZpZXItYW5kLXRoZS1uZWNlc3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDA0NS1TdXBwb3J0LWZvci1hcm0tbGludXgtbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDQ2LUdldC1yaWQtb2YtZXZlci1icm9rZW4tZml4aW5jbHVkZXMtb24tbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDQ3LW5pb3MyLURlZmluZS1NVVNMX0RZTkFNSUNfTElOS0VSLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwNDgtc3NwX25vbnNoYXJlZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDQ5LURpc2FibGUtdGhlLXdlYWstcmVmZXJlbmNlLWxvZ2ljLWluLWd0aHIuaC1mb3Itb3MtZ2UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDA1MC1wb3dlcnBjLXBhc3Mtc2VjdXJlLXBsdC10by10aGUtbGlua2VyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwNTEtSWdub3JlLWZkZWJ1Zy1wcmVmaXgtbWFwLWluLXByb2R1Y2VyLXN0cmluZy1ieS1EYW5pZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDUyLW5pb3MyLXVzZS1yZXQtd2l0aC1yMzEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDA1My1leHByLmMtUFItdGFyZ2V0LTY1MzU4LUF2b2lkLWNsb2JiZXJpbmctcGFydGlhbC1hcmd1LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwNTQtc3VwcG9ydC1mZmlsZS1wcmVmaXgtbWFwLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwNTUtUmV1c2UtZmRlYnVnLXByZWZpeC1tYXAtdG8tcmVwbGFjZS1mZmlsZS1wcmVmaXgtbWFwLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwNTYtRW5hYmxlLWxpYmMtcHJvdmlkZS1zc3AtYW5kLWdjY19jdl90YXJnZXRfZGxfaXRlcmF0ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDU3LXVud2luZC1maXgtZm9yLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDA1OC1mZGVidWctcHJlZml4LW1hcC1zdXBwb3J0LXRvLXJlbWFwLXJlbGF0aXZlLXBhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDA1OS1saWJnY2MtdXNlLWxkZmxhZ3MucGF0Y2ggXAorIgorCitCQUNLUE9SVFMgPSAiIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNGM2MjZhYzJhODNlZjMwZGZiOTI2MGU2ZjU5YzJiMzAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjA4ZGY3NmRlYzJkMzRkZTY1NTgyNDlkOGFmNGNiZWUyMWVjZWRkYmNiNTgwZDY2NmY3YTVhNTgzY2EzMzAzYSIKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiZ2NjLSg/UDxwdmVyPjVcLlxkK1wuXGQrKS50YXIiCisKKyNTID0gIiR7VE1QRElSfS93b3JrLXNoYXJlZC9nY2MtJHtQVn0tJHtQUn0vZ2NjLSR7U05BUH0iCitTID0gIiR7VE1QRElSfS93b3JrLXNoYXJlZC9nY2MtJHtQVn0tJHtQUn0vZ2NjLSR7UFZ9IgorQiA9ICIke1dPUktESVJ9L2djYy0ke1BWfS9idWlsZC4ke0hPU1RfU1lTfS4ke1RBUkdFVF9TWVN9IgorCisjIExhbmd1YWdlIE92ZXJyaWRlcworRk9SVFJBTiA9ICIiCitKQVZBID0gIiIKKworTFRPID0gIi0tZW5hYmxlLWx0byIKKworRVhUUkFfT0VDT05GX0JBU0UgPSAiXAorICAgICR7TFRPfSBcCisgICAgLS1lbmFibGUtbGlic3NwIFwKKyAgICAtLWVuYWJsZS1saWJpdG0gXAorICAgIC0tZGlzYWJsZS1ib290c3RyYXAgXAorICAgIC0tZGlzYWJsZS1saWJtdWRmbGFwIFwKKyAgICAtLXdpdGgtc3lzdGVtLXpsaWIgXAorICAgIC0td2l0aC1saW5rZXItaGFzaC1zdHlsZT0ke0xJTktFUl9IQVNIX1NUWUxFfSBcCisgICAgLS1lbmFibGUtbGlua2VyLWJ1aWxkLWlkIFwKKyAgICAtLXdpdGgtcHBsPW5vIFwKKyAgICAtLXdpdGgtY2xvb2c9bm8gXAorICAgIC0tZW5hYmxlLWNoZWNraW5nPXJlbGVhc2UgXAorICAgIC0tZW5hYmxlLWNoZWFkZXJzPWNfZ2xvYmFsIFwKKyAgICAtLXdpdGhvdXQtaXNsIFwKKyIKKworRVhUUkFfT0VDT05GX0lOSVRJQUwgPSAiXAorICAgIC0tZGlzYWJsZS1saWJtdWRmbGFwIFwKKyAgICAtLWRpc2FibGUtbGliZ29tcCBcCisgICAgLS1kaXNhYmxlLWxpYml0bSBcCisgICAgLS1kaXNhYmxlLWxpYnF1YWRtYXRoIFwKKyAgICAtLXdpdGgtc3lzdGVtLXpsaWIgXAorICAgIC0tZGlzYWJsZS1sdG8gXAorICAgIC0tZGlzYWJsZS1wbHVnaW4gXAorICAgIC0tZW5hYmxlLWRlY2ltYWwtZmxvYXQ9bm8gXAorICAgIC0td2l0aG91dC1pc2wgXAorICAgIGdjY19jdl9saWJjX3Byb3ZpZGVzX3NzcD15ZXMgXAorIgorCitFWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAtLWRpc2FibGUtZGVjaW1hbC1mbG9hdCAiCisKK0VYVFJBX09FQ09ORl9QQVRIUyA9ICJcCisgICAgLS13aXRoLWd4eC1pbmNsdWRlLWRpcj0vbm90L2V4aXN0e3RhcmdldF9pbmNsdWRlZGlyfS9jKysvJHtCSU5WfSBcCisgICAgLS13aXRoLXN5c3Jvb3Q9L25vdC9leGlzdCBcCisgICAgLS13aXRoLWJ1aWxkLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDAwMS1nY2MtNC4zLjEtQVJDSF9GTEFHU19GT1JfVEFSR0VULnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDAxLWdjYy00LjMuMS1BUkNIX0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDAwMS1nY2MtNC4zLjEtQVJDSF9GTEFHU19GT1JfVEFSR0VULnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMDEtZ2NjLTQuMy4xLUFSQ0hfRkxBR1NfRk9SX1RBUkdFVC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuMy8wMDAyLXVjbGliYy1jb25mLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDAyLXVjbGliYy1jb25mLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS4zLzAwMDItdWNsaWJjLWNvbmYucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAwMi11Y2xpYmMtY29uZi5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuMy8wMDAzLWdjYy11Y2xpYmMtbG9jYWxlLWN0eXBlX3RvdXBsb3dfdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAwMy1nY2MtdWNsaWJjLWxvY2FsZS1jdHlwZV90b3VwbG93X3QucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDAwMy1nY2MtdWNsaWJjLWxvY2FsZS1jdHlwZV90b3VwbG93X3QucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAwMy1nY2MtdWNsaWJjLWxvY2FsZS1jdHlwZV90b3VwbG93X3QucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDAwNC11Y2xpYmMtbG9jYWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDA0LXVjbGliYy1sb2NhbGUucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDAwNC11Y2xpYmMtbG9jYWxlLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMDQtdWNsaWJjLWxvY2FsZS5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuMy8wMDA1LXVjbGliYy1sb2NhbGUtbm9fX3gucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMDUtdWNsaWJjLWxvY2FsZS1ub19feC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuMy8wMDA1LXVjbGliYy1sb2NhbGUtbm9fX3gucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAwNS11Y2xpYmMtbG9jYWxlLW5vX194LnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS4zLzAwMDYtdWNsaWJjLWxvY2FsZS13Y2hhcl9maXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMDYtdWNsaWJjLWxvY2FsZS13Y2hhcl9maXgucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDAwNi11Y2xpYmMtbG9jYWxlLXdjaGFyX2ZpeC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDA2LXVjbGliYy1sb2NhbGUtd2NoYXJfZml4LnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS4zLzAwMDctdWNsaWJjLWxvY2FsZS11cGRhdGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMDctdWNsaWJjLWxvY2FsZS11cGRhdGUucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDAwNy11Y2xpYmMtbG9jYWxlLXVwZGF0ZS5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDA3LXVjbGliYy1sb2NhbGUtdXBkYXRlLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS4zLzAwMDgtbWlzc2luZy1leGVjaW5mb19oLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDA4LW1pc3NpbmctZXhlY2luZm9faC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuMy8wMDA4LW1pc3NpbmctZXhlY2luZm9faC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDA4LW1pc3NpbmctZXhlY2luZm9faC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuMy8wMDA5LWM5OS1zbnByaW50Zi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAwOS1jOTktc25wcmludGYucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDAwOS1jOTktc25wcmludGYucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAwOS1jOTktc25wcmludGYucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDAxMC1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAxMC1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuMy8wMDEwLWdjYy1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTAtZ2NjLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDAxMS1nY2MtcG9pc29uLWRpci1leHRlbmQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTEtZ2NjLXBvaXNvbi1kaXItZXh0ZW5kLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS4zLzAwMTEtZ2NjLXBvaXNvbi1kaXItZXh0ZW5kLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTEtZ2NjLXBvaXNvbi1kaXItZXh0ZW5kLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS4zLzAwMTItZ2NjLTQuMy4zLVNZU1JPT1RfQ0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTItZ2NjLTQuMy4zLVNZU1JPT1RfQ0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDAxMi1nY2MtNC4zLjMtU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDEyLWdjYy00LjMuMy1TWVNST09UX0NGTEFHU19GT1JfVEFSR0VULnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS4zLzAwMTMtNjQtYml0LW11bHRpbGliLWhhY2sucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTMtNjQtYml0LW11bHRpbGliLWhhY2sucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDAxMy02NC1iaXQtbXVsdGlsaWItaGFjay5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDEzLTY0LWJpdC1tdWx0aWxpYi1oYWNrLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS4zLzAwMTQtb3B0aW9uYWwtbGlic3RkYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAxNC1vcHRpb25hbC1saWJzdGRjLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS4zLzAwMTQtb3B0aW9uYWwtbGlic3RkYy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDE0LW9wdGlvbmFsLWxpYnN0ZGMucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDAxNS1nY2MtZGlzYWJsZS1NQVNLX1JFTEFYX1BJQ19DQUxMUy1iaXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTUtZ2NjLWRpc2FibGUtTUFTS19SRUxBWF9QSUNfQ0FMTFMtYml0LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS4zLzAwMTUtZ2NjLWRpc2FibGUtTUFTS19SRUxBWF9QSUNfQ0FMTFMtYml0LnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTUtZ2NjLWRpc2FibGUtTUFTS19SRUxBWF9QSUNfQ0FMTFMtYml0LnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS4zLzAwMTYtQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAxNi1DT0xMRUNUX0dDQ19PUFRJT05TLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS4zLzAwMTYtQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDE2LUNPTExFQ1RfR0NDX09QVElPTlMucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDAxNy1Vc2UtdGhlLWRlZmF1bHRzLmgtaW4tQi1pbnN0ZWFkLW9mLVMtYW5kLXQtb2UtaW4tQi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAxNy1Vc2UtdGhlLWRlZmF1bHRzLmgtaW4tQi1pbnN0ZWFkLW9mLVMtYW5kLXQtb2UtaW4tQi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuMy8wMDE3LVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTctVXNlLXRoZS1kZWZhdWx0cy5oLWluLUItaW5zdGVhZC1vZi1TLWFuZC10LW9lLWluLUIucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDAxOC1mb3J0cmFuLWNyb3NzLWNvbXBpbGUtaGFjay5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAxOC1mb3J0cmFuLWNyb3NzLWNvbXBpbGUtaGFjay5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuMy8wMDE4LWZvcnRyYW4tY3Jvc3MtY29tcGlsZS1oYWNrLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTgtZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDAxOS1saWJnY2Mtc2psai1jaGVjay5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAxOS1saWJnY2Mtc2psai1jaGVjay5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuMy8wMDE5LWxpYmdjYy1zamxqLWNoZWNrLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTktbGliZ2NjLXNqbGotY2hlY2sucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDAyMC1jcHAtaG9ub3Itc3lzcm9vdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyMC1jcHAtaG9ub3Itc3lzcm9vdC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuMy8wMDIwLWNwcC1ob25vci1zeXNyb290LnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMjAtY3BwLWhvbm9yLXN5c3Jvb3QucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDAyMS1NSVBTNjQtRGVmYXVsdC10by1ONjQtQUJJLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDIxLU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDAyMS1NSVBTNjQtRGVmYXVsdC10by1ONjQtQUJJLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMjEtTUlQUzY0LURlZmF1bHQtdG8tTjY0LUFCSS5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuMy8wMDIyLURlZmluZS1HTElCQ19EWU5BTUlDX0xJTktFUi1hbmQtVUNMSUJDX0RZTkFNSUNfTElOS0UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMjItRGVmaW5lLUdMSUJDX0RZTkFNSUNfTElOS0VSLWFuZC1VQ0xJQkNfRFlOQU1JQ19MSU5LRS5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuMy8wMDIyLURlZmluZS1HTElCQ19EWU5BTUlDX0xJTktFUi1hbmQtVUNMSUJDX0RZTkFNSUNfTElOS0UucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyMi1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS4zLzAwMjMtZ2NjLUZpeC1hcmd1bWVudC1saXN0LXRvby1sb25nLWVycm9yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDIzLWdjYy1GaXgtYXJndW1lbnQtbGlzdC10b28tbG9uZy1lcnJvci5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuMy8wMDIzLWdjYy1GaXgtYXJndW1lbnQtbGlzdC10b28tbG9uZy1lcnJvci5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDIzLWdjYy1GaXgtYXJndW1lbnQtbGlzdC10b28tbG9uZy1lcnJvci5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuMy8wMDI0LURpc2FibGUtc2R0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDI0LURpc2FibGUtc2R0LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS4zLzAwMjQtRGlzYWJsZS1zZHQucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyNC1EaXNhYmxlLXNkdC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuMy8wMDI1LWxpYnRvb2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMjUtbGlidG9vbC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuMy8wMDI1LWxpYnRvb2wucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyNS1saWJ0b29sLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS4zLzAwMjYtZ2NjLWFybXY0LXBhc3MtZml4LXY0YngtdG8tbGlua2VyLXRvLXN1cHBvcnQtRUFCSS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyNi1nY2MtYXJtdjQtcGFzcy1maXgtdjRieC10by1saW5rZXItdG8tc3VwcG9ydC1FQUJJLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS4zLzAwMjYtZ2NjLWFybXY0LXBhc3MtZml4LXY0YngtdG8tbGlua2VyLXRvLXN1cHBvcnQtRUFCSS5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDI2LWdjYy1hcm12NC1wYXNzLWZpeC12NGJ4LXRvLWxpbmtlci10by1zdXBwb3J0LUVBQkkucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDAyNy1Vc2UtdGhlLW11bHRpbGliLWNvbmZpZy1maWxlcy1mcm9tLUItaW5zdGVhZC1vZi11c2luLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDI3LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDAyNy1Vc2UtdGhlLW11bHRpbGliLWNvbmZpZy1maWxlcy1mcm9tLUItaW5zdGVhZC1vZi11c2luLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMjctVXNlLXRoZS1tdWx0aWxpYi1jb25maWctZmlsZXMtZnJvbS1CLWluc3RlYWQtb2YtdXNpbi5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuMy8wMDI4LUF2b2lkLXVzaW5nLWxpYmRpci1mcm9tLS5sYS13aGljaC11c3VhbGx5LXBvaW50cy10by0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMjgtQXZvaWQtdXNpbmctbGliZGlyLWZyb20tLmxhLXdoaWNoLXVzdWFsbHktcG9pbnRzLXRvLS5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuMy8wMDI4LUF2b2lkLXVzaW5nLWxpYmRpci1mcm9tLS5sYS13aGljaC11c3VhbGx5LXBvaW50cy10by0ucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyOC1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS4zLzAwMjktZXhwb3J0LUNQUC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyOS1leHBvcnQtQ1BQLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS4zLzAwMjktZXhwb3J0LUNQUC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDI5LWV4cG9ydC1DUFAucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDAzMC1FbmFibGUtU1BFLUFsdGlWZWMtZ2VuZXJhdGlvbi1vbi1wb3dlcGMtbGludXgtdGFyZ2V0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDMwLUVuYWJsZS1TUEUtQWx0aVZlYy1nZW5lcmF0aW9uLW9uLXBvd2VwYy1saW51eC10YXJnZXQucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDAzMC1FbmFibGUtU1BFLUFsdGlWZWMtZ2VuZXJhdGlvbi1vbi1wb3dlcGMtbGludXgtdGFyZ2V0LnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMzAtRW5hYmxlLVNQRS1BbHRpVmVjLWdlbmVyYXRpb24tb24tcG93ZXBjLWxpbnV4LXRhcmdldC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuMy8wMDMxLURpc2FibGUtdGhlLU1VTFRJTElCX09TRElSTkFNRVMtYW5kLW90aGVyLW11bHRpbGliLW8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMzEtRGlzYWJsZS10aGUtTVVMVElMSUJfT1NESVJOQU1FUy1hbmQtb3RoZXItbXVsdGlsaWItby5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuMy8wMDMxLURpc2FibGUtdGhlLU1VTFRJTElCX09TRElSTkFNRVMtYW5kLW90aGVyLW11bHRpbGliLW8ucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzMS1EaXNhYmxlLXRoZS1NVUxUSUxJQl9PU0RJUk5BTUVTLWFuZC1vdGhlci1tdWx0aWxpYi1vLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS4zLzAwMzItRW5zdXJlLXRhcmdldC1nY2MtaGVhZGVycy1jYW4tYmUtaW5jbHVkZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMzItRW5zdXJlLXRhcmdldC1nY2MtaGVhZGVycy1jYW4tYmUtaW5jbHVkZWQucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDAzMi1FbnN1cmUtdGFyZ2V0LWdjYy1oZWFkZXJzLWNhbi1iZS1pbmNsdWRlZC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDMyLUVuc3VyZS10YXJnZXQtZ2NjLWhlYWRlcnMtY2FuLWJlLWluY2x1ZGVkLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS4zLzAwMzMtZ2NjLTQuOC13b24tdC1idWlsZC13aXRoLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzMy1nY2MtNC44LXdvbi10LWJ1aWxkLXdpdGgtZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS4zLzAwMzMtZ2NjLTQuOC13b24tdC1idWlsZC13aXRoLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDMzLWdjYy00Ljgtd29uLXQtYnVpbGQtd2l0aC1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDAzNC1Eb24tdC1zZWFyY2gtaG9zdC1kaXJlY3RvcnktZHVyaW5nLXJlbGluay1pZi1pbnN0X3ByLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDM0LURvbi10LXNlYXJjaC1ob3N0LWRpcmVjdG9yeS1kdXJpbmctcmVsaW5rLWlmLWluc3RfcHIucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDAzNC1Eb24tdC1zZWFyY2gtaG9zdC1kaXJlY3RvcnktZHVyaW5nLXJlbGluay1pZi1pbnN0X3ByLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMzQtRG9uLXQtc2VhcmNoLWhvc3QtZGlyZWN0b3J5LWR1cmluZy1yZWxpbmstaWYtaW5zdF9wci5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuMy8wMDM1LURvbnQtbGluay10aGUtcGx1Z2lucy13aXRoLWxpYmdvbXAtZXhwbGljaXRseS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzNS1Eb250LWxpbmstdGhlLXBsdWdpbnMtd2l0aC1saWJnb21wLWV4cGxpY2l0bHkucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDAzNS1Eb250LWxpbmstdGhlLXBsdWdpbnMtd2l0aC1saWJnb21wLWV4cGxpY2l0bHkucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzNS1Eb250LWxpbmstdGhlLXBsdWdpbnMtd2l0aC1saWJnb21wLWV4cGxpY2l0bHkucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDAzNi1Vc2UtU1lTVEVNTElCU19ESVItcmVwbGFjZW1lbnQtaW5zdGVhZC1vZi1oYXJkY29kaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDM2LVVzZS1TWVNURU1MSUJTX0RJUi1yZXBsYWNlbWVudC1pbnN0ZWFkLW9mLWhhcmRjb2RpbmcucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDAzNi1Vc2UtU1lTVEVNTElCU19ESVItcmVwbGFjZW1lbnQtaW5zdGVhZC1vZi1oYXJkY29kaW5nLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMzYtVXNlLVNZU1RFTUxJQlNfRElSLXJlcGxhY2VtZW50LWluc3RlYWQtb2YtaGFyZGNvZGluZy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuMy8wMDM3LWFhcmNoNjQtQWRkLXN1cHBvcnQtZm9yLW11c2wtbGRzby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzNy1hYXJjaDY0LUFkZC1zdXBwb3J0LWZvci1tdXNsLWxkc28ucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDAzNy1hYXJjaDY0LUFkZC1zdXBwb3J0LWZvci1tdXNsLWxkc28ucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzNy1hYXJjaDY0LUFkZC1zdXBwb3J0LWZvci1tdXNsLWxkc28ucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDAzOC1maXgtZy1zeXNyb290LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDM4LWZpeC1nLXN5c3Jvb3QucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDAzOC1maXgtZy1zeXNyb290LnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMzgtZml4LWctc3lzcm9vdC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuMy8wMDM5LWxpYmNjMS1maXgtbGliY2MxLXMtaW5zdGFsbC1wYXRoLWFuZC1ycGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzOS1saWJjYzEtZml4LWxpYmNjMS1zLWluc3RhbGwtcGF0aC1hbmQtcnBhdGgucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDAzOS1saWJjYzEtZml4LWxpYmNjMS1zLWluc3RhbGwtcGF0aC1hbmQtcnBhdGgucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzOS1saWJjYzEtZml4LWxpYmNjMS1zLWluc3RhbGwtcGF0aC1hbmQtcnBhdGgucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDA0MC1oYW5kbGUtc3lzcm9vdC1zdXBwb3J0LWZvci1uYXRpdmVzZGstZ2NjLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDQwLWhhbmRsZS1zeXNyb290LXN1cHBvcnQtZm9yLW5hdGl2ZXNkay1nY2MucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDA0MC1oYW5kbGUtc3lzcm9vdC1zdXBwb3J0LWZvci1uYXRpdmVzZGstZ2NjLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDAtaGFuZGxlLXN5c3Jvb3Qtc3VwcG9ydC1mb3ItbmF0aXZlc2RrLWdjYy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuMy8wMDQxLVNlYXJjaC10YXJnZXQtc3lzcm9vdC1nY2MtdmVyc2lvbi1zcGVjaWZpYy1kaXJzLXdpdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDEtU2VhcmNoLXRhcmdldC1zeXNyb290LWdjYy12ZXJzaW9uLXNwZWNpZmljLWRpcnMtd2l0aC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuMy8wMDQxLVNlYXJjaC10YXJnZXQtc3lzcm9vdC1nY2MtdmVyc2lvbi1zcGVjaWZpYy1kaXJzLXdpdGgucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA0MS1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS4zLzAwNDItRml4LXZhcmlvdXMtX0ZPUl9CVUlMRC1hbmQtcmVsYXRlZC12YXJpYWJsZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDItRml4LXZhcmlvdXMtX0ZPUl9CVUlMRC1hbmQtcmVsYXRlZC12YXJpYWJsZXMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDA0Mi1GaXgtdmFyaW91cy1fRk9SX0JVSUxELWFuZC1yZWxhdGVkLXZhcmlhYmxlcy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDQyLUZpeC12YXJpb3VzLV9GT1JfQlVJTEQtYW5kLXJlbGF0ZWQtdmFyaWFibGVzLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS4zLzAwNDMtbGlic3RkYy1TdXBwb3J0LW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDMtbGlic3RkYy1TdXBwb3J0LW11c2wucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDA0My1saWJzdGRjLVN1cHBvcnQtbXVzbC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDQzLWxpYnN0ZGMtU3VwcG9ydC1tdXNsLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDQtQWRkaW5nLW1tdXNsLWFzLWEtbXVzbC1saWJjLXNwZWNpZmllci1hbmQtdGhlLW5lY2Vzcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA0NC1BZGRpbmctbW11c2wtYXMtYS1tdXNsLWxpYmMtc3BlY2lmaWVyLWFuZC10aGUtbmVjZXNzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2YWE5NmMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDQtQWRkaW5nLW1tdXNsLWFzLWEtbXVzbC1saWJjLXNwZWNpZmllci1hbmQtdGhlLW5lY2Vzcy5wYXRjaApAQCAtMCwwICsxLDI3MCBAQAorRnJvbSAwYjU0Nzk5ZDgwZmI4NTljN2IxNDI0NjdlNGQ0MmM5OWRiNTlkZjUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgOCBEZWMgMjAxNSAwODozMDozNSArMDAwMAorU3ViamVjdDogW1BBVENIIDQ0LzQ2XSBBZGRpbmcgLW1tdXNsIGFzIGEgbXVzbCBsaWJjIHNwZWNpZmllciwgYW5kIHRoZQorIG5lY2Vzc2FyeSBoYWNrcyBmb3IgaXQgdG8ga25vdyBob3cgdG8gZmluZCBtdXNsJ3MgZHluYW1pYyBsaW5rZXIuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW3BhcnRpYWxdCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ2NjL2NvbmZpZy5nY2MgICAgICAgICAgICAgICAgfCAgMTAgKysrKy0KKyBnY2MvY29uZmlnL2xpbnV4LmggICAgICAgICAgICB8IDEwMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KKyBnY2MvY29uZmlnL2xpbnV4Lm9wdCAgICAgICAgICB8ICAgNCArKworIGdjYy9jb25maWcvcnM2MDAwL3NlY3VyZXBsdC5oIHwgICAxICsKKyBnY2MvY29uZmlnL3JzNjAwMC9zeXN2NC5oICAgICB8ICAgNSArKysKKyBnY2MvZ2luY2x1ZGUvc3RkZGVmLmggICAgICAgICB8ICAgMyArKworIDYgZmlsZXMgY2hhbmdlZCwgMTEwIGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQorCitJbmRleDogZ2NjLTUuNC4wL2djYy9jb25maWcuZ2NjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2NjLTUuNC4wLm9yaWcvZ2NjL2NvbmZpZy5nY2MKKysrKyBnY2MtNS40LjAvZ2NjL2NvbmZpZy5nY2MKK0BAIC01NzUsNyArNTc1LDcgQEAgY2FzZSAke3RhcmdldH0gaW4KKyBlc2FjCisgCisgIyBDb21tb24gQyBsaWJyYXJpZXMuCistdG1fZGVmaW5lcz0iJHRtX2RlZmluZXMgTElCQ19HTElCQz0xIExJQkNfVUNMSUJDPTIgTElCQ19CSU9OSUM9MyIKKyt0bV9kZWZpbmVzPSIkdG1fZGVmaW5lcyBMSUJDX0dMSUJDPTEgTElCQ19VQ0xJQkM9MiBMSUJDX0JJT05JQz0zIExJQkNfTVVTTD00IgorIAorICMgMzItYml0IHg4NiBwcm9jZXNzb3JzIHN1cHBvcnRlZCBieSAtLXdpdGgtYXJjaD0uICBFYWNoIHByb2Nlc3NvcgorICMgTVVTVCBiZSBzZXBhcmF0ZWQgYnkgZXhhY3RseSBvbmUgc3BhY2UuCitAQCAtNzIwLDYgKzcyMCw5IEBAIGNhc2UgJHt0YXJnZXR9IGluCisgICAgICotKi0qdWNsaWJjKikKKyAgICAgICB0bV9kZWZpbmVzPSIkdG1fZGVmaW5lcyBERUZBVUxUX0xJQkM9TElCQ19VQ0xJQkMiCisgICAgICAgOzsKKysgICAgKi0qLSptdXNsKikKKysgICAgICB0bV9kZWZpbmVzPSIkdG1fZGVmaW5lcyBERUZBVUxUX0xJQkM9TElCQ19NVVNMIgorKyAgICAgIDs7CisgICAgICopCisgICAgICAgdG1fZGVmaW5lcz0iJHRtX2RlZmluZXMgREVGQVVMVF9MSUJDPUxJQkNfR0xJQkMiCisgICAgICAgOzsKK0BAIC0yNDIwLDYgKzI0MjMsMTEgQEAgcG93ZXJwYyotKi1saW51eCopCisgCSAgICBwb3dlcnBjKi0qLWxpbnV4KnBhaXJlZCopCisgCQl0bV9maWxlPSIke3RtX2ZpbGV9IHJzNjAwMC83NTBjbC5oIiA7OworIAllc2FjCisrICAgICAgICBjYXNlICR7dGFyZ2V0fSBpbgorKwkgICAgKi1saW51eCotbXVzbCopCisrCQllbmFibGVfc2VjdXJlcGx0PXllcyA7OworKwllc2FjCisrCisgCWlmIHRlc3QgeCR7ZW5hYmxlX3NlY3VyZXBsdH0gPSB4eWVzOyB0aGVuCisgCQl0bV9maWxlPSJyczYwMDAvc2VjdXJlcGx0LmggJHt0bV9maWxlfSIKKyAJZmkKK0luZGV4OiBnY2MtNS40LjAvZ2NjL2NvbmZpZy9saW51eC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2NjLTUuNC4wLm9yaWcvZ2NjL2NvbmZpZy9saW51eC5oCisrKysgZ2NjLTUuNC4wL2djYy9jb25maWcvbGludXguaAorQEAgLTMyLDEwICszMiwxMiBAQCBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJCisgI2RlZmluZSBPUFRJT05fR0xJQkMgIChERUZBVUxUX0xJQkMgPT0gTElCQ19HTElCQykKKyAjZGVmaW5lIE9QVElPTl9VQ0xJQkMgKERFRkFVTFRfTElCQyA9PSBMSUJDX1VDTElCQykKKyAjZGVmaW5lIE9QVElPTl9CSU9OSUMgKERFRkFVTFRfTElCQyA9PSBMSUJDX0JJT05JQykKKysjZGVmaW5lIE9QVElPTl9NVVNMICAgKERFRkFVTFRfTElCQyA9PSBMSUJDX01VU0wpCisgI2Vsc2UKKyAjZGVmaW5lIE9QVElPTl9HTElCQyAgKGxpbnV4X2xpYmMgPT0gTElCQ19HTElCQykKKyAjZGVmaW5lIE9QVElPTl9VQ0xJQkMgKGxpbnV4X2xpYmMgPT0gTElCQ19VQ0xJQkMpCisgI2RlZmluZSBPUFRJT05fQklPTklDIChsaW51eF9saWJjID09IExJQkNfQklPTklDKQorKyNkZWZpbmUgT1BUSU9OX01VU0wgICAobGludXhfbGliYyA9PSBMSUJDX01VU0wpCisgI2VuZGlmCisgCisgI2RlZmluZSBHTlVfVVNFUl9UQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKCkJCQlcCitAQCAtNTMsMTggKzU1LDIxIEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVEkKKyAgICB1Q2xpYmMgb3IgQmlvbmljIGlzIHRoZSBkZWZhdWx0IEMgbGlicmFyeSBhbmQgd2hldGhlcgorICAgIC1tdWNsaWJjIG9yIC1tZ2xpYmMgb3IgLW1iaW9uaWMgaGFzIGJlZW4gcGFzc2VkIHRvIGNoYW5nZSB0aGUgZGVmYXVsdC4gICovCisgCistI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIxKExJQkMxLCBMSUJDMiwgTElCQzMsIExEMSwgTEQyLCBMRDMpCVwKKy0gICIleyIgTElCQzIgIjoiIExEMiAiOzoleyIgTElCQzMgIjoiIExEMyAiOzoiIExEMSAifX0iCisrI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIxKExJQkMxLCBMSUJDMiwgTElCQzMsIExJQkM0LCBMRDEsIExEMiwgTEQzLCBMRDQpCVwKKysgICIleyIgTElCQzIgIjoiIExEMiAiOzoleyIgTElCQzMgIjoiIExEMyAiOzoleyIgTElCQzQgIjoiIExENCAiOzoiIExEMSAifX19IgorIAorICNpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19HTElCQworLSNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUsIEIpIFwKKy0gIENIT09TRV9EWU5BTUlDX0xJTktFUjEgKCJtZ2xpYmMiLCAibXVjbGliYyIsICJtYmlvbmljIiwgRywgVSwgQikKKysjZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVLCBCLCBNKSBcCisrICBDSE9PU0VfRFlOQU1JQ19MSU5LRVIxICgibWdsaWJjIiwgIm11Y2xpYmMiLCAibWJpb25pYyIsICJtbXVzbCIsIEcsIFUsIEIsIE0pCisgI2VsaWYgREVGQVVMVF9MSUJDID09IExJQkNfVUNMSUJDCistI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIoRywgVSwgQikgXAorLSAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSMSAoIm11Y2xpYmMiLCAibWdsaWJjIiwgIm1iaW9uaWMiLCBVLCBHLCBCKQorKyNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUsIEIsIE0pIFwKKysgIENIT09TRV9EWU5BTUlDX0xJTktFUjEgKCJtdWNsaWJjIiwgIm1nbGliYyIsICJtYmlvbmljIiwgIm1tdXNsIiwgVSwgRywgQiwgTSkKKyAjZWxpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19CSU9OSUMKKy0jZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVLCBCKSBcCistICBDSE9PU0VfRFlOQU1JQ19MSU5LRVIxICgibWJpb25pYyIsICJtZ2xpYmMiLCAibXVjbGliYyIsIEIsIEcsIFUpCisrI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIoRywgVSwgQiwgTSkgXAorKyAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSMSAoIm1iaW9uaWMiLCAibWdsaWJjIiwgIm11Y2xpYmMiLCAibW11c2wiLCBCLCBHLCBVLCBNKQorKyNlbGlmIERFRkFVTFRfTElCQyA9PSBMSUJDX01VU0wKKysjZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVLCBCLCBNKSBcCisrICBDSE9PU0VfRFlOQU1JQ19MSU5LRVIxICgibW11c2wiLCAibWdsaWJjIiwgIm11Y2xpYmMiLCAibWJpb25pYyIsIE0sIEcsIFUsIEIpCisgI2Vsc2UKKyAjZXJyb3IgIlVuc3VwcG9ydGVkIERFRkFVTFRfTElCQyIKKyAjZW5kaWYgLyogREVGQVVMVF9MSUJDICovCitAQCAtODQsMTYgKzg5LDE2IEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVEkKKyAKKyAjZGVmaW5lIEdOVV9VU0VSX0RZTkFNSUNfTElOS0VSCQkJCQkJXAorICAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSIChHTElCQ19EWU5BTUlDX0xJTktFUiwgVUNMSUJDX0RZTkFNSUNfTElOS0VSLAlcCistCQkJIEJJT05JQ19EWU5BTUlDX0xJTktFUikKKysJCQkgQklPTklDX0RZTkFNSUNfTElOS0VSLCBNVVNMX0RZTkFNSUNfTElOS0VSKQorICNkZWZpbmUgR05VX1VTRVJfRFlOQU1JQ19MSU5LRVIzMgkJCQkJXAorICAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSIChHTElCQ19EWU5BTUlDX0xJTktFUjMyLCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiwgXAorLQkJCSBCSU9OSUNfRFlOQU1JQ19MSU5LRVIzMikKKysJCQkgQklPTklDX0RZTkFNSUNfTElOS0VSMzIsIE1VU0xfRFlOQU1JQ19MSU5LRVIzMikKKyAjZGVmaW5lIEdOVV9VU0VSX0RZTkFNSUNfTElOS0VSNjQJCQkJCVwKKyAgIENIT09TRV9EWU5BTUlDX0xJTktFUiAoR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCwgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQsIFwKKy0JCQkgQklPTklDX0RZTkFNSUNfTElOS0VSNjQpCisrCQkJIEJJT05JQ19EWU5BTUlDX0xJTktFUjY0LCBNVVNMX0RZTkFNSUNfTElOS0VSNjQpCisgI2RlZmluZSBHTlVfVVNFUl9EWU5BTUlDX0xJTktFUlgzMgkJCQkJXAorICAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSIChHTElCQ19EWU5BTUlDX0xJTktFUlgzMiwgVUNMSUJDX0RZTkFNSUNfTElOS0VSWDMyLCBcCistCQkJIEJJT05JQ19EWU5BTUlDX0xJTktFUlgzMikKKysJCQkgQklPTklDX0RZTkFNSUNfTElOS0VSWDMyLCBNVVNMX0RZTkFNSUNfTElOS0VSWDMyKQorIAorIC8qIFdoZXRoZXIgd2UgaGF2ZSBCaW9uaWMgbGliYyBydW50aW1lICovCisgI3VuZGVmIFRBUkdFVF9IQVNfQklPTklDCitAQCAtMTIzLDMgKzEyOCw3NCBAQCBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJCisgIyBkZWZpbmUgVEFSR0VUX0xJQkNfSEFTX0ZVTkNUSU9OIGxpbnV4X2xpYmNfaGFzX2Z1bmN0aW9uCisgCisgI2VuZGlmCisrCisrLyogbXVzbCBhdm9pZHMgcHJvYmxlbWF0aWMgaW5jbHVkZXMgYnkgcmVhcnJhbmdpbmcgdGhlIGluY2x1ZGUgZGlyZWN0b3JpZXMuCisrICogVW5mb3J0dW5hdGVseSwgdGhpcyBpcyBtb3N0bHkgZHVwbGljYXRlZCBmcm9tIGNwcGRlZmF1bHQuYyAqLworKyNpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19NVVNMCisrI2RlZmluZSBJTkNMVURFX0RFRkFVTFRTX01VU0xfR1BQCQkJXAorKyAgICB7IEdQTFVTUExVU19JTkNMVURFX0RJUiwgIkcrKyIsIDEsIDEsCQlcCisrICAgICAgR1BMVVNQTFVTX0lOQ0xVREVfRElSX0FERF9TWVNST09ULCAwIH0sCQlcCisrICAgIHsgR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVIsICJHKysiLCAxLCAxLAkJXAorKyAgICAgIEdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVCwgMSB9LAkJXAorKyAgICB7IEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUiwgIkcrKyIsIDEsIDEsCVwKKysgICAgICBHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1QsIDAgfSwKKysKKysjaWZkZWYgTE9DQUxfSU5DTFVERV9ESVIKKysjZGVmaW5lIElOQ0xVREVfREVGQVVMVFNfTVVTTF9MT0NBTAkJCVwKKysgICAgeyBMT0NBTF9JTkNMVURFX0RJUiwgMCwgMCwgMSwgMSwgMiB9LAkJXAorKyAgICB7IExPQ0FMX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAxLCAwIH0sCisrI2Vsc2UKKysjZGVmaW5lIElOQ0xVREVfREVGQVVMVFNfTVVTTF9MT0NBTAorKyNlbmRpZgorKworKyNpZmRlZiBQUkVGSVhfSU5DTFVERV9ESVIKKysjZGVmaW5lIElOQ0xVREVfREVGQVVMVFNfTVVTTF9QUkVGSVgJCQlcCisrICAgIHsgUFJFRklYX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAwLCAwfSwKKysjZWxzZQorKyNkZWZpbmUgSU5DTFVERV9ERUZBVUxUU19NVVNMX1BSRUZJWAorKyNlbmRpZgorKworKyNpZmRlZiBDUk9TU19JTkNMVURFX0RJUgorKyNkZWZpbmUgSU5DTFVERV9ERUZBVUxUU19NVVNMX0NST1NTCQkJXAorKyAgICB7IENST1NTX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMCwgMCwgMH0sCisrI2Vsc2UKKysjZGVmaW5lIElOQ0xVREVfREVGQVVMVFNfTVVTTF9DUk9TUworKyNlbmRpZgorKworKyNpZmRlZiBUT09MX0lOQ0xVREVfRElSCisrI2RlZmluZSBJTkNMVURFX0RFRkFVTFRTX01VU0xfVE9PTAkJCVwKKysgICAgeyBUT09MX0lOQ0xVREVfRElSLCAiQklOVVRJTFMiLCAwLCAxLCAwLCAwfSwKKysjZWxzZQorKyNkZWZpbmUgSU5DTFVERV9ERUZBVUxUU19NVVNMX1RPT0wKKysjZW5kaWYKKysKKysjaWZkZWYgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSCisrI2RlZmluZSBJTkNMVURFX0RFRkFVTFRTX01VU0xfTkFUSVZFCQkJXAorKyAgICB7IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUiwgMCwgMCwgMCwgMSwgMiB9LAlcCisrICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSLCAwLCAwLCAwLCAxLCAwIH0sCisrI2Vsc2UKKysjZGVmaW5lIElOQ0xVREVfREVGQVVMVFNfTVVTTF9OQVRJVkUKKysjZW5kaWYKKysKKysjaWYgZGVmaW5lZCAoQ1JPU1NfRElSRUNUT1JZX1NUUlVDVFVSRSkgJiYgIWRlZmluZWQgKFRBUkdFVF9TWVNURU1fUk9PVCkKKysjIHVuZGVmIElOQ0xVREVfREVGQVVMVFNfTVVTTF9MT0NBTAorKyMgZGVmaW5lIElOQ0xVREVfREVGQVVMVFNfTVVTTF9MT0NBTAorKyMgdW5kZWYgSU5DTFVERV9ERUZBVUxUU19NVVNMX05BVElWRQorKyMgZGVmaW5lIElOQ0xVREVfREVGQVVMVFNfTVVTTF9OQVRJVkUKKysjZWxzZQorKyMgdW5kZWYgSU5DTFVERV9ERUZBVUxUU19NVVNMX0NST1NTCisrIyBkZWZpbmUgSU5DTFVERV9ERUZBVUxUU19NVVNMX0NST1NTCisrI2VuZGlmCisrCisrI3VuZGVmIElOQ0xVREVfREVGQVVMVFMKKysjZGVmaW5lIElOQ0xVREVfREVGQVVMVFMJCQkJXAorKyAgewkJCQkJCQlcCisrICAgIElOQ0xVREVfREVGQVVMVFNfTVVTTF9HUFAJCQkJXAorKyAgICBJTkNMVURFX0RFRkFVTFRTX01VU0xfUFJFRklYCQkJXAorKyAgICBJTkNMVURFX0RFRkFVTFRTX01VU0xfQ1JPU1MJCQkJXAorKyAgICBJTkNMVURFX0RFRkFVTFRTX01VU0xfVE9PTAkJCQlcCisrICAgIElOQ0xVREVfREVGQVVMVFNfTVVTTF9OQVRJVkUJCQlcCisrICAgIHsgR0NDX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMSwgMCwgMCB9LAkJXAorKyAgICB7IDAsIDAsIDAsIDAsIDAsIDAgfQkJCQlcCisrICB9CisrI2VuZGlmCitJbmRleDogZ2NjLTUuNC4wL2djYy9jb25maWcvbGludXgub3B0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2NjLTUuNC4wLm9yaWcvZ2NjL2NvbmZpZy9saW51eC5vcHQKKysrKyBnY2MtNS40LjAvZ2NjL2NvbmZpZy9saW51eC5vcHQKK0BAIC0yOCw1ICsyOCw5IEBAIFRhcmdldCBSZXBvcnQgUmVqZWN0TmVnYXRpdmUgVmFyKGxpbnV4X2wKKyBVc2UgR05VIEMgbGlicmFyeQorIAorIG11Y2xpYmMKKy1UYXJnZXQgUmVwb3J0IFJlamVjdE5lZ2F0aXZlIFZhcihsaW51eF9saWJjLExJQkNfVUNMSUJDKSBOZWdhdGl2ZShtYmlvbmljKQorK1RhcmdldCBSZXBvcnQgUmVqZWN0TmVnYXRpdmUgVmFyKGxpbnV4X2xpYmMsTElCQ19VQ0xJQkMpIE5lZ2F0aXZlKG1tdXNsKQorIFVzZSB1Q2xpYmMgQyBsaWJyYXJ5CisrCisrbW11c2wKKytUYXJnZXQgUmVwb3J0IFJlamVjdE5lZ2F0aXZlIFZhcihsaW51eF9saWJjLExJQkNfTVVTTCkgTmVnYXRpdmUobWJpb25pYykKKytVc2UgbXVzbCBDIGxpYnJhcnkKK0luZGV4OiBnY2MtNS40LjAvZ2NjL2NvbmZpZy9yczYwMDAvc2VjdXJlcGx0LmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnY2MtNS40LjAub3JpZy9nY2MvY29uZmlnL3JzNjAwMC9zZWN1cmVwbHQuaAorKysrIGdjYy01LjQuMC9nY2MvY29uZmlnL3JzNjAwMC9zZWN1cmVwbHQuaAorQEAgLTE4LDMgKzE4LDQgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4KKyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworIAorICNkZWZpbmUgQ0MxX1NFQ1VSRV9QTFRfREVGQVVMVF9TUEVDICItbXNlY3VyZS1wbHQiCisrI2RlZmluZSBMSU5LX1NFQ1VSRV9QTFRfREVGQVVMVF9TUEVDICItLXNlY3VyZS1wbHQiCitJbmRleDogZ2NjLTUuNC4wL2djYy9jb25maWcvcnM2MDAwL3N5c3Y0LmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnY2MtNS40LjAub3JpZy9nY2MvY29uZmlnL3JzNjAwMC9zeXN2NC5oCisrKysgZ2NjLTUuNC4wL2djYy9jb25maWcvcnM2MDAwL3N5c3Y0LmgKK0BAIC01MzgsNiArNTM4LDEwIEBAIEVORElBTl9TRUxFQ1QoIiAtbWJpZyIsICIgLW1saXR0bGUiLCBERUYKKyAjZGVmaW5lIENDMV9TRUNVUkVfUExUX0RFRkFVTFRfU1BFQyAiIgorICNlbmRpZgorIAorKyNpZm5kZWYgTElOS19TRUNVUkVfUExUX0RFRkFVTFRfU1BFQworKyNkZWZpbmUgTElOS19TRUNVUkVfUExUX0RFRkFVTFRfU1BFQyAiIgorKyNlbmRpZgorKworIC8qIFBhc3MgLUcgeHh4IHRvIHRoZSBjb21waWxlci4gICovCisgI3VuZGVmIENDMV9TUEVDCisgI2RlZmluZQlDQzFfU1BFQyAiJXtHKn0gJShjYzFfY3B1KSIgXAorQEAgLTg4OSw2ICs4OTMsNyBAQCBuY3J0bi5vJXMiCisgICB7ICJsaW5rX29zX29wZW5ic2QiLAkJTElOS19PU19PUEVOQlNEX1NQRUMgfSwJCQlcCisgICB7ICJsaW5rX29zX2RlZmF1bHQiLAkJTElOS19PU19ERUZBVUxUX1NQRUMgfSwJCQlcCisgICB7ICJjYzFfc2VjdXJlX3BsdF9kZWZhdWx0IiwJQ0MxX1NFQ1VSRV9QTFRfREVGQVVMVF9TUEVDIH0sCQlcCisrICB7ICJsaW5rX3NlY3VyZV9wbHRfZGVmYXVsdCIsCUxJTktfU0VDVVJFX1BMVF9ERUZBVUxUX1NQRUMgfSwJCVwKKyAgIHsgImNwcF9vc19hZHMiLAkJQ1BQX09TX0FEU19TUEVDIH0sCQkJXAorICAgeyAiY3BwX29zX3llbGxvd2tuaWZlIiwJQ1BQX09TX1lFTExPV0tOSUZFX1NQRUMgfSwJCVwKKyAgIHsgImNwcF9vc19tdm1lIiwJCUNQUF9PU19NVk1FX1NQRUMgfSwJCQlcCitJbmRleDogZ2NjLTUuNC4wL2djYy9naW5jbHVkZS9zdGRkZWYuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdjYy01LjQuMC5vcmlnL2djYy9naW5jbHVkZS9zdGRkZWYuaAorKysrIGdjYy01LjQuMC9nY2MvZ2luY2x1ZGUvc3RkZGVmLmgKK0BAIC0xODQsNiArMTg0LDcgQEAgdHlwZWRlZiBfX1BUUkRJRkZfVFlQRV9fIHB0cmRpZmZfdDsKKyAjaWZuZGVmIF9HQ0NfU0laRV9UCisgI2lmbmRlZiBfU0laRVRfCisgI2lmbmRlZiBfX3NpemVfdAorKyNpZm5kZWYgX19ERUZJTkVEX3NpemVfdCAvKiBtdXNsICovCisgI2RlZmluZSBfX3NpemVfdF9fCS8qIEJlT1MgKi8KKyAjZGVmaW5lIF9fU0laRV9UX18JLyogQ3JheSBVbmljb3MvTWsgKi8KKyAjZGVmaW5lIF9TSVpFX1QKK0BAIC0yMDAsNiArMjAxLDcgQEAgdHlwZWRlZiBfX1BUUkRJRkZfVFlQRV9fIHB0cmRpZmZfdDsKKyAjZGVmaW5lIF9fX2ludF9zaXplX3RfaAorICNkZWZpbmUgX0dDQ19TSVpFX1QKKyAjZGVmaW5lIF9TSVpFVF8KKysjZGVmaW5lIF9fREVGSU5FRF9zaXplX3QgLyogbXVzbCAqLworICNpZiAoZGVmaW5lZCAoX19GcmVlQlNEX18pICYmIChfX0ZyZWVCU0RfXyA+PSA1KSkgXAorICAgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKSBcCisgICB8fCBkZWZpbmVkKF9fRnJlZUJTRF9rZXJuZWxfXykKK0BAIC0yMTgsNiArMjIwLDcgQEAgdHlwZWRlZiBfX1NJWkVfVFlQRV9fIHNpemVfdDsKKyB0eXBlZGVmIGxvbmcgc3NpemVfdDsKKyAjZW5kaWYgLyogX19CRU9TX18gKi8KKyAjZW5kaWYgLyogIShkZWZpbmVkIChfX0dOVUdfXykgJiYgZGVmaW5lZCAoc2l6ZV90KSkgKi8KKysjZW5kaWYgLyogX19ERUZJTkVEX3NpemVfdCAqLworICNlbmRpZiAvKiBfX3NpemVfdCAqLworICNlbmRpZiAvKiBfU0laRVRfICovCisgI2VuZGlmIC8qIF9HQ0NfU0laRV9UICovCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS4zLzAwNDUtU3VwcG9ydC1mb3ItYXJtLWxpbnV4LW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDUtU3VwcG9ydC1mb3ItYXJtLWxpbnV4LW11c2wucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDA0NS1TdXBwb3J0LWZvci1hcm0tbGludXgtbXVzbC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDQ1LVN1cHBvcnQtZm9yLWFybS1saW51eC1tdXNsLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS4zLzAwNDYtR2V0LXJpZC1vZi1ldmVyLWJyb2tlbi1maXhpbmNsdWRlcy1vbi1tdXNsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDQ2LUdldC1yaWQtb2YtZXZlci1icm9rZW4tZml4aW5jbHVkZXMtb24tbXVzbC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuMy8wMDQ2LUdldC1yaWQtb2YtZXZlci1icm9rZW4tZml4aW5jbHVkZXMtb24tbXVzbC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDQ2LUdldC1yaWQtb2YtZXZlci1icm9rZW4tZml4aW5jbHVkZXMtb24tbXVzbC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuMy8wMDQ3LW5pb3MyLURlZmluZS1NVVNMX0RZTkFNSUNfTElOS0VSLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDQ3LW5pb3MyLURlZmluZS1NVVNMX0RZTkFNSUNfTElOS0VSLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS4zLzAwNDctbmlvczItRGVmaW5lLU1VU0xfRFlOQU1JQ19MSU5LRVIucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA0Ny1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuMy8wMDQ4LXNzcF9ub25zaGFyZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDgtc3NwX25vbnNoYXJlZC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuMy8wMDQ4LXNzcF9ub25zaGFyZWQucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA0OC1zc3Bfbm9uc2hhcmVkLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS4zLzAwNDktRGlzYWJsZS10aGUtd2Vhay1yZWZlcmVuY2UtbG9naWMtaW4tZ3Roci5oLWZvci1vcy1nZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA0OS1EaXNhYmxlLXRoZS13ZWFrLXJlZmVyZW5jZS1sb2dpYy1pbi1ndGhyLmgtZm9yLW9zLWdlLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS4zLzAwNDktRGlzYWJsZS10aGUtd2Vhay1yZWZlcmVuY2UtbG9naWMtaW4tZ3Roci5oLWZvci1vcy1nZS5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDQ5LURpc2FibGUtdGhlLXdlYWstcmVmZXJlbmNlLWxvZ2ljLWluLWd0aHIuaC1mb3Itb3MtZ2UucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDA1MC1wb3dlcnBjLXBhc3Mtc2VjdXJlLXBsdC10by10aGUtbGlua2VyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDUwLXBvd2VycGMtcGFzcy1zZWN1cmUtcGx0LXRvLXRoZS1saW5rZXIucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDA1MC1wb3dlcnBjLXBhc3Mtc2VjdXJlLXBsdC10by10aGUtbGlua2VyLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNTAtcG93ZXJwYy1wYXNzLXNlY3VyZS1wbHQtdG8tdGhlLWxpbmtlci5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuMy8wMDUxLUlnbm9yZS1mZGVidWctcHJlZml4LW1hcC1pbi1wcm9kdWNlci1zdHJpbmctYnktRGFuaWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNTEtSWdub3JlLWZkZWJ1Zy1wcmVmaXgtbWFwLWluLXByb2R1Y2VyLXN0cmluZy1ieS1EYW5pZS5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuMy8wMDUxLUlnbm9yZS1mZGVidWctcHJlZml4LW1hcC1pbi1wcm9kdWNlci1zdHJpbmctYnktRGFuaWUucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1MS1JZ25vcmUtZmRlYnVnLXByZWZpeC1tYXAtaW4tcHJvZHVjZXItc3RyaW5nLWJ5LURhbmllLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS4zLzAwNTItbmlvczItdXNlLXJldC13aXRoLXIzMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1Mi1uaW9zMi11c2UtcmV0LXdpdGgtcjMxLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS4zLzAwNTItbmlvczItdXNlLXJldC13aXRoLXIzMS5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDUyLW5pb3MyLXVzZS1yZXQtd2l0aC1yMzEucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDA1My1leHByLmMtUFItdGFyZ2V0LTY1MzU4LUF2b2lkLWNsb2JiZXJpbmctcGFydGlhbC1hcmd1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDUzLWV4cHIuYy1QUi10YXJnZXQtNjUzNTgtQXZvaWQtY2xvYmJlcmluZy1wYXJ0aWFsLWFyZ3UucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDA1My1leHByLmMtUFItdGFyZ2V0LTY1MzU4LUF2b2lkLWNsb2JiZXJpbmctcGFydGlhbC1hcmd1LnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNTMtZXhwci5jLVBSLXRhcmdldC02NTM1OC1Bdm9pZC1jbG9iYmVyaW5nLXBhcnRpYWwtYXJndS5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuMy8wMDU0LXN1cHBvcnQtZmZpbGUtcHJlZml4LW1hcC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1NC1zdXBwb3J0LWZmaWxlLXByZWZpeC1tYXAucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDA1NC1zdXBwb3J0LWZmaWxlLXByZWZpeC1tYXAucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1NC1zdXBwb3J0LWZmaWxlLXByZWZpeC1tYXAucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDA1NS1SZXVzZS1mZGVidWctcHJlZml4LW1hcC10by1yZXBsYWNlLWZmaWxlLXByZWZpeC1tYXAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNTUtUmV1c2UtZmRlYnVnLXByZWZpeC1tYXAtdG8tcmVwbGFjZS1mZmlsZS1wcmVmaXgtbWFwLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS4zLzAwNTUtUmV1c2UtZmRlYnVnLXByZWZpeC1tYXAtdG8tcmVwbGFjZS1mZmlsZS1wcmVmaXgtbWFwLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNTUtUmV1c2UtZmRlYnVnLXByZWZpeC1tYXAtdG8tcmVwbGFjZS1mZmlsZS1wcmVmaXgtbWFwLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS4zLzAwNTYtRW5hYmxlLWxpYmMtcHJvdmlkZS1zc3AtYW5kLWdjY19jdl90YXJnZXRfZGxfaXRlcmF0ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1Ni1FbmFibGUtbGliYy1wcm92aWRlLXNzcC1hbmQtZ2NjX2N2X3RhcmdldF9kbF9pdGVyYXRlLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS4zLzAwNTYtRW5hYmxlLWxpYmMtcHJvdmlkZS1zc3AtYW5kLWdjY19jdl90YXJnZXRfZGxfaXRlcmF0ZS5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDU2LUVuYWJsZS1saWJjLXByb3ZpZGUtc3NwLWFuZC1nY2NfY3ZfdGFyZ2V0X2RsX2l0ZXJhdGUucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDA1Ny11bndpbmQtZml4LWZvci1tdXNsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDU3LXVud2luZC1maXgtZm9yLW11c2wucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDA1Ny11bndpbmQtZml4LWZvci1tdXNsLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNTctdW53aW5kLWZpeC1mb3ItbXVzbC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuMy8wMDU4LWZkZWJ1Zy1wcmVmaXgtbWFwLXN1cHBvcnQtdG8tcmVtYXAtcmVsYXRpdmUtcGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1OC1mZGVidWctcHJlZml4LW1hcC1zdXBwb3J0LXRvLXJlbWFwLXJlbGF0aXZlLXBhdGgucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjMvMDA1OC1mZGVidWctcHJlZml4LW1hcC1zdXBwb3J0LXRvLXJlbWFwLXJlbGF0aXZlLXBhdGgucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1OC1mZGVidWctcHJlZml4LW1hcC1zdXBwb3J0LXRvLXJlbWFwLXJlbGF0aXZlLXBhdGgucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1OS1saWJnY2MtdXNlLWxkZmxhZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNTktbGliZ2NjLXVzZS1sZGZsYWdzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyNWI3MmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNTktbGliZ2NjLXVzZS1sZGZsYWdzLnBhdGNoCkBAIC0wLDAgKzEsMTYgQEAKK0xpbmsgbGliZ2NjIHVzaW5nIExERkxBR1MsIG5vdCBqdXN0IFNITElCX0xERkxBR1MKKworU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCistLS0gZ2NjLTUuMy4wLm9yaWcvbGliZ2NjL2NvbmZpZy90LXNsaWJnY2MKKysrKyBnY2MtNS4zLjAvbGliZ2NjL2NvbmZpZy90LXNsaWJnY2MKK0BAIC0zMiw3ICszMiw3IEBAIFNITElCX0lOU1RBTExfU09MSU5LID0gJChMTl9TKSAkKFNITElCX1MKKyAJJChERVNURElSKSQoc2xpYmRpcikkKFNITElCX1NMSUJESVJfUVVBTCkvJChTSExJQl9TT0xJTkspCisgCisgU0hMSUJfTElOSyA9ICQoQ0MpICQoTElCR0NDMl9DRkxBR1MpIC1zaGFyZWQgLW5vZGVmYXVsdGxpYnMgXAorLQkkKFNITElCX0xERkxBR1MpIFwKKysJJChMREZMQUdTKSAkKFNITElCX0xERkxBR1MpIFwKKyAJLW8gJChTSExJQl9ESVIpLyQoU0hMSUJfU09OQU1FKS50bXAgQG11bHRpbGliX2ZsYWdzQCBcCisgCSQoU0hMSUJfT0JKUykgJChTSExJQl9MQykgJiYgXAorIAlybSAtZiAkKFNITElCX0RJUikvJChTSExJQl9TT0xJTkspICYmIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjExODk5NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIuaW5jCkBAIC0wLDAgKzEsMTMzIEBACityZXF1aXJlIGdjYy1jb21tb24uaW5jCisKKyMgVGhpcmQgZGlnaXQgaW4gUFYgc2hvdWxkIGJlIGluY3JlbWVudGVkIGFmdGVyIGEgbWlub3IgcmVsZWFzZQorCitQViA9ICI2LjIuMCIKKworIyBCSU5WIHNob3VsZCBiZSBpbmNyZW1lbnRlZCB0byBhIHJldmlzaW9uIGFmdGVyIGEgbWlub3IgZ2NjIHJlbGVhc2UKKworQklOViA9ICI2LjIuMCIKKworRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vZ2NjLTYuMjoke0ZJTEVfRElSTkFNRX0vZ2NjLTYuMi9iYWNrcG9ydDoiCisKK0RFUEVORFMgPSsgIm1wZnIgZ21wIGxpYm1wYyB6bGliIgorTkFUSVZFREVQUyA9ICJtcGZyLW5hdGl2ZSBnbXAtbmF0aXZlIGxpYm1wYy1uYXRpdmUgemxpYi1uYXRpdmUiCisKK0xJQ0VOU0UgPSAiR1BMLTMuMC13aXRoLUdDQy1leGNlcHRpb24gJiBHUEx2MyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJcCisgICAgZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIFwKKyAgICBmaWxlOi8vQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICBmaWxlOi8vQ09QWUlORzMuTElCO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiBcCisgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSBcCisgICAgZmlsZTovL0NPUFlJTkcuUlVOVElNRTttZDU9ZmU2MGQ4NzA0ODU2N2Q0ZmU4YzhhMGVkMjQ0OGJjYzggXAorIgorCisKK0JBU0VVUkkgPz0gIiR7R05VX01JUlJPUn0vZ2NjL2djYy0ke1BWfS9nY2MtJHtQVn0udGFyLmJ6MiIKKyNTUkNSRVYgPSAiYmQ5YTgyNmQ1NDQ4ZGIxMWQyOWQyZWM1ODg0ZTdlNjc5MDY2ZjE0MCIKKyNCQVNFVVJJID89ICJnaXQ6Ly9naXRodWIuY29tL2djYy1taXJyb3IvZ2NjO2JyYW5jaD1nY2MtNi1icmFuY2g7cHJvdG9jb2w9Z2l0IgorI0JBU0VVUkkgPz0gImZ0cDovL3NvdXJjZXdhcmUub3JnL3B1Yi9nY2Mvc25hcHNob3RzLzYuMi4wLVJDLTIwMTYwODE1L2djYy02LjIuMC1SQy0yMDE2MDgxNS50YXIuYnoyIgorCitTUkNfVVJJID0gIlwKKyAgICAgICAgICAgJHtCQVNFVVJJfSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWdjYy00LjMuMS1BUkNIX0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi11Y2xpYmMtY29uZi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLWdjYy11Y2xpYmMtbG9jYWxlLWN0eXBlX3RvdXBsb3dfdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LXVjbGliYy1sb2NhbGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS11Y2xpYmMtbG9jYWxlLW5vX194LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtdWNsaWJjLWxvY2FsZS13Y2hhcl9maXgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNy11Y2xpYmMtbG9jYWxlLXVwZGF0ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA4LW1pc3NpbmctZXhlY2luZm9faC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA5LWM5OS1zbnByaW50Zi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEwLWdjYy1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTEtZ2NjLXBvaXNvbi1kaXItZXh0ZW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTItZ2NjLTQuMy4zLVNZU1JPT1RfQ0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMy02NC1iaXQtbXVsdGlsaWItaGFjay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE0LW9wdGlvbmFsLWxpYnN0ZGMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNS1nY2MtZGlzYWJsZS1NQVNLX1JFTEFYX1BJQ19DQUxMUy1iaXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNi1DT0xMRUNUX0dDQ19PUFRJT05TLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTctVXNlLXRoZS1kZWZhdWx0cy5oLWluLUItaW5zdGVhZC1vZi1TLWFuZC10LW9lLWluLUIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxOC1mb3J0cmFuLWNyb3NzLWNvbXBpbGUtaGFjay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE5LWNwcC1ob25vci1zeXNyb290LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjAtTUlQUzY0LURlZmF1bHQtdG8tTjY0LUFCSS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIxLURlZmluZS1HTElCQ19EWU5BTUlDX0xJTktFUi1hbmQtVUNMSUJDX0RZTkFNSUNfTElOS0UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMi1nY2MtRml4LWFyZ3VtZW50LWxpc3QtdG9vLWxvbmctZXJyb3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMy1EaXNhYmxlLXNkdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI0LWxpYnRvb2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNS1nY2MtYXJtdjQtcGFzcy1maXgtdjRieC10by1saW5rZXItdG8tc3VwcG9ydC1FQUJJLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjYtVXNlLXRoZS1tdWx0aWxpYi1jb25maWctZmlsZXMtZnJvbS1CLWluc3RlYWQtb2YtdXNpbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI3LUF2b2lkLXVzaW5nLWxpYmRpci1mcm9tLS5sYS13aGljaC11c3VhbGx5LXBvaW50cy10by0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyOC1leHBvcnQtQ1BQLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjktRW5hYmxlLVNQRS1BbHRpVmVjLWdlbmVyYXRpb24tb24tcG93ZXBjLWxpbnV4LXRhcmdldC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDMwLURpc2FibGUtdGhlLU1VTFRJTElCX09TRElSTkFNRVMtYW5kLW90aGVyLW11bHRpbGliLW8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzMS1FbnN1cmUtdGFyZ2V0LWdjYy1oZWFkZXJzLWNhbi1iZS1pbmNsdWRlZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDMyLWdjYy00Ljgtd29uLXQtYnVpbGQtd2l0aC1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzMy1Eb24tdC1zZWFyY2gtaG9zdC1kaXJlY3RvcnktZHVyaW5nLXJlbGluay1pZi1pbnN0X3ByLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzQtVXNlLVNZU1RFTUxJQlNfRElSLXJlcGxhY2VtZW50LWluc3RlYWQtb2YtaGFyZGNvZGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM1LWFhcmNoNjQtQWRkLXN1cHBvcnQtZm9yLW11c2wtbGRzby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM2LWxpYmNjMS1maXgtbGliY2MxLXMtaW5zdGFsbC1wYXRoLWFuZC1ycGF0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM3LWhhbmRsZS1zeXNyb290LXN1cHBvcnQtZm9yLW5hdGl2ZXNkay1nY2MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzOC1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzktRml4LXZhcmlvdXMtX0ZPUl9CVUlMRC1hbmQtcmVsYXRlZC12YXJpYWJsZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDA0MC1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDQxLXNzcF9ub25zaGFyZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDA0Mi1nY2MtbGliY3BwLXN1cHBvcnQtZmZpbGUtcHJlZml4LW1hcC1vbGQtbmV3LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwNDMtUmV1c2UtZmRlYnVnLXByZWZpeC1tYXAtdG8tcmVwbGFjZS1mZmlsZS1wcmVmaXgtbWFwLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwNDQtZ2NjLWZpbmFsLmMtZmRlYnVnLXByZWZpeC1tYXAtc3VwcG9ydC10by1yZW1hcC1zb3VyYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDQ1LWxpYmdjYy1BZGQta25vYi10by11c2UtbGRibC0xMjgtb24tcHBjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwNDYtTGluay1saWJnY2MtdXNpbmctTERGTEFHUy1ub3QtanVzdC1TSExJQl9MREZMQUdTLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwNDctbGliZ2NjX3MtVXNlLWFsaWFzLWZvci1fX2NwdV9pbmRpY2F0b3JfaW5pdC1pbnN0ZWFkLS5wYXRjaCBcCisgICAgICAgICAgICR7QkFDS1BPUlRTfSBcCisiCitCQUNLUE9SVFMgPSAiIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOTc2ODYyNTE1OTY2M2IzMDBhZTRkZTJmNDc0NWZjYzQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTk0NDU4OWZjNzIyZDNlNjYzMDhjMGNlNTI1Nzc4OGViZDc4NzI5ODJhNzE4YWEyNTE2MTIzOTQwNjcxYjdjNSIKKworUyA9ICIke1RNUERJUn0vd29yay1zaGFyZWQvZ2NjLSR7UFZ9LSR7UFJ9L2djYy0ke1BWfSIKKyNTID0gIiR7VE1QRElSfS93b3JrLXNoYXJlZC9nY2MtJHtQVn0tJHtQUn0vZ2l0IgorQiA9ICIke1dPUktESVJ9L2djYy0ke1BWfS9idWlsZC4ke0hPU1RfU1lTfS4ke1RBUkdFVF9TWVN9IgorCisjIExhbmd1YWdlIE92ZXJyaWRlcworRk9SVFJBTiA9ICIiCitKQVZBID0gIiIKKworTFRPID0gIi0tZW5hYmxlLWx0byIKKworRVhUUkFfT0VDT05GX0JBU0UgPSAiXAorICAgICR7TFRPfSBcCisgICAgLS1lbmFibGUtbGlic3NwIFwKKyAgICAtLWVuYWJsZS1saWJpdG0gXAorICAgIC0tZGlzYWJsZS1ib290c3RyYXAgXAorICAgIC0tZGlzYWJsZS1saWJtdWRmbGFwIFwKKyAgICAtLXdpdGgtc3lzdGVtLXpsaWIgXAorICAgIC0td2l0aC1saW5rZXItaGFzaC1zdHlsZT0ke0xJTktFUl9IQVNIX1NUWUxFfSBcCisgICAgLS1lbmFibGUtbGlua2VyLWJ1aWxkLWlkIFwKKyAgICAtLXdpdGgtcHBsPW5vIFwKKyAgICAtLXdpdGgtY2xvb2c9bm8gXAorICAgIC0tZW5hYmxlLWNoZWNraW5nPXJlbGVhc2UgXAorICAgIC0tZW5hYmxlLWNoZWFkZXJzPWNfZ2xvYmFsIFwKKyAgICAtLXdpdGhvdXQtaXNsIFwKKyIKKworRVhUUkFfT0VDT05GX0lOSVRJQUwgPSAiXAorICAgIC0tZGlzYWJsZS1saWJtdWRmbGFwIFwKKyAgICAtLWRpc2FibGUtbGliZ29tcCBcCisgICAgLS1kaXNhYmxlLWxpYml0bSBcCisgICAgLS1kaXNhYmxlLWxpYnF1YWRtYXRoIFwKKyAgICAtLXdpdGgtc3lzdGVtLXpsaWIgXAorICAgIC0tZGlzYWJsZS1sdG8gXAorICAgIC0tZGlzYWJsZS1wbHVnaW4gXAorICAgIC0tZW5hYmxlLWRlY2ltYWwtZmxvYXQ9bm8gXAorICAgIC0td2l0aG91dC1pc2wgXAorICAgIGdjY19jdl9saWJjX3Byb3ZpZGVzX3NzcD15ZXMgXAorIgorCitFWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAtLWRpc2FibGUtZGVjaW1hbC1mbG9hdCAiCisKK0VYVFJBX09FQ09ORl9QQVRIUyA9ICJcCisgICAgLS13aXRoLWd4eC1pbmNsdWRlLWRpcj0vbm90L2V4aXN0e3RhcmdldF9pbmNsdWRlZGlyfS9jKysvJHtCSU5WfSBcCisgICAgLS13aXRoLXN5c3Jvb3Q9L25vdC9leGlzdCBcCisgICAgLS13aXRoLWJ1aWxkLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAwMS1nY2MtNC4zLjEtQVJDSF9GTEFHU19GT1JfVEFSR0VULnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDAxLWdjYy00LjMuMS1BUkNIX0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDE1ZjA5MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAwMS1nY2MtNC4zLjEtQVJDSF9GTEFHU19GT1JfVEFSR0VULnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gOTJlZDMwZGExNmI3NDg3YjMzNGY3MzliZTE3N2ViMzk4ODVhYjc3MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjM3OjExICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMDEvNDZdIGdjYy00LjMuMTogQVJDSF9GTEFHU19GT1JfVEFSR0VUCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCistLS0KKyBjb25maWd1cmUgICAgfCAyICstCisgY29uZmlndXJlLmFjIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCitpbmRleCAzNWYyMzFlLi5iZmFkYzMzIDEwMDc1NQorLS0tIGEvY29uZmlndXJlCisrKysgYi9jb25maWd1cmUKK0BAIC03NTUwLDcgKzc1NTAsNyBAQCBmaQorICMgZm9yIHRhcmdldF9hbGlhcyBhbmQgZ2NjIGRvZXNuJ3QgbWFuYWdlIGl0IGNvbnNpc3RlbnRseS4KKyB0YXJnZXRfY29uZmlnYXJncz0iLS1jYWNoZS1maWxlPS4vY29uZmlnLmNhY2hlICR7dGFyZ2V0X2NvbmZpZ2FyZ3N9IgorIAorLUZMQUdTX0ZPUl9UQVJHRVQ9CisrRkxBR1NfRk9SX1RBUkdFVD0iJEFSQ0hfRkxBR1NfRk9SX1RBUkdFVCIKKyBjYXNlICIgJHRhcmdldF9jb25maWdkaXJzICIgaW4KKyAgKiIgbmV3bGliICIqKQorICAgY2FzZSAiICR0YXJnZXRfY29uZmlnYXJncyAiIGluCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA3NGJmNThhLi4xOTdkNjFiIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0zMTQ5LDcgKzMxNDksNyBAQCBmaQorICMgZm9yIHRhcmdldF9hbGlhcyBhbmQgZ2NjIGRvZXNuJ3QgbWFuYWdlIGl0IGNvbnNpc3RlbnRseS4KKyB0YXJnZXRfY29uZmlnYXJncz0iLS1jYWNoZS1maWxlPS4vY29uZmlnLmNhY2hlICR7dGFyZ2V0X2NvbmZpZ2FyZ3N9IgorIAorLUZMQUdTX0ZPUl9UQVJHRVQ9CisrRkxBR1NfRk9SX1RBUkdFVD0iJEFSQ0hfRkxBR1NfRk9SX1RBUkdFVCIKKyBjYXNlICIgJHRhcmdldF9jb25maWdkaXJzICIgaW4KKyAgKiIgbmV3bGliICIqKQorICAgY2FzZSAiICR0YXJnZXRfY29uZmlnYXJncyAiIGluCistLSAKKzIuOC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAwMi11Y2xpYmMtY29uZi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAwMi11Y2xpYmMtY29uZi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDI4NGVmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDAyLXVjbGliYy1jb25mLnBhdGNoCkBAIC0wLDAgKzEsNTMgQEAKK0Zyb20gNGVmYzVhMjU4YzgxMjg3NTc0MzY0N2Q3NTZmNzVjOTNjNGQ1MTRhNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjM4OjI1ICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMDIvNDZdIHVjbGliYy1jb25mCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgY29udHJpYi9yZWdyZXNzaW9uL29ianMtZ2NjLnNoIHwgNCArKysrCisgbGliamF2YS9jbGFzc3BhdGgvbHRjb25maWcgICAgIHwgNCArKy0tCisgMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb250cmliL3JlZ3Jlc3Npb24vb2Jqcy1nY2Muc2ggYi9jb250cmliL3JlZ3Jlc3Npb24vb2Jqcy1nY2Muc2gKK2luZGV4IDYwYjA0OTcuLjZkYzdlYWQgMTAwNzU1CistLS0gYS9jb250cmliL3JlZ3Jlc3Npb24vb2Jqcy1nY2Muc2gKKysrKyBiL2NvbnRyaWIvcmVncmVzc2lvbi9vYmpzLWdjYy5zaAorQEAgLTEwNiw2ICsxMDYsMTAgQEAgaWYgWyAkSF9SRUFMX1RBUkdFVCA9ICRIX1JFQUxfSE9TVCAtYSAkSF9SRUFMX1RBUkdFVCA9IGk2ODYtcGMtbGludXgtZ251IF0KKyAgdGhlbgorICAgbWFrZSBhbGwtZ2RiIGFsbC1kZWphZ251IGFsbC1sZCB8fCBleGl0IDEKKyAgIG1ha2UgaW5zdGFsbC1nZGIgaW5zdGFsbC1kZWphZ251IGluc3RhbGwtbGQgfHwgZXhpdCAxCisrZWxpZiBbICRIX1JFQUxfVEFSR0VUID0gJEhfUkVBTF9IT1NUIC1hICRIX1JFQUxfVEFSR0VUID0gaTY4Ni1wYy1saW51eC11Y2xpYmMgXQorKyB0aGVuCisrICBtYWtlIGFsbC1nZGIgYWxsLWRlamFnbnUgYWxsLWxkIHx8IGV4aXQgMQorKyAgbWFrZSBpbnN0YWxsLWdkYiBpbnN0YWxsLWRlamFnbnUgaW5zdGFsbC1sZCB8fCBleGl0IDEKKyBlbGlmIFsgJEhfUkVBTF9UQVJHRVQgPSAkSF9SRUFMX0hPU1QgXSA7IHRoZW4KKyAgIG1ha2UgYm9vdHN0cmFwIHx8IGV4aXQgMQorICAgbWFrZSBpbnN0YWxsIHx8IGV4aXQgMQorZGlmZiAtLWdpdCBhL2xpYmphdmEvY2xhc3NwYXRoL2x0Y29uZmlnIGIvbGliamF2YS9jbGFzc3BhdGgvbHRjb25maWcKK2luZGV4IGQzMTg5NTcuLmRmNTU5NTAgMTAwNzU1CistLS0gYS9saWJqYXZhL2NsYXNzcGF0aC9sdGNvbmZpZworKysrIGIvbGliamF2YS9jbGFzc3BhdGgvbHRjb25maWcKK0BAIC02MDMsNyArNjAzLDcgQEAgaG9zdF9vcz1gZWNobyAkaG9zdCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wzLydgCisgCisgIyBUcmFuc2Zvcm0gbGludXgqIHRvICotKi1saW51eC1nbnUqLCB0byBzdXBwb3J0IG9sZCBjb25maWd1cmUgc2NyaXB0cy4KKyBjYXNlICRob3N0X29zIGluCistbGludXgtZ251KikgOzsKKytsaW51eC1nbnUqfGxpbnV4LXVjbGliYyopIDs7CisgbGludXgqKSBob3N0PWBlY2hvICRob3N0IHwgc2VkICdzL15cKC4qLS4qLWxpbnV4XClcKC4qXCkkL1wxLWdudVwyLydgCisgZXNhYworIAorQEAgLTEyNDcsNyArMTI0Nyw3IEBAIGxpbnV4LWdudW9sZGxkKiB8IGxpbnV4LWdudWFvdXQqIHwgbGludXgtZ251Y29mZiopCisgICA7OworIAorICMgVGhpcyBtdXN0IGJlIExpbnV4IEVMRi4KKy1saW51eC1nbnUqKQorK2xpbnV4KikKKyAgIHZlcnNpb25fdHlwZT1saW51eAorICAgbmVlZF9saWJfcHJlZml4PW5vCisgICBuZWVkX3ZlcnNpb249bm8KKy0tIAorMi44LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDAzLWdjYy11Y2xpYmMtbG9jYWxlLWN0eXBlX3RvdXBsb3dfdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAwMy1nY2MtdWNsaWJjLWxvY2FsZS1jdHlwZV90b3VwbG93X3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGYwN2ZlYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAwMy1nY2MtdWNsaWJjLWxvY2FsZS1jdHlwZV90b3VwbG93X3QucGF0Y2gKQEAgLTAsMCArMSw4NyBAQAorRnJvbSBhZDVmZDI4M2ZjN2VmMDRmNjZjN2ZiMDAzODA1MzY0ZWEzYmQzNGU5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6NDA6MTIgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAwMy80Nl0gZ2NjLXVjbGliYy1sb2NhbGUtY3R5cGVfdG91cGxvd190CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5jYyB8IDUgKysrKysKKyBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS9nZW5lcmljL2NfbG9jYWxlLmggIHwgOSArKysrKysrKysKKyBsaWJzdGRjKystdjMvY29uZmlnL29zL2dudS1saW51eC9jdHlwZV9iYXNlLmggIHwgOSArKysrKysrKysKKyAzIGZpbGVzIGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL2dlbmVyaWMvY19sb2NhbGUuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS9nZW5lcmljL2NfbG9jYWxlLmNjCitpbmRleCBlZjZjZThmLi40NzQwNjM2IDEwMDY0NAorLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5jYworKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5jYworQEAgLTI3Myw1ICsyNzMsMTAgQEAgX0dMSUJDWFhfRU5EX05BTUVTUEFDRV9WRVJTSU9OCisgI2lmZGVmIF9HTElCQ1hYX0xPTkdfRE9VQkxFX0NPTVBBVAorICNkZWZpbmUgX0dMSUJDWFhfTERCTF9DT01QQVQoZGJsLCBsZGJsKSBcCisgICBleHRlcm4gIkMiIHZvaWQgbGRibCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKGFsaWFzICgjZGJsKSkpCisrI2lmZGVmIF9fVUNMSUJDX18KKysvLyBUaGlzIGlzIGJlY2F1c2UgX19jX2xvY2FsZSBpcyBvZiB0eXBlIF9fY3R5cGVfdG91cGxvd190KiB3aGljaCBpcyBzaG9ydCBvbiB1Y2xpYmMuIGZvciBnbGliYyBpdHMgaW50KgorK19HTElCQ1hYX0xEQkxfQ09NUEFUKF9aU3QxNF9fY29udmVydF90b192SWRFdlBLY1JUX1JTdDEyX0lvc19Jb3N0YXRlUktQcywgX1pTdDE0X19jb252ZXJ0X3RvX3ZJZUV2UEtjUlRfUlN0MTJfSW9zX0lvc3RhdGVSS1BzKTsKKysjZWxzZQorIF9HTElCQ1hYX0xEQkxfQ09NUEFUKF9aU3QxNF9fY29udmVydF90b192SWRFdlBLY1JUX1JTdDEyX0lvc19Jb3N0YXRlUktQaSwgX1pTdDE0X19jb252ZXJ0X3RvX3ZJZUV2UEtjUlRfUlN0MTJfSW9zX0lvc3RhdGVSS1BpKTsKKysjZW5kaWYKKyAjZW5kaWYgLy8gX0dMSUJDWFhfTE9OR19ET1VCTEVfQ09NUEFUCitkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5oCitpbmRleCA3OTQ0NzFlLi5kNjVmOTU1IDEwMDY0NAorLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5oCisrKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS9nZW5lcmljL2NfbG9jYWxlLmgKK0BAIC00MCwxMyArNDAsMjIgQEAKKyAKKyAjaW5jbHVkZSA8Y2xvY2FsZT4KKyAKKysjaWZkZWYgX19VQ0xJQkNfXworKyNpbmNsdWRlIDxmZWF0dXJlcy5oPgorKyNpbmNsdWRlIDxjdHlwZS5oPgorKyNlbmRpZgorKworICNkZWZpbmUgX0dMSUJDWFhfTlVNX0NBVEVHT1JJRVMgMAorIAorIG5hbWVzcGFjZSBzdGQgX0dMSUJDWFhfVklTSUJJTElUWShkZWZhdWx0KQorIHsKKyBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgorIAorKyNpZmRlZiBfX1VDTElCQ19fCisrICB0eXBlZGVmIF9fY3R5cGVfdG91cGxvd190KglfX2NfbG9jYWxlOworKyNlbHNlCisgICB0eXBlZGVmIGludCoJCQlfX2NfbG9jYWxlOworKyNlbmRpZgorIAorICAgLy8gQ29udmVydCBudW1lcmljIHZhbHVlIG9mIHR5cGUgZG91YmxlIGFuZCBsb25nIGRvdWJsZSB0byBzdHJpbmcgYW5kCisgICAvLyByZXR1cm4gbGVuZ3RoIG9mIHN0cmluZy4gIElmIHZzbnByaW50ZiBpcyBhdmFpbGFibGUgdXNlIGl0LCBvdGhlcndpc2UKK2RpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL29zL2dudS1saW51eC9jdHlwZV9iYXNlLmggYi9saWJzdGRjKystdjMvY29uZmlnL29zL2dudS1saW51eC9jdHlwZV9iYXNlLmgKK2luZGV4IDU5MWM3OTMuLjU1ZWIwZTkgMTAwNjQ0CistLS0gYS9saWJzdGRjKystdjMvY29uZmlnL29zL2dudS1saW51eC9jdHlwZV9iYXNlLmgKKysrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvb3MvZ251LWxpbnV4L2N0eXBlX2Jhc2UuaAorQEAgLTMzLDYgKzMzLDExIEBACisgCisgLy8gSW5mb3JtYXRpb24gYXMgZ2xlYW5lZCBmcm9tIC91c3IvaW5jbHVkZS9jdHlwZS5oCisgCisrI2lmZGVmIF9fVUNMSUJDX18KKysjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KKysjaW5jbHVkZSA8Y3R5cGUuaD4KKysjZW5kaWYKKysKKyBuYW1lc3BhY2Ugc3RkIF9HTElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkKKyB7CisgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KK0BAIC00MSw3ICs0NiwxMSBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgorICAgc3RydWN0IGN0eXBlX2Jhc2UKKyAgIHsKKyAgICAgLy8gTm9uLXN0YW5kYXJkIHR5cGVkZWZzLgorKyNpZmRlZiBfX1VDTElCQ19fCisrICAgIHR5cGVkZWYgY29uc3QgX19jdHlwZV90b3VwbG93X3QqCV9fdG9fdHlwZTsKKysjZWxzZQorICAgICB0eXBlZGVmIGNvbnN0IGludCogCQlfX3RvX3R5cGU7CisrI2VuZGlmCisgCisgICAgIC8vIE5COiBPZmZzZXRzIGludG8gY3R5cGU8Y2hhcj46Ol9NX3RhYmxlIGZvcmNlIGEgcGFydGljdWxhciBzaXplCisgICAgIC8vIG9uIHRoZSBtYXNrIHR5cGUuIEJlY2F1c2Ugb2YgdGhpcywgd2UgZG9uJ3QgdXNlIGFuIGVudW0uCistLSAKKzIuOC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAwNC11Y2xpYmMtbG9jYWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDA0LXVjbGliYy1sb2NhbGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWUyNjI3YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAwNC11Y2xpYmMtbG9jYWxlLnBhdGNoCkBAIC0wLDAgKzEsMjg2MiBAQAorRnJvbSA2OGJkMDgzMzU3ZTc4Njc4YTliYWFjNzYwYmViMmEzMWYwMDk1NGE1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6NDE6MzkgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAwNC80Nl0gdWNsaWJjLWxvY2FsZQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGxpYnN0ZGMrKy12My9hY2luY2x1ZGUubTQgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDM3ICsrCisgLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oICAgICAgfCAgNjMgKysKKyBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuY2MgICAgICB8IDE2MCArKysrKworIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oICAgICAgIHwgMTE3ICsrKysKKyAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvY29kZWN2dF9tZW1iZXJzLmNjICAgICAgICB8IDMwOCArKysrKysrKysKKyAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvY29sbGF0ZV9tZW1iZXJzLmNjICAgICAgICB8ICA4MCArKysKKyBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYyB8IDMwMCArKysrKysrKysKKyAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5jYyAgICAgICB8IDEwMCArKysKKyAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oICAgICAgICB8IDExOCArKysrCisgLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MgICAgICAgfCA2OTIgKysrKysrKysrKysrKysrKysrKysrCisgLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYyAgICAgICAgfCAxNjAgKysrKysKKyBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjICB8IDQwNiArKysrKysrKysrKysKKyBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmggICB8ICA2OCArKworIGxpYnN0ZGMrKy12My9jb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDc1ICsrKworIGxpYnN0ZGMrKy12My9pbmNsdWRlL2NfY29tcGF0aWJpbGl0eS93Y2hhci5oICAgICAgIHwgICAyICsKKyBsaWJzdGRjKystdjMvaW5jbHVkZS9jX3N0ZC9jd2NoYXIgICAgICAgICAgICAgICAgICB8ICAgMiArCisgMTYgZmlsZXMgY2hhbmdlZCwgMjY4OCBpbnNlcnRpb25zKCspCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaAorIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuY2MKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmgKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvZGVjdnRfbWVtYmVycy5jYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY29sbGF0ZV9tZW1iZXJzLmNjCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmNjCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmgKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuaAorCitkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2FjaW5jbHVkZS5tNCBiL2xpYnN0ZGMrKy12My9hY2luY2x1ZGUubTQKK2luZGV4IGIwZjg4Y2IuLmEwZWUzNmIgMTAwNjQ0CistLS0gYS9saWJzdGRjKystdjMvYWNpbmNsdWRlLm00CisrKysgYi9saWJzdGRjKystdjMvYWNpbmNsdWRlLm00CitAQCAtMjM1OCw2ICsyMzU4LDkgQEAgQUNfREVGVU4oW0dMSUJDWFhfRU5BQkxFX0NMT0NBTEVdLCBbCisgICAjIERlZmF1bHQgdG8gImdlbmVyaWMiLgorICAgaWYgdGVzdCAkZW5hYmxlX2Nsb2NhbGVfZmxhZyA9IGF1dG87IHRoZW4KKyAgICAgY2FzZSAke3RhcmdldF9vc30gaW4KKysgICAgICAqLXVjbGliYyopCisrICAgICAgICBlbmFibGVfY2xvY2FsZV9mbGFnPXVjbGliYworKyAgICAgICAgOzsKKyAgICAgICBsaW51eCogfCBnbnUqIHwga2ZyZWVic2QqLWdudSB8IGtuZXRic2QqLWdudSkKKyAJZW5hYmxlX2Nsb2NhbGVfZmxhZz1nbnUKKyAJOzsKK0BAIC0yNTQyLDYgKzI1NDUsNDAgQEAgQUNfREVGVU4oW0dMSUJDWFhfRU5BQkxFX0NMT0NBTEVdLCBbCisgICAgICAgQ1RJTUVfQ0M9Y29uZmlnL2xvY2FsZS9nZW5lcmljL3RpbWVfbWVtYmVycy5jYworICAgICAgIENMT0NBTEVfSU5URVJOQUxfSD1jb25maWcvbG9jYWxlL2dlbmVyaWMvYysrbG9jYWxlX2ludGVybmFsLmgKKyAgICAgICA7OworKyAgICB1Y2xpYmMpCisrICAgICAgQUNfTVNHX1JFU1VMVCh1Y2xpYmMpCisrCisrICAgICAgIyBEZWNsYXJlIGludGVudGlvbiB0byB1c2UgZ2V0dGV4dCwgYW5kIGFkZCBzdXBwb3J0IGZvciBzcGVjaWZpYworKyAgICAgICMgbGFuZ3VhZ2VzLgorKyAgICAgICMgRm9yIHNvbWUgcmVhc29uLCBBTExfTElOR1VBUyBoYXMgdG8gYmUgYmVmb3JlIEFNLUdOVS1HRVRURVhUCisrICAgICAgQUxMX0xJTkdVQVM9ImRlIGZyIgorKworKyAgICAgICMgRG9uJ3QgY2FsbCBBTS1HTlUtR0VUVEVYVCBoZXJlLiBJbnN0ZWFkLCBhc3N1bWUgZ2xpYmMuCisrICAgICAgQUNfQ0hFQ0tfUFJPRyhjaGVja19tc2dmbXQsIG1zZ2ZtdCwgeWVzLCBubykKKysgICAgICBpZiB0ZXN0IHgiJGNoZWNrX21zZ2ZtdCIgPSB4InllcyIgJiYgdGVzdCB4IiRlbmFibGVfbmxzIiA9IHgieWVzIjsgdGhlbgorKyAgICAgICAgVVNFX05MUz15ZXMKKysgICAgICBmaQorKyAgICAgICMgRXhwb3J0IHRoZSBidWlsZCBvYmplY3RzLgorKyAgICAgIGZvciBsaW5nIGluICRBTExfTElOR1VBUzsgZG8gXAorKyAgICAgICAgZ2xpYmN4eF9NT0ZJTEVTPSIkZ2xpYmN4eF9NT0ZJTEVTICRsaW5nLm1vIjsgXAorKyAgICAgICAgZ2xpYmN4eF9QT0ZJTEVTPSIkZ2xpYmN4eF9QT0ZJTEVTICRsaW5nLnBvIjsgXAorKyAgICAgIGRvbmUKKysgICAgICBBQ19TVUJTVChnbGliY3h4X01PRklMRVMpCisrICAgICAgQUNfU1VCU1QoZ2xpYmN4eF9QT0ZJTEVTKQorKworKyAgICAgIENMT0NBTEVfSD1jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oCisrICAgICAgQ0xPQ0FMRV9DQz1jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYworKyAgICAgIENDT0RFQ1ZUX0NDPWNvbmZpZy9sb2NhbGUvdWNsaWJjL2NvZGVjdnRfbWVtYmVycy5jYworKyAgICAgIENDT0xMQVRFX0NDPWNvbmZpZy9sb2NhbGUvdWNsaWJjL2NvbGxhdGVfbWVtYmVycy5jYworKyAgICAgIENDVFlQRV9DQz1jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjCisrICAgICAgQ01FU1NBR0VTX0g9Y29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oCisrICAgICAgQ01FU1NBR0VTX0NDPWNvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuY2MKKysgICAgICBDTU9ORVlfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYworKyAgICAgIENOVU1FUklDX0NDPWNvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYworKyAgICAgIENUSU1FX0g9Y29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmgKKysgICAgICBDVElNRV9DQz1jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MKKysgICAgICBDTE9DQUxFX0lOVEVSTkFMX0g9Y29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmgKKysgICAgICA7OworICAgZXNhYworIAorICAgIyBUaGlzIGlzIHdoZXJlIHRoZSB0ZXN0c3VpdGUgbG9va3MgZm9yIGxvY2FsZSBjYXRhbG9ncywgdXNpbmcgdGhlCitkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMmFlM2U0YQorLS0tIC9kZXYvbnVsbAorKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oCitAQCAtMCwwICsxLDYzIEBACisrLy8gUHJvdG90eXBlcyBmb3IgR0xJQkMgdGhyZWFkIGxvY2FsZSBfXy1wcmVmaXhlZCBmdW5jdGlvbnMgLSotIEMrKyAtKi0KKysKKysvLyBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDQsIDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrLy8KKysvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCisrLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCisrLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKysvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKysvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisrLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAorKy8vIFVTQS4KKysKKysvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUKKysvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlCisrLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUKKysvLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMKKysvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieQorKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIKKysvLyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkKKysvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCisrCisrLy8gV3JpdHRlbiBieSBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPgorKworKyNpbmNsdWRlIDxiaXRzL2MrK2NvbmZpZy5oPgorKyNpbmNsdWRlIDxjbG9jYWxlPgorKworKyNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXworKyN3YXJuaW5nIGNsZWFuIHRoaXMgdXAKKysjZW5kaWYKKysKKysjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXworKworK2V4dGVybiAiQyIgX190eXBlb2YobmxfbGFuZ2luZm9fbCkgX19ubF9sYW5naW5mb19sOworK2V4dGVybiAiQyIgX190eXBlb2Yoc3RyY29sbF9sKSBfX3N0cmNvbGxfbDsKKytleHRlcm4gIkMiIF9fdHlwZW9mKHN0cmZ0aW1lX2wpIF9fc3RyZnRpbWVfbDsKKytleHRlcm4gIkMiIF9fdHlwZW9mKHN0cnRvZF9sKSBfX3N0cnRvZF9sOworK2V4dGVybiAiQyIgX190eXBlb2Yoc3RydG9mX2wpIF9fc3RydG9mX2w7CisrZXh0ZXJuICJDIiBfX3R5cGVvZihzdHJ0b2xkX2wpIF9fc3RydG9sZF9sOworK2V4dGVybiAiQyIgX190eXBlb2Yoc3RyeGZybV9sKSBfX3N0cnhmcm1fbDsKKytleHRlcm4gIkMiIF9fdHlwZW9mKG5ld2xvY2FsZSkgX19uZXdsb2NhbGU7CisrZXh0ZXJuICJDIiBfX3R5cGVvZihmcmVlbG9jYWxlKSBfX2ZyZWVsb2NhbGU7CisrZXh0ZXJuICJDIiBfX3R5cGVvZihkdXBsb2NhbGUpIF9fZHVwbG9jYWxlOworK2V4dGVybiAiQyIgX190eXBlb2YodXNlbG9jYWxlKSBfX3VzZWxvY2FsZTsKKysKKysjaWZkZWYgX0dMSUJDWFhfVVNFX1dDSEFSX1QKKytleHRlcm4gIkMiIF9fdHlwZW9mKGlzd2N0eXBlX2wpIF9faXN3Y3R5cGVfbDsKKytleHRlcm4gIkMiIF9fdHlwZW9mKHRvd2xvd2VyX2wpIF9fdG93bG93ZXJfbDsKKytleHRlcm4gIkMiIF9fdHlwZW9mKHRvd3VwcGVyX2wpIF9fdG93dXBwZXJfbDsKKytleHRlcm4gIkMiIF9fdHlwZW9mKHdjc2NvbGxfbCkgX193Y3Njb2xsX2w7CisrZXh0ZXJuICJDIiBfX3R5cGVvZih3Y3NmdGltZV9sKSBfX3djc2Z0aW1lX2w7CisrZXh0ZXJuICJDIiBfX3R5cGVvZih3Y3N4ZnJtX2wpIF9fd2NzeGZybV9sOworK2V4dGVybiAiQyIgX190eXBlb2Yod2N0eXBlX2wpIF9fd2N0eXBlX2w7CisrI2VuZGlmCisrCisrI2VuZGlmIC8vIEdMSUJDIDIuMyBhbmQgbGF0ZXIKK2RpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuY2MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi41MDgxZGMxCistLS0gL2Rldi9udWxsCisrKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuY2MKK0BAIC0wLDAgKzEsMTYwIEBACisrLy8gV3JhcHBlciBmb3IgdW5kZXJseWluZyBDLWxhbmd1YWdlIGxvY2FsaXphdGlvbiAtKi0gQysrIC0qLQorKworKy8vIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiwgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysvLworKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKKysvLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKKysvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorKy8vIGFueSBsYXRlciB2ZXJzaW9uLgorKworKy8vIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKysvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisrLy8gU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCisrLy8gVVNBLgorKworKy8vIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgdXNlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgZnJlZSBzb2Z0d2FyZQorKy8vIGxpYnJhcnkgd2l0aG91dCByZXN0cmljdGlvbi4gIFNwZWNpZmljYWxseSwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUKKysvLyB0ZW1wbGF0ZXMgb3IgdXNlIG1hY3JvcyBvciBpbmxpbmUgZnVuY3Rpb25zIGZyb20gdGhpcyBmaWxlLCBvciB5b3UgY29tcGlsZQorKy8vIHRoaXMgZmlsZSBhbmQgbGluayBpdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gZXhlY3V0YWJsZSwgdGhpcworKy8vIGZpbGUgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5CisrLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlcgorKy8vIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSBleGVjdXRhYmxlIGZpbGUgbWlnaHQgYmUgY292ZXJlZCBieQorKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KKysKKysvLworKy8vIElTTyBDKysgMTQ4ODI6IDIyLjggIFN0YW5kYXJkIGxvY2FsZSBjYXRlZ29yaWVzLgorKy8vCisrCisrLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KKysKKysjaW5jbHVkZSA8Y2Vycm5vPiAgLy8gRm9yIGVycm5vCisrI2luY2x1ZGUgPGxvY2FsZT4KKysjaW5jbHVkZSA8c3RkZXhjZXB0PgorKyNpbmNsdWRlIDxsYW5naW5mby5oPgorKyNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgorKworKyNpZm5kZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXworKyNkZWZpbmUgX19zdHJ0b2xfbChTLCBFLCBCLCBMKSAgICAgIHN0cnRvbCgoUyksIChFKSwgKEIpKQorKyNkZWZpbmUgX19zdHJ0b3VsX2woUywgRSwgQiwgTCkgICAgIHN0cnRvdWwoKFMpLCAoRSksIChCKSkKKysjZGVmaW5lIF9fc3RydG9sbF9sKFMsIEUsIEIsIEwpICAgICBzdHJ0b2xsKChTKSwgKEUpLCAoQikpCisrI2RlZmluZSBfX3N0cnRvdWxsX2woUywgRSwgQiwgTCkgICAgc3RydG91bGwoKFMpLCAoRSksIChCKSkKKysjZGVmaW5lIF9fc3RydG9mX2woUywgRSwgTCkgICAgICAgICBzdHJ0b2YoKFMpLCAoRSkpCisrI2RlZmluZSBfX3N0cnRvZF9sKFMsIEUsIEwpICAgICAgICAgc3RydG9kKChTKSwgKEUpKQorKyNkZWZpbmUgX19zdHJ0b2xkX2woUywgRSwgTCkgICAgICAgIHN0cnRvbGQoKFMpLCAoRSkpCisrI3dhcm5pbmcgc2hvdWxkIGR1bW15IF9fbmV3bG9jYWxlIGNoZWNrIGZvciBDfFBPU0lYID8KKysjZGVmaW5lIF9fbmV3bG9jYWxlKGEsIGIsIGMpICAgICAgICBOVUxMCisrI2RlZmluZSBfX2ZyZWVsb2NhbGUoYSkgICAgICAgICAgICAgKCh2b2lkKTApCisrI2RlZmluZSBfX2R1cGxvY2FsZShhKSAgICAgICAgICAgICAgX19jX2xvY2FsZSgpCisrI2VuZGlmCisrCisrbmFtZXNwYWNlIHN0ZAorK3sKKysgIHRlbXBsYXRlPD4KKysgICAgdm9pZAorKyAgICBfX2NvbnZlcnRfdG9fdihjb25zdCBjaGFyKiBfX3MsIGZsb2F0JiBfX3YsIGlvc19iYXNlOjppb3N0YXRlJiBfX2VyciwKKysJCSAgIGNvbnN0IF9fY19sb2NhbGUmIF9fY2xvYykKKysgICAgeworKyAgICAgIGlmICghKF9fZXJyICYgaW9zX2Jhc2U6OmZhaWxiaXQpKQorKwl7CisrCSAgY2hhciogX19zYW5pdHk7CisrCSAgZXJybm8gPSAwOworKwkgIGZsb2F0IF9fZiA9IF9fc3RydG9mX2woX19zLCAmX19zYW5pdHksIF9fY2xvYyk7CisrICAgICAgICAgIGlmIChfX3Nhbml0eSAhPSBfX3MgJiYgZXJybm8gIT0gRVJBTkdFKQorKwkgICAgX192ID0gX19mOworKwkgIGVsc2UKKysJICAgIF9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0OworKwl9CisrICAgIH0KKysKKysgIHRlbXBsYXRlPD4KKysgICAgdm9pZAorKyAgICBfX2NvbnZlcnRfdG9fdihjb25zdCBjaGFyKiBfX3MsIGRvdWJsZSYgX192LCBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsCisrCQkgICBjb25zdCBfX2NfbG9jYWxlJiBfX2Nsb2MpCisrICAgIHsKKysgICAgICBpZiAoIShfX2VyciAmIGlvc19iYXNlOjpmYWlsYml0KSkKKysJeworKwkgIGNoYXIqIF9fc2FuaXR5OworKwkgIGVycm5vID0gMDsKKysJICBkb3VibGUgX19kID0gX19zdHJ0b2RfbChfX3MsICZfX3Nhbml0eSwgX19jbG9jKTsKKysgICAgICAgICAgaWYgKF9fc2FuaXR5ICE9IF9fcyAmJiBlcnJubyAhPSBFUkFOR0UpCisrCSAgICBfX3YgPSBfX2Q7CisrCSAgZWxzZQorKwkgICAgX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7CisrCX0KKysgICAgfQorKworKyAgdGVtcGxhdGU8PgorKyAgICB2b2lkCisrICAgIF9fY29udmVydF90b192KGNvbnN0IGNoYXIqIF9fcywgbG9uZyBkb3VibGUmIF9fdiwgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLAorKwkJICAgY29uc3QgX19jX2xvY2FsZSYgX19jbG9jKQorKyAgICB7CisrICAgICAgaWYgKCEoX19lcnIgJiBpb3NfYmFzZTo6ZmFpbGJpdCkpCisrCXsKKysJICBjaGFyKiBfX3Nhbml0eTsKKysJICBlcnJubyA9IDA7CisrCSAgbG9uZyBkb3VibGUgX19sZCA9IF9fc3RydG9sZF9sKF9fcywgJl9fc2FuaXR5LCBfX2Nsb2MpOworKyAgICAgICAgICBpZiAoX19zYW5pdHkgIT0gX19zICYmIGVycm5vICE9IEVSQU5HRSkKKysJICAgIF9fdiA9IF9fbGQ7CisrCSAgZWxzZQorKwkgICAgX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7CisrCX0KKysgICAgfQorKworKyAgdm9pZAorKyAgbG9jYWxlOjpmYWNldDo6X1NfY3JlYXRlX2NfbG9jYWxlKF9fY19sb2NhbGUmIF9fY2xvYywgY29uc3QgY2hhciogX19zLAorKwkJCQkgICAgX19jX2xvY2FsZSBfX29sZCkKKysgIHsKKysgICAgX19jbG9jID0gX19uZXdsb2NhbGUoMSA8PCBMQ19BTEwsIF9fcywgX19vbGQpOworKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCisrICAgIGlmICghX19jbG9jKQorKyAgICAgIHsKKysJLy8gVGhpcyBuYW1lZCBsb2NhbGUgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgdW5kZXJseWluZyBPUy4KKysJX190aHJvd19ydW50aW1lX2Vycm9yKF9fTigibG9jYWxlOjpmYWNldDo6X1NfY3JlYXRlX2NfbG9jYWxlICIKKysJCQkgICAgICAibmFtZSBub3QgdmFsaWQiKSk7CisrICAgICAgfQorKyNlbmRpZgorKyAgfQorKworKyAgdm9pZAorKyAgbG9jYWxlOjpmYWNldDo6X1NfZGVzdHJveV9jX2xvY2FsZShfX2NfbG9jYWxlJiBfX2Nsb2MpCisrICB7CisrICAgIGlmIChfU19nZXRfY19sb2NhbGUoKSAhPSBfX2Nsb2MpCisrICAgICAgX19mcmVlbG9jYWxlKF9fY2xvYyk7CisrICB9CisrCisrICBfX2NfbG9jYWxlCisrICBsb2NhbGU6OmZhY2V0OjpfU19jbG9uZV9jX2xvY2FsZShfX2NfbG9jYWxlJiBfX2Nsb2MpCisrICB7IHJldHVybiBfX2R1cGxvY2FsZShfX2Nsb2MpOyB9CisrfSAvLyBuYW1lc3BhY2Ugc3RkCisrCisrbmFtZXNwYWNlIF9fZ251X2N4eAorK3sKKysgIGNvbnN0IGNoYXIqIGNvbnN0IGNhdGVnb3J5X25hbWVzWzYgKyBfR0xJQkNYWF9OVU1fQ0FURUdPUklFU10gPQorKyAgICB7CisrICAgICAgIkxDX0NUWVBFIiwKKysgICAgICAiTENfTlVNRVJJQyIsCisrICAgICAgIkxDX1RJTUUiLAorKyAgICAgICJMQ19DT0xMQVRFIiwKKysgICAgICAiTENfTU9ORVRBUlkiLAorKyAgICAgICJMQ19NRVNTQUdFUyIsCisrI2lmIF9HTElCQ1hYX05VTV9DQVRFR09SSUVTICE9IDAKKysgICAgICAiTENfUEFQRVIiLAorKyAgICAgICJMQ19OQU1FIiwKKysgICAgICAiTENfQUREUkVTUyIsCisrICAgICAgIkxDX1RFTEVQSE9ORSIsCisrICAgICAgIkxDX01FQVNVUkVNRU5UIiwKKysgICAgICAiTENfSURFTlRJRklDQVRJT04iCisrI2VuZGlmCisrICAgIH07CisrfQorKworK25hbWVzcGFjZSBzdGQKKyt7CisrICBjb25zdCBjaGFyKiBjb25zdCogY29uc3QgbG9jYWxlOjpfU19jYXRlZ29yaWVzID0gX19nbnVfY3h4OjpjYXRlZ29yeV9uYW1lczsKKyt9ICAvLyBuYW1lc3BhY2Ugc3RkCitkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmggYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmRhMDdjMWYKKy0tLSAvZGV2L251bGwKKysrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oCitAQCAtMCwwICsxLDExNyBAQAorKy8vIFdyYXBwZXIgZm9yIHVuZGVybHlpbmcgQy1sYW5ndWFnZSBsb2NhbGl6YXRpb24gLSotIEMrKyAtKi0KKysKKysvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrLy8KKysvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCisrLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCisrLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKysvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKysvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisrLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAorKy8vIFVTQS4KKysKKysvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUKKysvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlCisrLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUKKysvLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMKKysvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieQorKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIKKysvLyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkKKysvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCisrCisrLy8KKysvLyBJU08gQysrIDE0ODgyOiAyMi44ICBTdGFuZGFyZCBsb2NhbGUgY2F0ZWdvcmllcy4KKysvLworKworKy8vIFdyaXR0ZW4gYnkgQmVuamFtaW4gS29zbmlrIDxia296QHJlZGhhdC5jb20+CisrCisrI2lmbmRlZiBfQ19MT0NBTEVfSAorKyNkZWZpbmUgX0NfTE9DQUxFX0ggMQorKworKyNwcmFnbWEgR0NDIHN5c3RlbV9oZWFkZXIKKysKKysjaW5jbHVkZSA8Y3N0cmluZz4gICAgICAgICAgICAgIC8vIGdldCBzdGQ6OnN0cmxlbgorKyNpbmNsdWRlIDxjc3RkaW8+ICAgICAgICAgICAgICAgLy8gZ2V0IHN0ZDo6c25wcmludGYgb3Igc3RkOjpzcHJpbnRmCisrI2luY2x1ZGUgPGNsb2NhbGU+CisrI2luY2x1ZGUgPGxhbmdpbmZvLmg+CQkvLyBGb3IgY29kZWN2dAorKyNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXworKyN3YXJuaW5nIGZpeCB0aGlzCisrI2VuZGlmCisrI2lmZGVmIF9fVUNMSUJDX0hBU19MT0NBTEVfXworKyNpbmNsdWRlIDxpY29udi5oPgkJLy8gRm9yIGNvZGVjdnQgdXNpbmcgaWNvbnYsIGljb252X3QKKysjZW5kaWYKKysjaWZkZWYgX19VQ0xJQkNfSEFTX0dFVFRFWFRfQVdBUkVORVNTX18KKysjaW5jbHVkZSA8bGliaW50bC5oPiAJCS8vIEZvciBtZXNzYWdlcworKyNlbmRpZgorKworKyNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXworKyN3YXJuaW5nIHdoYXQgaXMgX0dMSUJDWFhfQ19MT0NBTEVfR05VIGZvcgorKyNlbmRpZgorKyNkZWZpbmUgX0dMSUJDWFhfQ19MT0NBTEVfR05VIDEKKysKKysjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KKysjd2FybmluZyBmaXggY2F0ZWdvcmllcworKyNlbmRpZgorKy8vICNkZWZpbmUgX0dMSUJDWFhfTlVNX0NBVEVHT1JJRVMgNgorKyNkZWZpbmUgX0dMSUJDWFhfTlVNX0NBVEVHT1JJRVMgMAorKworKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCisrbmFtZXNwYWNlIF9fZ251X2N4eAorK3sKKysgIGV4dGVybiAiQyIgX190eXBlb2YodXNlbG9jYWxlKSBfX3VzZWxvY2FsZTsKKyt9CisrI2VuZGlmCisrCisrbmFtZXNwYWNlIHN0ZAorK3sKKysjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXworKyAgdHlwZWRlZiBfX2xvY2FsZV90CQlfX2NfbG9jYWxlOworKyNlbHNlCisrICB0eXBlZGVmIGludCoJCQlfX2NfbG9jYWxlOworKyNlbmRpZgorKworKyAgLy8gQ29udmVydCBudW1lcmljIHZhbHVlIG9mIHR5cGUgX1R2IHRvIHN0cmluZyBhbmQgcmV0dXJuIGxlbmd0aCBvZgorKyAgLy8gc3RyaW5nLiAgSWYgc25wcmludGYgaXMgYXZhaWxhYmxlIHVzZSBpdCwgb3RoZXJ3aXNlIGZhbGwgYmFjayB0bworKyAgLy8gdGhlIHVuc2FmZSBzcHJpbnRmIHdoaWNoLCBpbiBnZW5lcmFsLCBjYW4gYmUgZGFuZ2Vyb3VzIGFuZCBzaG91bGQKKysgIC8vIGJlIGF2b2lkZWQuCisrICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHY+CisrICAgIGludAorKyAgICBfX2NvbnZlcnRfZnJvbV92KGNoYXIqIF9fb3V0LAorKwkJICAgICBjb25zdCBpbnQgX19zaXplIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSksCisrCQkgICAgIGNvbnN0IGNoYXIqIF9fZm10LAorKyNpZmRlZiBfX1VDTElCQ19IQVNfWENMT0NBTEVfXworKwkJICAgICBfVHYgX192LCBjb25zdCBfX2NfbG9jYWxlJiBfX2Nsb2MsIGludCBfX3ByZWMpCisrICAgIHsKKysgICAgICBfX2NfbG9jYWxlIF9fb2xkID0gX19nbnVfY3h4OjpfX3VzZWxvY2FsZShfX2Nsb2MpOworKyNlbHNlCisrCQkgICAgIF9UdiBfX3YsIGNvbnN0IF9fY19sb2NhbGUmLCBpbnQgX19wcmVjKQorKyAgICB7CisrIyBpZmRlZiBfX1VDTElCQ19IQVNfTE9DQUxFX18KKysgICAgICBjaGFyKiBfX29sZCA9IHN0ZDo6c2V0bG9jYWxlKExDX0FMTCwgTlVMTCk7CisrICAgICAgY2hhciogX19zYXYgPSBuZXcgY2hhcltzdGQ6OnN0cmxlbihfX29sZCkgKyAxXTsKKysgICAgICBzdGQ6OnN0cmNweShfX3NhdiwgX19vbGQpOworKyAgICAgIHN0ZDo6c2V0bG9jYWxlKExDX0FMTCwgIkMiKTsKKysjIGVuZGlmCisrI2VuZGlmCisrCisrICAgICAgY29uc3QgaW50IF9fcmV0ID0gc3RkOjpzbnByaW50ZihfX291dCwgX19zaXplLCBfX2ZtdCwgX19wcmVjLCBfX3YpOworKworKyNpZmRlZiBfX1VDTElCQ19IQVNfWENMT0NBTEVfXworKyAgICAgIF9fZ251X2N4eDo6X191c2Vsb2NhbGUoX19vbGQpOworKyNlbGlmIGRlZmluZWQgX19VQ0xJQkNfSEFTX0xPQ0FMRV9fCisrICAgICAgc3RkOjpzZXRsb2NhbGUoTENfQUxMLCBfX3Nhdik7CisrICAgICAgZGVsZXRlIFtdIF9fc2F2OworKyNlbmRpZgorKyAgICAgIHJldHVybiBfX3JldDsKKysgICAgfQorK30KKysKKysjZW5kaWYKK2RpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY29kZWN2dF9tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvZGVjdnRfbWVtYmVycy5jYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjY0YWE5NjIKKy0tLSAvZGV2L251bGwKKysrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jb2RlY3Z0X21lbWJlcnMuY2MKK0BAIC0wLDAgKzEsMzA4IEBACisrLy8gc3RkOjpjb2RlY3Z0IGltcGxlbWVudGF0aW9uIGRldGFpbHMsIEdOVSB2ZXJzaW9uIC0qLSBDKysgLSotCisrCisrLy8gQ29weXJpZ2h0IChDKSAyMDAyLCAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKy8vCisrLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQorKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQorKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisrLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCisrLy8gYW55IGxhdGVyIHZlcnNpb24uCisrCisrLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysvLyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKKysvLyBVU0EuCisrCisrLy8gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSB1c2UgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBmcmVlIHNvZnR3YXJlCisrLy8gbGlicmFyeSB3aXRob3V0IHJlc3RyaWN0aW9uLiAgU3BlY2lmaWNhbGx5LCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZQorKy8vIHRlbXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5jdGlvbnMgZnJvbSB0aGlzIGZpbGUsIG9yIHlvdSBjb21waWxlCisrLy8gdGhpcyBmaWxlIGFuZCBsaW5rIGl0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzCisrLy8gZmlsZSBkb2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkKKysvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyCisrLy8gaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5CisrLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorKworKy8vCisrLy8gSVNPIEMrKyAxNDg4MjogMjIuMi4xLjUgLSBUZW1wbGF0ZSBjbGFzcyBjb2RlY3Z0CisrLy8KKysKKysvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgorKworKyNpbmNsdWRlIDxsb2NhbGU+CisrI2luY2x1ZGUgPGNzdGRsaWI+ICAvLyBGb3IgTUJfQ1VSX01BWAorKyNpbmNsdWRlIDxjbGltaXRzPiAgLy8gRm9yIE1CX0xFTl9NQVgKKysjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KKysKKytuYW1lc3BhY2Ugc3RkCisreworKyAgLy8gU3BlY2lhbGl6YXRpb25zLgorKyNpZmRlZiBfR0xJQkNYWF9VU0VfV0NIQVJfVAorKyAgY29kZWN2dF9iYXNlOjpyZXN1bHQKKysgIGNvZGVjdnQ8d2NoYXJfdCwgY2hhciwgbWJzdGF0ZV90Pjo6CisrICBkb19vdXQoc3RhdGVfdHlwZSYgX19zdGF0ZSwgY29uc3QgaW50ZXJuX3R5cGUqIF9fZnJvbSwKKysJIGNvbnN0IGludGVybl90eXBlKiBfX2Zyb21fZW5kLCBjb25zdCBpbnRlcm5fdHlwZSomIF9fZnJvbV9uZXh0LAorKwkgZXh0ZXJuX3R5cGUqIF9fdG8sIGV4dGVybl90eXBlKiBfX3RvX2VuZCwKKysJIGV4dGVybl90eXBlKiYgX190b19uZXh0KSBjb25zdAorKyAgeworKyAgICByZXN1bHQgX19yZXQgPSBvazsKKysgICAgc3RhdGVfdHlwZSBfX3RtcF9zdGF0ZShfX3N0YXRlKTsKKysKKysjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXworKyAgICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX01fY19sb2NhbGVfY29kZWN2dCk7CisrI2VuZGlmCisrCisrICAgIC8vIHdjc25ydG9tYnMgaXMgKnZlcnkqIGZhc3QgYnV0IHN0b3BzIGlmIGVuY291bnRlcnMgTlVMIGNoYXJhY3RlcnM6CisrICAgIC8vIGluIGNhc2Ugd2UgZmFsbCBiYWNrIHRvIHdjcnRvbWIgYW5kIHRoZW4gY29udGludWUsIGluIGEgbG9vcC4KKysgICAgLy8gTkI6IHdjc25ydG9tYnMgaXMgYSBHTlUgZXh0ZW5zaW9uCisrICAgIGZvciAoX19mcm9tX25leHQgPSBfX2Zyb20sIF9fdG9fbmV4dCA9IF9fdG87CisrCSBfX2Zyb21fbmV4dCA8IF9fZnJvbV9lbmQgJiYgX190b19uZXh0IDwgX190b19lbmQKKysJICYmIF9fcmV0ID09IG9rOykKKysgICAgICB7CisrCWNvbnN0IGludGVybl90eXBlKiBfX2Zyb21fY2h1bmtfZW5kID0gd21lbWNocihfX2Zyb21fbmV4dCwgTCdcMCcsCisrCQkJCQkJICAgICAgX19mcm9tX2VuZCAtIF9fZnJvbV9uZXh0KTsKKysJaWYgKCFfX2Zyb21fY2h1bmtfZW5kKQorKwkgIF9fZnJvbV9jaHVua19lbmQgPSBfX2Zyb21fZW5kOworKworKwlfX2Zyb20gPSBfX2Zyb21fbmV4dDsKKysJY29uc3Qgc2l6ZV90IF9fY29udiA9IHdjc25ydG9tYnMoX190b19uZXh0LCAmX19mcm9tX25leHQsCisrCQkJCQkgX19mcm9tX2NodW5rX2VuZCAtIF9fZnJvbV9uZXh0LAorKwkJCQkJIF9fdG9fZW5kIC0gX190b19uZXh0LCAmX19zdGF0ZSk7CisrCWlmIChfX2NvbnYgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMSkpCisrCSAgeworKwkgICAgLy8gSW4gY2FzZSBvZiBlcnJvciwgaW4gb3JkZXIgdG8gc3RvcCBhdCB0aGUgZXhhY3QgcGxhY2Ugd2UKKysJICAgIC8vIGhhdmUgdG8gc3RhcnQgYWdhaW4gZnJvbSB0aGUgYmVnaW5uaW5nIHdpdGggYSBzZXJpZXMgb2YKKysJICAgIC8vIHdjcnRvbWIuCisrCSAgICBmb3IgKDsgX19mcm9tIDwgX19mcm9tX25leHQ7ICsrX19mcm9tKQorKwkgICAgICBfX3RvX25leHQgKz0gd2NydG9tYihfX3RvX25leHQsICpfX2Zyb20sICZfX3RtcF9zdGF0ZSk7CisrCSAgICBfX3N0YXRlID0gX190bXBfc3RhdGU7CisrCSAgICBfX3JldCA9IGVycm9yOworKwkgIH0KKysJZWxzZSBpZiAoX19mcm9tX25leHQgJiYgX19mcm9tX25leHQgPCBfX2Zyb21fY2h1bmtfZW5kKQorKwkgIHsKKysJICAgIF9fdG9fbmV4dCArPSBfX2NvbnY7CisrCSAgICBfX3JldCA9IHBhcnRpYWw7CisrCSAgfQorKwllbHNlCisrCSAgeworKwkgICAgX19mcm9tX25leHQgPSBfX2Zyb21fY2h1bmtfZW5kOworKwkgICAgX190b19uZXh0ICs9IF9fY29udjsKKysJICB9CisrCisrCWlmIChfX2Zyb21fbmV4dCA8IF9fZnJvbV9lbmQgJiYgX19yZXQgPT0gb2spCisrCSAgeworKwkgICAgZXh0ZXJuX3R5cGUgX19idWZbTUJfTEVOX01BWF07CisrCSAgICBfX3RtcF9zdGF0ZSA9IF9fc3RhdGU7CisrCSAgICBjb25zdCBzaXplX3QgX19jb252ID0gd2NydG9tYihfX2J1ZiwgKl9fZnJvbV9uZXh0LCAmX190bXBfc3RhdGUpOworKwkgICAgaWYgKF9fY29udiA+IHN0YXRpY19jYXN0PHNpemVfdD4oX190b19lbmQgLSBfX3RvX25leHQpKQorKwkgICAgICBfX3JldCA9IHBhcnRpYWw7CisrCSAgICBlbHNlCisrCSAgICAgIHsKKysJCW1lbWNweShfX3RvX25leHQsIF9fYnVmLCBfX2NvbnYpOworKwkJX19zdGF0ZSA9IF9fdG1wX3N0YXRlOworKwkJX190b19uZXh0ICs9IF9fY29udjsKKysJCSsrX19mcm9tX25leHQ7CisrCSAgICAgIH0KKysJICB9CisrICAgICAgfQorKworKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCisrICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKKysjZW5kaWYKKysKKysgICAgcmV0dXJuIF9fcmV0OworKyAgfQorKworKyAgY29kZWN2dF9iYXNlOjpyZXN1bHQKKysgIGNvZGVjdnQ8d2NoYXJfdCwgY2hhciwgbWJzdGF0ZV90Pjo6CisrICBkb19pbihzdGF0ZV90eXBlJiBfX3N0YXRlLCBjb25zdCBleHRlcm5fdHlwZSogX19mcm9tLAorKwljb25zdCBleHRlcm5fdHlwZSogX19mcm9tX2VuZCwgY29uc3QgZXh0ZXJuX3R5cGUqJiBfX2Zyb21fbmV4dCwKKysJaW50ZXJuX3R5cGUqIF9fdG8sIGludGVybl90eXBlKiBfX3RvX2VuZCwKKysJaW50ZXJuX3R5cGUqJiBfX3RvX25leHQpIGNvbnN0CisrICB7CisrICAgIHJlc3VsdCBfX3JldCA9IG9rOworKyAgICBzdGF0ZV90eXBlIF9fdG1wX3N0YXRlKF9fc3RhdGUpOworKworKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCisrICAgIF9fY19sb2NhbGUgX19vbGQgPSBfX3VzZWxvY2FsZShfTV9jX2xvY2FsZV9jb2RlY3Z0KTsKKysjZW5kaWYKKysKKysgICAgLy8gbWJzbnJ0b3djcyBpcyAqdmVyeSogZmFzdCBidXQgc3RvcHMgaWYgZW5jb3VudGVycyBOVUwgY2hhcmFjdGVyczoKKysgICAgLy8gaW4gY2FzZSB3ZSBzdG9yZSBhIEwnXDAnIGFuZCB0aGVuIGNvbnRpbnVlLCBpbiBhIGxvb3AuCisrICAgIC8vIE5COiBtYnNucnRvd2NzIGlzIGEgR05VIGV4dGVuc2lvbgorKyAgICBmb3IgKF9fZnJvbV9uZXh0ID0gX19mcm9tLCBfX3RvX25leHQgPSBfX3RvOworKwkgX19mcm9tX25leHQgPCBfX2Zyb21fZW5kICYmIF9fdG9fbmV4dCA8IF9fdG9fZW5kCisrCSAmJiBfX3JldCA9PSBvazspCisrICAgICAgeworKwljb25zdCBleHRlcm5fdHlwZSogX19mcm9tX2NodW5rX2VuZDsKKysJX19mcm9tX2NodW5rX2VuZCA9IHN0YXRpY19jYXN0PGNvbnN0IGV4dGVybl90eXBlKj4obWVtY2hyKF9fZnJvbV9uZXh0LCAnXDAnLAorKwkJCQkJCQkJICBfX2Zyb21fZW5kCisrCQkJCQkJCQkgIC0gX19mcm9tX25leHQpKTsKKysJaWYgKCFfX2Zyb21fY2h1bmtfZW5kKQorKwkgIF9fZnJvbV9jaHVua19lbmQgPSBfX2Zyb21fZW5kOworKworKwlfX2Zyb20gPSBfX2Zyb21fbmV4dDsKKysJc2l6ZV90IF9fY29udiA9IG1ic25ydG93Y3MoX190b19uZXh0LCAmX19mcm9tX25leHQsCisrCQkJCSAgIF9fZnJvbV9jaHVua19lbmQgLSBfX2Zyb21fbmV4dCwKKysJCQkJICAgX190b19lbmQgLSBfX3RvX25leHQsICZfX3N0YXRlKTsKKysJaWYgKF9fY29udiA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KC0xKSkKKysJICB7CisrCSAgICAvLyBJbiBjYXNlIG9mIGVycm9yLCBpbiBvcmRlciB0byBzdG9wIGF0IHRoZSBleGFjdCBwbGFjZSB3ZQorKwkgICAgLy8gaGF2ZSB0byBzdGFydCBhZ2FpbiBmcm9tIHRoZSBiZWdpbm5pbmcgd2l0aCBhIHNlcmllcyBvZgorKwkgICAgLy8gbWJydG93Yy4KKysJICAgIGZvciAoOzsgKytfX3RvX25leHQsIF9fZnJvbSArPSBfX2NvbnYpCisrCSAgICAgIHsKKysJCV9fY29udiA9IG1icnRvd2MoX190b19uZXh0LCBfX2Zyb20sIF9fZnJvbV9lbmQgLSBfX2Zyb20sCisrCQkJCSAmX190bXBfc3RhdGUpOworKwkJaWYgKF9fY29udiA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KC0xKQorKwkJICAgIHx8IF9fY29udiA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KC0yKSkKKysJCSAgYnJlYWs7CisrCSAgICAgIH0KKysJICAgIF9fZnJvbV9uZXh0ID0gX19mcm9tOworKwkgICAgX19zdGF0ZSA9IF9fdG1wX3N0YXRlOworKwkgICAgX19yZXQgPSBlcnJvcjsKKysJICB9CisrCWVsc2UgaWYgKF9fZnJvbV9uZXh0ICYmIF9fZnJvbV9uZXh0IDwgX19mcm9tX2NodW5rX2VuZCkKKysJICB7CisrCSAgICAvLyBJdCBpcyB1bmNsZWFyIHdoYXQgdG8gcmV0dXJuIGluIHRoaXMgY2FzZSAoc2VlIERSIDM4MikuCisrCSAgICBfX3RvX25leHQgKz0gX19jb252OworKwkgICAgX19yZXQgPSBwYXJ0aWFsOworKwkgIH0KKysJZWxzZQorKwkgIHsKKysJICAgIF9fZnJvbV9uZXh0ID0gX19mcm9tX2NodW5rX2VuZDsKKysJICAgIF9fdG9fbmV4dCArPSBfX2NvbnY7CisrCSAgfQorKworKwlpZiAoX19mcm9tX25leHQgPCBfX2Zyb21fZW5kICYmIF9fcmV0ID09IG9rKQorKwkgIHsKKysJICAgIGlmIChfX3RvX25leHQgPCBfX3RvX2VuZCkKKysJICAgICAgeworKwkJLy8gWFhYIFByb2JhYmx5IHdyb25nIGZvciBzdGF0ZWZ1bCBlbmNvZGluZ3MKKysJCV9fdG1wX3N0YXRlID0gX19zdGF0ZTsKKysJCSsrX19mcm9tX25leHQ7CisrCQkqX190b19uZXh0KysgPSBMJ1wwJzsKKysJICAgICAgfQorKwkgICAgZWxzZQorKwkgICAgICBfX3JldCA9IHBhcnRpYWw7CisrCSAgfQorKyAgICAgIH0KKysKKysjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXworKyAgICBfX3VzZWxvY2FsZShfX29sZCk7CisrI2VuZGlmCisrCisrICAgIHJldHVybiBfX3JldDsKKysgIH0KKysKKysgIGludAorKyAgY29kZWN2dDx3Y2hhcl90LCBjaGFyLCBtYnN0YXRlX3Q+OjoKKysgIGRvX2VuY29kaW5nKCkgY29uc3QgdGhyb3coKQorKyAgeworKyAgICAvLyBYWFggVGhpcyBpbXBsZW1lbnRhdGlvbiBhc3N1bWVzIHRoYXQgdGhlIGVuY29kaW5nIGlzCisrICAgIC8vIHN0YXRlbGVzcyBhbmQgaXMgZWl0aGVyIHNpbmdsZS1ieXRlIG9yIHZhcmlhYmxlLXdpZHRoLgorKyAgICBpbnQgX19yZXQgPSAwOworKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCisrICAgIF9fY19sb2NhbGUgX19vbGQgPSBfX3VzZWxvY2FsZShfTV9jX2xvY2FsZV9jb2RlY3Z0KTsKKysjZW5kaWYKKysgICAgaWYgKE1CX0NVUl9NQVggPT0gMSkKKysgICAgICBfX3JldCA9IDE7CisrI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KKysgICAgX191c2Vsb2NhbGUoX19vbGQpOworKyNlbmRpZgorKyAgICByZXR1cm4gX19yZXQ7CisrICB9CisrCisrICBpbnQKKysgIGNvZGVjdnQ8d2NoYXJfdCwgY2hhciwgbWJzdGF0ZV90Pjo6CisrICBkb19tYXhfbGVuZ3RoKCkgY29uc3QgdGhyb3coKQorKyAgeworKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCisrICAgIF9fY19sb2NhbGUgX19vbGQgPSBfX3VzZWxvY2FsZShfTV9jX2xvY2FsZV9jb2RlY3Z0KTsKKysjZW5kaWYKKysgICAgLy8gWFhYIFByb2JhYmx5IHdyb25nIGZvciBzdGF0ZWZ1bCBlbmNvZGluZ3MuCisrICAgIGludCBfX3JldCA9IE1CX0NVUl9NQVg7CisrI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KKysgICAgX191c2Vsb2NhbGUoX19vbGQpOworKyNlbmRpZgorKyAgICByZXR1cm4gX19yZXQ7CisrICB9CisrCisrICBpbnQKKysgIGNvZGVjdnQ8d2NoYXJfdCwgY2hhciwgbWJzdGF0ZV90Pjo6CisrICBkb19sZW5ndGgoc3RhdGVfdHlwZSYgX19zdGF0ZSwgY29uc3QgZXh0ZXJuX3R5cGUqIF9fZnJvbSwKKysJICAgIGNvbnN0IGV4dGVybl90eXBlKiBfX2VuZCwgc2l6ZV90IF9fbWF4KSBjb25zdAorKyAgeworKyAgICBpbnQgX19yZXQgPSAwOworKyAgICBzdGF0ZV90eXBlIF9fdG1wX3N0YXRlKF9fc3RhdGUpOworKworKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCisrICAgIF9fY19sb2NhbGUgX19vbGQgPSBfX3VzZWxvY2FsZShfTV9jX2xvY2FsZV9jb2RlY3Z0KTsKKysjZW5kaWYKKysKKysgICAgLy8gbWJzbnJ0b3djcyBpcyAqdmVyeSogZmFzdCBidXQgc3RvcHMgaWYgZW5jb3VudGVycyBOVUwgY2hhcmFjdGVyczoKKysgICAgLy8gaW4gY2FzZSB3ZSBhZHZhbmNlIHBhc3QgaXQgYW5kIHRoZW4gY29udGludWUsIGluIGEgbG9vcC4KKysgICAgLy8gTkI6IG1ic25ydG93Y3MgaXMgYSBHTlUgZXh0ZW5zaW9uCisrCisrICAgIC8vIEEgZHVtbXkgaW50ZXJuYWwgYnVmZmVyIGlzIG5lZWRlZCBpbiBvcmRlciBmb3IgbWJzbnJ0b2N3cyB0byBjb25zaWRlcgorKyAgICAvLyBpdHMgZm91cnRoIHBhcmFtZXRlciAoaXQgd291bGRuJ3Qgd2l0aCBOVUxMIGFzIGZpcnN0IHBhcmFtZXRlcikuCisrICAgIHdjaGFyX3QqIF9fdG8gPSBzdGF0aWNfY2FzdDx3Y2hhcl90Kj4oX19idWlsdGluX2FsbG9jYShzaXplb2Yod2NoYXJfdCkKKysJCQkJCQkJICAgKiBfX21heCkpOworKyAgICB3aGlsZSAoX19mcm9tIDwgX19lbmQgJiYgX19tYXgpCisrICAgICAgeworKwljb25zdCBleHRlcm5fdHlwZSogX19mcm9tX2NodW5rX2VuZDsKKysJX19mcm9tX2NodW5rX2VuZCA9IHN0YXRpY19jYXN0PGNvbnN0IGV4dGVybl90eXBlKj4obWVtY2hyKF9fZnJvbSwgJ1wwJywKKysJCQkJCQkJCSAgX19lbmQKKysJCQkJCQkJCSAgLSBfX2Zyb20pKTsKKysJaWYgKCFfX2Zyb21fY2h1bmtfZW5kKQorKwkgIF9fZnJvbV9jaHVua19lbmQgPSBfX2VuZDsKKysKKysJY29uc3QgZXh0ZXJuX3R5cGUqIF9fdG1wX2Zyb20gPSBfX2Zyb207CisrCXNpemVfdCBfX2NvbnYgPSBtYnNucnRvd2NzKF9fdG8sICZfX2Zyb20sCisrCQkJCSAgIF9fZnJvbV9jaHVua19lbmQgLSBfX2Zyb20sCisrCQkJCSAgIF9fbWF4LCAmX19zdGF0ZSk7CisrCWlmIChfX2NvbnYgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMSkpCisrCSAgeworKwkgICAgLy8gSW4gY2FzZSBvZiBlcnJvciwgaW4gb3JkZXIgdG8gc3RvcCBhdCB0aGUgZXhhY3QgcGxhY2Ugd2UKKysJICAgIC8vIGhhdmUgdG8gc3RhcnQgYWdhaW4gZnJvbSB0aGUgYmVnaW5uaW5nIHdpdGggYSBzZXJpZXMgb2YKKysJICAgIC8vIG1icnRvd2MuCisrCSAgICBmb3IgKF9fZnJvbSA9IF9fdG1wX2Zyb207OyBfX2Zyb20gKz0gX19jb252KQorKwkgICAgICB7CisrCQlfX2NvbnYgPSBtYnJ0b3djKE5VTEwsIF9fZnJvbSwgX19lbmQgLSBfX2Zyb20sCisrCQkJCSAmX190bXBfc3RhdGUpOworKwkJaWYgKF9fY29udiA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KC0xKQorKwkJICAgIHx8IF9fY29udiA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KC0yKSkKKysJCSAgYnJlYWs7CisrCSAgICAgIH0KKysJICAgIF9fc3RhdGUgPSBfX3RtcF9zdGF0ZTsKKysJICAgIF9fcmV0ICs9IF9fZnJvbSAtIF9fdG1wX2Zyb207CisrCSAgICBicmVhazsKKysJICB9CisrCWlmICghX19mcm9tKQorKwkgIF9fZnJvbSA9IF9fZnJvbV9jaHVua19lbmQ7CisrCisrCV9fcmV0ICs9IF9fZnJvbSAtIF9fdG1wX2Zyb207CisrCV9fbWF4IC09IF9fY29udjsKKysKKysJaWYgKF9fZnJvbSA8IF9fZW5kICYmIF9fbWF4KQorKwkgIHsKKysJICAgIC8vIFhYWCBQcm9iYWJseSB3cm9uZyBmb3Igc3RhdGVmdWwgZW5jb2RpbmdzCisrCSAgICBfX3RtcF9zdGF0ZSA9IF9fc3RhdGU7CisrCSAgICArK19fZnJvbTsKKysJICAgICsrX19yZXQ7CisrCSAgICAtLV9fbWF4OworKwkgIH0KKysgICAgICB9CisrCisrI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KKysgICAgX191c2Vsb2NhbGUoX19vbGQpOworKyNlbmRpZgorKworKyAgICByZXR1cm4gX19yZXQ7CisrICB9CisrI2VuZGlmCisrfQorZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jb2xsYXRlX21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY29sbGF0ZV9tZW1iZXJzLmNjCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uYzI2NjRhNworLS0tIC9kZXYvbnVsbAorKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvbGxhdGVfbWVtYmVycy5jYworQEAgLTAsMCArMSw4MCBAQAorKy8vIHN0ZDo6Y29sbGF0ZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCBHTlUgdmVyc2lvbiAtKi0gQysrIC0qLQorKworKy8vIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysvLworKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKKysvLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKKysvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorKy8vIGFueSBsYXRlciB2ZXJzaW9uLgorKworKy8vIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKysvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisrLy8gU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCisrLy8gVVNBLgorKworKy8vIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgdXNlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgZnJlZSBzb2Z0d2FyZQorKy8vIGxpYnJhcnkgd2l0aG91dCByZXN0cmljdGlvbi4gIFNwZWNpZmljYWxseSwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUKKysvLyB0ZW1wbGF0ZXMgb3IgdXNlIG1hY3JvcyBvciBpbmxpbmUgZnVuY3Rpb25zIGZyb20gdGhpcyBmaWxlLCBvciB5b3UgY29tcGlsZQorKy8vIHRoaXMgZmlsZSBhbmQgbGluayBpdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gZXhlY3V0YWJsZSwgdGhpcworKy8vIGZpbGUgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5CisrLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlcgorKy8vIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSBleGVjdXRhYmxlIGZpbGUgbWlnaHQgYmUgY292ZXJlZCBieQorKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KKysKKysvLworKy8vIElTTyBDKysgMTQ4ODI6IDIyLjIuNC4xLjIgIGNvbGxhdGUgdmlydHVhbCBmdW5jdGlvbnMKKysvLworKworKy8vIFdyaXR0ZW4gYnkgQmVuamFtaW4gS29zbmlrIDxia296QHJlZGhhdC5jb20+CisrCisrI2luY2x1ZGUgPGxvY2FsZT4KKysjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KKysKKysjaWZuZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KKysjZGVmaW5lIF9fc3RyY29sbF9sKFMxLCBTMiwgTCkgICAgICBzdHJjb2xsKChTMSksIChTMikpCisrI2RlZmluZSBfX3N0cnhmcm1fbChTMSwgUzIsIE4sIEwpICAgc3RyeGZybSgoUzEpLCAoUzIpLCAoTikpCisrI2RlZmluZSBfX3djc2NvbGxfbChTMSwgUzIsIEwpICAgICAgd2NzY29sbCgoUzEpLCAoUzIpKQorKyNkZWZpbmUgX193Y3N4ZnJtX2woUzEsIFMyLCBOLCBMKSAgIHdjc3hmcm0oKFMxKSwgKFMyKSwgKE4pKQorKyNlbmRpZgorKworK25hbWVzcGFjZSBzdGQKKyt7CisrICAvLyBUaGVzZSBhcmUgYmFzaWNhbGx5IGV4dGVuc2lvbnMgdG8gY2hhcl90cmFpdHMsIGFuZCBwZXJoYXBzIHNob3VsZAorKyAgLy8gYmUgcHV0IHRoZXJlIGluc3RlYWQgb2YgaGVyZS4KKysgIHRlbXBsYXRlPD4KKysgICAgaW50CisrICAgIGNvbGxhdGU8Y2hhcj46Ol9NX2NvbXBhcmUoY29uc3QgY2hhciogX19vbmUsIGNvbnN0IGNoYXIqIF9fdHdvKSBjb25zdAorKyAgICB7CisrICAgICAgaW50IF9fY21wID0gX19zdHJjb2xsX2woX19vbmUsIF9fdHdvLCBfTV9jX2xvY2FsZV9jb2xsYXRlKTsKKysgICAgICByZXR1cm4gKF9fY21wID4+ICg4ICogc2l6ZW9mIChpbnQpIC0gMikpIHwgKF9fY21wICE9IDApOworKyAgICB9CisrCisrICB0ZW1wbGF0ZTw+CisrICAgIHNpemVfdAorKyAgICBjb2xsYXRlPGNoYXI+OjpfTV90cmFuc2Zvcm0oY2hhciogX190bywgY29uc3QgY2hhciogX19mcm9tLAorKwkJCQlzaXplX3QgX19uKSBjb25zdAorKyAgICB7IHJldHVybiBfX3N0cnhmcm1fbChfX3RvLCBfX2Zyb20sIF9fbiwgX01fY19sb2NhbGVfY29sbGF0ZSk7IH0KKysKKysjaWZkZWYgX0dMSUJDWFhfVVNFX1dDSEFSX1QKKysgIHRlbXBsYXRlPD4KKysgICAgaW50CisrICAgIGNvbGxhdGU8d2NoYXJfdD46Ol9NX2NvbXBhcmUoY29uc3Qgd2NoYXJfdCogX19vbmUsCisrCQkJCSBjb25zdCB3Y2hhcl90KiBfX3R3bykgY29uc3QKKysgICAgeworKyAgICAgIGludCBfX2NtcCA9IF9fd2NzY29sbF9sKF9fb25lLCBfX3R3bywgX01fY19sb2NhbGVfY29sbGF0ZSk7CisrICAgICAgcmV0dXJuIChfX2NtcCA+PiAoOCAqIHNpemVvZiAoaW50KSAtIDIpKSB8IChfX2NtcCAhPSAwKTsKKysgICAgfQorKworKyAgdGVtcGxhdGU8PgorKyAgICBzaXplX3QKKysgICAgY29sbGF0ZTx3Y2hhcl90Pjo6X01fdHJhbnNmb3JtKHdjaGFyX3QqIF9fdG8sIGNvbnN0IHdjaGFyX3QqIF9fZnJvbSwKKysJCQkJICAgc2l6ZV90IF9fbikgY29uc3QKKysgICAgeyByZXR1cm4gX193Y3N4ZnJtX2woX190bywgX19mcm9tLCBfX24sIF9NX2NfbG9jYWxlX2NvbGxhdGUpOyB9CisrI2VuZGlmCisrfQorZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi43Mjk0ZTNhCistLS0gL2Rldi9udWxsCisrKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYworQEAgLTAsMCArMSwzMDAgQEAKKysvLyBzdGQ6OmN0eXBlIGltcGxlbWVudGF0aW9uIGRldGFpbHMsIEdOVSB2ZXJzaW9uIC0qLSBDKysgLSotCisrCisrLy8gQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKy8vCisrLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQorKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQorKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisrLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCisrLy8gYW55IGxhdGVyIHZlcnNpb24uCisrCisrLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysvLyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKKysvLyBVU0EuCisrCisrLy8gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSB1c2UgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBmcmVlIHNvZnR3YXJlCisrLy8gbGlicmFyeSB3aXRob3V0IHJlc3RyaWN0aW9uLiAgU3BlY2lmaWNhbGx5LCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZQorKy8vIHRlbXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5jdGlvbnMgZnJvbSB0aGlzIGZpbGUsIG9yIHlvdSBjb21waWxlCisrLy8gdGhpcyBmaWxlIGFuZCBsaW5rIGl0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzCisrLy8gZmlsZSBkb2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkKKysvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyCisrLy8gaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5CisrLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorKworKy8vCisrLy8gSVNPIEMrKyAxNDg4MjogMjIuMi4xLjEuMiAgY3R5cGUgdmlydHVhbCBmdW5jdGlvbnMuCisrLy8KKysKKysvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgorKworKyNkZWZpbmUgX0xJQkMKKysjaW5jbHVkZSA8bG9jYWxlPgorKyN1bmRlZiBfTElCQworKyNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgorKworKyNpZm5kZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXworKyNkZWZpbmUgX193Y3R5cGVfbChTLCBMKSAgICAgICAgICAgd2N0eXBlKChTKSkKKysjZGVmaW5lIF9fdG93dXBwZXJfbChDLCBMKSAgICAgICAgIHRvd3VwcGVyKChDKSkKKysjZGVmaW5lIF9fdG93bG93ZXJfbChDLCBMKSAgICAgICAgIHRvd2xvd2VyKChDKSkKKysjZGVmaW5lIF9faXN3Y3R5cGVfbChDLCBNLCBMKSAgICAgIGlzd2N0eXBlKChDKSwgKE0pKQorKyNlbmRpZgorKworK25hbWVzcGFjZSBzdGQKKyt7CisrICAvLyBOQjogVGhlIG90aGVyIGN0eXBlPGNoYXI+IHNwZWNpYWxpemF0aW9ucyBhcmUgaW4gc3JjL2xvY2FsZS5jYyBhbmQKKysgIC8vIHZhcmlvdXMgL2NvbmZpZy9vcy8qIGZpbGVzLgorKyAgdGVtcGxhdGU8PgorKyAgICBjdHlwZV9ieW5hbWU8Y2hhcj46OmN0eXBlX2J5bmFtZShjb25zdCBjaGFyKiBfX3MsIHNpemVfdCBfX3JlZnMpCisrICAgIDogY3R5cGU8Y2hhcj4oMCwgZmFsc2UsIF9fcmVmcykKKysgICAgeworKyAgICAgIGlmIChzdGQ6OnN0cmNtcChfX3MsICJDIikgIT0gMCAmJiBzdGQ6OnN0cmNtcChfX3MsICJQT1NJWCIpICE9IDApCisrCXsKKysJICB0aGlzLT5fU19kZXN0cm95X2NfbG9jYWxlKHRoaXMtPl9NX2NfbG9jYWxlX2N0eXBlKTsKKysJICB0aGlzLT5fU19jcmVhdGVfY19sb2NhbGUodGhpcy0+X01fY19sb2NhbGVfY3R5cGUsIF9fcyk7CisrI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KKysJICB0aGlzLT5fTV90b3VwcGVyID0gdGhpcy0+X01fY19sb2NhbGVfY3R5cGUtPl9fY3R5cGVfdG91cHBlcjsKKysJICB0aGlzLT5fTV90b2xvd2VyID0gdGhpcy0+X01fY19sb2NhbGVfY3R5cGUtPl9fY3R5cGVfdG9sb3dlcjsKKysJICB0aGlzLT5fTV90YWJsZSA9IHRoaXMtPl9NX2NfbG9jYWxlX2N0eXBlLT5fX2N0eXBlX2I7CisrI2VuZGlmCisrCX0KKysgICAgfQorKworKyNpZmRlZiBfR0xJQkNYWF9VU0VfV0NIQVJfVAorKyAgY3R5cGU8d2NoYXJfdD46Ol9fd21hc2tfdHlwZQorKyAgY3R5cGU8d2NoYXJfdD46Ol9NX2NvbnZlcnRfdG9fd21hc2soY29uc3QgbWFzayBfX20pIGNvbnN0CisrICB7CisrICAgIF9fd21hc2tfdHlwZSBfX3JldDsKKysgICAgc3dpdGNoIChfX20pCisrICAgICAgeworKyAgICAgIGNhc2Ugc3BhY2U6CisrCV9fcmV0ID0gX193Y3R5cGVfbCgic3BhY2UiLCBfTV9jX2xvY2FsZV9jdHlwZSk7CisrCWJyZWFrOworKyAgICAgIGNhc2UgcHJpbnQ6CisrCV9fcmV0ID0gX193Y3R5cGVfbCgicHJpbnQiLCBfTV9jX2xvY2FsZV9jdHlwZSk7CisrCWJyZWFrOworKyAgICAgIGNhc2UgY250cmw6CisrCV9fcmV0ID0gX193Y3R5cGVfbCgiY250cmwiLCBfTV9jX2xvY2FsZV9jdHlwZSk7CisrCWJyZWFrOworKyAgICAgIGNhc2UgdXBwZXI6CisrCV9fcmV0ID0gX193Y3R5cGVfbCgidXBwZXIiLCBfTV9jX2xvY2FsZV9jdHlwZSk7CisrCWJyZWFrOworKyAgICAgIGNhc2UgbG93ZXI6CisrCV9fcmV0ID0gX193Y3R5cGVfbCgibG93ZXIiLCBfTV9jX2xvY2FsZV9jdHlwZSk7CisrCWJyZWFrOworKyAgICAgIGNhc2UgYWxwaGE6CisrCV9fcmV0ID0gX193Y3R5cGVfbCgiYWxwaGEiLCBfTV9jX2xvY2FsZV9jdHlwZSk7CisrCWJyZWFrOworKyAgICAgIGNhc2UgZGlnaXQ6CisrCV9fcmV0ID0gX193Y3R5cGVfbCgiZGlnaXQiLCBfTV9jX2xvY2FsZV9jdHlwZSk7CisrCWJyZWFrOworKyAgICAgIGNhc2UgcHVuY3Q6CisrCV9fcmV0ID0gX193Y3R5cGVfbCgicHVuY3QiLCBfTV9jX2xvY2FsZV9jdHlwZSk7CisrCWJyZWFrOworKyAgICAgIGNhc2UgeGRpZ2l0OgorKwlfX3JldCA9IF9fd2N0eXBlX2woInhkaWdpdCIsIF9NX2NfbG9jYWxlX2N0eXBlKTsKKysJYnJlYWs7CisrICAgICAgY2FzZSBhbG51bToKKysJX19yZXQgPSBfX3djdHlwZV9sKCJhbG51bSIsIF9NX2NfbG9jYWxlX2N0eXBlKTsKKysJYnJlYWs7CisrICAgICAgY2FzZSBncmFwaDoKKysJX19yZXQgPSBfX3djdHlwZV9sKCJncmFwaCIsIF9NX2NfbG9jYWxlX2N0eXBlKTsKKysJYnJlYWs7CisrICAgICAgZGVmYXVsdDoKKysJX19yZXQgPSBfX3dtYXNrX3R5cGUoKTsKKysgICAgICB9CisrICAgIHJldHVybiBfX3JldDsKKysgIH0KKysKKysgIHdjaGFyX3QKKysgIGN0eXBlPHdjaGFyX3Q+Ojpkb190b3VwcGVyKHdjaGFyX3QgX19jKSBjb25zdAorKyAgeyByZXR1cm4gX190b3d1cHBlcl9sKF9fYywgX01fY19sb2NhbGVfY3R5cGUpOyB9CisrCisrICBjb25zdCB3Y2hhcl90KgorKyAgY3R5cGU8d2NoYXJfdD46OmRvX3RvdXBwZXIod2NoYXJfdCogX19sbywgY29uc3Qgd2NoYXJfdCogX19oaSkgY29uc3QKKysgIHsKKysgICAgd2hpbGUgKF9fbG8gPCBfX2hpKQorKyAgICAgIHsKKysgICAgICAgICpfX2xvID0gX190b3d1cHBlcl9sKCpfX2xvLCBfTV9jX2xvY2FsZV9jdHlwZSk7CisrICAgICAgICArK19fbG87CisrICAgICAgfQorKyAgICByZXR1cm4gX19oaTsKKysgIH0KKysKKysgIHdjaGFyX3QKKysgIGN0eXBlPHdjaGFyX3Q+Ojpkb190b2xvd2VyKHdjaGFyX3QgX19jKSBjb25zdAorKyAgeyByZXR1cm4gX190b3dsb3dlcl9sKF9fYywgX01fY19sb2NhbGVfY3R5cGUpOyB9CisrCisrICBjb25zdCB3Y2hhcl90KgorKyAgY3R5cGU8d2NoYXJfdD46OmRvX3RvbG93ZXIod2NoYXJfdCogX19sbywgY29uc3Qgd2NoYXJfdCogX19oaSkgY29uc3QKKysgIHsKKysgICAgd2hpbGUgKF9fbG8gPCBfX2hpKQorKyAgICAgIHsKKysgICAgICAgICpfX2xvID0gX190b3dsb3dlcl9sKCpfX2xvLCBfTV9jX2xvY2FsZV9jdHlwZSk7CisrICAgICAgICArK19fbG87CisrICAgICAgfQorKyAgICByZXR1cm4gX19oaTsKKysgIH0KKysKKysgIGJvb2wKKysgIGN0eXBlPHdjaGFyX3Q+OjoKKysgIGRvX2lzKG1hc2sgX19tLCB3Y2hhcl90IF9fYykgY29uc3QKKysgIHsKKysgICAgLy8gSGlnaGVzdCBiaXRtYXNrIGluIGN0eXBlX2Jhc2UgPT0gMTAsIGJ1dCBleHRyYSBpbiAiQyIKKysgICAgLy8gbGlicmFyeSBmb3IgYmxhbmsuCisrICAgIGJvb2wgX19yZXQgPSBmYWxzZTsKKysgICAgY29uc3Qgc2l6ZV90IF9fYml0bWFza3NpemUgPSAxMTsKKysgICAgZm9yIChzaXplX3QgX19iaXRjdXIgPSAwOyBfX2JpdGN1ciA8PSBfX2JpdG1hc2tzaXplOyArK19fYml0Y3VyKQorKyAgICAgIGlmIChfX20gJiBfTV9iaXRbX19iaXRjdXJdCisrCSAgJiYgX19pc3djdHlwZV9sKF9fYywgX01fd21hc2tbX19iaXRjdXJdLCBfTV9jX2xvY2FsZV9jdHlwZSkpCisrCXsKKysJICBfX3JldCA9IHRydWU7CisrCSAgYnJlYWs7CisrCX0KKysgICAgcmV0dXJuIF9fcmV0OworKyAgfQorKworKyAgY29uc3Qgd2NoYXJfdCoKKysgIGN0eXBlPHdjaGFyX3Q+OjoKKysgIGRvX2lzKGNvbnN0IHdjaGFyX3QqIF9fbG8sIGNvbnN0IHdjaGFyX3QqIF9faGksIG1hc2sqIF9fdmVjKSBjb25zdAorKyAgeworKyAgICBmb3IgKDsgX19sbyA8IF9faGk7ICsrX192ZWMsICsrX19sbykKKysgICAgICB7CisrCS8vIEhpZ2hlc3QgYml0bWFzayBpbiBjdHlwZV9iYXNlID09IDEwLCBidXQgZXh0cmEgaW4gIkMiCisrCS8vIGxpYnJhcnkgZm9yIGJsYW5rLgorKwljb25zdCBzaXplX3QgX19iaXRtYXNrc2l6ZSA9IDExOworKwltYXNrIF9fbSA9IDA7CisrCWZvciAoc2l6ZV90IF9fYml0Y3VyID0gMDsgX19iaXRjdXIgPD0gX19iaXRtYXNrc2l6ZTsgKytfX2JpdGN1cikKKysJICBpZiAoX19pc3djdHlwZV9sKCpfX2xvLCBfTV93bWFza1tfX2JpdGN1cl0sIF9NX2NfbG9jYWxlX2N0eXBlKSkKKysJICAgIF9fbSB8PSBfTV9iaXRbX19iaXRjdXJdOworKwkqX192ZWMgPSBfX207CisrICAgICAgfQorKyAgICByZXR1cm4gX19oaTsKKysgIH0KKysKKysgIGNvbnN0IHdjaGFyX3QqCisrICBjdHlwZTx3Y2hhcl90Pjo6CisrICBkb19zY2FuX2lzKG1hc2sgX19tLCBjb25zdCB3Y2hhcl90KiBfX2xvLCBjb25zdCB3Y2hhcl90KiBfX2hpKSBjb25zdAorKyAgeworKyAgICB3aGlsZSAoX19sbyA8IF9faGkgJiYgIXRoaXMtPmRvX2lzKF9fbSwgKl9fbG8pKQorKyAgICAgICsrX19sbzsKKysgICAgcmV0dXJuIF9fbG87CisrICB9CisrCisrICBjb25zdCB3Y2hhcl90KgorKyAgY3R5cGU8d2NoYXJfdD46OgorKyAgZG9fc2Nhbl9ub3QobWFzayBfX20sIGNvbnN0IGNoYXJfdHlwZSogX19sbywgY29uc3QgY2hhcl90eXBlKiBfX2hpKSBjb25zdAorKyAgeworKyAgICB3aGlsZSAoX19sbyA8IF9faGkgJiYgdGhpcy0+ZG9faXMoX19tLCAqX19sbykgIT0gMCkKKysgICAgICArK19fbG87CisrICAgIHJldHVybiBfX2xvOworKyAgfQorKworKyAgd2NoYXJfdAorKyAgY3R5cGU8d2NoYXJfdD46OgorKyAgZG9fd2lkZW4oY2hhciBfX2MpIGNvbnN0CisrICB7IHJldHVybiBfTV93aWRlbltzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihfX2MpXTsgfQorKworKyAgY29uc3QgY2hhcioKKysgIGN0eXBlPHdjaGFyX3Q+OjoKKysgIGRvX3dpZGVuKGNvbnN0IGNoYXIqIF9fbG8sIGNvbnN0IGNoYXIqIF9faGksIHdjaGFyX3QqIF9fZGVzdCkgY29uc3QKKysgIHsKKysgICAgd2hpbGUgKF9fbG8gPCBfX2hpKQorKyAgICAgIHsKKysJKl9fZGVzdCA9IF9NX3dpZGVuW3N0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KCpfX2xvKV07CisrCSsrX19sbzsKKysJKytfX2Rlc3Q7CisrICAgICAgfQorKyAgICByZXR1cm4gX19oaTsKKysgIH0KKysKKysgIGNoYXIKKysgIGN0eXBlPHdjaGFyX3Q+OjoKKysgIGRvX25hcnJvdyh3Y2hhcl90IF9fd2MsIGNoYXIgX19kZmF1bHQpIGNvbnN0CisrICB7CisrICAgIGlmIChfX3djID49IDAgJiYgX193YyA8IDEyOCAmJiBfTV9uYXJyb3dfb2spCisrICAgICAgcmV0dXJuIF9NX25hcnJvd1tfX3djXTsKKysjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXworKyAgICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX01fY19sb2NhbGVfY3R5cGUpOworKyNlbmRpZgorKyAgICBjb25zdCBpbnQgX19jID0gd2N0b2IoX193Yyk7CisrI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KKysgICAgX191c2Vsb2NhbGUoX19vbGQpOworKyNlbmRpZgorKyAgICByZXR1cm4gKF9fYyA9PSBFT0YgPyBfX2RmYXVsdCA6IHN0YXRpY19jYXN0PGNoYXI+KF9fYykpOworKyAgfQorKworKyAgY29uc3Qgd2NoYXJfdCoKKysgIGN0eXBlPHdjaGFyX3Q+OjoKKysgIGRvX25hcnJvdyhjb25zdCB3Y2hhcl90KiBfX2xvLCBjb25zdCB3Y2hhcl90KiBfX2hpLCBjaGFyIF9fZGZhdWx0LAorKwkgICAgY2hhciogX19kZXN0KSBjb25zdAorKyAgeworKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCisrICAgIF9fY19sb2NhbGUgX19vbGQgPSBfX3VzZWxvY2FsZShfTV9jX2xvY2FsZV9jdHlwZSk7CisrI2VuZGlmCisrICAgIGlmIChfTV9uYXJyb3dfb2spCisrICAgICAgd2hpbGUgKF9fbG8gPCBfX2hpKQorKwl7CisrCSAgaWYgKCpfX2xvID49IDAgJiYgKl9fbG8gPCAxMjgpCisrCSAgICAqX19kZXN0ID0gX01fbmFycm93WypfX2xvXTsKKysJICBlbHNlCisrCSAgICB7CisrCSAgICAgIGNvbnN0IGludCBfX2MgPSB3Y3RvYigqX19sbyk7CisrCSAgICAgICpfX2Rlc3QgPSAoX19jID09IEVPRiA/IF9fZGZhdWx0IDogc3RhdGljX2Nhc3Q8Y2hhcj4oX19jKSk7CisrCSAgICB9CisrCSAgKytfX2xvOworKwkgICsrX19kZXN0OworKwl9CisrICAgIGVsc2UKKysgICAgICB3aGlsZSAoX19sbyA8IF9faGkpCisrCXsKKysJICBjb25zdCBpbnQgX19jID0gd2N0b2IoKl9fbG8pOworKwkgICpfX2Rlc3QgPSAoX19jID09IEVPRiA/IF9fZGZhdWx0IDogc3RhdGljX2Nhc3Q8Y2hhcj4oX19jKSk7CisrCSAgKytfX2xvOworKwkgICsrX19kZXN0OworKwl9CisrI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KKysgICAgX191c2Vsb2NhbGUoX19vbGQpOworKyNlbmRpZgorKyAgICByZXR1cm4gX19oaTsKKysgIH0KKysKKysgIHZvaWQKKysgIGN0eXBlPHdjaGFyX3Q+OjpfTV9pbml0aWFsaXplX2N0eXBlKCkKKysgIHsKKysjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXworKyAgICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX01fY19sb2NhbGVfY3R5cGUpOworKyNlbmRpZgorKyAgICB3aW50X3QgX19pOworKyAgICBmb3IgKF9faSA9IDA7IF9faSA8IDEyODsgKytfX2kpCisrICAgICAgeworKwljb25zdCBpbnQgX19jID0gd2N0b2IoX19pKTsKKysJaWYgKF9fYyA9PSBFT0YpCisrCSAgYnJlYWs7CisrCWVsc2UKKysJICBfTV9uYXJyb3dbX19pXSA9IHN0YXRpY19jYXN0PGNoYXI+KF9fYyk7CisrICAgICAgfQorKyAgICBpZiAoX19pID09IDEyOCkKKysgICAgICBfTV9uYXJyb3dfb2sgPSB0cnVlOworKyAgICBlbHNlCisrICAgICAgX01fbmFycm93X29rID0gZmFsc2U7CisrICAgIGZvciAoc2l6ZV90IF9faiA9IDA7CisrCSBfX2ogPCBzaXplb2YoX01fd2lkZW4pIC8gc2l6ZW9mKHdpbnRfdCk7ICsrX19qKQorKyAgICAgIF9NX3dpZGVuW19fal0gPSBidG93YyhfX2opOworKworKyAgICBmb3IgKHNpemVfdCBfX2sgPSAwOyBfX2sgPD0gMTE7ICsrX19rKQorKyAgICAgIHsKKysJX01fYml0W19fa10gPSBzdGF0aWNfY2FzdDxtYXNrPihfSVNiaXQoX19rKSk7CisrCV9NX3dtYXNrW19fa10gPSBfTV9jb252ZXJ0X3RvX3dtYXNrKF9NX2JpdFtfX2tdKTsKKysgICAgICB9CisrI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KKysgICAgX191c2Vsb2NhbGUoX19vbGQpOworKyNlbmRpZgorKyAgfQorKyNlbmRpZiAvLyAgX0dMSUJDWFhfVVNFX1dDSEFSX1QKKyt9CitkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5jYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjEzNTk0ZDkKKy0tLSAvZGV2L251bGwKKysrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmNjCitAQCAtMCwwICsxLDEwMCBAQAorKy8vIHN0ZDo6bWVzc2FnZXMgaW1wbGVtZW50YXRpb24gZGV0YWlscywgR05VIHZlcnNpb24gLSotIEMrKyAtKi0KKysKKysvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrLy8KKysvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCisrLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCisrLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKysvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKysvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisrLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAorKy8vIFVTQS4KKysKKysvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUKKysvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlCisrLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUKKysvLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMKKysvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieQorKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIKKysvLyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkKKysvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCisrCisrLy8KKysvLyBJU08gQysrIDE0ODgyOiAyMi4yLjcuMS4yICBtZXNzYWdlcyB2aXJ0dWFsIGZ1bmN0aW9ucworKy8vCisrCisrLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KKysKKysjaW5jbHVkZSA8bG9jYWxlPgorKyNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgorKworKyNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXworKyN3YXJuaW5nIGZpeCBnZXR0ZXh0IHN0dWZmCisrI2VuZGlmCisrI2lmZGVmIF9fVUNMSUJDX0hBU19HRVRURVhUX0FXQVJFTkVTU19fCisrZXh0ZXJuICJDIiBjaGFyICpfX2RjZ2V0dGV4dChjb25zdCBjaGFyICpkb21haW5uYW1lLAorKwkJCSAgICAgY29uc3QgY2hhciAqbXNnaWQsIGludCBjYXRlZ29yeSk7CisrI3VuZGVmIGdldHRleHQKKysjZGVmaW5lIGdldHRleHQobXNnaWQpIF9fZGNnZXR0ZXh0KE5VTEwsIG1zZ2lkLCBMQ19NRVNTQUdFUykKKysjZWxzZQorKyN1bmRlZiBnZXR0ZXh0CisrI2RlZmluZSBnZXR0ZXh0KG1zZ2lkKSAobXNnaWQpCisrI2VuZGlmCisrCisrbmFtZXNwYWNlIHN0ZAorK3sKKysgIC8vIFNwZWNpYWxpemF0aW9ucy4KKysgIHRlbXBsYXRlPD4KKysgICAgc3RyaW5nCisrICAgIG1lc3NhZ2VzPGNoYXI+Ojpkb19nZXQoY2F0YWxvZywgaW50LCBpbnQsIGNvbnN0IHN0cmluZyYgX19kZmF1bHQpIGNvbnN0CisrICAgIHsKKysjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXworKyAgICAgIF9fY19sb2NhbGUgX19vbGQgPSBfX3VzZWxvY2FsZShfTV9jX2xvY2FsZV9tZXNzYWdlcyk7CisrICAgICAgY29uc3QgY2hhciogX19tc2cgPSBjb25zdF9jYXN0PGNvbnN0IGNoYXIqPihnZXR0ZXh0KF9fZGZhdWx0LmNfc3RyKCkpKTsKKysgICAgICBfX3VzZWxvY2FsZShfX29sZCk7CisrICAgICAgcmV0dXJuIHN0cmluZyhfX21zZyk7CisrI2VsaWYgZGVmaW5lZCBfX1VDTElCQ19IQVNfTE9DQUxFX18KKysgICAgICBjaGFyKiBfX29sZCA9IHN0cmR1cChzZXRsb2NhbGUoTENfQUxMLCBOVUxMKSk7CisrICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX01fbmFtZV9tZXNzYWdlcyk7CisrICAgICAgY29uc3QgY2hhciogX19tc2cgPSBnZXR0ZXh0KF9fZGZhdWx0LmNfc3RyKCkpOworKyAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKKysgICAgICBmcmVlKF9fb2xkKTsKKysgICAgICByZXR1cm4gc3RyaW5nKF9fbXNnKTsKKysjZWxzZQorKyAgICAgIGNvbnN0IGNoYXIqIF9fbXNnID0gZ2V0dGV4dChfX2RmYXVsdC5jX3N0cigpKTsKKysgICAgICByZXR1cm4gc3RyaW5nKF9fbXNnKTsKKysjZW5kaWYKKysgICAgfQorKworKyNpZmRlZiBfR0xJQkNYWF9VU0VfV0NIQVJfVAorKyAgdGVtcGxhdGU8PgorKyAgICB3c3RyaW5nCisrICAgIG1lc3NhZ2VzPHdjaGFyX3Q+Ojpkb19nZXQoY2F0YWxvZywgaW50LCBpbnQsIGNvbnN0IHdzdHJpbmcmIF9fZGZhdWx0KSBjb25zdAorKyAgICB7CisrIyBpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCisrICAgICAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9NX2NfbG9jYWxlX21lc3NhZ2VzKTsKKysgICAgICBjaGFyKiBfX21zZyA9IGdldHRleHQoX01fY29udmVydF90b19jaGFyKF9fZGZhdWx0KSk7CisrICAgICAgX191c2Vsb2NhbGUoX19vbGQpOworKyAgICAgIHJldHVybiBfTV9jb252ZXJ0X2Zyb21fY2hhcihfX21zZyk7CisrIyBlbGlmIGRlZmluZWQgX19VQ0xJQkNfSEFTX0xPQ0FMRV9fCisrICAgICAgY2hhciogX19vbGQgPSBzdHJkdXAoc2V0bG9jYWxlKExDX0FMTCwgTlVMTCkpOworKyAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9NX25hbWVfbWVzc2FnZXMpOworKyAgICAgIGNoYXIqIF9fbXNnID0gZ2V0dGV4dChfTV9jb252ZXJ0X3RvX2NoYXIoX19kZmF1bHQpKTsKKysgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfX29sZCk7CisrICAgICAgZnJlZShfX29sZCk7CisrICAgICAgcmV0dXJuIF9NX2NvbnZlcnRfZnJvbV9jaGFyKF9fbXNnKTsKKysjIGVsc2UKKysgICAgICBjaGFyKiBfX21zZyA9IGdldHRleHQoX01fY29udmVydF90b19jaGFyKF9fZGZhdWx0KSk7CisrICAgICAgcmV0dXJuIF9NX2NvbnZlcnRfZnJvbV9jaGFyKF9fbXNnKTsKKysjIGVuZGlmCisrICAgIH0KKysjZW5kaWYKKyt9CitkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaCBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4xNDI0MDc4CistLS0gL2Rldi9udWxsCisrKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oCitAQCAtMCwwICsxLDExOCBAQAorKy8vIHN0ZDo6bWVzc2FnZXMgaW1wbGVtZW50YXRpb24gZGV0YWlscywgR05VIHZlcnNpb24gLSotIEMrKyAtKi0KKysKKysvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrLy8KKysvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCisrLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCisrLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKysvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKysvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisrLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAorKy8vIFVTQS4KKysKKysvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUKKysvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlCisrLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUKKysvLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMKKysvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieQorKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIKKysvLyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkKKysvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCisrCisrLy8KKysvLyBJU08gQysrIDE0ODgyOiAyMi4yLjcuMS4yICBtZXNzYWdlcyBmdW5jdGlvbnMKKysvLworKworKy8vIFdyaXR0ZW4gYnkgQmVuamFtaW4gS29zbmlrIDxia296QHJlZGhhdC5jb20+CisrCisrI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCisrI3dhcm5pbmcgZml4IHByb3RvdHlwZXMgZm9yICp0ZXh0ZG9tYWluIGZ1bmNzCisrI2VuZGlmCisrI2lmZGVmIF9fVUNMSUJDX0hBU19HRVRURVhUX0FXQVJFTkVTU19fCisrZXh0ZXJuICJDIiBjaGFyICpfX3RleHRkb21haW4oY29uc3QgY2hhciAqZG9tYWlubmFtZSk7CisrZXh0ZXJuICJDIiBjaGFyICpfX2JpbmR0ZXh0ZG9tYWluKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsCisrCQkJCSAgY29uc3QgY2hhciAqZGlybmFtZSk7CisrI2Vsc2UKKysjdW5kZWYgX190ZXh0ZG9tYWluCisrI3VuZGVmIF9fYmluZHRleHRkb21haW4KKysjZGVmaW5lIF9fdGV4dGRvbWFpbihEKSAgICAgICAgICAgKCh2b2lkKTApCisrI2RlZmluZSBfX2JpbmR0ZXh0ZG9tYWluKEQsUCkgICAgICgodm9pZCkwKQorKyNlbmRpZgorKworKyAgLy8gTm9uLXZpcnR1YWwgbWVtYmVyIGZ1bmN0aW9ucy4KKysgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KKysgICAgIG1lc3NhZ2VzPF9DaGFyVD46Om1lc3NhZ2VzKHNpemVfdCBfX3JlZnMpCisrICAgICA6IGZhY2V0KF9fcmVmcyksIF9NX2NfbG9jYWxlX21lc3NhZ2VzKF9TX2dldF9jX2xvY2FsZSgpKSwKKysgICAgIF9NX25hbWVfbWVzc2FnZXMoX1NfZ2V0X2NfbmFtZSgpKQorKyAgICAgeyB9CisrCisrICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CisrICAgICBtZXNzYWdlczxfQ2hhclQ+OjptZXNzYWdlcyhfX2NfbG9jYWxlIF9fY2xvYywgY29uc3QgY2hhciogX19zLAorKwkJCQlzaXplX3QgX19yZWZzKQorKyAgICAgOiBmYWNldChfX3JlZnMpLCBfTV9jX2xvY2FsZV9tZXNzYWdlcyhfU19jbG9uZV9jX2xvY2FsZShfX2Nsb2MpKSwKKysgICAgIF9NX25hbWVfbWVzc2FnZXMoX19zKQorKyAgICAgeworKyAgICAgICBjaGFyKiBfX3RtcCA9IG5ldyBjaGFyW3N0ZDo6c3RybGVuKF9fcykgKyAxXTsKKysgICAgICAgc3RkOjpzdHJjcHkoX190bXAsIF9fcyk7CisrICAgICAgIF9NX25hbWVfbWVzc2FnZXMgPSBfX3RtcDsKKysgICAgIH0KKysKKysgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KKysgICAgdHlwZW5hbWUgbWVzc2FnZXM8X0NoYXJUPjo6Y2F0YWxvZworKyAgICBtZXNzYWdlczxfQ2hhclQ+OjpvcGVuKGNvbnN0IGJhc2ljX3N0cmluZzxjaGFyPiYgX19zLCBjb25zdCBsb2NhbGUmIF9fbG9jLAorKwkJCSAgIGNvbnN0IGNoYXIqIF9fZGlyKSBjb25zdAorKyAgICB7CisrICAgICAgX19iaW5kdGV4dGRvbWFpbihfX3MuY19zdHIoKSwgX19kaXIpOworKyAgICAgIHJldHVybiB0aGlzLT5kb19vcGVuKF9fcywgX19sb2MpOworKyAgICB9CisrCisrICAvLyBWaXJ0dWFsIG1lbWJlciBmdW5jdGlvbnMuCisrICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CisrICAgIG1lc3NhZ2VzPF9DaGFyVD46On5tZXNzYWdlcygpCisrICAgIHsKKysgICAgICBpZiAoX01fbmFtZV9tZXNzYWdlcyAhPSBfU19nZXRfY19uYW1lKCkpCisrCWRlbGV0ZSBbXSBfTV9uYW1lX21lc3NhZ2VzOworKyAgICAgIF9TX2Rlc3Ryb3lfY19sb2NhbGUoX01fY19sb2NhbGVfbWVzc2FnZXMpOworKyAgICB9CisrCisrICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CisrICAgIHR5cGVuYW1lIG1lc3NhZ2VzPF9DaGFyVD46OmNhdGFsb2cKKysgICAgbWVzc2FnZXM8X0NoYXJUPjo6ZG9fb3Blbihjb25zdCBiYXNpY19zdHJpbmc8Y2hhcj4mIF9fcywKKysJCQkgICAgICBjb25zdCBsb2NhbGUmKSBjb25zdAorKyAgICB7CisrICAgICAgLy8gTm8gZXJyb3IgY2hlY2tpbmcgaXMgZG9uZSwgYXNzdW1lIHRoZSBjYXRhbG9nIGV4aXN0cyBhbmQgY2FuCisrICAgICAgLy8gYmUgdXNlZC4KKysgICAgICBfX3RleHRkb21haW4oX19zLmNfc3RyKCkpOworKyAgICAgIHJldHVybiAwOworKyAgICB9CisrCisrICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CisrICAgIHZvaWQKKysgICAgbWVzc2FnZXM8X0NoYXJUPjo6ZG9fY2xvc2UoY2F0YWxvZykgY29uc3QKKysgICAgeyB9CisrCisrICAgLy8gbWVzc2FnZXNfYnluYW1lCisrICAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgorKyAgICAgbWVzc2FnZXNfYnluYW1lPF9DaGFyVD46Om1lc3NhZ2VzX2J5bmFtZShjb25zdCBjaGFyKiBfX3MsIHNpemVfdCBfX3JlZnMpCisrICAgICA6IG1lc3NhZ2VzPF9DaGFyVD4oX19yZWZzKQorKyAgICAgeworKyAgICAgICBpZiAodGhpcy0+X01fbmFtZV9tZXNzYWdlcyAhPSBsb2NhbGU6OmZhY2V0OjpfU19nZXRfY19uYW1lKCkpCisrCSBkZWxldGUgW10gdGhpcy0+X01fbmFtZV9tZXNzYWdlczsKKysgICAgICAgY2hhciogX190bXAgPSBuZXcgY2hhcltzdGQ6OnN0cmxlbihfX3MpICsgMV07CisrICAgICAgIHN0ZDo6c3RyY3B5KF9fdG1wLCBfX3MpOworKyAgICAgICB0aGlzLT5fTV9uYW1lX21lc3NhZ2VzID0gX190bXA7CisrCisrICAgICAgIGlmIChzdGQ6OnN0cmNtcChfX3MsICJDIikgIT0gMCAmJiBzdGQ6OnN0cmNtcChfX3MsICJQT1NJWCIpICE9IDApCisrCSB7CisrCSAgIHRoaXMtPl9TX2Rlc3Ryb3lfY19sb2NhbGUodGhpcy0+X01fY19sb2NhbGVfbWVzc2FnZXMpOworKwkgICB0aGlzLT5fU19jcmVhdGVfY19sb2NhbGUodGhpcy0+X01fY19sb2NhbGVfbWVzc2FnZXMsIF9fcyk7CisrCSB9CisrICAgICB9CitkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmFhNTI3MzEKKy0tLSAvZGV2L251bGwKKysrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCitAQCAtMCwwICsxLDY5MiBAQAorKy8vIHN0ZDo6bW9uZXlwdW5jdCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCBHTlUgdmVyc2lvbiAtKi0gQysrIC0qLQorKworKy8vIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysvLworKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKKysvLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKKysvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorKy8vIGFueSBsYXRlciB2ZXJzaW9uLgorKworKy8vIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKysvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisrLy8gU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCisrLy8gVVNBLgorKworKy8vIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgdXNlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgZnJlZSBzb2Z0d2FyZQorKy8vIGxpYnJhcnkgd2l0aG91dCByZXN0cmljdGlvbi4gIFNwZWNpZmljYWxseSwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUKKysvLyB0ZW1wbGF0ZXMgb3IgdXNlIG1hY3JvcyBvciBpbmxpbmUgZnVuY3Rpb25zIGZyb20gdGhpcyBmaWxlLCBvciB5b3UgY29tcGlsZQorKy8vIHRoaXMgZmlsZSBhbmQgbGluayBpdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gZXhlY3V0YWJsZSwgdGhpcworKy8vIGZpbGUgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5CisrLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlcgorKy8vIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSBleGVjdXRhYmxlIGZpbGUgbWlnaHQgYmUgY292ZXJlZCBieQorKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KKysKKysvLworKy8vIElTTyBDKysgMTQ4ODI6IDIyLjIuNi4zLjIgIG1vbmV5cHVuY3QgdmlydHVhbCBmdW5jdGlvbnMKKysvLworKworKy8vIFdyaXR0ZW4gYnkgQmVuamFtaW4gS29zbmlrIDxia296QHJlZGhhdC5jb20+CisrCisrI2RlZmluZSBfTElCQworKyNpbmNsdWRlIDxsb2NhbGU+CisrI3VuZGVmIF9MSUJDCisrI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+CisrCisrI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCisrI3dhcm5pbmcgb3B0aW1pemUgdGhpcyBmb3IgdWNsaWJjCisrI3dhcm5pbmcgdGFpbG9yIGZvciBzdHViIGxvY2FsZSBzdXBwb3J0CisrI2VuZGlmCisrCisrI2lmbmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCisrI2RlZmluZSBfX25sX2xhbmdpbmZvX2woTiwgTCkgICAgICAgICBubF9sYW5naW5mbygoTikpCisrI2VuZGlmCisrCisrbmFtZXNwYWNlIHN0ZAorK3sKKysgIC8vIENvbnN0cnVjdCBhbmQgcmV0dXJuIHZhbGlkIHBhdHRlcm4gY29uc2lzdGluZyBvZiBzb21lIGNvbWJpbmF0aW9uIG9mOgorKyAgLy8gc3BhY2Ugbm9uZSBzeW1ib2wgc2lnbiB2YWx1ZQorKyAgbW9uZXlfYmFzZTo6cGF0dGVybgorKyAgbW9uZXlfYmFzZTo6X1NfY29uc3RydWN0X3BhdHRlcm4oY2hhciBfX3ByZWNlZGVzLCBjaGFyIF9fc3BhY2UsIGNoYXIgX19wb3NuKQorKyAgeworKyAgICBwYXR0ZXJuIF9fcmV0OworKworKyAgICAvLyBUaGlzIGluc2FuZWx5IGNvbXBsaWNhdGVkIHJvdXRpbmUgYXR0ZW1wdHMgdG8gY29uc3RydWN0IGEgdmFsaWQKKysgICAgLy8gcGF0dGVybiBmb3IgdXNlIHdpdGggbW9ueWVwdW5jdC4gQSBjb3VwbGUgb2YgaW52YXJpYW50czoKKysKKysgICAgLy8gaWYgKF9fcHJlY2VkZXMpIHN5bWJvbCAtPiB2YWx1ZQorKyAgICAvLyBlbHNlIHZhbHVlIC0+IHN5bWJvbAorKworKyAgICAvLyBpZiAoX19zcGFjZSkgc3BhY2UKKysgICAgLy8gZWxzZSBub25lCisrCisrICAgIC8vIG5vbmUgPT0gbmV2ZXIgZmlyc3QKKysgICAgLy8gc3BhY2UgbmV2ZXIgZmlyc3Qgb3IgbGFzdAorKworKyAgICAvLyBBbnkgZWxlZ2FudCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhpcyBhcmUgd2VsY29tZS4KKysgICAgc3dpdGNoIChfX3Bvc24pCisrICAgICAgeworKyAgICAgIGNhc2UgMDoKKysgICAgICBjYXNlIDE6CisrCS8vIDEgVGhlIHNpZ24gcHJlY2VkZXMgdGhlIHZhbHVlIGFuZCBzeW1ib2wuCisrCV9fcmV0LmZpZWxkWzBdID0gc2lnbjsKKysJaWYgKF9fc3BhY2UpCisrCSAgeworKwkgICAgLy8gUGF0dGVybiBzdGFydHMgd2l0aCBzaWduLgorKwkgICAgaWYgKF9fcHJlY2VkZXMpCisrCSAgICAgIHsKKysJCV9fcmV0LmZpZWxkWzFdID0gc3ltYm9sOworKwkJX19yZXQuZmllbGRbM10gPSB2YWx1ZTsKKysJICAgICAgfQorKwkgICAgZWxzZQorKwkgICAgICB7CisrCQlfX3JldC5maWVsZFsxXSA9IHZhbHVlOworKwkJX19yZXQuZmllbGRbM10gPSBzeW1ib2w7CisrCSAgICAgIH0KKysJICAgIF9fcmV0LmZpZWxkWzJdID0gc3BhY2U7CisrCSAgfQorKwllbHNlCisrCSAgeworKwkgICAgLy8gUGF0dGVybiBzdGFydHMgd2l0aCBzaWduIGFuZCBlbmRzIHdpdGggbm9uZS4KKysJICAgIGlmIChfX3ByZWNlZGVzKQorKwkgICAgICB7CisrCQlfX3JldC5maWVsZFsxXSA9IHN5bWJvbDsKKysJCV9fcmV0LmZpZWxkWzJdID0gdmFsdWU7CisrCSAgICAgIH0KKysJICAgIGVsc2UKKysJICAgICAgeworKwkJX19yZXQuZmllbGRbMV0gPSB2YWx1ZTsKKysJCV9fcmV0LmZpZWxkWzJdID0gc3ltYm9sOworKwkgICAgICB9CisrCSAgICBfX3JldC5maWVsZFszXSA9IG5vbmU7CisrCSAgfQorKwlicmVhazsKKysgICAgICBjYXNlIDI6CisrCS8vIDIgVGhlIHNpZ24gZm9sbG93cyB0aGUgdmFsdWUgYW5kIHN5bWJvbC4KKysJaWYgKF9fc3BhY2UpCisrCSAgeworKwkgICAgLy8gUGF0dGVybiBlaXRoZXIgZW5kcyB3aXRoIHNpZ24uCisrCSAgICBpZiAoX19wcmVjZWRlcykKKysJICAgICAgeworKwkJX19yZXQuZmllbGRbMF0gPSBzeW1ib2w7CisrCQlfX3JldC5maWVsZFsyXSA9IHZhbHVlOworKwkgICAgICB9CisrCSAgICBlbHNlCisrCSAgICAgIHsKKysJCV9fcmV0LmZpZWxkWzBdID0gdmFsdWU7CisrCQlfX3JldC5maWVsZFsyXSA9IHN5bWJvbDsKKysJICAgICAgfQorKwkgICAgX19yZXQuZmllbGRbMV0gPSBzcGFjZTsKKysJICAgIF9fcmV0LmZpZWxkWzNdID0gc2lnbjsKKysJICB9CisrCWVsc2UKKysJICB7CisrCSAgICAvLyBQYXR0ZXJuIGVuZHMgd2l0aCBzaWduIHRoZW4gbm9uZS4KKysJICAgIGlmIChfX3ByZWNlZGVzKQorKwkgICAgICB7CisrCQlfX3JldC5maWVsZFswXSA9IHN5bWJvbDsKKysJCV9fcmV0LmZpZWxkWzFdID0gdmFsdWU7CisrCSAgICAgIH0KKysJICAgIGVsc2UKKysJICAgICAgeworKwkJX19yZXQuZmllbGRbMF0gPSB2YWx1ZTsKKysJCV9fcmV0LmZpZWxkWzFdID0gc3ltYm9sOworKwkgICAgICB9CisrCSAgICBfX3JldC5maWVsZFsyXSA9IHNpZ247CisrCSAgICBfX3JldC5maWVsZFszXSA9IG5vbmU7CisrCSAgfQorKwlicmVhazsKKysgICAgICBjYXNlIDM6CisrCS8vIDMgVGhlIHNpZ24gaW1tZWRpYXRlbHkgcHJlY2VkZXMgdGhlIHN5bWJvbC4KKysJaWYgKF9fcHJlY2VkZXMpCisrCSAgeworKwkgICAgX19yZXQuZmllbGRbMF0gPSBzaWduOworKwkgICAgX19yZXQuZmllbGRbMV0gPSBzeW1ib2w7CisrCSAgICBpZiAoX19zcGFjZSkKKysJICAgICAgeworKwkJX19yZXQuZmllbGRbMl0gPSBzcGFjZTsKKysJCV9fcmV0LmZpZWxkWzNdID0gdmFsdWU7CisrCSAgICAgIH0KKysJICAgIGVsc2UKKysJICAgICAgeworKwkJX19yZXQuZmllbGRbMl0gPSB2YWx1ZTsKKysJCV9fcmV0LmZpZWxkWzNdID0gbm9uZTsKKysJICAgICAgfQorKwkgIH0KKysJZWxzZQorKwkgIHsKKysJICAgIF9fcmV0LmZpZWxkWzBdID0gdmFsdWU7CisrCSAgICBpZiAoX19zcGFjZSkKKysJICAgICAgeworKwkJX19yZXQuZmllbGRbMV0gPSBzcGFjZTsKKysJCV9fcmV0LmZpZWxkWzJdID0gc2lnbjsKKysJCV9fcmV0LmZpZWxkWzNdID0gc3ltYm9sOworKwkgICAgICB9CisrCSAgICBlbHNlCisrCSAgICAgIHsKKysJCV9fcmV0LmZpZWxkWzFdID0gc2lnbjsKKysJCV9fcmV0LmZpZWxkWzJdID0gc3ltYm9sOworKwkJX19yZXQuZmllbGRbM10gPSBub25lOworKwkgICAgICB9CisrCSAgfQorKwlicmVhazsKKysgICAgICBjYXNlIDQ6CisrCS8vIDQgVGhlIHNpZ24gaW1tZWRpYXRlbHkgZm9sbG93cyB0aGUgc3ltYm9sLgorKwlpZiAoX19wcmVjZWRlcykKKysJICB7CisrCSAgICBfX3JldC5maWVsZFswXSA9IHN5bWJvbDsKKysJICAgIF9fcmV0LmZpZWxkWzFdID0gc2lnbjsKKysJICAgIGlmIChfX3NwYWNlKQorKwkgICAgICB7CisrCQlfX3JldC5maWVsZFsyXSA9IHNwYWNlOworKwkJX19yZXQuZmllbGRbM10gPSB2YWx1ZTsKKysJICAgICAgfQorKwkgICAgZWxzZQorKwkgICAgICB7CisrCQlfX3JldC5maWVsZFsyXSA9IHZhbHVlOworKwkJX19yZXQuZmllbGRbM10gPSBub25lOworKwkgICAgICB9CisrCSAgfQorKwllbHNlCisrCSAgeworKwkgICAgX19yZXQuZmllbGRbMF0gPSB2YWx1ZTsKKysJICAgIGlmIChfX3NwYWNlKQorKwkgICAgICB7CisrCQlfX3JldC5maWVsZFsxXSA9IHNwYWNlOworKwkJX19yZXQuZmllbGRbMl0gPSBzeW1ib2w7CisrCQlfX3JldC5maWVsZFszXSA9IHNpZ247CisrCSAgICAgIH0KKysJICAgIGVsc2UKKysJICAgICAgeworKwkJX19yZXQuZmllbGRbMV0gPSBzeW1ib2w7CisrCQlfX3JldC5maWVsZFsyXSA9IHNpZ247CisrCQlfX3JldC5maWVsZFszXSA9IG5vbmU7CisrCSAgICAgIH0KKysJICB9CisrCWJyZWFrOworKyAgICAgIGRlZmF1bHQ6CisrCTsKKysgICAgICB9CisrICAgIHJldHVybiBfX3JldDsKKysgIH0KKysKKysgIHRlbXBsYXRlPD4KKysgICAgdm9pZAorKyAgICBtb25leXB1bmN0PGNoYXIsIHRydWU+OjpfTV9pbml0aWFsaXplX21vbmV5cHVuY3QoX19jX2xvY2FsZSBfX2Nsb2MsCisrCQkJCQkJICAgICBjb25zdCBjaGFyKikKKysgICAgeworKyAgICAgIGlmICghX01fZGF0YSkKKysJX01fZGF0YSA9IG5ldyBfX21vbmV5cHVuY3RfY2FjaGU8Y2hhciwgdHJ1ZT47CisrCisrICAgICAgaWYgKCFfX2Nsb2MpCisrCXsKKysJICAvLyAiQyIgbG9jYWxlCisrCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9ICcuJzsKKysJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gJywnOworKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nID0gIiI7CisrCSAgX01fZGF0YS0+X01fZ3JvdXBpbmdfc2l6ZSA9IDA7CisrCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2wgPSAiIjsKKysJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbF9zaXplID0gMDsKKysJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduID0gIiI7CisrCSAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbl9zaXplID0gMDsKKysJICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduID0gIiI7CisrCSAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbl9zaXplID0gMDsKKysJICBfTV9kYXRhLT5fTV9mcmFjX2RpZ2l0cyA9IDA7CisrCSAgX01fZGF0YS0+X01fcG9zX2Zvcm1hdCA9IG1vbmV5X2Jhc2U6Ol9TX2RlZmF1bHRfcGF0dGVybjsKKysJICBfTV9kYXRhLT5fTV9uZWdfZm9ybWF0ID0gbW9uZXlfYmFzZTo6X1NfZGVmYXVsdF9wYXR0ZXJuOworKworKwkgIGZvciAoc2l6ZV90IF9faSA9IDA7IF9faSA8IG1vbmV5X2Jhc2U6Ol9TX2VuZDsgKytfX2kpCisrCSAgICBfTV9kYXRhLT5fTV9hdG9tc1tfX2ldID0gbW9uZXlfYmFzZTo6X1NfYXRvbXNbX19pXTsKKysJfQorKyAgICAgIGVsc2UKKysJeworKwkgIC8vIE5hbWVkIGxvY2FsZS4KKysJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gKihfX25sX2xhbmdpbmZvX2woX19NT05fREVDSU1BTF9QT0lOVCwKKysJCQkJCQkJX19jbG9jKSk7CisrCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9ICooX19ubF9sYW5naW5mb19sKF9fTU9OX1RIT1VTQU5EU19TRVAsCisrCQkJCQkJCV9fY2xvYykpOworKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nID0gX19ubF9sYW5naW5mb19sKF9fTU9OX0dST1VQSU5HLCBfX2Nsb2MpOworKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nX3NpemUgPSBzdHJsZW4oX01fZGF0YS0+X01fZ3JvdXBpbmcpOworKwkgIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ24gPSBfX25sX2xhbmdpbmZvX2woX19QT1NJVElWRV9TSUdOLCBfX2Nsb2MpOworKwkgIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ25fc2l6ZSA9IHN0cmxlbihfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduKTsKKysKKysJICBjaGFyIF9fbnBvc24gPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9OX1NJR05fUE9TTiwgX19jbG9jKSk7CisrCSAgaWYgKCFfX25wb3NuKQorKwkgICAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbiA9ICIoKSI7CisrCSAgZWxzZQorKwkgICAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbiA9IF9fbmxfbGFuZ2luZm9fbChfX05FR0FUSVZFX1NJR04sCisrCQkJCQkJCV9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbl9zaXplID0gc3RybGVuKF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24pOworKworKwkgIC8vIF9JbnRsID09IHRydWUKKysJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbCA9IF9fbmxfbGFuZ2luZm9fbChfX0lOVF9DVVJSX1NZTUJPTCwgX19jbG9jKTsKKysJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbF9zaXplID0gc3RybGVuKF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sKTsKKysJICBfTV9kYXRhLT5fTV9mcmFjX2RpZ2l0cyA9ICooX19ubF9sYW5naW5mb19sKF9fSU5UX0ZSQUNfRElHSVRTLAorKwkJCQkJCSAgICAgIF9fY2xvYykpOworKwkgIGNoYXIgX19wcHJlY2VkZXMgPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9QX0NTX1BSRUNFREVTLCBfX2Nsb2MpKTsKKysJICBjaGFyIF9fcHNwYWNlID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfUF9TRVBfQllfU1BBQ0UsIF9fY2xvYykpOworKwkgIGNoYXIgX19wcG9zbiA9ICooX19ubF9sYW5naW5mb19sKF9fSU5UX1BfU0lHTl9QT1NOLCBfX2Nsb2MpKTsKKysJICBfTV9kYXRhLT5fTV9wb3NfZm9ybWF0ID0gX1NfY29uc3RydWN0X3BhdHRlcm4oX19wcHJlY2VkZXMsIF9fcHNwYWNlLAorKwkJCQkJCQlfX3Bwb3NuKTsKKysJICBjaGFyIF9fbnByZWNlZGVzID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfTl9DU19QUkVDRURFUywgX19jbG9jKSk7CisrCSAgY2hhciBfX25zcGFjZSA9ICooX19ubF9sYW5naW5mb19sKF9fSU5UX05fU0VQX0JZX1NQQUNFLCBfX2Nsb2MpKTsKKysJICBfTV9kYXRhLT5fTV9uZWdfZm9ybWF0ID0gX1NfY29uc3RydWN0X3BhdHRlcm4oX19ucHJlY2VkZXMsIF9fbnNwYWNlLAorKwkJCQkJCQlfX25wb3NuKTsKKysJfQorKyAgICB9CisrCisrICB0ZW1wbGF0ZTw+CisrICAgIHZvaWQKKysgICAgbW9uZXlwdW5jdDxjaGFyLCBmYWxzZT46Ol9NX2luaXRpYWxpemVfbW9uZXlwdW5jdChfX2NfbG9jYWxlIF9fY2xvYywKKysJCQkJCQkgICAgICBjb25zdCBjaGFyKikKKysgICAgeworKyAgICAgIGlmICghX01fZGF0YSkKKysJX01fZGF0YSA9IG5ldyBfX21vbmV5cHVuY3RfY2FjaGU8Y2hhciwgZmFsc2U+OworKworKyAgICAgIGlmICghX19jbG9jKQorKwl7CisrCSAgLy8gIkMiIGxvY2FsZQorKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSAnLic7CisrCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9ICcsJzsKKysJICBfTV9kYXRhLT5fTV9ncm91cGluZyA9ICIiOworKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nX3NpemUgPSAwOworKwkgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sID0gIiI7CisrCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2xfc2l6ZSA9IDA7CisrCSAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbiA9ICIiOworKwkgIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ25fc2l6ZSA9IDA7CisrCSAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbiA9ICIiOworKwkgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ25fc2l6ZSA9IDA7CisrCSAgX01fZGF0YS0+X01fZnJhY19kaWdpdHMgPSAwOworKwkgIF9NX2RhdGEtPl9NX3Bvc19mb3JtYXQgPSBtb25leV9iYXNlOjpfU19kZWZhdWx0X3BhdHRlcm47CisrCSAgX01fZGF0YS0+X01fbmVnX2Zvcm1hdCA9IG1vbmV5X2Jhc2U6Ol9TX2RlZmF1bHRfcGF0dGVybjsKKysKKysJICBmb3IgKHNpemVfdCBfX2kgPSAwOyBfX2kgPCBtb25leV9iYXNlOjpfU19lbmQ7ICsrX19pKQorKwkgICAgX01fZGF0YS0+X01fYXRvbXNbX19pXSA9IG1vbmV5X2Jhc2U6Ol9TX2F0b21zW19faV07CisrCX0KKysgICAgICBlbHNlCisrCXsKKysJICAvLyBOYW1lZCBsb2NhbGUuCisrCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9ICooX19ubF9sYW5naW5mb19sKF9fTU9OX0RFQ0lNQUxfUE9JTlQsCisrCQkJCQkJCV9fY2xvYykpOworKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSAqKF9fbmxfbGFuZ2luZm9fbChfX01PTl9USE9VU0FORFNfU0VQLAorKwkJCQkJCQlfX2Nsb2MpKTsKKysJICBfTV9kYXRhLT5fTV9ncm91cGluZyA9IF9fbmxfbGFuZ2luZm9fbChfX01PTl9HUk9VUElORywgX19jbG9jKTsKKysJICBfTV9kYXRhLT5fTV9ncm91cGluZ19zaXplID0gc3RybGVuKF9NX2RhdGEtPl9NX2dyb3VwaW5nKTsKKysJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduID0gX19ubF9sYW5naW5mb19sKF9fUE9TSVRJVkVfU0lHTiwgX19jbG9jKTsKKysJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduX3NpemUgPSBzdHJsZW4oX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbik7CisrCisrCSAgY2hhciBfX25wb3NuID0gKihfX25sX2xhbmdpbmZvX2woX19OX1NJR05fUE9TTiwgX19jbG9jKSk7CisrCSAgaWYgKCFfX25wb3NuKQorKwkgICAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbiA9ICIoKSI7CisrCSAgZWxzZQorKwkgICAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbiA9IF9fbmxfbGFuZ2luZm9fbChfX05FR0FUSVZFX1NJR04sCisrCQkJCQkJCV9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbl9zaXplID0gc3RybGVuKF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24pOworKworKwkgIC8vIF9JbnRsID09IGZhbHNlCisrCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2wgPSBfX25sX2xhbmdpbmZvX2woX19DVVJSRU5DWV9TWU1CT0wsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2xfc2l6ZSA9IHN0cmxlbihfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbCk7CisrCSAgX01fZGF0YS0+X01fZnJhY19kaWdpdHMgPSAqKF9fbmxfbGFuZ2luZm9fbChfX0ZSQUNfRElHSVRTLCBfX2Nsb2MpKTsKKysJICBjaGFyIF9fcHByZWNlZGVzID0gKihfX25sX2xhbmdpbmZvX2woX19QX0NTX1BSRUNFREVTLCBfX2Nsb2MpKTsKKysJICBjaGFyIF9fcHNwYWNlID0gKihfX25sX2xhbmdpbmZvX2woX19QX1NFUF9CWV9TUEFDRSwgX19jbG9jKSk7CisrCSAgY2hhciBfX3Bwb3NuID0gKihfX25sX2xhbmdpbmZvX2woX19QX1NJR05fUE9TTiwgX19jbG9jKSk7CisrCSAgX01fZGF0YS0+X01fcG9zX2Zvcm1hdCA9IF9TX2NvbnN0cnVjdF9wYXR0ZXJuKF9fcHByZWNlZGVzLCBfX3BzcGFjZSwKKysJCQkJCQkJX19wcG9zbik7CisrCSAgY2hhciBfX25wcmVjZWRlcyA9ICooX19ubF9sYW5naW5mb19sKF9fTl9DU19QUkVDRURFUywgX19jbG9jKSk7CisrCSAgY2hhciBfX25zcGFjZSA9ICooX19ubF9sYW5naW5mb19sKF9fTl9TRVBfQllfU1BBQ0UsIF9fY2xvYykpOworKwkgIF9NX2RhdGEtPl9NX25lZ19mb3JtYXQgPSBfU19jb25zdHJ1Y3RfcGF0dGVybihfX25wcmVjZWRlcywgX19uc3BhY2UsCisrCQkJCQkJCV9fbnBvc24pOworKwl9CisrICAgIH0KKysKKysgIHRlbXBsYXRlPD4KKysgICAgbW9uZXlwdW5jdDxjaGFyLCB0cnVlPjo6fm1vbmV5cHVuY3QoKQorKyAgICB7IGRlbGV0ZSBfTV9kYXRhOyB9CisrCisrICB0ZW1wbGF0ZTw+CisrICAgIG1vbmV5cHVuY3Q8Y2hhciwgZmFsc2U+Ojp+bW9uZXlwdW5jdCgpCisrICAgIHsgZGVsZXRlIF9NX2RhdGE7IH0KKysKKysjaWZkZWYgX0dMSUJDWFhfVVNFX1dDSEFSX1QKKysgIHRlbXBsYXRlPD4KKysgICAgdm9pZAorKyAgICBtb25leXB1bmN0PHdjaGFyX3QsIHRydWU+OjpfTV9pbml0aWFsaXplX21vbmV5cHVuY3QoX19jX2xvY2FsZSBfX2Nsb2MsCisrI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KKysJCQkJCQkJY29uc3QgY2hhciopCisrI2Vsc2UKKysJCQkJCQkJY29uc3QgY2hhciogX19uYW1lKQorKyNlbmRpZgorKyAgICB7CisrICAgICAgaWYgKCFfTV9kYXRhKQorKwlfTV9kYXRhID0gbmV3IF9fbW9uZXlwdW5jdF9jYWNoZTx3Y2hhcl90LCB0cnVlPjsKKysKKysgICAgICBpZiAoIV9fY2xvYykKKysJeworKwkgIC8vICJDIiBsb2NhbGUKKysJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gTCcuJzsKKysJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gTCcsJzsKKysJICBfTV9kYXRhLT5fTV9ncm91cGluZyA9ICIiOworKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nX3NpemUgPSAwOworKwkgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sID0gTCIiOworKwkgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sX3NpemUgPSAwOworKwkgIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ24gPSBMIiI7CisrCSAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbl9zaXplID0gMDsKKysJICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduID0gTCIiOworKwkgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ25fc2l6ZSA9IDA7CisrCSAgX01fZGF0YS0+X01fZnJhY19kaWdpdHMgPSAwOworKwkgIF9NX2RhdGEtPl9NX3Bvc19mb3JtYXQgPSBtb25leV9iYXNlOjpfU19kZWZhdWx0X3BhdHRlcm47CisrCSAgX01fZGF0YS0+X01fbmVnX2Zvcm1hdCA9IG1vbmV5X2Jhc2U6Ol9TX2RlZmF1bHRfcGF0dGVybjsKKysKKysJICAvLyBVc2UgY3R5cGU6OndpZGVuIGNvZGUgd2l0aG91dCB0aGUgZmFjZXQuLi4KKysJICBmb3IgKHNpemVfdCBfX2kgPSAwOyBfX2kgPCBtb25leV9iYXNlOjpfU19lbmQ7ICsrX19pKQorKwkgICAgX01fZGF0YS0+X01fYXRvbXNbX19pXSA9CisrCSAgICAgIHN0YXRpY19jYXN0PHdjaGFyX3Q+KG1vbmV5X2Jhc2U6Ol9TX2F0b21zW19faV0pOworKwl9CisrICAgICAgZWxzZQorKwl7CisrCSAgLy8gTmFtZWQgbG9jYWxlLgorKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCisrCSAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9fY2xvYyk7CisrI2Vsc2UKKysJICAvLyBTd2l0Y2ggdG8gbmFtZWQgbG9jYWxlIHNvIHRoYXQgbWJzcnRvd2NzIHdpbGwgd29yay4KKysJICBjaGFyKiBfX29sZCA9IHN0cmR1cChzZXRsb2NhbGUoTENfQUxMLCBOVUxMKSk7CisrCSAgc2V0bG9jYWxlKExDX0FMTCwgX19uYW1lKTsKKysjZW5kaWYKKysKKysjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KKysjd2FybmluZyBmaXggdGhpcy4uLiBzaG91bGQgYmUgbW9uZXRhcnkKKysjZW5kaWYKKysjaWZkZWYgX19VQ0xJQkNfXworKyMgaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXworKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBfX2Nsb2MtPmRlY2ltYWxfcG9pbnRfd2M7CisrCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IF9fY2xvYy0+dGhvdXNhbmRzX3NlcF93YzsKKysjIGVsc2UKKysJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gX19nbG9iYWxfbG9jYWxlLT5kZWNpbWFsX3BvaW50X3djOworKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX2dsb2JhbF9sb2NhbGUtPnRob3VzYW5kc19zZXBfd2M7CisrIyBlbmRpZgorKyNlbHNlCisrCSAgdW5pb24geyBjaGFyICpfX3M7IHdjaGFyX3QgX193OyB9IF9fdTsKKysJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9NT05FVEFSWV9ERUNJTUFMX1BPSU5UX1dDLCBfX2Nsb2MpOworKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBfX3UuX193OworKworKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX01PTkVUQVJZX1RIT1VTQU5EU19TRVBfV0MsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IF9fdS5fX3c7CisrI2VuZGlmCisrCSAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSBfX25sX2xhbmdpbmZvX2woX19NT05fR1JPVVBJTkcsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fZ3JvdXBpbmdfc2l6ZSA9IHN0cmxlbihfTV9kYXRhLT5fTV9ncm91cGluZyk7CisrCisrCSAgY29uc3QgY2hhciogX19jcG9zc2lnbiA9IF9fbmxfbGFuZ2luZm9fbChfX1BPU0lUSVZFX1NJR04sIF9fY2xvYyk7CisrCSAgY29uc3QgY2hhciogX19jbmVnc2lnbiA9IF9fbmxfbGFuZ2luZm9fbChfX05FR0FUSVZFX1NJR04sIF9fY2xvYyk7CisrCSAgY29uc3QgY2hhciogX19jY3VyciA9IF9fbmxfbGFuZ2luZm9fbChfX0lOVF9DVVJSX1NZTUJPTCwgX19jbG9jKTsKKysKKysJICB3Y2hhcl90KiBfX3djc19wcyA9IDA7CisrCSAgd2NoYXJfdCogX193Y3NfbnMgPSAwOworKwkgIGNvbnN0IGNoYXIgX19ucG9zbiA9ICooX19ubF9sYW5naW5mb19sKF9fSU5UX05fU0lHTl9QT1NOLCBfX2Nsb2MpKTsKKysJICB0cnkKKysJICAgIHsKKysJICAgICAgbWJzdGF0ZV90IF9fc3RhdGU7CisrCSAgICAgIHNpemVfdCBfX2xlbiA9IHN0cmxlbihfX2Nwb3NzaWduKTsKKysJICAgICAgaWYgKF9fbGVuKQorKwkJeworKwkJICArK19fbGVuOworKwkJICBtZW1zZXQoJl9fc3RhdGUsIDAsIHNpemVvZihtYnN0YXRlX3QpKTsKKysJCSAgX193Y3NfcHMgPSBuZXcgd2NoYXJfdFtfX2xlbl07CisrCQkgIG1ic3J0b3djcyhfX3djc19wcywgJl9fY3Bvc3NpZ24sIF9fbGVuLCAmX19zdGF0ZSk7CisrCQkgIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ24gPSBfX3djc19wczsKKysJCX0KKysJICAgICAgZWxzZQorKwkJX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbiA9IEwiIjsKKysJICAgICAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbl9zaXplID0gd2NzbGVuKF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ24pOworKworKwkgICAgICBfX2xlbiA9IHN0cmxlbihfX2NuZWdzaWduKTsKKysJICAgICAgaWYgKCFfX25wb3NuKQorKwkJX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbiA9IEwiKCkiOworKwkgICAgICBlbHNlIGlmIChfX2xlbikKKysJCXsKKysJCSAgKytfX2xlbjsKKysJCSAgbWVtc2V0KCZfX3N0YXRlLCAwLCBzaXplb2YobWJzdGF0ZV90KSk7CisrCQkgIF9fd2NzX25zID0gbmV3IHdjaGFyX3RbX19sZW5dOworKwkJICBtYnNydG93Y3MoX193Y3NfbnMsICZfX2NuZWdzaWduLCBfX2xlbiwgJl9fc3RhdGUpOworKwkJICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduID0gX193Y3NfbnM7CisrCQl9CisrCSAgICAgIGVsc2UKKysJCV9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSBMIiI7CisrCSAgICAgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ25fc2l6ZSA9IHdjc2xlbihfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduKTsKKysKKysJICAgICAgLy8gX0ludGwgPT0gdHJ1ZS4KKysJICAgICAgX19sZW4gPSBzdHJsZW4oX19jY3Vycik7CisrCSAgICAgIGlmIChfX2xlbikKKysJCXsKKysJCSAgKytfX2xlbjsKKysJCSAgbWVtc2V0KCZfX3N0YXRlLCAwLCBzaXplb2YobWJzdGF0ZV90KSk7CisrCQkgIHdjaGFyX3QqIF9fd2NzID0gbmV3IHdjaGFyX3RbX19sZW5dOworKwkJICBtYnNydG93Y3MoX193Y3MsICZfX2NjdXJyLCBfX2xlbiwgJl9fc3RhdGUpOworKwkJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbCA9IF9fd2NzOworKwkJfQorKwkgICAgICBlbHNlCisrCQlfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbCA9IEwiIjsKKysJICAgICAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2xfc2l6ZSA9IHdjc2xlbihfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbCk7CisrCSAgICB9CisrCSAgY2F0Y2ggKC4uLikKKysJICAgIHsKKysJICAgICAgZGVsZXRlIF9NX2RhdGE7CisrCSAgICAgIF9NX2RhdGEgPSAwOworKwkgICAgICBkZWxldGUgX193Y3NfcHM7CisrCSAgICAgIGRlbGV0ZSBfX3djc19uczsKKysjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXworKwkgICAgICBfX3VzZWxvY2FsZShfX29sZCk7CisrI2Vsc2UKKysJICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOworKwkgICAgICBmcmVlKF9fb2xkKTsKKysjZW5kaWYKKysJICAgICAgX190aHJvd19leGNlcHRpb25fYWdhaW47CisrCSAgICB9CisrCisrCSAgX01fZGF0YS0+X01fZnJhY19kaWdpdHMgPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9GUkFDX0RJR0lUUywKKysJCQkJCQkgICAgICBfX2Nsb2MpKTsKKysJICBjaGFyIF9fcHByZWNlZGVzID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfUF9DU19QUkVDRURFUywgX19jbG9jKSk7CisrCSAgY2hhciBfX3BzcGFjZSA9ICooX19ubF9sYW5naW5mb19sKF9fSU5UX1BfU0VQX0JZX1NQQUNFLCBfX2Nsb2MpKTsKKysJICBjaGFyIF9fcHBvc24gPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9QX1NJR05fUE9TTiwgX19jbG9jKSk7CisrCSAgX01fZGF0YS0+X01fcG9zX2Zvcm1hdCA9IF9TX2NvbnN0cnVjdF9wYXR0ZXJuKF9fcHByZWNlZGVzLCBfX3BzcGFjZSwKKysJCQkJCQkJX19wcG9zbik7CisrCSAgY2hhciBfX25wcmVjZWRlcyA9ICooX19ubF9sYW5naW5mb19sKF9fSU5UX05fQ1NfUFJFQ0VERVMsIF9fY2xvYykpOworKwkgIGNoYXIgX19uc3BhY2UgPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9OX1NFUF9CWV9TUEFDRSwgX19jbG9jKSk7CisrCSAgX01fZGF0YS0+X01fbmVnX2Zvcm1hdCA9IF9TX2NvbnN0cnVjdF9wYXR0ZXJuKF9fbnByZWNlZGVzLCBfX25zcGFjZSwKKysJCQkJCQkJX19ucG9zbik7CisrCisrI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KKysJICBfX3VzZWxvY2FsZShfX29sZCk7CisrI2Vsc2UKKysJICBzZXRsb2NhbGUoTENfQUxMLCBfX29sZCk7CisrCSAgZnJlZShfX29sZCk7CisrI2VuZGlmCisrCX0KKysgICAgfQorKworKyAgdGVtcGxhdGU8PgorKyAgdm9pZAorKyAgbW9uZXlwdW5jdDx3Y2hhcl90LCBmYWxzZT46Ol9NX2luaXRpYWxpemVfbW9uZXlwdW5jdChfX2NfbG9jYWxlIF9fY2xvYywKKysjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXworKwkJCQkJCSAgICAgICBjb25zdCBjaGFyKikKKysjZWxzZQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBfX25hbWUpCisrI2VuZGlmCisrICB7CisrICAgIGlmICghX01fZGF0YSkKKysgICAgICBfTV9kYXRhID0gbmV3IF9fbW9uZXlwdW5jdF9jYWNoZTx3Y2hhcl90LCBmYWxzZT47CisrCisrICAgIGlmICghX19jbG9jKQorKwl7CisrCSAgLy8gIkMiIGxvY2FsZQorKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBMJy4nOworKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBMJywnOworKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nID0gIiI7CisrICAgICAgICAgIF9NX2RhdGEtPl9NX2dyb3VwaW5nX3NpemUgPSAwOworKwkgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sID0gTCIiOworKwkgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sX3NpemUgPSAwOworKwkgIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ24gPSBMIiI7CisrCSAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbl9zaXplID0gMDsKKysJICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduID0gTCIiOworKwkgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ25fc2l6ZSA9IDA7CisrCSAgX01fZGF0YS0+X01fZnJhY19kaWdpdHMgPSAwOworKwkgIF9NX2RhdGEtPl9NX3Bvc19mb3JtYXQgPSBtb25leV9iYXNlOjpfU19kZWZhdWx0X3BhdHRlcm47CisrCSAgX01fZGF0YS0+X01fbmVnX2Zvcm1hdCA9IG1vbmV5X2Jhc2U6Ol9TX2RlZmF1bHRfcGF0dGVybjsKKysKKysJICAvLyBVc2UgY3R5cGU6OndpZGVuIGNvZGUgd2l0aG91dCB0aGUgZmFjZXQuLi4KKysJICBmb3IgKHNpemVfdCBfX2kgPSAwOyBfX2kgPCBtb25leV9iYXNlOjpfU19lbmQ7ICsrX19pKQorKwkgICAgX01fZGF0YS0+X01fYXRvbXNbX19pXSA9CisrCSAgICAgIHN0YXRpY19jYXN0PHdjaGFyX3Q+KG1vbmV5X2Jhc2U6Ol9TX2F0b21zW19faV0pOworKwl9CisrICAgICAgZWxzZQorKwl7CisrCSAgLy8gTmFtZWQgbG9jYWxlLgorKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCisrCSAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9fY2xvYyk7CisrI2Vsc2UKKysJICAvLyBTd2l0Y2ggdG8gbmFtZWQgbG9jYWxlIHNvIHRoYXQgbWJzcnRvd2NzIHdpbGwgd29yay4KKysJICBjaGFyKiBfX29sZCA9IHN0cmR1cChzZXRsb2NhbGUoTENfQUxMLCBOVUxMKSk7CisrCSAgc2V0bG9jYWxlKExDX0FMTCwgX19uYW1lKTsKKysjZW5kaWYKKysKKysjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KKysjd2FybmluZyBmaXggdGhpcy4uLiBzaG91bGQgYmUgbW9uZXRhcnkKKysjZW5kaWYKKysjaWZkZWYgX19VQ0xJQkNfXworKyMgaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXworKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBfX2Nsb2MtPmRlY2ltYWxfcG9pbnRfd2M7CisrCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IF9fY2xvYy0+dGhvdXNhbmRzX3NlcF93YzsKKysjIGVsc2UKKysJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gX19nbG9iYWxfbG9jYWxlLT5kZWNpbWFsX3BvaW50X3djOworKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX2dsb2JhbF9sb2NhbGUtPnRob3VzYW5kc19zZXBfd2M7CisrIyBlbmRpZgorKyNlbHNlCisrICAgICAgICAgIHVuaW9uIHsgY2hhciAqX19zOyB3Y2hhcl90IF9fdzsgfSBfX3U7CisrCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfTU9ORVRBUllfREVDSU1BTF9QT0lOVF9XQywgX19jbG9jKTsKKysJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gX191Ll9fdzsKKysKKysJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9NT05FVEFSWV9USE9VU0FORFNfU0VQX1dDLCBfX2Nsb2MpOworKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX3UuX193OworKyNlbmRpZgorKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nID0gX19ubF9sYW5naW5mb19sKF9fTU9OX0dST1VQSU5HLCBfX2Nsb2MpOworKyAgICAgICAgICBfTV9kYXRhLT5fTV9ncm91cGluZ19zaXplID0gc3RybGVuKF9NX2RhdGEtPl9NX2dyb3VwaW5nKTsKKysKKysJICBjb25zdCBjaGFyKiBfX2Nwb3NzaWduID0gX19ubF9sYW5naW5mb19sKF9fUE9TSVRJVkVfU0lHTiwgX19jbG9jKTsKKysJICBjb25zdCBjaGFyKiBfX2NuZWdzaWduID0gX19ubF9sYW5naW5mb19sKF9fTkVHQVRJVkVfU0lHTiwgX19jbG9jKTsKKysJICBjb25zdCBjaGFyKiBfX2NjdXJyID0gX19ubF9sYW5naW5mb19sKF9fQ1VSUkVOQ1lfU1lNQk9MLCBfX2Nsb2MpOworKworKwkgIHdjaGFyX3QqIF9fd2NzX3BzID0gMDsKKysJICB3Y2hhcl90KiBfX3djc19ucyA9IDA7CisrCSAgY29uc3QgY2hhciBfX25wb3NuID0gKihfX25sX2xhbmdpbmZvX2woX19OX1NJR05fUE9TTiwgX19jbG9jKSk7CisrCSAgdHJ5CisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgbWJzdGF0ZV90IF9fc3RhdGU7CisrICAgICAgICAgICAgICBzaXplX3QgX19sZW47CisrICAgICAgICAgICAgICBfX2xlbiA9IHN0cmxlbihfX2Nwb3NzaWduKTsKKysgICAgICAgICAgICAgIGlmIChfX2xlbikKKysgICAgICAgICAgICAgICAgeworKwkJICArK19fbGVuOworKwkJICBtZW1zZXQoJl9fc3RhdGUsIDAsIHNpemVvZihtYnN0YXRlX3QpKTsKKysJCSAgX193Y3NfcHMgPSBuZXcgd2NoYXJfdFtfX2xlbl07CisrCQkgIG1ic3J0b3djcyhfX3djc19wcywgJl9fY3Bvc3NpZ24sIF9fbGVuLCAmX19zdGF0ZSk7CisrCQkgIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ24gPSBfX3djc19wczsKKysJCX0KKysJICAgICAgZWxzZQorKwkJX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbiA9IEwiIjsKKysgICAgICAgICAgICAgIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ25fc2l6ZSA9IHdjc2xlbihfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduKTsKKysKKysJICAgICAgX19sZW4gPSBzdHJsZW4oX19jbmVnc2lnbik7CisrCSAgICAgIGlmICghX19ucG9zbikKKysJCV9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSBMIigpIjsKKysJICAgICAgZWxzZSBpZiAoX19sZW4pCisrCQl7CisrCQkgICsrX19sZW47CisrCQkgIG1lbXNldCgmX19zdGF0ZSwgMCwgc2l6ZW9mKG1ic3RhdGVfdCkpOworKwkJICBfX3djc19ucyA9IG5ldyB3Y2hhcl90W19fbGVuXTsKKysJCSAgbWJzcnRvd2NzKF9fd2NzX25zLCAmX19jbmVnc2lnbiwgX19sZW4sICZfX3N0YXRlKTsKKysJCSAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbiA9IF9fd2NzX25zOworKwkJfQorKwkgICAgICBlbHNlCisrCQlfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduID0gTCIiOworKyAgICAgICAgICAgICAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbl9zaXplID0gd2NzbGVuKF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24pOworKworKwkgICAgICAvLyBfSW50bCA9PSB0cnVlLgorKwkgICAgICBfX2xlbiA9IHN0cmxlbihfX2NjdXJyKTsKKysJICAgICAgaWYgKF9fbGVuKQorKwkJeworKwkJICArK19fbGVuOworKwkJICBtZW1zZXQoJl9fc3RhdGUsIDAsIHNpemVvZihtYnN0YXRlX3QpKTsKKysJCSAgd2NoYXJfdCogX193Y3MgPSBuZXcgd2NoYXJfdFtfX2xlbl07CisrCQkgIG1ic3J0b3djcyhfX3djcywgJl9fY2N1cnIsIF9fbGVuLCAmX19zdGF0ZSk7CisrCQkgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sID0gX193Y3M7CisrCQl9CisrCSAgICAgIGVsc2UKKysJCV9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sID0gTCIiOworKyAgICAgICAgICAgICAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2xfc2l6ZSA9IHdjc2xlbihfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbCk7CisrCSAgICB9CisrICAgICAgICAgIGNhdGNoICguLi4pCisrCSAgICB7CisrCSAgICAgIGRlbGV0ZSBfTV9kYXRhOworKyAgICAgICAgICAgICAgX01fZGF0YSA9IDA7CisrCSAgICAgIGRlbGV0ZSBfX3djc19wczsKKysJICAgICAgZGVsZXRlIF9fd2NzX25zOworKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCisrCSAgICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKKysjZWxzZQorKwkgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfX29sZCk7CisrCSAgICAgIGZyZWUoX19vbGQpOworKyNlbmRpZgorKyAgICAgICAgICAgICAgX190aHJvd19leGNlcHRpb25fYWdhaW47CisrCSAgICB9CisrCisrCSAgX01fZGF0YS0+X01fZnJhY19kaWdpdHMgPSAqKF9fbmxfbGFuZ2luZm9fbChfX0ZSQUNfRElHSVRTLCBfX2Nsb2MpKTsKKysJICBjaGFyIF9fcHByZWNlZGVzID0gKihfX25sX2xhbmdpbmZvX2woX19QX0NTX1BSRUNFREVTLCBfX2Nsb2MpKTsKKysJICBjaGFyIF9fcHNwYWNlID0gKihfX25sX2xhbmdpbmZvX2woX19QX1NFUF9CWV9TUEFDRSwgX19jbG9jKSk7CisrCSAgY2hhciBfX3Bwb3NuID0gKihfX25sX2xhbmdpbmZvX2woX19QX1NJR05fUE9TTiwgX19jbG9jKSk7CisrCSAgX01fZGF0YS0+X01fcG9zX2Zvcm1hdCA9IF9TX2NvbnN0cnVjdF9wYXR0ZXJuKF9fcHByZWNlZGVzLCBfX3BzcGFjZSwKKysJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19wcG9zbik7CisrCSAgY2hhciBfX25wcmVjZWRlcyA9ICooX19ubF9sYW5naW5mb19sKF9fTl9DU19QUkVDRURFUywgX19jbG9jKSk7CisrCSAgY2hhciBfX25zcGFjZSA9ICooX19ubF9sYW5naW5mb19sKF9fTl9TRVBfQllfU1BBQ0UsIF9fY2xvYykpOworKwkgIF9NX2RhdGEtPl9NX25lZ19mb3JtYXQgPSBfU19jb25zdHJ1Y3RfcGF0dGVybihfX25wcmVjZWRlcywgX19uc3BhY2UsCisrCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbnBvc24pOworKworKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCisrCSAgX191c2Vsb2NhbGUoX19vbGQpOworKyNlbHNlCisrCSAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOworKwkgIGZyZWUoX19vbGQpOworKyNlbmRpZgorKwl9CisrICAgIH0KKysKKysgIHRlbXBsYXRlPD4KKysgICAgbW9uZXlwdW5jdDx3Y2hhcl90LCB0cnVlPjo6fm1vbmV5cHVuY3QoKQorKyAgICB7CisrICAgICAgaWYgKF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ25fc2l6ZSkKKysJZGVsZXRlIFtdIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ247CisrICAgICAgaWYgKF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ25fc2l6ZQorKyAgICAgICAgICAmJiB3Y3NjbXAoX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbiwgTCIoKSIpICE9IDApCisrCWRlbGV0ZSBbXSBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduOworKyAgICAgIGlmIChfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbF9zaXplKQorKwlkZWxldGUgW10gX01fZGF0YS0+X01fY3Vycl9zeW1ib2w7CisrICAgICAgZGVsZXRlIF9NX2RhdGE7CisrICAgIH0KKysKKysgIHRlbXBsYXRlPD4KKysgICAgbW9uZXlwdW5jdDx3Y2hhcl90LCBmYWxzZT46On5tb25leXB1bmN0KCkKKysgICAgeworKyAgICAgIGlmIChfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduX3NpemUpCisrCWRlbGV0ZSBbXSBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduOworKyAgICAgIGlmIChfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduX3NpemUKKysgICAgICAgICAgJiYgd2NzY21wKF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24sIEwiKCkiKSAhPSAwKQorKwlkZWxldGUgW10gX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbjsKKysgICAgICBpZiAoX01fZGF0YS0+X01fY3Vycl9zeW1ib2xfc2l6ZSkKKysJZGVsZXRlIFtdIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sOworKyAgICAgIGRlbGV0ZSBfTV9kYXRhOworKyAgICB9CisrI2VuZGlmCisrfQorZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uODgzZWMxYQorLS0tIC9kZXYvbnVsbAorKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYworQEAgLTAsMCArMSwxNjAgQEAKKysvLyBzdGQ6Om51bXB1bmN0IGltcGxlbWVudGF0aW9uIGRldGFpbHMsIEdOVSB2ZXJzaW9uIC0qLSBDKysgLSotCisrCisrLy8gQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKy8vCisrLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQorKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQorKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisrLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCisrLy8gYW55IGxhdGVyIHZlcnNpb24uCisrCisrLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysvLyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKKysvLyBVU0EuCisrCisrLy8gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSB1c2UgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBmcmVlIHNvZnR3YXJlCisrLy8gbGlicmFyeSB3aXRob3V0IHJlc3RyaWN0aW9uLiAgU3BlY2lmaWNhbGx5LCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZQorKy8vIHRlbXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5jdGlvbnMgZnJvbSB0aGlzIGZpbGUsIG9yIHlvdSBjb21waWxlCisrLy8gdGhpcyBmaWxlIGFuZCBsaW5rIGl0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzCisrLy8gZmlsZSBkb2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkKKysvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyCisrLy8gaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5CisrLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorKworKy8vCisrLy8gSVNPIEMrKyAxNDg4MjogMjIuMi4zLjEuMiAgbnVtcHVuY3QgdmlydHVhbCBmdW5jdGlvbnMKKysvLworKworKy8vIFdyaXR0ZW4gYnkgQmVuamFtaW4gS29zbmlrIDxia296QHJlZGhhdC5jb20+CisrCisrI2RlZmluZSBfTElCQworKyNpbmNsdWRlIDxsb2NhbGU+CisrI3VuZGVmIF9MSUJDCisrI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+CisrCisrI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCisrI3dhcm5pbmcgdGFpbG9yIGZvciBzdHViIGxvY2FsZSBzdXBwb3J0CisrI2VuZGlmCisrI2lmbmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCisrI2RlZmluZSBfX25sX2xhbmdpbmZvX2woTiwgTCkgICAgICAgICBubF9sYW5naW5mbygoTikpCisrI2VuZGlmCisrCisrbmFtZXNwYWNlIHN0ZAorK3sKKysgIHRlbXBsYXRlPD4KKysgICAgdm9pZAorKyAgICBudW1wdW5jdDxjaGFyPjo6X01faW5pdGlhbGl6ZV9udW1wdW5jdChfX2NfbG9jYWxlIF9fY2xvYykKKysgICAgeworKyAgICAgIGlmICghX01fZGF0YSkKKysJX01fZGF0YSA9IG5ldyBfX251bXB1bmN0X2NhY2hlPGNoYXI+OworKworKyAgICAgIGlmICghX19jbG9jKQorKwl7CisrCSAgLy8gIkMiIGxvY2FsZQorKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nID0gIiI7CisrCSAgX01fZGF0YS0+X01fZ3JvdXBpbmdfc2l6ZSA9IDA7CisrCSAgX01fZGF0YS0+X01fdXNlX2dyb3VwaW5nID0gZmFsc2U7CisrCisrCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9ICcuJzsKKysJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gJywnOworKworKwkgIGZvciAoc2l6ZV90IF9faSA9IDA7IF9faSA8IF9fbnVtX2Jhc2U6Ol9TX29lbmQ7ICsrX19pKQorKwkgICAgX01fZGF0YS0+X01fYXRvbXNfb3V0W19faV0gPSBfX251bV9iYXNlOjpfU19hdG9tc19vdXRbX19pXTsKKysKKysJICBmb3IgKHNpemVfdCBfX2ogPSAwOyBfX2ogPCBfX251bV9iYXNlOjpfU19pZW5kOyArK19faikKKysJICAgIF9NX2RhdGEtPl9NX2F0b21zX2luW19fal0gPSBfX251bV9iYXNlOjpfU19hdG9tc19pbltfX2pdOworKwl9CisrICAgICAgZWxzZQorKwl7CisrCSAgLy8gTmFtZWQgbG9jYWxlLgorKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSAqKF9fbmxfbGFuZ2luZm9fbChERUNJTUFMX1BPSU5ULAorKwkJCQkJCQlfX2Nsb2MpKTsKKysJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gKihfX25sX2xhbmdpbmZvX2woVEhPVVNBTkRTX1NFUCwKKysJCQkJCQkJX19jbG9jKSk7CisrCisrCSAgLy8gQ2hlY2sgZm9yIE5VTEwsIHdoaWNoIGltcGxpZXMgbm8gZ3JvdXBpbmcuCisrCSAgaWYgKF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPT0gJ1wwJykKKysJICAgIF9NX2RhdGEtPl9NX2dyb3VwaW5nID0gIiI7CisrCSAgZWxzZQorKwkgICAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSBfX25sX2xhbmdpbmZvX2woR1JPVVBJTkcsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fZ3JvdXBpbmdfc2l6ZSA9IHN0cmxlbihfTV9kYXRhLT5fTV9ncm91cGluZyk7CisrCX0KKysKKysgICAgICAvLyBOQjogVGhlcmUgaXMgbm8gd2F5IHRvIGV4dGFjdCB0aGlzIGluZm8gZnJvbSBwb3NpeCBsb2NhbGVzLgorKyAgICAgIC8vIF9NX3RydWVuYW1lID0gX19ubF9sYW5naW5mb19sKFlFU1NUUiwgX19jbG9jKTsKKysgICAgICBfTV9kYXRhLT5fTV90cnVlbmFtZSA9ICJ0cnVlIjsKKysgICAgICBfTV9kYXRhLT5fTV90cnVlbmFtZV9zaXplID0gNDsKKysgICAgICAvLyBfTV9mYWxzZW5hbWUgPSBfX25sX2xhbmdpbmZvX2woTk9TVFIsIF9fY2xvYyk7CisrICAgICAgX01fZGF0YS0+X01fZmFsc2VuYW1lID0gImZhbHNlIjsKKysgICAgICBfTV9kYXRhLT5fTV9mYWxzZW5hbWVfc2l6ZSA9IDU7CisrICAgIH0KKysKKysgIHRlbXBsYXRlPD4KKysgICAgbnVtcHVuY3Q8Y2hhcj46On5udW1wdW5jdCgpCisrICAgIHsgZGVsZXRlIF9NX2RhdGE7IH0KKysKKysjaWZkZWYgX0dMSUJDWFhfVVNFX1dDSEFSX1QKKysgIHRlbXBsYXRlPD4KKysgICAgdm9pZAorKyAgICBudW1wdW5jdDx3Y2hhcl90Pjo6X01faW5pdGlhbGl6ZV9udW1wdW5jdChfX2NfbG9jYWxlIF9fY2xvYykKKysgICAgeworKyAgICAgIGlmICghX01fZGF0YSkKKysJX01fZGF0YSA9IG5ldyBfX251bXB1bmN0X2NhY2hlPHdjaGFyX3Q+OworKworKyAgICAgIGlmICghX19jbG9jKQorKwl7CisrCSAgLy8gIkMiIGxvY2FsZQorKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nID0gIiI7CisrCSAgX01fZGF0YS0+X01fZ3JvdXBpbmdfc2l6ZSA9IDA7CisrCSAgX01fZGF0YS0+X01fdXNlX2dyb3VwaW5nID0gZmFsc2U7CisrCisrCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IEwnLic7CisrCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IEwnLCc7CisrCisrCSAgLy8gVXNlIGN0eXBlOjp3aWRlbiBjb2RlIHdpdGhvdXQgdGhlIGZhY2V0Li4uCisrCSAgZm9yIChzaXplX3QgX19pID0gMDsgX19pIDwgX19udW1fYmFzZTo6X1Nfb2VuZDsgKytfX2kpCisrCSAgICBfTV9kYXRhLT5fTV9hdG9tc19vdXRbX19pXSA9CisrCSAgICAgIHN0YXRpY19jYXN0PHdjaGFyX3Q+KF9fbnVtX2Jhc2U6Ol9TX2F0b21zX291dFtfX2ldKTsKKysKKysJICBmb3IgKHNpemVfdCBfX2ogPSAwOyBfX2ogPCBfX251bV9iYXNlOjpfU19pZW5kOyArK19faikKKysJICAgIF9NX2RhdGEtPl9NX2F0b21zX2luW19fal0gPQorKwkgICAgICBzdGF0aWNfY2FzdDx3Y2hhcl90PihfX251bV9iYXNlOjpfU19hdG9tc19pbltfX2pdKTsKKysJfQorKyAgICAgIGVsc2UKKysJeworKwkgIC8vIE5hbWVkIGxvY2FsZS4KKysJICAvLyBOQjogSW4gdGhlIEdOVSBtb2RlbCB3Y2hhcl90IGlzIGFsd2F5cyAzMiBiaXQgd2lkZS4KKysJICB1bmlvbiB7IGNoYXIgKl9fczsgd2NoYXJfdCBfX3c7IH0gX191OworKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX05VTUVSSUNfREVDSU1BTF9QT0lOVF9XQywgX19jbG9jKTsKKysJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gX191Ll9fdzsKKysKKysJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9OVU1FUklDX1RIT1VTQU5EU19TRVBfV0MsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IF9fdS5fX3c7CisrCisrCSAgaWYgKF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPT0gTCdcMCcpCisrCSAgICBfTV9kYXRhLT5fTV9ncm91cGluZyA9ICIiOworKwkgIGVsc2UKKysJICAgIF9NX2RhdGEtPl9NX2dyb3VwaW5nID0gX19ubF9sYW5naW5mb19sKEdST1VQSU5HLCBfX2Nsb2MpOworKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nX3NpemUgPSBzdHJsZW4oX01fZGF0YS0+X01fZ3JvdXBpbmcpOworKwl9CisrCisrICAgICAgLy8gTkI6IFRoZXJlIGlzIG5vIHdheSB0byBleHRhY3QgdGhpcyBpbmZvIGZyb20gcG9zaXggbG9jYWxlcy4KKysgICAgICAvLyBfTV90cnVlbmFtZSA9IF9fbmxfbGFuZ2luZm9fbChZRVNTVFIsIF9fY2xvYyk7CisrICAgICAgX01fZGF0YS0+X01fdHJ1ZW5hbWUgPSBMInRydWUiOworKyAgICAgIF9NX2RhdGEtPl9NX3RydWVuYW1lX3NpemUgPSA0OworKyAgICAgIC8vIF9NX2ZhbHNlbmFtZSA9IF9fbmxfbGFuZ2luZm9fbChOT1NUUiwgX19jbG9jKTsKKysgICAgICBfTV9kYXRhLT5fTV9mYWxzZW5hbWUgPSBMImZhbHNlIjsKKysgICAgICBfTV9kYXRhLT5fTV9mYWxzZW5hbWVfc2l6ZSA9IDU7CisrICAgIH0KKysKKysgIHRlbXBsYXRlPD4KKysgICAgbnVtcHVuY3Q8d2NoYXJfdD46On5udW1wdW5jdCgpCisrICAgIHsgZGVsZXRlIF9NX2RhdGE7IH0KKysgI2VuZGlmCisrfQorZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZTA3MDdkNworLS0tIC9kZXYvbnVsbAorKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYworQEAgLTAsMCArMSw0MDYgQEAKKysvLyBzdGQ6OnRpbWVfZ2V0LCBzdGQ6OnRpbWVfcHV0IGltcGxlbWVudGF0aW9uLCBHTlUgdmVyc2lvbiAtKi0gQysrIC0qLQorKworKy8vIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysvLworKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKKysvLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKKysvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorKy8vIGFueSBsYXRlciB2ZXJzaW9uLgorKworKy8vIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKysvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisrLy8gU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCisrLy8gVVNBLgorKworKy8vIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgdXNlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgZnJlZSBzb2Z0d2FyZQorKy8vIGxpYnJhcnkgd2l0aG91dCByZXN0cmljdGlvbi4gIFNwZWNpZmljYWxseSwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUKKysvLyB0ZW1wbGF0ZXMgb3IgdXNlIG1hY3JvcyBvciBpbmxpbmUgZnVuY3Rpb25zIGZyb20gdGhpcyBmaWxlLCBvciB5b3UgY29tcGlsZQorKy8vIHRoaXMgZmlsZSBhbmQgbGluayBpdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gZXhlY3V0YWJsZSwgdGhpcworKy8vIGZpbGUgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5CisrLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlcgorKy8vIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSBleGVjdXRhYmxlIGZpbGUgbWlnaHQgYmUgY292ZXJlZCBieQorKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KKysKKysvLworKy8vIElTTyBDKysgMTQ4ODI6IDIyLjIuNS4xLjIgLSB0aW1lX2dldCB2aXJ0dWFsIGZ1bmN0aW9ucworKy8vIElTTyBDKysgMTQ4ODI6IDIyLjIuNS4zLjIgLSB0aW1lX3B1dCB2aXJ0dWFsIGZ1bmN0aW9ucworKy8vCisrCisrLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KKysKKysjaW5jbHVkZSA8bG9jYWxlPgorKyNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgorKworKyNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXworKyN3YXJuaW5nIHRhaWxvciBmb3Igc3R1YiBsb2NhbGUgc3VwcG9ydAorKyNlbmRpZgorKyNpZm5kZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXworKyNkZWZpbmUgX19ubF9sYW5naW5mb19sKE4sIEwpICAgICAgICAgbmxfbGFuZ2luZm8oKE4pKQorKyNlbmRpZgorKworK25hbWVzcGFjZSBzdGQKKyt7CisrICB0ZW1wbGF0ZTw+CisrICAgIHZvaWQKKysgICAgX190aW1lcHVuY3Q8Y2hhcj46OgorKyAgICBfTV9wdXQoY2hhciogX19zLCBzaXplX3QgX19tYXhsZW4sIGNvbnN0IGNoYXIqIF9fZm9ybWF0LAorKwkgICBjb25zdCB0bSogX190bSkgY29uc3QKKysgICAgeworKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCisrICAgICAgY29uc3Qgc2l6ZV90IF9fbGVuID0gX19zdHJmdGltZV9sKF9fcywgX19tYXhsZW4sIF9fZm9ybWF0LCBfX3RtLAorKwkJCQkJX01fY19sb2NhbGVfdGltZXB1bmN0KTsKKysjZWxzZQorKyAgICAgIGNoYXIqIF9fb2xkID0gc3RyZHVwKHNldGxvY2FsZShMQ19BTEwsIE5VTEwpKTsKKysgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfTV9uYW1lX3RpbWVwdW5jdCk7CisrICAgICAgY29uc3Qgc2l6ZV90IF9fbGVuID0gc3RyZnRpbWUoX19zLCBfX21heGxlbiwgX19mb3JtYXQsIF9fdG0pOworKyAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKKysgICAgICBmcmVlKF9fb2xkKTsKKysjZW5kaWYKKysgICAgICAvLyBNYWtlIHN1cmUgX19zIGlzIG51bGwgdGVybWluYXRlZC4KKysgICAgICBpZiAoX19sZW4gPT0gMCkKKysJX19zWzBdID0gJ1wwJzsKKysgICAgfQorKworKyAgdGVtcGxhdGU8PgorKyAgICB2b2lkCisrICAgIF9fdGltZXB1bmN0PGNoYXI+OjpfTV9pbml0aWFsaXplX3RpbWVwdW5jdChfX2NfbG9jYWxlIF9fY2xvYykKKysgICAgeworKyAgICAgIGlmICghX01fZGF0YSkKKysJX01fZGF0YSA9IG5ldyBfX3RpbWVwdW5jdF9jYWNoZTxjaGFyPjsKKysKKysgICAgICBpZiAoIV9fY2xvYykKKysJeworKwkgIC8vICJDIiBsb2NhbGUKKysJICBfTV9jX2xvY2FsZV90aW1lcHVuY3QgPSBfU19nZXRfY19sb2NhbGUoKTsKKysKKysJICBfTV9kYXRhLT5fTV9kYXRlX2Zvcm1hdCA9ICIlbS8lZC8leSI7CisrCSAgX01fZGF0YS0+X01fZGF0ZV9lcmFfZm9ybWF0ID0gIiVtLyVkLyV5IjsKKysJICBfTV9kYXRhLT5fTV90aW1lX2Zvcm1hdCA9ICIlSDolTTolUyI7CisrCSAgX01fZGF0YS0+X01fdGltZV9lcmFfZm9ybWF0ID0gIiVIOiVNOiVTIjsKKysJICBfTV9kYXRhLT5fTV9kYXRlX3RpbWVfZm9ybWF0ID0gIiI7CisrCSAgX01fZGF0YS0+X01fZGF0ZV90aW1lX2VyYV9mb3JtYXQgPSAiIjsKKysJICBfTV9kYXRhLT5fTV9hbSA9ICJBTSI7CisrCSAgX01fZGF0YS0+X01fcG0gPSAiUE0iOworKwkgIF9NX2RhdGEtPl9NX2FtX3BtX2Zvcm1hdCA9ICIiOworKworKwkgIC8vIERheSBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBTdW5kYXkuCisrCSAgX01fZGF0YS0+X01fZGF5MSA9ICJTdW5kYXkiOworKwkgIF9NX2RhdGEtPl9NX2RheTIgPSAiTW9uZGF5IjsKKysJICBfTV9kYXRhLT5fTV9kYXkzID0gIlR1ZXNkYXkiOworKwkgIF9NX2RhdGEtPl9NX2RheTQgPSAiV2VkbmVzZGF5IjsKKysJICBfTV9kYXRhLT5fTV9kYXk1ID0gIlRodXJzZGF5IjsKKysJICBfTV9kYXRhLT5fTV9kYXk2ID0gIkZyaWRheSI7CisrCSAgX01fZGF0YS0+X01fZGF5NyA9ICJTYXR1cmRheSI7CisrCisrCSAgLy8gQWJicmV2aWF0ZWQgZGF5IG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIFN1bi4KKysJICBfTV9kYXRhLT5fTV9hZGF5MSA9ICJTdW4iOworKwkgIF9NX2RhdGEtPl9NX2FkYXkyID0gIk1vbiI7CisrCSAgX01fZGF0YS0+X01fYWRheTMgPSAiVHVlIjsKKysJICBfTV9kYXRhLT5fTV9hZGF5NCA9ICJXZWQiOworKwkgIF9NX2RhdGEtPl9NX2FkYXk1ID0gIlRodSI7CisrCSAgX01fZGF0YS0+X01fYWRheTYgPSAiRnJpIjsKKysJICBfTV9kYXRhLT5fTV9hZGF5NyA9ICJTYXQiOworKworKwkgIC8vIE1vbnRoIG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIEphbnVhcnkuCisrCSAgX01fZGF0YS0+X01fbW9udGgwMSA9ICJKYW51YXJ5IjsKKysJICBfTV9kYXRhLT5fTV9tb250aDAyID0gIkZlYnJ1YXJ5IjsKKysJICBfTV9kYXRhLT5fTV9tb250aDAzID0gIk1hcmNoIjsKKysJICBfTV9kYXRhLT5fTV9tb250aDA0ID0gIkFwcmlsIjsKKysJICBfTV9kYXRhLT5fTV9tb250aDA1ID0gIk1heSI7CisrCSAgX01fZGF0YS0+X01fbW9udGgwNiA9ICJKdW5lIjsKKysJICBfTV9kYXRhLT5fTV9tb250aDA3ID0gIkp1bHkiOworKwkgIF9NX2RhdGEtPl9NX21vbnRoMDggPSAiQXVndXN0IjsKKysJICBfTV9kYXRhLT5fTV9tb250aDA5ID0gIlNlcHRlbWJlciI7CisrCSAgX01fZGF0YS0+X01fbW9udGgxMCA9ICJPY3RvYmVyIjsKKysJICBfTV9kYXRhLT5fTV9tb250aDExID0gIk5vdmVtYmVyIjsKKysJICBfTV9kYXRhLT5fTV9tb250aDEyID0gIkRlY2VtYmVyIjsKKysKKysJICAvLyBBYmJyZXZpYXRlZCBtb250aCBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBKYW4uCisrCSAgX01fZGF0YS0+X01fYW1vbnRoMDEgPSAiSmFuIjsKKysJICBfTV9kYXRhLT5fTV9hbW9udGgwMiA9ICJGZWIiOworKwkgIF9NX2RhdGEtPl9NX2Ftb250aDAzID0gIk1hciI7CisrCSAgX01fZGF0YS0+X01fYW1vbnRoMDQgPSAiQXByIjsKKysJICBfTV9kYXRhLT5fTV9hbW9udGgwNSA9ICJNYXkiOworKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA2ID0gIkp1biI7CisrCSAgX01fZGF0YS0+X01fYW1vbnRoMDcgPSAiSnVsIjsKKysJICBfTV9kYXRhLT5fTV9hbW9udGgwOCA9ICJBdWciOworKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA5ID0gIlNlcCI7CisrCSAgX01fZGF0YS0+X01fYW1vbnRoMTAgPSAiT2N0IjsKKysJICBfTV9kYXRhLT5fTV9hbW9udGgxMSA9ICJOb3YiOworKwkgIF9NX2RhdGEtPl9NX2Ftb250aDEyID0gIkRlYyI7CisrCX0KKysgICAgICBlbHNlCisrCXsKKysJICBfTV9jX2xvY2FsZV90aW1lcHVuY3QgPSBfU19jbG9uZV9jX2xvY2FsZShfX2Nsb2MpOworKworKwkgIF9NX2RhdGEtPl9NX2RhdGVfZm9ybWF0ID0gX19ubF9sYW5naW5mb19sKERfRk1ULCBfX2Nsb2MpOworKwkgIF9NX2RhdGEtPl9NX2RhdGVfZXJhX2Zvcm1hdCA9IF9fbmxfbGFuZ2luZm9fbChFUkFfRF9GTVQsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fdGltZV9mb3JtYXQgPSBfX25sX2xhbmdpbmZvX2woVF9GTVQsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fdGltZV9lcmFfZm9ybWF0ID0gX19ubF9sYW5naW5mb19sKEVSQV9UX0ZNVCwgX19jbG9jKTsKKysJICBfTV9kYXRhLT5fTV9kYXRlX3RpbWVfZm9ybWF0ID0gX19ubF9sYW5naW5mb19sKERfVF9GTVQsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fZGF0ZV90aW1lX2VyYV9mb3JtYXQgPSBfX25sX2xhbmdpbmZvX2woRVJBX0RfVF9GTVQsCisrCQkJCQkJCSAgICAgX19jbG9jKTsKKysJICBfTV9kYXRhLT5fTV9hbSA9IF9fbmxfbGFuZ2luZm9fbChBTV9TVFIsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fcG0gPSBfX25sX2xhbmdpbmZvX2woUE1fU1RSLCBfX2Nsb2MpOworKwkgIF9NX2RhdGEtPl9NX2FtX3BtX2Zvcm1hdCA9IF9fbmxfbGFuZ2luZm9fbChUX0ZNVF9BTVBNLCBfX2Nsb2MpOworKworKwkgIC8vIERheSBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBTdW5kYXkuCisrCSAgX01fZGF0YS0+X01fZGF5MSA9IF9fbmxfbGFuZ2luZm9fbChEQVlfMSwgX19jbG9jKTsKKysJICBfTV9kYXRhLT5fTV9kYXkyID0gX19ubF9sYW5naW5mb19sKERBWV8yLCBfX2Nsb2MpOworKwkgIF9NX2RhdGEtPl9NX2RheTMgPSBfX25sX2xhbmdpbmZvX2woREFZXzMsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fZGF5NCA9IF9fbmxfbGFuZ2luZm9fbChEQVlfNCwgX19jbG9jKTsKKysJICBfTV9kYXRhLT5fTV9kYXk1ID0gX19ubF9sYW5naW5mb19sKERBWV81LCBfX2Nsb2MpOworKwkgIF9NX2RhdGEtPl9NX2RheTYgPSBfX25sX2xhbmdpbmZvX2woREFZXzYsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fZGF5NyA9IF9fbmxfbGFuZ2luZm9fbChEQVlfNywgX19jbG9jKTsKKysKKysJICAvLyBBYmJyZXZpYXRlZCBkYXkgbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgU3VuLgorKwkgIF9NX2RhdGEtPl9NX2FkYXkxID0gX19ubF9sYW5naW5mb19sKEFCREFZXzEsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fYWRheTIgPSBfX25sX2xhbmdpbmZvX2woQUJEQVlfMiwgX19jbG9jKTsKKysJICBfTV9kYXRhLT5fTV9hZGF5MyA9IF9fbmxfbGFuZ2luZm9fbChBQkRBWV8zLCBfX2Nsb2MpOworKwkgIF9NX2RhdGEtPl9NX2FkYXk0ID0gX19ubF9sYW5naW5mb19sKEFCREFZXzQsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fYWRheTUgPSBfX25sX2xhbmdpbmZvX2woQUJEQVlfNSwgX19jbG9jKTsKKysJICBfTV9kYXRhLT5fTV9hZGF5NiA9IF9fbmxfbGFuZ2luZm9fbChBQkRBWV82LCBfX2Nsb2MpOworKwkgIF9NX2RhdGEtPl9NX2FkYXk3ID0gX19ubF9sYW5naW5mb19sKEFCREFZXzcsIF9fY2xvYyk7CisrCisrCSAgLy8gTW9udGggbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgSmFudWFyeS4KKysJICBfTV9kYXRhLT5fTV9tb250aDAxID0gX19ubF9sYW5naW5mb19sKE1PTl8xLCBfX2Nsb2MpOworKwkgIF9NX2RhdGEtPl9NX21vbnRoMDIgPSBfX25sX2xhbmdpbmZvX2woTU9OXzIsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fbW9udGgwMyA9IF9fbmxfbGFuZ2luZm9fbChNT05fMywgX19jbG9jKTsKKysJICBfTV9kYXRhLT5fTV9tb250aDA0ID0gX19ubF9sYW5naW5mb19sKE1PTl80LCBfX2Nsb2MpOworKwkgIF9NX2RhdGEtPl9NX21vbnRoMDUgPSBfX25sX2xhbmdpbmZvX2woTU9OXzUsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fbW9udGgwNiA9IF9fbmxfbGFuZ2luZm9fbChNT05fNiwgX19jbG9jKTsKKysJICBfTV9kYXRhLT5fTV9tb250aDA3ID0gX19ubF9sYW5naW5mb19sKE1PTl83LCBfX2Nsb2MpOworKwkgIF9NX2RhdGEtPl9NX21vbnRoMDggPSBfX25sX2xhbmdpbmZvX2woTU9OXzgsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fbW9udGgwOSA9IF9fbmxfbGFuZ2luZm9fbChNT05fOSwgX19jbG9jKTsKKysJICBfTV9kYXRhLT5fTV9tb250aDEwID0gX19ubF9sYW5naW5mb19sKE1PTl8xMCwgX19jbG9jKTsKKysJICBfTV9kYXRhLT5fTV9tb250aDExID0gX19ubF9sYW5naW5mb19sKE1PTl8xMSwgX19jbG9jKTsKKysJICBfTV9kYXRhLT5fTV9tb250aDEyID0gX19ubF9sYW5naW5mb19sKE1PTl8xMiwgX19jbG9jKTsKKysKKysJICAvLyBBYmJyZXZpYXRlZCBtb250aCBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBKYW4uCisrCSAgX01fZGF0YS0+X01fYW1vbnRoMDEgPSBfX25sX2xhbmdpbmZvX2woQUJNT05fMSwgX19jbG9jKTsKKysJICBfTV9kYXRhLT5fTV9hbW9udGgwMiA9IF9fbmxfbGFuZ2luZm9fbChBQk1PTl8yLCBfX2Nsb2MpOworKwkgIF9NX2RhdGEtPl9NX2Ftb250aDAzID0gX19ubF9sYW5naW5mb19sKEFCTU9OXzMsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fYW1vbnRoMDQgPSBfX25sX2xhbmdpbmZvX2woQUJNT05fNCwgX19jbG9jKTsKKysJICBfTV9kYXRhLT5fTV9hbW9udGgwNSA9IF9fbmxfbGFuZ2luZm9fbChBQk1PTl81LCBfX2Nsb2MpOworKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA2ID0gX19ubF9sYW5naW5mb19sKEFCTU9OXzYsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fYW1vbnRoMDcgPSBfX25sX2xhbmdpbmZvX2woQUJNT05fNywgX19jbG9jKTsKKysJICBfTV9kYXRhLT5fTV9hbW9udGgwOCA9IF9fbmxfbGFuZ2luZm9fbChBQk1PTl84LCBfX2Nsb2MpOworKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA5ID0gX19ubF9sYW5naW5mb19sKEFCTU9OXzksIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fYW1vbnRoMTAgPSBfX25sX2xhbmdpbmZvX2woQUJNT05fMTAsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fYW1vbnRoMTEgPSBfX25sX2xhbmdpbmZvX2woQUJNT05fMTEsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fYW1vbnRoMTIgPSBfX25sX2xhbmdpbmZvX2woQUJNT05fMTIsIF9fY2xvYyk7CisrCX0KKysgICAgfQorKworKyNpZmRlZiBfR0xJQkNYWF9VU0VfV0NIQVJfVAorKyAgdGVtcGxhdGU8PgorKyAgICB2b2lkCisrICAgIF9fdGltZXB1bmN0PHdjaGFyX3Q+OjoKKysgICAgX01fcHV0KHdjaGFyX3QqIF9fcywgc2l6ZV90IF9fbWF4bGVuLCBjb25zdCB3Y2hhcl90KiBfX2Zvcm1hdCwKKysJICAgY29uc3QgdG0qIF9fdG0pIGNvbnN0CisrICAgIHsKKysjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXworKyAgICAgIF9fd2NzZnRpbWVfbChfX3MsIF9fbWF4bGVuLCBfX2Zvcm1hdCwgX190bSwgX01fY19sb2NhbGVfdGltZXB1bmN0KTsKKysgICAgICBjb25zdCBzaXplX3QgX19sZW4gPSBfX3djc2Z0aW1lX2woX19zLCBfX21heGxlbiwgX19mb3JtYXQsIF9fdG0sCisrCQkJCQlfTV9jX2xvY2FsZV90aW1lcHVuY3QpOworKyNlbHNlCisrICAgICAgY2hhciogX19vbGQgPSBzdHJkdXAoc2V0bG9jYWxlKExDX0FMTCwgTlVMTCkpOworKyAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9NX25hbWVfdGltZXB1bmN0KTsKKysgICAgICBjb25zdCBzaXplX3QgX19sZW4gPSB3Y3NmdGltZShfX3MsIF9fbWF4bGVuLCBfX2Zvcm1hdCwgX190bSk7CisrICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOworKyAgICAgIGZyZWUoX19vbGQpOworKyNlbmRpZgorKyAgICAgIC8vIE1ha2Ugc3VyZSBfX3MgaXMgbnVsbCB0ZXJtaW5hdGVkLgorKyAgICAgIGlmIChfX2xlbiA9PSAwKQorKwlfX3NbMF0gPSBMJ1wwJzsKKysgICAgfQorKworKyAgdGVtcGxhdGU8PgorKyAgICB2b2lkCisrICAgIF9fdGltZXB1bmN0PHdjaGFyX3Q+OjpfTV9pbml0aWFsaXplX3RpbWVwdW5jdChfX2NfbG9jYWxlIF9fY2xvYykKKysgICAgeworKyAgICAgIGlmICghX01fZGF0YSkKKysJX01fZGF0YSA9IG5ldyBfX3RpbWVwdW5jdF9jYWNoZTx3Y2hhcl90PjsKKysKKysjd2FybmluZyB3aWRlIHRpbWUgc3R1ZmYKKysvLyAgICAgICBpZiAoIV9fY2xvYykKKysJeworKwkgIC8vICJDIiBsb2NhbGUKKysJICBfTV9jX2xvY2FsZV90aW1lcHVuY3QgPSBfU19nZXRfY19sb2NhbGUoKTsKKysKKysJICBfTV9kYXRhLT5fTV9kYXRlX2Zvcm1hdCA9IEwiJW0vJWQvJXkiOworKwkgIF9NX2RhdGEtPl9NX2RhdGVfZXJhX2Zvcm1hdCA9IEwiJW0vJWQvJXkiOworKwkgIF9NX2RhdGEtPl9NX3RpbWVfZm9ybWF0ID0gTCIlSDolTTolUyI7CisrCSAgX01fZGF0YS0+X01fdGltZV9lcmFfZm9ybWF0ID0gTCIlSDolTTolUyI7CisrCSAgX01fZGF0YS0+X01fZGF0ZV90aW1lX2Zvcm1hdCA9IEwiIjsKKysJICBfTV9kYXRhLT5fTV9kYXRlX3RpbWVfZXJhX2Zvcm1hdCA9IEwiIjsKKysJICBfTV9kYXRhLT5fTV9hbSA9IEwiQU0iOworKwkgIF9NX2RhdGEtPl9NX3BtID0gTCJQTSI7CisrCSAgX01fZGF0YS0+X01fYW1fcG1fZm9ybWF0ID0gTCIiOworKworKwkgIC8vIERheSBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBTdW5kYXkuCisrCSAgX01fZGF0YS0+X01fZGF5MSA9IEwiU3VuZGF5IjsKKysJICBfTV9kYXRhLT5fTV9kYXkyID0gTCJNb25kYXkiOworKwkgIF9NX2RhdGEtPl9NX2RheTMgPSBMIlR1ZXNkYXkiOworKwkgIF9NX2RhdGEtPl9NX2RheTQgPSBMIldlZG5lc2RheSI7CisrCSAgX01fZGF0YS0+X01fZGF5NSA9IEwiVGh1cnNkYXkiOworKwkgIF9NX2RhdGEtPl9NX2RheTYgPSBMIkZyaWRheSI7CisrCSAgX01fZGF0YS0+X01fZGF5NyA9IEwiU2F0dXJkYXkiOworKworKwkgIC8vIEFiYnJldmlhdGVkIGRheSBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBTdW4uCisrCSAgX01fZGF0YS0+X01fYWRheTEgPSBMIlN1biI7CisrCSAgX01fZGF0YS0+X01fYWRheTIgPSBMIk1vbiI7CisrCSAgX01fZGF0YS0+X01fYWRheTMgPSBMIlR1ZSI7CisrCSAgX01fZGF0YS0+X01fYWRheTQgPSBMIldlZCI7CisrCSAgX01fZGF0YS0+X01fYWRheTUgPSBMIlRodSI7CisrCSAgX01fZGF0YS0+X01fYWRheTYgPSBMIkZyaSI7CisrCSAgX01fZGF0YS0+X01fYWRheTcgPSBMIlNhdCI7CisrCisrCSAgLy8gTW9udGggbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgSmFudWFyeS4KKysJICBfTV9kYXRhLT5fTV9tb250aDAxID0gTCJKYW51YXJ5IjsKKysJICBfTV9kYXRhLT5fTV9tb250aDAyID0gTCJGZWJydWFyeSI7CisrCSAgX01fZGF0YS0+X01fbW9udGgwMyA9IEwiTWFyY2giOworKwkgIF9NX2RhdGEtPl9NX21vbnRoMDQgPSBMIkFwcmlsIjsKKysJICBfTV9kYXRhLT5fTV9tb250aDA1ID0gTCJNYXkiOworKwkgIF9NX2RhdGEtPl9NX21vbnRoMDYgPSBMIkp1bmUiOworKwkgIF9NX2RhdGEtPl9NX21vbnRoMDcgPSBMIkp1bHkiOworKwkgIF9NX2RhdGEtPl9NX21vbnRoMDggPSBMIkF1Z3VzdCI7CisrCSAgX01fZGF0YS0+X01fbW9udGgwOSA9IEwiU2VwdGVtYmVyIjsKKysJICBfTV9kYXRhLT5fTV9tb250aDEwID0gTCJPY3RvYmVyIjsKKysJICBfTV9kYXRhLT5fTV9tb250aDExID0gTCJOb3ZlbWJlciI7CisrCSAgX01fZGF0YS0+X01fbW9udGgxMiA9IEwiRGVjZW1iZXIiOworKworKwkgIC8vIEFiYnJldmlhdGVkIG1vbnRoIG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIEphbi4KKysJICBfTV9kYXRhLT5fTV9hbW9udGgwMSA9IEwiSmFuIjsKKysJICBfTV9kYXRhLT5fTV9hbW9udGgwMiA9IEwiRmViIjsKKysJICBfTV9kYXRhLT5fTV9hbW9udGgwMyA9IEwiTWFyIjsKKysJICBfTV9kYXRhLT5fTV9hbW9udGgwNCA9IEwiQXByIjsKKysJICBfTV9kYXRhLT5fTV9hbW9udGgwNSA9IEwiTWF5IjsKKysJICBfTV9kYXRhLT5fTV9hbW9udGgwNiA9IEwiSnVuIjsKKysJICBfTV9kYXRhLT5fTV9hbW9udGgwNyA9IEwiSnVsIjsKKysJICBfTV9kYXRhLT5fTV9hbW9udGgwOCA9IEwiQXVnIjsKKysJICBfTV9kYXRhLT5fTV9hbW9udGgwOSA9IEwiU2VwIjsKKysJICBfTV9kYXRhLT5fTV9hbW9udGgxMCA9IEwiT2N0IjsKKysJICBfTV9kYXRhLT5fTV9hbW9udGgxMSA9IEwiTm92IjsKKysJICBfTV9kYXRhLT5fTV9hbW9udGgxMiA9IEwiRGVjIjsKKysJfQorKyNpZiAwCisrICAgICAgZWxzZQorKwl7CisrCSAgX01fY19sb2NhbGVfdGltZXB1bmN0ID0gX1NfY2xvbmVfY19sb2NhbGUoX19jbG9jKTsKKysKKysJICB1bmlvbiB7IGNoYXIgKl9fczsgd2NoYXJfdCAqX193OyB9IF9fdTsKKysKKysJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XRF9GTVQsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fZGF0ZV9mb3JtYXQgPSBfX3UuX193OworKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dFUkFfRF9GTVQsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fZGF0ZV9lcmFfZm9ybWF0ID0gX191Ll9fdzsKKysJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XVF9GTVQsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fdGltZV9mb3JtYXQgPSBfX3UuX193OworKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dFUkFfVF9GTVQsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fdGltZV9lcmFfZm9ybWF0ID0gX191Ll9fdzsKKysJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XRF9UX0ZNVCwgX19jbG9jKTsKKysJICBfTV9kYXRhLT5fTV9kYXRlX3RpbWVfZm9ybWF0ID0gX191Ll9fdzsKKysJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XRVJBX0RfVF9GTVQsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fZGF0ZV90aW1lX2VyYV9mb3JtYXQgPSBfX3UuX193OworKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBTV9TVFIsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fYW0gPSBfX3UuX193OworKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dQTV9TVFIsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fcG0gPSBfX3UuX193OworKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dUX0ZNVF9BTVBNLCBfX2Nsb2MpOworKwkgIF9NX2RhdGEtPl9NX2FtX3BtX2Zvcm1hdCA9IF9fdS5fX3c7CisrCisrCSAgLy8gRGF5IG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIFN1bmRheS4KKysJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XREFZXzEsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fZGF5MSA9IF9fdS5fX3c7CisrCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0RBWV8yLCBfX2Nsb2MpOworKwkgIF9NX2RhdGEtPl9NX2RheTIgPSBfX3UuX193OworKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dEQVlfMywgX19jbG9jKTsKKysJICBfTV9kYXRhLT5fTV9kYXkzID0gX191Ll9fdzsKKysJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XREFZXzQsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fZGF5NCA9IF9fdS5fX3c7CisrCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0RBWV81LCBfX2Nsb2MpOworKwkgIF9NX2RhdGEtPl9NX2RheTUgPSBfX3UuX193OworKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dEQVlfNiwgX19jbG9jKTsKKysJICBfTV9kYXRhLT5fTV9kYXk2ID0gX191Ll9fdzsKKysJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XREFZXzcsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fZGF5NyA9IF9fdS5fX3c7CisrCisrCSAgLy8gQWJicmV2aWF0ZWQgZGF5IG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIFN1bi4KKysJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJEQVlfMSwgX19jbG9jKTsKKysJICBfTV9kYXRhLT5fTV9hZGF5MSA9IF9fdS5fX3c7CisrCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCREFZXzIsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fYWRheTIgPSBfX3UuX193OworKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQkRBWV8zLCBfX2Nsb2MpOworKwkgIF9NX2RhdGEtPl9NX2FkYXkzID0gX191Ll9fdzsKKysJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJEQVlfNCwgX19jbG9jKTsKKysJICBfTV9kYXRhLT5fTV9hZGF5NCA9IF9fdS5fX3c7CisrCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCREFZXzUsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fYWRheTUgPSBfX3UuX193OworKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQkRBWV82LCBfX2Nsb2MpOworKwkgIF9NX2RhdGEtPl9NX2FkYXk2ID0gX191Ll9fdzsKKysJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJEQVlfNywgX19jbG9jKTsKKysJICBfTV9kYXRhLT5fTV9hZGF5NyA9IF9fdS5fX3c7CisrCisrCSAgLy8gTW9udGggbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgSmFudWFyeS4KKysJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XTU9OXzEsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fbW9udGgwMSA9IF9fdS5fX3c7CisrCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV01PTl8yLCBfX2Nsb2MpOworKwkgIF9NX2RhdGEtPl9NX21vbnRoMDIgPSBfX3UuX193OworKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dNT05fMywgX19jbG9jKTsKKysJICBfTV9kYXRhLT5fTV9tb250aDAzID0gX191Ll9fdzsKKysJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XTU9OXzQsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fbW9udGgwNCA9IF9fdS5fX3c7CisrCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV01PTl81LCBfX2Nsb2MpOworKwkgIF9NX2RhdGEtPl9NX21vbnRoMDUgPSBfX3UuX193OworKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dNT05fNiwgX19jbG9jKTsKKysJICBfTV9kYXRhLT5fTV9tb250aDA2ID0gX191Ll9fdzsKKysJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XTU9OXzcsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fbW9udGgwNyA9IF9fdS5fX3c7CisrCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV01PTl84LCBfX2Nsb2MpOworKwkgIF9NX2RhdGEtPl9NX21vbnRoMDggPSBfX3UuX193OworKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dNT05fOSwgX19jbG9jKTsKKysJICBfTV9kYXRhLT5fTV9tb250aDA5ID0gX191Ll9fdzsKKysJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XTU9OXzEwLCBfX2Nsb2MpOworKwkgIF9NX2RhdGEtPl9NX21vbnRoMTAgPSBfX3UuX193OworKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dNT05fMTEsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fbW9udGgxMSA9IF9fdS5fX3c7CisrCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV01PTl8xMiwgX19jbG9jKTsKKysJICBfTV9kYXRhLT5fTV9tb250aDEyID0gX191Ll9fdzsKKysKKysJICAvLyBBYmJyZXZpYXRlZCBtb250aCBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBKYW4uCisrCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCTU9OXzEsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fYW1vbnRoMDEgPSBfX3UuX193OworKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQk1PTl8yLCBfX2Nsb2MpOworKwkgIF9NX2RhdGEtPl9NX2Ftb250aDAyID0gX191Ll9fdzsKKysJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJNT05fMywgX19jbG9jKTsKKysJICBfTV9kYXRhLT5fTV9hbW9udGgwMyA9IF9fdS5fX3c7CisrCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCTU9OXzQsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fYW1vbnRoMDQgPSBfX3UuX193OworKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQk1PTl81LCBfX2Nsb2MpOworKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA1ID0gX191Ll9fdzsKKysJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJNT05fNiwgX19jbG9jKTsKKysJICBfTV9kYXRhLT5fTV9hbW9udGgwNiA9IF9fdS5fX3c7CisrCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCTU9OXzcsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fYW1vbnRoMDcgPSBfX3UuX193OworKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQk1PTl84LCBfX2Nsb2MpOworKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA4ID0gX191Ll9fdzsKKysJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJNT05fOSwgX19jbG9jKTsKKysJICBfTV9kYXRhLT5fTV9hbW9udGgwOSA9IF9fdS5fX3c7CisrCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCTU9OXzEwLCBfX2Nsb2MpOworKwkgIF9NX2RhdGEtPl9NX2Ftb250aDEwID0gX191Ll9fdzsKKysJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJNT05fMTEsIF9fY2xvYyk7CisrCSAgX01fZGF0YS0+X01fYW1vbnRoMTEgPSBfX3UuX193OworKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQk1PTl8xMiwgX19jbG9jKTsKKysJICBfTV9kYXRhLT5fTV9hbW9udGgxMiA9IF9fdS5fX3c7CisrCX0KKysjZW5kaWYgLy8gMAorKyAgICB9CisrI2VuZGlmCisrfQorZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuaCBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmJhOGU4NTgKKy0tLSAvZGV2L251bGwKKysrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuaAorQEAgLTAsMCArMSw2OCBAQAorKy8vIHN0ZDo6dGltZV9nZXQsIHN0ZDo6dGltZV9wdXQgaW1wbGVtZW50YXRpb24sIEdOVSB2ZXJzaW9uIC0qLSBDKysgLSotCisrCisrLy8gQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKy8vCisrLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQorKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQorKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisrLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCisrLy8gYW55IGxhdGVyIHZlcnNpb24uCisrCisrLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysvLyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKKysvLyBVU0EuCisrCisrLy8gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSB1c2UgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBmcmVlIHNvZnR3YXJlCisrLy8gbGlicmFyeSB3aXRob3V0IHJlc3RyaWN0aW9uLiAgU3BlY2lmaWNhbGx5LCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZQorKy8vIHRlbXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5jdGlvbnMgZnJvbSB0aGlzIGZpbGUsIG9yIHlvdSBjb21waWxlCisrLy8gdGhpcyBmaWxlIGFuZCBsaW5rIGl0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzCisrLy8gZmlsZSBkb2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkKKysvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyCisrLy8gaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5CisrLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorKworKy8vCisrLy8gSVNPIEMrKyAxNDg4MjogMjIuMi41LjEuMiAtIHRpbWVfZ2V0IGZ1bmN0aW9ucworKy8vIElTTyBDKysgMTQ4ODI6IDIyLjIuNS4zLjIgLSB0aW1lX3B1dCBmdW5jdGlvbnMKKysvLworKworKy8vIFdyaXR0ZW4gYnkgQmVuamFtaW4gS29zbmlrIDxia296QHJlZGhhdC5jb20+CisrCisrICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CisrICAgIF9fdGltZXB1bmN0PF9DaGFyVD46Ol9fdGltZXB1bmN0KHNpemVfdCBfX3JlZnMpCisrICAgIDogZmFjZXQoX19yZWZzKSwgX01fZGF0YShOVUxMKSwgX01fY19sb2NhbGVfdGltZXB1bmN0KE5VTEwpLAorKyAgICBfTV9uYW1lX3RpbWVwdW5jdChfU19nZXRfY19uYW1lKCkpCisrICAgIHsgX01faW5pdGlhbGl6ZV90aW1lcHVuY3QoKTsgfQorKworKyAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgorKyAgICBfX3RpbWVwdW5jdDxfQ2hhclQ+OjpfX3RpbWVwdW5jdChfX2NhY2hlX3R5cGUqIF9fY2FjaGUsIHNpemVfdCBfX3JlZnMpCisrICAgIDogZmFjZXQoX19yZWZzKSwgX01fZGF0YShfX2NhY2hlKSwgX01fY19sb2NhbGVfdGltZXB1bmN0KE5VTEwpLAorKyAgICBfTV9uYW1lX3RpbWVwdW5jdChfU19nZXRfY19uYW1lKCkpCisrICAgIHsgX01faW5pdGlhbGl6ZV90aW1lcHVuY3QoKTsgfQorKworKyAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgorKyAgICBfX3RpbWVwdW5jdDxfQ2hhclQ+OjpfX3RpbWVwdW5jdChfX2NfbG9jYWxlIF9fY2xvYywgY29uc3QgY2hhciogX19zLAorKwkJCQkgICAgIHNpemVfdCBfX3JlZnMpCisrICAgIDogZmFjZXQoX19yZWZzKSwgX01fZGF0YShOVUxMKSwgX01fY19sb2NhbGVfdGltZXB1bmN0KE5VTEwpLAorKyAgICBfTV9uYW1lX3RpbWVwdW5jdChfX3MpCisrICAgIHsKKysgICAgICBjaGFyKiBfX3RtcCA9IG5ldyBjaGFyW3N0ZDo6c3RybGVuKF9fcykgKyAxXTsKKysgICAgICBzdGQ6OnN0cmNweShfX3RtcCwgX19zKTsKKysgICAgICBfTV9uYW1lX3RpbWVwdW5jdCA9IF9fdG1wOworKyAgICAgIF9NX2luaXRpYWxpemVfdGltZXB1bmN0KF9fY2xvYyk7CisrICAgIH0KKysKKysgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KKysgICAgX190aW1lcHVuY3Q8X0NoYXJUPjo6fl9fdGltZXB1bmN0KCkKKysgICAgeworKyAgICAgIGlmIChfTV9uYW1lX3RpbWVwdW5jdCAhPSBfU19nZXRfY19uYW1lKCkpCisrCWRlbGV0ZSBbXSBfTV9uYW1lX3RpbWVwdW5jdDsKKysgICAgICBkZWxldGUgX01fZGF0YTsKKysgICAgICBfU19kZXN0cm95X2NfbG9jYWxlKF9NX2NfbG9jYWxlX3RpbWVwdW5jdCk7CisrICAgIH0KK2RpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlndXJlIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZQoraW5kZXggNDE3OTdhOS4uOGE1NDgxYyAxMDA3NTUKKy0tLSBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUKKysrKyBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUKK0BAIC0xNTgzMCw2ICsxNTgzMCw5IEBAIGZpCisgICAjIERlZmF1bHQgdG8gImdlbmVyaWMiLgorICAgaWYgdGVzdCAkZW5hYmxlX2Nsb2NhbGVfZmxhZyA9IGF1dG87IHRoZW4KKyAgICAgY2FzZSAke3RhcmdldF9vc30gaW4KKysgICAgICAqLXVjbGliYyopCisrICAgICAgICBlbmFibGVfY2xvY2FsZV9mbGFnPXVjbGliYworKyAgICAgICAgOzsKKyAgICAgICBsaW51eCogfCBnbnUqIHwga2ZyZWVic2QqLWdudSB8IGtuZXRic2QqLWdudSkKKyAJZW5hYmxlX2Nsb2NhbGVfZmxhZz1nbnUKKyAJOzsKK0BAIC0xNjEwOCw2ICsxNjExMSw3OCBAQCAkYXNfZWNobyAibmV3bGliIiA+JjY7IH0KKyAgICAgICBDVElNRV9DQz1jb25maWcvbG9jYWxlL2dlbmVyaWMvdGltZV9tZW1iZXJzLmNjCisgICAgICAgQ0xPQ0FMRV9JTlRFUk5BTF9IPWNvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jKytsb2NhbGVfaW50ZXJuYWwuaAorICAgICAgIDs7CisrICAgIHVjbGliYykKKysgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogdWNsaWJjIiA+JjUKKyskYXNfZWNobyAidWNsaWJjIiA+JjY7IH0KKysKKysgICAgICAjIERlY2xhcmUgaW50ZW50aW9uIHRvIHVzZSBnZXR0ZXh0LCBhbmQgYWRkIHN1cHBvcnQgZm9yIHNwZWNpZmljCisrICAgICAgIyBsYW5ndWFnZXMuCisrICAgICAgIyBGb3Igc29tZSByZWFzb24sIEFMTF9MSU5HVUFTIGhhcyB0byBiZSBiZWZvcmUgQU0tR05VLUdFVFRFWFQKKysgICAgICBBTExfTElOR1VBUz0iZGUgZnIiCisrCisrICAgICAgIyBEb24ndCBjYWxsIEFNLUdOVS1HRVRURVhUIGhlcmUuIEluc3RlYWQsIGFzc3VtZSBnbGliYy4KKysgICAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm1zZ2ZtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15IG1zZ2ZtdDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2FjX2N2X3Byb2dfY2hlY2tfbXNnZm10K3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJGNoZWNrX21zZ2ZtdCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfY2hlY2tfbXNnZm10PSIkY2hlY2tfbXNnZm10IiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICAgIGFjX2N2X3Byb2dfY2hlY2tfbXNnZm10PSJ5ZXMiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrICB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19jaGVja19tc2dmbXQiICYmIGFjX2N2X3Byb2dfY2hlY2tfbXNnZm10PSJubyIKKytmaQorK2ZpCisrY2hlY2tfbXNnZm10PSRhY19jdl9wcm9nX2NoZWNrX21zZ2ZtdAorK2lmIHRlc3QgLW4gIiRjaGVja19tc2dmbXQiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGNoZWNrX21zZ2ZtdCIgPiY1CisrJGFzX2VjaG8gIiRjaGVja19tc2dmbXQiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKworKyAgICAgIGlmIHRlc3QgeCIkY2hlY2tfbXNnZm10IiA9IHgieWVzIiAmJiB0ZXN0IHgiJGVuYWJsZV9ubHMiID0geCJ5ZXMiOyB0aGVuCisrICAgICAgICBVU0VfTkxTPXllcworKyAgICAgIGZpCisrICAgICAgIyBFeHBvcnQgdGhlIGJ1aWxkIG9iamVjdHMuCisrICAgICAgZm9yIGxpbmcgaW4gJEFMTF9MSU5HVUFTOyBkbyBcCisrICAgICAgICBnbGliY3h4X01PRklMRVM9IiRnbGliY3h4X01PRklMRVMgJGxpbmcubW8iOyBcCisrICAgICAgICBnbGliY3h4X1BPRklMRVM9IiRnbGliY3h4X1BPRklMRVMgJGxpbmcucG8iOyBcCisrICAgICAgZG9uZQorKworKworKworKyAgICAgIENMT0NBTEVfSD1jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oCisrICAgICAgQ0xPQ0FMRV9DQz1jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYworKyAgICAgIENDT0RFQ1ZUX0NDPWNvbmZpZy9sb2NhbGUvdWNsaWJjL2NvZGVjdnRfbWVtYmVycy5jYworKyAgICAgIENDT0xMQVRFX0NDPWNvbmZpZy9sb2NhbGUvdWNsaWJjL2NvbGxhdGVfbWVtYmVycy5jYworKyAgICAgIENDVFlQRV9DQz1jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjCisrICAgICAgQ01FU1NBR0VTX0g9Y29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oCisrICAgICAgQ01FU1NBR0VTX0NDPWNvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuY2MKKysgICAgICBDTU9ORVlfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYworKyAgICAgIENOVU1FUklDX0NDPWNvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYworKyAgICAgIENUSU1FX0g9Y29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmgKKysgICAgICBDVElNRV9DQz1jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MKKysgICAgICBDTE9DQUxFX0lOVEVSTkFMX0g9Y29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmgKKysgICAgICA7OworICAgZXNhYworIAorICAgIyBUaGlzIGlzIHdoZXJlIHRoZSB0ZXN0c3VpdGUgbG9va3MgZm9yIGxvY2FsZSBjYXRhbG9ncywgdXNpbmcgdGhlCitkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2luY2x1ZGUvY19jb21wYXRpYmlsaXR5L3djaGFyLmggYi9saWJzdGRjKystdjMvaW5jbHVkZS9jX2NvbXBhdGliaWxpdHkvd2NoYXIuaAoraW5kZXggNTVhMGI1Mi4uN2Q4YmIxNSAxMDA2NDQKKy0tLSBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2NfY29tcGF0aWJpbGl0eS93Y2hhci5oCisrKysgYi9saWJzdGRjKystdjMvaW5jbHVkZS9jX2NvbXBhdGliaWxpdHkvd2NoYXIuaAorQEAgLTEwMSw3ICsxMDEsOSBAQCB1c2luZyBzdGQ6OndtZW1jbXA7CisgdXNpbmcgc3RkOjp3bWVtY3B5OworIHVzaW5nIHN0ZDo6d21lbW1vdmU7CisgdXNpbmcgc3RkOjp3bWVtc2V0OworKyNpZiBfR0xJQkNYWF9IQVZFX1dDU0ZUSU1FCisgdXNpbmcgc3RkOjp3Y3NmdGltZTsKKysjZW5kaWYKKyAKKyAjaWYgX0dMSUJDWFhfVVNFX0M5OV9XQ0hBUgorIHVzaW5nIHN0ZDo6d2NzdG9sZDsKK2RpZmYgLS1naXQgYS9saWJzdGRjKystdjMvaW5jbHVkZS9jX3N0ZC9jd2NoYXIgYi9saWJzdGRjKystdjMvaW5jbHVkZS9jX3N0ZC9jd2NoYXIKK2luZGV4IGRjNGNlZjAyLi4yNTZkMTI2IDEwMDY0NAorLS0tIGEvbGlic3RkYysrLXYzL2luY2x1ZGUvY19zdGQvY3djaGFyCisrKysgYi9saWJzdGRjKystdjMvaW5jbHVkZS9jX3N0ZC9jd2NoYXIKK0BAIC0xNzUsNyArMTc1LDkgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KKyAgIHVzaW5nIDo6d2NzY29sbDsKKyAgIHVzaW5nIDo6d2NzY3B5OworICAgdXNpbmcgOjp3Y3Njc3BuOworKyNpZiBfR0xJQkNYWF9IQVZFX1dDU0ZUSU1FCisgICB1c2luZyA6Ondjc2Z0aW1lOworKyNlbmRpZgorICAgdXNpbmcgOjp3Y3NsZW47CisgICB1c2luZyA6Ondjc25jYXQ7CisgICB1c2luZyA6Ondjc25jbXA7CistLSAKKzIuOC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAwNS11Y2xpYmMtbG9jYWxlLW5vX194LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDA1LXVjbGliYy1sb2NhbGUtbm9fX3gucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzI3NTAxNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAwNS11Y2xpYmMtbG9jYWxlLW5vX194LnBhdGNoCkBAIC0wLDAgKzEsMjU3IEBACitGcm9tIGMwMWMxNGU4ZTliZTM4MmVjZDQxMjFlZTcwZjUwMDNiNGNiMGY5MDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODo0MjozNiArMDQwMAorU3ViamVjdDogW1BBVENIIDA1LzQ2XSB1Y2xpYmMtbG9jYWxlLW5vX194CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oICAgICAgfCA0NSArKysrKysrKysrKysrKysrKysrKysrCisgbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjICAgICAgfCAxNCAtLS0tLS0tCisgbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmggICAgICAgfCAgMSArCisgLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvbGxhdGVfbWVtYmVycy5jYyAgICAgICAgfCAgNyAtLS0tCisgbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MgfCAgNyAtLS0tCisgLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuY2MgICAgICAgfCAgNyArLS0tCisgLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaCAgICAgICAgfCAxOCArKysrLS0tLS0KKyAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYyAgICAgICB8ICA0IC0tCisgLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYyAgICAgICAgfCAgMyAtLQorIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MgIHwgIDMgLS0KKyAxMCBmaWxlcyBjaGFuZ2VkLCA1NSBpbnNlcnRpb25zKCspLCA1NCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaCBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaAoraW5kZXggMmFlM2U0YS4uZTc0ZmRkZiAxMDA2NDQKKy0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaAorKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oCitAQCAtNjAsNCArNjAsNDkgQEAgZXh0ZXJuICJDIiBfX3R5cGVvZih3Y3N4ZnJtX2wpIF9fd2NzeGZybV9sOworIGV4dGVybiAiQyIgX190eXBlb2Yod2N0eXBlX2wpIF9fd2N0eXBlX2w7CisgI2VuZGlmCisgCisrIyBkZWZpbmUgX19ubF9sYW5naW5mb19sIG5sX2xhbmdpbmZvX2wKKysjIGRlZmluZSBfX3N0cmNvbGxfbCBzdHJjb2xsX2wKKysjIGRlZmluZSBfX3N0cmZ0aW1lX2wgc3RyZnRpbWVfbAorKyMgZGVmaW5lIF9fc3RydG9kX2wgc3RydG9kX2wKKysjIGRlZmluZSBfX3N0cnRvZl9sIHN0cnRvZl9sCisrIyBkZWZpbmUgX19zdHJ0b2xkX2wgc3RydG9sZF9sCisrIyBkZWZpbmUgX19zdHJ4ZnJtX2wgc3RyeGZybV9sCisrIyBkZWZpbmUgX19uZXdsb2NhbGUgbmV3bG9jYWxlCisrIyBkZWZpbmUgX19mcmVlbG9jYWxlIGZyZWVsb2NhbGUKKysjIGRlZmluZSBfX2R1cGxvY2FsZSBkdXBsb2NhbGUKKysjIGRlZmluZSBfX3VzZWxvY2FsZSB1c2Vsb2NhbGUKKysKKysjIGlmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCisrIyAgZGVmaW5lIF9faXN3Y3R5cGVfbCBpc3djdHlwZV9sCisrIyAgZGVmaW5lIF9fdG93bG93ZXJfbCB0b3dsb3dlcl9sCisrIyAgZGVmaW5lIF9fdG93dXBwZXJfbCB0b3d1cHBlcl9sCisrIyAgZGVmaW5lIF9fd2NzY29sbF9sIHdjc2NvbGxfbAorKyMgIGRlZmluZSBfX3djc2Z0aW1lX2wgd2NzZnRpbWVfbAorKyMgIGRlZmluZSBfX3djc3hmcm1fbCB3Y3N4ZnJtX2wKKysjICBkZWZpbmUgX193Y3R5cGVfbCB3Y3R5cGVfbAorKyMgZW5kaWYKKysKKysjZWxzZQorKyMgZGVmaW5lIF9fbmxfbGFuZ2luZm9fbChOLCBMKSAgICAgICBubF9sYW5naW5mbygoTikpCisrIyBkZWZpbmUgX19zdHJjb2xsX2woUzEsIFMyLCBMKSAgICAgIHN0cmNvbGwoKFMxKSwgKFMyKSkKKysjIGRlZmluZSBfX3N0cnRvZF9sKFMsIEUsIEwpICAgICAgICAgc3RydG9kKChTKSwgKEUpKQorKyMgZGVmaW5lIF9fc3RydG9mX2woUywgRSwgTCkgICAgICAgICBzdHJ0b2YoKFMpLCAoRSkpCisrIyBkZWZpbmUgX19zdHJ0b2xkX2woUywgRSwgTCkgICAgICAgIHN0cnRvbGQoKFMpLCAoRSkpCisrIyBkZWZpbmUgX19zdHJ4ZnJtX2woUzEsIFMyLCBOLCBMKSAgIHN0cnhmcm0oKFMxKSwgKFMyKSwgKE4pKQorKyMgd2FybmluZyBzaG91bGQgZHVtbXkgX19uZXdsb2NhbGUgY2hlY2sgZm9yIEN8UE9TSVggPworKyMgZGVmaW5lIF9fbmV3bG9jYWxlKGEsIGIsIGMpICAgICAgICBOVUxMCisrIyBkZWZpbmUgX19mcmVlbG9jYWxlKGEpICAgICAgICAgICAgICgodm9pZCkwKQorKyMgZGVmaW5lIF9fZHVwbG9jYWxlKGEpICAgICAgICAgICAgICBfX2NfbG9jYWxlKCkKKysvLyMgZGVmaW5lIF9fdXNlbG9jYWxlID8KKysvLworKyMgaWZkZWYgX0dMSUJDWFhfVVNFX1dDSEFSX1QKKysjICBkZWZpbmUgX19pc3djdHlwZV9sKEMsIE0sIEwpICAgICAgIGlzd2N0eXBlKChDKSwgKE0pKQorKyMgIGRlZmluZSBfX3Rvd2xvd2VyX2woQywgTCkgICAgICAgICAgdG93bG93ZXIoKEMpKQorKyMgIGRlZmluZSBfX3Rvd3VwcGVyX2woQywgTCkgICAgICAgICAgdG93dXBwZXIoKEMpKQorKyMgIGRlZmluZSBfX3djc2NvbGxfbChTMSwgUzIsIEwpICAgICAgd2NzY29sbCgoUzEpLCAoUzIpKQorKy8vIyAgZGVmaW5lIF9fd2NzZnRpbWVfbChTLCBNLCBGLCBULCBMKSAgd2NzZnRpbWUoKFMpLCAoTSksIChGKSwgKFQpKQorKyMgIGRlZmluZSBfX3djc3hmcm1fbChTMSwgUzIsIE4sIEwpICAgd2NzeGZybSgoUzEpLCAoUzIpLCAoTikpCisrIyAgZGVmaW5lIF9fd2N0eXBlX2woUywgTCkgICAgICAgICAgICB3Y3R5cGUoKFMpKQorKyMgZW5kaWYKKysKKyAjZW5kaWYgLy8gR0xJQkMgMi4zIGFuZCBsYXRlcgorZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYworaW5kZXggNTA4MWRjMS4uMjE0MzBkMCAxMDA2NDQKKy0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYworKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCitAQCAtMzksMjAgKzM5LDYgQEAKKyAjaW5jbHVkZSA8bGFuZ2luZm8uaD4KKyAjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KKyAKKy0jaWZuZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KKy0jZGVmaW5lIF9fc3RydG9sX2woUywgRSwgQiwgTCkgICAgICBzdHJ0b2woKFMpLCAoRSksIChCKSkKKy0jZGVmaW5lIF9fc3RydG91bF9sKFMsIEUsIEIsIEwpICAgICBzdHJ0b3VsKChTKSwgKEUpLCAoQikpCistI2RlZmluZSBfX3N0cnRvbGxfbChTLCBFLCBCLCBMKSAgICAgc3RydG9sbCgoUyksIChFKSwgKEIpKQorLSNkZWZpbmUgX19zdHJ0b3VsbF9sKFMsIEUsIEIsIEwpICAgIHN0cnRvdWxsKChTKSwgKEUpLCAoQikpCistI2RlZmluZSBfX3N0cnRvZl9sKFMsIEUsIEwpICAgICAgICAgc3RydG9mKChTKSwgKEUpKQorLSNkZWZpbmUgX19zdHJ0b2RfbChTLCBFLCBMKSAgICAgICAgIHN0cnRvZCgoUyksIChFKSkKKy0jZGVmaW5lIF9fc3RydG9sZF9sKFMsIEUsIEwpICAgICAgICBzdHJ0b2xkKChTKSwgKEUpKQorLSN3YXJuaW5nIHNob3VsZCBkdW1teSBfX25ld2xvY2FsZSBjaGVjayBmb3IgQ3xQT1NJWCA/CistI2RlZmluZSBfX25ld2xvY2FsZShhLCBiLCBjKSAgICAgICAgTlVMTAorLSNkZWZpbmUgX19mcmVlbG9jYWxlKGEpICAgICAgICAgICAgICgodm9pZCkwKQorLSNkZWZpbmUgX19kdXBsb2NhbGUoYSkgICAgICAgICAgICAgIF9fY19sb2NhbGUoKQorLSNlbmRpZgorLQorIG5hbWVzcGFjZSBzdGQKKyB7CisgICB0ZW1wbGF0ZTw+CitkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmggYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaAoraW5kZXggZGEwN2MxZi4uNGJjYTVmMSAxMDA2NDQKKy0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oCisrKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaAorQEAgLTY4LDYgKzY4LDcgQEAgbmFtZXNwYWNlIF9fZ251X2N4eAorIHsKKyAgIGV4dGVybiAiQyIgX190eXBlb2YodXNlbG9jYWxlKSBfX3VzZWxvY2FsZTsKKyB9CisrI2RlZmluZSBfX3VzZWxvY2FsZSB1c2Vsb2NhbGUKKyAjZW5kaWYKKyAKKyBuYW1lc3BhY2Ugc3RkCitkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvbGxhdGVfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jb2xsYXRlX21lbWJlcnMuY2MKK2luZGV4IGMyNjY0YTcuLmVjNWMzMjkgMTAwNjQ0CistLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY29sbGF0ZV9tZW1iZXJzLmNjCisrKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY29sbGF0ZV9tZW1iZXJzLmNjCitAQCAtMzYsMTMgKzM2LDYgQEAKKyAjaW5jbHVkZSA8bG9jYWxlPgorICNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgorIAorLSNpZm5kZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXworLSNkZWZpbmUgX19zdHJjb2xsX2woUzEsIFMyLCBMKSAgICAgIHN0cmNvbGwoKFMxKSwgKFMyKSkKKy0jZGVmaW5lIF9fc3RyeGZybV9sKFMxLCBTMiwgTiwgTCkgICBzdHJ4ZnJtKChTMSksIChTMiksIChOKSkKKy0jZGVmaW5lIF9fd2NzY29sbF9sKFMxLCBTMiwgTCkgICAgICB3Y3Njb2xsKChTMSksIChTMikpCistI2RlZmluZSBfX3djc3hmcm1fbChTMSwgUzIsIE4sIEwpICAgd2NzeGZybSgoUzEpLCAoUzIpLCAoTikpCistI2VuZGlmCistCisgbmFtZXNwYWNlIHN0ZAorIHsKKyAgIC8vIFRoZXNlIGFyZSBiYXNpY2FsbHkgZXh0ZW5zaW9ucyB0byBjaGFyX3RyYWl0cywgYW5kIHBlcmhhcHMgc2hvdWxkCitkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYworaW5kZXggNzI5NGUzYS4uN2IxMjg2MSAxMDA2NDQKKy0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjCisrKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYworQEAgLTM4LDEzICszOCw2IEBACisgI3VuZGVmIF9MSUJDCisgI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+CisgCistI2lmbmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCistI2RlZmluZSBfX3djdHlwZV9sKFMsIEwpICAgICAgICAgICB3Y3R5cGUoKFMpKQorLSNkZWZpbmUgX190b3d1cHBlcl9sKEMsIEwpICAgICAgICAgdG93dXBwZXIoKEMpKQorLSNkZWZpbmUgX190b3dsb3dlcl9sKEMsIEwpICAgICAgICAgdG93bG93ZXIoKEMpKQorLSNkZWZpbmUgX19pc3djdHlwZV9sKEMsIE0sIEwpICAgICAgaXN3Y3R5cGUoKEMpLCAoTSkpCistI2VuZGlmCistCisgbmFtZXNwYWNlIHN0ZAorIHsKKyAgIC8vIE5COiBUaGUgb3RoZXIgY3R5cGU8Y2hhcj4gc3BlY2lhbGl6YXRpb25zIGFyZSBpbiBzcmMvbG9jYWxlLmNjIGFuZAorZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuY2MKK2luZGV4IDEzNTk0ZDkuLmQ3NjkzYjQgMTAwNjQ0CistLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5jYworKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuY2MKK0BAIC0zOSwxMyArMzksMTAgQEAKKyAjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KKyAjd2FybmluZyBmaXggZ2V0dGV4dCBzdHVmZgorICNlbmRpZgorLSNpZmRlZiBfX1VDTElCQ19IQVNfR0VUVEVYVF9BV0FSRU5FU1NfXworLWV4dGVybiAiQyIgY2hhciAqX19kY2dldHRleHQoY29uc3QgY2hhciAqZG9tYWlubmFtZSwKKy0JCQkgICAgIGNvbnN0IGNoYXIgKm1zZ2lkLCBpbnQgY2F0ZWdvcnkpOworICN1bmRlZiBnZXR0ZXh0CistI2RlZmluZSBnZXR0ZXh0KG1zZ2lkKSBfX2RjZ2V0dGV4dChOVUxMLCBtc2dpZCwgTENfTUVTU0FHRVMpCisrI2lmZGVmIF9fVUNMSUJDX0hBU19HRVRURVhUX0FXQVJFTkVTU19fCisrI2RlZmluZSBnZXR0ZXh0KG1zZ2lkKSBkY2dldHRleHQoTlVMTCwgbXNnaWQsIExDX01FU1NBR0VTKQorICNlbHNlCistI3VuZGVmIGdldHRleHQKKyAjZGVmaW5lIGdldHRleHQobXNnaWQpIChtc2dpZCkKKyAjZW5kaWYKKyAKK2RpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaAoraW5kZXggMTQyNDA3OC4uZDg5ZGEzMyAxMDA2NDQKKy0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmgKKysrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmgKK0BAIC0zNiwxNSArMzYsMTEgQEAKKyAjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KKyAjd2FybmluZyBmaXggcHJvdG90eXBlcyBmb3IgKnRleHRkb21haW4gZnVuY3MKKyAjZW5kaWYKKy0jaWZkZWYgX19VQ0xJQkNfSEFTX0dFVFRFWFRfQVdBUkVORVNTX18KKy1leHRlcm4gIkMiIGNoYXIgKl9fdGV4dGRvbWFpbihjb25zdCBjaGFyICpkb21haW5uYW1lKTsKKy1leHRlcm4gIkMiIGNoYXIgKl9fYmluZHRleHRkb21haW4oY29uc3QgY2hhciAqZG9tYWlubmFtZSwKKy0JCQkJICBjb25zdCBjaGFyICpkaXJuYW1lKTsKKy0jZWxzZQorLSN1bmRlZiBfX3RleHRkb21haW4KKy0jdW5kZWYgX19iaW5kdGV4dGRvbWFpbgorLSNkZWZpbmUgX190ZXh0ZG9tYWluKEQpICAgICAgICAgICAoKHZvaWQpMCkKKy0jZGVmaW5lIF9fYmluZHRleHRkb21haW4oRCxQKSAgICAgKCh2b2lkKTApCisrI2lmbmRlZiBfX1VDTElCQ19IQVNfR0VUVEVYVF9BV0FSRU5FU1NfXworKyN1bmRlZiB0ZXh0ZG9tYWluCisrI3VuZGVmIGJpbmR0ZXh0ZG9tYWluCisrI2RlZmluZSB0ZXh0ZG9tYWluKEQpICAgICAgICAgICAoKHZvaWQpMCkKKysjZGVmaW5lIGJpbmR0ZXh0ZG9tYWluKEQsUCkgICAgICgodm9pZCkwKQorICNlbmRpZgorIAorICAgLy8gTm9uLXZpcnR1YWwgbWVtYmVyIGZ1bmN0aW9ucy4KK0BAIC03MCw3ICs2Niw3IEBAIGV4dGVybiAiQyIgY2hhciAqX19iaW5kdGV4dGRvbWFpbihjb25zdCBjaGFyICpkb21haW5uYW1lLAorICAgICBtZXNzYWdlczxfQ2hhclQ+OjpvcGVuKGNvbnN0IGJhc2ljX3N0cmluZzxjaGFyPiYgX19zLCBjb25zdCBsb2NhbGUmIF9fbG9jLAorIAkJCSAgIGNvbnN0IGNoYXIqIF9fZGlyKSBjb25zdAorICAgICB7CistICAgICAgX19iaW5kdGV4dGRvbWFpbihfX3MuY19zdHIoKSwgX19kaXIpOworKyAgICAgIGJpbmR0ZXh0ZG9tYWluKF9fcy5jX3N0cigpLCBfX2Rpcik7CisgICAgICAgcmV0dXJuIHRoaXMtPmRvX29wZW4oX19zLCBfX2xvYyk7CisgICAgIH0KKyAKK0BAIC05MCw3ICs4Niw3IEBAIGV4dGVybiAiQyIgY2hhciAqX19iaW5kdGV4dGRvbWFpbihjb25zdCBjaGFyICpkb21haW5uYW1lLAorICAgICB7CisgICAgICAgLy8gTm8gZXJyb3IgY2hlY2tpbmcgaXMgZG9uZSwgYXNzdW1lIHRoZSBjYXRhbG9nIGV4aXN0cyBhbmQgY2FuCisgICAgICAgLy8gYmUgdXNlZC4KKy0gICAgICBfX3RleHRkb21haW4oX19zLmNfc3RyKCkpOworKyAgICAgIHRleHRkb21haW4oX19zLmNfc3RyKCkpOworICAgICAgIHJldHVybiAwOworICAgICB9CisgCitkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYworaW5kZXggYWE1MjczMS4uMmU2ZjgwYSAxMDA2NDQKKy0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCisrKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYworQEAgLTQzLDEwICs0Myw2IEBACisgI3dhcm5pbmcgdGFpbG9yIGZvciBzdHViIGxvY2FsZSBzdXBwb3J0CisgI2VuZGlmCisgCistI2lmbmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCistI2RlZmluZSBfX25sX2xhbmdpbmZvX2woTiwgTCkgICAgICAgICBubF9sYW5naW5mbygoTikpCistI2VuZGlmCistCisgbmFtZXNwYWNlIHN0ZAorIHsKKyAgIC8vIENvbnN0cnVjdCBhbmQgcmV0dXJuIHZhbGlkIHBhdHRlcm4gY29uc2lzdGluZyBvZiBzb21lIGNvbWJpbmF0aW9uIG9mOgorZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjCitpbmRleCA4ODNlYzFhLi4yYzcwNjQyIDEwMDY0NAorLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYworKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYworQEAgLTQxLDkgKzQxLDYgQEAKKyAjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KKyAjd2FybmluZyB0YWlsb3IgZm9yIHN0dWIgbG9jYWxlIHN1cHBvcnQKKyAjZW5kaWYKKy0jaWZuZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KKy0jZGVmaW5lIF9fbmxfbGFuZ2luZm9fbChOLCBMKSAgICAgICAgIG5sX2xhbmdpbmZvKChOKSkKKy0jZW5kaWYKKyAKKyBuYW1lc3BhY2Ugc3RkCisgeworZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjCitpbmRleCBlMDcwN2Q3Li5kODQ4ZWQ1IDEwMDY0NAorLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYworKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYworQEAgLTQwLDkgKzQwLDYgQEAKKyAjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KKyAjd2FybmluZyB0YWlsb3IgZm9yIHN0dWIgbG9jYWxlIHN1cHBvcnQKKyAjZW5kaWYKKy0jaWZuZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KKy0jZGVmaW5lIF9fbmxfbGFuZ2luZm9fbChOLCBMKSAgICAgICAgIG5sX2xhbmdpbmZvKChOKSkKKy0jZW5kaWYKKyAKKyBuYW1lc3BhY2Ugc3RkCisgeworLS0gCisyLjguMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yLzAwMDYtdWNsaWJjLWxvY2FsZS13Y2hhcl9maXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yLzAwMDYtdWNsaWJjLWxvY2FsZS13Y2hhcl9maXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQ1YTQ4MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAwNi11Y2xpYmMtbG9jYWxlLXdjaGFyX2ZpeC5wYXRjaApAQCAtMCwwICsxLDY4IEBACitGcm9tIGU3YTQ3NjBmYjQwMDA4Y2FlMzNlNmZjN2RjNGNmZWY2YzJmZDVmOTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODo0NTo1NyArMDQwMAorU3ViamVjdDogW1BBVENIIDA2LzQ2XSB1Y2xpYmMtbG9jYWxlLXdjaGFyX2ZpeAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjIHwgIDQgKystLQorIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MgIHwgMTMgKysrKysrKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKK2luZGV4IDJlNmY4MGEuLjMxZWJiOWYgMTAwNjQ0CistLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYworKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKK0BAIC00MDEsNyArNDAxLDcgQEAgbmFtZXNwYWNlIHN0ZAorICMgaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXworIAkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBfX2Nsb2MtPmRlY2ltYWxfcG9pbnRfd2M7CisgCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IF9fY2xvYy0+dGhvdXNhbmRzX3NlcF93YzsKKy0jIGVsc2UKKysjIGVsaWYgZGVmaW5lZCBfX1VDTElCQ19IQVNfTE9DQUxFX18KKyAJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gX19nbG9iYWxfbG9jYWxlLT5kZWNpbWFsX3BvaW50X3djOworIAkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX2dsb2JhbF9sb2NhbGUtPnRob3VzYW5kc19zZXBfd2M7CisgIyBlbmRpZgorQEAgLTU1Niw3ICs1NTYsNyBAQCBuYW1lc3BhY2Ugc3RkCisgIyBpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCisgCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fY2xvYy0+ZGVjaW1hbF9wb2ludF93YzsKKyAJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX19jbG9jLT50aG91c2FuZHNfc2VwX3djOworLSMgZWxzZQorKyMgZWxpZiBkZWZpbmVkIF9fVUNMSUJDX0hBU19MT0NBTEVfXworIAkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBfX2dsb2JhbF9sb2NhbGUtPmRlY2ltYWxfcG9pbnRfd2M7CisgCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IF9fZ2xvYmFsX2xvY2FsZS0+dGhvdXNhbmRzX3NlcF93YzsKKyAjIGVuZGlmCitkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKK2luZGV4IDJjNzA2NDIuLmQ1Yzg5NjEgMTAwNjQ0CistLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjCisrKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjCitAQCAtMTI3LDEyICsxMjcsMjUgQEAgbmFtZXNwYWNlIHN0ZAorIAl7CisgCSAgLy8gTmFtZWQgbG9jYWxlLgorIAkgIC8vIE5COiBJbiB0aGUgR05VIG1vZGVsIHdjaGFyX3QgaXMgYWx3YXlzIDMyIGJpdCB3aWRlLgorKyNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXworKyN3YXJuaW5nIGZpeCB0aGlzLi4uIHNob3VsZCBiZSBudW1lcmljCisrI2VuZGlmCisrI2lmZGVmIF9fVUNMSUJDX18KKysjIGlmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KKysJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gX19jbG9jLT5kZWNpbWFsX3BvaW50X3djOworKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX2Nsb2MtPnRob3VzYW5kc19zZXBfd2M7CisrIyBlbGlmIGRlZmluZWQgX19VQ0xJQkNfSEFTX0xPQ0FMRV9fCisrCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fZ2xvYmFsX2xvY2FsZS0+ZGVjaW1hbF9wb2ludF93YzsKKysJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX19nbG9iYWxfbG9jYWxlLT50aG91c2FuZHNfc2VwX3djOworKyMgZW5kaWYKKysjZWxzZQorIAkgIHVuaW9uIHsgY2hhciAqX19zOyB3Y2hhcl90IF9fdzsgfSBfX3U7CisgCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfTlVNRVJJQ19ERUNJTUFMX1BPSU5UX1dDLCBfX2Nsb2MpOworIAkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBfX3UuX193OworIAorIAkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX05VTUVSSUNfVEhPVVNBTkRTX1NFUF9XQywgX19jbG9jKTsKKyAJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX191Ll9fdzsKKysjZW5kaWYKKyAKKyAJICBpZiAoX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9PSBMJ1wwJykKKyAJICAgIF9NX2RhdGEtPl9NX2dyb3VwaW5nID0gIiI7CistLSAKKzIuOC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAwNy11Y2xpYmMtbG9jYWxlLXVwZGF0ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAwNy11Y2xpYmMtbG9jYWxlLXVwZGF0ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzNlNTkxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDA3LXVjbGliYy1sb2NhbGUtdXBkYXRlLnBhdGNoCkBAIC0wLDAgKzEsNTQyIEBACitGcm9tIDhkNTNhMzhhMzAzODEwNGU2ODMwZWNlYTVlNGJlYWRjZTU0NDU3YzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODo0Njo1OCArMDQwMAorU3ViamVjdDogW1BBVENIIDA3LzQ2XSB1Y2xpYmMtbG9jYWxlLXVwZGF0ZQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaCAgICAgIHwgIDMgKworIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYyAgICAgIHwgNzQgKysrKysrKysrKy0tLS0tLS0tLS0tLQorIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oICAgICAgIHwgNDIgKysrKysrLS0tLS0tCisgbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MgfCA1MSArKysrKysrKysrKy0tLS0KKyAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oICAgICAgICB8IDEyICsrLS0KKyAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYyAgICAgICB8IDM0ICsrKysrKy0tLS0KKyAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjICAgICAgICB8ICA1ICsrCisgbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYyAgfCAxOCArKysrLS0KKyBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmggICB8IDE3ICsrKy0tCisgOSBmaWxlcyBjaGFuZ2VkLCAxNTggaW5zZXJ0aW9ucygrKSwgOTggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmggYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmgKK2luZGV4IGU3NGZkZGYuLjk3MWE2YjQgMTAwNjQ0CistLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmgKKysrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaAorQEAgLTMxLDYgKzMxLDkgQEAKKyAKKyAjaW5jbHVkZSA8Yml0cy9jKytjb25maWcuaD4KKyAjaW5jbHVkZSA8Y2xvY2FsZT4KKysjaW5jbHVkZSA8Y3N0ZGxpYj4KKysjaW5jbHVkZSA8Y3N0cmluZz4KKysjaW5jbHVkZSA8Y3N0ZGRlZj4KKyAKKyAjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KKyAjd2FybmluZyBjbGVhbiB0aGlzIHVwCitkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCitpbmRleCAyMTQzMGQwLi4xYjlkOGUxIDEwMDY0NAorLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCisrKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuY2MKK0BAIC0zOSwyMyArMzksMjAgQEAKKyAjaW5jbHVkZSA8bGFuZ2luZm8uaD4KKyAjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KKyAKKy1uYW1lc3BhY2Ugc3RkCisteworK19HTElCQ1hYX0JFR0lOX05BTUVTUEFDRShzdGQpCisrCisgICB0ZW1wbGF0ZTw+CisgICAgIHZvaWQKKyAgICAgX19jb252ZXJ0X3RvX3YoY29uc3QgY2hhciogX19zLCBmbG9hdCYgX192LCBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsCisgCQkgICBjb25zdCBfX2NfbG9jYWxlJiBfX2Nsb2MpCisgICAgIHsKKy0gICAgICBpZiAoIShfX2VyciAmIGlvc19iYXNlOjpmYWlsYml0KSkKKy0JeworLQkgIGNoYXIqIF9fc2FuaXR5OworLQkgIGVycm5vID0gMDsKKy0JICBmbG9hdCBfX2YgPSBfX3N0cnRvZl9sKF9fcywgJl9fc2FuaXR5LCBfX2Nsb2MpOworLSAgICAgICAgICBpZiAoX19zYW5pdHkgIT0gX19zICYmIGVycm5vICE9IEVSQU5HRSkKKy0JICAgIF9fdiA9IF9fZjsKKy0JICBlbHNlCistCSAgICBfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKKy0JfQorKyAgICAgIGNoYXIqIF9fc2FuaXR5OworKyAgICAgIGVycm5vID0gMDsKKysgICAgICBmbG9hdCBfX2YgPSBfX3N0cnRvZl9sKF9fcywgJl9fc2FuaXR5LCBfX2Nsb2MpOworKyAgICAgIGlmIChfX3Nhbml0eSAhPSBfX3MgJiYgZXJybm8gIT0gRVJBTkdFKQorKwlfX3YgPSBfX2Y7CisrICAgICAgZWxzZQorKwlfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKKyAgICAgfQorIAorICAgdGVtcGxhdGU8PgorQEAgLTYzLDE2ICs2MCwxMyBAQCBuYW1lc3BhY2Ugc3RkCisgICAgIF9fY29udmVydF90b192KGNvbnN0IGNoYXIqIF9fcywgZG91YmxlJiBfX3YsIGlvc19iYXNlOjppb3N0YXRlJiBfX2VyciwKKyAJCSAgIGNvbnN0IF9fY19sb2NhbGUmIF9fY2xvYykKKyAgICAgeworLSAgICAgIGlmICghKF9fZXJyICYgaW9zX2Jhc2U6OmZhaWxiaXQpKQorLQl7CistCSAgY2hhciogX19zYW5pdHk7CistCSAgZXJybm8gPSAwOworLQkgIGRvdWJsZSBfX2QgPSBfX3N0cnRvZF9sKF9fcywgJl9fc2FuaXR5LCBfX2Nsb2MpOworLSAgICAgICAgICBpZiAoX19zYW5pdHkgIT0gX19zICYmIGVycm5vICE9IEVSQU5HRSkKKy0JICAgIF9fdiA9IF9fZDsKKy0JICBlbHNlCistCSAgICBfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKKy0JfQorKyAgICAgIGNoYXIqIF9fc2FuaXR5OworKyAgICAgIGVycm5vID0gMDsKKysgICAgICBkb3VibGUgX19kID0gX19zdHJ0b2RfbChfX3MsICZfX3Nhbml0eSwgX19jbG9jKTsKKysgICAgICBpZiAoX19zYW5pdHkgIT0gX19zICYmIGVycm5vICE9IEVSQU5HRSkKKysJX192ID0gX19kOworKyAgICAgIGVsc2UKKysJX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7CisgICAgIH0KKyAKKyAgIHRlbXBsYXRlPD4KK0BAIC04MCwxNiArNzQsMTMgQEAgbmFtZXNwYWNlIHN0ZAorICAgICBfX2NvbnZlcnRfdG9fdihjb25zdCBjaGFyKiBfX3MsIGxvbmcgZG91YmxlJiBfX3YsIGlvc19iYXNlOjppb3N0YXRlJiBfX2VyciwKKyAJCSAgIGNvbnN0IF9fY19sb2NhbGUmIF9fY2xvYykKKyAgICAgeworLSAgICAgIGlmICghKF9fZXJyICYgaW9zX2Jhc2U6OmZhaWxiaXQpKQorLQl7CistCSAgY2hhciogX19zYW5pdHk7CistCSAgZXJybm8gPSAwOworLQkgIGxvbmcgZG91YmxlIF9fbGQgPSBfX3N0cnRvbGRfbChfX3MsICZfX3Nhbml0eSwgX19jbG9jKTsKKy0gICAgICAgICAgaWYgKF9fc2FuaXR5ICE9IF9fcyAmJiBlcnJubyAhPSBFUkFOR0UpCistCSAgICBfX3YgPSBfX2xkOworLQkgIGVsc2UKKy0JICAgIF9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0OworLQl9CisrICAgICAgY2hhciogX19zYW5pdHk7CisrICAgICAgZXJybm8gPSAwOworKyAgICAgIGxvbmcgZG91YmxlIF9fbGQgPSBfX3N0cnRvbGRfbChfX3MsICZfX3Nhbml0eSwgX19jbG9jKTsKKysgICAgICBpZiAoX19zYW5pdHkgIT0gX19zICYmIGVycm5vICE9IEVSQU5HRSkKKysJX192ID0gX19sZDsKKysgICAgICBlbHNlCisrCV9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0OworICAgICB9CisgCisgICB2b2lkCitAQCAtMTEwLDE3ICsxMDEsMTggQEAgbmFtZXNwYWNlIHN0ZAorICAgdm9pZAorICAgbG9jYWxlOjpmYWNldDo6X1NfZGVzdHJveV9jX2xvY2FsZShfX2NfbG9jYWxlJiBfX2Nsb2MpCisgICB7CistICAgIGlmIChfU19nZXRfY19sb2NhbGUoKSAhPSBfX2Nsb2MpCisrICAgIGlmIChfX2Nsb2MgJiYgX1NfZ2V0X2NfbG9jYWxlKCkgIT0gX19jbG9jKQorICAgICAgIF9fZnJlZWxvY2FsZShfX2Nsb2MpOworICAgfQorIAorICAgX19jX2xvY2FsZQorICAgbG9jYWxlOjpmYWNldDo6X1NfY2xvbmVfY19sb2NhbGUoX19jX2xvY2FsZSYgX19jbG9jKQorICAgeyByZXR1cm4gX19kdXBsb2NhbGUoX19jbG9jKTsgfQorLX0gLy8gbmFtZXNwYWNlIHN0ZAorIAorLW5hbWVzcGFjZSBfX2dudV9jeHgKKy17CisrX0dMSUJDWFhfRU5EX05BTUVTUEFDRQorKworK19HTElCQ1hYX0JFR0lOX05BTUVTUEFDRShfX2dudV9jeHgpCisrCisgICBjb25zdCBjaGFyKiBjb25zdCBjYXRlZ29yeV9uYW1lc1s2ICsgX0dMSUJDWFhfTlVNX0NBVEVHT1JJRVNdID0KKyAgICAgeworICAgICAgICJMQ19DVFlQRSIsCitAQCAtMTM4LDkgKzEzMCwxMSBAQCBuYW1lc3BhY2UgX19nbnVfY3h4CisgICAgICAgIkxDX0lERU5USUZJQ0FUSU9OIgorICNlbmRpZgorICAgICB9OworLX0KKyAKKy1uYW1lc3BhY2Ugc3RkCisteworK19HTElCQ1hYX0VORF9OQU1FU1BBQ0UKKysKKytfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0Uoc3RkKQorKworICAgY29uc3QgY2hhciogY29uc3QqIGNvbnN0IGxvY2FsZTo6X1NfY2F0ZWdvcmllcyA9IF9fZ251X2N4eDo6Y2F0ZWdvcnlfbmFtZXM7CistfSAgLy8gbmFtZXNwYWNlIHN0ZAorKworK19HTElCQ1hYX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaCBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oCitpbmRleCA0YmNhNWYxLi42NGE2ZDQ2IDEwMDY0NAorLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmgKKysrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oCitAQCAtMzksMjEgKzM5LDIzIEBACisgI3ByYWdtYSBHQ0Mgc3lzdGVtX2hlYWRlcgorIAorICNpbmNsdWRlIDxjc3RyaW5nPiAgICAgICAgICAgICAgLy8gZ2V0IHN0ZDo6c3RybGVuCistI2luY2x1ZGUgPGNzdGRpbz4gICAgICAgICAgICAgICAvLyBnZXQgc3RkOjpzbnByaW50ZiBvciBzdGQ6OnNwcmludGYKKysjaW5jbHVkZSA8Y3N0ZGlvPiAgICAgICAgICAgICAgIC8vIGdldCBzdGQ6OnZzbnByaW50ZiBvciBzdGQ6OnZzcHJpbnRmCisgI2luY2x1ZGUgPGNsb2NhbGU+CisgI2luY2x1ZGUgPGxhbmdpbmZvLmg+CQkvLyBGb3IgY29kZWN2dAorICNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXworICN3YXJuaW5nIGZpeCB0aGlzCisgI2VuZGlmCistI2lmZGVmIF9fVUNMSUJDX0hBU19MT0NBTEVfXworKyNpZmRlZiBfR0xJQkNYWF9VU0VfSUNPTlYKKyAjaW5jbHVkZSA8aWNvbnYuaD4JCS8vIEZvciBjb2RlY3Z0IHVzaW5nIGljb252LCBpY29udl90CisgI2VuZGlmCistI2lmZGVmIF9fVUNMSUJDX0hBU19HRVRURVhUX0FXQVJFTkVTU19fCistI2luY2x1ZGUgPGxpYmludGwuaD4gCQkvLyBGb3IgbWVzc2FnZXMKKysjaWZkZWYgSEFWRV9MSUJJTlRMX0gKKysjaW5jbHVkZSA8bGliaW50bC5oPgkJLy8gRm9yIG1lc3NhZ2VzCisgI2VuZGlmCisrI2luY2x1ZGUgPGNzdGRhcmc+CisgCisgI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCisgI3dhcm5pbmcgd2hhdCBpcyBfR0xJQkNYWF9DX0xPQ0FMRV9HTlUgZm9yCisrLy8gcHNtOiB1c2VkIGluIG9zL2dudS1saW51eC9jdHlwZV9ub25pbmxpbmUuaAorICNlbmRpZgorICNkZWZpbmUgX0dMSUJDWFhfQ19MT0NBTEVfR05VIDEKKyAKK0BAIC03OCwyMyArODAsMjUgQEAgbmFtZXNwYWNlIHN0ZAorICNlbHNlCisgICB0eXBlZGVmIGludCoJCQlfX2NfbG9jYWxlOworICNlbmRpZgorLQorLSAgLy8gQ29udmVydCBudW1lcmljIHZhbHVlIG9mIHR5cGUgX1R2IHRvIHN0cmluZyBhbmQgcmV0dXJuIGxlbmd0aCBvZgorLSAgLy8gc3RyaW5nLiAgSWYgc25wcmludGYgaXMgYXZhaWxhYmxlIHVzZSBpdCwgb3RoZXJ3aXNlIGZhbGwgYmFjayB0bworLSAgLy8gdGhlIHVuc2FmZSBzcHJpbnRmIHdoaWNoLCBpbiBnZW5lcmFsLCBjYW4gYmUgZGFuZ2Vyb3VzIGFuZCBzaG91bGQKKysgIC8vIENvbnZlcnQgbnVtZXJpYyB2YWx1ZSBvZiB0eXBlIGRvdWJsZSB0byBzdHJpbmcgYW5kIHJldHVybiBsZW5ndGggb2YKKysgIC8vIHN0cmluZy4gIElmIHZzbnByaW50ZiBpcyBhdmFpbGFibGUgdXNlIGl0LCBvdGhlcndpc2UgZmFsbCBiYWNrIHRvCisrICAvLyB0aGUgdW5zYWZlIHZzcHJpbnRmIHdoaWNoLCBpbiBnZW5lcmFsLCBjYW4gYmUgZGFuZ2Vyb3VzIGFuZCBzaG91bGQKKyAgIC8vIGJlIGF2b2lkZWQuCistICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHY+CistICAgIGludAorLSAgICBfX2NvbnZlcnRfZnJvbV92KGNoYXIqIF9fb3V0LAorLQkJICAgICBjb25zdCBpbnQgX19zaXplIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSksCistCQkgICAgIGNvbnN0IGNoYXIqIF9fZm10LAorLSNpZmRlZiBfX1VDTElCQ19IQVNfWENMT0NBTEVfXworLQkJICAgICBfVHYgX192LCBjb25zdCBfX2NfbG9jYWxlJiBfX2Nsb2MsIGludCBfX3ByZWMpCisrICAgIGlubGluZSBpbnQKKysgICAgX19jb252ZXJ0X2Zyb21fdihjb25zdCBfX2NfbG9jYWxlJgorKyNpZm5kZWYgX19VQ0xJQkNfSEFTX1hDTE9DQUxFX18KKysJX19jbG9jIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSkKKysjZW5kaWYKKysJCSAgICAgLAorKwkJICAgICBjaGFyKiBfX291dCwKKysJCSAgICAgY29uc3QgaW50IF9fc2l6ZSwKKysJCSAgICAgY29uc3QgY2hhciogX19mbXQsIC4uLikKKyAgICAgeworKyAgICAgIHZhX2xpc3QgX19hcmdzOworKyNpZmRlZiBfX1VDTElCQ19IQVNfWENMT0NBTEVfXworKworICAgICAgIF9fY19sb2NhbGUgX19vbGQgPSBfX2dudV9jeHg6Ol9fdXNlbG9jYWxlKF9fY2xvYyk7CisgI2Vsc2UKKy0JCSAgICAgX1R2IF9fdiwgY29uc3QgX19jX2xvY2FsZSYsIGludCBfX3ByZWMpCistICAgIHsKKyAjIGlmZGVmIF9fVUNMSUJDX0hBU19MT0NBTEVfXworICAgICAgIGNoYXIqIF9fb2xkID0gc3RkOjpzZXRsb2NhbGUoTENfQUxMLCBOVUxMKTsKKyAgICAgICBjaGFyKiBfX3NhdiA9IG5ldyBjaGFyW3N0ZDo6c3RybGVuKF9fb2xkKSArIDFdOworQEAgLTEwMyw3ICsxMDcsOSBAQCBuYW1lc3BhY2Ugc3RkCisgIyBlbmRpZgorICNlbmRpZgorIAorLSAgICAgIGNvbnN0IGludCBfX3JldCA9IHN0ZDo6c25wcmludGYoX19vdXQsIF9fc2l6ZSwgX19mbXQsIF9fcHJlYywgX192KTsKKysgICAgICB2YV9zdGFydChfX2FyZ3MsIF9fZm10KTsKKysgICAgICBjb25zdCBpbnQgX19yZXQgPSBzdGQ6OnZzbnByaW50ZihfX291dCwgX19zaXplLCBfX2ZtdCwgX19hcmdzKTsKKysgICAgICB2YV9lbmQoX19hcmdzKTsKKyAKKyAjaWZkZWYgX19VQ0xJQkNfSEFTX1hDTE9DQUxFX18KKyAgICAgICBfX2dudV9jeHg6Ol9fdXNlbG9jYWxlKF9fb2xkKTsKK2RpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjCitpbmRleCA3YjEyODYxLi4xM2UwMTFkIDEwMDY0NAorLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MKKysrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjCitAQCAtMzMsMTYgKzMzLDIwIEBACisgCisgLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KKyAKKysjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KKysjaWZkZWYgX19VQ0xJQkNfSEFTX0xPQ0FMRV9fCisgI2RlZmluZSBfTElCQworICNpbmNsdWRlIDxsb2NhbGU+CisgI3VuZGVmIF9MSUJDCisrI2Vsc2UKKysjaW5jbHVkZSA8bG9jYWxlPgorKyNlbmRpZgorICNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgorIAorLW5hbWVzcGFjZSBzdGQKKy17CisrX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFKHN0ZCkKKysKKyAgIC8vIE5COiBUaGUgb3RoZXIgY3R5cGU8Y2hhcj4gc3BlY2lhbGl6YXRpb25zIGFyZSBpbiBzcmMvbG9jYWxlLmNjIGFuZAorICAgLy8gdmFyaW91cyAvY29uZmlnL29zLyogZmlsZXMuCistICB0ZW1wbGF0ZTw+CisgICAgIGN0eXBlX2J5bmFtZTxjaGFyPjo6Y3R5cGVfYnluYW1lKGNvbnN0IGNoYXIqIF9fcywgc2l6ZV90IF9fcmVmcykKKyAgICAgOiBjdHlwZTxjaGFyPigwLCBmYWxzZSwgX19yZWZzKQorICAgICB7CitAQCAtNTcsNiArNjEsOCBAQCBuYW1lc3BhY2Ugc3RkCisgI2VuZGlmCisgCX0KKyAgICAgfQorKyAgICBjdHlwZV9ieW5hbWU8Y2hhcj46On5jdHlwZV9ieW5hbWUoKQorKyAgICB7IH0KKyAKKyAjaWZkZWYgX0dMSUJDWFhfVVNFX1dDSEFSX1QKKyAgIGN0eXBlPHdjaGFyX3Q+OjpfX3dtYXNrX3R5cGUKK0BAIC0xMzgsMTcgKzE0NCwzMyBAQCBuYW1lc3BhY2Ugc3RkCisgICBjdHlwZTx3Y2hhcl90Pjo6CisgICBkb19pcyhtYXNrIF9fbSwgd2NoYXJfdCBfX2MpIGNvbnN0CisgICB7CistICAgIC8vIEhpZ2hlc3QgYml0bWFzayBpbiBjdHlwZV9iYXNlID09IDEwLCBidXQgZXh0cmEgaW4gIkMiCistICAgIC8vIGxpYnJhcnkgZm9yIGJsYW5rLgorKyAgICAvLyBUaGUgY2FzZSBvZiBfX20gPT0gY3R5cGVfYmFzZTo6c3BhY2UgaXMgcGFydGljdWxhcmx5IGltcG9ydGFudCwKKysgICAgLy8gZHVlIHRvIGl0cyB1c2UgaW4gbWFueSBpc3RyZWFtIGZ1bmN0aW9ucy4gIFRoZXJlZm9yZSB3ZSBkZWFsIHdpdGgKKysgICAgLy8gaXQgZmlyc3QsIGV4cGxvaXRpbmcgdGhlIGtub3dsZWRnZSB0aGF0IG9uIEdOVSBzeXN0ZW1zIF9NX2JpdFs1XQorKyAgICAvLyBpcyB0aGUgbWFzayBjb3JyZXNwb25kaW5nIHRvIGN0eXBlX2Jhc2U6OnNwYWNlLiAgTkI6IGFuIGVuY29kaW5nCisrICAgIC8vIGNoYW5nZSB3b3VsZCBub3QgYWZmZWN0IGNvcnJlY3RuZXNzIQorKworICAgICBib29sIF9fcmV0ID0gZmFsc2U7CistICAgIGNvbnN0IHNpemVfdCBfX2JpdG1hc2tzaXplID0gMTE7CistICAgIGZvciAoc2l6ZV90IF9fYml0Y3VyID0gMDsgX19iaXRjdXIgPD0gX19iaXRtYXNrc2l6ZTsgKytfX2JpdGN1cikKKy0gICAgICBpZiAoX19tICYgX01fYml0W19fYml0Y3VyXQorLQkgICYmIF9faXN3Y3R5cGVfbChfX2MsIF9NX3dtYXNrW19fYml0Y3VyXSwgX01fY19sb2NhbGVfY3R5cGUpKQorLQl7CistCSAgX19yZXQgPSB0cnVlOworLQkgIGJyZWFrOworLQl9CisrICAgIGlmIChfX20gPT0gX01fYml0WzVdKQorKyAgICAgIF9fcmV0ID0gX19pc3djdHlwZV9sKF9fYywgX01fd21hc2tbNV0sIF9NX2NfbG9jYWxlX2N0eXBlKTsKKysgICAgZWxzZQorKyAgICAgIHsKKysJLy8gSGlnaGVzdCBiaXRtYXNrIGluIGN0eXBlX2Jhc2UgPT0gMTAsIGJ1dCBleHRyYSBpbiAiQyIKKysJLy8gbGlicmFyeSBmb3IgYmxhbmsuCisrCWNvbnN0IHNpemVfdCBfX2JpdG1hc2tzaXplID0gMTE7CisrCWZvciAoc2l6ZV90IF9fYml0Y3VyID0gMDsgX19iaXRjdXIgPD0gX19iaXRtYXNrc2l6ZTsgKytfX2JpdGN1cikKKysJICBpZiAoX19tICYgX01fYml0W19fYml0Y3VyXSkKKysJICAgIHsKKysJICAgICAgaWYgKF9faXN3Y3R5cGVfbChfX2MsIF9NX3dtYXNrW19fYml0Y3VyXSwgX01fY19sb2NhbGVfY3R5cGUpKQorKwkJeworKwkJICBfX3JldCA9IHRydWU7CisrCQkgIGJyZWFrOworKwkJfQorKwkgICAgICBlbHNlIGlmIChfX20gPT0gX01fYml0W19fYml0Y3VyXSkKKysJCWJyZWFrOworKwkgICAgfQorKyAgICAgIH0KKysKKyAgICAgcmV0dXJuIF9fcmV0OworICAgfQorIAorQEAgLTI5MCw0ICszMTIsNSBAQCBuYW1lc3BhY2Ugc3RkCisgI2VuZGlmCisgICB9CisgI2VuZGlmIC8vICBfR0xJQkNYWF9VU0VfV0NIQVJfVAorLX0KKysKKytfR0xJQkNYWF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaCBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmgKK2luZGV4IGQ4OWRhMzMuLjA2NzY1N2EgMTAwNjQ0CistLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oCisrKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oCitAQCAtNTMsMTIgKzUzLDE2IEBACisgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CisgICAgICBtZXNzYWdlczxfQ2hhclQ+OjptZXNzYWdlcyhfX2NfbG9jYWxlIF9fY2xvYywgY29uc3QgY2hhciogX19zLAorIAkJCQlzaXplX3QgX19yZWZzKQorLSAgICAgOiBmYWNldChfX3JlZnMpLCBfTV9jX2xvY2FsZV9tZXNzYWdlcyhfU19jbG9uZV9jX2xvY2FsZShfX2Nsb2MpKSwKKy0gICAgIF9NX25hbWVfbWVzc2FnZXMoX19zKQorKyAgICAgOiBmYWNldChfX3JlZnMpLCBfTV9jX2xvY2FsZV9tZXNzYWdlcyhOVUxMKSwKKysgICAgIF9NX25hbWVfbWVzc2FnZXMoTlVMTCkKKyAgICAgIHsKKy0gICAgICAgY2hhciogX190bXAgPSBuZXcgY2hhcltzdGQ6OnN0cmxlbihfX3MpICsgMV07CistICAgICAgIHN0ZDo6c3RyY3B5KF9fdG1wLCBfX3MpOworKyAgICAgICBjb25zdCBzaXplX3QgX19sZW4gPSBzdGQ6OnN0cmxlbihfX3MpICsgMTsKKysgICAgICAgY2hhciogX190bXAgPSBuZXcgY2hhcltfX2xlbl07CisrICAgICAgIHN0ZDo6bWVtY3B5KF9fdG1wLCBfX3MsIF9fbGVuKTsKKyAgICAgICAgX01fbmFtZV9tZXNzYWdlcyA9IF9fdG1wOworKworKyAgICAgICAvLyBMYXN0IHRvIGF2b2lkIGxlYWtpbmcgbWVtb3J5IGlmIG5ldyB0aHJvd3MuCisrICAgICAgIF9NX2NfbG9jYWxlX21lc3NhZ2VzID0gX1NfY2xvbmVfY19sb2NhbGUoX19jbG9jKTsKKyAgICAgIH0KKyAKKyAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KK2RpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCitpbmRleCAzMWViYjlmLi43Njc5YjljIDEwMDY0NAorLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKKysrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCitAQCAtMzMsOSArMzMsMTQgQEAKKyAKKyAvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgorIAorKyNpbmNsdWRlIDxmZWF0dXJlcy5oPgorKyNpZmRlZiBfX1VDTElCQ19IQVNfTE9DQUxFX18KKyAjZGVmaW5lIF9MSUJDCisgI2luY2x1ZGUgPGxvY2FsZT4KKyAjdW5kZWYgX0xJQkMKKysjZWxzZQorKyNpbmNsdWRlIDxsb2NhbGU+CisrI2VuZGlmCisgI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+CisgCisgI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCitAQCAtMjA2LDcgKzIxMSw3IEBAIG5hbWVzcGFjZSBzdGQKKyAJICB9CisgCWJyZWFrOworICAgICAgIGRlZmF1bHQ6CistCTsKKysJX19yZXQgPSBwYXR0ZXJuKCk7CisgICAgICAgfQorICAgICByZXR1cm4gX19yZXQ7CisgICB9CitAQCAtMzkwLDcgKzM5NSw5IEBAIG5hbWVzcGFjZSBzdGQKKyAJICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX19jbG9jKTsKKyAjZWxzZQorIAkgIC8vIFN3aXRjaCB0byBuYW1lZCBsb2NhbGUgc28gdGhhdCBtYnNydG93Y3Mgd2lsbCB3b3JrLgorLQkgIGNoYXIqIF9fb2xkID0gc3RyZHVwKHNldGxvY2FsZShMQ19BTEwsIE5VTEwpKTsKKysgIAkgIGNoYXIqIF9fb2xkID0gc2V0bG9jYWxlKExDX0FMTCwgTlVMTCk7CisrICAgICAgICAgIGNvbnN0IHNpemVfdCBfX2xsZW4gPSBzdHJsZW4oX19vbGQpICsgMTsKKysgICAgICAgICAgY2hhciogX19zYXYgPSBuZXcgY2hhcltfX2xsZW5dOworIAkgIHNldGxvY2FsZShMQ19BTEwsIF9fbmFtZSk7CisgI2VuZGlmCisgCitAQCAtNDc3LDggKzQ4NCw4IEBAIG5hbWVzcGFjZSBzdGQKKyAjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXworIAkgICAgICBfX3VzZWxvY2FsZShfX29sZCk7CisgI2Vsc2UKKy0JICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOworLQkgICAgICBmcmVlKF9fb2xkKTsKKysJICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19zYXYpOworKwkgICAgICBkZWxldGUgW10gX19zYXY7CisgI2VuZGlmCisgCSAgICAgIF9fdGhyb3dfZXhjZXB0aW9uX2FnYWluOworIAkgICAgfQorQEAgLTQ5OCw4ICs1MDUsOCBAQCBuYW1lc3BhY2Ugc3RkCisgI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KKyAJICBfX3VzZWxvY2FsZShfX29sZCk7CisgI2Vsc2UKKy0JICBzZXRsb2NhbGUoTENfQUxMLCBfX29sZCk7CistCSAgZnJlZShfX29sZCk7CisrCSAgc2V0bG9jYWxlKExDX0FMTCwgX19zYXYpOworKwkgIGRlbGV0ZSBbXSBfX3NhdjsKKyAjZW5kaWYKKyAJfQorICAgICB9CitAQCAtNTQ1LDggKzU1MiwxMSBAQCBuYW1lc3BhY2Ugc3RkCisgCSAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9fY2xvYyk7CisgI2Vsc2UKKyAJICAvLyBTd2l0Y2ggdG8gbmFtZWQgbG9jYWxlIHNvIHRoYXQgbWJzcnRvd2NzIHdpbGwgd29yay4KKy0JICBjaGFyKiBfX29sZCA9IHN0cmR1cChzZXRsb2NhbGUoTENfQUxMLCBOVUxMKSk7CistCSAgc2V0bG9jYWxlKExDX0FMTCwgX19uYW1lKTsKKysgICAgICAgICAgY2hhciogX19vbGQgPSBzZXRsb2NhbGUoTENfQUxMLCBOVUxMKTsKKysgICAgICAgICAgY29uc3Qgc2l6ZV90IF9fbGxlbiA9IHN0cmxlbihfX29sZCkgKyAxOworKyAgICAgICAgICBjaGFyKiBfX3NhdiA9IG5ldyBjaGFyW19fbGxlbl07CisrICAgICAgICAgIG1lbWNweShfX3NhdiwgX19vbGQsIF9fbGxlbik7CisrICAgICAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fbmFtZSk7CisgI2VuZGlmCisgCisgI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCitAQCAtNjMzLDggKzY0Myw4IEBAIG5hbWVzcGFjZSBzdGQKKyAjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXworIAkgICAgICBfX3VzZWxvY2FsZShfX29sZCk7CisgI2Vsc2UKKy0JICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOworLQkgICAgICBmcmVlKF9fb2xkKTsKKysJICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19zYXYpOworKwkgICAgICBkZWxldGUgW10gX19zYXY7CisgI2VuZGlmCisgICAgICAgICAgICAgICBfX3Rocm93X2V4Y2VwdGlvbl9hZ2FpbjsKKyAJICAgIH0KK0BAIC02NTMsOCArNjYzLDggQEAgbmFtZXNwYWNlIHN0ZAorICNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCisgCSAgX191c2Vsb2NhbGUoX19vbGQpOworICNlbHNlCistCSAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOworLQkgIGZyZWUoX19vbGQpOworKwkgIHNldGxvY2FsZShMQ19BTEwsIF9fc2F2KTsKKysJICBkZWxldGUgW10gX19zYXY7CisgI2VuZGlmCisgCX0KKyAgICAgfQorZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjCitpbmRleCBkNWM4OTYxLi44YWU4OTY5IDEwMDY0NAorLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYworKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYworQEAgLTMzLDkgKzMzLDE0IEBACisgCisgLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KKyAKKysjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KKysjaWZkZWYgX19VQ0xJQkNfSEFTX0xPQ0FMRV9fCisgI2RlZmluZSBfTElCQworICNpbmNsdWRlIDxsb2NhbGU+CisgI3VuZGVmIF9MSUJDCisrI2Vsc2UKKysjaW5jbHVkZSA8bG9jYWxlPgorKyNlbmRpZgorICNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgorIAorICNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXworZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjCitpbmRleCBkODQ4ZWQ1Li5mMjRkNTNlIDEwMDY0NAorLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYworKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYworQEAgLTUzLDExICs1MywxNCBAQCBuYW1lc3BhY2Ugc3RkCisgICAgICAgY29uc3Qgc2l6ZV90IF9fbGVuID0gX19zdHJmdGltZV9sKF9fcywgX19tYXhsZW4sIF9fZm9ybWF0LCBfX3RtLAorIAkJCQkJX01fY19sb2NhbGVfdGltZXB1bmN0KTsKKyAjZWxzZQorLSAgICAgIGNoYXIqIF9fb2xkID0gc3RyZHVwKHNldGxvY2FsZShMQ19BTEwsIE5VTEwpKTsKKysgICAgICBjaGFyKiBfX29sZCA9IHNldGxvY2FsZShMQ19BTEwsIE5VTEwpOworKyAgICAgIGNvbnN0IHNpemVfdCBfX2xsZW4gPSBzdHJsZW4oX19vbGQpICsgMTsKKysgICAgICBjaGFyKiBfX3NhdiA9IG5ldyBjaGFyW19fbGxlbl07CisrICAgICAgbWVtY3B5KF9fc2F2LCBfX29sZCwgX19sbGVuKTsKKyAgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfTV9uYW1lX3RpbWVwdW5jdCk7CisgICAgICAgY29uc3Qgc2l6ZV90IF9fbGVuID0gc3RyZnRpbWUoX19zLCBfX21heGxlbiwgX19mb3JtYXQsIF9fdG0pOworLSAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKKy0gICAgICBmcmVlKF9fb2xkKTsKKysgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfX3Nhdik7CisrICAgICAgZGVsZXRlIFtdIF9fc2F2OworICNlbmRpZgorICAgICAgIC8vIE1ha2Ugc3VyZSBfX3MgaXMgbnVsbCB0ZXJtaW5hdGVkLgorICAgICAgIGlmIChfX2xlbiA9PSAwKQorQEAgLTIwNywxMSArMjEwLDE0IEBAIG5hbWVzcGFjZSBzdGQKKyAgICAgICBjb25zdCBzaXplX3QgX19sZW4gPSBfX3djc2Z0aW1lX2woX19zLCBfX21heGxlbiwgX19mb3JtYXQsIF9fdG0sCisgCQkJCQlfTV9jX2xvY2FsZV90aW1lcHVuY3QpOworICNlbHNlCistICAgICAgY2hhciogX19vbGQgPSBzdHJkdXAoc2V0bG9jYWxlKExDX0FMTCwgTlVMTCkpOworKyAgICAgIGNoYXIqIF9fb2xkID0gc2V0bG9jYWxlKExDX0FMTCwgTlVMTCk7CisrICAgICAgY29uc3Qgc2l6ZV90IF9fbGxlbiA9IHN0cmxlbihfX29sZCkgKyAxOworKyAgICAgIGNoYXIqIF9fc2F2ID0gbmV3IGNoYXJbX19sbGVuXTsKKysgICAgICBtZW1jcHkoX19zYXYsIF9fb2xkLCBfX2xsZW4pOworICAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9NX25hbWVfdGltZXB1bmN0KTsKKyAgICAgICBjb25zdCBzaXplX3QgX19sZW4gPSB3Y3NmdGltZShfX3MsIF9fbWF4bGVuLCBfX2Zvcm1hdCwgX190bSk7CistICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOworLSAgICAgIGZyZWUoX19vbGQpOworKyAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fc2F2KTsKKysgICAgICBkZWxldGUgW10gX19zYXY7CisgI2VuZGlmCisgICAgICAgLy8gTWFrZSBzdXJlIF9fcyBpcyBudWxsIHRlcm1pbmF0ZWQuCisgICAgICAgaWYgKF9fbGVuID09IDApCitkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oCitpbmRleCBiYThlODU4Li4xNjY1ZGRlIDEwMDY0NAorLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oCisrKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmgKK0BAIC01MCwxMiArNTAsMjEgQEAKKyAgICAgX190aW1lcHVuY3Q8X0NoYXJUPjo6X190aW1lcHVuY3QoX19jX2xvY2FsZSBfX2Nsb2MsIGNvbnN0IGNoYXIqIF9fcywKKyAJCQkJICAgICBzaXplX3QgX19yZWZzKQorICAgICA6IGZhY2V0KF9fcmVmcyksIF9NX2RhdGEoTlVMTCksIF9NX2NfbG9jYWxlX3RpbWVwdW5jdChOVUxMKSwKKy0gICAgX01fbmFtZV90aW1lcHVuY3QoX19zKQorKyAgICBfTV9uYW1lX3RpbWVwdW5jdChOVUxMKQorICAgICB7CistICAgICAgY2hhciogX190bXAgPSBuZXcgY2hhcltzdGQ6OnN0cmxlbihfX3MpICsgMV07CistICAgICAgc3RkOjpzdHJjcHkoX190bXAsIF9fcyk7CisrICAgICAgY29uc3Qgc2l6ZV90IF9fbGVuID0gc3RkOjpzdHJsZW4oX19zKSArIDE7CisrICAgICAgY2hhciogX190bXAgPSBuZXcgY2hhcltfX2xlbl07CisrICAgICAgc3RkOjptZW1jcHkoX190bXAsIF9fcywgX19sZW4pOworICAgICAgIF9NX25hbWVfdGltZXB1bmN0ID0gX190bXA7CistICAgICAgX01faW5pdGlhbGl6ZV90aW1lcHVuY3QoX19jbG9jKTsKKysKKysgICAgICB0cnkKKysJeyBfTV9pbml0aWFsaXplX3RpbWVwdW5jdChfX2Nsb2MpOyB9CisrICAgICAgY2F0Y2goLi4uKQorKwl7CisrCSAgZGVsZXRlIFtdIF9NX25hbWVfdGltZXB1bmN0OworKwkgIF9fdGhyb3dfZXhjZXB0aW9uX2FnYWluOworKwl9CisrCisgICAgIH0KKyAKKyAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KKy0tIAorMi44LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDA4LW1pc3NpbmctZXhlY2luZm9faC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAwOC1taXNzaW5nLWV4ZWNpbmZvX2gucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDFlN2M5NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAwOC1taXNzaW5nLWV4ZWNpbmZvX2gucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSA2ZGRlM2RhMjRlZjRiOWIzNTdiY2E2NzBkODU1MWNhYjNmZGRhODQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6NDg6MTAgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAwOC80Nl0gbWlzc2luZy1leGVjaW5mb19oCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgYm9laG0tZ2MvaW5jbHVkZS9nYy5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvYm9laG0tZ2MvaW5jbHVkZS9nYy5oIGIvYm9laG0tZ2MvaW5jbHVkZS9nYy5oCitpbmRleCA2YjM4ZjJkLi5mY2E5OGZmIDEwMDY0NAorLS0tIGEvYm9laG0tZ2MvaW5jbHVkZS9nYy5oCisrKysgYi9ib2VobS1nYy9pbmNsdWRlL2djLmgKK0BAIC01MDMsNyArNTAzLDcgQEAgR0NfQVBJIEdDX1BUUiBHQ19tYWxsb2NfYXRvbWljX2lnbm9yZV9vZmZfcGFnZSBHQ19QUk9UTygoc2l6ZV90IGxiKSk7CisgI2lmIGRlZmluZWQoX19saW51eF9fKSB8fCBkZWZpbmVkKF9fR0xJQkNfXykKKyAjIGluY2x1ZGUgPGZlYXR1cmVzLmg+CisgIyBpZiAoX19HTElCQ19fID09IDIgJiYgX19HTElCQ19NSU5PUl9fID49IDEgfHwgX19HTElCQ19fID4gMikgXAorLSAgICAgJiYgIWRlZmluZWQoX19pYTY0X18pCisrICAgICAmJiAhZGVmaW5lZChfX2lhNjRfXykgJiYgIWRlZmluZWQoX19VQ0xJQkNfXykKKyAjICAgaWZuZGVmIEdDX0hBVkVfQlVJTFRJTl9CQUNLVFJBQ0UKKyAjICAgICBkZWZpbmUgR0NfSEFWRV9CVUlMVElOX0JBQ0tUUkFDRQorICMgICBlbmRpZgorLS0gCisyLjguMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yLzAwMDktYzk5LXNucHJpbnRmLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDA5LWM5OS1zbnByaW50Zi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjIzNDFhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDA5LWM5OS1zbnByaW50Zi5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIGI3OTRmMWYxYzFjN2MwNmYzZjBkNzhjZjc2YzRmYjkwYzJhYjhkZmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODo0OTowMyArMDQwMAorU3ViamVjdDogW1BBVENIIDA5LzQ2XSBjOTktc25wcmludGYKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBsaWJzdGRjKystdjMvaW5jbHVkZS9jX3N0ZC9jc3RkaW8gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWJzdGRjKystdjMvaW5jbHVkZS9jX3N0ZC9jc3RkaW8gYi9saWJzdGRjKystdjMvaW5jbHVkZS9jX3N0ZC9jc3RkaW8KK2luZGV4IGE0MTE5YmEuLjgzOTZmNDMgMTAwNjQ0CistLS0gYS9saWJzdGRjKystdjMvaW5jbHVkZS9jX3N0ZC9jc3RkaW8KKysrKyBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2NzdGRpbworQEAgLTE0NCw3ICsxNDQsNyBAQCBuYW1lc3BhY2Ugc3RkCisgICB1c2luZyA6OnZzcHJpbnRmOworIH0gLy8gbmFtZXNwYWNlIHN0ZAorIAorLSNpZiBfR0xJQkNYWF9VU0VfQzk5X1NURElPCisrI2lmIF9HTElCQ1hYX1VTRV9DOTlfU1RESU8gfHwgZGVmaW5lZChfX1VDTElCQ19fKQorIAorICN1bmRlZiBzbnByaW50ZgorICN1bmRlZiB2ZnNjYW5mCistLSAKKzIuOC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAxMC1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAxMC1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzRjZjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDEwLWdjYy1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzLnBhdGNoCkBAIC0wLDAgKzEsMTkyIEBACitGcm9tIGQ3NjI1MDMyM2RhZDY5MjEyYzk1OGU0ODU3YTk4ZDk5YWI1MWEzOWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODo1OTowMCArMDQwMAorU3ViamVjdDogW1BBVENIIDEwLzQ2XSBnY2M6IHBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtkaXN0cmlidXRpb246IGNvZGVzb3VyY2VyeV0KKy0tLQorIGdjYy9jb21tb24ub3B0ICAgICAgfCAgNCArKysrCisgZ2NjL2NvbmZpZy5pbiAgICAgICB8ICA2ICsrKysrKworIGdjYy9jb25maWd1cmUgICAgICAgfCAxNiArKysrKysrKysrKysrKysrCisgZ2NjL2NvbmZpZ3VyZS5hYyAgICB8IDEwICsrKysrKysrKysKKyBnY2MvZG9jL2ludm9rZS50ZXhpIHwgIDkgKysrKysrKysrCisgZ2NjL2djYy5jICAgICAgICAgICB8ICAyICsrCisgZ2NjL2luY3BhdGguYyAgICAgICB8IDE5ICsrKysrKysrKysrKysrKysrKysKKyA3IGZpbGVzIGNoYW5nZWQsIDY2IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2djYy9jb21tb24ub3B0IGIvZ2NjL2NvbW1vbi5vcHQKK2luZGV4IDY3MDQ4ZGIuLjczMzE4NWMgMTAwNjQ0CistLS0gYS9nY2MvY29tbW9uLm9wdAorKysrIGIvZ2NjL2NvbW1vbi5vcHQKK0BAIC02NTksNiArNjU5LDEwIEBAIFdyZXR1cm4tbG9jYWwtYWRkcgorIENvbW1vbiBWYXIod2Fybl9yZXR1cm5fbG9jYWxfYWRkcikgSW5pdCgxKSBXYXJuaW5nCisgV2FybiBhYm91dCByZXR1cm5pbmcgYSBwb2ludGVyL3JlZmVyZW5jZSB0byBhIGxvY2FsIG9yIHRlbXBvcmFyeSB2YXJpYWJsZS4KKyAKKytXcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcworK0NvbW1vbiBWYXIoZmxhZ19wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzKSBJbml0KDEpIFdhcm5pbmcKKytXYXJuIGZvciAtSSBhbmQgLUwgb3B0aW9ucyB1c2luZyBzeXN0ZW0gZGlyZWN0b3JpZXMgaWYgY3Jvc3MgY29tcGlsaW5nCisrCisgV3NoYWRvdworIENvbW1vbiBWYXIod2Fybl9zaGFkb3cpIFdhcm5pbmcKKyBXYXJuIHdoZW4gb25lIGxvY2FsIHZhcmlhYmxlIHNoYWRvd3MgYW5vdGhlci4KK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnLmluIGIvZ2NjL2NvbmZpZy5pbgoraW5kZXggMTE1Y2I2MS4uMTA1YjMwZiAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcuaW4KKysrKyBiL2djYy9jb25maWcuaW4KK0BAIC0xODcsNiArMTg3LDEyIEBACisgI2VuZGlmCisgCisgCisrLyogRGVmaW5lIHRvIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGhlYWRlciBkaXJlY3RvcmllcyAqLworKyNpZm5kZWYgVVNFRF9GT1JfVEFSR0VUCisrI3VuZGVmIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTCisrI2VuZGlmCisrCisrCisgLyogRGVmaW5lIGlmIHlvdSB3YW50IGFsbCBvcGVyYXRpb25zIG9uIFJUTCAodGhlIGJhc2ljIGRhdGEgc3RydWN0dXJlIG9mIHRoZQorICAgIG9wdGltaXplciBhbmQgYmFjayBlbmQpIHRvIGJlIGNoZWNrZWQgZm9yIGR5bmFtaWMgdHlwZSBzYWZldHkgYXQgcnVudGltZS4KKyAgICBUaGlzIGlzIHF1aXRlIGV4cGVuc2l2ZS4gKi8KK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQoraW5kZXggMWM2ZTM0MC4uOGY4MzE1MiAxMDA3NTUKKy0tLSBhL2djYy9jb25maWd1cmUKKysrKyBiL2djYy9jb25maWd1cmUKK0BAIC05NDIsNiArOTQyLDcgQEAgd2l0aF9zeXN0ZW1femxpYgorIGVuYWJsZV9tYWludGFpbmVyX21vZGUKKyBlbmFibGVfbGlua19tdXRleAorIGVuYWJsZV92ZXJzaW9uX3NwZWNpZmljX3J1bnRpbWVfbGlicworK2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzCisgZW5hYmxlX3BsdWdpbgorIGVuYWJsZV9ob3N0X3NoYXJlZAorIGVuYWJsZV9saWJxdWFkbWF0aF9zdXBwb3J0CitAQCAtMTY4MSw2ICsxNjgyLDggQEAgT3B0aW9uYWwgRmVhdHVyZXM6CisgICAtLWVuYWJsZS12ZXJzaW9uLXNwZWNpZmljLXJ1bnRpbWUtbGlicworICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmeSB0aGF0IHJ1bnRpbWUgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGEgY29tcGlsZXItc3BlY2lmaWMgZGlyZWN0b3J5CisrICAtLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCisrICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBoZWFkZXIgZGlyZWN0b3JpZXMKKyAgIC0tZW5hYmxlLXBsdWdpbiAgICAgICAgIGVuYWJsZSBwbHVnaW4gc3VwcG9ydAorICAgLS1lbmFibGUtaG9zdC1zaGFyZWQgICAgYnVpbGQgaG9zdCBjb2RlIGFzIHNoYXJlZCBsaWJyYXJpZXMKKyAgIC0tZGlzYWJsZS1saWJxdWFkbWF0aC1zdXBwb3J0CitAQCAtMjg5MDgsNiArMjg5MTEsMTkgQEAgaWYgdGVzdCAiJHtlbmFibGVfdmVyc2lvbl9zcGVjaWZpY19ydW50aW1lX2xpYnMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorIGZpCisgCisgCisrIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMgd2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7ZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgZW5hYmxldmFsPSRlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllczsKKytlbHNlCisrICBlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcz1ubworK2ZpCisrCisraWYgdGVzdCAieCR7ZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXN9IiA9ICJ4eWVzIjsgdGhlbgorKworKyRhc19lY2hvICIjZGVmaW5lIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTIDEiID4+Y29uZmRlZnMuaAorKworK2ZpCisrCisgIyBTdWJzdGl0dXRlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzCisgCisgCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKK2luZGV4IDZjMWRjZDkuLjBmY2NhZWYgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlndXJlLmFjCisrKysgYi9nY2MvY29uZmlndXJlLmFjCitAQCAtNTg2MSw2ICs1ODYxLDE2IEBAIEFDX0FSR19FTkFCTEUodmVyc2lvbi1zcGVjaWZpYy1ydW50aW1lLWxpYnMsCisgICAgICAgICAgICAgICAgIFtzcGVjaWZ5IHRoYXQgcnVudGltZSBsaWJyYXJpZXMgc2hvdWxkIGJlCisgICAgICAgICAgICAgICAgICBpbnN0YWxsZWQgaW4gYSBjb21waWxlci1zcGVjaWZpYyBkaXJlY3RvcnldKV0pCisgCisrQUNfQVJHX0VOQUJMRShbcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc10sCisrICAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzXSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3dhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGhlYWRlciBkaXJlY3Rvcmllc10pLCwKKysgICAgICAgICAgICAgW2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzPW5vXSkKKytpZiB0ZXN0ICJ4JHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllc30iID0gInh5ZXMiOyB0aGVuCisrICBBQ19ERUZJTkUoW0VOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTXSwKKysgICAgICAgICAgIFsxXSwKKysgICAgICAgICAgIFtEZWZpbmUgdG8gd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gaGVhZGVyIGRpcmVjdG9yaWVzXSkKKytmaQorKworICMgU3Vic3RpdHV0ZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcworIEFDX1NVQlNUKHN1YmRpcnMpCisgQUNfU1VCU1Qoc3JjZGlyKQorZGlmZiAtLWdpdCBhL2djYy9kb2MvaW52b2tlLnRleGkgYi9nY2MvZG9jL2ludm9rZS50ZXhpCitpbmRleCA4MjFmOGZkLi44YmI0OWU3IDEwMDY0NAorLS0tIGEvZ2NjL2RvYy9pbnZva2UudGV4aQorKysrIGIvZ2NjL2RvYy9pbnZva2UudGV4aQorQEAgLTI4NCw2ICsyODQsNyBAQCBPYmplY3RpdmUtQyBhbmQgT2JqZWN0aXZlLUMrKyBEaWFsZWN0c30uCisgLVdwYXJlbnRoZXNlcyAtV25vLXBlZGFudGljLW1zLWZvcm1hdCBAZ29sCisgLVdwbGFjZW1lbnQtbmV3IC1XcGxhY2VtZW50LW5ldz1AdmFye259IEBnb2wKKyAtV3BvaW50ZXItYXJpdGggIC1Xbm8tcG9pbnRlci10by1pbnQtY2FzdCBAZ29sCisrLVduby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIEBnb2wKKyAtV25vLXByYWdtYXMgLVdyZWR1bmRhbnQtZGVjbHMgIC1Xbm8tcmV0dXJuLWxvY2FsLWFkZHIgQGdvbAorIC1XcmV0dXJuLXR5cGUgIC1Xc2VxdWVuY2UtcG9pbnQgIC1Xc2hhZG93ICAtV25vLXNoYWRvdy1pdmFyIEBnb2wKKyAtV3NoaWZ0LW92ZXJmbG93IC1Xc2hpZnQtb3ZlcmZsb3c9QHZhcntufSBAZ29sCitAQCAtNDcyMyw2ICs0NzI0LDE0IEBAIG1hZGUgdXAgb2YgZGF0YSBvbmx5IGFuZCB0aHVzIHJlcXVpcmVzIG5vIHNwZWNpYWwgdHJlYXRtZW50LiAgQnV0LCBmb3IKKyBtb3N0IHRhcmdldHMsIGl0IGlzIG1hZGUgdXAgb2YgY29kZSBhbmQgdGh1cyByZXF1aXJlcyB0aGUgc3RhY2sgdG8gYmUKKyBtYWRlIGV4ZWN1dGFibGUgaW4gb3JkZXIgZm9yIHRoZSBwcm9ncmFtIHRvIHdvcmsgcHJvcGVybHkuCisgCisrQGl0ZW0gLVduby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCisrQG9waW5kZXggV25vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKKytEbyBub3Qgd2FybiBmb3IgQG9wdGlvbnstSX0gb3IgQG9wdGlvbnstTH0gb3B0aW9ucyB1c2luZyBzeXN0ZW0KKytkaXJlY3RvcmllcyBzdWNoIGFzIEBmaWxley91c3IvaW5jbHVkZX0gd2hlbiBjcm9zcyBjb21waWxpbmcuICBUaGlzCisrb3B0aW9uIGlzIGludGVuZGVkIGZvciB1c2UgaW4gY2hyb290IGVudmlyb25tZW50cyB3aGVuIHN1Y2gKKytkaXJlY3RvcmllcyBjb250YWluIHRoZSBjb3JyZWN0IGhlYWRlcnMgYW5kIGxpYnJhcmllcyBmb3IgdGhlIHRhcmdldAorK3N5c3RlbSByYXRoZXIgdGhhbiB0aGUgaG9zdC4KKysKKyBAaXRlbSAtV2Zsb2F0LWVxdWFsCisgQG9waW5kZXggV2Zsb2F0LWVxdWFsCisgQG9waW5kZXggV25vLWZsb2F0LWVxdWFsCitkaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCitpbmRleCAxYWY1OTIwLi40Y2ZlZjdmIDEwMDY0NAorLS0tIGEvZ2NjL2djYy5jCisrKysgYi9nY2MvZ2NjLmMKK0BAIC0xMDE3LDYgKzEwMTcsOCBAQCBwcm9wZXIgcG9zaXRpb24gYW1vbmcgdGhlIG90aGVyIG91dHB1dCBmaWxlcy4gICovCisgICAgIiV7ZnVzZS1sZD0qOi1mdXNlLWxkPSUqfSAiIExJTktfQ09NUFJFU1NfREVCVUdfU1BFQyBcCisgICAgIiVYICV7byp9ICV7ZSp9ICV7Tn0gJXtufSAle3J9XAorICAgICAle3N9ICV7dH0gJXt1Kn0gJXt6fSAle1p9ICV7IW5vc3RkbGliOiV7IW5vc3RhcnRmaWxlczolU319IFwKKysgICAgJXtXbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllczotLW5vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXN9IFwKKysgICAgJXtXZXJyb3I9cG9pc29uLXN5c3RlbS1kaXJlY3RvcmllczotLWVycm9yLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXN9IFwKKyAgICAgJXtzdGF0aWM6fSAle0wqfSAlKG1md3JhcCkgJShsaW5rX2xpYmdjYykgIiBcCisgICAgIFZUQUJMRV9WRVJJRklDQVRJT05fU1BFQyAiICIgU0FOSVRJWkVSX0VBUkxZX1NQRUMgIiAlbyAiIENIS1BfU1BFQyAiIFwKKyAgICAgJXtmb3BlbmFjY3xmb3Blbm1wfCU6Z3QoJXtmdHJlZS1wYXJhbGxlbGl6ZS1sb29wcz0qOiUqfSAxKTpcCitkaWZmIC0tZ2l0IGEvZ2NjL2luY3BhdGguYyBiL2djYy9pbmNwYXRoLmMKK2luZGV4IGVhNDBmNGEuLjg1NmRhNDEgMTAwNjQ0CistLS0gYS9nY2MvaW5jcGF0aC5jCisrKysgYi9nY2MvaW5jcGF0aC5jCitAQCAtMjYsNiArMjYsNyBAQAorICNpbmNsdWRlICJpbnRsLmgiCisgI2luY2x1ZGUgImluY3BhdGguaCIKKyAjaW5jbHVkZSAiY3BwZGVmYXVsdC5oIgorKyNpbmNsdWRlICJkaWFnbm9zdGljLWNvcmUuaCIKKyAKKyAvKiBNaWNyb3NvZnQgV2luZG93cyBkb2VzIG5vdCBuYXRpdmVseSBzdXBwb3J0IGlub2Rlcy4KKyAgICBWTVMgaGFzIG5vbi1udW1lcmljIGlub2Rlcy4gICovCitAQCAtMzgxLDYgKzM4MiwyNCBAQCBtZXJnZV9pbmNsdWRlX2NoYWlucyAoY29uc3QgY2hhciAqc3lzcm9vdCwgY3BwX3JlYWRlciAqcGZpbGUsIGludCB2ZXJib3NlKQorIAl9CisgICAgICAgZnByaW50ZiAoc3RkZXJyLCBfKCJFbmQgb2Ygc2VhcmNoIGxpc3QuXG4iKSk7CisgICAgIH0KKysKKysjaWZkZWYgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMKKysgIGlmIChmbGFnX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMpCisrICAgIHsKKysgICAgICAgc3RydWN0IGNwcF9kaXIgKnA7CisrCisrICAgICAgIGZvciAocCA9IGhlYWRzW1FVT1RFXTsgcDsgcCA9IHAtPm5leHQpCisrICAgICAgICAgeworKyAgICAgICAgICBpZiAoKCFzdHJuY21wIChwLT5uYW1lLCAiL3Vzci9pbmNsdWRlIiwgMTIpKQorKyAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL3Vzci9sb2NhbC9pbmNsdWRlIiwgMTgpKQorKyAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL3Vzci9YMTFSNi9pbmNsdWRlIiwgMTgpKSkKKysgICAgICAgICAgICB3YXJuaW5nIChPUFRfV3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMsCisrICAgICAgICAgICAgICAgICAgICAgImluY2x1ZGUgbG9jYXRpb24gXCIlc1wiIGlzIHVuc2FmZSBmb3IgIgorKyAgICAgICAgICAgICAgICAgICAgICJjcm9zcy1jb21waWxhdGlvbiIsCisrICAgICAgICAgICAgICAgICAgICAgcC0+bmFtZSk7CisrICAgICAgICAgfQorKyAgICB9CisrI2VuZGlmCisgfQorIAorIC8qIFVzZSBnaXZlbiAtSSBwYXRocyBmb3IgI2luY2x1ZGUgIi4uLiIgYnV0IG5vdCAjaW5jbHVkZSA8Li4uPiwgYW5kCistLSAKKzIuOC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAxMS1nY2MtcG9pc29uLWRpci1leHRlbmQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yLzAwMTEtZ2NjLXBvaXNvbi1kaXItZXh0ZW5kLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExNzM2YWVhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDExLWdjYy1wb2lzb24tZGlyLWV4dGVuZC5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIGExYzI0YjU5ZGVmMzkzZTQzY2Q1MGI2NzY4NjA0YTIxMmM3ODhlZDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOTowMDozNCArMDQwMAorU3ViamVjdDogW1BBVENIIDExLzQ2XSBnY2MtcG9pc29uLWRpci1leHRlbmQKKworQWRkIC9zdy9pbmNsdWRlIGFuZCAvb3B0L2luY2x1ZGUgYmFzZWQgb24gdGhlIG9yaWdpbmFsCit6ZWNrZS1uby1ob3N0LWluY2x1ZGVzLnBhdGNoIHBhdGNoLiAgVGhlIG9yaWdpbmFsIHBhdGNoIGNoZWNrZWQgZm9yCisvdXNyL2luY2x1ZGUsIC9zdy9pbmNsdWRlIGFuZCAvb3B0L2luY2x1ZGUgYW5kIHRoZW4gdHJpZ2dlcmVkIGEgZmFpbHVyZSBhbmQKK2Fib3J0ZWQuCisKK0luc3RlYWQsIHdlIGFkZCB0aGUgdHdvIG1pc3NpbmcgaXRlbXMgdG8gdGhlIGN1cnJlbnQgc2Nhbi4gIElmIHRoZSB1c2VyCit3YW50cyB0aGlzIHRvIGJlIGEgZmFpbHVyZSwgdGhleSBjYW4gYWRkICItV2Vycm9yPXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMiLgorCitTaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGdjYy9pbmNwYXRoLmMgfCA0ICsrKy0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvaW5jcGF0aC5jIGIvZ2NjL2luY3BhdGguYworaW5kZXggODU2ZGE0MS4uZDJmYzgyYyAxMDA2NDQKKy0tLSBhL2djYy9pbmNwYXRoLmMKKysrKyBiL2djYy9pbmNwYXRoLmMKK0BAIC0zOTIsNyArMzkyLDkgQEAgbWVyZ2VfaW5jbHVkZV9jaGFpbnMgKGNvbnN0IGNoYXIgKnN5c3Jvb3QsIGNwcF9yZWFkZXIgKnBmaWxlLCBpbnQgdmVyYm9zZSkKKyAgICAgICAgICB7CisgICAgICAgICAgIGlmICgoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL2luY2x1ZGUiLCAxMikpCisgICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL2xvY2FsL2luY2x1ZGUiLCAxOCkpCistICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL1gxMVI2L2luY2x1ZGUiLCAxOCkpKQorKyAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL3Vzci9YMTFSNi9pbmNsdWRlIiwgMTgpKQorKyAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL3N3L2luY2x1ZGUiLCAxMSkpCisrICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvb3B0L2luY2x1ZGUiLCAxMikpKQorICAgICAgICAgICAgIHdhcm5pbmcgKE9QVF9XcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcywKKyAgICAgICAgICAgICAgICAgICAgICAiaW5jbHVkZSBsb2NhdGlvbiBcIiVzXCIgaXMgdW5zYWZlIGZvciAiCisgICAgICAgICAgICAgICAgICAgICAgImNyb3NzLWNvbXBpbGF0aW9uIiwKKy0tIAorMi44LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDEyLWdjYy00LjMuMy1TWVNST09UX0NGTEFHU19GT1JfVEFSR0VULnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDEyLWdjYy00LjMuMy1TWVNST09UX0NGTEFHU19GT1JfVEFSR0VULnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzOWIwNzAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yLzAwMTItZ2NjLTQuMy4zLVNZU1JPT1RfQ0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2gKQEAgLTAsMCArMSw3MyBAQAorRnJvbSAwMGVmNWYwZjJhOGQzYjMzYWViMWU1NWMwZDIzNDM5ZjRkZDQ5NWFmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MDg6MzEgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxMi80Nl0gZ2NjLTQuMy4zOiBTWVNST09UX0NGTEFHU19GT1JfVEFSR0VUCisKK0JlZm9yZSBjb21taXR0aW5nLCBJIG5vdGljZWQgdGhhdCBQUi8zMjE2MSB3YXMgbWFya2VkIGFzIGEgZHVwIG9mIFBSLzMyMDA5LCBidXQgbXkgcHJldmlvdXMgcGF0Y2ggZGlkIG5vdCBmaXggaXQuCisKK1RoaXMgYWx0ZXJuYXRpdmUgcGF0Y2ggaXMgYmV0dGVyIGJlY2F1c2UgaXQgbGV0cyB5b3UganVzdCB1c2UgQ0ZMQUdTX0ZPUl9UQVJHRVQgdG8gc2V0IHRoZSBjb21waWxhdGlvbiBmbGFncyBmb3IgbGliZ2NjLiBTaW5jZSBib290c3RyYXBwZWQgdGFyZ2V0IGxpYnJhcmllcyBhcmUgbmV2ZXIgY29tcGlsZWQgd2l0aCB0aGUgbmF0aXZlIGNvbXBpbGVyLCBpdCBtYWtlcyBsaXR0bGUgc2Vuc2UgdG8gdXNlIGRpZmZlcmVudCBmbGFncyBmb3Igc3RhZ2UxIGFuZCBsYXRlciBzdGFnZXMuIEFuZCBpdCBhbHNvIG1ha2VzIGxpdHRsZSBzZW5zZSB0byB1c2UgYSBkaWZmZXJlbnQgdmFyaWFibGUgdGhhbiBDRkxBR1NfRk9SX1RBUkdFVC4KKworT3RoZXIgY2hhbmdlcyBJIGhhZCB0byBkbyBpbmNsdWRlOgorCistIG1vdmluZyB0aGUgY3JlYXRpb24gb2YgZGVmYXVsdCBDRkxBR1NfRk9SX1RBUkdFVCBmcm9tIE1ha2VmaWxlLmFtIHRvIGNvbmZpZ3VyZS5hYywgYmVjYXVzZSBvdGhlcndpc2UgdGhlIEJPT1RfQ0ZMQUdTIGFyZSBzdWJzdGl0dXRlZCBpbnRvIENGTEFHU19GT1JfVEFSR0VUICh3aGljaCBpcyAiLU8yIC1nICQoQ0ZMQUdTKSIpIHZpYSAkKENGTEFHUykuIEl0IGlzIGFsc28gY2xlYW5lciB0aGlzIHdheSB0aG91Z2guCisKKy0gcGFzc2luZyB0aGUgcmlnaHQgQ0ZMQUdTIHRvIGNvbmZpZ3VyZSBzY3JpcHRzIGFzIGV4cG9ydGVkIGVudmlyb25tZW50IHZhcmlhYmxlcworCitJIGFsc28gc3RvcHBlZCBwYXNzaW5nIExJQkNGTEFHUyB0byBjb25maWd1cmUgc2NyaXB0cyBzaW5jZSB0aGV5IGFyZSB1bnVzZWQgaW4gdGhlIHdob2xlIHNyYyB0cmVlLiBBbmQgSSB1cGRhdGVkIHRoZSBkb2N1bWVudGF0aW9uIGFzIEgtUCByZW1pbmRlZCBtZSB0byBkby4KKworQm9vdHN0cmFwcGVkL3JlZ3Rlc3RlZCBpNjg2LXBjLWxpbnV4LWdudSwgd2lsbCBjb21taXQgdG8gNC40IHNob3J0bHkuIE9rIGZvciA0LjM/CisKK1NpZ25lZC1vZmYtYnk6IFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGNvbmZpZ3VyZSB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQoraW5kZXggYmZhZGMzMy4uNzU1ZDM4MiAxMDA3NTUKKy0tLSBhL2NvbmZpZ3VyZQorKysrIGIvY29uZmlndXJlCitAQCAtNjgxOSw2ICs2ODE5LDM4IEBAIGZpCisgCisgCisgCisrIyBEdXJpbmcgZ2NjIGJvb3RzdHJhcCwgaWYgd2UgdXNlIHNvbWUgcmFuZG9tIGNjIGZvciBzdGFnZTEgdGhlbiBDRkxBR1MKKysjIG1pZ2h0IGJlIGVtcHR5IG9yICItZyIuICBXZSBkb24ndCByZXF1aXJlIGEgQysrIGNvbXBpbGVyLCBzbyBDWFhGTEFHUworKyMgbWlnaHQgYWxzbyBiZSBlbXB0eSAob3IgIi1nIiwgaWYgYSBub24tR0NDIEMrKyBjb21waWxlciBpcyBpbiB0aGUgcGF0aCkuCisrIyBXZSB3YW50IHRvIGVuc3VyZSB0aGF0IFRBUkdFVCBsaWJyYXJpZXMgKHdoaWNoIHdlIGtub3cgYXJlIGJ1aWx0IHdpdGgKKysjIGdjYykgYXJlIGJ1aWx0IHdpdGggIi1PMiAtZyIsIHNvIGluY2x1ZGUgdGhvc2Ugb3B0aW9ucyB3aGVuIHNldHRpbmcKKysjIENGTEFHU19GT1JfVEFSR0VUIGFuZCBDWFhGTEFHU19GT1JfVEFSR0VULgorK2lmIHRlc3QgIngkQ0ZMQUdTX0ZPUl9UQVJHRVQiID0geDsgdGhlbgorKyAgQ0ZMQUdTX0ZPUl9UQVJHRVQ9JENGTEFHUworKyAgY2FzZSAiICRDRkxBR1MgIiBpbgorKyAgICAqIiAtTzIgIiopIDs7CisrICAgICopIENGTEFHU19GT1JfVEFSR0VUPSItTzIgJENGTEFHUyIgOzsKKysgIGVzYWMKKysgIGNhc2UgIiAkQ0ZMQUdTICIgaW4KKysgICAgKiIgLWcgIiogfCAqIiAtZzMgIiopIDs7CisrICAgICopIENGTEFHU19GT1JfVEFSR0VUPSItZyAkQ0ZMQUdTIiA7OworKyAgZXNhYworK2ZpCisrCisrCisraWYgdGVzdCAieCRDWFhGTEFHU19GT1JfVEFSR0VUIiA9IHg7IHRoZW4KKysgIENYWEZMQUdTX0ZPUl9UQVJHRVQ9JENYWEZMQUdTCisrICBjYXNlICIgJENYWEZMQUdTICIgaW4KKysgICAgKiIgLU8yICIqKSA7OworKyAgICAqKSBDWFhGTEFHU19GT1JfVEFSR0VUPSItTzIgJENYWEZMQUdTIiA7OworKyAgZXNhYworKyAgY2FzZSAiICRDWFhGTEFHUyAiIGluCisrICAgICoiIC1nICIqIHwgKiIgLWczICIqKSA7OworKyAgICAqKSBDWFhGTEFHU19GT1JfVEFSR0VUPSItZyAkQ1hYRkxBR1MiIDs7CisrICBlc2FjCisrZmkKKysKKysKKyAjIEhhbmRsZSAtLXdpdGgtaGVhZGVycz1YWFguICBJZiB0aGUgdmFsdWUgaXMgbm90ICJ5ZXMiLCB0aGUgY29udGVudHMgb2YKKyAjIHRoZSBuYW1lZCBkaXJlY3RvcnkgYXJlIGNvcGllZCB0byAkKHRvb2xkaXIpL3N5cy1pbmNsdWRlLgorIGlmIHRlc3QgeCIke3dpdGhfaGVhZGVyc30iICE9IHggJiYgdGVzdCB4IiR7d2l0aF9oZWFkZXJzfSIgIT0geG5vIDsgdGhlbgorLS0gCisyLjguMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yLzAwMTMtNjQtYml0LW11bHRpbGliLWhhY2sucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yLzAwMTMtNjQtYml0LW11bHRpbGliLWhhY2sucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTMxY2RlNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAxMy02NC1iaXQtbXVsdGlsaWItaGFjay5wYXRjaApAQCAtMCwwICsxLDg1IEBACitGcm9tIDdmYzdhMDcwYWM1M2E1NTk1MGExZWFjNzZmMDI4NzdkNDEwNmI0YjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToxMDowNiArMDQwMAorU3ViamVjdDogW1BBVENIIDEzLzQ2XSA2NC1iaXQgbXVsdGlsaWIgaGFjay4KKworR0NDIGhhcyBpbnRlcm5hbCBtdWx0aWxpYiBoYW5kbGluZyBjb2RlIGJ1dCBpdCBhc3N1bWVzIGEgdmVyeSBzcGVjaWZpYyByaWdpZCBkaXJlY3RvcnkKK2xheW91dC4gVGhlIGJ1aWxkIHN5c3RlbSBpbXBsZW1lbnRhdGlvbiBvZiBtdWx0aWxpYiBsYXlvdXQgaXMgdmVyeSBnZW5lcmljIGFuZCBhbGxvd3MKK2NvbXBsZXRlIGN1c3RvbWlzYXRpb24gb2YgdGhlIGxpYnJhcnkgZGlyZWN0b3JpZXMuCisKK1RoaXMgcGF0Y2ggaXMgYSBwYXJ0aWFsIHNvbHV0aW9uIHRvIGFsbG93IGFueSBjdXN0b20gZGlyZWN0b3JpZXMgdG8gYmUgcGFzc2VkIGludG8gZ2NjCithbmQgaGFuZGxlZCBjb3JyZWN0bHkuIEl0IGZvcmNlcyBnY2MgdG8gdXNlIHRoZSBiYXNlX2xpYmRpciAod2hpY2ggaXMgdGhlIGN1cnJlbnQKK2RpcmVjdG9yeSwgIi4iKS4gV2UgbmVlZCB0byBkbyB0aGlzIGZvciBlYWNoIG11bHRpbGliIHRoYXQgaXMgY29uZmlndXJlZCBhcyB3ZSBkb24ndAora25vdyB3aGljaCBjb21waWxlciBvcHRpb25zIG1heSBiZSBiZWluZyBwYXNzZWQgaW50byB0aGUgY29tcGlsZXIuIFNpbmNlIHdlIGhhdmUgYSBjb21waWxlcgorcGVyIG11bGl0bGliIGF0IHRoaXMgcG9pbnQgdGhhdCBpc24ndCBhbiBpc3N1ZS4KKworVGhlIG9uZSBwcm9ibGVtIGlzIHRoZSB0YXJnZXQgY29tcGlsZXIgaXMgb25seSBnb2luZyB0byB3b3JrIGZvciB0aGUgZGVmYXVsdCBtdWx0bGlsaWIgYXQKK3RoaXMgcG9pbnQuIElkZWFsbHkgd2UnZCBmaWd1cmUgb3V0IHdoaWNoIG11bHRpbGlicyB3ZXJlIGJlaW5nIGVuYWJsZWQgd2l0aCB3aGljaCBwYXRocworYW5kIGJlIGFibGUgdG8gcGF0Y2ggdGhlc2UgZW50cmllcyB3aXRoIGEgY29tcGxldGUgc2V0IG9mIGNvcnJlY3QgcGF0aHMgYnV0IHRoaXMgd2UKK2Rvbid0IGhhdmUgc3VjaCBjb2RlIGF0IHRoaXMgcG9pbnQuIFRoaXMgaXMgc29tZXRoaW5nIHRoZSB0YXJnZXQgZ2NjIHJlY2lwZSBzaG91bGQgZG8KK2FuZCBvdmVycmlkZSB0aGVzZSBwbGF0Zm9ybSBkZWZhdWx0cyBpbiBpdHMgYnVpbGQgY29uZmlnLgorCitSUCAxNS84LzExCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBFbHZpcyBEb3dzb24gPGVsdmlzLmRvd3NvbkBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgZ2NjL2NvbmZpZy9pMzg2L3QtbGludXg2NCAgIHwgIDYgKystLS0tCisgZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NCAgIHwgMTAgKysrLS0tLS0tLQorIGdjYy9jb25maWcvcnM2MDAwL3QtbGludXg2NCB8ICA1ICsrLS0tCisgMyBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L3QtbGludXg2NCBiL2djYy9jb25maWcvaTM4Ni90LWxpbnV4NjQKK2luZGV4IGMwY2M4YTMuLjM2NWE1ZDYgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2kzODYvdC1saW51eDY0CisrKysgYi9nY2MvY29uZmlnL2kzODYvdC1saW51eDY0CitAQCAtMzIsNyArMzIsNSBAQAorICMKKyBjb21tYT0sCisgTVVMVElMSUJfT1BUSU9OUyAgICA9ICQoc3Vic3QgJChjb21tYSksLywkKFRNX01VTFRJTElCX0NPTkZJRykpCistTVVMVElMSUJfRElSTkFNRVMgICA9ICQocGF0c3Vic3QgbSUsICUsICQoc3Vic3QgLywgLCQoTVVMVElMSUJfT1BUSU9OUykpKQorLU1VTFRJTElCX09TRElSTkFNRVMgPSBtNjQ9Li4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDp4ODZfNjQtbGludXgtZ251KQorLU1VTFRJTElCX09TRElSTkFNRVMrPSBtMzI9JChpZiAkKHdpbGRjYXJkICQoc2hlbGwgZWNobyAkKFNZU1RFTV9IRUFERVJfRElSKSkvLi4vLi4vdXNyL2xpYjMyKSwuLi9saWIzMiwuLi9saWIpJChjYWxsIGlmX211bHRpYXJjaCw6aTM4Ni1saW51eC1nbnUpCistTVVMVElMSUJfT1NESVJOQU1FUys9IG14MzI9Li4vbGlieDMyJChjYWxsIGlmX211bHRpYXJjaCw6eDg2XzY0LWxpbnV4LWdudXgzMikKKytNVUxUSUxJQl9ESVJOQU1FUyA9IC4gLgorK01VTFRJTElCX09TRElSTkFNRVMgPSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKQorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbWlwcy90LWxpbnV4NjQgYi9nY2MvY29uZmlnL21pcHMvdC1saW51eDY0CitpbmRleCAxNmM4YWRmLi5iOTMyYWNlIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NAorKysrIGIvZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NAorQEAgLTE3LDEwICsxNyw2IEBACisgIyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgCisgTVVMVElMSUJfT1BUSU9OUyA9IG1hYmk9bjMyL21hYmk9MzIvbWFiaT02NAorLU1VTFRJTElCX0RJUk5BTUVTID0gbjMyIDMyIDY0CistTUlQU19FTCA9ICQoaWYgJChmaWx0ZXIgJWVsLCAkKGZpcnN0d29yZCAkKHN1YnN0IC0sICwkKHRhcmdldCkpKSksZWwpCistTUlQU19TT0ZUID0gJChpZiAkKHN0cmlwICQoZmlsdGVyIE1BU0tfU09GVF9GTE9BVF9BQkksICQodGFyZ2V0X2NwdV9kZWZhdWx0KSkgJChmaWx0ZXIgc29mdCwgJCh3aXRoX2Zsb2F0KSkpLHNvZnQpCistTVVMVElMSUJfT1NESVJOQU1FUyA9IFwKKy0JLi4vbGliMzIkKGNhbGwgaWZfbXVsdGlhcmNoLDptaXBzNjQkKE1JUFNfRUwpLWxpbnV4LWdudWFiaW4zMiQoTUlQU19TT0ZUKSkgXAorLQkuLi9saWIkKGNhbGwgaWZfbXVsdGlhcmNoLDptaXBzJChNSVBTX0VMKS1saW51eC1nbnUkKE1JUFNfU09GVCkpIFwKKy0JLi4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDptaXBzNjQkKE1JUFNfRUwpLWxpbnV4LWdudWFiaTY0JChNSVBTX1NPRlQpKQorK01VTFRJTElCX0RJUk5BTUVTID0gLiAuIC4KKytNVUxUSUxJQl9PU0RJUk5BTUVTID0gLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkgLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkgLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkKKysKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQgYi9nY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQKK2luZGV4IGZhNzU1MGIuLjliNWQ5ZWYgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQKKysrKyBiL2djYy9jb25maWcvcnM2MDAwL3QtbGludXg2NAorQEAgLTI2LDEwICsyNiw5IEBACisgIyBNVUxUSUxJQl9PU0RJUk5BTUVTIGFjY29yZGluZyB0byB3aGF0IGlzIGZvdW5kIG9uIHRoZSB0YXJnZXQuCisgCisgTVVMVElMSUJfT1BUSU9OUyAgICA6PSBtNjQvbTMyCistTVVMVElMSUJfRElSTkFNRVMgICA6PSA2NCAzMgorK01VTFRJTElCX0RJUk5BTUVTICAgOj0gLiAuCisgTVVMVElMSUJfRVhUUkFfT1BUUyA6PSAKKy1NVUxUSUxJQl9PU0RJUk5BTUVTIDo9IG02ND0uLi9saWI2NCQoY2FsbCBpZl9tdWx0aWFyY2gsOnBvd2VycGM2NC1saW51eC1nbnUpCistTVVMVElMSUJfT1NESVJOQU1FUyArPSBtMzI9JChpZiAkKHdpbGRjYXJkICQoc2hlbGwgZWNobyAkKFNZU1RFTV9IRUFERVJfRElSKSkvLi4vLi4vdXNyL2xpYjMyKSwuLi9saWIzMiwuLi9saWIpJChjYWxsIGlmX211bHRpYXJjaCw6cG93ZXJwYy1saW51eC1nbnUpCisrTVVMVElMSUJfT1NESVJOQU1FUyA6PSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKQorIAorIHJzNjAwMC1saW51eC5vOiAkKHNyY2RpcikvY29uZmlnL3JzNjAwMC9yczYwMDAtbGludXguYworIAkkKENPTVBJTEUpICQ8CistLSAKKzIuOC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAxNC1vcHRpb25hbC1saWJzdGRjLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDE0LW9wdGlvbmFsLWxpYnN0ZGMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRiMGNjNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAxNC1vcHRpb25hbC1saWJzdGRjLnBhdGNoCkBAIC0wLDAgKzEsMTI1IEBACitGcm9tIDM2Mjc1Zjc5ODFiZGFmOTE5YmJjOWI1MWE3YzdmYWUxZTE5MmFkYjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToxMjo1NiArMDQwMAorU3ViamVjdDogW1BBVENIIDE0LzQ2XSBvcHRpb25hbCBsaWJzdGRjCisKK2djYy1ydW50aW1lIGJ1aWxkcyBsaWJzdGRjKysgc2VwYXJhdGVseSBmcm9tIGdjYy1jcm9zcy0qLiBJdHMgY29uZmlndXJlIHRlc3RzIHVzaW5nIGcrKword2lsbCBub3QgcnVuIGNvcnJlY3RseSBzaW5jZSBieSBkZWZhdWx0IHRoZSBsaW5rZXIgd2lsbCB0cnkgdG8gbGluayBhZ2FpbnN0IGxpYnN0ZGMrKword2hpY2ggc2hvdWxkbid0IGV4aXN0IHlldC4gV2UgbmVlZCBhbiBvcHRpb24gdG8gZGlzYWJsZSAtbHN0ZGMrKworb3B0aW9uIHdoaWxzdCBsZWF2aW5nIC1sYywgLWxnY2MgYW5kIG90aGVyIGF1dG9tYXRpYyBsaWJyYXJ5IGRlcGVuZGVuY2llcyBhZGRlZCBieSBnY2MKK2RyaXZlci4gVGhpcyBwYXRjaCBhZGRzIHN1Y2ggYW4gb3B0aW9uIHdoaWNoIG9ubHkgZGlzYWJsZXMgdGhlIC1sc3RkYysrLgorCitBICJzdGFuZGFyZCIgZ2NjIGJ1aWxkIHVzZXMgeGdjYyBhbmQgaGVuY2UgYXZvaWRzIHRoaXMuIFdlIHNob3VsZCBhc2sgdXBzdHJlYW0gaG93IHRvCitkbyB0aGlzIG9mZmljaWFsbHksIHRoZSBsaWtlbHkgYW5zd2VyIGlzIGRvbid0IGJ1aWxkIGxpYnN0ZGMrKyBzZXBhcmF0ZWx5LgorCitSUCAyOS82LzEwCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCistLS0KKyBnY2MvYy1mYW1pbHkvYy5vcHQgIHwgIDQgKysrKworIGdjYy9jcC9nKytzcGVjLmMgICAgfCAgMSArCisgZ2NjL2RvYy9pbnZva2UudGV4aSB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCisgZ2NjL2djYy5jICAgICAgICAgICB8ICAxICsKKyA0IGZpbGVzIGNoYW5nZWQsIDM3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2djYy9jLWZhbWlseS9jLm9wdCBiL2djYy9jLWZhbWlseS9jLm9wdAoraW5kZXggNGY4Njg3Ni4uNjYwZGE2YyAxMDA2NDQKKy0tLSBhL2djYy9jLWZhbWlseS9jLm9wdAorKysrIGIvZ2NjL2MtZmFtaWx5L2Mub3B0CitAQCAtMTY0Nyw2ICsxNjQ3LDEwIEBAIG5vc3RkaW5jKysKKyBDKysgT2JqQysrCisgRG8gbm90IHNlYXJjaCBzdGFuZGFyZCBzeXN0ZW0gaW5jbHVkZSBkaXJlY3RvcmllcyBmb3IgQysrLgorIAorK25vc3RkbGliKysKKytEcml2ZXIKKytEbyBub3QgbGluayBzdGFuZGFyZCBDKysgcnVudGltZSBsaWJyYXJ5CisrCisgbworIEMgT2JqQyBDKysgT2JqQysrIEpvaW5lZCBTZXBhcmF0ZQorIDsgRG9jdW1lbnRlZCBpbiBjb21tb24ub3B0CitkaWZmIC0tZ2l0IGEvZ2NjL2NwL2crK3NwZWMuYyBiL2djYy9jcC9nKytzcGVjLmMKK2luZGV4IDAzY2JkZTAuLjM2NDI1NDAgMTAwNjQ0CistLS0gYS9nY2MvY3AvZysrc3BlYy5jCisrKysgYi9nY2MvY3AvZysrc3BlYy5jCitAQCAtMTM3LDYgKzEzNyw3IEBAIGxhbmdfc3BlY2lmaWNfZHJpdmVyIChzdHJ1Y3QgY2xfZGVjb2RlZF9vcHRpb24gKippbl9kZWNvZGVkX29wdGlvbnMsCisgICAgICAgc3dpdGNoIChkZWNvZGVkX29wdGlvbnNbaV0ub3B0X2luZGV4KQorIAl7CisgCWNhc2UgT1BUX25vc3RkbGliOgorKwljYXNlIE9QVF9ub3N0ZGxpYl9fOgorIAljYXNlIE9QVF9ub2RlZmF1bHRsaWJzOgorIAkgIGxpYnJhcnkgPSAtMTsKKyAJICBicmVhazsKK2RpZmYgLS1naXQgYS9nY2MvZG9jL2ludm9rZS50ZXhpIGIvZ2NjL2RvYy9pbnZva2UudGV4aQoraW5kZXggOGJiNDllNy4uODRkNjhhYSAxMDA2NDQKKy0tLSBhL2djYy9kb2MvaW52b2tlLnRleGkKKysrKyBiL2djYy9kb2MvaW52b2tlLnRleGkKK0BAIC0yMDcsNiArMjA3LDkgQEAgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9ucy4KKyAtZm5vLXdlYWsgIC1ub3N0ZGluYysrIEBnb2wKKyAtZnZpc2liaWxpdHktaW5saW5lcy1oaWRkZW4gQGdvbAorIC1mdmlzaWJpbGl0eS1tcy1jb21wYXQgQGdvbAorKy1mdnRhYmxlLXZlcmlmeT1AcntbfXN0ZEBye3x9cHJlaW5pdEBye3x9bm9uZUBye119IEBnb2wKKystZnZ0di1jb3VudHMgLWZ2dHYtZGVidWcgQGdvbAorKy1ub3N0ZGxpYisrIEBnb2wKKyAtZmV4dC1udW1lcmljLWxpdGVyYWxzIEBnb2wKKyAtV2FiaT1AdmFye259ICAtV2FiaS10YWcgIC1XY29udmVyc2lvbi1udWxsICAtV2N0b3ItZHRvci1wcml2YWN5IEBnb2wKKyAtV2RlbGV0ZS1ub24tdmlydHVhbC1kdG9yIC1XbGl0ZXJhbC1zdWZmaXggLVdtdWx0aXBsZS1pbmhlcml0YW5jZSBAZ29sCitAQCAtNDcwLDcgKzQ3Myw3IEBAIE9iamVjdGl2ZS1DIGFuZCBPYmplY3RpdmUtQysrIERpYWxlY3RzfS4KKyAtcyAgLXN0YXRpYyAtc3RhdGljLWxpYmdjYyAtc3RhdGljLWxpYnN0ZGMrKyBAZ29sCisgLXN0YXRpYy1saWJhc2FuIC1zdGF0aWMtbGlidHNhbiAtc3RhdGljLWxpYmxzYW4gLXN0YXRpYy1saWJ1YnNhbiBAZ29sCisgLXN0YXRpYy1saWJtcHggLXN0YXRpYy1saWJtcHh3cmFwcGVycyBAZ29sCistLXNoYXJlZCAtc2hhcmVkLWxpYmdjYyAgLXN5bWJvbGljIEBnb2wKKystc2hhcmVkIC1zaGFyZWQtbGliZ2NjICAtc3ltYm9saWMgLW5vc3RkbGliKysgQGdvbAorIC1UIEB2YXJ7c2NyaXB0fSAgLVdsLEB2YXJ7b3B0aW9ufSAgLVhsaW5rZXIgQHZhcntvcHRpb259IEBnb2wKKyAtdSBAdmFye3N5bWJvbH0gLXogQHZhcntrZXl3b3JkfX0KKyAKK0BAIC0xMDYwMSw2ICsxMDYwNCwzMyBAQCBsaWJyYXJ5IHN1YnJvdXRpbmVzLgorIGNvbnN0cnVjdG9ycyBhcmUgY2FsbGVkOyBAcHhyZWZ7Q29sbGVjdDIsLEBjb2Rle2NvbGxlY3QyfSwgZ2NjaW50LAorIEdOVSBDb21waWxlciBDb2xsZWN0aW9uIChHQ0MpIEludGVybmFsc30uKQorIAorK0BpdGVtIC1ub3N0ZGxpYisrCisrQG9waW5kZXggbm9zdGRsaWIrKworK0RvIG5vdCB1c2UgdGhlIHN0YW5kYXJkIHN5c3RlbSBDKysgcnVudGltZSBsaWJyYXJpZXMgd2hlbiBsaW5raW5nLgorK09ubHkgdGhlIGxpYnJhcmllcyB5b3Ugc3BlY2lmeSB3aWxsIGJlIHBhc3NlZCB0byB0aGUgbGlua2VyLgorKworK0BjaW5kZXggQG9wdGlvbnstbGdjY30sIHVzZSB3aXRoIEBvcHRpb257LW5vc3RkbGlifQorK0BjaW5kZXggQG9wdGlvbnstbm9zdGRsaWJ9IGFuZCB1bnJlc29sdmVkIHJlZmVyZW5jZXMKKytAY2luZGV4IHVucmVzb2x2ZWQgcmVmZXJlbmNlcyBhbmQgQG9wdGlvbnstbm9zdGRsaWJ9CisrQGNpbmRleCBAb3B0aW9uey1sZ2NjfSwgdXNlIHdpdGggQG9wdGlvbnstbm9kZWZhdWx0bGlic30KKytAY2luZGV4IEBvcHRpb257LW5vZGVmYXVsdGxpYnN9IGFuZCB1bnJlc29sdmVkIHJlZmVyZW5jZXMKKytAY2luZGV4IHVucmVzb2x2ZWQgcmVmZXJlbmNlcyBhbmQgQG9wdGlvbnstbm9kZWZhdWx0bGlic30KKytPbmUgb2YgdGhlIHN0YW5kYXJkIGxpYnJhcmllcyBieXBhc3NlZCBieSBAb3B0aW9uey1ub3N0ZGxpYn0gYW5kCisrQG9wdGlvbnstbm9kZWZhdWx0bGlic30gaXMgQGZpbGV7bGliZ2NjLmF9LCBhIGxpYnJhcnkgb2YgaW50ZXJuYWwgc3Vicm91dGluZXMKKyt3aGljaCBHQ0MgdXNlcyB0byBvdmVyY29tZSBzaG9ydGNvbWluZ3Mgb2YgcGFydGljdWxhciBtYWNoaW5lcywgb3Igc3BlY2lhbAorK25lZWRzIGZvciBzb21lIGxhbmd1YWdlcy4KKysoQHhyZWZ7SW50ZXJmYWNlLCxJbnRlcmZhY2luZyB0byBHQ0MgT3V0cHV0LGdjY2ludCxHTlUgQ29tcGlsZXIKKytDb2xsZWN0aW9uIChHQ0MpIEludGVybmFsc30sCisrZm9yIG1vcmUgZGlzY3Vzc2lvbiBvZiBAZmlsZXtsaWJnY2MuYX0uKQorK0luIG1vc3QgY2FzZXMsIHlvdSBuZWVkIEBmaWxle2xpYmdjYy5hfSBldmVuIHdoZW4geW91IHdhbnQgdG8gYXZvaWQKKytvdGhlciBzdGFuZGFyZCBsaWJyYXJpZXMuICBJbiBvdGhlciB3b3Jkcywgd2hlbiB5b3Ugc3BlY2lmeSBAb3B0aW9uey1ub3N0ZGxpYn0KKytvciBAb3B0aW9uey1ub2RlZmF1bHRsaWJzfSB5b3Ugc2hvdWxkIHVzdWFsbHkgc3BlY2lmeSBAb3B0aW9uey1sZ2NjfSBhcyB3ZWxsLgorK1RoaXMgZW5zdXJlcyB0aGF0IHlvdSBoYXZlIG5vIHVucmVzb2x2ZWQgcmVmZXJlbmNlcyB0byBpbnRlcm5hbCBHQ0MKKytsaWJyYXJ5IHN1YnJvdXRpbmVzLgorKyhBbiBleGFtcGxlIG9mIHN1Y2ggYW4gaW50ZXJuYWwgc3Vicm91dGluZSBpcyBAY29kZXtfX21haW59LCB1c2VkIHRvIGVuc3VyZSBDKysKKytjb25zdHJ1Y3RvcnMgYXJlIGNhbGxlZDsgQHB4cmVme0NvbGxlY3QyLCxAY29kZXtjb2xsZWN0Mn0sIGdjY2ludCwKKytHTlUgQ29tcGlsZXIgQ29sbGVjdGlvbiAoR0NDKSBJbnRlcm5hbHN9LikKKysKKyBAaXRlbSAtcGllCisgQG9waW5kZXggcGllCisgUHJvZHVjZSBhIHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUgb24gdGFyZ2V0cyB0aGF0IHN1cHBvcnQgaXQuCitkaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCitpbmRleCA0Y2ZlZjdmLi5kYTBiNDgyIDEwMDY0NAorLS0tIGEvZ2NjL2djYy5jCisrKysgYi9nY2MvZ2NjLmMKK0BAIC0xMDI4LDYgKzEwMjgsNyBAQCBwcm9wZXIgcG9zaXRpb24gYW1vbmcgdGhlIG90aGVyIG91dHB1dCBmaWxlcy4gICovCisgICAgICUobWZsaWIpICIgU1RBQ0tfU1BMSVRfU1BFQyAiXAorICAgICAle2Zwcm9maWxlLWFyY3N8ZnByb2ZpbGUtZ2VuZXJhdGUqfGNvdmVyYWdlOi1sZ2Nvdn0gIiBTQU5JVElaRVJfU1BFQyAiIFwKKyAgICAgJXshbm9zdGRsaWI6JXshbm9kZWZhdWx0bGliczolKGxpbmtfc3NwKSAlKGxpbmtfZ2NjX2Nfc2VxdWVuY2UpfX1cCisrICAgICV7IW5vc3RkbGliKys6fVwKKyAgICAgJXshbm9zdGRsaWI6JXshbm9zdGFydGZpbGVzOiVFfX0gJXtUKn0gIFxuJShwb3N0X2xpbmspIH19fX19fSIKKyAjZW5kaWYKKyAKKy0tIAorMi44LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDE1LWdjYy1kaXNhYmxlLU1BU0tfUkVMQVhfUElDX0NBTExTLWJpdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAxNS1nY2MtZGlzYWJsZS1NQVNLX1JFTEFYX1BJQ19DQUxMUy1iaXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmZjNzM0NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAxNS1nY2MtZGlzYWJsZS1NQVNLX1JFTEFYX1BJQ19DQUxMUy1iaXQucGF0Y2gKQEAgLTAsMCArMSw1OSBAQAorRnJvbSA5MzQ2ZjYwNDJkOGY3Zjg1YTc1Y2EyYWYxNWYzYjhkMjM0OTg1MTY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MTQ6MjAgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxNS80Nl0gZ2NjOiBkaXNhYmxlIE1BU0tfUkVMQVhfUElDX0NBTExTIGJpdAorCitUaGUgbmV3IGZlYXR1cmUgYWRkZWQgYWZ0ZXIgNC4zLjMKKyJodHRwOi8vd3d3LnB1YmJzLm5ldC8yMDA5MDkvZ2NjLzk0MDQ4LXBhdGNoLWFkZC1zdXBwb3J0LWZvci1ybWlwc2phbHIuaHRtbCIKK3dpbGwgY2F1c2UgY2MxcGx1cyBlYXQgdXAgYWxsIHRoZSBzeXN0ZW0gbWVtb3J5IHdoZW4gYnVpbGQgd2Via2l0LWd0ay4KK1RoZSBmdW5jdGlvbiBtaXBzX2dldF9waWNfY2FsbF9zeW1ib2wga2VlcHMgb24gcmVjdXJzaXZlbHkgY2FsbGluZyBpdHNlbGYuCitEaXNhYmxlIHRoaXMgZmVhdHVyZSB0byB3YWxrIGFzaWRlIHRoZSBidWcuCisKK1NpZ25lZC1vZmYtYnk6IERvbmd4aWFvIFh1IDxkb25neGlhby54dUBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCistLS0KKyBnY2MvY29uZmlndXJlICAgIHwgNyAtLS0tLS0tCisgZ2NjL2NvbmZpZ3VyZS5hYyB8IDcgLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMTQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQoraW5kZXggOGY4MzE1Mi4uNWU3MmYxNyAxMDA3NTUKKy0tLSBhL2djYy9jb25maWd1cmUKKysrKyBiL2djYy9jb25maWd1cmUKK0BAIC0yNzAxOCwxMyArMjcwMTgsNiBAQCAkYXNfZWNob19uICJjaGVja2luZyBhc3NlbWJsZXIgYW5kIGxpbmtlciBmb3IgZXhwbGljaXQgSkFMUiByZWxvY2F0aW9uLi4uICIgPiY2OworICAgICAgICAgcm0gLWYgY29uZnRlc3QuKgorICAgICAgIGZpCisgICAgIGZpCistICAgIGlmIHRlc3QgJGdjY19jdl9hc19sZF9qYWxyX3JlbG9jID0geWVzOyB0aGVuCistICAgICAgaWYgdGVzdCB4JHRhcmdldF9jcHVfZGVmYXVsdCA9IHg7IHRoZW4KKy0gICAgICAgIHRhcmdldF9jcHVfZGVmYXVsdD1NQVNLX1JFTEFYX1BJQ19DQUxMUworLSAgICAgIGVsc2UKKy0gICAgICAgIHRhcmdldF9jcHVfZGVmYXVsdD0iKCR0YXJnZXRfY3B1X2RlZmF1bHQpfE1BU0tfUkVMQVhfUElDX0NBTExTIgorLSAgICAgIGZpCistICAgIGZpCisgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2NjX2N2X2FzX2xkX2phbHJfcmVsb2MiID4mNQorICRhc19lY2hvICIkZ2NjX2N2X2FzX2xkX2phbHJfcmVsb2MiID4mNjsgfQorIAorZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCitpbmRleCAwZmNjYWVmLi5kZDhmNmZhIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYworKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYworQEAgLTQ1MjIsMTMgKzQ1MjIsNiBAQCB4OgorICAgICAgICAgcm0gLWYgY29uZnRlc3QuKgorICAgICAgIGZpCisgICAgIGZpCistICAgIGlmIHRlc3QgJGdjY19jdl9hc19sZF9qYWxyX3JlbG9jID0geWVzOyB0aGVuCistICAgICAgaWYgdGVzdCB4JHRhcmdldF9jcHVfZGVmYXVsdCA9IHg7IHRoZW4KKy0gICAgICAgIHRhcmdldF9jcHVfZGVmYXVsdD1NQVNLX1JFTEFYX1BJQ19DQUxMUworLSAgICAgIGVsc2UKKy0gICAgICAgIHRhcmdldF9jcHVfZGVmYXVsdD0iKCR0YXJnZXRfY3B1X2RlZmF1bHQpfE1BU0tfUkVMQVhfUElDX0NBTExTIgorLSAgICAgIGZpCistICAgIGZpCisgICAgIEFDX01TR19SRVNVTFQoJGdjY19jdl9hc19sZF9qYWxyX3JlbG9jKQorIAorICAgICBBQ19DQUNIRV9DSEVDSyhbbGlua2VyIGZvciAuZWhfZnJhbWUgcGVyc29uYWxpdHkgcmVsYXhhdGlvbl0sCistLSAKKzIuOC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAxNi1DT0xMRUNUX0dDQ19PUFRJT05TLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDE2LUNPTExFQ1RfR0NDX09QVElPTlMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE1NDg2NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAxNi1DT0xMRUNUX0dDQ19PUFRJT05TLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gMTAzM2JjMmQ0ZWZjNWMzMDFiYjgyMmI2MDdhNjczZjViMTBjYzY5ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjE2OjI4ICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMTYvNDZdIENPTExFQ1RfR0NDX09QVElPTlMKKworVGhpcyBwYXRjaCBhZGRzIC0tc3lzcm9vdCBpbnRvIENPTExFQ1RfR0NDX09QVElPTlMgd2hpY2ggaXMgdXNlZCB0bworaW52b2tlIGNvbGxlY3QyLgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGdjYy9nY2MuYyB8IDkgKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCitpbmRleCBkYTBiNDgyLi43Y2ExMjlmIDEwMDY0NAorLS0tIGEvZ2NjL2djYy5jCisrKysgYi9nY2MvZ2NjLmMKK0BAIC00NTkxLDYgKzQ1OTEsMTUgQEAgc2V0X2NvbGxlY3RfZ2NjX29wdGlvbnMgKHZvaWQpCisgCQlzaXplb2YgKCJDT0xMRUNUX0dDQ19PUFRJT05TPSIpIC0gMSk7CisgCisgICBmaXJzdF90aW1lID0gVFJVRTsKKysjaWZkZWYgSEFWRV9MRF9TWVNST09UCisrICBpZiAodGFyZ2V0X3N5c3RlbV9yb290X2NoYW5nZWQgJiYgdGFyZ2V0X3N5c3RlbV9yb290KQorKyAgICB7CisrICAgICAgb2JzdGFja19ncm93ICgmY29sbGVjdF9vYnN0YWNrLCAiJy0tc3lzcm9vdD0iLCBzaXplb2YoIictLXN5c3Jvb3Q9IiktMSk7CisrICAgICAgb2JzdGFja19ncm93ICgmY29sbGVjdF9vYnN0YWNrLCB0YXJnZXRfc3lzdGVtX3Jvb3Qsc3RybGVuKHRhcmdldF9zeXN0ZW1fcm9vdCkpOworKyAgICAgIG9ic3RhY2tfZ3JvdyAoJmNvbGxlY3Rfb2JzdGFjaywgIiciLCAxKTsKKysgICAgICBmaXJzdF90aW1lID0gRkFMU0U7CisrICAgIH0KKysjZW5kaWYKKyAgIGZvciAoaSA9IDA7IChpbnQpIGkgPCBuX3N3aXRjaGVzOyBpKyspCisgICAgIHsKKyAgICAgICBjb25zdCBjaGFyICpjb25zdCAqYXJnczsKKy0tIAorMi44LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDE3LVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDE3LVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkYmFiZDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yLzAwMTctVXNlLXRoZS1kZWZhdWx0cy5oLWluLUItaW5zdGVhZC1vZi1TLWFuZC10LW9lLWluLUIucGF0Y2gKQEAgLTAsMCArMSw5NiBAQAorRnJvbSA2NzEyM2EzMDY4ODBhZjk5N2E5OWFlNTE0Njc3YzJkYTQ5NzNiZDFhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MTc6MjUgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxNy80Nl0gVXNlIHRoZSBkZWZhdWx0cy5oIGluICR7Qn0gaW5zdGVhZCBvZiAke1N9LCBhbmQgdC1vZSBpbgorICR7Qn0KKworVXNlIHRoZSBkZWZhdWx0cy5oIGluICR7Qn0gaW5zdGVhZCBvZiAke1N9LCBhbmQgdC1vZSBpbiAke0J9LCBzbyB0aGF0Cit0aGUgc291cmNlIGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBnY2MtY3Jvc3MtaW5pdGlhbCwKK2djYy1jcm9zcy1pbnRlcm1lZGlhdGUsIGdjYy1jcm9zcywgZ2NjLXJ1bnRpbWUsIGFuZCBhbHNvIHRoZSBzZGsgYnVpbGQuCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitXaGlsZSBjb21waWxpbmcgZ2NjLWNyb3Nzc2RrLWluaXRpYWwteDg2XzY0IG9uIHNvbWUgaG9zdCwgdGhlcmUgaXMKK29jY2FzaW9uYWxseSBmYWlsdXJlIHRoYXQgdGVzdCB0aGUgZXhpc3RhbmNlIG9mIGRlZmF1bHQuaCBkb2Vzbid0Cit3b3JrLCB0aGUgcmVhc29uIGlzIHRtX2luY2x1ZGVfbGlzdD0nKiogZGVmYXVsdHMuaCcgcmF0aGVyIHRoYW4KK3RtX2luY2x1ZGVfbGlzdD0nKiogLi9kZWZhdWx0cy5oJworCitTbyB3ZSBhZGQgdGhlIHRlc3QgY29uZGl0aW9uIGZvciB0aGlzIHNpdHVhdGlvbi4KK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGdjYy9NYWtlZmlsZS5pbiAgfCAyICstCisgZ2NjL2NvbmZpZ3VyZSAgICB8IDQgKystLQorIGdjYy9jb25maWd1cmUuYWMgfCA0ICsrLS0KKyBnY2MvbWtjb25maWcuc2ggIHwgNCArKy0tCisgNCBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvTWFrZWZpbGUuaW4gYi9nY2MvTWFrZWZpbGUuaW4KK2luZGV4IDZjNWFkYzAuLjlhMWQ0NjYgMTAwNjQ0CistLS0gYS9nY2MvTWFrZWZpbGUuaW4KKysrKyBiL2djYy9NYWtlZmlsZS5pbgorQEAgLTUxNyw3ICs1MTcsNyBAQCBUQVJHRVRfU1lTVEVNX1JPT1QgPSBAVEFSR0VUX1NZU1RFTV9ST09UQAorIFRBUkdFVF9TWVNURU1fUk9PVF9ERUZJTkUgPSBAVEFSR0VUX1NZU1RFTV9ST09UX0RFRklORUAKKyAKKyB4bWFrZV9maWxlPUB4bWFrZV9maWxlQAorLXRtYWtlX2ZpbGU9QHRtYWtlX2ZpbGVACisrdG1ha2VfZmlsZT1AdG1ha2VfZmlsZUAgLi90LW9lCisgVE1fRU5ESUFOX0NPTkZJRz1AVE1fRU5ESUFOX0NPTkZJR0AKKyBUTV9NVUxUSUxJQl9DT05GSUc9QFRNX01VTFRJTElCX0NPTkZJR0AKKyBUTV9NVUxUSUxJQl9FWENFUFRJT05TX0NPTkZJRz1AVE1fTVVMVElMSUJfRVhDRVBUSU9OU19DT05GSUdACitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKK2luZGV4IDVlNzJmMTcuLjM4OWI2ZDUgMTAwNzU1CistLS0gYS9nY2MvY29uZmlndXJlCisrKysgYi9nY2MvY29uZmlndXJlCitAQCAtMTIxMzAsOCArMTIxMzAsOCBAQCBmb3IgZiBpbiAkdG1fZmlsZTsgZG8KKyAgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gJGYiCisgICAgICAgIDs7CisgICAgIGRlZmF1bHRzLmggKQorLSAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSBcJChzcmNkaXIpLyRmIgorLSAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAkZiIKKysgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi8kZiIKKysgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gLi8kZiIKKyAgICAgICAgOzsKKyAgICAgKiApCisgICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IFwkKHNyY2RpcikvY29uZmlnLyRmIgorZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCitpbmRleCBkZDhmNmZhLi45MWFjODAwIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYworKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYworQEAgLTE4ODMsOCArMTg4Myw4IEBAIGZvciBmIGluICR0bV9maWxlOyBkbworICAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAkZiIKKyAgICAgICAgOzsKKyAgICAgZGVmYXVsdHMuaCApCistICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IFwkKHNyY2RpcikvJGYiCistICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9ICRmIgorKyAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSAuLyRmIgorKyAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAuLyRmIgorICAgICAgICA7OworICAgICAqICkKKyAgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gXCQoc3JjZGlyKS9jb25maWcvJGYiCitkaWZmIC0tZ2l0IGEvZ2NjL21rY29uZmlnLnNoIGIvZ2NjL21rY29uZmlnLnNoCitpbmRleCA2N2RmYWM2Li5iNzNlMDhkIDEwMDY0NAorLS0tIGEvZ2NjL21rY29uZmlnLnNoCisrKysgYi9nY2MvbWtjb25maWcuc2gKK0BAIC03Nyw3ICs3Nyw3IEBAIGlmIFsgLW4gIiRIRUFERVJTIiBdOyB0aGVuCisgICAgIGlmIFsgJCMgLWdlIDEgXTsgdGhlbgorIAllY2hvICcjaWZkZWYgSU5fR0NDJyA+PiAke291dHB1dH1UCisgCWZvciBmaWxlIGluICIkQCI7IGRvCistCSAgICBpZiB0ZXN0IHgiJGZpbGUiID0geCJkZWZhdWx0cy5oIjsgdGhlbgorKwkgICAgaWYgdGVzdCB4IiRmaWxlIiA9IHgiLi9kZWZhdWx0cy5oIiAtbyB4IiRmaWxlIiA9IHgiZGVmYXVsdHMuaCI7IHRoZW4KKyAJCXBvc3Rwb25lX2RlZmF1bHRzX2g9InllcyIKKyAJICAgIGVsc2UKKyAJCWVjaG8gIiMgaW5jbHVkZSBcIiRmaWxlXCIiID4+ICR7b3V0cHV0fVQKK0BAIC0xMDksNyArMTA5LDcgQEAgZXNhYworIAorICMgSWYgd2UgcG9zdHBvbmVkIGluY2x1ZGluZyBkZWZhdWx0cy5oLCBhZGQgdGhlICNpbmNsdWRlIG5vdy4KKyBpZiB0ZXN0IHgiJHBvc3Rwb25lX2RlZmF1bHRzX2giID0geCJ5ZXMiOyB0aGVuCistICAgIGVjaG8gIiMgaW5jbHVkZSBcImRlZmF1bHRzLmhcIiIgPj4gJHtvdXRwdXR9VAorKyAgICBlY2hvICIjIGluY2x1ZGUgXCIuL2RlZmF1bHRzLmhcIiIgPj4gJHtvdXRwdXR9VAorIGZpCisgCisgIyBBZGQgbXVsdGlwbGUgaW5jbHVzaW9uIHByb3RlY3Rpb24gZ3VhcmQsIHBhcnQgdHdvLgorLS0gCisyLjguMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yLzAwMTgtZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yLzAwMTgtZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQzZDg5ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAxOC1mb3J0cmFuLWNyb3NzLWNvbXBpbGUtaGFjay5wYXRjaApAQCAtMCwwICsxLDQ2IEBACitGcm9tIGUzNjBkYzNlMGYxZTBiOWIwMDFlZjcyMmZjZjY2ZjgxMjBhMDNkYmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyMDowMSArMDQwMAorU3ViamVjdDogW1BBVENIIDE4LzQ2XSBmb3J0cmFuIGNyb3NzLWNvbXBpbGUgaGFjay4KKworKiBGb3J0cmFuIHdvdWxkIGhhdmUgc2VhcmNoZWQgZm9yIGFybS1hbmdzdHJvbS1nbnVlYWJpLWdmb3J0cmFuIGJ1dCB3b3VsZCBoYXZlIHVzZWQKK3VzZWQgZ2ZvcnRhbi4gRm9yIGdjY180LjIuMi5iYiB3ZSB3YW50IHRvIHVzZSB0aGUgZ2ZvcnRyYW4gY29tcGlsZXIgZnJvbSBvdXIgY3Jvc3MKK2RpcmVjdG9yeS4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKy0tLQorIGxpYmdmb3J0cmFuL2NvbmZpZ3VyZSAgICB8IDIgKy0KKyBsaWJnZm9ydHJhbi9jb25maWd1cmUuYWMgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJnZm9ydHJhbi9jb25maWd1cmUgYi9saWJnZm9ydHJhbi9jb25maWd1cmUKK2luZGV4IGY3NDZmNmYuLmI0ZjMyNzggMTAwNzU1CistLS0gYS9saWJnZm9ydHJhbi9jb25maWd1cmUKKysrKyBiL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZQorQEAgLTEyNzM0LDcgKzEyNzM0LDcgQEAgZXNhYworIAorICMgV2UgbmVlZCBnZm9ydHJhbiB0byBjb21waWxlIHBhcnRzIG9mIHRoZSBsaWJyYXJ5CisgI0FDX1BST0dfRkMoZ2ZvcnRyYW4pCistRkM9IiRHRk9SVFJBTiIKKysjRkM9IiRHRk9SVFJBTiIKKyBhY19leHQ9JHthY19mY19zcmNleHQtZn0KKyBhY19jb21waWxlPSckRkMgLWMgJEZDRkxBR1MgJGFjX2ZjZmxhZ3Nfc3JjZXh0IGNvbmZ0ZXN0LiRhY19leHQgPiY1JworIGFjX2xpbms9JyRGQyAtbyBjb25mdGVzdCRhY19leGVleHQgJEZDRkxBR1MgJExERkxBR1MgJGFjX2ZjZmxhZ3Nfc3JjZXh0IGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZS5hYyBiL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZS5hYworaW5kZXggOGYzNzdiYi4uNjc3MTBiNSAxMDA2NDQKKy0tLSBhL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZS5hYworKysrIGIvbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjCitAQCAtMjQwLDcgKzI0MCw3IEBAIEFDX1NVQlNUKGVuYWJsZV9zdGF0aWMpCisgCisgIyBXZSBuZWVkIGdmb3J0cmFuIHRvIGNvbXBpbGUgcGFydHMgb2YgdGhlIGxpYnJhcnkKKyAjQUNfUFJPR19GQyhnZm9ydHJhbikKKy1GQz0iJEdGT1JUUkFOIgorKyNGQz0iJEdGT1JUUkFOIgorIEFDX1BST0dfRkMoZ2ZvcnRyYW4pCisgCisgIyBleHRyYSBMRCBGbGFncyB3aGljaCBhcmUgcmVxdWlyZWQgZm9yIHRhcmdldHMKKy0tIAorMi44LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDE5LWNwcC1ob25vci1zeXNyb290LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDE5LWNwcC1ob25vci1zeXNyb290LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxN2E1ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yLzAwMTktY3BwLWhvbm9yLXN5c3Jvb3QucGF0Y2gKQEAgLTAsMCArMSw1NCBAQAorRnJvbSA5OGQ5YzBjMWI1NTUyMjk0YjIxMzBmNzMwNGJmYjUyMmRhMzIzNDQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjI6MDAgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxOS80Nl0gY3BwOiBob25vciBzeXNyb290LgorCitDdXJyZW50bHksIGlmIHRoZSBnY2MgdG9vbGNoYWluIGlzIHJlbG9jYXRlZCBhbmQgaW5zdGFsbGVkIGZyb20gc3N0YXRlLCB0aGVuIHlvdSB0cnkgYW5kIGNvbXBpbGUKK3ByZXByb2Nlc3NlZCBzb3VyY2UgKC5pIG9yIC5paSBmaWxlcyksIHRoZSBjb21waWxlciB3aWxsIHRyeSBhbmQgYWNjZXNzIHRoZSBidWlsdGluIHN5c3Jvb3QgbG9jYXRpb24KK3JhdGhlciB0aGFuIHRoZSAtLXN5c3Jvb3Qgb3B0aW9uIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZGxpbmUuIElmIGFjY2VzcyB0byB0aGF0IGRpcmVjdG9yeSBpcworcGVybWlzc2lvbiBkZW5pZWQgKHVucmVhZGFibGUpLCBnY2Mgd2lsbCBlcnJvci4KKworVGhpcyBoYXBwZW5zIHdoZW4gY2NhY2hlIGlzIGluIHVzZSBkdWUgdG8gdGhlIGZhY3QgaXQgdXNlcyBwcmVwcm9jZXNzZWQgc291cmNlIGZpbGVzLgorCitUaGUgZml4IGJlbG93IGFkZHMgJUkgdG8gdGhlIGNwcC1vdXRwdXQgc3BlYyBtYWNybyBzbyB0aGUgZGVmYXVsdCBzdWJzdGl0dXRpb25zIGZvciAtaXByZWZpeCwKKy1pc3lzdGVtLCAtaXN5c3Jvb3QgaGFwcGVuIGFuZCB0aGUgY29ycmVjdCBzeXNyb290IGlzIHVzZWQuCisKK1tZT0NUTyAjMjA3NF0KKworUlAgMjAxMi8wNC8xMworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGdjYy9jcC9sYW5nLXNwZWNzLmggfCAyICstCisgZ2NjL2djYy5jICAgICAgICAgICB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9jcC9sYW5nLXNwZWNzLmggYi9nY2MvY3AvbGFuZy1zcGVjcy5oCitpbmRleCA5NzA3ZmFjLi5mZTQ4N2EyIDEwMDY0NAorLS0tIGEvZ2NjL2NwL2xhbmctc3BlY3MuaAorKysrIGIvZ2NjL2NwL2xhbmctc3BlY3MuaAorQEAgLTY0LDUgKzY0LDUgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKyAgIHsiLmlpIiwgIkBjKystY3BwLW91dHB1dCIsIDAsIDAsIDB9LAorICAgeyJAYysrLWNwcC1vdXRwdXQiLAorICAgICIleyFNOiV7IU1NOiV7IUU6XAorLSAgICBjYzFwbHVzIC1mcHJlcHJvY2Vzc2VkICVpICUoY2MxX29wdGlvbnMpICUyXAorKyAgICBjYzFwbHVzIC1mcHJlcHJvY2Vzc2VkICVpICVJICUoY2MxX29wdGlvbnMpICUyXAorICAgICAleyFmc3ludGF4LW9ubHk6JShpbnZva2VfYXMpfX19fSIsIDAsIDAsIDB9LAorZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYworaW5kZXggN2NhMTI5Zi4uMDRmYTgxZCAxMDA2NDQKKy0tLSBhL2djYy9nY2MuYworKysrIGIvZ2NjL2djYy5jCitAQCAtMTMyOSw3ICsxMzI5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjb21waWxlciBkZWZhdWx0X2NvbXBpbGVyc1tdID0KKyAJCQkJCSAgICVXe28qOi0tb3V0cHV0LXBjaD0lKn19JVZ9fX19fX19IiwgMCwgMCwgMH0sCisgICB7Ii5pIiwgIkBjcHAtb3V0cHV0IiwgMCwgMCwgMH0sCisgICB7IkBjcHAtb3V0cHV0IiwKKy0gICAiJXshTToleyFNTToleyFFOmNjMSAtZnByZXByb2Nlc3NlZCAlaSAlKGNjMV9vcHRpb25zKSAleyFmc3ludGF4LW9ubHk6JShpbnZva2VfYXMpfX19fSIsIDAsIDAsIDB9LAorKyAgICIleyFNOiV7IU1NOiV7IUU6Y2MxIC1mcHJlcHJvY2Vzc2VkICVpICVJICUoY2MxX29wdGlvbnMpICV7IWZzeW50YXgtb25seTolKGludm9rZV9hcyl9fX19IiwgMCwgMCwgMH0sCisgICB7Ii5zIiwgIkBhc3NlbWJsZXIiLCAwLCAwLCAwfSwKKyAgIHsiQGFzc2VtYmxlciIsCisgICAgIiV7IU06JXshTU06JXshRToleyFTOmFzICUoYXNtX2RlYnVnKSAlKGFzbV9vcHRpb25zKSAlaSAlQSB9fX19IiwgMCwgMCwgMH0sCistLSAKKzIuOC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAyMC1NSVBTNjQtRGVmYXVsdC10by1ONjQtQUJJLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDIwLU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmE2MTJmNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAyMC1NSVBTNjQtRGVmYXVsdC10by1ONjQtQUJJLnBhdGNoCkBAIC0wLDAgKzEsNTcgQEAKK0Zyb20gMWYxNTQ0N2ZiY2Y2NTE0MjYyN2FmOGE5Njk0NzYxNTM0ZGE4ZDBkMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjIzOjA4ICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMjAvNDZdIE1JUFM2NDogRGVmYXVsdCB0byBONjQgQUJJCisKK01JUFM2NCBkZWZhdWx0cyB0byBuMzIgQUJJLCB0aGlzIHBhdGNoIG1ha2VzIGl0CitzbyB0aGF0IGl0IGRlZmF1bHRzIHRvIE42NCBBQkkKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBjb25maWcgc3BlY2lmaWNdCistLS0KKyBnY2MvY29uZmlnLmdjYyB8IDEwICsrKysrLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy5nY2MgYi9nY2MvY29uZmlnLmdjYworaW5kZXggZjY2ZTQ4Yy4uOWM2ZDE1NiAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcuZ2NjCisrKysgYi9nY2MvY29uZmlnLmdjYworQEAgLTIwNjUsMjkgKzIwNjUsMjkgQEAgbWlwcyotKi1saW51eCopCQkJCSMgTGludXggTUlQUywgZWl0aGVyIGVuZGlhbi4KKyAJCQlkZWZhdWx0X21pcHNfYXJjaD1taXBzMzIKKyAJCQk7OworIAkJbWlwczY0ZWwtc3QtbGludXgtZ251KQorLQkJCWRlZmF1bHRfbWlwc19hYmk9bjMyCisrCQkJZGVmYXVsdF9taXBzX2FiaT02NAorIAkJCXRtX2ZpbGU9IiR7dG1fZmlsZX0gbWlwcy9zdC5oIgorIAkJCXRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZX0gbWlwcy90LXN0IgorIAkJCWVuYWJsZV9taXBzX211bHRpbGlicz0ieWVzIgorIAkJCTs7CisgCQltaXBzNjRvY3Rlb24qLSotbGludXgqKQorLQkJCWRlZmF1bHRfbWlwc19hYmk9bjMyCisrCQkJZGVmYXVsdF9taXBzX2FiaT02NAorIAkJCXRtX2RlZmluZXM9IiR7dG1fZGVmaW5lc30gTUlQU19DUFVfU1RSSU5HX0RFRkFVTFQ9XFxcIm9jdGVvblxcXCIiCisgCQkJdGFyZ2V0X2NwdV9kZWZhdWx0PU1BU0tfU09GVF9GTE9BVF9BQkkKKyAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKKyAJCQk7OworIAkJbWlwc2lzYTY0cjYqLSotbGludXgqKQorLQkJCWRlZmF1bHRfbWlwc19hYmk9bjMyCisrCQkJZGVmYXVsdF9taXBzX2FiaT02NAorIAkJCWRlZmF1bHRfbWlwc19hcmNoPW1pcHM2NHI2CisgCQkJZW5hYmxlX21pcHNfbXVsdGlsaWJzPSJ5ZXMiCisgCQkJOzsKKyAJCW1pcHNpc2E2NHIyKi0qLWxpbnV4KikKKy0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgorKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKKyAJCQlkZWZhdWx0X21pcHNfYXJjaD1taXBzNjRyMgorIAkJCWVuYWJsZV9taXBzX211bHRpbGlicz0ieWVzIgorIAkJCTs7CisgCQltaXBzNjQqLSotbGludXgqIHwgbWlwc2lzYTY0Ki0qLWxpbnV4KikKKy0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgorKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKKyAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKKyAJCQk7OworIAllc2FjCistLSAKKzIuOC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAyMS1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDIxLURlZmluZS1HTElCQ19EWU5BTUlDX0xJTktFUi1hbmQtVUNMSUJDX0RZTkFNSUNfTElOS0UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjY3NWNlMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAyMS1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoCkBAIC0wLDAgKzEsMjM0IEBACitGcm9tIDlmNzNjODkxOGI2M2U2YTFjOWI3OTM4NGZhYzQxMWQxMDU2ZWVjMWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyNDo1MCArMDQwMAorU3ViamVjdDogW1BBVENIIDIxLzQ2XSBEZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgYW5kIFVDTElCQ19EWU5BTUlDX0xJTktFUgorIHJlbGF0aXZlIHRvIFNZU1RFTUxJQlNfRElSCisKK1RoaXMgcGF0Y2ggZGVmaW5lcyBHTElCQ19EWU5BTUlDX0xJTktFUiBhbmQgVUNMSUJDX0RZTkFNSUNfTElOS0VSCityZWxhdGl2ZSB0byBTWVNURU1MSUJTX0RJUiB3aGljaCBjYW4gYmUgc2V0IGluIGdlbmVyYXRlZCBoZWFkZXJzCitUaGlzIGJyZWFrcyB0aGUgYXNzdW1wdGlvbiBvZiBoYXJkY29kZWQgbXVsdGlsaWIgaW4gZ2NjCitDaGFuZ2UgaXMgb25seSBmb3IgdGhlIHN1cHBvcnRlZCBhcmNoaXRlY3R1cmVzIGluIE9FIGluY2x1ZGluZworU0gsIHNwYXJjLCBhbHBoYSBmb3IgcG9zc2libGUgZnV0dXJlIHN1cHBvcnQgKGlmIGFueSkKKworUmVtb3ZlcyB0aGUgZG9faGVhZGVyZml4IHRhc2sgaW4gbWV0YWRhdGEKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBjb25maWd1cmF0aW9uXQorLS0tCisgZ2NjL2NvbmZpZy9hbHBoYS9saW51eC1lbGYuaCB8ICA0ICsrLS0KKyBnY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmggIHwgIDQgKystLQorIGdjYy9jb25maWcvYXJtL2xpbnV4LWVsZi5oICAgfCAgMiArLQorIGdjYy9jb25maWcvaTM4Ni9saW51eC5oICAgICAgfCAgMiArLQorIGdjYy9jb25maWcvaTM4Ni9saW51eDY0LmggICAgfCAgNiArKystLS0KKyBnY2MvY29uZmlnL2xpbnV4LmggICAgICAgICAgIHwgIDggKysrKy0tLS0KKyBnY2MvY29uZmlnL21pcHMvbGludXguaCAgICAgIHwgMTIgKysrKysrLS0tLS0tCisgZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oICB8IDE2ICsrKysrKy0tLS0tLS0tLS0KKyBnY2MvY29uZmlnL3NoL2xpbnV4LmggICAgICAgIHwgIDIgKy0KKyBnY2MvY29uZmlnL3NwYXJjL2xpbnV4LmggICAgIHwgIDIgKy0KKyBnY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaCAgIHwgIDQgKystLQorIDExIGZpbGVzIGNoYW5nZWQsIDI5IGluc2VydGlvbnMoKyksIDMzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hbHBoYS9saW51eC1lbGYuaCBiL2djYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmgKK2luZGV4IGEwNzY0ZDMuLjAyZjdhN2MgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oCisrKysgYi9nY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oCitAQCAtMjMsOCArMjMsOCBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorICNkZWZpbmUgRVhUUkFfU1BFQ1MgXAorIHsgImVsZl9keW5hbWljX2xpbmtlciIsIEVMRl9EWU5BTUlDX0xJTktFUiB9LAorIAorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIJIi9saWIvbGQtbGludXguc28uMiIKKy0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC11Q2xpYmMuc28uMCIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSCVNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgorKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSICBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCisgI2lmIERFRkFVTFRfTElCQyA9PSBMSUJDX1VDTElCQworICNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUpICIle21nbGliYzoiIEcgIjs6IiBVICJ9IgorICNlbGlmIERFRkFVTFRfTElCQyA9PSBMSUJDX0dMSUJDCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCitpbmRleCBhY2U4NDgxLi40MDEwNDM1IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCisrKysgYi9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKK0BAIC02OCw4ICs2OCw4IEBACisgICAgR0xJQkNfRFlOQU1JQ19MSU5LRVJfREVGQVVMVCBhbmQgVEFSR0VUX0RFRkFVTFRfRkxPQVRfQUJJLiAgKi8KKyAKKyAjdW5kZWYgIEdMSUJDX0RZTkFNSUNfTElOS0VSCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUl9TT0ZUX0ZMT0FUICIvbGliL2xkLWxpbnV4LnNvLjMiCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUl9IQVJEX0ZMT0FUICIvbGliL2xkLWxpbnV4LWFybWhmLnNvLjMiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUl9TT0ZUX0ZMT0FUIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4zIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJfSEFSRF9GTE9BVCBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtYXJtaGYuc28uMyIKKyAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX0RFRkFVTFQgR0xJQkNfRFlOQU1JQ19MSU5LRVJfU09GVF9GTE9BVAorIAorICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgXAorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYXJtL2xpbnV4LWVsZi5oIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmgKK2luZGV4IGE5NGJkMmQuLjAyMjA2MjggMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2FybS9saW51eC1lbGYuaAorKysrIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmgKK0BAIC02Miw3ICs2Miw3IEBACisgCisgI2RlZmluZSBMSUJHQ0NfU1BFQyAiJXttZmxvYXQtYWJpPXNvZnQqOi1sZmxvYXR9IC1sZ2NjIgorIAorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXguc28uMiIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgorIAorICNkZWZpbmUgTElOVVhfVEFSR0VUX0xJTktfU1BFQyAgIiV7aCp9IFwKKyAgICAle3N0YXRpYzotQnN0YXRpY30gXAorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9saW51eC5oIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmgKK2luZGV4IGQzN2E4NzUuLmVkZGU1ODYgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2kzODYvbGludXguaAorKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmgKK0BAIC0yMCw3ICsyMCw3IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKyAKKyAjZGVmaW5lIEdOVV9VU0VSX0xJTktfRU1VTEFUSU9OICJlbGZfaTM4NiIKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LnNvLjIiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKKyAKKyAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUgorICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1tdXNsLWkzODYuc28uMSIKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvbGludXg2NC5oIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaAoraW5kZXggNzNkMjJlMy4uZjRiNTYxNSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvaTM4Ni9saW51eDY0LmgKKysrKyBiL2djYy9jb25maWcvaTM4Ni9saW51eDY0LmgKK0BAIC0yNyw5ICsyNyw5IEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQorICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT042NCAiZWxmX3g4Nl82NCIKKyAjZGVmaW5lIEdOVV9VU0VSX0xJTktfRU1VTEFUSU9OWDMyICJlbGYzMl94ODZfNjQiCisgCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyICIvbGliL2xkLWxpbnV4LnNvLjIiCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0ICIvbGliNjQvbGQtbGludXgteDg2LTY0LnNvLjIiCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUlgzMiAiL2xpYngzMi9sZC1saW51eC14MzIuc28uMiIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFNZU1RFTUxJQlNfRElSICJsZC1saW51eC14ODYtNjQuc28uMiIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSWDMyIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC14MzIuc28uMiIKKyAKKyAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUjMyCisgI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQtbXVzbC1pMzg2LnNvLjEiCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9saW51eC5oIGIvZ2NjL2NvbmZpZy9saW51eC5oCitpbmRleCA5YWVlYjk0Li5iMDU1NjUyIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9saW51eC5oCisrKysgYi9nY2MvY29uZmlnL2xpbnV4LmgKK0BAIC04MSwxMCArODEsMTAgQEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCisgICAgR0xJQkNfRFlOQU1JQ19MSU5LRVIgbXVzdCBiZSBkZWZpbmVkIGZvciBlYWNoIHRhcmdldCB1c2luZyB0aGVtLCBvcgorICAgIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgYW5kIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgZm9yIHRhcmdldHMKKyAgICBzdXBwb3J0aW5nIGJvdGggMzItYml0IGFuZCA2NC1iaXQgY29tcGlsYXRpb24uICAqLworLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLXVDbGliYy5zby4wIgorLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQtdUNsaWJjLnNvLjAiCistI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiL2xpYi9sZDY0LXVDbGliYy5zby4wIgorLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSWDMyICIvbGliL2xkeDMyLXVDbGliYy5zby4wIgorKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMCIKKysjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMCIKKysjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0IFNZU1RFTUxJQlNfRElSICJsZDY0LXVDbGliYy5zby4wIgorKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSWDMyIFNZU1RFTUxJQlNfRElSICJsZHgzMi11Q2xpYmMuc28uMCIKKyAjZGVmaW5lIEJJT05JQ19EWU5BTUlDX0xJTktFUiAiL3N5c3RlbS9iaW4vbGlua2VyIgorICNkZWZpbmUgQklPTklDX0RZTkFNSUNfTElOS0VSMzIgIi9zeXN0ZW0vYmluL2xpbmtlciIKKyAjZGVmaW5lIEJJT05JQ19EWU5BTUlDX0xJTktFUjY0ICIvc3lzdGVtL2Jpbi9saW5rZXI2NCIKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL21pcHMvbGludXguaCBiL2djYy9jb25maWcvbWlwcy9saW51eC5oCitpbmRleCBmYTI1M2I2Li5kYTAyYzhkIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmgKKysrKyBiL2djYy9jb25maWcvbWlwcy9saW51eC5oCitAQCAtMjIsMjAgKzIyLDIwIEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisgI2RlZmluZSBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTk4zMiAiZWxmMzIle0VCOmJ9JXtFTDpsfXRzbWlwbjMyIgorIAorICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBcCistICAiJXttbmFuPTIwMDg6L2xpYi9sZC1saW51eC1taXBzbjguc28uMTs6L2xpYi9sZC5zby4xfSIKKysgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1taXBzbjguc28uMTs6IiBTWVNURU1MSUJTX0RJUiAibGQuc28uMX0iCisgI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFwKKy0gICIle21uYW49MjAwODovbGliNjQvbGQtbGludXgtbWlwc244LnNvLjE7Oi9saWI2NC9sZC5zby4xfSIKKysgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1taXBzbjguc28uMTs6IiBTWVNURU1MSUJTX0RJUiAibGQuc28uMX0iCisgI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUk4zMiBcCistICAiJXttbmFuPTIwMDg6L2xpYjMyL2xkLWxpbnV4LW1pcHNuOC5zby4xOzovbGliMzIvbGQuc28uMX0iCisrICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtbWlwc244LnNvLjE7OiIgU1lTVEVNTElCU19ESVIgImxkLnNvLjF9IgorIAorICN1bmRlZiBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMgorICNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIgXAorLSAgIiV7bW5hbj0yMDA4Oi9saWIvbGQtdUNsaWJjLW1pcHNuOC5zby4wOzovbGliL2xkLXVDbGliYy5zby4wfSIKKysgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMtbWlwc244LnNvLjA7OiIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wfSIKKyAjdW5kZWYgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQKKyAjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0IFwKKy0gICIle21uYW49MjAwODovbGliL2xkNjQtdUNsaWJjLW1pcHNuOC5zby4wOzovbGliL2xkNjQtdUNsaWJjLnNvLjB9IgorKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkNjQtdUNsaWJjLW1pcHNuOC5zby4wOzoiIFNZU1RFTUxJQlNfRElSICJsZDY0LXVDbGliYy5zby4wfSIKKyAjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUk4zMiBcCistICAiJXttbmFuPTIwMDg6L2xpYjMyL2xkLXVDbGliYy1taXBzbjguc28uMDs6L2xpYjMyL2xkLXVDbGliYy5zby4wfSIKKysgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMtbWlwc244LnNvLjA7OiIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wfSIKKyAKKyAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUjMyCisgI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQtbXVzbC1taXBzJXtFTDplbH0le21zb2Z0LWZsb2F0Oi1zZn0uc28uMSIKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmggYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKK2luZGV4IGZlZmEwYzQuLjcxNzM5MzggMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKKysrKyBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAorQEAgLTQxMiwxNiArNDEyLDExIEBAIGV4dGVybiBpbnQgZG90X3N5bWJvbHM7CisgI3VuZGVmCUxJTktfT1NfREVGQVVMVF9TUEVDCisgI2RlZmluZSBMSU5LX09TX0RFRkFVTFRfU1BFQyAiJShsaW5rX29zX2xpbnV4KSIKKyAKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgIiUoZHluYW1pY19saW5rZXJfcHJlZml4KS9saWIvbGQuc28uMSIKKy0KKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgU1lTVEVNTElCU19ESVIgImxkLnNvLjEiCisgI2lmZGVmIExJTlVYNjRfREVGQVVMVF9BQklfRUxGdjIKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgXAorLSIle21hYmk9ZWxmdjE6JShkeW5hbWljX2xpbmtlcl9wcmVmaXgpL2xpYjY0L2xkNjQuc28uMTsiIFwKKy0iOiUoZHluYW1pY19saW5rZXJfcHJlZml4KS9saWI2NC9sZDY0LnNvLjJ9IgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiJXttYWJpPWVsZnYxOiIgU1lTVEVNTElCU19ESVIgImxkNjQuc28uMTs6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC5zby4yfSIKKyAjZWxzZQorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBcCistIiV7bWFiaT1lbGZ2MjolKGR5bmFtaWNfbGlua2VyX3ByZWZpeCkvbGliNjQvbGQ2NC5zby4yOyIgXAorLSI6JShkeW5hbWljX2xpbmtlcl9wcmVmaXgpL2xpYjY0L2xkNjQuc28uMX0iCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0ICIle21hYmk9ZWxmdjI6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC5zby4yOzoiIFNZU1RFTUxJQlNfRElSICJsZDY0LnNvLjF9IgorICNlbmRpZgorIAorICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUjMyIFwKK0BAIC00MjksOCArNDI0LDkgQEAgZXh0ZXJuIGludCBkb3Rfc3ltYm9sczsKKyAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVI2NCBcCisgICAiL2xpYi9sZC1tdXNsLXBvd2VycGM2NCIgTVVTTF9EWU5BTUlDX0xJTktFUl9FICIle21zb2Z0LWZsb2F0Oi1zZn0uc28uMSIKKyAKKy0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyICIvbGliL2xkLXVDbGliYy5zby4wIgorLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQgIi9saWIvbGQ2NC11Q2xpYmMuc28uMCIKKysjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMCIKKysjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0IFNZU1RFTUxJQlNfRElSICJsZDY0LXVDbGliYy5zby4wIgorKworICNpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19VQ0xJQkMKKyAjZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVLCBNKSBcCisgICAiJXttZ2xpYmM6IiBHICI7OiV7bW11c2w6IiBNICI7OiIgVSAifX0iCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9zaC9saW51eC5oIGIvZ2NjL2NvbmZpZy9zaC9saW51eC5oCitpbmRleCAyYTAzNmFjLi41MGZiNzM1IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9zaC9saW51eC5oCisrKysgYi9nY2MvY29uZmlnL3NoL2xpbnV4LmgKK0BAIC02NCw3ICs2NCw3IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisgICAiL2xpYi9sZC1tdXNsLXNoIiBNVVNMX0RZTkFNSUNfTElOS0VSX0UgTVVTTF9EWU5BTUlDX0xJTktFUl9GUCBcCisgICAiJXttZmRwaWM6LWZkcGljfS5zby4xIgorIAorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXguc28uMiIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgorIAorICN1bmRlZiBTVUJUQVJHRVRfTElOS19FTVVMX1NVRkZJWAorICNkZWZpbmUgU1VCVEFSR0VUX0xJTktfRU1VTF9TVUZGSVggIiV7bWZkcGljOl9mZDs6X2xpbnV4fSIKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL3NwYXJjL2xpbnV4LmggYi9nY2MvY29uZmlnL3NwYXJjL2xpbnV4LmgKK2luZGV4IDliMzI1NzcuLjdiZDY2ZGUgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL3NwYXJjL2xpbnV4LmgKKysrKyBiL2djYy9jb25maWcvc3BhcmMvbGludXguaAorQEAgLTgzLDcgKzgzLDcgQEAgZXh0ZXJuIGNvbnN0IGNoYXIgKmhvc3RfZGV0ZWN0X2xvY2FsX2NwdSAoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KTsKKyAgICBXaGVuIHRoZSAtc2hhcmVkIGxpbmsgb3B0aW9uIGlzIHVzZWQgYSBmaW5hbCBsaW5rIGlzIG5vdCBiZWluZworICAgIGRvbmUuICAqLworIAorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXguc28uMiIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgorIAorICN1bmRlZiAgTElOS19TUEVDCisgI2RlZmluZSBMSU5LX1NQRUMgIi1tIGVsZjMyX3NwYXJjICV7c2hhcmVkOi1zaGFyZWR9IFwKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaCBiL2djYy9jb25maWcvc3BhcmMvbGludXg2NC5oCitpbmRleCBhMWVmMzI1Li4zYmFlM2Q1IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmgKKysrKyBiL2djYy9jb25maWcvc3BhcmMvbGludXg2NC5oCitAQCAtODQsOCArODQsOCBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorICAgIFdoZW4gdGhlIC1zaGFyZWQgbGluayBvcHRpb24gaXMgdXNlZCBhIGZpbmFsIGxpbmsgaXMgbm90IGJlaW5nCisgICAgZG9uZS4gICovCisgCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyICIvbGliL2xkLWxpbnV4LnNvLjIiCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0ICIvbGliNjQvbGQtbGludXguc28uMiIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgorIAorICNpZmRlZiBTUEFSQ19CSV9BUkNICisgCistLSAKKzIuOC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAyMi1nY2MtRml4LWFyZ3VtZW50LWxpc3QtdG9vLWxvbmctZXJyb3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yLzAwMjItZ2NjLUZpeC1hcmd1bWVudC1saXN0LXRvby1sb25nLWVycm9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhYjZlNGEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yLzAwMjItZ2NjLUZpeC1hcmd1bWVudC1saXN0LXRvby1sb25nLWVycm9yLnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKK0Zyb20gYWNjZTUxNTdmNmIzYTFkYzlhMzY3NmI3MTE4YWM4ODdkYzU2OTNiZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjI2OjM3ICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMjIvNDZdIGdjYzogRml4IGFyZ3VtZW50IGxpc3QgdG9vIGxvbmcgZXJyb3IuCisKK1RoZXJlIHdvdWxkIGJlIGFuICJBcmd1bWVudCBsaXN0IHRvbyBsb25nIiBlcnJvciB3aGVuIHRoZQorYnVpbGQgZGlyZWN0b3J5IGlzIGxvbmdlciB0aGFuIDIwMCwgdGhpcyBpcyBjYXVzZWQgYnk6CisKK2hlYWRlcnM9YGVjaG8gJChQTFVHSU5fSEVBREVSUykgfCB0ciAnICcgJ1wwMTInIHwgc29ydCAtdWAKKworVGhlIFBMVUdJTl9IRUFERVJTIGlzIHRvbyBsb25nIGJlZm9yZSBzb3J0LCBzbyB0aGUgImVjaG8iIGNhbid0IGhhbmRsZQoraXQsIHVzZSB0aGUgJChzb3J0IGxpc3QpIG9mIEdOVSBtYWtlIHdoaWNoIGNhbiBoYW5kbGUgdGhlIHRvbyBsb25nIGxpc3QKK3dvdWxkIGZpeCB0aGUgcHJvYmxlbSwgdGhlIGhlYWRlciB3b3VsZCBiZSBzaG9ydCBlbm91Z2ggYWZ0ZXIgc29ydGVkLgorVGhlICJ0ciAnICcgJ1wwMTInIiB3YXMgdXNlZCBmb3IgdHJhbnNsYXRpbmcgdGhlIHNwYWNlIHRvICJcbiIsIHRoZQorJChzb3J0IGxpc3QpIGRvZXNuJ3QgbmVlZCB0aGlzLgorCitTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgZ2NjL01ha2VmaWxlLmluIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL01ha2VmaWxlLmluIGIvZ2NjL01ha2VmaWxlLmluCitpbmRleCA5YTFkNDY2Li40NTBjYjc5IDEwMDY0NAorLS0tIGEvZ2NjL01ha2VmaWxlLmluCisrKysgYi9nY2MvTWFrZWZpbGUuaW4KK0BAIC0zMzQ5LDcgKzMzNDksNyBAQCBpbnN0YWxsLXBsdWdpbjogaW5zdGFsbGRpcnMgbGFuZy5pbnN0YWxsLXBsdWdpbiBzLWhlYWRlci12YXJzIGluc3RhbGwtZ2VuZ3R5cGUKKyAjIFdlIGtlZXAgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGZpbGVzIGluIGNvbmZpZyBvciBjLWZhbWlseSBhbmQgLmRlZgorICMgZmlsZXMuIEFsbCBvdGhlciBmaWxlcyBhcmUgZmxhdHRlbmVkIHRvIGEgc2luZ2xlIGRpcmVjdG9yeS4KKyAJJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChwbHVnaW5faW5jbHVkZWRpcikKKy0JaGVhZGVycz1gZWNobyAkKFBMVUdJTl9IRUFERVJTKSAkJChjZCAkKHNyY2Rpcik7IGVjaG8gKi5oICouZGVmKSB8IHRyICcgJyAnXDAxMicgfCBzb3J0IC11YDsgXAorKwloZWFkZXJzPSIkKHNvcnQgJChQTFVHSU5fSEVBREVSUykgJCQoY2QgJChzcmNkaXIpOyBlY2hvICouaCAqLmRlZikpIjsgXAorIAlzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIpIiB8IHNlZCAncy9bXS5bXiQkXFwqfF0vXFxcXCYvZydgOyBcCisgCWZvciBmaWxlIGluICQkaGVhZGVyczsgZG8gXAorIAkgIGlmIFsgLWYgJCRmaWxlIF0gOyB0aGVuIFwKKy0tIAorMi44LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDIzLURpc2FibGUtc2R0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDIzLURpc2FibGUtc2R0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlZmQ4OTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yLzAwMjMtRGlzYWJsZS1zZHQucGF0Y2gKQEAgLTAsMCArMSwxMTMgQEAKK0Zyb20gNjU3M2FlYzAwYWRhMzVjNDhjMTgzOGM4NDkxY2U4Zjc3OThhZTk5MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjI4OjEwICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMjMvNDZdIERpc2FibGUgc2R0LgorCitXZSBkb24ndCBsaXN0IGR0cmFjZSBpbiBERVBFTkRTIHNvIHdlIHNob3VsZG4ndCBiZSBkZXBlbmRpbmcgb24gdGhpcyBoZWFkZXIuCitJdCBtYXkgb3IgbWF5IG5vdCBleGlzdCBmcm9tIHByZWl2b3VzIGJ1aWxkcyB0aG91Z2guIFRvIGJlIGRldGVybWluc3RpYywgZGlzYWJsZQorc2R0LmggdXNhZ2UgYWx3YXlzLiBUaGlzIGF2b2lkcyBidWlsZCBmYWlsdXJlcyBpZiB0aGUgaGVhZGVyIGlzIHJlbW92ZWQgYWZ0ZXIgY29uZmlndXJlCitidXQgYmVmb3JlIGxpYmdjYyBpcyBjb21waWxlZCBmb3IgZXhhbXBsZS4KKworUlAgMjAxMi84LzcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworRGlzYWJsZSBzZHQgZm9yIGxpYnN0ZGMrKy12My4KKworU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbaGFja10KKy0tLQorIGdjYy9jb25maWd1cmUgICAgICAgICAgICAgfCAxMiArKysrKystLS0tLS0KKyBnY2MvY29uZmlndXJlLmFjICAgICAgICAgIHwgMTggKysrKysrKysrLS0tLS0tLS0tCisgbGlic3RkYysrLXYzL2NvbmZpZ3VyZSAgICB8ICA2ICsrKy0tLQorIGxpYnN0ZGMrKy12My9jb25maWd1cmUuYWMgfCAgMiArLQorIDQgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQoraW5kZXggMzg5YjZkNS4uNzNjMjY0ZCAxMDA3NTUKKy0tLSBhL2djYy9jb25maWd1cmUKKysrKyBiL2djYy9jb25maWd1cmUKK0BAIC0yODUyOCwxMiArMjg1MjgsMTIgQEAgZmkKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHN5cy9zZHQuaCBpbiB0aGUgdGFyZ2V0IEMgbGlicmFyeSIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgc3lzL3NkdC5oIGluIHRoZSB0YXJnZXQgQyBsaWJyYXJ5Li4uICIgPiY2OyB9CisgaGF2ZV9zeXNfc2R0X2g9bm8KKy1pZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KKy0gIGhhdmVfc3lzX3NkdF9oPXllcworLQorLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1lTX1NEVF9IIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCisrI2lmIHRlc3QgLWYgJHRhcmdldF9oZWFkZXJfZGlyL3N5cy9zZHQuaDsgdGhlbgorKyMgIGhhdmVfc3lzX3NkdF9oPXllcworKyMKKysjJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9TWVNfU0RUX0ggMSIgPj5jb25mZGVmcy5oCisrIworKyNmaQorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkaGF2ZV9zeXNfc2R0X2giID4mNQorICRhc19lY2hvICIkaGF2ZV9zeXNfc2R0X2giID4mNjsgfQorIAorZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCitpbmRleCA5MWFjODAwLi5jZWNmMTIxIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYworKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYworQEAgLTU1MTQsMTUgKzU1MTQsMTUgQEAgZmkKKyBBQ19TVUJTVChbZW5hYmxlX2RlZmF1bHRfc3NwXSkKKyAKKyAjIFRlc3QgZm9yIDxzeXMvc2R0Lmg+IG9uIHRoZSB0YXJnZXQuCistR0NDX1RBUkdFVF9URU1QTEFURShbSEFWRV9TWVNfU0RUX0hdKQorLUFDX01TR19DSEVDS0lORyhzeXMvc2R0LmggaW4gdGhlIHRhcmdldCBDIGxpYnJhcnkpCistaGF2ZV9zeXNfc2R0X2g9bm8KKy1pZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KKy0gIGhhdmVfc3lzX3NkdF9oPXllcworLSAgQUNfREVGSU5FKEhBVkVfU1lTX1NEVF9ILCAxLAorLSAgICAgICAgICAgIFtEZWZpbmUgaWYgeW91ciB0YXJnZXQgQyBsaWJyYXJ5IHByb3ZpZGVzIHN5cy9zZHQuaF0pCistZmkKKy1BQ19NU0dfUkVTVUxUKCRoYXZlX3N5c19zZHRfaCkKKysjR0NDX1RBUkdFVF9URU1QTEFURShbSEFWRV9TWVNfU0RUX0hdKQorKyNBQ19NU0dfQ0hFQ0tJTkcoc3lzL3NkdC5oIGluIHRoZSB0YXJnZXQgQyBsaWJyYXJ5KQorKyNoYXZlX3N5c19zZHRfaD1ubworKyNpZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KKysjICBoYXZlX3N5c19zZHRfaD15ZXMKKysjICBBQ19ERUZJTkUoSEFWRV9TWVNfU0RUX0gsIDEsCisrIyAgICAgICAgICAgIFtEZWZpbmUgaWYgeW91ciB0YXJnZXQgQyBsaWJyYXJ5IHByb3ZpZGVzIHN5cy9zZHQuaF0pCisrI2ZpCisrI0FDX01TR19SRVNVTFQoJGhhdmVfc3lzX3NkdF9oKQorIAorICMgQ2hlY2sgaWYgVEZtb2RlIGxvbmcgZG91YmxlIHNob3VsZCBiZSB1c2VkIGJ5IGRlZmF1bHQgb3Igbm90LgorICMgU29tZSBnbGliYyB0YXJnZXRzIHVzZWQgREZtb2RlIGxvbmcgZG91YmxlLCBidXQgd2l0aCBnbGliYyAyLjQKK2RpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlndXJlIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZQoraW5kZXggOGE1NDgxYy4uNmE0MGU5MiAxMDA3NTUKKy0tLSBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUKKysrKyBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUKK0BAIC0yMTczNSwxMSArMjE3MzUsMTEgQEAgYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworIGFjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCisgYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorIAorLSAgaWYgdGVzdCAkZ2xpYmN4eF9jdl9zeXNfc2R0X2ggPSB5ZXM7IHRoZW4KKysjICBpZiB0ZXN0ICRnbGliY3h4X2N2X3N5c19zZHRfaCA9IHllczsgdGhlbgorIAorLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1lTX1NEVF9IIDEiID4+Y29uZmRlZnMuaAorKyMkYXNfZWNobyAiI2RlZmluZSBIQVZFX1NZU19TRFRfSCAxIiA+PmNvbmZkZWZzLmgKKyAKKy0gIGZpCisrIyAgZmkKKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xpYmN4eF9jdl9zeXNfc2R0X2giID4mNQorICRhc19lY2hvICIkZ2xpYmN4eF9jdl9zeXNfc2R0X2giID4mNjsgfQorIAorZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMgYi9saWJzdGRjKystdjMvY29uZmlndXJlLmFjCitpbmRleCA5ZTE5ZTk5Li4wMDc3ZmZkIDEwMDY0NAorLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYworKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYworQEAgLTIzMCw3ICsyMzAsNyBAQCBHTElCQ1hYX0NIRUNLX1NDX05QUk9DRVNTT1JTX09OTE4KKyBHTElCQ1hYX0NIRUNLX1NDX05QUk9DX09OTE4KKyBHTElCQ1hYX0NIRUNLX1BUSFJFQURTX05VTV9QUk9DRVNTT1JTX05QCisgR0xJQkNYWF9DSEVDS19TWVNDVExfSFdfTkNQVQorLUdMSUJDWFhfQ0hFQ0tfU0RUX0gKKysjR0xJQkNYWF9DSEVDS19TRFRfSAorIAorICMgQ2hlY2sgZm9yIGF2YWlsYWJsZSBoZWFkZXJzLgorIEFDX0NIRUNLX0hFQURFUlMoW2VuZGlhbi5oIGV4ZWNpbmZvLmggZmxvYXQuaCBmcC5oIGllZWVmcC5oIGludHR5cGVzLmggXAorLS0gCisyLjguMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yLzAwMjQtbGlidG9vbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAyNC1saWJ0b29sLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmNzNiNWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yLzAwMjQtbGlidG9vbC5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tIDZjMGFhNWMyNTM4ODI5MjQ4NTQ3MTk3NzE4MDM3ZmYwYjk3ODg2NzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyOToxMSArMDQwMAorU3ViamVjdDogW1BBVENIIDI0LzQ2XSBsaWJ0b29sCisKK2xpYnN0ZGMrKyBmcm9tIGdjYy1ydW50aW1lIGdldHMgY3JlYXRlZCB3aXRoIC1ycGF0aD0vdXNyL2xpYi8uLi9saWIgZm9yIHFlbXV4ODYtNjQKK3doZW4gcnVubmluZyBvbiBhbSB4ODZfNjQgYnVpbGQgaG9zdC4KKworVGhpcyBwYXRjaCBzdG9wcyB0aGlzIHNwZWFkaW5nIHRvIGxpYmRpciBpbiB0aGUgbGlic3RkYysrLmxhIGZpbGUgd2l0aGluIGxpYnRvb2wuCitBcmd1YWJseSwgaXQgc2hvdWxkbid0IGJlIHBhc3NpbmcgdGhpcyBpbnRvIGxpYnRvb2wgaW4gdGhlIGZpcnN0IHBsYWNlIGJ1dAorZm9yIG5vdyB0aGlzIHJlc29sdmVzIHRoZSBuYXN0aWVzdCBwcm9ibGVtcyB0aGlzIGNhdXNlcy4KKworZnVuY19ub3JtYWxfYWJzcGF0aCB3b3VsZCByZXNvbHZlIGFuIGVtcHR5IHBhdGggdG8gYHB3ZGAgc28gd2UgbmVlZAordG8gZmlsdGVyIHRoZSB6ZXJvIGNhc2UuCisKK1JQIDIwMTIvOC8yNAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGx0bWFpbi5zaCB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaAoraW5kZXggOTUwM2VjOC4uMDEyMWZiYSAxMDA2NDQKKy0tLSBhL2x0bWFpbi5zaAorKysrIGIvbHRtYWluLnNoCitAQCAtNjM1OSw2ICs2MzU5LDEwIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCWZ1bmNfd2FybmluZyAiaWdub3JpbmcgbXVsdGlwbGUgXGAtcnBhdGgncyBmb3IgYSBsaWJ0b29sIGxpYnJhcnkiCisgCisgICAgICAgaW5zdGFsbF9saWJkaXI9IiQxIgorKyAgICAgIGlmIHRlc3QgLW4gIiRpbnN0YWxsX2xpYmRpciI7IHRoZW4KKysJZnVuY19ub3JtYWxfYWJzcGF0aCAiJGluc3RhbGxfbGliZGlyIgorKwlpbnN0YWxsX2xpYmRpcj0kZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQKKysgICAgICBmaQorIAorICAgICAgIG9sZGxpYnM9CisgICAgICAgaWYgdGVzdCAteiAiJHJwYXRoIjsgdGhlbgorLS0gCisyLjguMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yLzAwMjUtZ2NjLWFybXY0LXBhc3MtZml4LXY0YngtdG8tbGlua2VyLXRvLXN1cHBvcnQtRUFCSS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAyNS1nY2MtYXJtdjQtcGFzcy1maXgtdjRieC10by1saW5rZXItdG8tc3VwcG9ydC1FQUJJLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiN2VlNDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yLzAwMjUtZ2NjLWFybXY0LXBhc3MtZml4LXY0YngtdG8tbGlua2VyLXRvLXN1cHBvcnQtRUFCSS5wYXRjaApAQCAtMCwwICsxLDQzIEBACitGcm9tIGIxMjYzYTQ4NTUzY2U3NWY4YzNiZWQ0ZmUxMjEyMmFmNTc4NDU1NjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOTozMDozMiArMDQwMAorU3ViamVjdDogW1BBVENIIDI1LzQ2XSBnY2M6IGFybXY0OiBwYXNzIGZpeC12NGJ4IHRvIGxpbmtlciB0byBzdXBwb3J0IEVBQkkuCisKK1RoZSBMSU5LX1NQRUMgZm9yIGxpbnV4IGdldHMgb3ZlcndyaXR0ZW4gYnkgbGludXgtZWFiaS5oIHdoaWNoCittZWFucyB0aGUgdmFsdWUgb2YgVEFSR0VUX0ZJWF9WNEJYX1NQRUMgZ2V0cyBsb3N0IGFuZCBhcyBhIHJlc3VsdAordGhlIG9wdGlvbiBpcyBub3QgcGFzc2VkIHRvIGxpbmtlciB3aGVuIGNob3NpbmcgbWFyY2g9YXJtdjQKK1RoaXMgcGF0Y2ggcmVkZWZpbmVzIHRoaXMgaW4gbGludXgtZWFiaS5oIGFuZCByZWluc2VydHMgaXQKK2ZvciBlYWJpIGRlZmF1bHRpbmcgdG9vbGNoYWlucy4KKworV2UgbWlnaHQgd2FudCB0byBzZW5kIGl0IHVwc3RyZWFtLgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGdjYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaCB8IDYgKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCitpbmRleCA0MDEwNDM1Li5hYWVhMWM5IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCisrKysgYi9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKK0BAIC05NCwxMCArOTQsMTQgQEAKKyAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgXAorICAgIi9saWIvbGQtbXVzbC1hcm0iIE1VU0xfRFlOQU1JQ19MSU5LRVJfRSAiJXttZmxvYXQtYWJpPWhhcmQ6aGZ9LnNvLjEiCisgCisrLyogRm9yIGFybXY0IHdlIHBhc3MgLS1maXgtdjRieCB0byBsaW5rZXIgdG8gc3VwcG9ydCBFQUJJICovCisrI3VuZGVmIFRBUkdFVF9GSVhfVjRCWF9TUEVDCisrI2RlZmluZSBUQVJHRVRfRklYX1Y0QlhfU1BFQyAiJXttY3B1PWFybTh8bWNwdT1hcm04MTB8bWNwdT1zdHJvbmdhcm0qfG1hcmNoPWFybXY0OiAtLWZpeC12NGJ4fSIKKysKKyAvKiBBdCB0aGlzIHBvaW50LCBicGFiaS5oIHdpbGwgaGF2ZSBjbG9iYmVyZWQgTElOS19TUEVDLiAgV2Ugd2FudCB0bworICAgIHVzZSB0aGUgR05VL0xpbnV4IHZlcnNpb24sIG5vdCB0aGUgZ2VuZXJpYyBCUEFCSSB2ZXJzaW9uLiAgKi8KKyAjdW5kZWYgIExJTktfU1BFQworLSNkZWZpbmUgTElOS19TUEVDIEVBQklfTElOS19TUEVDCQkJCQlcCisrI2RlZmluZSBMSU5LX1NQRUMgVEFSR0VUX0ZJWF9WNEJYX1NQRUMgRUFCSV9MSU5LX1NQRUMJCQlcCisgICBMSU5VWF9PUl9BTkRST0lEX0xEIChMSU5VWF9UQVJHRVRfTElOS19TUEVDLAkJCQlcCisgCQkgICAgICAgTElOVVhfVEFSR0VUX0xJTktfU1BFQyAiICIgQU5EUk9JRF9MSU5LX1NQRUMpCisgCistLSAKKzIuOC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAyNi1Vc2UtdGhlLW11bHRpbGliLWNvbmZpZy1maWxlcy1mcm9tLUItaW5zdGVhZC1vZi11c2luLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDI2LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmUyNWJlNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAyNi1Vc2UtdGhlLW11bHRpbGliLWNvbmZpZy1maWxlcy1mcm9tLUItaW5zdGVhZC1vZi11c2luLnBhdGNoCkBAIC0wLDAgKzEsMTAyIEBACitGcm9tIGI1YzMwNWZjMjUxMjk5ZjJlMzI4NDEwYjE4Y2ZiNTVjNzViNWYwMzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOTozMzowNCArMDQwMAorU3ViamVjdDogW1BBVENIIDI2LzQ2XSBVc2UgdGhlIG11bHRpbGliIGNvbmZpZyBmaWxlcyBmcm9tICR7Qn0gaW5zdGVhZCBvZgorIHVzaW5nIHRoZSBvbmVzIGZyb20gJHtTfQorCitVc2UgdGhlIG11bHRpbGliIGNvbmZpZyBmaWxlcyBmcm9tICR7Qn0gaW5zdGVhZCBvZiB1c2luZyB0aGUgb25lcyBmcm9tICR7U30KK3NvIHRoYXQgdGhlIHNvdXJjZSBjYW4gYmUgc2hhcmVkIGJldHdlZW4gZ2NjLWNyb3NzLWluaXRpYWwsCitnY2MtY3Jvc3MtaW50ZXJtZWRpYXRlLCBnY2MtY3Jvc3MsIGdjYy1ydW50aW1lLCBhbmQgYWxzbyB0aGUgc2RrIGJ1aWxkLgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQ29uc3RhbnRpbiBNdXNjYSA8Y29uc3RhbnRpbngubXVzY2FAaW50ZWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCistLS0KKyBnY2MvY29uZmlndXJlICAgIHwgMjIgKysrKysrKysrKysrKysrKysrLS0tLQorIGdjYy9jb25maWd1cmUuYWMgfCAyMiArKysrKysrKysrKysrKysrKystLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAzNiBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKK2luZGV4IDczYzI2NGQuLjM3NzI1M2UgMTAwNzU1CistLS0gYS9nY2MvY29uZmlndXJlCisrKysgYi9nY2MvY29uZmlndXJlCitAQCAtMTIxMTAsMTAgKzEyMTEwLDIwIEBAIGRvbmUKKyB0bWFrZV9maWxlXz0KKyBmb3IgZiBpbiAke3RtYWtlX2ZpbGV9CisgZG8KKy0JaWYgdGVzdCAtZiAke3NyY2Rpcn0vY29uZmlnLyRmCistCXRoZW4KKy0JCXRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKKy0JZmkKKysgIGNhc2UgJGYgaW4KKysgICAgKi90LWxpbnV4NjQgKQorKyAgICAgICBpZiB0ZXN0IC1mIC4vY29uZmlnLyRmCisrICAgICAgIHRoZW4KKysgICAgICAgICB0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gLi9jb25maWcvJGYiCisrICAgICAgIGZpCisrICAgICAgIDs7CisrICAgICogKQorKyAgICAgICBpZiB0ZXN0IC1mICR7c3JjZGlyfS9jb25maWcvJGYKKysgICAgICAgdGhlbgorKyAgICAgICAgIHRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKKysgICAgICAgZmkKKysgICAgICAgOzsKKysgIGVzYWMKKyBkb25lCisgdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlX30iCisgCitAQCAtMTIxMjQsNiArMTIxMzQsMTAgQEAgdG1fZmlsZV9saXN0PSJvcHRpb25zLmgiCisgdG1faW5jbHVkZV9saXN0PSJvcHRpb25zLmggaW5zbi1jb25zdGFudHMuaCIKKyBmb3IgZiBpbiAkdG1fZmlsZTsgZG8KKyAgIGNhc2UgJGYgaW4KKysgICAgKi9saW51eDY0LmggKQorKyAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSAuL2NvbmZpZy8kZiIKKysgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gLi9jb25maWcvJGYiCisrICAgICAgIDs7CisgICAgIC4vKiApCisgICAgICAgIGY9YGVjaG8gJGYgfCBzZWQgJ3MvXi4uLy8nYAorICAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSAkZiIKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYworaW5kZXggY2VjZjEyMS4uNTRlNzYxOSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWd1cmUuYWMKKysrKyBiL2djYy9jb25maWd1cmUuYWMKK0BAIC0xODYzLDEwICsxODYzLDIwIEBAIGRvbmUKKyB0bWFrZV9maWxlXz0KKyBmb3IgZiBpbiAke3RtYWtlX2ZpbGV9CisgZG8KKy0JaWYgdGVzdCAtZiAke3NyY2Rpcn0vY29uZmlnLyRmCistCXRoZW4KKy0JCXRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKKy0JZmkKKysgIGNhc2UgJGYgaW4KKysgICAgKi90LWxpbnV4NjQgKQorKyAgICAgICBpZiB0ZXN0IC1mIC4vY29uZmlnLyRmCisrICAgICAgIHRoZW4KKysgICAgICAgICB0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gLi9jb25maWcvJGYiCisrICAgICAgIGZpCisrICAgICAgIDs7CisrICAgICogKQorKyAgICAgICBpZiB0ZXN0IC1mICR7c3JjZGlyfS9jb25maWcvJGYKKysgICAgICAgdGhlbgorKyAgICAgICAgIHRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKKysgICAgICAgZmkKKysgICAgICAgOzsKKysgIGVzYWMKKyBkb25lCisgdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlX30iCisgCitAQCAtMTg3Nyw2ICsxODg3LDEwIEBAIHRtX2ZpbGVfbGlzdD0ib3B0aW9ucy5oIgorIHRtX2luY2x1ZGVfbGlzdD0ib3B0aW9ucy5oIGluc24tY29uc3RhbnRzLmgiCisgZm9yIGYgaW4gJHRtX2ZpbGU7IGRvCisgICBjYXNlICRmIGluCisrICAgICovbGludXg2NC5oICkKKysgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi9jb25maWcvJGYiCisrICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9IC4vY29uZmlnLyRmIgorKyAgICAgICA7OworICAgICAuLyogKQorICAgICAgICBmPWBlY2hvICRmIHwgc2VkICdzL14uLi8vJ2AKKyAgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gJGYiCistLSAKKzIuOC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAyNy1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDI3LUF2b2lkLXVzaW5nLWxpYmRpci1mcm9tLS5sYS13aGljaC11c3VhbGx5LXBvaW50cy10by0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDFiYmViYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAyNy1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gZWI2MTc4YjdmYjQ2NmFlNDI5YzU2MzgwYzZkYmM1NjRhMTZkOTAwYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDIwIEZlYiAyMDE1IDA5OjM5OjM4ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMjcvNDZdIEF2b2lkIHVzaW5nIGxpYmRpciBmcm9tIC5sYSB3aGljaCB1c3VhbGx5IHBvaW50cyB0byBhCisgaG9zdCBwYXRoCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEpvbmF0aGFuIExpdSA8bmV0MTQ3QGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsdG1haW4uc2ggfCAzICsrKworIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaAoraW5kZXggMDEyMWZiYS4uNTJiZGJkYiAxMDA2NDQKKy0tLSBhL2x0bWFpbi5zaAorKysrIGIvbHRtYWluLnNoCitAQCAtNTYyOCw2ICs1NjI4LDkgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIGFic2Rpcj0iJGFic19sYWRpciIKKyAJICAgIGxpYmRpcj0iJGFic19sYWRpciIKKyAJICBlbHNlCisrCSAgICAjIEluc3RlYWQgb2YgdXNpbmcgbGliZGlyIGZyb20gLmxhIHdoaWNoIHVzdWFsbHkgcG9pbnRzIHRvIGEgaG9zdCBwYXRoLAorKwkgICAgIyB1c2UgdGhlIHBhdGggdGhlIC5sYSBpcyBjb250YWluZWQgaW4uCisrCSAgICBsaWJkaXI9IiRhYnNfbGFkaXIiCisgCSAgICBkaXI9IiRsaWJkaXIiCisgCSAgICBhYnNkaXI9IiRsaWJkaXIiCisgCSAgZmkKKy0tIAorMi44LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDI4LWV4cG9ydC1DUFAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yLzAwMjgtZXhwb3J0LUNQUC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjEyNTM5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDI4LWV4cG9ydC1DUFAucGF0Y2gKQEAgLTAsMCArMSw1MyBAQAorRnJvbSA2MTcxODRmMzVlOTc5MzRkOWU2MjY4ZTcxMzc4NTc0ZTJiNzc2YzJiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjAgRmViIDIwMTUgMDk6NDA6NTkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAyOC80Nl0gZXhwb3J0IENQUAorCitUaGUgT0UgZW52aXJvbm1lbnQgc2V0cyBhbmQgZXhwb3J0cyBDUFAgYXMgYmVpbmcgdGhlIHRhcmdldCBnY2MuIFdoZW4KK2J1aWxkaW5nIGdjYy1jcm9zcy1jYW5hZGlhbiBmb3IgYSBtaW5ndyB0YXJnZXR0ZWQgc2RrLCB0aGUgZm9sbG93aW5nIGNhbiBiZSBmb3VuZAoraW4gYnVpbGQueDg2XzY0LXBva3lzZGstbWluZ3czMi5pNTg2LXBva3ktbGludXgvYnVpbGQteDg2XzY0LWxpbnV4L2xpYmliZXJ0eS9jb25maWcubG9nOgorCitjb25maWd1cmU6MzY0MTogY2hlY2tpbmcgZm9yIF9GSUxFX09GRlNFVF9CSVRTIHZhbHVlIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMKK2NvbmZpZ3VyZTozNjY2OiBnY2MgIC1jIC1pc3lzdGVtL21lZGlhL2J1aWxkMS9wb2t5L2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2luY2x1ZGUgLU8yIC1waXBlICBjb25mdGVzdC5jID4mNQorY29uZmlndXJlOjM2NjY6ICQ/ID0gMAorY29uZmlndXJlOjM2OTg6IHJlc3VsdDogbm8KK2NvbmZpZ3VyZTozNzg2OiBjaGVja2luZyBob3cgdG8gcnVuIHRoZSBDIHByZXByb2Nlc3NvcgorY29uZmlndXJlOjM4NTY6IHJlc3VsdDogeDg2XzY0LXBva3lzZGstbWluZ3czMi1nY2MgLUUgLS1zeXNyb290PS9tZWRpYS9idWlsZDEvcG9reS9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LW5hdGl2ZXNkay1taW5ndzMyLXBva3lzZGstbWluZ3czMgorY29uZmlndXJlOjM4NzY6IHg4Nl82NC1wb2t5c2RrLW1pbmd3MzItZ2NjIC1FIC0tc3lzcm9vdD0vbWVkaWEvYnVpbGQxL3Bva3kvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1uYXRpdmVzZGstbWluZ3czMi1wb2t5c2RrLW1pbmd3MzIgY29uZnRlc3QuYworY29uZmlndXJlOjM4NzY6ICQ/ID0gMAorCitOb3RlIHRoaXMgaXMgYSAqYnVpbGQqIHRhcmdldCAoaW4gYnVpbGQteDg2XzY0LWxpbnV4KSBzbyBpdCBzaG91bGQgYmUKK3VzaW5nIHRoZSBob3N0ICJnY2MiLCBub3QgeDg2XzY0LXBva3lzZGstbWluZ3czMi1nY2MuIFNpbmNlIHRoZSBtaW5ndzMyCitoZWFkZXJzIGFyZSB2ZXJ5IGRpZmZlcmVudCwgdXNpbmcgdGhlIHdyb25nIGNwcCBpcyBhIHJlYWwgcHJvYmxlbS4gSXQgaXMgbGVha2luZworaW50byBjb25maWd1cmUgdGhyb3VnaCB0aGUgQ1BQIHZhcmlhYmxlLiBVbHRpbWF0ZWx5IHRoaXMgbGVhZHMgdG8gYnVpbGQKK2ZhaWx1cmVzIHJlbGF0ZWQgdG8gbm90IGJlaW5nIGFibGUgdG8gaW5jbHVkZSBhIHByb2Nlc3MuaCBmaWxlIGZvciBwZW0tdW5peC5jLgorCitUaGUgZml4IGlzIHRvIGVuc3VyZSB3ZSBleHBvcnQgYSBzYW5lIENQUCB2YWx1ZSBpbnRvIHRoZSBidWlsZAorZW52aXJvbm1lbnQgd2hlbiB1c2luZyBidWlsZCB0YXJnZXRzLiBXZSBjb3VsZCBkZWZpbmUgYSBDUFBfRk9SX0JVSUxEIHZhbHVlIHdoaWNoIG1heSBiZQordGhlIHZlcnNpb24gd2hpY2ggbmVlZHMgdG8gYmUgdXBzdHJlYW1lZCBidXQgZm9yIG5vdywgdGhpcyBmaXggaXMgZ29vZCBlbm91Z2ggdG8KK2F2b2lkIHRoZSBwcm9ibGVtLgorCitSUCAyMi8wOC8yMDEzCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUuaW4gfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KK2luZGV4IDE1MjJlMzkuLmJlYjliOWEgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5pbgorKysrIGIvTWFrZWZpbGUuaW4KK0BAIC0xNDksNiArMTQ5LDcgQEAgQlVJTERfRVhQT1JUUyA9IFwKKyAJQVI9IiQoQVJfRk9SX0JVSUxEKSI7IGV4cG9ydCBBUjsgXAorIAlBUz0iJChBU19GT1JfQlVJTEQpIjsgZXhwb3J0IEFTOyBcCisgCUNDPSIkKENDX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ0M7IFwKKysJQ1BQPSIkKENDX0ZPUl9CVUlMRCkgLUUiOyBleHBvcnQgQ1BQOyBcCisgCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDRkxBR1M7IFwKKyAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKKyAJQ1hYPSIkKENYWF9GT1JfQlVJTEQpIjsgZXhwb3J0IENYWDsgXAorLS0gCisyLjguMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yLzAwMjktRW5hYmxlLVNQRS1BbHRpVmVjLWdlbmVyYXRpb24tb24tcG93ZXBjLWxpbnV4LXRhcmdldC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAyOS1FbmFibGUtU1BFLUFsdGlWZWMtZ2VuZXJhdGlvbi1vbi1wb3dlcGMtbGludXgtdGFyZ2V0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3YjljMGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yLzAwMjktRW5hYmxlLVNQRS1BbHRpVmVjLWdlbmVyYXRpb24tb24tcG93ZXBjLWxpbnV4LXRhcmdldC5wYXRjaApAQCAtMCwwICsxLDU2IEBACitGcm9tIGUxNDA3MDA5NzZlM2I3ZWI0MjUwYjFmZmRlOWJjMTY0OTQ0NTY5MDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kcnUtQ2V6YXIgU2FyZGFuIDxhbGV4YW5kcnUuc2FyZGFuQGZyZWVzY2FsZS5jb20+CitEYXRlOiBXZWQsIDUgRmViIDIwMTQgMTY6NTI6MzEgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAyOS80Nl0gRW5hYmxlIFNQRSAmIEFsdGlWZWMgZ2VuZXJhdGlvbiBvbiBwb3dlcGMqbGludXggdGFyZ2V0CisKK1doZW4gaXMgY29uZmlndXJlZCB3aXRoIC0tdGFyZ2V0PXBvd2VycGMtbGludXgsIHRoZSByZXN1bHRpbmcgR0NDIHdpbGwKK25vdCBiZSBhYmxlIHRvIGdlbmVyYXRlIGNvZGUgZm9yIFNQRSB0YXJnZXRzIChlNTAwdjEvdjIpLgorR0NDIGNvbmZpZ3VyZWQgd2l0aCAtLXRhcmdldD1wb3dlcnBjLWxpbnV4c3BlIHdpbGwgbm90IGJlIGFibGUgdG8KK2dlbmVyYXRlIEFsdGlWZWMgaW5zdHJ1Y3Rpb25zIChmb3IgZTY1MDApLgorVGhpcyBwYXRjaCBtb2RpZmllcyB0aGUgY29uZmlndXJlZCBmaWxlIHN1Y2ggdGhhdCBTUEUgb3IgQWx0aVZlYyBjb2RlCitjYW4gYmUgZ2VuZXJhdGVkIHdoZW4gZ2NjIGlzIGNvbmZpZ3VyZWQgd2l0aCAtLXRhcmdldD1wb3dlcnBjLWxpbnV4LgorVGhlIEFCSSBhbmQgc3BlY2lmZmljIGluc3RydWN0aW9ucyBjYW4gYmUgc2VsZWN0ZWQgdGhyb3VnaCB0aGUKKyItbWFiaT1zcGUgb3IgLW1hYmk9YWx0aXZlYyIgYW5kIHRoZSAiLW1zcGUgb3IgLW1hbHRpdmVjIiBwYXJhbWV0ZXJzLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCisKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRydS1DZXphciBTYXJkYW4gPGFsZXhhbmRydS5zYXJkYW5AZnJlZXNjYWxlLmNvbT4KKy0tLQorIGdjYy9jb25maWcuZ2NjICAgICAgICAgICAgICAgfCA5ICsrKysrKysrLQorIGdjYy9jb25maWcvcnM2MDAwL2xpbnV4c3BlLmggfCAzIC0tLQorIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy5nY2MgYi9nY2MvY29uZmlnLmdjYworaW5kZXggOWM2ZDE1Ni4uMThjZmY1YSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcuZ2NjCisrKysgYi9nY2MvY29uZmlnLmdjYworQEAgLTIzOTIsNyArMjM5MiwxNCBAQCBwb3dlcnBjLSotcnRlbXMqKQorIAl0bWFrZV9maWxlPSIke3RtYWtlX2ZpbGV9IHJzNjAwMC90LWZwcnVsZXMgcnM2MDAwL3QtcnRlbXMgcnM2MDAwL3QtcHBjY29tbSIKKyAJOzsKKyBwb3dlcnBjKi0qLWxpbnV4KikKKy0JdG1fZmlsZT0iJHt0bV9maWxlfSBkYnhlbGYuaCBlbGZvcy5oIGdudS11c2VyLmggZnJlZWJzZC1zcGVjLmggcnM2MDAwL3N5c3Y0LmgiCisrCWNhc2UgJHt0YXJnZXR9IGluCisrCSAgICBwb3dlcnBjKi0qLWxpbnV4KnNwZSogfCBwb3dlcnBjKi0qLWxpbnV4KmFsdGl2ZWMqKQorKwkJdG1fZmlsZT0iJHt0bV9maWxlfSBkYnhlbGYuaCBlbGZvcy5oIGdudS11c2VyLmggZnJlZWJzZC1zcGVjLmggcnM2MDAwL3N5c3Y0LmgiCisrCQk7OworKwkgICAgKikKKysJCXRtX2ZpbGU9IiR7dG1fZmlsZX0gZGJ4ZWxmLmggZWxmb3MuaCBnbnUtdXNlci5oIGZyZWVic2Qtc3BlYy5oIHJzNjAwMC9zeXN2NC5oIHJzNjAwMC9saW51eGFsdGl2ZWMuaCByczYwMDAvbGludXhzcGUuaCByczYwMDAvZTUwMC5oIgorKwkJOzsKKysJZXNhYworIAlleHRyYV9vcHRpb25zPSIke2V4dHJhX29wdGlvbnN9IHJzNjAwMC9zeXN2NC5vcHQiCisgCXRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZX0gcnM2MDAwL3QtZnBydWxlcyByczYwMDAvdC1wcGNjb21tIgorIAlleHRyYV9vYmpzPSIkZXh0cmFfb2JqcyByczYwMDAtbGludXgubyIKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eHNwZS5oIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXhzcGUuaAoraW5kZXggMzU2MjNjZC4uZjc0ZTAwZCAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4c3BlLmgKKysrKyBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4c3BlLmgKK0BAIC0yNyw2ICsyNywzIEBACisgI3VuZGVmCVRBUkdFVF9ERUZBVUxUCisgI2RlZmluZSBUQVJHRVRfREVGQVVMVCBNQVNLX1NUUklDVF9BTElHTgorICNlbmRpZgorLQorLSN1bmRlZiAgQVNNX0RFRkFVTFRfU1BFQworLSNkZWZpbmUJQVNNX0RFRkFVTFRfU1BFQyAiLW1wcGMgLW1zcGUgLW1lNTAwIgorLS0gCisyLjguMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yLzAwMzAtRGlzYWJsZS10aGUtTVVMVElMSUJfT1NESVJOQU1FUy1hbmQtb3RoZXItbXVsdGlsaWItby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAzMC1EaXNhYmxlLXRoZS1NVUxUSUxJQl9PU0RJUk5BTUVTLWFuZC1vdGhlci1tdWx0aWxpYi1vLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwOWQwMTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yLzAwMzAtRGlzYWJsZS10aGUtTVVMVElMSUJfT1NESVJOQU1FUy1hbmQtb3RoZXItbXVsdGlsaWItby5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tIDBkZGNiOTVhODY4MzA3NjZmZDAyMTIyZjE5Mzg0ZmM5MjliMzc3YzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyMCBGZWIgMjAxNSAxMDoyMTo1NSArMDAwMAorU3ViamVjdDogW1BBVENIIDMwLzQ2XSBEaXNhYmxlIHRoZSBNVUxUSUxJQl9PU0RJUk5BTUVTIGFuZCBvdGhlciBtdWx0aWxpYgorIG9wdGlvbnMuCisKK0hhcmQgY29kaW5nIHRoZSBNVUxUSUxJQl9PU0RJUk5BTUVTIHdpdGggLi4vbGliNjQgaXMgY2F1c2luZyBwcm9ibGVtcyBvbgorc3lzdGVtcyB3aGVyZSB0aGUgbGliZGlyIGlzIE5PVCBzZXQgdG8gL2xpYjY0LiAgVGhpcyBpcyBhbGxvd2VkIGJ5IHRoZQorQUJJLCBhcworbG9uZyBhcyB0aGUgZHluYW1pYyBsb2FkZXIgaXMgcHJlc2VudCBpbiAvbGliLgorCitXZSBzaW1wbHkgd2FudCB0byB1c2UgdGhlIGRlZmF1bHQgcnVsZXMgaW4gZ2NjIHRvIGZpbmQgYW5kIGNvbmZpZ3VyZSB0aGUKK25vcm1hbCBsaWJkaXIuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZVtPRS1TcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdjYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXggfCA4ICsrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXggYi9nY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4CitpbmRleCAxY2ZlOWYzLi5kNjg4YWM5IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L3QtYWFyY2g2NC1saW51eAorKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L3QtYWFyY2g2NC1saW51eAorQEAgLTIxLDggKzIxLDggQEAKKyBMSUIxQVNNU1JDICAgPSBhYXJjaDY0L2xpYjFmdW5jcy5hc20KKyBMSUIxQVNNRlVOQ1MgPSBfYWFyY2g2NF9zeW5jX2NhY2hlX3JhbmdlCisgCistQUFSQ0hfQkUgPSAkKGlmICQoZmluZHN0cmluZyBUQVJHRVRfQklHX0VORElBTl9ERUZBVUxUPTEsICQodG1fZGVmaW5lcykpLF9iZSkKKy1NVUxUSUxJQl9PU0RJUk5BTUVTID0gbWFiaS5scDY0PS4uL2xpYjY0JChjYWxsIGlmX211bHRpYXJjaCw6YWFyY2g2NCQoQUFSQ0hfQkUpLWxpbnV4LWdudSkKKy1NVUxUSUFSQ0hfRElSTkFNRSA9ICQoY2FsbCBpZl9tdWx0aWFyY2gsYWFyY2g2NCQoQUFSQ0hfQkUpLWxpbnV4LWdudSkKKysjQUFSQ0hfQkUgPSAkKGlmICQoZmluZHN0cmluZyBUQVJHRVRfQklHX0VORElBTl9ERUZBVUxUPTEsICQodG1fZGVmaW5lcykpLF9iZSkKKysjTVVMVElMSUJfT1NESVJOQU1FUyA9IG1hYmkubHA2ND0uLi9saWI2NCQoY2FsbCBpZl9tdWx0aWFyY2gsOmFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnUpCisrI01VTFRJQVJDSF9ESVJOQU1FID0gJChjYWxsIGlmX211bHRpYXJjaCxhYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251KQorIAorLU1VTFRJTElCX09TRElSTkFNRVMgKz0gbWFiaS5pbHAzMj0uLi9saWJpbHAzMgorKyNNVUxUSUxJQl9PU0RJUk5BTUVTICs9IG1hYmkuaWxwMzI9Li4vbGliaWxwMzIKKy0tIAorMi44LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDMxLUVuc3VyZS10YXJnZXQtZ2NjLWhlYWRlcnMtY2FuLWJlLWluY2x1ZGVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDMxLUVuc3VyZS10YXJnZXQtZ2NjLWhlYWRlcnMtY2FuLWJlLWluY2x1ZGVkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiMWNkMGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yLzAwMzEtRW5zdXJlLXRhcmdldC1nY2MtaGVhZGVycy1jYW4tYmUtaW5jbHVkZWQucGF0Y2gKQEAgLTAsMCArMSw5OCBAQAorRnJvbSBmYzY2MjE0MzVhNjRhOWQ2OWFhMjUxYjcwMzYxZGE5NGNmMmRiNmJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjAgRmViIDIwMTUgMTA6MjU6MTEgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAzMS80Nl0gRW5zdXJlIHRhcmdldCBnY2MgaGVhZGVycyBjYW4gYmUgaW5jbHVkZWQKKworVGhlcmUgYXJlIGEgZmV3IGhlYWRlcnMgaW5zdGFsbGVkIGFzIHBhcnQgb2YgdGhlIE9wZW5FbWJlZGRlZAorZ2NjLXJ1bnRpbWUgdGFyZ2V0IChvbXAuaCwgc3NwLyouaCkuIEJlaW5nIGluc3RhbGxlZCBmcm9tIGEgcmVjaXBlCitidWlsdCBmb3IgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUsIHRoZXNlIGFyZSB3aXRoaW4gdGhlIHRhcmdldAorc3lzcm9vdCBhbmQgbm90IGNyb3NzL25hdGl2ZXNkazsgdGh1cyB0aGV5IHdlcmVuJ3QgYWJsZSB0byBiZQorZm91bmQgYnkgZ2NjIHdpdGggdGhlIGV4aXN0aW5nIHNlYXJjaCBwYXRocy4gQWRkIHN1cHBvcnQgZm9yCitwaWNraW5nIHVwIHRoZXNlIGhlYWRlcnMgdW5kZXIgdGhlIHN5c3Jvb3Qgc3VwcGxpZWQgb24gdGhlIGdjYworY29tbWFuZCBsaW5lIGluIG9yZGVyIHRvIHJlc29sdmUgdGhpcy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFBhdWwgRWdnbGV0b24gPHBhdWwuZWdnbGV0b25AbGludXguaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdjYy9NYWtlZmlsZS5pbiAgfCAyICsrCisgZ2NjL2NwcGRlZmF1bHQuYyB8IDQgKysrKworIGdjYy9kZWZhdWx0cy5oICAgfCA5ICsrKysrKysrKworIGdjYy9nY2MuYyAgICAgICAgfCA3IC0tLS0tLS0KKyA0IGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvTWFrZWZpbGUuaW4gYi9nY2MvTWFrZWZpbGUuaW4KK2luZGV4IDQ1MGNiNzkuLmNjNzU1MzYgMTAwNjQ0CistLS0gYS9nY2MvTWFrZWZpbGUuaW4KKysrKyBiL2djYy9NYWtlZmlsZS5pbgorQEAgLTU5Myw2ICs1OTMsNyBAQCBsaWJleGVjZGlyID0gQGxpYmV4ZWNkaXJACisgCisgIyBEaXJlY3RvcnkgaW4gd2hpY2ggdGhlIGNvbXBpbGVyIGZpbmRzIGxpYnJhcmllcyBldGMuCisgbGlic3ViZGlyID0gJChsaWJkaXIpL2djYy8kKHJlYWxfdGFyZ2V0X25vbmNhbm9uaWNhbCkvJCh2ZXJzaW9uKSQoYWNjZWxfZGlyX3N1ZmZpeCkKKytsaWJzdWJkaXJfdGFyZ2V0ID0gZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJCh2ZXJzaW9uKQorICMgRGlyZWN0b3J5IGluIHdoaWNoIHRoZSBjb21waWxlciBmaW5kcyBleGVjdXRhYmxlcworIGxpYmV4ZWNzdWJkaXIgPSAkKGxpYmV4ZWNkaXIpL2djYy8kKHJlYWxfdGFyZ2V0X25vbmNhbm9uaWNhbCkvJCh2ZXJzaW9uKSQoYWNjZWxfZGlyX3N1ZmZpeCkKKyAjIERpcmVjdG9yeSBpbiB3aGljaCBhbGwgcGx1Z2luIHJlc291cmNlcyBhcmUgaW5zdGFsbGVkCitAQCAtMjY4OCw2ICsyNjg5LDcgQEAgQ0ZMQUdTLWludGwubyArPSAtRExPQ0FMRURJUj1cIiQobG9jYWxlZGlyKVwiCisgCisgUFJFUFJPQ0VTU09SX0RFRklORVMgPSBcCisgICAtREdDQ19JTkNMVURFX0RJUj1cIiQobGlic3ViZGlyKS9pbmNsdWRlXCIgXAorKyAgLURHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VUPVwiJChsaWJzdWJkaXJfdGFyZ2V0KS9pbmNsdWRlXCIgXAorICAgLURGSVhFRF9JTkNMVURFX0RJUj1cIiQobGlic3ViZGlyKS9pbmNsdWRlLWZpeGVkXCIgXAorICAgLURHUExVU1BMVVNfSU5DTFVERV9ESVI9XCIkKGdjY19neHhfaW5jbHVkZV9kaXIpXCIgXAorICAgLURHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1Q9JChnY2NfZ3h4X2luY2x1ZGVfZGlyX2FkZF9zeXNyb290KSBcCitkaWZmIC0tZ2l0IGEvZ2NjL2NwcGRlZmF1bHQuYyBiL2djYy9jcHBkZWZhdWx0LmMKK2luZGV4IDU0YWFmMDYuLjdiNGRkNTEgMTAwNjQ0CistLS0gYS9nY2MvY3BwZGVmYXVsdC5jCisrKysgYi9nY2MvY3BwZGVmYXVsdC5jCitAQCAtNTksNiArNTksMTAgQEAgY29uc3Qgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSBjcHBfaW5jbHVkZV9kZWZhdWx0c1tdCisgICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZ2NjJ3MgcHJpdmF0ZSBoZWFkZXJzLiAgKi8KKyAgICAgeyBHQ0NfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCisgI2VuZGlmCisrI2lmZGVmIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQKKysgICAgLyogVGhpcyBpcyB0aGUgZGlyIGZvciBnY2MncyBwcml2YXRlIGhlYWRlcnMgdW5kZXIgdGhlIHNwZWNpZmllZCBzeXNyb290LiAgKi8KKysgICAgeyBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVCwgIkdDQyIsIDAsIDAsIDEsIDAgfSwKKysjZW5kaWYKKyAjaWZkZWYgTE9DQUxfSU5DTFVERV9ESVIKKyAgICAgLyogL3Vzci9sb2NhbC9pbmNsdWRlIGNvbWVzIGJlZm9yZSB0aGUgZml4aW5jbHVkZWQgaGVhZGVyIGZpbGVzLiAgKi8KKyAgICAgeyBMT0NBTF9JTkNMVURFX0RJUiwgMCwgMCwgMSwgMSwgMiB9LAorZGlmZiAtLWdpdCBhL2djYy9kZWZhdWx0cy5oIGIvZ2NjL2RlZmF1bHRzLmgKK2luZGV4IDNlMTgzMzguLjBmMzE3ZjIgMTAwNjQ0CistLS0gYS9nY2MvZGVmYXVsdHMuaAorKysrIGIvZ2NjL2RlZmF1bHRzLmgKK0BAIC0xNDkyLDQgKzE0OTIsMTMgQEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCisgI2RlZmluZSBEV0FSRl9HTkFUX0VOQ09ESU5HU19ERUZBVUxUIERXQVJGX0dOQVRfRU5DT0RJTkdTX0dEQgorICNlbmRpZgorIAorKy8qIERlZmF1bHQgcHJlZml4ZXMgdG8gYXR0YWNoIHRvIGNvbW1hbmQgbmFtZXMuICAqLworKworKyNpZm5kZWYgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8xCisrI2RlZmluZSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzEgIi9saWIvIgorKyNlbmRpZgorKyNpZm5kZWYgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yCisrI2RlZmluZSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgIi91c3IvbGliLyIKKysjZW5kaWYKKysKKyAjZW5kaWYgIC8qICEgR0NDX0RFRkFVTFRTX0ggKi8KK2RpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKK2luZGV4IDA0ZmE4MWQuLjk3NTBjYzIgMTAwNjQ0CistLS0gYS9nY2MvZ2NjLmMKKysrKyBiL2djYy9nY2MuYworQEAgLTE0NTAsMTMgKzE0NTAsNiBAQCBzdGF0aWMgY29uc3QgY2hhciAqZ2NjX2xpYmV4ZWNfcHJlZml4OworIAorIC8qIERlZmF1bHQgcHJlZml4ZXMgdG8gYXR0YWNoIHRvIGNvbW1hbmQgbmFtZXMuICAqLworIAorLSNpZm5kZWYgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8xCistI2RlZmluZSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzEgIi9saWIvIgorLSNlbmRpZgorLSNpZm5kZWYgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yCistI2RlZmluZSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgIi91c3IvbGliLyIKKy0jZW5kaWYKKy0KKyAjaWZkZWYgQ1JPU1NfRElSRUNUT1JZX1NUUlVDVFVSRSAgLyogRG9uJ3QgdXNlIHRoZXNlIHByZWZpeGVzIGZvciBhIGNyb3NzIGNvbXBpbGVyLiAgKi8KKyAjdW5kZWYgTURfRVhFQ19QUkVGSVgKKyAjdW5kZWYgTURfU1RBUlRGSUxFX1BSRUZJWAorLS0gCisyLjguMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yLzAwMzItZ2NjLTQuOC13b24tdC1idWlsZC13aXRoLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAzMi1nY2MtNC44LXdvbi10LWJ1aWxkLXdpdGgtZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwYjAwMWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yLzAwMzItZ2NjLTQuOC13b24tdC1idWlsZC13aXRoLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZy5wYXRjaApAQCAtMCwwICsxLDU0IEBACitGcm9tIGZmOTM5YzUwNjNkOGY4ZDQ0NGJkYjI1NjUxYTBhNDhlNjA4ZWZhYTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyMCBGZWIgMjAxNSAxMToxNzoxOSArMDAwMAorU3ViamVjdDogW1BBVENIIDMyLzQ2XSBnY2MgNC44KyB3b24ndCBidWlsZCB3aXRoIC0tZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nCisKK3NpbmNlIHRoZSAqLlBwbyBmaWxlcyBkb24ndCBnZXQgY3JlYXRlZCB1bmxlc3MgLS1lbmFibGUtZGVwZW5kZW5jeS10cmFja2luZyBpcyB0cnVlLgorCitUaGlzIHBhdGNoIGVuc3VyZXMgd2Ugb25seSB1c2UgdGhvc2UgY29tcGlsZXIgb3B0aW9ucyB3aGVuIGl0cyBlbmFibGVkLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCisoUHJvYmxlbSB3YXMgYWxyZWFkeSByZXBvcnRlZCB1cHN0cmVhbSwgYXR0YWNoZWQgdGhpcyBwYXRjaCB0aGVyZQoraHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD01NTkzMCkKKworUlAKKzIwMTIvMDkvMjIKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxpYmF0b21pYy9NYWtlZmlsZS5hbSB8IDMgKystCisgbGliYXRvbWljL01ha2VmaWxlLmluIHwgMyArKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmF0b21pYy9NYWtlZmlsZS5hbSBiL2xpYmF0b21pYy9NYWtlZmlsZS5hbQoraW5kZXggYjM1MTI0NC4uMzk5Y2UxOCAxMDA2NDQKKy0tLSBhL2xpYmF0b21pYy9NYWtlZmlsZS5hbQorKysrIGIvbGliYXRvbWljL01ha2VmaWxlLmFtCitAQCAtMTAxLDcgKzEwMSw4IEBAIFBBVF9TCQk9ICQod29yZCAzLCQoUEFUX1NQTElUKSkKKyBJRlVOQ19ERUYJPSAtRElGVU5DX0FMVD0kKFBBVF9TKQorIElGVU5DX09QVAk9ICQod29yZCAkKFBBVF9TKSwkKElGVU5DX09QVElPTlMpKQorIAorLU1fREVQUwkJPSAtTVQgJEAgLU1EIC1NUCAtTUYgJChERVBESVIpLyQoQEYpLlBwbworK0BBTURFUF9UUlVFQE1fREVQUwkJPSAtTVQgJEAgLU1EIC1NUCAtTUYgJChERVBESVIpLyQoQEYpLlBwbworK0BBTURFUF9GQUxTRUBNX0RFUFMJCT0KKyBNX1NJWkUJCT0gLUROPSQoUEFUX04pCisgTV9JRlVOQwkJPSAkKGlmICQoUEFUX1MpLCQoSUZVTkNfREVGKSAkKElGVU5DX09QVCkpCisgTV9GSUxFCQk9ICQoUEFUX0JBU0UpX24uYworZGlmZiAtLWdpdCBhL2xpYmF0b21pYy9NYWtlZmlsZS5pbiBiL2xpYmF0b21pYy9NYWtlZmlsZS5pbgoraW5kZXggYTA4M2Q4Ny4uYTkyY2ZjZSAxMDA2NDQKKy0tLSBhL2xpYmF0b21pYy9NYWtlZmlsZS5pbgorKysrIGIvbGliYXRvbWljL01ha2VmaWxlLmluCitAQCAtMzMwLDcgKzMzMCw4IEBAIFBBVF9OID0gJCh3b3JkIDIsJChQQVRfU1BMSVQpKQorIFBBVF9TID0gJCh3b3JkIDMsJChQQVRfU1BMSVQpKQorIElGVU5DX0RFRiA9IC1ESUZVTkNfQUxUPSQoUEFUX1MpCisgSUZVTkNfT1BUID0gJCh3b3JkICQoUEFUX1MpLCQoSUZVTkNfT1BUSU9OUykpCistTV9ERVBTID0gLU1UICRAIC1NRCAtTVAgLU1GICQoREVQRElSKS8kKEBGKS5QcG8KKytAQU1ERVBfVFJVRUBNX0RFUFMgPSAtTVQgJEAgLU1EIC1NUCAtTUYgJChERVBESVIpLyQoQEYpLlBwbworK0BBTURFUF9GQUxTRUBNX0RFUFMgPQorIE1fU0laRSA9IC1ETj0kKFBBVF9OKQorIE1fSUZVTkMgPSAkKGlmICQoUEFUX1MpLCQoSUZVTkNfREVGKSAkKElGVU5DX09QVCkpCisgTV9GSUxFID0gJChQQVRfQkFTRSlfbi5jCistLSAKKzIuOC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAzMy1Eb24tdC1zZWFyY2gtaG9zdC1kaXJlY3RvcnktZHVyaW5nLXJlbGluay1pZi1pbnN0X3ByLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDMzLURvbi10LXNlYXJjaC1ob3N0LWRpcmVjdG9yeS1kdXJpbmctcmVsaW5rLWlmLWluc3RfcHIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQyNWQ3MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAzMy1Eb24tdC1zZWFyY2gtaG9zdC1kaXJlY3RvcnktZHVyaW5nLXJlbGluay1pZi1pbnN0X3ByLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gNTA5MmY1Mzg5ZDAyZTc4Y2Q1OTY5MGNmM2ZjYTI0YjU2YTk3YWZmMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDMgTWFyIDIwMTUgMDg6MjE6MTkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAzMy80Nl0gRG9uJ3Qgc2VhcmNoIGhvc3QgZGlyZWN0b3J5IGR1cmluZyAicmVsaW5rIiBpZgorICRpbnN0X3ByZWZpeCBpcyBwcm92aWRlZAorCitodHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvbGlidG9vbC1wYXRjaGVzLzIwMTEtMDEvbXNnMDAwMjYuaHRtbAorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbHRtYWluLnNoIHwgNSArKystLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKK2luZGV4IDUyYmRiZGIuLjgyYmNlYzMgMTAwNjQ0CistLS0gYS9sdG1haW4uc2gKKysrKyBiL2x0bWFpbi5zaAorQEAgLTYwMDQsMTIgKzYwMDQsMTMgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICAgZmkKKyAJICAgIGVsc2UKKyAJICAgICAgIyBXZSBjYW5ub3Qgc2VlbSB0byBoYXJkY29kZSBpdCwgZ3Vlc3Mgd2UnbGwgZmFrZSBpdC4KKysJICAgICAgIyBEZWZhdWx0IGlmICRsaWJkaXIgaXMgbm90IHJlbGF0aXZlIHRvIHRoZSBwcmVmaXg6CisgCSAgICAgIGFkZF9kaXI9Ii1MJGxpYmRpciIKKy0JICAgICAgIyBUcnkgbG9va2luZyBmaXJzdCBpbiB0aGUgbG9jYXRpb24gd2UncmUgYmVpbmcgaW5zdGFsbGVkIHRvLgorKworIAkgICAgICBpZiB0ZXN0IC1uICIkaW5zdF9wcmVmaXhfZGlyIjsgdGhlbgorIAkJY2FzZSAkbGliZGlyIGluCisgCQkgIFtcXC9dKikKKy0JCSAgICBhZGRfZGlyPSIkYWRkX2RpciAtTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgorKwkJICAgIGFkZF9kaXI9Ii1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCisgCQkgICAgOzsKKyAJCWVzYWMKKyAJICAgICAgZmkKKy0tIAorMi44LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDM0LVVzZS1TWVNURU1MSUJTX0RJUi1yZXBsYWNlbWVudC1pbnN0ZWFkLW9mLWhhcmRjb2RpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yLzAwMzQtVXNlLVNZU1RFTUxJQlNfRElSLXJlcGxhY2VtZW50LWluc3RlYWQtb2YtaGFyZGNvZGluZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MjJhODU1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDM0LVVzZS1TWVNURU1MSUJTX0RJUi1yZXBsYWNlbWVudC1pbnN0ZWFkLW9mLWhhcmRjb2RpbmcucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSAxZmFhNmY2OWY5M2JiOTVhZjJiMmIyYmQyNGUxODFiNTBmYjViMzdjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjggQXByIDIwMTUgMjM6MTU6MjcgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAzNC80Nl0gVXNlIFNZU1RFTUxJQlNfRElSIHJlcGxhY2VtZW50IGluc3RlYWQgb2YgaGFyZGNvZGluZworIGJhc2VfbGliZGlyCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgQ29uZmlndXJhdGlvbl0KKworIGdjYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAoraW5kZXggNWZjYWE1OS4uODU4OGFjMCAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKKysrKyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKK0BAIC0yMSw3ICsyMSw3IEBACisgI2lmbmRlZiBHQ0NfQUFSQ0g2NF9MSU5VWF9ICisgI2RlZmluZSBHQ0NfQUFSQ0g2NF9MSU5VWF9ICisgCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCisgCisgI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVIKKyAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbXVzbC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKKy0tIAorMi44LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDM1LWFhcmNoNjQtQWRkLXN1cHBvcnQtZm9yLW11c2wtbGRzby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAzNS1hYXJjaDY0LUFkZC1zdXBwb3J0LWZvci1tdXNsLWxkc28ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWRmYzQ3MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAzNS1hYXJjaDY0LUFkZC1zdXBwb3J0LWZvci1tdXNsLWxkc28ucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSAzNzY4NDY4YzFhNmNjMTcwZmZmODhjMDNiODA4Yzk3NWFjNjUzODExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjggQXByIDIwMTUgMjM6MTg6MzkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAzNS80Nl0gYWFyY2g2NDogQWRkIHN1cHBvcnQgZm9yIG11c2wgbGRzbworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIENvbmZpZ3VyYXRpb25dCisKKyBnY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaCBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKK2luZGV4IDg1ODhhYzAuLjk0NmIzY2EgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCisrKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCitAQCAtMjQsNyArMjQsNyBAQAorICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKKyAKKyAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUgorLSNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1tdXNsLWFhcmNoNjQle21iaWctZW5kaWFuOl9iZX0le21hYmk9aWxwMzI6X2lscDMyfS5zby4xIgorKyNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAgU1lTVEVNTElCU19ESVIgImxkLW11c2wtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCisgCisgI3VuZGVmICBBU0FOX0NDMV9TUEVDCisgI2RlZmluZSBBU0FOX0NDMV9TUEVDICIleyU6c2FuaXRpemUoYWRkcmVzcyk6LWZ1bndpbmQtdGFibGVzfSIKKy0tIAorMi44LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDM2LWxpYmNjMS1maXgtbGliY2MxLXMtaW5zdGFsbC1wYXRoLWFuZC1ycGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAzNi1saWJjYzEtZml4LWxpYmNjMS1zLWluc3RhbGwtcGF0aC1hbmQtcnBhdGgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjg5YTg4NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAzNi1saWJjYzEtZml4LWxpYmNjMS1zLWluc3RhbGwtcGF0aC1hbmQtcnBhdGgucGF0Y2gKQEAgLTAsMCArMSw1NCBAQAorRnJvbSBmNGQzYzhlOTcwZDQyYTQzY2QzZDJmNzUxZTEzMzI0ZWZhOTM2ZmY4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBTdW4sIDUgSnVsIDIwMTUgMjA6MjU6MTggLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAzNi80Nl0gbGliY2MxOiBmaXggbGliY2MxJ3MgaW5zdGFsbCBwYXRoIGFuZCBycGF0aAorCisqIEluc3RhbGwgbGliY2MxLnNvIGFuZCBsaWJjYzFwbHVnaW4uc28gaW50bworICAkKGxpYmV4ZWNkaXIpL2djYy8kKHRhcmdldF9ub25jYW5vbmljYWwpLyQoZ2NjX3ZlcnNpb24pLCBhcyB3aGF0IHdlCisgIGhhZCBkb25lIHRvIGx0by1wbHVnaW4uCisqIEZpeCBiYWQgUlBBVEggaXVzc3VlOgorICBnY2MtNS4yLjA6IHBhY2thZ2UgZ2NjLXBsdWdpbnMgY29udGFpbnMgYmFkIFJQQVRIIC9wYXRodC90by90bXAvc3lzcm9vdHMvcWVtdXg4Ni02NC91c3IvbGliNjQvLi4vbGliNjQgaW4gZmlsZQorIC9wYXRoL3RvL2djYy81LjIuMC1yMC9wYWNrYWdlcy1zcGxpdC9nY2MtcGx1Z2lucy91c3IvbGliNjQvZ2NjL3g4Nl82NC1wb2t5LWxpbnV4LzUuMi4wL3BsdWdpbi9saWJjYzFwbHVnaW4uc28uMC4wLjAKKyBbcnBhdGhzXQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIGNvbmZpZ3VyYXRpb25dCisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgbGliY2MxL01ha2VmaWxlLmFtIHwgNCArKy0tCisgbGliY2MxL01ha2VmaWxlLmluIHwgNCArKy0tCisgMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJjYzEvTWFrZWZpbGUuYW0gYi9saWJjYzEvTWFrZWZpbGUuYW0KK2luZGV4IGI0MDgyMGIuLjMyOTMwYzUgMTAwNjQ0CistLS0gYS9saWJjYzEvTWFrZWZpbGUuYW0KKysrKyBiL2xpYmNjMS9NYWtlZmlsZS5hbQorQEAgLTM1LDggKzM1LDggQEAgbGliaWJlcnR5ID0gJChpZiAkKHdpbGRjYXJkICQobGliaWJlcnR5X25vYXNhbikpLCQoV2MpJChsaWJpYmVydHlfbm9hc2FuKSwgXAorIAkgICAgJChXYykkKGxpYmliZXJ0eV9ub3JtYWwpKSkKKyBsaWJpYmVydHlfZGVwID0gJChwYXRzdWJzdCAkKFdjKSUsJSwkKGxpYmliZXJ0eSkpCisgCistcGx1Z2luZGlyID0gJChsaWJkaXIpL2djYy8kKHRhcmdldF9ub25jYW5vbmljYWwpLyQoZ2NjX3ZlcnNpb24pL3BsdWdpbgorLWNjMWxpYmRpciA9ICQobGliZGlyKS8kKGxpYnN1ZmZpeCkKKytjYzFsaWJkaXIgPSAkKGxpYmV4ZWNkaXIpL2djYy8kKHRhcmdldF9ub25jYW5vbmljYWwpLyQoZ2NjX3ZlcnNpb24pCisrcGx1Z2luZGlyID0gJChjYzFsaWJkaXIpCisgCisgaWYgRU5BQkxFX1BMVUdJTgorIHBsdWdpbl9MVExJQlJBUklFUyA9IGxpYmNjMXBsdWdpbi5sYQorZGlmZiAtLWdpdCBhL2xpYmNjMS9NYWtlZmlsZS5pbiBiL2xpYmNjMS9NYWtlZmlsZS5pbgoraW5kZXggNzlkMzlkMy4uMjI3ZWMyMiAxMDA2NDQKKy0tLSBhL2xpYmNjMS9NYWtlZmlsZS5pbgorKysrIGIvbGliY2MxL01ha2VmaWxlLmluCitAQCAtMjkxLDggKzI5MSw4IEBAIGxpYmliZXJ0eSA9ICQoaWYgJCh3aWxkY2FyZCAkKGxpYmliZXJ0eV9ub2FzYW4pKSwkKFdjKSQobGliaWJlcnR5X25vYXNhbiksIFwKKyAJICAgICQoV2MpJChsaWJpYmVydHlfbm9ybWFsKSkpCisgCisgbGliaWJlcnR5X2RlcCA9ICQocGF0c3Vic3QgJChXYyklLCUsJChsaWJpYmVydHkpKQorLXBsdWdpbmRpciA9ICQobGliZGlyKS9nY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKGdjY192ZXJzaW9uKS9wbHVnaW4KKy1jYzFsaWJkaXIgPSAkKGxpYmRpcikvJChsaWJzdWZmaXgpCisrY2MxbGliZGlyID0gJChsaWJleGVjZGlyKS9nY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKGdjY192ZXJzaW9uKQorK3BsdWdpbmRpciA9ICQoY2MxbGliZGlyKQorIEBFTkFCTEVfUExVR0lOX1RSVUVAcGx1Z2luX0xUTElCUkFSSUVTID0gbGliY2MxcGx1Z2luLmxhCisgQEVOQUJMRV9QTFVHSU5fVFJVRUBjYzFsaWJfTFRMSUJSQVJJRVMgPSBsaWJjYzEubGEKKyBCVUlMVF9TT1VSQ0VTID0gY29tcGlsZXItbmFtZS5oCistLSAKKzIuOC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAzNy1oYW5kbGUtc3lzcm9vdC1zdXBwb3J0LWZvci1uYXRpdmVzZGstZ2NjLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDM3LWhhbmRsZS1zeXNyb290LXN1cHBvcnQtZm9yLW5hdGl2ZXNkay1nY2MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTVlZmNiMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAzNy1oYW5kbGUtc3lzcm9vdC1zdXBwb3J0LWZvci1uYXRpdmVzZGstZ2NjLnBhdGNoCkBAIC0wLDAgKzEsMjEzIEBACitGcm9tIDE0NzViOTQxZDdhOWM5ODc0YjBmYjA1NThkMDE4MDU5NDU0NjczMzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCA3IERlYyAyMDE1IDIzOjM5OjU0ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMzcvNDZdIGhhbmRsZSBzeXNyb290IHN1cHBvcnQgZm9yIG5hdGl2ZXNkay1nY2MKKworQmVpbmcgYWJsZSB0byBidWlsZCBhIG5hdGl2ZXNkayBnY2MgaXMgdXNlZnVsLCBwYXJ0aWN1bGFybHkgaW4gY2FzZXMKK3doZXJlIHRoZSBob3N0IGNvbXBpbGVyIG1heSBiZSBvZiBhbiBpbmNvbXBhdGlibGUgdmVyc2lvbiAob3IgYSAzMgorYml0IGNvbXBpbGVyIGlzIG5lZWRlZCkuCisKK1NhZGx5LCBidWlsZGluZyBuYXRpdmVzZGstZ2NjIGlzIG5vdCBzdHJhaWdodCBmb3J3YXJkLiBXZSBpbnN0YWxsCituYXRpdmVzZGstZ2NjIGludG8gYSByZWxvY2F0YWJsZSBsb2NhdGlvbiBhbmQgdGhpcyBtZWFucyB0aGF0IGl0cworbGlicmFyeSBsb2NhdGlvbnMgY2FuIGNoYW5nZS4gIk5vcm1hbCIgc3lzcm9vdCBzdXBwb3J0IGRvZXNuJ3QgaGVscAoraW4gdGhpcyBjYXNlIHNpbmNlIHRoZSB2YWx1ZXMgb2YgcGF0aHMgbGlrZSAibGliZGlyIiBjaGFuZ2UsIG5vdCBqdXN0CitiYXNlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBzeXN0ZW0uCisKK0luIG9yZGVyIHRvIGhhbmRsZSB0aGlzIHdlIGRvIHR3byB0aGluZ3M6CisKK2EpIEFkZCAlciBpbnRvIHNwZWMgZmlsZSBtYXJrdXAgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIGluamVjdGVkIHBhdGhzCisgICBzdWNoIGFzIFNZU1RFTUxJQlNfRElSIChzZWUgZ2NjX211bHRpbGliX3NldHVwKCkpLgorYikgQWRkIG90aGVyIHBhdGhzIHdoaWNoIG5lZWQgcmVsb2NhdGlvbiBpbnRvIGEgLmdjY3JlbG9jcHJlZml4IHNlY3Rpb24KKyAgIHdoaWNoIHRoZSByZWxvY2F0aW9uIGNvZGUgd2lsbCBub3RpY2UgYW5kIGFkanVzdCBhdXRvbWF0aWNhbGx5LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKK1JQIDIwMTUvNy8yOAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ2NjL2NwcGRlZmF1bHQuYyB8IDUwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCisgZ2NjL2NwcGRlZmF1bHQuaCB8ICAzICsrLQorIGdjYy9nY2MuYyAgICAgICAgfCAyMCArKysrKysrKysrKysrKy0tLS0tLQorIDMgZmlsZXMgY2hhbmdlZCwgNTMgaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY3BwZGVmYXVsdC5jIGIvZ2NjL2NwcGRlZmF1bHQuYworaW5kZXggN2I0ZGQ1MS4uOWQxMTY2YyAxMDA2NDQKKy0tLSBhL2djYy9jcHBkZWZhdWx0LmMKKysrKyBiL2djYy9jcHBkZWZhdWx0LmMKK0BAIC0zNSw2ICszNSwzMCBAQAorICMgdW5kZWYgQ1JPU1NfSU5DTFVERV9ESVIKKyAjZW5kaWYKKyAKKytzdGF0aWMgY2hhciBHUExVU1BMVVNfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gR1BMVVNQTFVTX0lOQ0xVREVfRElSOworK3N0YXRpYyBjaGFyIEdDQ19JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBHQ0NfSU5DTFVERV9ESVI7Cisrc3RhdGljIGNoYXIgR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVI7Cisrc3RhdGljIGNoYXIgR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUjsKKytzdGF0aWMgY2hhciBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQ7CisrI2lmZGVmIExPQ0FMX0lOQ0xVREVfRElSCisrc3RhdGljIGNoYXIgTE9DQUxfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gTE9DQUxfSU5DTFVERV9ESVI7CisrI2VuZGlmCisrI2lmZGVmIFBSRUZJWF9JTkNMVURFX0RJUgorK3N0YXRpYyBjaGFyIFBSRUZJWF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBQUkVGSVhfSU5DTFVERV9ESVI7CisrI2VuZGlmCisrI2lmZGVmIEZJWEVEX0lOQ0xVREVfRElSCisrc3RhdGljIGNoYXIgRklYRURfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gRklYRURfSU5DTFVERV9ESVI7CisrI2VuZGlmCisrI2lmZGVmIENST1NTX0lOQ0xVREVfRElSCisrc3RhdGljIGNoYXIgQ1JPU1NfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gQ1JPU1NfSU5DTFVERV9ESVI7CisrI2VuZGlmCisrI2lmZGVmIFRPT0xfSU5DTFVERV9ESVIKKytzdGF0aWMgY2hhciBUT09MX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFRPT0xfSU5DTFVERV9ESVI7CisrI2VuZGlmCisrI2lmZGVmIE5BVElWRV9TWVNURU1fSEVBREVSX0RJUgorK3N0YXRpYyBjaGFyIE5BVElWRV9TWVNURU1fSEVBREVSX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVI7CisrI2VuZGlmCisrCisgY29uc3Qgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSBjcHBfaW5jbHVkZV9kZWZhdWx0c1tdCisgI2lmZGVmIElOQ0xVREVfREVGQVVMVFMKKyA9IElOQ0xVREVfREVGQVVMVFM7CitAQCAtNDIsMzggKzY2LDM4IEBAIGNvbnN0IHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUgY3BwX2luY2x1ZGVfZGVmYXVsdHNbXQorID0geworICNpZmRlZiBHUExVU1BMVVNfSU5DTFVERV9ESVIKKyAgICAgLyogUGljayB1cCBHTlUgQysrIGdlbmVyaWMgaW5jbHVkZSBmaWxlcy4gICovCistICAgIHsgR1BMVVNQTFVTX0lOQ0xVREVfRElSLCAiRysrIiwgMSwgMSwKKysgICAgeyBHUExVU1BMVVNfSU5DTFVERV9ESVJWQVIsICJHKysiLCAxLCAxLAorICAgICAgIEdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVCwgMCB9LAorICNlbmRpZgorICNpZmRlZiBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUgorICAgICAvKiBQaWNrIHVwIEdOVSBDKysgdGFyZ2V0LWRlcGVuZGVudCBpbmNsdWRlIGZpbGVzLiAgKi8KKy0gICAgeyBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUiwgIkcrKyIsIDEsIDEsCisrICAgIHsgR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVJWQVIsICJHKysiLCAxLCAxLAorICAgICAgIEdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVCwgMSB9LAorICNlbmRpZgorICNpZmRlZiBHUExVU1BMVVNfQkFDS1dBUkRfSU5DTFVERV9ESVIKKyAgICAgLyogUGljayB1cCBHTlUgQysrIGJhY2t3YXJkIGFuZCBkZXByZWNhdGVkIGluY2x1ZGUgZmlsZXMuICAqLworLSAgICB7IEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUiwgIkcrKyIsIDEsIDEsCisrICAgIHsgR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSVkFSLCAiRysrIiwgMSwgMSwKKyAgICAgICBHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1QsIDAgfSwKKyAjZW5kaWYKKyAjaWZkZWYgR0NDX0lOQ0xVREVfRElSCisgICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZ2NjJ3MgcHJpdmF0ZSBoZWFkZXJzLiAgKi8KKy0gICAgeyBHQ0NfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCisrICAgIHsgR0NDX0lOQ0xVREVfRElSVkFSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAorICNlbmRpZgorICNpZmRlZiBHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VUCisgICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZ2NjJ3MgcHJpdmF0ZSBoZWFkZXJzIHVuZGVyIHRoZSBzcGVjaWZpZWQgc3lzcm9vdC4gICovCistICAgIHsgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQsICJHQ0MiLCAwLCAwLCAxLCAwIH0sCisrICAgIHsgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yVkFSLCAiR0NDIiwgMCwgMCwgMSwgMCB9LAorICNlbmRpZgorICNpZmRlZiBMT0NBTF9JTkNMVURFX0RJUgorICAgICAvKiAvdXNyL2xvY2FsL2luY2x1ZGUgY29tZXMgYmVmb3JlIHRoZSBmaXhpbmNsdWRlZCBoZWFkZXIgZmlsZXMuICAqLworLSAgICB7IExPQ0FMX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAxLCAyIH0sCistICAgIHsgTE9DQUxfSU5DTFVERV9ESVIsIDAsIDAsIDEsIDEsIDAgfSwKKysgICAgeyBMT0NBTF9JTkNMVURFX0RJUlZBUiwgMCwgMCwgMSwgMSwgMiB9LAorKyAgICB7IExPQ0FMX0lOQ0xVREVfRElSVkFSLCAwLCAwLCAxLCAxLCAwIH0sCisgI2VuZGlmCisgI2lmZGVmIFBSRUZJWF9JTkNMVURFX0RJUgorLSAgICB7IFBSRUZJWF9JTkNMVURFX0RJUiwgMCwgMCwgMSwgMCwgMCB9LAorKyAgICB7IFBSRUZJWF9JTkNMVURFX0RJUlZBUiwgMCwgMCwgMSwgMCwgMCB9LAorICNlbmRpZgorICNpZmRlZiBGSVhFRF9JTkNMVURFX0RJUgorICAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGZpeGluY2x1ZGVzLiAgKi8KKy0gICAgeyBGSVhFRF9JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDAsIDAsCisrICAgIHsgRklYRURfSU5DTFVERV9ESVJWQVIsICJHQ0MiLCAwLCAwLCAwLAorICAgICAgIC8qIEEgbXVsdGlsaWIgc3VmZml4IG5lZWRzIGFkZGluZyBpZiBkaWZmZXJlbnQgbXVsdGlsaWJzIHVzZQorIAkgZGlmZmVyZW50IGhlYWRlcnMuICAqLworICNpZmRlZiBTWVNST09UX0hFQURFUlNfU1VGRklYX1NQRUMKK0BAIC04NSwxNiArMTA5LDE2IEBAIGNvbnN0IHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUgY3BwX2luY2x1ZGVfZGVmYXVsdHNbXQorICNlbmRpZgorICNpZmRlZiBDUk9TU19JTkNMVURFX0RJUgorICAgICAvKiBPbmUgcGxhY2UgdGhlIHRhcmdldCBzeXN0ZW0ncyBoZWFkZXJzIG1pZ2h0IGJlLiAgKi8KKy0gICAgeyBDUk9TU19JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDAsIDAsIDAgfSwKKysgICAgeyBDUk9TU19JTkNMVURFX0RJUlZBUiwgIkdDQyIsIDAsIDAsIDAsIDAgfSwKKyAjZW5kaWYKKyAjaWZkZWYgVE9PTF9JTkNMVURFX0RJUgorICAgICAvKiBBbm90aGVyIHBsYWNlIHRoZSB0YXJnZXQgc3lzdGVtJ3MgaGVhZGVycyBtaWdodCBiZS4gICovCistICAgIHsgVE9PTF9JTkNMVURFX0RJUiwgIkJJTlVUSUxTIiwgMCwgMSwgMCwgMCB9LAorKyAgICB7IFRPT0xfSU5DTFVERV9ESVJWQVIsICJCSU5VVElMUyIsIDAsIDEsIDAsIDAgfSwKKyAjZW5kaWYKKyAjaWZkZWYgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSCisgICAgIC8qIC91c3IvaW5jbHVkZSBjb21lcyBkZWFkIGxhc3QuICAqLworLSAgICB7IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUiwgTkFUSVZFX1NZU1RFTV9IRUFERVJfQ09NUE9ORU5ULCAwLCAwLCAxLCAyIH0sCistICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSLCBOQVRJVkVfU1lTVEVNX0hFQURFUl9DT01QT05FTlQsIDAsIDAsIDEsIDAgfSwKKysgICAgeyBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVJWQVIsIE5BVElWRV9TWVNURU1fSEVBREVSX0NPTVBPTkVOVCwgMCwgMCwgMSwgMiB9LAorKyAgICB7IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUlZBUiwgTkFUSVZFX1NZU1RFTV9IRUFERVJfQ09NUE9ORU5ULCAwLCAwLCAxLCAwIH0sCisgI2VuZGlmCisgICAgIHsgMCwgMCwgMCwgMCwgMCwgMCB9CisgICB9OworZGlmZiAtLWdpdCBhL2djYy9jcHBkZWZhdWx0LmggYi9nY2MvY3BwZGVmYXVsdC5oCitpbmRleCA4YTgxYjQ1Li45NzU5ZWZkIDEwMDY0NAorLS0tIGEvZ2NjL2NwcGRlZmF1bHQuaAorKysrIGIvZ2NjL2NwcGRlZmF1bHQuaAorQEAgLTMzLDcgKzMzLDggQEAKKyAKKyBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlCisgeworLSAgY29uc3QgY2hhciAqY29uc3QgZm5hbWU7CS8qIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkuICAqLworKyAgY29uc3QgY2hhciAqZm5hbWU7ICAgICAvKiBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5LiAgKi8KKysKKyAgIGNvbnN0IGNoYXIgKmNvbnN0IGNvbXBvbmVudDsJLyogVGhlIGNvbXBvbmVudCBjb250YWluaW5nIHRoZSBkaXJlY3RvcnkKKyAJCQkJICAgKHNlZSB1cGRhdGVfcGF0aCBpbiBwcmVmaXguYykgKi8KKyAgIGNvbnN0IGNoYXIgY3BsdXNwbHVzOwkJLyogT25seSBsb29rIGhlcmUgaWYgd2UncmUgY29tcGlsaW5nIEMrKy4gICovCitkaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCitpbmRleCA5NzUwY2MyLi45NGMyNDBlIDEwMDY0NAorLS0tIGEvZ2NjL2djYy5jCisrKysgYi9nY2MvZ2NjLmMKK0BAIC0yNDcsNiArMjQ3LDggQEAgRklMRSAqcmVwb3J0X3RpbWVzX3RvX2ZpbGUgPSBOVUxMOworICNlbmRpZgorIHN0YXRpYyBjb25zdCBjaGFyICp0YXJnZXRfc3lzdGVtX3Jvb3QgPSBERUZBVUxUX1RBUkdFVF9TWVNURU1fUk9PVDsKKyAKKytzdGF0aWMgY2hhciB0YXJnZXRfcmVsb2NhdGFibGVfcHJlZml4WzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFNZU1RFTUxJQlNfRElSOworKworIC8qIE5vbnplcm8gbWVhbnMgcGFzcyB0aGUgdXBkYXRlZCB0YXJnZXRfc3lzdGVtX3Jvb3QgdG8gdGhlIGNvbXBpbGVyLiAgKi8KKyAKKyBzdGF0aWMgaW50IHRhcmdldF9zeXN0ZW1fcm9vdF9jaGFuZ2VkOworQEAgLTUxNyw2ICs1MTksNyBAQCBvciB3aXRoIGNvbnN0YW50IHRleHQgaW4gYSBzaW5nbGUgYXJndW1lbnQuCisgICVHICAgICBwcm9jZXNzIExJQkdDQ19TUEVDIGFzIGEgc3BlYy4KKyAgJVIgICAgIE91dHB1dCB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0YXJnZXRfc3lzdGVtX3Jvb3QgYW5kCisgICAgICAgICB0YXJnZXRfc3lzcm9vdF9zdWZmaXguCisrICVyICAgICBPdXRwdXQgdGhlIGJhc2UgcGF0aCB0YXJnZXRfcmVsb2NhdGFibGVfcHJlZml4CisgICVTICAgICBwcm9jZXNzIFNUQVJURklMRV9TUEVDIGFzIGEgc3BlYy4gIEEgY2FwaXRhbCBTIGlzIGFjdHVhbGx5IHVzZWQgaGVyZS4KKyAgJUUgICAgIHByb2Nlc3MgRU5ERklMRV9TUEVDIGFzIGEgc3BlYy4gIEEgY2FwaXRhbCBFIGlzIGFjdHVhbGx5IHVzZWQgaGVyZS4KKyAgJUMgICAgIHByb2Nlc3MgQ1BQX1NQRUMgYXMgYSBzcGVjLgorQEAgLTE0NzMsMTAgKzE0NzYsMTAgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmdjY19saWJleGVjX3ByZWZpeDsKKyAgICBnY2NfZXhlY19wcmVmaXggaXMgc2V0IGJlY2F1c2UsIGluIHRoYXQgY2FzZSwgd2Uga25vdyB3aGVyZSB0aGUKKyAgICBjb21waWxlciBoYXMgYmVlbiBpbnN0YWxsZWQsIGFuZCB1c2UgcGF0aHMgcmVsYXRpdmUgdG8gdGhhdAorICAgIGxvY2F0aW9uIGluc3RlYWQuICAqLworLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9leGVjX3ByZWZpeCA9IFNUQU5EQVJEX0VYRUNfUFJFRklYOworLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9saWJleGVjX3ByZWZpeCA9IFNUQU5EQVJEX0xJQkVYRUNfUFJFRklYOworLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9iaW5kaXJfcHJlZml4ID0gU1RBTkRBUkRfQklORElSX1BSRUZJWDsKKy1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeCA9IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVg7Cisrc3RhdGljIGNoYXIgc3RhbmRhcmRfZXhlY19wcmVmaXhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfRVhFQ19QUkVGSVg7Cisrc3RhdGljIGNoYXIgc3RhbmRhcmRfbGliZXhlY19wcmVmaXhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfTElCRVhFQ19QUkVGSVg7Cisrc3RhdGljIGNoYXIgc3RhbmRhcmRfYmluZGlyX3ByZWZpeFs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTVEFOREFSRF9CSU5ESVJfUFJFRklYOworK3N0YXRpYyBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4ID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWDsKKyAKKyAvKiBGb3IgbmF0aXZlIGNvbXBpbGVycywgdGhlc2UgYXJlIHdlbGwta25vd24gcGF0aHMgY29udGFpbmluZworICAgIGNvbXBvbmVudHMgdGhhdCBtYXkgYmUgcHJvdmlkZWQgYnkgdGhlIHN5c3RlbS4gIEZvciBjcm9zcworQEAgLTE0ODQsOSArMTQ4Nyw5IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4ID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWDsKKyBzdGF0aWMgY29uc3QgY2hhciAqbWRfZXhlY19wcmVmaXggPSBNRF9FWEVDX1BSRUZJWDsKKyBzdGF0aWMgY29uc3QgY2hhciAqbWRfc3RhcnRmaWxlX3ByZWZpeCA9IE1EX1NUQVJURklMRV9QUkVGSVg7Cisgc3RhdGljIGNvbnN0IGNoYXIgKm1kX3N0YXJ0ZmlsZV9wcmVmaXhfMSA9IE1EX1NUQVJURklMRV9QUkVGSVhfMTsKKy1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeF8xCisrc3RhdGljIGNoYXIgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeF8xWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKQorICAgPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzE7Cistc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXhfMgorK3N0YXRpYyBjaGFyIHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXhfMls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkKKyAgID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yOworIAorIC8qIEEgcmVsYXRpdmUgcGF0aCB0byBiZSB1c2VkIGluIGZpbmRpbmcgdGhlIGxvY2F0aW9uIG9mIHRvb2xzCitAQCAtNTc2Miw2ICs1NzY1LDExIEBAIGRvX3NwZWNfMSAoY29uc3QgY2hhciAqc3BlYywgaW50IGluc3dpdGNoLCBjb25zdCBjaGFyICpzb2Z0X21hdGNoZWRfcGFydCkKKyAJICAgICAgfQorIAkgICAgYnJlYWs7CisgCisrICAgICAgICAgIGNhc2UgJ3InOgorKyAgICAgICAgICAgICAgb2JzdGFja19ncm93ICgmb2JzdGFjaywgdGFyZ2V0X3JlbG9jYXRhYmxlX3ByZWZpeCwKKysJCSAgICAgIHN0cmxlbiAodGFyZ2V0X3JlbG9jYXRhYmxlX3ByZWZpeCkpOworKyAgICAgICAgICAgIGJyZWFrOworKworIAkgIGNhc2UgJ1MnOgorIAkgICAgdmFsdWUgPSBkb19zcGVjXzEgKHN0YXJ0ZmlsZV9zcGVjLCAwLCBOVUxMKTsKKyAJICAgIGlmICh2YWx1ZSAhPSAwKQorLS0gCisyLjguMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yLzAwMzgtU2VhcmNoLXRhcmdldC1zeXNyb290LWdjYy12ZXJzaW9uLXNwZWNpZmljLWRpcnMtd2l0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAzOC1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5ZWU3OWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yLzAwMzgtU2VhcmNoLXRhcmdldC1zeXNyb290LWdjYy12ZXJzaW9uLXNwZWNpZmljLWRpcnMtd2l0aC5wYXRjaApAQCAtMCwwICsxLDEwMiBAQAorRnJvbSA0MmU0Y2RjYWFkNTkwNTM2MjQ2ODY2YjA4NDZlYzI3OWUxMjRmYTE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgNyBEZWMgMjAxNSAyMzo0MTo0NSArMDAwMAorU3ViamVjdDogW1BBVENIIDM4LzQ2XSBTZWFyY2ggdGFyZ2V0IHN5c3Jvb3QgZ2NjIHZlcnNpb24gc3BlY2lmaWMgZGlycyB3aXRoCisgbXVsdGlsaWIuCisKK1dlIGluc3RhbGwgdGhlIGdjYyBsaWJyYXJpZXMgKHN1Y2ggYXMgY3J0YmVnaW4ucCkgaW50bworPHN5c3Jvb3Q+PGxpYmRpcj4vPHRhcmdldC1zeXM+LzUuMi4wLword2hpY2ggaXMgYSBkZWZhdWx0IHNlYXJjaCBwYXRoIGZvciBHQ0MgKGFrYSBtdWx0aV9zdWZmaXggaW4gdGhlCitjb2RlIGJlbG93KS4gPHRhcmdldC1zeXM+IGlzICdtYWNoaW5lJyBpbiBnY2MncyB0ZXJtaW5vbG9neS4gV2UgdXNlCit0aGVzZSBkaXJlY3RvcmllcyBzbyB0aGF0IG11bHRpcGxlIGdjYyB2ZXJzaW9ucyBjb3VsZCBpbiB0aGVvcnkKK2NvLWV4aXN0IG9uIHRhcmdldC4KKworV2Ugb25seSB3YW50IHRvIGJ1aWxkIG9uZSBnY2MtY3Jvc3MtY2FuYWRpYW4gcGVyIGFyY2ggYW5kIGhhdmUgdGhpcyB3b3JrCitmb3IgYWxsIG11bHRpbGlicy4gPHRhcmdldC1zeXM+IGNhbiBiZSBoYW5kbGVkIGJ5IG1hcHBpbmcgdGhlIG11bHRpbGliCis8dGFyZ2V0LXN5cz4gdG8gdGhlIG9uZSB1c2VkIGJ5IGdjYy1jcm9zcy1jYW5hZGlhbiwgZS5nLgorbWlwczY0LXBvbGttbGxpYjMyLWxpbnV4CitpcyBzeW1saW5rZWQgdG8gYnkgbWlwczY0LXBva3ktbGludXguCisKK1RoZSBkZWZhdWx0IGdjYyBzZWFyY2ggcGF0aCBpbiB0aGUgdGFyZ2V0IHN5c3Jvb3QgZm9yIGEgImxpYjY0IiBtdXRsaWxpYgoraXM6CisKKzxzeXNyb290Pi9saWIzMi9taXBzNjQtcG9reS1saW51eC81LjIuMC8KKzxzeXNyb290Pi9saWIzMi8uLi9saWI2NC8KKzxzeXNyb290Pi91c3IvbGliMzIvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCis8c3lzcm9vdD4vdXNyL2xpYjMyLy4uL2xpYjY0LworPHN5c3Jvb3Q+L2xpYjMyLworPHN5c3Jvb3Q+L3Vzci9saWIzMi8KKword2hpY2ggbWVhbnMgdGhhdCB0aGUgbGliMzIgY3J0YmVnaW4ubyB3aWxsIGJlIGZvdW5kIGFuZCB0aGUgbGliNjQgb25lcword2lsbCBub3Qgd2hpY2ggbGVhZHMgdG8gY29tcGlsZXIgZmFpbHVyZXMuCisKK1RoaXMgcGF0Y2ggaW5qZWN0cyBhIG11bHRpbGliIHZlcnNpb24gb2YgdGhhdCBwYXRoIGZpcnN0IHNvIHRoZSBsaWI2NAorYmluYXJpZXMgY2FuIGJlIGZvdW5kIGZpcnN0LiBXaXRoIHRoaXMgY2hhbmdlIHRoZSBzZWFyY2ggcGF0aCBiZWNvbWVzOgorCis8c3lzcm9vdD4vbGliMzIvLi4vbGliNjQvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCis8c3lzcm9vdD4vbGliMzIvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCis8c3lzcm9vdD4vbGliMzIvLi4vbGliNjQvCis8c3lzcm9vdD4vdXNyL2xpYjMyLy4uL2xpYjY0L21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLworPHN5c3Jvb3Q+L3Vzci9saWIzMi9taXBzNjQtcG9reS1saW51eC81LjIuMC8KKzxzeXNyb290Pi91c3IvbGliMzIvLi4vbGliNjQvCis8c3lzcm9vdD4vbGliMzIvCis8c3lzcm9vdD4vdXNyL2xpYjMyLworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1JQIDIwMTUvNy8zMQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ2NjL2djYy5jIHwgMjkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCitpbmRleCA5NGMyNDBlLi4yODEyODE5IDEwMDY0NAorLS0tIGEvZ2NjL2djYy5jCisrKysgYi9nY2MvZ2NjLmMKK0BAIC0yNTA3LDcgKzI1MDcsNyBAQCBmb3JfZWFjaF9wYXRoIChjb25zdCBzdHJ1Y3QgcGF0aF9wcmVmaXggKnBhdGhzLAorICAgICAgIGlmIChwYXRoID09IE5VTEwpCisgCXsKKyAJICBsZW4gPSBwYXRocy0+bWF4X2xlbiArIGV4dHJhX3NwYWNlICsgMTsKKy0JICBsZW4gKz0gTUFYIChNQVggKHN1ZmZpeF9sZW4sIG11bHRpX29zX2Rpcl9sZW4pLCBtdWx0aWFyY2hfbGVuKTsKKysJICBsZW4gKz0gTUFYICgoc3VmZml4X2xlbiArIG11bHRpX29zX2Rpcl9sZW4pLCBtdWx0aWFyY2hfbGVuKTsKKyAJICBwYXRoID0gWE5FV1ZFQyAoY2hhciwgbGVuKTsKKyAJfQorIAorQEAgLTI1MTksNiArMjUxOSwzMyBAQCBmb3JfZWFjaF9wYXRoIChjb25zdCBzdHJ1Y3QgcGF0aF9wcmVmaXggKnBhdGhzLAorIAkgIC8qIExvb2sgZmlyc3QgaW4gTUFDSElORS9WRVJTSU9OIHN1YmRpcmVjdG9yeS4gICovCisgCSAgaWYgKCFza2lwX211bHRpX2RpcikKKyAJICAgIHsKKysJICAgICAgaWYgKCEocGwtPm9zX211bHRpbGliID8gc2tpcF9tdWx0aV9vc19kaXIgOiBza2lwX211bHRpX2RpcikpCisrCSAgICAgICAgeworKwkgICAgICAgICAgY29uc3QgY2hhciAqdGhpc19tdWx0aTsKKysJICAgICAgICAgIHNpemVfdCB0aGlzX211bHRpX2xlbjsKKysKKysJICAgICAgICAgIGlmIChwbC0+b3NfbXVsdGlsaWIpCisrCQkgICAgeworKwkJICAgICAgdGhpc19tdWx0aSA9IG11bHRpX29zX2RpcjsKKysJCSAgICAgIHRoaXNfbXVsdGlfbGVuID0gbXVsdGlfb3NfZGlyX2xlbjsKKysJCSAgICB9CisrCSAgICAgICAgICBlbHNlCisrCQkgICAgeworKwkJICAgICAgdGhpc19tdWx0aSA9IG11bHRpX2RpcjsKKysJCSAgICAgIHRoaXNfbXVsdGlfbGVuID0gbXVsdGlfZGlyX2xlbjsKKysJCSAgICB9CisrCisrCSAgICAgICAgICAvKiBMb29rIGluIG11bHRpbGliIE1BQ0hJTkUvVkVSU0lPTiBzdWJkaXJlY3RvcnkgZmlyc3QgKi8KKysJICAgICAgICAgIGlmICh0aGlzX211bHRpX2xlbikKKysJICAgICAgICAgICAgeworKwkJICAgICAgbWVtY3B5IChwYXRoICsgbGVuLCB0aGlzX211bHRpLCB0aGlzX211bHRpX2xlbiArIDEpOworKwkgICAgICAgICAgICAgIG1lbWNweSAocGF0aCArIGxlbiArIHRoaXNfbXVsdGlfbGVuLCBtdWx0aV9zdWZmaXgsIHN1ZmZpeF9sZW4gKyAxKTsKKysJICAgICAgICAgICAgICByZXQgPSBjYWxsYmFjayAocGF0aCwgY2FsbGJhY2tfaW5mbyk7CisrCSAgICAgICAgICAgICAgICBpZiAocmV0KQorKwkJICAgICAgICAgIGJyZWFrOworKwkgICAgICAgICAgICB9CisrCSAgICAgICAgfQorKworIAkgICAgICBtZW1jcHkgKHBhdGggKyBsZW4sIG11bHRpX3N1ZmZpeCwgc3VmZml4X2xlbiArIDEpOworIAkgICAgICByZXQgPSBjYWxsYmFjayAocGF0aCwgY2FsbGJhY2tfaW5mbyk7CisgCSAgICAgIGlmIChyZXQpCistLSAKKzIuOC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAzOS1GaXgtdmFyaW91cy1fRk9SX0JVSUxELWFuZC1yZWxhdGVkLXZhcmlhYmxlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDAzOS1GaXgtdmFyaW91cy1fRk9SX0JVSUxELWFuZC1yZWxhdGVkLXZhcmlhYmxlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wY2U3YWVjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDM5LUZpeC12YXJpb3VzLV9GT1JfQlVJTEQtYW5kLXJlbGF0ZWQtdmFyaWFibGVzLnBhdGNoCkBAIC0wLDAgKzEsMTM3IEBACitGcm9tIDljZWQ0OWU0NTljY2YxODg3ZmViNThhZGYxZTg4MzZkY2I0YjFiZGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCA3IERlYyAyMDE1IDIzOjQyOjQ1ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMzkvNDZdIEZpeCB2YXJpb3VzIF9GT1JfQlVJTEQgYW5kIHJlbGF0ZWQgdmFyaWFibGVzCisKK1doZW4gZG9pbmcgYSBGT1JfQlVJTEQgdGhpbmcsIHlvdSBoYXZlIHRvIG92ZXJyaWRlIENGTEFHUyB3aXRoCitDRkxBR1NfRk9SX0JVSUxELiBBbmQgaWYgeW91IHVzZSBDKyssIHlvdSBhbHNvIGhhdmUgdG8gb3ZlcnJpZGUKK0NYWEZMQUdTIHdpdGggQ1hYRkxBR1NfRk9SX0JVSUxELgorV2l0aG91dCB0aGlzLCB3aGVuIGJ1aWxkaW5nIGZvciBtaW5ndywgeW91IGVuZCB1cCB0cnlpbmcgdG8gdXNlCit0aGUgbWluZ3cgaGVhZGVycyBmb3IgYSBob3N0IGJ1aWxkLgorCitUaGUgc2FtZSBnb2VzIGZvciBvdGhlciB2YXJpYWJsZXMgYXMgd2VsbCwgc3VjaCBhcyBDUFBGTEFHUywKK0NQUCwgYW5kIEdNUElOQy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFBldGVyIFNlZWJhY2ggPHBldGVyLnNlZWJhY2hAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZS5pbiAgICAgIHwgNiArKysrKysKKyBNYWtlZmlsZS50cGwgICAgIHwgNSArKysrKworIGdjYy9NYWtlZmlsZS5pbiAgfCAyICstCisgZ2NjL2NvbmZpZ3VyZSAgICB8IDIgKy0KKyBnY2MvY29uZmlndXJlLmFjIHwgMiArLQorIDUgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KK2luZGV4IGJlYjliOWEuLjNlMWM2YmMgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5pbgorKysrIGIvTWFrZWZpbGUuaW4KK0BAIC0xNTIsNiArMTUyLDcgQEAgQlVJTERfRVhQT1JUUyA9IFwKKyAJQ1BQPSIkKENDX0ZPUl9CVUlMRCkgLUUiOyBleHBvcnQgQ1BQOyBcCisgCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDRkxBR1M7IFwKKyAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKKysJQ1BQRkxBR1M9IiQoQ1BQRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDUFBGTEFHUzsgXAorIAlDWFg9IiQoQ1hYX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1hYOyBcCisgCUNYWEZMQUdTPSIkKENYWEZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1hYRkxBR1M7IFwKKyAJR0NKPSIkKEdDSl9GT1JfQlVJTEQpIjsgZXhwb3J0IEdDSjsgXAorQEAgLTE3MCw2ICsxNzEsOSBAQCBCVUlMRF9FWFBPUlRTID0gXAorICMgYnVpbHQgZm9yIHRoZSBidWlsZCBzeXN0ZW0gdG8gb3ZlcnJpZGUgdGhvc2UgaW4gQkFTRV9GTEFHU19UT19QQVNTLgorIEVYVFJBX0JVSUxEX0ZMQUdTID0gXAorIAlDRkxBR1M9IiQoQ0ZMQUdTX0ZPUl9CVUlMRCkiIFwKKysJQ1hYRkxBR1M9IiQoQ1hYRkxBR1NfRk9SX0JVSUxEKSIgXAorKwlDUFA9IiQoQ0NfRk9SX0JVSUxEKSAtRSIgXAorKwlDUFBGTEFHUz0iJChDUFBGTEFHU19GT1JfQlVJTEQpIiBcCisgCUxERkxBR1M9IiQoTERGTEFHU19GT1JfQlVJTEQpIgorIAorICMgVGhpcyBpcyB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyB0byBidWlsdCBmb3IgdGhlIGhvc3Qgc3lzdGVtLgorQEAgLTE4Nyw2ICsxOTEsNyBAQCBIT1NUX1NVQkRJUiA9IEBob3N0X3N1YmRpckAKKyBIT1NUX0VYUE9SVFMgPSBcCisgCSQoQkFTRV9FWFBPUlRTKSBcCisgCUNDPSIkKENDKSI7IGV4cG9ydCBDQzsgXAorKwlDUFA9IiQoQ0MpIC1FIjsgZXhwb3J0IENQUDsgXAorIAlBREFfQ0ZMQUdTPSIkKEFEQV9DRkxBR1MpIjsgZXhwb3J0IEFEQV9DRkxBR1M7IFwKKyAJQ0ZMQUdTPSIkKENGTEFHUykiOyBleHBvcnQgQ0ZMQUdTOyBcCisgCUNPTkZJR19TSEVMTD0iJChTSEVMTCkiOyBleHBvcnQgQ09ORklHX1NIRUxMOyBcCitAQCAtNzEzLDYgKzcxOCw3IEBAIEJBU0VfRkxBR1NfVE9fUEFTUyA9IFwKKyAJIkNDX0ZPUl9CVUlMRD0kKENDX0ZPUl9CVUlMRCkiIFwKKyAJIkNGTEFHU19GT1JfQlVJTEQ9JChDRkxBR1NfRk9SX0JVSUxEKSIgXAorIAkiQ1hYX0ZPUl9CVUlMRD0kKENYWF9GT1JfQlVJTEQpIiBcCisrCSJDWFhGTEFHU19GT1JfQlVJTEQ9JChDWFhGTEFHU19GT1JfQlVJTEQpIiBcCisgCSJFWFBFQ1Q9JChFWFBFQ1QpIiBcCisgCSJGTEVYPSQoRkxFWCkiIFwKKyAJIklOU1RBTEw9JChJTlNUQUxMKSIgXAorZGlmZiAtLWdpdCBhL01ha2VmaWxlLnRwbCBiL01ha2VmaWxlLnRwbAoraW5kZXggNmIyZWI2YS4uMTE0ZTQ2MiAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLnRwbAorKysrIGIvTWFrZWZpbGUudHBsCitAQCAtMTU0LDYgKzE1NCw3IEBAIEJVSUxEX0VYUE9SVFMgPSBcCisgCUNDPSIkKENDX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ0M7IFwKKyAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENGTEFHUzsgXAorIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAorKwlDUFBGTEFHUz0iJChDUFBGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENQUEZMQUdTOyBcCisgCUNYWD0iJChDWFhfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFg7IFwKKyAJQ1hYRkxBR1M9IiQoQ1hYRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFhGTEFHUzsgXAorIAlHQ0o9IiQoR0NKX0ZPUl9CVUlMRCkiOyBleHBvcnQgR0NKOyBcCitAQCAtMTcyLDYgKzE3Myw5IEBAIEJVSUxEX0VYUE9SVFMgPSBcCisgIyBidWlsdCBmb3IgdGhlIGJ1aWxkIHN5c3RlbSB0byBvdmVycmlkZSB0aG9zZSBpbiBCQVNFX0ZMQUdTX1RPX1BBU1MuCisgRVhUUkFfQlVJTERfRkxBR1MgPSBcCisgCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSIgXAorKwlDWFhGTEFHUz0iJChDWFhGTEFHU19GT1JfQlVJTEQpIiBcCisrCUNQUD0iJChDQ19GT1JfQlVJTEQpIC1FIiBcCisrCUNQUEZMQUdTPSIkKENQUEZMQUdTX0ZPUl9CVUlMRCkiIFwKKyAJTERGTEFHUz0iJChMREZMQUdTX0ZPUl9CVUlMRCkiCisgCisgIyBUaGlzIGlzIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIGJ1aWx0IGZvciB0aGUgaG9zdCBzeXN0ZW0uCitAQCAtMTg5LDYgKzE5Myw3IEBAIEhPU1RfU1VCRElSID0gQGhvc3Rfc3ViZGlyQAorIEhPU1RfRVhQT1JUUyA9IFwKKyAJJChCQVNFX0VYUE9SVFMpIFwKKyAJQ0M9IiQoQ0MpIjsgZXhwb3J0IENDOyBcCisrCUNQUD0iJChDQykgLUUiOyBleHBvcnQgQ1BQOyBcCisgCUFEQV9DRkxBR1M9IiQoQURBX0NGTEFHUykiOyBleHBvcnQgQURBX0NGTEFHUzsgXAorIAlDRkxBR1M9IiQoQ0ZMQUdTKSI7IGV4cG9ydCBDRkxBR1M7IFwKKyAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKK2RpZmYgLS1naXQgYS9nY2MvTWFrZWZpbGUuaW4gYi9nY2MvTWFrZWZpbGUuaW4KK2luZGV4IGNjNzU1MzYuLjBhZDJkYzggMTAwNjQ0CistLS0gYS9nY2MvTWFrZWZpbGUuaW4KKysrKyBiL2djYy9NYWtlZmlsZS5pbgorQEAgLTc4MCw3ICs3ODAsNyBAQCBCVUlMRF9MREZMQUdTPUBCVUlMRF9MREZMQUdTQAorIEJVSUxEX05PX1BJRV9GTEFHID0gQEJVSUxEX05PX1BJRV9GTEFHQAorIEJVSUxEX0xERkxBR1MgKz0gJChCVUlMRF9OT19QSUVfRkxBRykKKyBCVUlMRF9DUFBGTEFHUz0gLUkuIC1JJChARCkgLUkkKHNyY2RpcikgLUkkKHNyY2RpcikvJChARCkgXAorLQkJLUkkKHNyY2RpcikvLi4vaW5jbHVkZSBASU5DSU5UTEAgJChDUFBJTkMpICQoQ1BQRkxBR1MpCisrCQktSSQoc3JjZGlyKS8uLi9pbmNsdWRlIEBJTkNJTlRMQCAkKENQUElOQykgJChDUFBGTEFHU19GT1JfQlVJTEQpCisgCisgIyBBY3R1YWwgbmFtZSB0byB1c2Ugd2hlbiBpbnN0YWxsaW5nIGEgbmF0aXZlIGNvbXBpbGVyLgorIEdDQ19JTlNUQUxMX05BTUUgOj0gJChzaGVsbCBlY2hvIGdjY3xzZWQgJyQocHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSknKQorZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCitpbmRleCAzNzcyNTNlLi43OGZjNjRhIDEwMDc1NQorLS0tIGEvZ2NjL2NvbmZpZ3VyZQorKysrIGIvZ2NjL2NvbmZpZ3VyZQorQEAgLTExNzk5LDcgKzExNzk5LDcgQEAgZWxzZQorIAlDQz0iJHtDQ19GT1JfQlVJTER9IiBDRkxBR1M9IiR7Q0ZMQUdTX0ZPUl9CVUlMRH0iIFwKKyAJQ1hYPSIke0NYWF9GT1JfQlVJTER9IiBDWFhGTEFHUz0iJHtDWFhGTEFHU19GT1JfQlVJTER9IiBcCisgCUxEPSIke0xEX0ZPUl9CVUlMRH0iIExERkxBR1M9IiR7TERGTEFHU19GT1JfQlVJTER9IiBcCistCUdNUElOQz0iIiBDUFBGTEFHUz0iJHtDUFBGTEFHU30gLURHRU5FUkFUT1JfRklMRSIgXAorKwlHTVBJTkM9IiIgQ1BQRkxBR1M9IiR7Q1BQRkxBR1NfRk9SX0JVSUxEfSAtREdFTkVSQVRPUl9GSUxFIiBcCisgCSR7cmVhbHNyY2Rpcn0vY29uZmlndXJlIFwKKyAJCS0tZW5hYmxlLWxhbmd1YWdlcz0ke2VuYWJsZV9sYW5ndWFnZXMtYWxsfSBcCisgCQktLXRhcmdldD0kdGFyZ2V0X2FsaWFzIC0taG9zdD0kYnVpbGRfYWxpYXMgLS1idWlsZD0kYnVpbGRfYWxpYXMKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYworaW5kZXggNTRlNzYxOS4uYTk0NjY2ZSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWd1cmUuYWMKKysrKyBiL2djYy9jb25maWd1cmUuYWMKK0BAIC0xNjgyLDcgKzE2ODIsNyBAQCBlbHNlCisgCUNDPSIke0NDX0ZPUl9CVUlMRH0iIENGTEFHUz0iJHtDRkxBR1NfRk9SX0JVSUxEfSIgXAorIAlDWFg9IiR7Q1hYX0ZPUl9CVUlMRH0iIENYWEZMQUdTPSIke0NYWEZMQUdTX0ZPUl9CVUlMRH0iIFwKKyAJTEQ9IiR7TERfRk9SX0JVSUxEfSIgTERGTEFHUz0iJHtMREZMQUdTX0ZPUl9CVUlMRH0iIFwKKy0JR01QSU5DPSIiIENQUEZMQUdTPSIke0NQUEZMQUdTfSAtREdFTkVSQVRPUl9GSUxFIiBcCisrCUdNUElOQz0iIiBDUFBGTEFHUz0iJHtDUFBGTEFHU19GT1JfQlVJTER9IC1ER0VORVJBVE9SX0ZJTEUiIFwKKyAJJHtyZWFsc3JjZGlyfS9jb25maWd1cmUgXAorIAkJLS1lbmFibGUtbGFuZ3VhZ2VzPSR7ZW5hYmxlX2xhbmd1YWdlcy1hbGx9IFwKKyAJCS0tdGFyZ2V0PSR0YXJnZXRfYWxpYXMgLS1ob3N0PSRidWlsZF9hbGlhcyAtLWJ1aWxkPSRidWlsZF9hbGlhcworLS0gCisyLjguMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yLzAwNDAtbmlvczItRGVmaW5lLU1VU0xfRFlOQU1JQ19MSU5LRVIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yLzAwNDAtbmlvczItRGVmaW5lLU1VU0xfRFlOQU1JQ19MSU5LRVIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzlhNmZkMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDA0MC1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIGIwNDEyYzAxYzI3NWFhZWI2YjQ1ODQ2MWNkMjQyNTEyMGM4YmNlYzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAyIEZlYiAyMDE2IDEwOjI2OjEwIC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggNDAvNDZdIG5pb3MyOiBEZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUgorCitTaWduZWQtb2ZmLWJ5OiBNYXJlayBWYXN1dCA8bWFyZXhAZGVueC5kZT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgZ2NjL2NvbmZpZy9uaW9zMi9saW51eC5oIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL25pb3MyL2xpbnV4LmggYi9nY2MvY29uZmlnL25pb3MyL2xpbnV4LmgKK2luZGV4IDRlZjU1YjUuLjYyYmMxZTcgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL25pb3MyL2xpbnV4LmgKKysrKyBiL2djYy9jb25maWcvbmlvczIvbGludXguaAorQEAgLTMwLDYgKzMwLDcgQEAKKyAjZGVmaW5lIENQUF9TUEVDICIle3Bvc2l4Oi1EX1BPU0lYX1NPVVJDRX0gJXtwdGhyZWFkOi1EX1JFRU5UUkFOVH0iCisgCisgI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC1uaW9zMi5zby4xIgorKyNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAgIi9saWIvbGQtbXVzbC1uaW9zMi5zby4xIgorIAorICN1bmRlZiBMSU5LX1NQRUMKKyAjZGVmaW5lIExJTktfU1BFQyBMSU5LX1NQRUNfRU5ESUFOIFwKKy0tIAorMi44LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDQxLXNzcF9ub25zaGFyZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yLzAwNDEtc3NwX25vbnNoYXJlZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzQ0NTI5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDQxLXNzcF9ub25zaGFyZWQucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSA1NTFhNWRiN2FjYjU2ZTA4NWExMDFmMWMyMjJkNTFiMmMxYjAzOWE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU3phYm9sY3MgTmFneSA8bnN6QHBvcnQ3MC5uZXQ+CitEYXRlOiBTYXQsIDcgTm92IDIwMTUgMTQ6NTg6NDAgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCA0MS80Nl0gc3NwX25vbnNoYXJlZAorCistLS0KK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgQ29uZmlndXJhdGlvbl0KKworIGdjYy9nY2MuYyB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCitpbmRleCAyODEyODE5Li45ZGU5NmVlIDEwMDY0NAorLS0tIGEvZ2NjL2djYy5jCisrKysgYi9nY2MvZ2NjLmMKK0BAIC04NjMsNyArODYzLDggQEAgcHJvcGVyIHBvc2l0aW9uIGFtb25nIHRoZSBvdGhlciBvdXRwdXQgZmlsZXMuICAqLworICNpZm5kZWYgTElOS19TU1BfU1BFQworICNpZmRlZiBUQVJHRVRfTElCQ19QUk9WSURFU19TU1AKKyAjZGVmaW5lIExJTktfU1NQX1NQRUMgIiV7ZnN0YWNrLXByb3RlY3Rvcnxmc3RhY2stcHJvdGVjdG9yLWFsbCIgXAorLQkJICAgICAgICJ8ZnN0YWNrLXByb3RlY3Rvci1zdHJvbmd8ZnN0YWNrLXByb3RlY3Rvci1leHBsaWNpdDp9IgorKwkJICAgICAgICJ8ZnN0YWNrLXByb3RlY3Rvci1zdHJvbmd8ZnN0YWNrLXByb3RlY3Rvci1leHBsaWNpdCIgXAorKwkJICAgICAgICI6LWxzc3Bfbm9uc2hhcmVkfSIKKyAjZWxzZQorICNkZWZpbmUgTElOS19TU1BfU1BFQyAiJXtmc3RhY2stcHJvdGVjdG9yfGZzdGFjay1wcm90ZWN0b3ItYWxsIiBcCisgCQkgICAgICAgInxmc3RhY2stcHJvdGVjdG9yLXN0cm9uZ3xmc3RhY2stcHJvdGVjdG9yLWV4cGxpY2l0IiBcCistLSAKKzIuOC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDA0Mi1nY2MtbGliY3BwLXN1cHBvcnQtZmZpbGUtcHJlZml4LW1hcC1vbGQtbmV3LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDQyLWdjYy1saWJjcHAtc3VwcG9ydC1mZmlsZS1wcmVmaXgtbWFwLW9sZC1uZXcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODYxZjBmZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDA0Mi1nY2MtbGliY3BwLXN1cHBvcnQtZmZpbGUtcHJlZml4LW1hcC1vbGQtbmV3LnBhdGNoCkBAIC0wLDAgKzEsMjkyIEBACitGcm9tIGJhNzM4Y2M0MTFjOWE1NGUzODllMzM2YmNhYTBhMjQyOGRkNGE5ZDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDE2IE1hciAyMDE2IDAyOjI3OjQzIC0wNDAwCitTdWJqZWN0OiBbUEFUQ0ggNDIvNDZdIGdjYy9saWJjcHA6IHN1cHBvcnQgLWZmaWxlLXByZWZpeC1tYXA9PG9sZD49PG5ldz4KKworU2ltaWxhciAtZmRlYnVnLXByZWZpeC1tYXAsIGFkZCBvcHRpb24gLWZmaWxlLXByZWZpeC1tYXAgdG8gbWFwIG9uZQorZGlyZWN0b3J5IG5hbWUgKG9sZCkgdG8gYW5vdGhlciAobmV3KSBpbiBfX0ZJTEVfXywgX19CQVNFX0ZJTEVfXyBhbmQKK19fYnVpbHRpbl9GSUxFICgpLgorCitodHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD03MDI2OAorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbZ2NjLXBhdGNoZXNAZ2NjLmdudS5vcmddCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBnY2MvYy1mYW1pbHkvYy1vcHRzLmMgICAgIHwgMTMgKysrKysrKworIGdjYy9jLWZhbWlseS9jLm9wdCAgICAgICAgfCAgNCArKysKKyBnY2MvZHdhcmYyb3V0LmMgICAgICAgICAgIHwgIDEgKworIGdjYy9naW1wbGlmeS5jICAgICAgICAgICAgfCAgMyArKworIGxpYmNwcC9NYWtlZmlsZS5pbiAgICAgICAgfCAxMCArKystLS0KKyBsaWJjcHAvZmlsZS1tYXAuYyAgICAgICAgIHwgOTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBsaWJjcHAvaW5jbHVkZS9maWxlLW1hcC5oIHwgMzAgKysrKysrKysrKysrKysrKworIGxpYmNwcC9tYWNyby5jICAgICAgICAgICAgfCAgMiArKworIDggZmlsZXMgY2hhbmdlZCwgMTUwIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmNwcC9maWxlLW1hcC5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmNwcC9pbmNsdWRlL2ZpbGUtbWFwLmgKKworZGlmZiAtLWdpdCBhL2djYy9jLWZhbWlseS9jLW9wdHMuYyBiL2djYy9jLWZhbWlseS9jLW9wdHMuYworaW5kZXggZmVjNThiYy4uN2EwYWY0MyAxMDA2NDQKKy0tLSBhL2djYy9jLWZhbWlseS9jLW9wdHMuYworKysrIGIvZ2NjL2MtZmFtaWx5L2Mtb3B0cy5jCitAQCAtMzgsNiArMzgsMTQgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKyAjaW5jbHVkZSAib3B0cy5oIgorICNpbmNsdWRlICJwbHVnaW4uaCIJCS8qIEZvciBQTFVHSU5fSU5DTFVERV9GSUxFIGV2ZW50LiAgKi8KKyAjaW5jbHVkZSAibWtkZXBzLmgiCisrI2luY2x1ZGUgImZpbGUtbWFwLmgiCisrI2luY2x1ZGUgImMtdGFyZ2V0LmgiCisrI2luY2x1ZGUgInRtLmgiCQkJLyogRm9yIEJZVEVTX0JJR19FTkRJQU4sCisrCQkJCSAgIERPTExBUlNfSU5fSURFTlRJRklFUlMsCisrCQkJCSAgIFNURENfMF9JTl9TWVNURU1fSEVBREVSUywKKysJCQkJICAgVEFSR0VUX0ZMVF9FVkFMX01FVEhPRF9OT05fREVGQVVMVCBhbmQKKysJCQkJICAgVEFSR0VUX09QVEYuICAqLworKyNpbmNsdWRlICJ0bV9wLmgiCQkvKiBGb3IgQ19DT01NT05fT1ZFUlJJREVfT1BUSU9OUy4gICovCisgI2luY2x1ZGUgImR1bXBmaWxlLmgiCisgCisgI2lmbmRlZiBET0xMQVJTX0lOX0lERU5USUZJRVJTCitAQCAtNTAzLDYgKzUxMSwxMSBAQCBjX2NvbW1vbl9oYW5kbGVfb3B0aW9uIChzaXplX3Qgc2NvZGUsIGNvbnN0IGNoYXIgKmFyZywgaW50IHZhbHVlLAorICAgICAgIGNwcF9vcHRzLT5uYXJyb3dfY2hhcnNldCA9IGFyZzsKKyAgICAgICBicmVhazsKKyAKKysgICAgY2FzZSBPUFRfZmZpbGVfcHJlZml4X21hcF86CisrICAgICAgaWYgKGFkZF9maWxlX3ByZWZpeF9tYXAgKGFyZykgPCAwKQorKyAgICAgICAgZXJyb3IgKCJpbnZhbGlkIGFyZ3VtZW50ICVxcyB0byAtZmZpbGUtcHJlZml4LW1hcCIsIGFyZyk7CisrICAgICAgYnJlYWs7CisrCisgICAgIGNhc2UgT1BUX2Z3aWRlX2V4ZWNfY2hhcnNldF86CisgICAgICAgY3BwX29wdHMtPndpZGVfY2hhcnNldCA9IGFyZzsKKyAgICAgICBicmVhazsKK2RpZmYgLS1naXQgYS9nY2MvYy1mYW1pbHkvYy5vcHQgYi9nY2MvYy1mYW1pbHkvYy5vcHQKK2luZGV4IDY2MGRhNmMuLjMxZjdiMzQgMTAwNjQ0CistLS0gYS9nY2MvYy1mYW1pbHkvYy5vcHQKKysrKyBiL2djYy9jLWZhbWlseS9jLm9wdAorQEAgLTEyMDgsNiArMTIwOCwxMCBAQCBmZXhlYy1jaGFyc2V0PQorIEMgT2JqQyBDKysgT2JqQysrIEpvaW5lZCBSZWplY3ROZWdhdGl2ZQorIC1mZXhlYy1jaGFyc2V0PTxjc2V0PglDb252ZXJ0IGFsbCBzdHJpbmdzIGFuZCBjaGFyYWN0ZXIgY29uc3RhbnRzIHRvIGNoYXJhY3RlciBzZXQgPGNzZXQ+LgorIAorK2ZmaWxlLXByZWZpeC1tYXA9CisrQyBPYmpDIEMrKyBPYmpDKysgSm9pbmVkIFJlamVjdE5lZ2F0aXZlCisrLWZmaWxlLXByZWZpeC1tYXA9PG9sZD1uZXc+CU1hcCBvbmUgZGlyZWN0b3J5IG5hbWUgdG8gYW5vdGhlciBpbiBfX0ZJTEVfXywgX19CQVNFX0ZJTEVfXyBhbmQgX19idWlsdGluX0ZJTEUgKCkKKysKKyBmZXh0ZW5kZWQtaWRlbnRpZmllcnMKKyBDIE9iakMgQysrIE9iakMrKworIFBlcm1pdCB1bml2ZXJzYWwgY2hhcmFjdGVyIG5hbWVzIChcXHUgYW5kIFxcVSkgaW4gaWRlbnRpZmllcnMuCitkaWZmIC0tZ2l0IGEvZ2NjL2R3YXJmMm91dC5jIGIvZ2NjL2R3YXJmMm91dC5jCitpbmRleCA4MGYyZGY1Li5hMmJmY2MwIDEwMDY0NAorLS0tIGEvZ2NjL2R3YXJmMm91dC5jCisrKysgYi9nY2MvZHdhcmYyb3V0LmMKK0BAIC0yMTY3Miw2ICsyMTY3Miw3IEBAIGdlbl9wcm9kdWNlcl9zdHJpbmcgKHZvaWQpCisgICAgICAgY2FzZSBPUFRfZmx0cmFuc19vdXRwdXRfbGlzdF86CisgICAgICAgY2FzZSBPUFRfZnJlc29sdXRpb25fOgorICAgICAgIGNhc2UgT1BUX2ZkZWJ1Z19wcmVmaXhfbWFwXzoKKysgICAgICBjYXNlIE9QVF9mZmlsZV9wcmVmaXhfbWFwXzoKKyAJLyogSWdub3JlIHRoZXNlLiAgKi8KKyAJY29udGludWU7CisgICAgICAgZGVmYXVsdDoKK2RpZmYgLS1naXQgYS9nY2MvZ2ltcGxpZnkuYyBiL2djYy9naW1wbGlmeS5jCitpbmRleCBlMjIzZTU5Li4xNDMzYzI1IDEwMDY0NAorLS0tIGEvZ2NjL2dpbXBsaWZ5LmMKKysrKyBiL2djYy9naW1wbGlmeS5jCitAQCAtNTcsNiArNTcsOCBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorICNpbmNsdWRlICJnb21wLWNvbnN0YW50cy5oIgorICNpbmNsdWRlICJ0cmVlLWR1bXAuaCIKKyAjaW5jbHVkZSAiZ2ltcGxlLXdhbGsuaCIKKysjaW5jbHVkZSAiZmlsZS1tYXAuaCIKKysKKyAjaW5jbHVkZSAibGFuZ2hvb2tzLWRlZi5oIgkvKiBGSVhNRTogZm9yIGxoZF9zZXRfZGVjbF9hc3NlbWJsZXJfbmFtZSAqLworICNpbmNsdWRlICJidWlsdGlucy5oIgorIAorQEAgLTI0MzIsNiArMjQzNCw3IEBAIGdpbXBsaWZ5X2NhbGxfZXhwciAodHJlZSAqZXhwcl9wLCBnaW1wbGVfc2VxICpwcmVfcCwgYm9vbCB3YW50X3ZhbHVlKQorICAgICAgIGNhc2UgQlVJTFRfSU5fRklMRToKKyAJeworIAkgIGNvbnN0IGNoYXIgKmxvY2ZpbGUgPSBMT0NBVElPTl9GSUxFIChFWFBSX0xPQ0FUSU9OICgqZXhwcl9wKSk7CisrCSAgbG9jZmlsZSA9IHJlbWFwX2ZpbGVfZmlsZW5hbWUgKGxvY2ZpbGUpOworIAkgICpleHByX3AgPSBidWlsZF9zdHJpbmdfbGl0ZXJhbCAoc3RybGVuIChsb2NmaWxlKSArIDEsIGxvY2ZpbGUpOworIAkgIHJldHVybiBHU19PSzsKKyAJfQorZGlmZiAtLWdpdCBhL2xpYmNwcC9NYWtlZmlsZS5pbiBiL2xpYmNwcC9NYWtlZmlsZS5pbgoraW5kZXggYTdkNzgyOC4uM2QyOTU3MiAxMDA2NDQKKy0tLSBhL2xpYmNwcC9NYWtlZmlsZS5pbgorKysrIGIvbGliY3BwL01ha2VmaWxlLmluCitAQCAtODQsMTIgKzg0LDEyIEBAIERFUE1PREUgPSAkKENYWERFUE1PREUpCisgCisgCisgbGliY3BwX2FfT0JKUyA9IGNoYXJzZXQubyBkaXJlY3RpdmVzLm8gZGlyZWN0aXZlcy1vbmx5Lm8gZXJyb3JzLm8gXAorLQlleHByLm8gZmlsZXMubyBpZGVudGlmaWVycy5vIGluaXQubyBsZXgubyBsaW5lLW1hcC5vIG1hY3JvLm8gXAorLQlta2RlcHMubyBwY2gubyBzeW10YWIubyB0cmFkaXRpb25hbC5vCisrCWV4cHIubyBmaWxlLW1hcC5vIGZpbGVzLm8gaWRlbnRpZmllcnMubyBpbml0Lm8gbGV4Lm8gbGluZS1tYXAubyBcCisrCW1hY3JvLm8gbWtkZXBzLm8gcGNoLm8gc3ltdGFiLm8gdHJhZGl0aW9uYWwubworIAorIGxpYmNwcF9hX1NPVVJDRVMgPSBjaGFyc2V0LmMgZGlyZWN0aXZlcy5jIGRpcmVjdGl2ZXMtb25seS5jIGVycm9ycy5jIFwKKy0JZXhwci5jIGZpbGVzLmMgaWRlbnRpZmllcnMuYyBpbml0LmMgbGV4LmMgbGluZS1tYXAuYyBtYWNyby5jIFwKKy0JbWtkZXBzLmMgcGNoLmMgc3ltdGFiLmMgdHJhZGl0aW9uYWwuYworKwlleHByLmMgZmlsZS1tYXAuYyBmaWxlcy5jIGlkZW50aWZpZXJzLmMgaW5pdC5jIGxleC5jIGxpbmUtbWFwLmMgXAorKwltYWNyby5jIG1rZGVwcy5jIHBjaC5jIHN5bXRhYi5jIHRyYWRpdGlvbmFsLmMKKyAKKyBhbGw6IGxpYmNwcC5hICQoVVNFRF9DQVRBTE9HUykKKyAKK0BAIC0yNjMsNyArMjYzLDcgQEAgcG8vJChQQUNLQUdFKS5wb3Q6ICQobGliY3BwX2FfU09VUkNFUykKKyAKKyBUQUdTX1NPVVJDRVMgPSAkKGxpYmNwcF9hX1NPVVJDRVMpIGludGVybmFsLmggdWNuaWQuaCBcCisgICAgIGluY2x1ZGUvbGluZS1tYXAuaCBpbmNsdWRlL3N5bXRhYi5oIGluY2x1ZGUvY3BwLWlkLWRhdGEuaCBcCistICAgIGluY2x1ZGUvY3BwbGliLmggaW5jbHVkZS9ta2RlcHMuaCBzeXN0ZW0uaAorKyAgICBpbmNsdWRlL2NwcGxpYi5oIGluY2x1ZGUvbWtkZXBzLmggc3lzdGVtLmggaW5jbHVkZS9maWxlLW1hcC5oCisgCisgVEFHUzogJChUQUdTX1NPVVJDRVMpCisgCWNkICQoc3JjZGlyKSAmJiBldGFncyAkKFRBR1NfU09VUkNFUykKK2RpZmYgLS1naXQgYS9saWJjcHAvZmlsZS1tYXAuYyBiL2xpYmNwcC9maWxlLW1hcC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMTgwMzVlZgorLS0tIC9kZXYvbnVsbAorKysrIGIvbGliY3BwL2ZpbGUtbWFwLmMKK0BAIC0wLDAgKzEsOTIgQEAKKysvKiBNYXAgb25lIGRpcmVjdG9yeSBuYW1lIHRvIGFub3RoZXIgaW4gX19GSUxFX18sIF9fQkFTRV9GSUxFX18KKysgICBhbmQgX19idWlsdGluX0ZJTEUgKCkuCisrICAgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyt1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKytGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55CisrbGF0ZXIgdmVyc2lvbi4KKysKKytUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKytidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorK01FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKytHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworK1lvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKys8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrIEluIG90aGVyIHdvcmRzLCB5b3UgYXJlIHdlbGNvbWUgdG8gdXNlLCBzaGFyZSBhbmQgaW1wcm92ZSB0aGlzIHByb2dyYW0uCisrIFlvdSBhcmUgZm9yYmlkZGVuIHRvIGZvcmJpZCBhbnlvbmUgZWxzZSB0byB1c2UsIHNoYXJlIGFuZCBpbXByb3ZlCisrIHdoYXQgeW91IGdpdmUgdGhlbS4gICBIZWxwIHN0YW1wIG91dCBzb2Z0d2FyZS1ob2FyZGluZyEgICovCisrCisrI2luY2x1ZGUgImNvbmZpZy5oIgorKyNpbmNsdWRlICJzeXN0ZW0uaCIKKysjaW5jbHVkZSAiZmlsZS1tYXAuaCIKKysKKysvKiBTdHJ1Y3R1cmUgcmVjb3JkaW5nIHRoZSBtYXBwaW5nIGZyb20gc291cmNlIGZpbGUgYW5kIGRpcmVjdG9yeQorKyAgIG5hbWVzIGF0IGNvbXBpbGUgdGltZSB0byBfX0ZJTEVfXyAqLworK3R5cGVkZWYgc3RydWN0IGZpbGVfcHJlZml4X21hcAorK3sKKysgIGNvbnN0IGNoYXIgKm9sZF9wcmVmaXg7CisrICBjb25zdCBjaGFyICpuZXdfcHJlZml4OworKyAgc2l6ZV90IG9sZF9sZW47CisrICBzaXplX3QgbmV3X2xlbjsKKysgIHN0cnVjdCBmaWxlX3ByZWZpeF9tYXAgKm5leHQ7CisrfSBmaWxlX3ByZWZpeF9tYXA7CisrCisrLyogTGlua2VkIGxpc3Qgb2Ygc3VjaCBzdHJ1Y3R1cmVzLiAgKi8KKytzdGF0aWMgZmlsZV9wcmVmaXhfbWFwICpmaWxlX3ByZWZpeF9tYXBzOworKworKy8qIFJlY29yZCBwcmVmaXggbWFwcGluZyBvZiBfX0ZJTEVfXy4gIEFSRyBpcyB0aGUgYXJndW1lbnQgdG8KKysgICAtZmZpbGUtcHJlZml4LW1hcCBhbmQgbXVzdCBiZSBvZiB0aGUgZm9ybSBPTEQ9TkVXLiAgKi8KKytpbnQKKythZGRfZmlsZV9wcmVmaXhfbWFwIChjb25zdCBjaGFyICphcmcpCisreworKyAgZmlsZV9wcmVmaXhfbWFwICptYXA7CisrICBjb25zdCBjaGFyICpwOworKworKyAgcCA9IHN0cmNociAoYXJnLCAnPScpOworKyAgaWYgKCFwKQorKyAgeworKyAgICAgIGZwcmludGYoc3RkZXJyLCAiaW52YWxpZCBhcmd1bWVudCAlcXMgdG8gLWZmaWxlLXByZWZpeC1tYXAiLCBhcmcpOworKyAgICAgIHJldHVybiAtMTsKKysgIH0KKysgIG1hcCA9IFhORVcgKGZpbGVfcHJlZml4X21hcCk7CisrICBtYXAtPm9sZF9wcmVmaXggPSB4c3RybmR1cCAoYXJnLCBwIC0gYXJnKTsKKysgIG1hcC0+b2xkX2xlbiA9IHAgLSBhcmc7CisrICBwKys7CisrICBtYXAtPm5ld19wcmVmaXggPSB4c3RyZHVwIChwKTsKKysgIG1hcC0+bmV3X2xlbiA9IHN0cmxlbiAocCk7CisrICBtYXAtPm5leHQgPSBmaWxlX3ByZWZpeF9tYXBzOworKyAgZmlsZV9wcmVmaXhfbWFwcyA9IG1hcDsKKysKKysgIHJldHVybiAwOworK30KKysKKysvKiBQZXJmb3JtIHVzZXItc3BlY2lmaWVkIG1hcHBpbmcgb2YgX19GSUxFX18gcHJlZml4ZXMuICBSZXR1cm4KKysgICB0aGUgbmV3IG5hbWUgY29ycmVzcG9uZGluZyB0byBmaWxlbmFtZS4gICovCisrCisrY29uc3QgY2hhciAqCisrcmVtYXBfZmlsZV9maWxlbmFtZSAoY29uc3QgY2hhciAqZmlsZW5hbWUpCisreworKyAgZmlsZV9wcmVmaXhfbWFwICptYXA7CisrICBjaGFyICpzOworKyAgY29uc3QgY2hhciAqbmFtZTsKKysgIHNpemVfdCBuYW1lX2xlbjsKKysKKysgIGZvciAobWFwID0gZmlsZV9wcmVmaXhfbWFwczsgbWFwOyBtYXAgPSBtYXAtPm5leHQpCisrICAgIGlmIChmaWxlbmFtZV9uY21wIChmaWxlbmFtZSwgbWFwLT5vbGRfcHJlZml4LCBtYXAtPm9sZF9sZW4pID09IDApCisrICAgICAgYnJlYWs7CisrICBpZiAoIW1hcCkKKysgICAgcmV0dXJuIGZpbGVuYW1lOworKyAgbmFtZSA9IGZpbGVuYW1lICsgbWFwLT5vbGRfbGVuOworKyAgbmFtZV9sZW4gPSBzdHJsZW4gKG5hbWUpICsgMTsKKysgIHMgPSAoY2hhciAqKSBhbGxvY2EgKG5hbWVfbGVuICsgbWFwLT5uZXdfbGVuKTsKKysgIG1lbWNweSAocywgbWFwLT5uZXdfcHJlZml4LCBtYXAtPm5ld19sZW4pOworKyAgbWVtY3B5IChzICsgbWFwLT5uZXdfbGVuLCBuYW1lLCBuYW1lX2xlbik7CisrCisrICByZXR1cm4geHN0cmR1cCAocyk7CisrfQorKworKworZGlmZiAtLWdpdCBhL2xpYmNwcC9pbmNsdWRlL2ZpbGUtbWFwLmggYi9saWJjcHAvaW5jbHVkZS9maWxlLW1hcC5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uODc1MDMxNQorLS0tIC9kZXYvbnVsbAorKysrIGIvbGliY3BwL2luY2x1ZGUvZmlsZS1tYXAuaAorQEAgLTAsMCArMSwzMCBAQAorKy8qIE1hcCBvbmUgZGlyZWN0b3J5IG5hbWUgdG8gYW5vdGhlciBpbiBfX0ZJTEVfXywgX19CQVNFX0ZJTEVfXworKyAgIGFuZCBfX2J1aWx0aW5fRklMRSAoKS4KKysgICBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKytUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorK3VuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorK0ZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkKKytsYXRlciB2ZXJzaW9uLgorKworK1RoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorK2J1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorK0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKythbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorKzxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKysgSW4gb3RoZXIgd29yZHMsIHlvdSBhcmUgd2VsY29tZSB0byB1c2UsIHNoYXJlIGFuZCBpbXByb3ZlIHRoaXMgcHJvZ3JhbS4KKysgWW91IGFyZSBmb3JiaWRkZW4gdG8gZm9yYmlkIGFueW9uZSBlbHNlIHRvIHVzZSwgc2hhcmUgYW5kIGltcHJvdmUKKysgd2hhdCB5b3UgZ2l2ZSB0aGVtLiAgIEhlbHAgc3RhbXAgb3V0IHNvZnR3YXJlLWhvYXJkaW5nISAgKi8KKysKKysjaWZuZGVmIExJQkNQUF9GSUxFX01BUF9ICisrI2RlZmluZSBMSUJDUFBfRklMRV9NQVBfSAorKworK2NvbnN0IGNoYXIgKiByZW1hcF9maWxlX2ZpbGVuYW1lIChjb25zdCBjaGFyICpmaWxlbmFtZSk7CisrCisraW50IGFkZF9maWxlX3ByZWZpeF9tYXAgKGNvbnN0IGNoYXIgKmFyZyk7CisrCisrI2VuZGlmIC8qICFMSUJDUFBfRklMRV9NQVBfSCAgKi8KK2RpZmYgLS1naXQgYS9saWJjcHAvbWFjcm8uYyBiL2xpYmNwcC9tYWNyby5jCitpbmRleCBjMjUxNTUzLi4zY2VlYzNkIDEwMDY0NAorLS0tIGEvbGliY3BwL21hY3JvLmMKKysrKyBiL2xpYmNwcC9tYWNyby5jCitAQCAtMjYsNiArMjYsNyBAQCBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorICNpbmNsdWRlICJzeXN0ZW0uaCIKKyAjaW5jbHVkZSAiY3BwbGliLmgiCisgI2luY2x1ZGUgImludGVybmFsLmgiCisrI2luY2x1ZGUgImZpbGUtbWFwLmgiCisgCisgdHlwZWRlZiBzdHJ1Y3QgbWFjcm9fYXJnIG1hY3JvX2FyZzsKKyAvKiBUaGlzIHN0cnVjdHVyZSByZXByZXNlbnRzIHRoZSB0b2tlbnMgb2YgYSBtYWNybyBhcmd1bWVudC4gIFRoZXNlCitAQCAtMzAxLDYgKzMwMiw3IEBAIF9jcHBfYnVpbHRpbl9tYWNyb190ZXh0IChjcHBfcmVhZGVyICpwZmlsZSwgY3BwX2hhc2hub2RlICpub2RlLAorIAkgICAgaWYgKCFuYW1lKQorIAkgICAgICBhYm9ydCAoKTsKKyAJICB9CisrCW5hbWUgPSByZW1hcF9maWxlX2ZpbGVuYW1lIChuYW1lKTsKKyAJbGVuID0gc3RybGVuIChuYW1lKTsKKyAJYnVmID0gX2NwcF91bmFsaWduZWRfYWxsb2MgKHBmaWxlLCBsZW4gKiAyICsgMyk7CisgCXJlc3VsdCA9IGJ1ZjsKKy0tIAorMi44LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDQzLVJldXNlLWZkZWJ1Zy1wcmVmaXgtbWFwLXRvLXJlcGxhY2UtZmZpbGUtcHJlZml4LW1hcC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDA0My1SZXVzZS1mZGVidWctcHJlZml4LW1hcC10by1yZXBsYWNlLWZmaWxlLXByZWZpeC1tYXAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDA3N2Y4MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDA0My1SZXVzZS1mZGVidWctcHJlZml4LW1hcC10by1yZXBsYWNlLWZmaWxlLXByZWZpeC1tYXAucGF0Y2gKQEAgLTAsMCArMSw0MyBAQAorRnJvbSAyNWM4N2M2Y2M0MGVjNWNjNjk2NWY4YmZiMjE1YmVjMDFhYmQ2ZDgyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxNiBNYXIgMjAxNiAwNTozOTo1OSAtMDQwMAorU3ViamVjdDogW1BBVENIIDQzLzQ2XSBSZXVzZSAtZmRlYnVnLXByZWZpeC1tYXAgdG8gcmVwbGFjZSAtZmZpbGUtcHJlZml4LW1hcAorCitUaGUgb2UtY29yZSBtYXkgdXNlIGV4dGVybmFsIHRvb2xjaGFpbiB0byBjb21waWxlLAord2hpY2ggbWF5IG5vdCBzdXBwb3J0IC1mZmlsZS1wcmVmaXgtbWFwLgorCitTaW5jZSB3ZSB1c2UgLWZkZWJ1Zy1wcmVmaXgtbWFwIHRvIGRvIHRoZSBzYW1lIHRoaW5nLAorc28gd2UgY291bGQgcmV1c2UgaXQgdG8gcmVwbGFjZSAtZmZpbGUtcHJlZml4LW1hcC4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlW29lLWNvcmUgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGdjYy9vcHRzLWdsb2JhbC5jIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZ2NjL29wdHMtZ2xvYmFsLmMgYi9nY2Mvb3B0cy1nbG9iYWwuYworaW5kZXggYjdlNTIzMi4uMTIxZDdiOSAxMDA2NDQKKy0tLSBhL2djYy9vcHRzLWdsb2JhbC5jCisrKysgYi9nY2Mvb3B0cy1nbG9iYWwuYworQEAgLTMxLDYgKzMxLDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKyAjaW5jbHVkZSAibGFuZ2hvb2tzLmgiCisgI2luY2x1ZGUgImRiZ2NudC5oIgorICNpbmNsdWRlICJkZWJ1Zy5oIgorKyNpbmNsdWRlICJmaWxlLW1hcC5oIgorICNpbmNsdWRlICJvdXRwdXQuaCIKKyAjaW5jbHVkZSAicGx1Z2luLmgiCisgI2luY2x1ZGUgInRvcGxldi5oIgorQEAgLTM1Nyw2ICszNTgsOSBAQCBoYW5kbGVfY29tbW9uX2RlZmVycmVkX29wdGlvbnMgKHZvaWQpCisgCisgCWNhc2UgT1BUX2ZkZWJ1Z19wcmVmaXhfbWFwXzoKKyAJICBhZGRfZGVidWdfcHJlZml4X21hcCAob3B0LT5hcmcpOworKworKwkgIC8qIFJldXNlIC1mZGVidWctcHJlZml4LW1hcCB0byByZXBsYWNlIC1mZmlsZS1wcmVmaXgtbWFwICovCisrCSAgYWRkX2ZpbGVfcHJlZml4X21hcCAob3B0LT5hcmcpOworIAkgIGJyZWFrOworIAorIAljYXNlIE9QVF9mZHVtcF86CistLSAKKzIuOC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDA0NC1nY2MtZmluYWwuYy1mZGVidWctcHJlZml4LW1hcC1zdXBwb3J0LXRvLXJlbWFwLXNvdXJjLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDQ0LWdjYy1maW5hbC5jLWZkZWJ1Zy1wcmVmaXgtbWFwLXN1cHBvcnQtdG8tcmVtYXAtc291cmMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQ0MWFmNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDA0NC1nY2MtZmluYWwuYy1mZGVidWctcHJlZml4LW1hcC1zdXBwb3J0LXRvLXJlbWFwLXNvdXJjLnBhdGNoCkBAIC0wLDAgKzEsNTQgQEAKK0Zyb20gNmFiMjNlODhhZWYyMmJiYWJlZTdiOTYwMGM0NTlmZjM5NTQ3YmI2NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjQgTWFyIDIwMTYgMTE6MjM6MTQgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSCA0NC80Nl0gZ2NjL2ZpbmFsLmM6IC1mZGVidWctcHJlZml4LW1hcCBzdXBwb3J0IHRvIHJlbWFwCisgc291cmNlcyB3aXRoIHJlbGF0aXZlIHBhdGgKKworUFIgb3RoZXIvNzA0MjgKKyogZmluYWwuYyAocmVtYXBfZGVidWdfZmlsZW5hbWUpOiBVc2UgbHJlYWxwYXRoIHRvIHRyYW5zbGF0ZQorcmVsYXRpdmUgcGF0aCBiZWZvcmUgcmVtYXBwaW5nCisKK2h0dHBzOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTcwNDI4CitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbZ2NjLXBhdGNoZXNAZ2NjLmdudS5vcmddCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGdjYy9maW5hbC5jIHwgMTUgKysrKysrKysrKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvZmluYWwuYyBiL2djYy9maW5hbC5jCitpbmRleCA1NWNmNTA5Li4yMzI5M2U1IDEwMDY0NAorLS0tIGEvZ2NjL2ZpbmFsLmMKKysrKyBiL2djYy9maW5hbC5jCitAQCAtMTU1NCwxNiArMTU1NCwyNSBAQCByZW1hcF9kZWJ1Z19maWxlbmFtZSAoY29uc3QgY2hhciAqZmlsZW5hbWUpCisgICBjb25zdCBjaGFyICpuYW1lOworICAgc2l6ZV90IG5hbWVfbGVuOworIAorKyAgLyogU3VwcG9ydCB0byByZW1hcCBmaWxlbmFtZSB3aXRoIHJlbGF0aXZlIHBhdGggICovCisrICBjaGFyICpyZWFscGF0aCA9IGxyZWFscGF0aCAoZmlsZW5hbWUpOworKyAgaWYgKHJlYWxwYXRoID09IE5VTEwpCisrICAgIHJldHVybiBmaWxlbmFtZTsKKysKKyAgIGZvciAobWFwID0gZGVidWdfcHJlZml4X21hcHM7IG1hcDsgbWFwID0gbWFwLT5uZXh0KQorLSAgICBpZiAoZmlsZW5hbWVfbmNtcCAoZmlsZW5hbWUsIG1hcC0+b2xkX3ByZWZpeCwgbWFwLT5vbGRfbGVuKSA9PSAwKQorKyAgICBpZiAoZmlsZW5hbWVfbmNtcCAocmVhbHBhdGgsIG1hcC0+b2xkX3ByZWZpeCwgbWFwLT5vbGRfbGVuKSA9PSAwKQorICAgICAgIGJyZWFrOworICAgaWYgKCFtYXApCistICAgIHJldHVybiBmaWxlbmFtZTsKKy0gIG5hbWUgPSBmaWxlbmFtZSArIG1hcC0+b2xkX2xlbjsKKysgICAgeworKyAgICAgIGZyZWUgKHJlYWxwYXRoKTsKKysgICAgICByZXR1cm4gZmlsZW5hbWU7CisrICAgIH0KKysgIG5hbWUgPSByZWFscGF0aCArIG1hcC0+b2xkX2xlbjsKKyAgIG5hbWVfbGVuID0gc3RybGVuIChuYW1lKSArIDE7CisgICBzID0gKGNoYXIgKikgYWxsb2NhIChuYW1lX2xlbiArIG1hcC0+bmV3X2xlbik7CisgICBtZW1jcHkgKHMsIG1hcC0+bmV3X3ByZWZpeCwgbWFwLT5uZXdfbGVuKTsKKyAgIG1lbWNweSAocyArIG1hcC0+bmV3X2xlbiwgbmFtZSwgbmFtZV9sZW4pOworKyAgZnJlZSAocmVhbHBhdGgpOworICAgcmV0dXJuIGdnY19zdHJkdXAgKHMpOworIH0KKyAMCistLSAKKzIuOC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDA0NS1saWJnY2MtQWRkLWtub2ItdG8tdXNlLWxkYmwtMTI4LW9uLXBwYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDA0NS1saWJnY2MtQWRkLWtub2ItdG8tdXNlLWxkYmwtMTI4LW9uLXBwYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjJiNzI3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDQ1LWxpYmdjYy1BZGQta25vYi10by11c2UtbGRibC0xMjgtb24tcHBjLnBhdGNoCkBAIC0wLDAgKzEsMTI1IEBACitGcm9tIDVhNDdkNDA0ZWEyOWUyNTQ3MjY5ZTNkZGYzODc1NDQ2MmQ5M2Y5MDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBBcHIgMjAxNiAyMDowMzoyOCArMDAwMAorU3ViamVjdDogW1BBVENIIDQ1LzQ2XSBsaWJnY2M6IEFkZCBrbm9iIHRvIHVzZSBsZGJsLTEyOCBvbiBwcGMKKworbXVzbCBkb2VzIG5vdCBzdXBwb3J0IGxkYmwgMTI4IHNvIHdlIGNhbiBub3QgYXNzdW1lCit0aGF0IGxpbnV4IGFzIGEgd2hvbGUgc3VwcG9ydHMgbGRibC0xMjggYml0cywgaW5zdGVhZAorYWN0IHVwb24gY29uZmlndXJlIG9wdGlvbiBwYXNzZWQgdG8gZ2NjIGFuZCBhc3N1bWUgbm8KK29uIG11c2wgYW5kIHllcyBvdGhlcndpc2UgaWYgbm8gb3B0aW9uIGlzIHBhc3NlZCBzaW5jZQorZGVmYXVsdCBiZWhhdmlvdXIgaXMgdG8gYXNzdW1lIGxkYmwxMjggaXQgZG9lcyBub3QKK2NoYW5nZSB0aGUgZGVmYXVsdHMKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBsaWJnY2MvTWFrZWZpbGUuaW4gICAgICAgICAgIHwgIDEgKworIGxpYmdjYy9jb25maWcvcnM2MDAwL3QtbGludXggfCAgNSArKysrLQorIGxpYmdjYy9jb25maWd1cmUgICAgICAgICAgICAgfCAxOCArKysrKysrKysrKysrKysrKysKKyBsaWJnY2MvY29uZmlndXJlLmFjICAgICAgICAgIHwgMTIgKysrKysrKysrKysrCisgNCBmaWxlcyBjaGFuZ2VkLCAzNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisgbW9kZSBjaGFuZ2UgMTAwNjQ0ID0+IDEwMDc1NSBsaWJnY2MvY29uZmlndXJlCisKK2RpZmYgLS1naXQgYS9saWJnY2MvTWFrZWZpbGUuaW4gYi9saWJnY2MvTWFrZWZpbGUuaW4KK2luZGV4IGYwOWIzOWIuLjI5NmNmMGYgMTAwNjQ0CistLS0gYS9saWJnY2MvTWFrZWZpbGUuaW4KKysrKyBiL2xpYmdjYy9NYWtlZmlsZS5pbgorQEAgLTQzLDYgKzQzLDcgQEAgZW5hYmxlX3Z0YWJsZV92ZXJpZnkgPSBAZW5hYmxlX3Z0YWJsZV92ZXJpZnlACisgZW5hYmxlX2RlY2ltYWxfZmxvYXQgPSBAZW5hYmxlX2RlY2ltYWxfZmxvYXRACisgZml4ZWRfcG9pbnQgPSBAZml4ZWRfcG9pbnRACisgd2l0aF9haXhfc29uYW1lID0gQHdpdGhfYWl4X3NvbmFtZUAKKyt3aXRoX2xkYmwxMjggPSBAd2l0aF9sZGJsMTI4QAorIAorIGhvc3Rfbm9uY2Fub25pY2FsID0gQGhvc3Rfbm9uY2Fub25pY2FsQAorIHJlYWxfaG9zdF9ub25jYW5vbmljYWwgPSBAcmVhbF9ob3N0X25vbmNhbm9uaWNhbEAKK2RpZmYgLS1naXQgYS9saWJnY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4IGIvbGliZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eAoraW5kZXggNGY2ZDRjNC4uYzUwZGQ5NCAxMDA2NDQKKy0tLSBhL2xpYmdjYy9jb25maWcvcnM2MDAwL3QtbGludXgKKysrKyBiL2xpYmdjYy9jb25maWcvcnM2MDAwL3QtbGludXgKK0BAIC0xLDMgKzEsNiBAQAorIFNITElCX01BUEZJTEVTICs9ICQoc3JjZGlyKS9jb25maWcvcnM2MDAwL2xpYmdjYy1nbGliYy52ZXIKKyAKKy1IT1NUX0xJQkdDQzJfQ0ZMQUdTICs9IC1tbG9uZy1kb3VibGUtMTI4IC1tbm8tbWluaW1hbC10b2MKKytpZmVxICgkKHdpdGhfbGRibDEyOCkseWVzKQorK0hPU1RfTElCR0NDMl9DRkxBR1MgKz0gLW1sb25nLWRvdWJsZS0xMjgKKytlbmRpZgorK0hPU1RfTElCR0NDMl9DRkxBR1MgKz0gLW1uby1taW5pbWFsLXRvYworZGlmZiAtLWdpdCBhL2xpYmdjYy9jb25maWd1cmUgYi9saWJnY2MvY29uZmlndXJlCitvbGQgbW9kZSAxMDA2NDQKK25ldyBtb2RlIDEwMDc1NQoraW5kZXggZTdkNmM3NS4uZTlhOTAxOQorLS0tIGEvbGliZ2NjL2NvbmZpZ3VyZQorKysrIGIvbGliZ2NjL2NvbmZpZ3VyZQorQEAgLTYxNCw2ICs2MTQsNyBAQCBidWlsZF92ZW5kb3IKKyBidWlsZF9jcHUKKyBidWlsZAorIHdpdGhfYWl4X3NvbmFtZQorK3dpdGhfbGRibDEyOAorIGVuYWJsZV92dGFibGVfdmVyaWZ5CisgZW5hYmxlX3NoYXJlZAorIGxpYmdjY190b3BkaXIKK0BAIC02NjMsNiArNjY0LDcgQEAgd2l0aF9jcm9zc19ob3N0Cisgd2l0aF9sZAorIGVuYWJsZV9zaGFyZWQKKyBlbmFibGVfdnRhYmxlX3ZlcmlmeQorK3dpdGhfbG9uZ19kb3VibGVfMTI4Cisgd2l0aF9haXhfc29uYW1lCisgZW5hYmxlX3ZlcnNpb25fc3BlY2lmaWNfcnVudGltZV9saWJzCisgd2l0aF9zbGliZGlyCitAQCAtMTMxOSw2ICsxMzIxLDcgQEAgT3B0aW9uYWwgUGFja2FnZXM6CisgICAtLXdpdGgtdGFyZ2V0LXN1YmRpcj1TVUJESVIgICAgICBDb25maWd1cmluZyBpbiBhIHN1YmRpcmVjdG9yeSBmb3IgdGFyZ2V0CisgICAtLXdpdGgtY3Jvc3MtaG9zdD1IT1NUICAgICAgICAgICBDb25maWd1cmluZyB3aXRoIGEgY3Jvc3MgY29tcGlsZXIKKyAgIC0td2l0aC1sZCAgICAgICAgICAgICAgIGFycmFuZ2UgdG8gdXNlIHRoZSBzcGVjaWZpZWQgbGQgKGZ1bGwgcGF0aG5hbWUpCisrICAtLXdpdGgtbG9uZy1kb3VibGUtMTI4ICB1c2UgMTI4LWJpdCBsb25nIGRvdWJsZSBieSBkZWZhdWx0CisgICAtLXdpdGgtYWl4LXNvbmFtZT1haXh8c3ZyNHxib3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZWQgbGlicmFyeSB2ZXJzaW9uaW5nIChha2EgIlNPTkFNRSIpIHZhcmlhbnQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGUgb24gQUlYCitAQCAtMjIwMSw2ICsyMjA0LDIxIEBAIGZpCisgCisgCisgCisrIyBDaGVjayB3aGV0aGVyIC0td2l0aC1sb25nLWRvdWJsZS0xMjggd2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7d2l0aF9sb25nX2RvdWJsZV8xMjgrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgd2l0aHZhbD0kd2l0aF9sb25nX2RvdWJsZV8xMjg7IHdpdGhfbGRibDEyOD0iJHdpdGhfbG9uZ19kb3VibGVfMTI4IgorK2Vsc2UKKysgIGNhc2UgIiR7aG9zdH0iIGluCisrIHBvd2VyKi0qLW11c2wqKQorKyAgIHdpdGhfbGRibDEyOD0ibm8iOzsKKysgKikgd2l0aF9sZGJsMTI4PSJ5ZXMiOzsKKysgZXNhYworKworK2ZpCisrCisrCisrCisrCisgIyBDaGVjayB3aGV0aGVyIC0td2l0aC1haXgtc29uYW1lIHdhcyBnaXZlbi4KKyBpZiB0ZXN0ICIke3dpdGhfYWl4X3NvbmFtZStzZXR9IiA9IHNldDsgdGhlbiA6CisgICB3aXRodmFsPSR3aXRoX2FpeF9zb25hbWU7IGNhc2UgIiR7aG9zdH06JHtlbmFibGVfc2hhcmVkfSIgaW4KK2RpZmYgLS1naXQgYS9saWJnY2MvY29uZmlndXJlLmFjIGIvbGliZ2NjL2NvbmZpZ3VyZS5hYworaW5kZXggMjY5OTk3Zi4uODFkYzNiYSAxMDA2NDQKKy0tLSBhL2xpYmdjYy9jb25maWd1cmUuYWMKKysrKyBiL2xpYmdjYy9jb25maWd1cmUuYWMKK0BAIC03Nyw2ICs3NywxOCBAQCBBQ19BUkdfRU5BQkxFKHZ0YWJsZS12ZXJpZnksCisgW2VuYWJsZV92dGFibGVfdmVyaWZ5PW5vXSkKKyBBQ19TVUJTVChlbmFibGVfdnRhYmxlX3ZlcmlmeSkKKyAKKytBQ19BUkdfV0lUSChsb25nLWRvdWJsZS0xMjgsCisrW0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtbG9uZy1kb3VibGUtMTI4XSwKKysgICAgW3VzZSAxMjgtYml0IGxvbmcgZG91YmxlIGJ5IGRlZmF1bHRdKV0sCisrICAgICAgd2l0aF9sZGJsMTI4PSIkd2l0aF9sb25nX2RvdWJsZV8xMjgiLAorK1tjYXNlICIke2hvc3R9IiBpbgorKyBwb3dlciotKi1tdXNsKikKKysgICB3aXRoX2xkYmwxMjg9Im5vIjs7CisrICopIHdpdGhfbGRibDEyOD0ieWVzIjs7CisrIGVzYWMKKytdKQorK0FDX1NVQlNUKHdpdGhfbGRibDEyOCkKKysKKyBBQ19BUkdfV0lUSChhaXgtc29uYW1lLAorIFtBU19IRUxQX1NUUklORyhbLS13aXRoLWFpeC1zb25hbWU9YWl4fHN2cjR8Ym90aF0sCisgICAgIFtzaGFyZWQgbGlicmFyeSB2ZXJzaW9uaW5nIChha2EgIlNPTkFNRSIpIHZhcmlhbnQgdG8gcHJvdmlkZSBvbiBBSVhdKV0sCistLSAKKzIuOC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDA0Ni1MaW5rLWxpYmdjYy11c2luZy1MREZMQUdTLW5vdC1qdXN0LVNITElCX0xERkxBR1MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yLzAwNDYtTGluay1saWJnY2MtdXNpbmctTERGTEFHUy1ub3QtanVzdC1TSExJQl9MREZMQUdTLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5MDAzN2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yLzAwNDYtTGluay1saWJnY2MtdXNpbmctTERGTEFHUy1ub3QtanVzdC1TSExJQl9MREZMQUdTLnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK0Zyb20gNTEzYmYzYzMzZTJmNTUxZjA4YmQ1NzYwNTA5MWQ1ZGRlYmEzNTM2YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDQgTWF5IDIwMTYgMjE6MTE6MzQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCA0Ni80Nl0gTGluayBsaWJnY2MgdXNpbmcgTERGTEFHUywgbm90IGp1c3QgU0hMSUJfTERGTEFHUworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsaWJnY2MvY29uZmlnL3Qtc2xpYmdjYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpYmdjYy9jb25maWcvdC1zbGliZ2NjIGIvbGliZ2NjL2NvbmZpZy90LXNsaWJnY2MKK2luZGV4IDhjNWY4OTAuLjI5YmU5MDkgMTAwNjQ0CistLS0gYS9saWJnY2MvY29uZmlnL3Qtc2xpYmdjYworKysrIGIvbGliZ2NjL2NvbmZpZy90LXNsaWJnY2MKK0BAIC0zMiw3ICszMiw3IEBAIFNITElCX0lOU1RBTExfU09MSU5LID0gJChMTl9TKSAkKFNITElCX1NPTkFNRSkgXAorIAkkKERFU1RESVIpJChzbGliZGlyKSQoU0hMSUJfU0xJQkRJUl9RVUFMKS8kKFNITElCX1NPTElOSykKKyAKKyBTSExJQl9MSU5LID0gJChDQykgJChMSUJHQ0MyX0NGTEFHUykgLXNoYXJlZCAtbm9kZWZhdWx0bGlicyBcCistCSQoU0hMSUJfTERGTEFHUykgXAorKwkkKExERkxBR1MpICQoU0hMSUJfTERGTEFHUykgXAorIAktbyAkKFNITElCX0RJUikvJChTSExJQl9TT05BTUUpLnRtcCBAbXVsdGlsaWJfZmxhZ3NAIFwKKyAJJChTSExJQl9PQkpTKSAkKFNITElCX0xDKSAmJiBcCisgCXJtIC1mICQoU0hMSUJfRElSKS8kKFNITElCX1NPTElOSykgJiYgXAorLS0gCisyLjguMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yLzAwNDctbGliZ2NjX3MtVXNlLWFsaWFzLWZvci1fX2NwdV9pbmRpY2F0b3JfaW5pdC1pbnN0ZWFkLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvMDA0Ny1saWJnY2Nfcy1Vc2UtYWxpYXMtZm9yLV9fY3B1X2luZGljYXRvcl9pbml0LWluc3RlYWQtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkNmNkNjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yLzAwNDctbGliZ2NjX3MtVXNlLWFsaWFzLWZvci1fX2NwdV9pbmRpY2F0b3JfaW5pdC1pbnN0ZWFkLS5wYXRjaApAQCAtMCwwICsxLDg1IEBACitGcm9tIDBhOWVkMDQ3OTIwM2NiN2U2OWMzNzQ1YjBjMjU5MDA3NDEwZjM5YmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTemFib2xjcyBOYWd5IDxuc3pAcG9ydDcwLm5ldD4KK0RhdGU6IFNhdCwgMjQgT2N0IDIwMTUgMjA6MDk6NTMgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCA0Ny80N10gbGliZ2NjX3M6IFVzZSBhbGlhcyBmb3IgX19jcHVfaW5kaWNhdG9yX2luaXQgaW5zdGVhZCBvZgorIHN5bXZlcgorCitBZGFwdGVyIGZyb20KKworaHR0cHM6Ly9nY2MuZ251Lm9yZy9tbC9nY2MtcGF0Y2hlcy8yMDE1LTA1L21zZzAwODk5Lmh0bWwKKworVGhpcyBmaXggd2FzIGRlYmF0ZWQgYnV0IGhhc250IGJlZW4gYXBwbGllZCBnY2MgdXBzdHJlYW0gc2luY2UKK3RoZXkgZXhwZWN0IG11c2wgdG8gc3VwcG9ydCAnQCcgaW4gc3ltYm9sIHZlcnNpb25pbmcgd2hpY2ggaXMKK2Egc3VuL2dudSB2ZXJzaW9uaW5nIGV4dGVudGlvbi4gVGhpcyBwYXRjaCBob3dldmVyIGF2b2lkcyB0aGUKK25lZWQgZm9yIHRoZSAnQCcgc3ltYm9scyBhdCBhbGwKKworbGliZ2NjL0NoYW5nZWxvZzoKKworMjAxNS0wNS0xMSAgU3phYm9sY3MgTmFneSAgPHN6YWJvbGNzLm5hZ3lAYXJtLmNvbT4KKworCSogY29uZmlnL2kzODYvY3B1aW5mby5jIChfX2NwdV9pbmRpY2F0b3JfaW5pdF9sb2NhbCk6IEFkZC4KKwkoX19jcHVfaW5kaWNhdG9yX2luaXRAR0NDXzQuOC4wLCBfX2NwdV9tb2RlbEBHQ0NfNC44LjApOiBSZW1vdmUuCisKKwkqIGNvbmZpZy9pMzg2L3QtbGludXggKEhPU1RfTElCR0NDMl9DRkxBR1MpOiBSZW1vdmUgLURVU0VfRUxGX1NZTVZFUi4KKworZ2NjL0NoYW5nZWxvZzoKKworMjAxNS0wNS0xMSAgU3phYm9sY3MgTmFneSAgPHN6YWJvbGNzLm5hZ3lAYXJtLmNvbT4KKworCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2V4cGFuZF9idWlsdGluKTogTWFrZSBfX2J1aWx0aW5fY3B1X2luaXQKKwljYWxsIF9fY3B1X2luZGljYXRvcl9pbml0X2xvY2FsIGluc3RlYWQgb2YgX19jcHVfaW5kaWNhdG9yX2luaXQuCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUmVqZWN0ZWQKKworIGdjYy9jb25maWcvaTM4Ni9pMzg2LmMgICAgICAgfCA0ICsrLS0KKyBsaWJnY2MvY29uZmlnL2kzODYvY3B1aW5mby5jIHwgNiArKystLS0KKyBsaWJnY2MvY29uZmlnL2kzODYvdC1saW51eCAgIHwgMiArLQorIDMgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKK2luZGV4IDg2MWEwMjkuLjFjOTdkNzIgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCisrKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCitAQCAtNDAzMjMsMTAgKzQwMzIzLDEwIEBAIGl4ODZfZXhwYW5kX2J1aWx0aW4gKHRyZWUgZXhwLCBydHggdGFyZ2V0LCBydHggc3VidGFyZ2V0LAorICAgICB7CisgICAgIGNhc2UgSVg4Nl9CVUlMVElOX0NQVV9JTklUOgorICAgICAgIHsKKy0JLyogTWFrZSBpdCBjYWxsIF9fY3B1X2luZGljYXRvcl9pbml0IGluIGxpYmdjYy4gKi8KKysJLyogTWFrZSBpdCBjYWxsIF9fY3B1X2luZGljYXRvcl9pbml0X2xvY2FsIGluIGxpYmdjYy5hLiAqLworIAl0cmVlIGNhbGxfZXhwciwgZm5kZWNsLCB0eXBlOworICAgICAgICAgdHlwZSA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoaW50ZWdlcl90eXBlX25vZGUsIE5VTExfVFJFRSk7IAorLQlmbmRlY2wgPSBidWlsZF9mbl9kZWNsICgiX19jcHVfaW5kaWNhdG9yX2luaXQiLCB0eXBlKTsKKysJZm5kZWNsID0gYnVpbGRfZm5fZGVjbCAoIl9fY3B1X2luZGljYXRvcl9pbml0X2xvY2FsIiwgdHlwZSk7CisgCWNhbGxfZXhwciA9IGJ1aWxkX2NhbGxfZXhwciAoZm5kZWNsLCAwKTsgCisgCXJldHVybiBleHBhbmRfZXhwciAoY2FsbF9leHByLCB0YXJnZXQsIG1vZGUsIEVYUEFORF9OT1JNQUwpOworICAgICAgIH0KK2RpZmYgLS1naXQgYS9saWJnY2MvY29uZmlnL2kzODYvY3B1aW5mby5jIGIvbGliZ2NjL2NvbmZpZy9pMzg2L2NwdWluZm8uYworaW5kZXggOGMyMjQ4ZC4uNmM4MmYxNSAxMDA2NDQKKy0tLSBhL2xpYmdjYy9jb25maWcvaTM4Ni9jcHVpbmZvLmMKKysrKyBiL2xpYmdjYy9jb25maWcvaTM4Ni9jcHVpbmZvLmMKK0BAIC00ODUsNyArNDg1LDcgQEAgX19jcHVfaW5kaWNhdG9yX2luaXQgKHZvaWQpCisgICByZXR1cm4gMDsKKyB9CisgCistI2lmIGRlZmluZWQgU0hBUkVEICYmIGRlZmluZWQgVVNFX0VMRl9TWU1WRVIKKy1fX2FzbV9fICgiLnN5bXZlciBfX2NwdV9pbmRpY2F0b3JfaW5pdCwgX19jcHVfaW5kaWNhdG9yX2luaXRAR0NDXzQuOC4wIik7CistX19hc21fXyAoIi5zeW12ZXIgX19jcHVfbW9kZWwsIF9fY3B1X21vZGVsQEdDQ180LjguMCIpOworKyNpZm5kZWYgU0hBUkVECisraW50IF9fY3B1X2luZGljYXRvcl9pbml0X2xvY2FsICh2b2lkKQorKyAgX19hdHRyaWJ1dGVfXyAoKHdlYWssIGFsaWFzICgiX19jcHVfaW5kaWNhdG9yX2luaXQiKSkpOworICNlbmRpZgorZGlmZiAtLWdpdCBhL2xpYmdjYy9jb25maWcvaTM4Ni90LWxpbnV4IGIvbGliZ2NjL2NvbmZpZy9pMzg2L3QtbGludXgKK2luZGV4IDExYmI0NmUuLjRmNDdmN2IgMTAwNjQ0CistLS0gYS9saWJnY2MvY29uZmlnL2kzODYvdC1saW51eAorKysrIGIvbGliZ2NjL2NvbmZpZy9pMzg2L3QtbGludXgKK0BAIC0zLDQgKzMsNCBAQAorICMgdC1zbGliZ2NjLWVsZi12ZXIgYW5kIHQtbGludXgKKyBTSExJQl9NQVBGSUxFUyA9IGxpYmdjYy1zdGQudmVyICQoc3JjZGlyKS9jb25maWcvaTM4Ni9saWJnY2MtZ2xpYmMudmVyCisgCistSE9TVF9MSUJHQ0MyX0NGTEFHUyArPSAtbWxvbmctZG91YmxlLTgwIC1EVVNFX0VMRl9TWU1WRVIKKytIT1NUX0xJQkdDQzJfQ0ZMQUdTICs9IC1tbG9uZy1kb3VibGUtODAKKy0tIAorMi45LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDQ4LUFSTS1QUi10YXJnZXQtNzEwNTYtRG9uLXQtdXNlLXZlY3Rvcml6ZWQtYnVpbHRpbnMtd2gucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yLzAwNDgtQVJNLVBSLXRhcmdldC03MTA1Ni1Eb24tdC11c2UtdmVjdG9yaXplZC1idWlsdGlucy13aC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzM5YzdmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMi8wMDQ4LUFSTS1QUi10YXJnZXQtNzEwNTYtRG9uLXQtdXNlLXZlY3Rvcml6ZWQtYnVpbHRpbnMtd2gucGF0Y2gKQEAgLTAsMCArMSw5MiBAQAorRnJvbSA4NGQyYTU1MDk4OTJiNjVlZDYwZDM5ZTZlMmY5NzE5ZTM3NjJlNDBlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbToga3RrYWNob3YgPGt0a2FjaG92QDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KK0RhdGU6IFR1ZSwgMzEgTWF5IDIwMTYgMDg6Mjk6MzkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gW0FSTV0gUFIgdGFyZ2V0LzcxMDU2OiBEb24ndCB1c2UgdmVjdG9yaXplZCBidWlsdGlucyB3aGVuCisgTkVPTiBpcyBub3QgYXZhaWxhYmxlCisKKwlQUiB0YXJnZXQvNzEwNTYKKwkqIGNvbmZpZy9hcm0vYXJtLWJ1aWx0aW5zLmMgKGFybV9idWlsdGluX3ZlY3Rvcml6ZWRfZnVuY3Rpb24pOiBSZXR1cm4KKwlOVUxMX1RSRUUgZWFybHkgaWYgTkVPTiBpcyBub3QgYXZhaWxhYmxlLiAgUmVtb3ZlIG5vdyByZWR1bmRhbnQgY2hlY2sKKwlpbiBBUk1fQ0hFQ0tfQlVJTFRJTl9NT0RFLgorCisJKiBnY2MudGFyZ2V0L2FybS9wcjcxMDU2LmM6IE5ldyB0ZXN0LgorCisKKworZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2djYy5nbnUub3JnL3N2bi9nY2MvYnJhbmNoZXMvZ2NjLTYtYnJhbmNoQDIzNjkxMCAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQKKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworIGdjYy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDcgKysrKysrKworIGdjYy9jb25maWcvYXJtL2FybS1idWlsdGlucy5jICAgICAgICAgIHwgIDYgKysrKystCisgZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgfCAgNSArKysrKworIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vcHI3MTA1Ni5jIHwgMzIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyA0IGZpbGVzIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9wcjcxMDU2LmMKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYXJtL2FybS1idWlsdGlucy5jIGIvZ2NjL2NvbmZpZy9hcm0vYXJtLWJ1aWx0aW5zLmMKK2luZGV4IDkwZmI0MGYuLjY4YjI4MzkgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2FybS9hcm0tYnVpbHRpbnMuYworKysrIGIvZ2NjL2NvbmZpZy9hcm0vYXJtLWJ1aWx0aW5zLmMKK0BAIC0yODYxLDYgKzI4NjEsMTAgQEAgYXJtX2J1aWx0aW5fdmVjdG9yaXplZF9mdW5jdGlvbiAodW5zaWduZWQgaW50IGZuLCB0cmVlIHR5cGVfb3V0LCB0cmVlIHR5cGVfaW4pCisgICBpbnQgaW5fbiwgb3V0X247CisgICBib29sIG91dF91bnNpZ25lZF9wID0gVFlQRV9VTlNJR05FRCAodHlwZV9vdXQpOworIAorKyAgLyogQ2FuJ3QgcHJvdmlkZSBhbnkgdmVjdG9yaXplZCBidWlsdGlucyB3aGVuIHdlIGNhbid0IHVzZSBORU9OLiAgKi8KKysgIGlmICghVEFSR0VUX05FT04pCisrICAgIHJldHVybiBOVUxMX1RSRUU7CisrCisgICBpZiAoVFJFRV9DT0RFICh0eXBlX291dCkgIT0gVkVDVE9SX1RZUEUKKyAgICAgICB8fCBUUkVFX0NPREUgKHR5cGVfaW4pICE9IFZFQ1RPUl9UWVBFKQorICAgICByZXR1cm4gTlVMTF9UUkVFOworQEAgLTI4NzUsNyArMjg3OSw3IEBAIGFybV9idWlsdGluX3ZlY3Rvcml6ZWRfZnVuY3Rpb24gKHVuc2lnbmVkIGludCBmbiwgdHJlZSB0eXBlX291dCwgdHJlZSB0eXBlX2luKQorICAgIE5VTExfVFJFRSBpcyByZXR1cm5lZCBpZiBubyBzdWNoIGJ1aWx0aW4gaXMgYXZhaWxhYmxlLiAgKi8KKyAjdW5kZWYgQVJNX0NIRUNLX0JVSUxUSU5fTU9ERQorICNkZWZpbmUgQVJNX0NIRUNLX0JVSUxUSU5fTU9ERShDKSAgICBcCistICAoVEFSR0VUX05FT04gJiYgVEFSR0VUX0ZQVV9BUk1WOCAgIFwKKysgIChUQVJHRVRfRlBVX0FSTVY4ICAgXAorICAgICYmIGZsYWdfdW5zYWZlX21hdGhfb3B0aW1pemF0aW9ucyBcCisgICAgJiYgQVJNX0NIRUNLX0JVSUxUSU5fTU9ERV8xIChDKSkKKyAKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL3ByNzEwNTYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vcHI3MTA1Ni5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMTM2NzU0ZQorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9wcjcxMDU2LmMKK0BAIC0wLDAgKzEsMzIgQEAKKysvKiBQUiB0YXJnZXQvNzEwNTYuICAqLworKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisrLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgYXJtX3ZmcDNfb2sgfSAqLworKy8qIHsgZGctb3B0aW9ucyAiLU8zIC1tZnB1PXZmcHYzIiB9ICovCisrCisrLyogQ2hlY2sgdGhhdCBjb21waWxpbmcgZm9yIGEgbm9uLU5FT04gdGFyZ2V0IGRvZXNuJ3QgdHJ5IHRvIGludHJvZHVjZQorKyAgIGEgTkVPTiB2ZWN0b3JpemVkIGJ1aWx0aW4uICAqLworKworK2V4dGVybiBjaGFyICpidWZmOworK2ludCBmMiAoKTsKKytzdHJ1Y3QgVDEKKyt7CisrICBpbnQgcmVzZXJ2ZWRbMl07CisrICB1bnNpZ25lZCBpbnQgaXA7CisrICB1bnNpZ25lZCBzaG9ydCBjczsKKysgIHVuc2lnbmVkIHNob3J0IHJzcnYyOworK307Cisrdm9pZAorK2YzIChjb25zdCBjaGFyICpwKQorK3sKKysgIHN0cnVjdCBUMSB4OworKyAgX19idWlsdGluX21lbWNweSAoJngsIHAsIHNpemVvZiAoc3RydWN0IFQxKSk7CisrICB4LnJlc2VydmVkWzBdID0gX19idWlsdGluX2Jzd2FwMzIgKHgucmVzZXJ2ZWRbMF0pOworKyAgeC5yZXNlcnZlZFsxXSA9IF9fYnVpbHRpbl9ic3dhcDMyICh4LnJlc2VydmVkWzFdKTsKKysgIHguaXAgPSBfX2J1aWx0aW5fYnN3YXAzMiAoeC5pcCk7CisrICB4LmNzID0geC5jcyA8PCA4IHwgeC5jcyA+PiA4OworKyAgeC5yc3J2MiA9IHgucnNydjIgPDwgOCB8IHgucnNydjIgPj4gODsKKysgIGlmIChmMiAoKSkKKysgICAgeworKyAgICAgIF9fYnVpbHRpbl9tZW1jcHkgKGJ1ZmYsICJcbiIsIDEpOworKyAgICB9CisrfQorLS0gCisyLjkuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yL0NWRS0yMDE2LTQ0OTAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4yL0NWRS0yMDE2LTQ0OTAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjMyZTkxZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjIvQ1ZFLTIwMTYtNDQ5MC5wYXRjaApAQCAtMCwwICsxLDI5MCBAQAorRnJvbSA3ZDIzNWIxYjVlYTM1MzUyYzU0OTU3ZWY1NTMwZDlhMDJjNDY5NjJmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogYmVybmRzIDxiZXJuZHNAMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0PgorRGF0ZTogTW9uLCAyIE1heSAyMDE2IDE3OjA2OjQwICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdID0/VVRGLTg/cT9EZW1hbmdsZXI9MjBpbnRlZ2VyPTIwb3ZlcmZsb3c9MjBmaXhlcz0yMGZyb20/PQorID0/VVRGLTg/cT89MjBNYXJjZWw9MjBCPUMzPUI2aG1lLj89CitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKKwlQUiBjKysvNzA0OTgKKwkqIGNwLWRlbWFuZ2xlLmM6IFBhcnNlIG51bWJlcnMgYXMgaW50ZWdlciBpbnN0ZWFkIG9mIGxvbmcgdG8gYXZvaWQKKwlvdmVyZmxvdyBhZnRlciBzYW5pdHkgY2hlY2tzLiBJbmNsdWRlIDxsaW1pdHMuaD4gaWYgYXZhaWxhYmxlLgorCShJTlRfTUFYKTogRGVmaW5lIGlmIG5lY2Vzc2FyeS4KKwkoZF9tYWtlX3RlbXBsYXRlX3BhcmFtKTogVGFrZXMgaW50ZWdlciBhcmd1bWVudCBpbnN0ZWFkIG9mIGxvbmcuCisJKGRfbWFrZV9mdW5jdGlvbl9wYXJhbSk6IExpa2V3aXNlLgorCShkX2FwcGVuZF9udW0pOiBMaWtld2lzZS4KKwkoZF9pZGVudGlmaWVyKTogTGlrZXdpc2UuCisJKGRfbnVtYmVyKTogUGFyc2UgYXMgYW5kIHJldHVybiBpbnRlZ2VyLgorCShkX2NvbXBhY3RfbnVtYmVyKTogSGFuZGxlIG92ZXJmbG93LgorCShkX3NvdXJjZV9uYW1lKTogQ2hhbmdlIHZhcmlhYmxlIHR5cGUgdG8gaW50ZWdlciBmb3IgcGFyc2VkIG51bWJlci4KKwkoZF9qYXZhX3Jlc291cmNlKTogTGlrZXdpc2UuCisJKGRfc3BlY2lhbF9uYW1lKTogTGlrZXdpc2UuCisJKGRfZGlzY3JpbWluYXRvcik6IExpa2V3aXNlLgorCShkX3VubmFtZWRfdHlwZSk6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2RlbWFuZ2xlLWV4cGVjdGVkOiBBZGQgcmVncmVzc2lvbiB0ZXN0IGNhc2VzLgorCisKKworZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2djYy5nbnUub3JnL3N2bi9nY2MvdHJ1bmtAMjM1NzY3IDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhNAorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitDVkU6ICBDVkUtMjAxNi00NDkwCitbWW9jdG8gIzk2MzJdCisKK1NpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgorCistLS0KKyBsaWJpYmVydHkvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgIHwgMTkgKysrKysrKysrKysrKworIGxpYmliZXJ0eS9jcC1kZW1hbmdsZS5jICAgICAgICAgICAgICAgfCA1MiArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQorIGxpYmliZXJ0eS90ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQgfCAxNCArKysrKysrKy0tCisgMyBmaWxlcyBjaGFuZ2VkLCA2MSBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKKworSW5kZXg6IGdpdC9saWJpYmVydHkvQ2hhbmdlTG9nCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvbGliaWJlcnR5L0NoYW5nZUxvZworKysrIGdpdC9saWJpYmVydHkvQ2hhbmdlTG9nCitAQCAtMSwzICsxLDIyIEBACisrMjAxNi0wNS0wMiAgTWFyY2VsIELDtmhtZSAgPGJvZWhtZS5tYXJjZWxAZ21haWwuY29tPgorKworKyAgIFBSIGMrKy83MDQ5OAorKyAgICogY3AtZGVtYW5nbGUuYzogUGFyc2UgbnVtYmVycyBhcyBpbnRlZ2VyIGluc3RlYWQgb2YgbG9uZyB0byBhdm9pZAorKyAgIG92ZXJmbG93IGFmdGVyIHNhbml0eSBjaGVja3MuIEluY2x1ZGUgPGxpbWl0cy5oPiBpZiBhdmFpbGFibGUuCisrICAgKElOVF9NQVgpOiBEZWZpbmUgaWYgbmVjZXNzYXJ5LgorKyAgIChkX21ha2VfdGVtcGxhdGVfcGFyYW0pOiBUYWtlcyBpbnRlZ2VyIGFyZ3VtZW50IGluc3RlYWQgb2YgbG9uZy4KKysgICAoZF9tYWtlX2Z1bmN0aW9uX3BhcmFtKTogTGlrZXdpc2UuCisrICAgKGRfYXBwZW5kX251bSk6IExpa2V3aXNlLgorKyAgIChkX2lkZW50aWZpZXIpOiBMaWtld2lzZS4KKysgICAoZF9udW1iZXIpOiBQYXJzZSBhcyBhbmQgcmV0dXJuIGludGVnZXIuCisrICAgKGRfY29tcGFjdF9udW1iZXIpOiBIYW5kbGUgb3ZlcmZsb3cuCisrICAgKGRfc291cmNlX25hbWUpOiBDaGFuZ2UgdmFyaWFibGUgdHlwZSB0byBpbnRlZ2VyIGZvciBwYXJzZWQgbnVtYmVyLgorKyAgIChkX2phdmFfcmVzb3VyY2UpOiBMaWtld2lzZS4KKysgICAoZF9zcGVjaWFsX25hbWUpOiBMaWtld2lzZS4KKysgICAoZF9kaXNjcmltaW5hdG9yKTogTGlrZXdpc2UuCisrICAgKGRfdW5uYW1lZF90eXBlKTogTGlrZXdpc2UuCisrICAgKiB0ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQ6IEFkZCByZWdyZXNzaW9uIHRlc3QgY2FzZXMuCisrCisgMjAxNi0wNC0yNyAgUmVsZWFzZSBNYW5hZ2VyCisgCisgCSogR0NDIDYuMS4wIHJlbGVhc2VkLgorSW5kZXg6IGdpdC9saWJpYmVydHkvY3AtZGVtYW5nbGUuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2xpYmliZXJ0eS9jcC1kZW1hbmdsZS5jCisrKysgZ2l0L2xpYmliZXJ0eS9jcC1kZW1hbmdsZS5jCitAQCAtMTI4LDYgKzEyOCwxMyBAQCBleHRlcm4gY2hhciAqYWxsb2NhICgpOworICMgZW5kaWYgLyogYWxsb2NhICovCisgI2VuZGlmIC8qIEhBVkVfQUxMT0NBX0ggKi8KKyAKKysjaWZkZWYgSEFWRV9MSU1JVFNfSAorKyNpbmNsdWRlIDxsaW1pdHMuaD4KKysjZW5kaWYKKysjaWZuZGVmIElOVF9NQVgKKysjIGRlZmluZSBJTlRfTUFYICAgICAgIChpbnQpKCgodW5zaWduZWQgaW50KSB+MCkgPj4gMSkgICAgICAgICAgLyogMHg3RkZGRkZGRiAqLworKyNlbmRpZgorKworICNpbmNsdWRlICJhbnNpZGVjbC5oIgorICNpbmNsdWRlICJsaWJpYmVydHkuaCIKKyAjaW5jbHVkZSAiZGVtYW5nbGUuaCIKK0BAIC0zOTgsNyArNDA1LDcgQEAgZF9tYWtlX2R0b3IgKHN0cnVjdCBkX2luZm8gKiwgZW51bSBnbnVfdgorICAgICAgICAgICAgICBzdHJ1Y3QgZGVtYW5nbGVfY29tcG9uZW50ICopOworIAorIHN0YXRpYyBzdHJ1Y3QgZGVtYW5nbGVfY29tcG9uZW50ICoKKy1kX21ha2VfdGVtcGxhdGVfcGFyYW0gKHN0cnVjdCBkX2luZm8gKiwgbG9uZyk7CisrZF9tYWtlX3RlbXBsYXRlX3BhcmFtIChzdHJ1Y3QgZF9pbmZvICosIGludCk7CisgCisgc3RhdGljIHN0cnVjdCBkZW1hbmdsZV9jb21wb25lbnQgKgorIGRfbWFrZV9zdWIgKHN0cnVjdCBkX2luZm8gKiwgY29uc3QgY2hhciAqLCBpbnQpOworQEAgLTQyMSw5ICs0MjgsOSBAQCBzdGF0aWMgc3RydWN0IGRlbWFuZ2xlX2NvbXBvbmVudCAqZF91bnF1CisgCisgc3RhdGljIHN0cnVjdCBkZW1hbmdsZV9jb21wb25lbnQgKmRfc291cmNlX25hbWUgKHN0cnVjdCBkX2luZm8gKik7CisgCistc3RhdGljIGxvbmcgZF9udW1iZXIgKHN0cnVjdCBkX2luZm8gKik7Cisrc3RhdGljIGludCBkX251bWJlciAoc3RydWN0IGRfaW5mbyAqKTsKKyAKKy1zdGF0aWMgc3RydWN0IGRlbWFuZ2xlX2NvbXBvbmVudCAqZF9pZGVudGlmaWVyIChzdHJ1Y3QgZF9pbmZvICosIGxvbmcpOworK3N0YXRpYyBzdHJ1Y3QgZGVtYW5nbGVfY29tcG9uZW50ICpkX2lkZW50aWZpZXIgKHN0cnVjdCBkX2luZm8gKiwgaW50KTsKKyAKKyBzdGF0aWMgc3RydWN0IGRlbWFuZ2xlX2NvbXBvbmVudCAqZF9vcGVyYXRvcl9uYW1lIChzdHJ1Y3QgZF9pbmZvICopOworIAorQEAgLTExMTksNyArMTEyNiw3IEBAIGRfbWFrZV9kdG9yIChzdHJ1Y3QgZF9pbmZvICpkaSwgZW51bSBnbnUKKyAvKiBBZGQgYSBuZXcgdGVtcGxhdGUgcGFyYW1ldGVyLiAgKi8KKyAKKyBzdGF0aWMgc3RydWN0IGRlbWFuZ2xlX2NvbXBvbmVudCAqCistZF9tYWtlX3RlbXBsYXRlX3BhcmFtIChzdHJ1Y3QgZF9pbmZvICpkaSwgbG9uZyBpKQorK2RfbWFrZV90ZW1wbGF0ZV9wYXJhbSAoc3RydWN0IGRfaW5mbyAqZGksIGludCBpKQorIHsKKyAgIHN0cnVjdCBkZW1hbmdsZV9jb21wb25lbnQgKnA7CisgCitAQCAtMTEzNSw3ICsxMTQyLDcgQEAgZF9tYWtlX3RlbXBsYXRlX3BhcmFtIChzdHJ1Y3QgZF9pbmZvICpkaQorIC8qIEFkZCBhIG5ldyBmdW5jdGlvbiBwYXJhbWV0ZXIuICAqLworIAorIHN0YXRpYyBzdHJ1Y3QgZGVtYW5nbGVfY29tcG9uZW50ICoKKy1kX21ha2VfZnVuY3Rpb25fcGFyYW0gKHN0cnVjdCBkX2luZm8gKmRpLCBsb25nIGkpCisrZF9tYWtlX2Z1bmN0aW9uX3BhcmFtIChzdHJ1Y3QgZF9pbmZvICpkaSwgaW50IGkpCisgeworICAgc3RydWN0IGRlbWFuZ2xlX2NvbXBvbmVudCAqcDsKKyAKK0BAIC0xNjIwLDcgKzE2MjcsNyBAQCBkX3VucXVhbGlmaWVkX25hbWUgKHN0cnVjdCBkX2luZm8gKmRpKQorIHN0YXRpYyBzdHJ1Y3QgZGVtYW5nbGVfY29tcG9uZW50ICoKKyBkX3NvdXJjZV9uYW1lIChzdHJ1Y3QgZF9pbmZvICpkaSkKKyB7CistICBsb25nIGxlbjsKKysgIGludCBsZW47CisgICBzdHJ1Y3QgZGVtYW5nbGVfY29tcG9uZW50ICpyZXQ7CisgCisgICBsZW4gPSBkX251bWJlciAoZGkpOworQEAgLTE2MzMsMTIgKzE2NDAsMTIgQEAgZF9zb3VyY2VfbmFtZSAoc3RydWN0IGRfaW5mbyAqZGkpCisgCisgLyogbnVtYmVyIDo6PSBbbl0gPChub24tbmVnYXRpdmUgZGVjaW1hbCBpbnRlZ2VyKT4gICovCisgCistc3RhdGljIGxvbmcKKytzdGF0aWMgaW50CisgZF9udW1iZXIgKHN0cnVjdCBkX2luZm8gKmRpKQorIHsKKyAgIGludCBuZWdhdGl2ZTsKKyAgIGNoYXIgcGVlazsKKy0gIGxvbmcgcmV0OworKyAgaW50IHJldDsKKyAKKyAgIG5lZ2F0aXZlID0gMDsKKyAgIHBlZWsgPSBkX3BlZWtfY2hhciAoZGkpOworQEAgLTE2ODEsNyArMTY4OCw3IEBAIGRfbnVtYmVyX2NvbXBvbmVudCAoc3RydWN0IGRfaW5mbyAqZGkpCisgLyogaWRlbnRpZmllciA6Oj0gPCh1bnF1YWxpZmllZCBzb3VyY2UgY29kZSBpZGVudGlmaWVyKT4gICovCisgCisgc3RhdGljIHN0cnVjdCBkZW1hbmdsZV9jb21wb25lbnQgKgorLWRfaWRlbnRpZmllciAoc3RydWN0IGRfaW5mbyAqZGksIGxvbmcgbGVuKQorK2RfaWRlbnRpZmllciAoc3RydWN0IGRfaW5mbyAqZGksIGludCBsZW4pCisgeworICAgY29uc3QgY2hhciAqbmFtZTsKKyAKK0BAIC0xNzAyLDcgKzE3MDksNyBAQCBkX2lkZW50aWZpZXIgKHN0cnVjdCBkX2luZm8gKmRpLCBsb25nIGxlCisgICAvKiBMb29rIGZvciBzb21ldGhpbmcgd2hpY2ggbG9va3MgbGlrZSBhIGdjYyBlbmNvZGluZyBvZiBhbgorICAgICAgYW5vbnltb3VzIG5hbWVzcGFjZSwgYW5kIHJlcGxhY2UgaXQgd2l0aCBhIG1vcmUgdXNlciBmcmllbmRseQorICAgICAgbmFtZS4gICovCistICBpZiAobGVuID49IChsb25nKSBBTk9OWU1PVVNfTkFNRVNQQUNFX1BSRUZJWF9MRU4gKyAyCisrICBpZiAobGVuID49IChpbnQpIEFOT05ZTU9VU19OQU1FU1BBQ0VfUFJFRklYX0xFTiArIDIKKyAgICAgICAmJiBtZW1jbXAgKG5hbWUsIEFOT05ZTU9VU19OQU1FU1BBQ0VfUFJFRklYLAorIAkJIEFOT05ZTU9VU19OQU1FU1BBQ0VfUFJFRklYX0xFTikgPT0gMCkKKyAgICAgeworQEAgLTE4NzAsNyArMTg3Nyw3IEBAIGRfamF2YV9yZXNvdXJjZSAoc3RydWN0IGRfaW5mbyAqZGkpCisgeworICAgc3RydWN0IGRlbWFuZ2xlX2NvbXBvbmVudCAqcCA9IE5VTEw7CisgICBzdHJ1Y3QgZGVtYW5nbGVfY29tcG9uZW50ICpuZXh0ID0gTlVMTDsKKy0gIGxvbmcgbGVuLCBpOworKyAgaW50IGxlbiwgaTsKKyAgIGNoYXIgYzsKKyAgIGNvbnN0IGNoYXIgKnN0cjsKKyAKK0BAIC0yMDEyLDcgKzIwMTksNyBAQCBkX3NwZWNpYWxfbmFtZSAoc3RydWN0IGRfaW5mbyAqZGkpCisgCWNhc2UgJ0MnOgorIAkgIHsKKyAJICAgIHN0cnVjdCBkZW1hbmdsZV9jb21wb25lbnQgKmRlcml2ZWRfdHlwZTsKKy0JICAgIGxvbmcgb2Zmc2V0OworKwkgICAgaW50IG9mZnNldDsKKyAJICAgIHN0cnVjdCBkZW1hbmdsZV9jb21wb25lbnQgKmJhc2VfdHlwZTsKKyAKKyAJICAgIGRlcml2ZWRfdHlwZSA9IGNwbHVzX2RlbWFuZ2xlX3R5cGUgKGRpKTsKK0BAIC0yOTQ2LDEwICsyOTUzLDEwIEBAIGRfcG9pbnRlcl90b19tZW1iZXJfdHlwZSAoc3RydWN0IGRfaW5mbworIAorIC8qIDxub24tbmVnYXRpdmUgbnVtYmVyPiBfICovCisgCistc3RhdGljIGxvbmcKKytzdGF0aWMgaW50CisgZF9jb21wYWN0X251bWJlciAoc3RydWN0IGRfaW5mbyAqZGkpCisgeworLSAgbG9uZyBudW07CisrICBpbnQgbnVtOworICAgaWYgKGRfcGVla19jaGFyIChkaSkgPT0gJ18nKQorICAgICBudW0gPSAwOworICAgZWxzZSBpZiAoZF9wZWVrX2NoYXIgKGRpKSA9PSAnbicpCitAQCAtMjk1Nyw3ICsyOTY0LDcgQEAgZF9jb21wYWN0X251bWJlciAoc3RydWN0IGRfaW5mbyAqZGkpCisgICBlbHNlCisgICAgIG51bSA9IGRfbnVtYmVyIChkaSkgKyAxOworIAorLSAgaWYgKCEgZF9jaGVja19jaGFyIChkaSwgJ18nKSkKKysgIGlmIChudW0gPCAwIHx8ICEgZF9jaGVja19jaGFyIChkaSwgJ18nKSkKKyAgICAgcmV0dXJuIC0xOworICAgcmV0dXJuIG51bTsKKyB9CitAQCAtMjk2OSw3ICsyOTc2LDcgQEAgZF9jb21wYWN0X251bWJlciAoc3RydWN0IGRfaW5mbyAqZGkpCisgc3RhdGljIHN0cnVjdCBkZW1hbmdsZV9jb21wb25lbnQgKgorIGRfdGVtcGxhdGVfcGFyYW0gKHN0cnVjdCBkX2luZm8gKmRpKQorIHsKKy0gIGxvbmcgcGFyYW07CisrICBpbnQgcGFyYW07CisgCisgICBpZiAoISBkX2NoZWNrX2NoYXIgKGRpLCAnVCcpKQorICAgICByZXR1cm4gTlVMTDsKK0BAIC0zMTcxLDkgKzMxNzgsMTAgQEAgZF9leHByZXNzaW9uXzEgKHN0cnVjdCBkX2luZm8gKmRpKQorIAl9CisgICAgICAgZWxzZQorIAl7CistCSAgaW5kZXggPSBkX2NvbXBhY3RfbnVtYmVyIChkaSkgKyAxOworLQkgIGlmIChpbmRleCA9PSAwKQorKwkgIGluZGV4ID0gZF9jb21wYWN0X251bWJlciAoZGkpOworKwkgIGlmIChpbmRleCA9PSBJTlRfTUFYIHx8IGluZGV4ID09IC0xKQorIAkgICAgcmV0dXJuIE5VTEw7CisrCSAgaW5kZXggKys7CisgCX0KKyAgICAgICByZXR1cm4gZF9tYWtlX2Z1bmN0aW9uX3BhcmFtIChkaSwgaW5kZXgpOworICAgICB9CitAQCAtMzUwMiw3ICszNTEwLDcgQEAgZF9sb2NhbF9uYW1lIChzdHJ1Y3QgZF9pbmZvICpkaSkKKyBzdGF0aWMgaW50CisgZF9kaXNjcmltaW5hdG9yIChzdHJ1Y3QgZF9pbmZvICpkaSkKKyB7CistICBsb25nIGRpc2NyaW07CisrICBpbnQgZGlzY3JpbTsKKyAKKyAgIGlmIChkX3BlZWtfY2hhciAoZGkpICE9ICdfJykKKyAgICAgcmV0dXJuIDE7CitAQCAtMzU1OCw3ICszNTY2LDcgQEAgc3RhdGljIHN0cnVjdCBkZW1hbmdsZV9jb21wb25lbnQgKgorIGRfdW5uYW1lZF90eXBlIChzdHJ1Y3QgZF9pbmZvICpkaSkKKyB7CisgICBzdHJ1Y3QgZGVtYW5nbGVfY29tcG9uZW50ICpyZXQ7CistICBsb25nIG51bTsKKysgIGludCBudW07CisgCisgICBpZiAoISBkX2NoZWNrX2NoYXIgKGRpLCAnVScpKQorICAgICByZXR1cm4gTlVMTDsKK0BAIC00MDg2LDEwICs0MDk0LDEwIEBAIGRfYXBwZW5kX3N0cmluZyAoc3RydWN0IGRfcHJpbnRfaW5mbyAqZHAKKyB9CisgCisgc3RhdGljIGlubGluZSB2b2lkCistZF9hcHBlbmRfbnVtIChzdHJ1Y3QgZF9wcmludF9pbmZvICpkcGksIGxvbmcgbCkKKytkX2FwcGVuZF9udW0gKHN0cnVjdCBkX3ByaW50X2luZm8gKmRwaSwgaW50IGwpCisgeworICAgY2hhciBidWZbMjVdOworLSAgc3ByaW50ZiAoYnVmLCIlbGQiLCBsKTsKKysgIHNwcmludGYgKGJ1ZiwiJWQiLCBsKTsKKyAgIGRfYXBwZW5kX3N0cmluZyAoZHBpLCBidWYpOworIH0KKyAKK0luZGV4OiBnaXQvbGliaWJlcnR5L3Rlc3RzdWl0ZS9kZW1hbmdsZS1leHBlY3RlZAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2xpYmliZXJ0eS90ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQKKysrKyBnaXQvbGliaWJlcnR5L3Rlc3RzdWl0ZS9kZW1hbmdsZS1leHBlY3RlZAorQEAgLTQ0MjIsMTIgKzQ0MjIsMjIgQEAgdm9pZCBiYXo8aW50PihBPHNpemVvZiAoZm9vKChpbnQpKCksIChmbAorIF9aM2Zvb0kxRkVOMVhJWHN6ZHRjbDFQY2xjdlRfX0VFRTVhcnJheUVFNFR5cGVFdgorIFg8c2l6ZW9mICgoUCgoKEYpKCkpKCkpKS5hcnJheSk+OjpUeXBlIGZvbzxGPigpCisgIworLSMgVGVzdHMgYSB1c2UtYWZ0ZXItZnJlZSBwcm9ibGVtCisrIyBUZXN0cyBhIHVzZS1hZnRlci1mcmVlIHByb2JsZW0gUFI3MDQ4MQorIAorIF9RLl9fMAorIDo6US4odm9pZCkKKyAjCistIyBUZXN0cyBhIHVzZS1hZnRlci1mcmVlIHByb2JsZW0KKysjIFRlc3RzIGEgdXNlLWFmdGVyLWZyZWUgcHJvYmxlbSBQUjcwNDgxCisgCisgX1ExMC1fXzljYWZlYmFiZS4KKyBjYWZlYmFiZS46Oi0odm9pZCkKKysjCisrIyBUZXN0cyBpbnRlZ2VyIG92ZXJmbG93IHByb2JsZW0gUFI3MDQ5MgorKworK19fdnRfOTAwMDAwMDAwMDBjYWZlYmFiZQorK19fdnRfOTAwMDAwMDAwMDBjYWZlYmFiZQorKyMKKysjIFRlc3RzIHdyaXRlIGFjY2VzcyB2aW9sYXRpb24gUFI3MDQ5OAorKworK19aODA4MDAwMDAwMDAwMDAwMDAwMDAwMDAKKytfWjgwODAwMDAwMDAwMDAwMDAwMDAwMDAwCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY29tbW9uLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jb21tb24uaW5jCmluZGV4IGU0ZmQ0ZDYuLmY1NDBiNGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jb21tb24uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jb21tb24uaW5jCkBAIC0zMyw2ICszMyw4IEBACiBkZWYgZ2V0X2xvbmdfZG91YmxlX3NldHRpbmcoYmIsIGQpOgogICAgIGlmIGQuZ2V0VmFyKCdUUkFOU0xBVEVEX1RBUkdFVF9BUkNIJywgVHJ1ZSkgaW4gWyAncG93ZXJwYycsICdwb3dlcnBjNjQnIF0gYW5kIGQuZ2V0VmFyKCdUQ0xJQkMnLCBUcnVlKSBpbiBbICd1Y2xpYmMnLCAnZ2xpYmMnIF06CiAgICAgICAgIHJldHVybiAiLS13aXRoLWxvbmctZG91YmxlLTEyOCIKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gIi0td2l0aG91dC1sb25nLWRvdWJsZS0xMjgiCiAgICAgcmV0dXJuICIiCiAKIGRlZiBnZXRfZ2NjX211bHRpYXJjaF9zZXR0aW5nKGJiLCBkKToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jb25maWd1cmUtY29tbW9uLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jb25maWd1cmUtY29tbW9uLmluYwppbmRleCBmNGY3NmJkLi5kZGViYmI4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY29uZmlndXJlLWNvbW1vbi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNvbmZpZ3VyZS1jb21tb24uaW5jCkBAIC00NCw2ICs0NCwxMCBAQAogICAgICR7QGdldF9nY2NfbXVsdGlhcmNoX3NldHRpbmcoYmIsIGQpfSBcCiAiCiAKKyMgU2V0IHRoaXMgaGVyZSBzaW5jZSBHQ0MgY29uZmlndXJlIHdvbid0IGF1dG8tZGV0ZWN0IGFuZCBlbmFibGUKKyMgaW5pdGZpbmktYXJyeSB3aGVuIGNyb3NzIGNvbXBpbGluZy4KK0VYVFJBX09FQ09ORl9hcHBlbmQgPSAiIC0tZW5hYmxlLWluaXRmaW5pLWFycmF5IgorCiBleHBvcnQgZ2NjX2N2X2NvbGxlY3QyX2xpYnMgPSAnbm9uZSByZXF1aXJlZCcKICMgV2UgbmVlZCB0byBzZXQgZ2NjX2N2X2NvbGxlY3QyX2xpYnMgZWxzZSB0aGVyZSBpcyBjcm9zcy1jb21waWxhdGlvbiBiYWRuZXNzCiAjIGluIHRoZSBjb25maWcubG9nIGZpbGVzICh3aGljaCBtaWdodCBub3QgZ2V0IGdlbmVyYXRlZCB1bnRpbCBkb19jb21waWxlCkBAIC01Nyw2ICs2MSwxMCBAQAogRVhUUkFfT0VDT05GX2FwcGVuZF9taXBzNjRlbCA9ICIgLS13aXRoLWFiaT02NCAtLXdpdGgtYXJjaC02ND1taXBzNjQgLS13aXRoLXR1bmUtNjQ9bWlwczY0IgogRVhUUkFfT0VDT05GX2FwcGVuZF9taXBzNjRuMzIgPSAiIC0td2l0aC1hYmk9NjQgLS13aXRoLWFyY2gtNjQ9bWlwczY0IC0td2l0aC10dW5lLTY0PW1pcHM2NCIKIEVYVFJBX09FQ09ORl9hcHBlbmRfbWlwczY0ZWxuMzIgPSAiIC0td2l0aC1hYmk9NjQgLS13aXRoLWFyY2gtNjQ9bWlwczY0IC0td2l0aC10dW5lLTY0PW1pcHM2NCIKK0VYVFJBX09FQ09ORl9hcHBlbmRfbWlwc2lzYTMycjZlbCA9ICIgLS13aXRoLWFiaT0zMiAtLXdpdGgtYXJjaD1taXBzMzJyNiIKK0VYVFJBX09FQ09ORl9hcHBlbmRfbWlwc2lzYTMycjYgPSAiIC0td2l0aC1hYmk9MzIgLS13aXRoLWFyY2g9bWlwczMycjYiCitFWFRSQV9PRUNPTkZfYXBwZW5kX21pcHNpc2E2NHI2ZWwgPSAiIC0td2l0aC1hYmk9NjQgLS13aXRoLWFyY2gtNjQ9bWlwczY0cjYiCitFWFRSQV9PRUNPTkZfYXBwZW5kX21pcHNpc2E2NHI2ID0gIiAtLXdpdGgtYWJpPTY0IC0td2l0aC1hcmNoLTY0PW1pcHM2NHI2IgogCiAjIEFSTXY2KyBhZGRzIGF0b21pYyBpbnN0cnVjdGlvbnMgdGhhdCBhZmZlY3QgdGhlIEFCSSBpbiBsaWJyYXJpZXMgYnVpbHQKICMgd2l0aCBUVU5FX0NDQVJHUyBpbiBnY2MtcnVudGltZS4gIE1ha2UgdGhlIGNvbXBpbGVyIGRlZmF1bHQgdG8gYQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWNhbmFkaWFuXzUuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1jYW5hZGlhbl81LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmNTNjNWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWNhbmFkaWFuXzUuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtJHtQVn0uaW5jCi1yZXF1aXJlIGdjYy1jcm9zcy1jYW5hZGlhbi5pbmMKLQotCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1jYW5hZGlhbl80LjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtY2FuYWRpYW5fNS40LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtY2FuYWRpYW5fNC45LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtY2FuYWRpYW5fNS40LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtY2FuYWRpYW5fNC45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWNhbmFkaWFuXzYuMi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKY29weSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1jYW5hZGlhbl80LjkuYmIKY29weSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtY2FuYWRpYW5fNi4yLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtaW5pdGlhbC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtaW5pdGlhbC5pbmMKaW5kZXggMDQ4YjUzMC4uZGNmMjI3MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWluaXRpYWwuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1pbml0aWFsLmluYwpAQCAtNzcsNyArNzcsNyBAQAogCiAJIyBnY2MtcnVudGltZSBpbnN0YWxscyBsaWJnY2MgaW50byBhIHNwZWNpYWwgbG9jYXRpb24gaW4gc3RhZ2luZyBzaW5jZSBpdCBicmVha3MgZG9pbmcgYSBzdGFuZGFsb25lIGJ1aWxkCiAJY2FzZSAke1BOfSBpbgotCQkqZ2NjLWNyb3NzLWluaXRpYWwtJHtUQVJHRVRfQVJDSH18KmdjYy1jcm9zc3Nkay1pbml0aWFsLSR7VEFSR0VUX0FSQ0h9KQorCQkqZ2NjLWNyb3NzLWluaXRpYWwtJHtUQVJHRVRfQVJDSH18KmdjYy1jcm9zc3Nkay1pbml0aWFsLSR7U0RLX1NZU30pCiAJCQlkZXN0PSR7RH0vJHtpbmNsdWRlZGlyfS9nY2MtYnVpbGQtaW50ZXJuYWwtaW5pdGlhbC0ke1RBUkdFVF9TWVN9CiAJCQloYXJkbGlua2RpciAuICRkZXN0CiAJCTs7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtaW5pdGlhbF81LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtaW5pdGlhbF81LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjNzNlNWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWluaXRpYWxfNS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc18ke1BWfS5iYgotcmVxdWlyZSBnY2MtY3Jvc3MtaW5pdGlhbC5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1pbml0aWFsXzQuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1pbml0aWFsXzUuNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWluaXRpYWxfNC45LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtaW5pdGlhbF81LjQuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1pbml0aWFsXzQuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1pbml0aWFsXzYuMi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKY29weSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1pbml0aWFsXzQuOS5iYgpjb3B5IHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1pbml0aWFsXzYuMi5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy5pbmMKaW5kZXggZjQ3OTM2MC4uY2M0NjVhMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MuaW5jCkBAIC0xMyw2ICsxMywxMSBAQAogCiByZXF1aXJlIGdjYy1jb25maWd1cmUtY29tbW9uLmluYwogCisjIFdoaWxlIHdlIHdhbnQgdGhlICdnbnUnIGhhc2ggc3R5bGUsIHdlIGV4cGxpY2l0bHkgc2V0IGl0IHRvIHN5c3YgaGVyZSB0bworIyBlbnN1cmUgdGhhdCBhbnkgcmVjaXBlIHdoaWNoIGRvZXNuJ3Qgb2JleSBvdXIgTERGTEFHUyAod2hpY2ggYWxzbyBzZXQgaXQgdG8KKyMgZ251KSB3aWxsIGhpdCBhIFFBIGZhaWx1cmUuCitMSU5LRVJfSEFTSF9TVFlMRSA/PSAic3lzdiIKKwogRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIgogRVhUUkFfT0VDT05GX2FwcGVuZF9zaDQgPSAiIFwKICAgICAtLXdpdGgtbXVsdGlsaWItbGlzdD0gXApAQCAtMTgzLDEyICsxODgsMTUgQEAKIAogCSMgZ2NjLXJ1bnRpbWUgaW5zdGFsbHMgbGliZ2NjIGludG8gYSBzcGVjaWFsIGxvY2F0aW9uIGluIHN0YWdpbmcgc2luY2UgaXQgYnJlYWtzIGRvaW5nIGEgc3RhbmRhbG9uZSBidWlsZAogCWNhc2UgJHtQTn0gaW4KLQkJKmdjYy1jcm9zcy0ke1RBUkdFVF9BUkNIfXwqZ2NjLWNyb3Nzc2RrLSR7VEFSR0VUX0FSQ0h9KQorCQkqZ2NjLWNyb3NzLSR7VEFSR0VUX0FSQ0h9fCpnY2MtY3Jvc3NzZGstJHtTREtfU1lTfSkKIAkJCWRlc3Q9JHtEfS8ke2luY2x1ZGVkaXJ9L2djYy1idWlsZC1pbnRlcm5hbC0ke1RBUkdFVF9TWVN9CiAJCQloYXJkbGlua2RpciAuICRkZXN0CiAJCTs7CiAJZXNhYwogfQorIyBUaGlzIGlzIHJlZmxlY3RlZCBpbiB0aGUgcmVjaXBlIG5hbWUgYW5kIHRhcmdldCBnY2Mgc2hvdWxkbid0IGRlcGVuZCAKKyMgb24gU0RLIHNldHRpbmdzIGVpdGhlcgorZG9faW5zdGFsbFt2YXJkZXBzZXhjbHVkZV0gKz0gIlNES19TWVMiCiAKIGRvX3BhY2thZ2Vbbm9leGVjXSA9ICIxIgogZG9fcGFja2FnZWRhdGFbbm9leGVjXSA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzXzUuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc181LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0M2NjYTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzXzUuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtJHtQVn0uaW5jCi1yZXF1aXJlIGdjYy1jcm9zcy5pbmMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzXzQuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc181LjQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc180LjkuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc181LjQuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc180LjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NfNi4yLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpjb3B5IGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzXzQuOS5iYgpjb3B5IHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc182LjIuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc3Nkay1pbml0aWFsLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc3Nkay1pbml0aWFsLmluYwppbmRleCA3ZDI1OTljLi4wOGVkYTVkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGstaW5pdGlhbC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3Nzc2RrLWluaXRpYWwuaW5jCkBAIC0xLDYgKzEsNiBAQAogaW5oZXJpdCBjcm9zc3NkawogCi1QTiA9ICJnY2MtY3Jvc3NzZGstaW5pdGlhbC0ke1RBUkdFVF9BUkNIfSIKK1BOID0gImdjYy1jcm9zc3Nkay1pbml0aWFsLSR7U0RLX1NZU30iCiAKIFNZU1RFTUhFQURFUlMgPSAiJHtTREtQQVRITkFUSVZFfSR7cHJlZml4X25hdGl2ZXNka30vaW5jbHVkZSIKIFNZU1RFTUxJQlMgPSAiJHtTREtQQVRITkFUSVZFfSR7YmFzZV9saWJkaXJfbmF0aXZlc2RrfS8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGstaW5pdGlhbF81LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGstaW5pdGlhbF81LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkOTBlMTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3Nzc2RrLWluaXRpYWxfNS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1pbml0aWFsXyR7UFZ9LmJiCi1yZXF1aXJlIGdjYy1jcm9zc3Nkay1pbml0aWFsLmluYwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGstaW5pdGlhbF80LjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGstaW5pdGlhbF81LjQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc3Nkay1pbml0aWFsXzQuOS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3Nzc2RrLWluaXRpYWxfNS40LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGstaW5pdGlhbF80LjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGstaW5pdGlhbF82LjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGstaW5pdGlhbF80LjkuYmIKY29weSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGstaW5pdGlhbF82LjIuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc3Nkay5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGsuaW5jCmluZGV4IDUzZjg4MGYuLmNkYTI5MjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc3Nkay5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3Nzc2RrLmluYwpAQCAtMSw2ICsxLDYgQEAKIGluaGVyaXQgY3Jvc3NzZGsKIAotUE4gPSAiZ2NjLWNyb3Nzc2RrLSR7VEFSR0VUX0FSQ0h9IgorUE4gPSAiZ2NjLWNyb3Nzc2RrLSR7U0RLX1NZU30iCiAKIFNZU1RFTUhFQURFUlMgPSAiJHtTREtQQVRITkFUSVZFfSR7cHJlZml4X25hdGl2ZXNka30vaW5jbHVkZSIKIFNZU1RFTUxJQlMgPSAiJHtTREtQQVRITkFUSVZFfSR7YmFzZV9saWJkaXJfbmF0aXZlc2RrfS8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGtfNS4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3Nzc2RrXzUuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDBhNmM0Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGtfNS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc18ke1BWfS5iYgotcmVxdWlyZSBnY2MtY3Jvc3NzZGsuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGtfNC45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3Nzc2RrXzUuNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3Nzc2RrXzQuOS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3Nzc2RrXzUuNC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3Nzc2RrXzQuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc3Nka182LjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGtfNC45LmJiCmNvcHkgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3Nzc2RrXzYuMi5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWUuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWUuaW5jCmluZGV4IDg2MzljMWMuLjE1MjUyZjEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZS5pbmMKQEAgLTEsNSArMSw3IEBACiByZXF1aXJlIGdjYy1jb25maWd1cmUtY29tbW9uLmluYwogCitTVU1NQVJZID0gIlJ1bnRpbWUgbGlicmFyaWVzIGZyb20gR0NDIgorCiAjIE92ZXItcmlkZSB0aGUgTElDRU5TRSBzZXQgYnkgZ2NjLSR7UFZ9LmluYyB0byByZW1vdmUgIiYgR1BMdjMiCiAjIEFsbCBnY2MtcnVudGltZSBwYWNrYWdlcyBhcmUgbm93IGNvdmVyZWQgYnkgdGhlIHJ1bnRpbWUgZXhjZXB0aW9uLgogTElDRU5TRSA9ICJHUEwtMy4wLXdpdGgtR0NDLWV4Y2VwdGlvbiIKQEAgLTE5LDYgKzIxLDEwIEBACiBSVU5USU1FTElCSVRNX21pcHNlbCA9ICIiCiBSVU5USU1FTElCSVRNX21pcHM2NCA9ICIiCiBSVU5USU1FTElCSVRNX21pcHM2NGVsID0gIiIKK1JVTlRJTUVMSUJJVE1fbWlwc2lzYTMycjYgPSAiIgorUlVOVElNRUxJQklUTV9taXBzaXNhMzJyNmVsID0gIiIKK1JVTlRJTUVMSUJJVE1fbWlwc2lzYTY0cjYgPSAiIgorUlVOVElNRUxJQklUTV9taXBzaXNhNjRyNmVsID0gIiIKIFJVTlRJTUVMSUJJVE1fbmlvczIgPSAiIgogUlVOVElNRUxJQklUTV9taWNyb2JsYXplID0gIiIKIApAQCAtNzMsOSArNzksMzkgQEAKIAlpZiBbICIke1RBUkdFVF9WRU5ET1JfTVVMVElMSUJfT1JJR0lOQUx9IiAhPSAiIiAtYSAiJHtUQVJHRVRfVkVORE9SfSIgIT0gIiR7VEFSR0VUX1ZFTkRPUl9NVUxUSUxJQl9PUklHSU5BTH0iIF07IHRoZW4KIAkJbG4gLXMgJHtUQVJHRVRfU1lTfSAke0R9JHtpbmNsdWRlZGlyfS9jKysvJHtCSU5WfS8ke1RBUkdFVF9BUkNIfSR7VEFSR0VUX1ZFTkRPUl9NVUxUSUxJQl9PUklHSU5BTH0tJHtUQVJHRVRfT1N9CiAJZmkKKworfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQgKCkgewogCWlmIFsgIiR7VEFSR0VUX09TfSIgPSAibGludXgtZ251c3BlIiBdOyB0aGVuCiAJCWxuIC1zICR7VEFSR0VUX1NZU30gJHtEfSR7aW5jbHVkZWRpcn0vYysrLyR7QklOVn0vJHtUQVJHRVRfQVJDSH0ke1RBUkdFVF9WRU5ET1J9LWxpbnV4CiAJZmkKKworCWlmIFsgIiR7VEFSR0VUX09TfSIgPSAibGludXgtZ251bjMyIiBdOyB0aGVuCisJCWlmIFsgIiR7TVVMVElMSUJTfSIgIT0gIiIgXTsgdGhlbgorCQkJbWtkaXIgJHtEfSR7aW5jbHVkZWRpcn0vYysrLyR7QklOVn0vJHtUQVJHRVRfQVJDSH0tcG9reW1sbGliNjQtbGludXgKKwkJCWxuIC1zIC4uLyR7VEFSR0VUX1NZU30gJHtEfSR7aW5jbHVkZWRpcn0vYysrLyR7QklOVn0vJHtUQVJHRVRfQVJDSH0tcG9reW1sbGliNjQtbGludXgvMzIKKwkJZWxzZQorCQkJbG4gLXMgJHtUQVJHRVRfU1lTfSAke0R9JHtpbmNsdWRlZGlyfS9jKysvJHtCSU5WfS8ke1RBUkdFVF9BUkNIfSR7VEFSR0VUX1ZFTkRPUn0tbGludXgKKwkJZmkKKwlmaQorCWlmIFsgIiR7VEFSR0VUX09TfSIgPSAibGludXgtZ251eDMyIiBdOyB0aGVuCisJCWlmIFsgIiR7TVVMVElMSUJTfSIgIT0gIiIgXTsgdGhlbgorCQkJbWtkaXIgJHtEfSR7aW5jbHVkZWRpcn0vYysrLyR7QklOVn0vJHtUQVJHRVRfQVJDSH0tcG9reS1saW51eAorCQkJbG4gLXMgLi4vJHtUQVJHRVRfU1lTfSAke0R9JHtpbmNsdWRlZGlyfS9jKysvJHtCSU5WfS8ke1RBUkdFVF9BUkNIfS1wb2t5LWxpbnV4L3gzMgorCQllbHNlCisJCQlsbiAtcyAke1RBUkdFVF9TWVN9ICR7RH0ke2luY2x1ZGVkaXJ9L2MrKy8ke0JJTlZ9LyR7VEFSR0VUX0FSQ0h9JHtUQVJHRVRfVkVORE9SfS1saW51eAorCQlmaQorCWZpCisKKwlpZiBbICIke1RDTElCQ30iICE9ICJnbGliYyIgXTsgdGhlbgorCQljYXNlICIke1RBUkdFVF9PU30iIGluCisJCQkibGludXgtbXVzbCIgfCAibGludXgtdWNsaWJjIiB8ICJsaW51eC0qc3BlIikgZXh0cmFfdGFyZ2V0X29zPSJsaW51eCI7OworCQkJImxpbnV4LW11c2xlYWJpIiB8ICJsaW51eC11Y2xpYmNlYWJpIikgZXh0cmFfdGFyZ2V0X29zPSJsaW51eC1nbnVlYWJpIjs7CisJCQkqKSBleHRyYV90YXJnZXRfb3M9ImxpbnV4Ijs7CisJCWVzYWMKKwkJbG4gLXMgJHtUQVJHRVRfU1lTfSAke0R9JHtpbmNsdWRlZGlyfS9jKysvJHtCSU5WfS8ke1RBUkdFVF9BUkNIfSR7VEFSR0VUX1ZFTkRPUn0tJGV4dHJhX3RhcmdldF9vcworCWZpCiAJY2hvd24gLVIgcm9vdDpyb290ICR7RH0KIH0KIApAQCAtMTIzLDczICsxNTksOTggQEAKICIKIAogRklMRVNfbGliZzJjID0gIiR7dGFyZ2V0X2xpYmRpcn0vbGliZzJjLnNvLioiCitTVU1NQVJZX2xpYmcyYyA9ICJDb21wYW5pb24gcnVudGltZSBsaWJyYXJ5IGZvciBnNzciCiBGSUxFU19saWJnMmMtZGV2ID0gIlwKICAgICAke2xpYmRpcn0vbGliZzJjLnNvIFwKICAgICAke2xpYmRpcn0vbGliZzJjLmEgXAogICAgICR7bGliZGlyfS9saWJmcnRiZWdpbi5hIFwKICIKK1NVTU1BUllfbGliZzJjLWRldiA9ICJDb21wYW5pb24gcnVudGltZSBsaWJyYXJ5IGZvciBnNzcgLSBkZXZlbG9wbWVudCBmaWxlcyIKIAogRklMRVNfbGlic3RkYysrID0gIiR7bGliZGlyfS9saWJzdGRjKysuc28uKiIKK1NVTU1BUllfbGlic3RkYysrID0gIkdOVSBzdGFuZGFyZCBDKysgbGlicmFyeSIKIEZJTEVTX2xpYnN0ZGMrKy1kZXYgPSAiXAogICAgICR7aW5jbHVkZWRpcn0vYysrLyBcCiAgICAgJHtsaWJkaXJ9L2xpYnN0ZGMrKy5zbyBcCiAgICAgJHtsaWJkaXJ9L2xpYnN0ZGMrKyoubGEgXAogICAgICR7bGliZGlyfS9saWJzdXBjKysubGEgXAogIgorU1VNTUFSWV9saWJzdGRjKystZGV2ID0gIkdOVSBzdGFuZGFyZCBDKysgbGlicmFyeSAtIGRldmVsb3BtZW50IGZpbGVzIgogRklMRVNfbGlic3RkYysrLXN0YXRpY2RldiA9ICJcCiAgICAgJHtsaWJkaXJ9L2xpYnN0ZGMrKyouYSBcCiAgICAgJHtsaWJkaXJ9L2xpYnN1cGMrKy5hIFwKICIKK1NVTU1BUllfbGlic3RkYysrLXN0YXRpY2RldiA9ICJHTlUgc3RhbmRhcmQgQysrIGxpYnJhcnkgLSBzdGF0aWMgZGV2ZWxvcG1lbnQgZmlsZXMiCiAKIEZJTEVTX2xpYnN0ZGMrKy1wcmVjb21waWxlLWRldiA9ICIke2luY2x1ZGVkaXJ9L2MrKy8ke1RBUkdFVF9TWVN9L2JpdHMvKi5nY2giCitTVU1NQVJZX2xpYnN0ZGMrKy1wcmVjb21waWxlLWRldiA9ICJHTlUgc3RhbmRhcmQgQysrIGxpYnJhcnkgLSBwcmVjb21waWxlZCBoZWFkZXIgZmlsZXMiCiAKIEZJTEVTX2xpYnNzcCA9ICIke2xpYmRpcn0vbGlic3NwLnNvLioiCitTVU1NQVJZX2xpYnNzcCA9ICJHTlUgc3RhY2sgc21hc2hpbmcgcHJvdGVjdGlvbiBsaWJyYXJ5IgogRklMRVNfbGlic3NwLWRldiA9ICJcCiAgICAgJHtsaWJkaXJ9L2xpYnNzcCouc28gXAogICAgICR7bGliZGlyfS9saWJzc3AqX25vbnNoYXJlZC5hIFwKICAgICAke2xpYmRpcn0vbGlic3NwKi5sYSBcCiAgICAgJHtsaWJkaXJ9L2djYy8ke1RBUkdFVF9TWVN9LyR7QklOVn0vaW5jbHVkZS9zc3AgXAogIgorU1VNTUFSWV9saWJzc3AtZGV2ID0gIkdOVSBzdGFjayBzbWFzaGluZyBwcm90ZWN0aW9uIGxpYnJhcnkgLSBkZXZlbG9wbWVudCBmaWxlcyIKIEZJTEVTX2xpYnNzcC1zdGF0aWNkZXYgPSAiJHtsaWJkaXJ9L2xpYnNzcCouYSIKK1NVTU1BUllfbGlic3NwLXN0YXRpY2RldiA9ICJHTlUgc3RhY2sgc21hc2hpbmcgcHJvdGVjdGlvbiBsaWJyYXJ5IC0gc3RhdGljIGRldmVsb3BtZW50IGZpbGVzIgogCiBGSUxFU19saWJxdWFkbWF0aCA9ICIke2xpYmRpcn0vbGlicXVhZG1hdGgqLnNvLioiCitTVU1NQVJZX2xpYnF1YWRtYXRoID0gIkdOVSBxdWFkLXByZWNpc2lvbiBtYXRoIGxpYnJhcnkiCiBGSUxFU19saWJxdWFkbWF0aC1kZXYgPSAiXAogICAgICR7bGliZGlyfS9nY2MvJHtUQVJHRVRfU1lTfS8ke0JJTlZ9L2luY2x1ZGUvcXVhZG1hdGgqIFwKICAgICAke2xpYmRpcn0vbGlicXVhZG1hdGgqLnNvIFwKICAgICAke2xpYmRpcn0vbGlicXVhZG1hdGgubGEgXAogIgorU1VNTUFSWV9saWJxdWFkbWF0aC1kZXYgPSAiR05VIHF1YWQtcHJlY2lzaW9uIG1hdGggbGlicmFyeSAtIGRldmVsb3BtZW50IGZpbGVzIgogRklMRVNfbGlicXVhZG1hdGgtc3RhdGljZGV2ID0gIiR7bGliZGlyfS9saWJxdWFkbWF0aC5hIgorU1VNTUFSWV9saWJxdWFkbWF0aC1zdGF0aWNkZXYgPSAiR05VIHF1YWQtcHJlY2lzaW9uIG1hdGggbGlicmFyeSAtIHN0YXRpYyBkZXZlbG9wbWVudCBmaWxlcyIKIAorIyBOT1RFOiBtdWRmbGFwIGhhcyBiZWVuIHJlbW92ZWQgYXMgb2YgZ2NjIDQuOSBhbmQgaGFzIGJlZW4gc3VwZXJzZWRlZCBieSB0aGUgYWRkcmVzcyBzYW5pdGlzZXIKIEZJTEVTX2xpYm11ZGZsYXAgPSAiJHtsaWJkaXJ9L2xpYm11ZGZsYXAqLnNvLioiCitTVU1NQVJZX2xpYm11ZGZsYXAgPSAiUG9pbnRlciBkZWJ1Z2dpbmcgbGlicmFyeSBmb3IgZ2NjIgogRklMRVNfbGlibXVkZmxhcC1kZXYgPSAiXAogICAgICR7bGliZGlyfS9saWJtdWRmbGFwKi5zbyBcCiAgICAgJHtsaWJkaXJ9L2xpYm11ZGZsYXAubGEgXAogIgorU1VNTUFSWV9saWJtdWRmbGFwLWRldiA9ICJQb2ludGVyIGRlYnVnZ2luZyBsaWJyYXJ5IGZvciBnY2MgLSBkZXZlbG9wbWVudCBmaWxlcyIKIEZJTEVTX2xpYm11ZGZsYXAtc3RhdGljZGV2ID0gIiR7bGliZGlyfS9saWJtdWRmbGFwLmEiCitTVU1NQVJZX2xpYm11ZGZsYXAtc3RhdGljZGV2ID0gIlBvaW50ZXIgZGVidWdnaW5nIGxpYnJhcnkgZm9yIGdjYyAtIHN0YXRpYyBkZXZlbG9wbWVudCBmaWxlcyIKIAogRklMRVNfbGliZ29tcCA9ICIke2xpYmRpcn0vbGliZ29tcCoke1NPTElCU30iCitTVU1NQVJZX2xpYmdvbXAgPSAiR05VIE9wZW5NUCBwYXJhbGxlbCBwcm9ncmFtbWluZyBsaWJyYXJ5IgogRklMRVNfbGliZ29tcC1kZXYgPSAiXAogICAgICR7bGliZGlyfS9saWJnb21wKiR7U09MSUJTREVWfSBcCiAgICAgJHtsaWJkaXJ9L2xpYmdvbXAqLmxhIFwKICAgICAke2xpYmRpcn0vbGliZ29tcC5zcGVjIFwKICAgICAke2xpYmRpcn0vZ2NjLyR7VEFSR0VUX1NZU30vJHtCSU5WfS9pbmNsdWRlL29tcC5oIFwKICIKK1NVTU1BUllfbGliZ29tcC1kZXYgPSAiR05VIE9wZW5NUCBwYXJhbGxlbCBwcm9ncmFtbWluZyBsaWJyYXJ5IC0gZGV2ZWxvcG1lbnQgZmlsZXMiCiBGSUxFU19saWJnb21wLXN0YXRpY2RldiA9ICIke2xpYmRpcn0vbGliZ29tcCouYSIKK1NVTU1BUllfbGliZ29tcC1zdGF0aWNkZXYgPSAiR05VIE9wZW5NUCBwYXJhbGxlbCBwcm9ncmFtbWluZyBsaWJyYXJ5IC0gc3RhdGljIGRldmVsb3BtZW50IGZpbGVzIgogCiBGSUxFU19saWJhdG9taWMgPSAiJHtsaWJkaXJ9L2xpYmF0b21pYy5zby4qIgorU1VNTUFSWV9saWJhdG9taWMgPSAiR05VIEMrKzExIGF0b21pY3Mgc3VwcG9ydCBsaWJyYXJ5IgogRklMRVNfbGliYXRvbWljLWRldiA9ICJcCiAgICAgJHtsaWJkaXJ9L2xpYmF0b21pYy5zbyBcCiAgICAgJHtsaWJkaXJ9L2xpYmF0b21pYy5sYSBcCiAiCitTVU1NQVJZX2xpYmF0b21pYy1kZXYgPSAiR05VIEMrKzExIGF0b21pY3Mgc3VwcG9ydCBsaWJyYXJ5IC0gZGV2ZWxvcG1lbnQgZmlsZXMiCiBGSUxFU19saWJhdG9taWMtc3RhdGljZGV2ID0gIiR7bGliZGlyfS9saWJhdG9taWMuYSIKK1NVTU1BUllfbGliYXRvbWljLXN0YXRpY2RldiA9ICJHTlUgQysrMTEgYXRvbWljcyBzdXBwb3J0IGxpYnJhcnkgLSBzdGF0aWMgZGV2ZWxvcG1lbnQgZmlsZXMiCiAKIEZJTEVTX2xpYml0bSA9ICIke2xpYmRpcn0vbGliaXRtLnNvLioiCitTVU1NQVJZX2xpYml0bSA9ICJHTlUgdHJhbnNhY3Rpb25hbCBtZW1vcnkgc3VwcG9ydCBsaWJyYXJ5IgogRklMRVNfbGliaXRtLWRldiA9ICJcCiAgICAgJHtsaWJkaXJ9L2xpYml0bS5zbyBcCiAgICAgJHtsaWJkaXJ9L2xpYml0bS5sYSBcCiAgICAgJHtsaWJkaXJ9L2xpYml0bS5zcGVjIFwKICIKK1NVTU1BUllfbGliaXRtLWRldiA9ICJHTlUgdHJhbnNhY3Rpb25hbCBtZW1vcnkgc3VwcG9ydCBsaWJyYXJ5IC0gZGV2ZWxvcG1lbnQgZmlsZXMiCiBGSUxFU19saWJpdG0tc3RhdGljZGV2ID0gIiR7bGliZGlyfS9saWJpdG0uYSIKK1NVTU1BUllfbGliaXRtLXN0YXRpY2RldiA9ICJHTlUgdHJhbnNhY3Rpb25hbCBtZW1vcnkgc3VwcG9ydCBsaWJyYXJ5IC0gc3RhdGljIGRldmVsb3BtZW50IGZpbGVzIgogCiBkb19wYWNrYWdlX3dyaXRlX2lwa1tkZXBlbmRzXSArPSAidmlydHVhbC8ke01MUFJFRklYfWxpYmM6ZG9fcGFja2FnZWRhdGEiCiBkb19wYWNrYWdlX3dyaXRlX2RlYltkZXBlbmRzXSArPSAidmlydHVhbC8ke01MUFJFRklYfWxpYmM6ZG9fcGFja2FnZWRhdGEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZV80LjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZV80LjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5N2Q2OTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWVfNC45LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy0ke1BWfS5pbmMKLXJlcXVpcmUgZ2NjLXJ1bnRpbWUuaW5jCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lXzUuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lXzUuNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWVfNS4zLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZV81LjQuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lXzUuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lXzYuMi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKY29weSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lXzUuMy5iYgpjb3B5IHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lXzYuMi5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNhbml0aXplcnMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNhbml0aXplcnMuaW5jCmluZGV4IDYwOTFhMGIuLmRmNGUyOTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zYW5pdGl6ZXJzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVycy5pbmMKQEAgLTUwLDcgKzUwLDcgQEAKIAogSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKIEFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCi1ERVBFTkRTID0gImdjYy1ydW50aW1lIgorREVQRU5EUyA9ICJnY2MtcnVudGltZSB2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nY2MiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVyc181LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVyc181LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwMWY2NjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNhbml0aXplcnNfNS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy0ke1BWfS5pbmMKLXJlcXVpcmUgZ2NjLXNhbml0aXplcnMuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVyc180LjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVyc181LjQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zYW5pdGl6ZXJzXzQuOS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNhbml0aXplcnNfNS40LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVyc180LjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVyc182LjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVyc180LjkuYmIKY29weSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVyc182LjIuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zb3VyY2VfNS4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNvdXJjZV81LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4OTBmYTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNvdXJjZV81LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLXJlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLSR7UFZ9LmluYwotcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc291cmNlLmluYwotCi1FWENMVURFX0ZST01fV09STEQgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zb3VyY2VfNC45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNvdXJjZV81LjQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zb3VyY2VfNC45LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc291cmNlXzUuNC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNvdXJjZV80LjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc291cmNlXzYuMi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKY29weSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zb3VyY2VfNC45LmJiCmNvcHkgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNvdXJjZV82LjIuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy10YXJnZXQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXRhcmdldC5pbmMKaW5kZXggYjhkYWJlNS4uZjQzNmZhMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXRhcmdldC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXRhcmdldC5pbmMKQEAgLTQsNyArNCw2IEBACiBFWFRSQV9PRUNPTkZfUEFUSFMgPSAiXAogICAgIC0td2l0aC1zeXNyb290PS8gXAogICAgIC0td2l0aC1idWlsZC1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSBcCi0gICAgLS13aXRoLW5hdGl2ZS1zeXN0ZW0taGVhZGVyLWRpcj0ke1NUQUdJTkdfRElSX1RBUkdFVH0ke3RhcmdldF9pbmNsdWRlZGlyfSBcCiAgICAgLS13aXRoLWd4eC1pbmNsdWRlLWRpcj0ke2luY2x1ZGVkaXJ9L2MrKy8ke0JJTlZ9IFwKICIKIApAQCAtNDMsNiArNDIsMTAgQEAKICAgICAke2djY2xpYmRpcn0vJHtUQVJHRVRfU1lTfS8ke0JJTlZ9L2luY2x1ZGUtZml4ZWQgXAogIgogSU5TQU5FX1NLSVBfJHtQTn0gKz0gImRldi1zbyIKK1JSRUNPTU1FTkRTXyR7UE59ICs9ICJcCisgICAgbGlic3NwIFwKKyAgICBsaWJzc3AtZGV2IFwKKyIKIAogRklMRVNfJHtQTn0tZGV2ID0gIlwKICAgICAke2djY2xpYmRpcn0vJHtUQVJHRVRfU1lTfS8ke0JJTlZ9L2xpYioke1NPTElCU0RFVn0gXApAQCAtNzAsMTAgKzczLDE5IEBACiAgICAgJHtiaW5kaXJ9L2c3NyBcCiAgICAgJHtiaW5kaXJ9L2Y3NyBcCiAiCitSUkVDT01NRU5EU19nNzcgPSAiXAorICAgIGxpYmcyYyBcCisgICAgbGliZzJjLWRldiBcCisiCisKIEZJTEVTX2dmb3J0cmFuID0gIlwKICAgICAke2JpbmRpcn0vJHtUQVJHRVRfUFJFRklYfWdmb3J0cmFuIFwKICAgICAke2xpYmV4ZWNkaXJ9L2djYy8ke1RBUkdFVF9TWVN9LyR7QklOVn0vZjk1MSBcCiAiCitSUkVDT01NRU5EU19nZm9ydHJhbiA9ICJcCisgICAgbGlicXVhZG1hdGggXAorICAgIGxpYnF1YWRtYXRoLWRldiBcCisiCiBGSUxFU19nZm9ydHJhbi1zeW1saW5rcyA9ICJcCiAgICAgJHtiaW5kaXJ9L2dmb3J0cmFuIFwKICAgICAke2JpbmRpcn0vZjk1IgpAQCAtOTksNiArMTExLDEyIEBACiAgICAgJHtiaW5kaXJ9L2MrKyBcCiAgICAgJHtiaW5kaXJ9L2crKyBcCiAiCitSUkVDT01NRU5EU19nKysgPSAiXAorICAgIGxpYnN0ZGMrKyBcCisgICAgbGlic3RkYysrLWRldiBcCisgICAgbGliYXRvbWljIFwKKyAgICBsaWJhdG9taWMtZGV2IFwKKyIKIAogRklMRVNfJHtQTn0tZG9jID0gIlwKICAgICAke2luZm9kaXJ9IFwKQEAgLTIwNSw2ICsyMjMsNCBAQAogIyBhbmQgYnVpbGRzIHRyYWNrIGZpbGUgZGVwZW5kZW5jaWVzIChlLmcuIHBlcmwgYW5kIGl0cyBtYWtlZGVwZW5kcyBjb2RlKS4KICMgRm9yIGRldGVybWluaXNtIHdlIGRvbid0IGluc3RhbGwgdGhpcyBldmVyIGFuZCByZWx5IG9uIHRoZSBjb3B5IGZyb20gZ2NjLWNyb3NzLgogIyBbWU9DVE8gIzcyODddCi1zeXNyb290X3N0YWdlX2RpcnNfYXBwZW5kICgpIHsKLQlybSAtcmYgJHRvJHtsaWJkaXJ9L2djYwotfQorU1lTUk9PVF9ESVJTX0JMQUNLTElTVCArPSAiJHtsaWJkaXJ9L2djYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djY180LjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2NfNC45LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOWRjNjEyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djY180LjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy0ke1BWfS5pbmMKLXJlcXVpcmUgZ2NjLXRhcmdldC5pbmMKLQotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjA0OTcvCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKLQotI1NZU1RFTUhFQURFUlNfY2xhc3MtbmF0aXZlc2RrID0gIiR7QCcke3RhcmdldF9pbmNsdWRlZGlyfScucmVwbGFjZShkLmdldFZhcignU0RLUEFUSCcsIFRydWUpLCclcicpfSIKLSNTWVNURU1MSUJTX2NsYXNzLW5hdGl2ZXNkayA9ICIke0AnJHt0YXJnZXRfYmFzZV9saWJkaXJ9Jy5yZXBsYWNlKGQuZ2V0VmFyKCdTREtQQVRIJywgVHJ1ZSksJyVyJyl9LyIKLSNTWVNURU1MSUJTMV9jbGFzcy1uYXRpdmVzZGsgPSAiJHtAJyR7dGFyZ2V0X2xpYmRpcn0nLnJlcGxhY2UoZC5nZXRWYXIoJ1NES1BBVEgnLCBUcnVlKSwnJXInKX0vIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2NfNS4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjXzUuNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjXzUuMy5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjXzUuNC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjXzUuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djY182LjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2NfNS4zLmJiCmNvcHkgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjXzYuMi5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjLWNvbW1vbi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MtY29tbW9uLmluYwppbmRleCBkYWUwN2U5Li44YTEzZjU0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MtY29tbW9uLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MtY29tbW9uLmluYwpAQCAtMSw2ICsxLDYgQEAKIEJQTiA9ICJsaWJnY2MiCiAKLXJlcXVpcmUgZ2NjLXNoYXJlZC1zb3VyY2UuaW5jCityZXF1aXJlIGdjYy1jb25maWd1cmUtY29tbW9uLmluYwogCiBJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgogCkBAIC0xMTEsOSArMTExLDE1IEBACiAgICAgICAgIGlmIG5vdCB0dW5lX2JpdG5lc3M6CiAgICAgICAgICAgICB0dW5lX2JpdG5lc3MgPSAnMzInICMgL2xpYiA9PiAzMmJpdCBsaWIKIAorICAgICAgICB0dW5lX2FiaWV4dGVuc2lvbiA9IHR1bmVfcGFyYW1ldGVyc1snYWJpZXh0ZW5zaW9uJ10KKyAgICAgICAgaWYgdHVuZV9hYmlleHRlbnNpb246CisgICAgICAgICAgICBsaWJjZXh0ZW5zaW9uID0gJy1nbnUnICsgdHVuZV9hYmlleHRlbnNpb24KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxpYmNleHRlbnNpb24gPSAnJworCiAgICAgICAgIHNyYyA9ICcuLi8uLi8uLi8nICsgdHVuZV9iYXNlbGliICsgJy8nICsgXAogICAgICAgICAgICAgdHVuZV9hcmNoICsgZC5nZXRWYXIoJ1RBUkdFVF9WRU5ET1InLCBUcnVlKSArICdtbCcgKyBtbCArIFwKLSAgICAgICAgICAgICctJyArIGQuZ2V0VmFyKCdUQVJHRVRfT1MnLCBUcnVlKSArICcvJyArIGJpbnYgKyAnLycKKyAgICAgICAgICAgICctJyArIGQuZ2V0VmFyKCdUQVJHRVRfT1MnLCBUcnVlKSArIGxpYmNleHRlbnNpb24gKyAgJy8nICsgYmludiArICcvJwogCiAgICAgICAgIGRlc3QgPSBkLmdldFZhcignRCcsIFRydWUpICsgZC5nZXRWYXIoJ2xpYmRpcicsIFRydWUpICsgJy8nICsgXAogICAgICAgICAgICAgZC5nZXRWYXIoJ1RBUkdFVF9TWVMnLCBUcnVlKSArICcvJyArIGJpbnYgKyAnLycgKyB0dW5lX2JpdG5lc3MKQEAgLTEyMywxNSArMTI5LDE4IEBACiAgICAgICAgIG9zLnN5bWxpbmsoc3JjLCBkZXN0KQogfQogCi1kZWYgZ2V0X29yaWdpbmFsX3ZlbmRvcm9zKGQpOgotICAgIHZlbmRvcm9zID0gZC5leHBhbmQoJyR7VEFSR0VUX1ZFTkRPUn0tJHtUQVJHRVRfT1N9JykKK2RlZiBnZXRfb3JpZ2luYWxfb3MoZCk6CisgICAgdmVuZG9yb3MgPSBkLmV4cGFuZCgnJHtUQVJHRVRfQVJDSH0ke09SSUdfVEFSR0VUX1ZFTkRPUn0tJHtUQVJHRVRfT1N9JykKICAgICBmb3Igc3VmZml4IGluIFtkLmdldFZhcignQUJJRVhURU5TSU9OJywgVHJ1ZSksIGQuZ2V0VmFyKCdMSUJDRVhURU5TSU9OJywgVHJ1ZSldOgogICAgICAgICBpZiBzdWZmaXggYW5kIHZlbmRvcm9zLmVuZHN3aXRoKHN1ZmZpeCk6CiAgICAgICAgICAgICB2ZW5kb3JvcyA9IHZlbmRvcm9zWzotbGVuKHN1ZmZpeCldCisgICAgIyBBcm0gbXVzdCB1c2UgbGludXgtZ251ZWFiaSBub3QgbGludXggYXMgb25seSB0aGUgZm9ybWVyIGlzIGFjY2VwdGVkIGJ5IGdjYworICAgIGlmIHZlbmRvcm9zLnN0YXJ0c3dpdGgoImFybS0iKSBhbmQgbm90IHZlbmRvcm9zLmVuZHN3aXRoKCItZ251ZWFiaSIpOgorICAgICAgICB2ZW5kb3JvcyA9IHZlbmRvcm9zICsgIi1nbnVlYWJpIgogICAgIHJldHVybiB2ZW5kb3JvcwogCi1PUklHX1RBUkdFVF9WRU5ET1JPUyA6PSAiJHtAZ2V0X29yaWdpbmFsX3ZlbmRvcm9zKGQpfSIKLUJBU0VUQVJHRVRfU1lTID0gIiR7VEFSR0VUX0FSQ0h9JHtPUklHX1RBUkdFVF9WRU5ET1JPU30iCitPUklHX1RBUkdFVF9WRU5ET1IgOj0gIiR7VEFSR0VUX1ZFTkRPUn0iCitCQVNFVEFSR0VUX1NZUyA9ICIke0BnZXRfb3JpZ2luYWxfb3MoZCl9IgogCiBhZGR0YXNrIGV4dHJhX3N5bWxpbmtzIGFmdGVyIGRvX211bHRpbGliX2luc3RhbGwgYmVmb3JlIGRvX3BhY2thZ2UgZG9fcG9wdWxhdGVfc3lzcm9vdAogZmFrZXJvb3QgcHl0aG9uIGRvX2V4dHJhX3N5bWxpbmtzKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjLWluaXRpYWwuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjLWluaXRpYWwuaW5jCmluZGV4IDU5ZThhNjIuLjY4N2E4YTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy1pbml0aWFsLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MtaW5pdGlhbC5pbmMKQEAgLTUsNyArNSw3IEBACiBMSUNFTlNFID0gIkdQTC0zLjAtd2l0aC1HQ0MtZXhjZXB0aW9uIgogCiBTVEFHSU5HQ0MgPSAiZ2NjLWNyb3NzLWluaXRpYWwtJHtUQVJHRVRfQVJDSH0iCi1TVEFHSU5HQ0NfY2xhc3MtbmF0aXZlc2RrID0gImdjYy1jcm9zc3Nkay1pbml0aWFsLSR7VEFSR0VUX0FSQ0h9IgorU1RBR0lOR0NDX2NsYXNzLW5hdGl2ZXNkayA9ICJnY2MtY3Jvc3NzZGstaW5pdGlhbC0ke1NES19TWVN9IgogUEFUSF9wcmVwZW5kID0gIiR7U1RBR0lOR19CSU5ESVJfVE9PTENIQUlOfS4ke1NUQUdJTkdDQ306IgogCiBQQUNLQUdFUyA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MtaW5pdGlhbF81LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MtaW5pdGlhbF81LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5ZjI1M2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjLWluaXRpYWxfNS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy0ke1BWfS5pbmMKLXJlcXVpcmUgbGliZ2NjLWluaXRpYWwuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MtaW5pdGlhbF80LjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MtaW5pdGlhbF81LjQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy1pbml0aWFsXzQuOS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjLWluaXRpYWxfNS40LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MtaW5pdGlhbF80LjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MtaW5pdGlhbF82LjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MtaW5pdGlhbF80LjkuYmIKY29weSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MtaW5pdGlhbF82LjIuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MuaW5jCmluZGV4IDY4Mzc3ODYuLjQ3NzAzOTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjLmluYwpAQCAtMiw2ICsyLDE3IEBACiAKIERFUEVORFMgPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z2NjIHZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWcrKyIKIAorZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKKwlpZiBbICIke1RDTElCQ30iICE9ICJnbGliYyIgXTsgdGhlbgorCQljYXNlICIke1RBUkdFVF9PU30iIGluCisJCQkibGludXgtbXVzbCIgfCAibGludXgtdWNsaWJjIiB8ICJsaW51eC0qc3BlIikgZXh0cmFfdGFyZ2V0X29zPSJsaW51eCI7OworCQkJImxpbnV4LW11c2xlYWJpIiB8ICJsaW51eC11Y2xpYmNlYWJpIikgZXh0cmFfdGFyZ2V0X29zPSJsaW51eC1nbnVlYWJpIjs7CisJCQkqKSBleHRyYV90YXJnZXRfb3M9ImxpbnV4Ijs7CisJCWVzYWMKKwkJbG4gLXMgJHtUQVJHRVRfU1lTfSAke0R9JHtsaWJkaXJ9LyR7VEFSR0VUX0FSQ0h9JHtUQVJHRVRfVkVORE9SfS0kZXh0cmFfdGFyZ2V0X29zCisJZmkKK30KKwogUEFDS0FHRVMgPSAiXAogICAgICR7UE59IFwKICAgICAke1BOfS1kZXYgXApAQCAtMTksNiArMzAsNyBAQAogICAgICR7YmFzZV9saWJkaXJ9L2xpYmdjYyouc28gXAogICAgICR7QGJhc2VfY29uZGl0aW9uYWwoJ0JBU0VUQVJHRVRfU1lTJywgJyR7VEFSR0VUX1NZU30nLCAnJywgJyR7bGliZGlyfS8ke0JBU0VUQVJHRVRfU1lTfScsIGQpfSBcCiAgICAgJHtsaWJkaXJ9LyR7VEFSR0VUX1NZU30vJHtCSU5WfSogXAorICAgICR7bGliZGlyfS8ke1RBUkdFVF9BUkNIfSR7VEFSR0VUX1ZFTkRPUn0qIFwKICIKIAogTElCR0NDQlVJTERUUkVFTkFNRSA9ICJnY2MtYnVpbGQtaW50ZXJuYWwtIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjXzUuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjY181LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1MTUyZjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjXzUuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtJHtQVn0uaW5jCi1yZXF1aXJlIGxpYmdjYy5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjY180LjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2NfNS40LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2NfNC45LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2NfNS40LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2NfNC45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjXzYuMi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKY29weSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjY180LjkuYmIKY29weSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2NfNi4yLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnZm9ydHJhbl81LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnZm9ydHJhbl81LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxZGQ4YjQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2ZvcnRyYW5fNS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy0ke1BWfS5pbmMKLXJlcXVpcmUgbGliZ2ZvcnRyYW4uaW5jCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdmb3J0cmFuXzQuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdmb3J0cmFuXzUuNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2ZvcnRyYW5fNC45LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnZm9ydHJhbl81LjQuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdmb3J0cmFuXzQuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdmb3J0cmFuXzYuMi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKY29weSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdmb3J0cmFuXzQuOS5iYgpjb3B5IHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdmb3J0cmFuXzYuMi5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLTcuMTAuMS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItNy4xMS5pbmMKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi03LjEwLjEuaW5jCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItNy4xMS5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jb21tb24uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNvbW1vbi5pbmMKaW5kZXggMGQyOGVlNC4uMDkyMzE0MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNvbW1vbi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNvbW1vbi5pbmMKQEAgLTIsNyArMiw3IEBACiBIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ2RiLyIKIExJQ0VOU0UgPSAiR1BMdjMrIgogU0VDVElPTiA9ICJkZXZlbCIKLURFUEVORFMgPSAiZXhwYXQgemxpYiBuY3Vyc2VzICR7TFRUTkdVU1R9IgorREVQRU5EUyA9ICJleHBhdCB6bGliIG5jdXJzZXMgdmlydHVhbC9saWJpY29udiAke0xUVE5HVVNUfSIKIAogTFRUTkdVU1QgPSAibHR0bmctdXN0IgogTFRUTkdVU1RfYWFyY2g2NCA9ICIiCkBAIC0xNiw4ICsxNiw2IEBACiBMVFROR1VTVF9zaDQgPSAiIgogTFRUTkdVU1RfbGliYy1tdXNsID0gIiIKIAotSU5DX1BSID0gInIwIgotCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCiAJCWZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9OWY2MDRkOGE0ZjhlNzRmNGY1MTQwODQ1YTIxYjY2NzQgXAogCQlmaWxlOi8vQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKQEAgLTI1LDggKzIzLDI1IEBACiAKIGluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KIAotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2dkYi9nZGItJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAiCitTUkNSRVYgPSAiMWE5ODJiNjg5Y2U0ZTIwNTIzYmRmNjllNDdmZGQ1NzRjNGY2MzkzNCIKKworU1JDX1VSSSA9ICJnaXQ6Ly9zb3VyY2V3YXJlLm9yZy9naXQvYmludXRpbHMtZ2RiLmdpdDticmFuY2g9Z2RiLTcuMTEtYnJhbmNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItbW9kZV90LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItbWFrZS1tYW4taW5zdGFsbC1yZWxhdGl2ZS10by1ERVNURElSLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtbWlwcy1saW51eC1uYXQtRGVmaW5lLV9BQklPMzItaWYtbm90LWRlZmluZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1wcGMtcHRyYWNlLURlZmluZS1wdF9yZWdzLXVhcGlfcHRfcmVncy1vbi1HTElCQy1zeXN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtQWRkLXN1cHBvcnQtZm9yLVJlbmVzYXMtU0gtc2g0LWFyY2hpdGVjdHVyZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA2LURvbnQtZGlzYWJsZS1saWJyZWFkbGluZS5hLXdoZW4tdXNpbmctZGlzYWJsZS1zdGF0aWMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNy11c2UtYXNtLXNnaWRlZnMuaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA4LVVzZS1leG9ydGVkLWRlZmluaXRpb25zLW9mLVNJR1JUTUlOLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDktQ2hhbmdlLW9yZGVyLW9mLUNGTEFHUy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEwLXJlc29sdmUtcmVzdHJpY3Qta2V5d29yZC1jb25mbGljdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDExLWF2eF9tcHgucGF0Y2ggXAorIgorCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJnZGJcLSg/UDxwdmVyPi4rKVwtcmVsZWFzZSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKIAogQiA9ICIke1dPUktESVJ9L2J1aWxkLSR7VEFSR0VUX1NZU30iCiAKQEAgLTQwLDEyICs1NSwxNSBAQAogICAgICAgICAgICAgICAgICR7R0RCUFJPUFJFRklYfSAke0VYUEFUfSBcCiAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdtdWx0aWFyY2gnLCAnLS1lbmFibGUtNjQtYml0LWJmZCcsICcnLCBkKX0gXAogICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ycGF0aCBcCi0gICAgICAgICAgICAgICAiCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWdhcyAtLWRpc2FibGUtYmludXRpbHMgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1sZCAtLWRpc2FibGUtZ29sZCBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWdwcm9mIFwKKyIKIAogUEFDS0FHRUNPTkZJRyA/Pz0gInJlYWRsaW5lIgogIyBVc2UgLS13aXRob3V0LXN5c3RlbS1yZWFkbGluZSB0byBjb21waWxlIHdpdGggcmVhZGxpbmUgNS4KIFBBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIi0td2l0aC1zeXN0ZW0tcmVhZGxpbmUsLS13aXRob3V0LXN5c3RlbS1yZWFkbGluZSxyZWFkbGluZSIKLVBBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICItLXdpdGgtcHl0aG9uPSR7V09SS0RJUn0vcHl0aG9uLC0td2l0aG91dC1weXRob24scHl0aG9uLHB5dGhvbiBweXRob24tY29kZWNzIgorUEFDS0FHRUNPTkZJR1tweXRob25dID0gIi0td2l0aC1weXRob249JHtXT1JLRElSfS9weXRob24sLS13aXRob3V0LXB5dGhvbixweXRob24zLHB5dGhvbjMgcHl0aG9uMy1jb2RlY3MiCiBQQUNLQUdFQ09ORklHW2JhYmVsdHJhY2VdID0gIi0td2l0aC1iYWJlbHRyYWNlLC0td2l0aG91dC1iYWJlbHRyYWNlLGJhYmVsdHJhY2UiCiAKIEdEQlBST1BSRUZJWCA9ICItLXByb2dyYW0tcHJlZml4PScnIgpAQCAtNjksNCArODcsMyBAQAogUlJFQ09NTUVORFNfZ2RiX2FwcGVuZF9saW51eC1nbnVlYWJpID0gIiBnbGliYy10aHJlYWQtZGIgIgogUlJFQ09NTUVORFNfZ2Ric2VydmVyX2FwcGVuZF9saW51eCA9ICIgZ2xpYmMtdGhyZWFkLWRiICIKIFJSRUNPTU1FTkRTX2dkYnNlcnZlcl9hcHBlbmRfbGludXgtZ251ZWFiaSA9ICIgZ2xpYmMtdGhyZWFkLWRiICIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNyb3NzLWNhbmFkaWFuLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zcy1jYW5hZGlhbi5pbmMKaW5kZXggNmU0MmFmMS4uZTUzMDgxZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNyb3NzLWNhbmFkaWFuLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3MtY2FuYWRpYW4uaW5jCkBAIC0xLDUgKzEsNSBAQAogaW5oZXJpdCBjcm9zcy1jYW5hZGlhbgotaW5oZXJpdCBweXRob24tZGlyCitpbmhlcml0IHB5dGhvbjMtZGlyCiAKIFNVTU1BUlkgPSAiR05VIGRlYnVnZ2VyIChjcm9zcy1jYW5hZGlhbiBnZGIgZm9yICR7VEFSR0VUX0FSQ0h9IHRhcmdldCkiCiBQTiA9ICJnZGItY3Jvc3MtY2FuYWRpYW4tJHtUUkFOU0xBVEVEX1RBUkdFVF9BUkNIfSIKQEAgLTEyLDkgKzEyLDkgQEAKIAogIyBPdmVycmlkZXMgUEFDS0FHRUNPTkZJRyB2YXJpYWJsZXMgaW4gZ2RiLWNvbW1vbi5pbmMKIFBBQ0tBR0VDT05GSUcgPz89ICJweXRob24gcmVhZGxpbmUiCi1QQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLS13aXRoLXB5dGhvbj0ke1dPUktESVJ9L3B5dGhvbiwtLXdpdGhvdXQtcHl0aG9uLG5hdGl2ZXNkay1weXRob24sIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVzZGstcHl0aG9uLWNvcmUgbmF0aXZlc2RrLXB5dGhvbi1sYW5nIG5hdGl2ZXNkay1weXRob24tcmUgXAotICAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZXNkay1weXRob24tY29kZWNzIG5hdGl2ZXNkay1weXRob24tbmV0Y2xpZW50IgorUEFDS0FHRUNPTkZJR1tweXRob25dID0gIi0td2l0aC1weXRob249JHtXT1JLRElSfS9weXRob24sLS13aXRob3V0LXB5dGhvbixuYXRpdmVzZGstcHl0aG9uMywgXAorICAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZXNkay1weXRob24zLWNvcmUgbmF0aXZlc2RrLXB5dGhvbjMtbGFuZyBuYXRpdmVzZGstcHl0aG9uMy1yZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlc2RrLXB5dGhvbjMtY29kZWNzIG5hdGl2ZXNkay1weXRob24zLW5ldGNsaWVudCIKIFBBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIi0td2l0aC1zeXN0ZW0tcmVhZGxpbmUsLS13aXRob3V0LXN5c3RlbS1yZWFkbGluZSxuYXRpdmVzZGstcmVhZGxpbmUiCiAKIFNTVEFURV9EVVBXSElURUxJU1QgKz0gIiR7U1RBR0lOR19EQVRBRElSfS9nZGIiCkBAIC0yMyw4ICsyMyw4IEBACiBjYXQgPiAke1dPUktESVJ9L3B5dGhvbiA8PCBFT0YKICMhIC9iaW4vc2gKIGNhc2UgIlwkMiIgaW4KLSAgICAgICAgLS1pbmNsdWRlcykgZWNobyAiLUkke1NUQUdJTkdfSU5DRElSfS8ke1BZVEhPTl9ESVJ9LyIgOzsKLSAgICAgICAgLS1sZGZsYWdzKSBlY2hvICItV2wsLXJwYXRoLWxpbmssJHtTVEFHSU5HX0xJQkRJUn0vLi4gLVdsLC1ycGF0aCwke2xpYmRpcn0vLi4gLWxwdGhyZWFkIC1sZGwgLWx1dGlsIC1sbSAtbHB5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfSIgOzsKKyAgICAgICAgLS1pbmNsdWRlcykgZWNobyAiLUkke1NUQUdJTkdfSU5DRElSfS8ke1BZVEhPTl9ESVJ9JHtQWVRIT05fQUJJfS8iIDs7CisgICAgICAgIC0tbGRmbGFncykgZWNobyAiLVdsLC1ycGF0aC1saW5rLCR7U1RBR0lOR19MSUJESVJ9Ly4uIC1XbCwtcnBhdGgsJHtsaWJkaXJ9Ly4uIC1scHRocmVhZCAtbGRsIC1sdXRpbCAtbG0gLWxweXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0ke1BZVEhPTl9BQkl9IiA7OwogICAgICAgICAtLWV4ZWMtcHJlZml4KSBlY2hvICIke2V4ZWNfcHJlZml4fSIgOzsKICAgICAgICAgKikgZXhpdCAxIDs7CiBlc2FjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3MtY2FuYWRpYW5fNy4xMC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNyb3NzLWNhbmFkaWFuXzcuMTEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zcy1jYW5hZGlhbl83LjEwLjEuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zcy1jYW5hZGlhbl83LjExLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3MuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNyb3NzLmluYwppbmRleCAyNDY4ZDIzLi41ZmE3YzMzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3MuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zcy5pbmMKQEAgLTIsMTYgKzIsMTQgQEAKIAogREVQRU5EUyA9ICJleHBhdC1uYXRpdmUgbmN1cnNlcy1uYXRpdmUiCiAKLWluaGVyaXQgcHl0aG9ubmF0aXZlCitpbmhlcml0IHB5dGhvbjNuYXRpdmUKIAogIyBPdmVycmlkZXMgUEFDS0FHRUNPTkZJRyB2YXJpYWJsZXMgaW4gZ2RiLWNvbW1vbi5pbmMKIFBBQ0tBR0VDT05GSUcgPz89ICJweXRob24gcmVhZGxpbmUiCi1QQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLS13aXRoLXB5dGhvbj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9weXRob24sLS13aXRob3V0LXB5dGhvbixweXRob24tbmF0aXZlIgorUEFDS0FHRUNPTkZJR1tweXRob25dID0gIi0td2l0aC1weXRob249JHtQWVRIT059LC0td2l0aG91dC1weXRob24scHl0aG9uMy1uYXRpdmUiCiBQQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICItLXdpdGgtc3lzdGVtLXJlYWRsaW5lLC0td2l0aG91dC1zeXN0ZW0tcmVhZGxpbmUscmVhZGxpbmUtbmF0aXZlIgogCiBkb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgZXhwb3J0IEJVSUxEX1NZUz0iJHtCVUlMRF9TWVN9IgotICAgIGV4cG9ydCBIT1NUX1NZUz0iJHtIT1NUX1NZU30iCiAgICAgZXhwb3J0IFNUQUdJTkdfTElCRElSPSIke1NUQUdJTkdfTElCRElSX05BVElWRX0iCiAgICAgZXhwb3J0IFNUQUdJTkdfSU5DRElSPSIke1NUQUdJTkdfSU5DRElSX05BVElWRX0iCiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3NfNy4xMC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNyb3NzXzcuMTAuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2E5NWNmYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3NfNy4xMC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1yZXF1aXJlIGdkYi1jcm9zcy5pbmMKLXJlcXVpcmUgZ2RiLSR7UFZ9LmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1tYWtlLW1hbi1pbnN0YWxsLXJlbGF0aXZlLXRvLURFU1RESVIucGF0Y2giCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3NfNy4xMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zc183LjExLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwY2YxNTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3NfNy4xMS5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgZ2RiLWNyb3NzLmluYworcmVxdWlyZSBnZGItJHtQVn0uaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLmluYwppbmRleCBkOWM4NjRkLi41MjExOWEwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi5pbmMKQEAgLTIsMTQgKzIsNiBAQAogCiBpbmhlcml0IGdldHRleHQKIAotU1JDX1VSSSArPSAiZmlsZTovLzAwMDItQ2hhbmdlLW9yZGVyLW9mLUNGTEFHUy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMy1BZGQtc3VwcG9ydC1mb3ItUmVuZXNhcy1TSC1zaDQtYXJjaGl0ZWN0dXJlLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1leHBvcnRlZC1kZWZpbml0aW9ucy1vZi1TSUdSVE1JTi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN5cy10eXBlcy5oLWZvci1tb2RlX3QucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtdXNlLWFzbS1zZ2lkZWZzLmgucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2ZvcmNlLXJlYWRsaW5lLXN0YXRpYy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1taXBzLWxpbnV4LW5hdC1EZWZpbmUtX0FCSU8zMi1pZi1ub3QtZGVmaW5lZC5wYXRjaCBcCi0gICAgICAgICAgICIKICNMREZMQUdTX2FwcGVuZCA9ICIgLXMiCiAjZXhwb3J0IENGTEFHU19hcHBlbmQ9IiAtTCR7U1RBR0lOR19MSUJESVJ9IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMS1Vc2UtZXhwb3J0ZWQtZGVmaW5pdGlvbnMtb2YtU0lHUlRNSU4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMS1Vc2UtZXhwb3J0ZWQtZGVmaW5pdGlvbnMtb2YtU0lHUlRNSU4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmMGMwOTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDEtVXNlLWV4cG9ydGVkLWRlZmluaXRpb25zLW9mLVNJR1JUTUlOLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotRnJvbSAyZjk3ZTg5ZTllNGU1Nzk3ZDBkOTczZTFkMDVjMWY0NGM0NmI0OTEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgNSBKdW4gMjAxNSAyMDoyMTozOCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBVc2UgZXhvcnRlZCBkZWZpbml0aW9ucyBvZiBTSUdSVE1JTgotCi1EZWZpbmUgV19TVE9QQ09ERSBpZiBub3QgZGVmaW5lZCBhbHJlYWR5Ci0KLV9fU0lHUlRNSU4gaXMgaW50ZXJuYWwgdG8gZ2xpYmMgYW5kIG90aGVyIGxpYmNzIGUuZy4gbXVzbAotbWF5IG5vdCBwcm92aWRlIHRoZW0KLQotRml4ZXMKLWh0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTEzMDEyCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi0KLSBnZGIvbGludXgtbmF0LmMgICAgIHwgNCArKy0tCi0gZ2RiL25hdC9saW51eC1uYXQuaCB8IDQgKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2RiL2xpbnV4LW5hdC5jIGIvZ2RiL2xpbnV4LW5hdC5jCi1pbmRleCAzOTZjMzBjLi41MDMyMGVlIDEwMDY0NAotLS0tIGEvZ2RiL2xpbnV4LW5hdC5jCi0rKysgYi9nZGIvbGludXgtbmF0LmMKLUBAIC00ODU2LDEwICs0ODU2LDEwIEBAIGxpbl90aHJlYWRfZ2V0X3RocmVhZF9zaWduYWxzIChzaWdzZXRfdCAqc2V0KQotICAgICAgZm9ydHVuYXRlbHkgdGhleSBkb24ndCBjaGFuZ2UhICAqLwotIAotICAgaWYgKHJlc3RhcnQgPT0gMCkKLS0gICAgcmVzdGFydCA9IF9fU0lHUlRNSU47Ci0rICAgIHJlc3RhcnQgPSBTSUdSVE1JTjsKLSAKLSAgIGlmIChjYW5jZWwgPT0gMCkKLS0gICAgY2FuY2VsID0gX19TSUdSVE1JTiArIDE7Ci0rICAgIGNhbmNlbCA9IFNJR1JUTUlOICsgMTsKLSAKLSAgIHNpZ2FkZHNldCAoc2V0LCByZXN0YXJ0KTsKLSAgIHNpZ2FkZHNldCAoc2V0LCBjYW5jZWwpOwotZGlmZiAtLWdpdCBhL2dkYi9uYXQvbGludXgtbmF0LmggYi9nZGIvbmF0L2xpbnV4LW5hdC5oCi1pbmRleCA4M2E2ZDkxLi5lZmJlMGZkIDEwMDY0NAotLS0tIGEvZ2RiL25hdC9saW51eC1uYXQuaAotKysrIGIvZ2RiL25hdC9saW51eC1uYXQuaAotQEAgLTI1LDQgKzI1LDggQEAKLSAgICBpbnN0ZWFkIFNJR1RSQVAgd2l0aCBiaXQgNyBzZXQuICAqLwotICNkZWZpbmUgU1lTQ0FMTF9TSUdUUkFQIChTSUdUUkFQIHwgMHg4MCkKLSAKLSsjaWZuZGVmIFdfU1RPUENPREUKLSsjZGVmaW5lIFdfU1RPUENPREUoc2lnKSAoKHNpZykgPDwgOCB8IDB4N2YpCi0rI2VuZGlmCi0rCi0gI2VuZGlmIC8qIExJTlVYX05BVF9IICovCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAxLWluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLW1vZGVfdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAxLWluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLW1vZGVfdC5wYXRjaAppbmRleCBhMDI5MmU0Li4wMDQyYzAwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMS1pbmNsdWRlLXN5cy10eXBlcy5oLWZvci1tb2RlX3QucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDEtaW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItbW9kZV90LnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBhY2JlZTRlZGFjYjgwYjVlZWFmZjI0ODA3MTJmZTk4ZTU2NDQzOTk3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBmZGRkNzE3ODkxNTk2OGFjZjY4MDgxNDQxMWI4YjNjYjEzN2QwNTg3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFR1ZSwgMTkgSmFuIDIwMTYgMTg6MTg6NTIgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gaW5jbHVkZSBzeXMvdHlwZXMuaCBmb3IgbW9kZV90CitTdWJqZWN0OiBbUEFUQ0ggMDEvMTBdIGluY2x1ZGUgc3lzL3R5cGVzLmggZm9yIG1vZGVfdAogCiBtb2RlX3QgaXMgdXNlZCBpbiB0YXJnZXQuaCwgc28gd2UgbmVlZCB0byBpbmNsdWRlIHN5cy90eXBlcy5oIHRvIGdldCB0aGUKIGRlZmludGlvbgpAQCAtMTQsMTAgKzE0LDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCiAKIGRpZmYgLS1naXQgYS9nZGIvZ2Ric2VydmVyL3RhcmdldC5oIGIvZ2RiL2dkYnNlcnZlci90YXJnZXQuaAotaW5kZXggOWE0MDg2Ny4uYWFlY2FiOSAxMDA2NDQKK2luZGV4IDVhZjIwNTEuLmY0MmM1MTAgMTAwNjQ0CiAtLS0gYS9nZGIvZ2Ric2VydmVyL3RhcmdldC5oCiArKysgYi9nZGIvZ2Ric2VydmVyL3RhcmdldC5oCi1AQCAtMjcsNiArMjcsNyBAQAorQEAgLTI4LDYgKzI4LDcgQEAKICAjaW5jbHVkZSAidGFyZ2V0L3dhaXRzdGF0dXMuaCIKICAjaW5jbHVkZSAibWVtLWJyZWFrLmgiCiAgI2luY2x1ZGUgImJ0cmFjZS1jb21tb24uaCIKQEAgLTI2LDUgKzI2LDUgQEAKICBzdHJ1Y3QgZW1pdF9vcHM7CiAgc3RydWN0IGJ1ZmZlcjsKIC0tIAotMi43LjAKKzIuOC4yCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAxLW1ha2UtbWFuLWluc3RhbGwtcmVsYXRpdmUtdG8tREVTVERJUi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAxLW1ha2UtbWFuLWluc3RhbGwtcmVsYXRpdmUtdG8tREVTVERJUi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjk5NmMxOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMS1tYWtlLW1hbi1pbnN0YWxsLXJlbGF0aXZlLXRvLURFU1RESVIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIDEyYjA1MDY5NTE0NjBjM2NjMzdkNzc1NDc4ZDAyNGRiM2Y5NWU5ZDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAyOjI3OjU1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8zXSBtYWtlIG1hbiBpbnN0YWxsIHJlbGF0aXZlIHRvIERFU1RESVIKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzaW0vY29tbW9uL01ha2VmaWxlLmluIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc2ltL2NvbW1vbi9NYWtlZmlsZS5pbiBiL3NpbS9jb21tb24vTWFrZWZpbGUuaW4KLWluZGV4IGQ0OWE5M2IuLjIxMjFjNDYgMTAwNjQ0Ci0tLS0gYS9zaW0vY29tbW9uL01ha2VmaWxlLmluCi0rKysgYi9zaW0vY29tbW9uL01ha2VmaWxlLmluCi1AQCAtMzUsNyArMzUsNyBAQCB0b29sZGlyID0gJChsaWJkaXIpLyQodGFyZ2V0X2FsaWFzKQotIGRhdGFyb290ZGlyID0gQGRhdGFyb290ZGlyQAotIGRhdGFkaXIgPSBAZGF0YWRpckAKLSBtYW5kaXIgPSBAbWFuZGlyQAotLW1hbjFkaXIgPSAkKG1hbmRpcikvbWFuMQotK21hbjFkaXIgPSAkKERFU1RESVIpJChtYW5kaXIpL21hbjEKLSBpbmZvZGlyID0gQGluZm9kaXJACi0gaW5jbHVkZWRpciA9IEBpbmNsdWRlZGlyQAotIAotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMS1taXBzLWxpbnV4LW5hdC1EZWZpbmUtX0FCSU8zMi1pZi1ub3QtZGVmaW5lZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAxLW1pcHMtbGludXgtbmF0LURlZmluZS1fQUJJTzMyLWlmLW5vdC1kZWZpbmVkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMTczOTUyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAxLW1pcHMtbGludXgtbmF0LURlZmluZS1fQUJJTzMyLWlmLW5vdC1kZWZpbmVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotRnJvbSBlOTJmODkzMmVmNDg4ZGUyYTU2ZGI0Mjk5MTMxY2U2YTRlYjE3MGJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjMgTWFyIDIwMTYgMDY6MzA6MDkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gbWlwcy1saW51eC1uYXQ6IERlZmluZSBfQUJJTzMyIGlmIG5vdCBkZWZpbmVkCi0KLVRoaXMgaGVscHMgYnVpbGRpbmcgZ2RiIG9uIG1pcHM2NCBvbiBtdXNsLCBzaW5jZQotbXVzbCBkb2VzIG5vdCBwcm92aWRlIHNnaWRlZnMuaCB0aGlzIGRlZmluZSBpcwotb25seSBkZWZpbmVkIHdoZW4gR0NDIGlzIHVzaW5nIG8zMiBBQkksIGluIHRoYXQKLWNhc2UgZ2NjIGVtaXRzIGl0IGFzIGJ1aWx0LWluIGRlZmluZSBhbmQgaGVuY2UKLWl0IHdvcmtzIG9rIGZvciBtaXBzMzIKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBnZGIvbWlwcy1saW51eC1uYXQuYyB8IDUgKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9nZGIvbWlwcy1saW51eC1uYXQuYyBiL2dkYi9taXBzLWxpbnV4LW5hdC5jCi1pbmRleCBmZDVjNzA1Li43NTNmMjlkIDEwMDY0NAotLS0tIGEvZ2RiL21pcHMtbGludXgtbmF0LmMKLSsrKyBiL2dkYi9taXBzLWxpbnV4LW5hdC5jCi1AQCAtNDYsNiArNDYsMTEgQEAKLSAjZGVmaW5lIFBUUkFDRV9HRVRfVEhSRUFEX0FSRUEgMjUKLSAjZW5kaWYKLSAKLSsvKiBtdXNsIGRvZXMgbm90IGRlZmluZSBhbmQgcmVsaWVzIG9uIGNvbXBpbGVyIGJ1aWx0LWluIG1hY3JvcyBmb3IgaXQgICAqLwotKyNpZm5kZWYgX0FCSU8zMgotKyNkZWZpbmUgX0FCSU8zMiAxCi0rI2VuZGlmCi0rCi0gLyogQXNzdW1lIHRoYXQgd2UgaGF2ZSBQVFJBQ0VfR0VUUkVHUyBldCBhbC4gc3VwcG9ydC4gIElmIHdlIGRvIG5vdCwKLSAgICB3ZSdsbCBjbGVhciB0aGlzIGFuZCB1c2UgUFRSQUNFX1BFRUtVU0VSIGluc3RlYWQuICAqLwotIHN0YXRpYyBpbnQgaGF2ZV9wdHJhY2VfcmVnc2V0cyA9IDE7Ci0tLSAKLTEuOC4zLjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDEtdXNlLWFzbS1zZ2lkZWZzLmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMS11c2UtYXNtLXNnaWRlZnMuaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWFlYzM5MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMS11c2UtYXNtLXNnaWRlZnMuaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUZyb20gNjc3YjViNTYxMzUxNDFjMGQyNTllMzcwYWFjZDBlMTFjODEwYWExNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDUgRmViIDIwMTYgMTQ6MDA6MDAgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gdXNlIDxhc20vc2dpZGVmcy5oPgotCi1CdWlsZCBmaXggZm9yIE1JUFMgd2l0aCBtdXNsIGxpYmMKLQotVGhlIE1JUFMgc3BlY2lmaWMgaGVhZGVyIDxzZ2lkZWZzLmg+IGlzIHByb3ZpZGVkIGJ5IGdsaWJjIGFuZCB1Y2xpYmMKLWJ1dCBub3QgYnkgbXVzbC4gUmVnYXJkbGVzcyBvZiB0aGUgbGliYywgdGhlIGtlcm5lbCBoZWFkZXJzIHByb3ZpZGUKLTxhc20vc2dpZGVmcy5oPiB3aGljaCBwcm92aWRlcyB0aGUgc2FtZSBkZWZpbml0aW9ucywgc28gdXNlIHRoYXQKLWluc3RlYWQuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgotLS0tCi0gZ2RiL21pcHMtbGludXgtbmF0LmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nZGIvbWlwcy1saW51eC1uYXQuYyBiL2dkYi9taXBzLWxpbnV4LW5hdC5jCi1pbmRleCBhMzZiYjYzLi5mZDVjNzA1IDEwMDY0NAotLS0tIGEvZ2RiL21pcHMtbGludXgtbmF0LmMKLSsrKyBiL2dkYi9taXBzLWxpbnV4LW5hdC5jCi1AQCAtMzEsNyArMzEsNyBAQAotICNpbmNsdWRlICJnZGJfcHJvY19zZXJ2aWNlLmgiCi0gI2luY2x1ZGUgImdyZWdzZXQuaCIKLSAKLS0jaW5jbHVkZSA8c2dpZGVmcy5oPgotKyNpbmNsdWRlIDxhc20vc2dpZGVmcy5oPgotICNpbmNsdWRlIDxzeXMvcHRyYWNlLmg+Ci0gI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KLSAKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDItQ2hhbmdlLW9yZGVyLW9mLUNGTEFHUy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAyLUNoYW5nZS1vcmRlci1vZi1DRkxBR1MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjY2I0NWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDItQ2hhbmdlLW9yZGVyLW9mLUNGTEFHUy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZyb20gMjYyY2NjNGZkYjJhM2RmMGYxNmM2MWE4MDcwNDY5NjRhZTc3MjljOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDIgTWFyIDIwMTUgMDI6Mjk6MjMgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzNdIENoYW5nZSBvcmRlciBvZiBDRkxBR1MKLQotTGV0cyB1cyBvdmVycmlkZSBXZXJyb3IgaWYgbmVlZCBiZQotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4gfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2RiL2dkYnNlcnZlci9NYWtlZmlsZS5pbiBiL2dkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4KLWluZGV4IDFlZDJlYzguLjBjZWY5NWIgMTAwNjQ0Ci0tLS0gYS9nZGIvZ2Ric2VydmVyL01ha2VmaWxlLmluCi0rKysgYi9nZGIvZ2Ric2VydmVyL01ha2VmaWxlLmluCi1AQCAtMTMxLDEwICsxMzEsMTAgQEAgQ0ZMQUdTID0gQENGTEFHU0AKLSBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKLSAKLSAjIElOVEVSTkFMX0NGTEFHUyBpcyB0aGUgYWdncmVnYXRlIG9mIGFsbCBvdGhlciAqQ0ZMQUdTIG1hY3Jvcy4KLS1JTlRFUk5BTF9DRkxBR1NfQkFTRSA9ICAke0NGTEFHU30gJHtHTE9CQUxfQ0ZMQUdTfSBcCi0rSU5URVJOQUxfQ0ZMQUdTX0JBU0UgPSAke0dMT0JBTF9DRkxBR1N9IFwKLSAJJHtQUk9GSUxFX0NGTEFHU30gJHtJTkNMVURFX0NGTEFHU30gJHtDUFBGTEFHU30KLSBJTlRFUk5BTF9XQVJOX0NGTEFHUyA9ICAke0lOVEVSTkFMX0NGTEFHU19CQVNFfSAkKFdBUk5fQ0ZMQUdTKQotLUlOVEVSTkFMX0NGTEFHUyA9ICAke0lOVEVSTkFMX1dBUk5fQ0ZMQUdTfSAkKFdFUlJPUl9DRkxBR1MpIC1ER0RCU0VSVkVSCi0rSU5URVJOQUxfQ0ZMQUdTID0gICR7SU5URVJOQUxfV0FSTl9DRkxBR1N9ICQoV0VSUk9SX0NGTEFHUykgJHtDRkxBR1N9IC1ER0RCU0VSVkVSCi0gCi0gIyBMREZMQUdTIGlzIHNwZWNpZmljYWxseSByZXNlcnZlZCBmb3Igc2V0dGluZyBmcm9tIHRoZSBjb21tYW5kIGxpbmUKLSAjIHdoZW4gcnVubmluZyBtYWtlLgotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMi1tYWtlLW1hbi1pbnN0YWxsLXJlbGF0aXZlLXRvLURFU1RESVIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMi1tYWtlLW1hbi1pbnN0YWxsLXJlbGF0aXZlLXRvLURFU1RESVIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVmZWQ2MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAyLW1ha2UtbWFuLWluc3RhbGwtcmVsYXRpdmUtdG8tREVTVERJUi5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIDMyMjljYjA5MDMzZWViNTAwM2EwOGQ5MWZhOWQ0M2JlOGJhNGM4NmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAyOjI3OjU1ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMDIvMTBdIG1ha2UgbWFuIGluc3RhbGwgcmVsYXRpdmUgdG8gREVTVERJUgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNpbS9jb21tb24vTWFrZWZpbGUuaW4gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zaW0vY29tbW9uL01ha2VmaWxlLmluIGIvc2ltL2NvbW1vbi9NYWtlZmlsZS5pbgoraW5kZXggYTA1ZjUwNy4uOGQwZmE2NCAxMDA2NDQKKy0tLSBhL3NpbS9jb21tb24vTWFrZWZpbGUuaW4KKysrKyBiL3NpbS9jb21tb24vTWFrZWZpbGUuaW4KK0BAIC0zNSw3ICszNSw3IEBAIHRvb2xkaXIgPSAkKGxpYmRpcikvJCh0YXJnZXRfYWxpYXMpCisgZGF0YXJvb3RkaXIgPSBAZGF0YXJvb3RkaXJACisgZGF0YWRpciA9IEBkYXRhZGlyQAorIG1hbmRpciA9IEBtYW5kaXJACistbWFuMWRpciA9ICQobWFuZGlyKS9tYW4xCisrbWFuMWRpciA9ICQoREVTVERJUikkKG1hbmRpcikvbWFuMQorIGluZm9kaXIgPSBAaW5mb2RpckAKKyBpbmNsdWRlZGlyID0gQGluY2x1ZGVkaXJACisgCistLSAKKzIuOC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAzLUFkZC1zdXBwb3J0LWZvci1SZW5lc2FzLVNILXNoNC1hcmNoaXRlY3R1cmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMy1BZGQtc3VwcG9ydC1mb3ItUmVuZXNhcy1TSC1zaDQtYXJjaGl0ZWN0dXJlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTNlMjJjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAzLUFkZC1zdXBwb3J0LWZvci1SZW5lc2FzLVNILXNoNC1hcmNoaXRlY3R1cmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5MjEgKzAsMCBAQAotRnJvbSA0MDdjYjEzY2ZiNzA2OTdmNDVkZmI3NjEzMDRlMDA1ZTFlY2JkMGU5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMjozMToxMiArMDAwMAotU3ViamVjdDogW1BBVENIIDMvM10gQWRkIHN1cHBvcnQgZm9yIFJlbmVzYXMgU0ggKHNoNCkgYXJjaGl0ZWN0dXJlLgotCi1nZGIgKDcuNC0xfmN2czIwMTExMTE3LjIpIGV4cGVyaW1lbnRhbDsgdXJnZW5jeT1sb3cKLSAuCi0gICAqIEFkZCBSZW5lc2FzIFNIIChzaDQpIHN1cHBvcnQgKENsb3NlczogIzU3NjI0MikKLSAgICAgLSBUaGFua3MgTm9idWhpcm8gSXdhbWF0c3UsIFRha2FzaGkgWW9zaGlpLgotQXV0aG9yOiBIZWN0b3IgT3JvbiA8enVtYmlAZGViaWFuLm9yZz4KLUJ1Zy1EZWJpYW46IGh0dHA6Ly9idWdzLmRlYmlhbi5vcmcvNTc2MjQyCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdkYi9NYWtlZmlsZS5pbiAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCi0gZ2RiL2NvbmZpZ3VyZS5ob3N0ICAgICAgICAgICAgICAgICAgIHwgICAxICsKLSBnZGIvc2gtbGludXgtdGRlcC5jICAgICAgICAgICAgICAgICAgfCA1MTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBnZGIvc2gtdGRlcC5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgNTQgKystLQotIGdkYi9zaC10ZGVwLmggICAgICAgICAgICAgICAgICAgICAgICB8ICA0OSArKysrCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL2FzbS1zb3VyY2UuZXhwIHwgICA1ICsKLSBnZGIvdGVzdHN1aXRlL2dkYi5hc20vc2guaW5jICAgICAgICAgfCAgIDMgKy0KLSBnZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTEuYyAgICAgfCAgIDMgKwotIGdkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMy5jICAgICB8ICAgNCArCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWdhbGwuYyAgICAgIHwgICAzICsKLSBnZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ25hbHMuYyAgICAgfCAgIDQgKwotIDExIGZpbGVzIGNoYW5nZWQsIDYxNyBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2dkYi9NYWtlZmlsZS5pbiBiL2dkYi9NYWtlZmlsZS5pbgotaW5kZXggNzkzNzgwMS4uNjNiYWY4MSAxMDA2NDQKLS0tLSBhL2dkYi9NYWtlZmlsZS5pbgotKysrIGIvZ2RiL01ha2VmaWxlLmluCi1AQCAtMTcwNyw2ICsxNzA3LDcgQEAgQUxMREVQRklMRVMgPSBcCi0gCXNjb3JlLXRkZXAuYyBcCi0gCXNlci1nbzMyLmMgc2VyLXBpcGUuYyBzZXItdGNwLmMgc2VyLW1pbmd3LmMgXAotIAlzaC10ZGVwLmMgc2g2NC10ZGVwLmMgc2huYnNkLXRkZXAuYyBzaG5ic2QtbmF0LmMgXAotKwlzaC1saW51eC10ZGVwLmMgc2gtbGludXgtbmF0LmMgXAotIAlzb2wyLXRkZXAuYyBcCi0gCXNvbGliLXN2cjQuYyBcCi0gCXNwYXJjLWxpbnV4LW5hdC5jIHNwYXJjLWxpbnV4LXRkZXAuYyBcCi1kaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZS5ob3N0IGIvZ2RiL2NvbmZpZ3VyZS5ob3N0Ci1pbmRleCBkMDdiZTRiLi5iNjM5MWM1IDEwMDY0NAotLS0tIGEvZ2RiL2NvbmZpZ3VyZS5ob3N0Ci0rKysgYi9nZGIvY29uZmlndXJlLmhvc3QKLUBAIC0xNTAsNiArMTUwLDcgQEAgcG93ZXJwYyotKi1saW51eCopCWdkYl9ob3N0PWxpbnV4IDs7Ci0gCi0gczM5MCotKi1saW51eCopCQlnZGJfaG9zdD1saW51eCA7OwotIAotK3NoKi0qLWxpbnV4KikJCWdkYl9ob3N0PWxpbnV4IDs7Ci0gc2gqLSotbmV0YnNkZWxmKiB8IHNoKi0qLWtuZXRic2QqLWdudSkKLSAJCQlnZGJfaG9zdD1uYnNkIDs7Ci0gc2gqLSotb3BlbmJzZCopCQlnZGJfaG9zdD1uYnNkIDs7Ci1kaWZmIC0tZ2l0IGEvZ2RiL3NoLWxpbnV4LXRkZXAuYyBiL2dkYi9zaC1saW51eC10ZGVwLmMKLWluZGV4IDJmZjJlZTguLjFhMTEyNjIgMTAwNjQ0Ci0tLS0gYS9nZGIvc2gtbGludXgtdGRlcC5jCi0rKysgYi9nZGIvc2gtbGludXgtdGRlcC5jCi1AQCAtMTgsMTQgKzE4LDM3IEBACi0gICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotIAotICNpbmNsdWRlICJkZWZzLmgiCi0rI2luY2x1ZGUgImdkYmNvcmUuaCIKLSsjaW5jbHVkZSAiZnJhbWUuaCIKLSsjaW5jbHVkZSAiZnJhbWUtYmFzZS5oIgotKyNpbmNsdWRlICJmcmFtZS11bndpbmQuaCIKLSsjaW5jbHVkZSAiZHdhcmYyLWZyYW1lLmgiCi0rI2luY2x1ZGUgInZhbHVlLmgiCi0rI2luY2x1ZGUgInJlZ2NhY2hlLmgiCi0rI2luY2x1ZGUgImluZmVyaW9yLmgiCi0gI2luY2x1ZGUgIm9zYWJpLmgiCi0gCi0rI2luY2x1ZGUgInJlZ2dyb3Vwcy5oIgotKyNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCi0rI2luY2x1ZGUgImZsb2F0Zm9ybWF0LmgiCi0gI2luY2x1ZGUgInNvbGliLXN2cjQuaCIKLSAjaW5jbHVkZSAic3ltdGFiLmgiCi0rI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKLSsjaW5jbHVkZSAiY29tbWFuZC5oIgotKyNpbmNsdWRlICJnZGJfYXNzZXJ0LmgiCi0gCi0gI2luY2x1ZGUgInRyYWQtZnJhbWUuaCIKLSAjaW5jbHVkZSAidHJhbXAtZnJhbWUuaCIKLSAKLSsjaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSsjaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0rI2luY2x1ZGUgPHN5cy91c2VyLmg+Ci0rI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+Ci0rCi0rI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KLSsKLSsjaW5jbHVkZSAicmVnc2V0LmgiCi0gI2luY2x1ZGUgImdsaWJjLXRkZXAuaCIKLSAjaW5jbHVkZSAic2gtdGRlcC5oIgotICNpbmNsdWRlICJsaW51eC10ZGVwLmgiCi1AQCAtMTgwLDkgKzIwMyw1MDUgQEAgc3RhdGljIHN0cnVjdCB0cmFtcF9mcmFtZSBzaF9saW51eF9ydF9zaWdyZXR1cm5fdHJhbXBfZnJhbWUgPSB7Ci0gICBzaF9saW51eF9ydF9zaWdyZXR1cm5faW5pdAotIH07Ci0gCi0rLyogUmVjb2duaXppbmcgc2lnbmFsIGhhbmRsZXIgZnJhbWVzLiAgKi8KLSsKLSsvKiBHTlUvTGludXggaGFzIHR3byBmbGF2b3JzIG9mIHNpZ25hbHMuICBOb3JtYWwgc2lnbmFsIGhhbmRsZXJzLCBhbmQKLSsgICAicmVhbHRpbWUiIChSVCkgc2lnbmFscy4gIFRoZSBSVCBzaWduYWxzIGNhbiBwcm92aWRlIGFkZGl0aW9uYWwKLSsgICBpbmZvcm1hdGlvbiB0byB0aGUgc2lnbmFsIGhhbmRsZXIgaWYgdGhlIFNBX1NJR0lORk8gZmxhZyBpcyBzZXQKLSsgICB3aGVuIGVzdGFibGlzaGluZyBhIHNpZ25hbCBoYW5kbGVyIHVzaW5nIGBzaWdhY3Rpb24nLiAgSXQgaXMgbm90Ci0rICAgdW5saWtlbHkgdGhhdCBmdXR1cmUgdmVyc2lvbnMgb2YgR05VL0xpbnV4IHdpbGwgc3VwcG9ydCBTQV9TSUdJTkZPCi0rICAgZm9yIG5vcm1hbCBzaWduYWxzIHRvby4gICovCi0rCi0rLyogV2hlbiB0aGUgU0ggTGludXgga2VybmVsIGNhbGxzIGEgc2lnbmFsIGhhbmRsZXIgYW5kIHRoZQotKyAgIFNBX1JFU1RPUkVSIGZsYWcgaXNuJ3Qgc2V0LCB0aGUgcmV0dXJuIGFkZHJlc3MgcG9pbnRzIHRvIGEgYml0IG9mCi0rICAgY29kZSBvbiB0aGUgc3RhY2suICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgd2hldGhlciB0aGUgUEMgYXBwZWFycyB0bwotKyAgIGJlIHdpdGhpbiB0aGlzIGJpdCBvZiBjb2RlLgotKwotKyAgIFRoZSBpbnN0cnVjdGlvbiBzZXF1ZW5jZSBmb3Igbm9ybWFsIHNpZ25hbHMgaXMKLSsgICAgICAgbW92LncgIDFmLHIzCi0rICAgICAgIHRyYXBhICAjMTYKLSsgICAgICAgb3IgICAgIHIwLCByMAotKyAgICAgICBvciAgICAgcjAsIHIwCi0rICAgICAgIG9yICAgICByMCwgcjAKLSsgICAgICAgb3IgICAgIHIwLCByMAotKyAgICAgICBvciAgICAgcjAsIHIwCi0rICAgIDE6IC53b3JkICBfX05SX3NpZ3JldHVybgotKyAgIG9yIDB4OTMwNSAweGMzMTAgMHgyMDBiIDB4MjAwYiAweDIwMGIgMHgyMDBiIDB4MjAwYiAweDAwNzcuCi0rCi0rICAgQ2hlY2tpbmcgZm9yIHRoZSBjb2RlIHNlcXVlbmNlIHNob3VsZCBiZSBzb21ld2hhdCByZWxpYWJsZSwgYmVjYXVzZQotKyAgIHRoZSBlZmZlY3QgaXMgdG8gY2FsbCB0aGUgc3lzdGVtIGNhbGwgc2lncmV0dXJuLiAgVGhpcyBpcyB1bmxpa2VseQotKyAgIHRvIG9jY3VyIGFueXdoZXJlIG90aGVyIHRoYW4gYSBzaWduYWwgdHJhbXBvbGluZS4KLSsKLSsgICBJdCBraW5kIG9mIHN1Y2tzIHRoYXQgd2UgaGF2ZSB0byByZWFkIG1lbW9yeSBmcm9tIHRoZSBwcm9jZXNzIGluCi0rICAgb3JkZXIgdG8gaWRlbnRpZnkgYSBzaWduYWwgdHJhbXBvbGluZSwgYnV0IHRoZXJlIGRvZXNuJ3Qgc2VlbSB0byBiZQotKyAgIGFueSBvdGhlciB3YXkuICBUaGUgUENfSU5fU0lHVFJBTVAgbWFjcm8gaW4gdG0tbGludXguaCBhcnJhbmdlcyB0bwotKyAgIG9ubHkgY2FsbCB1cyBpZiBubyBmdW5jdGlvbiBuYW1lIGNvdWxkIGJlIGlkZW50aWZpZWQsIHdoaWNoIHNob3VsZAotKyAgIGJlIHRoZSBjYXNlIHNpbmNlIHRoZSBjb2RlIGlzIG9uIHRoZSBzdGFjay4KLSsKLSsgICBEZXRlY3Rpb24gb2Ygc2lnbmFsIHRyYW1wb2xpbmVzIGZvciBoYW5kbGVycyB0aGF0IHNldCB0aGUKLSsgICBTQV9SRVNUT1JFUiBmbGFnIGlzIGluIGdlbmVyYWwgbm90IHBvc3NpYmxlLiAgVW5mb3J0dW5hdGVseSB0aGlzIGlzCi0rICAgd2hhdCB0aGUgR05VIEMgTGlicmFyeSBoYXMgYmVlbiBkb2luZyBmb3IgcXVpdGUgc29tZSB0aW1lIG5vdy4KLSsgICBIb3dldmVyLCBhcyBvZiB2ZXJzaW9uIDIuMS4yLCB0aGUgR05VIEMgTGlicmFyeSB1c2VzIHNpZ25hbAotKyAgIHRyYW1wb2xpbmVzIChuYW1lZCBfX3Jlc3RvcmUgYW5kIF9fcmVzdG9yZV9ydCkgdGhhdCBhcmUgaWRlbnRpY2FsCi0rICAgdG8gdGhlIG9uZXMgdXNlZCBieSB0aGUga2VybmVsLiAgVGhlcmVmb3JlLCB0aGVzZSB0cmFtcG9saW5lcyBhcmUKLSsgICBzdXBwb3J0ZWQgdG9vLiAgKi8KLSsKLSsjZGVmaW5lIE1PVlcobikJICgweDkzMDB8KChuKS0yKSkJLyogTW92ZSBtZW0gd29yZCBhdCBQQytuIHRvIFIzICovCi0rI2RlZmluZSBUUkFQMTYJIDB4YzMxMAkJCS8qIFN5c2NhbGwgdy9ubyBhcmdzIChOUiBpbiBSMykgKi8KLSsjZGVmaW5lIE9SX1IwX1IwIDB4MjAwYgkJCS8qIG9yIHIwLHIwIChpbnNlcnQgdG8gYXZvaWQgaGFyZHdhcmUgYnVnKSAqLwotKwotKyNkZWZpbmUgTElOVVhfU0lHVFJBTVBfSU5TTjAJTU9WVyg3KQkJLyogTW92ZSBtZW0gd29yZCBhdCBQQys3IHRvIFIzICovCi0rI2RlZmluZSBMSU5VWF9TSUdUUkFNUF9JTlNOMQlUUkFQMTYJCS8qIFN5c2NhbGwgdy9ubyBhcmdzIChOUiBpbiBSMykgKi8KLSsjZGVmaW5lIExJTlVYX1NJR1RSQU1QX0lOU04yCU9SX1IwX1IwCS8qIG9yIHIwLHIwIChpbnNlcnQgdG8gYXZvaWQgaGFyZHdhcmUgYnVnKSAqLwotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBsaW51eF9zaWd0cmFtcF9jb2RlW10gPQotK3sKLSsgIExJTlVYX1NJR1RSQU1QX0lOU04wLAotKyAgTElOVVhfU0lHVFJBTVBfSU5TTjEsCi0rICBMSU5VWF9TSUdUUkFNUF9JTlNOMiwKLSsgIExJTlVYX1NJR1RSQU1QX0lOU04yLAotKyAgTElOVVhfU0lHVFJBTVBfSU5TTjIsCi0rICBMSU5VWF9TSUdUUkFNUF9JTlNOMiwKLSsgIExJTlVYX1NJR1RSQU1QX0lOU04yLAotKyAgX19OUl9zaWdyZXR1cm4KLSt9OwotKwotKyNkZWZpbmUgTElOVVhfU0lHVFJBTVBfTEVOIChzaXplb2YgbGludXhfc2lndHJhbXBfY29kZSkKLSsKLSsvKiBJZiBQQyBpcyBpbiBhIHNpZ3RyYW1wIHJvdXRpbmUsIHJldHVybiB0aGUgYWRkcmVzcyBvZiB0aGUgc3RhcnQgb2YKLSsgICB0aGUgcm91dGluZS4gIE90aGVyd2lzZSwgcmV0dXJuIDAuICAqLwotKwotK3N0YXRpYyBDT1JFX0FERFIKLStzaF9saW51eF9zaWd0cmFtcF9zdGFydCAoc3RydWN0IGZyYW1lX2luZm8gKm5leHRfZnJhbWUpCi0rewotKyAgQ09SRV9BRERSIHBjID0gZ2V0X2ZyYW1lX3BjIChuZXh0X2ZyYW1lKTsKLSsgIGdkYl9ieXRlIGJ1ZltMSU5VWF9TSUdUUkFNUF9MRU5dOwotKwotKyAgLyogV2Ugb25seSByZWNvZ25pemUgYSBzaWduYWwgdHJhbXBvbGluZSBpZiBQQyBpcyBhdCB0aGUgc3RhcnQgb2YKLSsgICAgIG9uZSBvZiB0aGUgdGhyZWUgaW5zdHJ1Y3Rpb25zLiAgV2Ugb3B0aW1pemUgZm9yIGZpbmRpbmcgdGhlIFBDIGF0Ci0rICAgICB0aGUgc3RhcnQsIGFzIHdpbGwgYmUgdGhlIGNhc2Ugd2hlbiB0aGUgdHJhbXBvbGluZSBpcyBub3QgdGhlCi0rICAgICBmaXJzdCBmcmFtZSBvbiB0aGUgc3RhY2suICBXZSBhc3N1bWUgdGhhdCBpbiB0aGUgY2FzZSB3aGVyZSB0aGUKLSsgICAgIFBDIGlzIG5vdCBhdCB0aGUgc3RhcnQgb2YgdGhlIGluc3RydWN0aW9uIHNlcXVlbmNlLCB0aGVyZSB3aWxsIGJlCi0rICAgICBhIGZldyB0cmFpbGluZyByZWFkYWJsZSBieXRlcyBvbiB0aGUgc3RhY2suICAqLwotKwotKyAgaWYgKCFzYWZlX2ZyYW1lX3Vud2luZF9tZW1vcnkgKG5leHRfZnJhbWUsIHBjLCBidWYsIExJTlVYX1NJR1RSQU1QX0xFTikpCi0rICAgIHJldHVybiAwOwotKwotKyAgaWYgKGJ1ZlswXSAhPSBMSU5VWF9TSUdUUkFNUF9JTlNOMCkKLSsgICAgewotKyAgICAgIGlmIChidWZbMF0gIT0gTElOVVhfU0lHVFJBTVBfSU5TTjEpCi0rICAgICAgICByZXR1cm4gMDsKLSsKLSsgICAgICBwYyAtPSAyOwotKwotKyAgICAgIGlmICghc2FmZV9mcmFtZV91bndpbmRfbWVtb3J5IChuZXh0X2ZyYW1lLCBwYywgYnVmLCBMSU5VWF9TSUdUUkFNUF9MRU4pKQotKwlyZXR1cm4gMDsKLSsgICAgfQotKwotKyAgaWYgKG1lbWNtcCAoYnVmLCBsaW51eF9zaWd0cmFtcF9jb2RlLCBMSU5VWF9TSUdUUkFNUF9MRU4pICE9IDApCi0rICAgIHJldHVybiAwOwotKwotKyAgcmV0dXJuIHBjOwotK30KLSsKLSsvKiBUaGlzIGZ1bmN0aW9uIGRvZXMgdGhlIHNhbWUgZm9yIFJUIHNpZ25hbHMuICBIZXJlIHRoZSBpbnN0cnVjdGlvbgotKyAgIHNlcXVlbmNlIGlzCi0rICAgICAgIG1vdi53ICAxZixyMwotKyAgICAgICB0cmFwYSAgIzE2Ci0rICAgICAgIG9yICAgICByMCwgcjAKLSsgICAgICAgb3IgICAgIHIwLCByMAotKyAgICAgICBvciAgICAgcjAsIHIwCi0rICAgICAgIG9yICAgICByMCwgcjAKLSsgICAgICAgb3IgICAgIHIwLCByMAotKyAgICAxOiAud29yZCAgX19OUl9ydF9zaWdyZXR1cm4KLSsgICBvciAweDkzMDUgMHhjMzEwIDB4MjAwYiAweDIwMGIgMHgyMDBiIDB4MjAwYiAweDIwMGIgMHgwMGFkLgotKwotKyAgIFRoZSBlZmZlY3QgaXMgdG8gY2FsbCB0aGUgc3lzdGVtIGNhbGwgcnRfc2lncmV0dXJuLiAgKi8KLSsKLSsjZGVmaW5lIExJTlVYX1JUX1NJR1RSQU1QX0lOU04wCQlNT1ZXKDcpCQkvKiBNb3ZlIG1lbSB3b3JkIGF0IFBDKzcgdG8gUjMgKi8KLSsjZGVmaW5lIExJTlVYX1JUX1NJR1RSQU1QX0lOU04xCQlUUkFQMTYJCS8qIFN5c2NhbGwgdy9ubyBhcmdzIChOUiBpbiBSMykgKi8KLSsjZGVmaW5lIExJTlVYX1JUX1NJR1RSQU1QX0lOU04yCQlPUl9SMF9SMAkvKiBvciByMCxyMCAoaW5zZXJ0IHRvIGF2b2lkIGhhcmR3YXJlIGJ1ZykgKi8KLSsKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgbGludXhfcnRfc2lndHJhbXBfY29kZVtdID0KLSt7Ci0rICBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMCwKLSsgIExJTlVYX1JUX1NJR1RSQU1QX0lOU04xLAotKyAgTElOVVhfUlRfU0lHVFJBTVBfSU5TTjIsCi0rICBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMiwKLSsgIExJTlVYX1JUX1NJR1RSQU1QX0lOU04yLAotKyAgTElOVVhfUlRfU0lHVFJBTVBfSU5TTjIsCi0rICBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMiwKLSsgIF9fTlJfcnRfc2lncmV0dXJuCi0rfTsKLSsKLSsjZGVmaW5lIExJTlVYX1JUX1NJR1RSQU1QX0xFTiAoc2l6ZW9mIGxpbnV4X3J0X3NpZ3RyYW1wX2NvZGUpCi0rCi0rLyogSWYgUEMgaXMgaW4gYSBSVCBzaWd0cmFtcCByb3V0aW5lLCByZXR1cm4gdGhlIGFkZHJlc3Mgb2YgdGhlIHN0YXJ0Ci0rICAgb2YgdGhlIHJvdXRpbmUuICBPdGhlcndpc2UsIHJldHVybiAwLiAgKi8KLSsKLStzdGF0aWMgQ09SRV9BRERSCi0rc2hfbGludXhfcnRfc2lndHJhbXBfc3RhcnQgKHN0cnVjdCBmcmFtZV9pbmZvICpuZXh0X2ZyYW1lKQotK3sKLSsgIENPUkVfQUREUiBwYyA9IGdldF9mcmFtZV9wYyAobmV4dF9mcmFtZSk7Ci0rICBnZGJfYnl0ZSBidWZbTElOVVhfUlRfU0lHVFJBTVBfTEVOXTsKLSsKLSsgIC8qIFdlIG9ubHkgcmVjb2duaXplIGEgc2lnbmFsIHRyYW1wb2xpbmUgaWYgUEMgaXMgYXQgdGhlIHN0YXJ0IG9mCi0rICAgICBvbmUgb2YgdGhlIHR3byBpbnN0cnVjdGlvbnMuICBXZSBvcHRpbWl6ZSBmb3IgZmluZGluZyB0aGUgUEMgYXQKLSsgICAgIHRoZSBzdGFydCwgYXMgd2lsbCBiZSB0aGUgY2FzZSB3aGVuIHRoZSB0cmFtcG9saW5lIGlzIG5vdCB0aGUKLSsgICAgIGZpcnN0IGZyYW1lIG9uIHRoZSBzdGFjay4gIFdlIGFzc3VtZSB0aGF0IGluIHRoZSBjYXNlIHdoZXJlIHRoZQotKyAgICAgUEMgaXMgbm90IGF0IHRoZSBzdGFydCBvZiB0aGUgaW5zdHJ1Y3Rpb24gc2VxdWVuY2UsIHRoZXJlIHdpbGwgYmUKLSsgICAgIGEgZmV3IHRyYWlsaW5nIHJlYWRhYmxlIGJ5dGVzIG9uIHRoZSBzdGFjay4gICovCi0rCi0rICBpZiAoIXNhZmVfZnJhbWVfdW53aW5kX21lbW9yeSAobmV4dF9mcmFtZSwgcGMsIGJ1ZiwgTElOVVhfUlRfU0lHVFJBTVBfTEVOKSkKLSsgICAgcmV0dXJuIDA7Ci0rCi0rICBpZiAoYnVmWzBdICE9IExJTlVYX1JUX1NJR1RSQU1QX0lOU04wKQotKyAgICB7Ci0rICAgICAgaWYgKGJ1ZlswXSAhPSBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMSkKLSsJcmV0dXJuIDA7Ci0rCi0rICAgICAgcGMgLT0gMjsKLSsKLSsgICAgICBpZiAoIXNhZmVfZnJhbWVfdW53aW5kX21lbW9yeSAobmV4dF9mcmFtZSwgcGMsIGJ1ZiwKLSsJCQkJICAgICBMSU5VWF9SVF9TSUdUUkFNUF9MRU4pKQotKwlyZXR1cm4gMDsKLSsgICAgfQotKwotKyAgaWYgKG1lbWNtcCAoYnVmLCBsaW51eF9ydF9zaWd0cmFtcF9jb2RlLCBMSU5VWF9SVF9TSUdUUkFNUF9MRU4pICE9IDApCi0rICAgIHJldHVybiAwOwotKwotKyAgcmV0dXJuIHBjOwotK30KLSsKLSsvKiBSZXR1cm4gd2hldGhlciBQQyBpcyBpbiBhIEdOVS9MaW51eCBzaWd0cmFtcCByb3V0aW5lLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0rc2hfbGludXhfc2lndHJhbXBfcCAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUpCi0rewotKyAgQ09SRV9BRERSIHBjID0gZ2V0X2ZyYW1lX3BjICh0aGlzX2ZyYW1lKTsKLSsgIGNoYXIgKm5hbWU7Ci0rCi0rICBmaW5kX3BjX3BhcnRpYWxfZnVuY3Rpb24gKHBjLCAmbmFtZSwgTlVMTCwgTlVMTCk7Ci0rCi0rICAvKiBJZiB3ZSBoYXZlIE5BTUUsIHdlIGNhbiBvcHRpbWl6ZSB0aGUgc2VhcmNoLiAgVGhlIHRyYW1wb2xpbmVzIGFyZQotKyAgICAgbmFtZWQgX19yZXN0b3JlIGFuZCBfX3Jlc3RvcmVfcnQuICBIb3dldmVyLCB0aGV5IGFyZW4ndCBkeW5hbWljYWxseQotKyAgICAgZXhwb3J0ZWQgZnJvbSB0aGUgc2hhcmVkIEMgbGlicmFyeSwgc28gdGhlIHRyYW1wb2xpbmUgbWF5IGFwcGVhciB0bwotKyAgICAgYmUgcGFydCBvZiB0aGUgcHJlY2VkaW5nIGZ1bmN0aW9uLiAgVGhpcyBzaG91bGQgYWx3YXlzIGJlIHNpZ2FjdGlvbiwKLSsgICAgIF9fc2lnYWN0aW9uLCBvciBfX2xpYmNfc2lnYWN0aW9uIChhbGwgYWxpYXNlcyB0byB0aGUgc2FtZSBmdW5jdGlvbikuICAqLwotKyAgaWYgKG5hbWUgPT0gTlVMTCB8fCBzdHJzdHIgKG5hbWUsICJzaWdhY3Rpb24iKSAhPSBOVUxMKQotKyAgICByZXR1cm4gKHNoX2xpbnV4X3NpZ3RyYW1wX3N0YXJ0ICh0aGlzX2ZyYW1lKSAhPSAwCi0rCSAgICB8fCBzaF9saW51eF9ydF9zaWd0cmFtcF9zdGFydCAodGhpc19mcmFtZSkgIT0gMCk7Ci0rCi0rICByZXR1cm4gKHN0cmNtcCAoIl9fcmVzdG9yZSIsIG5hbWUpID09IDAKLSsJICB8fCBzdHJjbXAgKCJfX3Jlc3RvcmVfcnQiLCBuYW1lKSA9PSAwKTsKLSt9Ci0rCi0rLyogT2Zmc2V0IHRvIHN0cnVjdCBzaWdjb250ZXh0IGluIHVjb250ZXh0LCBmcm9tIDxhc20vdWNvbnRleHQuaD4uICAqLwotKyNkZWZpbmUgU0hfTElOVVhfVUNPTlRFWFRfU0lHQ09OVEVYVF9PRkZTRVQgMTIKLSsKLSsKLSsvKiBBc3N1bWluZyBORVhUX0ZSQU1FIGlzIGEgZnJhbWUgZm9sbG93aW5nIGEgR05VL0xpbnV4IHNpZ3RyYW1wCi0rICAgcm91dGluZSwgcmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBhc3NvY2lhdGVkIHNpZ2NvbnRleHQgc3RydWN0dXJlLiAgKi8KLSsKLStzdGF0aWMgQ09SRV9BRERSCi0rc2hfbGludXhfc2lnY29udGV4dF9hZGRyIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSkKLSt7Ci0rICBDT1JFX0FERFIgcGM7Ci0rICBDT1JFX0FERFIgc3A7Ci0rCi0rICBzcCA9IGdldF9mcmFtZV9yZWdpc3Rlcl91bnNpZ25lZCAodGhpc19mcmFtZSwgU1BfUkVHTlVNKTsKLSsKLSsgIHBjID0gc2hfbGludXhfc2lndHJhbXBfc3RhcnQgKHRoaXNfZnJhbWUpOwotKyAgaWYgKHBjKQotKyAgICB7Ci0rICAgICAgcmV0dXJuIHNwOwotKyAgICB9Ci0rCi0rICBwYyA9IHNoX2xpbnV4X3J0X3NpZ3RyYW1wX3N0YXJ0ICh0aGlzX2ZyYW1lKTsKLSsgIGlmIChwYykKLSsgICAgewotKyAgICAgIENPUkVfQUREUiB1Y29udGV4dF9hZGRyOwotKwotKyAgICAgIC8qIFRoZSBzaWdjb250ZXh0IHN0cnVjdHVyZSBpcyBwYXJ0IG9mIHRoZSB1c2VyIGNvbnRleHQuICBBCi0rCSBwb2ludGVyIHRvIHRoZSB1c2VyIGNvbnRleHQgaXMgcGFzc2VkIGFzIHRoZSB0aGlyZCBhcmd1bWVudAotKwkgdG8gdGhlIHNpZ25hbCBoYW5kbGVyLiAgKi8KLSsgICAgICB1Y29udGV4dF9hZGRyID0gZ2V0X2ZyYW1lX3JlZ2lzdGVyX3Vuc2lnbmVkICh0aGlzX2ZyYW1lLCBBUkcwX1JFR05VTSsyKTsKLSsgICAgICByZXR1cm4gdWNvbnRleHRfYWRkciArIFNIX0xJTlVYX1VDT05URVhUX1NJR0NPTlRFWFRfT0ZGU0VUOwotKyAgICB9Ci0rCi0rICBlcnJvciAoIkNvdWxkbid0IHJlY29nbml6ZSBzaWduYWwgdHJhbXBvbGluZS4iKTsKLSsgIHJldHVybiAwOwotK30KLSsKLSsvKiBTaWduYWwgdHJhbXBvbGluZXMuICAqLwotK2V4dGVybiBzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKnNoX2FsbG9jX2ZyYW1lX2NhY2hlICh2b2lkKTsKLSsKLStzdGF0aWMgc3RydWN0IHNoX2ZyYW1lX2NhY2hlICoKLStzaF9saW51eF9zaWd0cmFtcF9mcmFtZV9jYWNoZSAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsIHZvaWQgKip0aGlzX2NhY2hlKQotK3sKLSsgIHN0cnVjdCBzaF9mcmFtZV9jYWNoZSAqY2FjaGU7Ci0rICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChnZXRfY3VycmVudF9hcmNoICgpKTsKLSsgIENPUkVfQUREUiBzaWdjb250ZXh0X2FkZHI7Ci0rCi0rICBpZiAoKnRoaXNfY2FjaGUpCi0rICAgIHJldHVybiAqdGhpc19jYWNoZTsKLSsKLSsgIGNhY2hlID0gc2hfYWxsb2NfZnJhbWVfY2FjaGUgKCk7Ci0rCi0rICBjYWNoZS0+YmFzZSA9IGdldF9mcmFtZV9yZWdpc3Rlcl91bnNpZ25lZCAodGhpc19mcmFtZSwgU1BfUkVHTlVNKTsKLSsgIHNpZ2NvbnRleHRfYWRkciA9IHRkZXAtPnNpZ2NvbnRleHRfYWRkciAodGhpc19mcmFtZSk7Ci0rICBpZiAodGRlcC0+c2NfcmVnX29mZnNldCkKLSsgICAgewotKyAgICAgIGludCBpOwotKwotKyAgICAgIGdkYl9hc3NlcnQgKHRkZXAtPnNjX251bV9yZWdzIDw9IFNIX05VTV9SRUdTKTsKLSsKLSsgICAgICBmb3IgKGkgPSAwOyBpIDwgdGRlcC0+c2NfbnVtX3JlZ3M7IGkrKykKLSsJaWYgKHRkZXAtPnNjX3JlZ19vZmZzZXRbaV0gIT0gLTEpCi0rCSAgY2FjaGUtPnNhdmVkX3JlZ3NbaV0gPSBzaWdjb250ZXh0X2FkZHIgKyB0ZGVwLT5zY19yZWdfb2Zmc2V0W2ldOwotKyAgICB9Ci0rCi0rICAqdGhpc19jYWNoZSA9IGNhY2hlOwotKyAgcmV0dXJuIGNhY2hlOwotK30KLSsKLStzdGF0aWMgdm9pZAotK3NoX2xpbnV4X3NpZ3RyYW1wX2ZyYW1lX3RoaXNfaWQgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLCB2b2lkICoqdGhpc19jYWNoZSwKLSsJCQkgICAgIHN0cnVjdCBmcmFtZV9pZCAqdGhpc19pZCkKLSt7Ci0rICBzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKmNhY2hlID0KLSsgICAgc2hfbGludXhfc2lndHJhbXBfZnJhbWVfY2FjaGUgKHRoaXNfZnJhbWUsIHRoaXNfY2FjaGUpOwotKwotKyAgKCp0aGlzX2lkKSA9IGZyYW1lX2lkX2J1aWxkIChjYWNoZS0+YmFzZSArIDY0LCBjYWNoZS0+cGMpOwotK30KLSsKLStleHRlcm4gc3RydWN0IHZhbHVlICogc2hfZnJhbWVfcHJldl9yZWdpc3RlciAoKTsKLStzdGF0aWMgc3RydWN0IHZhbHVlICoKLStzaF9saW51eF9zaWd0cmFtcF9mcmFtZV9wcmV2X3JlZ2lzdGVyIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwKLSsgICAgICAgICAgICAgICAgICAgdm9pZCAqKnRoaXNfY2FjaGUsIGludCByZWdudW0pCi0rewotKyAgc2hfbGludXhfc2lndHJhbXBfZnJhbWVfY2FjaGUgKHRoaXNfZnJhbWUsIHRoaXNfY2FjaGUpOwotKwotKyAgcmV0dXJuIHNoX2ZyYW1lX3ByZXZfcmVnaXN0ZXIgKHRoaXNfZnJhbWUsIHRoaXNfY2FjaGUsIHJlZ251bSk7Ci0rfQotKwotK3N0YXRpYyBpbnQKLStzaF9saW51eF9zaWd0cmFtcF9mcmFtZV9zbmlmZmVyIChjb25zdCBzdHJ1Y3QgZnJhbWVfdW53aW5kICpzZWxmLAotKyAgICAgICAgICAgICAgICAgc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsCi0rICAgICAgICAgICAgICAgICB2b2lkICoqdGhpc19wcm9sb2d1ZV9jYWNoZSkKLSt7Ci0rICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChnZXRfZnJhbWVfYXJjaCAodGhpc19mcmFtZSkpOwotKwotKyAgLyogV2Ugc2hvdWxkbid0IGV2ZW4gYm90aGVyIGlmIHdlIGRvbid0IGhhdmUgYSBzaWdjb250ZXh0X2FkZHIKLSsgICAgIGhhbmRsZXIuICAqLwotKyAgaWYgKHRkZXAtPnNpZ2NvbnRleHRfYWRkciA9PSBOVUxMKQotKyAgICByZXR1cm4gMDsKLSsKLSsgIGlmICh0ZGVwLT5zaWd0cmFtcF9wICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICBpZiAodGRlcC0+c2lndHJhbXBfcCAodGhpc19mcmFtZSkpCi0rICAgIHJldHVybiAxOwotKyAgICB9Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci0rCi0rc3RhdGljIGNvbnN0IHN0cnVjdCBmcmFtZV91bndpbmQgc2hfbGludXhfc2lndHJhbXBfZnJhbWVfdW53aW5kID0KLSt7Ci0rICBTSUdUUkFNUF9GUkFNRSwKLSsgIHNoX2xpbnV4X3NpZ3RyYW1wX2ZyYW1lX3RoaXNfaWQsCi0rICBzaF9saW51eF9zaWd0cmFtcF9mcmFtZV9wcmV2X3JlZ2lzdGVyLAotKyAgTlVMTCwKLSsgIHNoX2xpbnV4X3NpZ3RyYW1wX2ZyYW1lX3NuaWZmZXIKLSt9OwotKwotKy8qIFN1cHBseSByZWdpc3RlciBSRUdOVU0gZnJvbSB0aGUgYnVmZmVyIHNwZWNpZmllZCBieSBHUkVHUyBhbmQgTEVOCi0rICAgaW4gdGhlIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlciBzZXQgUkVHU0VUIHRvIHJlZ2lzdGVyIGNhY2hlCi0rICAgUkVHQ0FDSEUuICBJZiBSRUdOVU0gaXMgLTEsIGRvIHRoaXMgZm9yIGFsbCByZWdpc3RlcnMgaW4gUkVHU0VULiAgKi8KLSsKLSt2b2lkCi0rc2hfc3VwcGx5X2dyZWdzZXQgKGNvbnN0IHN0cnVjdCByZWdzZXQgKnJlZ3NldCwgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKLSsgICAgICAgICAgICAgaW50IHJlZ251bSwgY29uc3Qgdm9pZCAqZ3JlZ3MsIHNpemVfdCBsZW4pCi0rewotKyAgY29uc3Qgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAocmVnc2V0LT5hcmNoKTsKLSsgIGNvbnN0IGNoYXIgKnJlZ3MgPSBncmVnczsKLSsgIGludCBpOwotKwotKyAgZ2RiX2Fzc2VydCAobGVuID09IHRkZXAtPnNpemVvZl9ncmVnc2V0KTsKLSsKLSsgIGZvciAoaSA9IDA7IGkgPCB0ZGVwLT5ncmVnc2V0X251bV9yZWdzOyBpKyspCi0rICAgIHsKLSsgICAgICBpZiAoKHJlZ251bSA9PSBpIHx8IHJlZ251bSA9PSAtMSkKLSsgICAgICAmJiB0ZGVwLT5ncmVnc2V0X3JlZ19vZmZzZXRbaV0gIT0gLTEpCi0rICAgIHJlZ2NhY2hlX3Jhd19zdXBwbHkgKHJlZ2NhY2hlLCBpLCByZWdzICsgdGRlcC0+Z3JlZ3NldF9yZWdfb2Zmc2V0W2ldKTsKLSsgICAgfQotK30KLSsKLSsvKiBDb2xsZWN0IHJlZ2lzdGVyIFJFR05VTSBmcm9tIHRoZSByZWdpc3RlciBjYWNoZSBSRUdDQUNIRSBhbmQgc3RvcmUKLSsgICBpdCBpbiB0aGUgYnVmZmVyIHNwZWNpZmllZCBieSBHUkVHUyBhbmQgTEVOIGFzIGRlc2NyaWJlZCBieSB0aGUKLSsgICBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXIgc2V0IFJFR1NFVC4gIElmIFJFR05VTSBpcyAtMSwgZG8gdGhpcyBmb3IKLSsgICBhbGwgcmVnaXN0ZXJzIGluIFJFR1NFVC4gICovCi0rCi0rdm9pZAotK3NoX2NvbGxlY3RfZ3JlZ3NldCAoY29uc3Qgc3RydWN0IHJlZ3NldCAqcmVnc2V0LAotKyAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKLSsgICAgICAgICAgICAgIGludCByZWdudW0sIHZvaWQgKmdyZWdzLCBzaXplX3QgbGVuKQotK3sKLSsgIGNvbnN0IHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKHJlZ3NldC0+YXJjaCk7Ci0rICBjaGFyICpyZWdzID0gZ3JlZ3M7Ci0rICBpbnQgaTsKLSsKLSsgIGdkYl9hc3NlcnQgKGxlbiA9PSB0ZGVwLT5zaXplb2ZfZ3JlZ3NldCk7Ci0rCi0rICBmb3IgKGkgPSAwOyBpIDwgdGRlcC0+Z3JlZ3NldF9udW1fcmVnczsgaSsrKQotKyAgICB7Ci0rICAgICAgaWYgKChyZWdudW0gPT0gaSB8fCByZWdudW0gPT0gLTEpCi0rICAgICAgJiYgdGRlcC0+Z3JlZ3NldF9yZWdfb2Zmc2V0W2ldICE9IC0xKQotKyAgICByZWdjYWNoZV9yYXdfY29sbGVjdCAocmVnY2FjaGUsIGksIHJlZ3MgKyB0ZGVwLT5ncmVnc2V0X3JlZ19vZmZzZXRbaV0pOwotKyAgICB9Ci0rfQotKwotKy8qIFN1cHBseSByZWdpc3RlciBSRUdOVU0gZnJvbSB0aGUgYnVmZmVyIHNwZWNpZmllZCBieSBGUFJFR1MgYW5kIExFTgotKyAgIGluIHRoZSBmbG9hdGluZy1wb2ludCByZWdpc3RlciBzZXQgUkVHU0VUIHRvIHJlZ2lzdGVyIGNhY2hlCi0rICAgUkVHQ0FDSEUuICBJZiBSRUdOVU0gaXMgLTEsIGRvIHRoaXMgZm9yIGFsbCByZWdpc3RlcnMgaW4gUkVHU0VULiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3NoX3N1cHBseV9mcHJlZ3NldCAoY29uc3Qgc3RydWN0IHJlZ3NldCAqcmVnc2V0LCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAotKyAgICAgICAgICAgICAgaW50IHJlZ251bSwgY29uc3Qgdm9pZCAqZnByZWdzLCBzaXplX3QgbGVuKQotK3sKLSsgIGNvbnN0IHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKHJlZ3NldC0+YXJjaCk7Ci0rICBjb25zdCBjaGFyICpyZWdzID0gZnByZWdzOwotKyAgaW50IGk7Ci0rCi0rICBnZGJfYXNzZXJ0IChsZW4gPT0gdGRlcC0+c2l6ZW9mX2ZwcmVnc2V0KTsKLSsgIGZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKQotKyAgICB7Ci0rICAgICAgaWYgKHJlZ251bSA9PSBpKzI1IHx8IHJlZ251bSA9PSAtMSkKLSsgICAgcmVnY2FjaGVfcmF3X3N1cHBseSAocmVnY2FjaGUsIGkrMjUsIHJlZ3MgKyBpKjQpOwotKyAgICB9Ci0rICBpZiAocmVnbnVtID09IEZQU0NSX1JFR05VTSB8fCByZWdudW0gPT0gLTEpCi0rICAgIHJlZ2NhY2hlX3Jhd19zdXBwbHkgKHJlZ2NhY2hlLCBGUFNDUl9SRUdOVU0sIHJlZ3MgKyAzMio0KTsKLSsgIGlmIChyZWdudW0gPT0gRlBVTF9SRUdOVU0gfHwgcmVnbnVtID09IC0xKQotKyAgICByZWdjYWNoZV9yYXdfc3VwcGx5IChyZWdjYWNoZSwgRlBVTF9SRUdOVU0sIHJlZ3MgKyAzMyo0KTsKLSt9Ci0rCi0rLyogQ29sbGVjdCByZWdpc3RlciBSRUdOVU0gZnJvbSB0aGUgcmVnaXN0ZXIgY2FjaGUgUkVHQ0FDSEUgYW5kIHN0b3JlCi0rICAgaXQgaW4gdGhlIGJ1ZmZlciBzcGVjaWZpZWQgYnkgRlBSRUdTIGFuZCBMRU4gYXMgZGVzY3JpYmVkIGJ5IHRoZQotKyAgIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVyIHNldCBSRUdTRVQuICBJZiBSRUdOVU0gaXMgLTEsIGRvIHRoaXMgZm9yCi0rICAgYWxsIHJlZ2lzdGVycyBpbiBSRUdTRVQuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2hfY29sbGVjdF9mcHJlZ3NldCAoY29uc3Qgc3RydWN0IHJlZ3NldCAqcmVnc2V0LAotKyAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCi0rICAgICAgICAgICAgICAgaW50IHJlZ251bSwgdm9pZCAqZnByZWdzLCBzaXplX3QgbGVuKQotK3sKLSsgIGNvbnN0IHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKHJlZ3NldC0+YXJjaCk7Ci0rICBjaGFyICpyZWdzID0gZnByZWdzOwotKyAgaW50IGk7Ci0rCi0rICBnZGJfYXNzZXJ0IChsZW4gPT0gdGRlcC0+c2l6ZW9mX2ZwcmVnc2V0KTsKLSsgIGZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKQotKyAgICB7Ci0rICAgICAgaWYgKHJlZ251bSA9PSBpKzI1IHx8IHJlZ251bSA9PSAtMSkKLSsgICAgcmVnY2FjaGVfcmF3X2NvbGxlY3QgKHJlZ2NhY2hlLCBpKzI1LCByZWdzICsgaSo0KTsKLSsgICAgfQotKyAgaWYgKHJlZ251bSA9PSBGUFNDUl9SRUdOVU0gfHwgcmVnbnVtID09IC0xKQotKyAgICByZWdjYWNoZV9yYXdfY29sbGVjdCAocmVnY2FjaGUsIEZQU0NSX1JFR05VTSwgcmVncyArIDMyKjQpOwotKyAgaWYgKHJlZ251bSA9PSBGUFVMX1JFR05VTSB8fCByZWdudW0gPT0gLTEpCi0rICAgIHJlZ2NhY2hlX3Jhd19jb2xsZWN0IChyZWdjYWNoZSwgRlBVTF9SRUdOVU0sIHJlZ3MgKyAzMyo0KTsKLSt9Ci0rCi0rLyogUmV0dXJuIHRoZSBhcHByb3ByaWF0ZSByZWdpc3RlciBzZXQgZm9yIHRoZSBjb3JlIHNlY3Rpb24gaWRlbnRpZmllZAotKyAgIGJ5IFNFQ1RfTkFNRSBhbmQgU0VDVF9TSVpFLiAgKi8KLSsKLStjb25zdCBzdHJ1Y3QgcmVnc2V0ICoKLStzaF9saW51eF9yZWdzZXRfZnJvbV9jb3JlX3NlY3Rpb24gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotKyAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzZWN0X25hbWUsIHNpemVfdCBzZWN0X3NpemUpCi0rewotKyAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCk7Ci0rCi0rICBpZiAoc3RyY21wIChzZWN0X25hbWUsICIucmVnIikgPT0gMCAmJiBzZWN0X3NpemUgPT0gdGRlcC0+c2l6ZW9mX2dyZWdzZXQpCi0rICAgIHsKLSsgICAgICBpZiAodGRlcC0+Z3JlZ3NldCA9PSBOVUxMKQotKyAgICB0ZGVwLT5ncmVnc2V0ID0gcmVnc2V0X2FsbG9jIChnZGJhcmNoLCBzaF9zdXBwbHlfZ3JlZ3NldCwKLSsgICAgICAgICAgICAgICAgICAgICAgc2hfY29sbGVjdF9ncmVnc2V0KTsKLSsgICAgICByZXR1cm4gdGRlcC0+Z3JlZ3NldDsKLSsgICAgfQotKwotKyAgaWYgKChzdHJjbXAgKHNlY3RfbmFtZSwgIi5yZWcyIikgPT0gMCAmJiBzZWN0X3NpemUgPT0gdGRlcC0+c2l6ZW9mX2ZwcmVnc2V0KSkKLSsgICAgewotKyAgICAgIGlmICh0ZGVwLT5mcHJlZ3NldCA9PSBOVUxMKQotKyAgICB0ZGVwLT5mcHJlZ3NldCA9IHJlZ3NldF9hbGxvYyAoZ2RiYXJjaCwgc2hfc3VwcGx5X2ZwcmVnc2V0LAotKyAgICAgICAgICAgICAgICAgICAgICAgc2hfY29sbGVjdF9mcHJlZ3NldCk7Ci0rICAgICAgcmV0dXJuIHRkZXAtPmZwcmVnc2V0OwotKyAgICB9Ci0rCi0rICByZXR1cm4gTlVMTDsKLSt9Ci0rCi0rLyogVGhlIHJlZ2lzdGVyIHNldHMgdXNlZCBpbiBHTlUvTGludXggRUxGIGNvcmUtZHVtcHMgYXJlIGlkZW50aWNhbCB0bwotKyAgIHRoZSByZWdpc3RlciBzZXRzIGluIGBzdHJ1Y3QgdXNlcicgdGhhdCBhcmUgdXNlZCBmb3IgYS5vdXQKLSsgICBjb3JlLWR1bXBzLiAgVGhlc2UgYXJlIGFsc28gdXNlZCBieSBwdHJhY2UoMikuICBUaGUgY29ycmVzcG9uZGluZwotKyAgIHR5cGVzIGFyZSBgZWxmX2dyZWdzZXRfdCcgZm9yIHRoZSBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzICh3aXRoCi0rICAgYGVsZl9ncmVnX3QnIHRoZSB0eXBlIG9mIGEgc2luZ2xlIEdQIHJlZ2lzdGVyKSBhbmQgYGVsZl9mcHJlZ3NldF90JwotKyAgIGZvciB0aGUgZmxvYXRpbmctcG9pbnQgcmVnaXN0ZXJzLgotKwotKyAgIFRob3NlIHR5cGVzIHVzZWQgdG8gYmUgYXZhaWxhYmxlIHVuZGVyIHRoZSBuYW1lcyBgZ3JlZ3NldF90JyBhbmQKLSsgICBgZnByZWdzZXRfdCcgdG9vLCBhbmQgR0RCIHVzZWQgdGhvc2UgbmFtZXMgaW4gdGhlIHBhc3QuICBCdXQgdGhvc2UKLSsgICBuYW1lcyBhcmUgbm93IHVzZWQgZm9yIHRoZSByZWdpc3RlciBzZXRzIHVzZWQgaW4gdGhlIGBtY29udGV4dF90JwotKyAgIHR5cGUsIHdoaWNoIGhhdmUgYSBkaWZmZXJlbnQgc2l6ZSBhbmQgbGF5b3V0LiAgKi8KLSsKLSsvKiBNYXBwaW5nIGJldHdlZW4gdGhlIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnMgaW4gYHN0cnVjdCB1c2VyJwotKyAgIGZvcm1hdCBhbmQgR0RCJ3MgcmVnaXN0ZXIgY2FjaGUgbGF5b3V0LiAgKi8KLSsKLSsvKiBGcm9tIDxzeXMvcmVnLmg+LiAgKi8KLStzdGF0aWMgaW50IHNoX2xpbnV4X2dyZWdzZXRfcmVnX29mZnNldFtdID0KLSt7Ci0rIDAsCTQsCTgsCTEyLAkxNiwJMjAsCTI0LAkyOCwKLSsgMzIsCTM2LAk0MCwJNDQsCTQ4LAk1MiwJNTYsCTYwLAotKwotKyBSRUdfUEMqNCwgICBSRUdfUFIqNCwgICBSRUdfR0JSKjQsICAtMSwKLSsgUkVHX01BQ0gqNCwgUkVHX01BQ0wqNCwgUkVHX1NSKjQsCi0rfTsKLSsKLSsvKiBNYXBwaW5nIGJldHdlZW4gdGhlIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnMgaW4gYHN0cnVjdAotKyAgIHNpZ2NvbnRleHQnIGZvcm1hdCBhbmQgR0RCJ3MgcmVnaXN0ZXIgY2FjaGUgbGF5b3V0LiAgKi8KLSsKLSsvKiBGcm9tIDxhc20vc2lnY29udGV4dC5oPi4gICovCi0rc3RhdGljIGludCBzaF9saW51eF9zY19yZWdfb2Zmc2V0W10gPQotK3sKLSsgNCwJOCwJMTIsCTE2LAkyMCwJMjQsCTI4LAkzMiwKLSsgMzYsCTQwLAk0NCwJNDgsCTUyLAk1NiwJNjAsCTY0LAotKyA2OCwJNzIsCTgwLAktMSwKLSsgODQsCTg4LAk3NgotK307Ci0rCi0gc3RhdGljIHZvaWQKLSBzaF9saW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKLSB7Ci0rICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChnZGJhcmNoKTsKLSsgIGJmZCBhYmZkOwotKwotKyAgdGRlcC0+Z3JlZ3NldF9yZWdfb2Zmc2V0ID0gc2hfbGludXhfZ3JlZ3NldF9yZWdfb2Zmc2V0OwotKyAgdGRlcC0+Z3JlZ3NldF9udW1fcmVncyA9IEFSUkFZX1NJWkUgKHNoX2xpbnV4X2dyZWdzZXRfcmVnX29mZnNldCk7Ci0rICB0ZGVwLT5zaXplb2ZfZ3JlZ3NldCA9IDIzICogNDsKLSsKLSsgIHRkZXAtPmpiX3BjX29mZnNldCA9IDMyOyAgICAgLyogRnJvbSA8Yml0cy9zZXRqbXAuaD4uICAqLwotKwotKyAgdGRlcC0+c2lndHJhbXBfcCA9IHNoX2xpbnV4X3NpZ3RyYW1wX3A7Ci0rICB0ZGVwLT5zaWdjb250ZXh0X2FkZHIgPSBzaF9saW51eF9zaWdjb250ZXh0X2FkZHI7Ci0rICB0ZGVwLT5zY19yZWdfb2Zmc2V0ID0gc2hfbGludXhfc2NfcmVnX29mZnNldDsKLSsgIHRkZXAtPnNjX251bV9yZWdzID0gQVJSQVlfU0laRSAoc2hfbGludXhfc2NfcmVnX29mZnNldCk7Ci0rCi0rICBmcmFtZV91bndpbmRfYXBwZW5kX3Vud2luZGVyKGdkYmFyY2gsICZzaF9saW51eF9zaWd0cmFtcF9mcmFtZV91bndpbmQpOwotKwotKyAgLyogSWYgd2UgaGF2ZSBhIHJlZ2lzdGVyIG1hcHBpbmcsIGVuYWJsZSB0aGUgZ2VuZXJpYyBjb3JlIGZpbGUKLSsgICAgIHN1cHBvcnQsIHVubGVzcyBpdCBoYXMgYWxyZWFkeSBiZWVuIGVuYWJsZWQuICAqLwotKyAgaWYgKHRkZXAtPmdyZWdzZXRfcmVnX29mZnNldAotKyAgICAgICYmICFnZGJhcmNoX3JlZ3NldF9mcm9tX2NvcmVfc2VjdGlvbl9wIChnZGJhcmNoKSkKLSsgICAgc2V0X2dkYmFyY2hfcmVnc2V0X2Zyb21fY29yZV9zZWN0aW9uIChnZGJhcmNoLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hfbGludXhfcmVnc2V0X2Zyb21fY29yZV9zZWN0aW9uKTsKLSsKLSAgIGxpbnV4X2luaXRfYWJpIChpbmZvLCBnZGJhcmNoKTsKLSAKLSAgIC8qIEdOVS9MaW51eCB1c2VzIFNWUjQtc3R5bGUgc2hhcmVkIGxpYnJhcmllcy4gICovCi1kaWZmIC0tZ2l0IGEvZ2RiL3NoLXRkZXAuYyBiL2dkYi9zaC10ZGVwLmMKLWluZGV4IDgyY2YyZjQuLmI0NDNlNDYgMTAwNjQ0Ci0tLS0gYS9nZGIvc2gtdGRlcC5jCi0rKysgYi9nZGIvc2gtdGRlcC5jCi1AQCAtMjEsNiArMjEsOSBAQAotICAgIHNhY0BjeWdudXMuY29tLiAgKi8KLSAKLSAjaW5jbHVkZSAiZGVmcy5oIgotKyNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCi0rI2luY2x1ZGUgImNvbW1hbmQuaCIKLSsjaW5jbHVkZSAiZHVtbXktZnJhbWUuaCIKLSAjaW5jbHVkZSAiZnJhbWUuaCIKLSAjaW5jbHVkZSAiZnJhbWUtYmFzZS5oIgotICNpbmNsdWRlICJmcmFtZS11bndpbmQuaCIKLUBAIC0zNSw2ICszOCw3IEBACi0gI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKLSAjaW5jbHVkZSAiZmxvYXRmb3JtYXQuaCIKLSAjaW5jbHVkZSAicmVnY2FjaGUuaCIKLSsjaW5jbHVkZSAicmVnc2V0LmgiCi0gI2luY2x1ZGUgImRvdWJsZXN0LmgiCi0gI2luY2x1ZGUgIm9zYWJpLmgiCi0gI2luY2x1ZGUgInJlZ2dyb3Vwcy5oIgotQEAgLTY3LDIzICs3MSw2IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzaF9jY19lbnVtW10gPSB7Ci0gCi0gc3RhdGljIGNvbnN0IGNoYXIgKnNoX2FjdGl2ZV9jYWxsaW5nX2NvbnZlbnRpb24gPSBzaF9jY19nY2M7Ci0gCi0tI2RlZmluZSBTSF9OVU1fUkVHUyA2NwotLQotLXN0cnVjdCBzaF9mcmFtZV9jYWNoZQotLXsKLS0gIC8qIEJhc2UgYWRkcmVzcy4gICovCi0tICBDT1JFX0FERFIgYmFzZTsKLS0gIExPTkdFU1Qgc3Bfb2Zmc2V0OwotLSAgQ09SRV9BRERSIHBjOwotLQotLSAgLyogRmxhZyBzaG93aW5nIHRoYXQgYSBmcmFtZSBoYXMgYmVlbiBjcmVhdGVkIGluIHRoZSBwcm9sb2d1ZSBjb2RlLiAgKi8KLS0gIGludCB1c2VzX2ZwOwotLQotLSAgLyogU2F2ZWQgcmVnaXN0ZXJzLiAgKi8KLS0gIENPUkVfQUREUiBzYXZlZF9yZWdzW1NIX05VTV9SRUdTXTsKLS0gIENPUkVfQUREUiBzYXZlZF9zcDsKLS19OwotLQotIHN0YXRpYyBpbnQKLSBzaF9pc19yZW5lc2FzX2NhbGxpbmdfY29udmVudGlvbiAoc3RydWN0IHR5cGUgKmZ1bmNfdHlwZSkKLSB7Ci1AQCAtMTA0Myw3ICsxMDMwLDcgQEAgc2hfdHJlYXRfYXNfZmx0X3AgKHN0cnVjdCB0eXBlICp0eXBlKQotICAgICByZXR1cm4gMDsKLSAgIC8qIE90aGVyd2lzZSBpZiB0aGUgdHlwZSBvZiB0aGF0IG1lbWJlciBpcyBmbG9hdCwgdGhlIHdob2xlIHR5cGUgaXMKLSAgICAgIHRyZWF0ZWQgYXMgZmxvYXQuICAqLwotLSAgaWYgKFRZUEVfQ09ERSAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCAwKSkgPT0gVFlQRV9DT0RFX0ZMVCkKLSsgIGlmIChUWVBFX0NPREUgKGNoZWNrX3R5cGVkZWYgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgMCkpKSA9PSBUWVBFX0NPREVfRkxUKQotICAgICByZXR1cm4gMTsKLSAgIC8qIE90aGVyd2lzZSBpdCdzIG5vdCB0cmVhdGVkIGFzIGZsb2F0LiAgKi8KLSAgIHJldHVybiAwOwotQEAgLTEwOTMsNyArMTA4MCw3IEBAIHNoX3B1c2hfZHVtbXlfY2FsbF9mcHUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotICAgICAgaW4gZm91ciByZWdpc3RlcnMgYXZhaWxhYmxlLiAgTG9vcCB0aHJ1IGFyZ3MgZnJvbSBmaXJzdCB0byBsYXN0LiAgKi8KLSAgIGZvciAoYXJnbnVtID0gMDsgYXJnbnVtIDwgbmFyZ3M7IGFyZ251bSsrKQotICAgICB7Ci0tICAgICAgdHlwZSA9IHZhbHVlX3R5cGUgKGFyZ3NbYXJnbnVtXSk7Ci0rICAgICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZ3NbYXJnbnVtXSkpOwotICAgICAgIGxlbiA9IFRZUEVfTEVOR1RIICh0eXBlKTsKLSAgICAgICB2YWwgPSBzaF9qdXN0aWZ5X3ZhbHVlX2luX3JlZyAoZ2RiYXJjaCwgYXJnc1thcmdudW1dLCBsZW4pOwotIAotQEAgLTE4MjEsNyArMTgwOCw3IEBAIHNoX2R3YXJmMl9mcmFtZV9pbml0X3JlZyAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGludCByZWdudW0sCi0gICAgIHJlZy0+aG93ID0gRFdBUkYyX0ZSQU1FX1JFR19VTkRFRklORUQ7Ci0gfQotIAotLXN0YXRpYyBzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKgotK3N0cnVjdCBzaF9mcmFtZV9jYWNoZSAqCi0gc2hfYWxsb2NfZnJhbWVfY2FjaGUgKHZvaWQpCi0gewotICAgc3RydWN0IHNoX2ZyYW1lX2NhY2hlICpjYWNoZTsKLUBAIC0xODQ4LDcgKzE4MzUsNyBAQCBzaF9hbGxvY19mcmFtZV9jYWNoZSAodm9pZCkKLSAgIHJldHVybiBjYWNoZTsKLSB9Ci0gCi0tc3RhdGljIHN0cnVjdCBzaF9mcmFtZV9jYWNoZSAqCi0rc3RydWN0IHNoX2ZyYW1lX2NhY2hlICoKLSBzaF9mcmFtZV9jYWNoZSAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsIHZvaWQgKip0aGlzX2NhY2hlKQotIHsKLSAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X2ZyYW1lX2FyY2ggKHRoaXNfZnJhbWUpOwotQEAgLTE5MTUsOSArMTkwMiw5IEBAIHNoX2ZyYW1lX2NhY2hlIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwgdm9pZCAqKnRoaXNfY2FjaGUpCi0gICByZXR1cm4gY2FjaGU7Ci0gfQotIAotLXN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgotLXNoX2ZyYW1lX3ByZXZfcmVnaXN0ZXIgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLAotLQkJCXZvaWQgKip0aGlzX2NhY2hlLCBpbnQgcmVnbnVtKQotK3N0cnVjdCB2YWx1ZSAqCi0rc2hfZnJhbWVfcHJldl9yZWdpc3RlciAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsIHZvaWQgKip0aGlzX2NhY2hlLAotKwkJCWludCByZWdudW0pCi0gewotICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfZnJhbWVfYXJjaCAodGhpc19mcmFtZSk7Ci0gICBzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKmNhY2hlID0gc2hfZnJhbWVfY2FjaGUgKHRoaXNfZnJhbWUsIHRoaXNfY2FjaGUpOwotQEAgLTE5MzEsNyArMTkxOCw3IEBAIHNoX2ZyYW1lX3ByZXZfcmVnaXN0ZXIgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLAotICAgICAgdGhlIGN1cnJlbnQgZnJhbWUuICBGcm9iIHJlZ251bSBzbyB0aGF0IHdlIHB1bGwgdGhlIHZhbHVlIGZyb20KLSAgICAgIHRoZSBjb3JyZWN0IHBsYWNlLiAgKi8KLSAgIGlmIChyZWdudW0gPT0gZ2RiYXJjaF9wY19yZWdudW0gKGdkYmFyY2gpKQotLSAgICByZWdudW0gPSBQUl9SRUdOVU07Ci0rICAgIHJlZ251bSA9IFBSX1JFR05VTTsgLyogWFhYOiByZWFsbHk/ICovCi0gCi0gICBpZiAocmVnbnVtIDwgU0hfTlVNX1JFR1MgJiYgY2FjaGUtPnNhdmVkX3JlZ3NbcmVnbnVtXSAhPSAtMSkKLSAgICAgcmV0dXJuIGZyYW1lX3Vud2luZF9nb3RfbWVtb3J5ICh0aGlzX2ZyYW1lLCByZWdudW0sCi1AQCAtMjIzNyw4ICsyMjI0LDggQEAgc2hfcmV0dXJuX2luX2ZpcnN0X2hpZGRlbl9wYXJhbV9wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSBzdGF0aWMgc3RydWN0IGdkYmFyY2ggKgotIHNoX2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaF9saXN0ICphcmNoZXMpCi0gewotLSAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2g7Ci0gICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwOwotKyAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2g7Ci0gCi0gICAvKiBTSDUgaXMgaGFuZGxlZCBlbnRpcmVseSBpbiBzaDY0LXRkZXAuYy4gICovCi0gICBpZiAoaW5mby5iZmRfYXJjaF9pbmZvLT5tYWNoID09IGJmZF9tYWNoX3NoNSkKLUBAIC0yMjU0LDYgKzIyNDEsMTggQEAgc2hfZ2RiYXJjaF9pbml0IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoX2xpc3QgKmFyY2hlcykKLSAgIHRkZXAgPSBYQ05FVyAoc3RydWN0IGdkYmFyY2hfdGRlcCk7Ci0gICBnZGJhcmNoID0gZ2RiYXJjaF9hbGxvYyAoJmluZm8sIHRkZXApOwotIAotKyAgLyogR2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVycy4gICovCi0rICB0ZGVwLT5ncmVnc2V0ID0gTlVMTDsKLSsgIHRkZXAtPmdyZWdzZXRfcmVnX29mZnNldCA9IE5VTEw7Ci0rICB0ZGVwLT5ncmVnc2V0X251bV9yZWdzID0gMjM7Ci0rICB0ZGVwLT5zaXplb2ZfZ3JlZ3NldCA9IDA7Ci0rCi0rICAvKiBGbG9hdGluZy1wb2ludCByZWdpc3RlcnMuICAqLwotKyAgdGRlcC0+ZnByZWdzZXQgPSBOVUxMOwotKyAgdGRlcC0+c2l6ZW9mX2ZwcmVnc2V0ID0gMzQqNDsKLSsKLSsgIHRkZXAtPmpiX3BjX29mZnNldCA9IC0xOwotKwotICAgc2V0X2dkYmFyY2hfc2hvcnRfYml0IChnZGJhcmNoLCAyICogVEFSR0VUX0NIQVJfQklUKTsKLSAgIHNldF9nZGJhcmNoX2ludF9iaXQgKGdkYmFyY2gsIDQgKiBUQVJHRVRfQ0hBUl9CSVQpOwotICAgc2V0X2dkYmFyY2hfbG9uZ19iaXQgKGdkYmFyY2gsIDQgKiBUQVJHRVRfQ0hBUl9CSVQpOwotQEAgLTI0MDQsMTAgKzI0MDMsMTEgQEAgc2hfZ2RiYXJjaF9pbml0IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoX2xpc3QgKmFyY2hlcykKLSAgICAgICBicmVhazsKLSAgICAgfQotIAotKyAgZHdhcmYyX2FwcGVuZF91bndpbmRlcnMgKGdkYmFyY2gpOwotKwotICAgLyogSG9vayBpbiBBQkktc3BlY2lmaWMgb3ZlcnJpZGVzLCBpZiB0aGV5IGhhdmUgYmVlbiByZWdpc3RlcmVkLiAgKi8KLSAgIGdkYmFyY2hfaW5pdF9vc2FiaSAoaW5mbywgZ2RiYXJjaCk7Ci0gCi0tICBkd2FyZjJfYXBwZW5kX3Vud2luZGVycyAoZ2RiYXJjaCk7Ci0gICBmcmFtZV91bndpbmRfYXBwZW5kX3Vud2luZGVyIChnZGJhcmNoLCAmc2hfc3R1Yl91bndpbmQpOwotICAgZnJhbWVfdW53aW5kX2FwcGVuZF91bndpbmRlciAoZ2RiYXJjaCwgJnNoX2ZyYW1lX3Vud2luZCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2RiL3NoLXRkZXAuaCBiL2dkYi9zaC10ZGVwLmgKLWluZGV4IGZjNjcxYTUuLjY5OWY1OWYgMTAwNjQ0Ci0tLS0gYS9nZGIvc2gtdGRlcC5oCi0rKysgYi9nZGIvc2gtdGRlcC5oCi1AQCAtMjEsNiArMjEsMTIgQEAKLSAKLSAvKiBDb250cmlidXRlZCBieSBTdGV2ZSBDaGFtYmVybGFpbiBzYWNAY3lnbnVzLmNvbS4gICovCi0gCi0rc3RydWN0IGZyYW1lX2luZm87Ci0rc3RydWN0IGdkYmFyY2g7Ci0rc3RydWN0IHJlZ2dyb3VwOwotK3N0cnVjdCByZWdzZXQ7Ci0rc3RydWN0IHJlZ2NhY2hlOwotKwotIC8qIFJlZ2lzdGVycyBmb3IgYWxsIFNIIHZhcmlhbnRzLiAgVXNlZCBhbHNvIGJ5IHNoMy1yb20uYy4gICovCi0gZW51bQotICAgewotQEAgLTI5LDYgKzM1LDcgQEAgZW51bQotICAgICBBUkcwX1JFR05VTSA9IDQsCi0gICAgIEFSR0xBU1RfUkVHTlVNID0gNywKLSAgICAgRlBfUkVHTlVNID0gMTQsCi0rICAgIFNQX1JFR05VTSA9IDE1LAotICAgICBQQ19SRUdOVU0gPSAxNiwKLSAgICAgUFJfUkVHTlVNID0gMTcsCi0gICAgIEdCUl9SRUdOVU0gPSAxOCwKLUBAIC04MSw2ICs4OCwyNCBAQCBlbnVtCi0gICAgIEZWMF9SRUdOVU0gPSA3NiwKLSAgICAgRlZfTEFTVF9SRUdOVU0gPSA3OQotICAgfTsKLSsjZGVmaW5lIFNIX05VTV9SRUdTIDY3Ci0rCi0rc3RydWN0IHNoX2ZyYW1lX2NhY2hlCi0rewotKyAgLyogQmFzZSBhZGRyZXNzLiAgKi8KLSsgIENPUkVfQUREUiBiYXNlOwotKyAgTE9OR0VTVCBzcF9vZmZzZXQ7Ci0rICBDT1JFX0FERFIgcGM7Ci0rCi0rICAvKiBGbGFnIHNob3dpbmcgdGhhdCBhIGZyYW1lIGhhcyBiZWVuIGNyZWF0ZWQgaW4gdGhlIHByb2xvZ3VlIGNvZGUuICovCi0rICBpbnQgdXNlc19mcDsKLSsKLSsgIC8qIFNhdmVkIHJlZ2lzdGVycy4gICovCi0rICBDT1JFX0FERFIgc2F2ZWRfcmVnc1tTSF9OVU1fUkVHU107Ci0rICBDT1JFX0FERFIgc2F2ZWRfc3A7Ci0rfTsKLSsKLStleHRlcm4gc3RydWN0IHNoX2ZyYW1lX2NhY2hlICpzaF9mcmFtZV9jYWNoZSAoc3RydWN0IGZyYW1lX2luZm8gKm5leHRfZnJhbWUsIHZvaWQgKip0aGlzX2NhY2hlKTsKLSAKLSAvKiBUaGlzIHN0cnVjdHVyZSBkZXNjcmliZXMgYSByZWdpc3RlciBpbiBhIGNvcmUtZmlsZS4gICovCi0gc3RydWN0IHNoX2NvcmVmaWxlX3JlZ21hcAotQEAgLTg5LDggKzExNCwzMiBAQCBzdHJ1Y3Qgc2hfY29yZWZpbGVfcmVnbWFwCi0gICB1bnNpZ25lZCBpbnQgb2Zmc2V0OwotIH07Ci0gCi0rLyogc2ggYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGluZm9ybWF0aW9uLiAgKi8KLSBzdHJ1Y3QgZ2RiYXJjaF90ZGVwCi0gewotKyAgLyogR2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVycy4gICovCi0rICBzdHJ1Y3QgcmVnc2V0ICpncmVnc2V0OwotKyAgaW50ICpncmVnc2V0X3JlZ19vZmZzZXQ7Ci0rICBpbnQgZ3JlZ3NldF9udW1fcmVnczsKLSsgIHNpemVfdCBzaXplb2ZfZ3JlZ3NldDsKLSsKLSsgIC8qIEZsb2F0aW5nLXBvaW50IHJlZ2lzdGVycy4gICovCi0rICBzdHJ1Y3QgcmVnc2V0ICpmcHJlZ3NldDsKLSsgIHNpemVfdCBzaXplb2ZfZnByZWdzZXQ7Ci0rCi0rICAvKiBPZmZzZXQgb2Ygc2F2ZWQgUEMgaW4gam1wX2J1Zi4gICovCi0rICBpbnQgamJfcGNfb2Zmc2V0OwotKwotKyAgLyogRGV0ZWN0IHNpZ3RyYW1wLiAgKi8KLSsgIGludCAoKnNpZ3RyYW1wX3ApIChzdHJ1Y3QgZnJhbWVfaW5mbyAqKTsKLSsKLSsgIC8qIEdldCBhZGRyZXNzIG9mIHNpZ2NvbnRleHQgZm9yIHNpZ3RyYW1wLiAgKi8KLSsgIENPUkVfQUREUiAoKnNpZ2NvbnRleHRfYWRkcikgKHN0cnVjdCBmcmFtZV9pbmZvICopOwotKwotKyAgLyogT2Zmc2V0IG9mIHJlZ2lzdGVycyBpbiBgc3RydWN0IHNpZ2NvbnRleHQnLiAgKi8KLSsgIGludCAqc2NfcmVnX29mZnNldDsKLSsgIGludCBzY19udW1fcmVnczsKLSsKLSAgIC8qIE5vbi1OVUxMIHdoZW4gZGVidWdnaW5nIGZyb20gYSBjb3JlIGZpbGUuICBQcm92aWRlcyB0aGUgb2Zmc2V0Ci0gICAgICB3aGVyZSBlYWNoIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlciBpcyBzdG9yZWQgaW5zaWRlIHRoZSBhc3NvY2lhdGVkCi0gICAgICBjb3JlIGZpbGUgc2VjdGlvbi4gICovCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL2FzbS1zb3VyY2UuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL2FzbS1zb3VyY2UuZXhwCi1pbmRleCA4ODU0YWYwLi5lZjQ0NjgyIDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL2FzbS1zb3VyY2UuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hc20vYXNtLXNvdXJjZS5leHAKLUBAIC0xMTMsNiArMTEzLDExIEBAIHN3aXRjaCAtZ2xvYiAtLSBbaXN0YXJnZXRdIHsKLSAgICAgICAgICAgICBhcHBlbmQgbGluay1mbGFncyAiIC1tIGVsZjMycHBjIgotICAgICAgICAgfQotICAgICB9Ci0rICAgICJzaCotbGludXgqIiB7Ci0rICAgICAgICBzZXQgYXNtLWFyY2ggc2gtbGludXgKLSsgICAgICAgIHNldCBhc20tZmxhZ3MgIi1JJHtzcmNkaXJ9LyR7c3ViZGlyfSAtSSR7b2JqZGlyfS8ke3N1YmRpcn0iCi0rCXNldCBkZWJ1Zy1mbGFncyAiLWdkd2FyZi0yIgotKyAgICB9Ci0gICAgICJzaCotKi0qIiB7Ci0gICAgICAgICBzZXQgYXNtLWFyY2ggc2gKLSAJc2V0IGRlYnVnLWZsYWdzICItZ2R3YXJmLTIiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL3NoLmluYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFzbS9zaC5pbmMKLWluZGV4IGE0YTVmYzUuLjg5ZWZlZDcgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5hc20vc2guaW5jCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hc20vc2guaW5jCi1AQCAtNDAsOSArNDAsOCBAQAotIAltb3YubCAgIC5MY29uc3RcQCxyMQotIAlicmEJLkxhZnRlcmNvbnN0XEAKLSAJbm9wCi0tCW5vcAotLS5MY29uc3RcQDoKLSAJLmFsaWduCTIKLSsuTGNvbnN0XEA6Ci0gCS5sb25nCVxzdWJyCi0gCS5hbGlnbgkxCi0gLkxhZnRlcmNvbnN0XEA6Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGExLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTEuYwotaW5kZXggNDI0ZTFiOC4uMGRlMmU3YiAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMS5jCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTEuYwotQEAgLTEsNiArMSw5IEBACi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHNpZ25hbC5oPgotIAotKyNpZmRlZiBfX3NoX18KLSsjZGVmaW5lIHNpZ25hbChhLGIpICAgIC8qIFNpZ25hbHMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHRhcmdldCAtIG1ha2UgdGhlbSBnbyBhd2F5ICovCi0rI2VuZGlmCi0gCi0gdm9pZAotIGhhbmRsZV9VU1IxIChpbnQgc2lnKQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMy5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGEzLmMKLWluZGV4IDQyNGUxYjguLjk1MmFhZjIgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTMuYwotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGEzLmMKLUBAIC0xLDYgKzEsMTAgQEAKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c2lnbmFsLmg+Ci0gCi0rI2lmZGVmIF9fc2hfXwotKyNkZWZpbmUgc2lnbmFsKGEsYikgICAgLyogU2lnbmFscyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgdGFyZ2V0IC0gbWFrZSB0aGVtIGdvIGF3YXkgKi8KLSsjZW5kaWYKLSsKLSAKLSB2b2lkCi0gaGFuZGxlX1VTUjEgKGludCBzaWcpCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWdhbGwuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnYWxsLmMKLWluZGV4IDgxZjNiMDguLjE1NzRiMmQgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ2FsbC5jCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ2FsbC5jCi1AQCAtMSw2ICsxLDkgQEAKLSAjaW5jbHVkZSA8c2lnbmFsLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotIAotKyNpZmRlZiBfX3NoX18KLSsjZGVmaW5lIHNpZ25hbChhLGIpICAgIC8qIFNpZ25hbHMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHRhcmdldCAtIG1ha2UgdGhlbSBnbyBhd2F5ICovCi0rI2VuZGlmCi0gCi0gLyogU2lnbmFsIGhhbmRsZXJzLCB3ZSBzZXQgYnJlYWtwb2ludHMgaW4gdGhlbSB0byBtYWtlIHN1cmUgdGhhdCB0aGUKLSAgICBzaWduYWxzIHJlYWxseSBnZXQgZGVsaXZlcmVkLiAgKi8KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ25hbHMuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnbmFscy5jCi1pbmRleCA3NTY2MDY4Li4xMjA1YTliIDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWduYWxzLmMKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnbmFscy5jCi1AQCAtMyw2ICszLDEwIEBACi0gI2luY2x1ZGUgPHNpZ25hbC5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAKLSsjaWZkZWYgX19zaF9fCi0rI2RlZmluZSBzaWduYWwoYSxiKSAgICAvKiBTaWduYWxzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyB0YXJnZXQgLSBtYWtlIHRoZW0gZ28gYXdheSAqLwotKyNkZWZpbmUgYWxhcm0oYSkgICAgICAgLyogRGl0dG8gZm9yIGFsYXJtKCkgKi8KLSsjZW5kaWYKLSAKLSBzdGF0aWMgaW50IGNvdW50ID0gMDsKLSAKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDMtbWlwcy1saW51eC1uYXQtRGVmaW5lLV9BQklPMzItaWYtbm90LWRlZmluZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMy1taXBzLWxpbnV4LW5hdC1EZWZpbmUtX0FCSU8zMi1pZi1ub3QtZGVmaW5lZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWM3OTM5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDMtbWlwcy1saW51eC1uYXQtRGVmaW5lLV9BQklPMzItaWYtbm90LWRlZmluZWQucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSA4OGU2N2NhZWQ2NjJkODM0NGM4ZGI1NjE3NmM5ZjEyMjFlNmNkMmEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMjMgTWFyIDIwMTYgMDY6MzA6MDkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAwMy8xMF0gbWlwcy1saW51eC1uYXQ6IERlZmluZSBfQUJJTzMyIGlmIG5vdCBkZWZpbmVkCisKK1RoaXMgaGVscHMgYnVpbGRpbmcgZ2RiIG9uIG1pcHM2NCBvbiBtdXNsLCBzaW5jZQorbXVzbCBkb2VzIG5vdCBwcm92aWRlIHNnaWRlZnMuaCB0aGlzIGRlZmluZSBpcworb25seSBkZWZpbmVkIHdoZW4gR0NDIGlzIHVzaW5nIG8zMiBBQkksIGluIHRoYXQKK2Nhc2UgZ2NjIGVtaXRzIGl0IGFzIGJ1aWx0LWluIGRlZmluZSBhbmQgaGVuY2UKK2l0IHdvcmtzIG9rIGZvciBtaXBzMzIKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBnZGIvbWlwcy1saW51eC1uYXQuYyB8IDUgKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9nZGIvbWlwcy1saW51eC1uYXQuYyBiL2dkYi9taXBzLWxpbnV4LW5hdC5jCitpbmRleCBiZmU5ZmNiLi40NDliNDNhIDEwMDY0NAorLS0tIGEvZ2RiL21pcHMtbGludXgtbmF0LmMKKysrKyBiL2dkYi9taXBzLWxpbnV4LW5hdC5jCitAQCAtNDYsNiArNDYsMTEgQEAKKyAjZGVmaW5lIFBUUkFDRV9HRVRfVEhSRUFEX0FSRUEgMjUKKyAjZW5kaWYKKyAKKysvKiBtdXNsIGRvZXMgbm90IGRlZmluZSBhbmQgcmVsaWVzIG9uIGNvbXBpbGVyIGJ1aWx0LWluIG1hY3JvcyBmb3IgaXQgICAqLworKyNpZm5kZWYgX0FCSU8zMgorKyNkZWZpbmUgX0FCSU8zMiAxCisrI2VuZGlmCisrCisgLyogQXNzdW1lIHRoYXQgd2UgaGF2ZSBQVFJBQ0VfR0VUUkVHUyBldCBhbC4gc3VwcG9ydC4gIElmIHdlIGRvIG5vdCwKKyAgICB3ZSdsbCBjbGVhciB0aGlzIGFuZCB1c2UgUFRSQUNFX1BFRUtVU0VSIGluc3RlYWQuICAqLworIHN0YXRpYyBpbnQgaGF2ZV9wdHJhY2VfcmVnc2V0cyA9IDE7CistLSAKKzIuOC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA0LXBwYy1wdHJhY2UtRGVmaW5lLXB0X3JlZ3MtdWFwaV9wdF9yZWdzLW9uLUdMSUJDLXN5c3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNC1wcGMtcHRyYWNlLURlZmluZS1wdF9yZWdzLXVhcGlfcHRfcmVncy1vbi1HTElCQy1zeXN0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1ZmUyYTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNC1wcGMtcHRyYWNlLURlZmluZS1wdF9yZWdzLXVhcGlfcHRfcmVncy1vbi1HTElCQy1zeXN0LnBhdGNoCkBAIC0wLDAgKzEsNTMgQEAKK0Zyb20gYmVjNTY0ZWI0NTRiYzdmYzZlY2ZjYjU3M2FhNTMwNDBiZjM5YzFkNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDMwIEFwciAyMDE2IDE2OjQ2OjAzICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMDQvMTBdIHBwYy9wdHJhY2U6IERlZmluZSBwdF9yZWdzIHVhcGlfcHRfcmVncyBvbiAhR0xJQkMKKyBzeXN0ZW1zCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ2RiL2dkYnNlcnZlci9saW51eC1wcGMtbG93LmMgfCA2ICsrKysrKworIGdkYi9uYXQvcHBjLWxpbnV4LmggICAgICAgICAgIHwgNiArKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2dkYi9nZGJzZXJ2ZXIvbGludXgtcHBjLWxvdy5jIGIvZ2RiL2dkYnNlcnZlci9saW51eC1wcGMtbG93LmMKK2luZGV4IDIxNDVjNTAuLjc3NzkwNWQgMTAwNjQ0CistLS0gYS9nZGIvZ2Ric2VydmVyL2xpbnV4LXBwYy1sb3cuYworKysrIGIvZ2RiL2dkYnNlcnZlci9saW51eC1wcGMtbG93LmMKK0BAIC0yMSw3ICsyMSwxMyBAQAorICNpbmNsdWRlICJsaW51eC1sb3cuaCIKKyAKKyAjaW5jbHVkZSA8ZWxmLmg+CisrI2lmICFkZWZpbmVkKF9fR0xJQkNfXykKKysjIGRlZmluZSBwdF9yZWdzIHVhcGlfcHRfcmVncworKyNlbmRpZgorICNpbmNsdWRlIDxhc20vcHRyYWNlLmg+CisrI2lmICFkZWZpbmVkKF9fR0xJQkNfXykKKysjIHVuZGVmIHB0X3JlZ3MKKysjZW5kaWYKKyAKKyAjaW5jbHVkZSAibmF0L3BwYy1saW51eC5oIgorIAorZGlmZiAtLWdpdCBhL2dkYi9uYXQvcHBjLWxpbnV4LmggYi9nZGIvbmF0L3BwYy1saW51eC5oCitpbmRleCA4NWZiY2Q4Li5jYmVjOWM1IDEwMDY0NAorLS0tIGEvZ2RiL25hdC9wcGMtbGludXguaAorKysrIGIvZ2RiL25hdC9wcGMtbGludXguaAorQEAgLTE4LDcgKzE4LDEzIEBACisgI2lmbmRlZiBQUENfTElOVVhfSAorICNkZWZpbmUgUFBDX0xJTlVYX0ggMQorIAorKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCisrIyBkZWZpbmUgcHRfcmVncyB1YXBpX3B0X3JlZ3MKKysjZW5kaWYKKyAjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgorKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCisrIyB1bmRlZiBwdF9yZWdzCisrI2VuZGlmCisgI2luY2x1ZGUgPGFzbS9jcHV0YWJsZS5oPgorIAorIC8qIFRoaXMgc29tZXRpbWVzIGlzbid0IGRlZmluZWQuICAqLworLS0gCisyLjguMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNS1BZGQtc3VwcG9ydC1mb3ItUmVuZXNhcy1TSC1zaDQtYXJjaGl0ZWN0dXJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDUtQWRkLXN1cHBvcnQtZm9yLVJlbmVzYXMtU0gtc2g0LWFyY2hpdGVjdHVyZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODA5ZTZmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDUtQWRkLXN1cHBvcnQtZm9yLVJlbmVzYXMtU0gtc2g0LWFyY2hpdGVjdHVyZS5wYXRjaApAQCAtMCwwICsxLDkyMSBAQAorRnJvbSA4YzVmZTU4YzVhMDA0NGRkYjUxN2E0MWIyNzdlZDI3ZmIzZDNiZWRjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMjozMToxMiArMDAwMAorU3ViamVjdDogW1BBVENIIDA1LzEwXSBBZGQgc3VwcG9ydCBmb3IgUmVuZXNhcyBTSCAoc2g0KSBhcmNoaXRlY3R1cmUuCisKK2dkYiAoNy40LTF+Y3ZzMjAxMTExMTcuMikgZXhwZXJpbWVudGFsOyB1cmdlbmN5PWxvdworIC4KKyAgICogQWRkIFJlbmVzYXMgU0ggKHNoNCkgc3VwcG9ydCAoQ2xvc2VzOiAjNTc2MjQyKQorICAgICAtIFRoYW5rcyBOb2J1aGlybyBJd2FtYXRzdSwgVGFrYXNoaSBZb3NoaWkuCitBdXRob3I6IEhlY3RvciBPcm9uIDx6dW1iaUBkZWJpYW4ub3JnPgorQnVnLURlYmlhbjogaHR0cDovL2J1Z3MuZGViaWFuLm9yZy81NzYyNDIKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ2RiL01ha2VmaWxlLmluICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKKyBnZGIvY29uZmlndXJlLmhvc3QgICAgICAgICAgICAgICAgICAgfCAgIDEgKworIGdkYi9zaC1saW51eC10ZGVwLmMgICAgICAgICAgICAgICAgICB8IDUxOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIGdkYi9zaC10ZGVwLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICA1NCArKy0tCisgZ2RiL3NoLXRkZXAuaCAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQ5ICsrKysKKyBnZGIvdGVzdHN1aXRlL2dkYi5hc20vYXNtLXNvdXJjZS5leHAgfCAgIDUgKworIGdkYi90ZXN0c3VpdGUvZ2RiLmFzbS9zaC5pbmMgICAgICAgICB8ICAgMyArLQorIGdkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMS5jICAgICB8ICAgMyArCisgZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGEzLmMgICAgIHwgICA0ICsKKyBnZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ2FsbC5jICAgICAgfCAgIDMgKworIGdkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnbmFscy5jICAgICB8ICAgNCArCisgMTEgZmlsZXMgY2hhbmdlZCwgNjE3IGluc2VydGlvbnMoKyksIDI5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2RiL01ha2VmaWxlLmluIGIvZ2RiL01ha2VmaWxlLmluCitpbmRleCBlYzJhZjUyLi5kZjhlODRkIDEwMDY0NAorLS0tIGEvZ2RiL01ha2VmaWxlLmluCisrKysgYi9nZGIvTWFrZWZpbGUuaW4KK0BAIC0xNzM2LDYgKzE3MzYsNyBAQCBBTExERVBGSUxFUyA9IFwKKyAJc2NvcmUtdGRlcC5jIFwKKyAJc2VyLWdvMzIuYyBzZXItcGlwZS5jIHNlci10Y3AuYyBzZXItbWluZ3cuYyBcCisgCXNoLXRkZXAuYyBzaDY0LXRkZXAuYyBzaG5ic2QtdGRlcC5jIHNobmJzZC1uYXQuYyBcCisrCXNoLWxpbnV4LXRkZXAuYyBzaC1saW51eC1uYXQuYyBcCisgCXNvbDItdGRlcC5jIFwKKyAJc29saWItc3ZyNC5jIFwKKyAJc3BhcmMtbGludXgtbmF0LmMgc3BhcmMtbGludXgtdGRlcC5jIFwKK2RpZmYgLS1naXQgYS9nZGIvY29uZmlndXJlLmhvc3QgYi9nZGIvY29uZmlndXJlLmhvc3QKK2luZGV4IGVmMjY1ZWIuLjMyMmExZTIgMTAwNjQ0CistLS0gYS9nZGIvY29uZmlndXJlLmhvc3QKKysrKyBiL2dkYi9jb25maWd1cmUuaG9zdAorQEAgLTE0OSw2ICsxNDksNyBAQCBwb3dlcnBjKi0qLWxpbnV4KikJZ2RiX2hvc3Q9bGludXggOzsKKyAKKyBzMzkwKi0qLWxpbnV4KikJCWdkYl9ob3N0PWxpbnV4IDs7CisgCisrc2gqLSotbGludXgqKQkJZ2RiX2hvc3Q9bGludXggOzsKKyBzaCotKi1uZXRic2RlbGYqIHwgc2gqLSota25ldGJzZCotZ251KQorIAkJCWdkYl9ob3N0PW5ic2QgOzsKKyBzaCotKi1vcGVuYnNkKikJCWdkYl9ob3N0PW5ic2QgOzsKK2RpZmYgLS1naXQgYS9nZGIvc2gtbGludXgtdGRlcC5jIGIvZ2RiL3NoLWxpbnV4LXRkZXAuYworaW5kZXggMjQxOGQyNS4uYWM4ZWE5ZSAxMDA2NDQKKy0tLSBhL2dkYi9zaC1saW51eC10ZGVwLmMKKysrKyBiL2dkYi9zaC1saW51eC10ZGVwLmMKK0BAIC0xOCwxNCArMTgsMzcgQEAKKyAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisgCisgI2luY2x1ZGUgImRlZnMuaCIKKysjaW5jbHVkZSAiZ2RiY29yZS5oIgorKyNpbmNsdWRlICJmcmFtZS5oIgorKyNpbmNsdWRlICJmcmFtZS1iYXNlLmgiCisrI2luY2x1ZGUgImZyYW1lLXVud2luZC5oIgorKyNpbmNsdWRlICJkd2FyZjItZnJhbWUuaCIKKysjaW5jbHVkZSAidmFsdWUuaCIKKysjaW5jbHVkZSAicmVnY2FjaGUuaCIKKysjaW5jbHVkZSAiaW5mZXJpb3IuaCIKKyAjaW5jbHVkZSAib3NhYmkuaCIKKyAKKysjaW5jbHVkZSAicmVnZ3JvdXBzLmgiCisrI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKKysjaW5jbHVkZSAiZmxvYXRmb3JtYXQuaCIKKyAjaW5jbHVkZSAic29saWItc3ZyNC5oIgorICNpbmNsdWRlICJzeW10YWIuaCIKKysjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgorKyNpbmNsdWRlICJjb21tYW5kLmgiCisrI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKKyAKKyAjaW5jbHVkZSAidHJhZC1mcmFtZS5oIgorICNpbmNsdWRlICJ0cmFtcC1mcmFtZS5oIgorIAorKyNpbmNsdWRlIDxzeXMvcHRyYWNlLmg+CisrI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKysjaW5jbHVkZSA8c3lzL3VzZXIuaD4KKysjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KKysKKysjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgorKworKyNpbmNsdWRlICJyZWdzZXQuaCIKKyAjaW5jbHVkZSAiZ2xpYmMtdGRlcC5oIgorICNpbmNsdWRlICJzaC10ZGVwLmgiCisgI2luY2x1ZGUgImxpbnV4LXRkZXAuaCIKK0BAIC0xODAsOSArMjAzLDUwNSBAQCBzdGF0aWMgc3RydWN0IHRyYW1wX2ZyYW1lIHNoX2xpbnV4X3J0X3NpZ3JldHVybl90cmFtcF9mcmFtZSA9IHsKKyAgIHNoX2xpbnV4X3J0X3NpZ3JldHVybl9pbml0CisgfTsKKyAKKysvKiBSZWNvZ25pemluZyBzaWduYWwgaGFuZGxlciBmcmFtZXMuICAqLworKworKy8qIEdOVS9MaW51eCBoYXMgdHdvIGZsYXZvcnMgb2Ygc2lnbmFscy4gIE5vcm1hbCBzaWduYWwgaGFuZGxlcnMsIGFuZAorKyAgICJyZWFsdGltZSIgKFJUKSBzaWduYWxzLiAgVGhlIFJUIHNpZ25hbHMgY2FuIHByb3ZpZGUgYWRkaXRpb25hbAorKyAgIGluZm9ybWF0aW9uIHRvIHRoZSBzaWduYWwgaGFuZGxlciBpZiB0aGUgU0FfU0lHSU5GTyBmbGFnIGlzIHNldAorKyAgIHdoZW4gZXN0YWJsaXNoaW5nIGEgc2lnbmFsIGhhbmRsZXIgdXNpbmcgYHNpZ2FjdGlvbicuICBJdCBpcyBub3QKKysgICB1bmxpa2VseSB0aGF0IGZ1dHVyZSB2ZXJzaW9ucyBvZiBHTlUvTGludXggd2lsbCBzdXBwb3J0IFNBX1NJR0lORk8KKysgICBmb3Igbm9ybWFsIHNpZ25hbHMgdG9vLiAgKi8KKysKKysvKiBXaGVuIHRoZSBTSCBMaW51eCBrZXJuZWwgY2FsbHMgYSBzaWduYWwgaGFuZGxlciBhbmQgdGhlCisrICAgU0FfUkVTVE9SRVIgZmxhZyBpc24ndCBzZXQsIHRoZSByZXR1cm4gYWRkcmVzcyBwb2ludHMgdG8gYSBiaXQgb2YKKysgICBjb2RlIG9uIHRoZSBzdGFjay4gIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB3aGV0aGVyIHRoZSBQQyBhcHBlYXJzIHRvCisrICAgYmUgd2l0aGluIHRoaXMgYml0IG9mIGNvZGUuCisrCisrICAgVGhlIGluc3RydWN0aW9uIHNlcXVlbmNlIGZvciBub3JtYWwgc2lnbmFscyBpcworKyAgICAgICBtb3YudyAgMWYscjMKKysgICAgICAgdHJhcGEgICMxNgorKyAgICAgICBvciAgICAgcjAsIHIwCisrICAgICAgIG9yICAgICByMCwgcjAKKysgICAgICAgb3IgICAgIHIwLCByMAorKyAgICAgICBvciAgICAgcjAsIHIwCisrICAgICAgIG9yICAgICByMCwgcjAKKysgICAgMTogLndvcmQgIF9fTlJfc2lncmV0dXJuCisrICAgb3IgMHg5MzA1IDB4YzMxMCAweDIwMGIgMHgyMDBiIDB4MjAwYiAweDIwMGIgMHgyMDBiIDB4MDA3Ny4KKysKKysgICBDaGVja2luZyBmb3IgdGhlIGNvZGUgc2VxdWVuY2Ugc2hvdWxkIGJlIHNvbWV3aGF0IHJlbGlhYmxlLCBiZWNhdXNlCisrICAgdGhlIGVmZmVjdCBpcyB0byBjYWxsIHRoZSBzeXN0ZW0gY2FsbCBzaWdyZXR1cm4uICBUaGlzIGlzIHVubGlrZWx5CisrICAgdG8gb2NjdXIgYW55d2hlcmUgb3RoZXIgdGhhbiBhIHNpZ25hbCB0cmFtcG9saW5lLgorKworKyAgIEl0IGtpbmQgb2Ygc3Vja3MgdGhhdCB3ZSBoYXZlIHRvIHJlYWQgbWVtb3J5IGZyb20gdGhlIHByb2Nlc3MgaW4KKysgICBvcmRlciB0byBpZGVudGlmeSBhIHNpZ25hbCB0cmFtcG9saW5lLCBidXQgdGhlcmUgZG9lc24ndCBzZWVtIHRvIGJlCisrICAgYW55IG90aGVyIHdheS4gIFRoZSBQQ19JTl9TSUdUUkFNUCBtYWNybyBpbiB0bS1saW51eC5oIGFycmFuZ2VzIHRvCisrICAgb25seSBjYWxsIHVzIGlmIG5vIGZ1bmN0aW9uIG5hbWUgY291bGQgYmUgaWRlbnRpZmllZCwgd2hpY2ggc2hvdWxkCisrICAgYmUgdGhlIGNhc2Ugc2luY2UgdGhlIGNvZGUgaXMgb24gdGhlIHN0YWNrLgorKworKyAgIERldGVjdGlvbiBvZiBzaWduYWwgdHJhbXBvbGluZXMgZm9yIGhhbmRsZXJzIHRoYXQgc2V0IHRoZQorKyAgIFNBX1JFU1RPUkVSIGZsYWcgaXMgaW4gZ2VuZXJhbCBub3QgcG9zc2libGUuICBVbmZvcnR1bmF0ZWx5IHRoaXMgaXMKKysgICB3aGF0IHRoZSBHTlUgQyBMaWJyYXJ5IGhhcyBiZWVuIGRvaW5nIGZvciBxdWl0ZSBzb21lIHRpbWUgbm93LgorKyAgIEhvd2V2ZXIsIGFzIG9mIHZlcnNpb24gMi4xLjIsIHRoZSBHTlUgQyBMaWJyYXJ5IHVzZXMgc2lnbmFsCisrICAgdHJhbXBvbGluZXMgKG5hbWVkIF9fcmVzdG9yZSBhbmQgX19yZXN0b3JlX3J0KSB0aGF0IGFyZSBpZGVudGljYWwKKysgICB0byB0aGUgb25lcyB1c2VkIGJ5IHRoZSBrZXJuZWwuICBUaGVyZWZvcmUsIHRoZXNlIHRyYW1wb2xpbmVzIGFyZQorKyAgIHN1cHBvcnRlZCB0b28uICAqLworKworKyNkZWZpbmUgTU9WVyhuKQkgKDB4OTMwMHwoKG4pLTIpKQkvKiBNb3ZlIG1lbSB3b3JkIGF0IFBDK24gdG8gUjMgKi8KKysjZGVmaW5lIFRSQVAxNgkgMHhjMzEwCQkJLyogU3lzY2FsbCB3L25vIGFyZ3MgKE5SIGluIFIzKSAqLworKyNkZWZpbmUgT1JfUjBfUjAgMHgyMDBiCQkJLyogb3IgcjAscjAgKGluc2VydCB0byBhdm9pZCBoYXJkd2FyZSBidWcpICovCisrCisrI2RlZmluZSBMSU5VWF9TSUdUUkFNUF9JTlNOMAlNT1ZXKDcpCQkvKiBNb3ZlIG1lbSB3b3JkIGF0IFBDKzcgdG8gUjMgKi8KKysjZGVmaW5lIExJTlVYX1NJR1RSQU1QX0lOU04xCVRSQVAxNgkJLyogU3lzY2FsbCB3L25vIGFyZ3MgKE5SIGluIFIzKSAqLworKyNkZWZpbmUgTElOVVhfU0lHVFJBTVBfSU5TTjIJT1JfUjBfUjAJLyogb3IgcjAscjAgKGluc2VydCB0byBhdm9pZCBoYXJkd2FyZSBidWcpICovCisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IGxpbnV4X3NpZ3RyYW1wX2NvZGVbXSA9CisreworKyAgTElOVVhfU0lHVFJBTVBfSU5TTjAsCisrICBMSU5VWF9TSUdUUkFNUF9JTlNOMSwKKysgIExJTlVYX1NJR1RSQU1QX0lOU04yLAorKyAgTElOVVhfU0lHVFJBTVBfSU5TTjIsCisrICBMSU5VWF9TSUdUUkFNUF9JTlNOMiwKKysgIExJTlVYX1NJR1RSQU1QX0lOU04yLAorKyAgTElOVVhfU0lHVFJBTVBfSU5TTjIsCisrICBfX05SX3NpZ3JldHVybgorK307CisrCisrI2RlZmluZSBMSU5VWF9TSUdUUkFNUF9MRU4gKHNpemVvZiBsaW51eF9zaWd0cmFtcF9jb2RlKQorKworKy8qIElmIFBDIGlzIGluIGEgc2lndHJhbXAgcm91dGluZSwgcmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBzdGFydCBvZgorKyAgIHRoZSByb3V0aW5lLiAgT3RoZXJ3aXNlLCByZXR1cm4gMC4gICovCisrCisrc3RhdGljIENPUkVfQUREUgorK3NoX2xpbnV4X3NpZ3RyYW1wX3N0YXJ0IChzdHJ1Y3QgZnJhbWVfaW5mbyAqbmV4dF9mcmFtZSkKKyt7CisrICBDT1JFX0FERFIgcGMgPSBnZXRfZnJhbWVfcGMgKG5leHRfZnJhbWUpOworKyAgZ2RiX2J5dGUgYnVmW0xJTlVYX1NJR1RSQU1QX0xFTl07CisrCisrICAvKiBXZSBvbmx5IHJlY29nbml6ZSBhIHNpZ25hbCB0cmFtcG9saW5lIGlmIFBDIGlzIGF0IHRoZSBzdGFydCBvZgorKyAgICAgb25lIG9mIHRoZSB0aHJlZSBpbnN0cnVjdGlvbnMuICBXZSBvcHRpbWl6ZSBmb3IgZmluZGluZyB0aGUgUEMgYXQKKysgICAgIHRoZSBzdGFydCwgYXMgd2lsbCBiZSB0aGUgY2FzZSB3aGVuIHRoZSB0cmFtcG9saW5lIGlzIG5vdCB0aGUKKysgICAgIGZpcnN0IGZyYW1lIG9uIHRoZSBzdGFjay4gIFdlIGFzc3VtZSB0aGF0IGluIHRoZSBjYXNlIHdoZXJlIHRoZQorKyAgICAgUEMgaXMgbm90IGF0IHRoZSBzdGFydCBvZiB0aGUgaW5zdHJ1Y3Rpb24gc2VxdWVuY2UsIHRoZXJlIHdpbGwgYmUKKysgICAgIGEgZmV3IHRyYWlsaW5nIHJlYWRhYmxlIGJ5dGVzIG9uIHRoZSBzdGFjay4gICovCisrCisrICBpZiAoIXNhZmVfZnJhbWVfdW53aW5kX21lbW9yeSAobmV4dF9mcmFtZSwgcGMsIGJ1ZiwgTElOVVhfU0lHVFJBTVBfTEVOKSkKKysgICAgcmV0dXJuIDA7CisrCisrICBpZiAoYnVmWzBdICE9IExJTlVYX1NJR1RSQU1QX0lOU04wKQorKyAgICB7CisrICAgICAgaWYgKGJ1ZlswXSAhPSBMSU5VWF9TSUdUUkFNUF9JTlNOMSkKKysgICAgICAgIHJldHVybiAwOworKworKyAgICAgIHBjIC09IDI7CisrCisrICAgICAgaWYgKCFzYWZlX2ZyYW1lX3Vud2luZF9tZW1vcnkgKG5leHRfZnJhbWUsIHBjLCBidWYsIExJTlVYX1NJR1RSQU1QX0xFTikpCisrCXJldHVybiAwOworKyAgICB9CisrCisrICBpZiAobWVtY21wIChidWYsIGxpbnV4X3NpZ3RyYW1wX2NvZGUsIExJTlVYX1NJR1RSQU1QX0xFTikgIT0gMCkKKysgICAgcmV0dXJuIDA7CisrCisrICByZXR1cm4gcGM7CisrfQorKworKy8qIFRoaXMgZnVuY3Rpb24gZG9lcyB0aGUgc2FtZSBmb3IgUlQgc2lnbmFscy4gIEhlcmUgdGhlIGluc3RydWN0aW9uCisrICAgc2VxdWVuY2UgaXMKKysgICAgICAgbW92LncgIDFmLHIzCisrICAgICAgIHRyYXBhICAjMTYKKysgICAgICAgb3IgICAgIHIwLCByMAorKyAgICAgICBvciAgICAgcjAsIHIwCisrICAgICAgIG9yICAgICByMCwgcjAKKysgICAgICAgb3IgICAgIHIwLCByMAorKyAgICAgICBvciAgICAgcjAsIHIwCisrICAgIDE6IC53b3JkICBfX05SX3J0X3NpZ3JldHVybgorKyAgIG9yIDB4OTMwNSAweGMzMTAgMHgyMDBiIDB4MjAwYiAweDIwMGIgMHgyMDBiIDB4MjAwYiAweDAwYWQuCisrCisrICAgVGhlIGVmZmVjdCBpcyB0byBjYWxsIHRoZSBzeXN0ZW0gY2FsbCBydF9zaWdyZXR1cm4uICAqLworKworKyNkZWZpbmUgTElOVVhfUlRfU0lHVFJBTVBfSU5TTjAJCU1PVlcoNykJCS8qIE1vdmUgbWVtIHdvcmQgYXQgUEMrNyB0byBSMyAqLworKyNkZWZpbmUgTElOVVhfUlRfU0lHVFJBTVBfSU5TTjEJCVRSQVAxNgkJLyogU3lzY2FsbCB3L25vIGFyZ3MgKE5SIGluIFIzKSAqLworKyNkZWZpbmUgTElOVVhfUlRfU0lHVFJBTVBfSU5TTjIJCU9SX1IwX1IwCS8qIG9yIHIwLHIwIChpbnNlcnQgdG8gYXZvaWQgaGFyZHdhcmUgYnVnKSAqLworKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBsaW51eF9ydF9zaWd0cmFtcF9jb2RlW10gPQorK3sKKysgIExJTlVYX1JUX1NJR1RSQU1QX0lOU04wLAorKyAgTElOVVhfUlRfU0lHVFJBTVBfSU5TTjEsCisrICBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMiwKKysgIExJTlVYX1JUX1NJR1RSQU1QX0lOU04yLAorKyAgTElOVVhfUlRfU0lHVFJBTVBfSU5TTjIsCisrICBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMiwKKysgIExJTlVYX1JUX1NJR1RSQU1QX0lOU04yLAorKyAgX19OUl9ydF9zaWdyZXR1cm4KKyt9OworKworKyNkZWZpbmUgTElOVVhfUlRfU0lHVFJBTVBfTEVOIChzaXplb2YgbGludXhfcnRfc2lndHJhbXBfY29kZSkKKysKKysvKiBJZiBQQyBpcyBpbiBhIFJUIHNpZ3RyYW1wIHJvdXRpbmUsIHJldHVybiB0aGUgYWRkcmVzcyBvZiB0aGUgc3RhcnQKKysgICBvZiB0aGUgcm91dGluZS4gIE90aGVyd2lzZSwgcmV0dXJuIDAuICAqLworKworK3N0YXRpYyBDT1JFX0FERFIKKytzaF9saW51eF9ydF9zaWd0cmFtcF9zdGFydCAoc3RydWN0IGZyYW1lX2luZm8gKm5leHRfZnJhbWUpCisreworKyAgQ09SRV9BRERSIHBjID0gZ2V0X2ZyYW1lX3BjIChuZXh0X2ZyYW1lKTsKKysgIGdkYl9ieXRlIGJ1ZltMSU5VWF9SVF9TSUdUUkFNUF9MRU5dOworKworKyAgLyogV2Ugb25seSByZWNvZ25pemUgYSBzaWduYWwgdHJhbXBvbGluZSBpZiBQQyBpcyBhdCB0aGUgc3RhcnQgb2YKKysgICAgIG9uZSBvZiB0aGUgdHdvIGluc3RydWN0aW9ucy4gIFdlIG9wdGltaXplIGZvciBmaW5kaW5nIHRoZSBQQyBhdAorKyAgICAgdGhlIHN0YXJ0LCBhcyB3aWxsIGJlIHRoZSBjYXNlIHdoZW4gdGhlIHRyYW1wb2xpbmUgaXMgbm90IHRoZQorKyAgICAgZmlyc3QgZnJhbWUgb24gdGhlIHN0YWNrLiAgV2UgYXNzdW1lIHRoYXQgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlCisrICAgICBQQyBpcyBub3QgYXQgdGhlIHN0YXJ0IG9mIHRoZSBpbnN0cnVjdGlvbiBzZXF1ZW5jZSwgdGhlcmUgd2lsbCBiZQorKyAgICAgYSBmZXcgdHJhaWxpbmcgcmVhZGFibGUgYnl0ZXMgb24gdGhlIHN0YWNrLiAgKi8KKysKKysgIGlmICghc2FmZV9mcmFtZV91bndpbmRfbWVtb3J5IChuZXh0X2ZyYW1lLCBwYywgYnVmLCBMSU5VWF9SVF9TSUdUUkFNUF9MRU4pKQorKyAgICByZXR1cm4gMDsKKysKKysgIGlmIChidWZbMF0gIT0gTElOVVhfUlRfU0lHVFJBTVBfSU5TTjApCisrICAgIHsKKysgICAgICBpZiAoYnVmWzBdICE9IExJTlVYX1JUX1NJR1RSQU1QX0lOU04xKQorKwlyZXR1cm4gMDsKKysKKysgICAgICBwYyAtPSAyOworKworKyAgICAgIGlmICghc2FmZV9mcmFtZV91bndpbmRfbWVtb3J5IChuZXh0X2ZyYW1lLCBwYywgYnVmLAorKwkJCQkgICAgIExJTlVYX1JUX1NJR1RSQU1QX0xFTikpCisrCXJldHVybiAwOworKyAgICB9CisrCisrICBpZiAobWVtY21wIChidWYsIGxpbnV4X3J0X3NpZ3RyYW1wX2NvZGUsIExJTlVYX1JUX1NJR1RSQU1QX0xFTikgIT0gMCkKKysgICAgcmV0dXJuIDA7CisrCisrICByZXR1cm4gcGM7CisrfQorKworKy8qIFJldHVybiB3aGV0aGVyIFBDIGlzIGluIGEgR05VL0xpbnV4IHNpZ3RyYW1wIHJvdXRpbmUuICAqLworKworK3N0YXRpYyBpbnQKKytzaF9saW51eF9zaWd0cmFtcF9wIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSkKKyt7CisrICBDT1JFX0FERFIgcGMgPSBnZXRfZnJhbWVfcGMgKHRoaXNfZnJhbWUpOworKyAgY2hhciAqbmFtZTsKKysKKysgIGZpbmRfcGNfcGFydGlhbF9mdW5jdGlvbiAocGMsICZuYW1lLCBOVUxMLCBOVUxMKTsKKysKKysgIC8qIElmIHdlIGhhdmUgTkFNRSwgd2UgY2FuIG9wdGltaXplIHRoZSBzZWFyY2guICBUaGUgdHJhbXBvbGluZXMgYXJlCisrICAgICBuYW1lZCBfX3Jlc3RvcmUgYW5kIF9fcmVzdG9yZV9ydC4gIEhvd2V2ZXIsIHRoZXkgYXJlbid0IGR5bmFtaWNhbGx5CisrICAgICBleHBvcnRlZCBmcm9tIHRoZSBzaGFyZWQgQyBsaWJyYXJ5LCBzbyB0aGUgdHJhbXBvbGluZSBtYXkgYXBwZWFyIHRvCisrICAgICBiZSBwYXJ0IG9mIHRoZSBwcmVjZWRpbmcgZnVuY3Rpb24uICBUaGlzIHNob3VsZCBhbHdheXMgYmUgc2lnYWN0aW9uLAorKyAgICAgX19zaWdhY3Rpb24sIG9yIF9fbGliY19zaWdhY3Rpb24gKGFsbCBhbGlhc2VzIHRvIHRoZSBzYW1lIGZ1bmN0aW9uKS4gICovCisrICBpZiAobmFtZSA9PSBOVUxMIHx8IHN0cnN0ciAobmFtZSwgInNpZ2FjdGlvbiIpICE9IE5VTEwpCisrICAgIHJldHVybiAoc2hfbGludXhfc2lndHJhbXBfc3RhcnQgKHRoaXNfZnJhbWUpICE9IDAKKysJICAgIHx8IHNoX2xpbnV4X3J0X3NpZ3RyYW1wX3N0YXJ0ICh0aGlzX2ZyYW1lKSAhPSAwKTsKKysKKysgIHJldHVybiAoc3RyY21wICgiX19yZXN0b3JlIiwgbmFtZSkgPT0gMAorKwkgIHx8IHN0cmNtcCAoIl9fcmVzdG9yZV9ydCIsIG5hbWUpID09IDApOworK30KKysKKysvKiBPZmZzZXQgdG8gc3RydWN0IHNpZ2NvbnRleHQgaW4gdWNvbnRleHQsIGZyb20gPGFzbS91Y29udGV4dC5oPi4gICovCisrI2RlZmluZSBTSF9MSU5VWF9VQ09OVEVYVF9TSUdDT05URVhUX09GRlNFVCAxMgorKworKworKy8qIEFzc3VtaW5nIE5FWFRfRlJBTUUgaXMgYSBmcmFtZSBmb2xsb3dpbmcgYSBHTlUvTGludXggc2lndHJhbXAKKysgICByb3V0aW5lLCByZXR1cm4gdGhlIGFkZHJlc3Mgb2YgdGhlIGFzc29jaWF0ZWQgc2lnY29udGV4dCBzdHJ1Y3R1cmUuICAqLworKworK3N0YXRpYyBDT1JFX0FERFIKKytzaF9saW51eF9zaWdjb250ZXh0X2FkZHIgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lKQorK3sKKysgIENPUkVfQUREUiBwYzsKKysgIENPUkVfQUREUiBzcDsKKysKKysgIHNwID0gZ2V0X2ZyYW1lX3JlZ2lzdGVyX3Vuc2lnbmVkICh0aGlzX2ZyYW1lLCBTUF9SRUdOVU0pOworKworKyAgcGMgPSBzaF9saW51eF9zaWd0cmFtcF9zdGFydCAodGhpc19mcmFtZSk7CisrICBpZiAocGMpCisrICAgIHsKKysgICAgICByZXR1cm4gc3A7CisrICAgIH0KKysKKysgIHBjID0gc2hfbGludXhfcnRfc2lndHJhbXBfc3RhcnQgKHRoaXNfZnJhbWUpOworKyAgaWYgKHBjKQorKyAgICB7CisrICAgICAgQ09SRV9BRERSIHVjb250ZXh0X2FkZHI7CisrCisrICAgICAgLyogVGhlIHNpZ2NvbnRleHQgc3RydWN0dXJlIGlzIHBhcnQgb2YgdGhlIHVzZXIgY29udGV4dC4gIEEKKysJIHBvaW50ZXIgdG8gdGhlIHVzZXIgY29udGV4dCBpcyBwYXNzZWQgYXMgdGhlIHRoaXJkIGFyZ3VtZW50CisrCSB0byB0aGUgc2lnbmFsIGhhbmRsZXIuICAqLworKyAgICAgIHVjb250ZXh0X2FkZHIgPSBnZXRfZnJhbWVfcmVnaXN0ZXJfdW5zaWduZWQgKHRoaXNfZnJhbWUsIEFSRzBfUkVHTlVNKzIpOworKyAgICAgIHJldHVybiB1Y29udGV4dF9hZGRyICsgU0hfTElOVVhfVUNPTlRFWFRfU0lHQ09OVEVYVF9PRkZTRVQ7CisrICAgIH0KKysKKysgIGVycm9yICgiQ291bGRuJ3QgcmVjb2duaXplIHNpZ25hbCB0cmFtcG9saW5lLiIpOworKyAgcmV0dXJuIDA7CisrfQorKworKy8qIFNpZ25hbCB0cmFtcG9saW5lcy4gICovCisrZXh0ZXJuIHN0cnVjdCBzaF9mcmFtZV9jYWNoZSAqc2hfYWxsb2NfZnJhbWVfY2FjaGUgKHZvaWQpOworKworK3N0YXRpYyBzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKgorK3NoX2xpbnV4X3NpZ3RyYW1wX2ZyYW1lX2NhY2hlIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwgdm9pZCAqKnRoaXNfY2FjaGUpCisreworKyAgc3RydWN0IHNoX2ZyYW1lX2NhY2hlICpjYWNoZTsKKysgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdldF9jdXJyZW50X2FyY2ggKCkpOworKyAgQ09SRV9BRERSIHNpZ2NvbnRleHRfYWRkcjsKKysKKysgIGlmICgqdGhpc19jYWNoZSkKKysgICAgcmV0dXJuICp0aGlzX2NhY2hlOworKworKyAgY2FjaGUgPSBzaF9hbGxvY19mcmFtZV9jYWNoZSAoKTsKKysKKysgIGNhY2hlLT5iYXNlID0gZ2V0X2ZyYW1lX3JlZ2lzdGVyX3Vuc2lnbmVkICh0aGlzX2ZyYW1lLCBTUF9SRUdOVU0pOworKyAgc2lnY29udGV4dF9hZGRyID0gdGRlcC0+c2lnY29udGV4dF9hZGRyICh0aGlzX2ZyYW1lKTsKKysgIGlmICh0ZGVwLT5zY19yZWdfb2Zmc2V0KQorKyAgICB7CisrICAgICAgaW50IGk7CisrCisrICAgICAgZ2RiX2Fzc2VydCAodGRlcC0+c2NfbnVtX3JlZ3MgPD0gU0hfTlVNX1JFR1MpOworKworKyAgICAgIGZvciAoaSA9IDA7IGkgPCB0ZGVwLT5zY19udW1fcmVnczsgaSsrKQorKwlpZiAodGRlcC0+c2NfcmVnX29mZnNldFtpXSAhPSAtMSkKKysJICBjYWNoZS0+c2F2ZWRfcmVnc1tpXSA9IHNpZ2NvbnRleHRfYWRkciArIHRkZXAtPnNjX3JlZ19vZmZzZXRbaV07CisrICAgIH0KKysKKysgICp0aGlzX2NhY2hlID0gY2FjaGU7CisrICByZXR1cm4gY2FjaGU7CisrfQorKworK3N0YXRpYyB2b2lkCisrc2hfbGludXhfc2lndHJhbXBfZnJhbWVfdGhpc19pZCAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsIHZvaWQgKip0aGlzX2NhY2hlLAorKwkJCSAgICAgc3RydWN0IGZyYW1lX2lkICp0aGlzX2lkKQorK3sKKysgIHN0cnVjdCBzaF9mcmFtZV9jYWNoZSAqY2FjaGUgPQorKyAgICBzaF9saW51eF9zaWd0cmFtcF9mcmFtZV9jYWNoZSAodGhpc19mcmFtZSwgdGhpc19jYWNoZSk7CisrCisrICAoKnRoaXNfaWQpID0gZnJhbWVfaWRfYnVpbGQgKGNhY2hlLT5iYXNlICsgNjQsIGNhY2hlLT5wYyk7CisrfQorKworK2V4dGVybiBzdHJ1Y3QgdmFsdWUgKiBzaF9mcmFtZV9wcmV2X3JlZ2lzdGVyICgpOworK3N0YXRpYyBzdHJ1Y3QgdmFsdWUgKgorK3NoX2xpbnV4X3NpZ3RyYW1wX2ZyYW1lX3ByZXZfcmVnaXN0ZXIgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLAorKyAgICAgICAgICAgICAgICAgICB2b2lkICoqdGhpc19jYWNoZSwgaW50IHJlZ251bSkKKyt7CisrICBzaF9saW51eF9zaWd0cmFtcF9mcmFtZV9jYWNoZSAodGhpc19mcmFtZSwgdGhpc19jYWNoZSk7CisrCisrICByZXR1cm4gc2hfZnJhbWVfcHJldl9yZWdpc3RlciAodGhpc19mcmFtZSwgdGhpc19jYWNoZSwgcmVnbnVtKTsKKyt9CisrCisrc3RhdGljIGludAorK3NoX2xpbnV4X3NpZ3RyYW1wX2ZyYW1lX3NuaWZmZXIgKGNvbnN0IHN0cnVjdCBmcmFtZV91bndpbmQgKnNlbGYsCisrICAgICAgICAgICAgICAgICBzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwKKysgICAgICAgICAgICAgICAgIHZvaWQgKip0aGlzX3Byb2xvZ3VlX2NhY2hlKQorK3sKKysgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdldF9mcmFtZV9hcmNoICh0aGlzX2ZyYW1lKSk7CisrCisrICAvKiBXZSBzaG91bGRuJ3QgZXZlbiBib3RoZXIgaWYgd2UgZG9uJ3QgaGF2ZSBhIHNpZ2NvbnRleHRfYWRkcgorKyAgICAgaGFuZGxlci4gICovCisrICBpZiAodGRlcC0+c2lnY29udGV4dF9hZGRyID09IE5VTEwpCisrICAgIHJldHVybiAwOworKworKyAgaWYgKHRkZXAtPnNpZ3RyYW1wX3AgIT0gTlVMTCkKKysgICAgeworKyAgICAgIGlmICh0ZGVwLT5zaWd0cmFtcF9wICh0aGlzX2ZyYW1lKSkKKysgICAgcmV0dXJuIDE7CisrICAgIH0KKysKKysgIHJldHVybiAwOworK30KKysKKytzdGF0aWMgY29uc3Qgc3RydWN0IGZyYW1lX3Vud2luZCBzaF9saW51eF9zaWd0cmFtcF9mcmFtZV91bndpbmQgPQorK3sKKysgIFNJR1RSQU1QX0ZSQU1FLAorKyAgc2hfbGludXhfc2lndHJhbXBfZnJhbWVfdGhpc19pZCwKKysgIHNoX2xpbnV4X3NpZ3RyYW1wX2ZyYW1lX3ByZXZfcmVnaXN0ZXIsCisrICBOVUxMLAorKyAgc2hfbGludXhfc2lndHJhbXBfZnJhbWVfc25pZmZlcgorK307CisrCisrLyogU3VwcGx5IHJlZ2lzdGVyIFJFR05VTSBmcm9tIHRoZSBidWZmZXIgc3BlY2lmaWVkIGJ5IEdSRUdTIGFuZCBMRU4KKysgICBpbiB0aGUgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyIHNldCBSRUdTRVQgdG8gcmVnaXN0ZXIgY2FjaGUKKysgICBSRUdDQUNIRS4gIElmIFJFR05VTSBpcyAtMSwgZG8gdGhpcyBmb3IgYWxsIHJlZ2lzdGVycyBpbiBSRUdTRVQuICAqLworKworK3ZvaWQKKytzaF9zdXBwbHlfZ3JlZ3NldCAoY29uc3Qgc3RydWN0IHJlZ3NldCAqcmVnc2V0LCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAorKyAgICAgICAgICAgICBpbnQgcmVnbnVtLCBjb25zdCB2b2lkICpncmVncywgc2l6ZV90IGxlbikKKyt7CisrICBjb25zdCBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChyZWdzZXQtPmFyY2gpOworKyAgY29uc3QgY2hhciAqcmVncyA9IGdyZWdzOworKyAgaW50IGk7CisrCisrICBnZGJfYXNzZXJ0IChsZW4gPT0gdGRlcC0+c2l6ZW9mX2dyZWdzZXQpOworKworKyAgZm9yIChpID0gMDsgaSA8IHRkZXAtPmdyZWdzZXRfbnVtX3JlZ3M7IGkrKykKKysgICAgeworKyAgICAgIGlmICgocmVnbnVtID09IGkgfHwgcmVnbnVtID09IC0xKQorKyAgICAgICYmIHRkZXAtPmdyZWdzZXRfcmVnX29mZnNldFtpXSAhPSAtMSkKKysgICAgcmVnY2FjaGVfcmF3X3N1cHBseSAocmVnY2FjaGUsIGksIHJlZ3MgKyB0ZGVwLT5ncmVnc2V0X3JlZ19vZmZzZXRbaV0pOworKyAgICB9CisrfQorKworKy8qIENvbGxlY3QgcmVnaXN0ZXIgUkVHTlVNIGZyb20gdGhlIHJlZ2lzdGVyIGNhY2hlIFJFR0NBQ0hFIGFuZCBzdG9yZQorKyAgIGl0IGluIHRoZSBidWZmZXIgc3BlY2lmaWVkIGJ5IEdSRUdTIGFuZCBMRU4gYXMgZGVzY3JpYmVkIGJ5IHRoZQorKyAgIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlciBzZXQgUkVHU0VULiAgSWYgUkVHTlVNIGlzIC0xLCBkbyB0aGlzIGZvcgorKyAgIGFsbCByZWdpc3RlcnMgaW4gUkVHU0VULiAgKi8KKysKKyt2b2lkCisrc2hfY29sbGVjdF9ncmVnc2V0IChjb25zdCBzdHJ1Y3QgcmVnc2V0ICpyZWdzZXQsCisrICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAorKyAgICAgICAgICAgICAgaW50IHJlZ251bSwgdm9pZCAqZ3JlZ3MsIHNpemVfdCBsZW4pCisreworKyAgY29uc3Qgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAocmVnc2V0LT5hcmNoKTsKKysgIGNoYXIgKnJlZ3MgPSBncmVnczsKKysgIGludCBpOworKworKyAgZ2RiX2Fzc2VydCAobGVuID09IHRkZXAtPnNpemVvZl9ncmVnc2V0KTsKKysKKysgIGZvciAoaSA9IDA7IGkgPCB0ZGVwLT5ncmVnc2V0X251bV9yZWdzOyBpKyspCisrICAgIHsKKysgICAgICBpZiAoKHJlZ251bSA9PSBpIHx8IHJlZ251bSA9PSAtMSkKKysgICAgICAmJiB0ZGVwLT5ncmVnc2V0X3JlZ19vZmZzZXRbaV0gIT0gLTEpCisrICAgIHJlZ2NhY2hlX3Jhd19jb2xsZWN0IChyZWdjYWNoZSwgaSwgcmVncyArIHRkZXAtPmdyZWdzZXRfcmVnX29mZnNldFtpXSk7CisrICAgIH0KKyt9CisrCisrLyogU3VwcGx5IHJlZ2lzdGVyIFJFR05VTSBmcm9tIHRoZSBidWZmZXIgc3BlY2lmaWVkIGJ5IEZQUkVHUyBhbmQgTEVOCisrICAgaW4gdGhlIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVyIHNldCBSRUdTRVQgdG8gcmVnaXN0ZXIgY2FjaGUKKysgICBSRUdDQUNIRS4gIElmIFJFR05VTSBpcyAtMSwgZG8gdGhpcyBmb3IgYWxsIHJlZ2lzdGVycyBpbiBSRUdTRVQuICAqLworKworK3N0YXRpYyB2b2lkCisrc2hfc3VwcGx5X2ZwcmVnc2V0IChjb25zdCBzdHJ1Y3QgcmVnc2V0ICpyZWdzZXQsIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCisrICAgICAgICAgICAgICBpbnQgcmVnbnVtLCBjb25zdCB2b2lkICpmcHJlZ3MsIHNpemVfdCBsZW4pCisreworKyAgY29uc3Qgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAocmVnc2V0LT5hcmNoKTsKKysgIGNvbnN0IGNoYXIgKnJlZ3MgPSBmcHJlZ3M7CisrICBpbnQgaTsKKysKKysgIGdkYl9hc3NlcnQgKGxlbiA9PSB0ZGVwLT5zaXplb2ZfZnByZWdzZXQpOworKyAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspCisrICAgIHsKKysgICAgICBpZiAocmVnbnVtID09IGkrMjUgfHwgcmVnbnVtID09IC0xKQorKyAgICByZWdjYWNoZV9yYXdfc3VwcGx5IChyZWdjYWNoZSwgaSsyNSwgcmVncyArIGkqNCk7CisrICAgIH0KKysgIGlmIChyZWdudW0gPT0gRlBTQ1JfUkVHTlVNIHx8IHJlZ251bSA9PSAtMSkKKysgICAgcmVnY2FjaGVfcmF3X3N1cHBseSAocmVnY2FjaGUsIEZQU0NSX1JFR05VTSwgcmVncyArIDMyKjQpOworKyAgaWYgKHJlZ251bSA9PSBGUFVMX1JFR05VTSB8fCByZWdudW0gPT0gLTEpCisrICAgIHJlZ2NhY2hlX3Jhd19zdXBwbHkgKHJlZ2NhY2hlLCBGUFVMX1JFR05VTSwgcmVncyArIDMzKjQpOworK30KKysKKysvKiBDb2xsZWN0IHJlZ2lzdGVyIFJFR05VTSBmcm9tIHRoZSByZWdpc3RlciBjYWNoZSBSRUdDQUNIRSBhbmQgc3RvcmUKKysgICBpdCBpbiB0aGUgYnVmZmVyIHNwZWNpZmllZCBieSBGUFJFR1MgYW5kIExFTiBhcyBkZXNjcmliZWQgYnkgdGhlCisrICAgZmxvYXRpbmctcG9pbnQgcmVnaXN0ZXIgc2V0IFJFR1NFVC4gIElmIFJFR05VTSBpcyAtMSwgZG8gdGhpcyBmb3IKKysgICBhbGwgcmVnaXN0ZXJzIGluIFJFR1NFVC4gICovCisrCisrc3RhdGljIHZvaWQKKytzaF9jb2xsZWN0X2ZwcmVnc2V0IChjb25zdCBzdHJ1Y3QgcmVnc2V0ICpyZWdzZXQsCisrICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKKysgICAgICAgICAgICAgICBpbnQgcmVnbnVtLCB2b2lkICpmcHJlZ3MsIHNpemVfdCBsZW4pCisreworKyAgY29uc3Qgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAocmVnc2V0LT5hcmNoKTsKKysgIGNoYXIgKnJlZ3MgPSBmcHJlZ3M7CisrICBpbnQgaTsKKysKKysgIGdkYl9hc3NlcnQgKGxlbiA9PSB0ZGVwLT5zaXplb2ZfZnByZWdzZXQpOworKyAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspCisrICAgIHsKKysgICAgICBpZiAocmVnbnVtID09IGkrMjUgfHwgcmVnbnVtID09IC0xKQorKyAgICByZWdjYWNoZV9yYXdfY29sbGVjdCAocmVnY2FjaGUsIGkrMjUsIHJlZ3MgKyBpKjQpOworKyAgICB9CisrICBpZiAocmVnbnVtID09IEZQU0NSX1JFR05VTSB8fCByZWdudW0gPT0gLTEpCisrICAgIHJlZ2NhY2hlX3Jhd19jb2xsZWN0IChyZWdjYWNoZSwgRlBTQ1JfUkVHTlVNLCByZWdzICsgMzIqNCk7CisrICBpZiAocmVnbnVtID09IEZQVUxfUkVHTlVNIHx8IHJlZ251bSA9PSAtMSkKKysgICAgcmVnY2FjaGVfcmF3X2NvbGxlY3QgKHJlZ2NhY2hlLCBGUFVMX1JFR05VTSwgcmVncyArIDMzKjQpOworK30KKysKKysvKiBSZXR1cm4gdGhlIGFwcHJvcHJpYXRlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGNvcmUgc2VjdGlvbiBpZGVudGlmaWVkCisrICAgYnkgU0VDVF9OQU1FIGFuZCBTRUNUX1NJWkUuICAqLworKworK2NvbnN0IHN0cnVjdCByZWdzZXQgKgorK3NoX2xpbnV4X3JlZ3NldF9mcm9tX2NvcmVfc2VjdGlvbiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisrICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNlY3RfbmFtZSwgc2l6ZV90IHNlY3Rfc2l6ZSkKKyt7CisrICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChnZGJhcmNoKTsKKysKKysgIGlmIChzdHJjbXAgKHNlY3RfbmFtZSwgIi5yZWciKSA9PSAwICYmIHNlY3Rfc2l6ZSA9PSB0ZGVwLT5zaXplb2ZfZ3JlZ3NldCkKKysgICAgeworKyAgICAgIGlmICh0ZGVwLT5ncmVnc2V0ID09IE5VTEwpCisrICAgIHRkZXAtPmdyZWdzZXQgPSByZWdzZXRfYWxsb2MgKGdkYmFyY2gsIHNoX3N1cHBseV9ncmVnc2V0LAorKyAgICAgICAgICAgICAgICAgICAgICBzaF9jb2xsZWN0X2dyZWdzZXQpOworKyAgICAgIHJldHVybiB0ZGVwLT5ncmVnc2V0OworKyAgICB9CisrCisrICBpZiAoKHN0cmNtcCAoc2VjdF9uYW1lLCAiLnJlZzIiKSA9PSAwICYmIHNlY3Rfc2l6ZSA9PSB0ZGVwLT5zaXplb2ZfZnByZWdzZXQpKQorKyAgICB7CisrICAgICAgaWYgKHRkZXAtPmZwcmVnc2V0ID09IE5VTEwpCisrICAgIHRkZXAtPmZwcmVnc2V0ID0gcmVnc2V0X2FsbG9jIChnZGJhcmNoLCBzaF9zdXBwbHlfZnByZWdzZXQsCisrICAgICAgICAgICAgICAgICAgICAgICBzaF9jb2xsZWN0X2ZwcmVnc2V0KTsKKysgICAgICByZXR1cm4gdGRlcC0+ZnByZWdzZXQ7CisrICAgIH0KKysKKysgIHJldHVybiBOVUxMOworK30KKysKKysvKiBUaGUgcmVnaXN0ZXIgc2V0cyB1c2VkIGluIEdOVS9MaW51eCBFTEYgY29yZS1kdW1wcyBhcmUgaWRlbnRpY2FsIHRvCisrICAgdGhlIHJlZ2lzdGVyIHNldHMgaW4gYHN0cnVjdCB1c2VyJyB0aGF0IGFyZSB1c2VkIGZvciBhLm91dAorKyAgIGNvcmUtZHVtcHMuICBUaGVzZSBhcmUgYWxzbyB1c2VkIGJ5IHB0cmFjZSgyKS4gIFRoZSBjb3JyZXNwb25kaW5nCisrICAgdHlwZXMgYXJlIGBlbGZfZ3JlZ3NldF90JyBmb3IgdGhlIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnMgKHdpdGgKKysgICBgZWxmX2dyZWdfdCcgdGhlIHR5cGUgb2YgYSBzaW5nbGUgR1AgcmVnaXN0ZXIpIGFuZCBgZWxmX2ZwcmVnc2V0X3QnCisrICAgZm9yIHRoZSBmbG9hdGluZy1wb2ludCByZWdpc3RlcnMuCisrCisrICAgVGhvc2UgdHlwZXMgdXNlZCB0byBiZSBhdmFpbGFibGUgdW5kZXIgdGhlIG5hbWVzIGBncmVnc2V0X3QnIGFuZAorKyAgIGBmcHJlZ3NldF90JyB0b28sIGFuZCBHREIgdXNlZCB0aG9zZSBuYW1lcyBpbiB0aGUgcGFzdC4gIEJ1dCB0aG9zZQorKyAgIG5hbWVzIGFyZSBub3cgdXNlZCBmb3IgdGhlIHJlZ2lzdGVyIHNldHMgdXNlZCBpbiB0aGUgYG1jb250ZXh0X3QnCisrICAgdHlwZSwgd2hpY2ggaGF2ZSBhIGRpZmZlcmVudCBzaXplIGFuZCBsYXlvdXQuICAqLworKworKy8qIE1hcHBpbmcgYmV0d2VlbiB0aGUgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVycyBpbiBgc3RydWN0IHVzZXInCisrICAgZm9ybWF0IGFuZCBHREIncyByZWdpc3RlciBjYWNoZSBsYXlvdXQuICAqLworKworKy8qIEZyb20gPHN5cy9yZWcuaD4uICAqLworK3N0YXRpYyBpbnQgc2hfbGludXhfZ3JlZ3NldF9yZWdfb2Zmc2V0W10gPQorK3sKKysgMCwJNCwJOCwJMTIsCTE2LAkyMCwJMjQsCTI4LAorKyAzMiwJMzYsCTQwLAk0NCwJNDgsCTUyLAk1NiwJNjAsCisrCisrIFJFR19QQyo0LCAgIFJFR19QUio0LCAgIFJFR19HQlIqNCwgIC0xLAorKyBSRUdfTUFDSCo0LCBSRUdfTUFDTCo0LCBSRUdfU1IqNCwKKyt9OworKworKy8qIE1hcHBpbmcgYmV0d2VlbiB0aGUgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVycyBpbiBgc3RydWN0CisrICAgc2lnY29udGV4dCcgZm9ybWF0IGFuZCBHREIncyByZWdpc3RlciBjYWNoZSBsYXlvdXQuICAqLworKworKy8qIEZyb20gPGFzbS9zaWdjb250ZXh0Lmg+LiAgKi8KKytzdGF0aWMgaW50IHNoX2xpbnV4X3NjX3JlZ19vZmZzZXRbXSA9CisreworKyA0LAk4LAkxMiwJMTYsCTIwLAkyNCwJMjgsCTMyLAorKyAzNiwJNDAsCTQ0LAk0OCwJNTIsCTU2LAk2MCwJNjQsCisrIDY4LAk3MiwJODAsCS0xLAorKyA4NCwJODgsCTc2CisrfTsKKysKKyBzdGF0aWMgdm9pZAorIHNoX2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQorIHsKKysgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOworKyAgYmZkIGFiZmQ7CisrCisrICB0ZGVwLT5ncmVnc2V0X3JlZ19vZmZzZXQgPSBzaF9saW51eF9ncmVnc2V0X3JlZ19vZmZzZXQ7CisrICB0ZGVwLT5ncmVnc2V0X251bV9yZWdzID0gQVJSQVlfU0laRSAoc2hfbGludXhfZ3JlZ3NldF9yZWdfb2Zmc2V0KTsKKysgIHRkZXAtPnNpemVvZl9ncmVnc2V0ID0gMjMgKiA0OworKworKyAgdGRlcC0+amJfcGNfb2Zmc2V0ID0gMzI7ICAgICAvKiBGcm9tIDxiaXRzL3NldGptcC5oPi4gICovCisrCisrICB0ZGVwLT5zaWd0cmFtcF9wID0gc2hfbGludXhfc2lndHJhbXBfcDsKKysgIHRkZXAtPnNpZ2NvbnRleHRfYWRkciA9IHNoX2xpbnV4X3NpZ2NvbnRleHRfYWRkcjsKKysgIHRkZXAtPnNjX3JlZ19vZmZzZXQgPSBzaF9saW51eF9zY19yZWdfb2Zmc2V0OworKyAgdGRlcC0+c2NfbnVtX3JlZ3MgPSBBUlJBWV9TSVpFIChzaF9saW51eF9zY19yZWdfb2Zmc2V0KTsKKysKKysgIGZyYW1lX3Vud2luZF9hcHBlbmRfdW53aW5kZXIoZ2RiYXJjaCwgJnNoX2xpbnV4X3NpZ3RyYW1wX2ZyYW1lX3Vud2luZCk7CisrCisrICAvKiBJZiB3ZSBoYXZlIGEgcmVnaXN0ZXIgbWFwcGluZywgZW5hYmxlIHRoZSBnZW5lcmljIGNvcmUgZmlsZQorKyAgICAgc3VwcG9ydCwgdW5sZXNzIGl0IGhhcyBhbHJlYWR5IGJlZW4gZW5hYmxlZC4gICovCisrICBpZiAodGRlcC0+Z3JlZ3NldF9yZWdfb2Zmc2V0CisrICAgICAgJiYgIWdkYmFyY2hfcmVnc2V0X2Zyb21fY29yZV9zZWN0aW9uX3AgKGdkYmFyY2gpKQorKyAgICBzZXRfZ2RiYXJjaF9yZWdzZXRfZnJvbV9jb3JlX3NlY3Rpb24gKGdkYmFyY2gsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaF9saW51eF9yZWdzZXRfZnJvbV9jb3JlX3NlY3Rpb24pOworKworICAgbGludXhfaW5pdF9hYmkgKGluZm8sIGdkYmFyY2gpOworIAorICAgLyogR05VL0xpbnV4IHVzZXMgU1ZSNC1zdHlsZSBzaGFyZWQgbGlicmFyaWVzLiAgKi8KK2RpZmYgLS1naXQgYS9nZGIvc2gtdGRlcC5jIGIvZ2RiL3NoLXRkZXAuYworaW5kZXggMzM2YjQ4ZS4uODQ3YjI3MSAxMDA2NDQKKy0tLSBhL2dkYi9zaC10ZGVwLmMKKysrKyBiL2dkYi9zaC10ZGVwLmMKK0BAIC0yMSw2ICsyMSw5IEBACisgICAgc2FjQGN5Z251cy5jb20uICAqLworIAorICNpbmNsdWRlICJkZWZzLmgiCisrI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKKysjaW5jbHVkZSAiY29tbWFuZC5oIgorKyNpbmNsdWRlICJkdW1teS1mcmFtZS5oIgorICNpbmNsdWRlICJmcmFtZS5oIgorICNpbmNsdWRlICJmcmFtZS1iYXNlLmgiCisgI2luY2x1ZGUgImZyYW1lLXVud2luZC5oIgorQEAgLTM1LDYgKzM4LDcgQEAKKyAjaW5jbHVkZSAiYXJjaC11dGlscy5oIgorICNpbmNsdWRlICJmbG9hdGZvcm1hdC5oIgorICNpbmNsdWRlICJyZWdjYWNoZS5oIgorKyNpbmNsdWRlICJyZWdzZXQuaCIKKyAjaW5jbHVkZSAiZG91Ymxlc3QuaCIKKyAjaW5jbHVkZSAib3NhYmkuaCIKKyAjaW5jbHVkZSAicmVnZ3JvdXBzLmgiCitAQCAtNjcsMjMgKzcxLDYgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHNoX2NjX2VudW1bXSA9IHsKKyAKKyBzdGF0aWMgY29uc3QgY2hhciAqc2hfYWN0aXZlX2NhbGxpbmdfY29udmVudGlvbiA9IHNoX2NjX2djYzsKKyAKKy0jZGVmaW5lIFNIX05VTV9SRUdTIDY3CistCistc3RydWN0IHNoX2ZyYW1lX2NhY2hlCisteworLSAgLyogQmFzZSBhZGRyZXNzLiAgKi8KKy0gIENPUkVfQUREUiBiYXNlOworLSAgTE9OR0VTVCBzcF9vZmZzZXQ7CistICBDT1JFX0FERFIgcGM7CistCistICAvKiBGbGFnIHNob3dpbmcgdGhhdCBhIGZyYW1lIGhhcyBiZWVuIGNyZWF0ZWQgaW4gdGhlIHByb2xvZ3VlIGNvZGUuICAqLworLSAgaW50IHVzZXNfZnA7CistCistICAvKiBTYXZlZCByZWdpc3RlcnMuICAqLworLSAgQ09SRV9BRERSIHNhdmVkX3JlZ3NbU0hfTlVNX1JFR1NdOworLSAgQ09SRV9BRERSIHNhdmVkX3NwOworLX07CistCisgc3RhdGljIGludAorIHNoX2lzX3JlbmVzYXNfY2FsbGluZ19jb252ZW50aW9uIChzdHJ1Y3QgdHlwZSAqZnVuY190eXBlKQorIHsKK0BAIC0xMDQzLDcgKzEwMzAsNyBAQCBzaF90cmVhdF9hc19mbHRfcCAoc3RydWN0IHR5cGUgKnR5cGUpCisgICAgIHJldHVybiAwOworICAgLyogT3RoZXJ3aXNlIGlmIHRoZSB0eXBlIG9mIHRoYXQgbWVtYmVyIGlzIGZsb2F0LCB0aGUgd2hvbGUgdHlwZSBpcworICAgICAgdHJlYXRlZCBhcyBmbG9hdC4gICovCistICBpZiAoVFlQRV9DT0RFIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIDApKSA9PSBUWVBFX0NPREVfRkxUKQorKyAgaWYgKFRZUEVfQ09ERSAoY2hlY2tfdHlwZWRlZiAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCAwKSkpID09IFRZUEVfQ09ERV9GTFQpCisgICAgIHJldHVybiAxOworICAgLyogT3RoZXJ3aXNlIGl0J3Mgbm90IHRyZWF0ZWQgYXMgZmxvYXQuICAqLworICAgcmV0dXJuIDA7CitAQCAtMTA5Myw3ICsxMDgwLDcgQEAgc2hfcHVzaF9kdW1teV9jYWxsX2ZwdSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisgICAgICBpbiBmb3VyIHJlZ2lzdGVycyBhdmFpbGFibGUuICBMb29wIHRocnUgYXJncyBmcm9tIGZpcnN0IHRvIGxhc3QuICAqLworICAgZm9yIChhcmdudW0gPSAwOyBhcmdudW0gPCBuYXJnczsgYXJnbnVtKyspCisgICAgIHsKKy0gICAgICB0eXBlID0gdmFsdWVfdHlwZSAoYXJnc1thcmdudW1dKTsKKysgICAgICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnc1thcmdudW1dKSk7CisgICAgICAgbGVuID0gVFlQRV9MRU5HVEggKHR5cGUpOworICAgICAgIHZhbCA9IHNoX2p1c3RpZnlfdmFsdWVfaW5fcmVnIChnZGJhcmNoLCBhcmdzW2FyZ251bV0sIGxlbik7CisgCitAQCAtMTgyMSw3ICsxODA4LDcgQEAgc2hfZHdhcmYyX2ZyYW1lX2luaXRfcmVnIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgaW50IHJlZ251bSwKKyAgICAgcmVnLT5ob3cgPSBEV0FSRjJfRlJBTUVfUkVHX1VOREVGSU5FRDsKKyB9CisgCistc3RhdGljIHN0cnVjdCBzaF9mcmFtZV9jYWNoZSAqCisrc3RydWN0IHNoX2ZyYW1lX2NhY2hlICoKKyBzaF9hbGxvY19mcmFtZV9jYWNoZSAodm9pZCkKKyB7CisgICBzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKmNhY2hlOworQEAgLTE4NDgsNyArMTgzNSw3IEBAIHNoX2FsbG9jX2ZyYW1lX2NhY2hlICh2b2lkKQorICAgcmV0dXJuIGNhY2hlOworIH0KKyAKKy1zdGF0aWMgc3RydWN0IHNoX2ZyYW1lX2NhY2hlICoKKytzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKgorIHNoX2ZyYW1lX2NhY2hlIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwgdm9pZCAqKnRoaXNfY2FjaGUpCisgeworICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfZnJhbWVfYXJjaCAodGhpc19mcmFtZSk7CitAQCAtMTkxNSw5ICsxOTAyLDkgQEAgc2hfZnJhbWVfY2FjaGUgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLCB2b2lkICoqdGhpc19jYWNoZSkKKyAgIHJldHVybiBjYWNoZTsKKyB9CisgCistc3RhdGljIHN0cnVjdCB2YWx1ZSAqCistc2hfZnJhbWVfcHJldl9yZWdpc3RlciAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsCistCQkJdm9pZCAqKnRoaXNfY2FjaGUsIGludCByZWdudW0pCisrc3RydWN0IHZhbHVlICoKKytzaF9mcmFtZV9wcmV2X3JlZ2lzdGVyIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwgdm9pZCAqKnRoaXNfY2FjaGUsCisrCQkJaW50IHJlZ251bSkKKyB7CisgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoICh0aGlzX2ZyYW1lKTsKKyAgIHN0cnVjdCBzaF9mcmFtZV9jYWNoZSAqY2FjaGUgPSBzaF9mcmFtZV9jYWNoZSAodGhpc19mcmFtZSwgdGhpc19jYWNoZSk7CitAQCAtMTkzMSw3ICsxOTE4LDcgQEAgc2hfZnJhbWVfcHJldl9yZWdpc3RlciAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsCisgICAgICB0aGUgY3VycmVudCBmcmFtZS4gIEZyb2IgcmVnbnVtIHNvIHRoYXQgd2UgcHVsbCB0aGUgdmFsdWUgZnJvbQorICAgICAgdGhlIGNvcnJlY3QgcGxhY2UuICAqLworICAgaWYgKHJlZ251bSA9PSBnZGJhcmNoX3BjX3JlZ251bSAoZ2RiYXJjaCkpCistICAgIHJlZ251bSA9IFBSX1JFR05VTTsKKysgICAgcmVnbnVtID0gUFJfUkVHTlVNOyAvKiBYWFg6IHJlYWxseT8gKi8KKyAKKyAgIGlmIChyZWdudW0gPCBTSF9OVU1fUkVHUyAmJiBjYWNoZS0+c2F2ZWRfcmVnc1tyZWdudW1dICE9IC0xKQorICAgICByZXR1cm4gZnJhbWVfdW53aW5kX2dvdF9tZW1vcnkgKHRoaXNfZnJhbWUsIHJlZ251bSwKK0BAIC0yMjQwLDggKzIyMjcsOCBAQCBzaF9yZXR1cm5faW5fZmlyc3RfaGlkZGVuX3BhcmFtX3AgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorIHN0YXRpYyBzdHJ1Y3QgZ2RiYXJjaCAqCisgc2hfZ2RiYXJjaF9pbml0IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoX2xpc3QgKmFyY2hlcykKKyB7CistICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaDsKKyAgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXA7CisrICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaDsKKyAKKyAgIC8qIFNINSBpcyBoYW5kbGVkIGVudGlyZWx5IGluIHNoNjQtdGRlcC5jLiAgKi8KKyAgIGlmIChpbmZvLmJmZF9hcmNoX2luZm8tPm1hY2ggPT0gYmZkX21hY2hfc2g1KQorQEAgLTIyNTcsNiArMjI0NCwxOCBAQCBzaF9nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2hfbGlzdCAqYXJjaGVzKQorICAgdGRlcCA9IFhDTkVXIChzdHJ1Y3QgZ2RiYXJjaF90ZGVwKTsKKyAgIGdkYmFyY2ggPSBnZGJhcmNoX2FsbG9jICgmaW5mbywgdGRlcCk7CisgCisrICAvKiBHZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzLiAgKi8KKysgIHRkZXAtPmdyZWdzZXQgPSBOVUxMOworKyAgdGRlcC0+Z3JlZ3NldF9yZWdfb2Zmc2V0ID0gTlVMTDsKKysgIHRkZXAtPmdyZWdzZXRfbnVtX3JlZ3MgPSAyMzsKKysgIHRkZXAtPnNpemVvZl9ncmVnc2V0ID0gMDsKKysKKysgIC8qIEZsb2F0aW5nLXBvaW50IHJlZ2lzdGVycy4gICovCisrICB0ZGVwLT5mcHJlZ3NldCA9IE5VTEw7CisrICB0ZGVwLT5zaXplb2ZfZnByZWdzZXQgPSAzNCo0OworKworKyAgdGRlcC0+amJfcGNfb2Zmc2V0ID0gLTE7CisrCisgICBzZXRfZ2RiYXJjaF9zaG9ydF9iaXQgKGdkYmFyY2gsIDIgKiBUQVJHRVRfQ0hBUl9CSVQpOworICAgc2V0X2dkYmFyY2hfaW50X2JpdCAoZ2RiYXJjaCwgNCAqIFRBUkdFVF9DSEFSX0JJVCk7CisgICBzZXRfZ2RiYXJjaF9sb25nX2JpdCAoZ2RiYXJjaCwgNCAqIFRBUkdFVF9DSEFSX0JJVCk7CitAQCAtMjQwNywxMCArMjQwNiwxMSBAQCBzaF9nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2hfbGlzdCAqYXJjaGVzKQorICAgICAgIGJyZWFrOworICAgICB9CisgCisrICBkd2FyZjJfYXBwZW5kX3Vud2luZGVycyAoZ2RiYXJjaCk7CisrCisgICAvKiBIb29rIGluIEFCSS1zcGVjaWZpYyBvdmVycmlkZXMsIGlmIHRoZXkgaGF2ZSBiZWVuIHJlZ2lzdGVyZWQuICAqLworICAgZ2RiYXJjaF9pbml0X29zYWJpIChpbmZvLCBnZGJhcmNoKTsKKyAKKy0gIGR3YXJmMl9hcHBlbmRfdW53aW5kZXJzIChnZGJhcmNoKTsKKyAgIGZyYW1lX3Vud2luZF9hcHBlbmRfdW53aW5kZXIgKGdkYmFyY2gsICZzaF9zdHViX3Vud2luZCk7CisgICBmcmFtZV91bndpbmRfYXBwZW5kX3Vud2luZGVyIChnZGJhcmNoLCAmc2hfZnJhbWVfdW53aW5kKTsKKyAKK2RpZmYgLS1naXQgYS9nZGIvc2gtdGRlcC5oIGIvZ2RiL3NoLXRkZXAuaAoraW5kZXggNjY2OTY4Zi4uNjJjNjViNSAxMDA2NDQKKy0tLSBhL2dkYi9zaC10ZGVwLmgKKysrKyBiL2dkYi9zaC10ZGVwLmgKK0BAIC0yMSw2ICsyMSwxMiBAQAorIAorIC8qIENvbnRyaWJ1dGVkIGJ5IFN0ZXZlIENoYW1iZXJsYWluIHNhY0BjeWdudXMuY29tLiAgKi8KKyAKKytzdHJ1Y3QgZnJhbWVfaW5mbzsKKytzdHJ1Y3QgZ2RiYXJjaDsKKytzdHJ1Y3QgcmVnZ3JvdXA7Cisrc3RydWN0IHJlZ3NldDsKKytzdHJ1Y3QgcmVnY2FjaGU7CisrCisgLyogUmVnaXN0ZXJzIGZvciBhbGwgU0ggdmFyaWFudHMuICBVc2VkIGFsc28gYnkgc2gzLXJvbS5jLiAgKi8KKyBlbnVtCisgICB7CitAQCAtMjksNiArMzUsNyBAQCBlbnVtCisgICAgIEFSRzBfUkVHTlVNID0gNCwKKyAgICAgQVJHTEFTVF9SRUdOVU0gPSA3LAorICAgICBGUF9SRUdOVU0gPSAxNCwKKysgICAgU1BfUkVHTlVNID0gMTUsCisgICAgIFBDX1JFR05VTSA9IDE2LAorICAgICBQUl9SRUdOVU0gPSAxNywKKyAgICAgR0JSX1JFR05VTSA9IDE4LAorQEAgLTgxLDYgKzg4LDI0IEBAIGVudW0KKyAgICAgRlYwX1JFR05VTSA9IDc2LAorICAgICBGVl9MQVNUX1JFR05VTSA9IDc5CisgICB9OworKyNkZWZpbmUgU0hfTlVNX1JFR1MgNjcKKysKKytzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUKKyt7CisrICAvKiBCYXNlIGFkZHJlc3MuICAqLworKyAgQ09SRV9BRERSIGJhc2U7CisrICBMT05HRVNUIHNwX29mZnNldDsKKysgIENPUkVfQUREUiBwYzsKKysKKysgIC8qIEZsYWcgc2hvd2luZyB0aGF0IGEgZnJhbWUgaGFzIGJlZW4gY3JlYXRlZCBpbiB0aGUgcHJvbG9ndWUgY29kZS4gKi8KKysgIGludCB1c2VzX2ZwOworKworKyAgLyogU2F2ZWQgcmVnaXN0ZXJzLiAgKi8KKysgIENPUkVfQUREUiBzYXZlZF9yZWdzW1NIX05VTV9SRUdTXTsKKysgIENPUkVfQUREUiBzYXZlZF9zcDsKKyt9OworKworK2V4dGVybiBzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKnNoX2ZyYW1lX2NhY2hlIChzdHJ1Y3QgZnJhbWVfaW5mbyAqbmV4dF9mcmFtZSwgdm9pZCAqKnRoaXNfY2FjaGUpOworIAorIC8qIFRoaXMgc3RydWN0dXJlIGRlc2NyaWJlcyBhIHJlZ2lzdGVyIGluIGEgY29yZS1maWxlLiAgKi8KKyBzdHJ1Y3Qgc2hfY29yZWZpbGVfcmVnbWFwCitAQCAtODksOCArMTE0LDMyIEBAIHN0cnVjdCBzaF9jb3JlZmlsZV9yZWdtYXAKKyAgIHVuc2lnbmVkIGludCBvZmZzZXQ7CisgfTsKKyAKKysvKiBzaCBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgaW5mb3JtYXRpb24uICAqLworIHN0cnVjdCBnZGJhcmNoX3RkZXAKKyB7CisrICAvKiBHZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzLiAgKi8KKysgIHN0cnVjdCByZWdzZXQgKmdyZWdzZXQ7CisrICBpbnQgKmdyZWdzZXRfcmVnX29mZnNldDsKKysgIGludCBncmVnc2V0X251bV9yZWdzOworKyAgc2l6ZV90IHNpemVvZl9ncmVnc2V0OworKworKyAgLyogRmxvYXRpbmctcG9pbnQgcmVnaXN0ZXJzLiAgKi8KKysgIHN0cnVjdCByZWdzZXQgKmZwcmVnc2V0OworKyAgc2l6ZV90IHNpemVvZl9mcHJlZ3NldDsKKysKKysgIC8qIE9mZnNldCBvZiBzYXZlZCBQQyBpbiBqbXBfYnVmLiAgKi8KKysgIGludCBqYl9wY19vZmZzZXQ7CisrCisrICAvKiBEZXRlY3Qgc2lndHJhbXAuICAqLworKyAgaW50ICgqc2lndHJhbXBfcCkgKHN0cnVjdCBmcmFtZV9pbmZvICopOworKworKyAgLyogR2V0IGFkZHJlc3Mgb2Ygc2lnY29udGV4dCBmb3Igc2lndHJhbXAuICAqLworKyAgQ09SRV9BRERSICgqc2lnY29udGV4dF9hZGRyKSAoc3RydWN0IGZyYW1lX2luZm8gKik7CisrCisrICAvKiBPZmZzZXQgb2YgcmVnaXN0ZXJzIGluIGBzdHJ1Y3Qgc2lnY29udGV4dCcuICAqLworKyAgaW50ICpzY19yZWdfb2Zmc2V0OworKyAgaW50IHNjX251bV9yZWdzOworKworICAgLyogTm9uLU5VTEwgd2hlbiBkZWJ1Z2dpbmcgZnJvbSBhIGNvcmUgZmlsZS4gIFByb3ZpZGVzIHRoZSBvZmZzZXQKKyAgICAgIHdoZXJlIGVhY2ggZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyIGlzIHN0b3JlZCBpbnNpZGUgdGhlIGFzc29jaWF0ZWQKKyAgICAgIGNvcmUgZmlsZSBzZWN0aW9uLiAgKi8KK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hc20vYXNtLXNvdXJjZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5hc20vYXNtLXNvdXJjZS5leHAKK2luZGV4IDZkOWFlZjguLjViNjZiNDIgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5hc20vYXNtLXNvdXJjZS5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFzbS9hc20tc291cmNlLmV4cAorQEAgLTExNiw2ICsxMTYsMTEgQEAgc3dpdGNoIC1nbG9iIC0tIFtpc3RhcmdldF0geworICAgICAgICAgICAgIGFwcGVuZCBsaW5rLWZsYWdzICIgLW0gZWxmMzJwcGMiCisgICAgICAgICB9CisgICAgIH0KKysgICAgInNoKi1saW51eCoiIHsKKysgICAgICAgIHNldCBhc20tYXJjaCBzaC1saW51eAorKyAgICAgICAgc2V0IGFzbS1mbGFncyAiLUkke3NyY2Rpcn0vJHtzdWJkaXJ9IC1JJHtvYmpkaXJ9LyR7c3ViZGlyfSIKKysJc2V0IGRlYnVnLWZsYWdzICItZ2R3YXJmLTIiCisrICAgIH0KKyAgICAgInNoKi0qLSoiIHsKKyAgICAgICAgIHNldCBhc20tYXJjaCBzaAorIAlzZXQgZGVidWctZmxhZ3MgIi1nZHdhcmYtMiIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hc20vc2guaW5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL3NoLmluYworaW5kZXggYTRhNWZjNS4uODllZmVkNyAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFzbS9zaC5pbmMKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFzbS9zaC5pbmMKK0BAIC00MCw5ICs0MCw4IEBACisgCW1vdi5sICAgLkxjb25zdFxALHIxCisgCWJyYQkuTGFmdGVyY29uc3RcQAorIAlub3AKKy0Jbm9wCistLkxjb25zdFxAOgorIAkuYWxpZ24JMgorKy5MY29uc3RcQDoKKyAJLmxvbmcJXHN1YnIKKyAJLmFsaWduCTEKKyAuTGFmdGVyY29uc3RcQDoKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTEuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMS5jCitpbmRleCA0MjRlMWI4Li4wZGUyZTdiIDEwMDY0NAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGExLmMKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMS5jCitAQCAtMSw2ICsxLDkgQEAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c2lnbmFsLmg+CisgCisrI2lmZGVmIF9fc2hfXworKyNkZWZpbmUgc2lnbmFsKGEsYikgICAgLyogU2lnbmFscyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgdGFyZ2V0IC0gbWFrZSB0aGVtIGdvIGF3YXkgKi8KKysjZW5kaWYKKyAKKyB2b2lkCisgaGFuZGxlX1VTUjEgKGludCBzaWcpCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGEzLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTMuYworaW5kZXggNDI0ZTFiOC4uOTUyYWFmMjEgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTMuYworKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGEzLmMKK0BAIC0xLDYgKzEsMTAgQEAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c2lnbmFsLmg+CisgCisrI2lmZGVmIF9fc2hfXworKyNkZWZpbmUgc2lnbmFsKGEsYikgICAgLyogU2lnbmFscyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgdGFyZ2V0IC0gbWFrZSB0aGVtIGdvIGF3YXkgKi8KKysjZW5kaWYKKysKKyAKKyB2b2lkCisgaGFuZGxlX1VTUjEgKGludCBzaWcpCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWdhbGwuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnYWxsLmMKK2luZGV4IDgxZjNiMDguLjE1NzRiMmQgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ2FsbC5jCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ2FsbC5jCitAQCAtMSw2ICsxLDkgQEAKKyAjaW5jbHVkZSA8c2lnbmFsLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorIAorKyNpZmRlZiBfX3NoX18KKysjZGVmaW5lIHNpZ25hbChhLGIpICAgIC8qIFNpZ25hbHMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHRhcmdldCAtIG1ha2UgdGhlbSBnbyBhd2F5ICovCisrI2VuZGlmCisgCisgLyogU2lnbmFsIGhhbmRsZXJzLCB3ZSBzZXQgYnJlYWtwb2ludHMgaW4gdGhlbSB0byBtYWtlIHN1cmUgdGhhdCB0aGUKKyAgICBzaWduYWxzIHJlYWxseSBnZXQgZGVsaXZlcmVkLiAgKi8KK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ25hbHMuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnbmFscy5jCitpbmRleCA3NTY2MDY4Li4xMjA1YTliIDEwMDY0NAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWduYWxzLmMKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnbmFscy5jCitAQCAtMyw2ICszLDEwIEBACisgI2luY2x1ZGUgPHNpZ25hbC5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAKKysjaWZkZWYgX19zaF9fCisrI2RlZmluZSBzaWduYWwoYSxiKSAgICAvKiBTaWduYWxzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyB0YXJnZXQgLSBtYWtlIHRoZW0gZ28gYXdheSAqLworKyNkZWZpbmUgYWxhcm0oYSkgICAgICAgLyogRGl0dG8gZm9yIGFsYXJtKCkgKi8KKysjZW5kaWYKKyAKKyBzdGF0aWMgaW50IGNvdW50ID0gMDsKKyAKKy0tIAorMi44LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDYtRG9udC1kaXNhYmxlLWxpYnJlYWRsaW5lLmEtd2hlbi11c2luZy1kaXNhYmxlLXN0YXRpYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA2LURvbnQtZGlzYWJsZS1saWJyZWFkbGluZS5hLXdoZW4tdXNpbmctZGlzYWJsZS1zdGF0aWMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk0ZDI2ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA2LURvbnQtZGlzYWJsZS1saWJyZWFkbGluZS5hLXdoZW4tdXNpbmctZGlzYWJsZS1zdGF0aWMucGF0Y2gKQEAgLTAsMCArMSw1MCBAQAorRnJvbSBmMzkzMmNiMjk2MGZkNTQ2NTVhNDQ4YjEzZDVhNWI4MGYzNTZmOGRlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMzAgQXByIDIwMTYgMTU6MjU6MDMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAwNi8xMF0gRG9udCBkaXNhYmxlIGxpYnJlYWRsaW5lLmEgd2hlbiB1c2luZyAtLWRpc2FibGUtc3RhdGljCisKK0lmIGdkYiBpcyBjb25maWd1cmVkIHdpdGggLS1kaXNhYmxlLXN0YXRpYyB0aGVuIHRoaXMgaXMgZHV0aWZ1bGx5IHBhc3NlZCB0bworcmVhZGxpbmUgd2hpY2ggdGhlbiBkaXNhYmxlcyBsaWJyZWFkbGluZS5hLCB3aGljaCBjYXVzZXMgYSBwcm9ibGVtIHdoZW4gZ2RiCit0cmllcyB0byBsaW5rIGFnYWluc3QgdGhhdC4KKworVG8gZW5zdXJlIHRoYXQgcmVhZGxpbmUgYWx3YXlzIGJ1aWxkcyBzdGF0aWMgbGlicmFyaWVzLCBwYXNzIC0tZW5hYmxlLXN0YXRpYyB0bwordGhlIHN1Yi1jb25maWd1cmUuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZS5kZWYgfCAzICsrLQorIE1ha2VmaWxlLmluICB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmRlZiBiL01ha2VmaWxlLmRlZgoraW5kZXggZWE4NDUzZS4uMGZjNjZjNiAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmRlZgorKysrIGIvTWFrZWZpbGUuZGVmCitAQCAtMTA0LDcgKzEwNCw4IEBAIGhvc3RfbW9kdWxlcz0geyBtb2R1bGU9IGxpYmljb252OworIAkJbWlzc2luZz0gaW5zdGFsbC1odG1sOworIAkJbWlzc2luZz0gaW5zdGFsbC1pbmZvOyB9OworIGhvc3RfbW9kdWxlcz0geyBtb2R1bGU9IG00OyB9OworLWhvc3RfbW9kdWxlcz0geyBtb2R1bGU9IHJlYWRsaW5lOyB9OworK2hvc3RfbW9kdWxlcz0geyBtb2R1bGU9IHJlYWRsaW5lOworKyAgICAgICAgICAgICAgICBleHRyYV9jb25maWd1cmVfZmxhZ3M9Jy0tZW5hYmxlLXN0YXRpYyc7fTsKKyBob3N0X21vZHVsZXM9IHsgbW9kdWxlPSBzaWQ7IH07CisgaG9zdF9tb2R1bGVzPSB7IG1vZHVsZT0gc2ltOyB9OworIGhvc3RfbW9kdWxlcz0geyBtb2R1bGU9IHRleGluZm87IG5vX2luc3RhbGw9IHRydWU7IH07CitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgoraW5kZXggMjczM2M0ZC4uM2UwNGU4MCAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmluCisrKysgYi9NYWtlZmlsZS5pbgorQEAgLTI1MzgwLDcgKzI1MzgwLDcgQEAgY29uZmlndXJlLXJlYWRsaW5lOgorIAkgICQkcy8kJG1vZHVsZV9zcmNkaXIvY29uZmlndXJlIFwKKyAJICAtLXNyY2Rpcj0kJHt0b3BkaXJ9LyQkbW9kdWxlX3NyY2RpciBcCisgCSAgJChIT1NUX0NPTkZJR0FSR1MpIC0tYnVpbGQ9JHtidWlsZF9hbGlhc30gLS1ob3N0PSR7aG9zdF9hbGlhc30gXAorLQkgIC0tdGFyZ2V0PSR7dGFyZ2V0X2FsaWFzfSAgXAorKwkgIC0tdGFyZ2V0PSR7dGFyZ2V0X2FsaWFzfSAtLWVuYWJsZS1zdGF0aWMgXAorIAkgIHx8IGV4aXQgMQorIEBlbmRpZiByZWFkbGluZQorIAorLS0gCisyLjguMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNy11c2UtYXNtLXNnaWRlZnMuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA3LXVzZS1hc20tc2dpZGVmcy5oLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzMmY4ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNy11c2UtYXNtLXNnaWRlZnMuaC5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIDA0ODY3NWE5MTVhNzI5ODlmMjYxMzM4Njk3NTczMGRhMDE2ZTdjNWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZSBNY0N1cmR5IDxhbWNjdXJkeUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDMwIEFwciAyMDE2IDE1OjI5OjA2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMDcvMTBdIHVzZSA8YXNtL3NnaWRlZnMuaD4KKworQnVpbGQgZml4IGZvciBNSVBTIHdpdGggbXVzbCBsaWJjCisKK1RoZSBNSVBTIHNwZWNpZmljIGhlYWRlciA8c2dpZGVmcy5oPiBpcyBwcm92aWRlZCBieSBnbGliYyBhbmQgdWNsaWJjCitidXQgbm90IGJ5IG11c2wuIFJlZ2FyZGxlc3Mgb2YgdGhlIGxpYmMsIHRoZSBrZXJuZWwgaGVhZGVycyBwcm92aWRlCis8YXNtL3NnaWRlZnMuaD4gd2hpY2ggcHJvdmlkZXMgdGhlIHNhbWUgZGVmaW5pdGlvbnMsIHNvIHVzZSB0aGF0CitpbnN0ZWFkLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnZGIvbWlwcy1saW51eC1uYXQuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2dkYi9taXBzLWxpbnV4LW5hdC5jIGIvZ2RiL21pcHMtbGludXgtbmF0LmMKK2luZGV4IDQ0OWI0M2EuLjA5NjAzZGEgMTAwNjQ0CistLS0gYS9nZGIvbWlwcy1saW51eC1uYXQuYworKysrIGIvZ2RiL21pcHMtbGludXgtbmF0LmMKK0BAIC0zMSw3ICszMSw3IEBACisgI2luY2x1ZGUgImdkYl9wcm9jX3NlcnZpY2UuaCIKKyAjaW5jbHVkZSAiZ3JlZ3NldC5oIgorIAorLSNpbmNsdWRlIDxzZ2lkZWZzLmg+CisrI2luY2x1ZGUgPGFzbS9zZ2lkZWZzLmg+CisgI2luY2x1ZGUgIm5hdC9nZGJfcHRyYWNlLmgiCisgI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KKyAKKy0tIAorMi44LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDgtVXNlLWV4b3J0ZWQtZGVmaW5pdGlvbnMtb2YtU0lHUlRNSU4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwOC1Vc2UtZXhvcnRlZC1kZWZpbml0aW9ucy1vZi1TSUdSVE1JTi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTU4YjYxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDgtVXNlLWV4b3J0ZWQtZGVmaW5pdGlvbnMtb2YtU0lHUlRNSU4ucGF0Y2gKQEAgLTAsMCArMSw1MCBAQAorRnJvbSBlNTRlYWQ5ZDgxZjRkMzg0MTI3NTFiODE1ZjkwOWRiM2NiMTQ0YmIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMzAgQXByIDIwMTYgMTU6MzE6NDAgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAwOC8xMF0gVXNlIGV4b3J0ZWQgZGVmaW5pdGlvbnMgb2YgU0lHUlRNSU4KKworRGVmaW5lIFdfU1RPUENPREUgaWYgbm90IGRlZmluZWQgYWxyZWFkeQorCitfX1NJR1JUTUlOIGlzIGludGVybmFsIHRvIGdsaWJjIGFuZCBvdGhlciBsaWJjcyBlLmcuIG11c2wKK21heSBub3QgcHJvdmlkZSB0aGVtCisKK0ZpeGVzCitodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xMzAxMgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ2RiL2xpbnV4LW5hdC5jICAgICB8IDQgKystLQorIGdkYi9uYXQvbGludXgtbmF0LmggfCA0ICsrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dkYi9saW51eC1uYXQuYyBiL2dkYi9saW51eC1uYXQuYworaW5kZXggMDgyOWJjYi4uM2I4YTg5NiAxMDA2NDQKKy0tLSBhL2dkYi9saW51eC1uYXQuYworKysrIGIvZ2RiL2xpbnV4LW5hdC5jCitAQCAtNDg0NSw2ICs0ODQ1LDYgQEAgbGluX3RocmVhZF9nZXRfdGhyZWFkX3NpZ25hbHMgKHNpZ3NldF90ICpzZXQpCisgICAvKiBOUFRMIHJlc2VydmVzIHRoZSBmaXJzdCB0d28gUlQgc2lnbmFscywgYnV0IGRvZXMgbm90IHByb3ZpZGUgYW55CisgICAgICB3YXkgZm9yIHRoZSBkZWJ1Z2dlciB0byBxdWVyeSB0aGUgc2lnbmFsIG51bWJlcnMgLSBmb3J0dW5hdGVseQorICAgICAgdGhleSBkb24ndCBjaGFuZ2UuICAqLworLSAgc2lnYWRkc2V0IChzZXQsIF9fU0lHUlRNSU4pOworLSAgc2lnYWRkc2V0IChzZXQsIF9fU0lHUlRNSU4gKyAxKTsKKysgIHNpZ2FkZHNldCAoc2V0LCBTSUdSVE1JTik7CisrICBzaWdhZGRzZXQgKHNldCwgU0lHUlRNSU4gKyAxKTsKKyB9CitkaWZmIC0tZ2l0IGEvZ2RiL25hdC9saW51eC1uYXQuaCBiL2dkYi9uYXQvbGludXgtbmF0LmgKK2luZGV4IDJiNDg1ZGIuLmQwNThhZmMgMTAwNjQ0CistLS0gYS9nZGIvbmF0L2xpbnV4LW5hdC5oCisrKysgYi9nZGIvbmF0L2xpbnV4LW5hdC5oCitAQCAtODUsNCArODUsOCBAQCBleHRlcm4gZW51bSB0YXJnZXRfc3RvcF9yZWFzb24gbHdwX3N0b3BfcmVhc29uIChzdHJ1Y3QgbHdwX2luZm8gKmx3cCk7CisgCisgZXh0ZXJuIHZvaWQgbGludXhfc3RvcF9sd3AgKHN0cnVjdCBsd3BfaW5mbyAqbHdwKTsKKyAKKysjaWZuZGVmIFdfU1RPUENPREUKKysjZGVmaW5lIFdfU1RPUENPREUoc2lnKSAoKHNpZykgPDwgOCB8IDB4N2YpCisrI2VuZGlmCisrCisgI2VuZGlmIC8qIExJTlVYX05BVF9IICovCistLSAKKzIuOC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA5LUNoYW5nZS1vcmRlci1vZi1DRkxBR1MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwOS1DaGFuZ2Utb3JkZXItb2YtQ0ZMQUdTLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyMzAwNDcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwOS1DaGFuZ2Utb3JkZXItb2YtQ0ZMQUdTLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gYmEwYmJmODg3ZDQ5MTFjY2VlOWRmNTdjYjEzZWFmYjFkZTM0YmIzMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDMwIEFwciAyMDE2IDE1OjM1OjM5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMDkvMTBdIENoYW5nZSBvcmRlciBvZiBDRkxBR1MKKworTGV0cyB1cyBvdmVycmlkZSBXZXJyb3IgaWYgbmVlZCBiZQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4gfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2RiL2dkYnNlcnZlci9NYWtlZmlsZS5pbiBiL2dkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4KK2luZGV4IDFlODc0ZTMuLjkxZTg1NTAgMTAwNjQ0CistLS0gYS9nZGIvZ2Ric2VydmVyL01ha2VmaWxlLmluCisrKysgYi9nZGIvZ2Ric2VydmVyL01ha2VmaWxlLmluCitAQCAtMTM4LDEwICsxMzgsMTAgQEAgQ1hYRkxBR1MgPSBAQ1hYRkxBR1NACisgQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACisgCisgIyBJTlRFUk5BTF9DRkxBR1MgaXMgdGhlIGFnZ3JlZ2F0ZSBvZiBhbGwgb3RoZXIgKkNGTEFHUyBtYWNyb3MuCistSU5URVJOQUxfQ0ZMQUdTX0JBU0UgPSAgJHtDT01QSUxFUl9DRkxBR1N9ICR7R0xPQkFMX0NGTEFHU30gXAorK0lOVEVSTkFMX0NGTEFHU19CQVNFID0gICR7R0xPQkFMX0NGTEFHU30gXAorIAkke1BST0ZJTEVfQ0ZMQUdTfSAke0lOQ0xVREVfQ0ZMQUdTfSAke0NQUEZMQUdTfQorIElOVEVSTkFMX1dBUk5fQ0ZMQUdTID0gICR7SU5URVJOQUxfQ0ZMQUdTX0JBU0V9ICQoV0FSTl9DRkxBR1MpCistSU5URVJOQUxfQ0ZMQUdTID0gICR7SU5URVJOQUxfV0FSTl9DRkxBR1N9ICQoV0VSUk9SX0NGTEFHUykgLURHREJTRVJWRVIKKytJTlRFUk5BTF9DRkxBR1MgPSAgJHtJTlRFUk5BTF9XQVJOX0NGTEFHU30gJChXRVJST1JfQ0ZMQUdTKSAke0NPTVBJTEVSX0NGTEFHU30gLURHREJTRVJWRVIKKyAKKyAjIExERkxBR1MgaXMgc3BlY2lmaWNhbGx5IHJlc2VydmVkIGZvciBzZXR0aW5nIGZyb20gdGhlIGNvbW1hbmQgbGluZQorICMgd2hlbiBydW5uaW5nIG1ha2UuCistLSAKKzIuOC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDEwLXJlc29sdmUtcmVzdHJpY3Qta2V5d29yZC1jb25mbGljdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDEwLXJlc29sdmUtcmVzdHJpY3Qta2V5d29yZC1jb25mbGljdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNmMzNGM3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMTAtcmVzb2x2ZS1yZXN0cmljdC1rZXl3b3JkLWNvbmZsaWN0LnBhdGNoCkBAIC0wLDAgKzEsNDggQEAKK0Zyb20gNWE5Y2NiOGMwNzI4YjY1OGZjNGY3ZjBmN2IzNjg3M2M2NDI3NGYxMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDEwIE1heSAyMDE2IDA4OjQ3OjA1IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMTAvMTBdIHJlc29sdmUgcmVzdHJpY3Qga2V5d29yZCBjb25mbGljdAorCitHQ0MgZGV0ZWN0cyB0aGF0IHdlIGNhbGwgJ3Jlc3RyaWN0JyBhcyBwYXJhbSBuYW1lIGluIGZ1bmN0aW9uCitzaWduYXR1cmVzIGFuZCBjb21wbGFpbnMgc2luY2UgYm90aCBwYXJhbXMgYXJlIGNhbGxlZCAncmVzdHJpY3QnCit0aGVyZWZvcmUgd2UgdXNlIF9fcmVzdHJpY3QgdG8gZGVub3RlIHRoZSBDOTkga2V5d29yaworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdkYi9nbnVsaWIvaW1wb3J0L3N5c190aW1lLmluLmggfCA4ICsrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dkYi9nbnVsaWIvaW1wb3J0L3N5c190aW1lLmluLmggYi9nZGIvZ251bGliL2ltcG9ydC9zeXNfdGltZS5pbi5oCitpbmRleCBjNTU2YzVkLi4yYTYxMDdmIDEwMDY0NAorLS0tIGEvZ2RiL2dudWxpYi9pbXBvcnQvc3lzX3RpbWUuaW4uaAorKysrIGIvZ2RiL2dudWxpYi9pbXBvcnQvc3lzX3RpbWUuaW4uaAorQEAgLTkzLDIwICs5MywyMCBAQCBzdHJ1Y3QgdGltZXZhbAorICMgICBkZWZpbmUgZ2V0dGltZW9mZGF5IHJwbF9nZXR0aW1lb2ZkYXkKKyAjICBlbmRpZgorIF9HTF9GVU5DREVDTF9SUEwgKGdldHRpbWVvZmRheSwgaW50LAorLSAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgdGltZXZhbCAqcmVzdHJpY3QsIHZvaWQgKnJlc3RyaWN0KQorKyAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgdGltZXZhbCAqX19yZXN0cmljdCwgdm9pZCAqX19yZXN0cmljdCkKKyAgICAgICAgICAgICAgICAgICBfR0xfQVJHX05PTk5VTEwgKCgxKSkpOworIF9HTF9DWFhBTElBU19SUEwgKGdldHRpbWVvZmRheSwgaW50LAorLSAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgdGltZXZhbCAqcmVzdHJpY3QsIHZvaWQgKnJlc3RyaWN0KSk7CisrICAgICAgICAgICAgICAgICAgKHN0cnVjdCB0aW1ldmFsICpfX3Jlc3RyaWN0LCB2b2lkICpfX3Jlc3RyaWN0KSk7CisgIyBlbHNlCisgIyAgaWYgIUBIQVZFX0dFVFRJTUVPRkRBWUAKKyBfR0xfRlVOQ0RFQ0xfU1lTIChnZXR0aW1lb2ZkYXksIGludCwKKy0gICAgICAgICAgICAgICAgICAoc3RydWN0IHRpbWV2YWwgKnJlc3RyaWN0LCB2b2lkICpyZXN0cmljdCkKKysgICAgICAgICAgICAgICAgICAoc3RydWN0IHRpbWV2YWwgKl9fcmVzdHJpY3QsIHZvaWQgKl9fcmVzdHJpY3QpCisgICAgICAgICAgICAgICAgICAgX0dMX0FSR19OT05OVUxMICgoMSkpKTsKKyAjICBlbmRpZgorIC8qIE5lZWQgdG8gY2FzdCwgYmVjYXVzZSBvbiBnbGliYyBzeXN0ZW1zLCBieSBkZWZhdWx0LCB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXpvbmUgKi4gICovCisgX0dMX0NYWEFMSUFTX1NZU19DQVNUIChnZXR0aW1lb2ZkYXksIGludCwKKy0gICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgdGltZXZhbCAqcmVzdHJpY3QsIHZvaWQgKnJlc3RyaWN0KSk7CisrICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHRpbWV2YWwgKl9fcmVzdHJpY3QsIHZvaWQgKl9fcmVzdHJpY3QpKTsKKyAjIGVuZGlmCisgX0dMX0NYWEFMSUFTV0FSTiAoZ2V0dGltZW9mZGF5KTsKKyAjZWxpZiBkZWZpbmVkIEdOVUxJQl9QT1NJWENIRUNLCistLSAKKzIuOC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDExLWF2eF9tcHgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAxMS1hdnhfbXB4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwOWM0ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAxMS1hdnhfbXB4LnBhdGNoCkBAIC0wLDAgKzEsMjYwMSBAQAorZ2RiOiBCYWNrcG9ydCBwYXRjaCB0byBzdXBwb3J0IGNoYW5nZXMgd2l0aCBBVlggYW5kIE1QWAorCitUaGUgY3VycmVudCBNUFggdGFyZ2V0IGRlc2NyaXB0aW9ucyBhc3N1bWUgdGhhdCBNUFggaXMgYWx3YXlzIGNvbWJpbmVkCit3aXRoIEFWWCwgaG93ZXZlciB0aGF0J3Mgbm90IGNvcnJlY3QuICBXZSBjYW4gaGF2ZSBtYWNoaW5lcyB3aXRoIE1QWAorYW5kIHdpdGhvdXQgQVZYOyBvciBtYWNoaW5lcyB3aXRoIEFWWCBhbmQgd2l0aG91dCBNUFguCisKK1RoaXMgcGF0Y2ggYWRkcyBuZXcgdGFyZ2V0IGRlc2NyaXB0aW9ucyBmb3IgbWFjaGluZXMgdGhhdCBzdXBwb3J0Citib3RoIE1QWCBhbmQgQVZYLCBhcyBkdXBsaWNhdGVzIG9mIHRoZSBleGlzdGluZyBNUFggZGVzY3JpcHRpb25zLgorCitUaGUgZm9sbG93aW5nIGNvbW1pdCB3aWxsIHJlbW92ZSBBVlggZnJvbSB0aGUgTVBYLW9ubHkgZGVzY3JpcHRpb25zLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IGJhdmVyeSA8YnJpYW4uYXZlcnlAaW50ZWwuY29tPgorCisKK09yaWduYWwgcGF0Y2ggY2hhbmdlbG9nIGFuZCBhdXRob3IgYXR0cmlidXRpb246CisKKzIwMTYtMDQtMTYgIFdhbGZyZWQgVGVkZXNjaGkgIDx3YWxmcmVkLnRlZGVzY2hpQGludGVsLmNvbT4KKworZ2RiL0NoYW5nZUxvZzoKKworCSogYW1kNjQtbGludXgtdGRlcC5jIChmZWF0dXJlcy9pMzg2L2FtZDY0LWF2eC1tcHgtbGludXguYyk6CisJTmV3IGluY2x1ZGUuCisJKGFtZDY0X2xpbnV4X2NvcmVfcmVhZF9kZXNjcmlwdGlvbik6IEFkZCBjYXNlIGZvcgorCSBYODZfWFNUQVRFX0FWWF9NUFhfTUFTSy4KKwkoX2luaXRpYWxpemVfYW1kNjRfbGludXhfdGRlcCk6IENhbGwgaW5pdGlhbGl6ZV90ZGVzY19hbWQ2NF9hdnhfbXB4X2xpbnV4LgorCSogYW1kNjQtbGludXgtdGRlcC5oICh0ZGVzY19hbWQ2NF9hdnhfbXB4X2xpbnV4KTogTmV3IGRlZmluaXRpb24uCisJKiBhbWQ2NC10ZGVwLmMgKGZlYXR1cmVzL2kzODYvYW1kNjQtYXZ4LW1weC5jKTogTmV3IGluY2x1ZGUuCisJKGFtZDY0X3RhcmdldF9kZXNjcmlwdGlvbik6IEFkZCBjYXNlIGZvciAgWDg2X1hTVEFURV9BVlhfTVBYX01BU0suCisJKF9pbml0aWFsaXplX2FtZDY0X3RkZXApOiBDYWxsIGluaXRpYWxpemVfdGRlc2NfYW1kNjRfYXZ4X21weC4KKwkqIGNvbW1vbi94ODYteHN0YXRlLmggKFg4Nl9YU1RBVEVfTVBYX01BU0spOiBSZW1vdmUgQVZYIGJpdHMuCisJKFg4Nl9YU1RBVEVfQVZYX01QWF9NQVNLKTogTmV3IGNhc2UuCisJKiBmZWF0dXJlcy9NYWtlZmlsZSAoaTM4Ni9pMzg2LWF2eC1tcHgsIGkzODYvaTM4Ni1hdngtbXB4LWxpbnV4KQorCShpMzg2L2FtZDY0LWF2eC1tcHgsIGkzODYvYW1kNjQtYXZ4LW1weC1saW51eCk6IE5ldyBydWxlcy4KKwkoaTM4Ni9pMzg2LWF2eC1tcHgtZXhwZWRpdGUsIGkzODYvaTM4Ni1hdngtbXB4LWxpbnV4LWV4cGVkaXRlKQorCShpMzg2L2FtZDY0LWF2eC1tcHgtZXhwZWRpdGUsIGkzODYvYW1kNjQtYXZ4LW1weC1saW51eC1leHBlZGl0ZSk6CisJTmV3IGV4cGVkaXRlcy4KKwkqIGkzODYtbGludXgtdGRlcC5jIChmZWF0dXJlcy9pMzg2L2kzODYtYXZ4LW1weC1saW51eC5jKTogTmV3CisJaW5jbHVkZS4KKwkoaTM4Nl9saW51eF9jb3JlX3JlYWRfZGVzY3JpcHRpb24pOiBBZGQgY2FzZQorCVg4Nl9YU1RBVEVfQVZYX01QWF9NQVNLLgorCShfaW5pdGlhbGl6ZV9pMzg2X2xpbnV4X3RkZXApOiBDYWxsCisJaW5pdGlhbGl6ZV90ZGVzY19pMzg2X2F2eF9tcHhfbGludXguCisJKiBpMzg2LWxpbnV4LXRkZXAuaCAodGRlc2NfaTM4Nl9hdnhfbXB4X2xpbnV4KTogTmV3IGluY2x1ZGUuCisJKiBpMzg2LXRkZXAuYyAoZmVhdHVyZXMvaTM4Ni9pMzg2LWF2eC1tcHguYyk6IE5ldyBpbmNsdWRlLgorCShpMzg2X3RhcmdldF9kZXNjcmlwdGlvbik6IEFkZCBjYXNlIGZvciBYODZfWFNUQVRFX0FWWF9NUFhfTUFTSy4KKwkqIHg4Ni1saW51eC1uYXQuYyAoeDg2X2xpbnV4X3JlYWRfZGVzY3JpcHRpb24pOiBBZGQgY2FzZSBmb3IKKwlYODZfWFNUQVRFX0FWWF9NUFhfTUFTSy4KKwkqIGZlYXR1cmVzL2kzODYvYW1kNjQtYXZ4LW1weC1saW51eC54bWw6IE5ldyBmaWxlLgorCSogZmVhdHVyZXMvaTM4Ni9pMzg2LWF2eC1tcHgtbGludXgueG1sOiBOZXcgZmlsZS4KKwkqIGZlYXR1cmVzL2kzODYvaTM4Ni1hdngtbXB4LnhtbDogTmV3IGZpbGUuCisJKiBmZWF0dXJlcy9pMzg2L2FtZDY0LWF2eC1tcHgueG1sOiBOZXcgZmlsZS4KKwkqIGZlYXR1cmVzL2kzODYvYW1kNjQtYXZ4LW1weC1saW51eC5jOiBHZW5lcmF0ZWQuCisJKiBmZWF0dXJlcy9pMzg2L2FtZDY0LWF2eC1tcHguYzogR2VuZXJhdGVkLgorCSogZmVhdHVyZXMvaTM4Ni9pMzg2LWF2eC1tcHgtbGludXguYzogR2VuZXJhdGVkLgorCSogZmVhdHVyZXMvaTM4Ni9pMzg2LWF2eC1tcHguYzogR2VuZXJhdGVkLgorCSogcmVnZm9ybWF0cy9pMzg2L2FtZDY0LWF2eC1tcHgtbGludXguZGF0OiBHZW5lcmF0ZWQuCisJKiByZWdmb3JtYXRzL2kzODYvYW1kNjQtYXZ4LW1weC5kYXQ6IEdlbmVyYXRlZC4KKwkqIHJlZ2Zvcm1hdHMvaTM4Ni9pMzg2LWF2eC1tcHgtbGludXguZGF0OiBHZW5lcmF0ZWQuCisJKiByZWdmb3JtYXRzL2kzODYvaTM4Ni1hdngtbXB4LmRhdDogR2VuZXJhdGVkLgorCitnZGIvZ2Ric2VydmVyL0NoYW5nZUxvZzoKKworCSogTWFrZWZpbGUuaW4gKGNsZWFuKTogQWRkIHJlbW92YWwgZm9yIGkzODYtYXZ4LW1weC5jLAorCWkzODYtYXZ4LW1weC1saW51eC5jLCBhbWQ2NC1hdngtbXB4LmMgYW5kIGFtZDY0LWF2eC1tcHgtbGludXguYy4KKwkoaTM4Ni1hdngtbXB4LmMsIGkzODYtYXZ4LW1weC1saW51eC5jLCBhbWQ2NC1hdngtbXB4LmMpCisJKGFtZDY0LWF2eC1tcHgtbGludXguYyk6IE5ldyBydWxlcy4KKwkoYW1kNjQtYXZ4LW1weC1saW51eC1pcGEubywgaTM4Ni1hdngtbXB4LWxpbnV4LWlwYS5vKTogTmV3IHJ1bGUuCisJKiBjb25maWd1cmUuc3J2IChzcnZfaTM4Nl9yZWdvYmopOiBBZGQgaTM4Ni1hdngtbXB4Lm8uCisJKHNydl9pMzg2X2xpbnV4X3JlZ29iaik6IEFkZCBpMzg2LWF2eC1tcHgtbGludXguby4KKwkoc3J2X2FtZDY0X3JlZ29iaik6IEFkZCBhbWQ2NC1hdngtbXB4Lm8uCisJKHNydl9hbWQ2NF9saW51eF9yZWdvYmopOiBBZGQgYW1kNjQtYXZ4LW1weC1saW51eC5vLgorCShzcnZfaTM4Nl94bWxmaWxlcyk6IEFkZCBpMzg2L2kzODYtYXZ4LW1weC54bWwuCisJKHNydl9hbWQ2NF94bWxmaWxlcyk6IEFkZCBpMzg2L2FtZDY0LWF2eC1tcHgueG1sLgorCShzcnZfaTM4Nl9saW51eF94bWxmaWxlcyk6IEFkZCBpMzg2L2kzODYtYXZ4LW1weC1saW51eC54bWwuCisJKHNydl9hbWQ2NF9saW51eF94bWxmaWxlcyk6IEFkZCBpMzg2L2FtZDY0LWF2eC1tcHgtbGludXgueG1sLgorCShpcGFfaTM4Nl9saW51eF9yZWdvYmopOiBBZGQgaTM4Ni1hdngtbXB4LWxpbnV4LWlwYS5vLgorCShpcGFfYW1kNjRfbGludXhfcmVnb2JqKTogQWRkIGFtZDY0LWF2eC1tcHgtbGludXgtaXBhLm8uCisJKiBsaW51eC14ODYtbG93LmMgKHg4Nl9saW51eF9yZWFkX2Rlc2NyaXB0aW9uKTogQWRkIGNhc2UgZm9yCisJWDg2X1hTVEFURV9BVlhfTVBYX01BU0suCisJKHg4Nl9nZXRfaXBhX3RkZXNjX2lkeCk6IEFkZCBjYXNlcyBmb3IgYXZ4X21weC4KKwkoaW5pdGlhbGl6ZV9sb3dfYXJjaCk6IENhbGwgaW5pdF9yZWdpc3RlcnNfYW1kNjRfYXZ4X21weF9saW51eCBhbmQKKwlpbml0X3JlZ2lzdGVyc19pMzg2X2F2eF9tcHhfbGludXguCisJKiBsaW51eC1pMzg2LWlwYS5jIChnZXRfaXBhX3RkZXNjKTogQWRkIGNhc2UgZm9yIGF2eF9tcHguCisJKGluaXRpYWxpemVfbG93X3RyYWNlcG9pbnQpOiBDYWxsCisJaW5pdF9yZWdpc3RlcnNfaTM4Nl9hdnhfbXB4X2xpbnV4LgorCSogbGludXgtYW1kNjQtaXBhLmMgKGdldF9pcGFfdGRlc2MpOiAgQWRkIGNhc2UgZm9yIGF2eF9tcHguCisJKGluaXRpYWxpemVfbG93X3RyYWNlcG9pbnQpOiBDYWxsCisJaW5pdF9yZWdpc3RlcnNfYW1kNjRfYXZ4X21weF9saW51eC4KKwkqIGxpbnV4LXg4Ni10ZGVzYy5oIChYODZfVERFU0NfQVZYX01QWCk6IE5ldyBlbnVtIHZhbHVlLgorCShpbml0X3JlZ2lzdGVyc19hbWQ2NF9hdnhfbXB4X2xpbnV4LCB0ZGVzY19hbWQ2NF9hdnhfbXB4X2xpbnV4KQorCShpbml0X3JlZ2lzdGVyc19pMzg2X2F2eF9tcHhfbGludXgsIHRkZXNjX2kzODZfYXZ4X21weF9saW51eCk6IE5ldworCWRlY2xhcmF0aW9ucy4KKworCisKKworZGlmZiAtLWdpdCBhL2dkYi9hbWQ2NC1saW51eC10ZGVwLmMgYi9nZGIvYW1kNjQtbGludXgtdGRlcC5jCitpbmRleCAyMWJjZDk5Li41MzI3ZjdjIDEwMDY0NAorLS0tIGEvZ2RiL2FtZDY0LWxpbnV4LXRkZXAuYworKysrIGIvZ2RiL2FtZDY0LWxpbnV4LXRkZXAuYworQEAgLTQzLDYgKzQzLDcgQEAKKyAjaW5jbHVkZSAiZmVhdHVyZXMvaTM4Ni9hbWQ2NC1saW51eC5jIgorICNpbmNsdWRlICJmZWF0dXJlcy9pMzg2L2FtZDY0LWF2eC1saW51eC5jIgorICNpbmNsdWRlICJmZWF0dXJlcy9pMzg2L2FtZDY0LW1weC1saW51eC5jIgorKyNpbmNsdWRlICJmZWF0dXJlcy9pMzg2L2FtZDY0LWF2eC1tcHgtbGludXguYyIKKyAjaW5jbHVkZSAiZmVhdHVyZXMvaTM4Ni9hbWQ2NC1hdng1MTItbGludXguYyIKKworICNpbmNsdWRlICJmZWF0dXJlcy9pMzg2L3gzMi1saW51eC5jIgorQEAgLTE1OTAsNiArMTU5MSwxMSBAQCBhbWQ2NF9saW51eF9jb3JlX3JlYWRfZGVzY3JpcHRpb24gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorIAlyZXR1cm4gdGRlc2NfeDMyX2F2eF9saW51eDsgIC8qIE5vIHgzMiBNUFggZmFsbGluZyBiYWNrIHRvIEFWWC4gICovCisgICAgICAgZWxzZQorIAlyZXR1cm4gdGRlc2NfYW1kNjRfbXB4X2xpbnV4OworKyAgICBjYXNlIFg4Nl9YU1RBVEVfQVZYX01QWF9NQVNLOgorKyAgICAgIGlmIChnZGJhcmNoX3B0cl9iaXQgKGdkYmFyY2gpID09IDMyKQorKwlyZXR1cm4gdGRlc2NfeDMyX2F2eF9saW51eDsgIC8qIE5vIHgzMiBNUFggZmFsbGluZyBiYWNrIHRvIEFWWC4gICovCisrICAgICAgZWxzZQorKwlyZXR1cm4gdGRlc2NfYW1kNjRfYXZ4X21weF9saW51eDsKKyAgICAgY2FzZSBYODZfWFNUQVRFX0FWWF9NQVNLOgorICAgICAgIGlmIChnZGJhcmNoX3B0cl9iaXQgKGdkYmFyY2gpID09IDMyKQorIAlyZXR1cm4gdGRlc2NfeDMyX2F2eF9saW51eDsKK0BAIC0yMjg1LDYgKzIyOTEsNyBAQCBfaW5pdGlhbGl6ZV9hbWQ2NF9saW51eF90ZGVwICh2b2lkKQorICAgaW5pdGlhbGl6ZV90ZGVzY19hbWQ2NF9saW51eCAoKTsKKyAgIGluaXRpYWxpemVfdGRlc2NfYW1kNjRfYXZ4X2xpbnV4ICgpOworICAgaW5pdGlhbGl6ZV90ZGVzY19hbWQ2NF9tcHhfbGludXggKCk7CisrICBpbml0aWFsaXplX3RkZXNjX2FtZDY0X2F2eF9tcHhfbGludXggKCk7CisgICBpbml0aWFsaXplX3RkZXNjX2FtZDY0X2F2eDUxMl9saW51eCAoKTsKKworICAgaW5pdGlhbGl6ZV90ZGVzY194MzJfbGludXggKCk7CitkaWZmIC0tZ2l0IGEvZ2RiL2FtZDY0LWxpbnV4LXRkZXAuaCBiL2dkYi9hbWQ2NC1saW51eC10ZGVwLmgKK2luZGV4IDg2NzM0NDIuLmQ2NGQ1ZDYgMTAwNjQ0CistLS0gYS9nZGIvYW1kNjQtbGludXgtdGRlcC5oCisrKysgYi9nZGIvYW1kNjQtbGludXgtdGRlcC5oCitAQCAtMzUsNiArMzUsNyBAQAorIGV4dGVybiBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKnRkZXNjX2FtZDY0X2xpbnV4OworIGV4dGVybiBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKnRkZXNjX2FtZDY0X2F2eF9saW51eDsKKyBleHRlcm4gc3RydWN0IHRhcmdldF9kZXNjICp0ZGVzY19hbWQ2NF9tcHhfbGludXg7CisrZXh0ZXJuIHN0cnVjdCB0YXJnZXRfZGVzYyAqdGRlc2NfYW1kNjRfYXZ4X21weF9saW51eDsKKyBleHRlcm4gc3RydWN0IHRhcmdldF9kZXNjICp0ZGVzY19hbWQ2NF9hdng1MTJfbGludXg7CisKKyBleHRlcm4gc3RydWN0IHRhcmdldF9kZXNjICp0ZGVzY194MzJfbGludXg7CitkaWZmIC0tZ2l0IGEvZ2RiL2FtZDY0LXRkZXAuYyBiL2dkYi9hbWQ2NC10ZGVwLmMKK2luZGV4IGZhZTkyYjIuLjg4ZTNiZjggMTAwNjQ0CistLS0gYS9nZGIvYW1kNjQtdGRlcC5jCisrKysgYi9nZGIvYW1kNjQtdGRlcC5jCitAQCAtNDQsNiArNDQsNyBAQAorICNpbmNsdWRlICJmZWF0dXJlcy9pMzg2L2FtZDY0LmMiCisgI2luY2x1ZGUgImZlYXR1cmVzL2kzODYvYW1kNjQtYXZ4LmMiCisgI2luY2x1ZGUgImZlYXR1cmVzL2kzODYvYW1kNjQtbXB4LmMiCisrI2luY2x1ZGUgImZlYXR1cmVzL2kzODYvYW1kNjQtYXZ4LW1weC5jIgorICNpbmNsdWRlICJmZWF0dXJlcy9pMzg2L2FtZDY0LWF2eDUxMi5jIgorCisgI2luY2x1ZGUgImZlYXR1cmVzL2kzODYveDMyLmMiCitAQCAtMzEzMiw2ICszMTMzLDggQEAgYW1kNjRfdGFyZ2V0X2Rlc2NyaXB0aW9uICh1aW50NjRfdCB4Y3IwKQorICAgICAgIHJldHVybiB0ZGVzY19hbWQ2NF9hdng1MTI7CisgICAgIGNhc2UgWDg2X1hTVEFURV9NUFhfTUFTSzoKKyAgICAgICByZXR1cm4gdGRlc2NfYW1kNjRfbXB4OworKyAgICBjYXNlIFg4Nl9YU1RBVEVfQVZYX01QWF9NQVNLOgorKyAgICAgIHJldHVybiB0ZGVzY19hbWQ2NF9hdnhfbXB4OworICAgICBjYXNlIFg4Nl9YU1RBVEVfQVZYX01BU0s6CisgICAgICAgcmV0dXJuIHRkZXNjX2FtZDY0X2F2eDsKKyAgICAgZGVmYXVsdDoKK0BAIC0zMTQ4LDYgKzMxNTEsNyBAQCBfaW5pdGlhbGl6ZV9hbWQ2NF90ZGVwICh2b2lkKQorICAgaW5pdGlhbGl6ZV90ZGVzY19hbWQ2NCAoKTsKKyAgIGluaXRpYWxpemVfdGRlc2NfYW1kNjRfYXZ4ICgpOworICAgaW5pdGlhbGl6ZV90ZGVzY19hbWQ2NF9tcHggKCk7CisrICBpbml0aWFsaXplX3RkZXNjX2FtZDY0X2F2eF9tcHggKCk7CisgICBpbml0aWFsaXplX3RkZXNjX2FtZDY0X2F2eDUxMiAoKTsKKworICAgaW5pdGlhbGl6ZV90ZGVzY194MzIgKCk7CitkaWZmIC0tZ2l0IGEvZ2RiL2NvbW1vbi94ODYteHN0YXRlLmggYi9nZGIvY29tbW9uL3g4Ni14c3RhdGUuaAoraW5kZXggODM4NjQyMC4uMGFhOTE2NCAxMDA2NDQKKy0tLSBhL2dkYi9jb21tb24veDg2LXhzdGF0ZS5oCisrKysgYi9nZGIvY29tbW9uL3g4Ni14c3RhdGUuaAorQEAgLTM5LDkgKzM5LDEwIEBACisgI2RlZmluZSBYODZfWFNUQVRFX1g4N19NQVNLCVg4Nl9YU1RBVEVfWDg3CisgI2RlZmluZSBYODZfWFNUQVRFX1NTRV9NQVNLCShYODZfWFNUQVRFX1g4NyB8IFg4Nl9YU1RBVEVfU1NFKQorICNkZWZpbmUgWDg2X1hTVEFURV9BVlhfTUFTSwkoWDg2X1hTVEFURV9TU0VfTUFTSyB8IFg4Nl9YU1RBVEVfQVZYKQorLSNkZWZpbmUgWDg2X1hTVEFURV9NUFhfTUFTSwkoWDg2X1hTVEFURV9BVlhfTUFTSyB8IFg4Nl9YU1RBVEVfTVBYKQorKyNkZWZpbmUgWDg2X1hTVEFURV9NUFhfTUFTSwkoWDg2X1hTVEFURV9TU0VfTUFTSyB8IFg4Nl9YU1RBVEVfTVBYKQorKyNkZWZpbmUgWDg2X1hTVEFURV9BVlhfTVBYX01BU0sJKFg4Nl9YU1RBVEVfQVZYX01BU0sgfCBYODZfWFNUQVRFX01QWCkKKyAjZGVmaW5lIFg4Nl9YU1RBVEVfQVZYNTEyX01BU0sJKFg4Nl9YU1RBVEVfQVZYX01BU0sgfCBYODZfWFNUQVRFX0FWWDUxMikKKy0jZGVmaW5lIFg4Nl9YU1RBVEVfTVBYX0FWWDUxMl9NQVNLIChYODZfWFNUQVRFX01QWF9NQVNLIHwgWDg2X1hTVEFURV9BVlg1MTIpCisrI2RlZmluZSBYODZfWFNUQVRFX01QWF9BVlg1MTJfTUFTSyAoWDg2X1hTVEFURV9BVlhfTVBYX01BU0sgfCBYODZfWFNUQVRFX0FWWDUxMikKKworICNkZWZpbmUgWDg2X1hTVEFURV9BTExfTUFTSwkoWDg2X1hTVEFURV9NUFhfQVZYNTEyX01BU0spCisKK2RpZmYgLS1naXQgYS9nZGIvZmVhdHVyZXMvTWFrZWZpbGUgYi9nZGIvZmVhdHVyZXMvTWFrZWZpbGUKK2luZGV4IDEwMTczY2YuLmU1YzUxNTQgMTAwNjQ0CistLS0gYS9nZGIvZmVhdHVyZXMvTWFrZWZpbGUKKysrKyBiL2dkYi9mZWF0dXJlcy9NYWtlZmlsZQorQEAgLTUwLDkgKzUwLDExIEBAIFdISUNIID0gYWFyY2g2NCBcCisgCWkzODYvYW1kNjQgaTM4Ni9hbWQ2NC1saW51eCBcCisgCWkzODYvaTM4Ni1hdnggaTM4Ni9pMzg2LWF2eC1saW51eCBcCisgCWkzODYvaTM4Ni1tcHggaTM4Ni9pMzg2LW1weC1saW51eCBcCisrCWkzODYvaTM4Ni1hdngtbXB4IGkzODYvaTM4Ni1hdngtbXB4LWxpbnV4IFwKKyAJaTM4Ni9pMzg2LWF2eDUxMiBpMzg2L2kzODYtYXZ4NTEyLWxpbnV4IFwKKyAJaTM4Ni9hbWQ2NC1hdnggaTM4Ni9hbWQ2NC1hdngtbGludXggXAorIAlpMzg2L2FtZDY0LW1weCBpMzg2L2FtZDY0LW1weC1saW51eCBcCisrCWkzODYvYW1kNjQtYXZ4LW1weCBpMzg2L2FtZDY0LWF2eC1tcHgtbGludXggXAorIAlpMzg2L2FtZDY0LWF2eDUxMiBpMzg2L2FtZDY0LWF2eDUxMi1saW51eCBcCisgCWkzODYveDMyIGkzODYveDMyLWxpbnV4IFwKKyAJaTM4Ni94MzItYXZ4IGkzODYveDMyLWF2eC1saW51eCBcCitAQCAtODMsNyArODUsOSBAQCBpMzg2L2FtZDY0LWxpbnV4LWV4cGVkaXRlID0gcmJwLHJzcCxyaXAKKyBpMzg2L2kzODYtYXZ4LWV4cGVkaXRlID0gZWJwLGVzcCxlaXAKKyBpMzg2L2kzODYtYXZ4LWxpbnV4LWV4cGVkaXRlID0gZWJwLGVzcCxlaXAKKyBpMzg2L2kzODYtbXB4LWV4cGVkaXRlID0gZWJwLGVzcCxlaXAKKytpMzg2L2kzODYtYXZ4LW1weC1leHBlZGl0ZSA9IGVicCxlc3AsZWlwCisgaTM4Ni9pMzg2LW1weC1saW51eC1leHBlZGl0ZSA9IGVicCxlc3AsZWlwCisraTM4Ni9pMzg2LWF2eC1tcHgtbGludXgtZXhwZWRpdGUgPSBlYnAsZXNwLGVpcAorIGkzODYvaTM4Ni1hdng1MTItZXhwZWRpdGUgPSBlYnAsZXNwLGVpcAorIGkzODYvaTM4Ni1hdng1MTItbGludXgtZXhwZWRpdGUgPSBlYnAsZXNwLGVpcAorIGkzODYvaTM4Ni1tbXgtZXhwZWRpdGUgPSBlYnAsZXNwLGVpcAorQEAgLTkxLDcgKzk1LDkgQEAgaTM4Ni9pMzg2LW1teC1saW51eC1leHBlZGl0ZSA9IGVicCxlc3AsZWlwCisgaTM4Ni9hbWQ2NC1hdngtZXhwZWRpdGUgPSByYnAscnNwLHJpcAorIGkzODYvYW1kNjQtYXZ4LWxpbnV4LWV4cGVkaXRlID0gcmJwLHJzcCxyaXAKKyBpMzg2L2FtZDY0LW1weC1leHBlZGl0ZSA9IHJicCxyc3AscmlwCisraTM4Ni9hbWQ2NC1hdngtbXB4LWV4cGVkaXRlID0gcmJwLHJzcCxyaXAKKyBpMzg2L2FtZDY0LW1weC1saW51eC1leHBlZGl0ZSA9IHJicCxyc3AscmlwCisraTM4Ni9hbWQ2NC1hdngtbXB4LWxpbnV4LWV4cGVkaXRlID0gcmJwLHJzcCxyaXAKKyBpMzg2L2FtZDY0LWF2eDUxMi1leHBlZGl0ZSA9IHJicCxyc3AscmlwCisgaTM4Ni9hbWQ2NC1hdng1MTItbGludXgtZXhwZWRpdGUgPSByYnAscnNwLHJpcAorIGkzODYveDMyLWV4cGVkaXRlID0gcmJwLHJzcCxyaXAKK0BAIC0xNTYsNiArMTYyLDggQEAgWE1MVE9DID0gXAorIAlpMzg2L2FtZDY0LWxpbnV4LnhtbCBcCisgCWkzODYvYW1kNjQtbXB4LWxpbnV4LnhtbCBcCisgCWkzODYvYW1kNjQtbXB4LnhtbCBcCisrCWkzODYvYW1kNjQtYXZ4LW1weC1saW51eC54bWwgXAorKwlpMzg2L2FtZDY0LWF2eC1tcHgueG1sIFwKKyAJaTM4Ni9hbWQ2NC54bWwgXAorIAlpMzg2L2kzODYtYXZ4LWxpbnV4LnhtbCBcCisgCWkzODYvaTM4Ni1hdngueG1sIFwKK0BAIC0xNjYsNiArMTc0LDggQEAgWE1MVE9DID0gXAorIAlpMzg2L2kzODYtbW14LnhtbCBcCisgCWkzODYvaTM4Ni1tcHgtbGludXgueG1sIFwKKyAJaTM4Ni9pMzg2LW1weC54bWwgXAorKwlpMzg2L2kzODYtYXZ4LW1weC1saW51eC54bWwgXAorKwlpMzg2L2kzODYtYXZ4LW1weC54bWwgXAorIAlpMzg2L2kzODYueG1sIFwKKyAJaTM4Ni94MzItYXZ4LWxpbnV4LnhtbCBcCisgCWkzODYveDMyLWF2eC54bWwgXAorQEAgLTI3MSw2ICsyODEsMTAgQEAgJChvdXRkaXIpL2kzODYvaTM4Ni1tcHguZGF0OiBpMzg2LzMyYml0LWNvcmUueG1sIGkzODYvMzJiaXQtYXZ4LnhtbCBcCisgCQkJICAgICAgIGkzODYvMzJiaXQtbXB4LnhtbAorICQob3V0ZGlyKS9pMzg2L2kzODYtbXB4LWxpbnV4LmRhdDogaTM4Ni8zMmJpdC1jb3JlLnhtbCAJaTM4Ni8zMmJpdC1hdngueG1sIFwKKyAJCQkgICAgICAgaTM4Ni8zMmJpdC1saW51eC54bWwgaTM4Ni8zMmJpdC1tcHgueG1sCisrJChvdXRkaXIpL2kzODYvaTM4Ni1tcHgtbGludXguZGF0OiBpMzg2LzMyYml0LWNvcmUueG1sIFwKKysJCQkgICAgICAgaTM4Ni8zMmJpdC1saW51eC54bWwgaTM4Ni8zMmJpdC1tcHgueG1sCisrJChvdXRkaXIpL2kzODYvaTM4Ni1hdngtbXB4LWxpbnV4LmRhdDogaTM4Ni8zMmJpdC1jb3JlLnhtbCBcCisrCQkJICAgICAgIGkzODYvMzJiaXQtbGludXgueG1sIGkzODYvMzJiaXQtbXB4LnhtbAorICQob3V0ZGlyKS9pMzg2L2kzODYtYXZ4NTEyLmRhdDogaTM4Ni8zMmJpdC1jb3JlLnhtbCBpMzg2LzMyYml0LWF2eC54bWwgXAorIAkJCSAgICAgICBpMzg2LzMyYml0LW1weC54bWwgaTM4Ni8zMmJpdC1hdng1MTIueG1sCisgJChvdXRkaXIpL2kzODYvaTM4Ni1hdng1MTItbGludXguZGF0OiBpMzg2LzMyYml0LWNvcmUueG1sIGkzODYvMzJiaXQtYXZ4LnhtbCBcCitAQCAtMjgyLDggKzI5NiwxMiBAQCAkKG91dGRpcikvaTM4Ni9hbWQ2NC1hdngtbGludXguZGF0OiBpMzg2LzY0Yml0LWNvcmUueG1sIGkzODYvNjRiaXQtYXZ4LnhtbCBcCisgCQkJCSAgICBpMzg2LzY0Yml0LWxpbnV4LnhtbAorICQob3V0ZGlyKS9pMzg2L2FtZDY0LW1weC1saW51eC5kYXQ6IGkzODYvNjRiaXQtY29yZS54bWwgaTM4Ni82NGJpdC1hdngueG1sIFwKKyAJCQkgICAgICAgaTM4Ni82NGJpdC1saW51eC54bWwgaTM4Ni82NGJpdC1tcHgueG1sCisrJChvdXRkaXIpL2kzODYvYW1kNjQtYXZ4LW1weC1saW51eC5kYXQ6IGkzODYvNjRiaXQtY29yZS54bWwgXAorKwkJCSAgICAgICBpMzg2LzY0Yml0LWxpbnV4LnhtbCBpMzg2LzY0Yml0LW1weC54bWwKKyAkKG91dGRpcikvaTM4Ni9hbWQ2NC1tcHguZGF0OiBpMzg2LzY0Yml0LWNvcmUueG1sIGkzODYvNjRiaXQtYXZ4LnhtbCBcCisgCQkJICAgICAgIGkzODYvNjRiaXQtbXB4LnhtbAorKyQob3V0ZGlyKS9pMzg2L2FtZDY0LWF2eC1tcHguZGF0OiBpMzg2LzY0Yml0LWNvcmUueG1sIFwKKysJCQkgICAgICAgaTM4Ni82NGJpdC1tcHgueG1sCisgJChvdXRkaXIpL2kzODYvYW1kNjQtYXZ4NTEyLmRhdDogaTM4Ni82NGJpdC1jb3JlLnhtbCBpMzg2LzY0Yml0LWF2eC54bWwgXAorIAkJCSAgICAgICBpMzg2LzY0Yml0LW1weC54bWwgaTM4Ni82NGJpdC1hdng1MTIueG1sCisgJChvdXRkaXIpL2kzODYvYW1kNjQtYXZ4NTEyLWxpbnV4LmRhdDogaTM4Ni82NGJpdC1jb3JlLnhtbCBpMzg2LzY0Yml0LWF2eC54bWwgXAorZGlmZiAtLWdpdCBhL2dkYi9mZWF0dXJlcy9pMzg2L2FtZDY0LWF2eC1tcHgtbGludXguYyBiL2dkYi9mZWF0dXJlcy9pMzg2L2FtZDY0LWF2eC1tcHgtbGludXguYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjM3YjRjODEKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi9mZWF0dXJlcy9pMzg2L2FtZDY0LWF2eC1tcHgtbGludXguYworQEAgLTAsMCArMSwyMTEgQEAKKysvKiBUSElTIEZJTEUgSVMgR0VORVJBVEVELiAgLSotIGJ1ZmZlci1yZWFkLW9ubHk6IHQgLSotIHZpOnNldCBybzoKKysgIE9yaWdpbmFsOiBhbWQ2NC1hdngtbXB4LWxpbnV4LnhtbCAqLworKworKyNpbmNsdWRlICJkZWZzLmgiCisrI2luY2x1ZGUgIm9zYWJpLmgiCisrI2luY2x1ZGUgInRhcmdldC1kZXNjcmlwdGlvbnMuaCIKKysKKytzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKnRkZXNjX2FtZDY0X2F2eF9tcHhfbGludXg7Cisrc3RhdGljIHZvaWQKKytpbml0aWFsaXplX3RkZXNjX2FtZDY0X2F2eF9tcHhfbGludXggKHZvaWQpCisreworKyAgc3RydWN0IHRhcmdldF9kZXNjICpyZXN1bHQgPSBhbGxvY2F0ZV90YXJnZXRfZGVzY3JpcHRpb24gKCk7CisrICBzdHJ1Y3QgdGRlc2NfZmVhdHVyZSAqZmVhdHVyZTsKKysgIHN0cnVjdCB0ZGVzY190eXBlICpmaWVsZF90eXBlOworKyAgc3RydWN0IHRkZXNjX3R5cGUgKnR5cGU7CisrCisrICBzZXRfdGRlc2NfYXJjaGl0ZWN0dXJlIChyZXN1bHQsIGJmZF9zY2FuX2FyY2ggKCJpMzg2Ong4Ni02NCIpKTsKKysKKysgIHNldF90ZGVzY19vc2FiaSAocmVzdWx0LCBvc2FiaV9mcm9tX3RkZXNjX3N0cmluZyAoIkdOVS9MaW51eCIpKTsKKysKKysgIGZlYXR1cmUgPSB0ZGVzY19jcmVhdGVfZmVhdHVyZSAocmVzdWx0LCAib3JnLmdudS5nZGIuaTM4Ni5jb3JlIik7CisrICBmaWVsZF90eXBlID0gdGRlc2NfY3JlYXRlX2ZsYWdzIChmZWF0dXJlLCAiaTM4Nl9lZmxhZ3MiLCA0KTsKKysgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAwLCAiQ0YiKTsKKysgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxLCAiIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMiwgIlBGIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgNCwgIkFGIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgNiwgIlpGIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgNywgIlNGIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgOCwgIlRGIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgOSwgIklGIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTAsICJERiIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDExLCAiT0YiKTsKKysgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxNCwgIk5UIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTYsICJSRiIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDE3LCAiVk0iKTsKKysgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxOCwgIkFDIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTksICJWSUYiKTsKKysgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAyMCwgIlZJUCIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDIxLCAiSUQiKTsKKysKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJyYXgiLCAwLCAxLCBOVUxMLCA2NCwgImludDY0Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAicmJ4IiwgMSwgMSwgTlVMTCwgNjQsICJpbnQ2NCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInJjeCIsIDIsIDEsIE5VTEwsIDY0LCAiaW50NjQiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJyZHgiLCAzLCAxLCBOVUxMLCA2NCwgImludDY0Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAicnNpIiwgNCwgMSwgTlVMTCwgNjQsICJpbnQ2NCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInJkaSIsIDUsIDEsIE5VTEwsIDY0LCAiaW50NjQiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJyYnAiLCA2LCAxLCBOVUxMLCA2NCwgImRhdGFfcHRyIik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAicnNwIiwgNywgMSwgTlVMTCwgNjQsICJkYXRhX3B0ciIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInI4IiwgOCwgMSwgTlVMTCwgNjQsICJpbnQ2NCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInI5IiwgOSwgMSwgTlVMTCwgNjQsICJpbnQ2NCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInIxMCIsIDEwLCAxLCBOVUxMLCA2NCwgImludDY0Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAicjExIiwgMTEsIDEsIE5VTEwsIDY0LCAiaW50NjQiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJyMTIiLCAxMiwgMSwgTlVMTCwgNjQsICJpbnQ2NCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInIxMyIsIDEzLCAxLCBOVUxMLCA2NCwgImludDY0Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAicjE0IiwgMTQsIDEsIE5VTEwsIDY0LCAiaW50NjQiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJyMTUiLCAxNSwgMSwgTlVMTCwgNjQsICJpbnQ2NCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInJpcCIsIDE2LCAxLCBOVUxMLCA2NCwgImNvZGVfcHRyIik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZWZsYWdzIiwgMTcsIDEsIE5VTEwsIDMyLCAiaTM4Nl9lZmxhZ3MiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJjcyIsIDE4LCAxLCBOVUxMLCAzMiwgImludDMyIik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAic3MiLCAxOSwgMSwgTlVMTCwgMzIsICJpbnQzMiIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImRzIiwgMjAsIDEsIE5VTEwsIDMyLCAiaW50MzIiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJlcyIsIDIxLCAxLCBOVUxMLCAzMiwgImludDMyIik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZnMiLCAyMiwgMSwgTlVMTCwgMzIsICJpbnQzMiIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImdzIiwgMjMsIDEsIE5VTEwsIDMyLCAiaW50MzIiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJzdDAiLCAyNCwgMSwgTlVMTCwgODAsICJpMzg3X2V4dCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInN0MSIsIDI1LCAxLCBOVUxMLCA4MCwgImkzODdfZXh0Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAic3QyIiwgMjYsIDEsIE5VTEwsIDgwLCAiaTM4N19leHQiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJzdDMiLCAyNywgMSwgTlVMTCwgODAsICJpMzg3X2V4dCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInN0NCIsIDI4LCAxLCBOVUxMLCA4MCwgImkzODdfZXh0Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAic3Q1IiwgMjksIDEsIE5VTEwsIDgwLCAiaTM4N19leHQiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJzdDYiLCAzMCwgMSwgTlVMTCwgODAsICJpMzg3X2V4dCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInN0NyIsIDMxLCAxLCBOVUxMLCA4MCwgImkzODdfZXh0Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZmN0cmwiLCAzMiwgMSwgImZsb2F0IiwgMzIsICJpbnQiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJmc3RhdCIsIDMzLCAxLCAiZmxvYXQiLCAzMiwgImludCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImZ0YWciLCAzNCwgMSwgImZsb2F0IiwgMzIsICJpbnQiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJmaXNlZyIsIDM1LCAxLCAiZmxvYXQiLCAzMiwgImludCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImZpb2ZmIiwgMzYsIDEsICJmbG9hdCIsIDMyLCAiaW50Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZm9zZWciLCAzNywgMSwgImZsb2F0IiwgMzIsICJpbnQiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJmb29mZiIsIDM4LCAxLCAiZmxvYXQiLCAzMiwgImludCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImZvcCIsIDM5LCAxLCAiZmxvYXQiLCAzMiwgImludCIpOworKworKyAgZmVhdHVyZSA9IHRkZXNjX2NyZWF0ZV9mZWF0dXJlIChyZXN1bHQsICJvcmcuZ251LmdkYi5pMzg2LnNzZSIpOworKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJpZWVlX3NpbmdsZSIpOworKyAgdGRlc2NfY3JlYXRlX3ZlY3RvciAoZmVhdHVyZSwgInY0ZiIsIGZpZWxkX3R5cGUsIDQpOworKworKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJpZWVlX2RvdWJsZSIpOworKyAgdGRlc2NfY3JlYXRlX3ZlY3RvciAoZmVhdHVyZSwgInYyZCIsIGZpZWxkX3R5cGUsIDIpOworKworKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJpbnQ4Iik7CisrICB0ZGVzY19jcmVhdGVfdmVjdG9yIChmZWF0dXJlLCAidjE2aTgiLCBmaWVsZF90eXBlLCAxNik7CisrCisrICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgImludDE2Iik7CisrICB0ZGVzY19jcmVhdGVfdmVjdG9yIChmZWF0dXJlLCAidjhpMTYiLCBmaWVsZF90eXBlLCA4KTsKKysKKysgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAiaW50MzIiKTsKKysgIHRkZXNjX2NyZWF0ZV92ZWN0b3IgKGZlYXR1cmUsICJ2NGkzMiIsIGZpZWxkX3R5cGUsIDQpOworKworKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJpbnQ2NCIpOworKyAgdGRlc2NfY3JlYXRlX3ZlY3RvciAoZmVhdHVyZSwgInYyaTY0IiwgZmllbGRfdHlwZSwgMik7CisrCisrICB0eXBlID0gdGRlc2NfY3JlYXRlX3VuaW9uIChmZWF0dXJlLCAidmVjMTI4Iik7CisrICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgInY0ZiIpOworKyAgdGRlc2NfYWRkX2ZpZWxkICh0eXBlLCAidjRfZmxvYXQiLCBmaWVsZF90eXBlKTsKKysgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAidjJkIik7CisrICB0ZGVzY19hZGRfZmllbGQgKHR5cGUsICJ2Ml9kb3VibGUiLCBmaWVsZF90eXBlKTsKKysgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAidjE2aTgiKTsKKysgIHRkZXNjX2FkZF9maWVsZCAodHlwZSwgInYxNl9pbnQ4IiwgZmllbGRfdHlwZSk7CisrICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgInY4aTE2Iik7CisrICB0ZGVzY19hZGRfZmllbGQgKHR5cGUsICJ2OF9pbnQxNiIsIGZpZWxkX3R5cGUpOworKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJ2NGkzMiIpOworKyAgdGRlc2NfYWRkX2ZpZWxkICh0eXBlLCAidjRfaW50MzIiLCBmaWVsZF90eXBlKTsKKysgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAidjJpNjQiKTsKKysgIHRkZXNjX2FkZF9maWVsZCAodHlwZSwgInYyX2ludDY0IiwgZmllbGRfdHlwZSk7CisrICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgInVpbnQxMjgiKTsKKysgIHRkZXNjX2FkZF9maWVsZCAodHlwZSwgInVpbnQxMjgiLCBmaWVsZF90eXBlKTsKKysKKysgIGZpZWxkX3R5cGUgPSB0ZGVzY19jcmVhdGVfZmxhZ3MgKGZlYXR1cmUsICJpMzg2X214Y3NyIiwgNCk7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMCwgIklFIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMSwgIkRFIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMiwgIlpFIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMywgIk9FIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgNCwgIlVFIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgNSwgIlBFIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgNiwgIkRBWiIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDcsICJJTSIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDgsICJETSIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDksICJaTSIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDEwLCAiT00iKTsKKysgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxMSwgIlVNIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTIsICJQTSIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDE1LCAiRloiKTsKKysKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0wIiwgNDAsIDEsIE5VTEwsIDEyOCwgInZlYzEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTEiLCA0MSwgMSwgTlVMTCwgMTI4LCAidmVjMTI4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieG1tMiIsIDQyLCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0zIiwgNDMsIDEsIE5VTEwsIDEyOCwgInZlYzEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTQiLCA0NCwgMSwgTlVMTCwgMTI4LCAidmVjMTI4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieG1tNSIsIDQ1LCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW02IiwgNDYsIDEsIE5VTEwsIDEyOCwgInZlYzEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTciLCA0NywgMSwgTlVMTCwgMTI4LCAidmVjMTI4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieG1tOCIsIDQ4LCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW05IiwgNDksIDEsIE5VTEwsIDEyOCwgInZlYzEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTEwIiwgNTAsIDEsIE5VTEwsIDEyOCwgInZlYzEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTExIiwgNTEsIDEsIE5VTEwsIDEyOCwgInZlYzEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTEyIiwgNTIsIDEsIE5VTEwsIDEyOCwgInZlYzEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTEzIiwgNTMsIDEsIE5VTEwsIDEyOCwgInZlYzEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTE0IiwgNTQsIDEsIE5VTEwsIDEyOCwgInZlYzEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTE1IiwgNTUsIDEsIE5VTEwsIDEyOCwgInZlYzEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgIm14Y3NyIiwgNTYsIDEsICJ2ZWN0b3IiLCAzMiwgImkzODZfbXhjc3IiKTsKKysKKysgIGZlYXR1cmUgPSB0ZGVzY19jcmVhdGVfZmVhdHVyZSAocmVzdWx0LCAib3JnLmdudS5nZGIuaTM4Ni5saW51eCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgIm9yaWdfcmF4IiwgNTcsIDEsIE5VTEwsIDY0LCAiaW50Iik7CisrCisrICBmZWF0dXJlID0gdGRlc2NfY3JlYXRlX2ZlYXR1cmUgKHJlc3VsdCwgIm9yZy5nbnUuZ2RiLmkzODYuYXZ4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tMGgiLCA1OCwgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTFoIiwgNTksIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW0yaCIsIDYwLCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tM2giLCA2MSwgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTRoIiwgNjIsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW01aCIsIDYzLCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tNmgiLCA2NCwgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTdoIiwgNjUsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW04aCIsIDY2LCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tOWgiLCA2NywgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTEwaCIsIDY4LCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tMTFoIiwgNjksIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW0xMmgiLCA3MCwgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTEzaCIsIDcxLCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tMTRoIiwgNzIsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW0xNWgiLCA3MywgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOworKworKyAgZmVhdHVyZSA9IHRkZXNjX2NyZWF0ZV9mZWF0dXJlIChyZXN1bHQsICJvcmcuZ251LmdkYi5pMzg2Lm1weCIpOworKyAgdHlwZSA9IHRkZXNjX2NyZWF0ZV9zdHJ1Y3QgKGZlYXR1cmUsICJicjEyOCIpOworKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJ1aW50NjQiKTsKKysgIHRkZXNjX2FkZF9maWVsZCAodHlwZSwgImxib3VuZCIsIGZpZWxkX3R5cGUpOworKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJ1aW50NjQiKTsKKysgIHRkZXNjX2FkZF9maWVsZCAodHlwZSwgInVib3VuZF9yYXciLCBmaWVsZF90eXBlKTsKKysKKysgIHR5cGUgPSB0ZGVzY19jcmVhdGVfc3RydWN0IChmZWF0dXJlLCAiX2JuZHN0YXR1cyIpOworKyAgdGRlc2Nfc2V0X3N0cnVjdF9zaXplICh0eXBlLCA4KTsKKysgIHRkZXNjX2FkZF9iaXRmaWVsZCAodHlwZSwgImJkZSIsIDIsIDYzKTsKKysgIHRkZXNjX2FkZF9iaXRmaWVsZCAodHlwZSwgImVycm9yIiwgMCwgMSk7CisrCisrICB0eXBlID0gdGRlc2NfY3JlYXRlX3VuaW9uIChmZWF0dXJlLCAic3RhdHVzIik7CisrICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgImRhdGFfcHRyIik7CisrICB0ZGVzY19hZGRfZmllbGQgKHR5cGUsICJyYXciLCBmaWVsZF90eXBlKTsKKysgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAiX2JuZHN0YXR1cyIpOworKyAgdGRlc2NfYWRkX2ZpZWxkICh0eXBlLCAic3RhdHVzIiwgZmllbGRfdHlwZSk7CisrCisrICB0eXBlID0gdGRlc2NfY3JlYXRlX3N0cnVjdCAoZmVhdHVyZSwgIl9ibmRjZmd1Iik7CisrICB0ZGVzY19zZXRfc3RydWN0X3NpemUgKHR5cGUsIDgpOworKyAgdGRlc2NfYWRkX2JpdGZpZWxkICh0eXBlLCAiYmFzZSIsIDEyLCA2Myk7CisrICB0ZGVzY19hZGRfYml0ZmllbGQgKHR5cGUsICJyZXNlcnZlZCIsIDIsIDExKTsKKysgIHRkZXNjX2FkZF9iaXRmaWVsZCAodHlwZSwgInByZXNlcnZlZCIsIDEsIDEpOworKyAgdGRlc2NfYWRkX2JpdGZpZWxkICh0eXBlLCAiZW5hYmxlZCIsIDAsIDApOworKworKyAgdHlwZSA9IHRkZXNjX2NyZWF0ZV91bmlvbiAoZmVhdHVyZSwgImNmZ3UiKTsKKysgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAiZGF0YV9wdHIiKTsKKysgIHRkZXNjX2FkZF9maWVsZCAodHlwZSwgInJhdyIsIGZpZWxkX3R5cGUpOworKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJfYm5kY2ZndSIpOworKyAgdGRlc2NfYWRkX2ZpZWxkICh0eXBlLCAiY29uZmlnIiwgZmllbGRfdHlwZSk7CisrCisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiYm5kMHJhdyIsIDc0LCAxLCBOVUxMLCAxMjgsICJicjEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImJuZDFyYXciLCA3NSwgMSwgTlVMTCwgMTI4LCAiYnIxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJibmQycmF3IiwgNzYsIDEsIE5VTEwsIDEyOCwgImJyMTI4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiYm5kM3JhdyIsIDc3LCAxLCBOVUxMLCAxMjgsICJicjEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImJuZGNmZ3UiLCA3OCwgMSwgTlVMTCwgNjQsICJjZmd1Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiYm5kc3RhdHVzIiwgNzksIDEsIE5VTEwsIDY0LCAic3RhdHVzIik7CisrCisrICB0ZGVzY19hbWQ2NF9hdnhfbXB4X2xpbnV4ID0gcmVzdWx0OworK30KK2RpZmYgLS1naXQgYS9nZGIvZmVhdHVyZXMvaTM4Ni9hbWQ2NC1hdngtbXB4LWxpbnV4LnhtbCBiL2dkYi9mZWF0dXJlcy9pMzg2L2FtZDY0LWF2eC1tcHgtbGludXgueG1sCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNTI2YzcwMAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL2ZlYXR1cmVzL2kzODYvYW1kNjQtYXZ4LW1weC1saW51eC54bWwKK0BAIC0wLDAgKzEsMTkgQEAKKys8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKys8IS0tIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgZmlsZSwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKKysgICAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAorKyAgICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgLS0+CisrCisrPCEtLSBBTUQ2NCB3aXRoIEFWWCBhbmQgTVBYIC0gSW5jbHVkZXMgTGludXgtb25seSBzcGVjaWFsICJyZWdpc3RlciIuICAtLT4KKysKKys8IURPQ1RZUEUgdGFyZ2V0IFNZU1RFTSAiZ2RiLXRhcmdldC5kdGQiPgorKzx0YXJnZXQ+CisrICA8YXJjaGl0ZWN0dXJlPmkzODY6eDg2LTY0PC9hcmNoaXRlY3R1cmU+CisrICA8b3NhYmk+R05VL0xpbnV4PC9vc2FiaT4KKysgIDx4aTppbmNsdWRlIGhyZWY9IjY0Yml0LWNvcmUueG1sIi8+CisrICA8eGk6aW5jbHVkZSBocmVmPSI2NGJpdC1zc2UueG1sIi8+CisrICA8eGk6aW5jbHVkZSBocmVmPSI2NGJpdC1saW51eC54bWwiLz4KKysgIDx4aTppbmNsdWRlIGhyZWY9IjY0Yml0LWF2eC54bWwiLz4KKysgIDx4aTppbmNsdWRlIGhyZWY9IjY0Yml0LW1weC54bWwiLz4KKys8L3RhcmdldD4KK2RpZmYgLS1naXQgYS9nZGIvZmVhdHVyZXMvaTM4Ni9hbWQ2NC1hdngtbXB4LmMgYi9nZGIvZmVhdHVyZXMvaTM4Ni9hbWQ2NC1hdngtbXB4LmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4xMjc5ZjczCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvZmVhdHVyZXMvaTM4Ni9hbWQ2NC1hdngtbXB4LmMKK0BAIC0wLDAgKzEsMjA2IEBACisrLyogVEhJUyBGSUxFIElTIEdFTkVSQVRFRC4gIC0qLSBidWZmZXItcmVhZC1vbmx5OiB0IC0qLSB2aTpzZXQgcm86CisrICBPcmlnaW5hbDogYW1kNjQtYXZ4LW1weC54bWwgKi8KKysKKysjaW5jbHVkZSAiZGVmcy5oIgorKyNpbmNsdWRlICJvc2FiaS5oIgorKyNpbmNsdWRlICJ0YXJnZXQtZGVzY3JpcHRpb25zLmgiCisrCisrc3RydWN0IHRhcmdldF9kZXNjICp0ZGVzY19hbWQ2NF9hdnhfbXB4OworK3N0YXRpYyB2b2lkCisraW5pdGlhbGl6ZV90ZGVzY19hbWQ2NF9hdnhfbXB4ICh2b2lkKQorK3sKKysgIHN0cnVjdCB0YXJnZXRfZGVzYyAqcmVzdWx0ID0gYWxsb2NhdGVfdGFyZ2V0X2Rlc2NyaXB0aW9uICgpOworKyAgc3RydWN0IHRkZXNjX2ZlYXR1cmUgKmZlYXR1cmU7CisrICBzdHJ1Y3QgdGRlc2NfdHlwZSAqZmllbGRfdHlwZTsKKysgIHN0cnVjdCB0ZGVzY190eXBlICp0eXBlOworKworKyAgc2V0X3RkZXNjX2FyY2hpdGVjdHVyZSAocmVzdWx0LCBiZmRfc2Nhbl9hcmNoICgiaTM4Njp4ODYtNjQiKSk7CisrCisrICBmZWF0dXJlID0gdGRlc2NfY3JlYXRlX2ZlYXR1cmUgKHJlc3VsdCwgIm9yZy5nbnUuZ2RiLmkzODYuY29yZSIpOworKyAgZmllbGRfdHlwZSA9IHRkZXNjX2NyZWF0ZV9mbGFncyAoZmVhdHVyZSwgImkzODZfZWZsYWdzIiwgNCk7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMCwgIkNGIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMSwgIiIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDIsICJQRiIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDQsICJBRiIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDYsICJaRiIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDcsICJTRiIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDgsICJURiIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDksICJJRiIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDEwLCAiREYiKTsKKysgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxMSwgIk9GIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTQsICJOVCIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDE2LCAiUkYiKTsKKysgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxNywgIlZNIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTgsICJBQyIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDE5LCAiVklGIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMjAsICJWSVAiKTsKKysgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAyMSwgIklEIik7CisrCisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAicmF4IiwgMCwgMSwgTlVMTCwgNjQsICJpbnQ2NCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInJieCIsIDEsIDEsIE5VTEwsIDY0LCAiaW50NjQiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJyY3giLCAyLCAxLCBOVUxMLCA2NCwgImludDY0Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAicmR4IiwgMywgMSwgTlVMTCwgNjQsICJpbnQ2NCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInJzaSIsIDQsIDEsIE5VTEwsIDY0LCAiaW50NjQiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJyZGkiLCA1LCAxLCBOVUxMLCA2NCwgImludDY0Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAicmJwIiwgNiwgMSwgTlVMTCwgNjQsICJkYXRhX3B0ciIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInJzcCIsIDcsIDEsIE5VTEwsIDY0LCAiZGF0YV9wdHIiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJyOCIsIDgsIDEsIE5VTEwsIDY0LCAiaW50NjQiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJyOSIsIDksIDEsIE5VTEwsIDY0LCAiaW50NjQiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJyMTAiLCAxMCwgMSwgTlVMTCwgNjQsICJpbnQ2NCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInIxMSIsIDExLCAxLCBOVUxMLCA2NCwgImludDY0Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAicjEyIiwgMTIsIDEsIE5VTEwsIDY0LCAiaW50NjQiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJyMTMiLCAxMywgMSwgTlVMTCwgNjQsICJpbnQ2NCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInIxNCIsIDE0LCAxLCBOVUxMLCA2NCwgImludDY0Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAicjE1IiwgMTUsIDEsIE5VTEwsIDY0LCAiaW50NjQiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJyaXAiLCAxNiwgMSwgTlVMTCwgNjQsICJjb2RlX3B0ciIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImVmbGFncyIsIDE3LCAxLCBOVUxMLCAzMiwgImkzODZfZWZsYWdzIik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiY3MiLCAxOCwgMSwgTlVMTCwgMzIsICJpbnQzMiIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInNzIiwgMTksIDEsIE5VTEwsIDMyLCAiaW50MzIiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJkcyIsIDIwLCAxLCBOVUxMLCAzMiwgImludDMyIik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZXMiLCAyMSwgMSwgTlVMTCwgMzIsICJpbnQzMiIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImZzIiwgMjIsIDEsIE5VTEwsIDMyLCAiaW50MzIiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJncyIsIDIzLCAxLCBOVUxMLCAzMiwgImludDMyIik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAic3QwIiwgMjQsIDEsIE5VTEwsIDgwLCAiaTM4N19leHQiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJzdDEiLCAyNSwgMSwgTlVMTCwgODAsICJpMzg3X2V4dCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInN0MiIsIDI2LCAxLCBOVUxMLCA4MCwgImkzODdfZXh0Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAic3QzIiwgMjcsIDEsIE5VTEwsIDgwLCAiaTM4N19leHQiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJzdDQiLCAyOCwgMSwgTlVMTCwgODAsICJpMzg3X2V4dCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInN0NSIsIDI5LCAxLCBOVUxMLCA4MCwgImkzODdfZXh0Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAic3Q2IiwgMzAsIDEsIE5VTEwsIDgwLCAiaTM4N19leHQiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJzdDciLCAzMSwgMSwgTlVMTCwgODAsICJpMzg3X2V4dCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImZjdHJsIiwgMzIsIDEsICJmbG9hdCIsIDMyLCAiaW50Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZnN0YXQiLCAzMywgMSwgImZsb2F0IiwgMzIsICJpbnQiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJmdGFnIiwgMzQsIDEsICJmbG9hdCIsIDMyLCAiaW50Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZmlzZWciLCAzNSwgMSwgImZsb2F0IiwgMzIsICJpbnQiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJmaW9mZiIsIDM2LCAxLCAiZmxvYXQiLCAzMiwgImludCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImZvc2VnIiwgMzcsIDEsICJmbG9hdCIsIDMyLCAiaW50Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZm9vZmYiLCAzOCwgMSwgImZsb2F0IiwgMzIsICJpbnQiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJmb3AiLCAzOSwgMSwgImZsb2F0IiwgMzIsICJpbnQiKTsKKysKKysgIGZlYXR1cmUgPSB0ZGVzY19jcmVhdGVfZmVhdHVyZSAocmVzdWx0LCAib3JnLmdudS5nZGIuaTM4Ni5zc2UiKTsKKysgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAiaWVlZV9zaW5nbGUiKTsKKysgIHRkZXNjX2NyZWF0ZV92ZWN0b3IgKGZlYXR1cmUsICJ2NGYiLCBmaWVsZF90eXBlLCA0KTsKKysKKysgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAiaWVlZV9kb3VibGUiKTsKKysgIHRkZXNjX2NyZWF0ZV92ZWN0b3IgKGZlYXR1cmUsICJ2MmQiLCBmaWVsZF90eXBlLCAyKTsKKysKKysgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAiaW50OCIpOworKyAgdGRlc2NfY3JlYXRlX3ZlY3RvciAoZmVhdHVyZSwgInYxNmk4IiwgZmllbGRfdHlwZSwgMTYpOworKworKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJpbnQxNiIpOworKyAgdGRlc2NfY3JlYXRlX3ZlY3RvciAoZmVhdHVyZSwgInY4aTE2IiwgZmllbGRfdHlwZSwgOCk7CisrCisrICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgImludDMyIik7CisrICB0ZGVzY19jcmVhdGVfdmVjdG9yIChmZWF0dXJlLCAidjRpMzIiLCBmaWVsZF90eXBlLCA0KTsKKysKKysgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAiaW50NjQiKTsKKysgIHRkZXNjX2NyZWF0ZV92ZWN0b3IgKGZlYXR1cmUsICJ2Mmk2NCIsIGZpZWxkX3R5cGUsIDIpOworKworKyAgdHlwZSA9IHRkZXNjX2NyZWF0ZV91bmlvbiAoZmVhdHVyZSwgInZlYzEyOCIpOworKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJ2NGYiKTsKKysgIHRkZXNjX2FkZF9maWVsZCAodHlwZSwgInY0X2Zsb2F0IiwgZmllbGRfdHlwZSk7CisrICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgInYyZCIpOworKyAgdGRlc2NfYWRkX2ZpZWxkICh0eXBlLCAidjJfZG91YmxlIiwgZmllbGRfdHlwZSk7CisrICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgInYxNmk4Iik7CisrICB0ZGVzY19hZGRfZmllbGQgKHR5cGUsICJ2MTZfaW50OCIsIGZpZWxkX3R5cGUpOworKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJ2OGkxNiIpOworKyAgdGRlc2NfYWRkX2ZpZWxkICh0eXBlLCAidjhfaW50MTYiLCBmaWVsZF90eXBlKTsKKysgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAidjRpMzIiKTsKKysgIHRkZXNjX2FkZF9maWVsZCAodHlwZSwgInY0X2ludDMyIiwgZmllbGRfdHlwZSk7CisrICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgInYyaTY0Iik7CisrICB0ZGVzY19hZGRfZmllbGQgKHR5cGUsICJ2Ml9pbnQ2NCIsIGZpZWxkX3R5cGUpOworKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJ1aW50MTI4Iik7CisrICB0ZGVzY19hZGRfZmllbGQgKHR5cGUsICJ1aW50MTI4IiwgZmllbGRfdHlwZSk7CisrCisrICBmaWVsZF90eXBlID0gdGRlc2NfY3JlYXRlX2ZsYWdzIChmZWF0dXJlLCAiaTM4Nl9teGNzciIsIDQpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDAsICJJRSIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDEsICJERSIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDIsICJaRSIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDMsICJPRSIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDQsICJVRSIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDUsICJQRSIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDYsICJEQVoiKTsKKysgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA3LCAiSU0iKTsKKysgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA4LCAiRE0iKTsKKysgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA5LCAiWk0iKTsKKysgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxMCwgIk9NIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTEsICJVTSIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDEyLCAiUE0iKTsKKysgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxNSwgIkZaIik7CisrCisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieG1tMCIsIDQwLCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0xIiwgNDEsIDEsIE5VTEwsIDEyOCwgInZlYzEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTIiLCA0MiwgMSwgTlVMTCwgMTI4LCAidmVjMTI4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieG1tMyIsIDQzLCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW00IiwgNDQsIDEsIE5VTEwsIDEyOCwgInZlYzEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTUiLCA0NSwgMSwgTlVMTCwgMTI4LCAidmVjMTI4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieG1tNiIsIDQ2LCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW03IiwgNDcsIDEsIE5VTEwsIDEyOCwgInZlYzEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTgiLCA0OCwgMSwgTlVMTCwgMTI4LCAidmVjMTI4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieG1tOSIsIDQ5LCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0xMCIsIDUwLCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0xMSIsIDUxLCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0xMiIsIDUyLCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0xMyIsIDUzLCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0xNCIsIDU0LCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0xNSIsIDU1LCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJteGNzciIsIDU2LCAxLCAidmVjdG9yIiwgMzIsICJpMzg2X214Y3NyIik7CisrCisrICBmZWF0dXJlID0gdGRlc2NfY3JlYXRlX2ZlYXR1cmUgKHJlc3VsdCwgIm9yZy5nbnUuZ2RiLmkzODYuYXZ4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tMGgiLCA1NywgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTFoIiwgNTgsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW0yaCIsIDU5LCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tM2giLCA2MCwgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTRoIiwgNjEsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW01aCIsIDYyLCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tNmgiLCA2MywgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTdoIiwgNjQsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW04aCIsIDY1LCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tOWgiLCA2NiwgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTEwaCIsIDY3LCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tMTFoIiwgNjgsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW0xMmgiLCA2OSwgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTEzaCIsIDcwLCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tMTRoIiwgNzEsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW0xNWgiLCA3MiwgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOworKworKyAgZmVhdHVyZSA9IHRkZXNjX2NyZWF0ZV9mZWF0dXJlIChyZXN1bHQsICJvcmcuZ251LmdkYi5pMzg2Lm1weCIpOworKyAgdHlwZSA9IHRkZXNjX2NyZWF0ZV9zdHJ1Y3QgKGZlYXR1cmUsICJicjEyOCIpOworKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJ1aW50NjQiKTsKKysgIHRkZXNjX2FkZF9maWVsZCAodHlwZSwgImxib3VuZCIsIGZpZWxkX3R5cGUpOworKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJ1aW50NjQiKTsKKysgIHRkZXNjX2FkZF9maWVsZCAodHlwZSwgInVib3VuZF9yYXciLCBmaWVsZF90eXBlKTsKKysKKysgIHR5cGUgPSB0ZGVzY19jcmVhdGVfc3RydWN0IChmZWF0dXJlLCAiX2JuZHN0YXR1cyIpOworKyAgdGRlc2Nfc2V0X3N0cnVjdF9zaXplICh0eXBlLCA4KTsKKysgIHRkZXNjX2FkZF9iaXRmaWVsZCAodHlwZSwgImJkZSIsIDIsIDYzKTsKKysgIHRkZXNjX2FkZF9iaXRmaWVsZCAodHlwZSwgImVycm9yIiwgMCwgMSk7CisrCisrICB0eXBlID0gdGRlc2NfY3JlYXRlX3VuaW9uIChmZWF0dXJlLCAic3RhdHVzIik7CisrICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgImRhdGFfcHRyIik7CisrICB0ZGVzY19hZGRfZmllbGQgKHR5cGUsICJyYXciLCBmaWVsZF90eXBlKTsKKysgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAiX2JuZHN0YXR1cyIpOworKyAgdGRlc2NfYWRkX2ZpZWxkICh0eXBlLCAic3RhdHVzIiwgZmllbGRfdHlwZSk7CisrCisrICB0eXBlID0gdGRlc2NfY3JlYXRlX3N0cnVjdCAoZmVhdHVyZSwgIl9ibmRjZmd1Iik7CisrICB0ZGVzY19zZXRfc3RydWN0X3NpemUgKHR5cGUsIDgpOworKyAgdGRlc2NfYWRkX2JpdGZpZWxkICh0eXBlLCAiYmFzZSIsIDEyLCA2Myk7CisrICB0ZGVzY19hZGRfYml0ZmllbGQgKHR5cGUsICJyZXNlcnZlZCIsIDIsIDExKTsKKysgIHRkZXNjX2FkZF9iaXRmaWVsZCAodHlwZSwgInByZXNlcnZlZCIsIDEsIDEpOworKyAgdGRlc2NfYWRkX2JpdGZpZWxkICh0eXBlLCAiZW5hYmxlZCIsIDAsIDApOworKworKyAgdHlwZSA9IHRkZXNjX2NyZWF0ZV91bmlvbiAoZmVhdHVyZSwgImNmZ3UiKTsKKysgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAiZGF0YV9wdHIiKTsKKysgIHRkZXNjX2FkZF9maWVsZCAodHlwZSwgInJhdyIsIGZpZWxkX3R5cGUpOworKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJfYm5kY2ZndSIpOworKyAgdGRlc2NfYWRkX2ZpZWxkICh0eXBlLCAiY29uZmlnIiwgZmllbGRfdHlwZSk7CisrCisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiYm5kMHJhdyIsIDczLCAxLCBOVUxMLCAxMjgsICJicjEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImJuZDFyYXciLCA3NCwgMSwgTlVMTCwgMTI4LCAiYnIxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJibmQycmF3IiwgNzUsIDEsIE5VTEwsIDEyOCwgImJyMTI4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiYm5kM3JhdyIsIDc2LCAxLCBOVUxMLCAxMjgsICJicjEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImJuZGNmZ3UiLCA3NywgMSwgTlVMTCwgNjQsICJjZmd1Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiYm5kc3RhdHVzIiwgNzgsIDEsIE5VTEwsIDY0LCAic3RhdHVzIik7CisrCisrICB0ZGVzY19hbWQ2NF9hdnhfbXB4ID0gcmVzdWx0OworK30KK2RpZmYgLS1naXQgYS9nZGIvZmVhdHVyZXMvaTM4Ni9hbWQ2NC1hdngtbXB4LnhtbCBiL2dkYi9mZWF0dXJlcy9pMzg2L2FtZDY0LWF2eC1tcHgueG1sCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uM2VlYTZkZAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL2ZlYXR1cmVzL2kzODYvYW1kNjQtYXZ4LW1weC54bWwKK0BAIC0wLDAgKzEsMTcgQEAKKys8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKys8IS0tIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgZmlsZSwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKKysgICAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAorKyAgICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgLS0+CisrCisrPCEtLSBBTUQ2NCB3aXRoIEFWWCBhbmQgTVBYIC0tPgorKworKzwhRE9DVFlQRSB0YXJnZXQgU1lTVEVNICJnZGItdGFyZ2V0LmR0ZCI+CisrPHRhcmdldD4KKysgIDxhcmNoaXRlY3R1cmU+aTM4Njp4ODYtNjQ8L2FyY2hpdGVjdHVyZT4KKysgIDx4aTppbmNsdWRlIGhyZWY9IjY0Yml0LWNvcmUueG1sIi8+CisrICA8eGk6aW5jbHVkZSBocmVmPSI2NGJpdC1zc2UueG1sIi8+CisrICA8eGk6aW5jbHVkZSBocmVmPSI2NGJpdC1hdngueG1sIi8+CisrICA8eGk6aW5jbHVkZSBocmVmPSI2NGJpdC1tcHgueG1sIi8+CisrPC90YXJnZXQ+CitkaWZmIC0tZ2l0IGEvZ2RiL2ZlYXR1cmVzL2kzODYvYW1kNjQtbXB4LWxpbnV4LmMgYi9nZGIvZmVhdHVyZXMvaTM4Ni9hbWQ2NC1tcHgtbGludXguYworaW5kZXggODZhMTc3NC4uNWMxNTg0YiAxMDA2NDQKKy0tLSBhL2dkYi9mZWF0dXJlcy9pMzg2L2FtZDY0LW1weC1saW51eC5jCisrKysgYi9nZGIvZmVhdHVyZXMvaTM4Ni9hbWQ2NC1tcHgtbGludXguYworQEAgLTE1MSwyNCArMTUxLDYgQEAgaW5pdGlhbGl6ZV90ZGVzY19hbWQ2NF9tcHhfbGludXggKHZvaWQpCisgICBmZWF0dXJlID0gdGRlc2NfY3JlYXRlX2ZlYXR1cmUgKHJlc3VsdCwgIm9yZy5nbnUuZ2RiLmkzODYubGludXgiKTsKKyAgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJvcmlnX3JheCIsIDU3LCAxLCBOVUxMLCA2NCwgImludCIpOworCistICBmZWF0dXJlID0gdGRlc2NfY3JlYXRlX2ZlYXR1cmUgKHJlc3VsdCwgIm9yZy5nbnUuZ2RiLmkzODYuYXZ4Iik7CistICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tMGgiLCA1OCwgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOworLSAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTFoIiwgNTksIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKKy0gIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW0yaCIsIDYwLCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7CistICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tM2giLCA2MSwgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOworLSAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTRoIiwgNjIsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKKy0gIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW01aCIsIDYzLCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7CistICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tNmgiLCA2NCwgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOworLSAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTdoIiwgNjUsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKKy0gIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW04aCIsIDY2LCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7CistICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tOWgiLCA2NywgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOworLSAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTEwaCIsIDY4LCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7CistICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tMTFoIiwgNjksIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKKy0gIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW0xMmgiLCA3MCwgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOworLSAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTEzaCIsIDcxLCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7CistICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tMTRoIiwgNzIsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKKy0gIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW0xNWgiLCA3MywgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOworLQorICAgZmVhdHVyZSA9IHRkZXNjX2NyZWF0ZV9mZWF0dXJlIChyZXN1bHQsICJvcmcuZ251LmdkYi5pMzg2Lm1weCIpOworICAgdHlwZSA9IHRkZXNjX2NyZWF0ZV9zdHJ1Y3QgKGZlYXR1cmUsICJicjEyOCIpOworICAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJ1aW50NjQiKTsKK0BAIC0yMDAsMTIgKzE4MiwxMiBAQCBpbml0aWFsaXplX3RkZXNjX2FtZDY0X21weF9saW51eCAodm9pZCkKKyAgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAiX2JuZGNmZ3UiKTsKKyAgIHRkZXNjX2FkZF9maWVsZCAodHlwZSwgImNvbmZpZyIsIGZpZWxkX3R5cGUpOworCistICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiYm5kMHJhdyIsIDc0LCAxLCBOVUxMLCAxMjgsICJicjEyOCIpOworLSAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImJuZDFyYXciLCA3NSwgMSwgTlVMTCwgMTI4LCAiYnIxMjgiKTsKKy0gIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJibmQycmF3IiwgNzYsIDEsIE5VTEwsIDEyOCwgImJyMTI4Iik7CistICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiYm5kM3JhdyIsIDc3LCAxLCBOVUxMLCAxMjgsICJicjEyOCIpOworLSAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImJuZGNmZ3UiLCA3OCwgMSwgTlVMTCwgNjQsICJjZmd1Iik7CistICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiYm5kc3RhdHVzIiwgNzksIDEsIE5VTEwsIDY0LCAic3RhdHVzIik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiYm5kMHJhdyIsIDU4LCAxLCBOVUxMLCAxMjgsICJicjEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImJuZDFyYXciLCA1OSwgMSwgTlVMTCwgMTI4LCAiYnIxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJibmQycmF3IiwgNjAsIDEsIE5VTEwsIDEyOCwgImJyMTI4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiYm5kM3JhdyIsIDYxLCAxLCBOVUxMLCAxMjgsICJicjEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImJuZGNmZ3UiLCA2MiwgMSwgTlVMTCwgNjQsICJjZmd1Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiYm5kc3RhdHVzIiwgNjMsIDEsIE5VTEwsIDY0LCAic3RhdHVzIik7CisKKyAgIHRkZXNjX2FtZDY0X21weF9saW51eCA9IHJlc3VsdDsKKyB9CitkaWZmIC0tZ2l0IGEvZ2RiL2ZlYXR1cmVzL2kzODYvYW1kNjQtbXB4LWxpbnV4LnhtbCBiL2dkYi9mZWF0dXJlcy9pMzg2L2FtZDY0LW1weC1saW51eC54bWwKK2luZGV4IDE1ZTg3YjQuLjgzNTEyNmIgMTAwNjQ0CistLS0gYS9nZGIvZmVhdHVyZXMvaTM4Ni9hbWQ2NC1tcHgtbGludXgueG1sCisrKysgYi9nZGIvZmVhdHVyZXMvaTM4Ni9hbWQ2NC1tcHgtbGludXgueG1sCitAQCAtMTQsNiArMTQsNSBAQAorICAgPHhpOmluY2x1ZGUgaHJlZj0iNjRiaXQtY29yZS54bWwiLz4KKyAgIDx4aTppbmNsdWRlIGhyZWY9IjY0Yml0LXNzZS54bWwiLz4KKyAgIDx4aTppbmNsdWRlIGhyZWY9IjY0Yml0LWxpbnV4LnhtbCIvPgorLSAgPHhpOmluY2x1ZGUgaHJlZj0iNjRiaXQtYXZ4LnhtbCIvPgorICAgPHhpOmluY2x1ZGUgaHJlZj0iNjRiaXQtbXB4LnhtbCIvPgorIDwvdGFyZ2V0PgorZGlmZiAtLWdpdCBhL2dkYi9mZWF0dXJlcy9pMzg2L2FtZDY0LW1weC5jIGIvZ2RiL2ZlYXR1cmVzL2kzODYvYW1kNjQtbXB4LmMKK2luZGV4IDE1YWU1ZjcuLjRjODUyZWYgMTAwNjQ0CistLS0gYS9nZGIvZmVhdHVyZXMvaTM4Ni9hbWQ2NC1tcHguYworKysrIGIvZ2RiL2ZlYXR1cmVzL2kzODYvYW1kNjQtbXB4LmMKK0BAIC0xNDYsMjQgKzE0Niw2IEBAIGluaXRpYWxpemVfdGRlc2NfYW1kNjRfbXB4ICh2b2lkKQorICAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTE1IiwgNTUsIDEsIE5VTEwsIDEyOCwgInZlYzEyOCIpOworICAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgIm14Y3NyIiwgNTYsIDEsICJ2ZWN0b3IiLCAzMiwgImkzODZfbXhjc3IiKTsKKworLSAgZmVhdHVyZSA9IHRkZXNjX2NyZWF0ZV9mZWF0dXJlIChyZXN1bHQsICJvcmcuZ251LmdkYi5pMzg2LmF2eCIpOworLSAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTBoIiwgNTcsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKKy0gIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW0xaCIsIDU4LCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7CistICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tMmgiLCA1OSwgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOworLSAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTNoIiwgNjAsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKKy0gIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW00aCIsIDYxLCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7CistICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tNWgiLCA2MiwgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOworLSAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTZoIiwgNjMsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKKy0gIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW03aCIsIDY0LCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7CistICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tOGgiLCA2NSwgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOworLSAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTloIiwgNjYsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKKy0gIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW0xMGgiLCA2NywgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOworLSAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTExaCIsIDY4LCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7CistICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tMTJoIiwgNjksIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKKy0gIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW0xM2giLCA3MCwgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOworLSAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTE0aCIsIDcxLCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7CistICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tMTVoIiwgNzIsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKKy0KKyAgIGZlYXR1cmUgPSB0ZGVzY19jcmVhdGVfZmVhdHVyZSAocmVzdWx0LCAib3JnLmdudS5nZGIuaTM4Ni5tcHgiKTsKKyAgIHR5cGUgPSB0ZGVzY19jcmVhdGVfc3RydWN0IChmZWF0dXJlLCAiYnIxMjgiKTsKKyAgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAidWludDY0Iik7CitAQCAtMTk1LDEyICsxNzcsMTIgQEAgaW5pdGlhbGl6ZV90ZGVzY19hbWQ2NF9tcHggKHZvaWQpCisgICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgIl9ibmRjZmd1Iik7CisgICB0ZGVzY19hZGRfZmllbGQgKHR5cGUsICJjb25maWciLCBmaWVsZF90eXBlKTsKKworLSAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImJuZDByYXciLCA3MywgMSwgTlVMTCwgMTI4LCAiYnIxMjgiKTsKKy0gIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJibmQxcmF3IiwgNzQsIDEsIE5VTEwsIDEyOCwgImJyMTI4Iik7CistICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiYm5kMnJhdyIsIDc1LCAxLCBOVUxMLCAxMjgsICJicjEyOCIpOworLSAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImJuZDNyYXciLCA3NiwgMSwgTlVMTCwgMTI4LCAiYnIxMjgiKTsKKy0gIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJibmRjZmd1IiwgNzcsIDEsIE5VTEwsIDY0LCAiY2ZndSIpOworLSAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImJuZHN0YXR1cyIsIDc4LCAxLCBOVUxMLCA2NCwgInN0YXR1cyIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImJuZDByYXciLCA1NywgMSwgTlVMTCwgMTI4LCAiYnIxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJibmQxcmF3IiwgNTgsIDEsIE5VTEwsIDEyOCwgImJyMTI4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiYm5kMnJhdyIsIDU5LCAxLCBOVUxMLCAxMjgsICJicjEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImJuZDNyYXciLCA2MCwgMSwgTlVMTCwgMTI4LCAiYnIxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJibmRjZmd1IiwgNjEsIDEsIE5VTEwsIDY0LCAiY2ZndSIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImJuZHN0YXR1cyIsIDYyLCAxLCBOVUxMLCA2NCwgInN0YXR1cyIpOworCisgICB0ZGVzY19hbWQ2NF9tcHggPSByZXN1bHQ7CisgfQorZGlmZiAtLWdpdCBhL2dkYi9mZWF0dXJlcy9pMzg2L2FtZDY0LW1weC54bWwgYi9nZGIvZmVhdHVyZXMvaTM4Ni9hbWQ2NC1tcHgueG1sCitpbmRleCAyMWI2ZGYzLi5lNDU4NzM2IDEwMDY0NAorLS0tIGEvZ2RiL2ZlYXR1cmVzL2kzODYvYW1kNjQtbXB4LnhtbAorKysrIGIvZ2RiL2ZlYXR1cmVzL2kzODYvYW1kNjQtbXB4LnhtbAorQEAgLTEyLDYgKzEyLDUgQEAKKyAgIDxhcmNoaXRlY3R1cmU+aTM4Njp4ODYtNjQ8L2FyY2hpdGVjdHVyZT4KKyAgIDx4aTppbmNsdWRlIGhyZWY9IjY0Yml0LWNvcmUueG1sIi8+CisgICA8eGk6aW5jbHVkZSBocmVmPSI2NGJpdC1zc2UueG1sIi8+CistICA8eGk6aW5jbHVkZSBocmVmPSI2NGJpdC1hdngueG1sIi8+CisgICA8eGk6aW5jbHVkZSBocmVmPSI2NGJpdC1tcHgueG1sIi8+CisgPC90YXJnZXQ+CitkaWZmIC0tZ2l0IGEvZ2RiL2ZlYXR1cmVzL2kzODYvaTM4Ni1hdngtbXB4LWxpbnV4LmMgYi9nZGIvZmVhdHVyZXMvaTM4Ni9pMzg2LWF2eC1tcHgtbGludXguYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmRkNzU0MDMKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi9mZWF0dXJlcy9pMzg2L2kzODYtYXZ4LW1weC1saW51eC5jCitAQCAtMCwwICsxLDE4NyBAQAorKy8qIFRISVMgRklMRSBJUyBHRU5FUkFURUQuICAtKi0gYnVmZmVyLXJlYWQtb25seTogdCAtKi0gdmk6c2V0IHJvOgorKyAgT3JpZ2luYWw6IGkzODYtYXZ4LW1weC1saW51eC54bWwgKi8KKysKKysjaW5jbHVkZSAiZGVmcy5oIgorKyNpbmNsdWRlICJvc2FiaS5oIgorKyNpbmNsdWRlICJ0YXJnZXQtZGVzY3JpcHRpb25zLmgiCisrCisrc3RydWN0IHRhcmdldF9kZXNjICp0ZGVzY19pMzg2X2F2eF9tcHhfbGludXg7Cisrc3RhdGljIHZvaWQKKytpbml0aWFsaXplX3RkZXNjX2kzODZfYXZ4X21weF9saW51eCAodm9pZCkKKyt7CisrICBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKnJlc3VsdCA9IGFsbG9jYXRlX3RhcmdldF9kZXNjcmlwdGlvbiAoKTsKKysgIHN0cnVjdCB0ZGVzY19mZWF0dXJlICpmZWF0dXJlOworKyAgc3RydWN0IHRkZXNjX3R5cGUgKmZpZWxkX3R5cGU7CisrICBzdHJ1Y3QgdGRlc2NfdHlwZSAqdHlwZTsKKysKKysgIHNldF90ZGVzY19hcmNoaXRlY3R1cmUgKHJlc3VsdCwgYmZkX3NjYW5fYXJjaCAoImkzODYiKSk7CisrCisrICBzZXRfdGRlc2Nfb3NhYmkgKHJlc3VsdCwgb3NhYmlfZnJvbV90ZGVzY19zdHJpbmcgKCJHTlUvTGludXgiKSk7CisrCisrICBmZWF0dXJlID0gdGRlc2NfY3JlYXRlX2ZlYXR1cmUgKHJlc3VsdCwgIm9yZy5nbnUuZ2RiLmkzODYuY29yZSIpOworKyAgZmllbGRfdHlwZSA9IHRkZXNjX2NyZWF0ZV9mbGFncyAoZmVhdHVyZSwgImkzODZfZWZsYWdzIiwgNCk7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMCwgIkNGIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMSwgIiIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDIsICJQRiIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDQsICJBRiIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDYsICJaRiIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDcsICJTRiIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDgsICJURiIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDksICJJRiIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDEwLCAiREYiKTsKKysgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxMSwgIk9GIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTQsICJOVCIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDE2LCAiUkYiKTsKKysgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxNywgIlZNIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTgsICJBQyIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDE5LCAiVklGIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMjAsICJWSVAiKTsKKysgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAyMSwgIklEIik7CisrCisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZWF4IiwgMCwgMSwgTlVMTCwgMzIsICJpbnQzMiIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImVjeCIsIDEsIDEsIE5VTEwsIDMyLCAiaW50MzIiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJlZHgiLCAyLCAxLCBOVUxMLCAzMiwgImludDMyIik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZWJ4IiwgMywgMSwgTlVMTCwgMzIsICJpbnQzMiIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImVzcCIsIDQsIDEsIE5VTEwsIDMyLCAiZGF0YV9wdHIiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJlYnAiLCA1LCAxLCBOVUxMLCAzMiwgImRhdGFfcHRyIik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZXNpIiwgNiwgMSwgTlVMTCwgMzIsICJpbnQzMiIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImVkaSIsIDcsIDEsIE5VTEwsIDMyLCAiaW50MzIiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJlaXAiLCA4LCAxLCBOVUxMLCAzMiwgImNvZGVfcHRyIik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZWZsYWdzIiwgOSwgMSwgTlVMTCwgMzIsICJpMzg2X2VmbGFncyIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImNzIiwgMTAsIDEsIE5VTEwsIDMyLCAiaW50MzIiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJzcyIsIDExLCAxLCBOVUxMLCAzMiwgImludDMyIik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZHMiLCAxMiwgMSwgTlVMTCwgMzIsICJpbnQzMiIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImVzIiwgMTMsIDEsIE5VTEwsIDMyLCAiaW50MzIiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJmcyIsIDE0LCAxLCBOVUxMLCAzMiwgImludDMyIik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZ3MiLCAxNSwgMSwgTlVMTCwgMzIsICJpbnQzMiIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInN0MCIsIDE2LCAxLCBOVUxMLCA4MCwgImkzODdfZXh0Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAic3QxIiwgMTcsIDEsIE5VTEwsIDgwLCAiaTM4N19leHQiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJzdDIiLCAxOCwgMSwgTlVMTCwgODAsICJpMzg3X2V4dCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInN0MyIsIDE5LCAxLCBOVUxMLCA4MCwgImkzODdfZXh0Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAic3Q0IiwgMjAsIDEsIE5VTEwsIDgwLCAiaTM4N19leHQiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJzdDUiLCAyMSwgMSwgTlVMTCwgODAsICJpMzg3X2V4dCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInN0NiIsIDIyLCAxLCBOVUxMLCA4MCwgImkzODdfZXh0Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAic3Q3IiwgMjMsIDEsIE5VTEwsIDgwLCAiaTM4N19leHQiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJmY3RybCIsIDI0LCAxLCAiZmxvYXQiLCAzMiwgImludCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImZzdGF0IiwgMjUsIDEsICJmbG9hdCIsIDMyLCAiaW50Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZnRhZyIsIDI2LCAxLCAiZmxvYXQiLCAzMiwgImludCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImZpc2VnIiwgMjcsIDEsICJmbG9hdCIsIDMyLCAiaW50Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZmlvZmYiLCAyOCwgMSwgImZsb2F0IiwgMzIsICJpbnQiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJmb3NlZyIsIDI5LCAxLCAiZmxvYXQiLCAzMiwgImludCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImZvb2ZmIiwgMzAsIDEsICJmbG9hdCIsIDMyLCAiaW50Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZm9wIiwgMzEsIDEsICJmbG9hdCIsIDMyLCAiaW50Iik7CisrCisrICBmZWF0dXJlID0gdGRlc2NfY3JlYXRlX2ZlYXR1cmUgKHJlc3VsdCwgIm9yZy5nbnUuZ2RiLmkzODYuc3NlIik7CisrICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgImllZWVfc2luZ2xlIik7CisrICB0ZGVzY19jcmVhdGVfdmVjdG9yIChmZWF0dXJlLCAidjRmIiwgZmllbGRfdHlwZSwgNCk7CisrCisrICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgImllZWVfZG91YmxlIik7CisrICB0ZGVzY19jcmVhdGVfdmVjdG9yIChmZWF0dXJlLCAidjJkIiwgZmllbGRfdHlwZSwgMik7CisrCisrICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgImludDgiKTsKKysgIHRkZXNjX2NyZWF0ZV92ZWN0b3IgKGZlYXR1cmUsICJ2MTZpOCIsIGZpZWxkX3R5cGUsIDE2KTsKKysKKysgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAiaW50MTYiKTsKKysgIHRkZXNjX2NyZWF0ZV92ZWN0b3IgKGZlYXR1cmUsICJ2OGkxNiIsIGZpZWxkX3R5cGUsIDgpOworKworKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJpbnQzMiIpOworKyAgdGRlc2NfY3JlYXRlX3ZlY3RvciAoZmVhdHVyZSwgInY0aTMyIiwgZmllbGRfdHlwZSwgNCk7CisrCisrICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgImludDY0Iik7CisrICB0ZGVzY19jcmVhdGVfdmVjdG9yIChmZWF0dXJlLCAidjJpNjQiLCBmaWVsZF90eXBlLCAyKTsKKysKKysgIHR5cGUgPSB0ZGVzY19jcmVhdGVfdW5pb24gKGZlYXR1cmUsICJ2ZWMxMjgiKTsKKysgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAidjRmIik7CisrICB0ZGVzY19hZGRfZmllbGQgKHR5cGUsICJ2NF9mbG9hdCIsIGZpZWxkX3R5cGUpOworKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJ2MmQiKTsKKysgIHRkZXNjX2FkZF9maWVsZCAodHlwZSwgInYyX2RvdWJsZSIsIGZpZWxkX3R5cGUpOworKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJ2MTZpOCIpOworKyAgdGRlc2NfYWRkX2ZpZWxkICh0eXBlLCAidjE2X2ludDgiLCBmaWVsZF90eXBlKTsKKysgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAidjhpMTYiKTsKKysgIHRkZXNjX2FkZF9maWVsZCAodHlwZSwgInY4X2ludDE2IiwgZmllbGRfdHlwZSk7CisrICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgInY0aTMyIik7CisrICB0ZGVzY19hZGRfZmllbGQgKHR5cGUsICJ2NF9pbnQzMiIsIGZpZWxkX3R5cGUpOworKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJ2Mmk2NCIpOworKyAgdGRlc2NfYWRkX2ZpZWxkICh0eXBlLCAidjJfaW50NjQiLCBmaWVsZF90eXBlKTsKKysgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAidWludDEyOCIpOworKyAgdGRlc2NfYWRkX2ZpZWxkICh0eXBlLCAidWludDEyOCIsIGZpZWxkX3R5cGUpOworKworKyAgZmllbGRfdHlwZSA9IHRkZXNjX2NyZWF0ZV9mbGFncyAoZmVhdHVyZSwgImkzODZfbXhjc3IiLCA0KTsKKysgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAwLCAiSUUiKTsKKysgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxLCAiREUiKTsKKysgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAyLCAiWkUiKTsKKysgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAzLCAiT0UiKTsKKysgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA0LCAiVUUiKTsKKysgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA1LCAiUEUiKTsKKysgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA2LCAiREFaIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgNywgIklNIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgOCwgIkRNIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgOSwgIlpNIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTAsICJPTSIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDExLCAiVU0iKTsKKysgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxMiwgIlBNIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTUsICJGWiIpOworKworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTAiLCAzMiwgMSwgTlVMTCwgMTI4LCAidmVjMTI4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieG1tMSIsIDMzLCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0yIiwgMzQsIDEsIE5VTEwsIDEyOCwgInZlYzEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTMiLCAzNSwgMSwgTlVMTCwgMTI4LCAidmVjMTI4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieG1tNCIsIDM2LCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW01IiwgMzcsIDEsIE5VTEwsIDEyOCwgInZlYzEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTYiLCAzOCwgMSwgTlVMTCwgMTI4LCAidmVjMTI4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieG1tNyIsIDM5LCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJteGNzciIsIDQwLCAxLCAidmVjdG9yIiwgMzIsICJpMzg2X214Y3NyIik7CisrCisrICBmZWF0dXJlID0gdGRlc2NfY3JlYXRlX2ZlYXR1cmUgKHJlc3VsdCwgIm9yZy5nbnUuZ2RiLmkzODYubGludXgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJvcmlnX2VheCIsIDQxLCAxLCBOVUxMLCAzMiwgImludCIpOworKworKyAgZmVhdHVyZSA9IHRkZXNjX2NyZWF0ZV9mZWF0dXJlIChyZXN1bHQsICJvcmcuZ251LmdkYi5pMzg2LmF2eCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTBoIiwgNDIsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW0xaCIsIDQzLCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tMmgiLCA0NCwgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTNoIiwgNDUsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW00aCIsIDQ2LCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tNWgiLCA0NywgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTZoIiwgNDgsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW03aCIsIDQ5LCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7CisrCisrICBmZWF0dXJlID0gdGRlc2NfY3JlYXRlX2ZlYXR1cmUgKHJlc3VsdCwgIm9yZy5nbnUuZ2RiLmkzODYubXB4Iik7CisrICB0eXBlID0gdGRlc2NfY3JlYXRlX3N0cnVjdCAoZmVhdHVyZSwgImJyMTI4Iik7CisrICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgInVpbnQ2NCIpOworKyAgdGRlc2NfYWRkX2ZpZWxkICh0eXBlLCAibGJvdW5kIiwgZmllbGRfdHlwZSk7CisrICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgInVpbnQ2NCIpOworKyAgdGRlc2NfYWRkX2ZpZWxkICh0eXBlLCAidWJvdW5kX3JhdyIsIGZpZWxkX3R5cGUpOworKworKyAgdHlwZSA9IHRkZXNjX2NyZWF0ZV9zdHJ1Y3QgKGZlYXR1cmUsICJfYm5kc3RhdHVzIik7CisrICB0ZGVzY19zZXRfc3RydWN0X3NpemUgKHR5cGUsIDgpOworKyAgdGRlc2NfYWRkX2JpdGZpZWxkICh0eXBlLCAiYmRlIiwgMiwgMzEpOworKyAgdGRlc2NfYWRkX2JpdGZpZWxkICh0eXBlLCAiZXJyb3IiLCAwLCAxKTsKKysKKysgIHR5cGUgPSB0ZGVzY19jcmVhdGVfdW5pb24gKGZlYXR1cmUsICJzdGF0dXMiKTsKKysgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAiZGF0YV9wdHIiKTsKKysgIHRkZXNjX2FkZF9maWVsZCAodHlwZSwgInJhdyIsIGZpZWxkX3R5cGUpOworKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJfYm5kc3RhdHVzIik7CisrICB0ZGVzY19hZGRfZmllbGQgKHR5cGUsICJzdGF0dXMiLCBmaWVsZF90eXBlKTsKKysKKysgIHR5cGUgPSB0ZGVzY19jcmVhdGVfc3RydWN0IChmZWF0dXJlLCAiX2JuZGNmZ3UiKTsKKysgIHRkZXNjX3NldF9zdHJ1Y3Rfc2l6ZSAodHlwZSwgOCk7CisrICB0ZGVzY19hZGRfYml0ZmllbGQgKHR5cGUsICJiYXNlIiwgMTIsIDMxKTsKKysgIHRkZXNjX2FkZF9iaXRmaWVsZCAodHlwZSwgInJlc2VydmVkIiwgMiwgMTEpOworKyAgdGRlc2NfYWRkX2JpdGZpZWxkICh0eXBlLCAicHJlc2VydmVkIiwgMSwgMSk7CisrICB0ZGVzY19hZGRfYml0ZmllbGQgKHR5cGUsICJlbmFibGVkIiwgMCwgMSk7CisrCisrICB0eXBlID0gdGRlc2NfY3JlYXRlX3VuaW9uIChmZWF0dXJlLCAiY2ZndSIpOworKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJkYXRhX3B0ciIpOworKyAgdGRlc2NfYWRkX2ZpZWxkICh0eXBlLCAicmF3IiwgZmllbGRfdHlwZSk7CisrICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgIl9ibmRjZmd1Iik7CisrICB0ZGVzY19hZGRfZmllbGQgKHR5cGUsICJjb25maWciLCBmaWVsZF90eXBlKTsKKysKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJibmQwcmF3IiwgNTAsIDEsIE5VTEwsIDEyOCwgImJyMTI4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiYm5kMXJhdyIsIDUxLCAxLCBOVUxMLCAxMjgsICJicjEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImJuZDJyYXciLCA1MiwgMSwgTlVMTCwgMTI4LCAiYnIxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJibmQzcmF3IiwgNTMsIDEsIE5VTEwsIDEyOCwgImJyMTI4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiYm5kY2ZndSIsIDU0LCAxLCBOVUxMLCA2NCwgImNmZ3UiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJibmRzdGF0dXMiLCA1NSwgMSwgTlVMTCwgNjQsICJzdGF0dXMiKTsKKysKKysgIHRkZXNjX2kzODZfYXZ4X21weF9saW51eCA9IHJlc3VsdDsKKyt9CitkaWZmIC0tZ2l0IGEvZ2RiL2ZlYXR1cmVzL2kzODYvaTM4Ni1hdngtbXB4LWxpbnV4LnhtbCBiL2dkYi9mZWF0dXJlcy9pMzg2L2kzODYtYXZ4LW1weC1saW51eC54bWwKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5jOWExYTYxCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvZmVhdHVyZXMvaTM4Ni9pMzg2LWF2eC1tcHgtbGludXgueG1sCitAQCAtMCwwICsxLDE5IEBACisrPD94bWwgdmVyc2lvbj0iMS4wIj8+CisrPCEtLSBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIGZpbGUsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCisrICAgICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKKysgICAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gIC0tPgorKworKzwhLS0gSTM4NiB3aXRoIEFWWCBhbmQgTVBYLSBJbmNsdWRlcyBMaW51eC1vbmx5IHNwZWNpYWwgInJlZ2lzdGVyIi4gIC0tPgorKworKzwhRE9DVFlQRSB0YXJnZXQgU1lTVEVNICJnZGItdGFyZ2V0LmR0ZCI+CisrPHRhcmdldD4KKysgIDxhcmNoaXRlY3R1cmU+aTM4NjwvYXJjaGl0ZWN0dXJlPgorKyAgPG9zYWJpPkdOVS9MaW51eDwvb3NhYmk+CisrICA8eGk6aW5jbHVkZSBocmVmPSIzMmJpdC1jb3JlLnhtbCIvPgorKyAgPHhpOmluY2x1ZGUgaHJlZj0iMzJiaXQtc3NlLnhtbCIvPgorKyAgPHhpOmluY2x1ZGUgaHJlZj0iMzJiaXQtbGludXgueG1sIi8+CisrICA8eGk6aW5jbHVkZSBocmVmPSIzMmJpdC1hdngueG1sIi8+CisrICA8eGk6aW5jbHVkZSBocmVmPSIzMmJpdC1tcHgueG1sIi8+CisrPC90YXJnZXQ+CitkaWZmIC0tZ2l0IGEvZ2RiL2ZlYXR1cmVzL2kzODYvaTM4Ni1hdngtbXB4LmMgYi9nZGIvZmVhdHVyZXMvaTM4Ni9pMzg2LWF2eC1tcHguYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmYxMDRlNGIKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi9mZWF0dXJlcy9pMzg2L2kzODYtYXZ4LW1weC5jCitAQCAtMCwwICsxLDE4MiBAQAorKy8qIFRISVMgRklMRSBJUyBHRU5FUkFURUQuICAtKi0gYnVmZmVyLXJlYWQtb25seTogdCAtKi0gdmk6c2V0IHJvOgorKyAgT3JpZ2luYWw6IGkzODYtYXZ4LW1weC54bWwgKi8KKysKKysjaW5jbHVkZSAiZGVmcy5oIgorKyNpbmNsdWRlICJvc2FiaS5oIgorKyNpbmNsdWRlICJ0YXJnZXQtZGVzY3JpcHRpb25zLmgiCisrCisrc3RydWN0IHRhcmdldF9kZXNjICp0ZGVzY19pMzg2X2F2eF9tcHg7Cisrc3RhdGljIHZvaWQKKytpbml0aWFsaXplX3RkZXNjX2kzODZfYXZ4X21weCAodm9pZCkKKyt7CisrICBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKnJlc3VsdCA9IGFsbG9jYXRlX3RhcmdldF9kZXNjcmlwdGlvbiAoKTsKKysgIHN0cnVjdCB0ZGVzY19mZWF0dXJlICpmZWF0dXJlOworKyAgc3RydWN0IHRkZXNjX3R5cGUgKmZpZWxkX3R5cGU7CisrICBzdHJ1Y3QgdGRlc2NfdHlwZSAqdHlwZTsKKysKKysgIHNldF90ZGVzY19hcmNoaXRlY3R1cmUgKHJlc3VsdCwgYmZkX3NjYW5fYXJjaCAoImkzODYiKSk7CisrCisrICBmZWF0dXJlID0gdGRlc2NfY3JlYXRlX2ZlYXR1cmUgKHJlc3VsdCwgIm9yZy5nbnUuZ2RiLmkzODYuY29yZSIpOworKyAgZmllbGRfdHlwZSA9IHRkZXNjX2NyZWF0ZV9mbGFncyAoZmVhdHVyZSwgImkzODZfZWZsYWdzIiwgNCk7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMCwgIkNGIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMSwgIiIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDIsICJQRiIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDQsICJBRiIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDYsICJaRiIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDcsICJTRiIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDgsICJURiIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDksICJJRiIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDEwLCAiREYiKTsKKysgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxMSwgIk9GIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTQsICJOVCIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDE2LCAiUkYiKTsKKysgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxNywgIlZNIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTgsICJBQyIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDE5LCAiVklGIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMjAsICJWSVAiKTsKKysgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAyMSwgIklEIik7CisrCisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZWF4IiwgMCwgMSwgTlVMTCwgMzIsICJpbnQzMiIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImVjeCIsIDEsIDEsIE5VTEwsIDMyLCAiaW50MzIiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJlZHgiLCAyLCAxLCBOVUxMLCAzMiwgImludDMyIik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZWJ4IiwgMywgMSwgTlVMTCwgMzIsICJpbnQzMiIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImVzcCIsIDQsIDEsIE5VTEwsIDMyLCAiZGF0YV9wdHIiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJlYnAiLCA1LCAxLCBOVUxMLCAzMiwgImRhdGFfcHRyIik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZXNpIiwgNiwgMSwgTlVMTCwgMzIsICJpbnQzMiIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImVkaSIsIDcsIDEsIE5VTEwsIDMyLCAiaW50MzIiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJlaXAiLCA4LCAxLCBOVUxMLCAzMiwgImNvZGVfcHRyIik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZWZsYWdzIiwgOSwgMSwgTlVMTCwgMzIsICJpMzg2X2VmbGFncyIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImNzIiwgMTAsIDEsIE5VTEwsIDMyLCAiaW50MzIiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJzcyIsIDExLCAxLCBOVUxMLCAzMiwgImludDMyIik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZHMiLCAxMiwgMSwgTlVMTCwgMzIsICJpbnQzMiIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImVzIiwgMTMsIDEsIE5VTEwsIDMyLCAiaW50MzIiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJmcyIsIDE0LCAxLCBOVUxMLCAzMiwgImludDMyIik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZ3MiLCAxNSwgMSwgTlVMTCwgMzIsICJpbnQzMiIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInN0MCIsIDE2LCAxLCBOVUxMLCA4MCwgImkzODdfZXh0Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAic3QxIiwgMTcsIDEsIE5VTEwsIDgwLCAiaTM4N19leHQiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJzdDIiLCAxOCwgMSwgTlVMTCwgODAsICJpMzg3X2V4dCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInN0MyIsIDE5LCAxLCBOVUxMLCA4MCwgImkzODdfZXh0Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAic3Q0IiwgMjAsIDEsIE5VTEwsIDgwLCAiaTM4N19leHQiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJzdDUiLCAyMSwgMSwgTlVMTCwgODAsICJpMzg3X2V4dCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInN0NiIsIDIyLCAxLCBOVUxMLCA4MCwgImkzODdfZXh0Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAic3Q3IiwgMjMsIDEsIE5VTEwsIDgwLCAiaTM4N19leHQiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJmY3RybCIsIDI0LCAxLCAiZmxvYXQiLCAzMiwgImludCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImZzdGF0IiwgMjUsIDEsICJmbG9hdCIsIDMyLCAiaW50Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZnRhZyIsIDI2LCAxLCAiZmxvYXQiLCAzMiwgImludCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImZpc2VnIiwgMjcsIDEsICJmbG9hdCIsIDMyLCAiaW50Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZmlvZmYiLCAyOCwgMSwgImZsb2F0IiwgMzIsICJpbnQiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJmb3NlZyIsIDI5LCAxLCAiZmxvYXQiLCAzMiwgImludCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImZvb2ZmIiwgMzAsIDEsICJmbG9hdCIsIDMyLCAiaW50Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZm9wIiwgMzEsIDEsICJmbG9hdCIsIDMyLCAiaW50Iik7CisrCisrICBmZWF0dXJlID0gdGRlc2NfY3JlYXRlX2ZlYXR1cmUgKHJlc3VsdCwgIm9yZy5nbnUuZ2RiLmkzODYuc3NlIik7CisrICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgImllZWVfc2luZ2xlIik7CisrICB0ZGVzY19jcmVhdGVfdmVjdG9yIChmZWF0dXJlLCAidjRmIiwgZmllbGRfdHlwZSwgNCk7CisrCisrICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgImllZWVfZG91YmxlIik7CisrICB0ZGVzY19jcmVhdGVfdmVjdG9yIChmZWF0dXJlLCAidjJkIiwgZmllbGRfdHlwZSwgMik7CisrCisrICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgImludDgiKTsKKysgIHRkZXNjX2NyZWF0ZV92ZWN0b3IgKGZlYXR1cmUsICJ2MTZpOCIsIGZpZWxkX3R5cGUsIDE2KTsKKysKKysgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAiaW50MTYiKTsKKysgIHRkZXNjX2NyZWF0ZV92ZWN0b3IgKGZlYXR1cmUsICJ2OGkxNiIsIGZpZWxkX3R5cGUsIDgpOworKworKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJpbnQzMiIpOworKyAgdGRlc2NfY3JlYXRlX3ZlY3RvciAoZmVhdHVyZSwgInY0aTMyIiwgZmllbGRfdHlwZSwgNCk7CisrCisrICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgImludDY0Iik7CisrICB0ZGVzY19jcmVhdGVfdmVjdG9yIChmZWF0dXJlLCAidjJpNjQiLCBmaWVsZF90eXBlLCAyKTsKKysKKysgIHR5cGUgPSB0ZGVzY19jcmVhdGVfdW5pb24gKGZlYXR1cmUsICJ2ZWMxMjgiKTsKKysgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAidjRmIik7CisrICB0ZGVzY19hZGRfZmllbGQgKHR5cGUsICJ2NF9mbG9hdCIsIGZpZWxkX3R5cGUpOworKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJ2MmQiKTsKKysgIHRkZXNjX2FkZF9maWVsZCAodHlwZSwgInYyX2RvdWJsZSIsIGZpZWxkX3R5cGUpOworKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJ2MTZpOCIpOworKyAgdGRlc2NfYWRkX2ZpZWxkICh0eXBlLCAidjE2X2ludDgiLCBmaWVsZF90eXBlKTsKKysgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAidjhpMTYiKTsKKysgIHRkZXNjX2FkZF9maWVsZCAodHlwZSwgInY4X2ludDE2IiwgZmllbGRfdHlwZSk7CisrICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgInY0aTMyIik7CisrICB0ZGVzY19hZGRfZmllbGQgKHR5cGUsICJ2NF9pbnQzMiIsIGZpZWxkX3R5cGUpOworKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJ2Mmk2NCIpOworKyAgdGRlc2NfYWRkX2ZpZWxkICh0eXBlLCAidjJfaW50NjQiLCBmaWVsZF90eXBlKTsKKysgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAidWludDEyOCIpOworKyAgdGRlc2NfYWRkX2ZpZWxkICh0eXBlLCAidWludDEyOCIsIGZpZWxkX3R5cGUpOworKworKyAgZmllbGRfdHlwZSA9IHRkZXNjX2NyZWF0ZV9mbGFncyAoZmVhdHVyZSwgImkzODZfbXhjc3IiLCA0KTsKKysgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAwLCAiSUUiKTsKKysgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxLCAiREUiKTsKKysgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAyLCAiWkUiKTsKKysgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAzLCAiT0UiKTsKKysgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA0LCAiVUUiKTsKKysgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA1LCAiUEUiKTsKKysgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA2LCAiREFaIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgNywgIklNIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgOCwgIkRNIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgOSwgIlpNIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTAsICJPTSIpOworKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDExLCAiVU0iKTsKKysgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxMiwgIlBNIik7CisrICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTUsICJGWiIpOworKworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTAiLCAzMiwgMSwgTlVMTCwgMTI4LCAidmVjMTI4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieG1tMSIsIDMzLCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0yIiwgMzQsIDEsIE5VTEwsIDEyOCwgInZlYzEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTMiLCAzNSwgMSwgTlVMTCwgMTI4LCAidmVjMTI4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieG1tNCIsIDM2LCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW01IiwgMzcsIDEsIE5VTEwsIDEyOCwgInZlYzEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTYiLCAzOCwgMSwgTlVMTCwgMTI4LCAidmVjMTI4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieG1tNyIsIDM5LCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJteGNzciIsIDQwLCAxLCAidmVjdG9yIiwgMzIsICJpMzg2X214Y3NyIik7CisrCisrICBmZWF0dXJlID0gdGRlc2NfY3JlYXRlX2ZlYXR1cmUgKHJlc3VsdCwgIm9yZy5nbnUuZ2RiLmkzODYuYXZ4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tMGgiLCA0MSwgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTFoIiwgNDIsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW0yaCIsIDQzLCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tM2giLCA0NCwgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTRoIiwgNDUsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW01aCIsIDQ2LCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tNmgiLCA0NywgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTdoIiwgNDgsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKKysKKysgIGZlYXR1cmUgPSB0ZGVzY19jcmVhdGVfZmVhdHVyZSAocmVzdWx0LCAib3JnLmdudS5nZGIuaTM4Ni5tcHgiKTsKKysgIHR5cGUgPSB0ZGVzY19jcmVhdGVfc3RydWN0IChmZWF0dXJlLCAiYnIxMjgiKTsKKysgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAidWludDY0Iik7CisrICB0ZGVzY19hZGRfZmllbGQgKHR5cGUsICJsYm91bmQiLCBmaWVsZF90eXBlKTsKKysgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAidWludDY0Iik7CisrICB0ZGVzY19hZGRfZmllbGQgKHR5cGUsICJ1Ym91bmRfcmF3IiwgZmllbGRfdHlwZSk7CisrCisrICB0eXBlID0gdGRlc2NfY3JlYXRlX3N0cnVjdCAoZmVhdHVyZSwgIl9ibmRzdGF0dXMiKTsKKysgIHRkZXNjX3NldF9zdHJ1Y3Rfc2l6ZSAodHlwZSwgOCk7CisrICB0ZGVzY19hZGRfYml0ZmllbGQgKHR5cGUsICJiZGUiLCAyLCAzMSk7CisrICB0ZGVzY19hZGRfYml0ZmllbGQgKHR5cGUsICJlcnJvciIsIDAsIDEpOworKworKyAgdHlwZSA9IHRkZXNjX2NyZWF0ZV91bmlvbiAoZmVhdHVyZSwgInN0YXR1cyIpOworKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJkYXRhX3B0ciIpOworKyAgdGRlc2NfYWRkX2ZpZWxkICh0eXBlLCAicmF3IiwgZmllbGRfdHlwZSk7CisrICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgIl9ibmRzdGF0dXMiKTsKKysgIHRkZXNjX2FkZF9maWVsZCAodHlwZSwgInN0YXR1cyIsIGZpZWxkX3R5cGUpOworKworKyAgdHlwZSA9IHRkZXNjX2NyZWF0ZV9zdHJ1Y3QgKGZlYXR1cmUsICJfYm5kY2ZndSIpOworKyAgdGRlc2Nfc2V0X3N0cnVjdF9zaXplICh0eXBlLCA4KTsKKysgIHRkZXNjX2FkZF9iaXRmaWVsZCAodHlwZSwgImJhc2UiLCAxMiwgMzEpOworKyAgdGRlc2NfYWRkX2JpdGZpZWxkICh0eXBlLCAicmVzZXJ2ZWQiLCAyLCAxMSk7CisrICB0ZGVzY19hZGRfYml0ZmllbGQgKHR5cGUsICJwcmVzZXJ2ZWQiLCAxLCAxKTsKKysgIHRkZXNjX2FkZF9iaXRmaWVsZCAodHlwZSwgImVuYWJsZWQiLCAwLCAxKTsKKysKKysgIHR5cGUgPSB0ZGVzY19jcmVhdGVfdW5pb24gKGZlYXR1cmUsICJjZmd1Iik7CisrICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgImRhdGFfcHRyIik7CisrICB0ZGVzY19hZGRfZmllbGQgKHR5cGUsICJyYXciLCBmaWVsZF90eXBlKTsKKysgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAiX2JuZGNmZ3UiKTsKKysgIHRkZXNjX2FkZF9maWVsZCAodHlwZSwgImNvbmZpZyIsIGZpZWxkX3R5cGUpOworKworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImJuZDByYXciLCA0OSwgMSwgTlVMTCwgMTI4LCAiYnIxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJibmQxcmF3IiwgNTAsIDEsIE5VTEwsIDEyOCwgImJyMTI4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiYm5kMnJhdyIsIDUxLCAxLCBOVUxMLCAxMjgsICJicjEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImJuZDNyYXciLCA1MiwgMSwgTlVMTCwgMTI4LCAiYnIxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJibmRjZmd1IiwgNTMsIDEsIE5VTEwsIDY0LCAiY2ZndSIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImJuZHN0YXR1cyIsIDU0LCAxLCBOVUxMLCA2NCwgInN0YXR1cyIpOworKworKyAgdGRlc2NfaTM4Nl9hdnhfbXB4ID0gcmVzdWx0OworK30KK2RpZmYgLS1naXQgYS9nZGIvZmVhdHVyZXMvaTM4Ni9pMzg2LWF2eC1tcHgueG1sIGIvZ2RiL2ZlYXR1cmVzL2kzODYvaTM4Ni1hdngtbXB4LnhtbAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmFiOTczNjcKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi9mZWF0dXJlcy9pMzg2L2kzODYtYXZ4LW1weC54bWwKK0BAIC0wLDAgKzEsMTcgQEAKKys8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKys8IS0tIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgZmlsZSwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKKysgICAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAorKyAgICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgLS0+CisrCisrPCEtLSBJMzg2IHdpdGggQVZYIGFuZCBNUFggLS0+CisrCisrPCFET0NUWVBFIHRhcmdldCBTWVNURU0gImdkYi10YXJnZXQuZHRkIj4KKys8dGFyZ2V0PgorKyAgPGFyY2hpdGVjdHVyZT5pMzg2PC9hcmNoaXRlY3R1cmU+CisrICA8eGk6aW5jbHVkZSBocmVmPSIzMmJpdC1jb3JlLnhtbCIvPgorKyAgPHhpOmluY2x1ZGUgaHJlZj0iMzJiaXQtc3NlLnhtbCIvPgorKyAgPHhpOmluY2x1ZGUgaHJlZj0iMzJiaXQtYXZ4LnhtbCIvPgorKyAgPHhpOmluY2x1ZGUgaHJlZj0iMzJiaXQtbXB4LnhtbCIvPgorKzwvdGFyZ2V0PgorZGlmZiAtLWdpdCBhL2dkYi9mZWF0dXJlcy9pMzg2L2kzODYtbXB4LWxpbnV4LmMgYi9nZGIvZmVhdHVyZXMvaTM4Ni9pMzg2LW1weC1saW51eC5jCitpbmRleCBkYmY4Nzg5Li5jNmJhZmVhIDEwMDY0NAorLS0tIGEvZ2RiL2ZlYXR1cmVzL2kzODYvaTM4Ni1tcHgtbGludXguYworKysrIGIvZ2RiL2ZlYXR1cmVzL2kzODYvaTM4Ni1tcHgtbGludXguYworQEAgLTEzNSwxNiArMTM1LDYgQEAgaW5pdGlhbGl6ZV90ZGVzY19pMzg2X21weF9saW51eCAodm9pZCkKKyAgIGZlYXR1cmUgPSB0ZGVzY19jcmVhdGVfZmVhdHVyZSAocmVzdWx0LCAib3JnLmdudS5nZGIuaTM4Ni5saW51eCIpOworICAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgIm9yaWdfZWF4IiwgNDEsIDEsIE5VTEwsIDMyLCAiaW50Iik7CisKKy0gIGZlYXR1cmUgPSB0ZGVzY19jcmVhdGVfZmVhdHVyZSAocmVzdWx0LCAib3JnLmdudS5nZGIuaTM4Ni5hdngiKTsKKy0gIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW0waCIsIDQyLCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7CistICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tMWgiLCA0MywgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOworLSAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTJoIiwgNDQsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKKy0gIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW0zaCIsIDQ1LCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7CistICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tNGgiLCA0NiwgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOworLSAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTVoIiwgNDcsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKKy0gIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW02aCIsIDQ4LCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7CistICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tN2giLCA0OSwgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOworLQorICAgZmVhdHVyZSA9IHRkZXNjX2NyZWF0ZV9mZWF0dXJlIChyZXN1bHQsICJvcmcuZ251LmdkYi5pMzg2Lm1weCIpOworICAgdHlwZSA9IHRkZXNjX2NyZWF0ZV9zdHJ1Y3QgKGZlYXR1cmUsICJicjEyOCIpOworICAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJ1aW50NjQiKTsKK0BAIC0xNzYsMTIgKzE2NiwxMiBAQCBpbml0aWFsaXplX3RkZXNjX2kzODZfbXB4X2xpbnV4ICh2b2lkKQorICAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJfYm5kY2ZndSIpOworICAgdGRlc2NfYWRkX2ZpZWxkICh0eXBlLCAiY29uZmlnIiwgZmllbGRfdHlwZSk7CisKKy0gIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJibmQwcmF3IiwgNTAsIDEsIE5VTEwsIDEyOCwgImJyMTI4Iik7CistICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiYm5kMXJhdyIsIDUxLCAxLCBOVUxMLCAxMjgsICJicjEyOCIpOworLSAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImJuZDJyYXciLCA1MiwgMSwgTlVMTCwgMTI4LCAiYnIxMjgiKTsKKy0gIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJibmQzcmF3IiwgNTMsIDEsIE5VTEwsIDEyOCwgImJyMTI4Iik7CistICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiYm5kY2ZndSIsIDU0LCAxLCBOVUxMLCA2NCwgImNmZ3UiKTsKKy0gIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJibmRzdGF0dXMiLCA1NSwgMSwgTlVMTCwgNjQsICJzdGF0dXMiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJibmQwcmF3IiwgNDIsIDEsIE5VTEwsIDEyOCwgImJyMTI4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiYm5kMXJhdyIsIDQzLCAxLCBOVUxMLCAxMjgsICJicjEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImJuZDJyYXciLCA0NCwgMSwgTlVMTCwgMTI4LCAiYnIxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJibmQzcmF3IiwgNDUsIDEsIE5VTEwsIDEyOCwgImJyMTI4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiYm5kY2ZndSIsIDQ2LCAxLCBOVUxMLCA2NCwgImNmZ3UiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJibmRzdGF0dXMiLCA0NywgMSwgTlVMTCwgNjQsICJzdGF0dXMiKTsKKworICAgdGRlc2NfaTM4Nl9tcHhfbGludXggPSByZXN1bHQ7CisgfQorZGlmZiAtLWdpdCBhL2dkYi9mZWF0dXJlcy9pMzg2L2kzODYtbXB4LWxpbnV4LnhtbCBiL2dkYi9mZWF0dXJlcy9pMzg2L2kzODYtbXB4LWxpbnV4LnhtbAoraW5kZXggYzQwMDRkNi4uNDIyOGNmNSAxMDA2NDQKKy0tLSBhL2dkYi9mZWF0dXJlcy9pMzg2L2kzODYtbXB4LWxpbnV4LnhtbAorKysrIGIvZ2RiL2ZlYXR1cmVzL2kzODYvaTM4Ni1tcHgtbGludXgueG1sCitAQCAtMTQsNiArMTQsNSBAQAorICAgPHhpOmluY2x1ZGUgaHJlZj0iMzJiaXQtY29yZS54bWwiLz4KKyAgIDx4aTppbmNsdWRlIGhyZWY9IjMyYml0LXNzZS54bWwiLz4KKyAgIDx4aTppbmNsdWRlIGhyZWY9IjMyYml0LWxpbnV4LnhtbCIvPgorLSAgPHhpOmluY2x1ZGUgaHJlZj0iMzJiaXQtYXZ4LnhtbCIvPgorICAgPHhpOmluY2x1ZGUgaHJlZj0iMzJiaXQtbXB4LnhtbCIvPgorIDwvdGFyZ2V0PgorZGlmZiAtLWdpdCBhL2dkYi9mZWF0dXJlcy9pMzg2L2kzODYtbXB4LmMgYi9nZGIvZmVhdHVyZXMvaTM4Ni9pMzg2LW1weC5jCitpbmRleCAxZTA0YWZkLi40MzBkYjNmIDEwMDY0NAorLS0tIGEvZ2RiL2ZlYXR1cmVzL2kzODYvaTM4Ni1tcHguYworKysrIGIvZ2RiL2ZlYXR1cmVzL2kzODYvaTM4Ni1tcHguYworQEAgLTEzMCwxNiArMTMwLDYgQEAgaW5pdGlhbGl6ZV90ZGVzY19pMzg2X21weCAodm9pZCkKKyAgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW03IiwgMzksIDEsIE5VTEwsIDEyOCwgInZlYzEyOCIpOworICAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgIm14Y3NyIiwgNDAsIDEsICJ2ZWN0b3IiLCAzMiwgImkzODZfbXhjc3IiKTsKKworLSAgZmVhdHVyZSA9IHRkZXNjX2NyZWF0ZV9mZWF0dXJlIChyZXN1bHQsICJvcmcuZ251LmdkYi5pMzg2LmF2eCIpOworLSAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTBoIiwgNDEsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKKy0gIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW0xaCIsIDQyLCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7CistICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tMmgiLCA0MywgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOworLSAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTNoIiwgNDQsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKKy0gIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW00aCIsIDQ1LCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7CistICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tNWgiLCA0NiwgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOworLSAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTZoIiwgNDcsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKKy0gIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW03aCIsIDQ4LCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7CistCisgICBmZWF0dXJlID0gdGRlc2NfY3JlYXRlX2ZlYXR1cmUgKHJlc3VsdCwgIm9yZy5nbnUuZ2RiLmkzODYubXB4Iik7CisgICB0eXBlID0gdGRlc2NfY3JlYXRlX3N0cnVjdCAoZmVhdHVyZSwgImJyMTI4Iik7CisgICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgInVpbnQ2NCIpOworQEAgLTE3MSwxMiArMTYxLDEyIEBAIGluaXRpYWxpemVfdGRlc2NfaTM4Nl9tcHggKHZvaWQpCisgICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgIl9ibmRjZmd1Iik7CisgICB0ZGVzY19hZGRfZmllbGQgKHR5cGUsICJjb25maWciLCBmaWVsZF90eXBlKTsKKworLSAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImJuZDByYXciLCA0OSwgMSwgTlVMTCwgMTI4LCAiYnIxMjgiKTsKKy0gIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJibmQxcmF3IiwgNTAsIDEsIE5VTEwsIDEyOCwgImJyMTI4Iik7CistICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiYm5kMnJhdyIsIDUxLCAxLCBOVUxMLCAxMjgsICJicjEyOCIpOworLSAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImJuZDNyYXciLCA1MiwgMSwgTlVMTCwgMTI4LCAiYnIxMjgiKTsKKy0gIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJibmRjZmd1IiwgNTMsIDEsIE5VTEwsIDY0LCAiY2ZndSIpOworLSAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImJuZHN0YXR1cyIsIDU0LCAxLCBOVUxMLCA2NCwgInN0YXR1cyIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImJuZDByYXciLCA0MSwgMSwgTlVMTCwgMTI4LCAiYnIxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJibmQxcmF3IiwgNDIsIDEsIE5VTEwsIDEyOCwgImJyMTI4Iik7CisrICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiYm5kMnJhdyIsIDQzLCAxLCBOVUxMLCAxMjgsICJicjEyOCIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImJuZDNyYXciLCA0NCwgMSwgTlVMTCwgMTI4LCAiYnIxMjgiKTsKKysgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJibmRjZmd1IiwgNDUsIDEsIE5VTEwsIDY0LCAiY2ZndSIpOworKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImJuZHN0YXR1cyIsIDQ2LCAxLCBOVUxMLCA2NCwgInN0YXR1cyIpOworCisgICB0ZGVzY19pMzg2X21weCA9IHJlc3VsdDsKKyB9CitkaWZmIC0tZ2l0IGEvZ2RiL2ZlYXR1cmVzL2kzODYvaTM4Ni1tcHgueG1sIGIvZ2RiL2ZlYXR1cmVzL2kzODYvaTM4Ni1tcHgueG1sCitpbmRleCA1MmE2OGRiLi5jMTgwNmNiIDEwMDY0NAorLS0tIGEvZ2RiL2ZlYXR1cmVzL2kzODYvaTM4Ni1tcHgueG1sCisrKysgYi9nZGIvZmVhdHVyZXMvaTM4Ni9pMzg2LW1weC54bWwKK0BAIC0xMiw2ICsxMiw1IEBACisgICA8YXJjaGl0ZWN0dXJlPmkzODY8L2FyY2hpdGVjdHVyZT4KKyAgIDx4aTppbmNsdWRlIGhyZWY9IjMyYml0LWNvcmUueG1sIi8+CisgICA8eGk6aW5jbHVkZSBocmVmPSIzMmJpdC1zc2UueG1sIi8+CistICA8eGk6aW5jbHVkZSBocmVmPSIzMmJpdC1hdngueG1sIi8+CisgICA8eGk6aW5jbHVkZSBocmVmPSIzMmJpdC1tcHgueG1sIi8+CisgPC90YXJnZXQ+CitkaWZmIC0tZ2l0IGEvZ2RiL2dkYnNlcnZlci9NYWtlZmlsZS5pbiBiL2dkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4KK2luZGV4IDFlODc0ZTMuLmRlZTJlYTEgMTAwNjQ0CistLS0gYS9nZGIvZ2Ric2VydmVyL01ha2VmaWxlLmluCisrKysgYi9nZGIvZ2Ric2VydmVyL01ha2VmaWxlLmluCitAQCAtMzc2LDkgKzM3NiwxMSBAQCBjbGVhbjoKKyAJcm0gLWYgeG1sLWJ1aWx0aW4uYyBzdGFtcC14bWwKKyAJcm0gLWYgaTM4Ni1hdnguYyBpMzg2LWF2eC1saW51eC5jCisgCXJtIC1mIGkzODYtbXB4LmMgaTM4Ni1tcHgtbGludXguYworKwlybSAtZiBpMzg2LWF2eC1tcHguYyBpMzg2LWF2eC1tcHgtbGludXguYworIAlybSAtZiBpMzg2LWF2eDUxMi5jIGkzODYtYXZ4NTEyLWxpbnV4LmMKKyAJcm0gLWYgYW1kNjQtYXZ4LmMgYW1kNjQtYXZ4LWxpbnV4LmMKKyAJcm0gLWYgYW1kNjQtbXB4LmMgYW1kNjQtbXB4LWxpbnV4LmMKKysJcm0gLWYgYW1kNjQtYXZ4LW1weC5jIGFtZDY0LWF2eC1tcHgtbGludXguYworIAlybSAtZiBhbWQ2NC1hdng1MTIuYyBhbWQ2NC1hdng1MTItbGludXguYworIAlybSAtZiBpMzg2LW1teC5jIGkzODYtbW14LWxpbnV4LmMKKyAJcm0gLWYgeDMyLmMgeDMyLWxpbnV4LmMKK0BAIC00OTUsNiArNDk3LDIxIEBAIHJlZ2NhY2hlLWlwYS5vOiByZWdjYWNoZS5jCisgaTM4Ni1saW51eC1pcGEubzogaTM4Ni1saW51eC5jCisgCSQoSVBBR0VOVF9DT01QSUxFKSAkPAorIAkkKFBPU1RDT01QSUxFKQorK2kzODYtbW14LWxpbnV4LWlwYS5vOiBpMzg2LW1teC1saW51eC5jCisrCSQoSVBBR0VOVF9DT01QSUxFKSAkPAorKwkkKFBPU1RDT01QSUxFKQorK2kzODYtYXZ4LWxpbnV4LWlwYS5vOiBpMzg2LWF2eC1saW51eC5jCisrCSQoSVBBR0VOVF9DT01QSUxFKSAkPAorKwkkKFBPU1RDT01QSUxFKQorK2kzODYtbXB4LWxpbnV4LWlwYS5vOiBpMzg2LW1weC1saW51eC5jCisrCSQoSVBBR0VOVF9DT01QSUxFKSAkPAorKwkkKFBPU1RDT01QSUxFKQorK2kzODYtYXZ4LW1weC1saW51eC1pcGEubzogaTM4Ni1hdngtbXB4LWxpbnV4LmMKKysJJChJUEFHRU5UX0NPTVBJTEUpICQ8CisrCSQoUE9TVENPTVBJTEUpCisraTM4Ni1hdng1MTItbGludXgtaXBhLm86IGkzODYtYXZ4NTEyLWxpbnV4LmMKKysJJChJUEFHRU5UX0NPTVBJTEUpICQ8CisrCSQoUE9TVENPTVBJTEUpCisgbGludXgtaTM4Ni1pcGEubzogbGludXgtaTM4Ni1pcGEuYworIAkkKElQQUdFTlRfQ09NUElMRSkgJDwKKyAJJChQT1NUQ09NUElMRSkKK0BAIC01MDQsNiArNTIxLDE4IEBAIGxpbnV4LWFtZDY0LWlwYS5vOiBsaW51eC1hbWQ2NC1pcGEuYworIGFtZDY0LWxpbnV4LWlwYS5vOiBhbWQ2NC1saW51eC5jCisgCSQoSVBBR0VOVF9DT01QSUxFKSAkPAorIAkkKFBPU1RDT01QSUxFKQorK2FtZDY0LWF2eC1saW51eC1pcGEubzogYW1kNjQtYXZ4LWxpbnV4LmMKKysJJChJUEFHRU5UX0NPTVBJTEUpICQ8CisrCSQoUE9TVENPTVBJTEUpCisrYW1kNjQtbXB4LWxpbnV4LWlwYS5vOiBhbWQ2NC1tcHgtbGludXguYworKwkkKElQQUdFTlRfQ09NUElMRSkgJDwKKysJJChQT1NUQ09NUElMRSkKKythbWQ2NC1hdngtbXB4LWxpbnV4LWlwYS5vOiBhbWQ2NC1hdngtbXB4LWxpbnV4LmMKKysJJChJUEFHRU5UX0NPTVBJTEUpICQ8CisrCSQoUE9TVENPTVBJTEUpCisrYW1kNjQtYXZ4NTEyLWxpbnV4LWlwYS5vOiBhbWQ2NC1hdng1MTItbGludXguYworKwkkKElQQUdFTlRfQ09NUElMRSkgJDwKKysJJChQT1NUQ09NUElMRSkKKyBsaW51eC1hYXJjaDY0LWlwYS5vOiBsaW51eC1hYXJjaDY0LWlwYS5jCisgCSQoSVBBR0VOVF9DT01QSUxFKSAkPAorIAkkKFBPU1RDT01QSUxFKQorQEAgLTY5NCw2ICs3MjMsMTAgQEAgaTM4Ni1tcHguYyA6ICQoc3JjZGlyKS8uLi9yZWdmb3JtYXRzL2kzODYvaTM4Ni1tcHguZGF0ICQocmVnZGF0X3NoKQorIAkkKFNIRUxMKSAkKHJlZ2RhdF9zaCkgJChzcmNkaXIpLy4uL3JlZ2Zvcm1hdHMvaTM4Ni9pMzg2LW1weC5kYXQgaTM4Ni1tcHguYworIGkzODYtbXB4LWxpbnV4LmMgOiAkKHNyY2RpcikvLi4vcmVnZm9ybWF0cy9pMzg2L2kzODYtbXB4LWxpbnV4LmRhdCAkKHJlZ2RhdF9zaCkKKyAJJChTSEVMTCkgJChyZWdkYXRfc2gpICQoc3JjZGlyKS8uLi9yZWdmb3JtYXRzL2kzODYvaTM4Ni1tcHgtbGludXguZGF0IGkzODYtbXB4LWxpbnV4LmMKKytpMzg2LWF2eC1tcHguYyA6ICQoc3JjZGlyKS8uLi9yZWdmb3JtYXRzL2kzODYvaTM4Ni1hdngtbXB4LmRhdCAkKHJlZ2RhdF9zaCkKKysJJChTSEVMTCkgJChyZWdkYXRfc2gpICQoc3JjZGlyKS8uLi9yZWdmb3JtYXRzL2kzODYvaTM4Ni1hdngtbXB4LmRhdCBpMzg2LWF2eC1tcHguYworK2kzODYtYXZ4LW1weC1saW51eC5jIDogJChzcmNkaXIpLy4uL3JlZ2Zvcm1hdHMvaTM4Ni9pMzg2LWF2eC1tcHgtbGludXguZGF0ICQocmVnZGF0X3NoKQorKwkkKFNIRUxMKSAkKHJlZ2RhdF9zaCkgJChzcmNkaXIpLy4uL3JlZ2Zvcm1hdHMvaTM4Ni9pMzg2LWF2eC1tcHgtbGludXguZGF0IGkzODYtYXZ4LW1weC1saW51eC5jCisgaTM4Ni1tbXguYyA6ICQoc3JjZGlyKS8uLi9yZWdmb3JtYXRzL2kzODYvaTM4Ni1tbXguZGF0ICQocmVnZGF0X3NoKQorIAkkKFNIRUxMKSAkKHJlZ2RhdF9zaCkgJChzcmNkaXIpLy4uL3JlZ2Zvcm1hdHMvaTM4Ni9pMzg2LW1teC5kYXQgaTM4Ni1tbXguYworIGkzODYtbW14LWxpbnV4LmMgOiAkKHNyY2RpcikvLi4vcmVnZm9ybWF0cy9pMzg2L2kzODYtbW14LWxpbnV4LmRhdCAkKHJlZ2RhdF9zaCkKK0BAIC04MDgsNiArODQxLDEwIEBAIGFtZDY0LW1weC5jIDogJChzcmNkaXIpLy4uL3JlZ2Zvcm1hdHMvaTM4Ni9hbWQ2NC1tcHguZGF0ICQocmVnZGF0X3NoKQorIAkkKFNIRUxMKSAkKHJlZ2RhdF9zaCkgJChzcmNkaXIpLy4uL3JlZ2Zvcm1hdHMvaTM4Ni9hbWQ2NC1tcHguZGF0IGFtZDY0LW1weC5jCisgYW1kNjQtbXB4LWxpbnV4LmMgOiAkKHNyY2RpcikvLi4vcmVnZm9ybWF0cy9pMzg2L2FtZDY0LW1weC1saW51eC5kYXQgJChyZWdkYXRfc2gpCisgCSQoU0hFTEwpICQocmVnZGF0X3NoKSAkKHNyY2RpcikvLi4vcmVnZm9ybWF0cy9pMzg2L2FtZDY0LW1weC1saW51eC5kYXQgYW1kNjQtbXB4LWxpbnV4LmMKKythbWQ2NC1hdngtbXB4LmMgOiAkKHNyY2RpcikvLi4vcmVnZm9ybWF0cy9pMzg2L2FtZDY0LWF2eC1tcHguZGF0ICQocmVnZGF0X3NoKQorKwkkKFNIRUxMKSAkKHJlZ2RhdF9zaCkgJChzcmNkaXIpLy4uL3JlZ2Zvcm1hdHMvaTM4Ni9hbWQ2NC1hdngtbXB4LmRhdCBhbWQ2NC1hdngtbXB4LmMKKythbWQ2NC1hdngtbXB4LWxpbnV4LmMgOiAkKHNyY2RpcikvLi4vcmVnZm9ybWF0cy9pMzg2L2FtZDY0LWF2eC1tcHgtbGludXguZGF0ICQocmVnZGF0X3NoKQorKwkkKFNIRUxMKSAkKHJlZ2RhdF9zaCkgJChzcmNkaXIpLy4uL3JlZ2Zvcm1hdHMvaTM4Ni9hbWQ2NC1hdngtbXB4LWxpbnV4LmRhdCBhbWQ2NC1hdngtbXB4LWxpbnV4LmMKKyB4MzIuYyA6ICQoc3JjZGlyKS8uLi9yZWdmb3JtYXRzL2kzODYveDMyLmRhdCAkKHJlZ2RhdF9zaCkKKyAJJChTSEVMTCkgJChyZWdkYXRfc2gpICQoc3JjZGlyKS8uLi9yZWdmb3JtYXRzL2kzODYveDMyLmRhdCB4MzIuYworIHgzMi1saW51eC5jIDogJChzcmNkaXIpLy4uL3JlZ2Zvcm1hdHMvaTM4Ni94MzItbGludXguZGF0ICQocmVnZGF0X3NoKQorZGlmZiAtLWdpdCBhL2dkYi9nZGJzZXJ2ZXIvY29uZmlndXJlLnNydiBiL2dkYi9nZGJzZXJ2ZXIvY29uZmlndXJlLnNydgoraW5kZXggYTU0YjllNy4uNDkzNWEzNiAxMDA2NDQKKy0tLSBhL2dkYi9nZGJzZXJ2ZXIvY29uZmlndXJlLnNydgorKysrIGIvZ2RiL2dkYnNlcnZlci9jb25maWd1cmUuc3J2CitAQCAtMjQsMjAgKzI0LDIzIEBACisgIyBEZWZhdWx0IGhvc3Rpb19sYXN0X2Vycm9yIGltcGxlbWVudGF0aW9uCisgc3J2X2hvc3Rpb19lcnJfb2Jqcz0iaG9zdGlvLWVycm5vLm8iCisKKy1zcnZfaTM4Nl9yZWdvYmo9ImkzODYubyBpMzg2LWF2eC5vIGkzODYtYXZ4NTEyLm8gaTM4Ni1tcHgubyBpMzg2LW1teC5vIgorLXNydl9pMzg2X2xpbnV4X3JlZ29iaj0iaTM4Ni1saW51eC5vIGkzODYtYXZ4LWxpbnV4Lm8gaTM4Ni1hdng1MTItbGludXgubyBpMzg2LW1weC1saW51eC5vIGkzODYtbW14LWxpbnV4Lm8iCistc3J2X2FtZDY0X3JlZ29iaj0iYW1kNjQubyBhbWQ2NC1hdngubyBhbWQ2NC1hdng1MTIubyBhbWQ2NC1tcHgubyB4MzIubyB4MzItYXZ4Lm8geDMyLWF2eDUxMi5vIgorLXNydl9hbWQ2NF9saW51eF9yZWdvYmo9ImFtZDY0LWxpbnV4Lm8gYW1kNjQtYXZ4LWxpbnV4Lm8gYW1kNjQtYXZ4NTEyLWxpbnV4Lm8gYW1kNjQtbXB4LWxpbnV4Lm8geDMyLWxpbnV4Lm8geDMyLWF2eC1saW51eC5vIHgzMi1hdng1MTItbGludXgubyIKKytzcnZfaTM4Nl9yZWdvYmo9ImkzODYubyBpMzg2LWF2eC5vIGkzODYtYXZ4NTEyLm8gaTM4Ni1tcHgubyBpMzg2LWF2eC1tcHgubyBpMzg2LW1teC5vIgorK3Nydl9pMzg2X2xpbnV4X3JlZ29iaj0iaTM4Ni1saW51eC5vIGkzODYtYXZ4LWxpbnV4Lm8gaTM4Ni1hdng1MTItbGludXgubyBpMzg2LW1weC1saW51eC5vIGkzODYtYXZ4LW1weC1saW51eC5vIGkzODYtbW14LWxpbnV4Lm8iCisrc3J2X2FtZDY0X3JlZ29iaj0iYW1kNjQubyBhbWQ2NC1hdngubyBhbWQ2NC1hdng1MTIubyBhbWQ2NC1tcHgubyBhbWQ2NC1hdngtbXB4Lm8geDMyLm8geDMyLWF2eC5vIHgzMi1hdng1MTIubyIKKytzcnZfYW1kNjRfbGludXhfcmVnb2JqPSJhbWQ2NC1saW51eC5vIGFtZDY0LWF2eC1saW51eC5vIGFtZDY0LWF2eDUxMi1saW51eC5vIGFtZDY0LW1weC1saW51eC5vIGFtZDY0LWF2eC1tcHgtbGludXgubyB4MzItbGludXgubyB4MzItYXZ4LWxpbnV4Lm8geDMyLWF2eDUxMi1saW51eC5vIgorKworKworK2lwYV9pMzg2X2xpbnV4X3JlZ29iaj0iaTM4Ni1saW51eC1pcGEubyBpMzg2LWF2eC1saW51eC1pcGEubyAgaTM4Ni1hdngtbXB4LWxpbnV4LWlwYS5vIGkzODYtYXZ4NTEyLWxpbnV4LWlwYS5vIGkzODYtbXB4LWxpbnV4LWlwYS5vIGkzODYtbW14LWxpbnV4LWlwYS5vIgorK2lwYV9hbWQ2NF9saW51eF9yZWdvYmo9ImFtZDY0LWxpbnV4LWlwYS5vIGFtZDY0LWF2eC1saW51eC1pcGEubyBhbWQ2NC1hdngtbXB4LWxpbnV4LWlwYS5vIGFtZDY0LWF2eDUxMi1saW51eC1pcGEubyBhbWQ2NC1tcHgtbGludXgtaXBhLm8iCisKKy1pcGFfaTM4Nl9saW51eF9yZWdvYmo9aTM4Ni1saW51eC1pcGEubworLWlwYV9hbWQ2NF9saW51eF9yZWdvYmo9YW1kNjQtbGludXgtaXBhLm8KKworIHNydl9pMzg2XzMyYml0X3htbGZpbGVzPSJpMzg2LzMyYml0LWNvcmUueG1sIGkzODYvMzJiaXQtc3NlLnhtbCBpMzg2LzMyYml0LWF2eC54bWwgaTM4Ni8zMmJpdC1hdng1MTIueG1sIGkzODYvMzJiaXQtbXB4LnhtbCIKKyBzcnZfaTM4Nl82NGJpdF94bWxmaWxlcz0iaTM4Ni82NGJpdC1jb3JlLnhtbCBpMzg2LzY0Yml0LXNzZS54bWwgaTM4Ni82NGJpdC1hdngueG1sIGkzODYvNjRiaXQtYXZ4NTEyLnhtbCBpMzg2L3gzMi1jb3JlLnhtbCBpMzg2LzY0Yml0LW1weC54bWwiCistc3J2X2kzODZfeG1sZmlsZXM9ImkzODYvaTM4Ni54bWwgaTM4Ni9pMzg2LWF2eC54bWwgaTM4Ni9pMzg2LWF2eDUxMi54bWwgaTM4Ni9pMzg2LW1weC54bWwgaTM4Ni9pMzg2LW1teC54bWwgJHNydl9pMzg2XzMyYml0X3htbGZpbGVzIgorLXNydl9hbWQ2NF94bWxmaWxlcz0iaTM4Ni9hbWQ2NC54bWwgaTM4Ni9hbWQ2NC1hdngueG1sIGkzODYvYW1kNjQtYXZ4NTEyLnhtbCBpMzg2L3gzMi54bWwgaTM4Ni94MzItYXZ4LnhtbCBpMzg2L3gzMi1hdng1MTIueG1sIGkzODYvYW1kNjQtbXB4LnhtbCAkc3J2X2kzODZfNjRiaXRfeG1sZmlsZXMiCistc3J2X2kzODZfbGludXhfeG1sZmlsZXM9ImkzODYvaTM4Ni1saW51eC54bWwgaTM4Ni9pMzg2LWF2eC1saW51eC54bWwgaTM4Ni9pMzg2LWF2eDUxMi1saW51eC54bWwgaTM4Ni9pMzg2LW1teC1saW51eC54bWwgaTM4Ni8zMmJpdC1saW51eC54bWwgaTM4Ni9pMzg2LW1weC1saW51eC54bWwgJHNydl9pMzg2XzMyYml0X3htbGZpbGVzIgorLXNydl9hbWQ2NF9saW51eF94bWxmaWxlcz0iaTM4Ni9hbWQ2NC1saW51eC54bWwgaTM4Ni9hbWQ2NC1hdngtbGludXgueG1sIGkzODYvYW1kNjQtYXZ4NTEyLWxpbnV4LnhtbCBpMzg2LzY0Yml0LWxpbnV4LnhtbCBpMzg2L2FtZDY0LW1weC1saW51eC54bWwgaTM4Ni94MzItbGludXgueG1sIGkzODYveDMyLWF2eC1saW51eC54bWwgaTM4Ni94MzItYXZ4NTEyLWxpbnV4LnhtbCAkc3J2X2kzODZfNjRiaXRfeG1sZmlsZXMiCisrc3J2X2kzODZfeG1sZmlsZXM9ImkzODYvaTM4Ni54bWwgaTM4Ni9pMzg2LWF2eC54bWwgaTM4Ni9pMzg2LWF2eDUxMi54bWwgaTM4Ni9pMzg2LW1weC54bWwgaTM4Ni9pMzg2LWF2eC1tcHgueG1sIGkzODYvaTM4Ni1tbXgueG1sICRzcnZfaTM4Nl8zMmJpdF94bWxmaWxlcyIKKytzcnZfYW1kNjRfeG1sZmlsZXM9ImkzODYvYW1kNjQueG1sIGkzODYvYW1kNjQtYXZ4LnhtbCBpMzg2L2FtZDY0LWF2eDUxMi54bWwgaTM4Ni94MzIueG1sIGkzODYveDMyLWF2eC54bWwgaTM4Ni94MzItYXZ4NTEyLnhtbCBpMzg2L2FtZDY0LW1weC54bWwgaTM4Ni9hbWQ2NC1hdngtbXB4LnhtbCAgJHNydl9pMzg2XzY0Yml0X3htbGZpbGVzIgorK3Nydl9pMzg2X2xpbnV4X3htbGZpbGVzPSJpMzg2L2kzODYtbGludXgueG1sIGkzODYvaTM4Ni1hdngtbGludXgueG1sIGkzODYvaTM4Ni1hdng1MTItbGludXgueG1sIGkzODYvaTM4Ni1tbXgtbGludXgueG1sIGkzODYvMzJiaXQtbGludXgueG1sIGkzODYvaTM4Ni1tcHgtbGludXgueG1sIGkzODYvaTM4Ni1hdngtbXB4LWxpbnV4LnhtbCAkc3J2X2kzODZfMzJiaXRfeG1sZmlsZXMiCisrc3J2X2FtZDY0X2xpbnV4X3htbGZpbGVzPSJpMzg2L2FtZDY0LWxpbnV4LnhtbCBpMzg2L2FtZDY0LWF2eC1saW51eC54bWwgaTM4Ni9hbWQ2NC1hdng1MTItbGludXgueG1sIGkzODYvNjRiaXQtbGludXgueG1sIGkzODYvYW1kNjQtbXB4LWxpbnV4LnhtbCBpMzg2L2FtZDY0LWF2eC1tcHgtbGludXgueG1sIGkzODYveDMyLWxpbnV4LnhtbCBpMzg2L3gzMi1hdngtbGludXgueG1sIGkzODYveDMyLWF2eDUxMi1saW51eC54bWwgJHNydl9pMzg2XzY0Yml0X3htbGZpbGVzIgorKworCisKKyAjIExpbnV4IG9iamVjdCBmaWxlcy4gIFRoaXMgaXMgc28gd2UgZG9uJ3QgaGF2ZSB0byByZXBlYXQKK2RpZmYgLS1naXQgYS9nZGIvZ2Ric2VydmVyL2xpbnV4LWFhcmNoNjQtaXBhLmMgYi9nZGIvZ2Ric2VydmVyL2xpbnV4LWFhcmNoNjQtaXBhLmMKK2luZGV4IDc1ODcwOGQuLmYxZWFhNzAgMTAwNjQ0CistLS0gYS9nZGIvZ2Ric2VydmVyL2xpbnV4LWFhcmNoNjQtaXBhLmMKKysrKyBiL2dkYi9nZGJzZXJ2ZXIvbGludXgtYWFyY2g2NC1pcGEuYworQEAgLTE0Myw5ICsxNDMsMTggQEAgZ2RiX2FnZW50X2dldF9yYXdfcmVnIChjb25zdCB1bnNpZ25lZCBjaGFyICpyYXdfcmVncywgaW50IHJlZ251bSkKKyAJCQkrIGFhcmNoNjRfZnRfY29sbGVjdF9yZWdtYXBbcmVnbnVtXSAqIEZUX0NSX1NJWkUpOworIH0KKworKy8qIFJldHVybiB0YXJnZXRfZGVzYyB0byB1c2UgZm9yIElQQSwgZ2l2ZW4gdGhlIHRkZXNjIGluZGV4IHBhc3NlZCBieQorKyAgIGdkYnNlcnZlci4gIEluZGV4IGlzIGlnbm9yZWQsIHNpbmNlIHdlIGhhdmUgb25seSBvbmUgdGRlc2MKKysgICBhdCB0aGUgbW9tZW50LiAgKi8KKysKKytjb25zdCBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKgorK2dldF9pcGFfdGRlc2MgKGludCBpZHgpCisreworKyAgcmV0dXJuIHRkZXNjX2FhcmNoNjQ7CisrfQorKworIHZvaWQKKyBpbml0aWFsaXplX2xvd190cmFjZXBvaW50ICh2b2lkKQorIHsKKyAgIGluaXRfcmVnaXN0ZXJzX2FhcmNoNjQgKCk7CistICBpcGFfdGRlc2MgPSB0ZGVzY19hYXJjaDY0OworIH0KK2RpZmYgLS1naXQgYS9nZGIvZ2Ric2VydmVyL2xpbnV4LWFtZDY0LWlwYS5jIGIvZ2RiL2dkYnNlcnZlci9saW51eC1hbWQ2NC1pcGEuYworaW5kZXggMmVlZWRjZC4uZjljNzJhMCAxMDA2NDQKKy0tLSBhL2dkYi9nZGJzZXJ2ZXIvbGludXgtYW1kNjQtaXBhLmMKKysrKyBiL2dkYi9nZGJzZXJ2ZXIvbGludXgtYW1kNjQtaXBhLmMKK0BAIC0yMCw2ICsyMCw3IEBACisKKyAjaW5jbHVkZSAic2VydmVyLmgiCisgI2luY2x1ZGUgInRyYWNlcG9pbnQuaCIKKysjaW5jbHVkZSAibGludXgteDg2LXRkZXNjLmgiCisKKyAvKiBEZWZpbmVkIGluIGF1dG8tZ2VuZXJhdGVkIGZpbGUgYW1kNjQtbGludXguYy4gICovCisgdm9pZCBpbml0X3JlZ2lzdGVyc19hbWQ2NF9saW51eCAodm9pZCk7CitAQCAtMTY2LDkgKzE2NywzNyBAQCBzdXBwbHlfc3RhdGljX3RyYWNlcG9pbnRfcmVnaXN0ZXJzIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAorCisgI2VuZGlmIC8qIEhBVkVfVVNUICovCisKKysvKiBSZXR1cm4gdGFyZ2V0X2Rlc2MgdG8gdXNlIGZvciBJUEEsIGdpdmVuIHRoZSB0ZGVzYyBpbmRleCBwYXNzZWQgYnkKKysgICBnZGJzZXJ2ZXIuICAqLworKworK2NvbnN0IHN0cnVjdCB0YXJnZXRfZGVzYyAqCisrZ2V0X2lwYV90ZGVzYyAoaW50IGlkeCkKKyt7CisrICBzd2l0Y2ggKGlkeCkKKysgICAgeworKyAgICBjYXNlIFg4Nl9UREVTQ19TU0U6CisrICAgICAgcmV0dXJuIHRkZXNjX2FtZDY0X2xpbnV4OworKyAgICBjYXNlIFg4Nl9UREVTQ19BVlg6CisrICAgICAgcmV0dXJuIHRkZXNjX2FtZDY0X2F2eF9saW51eDsKKysgICAgY2FzZSBYODZfVERFU0NfTVBYOgorKyAgICAgIHJldHVybiB0ZGVzY19hbWQ2NF9tcHhfbGludXg7CisrICAgIGNhc2UgWDg2X1RERVNDX0FWWF9NUFg6CisrICAgICAgcmV0dXJuIHRkZXNjX2FtZDY0X2F2eF9tcHhfbGludXg7CisrICAgIGNhc2UgWDg2X1RERVNDX0FWWDUxMjoKKysgICAgICByZXR1cm4gdGRlc2NfYW1kNjRfYXZ4NTEyX2xpbnV4OworKyAgICBkZWZhdWx0OgorKyAgICAgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sCisrCQkgICAgICAidW5rbm93biBpcGEgdGRlc2MgaW5kZXg6ICVkIiwgaWR4KTsKKysgICAgICByZXR1cm4gdGRlc2NfYW1kNjRfbGludXg7CisrICAgIH0KKyt9CisrCisgdm9pZAorIGluaXRpYWxpemVfbG93X3RyYWNlcG9pbnQgKHZvaWQpCisgeworICAgaW5pdF9yZWdpc3RlcnNfYW1kNjRfbGludXggKCk7CistICBpcGFfdGRlc2MgPSB0ZGVzY19hbWQ2NF9saW51eDsKKysgIGluaXRfcmVnaXN0ZXJzX2FtZDY0X2F2eF9saW51eCAoKTsKKysgIGluaXRfcmVnaXN0ZXJzX2FtZDY0X2F2eF9tcHhfbGludXggKCk7CisrICBpbml0X3JlZ2lzdGVyc19hbWQ2NF9tcHhfbGludXggKCk7CisrICBpbml0X3JlZ2lzdGVyc19hbWQ2NF9hdng1MTJfbGludXggKCk7CisgfQorZGlmZiAtLWdpdCBhL2dkYi9nZGJzZXJ2ZXIvbGludXgtaTM4Ni1pcGEuYyBiL2dkYi9nZGJzZXJ2ZXIvbGludXgtaTM4Ni1pcGEuYworaW5kZXggMTFkYzAzOC4uZDdhOGU3ZCAxMDA2NDQKKy0tLSBhL2dkYi9nZGJzZXJ2ZXIvbGludXgtaTM4Ni1pcGEuYworKysrIGIvZ2RiL2dkYnNlcnZlci9saW51eC1pMzg2LWlwYS5jCitAQCAtMjEsNiArMjEsNyBAQAorICNpbmNsdWRlICJzZXJ2ZXIuaCIKKyAjaW5jbHVkZSA8c3lzL21tYW4uaD4KKyAjaW5jbHVkZSAidHJhY2Vwb2ludC5oIgorKyNpbmNsdWRlICJsaW51eC14ODYtdGRlc2MuaCIKKworIC8qIEdEQiByZWdpc3RlciBudW1iZXJzLiAgKi8KKworQEAgLTQ3LDEwICs0OCw2IEBAIGVudW0gaTM4Nl9nZGJfcmVnbnVtCisKKyAjZGVmaW5lIGkzODZfbnVtX3JlZ3MgMTYKKworLS8qIERlZmluZWQgaW4gYXV0by1nZW5lcmF0ZWQgZmlsZSBpMzg2LWxpbnV4LmMuICAqLworLXZvaWQgaW5pdF9yZWdpc3RlcnNfaTM4Nl9saW51eCAodm9pZCk7CistZXh0ZXJuIGNvbnN0IHN0cnVjdCB0YXJnZXRfZGVzYyAqdGRlc2NfaTM4Nl9saW51eDsKKy0KKyAjZGVmaW5lIEZUX0NSX0VBWCAxNQorICNkZWZpbmUgRlRfQ1JfRUNYIDE0CisgI2RlZmluZSBGVF9DUl9FRFggMTMKK0BAIC0yNDcsMTAgKzI0NCw0MCBAQCBpbml0aWFsaXplX2Zhc3RfdHJhY2Vwb2ludF90cmFtcG9saW5lX2J1ZmZlciAodm9pZCkKKyAgICAgfQorIH0KKworKy8qIFJldHVybiB0YXJnZXRfZGVzYyB0byB1c2UgZm9yIElQQSwgZ2l2ZW4gdGhlIHRkZXNjIGluZGV4IHBhc3NlZCBieQorKyAgIGdkYnNlcnZlci4gICovCisrCisrY29uc3Qgc3RydWN0IHRhcmdldF9kZXNjICoKKytnZXRfaXBhX3RkZXNjIChpbnQgaWR4KQorK3sKKysgIHN3aXRjaCAoaWR4KQorKyAgICB7CisrICAgIGNhc2UgWDg2X1RERVNDX01NWDoKKysgICAgICByZXR1cm4gdGRlc2NfaTM4Nl9tbXhfbGludXg7CisrICAgIGNhc2UgWDg2X1RERVNDX1NTRToKKysgICAgICByZXR1cm4gdGRlc2NfaTM4Nl9saW51eDsKKysgICAgY2FzZSBYODZfVERFU0NfQVZYOgorKyAgICAgIHJldHVybiB0ZGVzY19pMzg2X2F2eF9saW51eDsKKysgICAgY2FzZSBYODZfVERFU0NfTVBYOgorKyAgICAgIHJldHVybiB0ZGVzY19pMzg2X21weF9saW51eDsKKysgICAgY2FzZSBYODZfVERFU0NfQVZYX01QWDoKKysgICAgICByZXR1cm4gdGRlc2NfaTM4Nl9hdnhfbXB4X2xpbnV4OworKyAgICBjYXNlIFg4Nl9UREVTQ19BVlg1MTI6CisrICAgICAgcmV0dXJuIHRkZXNjX2kzODZfYXZ4NTEyX2xpbnV4OworKyAgICBkZWZhdWx0OgorKyAgICAgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sCisrCQkgICAgICAidW5rbm93biBpcGEgdGRlc2MgaW5kZXg6ICVkIiwgaWR4KTsKKysgICAgICByZXR1cm4gdGRlc2NfaTM4Nl9saW51eDsKKysgICAgfQorK30KKysKKyB2b2lkCisgaW5pdGlhbGl6ZV9sb3dfdHJhY2Vwb2ludCAodm9pZCkKKyB7CisrICBpbml0X3JlZ2lzdGVyc19pMzg2X21teF9saW51eCAoKTsKKyAgIGluaXRfcmVnaXN0ZXJzX2kzODZfbGludXggKCk7CistICBpcGFfdGRlc2MgPSB0ZGVzY19pMzg2X2xpbnV4OworKyAgaW5pdF9yZWdpc3RlcnNfaTM4Nl9hdnhfbGludXggKCk7CisrICBpbml0X3JlZ2lzdGVyc19pMzg2X21weF9saW51eCAoKTsKKysgIGluaXRfcmVnaXN0ZXJzX2kzODZfYXZ4NTEyX2xpbnV4ICgpOworICAgaW5pdGlhbGl6ZV9mYXN0X3RyYWNlcG9pbnRfdHJhbXBvbGluZV9idWZmZXIgKCk7CisgfQorZGlmZiAtLWdpdCBhL2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmMgYi9nZGIvZ2Ric2VydmVyL2xpbnV4LWxvdy5jCitpbmRleCA4YjAyNWJkLi5hMTQyYzJjIDEwMDY0NAorLS0tIGEvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuYworKysrIGIvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuYworQEAgLTY0MzIsNiArNjQzMiwxNSBAQCBsaW51eF9zdXBwb3J0c19jYXRjaF9zeXNjYWxsICh2b2lkKQorIH0KKworIHN0YXRpYyBpbnQKKytsaW51eF9nZXRfaXBhX3RkZXNjX2lkeCAodm9pZCkKKyt7CisrICBpZiAodGhlX2xvd190YXJnZXQuZ2V0X2lwYV90ZGVzY19pZHggPT0gTlVMTCkKKysgICAgcmV0dXJuIDA7CisrCisrICByZXR1cm4gKCp0aGVfbG93X3RhcmdldC5nZXRfaXBhX3RkZXNjX2lkeCkgKCk7CisrfQorKworK3N0YXRpYyBpbnQKKyBsaW51eF9zdXBwb3J0c190cmFjZXBvaW50cyAodm9pZCkKKyB7CisgICBpZiAoKnRoZV9sb3dfdGFyZ2V0LnN1cHBvcnRzX3RyYWNlcG9pbnRzID09IE5VTEwpCitAQCAtNzQwOCw2ICs3NDE3LDcgQEAgc3RhdGljIHN0cnVjdCB0YXJnZXRfb3BzIGxpbnV4X3RhcmdldF9vcHMgPSB7CisgICBsaW51eF9icmVha3BvaW50X2tpbmRfZnJvbV9jdXJyZW50X3N0YXRlLAorICAgbGludXhfc3VwcG9ydHNfc29mdHdhcmVfc2luZ2xlX3N0ZXAsCisgICBsaW51eF9zdXBwb3J0c19jYXRjaF9zeXNjYWxsLAorKyAgbGludXhfZ2V0X2lwYV90ZGVzY19pZHgsCisgfTsKKworICNpZmRlZiBIQVZFX0xJTlVYX1JFR1NFVFMKK2RpZmYgLS1naXQgYS9nZGIvZ2Ric2VydmVyL2xpbnV4LWxvdy5oIGIvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuaAoraW5kZXggNGVjODU1MC4uZDQ5NDZjMSAxMDA2NDQKKy0tLSBhL2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmgKKysrKyBiL2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmgKK0BAIC0yNDYsNiArMjQ2LDkgQEAgc3RydWN0IGxpbnV4X3RhcmdldF9vcHMKKyAgICAgIGR1ZSB0byBTWVNDQUxMX1NJR1RSQVAuICAqLworICAgdm9pZCAoKmdldF9zeXNjYWxsX3RyYXBpbmZvKSAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKKyAJCQkJaW50ICpzeXNubywgaW50ICpzeXNyZXQpOworKworKyAgLyogU2VlIHRhcmdldC5oLiAgKi8KKysgIGludCAoKmdldF9pcGFfdGRlc2NfaWR4KSAodm9pZCk7CisgfTsKKworIGV4dGVybiBzdHJ1Y3QgbGludXhfdGFyZ2V0X29wcyB0aGVfbG93X3RhcmdldDsKK2RpZmYgLS1naXQgYS9nZGIvZ2Ric2VydmVyL2xpbnV4LXg4Ni1sb3cuYyBiL2dkYi9nZGJzZXJ2ZXIvbGludXgteDg2LWxvdy5jCitpbmRleCAwYzQ5NTRhLi4yNTM1OTU5IDEwMDY0NAorLS0tIGEvZ2RiL2dkYnNlcnZlci9saW51eC14ODYtbG93LmMKKysrKyBiL2dkYi9nZGJzZXJ2ZXIvbGludXgteDg2LWxvdy5jCitAQCAtNDUsNTcgKzQ1LDcgQEAKKyAjaW5jbHVkZSAibmF0L2xpbnV4LW5hdC5oIgorICNpbmNsdWRlICJuYXQveDg2LWxpbnV4LmgiCisgI2luY2x1ZGUgIm5hdC94ODYtbGludXgtZHJlZ3MuaCIKKy0KKy0jaWZkZWYgX194ODZfNjRfXworLS8qIERlZmluZWQgaW4gYXV0by1nZW5lcmF0ZWQgZmlsZSBhbWQ2NC1saW51eC5jLiAgKi8KKy12b2lkIGluaXRfcmVnaXN0ZXJzX2FtZDY0X2xpbnV4ICh2b2lkKTsKKy1leHRlcm4gY29uc3Qgc3RydWN0IHRhcmdldF9kZXNjICp0ZGVzY19hbWQ2NF9saW51eDsKKy0KKy0vKiBEZWZpbmVkIGluIGF1dG8tZ2VuZXJhdGVkIGZpbGUgYW1kNjQtYXZ4LWxpbnV4LmMuICAqLworLXZvaWQgaW5pdF9yZWdpc3RlcnNfYW1kNjRfYXZ4X2xpbnV4ICh2b2lkKTsKKy1leHRlcm4gY29uc3Qgc3RydWN0IHRhcmdldF9kZXNjICp0ZGVzY19hbWQ2NF9hdnhfbGludXg7CistCistLyogRGVmaW5lZCBpbiBhdXRvLWdlbmVyYXRlZCBmaWxlIGFtZDY0LWF2eDUxMi1saW51eC5jLiAgKi8KKy12b2lkIGluaXRfcmVnaXN0ZXJzX2FtZDY0X2F2eDUxMl9saW51eCAodm9pZCk7CistZXh0ZXJuIGNvbnN0IHN0cnVjdCB0YXJnZXRfZGVzYyAqdGRlc2NfYW1kNjRfYXZ4NTEyX2xpbnV4OworLQorLS8qIERlZmluZWQgaW4gYXV0by1nZW5lcmF0ZWQgZmlsZSBhbWQ2NC1tcHgtbGludXguYy4gICovCistdm9pZCBpbml0X3JlZ2lzdGVyc19hbWQ2NF9tcHhfbGludXggKHZvaWQpOworLWV4dGVybiBjb25zdCBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKnRkZXNjX2FtZDY0X21weF9saW51eDsKKy0KKy0vKiBEZWZpbmVkIGluIGF1dG8tZ2VuZXJhdGVkIGZpbGUgeDMyLWxpbnV4LmMuICAqLworLXZvaWQgaW5pdF9yZWdpc3RlcnNfeDMyX2xpbnV4ICh2b2lkKTsKKy1leHRlcm4gY29uc3Qgc3RydWN0IHRhcmdldF9kZXNjICp0ZGVzY194MzJfbGludXg7CistCistLyogRGVmaW5lZCBpbiBhdXRvLWdlbmVyYXRlZCBmaWxlIHgzMi1hdngtbGludXguYy4gICovCistdm9pZCBpbml0X3JlZ2lzdGVyc194MzJfYXZ4X2xpbnV4ICh2b2lkKTsKKy1leHRlcm4gY29uc3Qgc3RydWN0IHRhcmdldF9kZXNjICp0ZGVzY194MzJfYXZ4X2xpbnV4OworLQorLS8qIERlZmluZWQgaW4gYXV0by1nZW5lcmF0ZWQgZmlsZSB4MzItYXZ4NTEyLWxpbnV4LmMuICAqLworLXZvaWQgaW5pdF9yZWdpc3RlcnNfeDMyX2F2eDUxMl9saW51eCAodm9pZCk7CistZXh0ZXJuIGNvbnN0IHN0cnVjdCB0YXJnZXRfZGVzYyAqdGRlc2NfeDMyX2F2eDUxMl9saW51eDsKKy0KKy0jZW5kaWYKKy0KKy0vKiBEZWZpbmVkIGluIGF1dG8tZ2VuZXJhdGVkIGZpbGUgaTM4Ni1saW51eC5jLiAgKi8KKy12b2lkIGluaXRfcmVnaXN0ZXJzX2kzODZfbGludXggKHZvaWQpOworLWV4dGVybiBjb25zdCBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKnRkZXNjX2kzODZfbGludXg7CistCistLyogRGVmaW5lZCBpbiBhdXRvLWdlbmVyYXRlZCBmaWxlIGkzODYtbW14LWxpbnV4LmMuICAqLworLXZvaWQgaW5pdF9yZWdpc3RlcnNfaTM4Nl9tbXhfbGludXggKHZvaWQpOworLWV4dGVybiBjb25zdCBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKnRkZXNjX2kzODZfbW14X2xpbnV4OworLQorLS8qIERlZmluZWQgaW4gYXV0by1nZW5lcmF0ZWQgZmlsZSBpMzg2LWF2eC1saW51eC5jLiAgKi8KKy12b2lkIGluaXRfcmVnaXN0ZXJzX2kzODZfYXZ4X2xpbnV4ICh2b2lkKTsKKy1leHRlcm4gY29uc3Qgc3RydWN0IHRhcmdldF9kZXNjICp0ZGVzY19pMzg2X2F2eF9saW51eDsKKy0KKy0vKiBEZWZpbmVkIGluIGF1dG8tZ2VuZXJhdGVkIGZpbGUgaTM4Ni1hdng1MTItbGludXguYy4gICovCistdm9pZCBpbml0X3JlZ2lzdGVyc19pMzg2X2F2eDUxMl9saW51eCAodm9pZCk7CistZXh0ZXJuIGNvbnN0IHN0cnVjdCB0YXJnZXRfZGVzYyAqdGRlc2NfaTM4Nl9hdng1MTJfbGludXg7CistCistLyogRGVmaW5lZCBpbiBhdXRvLWdlbmVyYXRlZCBmaWxlIGkzODYtbXB4LWxpbnV4LmMuICAqLworLXZvaWQgaW5pdF9yZWdpc3RlcnNfaTM4Nl9tcHhfbGludXggKHZvaWQpOworLWV4dGVybiBjb25zdCBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKnRkZXNjX2kzODZfbXB4X2xpbnV4OworKyNpbmNsdWRlICJsaW51eC14ODYtdGRlc2MuaCIKKworICNpZmRlZiBfX3g4Nl82NF9fCisgc3RhdGljIHN0cnVjdCB0YXJnZXRfZGVzYyAqdGRlc2NfYW1kNjRfbGludXhfbm9feG1sOworQEAgLTgzOSw2ICs3ODksOSBAQCB4ODZfbGludXhfcmVhZF9kZXNjcmlwdGlvbiAodm9pZCkKKyAJCWNhc2UgWDg2X1hTVEFURV9BVlg1MTJfTUFTSzoKKyAJCSAgcmV0dXJuIHRkZXNjX2FtZDY0X2F2eDUxMl9saW51eDsKKworKwkJY2FzZSBYODZfWFNUQVRFX0FWWF9NUFhfTUFTSzoKKysJCSAgcmV0dXJuIHRkZXNjX2FtZDY0X2F2eF9tcHhfbGludXg7CisrCisgCQljYXNlIFg4Nl9YU1RBVEVfTVBYX01BU0s6CisgCQkgIHJldHVybiB0ZGVzY19hbWQ2NF9tcHhfbGludXg7CisKK0BAIC04ODYsNiArODM5LDkgQEAgeDg2X2xpbnV4X3JlYWRfZGVzY3JpcHRpb24gKHZvaWQpCisgCSAgICBjYXNlIChYODZfWFNUQVRFX01QWF9NQVNLKToKKyAJICAgICAgcmV0dXJuIHRkZXNjX2kzODZfbXB4X2xpbnV4OworCisrCSAgICBjYXNlIChYODZfWFNUQVRFX0FWWF9NUFhfTUFTSyk6CisrCSAgICAgIHJldHVybiB0ZGVzY19pMzg2X2F2eF9tcHhfbGludXg7CisrCisgCSAgICBjYXNlIChYODZfWFNUQVRFX0FWWF9NQVNLKToKKyAJICAgICAgcmV0dXJuIHRkZXNjX2kzODZfYXZ4X2xpbnV4OworCitAQCAtMjg5MSw2ICsyODQ3LDQyIEBAIHg4Nl9zdXBwb3J0c19oYXJkd2FyZV9zaW5nbGVfc3RlcCAodm9pZCkKKyAgIHJldHVybiAxOworIH0KKworK3N0YXRpYyBpbnQKKyt4ODZfZ2V0X2lwYV90ZGVzY19pZHggKHZvaWQpCisreworKyAgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSA9IGdldF90aHJlYWRfcmVnY2FjaGUgKGN1cnJlbnRfdGhyZWFkLCAwKTsKKysgIGNvbnN0IHN0cnVjdCB0YXJnZXRfZGVzYyAqdGRlc2MgPSByZWdjYWNoZS0+dGRlc2M7CisrCisrI2lmZGVmIF9feDg2XzY0X18KKysgIGlmICh0ZGVzYyA9PSB0ZGVzY19hbWQ2NF9saW51eCB8fCB0ZGVzYyA9PSB0ZGVzY19hbWQ2NF9saW51eF9ub194bWwKKysgICAgICB8fCB0ZGVzYyA9PSB0ZGVzY194MzJfbGludXgpCisrICAgIHJldHVybiBYODZfVERFU0NfU1NFOworKyAgaWYgKHRkZXNjID09IHRkZXNjX2FtZDY0X2F2eF9saW51eCB8fCB0ZGVzYyA9PSB0ZGVzY194MzJfYXZ4X2xpbnV4KQorKyAgICByZXR1cm4gWDg2X1RERVNDX0FWWDsKKysgIGlmICh0ZGVzYyA9PSB0ZGVzY19hbWQ2NF9tcHhfbGludXgpCisrICAgIHJldHVybiBYODZfVERFU0NfTVBYOworKyAgaWYgKHRkZXNjID09IHRkZXNjX2FtZDY0X2F2eF9tcHhfbGludXgpCisrICAgIHJldHVybiBYODZfVERFU0NfQVZYX01QWDsKKysgIGlmICh0ZGVzYyA9PSB0ZGVzY19hbWQ2NF9hdng1MTJfbGludXggfHwgdGRlc2MgPT0gdGRlc2NfeDMyX2F2eDUxMl9saW51eCkKKysgICAgcmV0dXJuIFg4Nl9UREVTQ19BVlg1MTI7CisrI2VuZGlmCisrCisrICBpZiAodGRlc2MgPT0gdGRlc2NfaTM4Nl9tbXhfbGludXgpCisrICAgIHJldHVybiBYODZfVERFU0NfTU1YOworKyAgaWYgKHRkZXNjID09IHRkZXNjX2kzODZfbGludXggfHwgdGRlc2MgPT0gdGRlc2NfaTM4Nl9saW51eF9ub194bWwpCisrICAgIHJldHVybiBYODZfVERFU0NfU1NFOworKyAgaWYgKHRkZXNjID09IHRkZXNjX2kzODZfYXZ4X2xpbnV4KQorKyAgICByZXR1cm4gWDg2X1RERVNDX0FWWDsKKysgIGlmICh0ZGVzYyA9PSB0ZGVzY19pMzg2X21weF9saW51eCkKKysgICAgcmV0dXJuIFg4Nl9UREVTQ19NUFg7CisrICBpZiAodGRlc2MgPT0gdGRlc2NfaTM4Nl9hdnhfbXB4X2xpbnV4KQorKyAgICByZXR1cm4gWDg2X1RERVNDX0FWWF9NUFg7CisrICBpZiAodGRlc2MgPT0gdGRlc2NfaTM4Nl9hdng1MTJfbGludXgpCisrICAgIHJldHVybiBYODZfVERFU0NfQVZYNTEyOworKworKyAgcmV0dXJuIDA7CisrfQorKworIC8qIFRoaXMgaXMgaW5pdGlhbGl6ZWQgYXNzdW1pbmcgYW4gYW1kNjQgdGFyZ2V0LgorICAgIHg4Nl9hcmNoX3NldHVwIHdpbGwgY29ycmVjdCBpdCBmb3IgaTM4NiBvciBhbWQ2NCB0YXJnZXRzLiAgKi8KKworQEAgLTI5MzQsNiArMjkyNiw3IEBAIHN0cnVjdCBsaW51eF90YXJnZXRfb3BzIHRoZV9sb3dfdGFyZ2V0ID0KKyAgIE5VTEwsIC8qIGJyZWFrcG9pbnRfa2luZF9mcm9tX2N1cnJlbnRfc3RhdGUgKi8KKyAgIHg4Nl9zdXBwb3J0c19oYXJkd2FyZV9zaW5nbGVfc3RlcCwKKyAgIHg4Nl9nZXRfc3lzY2FsbF90cmFwaW5mbywKKysgIHg4Nl9nZXRfaXBhX3RkZXNjX2lkeCwKKyB9OworCisgdm9pZAorQEAgLTI5NDUsNiArMjkzOCw3IEBAIGluaXRpYWxpemVfbG93X2FyY2ggKHZvaWQpCisgICBpbml0X3JlZ2lzdGVyc19hbWQ2NF9hdnhfbGludXggKCk7CisgICBpbml0X3JlZ2lzdGVyc19hbWQ2NF9hdng1MTJfbGludXggKCk7CisgICBpbml0X3JlZ2lzdGVyc19hbWQ2NF9tcHhfbGludXggKCk7CisrICBpbml0X3JlZ2lzdGVyc19hbWQ2NF9hdnhfbXB4X2xpbnV4ICgpOworCisgICBpbml0X3JlZ2lzdGVyc194MzJfbGludXggKCk7CisgICBpbml0X3JlZ2lzdGVyc194MzJfYXZ4X2xpbnV4ICgpOworQEAgLTI5NTksNiArMjk1Myw3IEBAIGluaXRpYWxpemVfbG93X2FyY2ggKHZvaWQpCisgICBpbml0X3JlZ2lzdGVyc19pMzg2X2F2eF9saW51eCAoKTsKKyAgIGluaXRfcmVnaXN0ZXJzX2kzODZfYXZ4NTEyX2xpbnV4ICgpOworICAgaW5pdF9yZWdpc3RlcnNfaTM4Nl9tcHhfbGludXggKCk7CisrICBpbml0X3JlZ2lzdGVyc19pMzg2X2F2eF9tcHhfbGludXggKCk7CisKKyAgIHRkZXNjX2kzODZfbGludXhfbm9feG1sID0gWE5FVyAoc3RydWN0IHRhcmdldF9kZXNjKTsKKyAgIGNvcHlfdGFyZ2V0X2Rlc2NyaXB0aW9uICh0ZGVzY19pMzg2X2xpbnV4X25vX3htbCwgdGRlc2NfaTM4Nl9saW51eCk7CitkaWZmIC0tZ2l0IGEvZ2RiL2dkYnNlcnZlci9saW51eC14ODYtdGRlc2MuaCBiL2dkYi9nZGJzZXJ2ZXIvbGludXgteDg2LXRkZXNjLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi43MjBmNTBjCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvZ2Ric2VydmVyL2xpbnV4LXg4Ni10ZGVzYy5oCitAQCAtMCwwICsxLDk4IEBACisrLyogTG93IGxldmVsIHN1cHBvcnQgZm9yIHg4NiAoaTM4NiBhbmQgeDg2LTY0KSwgc2hhcmVkIGJldHdlZW4gZ2Ric2VydmVyCisrICAgYW5kIElQQS4KKysKKysgICBDb3B5cmlnaHQgKEMpIDIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysvKiBOb3RlOiBzaW5jZSBJUEEgb2J2aW91c2x5IGtub3dzIHdoYXQgQUJJIGl0J3MgcnVubmluZyBvbiAoaTM4NiB2cyB4ODZfNjQKKysgICB2cyB4MzIpLCBpdCdzIHN1ZmZpY2llbnQgdG8gcGFzcyBvbmx5IHRoZSByZWdpc3RlciBzZXQgaGVyZS4gIFRoaXMsCisrICAgdG9nZXRoZXIgd2l0aCB0aGUgQUJJIGtub3duIGF0IElQQSBjb21waWxlIHRpbWUsIG1hcHMgdG8gYSB0ZGVzYy4gICovCisrCisrZW51bSB4ODZfbGludXhfdGRlc2MgeworKyAgWDg2X1RERVNDX01NWCA9IDAsCisrICBYODZfVERFU0NfU1NFID0gMSwKKysgIFg4Nl9UREVTQ19BVlggPSAyLAorKyAgWDg2X1RERVNDX01QWCA9IDMsCisrICBYODZfVERFU0NfQVZYX01QWCA9IDQsCisrICBYODZfVERFU0NfQVZYNTEyID0gNSwKKyt9OworKworKyNpZmRlZiBfX3g4Nl82NF9fCisrCisrI2lmIGRlZmluZWQgX19MUDY0X18gIHx8ICFkZWZpbmVkIElOX1BST0NFU1NfQUdFTlQKKysvKiBEZWZpbmVkIGluIGF1dG8tZ2VuZXJhdGVkIGZpbGUgYW1kNjQtbGludXguYy4gICovCisrdm9pZCBpbml0X3JlZ2lzdGVyc19hbWQ2NF9saW51eCAodm9pZCk7CisrZXh0ZXJuIGNvbnN0IHN0cnVjdCB0YXJnZXRfZGVzYyAqdGRlc2NfYW1kNjRfbGludXg7CisrCisrLyogRGVmaW5lZCBpbiBhdXRvLWdlbmVyYXRlZCBmaWxlIGFtZDY0LWF2eC1saW51eC5jLiAgKi8KKyt2b2lkIGluaXRfcmVnaXN0ZXJzX2FtZDY0X2F2eF9saW51eCAodm9pZCk7CisrZXh0ZXJuIGNvbnN0IHN0cnVjdCB0YXJnZXRfZGVzYyAqdGRlc2NfYW1kNjRfYXZ4X2xpbnV4OworKworKy8qIERlZmluZWQgaW4gYXV0by1nZW5lcmF0ZWQgZmlsZSBhbWQ2NC1hdng1MTItbGludXguYy4gICovCisrdm9pZCBpbml0X3JlZ2lzdGVyc19hbWQ2NF9hdng1MTJfbGludXggKHZvaWQpOworK2V4dGVybiBjb25zdCBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKnRkZXNjX2FtZDY0X2F2eDUxMl9saW51eDsKKysKKysvKiBEZWZpbmVkIGluIGF1dG8tZ2VuZXJhdGVkIGZpbGUgYW1kNjQtYXZ4LW1weC1saW51eC5jLiAgKi8KKyt2b2lkIGluaXRfcmVnaXN0ZXJzX2FtZDY0X2F2eF9tcHhfbGludXggKHZvaWQpOworK2V4dGVybiBjb25zdCBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKnRkZXNjX2FtZDY0X2F2eF9tcHhfbGludXg7CisrCisrLyogRGVmaW5lZCBpbiBhdXRvLWdlbmVyYXRlZCBmaWxlIGFtZDY0LW1weC1saW51eC5jLiAgKi8KKyt2b2lkIGluaXRfcmVnaXN0ZXJzX2FtZDY0X21weF9saW51eCAodm9pZCk7CisrZXh0ZXJuIGNvbnN0IHN0cnVjdCB0YXJnZXRfZGVzYyAqdGRlc2NfYW1kNjRfbXB4X2xpbnV4OworKyNlbmRpZgorKworKyNpZiBkZWZpbmVkIF9fSUxQMzJfXyB8fCAhZGVmaW5lZCBJTl9QUk9DRVNTX0FHRU5UCisrLyogRGVmaW5lZCBpbiBhdXRvLWdlbmVyYXRlZCBmaWxlIHgzMi1saW51eC5jLiAgKi8KKyt2b2lkIGluaXRfcmVnaXN0ZXJzX3gzMl9saW51eCAodm9pZCk7CisrZXh0ZXJuIGNvbnN0IHN0cnVjdCB0YXJnZXRfZGVzYyAqdGRlc2NfeDMyX2xpbnV4OworKworKy8qIERlZmluZWQgaW4gYXV0by1nZW5lcmF0ZWQgZmlsZSB4MzItYXZ4LWxpbnV4LmMuICAqLworK3ZvaWQgaW5pdF9yZWdpc3RlcnNfeDMyX2F2eF9saW51eCAodm9pZCk7CisrZXh0ZXJuIGNvbnN0IHN0cnVjdCB0YXJnZXRfZGVzYyAqdGRlc2NfeDMyX2F2eF9saW51eDsKKysKKysvKiBEZWZpbmVkIGluIGF1dG8tZ2VuZXJhdGVkIGZpbGUgeDMyLWF2eDUxMi1saW51eC5jLiAgKi8KKyt2b2lkIGluaXRfcmVnaXN0ZXJzX3gzMl9hdng1MTJfbGludXggKHZvaWQpOworK2V4dGVybiBjb25zdCBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKnRkZXNjX3gzMl9hdng1MTJfbGludXg7CisrI2VuZGlmCisrCisrI2VuZGlmCisrCisrI2lmIGRlZmluZWQgX19pMzg2X18gfHwgIWRlZmluZWQgSU5fUFJPQ0VTU19BR0VOVAorKy8qIERlZmluZWQgaW4gYXV0by1nZW5lcmF0ZWQgZmlsZSBpMzg2LWxpbnV4LmMuICAqLworK3ZvaWQgaW5pdF9yZWdpc3RlcnNfaTM4Nl9saW51eCAodm9pZCk7CisrZXh0ZXJuIGNvbnN0IHN0cnVjdCB0YXJnZXRfZGVzYyAqdGRlc2NfaTM4Nl9saW51eDsKKysKKysvKiBEZWZpbmVkIGluIGF1dG8tZ2VuZXJhdGVkIGZpbGUgaTM4Ni1tbXgtbGludXguYy4gICovCisrdm9pZCBpbml0X3JlZ2lzdGVyc19pMzg2X21teF9saW51eCAodm9pZCk7CisrZXh0ZXJuIGNvbnN0IHN0cnVjdCB0YXJnZXRfZGVzYyAqdGRlc2NfaTM4Nl9tbXhfbGludXg7CisrCisrLyogRGVmaW5lZCBpbiBhdXRvLWdlbmVyYXRlZCBmaWxlIGkzODYtYXZ4LWxpbnV4LmMuICAqLworK3ZvaWQgaW5pdF9yZWdpc3RlcnNfaTM4Nl9hdnhfbGludXggKHZvaWQpOworK2V4dGVybiBjb25zdCBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKnRkZXNjX2kzODZfYXZ4X2xpbnV4OworKworKy8qIERlZmluZWQgaW4gYXV0by1nZW5lcmF0ZWQgZmlsZSBpMzg2LWF2eC1tcHgtbGludXguYy4gICovCisrdm9pZCBpbml0X3JlZ2lzdGVyc19pMzg2X2F2eF9tcHhfbGludXggKHZvaWQpOworK2V4dGVybiBjb25zdCBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKnRkZXNjX2kzODZfYXZ4X21weF9saW51eDsKKysKKysvKiBEZWZpbmVkIGluIGF1dG8tZ2VuZXJhdGVkIGZpbGUgaTM4Ni1hdng1MTItbGludXguYy4gICovCisrdm9pZCBpbml0X3JlZ2lzdGVyc19pMzg2X2F2eDUxMl9saW51eCAodm9pZCk7CisrZXh0ZXJuIGNvbnN0IHN0cnVjdCB0YXJnZXRfZGVzYyAqdGRlc2NfaTM4Nl9hdng1MTJfbGludXg7CisrCisrLyogRGVmaW5lZCBpbiBhdXRvLWdlbmVyYXRlZCBmaWxlIGkzODYtbXB4LWxpbnV4LmMuICAqLworK3ZvaWQgaW5pdF9yZWdpc3RlcnNfaTM4Nl9tcHhfbGludXggKHZvaWQpOworK2V4dGVybiBjb25zdCBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKnRkZXNjX2kzODZfbXB4X2xpbnV4OworKyNlbmRpZgorZGlmZiAtLWdpdCBhL2dkYi9nZGJzZXJ2ZXIvdGFyZ2V0LmggYi9nZGIvZ2Ric2VydmVyL3RhcmdldC5oCitpbmRleCA1YWYyMDUxLi40YzE0YzIwIDEwMDY0NAorLS0tIGEvZ2RiL2dkYnNlcnZlci90YXJnZXQuaAorKysrIGIvZ2RiL2dkYnNlcnZlci90YXJnZXQuaAorQEAgLTQ3MSw2ICs0NzEsOSBAQCBzdHJ1Y3QgdGFyZ2V0X29wcworICAgLyogUmV0dXJuIDEgaWYgdGhlIHRhcmdldCBzdXBwb3J0cyBjYXRjaCBzeXNjYWxsLCAwIChvciBsZWF2ZSB0aGUKKyAgICAgIGNhbGxiYWNrIE5VTEwpIG90aGVyd2lzZS4gICovCisgICBpbnQgKCpzdXBwb3J0c19jYXRjaF9zeXNjYWxsKSAodm9pZCk7CisrCisrICAvKiBSZXR1cm4gdGRlc2MgaW5kZXggZm9yIElQQS4gICovCisrICBpbnQgKCpnZXRfaXBhX3RkZXNjX2lkeCkgKHZvaWQpOworIH07CisKKyBleHRlcm4gc3RydWN0IHRhcmdldF9vcHMgKnRoZV90YXJnZXQ7CitAQCAtNTUwLDYgKzU1MywxMCBAQCBpbnQga2lsbF9pbmZlcmlvciAoaW50KTsKKyAgICh0aGVfdGFyZ2V0LT5zdXBwb3J0c19jYXRjaF9zeXNjYWxsID8JCQlcCisgICAgKCp0aGVfdGFyZ2V0LT5zdXBwb3J0c19jYXRjaF9zeXNjYWxsKSAoKSA6IDApCisKKysjZGVmaW5lIHRhcmdldF9nZXRfaXBhX3RkZXNjX2lkeCgpCQkJXAorKyAgKHRoZV90YXJnZXQtPmdldF9pcGFfdGRlc2NfaWR4CQkJXAorKyAgID8gKCp0aGVfdGFyZ2V0LT5nZXRfaXBhX3RkZXNjX2lkeCkgKCkgOiAwKQorKworICNkZWZpbmUgdGFyZ2V0X3N1cHBvcnRzX3RyYWNlcG9pbnRzKCkJCQlcCisgICAodGhlX3RhcmdldC0+c3VwcG9ydHNfdHJhY2Vwb2ludHMJCQlcCisgICAgPyAoKnRoZV90YXJnZXQtPnN1cHBvcnRzX3RyYWNlcG9pbnRzKSAoKSA6IDApCitkaWZmIC0tZ2l0IGEvZ2RiL2dkYnNlcnZlci90cmFjZXBvaW50LmMgYi9nZGIvZ2Ric2VydmVyL3RyYWNlcG9pbnQuYworaW5kZXggMDY3MTk5OS4uY2M4NjY3NyAxMDA2NDQKKy0tLSBhL2dkYi9nZGJzZXJ2ZXIvdHJhY2Vwb2ludC5jCisrKysgYi9nZGIvZ2Ric2VydmVyL3RyYWNlcG9pbnQuYworQEAgLTEzNCw2ICsxMzQsNyBAQCB0cmFjZV92ZGVidWcgKGNvbnN0IGNoYXIgKmZtdCwgLi4uKQorICMgZGVmaW5lIHVzdF9sb2FkZWQgSVBBX1NZTV9FWFBPUlRFRF9OQU1FICh1c3RfbG9hZGVkKQorICMgZGVmaW5lIGhlbHBlcl90aHJlYWRfaWQgSVBBX1NZTV9FWFBPUlRFRF9OQU1FIChoZWxwZXJfdGhyZWFkX2lkKQorICMgZGVmaW5lIGNtZF9idWYgSVBBX1NZTV9FWFBPUlRFRF9OQU1FIChjbWRfYnVmKQorKyMgZGVmaW5lIGlwYV90ZGVzY19pZHggSVBBX1NZTV9FWFBPUlRFRF9OQU1FIChpcGFfdGRlc2NfaWR4KQorICNlbmRpZgorCisgI2lmbmRlZiBJTl9QUk9DRVNTX0FHRU5UCitAQCAtMTcxLDYgKzE3Miw3IEBAIHN0cnVjdCBpcGFfc3ltX2FkZHJlc3NlcworICAgQ09SRV9BRERSIGFkZHJfZ2V0X3RyYWNlX3N0YXRlX3ZhcmlhYmxlX3ZhbHVlOworICAgQ09SRV9BRERSIGFkZHJfc2V0X3RyYWNlX3N0YXRlX3ZhcmlhYmxlX3ZhbHVlOworICAgQ09SRV9BRERSIGFkZHJfdXN0X2xvYWRlZDsKKysgIENPUkVfQUREUiBhZGRyX2lwYV90ZGVzY19pZHg7CisgfTsKKworIHN0YXRpYyBzdHJ1Y3QKK0BAIC0yMDcsNiArMjA5LDcgQEAgc3RhdGljIHN0cnVjdAorICAgSVBBX1NZTShnZXRfdHJhY2Vfc3RhdGVfdmFyaWFibGVfdmFsdWUpLAorICAgSVBBX1NZTShzZXRfdHJhY2Vfc3RhdGVfdmFyaWFibGVfdmFsdWUpLAorICAgSVBBX1NZTSh1c3RfbG9hZGVkKSwKKysgIElQQV9TWU0oaXBhX3RkZXNjX2lkeCksCisgfTsKKworIHN0YXRpYyBzdHJ1Y3QgaXBhX3N5bV9hZGRyZXNzZXMgaXBhX3N5bV9hZGRyczsKK0BAIC0zMjMxLDYgKzMyMzQsMTEgQEAgY21kX3F0c3RhcnQgKGNoYXIgKnBhY2tldCkKKworICAgKnBhY2tldCA9ICdcMCc7CisKKysgIC8qIFRlbGwgSVBBIGFib3V0IHRoZSBjb3JyZWN0IHRkZXNjLiAgKi8KKysgIGlmICh3cml0ZV9pbmZlcmlvcl9pbnRlZ2VyIChpcGFfc3ltX2FkZHJzLmFkZHJfaXBhX3RkZXNjX2lkeCwKKysJCQkgICAgICB0YXJnZXRfZ2V0X2lwYV90ZGVzY19pZHggKCkpKQorKyAgICBlcnJvciAoIkVycm9yIHNldHRpbmcgaXBhX3RkZXNjX2lkeCB2YXJpYWJsZSBpbiBsaWIiKTsKKysKKyAgIC8qIFN0YXJ0IG91dCBlbXB0eS4gICovCisgICBpZiAoYWdlbnRfbG9hZGVkX3AgKCkpCisgICAgIHdyaXRlX2luZmVyaW9yX2RhdGFfcHRyIChpcGFfc3ltX2FkZHJzLmFkZHJfdHJhY2Vwb2ludHMsIDApOworQEAgLTQ3MTQsMTkgKzQ3MjIsMjAgQEAgY29sbGVjdF9kYXRhX2F0X3N0ZXAgKHN0cnVjdCB0cmFjZXBvaW50X2hpdF9jdHggKmN0eCwKKyAjZW5kaWYKKworICNpZmRlZiBJTl9QUk9DRVNTX0FHRU5UCistLyogVGhlIHRhcmdldCBkZXNjcmlwdGlvbiB1c2VkIGJ5IHRoZSBJUEEuICBHaXZlbiB0aGF0IHRoZSBJUEEgbGlicmFyeQorLSAgIGlzIGJ1aWx0IGZvciBhIHNwZWNpZmljIGFyY2hpdGVjdHVyZSB0aGF0IGlzIGxvYWRlZCBpbnRvIHRoZQorLSAgIGluZmVyaW9yLCB0aGVyZSBvbmx5IG5lZWRzIHRvIGJlIG9uZSBzdWNoIGRlc2NyaXB0aW9uIHBlcgorLSAgIGJ1aWxkLiAgKi8KKy1jb25zdCBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKmlwYV90ZGVzYzsKKysvKiBUaGUgdGFyZ2V0IGRlc2NyaXB0aW9uIGluZGV4IGZvciBJUEEuICBQYXNzZWQgZnJvbSBnZGJzZXJ2ZXIsIHVzZWQKKysgICB0byBzZWxlY3QgaXBhX3RkZXNjLiAgKi8KKytFWFRFUk5fQ19QVVNICisrSVBfQUdFTlRfRVhQT1JUX1ZBUiBpbnQgaXBhX3RkZXNjX2lkeDsKKytFWFRFUk5fQ19QT1AKKyAjZW5kaWYKKworIHN0YXRpYyBzdHJ1Y3QgcmVnY2FjaGUgKgorIGdldF9jb250ZXh0X3JlZ2NhY2hlIChzdHJ1Y3QgdHJhY2Vwb2ludF9oaXRfY3R4ICpjdHgpCisgeworICAgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSA9IE5VTEw7CistCisgI2lmZGVmIElOX1BST0NFU1NfQUdFTlQKKysgIGNvbnN0IHN0cnVjdCB0YXJnZXRfZGVzYyAqaXBhX3RkZXNjID0gZ2V0X2lwYV90ZGVzYyAoaXBhX3RkZXNjX2lkeCk7CisrCisgICBpZiAoY3R4LT50eXBlID09IGZhc3RfdHJhY2Vwb2ludCkKKyAgICAgeworICAgICAgIHN0cnVjdCBmYXN0X3RyYWNlcG9pbnRfY3R4ICpmY3R4ID0gKHN0cnVjdCBmYXN0X3RyYWNlcG9pbnRfY3R4ICopIGN0eDsKK0BAIC01Nzk5LDExICs1ODA4LDEzIEBAIElQX0FHRU5UX0VYUE9SVF9GVU5DIHZvaWQKKyBnZGJfY29sbGVjdCAoc3RydWN0IHRyYWNlcG9pbnQgKnRwb2ludCwgdW5zaWduZWQgY2hhciAqcmVncykKKyB7CisgICBzdHJ1Y3QgZmFzdF90cmFjZXBvaW50X2N0eCBjdHg7CisrICBjb25zdCBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKmlwYV90ZGVzYzsKKworICAgLyogRG9uJ3QgZG8gYW55dGhpbmcgdW50aWwgdGhlIHRyYWNlIHJ1biBpcyBjb21wbGV0ZWx5IHNldCB1cC4gICovCisgICBpZiAoIXRyYWNpbmcpCisgICAgIHJldHVybjsKKworKyAgaXBhX3RkZXNjID0gZ2V0X2lwYV90ZGVzYyAoaXBhX3RkZXNjX2lkeCk7CisgICBjdHguYmFzZS50eXBlID0gZmFzdF90cmFjZXBvaW50OworICAgY3R4LnJlZ3MgPSByZWdzOworICAgY3R4LnJlZ2NhY2hlX2luaXR0ZWQgPSAwOworQEAgLTY2NjAsNiArNjY3MSw3IEBAIGdkYl9wcm9iZSAoY29uc3Qgc3RydWN0IG1hcmtlciAqbWRhdGEsIHZvaWQgKnByb2JlX3ByaXZhdGUsCisgeworICAgc3RydWN0IHRyYWNlcG9pbnQgKnRwb2ludDsKKyAgIHN0cnVjdCBzdGF0aWNfdHJhY2Vwb2ludF9jdHggY3R4OworKyAgY29uc3Qgc3RydWN0IHRhcmdldF9kZXNjICppcGFfdGRlc2M7CisKKyAgIC8qIERvbid0IGRvIGFueXRoaW5nIHVudGlsIHRoZSB0cmFjZSBydW4gaXMgY29tcGxldGVseSBzZXQgdXAuICAqLworICAgaWYgKCF0cmFjaW5nKQorQEAgLTY2NjgsNiArNjY4MCw3IEBAIGdkYl9wcm9iZSAoY29uc3Qgc3RydWN0IG1hcmtlciAqbWRhdGEsIHZvaWQgKnByb2JlX3ByaXZhdGUsCisgICAgICAgcmV0dXJuOworICAgICB9CisKKysgIGlwYV90ZGVzYyA9IGdldF9pcGFfdGRlc2MgKGlwYV90ZGVzY19pZHgpOworICAgY3R4LmJhc2UudHlwZSA9IHN0YXRpY190cmFjZXBvaW50OworICAgY3R4LnJlZ2NhY2hlX2luaXR0ZWQgPSAwOworICAgY3R4LnJlZ3MgPSByZWdzOworZGlmZiAtLWdpdCBhL2dkYi9nZGJzZXJ2ZXIvdHJhY2Vwb2ludC5oIGIvZ2RiL2dkYnNlcnZlci90cmFjZXBvaW50LmgKK2luZGV4IGNhYjg5Y2YuLmUzMGY0ZjcgMTAwNjQ0CistLS0gYS9nZGIvZ2Ric2VydmVyL3RyYWNlcG9pbnQuaAorKysrIGIvZ2RiL2dkYnNlcnZlci90cmFjZXBvaW50LmgKK0BAIC0xMjQsNiArMTI0LDcgQEAgaW50IGhhbmRsZV90cmFjZXBvaW50X2JrcHRzIChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRpbmZvLCBDT1JFX0FERFIgc3RvcF9wYyk7CisKKyAjaWZkZWYgSU5fUFJPQ0VTU19BR0VOVAorIHZvaWQgaW5pdGlhbGl6ZV9sb3dfdHJhY2Vwb2ludCAodm9pZCk7CisrY29uc3Qgc3RydWN0IHRhcmdldF9kZXNjICpnZXRfaXBhX3RkZXNjIChpbnQgaWR4KTsKKyB2b2lkIHN1cHBseV9mYXN0X3RyYWNlcG9pbnRfcmVnaXN0ZXJzIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAorIAkJCQkgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcmVncyk7Cisgdm9pZCBzdXBwbHlfc3RhdGljX3RyYWNlcG9pbnRfcmVnaXN0ZXJzIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAorQEAgLTEzMSw5ICsxMzIsNiBAQCB2b2lkIHN1cHBseV9zdGF0aWNfdHJhY2Vwb2ludF9yZWdpc3RlcnMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCisgCQkJCQkgQ09SRV9BRERSIHBjKTsKKyB2b2lkIHNldF90cmFtcG9saW5lX2J1ZmZlcl9zcGFjZSAoQ09SRV9BRERSIGJlZ2luLCBDT1JFX0FERFIgZW5kLAorIAkJCQkgIGNoYXIgKmVycm1zZyk7CistCistZXh0ZXJuIGNvbnN0IHN0cnVjdCB0YXJnZXRfZGVzYyAqaXBhX3RkZXNjOworLQorICNlbHNlCisgdm9pZCBzdG9wX3RyYWNpbmcgKHZvaWQpOworCitkaWZmIC0tZ2l0IGEvZ2RiL2kzODYtbGludXgtdGRlcC5jIGIvZ2RiL2kzODYtbGludXgtdGRlcC5jCitpbmRleCBhZjM5ZTc4Li5kZjQ3ZWZkIDEwMDY0NAorLS0tIGEvZ2RiL2kzODYtbGludXgtdGRlcC5jCisrKysgYi9nZGIvaTM4Ni1saW51eC10ZGVwLmMKK0BAIC00Nyw2ICs0Nyw3IEBACisgI2luY2x1ZGUgImZlYXR1cmVzL2kzODYvaTM4Ni1saW51eC5jIgorICNpbmNsdWRlICJmZWF0dXJlcy9pMzg2L2kzODYtbW14LWxpbnV4LmMiCisgI2luY2x1ZGUgImZlYXR1cmVzL2kzODYvaTM4Ni1tcHgtbGludXguYyIKKysjaW5jbHVkZSAiZmVhdHVyZXMvaTM4Ni9pMzg2LWF2eC1tcHgtbGludXguYyIKKyAjaW5jbHVkZSAiZmVhdHVyZXMvaTM4Ni9pMzg2LWF2eC1saW51eC5jIgorICNpbmNsdWRlICJmZWF0dXJlcy9pMzg2L2kzODYtYXZ4NTEyLWxpbnV4LmMiCisKK0BAIC02MzAsNiArNjMxLDggQEAgaTM4Nl9saW51eF9jb3JlX3JlYWRfZGVzY3JpcHRpb24gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorICAgICAgIHJldHVybiB0ZGVzY19pMzg2X2F2eDUxMl9saW51eDsKKyAgICAgY2FzZSBYODZfWFNUQVRFX01QWF9NQVNLOgorICAgICAgIHJldHVybiB0ZGVzY19pMzg2X21weF9saW51eDsKKysgICAgY2FzZSBYODZfWFNUQVRFX0FWWF9NUFhfTUFTSzoKKysgICAgICByZXR1cm4gdGRlc2NfaTM4Nl9hdnhfbXB4X2xpbnV4OworICAgICBjYXNlIFg4Nl9YU1RBVEVfQVZYX01BU0s6CisgICAgICAgcmV0dXJuIHRkZXNjX2kzODZfYXZ4X2xpbnV4OworICAgICBjYXNlIFg4Nl9YU1RBVEVfU1NFX01BU0s6CitAQCAtMTAxOCw1ICsxMDIxLDYgQEAgX2luaXRpYWxpemVfaTM4Nl9saW51eF90ZGVwICh2b2lkKQorICAgaW5pdGlhbGl6ZV90ZGVzY19pMzg2X21teF9saW51eCAoKTsKKyAgIGluaXRpYWxpemVfdGRlc2NfaTM4Nl9hdnhfbGludXggKCk7CisgICBpbml0aWFsaXplX3RkZXNjX2kzODZfbXB4X2xpbnV4ICgpOworKyAgaW5pdGlhbGl6ZV90ZGVzY19pMzg2X2F2eF9tcHhfbGludXggKCk7CisgICBpbml0aWFsaXplX3RkZXNjX2kzODZfYXZ4NTEyX2xpbnV4ICgpOworIH0KK2RpZmYgLS1naXQgYS9nZGIvaTM4Ni1saW51eC10ZGVwLmggYi9nZGIvaTM4Ni1saW51eC10ZGVwLmgKK2luZGV4IGVjYzllMzEuLjBjYjBjNGQgMTAwNjQ0CistLS0gYS9nZGIvaTM4Ni1saW51eC10ZGVwLmgKKysrKyBiL2dkYi9pMzg2LWxpbnV4LXRkZXAuaAorQEAgLTQyLDYgKzQyLDcgQEAgZXh0ZXJuIHN0cnVjdCB0YXJnZXRfZGVzYyAqdGRlc2NfaTM4Nl9saW51eDsKKyBleHRlcm4gc3RydWN0IHRhcmdldF9kZXNjICp0ZGVzY19pMzg2X21teF9saW51eDsKKyBleHRlcm4gc3RydWN0IHRhcmdldF9kZXNjICp0ZGVzY19pMzg2X2F2eF9saW51eDsKKyBleHRlcm4gc3RydWN0IHRhcmdldF9kZXNjICp0ZGVzY19pMzg2X21weF9saW51eDsKKytleHRlcm4gc3RydWN0IHRhcmdldF9kZXNjICp0ZGVzY19pMzg2X2F2eF9tcHhfbGludXg7CisgZXh0ZXJuIHN0cnVjdCB0YXJnZXRfZGVzYyAqdGRlc2NfaTM4Nl9hdng1MTJfbGludXg7CisKKyAvKiBGb3JtYXQgb2YgWFNBVkUgZXh0ZW5kZWQgc3RhdGUgaXM6CitkaWZmIC0tZ2l0IGEvZ2RiL2kzODYtdGRlcC5jIGIvZ2RiL2kzODYtdGRlcC5jCitpbmRleCBiNzA2NDYzLi4xZWMwYTA4IDEwMDY0NAorLS0tIGEvZ2RiL2kzODYtdGRlcC5jCisrKysgYi9nZGIvaTM4Ni10ZGVwLmMKK0BAIC01Myw2ICs1Myw3IEBACisgI2luY2x1ZGUgImZlYXR1cmVzL2kzODYvaTM4Ni5jIgorICNpbmNsdWRlICJmZWF0dXJlcy9pMzg2L2kzODYtYXZ4LmMiCisgI2luY2x1ZGUgImZlYXR1cmVzL2kzODYvaTM4Ni1tcHguYyIKKysjaW5jbHVkZSAiZmVhdHVyZXMvaTM4Ni9pMzg2LWF2eC1tcHguYyIKKyAjaW5jbHVkZSAiZmVhdHVyZXMvaTM4Ni9pMzg2LWF2eDUxMi5jIgorICNpbmNsdWRlICJmZWF0dXJlcy9pMzg2L2kzODYtbW14LmMiCisKK0BAIC04NjE4LDYgKzg2MTksOCBAQCBpMzg2X3RhcmdldF9kZXNjcmlwdGlvbiAodWludDY0X3QgeGNyMCkKKyAgICAgY2FzZSBYODZfWFNUQVRFX01QWF9BVlg1MTJfTUFTSzoKKyAgICAgY2FzZSBYODZfWFNUQVRFX0FWWDUxMl9NQVNLOgorICAgICAgIHJldHVybiB0ZGVzY19pMzg2X2F2eDUxMjsKKysgICAgY2FzZSBYODZfWFNUQVRFX0FWWF9NUFhfTUFTSzoKKysgICAgICByZXR1cm4gdGRlc2NfaTM4Nl9hdnhfbXB4OworICAgICBjYXNlIFg4Nl9YU1RBVEVfTVBYX01BU0s6CisgICAgICAgcmV0dXJuIHRkZXNjX2kzODZfbXB4OworICAgICBjYXNlIFg4Nl9YU1RBVEVfQVZYX01BU0s6CitAQCAtODk1Nyw2ICs4OTYwLDcgQEAgU2hvdyBJbnRlbCBNZW1vcnkgUHJvdGVjdGlvbiBFeHRlbnNpb25zIHNwZWNpZmljIHZhcmlhYmxlcy4iKSwKKyAgIGluaXRpYWxpemVfdGRlc2NfaTM4Nl9tbXggKCk7CisgICBpbml0aWFsaXplX3RkZXNjX2kzODZfYXZ4ICgpOworICAgaW5pdGlhbGl6ZV90ZGVzY19pMzg2X21weCAoKTsKKysgIGluaXRpYWxpemVfdGRlc2NfaTM4Nl9hdnhfbXB4ICgpOworICAgaW5pdGlhbGl6ZV90ZGVzY19pMzg2X2F2eDUxMiAoKTsKKworICAgLyogVGVsbCByZW1vdGUgc3R1YiB0aGF0IHdlIHN1cHBvcnQgWE1MIHRhcmdldCBkZXNjcmlwdGlvbi4gICovCitkaWZmIC0tZ2l0IGEvZ2RiL3JlZ2Zvcm1hdHMvaTM4Ni9hbWQ2NC1hdngtbXB4LWxpbnV4LmRhdCBiL2dkYi9yZWdmb3JtYXRzL2kzODYvYW1kNjQtYXZ4LW1weC1saW51eC5kYXQKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi42ZDQ1MzI0CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvcmVnZm9ybWF0cy9pMzg2L2FtZDY0LWF2eC1tcHgtbGludXguZGF0CitAQCAtMCwwICsxLDg1IEBACisrIyBUSElTIEZJTEUgSVMgR0VORVJBVEVELiAgLSotIGJ1ZmZlci1yZWFkLW9ubHk6IHQgLSotIHZpIDpzZXQgcm86CisrIyBHZW5lcmF0ZWQgZnJvbTogaTM4Ni9hbWQ2NC1hdngtbXB4LWxpbnV4LnhtbAorK25hbWU6YW1kNjRfYXZ4X21weF9saW51eAorK3htbHRhcmdldDphbWQ2NC1hdngtbXB4LWxpbnV4LnhtbAorK2V4cGVkaXRlOnJicCxyc3AscmlwCisrNjQ6cmF4CisrNjQ6cmJ4CisrNjQ6cmN4CisrNjQ6cmR4CisrNjQ6cnNpCisrNjQ6cmRpCisrNjQ6cmJwCisrNjQ6cnNwCisrNjQ6cjgKKys2NDpyOQorKzY0OnIxMAorKzY0OnIxMQorKzY0OnIxMgorKzY0OnIxMworKzY0OnIxNAorKzY0OnIxNQorKzY0OnJpcAorKzMyOmVmbGFncworKzMyOmNzCisrMzI6c3MKKyszMjpkcworKzMyOmVzCisrMzI6ZnMKKyszMjpncworKzgwOnN0MAorKzgwOnN0MQorKzgwOnN0MgorKzgwOnN0MworKzgwOnN0NAorKzgwOnN0NQorKzgwOnN0NgorKzgwOnN0NworKzMyOmZjdHJsCisrMzI6ZnN0YXQKKyszMjpmdGFnCisrMzI6ZmlzZWcKKyszMjpmaW9mZgorKzMyOmZvc2VnCisrMzI6Zm9vZmYKKyszMjpmb3AKKysxMjg6eG1tMAorKzEyODp4bW0xCisrMTI4OnhtbTIKKysxMjg6eG1tMworKzEyODp4bW00CisrMTI4OnhtbTUKKysxMjg6eG1tNgorKzEyODp4bW03CisrMTI4OnhtbTgKKysxMjg6eG1tOQorKzEyODp4bW0xMAorKzEyODp4bW0xMQorKzEyODp4bW0xMgorKzEyODp4bW0xMworKzEyODp4bW0xNAorKzEyODp4bW0xNQorKzMyOm14Y3NyCisrNjQ6b3JpZ19yYXgKKysxMjg6eW1tMGgKKysxMjg6eW1tMWgKKysxMjg6eW1tMmgKKysxMjg6eW1tM2gKKysxMjg6eW1tNGgKKysxMjg6eW1tNWgKKysxMjg6eW1tNmgKKysxMjg6eW1tN2gKKysxMjg6eW1tOGgKKysxMjg6eW1tOWgKKysxMjg6eW1tMTBoCisrMTI4OnltbTExaAorKzEyODp5bW0xMmgKKysxMjg6eW1tMTNoCisrMTI4OnltbTE0aAorKzEyODp5bW0xNWgKKysxMjg6Ym5kMHJhdworKzEyODpibmQxcmF3CisrMTI4OmJuZDJyYXcKKysxMjg6Ym5kM3JhdworKzY0OmJuZGNmZ3UKKys2NDpibmRzdGF0dXMKK2RpZmYgLS1naXQgYS9nZGIvcmVnZm9ybWF0cy9pMzg2L2FtZDY0LWF2eC1tcHguZGF0IGIvZ2RiL3JlZ2Zvcm1hdHMvaTM4Ni9hbWQ2NC1hdngtbXB4LmRhdAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmQ5ODU2NDEKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi9yZWdmb3JtYXRzL2kzODYvYW1kNjQtYXZ4LW1weC5kYXQKK0BAIC0wLDAgKzEsODQgQEAKKysjIFRISVMgRklMRSBJUyBHRU5FUkFURUQuICAtKi0gYnVmZmVyLXJlYWQtb25seTogdCAtKi0gdmkgOnNldCBybzoKKysjIEdlbmVyYXRlZCBmcm9tOiBpMzg2L2FtZDY0LWF2eC1tcHgueG1sCisrbmFtZTphbWQ2NF9hdnhfbXB4CisreG1sdGFyZ2V0OmFtZDY0LWF2eC1tcHgueG1sCisrZXhwZWRpdGU6cmJwLHJzcCxyaXAKKys2NDpyYXgKKys2NDpyYngKKys2NDpyY3gKKys2NDpyZHgKKys2NDpyc2kKKys2NDpyZGkKKys2NDpyYnAKKys2NDpyc3AKKys2NDpyOAorKzY0OnI5CisrNjQ6cjEwCisrNjQ6cjExCisrNjQ6cjEyCisrNjQ6cjEzCisrNjQ6cjE0CisrNjQ6cjE1CisrNjQ6cmlwCisrMzI6ZWZsYWdzCisrMzI6Y3MKKyszMjpzcworKzMyOmRzCisrMzI6ZXMKKyszMjpmcworKzMyOmdzCisrODA6c3QwCisrODA6c3QxCisrODA6c3QyCisrODA6c3QzCisrODA6c3Q0CisrODA6c3Q1CisrODA6c3Q2CisrODA6c3Q3CisrMzI6ZmN0cmwKKyszMjpmc3RhdAorKzMyOmZ0YWcKKyszMjpmaXNlZworKzMyOmZpb2ZmCisrMzI6Zm9zZWcKKyszMjpmb29mZgorKzMyOmZvcAorKzEyODp4bW0wCisrMTI4OnhtbTEKKysxMjg6eG1tMgorKzEyODp4bW0zCisrMTI4OnhtbTQKKysxMjg6eG1tNQorKzEyODp4bW02CisrMTI4OnhtbTcKKysxMjg6eG1tOAorKzEyODp4bW05CisrMTI4OnhtbTEwCisrMTI4OnhtbTExCisrMTI4OnhtbTEyCisrMTI4OnhtbTEzCisrMTI4OnhtbTE0CisrMTI4OnhtbTE1CisrMzI6bXhjc3IKKysxMjg6eW1tMGgKKysxMjg6eW1tMWgKKysxMjg6eW1tMmgKKysxMjg6eW1tM2gKKysxMjg6eW1tNGgKKysxMjg6eW1tNWgKKysxMjg6eW1tNmgKKysxMjg6eW1tN2gKKysxMjg6eW1tOGgKKysxMjg6eW1tOWgKKysxMjg6eW1tMTBoCisrMTI4OnltbTExaAorKzEyODp5bW0xMmgKKysxMjg6eW1tMTNoCisrMTI4OnltbTE0aAorKzEyODp5bW0xNWgKKysxMjg6Ym5kMHJhdworKzEyODpibmQxcmF3CisrMTI4OmJuZDJyYXcKKysxMjg6Ym5kM3JhdworKzY0OmJuZGNmZ3UKKys2NDpibmRzdGF0dXMKK2RpZmYgLS1naXQgYS9nZGIvcmVnZm9ybWF0cy9pMzg2L2FtZDY0LW1weC1saW51eC5kYXQgYi9nZGIvcmVnZm9ybWF0cy9pMzg2L2FtZDY0LW1weC1saW51eC5kYXQKK2luZGV4IDdhMDVjZmUuLjUyM2FlMDEgMTAwNjQ0CistLS0gYS9nZGIvcmVnZm9ybWF0cy9pMzg2L2FtZDY0LW1weC1saW51eC5kYXQKKysrKyBiL2dkYi9yZWdmb3JtYXRzL2kzODYvYW1kNjQtbXB4LWxpbnV4LmRhdAorQEAgLTYxLDIyICs2MSw2IEBAIGV4cGVkaXRlOnJicCxyc3AscmlwCisgMTI4OnhtbTE1CisgMzI6bXhjc3IKKyA2NDpvcmlnX3JheAorLTEyODp5bW0waAorLTEyODp5bW0xaAorLTEyODp5bW0yaAorLTEyODp5bW0zaAorLTEyODp5bW00aAorLTEyODp5bW01aAorLTEyODp5bW02aAorLTEyODp5bW03aAorLTEyODp5bW04aAorLTEyODp5bW05aAorLTEyODp5bW0xMGgKKy0xMjg6eW1tMTFoCistMTI4OnltbTEyaAorLTEyODp5bW0xM2gKKy0xMjg6eW1tMTRoCistMTI4OnltbTE1aAorIDEyODpibmQwcmF3CisgMTI4OmJuZDFyYXcKKyAxMjg6Ym5kMnJhdworZGlmZiAtLWdpdCBhL2dkYi9yZWdmb3JtYXRzL2kzODYvYW1kNjQtbXB4LmRhdCBiL2dkYi9yZWdmb3JtYXRzL2kzODYvYW1kNjQtbXB4LmRhdAoraW5kZXggMWI3NWY0ZC4uNDNiODc3NiAxMDA2NDQKKy0tLSBhL2dkYi9yZWdmb3JtYXRzL2kzODYvYW1kNjQtbXB4LmRhdAorKysrIGIvZ2RiL3JlZ2Zvcm1hdHMvaTM4Ni9hbWQ2NC1tcHguZGF0CitAQCAtNjAsMjIgKzYwLDYgQEAgZXhwZWRpdGU6cmJwLHJzcCxyaXAKKyAxMjg6eG1tMTQKKyAxMjg6eG1tMTUKKyAzMjpteGNzcgorLTEyODp5bW0waAorLTEyODp5bW0xaAorLTEyODp5bW0yaAorLTEyODp5bW0zaAorLTEyODp5bW00aAorLTEyODp5bW01aAorLTEyODp5bW02aAorLTEyODp5bW03aAorLTEyODp5bW04aAorLTEyODp5bW05aAorLTEyODp5bW0xMGgKKy0xMjg6eW1tMTFoCistMTI4OnltbTEyaAorLTEyODp5bW0xM2gKKy0xMjg6eW1tMTRoCistMTI4OnltbTE1aAorIDEyODpibmQwcmF3CisgMTI4OmJuZDFyYXcKKyAxMjg6Ym5kMnJhdworZGlmZiAtLWdpdCBhL2dkYi9yZWdmb3JtYXRzL2kzODYvaTM4Ni1hdngtbXB4LWxpbnV4LmRhdCBiL2dkYi9yZWdmb3JtYXRzL2kzODYvaTM4Ni1hdngtbXB4LWxpbnV4LmRhdAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjgzMWM0NzYKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi9yZWdmb3JtYXRzL2kzODYvaTM4Ni1hdngtbXB4LWxpbnV4LmRhdAorQEAgLTAsMCArMSw2MSBAQAorKyMgVEhJUyBGSUxFIElTIEdFTkVSQVRFRC4gIC0qLSBidWZmZXItcmVhZC1vbmx5OiB0IC0qLSB2aSA6c2V0IHJvOgorKyMgR2VuZXJhdGVkIGZyb206IGkzODYvaTM4Ni1hdngtbXB4LWxpbnV4LnhtbAorK25hbWU6aTM4Nl9hdnhfbXB4X2xpbnV4CisreG1sdGFyZ2V0OmkzODYtYXZ4LW1weC1saW51eC54bWwKKytleHBlZGl0ZTplYnAsZXNwLGVpcAorKzMyOmVheAorKzMyOmVjeAorKzMyOmVkeAorKzMyOmVieAorKzMyOmVzcAorKzMyOmVicAorKzMyOmVzaQorKzMyOmVkaQorKzMyOmVpcAorKzMyOmVmbGFncworKzMyOmNzCisrMzI6c3MKKyszMjpkcworKzMyOmVzCisrMzI6ZnMKKyszMjpncworKzgwOnN0MAorKzgwOnN0MQorKzgwOnN0MgorKzgwOnN0MworKzgwOnN0NAorKzgwOnN0NQorKzgwOnN0NgorKzgwOnN0NworKzMyOmZjdHJsCisrMzI6ZnN0YXQKKyszMjpmdGFnCisrMzI6ZmlzZWcKKyszMjpmaW9mZgorKzMyOmZvc2VnCisrMzI6Zm9vZmYKKyszMjpmb3AKKysxMjg6eG1tMAorKzEyODp4bW0xCisrMTI4OnhtbTIKKysxMjg6eG1tMworKzEyODp4bW00CisrMTI4OnhtbTUKKysxMjg6eG1tNgorKzEyODp4bW03CisrMzI6bXhjc3IKKyszMjpvcmlnX2VheAorKzEyODp5bW0waAorKzEyODp5bW0xaAorKzEyODp5bW0yaAorKzEyODp5bW0zaAorKzEyODp5bW00aAorKzEyODp5bW01aAorKzEyODp5bW02aAorKzEyODp5bW03aAorKzEyODpibmQwcmF3CisrMTI4OmJuZDFyYXcKKysxMjg6Ym5kMnJhdworKzEyODpibmQzcmF3CisrNjQ6Ym5kY2ZndQorKzY0OmJuZHN0YXR1cworZGlmZiAtLWdpdCBhL2dkYi9yZWdmb3JtYXRzL2kzODYvaTM4Ni1hdngtbXB4LmRhdCBiL2dkYi9yZWdmb3JtYXRzL2kzODYvaTM4Ni1hdngtbXB4LmRhdAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjhjYWVmNzUKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi9yZWdmb3JtYXRzL2kzODYvaTM4Ni1hdngtbXB4LmRhdAorQEAgLTAsMCArMSw2MCBAQAorKyMgVEhJUyBGSUxFIElTIEdFTkVSQVRFRC4gIC0qLSBidWZmZXItcmVhZC1vbmx5OiB0IC0qLSB2aSA6c2V0IHJvOgorKyMgR2VuZXJhdGVkIGZyb206IGkzODYvaTM4Ni1hdngtbXB4LnhtbAorK25hbWU6aTM4Nl9hdnhfbXB4CisreG1sdGFyZ2V0OmkzODYtYXZ4LW1weC54bWwKKytleHBlZGl0ZTplYnAsZXNwLGVpcAorKzMyOmVheAorKzMyOmVjeAorKzMyOmVkeAorKzMyOmVieAorKzMyOmVzcAorKzMyOmVicAorKzMyOmVzaQorKzMyOmVkaQorKzMyOmVpcAorKzMyOmVmbGFncworKzMyOmNzCisrMzI6c3MKKyszMjpkcworKzMyOmVzCisrMzI6ZnMKKyszMjpncworKzgwOnN0MAorKzgwOnN0MQorKzgwOnN0MgorKzgwOnN0MworKzgwOnN0NAorKzgwOnN0NQorKzgwOnN0NgorKzgwOnN0NworKzMyOmZjdHJsCisrMzI6ZnN0YXQKKyszMjpmdGFnCisrMzI6ZmlzZWcKKyszMjpmaW9mZgorKzMyOmZvc2VnCisrMzI6Zm9vZmYKKyszMjpmb3AKKysxMjg6eG1tMAorKzEyODp4bW0xCisrMTI4OnhtbTIKKysxMjg6eG1tMworKzEyODp4bW00CisrMTI4OnhtbTUKKysxMjg6eG1tNgorKzEyODp4bW03CisrMzI6bXhjc3IKKysxMjg6eW1tMGgKKysxMjg6eW1tMWgKKysxMjg6eW1tMmgKKysxMjg6eW1tM2gKKysxMjg6eW1tNGgKKysxMjg6eW1tNWgKKysxMjg6eW1tNmgKKysxMjg6eW1tN2gKKysxMjg6Ym5kMHJhdworKzEyODpibmQxcmF3CisrMTI4OmJuZDJyYXcKKysxMjg6Ym5kM3JhdworKzY0OmJuZGNmZ3UKKys2NDpibmRzdGF0dXMKK2RpZmYgLS1naXQgYS9nZGIvcmVnZm9ybWF0cy9pMzg2L2kzODYtbXB4LWxpbnV4LmRhdCBiL2dkYi9yZWdmb3JtYXRzL2kzODYvaTM4Ni1tcHgtbGludXguZGF0CitpbmRleCBiNTJiNjhkLi4xZGNkY2U5IDEwMDY0NAorLS0tIGEvZ2RiL3JlZ2Zvcm1hdHMvaTM4Ni9pMzg2LW1weC1saW51eC5kYXQKKysrKyBiL2dkYi9yZWdmb3JtYXRzL2kzODYvaTM4Ni1tcHgtbGludXguZGF0CitAQCAtNDUsMTQgKzQ1LDYgQEAgZXhwZWRpdGU6ZWJwLGVzcCxlaXAKKyAxMjg6eG1tNworIDMyOm14Y3NyCisgMzI6b3JpZ19lYXgKKy0xMjg6eW1tMGgKKy0xMjg6eW1tMWgKKy0xMjg6eW1tMmgKKy0xMjg6eW1tM2gKKy0xMjg6eW1tNGgKKy0xMjg6eW1tNWgKKy0xMjg6eW1tNmgKKy0xMjg6eW1tN2gKKyAxMjg6Ym5kMHJhdworIDEyODpibmQxcmF3CisgMTI4OmJuZDJyYXcKK2RpZmYgLS1naXQgYS9nZGIvcmVnZm9ybWF0cy9pMzg2L2kzODYtbXB4LmRhdCBiL2dkYi9yZWdmb3JtYXRzL2kzODYvaTM4Ni1tcHguZGF0CitpbmRleCAwZWE0MjBiLi5kZGE1MTY0IDEwMDY0NAorLS0tIGEvZ2RiL3JlZ2Zvcm1hdHMvaTM4Ni9pMzg2LW1weC5kYXQKKysrKyBiL2dkYi9yZWdmb3JtYXRzL2kzODYvaTM4Ni1tcHguZGF0CitAQCAtNDQsMTQgKzQ0LDYgQEAgZXhwZWRpdGU6ZWJwLGVzcCxlaXAKKyAxMjg6eG1tNgorIDEyODp4bW03CisgMzI6bXhjc3IKKy0xMjg6eW1tMGgKKy0xMjg6eW1tMWgKKy0xMjg6eW1tMmgKKy0xMjg6eW1tM2gKKy0xMjg6eW1tNGgKKy0xMjg6eW1tNWgKKy0xMjg6eW1tNmgKKy0xMjg6eW1tN2gKKyAxMjg6Ym5kMHJhdworIDEyODpibmQxcmF3CisgMTI4OmJuZDJyYXcKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi50cmFjZS9mdHJhY2UuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIudHJhY2UvZnRyYWNlLmV4cAoraW5kZXggMTVhZDdlNy4uM2E5NDQ3MSAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLnRyYWNlL2Z0cmFjZS5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRyYWNlL2Z0cmFjZS5leHAKK0BAIC0xMzIsNyArMTMyLDYgQEAgcHJvYyB0ZXN0X2Zhc3RfdHJhY2Vwb2ludHMge30geworIAlnZGJfdGVzdCAidGZpbmQgcGMgKnNldF9wb2ludCIgIkZvdW5kIHRyYWNlIGZyYW1lIC4qIiBcCisgCSAgICAidGZpbmQgc2V0X3BvaW50IGZyYW1lLCBmaXJzdCB0aW1lIgorCistCXNldHVwX2tmYWlsICJnZGIvMTM4MDgiICJ4ODZfNjQtKi1saW51eCoiCisgCWdkYl90ZXN0ICJwcmludCBnbG9idmFyIiAiID0gMSIKKworIAlnZGJfdGVzdCAidGZpbmQgcGMgKnNldF9wb2ludCIgIkZvdW5kIHRyYWNlIGZyYW1lIC4qIiBcCitkaWZmIC0tZ2l0IGEvZ2RiL3g4Ni1saW51eC1uYXQuYyBiL2dkYi94ODYtbGludXgtbmF0LmMKK2luZGV4IDNjYzE4YzEuLjEwNzU3NmYgMTAwNjQ0CistLS0gYS9nZGIveDg2LWxpbnV4LW5hdC5jCisrKysgYi9nZGIveDg2LWxpbnV4LW5hdC5jCitAQCAtMjE1LDYgKzIxNSwxMSBAQCB4ODZfbGludXhfcmVhZF9kZXNjcmlwdGlvbiAoc3RydWN0IHRhcmdldF9vcHMgKm9wcykKKyAJICAgIHJldHVybiB0ZGVzY194MzJfYXZ4X2xpbnV4OyAvKiBObyBNUFggb24geDMyIHVzaW5nIEFWWC4gICovCisgCSAgZWxzZQorIAkgICAgcmV0dXJuIHRkZXNjX2FtZDY0X21weF9saW51eDsKKysJY2FzZSBYODZfWFNUQVRFX0FWWF9NUFhfTUFTSzoKKysJICBpZiAoaXNfeDMyKQorKwkgICAgcmV0dXJuIHRkZXNjX3gzMl9hdnhfbGludXg7IC8qIE5vIE1QWCBvbiB4MzIgdXNpbmcgQVZYLiAgKi8KKysJICBlbHNlCisrCSAgICByZXR1cm4gdGRlc2NfYW1kNjRfYXZ4X21weF9saW51eDsKKyAJY2FzZSBYODZfWFNUQVRFX0FWWF9NQVNLOgorIAkgIGlmIChpc194MzIpCisgCSAgICByZXR1cm4gdGRlc2NfeDMyX2F2eF9saW51eDsKK0BAIC0yMzcsNiArMjQyLDggQEAgeDg2X2xpbnV4X3JlYWRfZGVzY3JpcHRpb24gKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMpCisgCSAgcmV0dXJuIHRkZXNjX2kzODZfYXZ4NTEyX2xpbnV4OworIAljYXNlIFg4Nl9YU1RBVEVfTVBYX01BU0s6CisgCSAgcmV0dXJuIHRkZXNjX2kzODZfbXB4X2xpbnV4OworKwljYXNlIFg4Nl9YU1RBVEVfQVZYX01QWF9NQVNLOgorKwkgIHJldHVybiB0ZGVzY19pMzg2X2F2eF9tcHhfbGludXg7CisgCWNhc2UgWDg2X1hTVEFURV9BVlhfTUFTSzoKKyAJICByZXR1cm4gdGRlc2NfaTM4Nl9hdnhfbGludXg7CisgCWRlZmF1bHQ6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvZm9yY2UtcmVhZGxpbmUtc3RhdGljLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiL2ZvcmNlLXJlYWRsaW5lLXN0YXRpYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDM0ZWU4Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvZm9yY2UtcmVhZGxpbmUtc3RhdGljLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotSWYgZ2RiIGlzIGNvbmZpZ3VyZWQgd2l0aCAtLWRpc2FibGUtc3RhdGljIHRoZW4gdGhpcyBpcyBkdXRpZnVsbHkgcGFzc2VkIHRvCi1yZWFkbGluZSB3aGljaCB0aGVuIGRpc2FibGVzIGxpYnJlYWRsaW5lLmEsIHdoaWNoIGNhdXNlcyBhIHByb2JsZW0gd2hlbiBnZGIKLXRyaWVzIHRvIGxpbmsgYWdhaW5zdCB0aGF0LgotCi1UbyBlbnN1cmUgdGhhdCByZWFkbGluZSBhbHdheXMgYnVpbGRzIHN0YXRpYyBsaWJyYXJpZXMsIHBhc3MgLS1lbmFibGUtc3RhdGljIHRvCi10aGUgc3ViLWNvbmZpZ3VyZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuZGVmIGIvTWFrZWZpbGUuZGVmCi1pbmRleCA0Mzk0MTg4Li4wNWM2NjFhIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuZGVmCi0rKysgYi9NYWtlZmlsZS5kZWYKLUBAIC0xMDAsNyArMTAwLDggQEAgaG9zdF9tb2R1bGVzPSB7IG1vZHVsZT0gbGliaWNvbnY7Ci0gCQltaXNzaW5nPSBpbnN0YWxsLWh0bWw7Ci0gCQltaXNzaW5nPSBpbnN0YWxsLWluZm87IH07Ci0gaG9zdF9tb2R1bGVzPSB7IG1vZHVsZT0gbTQ7IH07Ci0taG9zdF9tb2R1bGVzPSB7IG1vZHVsZT0gcmVhZGxpbmU7IH07Ci0raG9zdF9tb2R1bGVzPSB7IG1vZHVsZT0gcmVhZGxpbmU7Ci0rICAgICAgICAgICAgICAgIGV4dHJhX2NvbmZpZ3VyZV9mbGFncz0nLS1lbmFibGUtc3RhdGljJzt9OwotIGhvc3RfbW9kdWxlcz0geyBtb2R1bGU9IHNpZDsgfTsKLSBob3N0X21vZHVsZXM9IHsgbW9kdWxlPSBzaW07IH07Ci0gaG9zdF9tb2R1bGVzPSB7IG1vZHVsZT0gdGV4aW5mbzsgbm9faW5zdGFsbD0gdHJ1ZTsgfTsKLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCi1pbmRleCA2MWUwYWI2Li44MzdmMzZlIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuaW4KLSsrKyBiL01ha2VmaWxlLmluCi1AQCAtMjQ5NzEsNyArMjQ5NzEsNyBAQCBjb25maWd1cmUtcmVhZGxpbmU6Ci0gCSAgJCRzLyQkbW9kdWxlX3NyY2Rpci9jb25maWd1cmUgXAotIAkgIC0tc3JjZGlyPSQke3RvcGRpcn0vJCRtb2R1bGVfc3JjZGlyIFwKLSAJICAkKEhPU1RfQ09ORklHQVJHUykgLS1idWlsZD0ke2J1aWxkX2FsaWFzfSAtLWhvc3Q9JHtob3N0X2FsaWFzfSBcCi0tCSAgLS10YXJnZXQ9JHt0YXJnZXRfYWxpYXN9ICBcCi0rCSAgLS10YXJnZXQ9JHt0YXJnZXRfYWxpYXN9IC0tZW5hYmxlLXN0YXRpYyBcCi0gCSAgfHwgZXhpdCAxCi0gQGVuZGlmIHJlYWRsaW5lCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGJfNy4xMC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiXzcuMTAuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjg5N2UxMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGJfNy4xMC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotcmVxdWlyZSBnZGIuaW5jCi1yZXF1aXJlIGdkYi0ke1BWfS5pbmMKLQotaW5oZXJpdCBweXRob24tZGlyCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotCWlmIFsgLW4gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICdweXRob24nLCAnJywgZCl9IiBdOyB0aGVuCi0JCWNhdCA+ICR7V09SS0RJUn0vcHl0aG9uIDw8IEVPRgotIyEvYmluL3NoCi1jYXNlICJcJDIiIGluCi0JLS1pbmNsdWRlcykgZWNobyAiLUkke1NUQUdJTkdfSU5DRElSfS8ke1BZVEhPTl9ESVJ9LyIgOzsKLQktLWxkZmxhZ3MpIGVjaG8gIi1XbCwtcnBhdGgtbGluaywke1NUQUdJTkdfTElCRElSfS8uLiAtV2wsLXJwYXRoLCR7bGliZGlyfS8uLiAtbHB0aHJlYWQgLWxkbCAtbHV0aWwgLWxtIC1scHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059IiA7OwotCS0tZXhlYy1wcmVmaXgpIGVjaG8gIiR7ZXhlY19wcmVmaXh9IiA7OwotCSopIGV4aXQgMSA7OwotZXNhYwotZXhpdCAwCi1FT0YKLQkJY2htb2QgK3ggJHtXT1JLRElSfS9weXRob24KLQlmaQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiXzcuMTEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGJfNy4xMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41N2NmZmM5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiXzcuMTEuYmIKQEAgLTAsMCArMSwyNiBAQAorcmVxdWlyZSBnZGIuaW5jCityZXF1aXJlIGdkYi0ke1BWfS5pbmMKKworaW5oZXJpdCBweXRob24zLWRpcgorCitFWFRSQV9PRU1BS0VfYXBwZW5kX2xpYmMtbXVzbCA9ICJcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndF9jdl9mdW5jX2dudWdldHRleHQxX2xpYmM9eWVzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd0X2N2X2Z1bmNfZ251Z2V0dGV4dDJfbGliYz15ZXMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworCWlmIFsgLW4gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICdweXRob24nLCAnJywgZCl9IiBdOyB0aGVuCisJCWNhdCA+ICR7V09SS0RJUn0vcHl0aG9uIDw8IEVPRgorIyEvYmluL3NoCitjYXNlICJcJDIiIGluCisJLS1pbmNsdWRlcykgZWNobyAiLUkke1NUQUdJTkdfSU5DRElSfS8ke1BZVEhPTl9ESVJ9JHtQWVRIT05fQUJJfS8iIDs7CisJLS1sZGZsYWdzKSBlY2hvICItV2wsLXJwYXRoLWxpbmssJHtTVEFHSU5HX0xJQkRJUn0vLi4gLVdsLC1ycGF0aCwke2xpYmRpcn0vLi4gLWxwdGhyZWFkIC1sZGwgLWx1dGlsIC1sbSAtbHB5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfSR7UFlUSE9OX0FCSX0iIDs7CisJLS1leGVjLXByZWZpeCkgZWNobyAiJHtleGVjX3ByZWZpeH0iIDs7CisJKikgZXhpdCAxIDs7Citlc2FjCitleGl0IDAKK0VPRgorCQljaG1vZCAreCAke1dPUktESVJ9L3B5dGhvbgorCWZpCit9CitDRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLURycGxfZ2V0dGltZW9mZGF5PWdldHRpbWVvZmRheSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXQuaW5jCmluZGV4IGExZDAzMDAuLjc1M2IwNDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0LmluYwpAQCAtMTcsNiArMTcsNyBAQAogCQktLXdpdGhvdXQtdGNsdGsgXAogIgogCisjIE5lZWRzIGJyb2tlbnNlcCBhcyB0aGlzIGRvZXNuJ3QgdXNlIGF1dG9tYWtlCiBpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGVybG5hdGl2ZSBiYXNoLWNvbXBsZXRpb24KIAogRVhUUkFfT0VNQUtFID0gIk5PX1BZVEhPTj0xIENGTEFHUz0nJHtDRkxBR1N9JyBMREZMQUdTPScke0xERkxBR1N9JyIKQEAgLTMxLDggKzMyLDcgQEAKIAogZG9faW5zdGFsbCAoKSB7CiAJb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9IiR7RH0iIGJpbmRpcj0ke2JpbmRpcn0gXAotCQl0ZW1wbGF0ZV9kaXI9JHtkYXRhZGlyfS9naXQtY29yZS90ZW1wbGF0ZXMgXAotCQlHSVRfUFlUSE9OX0RJUj0ke0R9JHtkYXRhZGlyfS9naXQtY29yZS9weXRob24KKwkJdGVtcGxhdGVfZGlyPSR7ZGF0YWRpcn0vZ2l0LWNvcmUvdGVtcGxhdGVzCiAJaW5zdGFsbCAtZCAke0R9LyR7bWFuZGlyfS9tYW4xCiAJaW5zdGFsbCAtZCAke0R9LyR7bWFuZGlyfS9tYW41CiAJaW5zdGFsbCAtZCAke0R9LyR7bWFuZGlyfS9tYW43CkBAIC0xMDcsMTAgKzEwNyw2IEBACiAiCiBSREVQRU5EU18ke1BOfS1wZXJsdG9vbHMgPSAiJHtQTn0gcGVybCBwZXJsLW1vZHVsZS1maWxlLXBhdGggZmluZHV0aWxzIgogCi1QQUNLQUdFUyA9KyAiJHtQTn0tcHl0aG9uIgotRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7bGliZGlyfS9weXRob24qIgotCi0KICMgZ2l0LXRrIHBhY2thZ2Ugd2l0aCBnaXRrIGFuZCBnaXQtZ3VpCiBQQUNLQUdFUyA9KyAiJHtQTn0tdGsiCiAjUkRFUEVORFNfJHtQTn0tdGsgPSAiJHtQTn0gdGsgdGNsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0XzIuNy40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0XzIuNy40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzcyNzkzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdF8yLjcuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLXJlcXVpcmUgZ2l0LmluYwotCi1FWFRSQV9PRUNPTkYgKz0gImFjX2N2X3NucHJpbnRmX3JldHVybnNfYm9ndXM9bm8gXAotICAgICAgICAgICAgICAgICBhY19jdl9mcmVhZF9yZWFkc19kaXJlY3Rvcmllcz0ke2FjX2N2X2ZyZWFkX3JlYWRzX2RpcmVjdG9yaWVzPXllc30gXAotICAgICAgICAgICAgICAgICAiCi1FWFRSQV9PRU1BS0UgKz0gIk5PX0dFVFRFWFQ9MSIKLQotU1JDX1VSSVt0YXJiYWxsLm1kNXN1bV0gPSAiYzY0MDEyZDQ5MWUyNGM3ZDY1Y2QzODlmNzUzODNkOTEiCi1TUkNfVVJJW3RhcmJhbGwuc2hhMjU2c3VtXSA9ICI3MTA0YzRmNWQ5NDhhNzViNDk5YTk1NDUyNGNiMjgxZmUzMGM2NjQ5ZDhhYmUyMDk4MjkzNmY3NWVjMWYyNzViIgotU1JDX1VSSVttYW5wYWdlcy5tZDVzdW1dID0gIjU4MDIwZGMxM2E1ODAxYzQ5Zjc5ODZmZWY3MDI3NTM1IgotU1JDX1VSSVttYW5wYWdlcy5zaGEyNTZzdW1dID0gIjBkZmUxOTMxYWQzMDI4NzM0NzBlMDI4MDI0OGUzYWE1MDUwMmI1ZWRkMDBkY2MzZTljOTE3MzY2N2I2ZmVhNmEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXRfMi45LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXRfMi45LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDU5ZjNkMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdF8yLjkuMy5iYgpAQCAtMCwwICsxLDExIEBACityZXF1aXJlIGdpdC5pbmMKKworRVhUUkFfT0VDT05GICs9ICJhY19jdl9zbnByaW50Zl9yZXR1cm5zX2JvZ3VzPW5vIFwKKyAgICAgICAgICAgICAgICAgYWNfY3ZfZnJlYWRfcmVhZHNfZGlyZWN0b3JpZXM9JHthY19jdl9mcmVhZF9yZWFkc19kaXJlY3Rvcmllcz15ZXN9IFwKKyAgICAgICAgICAgICAgICAgIgorRVhUUkFfT0VNQUtFICs9ICJOT19HRVRURVhUPTEiCisKK1NSQ19VUklbdGFyYmFsbC5tZDVzdW1dID0gImM3ODMzNjFiZTg5NGI4YmZhNTM3MzgxMWIxYjY1NjAyIgorU1JDX1VSSVt0YXJiYWxsLnNoYTI1NnN1bV0gPSAiYTI1MmI2NjM2YjEyZDViYTU3NzMyYzg0Njk3MDE1NDRjMjZjMmIxNjg5OTMzYmQxYjQyNWU2MDNjYmIyNDdjMCIKK1NSQ19VUklbbWFucGFnZXMubWQ1c3VtXSA9ICI2NmZhZmQ2MWQ2NWY5ZDJkOTk1ODExMzMxNzBlYjE4NiIKK1NSQ19VUklbbWFucGFnZXMuc2hhMjU2c3VtXSA9ICI4ZWExYTU1YjA0OGZhZmJmMGMwYzZmY2JjYTRiNWIwZjVlOTkxNzg5MzIyMWZjNzM0NWMwOTA1MWQ2NTgzMmNlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy8wMDAxLWxpYmd1aWxlLUNoZWNrLWZvci1zdHJ0b2xfbC1kdXJpbmctY29uZmlndXJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy8wMDAxLWxpYmd1aWxlLUNoZWNrLWZvci1zdHJ0b2xfbC1kdXJpbmctY29uZmlndXJlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNGYwNzNmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZmlsZXMvMDAwMS1saWJndWlsZS1DaGVjay1mb3Itc3RydG9sX2wtZHVyaW5nLWNvbmZpZ3VyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLUZyb20gODE0ZDZmYjZjMWY0YTU0NGM4ZmQzN2Y1YTM5MGJhMDIwYzJkOGM4NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTdW4sIDEwIEphbiAyMDE2IDIyOjI4OjE3ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGxpYmd1aWxlOiBDaGVjayBmb3Igc3RydG9sX2wgZHVyaW5nIGNvbmZpZ3VyZQotCi1zdHJ0b2xfbCBpcyBhIGdudSBleHRlbnRpb24gd2hpY2ggbWF5IG5vdCBiZSBhdmFpbGFibGUgb24gb3RoZXIgbGludXgKLWxpYmMgaW1wbGVtZW50YXRpb25zIGUuZy4gbXVzbC4gVGhlcmVmb3JlIGNoZWNrIGZvciB0aGlzIGZ1bmNpdG9uIGFuZAotY29uZGl0aW9uYWxpemUgdGhlIHVzZSBvZiBpdC4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBjb25maWd1cmUuYWMgICAgfCA1ICsrKy0tCi0gbGliZ3VpbGUvaTE4bi5jIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAzOTY5OTI5Li5mOGE2YTFhIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC03NTIsNyArNzUyLDggQEAgQUNfQ0hFQ0tfSEVBREVSUyhbYXNzZXJ0LmggY3J0X2V4dGVybnMuaF0pCi0gIyAgIHRydW5jYXRlIC0gbm90IGluIG1pbmd3Ci0gIyAgIGlzYmxhbmsgLSBhdmFpbGFibGUgYXMgYSBHTlUgZXh0ZW5zaW9uIG9yIGluIEM5OQotICMgICBfTlNHZXRFbnZpcm9uIC0gRGFyd2luIHNwZWNpZmljCi0tIyAgIHN0cmNvbGxfbCwgbmV3bG9jYWxlIC0gR05VIGV4dGVuc2lvbnMgKGdsaWJjKSwgYWxzbyBhdmFpbGFibGUgb24gRGFyd2luCi0rIyAgIHN0cmNvbGxfbCwgbmV3bG9jYWxlLCBzdHJ0b2xfbCAtIEdOVSBleHRlbnNpb25zIChnbGliYyksCi0rIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsc28gYXZhaWxhYmxlIG9uIERhcndpbgotICMgICBmb3JrIC0gdW5hdmFpbGFibGUgb24gV2luZG93cwotICMgICB1dGltZW5zYXQgLSBwb3NpeC4xLTIwMDgKLSAjICAgc2NoZWRfZ2V0YWZmaW5pdHksIHNjaGVkX3NldGFmZmluaXR5IC0gR05VIGV4dGVuc2lvbnMgKGdsaWJjKQotQEAgLTc2OCw3ICs3NjksNyBAQCBBQ19DSEVDS19GVU5DUyhbRElORklOSVRZIERRTkFOIGNleHAgY2hzaXplIGNsb2cgY2xvZzEwIGN0ZXJtaWQJCVwKLSAgIGdldGdyZW50IGtpbGwgZ2V0cHBpZCBnZXRwZ3JwIGZvcmsgc2V0aXRpbWVyIGdldGl0aW1lciBzdHJjaHIgc3RyY21wCVwKLSAgIGluZGV4IGJjb3B5IG1lbWNweSByaW5kZXggdHJ1bmNhdGUgdW5zZXRlbnYgaXNibGFuayBfTlNHZXRFbnZpcm9uCVwKLSAgIHN0cmNvbGwgc3RyY29sbF9sIG5ld2xvY2FsZSB1dGltZW5zYXQgc2NoZWRfZ2V0YWZmaW5pdHkJCVwKLS0gIHNjaGVkX3NldGFmZmluaXR5IHNlbmRmaWxlXSkKLSsgIHNjaGVkX3NldGFmZmluaXR5IHNlbmRmaWxlIHN0cnRvbF9sXSkKLSAKLSBBTV9DT05ESVRJT05BTChbQlVJTERfSUNFXzlfUE9QRU5dLAotICAgW3Rlc3QgIngkZW5hYmxlX3Bvc2l4IiA9ICJ4eWVzIiAmJiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfZm9yayIgPSAieHllcyJdKQotZGlmZiAtLWdpdCBhL2xpYmd1aWxlL2kxOG4uYyBiL2xpYmd1aWxlL2kxOG4uYwotaW5kZXggOTdkNDRiMC4uOWZiNjk3NiAxMDA2NDQKLS0tLSBhL2xpYmd1aWxlL2kxOG4uYwotKysrIGIvbGliZ3VpbGUvaTE4bi5jCi1AQCAtMTM1Miw3ICsxMzUyLDcgQEAgU0NNX0RFRklORSAoc2NtX2xvY2FsZV9zdHJpbmdfdG9faW50ZWdlciwgImxvY2FsZS1zdHJpbmctPmludGVnZXIiLAotIAotICAgaWYgKGNfbG9jYWxlICE9IE5VTEwpCi0gICAgIHsKLS0jaWZkZWYgVVNFX0dOVV9MT0NBTEVfQVBJCi0rI2lmIGRlZmluZWQoVVNFX0dOVV9MT0NBTEVfQVBJKSAmJiBkZWZpbmVkKEhBVkVfU1RSVE9MX0wpCi0gICAgICAgY19yZXN1bHQgPSBzdHJ0b2xfbCAoY19zdHIsICZjX2VuZHB0ciwgY19iYXNlLCBjX2xvY2FsZSk7Ci0gI2Vsc2UKLSAgICAgICBSVU5fSU5fTE9DQUxFX1NFQ1RJT04gKGNfbG9jYWxlLAotLS0gCi0yLjcuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2ZpbGVzLzAwMDItUmVjb2duaXplLW5pb3MyLWFzLWNvbXBpbGF0aW9uLXRhcmdldC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZmlsZXMvMDAwMi1SZWNvZ25pemUtbmlvczItYXMtY29tcGlsYXRpb24tdGFyZ2V0LnBhdGNoCmluZGV4IDUxOTU4NWIuLjhlODQ3NDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZmlsZXMvMDAwMi1SZWNvZ25pemUtbmlvczItYXMtY29tcGlsYXRpb24tdGFyZ2V0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZmlsZXMvMDAwMi1SZWNvZ25pemUtbmlvczItYXMtY29tcGlsYXRpb24tdGFyZ2V0LnBhdGNoCkBAIC0xMCwyNyArMTAsMjMgQEAKICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvbW9kdWxlL3N5c3RlbS9iYXNlL3RhcmdldC5zY20gYi9tb2R1bGUvc3lzdGVtL2Jhc2UvdGFyZ2V0LnNjbQotaW5kZXggZDYwYThlMC4uZDFmNmNmZiAxMDA2NDQKIC0tLSBhL21vZHVsZS9zeXN0ZW0vYmFzZS90YXJnZXQuc2NtCiArKysgYi9tb2R1bGUvc3lzdGVtL2Jhc2UvdGFyZ2V0LnNjbQogQEAgLTY1LDcgKzY1LDcgQEAKICAgICAgICAoY29uZCAoKHN0cmluZy1tYXRjaCAiXmlbMC05XTg2JCIgY3B1KQogICAgICAgICAgICAgICAoZW5kaWFubmVzcyBsaXR0bGUpKQogICAgICAgICAgICAgICgobWVtYmVyIGNwdSAnKCJ4ODZfNjQiICJpYTY0IgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBjbGUiICJwb3dlcnBjNjRsZSIgIm1pcHNlbCIgIm1pcHM2NGVsIikpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgInBvd2VycGNsZSIgInBvd2VycGM2NGxlIiAibWlwc2VsIiAibWlwczY0ZWwiICJuaW9zMiIpKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBjbGUiICJwb3dlcnBjNjRsZSIgIm1pcHNlbCIgIm1pcHM2NGVsIiAic2g0IikpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgInBvd2VycGNsZSIgInBvd2VycGM2NGxlIiAibWlwc2VsIiAibWlwczY0ZWwiICJzaDQiICJuaW9zMiIpKQogICAgICAgICAgICAgICAoZW5kaWFubmVzcyBsaXR0bGUpKQogICAgICAgICAgICAgICgobWVtYmVyIGNwdSAnKCJzcGFyYyIgInNwYXJjNjQiICJwb3dlcnBjIiAicG93ZXJwYzY0IiAic3B1IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzIiAibWlwczY0IikpCi1AQCAtMTAwLDcgKzEwMCw3IEBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHMiICJtaXBzNjQiICJtNjhrIiAiczM5MHgiKSkKK0BAIC0xMDgsNyArMTA4LDcgQEAKICAKICAgICAgICAgICAgKChzdHJpbmctbWF0Y2ggIjY0JCIgY3B1KSA4KQotICAgICAgICAgICAoKHN0cmluZy1tYXRjaCAiNjRbbGJlXVtsYmVdJCIgY3B1KSA4KQotLSAgICAgICAgICAoKG1lbWJlciBjcHUgJygic3BhcmMiICJwb3dlcnBjIiAibWlwcyIgIm1pcHNlbCIpKSA0KQotKyAgICAgICAgICAoKG1lbWJlciBjcHUgJygic3BhcmMiICJwb3dlcnBjIiAibWlwcyIgIm1pcHNlbCIgIm5pb3MyIikpIDQpCisgICAgICAgICAgICgoc3RyaW5nLW1hdGNoICI2NF8/W2xiZV1bbGJlXSQiIGNwdSkgOCkKKy0gICAgICAgICAgKChtZW1iZXIgY3B1ICcoInNwYXJjIiAicG93ZXJwYyIgIm1pcHMiICJtaXBzZWwiICJtNjhrIiAic2g0IikpIDQpCisrICAgICAgICAgICgobWVtYmVyIGNwdSAnKCJzcGFyYyIgInBvd2VycGMiICJtaXBzIiAibWlwc2VsIiAibTY4ayIgInNoNCIgIm5pb3MyIikpIDQpCisgICAgICAgICAgICgobWVtYmVyIGNwdSAnKCJzMzkweCIpKSA4KQogICAgICAgICAgICAoKHN0cmluZy1tYXRjaCAiXmFybS4qIiBjcHUpIDQpCiAgICAgICAgICAgIChlbHNlIChlcnJvciAidW5rbm93biBDUFUgd29yZCBzaXplIiBjcHUpKSkpKQotIAotLS0gCi0yLjcuMC5yYzMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy9kZWJpYW4vMDAwMi1NYXJrLVVudXNlZC1tb2R1bGVzLWFyZS1yZW1vdmVkLWdjLXRlc3QtYXMtdW5yZXNvbHZlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy9kZWJpYW4vMDAwMi1NYXJrLVVudXNlZC1tb2R1bGVzLWFyZS1yZW1vdmVkLWdjLXRlc3QtYXMtdW5yZXNvbHZlLnBhdGNoCmluZGV4IDQzMjM4YTcuLmM3YmY2MzUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZmlsZXMvZGViaWFuLzAwMDItTWFyay1VbnVzZWQtbW9kdWxlcy1hcmUtcmVtb3ZlZC1nYy10ZXN0LWFzLXVucmVzb2x2ZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2ZpbGVzL2RlYmlhbi8wMDAyLU1hcmstVW51c2VkLW1vZHVsZXMtYXJlLXJlbW92ZWQtZ2MtdGVzdC1hcy11bnJlc29sdmUucGF0Y2gKQEAgLTEsNiArMSw2IEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2RlYmlhbiBwYXRjaF0KIAotU2lnbmVkLU9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+CiAKIEZyb20gZTUyYmZjZGJhY2E1ZGNlNDk4Njc4ZDhmNTEyMzgxZTNlMzlhNDA2NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFJvYiBCcm93bmluZyA8cmxiQGRlZmF1bHR2YWx1ZS5vcmc+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2ZpbGVzL2RlYmlhbi8wMDAzLU1hcmstbXV0ZXgtd2l0aC1vd25lci1ub3QtcmV0YWluZWQtdGhyZWFkcy10ZXN0LWFzLXUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2ZpbGVzL2RlYmlhbi8wMDAzLU1hcmstbXV0ZXgtd2l0aC1vd25lci1ub3QtcmV0YWluZWQtdGhyZWFkcy10ZXN0LWFzLXUucGF0Y2gKaW5kZXggMzRiZTNiOS4uZDNmYWYzZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy9kZWJpYW4vMDAwMy1NYXJrLW11dGV4LXdpdGgtb3duZXItbm90LXJldGFpbmVkLXRocmVhZHMtdGVzdC1hcy11LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZmlsZXMvZGViaWFuLzAwMDMtTWFyay1tdXRleC13aXRoLW93bmVyLW5vdC1yZXRhaW5lZC10aHJlYWRzLXRlc3QtYXMtdS5wYXRjaApAQCAtMSw2ICsxLDYgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZGViaWFuIHBhdGNoXQogCi1TaWduZWQtT2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KIAogRnJvbSA4NDg1NDMwOTFkNTVkZGRiNTRhODU2MTIxNTU5NjQ1MDZkNzEyODUyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogUm9iIEJyb3duaW5nIDxybGJAZGVmYXVsdHZhbHVlLm9yZz4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZmlsZXMvZ3VpbGVfMi4wLjZfZml4X3NlZF9lcnJvci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZmlsZXMvZ3VpbGVfMi4wLjZfZml4X3NlZF9lcnJvci5wYXRjaAppbmRleCBlNWRjMjI2Li41NTk3YmIyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2ZpbGVzL2d1aWxlXzIuMC42X2ZpeF9zZWRfZXJyb3IucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy9ndWlsZV8yLjAuNl9maXhfc2VkX2Vycm9yLnBhdGNoCkBAIC02LDcgKzYsNyBAQAogfCBzZWQ6IC1lIGV4cHJlc3Npb24gIzEsIGNoYXIgOTogdW5rbm93biBvcHRpb24gdG8gYHMnCiB8IGNvbmZpZ3VyZS5hYzozOTogZXJyb3I6IEFDX0lOSVQgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHBhY2thZ2UgYW5kIHZlcnNpb24gYXJndW1lbnRzCiAKLVNpZ25lZC1PZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgogMjAxMi8wNS8wMQogCiBJbmRleDogZ3VpbGUtMi4wLjUvYnVpbGQtYXV4L2dpdC12ZXJzaW9uLWdlbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy9saWJndWlsZS1WTS1BU01fTVVMLWZvci1BUk0tQWRkLWVhcmx5Y2xvYmJlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZmlsZXMvbGliZ3VpbGUtVk0tQVNNX01VTC1mb3ItQVJNLUFkZC1lYXJseWNsb2JiZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1MDA1OWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy9saWJndWlsZS1WTS1BU01fTVVMLWZvci1BUk0tQWRkLWVhcmx5Y2xvYmJlci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLUZyb20gYTg1Yzc4ZWExMzkzOTg1ZmRiNmU2Njc4ZGVhMTkxMzVjNTUzZDM0MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcmsgSCBXZWF2ZXIgPG1od0BuZXRyaXMub3JnPgotRGF0ZTogRnJpLCAxOSBTZXAgMjAxNCAyMToxODowOSAtMDQwMAotU3ViamVjdDogW1BBVENIXSBWTTogQVNNX01VTCBmb3IgQVJNOiBBZGQgZWFybHljbG9iYmVyIGNvbnN0cmFpbnQgdG8gdGhlIFNNVUxMCi0gb3V0cHV0cy4KLQotUmVwb3J0ZWQgYnkgUm9iIEJyb3duaW5nIDxybGJAZGVmYXVsdHZhbHVlLm9yZz4uCi0KLSogbGliZ3VpbGUvdm0taS1zY2hlbWUuYyAoQVNNX01VTClbQVJNXTogQWRkIGVhcmx5Y2xvYmJlciAoJikgY29uc3RyYWludAotICB0byB0aGUgU01VTEwgb3V0cHV0IHJlZ2lzdGVycy4KLQotQXV0aG9yOiBNYXJrIEggV2VhdmVyIDxtaHdAbmV0cmlzLm9yZz4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliZ3VpbGUvdm0taS1zY2hlbWUuYyB8IDUgKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliZ3VpbGUvdm0taS1zY2hlbWUuYyBiL2xpYmd1aWxlL3ZtLWktc2NoZW1lLmMKLWluZGV4IDU4N2FhOTUuLjE2MmVmYWIgMTAwNjQ0Ci0tLS0gYS9saWJndWlsZS92bS1pLXNjaGVtZS5jCi0rKysgYi9saWJndWlsZS92bS1pLXNjaGVtZS5jCi1AQCAtMSw1ICsxLDQgQEAKLS0vKiBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMsCi0tICogICAyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIENvcHlyaWdodCAoQykgMjAwMSwgMjAwOS0yMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotICAqIAotICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLUBAIC0zNjMsNyArMzYyLDcgQEAgVk1fREVGSU5FX0ZVTkNUSU9OICgxNDksIGdlLCAiZ2U/IiwgMikKLSAgICAgICB7CQkJCQkJCQkJXAotIAlzY21fdF9zaWduZWRfYml0cyBybG8sIHJoaTsJCQkJCVwKLSAJYXNtICgic211bGwgJTAsICUxLCAlMiwgJTNcbiIJCQkJCVwKLS0JICAgICA6ICI9ciIgKHJsbyksICI9ciIgKHJoaSkJCQkJCVwKLSsJICAgICA6ICI9JnIiIChybG8pLCAiPSZyIiAocmhpKQkJCQkJXAotIAkgICAgIDogInIiIChTQ01fVU5QQUNLICh4KSAtIHNjbV90YzJfaW50KSwJCQlcCi0gCSAgICAgICAiciIgKFNDTV9JX0lOVU0gKHkpKSk7CQkJCQlcCi0gCWlmIChTQ01fTElLRUxZIChTQ01fU1JTIChybG8sIDMxKSA9PSByaGkpKQkJCVwKLS0tIAotMi4zLjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy9vcGVuc3VzZS9ndWlsZS02NGJpdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZmlsZXMvb3BlbnN1c2UvZ3VpbGUtNjRiaXQucGF0Y2gKaW5kZXggZDNlMzEyZi4uZGE2OWI1ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy9vcGVuc3VzZS9ndWlsZS02NGJpdC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2ZpbGVzL29wZW5zdXNlL2d1aWxlLTY0Yml0LnBhdGNoCkBAIC0xLDYgKzEsNiBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvcGVuc3VzZSBwYXRjaF0KIAotU2lnbmVkLU9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+CiAKIEluZGV4OiBndWlsZS0yLjAuMy9saWJndWlsZS9oYXNoLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZmlsZXMvb3BlbnN1c2UvZ3VpbGUtdHVybi1vZmYtZ2MtdGVzdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZmlsZXMvb3BlbnN1c2UvZ3VpbGUtdHVybi1vZmYtZ2MtdGVzdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTIwMTQ4Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2ZpbGVzL29wZW5zdXNlL2d1aWxlLXR1cm4tb2ZmLWdjLXRlc3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29wZW5zdXNlIHBhdGNoXQotCi1TaWduZWQtT2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgotCi1TZWUgaHR0cDovL2RlYmJ1Z3MuZ251Lm9yZy9jZ2kvYnVncmVwb3J0LmNnaT9idWc9MTAwOTYKLXdoeSB0aGlzIHRlc3QgaXMgdHVybmVkIG9mZi4KLUluZGV4OiBndWlsZS0yLjAuMy90ZXN0LXN1aXRlL3Rlc3RzL2djLnRlc3QKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBndWlsZS0yLjAuMy5vcmlnL3Rlc3Qtc3VpdGUvdGVzdHMvZ2MudGVzdAkyMDExLTEwLTE1IDA5OjM0OjQwLjAwMDAwMDAwMCAtMDcwMAotKysrIGd1aWxlLTIuMC4zL3Rlc3Qtc3VpdGUvdGVzdHMvZ2MudGVzdAkyMDEyLTAxLTEzIDIxOjUyOjEwLjI4MjU0MDM1NSAtMDgwMAotQEAgLTY1LDIzICs2NSwyMyBAQAotICAgICAgIGZvbykpKQotIAotIAotLSh3aXRoLXRlc3QtcHJlZml4ICJnYyIKLS0gIChwYXNzLWlmICJVbnVzZWQgbW9kdWxlcyBhcmUgcmVtb3ZlZCIKLS0gICAgKGxldCogKChndWFyZCAobWFrZS1ndWFyZGlhbikpCi0tICAgICAgICAgICAodG90YWwgMTAwMCkpCi0tCi0tICAgICAgKGZvci1lYWNoIChsYW1iZGEgKHgpIChndWFyZCAobWFrZS1tb2R1bGUpKSkgKGlvdGEgdG90YWwpKQotKzs7KHdpdGgtdGVzdC1wcmVmaXggImdjIgotKzs7ICAocGFzcy1pZiAiVW51c2VkIG1vZHVsZXMgYXJlIHJlbW92ZWQiCi0rOzsgICAgKGxldCogKChndWFyZCAobWFrZS1ndWFyZGlhbikpCi0rOzsgICAgICAgICAgICh0b3RhbCAxMDAwKSkKLSs7OwotKzs7ICAgICAgKGZvci1lYWNoIChsYW1iZGEgKHgpIChndWFyZCAobWFrZS1tb2R1bGUpKSkgKGlvdGEgdG90YWwpKQotIAotICAgICAgIDs7IEF2b2lkIGZhbHNlIHJlZmVyZW5jZXMgdG8gdGhlIG1vZHVsZXMgb24gdGhlIHN0YWNrLgotLSAgICAgIChzdGFjay1jbGVhbnVwIDIwKQotKzs7ICAgICAgKHN0YWNrLWNsZWFudXAgMjApCi0gCi0tICAgICAgKGdjKQotLSAgICAgIChnYykgOzsgdHdpY2U6IGhhdmUgdG8ga2lsbCB0aGUgd2VhayB2ZWN0b3JzLgotLSAgICAgIChnYykgOzsgdGhyaWNlOiBiZWNhdXNlIHRoZSB0ZXN0IGRvZXNuJ3Qgc3VjY2VlZCB3aXRoIG9ubHkKLSs7OyAgICAgIChnYykKLSs7OyAgICAgIChnYykgOzsgdHdpY2U6IGhhdmUgdG8ga2lsbCB0aGUgd2VhayB2ZWN0b3JzLgotKzs7ICAgICAgKGdjKSA7OyB0aHJpY2U6IGJlY2F1c2UgdGhlIHRlc3QgZG9lc24ndCBzdWNjZWVkIHdpdGggb25seQotICAgICAgICAgICAgOzsgb25lIGdjIHJvdW5kLiBub3Qgc3VyZSB3aHkuCi0gCi0tICAgICAgKD0gKGxldCBscCAoKGkgMCkpCi0tICAgICAgICAgICAoaWYgKGd1YXJkKQotLSAgICAgICAgICAgICAgIChscCAoMSsgaSkpCi0tICAgICAgICAgICAgICAgaSkpCi0tICAgICAgICAgdG90YWwpKSkpCi0rOzsgICAgICAoPSAobGV0IGxwICgoaSAwKSkKLSs7OyAgICAgICAgICAgKGlmIChndWFyZCkKLSs7OyAgICAgICAgICAgICAgIChscCAoMSsgaSkpCi0rOzsgICAgICAgICAgICAgICBpKSkKLSs7OyAgICAgICAgIHRvdGFsKSkpKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy9yZW1vdmVfc3RyY2FzZV9sX2Z1bmNzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy9yZW1vdmVfc3RyY2FzZV9sX2Z1bmNzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlN2EwNmZlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZmlsZXMvcmVtb3ZlX3N0cmNhc2VfbF9mdW5jcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLVRoZXNlIHVudXNlZCBmdW5jdGlvbnMgY2F1c2UgYnVpbGQgZmFpbHVyZXMgd2l0aCB1Y2xpYmMgc2luY2UgdGhleSByZWZlcmVuY2UgX191Y2xpYmNfbG9jYWxlX3N0cnVjdAotYW5kIHRoaXMgaXMgZXhwb3NlZCBieSB1Y2xpYmMgQVBJIGhlYWRlcnMgb25seSBpZiBDIGxvY2FsZXMgYXJlIGJ1aWx0LCBidXQgZm9yIE9FIHdlIGJ1aWxkIGZ1bGwgbG9jYWxlCi1zdXBwb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLUluZGV4OiBndWlsZS0yLjAuMTEvbGliZ3VpbGUvaTE4bi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3VpbGUtMi4wLjExLm9yaWcvbGliZ3VpbGUvaTE4bi5jCi0rKysgZ3VpbGUtMi4wLjExL2xpYmd1aWxlL2kxOG4uYwotQEAgLTg1MSwyNyArODUxLDYgQEAgc3RyX2Rvd25jYXNlIChyZWdpc3RlciBjaGFyICpkc3QsIHJlZ2lzdAotICAgKmRzdCA9ICdcMCc7Ci0gfQotIAotLSNpZmRlZiBVU0VfR05VX0xPQ0FMRV9BUEkKLS1zdGF0aWMgaW5saW5lIHZvaWQKLS1zdHJfdXBjYXNlX2wgKHJlZ2lzdGVyIGNoYXIgKmRzdCwgcmVnaXN0ZXIgY29uc3QgY2hhciAqc3JjLAotLQkgICAgICBzY21fdF9sb2NhbGUgbG9jYWxlKQotLXsKLS0gIGZvciAoOyAqc3JjICE9ICdcMCc7IHNyYysrLCBkc3QrKykKLS0gICAgKmRzdCA9IHRvdXBwZXJfbCAoKnNyYywgbG9jYWxlKTsKLS0gICpkc3QgPSAnXDAnOwotLX0KLS0KLS1zdGF0aWMgaW5saW5lIHZvaWQKLS1zdHJfZG93bmNhc2VfbCAocmVnaXN0ZXIgY2hhciAqZHN0LCByZWdpc3RlciBjb25zdCBjaGFyICpzcmMsCi0tCQlzY21fdF9sb2NhbGUgbG9jYWxlKQotLXsKLS0gIGZvciAoOyAqc3JjICE9ICdcMCc7IHNyYysrLCBkc3QrKykKLS0gICAgKmRzdCA9IHRvbG93ZXJfbCAoKnNyYywgbG9jYWxlKTsKLS0gICpkc3QgPSAnXDAnOwotLX0KLS0jZW5kaWYKLS0KLS0KLSBTQ01fREVGSU5FIChzY21fc3RyaW5nX2xvY2FsZV9sdCwgInN0cmluZy1sb2NhbGU8PyIsIDIsIDEsIDAsCi0gCSAgICAoU0NNIHMxLCBTQ00gczIsIFNDTSBsb2NhbGUpLAotIAkgICAgIkNvbXBhcmUgc3RyaW5ncyBAdmFye3MxfSBhbmQgQHZhcntzMn0gaW4gYSBsb2NhbGUtZGVwZW5kZW50IHdheS4iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2d1aWxlXzIuMC4xMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZ3VpbGVfMi4wLjExLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Y2VmZTY2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZ3VpbGVfMi4wLjExLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTI4ICswLDAgQEAKLVNVTU1BUlkgPSAiR3VpbGUgaXMgdGhlIEdOVSBVYmlxdWl0b3VzIEludGVsbGlnZW50IExhbmd1YWdlIGZvciBFeHRlbnNpb25zIgotREVTQ1JJUFRJT04gPSAiR3VpbGUgaXMgdGhlIEdOVSBVYmlxdWl0b3VzIEludGVsbGlnZW50IExhbmd1YWdlIGZvciBFeHRlbnNpb25zLFwKLSB0aGUgb2ZmaWNpYWwgZXh0ZW5zaW9uIGxhbmd1YWdlIGZvciB0aGUgR05VIG9wZXJhdGluZyBzeXN0ZW0uXAotIEd1aWxlIGlzIGEgbGlicmFyeSBkZXNpZ25lZCB0byBoZWxwIHByb2dyYW1tZXJzIGNyZWF0ZSBmbGV4aWJsZSBhcHBsaWNhdGlvbnMuXAotIFVzaW5nIEd1aWxlIGluIGFuIGFwcGxpY2F0aW9uIGFsbG93cyB0aGUgYXBwbGljYXRpb24ncyBmdW5jdGlvbmFsaXR5IHRvIGJlXAotIGV4dGVuZGVkIGJ5IHVzZXJzIG9yIG90aGVyIHByb2dyYW1tZXJzIHdpdGggcGx1Zy1pbnMsIG1vZHVsZXMsIG9yIHNjcmlwdHMuXAotIEd1aWxlIHByb3ZpZGVzIHdoYXQgbWlnaHQgYmUgZGVzY3JpYmVkIGFzICdwcmFjdGljYWwgc29mdHdhcmUgZnJlZWRvbSwnXAotIG1ha2luZyBpdCBwb3NzaWJsZSBmb3IgdXNlcnMgdG8gY3VzdG9taXplIGFuIGFwcGxpY2F0aW9uIHRvIG1lZXQgdGhlaXJcCi0gbmVlZHMgd2l0aG91dCBkaWdnaW5nIGludG8gdGhlIGFwcGxpY2F0aW9uJ3MgaW50ZXJuYWxzLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2d1aWxlLyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9ndWlsZS9ndWlsZS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDItTWFyay1VbnVzZWQtbW9kdWxlcy1hcmUtcmVtb3ZlZC1nYy10ZXN0LWFzLXVucmVzb2x2ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vMDAwMy1NYXJrLW11dGV4LXdpdGgtb3duZXItbm90LXJldGFpbmVkLXRocmVhZHMtdGVzdC1hcy11LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL29wZW5zdXNlL2d1aWxlLTY0Yml0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2d1aWxlXzIuMC42X2ZpeF9zZWRfZXJyb3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYXJtX2VuZGlhbm5lc3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYXJtX2FhcmNoNjQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vd29ya2Fyb3VuZC1pY2Utc3NhLWNvcnJ1cHRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGliZ3VpbGUtTWFrZWZpbGUuYW0taG9vay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJndWlsZS1WTS1BU01fTVVMLWZvci1BUk0tQWRkLWVhcmx5Y2xvYmJlci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9yZW1vdmVfc3RyY2FzZV9sX2Z1bmNzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbGliZ3VpbGUtQ2hlY2stZm9yLXN0cnRvbF9sLWR1cmluZy1jb25maWd1cmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1SZWNvZ25pemUtbmlvczItYXMtY29tcGlsYXRpb24tdGFyZ2V0LnBhdGNoIFwKLSAgICAgICAgICAgIgotCi0jICAgICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDEtQ2hhbmdlLWd1aWxlLXRvLWd1aWxlLVguWS1mb3ItaW5mby1wYWdlcy5wYXRjaAotIyAgICAgICAgICAgZmlsZTovL29wZW5zdXNlL2d1aWxlLXR1cm4tb2ZmLWdjLXRlc3QucGF0Y2gKLQotU1JDX1VSSVttZDVzdW1dID0gIjAzZjFiY2UxYTQ5ODMwNzZkOTU1MDAzNDcyMzA2YTEzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImFlZDBhNGE2ZGI0ZTMxMGNiZGZlYjM2MTNmYTZmODZmZGRjOTFlZjYyNGMxZTNmODkzN2E2MzA0YzY5MTAzZTIiCi0KLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgdGV4aW5mbwotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLURFUEVORFMgPSAibGlidW5pc3RyaW5nIGJkd2djIGdtcCBsaWJ0b29sIGxpYmZmaSBuY3Vyc2VzIHJlYWRsaW5lIgotIyBhZGQgZ3VpbGUtbmF0aXZlIG9ubHkgdG8gdGhlIHRhcmdldCByZWNpcGUncyBERVBFTkRTCi1ERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGd1aWxlLW5hdGl2ZSBsaWJhdG9taWMtb3BzIgotCi0jIFRoZSBjb21tZW50IG9mIHRoZSBzY3JpcHQgZ3VpbGUtY29uZmlnIHNhaWQgaXQgaGFzIGJlZW4gZGVwcmVjYXRlZCBidXQgd2Ugc2hvdWxkCi0jIGF0IGxlYXN0IGFkZCB0aGUgcmVxdWlyZWQgZGVwZW5kZW5jeSB0byBtYWtlIGl0IHdvcmsgc2luY2Ugd2Ugc3RpbGwgcHJvdmlkZSB0aGUgc2NyaXB0LgotUkRFUEVORFNfJHtQTn0gPSAicGtnY29uZmlnIgotCi1SREVQRU5EU18ke1BOfV9hcHBlbmRfbGliYy1nbGliY19jbGFzcy10YXJnZXQgPSAiIGdsaWJjLWdjb252LWlzbzg4NTktMSIKLQotRVhUUkFfT0VDT05GICs9ICIke0BbJy0td2l0aG91dC1saWJsdGRsLXByZWZpeCAtLXdpdGhvdXQtbGliZ21wLXByZWZpeCAtLXdpdGhvdXQtbGlicmVhZGxpbmUtcHJlZml4JywgJyddW2JiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ25hdGl2ZScsZCldfSIKLQotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIC0td2l0aC1saWJ1bmlzdHJpbmctcHJlZml4PSR7U1RBR0lOR19MSUJESVJ9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgtbGliZ21wLXByZWZpeD0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRoLWxpYmx0ZGwtcHJlZml4PSR7U1RBR0lOR19MSUJESVJ9IgotRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLXVjbGliYyA9ICIgZ3VpbGVfY3ZfdXNlX2NzcXJ0PW5vICIKLQotQ0ZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1ESEFWRV9HQ19TRVRfRklOQUxJWkVSX05PVElGSUVSIFwKLQkgICAgICAgICAgICAgICAgICAgIC1ESEFWRV9HQ19HRVRfSEVBUF9VU0FHRV9TQUZFIFwKLQkgICAgICAgICAgICAgICAgICAgIC1ESEFWRV9HQ19HRVRfRlJFRV9TUEFDRV9ESVZJU09SIFwKLQkgICAgICAgICAgICAgICAgICAgIC1ESEFWRV9HQ19TRVRfRklOQUxJWkVfT05fREVNQU5EIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0JbWtkaXIgLXAgcG8KLX0KLQotZXhwb3J0IEdVSUxFX0ZPUl9CVUlMRD0iJHtCVUlMRF9TWVN9LWd1aWxlIgotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0JaW5zdGFsbCAtbSAwNzU1ICAke0R9JHtiaW5kaXJ9L2d1aWxlICR7RH0ke2JpbmRpcn0vJHtIT1NUX1NZU30tZ3VpbGUKLQotCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2d1aWxlIFwKLQkJR1VJTEVfTE9BRF9QQVRIPSR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ3VpbGUvMi4wIFwKLQkJR1VJTEVfTE9BRF9DT01QSUxFRF9QQVRIPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9ndWlsZS8yLjAvY2NhY2hlCi0JY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS8ke0hPU1RfU1lTfS1ndWlsZSBcCi0JCUdVSUxFX0xPQURfUEFUSD0ke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2d1aWxlLzIuMCBcCi0JCUdVSUxFX0xPQURfQ09NUElMRURfUEFUSD0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ3VpbGUvMi4wL2NjYWNoZQotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0JIyBjbGVhbnVwIGJ1aWxkcGF0aHMgaW4gc2NyaXB0cwotCXNlZCAtaSAtZSAnczoke1NUQUdJTkdfRElSX05BVElWRX06OicgJHtEfSR7YmluZGlyfS9ndWlsZS1jb25maWcKLQlzZWQgLWkgLWUgJ3M6JHtTVEFHSU5HX0RJUl9IT1NUfTo6JyAke0R9JHtiaW5kaXJ9L2d1aWxlLXNuYXJmCi0KLQlzZWQgLWkgLWUgJ3M6JHtTVEFHSU5HX0RJUl9UQVJHRVR9OjpnJyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9ndWlsZS0yLjAucGMKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfbGliYy1tdXNsKCkgewotCXJtIC1mICR7RH0ke2xpYmRpcn0vY2hhcnNldC5hbGlhcwotfQotCi1TWVNST09UX1BSRVBST0NFU1NfRlVOQ1MgPSAiZ3VpbGVfY3Jvc3NfY29uZmlnIgotCi1ndWlsZV9jcm9zc19jb25maWcoKSB7Ci0JIyB0aGlzIGlzIG9ubHkgZm9yIHRhcmdldCByZWNpcGUKLQlpZiBbICIke1BOfSIgPSAiZ3VpbGUiIF0KLQl0aGVuCi0JICAgICAgICAjIENyZWF0ZSBndWlsZS1jb25maWcgcmV0dXJuaW5nIHRhcmdldCB2YWx1ZXMgaW5zdGVhZCBvZiBuYXRpdmUgdmFsdWVzCi0JICAgICAgICBpbnN0YWxsIC1kICR7U1lTUk9PVF9ERVNURElSfSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9Ci0gICAgICAgIAllY2hvICcjISdgd2hpY2ggJHtCVUlMRF9TWVN9LWd1aWxlYCQnIFxcXG4tLW5vLWF1dG8tY29tcGlsZSAtZSBtYWluIC1zXG4hI1xuKGRlZmluZSAlZ3VpbGUtYnVpbGQtaW5mbyAnXCdcKCBcCi0JCQk+ICR7Qn0vZ3VpbGUtY29uZmlnLmNyb3NzCi0JICAgICAgICBzZWQgLW4gLWUgJ3M6XlsgXHRdKntbIFx0XSoiOiAgKDonIFwKLQkJCS1lICdzOiIsWyBcdF0qIjogLiAiOicgXAotCQkJLWUgJ3M6IiAqfSwgKlxcOiIpOicgXAotCQkJLWUgJ3M6Xi4qY2FjaGVkaXIuKiQ6OicgXAotCQkJLWUgJy9eICAoL3AnIFwKLQkJCTwgJHtCfS9saWJndWlsZS9saWJwYXRoLmggPj4gJHtCfS9ndWlsZS1jb25maWcuY3Jvc3MKLQkgICAgICAgIGVjaG8gJykpJyA+PiAke0J9L2d1aWxlLWNvbmZpZy5jcm9zcwotCSAgICAgICAgY2F0ICR7Qn0vbWV0YS9ndWlsZS1jb25maWcgPj4gJHtCfS9ndWlsZS1jb25maWcuY3Jvc3MKLQkgICAgICAgIGluc3RhbGwgJHtCfS9ndWlsZS1jb25maWcuY3Jvc3MgJHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vZ3VpbGUtY29uZmlnCi0JZmkKLX0KLQotIyBHdWlsZSBuZWVkcyB0aGUgY29tcGlsZWQgZmlsZXMgdG8gYmUgbmV3ZXIgdGhhbiB0aGUgc291cmNlLCBhbmQgaXQgd29uJ3QKLSMgYXV0by1jb21waWxlIGludG8gdGhlIHByZWZpeCBldmVuIGlmIGl0IGNhbiB3cml0ZSB0aGVyZSwgc28gdG91Y2ggdGhlbSBoZXJlIGFzCi0jIHN5c3Jvb3QgaXMgbWFuYWdlZC4KLVNTVEFURVBPU1RJTlNURlVOQ1MgKz0gImd1aWxlX3NzdGF0ZV9wb3N0aW5zdCIKLWd1aWxlX3NzdGF0ZV9wb3N0aW5zdCgpIHsKLQlpZiBbICIke0JCX0NVUlJFTlRUQVNLfSIgPSAicG9wdWxhdGVfc3lzcm9vdCIgLW8gIiR7QkJfQ1VSUkVOVFRBU0t9IiA9ICJwb3B1bGF0ZV9zeXNyb290X3NldHNjZW5lIiBdCi0JdGhlbgotICAgICAgICAgICAgICAgIGZpbmQgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7bGliZGlyfS9ndWlsZS8yLjAvY2NhY2hlIC10eXBlIGYgfCB4YXJncyB0b3VjaAotCWZpCi19Ci0KLSMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzIwNDkxLwotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZ3VpbGVfMi4wLjEyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9ndWlsZV8yLjAuMTIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJmZTUxMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZ3VpbGVfMi4wLjEyLmJiCkBAIC0wLDAgKzEsMTIxIEBACitTVU1NQVJZID0gIkd1aWxlIGlzIHRoZSBHTlUgVWJpcXVpdG91cyBJbnRlbGxpZ2VudCBMYW5ndWFnZSBmb3IgRXh0ZW5zaW9ucyIKK0RFU0NSSVBUSU9OID0gIkd1aWxlIGlzIHRoZSBHTlUgVWJpcXVpdG91cyBJbnRlbGxpZ2VudCBMYW5ndWFnZSBmb3IgRXh0ZW5zaW9ucyxcCisgdGhlIG9mZmljaWFsIGV4dGVuc2lvbiBsYW5ndWFnZSBmb3IgdGhlIEdOVSBvcGVyYXRpbmcgc3lzdGVtLlwKKyBHdWlsZSBpcyBhIGxpYnJhcnkgZGVzaWduZWQgdG8gaGVscCBwcm9ncmFtbWVycyBjcmVhdGUgZmxleGlibGUgYXBwbGljYXRpb25zLlwKKyBVc2luZyBHdWlsZSBpbiBhbiBhcHBsaWNhdGlvbiBhbGxvd3MgdGhlIGFwcGxpY2F0aW9uJ3MgZnVuY3Rpb25hbGl0eSB0byBiZVwKKyBleHRlbmRlZCBieSB1c2VycyBvciBvdGhlciBwcm9ncmFtbWVycyB3aXRoIHBsdWctaW5zLCBtb2R1bGVzLCBvciBzY3JpcHRzLlwKKyBHdWlsZSBwcm92aWRlcyB3aGF0IG1pZ2h0IGJlIGRlc2NyaWJlZCBhcyAncHJhY3RpY2FsIHNvZnR3YXJlIGZyZWVkb20sJ1wKKyBtYWtpbmcgaXQgcG9zc2libGUgZm9yIHVzZXJzIHRvIGN1c3RvbWl6ZSBhbiBhcHBsaWNhdGlvbiB0byBtZWV0IHRoZWlyXAorIG5lZWRzIHdpdGhvdXQgZGlnZ2luZyBpbnRvIHRoZSBhcHBsaWNhdGlvbidzIGludGVybmFscy4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9ndWlsZS8iCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ3VpbGUvZ3VpbGUtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi8wMDAyLU1hcmstVW51c2VkLW1vZHVsZXMtYXJlLXJlbW92ZWQtZ2MtdGVzdC1hcy11bnJlc29sdmUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDMtTWFyay1tdXRleC13aXRoLW93bmVyLW5vdC1yZXRhaW5lZC10aHJlYWRzLXRlc3QtYXMtdS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVuc3VzZS9ndWlsZS02NGJpdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ndWlsZV8yLjAuNl9maXhfc2VkX2Vycm9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2FybV9lbmRpYW5uZXNzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2FybV9hYXJjaDY0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3dvcmthcm91bmQtaWNlLXNzYS1jb3JydXB0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2xpYmd1aWxlLU1ha2VmaWxlLmFtLWhvb2sucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1SZWNvZ25pemUtbmlvczItYXMtY29tcGlsYXRpb24tdGFyZ2V0LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMDgxZmRmODBjZDNhNzZmMjYwYTJhMGQ4N2Y3NzNkNmIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGU4MTg3NzM2ZjliMjYwZjJmYTc3NmVkMzliNTJjYjc0ZGQzODljY2Y3MDM5YzA0MmYwNjA2MjcwMTk2YjdlOSIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgdGV4aW5mbworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK0RFUEVORFMgPSAibGlidW5pc3RyaW5nIGJkd2djIGdtcCBsaWJ0b29sIGxpYmZmaSBuY3Vyc2VzIHJlYWRsaW5lIgorIyBhZGQgZ3VpbGUtbmF0aXZlIG9ubHkgdG8gdGhlIHRhcmdldCByZWNpcGUncyBERVBFTkRTCitERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGd1aWxlLW5hdGl2ZSBsaWJhdG9taWMtb3BzIgorCisjIFRoZSBjb21tZW50IG9mIHRoZSBzY3JpcHQgZ3VpbGUtY29uZmlnIHNhaWQgaXQgaGFzIGJlZW4gZGVwcmVjYXRlZCBidXQgd2Ugc2hvdWxkCisjIGF0IGxlYXN0IGFkZCB0aGUgcmVxdWlyZWQgZGVwZW5kZW5jeSB0byBtYWtlIGl0IHdvcmsgc2luY2Ugd2Ugc3RpbGwgcHJvdmlkZSB0aGUgc2NyaXB0LgorUkRFUEVORFNfJHtQTn0gPSAicGtnY29uZmlnIgorCitSREVQRU5EU18ke1BOfV9hcHBlbmRfbGliYy1nbGliY19jbGFzcy10YXJnZXQgPSAiIGdsaWJjLWdjb252LWlzbzg4NTktMSIKKworRVhUUkFfT0VDT05GICs9ICIke0BbJy0td2l0aG91dC1saWJsdGRsLXByZWZpeCAtLXdpdGhvdXQtbGliZ21wLXByZWZpeCAtLXdpdGhvdXQtbGlicmVhZGxpbmUtcHJlZml4JywgJyddW2JiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ25hdGl2ZScsZCldfSIKKworRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIC0td2l0aC1saWJ1bmlzdHJpbmctcHJlZml4PSR7U1RBR0lOR19MSUJESVJ9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgtbGliZ21wLXByZWZpeD0ke1NUQUdJTkdfTElCRElSfSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRoLWxpYmx0ZGwtcHJlZml4PSR7U1RBR0lOR19MSUJESVJ9IgorRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLXVjbGliYyA9ICIgZ3VpbGVfY3ZfdXNlX2NzcXJ0PW5vICIKKworQ0ZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1ESEFWRV9HQ19TRVRfRklOQUxJWkVSX05PVElGSUVSIFwKKwkgICAgICAgICAgICAgICAgICAgIC1ESEFWRV9HQ19HRVRfSEVBUF9VU0FHRV9TQUZFIFwKKwkgICAgICAgICAgICAgICAgICAgIC1ESEFWRV9HQ19HRVRfRlJFRV9TUEFDRV9ESVZJU09SIFwKKwkgICAgICAgICAgICAgICAgICAgIC1ESEFWRV9HQ19TRVRfRklOQUxJWkVfT05fREVNQU5EIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisJbWtkaXIgLXAgcG8KK30KKworZXhwb3J0IEdVSUxFX0ZPUl9CVUlMRD0iJHtCVUlMRF9TWVN9LWd1aWxlIgorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisJaW5zdGFsbCAtbSAwNzU1ICAke0R9JHtiaW5kaXJ9L2d1aWxlICR7RH0ke2JpbmRpcn0vJHtIT1NUX1NZU30tZ3VpbGUKKworCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2d1aWxlIFwKKwkJR1VJTEVfTE9BRF9QQVRIPSR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ3VpbGUvMi4wIFwKKwkJR1VJTEVfTE9BRF9DT01QSUxFRF9QQVRIPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9ndWlsZS8yLjAvY2NhY2hlCisJY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS8ke0hPU1RfU1lTfS1ndWlsZSBcCisJCUdVSUxFX0xPQURfUEFUSD0ke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2d1aWxlLzIuMCBcCisJCUdVSUxFX0xPQURfQ09NUElMRURfUEFUSD0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ3VpbGUvMi4wL2NjYWNoZQorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CisJIyBjbGVhbnVwIGJ1aWxkcGF0aHMgaW4gc2NyaXB0cworCXNlZCAtaSAtZSAnczoke1NUQUdJTkdfRElSX05BVElWRX06OicgJHtEfSR7YmluZGlyfS9ndWlsZS1jb25maWcKKwlzZWQgLWkgLWUgJ3M6JHtTVEFHSU5HX0RJUl9IT1NUfTo6JyAke0R9JHtiaW5kaXJ9L2d1aWxlLXNuYXJmCisKKwlzZWQgLWkgLWUgJ3M6JHtTVEFHSU5HX0RJUl9UQVJHRVR9OjpnJyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9ndWlsZS0yLjAucGMKK30KKworZG9faW5zdGFsbF9hcHBlbmRfbGliYy1tdXNsKCkgeworCXJtIC1mICR7RH0ke2xpYmRpcn0vY2hhcnNldC5hbGlhcworfQorCitTWVNST09UX1BSRVBST0NFU1NfRlVOQ1MgPSAiZ3VpbGVfY3Jvc3NfY29uZmlnIgorCitndWlsZV9jcm9zc19jb25maWcoKSB7CisJIyB0aGlzIGlzIG9ubHkgZm9yIHRhcmdldCByZWNpcGUKKwlpZiBbICIke1BOfSIgPSAiZ3VpbGUiIF0KKwl0aGVuCisJICAgICAgICAjIENyZWF0ZSBndWlsZS1jb25maWcgcmV0dXJuaW5nIHRhcmdldCB2YWx1ZXMgaW5zdGVhZCBvZiBuYXRpdmUgdmFsdWVzCisJICAgICAgICBpbnN0YWxsIC1kICR7U1lTUk9PVF9ERVNURElSfSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9CisgICAgICAgIAllY2hvICcjISdgd2hpY2ggJHtCVUlMRF9TWVN9LWd1aWxlYCQnIFxcXG4tLW5vLWF1dG8tY29tcGlsZSAtZSBtYWluIC1zXG4hI1xuKGRlZmluZSAlZ3VpbGUtYnVpbGQtaW5mbyAnXCdcKCBcCisJCQk+ICR7Qn0vZ3VpbGUtY29uZmlnLmNyb3NzCisJICAgICAgICBzZWQgLW4gLWUgJ3M6XlsgXHRdKntbIFx0XSoiOiAgKDonIFwKKwkJCS1lICdzOiIsWyBcdF0qIjogLiAiOicgXAorCQkJLWUgJ3M6IiAqfSwgKlxcOiIpOicgXAorCQkJLWUgJ3M6Xi4qY2FjaGVkaXIuKiQ6OicgXAorCQkJLWUgJy9eICAoL3AnIFwKKwkJCTwgJHtCfS9saWJndWlsZS9saWJwYXRoLmggPj4gJHtCfS9ndWlsZS1jb25maWcuY3Jvc3MKKwkgICAgICAgIGVjaG8gJykpJyA+PiAke0J9L2d1aWxlLWNvbmZpZy5jcm9zcworCSAgICAgICAgY2F0ICR7Qn0vbWV0YS9ndWlsZS1jb25maWcgPj4gJHtCfS9ndWlsZS1jb25maWcuY3Jvc3MKKwkgICAgICAgIGluc3RhbGwgJHtCfS9ndWlsZS1jb25maWcuY3Jvc3MgJHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vZ3VpbGUtY29uZmlnCisJZmkKK30KKworIyBHdWlsZSBuZWVkcyB0aGUgY29tcGlsZWQgZmlsZXMgdG8gYmUgbmV3ZXIgdGhhbiB0aGUgc291cmNlLCBhbmQgaXQgd29uJ3QKKyMgYXV0by1jb21waWxlIGludG8gdGhlIHByZWZpeCBldmVuIGlmIGl0IGNhbiB3cml0ZSB0aGVyZSwgc28gdG91Y2ggdGhlbSBoZXJlIGFzCisjIHN5c3Jvb3QgaXMgbWFuYWdlZC4KK1NTVEFURVBPU1RJTlNURlVOQ1MgKz0gImd1aWxlX3NzdGF0ZV9wb3N0aW5zdCIKK2d1aWxlX3NzdGF0ZV9wb3N0aW5zdCgpIHsKKwlpZiBbICIke0JCX0NVUlJFTlRUQVNLfSIgPSAicG9wdWxhdGVfc3lzcm9vdCIgLW8gIiR7QkJfQ1VSUkVOVFRBU0t9IiA9ICJwb3B1bGF0ZV9zeXNyb290X3NldHNjZW5lIiBdCisJdGhlbgorICAgICAgICAgICAgICAgIGZpbmQgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7bGliZGlyfS9ndWlsZS8yLjAvY2NhY2hlIC10eXBlIGYgfCB4YXJncyB0b3VjaAorCWZpCit9CisKKyMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzIwNDkxLworQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaGVscDJtYW4vaGVscDJtYW4tbmF0aXZlXzEuNDcuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaGVscDJtYW4vaGVscDJtYW4tbmF0aXZlXzEuNDcuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjMyYjBjMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2hlbHAybWFuL2hlbHAybWFuLW5hdGl2ZV8xLjQ3LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIlByb2dyYW0gZm9yIGNyZWF0aW5nIHNpbXBsZSBtYW4gcGFnZXMiCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotREVQRU5EUyA9ICJhdXRvY29uZi1uYXRpdmUgYXV0b21ha2UtbmF0aXZlIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIueHoiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkMWQ0NGE3YTdiMmJkNjE3NTVhMjA0NWQ5NmVjYWVhMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjMjMyYWY2NDc1ZWY2NWJlZTAyNzcwODYyYTM2MmY0YzRjMmU2Yzk5NjdkMzllOTg3ZWI5NGNhZGNmYzEzODU2IgotCi1pbmhlcml0IGF1dG90b29scyBuYXRpdmUKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1ubHMiCi0KLSMgV2UgZG9uJ3Qgd2FudCB0byByZWNvbmZpZ3VyZSB0aGluZ3MgYXMgaXQgd291bGQgcmVxdWlyZSAncGVybG5hdGl2ZScgdG8gYmUKLSMgdXNlZC4KLWRvX2NvbmZpZ3VyZSgpIHsKLQlvZV9ydW5jb25mCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQkjIE1ha2Ugc3VyZSB3ZSB1c2UgL3Vzci9iaW4vZW52IHBlcmwKLQlzZWQgLWkgLWUgIjFzOiMhLio6IyEgL3Vzci9iaW4vZW52IHBlcmw6IiAke0R9JHtiaW5kaXJ9L2hlbHAybWFuCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2hlbHAybWFuL2hlbHAybWFuLW5hdGl2ZV8xLjQ3LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2hlbHAybWFuL2hlbHAybWFuLW5hdGl2ZV8xLjQ3LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjRkYzMyYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaGVscDJtYW4vaGVscDJtYW4tbmF0aXZlXzEuNDcuNC5iYgpAQCAtMCwwICsxLDI1IEBACitTVU1NQVJZID0gIlByb2dyYW0gZm9yIGNyZWF0aW5nIHNpbXBsZSBtYW4gcGFnZXMiCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorREVQRU5EUyA9ICJhdXRvY29uZi1uYXRpdmUgYXV0b21ha2UtbmF0aXZlIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIueHoiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1NDRhY2E0OTZhN2Q4OWRlM2U1ZDk5ZTU2YTJmMDNkMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkNGVjZjY5N2QxM2YxNGRkMWE3OGM1OTk1ZjA2NDU5YmZmNzA2ZmQxY2U1OTNkMWMwMmQ4MTY2N2MwMjA3NzUzIgorCitpbmhlcml0IGF1dG90b29scyBuYXRpdmUKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1ubHMiCisKKyMgV2UgZG9uJ3Qgd2FudCB0byByZWNvbmZpZ3VyZSB0aGluZ3MgYXMgaXQgd291bGQgcmVxdWlyZSAncGVybG5hdGl2ZScgdG8gYmUKKyMgdXNlZC4KK2RvX2NvbmZpZ3VyZSgpIHsKKwlvZV9ydW5jb25mCit9CisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwkjIE1ha2Ugc3VyZSB3ZSB1c2UgL3Vzci9iaW4vZW52IHBlcmwKKwlzZWQgLWkgLWUgIjFzOiMhLio6IyEgL3Vzci9iaW4vZW52IHBlcmw6IiAke0R9JHtiaW5kaXJ9L2hlbHAybWFuCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ludGx0b29sL2ludGx0b29sLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaW50bHRvb2wvaW50bHRvb2wuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjdhZTAwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaW50bHRvb2wvaW50bHRvb2wuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotU1VNTUFSWSA9ICJVdGlsaXR5IHNjcmlwdHMgZm9yIGludGVybmF0aW9uYWxpemluZyBYTUwiCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJHUEx2MiIKLQotVVJMVj0iJHtAJy4nLmpvaW4oZC5nZXRWYXIoJ1BWJywxKS5zcGxpdCgnLicpWzA6Ml0pfSIKLVNSQ19VUkkgPSAiaHR0cDovL2xhdW5jaHBhZC5uZXQvJHtCUE59L3RydW5rLyR7UFZ9Lytkb3dubG9hZC8ke0JQfS50YXIuZ3oiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2xhdW5jaHBhZC5uZXQvaW50bHRvb2wvdHJ1bmsvIgotCi1TID0gIiR7V09SS0RJUn0vaW50bHRvb2wtJHtQVn0iCi0KLURFUEVORFMgPSAibGlieG1sLXBhcnNlci1wZXJsLW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59ID0gImdldHRleHQtZGV2IGxpYnhtbC1wYXJzZXItcGVybCIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gImxpYnhtbC1wYXJzZXItcGVybC1uYXRpdmUiCi0jIGdldHRleHQgaXMgYXNzdW1lZCB0byBleGlzdCBvbiB0aGUgaG9zdAotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gImxpYnhtbC1wYXJzZXItcGVybC1uYXRpdmUiCi1SUkVDT01NRU5EU18ke1BOfSA9ICJwZXJsLW1vZHVsZXMiCi1SUkVDT01NRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgotCi1GSUxFU18ke1BOfS1kZXYgPSAiIgotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vYWNsb2NhbCIKLQotSU5TQU5FX1NLSVBfJHtQTn0gKz0gImRldi1kZXBzIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcGVybG5hdGl2ZQotCi1leHBvcnQgUEVSTCA9ICIke2JpbmRpcn0vZW52IHBlcmwiCi1QRVJMX2NsYXNzLW5hdGl2ZSA9ICIvdXNyL2Jpbi9lbnYgbmF0aXZlcGVybCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ludGx0b29sL2ludGx0b29sL3JlbW92ZS1wZXJsLWNoZWNrLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pbnRsdG9vbC9pbnRsdG9vbC9yZW1vdmUtcGVybC1jaGVjay5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjU3ZWEzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pbnRsdG9vbC9pbnRsdG9vbC9yZW1vdmUtcGVybC1jaGVjay5wYXRjaApAQCAtMCwwICsxLDQ1IEBACitSZW1vdmUgdGhlIHBlcmwgY2hlY2tzIGluIGludGx0b29sLm00LiAgVGhpcyBjYW4gZmluZCBhIGRpZmZlcmVudCBwZXJsIGJpbmFyeSB0bwordGhlIG9uZSB0aGF0IHRoZSBpbnRsdG9vbCBzY3JpcHRzIHdpbGwgYWN0dWFsbHkgYmUgdXNpbmcgKGFzIHRoZXkgaGFyZC1jb2RlIGEKK3NwZWNpZmljIGJpbmFyeSksIGZvciBleGFtcGxlIGluIHRoZSBpbnRsdG9vbC1uYXRpdmUgY2FzZSB0aGV5J2xsIGJlIHVzaW5nCituYXRpdmVwZXJsIHlldCB0aGlzIGZyYWdtZW50IGNhbiBmaW5kIGFuZCB0ZXN0IHRoZSBob3N0IHBlcmwuCisKK1RoaXMgY2FuIHJlc3VsdCBpbiByZWNpcGVzIGZhaWxpbmcgaW4gZG9fY29uZmlndXJlIGFzIGludGx0b29sLm00IGZpbmRzIGEgaG9zdAorcGVybCB3aGljaCBkb2Vzbid0IGhhdmUgWE1MOjpQYXJzZXIgaW5zdGFsbGVkLCBkZXNwaXRlIHRoZSBmYWN0IHRoYXQgaW50bHRvb2wKK3dpbGwgd29yayBmaW5lIGFzIG5hdGl2ZXBlcmwgaGFzIFhNTDo6UGFyc2VyLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCAoaHR0cHM6Ly9idWdzLmxhdW5jaHBhZC5uZXQvaW50bHRvb2wvK2J1Zy8xMTk3ODc1KQorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworLS0tIGEvaW50bHRvb2wubTQub3JpZwkyMDEzLTA3LTAyIDExOjIyOjIzLjAwMDAwMDAwMCAtMDcwMAorKysrIGIvaW50bHRvb2wubTQJMjAxMy0wNy0wMiAxMToyMjozMi4wMDAwMDAwMDAgLTA3MDAKK0BAIC0yNiwxICsyNiwxIEBAIGRubCBJVF9QUk9HX0lOVExUT09MKFtNSU5JTVVNLVZFUlNJT05dLCBbbm8teG1sXSkKKy0jIHNlcmlhbCA0MiBJVF9QUk9HX0lOVExUT09MCisrIyBzZXJpYWwgNDIuMSBJVF9QUk9HX0lOVExUT09MCitAQCAtMTMxLDI3ICsxMzEsNiBAQCBpZiB0ZXN0IC16ICIkeGd2ZXJzaW9uIiAtbyAteiAiJG1tdmVyc2lvCisgICAgIEFDX01TR19FUlJPUihbR05VIGdldHRleHQgdG9vbHMgbm90IGZvdW5kOyByZXF1aXJlZCBmb3IgaW50bHRvb2xdKQorIGZpCisgCistQUNfUEFUSF9QUk9HKElOVExUT09MX1BFUkwsIHBlcmwpCistaWYgdGVzdCAteiAiJElOVExUT09MX1BFUkwiOyB0aGVuCistICAgQUNfTVNHX0VSUk9SKFtwZXJsIG5vdCBmb3VuZF0pCistZmkKKy1BQ19NU0dfQ0hFQ0tJTkcoW2ZvciBwZXJsID49IDUuOC4xXSkKKy0kSU5UTFRPT0xfUEVSTCAtZSAidXNlIDUuOC4xOyIgPiAvZGV2L251bGwgMj4mMQorLWlmIHRlc3QgJD8gLW5lIDA7IHRoZW4KKy0gICBBQ19NU0dfRVJST1IoW3BlcmwgNS44LjEgaXMgcmVxdWlyZWQgZm9yIGludGx0b29sXSkKKy1lbHNlCistICAgSVRfUEVSTF9WRVJTSU9OPWAkSU5UTFRPT0xfUEVSTCAtZSAicHJpbnRmICcldmQnLCAkXlYiYAorLSAgIEFDX01TR19SRVNVTFQoWyRJVF9QRVJMX1ZFUlNJT05dKQorLWZpCistaWYgdGVzdCAieCQyIiAhPSAieG5vLXhtbCI7IHRoZW4KKy0gICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBYTUw6OlBhcnNlcl0pCistICAgaWYgYCRJTlRMVE9PTF9QRVJMIC1lICJyZXF1aXJlIFhNTDo6UGFyc2VyIiAyPi9kZXYvbnVsbGA7IHRoZW4KKy0gICAgICAgQUNfTVNHX1JFU1VMVChbb2tdKQorLSAgIGVsc2UKKy0gICAgICAgQUNfTVNHX0VSUk9SKFtYTUw6OlBhcnNlciBwZXJsIG1vZHVsZSBpcyByZXF1aXJlZCBmb3IgaW50bHRvb2xdKQorLSAgIGZpCistZmkKKy0KKyAjIFN1YnN0aXR1dGUgQUxMX0xJTkdVQVMgc28gd2UgY2FuIHVzZSBpdCBpbiBwby9NYWtlZmlsZQorIEFDX1NVQlNUKEFMTF9MSU5HVUFTKQorIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pbnRsdG9vbC9pbnRsdG9vbC9yZW1vdmUteG1sLWNoZWNrLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pbnRsdG9vbC9pbnRsdG9vbC9yZW1vdmUteG1sLWNoZWNrLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzY5ZTM3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaW50bHRvb2wvaW50bHRvb2wvcmVtb3ZlLXhtbC1jaGVjay5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVNpZ25lZC1vZmYtYnk6IEZsb3JpbiBTYXJidSA8ZmxvcmluLnNhcmJ1QHdpbmRyaXZlci5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLUluZGV4OiBpbnRsdG9vbC0wLjQwLjYvaW50bHRvb2wubTQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBpbnRsdG9vbC0wLjQwLjYub3JpZy9pbnRsdG9vbC5tNAkyMDA5LTAyLTE0IDE0OjEyOjI4LjAwMDAwMDAwMCAtMDgwMAotKysrIGludGx0b29sLTAuNDAuNi9pbnRsdG9vbC5tNAkyMDExLTExLTIzIDE1OjM5OjM0LjY4OTU2MTg3MiAtMDgwMAotQEAgLTEyMiwxNCArMTIyLDE2IEBACi0gICAgSVRfUEVSTF9WRVJTSU9OPSJgJElOVExUT09MX1BFUkwgLWUgXCJwcmludGYgJyV2ZCcsICReVlwiYCIKLSAgICBBQ19NU0dfUkVTVUxUKFskSVRfUEVSTF9WRVJTSU9OXSkKLSBmaQotLWlmIHRlc3QgIngkMiIgIT0gInhuby14bWwiOyB0aGVuCi0tICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgWE1MOjpQYXJzZXJdKQotLSAgIGlmIGAkSU5UTFRPT0xfUEVSTCAtZSAicmVxdWlyZSBYTUw6OlBhcnNlciIgMj4vZGV2L251bGxgOyB0aGVuCi0tICAgICAgIEFDX01TR19SRVNVTFQoW29rXSkKLS0gICBlbHNlCi0tICAgICAgIEFDX01TR19FUlJPUihbWE1MOjpQYXJzZXIgcGVybCBtb2R1bGUgaXMgcmVxdWlyZWQgZm9yIGludGx0b29sXSkKLS0gICBmaQotLWZpCi0rCi0rIyBEaXNhYmxlIHRoaXMgY2hlY2sgc2luY2Ugd2Uga25vdyBYTUw6OlBhcnNlciBpcyBpbnN0YWxsZWQKLSsjaWYgdGVzdCAieCQyIiAhPSAieG5vLXhtbCI7IHRoZW4KLSsjICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgWE1MOjpQYXJzZXJdKQotKyMgICBpZiBgJElOVExUT09MX1BFUkwgLWUgInJlcXVpcmUgWE1MOjpQYXJzZXIiIDI+L2Rldi9udWxsYDsgdGhlbgotKyMgICAgICAgQUNfTVNHX1JFU1VMVChbb2tdKQotKyMgICBlbHNlCi0rIyAgICAgICBBQ19NU0dfRVJST1IoW1hNTDo6UGFyc2VyIHBlcmwgbW9kdWxlIGlzIHJlcXVpcmVkIGZvciBpbnRsdG9vbF0pCi0rIyAgIGZpCi0rI2ZpCi0gCi0gIyBTdWJzdGl0dXRlIEFMTF9MSU5HVUFTIHNvIHdlIGNhbiB1c2UgaXQgaW4gcG8vTWFrZWZpbGUKLSBBQ19TVUJTVChBTExfTElOR1VBUykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaW50bHRvb2wvaW50bHRvb2wvdXNlLW5hdGl2ZXBlcmwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ludGx0b29sL2ludGx0b29sL3VzZS1uYXRpdmVwZXJsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZjVmZWQzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaW50bHRvb2wvaW50bHRvb2wvdXNlLW5hdGl2ZXBlcmwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1PRSBoYXMgcGVybCBiaW5hcnkgYXMgJ25hdGl2ZXBlcmwnIGluIG5hdGl2ZSBzeXNyb290IHNvIHdlIGxvb2sgZm9yIGl0Ci1pbiBvcmRlciB0byBhdm9pZCBpbnRsdG9vbCBzZWFyY2hpbmcgYW5kIGZpbmRpbmcgcGVybCBmcm9tIC91c3IvYmluCi1vbiBidWlsZCBzeXN0ZW0gd2hpY2ggbWF5IG5vdCBoYXZlIGFsbCB0aGUgbW9kdWxlcyB0aGF0IGl0IG5lZWRzLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotSW5kZXg6IGludGx0b29sLTAuNDAuNi9pbnRsdG9vbC5tNAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGludGx0b29sLTAuNDAuNi5vcmlnL2ludGx0b29sLm00CTIwMDktMDItMTQgMTQ6MTI6MjguMDAwMDAwMDAwIC0wODAwCi0rKysgaW50bHRvb2wtMC40MC42L2ludGx0b29sLm00CTIwMTEtMDgtMDkgMDg6MDc6MTYuNDI3MzQ3ODQ2IC0wNzAwCi1AQCAtMTEwLDcgKzExMCw3IEBACi0gICAgIEFDX01TR19FUlJPUihbR05VIGdldHRleHQgdG9vbHMgbm90IGZvdW5kOyByZXF1aXJlZCBmb3IgaW50bHRvb2xdKQotIGZpCi0gCi0tQUNfUEFUSF9QUk9HKElOVExUT09MX1BFUkwsIHBlcmwpCi0rQUNfUEFUSF9QUk9HKElOVExUT09MX1BFUkwsIG5hdGl2ZXBlcmwpCi0gaWYgdGVzdCAteiAiJElOVExUT09MX1BFUkwiOyB0aGVuCi0gICAgQUNfTVNHX0VSUk9SKFtwZXJsIG5vdCBmb3VuZF0pCi0gZmkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaW50bHRvb2wvaW50bHRvb2xfMC41MS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pbnRsdG9vbC9pbnRsdG9vbF8wLjUxLjAuYmIKaW5kZXggZDUyMGQ0My4uYTdlYTNiNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pbnRsdG9vbC9pbnRsdG9vbF8wLjUxLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pbnRsdG9vbC9pbnRsdG9vbF8wLjUxLjAuYmIKQEAgLTEsMTkgKzEsMzYgQEAKLXJlcXVpcmUgaW50bHRvb2wuaW5jCitTVU1NQVJZID0gIlV0aWxpdHkgc2NyaXB0cyBmb3IgaW50ZXJuYXRpb25hbGl6aW5nIFhNTCIKK1NFQ1RJT04gPSAiZGV2ZWwiCiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCiAKLVNSQ19VUkkgKz0gImZpbGU6Ly9pbnRsdG9vbC1ub3dhcm4ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3BlcmwtNTIyLWRlcHJlY2F0aW9ucy5wYXRjaCBcCi0gICAgICAgICAgICR7TkFUSVZFUEFUQ0hFU30gXAorU1JDX1VSSSA9ICJodHRwOi8vbGF1bmNocGFkLm5ldC8ke0JQTn0vdHJ1bmsvJHtQVn0vK2Rvd25sb2FkLyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9pbnRsdG9vbC1ub3dhcm4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcGVybC01MjItZGVwcmVjYXRpb25zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JlbW92ZS1wZXJsLWNoZWNrLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25vcGVybGNoZWNrLnBhdGNoIFwKICAgICAgICAgICAgIgotCi0jCi0jIEFsbCBvZiB0aGUgaW50bHRvb2wgc2NyaXB0cyBoYXZlIHRoZSBjb3JyZWN0IHBhdGhzIHRvIHBlcmwgYWxyZWFkeQotIyBlbWJlZGRlZCBpbnRvIHRoZW0gYW5kIGNhbiBmaW5kIHBlcmwgZmluZSwgc28gd2UgYWRkIHRoZSByZW1vdmUgeG1sLWNoZWNrCi0jIGluIHRoZSBpbnRsdG9vbC5tNCB2aWEgdGhlIHJlbW92ZS14bWwtY2hlY2sucGF0Y2gKLU5BVElWRVBBVENIRVMgPSAiZmlsZTovL25vcGVybGNoZWNrLnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgZmlsZTovL3JlbW92ZS14bWwtY2hlY2sucGF0Y2giCi1OQVRJVkVQQVRDSEVTX2NsYXNzLW5hdGl2ZSA9ICJmaWxlOi8vdXNlLW5hdGl2ZXBlcmwucGF0Y2giIAotCiBTUkNfVVJJW21kNXN1bV0gPSAiMTJlNTE3Y2FjMmI1N2EwMTIxY2RhMzUxNTcwZjFlNjMiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjdjNzRkOTQxOTZiMTUzYjc3NGFiOWY4OWIyZmE2YzZiYTc5MzUyNDA3MDM3YzhjMTRkNWFlYjMzNGU5NTljZCIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vbGF1bmNocGFkLm5ldC9pbnRsdG9vbC90cnVuay8iCisKK0RFUEVORFMgPSAibGlieG1sLXBhcnNlci1wZXJsLW5hdGl2ZSIKK1JERVBFTkRTXyR7UE59ID0gImdldHRleHQtZGV2IGxpYnhtbC1wYXJzZXItcGVybCIKK0RFUEVORFNfY2xhc3MtbmF0aXZlID0gImxpYnhtbC1wYXJzZXItcGVybC1uYXRpdmUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBwZXJsbmF0aXZlCisKK2V4cG9ydCBQRVJMID0gIiR7YmluZGlyfS9lbnYgcGVybCIKK1BFUkxfY2xhc3MtbmF0aXZlID0gIi91c3IvYmluL2VudiBuYXRpdmVwZXJsIgorCisjIGdldHRleHQgaXMgYXNzdW1lZCB0byBleGlzdCBvbiB0aGUgaG9zdAorUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gImxpYnhtbC1wYXJzZXItcGVybC1uYXRpdmUiCitSUkVDT01NRU5EU18ke1BOfSA9ICJwZXJsLW1vZHVsZXMiCitSUkVDT01NRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgorCitGSUxFU18ke1BOfS1kZXYgPSAiIgorRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vYWNsb2NhbCIKKworSU5TQU5FX1NLSVBfJHtQTn0gKz0gImRldi1kZXBzIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvanNvbi1jL2pzb24tYy8wMDAxLUxpbmstYWdhaW5zdC1saWJtLXdoZW4tbmVlZGVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jLzAwMDEtTGluay1hZ2FpbnN0LWxpYm0td2hlbi1uZWVkZWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmZlOWQ3MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvanNvbi1jL2pzb24tYy8wMDAxLUxpbmstYWdhaW5zdC1saWJtLXdoZW4tbmVlZGVkLnBhdGNoCkBAIC0wLDAgKzEsNTMgQEAKK0Zyb20gOTM1ODJhZDg1ZWY0OGMxOGFjMTJmMDBhOWE5ZTEyNDk4OWIxZmNhYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRob21hcyBQZXRhenpvbmkgPHRob21hcy5wZXRhenpvbmlAZnJlZS1lbGVjdHJvbnMuY29tPgorRGF0ZTogRnJpLCAxIE1heSAyMDE1IDEyOjUyOjE4ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIExpbmsgYWdhaW5zdCBsaWJtIHdoZW4gbmVlZGVkCisKK0luIGNlcnRhaW4gQyBsaWJyYXJpZXMgKGUuZyB1Q2xpYmMpLCBpc25hbigpIGFuZCByZWxhdGVkIGZ1bmN0aW9ucyBhcmUKK2ltcGxlbWVudGVkIGluIGxpYm0sIHNvIGpzb24tYyBuZWVkcyB0byBsaW5rIGFnYWluc3QgaXQuIFRoaXMgY29tbWl0Cit0aGVyZWZvcmUgYWRkcyBhbiBBQ19UUllfTElOSygpIHRlc3QgdG8gY2hlY2sgd2hldGhlciBhIHByb2dyYW0KK2NhbGxpbmcgaXNuYW4oKSBjYW4gYmUgcHJvcGVybHkgbGlua2VkIHdpdGggbm8gc3BlY2lhbCBmbGFncy4gSWYgbm90LAord2UgYXNzdW1lIGxpbmtpbmcgYWdhaW5zdCBsaWJtIGlzIG5lZWRlZC4KKworVGhlIGpzb24tYy5wYy5pbiBmaWxlIGlzIGFsc28gYWRqdXN0ZWQgc28gdGhhdCBpbiB0aGUgY2FzZSBvZiBzdGF0aWMKK2xpbmtpbmcgYWdhaW5zdCBqc29uLWMsIC1sbSBpcyBhbHNvIHVzZWQuCisKK1NpZ25lZC1vZmYtYnk6IFRob21hcyBQZXRhenpvbmkgPHRob21hcy5wZXRhenpvbmlAZnJlZS1lbGVjdHJvbnMuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKKyBjb25maWd1cmUuYWMgfCA0ICsrKysKKyBqc29uLWMucGMuaW4gfCAzICsrLQorIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGM1MGY4MWIuLjMwZTcxNzQgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTUwLDYgKzUwLDEwIEBAIEFDX0NIRUNLX0RFQ0xTKFtpc2luZl0sIFtdLCBbXSwgW1sjaW5jbHVkZSA8bWF0aC5oPl1dKQorIEFDX0NIRUNLX0RFQ0xTKFtfaXNuYW5dLCBbXSwgW10sIFtbI2luY2x1ZGUgPGZsb2F0Lmg+XV0pCisgQUNfQ0hFQ0tfREVDTFMoW19maW5pdGVdLCBbXSwgW10sIFtbI2luY2x1ZGUgPGZsb2F0Lmg+XV0pCisgCisraWYgdGVzdCAiJGFjX2N2X2hhdmVfZGVjbF9pc25hbiIgPSAieWVzIiA7IHRoZW4KKysgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPG1hdGguaD5dLCBbZmxvYXQgZiA9IDAuMDsgcmV0dXJuIGlzbmFuKGYpXSwgW10sIFtMSUJTPSIkTElCUyAtbG0iXSkKKytmaQorKworICNjaGVjayBpZiAuc2VjdGlvbi5nbnUud2FybmluZyBhY2NlcHRzIGxvbmcgc3RyaW5ncyAoZm9yIF9fd2Fybl9yZWZlcmVuY2VzKQorIEFDX0xBTkdfUFVTSChbQ10pCisgCitkaWZmIC0tZ2l0IGEvanNvbi1jLnBjLmluIGIvanNvbi1jLnBjLmluCitpbmRleCAwMzc3MzlkLi4wNWJmYmM4IDEwMDY0NAorLS0tIGEvanNvbi1jLnBjLmluCisrKysgYi9qc29uLWMucGMuaW4KK0BAIC02LDYgKzYsNyBAQCBpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAorIE5hbWU6IGpzb24tYworIERlc2NyaXB0aW9uOiBKU09OIGltcGxlbWVudGF0aW9uIGluIEMKKyBWZXJzaW9uOiBAVkVSU0lPTkAKKy1SZXF1aXJlczogCisrUmVxdWlyZXM6CisrTGlicy5wcml2YXRlOiBATElCU0AKKyBMaWJzOiAgLUwke2xpYmRpcn0gLWxqc29uLWMKKyBDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfS9qc29uLWMKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jXzAuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2pzb24tYy9qc29uLWNfMC4xMi5iYgppbmRleCAxYTVjMzk0Li5hMTU0NTVjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2pzb24tYy9qc29uLWNfMC4xMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2pzb24tYy9qc29uLWNfMC4xMi5iYgpAQCAtNiw2ICs2LDcgQEAKIAogU1JDX1VSSSA9ICJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vanNvbi1jX3JlbGVhc2VzL3JlbGVhc2VzLyR7QlB9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWpzb25fdG9rZW5lci1yZXF1aXJlcy1JTkYtYW5kLU5BTi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUxpbmstYWdhaW5zdC1saWJtLXdoZW4tbmVlZGVkLnBhdGNoIFwKICAgICAgICAgICAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICIzY2E0YmJiODgxZGZjNDAxN2U4MDIxYjVlMGE4YzQ5MSIKQEAgLTI3LDMgKzI4LDUgQEAKICAgICAjIENsZWFuIHVwIGF1dG9jb25mIGNydWZ0IHRoYXQgc2hvdWxkIG5vdCBiZSBpbiB0aGUgdGFyYmFsbAogICAgIHJtIC1mICR7U30vY29uZmlnLnN0YXR1cwogfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2tjb25maWctZnJvbnRlbmRzL2tjb25maWctZnJvbnRlbmRzXzMuMTIuMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9rY29uZmlnLWZyb250ZW5kcy9rY29uZmlnLWZyb250ZW5kc18zLjEyLjAuMC5iYgppbmRleCA0OGEyZjkzLi45YjY1YTk5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2tjb25maWctZnJvbnRlbmRzL2tjb25maWctZnJvbnRlbmRzXzMuMTIuMC4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMva2NvbmZpZy1mcm9udGVuZHMva2NvbmZpZy1mcm9udGVuZHNfMy4xMi4wLjAuYmIKQEAgLTExLDE0ICsxMSwxNCBAQAogTElDRU5TRSA9ICJHUEwtMi4wIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OWI4Y2Y2MGZmMzk3NjdmZjA0YjY3MWZjYTgzMDI0MDgiCiBTRUNUSU9OID0gImRldmVsIgotREVQRU5EUyArPSAibmN1cnNlcyBmbGV4IGJpc29uIGdwZXJmLW5hdGl2ZSBwa2djb25maWctbmF0aXZlIgorREVQRU5EUyArPSAibmN1cnNlcyBmbGV4IGJpc29uIGdwZXJmLW5hdGl2ZSIKIFJERVBFTkRTXyR7UE59ICs9ICJweXRob24gYmFzaCIKIFNSQ19VUkkgPSAiaHR0cDovL3ltb3Jpbi5pcy1hLWdlZWsub3JnL2Rvd25sb2FkLyR7QlBOfS8ke0JQfS50YXIueHoiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICJiOTM5MjgwZGNjODNmOGZlYWJkODdhMWQ1ZjliMDBjMiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJlYTI2MTVhNjJjNzRiZWE2Y2UzYjM4NDAyZjAwYzc1MTM4NThmMzA3ZjZiYTdhYTlmZGJmMGJiYzEyYmNmNDA3IgogCi1pbmhlcml0IGF1dG90b29scworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCiBkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CiAJbWtkaXIgLXAgc2NyaXB0cy8uYXV0b3N0dWZmL200CiB9CkBAIC0zMiw3ICszMiw3IEBACiAKICMgU29tZSBwYWNrYWdlcyBoYXZlIHRoZSB2ZXJzaW9uIHByZWNlZWRpbmcgdGhlIC5zbyBpbnN0ZWFkIHByb3Blcmx5CiAjIHZlcnNpb25lZCAuc28uPHZlcnNpb24+LCBzbyB3ZSBuZWVkIHRvIHJlb3JkZXIgYW5kIHJlcGFja2FnZS4KLVNPTElCUyA9ICItJHtAZC5nZXRWYXIoJ1BWJywxKVs6LTJdfS5zbyIKK1NPTElCUyA9ICItJHtAZC5nZXRWYXIoJ1BWJywgVHJ1ZSlbOi0yXX0uc28iCiBGSUxFU19TT0xJQlNERVYgPSAiJHtsaWJkaXJ9L2xpYmtjb25maWctcGFyc2VyLnNvIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlidG9vbC9saWJ0b29sLWNyb3NzXzIuNC42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJ0b29sL2xpYnRvb2wtY3Jvc3NfMi40LjYuYmIKaW5kZXggMDIwNGQzNC4uYjI2ODMxMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJ0b29sL2xpYnRvb2wtY3Jvc3NfMi40LjYuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJ0b29sL2xpYnRvb2wtY3Jvc3NfMi40LjYuYmIKQEAgLTM1LDExICszNSw2IEBACiAJaW5zdGFsbCAtYyAtbSAwNjQ0ICR7U30vbTQvKi5tNCAke0R9JHt0YXJnZXRfZGF0YWRpcn0vYWNsb2NhbC8KIH0KIAotU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTICs9ICJsaWJ0b29sY3Jvc3Nfc3lzcm9vdF9wcmVwcm9jZXNzIgotCi1saWJ0b29sY3Jvc3Nfc3lzcm9vdF9wcmVwcm9jZXNzICgpIHsKLQlzeXNyb290X3N0YWdlX2RpciAke0R9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfSAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9Ci0Jc3lzcm9vdF9zdGFnZV9kaXIgJHtEfSR7dGFyZ2V0X2RhdGFkaXJ9ICR7U1lTUk9PVF9ERVNURElSfSR7dGFyZ2V0X2RhdGFkaXJ9Ci19CitTWVNST09UX0RJUlMgKz0gIiR7YmluZGlyX2Nyb3Nzc2NyaXB0c30gJHt0YXJnZXRfZGF0YWRpcn0iCiAKIFNTVEFURV9TQ0FOX0ZJTEVTICs9ICJsaWJ0b29saXplICotbGlidG9vbCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlidG9vbC9saWJ0b29sXzIuNC42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJ0b29sL2xpYnRvb2xfMi40LjYuYmIKaW5kZXggMzg1MWVjNy4uODg1OGY2ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJ0b29sL2xpYnRvb2xfMi40LjYuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJ0b29sL2xpYnRvb2xfMi40LjYuYmIKQEAgLTUsNyArNSwxMSBAQAogIwogIyBXZSB3YW50IHRoZSByZXN1bHRzIG9mIGxpYnRvb2wtY3Jvc3MgcHJlc2VydmVkIC0gZG9uJ3Qgc3RhZ2UgYW55dGhpbmcgb3Vyc2VsdmVzLgogIwotU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTICs9ICJsaWJ0b29sX3N5c3Jvb3RfcHJlcHJvY2VzcyIKK1NZU1JPT1RfRElSU19CTEFDS0xJU1QgKz0gIiBcCisgICAgJHtiaW5kaXJ9IFwKKyAgICAke2RhdGFkaXJ9L2FjbG9jYWwgXAorICAgICR7ZGF0YWRpcn0vbGlidG9vbC9idWlsZC1hdXggXAorIgogCiBkb19pbnN0YWxsX2FwcGVuZCAoKSB7CiAgICAgICAgIHNlZCAtZSAnc0AtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfUBAZycgXApAQCAtMTgsMTAgKzIyLDMgQEAKICAgICAgICAgICAgIC1lICdzQF5cKHBvc3RkZXBfb2JqZWN0cz0iXCkuKkBcMSJAJyBcCiAgICAgICAgICAgICAtaSAke0R9JHtiaW5kaXJ9L2xpYnRvb2wKIH0KLQotbGlidG9vbF9zeXNyb290X3ByZXByb2Nlc3MgKCkgewotCXJtIC1yZiAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcn0vKgotCXJtIC1yZiAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9L2FjbG9jYWwvKgotCXJtIC1yZiAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9L2xpYnRvb2wvYnVpbGQtYXV4LyoKLX0KLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saW51eGRvYy10b29scy9saW51eGRvYy10b29scy1uYXRpdmVfMC45LjY5LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saW51eGRvYy10b29scy9saW51eGRvYy10b29scy1uYXRpdmVfMC45LjY5LmJiCmluZGV4IGE4YTkwZmMuLmE1ZGViMmUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGludXhkb2MtdG9vbHMvbGludXhkb2MtdG9vbHMtbmF0aXZlXzAuOS42OS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpbnV4ZG9jLXRvb2xzL2xpbnV4ZG9jLXRvb2xzLW5hdGl2ZV8wLjkuNjkuYmIKQEAgLTUsNyArNSw3IEBACiAKIERFUEVORFMgPSAiZ3JvZmYtbmF0aXZlIG9wZW5qYWRlLW5hdGl2ZSIKIAotU1JDX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vbC9saW51eGRvYy10b29scy9saW51eGRvYy10b29sc18ke1BWfS5vcmlnLnRhci5neiBcCitTUkNfVVJJID0gImh0dHA6Ly9zbmFwc2hvdC5kZWJpYW4ub3JnL2FyY2hpdmUvZGViaWFuLzIwMTYwNzI4VDA0MzQ0M1ovcG9vbC9tYWluL2wvJHtCUE59LyR7QlBOfV8ke1BWfS5vcmlnLnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlX3NnbWwycnRmLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2Rpc2FibGVfdHh0X2RvYy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlX3RleF9kb2MucGF0Y2ggXApAQCAtMTQsNiArMTQsNyBAQAogU1JDX1VSSVttZDVzdW1dID0gIjFkMTNkNTAwOTE4YTdhMTQ1YjBlZGMyZjE2ZjYxZGQxIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcxMDNmYWNlZTE4YTJlYTk3MTg2Y2E0NTlkNzQzZDIyZjdmODlhZDRiNWNkMWRmZDFjMzRmODNkNmJmZDQxMDEiCiAKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vbC9saW51eGRvYy10b29scy8iCiBpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgbmF0aXZlCiAKIGRvX2NvbmZpZ3VyZSAoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS0zLjgxL21ha2VfZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UtMy44MS9tYWtlX2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaAppbmRleCA5YjJlOTY0Li4xMDJmZTc5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS0zLjgxL21ha2VfZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLTMuODEvbWFrZV9maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2gKQEAgLTExLDcgKzExLDcgQEAKIHwgRVJST1I6IGF1dG9yZWNvbmYgZXhlY3V0aW9uIGZhaWxlZC4KIAogCi1TaWduZWQtT2ZmLUJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KIDIwMTIvMDUvMDQKIAogSW5kZXg6IG1ha2UtMy44MS9jb25maWd1cmUuaW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLTQuMS8wMDAxLW1haW4uYy1tYWluLVNWLTQzNDM0LUhhbmRsZS1OVUxMLXJldHVybnMtZnJvbS10dHluYW0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS00LjEvMDAwMS1tYWluLmMtbWFpbi1TVi00MzQzNC1IYW5kbGUtTlVMTC1yZXR1cm5zLWZyb20tdHR5bmFtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YTVmNGJhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLTQuMS8wMDAxLW1haW4uYy1tYWluLVNWLTQzNDM0LUhhbmRsZS1OVUxMLXJldHVybnMtZnJvbS10dHluYW0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi1Gcm9tIDI5MmRhNmY2ODY3Yjc1YTVhZjdkZGJiNjM5YTFmZWFlMDIyZjQzOGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQYXVsIFNtaXRoIDxwc21pdGhAZ251Lm9yZz4KLURhdGU6IE1vbiwgMjAgT2N0IDIwMTQgMDE6NTQ6NTYgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gKiBtYWluLmMgKG1haW4pOiBbU1YgNDM0MzRdIEhhbmRsZSBOVUxMIHJldHVybnMgZnJvbQotIHR0eW5hbWUoKS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1Gcm9tOiBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvY2dpdC9tYWtlLmdpdC9jb21taXQvP2lkPTI5MmRhNmY2ODY3Yjc1YTVhZjdkZGJiNjM5YTFmZWFlMDIyZjQzOGYKLQotLS0tCi0gbWFpbi5jICAgIHwgMTUgKysrKysrKysrKy0tLS0tCi0gbWFrZWludC5oIHwgIDMgKystCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbWFpbi5jIGIvbWFpbi5jCi1pbmRleCBiMmQxNjljLi4wY2RiOGE4IDEwMDY0NAotLS0tIGEvbWFpbi5jCi0rKysgYi9tYWluLmMKLUBAIC0xNDI5LDEzICsxNDI5LDE4IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndiwgY2hhciAqKmVudnApCi0gI2lmZGVmIEhBVkVfSVNBVFRZCi0gICAgIGlmIChpc2F0dHkgKGZpbGVubyAoc3Rkb3V0KSkpCi0gICAgICAgaWYgKCEgbG9va3VwX3ZhcmlhYmxlIChTVFJJTkdfU0laRV9UVVBMRSAoIk1BS0VfVEVSTU9VVCIpKSkKLS0gICAgICAgIGRlZmluZV92YXJpYWJsZV9jbmFtZSAoIk1BS0VfVEVSTU9VVCIsIFRUWU5BTUUgKGZpbGVubyAoc3Rkb3V0KSksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fZGVmYXVsdCwgMCktPmV4cG9ydCA9IHZfZXhwb3J0OwotLQotKyAgICAgICAgewotKyAgICAgICAgICBjb25zdCBjaGFyICp0dHkgPSBUVFlOQU1FIChmaWxlbm8gKHN0ZG91dCkpOwotKyAgICAgICAgICBkZWZpbmVfdmFyaWFibGVfY25hbWUgKCJNQUtFX1RFUk1PVVQiLCB0dHkgPyB0dHkgOiBERUZBVUxUX1RUWU5BTUUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19kZWZhdWx0LCAwKS0+ZXhwb3J0ID0gdl9leHBvcnQ7Ci0rICAgICAgICB9Ci0gICAgIGlmIChpc2F0dHkgKGZpbGVubyAoc3RkZXJyKSkpCi0gICAgICAgaWYgKCEgbG9va3VwX3ZhcmlhYmxlIChTVFJJTkdfU0laRV9UVVBMRSAoIk1BS0VfVEVSTUVSUiIpKSkKLS0gICAgICAgIGRlZmluZV92YXJpYWJsZV9jbmFtZSAoIk1BS0VfVEVSTUVSUiIsIFRUWU5BTUUgKGZpbGVubyAoc3RkZXJyKSksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9fZGVmYXVsdCwgMCktPmV4cG9ydCA9IHZfZXhwb3J0OwotKyAgICAgICAgewotKyAgICAgICAgICBjb25zdCBjaGFyICp0dHkgPSBUVFlOQU1FIChmaWxlbm8gKHN0ZGVycikpOwotKyAgICAgICAgICBkZWZpbmVfdmFyaWFibGVfY25hbWUgKCJNQUtFX1RFUk1FUlIiLCB0dHkgPyB0dHkgOiBERUZBVUxUX1RUWU5BTUUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb19kZWZhdWx0LCAwKS0+ZXhwb3J0ID0gdl9leHBvcnQ7Ci0rICAgICAgICB9Ci0gI2VuZGlmCi0gCi0gICAvKiBSZXNldCBpbiBjYXNlIHRoZSBzd2l0Y2hlcyBjaGFuZ2VkIG91ciBtaW5kcy4gICovCi1kaWZmIC0tZ2l0IGEvbWFrZWludC5oIGIvbWFrZWludC5oCi1pbmRleCA2MjIzOTM2Li4yMDA5ZjQxIDEwMDY0NAotLS0tIGEvbWFrZWludC5oCi0rKysgYi9tYWtlaW50LmgKLUBAIC00MzYsMTAgKzQzNiwxMSBAQCBleHRlcm4gc3RydWN0IHJsaW1pdCBzdGFja19saW1pdDsKLSAvKiBUaGUgbnVtYmVyIG9mIGJ5dGVzIG5lZWRlZCB0byByZXByZXNlbnQgdGhlIGxhcmdlc3QgaW50ZWdlciBhcyBhIHN0cmluZy4gICovCi0gI2RlZmluZSBJTlRTVFJfTEVOR1RIICAgICAgICAgQ1NUUkxFTiAoIjE4NDQ2NzQ0MDczNzA5NTUxNjE2IikKLSAKLSsjZGVmaW5lIERFRkFVTFRfVFRZTkFNRSAidHJ1ZSIKLSAjaWZkZWYgSEFWRV9UVFlOQU1FCi0gIyBkZWZpbmUgVFRZTkFNRShfZikgdHR5bmFtZSAoX2YpCi0gI2Vsc2UKLS0jIGRlZmluZSBUVFlOQU1FKF9mKSAidHJ1ZSIKLSsjIGRlZmluZSBUVFlOQU1FKF9mKSBERUZBVUxUX1RUWU5BTUUKLSAjZW5kaWYKLSAKLSAMCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlXzQuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlXzQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzhmZTBiNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZV80LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1MSUNFTlNFID0gIkdQTHYzICYgTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdGVzdHMvQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2xvYi9DT1BZSU5HLkxJQjttZDU9NGE3NzBiNjdlNmJlMGY2MGRhMjQ0YmViMmRlMGZjZTQiCi1yZXF1aXJlIG1ha2UuaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLW1haW4uYy1tYWluLVNWLTQzNDM0LUhhbmRsZS1OVUxMLXJldHVybnMtZnJvbS10dHluYW0ucGF0Y2giCi0KLUVYVFJBX09FQ09ORiArPSAiLS13aXRob3V0LWd1aWxlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNTdhN2EyMjRhODIyZjk0Nzg5YTU4N2NjYmNlZGZmNjkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGJjNzYxMzM4OTY1MGVlNmEyNDU1NGI1MjU3MmEyNzJmNzM1NjE2NGZkMmM0MTMyYjBiY2YxMzEyM2U0ZmNhNSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2VfNC4yLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZV80LjIuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNmU2YTBjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2VfNC4yLjEuYmIKQEAgLTAsMCArMSwxMiBAQAorTElDRU5TRSA9ICJHUEx2MyAmIExHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dsb2IvQ09QWUlORy5MSUI7bWQ1PTRhNzcwYjY3ZTZiZTBmNjBkYTI0NGJlYjJkZTBmY2U0IgorcmVxdWlyZSBtYWtlLmluYworCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aG91dC1ndWlsZSIKKworU1JDX1VSSVttZDVzdW1dID0gIjE1YjAxMjYxN2U3YzQ0YzBlZDQ4MjcyMTYyOTU3N2FjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ2ZTI2MmJmMzYwMWI0MmQyYjFlNGVmODMxMDAyOWUxZGNmMjAwODNjNTQ0NmI0YjdhYTY3MDgxZmRmZmM1ODkiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZWRldnMvbWFrZWRldnMvbWFrZWRldnMuYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZWRldnMvbWFrZWRldnMvbWFrZWRldnMuYwppbmRleCA3NzFmMzNlLi5jYmE3NjgxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2VkZXZzL21ha2VkZXZzL21ha2VkZXZzLmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlZGV2cy9tYWtlZGV2cy9tYWtlZGV2cy5jCkBAIC0zNjAsNyArMzYwLDcgQEAKIAl1bnNpZ25lZCBsb25nIG1vZGUgPSAwNzU1LCB1aWQgPSAwLCBnaWQgPSAwLCBtYWpvciA9IDAsIG1pbm9yID0gMDsKIAl1bnNpZ25lZCBsb25nIHN0YXJ0ID0gMCwgaW5jcmVtZW50ID0gMSwgY291bnQgPSAwOwogCi0JaWYgKDAgPiBzc2NhbmYobGluZSwgIiU0MHMgJWMgJWxvICU0MHMgJTQwcyAlbHUgJWx1ICVsdSAlbHUgJWx1IiwgcGF0aCwKKwlpZiAoMCA+IHNzY2FuZihsaW5lLCAiJTQwOTVzICVjICVsbyAlNDBzICU0MHMgJWx1ICVsdSAlbHUgJWx1ICVsdSIsIHBhdGgsCiAJCSAgICAmdHlwZSwgJm1vZGUsIHVzcl9idWYsIGdycF9idWYsICZtYWpvciwgJm1pbm9yLCAmc3RhcnQsCiAJCSAgICAmaW5jcmVtZW50LCAmY291bnQpKQogCXsKQEAgLTUxMCw3ICs1MTAsNyBAQAogCXVtYXNrICgwKTsKIAogCWlmIChhcmdjPT0xKSB7Ci0JCWZwcmludGYoc3RkZXJyLCBoZWxwdGV4dCk7CisJCWZwdXRzKCBoZWxwdGV4dCAsIHN0ZGVyciApOwogCQlleGl0KDEpOwogCX0KIApAQCAtNTI1LDcgKzUyNSw3IEBACiAJCQkJZXJyb3JfbXNnX2FuZF9kaWUoIiVzOiBub3QgYSBwcm9wZXIgZGV2aWNlIHRhYmxlIGZpbGUiLCBvcHRhcmcpOwogCQkJYnJlYWs7CiAJCWNhc2UgJ2gnOgotCQkJcHJpbnRmKGhlbHB0ZXh0KTsKKwkJCXB1dHMoaGVscHRleHQpOwogCQkJZXhpdCgwKTsKIAkJY2FzZSAncic6CiAJCWNhc2UgJ2QnOgkJCQkvKiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG1rZnMuamZmcywgZ2VuZXh0MmZzLCBldGMuLi4gKi8KQEAgLTU1MywxMyArNTUzLDEzIEBACiAJCQlwcmludGYoIiVzOiAlc1xuIiwgYXBwX25hbWUsIFZFUlNJT04pOwogCQkJZXhpdCgwKTsKIAkJZGVmYXVsdDoKLQkJCWZwcmludGYoc3RkZXJyLCBoZWxwdGV4dCk7CisJCQlmcHV0cyhoZWxwdGV4dCxzdGRlcnIpOwogCQkJZXhpdCgxKTsKIAkJfQogCX0KIAogCWlmIChhcmd2W29wdGluZF0gIT0gTlVMTCkgewotCQlmcHJpbnRmKHN0ZGVyciwgaGVscHRleHQpOworCQlmcHV0cyhoZWxwdGV4dCxzdGRlcnIpOwogCQlleGl0KDEpOwogCX0KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ta2VsZmltYWdlL21rZWxmaW1hZ2UvY3Jvc3MtY29tcGlsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWtlbGZpbWFnZS9ta2VsZmltYWdlL2Nyb3NzLWNvbXBpbGUucGF0Y2gKaW5kZXggNzY5MjcwOS4uYTE2MmViNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ta2VsZmltYWdlL21rZWxmaW1hZ2UvY3Jvc3MtY29tcGlsZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21rZWxmaW1hZ2UvbWtlbGZpbWFnZS9jcm9zcy1jb21waWxlLnBhdGNoCkBAIC0xLDEzICsxLDQzIEBACi1tYWtlIHRoZSB0b29sIHRvIGJlIGNyb3NzIGNvbXBpbGFibGUuCitGcm9tIGRjMjcxMjExOWQ2ODMyZTI0YTliN2JlZDllZDRjZTVhZTAzY2UwYTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAxNCBKdWwgMjAxMiAxNDoxNDowNyAtMDcwMAorU3ViamVjdDogW1BBVENIXSBta2VsZmltYWdlOiBGaXggY3Jvc3MgYnVpbGQKKworTWFrZSB0aGUgdG9vbCB0byBiZSBjcm9zcyBjb21waWxhYmxlLCBieSBzZXBhcmF0aW5nIHRoZSB2YXJpYWJsZXMgZm9yIGJ1aWxkCit0b29scyBmcm9tIHRob3NlIGZvciB0aGUgdGFyZ2V0LiBBbHNvIG1vZGlmaWVkIHRvIG9iZXkgTERGTEFHUy4KIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+CisKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCi1JbmRleDogbWtlbGZJbWFnZS9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBta2VsZkltYWdlLm9yaWcvY29uZmlndXJlLmFjCTIwMTItMDctMTQgMTQ6MDQ6NDguOTY0ODk4NjY3IC0wNzAwCi0rKysgbWtlbGZJbWFnZS9jb25maWd1cmUuYWMJMjAxMi0wNy0xNCAxNDoxMDo0Ny44MDA5MTYwODMgLTA3MDAKLUBAIC03MCw2ICs3MCw5IEBACistLS0KKyBNYWtlZmlsZS5jb25mLmluICAgIHwgMyArKysKKyBjb25maWd1cmUuYWMgICAgICAgIHwgNyArKysrKy0tCisgbGludXgtaTM4Ni9NYWtlZmlsZSB8IDIgKy0KKyBsaW51eC1pYTY0L01ha2VmaWxlIHwgMiArLQorIG1haW4vTWFrZWZpbGUgICAgICAgfCA0ICsrLS0KKyA1IGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5jb25mLmluIGIvTWFrZWZpbGUuY29uZi5pbgoraW5kZXggNDY0NWU0NC4uZGNiNmNmMiAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmNvbmYuaW4KKysrKyBiL01ha2VmaWxlLmNvbmYuaW4KK0BAIC0xNyw2ICsxNyw5IEBAIERFRlM9QERFRlNACisgTElCUz1ATElCU0AKKyBIT1NUX0NDPUBIT1NUX0NDQAorIEhPU1RfQ0ZMQUdTPUBIT1NUX0NGTEFHU0AgICQoREVGUykKKytDQz1AQ0NACisrQ0ZMQUdTPUBDRkxBR1NAICQoREVGUykKKytMREZMQUdTPUBMREZMQUdTQAorCisgSTM4Nl9DQyAgICAgPUBJMzg2X0NDQAorIEkzODZfTEQgICAgID1ASTM4Nl9MREAKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDY1MmI5NTIuLjBmMmFjNzIgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTcwLDYgKzcwLDkgQEAgaWYgdGVzdCAid2l0aF9kZWZhdWx0IiAhPSBubyA7IHRoZW4KICAJCUFDX01TR19FUlJPUihbY2Mgbm90IGZvdW5kXSkKICAJZmkKICAJZXZhbCAiJHt3aXRoX2RlZmF1bHR9X0NDPSckQ0MnIgpAQCAtMTcsNTUgKzQ3LDYwIEBACiAgCUFDX1BST0dfQ1BQCiAgCWlmIHRlc3QgIiRDUFAiID0gbm87IHRoZW4KICAJCUFDX01TR19FUlJPUihbY3BwIG5vdCBmb3VuZF0pCi1AQCAtMTcyLDcgKzE3NSw2IEBACitAQCAtMTcyLDggKzE3NSw4IEBAIGZpCiAgCiAgZG5sIC0tLU91dHB1dCB2YXJpYWJsZXMuLi4KICAKIC1IT1NUX0NDPSRDQwotIEhPU1RfQ0ZMQUdTPSIkSE9TVF9DRkxBR1MgLU8yIC1XYWxsIFwkKEhPU1RfQ1BQRkxBR1MpIgorLUhPU1RfQ0ZMQUdTPSIkSE9TVF9DRkxBR1MgLU8yIC1XYWxsIFwkKEhPU1RfQ1BQRkxBR1MpIgorK0NGTEFHUz0iJHtDRkxBR1M6LS1PMn0gLVdhbGwgXCQoQ1BQRkxBR1MpIgorK0hPU1RfQ0ZMQUdTPSIke0hPU1RfQ0ZMQUdTOi0tTzJ9IC1XYWxsIFwkKEhPU1RfQ1BQRkxBR1MpIgogIAogIGRubCBUT0RPOiBmaWd1cmUgb3V0IGhvdyB0byBzZXQgdGhlc2UgYXBwcm9wcmlhdGVseSBmb3IgY29tcGlsZXJzIG90aGVyIHRoYW4gZ2NjCi1JbmRleDogbWtlbGZJbWFnZS9saW51eC1pMzg2L01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbWtlbGZJbWFnZS5vcmlnL2xpbnV4LWkzODYvTWFrZWZpbGUJMjAxMi0wNy0xNCAxNDowNDo0OC45NjQ4OTg2NjcgLTA3MDAKLSsrKyBta2VsZkltYWdlL2xpbnV4LWkzODYvTWFrZWZpbGUJMjAxMi0wNy0xNCAxNDowNDo0OS4wMzI4OTg2NzEgLTA3MDAKLUBAIC00LDcgKzQsNyBAQAorIEkzODZfQ0ZMQUdTPSIkSTM4Nl9DRkxBR1MgLU9zIC1mZnJlZXN0YW5kaW5nIC1XYWxsIC1XIC1Xbm8tZm9ybWF0IFwkKEkzODZfQ1BQRkxBR1MpIgorZGlmZiAtLWdpdCBhL2xpbnV4LWkzODYvTWFrZWZpbGUgYi9saW51eC1pMzg2L01ha2VmaWxlCitpbmRleCA1MTUzMWQ2Li43ZThhYTNjIDEwMDY0NAorLS0tIGEvbGludXgtaTM4Ni9NYWtlZmlsZQorKysrIGIvbGludXgtaTM4Ni9NYWtlZmlsZQorQEAgLTQsNyArNCw3IEBAIExJMzg2X0RFUD1NYWtlZmlsZSBNYWtlZmlsZS5jb25mICQoTEkzODZfRElSKS9NYWtlZmlsZQogIAogICQoTEkzODZfT0JKKS9ta2VsZi1saW51eC1pMzg2Lm86ICQoTEkzODZfRElSKS9ta2VsZi1saW51eC1pMzg2LmMgJChMSTM4Nl9ESVIpL2NvbnZlcnQuYmluLmMgJChMSTM4Nl9ERVApCiAgCSQoTUtESVIpIC1wICQoQEQpCiAtCSQoSE9TVF9DQykgJChIT1NUX0NGTEFHUykgLWMgLWcgJDwgLW8gJEAKLSsJJChDQykgJChIT1NUX0NGTEFHUykgLWMgLWcgJDwgLW8gJEAKKysJJChDQykgJChDRkxBR1MpIC1jIC1nICQ8IC1vICRACiAgCiAgCiAgaWZkZWYgSTM4Nl9DQwotSW5kZXg6IG1rZWxmSW1hZ2UvbGludXgtaWE2NC9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG1rZWxmSW1hZ2Uub3JpZy9saW51eC1pYTY0L01ha2VmaWxlCTIwMTItMDctMTQgMTQ6MDQ6NDguOTY0ODk4NjY3IC0wNzAwCi0rKysgbWtlbGZJbWFnZS9saW51eC1pYTY0L01ha2VmaWxlCTIwMTItMDctMTQgMTQ6MDQ6NDkuMDMyODk4NjcxIC0wNzAwCi1AQCAtNCw3ICs0LDcgQEAKK2RpZmYgLS1naXQgYS9saW51eC1pYTY0L01ha2VmaWxlIGIvbGludXgtaWE2NC9NYWtlZmlsZQoraW5kZXggMzhmNWQ4Yy4uNWRmODg3MCAxMDA2NDQKKy0tLSBhL2xpbnV4LWlhNjQvTWFrZWZpbGUKKysrKyBiL2xpbnV4LWlhNjQvTWFrZWZpbGUKK0BAIC00LDcgKzQsNyBAQCBMSUE2NF9ERVA9TWFrZWZpbGUgTWFrZWZpbGUuY29uZiAkKExJQTY0X0RJUikvTWFrZWZpbGUKICAKICAkKExJQTY0X09CSikvbWtlbGYtbGludXgtaWE2NC5vOiAkKExJQTY0X0RJUikvbWtlbGYtbGludXgtaWE2NC5jICQoTElBNjRfRElSKS9jb252ZXJ0LmJpbi5jICQoTElBNjRfREVQKQogIAkkKE1LRElSKSAtcCAkKEBEKQogLQkkKEhPU1RfQ0MpICQoSE9TVF9DRkxBR1MpIC1jIC1nICQ8IC1vICRACi0rCSQoQ0MpICQoSE9TVF9DRkxBR1MpIC1jIC1nICQ8IC1vICRACisrCSQoQ0MpICQoQ0ZMQUdTKSAtYyAtZyAkPCAtbyAkQAogIAogIGlmZGVmIElBNjRfQ0MKICAKLUluZGV4OiBta2VsZkltYWdlL21haW4vTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBta2VsZkltYWdlLm9yaWcvbWFpbi9NYWtlZmlsZQkyMDEyLTA3LTE0IDE0OjA0OjQ4Ljk2NDg5ODY2NyAtMDcwMAotKysrIG1rZWxmSW1hZ2UvbWFpbi9NYWtlZmlsZQkyMDEyLTA3LTE0IDE0OjA0OjQ5LjAzMjg5ODY3MSAtMDcwMAotQEAgLTQsMTEgKzQsMTEgQEAKK2RpZmYgLS1naXQgYS9tYWluL01ha2VmaWxlIGIvbWFpbi9NYWtlZmlsZQoraW5kZXggNDAzYjBhNC4uY2Q1MzYxMyAxMDA2NDQKKy0tLSBhL21haW4vTWFrZWZpbGUKKysrKyBiL21haW4vTWFrZWZpbGUKK0BAIC00LDExICs0LDExIEBAIE1LRUxGX09CSlM9JChPQkpESVIpL21haW4vbWtlbGZJbWFnZS5vIFwKICAKICAkKE9CSkRJUikvc2Jpbi9ta2VsZkltYWdlOiAkKE1LRUxGX09CSlMpICQoREVQUykKICAJJChNS0RJUikgLXAgJChARCkKIC0JJChIT1NUX0NDKSAkKEhPU1RfQ0ZMQUdTKSAkKE1LRUxGX09CSlMpIC1vICRAICQoTElCUykKLSsJJChDQykgJChIT1NUX0NGTEFHUykgJChNS0VMRl9PQkpTKSAtbyAkQCAkKExJQlMpCisrCSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpICQoTUtFTEZfT0JKUykgLW8gJEAgJChMSUJTKQogIAogICQoT0JKRElSKS9tYWluL21rZWxmSW1hZ2UubzogbWFpbi9ta2VsZkltYWdlLmMgaW5jbHVkZS9ta2VsZkltYWdlLmggJChERVBTKQogIAkkKE1LRElSKSAtcCAkKEBEKQogLQkkKEhPU1RfQ0MpICQoSE9TVF9DRkxBR1MpIC1jICQ8IC1vICRACi0rCSQoQ0MpICQoSE9TVF9DRkxBR1MpIC1jICQ8IC1vICRACisrCSQoQ0MpICQoQ0ZMQUdTKSAtYyAkPCAtbyAkQAogIAogICQoT0JKRElSKS9tYW4vbWFuOC9ta2VsZkltYWdlLjg6IG1haW4vbWtlbGZJbWFnZS5tYW4KICAJJChNS0RJUikgLXAgJChARCkKKy0tCisyLjguMApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ta2VsZmltYWdlL21rZWxmaW1hZ2VfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ta2VsZmltYWdlL21rZWxmaW1hZ2VfZ2l0LmJiCmluZGV4IDkyNDM1Y2QuLjJiY2M4ZDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWtlbGZpbWFnZS9ta2VsZmltYWdlX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21rZWxmaW1hZ2UvbWtlbGZpbWFnZV9naXQuYmIKQEAgLTEzLDggKzEzLDggQEAKIERFUEVORFMgKz0gInpsaWIiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vcmV2aWV3LmNvcmVib290Lm9yZy9wL2NvcmVib290O3Byb3RvY29sPWh0dHAgXAotICAgICAgICAgICBmaWxlOi8vY3Jvc3MtY29tcGlsZS5wYXRjaCAgIFwKLSAgICAgICAgICAiCisgICAgICAgICAgIGZpbGU6Ly9jcm9zcy1jb21waWxlLnBhdGNoIFwKKyAgICAgICAgICAgIgogU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgtbWFrZWZpbGUtdG8tZmluZC1saWJ6LnBhdGNoICAgXAogIgpAQCAtMjQsOCArMjQsMTEgQEAKIFMgPSAiJHtXT1JLRElSfS9naXQvdXRpbC9ta2VsZkltYWdlIgogCiBDRkxBR1MgKz0gIi1mbm8tc3RhY2stcHJvdGVjdG9yIgotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gIkhPU1RfQ0M9JyR7QlVJTERfQ0N9JyIKLUVYVFJBX09FTUFLRSArPSAiSE9TVF9DUFBGTEFHUz0nJHtCVUlMRF9DUFBGTEFHU30nIgorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gIlwKKyAgICBIT1NUX0NDPScke0JVSUxEX0NDfScgXAorICAgIEhPU1RfQ0ZMQUdTPScke0JVSUxEX0NGTEFHU30nIFwKKyAgICBIT1NUX0NQUEZMQUdTPScke0JVSUxEX0NQUEZMQUdTfScgXAorIgogCiBpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ta2xpYnMvbWtsaWJzLW5hdGl2ZV8wLjEuNDAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21rbGlicy9ta2xpYnMtbmF0aXZlXzAuMS40MC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTlmZWMyOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21rbGlicy9ta2xpYnMtbmF0aXZlXzAuMS40MC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVNVTU1BUlkgPSAiU2hhcmVkIGxpYnJhcnkgb3B0aW1pc2F0aW9uIHRvb2wiCi1ERVNDUklQVElPTiA9ICJta2xpYnMgcHJvZHVjZXMgY3V0LWRvd24gc2hhcmVkIGxpYnJhcmllcyB0aGF0IGNvbnRhaW4gb25seSB0aGUgcm91dGluZXMgcmVxdWlyZWQgYnkgYSBwYXJ0aWN1bGFyIHNldCBvZiBleGVjdXRhYmxlcy4iCi1IT01FUEFHRSA9ICJodHRwczovL2xhdW5jaHBhZC5uZXQvbWtsaWJzIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZGViaWFuL2NvcHlyaWdodDttZDU9OThkMzEwMzdiMTNkODk2ZTMzODkwNzM4ZWYwMWFmNjQiCi1ERVBFTkRTID0gInB5dGhvbi1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5kZS5kZWJpYW4ub3JnL2RlYmlhbi9wb29sL21haW4vbS9ta2xpYnMvJHtCUE59XyR7UFZ9LnRhci54eiBcCi0JZmlsZTovL2FjX2luaXRfZml4LnBhdGNoXAotCWZpbGU6Ly9maXhfU1RUX0dOVV9JRlVOQy5wYXRjaFwKLQlmaWxlOi8vc3lzcm9vdGVkLWxkc28ucGF0Y2ggXAotCWZpbGU6Ly9hdm9pZC1mYWlsdXJlLW9uLXN5bWJvbC1wcm92aWRlZC1ieS1hcHBsaWNhdGlvbi5wYXRjaCBcCi0JZmlsZTovL3Nob3ctR05VLXVuaXF1ZS1zeW1ib2xzLWFzLXByb3ZpZGVkLXN5bWJvbHMucGF0Y2ggXAotCWZpbGU6Ly9maXhfY3Jvc3NfY29tcGlsZS5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlMWRhZmU1Zjk2MmNhYTlkYzVmMjY1MWMwNzIzODEyYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxZGIyNGFlNzc5ZDIxY2NmZWQ0OWYyMmU0OWEyYjdlZTQzZWMwZTkxOTdiYzIwNmQ4MWNkMDJmOTZlOTFlMTI1IgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IG5hdGl2ZSBweXRob25uYXRpdmUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWtsaWJzL21rbGlicy1uYXRpdmVfMC4xLjQxLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ta2xpYnMvbWtsaWJzLW5hdGl2ZV8wLjEuNDEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjNjMWI1YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWtsaWJzL21rbGlicy1uYXRpdmVfMC4xLjQxLmJiCkBAIC0wLDAgKzEsMjEgQEAKK1NVTU1BUlkgPSAiU2hhcmVkIGxpYnJhcnkgb3B0aW1pc2F0aW9uIHRvb2wiCitERVNDUklQVElPTiA9ICJta2xpYnMgcHJvZHVjZXMgY3V0LWRvd24gc2hhcmVkIGxpYnJhcmllcyB0aGF0IGNvbnRhaW4gb25seSB0aGUgcm91dGluZXMgcmVxdWlyZWQgYnkgYSBwYXJ0aWN1bGFyIHNldCBvZiBleGVjdXRhYmxlcy4iCitIT01FUEFHRSA9ICJodHRwczovL2xhdW5jaHBhZC5uZXQvbWtsaWJzIgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZGViaWFuL2NvcHlyaWdodDttZDU9OThkMzEwMzdiMTNkODk2ZTMzODkwNzM4ZWYwMWFmNjQiCitERVBFTkRTID0gInB5dGhvbi1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cDovL3NuYXBzaG90LmRlYmlhbi5vcmcvYXJjaGl2ZS9kZWJpYW4vMjAxNjAyMDdUMjIxNjI1Wi9wb29sL21haW4vbS8ke0JQTn0vJHtCUE59XyR7UFZ9LnRhci54eiBcCisJZmlsZTovL2FjX2luaXRfZml4LnBhdGNoXAorCWZpbGU6Ly9maXhfU1RUX0dOVV9JRlVOQy5wYXRjaFwKKwlmaWxlOi8vc3lzcm9vdGVkLWxkc28ucGF0Y2ggXAorCWZpbGU6Ly9hdm9pZC1mYWlsdXJlLW9uLXN5bWJvbC1wcm92aWRlZC1ieS1hcHBsaWNhdGlvbi5wYXRjaCBcCisJZmlsZTovL3Nob3ctR05VLXVuaXF1ZS1zeW1ib2xzLWFzLXByb3ZpZGVkLXN5bWJvbHMucGF0Y2ggXAorCWZpbGU6Ly9maXhfY3Jvc3NfY29tcGlsZS5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2YjI5Nzk4NzZhNjExNzE3ZGYzZDQ5ZTdmOWNmMjkxZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwNThjNzM0OWY4ZWM4YTAzYjUyOWM1NDZhOTVjZDY0MjY3NDFiZDgxOWYxZTEyMTFmNDk5MjczZWI0YmY1ZDg5IgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IG5hdGl2ZSBweXRob25uYXRpdmUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbW1jL21tYy11dGlsc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21tYy9tbWMtdXRpbHNfZ2l0LmJiCmluZGV4IDY0Yjg5MTAuLjBhOGRhMTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbW1jL21tYy11dGlsc19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tbWMvbW1jLXV0aWxzX2dpdC5iYgpAQCAtMSwxMCArMSwxMCBAQAogU1VNTUFSWSA9ICJVc2Vyc3BhY2UgdG9vbHMgZm9yIE1NQy9TRCBkZXZpY2VzIgogSE9NRVBBR0UgPSAiaHR0cDovL2dpdC5rZXJuZWwub3JnL2NnaXQvbGludXgva2VybmVsL2dpdC9jamIvbW1jLXV0aWxzLmdpdC8iCiBMSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbW1jLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0xNzttZDU9ZDc3NDdmYzg3ZjFlYjIyYjk0NmVmODE5OTY5NTAzZjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9tbWMuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIwO21kNT1mYWUzMjc5MmUyMGY0ZDI3YWRlMWM1YTc2MmQxNmI3ZCIKIAogU1JDQlJBTkNIID89ICJtYXN0ZXIiCi1TUkNSRVYgPSAiNDRmOTRiOTI1ODk0NTc3ZjlmZmNmMmM0MThkZDAxM2E1ZTU4MjY0OCIKK1NSQ1JFViA9ICJiYjc3OWFjZmMzODVkMTM1YjMyYTY5OThjMWQxZmNlZWYwNDkxNDAwIgogCiBQViA9ICIwLjEiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRkL210ZC11dGlsc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210ZC9tdGQtdXRpbHNfZ2l0LmJiCmluZGV4IGNkOWFlMDYuLjhhM2FmYWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRkL210ZC11dGlsc19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdGQvbXRkLXV0aWxzX2dpdC5iYgpAQCAtMzksNyArMzksNyBAQAogRklMRVNfbXRkLXV0aWxzLXViaWZzID0gIiR7c2JpbmRpcn0vbWtmcy51YmlmcyAke3NiaW5kaXJ9L3ViaSoiCiBGSUxFU19tdGQtdXRpbHMtbWlzYyA9ICIke3NiaW5kaXJ9L25mdGwqICR7c2JpbmRpcn0vZnRsKiAke3NiaW5kaXJ9L3JmZCogJHtzYmluZGlyfS9kb2MqICR7c2JpbmRpcn0vc2VydmVfaW1hZ2UgJHtzYmluZGlyfS9yZWN2X2ltYWdlIgogCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKIAogIyBnaXQvLmNvbXByLmMuZGVwOjQ2OiB3YXJuaW5nOiBOVUwgY2hhcmFjdGVyIHNlZW47IHJlc3Qgb2YgbGluZSBpZ25vcmVkCiAjIGdpdC8uY29tcHIuYy5kZXA6NDc6ICoqKiBtaXNzaW5nIHNlcGFyYXRvci4gIFN0b3AuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210b29scy9tdG9vbHMvMDAwMS1Db250aW51ZS1ldmVuLWlmLWZzLXNpemUtaXMtbm90LWRpdmlzaWJsZS1ieS1zZWN0b3JzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdG9vbHMvbXRvb2xzLzAwMDEtQ29udGludWUtZXZlbi1pZi1mcy1zaXplLWlzLW5vdC1kaXZpc2libGUtYnktc2VjdG9ycy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjhmODM1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdG9vbHMvbXRvb2xzLzAwMDEtQ29udGludWUtZXZlbi1pZi1mcy1zaXplLWlzLW5vdC1kaXZpc2libGUtYnktc2VjdG9ycy5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIDVjYzhkMWY5NmFiNmQzNDU5ZTEzNjMxZDgzNTZmODczODE1NjIzNTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorRGF0ZTogVGh1LCAyIEp1biAyMDE2IDA5OjQ5OjQ0ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIENvbnRpbnVlIGV2ZW4gaWYgZnMgc2l6ZSBpcyBub3QgZGl2aXNpYmxlIGJ5Cisgc2VjdG9ycy1wZXItdHJhY2sKKworRmlsZXN5c3RlbSB3aXRoIGEgc2l6ZSB0aGF0IGlzIG5vdCBkaXZpc2libGUgYnkgc2VjdG9ycy1wZXItdHJhY2sgaXMKK25vdCBicm9rZW4gb3IgaW52YWxpZDogaXQgbWlnaHQgYmUgdW5vcHRpbWl6ZWQgb24gbWVkaWEgd2hlcmUKK2hlYWRzIGFuZCBjeWxpbmRlcnMgYWN0dWFsbHkgbWF0dGVyIGJ1dCB0aGF0IHNob3VsZCBiZSBpdC4KKworUHJlc2VydmUgdGhlIHdhcm5pbmcgYnV0IG1ha2UgbXRvb2xzIGNvbnRpbnVlIGV2ZW4gaWYgZnMgc2l6ZSBpcyBub3QKK2RpdmlzaWJsZSBieSBzZWN0b3JzLXBlci10cmFjay4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2luZm8tbXRvb2xzQGdudS5vcmddCitTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorLS0tCisgaW5pdC5jIHwgMSAtCisgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2luaXQuYyBiL2luaXQuYworaW5kZXggYzkxNTJlMC4uNGUxNmEwMSAxMDA2NDQKKy0tLSBhL2luaXQuYworKysrIGIvaW5pdC5jCitAQCAtMzM4LDcgKzMzOCw2IEBAIFN0cmVhbV90ICpmc19pbml0KGNoYXIgZHJpdmUsIGludCBtb2RlLCBpbnQgKmlzUm9wKQorIAkJZnByaW50ZihzdGRlcnIsCisgCQkJIkFkZCBtdG9vbHNfc2tpcF9jaGVjaz0xIHRvIHlvdXIgLm10b29sc3JjIGZpbGUgIgorIAkJCSJ0byBza2lwIHRoaXMgdGVzdFxuIik7CistCQlleGl0KDEpOworIAl9CisgCisgCS8qIGZ1bGwgY3lsaW5kZXIgYnVmZmVyaW5nICovCistLSAKKzIuMS40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRvb2xzL210b29sc18zLjkuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRvb2xzL210b29sc18zLjkuOS5iYgppbmRleCAzNDIzOTE3Li4yOTA0ZmY0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210b29scy9tdG9vbHNfMy45LjkuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdG9vbHMvbXRvb2xzXzMuOS45LmJiCkBAIC0zMyw3ICszMyw5IEBACiAgICAgICAgICAgIGZpbGU6Ly9tdG9vbHMtbWFrZWluZm8ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vbXRvb2xzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL25vLXgxMS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtYnJva2VuLWx6LnBhdGNoIgorICAgICAgICAgICBmaWxlOi8vZml4LWJyb2tlbi1sei5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUNvbnRpbnVlLWV2ZW4taWYtZnMtc2l6ZS1pcy1ub3QtZGl2aXNpYmxlLWJ5LXNlY3RvcnMucGF0Y2ggXAorICAgICAgICAgICAiCiAKIGluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdG9vbHMvbXRvb2xzXzQuMC4xOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRvb2xzL210b29sc180LjAuMTguYmIKaW5kZXggZWZkZTU0Ny4uYjBlZmM5ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdG9vbHMvbXRvb2xzXzQuMC4xOC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210b29scy9tdG9vbHNfNC4wLjE4LmJiCkBAIC0yOSw3ICsyOSw5IEBACiAKIFNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9tdG9vbHMvbXRvb2xzLSR7UFZ9LnRhci5iejIgXAogICAgICAgICAgICBmaWxlOi8vbXRvb2xzLW1ha2VpbmZvLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL25vLXgxMS5ncGx2My5wYXRjaCIKKyAgICAgICAgICAgZmlsZTovL25vLXgxMS5ncGx2My5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUNvbnRpbnVlLWV2ZW4taWYtZnMtc2l6ZS1pcy1ub3QtZGl2aXNpYmxlLWJ5LXNlY3RvcnMucGF0Y2ggXAorICAgICAgICAgICAiCiAKIAogaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uYXNtL25hc21fMi4xMS4wOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmFzbS9uYXNtXzIuMTEuMDguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwNzI0ZTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uYXNtL25hc21fMi4xMS4wOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLVNVTU1BUlkgPSAiR2VuZXJhbC1wdXJwb3NlIHg4NiBhc3NlbWJsZXIiCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT05MDkwNDQ4NmY4ZmJmMTg2MWNmNDI3NTJlMWEzOWVmZSIKLUNPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0fGkuODYpLiotKGxpbnV4fGZyZWVic2QuKiknCi0KLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm5hc20udXMvcHViL25hc20vcmVsZWFzZWJ1aWxkcy8ke1BWfS9uYXNtLSR7UFZ9LnRhci5iejIgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiN2FhZTVjYjhlMDNmYWM0ODAyOWM4MmE3NDcwYWIwNjYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWRhM2EwMjkxYTBiZGMwNjMwNWI3YmExOTRmMWUyYzJiNTVhZTZmMTEyMTBiNGFmNDM3Mjk4NjgxNDlkNTQ0NSIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQlpZiBbIC1mICR7U30vYWNsb2NhbC5tNCBdICYmIFsgISAtZiAke1N9L2FjaW5jbHVkZS5tNCBdOyB0aGVuCi0JCW12ICR7U30vYWNsb2NhbC5tNCAke1N9L2FjaW5jbHVkZS5tNAotCWZpCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0JaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbjEKLQotCW9lX3J1bm1ha2UgJ0lOU1RBTExST09UPSR7RH0nIGluc3RhbGwKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLURFUEVORFMgPSAiZ3JvZmYtbmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uYXNtL25hc21fMi4xMi4wMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmFzbS9uYXNtXzIuMTIuMDIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWM0YjYwZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmFzbS9uYXNtXzIuMTIuMDIuYmIKQEAgLTAsMCArMSwyOSBAQAorU1VNTUFSWSA9ICJHZW5lcmFsLXB1cnBvc2UgeDg2IGFzc2VtYmxlciIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTkwOTA0NDg2ZjhmYmYxODYxY2Y0Mjc1MmUxYTM5ZWZlIgorQ09NUEFUSUJMRV9IT1NUID0gJyh4ODZfNjR8aS44NikuKi0obGludXh8ZnJlZWJzZC4qKScKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm5hc20udXMvcHViL25hc20vcmVsZWFzZWJ1aWxkcy8ke1BWfS9uYXNtLSR7UFZ9LnRhci5iejIgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDE1ODQzYzNmYjdkYjM5YWY4MDU3MWVlMjdlYzZmYWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDBiMDg5MWM2NzhjMDY1NDQ2Y2E1OWJjZWU2NDcxOWQwMDk2ZDU0ZDY4ODZlNmU0NzJhZWVlMmUxNzBhZTMyNCIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwlpZiBbIC1mICR7U30vYWNsb2NhbC5tNCBdICYmIFsgISAtZiAke1N9L2FjaW5jbHVkZS5tNCBdOyB0aGVuCisJCW12ICR7U30vYWNsb2NhbC5tNCAke1N9L2FjaW5jbHVkZS5tNAorCWZpCit9CisKK2RvX2luc3RhbGwoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisJaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbjEKKworCW9lX3J1bm1ha2UgJ0lOU1RBTExST09UPSR7RH0nIGluc3RhbGwKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK0RFUEVORFMgPSAiZ3JvZmYtbmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGVuamFkZS9vcGVuamFkZS1uYXRpdmVfMS4zLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wZW5qYWRlL29wZW5qYWRlLW5hdGl2ZV8xLjMuMi5iYgppbmRleCBiYzI1MDA4Li44YjE1YjBjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wZW5qYWRlL29wZW5qYWRlLW5hdGl2ZV8xLjMuMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wZW5qYWRlL29wZW5qYWRlLW5hdGl2ZV8xLjMuMi5iYgpAQCAtNDQsMTAgKzQ0LDEwIEBACiBvZV9ydW5jb25mW3ZhcmRlcHNleGNsdWRlXSArPSAiQ09ORklHVVJFT1BUUyIKIAogQ0ZMQUdTID0rICItSSR7U30vaW5jbHVkZSIKK0NYWEZMQUdTICs9ICItZm5vLXRyZWUtZHNlIgogCiBTU1RBVEVQT1NUSU5TVEZVTkNTICs9ICJvcGVuamFkZV9zc3RhdGVfcG9zdGluc3QiCiBTWVNST09UX1BSRVBST0NFU1NfRlVOQ1MgKz0gIm9wZW5qYWRlX3N5c3Jvb3RfcHJlcHJvY2VzcyIKLUNMRUFORlVOQ1MgKz0gIm9wZW5qYWRlX3NzdGF0ZV9jbGVhbiIKIAogIyBjb25maWd1cmUuaW4gbmVlZHMgdG8gYmUgcmVsb2FjdGVkIHRvIHRyaWdnZXIgcmVhdXRvY29uZgogZG9fZXh0cmF1bnBhY2sgKCkgewpAQCAtMTAzLDYgKzEwMywxNSBAQAogCQkke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9L2luc3RhbGwtY2F0YWxvZy1vcGVuamFkZSBcCiAJCQktLWFkZCAke3N5c2NvbmZkaXJ9L3NnbWwvc2dtbC1kb2Nib29rLmNhdCBcCiAJCQkke3N5c2NvbmZkaXJ9L3NnbWwvb3BlbmphZGUtJHtQVn0uY2F0CisJCWNhdCA8PCBFT0YgPiAke1NTVEFURV9JTlNUX1BPU1RSTX0KKyMhL2Jpbi9zaAorIyBFbnN1cmUgdGhhdCB0aGUgY2F0YWxvZyBmaWxlIHNnbWwtZG9jYm9vay5jYXQgaXMgcHJvcGVybHkKKyMgdXBkYXRlZCB3aGVuIHRoZSBwYWNrYWdlIGlzIHJlbW92ZWQgZnJvbSBzc3RhdGUgY2FjaGUuCitmaWxlcz0iJHtzeXNjb25mZGlyfS9zZ21sL3NnbWwtZG9jYm9vay5iYWsgJHtzeXNjb25mZGlyfS9zZ21sL3NnbWwtZG9jYm9vay5jYXQiCitmb3IgZiBpbiBcJGZpbGVzOyBkbworCVsgISAtZiBcJGYgXSB8fCBzZWQgLWkgJy9cL3NnbWxcL29wZW5qYWRlLSR7UFZ9LmNhdC9kJyBcJGYKK2RvbmUKK0VPRgogCWZpCiB9CiAKQEAgLTExMCwxMiArMTE5LDMgQEAKICAgICBpbnN0YWxsIC1kICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vCiAgICAgaW5zdGFsbCAtbSA3NTUgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2luc3RhbGwtY2F0YWxvZyAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9L2luc3RhbGwtY2F0YWxvZy1vcGVuamFkZQogfQotCi1vcGVuamFkZV9zc3RhdGVfY2xlYW4gKCkgewotCSMgRW5zdXJlIHRoYXQgdGhlIGNhdGFsb2cgZmlsZSBzZ21sLWRvY2Jvb2suY2F0IGlzIHByb3Blcmx5Ci0JIyB1cGRhdGVkIHdoZW4gdGhlIHBhY2thZ2UgaXMgcmVtb3ZlZCBmcm9tIHNzdGF0ZSBjYWNoZS4KLQlmaWxlcz0iJHtzeXNjb25mZGlyfS9zZ21sL3NnbWwtZG9jYm9vay5iYWsgJHtzeXNjb25mZGlyfS9zZ21sL3NnbWwtZG9jYm9vay5jYXQiCi0JZm9yIGYgaW4gJGZpbGVzOyBkbwotCQlbICEgLWYgJGYgXSB8fCBzZWQgLWkgJy9cL3NnbWxcL29wZW5qYWRlLSR7UFZ9LmNhdC9kJyAkZgotCWRvbmUKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzLzAwMDEtb3BrZy1idWlsZC1yZS1kby1maW5kLWxzLWNvZGUtdG8tbm90LWZhaWwtb24tZmlsZW5hbS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzLzAwMDEtb3BrZy1idWlsZC1yZS1kby1maW5kLWxzLWNvZGUtdG8tbm90LWZhaWwtb24tZmlsZW5hbS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWNiYjU1YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlscy8wMDAxLW9wa2ctYnVpbGQtcmUtZG8tZmluZC1scy1jb2RlLXRvLW5vdC1mYWlsLW9uLWZpbGVuYW0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi1Gcm9tIDhlNDI0Mjk2Y2UyYWY0YTVhNzM5MmMzOGEzMWY4NzIzZjliOWZiZGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPgotRGF0ZTogVGh1LCA3IEFwciAyMDE2IDIwOjQzOjEzIC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIG9wa2ctYnVpbGQ6IHJlLWRvIGZpbmQvbHMgY29kZSB0byBub3QgZmFpbCBvbiBmaWxlbmFtZXMgd2l0aAotIHNwYWNlcwotCi1TaWduZWQtb2ZmLWJ5OiBEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPgotLS0tCi0gb3BrZy1idWlsZCB8IDkgKysrKy0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL29wa2ctYnVpbGQgYi9vcGtnLWJ1aWxkCi1pbmRleCBhOWNjYWQyLi4wNzMwNWIyIDEwMDc1NQotLS0tIGEvb3BrZy1idWlsZAotKysrIGIvb3BrZy1idWlsZAotQEAgLTYsNyArNiw2IEBACi0gIyAyMDAzLTA0LTI1IHJlYUBzci51bmguZWR1Ci0gIyAgIFVwZGF0ZWQgdG8gd29yayBvbiBGYW1pbGlhciBQcmUwLjdyYzEsIHdpdGggYnVzeWJveCB0YXIuCi0gIyAgIE5vdGUgaXQgUmVxdWlyZXM6IGJpbnV0aWxzLWFyIChzaW5jZSB0aGUgYnVzeWJveCBhciBjYW4ndCBjcmVhdGUpCi0tIyAgIEZvciBVSUQgZGVidWdnaW5nIGl0IG5lZWRzIGEgYmV0dGVyICJmaW5kIi4KLSBzZXQgLWUKLSAKLSB2ZXJzaW9uPTEuMAotQEAgLTQ3LDEyICs0NiwxMiBAQCBwa2dfYXBwZWFyc19zYW5lKCkgewotIAotIAlQS0dfRVJST1I9MAotIAotLQl0aWxkZV9maWxlcz1gZmluZCAuIC1uYW1lICcqfidgCi0rCXRpbGRlX2ZpbGVzPWBmaW5kIC4gLW5hbWUgJyp+JyAtbHMgLXByaW50ZiAnXFxcbidgCi0gCWlmIFsgLW4gIiR0aWxkZV9maWxlcyIgXTsgdGhlbgotIAkgICAgaWYgWyAiJG5vY2xlYW4iID0gIjEiIF07IHRoZW4KLSAJCWVjaG8gIioqKiBXYXJuaW5nOiBUaGUgZm9sbG93aW5nIGZpbGVzIGhhdmUgbmFtZXMgZW5kaW5nIGluICd+Jy4KLSBZb3UgcHJvYmFibHkgd2FudCB0byByZW1vdmUgdGhlbTogIiA+JjIKLS0JCWxzIC1sZCAkdGlsZGVfZmlsZXMKLSsJCWVjaG8gLWUgJHRpbGRlX2ZpbGVzCi0gCQlpZiBbICQ/IC1uZSAwIF07IHRoZW4KLSAJCQllY2hvICIqKiogRXJyb3I6IEZhaWwgdG8gbGlzdCBmaWxlcyBoYXZlIG5hbWVzIGVuZGluZyBpbiAnficuIgotIAkJCWV4aXQgMQotQEAgLTY0LDEyICs2MywxMiBAQCBZb3UgcHJvYmFibHkgd2FudCB0byByZW1vdmUgdGhlbTogIiA+JjIKLSAJICAgIGZpCi0gCWZpCi0gCi0tCWxhcmdlX3VpZF9maWxlcz1gZmluZCAuIC11aWQgKzk5IHx8IHRydWVgCi0rCWxhcmdlX3VpZF9maWxlcz1gZmluZCAuIC11aWQgKzk5IC1scyAtcHJpbnRmICdcXFxuJyB8fCB0cnVlYAotIAotIAlpZiBbICIkb2dhcmdzIiA9ICIiIF0gICYmIFsgLW4gIiRsYXJnZV91aWRfZmlsZXMiIF07IHRoZW4KLSAJCWVjaG8gIioqKiBXYXJuaW5nOiBUaGUgZm9sbG93aW5nIGZpbGVzIGhhdmUgYSBVSUQgZ3JlYXRlciB0aGFuIDk5LgotIFlvdSBwcm9iYWJseSB3YW50IHRvIGNob3duIHRoZXNlIHRvIGEgc3lzdGVtIHVzZXI6ICIgPiYyCi0tCQlscyAtbGQgJGxhcmdlX3VpZF9maWxlcwotKwkJZWNobyAtZSAkbGFyZ2VfdWlkX2ZpbGVzCi0gCQlpZiBbICQ/IC1uZSAwIF07IHRoZW4KLSAJCQllY2hvICIqKiogRXJyb3I6IEZhaWwgdG8gbGlzdCBmaWxlcyBoYXZlIGEgVUlEIGdyZWF0ZXIgdGhhbiA5OS4iCi0gCQkJZXhpdCAxCi0tLSAKLTIuMi4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzL29wa2ctYnVpbGQtRXhpdC13aGVuLWZhaWwtdG8tbGlzdC1maWxlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzL29wa2ctYnVpbGQtRXhpdC13aGVuLWZhaWwtdG8tbGlzdC1maWxlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmM2NjkwMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlscy9vcGtnLWJ1aWxkLUV4aXQtd2hlbi1mYWlsLXRvLWxpc3QtZmlsZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1XZSBoYXZlIGFuIGlzc3VlIHdoZW4gbHMgc2VnZmF1bHRzIGluIHNvbWUgY2FzZXMgWzFdIHNvIGl0J3MKLWJldHRlciB0byBkZXRlY3QgdGhlIGZhaWx1cmUgYXQgdGhpcyBsZXZlbCBpbnN0ZWFkIG9mIGNvbnRpbnVlCi10aGUgYnVpbGQgcHJvY2Vzcy4KLQotW1lPQ1RPICM4OTI2XQotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbMl0KLQotWzFdIGh0dHBzOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkyNiNjMAotWzJdIGh0dHBzOi8vZ3JvdXBzLmdvb2dsZS5jb20vZm9ydW0vIyF0b3BpYy9vcGtnLWRldmVsL2NtWDAyYmdIWm1zCi0KLVNpZ25lZC1vZmYtYnk6IEFuw61iYWwgTGltw7NuIDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPgotLS0tCi0gb3BrZy1idWlsZCB8IDggKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9vcGtnLWJ1aWxkIGIvb3BrZy1idWlsZAotaW5kZXggOTgwMDhiNi4uYTljY2FkMiAxMDA3NTUKLS0tLSBhL29wa2ctYnVpbGQKLSsrKyBiL29wa2ctYnVpbGQKLUBAIC01Myw2ICs1MywxMCBAQCBwa2dfYXBwZWFyc19zYW5lKCkgewotIAkJZWNobyAiKioqIFdhcm5pbmc6IFRoZSBmb2xsb3dpbmcgZmlsZXMgaGF2ZSBuYW1lcyBlbmRpbmcgaW4gJ34nLgotIFlvdSBwcm9iYWJseSB3YW50IHRvIHJlbW92ZSB0aGVtOiAiID4mMgotIAkJbHMgLWxkICR0aWxkZV9maWxlcwotKwkJaWYgWyAkPyAtbmUgMCBdOyB0aGVuCi0rCQkJZWNobyAiKioqIEVycm9yOiBGYWlsIHRvIGxpc3QgZmlsZXMgaGF2ZSBuYW1lcyBlbmRpbmcgaW4gJ34nLiIKLSsJCQlleGl0IDEKLSsJCWZpCi0gCQllY2hvID4mMgotIAkgICAgZWxzZQotIAkJZWNobyAiKioqIFJlbW92aW5nIHRoZSBmb2xsb3dpbmcgZmlsZXM6ICR0aWxkZV9maWxlcyIKLUBAIC02Niw2ICs3MCwxMCBAQCBZb3UgcHJvYmFibHkgd2FudCB0byByZW1vdmUgdGhlbTogIiA+JjIKLSAJCWVjaG8gIioqKiBXYXJuaW5nOiBUaGUgZm9sbG93aW5nIGZpbGVzIGhhdmUgYSBVSUQgZ3JlYXRlciB0aGFuIDk5LgotIFlvdSBwcm9iYWJseSB3YW50IHRvIGNob3duIHRoZXNlIHRvIGEgc3lzdGVtIHVzZXI6ICIgPiYyCi0gCQlscyAtbGQgJGxhcmdlX3VpZF9maWxlcwotKwkJaWYgWyAkPyAtbmUgMCBdOyB0aGVuCi0rCQkJZWNobyAiKioqIEVycm9yOiBGYWlsIHRvIGxpc3QgZmlsZXMgaGF2ZSBhIFVJRCBncmVhdGVyIHRoYW4gOTkuIgotKwkJCWV4aXQgMQotKwkJZmkKLSAJCWVjaG8gPiYyCi0gCWZpCi0gCSAgICAKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHNfZ2l0LmJiCmluZGV4IDg4NzNiMjguLmE3YWVjNDUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlsc19naXQuYmIKQEAgLTEsMTggKzEsMTYgQEAKIFNVTU1BUlkgPSAiQWRkaXRpb25hbCB1dGlsaXRpZXMgZm9yIHRoZSBvcGtnIHBhY2thZ2UgbWFuYWdlciIKIFNVTU1BUllfdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnID0gIlV0aWxpdHkgZm9yIG1hbmFnaW5nIHRoZSBhbHRlcm5hdGl2ZXMgc3lzdGVtIgogU0VDVElPTiA9ICJiYXNlIgotSE9NRVBBR0UgPSAiaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL29wa2cvIgorSE9NRVBBR0UgPSAiaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvb3BrZy11dGlscyIKIExJQ0VOU0UgPSAiR1BMdjIrIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vb3BrZy5weTtiZWdpbmxpbmU9MTtlbmRsaW5lPTE4O21kNT0xNTkxNzQ5MWFkNmJmN2FjYzY2NmNhNWY3Y2MxZTA4MyIKIFBST1ZJREVTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd1cGRhdGUtYWx0ZXJuYXRpdmVzJywgJ3ZpcnR1YWwvdXBkYXRlLWFsdGVybmF0aXZlcycsICcnLCBkKX0iCiAKLVNSQ1JFViA9ICI1MzI3NGYwODc1NjVmZDQ1ZDg0NTJjNTM2Nzk5N2JhNmE2ODJhMzdhIgotUFYgPSAiMC4xLjgrZ2l0JHtTUkNQVn0iCitTUkNSRVYgPSAiM2ZmZWNlOWJmMTlhODQ0ZWRhY2M1NjNhYTA5MmZkMWZiZmNmZmVlZSIKK1BWID0gIjAuMy4yK2dpdCR7U1JDUFZ9IgogCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL29wa2ctdXRpbHMgXAotICAgICAgICAgICBmaWxlOi8vb3BrZy1idWlsZC1FeGl0LXdoZW4tZmFpbC10by1saXN0LWZpbGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtb3BrZy1idWlsZC1yZS1kby1maW5kLWxzLWNvZGUtdG8tbm90LWZhaWwtb24tZmlsZW5hbS5wYXRjaCIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvb3BrZy11dGlscyIKIFNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL3Rhcl9pZ25vcmVfZXJyb3IucGF0Y2giCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZy8wMDAxLWNvbmZpZ3VyZS5hYy11c2UtcGtnLWNvbmZpZy1mb3ItbGlic29sdi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnLzAwMDEtY29uZmlndXJlLmFjLXVzZS1wa2ctY29uZmlnLWZvci1saWJzb2x2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjdlYzc0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnLzAwMDEtY29uZmlndXJlLmFjLXVzZS1wa2ctY29uZmlnLWZvci1saWJzb2x2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotRnJvbSAyYTQzMDI3ZjdlY2YyYmIzY2U3M2Y5NWJjZjU3NWM1NmJjNDk1ZDA3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxlamFuZHJvIGRlbCBDYXN0aWxsbyA8YWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4KLURhdGU6IFdlZCwgOSBEZWMgMjAxNSAxNzozODowNSAtMDYwMAotU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IHVzZSBwa2ctY29uZmlnIGZvciBsaWJzb2x2Ci0KLVNpZ25lZC1vZmYtYnk6IEFsZWphbmRybyBkZWwgQ2FzdGlsbG8gPGFsZWphbmRyby5kZWxjYXN0aWxsb0BuaS5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAxMiArLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDExIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA1MmUxMDI1Li5kMTdkYzVjIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xNTksMTcgKzE1OSw3IEBAIGlmIHRlc3QgIngkd2FudF9zb2x2ZXIiICE9ICJ4bm8iOyB0aGVuCi0gICAgICAgICAgICAgICAgICBBQ19NU0dfRVJST1IoU3BlY2lmeSB3aGljaCBzb2x2ZXIgd2l0aCAtLWVuYWJsZS1zb2x2ZXI9PFNPTFZFUj4pXSwKLSAgICAgICAgICAgICBbbGlic29sdl0sCi0gICAgICAgICAgICAgICAgIFtBQ19NU0dfUkVTVUxUKGxpYnNvbHYpCi0tCi0tICAgICAgICAgICAgICAgIFNPTFZFUl9DRkxBR1M9Ii1JL3Vzci9sb2NhbC9pbmNsdWRlLyIKLS0gICAgICAgICAgICAgICAgU09MVkVSX0xJQlM9Ii1sc29sdiAtbHNvbHZleHQiCi0tICAgICAgICAgICAgICAgIEFDX0NIRUNLX0xJQihbc29sdl0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc29sdmVyX3NvbHZlXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0FDX01TR19FUlJPUihsaWJzb2x2IG5vdCBmb3VuZCldKQotLSAgICAgICAgICAgICAgICBkbmwgVE9ETzogcmVtb3ZlIHByZXZpb3VzIDYgbGluZXMgYW5kIHVuY29tbWVudCBsaW5lIGJlbG93IHRvIHVzZQotLSAgICAgICAgICAgICAgICBkbmwgcGtnLWNvbmZpZyBvbmNlIHRoZXJlIGlzIGEgcmVsZWFzZSBvZiBsaWJzb2x2IHdpdGggcGtnLWNvbmZpZzoKLS0gICAgICAgICAgICAgICAgZG5sIFBLR19DSEVDS19NT0RVTEVTKFNPTFZFUiwgbGlic29sdikKLS0KLSsgICAgICAgICAgICAgICAgUEtHX0NIRUNLX01PRFVMRVMoU09MVkVSLCBsaWJzb2x2KQotICAgICAgICAgICAgICAgICBBQ19ERUZJTkUoSEFWRV9TT0xWRVJfTElCU09MViwxLFtEZWZpbmUgaWYgeW91IHdhbnQgdG8gdXNlIGxpYnNvbHZdKV0sCi0gICAgICAgICAgICAgIyBkZWZhdWx0Ci0gICAgICAgICAgICAgW0FDX01TR19SRVNVTFQobm8pCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnLzAwMDEtbGlic29sdl9zb2x2ZXJfc2V0X2FyY2hfcG9saWN5LXVzZS1jb3JyZWN0LWxvZ2ljLWR1ci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnLzAwMDEtbGlic29sdl9zb2x2ZXJfc2V0X2FyY2hfcG9saWN5LXVzZS1jb3JyZWN0LWxvZ2ljLWR1ci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWFiMTc5MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZy8wMDAxLWxpYnNvbHZfc29sdmVyX3NldF9hcmNoX3BvbGljeS11c2UtY29ycmVjdC1sb2dpYy1kdXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIDNlNTYyYmVkN2RjZWQyNWViM2U5MTc0Y2E5Mzk1MzI0YjZjODczYzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGVqYW5kcm8gZGVsIENhc3RpbGxvIDxhbGVqYW5kcm8uZGVsY2FzdGlsbG9AbmkuY29tPgotRGF0ZTogV2VkLCA5IERlYyAyMDE1IDEzOjM2OjE0IC0wNjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGxpYnNvbHZfc29sdmVyX3NldF9hcmNoX3BvbGljeTogdXNlIGNvcnJlY3QgbG9naWMgZHVyaW5nCi0gYXJjaHMgcmVzaXppbmcKLQotSWYgdGhlcmUgYXJlIG1vcmUgdGhhbiBJTklUSUFMX0FSQ0hfTElTVF9TSVpFIGFyY2hzIGRlZmluZWQgaW4gdGhlCi1jb25maWd1cmF0aW9uLCBsaWJzb2x2X3NvbHZlcl9zZXRfYXJjaF9wb2xpY3kgY3Jhc2hlcyBkdWUgdG8gZmxhd2VkCi1sb2dpYyB3aGVuIHJlc2l6aW5nIHRoZSBhcmNocyBhcnJheS4KLQotU2lnbmVkLW9mZi1ieTogQWxlamFuZHJvIGRlbCBDYXN0aWxsbyA8YWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4KLS0tLQotIGxpYm9wa2cvb3BrZ19zb2x2ZXJfbGlic29sdi5jIHwgNiArKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGlib3BrZy9vcGtnX3NvbHZlcl9saWJzb2x2LmMgYi9saWJvcGtnL29wa2dfc29sdmVyX2xpYnNvbHYuYwotaW5kZXggMWNkY2YxZi4uYjVhZjBmYSAxMDA2NDQKLS0tLSBhL2xpYm9wa2cvb3BrZ19zb2x2ZXJfbGlic29sdi5jCi0rKysgYi9saWJvcGtnL29wa2dfc29sdmVyX2xpYnNvbHYuYwotQEAgLTY2LDggKzY2LDEwIEBAIHN0YXRpYyB2b2lkIGxpYnNvbHZfc29sdmVyX3NldF9hcmNoX3BvbGljeShsaWJzb2x2X3NvbHZlcl90ICpsaWJzb2x2X3NvbHZlcikKLSAgICAgbnZfcGFpcl9saXN0X2VsdF90ICphcmNoX2luZm87Ci0gCi0gICAgIGxpc3RfZm9yX2VhY2hfZW50cnkoYXJjaF9pbmZvLCAmb3BrZ19jb25maWctPmFyY2hfbGlzdC5oZWFkLCBub2RlKSB7Ci0tICAgICAgICBpZiAoYXJjaF9jb3VudCA+IGFyY2hfbGlzdF9zaXplKQotLSAgICAgICAgICAgIGFyY2hzID0geHJlYWxsb2MoYXJjaHMsIGFyY2hfbGlzdF9zaXplICo9IDIpOwotKyAgICAgICAgaWYgKGFyY2hfY291bnQgPj0gYXJjaF9saXN0X3NpemUpIHsKLSsgICAgICAgICAgICBhcmNoX2xpc3Rfc2l6ZSAqPSAyOwotKyAgICAgICAgICAgIGFyY2hzID0geHJlYWxsb2MoYXJjaHMsIGFyY2hfbGlzdF9zaXplICogc2l6ZW9mKGFyY2hfZGF0YV90KSk7Ci0rICAgICAgICB9Ci0gCi0gICAgICAgICBhcmNoc1thcmNoX2NvdW50XS5hcmNoID0gKChudl9wYWlyX3QgKikoYXJjaF9pbmZvLT5kYXRhKSktPm5hbWU7Ci0gICAgICAgICBhcmNoc1thcmNoX2NvdW50XS5wcmlvcml0eSA9IGF0b2koKChudl9wYWlyX3QgKikKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2dfMC4zLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZ18wLjMuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTc3ZjQ5NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZ18wLjMuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLVNVTU1BUlkgPSAiT3BlbiBQYWNrYWdlIE1hbmFnZXIiCi1TVU1NQVJZX2xpYm9wa2cgPSAiT3BlbiBQYWNrYWdlIE1hbmFnZXIgbGlicmFyeSIKLVNFQ1RJT04gPSAiYmFzZSIKLUhPTUVQQUdFID0gImh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9vcGtnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL29wa2cvaXNzdWVzL2xpc3QiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9vcGtnLmM7YmVnaW5saW5lPTI7ZW5kbGluZT0yMTttZDU9OTA0MzVhNTE5YzZlYTY5ZWYyMmU0YTg4YmNjNTJmYTAiCi0KLURFUEVORFMgPSAibGliYXJjaGl2ZSIKLQotUEUgPSAiMSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vb3BrZy1jb25maWd1cmUuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9vcGtnLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1vcGtnX2NvbmYtY3JlYXRlLW9wa2cubG9jay1pbi1ydW4taW5zdGVhZC1vZi12YXItcnVuLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbGlic29sdl9zb2x2ZXJfc2V0X2FyY2hfcG9saWN5LXVzZS1jb3JyZWN0LWxvZ2ljLWR1ci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy11c2UtcGtnLWNvbmZpZy1mb3ItbGlic29sdi5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0MzczNWU1ZGMxZWJmNDZiZDZjZTU2YTdjZGZkYzcyMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkMmM2YzAyYTgzODRlYzIxMTY4YTFmMGExODZjYjVlOWY1NzdkMTQ1MmY0OTFkMDJlZDNlNTZiMmVhOGI4N2RmIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZAotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAib3BrZy1jb25maWd1cmUuc2VydmljZSIKLQotdGFyZ2V0X2xvY2Fsc3RhdGVkaXIgOj0gIiR7bG9jYWxzdGF0ZWRpcn0iCi1PUEtHTElCRElSID0gIiR7dGFyZ2V0X2xvY2Fsc3RhdGVkaXJ9L2xpYiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLQotUEFDS0FHRUNPTkZJR1tncGddID0gIi0tZW5hYmxlLWdwZywtLWRpc2FibGUtZ3BnLGdwZ21lIGxpYmdwZy1lcnJvcixnbnVwZyIKLVBBQ0tBR0VDT05GSUdbY3VybF0gPSAiLS1lbmFibGUtY3VybCwtLWRpc2FibGUtY3VybCxjdXJsIgotUEFDS0FHRUNPTkZJR1tzc2wtY3VybF0gPSAiLS1lbmFibGUtc3NsLWN1cmwsLS1kaXNhYmxlLXNzbC1jdXJsLGN1cmwgb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS1lbmFibGUtb3BlbnNzbCwtLWRpc2FibGUtb3BlbnNzbCxvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1tzaGEyNTZdID0gIi0tZW5hYmxlLXNoYTI1NiwtLWRpc2FibGUtc2hhMjU2IgotUEFDS0FHRUNPTkZJR1twYXRoZmluZGVyXSA9ICItLWVuYWJsZS1wYXRoZmluZGVyLC0tZGlzYWJsZS1wYXRoZmluZGVyLHBhdGhmaW5kZXIiCi1QQUNLQUdFQ09ORklHW2xpYnNvbHZdID0gIi0tZW5hYmxlLXNvbHZlcj1saWJzb2x2LC0tZGlzYWJsZS1zb2x2ZXIsbGlic29sdiIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vb3BrZwotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L29wa2cuY29uZiAke0R9JHtzeXNjb25mZGlyfS9vcGtnL29wa2cuY29uZgotCWVjaG8gIm9wdGlvbiBsaXN0c19kaXIgJHtPUEtHTElCRElSfS9vcGtnL2xpc3RzIiA+PiR7RH0ke3N5c2NvbmZkaXJ9L29wa2cvb3BrZy5jb25mCi0KLQkjIFdlIG5lZWQgdG8gY3JlYXRlIHRoZSBsb2NrIGRpcmVjdG9yeQotCWluc3RhbGwgLWQgJHtEfSR7T1BLR0xJQkRJUn0vb3BrZwotCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTt0aGVuCi0JCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQkJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vb3BrZy1jb25maWd1cmUuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KLQkJc2VkIC1pIC1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAotCQkJLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAotCQkJLWUgJ3MsQEJJTkRJUkAsJHtiaW5kaXJ9LGcnIFwKLQkJCS1lICdzLEBTWVNURU1EX1VOSVRESVJALCR7c3lzdGVtZF91bml0ZGlyfSxnJyBcCi0JCQkke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9vcGtnLWNvbmZpZ3VyZS5zZXJ2aWNlCi0JZmkKLX0KLQotUkRFUEVORFNfJHtQTn0gPSAiJHtWSVJUVUFMLVJVTlRJTUVfdXBkYXRlLWFsdGVybmF0aXZlc30gb3BrZy1hcmNoLWNvbmZpZyBydW4tcG9zdGluc3RzIGxpYmFyY2hpdmUiCi1SREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlc2RrID0gIiIKLVJSRVBMQUNFU18ke1BOfSA9ICJvcGtnLW5vZ3BnIG9wa2ctY29sbGF0ZXJhbCIKLVJDT05GTElDVFNfJHtQTn0gPSAib3BrZy1jb2xsYXRlcmFsIgotUlBST1ZJREVTXyR7UE59ID0gIm9wa2ctY29sbGF0ZXJhbCIKLQotUEFDS0FHRVMgPSsgImxpYm9wa2ciCi0KLUZJTEVTX2xpYm9wa2cgPSAiJHtsaWJkaXJ9Lyouc28uKiAke09QS0dMSUJESVJ9L29wa2cvIgotRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLUNPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L29wa2cvb3BrZy5jb25mIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2dfMC4zLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZ18wLjMuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iY2U3MmZjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2dfMC4zLjMuYmIKQEAgLTAsMCArMSw3MyBAQAorU1VNTUFSWSA9ICJPcGVuIFBhY2thZ2UgTWFuYWdlciIKK1NVTU1BUllfbGlib3BrZyA9ICJPcGVuIFBhY2thZ2UgTWFuYWdlciBsaWJyYXJ5IgorU0VDVElPTiA9ICJiYXNlIgorSE9NRVBBR0UgPSAiaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL29wa2cvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vY29kZS5nb29nbGUuY29tL3Avb3BrZy9pc3N1ZXMvbGlzdCIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL29wa2cuYztiZWdpbmxpbmU9MjtlbmRsaW5lPTIxO21kNT05MDQzNWE1MTljNmVhNjllZjIyZTRhODhiY2M1MmZhMCIKKworREVQRU5EUyA9ICJsaWJhcmNoaXZlIgorCitQRSA9ICIxIgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9vcGtnLWNvbmZpZ3VyZS5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL29wa2cuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW9wa2dfY29uZi1jcmVhdGUtb3BrZy5sb2NrLWluLXJ1bi1pbnN0ZWFkLW9mLXZhci1ydW4ucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYTQ2MTMwMzhjOGFmYzdkOGQ0ODJmNWM1M2YxMzdiZGYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTlkYjllNzMxMjFhNWU0YzkxZmEyMjhiMGE2YTRjNTVjYzM1OTEwNTYxMzBjZmIzYzY2YzMwYWEzMmY4ZDAwZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHN5c3RlbWQKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm9wa2ctY29uZmlndXJlLnNlcnZpY2UiCisKK3RhcmdldF9sb2NhbHN0YXRlZGlyIDo9ICIke2xvY2Fsc3RhdGVkaXJ9IgorT1BLR0xJQkRJUiA9ICIke3RhcmdldF9sb2NhbHN0YXRlZGlyfS9saWIiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCisKK1BBQ0tBR0VDT05GSUdbZ3BnXSA9ICItLWVuYWJsZS1ncGcsLS1kaXNhYmxlLWdwZyxncGdtZSBsaWJncGctZXJyb3IsZ251cGciCitQQUNLQUdFQ09ORklHW2N1cmxdID0gIi0tZW5hYmxlLWN1cmwsLS1kaXNhYmxlLWN1cmwsY3VybCIKK1BBQ0tBR0VDT05GSUdbc3NsLWN1cmxdID0gIi0tZW5hYmxlLXNzbC1jdXJsLC0tZGlzYWJsZS1zc2wtY3VybCxjdXJsIG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0tZW5hYmxlLW9wZW5zc2wsLS1kaXNhYmxlLW9wZW5zc2wsb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbc2hhMjU2XSA9ICItLWVuYWJsZS1zaGEyNTYsLS1kaXNhYmxlLXNoYTI1NiIKK1BBQ0tBR0VDT05GSUdbcGF0aGZpbmRlcl0gPSAiLS1lbmFibGUtcGF0aGZpbmRlciwtLWRpc2FibGUtcGF0aGZpbmRlcixwYXRoZmluZGVyIgorUEFDS0FHRUNPTkZJR1tsaWJzb2x2XSA9ICItLXdpdGgtbGlic29sdiwtLXdpdGhvdXQtbGlic29sdixsaWJzb2x2IgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9vcGtnCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vb3BrZy5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L29wa2cvb3BrZy5jb25mCisJZWNobyAib3B0aW9uIGxpc3RzX2RpciAke09QS0dMSUJESVJ9L29wa2cvbGlzdHMiID4+JHtEfSR7c3lzY29uZmRpcn0vb3BrZy9vcGtnLmNvbmYKKworCSMgV2UgbmVlZCB0byBjcmVhdGUgdGhlIGxvY2sgZGlyZWN0b3J5CisJaW5zdGFsbCAtZCAke0R9JHtPUEtHTElCRElSfS9vcGtnCisKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9O3RoZW4KKwkJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9vcGtnLWNvbmZpZ3VyZS5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworCQlzZWQgLWkgLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCisJCQktZSAncyxAU1lTQ09ORkRJUkAsJHtzeXNjb25mZGlyfSxnJyBcCisJCQktZSAncyxAQklORElSQCwke2JpbmRpcn0sZycgXAorCQkJLWUgJ3MsQFNZU1RFTURfVU5JVERJUkAsJHtzeXN0ZW1kX3VuaXRkaXJ9LGcnIFwKKwkJCSR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL29wa2ctY29uZmlndXJlLnNlcnZpY2UKKwlmaQorfQorCitSREVQRU5EU18ke1BOfSA9ICIke1ZJUlRVQUwtUlVOVElNRV91cGRhdGUtYWx0ZXJuYXRpdmVzfSBvcGtnLWFyY2gtY29uZmlnIHJ1bi1wb3N0aW5zdHMgbGliYXJjaGl2ZSIKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmVzZGsgPSAiIgorUlJFUExBQ0VTXyR7UE59ID0gIm9wa2ctbm9ncGcgb3BrZy1jb2xsYXRlcmFsIgorUkNPTkZMSUNUU18ke1BOfSA9ICJvcGtnLWNvbGxhdGVyYWwiCitSUFJPVklERVNfJHtQTn0gPSAib3BrZy1jb2xsYXRlcmFsIgorCitQQUNLQUdFUyA9KyAibGlib3BrZyIKKworRklMRVNfbGlib3BrZyA9ICIke2xpYmRpcn0vKi5zby4qICR7T1BLR0xJQkRJUn0vb3BrZy8iCitGSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vb3BrZy9vcGtnLmNvbmYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29yYy9vcmNfMC40LjI0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcmMvb3JjXzAuNC4yNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTIwZjg4ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29yYy9vcmNfMC40LjI0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotU1VNTUFSWSA9ICJPcHRpbWlzZWQgSW5uZXIgTG9vcCBSdW50aW1lIENvbXBpbGVyIgotSE9NRVBBR0UgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvbW9kdWxlcy9vcmMuaHRtbCIKLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlICYgQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTQwMGJkOWQwOWU4YWY1NmI5ZWM5ODJiM2Q4NTc5N2UiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL29yYy9vcmMtJHtQVn0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOWU3OTNlYzM0YzBlMjAzMzk2NTlkZDRiYmJmNjIxMzUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzM4Y2Q0OTNiNTI0NzMwMDE0OTgyMWM2MzEyYmRmNzQyMmEzNTkzYWU5ODY5MWZjNzVkN2U0ZmU3MjdiZDM5YiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotUEFDS0FHRVMgPSsgIm9yYy1leGFtcGxlcyIKLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl5saWJvcmMtLioiCi1GSUxFU19vcmMtZXhhbXBsZXMgPSAiJHtsaWJkaXJ9L29yYy8qIgotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9LyoiCi0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKLSAgICBsaWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9JykKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsICdebGliKC4qKVwuc29cLionLCAnbGliJXMnLCAnT1JDICVzIGxpYnJhcnknLCBleHRyYV9kZXBlbmRzPScnLCBhbGxvd19saW5rcz1UcnVlKQotfQotCi1kb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlICgpIHsKLSAgICBzZWQgLWkgLWUgJ3MjL3RtcCMuI2cnICR7U30vb3JjL29yY2NvZGVtZW0uYwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcmMvb3JjXzAuNC4yNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3JjL29yY18wLjQuMjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODk3NDkzYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3JjL29yY18wLjQuMjUuYmIKQEAgLTAsMCArMSwyNyBAQAorU1VNTUFSWSA9ICJPcHRpbWlzZWQgSW5uZXIgTG9vcCBSdW50aW1lIENvbXBpbGVyIgorSE9NRVBBR0UgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvbW9kdWxlcy9vcmMuaHRtbCIKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlICYgQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTQwMGJkOWQwOWU4YWY1NmI5ZWM5ODJiM2Q4NTc5N2UiCisKK1NSQ19VUkkgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL29yYy9vcmMtJHtQVn0udGFyLnh6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiODU4MmEyOGIxNWY1MzExMGM4OGQ4MDQzZDlmNTViY2YiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzFiMWQ1NGE1OGYyNmQ0ODNmMGIzODgxNTM4OTg0Nzg5ZmU1ZDU0NjBhYjhmYWI3NGExY2FjYmQzZDFjNTNkMSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGd0ay1kb2MKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitQQUNLQUdFUyA9KyAib3JjLWV4YW1wbGVzIgorUEFDS0FHRVNfRFlOQU1JQyArPSAiXmxpYm9yYy0uKiIKK0ZJTEVTX29yYy1leGFtcGxlcyA9ICIke2xpYmRpcn0vb3JjLyoiCitGSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vKiIKKworcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgeworICAgIGxpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0nKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgJ15saWIoLiopXC5zb1wuKicsICdsaWIlcycsICdPUkMgJXMgbGlicmFyeScsIGV4dHJhX2RlcGVuZHM9JycsIGFsbG93X2xpbmtzPVRydWUpCit9CisKK2RvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy1uYXRpdmUgKCkgeworICAgIHNlZCAtaSAtZSAncyMvdG1wIy4jZycgJHtTfS9vcmMvb3JjY29kZW1lbS5jCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29zc3AtdXVpZC9vc3NwLXV1aWQvaW5zdGFsbC1wYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3NzcC11dWlkL29zc3AtdXVpZC9pbnN0YWxsLXBjLnBhdGNoCmluZGV4IDA0MjIyY2IuLjYzYjgwZjYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3NzcC11dWlkL29zc3AtdXVpZC9pbnN0YWxsLXBjLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3NzcC11dWlkL29zc3AtdXVpZC9pbnN0YWxsLXBjLnBhdGNoCkBAIC0yLDcgKzIsNyBAQAogZGlyZWN0b3J5LCBhbmQgbm90ICRTLgogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW3Nob3VsZCBiZSBzdWJtaXR0ZWRdCi1TaWduZWQtT2ZmLUJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KIAogSW5kZXg6IHV1aWQtMS42LjIvTWFrZWZpbGUuaW4KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3NzcC11dWlkL29zc3AtdXVpZF8xLjYuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3NzcC11dWlkL29zc3AtdXVpZF8xLjYuMi5iYgppbmRleCAwODkyNmJhLi44NWExYmNmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29zc3AtdXVpZC9vc3NwLXV1aWRfMS42LjIuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vc3NwLXV1aWQvb3NzcC11dWlkXzEuNi4yLmJiCkBAIC0xNiw4ICsxNiw5IEBACiAJICAgZmlsZTovL3V1aWRfbWQ1LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yODttZDU9OWMxZjRiMjIxODU0NmRlYWUyNGM5MWJlMWRjZjAwZGQiCiAKIFBSID0gInIyIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9vL29zc3AtdXVpZC8iCiAKLVNSQ19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL28vJHtCUE59LyR7QlBOfV8ke1BWfS5vcmlnLnRhci5neiBcCitTUkNfVVJJID0gImh0dHA6Ly9zbmFwc2hvdC5kZWJpYW4ub3JnL2FyY2hpdmUvZGViaWFuLzIwMTYwNzI4VDA0MzQ0M1ovcG9vbC9tYWluL28vJHtCUE59LyR7QlBOfV8ke1BWfS5vcmlnLnRhci5neiBcCiAJICAgZmlsZTovLzAwMDEtQ2hhbmdlLWxpYnJhcnktbmFtZS5wYXRjaCBcCiAJICAgZmlsZTovLzAwMDItdXVpZC1wcmVzZXJ2ZS1tLW9wdGlvbi1zdGF0dXMtaW4tdi1vcHRpb24taGFuZGxpbmcucGF0Y2ggXAogCSAgIGZpbGU6Ly8wMDAzLUZpeC13aGF0aXMtZW50cmllcy5wYXRjaCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtZGV2aWNlLWRldmVsLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWRldmljZS1kZXZlbC5iYgppbmRleCBlODMxODYwLi5lZGVlNDc0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtZGV2aWNlLWRldmVsLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1kZXZpY2UtZGV2ZWwuYmIKQEAgLTEsNSArMSw0IEBACiBTVU1NQVJZID0gIlByb3ZpZGVzIGEgc21hbGwgc2V0IG9mIHRvb2xzIGZvciBkZXZlbG9wbWVudCBvbiB0aGUgZGV2aWNlIgotTElDRU5TRSA9ICJNSVQiCiAKIFBSID0gInIxIgogCkBAIC0xMSw4ICsxMCw3IEBACiAKIFJERVBFTkRTXyR7UE59ID0gIlwKICAgICBkaXN0Y2MtY29uZmlnIFwKLSAgICBvcHJvZmlsZXVpLXNlcnZlciBcCiAgICAgbmZzLWV4cG9ydC1yb290IFwKICAgICBiYXNoIFwKKyAgICBiaW51dGlscy1zeW1saW5rcyBcCiAgICAgIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoZWxmL3BhdGNoZWxmL0luY3JlYXNlLW1heFNpemUtdG8tNjRNQi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2hlbGYvcGF0Y2hlbGYvSW5jcmVhc2UtbWF4U2l6ZS10by02NE1CLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5MDUwYTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoZWxmL3BhdGNoZWxmL0luY3JlYXNlLW1heFNpemUtdG8tNjRNQi5wYXRjaApAQCAtMCwwICsxLDQ2IEBACitGcm9tIGUzNjU4NzQwZWMxMDBlNGM4Y2Y4MzI5NTQ2MGIwMzI5NzllMWE5OWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBGYWJpbyBCZXJ0b24gPGZhYmlvLmJlcnRvbkBvc3N5c3RlbXMuY29tLmJyPgorRGF0ZTogRnJpLCA5IFNlcCAyMDE2IDE4OjIxOjMyIC0wMzAwCitTdWJqZWN0OiBbUEFUQ0hdIEluY3JlYXNlIG1heFNpemUgdG8gNjRNQgorT3JnYW5pemF0aW9uOiBPLlMuIFN5c3RlbXMgU29mdHdhcmUgTFREQS4KKworRml4IGVycm9yOgorCisvCit8RVJST1I6IHFlbXUtbmF0aXZlLTIuNS4wLXIxIGRvX3BvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmU6ICcoJ3BhdGNoZWxmLXVuaW5hdGl2ZScsCit8Jy0tc2V0LWludGVycHJldGVyJywgJy4uL2J1aWxkL3RtcC9zeXNyb290cy11bmluYXRpdmUveDg2XzY0LWxpbnV4L2xpYi8KK3xsZC1saW51eC14ODYtNjQuc28uMicsICcuLi9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvcWVtdS1uYXRpdmUvMi41LjAtcjEvCit8c3N0YXRlLWluc3RhbGwtcG9wdWxhdGVfc3lzcm9vdC94ODZfNjQtbGludXgvdXNyL2Jpbi9xZW11LW1pcHM2NCcpJworfGZhaWxlZCB3aXRoIGV4aXQgY29kZSAxIGFuZCB0aGUgZm9sbG93aW5nIG91dHB1dDoKK3x3YXJuaW5nOiB3b3JraW5nIGFyb3VuZCBhIExpbnV4IGtlcm5lbCBidWcgYnkgY3JlYXRpbmcgYSBob2xlIG9mIDM2MDMyNTEyCit8Ynl0ZXMgaW4g4oCYLi4vYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3FlbXUtbmF0aXZlLzIuNS4wLXIxLworfHNzdGF0ZS1pbnN0YWxsLXBvcHVsYXRlX3N5c3Jvb3QveDg2XzY0LWxpbnV4L3Vzci9iaW4vcWVtdS1taXBzNjTigJkKK3xtYXhpbXVtIGZpbGUgc2l6ZSBleGNlZWRlZAorXAorCitTaW1pbGFyIGlzc3VlIGlzIGRpc2N1c3NlZCBoZXJlOgoraHR0cHM6Ly9naXRodWIuY29tL05peE9TL3BhdGNoZWxmL2lzc3Vlcy80NworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBGYWJpbyBCZXJ0b24gPGZhYmlvLmJlcnRvbkBvc3N5c3RlbXMuY29tLmJyPgorLS0tCisgc3JjL3BhdGNoZWxmLmNjIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3BhdGNoZWxmLmNjIGIvc3JjL3BhdGNoZWxmLmNjCitpbmRleCBhNTljMTJkLi4wZmQ3MzU1IDEwMDY0NAorLS0tIGEvc3JjL3BhdGNoZWxmLmNjCisrKysgYi9zcmMvcGF0Y2hlbGYuY2MKK0BAIC0yNzksNyArMjc5LDcgQEAgc3RhdGljIHZvaWQgcmVhZEZpbGUoc3RyaW5nIGZpbGVOYW1lKQorICAgICBzdHJ1Y3Qgc3RhdCBzdDsKKyAgICAgaWYgKHN0YXQoZmlsZU5hbWUuY19zdHIoKSwgJnN0KSAhPSAwKSBlcnJvcigic3RhdCIpOworICAgICBmaWxlU2l6ZSA9IHN0LnN0X3NpemU7CistICAgIG1heFNpemUgPSBmaWxlU2l6ZSArIDMyICogMTAyNCAqIDEwMjQ7CisrICAgIG1heFNpemUgPSBmaWxlU2l6ZSArIDY0ICogMTAyNCAqIDEwMjQ7CisgCisgICAgIGNvbnRlbnRzID0gKHVuc2lnbmVkIGNoYXIgKikgbWFsbG9jKGZpbGVTaXplICsgbWF4U2l6ZSk7CisgICAgIGlmICghY29udGVudHMpIGFib3J0KCk7CistLSAKKzIuMS40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2hlbGYvcGF0Y2hlbGYvU2tpcC1lbXB0eS1zZWN0aW9uLWZpeGVzLTY2LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaGVsZi9wYXRjaGVsZi9Ta2lwLWVtcHR5LXNlY3Rpb24tZml4ZXMtNjYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWVlOGE1NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2hlbGYvcGF0Y2hlbGYvU2tpcC1lbXB0eS1zZWN0aW9uLWZpeGVzLTY2LnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gNzM1MjZjYjU0NmFlNmIwMGVhNjE2OWU0MGIwMWZiN2I1ZjBkYmI1MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEZhYmlvIEJlcnRvbiA8ZmFiaW8uYmVydG9uQG9zc3lzdGVtcy5jb20uYnI+CitEYXRlOiBUaHUsIDI4IEp1bCAyMDE2IDExOjA1OjA2IC0wMzAwCitTdWJqZWN0OiBbUEFUQ0hdIFNraXAgZW1wdHkgc2VjdGlvbiAoZml4ZXMgIzY2KQorT3JnYW5pemF0aW9uOiBPLlMuIFN5c3RlbXMgU29mdHdhcmUgTFREQS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEZhYmlvIEJlcnRvbiA8ZmFiaW8uYmVydG9uQG9zc3lzdGVtcy5jb20uYnI+CistLS0KKyBzcmMvcGF0Y2hlbGYuY2MgfCAzICsrKworIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9wYXRjaGVsZi5jYyBiL3NyYy9wYXRjaGVsZi5jYworaW5kZXggMTM2MDk4Zi4uMjY3N2EyNiAxMDA2NDQKKy0tLSBhL3NyYy9wYXRjaGVsZi5jYworKysrIGIvc3JjL3BhdGNoZWxmLmNjCitAQCAtNjg0LDYgKzY4NCw5IEBAIHZvaWQgRWxmRmlsZTxFbGZGaWxlUGFyYW1OYW1lcz46OnJld3JpdGVTZWN0aW9uc0V4ZWN1dGFibGUoKQorICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMTsgaSA8PSBsYXN0UmVwbGFjZWQ7ICsraSkgeworICAgICAgICAgRWxmX1NoZHIgJiBzaGRyKHNoZHJzW2ldKTsKKyAgICAgICAgIHN0cmluZyBzZWN0aW9uTmFtZSA9IGdldFNlY3Rpb25OYW1lKHNoZHIpOworKyAgICAgICAgaWYgKHNlY3Rpb25OYW1lID09ICIiKSB7CisrICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICB9CisgICAgICAgICBkZWJ1ZygibG9va2luZyBhdCBzZWN0aW9uIGAlcydcbiIsIHNlY3Rpb25OYW1lLmNfc3RyKCkpOworICAgICAgICAgLyogISEhIFdoeSBkbyB3ZSBzdG9wIGFmdGVyIGEgLmR5bnN0ciBzZWN0aW9uPyBJIGNhbid0CisgICAgICAgICAgICByZW1lbWJlciEgKi8KKy0tIAorMi4xLjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaGVsZi9wYXRjaGVsZi9oYW5kbGUtcmVhZC1vbmx5LWZpbGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaGVsZi9wYXRjaGVsZi9oYW5kbGUtcmVhZC1vbmx5LWZpbGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmYWZlYzQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoZWxmL3BhdGNoZWxmL2hhbmRsZS1yZWFkLW9ubHktZmlsZXMucGF0Y2gKQEAgLTAsMCArMSw1MyBAQAorRnJvbSAyYTYwM2FjYjY1OTkzNjk4YzIxZjFjNmViNzY2NGY5M2FkODMwZDUyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRmFiaW8gQmVydG9uIDxmYWJpby5iZXJ0b25Ab3NzeXN0ZW1zLmNvbS5icj4KK0RhdGU6IEZyaSwgOSBTZXAgMjAxNiAxNjowMDo0MiAtMDMwMAorU3ViamVjdDogW1BBVENIXSBoYW5kbGUgcmVhZC1vbmx5IGZpbGVzCitPcmdhbml6YXRpb246IE8uUy4gU3lzdGVtcyBTb2Z0d2FyZSBMVERBLgorCitQYXRjaCBmcm9tOgoraHR0cHM6Ly9naXRodWIuY29tL2RhcmVhbHNoaW5qaS9wYXRjaGVsZi9jb21taXQvNDBlNjYzOTJiYzRiOTZlOWI0ZWRhNDk2ODI3ZDI2MzQ4YTUwMzUwOQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogRmFiaW8gQmVydG9uIDxmYWJpby5iZXJ0b25Ab3NzeXN0ZW1zLmNvbS5icj4KKy0tLQorIHNyYy9wYXRjaGVsZi5jYyB8IDE2ICsrKysrKysrKysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3BhdGNoZWxmLmNjIGIvc3JjL3BhdGNoZWxmLmNjCitpbmRleCAxMzYwOThmLi5hZWEzNjBlIDEwMDY0NAorLS0tIGEvc3JjL3BhdGNoZWxmLmNjCisrKysgYi9zcmMvcGF0Y2hlbGYuY2MKK0BAIC0zODgsNyArMzg4LDE3IEBAIHZvaWQgRWxmRmlsZTxFbGZGaWxlUGFyYW1OYW1lcz46OnNvcnRTaGRycygpCisgCisgc3RhdGljIHZvaWQgd3JpdGVGaWxlKHN0cmluZyBmaWxlTmFtZSkKKyB7CistICAgIGludCBmZCA9IG9wZW4oZmlsZU5hbWUuY19zdHIoKSwgT19UUlVOQyB8IE9fV1JPTkxZKTsKKysgICAgc3RydWN0IHN0YXQgc3Q7CisrICAgIGludCBmZDsKKysKKysgICAgaWYgKHN0YXQoZmlsZU5hbWUuY19zdHIoKSwgJnN0KSAhPSAwKQorKyAgICAgICAgZXJyb3IoInN0YXQiKTsKKysKKysgICAgaWYgKGNobW9kKGZpbGVOYW1lLmNfc3RyKCksIDA2MDApICE9IDApCisrICAgICAgICBlcnJvcigiY2htb2QiKTsKKysKKysgICAgZmQgPSBvcGVuKGZpbGVOYW1lLmNfc3RyKCksIE9fVFJVTkMgfCBPX1dST05MWSk7CisrCisgICAgIGlmIChmZCA9PSAtMSkKKyAgICAgICAgIGVycm9yKCJvcGVuIik7CisgCitAQCAtMzk3LDYgKzQwNywxMCBAQCBzdGF0aWMgdm9pZCB3cml0ZUZpbGUoc3RyaW5nIGZpbGVOYW1lKQorIAorICAgICBpZiAoY2xvc2UoZmQpICE9IDApCisgICAgICAgICBlcnJvcigiY2xvc2UiKTsKKysKKysgICAgaWYgKGNobW9kKGZpbGVOYW1lLmNfc3RyKCksIHN0LnN0X21vZGUpICE9IDApCisrICAgICAgICBlcnJvcigiY2htb2QiKTsKKysKKyB9CisgCisgCistLSAKKzIuMS40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2hlbGYvcGF0Y2hlbGYvbWF4c2l6ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2hlbGYvcGF0Y2hlbGYvbWF4c2l6ZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2MwNGE4OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoZWxmL3BhdGNoZWxmL21heHNpemUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1Gcm9tIGY2ODg2YzJjMzNhMWNmODc3MTE2MzkxOWYzZDIwZjYzNDBjMGNlMzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBFZWxjbyBEb2xzdHJhIDxlZWxjby5kb2xzdHJhQGxvZ2ljYmxveC5jb20+Ci1EYXRlOiBGcmksIDEwIEp1bCAyMDE1IDE4OjEyOjM3ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIFF1aWNrIGZpeCBmb3IgIzQ3Ci0KLWh0dHBzOi8vZ2l0aHViLmNvbS9OaXhPUy9wYXRjaGVsZi9pc3N1ZXMvNDcKLQotQXZvaWQgaXNzdWVzIHdpdGggaG9sZXMgaW4gYmluYXJpZXMgc3VjaCBhcyBxZW11LXBjYyBmcm9tIHFlbXUtbmF0aXZlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotUlAKLTIwMTYvMi8zCi0KLS0tLQotIHNyYy9wYXRjaGVsZi5jYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9wYXRjaGVsZi5jYyBiL3NyYy9wYXRjaGVsZi5jYwotaW5kZXggODU2NmVkOS4uZGY3NTU5MyAxMDA2NDQKLS0tLSBhL3NyYy9wYXRjaGVsZi5jYwotKysrIGIvc3JjL3BhdGNoZWxmLmNjCi1AQCAtMjQ4LDcgKzI0OCw3IEBAIHN0YXRpYyB2b2lkIHJlYWRGaWxlKHN0cmluZyBmaWxlTmFtZSwgbW9kZV90ICogZmlsZU1vZGUpCi0gICAgIGlmIChzdGF0KGZpbGVOYW1lLmNfc3RyKCksICZzdCkgIT0gMCkgZXJyb3IoInN0YXQiKTsKLSAgICAgZmlsZVNpemUgPSBzdC5zdF9zaXplOwotICAgICAqZmlsZU1vZGUgPSBzdC5zdF9tb2RlOwotLSAgICBtYXhTaXplID0gZmlsZVNpemUgKyA4ICogMTAyNCAqIDEwMjQ7Ci0rICAgIG1heFNpemUgPSBmaWxlU2l6ZSArIDY0ICogMTAyNCAqIDEwMjQ7Ci0gCi0gICAgIGNvbnRlbnRzID0gKHVuc2lnbmVkIGNoYXIgKikgbWFsbG9jKGZpbGVTaXplICsgbWF4U2l6ZSk7Ci0gICAgIGlmICghY29udGVudHMpIGFib3J0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaGVsZi9wYXRjaGVsZl8wLjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoZWxmL3BhdGNoZWxmXzAuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQ4NGE3ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoZWxmL3BhdGNoZWxmXzAuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLVNSQ19VUkkgPSAiaHR0cDovL25peG9zLm9yZy9yZWxlYXNlcy8ke0JQTn0vJHtCUE59LSR7UFZ9LyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL21heHNpemUucGF0Y2giCi1MSUNFTlNFID0gIkdQTHYzIgotU1VNTUFSWSA9ICJUb29sIHRvIGFsbG93IGVkaXRpbmcgb2YgUlBBVEggYW5kIGludGVycHJldGVyIGZpZWxkcyBpbiBFTEYgYmluYXJpZXMiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1YjE1MWUzYzgzYjMxZjU5MzFiNGE5ZmMwMTYzNWJmZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjOTlmODRkMTI0MzQ3MzQwYzM2NzA3MDg5ZWM4ZjcwNTMwYWJkNTZlNzgyN2M1NGQ1MDZlYjRjYzA5N2ExN2U3IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaGVsZi9wYXRjaGVsZl8wLjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoZWxmL3BhdGNoZWxmXzAuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NGU2NTRiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaGVsZi9wYXRjaGVsZl8wLjkuYmIKQEAgLTAsMCArMSwxNyBAQAorU1JDX1VSSSA9ICJodHRwOi8vbml4b3Mub3JnL3JlbGVhc2VzLyR7QlBOfS8ke0JQTn0tJHtQVn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vU2tpcC1lbXB0eS1zZWN0aW9uLWZpeGVzLTY2LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2hhbmRsZS1yZWFkLW9ubHktZmlsZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vSW5jcmVhc2UtbWF4U2l6ZS10by02NE1CLnBhdGNoIFwKKyIKKworTElDRU5TRSA9ICJHUEx2MyIKK1NVTU1BUlkgPSAiVG9vbCB0byBhbGxvdyBlZGl0aW5nIG9mIFJQQVRIIGFuZCBpbnRlcnByZXRlciBmaWVsZHMgaW4gRUxGIGJpbmFyaWVzIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDAyNjg3NjI5YzdlMTY5OGE0ODZhOTNhMGQ2MDc5NDciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTBmNjVjMWJhMTQ4ODkwZTlmMmY3ODIzZjRiZWRmN2VjYWQ1NDE3NzcyZjY0Zjk5NDAwNGY1OWEzOTAxNGY4MyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF4LXV0aWxzL3BheC11dGlsc18xLjEuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF4LXV0aWxzL3BheC11dGlsc18xLjEuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTg4N2MwMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BheC11dGlscy9wYXgtdXRpbHNfMS4xLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1TVU1NQVJZID0gIlNlY3VyaXR5LWZvY3VzZWQgRUxGIGZpbGVzIGNoZWNraW5nIHRvb2wiCi1ERVNDUklQVElPTiA9ICJUaGlzIGlzIGEgc21hbGwgc2V0IG9mIHZhcmlvdXMgUGFYIGF3YXJlIGFuZCByZWxhdGVkIFwKLXV0aWxpdGllcyBmb3IgRUxGIGJpbmFyaWVzLiBJdCBjYW4gY2hlY2sgRUxGIGJpbmFyeSBmaWxlcyBhbmQgcnVubmluZyBcCi1wcm9jZXNzZXMgZm9yIGlzc3VlcyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50IHdoZW4gdXNpbmcgRUxGIGJpbmFyaWVzIFwKLWFsb25nIHdpdGggUGFYLCBzdWNoIGFzIG5vbi1QSUMgY29kZSBvciBleGVjdXRhYmxlIHN0YWNrIGFuZCBoZWFwLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ2VudG9vLm9yZy9wcm9qL2VuL2hhcmRlbmVkL3BheC11dGlscy54bWwiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWViNzIzYjYxNTM5ZmVlZjAxM2RlNDc2ZTY4YjVjNTBhIgotCi1TUkNfVVJJID0gImh0dHA6Ly9nZW50b28ub3N1b3NsLm9yZy9kaXN0ZmlsZXMvcGF4LXV0aWxzLSR7UFZ9LnRhci54eiBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiYzM2MTQzMjJlYWY4OGYxNjdhNjA4YWU4NWQ2YjIwNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyOTQ1YjNlNGRmMmUwZGM5NTgwMGJmYmQzZDg4YWIyMjQzYjJlZTRmZjA2NGJiZmM3NTczNGY2ZDlkOTg2YTg5IgotCi1SREVQRU5EU18ke1BOfSArPSAiYmFzaCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgdG91Y2ggJHtTfS9ORVdTICR7U30vQVVUSE9SUyAke1N9L0NoYW5nZUxvZyAke1N9L1JFQURNRQotfQotCi1kb19pbnN0YWxsKCkgewotICAgIG9lX3J1bm1ha2UgUFJFRklYPSR7RH0ke3ByZWZpeH0gREVTVERJUj0ke0R9IGluc3RhbGwKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsYXJnZWZpbGUnLCAnbGFyZ2VmaWxlJywgJycsIGQpfSBcCi0iCi1QQUNLQUdFQ09ORklHW2xpYmNhcF0gPSAiLS13aXRoLWNhcHMsIC0td2l0aG91dC1jYXBzLCBsaWJjYXAiCi1QQUNLQUdFQ09ORklHW2xpYnNlY2NvbXBdID0gIi0td2l0aC1zZWNjb21wLCAtLXdpdGhvdXQtc2VjY29tcCwgbGlic2VjY29tcCIKLVBBQ0tBR0VDT05GSUdbbGFyZ2VmaWxlXSA9ICItLWVuYWJsZS1sYXJnZWZpbGUsLS1kaXNhYmxlLWxhcmdlZmlsZSwsIgotUEFDS0FHRUNPTkZJR1tweWVsZnRvb2xzXSA9ICItLXdpdGgtcHl0aG9uLCAtLXdpdGhvdXQtcHl0aG9uLCwgcHllbGZ0b29scyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF4LXV0aWxzL3BheC11dGlsc18xLjEuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF4LXV0aWxzL3BheC11dGlsc18xLjEuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Y2M1NDYzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXgtdXRpbHMvcGF4LXV0aWxzXzEuMS42LmJiCkBAIC0wLDAgKzEsMzUgQEAKK1NVTU1BUlkgPSAiU2VjdXJpdHktZm9jdXNlZCBFTEYgZmlsZXMgY2hlY2tpbmcgdG9vbCIKK0RFU0NSSVBUSU9OID0gIlRoaXMgaXMgYSBzbWFsbCBzZXQgb2YgdmFyaW91cyBQYVggYXdhcmUgYW5kIHJlbGF0ZWQgXAordXRpbGl0aWVzIGZvciBFTEYgYmluYXJpZXMuIEl0IGNhbiBjaGVjayBFTEYgYmluYXJ5IGZpbGVzIGFuZCBydW5uaW5nIFwKK3Byb2Nlc3NlcyBmb3IgaXNzdWVzIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgd2hlbiB1c2luZyBFTEYgYmluYXJpZXMgXAorYWxvbmcgd2l0aCBQYVgsIHN1Y2ggYXMgbm9uLVBJQyBjb2RlIG9yIGV4ZWN1dGFibGUgc3RhY2sgYW5kIGhlYXAuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nZW50b28ub3JnL3Byb2ovZW4vaGFyZGVuZWQvcGF4LXV0aWxzLnhtbCIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWI3MjNiNjE1MzlmZWVmMDEzZGU0NzZlNjhiNWM1MGEiCisKK1NSQ19VUkkgPSAiaHR0cDovL2dlbnRvby5vc3Vvc2wub3JnL2Rpc3RmaWxlcy9wYXgtdXRpbHMtJHtQVn0udGFyLnh6IFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjk2ZjU2YTVhMTBlZDUwZjI0NDhjNWNjZWJkMjc3NjRmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImY1NDM2YzUxN2JlYTQwZjcwMzVlYzI5YTZmMzQwMzRjNzM5Yjk0M2YyZTNhMDgwZDc2ZGY1ZGZkN2ZkNDFiMTIiCisKK1JERVBFTkRTXyR7UE59ICs9ICJiYXNoIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICB0b3VjaCAke1N9L05FV1MgJHtTfS9BVVRIT1JTICR7U30vQ2hhbmdlTG9nICR7U30vUkVBRE1FCit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgb2VfcnVubWFrZSBQUkVGSVg9JHtEfSR7cHJlZml4fSBERVNURElSPSR7RH0gaW5zdGFsbAorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2xhcmdlZmlsZScsICdsYXJnZWZpbGUnLCAnJywgZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdbbGliY2FwXSA9ICItLXdpdGgtY2FwcywgLS13aXRob3V0LWNhcHMsIGxpYmNhcCIKK1BBQ0tBR0VDT05GSUdbbGlic2VjY29tcF0gPSAiLS13aXRoLXNlY2NvbXAsIC0td2l0aG91dC1zZWNjb21wLCBsaWJzZWNjb21wIgorUEFDS0FHRUNPTkZJR1tsYXJnZWZpbGVdID0gIi0tZW5hYmxlLWxhcmdlZmlsZSwtLWRpc2FibGUtbGFyZ2VmaWxlLCwiCitQQUNLQUdFQ09ORklHW3B5ZWxmdG9vbHNdID0gIi0td2l0aC1weXRob24sIC0td2l0aG91dC1weXRob24sLCBweWVsZnRvb2xzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1wYXJzZXItcGVybF8yLjQ0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1wYXJzZXItcGVybF8yLjQ0LmJiCmluZGV4IDk1NjFhNTkuLjNhY2Q4MjYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtcGFyc2VyLXBlcmxfMi40NC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXBhcnNlci1wZXJsXzIuNDQuYmIKQEAgLTMsNyArMyw3IEBACiBMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT0yO2VuZGxpbmU9NjttZDU9Yzg3NjdkNzUxNjIyOWYwN2IyNmU0MmQxY2Y4YjUxZjEiCiAKLURFUEVORFMgKz0gImV4cGF0IGV4cGF0LW5hdGl2ZSIKK0RFUEVORFMgKz0gImV4cGF0IgogCiBTUkNfVVJJID0gImh0dHA6Ly93d3cuY3Bhbi5vcmcvbW9kdWxlcy9ieS1tb2R1bGUvWE1ML1hNTC1QYXJzZXItJHtQVn0udGFyLmd6IgogU1JDX1VSSVttZDVzdW1dID0gImFmNDgxM2ZlMzk1MjM2MjQ1MTIwMWNlZDZmYmNlMzc5IgpAQCAtMzIsNCArMzIsMyBAQAogfQogCiBCQkNMQVNTRVhURU5EPSJuYXRpdmUiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsLW5hdGl2ZV81LjIyLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC1uYXRpdmVfNS4yMi4xLmJiCmluZGV4IGVkODIyMmYuLjFjMjE1MjIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsLW5hdGl2ZV81LjIyLjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwtbmF0aXZlXzUuMjIuMS5iYgpAQCAtMTEsNiArMTEsNyBAQAogICAgICAgICAgICBmaWxlOi8vZGViaWFuL2Vycm5vX3Zlci5kaWZmIFwKICAgICAgICAgICAgZmlsZTovL2R5bmFsb2FkZXJoYWNrLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3BlcmwtUGF0aFRvb2xzLWRvbi10LWZpbHRlci1vdXQtYmxpYi1mcm9tLUlOQy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wZXJsLXJlbW92ZS1ubS1mcm9tLWxpYnN3YW50ZWQucGF0Y2ggXAogICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gIjY2NzFlNDgyOWNiYWY5Y2VjYWZhOWE4NGYxNDFiMGEzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwtcHRlc3QuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwtcHRlc3QuaW5jCmluZGV4IDk0OGVhN2MuLmQxMzZjNWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsLXB0ZXN0LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC1wdGVzdC5pbmMKQEAgLTUsMTAgKzUsMTEgQEAKIAogZG9faW5zdGFsbF9wdGVzdCAoKSB7CiAJbWtkaXIgLXAgJHtEfSR7UFRFU1RfUEFUSH0KKwlzZWQgLWUgInM6XC91c3JcL2xvY2FsOiR7YmluZGlyfTpnIiAtaSBjcGFuL3ZlcnNpb24vdC8qCiAJc2VkIC1lICJzOlwvb3B0OlwvdXNyOiIgLWkgUG9ydGluZy9hZGQtcGFja2FnZS5wbAogCXNlZCAtZSAiczpcL2xvY2FsXC9nbnVcLzpcLzoiIC1pIGhpbnRzL2N4dXguc2gKLQl0YXIgLWNmIC0gKiAtLWV4Y2x1ZGUgXCoubyAtLWV4Y2x1ZGUgbGlicGVybC5zbyAtLWV4Y2x1ZGUgTWFrZWZpbGUgLS1leGNsdWRlIG1ha2VmaWxlIC0tZXhjbHVkZSBob3N0cGVybCBcCi0JCS0tZXhjbHVkZSBtaW5pcGVybCAtLWV4Y2x1ZGUgZ2VuZXJhdGVfdXVkbWFwIC0tZXhjbHVkZSBwYXRjaGVzIHwgKCBjZCAke0R9JHtQVEVTVF9QQVRIfSAmJiB0YXIgLXhmIC0gKQorCXRhciAtYyAtLWV4Y2x1ZGU9XCoubyAtLWV4Y2x1ZGU9bGlicGVybC5zbyAtLWV4Y2x1ZGU9TWFrZWZpbGUgLS1leGNsdWRlPW1ha2VmaWxlIC0tZXhjbHVkZT1ob3N0cGVybCBcCisJCS0tZXhjbHVkZT1taW5pcGVybCAtLWV4Y2x1ZGU9Z2VuZXJhdGVfdXVkbWFwIC0tZXhjbHVkZT1wYXRjaGVzICogfCAoIGNkICR7RH0ke1BURVNUX1BBVEh9ICYmIHRhciAteCApCiAKIAlzZWQgLWkgLWUgInMsJHtEfSwsZyIgXAogCSAgICAgICAtZSAicywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfSwsZyIgXApAQCAtMzQsNCArMzUsNCBAQAogICAgICAgICAgICAgJyR7UE59LXB0ZXN0JXMnLCAnJXMnLCByZWN1cnNpdmU9VHJ1ZSwgbWF0Y2hfcGF0aD1UcnVlKQogfQogCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAiJHtQTn0tbW9kdWxlcyAke1BOfS1kb2MgJHtQTn0tbWlzYyBzZWQiCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiJHtQTn0tbW9kdWxlcyAke1BOfS1kb2MgJHtQTn0tbWlzYyBzZWQgbGlic3NwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwtcmRlcGVuZHNfNS4yMi4xLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsLXJkZXBlbmRzXzUuMjIuMS5pbmMKaW5kZXggODMwZWNjZS4uMmM0OTdmZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwtcmRlcGVuZHNfNS4yMi4xLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC1yZGVwZW5kc181LjIyLjEuaW5jCkBAIC0xOCw4ICsxOCw5IEBACiAKICMgU29tZSBhZGRpdGlvbmFsIGRlcGVuZGVuY2llcyB0aGF0IHRoZSBhYm92ZSBkb2Vzbid0IG1hbmFnZSB0byBmaWd1cmUgb3V0CiBSREVQRU5EU18ke1BOfS1tb2R1bGUtZmlsZS1zcGVjICs9ICIke1BOfS1tb2R1bGUtZmlsZS1zcGVjLXVuaXgiCi1ERVBFTkRTXyR7UE59LW1vZHVsZS1tYXRoLWJpZ2ludCArPSAiJHtQTn0tbW9kdWxlLW1hdGgtYmlnaW50LWNhbGMiCitSREVQRU5EU18ke1BOfS1tb2R1bGUtbWF0aC1iaWdpbnQgKz0gIiR7UE59LW1vZHVsZS1tYXRoLWJpZ2ludC1jYWxjIgogUkRFUEVORFNfJHtQTn0tbW9kdWxlLXRocmVhZC1xdWV1ZSArPSAiJHtQTn0tbW9kdWxlLWF0dHJpYnV0ZXMiCitSREVQRU5EU18ke1BOfS1tb2R1bGUtb3ZlcmxvYWQgKz0gIiR7UE59LW1vZHVsZS1vdmVybG9hZGluZyIKIAogCiAjIERlcGVuZHMgbGlzdApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvY29uZmlnLnNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvY29uZmlnLnNoCmluZGV4IDU5ZTAxNmUuLmIyYTdmMmMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2NvbmZpZy5zaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9jb25maWcuc2gKQEAgLTgsNyArOCw3IEBACiAKICMgUGFja2FnZSBuYW1lICAgICAgOiBwZXJsNQogIyBTb3VyY2UgZGlyZWN0b3J5ICA6IC4KLSMgQ29uZmlndXJhdGlvbiB0aW1lOiBUaHUgSnVuIDE4IDA1OjM3OjI3IFVUQyAyMDE1CisjIENvbmZpZ3VyYXRpb24gdGltZTogRnJpIE1heSAgNiAyMDoxMzo0NiBQRFQgMjAxNgogIyBDb25maWd1cmVkIGJ5ICAgICA6IE9wZW4gRW1iZWRkZWQKICMgVGFyZ2V0IHN5c3RlbSAgICAgOiBsaW51eCBxZW11eDg2LTY0IDMuMTkuNS15b2N0by1zdGFuZGFyZCAjMSBzbXAgcHJlZW1wdCB0dWUganVuIDE2IDAwOjI4OjE3IHBkdCAyMDE1IHg4Nl82NCBnbnVsaW51eAogCkBAIC02Niw3ICs2Niw3IEBACiBhcGlfcmV2aXNpb249JzUnCiBhcGlfc3VidmVyc2lvbj0nMCcKIGFwaV92ZXJzaW9uPScyMicKLWFwaV92ZXJzaW9uc3RyaW5nPSc1LjIyLjEnCithcGlfdmVyc2lvbnN0cmluZz0nNS4yMi4wJwogYXI9J2FyJwogYXJjaGxpYj0nQExJQkRJUkAvcGVybC81LjIyLjEvQEFSQ0hALXRocmVhZC1tdWx0aScKIGFyY2hsaWJleHA9J0BTVEFHSU5HRElSQEBMSUJESVJAL3BlcmwvNS4yMi4xL0BBUkNIQC10aHJlYWQtbXVsdGknCkBAIC05Niw3ICs5Niw3IEBACiBjY3ZlcnNpb249JycKIGNmX2J5PSdPcGVuIEVtYmVkZGVkJwogY2ZfZW1haWw9J09wZW4gRW1iZWRkZWRAbG9jYWxob3N0LmxvY2FsZG9tYWluJwotY2ZfdGltZT0nVGh1IEp1biAxOCAwNTozNzoyNyBVVEMgMjAxNScKK2NmX3RpbWU9J0ZyaSBNYXkgIDYgMjA6MTM6NDYgUERUIDIwMTYnCiBjaGFyYml0cz0nOCcKIGNoYXJzaXplPScxJwogY2hncnA9JycKQEAgLTExOTQsNyArMTE5NCw3IEBACiB2ZW5kb3JzY3JpcHQ9J0BVU1JCSU5AJwogdmVuZG9yc2NyaXB0ZXhwPSdAVVNSQklOQCcKIHZlcnNpb249JzUuMjIuMScKLXZlcnNpb25fcGF0Y2hsZXZlbF9zdHJpbmc9J3ZlcnNpb24gMjIgc3VidmVyc2lvbiAwJwordmVyc2lvbl9wYXRjaGxldmVsX3N0cmluZz0ndmVyc2lvbiAyMiBzdWJ2ZXJzaW9uIDEnCiB2ZXJzaW9ub25seT0ndW5kZWYnCiB2aT0nJwogeGxpYnB0aD0nQExJQkRJUkAvMzg2IEBCQVNFTElCRElSQDM4NicKQEAgLTEyMDQsNyArMTIwNCw3IEBACiB6aXA9J3ppcCcKIFBFUkxfUkVWSVNJT049NQogUEVSTF9WRVJTSU9OPTIyCi1QRVJMX1NVQlZFUlNJT049MAorUEVSTF9TVUJWRVJTSU9OPTEKIFBFUkxfQVBJX1JFVklTSU9OPTUKIFBFUkxfQVBJX1ZFUlNJT049MjIKIFBFUkxfQVBJX1NVQlZFUlNJT049MApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZml4X2JhZF9ycGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2ZpeF9iYWRfcnBhdGgucGF0Y2gKaW5kZXggNjlhYzQzNC4uNzY1MDEyOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZml4X2JhZF9ycGF0aC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9maXhfYmFkX3JwYXRoLnBhdGNoCkBAIC0xLDUgKzEsNSBAQAogVXBzdHJlYW0tU3RhdHVzOkluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotU2lnbmVkLU9mZi1CeTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+CiAyMDExLzA3LzAxCiAKIEZpeCB0aGVzZSBQYWNrYWdlIFFBIHdhcm5pbmdzIGJlZm9yZSB0aGV5IGFyZSBjb252ZXJ0ZWQgaW50byBmZXRhbCBlcnJvcnM6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9wZXJsLWNvbmZpZ3VyZS5zaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL3BlcmwtY29uZmlndXJlLnNoCmluZGV4IGU3MmNlNDkuLjI1ZTdmOGIgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL3BlcmwtY29uZmlndXJlLnNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL3BlcmwtY29uZmlndXJlLnNoCkBAIC0xNSw3ICsxNSw3IEBACiAgICAgICAgIC1EcHJlZml4PS91c3IgXAogICAgICAgICAtRHZlbmRvcnByZWZpeD0vdXNyIFwKICAgICAgICAgLURzaXRlcHJlZml4PS91c3IgXAotICAgICAgICAtRG90aGVybGliZGlycz0vdXNyL2xpYi9wZXJsNS81LjEyLjMgXAorICAgICAgICAtRG90aGVybGliZGlycz0vdXNyL2xpYi9wZXJsNS81LjIyLjEgXAogICAgICAgICAtRHVzZXNocnBsaWIgXAogICAgICAgICAtRHVzZXRocmVhZHMgXAogICAgICAgICAtRHVzZWl0aHJlYWRzIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL3BlcmwtZml4LUNWRS0yMDE1LTg2MDcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9wZXJsLWZpeC1DVkUtMjAxNS04NjA3LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiNGEwMDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9wZXJsLWZpeC1DVkUtMjAxNS04NjA3LnBhdGNoCkBAIC0wLDAgKzEsNzQgQEAKK0Zyb20gNjUyYzhkNDg1MmE2OWYxYmI0ZDM4Nzk0NmY5Yjc2MzUwYTFmMGQwZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRvbnkgQ29vayA8dG9ueUBkZXZlbG9wLWhlbHAuY29tPgorRGF0ZTogVHVlLCAxNSBEZWMgMjAxNSAxMDo1Njo1NCArMTEwMAorU3ViamVjdDogW1BBVENIXSBwZXJsOiBmaXggQ1ZFLTIwMTUtODYwNworCitlbnN1cmUgRmlsZTo6U3BlYzo6Y2Fub25wYXRoKCkgcHJlc2VydmVzIHRhaW50CisKK1ByZXZpb3VzbHkgdGhlIHVuaXggc3BlY2lmaWMgWFMgaW1wbGVtZW50YXRpb24gb2YgY2Fub25wYXRoKCkgd291bGQKK3JldHVybiBhbiB1bnRhaW50ZWQgcGF0aCB3aGVuIHN1cHBsaWVkIGEgdGFpbnRlZCBwYXRoLgorCitGb3IgdGhlIGVtcHR5IHN0cmluZyBjYXNlLCBuZXdTVnB2cygpIGFscmVhZHkgc2V0cyB0YWludCBhcyBuZWVkZWQgb24KK2l0cyByZXN1bHQuCisKK1RoaXMgaXNzdWUgd2FzIGFzc2lnbmVkIENWRS0yMDE1LTg2MDcuICBbcGVybCAjMTI2ODYyXQorCitCYWNrcG9ydCBwYXRjaCBmcm9tIGh0dHA6Ly9wZXJsNS5naXQucGVybC5vcmcvcGVybC5naXQvY29tbWl0ZGlmZi8wYjZmOTMwMzZkZTE3MWMxMmJhOTVkNDE1ZTI2NGQ5Y2Y3ZjRlMWZkCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK0NWRTogQ1ZFLTIwMTUtODYwNworU2lnbmVkLW9mZi1ieTogTWluZ2xpIFl1IDxNaW5nbGkuWXVAd2luZHJpdmVyLmNvbT4KKy0tLQorIGRpc3QvUGF0aFRvb2xzL0N3ZC54cyAgICB8ICAxICsKKyBkaXN0L1BhdGhUb29scy90L3RhaW50LnQgfCAxOSArKysrKysrKysrKysrKysrKystCisgMiBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9kaXN0L1BhdGhUb29scy9Dd2QueHMgYi9kaXN0L1BhdGhUb29scy9Dd2QueHMKK2luZGV4IDlkNGRjZjAuLjNkMDE4ZGMgMTAwNjQ0CistLS0gYS9kaXN0L1BhdGhUb29scy9Dd2QueHMKKysrKyBiL2Rpc3QvUGF0aFRvb2xzL0N3ZC54cworQEAgLTUzNSw2ICs1MzUsNyBAQCBUSFhfdW5peF9jYW5vbnBhdGgocFRIWF8gU1YgKnBhdGgpCisgICAgICpvID0gMDsKKyAgICAgU3ZQT0tfb24ocmV0dmFsKTsKKyAgICAgU3ZDVVJfc2V0KHJldHZhbCwgbyAtIFN2UFZYKHJldHZhbCkpOworKyAgICBTdlRBSU5UKHJldHZhbCk7CisgICAgIHJldHVybiByZXR2YWw7CisgfQorIAorZGlmZiAtLWdpdCBhL2Rpc3QvUGF0aFRvb2xzL3QvdGFpbnQudCBiL2Rpc3QvUGF0aFRvb2xzL3QvdGFpbnQudAoraW5kZXggMzA5YjNlNS4uNDhmOGM1YiAxMDA2NDQKKy0tLSBhL2Rpc3QvUGF0aFRvb2xzL3QvdGFpbnQudAorKysrIGIvZGlzdC9QYXRoVG9vbHMvdC90YWludC50CitAQCAtMTIsNyArMTIsNyBAQCB1c2UgVGVzdDo6TW9yZTsKKyBCRUdJTiB7CisgICAgIHBsYW4oCisgICAgICAgICAke15UQUlOVH0KKy0gICAgICAgID8gKHRlc3RzID0+IDE3KQorKyAgICAgICAgPyAodGVzdHMgPT4gMjEpCisgICAgICAgICA6IChza2lwX2FsbCA9PiAiQSBwZXJsIHdpdGhvdXQgdGFpbnQgc3VwcG9ydCIpCisgICAgICk7CisgfQorQEAgLTM0LDMgKzM0LDIwIEBAIGZvcmVhY2ggbXkgJGZ1bmMgKEBGdW5jdGlvbnMpIHsKKyAKKyAjIFByZXZpb3VzIHZlcnNpb25zIG9mIEN3ZCB0YWludGVkICReTworIGlzICF0YWludGVkKCReTyksIDEsICJcJF5PIHNob3VsZCBub3QgYmUgdGFpbnRlZCI7CisrCisreworKyAgICAjIFtwZXJsICMxMjY4NjJdIGNhbm9ucGF0aCgpIGxvc2VzIHRhaW50CisrICAgIG15ICR0YWludGVkID0gc3Vic3RyKCRFTlZ7UEFUSH0sIDAsIDApOworKyAgICAjIHllcywgZ2V0Y3dkKCkncyByZXN1bHQgc2hvdWxkIGJlIHRhaW50ZWQsIGFuZCBpcyB0ZXN0ZWQgYWJvdmUKKysgICAgIyBidXQgYmUgc3VyZQorKyAgICBvayB0YWludGVkKEZpbGU6OlNwZWMtPmNhbm9ucGF0aCgkdGFpbnRlZCAuIEN3ZDo6Z2V0Y3dkKSksCisrICAgICAgICAiY2Fub25wYXRoKCkga2VlcHMgdGFpbnQgb24gbm9uLWVtcHR5IHN0cmluZyI7CisrICAgIG9rIHRhaW50ZWQoRmlsZTo6U3BlYy0+Y2Fub25wYXRoKCR0YWludGVkKSksCisrICAgICAgICAiY2Fub25wYXRoKCkga2VlcHMgdGFpbnQgb24gZW1wdHkgc3RyaW5nIjsKKysKKysgICAgKEN3ZDo6Z2V0Y3dkKCkgPX4gL14oLiopLyk7CisrICAgIG15ICR1bnRhaW50ZWQgPSAkMTsKKysgICAgb2sgIXRhaW50ZWQoJHVudGFpbnRlZCksICJtYWtlIHN1cmUgb3VyIHVudGFpbnRlZCB2YWx1ZSBpcyB1bnRhaW50ZWQiOworKyAgICBvayAhdGFpbnRlZChGaWxlOjpTcGVjLT5jYW5vbnBhdGgoJHVudGFpbnRlZCkpLAorKyAgICAgICAgImNhbm9ucGF0aCgpIGRvZXNuJ3QgYWRkIHRhaW50IHRvIHVudGFpbnRlZCBzdHJpbmciOworK30KKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvcGVybC1maXgtQ1ZFLTIwMTYtMTIzOC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL3BlcmwtZml4LUNWRS0yMDE2LTEyMzgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzMwZWYxNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL3BlcmwtZml4LUNWRS0yMDE2LTEyMzgucGF0Y2gKQEAgLTAsMCArMSwzNTIgQEAKK0Zyb20gOTk4N2JlM2QyNDI4NmQ5NmQ5ZGNjZWMwNDMzMjUzZWU4YWQ4OTRiNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRvbnkgQ29vayA8dG9ueUBkZXZlbG9wLWhlbHAuY29tPgorRGF0ZTogVHVlLCAyMSBKdW4gMjAxNiAxMDowMjowMiArMTAwMAorU3ViamVjdDogW1BBVENIXSBwZXJsOiBmaXggQ1ZFLTIwMTYtMTIzOAorCisocGVybCAjMTI3ODM0KSByZW1vdmUgLiBmcm9tIHRoZSBlbmQgb2YgQElOQyBpZiBjb21wbGV4IG1vZHVsZXMgYXJlIGxvYWRlZAorCitXaGlsZSBjdXJyZW50bHkgRW5jb2RlIGFuZCBTdG9yYWJsZSBhcmUga25vdyB0byBhdHRlbXB0IHRvIGxvYWQgbW9kdWxlcworbm90IGluY2x1ZGVkIGluIHRoZSBjb3JlLCB1cGRhdGVzIHRvIG90aGVyIG1vZHVsZXMgbWF5IGxlYWQgdG8gdGhvc2UKK2Fsc28gYXR0ZW1wdGluZyB0byBsb2FkIG5ldyBtb2R1bGVzLCBzbyBiZSBzYWZlIGFuZCByZW1vdmUgLiBmb3IgdGhvc2UKK2FzIHdlbGwuCisKK0JhY2twb3J0IHBhdGNoIGZyb20gaHR0cDovL3Blcmw1LmdpdC5wZXJsLm9yZy9wZXJsLmdpdC9jb21taXRkaWZmL2NlZTk2ZDUyYzM5YjFlN2IzNmUxYzYyZDM4YmNkOGQ4NmU5YTQxYWIKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQ1ZFOiBDVkUtMjAxNi0xMjM4CitTaWduZWQtb2ZmLWJ5OiBNaW5nbGkgWXUgPE1pbmdsaS5ZdUB3aW5kcml2ZXIuY29tPgorLS0tCisgY3Bhbi9BcmNoaXZlLVRhci9iaW4vcHRhciAgICAgICAgICAgICAgICAgfCAxICsKKyBjcGFuL0FyY2hpdmUtVGFyL2Jpbi9wdGFyZGlmZiAgICAgICAgICAgICB8IDEgKworIGNwYW4vQXJjaGl2ZS1UYXIvYmluL3B0YXJncmVwICAgICAgICAgICAgIHwgMSArCisgY3Bhbi9DUEFOL3NjcmlwdHMvY3BhbiAgICAgICAgICAgICAgICAgICAgfCAxICsKKyBjcGFuL0RpZ2VzdC1TSEEvc2hhc3VtICAgICAgICAgICAgICAgICAgICB8IDEgKworIGNwYW4vRW5jb2RlL2Jpbi9lbmMyeHMgICAgICAgICAgICAgICAgICAgIHwgMSArCisgY3Bhbi9FbmNvZGUvYmluL2VuY2d1ZXNzICAgICAgICAgICAgICAgICAgfCAxICsKKyBjcGFuL0VuY29kZS9iaW4vcGljb252ICAgICAgICAgICAgICAgICAgICB8IDEgKworIGNwYW4vRW5jb2RlL2Jpbi91Y21saW50ICAgICAgICAgICAgICAgICAgIHwgMSArCisgY3Bhbi9FbmNvZGUvYmluL3VuaWR1bXAgICAgICAgICAgICAgICAgICAgfCAxICsKKyBjcGFuL0V4dFV0aWxzLU1ha2VNYWtlci9iaW4vaW5zdG1vZHNoICAgICB8IDEgKworIGNwYW4vSU8tQ29tcHJlc3MvYmluL3ppcGRldGFpbHMgICAgICAgICAgIHwgMSArCisgY3Bhbi9KU09OLVBQL2Jpbi9qc29uX3BwICAgICAgICAgICAgICAgICAgfCAxICsKKyBjcGFuL1Rlc3QtSGFybmVzcy9iaW4vcHJvdmUgICAgICAgICAgICAgICB8IDEgKworIGRpc3QvRXh0VXRpbHMtUGFyc2VYUy9saWIvRXh0VXRpbHMveHN1YnBwIHwgMSArCisgZGlzdC9Nb2R1bGUtQ29yZUxpc3QvY29yZWxpc3QgICAgICAgICAgICAgfCAxICsKKyBleHQvUG9kLUh0bWwvYmluL3BvZDJodG1sICAgICAgICAgICAgICAgICB8IDEgKworIHV0aWxzL2MycGguUEwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMSArCisgdXRpbHMvaDJwaC5QTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICsrCisgdXRpbHMvaDJ4cy5QTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICsrCisgdXRpbHMvbGlibmV0Y2ZnLlBMICAgICAgICAgICAgICAgICAgICAgICAgfCAxICsKKyB1dGlscy9wZXJsYnVnLlBMICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEgKworIHV0aWxzL3Blcmxkb2MuUEwgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNSArKysrLQorIHV0aWxzL3BlcmxpdnAuUEwgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArKworIHV0aWxzL3NwbGFpbi5QTCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNiArKysrKysKKyAyNSBmaWxlcyBjaGFuZ2VkLCAzNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jcGFuL0FyY2hpdmUtVGFyL2Jpbi9wdGFyIGIvY3Bhbi9BcmNoaXZlLVRhci9iaW4vcHRhcgoraW5kZXggMGVhZmZhNy4uOWRjNjQwMiAxMDA2NDQKKy0tLSBhL2NwYW4vQXJjaGl2ZS1UYXIvYmluL3B0YXIKKysrKyBiL2NwYW4vQXJjaGl2ZS1UYXIvYmluL3B0YXIKK0BAIC0xLDYgKzEsNyBAQAorICMhL3Vzci9iaW4vcGVybAorIHVzZSBzdHJpY3Q7CisgCisrQkVHSU4geyBwb3AgQElOQyBpZiAkSU5DWy0xXSBlcSAnLicgfQorIHVzZSBGaWxlOjpGaW5kOworIHVzZSBHZXRvcHQ6OlN0ZDsKKyB1c2UgQXJjaGl2ZTo6VGFyOworZGlmZiAtLWdpdCBhL2NwYW4vQXJjaGl2ZS1UYXIvYmluL3B0YXJkaWZmIGIvY3Bhbi9BcmNoaXZlLVRhci9iaW4vcHRhcmRpZmYKK2luZGV4IDY2YmQ4NTkuLjQ2NjhmYTYgMTAwNjQ0CistLS0gYS9jcGFuL0FyY2hpdmUtVGFyL2Jpbi9wdGFyZGlmZgorKysrIGIvY3Bhbi9BcmNoaXZlLVRhci9iaW4vcHRhcmRpZmYKK0BAIC0xLDUgKzEsNiBAQAorICMhL3Vzci9iaW4vcGVybAorIAorK0JFR0lOIHsgcG9wIEBJTkMgaWYgJElOQ1stMV0gZXEgJy4nIH0KKyB1c2Ugc3RyaWN0OworIHVzZSBBcmNoaXZlOjpUYXI7CisgdXNlIEdldG9wdDo6U3RkOworZGlmZiAtLWdpdCBhL2NwYW4vQXJjaGl2ZS1UYXIvYmluL3B0YXJncmVwIGIvY3Bhbi9BcmNoaXZlLVRhci9iaW4vcHRhcmdyZXAKK2luZGV4IDFhMzIwZjEuLjhkYzZiNGYgMTAwNjQ0CistLS0gYS9jcGFuL0FyY2hpdmUtVGFyL2Jpbi9wdGFyZ3JlcAorKysrIGIvY3Bhbi9BcmNoaXZlLVRhci9iaW4vcHRhcmdyZXAKK0BAIC00LDYgKzQsNyBAQAorICMgYXJjaGl2ZS4gIFNlZSAncHRhcmdyZXAgLS1oZWxwJyBmb3IgbW9yZSBkb2N1bWVudGF0aW9uLgorICMKKyAKKytCRUdJTiB7IHBvcCBASU5DIGlmICRJTkNbLTFdIGVxICcuJyB9CisgdXNlIHN0cmljdDsKKyB1c2Ugd2FybmluZ3M7CisgCitkaWZmIC0tZ2l0IGEvY3Bhbi9DUEFOL3NjcmlwdHMvY3BhbiBiL2NwYW4vQ1BBTi9zY3JpcHRzL2NwYW4KK2luZGV4IDVmNDMyMGUuLmNjYmE0N2UgMTAwNjQ0CistLS0gYS9jcGFuL0NQQU4vc2NyaXB0cy9jcGFuCisrKysgYi9jcGFuL0NQQU4vc2NyaXB0cy9jcGFuCitAQCAtMSw1ICsxLDYgQEAKKyAjIS91c3IvbG9jYWwvYmluL3BlcmwKKyAKKytCRUdJTiB7IHBvcCBASU5DIGlmICRJTkNbLTFdIGVxICcuJyB9CisgdXNlIHN0cmljdDsKKyB1c2UgdmFycyBxdygkVkVSU0lPTik7CisgCitkaWZmIC0tZ2l0IGEvY3Bhbi9EaWdlc3QtU0hBL3NoYXN1bSBiL2NwYW4vRGlnZXN0LVNIQS9zaGFzdW0KK2luZGV4IDE0ZGRkNjAuLjYyYTJiMGUgMTAwNjQ0CistLS0gYS9jcGFuL0RpZ2VzdC1TSEEvc2hhc3VtCisrKysgYi9jcGFuL0RpZ2VzdC1TSEEvc2hhc3VtCitAQCAtMTMsNiArMTMsNyBAQAorIAkjIyAiLTAiIG9wdGlvbiBmb3IgcmVhZGluZyBiaXQgc3RyaW5ncywgYW5kCisgCSMjICItcCIgb3B0aW9uIGZvciBwb3J0YWJsZSBkaWdlc3RzICh0byBiZSBkZXByZWNhdGVkKS4KKyAKKytCRUdJTiB7IHBvcCBASU5DIGlmICRJTkNbLTFdIGVxICcuJyB9CisgdXNlIHN0cmljdDsKKyB1c2Ugd2FybmluZ3M7CisgdXNlIEZjbnRsOworZGlmZiAtLWdpdCBhL2NwYW4vRW5jb2RlL2Jpbi9lbmMyeHMgYi9jcGFuL0VuY29kZS9iaW4vZW5jMnhzCitpbmRleCA0ZDY0ZTM4Li40NzNhMTVjIDEwMDY0NAorLS0tIGEvY3Bhbi9FbmNvZGUvYmluL2VuYzJ4cworKysrIGIvY3Bhbi9FbmNvZGUvYmluL2VuYzJ4cworQEAgLTQsNiArNCw3IEBAIEJFR0lOIHsKKyAgICAgIyB3aXRoICRFTlZ7UEVSTF9DT1JFfSBzZXQKKyAgICAgIyBJbiBjYXNlIHdlIG5lZWQgaXQgaW4gZnV0dXJlLi4uCisgICAgIHJlcXVpcmUgQ29uZmlnOyBpbXBvcnQgQ29uZmlnOworKyAgICBwb3AgQElOQyBpZiAkSU5DWy0xXSBlcSAnLic7CisgfQorIHVzZSBzdHJpY3Q7CisgdXNlIHdhcm5pbmdzOworZGlmZiAtLWdpdCBhL2NwYW4vRW5jb2RlL2Jpbi9lbmNndWVzcyBiL2NwYW4vRW5jb2RlL2Jpbi9lbmNndWVzcworaW5kZXggNWQ3YWM4MC4uMGJlNWM3YyAxMDA2NDQKKy0tLSBhL2NwYW4vRW5jb2RlL2Jpbi9lbmNndWVzcworKysrIGIvY3Bhbi9FbmNvZGUvYmluL2VuY2d1ZXNzCitAQCAtMSw1ICsxLDYgQEAKKyAjIS4vcGVybAorIHVzZSA1LjAwODAwMTsKKytCRUdJTiB7IHBvcCBASU5DIGlmICRJTkNbLTFdIGVxICcuJyB9CisgdXNlIHN0cmljdDsKKyB1c2Ugd2FybmluZ3M7CisgdXNlIEVuY29kZTsKK2RpZmYgLS1naXQgYS9jcGFuL0VuY29kZS9iaW4vcGljb252IGIvY3Bhbi9FbmNvZGUvYmluL3BpY29udgoraW5kZXggYzFkYWQ5ZS4uNjBiMmE1OSAxMDA2NDQKKy0tLSBhL2NwYW4vRW5jb2RlL2Jpbi9waWNvbnYKKysrKyBiL2NwYW4vRW5jb2RlL2Jpbi9waWNvbnYKK0BAIC0xLDYgKzEsNyBAQAorICMhLi9wZXJsCisgIyAkSWQ6IHBpY29udix2IDIuNyAyMDE0LzA1LzMxIDA5OjQ4OjQ4IGRhbmtvZ2FpIEV4cCAkCisgIworK0JFR0lOIHsgcG9wIEBJTkMgaWYgJElOQ1stMV0gZXEgJy4nIH0KKyB1c2UgNS44LjA7CisgdXNlIHN0cmljdDsKKyB1c2UgRW5jb2RlIDsKK2RpZmYgLS1naXQgYS9jcGFuL0VuY29kZS9iaW4vdWNtbGludCBiL2NwYW4vRW5jb2RlL2Jpbi91Y21saW50CitpbmRleCA2MjIzNzZkLi4yNWUwZDY3IDEwMDY0NAorLS0tIGEvY3Bhbi9FbmNvZGUvYmluL3VjbWxpbnQKKysrKyBiL2NwYW4vRW5jb2RlL2Jpbi91Y21saW50CitAQCAtMyw2ICszLDcgQEAKKyAjICRJZDogdWNtbGludCx2IDIuMiAyMDA4LzAzLzEyIDA5OjUxOjExIGRhbmtvZ2FpIEV4cCAkCisgIworIAorK0JFR0lOIHsgcG9wIEBJTkMgaWYgJElOQ1stMV0gZXEgJy4nIH0KKyB1c2Ugc3RyaWN0OworIG91ciAgJFZFUlNJT04gPSBkbyB7IG15IEByID0gKHEkUmV2aXNpb246IDIuMiAkID1+IC9cZCsvZyk7IHNwcmludGYgIiVkLiIuIiUwMmQiIHggJCNyLCBAciB9OworIAorZGlmZiAtLWdpdCBhL2NwYW4vRW5jb2RlL2Jpbi91bmlkdW1wIGIvY3Bhbi9FbmNvZGUvYmluL3VuaWR1bXAKK2luZGV4IGFlMGRhMzAuLmYxOTA4MjcgMTAwNjQ0CistLS0gYS9jcGFuL0VuY29kZS9iaW4vdW5pZHVtcAorKysrIGIvY3Bhbi9FbmNvZGUvYmluL3VuaWR1bXAKK0BAIC0xLDUgKzEsNiBAQAorICMhLi9wZXJsCisgCisrQkVHSU4geyBwb3AgQElOQyBpZiAkSU5DWy0xXSBlcSAnLicgfQorIHVzZSBzdHJpY3Q7CisgdXNlIEVuY29kZTsKKyB1c2UgR2V0b3B0OjpTdGQ7CitkaWZmIC0tZ2l0IGEvY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvYmluL2luc3Rtb2RzaCBiL2NwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2Jpbi9pbnN0bW9kc2gKK2luZGV4IGU1NTE0MzQuLmIzYjEwOWYgMTAwNjQ0CistLS0gYS9jcGFuL0V4dFV0aWxzLU1ha2VNYWtlci9iaW4vaW5zdG1vZHNoCisrKysgYi9jcGFuL0V4dFV0aWxzLU1ha2VNYWtlci9iaW4vaW5zdG1vZHNoCitAQCAtMSw1ICsxLDYgQEAKKyAjIS91c3IvYmluL3BlcmwgLXcKKyAKKytCRUdJTiB7IHBvcCBASU5DIGlmICRJTkNbLTFdIGVxICcuJyB9CisgdXNlIHN0cmljdDsKKyB1c2UgSU86OkZpbGU7CisgdXNlIEV4dFV0aWxzOjpQYWNrbGlzdDsKK2RpZmYgLS1naXQgYS9jcGFuL0lPLUNvbXByZXNzL2Jpbi96aXBkZXRhaWxzIGIvY3Bhbi9JTy1Db21wcmVzcy9iaW4vemlwZGV0YWlscworaW5kZXggMDI0OTg1MC4uMWI5YzcwYSAxMDA2NDQKKy0tLSBhL2NwYW4vSU8tQ29tcHJlc3MvYmluL3ppcGRldGFpbHMKKysrKyBiL2NwYW4vSU8tQ29tcHJlc3MvYmluL3ppcGRldGFpbHMKK0BAIC01LDYgKzUsNyBAQAorICMgRGlzcGxheSBpbmZvIG9uIHRoZSBjb250ZW50cyBvZiBhIFppcCBmaWxlCisgIworIAorK0JFR0lOIHsgcG9wIEBJTkMgaWYgJElOQ1stMV0gZXEgJy4nIH0KKyB1c2Ugc3RyaWN0OworIHVzZSB3YXJuaW5ncyA7CisgCitkaWZmIC0tZ2l0IGEvY3Bhbi9KU09OLVBQL2Jpbi9qc29uX3BwIGIvY3Bhbi9KU09OLVBQL2Jpbi9qc29uX3BwCitpbmRleCBkZjlkMjQzLi44OTZjZDJmIDEwMDY0NAorLS0tIGEvY3Bhbi9KU09OLVBQL2Jpbi9qc29uX3BwCisrKysgYi9jcGFuL0pTT04tUFAvYmluL2pzb25fcHAKK0BAIC0xLDUgKzEsNiBAQAorICMhL3Vzci9iaW4vcGVybAorIAorK0JFR0lOIHsgcG9wIEBJTkMgaWYgJElOQ1stMV0gZXEgJy4nIH0KKyB1c2Ugc3RyaWN0OworIHVzZSBHZXRvcHQ6Okxvbmc7CisgCitkaWZmIC0tZ2l0IGEvY3Bhbi9UZXN0LUhhcm5lc3MvYmluL3Byb3ZlIGIvY3Bhbi9UZXN0LUhhcm5lc3MvYmluL3Byb3ZlCitpbmRleCA2NjM3Y2M0Li5kNzFiMjM4IDEwMDY0NAorLS0tIGEvY3Bhbi9UZXN0LUhhcm5lc3MvYmluL3Byb3ZlCisrKysgYi9jcGFuL1Rlc3QtSGFybmVzcy9iaW4vcHJvdmUKK0BAIC0xLDUgKzEsNiBAQAorICMhL3Vzci9iaW4vcGVybCAtdworIAorK0JFR0lOIHsgcG9wIEBJTkMgaWYgJElOQ1stMV0gZXEgJy4nIH0KKyB1c2Ugc3RyaWN0OworIHVzZSB3YXJuaW5nczsKKyB1c2UgQXBwOjpQcm92ZTsKK2RpZmYgLS1naXQgYS9kaXN0L0V4dFV0aWxzLVBhcnNlWFMvbGliL0V4dFV0aWxzL3hzdWJwcCBiL2Rpc3QvRXh0VXRpbHMtUGFyc2VYUy9saWIvRXh0VXRpbHMveHN1YnBwCitpbmRleCBlMmFjNzFhLi5kNTk2Y2RmIDEwMDY0NAorLS0tIGEvZGlzdC9FeHRVdGlscy1QYXJzZVhTL2xpYi9FeHRVdGlscy94c3VicHAKKysrKyBiL2Rpc3QvRXh0VXRpbHMtUGFyc2VYUy9saWIvRXh0VXRpbHMveHN1YnBwCitAQCAtMSw1ICsxLDYgQEAKKyAjIXBlcmwKKyB1c2UgNS4wMDY7CisrQkVHSU4geyBwb3AgQElOQyBpZiAkSU5DWy0xXSBlcSAnLicgfQorIHVzZSBzdHJpY3Q7CisgZXZhbCB7CisgICByZXF1aXJlIEV4dFV0aWxzOjpQYXJzZVhTOworZGlmZiAtLWdpdCBhL2Rpc3QvTW9kdWxlLUNvcmVMaXN0L2NvcmVsaXN0IGIvZGlzdC9Nb2R1bGUtQ29yZUxpc3QvY29yZWxpc3QKK2luZGV4IGFhNGE5NDUuLmJiZTYxY2MgMTAwNjQ0CistLS0gYS9kaXN0L01vZHVsZS1Db3JlTGlzdC9jb3JlbGlzdAorKysrIGIvZGlzdC9Nb2R1bGUtQ29yZUxpc3QvY29yZWxpc3QKK0BAIC0xMzAsNiArMTMwLDcgQEAgcmVxdWVzdGVkIHBlcmwgdmVyc2lvbnMuCisgCisgPWN1dAorIAorK0JFR0lOIHsgcG9wIEBJTkMgaWYgJElOQ1stMV0gZXEgJy4nIH0KKyB1c2UgTW9kdWxlOjpDb3JlTGlzdDsKKyB1c2UgR2V0b3B0OjpMb25nIHF3KDpjb25maWcgbm9faWdub3JlX2Nhc2UpOworIHVzZSBQb2Q6OlVzYWdlOworZGlmZiAtLWdpdCBhL2V4dC9Qb2QtSHRtbC9iaW4vcG9kMmh0bWwgYi9leHQvUG9kLUh0bWwvYmluL3BvZDJodG1sCitpbmRleCBiMDIyODU5Li43ZDFkMjMyIDEwMDY0NAorLS0tIGEvZXh0L1BvZC1IdG1sL2Jpbi9wb2QyaHRtbAorKysrIGIvZXh0L1BvZC1IdG1sL2Jpbi9wb2QyaHRtbAorQEAgLTIxNiw2ICsyMTYsNyBAQCBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEFydGlzdGljIExpY2Vuc2UuCisgCisgPWN1dAorIAorK0JFR0lOIHsgcG9wIEBJTkMgaWYgJElOQ1stMV0gZXEgJy4nIH0KKyB1c2UgUG9kOjpIdG1sOworIAorIHBvZDJodG1sIEBBUkdWOworZGlmZiAtLWdpdCBhL3V0aWxzL2MycGguUEwgYi91dGlscy9jMnBoLlBMCitpbmRleCAxMzM4OWVjLi5jZWYwYjVjIDEwMDY0NAorLS0tIGEvdXRpbHMvYzJwaC5QTAorKysrIGIvdXRpbHMvYzJwaC5QTAorQEAgLTI4MCw2ICsyODAsNyBAQCBBbnl3YXksIGhlcmUgaXQgaXMuICBTaG91bGQgcnVuIG9uIHBlcmwgdjQgb3IgZ3JlYXRlci4gIE1heWJlIGxlc3MuCisgCisgJFJDU0lEID0gJyRJZDogYzJwaCx2IDEuNyA5NS8xMC8yOCAxMDo0MTo0NyB0Y2hyaXN0IEV4cCBMb2NrZXI6IHRjaHJpc3QgJCc7CisgCisrQkVHSU4geyBwb3AgQElOQyBpZiAkSU5DWy0xXSBlcSAnLicgfQorIHVzZSBGaWxlOjpUZW1wOworIAorICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK2RpZmYgLS1naXQgYS91dGlscy9oMnBoLlBMIGIvdXRpbHMvaDJwaC5QTAoraW5kZXggNTVjMWY3Mi4uMzAwYjc1NiAxMDA2NDQKKy0tLSBhL3V0aWxzL2gycGguUEwKKysrKyBiL3V0aWxzL2gycGguUEwKK0BAIC0zNiw2ICszNiw4IEBAICRDb25maWd7c3RhcnRwZXJsfQorIAorIHByaW50IE9VVCA8PCchTk8hU1VCUyEnOworIAorK0JFR0lOIHsgcG9wIEBJTkMgaWYgJElOQ1stMV0gZXEgJy4nIH0KKysKKyB1c2Ugc3RyaWN0OworIAorIHVzZSBDb25maWc7CitkaWZmIC0tZ2l0IGEvdXRpbHMvaDJ4cy5QTCBiL3V0aWxzL2gyeHMuUEwKK2luZGV4IDI2OGY2ODAuLmY5NWVlMGMgMTAwNjQ0CistLS0gYS91dGlscy9oMnhzLlBMCisrKysgYi91dGlscy9oMnhzLlBMCitAQCAtMzUsNiArMzUsOCBAQCAkQ29uZmlne3N0YXJ0cGVybH0KKyAKKyBwcmludCBPVVQgPDwnIU5PIVNVQlMhJzsKKyAKKytCRUdJTiB7IHBvcCBASU5DIGlmICRJTkNbLTFdIGVxICcuJyB9CisrCisgdXNlIHdhcm5pbmdzOworIAorID1oZWFkMSBOQU1FCitkaWZmIC0tZ2l0IGEvdXRpbHMvbGlibmV0Y2ZnLlBMIGIvdXRpbHMvbGlibmV0Y2ZnLlBMCitpbmRleCA1OWEyZGU4Li4yNmQyZjk5IDEwMDY0NAorLS0tIGEvdXRpbHMvbGlibmV0Y2ZnLlBMCisrKysgYi91dGlscy9saWJuZXRjZmcuUEwKK0BAIC05Nyw2ICs5Nyw3IEBAIEphcmtrbyBIaWV0YW5pZW1pLCBjb252ZXJzaW9uIGludG8gbGlibmV0Y2ZnIGZvciBpbmNsdXNpb24gaW50byBQZXJsIDUuOC4KKyAKKyAjICRJZDogQ29uZmlndXJlLHYgMS44IDE5OTcvMDMvMDQgMDk6MjI6MzIgZ2JhcnIgRXhwICQKKyAKKytCRUdJTiB7IHBvcCBASU5DIGlmICRJTkNbLTFdIGVxICcuJyB9CisgdXNlIHN0cmljdDsKKyB1c2UgSU86OkZpbGU7CisgdXNlIEdldG9wdDo6U3RkOworZGlmZiAtLWdpdCBhL3V0aWxzL3BlcmxidWcuUEwgYi91dGlscy9wZXJsYnVnLlBMCitpbmRleCA4ODU3ODVhLi5hZThjMzQzIDEwMDY0NAorLS0tIGEvdXRpbHMvcGVybGJ1Zy5QTAorKysrIGIvdXRpbHMvcGVybGJ1Zy5QTAorQEAgLTU3LDYgKzU3LDcgQEAgcHJpbnQgT1VUIDw8JyFOTyFTVUJTISc7CisgbXkgQHBhdGNoZXMgPSBDb25maWc6OmxvY2FsX3BhdGNoZXMoKTsKKyBteSAkcGF0Y2hfdGFncyA9IGpvaW4gIiIsIG1hcCAvKFxTKykvID8gIiskMSAiIDogKCksIEBwYXRjaGVzOworIAorK0JFR0lOIHsgcG9wIEBJTkMgaWYgJElOQ1stMV0gZXEgJy4nIH0KKyB1c2Ugd2FybmluZ3M7CisgdXNlIHN0cmljdDsKKyB1c2UgQ29uZmlnOworZGlmZiAtLWdpdCBhL3V0aWxzL3Blcmxkb2MuUEwgYi91dGlscy9wZXJsZG9jLlBMCitpbmRleCBlMjAxZGU5Li5jZDYwYmQ0IDEwMDY0NAorLS0tIGEvdXRpbHMvcGVybGRvYy5QTAorKysrIGIvdXRpbHMvcGVybGRvYy5QTAorQEAgLTQ0LDcgKzQ0LDEwIEBAICRDb25maWd7c3RhcnRwZXJsfQorICMgVGhpcyAiJGZpbGUiIGZpbGUgd2FzIGdlbmVyYXRlZCBieSAiJDAiCisgCisgcmVxdWlyZSA1OworLUJFR0lOIHsgXCReVyA9IDEgaWYgXCRFTlZ7J1BFUkxET0NERUJVRyd9IH0KKytCRUdJTiB7CisrICAgIFwkXlcgPSAxIGlmIFwkRU5WeydQRVJMRE9DREVCVUcnfTsKKysgICAgcG9wIFxASU5DIGlmIFwkSU5DWy0xXSBlcSAnLic7CisrfQorIHVzZSBQb2Q6OlBlcmxkb2M7CisgZXhpdCggUG9kOjpQZXJsZG9jLT5ydW4oKSApOworIAorZGlmZiAtLWdpdCBhL3V0aWxzL3BlcmxpdnAuUEwgYi91dGlscy9wZXJsaXZwLlBMCitpbmRleCBjYzQ5Zjk2Li42OTZhNDRlIDEwMDY0NAorLS0tIGEvdXRpbHMvcGVybGl2cC5QTAorKysrIGIvdXRpbHMvcGVybGl2cC5QTAorQEAgLTM5LDYgKzM5LDggQEAgcHJpbnQgT1VUICJcbiMgcGVybGl2cCAkXlZcbiI7CisgCisgcHJpbnQgT1VUIDw8JyFOTyFTVUJTISc7CisgCisrQkVHSU4geyBwb3AgQElOQyBpZiAkSU5DWy0xXSBlcSAnLicgfQorKworIHN1YiB1c2FnZSB7CisgICAgIHdhcm4gIkBfXG4iIGlmIEBfOworICAgICBwcmludCA8PCAiICAgIEVPVVNBR0UiOworZGlmZiAtLWdpdCBhL3V0aWxzL3NwbGFpbi5QTCBiL3V0aWxzL3NwbGFpbi5QTAoraW5kZXggOWM3MGI2MS4uY2FlODRhMCAxMDA2NDQKKy0tLSBhL3V0aWxzL3NwbGFpbi5QTAorKysrIGIvdXRpbHMvc3BsYWluLlBMCitAQCAtMzgsNiArMzgsMTIgQEAgJENvbmZpZ3tzdGFydHBlcmx9CisgCWlmIFwkcnVubmluZ191bmRlcl9zb21lX3NoZWxsOworICFHUk9LIVRISVMhCisgCisrcHJpbnQgPDwnIU5PIVNVQlMhJzsKKysKKytCRUdJTiB7IHBvcCBASU5DIGlmICRJTkNbLTFdIGVxICcuJyB9CisrCisrIU5PIVNVQlMhCisrCisgd2hpbGUgKDxJTj4pIHsKKyAgICAgcHJpbnQgT1VUIHVubGVzcyAvXnBhY2thZ2UgZGlhZ25vc3RpY3MvOworIH0KKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvcGVybC1maXgtQ1ZFLTIwMTYtMjM4MS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL3BlcmwtZml4LUNWRS0yMDE2LTIzODEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTlmYThkOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL3BlcmwtZml4LUNWRS0yMDE2LTIzODEucGF0Y2gKQEAgLTAsMCArMSwxMTQgQEAKK0NWRTogQ1ZFLTIwMTYtMjM4MQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitCYWNrcG9ydCBwYXRjaCB0byBmaXggQ1ZFLTIwMTYtMjM4MSBmcm9tCisKK2h0dHA6Ly9wZXJsNS5naXQucGVybC5vcmcvcGVybC5naXQvY29tbWl0ZGlmZi9hZTM3Yjc5MWE3M2E5ZTc4ZGVkYjg5ZmIyNDI5ZDI2MjhjZjU4MDc2CisKK1NpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorLS0tCitGcm9tOiBUb255IENvb2sgPHRvbnlAZGV2ZWxvcC1oZWxwLmNvbT4KK0RhdGU6IFdlZCwgMjcgSmFuIDIwMTYgMDA6NTI6MTUgKzAwMDAgKCsxMTAwKQorU3ViamVjdDogcmVtb3ZlIGR1cGxpY2F0ZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZnJvbSBlbnZpcm9uCitYLUdpdC1UYWc6IHY1LjIzLjl+MTcwCitYLUdpdC1Vcmw6IGh0dHA6Ly9wZXJsNS5naXQucGVybC5vcmcvcGVybC5naXQvY29tbWl0ZGlmZl9wbGFpbi9hZTM3Yjc5MWE3M2E5ZTc4ZGVkYjg5ZmIyNDI5ZDI2MjhjZjU4MDc2CisKK3JlbW92ZSBkdXBsaWNhdGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZyb20gZW52aXJvbgorCitJZiB3ZSBzZWUgZHVwbGljYXRlIGVudmlyb25tZW50IHZhcmlhYmxlcyB3aGlsZSBpdGVyYXRpbmcgb3ZlcgorZW52aXJvbltdOgorCithKSBtYWtlIHN1cmUgd2UgdXNlIHRoZSBzYW1lIHZhbHVlIGluICVFTlYgdGhhdCBnZXRlbnYoKSByZXR1cm5zLgorCitQcmV2aW91c2x5IG9uIGEgZHVwbGljYXRlLCAlRU5WIHdvdWxkIGhhdmUgdGhlIGxhc3QgZW50cnkgZm9yIHRoZSBuYW1lCitmcm9tIGVudmlyb25bXSwgYnV0IGEgdHlwaWNhbCBnZXRlbnYoKSB3b3VsZCByZXR1cm4gdGhlIGZpcnN0IGVudHJ5LgorCitSYXRoZXIgdGhhbiBhc3N1bWluZyBhbGwgZ2V0ZW52KCkgaW1wbGVtZW50YXRpb25zIHJldHVybiB0aGUgZmlyc3QgZW50cnkKK2V4cGxpY2l0bHkgY2FsbCBnZXRlbnYoKSB0byBlbnN1cmUgdGhleSBhZ3JlZS4KKworYikgcmVtb3ZlIGR1cGxpY2F0ZSBlbnRyaWVzIGZyb20gZW52aXJvbgorCitQcmV2aW91c2x5IGlmIHRoZXJlIHdhcyBhIGR1cGxpY2F0ZSBkZWZpbml0aW9uIGZvciBhIG5hbWUgaW4gZW52aXJvbltdCitzZXR0aW5nIHRoYXQgbmFtZSBpbiAlRU5WIGNvdWxkIHJlc3VsdCBpbiBhbiB1bnNhZmUgdmFsdWUgYmVpbmcgcGFzc2VkCit0byBhIGNoaWxkIHByb2Nlc3MsIHNvIGVuc3VyZSBlbnZpcm9uW10gaGFzIG5vIGR1cGxpY2F0ZXMuCisKK0NWRS0yMDE2LTIzODEKKy0tLQorCitkaWZmIC0tZ2l0IGEvcGVybC5jIGIvcGVybC5jCitpbmRleCA0YTMyNGM2Li41YzcxZmQwIDEwMDY0NAorLS0tIGEvcGVybC5jCisrKysgYi9wZXJsLmMKK0BAIC00MzI5LDIzICs0MzI5LDcwIEBAIFNfaW5pdF9wb3N0ZHVtcF9zeW1ib2xzKHBUSFhfIGludCBhcmdjLCBjaGFyICoqYXJndiwgY2hhciAqKmVudikKKyAJfQorIAlpZiAoZW52KSB7CisgCSAgY2hhciAqcywgKm9sZF92YXI7CisrICAgICAgICAgIFNUUkxFTiBubGVuOworIAkgIFNWICpzdjsKKysgICAgICAgICAgSFYgKmR1cHMgPSBuZXdIVigpOworKworIAkgIGZvciAoOyAqZW52OyBlbnYrKykgeworIAkgICAgb2xkX3ZhciA9ICplbnY7CisgCisgCSAgICBpZiAoIShzID0gc3RyY2hyKG9sZF92YXIsJz0nKSkgfHwgcyA9PSBvbGRfdmFyKQorIAkJY29udGludWU7CisrICAgICAgICAgICAgbmxlbiA9IHMgLSBvbGRfdmFyOworIAorICNpZiBkZWZpbmVkKE1TRE9TKSAmJiAhZGVmaW5lZChESkdQUCkKKyAJICAgICpzID0gJ1wwJzsKKyAJICAgICh2b2lkKXN0cnVwcihvbGRfdmFyKTsKKyAJICAgICpzID0gJz0nOworICNlbmRpZgorLQkgICAgc3YgPSBuZXdTVnB2KHMrMSwgMCk7CistCSAgICAodm9pZClodl9zdG9yZShodiwgb2xkX3ZhciwgcyAtIG9sZF92YXIsIHN2LCAwKTsKKysgICAgICAgICAgICBpZiAoaHZfZXhpc3RzKGh2LCBvbGRfdmFyLCBubGVuKSkgeworKyAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lID0gc2F2ZXB2bihvbGRfdmFyLCBubGVuKTsKKysKKysgICAgICAgICAgICAgICAgLyogbWFrZSBzdXJlIHdlIHVzZSB0aGUgc2FtZSB2YWx1ZSBhcyBnZXRlbnYoKSwgb3RoZXJ3aXNlIGNvZGUgdGhhdAorKyAgICAgICAgICAgICAgICAgICB1c2VzIGdldGVudigpIChsaWtlIHNldGxvY2FsZSgpKSBtaWdodCBzZWUgYSBkaWZmZXJlbnQgdmFsdWUgdG8gJUVOVgorKyAgICAgICAgICAgICAgICAgKi8KKysgICAgICAgICAgICAgICAgc3YgPSBuZXdTVnB2KFBlcmxFbnZfZ2V0ZW52KG5hbWUpLCAwKTsKKysKKysgICAgICAgICAgICAgICAgLyoga2VlcCBhIGNvdW50IG9mIHRoZSBkdXBzIG9mIHRoaXMgbmFtZSBzbyB3ZSBjYW4gZGUtZHVwIGVudmlyb24gbGF0ZXIgKi8KKysgICAgICAgICAgICAgICAgaWYgKGh2X2V4aXN0cyhkdXBzLCBuYW1lLCBubGVuKSkKKysgICAgICAgICAgICAgICAgICAgICsrU3ZJVlgoKmh2X2ZldGNoKGR1cHMsIG5hbWUsIG5sZW4sIDApKTsKKysgICAgICAgICAgICAgICAgZWxzZQorKyAgICAgICAgICAgICAgICAgICAgKHZvaWQpaHZfc3RvcmUoZHVwcywgbmFtZSwgbmxlbiwgbmV3U1ZpdigxKSwgMCk7CisrCisrICAgICAgICAgICAgICAgIFNhZmVmcmVlKG5hbWUpOworKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBlbHNlIHsKKysgICAgICAgICAgICAgICAgc3YgPSBuZXdTVnB2KHMrMSwgMCk7CisrICAgICAgICAgICAgfQorKwkgICAgKHZvaWQpaHZfc3RvcmUoaHYsIG9sZF92YXIsIG5sZW4sIHN2LCAwKTsKKyAJICAgIGlmIChlbnZfaXNfbm90X2Vudmlyb24pCisgCSAgICAgICAgbWdfc2V0KHN2KTsKKyAJICB9CisrICAgICAgICAgIGlmIChIdktFWVMoZHVwcykpIHsKKysgICAgICAgICAgICAgIC8qIGVudmlyb24gaGFzIHNvbWUgZHVwbGljYXRlIGRlZmluaXRpb25zLCByZW1vdmUgdGhlbSAqLworKyAgICAgICAgICAgICAgSEUgKmVudHJ5OworKyAgICAgICAgICAgICAgaHZfaXRlcmluaXQoZHVwcyk7CisrICAgICAgICAgICAgICB3aGlsZSAoKGVudHJ5ID0gaHZfaXRlcm5leHRfZmxhZ3MoZHVwcywgMCkpKSB7CisrICAgICAgICAgICAgICAgICAgU1RSTEVOIG5sZW47CisrICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSA9IEhlUFYoZW50cnksIG5sZW4pOworKyAgICAgICAgICAgICAgICAgIElWIGNvdW50ID0gU3ZJVihIZVZBTChlbnRyeSkpOworKyAgICAgICAgICAgICAgICAgIElWIGk7CisrICAgICAgICAgICAgICAgICAgU1YgKip2YWxwID0gaHZfZmV0Y2goaHYsIG5hbWUsIG5sZW4sIDApOworKworKyAgICAgICAgICAgICAgICAgIGFzc2VydCh2YWxwKTsKKysKKysgICAgICAgICAgICAgICAgICAvKiB0cnkgdG8gcmVtb3ZlIGFueSBkdXBsaWNhdGUgbmFtZXMsIGRlcGVuZGluZyBvbiB0aGUKKysgICAgICAgICAgICAgICAgICAgKiBpbXBsZW1lbnRhdGlvbiB1c2VkIGluIG15X3NldGVudigpIHRoZSBpdGVyYXRpb24gbWlnaHQKKysgICAgICAgICAgICAgICAgICAgKiBub3QgYmUgbmVjZXNzYXJ5LCBidXQgbGV0J3MgYmUgc2FmZS4KKysgICAgICAgICAgICAgICAgICAgKi8KKysgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKysgICAgICAgICAgICAgICAgICAgICAgbXlfc2V0ZW52KG5hbWUsIDApOworKworKyAgICAgICAgICAgICAgICAgIC8qIGFuZCBzZXQgaXQgYmFjayB0byB0aGUgdmFsdWUgd2Ugc2V0ICRFTlZ7bmFtZX0gdG8gKi8KKysgICAgICAgICAgICAgICAgICBteV9zZXRlbnYobmFtZSwgU3ZQVl9ub2xlbigqdmFscCkpOworKyAgICAgICAgICAgICAgfQorKyAgICAgICAgICB9CisrICAgICAgICAgIFN2UkVGQ05UX2RlY19OTihkdXBzKTsKKyAgICAgICB9CisgI2VuZGlmIC8qIFVTRV9FTlZJUk9OX0FSUkFZICovCisgI2VuZGlmIC8qICFQRVJMX01JQ1JPICovCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9wZXJsLWZpeC1DVkUtMjAxNi02MTg1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvcGVybC1maXgtQ1ZFLTIwMTYtNjE4NS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzIyYWYzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvcGVybC1maXgtQ1ZFLTIwMTYtNjE4NS5wYXRjaApAQCAtMCwwICsxLDEyOCBAQAorRnJvbSA3Y2VkYWE4YmMyY2E5ZTYzMzY5ZDBlMmQ0YzRjMjNhZjlmZWJiOTNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRmF0aGVyIENocnlzb3N0b21vcyA8c3Byb3V0QGNwYW4ub3JnPgorRGF0ZTogU2F0LCAyIEp1bCAyMDE2IDIyOjU2OjUxIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHBlcmw6IGZpeCBDVkUtMjAxNi02MTg1CitNSU1FLVZlcnNpb246IDEuMAorCitEb24ndCBsZXQgWFNMb2FkZXIgbG9hZCByZWxhdGl2ZSBwYXRocworCitbcnQuY3Bhbi5vcmcgIzExNTgwOF0KKworVGhlIGxvZ2ljIGluIFhTTG9hZGVyIGZvciBkZXRlcm1pbmluZyB0aGUgbGlicmFyeSBnb2VzIGxpa2UgdGhpczoKKworICAgIG15ICRjID0gKCkgPSBzcGxpdCgvOjovLCRjYWxsZXIsLTEpOworICAgICRtb2RsaWJuYW1lID1+IHMsW1xcL11bXlxcL10rJCwsIHdoaWxlICRjLS07ICAgICMgUSZEIGJhc2VuYW1lCisgICAgbXkgJGZpbGUgPSAiJG1vZGxpYm5hbWUvYXV0by8kbW9kcG5hbWUvJG1vZGZuYW1lLmJ1bmRsZSI7CisKKyhUaGF0IGxhc3QgbGluZSB2YXJpZXMgYnkgcGxhdGZvcm0uKQorCiskY2FsbGVyIGlzIHRoZSBjYWxsaW5nIHBhY2thZ2UuICAkbW9kbGlibmFtZSBpcyB0aGUgY2FsbGluZyBmaWxlLiAgSXQKK3JlbW92ZXMgYXMgbWFueSBwYXRoIHNlZ21lbnRzIGZyb20gJG1vZGxpYm5hbWUgYXMgdGhlcmUgYXJlIHNlZ21lbnRzCitpbiAkY2FsbGVyLiAgU28gaWYgeW91IGhhdmUgRm9vL0Jhci9YUy5wbSBjYWxsaW5nIFhTTG9hZGVyIGZyb20gdGhlCitGb286OkJhciBwYWNrYWdlLCB0aGUgJG1vZGxpYm5hbWUgd2lsbCBlbmQgdXAgY29udGFpbmluZyB0aGUgcGF0aCBpbgorQElOQyB3aGVyZSBYUy5wbSB3YXMgZm91bmQsIGZvbGxvd2VkIGJ5ICIvRm9vIi4gIFVzdWFsbHkgdGhlIGZhbGxiYWNrCit0byBEeW5hbG9hZGVyOjpib290c3RyYXBfaW5oZXJpdCwgd2hpY2ggZG9lcyBhbiBASU5DIHNlYXJjaCwgbWFrZXMKK3RoaW5ncyBKdXN0IFdvcmsuCisKK0J1dCBpZiBvdXIgaHlwb3RoZXRpY2FsIEZvby9CYXIvWFMucG0gYWN0dWFsbHkgY2FsbHMKK1hTTG9hZGVyOjpsb2FkIGZyb20gaW5zaWRlIGEgc3RyaW5nIGV2YWwsIHRoZW4gcGF0aCBlbmRzIHVwIGJlaW5nCisiKGV2YWwgMSkvYXV0by9Gb28vQmFyL0Jhci5idW5kbGUiLgorCitTbyBpZiBzb21lb25lIGNyZWF0ZXMgYSBkaXJlY3RvcnkgbmFtZWQgJyhldmFsIDEpJyB3aXRoIGEgbmF1Z2h0eQorYmluYXJ5IGZpbGUgaW4gaXQsIGl0IHdpbGwgYmUgbG9hZGVkIGlmIGEgc2NyaXB0IHVzaW5nIEZvbzo6QmFyIGlzIHJ1bgoraW4gdGhlIHBhcmVudCBkaXJlY3RvcnkuCisKK1RoaXMgY29tbWl0IG1ha2VzIFhTTG9hZGVyIGZhbGwgYmFjayB0byBEeW5hbG9hZGVyJ3MgQElOQyBzZWFyY2ggaWYKK3RoZSBjYWxsaW5nIGZpbGUgaGFzIGEgcmVsYXRpdmUgcGF0aCB0aGF0IGlzIG5vdCBmb3VuZCBpbiBASU5DLgorCitCYWNrcG9ydCBwYXRjaCBmcm9tIGh0dHA6Ly9wZXJsNS5naXQucGVybC5vcmcvcGVybC5naXQvY29tbWl0ZGlmZi8wOGUzNDUxZDcKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQ1ZFOiBDVkUtMjAxNi02MTg1CitTaWduZWQtb2ZmLWJ5OiBNaW5nbGkgWXUgPE1pbmdsaS5ZdUB3aW5kcml2ZXIuY29tPgorLS0tCisgZGlzdC9YU0xvYWRlci9YU0xvYWRlcl9wbS5QTCB8IDI1ICsrKysrKysrKysrKysrKysrKysrKysrKysKKyBkaXN0L1hTTG9hZGVyL3QvWFNMb2FkZXIudCAgIHwgMjcgKysrKysrKysrKysrKysrKysrKysrKysrKystCisgMiBmaWxlcyBjaGFuZ2VkLCA1MSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9kaXN0L1hTTG9hZGVyL1hTTG9hZGVyX3BtLlBMIGIvZGlzdC9YU0xvYWRlci9YU0xvYWRlcl9wbS5QTAoraW5kZXggNjY4NDExZC4uNzc4ZTQ2YiAxMDA2NDQKKy0tLSBhL2Rpc3QvWFNMb2FkZXIvWFNMb2FkZXJfcG0uUEwKKysrKyBiL2Rpc3QvWFNMb2FkZXIvWFNMb2FkZXJfcG0uUEwKK0BAIC0xMDQsNiArMTA0LDMxIEBAIHByaW50IE9VVCA8PCdFT1QnOworICAgICBteSAkbW9kcG5hbWUgPSBqb2luKCcvJyxAbW9kcGFydHMpOworICAgICBteSAkYyA9ICgpID0gc3BsaXQoLzo6LywkY2FsbGVyLC0xKTsKKyAgICAgJG1vZGxpYm5hbWUgPX4gcyxbXFwvXVteXFwvXSskLCwgd2hpbGUgJGMtLTsgICAgIyBRJkQgYmFzZW5hbWUKKysgICAgIyBEb2VzIHRoaXMgbG9vayBsaWtlIGEgcmVsYXRpdmUgcGF0aD8KKysgICAgaWYgKCRtb2RsaWJuYW1lICF+IG18XltcXC9dfCkgeworKyAgICAgICAgIyBTb21lb25lIG1heSBoYXZlIGEgI2xpbmUgZGlyZWN0aXZlIHRoYXQgY2hhbmdlcyB0aGUgZmlsZSBuYW1lLCBvcgorKyAgICAgICAgIyBtYXkgYmUgY2FsbGluZyBYU0xvYWRlcjo6bG9hZCBmcm9tIGluc2lkZSBhIHN0cmluZyBldmFsLiAgV2UgY2VyLQorKyAgICAgICAgIyB0YWlubHkgZG8gbm90IHdhbnQgdG8gZ28gbG9hZGluZyBzb21lIGNvZGUgdGhhdCBpcyBub3QgaW4gQElOQywKKysgICAgICAgICMgYXMgaXQgY291bGQgYmUgdW50cnVzdGVkLgorKyAgICAgICAgIworKyAgICAgICAgIyBXZSBjb3VsZCBqdXN0IGZhbGwgYmFjayB0byBEeW5hTG9hZGVyIGhlcmUsIGJ1dCB0aGVuIHRoZSByZXN0IG9mCisrICAgICAgICAjIHRoaXMgZnVuY3Rpb24gd291bGQgZ28gdW50ZXN0ZWQgaW4gdGhlIHBlcmwgY29yZSwgc2luY2UgYWxsIEBJTkMKKysgICAgICAgICMgcGF0aHMgYXJlIHJlbGF0aXZlIGR1cmluZyB0ZXN0aW5nLiAgVGhhdCB3b3VsZCBiZSBhIHRpbWUgYm9tYgorKyAgICAgICAgIyB3YWl0aW5nIHRvIGhhcHBlbiwgc2luY2UgYnVncyBjb3VsZCBiZSBpbnRyb2R1Y2VkIGludG8gdGhlIGNvZGUuCisrICAgICAgICAjCisrICAgICAgICAjIFNvIGxvb2sgdGhyb3VnaCBASU5DIHRvIHNlZSBpZiAkbW9kbGlibmFtZSBpcyBpbiBpdC4gIEEgcmVsYS0KKysgICAgICAgICMgdGl2ZSAkbW9kbGlibmFtZSBpcyBub3QgYSBjb21tb24gb2NjdXJyZW5jZSwgc28gdGhpcyBibG9jayBpcworKyAgICAgICAgIyBub3QgaG90IGNvZGUuCisrICAgICAgICBGT1VORDogeworKyAgICAgICAgICAgIGZvciAoQElOQykgeworKyAgICAgICAgICAgICAgICBpZiAoJF8gZXEgJG1vZGxpYm5hbWUpIHsKKysgICAgICAgICAgICAgICAgICAgIGxhc3QgRk9VTkQ7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgIyBOb3QgZm91bmQuICBGYWxsIGJhY2sgdG8gRHluYUxvYWRlci4KKysgICAgICAgICAgICBnb3RvIFwmWFNMb2FkZXI6OmJvb3RzdHJhcF9pbmhlcml0OworKyAgICAgICAgfQorKyAgICB9CisgRU9UCisgCisgbXkgJGRsX2RsZXh0ID0gcXVvdGVtZXRhKCRDb25maWc6OkNvbmZpZ3snZGxleHQnfSk7CitkaWZmIC0tZ2l0IGEvZGlzdC9YU0xvYWRlci90L1hTTG9hZGVyLnQgYi9kaXN0L1hTTG9hZGVyL3QvWFNMb2FkZXIudAoraW5kZXggMmZmMTFmZS4uMWU4NmZhYSAxMDA2NDQKKy0tLSBhL2Rpc3QvWFNMb2FkZXIvdC9YU0xvYWRlci50CisrKysgYi9kaXN0L1hTTG9hZGVyL3QvWFNMb2FkZXIudAorQEAgLTMzLDcgKzMzLDcgQEAgbXkgJW1vZHVsZXMgPSAoCisgICAgICdUaW1lOjpIaVJlcyc9PiBxfCA6OmNhbl9vayggJ1RpbWU6OkhpUmVzJyA9PiAndXNsZWVwJyAgKSB8LCAgIyA1LjcuMworICk7CisgCistcGxhbiB0ZXN0cyA9PiBrZXlzKCVtb2R1bGVzKSAqIDMgKyA5OworK3BsYW4gdGVzdHMgPT4ga2V5cyglbW9kdWxlcykgKiAzICsgMTA7CisgCisgIyBUcnkgdG8gbG9hZCB0aGUgbW9kdWxlCisgdXNlX29rKCAnWFNMb2FkZXInICk7CitAQCAtMTI1LDMgKzEyNSwyOCBAQCBYU0xvYWRlcjo6bG9hZCgiRGV2ZWw6OlBlZWsiKTsKKyBFT1MKKyAgICAgb3IgOjpkaWFnICRAOworIH0KKysKKytTS0lQOiB7CisrICBza2lwICJGaWxlOjpQYXRoIG5vdCBhdmFpbGFibGUiLCAxCisrICAgIHVubGVzcyBldmFsIHsgcmVxdWlyZSBGaWxlOjpQYXRoIH07CisrICBteSAkbmFtZSA9ICJwaG9vbyQkIjsKKysgIEZpbGU6OlBhdGg6Om1ha2VfcGF0aCgiJG5hbWUvYXV0by9Gb28vQmFyIik7CisrICBvcGVuIG15ICRmaCwKKysgICAgIj4kbmFtZS9hdXRvL0Zvby9CYXIvQmFyLiRDb25maWc6OkNvbmZpZ3snZGxleHQnfSI7CisrICBjbG9zZSAkZmg7CisrICBteSAkZmVsbF9iYWNrOworKyAgbG9jYWwgKlhTTG9hZGVyOjpib290c3RyYXBfaW5oZXJpdCA9IHN1YiB7CisrICAgICRmZWxsX2JhY2srKzsKKysgICAgIyBCcmVhayBvdXQgb2YgdGhlIGNhbGxpbmcgc3VicworKyAgICBnb3RvIHRoZV90ZXN0OworKyAgfTsKKysgIGV2YWwgPDxFTkQ7CisrI2xpbmUgMSAkbmFtZQorK3BhY2thZ2UgRm9vOjpCYXI7CisrWFNMb2FkZXI6OmxvYWQoIkZvbzo6QmFyIik7CisrRU5ECisrIHRoZV90ZXN0OgorKyAgb2sgJGZlbGxfYmFjaywKKysgICAgJ1hTTG9hZGVyIHdpbGwgbm90IGxvYWQgcmVsYXRpdmUgcGF0aHMgYmFzZWQgb24gKGNhbGxlcilbMV0nOworKyAgRmlsZTo6UGF0aDo6cmVtb3ZlX3RyZWUoJG5hbWUpOworK30KKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvcGVybC1maXgtY29uZmxpY3QtYmV0d2Vlbi1za2lwX2FsbC1hbmQtRU5ELnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvcGVybC1maXgtY29uZmxpY3QtYmV0d2Vlbi1za2lwX2FsbC1hbmQtRU5ELnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlOTQ2ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9wZXJsLWZpeC1jb25mbGljdC1iZXR3ZWVuLXNraXBfYWxsLWFuZC1FTkQucGF0Y2gKQEAgLTAsMCArMSwxODEgQEAKK1NvbWUgUGVybCB0ZXN0cyBmYWlsIHdoZW4gcnVuIG9uIGEgY3Jvc3MtY29tcGlsZWQgdGFyZ2V0IG1hY2hpbmUuIEFwcGx5CithIHNsaWdodGx5IHR3ZWFrZWQgdXBzdHJlYW0gcGF0Y2ggdG8gZml4IHRoZSBwcm9ibGVtcy4gTm90ZXM6CisgICAgMS4gYXMgb2YgMiBKdW4gMjAxNiwgdGhlIG9yaWdpbmFsIHBhdGNoIGhhcyBiZWVuIGFwcGxpZWQgdG8gdGhlIGN1cnJlbnQKKyAgICAgICBFVU1NIHJlbGVhc2VzLCBidXQgaGFzIG5vdCBtYWRlIGl0IGludG8gcGVybCBjb3JlIHlldC4KKyAgICAyLiB3aGVuIHRoZSBiYXNlIHBlcmwgcGFja2FnZSBpcyB1cGdyYWRlZCBpbiBZb2N0bywgdGhpcyBwYXRjaCBtYXkgbmVlZAorICAgICAgIHRvIGJlIHJlcGxhY2VkIGJ5IHRoZSBvcmlnaW5hbCB1cHN0cmVhbSB2ZXJzaW9uIHRvIGNvcnJlY3RseSBhcHBseQorICAgICAgIHRvIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgRXh0VXRpbHMtTWFrZU1ha2VyIGF0IHRoYXQgdGltZS4KKworW1lPQ1RPICM4NjU2XQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IEJpbGwgUmFuZGxlIDx3aWxsaWFtLmMucmFuZGxlQGludGVsLmNvbT4KKworRnJvbSA0YTA3YTNiZDE4MzYzOTg2MTEyY2YyYjM5ZGVjM2MyOTg1MzUzZmZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRnJhbmNvaXMgUGVycmFkIDxmcmFuY29pcy5wZXJyYWRAZ2Fkei5vcmc+CitEYXRlOiBNb24sIDIyIERlYyAyMDE0IDE5OjA0OjM0ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGZpeCBjb25mbGljdCBiZXR3ZWVuIHNraXBfYWxsIGFuZCBFTkQgc2VjdGlvbgorCitzaW5jZSB0aGUgY29tbWl0IDQzMGRlNzgxODA5YTZiZTNiY2QyNWEzNDlkYzQwY2U1NDQwNWFiNTMKK3RoZSB0ZXN0IHN1aXRlIGZhaWxzIGluIGNyb3NzLWNvbXBpbCBlbnZpcm9ubWVudCAocGVybC01LjIxLjYgJiBwZXJsLTUuMjEuNykKK2xpa2UgdGhpcyA6CisKKyAgICAkIC4vcGVybCBoYXJuZXNzIC12IC4uL2NwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL3QvSU5TVEFMTF9CQVNFLnQKKyAgICAuLi9jcGFuL0V4dFV0aWxzLU1ha2VNYWtlci90L0lOU1RBTExfQkFTRS50IC4uCisgICAgMS4uMCAjIFNLSVAgY3Jvc3MtY29tcGlsaW5nIGFuZCBtYWtlIG5vdCBhdmFpbGFibGUKKyAgICBvayAxIC0gY2hkaXIgdXBkaXIKKyAgICBvayAyIC0gdGVhcmRvd24KKyAgICAjIExvb2tzIGxpa2UgeW91IHBsYW5uZWQgMCB0ZXN0cyBidXQgcmFuIDIuCisgICAgc2tpcHBlZDogY3Jvc3MtY29tcGlsaW5nIGFuZCBtYWtlIG5vdCBhdmFpbGFibGUKKwordGhpcyBjb21taXQgcmVzdG9yZXMgdGhlIGltcGxpY2l0IGNhbGwgb2YgcGxhbigpIGF0IGltcG9ydCB0aW1lIG9mIFRlc3Q6Ok1vcmUKKworU2lnbmVkLW9mZi1ieTogRnJhbmNvaXMgUGVycmFkIDxmcmFuY29pcy5wZXJyYWRAZ2Fkei5vcmc+CistLS0KKyBjcGFuL0V4dFV0aWxzLU1ha2VNYWtlci90L0lOU1RBTExfQkFTRS50ICAgICB8IDcgKysrKy0tLQorIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL3QvUExfRklMRVMudCAgICAgICAgIHwgNCArKy0tCisgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvdC9iYXNpYy50ICAgICAgICAgICAgfCA0ICsrLS0KKyBjcGFuL0V4dFV0aWxzLU1ha2VNYWtlci90L2VjaG8udCAgICAgICAgICAgICB8IDYgKysrLS0tCisgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvdC9taW5fcGVybF92ZXJzaW9uLnQgfCA0ICsrLS0KKyBjcGFuL0V4dFV0aWxzLU1ha2VNYWtlci90L3BtX3RvX2JsaWIudCAgICAgICB8IDQgKystLQorIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL3QvcmVjdXJzLnQgICAgICAgICAgIHwgNCArKy0tCisgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvdC9zZXZlcmFsX2F1dGhvcnMudCAgfCA0ICsrLS0KKyA4IGZpbGVzIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvdC9JTlNUQUxMX0JBU0UudCBiL2NwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL3QvSU5TVEFMTF9CQVNFLnQKK2luZGV4IGYyN2I2MmMuLjNiYmIzYTYgMTAwNjQ0CistLS0gYS9jcGFuL0V4dFV0aWxzLU1ha2VNYWtlci90L0lOU1RBTExfQkFTRS50CisrKysgYi9jcGFuL0V4dFV0aWxzLU1ha2VNYWtlci90L0lOU1RBTExfQkFTRS50CitAQCAtMTUsMTIgKzE1LDEzIEBAICRDTEVBTlVQICYmPSAxOyAjIHNvIGFsd2F5cyAxIG9yIG51bWVyaWNhbGx5IDAKKyAKKyB1c2UgTWFrZU1ha2VyOjpUZXN0OjpVdGlsczsKKyB1c2UgTWFrZU1ha2VyOjpUZXN0OjpTZXR1cDo6QkZEOworLXVzZSBUZXN0OjpNb3JlOworIHVzZSBDb25maWc7CisgdXNlIEV4dFV0aWxzOjpNTTsKKy1wbGFuICFNTS0+Y2FuX3J1bihtYWtlKCkpICYmICRFTlZ7UEVSTF9DT1JFfSAmJiAkQ29uZmlneyd1c2Vjcm9zc2NvbXBpbGUnfQorK3VzZSBUZXN0OjpNb3JlCisrICAgICFNTS0+Y2FuX3J1bihtYWtlKCkpICYmICRFTlZ7UEVSTF9DT1JFfSAmJiAkQ29uZmlneyd1c2Vjcm9zc2NvbXBpbGUnfQorICAgICA/IChza2lwX2FsbCA9PiAiY3Jvc3MtY29tcGlsaW5nIGFuZCBtYWtlIG5vdCBhdmFpbGFibGUiKQorLSAgICA6ICh0ZXN0cyA9PiAzICsgJENMRUFOVVAgKyBASU5TVERJUlMgKiAoMTUgKyAkQ0xFQU5VUCkpOworKyAgICA6ICgpOworK3BsYW4gdGVzdHMgPT4gMyArICRDTEVBTlVQICsgQElOU1RESVJTICogKDE1ICsgJENMRUFOVVApOworIAorIG15ICRJc19WTVMgPSAkXk8gZXEgJ1ZNUyc7CisgCitkaWZmIC0tZ2l0IGEvY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvdC9QTF9GSUxFUy50IGIvY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvdC9QTF9GSUxFUy50CitpbmRleCAwNzc5ZGJiLi44NWQ1M2E1IDEwMDY0NAorLS0tIGEvY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvdC9QTF9GSUxFUy50CisrKysgYi9jcGFuL0V4dFV0aWxzLU1ha2VNYWtlci90L1BMX0ZJTEVTLnQKK0BAIC0xMSw5ICsxMSw5IEBAIHVzZSBGaWxlOjpUZW1wIHF3W3RlbXBkaXJdOworIHVzZSBNYWtlTWFrZXI6OlRlc3Q6OlNldHVwOjpQTF9GSUxFUzsKKyB1c2UgTWFrZU1ha2VyOjpUZXN0OjpVdGlsczsKKyB1c2UgQ29uZmlnOworLXVzZSBUZXN0OjpNb3JlOworIHVzZSBFeHRVdGlsczo6TU07CistcGxhbiAhTU0tPmNhbl9ydW4obWFrZSgpKSAmJiAkRU5We1BFUkxfQ09SRX0gJiYgJENvbmZpZ3sndXNlY3Jvc3Njb21waWxlJ30KKyt1c2UgVGVzdDo6TW9yZQorKyAgICAhTU0tPmNhbl9ydW4obWFrZSgpKSAmJiAkRU5We1BFUkxfQ09SRX0gJiYgJENvbmZpZ3sndXNlY3Jvc3Njb21waWxlJ30KKyAgICAgPyAoc2tpcF9hbGwgPT4gImNyb3NzLWNvbXBpbGluZyBhbmQgbWFrZSBub3QgYXZhaWxhYmxlIikKKyAgICAgOiAodGVzdHMgPT4gOSk7CisgCitkaWZmIC0tZ2l0IGEvY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvdC9iYXNpYy50IGIvY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvdC9iYXNpYy50CitpbmRleCAzZGQ2NmFkLi5lZGRmMmU5IDEwMDY0NAorLS0tIGEvY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvdC9iYXNpYy50CisrKysgYi9jcGFuL0V4dFV0aWxzLU1ha2VNYWtlci90L2Jhc2ljLnQKK0BAIC0yMCw5ICsyMCw5IEBAIHVzZSB1dGY4OworIHVzZSBNYWtlTWFrZXI6OlRlc3Q6OlV0aWxzOworIHVzZSBNYWtlTWFrZXI6OlRlc3Q6OlNldHVwOjpCRkQ7CisgdXNlIENvbmZpZzsKKy11c2UgVGVzdDo6TW9yZTsKKyB1c2UgRXh0VXRpbHM6Ok1NOworLXBsYW4gIU1NLT5jYW5fcnVuKG1ha2UoKSkgJiYgJEVOVntQRVJMX0NPUkV9ICYmICRDb25maWd7J3VzZWNyb3NzY29tcGlsZSd9CisrdXNlIFRlc3Q6Ok1vcmUKKysgICAgIU1NLT5jYW5fcnVuKG1ha2UoKSkgJiYgJEVOVntQRVJMX0NPUkV9ICYmICRDb25maWd7J3VzZWNyb3NzY29tcGlsZSd9CisgICAgID8gKHNraXBfYWxsID0+ICJjcm9zcy1jb21waWxpbmcgYW5kIG1ha2Ugbm90IGF2YWlsYWJsZSIpCisgICAgIDogKHRlc3RzID0+IDE3MSk7CisgdXNlIEZpbGU6OkZpbmQ7CitkaWZmIC0tZ2l0IGEvY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvdC9lY2hvLnQgYi9jcGFuL0V4dFV0aWxzLU1ha2VNYWtlci90L2VjaG8udAoraW5kZXggNzg5Yjg1Zi4uYzQzYmM0NyAxMDA2NDQKKy0tLSBhL2NwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL3QvZWNoby50CisrKysgYi9jcGFuL0V4dFV0aWxzLU1ha2VNYWtlci90L2VjaG8udAorQEAgLTE0LDExICsxNCwxMSBAQCB1c2UgTWFrZU1ha2VyOjpUZXN0OjpVdGlsczsKKyB1c2UgRmlsZTo6VGVtcDsKKyB1c2UgQ3dkICdhYnNfcGF0aCc7CisgCistdXNlIFRlc3Q6Ok1vcmU7CisgdXNlIEV4dFV0aWxzOjpNTTsKKy1wbGFuICFNTS0+Y2FuX3J1bihtYWtlKCkpICYmICRFTlZ7UEVSTF9DT1JFfSAmJiAkQ29uZmlneyd1c2Vjcm9zc2NvbXBpbGUnfQorK3VzZSBUZXN0OjpNb3JlCisrICAgICFNTS0+Y2FuX3J1bihtYWtlKCkpICYmICRFTlZ7UEVSTF9DT1JFfSAmJiAkQ29uZmlneyd1c2Vjcm9zc2NvbXBpbGUnfQorICAgICA/IChza2lwX2FsbCA9PiAiY3Jvc3MtY29tcGlsaW5nIGFuZCBtYWtlIG5vdCBhdmFpbGFibGUiKQorLSAgICA6ICgpOworKyAgICA6ICh0ZXN0cyA9PiAxOCk7CisgCisgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTZXR1cAorIAorZGlmZiAtLWdpdCBhL2NwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL3QvbWluX3BlcmxfdmVyc2lvbi50IGIvY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvdC9taW5fcGVybF92ZXJzaW9uLnQKK2luZGV4IGM1ZDc4ZDYuLjJlZjExOGQgMTAwNjQ0CistLS0gYS9jcGFuL0V4dFV0aWxzLU1ha2VNYWtlci90L21pbl9wZXJsX3ZlcnNpb24udAorKysrIGIvY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvdC9taW5fcGVybF92ZXJzaW9uLnQKK0BAIC0xMyw5ICsxMyw5IEBAIHVzZSBUaWVPdXQ7CisgdXNlIE1ha2VNYWtlcjo6VGVzdDo6VXRpbHM7CisgdXNlIE1ha2VNYWtlcjo6VGVzdDo6U2V0dXA6Ok1QVjsKKyB1c2UgQ29uZmlnOworLXVzZSBUZXN0OjpNb3JlOworIHVzZSBFeHRVdGlsczo6TU07CistcGxhbiAhTU0tPmNhbl9ydW4obWFrZSgpKSAmJiAkRU5We1BFUkxfQ09SRX0gJiYgJENvbmZpZ3sndXNlY3Jvc3Njb21waWxlJ30KKyt1c2UgVGVzdDo6TW9yZQorKyAgICAhTU0tPmNhbl9ydW4obWFrZSgpKSAmJiAkRU5We1BFUkxfQ09SRX0gJiYgJENvbmZpZ3sndXNlY3Jvc3Njb21waWxlJ30KKyAgICAgPyAoc2tpcF9hbGwgPT4gImNyb3NzLWNvbXBpbGluZyBhbmQgbWFrZSBub3QgYXZhaWxhYmxlIikKKyAgICAgOiAodGVzdHMgPT4gMzYpOworIHVzZSBGaWxlOjpQYXRoOworZGlmZiAtLWdpdCBhL2NwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL3QvcG1fdG9fYmxpYi50IGIvY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvdC9wbV90b19ibGliLnQKK2luZGV4IGYxZTM0OGUuLmViZmEyNmMgMTAwNjQ0CistLS0gYS9jcGFuL0V4dFV0aWxzLU1ha2VNYWtlci90L3BtX3RvX2JsaWIudAorKysrIGIvY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvdC9wbV90b19ibGliLnQKK0BAIC0xMiw5ICsxMiw5IEBAIHVzZSBFeHRVdGlsczo6TWFrZU1ha2VyOworIHVzZSBNYWtlTWFrZXI6OlRlc3Q6OlV0aWxzOworIHVzZSBNYWtlTWFrZXI6OlRlc3Q6OlNldHVwOjpCRkQ7CisgdXNlIENvbmZpZzsKKy11c2UgVGVzdDo6TW9yZTsKKyB1c2UgRXh0VXRpbHM6Ok1NOworLXBsYW4gIU1NLT5jYW5fcnVuKG1ha2UoKSkgJiYgJEVOVntQRVJMX0NPUkV9ICYmICRDb25maWd7J3VzZWNyb3NzY29tcGlsZSd9CisrdXNlIFRlc3Q6Ok1vcmUKKysgICAgIU1NLT5jYW5fcnVuKG1ha2UoKSkgJiYgJEVOVntQRVJMX0NPUkV9ICYmICRDb25maWd7J3VzZWNyb3NzY29tcGlsZSd9CisgICAgID8gKHNraXBfYWxsID0+ICJjcm9zcy1jb21waWxpbmcgYW5kIG1ha2Ugbm90IGF2YWlsYWJsZSIpCisgICAgIDogJ25vX3BsYW4nOworIAorZGlmZiAtLWdpdCBhL2NwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL3QvcmVjdXJzLnQgYi9jcGFuL0V4dFV0aWxzLU1ha2VNYWtlci90L3JlY3Vycy50CitpbmRleCA4NGMwOWEyLi42NjFlMGRiIDEwMDY0NAorLS0tIGEvY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvdC9yZWN1cnMudAorKysrIGIvY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvdC9yZWN1cnMudAorQEAgLTE0LDkgKzE0LDkgQEAgdXNlIEZpbGU6OlRlbXAgcXdbdGVtcGRpcl07CisgdXNlIE1ha2VNYWtlcjo6VGVzdDo6VXRpbHM7CisgdXNlIE1ha2VNYWtlcjo6VGVzdDo6U2V0dXA6OlJlY3VyczsKKyB1c2UgQ29uZmlnOworLXVzZSBUZXN0OjpNb3JlOworIHVzZSBFeHRVdGlsczo6TU07CistcGxhbiAhTU0tPmNhbl9ydW4obWFrZSgpKSAmJiAkRU5We1BFUkxfQ09SRX0gJiYgJENvbmZpZ3sndXNlY3Jvc3Njb21waWxlJ30KKyt1c2UgVGVzdDo6TW9yZQorKyAgICAhTU0tPmNhbl9ydW4obWFrZSgpKSAmJiAkRU5We1BFUkxfQ09SRX0gJiYgJENvbmZpZ3sndXNlY3Jvc3Njb21waWxlJ30KKyAgICAgPyAoc2tpcF9hbGwgPT4gImNyb3NzLWNvbXBpbGluZyBhbmQgbWFrZSBub3QgYXZhaWxhYmxlIikKKyAgICAgOiAodGVzdHMgPT4gMjYpOworIAorZGlmZiAtLWdpdCBhL2NwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL3Qvc2V2ZXJhbF9hdXRob3JzLnQgYi9jcGFuL0V4dFV0aWxzLU1ha2VNYWtlci90L3NldmVyYWxfYXV0aG9ycy50CitpbmRleCAxYTc1YTNlLi44NjllOWYwIDEwMDY0NAorLS0tIGEvY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvdC9zZXZlcmFsX2F1dGhvcnMudAorKysrIGIvY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvdC9zZXZlcmFsX2F1dGhvcnMudAorQEAgLTEzLDkgKzEzLDkgQEAgdXNlIFRpZU91dDsKKyB1c2UgTWFrZU1ha2VyOjpUZXN0OjpVdGlsczsKKyB1c2UgTWFrZU1ha2VyOjpUZXN0OjpTZXR1cDo6U0FTOworIHVzZSBDb25maWc7CistdXNlIFRlc3Q6Ok1vcmU7CisgdXNlIEV4dFV0aWxzOjpNTTsKKy1wbGFuICFNTS0+Y2FuX3J1bihtYWtlKCkpICYmICRFTlZ7UEVSTF9DT1JFfSAmJiAkQ29uZmlneyd1c2Vjcm9zc2NvbXBpbGUnfQorK3VzZSBUZXN0OjpNb3JlCisrICAgICFNTS0+Y2FuX3J1bihtYWtlKCkpICYmICRFTlZ7UEVSTF9DT1JFfSAmJiAkQ29uZmlneyd1c2Vjcm9zc2NvbXBpbGUnfQorICAgICA/IChza2lwX2FsbCA9PiAiY3Jvc3MtY29tcGlsaW5nIGFuZCBtYWtlIG5vdCBhdmFpbGFibGUiKQorICAgICA6ICh0ZXN0cyA9PiAyMCk7CisgdXNlIEZpbGU6OlBhdGg7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9wZXJsLXJlbW92ZS1ubS1mcm9tLWxpYnN3YW50ZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9wZXJsLXJlbW92ZS1ubS1mcm9tLWxpYnN3YW50ZWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ4OWYwNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL3BlcmwtcmVtb3ZlLW5tLWZyb20tbGlic3dhbnRlZC5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIDQ3MzI3MTFlMjU0OGI2ZDczNGNhODMxZDY1ZGJjZjUwMWE4OTc3NGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZWFzIEtvZW5pZyA8YW5ka0BjcGFuLm9yZz4KK0RhdGU6IFN1biwgMyBKYW4gMjAxNiAwODo0MDozMyArMDEwMAorU3ViamVjdDogW1BBVENIXSBSZW1vdmUgbm0gZnJvbSBsaWJzd2FudGVkCisKK05tIHN0b29kIGZvciAiTmV3IE1hdGgiIGxpYnJhcnkgaW4gdGhlIGNvbnRleHQgb2YgMTk5NC4gMjAxNCBhIGNvbmZsaWN0aW5nCitsaWJyYXJ5IGxpYm5tIGFwcGVhcmVkIHRoYXQgaGFzIGEgbmV0d29yayBtYW5hZ2VyIGNvbnRleHQuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2NvbW1pdCA0NzMyNzExZSBvbiBicmFuY2ggYmxlYWQsIHRhZyB2NS4yNS4wXQorCistLS0KKyBDb25maWd1cmUgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9Db25maWd1cmUgYi9Db25maWd1cmUKK2luZGV4IDBlNzFiNGIuLmNmYmRhYTEgMTAwNzU1CistLS0gYS9Db25maWd1cmUKKysrKyBiL0NvbmZpZ3VyZQorQEAgLTE0NjQsNyArMTQ2NCw3IEBAIGxpYnN3YW50ZWRfdXNlbGFyZ2VmaWxlcz0nJworIDogc2V0IHVzZXNvY2tzIG9uIHRoZSBDb25maWd1cmUgY29tbWFuZCBsaW5lIHRvIGVuYWJsZSBzb2Nrcy4KKyA6IExpc3Qgb2YgbGlicmFyaWVzIHdlIHdhbnQuCisgOiBJZiBhbnlvbmUgbmVlZHMgZXh0cmEgLWx4eHgsIHB1dCB0aG9zZSBpbiBhIGhpbnQgZmlsZS4KKy1saWJzd2FudGVkPSJjbCBwdGhyZWFkIHNvY2tldCBiaW5kIGluZXQgbnNsIG5tIG5kYm0gZ2RibSBkYm0gZGIgbWFsbG9jIGRsIGxkIgorK2xpYnN3YW50ZWQ9ImNsIHB0aHJlYWQgc29ja2V0IGJpbmQgaW5ldCBuc2wgbmRibSBnZGJtIGRibSBkYiBtYWxsb2MgZGwgbGQiCisgbGlic3dhbnRlZD0iJGxpYnN3YW50ZWQgc3VuIG0gY3J5cHQgc2VjIHV0aWwgYyBjcG9zaXggcG9zaXggdWNiIGJzZCBCU0QiCisgOiBXZSBwcm9iYWJseSB3YW50IHRvIHNlYXJjaCAvdXNyL3NobGliIGJlZm9yZSBtb3N0IG90aGVyIGxpYnJhcmllcy4KKyA6IFRoaXMgaXMgb25seSB1c2VkIGJ5IHRoZSBsaWIvRXh0VXRpbHMvTWFrZU1ha2VyLnBtIHJvdXRpbmUgZXh0bGlibGlzdC4KKy0tIAorMi45LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvcGVybC10ZXN0LWN1c3RvbWl6ZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9wZXJsLXRlc3QtY3VzdG9taXplZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NGIwYjg4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvcGVybC10ZXN0LWN1c3RvbWl6ZWQucGF0Y2gKQEAgLTAsMCArMSw2MSBAQAorVGhlIE9FIGNvcmUgcmVjaXBpZXMgY3VzdG9taXplIHNvbWUgRXh0VXRpbHMtTWFrZU1ha2VyIG1vZHVsZXMsCit3aGljaCBjYXVzZXMgdGhlaXIgTUQ1IHN1bSB0byBtaXNtYXRjaCB0aGUgcHJvdmlkZWQgdGFibGUgYW5kIHRoZQorY29ycmVzcG9uZGluZyB0ZXN0cyB0byBmYWlsLiBBbHNvLCB3ZSBwYXRjaCBzZXZlcmFsIHRlc3QgZmlsZXMgd2l0aAorYSBiYWNrcG9ydGVkIHBhdGNoLiBVcGRhdGUgbGlzdCBvZiBoYXNoZXMgdG8gcmVmbGVjdCB0aGUgcGF0Y2hlZCBmaWxlcy4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogQmlsbCBSYW5kbGUgPHdpbGxpYW0uYy5yYW5kbGVAaW50ZWwuY29tPgorCitJbmRleDogcGVybC01LjIyLjEvdC9wb3J0aW5nL2N1c3RvbWl6ZWQuZGF0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcGVybC01LjIyLjEub3JpZy90L3BvcnRpbmcvY3VzdG9taXplZC5kYXQJMjAxNS0xMC0zMSAxMzozNjoxNi4wMDAwMDAwMDAgKzAwMDAKKysrKyBwZXJsLTUuMjIuMS90L3BvcnRpbmcvY3VzdG9taXplZC5kYXQJMjAxNi0wNi0wMiAxMjo1MDoxMC4zODEwMzAyMDQgLTA3MDAKK0BAIC0xLDggKzEsOCBAQAorIENQQU4gY3Bhbi9DUEFOL2xpYi9DUEFOLnBtIGNlNjJjNDNkNzJmMTAxYzAxMTE4NGRiYmM1OWUyMWMyNzkwODI2ZjAKKyBFeHRVdGlsczo6TWFrZU1ha2VyIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9Db21tYW5kL01NLnBtIDdmNGRmZDBmZTg4NGJkNDI0MTJiY2YwNGNhODBlZjk3YjM5YzFkNTQKKyBFeHRVdGlsczo6TWFrZU1ha2VyIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9MaWJsaXN0LnBtIGJlZjA5OTk4OGIxNWZiMGIyYTFmNWFjNDhjMDFhZjFmN2YzNmQzMjkKKy1FeHRVdGlsczo6TWFrZU1ha2VyIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9MaWJsaXN0L0tpZC5wbSA4MTY4ZTE4ZjBlM2NlM2VjZTRiYjdlN2M3MmQ1N2VjMDdjNjdjNDAyCistRXh0VXRpbHM6Ok1ha2VNYWtlciBjcGFuL0V4dFV0aWxzLU1ha2VNYWtlci9saWIvRXh0VXRpbHMvTWFrZU1ha2VyLnBtIDcxMTVlOTdhNTM1NTljYjNlYzA2MWRkNmY3ZjM0NGU1MjI3MjRjNGEKKytFeHRVdGlsczo6TWFrZU1ha2VyIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9MaWJsaXN0L0tpZC5wbSBhMDhlY2Y4MGM4ZjBhMjM0MjQzODE3NzEzYjJhNWFiMGRjYWUzYzBhCisrRXh0VXRpbHM6Ok1ha2VNYWtlciBjcGFuL0V4dFV0aWxzLU1ha2VNYWtlci9saWIvRXh0VXRpbHMvTWFrZU1ha2VyLnBtIDNkN2FiZDY3NGIxNWVkMzIzZjc0MzU5NGVmMGJkMDlkYjc2YjFhZWUKKyBFeHRVdGlsczo6TWFrZU1ha2VyIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9NYWtlTWFrZXIvQ29uZmlnLnBtIGY4ZGI4ZDQyNDViZjA2ODRiODIxMGM4MTFmNTBkN2NmYjFhMjdkNzgKKyBFeHRVdGlsczo6TWFrZU1ha2VyIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9NYWtlTWFrZXIvRkFRLnBvZCA3NTdiZmZiNDc4NTc1MjEzMTFmOGYzYmRlNDNlYmUxNjVmOGQ1MTkxCisgRXh0VXRpbHM6Ok1ha2VNYWtlciBjcGFuL0V4dFV0aWxzLU1ha2VNYWtlci9saWIvRXh0VXRpbHMvTWFrZU1ha2VyL0xvY2FsZS5wbSA4MmJlMDY4NTFkZWI4NGM2NDE5YWQwMDNjZTliNmQxOTU3ZjM5NWYzCitAQCAtMTQsNyArMTQsNyBAQAorIEV4dFV0aWxzOjpNYWtlTWFrZXIgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL01rc3ltbGlzdHMucG0gYWI4MDAyOWFiMTZkMzhkNGYyZTQxZGM4OGQyY2ViOWYzNzkwZTQ3NworIEV4dFV0aWxzOjpNYWtlTWFrZXIgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL01NLnBtIDQ1M2UwYWJiYzRiYjM4ZGI0YzA4MjBhZDVjNDg0NmYzMTNiNjYyOTEKKyBFeHRVdGlsczo6TWFrZU1ha2VyIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9NTV9BSVgucG0gYzFiMWJhYmRhOGY0M2FlN2EyY2FiYTFjYjRmNzBmOTJhZjVhMGUzNAorLUV4dFV0aWxzOjpNYWtlTWFrZXIgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL01NX0FueS5wbSA2ZjkwZDk0YWQzZTdhYTAwNDVhM2IxYTEwYTFiYjE4MzkxZjg5ZjU3CisrRXh0VXRpbHM6Ok1ha2VNYWtlciBjcGFuL0V4dFV0aWxzLU1ha2VNYWtlci9saWIvRXh0VXRpbHMvTU1fQW55LnBtIDIxYmRlNTMyOTBiZjFhNGRhNDQ1NzI5MGI2NWJkMWIwY2E2ZjFkMTYKKyBFeHRVdGlsczo6TWFrZU1ha2VyIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9NTV9CZU9TLnBtIGNhYjJiM2NlMDhiNzFhNGNlODlhYTYzMGYyMzZlYjA4Yjg1MjQzOWQKKyBFeHRVdGlsczo6TWFrZU1ha2VyIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9NTV9DeWd3aW4ucG0gNjFmY2VkMGZhZjUxOGJmODdjMjY1ZmNiNTFlZDMzMGJhMzU0NjIzZgorIEV4dFV0aWxzOjpNYWtlTWFrZXIgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL01NX0Rhcndpbi5wbSBhZTBlZjUxYTdiNmRkMGIwNWFhNjFjNzc5ZGY3MTY3ZGRhNWY1MTE5CitAQCAtMjMsNyArMjMsNyBAQAorIEV4dFV0aWxzOjpNYWtlTWFrZXIgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL01NX05XNS5wbSA0MzMxMzVlZWNiODViNGIxZDkwZDMwMjc0MzJmMzI5NDM2Yzc4NDQ3CisgRXh0VXRpbHM6Ok1ha2VNYWtlciBjcGFuL0V4dFV0aWxzLU1ha2VNYWtlci9saWIvRXh0VXRpbHMvTU1fT1MyLnBtIDFmYmI1NjA1YmZiNDdmZWVlNDA4M2ZlYmE4YWE4NWU2NTk2MjhmNzAKKyBFeHRVdGlsczo6TWFrZU1ha2VyIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9NTV9RTlgucG0gNWI2NmQxZjQ4NWE2MDM0ZDk2ZmMyNGJhMTY2NWIxYmFkOWU0NDdmMQorLUV4dFV0aWxzOjpNYWtlTWFrZXIgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL01NX1VuaXgucG0gOGNlZjk5YTliZDM3MGVjZmQwN2RkYjBlZmJkY2JiNDEwMTI1NWU0NQorK0V4dFV0aWxzOjpNYWtlTWFrZXIgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL01NX1VuaXgucG0gODYwZDUyMDIzNGQ3YzkwMzZkOTFmMGIxNDNhMWRkZGYyYTVlOGNiNworIEV4dFV0aWxzOjpNYWtlTWFrZXIgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL01NX1VXSU4ucG0gOTM5NTcyZmRlM2Q1OWJhNzdjMmU2NzdmZTJkZjJiZWQ0YmVkNTg5OAorIEV4dFV0aWxzOjpNYWtlTWFrZXIgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL01NX1ZNUy5wbSAwOWMyMDQ5YmZkMjViNzM1ZTJhNWJjZjU2YTZjZmY3YjQ4MjdmOWM4CisgRXh0VXRpbHM6Ok1ha2VNYWtlciBjcGFuL0V4dFV0aWxzLU1ha2VNYWtlci9saWIvRXh0VXRpbHMvTU1fVk9TLnBtIGQ2NWQ2M2Y4MjE3YTU1YzM2ZjYyZTI0OTgxNDk4ODk3NGY1OTNjNzkKK0BAIC0zMSw4ICszMSwxNiBAQAorIEV4dFV0aWxzOjpNYWtlTWFrZXIgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL01NX1dpbjk1LnBtIDEyZGYzOGVhY2NlZWVkNzNjYWI5NGM0MjMyMzZiZmFlZDBmYmJmZWMKKyBFeHRVdGlsczo6TWFrZU1ha2VyIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9NWS5wbSAyMmZlOTU5NmEwMjM3MjUyZjQ1Mzk5YTM2YWJjODNiNzgxM2JjMzI4CisgRXh0VXRpbHM6Ok1ha2VNYWtlciBjcGFuL0V4dFV0aWxzLU1ha2VNYWtlci9saWIvRXh0VXRpbHMvdGVzdGxpYi5wbSA3ZmJjNDJjYTJlYmM2YzY3N2I3OWFlNWZkNTY0NzI0M2NmMDY5NDYzCistRXh0VXRpbHM6Ok1ha2VNYWtlciBjcGFuL0V4dFV0aWxzLU1ha2VNYWtlci90L2Jhc2ljLnQgNmNkYzc3MDFiNTBlNTg2YmM5YzRjZmIxNjE2ZGU4ZWIwYjFiYWYzNAorLUV4dFV0aWxzOjpNYWtlTWFrZXIgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvdC9wbV90b19ibGliLnQgNzFlYmNlZTM1NTY5MWNlMzc0ZmNhZDI1MWIxMmQ4YjI0MTI0NjJiMworK0V4dFV0aWxzOjpNYWtlTWFrZXIgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvdC9iYXNpYy50IGQ3OGZkZWM3YTQ1MTJkYzhkMmE3YWJkNjJiODEwNDUzMGFmOGVjZjkKKytFeHRVdGlsczo6TWFrZU1ha2VyIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL3QvZWNoby50IDk0MjdmNGFkZWJiYjEzYjU3YjRhNzZmZWYyOTcyYWRmNjNjOWJkOTYKKytFeHRVdGlsczo6TWFrZU1ha2VyIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL3QvSU5TVEFMTF9CQVNFLnQgZWYzNTZjMTk2YmI1YzNjNDI4YWUzMDlkN2Y5ODliZGQ2ZDc5Yjg2ZAorK0V4dFV0aWxzOjpNYWtlTWFrZXIgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvdC9JTlNUX1BSRUZJWC50IDNlNmQ0ZDZlYjJlYWI0MmU5ODNhYzcwZWI1NzM3YTc1OWFmMDkxNmYKKytFeHRVdGlsczo6TWFrZU1ha2VyIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL3QvSU5TVC50IGU1NTNmYTBkNTNjODk0YzhkMzZhYWZiNjllZGQ1NWIzOGE5MzU1ZjgKKytFeHRVdGlsczo6TWFrZU1ha2VyIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL3QvbWluX3BlcmxfdmVyc2lvbi50IGU5MzBlYzkyMTdkZTVhMTc4NWQwMjQ3YzMwYjE1OWU2ZjdmNTY3M2YKKytFeHRVdGlsczo6TWFrZU1ha2VyIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL3QvUExfRklMRVMudCA3ZTQ5YWI2YzRkNDY3ODI2ZDIyMDIzZmEwM2Q3N2I4NWY5MzViNThlCisrRXh0VXRpbHM6Ok1ha2VNYWtlciBjcGFuL0V4dFV0aWxzLU1ha2VNYWtlci90L3BtX3RvX2JsaWIudCBhMDRjOTZlZWNmYWIxN2U0MDk0NjA0ZTBmYjk5OGRkOTNjZjkzYjkzCisrRXh0VXRpbHM6Ok1ha2VNYWtlciBjcGFuL0V4dFV0aWxzLU1ha2VNYWtlci90L3JlY3Vycy50IDk0Y2NlM2JmZjg3NWE4NzhlZDI3ODE2YjNmNWRmMmNhNDIyNWM3MTQKKytFeHRVdGlsczo6TWFrZU1ha2VyIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL3Qvc2V2ZXJhbF9hdXRob3JzLnQgZjgxMWQ5OTNjMDgzNWM2NmRjNTAxZWQ1NTA4M2FjYjI5YmYzM2JmNworIFRleHQ6OlBhcnNlV29yZHMgY3Bhbi9UZXh0LVBhcnNlV29yZHMvdC9QYXJzZVdvcmRzLnQgOWJhZTUxYzliOTQ0Y2Q1YzBiYmFiZTlkMzk3ZTU3Mzk3NmEyYmU4ZQorIFdpbjMyQVBJOjpGaWxlIGNwYW4vV2luMzJBUEktRmlsZS9idWZmZXJzLmggMDJkMjMwYWM5YWM3MDkxMzY1MTI4MTYxYTBlZDY3MTg5OGJhZWZhZQorIFdpbjMyQVBJOjpGaWxlIGNwYW4vV2luMzJBUEktRmlsZS9jRmlsZS5oIGZjYTdlMzgzZTc2OTc5YzNhYzNhZGYxMmQxMWQxYmNkMjYxOGU0ODkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsXzUuMjIuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsXzUuMjIuMS5iYgppbmRleCBiZjhiM2I2Li43OTJhNjViIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybF81LjIyLjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmxfNS4yMi4xLmJiCkBAIC02Myw2ICs2MywxMiBAQAogICAgICAgICBmaWxlOi8vZXh0LU9EQk1fRmlsZS10LW9kYm0udC1maXgtdGhlLXBhdGgtb2YtZGJtdF9jb21tb24ucC5wYXRjaCBcCiAgICAgICAgIGZpbGU6Ly9wZXJsLVBhdGhUb29scy1kb24tdC1maWx0ZXItb3V0LWJsaWItZnJvbS1JTkMucGF0Y2ggXAogICAgICAgICBmaWxlOi8vcGVybC1lcnJuby1nZW5lcmF0aW9uLWdjYzUucGF0Y2ggXAorICAgICAgICBmaWxlOi8vcGVybC1maXgtY29uZmxpY3QtYmV0d2Vlbi1za2lwX2FsbC1hbmQtRU5ELnBhdGNoIFwKKyAgICAgICAgZmlsZTovL3BlcmwtdGVzdC1jdXN0b21pemVkLnBhdGNoIFwKKyAgICAgICAgZmlsZTovL3BlcmwtZml4LUNWRS0yMDE2LTIzODEucGF0Y2ggXAorICAgICAgICBmaWxlOi8vcGVybC1maXgtQ1ZFLTIwMTYtNjE4NS5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly9wZXJsLWZpeC1DVkUtMjAxNS04NjA3LnBhdGNoIFwKKyAgICAgICAgZmlsZTovL3BlcmwtZml4LUNWRS0yMDE2LTEyMzgucGF0Y2ggXAogIgogCiAjIEZpeCB0ZXN0IGNhc2UgaXNzdWVzCkBAIC0zNDAsNyArMzQ2LDkgQEAKIEFMTE9XX0VNUFRZX3BlcmwtbW9kdWxlcyA9ICIxIgogUEFDS0FHRVNfYXBwZW5kID0gIiBwZXJsLW1vZHVsZXMgIgogCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7CitQQUNLQUdFU1BMSVRGVU5DU19wcmVwZW5kID0gInNwbGl0X3BlcmxfcGFja2FnZXMgIgorCitweXRob24gc3BsaXRfcGVybF9wYWNrYWdlcyAoKSB7CiAgICAgbGliZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfS9wZXJsLyR7UFZ9JykKICAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsICdhdXRvLyhbXi5dKikvW14vXSpcLihzb3xsZHxpeHxhbCknLCAncGVybC1tb2R1bGUtJXMnLCAncGVybCBtb2R1bGUgJXMnLCByZWN1cnNpdmU9VHJ1ZSwgbWF0Y2hfcGF0aD1UcnVlLCBwcmVwZW5kPUZhbHNlKQogICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgJ01vZHVsZS8oW15cL10qKVwucG0nLCAncGVybC1tb2R1bGUtJXMnLCAncGVybCBtb2R1bGUgJXMnLCByZWN1cnNpdmU9VHJ1ZSwgYWxsb3dfZGlycz1GYWxzZSwgbWF0Y2hfcGF0aD1UcnVlLCBwcmVwZW5kPUZhbHNlKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25maWcvcGtnY29uZmlnLzAwMDEtZ2RhdGUtTW92ZS13YXJuaW5nLXByYWdtYS1vdXRzaWRlLW9mLWZ1bmN0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25maWcvcGtnY29uZmlnLzAwMDEtZ2RhdGUtTW92ZS13YXJuaW5nLXByYWdtYS1vdXRzaWRlLW9mLWZ1bmN0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0YzgyOTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmZpZy9wa2djb25maWcvMDAwMS1nZGF0ZS1Nb3ZlLXdhcm5pbmctcHJhZ21hLW91dHNpZGUtb2YtZnVuY3Rpb24ucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSA5NDZkMzYyNjZkOGEzMGYwNGZlMzRkMzE4M2JmNDkyOTE0MTkzNGQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogY295cHUgPGNveXB1QHNkZi5vcmc+CitEYXRlOiBXZWQsIDIgTWFyIDIwMTYgMTk6Mzg6NDggKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gZ2RhdGU6IE1vdmUgd2FybmluZyBwcmFnbWEgb3V0c2lkZSBvZiBmdW5jdGlvbgorCitDb21taXQgMDgxN2FmNDBlOGM3NGM3MjFjMzBmNmVmNDgyYjFmNTNkMTIwNDRjNyBicmVha3MgdGhlIGJ1aWxkIG9uCitvbGRlciB2ZXJzaW9ucyBvZiBHQ0MsIHdoaWNoIGRvbid0IGFsbG93IHByYWdtYSBpbnNpZGUgZnVuY3Rpb25zLgorCitodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy83NjE1NTAKKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworIGdsaWIvZ2xpYi9nZGF0ZS5jIHwgNSArKysrKworIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2dsaWIvZ2xpYi9nZGF0ZS5jIGIvZ2xpYi9nbGliL2dkYXRlLmMKK2luZGV4IDE5NzhjZjcuLjIwZTZjNGEgMTAwNjQ0CistLS0gYS9nbGliL2dsaWIvZ2RhdGUuYworKysrIGIvZ2xpYi9nbGliL2dkYXRlLmMKK0BAIC0yNDM5LDYgKzI0MzksOSBAQCB3aW4zMl9zdHJmdGltZV9oZWxwZXIgKGNvbnN0IEdEYXRlICAgICAqZCwKKyAgKgorICAqIFJldHVybnM6IG51bWJlciBvZiBjaGFyYWN0ZXJzIHdyaXR0ZW4gdG8gdGhlIGJ1ZmZlciwgb3IgMCB0aGUgYnVmZmVyIHdhcyB0b28gc21hbGwKKyAgKi8KKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZm9ybWF0LW5vbmxpdGVyYWwiCisrCisgZ3NpemUgICAgIAorIGdfZGF0ZV9zdHJmdGltZSAoZ2NoYXIgICAgICAgKnMsIAorICAgICAgICAgICAgICAgICAgZ3NpemUgICAgICAgIHNsZW4sIAorQEAgLTI1NDksMyArMjU1Miw1IEBAIGdfZGF0ZV9zdHJmdGltZSAoZ2NoYXIgICAgICAgKnMsCisgICByZXR1cm4gcmV0dmFsOworICNlbmRpZgorIH0KKysKKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAorLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmZpZy9wa2djb25maWcvMDAwMS1nbGliLWdldHRleHQubTQtVXBkYXRlLUFNX0dMSUJfR05VX0dFVFRFWFQtdG8tbWF0Y2gtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25maWcvcGtnY29uZmlnLzAwMDEtZ2xpYi1nZXR0ZXh0Lm00LVVwZGF0ZS1BTV9HTElCX0dOVV9HRVRURVhULXRvLW1hdGNoLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDMxMGNkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25maWcvcGtnY29uZmlnLzAwMDEtZ2xpYi1nZXR0ZXh0Lm00LVVwZGF0ZS1BTV9HTElCX0dOVV9HRVRURVhULXRvLW1hdGNoLS5wYXRjaApAQCAtMCwwICsxLDQxIEBACitGcm9tIGU0MDRlMjdkZTc3ZDhiOTkzYzRjYzg3MDEzZDcwNzIwMGIzYTU1NDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorRGF0ZTogVHVlLCAxNyBNYXkgMjAxNiAxMzoyNjoyNyArMDMwMAorU3ViamVjdDogW1BBVENIXSBnbGliLWdldHRleHQubTQ6IFVwZGF0ZSBBTV9HTElCX0dOVV9HRVRURVhUIHRvIG1hdGNoIGdsaWIKKworVGhpcyBhdm9pZHMKKyAgZXJyb3I6IG00X2NvcHk6IHdvbid0IG92ZXJ3cml0ZSBkZWZpbmVkIG1hY3JvOiBnbGliX0RFRlVOCisKK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworLS0tCisgZ2xpYi9tNG1hY3Jvcy9nbGliLWdldHRleHQubTQgfCA1ICsrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dsaWIvbTRtYWNyb3MvZ2xpYi1nZXR0ZXh0Lm00IGIvZ2xpYi9tNG1hY3Jvcy9nbGliLWdldHRleHQubTQKK2luZGV4IDUyMTdmZDguLjE1NWIxZDggMTAwNjQ0CistLS0gYS9nbGliL200bWFjcm9zL2dsaWItZ2V0dGV4dC5tNAorKysrIGIvZ2xpYi9tNG1hY3Jvcy9nbGliLWdldHRleHQubTQKK0BAIC0zMTMsNyArMzEzLDcgQEAgbXNnc3RyICIiCisgIyBvbiB2YXJpb3VzIHZhcmlhYmxlcyBuZWVkZWQgYnkgdGhlIE1ha2VmaWxlLmluLmluIGluc3RhbGxlZCBieSAKKyAjIGdsaWItZ2V0dGV4dGl6ZS4KKyBkbmwKKy1nbGliX0RFRlVOKFtHTElCX0dOVV9HRVRURVhUXSwKKytBVV9ERUZVTihbR0xJQl9HTlVfR0VUVEVYVF0sCisgICBbQUNfUkVRVUlSRShbQUNfUFJPR19DQ10pZG5sCisgICAgCisgICAgR0xJQl9MQ19NRVNTQUdFUworQEAgLTM4Myw3ICszODMsOCBAQCBnbGliX0RFRlVOKFtHTElCX0dOVV9HRVRURVhUXSwKKyAgICBybSAtZiBwby9QT1RGSUxFUworICAgIHNlZCAtZSAiL14jL2QiIC1lICIvXlwkL2QiIC1lICJzLC4qLAkkcG9zcmNwcmVmaXgmIFxcXFwsIiAtZSAiXCRzL1woLipcKSBcXFxcL1wxLyIgXAorIAk8ICRzcmNkaXIvcG8vUE9URklMRVMuaW4gPiBwby9QT1RGSUxFUworLSAgXSkKKysgIF0sCisrICBbWyQwOiBUaGlzIG1hY3JvIGlzIGRlcHJlY2F0ZWQuIFlvdSBzaG91bGQgdXNlIHVwc3RyZWFtIGdldHRleHQgaW5zdGVhZC5dXSkKKyAKKyAjIEFNX0dMSUJfREVGSU5FX0xPQ0FMRURJUihWQVJJQUJMRSkKKyAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIAorMi4xLjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25maWcvcGtnY29uZmlnX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZmlnL3BrZ2NvbmZpZ19naXQuYmIKaW5kZXggZDM0ZjYwOC4uZmY4MjU0YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25maWcvcGtnY29uZmlnX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmZpZy9wa2djb25maWdfZ2l0LmJiCkBAIC0xMiwxMiArMTIsMTQgQEAKIERFUEVORFNfY2xhc3MtbmF0aXZlID0gIiIKIERFUEVORFNfY2xhc3MtbmF0aXZlc2RrID0gIiIKIAotU1JDUkVWID0gIjU5MTRlZGZlOTYwNGFiZmVkZDIyMDEwM2NiYWMzODJmYzRkMjY4YmIiCi1QViA9ICIwLjI5K2dpdCR7U1JDUFZ9IgorU1JDUkVWID0gIjg3MTUyYzA1YmU4OGNhOGJlNzFhM2E1NjNmMjc1YjM2ODZkMzJjMjgiCitQViA9ICIwLjI5LjErZ2l0JHtTUkNQVn0iCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvcGtnLWNvbmZpZyBcCiAgICAgICAgICAgIGZpbGU6Ly9wa2ctY29uZmlnLW5hdGl2ZS5pbiBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgtZ2xpYi1jb25maWd1cmUtbGlidG9vbC11c2FnZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWdkYXRlLU1vdmUtd2FybmluZy1wcmFnbWEtb3V0c2lkZS1vZi1mdW5jdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWdsaWItZ2V0dGV4dC5tNC1VcGRhdGUtQU1fR0xJQl9HTlVfR0VUVEVYVC10by1tYXRjaC0ucGF0Y2ggXAogICAgICAgICAgICAiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ByZWxpbmsvcHJlbGlua19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ByZWxpbmsvcHJlbGlua19naXQuYmIKaW5kZXggZTIyM2VmNi4uMDg1NmIxYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wcmVsaW5rL3ByZWxpbmtfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHJlbGluay9wcmVsaW5rX2dpdC5iYgpAQCAtOCw3ICs4LDcgQEAKIHJ1bnRpbWUgYW5kIHRodXMgcHJvZ3JhbXMgY29tZSB1cCBmYXN0ZXIuIgogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM5M2MwNTUwYmQzMTczZjQ1MDRiMmNiZDg5OTFlNTBiIgotU1JDUkVWID0gIjkyNzk3OWJiZDExNWVlYjhhNzVkYjMyMzE5MDZlZjZhY2E0YzRlYjYiCitTUkNSRVYgPSAiZWYyMDYyOGRkNzhiOTJlMWEzMTIzYWZjNjdiNjRjZjAxMGJkZDllNCIKIFBWID0gIjEuMCtnaXQke1NSQ1BWfSIKIAogIwpAQCAtNDQsNiArNDQsOTkgQEAKIEVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtc2VsaW51eCAtLXdpdGgtcGtndmVyc2lvbj0ke1BWfS0ke1BSfSBcCiAJLS13aXRoLWJ1Z3VybD1odHRwOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy8iCiAKKworIworIyBGb3IgdGFyZ2V0IHByZWxpbmsgd2UgbmVlZCB0byBlbnN1cmUgcGF0aHMgbWF0Y2ggdGhlIGxpYiBwYXRoIGxheW91dAorIyBpbmNsdWRpbmcgZm9yIGFueSBjb25maWd1cmVkIG11bHRpbGlicworIworcHl0aG9uIGRvX2xpbmtlcnBhdGhzICgpIHsKKyAgICB2YWx1ZXMgPSBhbGxfbXVsdGlsaWJfdHVuZV9saXN0KFsiVFVORV9BUkNIIiwgImJhc2VsaWIiLCAiQUJJRVhURU5TSU9OIl0sIGQpCisKKyAgICBhcmNoZXMgPSB2YWx1ZXNbIlRVTkVfQVJDSCJdCisgICAgYmFzZWxpYnMgPSB2YWx1ZXNbImJhc2VsaWIiXQorICAgIGFiaXMgPSB2YWx1ZXNbIkFCSUVYVEVOU0lPTiJdCisKKyAgICBkZWYgcmVwbGFjZV9saW5lcyhmLCBzZWFyY2gsIHJlcGxhY2VtZW50LCBkLCBmaXJzdG9ubHkgPSBGYWxzZSwgc2Vjb25kb25seSA9IEZhbHNlKToKKyAgICAgICAgZiA9IGQuZXhwYW5kKGYpCisgICAgICAgIGlmIHNlYXJjaCA9PSByZXBsYWNlbWVudDoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBiYi5kZWJ1ZygyLCAiUmVwbGFjaW5nICVzIHdpdGggJXMgaW4gJXMiICUgKHNlYXJjaCwgcmVwbGFjZW1lbnQsIGYpKQorICAgICAgICB3aXRoIG9wZW4oZiwgInIiKSBhcyBkYXRhOgorICAgICAgICAgICAgbGluZXMgPSBkYXRhLnJlYWRsaW5lcygpCisgICAgICAgIHdpdGggb3BlbihmLCAidyIpIGFzIGRhdGE6CisgICAgICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgICAgICAgICBpZiBub3Qgc2Vjb25kb25seSBhbmQgbm90IGZpcnN0b25seToKKyAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZShzZWFyY2gsIHJlcGxhY2VtZW50KQorICAgICAgICAgICAgICAgIGVsaWYgc2Vjb25kb25seSBhbmQgc2VhcmNoIGluIGxpbmU6CisgICAgICAgICAgICAgICAgICAgIHNlY29uZG9ubHkgPSBGYWxzZQorICAgICAgICAgICAgICAgIGVsaWYgZmlyc3Rvbmx5IGFuZCBzZWFyY2ggYW5kIHNlYXJjaCBpbiBsaW5lOgorICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKHNlYXJjaCwgcmVwbGFjZW1lbnQpCisgICAgICAgICAgICAgICAgICAgIHNlYXJjaCA9IE5vbmUKKyAgICAgICAgICAgICAgICBkYXRhLndyaXRlKGxpbmUpCisKKyAgICBkZWYgcmVwbGFjZV9saW5lc19ydGxkKGYsIHNlYXJjaCwgcmVwbGFjZW1lbnQsIHNlY3Rpb24sIGQpOgorICAgICAgICBmID0gZC5leHBhbmQoZikKKyAgICAgICAgYmIuZGVidWcoMiwgIlJlcGxhY2luZyAlcyB3aXRoICVzIGluICVzIiAlIChzZWFyY2gsIHJlcGxhY2VtZW50LCBmKSkKKyAgICAgICAgd2l0aCBvcGVuKGYsICJyIikgYXMgZGF0YToKKyAgICAgICAgICAgIGxpbmVzID0gZGF0YS5yZWFkbGluZXMoKQorICAgICAgICBmb3VuZCA9IEZhbHNlCisgICAgICAgIGZvdW5kMiA9IEZhbHNlCisgICAgICAgIHdpdGggb3BlbihmLCAidyIpIGFzIGRhdGE6CisgICAgICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgICAgICAgICBpZiBzZWN0aW9uIGluIGxpbmU6CisgICAgICAgICAgICAgICAgICAgIGlmIHNlY3Rpb24gPT0gImVsc2UiIGFuZCAiaWYiIGluIGxpbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IEZhbHNlCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IFRydWUKKyAgICAgICAgICAgICAgICBpZiBmb3VuZCBhbmQgImRzdF9MSUIgPSIgaW4gbGluZToKKyAgICAgICAgICAgICAgICAgICAgZm91bmQyID0gVHJ1ZQorICAgICAgICAgICAgICAgIGVsaWYgIn0iIGluIGxpbmU6CisgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgZm91bmQyID0gRmFsc2UKKyAgICAgICAgICAgICAgICBpZiBmb3VuZDI6CisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2Uoc2VhcmNoLCByZXBsYWNlbWVudCkKKyAgICAgICAgICAgICAgICBkYXRhLndyaXRlKGxpbmUpCisKKyAgICBmb3IgaSwgYXJjaCBpbiBlbnVtZXJhdGUoYXJjaGVzKToKKyAgICAgICAgdHVuZV9iYXNlbGliID0gYmFzZWxpYnNbaV0KKyAgICAgICAgYWJpID0gYWJpc1tpXQorCisgICAgICAgIGJpdHMgPSAzMgorICAgICAgICBpZiBhcmNoID09ICJwb3dlcnBjIjoKKyAgICAgICAgICAgIHJlcGxhY2VfbGluZXMoIiR7U30vc3JjL2FyY2gtcHBjLmMiLCAiL2xpYi9sZC5zby4xIiwgIi8iICsgdHVuZV9iYXNlbGliICsgIi9sZC5zby4xIiwgZCkKKyAgICAgICAgZWxpZiBhcmNoID09ICJwb3dlcnBjNjQiOgorICAgICAgICAgICAgcmVwbGFjZV9saW5lcygiJHtTfS9zcmMvYXJjaC1wcGM2NC5jIiwgIi9saWI2NC9sZDY0LnNvLjEiLCAiLyIgKyB0dW5lX2Jhc2VsaWIgKyAiL2xkNjQuc28uMSIsIGQpCisgICAgICAgICAgICBiaXRzID0gNjQKKyAgICAgICAgZWxpZiBhcmNoID09ICJ4ODZfNjQiOgorICAgICAgICAgICAgaWYgYWJpID09ICJ4MzIiOgorICAgICAgICAgICAgICAgIHJlcGxhY2VfbGluZXMoIiR7U30vc3JjL2FyY2gteDg2XzY0LmMiLCAiL2xpYngzMi9sZC1saW51eC14MzIuc28uMiIsICIvIiArIHR1bmVfYmFzZWxpYiArICIvbGQtbGludXgteDMyLnNvLjIiLCBkKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXBsYWNlX2xpbmVzKCIke1N9L3NyYy9hcmNoLXg4Nl82NC5jIiwgIi9saWI2NC9sZC1saW51eC14ODYtNjQuc28uMiIsICIvIiArIHR1bmVfYmFzZWxpYiArICIvbGQtbGludXgteDg2LTY0LnNvLjIiLCBkKQorICAgICAgICAgICAgYml0cyA9IDY0CisgICAgICAgIGVsaWYgYXJjaCA9PSAiYXJtIjoKKyAgICAgICAgICAgIHJlcGxhY2VfbGluZXMoIiR7U30vc3JjL2FyY2gtYXJtLmMiLCAiL2xpYi9sZC1saW51eC5zby4zIiwgIi8iICsgdHVuZV9iYXNlbGliICsgIi9sZC1saW51eC5zby4zIiwgZCkKKyAgICAgICAgICAgIHJlcGxhY2VfbGluZXMoIiR7U30vc3JjL2FyY2gtYXJtLmMiLCAiL2xpYi9sZC1saW51eC1hcm1oZi5zby4zIiwgIi8iICsgdHVuZV9iYXNlbGliICsgIi9sZC1saW51eC1hcm1oZi5zby4zIiwgZCkKKyAgICAgICAgZWxpZiBhcmNoID09ICJtaXBzIiBvciBhcmNoID09ICJtaXBzZWwiOgorICAgICAgICAgICAgcmVwbGFjZV9saW5lcygiJHtTfS9zcmMvYXJjaC1taXBzLmMiLCAiL2xpYi9sZC5zby4xIiwgIi8iICsgdHVuZV9iYXNlbGliICsgIi9sZC5zby4xIiwgZCwgZmlyc3Rvbmx5PVRydWUpCisgICAgICAgICAgICByZXBsYWNlX2xpbmVzKCIke1N9L3NyYy9hcmNoLW1pcHMuYyIsICIvbGliMzIvbGQuc28uMSIsICIvIiArIHR1bmVfYmFzZWxpYiArICIvbGQuc28uMSIsIGQpCisgICAgICAgIGVsaWYgYXJjaCA9PSAibWlwczY0IiBvciBhcmNoID09ICJtaXBzNjRlbCI6CisgICAgICAgICAgICByZXBsYWNlX2xpbmVzKCIke1N9L3NyYy9hcmNoLW1pcHMuYyIsICIvbGliL2xkLnNvLjEiLCAiLyIgKyB0dW5lX2Jhc2VsaWIgKyAiL2xkLnNvLjEiLCBkLCBzZWNvbmRvbmx5PVRydWUpCisgICAgICAgICAgICByZXBsYWNlX2xpbmVzKCIke1N9L3NyYy9hcmNoLW1pcHMuYyIsICIvbGliNjQvbGQuc28uMSIsICIvIiArIHR1bmVfYmFzZWxpYiArICIvbGQuc28uMSIsIGQpCisgICAgICAgICAgICBiaXRzID0gNjQKKyAgICAgICAgZWxpZiBhcmNoLmVuZHN3aXRoKCI4NiIpOgorICAgICAgICAgICAgcmVwbGFjZV9saW5lcygiJHtTfS9zcmMvYXJjaC1pMzg2LmMiLCAiL2xpYi9sZC1saW51eC5zby4yIiwgIi8iICsgdHVuZV9iYXNlbGliICsgIi9sZC1saW51eC5zby4yIiwgZCkKKyAgICAgICAgaWYgYml0cyA9PSAzMiBhbmQgdHVuZV9iYXNlbGliICE9ICJsaWIiOgorICAgICAgICAgICAgcmVwbGFjZV9saW5lc19ydGxkKCIke1N9L3NyYy9ydGxkL3J0bGQuYyIsICJsaWIiLCB0dW5lX2Jhc2VsaWIsICJlbHNlIiwgZCkKKyAgICAgICAgaWYgYml0cyA9PSA2NCBhbmQgdHVuZV9iYXNlbGliICE9ICJsaWI2NCI6CisgICAgICAgICAgICByZXBsYWNlX2xpbmVzX3J0bGQoIiR7U30vc3JjL3J0bGQvcnRsZC5jIiwgImxpYjY0IiwgdHVuZV9iYXNlbGliLCAidXNlXzY0Yml0IiwgZCkKK30KKworcHl0aG9uICgpIHsKKyAgICBvdmVycmlkZXMgPSBkLmdldFZhcigiT1ZFUlJJREVTIiwgVHJ1ZSkuc3BsaXQoIjoiKQorICAgIGlmICJjbGFzcy10YXJnZXQiIGluIG92ZXJyaWRlczoKKyAgICAgICAgYmIuYnVpbGQuYWRkdGFzaygnZG9fbGlua2VycGF0aHMnLCAnZG9fY29uZmlndXJlJywgJ2RvX3BhdGNoJywgZCkKK30KKwogZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewogICAgICAgICAjIERpc2FibGUgZG9jdW1lbnRhdGlvbiEKICAgICAgICAgZWNobyAiYWxsOiIgPiAke1N9L2RvYy9NYWtlZmlsZS5hbQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvMDAwMS1Eb24tdC1zZW5kLVNJR1VTUjEtdG8taW5pdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzLzAwMDEtRG9uLXQtc2VuZC1TSUdVU1IxLXRvLWluaXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmM2OTRjZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzLzAwMDEtRG9uLXQtc2VuZC1TSUdVU1IxLXRvLWluaXQucGF0Y2gKQEAgLTAsMCArMSw0OCBAQAorRnJvbSBiZWZjNmRiZDY0NjlkNDI4YzllMDgzMGRiZTUxYmRmN2FjMzlkOWFlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU2VlYnMgPHNlZWJzQHNlZWJzLm5ldD4KK0RhdGU6IFRodSwgMjIgU2VwIDIwMTYgMTQ6MzU6MDQgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gRG9uJ3Qgc2VuZCBTSUdVU1IxIHRvIGluaXQuCisKK0lmIHRoZSBwYXJlbnQgZXhpdHMgZHVlIHRvIGNoaWxkIHByb2Nlc3MgYmVpbmcgc2xvdywgZ2V0cHBpZCgpIHdpbGwgcmV0dXJuCisxLCBhbmQgd2UnbGwgc2VuZCBTSUdVU1IxIHRvIGluaXQsIHdoaWNoIGNhbiBicmVhayB0aGluZ3MgbGlrZSBkdW1iaW5pdAord2hpY2ggYXJlbid0IGFkZXF1YXRlbHkgcHJvdGVjdGVkIGFnYWluc3Qgbm9uLXJvb3QgcHJvY2Vzc2VzIHNlbmRpbmcgdGhlbQorc2lnbmFscy4KKworU2lnbmVkLW9mZi1ieTogU2VlYnMgPHNlZWJzQHNlZWJzLm5ldD4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCAoY29tbWl0IGJlZmM2ZGJkNjQ2OWQ0MjhjOWUwODMwZGJlNTFiZGY3YWMzOWQ5YWUpCisKK1tZT0NUTyAjMTAzMjRdCisKK1RoaXMgcmVzb2x2ZXMgYW4gaXNzdWUgd2hlcmUgYSBkb2NrZXIgY29udGFpbmVyIHJ1bm5pbmcgYnVpbGRzIHdvdWxkIGRpZQorZHVlIHRvIGl0J3MgJ21pbmkgaW5pdCcgYmVpbmcgc2lnbmFsZWQgYnkgcHNldWRvLgorCitTaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+CistLS0KKyBwc2V1ZG9fc2VydmVyLmMgfCAxMSArKysrKysrKy0tLQorCitkaWZmIC0tZ2l0IGEvcHNldWRvX3NlcnZlci5jIGIvcHNldWRvX3NlcnZlci5jCitpbmRleCA2NTEwMmRkLi44NzMxZDIwIDEwMDY0NAorLS0tIGEvcHNldWRvX3NlcnZlci5jCisrKysgYi9wc2V1ZG9fc2VydmVyLmMKK0BAIC0zNTgsOSArMzU4LDE0IEBAIHBzZXVkb19zZXJ2ZXJfc3RhcnQoaW50IGRhZW1vbml6ZSkgeworIAlzaWduYWwoU0lHVEVSTSwgcXVpdF9ub3cpOworIAkvKiB0ZWxsIHBhcmVudCBwcm9jZXNzIHRvIHN0b3Agd2FpdGluZyAqLworIAlpZiAoZGFlbW9uaXplKSB7CistCQlwc2V1ZG9fZGlhZygiU2V0dXAgY29tcGxldGUsIHNlbmRpbmcgU0lHVVNSMSB0byBwaWQgJWQuXG4iLAorLQkJCWdldHBwaWQoKSk7CistCQlraWxsKGdldHBwaWQoKSwgU0lHVVNSMSk7CisrCQlwaWRfdCBwcGlkID0gZ2V0cHBpZCgpOworKwkJaWYgKHBwaWQgPT0gMSkgeworKwkJCXBzZXVkb19kaWFnKCJTZXR1cCBjb21wbGV0ZSwgYnV0IHBhcmVudCBpcyBpbml0LCBub3Qgc2VuZGluZyBTSUdVU1IxLlxuIik7CisrCQl9IGVsc2UgeworKwkJCXBzZXVkb19kaWFnKCJTZXR1cCBjb21wbGV0ZSwgc2VuZGluZyBTSUdVU1IxIHRvIHBpZCAlZC5cbiIsCisrCQkJCXBwaWQpOworKwkJCWtpbGwocHBpZCwgU0lHVVNSMSk7CisrCQl9CisgCX0KKyAJcHNldWRvX3NlcnZlcl9sb29wKCk7CisgCXJldHVybiAwOworLS0gCisyLjUuNQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy8wMDAxLVF1aWV0LWRpYWdub3N0aWNzLWR1cmluZy1zdGFydHVwLWZvci1wc2V1ZG8tZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzLzAwMDEtUXVpZXQtZGlhZ25vc3RpY3MtZHVyaW5nLXN0YXJ0dXAtZm9yLXBzZXVkby1kLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0YjlmNmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy8wMDAxLVF1aWV0LWRpYWdub3N0aWNzLWR1cmluZy1zdGFydHVwLWZvci1wc2V1ZG8tZC5wYXRjaApAQCAtMCwwICsxLDU0IEBACitGcm9tIGVlYWQ4YTUwNTI0NWEyOTJjNDNmMDcwYzBlODM2Y2RmZWI3YmQ3YmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTZWVicyA8c2VlYnNAc2VlYnMubmV0PgorRGF0ZTogV2VkLCAyOCBTZXAgMjAxNiAxNzowNToxNyAtMDUwMAorU3ViamVjdDogW1BBVENIIDEvMl0gUXVpZXQgZGlhZ25vc3RpY3MgZHVyaW5nIHN0YXJ0dXAgZm9yIHBzZXVkbyAtZAorCitXaGVuIHRoZSBjbGllbnQgc3Bhd25zIGEgcHNldWRvIHNlcnZlciwgaXQgc3RhcnRzIG91dCBzZW5kaW5nIGRpYWdub3N0aWNzCit0byBzdGRlcnIuIFRoaXMgY2FuIGJlIHNwYW1teSBpbiBzb21lIGNhc2VzIHdpdGggcmFjZXMgZHVyaW5nIHN0YXJ0dXA7CitldmVyeXRoaW5nIHJlc29sdmVzLCBidXQgd2UgZ2V0IHNjYXJ5LWxvb2tpbmcgZGlhZ25vc3RpY3MuIFNvIHNob3ZlCit0aG9zZSBpbnRvIGEgbG9nIGZpbGUuCisKK1NpZ25lZC1vZmYtYnk6IFNlZWJzIDxzZWVic0BzZWVicy5uZXQ+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgQ2hhbmdlTG9nLnR4dCAgIHwgNSArKysrKworIHBzZXVkb19zZXJ2ZXIuYyB8IDQgKysrLQorIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9DaGFuZ2VMb2cudHh0IGIvQ2hhbmdlTG9nLnR4dAoraW5kZXggZDYzNTljYS4uNGNjMjRkZSAxMDA2NDQKKy0tLSBhL0NoYW5nZUxvZy50eHQKKysrKyBiL0NoYW5nZUxvZy50eHQKK0BAIC0xLDMgKzEsOCBAQAorKzIwMTYtMDktMjg6CisrCSogKHNlZWJzKSBTZW5kIGVycm9ycyB0byBsb2cgd2hlbiBkYWVtb25pemluZywgYnV0IGRvIHRoYXQgYSBsb3QKKysJICBzb29uZXIgdG8gcHJldmVudCBzdGFydHVwIG1lc3NhZ2VzIHdoaWNoIGNhbiBzaG93IHVwIHNwdXJpb3VzbHkKKysJICB3aXRoIG11bHRpcGxlIGNsaWVudHMuCisrCisgMjAxNi0wNy0yODoKKyAJKiAoc2VlYnMpIEZpeCBwZXJmb3JtYW5jZSBpc3N1ZSBvbiBkZWxldGlvbiB3aXRoIHhhdHRyIGNoYW5nZXMuCisgCitkaWZmIC0tZ2l0IGEvcHNldWRvX3NlcnZlci5jIGIvcHNldWRvX3NlcnZlci5jCitpbmRleCA4NzMxZDIwLi43YzJkYjJmIDEwMDY0NAorLS0tIGEvcHNldWRvX3NlcnZlci5jCisrKysgYi9wc2V1ZG9fc2VydmVyLmMKK0BAIC0xNjIsNiArMTYyLDkgQEAgcHNldWRvX3NlcnZlcl9zdGFydChpbnQgZGFlbW9uaXplKSB7CisgCSAqIFNJR1VTUjEsIG9yIHVudGlsIHRvbyBtdWNoIHRpbWUgaGFzIHBhc3NlZC4gKi8KKyAJaWYgKGRhZW1vbml6ZSkgeworIAkJaW50IGNoaWxkOworKworKwkJLyogbWFrZSBzdGFydHVwIG1lc3NhZ2VzIGdvIGF3YXkgd2hlbiBpbnZva2VkLWFzLWRhZW1vbiAqLworKwkJcHNldWRvX2RlYnVnX2xvZ2ZpbGUoUFNFVURPX0xPR0ZJTEUsIDIpOworIAkJY2hpbGQgPSBmb3JrKCk7CisgCQlpZiAoY2hpbGQgPT0gLTEpIHsKKyAJCQlwc2V1ZG9fZGlhZygiQ291bGRuJ3QgZm9yayBjaGlsZCBwcm9jZXNzOiAlc1xuIiwKK0BAIC0yMzEsNyArMjM0LDYgQEAgcHNldWRvX3NlcnZlcl9zdGFydChpbnQgZGFlbW9uaXplKSB7CisgCQkJc2V0c2lkKCk7CisgCQkJZmNsb3NlKHN0ZGluKTsKKyAJCQlmY2xvc2Uoc3Rkb3V0KTsKKy0JCQlwc2V1ZG9fZGVidWdfbG9nZmlsZShQU0VVRE9fTE9HRklMRSwgMik7CisgCQkJLyogYW5kIHRoZW4ganVzdCBleGVjdXRlIHRoZSBzZXJ2ZXIgY29kZSBub3JtYWxseS4gICovCisgCQkJLyogQW55IGxvZ2dpbmcgd2lsbCBwcmVzdW1hYmx5IGdvIHRvIGxvZ2ZpbGUsIGJ1dAorIAkJCSAqIGV4aXQgc3RhdHVzIHdpbGwgbWFrZSBpdCBiYWNrIHRvIHRoZSBwYXJlbnQgZm9yCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy8wMDAyLVVzZS1jb3JyZWN0LWZpbGUtZGVzY3JpcHRvci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzLzAwMDItVXNlLWNvcnJlY3QtZmlsZS1kZXNjcmlwdG9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkNmZkODcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy8wMDAyLVVzZS1jb3JyZWN0LWZpbGUtZGVzY3JpcHRvci5wYXRjaApAQCAtMCwwICsxLDUzIEBACitGcm9tIDdhMDYzMmNhZDg1MTgyNmQ4MDRkYjA1NDBkOWE1OTc3M2U2YmYyOWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTZWVicyA8c2VlYnNAc2VlYnMubmV0PgorRGF0ZTogV2VkLCAyOCBTZXAgMjAxNiAyMjoxMjoyOSAtMDUwMAorU3ViamVjdDogW1BBVENIIDIvMl0gVXNlIGNvcnJlY3QgZmlsZSBkZXNjcmlwdG9yCisKK1NvIGl0IHR1cm5zIG91dCB0aGF0IHBzZXVkb19sb2dmaWxlKCkgd2FzIHJldHVybmluZyAwIG9yIC0xLCBhbmQKK3BzZXVkb19kZWJ1Z19sb2dmaWxlKCkgd2FzIGV4cGVjdGluZyBpdCB0byBiZSB0aGUgY29ycmVjdCBmaWxlIGRlc2NyaXB0b3IKK3RvIHVzZS4gQW5kIGl0J3MgYmFzaWNhbGx5IGEgbXlzdGVyeSB0aGF0IGFueSBvZiB0aGF0IGV2ZXIgd29ya2VkLgorCitTaWduZWQtb2ZmLWJ5OiBTZWVicyA8c2VlYnNAc2VlYnMubmV0PgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIENoYW5nZUxvZy50eHQgfCAzICsrKworIHBzZXVkb191dGlsLmMgfCAzICsrLQorIDIgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9DaGFuZ2VMb2cudHh0IGIvQ2hhbmdlTG9nLnR4dAoraW5kZXggNGNjMjRkZS4uNDlhNmMzNiAxMDA2NDQKKy0tLSBhL0NoYW5nZUxvZy50eHQKKysrKyBiL0NoYW5nZUxvZy50eHQKK0BAIC0yLDYgKzIsOSBAQAorIAkqIChzZWVicykgU2VuZCBlcnJvcnMgdG8gbG9nIHdoZW4gZGFlbW9uaXppbmcsIGJ1dCBkbyB0aGF0IGEgbG90CisgCSAgc29vbmVyIHRvIHByZXZlbnQgc3RhcnR1cCBtZXNzYWdlcyB3aGljaCBjYW4gc2hvdyB1cCBzcHVyaW91c2x5CisgCSAgd2l0aCBtdWx0aXBsZSBjbGllbnRzLgorKwkqIChzZWVicykgcmV0dXJuIGZpbGUgZGVzY3JpcHRvciBmcm9tIHBzZXVkb19sb2dmaWxlLCBzbyB3ZSBzZXQKKysJICBwc2V1ZG9fdXRpbF9kZWJ1Z19mZCB0byB0aGUgcmlnaHQgdmFsdWUgaW5zdGVhZCBvZiB0byBzdGRpbi4KKysJICBOaWNlIGJ1Zy4KKyAKKyAyMDE2LTA3LTI4OgorIAkqIChzZWVicykgRml4IHBlcmZvcm1hbmNlIGlzc3VlIG9uIGRlbGV0aW9uIHdpdGggeGF0dHIgY2hhbmdlcy4KK2RpZmYgLS1naXQgYS9wc2V1ZG9fdXRpbC5jIGIvcHNldWRvX3V0aWwuYworaW5kZXggMGMxNTZjZi4uYTYwYzc0YiAxMDA2NDQKKy0tLSBhL3BzZXVkb191dGlsLmMKKysrKyBiL3BzZXVkb191dGlsLmMKK0BAIC0xNTY5LDcgKzE1NjksNyBAQCBwc2V1ZG9fbG9nZmlsZShjaGFyICpmaWxlbmFtZSwgY2hhciAqZGVmbmFtZSwgaW50IHByZWZlcl9mZCkgeworIAlpZiAoZmQgPT0gLTEpCisgCQlyZXR1cm4gLTE7CisgCWVsc2UKKy0JCXJldHVybiAwOworKwkJcmV0dXJuIGZkOworIH0KKyAKKyBpbnQKK0BAIC0xNTc5LDYgKzE1NzksNyBAQCBwc2V1ZG9fZGVidWdfbG9nZmlsZShjaGFyICpkZWZuYW1lLCBpbnQgcHJlZmVyX2ZkKSB7CisgCisgCWZkID0gcHNldWRvX2xvZ2ZpbGUoZmlsZW5hbWUsIGRlZm5hbWUsIHByZWZlcl9mZCk7CisgCWlmIChmZCA+IC0xKSB7CisrCQlwc2V1ZG9fZGlhZygiZGVidWdfbG9nZmlsZTogZmQgJWRcbiIsIGZkKTsKKyAJCXBzZXVkb191dGlsX2RlYnVnX2ZkID0gZmQ7CisgCQlyZXR1cm4gMDsKKyAJfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvMDAwMy1GaXgtcmVuYW1lYXQtcGFyYWxsZWwtdG8tcHJldmlvdXMtZml4LXRvLXJlbmFtZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzLzAwMDMtRml4LXJlbmFtZWF0LXBhcmFsbGVsLXRvLXByZXZpb3VzLWZpeC10by1yZW5hbWUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzM5YzAzZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzLzAwMDMtRml4LXJlbmFtZWF0LXBhcmFsbGVsLXRvLXByZXZpb3VzLWZpeC10by1yZW5hbWUucGF0Y2gKQEAgLTAsMCArMSw2NCBAQAorRnJvbSBkOWFiM2EwYWNjOTQxNTEwNDg0OThiMWVhNGQ2OWU3NzA3ZGYxNTI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU2VlYnMgPHNlZWJzQHNlZWJzLm5ldD4KK0RhdGU6IEZyaSwgMzAgU2VwIDIwMTYgMTA6NTY6MzUgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzNdIEZpeCByZW5hbWVhdCAocGFyYWxsZWwgdG8gcHJldmlvdXMgZml4IHRvIHJlbmFtZSkKKworVGhlcmUgd2FzIGEgYnVnIGluIHJlbmFtZSgpLCB3aGljaCB3YXMgZHVwbGljYXRlZCB3aGVuIHJlbmFtZWF0KCkgd2FzCitpbXBsZW1lbnRlZCwgYW5kIHdoaWNoIGdvdCBmaXhlZCB0d28geWVhcnMgYWdvIGZvciByZW5hbWUoKSwgYnV0IG5vCitvbmUgZXZlciB1c2VzIHJlbmFtZWF0KCkgc28gaXQgZGlkbid0IGdldCBmaXhlZCB0aGVyZS4gVGhhbmtzCit0byBBbnRvbiBHZXJhc2ltb3YgPGFudG9uQGFkdmFuY2VkdGVsZW1hdGljLmNvbT4gZm9yIHRoZSBidWcgcmVwb3J0CithbmQgcGF0Y2guCisKK1NpZ25lZC1vZmYtYnk6IFNlZWJzIDxzZWVic0BzZWVicy5uZXQ+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IEpvc2h1YSBMb2NrIDxqb3NodWEuZy5sb2NrQGludGVsLmNvbT4KKworLS0tCisgQ2hhbmdlTG9nLnR4dCAgICAgICAgICAgICAgfCA0ICsrKysKKyBwb3J0cy91bml4L2d1dHMvcmVuYW1lYXQuYyB8IDcgKysrKysrLQorIDIgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nLnR4dCBiL0NoYW5nZUxvZy50eHQKK2luZGV4IDY1Yjk3NTkuLmNhMDRjYzAgMTAwNjQ0CistLS0gYS9DaGFuZ2VMb2cudHh0CisrKysgYi9DaGFuZ2VMb2cudHh0CitAQCAtMSwzICsxLDcgQEAKKysyMDE2LTA5LTMwOgorKwkqIChzZWVicykgRml4IHJlbmFtZSBhdCwgbWF0Y2hpbmcgZml4IGZyb20gZWUwMGY2M2QgZm9yIHJlbmFtZS4gQnVnCisrCSAgYW5kIGZpeCBwcm92aWRlZCBieSBBbnRvbiBHZXJhc2ltb3YgPGFudG9uQGFkdmFuY2VkdGVsZW1hdGljLmNvbT4uCisrCisgMjAxNi0wOS0yODoKKyAJKiAoc2VlYnMpIFNlbmQgZXJyb3JzIHRvIGxvZyB3aGVuIGRhZW1vbml6aW5nLCBidXQgZG8gdGhhdCBhIGxvdAorIAkgIHNvb25lciB0byBwcmV2ZW50IHN0YXJ0dXAgbWVzc2FnZXMgd2hpY2ggY2FuIHNob3cgdXAgc3B1cmlvdXNseQorZGlmZiAtLWdpdCBhL3BvcnRzL3VuaXgvZ3V0cy9yZW5hbWVhdC5jIGIvcG9ydHMvdW5peC9ndXRzL3JlbmFtZWF0LmMKK2luZGV4IGFkZTA1MDkuLmQ1ZTM2ZmEgMTAwNjQ0CistLS0gYS9wb3J0cy91bml4L2d1dHMvcmVuYW1lYXQuYworKysrIGIvcG9ydHMvdW5peC9ndXRzL3JlbmFtZWF0LmMKK0BAIC0xMSw2ICsxMSw3IEBACisgCWludCBvbGRyYywgbmV3cmM7CisgCWludCBzYXZlX2Vycm5vOworIAlpbnQgb2xkX2RiX2VudHJ5ID0gMDsKKysJaW50IG1heV91bmxpbmtlZCA9IDA7CisgCisgCXBzZXVkb19kZWJ1ZyhQREJHRl9GSUxFLCAicmVuYW1lYXQ6ICVkLCVzLT4lZCwlc1xuIiwKKyAJCW9sZGRpcmZkLCBvbGRwYXRoID8gb2xkcGF0aCA6ICI8bmlsPiIsCitAQCAtNDQsMTAgKzQ1LDE0IEBACisgCS8qIGFzIHdpdGggdW5saW5rLCB3ZSBoYXZlIHRvIG1hcmsgdGhhdCB0aGUgZmlsZSBtYXkgZ2V0IGRlbGV0ZWQgKi8KKyAJbXNnID0gcHNldWRvX2NsaWVudF9vcChPUF9NQVlfVU5MSU5LLCAwLCAtMSwgbmV3ZGlyZmQsIG5ld3BhdGgsIG5ld3JjID8gTlVMTCA6ICZuZXdidWYpOworIAlpZiAobXNnICYmIG1zZy0+cmVzdWx0ID09IFJFU1VMVF9TVUNDRUVEKQorKwkJbWF5X3VubGlua2VkID0gMTsKKysJbXNnID0gcHNldWRvX2NsaWVudF9vcChPUF9TVEFULCAwLCAtMSwgb2xkZGlyZmQsIG9sZHBhdGgsIG9sZHJjID8gTlVMTCA6ICZvbGRidWYpOworKwlpZiAobXNnICYmIG1zZy0+cmVzdWx0ID09IFJFU1VMVF9TVUNDRUVEKQorIAkJb2xkX2RiX2VudHJ5ID0gMTsKKysKKyAJcmMgPSByZWFsX3JlbmFtZWF0KG9sZGRpcmZkLCBvbGRwYXRoLCBuZXdkaXJmZCwgbmV3cGF0aCk7CisgCXNhdmVfZXJybm8gPSBlcnJubzsKKy0JaWYgKG9sZF9kYl9lbnRyeSkgeworKwlpZiAobWF5X3VubGlua2VkKSB7CisgCQlpZiAocmMgPT0gLTEpIHsKKyAJCQkvKiBzaW5jZSB3ZSBmYWlsZWQsIHRoYXQgd2Fzbid0IHJlYWxseSB1bmxpbmtlZCAtLSBwdXQKKyAJCQkgKiBpdCBiYWNrLgorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy9GaXgteGF0dHItcGVyZm9ybWFuY2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy9GaXgteGF0dHItcGVyZm9ybWFuY2UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGUwNzJlNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzL0ZpeC14YXR0ci1wZXJmb3JtYW5jZS5wYXRjaApAQCAtMCwwICsxLDExNyBAQAorRnJvbSAwZDkwNzFmMzA5MGJiZDc4ODA1NThmM2I0ODhiMjM2YWMxOWI0NGZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogc2VlYnMgPHNlZWJzQHNlZWJzLm5ldD4KK0RhdGU6IFRodSwgMjggSnVsIDIwMTYgMTQ6MDI6MTIgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIEZpeCB4YXR0ciBwZXJmb3JtYW5jZQorCitXaGVuIGRlbGV0aW5nIGZpbGVzLCB3ZSAqZG8qIGtub3cgdGhlIGlub2RlIGFuZCBhdHRyaWJ1dGUsIG1vc3Qgb2YgdGhlCit0aW1lLCBzbyB3ZSBwYXNzIHRob3NlIGluIHdoZW5ldmVyIHBvc3NpYmxlLiBUaGUgZnVsbCBwdXJnZSBvZiB1bm1hdGNoZWQKK3hhdHRycyBzaG91bGQgbm90IGhhcHBlbiB3aGVuIHRoZSBjb3JyZWN0IGRldi9pbm8gYXJlIGJlbGlldmVkIHRvIGJlIGtub3duLgorCitTaWduZWQtb2ZmLWJ5OiBTZWVicyA8c2VlYnNAc2VlYnMubmV0PgorCitbWU9DVE8gIzk5MjldCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0ICgwZDkwNzFmMzA5MGJiZDc4ODA1NThmM2I0ODhiMjM2YWMxOWI0NGZjKQorU2lnbmVkLW9mZi1ieTogSm9zaHVhIExvY2sgPGpvc2h1YS5nLmxvY2tAaW50ZWwuY29tPgorLS0tCisgQ2hhbmdlTG9nLnR4dCB8ICAzICsrKworIHBzZXVkby5jICAgICAgfCAxMSArKysrKysrKy0tLQorIHBzZXVkb19kYi5jICAgfCAxNSArKysrKysrKystLS0tLS0KKyBwc2V1ZG9fZGIuaCAgIHwgIDIgKy0KKyA0IGZpbGVzIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nLnR4dCBiL0NoYW5nZUxvZy50eHQKK2luZGV4IDEzMWYxNjMuLmQ2MzU5Y2EgMTAwNjQ0CistLS0gYS9DaGFuZ2VMb2cudHh0CisrKysgYi9DaGFuZ2VMb2cudHh0CitAQCAtMSwzICsxLDYgQEAKKysyMDE2LTA3LTI4OgorKwkqIChzZWVicykgRml4IHBlcmZvcm1hbmNlIGlzc3VlIG9uIGRlbGV0aW9uIHdpdGggeGF0dHIgY2hhbmdlcy4KKysKKyAyMDE2LTA3LTA4OgorIAkqIChSUCkgcmVsZWFzZSAxLjguMQorIAkqIChqb3NodWFnbCkgRml4IGxvZyB0YWJsZSBjcmVhdGlvbiBpc3N1ZQorZGlmZiAtLWdpdCBhL3BzZXVkby5jIGIvcHNldWRvLmMKK2luZGV4IDUyZjY0OWYuLmRiMWM0MDAgMTAwNjQ0CistLS0gYS9wc2V1ZG8uYworKysrIGIvcHNldWRvLmMKK0BAIC02MDAsNyArNjAwLDEyIEBAIHBzZXVkb19vcChwc2V1ZG9fbXNnX3QgKm1zZywgY29uc3QgY2hhciAqcHJvZ3JhbSwgY29uc3QgY2hhciAqdGFnLCBjaGFyICoqcmVzcG9uCisgCQkJCWlmIChieV9wYXRoLmRlbGV0aW5nICE9IDApIHsKKyAJCQkJCXBzZXVkb19kZWJ1ZyhQREJHRl9GSUxFLCAiaW5vZGUgbWlzbWF0Y2ggZm9yICclcycgLS0gb2xkIG9uZSB3YXMgbWFya2VkIGZvciBkZWxldGlvbiwgZGVsZXRpbmcuXG4iLAorIAkJCQkJCW1zZy0+cGF0aCk7CistCQkJCQlwZGJfZGlkX3VubGlua19maWxlKG1zZy0+cGF0aCwgYnlfcGF0aC5kZWxldGluZyk7CisrCQkJCQkvKiBpbiB0aGlzIGNhc2UsIHdlIGRvbid0IHRydXN0IHRoZQorKwkJCQkJICogZXhpc3RpbmcgZW50cmllcywgc28gd2Ugd2lsbCBkbyB0aGUKKysJCQkJCSAqIG1vcmUgZXhwZW5zaXZlIHN3ZWVwIGZvciBzdHJheQorKwkJCQkJICogeGF0dHJzLgorKwkJCQkJICovCisrCQkJCQlwZGJfZGlkX3VubGlua19maWxlKG1zZy0+cGF0aCwgTlVMTCwgYnlfcGF0aC5kZWxldGluZyk7CisgCQkJCX0gZWxzZSB7CisgCQkJCQlwc2V1ZG9fZGlhZygiaW5vZGUgbWlzbWF0Y2g6ICclcycgaW5vICVsbHUgaW4gZGIsICVsbHUgaW4gcmVxdWVzdC5cbiIsCisgCQkJCQkJbXNnLT5wYXRoLAorQEAgLTY5OCw3ICs3MDMsNyBAQCBwc2V1ZG9fb3AocHNldWRvX21zZ190ICptc2csIGNvbnN0IGNoYXIgKnByb2dyYW0sIGNvbnN0IGNoYXIgKnRhZywgY2hhciAqKnJlc3BvbgorIAkJCQlpZiAoYnlfaW5vLmRlbGV0aW5nICE9IDApIHsKKyAJCQkJCXBzZXVkb19kZWJ1ZyhQREJHRl9GSUxFLCAiaW5vZGUgbWlzbWF0Y2ggZm9yICclcycgLS0gb2xkIG9uZSB3YXMgbWFya2VkIGZvciBkZWxldGlvbiwgZGVsZXRpbmcuXG4iLAorIAkJCQkJCW1zZy0+cGF0aCk7CistCQkJCQlwZGJfZGlkX3VubGlua19maWxlKHBhdGhfYnlfaW5vLCBieV9pbm8uZGVsZXRpbmcpOworKwkJCQkJcGRiX2RpZF91bmxpbmtfZmlsZShwYXRoX2J5X2lubywgJmJ5X2lubywgYnlfaW5vLmRlbGV0aW5nKTsKKyAJCQkJfSBlbHNlIHsKKyAJCQkJCXBzZXVkb19kaWFnKCJwYXRoIG1pc21hdGNoIFslZCBsaW5rJXNdOiBpbm8gJWxsdSBkYiAnJXMnIHJlcSAnJXMnLlxuIiwKKyAJCQkJCQltc2ctPm5saW5rLAorQEAgLTkzMCw3ICs5MzUsNyBAQCBwc2V1ZG9fb3AocHNldWRvX21zZ190ICptc2csIGNvbnN0IGNoYXIgKnByb2dyYW0sIGNvbnN0IGNoYXIgKnRhZywgY2hhciAqKnJlc3BvbgorIAkJfQorIAkJYnJlYWs7CisgCWNhc2UgT1BfRElEX1VOTElOSzoKKy0JCXBkYl9kaWRfdW5saW5rX2ZpbGUobXNnLT5wYXRoLCBtc2ctPmNsaWVudCk7CisrCQlwZGJfZGlkX3VubGlua19maWxlKG1zZy0+cGF0aCwgbXNnLCBtc2ctPmNsaWVudCk7CisgCQlicmVhazsKKyAJY2FzZSBPUF9DQU5DRUxfVU5MSU5LOgorIAkJcGRiX2NhbmNlbF91bmxpbmtfZmlsZShtc2cpOworZGlmZiAtLWdpdCBhL3BzZXVkb19kYi5jIGIvcHNldWRvX2RiLmMKK2luZGV4IDI4OWJiMjkuLmU3ZGQxOTMgMTAwNjQ0CistLS0gYS9wc2V1ZG9fZGIuYworKysrIGIvcHNldWRvX2RiLmMKK0BAIC0xODQ4LDcgKzE4NDgsNyBAQCBwZGJfZGlkX3VubGlua19maWxlcyhpbnQgZGVsZXRpbmcpIHsKKyAKKyAvKiBjb25maXJtIGRlbGV0aW9uIG9mIGEgc3BlY2lmaWMgZmlsZSBieSBhIGdpdmVuIGNsaWVudCAqLworIGludAorLXBkYl9kaWRfdW5saW5rX2ZpbGUoY2hhciAqcGF0aCwgaW50IGRlbGV0aW5nKSB7CisrcGRiX2RpZF91bmxpbmtfZmlsZShjaGFyICpwYXRoLCBwc2V1ZG9fbXNnX3QgKm1zZywgaW50IGRlbGV0aW5nKSB7CisgCXN0YXRpYyBzcWxpdGUzX3N0bXQgKmRlbGV0ZV9leGFjdDsKKyAJaW50IHJjLCBleGFjdDsKKyAJY2hhciAqc3FsX2RlbGV0ZV9leGFjdCA9ICJERUxFVEUgRlJPTSBmaWxlcyBXSEVSRSBwYXRoID0gPyBBTkQgZGVsZXRpbmcgPSA/OyI7CitAQCAtMTg3OCwxMSArMTg3OCwxNCBAQCBwZGJfZGlkX3VubGlua19maWxlKGNoYXIgKnBhdGgsIGludCBkZWxldGluZykgeworIAlleGFjdCA9IHNxbGl0ZTNfY2hhbmdlcyhmaWxlX2RiKTsKKyAJcHNldWRvX2RlYnVnKFBEQkdGX0RCLCAiKGV4YWN0ICVkKVxuIiwgZXhhY3QpOworIAlzcWxpdGUzX3Jlc2V0KGRlbGV0ZV9leGFjdCk7CistCXNxbGl0ZTNfY2xlYXJfYmluZGluZ3MoZGVsZXRlX2V4YWN0KTsKKy0JLyogd2UgaGF2ZSB0byBjbGVhbiBldmVyeXRoaW5nIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyBmb3Igc3VyZSB0aGUKKy0JICogZGV2aWNlL2lub2RlLi4uCistCSAqLworLQlwZGJfY2xlYXJfdW51c2VkX3hhdHRycygpOworKwlpZiAobXNnKSB7CisrCQlwZGJfY2xlYXJfeGF0dHJzKG1zZyk7CisrCX0gZWxzZSB7CisrCQkvKiB3ZSBoYXZlIHRvIGNsZWFuIGV2ZXJ5dGhpbmcgYmVjYXVzZSB3ZSBkb24ndCBrbm93IGZvciBzdXJlIHRoZQorKwkJICogZGV2aWNlL2lub2RlLi4uCisrCQkgKi8KKysJCXBkYl9jbGVhcl91bnVzZWRfeGF0dHJzKCk7CisrCX0KKyAJcmV0dXJuIHJjICE9IFNRTElURV9ET05FOworIH0KKyAKK2RpZmYgLS1naXQgYS9wc2V1ZG9fZGIuaCBiL3BzZXVkb19kYi5oCitpbmRleCBhNTRmM2MxLi4xYjI1OTljIDEwMDY0NAorLS0tIGEvcHNldWRvX2RiLmgKKysrKyBiL3BzZXVkb19kYi5oCitAQCAtMzksNyArMzksNyBAQCB0eXBlZGVmIHN0cnVjdCB7CisgCisgZXh0ZXJuIGludCBwZGJfbWF5YmVfYmFja3VwKHZvaWQpOworIGV4dGVybiBpbnQgcGRiX2NhbmNlbF91bmxpbmtfZmlsZShwc2V1ZG9fbXNnX3QgKm1zZyk7CistZXh0ZXJuIGludCBwZGJfZGlkX3VubGlua19maWxlKGNoYXIgKnBhdGgsIGludCBkZWxldGluZyk7CisrZXh0ZXJuIGludCBwZGJfZGlkX3VubGlua19maWxlKGNoYXIgKnBhdGgsIHBzZXVkb19tc2dfdCAqbXNnLCBpbnQgZGVsZXRpbmcpOworIGV4dGVybiBpbnQgcGRiX2RpZF91bmxpbmtfZmlsZXMoaW50IGRlbGV0aW5nKTsKKyBleHRlcm4gaW50IHBkYl9saW5rX2ZpbGUocHNldWRvX21zZ190ICptc2cpOworIGV4dGVybiBpbnQgcGRiX21heV91bmxpbmtfZmlsZShwc2V1ZG9fbXNnX3QgKm1zZywgaW50IGRlbGV0aW5nKTsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvZmFsbGJhY2stZ3JvdXAgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy9mYWxsYmFjay1ncm91cAppbmRleCA4MWJmNzMyLi5iYjNkYmNhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy9mYWxsYmFjay1ncm91cAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy9mYWxsYmFjay1ncm91cApAQCAtMSwyICsxLDMgQEAKIHJvb3Q6KjowOgogbWFpbDoqOjg6Citub2JvZHk6Kjo5OToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzL2ZhbGxiYWNrLXBhc3N3ZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzL2ZhbGxiYWNrLXBhc3N3ZAppbmRleCBjMTQ1OGRjLi4wODg5YzU3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy9mYWxsYmFjay1wYXNzd2QKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvZmFsbGJhY2stcGFzc3dkCkBAIC0xICsxLDIgQEAKIHJvb3Q6OjA6MDpyb290Oi9ob21lL3Jvb3Q6L2Jpbi9zaAorbm9ib2R5Oio6NjU1MzQ6NjU1MzQ6bm9ib2R5Oi9ub25leGlzdGVudDovYmluL3NoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy9oYW5kbGUtcmVtb3ZlLXhhdHRyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvaGFuZGxlLXJlbW92ZS14YXR0ci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGI3ZjMwYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy9oYW5kbGUtcmVtb3ZlLXhhdHRyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotRnJvbSBhMjRjZjEwMjk2N2E0OTY2YmZhYmUzNmMzNTQyZmI2NWYzNWJmNTM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGV0ZXIgU2VlYmFjaCA8cGV0ZXIuc2VlYmFjaEB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAyMyBNYXIgMjAxNiAxMTo1NToyNSAtMDUwMAotU3ViamVjdDogYWN0dWFsbHkgaGFuZGxlIHJlbW92ZV94YXR0ciBjb3JyZWN0bHkKLQotVGhlIHBhdGggaXMgcmVxdWlyZWQgYnV0IHdhc24ndCBiZWluZyBleHRyYWN0ZWQgZnJvbSB0aGUgY2xpZW50J3MgbWVzc2FnZSwKLXJlc3VsdGluZyBpbiB4YXR0ciByZW1vdmFsIG5ldmVyIHdvcmtpbmcuIFRoaXMgZG9lcyBub3QgZnVsbHkgYWRkcmVzcyBzb21lCi1kZWVwZXIgcHJvYmxlbXMgd2l0aCB0aGUgeGF0dHIgaW1wbGVtZW50YXRpb24sIGJ1dCBhdCBsZWFzdCB0aGUgY29tbW9uCi1yZW1vdmFsIGNhc2Ugd29ya3MuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotSW5kZXg6IHBzZXVkby0xLjcuNS9DaGFuZ2VMb2cudHh0Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcHNldWRvLTEuNy41Lm9yaWcvQ2hhbmdlTG9nLnR4dAotKysrIHBzZXVkby0xLjcuNS9DaGFuZ2VMb2cudHh0Ci1AQCAtMSwzICsxLDcgQEAKLSsyMDE2LTAzLTIyOgotKyAgICAgICAqIChzZWVicykgZXh0cmFjdCBwYXRoIGZyb20gbWVzc2FnZSBmb3IgcmVtb3ZlX3hhdHRyIHNvIGl0Ci0rICAgICAgICAgYWN0dWFsbHkgd29ya3MuCi0rCi0gMjAxNi0wMi0wOToKLSAgICAgICAgICogKHNlZWJzKSAxLjcuNSByZWxlYXNlCi0gCi1JbmRleDogcHNldWRvLTEuNy41L3BzZXVkby5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcHNldWRvLTEuNy41Lm9yaWcvcHNldWRvLmMKLSsrKyBwc2V1ZG8tMS43LjUvcHNldWRvLmMKLUBAIC01NDMsNiArNTQzLDcgQEAgcHNldWRvX29wKHBzZXVkb19tc2dfdCAqbXNnLCBjb25zdCBjaGFyCi0gCQljYXNlIE9QX0dFVF9YQVRUUjoKLSAJCWNhc2UgT1BfTElTVF9YQVRUUjoKLSAJCWNhc2UgT1BfUkVQTEFDRV9YQVRUUjoKLSsJCWNhc2UgT1BfUkVNT1ZFX1hBVFRSOgotIAkJY2FzZSBPUF9TRVRfWEFUVFI6Ci0gCQkJLyogSW4gYSByZW5hbWUgdGhlcmUgYXJlIHR3byBwYXRocywgbnVsbCBzZXBhcmF0ZWQgaW4gbXNnLT5wYXRoICovCi0gCQkJaW5pdGlhbF9sZW4gPSBzdHJsZW4obXNnLT5wYXRoKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzL21vcmVyZXRyaWVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvbW9yZXJldHJpZXMucGF0Y2gKaW5kZXggYzFlNTU1Mi4uYWRlYTI2NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvbW9yZXJldHJpZXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvbW9yZXJldHJpZXMucGF0Y2gKQEAgLTQsMTUgKzQsMTUgQEAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogUlAgMjAxNi8yLzI4CiAKLUluZGV4OiBwc2V1ZG8tMS43LjUvcHNldWRvX2NsaWVudC5jCitJbmRleDogZ2l0L3BzZXVkb19jbGllbnQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHBzZXVkby0xLjcuNS5vcmlnL3BzZXVkb19jbGllbnQuYwotKysrIHBzZXVkby0xLjcuNS9wc2V1ZG9fY2xpZW50LmMKLUBAIC0xMjE0LDcgKzEyMTQsNyBAQCBwc2V1ZG9fY2xpZW50X3NldHVwKHZvaWQpIHsKLSAJcmV0dXJuIDE7CistLS0gZ2l0Lm9yaWcvcHNldWRvX2NsaWVudC5jCisrKysgZ2l0L3BzZXVkb19jbGllbnQuYworQEAgLTEyODIsNyArMTI4Miw3IEBAIHBzZXVkb19jbGllbnRfc2V0dXAodm9pZCkgeworIAl9CiAgfQogIAotLSNkZWZpbmUgUFNFVURPX1JFVFJJRVMgNTAKKy0jZGVmaW5lIFBTRVVET19SRVRSSUVTIDIwCiArI2RlZmluZSBQU0VVRE9fUkVUUklFUyAyNTAKICBzdGF0aWMgcHNldWRvX21zZ190ICoKICBwc2V1ZG9fY2xpZW50X3JlcXVlc3QocHNldWRvX21zZ190ICptc2csIHNpemVfdCBsZW4sIGNvbnN0IGNoYXIgKnBhdGgpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkby5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG8uaW5jCmluZGV4IDBkZTdiMzYuLjE4Y2U5ZjkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkby5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvLmluYwpAQCAtMjYsNiArMjYsOCBAQAogTk8zMkxJQlMgPz89ICIxIgogTk8zMkxJQlNfY2xhc3MtbmF0aXZlc2RrID0gIjEiCiAKK1BTRVVET19FWFRSQV9PUFRTID89ICItLWVuYWJsZS1mb3JjZS1hc3luYyAtLXdpdGhvdXQtcGFzc3dkLWZhbGxiYWNrIgorCiAjIENvbXBpbGUgZm9yIHRoZSBsb2NhbCBtYWNoaW5lIGFyY2guLi4KIGRvX2NvbXBpbGUgKCkgewogCWlmIFsgIiR7U0lURUlORk9fQklUU30iID0gIjY0IiBdOyB0aGVuCkBAIC0xMTIsMTAgKzExNCwxNSBAQAogCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgJHtNQUtFT1BUU30gJ0xJQj1saWIvcHNldWRvL2xpYiQoTUFSSzY0KScgaW5zdGFsbAogfQogCi0jIFR3byBiZWxvdyBhcmUgdGhlIHNhbWUKLSMgSWYgbmVjZXNzYXJ5IGluc3RhbGwgZm9yIHRoZSBhbHRlcm5hdGl2ZSBtYWNoaW5lIGFyY2guICBUaGlzIGlzIG9ubHkgCi0jIG5lY2Vzc2FyeSBpbiBhIG5hdGl2ZSBidWlsZC4KIGRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQorCSMgVGhlIGZhbGxiYWNrIGZpbGVzIHNob3VsZCBuZXZlciBiZSBtb2RpZmllZAorCWluc3RhbGwgLW0gNDQ0ICR7V09SS0RJUn0vZmFsbGJhY2stcGFzc3dkICR7RH0ke3N5c2NvbmZkaXJ9L3Bhc3N3ZAorCWluc3RhbGwgLW0gNDQ0ICR7V09SS0RJUn0vZmFsbGJhY2stZ3JvdXAgJHtEfSR7c3lzY29uZmRpcn0vZ3JvdXAKKworCSMgVHdvIG5hdGl2ZS9uYXRpdmVzZGsgZW50cmllcyBiZWxvdyBhcmUgdGhlIHNhbWUKKwkjIElmIG5lY2Vzc2FyeSBpbnN0YWxsIGZvciB0aGUgYWx0ZXJuYXRpdmUgbWFjaGluZSBhcmNoLiAgVGhpcyBpcyBvbmx5CisJIyBuZWNlc3NhcnkgaW4gYSBuYXRpdmUgYnVpbGQuCiAJbWF5YmVfbWFrZTMyCiAJaWYgJG1ha2UzMjsgdGhlbgogCQlta2RpciAtcCAke0R9JHtwcmVmaXh9L2xpYi9wc2V1ZG8vbGliCkBAIC0xMjksNiArMTM2LDcgQEAKIAkJbWtkaXIgLXAgJHtEfSR7cHJlZml4fS9saWIvcHNldWRvL2xpYgogCQljcCBsaWIvcHNldWRvL2xpYi9saWJwc2V1ZG8uc28gJHtEfSR7cHJlZml4fS9saWIvcHNldWRvL2xpYi8uCiAJZmkKKwljaHJwYXRoIC1kICR7RH0ke3ByZWZpeH0vbGliL3BzZXVkby9saWIqL2xpYnBzZXVkby5zbwogfQogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG9fMS42LjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG9fMS42LjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4YzIwYWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvXzEuNi43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotcmVxdWlyZSBwc2V1ZG8uaW5jCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvcHNldWRvLyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKLSAgICBmaWxlOi8vZmFsbGJhY2stcGFzc3dkIFwKLSAgICBmaWxlOi8vZmFsbGJhY2stZ3JvdXAgXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNGNkMzk1MDJmOWJkMGU3MzRkZWU4MGUwOGIyOGE1ZjEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWYyY2FjYTVmMTU3OWEzNzZhNTA5Y2Q4MWE4MTE1NmZjMjA4NjUwYWRkOWYwYWYyNzVkYTllOTExZjE4ZjI5MSIKLQotUFNFVURPX0VYVFJBX09QVFMgPz0gIi0tZW5hYmxlLWZvcmNlLWFzeW5jIC0td2l0aG91dC1wYXNzd2QtZmFsbGJhY2siCi0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQotCSMgVGhlIGZhbGxiYWNrIGZpbGVzIHNob3VsZCBuZXZlciBiZSBtb2RpZmllZAotCWluc3RhbGwgLW0gNDQ0ICR7V09SS0RJUn0vZmFsbGJhY2stcGFzc3dkICR7RH0ke3N5c2NvbmZkaXJ9L3Bhc3N3ZAotCWluc3RhbGwgLW0gNDQ0ICR7V09SS0RJUn0vZmFsbGJhY2stZ3JvdXAgJHtEfSR7c3lzY29uZmRpcn0vZ3JvdXAKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkb18xLjcuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkb18xLjcuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDkwZTY0NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG9fMS43LjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1yZXF1aXJlIHBzZXVkby5pbmMKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy9wc2V1ZG8vJHtCUE59LSR7UFZ9LnRhci5iejIgXAotICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1QcnVuZS1QSUUtZmxhZ3MucGF0Y2ggXAotICAgIGZpbGU6Ly9mYWxsYmFjay1wYXNzd2QgXAotICAgIGZpbGU6Ly9mYWxsYmFjay1ncm91cCBcCi0gICAgZmlsZTovL21vcmVyZXRyaWVzLnBhdGNoIFwKLSAgICBmaWxlOi8vaGFuZGxlLXJlbW92ZS14YXR0ci5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjMTAyMDk5MzhmMDMxMjhkMGMxOTNmMDQxZmYzNTk2ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmZDg5Y2FkZWM5ODRkM2I4MjAyYWNhNDY1ODk4YjFiYjQzNTBlMGQ2M2JhOWFhOWFjODk5ZjZmNTAyNzBlNjg4IgotCi1QU0VVRE9fRVhUUkFfT1BUUyA/PSAiLS1lbmFibGUtZm9yY2UtYXN5bmMgLS13aXRob3V0LXBhc3N3ZC1mYWxsYmFjayIKLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9Ci0JIyBUaGUgZmFsbGJhY2sgZmlsZXMgc2hvdWxkIG5ldmVyIGJlIG1vZGlmaWVkCi0JaW5zdGFsbCAtbSA0NDQgJHtXT1JLRElSfS9mYWxsYmFjay1wYXNzd2QgJHtEfSR7c3lzY29uZmRpcn0vcGFzc3dkCi0JaW5zdGFsbCAtbSA0NDQgJHtXT1JLRElSfS9mYWxsYmFjay1ncm91cCAke0R9JHtzeXNjb25mZGlyfS9ncm91cAotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvXzEuOC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvXzEuOC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiNzAwMzQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG9fMS44LjEuYmIKQEAgLTAsMCArMSwxNiBAQAorcmVxdWlyZSBwc2V1ZG8uaW5jCisKK1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL3BzZXVkby8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1QcnVuZS1QSUUtZmxhZ3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZmFsbGJhY2stcGFzc3dkIFwKKyAgICAgICAgICAgZmlsZTovL2ZhbGxiYWNrLWdyb3VwIFwKKyAgICAgICAgICAgZmlsZTovL21vcmVyZXRyaWVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0ZpeC14YXR0ci1wZXJmb3JtYW5jZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LXNlbmQtU0lHVVNSMS10by1pbml0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUXVpZXQtZGlhZ25vc3RpY3MtZHVyaW5nLXN0YXJ0dXAtZm9yLXBzZXVkby1kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItVXNlLWNvcnJlY3QtZmlsZS1kZXNjcmlwdG9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtRml4LXJlbmFtZWF0LXBhcmFsbGVsLXRvLXByZXZpb3VzLWZpeC10by1yZW5hbWUucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlZTM4ZTRmYjYyZmY4OGFkMDY3YjFhNWEzODI1YmFjNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkYWM0YWQyZDIxMjI4MDUzMTUxMTIxMzIwZjYyOWQ0MWRkNWMwYzg3Njk1YWM0ZTdhZWEyODZjNDE0MTkyYWI1IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkb19naXQuYmIKaW5kZXggYWJmZjFjZi4uODExMGIxYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG9fZ2l0LmJiCkBAIC0xLDExICsxLDE1IEBACiByZXF1aXJlIHBzZXVkby5pbmMKIAotU1JDUkVWID0gIjc4NmM2ZDM4MTM2MjJkMThlMTJkMzZjNGFhNzIyYWY2YTQxN2M4ZmEiCi1QViA9ICIxLjcuNStnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICJiZWZjNmRiZDY0NjlkNDI4YzllMDgzMGRiZTUxYmRmN2FjMzlkOWFlIgorUFYgPSAiMS44LjErZ2l0JHtTUkNQVn0iCiAKIERFRkFVTFRfUFJFRkVSRU5DRSA9ICItMSIKIAotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wc2V1ZG8iCitTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3BzZXVkbyBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1QcnVuZS1QSUUtZmxhZ3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZmFsbGJhY2stcGFzc3dkIFwKKyAgICAgICAgICAgZmlsZTovL2ZhbGxiYWNrLWdyb3VwIFwKKyAgICAgICAgICAgZmlsZTovL21vcmVyZXRyaWVzLnBhdGNoIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbnVtcHkvMDAwMS1Eb24tdC1zZWFyY2gtdXNyLWFuZC1zby1vbi1mb3ItbGlicmFyaWVzLWJ5LWRlZmF1bHQtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvMDAwMS1Eb24tdC1zZWFyY2gtdXNyLWFuZC1zby1vbi1mb3ItbGlicmFyaWVzLWJ5LWRlZmF1bHQtLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbnVtcHkvMDAwMS1Eb24tdC1zZWFyY2gtdXNyLWFuZC1zby1vbi1mb3ItbGlicmFyaWVzLWJ5LWRlZmF1bHQtLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLURvbi10LXNlYXJjaC11c3ItYW5kLXNvLW9uLWZvci1saWJyYXJpZXMtYnktZGVmYXVsdC0ucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzL2FhcmNoNjQvX251bXB5Y29uZmlnLmggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy9hYXJjaDY0L19udW1weWNvbmZpZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwOWRlYjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy9hYXJjaDY0L19udW1weWNvbmZpZy5oCkBAIC0wLDAgKzEsMzIgQEAKKyNkZWZpbmUgTlBZX0hBVkVfRU5ESUFOX0ggMQorI2RlZmluZSBOUFlfU0laRU9GX1NIT1JUIFNJWkVPRl9TSE9SVAorI2RlZmluZSBOUFlfU0laRU9GX0lOVCBTSVpFT0ZfSU5UCisjZGVmaW5lIE5QWV9TSVpFT0ZfTE9ORyBTSVpFT0ZfTE9ORworI2RlZmluZSBOUFlfU0laRU9GX0ZMT0FUIDQKKyNkZWZpbmUgTlBZX1NJWkVPRl9DT01QTEVYX0ZMT0FUIDgKKyNkZWZpbmUgTlBZX1NJWkVPRl9ET1VCTEUgOAorI2RlZmluZSBOUFlfU0laRU9GX0NPTVBMRVhfRE9VQkxFIDE2CisjZGVmaW5lIE5QWV9TSVpFT0ZfTE9OR0RPVUJMRSAxNgorI2RlZmluZSBOUFlfU0laRU9GX0NPTVBMRVhfTE9OR0RPVUJMRSAzMgorI2RlZmluZSBOUFlfU0laRU9GX1BZX0lOVFBUUl9UIDgKKyNkZWZpbmUgTlBZX1NJWkVPRl9QWV9MT05HX0xPTkcgOAorI2RlZmluZSBOUFlfU0laRU9GX0xPTkdMT05HIDgKKyNkZWZpbmUgTlBZX1NJWkVPRl9PRkZfVCA4CisjZGVmaW5lIE5QWV9OT19TTVAgMAorI2RlZmluZSBOUFlfSEFWRV9ERUNMX0lTTkFOCisjZGVmaW5lIE5QWV9IQVZFX0RFQ0xfSVNJTkYKKyNkZWZpbmUgTlBZX0hBVkVfREVDTF9JU0ZJTklURQorI2RlZmluZSBOUFlfSEFWRV9ERUNMX1NJR05CSVQKKyNkZWZpbmUgTlBZX1VTRV9DOTlfQ09NUExFWCAxCisjZGVmaW5lIE5QWV9IQVZFX0NPTVBMRVhfRE9VQkxFIDEKKyNkZWZpbmUgTlBZX0hBVkVfQ09NUExFWF9GTE9BVCAxCisjZGVmaW5lIE5QWV9IQVZFX0NPTVBMRVhfTE9OR19ET1VCTEUgMQorI2RlZmluZSBOUFlfRU5BQkxFX1NFUEFSQVRFX0NPTVBJTEFUSU9OIDEKKyNkZWZpbmUgTlBZX1VTRV9DOTlfRk9STUFUUyAxCisjZGVmaW5lIE5QWV9WSVNJQklMSVRZX0hJRERFTiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpCisjZGVmaW5lIE5QWV9BQklfVkVSU0lPTiAweDAxMDAwMDA5CisjZGVmaW5lIE5QWV9BUElfVkVSU0lPTiAweDAwMDAwMDBBCisKKyNpZm5kZWYgX19TVERDX0ZPUk1BVF9NQUNST1MKKyNkZWZpbmUgX19TVERDX0ZPUk1BVF9NQUNST1MgMQorI2VuZGlmCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbnVtcHkvYWFyY2g2NC9jb25maWcuaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzL2FhcmNoNjQvY29uZmlnLmgKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1udW1weS9hYXJjaDY0L2NvbmZpZy5oCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy9hYXJjaDY0L2NvbmZpZy5oCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbnVtcHkvYXJtL2NvbmZpZy5oIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvYXJtL2NvbmZpZy5oCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbnVtcHkvYXJtL2NvbmZpZy5oCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy9hcm0vY29uZmlnLmgKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1udW1weS9hcm0vbnVtcHljb25maWcuaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzL2FybS9udW1weWNvbmZpZy5oCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbnVtcHkvYXJtL251bXB5Y29uZmlnLmgKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzL2FybS9udW1weWNvbmZpZy5oCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbnVtcHkvYXJtZWIvY29uZmlnLmggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy9hcm1lYi9jb25maWcuaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW51bXB5L2FybWViL2NvbmZpZy5oCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy9hcm1lYi9jb25maWcuaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW51bXB5L2FybWViL251bXB5Y29uZmlnLmggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy9hcm1lYi9udW1weWNvbmZpZy5oCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbnVtcHkvYXJtZWIvbnVtcHljb25maWcuaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvYXJtZWIvbnVtcHljb25maWcuaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvZml4X3NoZWJhbmdfZjJweS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzL2ZpeF9zaGViYW5nX2YycHkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJlNmU0ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzL2ZpeF9zaGViYW5nX2YycHkucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKworQXZvaWRzIHVzaW5nIHB5dGhvbiBmcm9tIHRoZSBIT1NUcyBuYXRpdmUgc3lzcm9vdCBmb3IgZjJweSwKK3VzZXMgVEFSR0VUIGVudiBweXRob24gaW5zdGVhZC4KKworU2lnbmVkLW9mZi1ieTogQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+CisKK0luZGV4OiBudW1weS0xLjExLjAvbnVtcHkvZjJweS9zZXR1cC5weQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG51bXB5LTEuMTEuMC5vcmlnL251bXB5L2YycHkvc2V0dXAucHkKKysrKyBudW1weS0xLjExLjAvbnVtcHkvZjJweS9zZXR1cC5weQorQEAgLTM3LDEwICszNywxMyBAQCBkZWYgX2dldF9mMnB5X3NoZWJhbmcoKToKKyAgICAgc2hvdWxkIGJlIGBgIyFweXRob25gYCByYXRoZXIgdGhhbiBgYCMhYGAgZm9sbG93ZWQgYnkgdGhlIGNvbnRlbnRzIG9mCisgICAgIGBgc3lzLmV4ZWN1dGFibGVgYC4KKyAgICAgIiIiCistICAgIGlmIHNldCgoJ2JkaXN0X3doZWVsJywgJ2JkaXN0X2VnZycsICdiZGlzdF93aW5pbnN0JywKKy0gICAgICAgICAgICAnYmRpc3RfcnBtJykpLmludGVyc2VjdGlvbihzeXMuYXJndik6CistICAgICAgICByZXR1cm4gJyMhcHl0aG9uJworLSAgICByZXR1cm4gJyMhJyArIHN5cy5leGVjdXRhYmxlCisrICAgICNpZiBzZXQoKCdiZGlzdF93aGVlbCcsICdiZGlzdF9lZ2cnLCAnYmRpc3Rfd2luaW5zdCcsCisrICAgICMgICAgICAgICdiZGlzdF9ycG0nKSkuaW50ZXJzZWN0aW9uKHN5cy5hcmd2KToKKysgICAgIyAgICByZXR1cm4gJyMhcHl0aG9uJworKyAgICAjcmV0dXJuICcjIScgKyBzeXMuZXhlY3V0YWJsZQorKyAgICAKKysgICAgIyBPbiBPRSwgd2UgbmVlZCB0byBhdm9pZCB1c2luZyB0aGUgSE9TVHMgcHl0aG9uLW5hdGl2ZSwgd2UgcmV0dXJuIGVudiBweXRob24gaW5zdGVhZAorKyAgICByZXR1cm4gJyMhL3Vzci9iaW4vZW52IHB5dGhvbicKKyAKKyAKKyBkZWYgY29uZmlndXJhdGlvbihwYXJlbnRfcGFja2FnZT0nJywgdG9wX3BhdGg9Tm9uZSk6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy9taXBzL19udW1weWNvbmZpZy5oIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvbWlwcy9fbnVtcHljb25maWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzQ2NWMyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvbWlwcy9fbnVtcHljb25maWcuaApAQCAtMCwwICsxLDMyIEBACisjZGVmaW5lIE5QWV9IQVZFX0VORElBTl9IIDEKKyNkZWZpbmUgTlBZX1NJWkVPRl9TSE9SVCBTSVpFT0ZfU0hPUlQKKyNkZWZpbmUgTlBZX1NJWkVPRl9JTlQgU0laRU9GX0lOVAorI2RlZmluZSBOUFlfU0laRU9GX0xPTkcgU0laRU9GX0xPTkcKKyNkZWZpbmUgTlBZX1NJWkVPRl9GTE9BVCA0CisjZGVmaW5lIE5QWV9TSVpFT0ZfQ09NUExFWF9GTE9BVCA4CisjZGVmaW5lIE5QWV9TSVpFT0ZfRE9VQkxFIDgKKyNkZWZpbmUgTlBZX1NJWkVPRl9DT01QTEVYX0RPVUJMRSAxNgorI2RlZmluZSBOUFlfU0laRU9GX0xPTkdET1VCTEUgOAorI2RlZmluZSBOUFlfU0laRU9GX0NPTVBMRVhfTE9OR0RPVUJMRSAxNgorI2RlZmluZSBOUFlfRU5BQkxFX1NFUEFSQVRFX0NPTVBJTEFUSU9OIDEKKyNkZWZpbmUgTlBZX1NJWkVPRl9QWV9JTlRQVFJfVCA0CisjZGVmaW5lIE5QWV9TSVpFT0ZfUFlfTE9OR19MT05HIDgKKyNkZWZpbmUgTlBZX1NJWkVPRl9MT05HTE9ORyA4CisjZGVmaW5lIE5QWV9TSVpFT0ZfT0ZGX1QgOAorI2RlZmluZSBOUFlfTk9fU01QIDAKKyNkZWZpbmUgTlBZX0hBVkVfREVDTF9JU05BTgorI2RlZmluZSBOUFlfSEFWRV9ERUNMX0lTSU5GCisjZGVmaW5lIE5QWV9IQVZFX0RFQ0xfSVNGSU5JVEUKKyNkZWZpbmUgTlBZX0hBVkVfREVDTF9TSUdOQklUCisjZGVmaW5lIE5QWV9VU0VfQzk5X0NPTVBMRVggMQorI2RlZmluZSBOUFlfSEFWRV9DT01QTEVYX0RPVUJMRSAxCisjZGVmaW5lIE5QWV9IQVZFX0NPTVBMRVhfRkxPQVQgMQorI2RlZmluZSBOUFlfSEFWRV9DT01QTEVYX0xPTkdfRE9VQkxFIDEKKyNkZWZpbmUgTlBZX1VTRV9DOTlfRk9STUFUUyAxCisjZGVmaW5lIE5QWV9WSVNJQklMSVRZX0hJRERFTiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpCisjZGVmaW5lIE5QWV9BQklfVkVSU0lPTiAweDAxMDAwMDA5CisjZGVmaW5lIE5QWV9BUElfVkVSU0lPTiAweDAwMDAwMDBBCisKKyNpZm5kZWYgX19TVERDX0ZPUk1BVF9NQUNST1MKKyNkZWZpbmUgX19TVERDX0ZPUk1BVF9NQUNST1MgMQorI2VuZGlmCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbnVtcHkvbWlwcy9jb25maWcuaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzL21pcHMvY29uZmlnLmgKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1udW1weS9taXBzL2NvbmZpZy5oCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy9taXBzL2NvbmZpZy5oCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy9taXBzNjQvX251bXB5Y29uZmlnLmggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy9taXBzNjQvX251bXB5Y29uZmlnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGViYjM5MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzL21pcHM2NC9fbnVtcHljb25maWcuaApAQCAtMCwwICsxLDMyIEBACisjZGVmaW5lIE5QWV9IQVZFX0VORElBTl9IIDEKKyNkZWZpbmUgTlBZX1NJWkVPRl9TSE9SVCBTSVpFT0ZfU0hPUlQKKyNkZWZpbmUgTlBZX1NJWkVPRl9JTlQgU0laRU9GX0lOVAorI2RlZmluZSBOUFlfU0laRU9GX0xPTkcgU0laRU9GX0xPTkcKKyNkZWZpbmUgTlBZX1NJWkVPRl9GTE9BVCA0CisjZGVmaW5lIE5QWV9TSVpFT0ZfQ09NUExFWF9GTE9BVCA4CisjZGVmaW5lIE5QWV9TSVpFT0ZfRE9VQkxFIDgKKyNkZWZpbmUgTlBZX1NJWkVPRl9DT01QTEVYX0RPVUJMRSAxNgorI2RlZmluZSBOUFlfU0laRU9GX0xPTkdET1VCTEUgMTYKKyNkZWZpbmUgTlBZX1NJWkVPRl9DT01QTEVYX0xPTkdET1VCTEUgMzIKKyNkZWZpbmUgTlBZX0VOQUJMRV9TRVBBUkFURV9DT01QSUxBVElPTiAxCisjZGVmaW5lIE5QWV9TSVpFT0ZfUFlfSU5UUFRSX1QgOAorI2RlZmluZSBOUFlfU0laRU9GX1BZX0xPTkdfTE9ORyA4CisjZGVmaW5lIE5QWV9TSVpFT0ZfTE9OR0xPTkcgOAorI2RlZmluZSBOUFlfU0laRU9GX09GRl9UIDgKKyNkZWZpbmUgTlBZX05PX1NNUCAwCisjZGVmaW5lIE5QWV9IQVZFX0RFQ0xfSVNOQU4KKyNkZWZpbmUgTlBZX0hBVkVfREVDTF9JU0lORgorI2RlZmluZSBOUFlfSEFWRV9ERUNMX0lTRklOSVRFCisjZGVmaW5lIE5QWV9IQVZFX0RFQ0xfU0lHTkJJVAorI2RlZmluZSBOUFlfVVNFX0M5OV9DT01QTEVYIDEKKyNkZWZpbmUgTlBZX0hBVkVfQ09NUExFWF9ET1VCTEUgMQorI2RlZmluZSBOUFlfSEFWRV9DT01QTEVYX0ZMT0FUIDEKKyNkZWZpbmUgTlBZX0hBVkVfQ09NUExFWF9MT05HX0RPVUJMRSAxCisjZGVmaW5lIE5QWV9VU0VfQzk5X0ZPUk1BVFMgMQorI2RlZmluZSBOUFlfVklTSUJJTElUWV9ISURERU4gX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiaGlkZGVuIikpKQorI2RlZmluZSBOUFlfQUJJX1ZFUlNJT04gMHgwMTAwMDAwOQorI2RlZmluZSBOUFlfQVBJX1ZFUlNJT04gMHgwMDAwMDAwQQorCisjaWZuZGVmIF9fU1REQ19GT1JNQVRfTUFDUk9TCisjZGVmaW5lIF9fU1REQ19GT1JNQVRfTUFDUk9TIDEKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW51bXB5L21pcHM2NC9jb25maWcuaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzL21pcHM2NC9jb25maWcuaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW51bXB5L21pcHM2NC9jb25maWcuaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvbWlwczY0L2NvbmZpZy5oCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbnVtcHkvbWlwczY0bjMyL19udW1weWNvbmZpZy5oIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvbWlwczY0bjMyL19udW1weWNvbmZpZy5oCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbnVtcHkvbWlwczY0bjMyL19udW1weWNvbmZpZy5oCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy9taXBzNjRuMzIvX251bXB5Y29uZmlnLmgKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1udW1weS9taXBzNjRuMzIvY29uZmlnLmggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy9taXBzNjRuMzIvY29uZmlnLmgKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1udW1weS9taXBzNjRuMzIvY29uZmlnLmgKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzL21pcHM2NG4zMi9jb25maWcuaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW51bXB5L21pcHNlbC9jb25maWcuaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzL21pcHNlbC9jb25maWcuaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW51bXB5L21pcHNlbC9jb25maWcuaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvbWlwc2VsL2NvbmZpZy5oCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy9taXBzZWwvbnVtcHljb25maWcuaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzL21pcHNlbC9udW1weWNvbmZpZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiN2NkNTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy9taXBzZWwvbnVtcHljb25maWcuaApAQCAtMCwwICsxLDE4IEBACisvKiBjYXQgLi9zcmMubGludXgtaTY4Ni0yLjUvbnVtcHkvY29yZS9pbmNsdWRlL251bXB5L251bXB5Y29uZmlnLmggKi8KKy8qCisgKiAgKiBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IG51bXB5L2NvcmUvc2V0dXAucHljLiBETyBOT1QgRURJVCAKKyAqICAgKi8KKyNkZWZpbmUgTlBZX1NJWkVPRl9TSE9SVCAyIAorI2RlZmluZSBOUFlfU0laRU9GX0lOVCA0IAorI2RlZmluZSBOUFlfU0laRU9GX0xPTkcgNCAKKyNkZWZpbmUgTlBZX1NJWkVPRl9GTE9BVCA0IAorI2RlZmluZSBOUFlfU0laRU9GX0RPVUJMRSA4IAorI2RlZmluZSBOUFlfU0laRU9GX0xPTkdET1VCTEUgMTIgCisjZGVmaW5lIE5QWV9TSVpFT0ZfUFlfSU5UUFRSX1QgNCAKKyNkZWZpbmUgTlBZX05PX1NNUCAwCisKKyNkZWZpbmUgTlBZX1NJWkVPRl9MT05HTE9ORyA4IAorI2RlZmluZSBOUFlfU0laRU9GX1BZX0xPTkdfTE9ORyA4IAorI2RlZmluZSBOUFlfU0laRU9GX09GRl9UIDgKKy8qICNkZWZpbmUgQ0hBUl9CSVQgOCAqLworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy9wb3dlcnBjL19udW1weWNvbmZpZy5oIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvcG93ZXJwYy9fbnVtcHljb25maWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTcyNjJhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvcG93ZXJwYy9fbnVtcHljb25maWcuaApAQCAtMCwwICsxLDMyIEBACisjZGVmaW5lIE5QWV9IQVZFX0VORElBTl9IIDEKKyNkZWZpbmUgTlBZX1NJWkVPRl9TSE9SVCBTSVpFT0ZfU0hPUlQKKyNkZWZpbmUgTlBZX1NJWkVPRl9JTlQgU0laRU9GX0lOVAorI2RlZmluZSBOUFlfU0laRU9GX0xPTkcgU0laRU9GX0xPTkcKKyNkZWZpbmUgTlBZX1NJWkVPRl9GTE9BVCA0CisjZGVmaW5lIE5QWV9TSVpFT0ZfQ09NUExFWF9GTE9BVCA4CisjZGVmaW5lIE5QWV9TSVpFT0ZfRE9VQkxFIDgKKyNkZWZpbmUgTlBZX1NJWkVPRl9DT01QTEVYX0RPVUJMRSAxNgorI2RlZmluZSBOUFlfU0laRU9GX0xPTkdET1VCTEUgMTYKKyNkZWZpbmUgTlBZX1NJWkVPRl9DT01QTEVYX0xPTkdET1VCTEUgMzIKKyNkZWZpbmUgTlBZX0VOQUJMRV9TRVBBUkFURV9DT01QSUxBVElPTiAxCisjZGVmaW5lIE5QWV9TSVpFT0ZfUFlfSU5UUFRSX1QgNAorI2RlZmluZSBOUFlfU0laRU9GX1BZX0xPTkdfTE9ORyA4CisjZGVmaW5lIE5QWV9TSVpFT0ZfTE9OR0xPTkcgOAorI2RlZmluZSBOUFlfU0laRU9GX09GRl9UIDgKKyNkZWZpbmUgTlBZX05PX1NNUCAwCisjZGVmaW5lIE5QWV9IQVZFX0RFQ0xfSVNOQU4KKyNkZWZpbmUgTlBZX0hBVkVfREVDTF9JU0lORgorI2RlZmluZSBOUFlfSEFWRV9ERUNMX0lTRklOSVRFCisjZGVmaW5lIE5QWV9IQVZFX0RFQ0xfU0lHTkJJVAorI2RlZmluZSBOUFlfVVNFX0M5OV9DT01QTEVYIDEKKyNkZWZpbmUgTlBZX0hBVkVfQ09NUExFWF9ET1VCTEUgMQorI2RlZmluZSBOUFlfSEFWRV9DT01QTEVYX0ZMT0FUIDEKKyNkZWZpbmUgTlBZX0hBVkVfQ09NUExFWF9MT05HX0RPVUJMRSAxCisjZGVmaW5lIE5QWV9VU0VfQzk5X0ZPUk1BVFMgMQorI2RlZmluZSBOUFlfVklTSUJJTElUWV9ISURERU4gX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiaGlkZGVuIikpKQorI2RlZmluZSBOUFlfQUJJX1ZFUlNJT04gMHgwMTAwMDAwOQorI2RlZmluZSBOUFlfQVBJX1ZFUlNJT04gMHgwMDAwMDAwQQorCisjaWZuZGVmIF9fU1REQ19GT1JNQVRfTUFDUk9TCisjZGVmaW5lIF9fU1REQ19GT1JNQVRfTUFDUk9TIDEKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW51bXB5L3Bvd2VycGMvY29uZmlnLmggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy9wb3dlcnBjL2NvbmZpZy5oCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbnVtcHkvcG93ZXJwYy9jb25maWcuaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvcG93ZXJwYy9jb25maWcuaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvcG93ZXJwYzY0L19udW1weWNvbmZpZy5oIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvcG93ZXJwYzY0L19udW1weWNvbmZpZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlYmIzOTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy9wb3dlcnBjNjQvX251bXB5Y29uZmlnLmgKQEAgLTAsMCArMSwzMiBAQAorI2RlZmluZSBOUFlfSEFWRV9FTkRJQU5fSCAxCisjZGVmaW5lIE5QWV9TSVpFT0ZfU0hPUlQgU0laRU9GX1NIT1JUCisjZGVmaW5lIE5QWV9TSVpFT0ZfSU5UIFNJWkVPRl9JTlQKKyNkZWZpbmUgTlBZX1NJWkVPRl9MT05HIFNJWkVPRl9MT05HCisjZGVmaW5lIE5QWV9TSVpFT0ZfRkxPQVQgNAorI2RlZmluZSBOUFlfU0laRU9GX0NPTVBMRVhfRkxPQVQgOAorI2RlZmluZSBOUFlfU0laRU9GX0RPVUJMRSA4CisjZGVmaW5lIE5QWV9TSVpFT0ZfQ09NUExFWF9ET1VCTEUgMTYKKyNkZWZpbmUgTlBZX1NJWkVPRl9MT05HRE9VQkxFIDE2CisjZGVmaW5lIE5QWV9TSVpFT0ZfQ09NUExFWF9MT05HRE9VQkxFIDMyCisjZGVmaW5lIE5QWV9FTkFCTEVfU0VQQVJBVEVfQ09NUElMQVRJT04gMQorI2RlZmluZSBOUFlfU0laRU9GX1BZX0lOVFBUUl9UIDgKKyNkZWZpbmUgTlBZX1NJWkVPRl9QWV9MT05HX0xPTkcgOAorI2RlZmluZSBOUFlfU0laRU9GX0xPTkdMT05HIDgKKyNkZWZpbmUgTlBZX1NJWkVPRl9PRkZfVCA4CisjZGVmaW5lIE5QWV9OT19TTVAgMAorI2RlZmluZSBOUFlfSEFWRV9ERUNMX0lTTkFOCisjZGVmaW5lIE5QWV9IQVZFX0RFQ0xfSVNJTkYKKyNkZWZpbmUgTlBZX0hBVkVfREVDTF9JU0ZJTklURQorI2RlZmluZSBOUFlfSEFWRV9ERUNMX1NJR05CSVQKKyNkZWZpbmUgTlBZX1VTRV9DOTlfQ09NUExFWCAxCisjZGVmaW5lIE5QWV9IQVZFX0NPTVBMRVhfRE9VQkxFIDEKKyNkZWZpbmUgTlBZX0hBVkVfQ09NUExFWF9GTE9BVCAxCisjZGVmaW5lIE5QWV9IQVZFX0NPTVBMRVhfTE9OR19ET1VCTEUgMQorI2RlZmluZSBOUFlfVVNFX0M5OV9GT1JNQVRTIDEKKyNkZWZpbmUgTlBZX1ZJU0lCSUxJVFlfSElEREVOIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSkKKyNkZWZpbmUgTlBZX0FCSV9WRVJTSU9OIDB4MDEwMDAwMDkKKyNkZWZpbmUgTlBZX0FQSV9WRVJTSU9OIDB4MDAwMDAwMEEKKworI2lmbmRlZiBfX1NURENfRk9STUFUX01BQ1JPUworI2RlZmluZSBfX1NURENfRk9STUFUX01BQ1JPUyAxCisjZW5kaWYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1udW1weS9wb3dlcnBjNjQvY29uZmlnLmggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy9wb3dlcnBjNjQvY29uZmlnLmgKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1udW1weS9wb3dlcnBjNjQvY29uZmlnLmgKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzL3Bvd2VycGM2NC9jb25maWcuaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW51bXB5L3JlbW92ZS1idWlsZC1wYXRoLWluLWNvbW1lbnRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvcmVtb3ZlLWJ1aWxkLXBhdGgtaW4tY29tbWVudHMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1udW1weS9yZW1vdmUtYnVpbGQtcGF0aC1pbi1jb21tZW50cy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvcmVtb3ZlLWJ1aWxkLXBhdGgtaW4tY29tbWVudHMucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1udW1weS94ODYtNjQvX251bXB5Y29uZmlnLmggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy94ODYtNjQvX251bXB5Y29uZmlnLmgKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1udW1weS94ODYtNjQvX251bXB5Y29uZmlnLmgKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzL3g4Ni02NC9fbnVtcHljb25maWcuaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW51bXB5L3g4Ni02NC9jb25maWcuaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzL3g4Ni02NC9jb25maWcuaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW51bXB5L3g4Ni02NC9jb25maWcuaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMveDg2LTY0L2NvbmZpZy5oCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbnVtcHkveDg2L2NvbmZpZy5oIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMveDg2L2NvbmZpZy5oCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbnVtcHkveDg2L2NvbmZpZy5oCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy94ODYvY29uZmlnLmgKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1udW1weS94ODYvbnVtcHljb25maWcuaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzL3g4Ni9udW1weWNvbmZpZy5oCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbnVtcHkveDg2L251bXB5Y29uZmlnLmgKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzL3g4Ni9udW1weWNvbmZpZy5oCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24tbnVtcHlfMS4xMS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uLW51bXB5XzEuMTEuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNWFmNzIwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uLW51bXB5XzEuMTEuMS5iYgpAQCAtMCwwICsxLDEwNCBAQAorU1VNTUFSWSA9ICJBIHNvcGhpc3RpY2F0ZWQgTnVtZXJpYyBQcm9jZXNzaW5nIFBhY2thZ2UgZm9yIFB5dGhvbiIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJQU0YiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9N2U1MWE1Njc3YjIyYjg2NWFiYmZiM2RmZjZmZmIyZDAiCisKK1NSQ05BTUUgPSAibnVtcHkiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9uLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eb24tdC1zZWFyY2gtdXNyLWFuZC1zby1vbi1mb3ItbGlicmFyaWVzLWJ5LWRlZmF1bHQtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JlbW92ZS1idWlsZC1wYXRoLWluLWNvbW1lbnRzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeF9zaGViYW5nX2YycHkucGF0Y2ggXAorICAgICAgICAgICAke0NPTkZJR0ZJTEVTVVJJfSAiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbnVtcHkvZmlsZXMvIgorCitDT05GSUdGSUxFU1VSSSA/PSAiIgorCitDT05GSUdGSUxFU1VSSV9hYXJjaDY0ID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfYXJtID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV9hcm1lYiA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfbWlwc2VsID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV94ODYgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX3g4Ni02NCA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX21pcHMgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV9wb3dlcnBjID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfcG93ZXJwYzY0ID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfbWlwczY0ID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfbWlwczY0bjMyID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAorIgorCitTID0gIiR7V09SS0RJUn0vbnVtcHktJHtQVn0iCisKK2luaGVyaXQgc2V0dXB0b29scworCisjIE1ha2UgdGhlIGJ1aWxkIGZhaWwgYW5kIHJlcGxhY2UgKmNvbmZpZy5oIHdpdGggcHJvcGVyIG9uZQorIyBUaGlzIGlzIGEgdWdseSwgdWdseSBoYWNrIC0gS29lbgorZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9weXRob24gc2V0dXAucHkgYnVpbGQgJHtESVNUVVRJTFNfQlVJTERfQVJHU30gfHwgXAorICAgIHRydWUKKyAgICBjcCAke1dPUktESVJ9Lypjb25maWcuaCAke1N9L2J1aWxkLyQobHMgJHtTfS9idWlsZCB8IGdyZXAgc3JjKS9udW1weS9jb3JlL2luY2x1ZGUvbnVtcHkvCit9CisKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vbnVtcHkvY29yZS9saWIvKi5hIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMmY0NGE4OTVhODEwNGZmYWMxNDBjM2E3MGVkYmQ0NTAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGM0MDgyYzQzOTc5Y2M4NTZhMmJmMzUyYTgyOTdlYTEwOWNjYjMyNDRkNzgzYWUwNjdlYjJlZTViMGQ1NzdjZCIKKworIyBpbnN0YWxsIHdoYXQgaXMgbmVlZGVkIGZvciBudW1weS50ZXN0KCkKK1JERVBFTkRTXyR7UE59ID0gInB5dGhvbi11bml0dGVzdCBcCisgICAgICAgICAgICAgICAgICBweXRob24tZGlmZmxpYiBcCisgICAgICAgICAgICAgICAgICBweXRob24tcHByaW50IFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbi1waWNrbGUgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uLXNoZWxsIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbi1ub3NlIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbi1kb2N0ZXN0IFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbi1kYXRldGltZSBcCisgICAgICAgICAgICAgICAgICBweXRob24tZGlzdHV0aWxzIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbi1taXNjIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbi1tbWFwIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbi1uZXRjbGllbnQgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uLW51bWJlcnMgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uLXB5ZG9jIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbi1wa2d1dGlsIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbi1lbWFpbCBcCisgICAgICAgICAgICAgICAgICBweXRob24tc3VicHJvY2VzcyBcCisgICAgICAgICAgICAgICAgICBweXRob24tY29tcHJlc3Npb24gXAorICAgICAgICAgICAgICAgICAgcHl0aG9uLWN0eXBlcyBcCisgICAgICAgICAgICAgICAgICBweXRob24tdGhyZWFkaW5nIFwKKyIKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uMy1udW1weV8xLjExLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24zLW51bXB5XzEuMTEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2NhMjIzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uMy1udW1weV8xLjExLjAuYmIKQEAgLTAsMCArMSwxMDUgQEAKK1NVTU1BUlkgPSAiQSBzb3BoaXN0aWNhdGVkIE51bWVyaWMgUHJvY2Vzc2luZyBQYWNrYWdlIGZvciBQeXRob24iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiUFNGIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTdlNTFhNTY3N2IyMmI4NjVhYmJmYjNkZmY2ZmZiMmQwIgorCitTUkNOQU1FID0gIm51bXB5IgorCitTUkNfVVJJID0gImh0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy9zb3VyY2Uvbi8ke1NSQ05BTUV9LyR7U1JDTkFNRX0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtc2VhcmNoLXVzci1hbmQtc28tb24tZm9yLWxpYnJhcmllcy1ieS1kZWZhdWx0LS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtYnVpbGQtcGF0aC1pbi1jb21tZW50cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXhfc2hlYmFuZ19mMnB5LnBhdGNoIFwKKyAgICAgICAgICAgJHtDT05GSUdGSUxFU1VSSX0gIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL251bXB5L2ZpbGVzLyIKKworQ09ORklHRklMRVNVUkkgPz0gIiIKKworQ09ORklHRklMRVNVUklfYWFyY2g2NCA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX2FybSA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfYXJtZWIgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX21pcHNlbCA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfeDg2ID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV94ODYtNjQgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV9taXBzID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfcG93ZXJwYyA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX3Bvd2VycGM2NCA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX21pcHM2NCA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX21pcHM2NG4zMiA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKKyIKKworUyA9ICIke1dPUktESVJ9L251bXB5LSR7UFZ9IgorCitpbmhlcml0IHNldHVwdG9vbHMzCisKKyMgTWFrZSB0aGUgYnVpbGQgZmFpbCBhbmQgcmVwbGFjZSAqY29uZmlnLmggd2l0aCBwcm9wZXIgb25lCisjIFRoaXMgaXMgYSB1Z2x5LCB1Z2x5IGhhY2sgLSBLb2VuCitkb19jb21waWxlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIHNldHVwLnB5IGJ1aWxkICR7RElTVFVUSUxTX0JVSUxEX0FSR1N9IHx8IFwKKyAgICB0cnVlCisgICAgY3AgJHtXT1JLRElSfS8qY29uZmlnLmggJHtTfS9idWlsZC8kKGxzICR7U30vYnVpbGQgfCBncmVwIHNyYykvbnVtcHkvY29yZS9pbmNsdWRlL251bXB5LworfQorCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L251bXB5L2NvcmUvbGliLyouYSIKKworU1JDX1VSSVttZDVzdW1dID0gImJjNTZmYjlmYzI4OTVhYTQ5NjE4MDJmZmJkYjMxZDBiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImExZDEyNjhkMjAwODE2YmZiOTcyN2E3YTI3Yjc4ZDhlMzdlY2VjMmU0ZDVlYmQzM2ViNjRlMjc4OWUwZGI0M2UiCisKKyMgaW5zdGFsbCB3aGF0IGlzIG5lZWRlZCBmb3IgbnVtcHkudGVzdCgpCitSREVQRU5EU18ke1BOfSA9ICJweXRob24zLXVuaXR0ZXN0IFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtZGlmZmxpYiBcCisgICAgICAgICAgICAgICAgICBweXRob24zLXBwcmludCBcCisgICAgICAgICAgICAgICAgICBweXRob24zLXBpY2tsZSBcCisgICAgICAgICAgICAgICAgICBweXRob24zLXNoZWxsIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtbm9zZSBcCisgICAgICAgICAgICAgICAgICBweXRob24zLWRvY3Rlc3QgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uMy1kYXRldGltZSBcCisgICAgICAgICAgICAgICAgICBweXRob24zLWRpc3R1dGlscyBcCisgICAgICAgICAgICAgICAgICBweXRob24zLW1pc2MgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uMy1tbWFwIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtbmV0Y2xpZW50IFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtbnVtYmVycyBcCisgICAgICAgICAgICAgICAgICBweXRob24zLXB5ZG9jIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtcGtndXRpbCBcCisgICAgICAgICAgICAgICAgICBweXRob24zLWVtYWlsIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtc3VicHJvY2VzcyBcCisgICAgICAgICAgICAgICAgICBweXRob24zLWNvbXByZXNzaW9uIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtY3R5cGVzIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtdGhyZWFkaW5nIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtdGV4dHV0aWxzIFwKKyIKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLTMuNS1tYW5pZmVzdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tMy41LW1hbmlmZXN0LmluYwppbmRleCAzMzVjM2ZmLi4zMDQ2MTE0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tMy41LW1hbmlmZXN0LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tMy41LW1hbmlmZXN0LmluYwpAQCAtNSwxNCArNSwxOCBAQAogCiAgCiAKLVBST1ZJREVTKz0iJHtQTn0tMnRvMyAke1BOfS1hc3luY2lvICR7UE59LWF1ZGlvICR7UE59LWNvZGVjcyAke1BOfS1jb21waWxlICR7UE59LWNvbXByZXNzaW9uICR7UE59LWNvcmUgJHtQTn0tY3J5cHQgJHtQTn0tY3R5cGVzICR7UE59LWN1cnNlcyAke1BOfS1kYXRldGltZSAke1BOfS1kYiAke1BOfS1kZWJ1Z2dlciAke1BOfS1kZXYgJHtQTn0tZGlmZmxpYiAke1BOfS1kaXN0dXRpbHMgJHtQTn0tZGlzdHV0aWxzLXN0YXRpY2RldiAke1BOfS1kb2N0ZXN0ICR7UE59LWVtYWlsICR7UE59LWZjbnRsICR7UE59LWdkYm0gJHtQTn0taHRtbCAke1BOfS1pZGxlICR7UE59LWltYWdlICR7UE59LWltcG9ydGxpYiAke1BOfS1pbyAke1BOfS1qc29uICR7UE59LWxhbmcgJHtQTn0tbG9nZ2luZyAke1BOfS1tYWlsYm94ICR7UE59LW1hdGggJHtQTn0tbWltZSAke1BOfS1tbWFwICR7UE59LW11bHRpcHJvY2Vzc2luZyAke1BOfS1uZXRjbGllbnQgJHtQTn0tbmV0c2VydmVyICR7UE59LW51bWJlcnMgJHtQTn0tcGlja2xlICR7UE59LXBrZ3V0aWwgJHtQTn0tcHByaW50ICR7UE59LXByb2ZpbGUgJHtQTn0tcHlkb2MgJHtQTn0tcmUgJHtQTn0tcmVhZGxpbmUgJHtQTn0tcmVwcmxpYiAke1BOfS1yZXNvdXJjZSAke1BOfS1zaGVsbCAke1BOfS1zbXRwZCAke1BOfS1zcWxpdGUzICR7UE59LXNxbGl0ZTMtdGVzdHMgJHtQTn0tc3RyaW5nb2xkICR7UE59LXN1YnByb2Nlc3MgJHtQTn0tc3lzbG9nICR7UE59LXRlcm1pbmFsICR7UE59LXRlc3RzICR7UE59LXRleHR1dGlscyAke1BOfS10aHJlYWRpbmcgJHtQTn0tdGtpbnRlciAke1BOfS11bml0dGVzdCAke1BOfS11bml4YWRtaW4gJHtQTn0teG1sICR7UE59LXhtbHJwYyAiCitQUk9WSURFUys9IiR7UE59LTJ0bzMgJHtQTn0tYXJncGFyc2UgJHtQTn0tYXN5bmNpbyAke1BOfS1hdWRpbyAke1BOfS1jb2RlY3MgJHtQTn0tY29tcGlsZSAke1BOfS1jb21wcmVzc2lvbiAke1BOfS1jb3JlICR7UE59LWNyeXB0ICR7UE59LWN0eXBlcyAke1BOfS1jdXJzZXMgJHtQTn0tZGF0ZXRpbWUgJHtQTn0tZGIgJHtQTn0tZGVidWdnZXIgJHtQTn0tZGV2ICR7UE59LWRpZmZsaWIgJHtQTn0tZGlzdHV0aWxzICR7UE59LWRpc3R1dGlscy1zdGF0aWNkZXYgJHtQTn0tZG9jdGVzdCAke1BOfS1lbWFpbCAke1BOfS1lbnVtICR7UE59LWZjbnRsICR7UE59LWdkYm0gJHtQTn0taHRtbCAke1BOfS1pZGxlICR7UE59LWltYWdlICR7UE59LWltcG9ydGxpYiAke1BOfS1pbyAke1BOfS1qc29uICR7UE59LWxhbmcgJHtQTn0tbG9nZ2luZyAke1BOfS1tYWlsYm94ICR7UE59LW1hdGggJHtQTn0tbWltZSAke1BOfS1tbWFwICR7UE59LW11bHRpcHJvY2Vzc2luZyAke1BOfS1uZXRjbGllbnQgJHtQTn0tbmV0c2VydmVyICR7UE59LW51bWJlcnMgJHtQTn0tcGlja2xlICR7UE59LXBrZ3V0aWwgJHtQTn0tcHByaW50ICR7UE59LXByb2ZpbGUgJHtQTn0tcHlkb2MgJHtQTn0tcmUgJHtQTn0tcmVhZGxpbmUgJHtQTn0tcmVwcmxpYiAke1BOfS1yZXNvdXJjZSAke1BOfS1zZWxlY3RvcnMgJHtQTn0tc2hlbGwgJHtQTn0tc2lnbmFsICR7UE59LXNtdHBkICR7UE59LXNxbGl0ZTMgJHtQTn0tc3FsaXRlMy10ZXN0cyAke1BOfS1zdHJpbmdvbGQgJHtQTn0tc3VicHJvY2VzcyAke1BOfS1zeXNsb2cgJHtQTn0tdGVybWluYWwgJHtQTn0tdGVzdHMgJHtQTn0tdGV4dHV0aWxzICR7UE59LXRocmVhZGluZyAke1BOfS10a2ludGVyICR7UE59LXVuaXR0ZXN0ICR7UE59LXVuaXhhZG1pbiAke1BOfS14bWwgJHtQTn0teG1scnBjICIKIAotUEFDS0FHRVM9IiR7UE59LWRiZyAke1BOfS0ydG8zICR7UE59LWFzeW5jaW8gJHtQTn0tYXVkaW8gJHtQTn0tY29kZWNzICR7UE59LWNvbXBpbGUgJHtQTn0tY29tcHJlc3Npb24gJHtQTn0tY29yZSAke1BOfS1jcnlwdCAke1BOfS1jdHlwZXMgJHtQTn0tY3Vyc2VzICR7UE59LWRhdGV0aW1lICR7UE59LWRiICR7UE59LWRlYnVnZ2VyICR7UE59LWRldiAke1BOfS1kaWZmbGliICR7UE59LWRpc3R1dGlscy1zdGF0aWNkZXYgJHtQTn0tZGlzdHV0aWxzICR7UE59LWRvY3Rlc3QgJHtQTn0tZW1haWwgJHtQTn0tZmNudGwgJHtQTn0tZ2RibSAke1BOfS1odG1sICR7UE59LWlkbGUgJHtQTn0taW1hZ2UgJHtQTn0taW1wb3J0bGliICR7UE59LWlvICR7UE59LWpzb24gJHtQTn0tbGFuZyAke1BOfS1sb2dnaW5nICR7UE59LW1haWxib3ggJHtQTn0tbWF0aCAke1BOfS1taW1lICR7UE59LW1tYXAgJHtQTn0tbXVsdGlwcm9jZXNzaW5nICR7UE59LW5ldGNsaWVudCAke1BOfS1uZXRzZXJ2ZXIgJHtQTn0tbnVtYmVycyAke1BOfS1waWNrbGUgJHtQTn0tcGtndXRpbCAke1BOfS1wcHJpbnQgJHtQTn0tcHJvZmlsZSAke1BOfS1weWRvYyAke1BOfS1yZSAke1BOfS1yZWFkbGluZSAke1BOfS1yZXBybGliICR7UE59LXJlc291cmNlICR7UE59LXNoZWxsICR7UE59LXNtdHBkICR7UE59LXNxbGl0ZTMgJHtQTn0tc3FsaXRlMy10ZXN0cyAke1BOfS1zdHJpbmdvbGQgJHtQTn0tc3VicHJvY2VzcyAke1BOfS1zeXNsb2cgJHtQTn0tdGVybWluYWwgJHtQTn0tdGVzdHMgJHtQTn0tdGV4dHV0aWxzICR7UE59LXRocmVhZGluZyAke1BOfS10a2ludGVyICR7UE59LXVuaXR0ZXN0ICR7UE59LXVuaXhhZG1pbiAke1BOfS14bWwgJHtQTn0teG1scnBjICR7UE59LW1vZHVsZXMiCitQQUNLQUdFUz0iJHtQTn0tZGJnICR7UE59LTJ0bzMgJHtQTn0tYXJncGFyc2UgJHtQTn0tYXN5bmNpbyAke1BOfS1hdWRpbyAke1BOfS1jb2RlY3MgJHtQTn0tY29tcGlsZSAke1BOfS1jb21wcmVzc2lvbiAke1BOfS1jb3JlICR7UE59LWNyeXB0ICR7UE59LWN0eXBlcyAke1BOfS1jdXJzZXMgJHtQTn0tZGF0ZXRpbWUgJHtQTn0tZGIgJHtQTn0tZGVidWdnZXIgJHtQTn0tZGV2ICR7UE59LWRpZmZsaWIgJHtQTn0tZGlzdHV0aWxzLXN0YXRpY2RldiAke1BOfS1kaXN0dXRpbHMgJHtQTn0tZG9jdGVzdCAke1BOfS1lbWFpbCAke1BOfS1lbnVtICR7UE59LWZjbnRsICR7UE59LWdkYm0gJHtQTn0taHRtbCAke1BOfS1pZGxlICR7UE59LWltYWdlICR7UE59LWltcG9ydGxpYiAke1BOfS1pbyAke1BOfS1qc29uICR7UE59LWxhbmcgJHtQTn0tbG9nZ2luZyAke1BOfS1tYWlsYm94ICR7UE59LW1hdGggJHtQTn0tbWltZSAke1BOfS1tbWFwICR7UE59LW11bHRpcHJvY2Vzc2luZyAke1BOfS1uZXRjbGllbnQgJHtQTn0tbmV0c2VydmVyICR7UE59LW51bWJlcnMgJHtQTn0tcGlja2xlICR7UE59LXBrZ3V0aWwgJHtQTn0tcHByaW50ICR7UE59LXByb2ZpbGUgJHtQTn0tcHlkb2MgJHtQTn0tcmUgJHtQTn0tcmVhZGxpbmUgJHtQTn0tcmVwcmxpYiAke1BOfS1yZXNvdXJjZSAke1BOfS1zZWxlY3RvcnMgJHtQTn0tc2hlbGwgJHtQTn0tc2lnbmFsICR7UE59LXNtdHBkICR7UE59LXNxbGl0ZTMgJHtQTn0tc3FsaXRlMy10ZXN0cyAke1BOfS1zdHJpbmdvbGQgJHtQTn0tc3VicHJvY2VzcyAke1BOfS1zeXNsb2cgJHtQTn0tdGVybWluYWwgJHtQTn0tdGVzdHMgJHtQTn0tdGV4dHV0aWxzICR7UE59LXRocmVhZGluZyAke1BOfS10a2ludGVyICR7UE59LXVuaXR0ZXN0ICR7UE59LXVuaXhhZG1pbiAke1BOfS14bWwgJHtQTn0teG1scnBjICR7UE59LW1vZHVsZXMiCiAKIFNVTU1BUllfJHtQTn0tMnRvMz0iUHl0aG9uIGF1dG9tYXRlZCBQeXRob24gMiB0byAzIGNvZGUgdHJhbnNsYXRvciIKIFJERVBFTkRTXyR7UE59LTJ0bzM9IiR7UE59LWNvcmUiCiBGSUxFU18ke1BOfS0ydG8zPSIke2xpYmRpcn0vcHl0aG9uMy41L2xpYjJ0bzMgIgogCitTVU1NQVJZXyR7UE59LWFyZ3BhcnNlPSJQeXRob24gY29tbWFuZCBsaW5lIGFyZ3VtZW50IHBhcnNlciIKK1JERVBFTkRTXyR7UE59LWFyZ3BhcnNlPSIke1BOfS1jb3JlICR7UE59LWNvZGVjcyAke1BOfS10ZXh0dXRpbHMiCitGSUxFU18ke1BOfS1hcmdwYXJzZT0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9hcmdwYXJzZS4qICIKKwogU1VNTUFSWV8ke1BOfS1hc3luY2lvPSJQeXRob24gQXN5bmNocm9ub3VzIEkvTywgZXZlbnQgbG9vcCwgY29yb3V0aW5lcyBhbmQgdGFza3MiCiBSREVQRU5EU18ke1BOfS1hc3luY2lvPSIke1BOfS1jb3JlIgogRklMRVNfJHtQTn0tYXN5bmNpbz0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9hc3luY2lvICIKQEAgLTMwLDE5ICszNCwxOSBAQAogRklMRVNfJHtQTn0tY29tcGlsZT0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9weV9jb21waWxlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb21waWxlYWxsLiogIgogCiBTVU1NQVJZXyR7UE59LWNvbXByZXNzaW9uPSJQeXRob24gaGlnaC1sZXZlbCBjb21wcmVzc2lvbiBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tY29tcHJlc3Npb249IiR7UE59LWNvcmUgJHtQTn0tY29kZWNzIgotRklMRVNfJHtQTn0tY29tcHJlc3Npb249IiR7bGliZGlyfS9weXRob24zLjUvZ3ppcC4qICR7bGliZGlyfS9weXRob24zLjUvemlwZmlsZS4qICR7bGliZGlyfS9weXRob24zLjUvdGFyZmlsZS4qICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvYnoyLiouc28gIgorUkRFUEVORFNfJHtQTn0tY29tcHJlc3Npb249IiR7UE59LWNvcmUgJHtQTn0tY29kZWNzICR7UE59LWltcG9ydGxpYiAke1BOfS10aHJlYWRpbmcgJHtQTn0tc2hlbGwiCitGSUxFU18ke1BOfS1jb21wcmVzc2lvbj0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9nemlwLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS96aXBmaWxlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS90YXJmaWxlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9iejIuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL3psaWIuKi5zbyAiCiAKIFNVTU1BUllfJHtQTn0tY29yZT0iUHl0aG9uIGludGVycHJldGVyIGFuZCBjb3JlIG1vZHVsZXMiCiBSREVQRU5EU18ke1BOfS1jb3JlPSIke1BOfS1sYW5nICR7UE59LXJlICR7UE59LXJlcHJsaWIgJHtQTn0tY29kZWNzICR7UE59LWlvICR7UE59LW1hdGgiCi1GSUxFU18ke1BOfS1jb3JlPSIke2xpYmRpcn0vcHl0aG9uMy41L19fZnV0dXJlX18uKiAke2xpYmRpcn0vcHl0aG9uMy41L19hYmNvbGwuKiAke2xpYmRpcn0vcHl0aG9uMy41L2FiYy4qICR7bGliZGlyfS9weXRob24zLjUvYXN0LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb3B5LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb3B5cmVnLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9Db25maWdQYXJzZXIuKiAke2xpYmRpcn0vcHl0aG9uMy41L2dlbmVyaWNwYXRoLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9nZXRvcHQuKiAke2xpYmRpcn0vcHl0aG9uMy41L2xpbmVjYWNoZS4qICR7bGliZGlyfS9weXRob24zLjUvbmV3LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9vcy4qICR7bGliZGlyfS9weXRob24zLjUvcG9zaXhwYXRoLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9zdHJ1Y3QuKiAke2xpYmRpcn0vcHl0aG9uMy41L3dhcm5pbmdzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9zaXRlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9zdGF0LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9Vc2VyRGljdC4qICR7bGliZGlyfS9weXRob24zLjUvVXNlckxpc3QuKiAke2xpYmRpcn0vcHl0aG9uMy41L1VzZXJTdHJpbmcuKiAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL2JpbmFzY2lpLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fc3RydWN0Liouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC90aW1lLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC94cmVhZGxpbmVzLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS90eXBlcy4qICR7bGliZGlyfS9weXRob24zLjUvcGxhdGZvcm0uKiAke2JpbmRpcn0vcHl0aG9uKiAke2xpYmRpcn0vcHl0aG9uMy41L193ZWFrcmVmc2V0LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9zeXNjb25maWcuKiAke2xpYmRpcn0vcHl0aG9uMy41L19zeXNjb25maWdkYXRhLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb25maWcvTWFrZWZpbGUgJHtpbmNsdWRlZGlyfS9weXRob24ke1BZVEhPTl9CSU5BQkl9L3B5Y29uZmlnKi5oICR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbGxlY3Rpb25zICR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19jb2xsZWN0aW9uc19hYmMuKiAke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc2l0ZWJ1aWx0aW5zLiogJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc2l0ZWN1c3RvbWl6ZS5weSAiCitGSUxFU18ke1BOfS1jb3JlPSIke2xpYmRpcn0vcHl0aG9uMy41L19fZnV0dXJlX18uKiAke2xpYmRpcn0vcHl0aG9uMy41L19hYmNvbGwuKiAke2xpYmRpcn0vcHl0aG9uMy41L2FiYy4qICR7bGliZGlyfS9weXRob24zLjUvYXN0LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb3B5LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb3B5cmVnLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb25maWdwYXJzZXIuKiAke2xpYmRpcn0vcHl0aG9uMy41L2dlbmVyaWNwYXRoLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9nZXRvcHQuKiAke2xpYmRpcn0vcHl0aG9uMy41L2xpbmVjYWNoZS4qICR7bGliZGlyfS9weXRob24zLjUvbmV3LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9vcy4qICR7bGliZGlyfS9weXRob24zLjUvcG9zaXhwYXRoLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9zdHJ1Y3QuKiAke2xpYmRpcn0vcHl0aG9uMy41L3dhcm5pbmdzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9zaXRlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9zdGF0LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9Vc2VyRGljdC4qICR7bGliZGlyfS9weXRob24zLjUvVXNlckxpc3QuKiAke2xpYmRpcn0vcHl0aG9uMy41L1VzZXJTdHJpbmcuKiAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL2JpbmFzY2lpLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fc3RydWN0Liouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC90aW1lLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC94cmVhZGxpbmVzLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS90eXBlcy4qICR7bGliZGlyfS9weXRob24zLjUvcGxhdGZvcm0uKiAke2JpbmRpcn0vcHl0aG9uKiAke2xpYmRpcn0vcHl0aG9uMy41L193ZWFrcmVmc2V0LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9zeXNjb25maWcuKiAke2xpYmRpcn0vcHl0aG9uMy41L19zeXNjb25maWdkYXRhLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb25maWcvTWFrZWZpbGUgJHtpbmNsdWRlZGlyfS9weXRob24ke1BZVEhPTl9CSU5BQkl9L3B5Y29uZmlnKi5oICR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbGxlY3Rpb25zICR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19jb2xsZWN0aW9uc19hYmMuKiAke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc2l0ZWJ1aWx0aW5zLiogJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc2l0ZWN1c3RvbWl6ZS5weSAiCiAKIFNVTU1BUllfJHtQTn0tY3J5cHQ9IlB5dGhvbiBiYXNpYyBjcnlwdG9ncmFwaGljIGFuZCBoYXNoaW5nIHN1cHBvcnQiCiBSREVQRU5EU18ke1BOfS1jcnlwdD0iJHtQTn0tY29yZSIKIEZJTEVTXyR7UE59LWNyeXB0PSIke2xpYmRpcn0vcHl0aG9uMy41L2hhc2hsaWIuKiAke2xpYmRpcn0vcHl0aG9uMy41L21kNS4qICR7bGliZGlyfS9weXRob24zLjUvc2hhLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9jcnlwdC4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2hhc2hsaWIuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19zaGEyNTYuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19zaGE1MTIuKi5zbyAiCiAKIFNVTU1BUllfJHtQTn0tY3R5cGVzPSJQeXRob24gQyB0eXBlcyBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tY3R5cGVzPSIke1BOfS1jb3JlIgorUkRFUEVORFNfJHtQTn0tY3R5cGVzPSIke1BOfS1jb3JlICR7UE59LXN1YnByb2Nlc3MiCiBGSUxFU18ke1BOfS1jdHlwZXM9IiR7bGliZGlyfS9weXRob24zLjUvY3R5cGVzICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2N0eXBlcy4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2N0eXBlc190ZXN0Liouc28gIgogCiBTVU1NQVJZXyR7UE59LWN1cnNlcz0iUHl0aG9uIGN1cnNlcyBzdXBwb3J0IgpAQCAtNTEsNyArNTUsNyBAQAogCiBTVU1NQVJZXyR7UE59LWRhdGV0aW1lPSJQeXRob24gY2FsZW5kYXIgYW5kIHRpbWUgc3VwcG9ydCIKIFJERVBFTkRTXyR7UE59LWRhdGV0aW1lPSIke1BOfS1jb3JlICR7UE59LWNvZGVjcyIKLUZJTEVTXyR7UE59LWRhdGV0aW1lPSIke2xpYmRpcn0vcHl0aG9uMy41L19zdHJwdGltZS4qICR7bGliZGlyfS9weXRob24zLjUvY2FsZW5kYXIuKiAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL2RhdGV0aW1lLiouc28gIgorRklMRVNfJHtQTn0tZGF0ZXRpbWU9IiR7bGliZGlyfS9weXRob24zLjUvX3N0cnB0aW1lLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9jYWxlbmRhci4qICR7bGliZGlyfS9weXRob24zLjUvZGF0ZXRpbWUuKiAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19kYXRldGltZS4qLnNvICIKIAogU1VNTUFSWV8ke1BOfS1kYj0iUHl0aG9uIGZpbGUtYmFzZWQgZGF0YWJhc2Ugc3VwcG9ydCIKIFJERVBFTkRTXyR7UE59LWRiPSIke1BOfS1jb3JlIgpAQCAtODUsNiArODksMTAgQEAKIFJERVBFTkRTXyR7UE59LWVtYWlsPSIke1BOfS1jb3JlICR7UE59LWlvICR7UE59LXJlICR7UE59LW1pbWUgJHtQTn0tYXVkaW8gJHtQTn0taW1hZ2UgJHtQTn0tbmV0Y2xpZW50IgogRklMRVNfJHtQTn0tZW1haWw9IiR7bGliZGlyfS9weXRob24zLjUvaW1hcGxpYi4qICR7bGliZGlyfS9weXRob24zLjUvZW1haWwgIgogCitTVU1NQVJZXyR7UE59LWVudW09IlB5dGhvbiBzdXBwb3J0IGZvciBlbnVtZXJhdGlvbnMiCitSREVQRU5EU18ke1BOfS1lbnVtPSIke1BOfS1jb3JlIgorRklMRVNfJHtQTn0tZW51bT0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9lbnVtLiogIgorCiBTVU1NQVJZXyR7UE59LWZjbnRsPSJQeXRob24ncyBmY250bCBpbnRlcmZhY2UiCiBSREVQRU5EU18ke1BOfS1mY250bD0iJHtQTn0tY29yZSIKIEZJTEVTXyR7UE59LWZjbnRsPSIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL2ZjbnRsLiouc28gIgpAQCAtMTA2LDcgKzExNCw3IEBACiBGSUxFU18ke1BOfS1pbWFnZT0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb2xvcnN5cy4qICR7bGliZGlyfS9weXRob24zLjUvaW1naGRyLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9pbWFnZW9wLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9yZ2JpbWcuKi5zbyAiCiAKIFNVTU1BUllfJHtQTn0taW1wb3J0bGliPSJQeXRob24gaW1wb3J0IGltcGxlbWVudGF0aW9uIGxpYnJhcnkiCi1SREVQRU5EU18ke1BOfS1pbXBvcnRsaWI9IiR7UE59LWNvcmUiCitSREVQRU5EU18ke1BOfS1pbXBvcnRsaWI9IiR7UE59LWNvcmUgJHtQTn0tbGFuZyIKIEZJTEVTXyR7UE59LWltcG9ydGxpYj0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9pbXBvcnRsaWIgIgogCiBTVU1NQVJZXyR7UE59LWlvPSJQeXRob24gbG93LWxldmVsIEkvTyIKQEAgLTExOCw4ICsxMjYsOCBAQAogRklMRVNfJHtQTn0tanNvbj0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9qc29uICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2pzb24uKi5zbyAiCiAKIFNVTU1BUllfJHtQTn0tbGFuZz0iUHl0aG9uIGxvdy1sZXZlbCBsYW5ndWFnZSBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tbGFuZz0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LWxhbmc9IiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2Jpc2VjdC4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2NvbGxlY3Rpb25zLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9faGVhcHEuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL193ZWFrcmVmLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fZnVuY3Rvb2xzLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9hcnJheS4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvaXRlcnRvb2xzLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9vcGVyYXRvci4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvcGFyc2VyLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9hdGV4aXQuKiAke2xpYmRpcn0vcHl0aG9uMy41L2Jpc2VjdC4qICR7bGliZGlyfS9weXRob24zLjUvY29kZS4qICR7bGliZGlyfS9weXRob24zLjUvY29kZW9wLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb2xsZWN0aW9ucy4qICR7bGliZGlyfS9weXRob24zLjUvX2NvbGxlY3Rpb25zX2FiYy4qICR7bGliZGlyfS9weXRob24zLjUvZGlzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9mdW5jdG9vbHMuKiAke2xpYmRpcn0vcHl0aG9uMy41L2hlYXBxLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9pbnNwZWN0LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9rZXl3b3JkLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9vcGNvZGUuKiAke2xpYmRpcn0vcHl0aG9uMy41L3N5bWJvbC4qICR7bGliZGlyfS9weXRob24zLjUvcmVwci4qICR7bGliZGlyfS9weXRob24zLjUvdG9rZW4uKiAke2xpYmRpcn0vcHl0aG9uMy41L3Rva2VuaXplLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS90cmFjZWJhY2suKiAke2xpYmRpcn0vcHl0aG9uMy41L3dlYWtyZWYuKiAiCitSREVQRU5EU18ke1BOfS1sYW5nPSIke1BOfS1jb3JlICR7UE59LWltcG9ydGxpYiIKK0ZJTEVTXyR7UE59LWxhbmc9IiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2Jpc2VjdC4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2NvbGxlY3Rpb25zLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9faGVhcHEuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL193ZWFrcmVmLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fZnVuY3Rvb2xzLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9hcnJheS4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvaXRlcnRvb2xzLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9vcGVyYXRvci4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvcGFyc2VyLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9hdGV4aXQuKiAke2xpYmRpcn0vcHl0aG9uMy41L2Jpc2VjdC4qICR7bGliZGlyfS9weXRob24zLjUvY29kZS4qICR7bGliZGlyfS9weXRob24zLjUvY29kZW9wLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb2xsZWN0aW9ucy4qICR7bGliZGlyfS9weXRob24zLjUvX2NvbGxlY3Rpb25zX2FiYy4qICR7bGliZGlyfS9weXRob24zLjUvY29udGV4dGxpYi4qICR7bGliZGlyfS9weXRob24zLjUvZGlzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9mdW5jdG9vbHMuKiAke2xpYmRpcn0vcHl0aG9uMy41L2hlYXBxLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9pbnNwZWN0LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9rZXl3b3JkLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9vcGNvZGUuKiAke2xpYmRpcn0vcHl0aG9uMy41L29wZXJhdG9yLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9zeW1ib2wuKiAke2xpYmRpcn0vcHl0aG9uMy41L3JlcHIuKiAke2xpYmRpcn0vcHl0aG9uMy41L3Rva2VuLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS90b2tlbml6ZS4qICR7bGliZGlyfS9weXRob24zLjUvdHJhY2ViYWNrLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS93ZWFrcmVmLiogIgogCiBTVU1NQVJZXyR7UE59LWxvZ2dpbmc9IlB5dGhvbiBsb2dnaW5nIHN1cHBvcnQiCiBSREVQRU5EU18ke1BOfS1sb2dnaW5nPSIke1BOfS1jb3JlICR7UE59LWlvICR7UE59LWxhbmcgJHtQTn0tcGlja2xlICR7UE59LXN0cmluZ29sZCIKQEAgLTEzMCw3ICsxMzgsNyBAQAogRklMRVNfJHtQTn0tbWFpbGJveD0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9tYWlsYm94LiogIgogCiBTVU1NQVJZXyR7UE59LW1hdGg9IlB5dGhvbiBtYXRoIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1tYXRoPSIke1BOfS1jb3JlIgorUkRFUEVORFNfJHtQTn0tbWF0aD0iJHtQTn0tY29yZSAke1BOfS1jcnlwdCIKIEZJTEVTXyR7UE59LW1hdGg9IiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvY21hdGguKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL21hdGguKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19yYW5kb20uKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L3JhbmRvbS4qICR7bGliZGlyfS9weXRob24zLjUvc2V0cy4qICIKIAogU1VNTUFSWV8ke1BOfS1taW1lPSJQeXRob24gTUlNRSBoYW5kbGluZyBBUElzIgpAQCAtMTkzLDEwICsyMDEsMTggQEAKIFJERVBFTkRTXyR7UE59LXJlc291cmNlPSIke1BOfS1jb3JlIgogRklMRVNfJHtQTn0tcmVzb3VyY2U9IiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvcmVzb3VyY2UuKi5zbyAiCiAKK1NVTU1BUllfJHtQTn0tc2VsZWN0b3JzPSJQeXRob24gSGlnaC1sZXZlbCBJL08gbXVsdGlwbGV4aW5nIgorUkRFUEVORFNfJHtQTn0tc2VsZWN0b3JzPSIke1BOfS1jb3JlIgorRklMRVNfJHtQTn0tc2VsZWN0b3JzPSIke2xpYmRpcn0vcHl0aG9uMy41L3NlbGVjdG9ycy4qICIKKwogU1VNTUFSWV8ke1BOfS1zaGVsbD0iUHl0aG9uIHNoZWxsLWxpa2UgZnVuY3Rpb25hbGl0eSIKLVJERVBFTkRTXyR7UE59LXNoZWxsPSIke1BOfS1jb3JlICR7UE59LXJlIgorUkRFUEVORFNfJHtQTn0tc2hlbGw9IiR7UE59LWNvcmUgJHtQTn0tcmUgJHtQTn0tY29tcHJlc3Npb24iCiBGSUxFU18ke1BOfS1zaGVsbD0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9jbWQuKiAke2xpYmRpcn0vcHl0aG9uMy41L2NvbW1hbmRzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9kaXJjYWNoZS4qICR7bGliZGlyfS9weXRob24zLjUvZm5tYXRjaC4qICR7bGliZGlyfS9weXRob24zLjUvZ2xvYi4qICR7bGliZGlyfS9weXRob24zLjUvcG9wZW4yLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9zaGxleC4qICR7bGliZGlyfS9weXRob24zLjUvc2h1dGlsLiogIgogCitTVU1NQVJZXyR7UE59LXNpZ25hbD0iUHl0aG9uIHNldCBoYW5kbGVycyBmb3IgYXN5bmNocm9ub3VzIGV2ZW50cyBzdXBwb3J0IgorUkRFUEVORFNfJHtQTn0tc2lnbmFsPSIke1BOfS1jb3JlICR7UE59LWVudW0iCitGSUxFU18ke1BOfS1zaWduYWw9IiR7bGliZGlyfS9weXRob24zLjUvc2lnbmFsLiogIgorCiBTVU1NQVJZXyR7UE59LXNtdHBkPSJQeXRob24gU2ltcGxlIE1haWwgVHJhbnNwb3J0IERhZW1vbiIKIFJERVBFTkRTXyR7UE59LXNtdHBkPSIke1BOfS1jb3JlICR7UE59LW5ldHNlcnZlciAke1BOfS1lbWFpbCAke1BOfS1taW1lIgogRklMRVNfJHtQTn0tc210cGQ9IiR7YmluZGlyfS9zbXRwZC4qICR7bGliZGlyfS9weXRob24zLjUvc210cGQuKiAiCkBAIC0yMTQsOCArMjMwLDggQEAKIEZJTEVTXyR7UE59LXN0cmluZ29sZD0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9zdHJvcC4qLnNvICR7bGliZGlyfS9weXRob24zLjUvc3RyaW5nLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9zdHJpbmdvbGQuKiAiCiAKIFNVTU1BUllfJHtQTn0tc3VicHJvY2Vzcz0iUHl0aG9uIHN1YnByb2Nlc3Mgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LXN1YnByb2Nlc3M9IiR7UE59LWNvcmUgJHtQTn0taW8gJHtQTn0tcmUgJHtQTn0tZmNudGwgJHtQTn0tcGlja2xlIgotRklMRVNfJHtQTn0tc3VicHJvY2Vzcz0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9zdWJwcm9jZXNzLiogIgorUkRFUEVORFNfJHtQTn0tc3VicHJvY2Vzcz0iJHtQTn0tY29yZSAke1BOfS1pbyAke1BOfS1yZSAke1BOfS1mY250bCAke1BOfS1waWNrbGUgJHtQTn0tdGhyZWFkaW5nICR7UE59LXNpZ25hbCAke1BOfS1zZWxlY3RvcnMiCitGSUxFU18ke1BOfS1zdWJwcm9jZXNzPSIke2xpYmRpcn0vcHl0aG9uMy41L3N1YnByb2Nlc3MuKiAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19wb3NpeHN1YnByb2Nlc3MuKi5zbyAiCiAKIFNVTU1BUllfJHtQTn0tc3lzbG9nPSJQeXRob24gc3lzbG9nIGludGVyZmFjZSIKIFJERVBFTkRTXyR7UE59LXN5c2xvZz0iJHtQTn0tY29yZSIKQEAgLTIzNSw3ICsyNTEsNyBAQAogCiBTVU1NQVJZXyR7UE59LXRocmVhZGluZz0iUHl0aG9uIHRocmVhZGluZyAmIHN5bmNocm9uaXphdGlvbiBzdXBwb3J0IgogUkRFUEVORFNfJHtQTn0tdGhyZWFkaW5nPSIke1BOfS1jb3JlICR7UE59LWxhbmciCi1GSUxFU18ke1BOfS10aHJlYWRpbmc9IiR7bGliZGlyfS9weXRob24zLjUvX3RocmVhZGluZ19sb2NhbC4qICR7bGliZGlyfS9weXRob24zLjUvZHVtbXlfdGhyZWFkLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9kdW1teV90aHJlYWRpbmcuKiAke2xpYmRpcn0vcHl0aG9uMy41L211dGV4LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS90aHJlYWRpbmcuKiAke2xpYmRpcn0vcHl0aG9uMy41L1F1ZXVlLiogIgorRklMRVNfJHtQTn0tdGhyZWFkaW5nPSIke2xpYmRpcn0vcHl0aG9uMy41L190aHJlYWRpbmdfbG9jYWwuKiAke2xpYmRpcn0vcHl0aG9uMy41L2R1bW15X3RocmVhZC4qICR7bGliZGlyfS9weXRob24zLjUvZHVtbXlfdGhyZWFkaW5nLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9tdXRleC4qICR7bGliZGlyfS9weXRob24zLjUvdGhyZWFkaW5nLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9xdWV1ZS4qICIKIAogU1VNTUFSWV8ke1BOfS10a2ludGVyPSJQeXRob24gVGNsL1RrIGJpbmRpbmdzIgogUkRFUEVORFNfJHtQTn0tdGtpbnRlcj0iJHtQTn0tY29yZSIKQEAgLTI1OCw3ICsyNzQsNyBAQAogRklMRVNfJHtQTn0teG1scnBjPSIke2xpYmRpcn0vcHl0aG9uMy41L3htbHJwY2xpYi4qICR7bGliZGlyfS9weXRob24zLjUvU2ltcGxlWE1MUlBDU2VydmVyLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9Eb2NYTUxSUENTZXJ2ZXIuKiAke2xpYmRpcn0vcHl0aG9uMy41L3htbHJwYyAiCiAKIFNVTU1BUllfJHtQTn0tbW9kdWxlcz0iQWxsIFB5dGhvbiBtb2R1bGVzIgotUkRFUEVORFNfJHtQTn0tbW9kdWxlcz0iJHtQTn0tMnRvMyAke1BOfS1hc3luY2lvICR7UE59LWF1ZGlvICR7UE59LWNvZGVjcyAke1BOfS1jb21waWxlICR7UE59LWNvbXByZXNzaW9uICR7UE59LWNvcmUgJHtQTn0tY3J5cHQgJHtQTn0tY3R5cGVzICR7UE59LWN1cnNlcyAke1BOfS1kYXRldGltZSAke1BOfS1kYiAke1BOfS1kZWJ1Z2dlciAke1BOfS1kaWZmbGliICR7UE59LWRpc3R1dGlscyAke1BOfS1kb2N0ZXN0ICR7UE59LWVtYWlsICR7UE59LWZjbnRsICR7UE59LWdkYm0gJHtQTn0taHRtbCAke1BOfS1pZGxlICR7UE59LWltYWdlICR7UE59LWltcG9ydGxpYiAke1BOfS1pbyAke1BOfS1qc29uICR7UE59LWxhbmcgJHtQTn0tbG9nZ2luZyAke1BOfS1tYWlsYm94ICR7UE59LW1hdGggJHtQTn0tbWltZSAke1BOfS1tbWFwICR7UE59LW11bHRpcHJvY2Vzc2luZyAke1BOfS1uZXRjbGllbnQgJHtQTn0tbmV0c2VydmVyICR7UE59LW51bWJlcnMgJHtQTn0tcGlja2xlICR7UE59LXBrZ3V0aWwgJHtQTn0tcHByaW50ICR7UE59LXByb2ZpbGUgJHtQTn0tcHlkb2MgJHtQTn0tcmUgJHtQTn0tcmVhZGxpbmUgJHtQTn0tcmVwcmxpYiAke1BOfS1yZXNvdXJjZSAke1BOfS1zaGVsbCAke1BOfS1zbXRwZCAke1BOfS1zcWxpdGUzICR7UE59LXNxbGl0ZTMtdGVzdHMgJHtQTn0tc3RyaW5nb2xkICR7UE59LXN1YnByb2Nlc3MgJHtQTn0tc3lzbG9nICR7UE59LXRlcm1pbmFsICR7UE59LXRlc3RzICR7UE59LXRleHR1dGlscyAke1BOfS10aHJlYWRpbmcgJHtQTn0tdGtpbnRlciAke1BOfS11bml0dGVzdCAke1BOfS11bml4YWRtaW4gJHtQTn0teG1sICR7UE59LXhtbHJwYyAgIgorUkRFUEVORFNfJHtQTn0tbW9kdWxlcz0iJHtQTn0tMnRvMyAke1BOfS1hcmdwYXJzZSAke1BOfS1hc3luY2lvICR7UE59LWF1ZGlvICR7UE59LWNvZGVjcyAke1BOfS1jb21waWxlICR7UE59LWNvbXByZXNzaW9uICR7UE59LWNvcmUgJHtQTn0tY3J5cHQgJHtQTn0tY3R5cGVzICR7UE59LWN1cnNlcyAke1BOfS1kYXRldGltZSAke1BOfS1kYiAke1BOfS1kZWJ1Z2dlciAke1BOfS1kaWZmbGliICR7UE59LWRpc3R1dGlscyAke1BOfS1kb2N0ZXN0ICR7UE59LWVtYWlsICR7UE59LWVudW0gJHtQTn0tZmNudGwgJHtQTn0tZ2RibSAke1BOfS1odG1sICR7UE59LWlkbGUgJHtQTn0taW1hZ2UgJHtQTn0taW1wb3J0bGliICR7UE59LWlvICR7UE59LWpzb24gJHtQTn0tbGFuZyAke1BOfS1sb2dnaW5nICR7UE59LW1haWxib3ggJHtQTn0tbWF0aCAke1BOfS1taW1lICR7UE59LW1tYXAgJHtQTn0tbXVsdGlwcm9jZXNzaW5nICR7UE59LW5ldGNsaWVudCAke1BOfS1uZXRzZXJ2ZXIgJHtQTn0tbnVtYmVycyAke1BOfS1waWNrbGUgJHtQTn0tcGtndXRpbCAke1BOfS1wcHJpbnQgJHtQTn0tcHJvZmlsZSAke1BOfS1weWRvYyAke1BOfS1yZSAke1BOfS1yZWFkbGluZSAke1BOfS1yZXBybGliICR7UE59LXJlc291cmNlICR7UE59LXNlbGVjdG9ycyAke1BOfS1zaGVsbCAke1BOfS1zaWduYWwgJHtQTn0tc210cGQgJHtQTn0tc3FsaXRlMyAke1BOfS1zcWxpdGUzLXRlc3RzICR7UE59LXN0cmluZ29sZCAke1BOfS1zdWJwcm9jZXNzICR7UE59LXN5c2xvZyAke1BOfS10ZXJtaW5hbCAke1BOfS10ZXN0cyAke1BOfS10ZXh0dXRpbHMgJHtQTn0tdGhyZWFkaW5nICR7UE59LXRraW50ZXIgJHtQTn0tdW5pdHRlc3QgJHtQTn0tdW5peGFkbWluICR7UE59LXhtbCAke1BOfS14bWxycGMgICIKIEFMTE9XX0VNUFRZXyR7UE59LW1vZHVsZXMgPSAiMSIKIAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXN5bmMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzeW5jLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzVjYjRkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzeW5jLmluYwpAQCAtMCwwICsxLDE1IEBACitTVU1NQVJZID0gIlB5dGhvbiBmcmFtZXdvcmsgdG8gcHJvY2VzcyBpbnRlcmRlcGVuZGVudCB0YXNrcyBpbiBhIHBvb2wgb2Ygd29ya2VycyIKK0hPTUVQQUdFID0gImh0dHA6Ly9naXRodWIuY29tL2dpdHB5dGhvbi1kZXZlbG9wZXJzL2FzeW5jIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO2JlZ2lubGluZT04O2VuZGxpbmU9ODttZDU9ODhkZjhlNzhiOWVkZmQ3NDQ5NTM4NjIxNzlmMmQxNGUiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9hL2FzeW5jL2FzeW5jLSR7UFZ9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI5YjA2YjU5OTdkZTIxNTRmM2JjMDI3M2Y4MGJjZWY2YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhYzY4OTRkODc2ZTQ1ODc4ZmFhZTQ5M2IwY2Y2MWQwZTI4ZWM0MTczMzQ0NDhhYzBhNmVhMjIyOWQ4MzQzMDUxIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9hc3luYy8iCisKK1MgPSAiJHtXT1JLRElSfS9hc3luYy0ke1BWfSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXN5bmNfMC42LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXN5bmNfMC42LjIuYmIKaW5kZXggYWQwYTYxNy4uZDg1NWU0MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzeW5jXzAuNi4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc3luY18wLjYuMi5iYgpAQCAtMSwxOSArMSw1IEBACi1TVU1NQVJZID0gIlB5dGhvbiBmcmFtZXdvcmsgdG8gcHJvY2VzcyBpbnRlcmRlcGVuZGVudCB0YXNrcyBpbiBhIHBvb2wgb2Ygd29ya2VycyIKLUhPTUVQQUdFID0gImh0dHA6Ly9naXRodWIuY29tL2dpdHB5dGhvbi1kZXZlbG9wZXJzL2FzeW5jIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO2JlZ2lubGluZT04O2VuZGxpbmU9ODttZDU9ODhkZjhlNzhiOWVkZmQ3NDQ5NTM4NjIxNzlmMmQxNGUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3B5cGkucHl0aG9uLm9yZy9wYWNrYWdlcy9zb3VyY2UvYS9hc3luYy9hc3luYy0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiOWIwNmI1OTk3ZGUyMTU0ZjNiYzAyNzNmODBiY2VmNmIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWM2ODk0ZDg3NmU0NTg3OGZhYWU0OTNiMGNmNjFkMGUyOGVjNDE3MzM0NDQ4YWMwYTZlYTIyMjlkODM0MzA1MSIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvYXN5bmMvIgotCi1TID0gIiR7V09SS0RJUn0vYXN5bmMtJHtQVn0iCityZXF1aXJlIHB5dGhvbi1hc3luYy5pbmMKIAogaW5oZXJpdCBzZXR1cHRvb2xzCiAKIFJERVBFTkRTXyR7UE59ICs9ICJweXRob24tdGhyZWFkaW5nIHB5dGhvbi1sYW5nIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYnVzXzEuMi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRidXNfMS4yLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzMTRkY2UuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRidXNfMS4yLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgdGhlIERCdXMgaW50ZXItcHJvY2VzcyBjb21tdW5pY2F0aW9uIHN5c3RlbSIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvU29mdHdhcmUvZGJ1cyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MGI4MzA0N2NlOWU5NDhiNjdjMGZhY2M1ZjIzMzQ3NmEiCi1ERVBFTkRTID0gImV4cGF0IGRidXMgZGJ1cy1nbGliIHZpcnR1YWwvbGliaW50bCBweXRob24tcHlyZXgtbmF0aXZlIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9kYnVzLXB5dGhvbi9kYnVzLXB5dGhvbi0ke1BWfS50YXIuZ3ogXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYjA5Y2QyZDFhMDU3Y2M0MzJjZTk0NGRlM2ZjMDZiZjciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTEyYzZjOGIyYmYzYTkzMDJmNzUxNjY5NTJjYmU0MWQ2YjM4YzM0NDFiYmM2NzY3ZGJkNDk4OTQyMzE2YzZkZiIKLVMgPSAiJHtXT1JLRElSfS9kYnVzLXB5dGhvbi0ke1BWfSIKLQotaW5oZXJpdCBkaXN0dXRpbHMtYmFzZSBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiIKLVBBQ0tBR0VDT05GSUdbZG9jc10gPSAiLS1lbmFibGUtaHRtbC1kb2NzLC0tZGlzYWJsZS1odG1sLWRvY3MscHl0aG9uLWRvY3V0aWxzLW5hdGl2ZSIKLVBBQ0tBR0VDT05GSUdbYXBpLWRvY3NdID0gIi0tZW5hYmxlLWFwaS1kb2NzLC0tZGlzYWJsZS1hcGktZG9jcyxweXRob24tZG9jdXRpbHMtbmF0aXZlIHB5dGhvbi1lcHlkb2MtbmF0aXZlIgotCi1leHBvcnQgQlVJTERfU1lTCi1leHBvcnQgSE9TVF9TWVMKLQotZXhwb3J0IFNUQUdJTkdfTElCRElSCi1leHBvcnQgU1RBR0lOR19JTkNESVIKLQotUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uLWlvIHB5dGhvbi1sb2dnaW5nIHB5dGhvbi1zdHJpbmdvbGQgcHl0aG9uLXRocmVhZGluZyBweXRob24teG1sIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9wa2djb25maWciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZG9jdXRpbHNfMC4xMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kb2N1dGlsc18wLjEyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Y2RhODhkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kb2N1dGlsc18wLjEyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotU1VNTUFSWSA9ICJUZXh0IHByb2Nlc3Npbmcgc3lzdGVtIGZvciBkb2N1bWVudGF0aW9uIgotSE9NRVBBR0UgPSAiaHR0cDovL2RvY3V0aWxzLnNvdXJjZWZvcmdlLm5ldCIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJQU0YgJiBCU0QtMi1DbGF1c2UgJiBHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcudHh0O21kNT1hNzIyZmJkYzIwMzQ3ZGI3YjY5MjIzNTk0ZGQ1NDU3NCIKLQotREVQRU5EUyA9ICJweXRob24iCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2RvY3V0aWxzL2RvY3V0aWxzLSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI0NjIyMjYzYjYyYzVjNzcxYzAzNTAyYWZhMzE1Nzc2OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjN2RiNzE3ODEwYWI2OTY1ZjY2YzhjZjAzOThhOThjOWQ4ZGY5ODJkYTM5YjRjZDdmMTYyOTExZWI4OTU5NmZhIgotCi1TID0gIiR7V09SS0RJUn0vZG9jdXRpbHMtJHtQVn0iCi0KLWluaGVyaXQgZGlzdHV0aWxzCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1naXQuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzYzA5N2EKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0LmluYwpAQCAtMCwwICsxLDIxIEBACitTVU1NQVJZID0gIlB5dGhvbiBsaWJyYXJ5IHVzZWQgdG8gaW50ZXJhY3Qgd2l0aCBHaXQgcmVwb3NpdG9yaWVzIgorREVTQ1JJUFRJT04gPSAiR2l0UHl0aG9uIHByb3ZpZGVzIG9iamVjdCBtb2RlbCByZWFkIGFuZCB3cml0ZSBhY2Nlc3MgdG8gXAorYSBnaXQgcmVwb3NpdG9yeS4gQWNjZXNzIHJlcG9zaXRvcnkgaW5mb3JtYXRpb24gY29udmVuaWVudGx5LCBhbHRlciB0aGUgXAoraW5kZXggZGlyZWN0bHksIGhhbmRsZSByZW1vdGVzLCBvciBnbyBkb3duIHRvIGxvdy1sZXZlbCBvYmplY3QgZGF0YWJhc2UgXAorYWNjZXNzIHdpdGggYmlnLWZpbGVzIHN1cHBvcnQuIgorSE9NRVBBR0UgPSAiaHR0cDovL2dpdGh1Yi5jb20vZ2l0cHl0aG9uLWRldmVsb3BlcnMvR2l0UHl0aG9uIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PThiOGQyNmMzN2MxZDVhMDRmOWIwMTg2ZWRiZWJjMTgzIgorCitTUkNfVVJJID0gImh0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy9zb3VyY2UvRy9HaXRQeXRob24vR2l0UHl0aG9uLSR7UFZ9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gImFhMGJhOWRmMGFiZTRjOGYzNWRkN2JiOWJlODVkNTZlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ4ZTdhZGFhY2NlZWRkM2QwNDNlNmNkMjU0NGY1N2RiZTAwYzUzZmMyNjM3NDg4MGI3Y2VhNjdmMzE4OGFhNjgiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL0dpdFB5dGhvbi8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvR2l0UHl0aG9uLyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKSIKKworUyA9ICIke1dPUktESVJ9L0dpdFB5dGhvbi0ke1BWfSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0XzEuMC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdpdF8xLjAuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjAwZjgwNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0XzEuMC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotU1VNTUFSWSA9ICJQeXRob24gbGlicmFyeSB1c2VkIHRvIGludGVyYWN0IHdpdGggR2l0IHJlcG9zaXRvcmllcyIKLURFU0NSSVBUSU9OID0gIkdpdFB5dGhvbiBwcm92aWRlcyBvYmplY3QgbW9kZWwgcmVhZCBhbmQgd3JpdGUgYWNjZXNzIHRvIFwKLWEgZ2l0IHJlcG9zaXRvcnkuIEFjY2VzcyByZXBvc2l0b3J5IGluZm9ybWF0aW9uIGNvbnZlbmllbnRseSwgYWx0ZXIgdGhlIFwKLWluZGV4IGRpcmVjdGx5LCBoYW5kbGUgcmVtb3Rlcywgb3IgZ28gZG93biB0byBsb3ctbGV2ZWwgb2JqZWN0IGRhdGFiYXNlIFwKLWFjY2VzcyB3aXRoIGJpZy1maWxlcyBzdXBwb3J0LiIKLUhPTUVQQUdFID0gImh0dHA6Ly9naXRodWIuY29tL2dpdHB5dGhvbi1kZXZlbG9wZXJzL0dpdFB5dGhvbiIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04YjhkMjZjMzdjMWQ1YTA0ZjliMDE4NmVkYmViYzE4MyIKLURFUEVORFMgPSAicHl0aG9uLWdpdGRiIgotCi1TUkNfVVJJID0gImh0dHA6Ly9weXBpLnB5dGhvbi5vcmcvcGFja2FnZXMvc291cmNlL0cvR2l0UHl0aG9uL0dpdFB5dGhvbi0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkOTJkOTZhOGRhMGZjNzdjZjE0MWQzZTE2MDg0ZTA5NCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4NWRlNzI1NTY3ODE0ODBhMzg4OTdhNzdkZTViNDU4YWUzODM4YjBmZDU4OTU5MzY3OWExYjVmMzRkMTgxZDg0IgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9HaXRQeXRob24vIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL0dpdFB5dGhvbi8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykiCi0KLVMgPSAiJHtXT1JLRElSfS9HaXRQeXRob24tJHtQVn0iCi0KLWluaGVyaXQgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uLWdpdGRiIHB5dGhvbi1sYW5nIHB5dGhvbi1pbyBweXRob24tc2hlbGwgcHl0aG9uLW1hdGggcHl0aG9uLXJlIHB5dGhvbi1zdWJwcm9jZXNzIHB5dGhvbi1zdHJpbmdvbGQgcHl0aG9uLXVuaXhhZG1pbiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0XzIuMC43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdpdF8yLjAuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDlkYmVhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdpdF8yLjAuNy5iYgpAQCAtMCwwICsxLDcgQEAKK3JlcXVpcmUgcHl0aG9uLWdpdC5pbmMKKworREVQRU5EUyA9ICJweXRob24tZ2l0ZGIiCisKK2luaGVyaXQgc2V0dXB0b29scworCitSREVQRU5EU18ke1BOfSArPSAicHl0aG9uLWdpdGRiIHB5dGhvbi1sYW5nIHB5dGhvbi1pbyBweXRob24tc2hlbGwgcHl0aG9uLW1hdGggcHl0aG9uLXJlIHB5dGhvbi1zdWJwcm9jZXNzIHB5dGhvbi1zdHJpbmdvbGQgcHl0aG9uLXVuaXhhZG1pbiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1naXRkYi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0ZGIuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4MTkzZmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0ZGIuaW5jCkBAIC0wLDAgKzEsMTYgQEAKK1NVTU1BUlkgPSAiQSBwdXJlLVB5dGhvbiBnaXQgb2JqZWN0IGRhdGFiYXNlIgorSE9NRVBBR0UgPSAiaHR0cDovL2dpdGh1Yi5jb20vZ2l0cHl0aG9uLWRldmVsb3BlcnMvZ2l0ZGIiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NTllNWVjYjEzMzM5YTkzNmVlZGY4MzI4MmVhZjQ1MjgiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9nL2dpdGRiL2dpdGRiLSR7UFZ9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gIjQ0ZTQzNjZiOGJkZmQzMDZiMDc1YzNhNTJjOTZhZTFhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImEzZWJiYzI3YmUwMzVhMmU4NzRlZDkwNGRmNTE2ZTM1ZjRhMjlhNzc4YTc2NDM4NWRlMDlkZTllMGYxMzk2NTgiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2dpdGRiLyIKKworUyA9ICIke1dPUktESVJ9L2dpdGRiLSR7UFZ9IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1naXRkYl8wLjYuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1naXRkYl8wLjYuNC5iYgppbmRleCBjODJkZjFlLi4xNzc3Mzk1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0ZGJfMC42LjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdpdGRiXzAuNi40LmJiCkBAIC0xLDIxICsxLDcgQEAKLVNVTU1BUlkgPSAiQSBwdXJlLVB5dGhvbiBnaXQgb2JqZWN0IGRhdGFiYXNlIgotSE9NRVBBR0UgPSAiaHR0cDovL2dpdGh1Yi5jb20vZ2l0cHl0aG9uLWRldmVsb3BlcnMvZ2l0ZGIiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NTllNWVjYjEzMzM5YTkzNmVlZGY4MzI4MmVhZjQ1MjgiCityZXF1aXJlIHB5dGhvbi1naXRkYi5pbmMKKwogREVQRU5EUyA9ICJweXRob24tYXN5bmMgcHl0aG9uLXNtbWFwIgogCi1TUkNfVVJJID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3BhY2thZ2VzL3NvdXJjZS9nL2dpdGRiL2dpdGRiLSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQ0ZTQzNjZiOGJkZmQzMDZiMDc1YzNhNTJjOTZhZTFhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImEzZWJiYzI3YmUwMzVhMmU4NzRlZDkwNGRmNTE2ZTM1ZjRhMjlhNzc4YTc2NDM4NWRlMDlkZTllMGYxMzk2NTgiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2dpdGRiLyIKLQotUyA9ICIke1dPUktESVJ9L2dpdGRiLSR7UFZ9IgotCiBpbmhlcml0IGRpc3R1dGlscwogCiBSREVQRU5EU18ke1BOfSArPSAicHl0aG9uLXNtbWFwIHB5dGhvbi1hc3luYyBweXRob24tbW1hcCBweXRob24tbGFuZyBweXRob24temxpYiBweXRob24taW8gcHl0aG9uLXNoZWxsIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pbWFnaW5nLzAwMDEtcHl0aG9uLWltYWdpbmctc2V0dXAucHktZm9yY2UtcGF0aHMtZm9yLXpsaWItZnJlZXR5cC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pbWFnaW5nLzAwMDEtcHl0aG9uLWltYWdpbmctc2V0dXAucHktZm9yY2UtcGF0aHMtZm9yLXpsaWItZnJlZXR5cC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjU3NTMwNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taW1hZ2luZy8wMDAxLXB5dGhvbi1pbWFnaW5nLXNldHVwLnB5LWZvcmNlLXBhdGhzLWZvci16bGliLWZyZWV0eXAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi1Gcm9tIDA3ZDRmMDk1YTllMjJhZTY3NmE4ZDY4MDczMTAxMTMxZTY1MDEyZGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgotRGF0ZTogVHVlLCAxNSBOb3YgMjAxMSAxMzoxNjo1NCArMDEwMAotU3ViamVjdDogW1BBVENIXSBweXRob24gaW1hZ2luZyBzZXR1cC5weTogZm9yY2UgcGF0aHMgZm9yIHpsaWIsIGZyZWV0eXBlIGFuZCBqcGVnIGFuZCBkb24ndCBhZGQgaG9zdCBwYXRocwotCi1TaWduZWQtb2ZmLWJ5OiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotLS0tCi0gc2V0dXAucHkgfCAgIDE0ICsrKy0tLS0tLS0tLS0tCi0gMSBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQotaW5kZXggNWQ0ZDUzYS4uYjFhMjJlYyAxMDA2NDQKLS0tLSBhL3NldHVwLnB5Ci0rKysgYi9zZXR1cC5weQotQEAgLTM0LDEwICszNCwxMCBAQCBkZWYgbGliaW5jbHVkZShyb290KToKLSAjIFRJRkZfUk9PVCA9IGxpYmluY2x1ZGUoIi9vcHQvdGlmZiIpCi0gCi0gVENMX1JPT1QgPSBOb25lCi0tSlBFR19ST09UID0gTm9uZQotLVpMSUJfUk9PVCA9IE5vbmUKLStKUEVHX1JPT1QgPSBvcy5lbnZpcm9uWydTVEFHSU5HX0xJQkRJUiddCi0rWkxJQl9ST09UID0gb3MuZW52aXJvblsnU1RBR0lOR19MSUJESVInXQotIFRJRkZfUk9PVCA9IE5vbmUKLS1GUkVFVFlQRV9ST09UID0gTm9uZQotK0ZSRUVUWVBFX1JPT1QgPSAgb3MuZW52aXJvblsnU1RBR0lOR19MSUJESVInXSwgb3MuZW52aXJvblsnU1RBR0lOR19JTkNESVInXQotIExDTVNfUk9PVCA9IE5vbmUKLSAKLSAjIEZJWE1FOiBhZGQgbWVjaGFuaXNtIHRvIGV4cGxpY2l0bHkgKmRpc2FibGUqIHRoZSB1c2Ugb2YgYSBsaWJyYXJ5Ci1AQCAtMTQ3LDcgKzE0Nyw2IEBAIGNsYXNzIHBpbF9idWlsZF9leHQoYnVpbGRfZXh0KToKLSAgICAgICAgICAgICBhZGRfZGlyZWN0b3J5KGxpYnJhcnlfZGlycywgIi9vcHQvbG9jYWwvbGliIikKLSAgICAgICAgICAgICBhZGRfZGlyZWN0b3J5KGluY2x1ZGVfZGlycywgIi9vcHQvbG9jYWwvaW5jbHVkZSIpCi0gCi0tICAgICAgICBhZGRfZGlyZWN0b3J5KGxpYnJhcnlfZGlycywgIi91c3IvbG9jYWwvbGliIikKLSAgICAgICAgICMgRklYTUU6IGNoZWNrIC9vcHQvc3R1ZmYgZGlyZWN0b3JpZXMgaGVyZT8KLSAKLSAgICAgICAgIHByZWZpeCA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigicHJlZml4IikKLUBAIC0yMDcsMTMgKzIwNiw2IEBAIGNsYXNzIHBpbF9idWlsZF9leHQoYnVpbGRfZXh0KToKLSAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4odGNsX2RpciwgInRrLmgiKSk6Ci0gICAgICAgICAgICAgICAgIGFkZF9kaXJlY3RvcnkoaW5jbHVkZV9kaXJzLCB0Y2xfZGlyKQotIAotLSAgICAgICAgIyBzdGFuZGFyZCBsb2NhdGlvbnMKLS0gICAgICAgIGFkZF9kaXJlY3RvcnkobGlicmFyeV9kaXJzLCAiL3Vzci9sb2NhbC9saWIiKQotLSAgICAgICAgYWRkX2RpcmVjdG9yeShpbmNsdWRlX2RpcnMsICIvdXNyL2xvY2FsL2luY2x1ZGUiKQotLQotLSAgICAgICAgYWRkX2RpcmVjdG9yeShsaWJyYXJ5X2RpcnMsICIvdXNyL2xpYiIpCi0tICAgICAgICBhZGRfZGlyZWN0b3J5KGluY2x1ZGVfZGlycywgIi91c3IvaW5jbHVkZSIpCi0tCi0gICAgICAgICAjCi0gICAgICAgICAjIGluc2VydCBuZXcgZGlycyAqYmVmb3JlKiBkZWZhdWx0IGxpYnMsIHRvIGF2b2lkIGNvbmZsaWN0cwotICAgICAgICAgIyBiZXR3ZWVuIFB5dGhvbiBQWUQgc3R1YiBsaWJzIGFuZCByZWFsIGxpYnJhcmllcwotLS0gCi0xLjcuMi41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pbWFnaW5nL2FsbG93LnRvLmRpc2FibGUuc29tZS5mZWF0dXJlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pbWFnaW5nL2FsbG93LnRvLmRpc2FibGUuc29tZS5mZWF0dXJlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk2MGVkNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taW1hZ2luZy9hbGxvdy50by5kaXNhYmxlLnNvbWUuZmVhdHVyZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi1BdCBsZWFzdCBsY21zIHdhc24ndCBkZXRlcm1pbmlzdGljbHkgZGV0ZWN0ZWQgZnJvbSBzeXNyb290LgotCi1UaGlzIHdpbGwgYWxsb3cgdG8gZXhwb3J0IExDTVNfRU5BQkxFRD1GYWxzZSB3aGVuIGxjbXMgaXNuJ3QgaW4gUEFDS0FHRUNPTkZJRy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci0KLWRpZmYgLXVOciBJbWFnaW5nLTEuMS43Lm9yaWcvc2V0dXAucHkgSW1hZ2luZy0xLjEuNy9zZXR1cC5weQotLS0tIEltYWdpbmctMS4xLjcub3JpZy9zZXR1cC5weQkyMDEzLTA3LTIyIDEwOjE3OjAyLjA4MTQ1NzA3NSArMDIwMAotKysrIEltYWdpbmctMS4xLjcvc2V0dXAucHkJMjAxMy0wNy0yMiAxMzoxMDowOS4wMjk3MDc0OTIgKzAyMDAKLUBAIC0zOSw2ICszOSwxMiBAQAotIFRJRkZfUk9PVCA9IE5vbmUKLSBGUkVFVFlQRV9ST09UID0gIG9zLmVudmlyb25bJ1NUQUdJTkdfTElCRElSJ10sIG9zLmVudmlyb25bJ1NUQUdJTkdfSU5DRElSJ10KLSBMQ01TX1JPT1QgPSBOb25lCi0rVENMX0VOQUJMRUQgPSBvcy5nZXRlbnYoJ1RDTF9FTkFCTEVEJywgIlRydWUiKQotK0pQRUdfRU5BQkxFRCA9IG9zLmdldGVudignSlBFR19FTkFCTEVEJywgIlRydWUiKQotK1pMSUJfRU5BQkxFRCA9IG9zLmdldGVudignWkxJQl9FTkFCTEVEJywgIlRydWUiKQotK1RJRkZfRU5BQkxFRCA9IG9zLmdldGVudignVElGRl9FTkFCTEVEJywgIlRydWUiKQotK0ZSRUVUWVBFX0VOQUJMRUQgPSBvcy5nZXRlbnYoJ0ZSRUVUWVBFX0VOQUJMRUQnLCAiVHJ1ZSIpCi0rTENNU19FTkFCTEVEID0gb3MuZ2V0ZW52KCdMQ01TX0VOQUJMRUQnLCAiVHJ1ZSIpCi0gCi0gIyBGSVhNRTogYWRkIG1lY2hhbmlzbSB0byBleHBsaWNpdGx5ICpkaXNhYmxlKiB0aGUgdXNlIG9mIGEgbGlicmFyeQotIAotQEAgLTIyMCwyMiArMjI2LDIyIEBACi0gICAgICAgICAgICAgemxpYiA9IGpwZWcgPSB0aWZmID0gZnJlZXR5cGUgPSB0Y2wgPSB0ayA9IGxjbXMgPSBOb25lCi0gICAgICAgICBmZWF0dXJlID0gZmVhdHVyZSgpCi0gCi0tICAgICAgICBpZiBmaW5kX2luY2x1ZGVfZmlsZShzZWxmLCAiemxpYi5oIik6Ci0rICAgICAgICBpZiBaTElCX0VOQUJMRUQgPT0gJ1RydWUnIGFuZCBmaW5kX2luY2x1ZGVfZmlsZShzZWxmLCAiemxpYi5oIik6Ci0gICAgICAgICAgICAgaWYgZmluZF9saWJyYXJ5X2ZpbGUoc2VsZiwgInoiKToKLSAgICAgICAgICAgICAgICAgZmVhdHVyZS56bGliID0gInoiCi0gICAgICAgICAgICAgZWxpZiBzeXMucGxhdGZvcm0gPT0gIndpbjMyIiBhbmQgZmluZF9saWJyYXJ5X2ZpbGUoc2VsZiwgInpsaWIiKToKLSAgICAgICAgICAgICAgICAgZmVhdHVyZS56bGliID0gInpsaWIiICMgYWx0ZXJuYXRpdmUgbmFtZQotIAotLSAgICAgICAgaWYgZmluZF9pbmNsdWRlX2ZpbGUoc2VsZiwgImpwZWdsaWIuaCIpOgotKyAgICAgICAgaWYgSlBFR19FTkFCTEVEID09ICdUcnVlJyBhbmQgZmluZF9pbmNsdWRlX2ZpbGUoc2VsZiwgImpwZWdsaWIuaCIpOgotICAgICAgICAgICAgIGlmIGZpbmRfbGlicmFyeV9maWxlKHNlbGYsICJqcGVnIik6Ci0gICAgICAgICAgICAgICAgIGZlYXR1cmUuanBlZyA9ICJqcGVnIgotICAgICAgICAgICAgIGVsaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIgYW5kIGZpbmRfbGlicmFyeV9maWxlKHNlbGYsICJsaWJqcGVnIik6Ci0gICAgICAgICAgICAgICAgIGZlYXR1cmUuanBlZyA9ICJsaWJqcGVnIiAjIGFsdGVybmF0aXZlIG5hbWUKLSAKLS0gICAgICAgIGlmIGZpbmRfbGlicmFyeV9maWxlKHNlbGYsICJ0aWZmIik6Ci0rICAgICAgICBpZiBUSUZGX0VOQUJMRUQgPT0gJ1RydWUnIGFuZCBmaW5kX2xpYnJhcnlfZmlsZShzZWxmLCAidGlmZiIpOgotICAgICAgICAgICAgIGZlYXR1cmUudGlmZiA9ICJ0aWZmIgotIAotLSAgICAgICAgaWYgZmluZF9saWJyYXJ5X2ZpbGUoc2VsZiwgImZyZWV0eXBlIik6Ci0rICAgICAgICBpZiBGUkVFVFlQRV9FTkFCTEVEID09ICdUcnVlJyBhbmQgZmluZF9saWJyYXJ5X2ZpbGUoc2VsZiwgImZyZWV0eXBlIik6Ci0gICAgICAgICAgICAgIyBsb29rIGZvciBmcmVldHlwZTIgaW5jbHVkZSBmaWxlcwotICAgICAgICAgICAgIGZyZWV0eXBlX3ZlcnNpb24gPSAwCi0gICAgICAgICAgICAgZm9yIGRpciBpbiBzZWxmLmNvbXBpbGVyLmluY2x1ZGVfZGlyczoKLUBAIC0yNTYsMTEgKzI2MiwxMSBAQAotICAgICAgICAgICAgICAgICBpZiBkaXI6Ci0gICAgICAgICAgICAgICAgICAgICBhZGRfZGlyZWN0b3J5KHNlbGYuY29tcGlsZXIuaW5jbHVkZV9kaXJzLCBkaXIsIDApCi0gCi0tICAgICAgICBpZiBmaW5kX2luY2x1ZGVfZmlsZShzZWxmLCAibGNtcy5oIik6Ci0rICAgICAgICBpZiBMQ01TX0VOQUJMRUQgPT0gJ1RydWUnIGFuZCBmaW5kX2luY2x1ZGVfZmlsZShzZWxmLCAibGNtcy5oIik6Ci0gICAgICAgICAgICAgaWYgZmluZF9saWJyYXJ5X2ZpbGUoc2VsZiwgImxjbXMiKToKLSAgICAgICAgICAgICAgICAgZmVhdHVyZS5sY21zID0gImxjbXMiCi0gCi0tICAgICAgICBpZiBfdGtpbnRlciBhbmQgZmluZF9pbmNsdWRlX2ZpbGUoc2VsZiwgInRrLmgiKToKLSsgICAgICAgIGlmIFRDTF9FTkFCTEVEID09ICdUcnVlJyBhbmQgX3RraW50ZXIgYW5kIGZpbmRfaW5jbHVkZV9maWxlKHNlbGYsICJ0ay5oIik6Ci0gICAgICAgICAgICAgIyB0aGUgbGlicmFyeSBuYW1lcyBtYXkgdmFyeSBzb21ld2hhdCAoZS5nLiB0Y2w4NCBvciB0Y2w4LjQpCi0gICAgICAgICAgICAgdmVyc2lvbiA9IFRDTF9WRVJTSU9OWzBdICsgVENMX1ZFUlNJT05bMl0KLSAgICAgICAgICAgICBpZiBmaW5kX2xpYnJhcnlfZmlsZShzZWxmLCAidGNsIiArIHZlcnNpb24pOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWltYWdpbmcvZml4LWZyZWV0eXBlLWluY2x1ZGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWltYWdpbmcvZml4LWZyZWV0eXBlLWluY2x1ZGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZWNjNjNhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pbWFnaW5nL2ZpeC1mcmVldHlwZS1pbmNsdWRlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLUZyb20gYzYwNDBmNjE4ZDhmMjcwNmE3YjQ2ZDFjZGYzN2QxYTU4N2Y5NzAxZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFuZHJldyBTdHJvbW5vdiA8c3Ryb21ub3ZAZ21haWwuY29tPgotRGF0ZTogVGh1LCAyOCBOb3YgMjAxMyAxNjo1ODo0MyArMDQwMAotU3ViamVjdDogW1BBVENIXSBmaXggY29tcGlsaW5nIHdpdGggRnJlZVR5cGUgMi41LjEKLQotLS0tCi0gX2ltYWdpbmdmdC5jIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvX2ltYWdpbmdmdC5jIGIvX2ltYWdpbmdmdC5jCi1pbmRleCA0N2Q1MGJkLi5mMTk1NTViIDEwMDY0NAotLS0tIGEvX2ltYWdpbmdmdC5jCi0rKysgYi9faW1hZ2luZ2Z0LmMKLUBAIC01OSw3ICs1OSwxMSBAQCBzdHJ1Y3QgewotICAgICBjb25zdCBjaGFyKiBtZXNzYWdlOwotIH0gZnRfZXJyb3JzW10gPQotIAotKyNpZiBkZWZpbmVkKFVTRV9GUkVFVFlQRV8yXzEpCi0rI2luY2x1ZGUgRlRfRVJST1JTX0gKLSsjZWxzZQotICNpbmNsdWRlIDxmcmVldHlwZS9mdGVycm9ycy5oPgotKyNlbmRpZgotIAotIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0gLyogZm9udCBvYmplY3RzICovCi0tLSAKLTEuOC41LjEKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pbWFnaW5nXzEuMS43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWltYWdpbmdfMS4xLjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2NzgzMjguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWltYWdpbmdfMS4xLjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiBJbWFnaW5nIExpYnJhcnkgKFBJTCkiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT05MjtlbmRsaW5lPTEyMDttZDU9YzQzNzFhZjQ1NzlmMWU0ODljZjg4MWMxNDQzZGQ0ZWMiCi1ERVBFTkRTID0gImZyZWV0eXBlIGpwZWcgdGlmZiIKLVNSQ05BTUUgPSAiSW1hZ2luZyIKLVBSID0gInI1IgotCi1TUkNfVVJJID0gImh0dHA6Ly9lZmZib3Qub3JnL2Rvd25sb2Fkcy9JbWFnaW5nLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXB5dGhvbi1pbWFnaW5nLXNldHVwLnB5LWZvcmNlLXBhdGhzLWZvci16bGliLWZyZWV0eXAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYWxsb3cudG8uZGlzYWJsZS5zb21lLmZlYXR1cmVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1mcmVldHlwZS1pbmNsdWRlcy5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gImZjMTRhNTRlMWNlMDJhMDIyNWJlODg1NGJmYmE0NzhlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg5NWJjN2MyNDk4YzhlMWY5Yjk5OTM4ZjFhNDBkYzg2YjNmMTQ5NzQxZjEwNWNmN2M3YmQyZTA3MjU0MDUyMTEiCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKLQotIyBUaGVyZSBpc24ndCBlbmFibGUvZGlzYWJsZSBvcHRpb24sIGFuZCBsY21zIGlzIGluIG1ldGEtb2UsIGF0IGxlYXN0IG1ha2UgaXQgZXhwbGljaXQgd2hlbiBlbmFibGVkCi0jIHNldHVwLnB5IGFscmVhZHkgaGFzIEZJWE1FOiBhZGQgbWVjaGFuaXNtIHRvIGV4cGxpY2l0bHkgKmRpc2FibGUqIHRoZSB1c2Ugb2YgYSBsaWJyYXJ5Ci1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tsY21zXSA9ICIsLGxjbXMiCi0KLWluaGVyaXQgZGlzdHV0aWxzCi0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgZXhwb3J0IFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9Ci0gICAgZXhwb3J0IFNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9Ci0gICAgZXhwb3J0IExDTVNfRU5BQkxFRD0ke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdsY21zJywgJ1RydWUnLCAnRmFsc2UnLCBkKX0KLSAgICBkaXN0dXRpbHNfZG9fY29tcGlsZQotfQotCi1kb19pbnN0YWxsKCkgewotICAgIGV4cG9ydCBTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfQotICAgIGV4cG9ydCBTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfQotICAgIGV4cG9ydCBMQ01TX0VOQUJMRUQ9JHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbGNtcycsICdUcnVlJywgJ0ZhbHNlJywgZCl9Ci0gICAgZGlzdHV0aWxzX2RvX2luc3RhbGwKLSAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2RvYy8ke0JQTn0vaHRtbC8KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9SRUFETUUgJHtEfSR7ZGF0YWRpcn0vZG9jLyR7QlBOfS8KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9Eb2NzLyogJHtEfSR7ZGF0YWRpcn0vZG9jLyR7QlBOfS9odG1sLwotCi0gICAgIyBnZXQgcmlkIG9mICMhL3Vzci9sb2NhbC9iaW4vcHl0aG9uCi0gICAgc2VkIC1pIC1lICdzOi91c3IvbG9jYWwvYmluLzoke2JpbmRpcn0vZW52IDpnJyAke0R9JHtiaW5kaXJ9LyoKLX0KLQotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbi1sYW5nIHB5dGhvbi1zdHJpbmdvbGQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWFrby5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWFrby5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODVlYzIxNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYWtvLmluYwpAQCAtMCwwICsxLDE1IEBACitTVU1NQVJZID0gIlRlbXBsYXRpbmcgbGlicmFyeSBmb3IgUHl0aG9uIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTFiYjIxZmEyZDJmN2E1MzRjODg0Yjk5MDQzMGE2ODYzIgorCitTUkNfVVJJID0gImh0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy9zb3VyY2UvTS9NYWtvL01ha28tJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiYzVmYzMxYTMyM2RkNDk5MDY4M2QyZjJkYTAyZDRlMjAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmVkOTlkYmU0ZDBkZGIyN2EzM2VlNDkxMGQ4NzA4YWNhOWVmMWZlODU0ZTY2ODM4N2E5YWI5YTkwY2JmOTA1OSIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvbWFrby8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvTWFrby8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykiCisKK1MgPSAiJHtXT1JLRElSfS9NYWtvLSR7UFZ9IgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWFrb18xLjAuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYWtvXzEuMC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZWZkNzAwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYWtvXzEuMC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotU1VNTUFSWSA9ICJUZW1wbGF0aW5nIGxpYnJhcnkgZm9yIFB5dGhvbiIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kZWIzZmY4ZTRjMTdhYWY3YjgwODg5YjZiMmJmNGM4MyIKLQotU1JDX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9wYWNrYWdlcy9zb3VyY2UvTS9NYWtvL01ha28tJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYTc4ZjIwZjYzNjZhOGEwNjU5Y2U1NTMyZjg2MTRlNTMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzY0NGJjMGVlMzU5NjVkMmUxNDZkZGUzMTgyN2I4OTgyZWQ3MGE1ODI4MTA4NWZhYzQyODY5YTA5NzY0ZDM4YyIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvbWFrby8iCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvTWFrby8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykiCi0KLVMgPSAiJHtXT1JLRElSfS9NYWtvLSR7UFZ9IgotCi1pbmhlcml0IHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uLXRocmVhZGluZyBcCi0gICAgICAgICAgICAgICAgICBweXRob24tbmV0Y2xpZW50IFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1odG1sIFwKLSIKLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYWtvXzEuMC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1ha29fMS4wLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjMwMDQ0ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYWtvXzEuMC40LmJiCkBAIC0wLDAgKzEsMTcgQEAKK3JlcXVpcmUgcHl0aG9uLW1ha28uaW5jCisKK2luaGVyaXQgc2V0dXB0b29scworCitSREVQRU5EU18ke1BOfSA9ICJweXRob24tdGhyZWFkaW5nIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbi1uZXRjbGllbnQgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uLWh0bWwgXAorIgorUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCisjIFRoZSBzYW1lIHV0aWxpdHkgaXMgcGFja2FnZWQgaW4gcHl0aG9uMy1tYWtvLCBzbyBpdCB3b3VsZCBjb25mbGljdAorZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgcm0gLWYgJHtEfSR7YmluZGlyfS9tYWtvLXJlbmRlcgorICAgIHJtZGlyICR7RH0ke2JpbmRpcn0KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvMTItZGlzdHV0aWxzLXByZWZpeC1pcy1pbnNpZGUtc3RhZ2luZy1hcmVhLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS8xMi1kaXN0dXRpbHMtcHJlZml4LWlzLWluc2lkZS1zdGFnaW5nLWFyZWEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4OWFhZmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS8xMi1kaXN0dXRpbHMtcHJlZml4LWlzLWluc2lkZS1zdGFnaW5nLWFyZWEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi0jIFRoZSBwcm9wZXIgcHJlZml4IGlzIGluc2lkZSBvdXIgc3RhZ2luZyBhcmVhLgotIyBTaWduZWQtT2ZmOiBNaWNoYWVsICdNaWNrZXknIExhdWVyIDxtaWNrZXlAdmFuaWxsZS1tZWRpYS5kZT4KLSMgU2lnbmVkLW9mZi1ieTogUGhpbCBCbHVuZGVsbCA8cGhpbGJAZ251Lm9yZz4KLQotLS0tIFB5dGhvbi0yLjYuNi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weS5vcmlnCTIwMTItMDEtMDMgMTQ6MDI6MDMuMDI3MDA1Mjk2ICswMDAwCi0rKysgUHl0aG9uLTIuNi42L0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CTIwMTItMDEtMDMgMTQ6MDI6MzEuNTE3NjAxMDgxICswMDAwCi1AQCAtMTksOCArMTksOCBAQAotIGZyb20gZGlzdHV0aWxzLmVycm9ycyBpbXBvcnQgRGlzdHV0aWxzUGxhdGZvcm1FcnJvcgotIAotICMgVGhlc2UgYXJlIG5lZWRlZCBpbiBhIGNvdXBsZSBvZiBzcG90cywgc28ganVzdCBjb21wdXRlIHRoZW0gb25jZS4KLS1QUkVGSVggPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5wcmVmaXgpCi0tRVhFQ19QUkVGSVggPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5leGVjX3ByZWZpeCkKLStQUkVGSVggPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5wcmVmaXgpLnJlcGxhY2UoIG9zLmdldGVudigiQlVJTERfU1lTIiksIG9zLmdldGVudigiSE9TVF9TWVMiKSApCi0rRVhFQ19QUkVGSVggPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5leGVjX3ByZWZpeCkucmVwbGFjZSggb3MuZ2V0ZW52KCJCVUlMRF9TWVMiKSwgb3MuZ2V0ZW52KCJIT1NUX1NZUyIpICkKLSAKLSAjIFBhdGggdG8gdGhlIGJhc2UgZGlyZWN0b3J5IG9mIHRoZSBwcm9qZWN0LiBPbiBXaW5kb3dzIHRoZSBiaW5hcnkgbWF5Ci0gIyBsaXZlIGluIHByb2plY3QvUENCdWlsZDkuICBJZiB3ZSdyZSBkZWFsaW5nIHdpdGggYW4geDY0IFdpbmRvd3MgYnVpbGQsCi1AQCAtNzAsNyArNzAsNyBAQAotICAgICBzeXMuZXhlY19wcmVmaXggLS0gaS5lLiwgaWdub3JlICdwbGF0X3NwZWNpZmljJy4KLSAgICAgIiIiCi0gICAgIGlmIHByZWZpeCBpcyBOb25lOgotLSAgICAgICAgcHJlZml4ID0gcGxhdF9zcGVjaWZpYyBhbmQgRVhFQ19QUkVGSVggb3IgUFJFRklYCi0rICAgICAgICBwcmVmaXggPSBvcy5lbnZpcm9uWydTVEFHSU5HX0lOQ0RJUiddLnJzdHJpcCgnaW5jbHVkZScpCi0gCi0gICAgIGlmIG9zLm5hbWUgPT0gInBvc2l4IjoKLSAgICAgICAgIGlmIHB5dGhvbl9idWlsZDoKLUBAIC0xMTUsMTIgKzExNSwxNiBAQAotICAgICBJZiAncHJlZml4JyBpcyBzdXBwbGllZCwgdXNlIGl0IGluc3RlYWQgb2Ygc3lzLnByZWZpeCBvcgotICAgICBzeXMuZXhlY19wcmVmaXggLS0gaS5lLiwgaWdub3JlICdwbGF0X3NwZWNpZmljJy4KLSAgICAgIiIiCi0rICAgIGxpYl9iYXNlbmFtZSA9IG9zLmVudmlyb25bJ1NUQUdJTkdfTElCRElSJ10uc3BsaXQoJy8nKVstMV0KLSAgICAgaWYgcHJlZml4IGlzIE5vbmU6Ci0tICAgICAgICBwcmVmaXggPSBwbGF0X3NwZWNpZmljIGFuZCBFWEVDX1BSRUZJWCBvciBQUkVGSVgKLSsgICAgICAgIGlmIHBsYXRfc3BlY2lmaWM6Ci0rICAgICAgICAgICAgcHJlZml4ID0gb3MuZW52aXJvblsnU1RBR0lOR19MSUJESVInXS5yc3RyaXAobGliX2Jhc2VuYW1lKQotKyAgICAgICAgZWxzZToKLSsgICAgICAgICAgICBwcmVmaXggPSBQUkVGSVgKLSAKLSAgICAgaWYgb3MubmFtZSA9PSAicG9zaXgiOgotICAgICAgICAgbGlicHl0aG9uID0gb3MucGF0aC5qb2luKHByZWZpeCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGliIiwgInB5dGhvbiIgKyBnZXRfcHl0aG9uX3ZlcnNpb24oKSkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJfYmFzZW5hbWUsICJweXRob24iICsgZ2V0X3B5dGhvbl92ZXJzaW9uKCkpCi0gICAgICAgICBpZiBzdGFuZGFyZF9saWI6Ci0gICAgICAgICAgICAgcmV0dXJuIGxpYnB5dGhvbgotICAgICAgICAgZWxzZToKLUBAIC0yMTYsNyArMjIwLDcgQEAKLSAgICAgZWxzZToKLSAgICAgICAgICMgVGhlIG5hbWUgb2YgdGhlIGNvbmZpZy5oIGZpbGUgY2hhbmdlZCBpbiAyLjIKLSAgICAgICAgIGNvbmZpZ19oID0gJ3B5Y29uZmlnLmgnCi0tICAgIHJldHVybiBvcy5wYXRoLmpvaW4oaW5jX2RpciwgY29uZmlnX2gpCi0rICAgIHJldHVybiBvcy5wYXRoLmpvaW4oaW5jX2RpciwgY29uZmlnX2gpLnJlcGxhY2UoIG9zLmdldGVudigiQlVJTERfU1lTIiksIG9zLmdldGVudigiSE9TVF9TWVMiKSApCi0gCi0gCi0gZGVmIGdldF9tYWtlZmlsZV9maWxlbmFtZSgpOgotQEAgLTIyNSw3ICsyMjksNyBAQAotICAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5yZWFscGF0aChzeXMuZXhlY3V0YWJsZSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWFrZWZpbGUiKQotICAgICBsaWJfZGlyID0gZ2V0X3B5dGhvbl9saWIocGxhdF9zcGVjaWZpYz0xLCBzdGFuZGFyZF9saWI9MSkKLS0gICAgcmV0dXJuIG9zLnBhdGguam9pbihsaWJfZGlyLCAiY29uZmlnIiwgIk1ha2VmaWxlIikKLSsgICAgcmV0dXJuIG9zLnBhdGguam9pbihsaWJfZGlyLCAiY29uZmlnIiwgIk1ha2VmaWxlIikucmVwbGFjZSggb3MuZ2V0ZW52KCJCVUlMRF9TWVMiKSwgb3MuZ2V0ZW52KCJIT1NUX1NZUyIpICkKLSAKLSAKLSBkZWYgcGFyc2VfY29uZmlnX2goZnAsIGc9Tm9uZSk6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlL2F2b2lkX3BhcmFsbGVsX21ha2VfcmFjZXNfb25fcGdlbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvYXZvaWRfcGFyYWxsZWxfbWFrZV9yYWNlc19vbl9wZ2VuLnBhdGNoCmluZGV4IDUyNzllN2MuLmE1OTJlYTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvYXZvaWRfcGFyYWxsZWxfbWFrZV9yYWNlc19vbl9wZ2VuLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvYXZvaWRfcGFyYWxsZWxfbWFrZV9yYWNlc19vbl9wZ2VuLnBhdGNoCkBAIC00LDggKzQsOCBAQAogCiAtIEltcGxlbWVudHMgUmljaGFyZCBQdXJkaWUncyBpZGVhCiAKLVNpZ25lZC1PZmYtQnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgotU2lnbmVkLU9mZi1CeTogQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KK1NpZ25lZC1vZmYtYnk6IEFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyby5oZXJuYW5kZXpAbGludXguaW50ZWwuY29tPgogCiBJbmRleDogUHl0aG9uLTIuNy45L01ha2VmaWxlLnByZS5pbgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS9kZWJ1Zy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvZGVidWcucGF0Y2gKaW5kZXggNWVjMTBkNi4uMzYxNzg4MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS9kZWJ1Zy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlL2RlYnVnLnBhdGNoCkBAIC0xLDI0ICsxLDI3IEBACiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAotSW5kZXg6IFB5dGhvbi0yLjYuMS9MaWIvZGlzdHV0aWxzL3VuaXhjY29tcGlsZXIucHkKK0luZGV4OiBQeXRob24tMi43LjEyL0xpYi9kaXN0dXRpbHMvdW5peGNjb21waWxlci5weQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjYuMS5vcmlnL0xpYi9kaXN0dXRpbHMvdW5peGNjb21waWxlci5weQkyMDA5LTExLTEzIDE2OjA0OjU0LjAwMDAwMDAwMCArMDAwMAotKysrIFB5dGhvbi0yLjYuMS9MaWIvZGlzdHV0aWxzL3VuaXhjY29tcGlsZXIucHkJMjAwOS0xMS0xMyAxNjowNjoyNy4wMDAwMDAwMDAgKzAwMDAKLUBAIC0zMDAsNiArMzAwLDggQEAKLSAgICAgICAgIGR5bGliX2YgPSBzZWxmLmxpYnJhcnlfZmlsZW5hbWUobGliLCBsaWJfdHlwZT0nZHlsaWInKQotICAgICAgICAgc3RhdGljX2YgPSBzZWxmLmxpYnJhcnlfZmlsZW5hbWUobGliLCBsaWJfdHlwZT0nc3RhdGljJykKKy0tLSBQeXRob24tMi43LjEyLm9yaWcvTGliL2Rpc3R1dGlscy91bml4Y2NvbXBpbGVyLnB5CisrKysgUHl0aG9uLTIuNy4xMi9MaWIvZGlzdHV0aWxzL3VuaXhjY29tcGlsZXIucHkKK0BAIC0yNzgsNiArMjc4LDggQEAgY2xhc3MgVW5peENDb21waWxlcihDQ29tcGlsZXIpOgorIAorIAogIAogKyAgICAgICAgcHJpbnQgIkxvb2tpbmcgaW4gJXMgZm9yICVzIiAlIChsaWIsIGRpcnMpCiArCiAgICAgICAgICBmb3IgZGlyIGluIGRpcnM6CiAgICAgICAgICAgICAgc2hhcmVkID0gb3MucGF0aC5qb2luKGRpciwgc2hhcmVkX2YpCiAgICAgICAgICAgICAgZHlsaWIgPSBvcy5wYXRoLmpvaW4oZGlyLCBkeWxpYl9mKQotQEAgLTMwOSwxMCArMzExLDEzIEBACitAQCAtMjk4LDEyICszMDAsMTYgQEAgY2xhc3MgVW5peENDb21waWxlcihDQ29tcGlsZXIpOgogICAgICAgICAgICAgICMgYXNzdW1pbmcgdGhhdCAqYWxsKiBVbml4IEMgY29tcGlsZXJzIGRvLiAgQW5kIG9mIGNvdXJzZSBJJ20KICAgICAgICAgICAgICAjIGlnbm9yaW5nIGV2ZW4gR0NDJ3MgIi1zdGF0aWMiIG9wdGlvbi4gIFNvIHN1ZSBtZS4KICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhkeWxpYik6CiArICAgICAgICAgICAgICAgIHByaW50ICJGb3VuZCAlcyIgJSAoZHlsaWIpCiAgICAgICAgICAgICAgICAgIHJldHVybiBkeWxpYgorICAgICAgICAgICAgIGVsaWYgb3MucGF0aC5leGlzdHMoeGNvZGVfc3R1Yik6CisrICAgICAgICAgICAgICAgIHByaW50ICJGb3VuZCAlcyIgJSAoeGNvZGVfc3R1YikKKyAgICAgICAgICAgICAgICAgcmV0dXJuIHhjb2RlX3N0dWIKICAgICAgICAgICAgICBlbGlmIG9zLnBhdGguZXhpc3RzKHNoYXJlZCk6CiArICAgICAgICAgICAgICAgIHByaW50ICJGb3VuZCAlcyIgJSAoc2hhcmVkKQogICAgICAgICAgICAgICAgICByZXR1cm4gc2hhcmVkCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlL211bHRpbGliLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS9tdWx0aWxpYi5wYXRjaAppbmRleCA4Y2E4OWU3Li45MTZiNDBmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlL211bHRpbGliLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvbXVsdGlsaWIucGF0Y2gKQEAgLTEsNiArMSw2IEBACiBSZWJhc2VkIGZvciBQeXRob24gMi43LjkKIAotU2lnbmVkLU9mZi1CeTogQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4KIAogMjAxMS8wOS8yOQogVGhlIHB5dGhvbiByZWNpcGUgYnVpbGRpbmcgd2FzIGZhaWxpbmcgYmVjYXVzZSBweXRob24tbmF0aXZlIApAQCAtMTAsMTIgKzEwLDEyIEBACiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Utc3BlY2lmaWNdCiAKLVNpZ25lZC1PZmYtQnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgogCi1JbmRleDogUHl0aG9uLTIuNy45L0luY2x1ZGUvcHl0aG9ucnVuLmgKK0luZGV4OiBQeXRob24tMi43LjEyL0luY2x1ZGUvcHl0aG9ucnVuLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43Ljkub3JpZy9JbmNsdWRlL3B5dGhvbnJ1bi5oCi0rKysgUHl0aG9uLTIuNy45L0luY2x1ZGUvcHl0aG9ucnVuLmgKKy0tLSBQeXRob24tMi43LjEyLm9yaWcvSW5jbHVkZS9weXRob25ydW4uaAorKysrIFB5dGhvbi0yLjcuMTIvSW5jbHVkZS9weXRob25ydW4uaAogQEAgLTEwOCw2ICsxMDgsNyBAQCBQeUFQSV9GVU5DKGNoYXIgKikgUHlfR2V0UGF0aCh2b2lkKTsKICAvKiBJbiB0aGVpciBvd24gZmlsZXMgKi8KICBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0VmVyc2lvbih2b2lkKTsKQEAgLTI0LDEwICsyNCwxMCBAQAogIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRDb3B5cmlnaHQodm9pZCk7CiAgUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldENvbXBpbGVyKHZvaWQpOwogIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRCdWlsZEluZm8odm9pZCk7Ci1JbmRleDogUHl0aG9uLTIuNy45L0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CitJbmRleDogUHl0aG9uLTIuNy4xMi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuOS5vcmlnL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5Ci0rKysgUHl0aG9uLTIuNy45L0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CistLS0gUHl0aG9uLTIuNy4xMi5vcmlnL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CisrKysgUHl0aG9uLTIuNy4xMi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQogQEAgLTIyLDYgKzIyLDggQEAgZnJvbSBzaXRlIGltcG9ydCBVU0VSX0JBU0UKICBmcm9tIHNpdGUgaW1wb3J0IFVTRVJfU0lURQogIApAQCAtNDYsMTEgKzQ2LDExIEBACiAgICAgICAgICAnaGVhZGVycyc6ICckYmFzZS9pbmNsdWRlL3B5dGhvbiRweV92ZXJzaW9uX3Nob3J0LyRkaXN0X25hbWUnLAogICAgICAgICAgJ3NjcmlwdHMnOiAnJGJhc2UvYmluJywKICAgICAgICAgICdkYXRhJyAgIDogJyRiYXNlJywKLUluZGV4OiBQeXRob24tMi43LjkvTGliL3B5ZG9jLnB5CitJbmRleDogUHl0aG9uLTIuNy4xMi9MaWIvcHlkb2MucHkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43Ljkub3JpZy9MaWIvcHlkb2MucHkKLSsrKyBQeXRob24tMi43LjkvTGliL3B5ZG9jLnB5Ci1AQCAtMzgzLDcgKzM4Myw3IEBAIGNsYXNzIERvYzoKKy0tLSBQeXRob24tMi43LjEyLm9yaWcvTGliL3B5ZG9jLnB5CisrKysgUHl0aG9uLTIuNy4xMi9MaWIvcHlkb2MucHkKK0BAIC0zODQsNyArMzg0LDcgQEAgY2xhc3MgRG9jOgogIAogICAgICAgICAgZG9jbG9jID0gb3MuZW52aXJvbi5nZXQoIlBZVEhPTkRPQ1MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvbGlicmFyeSIpCkBAIC01OSwxMCArNTksMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiIrc3lzLnZlcnNpb25bMDozXSkKICAgICAgICAgIGlmIChpc2luc3RhbmNlKG9iamVjdCwgdHlwZShvcykpIGFuZAogICAgICAgICAgICAgIChvYmplY3QuX19uYW1lX18gaW4gKCdlcnJubycsICdleGNlcHRpb25zJywgJ2djJywgJ2ltcCcsCi1JbmRleDogUHl0aG9uLTIuNy45L0xpYi9zaXRlLnB5CitJbmRleDogUHl0aG9uLTIuNy4xMi9MaWIvc2l0ZS5weQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuOS5vcmlnL0xpYi9zaXRlLnB5Ci0rKysgUHl0aG9uLTIuNy45L0xpYi9zaXRlLnB5CistLS0gUHl0aG9uLTIuNy4xMi5vcmlnL0xpYi9zaXRlLnB5CisrKysgUHl0aG9uLTIuNy4xMi9MaWIvc2l0ZS5weQogQEAgLTI4OCwxMyArMjg4LDE5IEBAIGRlZiBnZXRzaXRlcGFja2FnZXMoKToKICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSBpbiAoJ29zMmVteCcsICdyaXNjb3MnKToKICAgICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsICJMaWIiLCAic2l0ZS1wYWNrYWdlcyIpKQpAQCAtODYsMTAgKzg2LDEwIEBACiAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gImRhcndpbiI6CiAgICAgICAgICAgICAgIyBmb3IgZnJhbWV3b3JrIGJ1aWxkcyAqb25seSogd2UgYWRkIHRoZSBzdGFuZGFyZCBBcHBsZQogICAgICAgICAgICAgICMgbG9jYXRpb25zLgotSW5kZXg6IFB5dGhvbi0yLjcuOS9MaWIvdGVzdC90ZXN0X2RsLnB5CitJbmRleDogUHl0aG9uLTIuNy4xMi9MaWIvdGVzdC90ZXN0X2RsLnB5CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy45Lm9yaWcvTGliL3Rlc3QvdGVzdF9kbC5weQotKysrIFB5dGhvbi0yLjcuOS9MaWIvdGVzdC90ZXN0X2RsLnB5CistLS0gUHl0aG9uLTIuNy4xMi5vcmlnL0xpYi90ZXN0L3Rlc3RfZGwucHkKKysrKyBQeXRob24tMi43LjEyL0xpYi90ZXN0L3Rlc3RfZGwucHkKIEBAIC00LDEwICs0LDExIEBACiAgaW1wb3J0IHVuaXR0ZXN0CiAgZnJvbSB0ZXN0LnRlc3Rfc3VwcG9ydCBpbXBvcnQgdmVyYm9zZSwgaW1wb3J0X21vZHVsZQpAQCAtMTA0LDEwICsxMDQsMTAgQEAKICAgICAgKCcvdXNyL2Jpbi9jeWd3aW4xLmRsbCcsICdnZXRwaWQnKSwKICAgICAgKCcvdXNyL2xpYi9saWJjLmR5bGliJywgJ2dldHBpZCcpLAogICAgICBdCi1JbmRleDogUHl0aG9uLTIuNy45L0xpYi90cmFjZS5weQorSW5kZXg6IFB5dGhvbi0yLjcuMTIvTGliL3RyYWNlLnB5CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy45Lm9yaWcvTGliL3RyYWNlLnB5Ci0rKysgUHl0aG9uLTIuNy45L0xpYi90cmFjZS5weQorLS0tIFB5dGhvbi0yLjcuMTIub3JpZy9MaWIvdHJhY2UucHkKKysrKyBQeXRob24tMi43LjEyL0xpYi90cmFjZS5weQogQEAgLTc1NCwxMCArNzU0LDEwIEBAIGRlZiBtYWluKGFyZ3Y9Tm9uZSk6CiAgICAgICAgICAgICAgICAgICMgc2hvdWxkIEkgYWxzbyBjYWxsIGV4cGFuZHVzZXI/IChhZnRlciBhbGwsIGNvdWxkIHVzZSAkSE9NRSkKICAKQEAgLTEyMSwxMSArMTIxLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iICsgc3lzLnZlcnNpb25bOjNdKSkKICAgICAgICAgICAgICAgICAgcyA9IG9zLnBhdGgubm9ybXBhdGgocykKICAgICAgICAgICAgICAgICAgaWdub3JlX2RpcnMuYXBwZW5kKHMpCi1JbmRleDogUHl0aG9uLTIuNy45L01ha2VmaWxlLnByZS5pbgorSW5kZXg6IFB5dGhvbi0yLjcuMTIvTWFrZWZpbGUucHJlLmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy45Lm9yaWcvTWFrZWZpbGUucHJlLmluCi0rKysgUHl0aG9uLTIuNy45L01ha2VmaWxlLnByZS5pbgotQEAgLTg3LDYgKzg3LDcgQEAgUFlfQ0ZMQUdTPQkkKENGTEFHUykgJChDUFBGTEFHUykgJChDRkxBRworLS0tIFB5dGhvbi0yLjcuMTIub3JpZy9NYWtlZmlsZS5wcmUuaW4KKysrKyBQeXRob24tMi43LjEyL01ha2VmaWxlLnByZS5pbgorQEAgLTkyLDYgKzkyLDcgQEAgUFlfQ0ZMQUdTPQkkKENGTEFHUykgJChDUFBGTEFHUykgJChDRkxBRwogIAogICMgTWFjaGluZS1kZXBlbmRlbnQgc3ViZGlyZWN0b3JpZXMKICBNQUNIREVQPQlATUFDSERFUEAKQEAgLTEzMyw3ICsxMzMsNyBAQAogIAogICMgTXVsdGlhcmNoIGRpcmVjdG9yeSAobWF5IGJlIGVtcHR5KQogIE1VTFRJQVJDSD0JQE1VTFRJQVJDSEAKLUBAIC0xMDYsNyArMTA3LDcgQEAgTElCRElSPQkJQGxpYmRpckAKK0BAIC0xMTEsNyArMTEyLDcgQEAgTElCRElSPQkJQGxpYmRpckAKICBNQU5ESVI9CQlAbWFuZGlyQAogIElOQ0xVREVESVI9CUBpbmNsdWRlZGlyQAogIENPTkZJTkNMVURFRElSPQkkKGV4ZWNfcHJlZml4KS9pbmNsdWRlCkBAIC0xNDIsNyArMTQyLDcgQEAKICAKICAjIERldGFpbGVkIGRlc3RpbmF0aW9uIGRpcmVjdG9yaWVzCiAgQklOTElCREVTVD0JJChMSUJESVIpL3B5dGhvbiQoVkVSU0lPTikKLUBAIC01OTcsNiArNTk4LDcgQEAgTW9kdWxlcy9nZXRwYXRoLm86ICQoc3JjZGlyKS9Nb2R1bGVzL2dldAorQEAgLTY2OSw2ICs2NzAsNyBAQCBNb2R1bGVzL2dldHBhdGgubzogJChzcmNkaXIpL01vZHVsZXMvZ2V0CiAgCQktREVYRUNfUFJFRklYPSciJChleGVjX3ByZWZpeCkiJyBcCiAgCQktRFZFUlNJT049JyIkKFZFUlNJT04pIicgXAogIAkJLURWUEFUSD0nIiQoVlBBVEgpIicgXApAQCAtMTUwLDcgKzE1MCw3IEBACiAgCQktbyAkQCAkKHNyY2RpcikvTW9kdWxlcy9nZXRwYXRoLmMKICAKICBNb2R1bGVzL3B5dGhvbi5vOiAkKHNyY2RpcikvTW9kdWxlcy9weXRob24uYwotQEAgLTYzOSw3ICs2NDEsNyBAQCAkKEFTVF9DKTogJChBU1RfQVNETCkgJChBU0RMR0VOX0ZJTEVTKQorQEAgLTcyMCw3ICs3MjIsNyBAQCAkKEFTVF9DKTogJChBU1RfQVNETCkgJChBU0RMR0VOX0ZJTEVTKQogIFB5dGhvbi9jb21waWxlLm8gUHl0aG9uL3N5bXRhYmxlLm8gUHl0aG9uL2FzdC5vOiAkKEdSQU1NQVJfSCkgJChBU1RfSCkKICAKICBQeXRob24vZ2V0cGxhdGZvcm0ubzogJChzcmNkaXIpL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCkBAIC0xNTksMjUgKzE1OSwyNSBAQAogIAogIFB5dGhvbi9pbXBvcnRkbC5vOiAkKHNyY2RpcikvUHl0aG9uL2ltcG9ydGRsLmMKICAJCSQoQ0MpIC1jICQoUFlfQ0ZMQUdTKSAtSSQoRExJTkNMRElSKSAtbyAkQCAkKHNyY2RpcikvUHl0aG9uL2ltcG9ydGRsLmMKLUluZGV4OiBQeXRob24tMi43LjkvTW9kdWxlcy9nZXRwYXRoLmMKK0luZGV4OiBQeXRob24tMi43LjEyL01vZHVsZXMvZ2V0cGF0aC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy45Lm9yaWcvTW9kdWxlcy9nZXRwYXRoLmMKLSsrKyBQeXRob24tMi43LjkvTW9kdWxlcy9nZXRwYXRoLmMKLUBAIC0xMTYsOSArMTE2LDExIEBACi0gI2RlZmluZSBFWEVDX1BSRUZJWCBQUkVGSVgKKy0tLSBQeXRob24tMi43LjEyLm9yaWcvTW9kdWxlcy9nZXRwYXRoLmMKKysrKyBQeXRob24tMi43LjEyL01vZHVsZXMvZ2V0cGF0aC5jCitAQCAtMTAwLDYgKzEwMCwxMyBAQAorICNlcnJvciAiUFJFRklYLCBFWEVDX1BSRUZJWCwgVkVSU0lPTiwgYW5kIFZQQVRIIG11c3QgYmUgY29uc3RhbnQgZGVmaW5lZCIKICAjZW5kaWYKICAKICsjZGVmaW5lIExJQl9QWVRIT04gTElCICIvcHl0aG9uIiBWRVJTSU9OCiArCi0gI2lmbmRlZiBQWVRIT05QQVRICi0tI2RlZmluZSBQWVRIT05QQVRIIFBSRUZJWCAiL2xpYi9weXRob24iIFZFUlNJT04gIjoiIFwKLS0gICAgICAgICAgICAgIEVYRUNfUFJFRklYICIvbGliL3B5dGhvbiIgVkVSU0lPTiAiL2xpYi1keW5sb2FkIgorKyNpZm5kZWYgUFlUSE9OUEFUSAogKyNkZWZpbmUgUFlUSE9OUEFUSCBQUkVGSVggIi8iIExJQl9QWVRIT04gIjoiIFwKLSsgICAgICAgICAgICAgIEVYRUNfUFJFRklYICIvIiBMSUJfUFlUSE9OICIvbGliLWR5bmxvYWQiCi0gI2VuZGlmCi0gCisrICAgICAgICBFWEVDX1BSRUZJWCAiLyIgTElCX1BZVEhPTiAiL2xpYi1keW5sb2FkIgorKyNlbmRpZgorKwogICNpZm5kZWYgTEFORE1BUksKLUBAIC0xMjksNyArMTMxLDcgQEAgc3RhdGljIGNoYXIgcHJlZml4W01BWFBBVEhMRU4rMV07CisgI2RlZmluZSBMQU5ETUFSSyAib3MucHkiCisgI2VuZGlmCitAQCAtMTA4LDcgKzExNSw3IEBAIHN0YXRpYyBjaGFyIHByZWZpeFtNQVhQQVRITEVOKzFdOwogIHN0YXRpYyBjaGFyIGV4ZWNfcHJlZml4W01BWFBBVEhMRU4rMV07CiAgc3RhdGljIGNoYXIgcHJvZ3BhdGhbTUFYUEFUSExFTisxXTsKICBzdGF0aWMgY2hhciAqbW9kdWxlX3NlYXJjaF9wYXRoID0gTlVMTDsKQEAgLTE4NiwxMCArMTg2LDEwIEBACiAgCiAgc3RhdGljIHZvaWQKICByZWR1Y2UoY2hhciAqZGlyKQotSW5kZXg6IFB5dGhvbi0yLjcuOS9QeXRob24vZ2V0cGxhdGZvcm0uYworSW5kZXg6IFB5dGhvbi0yLjcuMTIvUHl0aG9uL2dldHBsYXRmb3JtLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43Ljkub3JpZy9QeXRob24vZ2V0cGxhdGZvcm0uYwotKysrIFB5dGhvbi0yLjcuOS9QeXRob24vZ2V0cGxhdGZvcm0uYworLS0tIFB5dGhvbi0yLjcuMTIub3JpZy9QeXRob24vZ2V0cGxhdGZvcm0uYworKysrIFB5dGhvbi0yLjcuMTIvUHl0aG9uL2dldHBsYXRmb3JtLmMKIEBAIC0xMCwzICsxMCwxMyBAQCBQeV9HZXRQbGF0Zm9ybSh2b2lkKQogIHsKICAJcmV0dXJuIFBMQVRGT1JNOwpAQCAtMjA0LDEwICsyMDQsMTAgQEAKICt7CiArCXJldHVybiBMSUI7CiArfQotSW5kZXg6IFB5dGhvbi0yLjcuOS9QeXRob24vc3lzbW9kdWxlLmMKK0luZGV4OiBQeXRob24tMi43LjEyL1B5dGhvbi9zeXNtb2R1bGUuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuOS5vcmlnL1B5dGhvbi9zeXNtb2R1bGUuYwotKysrIFB5dGhvbi0yLjcuOS9QeXRob24vc3lzbW9kdWxlLmMKKy0tLSBQeXRob24tMi43LjEyLm9yaWcvUHl0aG9uL3N5c21vZHVsZS5jCisrKysgUHl0aG9uLTIuNy4xMi9QeXRob24vc3lzbW9kdWxlLmMKIEBAIC0xNDM3LDYgKzE0MzcsOCBAQCBfUHlTeXNfSW5pdCh2b2lkKQogICAgICAgICAgICAgICAgICAgICAgICAgIFB5U3RyaW5nX0Zyb21TdHJpbmcoUHlfR2V0Q29weXJpZ2h0KCkpKTsKICAgICAgU0VUX1NZU19GUk9NX1NUUklORygicGxhdGZvcm0iLApAQCAtMjE3LDExICsyMTcsMTEgQEAKICAgICAgU0VUX1NZU19GUk9NX1NUUklORygiZXhlY3V0YWJsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgUHlTdHJpbmdfRnJvbVN0cmluZyhQeV9HZXRQcm9ncmFtRnVsbFBhdGgoKSkpOwogICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJwcmVmaXgiLAotSW5kZXg6IFB5dGhvbi0yLjcuOS9jb25maWd1cmUuYWMKK0luZGV4OiBQeXRob24tMi43LjEyL2NvbmZpZ3VyZS5hYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuOS5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIFB5dGhvbi0yLjcuOS9jb25maWd1cmUuYWMKLUBAIC03MzYsNiArNzM2LDExIEBAIFN1bk9TKikKKy0tLSBQeXRob24tMi43LjEyLm9yaWcvY29uZmlndXJlLmFjCisrKysgUHl0aG9uLTIuNy4xMi9jb25maWd1cmUuYWMKK0BAIC03NTYsNiArNzU2LDExIEBAIFN1bk9TKikKICAgICAgOzsKICBlc2FjCiAgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlL25vaG9zdGxpYnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlL25vaG9zdGxpYnMucGF0Y2gKaW5kZXggOGE0NTJlOS4uMDc4MDYwYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS9ub2hvc3RsaWJzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvbm9ob3N0bGlicy5wYXRjaApAQCAtMiw4ICsyLDggQEAKIAogMjAxNC8xMi8xNQogUmViYXNlZCBmb3IgcHl0aG9uLTIuNy45Ci1TaWduZWQtT2ZmLUJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgotU2lnbmVkLU9mZi1CeTogQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+CiAKIEluZGV4OiBQeXRob24tMi43Ljkvc2V0dXAucHkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmVfMi43LjExLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZV8yLjcuMTEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjMjA0YTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZV8yLjcuMTEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi5pbmMKLQotRVhUUkFOQVRJVkVQQVRIICs9ICJiemlwMi1uYXRpdmUiCi1ERVBFTkRTID0gIm9wZW5zc2wtbmF0aXZlIGJ6aXAyLXJlcGxhY2VtZW50LW5hdGl2ZSB6bGliLW5hdGl2ZSByZWFkbGluZS1uYXRpdmUgc3FsaXRlMy1uYXRpdmUiCi1QUiA9ICIke0lOQ19QUn0uMSIKLQotU1JDX1VSSSArPSAiXAotICAgICAgICAgICAgZmlsZTovLzA1LWVuYWJsZS1jdHlwZXMtY3Jvc3MtYnVpbGQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzEwLWRpc3R1dGlscy1maXgtc3dpZy1wYXJhbWV0ZXIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzExLWRpc3R1dGlscy1uZXZlci1tb2RpZnktc2hlYmFuZy1saW5lLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8xMi1kaXN0dXRpbHMtcHJlZml4LWlzLWluc2lkZS1zdGFnaW5nLWFyZWEucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2RlYnVnLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly91bml4Y2NvbXBpbGVyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9ub2hvc3RsaWJzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9tdWx0aWxpYi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vYWRkLW1kNW1vZHVsZS1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9idWlsZGRpci5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcGFyYWxsZWwtbWFrZWluc3QtY3JlYXRlLWJpbmRpci5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcmV2ZXJ0X3VzZV9vZl9zeXNjb25maWdkYXRhLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9hdm9pZF9wYXJhbGxlbF9tYWtlX3JhY2VzX29uX3BnZW4ucGF0Y2ggXAotICAgICAgICAgICAiCi1TID0gIiR7V09SS0RJUn0vUHl0aG9uLSR7UFZ9IgotCi1GSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS8ke1BOfToiCi0KLWluaGVyaXQgbmF0aXZlCi0KLVJQUk9WSURFUyArPSAicHl0aG9uLWRpc3R1dGlscy1uYXRpdmUgcHl0aG9uLWNvbXByZXNzaW9uLW5hdGl2ZSBweXRob24tdGV4dHV0aWxzLW5hdGl2ZSBweXRob24tY29kZWNzLW5hdGl2ZSBweXRob24tY29yZS1uYXRpdmUgcHl0aG9uLXVuaXR0ZXN0LW5hdGl2ZSIKLQotRVhUUkFfT0VDT05GX2FwcGVuZCA9ICIgLS1iaW5kaXI9JHtiaW5kaXJ9LyR7UE59IgotCi1FWFRSQV9PRU1BS0UgPSAnXAotICBCVUlMRF9TWVM9IiIgXAotICBIT1NUX1NZUz0iIiBcCi0gIExJQkM9IiIgXAotICBTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0gXAotICBTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSX05BVElWRX0gXAotJwotCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotCWF1dG9yZWNvbmYgLS12ZXJib3NlIC0taW5zdGFsbCAtLWZvcmNlIC0tZXhjbHVkZT1hdXRvcG9pbnQgLi4vUHl0aG9uLSR7UFZ9L01vZHVsZXMvX2N0eXBlcy9saWJmZmkKLX0KLQotZG9faW5zdGFsbCgpIHsKLQlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKLQlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vJHtQTn0KLQlpbnN0YWxsIC1tIDA3NTUgUGFyc2VyL3BnZW4gJHtEfSR7YmluZGlyfS8ke1BOfQotCi0JIyBNYWtlIHN1cmUgd2UgdXNlIC91c3IvYmluL2VudiBweXRob24KLQlmb3IgUFlUSFNDUklQVCBpbiBgZ3JlcCAtcklsICR7YmluZGlyfS8ke1BOfS9weXRob24gJHtEfSR7YmluZGlyfS8ke1BOfWA7IGRvCi0JCXNlZCAtaSAtZSAnMXN8XiMhLip8IyEvdXNyL2Jpbi9lbnYgcHl0aG9ufCcgJFBZVEhTQ1JJUFQKLQlkb25lCi0KLQkjIEFkZCBhIHN5bWxpbmsgdG8gdGhlIG5hdGl2ZSBQeXRob24gc28gdGhhdCBzY3JpcHRzIGNhbiBqdXN0IGludm9rZQotCSMgIm5hdGl2ZXB5dGhvbiIgYW5kIGdldCB0aGUgcmlnaHQgb25lIHdpdGhvdXQgbmVlZGluZyBhYnNvbHV0ZSBwYXRocwotCSMgKHRoZXNlIG9mdGVuIGVuZCB1cCB0b28gbG9uZyBmb3IgdGhlICMhIHBhcnNlciBpbiB0aGUga2VybmVsIGFzIHRoZQotCSMgYnVmZmVyIGlzIDEyOCBieXRlcyBsb25nKS4KLQlsbiAtcyBweXRob24tbmF0aXZlL3B5dGhvbiAke0R9JHtiaW5kaXJ9L25hdGl2ZXB5dGhvbgotCi0JIyBXZSBkb24ndCB3YW50IG1vZHVsZXMgaW4gfi8ubG9jYWwgYmVpbmcgdXNlZCBpbiBwcmVmZXJlbmNlIHRvIHRob3NlCi0JIyBpbnN0YWxsZWQgaW4gdGhlIG5hdGl2ZSBzeXNyb290LCBzbyBkaXNhYmxlIHVzZXIgc2l0ZSBzdXBwb3J0LgotCXNlZCAtaSAtZSAncyxeXChFTkFCTEVfVVNFUl9TSVRFID0gXCkuKixcMUZhbHNlLCcgJHtEfSR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3NpdGUucHkKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmVfMi43LjEyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZV8yLjcuMTIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGU4M2NiZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmVfMi43LjEyLmJiCkBAIC0wLDAgKzEsNjEgQEAKK3JlcXVpcmUgcHl0aG9uLmluYworCitFWFRSQU5BVElWRVBBVEggKz0gImJ6aXAyLW5hdGl2ZSIKK0RFUEVORFMgPSAib3BlbnNzbC1uYXRpdmUgYnppcDItcmVwbGFjZW1lbnQtbmF0aXZlIHpsaWItbmF0aXZlIHJlYWRsaW5lLW5hdGl2ZSBzcWxpdGUzLW5hdGl2ZSBleHBhdC1uYXRpdmUiCitQUiA9ICIke0lOQ19QUn0uMSIKKworU1JDX1VSSSArPSAiXAorICAgICAgICAgICAgZmlsZTovLzA1LWVuYWJsZS1jdHlwZXMtY3Jvc3MtYnVpbGQucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzEwLWRpc3R1dGlscy1maXgtc3dpZy1wYXJhbWV0ZXIucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzExLWRpc3R1dGlscy1uZXZlci1tb2RpZnktc2hlYmFuZy1saW5lLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRpc3R1dGlscy1zZXQtdGhlLXByZWZpeC10by1iZS1pbnNpZGUtc3RhZ2luZy1kaXJlY3QucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2RlYnVnLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly91bml4Y2NvbXBpbGVyLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9ub2hvc3RsaWJzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9tdWx0aWxpYi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vYWRkLW1kNW1vZHVsZS1zdXBwb3J0LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9idWlsZGRpci5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcGFyYWxsZWwtbWFrZWluc3QtY3JlYXRlLWJpbmRpci5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcmV2ZXJ0X3VzZV9vZl9zeXNjb25maWdkYXRhLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTID0gIiR7V09SS0RJUn0vUHl0aG9uLSR7UFZ9IgorCitGSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS8ke1BOfToiCisKK2luaGVyaXQgbmF0aXZlCisKK1JQUk9WSURFUyArPSAicHl0aG9uLWRpc3R1dGlscy1uYXRpdmUgcHl0aG9uLWNvbXByZXNzaW9uLW5hdGl2ZSBweXRob24tdGV4dHV0aWxzLW5hdGl2ZSBweXRob24tY29kZWNzLW5hdGl2ZSBweXRob24tY29yZS1uYXRpdmUgcHl0aG9uLXVuaXR0ZXN0LW5hdGl2ZSIKKworRVhUUkFfT0VDT05GX2FwcGVuZCA9ICIgLS1iaW5kaXI9JHtiaW5kaXJ9LyR7UE59IC0td2l0aC1zeXN0ZW0tZXhwYXQ9JHtTVEFHSU5HX0RJUl9IT1NUfSIKKworRVhUUkFfT0VNQUtFID0gJ1wKKyAgTElCQz0iIiBcCisgIFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSBcCisgIFNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfSBcCisnCisKK2RvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7CisJYXV0b3JlY29uZiAtLXZlcmJvc2UgLS1pbnN0YWxsIC0tZm9yY2UgLS1leGNsdWRlPWF1dG9wb2ludCAuLi9QeXRob24tJHtQVn0vTW9kdWxlcy9fY3R5cGVzL2xpYmZmaQorfQorCitkb19pbnN0YWxsKCkgeworCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAorCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfS8ke1BOfQorCWluc3RhbGwgLW0gMDc1NSBQYXJzZXIvcGdlbiAke0R9JHtiaW5kaXJ9LyR7UE59CisKKwkjIE1ha2Ugc3VyZSB3ZSB1c2UgL3Vzci9iaW4vZW52IHB5dGhvbgorCWZvciBQWVRIU0NSSVBUIGluIGBncmVwIC1ySWwgJHtiaW5kaXJ9LyR7UE59L3B5dGhvbiAke0R9JHtiaW5kaXJ9LyR7UE59YDsgZG8KKwkJc2VkIC1pIC1lICcxc3xeIyEuKnwjIS91c3IvYmluL2VudiBweXRob258JyAkUFlUSFNDUklQVAorCWRvbmUKKworCSMgQWRkIGEgc3ltbGluayB0byB0aGUgbmF0aXZlIFB5dGhvbiBzbyB0aGF0IHNjcmlwdHMgY2FuIGp1c3QgaW52b2tlCisJIyAibmF0aXZlcHl0aG9uIiBhbmQgZ2V0IHRoZSByaWdodCBvbmUgd2l0aG91dCBuZWVkaW5nIGFic29sdXRlIHBhdGhzCisJIyAodGhlc2Ugb2Z0ZW4gZW5kIHVwIHRvbyBsb25nIGZvciB0aGUgIyEgcGFyc2VyIGluIHRoZSBrZXJuZWwgYXMgdGhlCisJIyBidWZmZXIgaXMgMTI4IGJ5dGVzIGxvbmcpLgorCWxuIC1zIHB5dGhvbi1uYXRpdmUvcHl0aG9uICR7RH0ke2JpbmRpcn0vbmF0aXZlcHl0aG9uCisKKwkjIFdlIGRvbid0IHdhbnQgbW9kdWxlcyBpbiB+Ly5sb2NhbCBiZWluZyB1c2VkIGluIHByZWZlcmVuY2UgdG8gdGhvc2UKKwkjIGluc3RhbGxlZCBpbiB0aGUgbmF0aXZlIHN5c3Jvb3QsIHNvIGRpc2FibGUgdXNlciBzaXRlIHN1cHBvcnQuCisJc2VkIC1pIC1lICdzLF5cKEVOQUJMRV9VU0VSX1NJVEUgPSBcKS4qLFwxRmFsc2UsJyAke0R9JHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc2l0ZS5weQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5vc2VfMS4zLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbm9zZV8xLjMuNy5iYgppbmRleCBlYzYxNThmLi4zNzU3ZjNhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbm9zZV8xLjMuNy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbm9zZV8xLjMuNy5iYgpAQCAtNSw3ICs1LDcgQEAKIExJQ0VOU0UgPSAiTEdQTHYyLjEiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9sZ3BsLnR4dDttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMiCiAKLVNSQ19VUkkgPSAiaHR0cDovL3B5cGkucHl0aG9uLm9yZy9wYWNrYWdlcy9zb3VyY2Uvbi9ub3NlL25vc2UtJHtQVn0udGFyLmd6IgorU1JDX1VSSSA9ICJodHRwczovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvc291cmNlL24vbm9zZS9ub3NlLSR7UFZ9LnRhci5neiIKIAogU1JDX1VSSVttZDVzdW1dID0gIjRkM2FkMGZmMDdiNjEzNzNkMmNlZmM4OWM1ZDBiMjBiIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImYxYmZmZWY5Y2JjODI2MjhmNmU3ZDdiNDBkN2UyNTVhZWZhYTFhZGI2YTFiMWQyNmM2OWE4Yjc5ZTYyMDhhOTgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbnVtcHkvYWFyY2g2NC9fbnVtcHljb25maWcuaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1udW1weS9hYXJjaDY0L19udW1weWNvbmZpZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTFlNWExLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1udW1weS9hYXJjaDY0L19udW1weWNvbmZpZy5oCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotI2RlZmluZSBOUFlfSEFWRV9FTkRJQU5fSCAxCi0jZGVmaW5lIE5QWV9TSVpFT0ZfU0hPUlQgU0laRU9GX1NIT1JUCi0jZGVmaW5lIE5QWV9TSVpFT0ZfSU5UIFNJWkVPRl9JTlQKLSNkZWZpbmUgTlBZX1NJWkVPRl9MT05HIFNJWkVPRl9MT05HCi0jZGVmaW5lIE5QWV9TSVpFT0ZfRkxPQVQgNAotI2RlZmluZSBOUFlfU0laRU9GX0NPTVBMRVhfRkxPQVQgOAotI2RlZmluZSBOUFlfU0laRU9GX0RPVUJMRSA4Ci0jZGVmaW5lIE5QWV9TSVpFT0ZfQ09NUExFWF9ET1VCTEUgMTYKLSNkZWZpbmUgTlBZX1NJWkVPRl9MT05HRE9VQkxFIDE2Ci0jZGVmaW5lIE5QWV9TSVpFT0ZfQ09NUExFWF9MT05HRE9VQkxFIDMyCi0jZGVmaW5lIE5QWV9TSVpFT0ZfUFlfSU5UUFRSX1QgOAotI2RlZmluZSBOUFlfU0laRU9GX1BZX0xPTkdfTE9ORyA4Ci0jZGVmaW5lIE5QWV9TSVpFT0ZfTE9OR0xPTkcgOAotI2RlZmluZSBOUFlfTk9fU01QIDAKLSNkZWZpbmUgTlBZX0hBVkVfREVDTF9JU05BTgotI2RlZmluZSBOUFlfSEFWRV9ERUNMX0lTSU5GCi0jZGVmaW5lIE5QWV9IQVZFX0RFQ0xfSVNGSU5JVEUKLSNkZWZpbmUgTlBZX0hBVkVfREVDTF9TSUdOQklUCi0jZGVmaW5lIE5QWV9VU0VfQzk5X0NPTVBMRVggMQotI2RlZmluZSBOUFlfSEFWRV9DT01QTEVYX0RPVUJMRSAxCi0jZGVmaW5lIE5QWV9IQVZFX0NPTVBMRVhfRkxPQVQgMQotI2RlZmluZSBOUFlfSEFWRV9DT01QTEVYX0xPTkdfRE9VQkxFIDEKLSNkZWZpbmUgTlBZX0VOQUJMRV9TRVBBUkFURV9DT01QSUxBVElPTiAxCi0jZGVmaW5lIE5QWV9VU0VfQzk5X0ZPUk1BVFMgMQotI2RlZmluZSBOUFlfVklTSUJJTElUWV9ISURERU4gX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiaGlkZGVuIikpKQotI2RlZmluZSBOUFlfQUJJX1ZFUlNJT04gMHgwMTAwMDAwOQotI2RlZmluZSBOUFlfQVBJX1ZFUlNJT04gMHgwMDAwMDAwQQotCi0jaWZuZGVmIF9fU1REQ19GT1JNQVRfTUFDUk9TCi0jZGVmaW5lIF9fU1REQ19GT1JNQVRfTUFDUk9TIDEKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW51bXB5L2FkZC1nbGliYy1jaGVjay5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1udW1weS9hZGQtZ2xpYmMtY2hlY2sucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5NzY4ZjMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW51bXB5L2FkZC1nbGliYy1jaGVjay5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLURvbnQgcHVuaXNoIG11c2wgZm9yIGdsaWJjJ3MgdHJpZ25vbWV0ZXJpYyBmdW5jdGlvbnMgcHJvYmxlbXMKLWFkZGl0aW9uYWxseSBlbnN1cmUgdGhhdCBnbGliYyBzcGVjaWZpYyBtYWNyb3MgYXJlIG5vdCB1c2VkCi11bmNvbmRpdGlvbmFsbHkKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotSW5kZXg6IG51bXB5LTEuMTAuNC9udW1weS9jb3JlL3NyYy9wcml2YXRlL25weV9jb25maWcuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG51bXB5LTEuMTAuNC5vcmlnL251bXB5L2NvcmUvc3JjL3ByaXZhdGUvbnB5X2NvbmZpZy5oCi0rKysgbnVtcHktMS4xMC40L251bXB5L2NvcmUvc3JjL3ByaXZhdGUvbnB5X2NvbmZpZy5oCi1AQCAtNzUsMTAgKzc1LDEyIEBACi0gCi0gI2lmIGRlZmluZWQoSEFWRV9GRUFUVVJFU19IKQotICNpbmNsdWRlIDxmZWF0dXJlcy5oPgotKyNpZmRlZiBfX0dMSUJDX18KLSAjZGVmaW5lIFRSSUdfT0sgX19HTElCQ19QUkVSRVEoMiwgMTYpCi0gI2Vsc2UKLSAjZGVmaW5lIFRSSUdfT0sgMAotICNlbmRpZgotKyNlbmRpZgotIAotICNpZiAhVFJJR19PSwotICN1bmRlZiBIQVZFX0NBU0lOCi1JbmRleDogbnVtcHktMS4xMC40L251bXB5L2NvcmUvc3JjL25weW1hdGgvaWVlZTc1NC5jLnNyYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG51bXB5LTEuMTAuNC5vcmlnL251bXB5L2NvcmUvc3JjL25weW1hdGgvaWVlZTc1NC5jLnNyYwotKysrIG51bXB5LTEuMTAuNC9udW1weS9jb3JlL3NyYy9ucHltYXRoL2llZWU3NTQuYy5zcmMKLUBAIC02MTIsNyArNjEyLDcgQEAgdm9pZCBucHlfc2V0X2Zsb2F0c3RhdHVzX2ludmFsaWQodm9pZCkKLSB9Ci0gCi0gCi0tI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBcCi0rI2VsaWYgZGVmaW5lZChfX2xpbnV4X18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBcCi0gICAgICAgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9fTUlOR1czMl9fKSB8fCBcCi0gICAgICAgKGRlZmluZWQoX19GcmVlQlNEX18pICYmIChfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDIxMTQpKQotICMgIGluY2x1ZGUgPGZlbnYuaD4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1udW1weS9taXBzL19udW1weWNvbmZpZy5oIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW51bXB5L21pcHMvX251bXB5Y29uZmlnLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1ZDJiOGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW51bXB5L21pcHMvX251bXB5Y29uZmlnLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0jZGVmaW5lIE5QWV9IQVZFX0VORElBTl9IIDEKLSNkZWZpbmUgTlBZX1NJWkVPRl9TSE9SVCBTSVpFT0ZfU0hPUlQKLSNkZWZpbmUgTlBZX1NJWkVPRl9JTlQgU0laRU9GX0lOVAotI2RlZmluZSBOUFlfU0laRU9GX0xPTkcgU0laRU9GX0xPTkcKLSNkZWZpbmUgTlBZX1NJWkVPRl9GTE9BVCA0Ci0jZGVmaW5lIE5QWV9TSVpFT0ZfQ09NUExFWF9GTE9BVCA4Ci0jZGVmaW5lIE5QWV9TSVpFT0ZfRE9VQkxFIDgKLSNkZWZpbmUgTlBZX1NJWkVPRl9DT01QTEVYX0RPVUJMRSAxNgotI2RlZmluZSBOUFlfU0laRU9GX0xPTkdET1VCTEUgOAotI2RlZmluZSBOUFlfU0laRU9GX0NPTVBMRVhfTE9OR0RPVUJMRSAxNgotI2RlZmluZSBOUFlfRU5BQkxFX1NFUEFSQVRFX0NPTVBJTEFUSU9OIDEKLSNkZWZpbmUgTlBZX1NJWkVPRl9QWV9JTlRQVFJfVCA0Ci0jZGVmaW5lIE5QWV9TSVpFT0ZfUFlfTE9OR19MT05HIDgKLSNkZWZpbmUgTlBZX1NJWkVPRl9MT05HTE9ORyA4Ci0jZGVmaW5lIE5QWV9OT19TTVAgMAotI2RlZmluZSBOUFlfSEFWRV9ERUNMX0lTTkFOCi0jZGVmaW5lIE5QWV9IQVZFX0RFQ0xfSVNJTkYKLSNkZWZpbmUgTlBZX0hBVkVfREVDTF9JU0ZJTklURQotI2RlZmluZSBOUFlfSEFWRV9ERUNMX1NJR05CSVQKLSNkZWZpbmUgTlBZX1VTRV9DOTlfQ09NUExFWCAxCi0jZGVmaW5lIE5QWV9IQVZFX0NPTVBMRVhfRE9VQkxFIDEKLSNkZWZpbmUgTlBZX0hBVkVfQ09NUExFWF9GTE9BVCAxCi0jZGVmaW5lIE5QWV9IQVZFX0NPTVBMRVhfTE9OR19ET1VCTEUgMQotI2RlZmluZSBOUFlfVVNFX0M5OV9GT1JNQVRTIDEKLSNkZWZpbmUgTlBZX1ZJU0lCSUxJVFlfSElEREVOIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSkKLSNkZWZpbmUgTlBZX0FCSV9WRVJTSU9OIDB4MDEwMDAwMDkKLSNkZWZpbmUgTlBZX0FQSV9WRVJTSU9OIDB4MDAwMDAwMEEKLQotI2lmbmRlZiBfX1NURENfRk9STUFUX01BQ1JPUwotI2RlZmluZSBfX1NURENfRk9STUFUX01BQ1JPUyAxCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1udW1weS9taXBzNjQvX251bXB5Y29uZmlnLmggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbnVtcHkvbWlwczY0L19udW1weWNvbmZpZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTJiNWQwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1udW1weS9taXBzNjQvX251bXB5Y29uZmlnLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0jZGVmaW5lIE5QWV9IQVZFX0VORElBTl9IIDEKLSNkZWZpbmUgTlBZX1NJWkVPRl9TSE9SVCBTSVpFT0ZfU0hPUlQKLSNkZWZpbmUgTlBZX1NJWkVPRl9JTlQgU0laRU9GX0lOVAotI2RlZmluZSBOUFlfU0laRU9GX0xPTkcgU0laRU9GX0xPTkcKLSNkZWZpbmUgTlBZX1NJWkVPRl9GTE9BVCA0Ci0jZGVmaW5lIE5QWV9TSVpFT0ZfQ09NUExFWF9GTE9BVCA4Ci0jZGVmaW5lIE5QWV9TSVpFT0ZfRE9VQkxFIDgKLSNkZWZpbmUgTlBZX1NJWkVPRl9DT01QTEVYX0RPVUJMRSAxNgotI2RlZmluZSBOUFlfU0laRU9GX0xPTkdET1VCTEUgMTYKLSNkZWZpbmUgTlBZX1NJWkVPRl9DT01QTEVYX0xPTkdET1VCTEUgMzIKLSNkZWZpbmUgTlBZX0VOQUJMRV9TRVBBUkFURV9DT01QSUxBVElPTiAxCi0jZGVmaW5lIE5QWV9TSVpFT0ZfUFlfSU5UUFRSX1QgOAotI2RlZmluZSBOUFlfU0laRU9GX1BZX0xPTkdfTE9ORyA4Ci0jZGVmaW5lIE5QWV9TSVpFT0ZfTE9OR0xPTkcgOAotI2RlZmluZSBOUFlfTk9fU01QIDAKLSNkZWZpbmUgTlBZX0hBVkVfREVDTF9JU05BTgotI2RlZmluZSBOUFlfSEFWRV9ERUNMX0lTSU5GCi0jZGVmaW5lIE5QWV9IQVZFX0RFQ0xfSVNGSU5JVEUKLSNkZWZpbmUgTlBZX0hBVkVfREVDTF9TSUdOQklUCi0jZGVmaW5lIE5QWV9VU0VfQzk5X0NPTVBMRVggMQotI2RlZmluZSBOUFlfSEFWRV9DT01QTEVYX0RPVUJMRSAxCi0jZGVmaW5lIE5QWV9IQVZFX0NPTVBMRVhfRkxPQVQgMQotI2RlZmluZSBOUFlfSEFWRV9DT01QTEVYX0xPTkdfRE9VQkxFIDEKLSNkZWZpbmUgTlBZX1VTRV9DOTlfRk9STUFUUyAxCi0jZGVmaW5lIE5QWV9WSVNJQklMSVRZX0hJRERFTiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpCi0jZGVmaW5lIE5QWV9BQklfVkVSU0lPTiAweDAxMDAwMDA5Ci0jZGVmaW5lIE5QWV9BUElfVkVSU0lPTiAweDAwMDAwMDBBCi0KLSNpZm5kZWYgX19TVERDX0ZPUk1BVF9NQUNST1MKLSNkZWZpbmUgX19TVERDX0ZPUk1BVF9NQUNST1MgMQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbnVtcHkvbWlwc2VsL251bXB5Y29uZmlnLmggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbnVtcHkvbWlwc2VsL251bXB5Y29uZmlnLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0YmY2NTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW51bXB5L21pcHNlbC9udW1weWNvbmZpZy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotLyogY2F0IC4vc3JjLmxpbnV4LWk2ODYtMi41L251bXB5L2NvcmUvaW5jbHVkZS9udW1weS9udW1weWNvbmZpZy5oICovCi0vKgotICogICogVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBudW1weS9jb3JlL3NldHVwLnB5Yy4gRE8gTk9UIEVESVQgCi0gKiAgICovCi0jZGVmaW5lIE5QWV9TSVpFT0ZfU0hPUlQgMiAKLSNkZWZpbmUgTlBZX1NJWkVPRl9JTlQgNCAKLSNkZWZpbmUgTlBZX1NJWkVPRl9MT05HIDQgCi0jZGVmaW5lIE5QWV9TSVpFT0ZfRkxPQVQgNCAKLSNkZWZpbmUgTlBZX1NJWkVPRl9ET1VCTEUgOCAKLSNkZWZpbmUgTlBZX1NJWkVPRl9MT05HRE9VQkxFIDEyIAotI2RlZmluZSBOUFlfU0laRU9GX1BZX0lOVFBUUl9UIDQgCi0jZGVmaW5lIE5QWV9OT19TTVAgMAotCi0jZGVmaW5lIE5QWV9TSVpFT0ZfTE9OR0xPTkcgOCAKLSNkZWZpbmUgTlBZX1NJWkVPRl9QWV9MT05HX0xPTkcgOCAKLS8qICNkZWZpbmUgQ0hBUl9CSVQgOCAqLwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbnVtcHkvcG93ZXJwYy9fbnVtcHljb25maWcuaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1udW1weS9wb3dlcnBjL19udW1weWNvbmZpZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjQ1ZDViLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1udW1weS9wb3dlcnBjL19udW1weWNvbmZpZy5oCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotI2RlZmluZSBOUFlfSEFWRV9FTkRJQU5fSCAxCi0jZGVmaW5lIE5QWV9TSVpFT0ZfU0hPUlQgU0laRU9GX1NIT1JUCi0jZGVmaW5lIE5QWV9TSVpFT0ZfSU5UIFNJWkVPRl9JTlQKLSNkZWZpbmUgTlBZX1NJWkVPRl9MT05HIFNJWkVPRl9MT05HCi0jZGVmaW5lIE5QWV9TSVpFT0ZfRkxPQVQgNAotI2RlZmluZSBOUFlfU0laRU9GX0NPTVBMRVhfRkxPQVQgOAotI2RlZmluZSBOUFlfU0laRU9GX0RPVUJMRSA4Ci0jZGVmaW5lIE5QWV9TSVpFT0ZfQ09NUExFWF9ET1VCTEUgMTYKLSNkZWZpbmUgTlBZX1NJWkVPRl9MT05HRE9VQkxFIDE2Ci0jZGVmaW5lIE5QWV9TSVpFT0ZfQ09NUExFWF9MT05HRE9VQkxFIDMyCi0jZGVmaW5lIE5QWV9FTkFCTEVfU0VQQVJBVEVfQ09NUElMQVRJT04gMQotI2RlZmluZSBOUFlfU0laRU9GX1BZX0lOVFBUUl9UIDQKLSNkZWZpbmUgTlBZX1NJWkVPRl9QWV9MT05HX0xPTkcgOAotI2RlZmluZSBOUFlfU0laRU9GX0xPTkdMT05HIDgKLSNkZWZpbmUgTlBZX05PX1NNUCAwCi0jZGVmaW5lIE5QWV9IQVZFX0RFQ0xfSVNOQU4KLSNkZWZpbmUgTlBZX0hBVkVfREVDTF9JU0lORgotI2RlZmluZSBOUFlfSEFWRV9ERUNMX0lTRklOSVRFCi0jZGVmaW5lIE5QWV9IQVZFX0RFQ0xfU0lHTkJJVAotI2RlZmluZSBOUFlfVVNFX0M5OV9DT01QTEVYIDEKLSNkZWZpbmUgTlBZX0hBVkVfQ09NUExFWF9ET1VCTEUgMQotI2RlZmluZSBOUFlfSEFWRV9DT01QTEVYX0ZMT0FUIDEKLSNkZWZpbmUgTlBZX0hBVkVfQ09NUExFWF9MT05HX0RPVUJMRSAxCi0jZGVmaW5lIE5QWV9VU0VfQzk5X0ZPUk1BVFMgMQotI2RlZmluZSBOUFlfVklTSUJJTElUWV9ISURERU4gX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiaGlkZGVuIikpKQotI2RlZmluZSBOUFlfQUJJX1ZFUlNJT04gMHgwMTAwMDAwOQotI2RlZmluZSBOUFlfQVBJX1ZFUlNJT04gMHgwMDAwMDAwQQotCi0jaWZuZGVmIF9fU1REQ19GT1JNQVRfTUFDUk9TCi0jZGVmaW5lIF9fU1REQ19GT1JNQVRfTUFDUk9TIDEKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW51bXB5L3Bvd2VycGM2NC9fbnVtcHljb25maWcuaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1udW1weS9wb3dlcnBjNjQvX251bXB5Y29uZmlnLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlMmI1ZDAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW51bXB5L3Bvd2VycGM2NC9fbnVtcHljb25maWcuaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLSNkZWZpbmUgTlBZX0hBVkVfRU5ESUFOX0ggMQotI2RlZmluZSBOUFlfU0laRU9GX1NIT1JUIFNJWkVPRl9TSE9SVAotI2RlZmluZSBOUFlfU0laRU9GX0lOVCBTSVpFT0ZfSU5UCi0jZGVmaW5lIE5QWV9TSVpFT0ZfTE9ORyBTSVpFT0ZfTE9ORwotI2RlZmluZSBOUFlfU0laRU9GX0ZMT0FUIDQKLSNkZWZpbmUgTlBZX1NJWkVPRl9DT01QTEVYX0ZMT0FUIDgKLSNkZWZpbmUgTlBZX1NJWkVPRl9ET1VCTEUgOAotI2RlZmluZSBOUFlfU0laRU9GX0NPTVBMRVhfRE9VQkxFIDE2Ci0jZGVmaW5lIE5QWV9TSVpFT0ZfTE9OR0RPVUJMRSAxNgotI2RlZmluZSBOUFlfU0laRU9GX0NPTVBMRVhfTE9OR0RPVUJMRSAzMgotI2RlZmluZSBOUFlfRU5BQkxFX1NFUEFSQVRFX0NPTVBJTEFUSU9OIDEKLSNkZWZpbmUgTlBZX1NJWkVPRl9QWV9JTlRQVFJfVCA4Ci0jZGVmaW5lIE5QWV9TSVpFT0ZfUFlfTE9OR19MT05HIDgKLSNkZWZpbmUgTlBZX1NJWkVPRl9MT05HTE9ORyA4Ci0jZGVmaW5lIE5QWV9OT19TTVAgMAotI2RlZmluZSBOUFlfSEFWRV9ERUNMX0lTTkFOCi0jZGVmaW5lIE5QWV9IQVZFX0RFQ0xfSVNJTkYKLSNkZWZpbmUgTlBZX0hBVkVfREVDTF9JU0ZJTklURQotI2RlZmluZSBOUFlfSEFWRV9ERUNMX1NJR05CSVQKLSNkZWZpbmUgTlBZX1VTRV9DOTlfQ09NUExFWCAxCi0jZGVmaW5lIE5QWV9IQVZFX0NPTVBMRVhfRE9VQkxFIDEKLSNkZWZpbmUgTlBZX0hBVkVfQ09NUExFWF9GTE9BVCAxCi0jZGVmaW5lIE5QWV9IQVZFX0NPTVBMRVhfTE9OR19ET1VCTEUgMQotI2RlZmluZSBOUFlfVVNFX0M5OV9GT1JNQVRTIDEKLSNkZWZpbmUgTlBZX1ZJU0lCSUxJVFlfSElEREVOIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSkKLSNkZWZpbmUgTlBZX0FCSV9WRVJTSU9OIDB4MDEwMDAwMDkKLSNkZWZpbmUgTlBZX0FQSV9WRVJTSU9OIDB4MDAwMDAwMEEKLQotI2lmbmRlZiBfX1NURENfRk9STUFUX01BQ1JPUwotI2RlZmluZSBfX1NURENfRk9STUFUX01BQ1JPUyAxCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1udW1weV8xLjEwLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbnVtcHlfMS4xMC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTU2MmRjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1udW1weV8xLjEwLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotU1VNTUFSWSA9ICJBIHNvcGhpc3RpY2F0ZWQgTnVtZXJpYyBQcm9jZXNzaW5nIFBhY2thZ2UgZm9yIFB5dGhvbiIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJQU0YiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9OWY0ZTg4YjU3NDhlODMxM2NhYWYzM2QwODFjZTY1YTMiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L251bXB5L251bXB5LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LXNlYXJjaC11c3ItYW5kLXNvLW9uLWZvci1saWJyYXJpZXMtYnktZGVmYXVsdC0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLWJ1aWxkLXBhdGgtaW4tY29tbWVudHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYWRkLWdsaWJjLWNoZWNrLnBhdGNoIFwKLSAgICAgICAgICAgJHtDT05GSUdGSUxFU1VSSX0gIgotCi1DT05GSUdGSUxFU1VSSSA/PSAiIgotCi1DT05GSUdGSUxFU1VSSV9hYXJjaDY0ID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfYXJtID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9hcm1lYiA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfbWlwc2VsID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV94ODYgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX3g4Ni02NCA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX21pcHMgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9wb3dlcnBjID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfcG93ZXJwYzY0ID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfbWlwczY0ID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfbWlwczY0bjMyID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotCi1TID0gIiR7V09SS0RJUn0vbnVtcHktJHtQVn0iCi0KLWluaGVyaXQgZGlzdHV0aWxzCi0KLSMgTWFrZSB0aGUgYnVpbGQgZmFpbCBhbmQgcmVwbGFjZSAqY29uZmlnLmggd2l0aCBwcm9wZXIgb25lCi0jIFRoaXMgaXMgYSB1Z2x5LCB1Z2x5IGhhY2sgLSBLb2VuCi1kb19jb21waWxlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgIEJVSUxEX1NZUz0ke0JVSUxEX1NZU30gSE9TVF9TWVM9JHtIT1NUX1NZU30gXAotICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3B5dGhvbiBzZXR1cC5weSBidWlsZCAke0RJU1RVVElMU19CVUlMRF9BUkdTfSB8fCBcCi0gICAgdHJ1ZQotICAgIGNwICR7V09SS0RJUn0vKmNvbmZpZy5oICR7U30vYnVpbGQvJChscyAke1N9L2J1aWxkIHwgZ3JlcCBzcmMpL251bXB5L2NvcmUvaW5jbHVkZS9udW1weS8KLX0KLQotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9udW1weS9jb3JlL2xpYi8qLmEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5MGJiOTAzNDY1MmNlZmJhZGExOWNmN2QxNDFhNmE2MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmN2Y5MTg0MjA1NmE3Y2Y2ODBiMGVhZjhjZWZjNWU0NmM2OWUyNTIxZTY1MTEyOGQyZTZhYWFjY2VjODY1MmFlIgotCi0jIGluc3RhbGwgd2hhdCBpcyBuZWVkZWQgZm9yIG51bXB5LnRlc3QoKQotUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uLXVuaXR0ZXN0IFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1kaWZmbGliIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1wcHJpbnQgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLXBpY2tsZSBcCi0gICAgICAgICAgICAgICAgICBweXRob24tc2hlbGwgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLW5vc2UgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLWRvY3Rlc3QgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLWRhdGV0aW1lIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1kaXN0dXRpbHMgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLW1pc2MgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLW1tYXAgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLW5ldGNsaWVudCBcCi0gICAgICAgICAgICAgICAgICBweXRob24tbnVtYmVycyBcCi0gICAgICAgICAgICAgICAgICBweXRob24tcHlkb2MgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLXBrZ3V0aWwgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLWVtYWlsIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1zdWJwcm9jZXNzIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1jb21wcmVzc2lvbiBcCi0gICAgICAgICAgICAgICAgICBweXRob24tY3R5cGVzIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi10aHJlYWRpbmcgXAotIgotCi1SREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGV4cGVjdF80LjAuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wZXhwZWN0XzQuMC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjE0MmEzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wZXhwZWN0XzQuMC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotU1VNTUFSWSA9ICJBIFB1cmUgUHl0aG9uIEV4cGVjdCBsaWtlIE1vZHVsZSBmb3IgUHl0aG9uIgotSE9NRVBBR0UgPSAiaHR0cDovL3BleHBlY3QucmVhZHRoZWRvY3Mub3JnLyIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJJU0MiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02NmMyMzc4YTk2YjMwN2Q1NmJmYjNhOWU1OGVkYWZhOCIKLQotU1JDX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9wYWNrYWdlcy9zb3VyY2UvcC9wZXhwZWN0L3BleHBlY3QtJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjA1NmRmODFlNmNhNzA4MWYxMDE1YjRiMTQ3Yjk3N2I3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIzMjc5NWViY2FhZjJlMTIwMzk2ZGJiYWEzYTEyOWVkYTUxNzU3ZWVhYWUxOTExNTU4ZjRlZjhlZTQxNGZjNmMiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3BleHBlY3QiCi0KLVMgPSAiJHtXT1JLRElSfS9wZXhwZWN0LSR7UFZ9IgotCi1pbmhlcml0IGRpc3R1dGlscwotCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gICAgcHl0aG9uLWNvcmUgXAotICAgIHB5dGhvbi1pbyBcCi0gICAgcHl0aG9uLXRlcm1pbmFsIFwKLSAgICBweXRob24tcmVzb3VyY2UgXAotICAgIHB5dGhvbi1mY250bCBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBleHBlY3RfNC4yLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGV4cGVjdF80LjIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MmUwZmE4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBleHBlY3RfNC4yLjAuYmIKQEAgLTAsMCArMSwyOCBAQAorU1VNTUFSWSA9ICJBIFB1cmUgUHl0aG9uIEV4cGVjdCBsaWtlIE1vZHVsZSBmb3IgUHl0aG9uIgorSE9NRVBBR0UgPSAiaHR0cDovL3BleHBlY3QucmVhZHRoZWRvY3Mub3JnLyIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJJU0MiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0xYzdhNzI1MjUxODgwYWY4YzZhMTQ4MTgxNjY1Mzg1YiIKKworU1JDTkFNRSA9ICJwZXhwZWN0IgorCitTUkNfVVJJID0gImh0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy9zb3VyY2UvcC8ke1NSQ05BTUV9LyR7U1JDTkFNRX0tJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gIjgwNzFlYzVkZjBmM2Q1MTVkYWVkYWZhZDY3MmQxNjMyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJmNjgxNmI4Y2M4ZDMwMWE0OTllN2FkZjMzODgyOGIzOWJjNzU0OGViNjRkYmVkNGRkNDEwZWQ5M2Q5NWY4NTMiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3BleHBlY3QiCisKK1MgPSAiJHtXT1JLRElSfS9wZXhwZWN0LSR7UFZ9IgorCitpbmhlcml0IHNldHVwdG9vbHMKKworUkRFUEVORFNfJHtQTn0gPSAiXAorICAgIHB5dGhvbi1jb3JlIFwKKyAgICBweXRob24taW8gXAorICAgIHB5dGhvbi10ZXJtaW5hbCBcCisgICAgcHl0aG9uLXJlc291cmNlIFwKKyAgICBweXRob24tZmNudGwgXAorICAgIHB5dGhvbi1wdHlwcm9jZXNzIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHR5cHJvY2Vzc18wLjUuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wdHlwcm9jZXNzXzAuNS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzMWU1YTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHR5cHJvY2Vzc18wLjUuMS5iYgpAQCAtMCwwICsxLDIzIEBACitTVU1NQVJZID0gIlJ1biBhIHN1YnByb2Nlc3MgaW4gYSBwc2V1ZG8gdGVybWluYWwiCitIT01FUEFHRSA9ICJodHRwOi8vcHR5cHJvY2Vzcy5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIklTQyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWNmZGNkNTFmYTdkNTgwOGRhNGU3NDM0NmVlMzk0NDkwIgorCitTUkNOQU1FID0gInB0eXByb2Nlc3MiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9wLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiOTRlNTM3MTIyOTE0Y2M5ZWM5YzFlYWRjZDM2ZTczYTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDUzMGNlNjNhOTI5NWJmYWU3YmQwNmVkYzAyYjZhYTkzNTYxOWY0ODZmMGYxZGMwOTcyZjUxNjI2NWVlODFhNiIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcHR5cHJvY2VzcyIKKworUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCisKK2luaGVyaXQgc2V0dXB0b29scworCitSREVQRU5EU18ke1BOfSA9ICJcCisgICAgcHl0aG9uLWNvcmUgXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWNhaXJvXzEuMTAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWNhaXJvXzEuMTAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzBmZTI1Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljYWlyb18xLjEwLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgdGhlIENhaXJvIGNhbnZhcyBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL2NhaXJvZ3JhcGhpY3Mub3JnL3B5Y2Fpcm8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZyIKLVNFQ1RJT04gPSAicHl0aG9uLWRldmVsIgotTElDRU5TRSA9ICJMR1BMdjIuMSAmIE1QTC0xLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mMmUwNzFhYjcyOTc4NDMxYjI5NGEwZDY5NjMyNzQyMSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLUxHUEwtMi4xO21kNT1mYWQ5YjMzMzJiZTg5NGJhYjliYzUwMTU3Mjg2NGIyOSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLU1QTC0xLjE7bWQ1PWJmZTFmNzVkNjA2OTEyYTQxMTFjOTA3NDNkNmM3MzI1IgotCi0jIGNhaXJvID49IDEuOC44Ci1ERVBFTkRTID0gImNhaXJvIgotUFIgPSAicjIiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2NhaXJvZ3JhcGhpY3Mub3JnL3JlbGVhc2VzL3B5MmNhaXJvLSR7UFZ9LnRhci5iejIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyMDMzNzEzMmM0YWIwNmMxMTQ2YWQzODRkNTUzNzJjNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkMzA0MzlmMDZjMmVjMWEzOWUyNzQ2NGM2YzgyOGI2ZWZhY2UzYjIyZWUxN2IyZGUwNWRjNDA5ZTQyOWE3NDMxIgotCi1TID0gIiR7V09SS0RJUn0vcHkyY2Fpcm8tJHtQVn0iCi0KLWluaGVyaXQgZGlzdHV0aWxzIHBrZ2NvbmZpZwotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotZG9fY29uZmlndXJlKCkgewotCUJVSUxEX1NZUz0ke0JVSUxEX1NZU30gSE9TVF9TWVM9JHtIT1NUX1NZU30gLi93YWYgY29uZmlndXJlIC0tcHJlZml4PSR7RH0ke3ByZWZpeH0gLS1saWJkaXI9JHtEfSR7bGliZGlyfQotfQotCi1kb19jb21waWxlKCkgewotCS4vd2FmIGJ1aWxkICR7UEFSQUxMRUxfTUFLRX0KLX0KLQotZG9faW5zdGFsbCgpIHsKLQkuL3dhZiBpbnN0YWxsCi0Jc2VkIFwKLQkJLWUgJ3M6QHByZWZpeEA6JHtwcmVmaXh9OicgXAotCQktZSAnczpAVkVSU0lPTkA6JHtQVn06JyBcCi0JCS1lICdzOkBpbmNsdWRlZGlyQDoke2luY2x1ZGVkaXJ9OicgXAotCQlweWNhaXJvLnBjLmluID4gcHljYWlyby5wYwotCWluc3RhbGwgLW0gMDY0NCBweWNhaXJvLnBjICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnLwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Z29iamVjdF8zLjE4LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlnb2JqZWN0XzMuMTguMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTk4NzFmZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlnb2JqZWN0XzMuMTguMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIEdPYmplY3QgYmluZGluZ3MiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljNyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdub21lYmFzZSBkaXN0dXRpbHMtYmFzZSBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotREVQRU5EUyArPSAicHl0aG9uIGdsaWItMi4wIGdub21lLWNvbW1vbiIKLQotU1JDTkFNRT0icHlnb2JqZWN0IgotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzLyR7U1JDTkFNRX0vJHtAZ25vbWVfdmVyZGlyKCIke1BWfSIpfS8ke1NSQ05BTUV9LSR7UFZ9LnRhci54eiBcCi0gICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWFkZC1zeXNyb290LXBhdGgtdG8tR0lfREFUQURJUi1kb24tdC1zZS5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwYTk1NmYzZTc4NWUyM2IwZjEzNjgzMmYyZTU3YTg2MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyYTNjYWQxNTE3OTE2Yjc0ZTEzMWU2MDAyYzM4MjQzNjFhZWUwNjcxZmZiMGQ1NWRlZDExOTQ3N2ZjMWMyYzVmIgotCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtY2Fpcm8gLS13aXRoLXB5dGhvbj1weXRob24yLjciCi0KLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24tc2V0dXB0b29scyBweXRob24taW1wb3J0bGliIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cmV4LW5hdGl2ZV8wLjkuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXJleC1uYXRpdmVfMC45LjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4ZWYxYWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cmV4LW5hdGl2ZV8wLjkuOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotcmVxdWlyZSBweXRob24tcHlyZXhfJHtQVn0uYmIKLWluaGVyaXQgbmF0aXZlIHB5dGhvbm5hdGl2ZQotREVQRU5EUyA9ICJweXRob24tbmF0aXZlIgotUkRFUEVORFNfJHtQTn0gPSAiIgotUFIgPSAicjMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlyZXgvcHlyZXgtZml4LW9wdGltaXplZC1tb2RlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cmV4L3B5cmV4LWZpeC1vcHRpbWl6ZWQtbW9kZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzU4YzMyOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlyZXgvcHlyZXgtZml4LW9wdGltaXplZC1tb2RlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUluZGV4OiBQeXJleC0wLjkuOC40L1B5cmV4L0Rpc3R1dGlscy9leHRlbnNpb24ucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXJleC0wLjkuOC40Lm9yaWcvUHlyZXgvRGlzdHV0aWxzL2V4dGVuc2lvbi5weQotKysrIFB5cmV4LTAuOS44LjQvUHlyZXgvRGlzdHV0aWxzL2V4dGVuc2lvbi5weQotQEAgLTE1LDcgKzE1LDcgQEAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICB3YXJuaW5ncyA9IE5vbmUKLSAKLSBjbGFzcyBFeHRlbnNpb24oX0V4dGVuc2lvbi5FeHRlbnNpb24pOgotLSAgICBfRXh0ZW5zaW9uLkV4dGVuc2lvbi5fX2RvY19fICsgXAotKyAgICBfRXh0ZW5zaW9uLkV4dGVuc2lvbi5fX2RvY19fIG9yICIiICsgXAotICAgICAiIiJweXJleF9pbmNsdWRlX2RpcnMgOiBbc3RyaW5nXQotICAgICAgICAgbGlzdCBvZiBkaXJlY3RvcmllcyB0byBzZWFyY2ggZm9yIFB5cmV4IGhlYWRlciBmaWxlcyAoLnB4ZCkgKGluCi0gICAgICAgICBVbml4IGZvcm0gZm9yIHBvcnRhYmlsaXR5KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cmV4XzAuOS45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cmV4XzAuOS45LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNGRkMmU2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXJleF8wLjkuOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVNVTU1BUlkgPSAiTGFuZ3VhZ2UgZm9yIHdyaXRpbmcgUHl0aG9uIGV4dGVuc2lvbiBtb2R1bGVzIgotREVTQ1JJUFRJT04gPSAiUHlyZXggaXMgYSBsYW5ndWFnZSBzcGVjaWFsbHkgZGVzaWduZWQgZm9yIHdyaXRpbmcgUHl0aG9uIGV4dGVuc2lvbiBtb2R1bGVzLiBcCi1JdCdzIGRlc2lnbmVkIHRvIGJyaWRnZSB0aGUgZ2FwIGJldHdlZW4gdGhlIG5pY2UsIGhpZ2gtbGV2ZWwsIGVhc3ktdG8tdXNlIHdvcmxkIG9mIFB5dGhvbiBcCi1hbmQgdGhlIG1lc3N5LCBsb3ctbGV2ZWwgd29ybGQgb2YgQy4iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT03NzFkNDcyZjUzZjkzMzAzM2Y1N2VlZWU3ODA4ZTViZCIKLVNSQ05BTUUgPSAiUHlyZXgiCi1QUiA9ICJyNCIKLQotU1JDX1VSSSA9ICJcCi0gIGh0dHA6Ly93d3cuY29zYy5jYW50ZXJidXJ5LmFjLm56L2dyZWcuZXdpbmcvcHl0aG9uLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3ogXAotICBmaWxlOi8vcHlyZXgtZml4LW9wdGltaXplZC1tb2RlLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjUxNWRlZTY3ZDE1ZDQzOTM4NDFlMmQ2MGU4MzQxOTQ3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVmODdkZjA2ODMxZDBiMzQxMmViNGJjOWQzZmMyZWU3YmZhZTFiOTEzZDdkYThjMjNhYjJiZjU2OTlmYjZiNTAiCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKLQotaW5oZXJpdCBkaXN0dXRpbHMKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0ke2Jhc2VfbGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvUHlyZXgvQ29tcGlsZXIvTGV4aWNvbi5waWNrbGUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2NvbnMtbmF0aXZlXzIuNC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNjb25zLW5hdGl2ZV8yLjUuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNjb25zLW5hdGl2ZV8yLjQuMS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNjb25zLW5hdGl2ZV8yLjUuMC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNjb25zXzIuNC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNjb25zXzIuNC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOTZjZjVjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zY29uc18yLjQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVNVTU1BUlkgPSAiU29mdHdhcmUgQ29uc3RydWN0aW9uIHRvb2wgKG1ha2UvYXV0b3Rvb2xzIHJlcGxhY2VtZW50KSIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9MjNiYzE1MzBjNTVlOWYwZDFiNzA5MDU2YmNlYTIzN2QiCi1TUkNOQU1FID0gInNjb25zIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9zY29ucy9zY29ucy0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5YTBkZGYzM2Q5ODM5ZjA0MzgwZTBmYWU4N2NjNGI0MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZmM0ZjQyOTI4YzY5YmNiYjMzZTFiZTk0YjY0NmYyYzcwMGI2NTk2OTNmYWJjNzc4YzE5MmQ0ZDIyZjc1M2E3IgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9zY29ucy9maWxlcy9zY29ucy8iCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvc2NvbnMvKD9QPHB2ZXI+KFxkK1tcLlwtX10qKSspLyIKLQotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCi0KLWluaGVyaXQgZGlzdHV0aWxzCi0KLVJERVBFTkRTXyR7UE59ID0gIlwKLSAgcHl0aG9uLWZjbnRsIFwKLSAgcHl0aG9uLWlvIFwKLSAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNjb25zXzIuNS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNjb25zXzIuNS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1NDNjNDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2NvbnNfMi41LjAuYmIKQEAgLTAsMCArMSwyMyBAQAorU1VNTUFSWSA9ICJTb2Z0d2FyZSBDb25zdHJ1Y3Rpb24gdG9vbCAobWFrZS9hdXRvdG9vbHMgcmVwbGFjZW1lbnQpIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0zYTg4NWRmZjZkMTRlNGNkODc2ZDkwMDhhMDlhNDJkZSIKK1NSQ05BTUUgPSAic2NvbnMiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9zLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiZGE1NTMwYTcwYTQxYTc4MzFkODNjOGIxOTFjMDIxZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwMWYxYjNkNjAyMzUxNmE4ZTFiNWU3Nzc5OWU1YTgyYTIzYjMyOTUzYjExMDJkMzM5MDU5ZmZlY2E4NjAwNDkzIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9TQ29ucy8iCisKK1MgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgorCitpbmhlcml0IHNldHVwdG9vbHMKKworUkRFUEVORFNfJHtQTn0gPSAiXAorICBweXRob24tZmNudGwgXAorICBweXRob24taW8gXAorICBweXRob24tanNvbiBcCisgIHB5dGhvbi1zdWJwcm9jZXNzIFwKKyAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHMuaW5jCmluZGV4IDA5MTdlODguLjkyY2E5YTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29scy5pbmMKQEAgLTEsMjEgKzEsMjEgQEAKIFNVTU1BUlkgPSAiRG93bmxvYWQsIGJ1aWxkLCBpbnN0YWxsLCB1cGdyYWRlLCBhbmQgdW5pbnN0YWxsIFB5dGhvbiBwYWNrYWdlcyIKIEhPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvc2V0dXB0b29scyIKIFNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJQU0YgfCBaUEwtMi4wIgorTElDRU5TRSA9ICJNSVQiCiAKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NldHVwLnB5O2JlZ2lubGluZT03ODtlbmRsaW5lPTc4O21kNT04YTMxNDI3MGRkN2E4ZGJjYTc0MTc3NTQxNWYxNzE2ZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NldHVwLnB5O2JlZ2lubGluZT0xMzQ7ZW5kbGluZT0xMzQ7bWQ1PTNlOGRmMDI0ZDZjMTQ0MmQxOGU4NGFjZjhmYmJjNDc1IgogCiBTUkNOQU1FID0gInNldHVwdG9vbHMiCiAKLVNSQ19VUkkgPSAiaHR0cDovL3B5cGkucHl0aG9uLm9yZy9wYWNrYWdlcy9zb3VyY2Uvcy8ke1NSQ05BTUV9LyR7U1JDTkFNRX0tJHtQVn0udGFyLmd6IgorU1JDX1VSSSA9ICJodHRwczovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvc291cmNlL3MvJHtTUkNOQU1FfS8ke1NSQ05BTUV9LSR7UFZ9LnRhci5neiIKIAotU1JDX1VSSVttZDVzdW1dID0gImM1YTdkOTBjMWUwYWNmOGM0ZWM1YzJiZjMxYmMyNWI1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIxNGJmMjk5MzNmNDdjZjI1ZTZmYWE1NjlmNzEwNzMxNzI4YTA3YTE5Y2FlOTFlYTY0ZjgyNjA1MWY2OGE4Y2YiCitTUkNfVVJJW21kNXN1bV0gPSAiODY5ZjMwMjlkY2M2NmE2NGJhMzk4NzVlMmEyZjA0NGEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTlhYWQxOTQ3MTA1MmQ1ZGFlZmU5NmYyYzFmYTJlODhkY2RiMTc0ODhiZjg3MDhkN2U2MzU2ODgxZWE4MzNjYiIKIAogVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvc2V0dXB0b29scyIKIAogUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCiAKIGRvX2luc3RhbGxfcHJlcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0vJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcworICAgIGluc3RhbGwgLWQgJHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9CiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29sc18xOS40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHNfMTkuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzE3MjAzOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29sc18xOS40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotcmVxdWlyZSBweXRob24tc2V0dXB0b29scy5pbmMKLQotUFJPVklERVMgPSAicHl0aG9uLWRpc3RyaWJ1dGUiCi0KLURFUEVORFMgKz0gInB5dGhvbiIKLURFUEVORFNfY2xhc3MtbmF0aXZlICs9ICJweXRob24tbmF0aXZlIgotCi1pbmhlcml0IGRpc3R1dGlscwotCi1ESVNUVVRJTFNfSU5TVEFMTF9BUkdTICs9ICItLWluc3RhbGwtbGliPSR7RH0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzIgotCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gIHB5dGhvbi1zdHJpbmdvbGQgXAotICBweXRob24tZW1haWwgXAotICBweXRob24tc2hlbGwgXAotICBweXRob24tZGlzdHV0aWxzIFwKLSAgcHl0aG9uLWNvbXByZXNzaW9uIFwKLSAgcHl0aG9uLXBrZ3V0aWwgXAotICBweXRob24tcGxpc3RsaWIgXAotICBweXRob24tbnVtYmVycyBcCi0gIHB5dGhvbi1odG1sIFwKLSAgcHl0aG9uLW5ldHNlcnZlciBcCi0gIHB5dGhvbi1jdHlwZXMgXAotICBweXRob24tc3VicHJvY2VzcyBcCi0gIHB5dGhvbi11bml0dGVzdCBcCi0gIHB5dGhvbi1jb21waWxlIFwKLSIKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIlwKLSAgcHl0aG9uLWRpc3R1dGlscyBcCi0gIHB5dGhvbi1jb21wcmVzc2lvbiBcCi0iCi0KLVJSRVBMQUNFU18ke1BOfSA9ICJweXRob24tZGlzdHJpYnV0ZSIKLVJQUk9WSURFU18ke1BOfSA9ICJweXRob24tZGlzdHJpYnV0ZSIKLVJDT05GTElDVFNfJHtQTn0gPSAicHl0aG9uLWRpc3RyaWJ1dGUiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzXzIyLjAuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzXzIyLjAuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjY0NzRjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHNfMjIuMC41LmJiCkBAIC0wLDAgKzEsMzggQEAKK3JlcXVpcmUgcHl0aG9uLXNldHVwdG9vbHMuaW5jCisKK1BST1ZJREVTID0gInB5dGhvbi1kaXN0cmlidXRlIgorCitERVBFTkRTICs9ICJweXRob24iCitERVBFTkRTX2NsYXNzLW5hdGl2ZSArPSAicHl0aG9uLW5hdGl2ZSIKKworaW5oZXJpdCBkaXN0dXRpbHMKKworRElTVFVUSUxTX0lOU1RBTExfQVJHUyArPSAiLS1pbnN0YWxsLWxpYj0ke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCisKK1JERVBFTkRTXyR7UE59ID0gIlwKKyAgcHl0aG9uLXN0cmluZ29sZCBcCisgIHB5dGhvbi1lbWFpbCBcCisgIHB5dGhvbi1zaGVsbCBcCisgIHB5dGhvbi1kaXN0dXRpbHMgXAorICBweXRob24tY29tcHJlc3Npb24gXAorICBweXRob24tcGtndXRpbCBcCisgIHB5dGhvbi1wbGlzdGxpYiBcCisgIHB5dGhvbi1udW1iZXJzIFwKKyAgcHl0aG9uLWh0bWwgXAorICBweXRob24tbmV0c2VydmVyIFwKKyAgcHl0aG9uLWN0eXBlcyBcCisgIHB5dGhvbi1zdWJwcm9jZXNzIFwKKyAgcHl0aG9uLXVuaXR0ZXN0IFwKKyAgcHl0aG9uLWNvbXBpbGUgXAorIgorCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiXAorICBweXRob24tZGlzdHV0aWxzIFwKKyAgcHl0aG9uLWNvbXByZXNzaW9uIFwKKyIKKworUlJFUExBQ0VTXyR7UE59ID0gInB5dGhvbi1kaXN0cmlidXRlIgorUlBST1ZJREVTXyR7UE59ID0gInB5dGhvbi1kaXN0cmlidXRlIgorUkNPTkZMSUNUU18ke1BOfSA9ICJweXRob24tZGlzdHJpYnV0ZSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpeC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2l4LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDEyZmE5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpeC5pbmMKQEAgLTAsMCArMSwxNiBAQAorU1VNTUFSWSA9ICJQeXRob24gMiBhbmQgMyBjb21wYXRpYmlsaXR5IGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3NpeC8iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NmYwMGQ0YTUwNzEzZmE4NTk4NThkZDlhYmFhMzViMjEiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9zL3NpeC9zaXgtJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gIjM0ZWVkNTA3NTQ4MTE3YjJhYjUyM2FiMTRiMmY4YjU1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjEwNWY4ZDY4NjE2ZjgyNDhlMjRiZjBlOTM3MmVmMDRkM2NjMTAxMDRmMTk4MGY1NGQ1N2IyY2U3M2E1YWQ1NmEiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3NpeC8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvc2l4Lyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitTID0gIiR7V09SS0RJUn0vc2l4LSR7UFZ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpeF8xLjEwLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2l4XzEuMTAuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzUwNDg1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpeF8xLjEwLjAuYmIKQEAgLTAsMCArMSw0IEBACitpbmhlcml0IHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLXNpeC5pbmMKKworUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbi1pbyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zbWFydHBtL2NoYW5uZWxzLXJwbV9zeXMtdXNlLW1kNXN1bS1pbnN0ZWFkLW9mLW10aW1lLWFzLXRoZS0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc21hcnRwbS9jaGFubmVscy1ycG1fc3lzLXVzZS1tZDVzdW0taW5zdGVhZC1vZi1tdGltZS1hcy10aGUtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmMTRhMTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc21hcnRwbS9jaGFubmVscy1ycG1fc3lzLXVzZS1tZDVzdW0taW5zdGVhZC1vZi1tdGltZS1hcy10aGUtLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK2NoYW5uZWxzL3JwbV9zeXM6IHVzZSBtZDVzdW0gaW5zdGVhZCBvZiBtdGltZSBhcyB0aGUgZGlnZXN0CisKK1VzZSB0aGUgaW50ZXJuYWwgZ2V0RmlsZURpZ2VzdCgpIGZ1bmN0aW9uICh3aGljaCBkZWZhdWx0cyB0byBtZDUpIGluc3RlYWQgb2YKK210aW1lIGZvciBnZXR0aW5nIHRoZSBmaWxlIGRpZ2VzdC4gT24gc29tZSBzeXN0ZW1zIG10aW1lIHByb3ZlZCB0byBiZQordW5yZWxpYWJsZSBiZWNhdXNlIG9mIGRlbGF5ZWQgdXBkYXRlLiBUaGlzIGNhdXNlZCBzbWFydCB0byBtaXNzIHJwbSBkYiB1cGRhdGVzCithbmQgdGh1cyBnZXQgaXRzIHVuZGVyc3RhbmRpbmcgb2YgaW5zdGFsbGVkIHBhY2thZ2VzIG91dCBvZiBzeW5jLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogTWFya3VzIExlaHRvbmVuIDxtYXJrdXMubGVodG9uZW5AbGludXguaW50ZWwuY29tPgorLS0tCisgc21hcnQvY2hhbm5lbHMvcnBtX3N5cy5weSB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc21hcnQvY2hhbm5lbHMvcnBtX3N5cy5weSBiL3NtYXJ0L2NoYW5uZWxzL3JwbV9zeXMucHkKK2luZGV4IGI5ZmRhMjcuLjZmMWZlOTQgMTAwNjQ0CistLS0gYS9zbWFydC9jaGFubmVscy9ycG1fc3lzLnB5CisrKysgYi9zbWFydC9jaGFubmVscy9ycG1fc3lzLnB5CitAQCAtMjIsNiArMjIsNyBAQAorIGZyb20gc21hcnQuYmFja2VuZHMucnBtLmhlYWRlciBpbXBvcnQgUlBNREJMb2FkZXIKKyBmcm9tIHNtYXJ0LmJhY2tlbmRzLnJwbS5iYXNlIGltcG9ydCBnZXRUUywgcnBtX2pvaW5fZGJwYXRoCisgZnJvbSBzbWFydC5jaGFubmVsIGltcG9ydCBQYWNrYWdlQ2hhbm5lbAorK2Zyb20gc21hcnQudXRpbC5maWxldG9vbHMgaW1wb3J0IGdldEZpbGVEaWdlc3QKKyBmcm9tIHNtYXJ0IGltcG9ydCAqCisgaW1wb3J0IG9zCisgCitAQCAtMzUsNyArMzYsNyBAQCBjbGFzcyBSUE1TeXNDaGFubmVsKFBhY2thZ2VDaGFubmVsKToKKyAgICAgICAgIGRiZGlyID0gcnBtX2pvaW5fZGJwYXRoKHN5c2NvbmYuZ2V0KCJycG0tcm9vdCIsICIvIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c2NvbmYuZ2V0KCJycG0tZGJwYXRoIiwgInZhci9saWIvcnBtIikpCisgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKGRiZGlyLCAiUGFja2FnZXMiKQorLSAgICAgICAgZGlnZXN0ID0gb3MucGF0aC5nZXRtdGltZShwYXRoKQorKyAgICAgICAgZGlnZXN0ID0gZ2V0RmlsZURpZ2VzdChwYXRoKQorICAgICAgICAgaWYgZGlnZXN0ID09IHNlbGYuX2RpZ2VzdDoKKyAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgc2VsZi5yZW1vdmVMb2FkZXJzKCkKKy0tIAorMi42LjYKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNtYXJ0cG0vc21hcnQtYWRkLWRldWdnaW5nLXdoZW4tdGFyZ2V0cGF0aC1pcy1lbXB0eS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zbWFydHBtL3NtYXJ0LWFkZC1kZXVnZ2luZy13aGVuLXRhcmdldHBhdGgtaXMtZW1wdHkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWU4MDgwNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zbWFydHBtL3NtYXJ0LWFkZC1kZXVnZ2luZy13aGVuLXRhcmdldHBhdGgtaXMtZW1wdHkucGF0Y2gKQEAgLTAsMCArMSw0NyBAQAorRnJvbSAwMWU1MWFmZDAzMTMxOTQ3ZjhkNzRiOWEyM2ZkYmMwMDc4MjQ5NDk5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWFyaWFubyBMb3BleiA8bWFyaWFuby5sb3BlekBsaW51eC5pbnRlbC5jb20+CitEYXRlOiBXZWQsIDMgQXVnIDIwMTYgMDc6NDc6MDkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gZmV0Y2hlci5weTogQWRkIGRlYnVnZ2luZyB3aGVuIHRhcmdldHBhdGggaXMgZW1wdHkKKworVGhlcmUgYXJlIHNldmVyYWwgZXJyb3JzIHdoZW4gb3BlbmluaW5nIGZpbGVzIG9yIG1hbmlwdWxhdGluZworcGF0aCBzdHJpbmdzLCB0aG9zZSBlcnJvcnMgcG9pbnQgdGFyZ2V0cGF0aCBwYXNzZWQgdG8KK3NldFN1Y2NlZWRlZCgpIGlzIGVtcHR5LiBUaGlzIHBhdGNoIHdvbid0IHNvbHZlIHRoZSBwcm9ibGVtcywKK2J1dCB3aWxsIGFkZCBkZWJ1Z2dpbmcgdG8gZ2l2ZSBhbiBpZGVhIHdoeSBpcyBmYWlsaW5nLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2RlYnVnZ2luZ10KKworU2lnbmVkLW9mZi1ieTogTWFyaWFubyBMb3BleiA8bWFyaWFuby5sb3BlekBsaW51eC5pbnRlbC5jb20+CistLS0KKyBzbWFydC9mZXRjaGVyLnB5IHwgMTYgKysrKysrKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zbWFydC9mZXRjaGVyLnB5IGIvc21hcnQvZmV0Y2hlci5weQoraW5kZXggZGQzZmY2Yi4uNjRhYTk3OSAxMDA2NDQKKy0tLSBhL3NtYXJ0L2ZldGNoZXIucHkKKysrKyBiL3NtYXJ0L2ZldGNoZXIucHkKK0BAIC01OTQsNiArNTk0LDIyIEBAIGNsYXNzIEZldGNoSXRlbShvYmplY3QpOgorICAgICAgICAgICAgICAgICBzZWxmLl9ldGEgPSBOb25lCisgCisgICAgIGRlZiBzZXRTdWNjZWVkZWQoc2VsZiwgdGFyZ2V0cGF0aCwgZmV0Y2hlZHNpemU9MCk6CisrICAgICAgICAjIEl0IHNlZW1zIHRoZSBpbiBzb21lIG9kZCBjYXNlcyB0YXJnZXRwYXRoIGhlcmUKKysgICAgICAgICMgaXMgZW1wdHksIHRoaXMgd2lsbCBsZWFkIHRvIGJ1Z3MgaW4gc2V2ZXJhbCBwbGFjZXMKKysgICAgICAgIGlmIG5vdCB0YXJnZXRwYXRoOgorKyAgICAgICAgICAgIGltcG9ydCB0cmFjZWJhY2sKKysgICAgICAgICAgICB0Yl9zdHIgPSAiIgorKyAgICAgICAgICAgIGZvciB0aHJlYWRJZCwgc3RhY2sgaW4gc3lzLl9jdXJyZW50X2ZyYW1lcygpLml0ZW1zKCk6CisrICAgICAgICAgICAgICAgIHRiX3N0ciArPSAnXG5UaHJlYWRJRDogJXMnICUgdGhyZWFkSWQKKysgICAgICAgICAgICAgICAgZm9yIGZpbGVuYW1lLCBsaW5lbm8sIG5hbWUsIGxpbmUgaW4gdHJhY2ViYWNrLmV4dHJhY3Rfc3RhY2soc3RhY2spOgorKyAgICAgICAgICAgICAgICAgICAgdGJfc3RyICs9ICdcbkZpbGU6ICIlcyIsIGxpbmUgJWQsIGluICVzJyAlIChmaWxlbmFtZSwgbGluZW5vLCBuYW1lKQorKyAgICAgICAgICAgICAgICAgICAgaWYgbGluZToKKysgICAgICAgICAgICAgICAgICAgICAgICB0Yl9zdHIgKz0gIlxuICAlcyIgJSBsaW5lLnN0cmlwKCkKKysgICAgICAgICAgICBlcnJvcl9zdHJpbmcgPSBbIk5vIGZpbGUgcGF0aCBzcGVjaWZpZWQiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVVJMOiAlcyIgJSBzZWxmLl91cmwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdGF0dXM6ICVzIiAlIHNlbGYuX3N0YXR1cywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRyYWNlYmFjazogJXMiICUgdGJfc3RyXQorKyAgICAgICAgICAgIHJhaXNlIEVycm9yLCBfKCJcbiIuam9pbihlcnJvcl9zdHJpbmcpKQorICAgICAgICAgaWYgc2VsZi5fc3RhdHVzIGlzIG5vdCBGQUlMRUQ6CisgICAgICAgICAgICAgc2VsZi5fc3RhdHVzID0gU1VDQ0VFREVECisgICAgICAgICAgICAgc2VsZi5fdGFyZ2V0cGF0aCA9IHRhcmdldHBhdGgKKy0tIAorMi42LjYKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNtYXJ0cG0vc21hcnQtYXR0ZW1wdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zbWFydHBtL3NtYXJ0LWF0dGVtcHQucGF0Y2gKaW5kZXggZWM5OGUwMy4uNWFlZGM4OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNtYXJ0cG0vc21hcnQtYXR0ZW1wdC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc21hcnRwbS9zbWFydC1hdHRlbXB0LnBhdGNoCkBAIC0zNiw3ICszNiw3IEBACiAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgIGRlbCBnZXRUUy50cwogICAgICAgICAgICAgIGNiLmdyYWJPdXRwdXQoRmFsc2UpCi0rICAgICAgICAgICAgaWYgcHJvYnMgYW5kIHN5c2NvbmYuaGFzKCJhdHRlbXB0LWluc3RhbGwiLCBzb2Z0PVRydWUpOgorKyAgICAgICAgICAgIGlmIChwcm9icyBpcyBub3QgTm9uZSkgYW5kIHN5c2NvbmYuaGFzKCJhdHRlbXB0LWluc3RhbGwiLCBzb2Z0PVRydWUpOgogKyAgICAgICAgICAgICAgICBkZWYgcmVtb3ZlX2NvbmZsaWN0KHBrZ05FVlIpOgogKyAgICAgICAgICAgICAgICAgICAgZm9yIGtleSBpbiBjaGFuZ2VzZXQua2V5cygpOgogKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBrZ05FVlIgPT0gc3RyKGtleSk6CkBAIC02Nyw4ICs2Nyw4IEBACiArICAgICAgICAgICAgICAgICAgICAgICAgcmV0cnkgPSAwCiArCiAgICAgICAgICAgICAgcHJvZy5zZXREb25lKCkKLS0gICAgICAgICAgICBpZiBwcm9iczoKLSsgICAgICAgICAgICBpZiBwcm9icyBhbmQgKG5vdCByZXRyeSk6CistICAgICAgICAgICAgaWYgcHJvYnMgaXMgbm90IE5vbmU6CisrICAgICAgICAgICAgaWYgKHByb2JzIGlzIG5vdCBOb25lKSBhbmQgKG5vdCByZXRyeSk6CiAgICAgICAgICAgICAgICAgIHJhaXNlIEVycm9yLCAiXG4iLmpvaW4oW3hbMF0gZm9yIHggaW4gcHJvYnNdKQogICAgICAgICAgICAgIHByb2cuc3RvcCgpCiArICAgICAgICAgICAgaWYgcmV0cnkgYW5kIGxlbihjaGFuZ2VzZXQpOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNtYXJ0cG0vc21hcnQtY2hhbm5lbC1yZW1vdmUtYWxsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNtYXJ0cG0vc21hcnQtY2hhbm5lbC1yZW1vdmUtYWxsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhMjNlN2MKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc21hcnRwbS9zbWFydC1jaGFubmVsLXJlbW92ZS1hbGwucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSA2ZDIzNjNhNzA1Njk3ZjYxNWQ5ZTVhZjVkNjcwM2IyOTFlNjE4YjQ2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGFuaWVsIEtsYXVlciA8ZGFuaWVsLmtsYXVlckBnaW4uZGU+CitEYXRlOiBUaHUsIDEyIE1heSAyMDE2IDE3OjU1OjAxICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBjaGFubmVsIGNvbW1hbmQgLS1yZW1vdmUtYWxsIG9wdGlvbiBwYXJzaW5nCisKK09wdGlvbi50YWtlX2FjdGlvbigpIHN0b3JlcyBhIGxpc3Qgb2Ygb3B0aW9ucyBnaXZlbiBmb3IgdmFsaWRhdGlvbiBsYXRlci4KK0l0IHN0cmlwcyBsZWFkaW5nIGRhc2hlcyBhbmQgdHVybnMgcmVtYWluaW5nIGRhc2hlcyBpbnRvIHVuZGVyc2NvcmVzLgorVGhpcyBsaXN0IGlzIHdoYXQgZW5zdXJlX2FjdGlvbigpIHdpbGwgY29tcGFyZSBpdHMgYXJndW1lbnRzIGFnYWluc3QsCit0aHVzIHdlIG11c3QgdXNlIHVuZGVyc2NvcmVzIGhlcmUuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgS2xhdWVyIDxkYW5pZWwua2xhdWVyQGdpbi5kZT4KKy0tLQorIHNtYXJ0L2NvbW1hbmRzL2NoYW5uZWwucHkgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zbWFydC9jb21tYW5kcy9jaGFubmVsLnB5IGIvc21hcnQvY29tbWFuZHMvY2hhbm5lbC5weQoraW5kZXggMTA4ZjNmMS4uNjIzNGY2OSAxMDA2NDQKKy0tLSBhL3NtYXJ0L2NvbW1hbmRzL2NoYW5uZWwucHkKKysrKyBiL3NtYXJ0L2NvbW1hbmRzL2NoYW5uZWwucHkKK0BAIC0xNjQsNyArMTY0LDcgQEAgZGVmIG1haW4oY3RybCwgb3B0cyk6CisgICAgIG9wdHMuY2hlY2tfYXJnc19vZl9vcHRpb24oImVkaXQiLCAwKQorICAgICBvcHRzLmNoZWNrX2FyZ3Nfb2Zfb3B0aW9uKCJlbmFibGUiLCAtMSkKKyAgICAgb3B0cy5jaGVja19hcmdzX29mX29wdGlvbigiZGlzYWJsZSIsIC0xKQorLSAgICBvcHRzLmVuc3VyZV9hY3Rpb24oImNoYW5uZWwiLCBbImFkZCIsICJzZXQiLCAicmVtb3ZlIiwgInJlbW92ZS1hbGwiLAorKyAgICBvcHRzLmVuc3VyZV9hY3Rpb24oImNoYW5uZWwiLCBbImFkZCIsICJzZXQiLCAicmVtb3ZlIiwgInJlbW92ZV9hbGwiLAorICAgICAgICAgICAgICAgICAgICAgICAgImxpc3QiLCAic2hvdyIsICJ5YW1sIiwgImVuYWJsZSIsICJkaXNhYmxlIl0pCisgICAgIG9wdHMuY2hlY2tfcmVtYWluaW5nX2FyZ3MoKQorIAorLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc21hcnRwbS9zbWFydC1pbXByb3ZlLWVycm9yLXJlcG9ydGluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zbWFydHBtL3NtYXJ0LWltcHJvdmUtZXJyb3ItcmVwb3J0aW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiODIyNjViLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zbWFydHBtL3NtYXJ0LWltcHJvdmUtZXJyb3ItcmVwb3J0aW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTEgKzAsMCBAQAotSW1wcm92ZSBlcnJvciByZXBvcnRpbmcgaW4gc21hcnQKLQotQWRkIGNvZGUgdG8gY2hlY2sgcHJvcGVyIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgZm9yIHZhcmlvdXMKLXNtYXJ0IGNvbW1hbmRzLiBFeGl0IHdpdGggZXJyb3IgaWYgZXJyb25lb3VzL2FkZGl0aW9uYWwgYXJndW1lbnRzCi1hcmUgZ2l2ZW4gaW4gdGhlIGNvbW1hbmQgbGluZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEJvZ2RhbiBNYXJpbmVzY3UgPGJvZ2Rhbi5hLm1hcmluZXNjdUBpbnRlbC5jb20+Ci0KLWRpZmYgLS1naXQgYS9zbWFydC91dGlsL29wdHBhcnNlLnB5IGIvc21hcnQvdXRpbC9vcHRwYXJzZS5weQotaW5kZXggNmZmZjFiYy4uZjQ0NWEzYiAxMDA2NDQKLS0tLSBhL3NtYXJ0L3V0aWwvb3B0cGFyc2UucHkKLSsrKyBiL3NtYXJ0L3V0aWwvb3B0cGFyc2UucHkKLUBAIC03MCw2ICs3MCw4IEBAIGltcG9ydCBzeXMsIG9zCi0gaW1wb3J0IHR5cGVzCi0gaW1wb3J0IHRleHR3cmFwCi0gZnJvbSBnZXR0ZXh0IGltcG9ydCBnZXR0ZXh0IGFzIF8KLStmcm9tIHNtYXJ0IGltcG9ydCBFcnJvcgotK2ltcG9ydCByZQotIAotIGRlZiBfcmVwcihzZWxmKToKLSAgICAgcmV0dXJuICI8JXMgYXQgMHgleDogJXM+IiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgaWQoc2VsZiksIHNlbGYpCi1AQCAtNzEwLDYgKzcxMiwxMiBAQCBjbGFzcyBPcHRpb246Ci0gICAgICAgICAgICAgc2VsZi5hY3Rpb24sIHNlbGYuZGVzdCwgb3B0LCB2YWx1ZSwgdmFsdWVzLCBwYXJzZXIpCi0gCi0gICAgIGRlZiB0YWtlX2FjdGlvbihzZWxmLCBhY3Rpb24sIGRlc3QsIG9wdCwgdmFsdWUsIHZhbHVlcywgcGFyc2VyKToKLSsgICAgICAgICMgS2VlcCBhbGwgdGhlIG9wdGlvbnMgaW4gdGhlIGNvbW1hbmQgbGluZSBpbiB0aGUgJ19naXZlbl9vcHRzJyBhcnJheQotKyAgICAgICAgIyBUaGlzIHdpbGwgYmUgdXNlZCBsYXRlciB0byB2YWxpZGF0ZSB0aGUgY29tbWFuZCBsaW5lCi0rICAgICAgICBnaXZlbl9vcHRzID0gZ2V0YXR0cihwYXJzZXIudmFsdWVzLCAiX2dpdmVuX29wdHMiLCBbXSkKLSsgICAgICAgIHVzZXJfb3B0ID0gcmUuc3ViKHIiXlwtKiIsICIiLCBvcHQpLnJlcGxhY2UoIi0iLCAiXyIpCi0rICAgICAgICBnaXZlbl9vcHRzLmFwcGVuZCh1c2VyX29wdCkKLSsgICAgICAgIHNldGF0dHIocGFyc2VyLnZhbHVlcywgIl9naXZlbl9vcHRzIiwgZ2l2ZW5fb3B0cykKLSAgICAgICAgIGlmIGFjdGlvbiA9PSAic3RvcmUiOgotICAgICAgICAgICAgIHNldGF0dHIodmFsdWVzLCBkZXN0LCB2YWx1ZSkKLSAgICAgICAgIGVsaWYgYWN0aW9uID09ICJzdG9yZV9jb25zdCI6Ci1AQCAtODIxLDYgKzgyOSw1NCBAQCBjbGFzcyBWYWx1ZXM6Ci0gICAgICAgICAgICAgc2V0YXR0cihzZWxmLCBhdHRyLCB2YWx1ZSkKLSAgICAgICAgIHJldHVybiBnZXRhdHRyKHNlbGYsIGF0dHIpCi0gCi0rICAgICMgQ2hlY2sgaWYgdGhlIGdpdmVuIG9wdGlvbiBoYXMgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgYXJndW1lbnRzCi0rICAgICMgUmFpc2UgYW4gZXJyb3IgaWYgdGhlIG9wdGlvbiBoYXMgYW4gaW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzCi0rICAgICMgQSBuZWdhdGl2ZSBudW1iZXIgZm9yICduYXJncycgbWVhbnMgImF0IGxlYXN0IHxuYXJnc3wgYXJndW1lbnRzIGFyZSBuZWVkZWQiCi0rICAgIGRlZiBjaGVja19hcmdzX29mX29wdGlvbihzZWxmLCBvcHQsIG5hcmdzLCBlcnI9Tm9uZSk6Ci0rICAgICAgICBnaXZlbl9vcHRzID0gZ2V0YXR0cihzZWxmLCAiX2dpdmVuX29wdHMiLCBbXSkKLSsgICAgICAgIGlmIG5vdCBvcHQgaW4gZ2l2ZW5fb3B0czoKLSsgICAgICAgICAgICByZXR1cm4KLSsgICAgICAgIHZhbHVlcyA9IGdldGF0dHIoc2VsZiwgb3B0LCBbXSkKLSsgICAgICAgIGlmIHR5cGUodmFsdWVzKSAhPSB0eXBlKFtdKToKLSsgICAgICAgICAgICByZXR1cm4KLSsgICAgICAgIGlmIG5hcmdzIDwgMDoKLSsgICAgICAgICAgICBuYXJncyA9IC1uYXJncwotKyAgICAgICAgICAgIGlmIGxlbih2YWx1ZXMpID49IG5hcmdzOgotKyAgICAgICAgICAgICAgICByZXR1cm4KLSsgICAgICAgICAgICBpZiBub3QgZXJyOgotKyAgICAgICAgICAgICAgICBpZiBuYXJncyA9PSAxOgotKyAgICAgICAgICAgICAgICAgICAgZXJyID0gXygiT3B0aW9uICclcycgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50IikgJSBvcHQKLSsgICAgICAgICAgICAgICAgZWxzZToKLSsgICAgICAgICAgICAgICAgICAgIGVyciA9IF8oIk9wdGlvbiAnJXMnIHJlcXVpcmVzIGF0IGxlYXN0ICVkIGFyZ3VtZW50cyIpICUgKG9wdCwgbmFyZ3MpCi0rICAgICAgICAgICAgcmFpc2UgRXJyb3IsIGVycgotKyAgICAgICAgZWxpZiBuYXJncyA9PSAwOgotKyAgICAgICAgICAgIGlmIGxlbiggdmFsdWVzICkgPT0gMDoKLSsgICAgICAgICAgICAgICAgcmV0dXJuCi0rICAgICAgICAgICAgcmFpc2UgRXJyb3IsIGVycgotKyAgICAgICAgZWxzZToKLSsgICAgICAgICAgICBpZiBsZW4odmFsdWVzKSA9PSBuYXJnczoKLSsgICAgICAgICAgICAgICAgcmV0dXJuCi0rICAgICAgICAgICAgaWYgbm90IGVycjoKLSsgICAgICAgICAgICAgICAgaWYgbmFyZ3MgPT0gMToKLSsgICAgICAgICAgICAgICAgICAgIGVyciA9IF8oIk9wdGlvbiAnJXMnIHJlcXVpcmVzIG9uZSBhcmd1bWVudCIpICUgb3B0Ci0rICAgICAgICAgICAgICAgIGVsc2U6Ci0rICAgICAgICAgICAgICAgICAgICBlcnIgPSBfKCJPcHRpb24gJyVzJyByZXF1aXJlcyAlZCBhcmd1bWVudHMiKSAlIChvcHQsIG5hcmdzKQotKyAgICAgICAgICAgIHJhaXNlIEVycm9yLCBlcnIKLSsKLSsgICAgIyBDaGVjayB0aGF0IGF0IGxlYXN0IG9uZSBvZiB0aGUgb3B0aW9ucyBpbiAnYWN0bGlzdCcgd2FzIGdpdmVuIGFzIGFuIGFyZ3VtZW50Ci0rICAgICMgdG8gdGhlIGNvbW1hbmQgJ2NtZG5hbWUnCi0rICAgIGRlZiBlbnN1cmVfYWN0aW9uKHNlbGYsIGNtZG5hbWUsIGFjdGxpc3QpOgotKyAgICAgICAgZ2l2ZW5fb3B0cyA9IGdldGF0dHIoc2VsZiwgIl9naXZlbl9vcHRzIiwgW10pCi0rICAgICAgICBmb3IgYWN0aW9uIGluIGFjdGxpc3Q6Ci0rICAgICAgICAgICAgaWYgYWN0aW9uIGluIGdpdmVuX29wdHM6Ci0rICAgICAgICAgICAgICAgIHJldHVybgotKyAgICAgICAgcmFpc2UgRXJyb3IsIF8oIk5vIGFjdGlvbiBzcGVjaWZpZWQgZm9yIGNvbW1hbmQgJyVzJyIpICUgY21kbmFtZQotKwotKyAgICAjIENoZWNrIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgYXJndW1lbnRzIGxlZnQgYWZ0ZXIgcGFyc2luZyB0aGUgY29tbWFuZCBsaW5lIGFuZAotKyAgICAjIHJhaXNlIGFuIGVycm9yIGlmIHN1Y2ggYXJndW1lbnRzIGFyZSBmb3VuZAotKyAgICBkZWYgY2hlY2tfcmVtYWluaW5nX2FyZ3Moc2VsZik6Ci0rICAgICAgICBpZiBzZWxmLmFyZ3M6Ci0rICAgICAgICAgICAgcmFpc2UgRXJyb3IsIF8oIkludmFsaWQgYXJndW1lbnQocykgJyVzJyIgJSBzdHIoc2VsZi5hcmdzKSkKLSAKLSBjbGFzcyBPcHRpb25Db250YWluZXI6Ci0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc21hcnRwbS9zbWFydC1sb2NhbGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc21hcnRwbS9zbWFydC1sb2NhbGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGYxZGZiOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zbWFydHBtL3NtYXJ0LWxvY2FsZS5wYXRjaApAQCAtMCwwICsxLDI3IEBACitycG0gb3IgY29tbWFuZHMgcnVuIGJ5IHJwbSBjYW4gdXNlIG91dHB1dCB3aGljaCBpc24ndCBzdHJpY3RseSBhY3NpaSBzdWNoCithcyBxdW90YXRpb24gY2hhcmFjdGVycyBhcm91bmQgZXhwcmVzc2lvbiB3aGljaCBhcmUgY2hhcmFjdGVyIDB4ZTIuCisKK1VzZSB1dGYtOCBhcyBhbiBlbmNvZGluZyByYXRoZXIgdGhhbiB3aGF0ZXZlciB0aGUgc3lzdGVtIHN1Z2dlc3RzIHRvCitlbnN1cmUgc21hcnQgY29wZXMgd2l0aCB0aGlzIHJhdGhlciB0aGFuIGVycm9yaW5nIHdpdGggdW5pY29kZSBlcnJvcnMuCisKK1JQIDIwMTYvNS8xOQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKworSW5kZXg6IGdpdC9zbWFydC9iYWNrZW5kcy9ycG0vcG0ucHkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9zbWFydC9iYWNrZW5kcy9ycG0vcG0ucHkKKysrKyBnaXQvc21hcnQvYmFja2VuZHMvcnBtL3BtLnB5CitAQCAtMzIsMTEgKzMyLDcgQEAgZnJvbSBzbWFydC5wbSBpbXBvcnQgUGFja2FnZU1hbmFnZXIKKyBmcm9tIHNtYXJ0IGltcG9ydCBzeXNjb25mLCBpZmFjZSwgRXJyb3IsIF8KKyAKKyAKKy10cnk6CistICAgIEVOQ09ESU5HID0gbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKCkKKy1leGNlcHQgbG9jYWxlLkVycm9yOgorLSAgICBFTkNPRElORyA9ICJhc2NpaSIKKy0KKytFTkNPRElORyA9ICJ1dGYtOCIKKyAKKyBkZWYgZ2V0X3B1YmxpY19rZXkoaGVhZGVyKToKKyAgICAgcmV0dXJuIGhlYWRlci5zcHJpbnRmKCIlfERTQUhFQURFUj97JXtEU0FIRUFERVI6cGdwc2lnfX06IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNtYXJ0cG0vc21hcnQtcnBtLXRyYW5zYWN0aW9uLWZhaWx1cmUtY2hlY2sucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc21hcnRwbS9zbWFydC1ycG0tdHJhbnNhY3Rpb24tZmFpbHVyZS1jaGVjay5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjhjM2FmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNtYXJ0cG0vc21hcnQtcnBtLXRyYW5zYWN0aW9uLWZhaWx1cmUtY2hlY2sucGF0Y2gKQEAgLTAsMCArMSw1NyBAQAorRnJvbSAwYzU1ZDdlMThmNDA0NjVlOTVlOGU0YmYyMmFmMDFmNWQ0NDc3ZDNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGFuaWVsIEtsYXVlciA8ZGFuaWVsLmtsYXVlckBnaW4uZGU+CitEYXRlOiBXZWQsIDExIE1heSAyMDE2IDE3OjIyOjQ5ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIHJwbTogRG9uJ3QgaWdub3JlIHRyYW5zYWN0aW9uIGVycm9yIHdpdGggZW1wdHkgcHJvYmxlbXMgbGlzdAorCitTbWFydFBNIGNvdWxkIG1pc2ludGVycHJldCBSUE0gdHJhbnNhY3Rpb24gZXJyb3IgYXMgc3VjY2VzcywKK2lmIHRzLnJ1bigpIChSUE0gUHl0aG9uIEFQSSkgcmV0dXJucyBhbiBlbXB0eSBwcm9ibGVtcyBsaXN0LAorYmVjYXVzZSBvZiBpbmNvcnJlY3QgY2hlY2sgZm9yIE5vbmUgd2hpY2ggdHJlYXRlZCBlbXB0eSBsaXN0Cit0byBiZSB0aGUgc2FtZSBhcyBOb25lIHdoZW4gaXQgaGFzIGRpZmZlcmVudCBtZWFuaW5nLgorCit0cy5ydW4oKSByZXR1cm5zOgorKiBOb25lIGluIGNhc2Ugb2Ygc3VjY2VzcworKiBwcm9ibGVtcyBsaXN0IGluIGNhc2Ugb2YgZXJyb3IsIG1heSBiZSBlbXB0eQorKGxvb2sgYXQgcnBtdHNfUnVuKCkgaW4gcnBtLTUuNC4xNC9weXRob24vcnBtdHMtcHkuYyBbMV0pCisKKyJpZiBteWxpc3QiIGlzIG5vdCBnb29kIGVub3VnaCB0byBjaGVjayBmb3IgZXJyb3IgaGVyZSwgYmVjYXVzZSBpdCB3aWxsCit0cmVhdCBhbiBlbXB0eSBsaXN0IGFzICJmYWxzZSIgYmVjYXVzZSBpdHMgbGVuKCkgPT0gMCBbMl0uCisKK3RzLmNoZWNrKCkgc2VlbXMgdG8gYmUgZGlmZmVyZW50IChpdCdzIG9rIGZvciBpdCB0byByZXR1cm4gYW4gZW1wdHkgbGlzdCksCitidXQgZm9yIGNvbnNpc3RlbmN5IGl0IHNob3VsZCBiZSBtYWRlIGNsZWFyIHRoYXQgaXQgY2FuIHJldHVybiBlaXRoZXIgTm9uZSwKK2FuIGVtcHR5IGxpc3Qgb3IgYSBub24tZW1wdHkgbGlzdC4KKworWzFdIGh0dHA6Ly9ycG01Lm9yZy9jdnMvZmlsZXZpZXc/Zj1ycG0vcHl0aG9uL3JwbXRzLXB5LmMmdj0xLjExMS4yLjMKK1syXSBodHRwczovL2RvY3MucHl0aG9uLm9yZy8yL2xpYnJhcnkvc3RkdHlwZXMuaHRtbCN0cnV0aC12YWx1ZS10ZXN0aW5nCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgS2xhdWVyIDxkYW5pZWwua2xhdWVyQGdpbi5kZT4KKy0tLQorIHNtYXJ0L2JhY2tlbmRzL3JwbS9wbS5weSB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zbWFydC9iYWNrZW5kcy9ycG0vcG0ucHkgYi9zbWFydC9iYWNrZW5kcy9ycG0vcG0ucHkKK2luZGV4IDliYmQ5NTIuLjYzNWY3MjYgMTAwNjQ0CistLS0gYS9zbWFydC9iYWNrZW5kcy9ycG0vcG0ucHkKKysrKyBiL3NtYXJ0L2JhY2tlbmRzL3JwbS9wbS5weQorQEAgLTIwOCw3ICsyMDgsNyBAQCBjbGFzcyBSUE1QYWNrYWdlTWFuYWdlcihQYWNrYWdlTWFuYWdlcik6CisgICAgICAgICBmb3JjZSA9IHN5c2NvbmYuZ2V0KCJycG0tZm9yY2UiLCBGYWxzZSkKKyAgICAgICAgIGlmIG5vdCBmb3JjZToKKyAgICAgICAgICAgICBwcm9icyA9IHRzLmNoZWNrKCkKKy0gICAgICAgICAgICBpZiBwcm9iczoKKysgICAgICAgICAgICBpZiAocHJvYnMgaXMgbm90IE5vbmUpIGFuZCAobGVuKHByb2JzKSAhPSAwKToKKyAgICAgICAgICAgICAgICAgcHJvYmxpbmVzID0gW10KKyAgICAgICAgICAgICAgICAgZm9yIHByb2IgaW4gcHJvYnM6CisgICAgICAgICAgICAgICAgICAgICBuYW1lMSA9ICIlcy0lcy0lcyIgJSBwcm9iWzBdCitAQCAtMjQ3LDcgKzI0Nyw3IEBAIGNsYXNzIFJQTVBhY2thZ2VNYW5hZ2VyKFBhY2thZ2VNYW5hZ2VyKToKKyAgICAgICAgICAgICBkZWwgZ2V0VFMudHMKKyAgICAgICAgICAgICBjYi5ncmFiT3V0cHV0KEZhbHNlKQorICAgICAgICAgICAgIHByb2cuc2V0RG9uZSgpCistICAgICAgICAgICAgaWYgcHJvYnM6CisrICAgICAgICAgICAgaWYgcHJvYnMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgIHJhaXNlIEVycm9yLCAiXG4iLmpvaW4oW3hbMF0gZm9yIHggaW4gcHJvYnNdKQorICAgICAgICAgICAgIHByb2cuc3RvcCgpCisKKy0tCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc21hcnRwbS9zbWFydHBtLXJwbTUtbm9kaWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc21hcnRwbS9zbWFydHBtLXJwbTUtbm9kaWcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlZmIyOWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNtYXJ0cG0vc21hcnRwbS1ycG01LW5vZGlnLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotUlBNNSBoYXMgcmVtb3ZlZCBzdXBwb3J0IGZvciBSUE1WU0ZfTk9TSUdOQVRVUkVTCi0KLVBhdGNoIHNtYXJ0IHRvIG5vIGxvbmdlciB1c2UgdGhpcyBmbGFnCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci0KLWRpZmYgLS1naXQgYS9zbWFydC9iYWNrZW5kcy9ycG0vYmFzZS5weSBiL3NtYXJ0L2JhY2tlbmRzL3JwbS9iYXNlLnB5Ci0tLS0gYS9zbWFydC9iYWNrZW5kcy9ycG0vYmFzZS5weQotKysrIGIvc21hcnQvYmFja2VuZHMvcnBtL2Jhc2UucHkKLUBAIC02MywxMSArNjMsMTEgQEAgZGVmIGdldFRTKG5ldz1GYWxzZSk6Ci0gICAgICAgICBpZiBzeXNjb25mLmdldCgicnBtLWRicGF0aCIpOgotICAgICAgICAgICAgIHJwbS5hZGRNYWNybygnX2RicGF0aCcsICIvIiArIHN5c2NvbmYuZ2V0KCJycG0tZGJwYXRoIikpCi0gICAgICAgICBnZXRUUy50cyA9IHJwbS50cyhnZXRUUy5yb290KQotLSAgICAgICAgaWYgbm90IHN5c2NvbmYuZ2V0KCJycG0tY2hlY2stc2lnbmF0dXJlcyIsIEZhbHNlKToKLS0gICAgICAgICAgICBpZiBoYXNhdHRyKHJwbSwgJ19SUE1WU0ZfTk9TSUdOQVRVUkVTJyk6Ci0tICAgICAgICAgICAgICAgIGdldFRTLnRzLnNldFZTRmxhZ3MocnBtLl9SUE1WU0ZfTk9TSUdOQVRVUkVTKQotLSAgICAgICAgICAgIGVsc2U6Ci0tICAgICAgICAgICAgICAgIHJhaXNlIEVycm9yLCBfKCJycG0gcmVxdWlyZXMgY2hlY2tpbmcgc2lnbmF0dXJlcyIpCi0rICAgICAgICAjaWYgbm90IHN5c2NvbmYuZ2V0KCJycG0tY2hlY2stc2lnbmF0dXJlcyIsIEZhbHNlKToKLSsgICAgICAgICMgICAgaWYgaGFzYXR0cihycG0sICdfUlBNVlNGX05PU0lHTkFUVVJFUycpOgotKyAgICAgICAgIyAgICAgICAgZ2V0VFMudHMuc2V0VlNGbGFncyhycG0uX1JQTVZTRl9OT1NJR05BVFVSRVMpCi0rICAgICAgICAjICAgIGVsc2U6Ci0rICAgICAgICAjICAgICAgICByYWlzZSBFcnJvciwgXygicnBtIHJlcXVpcmVzIGNoZWNraW5nIHNpZ25hdHVyZXMiKQotICAgICAgICAgcnBtX2RicGF0aCA9IHN5c2NvbmYuZ2V0KCJycG0tZGJwYXRoIiwgInZhci9saWIvcnBtIikKLSAgICAgICAgIGRiZGlyID0gcnBtX2pvaW5fZGJwYXRoKGdldFRTLnJvb3QsIHJwbV9kYnBhdGgpCi0gICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihkYmRpcik6Ci1AQCAtODksMTEgKzg5LDExIEBAIGRlZiBnZXRUUyhuZXc9RmFsc2UpOgotICAgICAgICAgaWYgc3lzY29uZi5nZXQoInJwbS1kYnBhdGgiKToKLSAgICAgICAgICAgICBycG0uYWRkTWFjcm8oJ19kYnBhdGgnLCAiLyIgKyBzeXNjb25mLmdldCgicnBtLWRicGF0aCIpKQotICAgICAgICAgdHMgPSBycG0udHMoZ2V0VFMucm9vdCkKLS0gICAgICAgIGlmIG5vdCBzeXNjb25mLmdldCgicnBtLWNoZWNrLXNpZ25hdHVyZXMiLCBGYWxzZSk6Ci0tICAgICAgICAgICAgaWYgaGFzYXR0cihycG0sICdfUlBNVlNGX05PU0lHTkFUVVJFUycpOgotLSAgICAgICAgICAgICAgICB0cy5zZXRWU0ZsYWdzKHJwbS5fUlBNVlNGX05PU0lHTkFUVVJFUykKLS0gICAgICAgICAgICBlbHNlOgotLSAgICAgICAgICAgICAgICByYWlzZSBFcnJvciwgXygicnBtIHJlcXVpcmVzIGNoZWNraW5nIHNpZ25hdHVyZXMiKQotKyAgICAgICAgI2lmIG5vdCBzeXNjb25mLmdldCgicnBtLWNoZWNrLXNpZ25hdHVyZXMiLCBGYWxzZSk6Ci0rICAgICAgICAjICAgIGlmIGhhc2F0dHIocnBtLCAnX1JQTVZTRl9OT1NJR05BVFVSRVMnKToKLSsgICAgICAgICMgICAgICAgIHRzLnNldFZTRmxhZ3MocnBtLl9SUE1WU0ZfTk9TSUdOQVRVUkVTKQotKyAgICAgICAgIyAgICBlbHNlOgotKyAgICAgICAgIyAgICAgICAgcmFpc2UgRXJyb3IsIF8oInJwbSByZXF1aXJlcyBjaGVja2luZyBzaWduYXR1cmVzIikKLSAgICAgICAgIHJldHVybiB0cwotICAgICBlbHNlOgotICAgICAgICAgcmV0dXJuIGdldFRTLnRzCi1kaWZmIC0tZ2l0IGEvc21hcnQvcGx1Z2lucy95dW1jaGFubmVsc3luYy5weSBiL3NtYXJ0L3BsdWdpbnMveXVtY2hhbm5lbHN5bmMucHkKLS0tLSBhL3NtYXJ0L3BsdWdpbnMveXVtY2hhbm5lbHN5bmMucHkKLSsrKyBiL3NtYXJ0L3BsdWdpbnMveXVtY2hhbm5lbHN5bmMucHkKLUBAIC01Niw4ICs1Niw4IEBAIGRlZiBfZ2V0cmVsZWFzZXZlcigpOgotIAotICAgICBycG1yb290ID0gc3lzY29uZi5nZXQoInJwbS1yb290IiwgIi8iKQotICAgICB0cyA9IHJwbVV0aWxzLnRyYW5zYWN0aW9uLmluaXRSZWFkT25seVRyYW5zYWN0aW9uKHJvb3Q9cnBtcm9vdCkKLS0gICAgaWYgaGFzYXR0cihycG0sICdfUlBNVlNGX05PU0lHTkFUVVJFUycpIGFuZCBoYXNhdHRyKHJwbSwgJ19SUE1WU0ZfTk9ESUdFU1RTJyk6Ci0tICAgICAgICB0cy5wdXNoVlNGbGFncyh+KHJwbS5fUlBNVlNGX05PU0lHTkFUVVJFU3xycG0uX1JQTVZTRl9OT0RJR0VTVFMpKQotKyAgICAjaWYgaGFzYXR0cihycG0sICdfUlBNVlNGX05PU0lHTkFUVVJFUycpIGFuZCBoYXNhdHRyKHJwbSwgJ19SUE1WU0ZfTk9ESUdFU1RTJyk6Ci0rICAgICMgICAgdHMucHVzaFZTRmxhZ3MofihycG0uX1JQTVZTRl9OT1NJR05BVFVSRVN8cnBtLl9SUE1WU0ZfTk9ESUdFU1RTKSkKLSAgICAgcmVsZWFzZXZlciA9IE5vbmUKLSAgICAgIyBIQUNLOiB3ZSdyZSBoYXJkLWNvZGluZyB0aGUgbW9zdCB1c2VkIGRpc3Ryb3MsIHdpbGwgYWRkIG1vcmUgaWYgbmVlZGVkCi0gICAgIGlkeCA9IHRzLmRiTWF0Y2goJ3Byb3ZpZGVzJywgJ2ZlZG9yYS1yZWxlYXNlJykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zbWFydHBtL3NtYXJ0cG0tcnBtNS1zdXBwb3J0LWNoZWNrLXNpZ25hdHVyZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc21hcnRwbS9zbWFydHBtLXJwbTUtc3VwcG9ydC1jaGVjay1zaWduYXR1cmVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwNjdhOTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc21hcnRwbS9zbWFydHBtLXJwbTUtc3VwcG9ydC1jaGVjay1zaWduYXR1cmVzLnBhdGNoCkBAIC0wLDAgKzEsMTEyIEBACitGcm9tIDViNzllMjhiZDcwYTBlYzViMzRjNWZmMTliNjZjYmJkZDFlNDg4MzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIYWlxaW5nIEJhaSA8SGFpcWluZy5CYWlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgMTggTWFyIDIwMTYgMTM6MzQ6MDcgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gTWFrZSBzbWFydHBtIHRvIHN1cHBvcnQgY2hlY2sgc2lnbmF0dXJlcyBvZiBycG12NS4KKworVGhlIG9yaWdpbmFsIHN1cHBvcnQgZm9yICdycG0tY2hlY2stc2lnbmF0dXJlcycgaGFzIGJlZW4KK2Rpc2FibGVkIGZvciB0aGUgUlBNdjUgZG9lcyBub3Qgc3VwcG9ydCAnX1JQTVZTRl9OT1NJR05BVFVSRVMnCitub3cuIFRoaXMgZml4IHJlcGxhY2VzIHRoZSAnX1JQTVZTRl9OT1NJR05BVFVSRVMnIHdpdGgKK3JwbSBWUyBmbGFncyBzZXQ6UlBNVlNGX05PRFNBSEVBREVSfFJQTVZTRl9OT1JTQUhFQURFUnwKK1JQTVZTRl9OT0RTQXxSUE1WU0ZfTk9SU0EuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogSGFpcWluZyBCYWkgPEhhaXFpbmcuQmFpQHdpbmRyaXZlci5jb20+CistLS0KKyBzbWFydC9iYWNrZW5kcy9ycG0vYmFzZS5weSAgICAgIHwgNDMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KKyBzbWFydC9iYWNrZW5kcy9ycG0vcG0ucHkgICAgICAgIHwgIDIgKy0KKyBzbWFydC9wbHVnaW5zL3l1bWNoYW5uZWxzeW5jLnB5IHwgIDUgKysrLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDM3IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc21hcnQvYmFja2VuZHMvcnBtL2Jhc2UucHkgYi9zbWFydC9iYWNrZW5kcy9ycG0vYmFzZS5weQoraW5kZXggODVmNGQ0OS4uZGJkNjE2NSAxMDA2NDQKKy0tLSBhL3NtYXJ0L2JhY2tlbmRzL3JwbS9iYXNlLnB5CisrKysgYi9zbWFydC9iYWNrZW5kcy9ycG0vYmFzZS5weQorQEAgLTYzLDExICs2MywyMyBAQCBkZWYgZ2V0VFMobmV3PUZhbHNlKToKKyAgICAgICAgIGlmIHN5c2NvbmYuZ2V0KCJycG0tZGJwYXRoIik6CisgICAgICAgICAgICAgcnBtLmFkZE1hY3JvKCdfZGJwYXRoJywgIi8iICsgc3lzY29uZi5nZXQoInJwbS1kYnBhdGgiKSkKKyAgICAgICAgIGdldFRTLnRzID0gcnBtLnRzKGdldFRTLnJvb3QpCistICAgICAgICBpZiBub3Qgc3lzY29uZi5nZXQoInJwbS1jaGVjay1zaWduYXR1cmVzIiwgRmFsc2UpOgorLSAgICAgICAgICAgIGlmIGhhc2F0dHIocnBtLCAnX1JQTVZTRl9OT1NJR05BVFVSRVMnKToKKy0gICAgICAgICAgICAgICAgZ2V0VFMudHMuc2V0VlNGbGFncyhycG0uX1JQTVZTRl9OT1NJR05BVFVSRVMpCistICAgICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICAgICAgcmFpc2UgRXJyb3IsIF8oInJwbSByZXF1aXJlcyBjaGVja2luZyBzaWduYXR1cmVzIikKKysKKysgICAgICAgICMgX1JQTVZTRl9OT1NJR05BVFVSRVMgaXMgbm90IHN1cHBvcnRlZCBpbiBSUE12NSwgc28gaGVyZSB1c2VzCisrICAgICAgICAjIFJQTVZTRl9OT0RTQUhFQURFUnxSUE1WU0ZfTk9SU0FIRUFERVJ8UlBNVlNGX05PRFNBfFJQTVZTRl9OT1JTQQorKyAgICAgICAgIyB0byByZXBsYWNlICdfUlBNVlNGX05PU0lHTkFUVVJFUycgdG8gY29udGludWUgdG8gc3VwcG9ydCBjaGVjaworKyAgICAgICAgIyBycG0gc2lnbmF0dXJlcworKworKyAgICAgICAgI2lmIG5vdCBzeXNjb25mLmdldCgicnBtLWNoZWNrLXNpZ25hdHVyZXMiLCBGYWxzZSk6CisrICAgICAgICAjICAgIGlmIGhhc2F0dHIocnBtLCAnX1JQTVZTRl9OT1NJR05BVFVSRVMnKToKKysgICAgICAgICMgICAgICAgIGdldFRTLnRzLnNldFZTRmxhZ3MocnBtLl9SUE1WU0ZfTk9TSUdOQVRVUkVTKQorKyAgICAgICAgIyAgICBlbHNlOgorKyAgICAgICAgIyAgICAgICAgcmFpc2UgRXJyb3IsIF8oInJwbSByZXF1aXJlcyBjaGVja2luZyBzaWduYXR1cmVzIikKKysgICAgICAgIGlmIHN5c2NvbmYuZ2V0KCJycG0tY2hlY2stc2lnbmF0dXJlcyIpID09IEZhbHNlOgorKyAgICAgICAgICAgIGdldFRTLnRzLnNldFZTRmxhZ3MocnBtLlJQTVZTRl9OT0RTQUhFQURFUnxycG0uUlBNVlNGX05PUlNBSEVBREVSfFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJwbS5SUE1WU0ZfTk9EU0F8cnBtLlJQTVZTRl9OT1JTQSkKKysgICAgICAgIGVsc2U6CisrICAgICAgICAgICAgZ2V0VFMudHMuc2V0VlNGbGFncygwKQorKworICAgICAgICAgcnBtX2RicGF0aCA9IHN5c2NvbmYuZ2V0KCJycG0tZGJwYXRoIiwgInZhci9saWIvcnBtIikKKyAgICAgICAgIGRiZGlyID0gcnBtX2pvaW5fZGJwYXRoKGdldFRTLnJvb3QsIHJwbV9kYnBhdGgpCisgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihkYmRpcik6CitAQCAtODksMTEgKzEwMSwyMiBAQCBkZWYgZ2V0VFMobmV3PUZhbHNlKToKKyAgICAgICAgIGlmIHN5c2NvbmYuZ2V0KCJycG0tZGJwYXRoIik6CisgICAgICAgICAgICAgcnBtLmFkZE1hY3JvKCdfZGJwYXRoJywgIi8iICsgc3lzY29uZi5nZXQoInJwbS1kYnBhdGgiKSkKKyAgICAgICAgIHRzID0gcnBtLnRzKGdldFRTLnJvb3QpCistICAgICAgICBpZiBub3Qgc3lzY29uZi5nZXQoInJwbS1jaGVjay1zaWduYXR1cmVzIiwgRmFsc2UpOgorLSAgICAgICAgICAgIGlmIGhhc2F0dHIocnBtLCAnX1JQTVZTRl9OT1NJR05BVFVSRVMnKToKKy0gICAgICAgICAgICAgICAgdHMuc2V0VlNGbGFncyhycG0uX1JQTVZTRl9OT1NJR05BVFVSRVMpCistICAgICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICAgICAgcmFpc2UgRXJyb3IsIF8oInJwbSByZXF1aXJlcyBjaGVja2luZyBzaWduYXR1cmVzIikKKysKKysgICAgICAgICMgX1JQTVZTRl9OT1NJR05BVFVSRVMgaXMgbm90IHN1cHBvcnRlZCBpbiBSUE12NSwgc28gaGVyZSB1c2VzCisrICAgICAgICAjIFJQTVZTRl9OT0RTQUhFQURFUnxSUE1WU0ZfTk9SU0FIRUFERVJ8UlBNVlNGX05PRFNBfFJQTVZTRl9OT1JTQQorKyAgICAgICAgIyB0byByZXBsYWNlICdfUlBNVlNGX05PU0lHTkFUVVJFUycgdG8gY29udGludWUgdG8gc3VwcG9ydCBjaGVjaworKyAgICAgICAgIyBycG0gc2lnbmF0dXJlcworKworKyAgICAgICAgI2lmIG5vdCBzeXNjb25mLmdldCgicnBtLWNoZWNrLXNpZ25hdHVyZXMiLCBGYWxzZSk6CisrICAgICAgICAjICAgIGlmIGhhc2F0dHIocnBtLCAnX1JQTVZTRl9OT1NJR05BVFVSRVMnKToKKysgICAgICAgICMgICAgICAgIHRzLnNldFZTRmxhZ3MocnBtLl9SUE1WU0ZfTk9TSUdOQVRVUkVTKQorKyAgICAgICAgIyAgICBlbHNlOgorKyAgICAgICAgIyAgICAgICAgcmFpc2UgRXJyb3IsIF8oInJwbSByZXF1aXJlcyBjaGVja2luZyBzaWduYXR1cmVzIikKKysgICAgICAgIGlmIHN5c2NvbmYuZ2V0KCJycG0tY2hlY2stc2lnbmF0dXJlcyIpID09IEZhbHNlOgorKyAgICAgICAgICAgIHRzLnNldFZTRmxhZ3MocnBtLlJQTVZTRl9OT0RTQUhFQURFUnxycG0uUlBNVlNGX05PUlNBSEVBREVSfFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJwbS5SUE1WU0ZfTk9EU0F8cnBtLlJQTVZTRl9OT1JTQSkKKysgICAgICAgIGVsc2U6CisrICAgICAgICAgICAgdHMuc2V0VlNGbGFncygwKQorICAgICAgICAgcmV0dXJuIHRzCisgICAgIGVsc2U6CisgICAgICAgICByZXR1cm4gZ2V0VFMudHMKK2RpZmYgLS1naXQgYS9zbWFydC9iYWNrZW5kcy9ycG0vcG0ucHkgYi9zbWFydC9iYWNrZW5kcy9ycG0vcG0ucHkKK2luZGV4IGI1N2E4NDQuLjdiNjUxYjUgMTAwNjQ0CistLS0gYS9zbWFydC9iYWNrZW5kcy9ycG0vcG0ucHkKKysrKyBiL3NtYXJ0L2JhY2tlbmRzL3JwbS9wbS5weQorQEAgLTE4MCw3ICsxODAsNyBAQCBjbGFzcyBSUE1QYWNrYWdlTWFuYWdlcihQYWNrYWdlTWFuYWdlcik6CisgICAgICAgICAgICAgICAgIGZkID0gb3Mub3BlbihwYXRoLCBvcy5PX1JET05MWSkKKyAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgaCA9IHRzLmhkckZyb21GZG5vKGZkKQorLSAgICAgICAgICAgICAgICAgICAgaWYgc3lzY29uZi5nZXQoInJwbS1jaGVjay1zaWduYXR1cmVzIiwgRmFsc2UpOgorKyAgICAgICAgICAgICAgICAgICAgaWYgc3lzY29uZi5nZXQoInJwbS1jaGVjay1zaWduYXR1cmVzIiwgVHJ1ZSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGdldF9wdWJsaWNfa2V5KGgpID09ICcobm9uZSknOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgcnBtLmVycm9yKCdwYWNrYWdlIGlzIG5vdCBzaWduZWQnKQorICAgICAgICAgICAgICAgICBleGNlcHQgcnBtLmVycm9yLCBlOgorZGlmZiAtLWdpdCBhL3NtYXJ0L3BsdWdpbnMveXVtY2hhbm5lbHN5bmMucHkgYi9zbWFydC9wbHVnaW5zL3l1bWNoYW5uZWxzeW5jLnB5CitpbmRleCBmODEwN2U2Li4yZGM1NDgyIDEwMDY0NAorLS0tIGEvc21hcnQvcGx1Z2lucy95dW1jaGFubmVsc3luYy5weQorKysrIGIvc21hcnQvcGx1Z2lucy95dW1jaGFubmVsc3luYy5weQorQEAgLTU2LDggKzU2LDkgQEAgZGVmIF9nZXRyZWxlYXNldmVyKCk6CisgCisgICAgIHJwbXJvb3QgPSBzeXNjb25mLmdldCgicnBtLXJvb3QiLCAiLyIpCisgICAgIHRzID0gcnBtVXRpbHMudHJhbnNhY3Rpb24uaW5pdFJlYWRPbmx5VHJhbnNhY3Rpb24ocm9vdD1ycG1yb290KQorLSAgICBpZiBoYXNhdHRyKHJwbSwgJ19SUE1WU0ZfTk9TSUdOQVRVUkVTJykgYW5kIGhhc2F0dHIocnBtLCAnX1JQTVZTRl9OT0RJR0VTVFMnKToKKy0gICAgICAgIHRzLnB1c2hWU0ZsYWdzKH4ocnBtLl9SUE1WU0ZfTk9TSUdOQVRVUkVTfHJwbS5fUlBNVlNGX05PRElHRVNUUykpCisrICAgICNfUlBNVlNGX05PU0lHTkFUVVJFUyBpcyBub3Qgc3VwcG9ydGVkIGluIFJQTXY1CisrICAgICNpZiBoYXNhdHRyKHJwbSwgJ19SUE1WU0ZfTk9TSUdOQVRVUkVTJykgYW5kIGhhc2F0dHIocnBtLCAnX1JQTVZTRl9OT0RJR0VTVFMnKToKKysgICAgIyAgICB0cy5wdXNoVlNGbGFncyh+KHJwbS5fUlBNVlNGX05PU0lHTkFUVVJFU3xycG0uX1JQTVZTRl9OT0RJR0VTVFMpKQorICAgICByZWxlYXNldmVyID0gTm9uZQorICAgICAjIEhBQ0s6IHdlJ3JlIGhhcmQtY29kaW5nIHRoZSBtb3N0IHVzZWQgZGlzdHJvcywgd2lsbCBhZGQgbW9yZSBpZiBuZWVkZWQKKyAgICAgaWR4ID0gdHMuZGJNYXRjaCgncHJvdmlkZXMnLCAnZmVkb3JhLXJlbGVhc2UnKQorLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc21hcnRwbV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc21hcnRwbV9naXQuYmIKaW5kZXggZDlhOTA4ZC4uODYxOTEwYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNtYXJ0cG1fZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zbWFydHBtX2dpdC5iYgpAQCAtMTMsMTYgKzEzLDIwIEBACiAKIFNSQ19VUkkgPSAiXAogICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20vc21hcnRwbS9zbWFydC5naXQgXAotICAgICAgICAgIGZpbGU6Ly9zbWFydHBtLXJwbTUtbm9kaWcucGF0Y2ggXAogICAgICAgICAgIGZpbGU6Ly9zbWFydC1yZWNvbW1lbmRzLnBhdGNoIFwKLSAgICAgICAgICBmaWxlOi8vc21hcnQtaW1wcm92ZS1lcnJvci1yZXBvcnRpbmcucGF0Y2ggXAogICAgICAgICAgIGZpbGU6Ly9zbWFydC1jaGFubmVsc2Rpci5wYXRjaCBcCisgICAgICAgICAgZmlsZTovL3NtYXJ0LXJwbS10cmFuc2FjdGlvbi1mYWlsdXJlLWNoZWNrLnBhdGNoIFwKICAgICAgICAgICBmaWxlOi8vc21hcnQtYXR0ZW1wdC5wYXRjaCBcCiAgICAgICAgICAgZmlsZTovL3NtYXJ0LWF0dGVtcHQtZml4LnBhdGNoIFwKICAgICAgICAgICBmaWxlOi8vc21hcnQtYWRkLWZvci1ycG0taWdub3Jlc2l6ZS1jaGVjay5wYXRjaCBcCiAgICAgICAgICAgZmlsZTovL3NtYXJ0LWFscmVhZHktaW5zdGFsbGVkLW1lc3NhZ2UucGF0Y2ggXAogICAgICAgICAgIGZpbGU6Ly9zbWFydC1zZXQtbm9wcm9ncmVzcy1mb3ItcHljdXJsLnBhdGNoIFwKICAgICAgICAgICBmaWxlOi8vc21hcnQtY2FjaGUucHktZ2V0UGFja2FnZXMtbWF0Y2hlcy1uYW1lLXZlcnNpb24ucGF0Y2ggXAorICAgICAgICAgIGZpbGU6Ly9zbWFydC1jaGFubmVsLXJlbW92ZS1hbGwucGF0Y2ggXAorICAgICAgICAgIGZpbGU6Ly9zbWFydC1sb2NhbGUucGF0Y2ggXAorICAgICAgICAgIGZpbGU6Ly9zbWFydHBtLXJwbTUtc3VwcG9ydC1jaGVjay1zaWduYXR1cmVzLnBhdGNoIFwKKyAgICAgICAgICBmaWxlOi8vc21hcnQtYWRkLWRldWdnaW5nLXdoZW4tdGFyZ2V0cGF0aC1pcy1lbXB0eS5wYXRjaCBcCisgICAgICAgICAgZmlsZTovL2NoYW5uZWxzLXJwbV9zeXMtdXNlLW1kNXN1bS1pbnN0ZWFkLW9mLW10aW1lLWFzLXRoZS0ucGF0Y2ggXAogICAgICAgICAgIgogCiBTUkNSRVYgPSAiNDA3YTdlY2E3NjY0MzEyNTdkY2QxZGExNTE3NWNjMzZhMWJiMjJkMCIKQEAgLTUzLDQxICs1Nyw0MSBAQAogCiBkb19pbnN0YWxsX2FwcGVuZCgpIHsKICAgICMgV2UgZG9uJ3Qgc3VwcG9ydCB0aGUgZm9sbG93aW5nIGl0ZW1zCi0gICBybSAtcmYgJHtEfSR7bGliZGlyfS9weXRob24qL3NpdGUtcGFja2FnZXMvc21hcnQvYmFja2VuZHMvc2xhY2sKLSAgIHJtIC1yZiAke0R9JHtsaWJkaXJ9L3B5dGhvbiovc2l0ZS1wYWNrYWdlcy9zbWFydC9iYWNrZW5kcy9hcmNoCi0gICBybSAtcmYgJHtEfSR7bGliZGlyfS9weXRob24qL3NpdGUtcGFja2FnZXMvc21hcnQvaW50ZXJmYWNlcy9xdAorICAgcm0gLXJmICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zbWFydC9iYWNrZW5kcy9zbGFjaworICAgcm0gLXJmICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zbWFydC9iYWNrZW5kcy9hcmNoCisgICBybSAtcmYgJHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3NtYXJ0L2ludGVyZmFjZXMvcXQKIAogICAgIyBUZW1wb3JhcnksIGRlYmlhbiBzdXBwb3J0IGluIE9FIGlzIG1pc3NpbmcgdGhlIHB5dGhvbiBtb2R1bGUKLSAgIHJtIC1mICR7RH0ke2xpYmRpcn0vcHl0aG9uKi9zaXRlLXBhY2thZ2VzL3NtYXJ0L3BsdWdpbnMvYXB0Y2hhbm5lbHN5bmMucHkqCi0gICBybSAtZiAke0R9JHtsaWJkaXJ9L3B5dGhvbiovc2l0ZS1wYWNrYWdlcy9zbWFydC9wbHVnaW5zL2RlYmRpci5weSoKLSAgIHJtIC1yZiAke0R9JHtsaWJkaXJ9L3B5dGhvbiovc2l0ZS1wYWNrYWdlcy9zbWFydC9iYWNrZW5kcy9kZWIKKyAgIHJtIC1mICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zbWFydC9wbHVnaW5zL2FwdGNoYW5uZWxzeW5jLnB5KgorICAgcm0gLWYgJHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3NtYXJ0L3BsdWdpbnMvZGViZGlyLnB5KgorICAgcm0gLXJmICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zbWFydC9iYWNrZW5kcy9kZWIKIAogICAgIyBEaXNhYmxlIGF1dG9tYXRpYyBjaGFubmVsIGRldGVjdGlvbgotICAgcm0gLWYgJHtEfSR7bGliZGlyfS9weXRob24qL3NpdGUtcGFja2FnZXMvc21hcnQvcGx1Z2lucy9kZXRlY3RzeXMucHkqCisgICBybSAtZiAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc21hcnQvcGx1Z2lucy9kZXRlY3RzeXMucHkqCiAKICAgICMgRGlzYWJsZSBsYW5kc2NhcGUgc3VwcG9ydAotICAgcm0gLWYgJHtEfSR7bGliZGlyfS9weXRob24qL3NpdGUtcGFja2FnZXMvc21hcnQvcGx1Z2lucy9sYW5kc2NhcGUucHkqCisgICBybSAtZiAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc21hcnQvcGx1Z2lucy9sYW5kc2NhcGUucHkqCiAKICAgICMgRGlzYWJsZSB1cnBtaSBjaGFubmVsIHN1cHBvcnQKLSAgIHJtIC1mICR7RH0ke2xpYmRpcn0vcHl0aG9uKi9zaXRlLXBhY2thZ2VzL3NtYXJ0L3BsdWdpbnMvdXJwbWljaGFubmVsc3luYy5weSoKKyAgIHJtIC1mICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zbWFydC9wbHVnaW5zL3VycG1pY2hhbm5lbHN5bmMucHkqCiAKICAgICMgRGlzYWJsZSB5dW0gY2hhbm5lbCBzdXBwb3J0Ci0gICBybSAtZiAke0R9JHtsaWJkaXJ9L3B5dGhvbiovc2l0ZS1wYWNrYWdlcy9zbWFydC9wbHVnaW5zL3l1bWNoYW5uZWxzeW5jLnB5KgorICAgcm0gLWYgJHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3NtYXJ0L3BsdWdpbnMveXVtY2hhbm5lbHN5bmMucHkqCiAKICAgICMgRGlzYWJsZSB6eXBwZXIgY2hhbm5lbCBzdXBwb3J0Ci0gICBybSAtZiAke0R9JHtsaWJkaXJ9L3B5dGhvbiovc2l0ZS1wYWNrYWdlcy9zbWFydC9wbHVnaW5zL3p5cHBjaGFubmVsc3luYy5weSoKKyAgIHJtIC1mICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zbWFydC9wbHVnaW5zL3p5cHBjaGFubmVsc3luYy5weSoKIAogICAgaWYgWyAteiAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncnBtJywgJ3JwbScsICcnLCBkKX0iIF07IHRoZW4KLSAgICAgIHJtIC1mICR7RH0ke2xpYmRpcn0vcHl0aG9uKi9zaXRlLXBhY2thZ2VzL3NtYXJ0L3BsdWdpbnMvcnBtZGlyLnB5KgotICAgICAgcm0gLXJmICR7RH0ke2xpYmRpcn0vcHl0aG9uKi9zaXRlLXBhY2thZ2VzL3NtYXJ0L2JhY2tlbmRzL3JwbQorICAgICAgcm0gLWYgJHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3NtYXJ0L3BsdWdpbnMvcnBtZGlyLnB5KgorICAgICAgcm0gLXJmICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zbWFydC9iYWNrZW5kcy9ycG0KICAgIGZpCiAKICAgIGlmIFsgLXogIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3F0NCcsICdxdDQnLCAnJywgZCl9IiBdOyB0aGVuCi0gICAgICBybSAtcmYgJHtEfSR7bGliZGlyfS9weXRob24qL3NpdGUtcGFja2FnZXMvc21hcnQvaW50ZXJmYWNlcy9xdDQKKyAgICAgIHJtIC1yZiAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc21hcnQvaW50ZXJmYWNlcy9xdDQKICAgIGZpCiAKICAgIGlmIFsgLXogIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2d0aysnLCAnZ3RrJywgJycsIGQpfSIgXTsgdGhlbgotICAgICAgcm0gLXJmICR7RH0ke2xpYmRpcn0vcHl0aG9uKi9zaXRlLXBhY2thZ2VzL3NtYXJ0L2ludGVyZmFjZXMvZ3RrCisgICAgICBybSAtcmYgJHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3NtYXJ0L2ludGVyZmFjZXMvZ3RrCiAgICBmaQogfQogCkBAIC0xMjcsMTAgKzEzMSwxMCBAQAogCiBGSUxFU19zbWFydHBtID0gIiR7YmluZGlyfS9zbWFydCIKIAotRklMRVNfJHtQTn0tYmFja2VuZC1ycG0gPSAiJHtsaWJkaXJ9L3B5dGhvbiovc2l0ZS1wYWNrYWdlcy9zbWFydC9iYWNrZW5kcy9ycG0iCitGSUxFU18ke1BOfS1iYWNrZW5kLXJwbSA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zbWFydC9iYWNrZW5kcy9ycG0iCiAKLUZJTEVTXyR7UE59LWludGVyZmFjZS1xdDQgPSAiJHtsaWJkaXJ9L3B5dGhvbiovc2l0ZS1wYWNrYWdlcy9zbWFydC9pbnRlcmZhY2VzL3F0NCIKLUZJTEVTXyR7UE59LWludGVyZmFjZS1ndGsgPSAiJHtsaWJkaXJ9L3B5dGhvbiovc2l0ZS1wYWNrYWdlcy9zbWFydC9pbnRlcmZhY2VzL2d0ayIKK0ZJTEVTXyR7UE59LWludGVyZmFjZS1xdDQgPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc21hcnQvaW50ZXJmYWNlcy9xdDQiCitGSUxFU18ke1BOfS1pbnRlcmZhY2UtZ3RrID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3NtYXJ0L2ludGVyZmFjZXMvZ3RrIgogRklMRVNfJHtQTn0taW50ZXJmYWNlLWltYWdlcyA9ICIke2RhdGFkaXJ9LyR7YmFzZWxpYn0vcHl0aG9uKi9zaXRlLXBhY2thZ2VzL3NtYXJ0L2ludGVyZmFjZXMvaW1hZ2VzIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc21tYXAuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNtbWFwLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjdlNmI1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNtbWFwLmluYwpAQCAtMCwwICsxLDE5IEBACitTVU1NQVJZID0gIlB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiBhIHNsaWRpbmcgd2luZG93IG1lbW9yeSBtYXAgbWFuYWdlciIKK0RFU0NSSVBUSU9OID0gIkEgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24gb2YgYSBzbGlkaW5nIG1lbW9yeSBtYXAgdG8gXAoraGVscCB1bmlmeWluZyBtZW1vcnkgbWFwcGVkIGFjY2VzcyBvbiAzMiBhbmQgNjQgYml0IHN5c3RlbXMgYW5kIHRvIGhlbHAgXAorbWFuYWdpbmcgcmVzb3VyY2VzIG1vcmUgZWZmaWNpZW50bHkuIgorSE9NRVBBR0UgPSAiaHR0cDovL2dpdGh1Yi5jb20vZ2l0cHl0aG9uLWRldmVsb3BlcnMvR2l0UHl0aG9uIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO2JlZ2lubGluZT04O2VuZGxpbmU9ODttZDU9ZTkxMGIzNWIwZWY0ZTFmNjY1YjlhNzVkNmFmYjc3MDkiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9zL3NtbWFwL3NtbWFwLSR7UFZ9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkNzkzMmQ1YWNlMjA2YmY0YWUxNTE5OGNmMzZmYjZhYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwZTJiNjJiNDk3YmQ1ZjBhZmViYzAwMmVkYTRkOTBkZjlkMjA5YzMwZWYyNTdlODY3M2M5MGE2YjVjMTE5ZDYyIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9zbW1hcC8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvc21tYXAvKD9QPHB2ZXI+KFxkK1tcLlwtX10qKSspIgorCitTID0gIiR7V09SS0RJUn0vc21tYXAtJHtQVn0iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNtbWFwXzAuOS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNtbWFwXzAuOS4wLmJiCmluZGV4IDVmOWNmNDUuLmMxMThkZDggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zbW1hcF8wLjkuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc21tYXBfMC45LjAuYmIKQEAgLTEsMjMgKzEsNSBAQAotU1VNTUFSWSA9ICJQeXRob24gaW1wbGVtZW50YXRpb24gb2YgYSBzbGlkaW5nIHdpbmRvdyBtZW1vcnkgbWFwIG1hbmFnZXIiCi1ERVNDUklQVElPTiA9ICJBIHB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIGEgc2xpZGluZyBtZW1vcnkgbWFwIHRvIFwKLWhlbHAgdW5pZnlpbmcgbWVtb3J5IG1hcHBlZCBhY2Nlc3Mgb24gMzIgYW5kIDY0IGJpdCBzeXN0ZW1zIGFuZCB0byBoZWxwIFwKLW1hbmFnaW5nIHJlc291cmNlcyBtb3JlIGVmZmljaWVudGx5LiIKLUhPTUVQQUdFID0gImh0dHA6Ly9naXRodWIuY29tL2dpdHB5dGhvbi1kZXZlbG9wZXJzL0dpdFB5dGhvbiIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTztiZWdpbmxpbmU9ODtlbmRsaW5lPTg7bWQ1PWU5MTBiMzViMGVmNGUxZjY2NWI5YTc1ZDZhZmI3NzA5IgotCi1TUkNfVVJJID0gImh0dHA6Ly9weXBpLnB5dGhvbi5vcmcvcGFja2FnZXMvc291cmNlL3Mvc21tYXAvc21tYXAtJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gImQ3OTMyZDVhY2UyMDZiZjRhZTE1MTk4Y2YzNmZiNmFiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBlMmI2MmI0OTdiZDVmMGFmZWJjMDAyZWRhNGQ5MGRmOWQyMDljMzBlZjI1N2U4NjczYzkwYTZiNWMxMTlkNjIiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3NtbWFwLyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9zbW1hcC8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykiCi0KLVMgPSAiJHtXT1JLRElSfS9zbW1hcC0ke1BWfSIKK3JlcXVpcmUgcHl0aG9uLXNtbWFwLmluYwogCiBpbmhlcml0IHNldHVwdG9vbHMKIAogUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbi1jb2RlY3MgcHl0aG9uLW1tYXAgcHl0aG9uLWxhbmciCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi5pbmMKaW5kZXggZjQ4MThjNi4uNzlhNDMxYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24uaW5jCkBAIC01LDEyICs1LDEyIEBACiAjIGJ1bXAgdGhpcyBvbiBldmVyeSBjaGFuZ2UgaW4gY29udHJpYi9weXRob24vZ2VuZXJhdGUtbWFuaWZlc3QtMi43LnB5CiBJTkNfUFIgPSAicjEiCiAKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWRkOThkMDFkNDcxZmFjOGQ4ZGJkZDk3NTIyOWRiYTAzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NmI2MDI1ODEzMGU0ZWQxMGQzMTAxNTE3ZWI1YjkzODUiCiAKIFNSQ19VUkkgPSAiaHR0cDovL3d3dy5weXRob24ub3JnL2Z0cC9weXRob24vJHtQVn0vUHl0aG9uLSR7UFZ9LnRhci54eiIKIAotU1JDX1VSSVttZDVzdW1dID0gIjFkYmNjODQ4YjRjZDgzOTlhODE5OWQwMDBmOWY4MjNjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk2MmI0YzQ1YWY1MDEyNGVhNjFmMTFhMzBkZWI0MzQyZmMwYmMyMTEyNjc5MGZhMWQ3ZjZjNzk4MDk0MTNmNDYiCitTUkNfVVJJW21kNXN1bV0gPSAiNTdkZmZjZWU5Y2VlOGJiMmFiNWY4MmFmMWQ4ZTlhNjkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDc4MzcxMjFkZDU2NTJhMDVmZWY4MDdjMzYxOTA5ZDI1NWQxNzMyODBjNGUxYTRkZWQ5NGQ3M2Q4MGExZjk3OCIKIAogIyBweXRob24gcmVjaXBlIGlzIGFjdHVhbGx5IHB5dGhvbiAyLngKICMgYWxzbywgZXhjbHVkZSBwcmUtcmVsZWFzZXMgZm9yIGJvdGggcHl0aG9uIDIueCBhbmQgMy54CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDAwMS1kaXN0dXRpbHMtc2V0LXRoZS1wcmVmaXgtdG8tYmUtaW5zaWRlLXN0YWdpbmctZGlyZWN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAwMDEtZGlzdHV0aWxzLXNldC10aGUtcHJlZml4LXRvLWJlLWluc2lkZS1zdGFnaW5nLWRpcmVjdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDJmODQ5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAwMDEtZGlzdHV0aWxzLXNldC10aGUtcHJlZml4LXRvLWJlLWluc2lkZS1zdGFnaW5nLWRpcmVjdC5wYXRjaApAQCAtMCwwICsxLDUxIEBACitGcm9tIDRjZGYyZTlkZjEzYzYzMjdmY2M5NGQ1M2U0OTUzMDA1NTQzYWVmM2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgNiBBcHIgMjAxNiAxNzo0MzowMiArMDMwMAorU3ViamVjdDogW1BBVENIIDAxLzEwXSBkaXN0dXRpbHM6IHNldCB0aGUgcHJlZml4IHRvIGJlIGluc2lkZSBzdGFnaW5nCisgZGlyZWN0b3J5CisKK1RoZSBwcm9wZXIgcHJlZml4IGlzIGluc2lkZSBvdXIgc3RhZ2luZyBhcmVhLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogTWljaGFlbCAnTWlja2V5JyBMYXVlciA8bWlja2V5QHZhbmlsbGUtbWVkaWEuZGU+CitTaWduZWQtb2ZmLWJ5OiBQaGlsIEJsdW5kZWxsIDxwaGlsYkBnbnUub3JnPgorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBMaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weSB8IDEwICsrKysrKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQoraW5kZXggZGU3ZGExZC4uZjNhYWNmNyAxMDA2NDQKKy0tLSBhL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CisrKysgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQorQEAgLTc1LDcgKzc1LDcgQEAgZGVmIGdldF9weXRob25faW5jKHBsYXRfc3BlY2lmaWM9MCwgcHJlZml4PU5vbmUpOgorICAgICBzeXMuZXhlY19wcmVmaXggLS0gaS5lLiwgaWdub3JlICdwbGF0X3NwZWNpZmljJy4KKyAgICAgIiIiCisgICAgIGlmIHByZWZpeCBpcyBOb25lOgorLSAgICAgICAgcHJlZml4ID0gcGxhdF9zcGVjaWZpYyBhbmQgRVhFQ19QUkVGSVggb3IgUFJFRklYCisrICAgICAgICBwcmVmaXggPSBvcy5lbnZpcm9uWydTVEFHSU5HX0lOQ0RJUiddLnJzdHJpcCgnaW5jbHVkZScpCisgCisgICAgIGlmIG9zLm5hbWUgPT0gInBvc2l4IjoKKyAgICAgICAgIGlmIHB5dGhvbl9idWlsZDoKK0BAIC0xMTUsMTIgKzExNSwxNiBAQCBkZWYgZ2V0X3B5dGhvbl9saWIocGxhdF9zcGVjaWZpYz0wLCBzdGFuZGFyZF9saWI9MCwgcHJlZml4PU5vbmUpOgorICAgICBJZiAncHJlZml4JyBpcyBzdXBwbGllZCwgdXNlIGl0IGluc3RlYWQgb2Ygc3lzLnByZWZpeCBvcgorICAgICBzeXMuZXhlY19wcmVmaXggLS0gaS5lLiwgaWdub3JlICdwbGF0X3NwZWNpZmljJy4KKyAgICAgIiIiCisrICAgIGxpYl9iYXNlbmFtZSA9IG9zLmVudmlyb25bJ1NUQUdJTkdfTElCRElSJ10uc3BsaXQoJy8nKVstMV0KKyAgICAgaWYgcHJlZml4IGlzIE5vbmU6CistICAgICAgICBwcmVmaXggPSBwbGF0X3NwZWNpZmljIGFuZCBFWEVDX1BSRUZJWCBvciBQUkVGSVgKKysgICAgICAgIGlmIHBsYXRfc3BlY2lmaWM6CisrICAgICAgICAgICAgcHJlZml4ID0gb3MuZW52aXJvblsnU1RBR0lOR19MSUJESVInXS5yc3RyaXAobGliX2Jhc2VuYW1lKQorKyAgICAgICAgZWxzZToKKysgICAgICAgICAgICBwcmVmaXggPSBQUkVGSVgKKyAKKyAgICAgaWYgb3MubmFtZSA9PSAicG9zaXgiOgorICAgICAgICAgbGlicHl0aG9uID0gb3MucGF0aC5qb2luKHByZWZpeCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGliIiwgInB5dGhvbiIgKyBnZXRfcHl0aG9uX3ZlcnNpb24oKSkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJfYmFzZW5hbWUsICJweXRob24iICsgZ2V0X3B5dGhvbl92ZXJzaW9uKCkpCisgICAgICAgICBpZiBzdGFuZGFyZF9saWI6CisgICAgICAgICAgICAgcmV0dXJuIGxpYnB5dGhvbgorICAgICAgICAgZWxzZToKKy0tIAorMi44LjAucmMzCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMS11c2UtcHJvcGVyLXRvb2xzLWZvci1jcm9zcy1idWlsZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMS11c2UtcHJvcGVyLXRvb2xzLWZvci1jcm9zcy1idWlsZC5wYXRjaAppbmRleCAxMjU3Y2E2Li5iMmE4YzNiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDEtdXNlLXByb3Blci10b29scy1mb3ItY3Jvc3MtYnVpbGQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAxLXVzZS1wcm9wZXItdG9vbHMtZm9yLWNyb3NzLWJ1aWxkLnBhdGNoCkBAIC03LDEzICs3LDEzIEBACiBTaWduZWQtb2ZmLWJ5OiBQYXVsIEVnZ2xldG9uIDxwYXVsLmVnZ2xldG9uQGxpbnV4LmludGVsLmNvbT4KIAogUmViYXNlZCBmb3IgcHl0aG9uLTIuNy45Ci1TaWduZWQtT2ZmLUJ5OiBBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyby5oZXJuYW5kZXpAbGludXguaW50ZWwuY29tPgogCi1JbmRleDogUHl0aG9uLTIuNy45L01ha2VmaWxlLnByZS5pbgorSW5kZXg6IFB5dGhvbi0yLjcuMTIvTWFrZWZpbGUucHJlLmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy45Lm9yaWcvTWFrZWZpbGUucHJlLmluCi0rKysgUHl0aG9uLTIuNy45L01ha2VmaWxlLnByZS5pbgotQEAgLTIzNCw2ICsyMzQsNyBAQCBMSUJGRklfSU5DTFVERURJUj0JQExJQkZGSV9JTkNMVURFRElSQAorLS0tIFB5dGhvbi0yLjcuMTIub3JpZy9NYWtlZmlsZS5wcmUuaW4KKysrKyBQeXRob24tMi43LjEyL01ha2VmaWxlLnByZS5pbgorQEAgLTI0Niw2ICsyNDYsNyBAQCBMSUJGRklfSU5DTFVERURJUj0JQExJQkZGSV9JTkNMVURFRElSQAogICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgIyBQYXJzZXIKICBQR0VOPQkJUGFyc2VyL3BnZW4kKEVYRSkKQEAgLTIxLDcgKzIxLDcgQEAKICAKICBQU1JDUz0JCVwKICAJCVBhcnNlci9hY2NlbGVyLmMgXAotQEAgLTQ0NSw3ICs0NDYsNyBAQCAkKEJVSUxEUFlUSE9OKToJTW9kdWxlcy9weXRob24ubyAkKExJQlJBCitAQCAtNTEzLDcgKzUxNCw3IEBAICQoQlVJTERQWVRIT04pOglNb2R1bGVzL3B5dGhvbi5vICQoTElCUkEKICAJCQkkKEJMRExJQlJBUlkpICQoTElCUykgJChNT0RMSUJTKSAkKFNZU0xJQlMpICQoTERMQVNUKQogIAogIHBsYXRmb3JtOiAkKEJVSUxEUFlUSE9OKSBweWJ1aWxkZGlyLnR4dApAQCAtMzAsMTYgKzMwLDE2IEBACiAgCiAgIyBDcmVhdGUgYnVpbGQgZGlyZWN0b3J5IGFuZCBnZW5lcmF0ZSB0aGUgc3lzY29uZmlnIGJ1aWxkLXRpbWUgZGF0YSB0aGVyZS4KICAjIHB5YnVpbGRkaXIudHh0IGNvbnRhaW5zIHRoZSBuYW1lIG9mIHRoZSBidWlsZCBkaXIgYW5kIGlzIHVzZWQgZm9yCi1AQCAtNjExLDcgKzYxMiw3IEBAIE1vZHVsZXMvcHdkbW9kdWxlLm86ICQoc3JjZGlyKS9Nb2R1bGVzL3AKLSAkKEdSQU1NQVJfSCk6ICQoR1JBTU1BUl9JTlBVVCkgJChQR0VOU1JDUykKLSAJCUAkKE1LRElSX1ApIEluY2x1ZGUKLSAJCSQoTUFLRSkgJChQR0VOKQotLQkJJChQR0VOKSAkKEdSQU1NQVJfSU5QVVQpICQoR1JBTU1BUl9IKSAkKEdSQU1NQVJfQykKLSsJCSQoSE9TVFBHRU4pICQoR1JBTU1BUl9JTlBVVCkgJChHUkFNTUFSX0gpICQoR1JBTU1BUl9DKQotICQoR1JBTU1BUl9DKTogJChHUkFNTUFSX0gpICQoR1JBTU1BUl9JTlBVVCkgJChQR0VOU1JDUykKLSAJCSQoTUFLRSkgJChHUkFNTUFSX0gpCi0gCQl0b3VjaCAkKEdSQU1NQVJfQykKLUBAIC0xMDQzLDI3ICsxMDQ0LDI3IEBAIGxpYmluc3RhbGw6CWJ1aWxkX2FsbCAkKHNyY2RpcikvTGliLyQoUEwKK0BAIC02ODQsNyArNjg1LDcgQEAgJChHUkFNTUFSX0gpOiAkKEdSQU1NQVJfSU5QVVQpICQoUEdFTikKKyAJQCQoTUtESVJfUCkgSW5jbHVkZQorIAkjIEF2b2lkIGNvcHlpbmcgdGhlIGZpbGUgb250byBpdHNlbGYgZm9yIGFuIGluLXRyZWUgYnVpbGQKKyAJaWYgdGVzdCAiJChjcm9zc19jb21waWxpbmcpIiAhPSAieWVzIjsgdGhlbiBcCistCQkkKFBHRU4pICQoR1JBTU1BUl9JTlBVVCkgJChHUkFNTUFSX0gpICQoR1JBTU1BUl9DKTsgXAorKwkJJChIT1NUUEdFTikgJChHUkFNTUFSX0lOUFVUKSAkKEdSQU1NQVJfSCkgJChHUkFNTUFSX0MpOyBcCisgCWVsc2UgXAorIAkJY3AgJChzcmNkaXIpL0luY2x1ZGUvZ3JhbWluaXQuaCAkKEdSQU1NQVJfSCkudG1wOyBcCisgCQltdiAkKEdSQU1NQVJfSCkudG1wICQoR1JBTU1BUl9IKTsgXAorQEAgLTExMzMsMjcgKzExMzQsMjcgQEAgbGliaW5zdGFsbDoJYnVpbGRfYWxsICQoc3JjZGlyKS9MaWIvJChQTAogIAkJCSQoREVTVERJUikkKExJQkRFU1QpL2Rpc3R1dGlscy90ZXN0cyA7IFwKICAJZmkKICAJUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAgJChSVU5TSEFSRUQpIFwKQEAgLTczLDExICs3MywxMSBAQAogIAogICMgQ3JlYXRlIHRoZSBQTEFURElSIHNvdXJjZSBkaXJlY3RvcnksIGlmIG9uZSB3YXNuJ3QgZGlzdHJpYnV0ZWQuLgogICQoc3JjZGlyKS9MaWIvJChQTEFURElSKToKLUluZGV4OiBQeXRob24tMi43Ljkvc2V0dXAucHkKK0luZGV4OiBQeXRob24tMi43LjEyL3NldHVwLnB5CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy45Lm9yaWcvc2V0dXAucHkKLSsrKyBQeXRob24tMi43Ljkvc2V0dXAucHkKLUBAIC0zMzQsNiArMzM0LDcgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgorLS0tIFB5dGhvbi0yLjcuMTIub3JpZy9zZXR1cC5weQorKysrIFB5dGhvbi0yLjcuMTIvc2V0dXAucHkKK0BAIC0zNTAsNiArMzUwLDcgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgogICAgICAgICAgICAgIHNlbGYuZmFpbGVkLmFwcGVuZChleHQubmFtZSkKICAgICAgICAgICAgICBzZWxmLmFubm91bmNlKCcqKiogV0FSTklORzogcmVuYW1pbmcgIiVzIiBzaW5jZSBpbXBvcnRpbmcgaXQnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIGZhaWxlZDogJXMnICUgKGV4dC5uYW1lLCB3aHkpLCBsZXZlbD0zKQpAQCAtODUsNyArODUsNyBAQAogICAgICAgICAgICAgIGFzc2VydCBub3Qgc2VsZi5pbnBsYWNlCiAgICAgICAgICAgICAgYmFzZW5hbWUsIHRhaWwgPSBvcy5wYXRoLnNwbGl0ZXh0KGV4dF9maWxlbmFtZSkKICAgICAgICAgICAgICBuZXduYW1lID0gYmFzZW5hbWUgKyAiX2ZhaWxlZCIgKyB0YWlsCi1AQCAtNTU4LDYgKzU1OSw5IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKK0BAIC01NzQsNiArNTc1LDkgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgogIAogICAgICAgICAgIyBYWFggT21pdHRlZCBtb2R1bGVzOiBnbCwgcHVyZSwgZGwsIFNHSS1zcGVjaWZpYyBtb2R1bGVzCiAgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDYtYXZvaWRfdXNyX2xpYl90ZXJtY2FwX3BhdGhfaW5fbGlua2luZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wNi1hdm9pZF91c3JfbGliX3Rlcm1jYXBfcGF0aF9pbl9saW5raW5nLnBhdGNoCmluZGV4IGU0NTJjYjYuLjQzNWIzMTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wNi1hdm9pZF91c3JfbGliX3Rlcm1jYXBfcGF0aF9pbl9saW5raW5nLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wNi1hdm9pZF91c3JfbGliX3Rlcm1jYXBfcGF0aF9pbl9saW5raW5nLnBhdGNoCkBAIC0xMSw3ICsxMSw3IEBACiAKIDIwMTEvMDkvMjkKIFJlYmFzZWQgZm9yIHB5dGhvbiAyLjcuMgotU2lnbmVkLU9mZi1CeTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+CiAKIFNpZ25lZC1vZmYtYnk6IFBhdWwgRWdnbGV0b24gPHBhdWwuZWdnbGV0b25AbGludXguaW50ZWwuY29tPgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vQ1ZFLTIwMTYtNTYzNi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9DVkUtMjAxNi01NjM2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhMzc0NzEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vQ1ZFLTIwMTYtNTYzNi5wYXRjaApAQCAtMCwwICsxLDQ0IEBACisKKyMgSEcgY2hhbmdlc2V0IHBhdGNoCisjIFVzZXIgQmVuamFtaW4gUGV0ZXJzb24gPGJlbmphbWluQHB5dGhvbi5vcmc+CisjIERhdGUgMTQ1MzM1NzQyNCAyODgwMAorIyBOb2RlIElEIDk4NWZjNjRjNjBkNmFkZmZkMTEzOGI2Y2M0NmRmMzg4Y2E5MWNhNWQKKyMgUGFyZW50ICA3ZWM5NTRiOWZjNTQ0NDhhMzViNTZkMjcxMzQwYmExMDllYjM4MWI5CitwcmV2ZW50IGJ1ZmZlciBvdmVyZmxvdyBpbiBnZXRfZGF0YSAoY2xvc2VzICMyNjE3MSkKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAoraHR0cHM6Ly9oZy5weXRob24ub3JnL2NweXRob24vcmV2Lzk4NWZjNjRjNjBkNgorCitDVkU6IENWRS0yMDE2LTU2MzYKK1NpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgorCitJbmRleDogUHl0aG9uLTIuNy4xMS9NaXNjL05FV1MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBQeXRob24tMi43LjExLm9yaWcvTWlzYy9ORVdTCisrKysgUHl0aG9uLTIuNy4xMS9NaXNjL05FV1MKK0BAIC03LDYgKzcsOSBAQCBXaGF0J3MgTmV3IGluIFB5dGhvbiAyLjcuMTE/CisgCisgKlJlbGVhc2UgZGF0ZTogMjAxNS0xMi0wNSoKKyAKKystIElzc3VlICMyNjE3MTogRml4IHBvc3NpYmxlIGludGVnZXIgb3ZlcmZsb3cgYW5kIGhlYXAgY29ycnVwdGlvbiBpbgorKyAgemlwaW1wb3J0ZXIuZ2V0X2RhdGEoKS4KKysKKyBMaWJyYXJ5CisgLS0tLS0tLQorIAorSW5kZXg6IFB5dGhvbi0yLjcuMTEvTW9kdWxlcy96aXBpbXBvcnQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIFB5dGhvbi0yLjcuMTEub3JpZy9Nb2R1bGVzL3ppcGltcG9ydC5jCisrKysgUHl0aG9uLTIuNy4xMS9Nb2R1bGVzL3ppcGltcG9ydC5jCitAQCAtODk1LDYgKzg5NSwxMSBAQCBnZXRfZGF0YShjaGFyICphcmNoaXZlLCBQeU9iamVjdCAqdG9jX2VuCisgICAgICAgICBQeU1hcnNoYWxfUmVhZFNob3J0RnJvbUZpbGUoZnApOyAgICAgICAgLyogbG9jYWwgaGVhZGVyIHNpemUgKi8KKyAgICAgZmlsZV9vZmZzZXQgKz0gbDsgICAgICAgICAgIC8qIFN0YXJ0IG9mIGZpbGUgZGF0YSAqLworIAorKyAgICBpZiAoZGF0YV9zaXplID4gTE9OR19NQVggLSAxKSB7CisrICAgICAgICBmY2xvc2UoZnApOworKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKysgICAgICAgIHJldHVybiBOVUxMOworKyAgICB9CisgICAgIHJhd19kYXRhID0gUHlTdHJpbmdfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKilOVUxMLCBjb21wcmVzcyA9PSAwID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX3NpemUgOiBkYXRhX3NpemUgKyAxKTsKKyAgICAgaWYgKHJhd19kYXRhID09IE5VTEwpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9hdm9pZF9wYXJhbGxlbF9tYWtlX3JhY2VzX29uX3BnZW4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vYXZvaWRfcGFyYWxsZWxfbWFrZV9yYWNlc19vbl9wZ2VuLnBhdGNoCmluZGV4IGU5YmFlMzIuLjgwMTIyNDUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9hdm9pZF9wYXJhbGxlbF9tYWtlX3JhY2VzX29uX3BnZW4ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2F2b2lkX3BhcmFsbGVsX21ha2VfcmFjZXNfb25fcGdlbi5wYXRjaApAQCAtNCw4ICs0LDggQEAKIAogLSBJbXBsZW1lbnRzIFJpY2hhcmQgUHVyZGllJ3MgaWRlYQogCi1TaWduZWQtT2ZmLUJ5OiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KLVNpZ25lZC1PZmYtQnk6IEFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyby5oZXJuYW5kZXpAbGludXguaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CitTaWduZWQtb2ZmLWJ5OiBBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4KIAogSW5kZXg6IFB5dGhvbi0yLjcuOS9NYWtlZmlsZS5wcmUuaW4KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9maXhfZm9yX3VzaW5nX2RpZmZlcmVudF9saWJkaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vZml4X2Zvcl91c2luZ19kaWZmZXJlbnRfbGliZGlyLnBhdGNoCmluZGV4IGU0MjYyZDkuLjVmNzMwOTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9maXhfZm9yX3VzaW5nX2RpZmZlcmVudF9saWJkaXIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2ZpeF9mb3JfdXNpbmdfZGlmZmVyZW50X2xpYmRpci5wYXRjaApAQCAtNCwxNSArNCwxNSBAQAogVGhpcyBwYXRjaCBtYWtlcyB0aGUgbmF0aXZlIHB5dGhvbiBiaW5hcnkgbW9kdWxlcyBmaW5kYWJsZQogaW4gdGhlIGluc3RhbGwgcHJvY2VzcyBvZiB0aGUgaG9zdCBweXRob24uCiAKLVNpZ25lZC1PZmYtQnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgogRGF0ZTogMjAxMi8wMy8xNAogCiBVcGRhdGVkIGZvciBweXRob24gMi43LjMKLVNpZ25lZC1PZmYtQnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgogRGF0ZTogMjAxMi8wNS8wMQogCiBSZWJhc2VkIGZvciBweXRob24tMi43LjkKLVNpZ25lZC1PZmYtQnk6IEFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyby5oZXJuYW5kZXpAbGludXguaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+CiAKIAogSW5kZXg6IFB5dGhvbi0yLjcuOS9MaWIvc3lzY29uZmlnLnB5CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vbXVsdGlsaWIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vbXVsdGlsaWIucGF0Y2gKaW5kZXggMGJmYTBkMi4uYjE2OTEzMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL211bHRpbGliLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9tdWx0aWxpYi5wYXRjaApAQCAtMSwxMSArMSwxMSBAQAogUmViYXNlZCBmb3IgcHl0aG9uLTIuNy45Ci1TaWduZWQtT2ZmLUJ5OiBBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyby5oZXJuYW5kZXpAbGludXguaW50ZWwuY29tPgogCi1JbmRleDogUHl0aG9uLTIuNy45L2NvbmZpZ3VyZS5hYworSW5kZXg6IFB5dGhvbi0yLjcuMTIvY29uZmlndXJlLmFjCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy45Lm9yaWcvY29uZmlndXJlLmFjCi0rKysgUHl0aG9uLTIuNy45L2NvbmZpZ3VyZS5hYwotQEAgLTczNiw2ICs3MzYsMTAgQEAgU3VuT1MqKQorLS0tIFB5dGhvbi0yLjcuMTIub3JpZy9jb25maWd1cmUuYWMKKysrKyBQeXRob24tMi43LjEyL2NvbmZpZ3VyZS5hYworQEAgLTc1Niw2ICs3NTYsMTAgQEAgU3VuT1MqKQogICAgICA7OwogIGVzYWMKICAKQEAgLTE2LDEwICsxNiwxMCBAQAogIAogIEFDX1NVQlNUKExJQlJBUlkpCiAgQUNfTVNHX0NIRUNLSU5HKExJQlJBUlkpCi1JbmRleDogUHl0aG9uLTIuNy45L0luY2x1ZGUvcHl0aG9ucnVuLmgKK0luZGV4OiBQeXRob24tMi43LjEyL0luY2x1ZGUvcHl0aG9ucnVuLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43Ljkub3JpZy9JbmNsdWRlL3B5dGhvbnJ1bi5oCi0rKysgUHl0aG9uLTIuNy45L0luY2x1ZGUvcHl0aG9ucnVuLmgKKy0tLSBQeXRob24tMi43LjEyLm9yaWcvSW5jbHVkZS9weXRob25ydW4uaAorKysrIFB5dGhvbi0yLjcuMTIvSW5jbHVkZS9weXRob25ydW4uaAogQEAgLTEwOCw2ICsxMDgsNyBAQCBQeUFQSV9GVU5DKGNoYXIgKikgUHlfR2V0UGF0aCh2b2lkKTsKICAvKiBJbiB0aGVpciBvd24gZmlsZXMgKi8KICBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0VmVyc2lvbih2b2lkKTsKQEAgLTI4LDEwICsyOCwxMCBAQAogIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRDb3B5cmlnaHQodm9pZCk7CiAgUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldENvbXBpbGVyKHZvaWQpOwogIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRCdWlsZEluZm8odm9pZCk7Ci1JbmRleDogUHl0aG9uLTIuNy45L0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CitJbmRleDogUHl0aG9uLTIuNy4xMi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuOS5vcmlnL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5Ci0rKysgUHl0aG9uLTIuNy45L0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CistLS0gUHl0aG9uLTIuNy4xMi5vcmlnL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CisrKysgUHl0aG9uLTIuNy4xMi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQogQEAgLTIyLDYgKzIyLDggQEAgZnJvbSBzaXRlIGltcG9ydCBVU0VSX0JBU0UKICBmcm9tIHNpdGUgaW1wb3J0IFVTRVJfU0lURQogIApAQCAtNTAsMTAgKzUwLDEwIEBACiAgICAgICAgICAnaGVhZGVycyc6ICckYmFzZS9pbmNsdWRlL3B5dGhvbiRweV92ZXJzaW9uX3Nob3J0LyRkaXN0X25hbWUnLAogICAgICAgICAgJ3NjcmlwdHMnOiAnJGJhc2UvYmluJywKICAgICAgICAgICdkYXRhJyAgIDogJyRiYXNlJywKLUluZGV4OiBQeXRob24tMi43LjkvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKK0luZGV4OiBQeXRob24tMi43LjEyL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy45Lm9yaWcvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKLSsrKyBQeXRob24tMi43LjkvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKKy0tLSBQeXRob24tMi43LjEyLm9yaWcvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKKysrKyBQeXRob24tMi43LjEyL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CiBAQCAtMTE5LDggKzExOSwxMSBAQCBkZWYgZ2V0X3B5dGhvbl9saWIocGxhdF9zcGVjaWZpYz0wLCBzdGFuCiAgICAgICAgICBwcmVmaXggPSBwbGF0X3NwZWNpZmljIGFuZCBFWEVDX1BSRUZJWCBvciBQUkVGSVgKICAKQEAgLTY4LDExICs2OCwxMSBAQAogICAgICAgICAgaWYgc3RhbmRhcmRfbGliOgogICAgICAgICAgICAgIHJldHVybiBsaWJweXRob24KICAgICAgICAgIGVsc2U6Ci1JbmRleDogUHl0aG9uLTIuNy45L0xpYi9weWRvYy5weQorSW5kZXg6IFB5dGhvbi0yLjcuMTIvTGliL3B5ZG9jLnB5CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy45Lm9yaWcvTGliL3B5ZG9jLnB5Ci0rKysgUHl0aG9uLTIuNy45L0xpYi9weWRvYy5weQotQEAgLTM4Myw3ICszODMsNyBAQCBjbGFzcyBEb2M6CistLS0gUHl0aG9uLTIuNy4xMi5vcmlnL0xpYi9weWRvYy5weQorKysrIFB5dGhvbi0yLjcuMTIvTGliL3B5ZG9jLnB5CitAQCAtMzg0LDcgKzM4NCw3IEBAIGNsYXNzIERvYzoKICAKICAgICAgICAgIGRvY2xvYyA9IG9zLmVudmlyb24uZ2V0KCJQWVRIT05ET0NTIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vZG9jcy5weXRob24ub3JnL2xpYnJhcnkiKQpAQCAtODEsMTAgKzgxLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iK3N5cy52ZXJzaW9uWzA6M10pCiAgICAgICAgICBpZiAoaXNpbnN0YW5jZShvYmplY3QsIHR5cGUob3MpKSBhbmQKICAgICAgICAgICAgICAob2JqZWN0Ll9fbmFtZV9fIGluICgnZXJybm8nLCAnZXhjZXB0aW9ucycsICdnYycsICdpbXAnLAotSW5kZXg6IFB5dGhvbi0yLjcuOS9MaWIvc2l0ZS5weQorSW5kZXg6IFB5dGhvbi0yLjcuMTIvTGliL3NpdGUucHkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43Ljkub3JpZy9MaWIvc2l0ZS5weQotKysrIFB5dGhvbi0yLjcuOS9MaWIvc2l0ZS5weQorLS0tIFB5dGhvbi0yLjcuMTIub3JpZy9MaWIvc2l0ZS5weQorKysrIFB5dGhvbi0yLjcuMTIvTGliL3NpdGUucHkKIEBAIC0yODgsMTMgKzI4OCwxOCBAQCBkZWYgZ2V0c2l0ZXBhY2thZ2VzKCk6CiAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gaW4gKCdvczJlbXgnLCAncmlzY29zJyk6CiAgICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChvcy5wYXRoLmpvaW4ocHJlZml4LCAiTGliIiwgInNpdGUtcGFja2FnZXMiKSkKQEAgLTEwNywxMCArMTA3LDEwIEBACiAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gImRhcndpbiI6CiAgICAgICAgICAgICAgIyBmb3IgZnJhbWV3b3JrIGJ1aWxkcyAqb25seSogd2UgYWRkIHRoZSBzdGFuZGFyZCBBcHBsZQogICAgICAgICAgICAgICMgbG9jYXRpb25zLgotSW5kZXg6IFB5dGhvbi0yLjcuOS9MaWIvc3lzY29uZmlnLnB5CitJbmRleDogUHl0aG9uLTIuNy4xMi9MaWIvc3lzY29uZmlnLnB5CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy45Lm9yaWcvTGliL3N5c2NvbmZpZy5weQotKysrIFB5dGhvbi0yLjcuOS9MaWIvc3lzY29uZmlnLnB5CistLS0gUHl0aG9uLTIuNy4xMi5vcmlnL0xpYi9zeXNjb25maWcucHkKKysrKyBQeXRob24tMi43LjEyL0xpYi9zeXNjb25maWcucHkKIEBAIC03LDEwICs3LDEwIEBAIGZyb20gb3MucGF0aCBpbXBvcnQgcGFyZGlyLCByZWFscGF0aAogIAogIF9JTlNUQUxMX1NDSEVNRVMgPSB7CkBAIC0xMzksMTAgKzEzOSwxMCBAQAogICAgICAgICAgJ2luY2x1ZGUnOiAne3VzZXJiYXNlfS9pbmNsdWRlL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCiAgICAgICAgICAnc2NyaXB0cyc6ICd7dXNlcmJhc2V9L2JpbicsCiAgICAgICAgICAnZGF0YScgICA6ICd7dXNlcmJhc2V9JywKLUluZGV4OiBQeXRob24tMi43LjkvTGliL3Rlc3QvdGVzdF9kbC5weQorSW5kZXg6IFB5dGhvbi0yLjcuMTIvTGliL3Rlc3QvdGVzdF9kbC5weQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuOS5vcmlnL0xpYi90ZXN0L3Rlc3RfZGwucHkKLSsrKyBQeXRob24tMi43LjkvTGliL3Rlc3QvdGVzdF9kbC5weQorLS0tIFB5dGhvbi0yLjcuMTIub3JpZy9MaWIvdGVzdC90ZXN0X2RsLnB5CisrKysgUHl0aG9uLTIuNy4xMi9MaWIvdGVzdC90ZXN0X2RsLnB5CiBAQCAtNCwxMCArNCwxMSBAQAogIGltcG9ydCB1bml0dGVzdAogIGZyb20gdGVzdC50ZXN0X3N1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIGltcG9ydF9tb2R1bGUKQEAgLTE1NywxMSArMTU3LDExIEBACiAgICAgICgnL3Vzci9iaW4vY3lnd2luMS5kbGwnLCAnZ2V0cGlkJyksCiAgICAgICgnL3Vzci9saWIvbGliYy5keWxpYicsICdnZXRwaWQnKSwKICAgICAgXQotSW5kZXg6IFB5dGhvbi0yLjcuOS9MaWIvdGVzdC90ZXN0X3NpdGUucHkKK0luZGV4OiBQeXRob24tMi43LjEyL0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuOS5vcmlnL0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weQotKysrIFB5dGhvbi0yLjcuOS9MaWIvdGVzdC90ZXN0X3NpdGUucHkKLUBAIC0yNDEsMTIgKzI0MSwxNiBAQCBjbGFzcyBIZWxwZXJGdW5jdGlvbnNUZXN0cyh1bml0dGVzdC5UZXN0CistLS0gUHl0aG9uLTIuNy4xMi5vcmlnL0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weQorKysrIFB5dGhvbi0yLjcuMTIvTGliL3Rlc3QvdGVzdF9zaXRlLnB5CitAQCAtMjQ2LDEyICsyNDYsMTYgQEAgY2xhc3MgSGVscGVyRnVuY3Rpb25zVGVzdHModW5pdHRlc3QuVGVzdAogICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlyc1syXSwgd2FudGVkKQogICAgICAgICAgZWxpZiBvcy5zZXAgPT0gJy8nOgogICAgICAgICAgICAgICMgT1MgWCBub24tZnJhbXdld29yayBidWlsZHMsIExpbnV4LCBGcmVlQlNELCBldGMKQEAgLTE4MSwxMCArMTgxLDEwIEBACiAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICMgb3RoZXIgcGxhdGZvcm1zCiAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGlycyksIDIpCi1JbmRleDogUHl0aG9uLTIuNy45L0xpYi90cmFjZS5weQorSW5kZXg6IFB5dGhvbi0yLjcuMTIvTGliL3RyYWNlLnB5CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy45Lm9yaWcvTGliL3RyYWNlLnB5Ci0rKysgUHl0aG9uLTIuNy45L0xpYi90cmFjZS5weQorLS0tIFB5dGhvbi0yLjcuMTIub3JpZy9MaWIvdHJhY2UucHkKKysrKyBQeXRob24tMi43LjEyL0xpYi90cmFjZS5weQogQEAgLTc1NCwxMCArNzU0LDEwIEBAIGRlZiBtYWluKGFyZ3Y9Tm9uZSk6CiAgICAgICAgICAgICAgICAgICMgc2hvdWxkIEkgYWxzbyBjYWxsIGV4cGFuZHVzZXI/IChhZnRlciBhbGwsIGNvdWxkIHVzZSAkSE9NRSkKICAKQEAgLTE5OCwxMSArMTk4LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iICsgc3lzLnZlcnNpb25bOjNdKSkKICAgICAgICAgICAgICAgICAgcyA9IG9zLnBhdGgubm9ybXBhdGgocykKICAgICAgICAgICAgICAgICAgaWdub3JlX2RpcnMuYXBwZW5kKHMpCi1JbmRleDogUHl0aG9uLTIuNy45L01ha2VmaWxlLnByZS5pbgorSW5kZXg6IFB5dGhvbi0yLjcuMTIvTWFrZWZpbGUucHJlLmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy45Lm9yaWcvTWFrZWZpbGUucHJlLmluCi0rKysgUHl0aG9uLTIuNy45L01ha2VmaWxlLnByZS5pbgotQEAgLTg3LDYgKzg3LDcgQEAgUFlfQ0ZMQUdTPQkkKENGTEFHUykgJChDUFBGTEFHUykgJChDRkxBRworLS0tIFB5dGhvbi0yLjcuMTIub3JpZy9NYWtlZmlsZS5wcmUuaW4KKysrKyBQeXRob24tMi43LjEyL01ha2VmaWxlLnByZS5pbgorQEAgLTkyLDYgKzkyLDcgQEAgUFlfQ0ZMQUdTPQkkKENGTEFHUykgJChDUFBGTEFHUykgJChDRkxBRwogIAogICMgTWFjaGluZS1kZXBlbmRlbnQgc3ViZGlyZWN0b3JpZXMKICBNQUNIREVQPQlATUFDSERFUEAKQEAgLTIxMCw3ICsyMTAsNyBAQAogIAogICMgTXVsdGlhcmNoIGRpcmVjdG9yeSAobWF5IGJlIGVtcHR5KQogIE1VTFRJQVJDSD0JQE1VTFRJQVJDSEAKLUBAIC0xMDYsNyArMTA3LDcgQEAgTElCRElSPQkJQGxpYmRpckAKK0BAIC0xMTEsNyArMTEyLDcgQEAgTElCRElSPQkJQGxpYmRpckAKICBNQU5ESVI9CQlAbWFuZGlyQAogIElOQ0xVREVESVI9CUBpbmNsdWRlZGlyQAogIENPTkZJTkNMVURFRElSPQkkKGV4ZWNfcHJlZml4KS9pbmNsdWRlCkBAIC0yMTksNyArMjE5LDcgQEAKICAKICAjIERldGFpbGVkIGRlc3RpbmF0aW9uIGRpcmVjdG9yaWVzCiAgQklOTElCREVTVD0JJChMSUJESVIpL3B5dGhvbiQoVkVSU0lPTikKLUBAIC01OTgsNiArNTk5LDcgQEAgTW9kdWxlcy9nZXRwYXRoLm86ICQoc3JjZGlyKS9Nb2R1bGVzL2dldAorQEAgLTY3MCw2ICs2NzEsNyBAQCBNb2R1bGVzL2dldHBhdGgubzogJChzcmNkaXIpL01vZHVsZXMvZ2V0CiAgCQktREVYRUNfUFJFRklYPSciJChleGVjX3ByZWZpeCkiJyBcCiAgCQktRFZFUlNJT049JyIkKFZFUlNJT04pIicgXAogIAkJLURWUEFUSD0nIiQoVlBBVEgpIicgXApAQCAtMjI3LDcgKzIyNyw3IEBACiAgCQktbyAkQCAkKHNyY2RpcikvTW9kdWxlcy9nZXRwYXRoLmMKICAKICBNb2R1bGVzL3B5dGhvbi5vOiAkKHNyY2RpcikvTW9kdWxlcy9weXRob24uYwotQEAgLTY0MCw3ICs2NDIsNyBAQCAkKEFTVF9DKTogJChBU1RfQVNETCkgJChBU0RMR0VOX0ZJTEVTKQorQEAgLTcyMSw3ICs3MjMsNyBAQCAkKEFTVF9DKTogJChBU1RfQVNETCkgJChBU0RMR0VOX0ZJTEVTKQogIFB5dGhvbi9jb21waWxlLm8gUHl0aG9uL3N5bXRhYmxlLm8gUHl0aG9uL2FzdC5vOiAkKEdSQU1NQVJfSCkgJChBU1RfSCkKICAKICBQeXRob24vZ2V0cGxhdGZvcm0ubzogJChzcmNkaXIpL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCkBAIC0yMzYsMjUgKzIzNiwyNSBAQAogIAogIFB5dGhvbi9pbXBvcnRkbC5vOiAkKHNyY2RpcikvUHl0aG9uL2ltcG9ydGRsLmMKICAJCSQoQ0MpIC1jICQoUFlfQ0ZMQUdTKSAtSSQoRExJTkNMRElSKSAtbyAkQCAkKHNyY2RpcikvUHl0aG9uL2ltcG9ydGRsLmMKLUluZGV4OiBQeXRob24tMi43LjkvTW9kdWxlcy9nZXRwYXRoLmMKK0luZGV4OiBQeXRob24tMi43LjEyL01vZHVsZXMvZ2V0cGF0aC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy45Lm9yaWcvTW9kdWxlcy9nZXRwYXRoLmMKLSsrKyBQeXRob24tMi43LjkvTW9kdWxlcy9nZXRwYXRoLmMKLUBAIC0xMTYsOSArMTE2LDExIEBACi0gI2RlZmluZSBFWEVDX1BSRUZJWCBQUkVGSVgKKy0tLSBQeXRob24tMi43LjEyLm9yaWcvTW9kdWxlcy9nZXRwYXRoLmMKKysrKyBQeXRob24tMi43LjEyL01vZHVsZXMvZ2V0cGF0aC5jCitAQCAtMTAwLDYgKzEwMCwxMyBAQAorICNlcnJvciAiUFJFRklYLCBFWEVDX1BSRUZJWCwgVkVSU0lPTiwgYW5kIFZQQVRIIG11c3QgYmUgY29uc3RhbnQgZGVmaW5lZCIKICAjZW5kaWYKICAKICsjZGVmaW5lIExJQl9QWVRIT04gTElCICIvcHl0aG9uIiBWRVJTSU9OCiArCi0gI2lmbmRlZiBQWVRIT05QQVRICi0tI2RlZmluZSBQWVRIT05QQVRIIFBSRUZJWCAiL2xpYi9weXRob24iIFZFUlNJT04gIjoiIFwKLS0gICAgICAgICAgICAgIEVYRUNfUFJFRklYICIvbGliL3B5dGhvbiIgVkVSU0lPTiAiL2xpYi1keW5sb2FkIgorKyNpZm5kZWYgUFlUSE9OUEFUSAogKyNkZWZpbmUgUFlUSE9OUEFUSCBQUkVGSVggIi8iIExJQl9QWVRIT04gIjoiIFwKICsgICAgICAgICAgICAgIEVYRUNfUFJFRklYICIvIiBMSUJfUFlUSE9OICIvbGliLWR5bmxvYWQiCi0gI2VuZGlmCi0gCisrI2VuZGlmCisrCiAgI2lmbmRlZiBMQU5ETUFSSwotQEAgLTEyOSw3ICsxMzEsNyBAQCBzdGF0aWMgY2hhciBwcmVmaXhbTUFYUEFUSExFTisxXTsKKyAjZGVmaW5lIExBTkRNQVJLICJvcy5weSIKKyAjZW5kaWYKK0BAIC0xMDgsNyArMTE1LDcgQEAgc3RhdGljIGNoYXIgcHJlZml4W01BWFBBVEhMRU4rMV07CiAgc3RhdGljIGNoYXIgZXhlY19wcmVmaXhbTUFYUEFUSExFTisxXTsKICBzdGF0aWMgY2hhciBwcm9ncGF0aFtNQVhQQVRITEVOKzFdOwogIHN0YXRpYyBjaGFyICptb2R1bGVfc2VhcmNoX3BhdGggPSBOVUxMOwpAQCAtMjYzLDEwICsyNjMsMTAgQEAKICAKICBzdGF0aWMgdm9pZAogIHJlZHVjZShjaGFyICpkaXIpCi1JbmRleDogUHl0aG9uLTIuNy45L1B5dGhvbi9nZXRwbGF0Zm9ybS5jCitJbmRleDogUHl0aG9uLTIuNy4xMi9QeXRob24vZ2V0cGxhdGZvcm0uYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuOS5vcmlnL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCi0rKysgUHl0aG9uLTIuNy45L1B5dGhvbi9nZXRwbGF0Zm9ybS5jCistLS0gUHl0aG9uLTIuNy4xMi5vcmlnL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCisrKysgUHl0aG9uLTIuNy4xMi9QeXRob24vZ2V0cGxhdGZvcm0uYwogQEAgLTEwLDMgKzEwLDEzIEBAIFB5X0dldFBsYXRmb3JtKHZvaWQpCiAgewogIAlyZXR1cm4gUExBVEZPUk07CkBAIC0yODEsMTAgKzI4MSwxMCBAQAogK3sKICsJcmV0dXJuIExJQjsKICt9Ci1JbmRleDogUHl0aG9uLTIuNy45L1B5dGhvbi9zeXNtb2R1bGUuYworSW5kZXg6IFB5dGhvbi0yLjcuMTIvUHl0aG9uL3N5c21vZHVsZS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy45Lm9yaWcvUHl0aG9uL3N5c21vZHVsZS5jCi0rKysgUHl0aG9uLTIuNy45L1B5dGhvbi9zeXNtb2R1bGUuYworLS0tIFB5dGhvbi0yLjcuMTIub3JpZy9QeXRob24vc3lzbW9kdWxlLmMKKysrKyBQeXRob24tMi43LjEyL1B5dGhvbi9zeXNtb2R1bGUuYwogQEAgLTE0MzcsNiArMTQzNyw4IEBAIF9QeVN5c19Jbml0KHZvaWQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgUHlTdHJpbmdfRnJvbVN0cmluZyhQeV9HZXRDb3B5cmlnaHQoKSkpOwogICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJwbGF0Zm9ybSIsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vcHl0aG9uLWZpeC1DVkUtMjAxNi0xMDAwMTEwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3B5dGhvbi1maXgtQ1ZFLTIwMTYtMTAwMDExMC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Nzg4OGUyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3B5dGhvbi1maXgtQ1ZFLTIwMTYtMTAwMDExMC5wYXRjaApAQCAtMCwwICsxLDE2MiBAQAorRnJvbSBjYjI1ZmJkNWFiYzBmNGViMDdkYmI4ZWE4MTllOWMyNmJkYTRmYzk5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU2VudGhpbCBLdW1hcmFuIDxzZW50aGlsQHV0aGNvZGUuY29tPgorRGF0ZTogU2F0LCAzMCBKdWwgMjAxNiAwNTo0OTo1MyAtMDcwMAorU3ViamVjdDogW1BBVENIXSBweXRob246IGZpeCBDVkUtMjAxNi0xMDAwMTEwCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK1ByZXZlbnQgSFRUUG94eSBhdHRhY2sgKENWRS0yMDE2LTEwMDAxMTApCisKK0lnbm9yZSB0aGUgSFRUUF9QUk9YWSB2YXJpYWJsZSB3aGVuIFJFUVVFU1RfTUVUSE9EIGVudmlyb25tZW50IGlzIHNldCwgd2hpY2gKK2luZGljYXRlcyB0aGF0IHRoZSBzY3JpcHQgaXMgaW4gQ0dJIG1vZGUuCisKK0lzc3VlIHJlcG9ydGVkIGFuZCBwYXRjaCBjb250cmlidXRlZCBieSBSw6ltaSBSYW1waW4uCisKK0JhY2twb3J0IHBhdGNoIGZyb20gaHR0cHM6Ly9oZy5weXRob24ub3JnL2NweXRob24vcmV2L2JhOTE1ZDU2MTY2Ny8KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQ1ZFOiBDVkUtMjAxNi0xMDAwMTEwCitTaWduZWQtb2ZmLWJ5OiBNaW5nbGkgWXUgPE1pbmdsaS5ZdUB3aW5kcml2ZXIuY29tPgorLS0tCisgRG9jL2hvd3RvL3VybGxpYjIucnN0ICAgfCAgNSArKysrKworIERvYy9saWJyYXJ5L3VybGxpYi5yc3QgIHwgMTAgKysrKysrKysrKworIERvYy9saWJyYXJ5L3VybGxpYjIucnN0IHwgIDUgKysrKysKKyBMaWIvdGVzdC90ZXN0X3VybGxpYi5weSB8IDEyICsrKysrKysrKysrKworIExpYi91cmxsaWIucHkgICAgICAgICAgIHwgIDkgKysrKysrKysrCisgTWlzYy9BQ0tTICAgICAgICAgICAgICAgfCAgMSArCisgTWlzYy9ORVdTICAgICAgICAgICAgICAgfCAgNCArKysrCisgNyBmaWxlcyBjaGFuZ2VkLCA0NiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9Eb2MvaG93dG8vdXJsbGliMi5yc3QgYi9Eb2MvaG93dG8vdXJsbGliMi5yc3QKK2luZGV4IDZiYjA2ZDQuLjVjZjJjMGMgMTAwNjQ0CistLS0gYS9Eb2MvaG93dG8vdXJsbGliMi5yc3QKKysrKyBiL0RvYy9ob3d0by91cmxsaWIyLnJzdAorQEAgLTUyNSw2ICs1MjUsMTEgQEAgc2V0dGluZyB1cCBhIGBCYXNpYyBBdXRoZW50aWNhdGlvbmBfIGhhbmRsZXI6IDo6CisgICAgIHRocm91Z2ggYSBwcm94eS4gIEhvd2V2ZXIsIHRoaXMgY2FuIGJlIGVuYWJsZWQgYnkgZXh0ZW5kaW5nIHVybGxpYjIgYXMKKyAgICAgc2hvd24gaW4gdGhlIHJlY2lwZSBbI11fLgorIAorKy4uIG5vdGU6OgorKworKyAgICBgYEhUVFBfUFJPWFlgYCB3aWxsIGJlIGlnbm9yZWQgaWYgYSB2YXJpYWJsZSBgYFJFUVVFU1RfTUVUSE9EYGAgaXMgc2V0OyBzZWUKKysgICAgdGhlIGRvY3VtZW50YXRpb24gb24gOmZ1bmM6YH51cmxsaWIuZ2V0cHJveGllc2AuCisrCisgCisgU29ja2V0cyBhbmQgTGF5ZXJzCisgPT09PT09PT09PT09PT09PT09CitkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdXJsbGliLnJzdCBiL0RvYy9saWJyYXJ5L3VybGxpYi5yc3QKK2luZGV4IDNiNWRjMTYuLmJkZGNiYTkgMTAwNjQ0CistLS0gYS9Eb2MvbGlicmFyeS91cmxsaWIucnN0CisrKysgYi9Eb2MvbGlicmFyeS91cmxsaWIucnN0CitAQCAtMjk1LDYgKzI5NSwxNiBAQCBVdGlsaXR5IGZ1bmN0aW9ucworICAgIElmIGJvdGggbG93ZXJjYXNlIGFuZCB1cHBlcmNhc2UgZW52aXJvbm1lbnQgdmFyaWFibGVzIGV4aXN0IChhbmQgZGlzYWdyZWUpLAorICAgIGxvd2VyY2FzZSBpcyBwcmVmZXJyZWQuCisgCisrICAgIC4uIG5vdGU6OgorKworKyAgICAgICAgSWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGBgUkVRVUVTVF9NRVRIT0RgYCBpcyBzZXQsIHdoaWNoIHVzdWFsbHkKKysgICAgICAgIGluZGljYXRlcyB5b3VyIHNjcmlwdCBpcyBydW5uaW5nIGluIGEgQ0dJIGVudmlyb25tZW50LCB0aGUgZW52aXJvbm1lbnQKKysgICAgICAgIHZhcmlhYmxlIGBgSFRUUF9QUk9YWWBgICh1cHBlcmNhc2UgYGBfUFJPWFlgYCkgd2lsbCBiZSBpZ25vcmVkLiBUaGlzIGlzCisrICAgICAgICBiZWNhdXNlIHRoYXQgdmFyaWFibGUgY2FuIGJlIGluamVjdGVkIGJ5IGEgY2xpZW50IHVzaW5nIHRoZSAiUHJveHk6IgorKyAgICAgICAgSFRUUCBoZWFkZXIuIElmIHlvdSBuZWVkIHRvIHVzZSBhbiBIVFRQIHByb3h5IGluIGEgQ0dJIGVudmlyb25tZW50LAorKyAgICAgICAgZWl0aGVyIHVzZSBgYFByb3h5SGFuZGxlcmBgIGV4cGxpY2l0bHksIG9yIG1ha2Ugc3VyZSB0aGUgdmFyaWFibGUgbmFtZQorKyAgICAgICAgaXMgaW4gbG93ZXJjYXNlIChvciBhdCBsZWFzdCB0aGUgYGBfcHJveHlgYCBzdWZmaXgpLgorKworIC4uIG5vdGU6OgorICAgICB1cmxsaWIgYWxzbyBleHBvc2VzIGNlcnRhaW4gdXRpbGl0eSBmdW5jdGlvbnMgbGlrZSBzcGxpdHR5cGUsIHNwbGl0aG9zdCBhbmQKKyAgICAgb3RoZXJzIHBhcnNpbmcgVVJMIGludG8gdmFyaW91cyBjb21wb25lbnRzLiBCdXQgaXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlCitkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdXJsbGliMi5yc3QgYi9Eb2MvbGlicmFyeS91cmxsaWIyLnJzdAoraW5kZXggOGE0YzgwZS4uYjgwOGI5OCAxMDA2NDQKKy0tLSBhL0RvYy9saWJyYXJ5L3VybGxpYjIucnN0CisrKysgYi9Eb2MvbGlicmFyeS91cmxsaWIyLnJzdAorQEAgLTIyOSw2ICsyMjksMTEgQEAgVGhlIGZvbGxvd2luZyBjbGFzc2VzIGFyZSBwcm92aWRlZDoKKyAKKyAgICBUbyBkaXNhYmxlIGF1dG9kZXRlY3RlZCBwcm94eSBwYXNzIGFuIGVtcHR5IGRpY3Rpb25hcnkuCisgCisrICAgIC4uIG5vdGU6OgorKworKyAgICAgICBgYEhUVFBfUFJPWFlgYCB3aWxsIGJlIGlnbm9yZWQgaWYgYSB2YXJpYWJsZSBgYFJFUVVFU1RfTUVUSE9EYGAgaXMgc2V0OworKyAgICAgICBzZWUgdGhlIGRvY3VtZW50YXRpb24gb24gOmZ1bmM6YH51cmxsaWIuZ2V0cHJveGllc2AuCisrCisgCisgLi4gY2xhc3M6OiBIVFRQUGFzc3dvcmRNZ3IoKQorIAorZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliLnB5IGIvTGliL3Rlc3QvdGVzdF91cmxsaWIucHkKK2luZGV4IDQzNGQ1MzMuLjI3YTFkMzggMTAwNjQ0CistLS0gYS9MaWIvdGVzdC90ZXN0X3VybGxpYi5weQorKysrIGIvTGliL3Rlc3QvdGVzdF91cmxsaWIucHkKK0BAIC0xNzAsNiArMTcwLDE4IEBAIGNsYXNzIFByb3h5VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHVybGxpYi5wcm94eV9ieXBhc3NfZW52aXJvbm1lbnQoJ2Fub3RoZXJkb21haW4uY29tOjg4ODgnKSkKKyAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh1cmxsaWIucHJveHlfYnlwYXNzX2Vudmlyb25tZW50KCduZXdkb21haW4uY29tOjEyMzQnKSkKKyAKKysgICAgZGVmIHRlc3RfcHJveHlfY2dpX2lnbm9yZShzZWxmKToKKysgICAgICAgIHRyeToKKysgICAgICAgICAgICBzZWxmLmVudi5zZXQoJ0hUVFBfUFJPWFknLCAnaHR0cDovL3NvbWV3aGVyZTozMTI4JykKKysgICAgICAgICAgICBwcm94aWVzID0gdXJsbGliLmdldHByb3hpZXNfZW52aXJvbm1lbnQoKQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2h0dHA6Ly9zb21ld2hlcmU6MzEyOCcsIHByb3hpZXNbJ2h0dHAnXSkKKysgICAgICAgICAgICBzZWxmLmVudi5zZXQoJ1JFUVVFU1RfTUVUSE9EJywgJ0dFVCcpCisrICAgICAgICAgICAgcHJveGllcyA9IHVybGxpYi5nZXRwcm94aWVzX2Vudmlyb25tZW50KCkKKysgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdodHRwJywgcHJveGllcykKKysgICAgICAgIGZpbmFsbHk6CisrICAgICAgICAgICAgc2VsZi5lbnYudW5zZXQoJ1JFUVVFU1RfTUVUSE9EJykKKysgICAgICAgICAgICBzZWxmLmVudi51bnNldCgnSFRUUF9QUk9YWScpCisrCisgICAgIGRlZiB0ZXN0X3Byb3h5X2J5cGFzc19lbnZpcm9ubWVudF9ob3N0X21hdGNoKHNlbGYpOgorICAgICAgICAgYnlwYXNzID0gdXJsbGliLnByb3h5X2J5cGFzc19lbnZpcm9ubWVudAorICAgICAgICAgc2VsZi5lbnYuc2V0KCdOT19QUk9YWScsCitkaWZmIC0tZ2l0IGEvTGliL3VybGxpYi5weSBiL0xpYi91cmxsaWIucHkKK2luZGV4IDEzOWZhYjkuLmMzYmEyYzkgMTAwNjQ0CistLS0gYS9MaWIvdXJsbGliLnB5CisrKysgYi9MaWIvdXJsbGliLnB5CitAQCAtMTM4MCwxMiArMTM4MCwyMSBAQCBkZWYgZ2V0cHJveGllc19lbnZpcm9ubWVudCgpOgorICAgICBJZiB5b3UgbmVlZCBhIGRpZmZlcmVudCB3YXksIHlvdSBjYW4gcGFzcyBhIHByb3hpZXMgZGljdGlvbmFyeSB0byB0aGUKKyAgICAgW0ZhbmN5XVVSTG9wZW5lciBjb25zdHJ1Y3Rvci4KKyAgICAgIiIiCisrICAgICMgR2V0IGFsbCB2YXJpYWJsZXMKKyAgICAgcHJveGllcyA9IHt9CisgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBvcy5lbnZpcm9uLml0ZW1zKCk6CisgICAgICAgICBuYW1lID0gbmFtZS5sb3dlcigpCisgICAgICAgICBpZiB2YWx1ZSBhbmQgbmFtZVstNjpdID09ICdfcHJveHknOgorICAgICAgICAgICAgIHByb3hpZXNbbmFtZVs6LTZdXSA9IHZhbHVlCisgCisrICAgICMgQ1ZFLTIwMTYtMTAwMDExMCAtIElmIHdlIGFyZSBydW5uaW5nIGFzIENHSSBzY3JpcHQsIGZvcmdldCBIVFRQX1BST1hZCisrICAgICMgKG5vbi1hbGwtbG93ZXJjYXNlKSBhcyBpdCBtYXkgYmUgc2V0IGZyb20gdGhlIHdlYiBzZXJ2ZXIgYnkgYSAiUHJveHk6IgorKyAgICAjIGhlYWRlciBmcm9tIHRoZSBjbGllbnQKKysgICAgIyBJZiAicHJveHkiIGlzIGxvd2VyY2FzZSwgaXQgd2lsbCBzdGlsbCBiZSB1c2VkIHRoYW5rcyB0byB0aGUgbmV4dCBibG9jaworKyAgICBpZiAnUkVRVUVTVF9NRVRIT0QnIGluIG9zLmVudmlyb246CisrICAgICAgICBwcm94aWVzLnBvcCgnaHR0cCcsIE5vbmUpCisrCisrICAgICMgR2V0IGxvd2VyY2FzZSB2YXJpYWJsZXMKKyAgICAgZm9yIG5hbWUsIHZhbHVlIGluIG9zLmVudmlyb24uaXRlbXMoKToKKyAgICAgICAgIGlmIG5hbWVbLTY6XSA9PSAnX3Byb3h5JzoKKyAgICAgICAgICAgICBuYW1lID0gbmFtZS5sb3dlcigpCitkaWZmIC0tZ2l0IGEvTWlzYy9BQ0tTIGIvTWlzYy9BQ0tTCitpbmRleCBlZTNhNDY1Li45YzM3NGI3IDEwMDY0NAorLS0tIGEvTWlzYy9BQ0tTCisrKysgYi9NaXNjL0FDS1MKK0BAIC0xMTIxLDYgKzExMjEsNyBAQCBCdXJ0b24gUmFkb25zCisgSmVmZiBSYW1uYW5pCisgVmFycHUgUmFudGFsYQorIEJyb2RpZSBSYW8KKytSw6ltaSBSYW1waW4KKyBTZW5rbyBSYXNpYworIEFudHRpIFJhc2luZW4KKyBOaWtvbGF1cyBSYXRoCitkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTIGIvTWlzYy9ORVdTCitpbmRleCA0YWIzYTcwLi5jYzJmNjViIDEwMDY0NAorLS0tIGEvTWlzYy9ORVdTCisrKysgYi9NaXNjL05FV1MKK0BAIC0xODcsNiArMTg3LDEwIEBAIExpYnJhcnkKKyAtIElzc3VlICMyNjY0NDogUmFpc2UgVmFsdWVFcnJvciByYXRoZXIgdGhhbiBTeXN0ZW1FcnJvciB3aGVuIGEgbmVnYXRpdmUKKyAgIGxlbmd0aCBpcyBwYXNzZWQgdG8gU1NMU29ja2V0LnJlY3YoKSBvciByZWFkKCkuCisgCisrLSBJc3N1ZSAjMjc1Njg6IFByZXZlbnQgSFRUUG94eSBhdHRhY2sgKENWRS0yMDE2LTEwMDAxMTApLiBJZ25vcmUgdGhlCisrICBIVFRQX1BST1hZIHZhcmlhYmxlIHdoZW4gUkVRVUVTVF9NRVRIT0QgZW52aXJvbm1lbnQgaXMgc2V0LCB3aGljaCBpbmRpY2F0ZXMKKysgIHRoYXQgdGhlIHNjcmlwdCBpcyBpbiBDR0kgbW9kZS4KKysKKyAtIElzc3VlICMyMzgwNDogRml4IFNTTCByZWN2KDApIGFuZCByZWFkKDApIG1ldGhvZHMgdG8gcmV0dXJuIHplcm8gYnl0ZXMKKyAgIGluc3RlYWQgb2YgdXAgdG8gMTAyNC4KKyAKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hc3luY18wLjYuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXN5bmNfMC42LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTRhMzBmNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXN5bmNfMC42LjIuYmIKQEAgLTAsMCArMSw2IEBACityZXF1aXJlIHB5dGhvbi1hc3luYy5pbmMKKworaW5oZXJpdCBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSArPSAicHl0aG9uMy10aHJlYWRpbmcgcHl0aG9uMy1sYW5nIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRidXNfMS4yLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRidXNfMS4yLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGU1YTAxYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGJ1c18xLjIuNC5iYgpAQCAtMCwwICsxLDIzIEBACitTVU1NQVJZID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgdGhlIERCdXMgaW50ZXItcHJvY2VzcyBjb21tdW5pY2F0aW9uIHN5c3RlbSIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvU29mdHdhcmUvZGJ1cyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MGI4MzA0N2NlOWU5NDhiNjdjMGZhY2M1ZjIzMzQ3NmEiCitERVBFTkRTID0gImV4cGF0IGRidXMgZGJ1cy1nbGliIHZpcnR1YWwvbGliaW50bCIKKworU1JDX1VSSSA9ICJodHRwOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvZGJ1cy1weXRob24vZGJ1cy1weXRob24tJHtQVn0udGFyLmd6IFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjczNzJhNTg4YzgzYTcyMzJiNGUwODE1OWJmZDQ4ZmU1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImUyZjFkNjg3MWY3NGZiYTIzNjUyZTUxZDEwODczZTU0ZjcxYWRhYjA1MjU4MzNjMTliYWQ5ZTk5YjFiMmY5Y2MiCitTID0gIiR7V09SS0RJUn0vZGJ1cy1weXRob24tJHtQVn0iCisKK2luaGVyaXQgZGlzdHV0aWxzMy1iYXNlIGF1dG90b29scyBwa2djb25maWcKKworUEFDS0FHRUNPTkZJRyA/PSAiIgorUEFDS0FHRUNPTkZJR1tkb2NzXSA9ICItLWVuYWJsZS1odG1sLWRvY3MsLS1kaXNhYmxlLWh0bWwtZG9jcyxweXRob24zLWRvY3V0aWxzLW5hdGl2ZSIKK1BBQ0tBR0VDT05GSUdbYXBpLWRvY3NdID0gIi0tZW5hYmxlLWFwaS1kb2NzLC0tZGlzYWJsZS1hcGktZG9jcyxweXRob24zLWRvY3V0aWxzLW5hdGl2ZSBweXRob24zLWVweWRvYy1uYXRpdmUiCisKK1JERVBFTkRTXyR7UE59ID0gInB5dGhvbjMtaW8gcHl0aG9uMy1sb2dnaW5nIHB5dGhvbjMtc3RyaW5nb2xkIHB5dGhvbjMtdGhyZWFkaW5nIHB5dGhvbjMteG1sIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9wa2djb25maWciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRvY3V0aWxzXzAuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRvY3V0aWxzXzAuMTIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc4ZmEzYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZG9jdXRpbHNfMC4xMi5iYgpAQCAtMCwwICsxLDE4IEBACitTVU1NQVJZID0gIlRleHQgcHJvY2Vzc2luZyBzeXN0ZW0gZm9yIGRvY3VtZW50YXRpb24iCitIT01FUEFHRSA9ICJodHRwOi8vZG9jdXRpbHMuc291cmNlZm9yZ2UubmV0IgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIlBTRiAmIEJTRC0yLUNsYXVzZSAmIEdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy50eHQ7bWQ1PWE3MjJmYmRjMjAzNDdkYjdiNjkyMjM1OTRkZDU0NTc0IgorCitERVBFTkRTID0gInB5dGhvbjMiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2RvY3V0aWxzL2RvY3V0aWxzLSR7UFZ9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0NjIyMjYzYjYyYzVjNzcxYzAzNTAyYWZhMzE1Nzc2OCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjN2RiNzE3ODEwYWI2OTY1ZjY2YzhjZjAzOThhOThjOWQ4ZGY5ODJkYTM5YjRjZDdmMTYyOTExZWI4OTU5NmZhIgorCitTID0gIiR7V09SS0RJUn0vZG9jdXRpbHMtJHtQVn0iCisKK2luaGVyaXQgZGlzdHV0aWxzMworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRfMi4wLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdF8yLjAuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOWZlOWJhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRfMi4wLjcuYmIKQEAgLTAsMCArMSw3IEBACityZXF1aXJlIHB5dGhvbi1naXQuaW5jCisKK0RFUEVORFMgPSAicHl0aG9uMy1naXRkYiIKKworaW5oZXJpdCBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSArPSAicHl0aG9uMy1naXRkYiBweXRob24zLWxhbmcgcHl0aG9uMy1pbyBweXRob24zLXNoZWxsIHB5dGhvbjMtbWF0aCBweXRob24zLXJlIHB5dGhvbjMtc3VicHJvY2VzcyBweXRob24zLXN0cmluZ29sZCBweXRob24zLXVuaXhhZG1pbiBweXRob24zLWVudW0gcHl0aG9uMy1sb2dnaW5nIHB5dGhvbjMtZGF0ZXRpbWUgcHl0aG9uMy1uZXRjbGllbnQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdGRiXzAuNi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRkYl8wLjYuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MGQ5ZDQ2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRkYl8wLjYuNC5iYgpAQCAtMCwwICsxLDcgQEAKK3JlcXVpcmUgcHl0aG9uLWdpdGRiLmluYworCitERVBFTkRTID0gInB5dGhvbjMtYXN5bmMgcHl0aG9uMy1zbW1hcCIKKworaW5oZXJpdCBkaXN0dXRpbHMzCisKK1JERVBFTkRTXyR7UE59ICs9ICJweXRob24zLXNtbWFwIHB5dGhvbjMtYXN5bmMgcHl0aG9uMy1tbWFwIHB5dGhvbjMtbGFuZyBweXRob24zLWlvIHB5dGhvbjMtc2hlbGwgcHl0aG9uMy1jcnlwdCBweXRob24zLWNvbXByZXNzaW9uIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tYWtvXzEuMC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tYWtvXzEuMC40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiNTBmZmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1ha29fMS4wLjQuYmIKQEAgLTAsMCArMSwxMSBAQAorcmVxdWlyZSBweXRob24tbWFrby5pbmMKKworaW5oZXJpdCBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSA9ICJweXRob24zLXRocmVhZGluZyBcCisgICAgICAgICAgICAgICAgICBweXRob24zLW5ldGNsaWVudCBcCisgICAgICAgICAgICAgICAgICBweXRob24zLWh0bWwgXAorIgorUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1uYXRpdmVfMy41LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5hdGl2ZV8zLjUuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2JhZDExYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5hdGl2ZV8zLjUuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLXJlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLmluYwotCi1QUiA9ICIke0lOQ19QUn0uMCIKLVBZVEhPTl9NQUpNSU4gPSAiMy41IgotRElTVFJPX1NSQ19VUkkgPz0gImZpbGU6Ly9zaXRlY3VzdG9taXplLnB5IgotRElTVFJPX1NSQ19VUklfbGludXhzdGRiYXNlID0gIiIKLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5weXRob24ub3JnL2Z0cC9weXRob24vJHtQVn0vUHl0aG9uLSR7UFZ9LnRhci54eiBcCi1maWxlOi8vMTItZGlzdHV0aWxzLXByZWZpeC1pcy1pbnNpZGUtc3RhZ2luZy1hcmVhLnBhdGNoIFwKLWZpbGU6Ly9weXRob24tY29uZmlnLnBhdGNoIFwKLWZpbGU6Ly8wMDAtY3Jvc3MtY29tcGlsZS5wYXRjaCBcCi1maWxlOi8vMDIwLWRvbnQtY29tcGlsZS1weXRob24tZmlsZXMucGF0Y2ggXAotZmlsZTovLzAzMC1maXh1cC1pbmNsdWRlLWRpcnMucGF0Y2ggXAotZmlsZTovLzA3MC1kb250LWNsZWFuLWlwa2ctaW5zdGFsbC5wYXRjaCBcCi1maWxlOi8vMDgwLWRpc3R1dGlscy1kb250X2FkanVzdF9maWxlcy5wYXRjaCBcCi1maWxlOi8vMTEwLWVuYWJsZS16bGliLnBhdGNoIFwKLWZpbGU6Ly8xMzAtcmVhZGxpbmUtc2V0dXAucGF0Y2ggXAotZmlsZTovLzE1MC1maXgtc2V0dXB0ZXJtLnBhdGNoIFwKLWZpbGU6Ly9weXRob24tMy4zLW11bHRpbGliLnBhdGNoIFwKLWZpbGU6Ly8wMy1maXgtdGtpbnRlci1kZXRlY3Rpb24ucGF0Y2ggXAotZmlsZTovL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaCBcCi1maWxlOi8vc2h1dGlsLWZvbGxvdy1zeW1saW5rLWZpeC5wYXRjaCBcCi1maWxlOi8vMDAwMS1oMnB5LUZpeC1pc3N1ZS0xMzAzMi13aGVyZS1pdC1mYWlscy13aXRoLVVuaWNvZGVEZWNvLnBhdGNoIFwKLWZpbGU6Ly9zeXNyb290LWluY2x1ZGUtaGVhZGVycy5wYXRjaCBcCi1maWxlOi8vdW5peGNjb21waWxlci5wYXRjaCBcCi0ke0RJU1RST19TUkNfVVJJfSBcCi1maWxlOi8vc3lzY29uZmlnLnB5LWFkZC1fUFlUSE9OX1BST0pFQ1RfU1JDLnBhdGNoIFwKLWZpbGU6Ly9zZXR1cC5weS1jaGVjay1jcm9zc19jb21waWxpbmctd2hlbi1nZXQtRkxBR1MucGF0Y2ggXAotZmlsZTovLzAwMDEtRG8tbm90LXVzZS10aGUtc2hlbGwtdmVyc2lvbi1vZi1weXRob24tY29uZmlnLXRoYXQtdy5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiZTllYTZmMjYyM2ZmZmNkZDg3MWI3YjE5MTEzZmRlODAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzZkNTdjMGMzNjZkOTA2MGFiNmMwY2RmODg5ZWJmM2Q5MjcxMWQ0NjZjYzAxMTljNDQxZGJmMjc0NmY3MjVjOSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZGQ5OGQwMWQ0NzFmYWM4ZDhkYmRkOTc1MjI5ZGJhMDMiCi0KLSMgZXhjbHVkZSBwcmUtcmVsZWFzZXMgZm9yIGJvdGggcHl0aG9uIDIueCBhbmQgMy54Ci1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJbUHBdeXRob24tKD9QPHB2ZXI+XGQrKFwuXGQrKSspLnRhciIKLQotUyA9ICIke1dPUktESVJ9L1B5dGhvbi0ke1BWfSIKLQotRVhUUkFOQVRJVkVQQVRIICs9ICJiemlwMi1uYXRpdmUiCi1ERVBFTkRTID0gIm9wZW5zc2wtbmF0aXZlIGJ6aXAyLXJlcGxhY2VtZW50LW5hdGl2ZSB6bGliLW5hdGl2ZSByZWFkbGluZS1uYXRpdmUgc3FsaXRlMy1uYXRpdmUiCi0KLWluaGVyaXQgbmF0aXZlCi0KLVJQUk9WSURFUyArPSAicHl0aG9uMy1kaXN0dXRpbHMtbmF0aXZlIHB5dGhvbjMtY29tcHJlc3Npb24tbmF0aXZlIHB5dGhvbjMtdGV4dHV0aWxzLW5hdGl2ZSBweXRob24zLWNvcmUtbmF0aXZlIgotCi1FWFRSQV9PRUNPTkZfYXBwZW5kID0gIiAtLWJpbmRpcj0ke2JpbmRpcn0vJHtQTn0gLS13aXRob3V0LWVuc3VyZXBpcCIKLQotRVhUUkFfT0VNQUtFID0gJ1wKLSAgQlVJTERfU1lTPSIiIFwKLSAgSE9TVF9TWVM9IiIgXAotICBMSUJDPSIiIFwKLSAgU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9IFwKLSAgU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9IFwKLSAgTElCPSR7YmFzZWxpYn0gXAotICBBUkNIPSR7VEFSR0VUX0FSQ0h9IFwKLScKLQotIyBObyBjdHlwZXMgb3B0aW9uIGZvciBweXRob24gMwotUFlUSE9OTFNCT1BUUyA9ICIiCi0KLWRvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7Ci0JYXV0b3JlY29uZiAtLXZlcmJvc2UgLS1pbnN0YWxsIC0tZm9yY2UgLS1leGNsdWRlPWF1dG9wb2ludCAuLi9QeXRob24tJHtQVn0vTW9kdWxlcy9fY3R5cGVzL2xpYmZmaQotfQotCi1kb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wa2djb25maWcKLQlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKLQlpZiBbIC1lICR7V09SS0RJUn0vc2l0ZWN1c3RvbWl6ZS5weSBdOyB0aGVuCi0JCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfQotCWZpCi0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9LyR7UE59Ci0JaW5zdGFsbCAtbSAwNzU1IFBhcnNlci9wZ2VuICR7RH0ke2JpbmRpcn0vJHtQTn0KLQotCSMgTWFrZSBzdXJlIHdlIHVzZSAvdXNyL2Jpbi9lbnYgcHl0aG9uCi0JZm9yIFBZVEhTQ1JJUFQgaW4gYGdyZXAgLXJJbCAke2JpbmRpcn0vJHtQTn0vcHl0aG9uICR7RH0ke2JpbmRpcn0vJHtQTn1gOyBkbwotCQlzZWQgLWkgLWUgJzFzfF4jIS4qfCMhL3Vzci9iaW4vZW52IHB5dGhvbjN8JyAkUFlUSFNDUklQVAotCWRvbmUKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbmF0aXZlXzMuNS4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1uYXRpdmVfMy41LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTk0ZjE1YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbmF0aXZlXzMuNS4yLmJiCkBAIC0wLDAgKzEsOTggQEAKK3JlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLmluYworCitQUiA9ICIke0lOQ19QUn0uMCIKK1BZVEhPTl9NQUpNSU4gPSAiMy41IgorRElTVFJPX1NSQ19VUkkgPz0gImZpbGU6Ly9zaXRlY3VzdG9taXplLnB5IgorRElTVFJPX1NSQ19VUklfbGludXhzdGRiYXNlID0gIiIKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5weXRob24ub3JnL2Z0cC9weXRob24vJHtQVn0vUHl0aG9uLSR7UFZ9LnRhci54eiBcCitmaWxlOi8vMTItZGlzdHV0aWxzLXByZWZpeC1pcy1pbnNpZGUtc3RhZ2luZy1hcmVhLnBhdGNoIFwKK2ZpbGU6Ly9weXRob24tY29uZmlnLnBhdGNoIFwKK2ZpbGU6Ly8wMDAtY3Jvc3MtY29tcGlsZS5wYXRjaCBcCitmaWxlOi8vMDIwLWRvbnQtY29tcGlsZS1weXRob24tZmlsZXMucGF0Y2ggXAorZmlsZTovLzAzMC1maXh1cC1pbmNsdWRlLWRpcnMucGF0Y2ggXAorZmlsZTovLzA3MC1kb250LWNsZWFuLWlwa2ctaW5zdGFsbC5wYXRjaCBcCitmaWxlOi8vMDgwLWRpc3R1dGlscy1kb250X2FkanVzdF9maWxlcy5wYXRjaCBcCitmaWxlOi8vMTMwLXJlYWRsaW5lLXNldHVwLnBhdGNoIFwKK2ZpbGU6Ly8xNTAtZml4LXNldHVwdGVybS5wYXRjaCBcCitmaWxlOi8vcHl0aG9uLTMuMy1tdWx0aWxpYi5wYXRjaCBcCitmaWxlOi8vMDMtZml4LXRraW50ZXItZGV0ZWN0aW9uLnBhdGNoIFwKK2ZpbGU6Ly9hdm9pZF93YXJuaW5nX2Fib3V0X3RraW50ZXIucGF0Y2ggXAorZmlsZTovL3NodXRpbC1mb2xsb3ctc3ltbGluay1maXgucGF0Y2ggXAorZmlsZTovLzAwMDEtaDJweS1GaXgtaXNzdWUtMTMwMzItd2hlcmUtaXQtZmFpbHMtd2l0aC1Vbmljb2RlRGVjby5wYXRjaCBcCitmaWxlOi8vc3lzcm9vdC1pbmNsdWRlLWhlYWRlcnMucGF0Y2ggXAorZmlsZTovL3VuaXhjY29tcGlsZXIucGF0Y2ggXAorJHtESVNUUk9fU1JDX1VSSX0gXAorZmlsZTovL3N5c2NvbmZpZy5weS1hZGQtX1BZVEhPTl9QUk9KRUNUX1NSQy5wYXRjaCBcCitmaWxlOi8vc2V0dXAucHktY2hlY2stY3Jvc3NfY29tcGlsaW5nLXdoZW4tZ2V0LUZMQUdTLnBhdGNoIFwKK2ZpbGU6Ly8wMDAxLURvLW5vdC11c2UtdGhlLXNoZWxsLXZlcnNpb24tb2YtcHl0aG9uLWNvbmZpZy10aGF0LXcucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiODkwNmVmYmFjZmNkYzdjM2M5MTk4YWVlZmFmZDE1OWUiICAKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwMDEwZjU2MTAwYjliNzQyNTllYmNkNWQ0YjI5NWEzMjMyNGI1OGI1MTc0MDNhMTBkMWEyYWE3Y2IyMmJjYTQwIiAKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NmI2MDI1ODEzMGU0ZWQxMGQzMTAxNTE3ZWI1YjkzODUiCisKKyMgZXhjbHVkZSBwcmUtcmVsZWFzZXMgZm9yIGJvdGggcHl0aG9uIDIueCBhbmQgMy54CitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJbUHBdeXRob24tKD9QPHB2ZXI+XGQrKFwuXGQrKSspLnRhciIKKworUyA9ICIke1dPUktESVJ9L1B5dGhvbi0ke1BWfSIKKworRVhUUkFOQVRJVkVQQVRIICs9ICJiemlwMi1uYXRpdmUiCitERVBFTkRTID0gIm9wZW5zc2wtbmF0aXZlIGJ6aXAyLXJlcGxhY2VtZW50LW5hdGl2ZSB6bGliLW5hdGl2ZSByZWFkbGluZS1uYXRpdmUgc3FsaXRlMy1uYXRpdmUiCisKK2luaGVyaXQgbmF0aXZlCisKK1JQUk9WSURFUyArPSAiIFwKKyAgICBweXRob24zLWNvbXByZXNzaW9uLW5hdGl2ZSBcCisgICAgcHl0aG9uMy1jb3JlLW5hdGl2ZSBcCisgICAgcHl0aG9uMy1kaXN0dXRpbHMtbmF0aXZlIFwKKyAgICBweXRob24zLWVtYWlsLW5hdGl2ZSBcCisgICAgcHl0aG9uMy1pbXBvcnRsaWItbmF0aXZlIFwKKyAgICBweXRob24zLWlvLW5hdGl2ZSBcCisgICAgcHl0aG9uMy1qc29uLW5hdGl2ZSBcCisgICAgcHl0aG9uMy1sYW5nLW5hdGl2ZSBcCisgICAgcHl0aG9uMy1taXNjLW5hdGl2ZSBcCisgICAgcHl0aG9uMy1uZXRjbGllbnQtbmF0aXZlIFwKKyAgICBweXRob24zLW5ldHNlcnZlci1uYXRpdmUgXAorICAgIHB5dGhvbjMtbnVtYmVycy1uYXRpdmUgXAorICAgIHB5dGhvbjMtcGtndXRpbC1uYXRpdmUgXAorICAgIHB5dGhvbjMtcHByaW50LW5hdGl2ZSBcCisgICAgcHl0aG9uMy1yZS1uYXRpdmUgXAorICAgIHB5dGhvbjMtc2hlbGwtbmF0aXZlIFwKKyAgICBweXRob24zLXN1YnByb2Nlc3MtbmF0aXZlIFwKKyAgICBweXRob24zLXRleHR1dGlscy1uYXRpdmUgXAorICAgIHB5dGhvbjMtdGhyZWFkaW5nLW5hdGl2ZSBcCisgICAgcHl0aG9uMy11bml0dGVzdC1uYXRpdmUgXAorIgorCitFWFRSQV9PRUNPTkZfYXBwZW5kID0gIiAtLWJpbmRpcj0ke2JpbmRpcn0vJHtQTn0gLS13aXRob3V0LWVuc3VyZXBpcCIKKworRVhUUkFfT0VNQUtFID0gJ1wKKyAgTElCQz0iIiBcCisgIFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSBcCisgIFNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfSBcCisgIExJQj0ke2Jhc2VsaWJ9IFwKKyAgQVJDSD0ke1RBUkdFVF9BUkNIfSBcCisnCisKKyMgTm8gY3R5cGVzIG9wdGlvbiBmb3IgcHl0aG9uIDMKK1BZVEhPTkxTQk9QVFMgPSAiIgorCitkb19jb25maWd1cmVfYXBwZW5kKCkgeworCWF1dG9yZWNvbmYgLS12ZXJib3NlIC0taW5zdGFsbCAtLWZvcmNlIC0tZXhjbHVkZT1hdXRvcG9pbnQgLi4vUHl0aG9uLSR7UFZ9L01vZHVsZXMvX2N0eXBlcy9saWJmZmkKK30KKworZG9faW5zdGFsbCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnCisJb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCisJaWYgWyAtZSAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgXTsgdGhlbgorCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zaXRlY3VzdG9taXplLnB5ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0KKwlmaQorCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfS8ke1BOfQorCWluc3RhbGwgLW0gMDc1NSBQYXJzZXIvcGdlbiAke0R9JHtiaW5kaXJ9LyR7UE59CisKKwkjIE1ha2Ugc3VyZSB3ZSB1c2UgL3Vzci9iaW4vZW52IHB5dGhvbgorCWZvciBQWVRIU0NSSVBUIGluIGBncmVwIC1ySWwgJHtiaW5kaXJ9LyR7UE59L3B5dGhvbiAke0R9JHtiaW5kaXJ9LyR7UE59YDsgZG8KKwkJc2VkIC1pIC1lICcxc3xeIyEuKnwjIS91c3IvYmluL2VudiBweXRob24zfCcgJFBZVEhTQ1JJUFQKKwlkb25lCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5vc2VfMS4zLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5vc2VfMS4zLjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTliYmE0NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbm9zZV8xLjMuNy5iYgpAQCAtMCwwICsxLDI0IEBACitTVU1NQVJZID0gIkV4dGVuZHMgUHl0aG9uIHVuaXR0ZXN0IHRvIG1ha2UgdGVzdGluZyBlYXNpZXIiCitERVNDUklQVElPTiA9ICJub3NlIGV4dGVuZHMgdGhlIHRlc3QgbG9hZGluZyBhbmQgcnVubmluZyBmZWF0dXJlcyBvZiB1bml0dGVzdCwgXAorbWFraW5nIGl0IGVhc2llciB0byB3cml0ZSwgZmluZCBhbmQgcnVuIHRlc3RzLiIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2xncGwudHh0O21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyIKKworU1JDX1VSSSA9ICJodHRwczovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvc291cmNlL24vbm9zZS9ub3NlLSR7UFZ9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gIjRkM2FkMGZmMDdiNjEzNzNkMmNlZmM4OWM1ZDBiMjBiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImYxYmZmZWY5Y2JjODI2MjhmNmU3ZDdiNDBkN2UyNTVhZWZhYTFhZGI2YTFiMWQyNmM2OWE4Yjc5ZTYyMDhhOTgiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL25vc2UvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL25vc2UvKD9QPHB2ZXI+KFxkK1tcLlwtX10qKSspIgorCitTID0gIiR7V09SS0RJUn0vbm9zZS0ke1BWfSIKKworaW5oZXJpdCBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgPSAiXAorICBweXRob24zLXVuaXR0ZXN0IFwKKyAgIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpcF84LjAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlwXzguMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MzRlY2RhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlwXzguMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgUHlQQSByZWNvbW1lbmRlZCB0b29sIGZvciBpbnN0YWxsaW5nIFB5dGhvbiBwYWNrYWdlcyIKLXNIT01FUEFHRXNzcyA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3BpcCIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9MjVmYmE0NTEwOTU2NWY4N2RlMjBiYWU4NWJjMzk0NTIiCi0KLVNSQ05BTUUgPSAicGlwIgotREVQRU5EUyArPSAicHl0aG9uMyBweXRob24zLXNldHVwdG9vbHMtbmF0aXZlIgotCi1TUkNfVVJJID0gIiBcCi0gIGh0dHA6Ly9weXBpLnB5dGhvbi5vcmcvcGFja2FnZXMvc291cmNlL3AvJHtTUkNOQU1FfS8ke1NSQ05BTUV9LSR7UFZ9LnRhci5neiBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiNTYwMWM0MzIzNDY0YWRkMTQ4MjI5MTYzNDE0Mjg5NGQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTAxMTJiMjk2MTUyZjI3MGNiOGRkZGNkMTliN2I4NzQ4OGQ5ZTAwMmU4Y2Y2MjJlMTRjNGRhOWMyZjYzMTliMSIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcGlwIgotCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKLQotaW5oZXJpdCBkaXN0dXRpbHMzCi0KLURJU1RVVElMU19JTlNUQUxMX0FSR1MgKz0gIi0taW5zdGFsbC1saWI9JHtEfSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMiCi0KLWRvX2luc3RhbGxfcHJlcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0vJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcwotfQotCi0jIFVzZSBzZXR1cHRvb2xzIHNpdGUucHkgaW5zdGVhZCwgYXZvaWQgc2hhcmVkIHN0YXRlIGlzc3VlCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBybSAke0R9LyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvc2l0ZS5weQotICAgIHJtICR7RH0vJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy9fX3B5Y2FjaGVfXy9zaXRlLmNweXRob24tKi5weWMKLQotICAgICMgSW5zdGFsbCBhcyBwaXAzIGFuZCBsZWF2ZSBwaXAyIGFzIGRlZmF1bHQKLSAgICBybSAke0R9LyR7YmluZGlyfS9waXAKLQotICAgICMgSW5zdGFsbGVkIGVnZ3MgbmVlZCB0byBiZSBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlIGludGVycHJldGVyIHZpYSBhIHB0aCBmaWxlCi0gICAgZWNobyAiLi8ke1NSQ05BTUV9LSR7UFZ9LXB5JHtQWVRIT05fQkFTRVZFUlNJT059LmVnZyIgPiAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vJHtTUkNOQU1FfS0ke1BWfS5wdGgKLX0KLQotUkRFUEVORFNfJHtQTn0gPSAiXAotICBweXRob24zLWNvbXBpbGUgXAotICBweXRob24zLWlvIFwKLSAgcHl0aG9uMy1qc29uIFwKLSAgcHl0aG9uMy1uZXRzZXJ2ZXIgXAotICBweXRob24zLXNldHVwdG9vbHMgXAotICBweXRob24zLXVuaXhhZG1pbiBcCi0gIHB5dGhvbjMteG1scnBjIFwKLSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlwXzguMS4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waXBfOC4xLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWVmYjRjYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlwXzguMS4yLmJiCkBAIC0wLDAgKzEsNDcgQEAKK1NVTU1BUlkgPSAiVGhlIFB5UEEgcmVjb21tZW5kZWQgdG9vbCBmb3IgaW5zdGFsbGluZyBQeXRob24gcGFja2FnZXMiCitzSE9NRVBBR0Vzc3MgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9waXAiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTI1ZmJhNDUxMDk1NjVmODdkZTIwYmFlODViYzM5NDUyIgorCitTUkNOQU1FID0gInBpcCIKK0RFUEVORFMgKz0gInB5dGhvbjMgcHl0aG9uMy1zZXR1cHRvb2xzLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwczovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvc291cmNlL3AvJHtTUkNOQU1FfS8ke1NSQ05BTUV9LSR7UFZ9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gIjg3MDgzYzBiOTg2Nzk2M2IyOWY3YWJhMzYxM2U4ZjRhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRkMjRiMDNmZmE2NzYzOGEzZmE5MzFjMDlmZDllMDI3M2ZmYTkwNGU5NWViZWJlN2Q0YjFhNTRjOTNkN2I3MzIiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3BpcCIKKworUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCisKK2luaGVyaXQgZGlzdHV0aWxzMworCitESVNUVVRJTFNfSU5TVEFMTF9BUkdTICs9ICItLWluc3RhbGwtbGliPSR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKKworZG9faW5zdGFsbF9wcmVwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9Cit9CisKKyMgVXNlIHNldHVwdG9vbHMgc2l0ZS5weSBpbnN0ZWFkLCBhdm9pZCBzaGFyZWQgc3RhdGUgaXNzdWUKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIHJtICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zaXRlLnB5CisgICAgcm0gJHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L19fcHljYWNoZV9fL3NpdGUuY3B5dGhvbi0qLnB5YworCisgICAgIyBJbnN0YWxsIGFzIHBpcDMgYW5kIGxlYXZlIHBpcDIgYXMgZGVmYXVsdAorICAgIHJtICR7RH0vJHtiaW5kaXJ9L3BpcAorCisgICAgIyBJbnN0YWxsZWQgZWdncyBuZWVkIHRvIGJlIHBhc3NlZCBkaXJlY3RseSB0byB0aGUgaW50ZXJwcmV0ZXIgdmlhIGEgcHRoIGZpbGUKKyAgICBlY2hvICIuLyR7U1JDTkFNRX0tJHtQVn0tcHkke1BZVEhPTl9CQVNFVkVSU0lPTn0uZWdnIiA+ICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8ke1NSQ05BTUV9LSR7UFZ9LnB0aAorfQorCitSREVQRU5EU18ke1BOfSA9ICJcCisgIHB5dGhvbjMtY29tcGlsZSBcCisgIHB5dGhvbjMtaW8gXAorICBweXRob24zLWpzb24gXAorICBweXRob24zLW5ldHNlcnZlciBcCisgIHB5dGhvbjMtc2V0dXB0b29scyBcCisgIHB5dGhvbjMtdW5peGFkbWluIFwKKyAgcHl0aG9uMy14bWxycGMgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNhaXJvXzEuMTAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljYWlyb18xLjEwLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjkwMzFiMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljYWlyb18xLjEwLjAuYmIKQEAgLTAsMCArMSw0MCBAQAorU1VNTUFSWSA9ICJQeXRob24gYmluZGluZ3MgZm9yIHRoZSBDYWlybyBjYW52YXMgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly9jYWlyb2dyYXBoaWNzLm9yZy9weWNhaXJvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVncy5mcmVlZGVza3RvcC5vcmciCitTRUNUSU9OID0gInB5dGhvbi1kZXZlbCIKK0xJQ0VOU0UgPSAiTEdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MRVNTRVI7bWQ1PWU2YTYwMGZkNWUxZDljYmRlMmQ5ODM2ODAyMzNhZDAyIgorCisjIGNhaXJvID49IDEuOC44CitERVBFTkRTID0gImNhaXJvIgorUFIgPSAicjIiCisKK1NSQ19VUkkgPSAiaHR0cDovL2NhaXJvZ3JhcGhpY3Mub3JnL3JlbGVhc2VzL3B5Y2Fpcm8tJHtQVn0udGFyLmJ6MiIKKworU1JDX1VSSVttZDVzdW1dID0gImU2ZmQzZjJmMWU2YTcyZTBkYjA4NjhjNDk4NTY2OWM1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlhYTQwNzhlN2ViNWJlNTgzYWVhYmJlOGQ4NzE3Mjc5NzcxN2Y5NWU4YzQzMzhmMGQ0YTE3YjY4M2E3MjUzYmUiCisKK1MgPSAiJHtXT1JLRElSfS9weWNhaXJvLSR7UFZ9IgorCitpbmhlcml0IGRpc3R1dGlsczMgcGtnY29uZmlnCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitkb19jb25maWd1cmUoKSB7CisJUFlUSE9OPSR7UFlUSE9OfSAuL3dhZiBjb25maWd1cmUgLS1wcmVmaXg9JHtEfSR7cHJlZml4fSAtLWxpYmRpcj0ke0R9JHtsaWJkaXJ9Cit9CisKK2RvX2NvbXBpbGUoKSB7CisJLi93YWYgYnVpbGQgJHtQQVJBTExFTF9NQUtFfQorfQorCitkb19pbnN0YWxsKCkgeworCS4vd2FmIGluc3RhbGwKKwlzZWQgXAorCQktZSAnczpAcHJlZml4QDoke3ByZWZpeH06JyBcCisJCS1lICdzOkBWRVJTSU9OQDoke1BWfTonIFwKKwkJLWUgJ3M6QGluY2x1ZGVkaXJAOiR7aW5jbHVkZWRpcn06JyBcCisJCXB5M2NhaXJvLnBjLmluID4gcHkzY2Fpcm8ucGMKKwlpbnN0YWxsIC1tIDA2NDQgcHkzY2Fpcm8ucGMgJHtEfSR7bGliZGlyfS9wa2djb25maWcvCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlnb2JqZWN0LzAwMDEtY29uZmlndXJlLmFjLWFkZC1zeXNyb290LXBhdGgtdG8tR0lfREFUQURJUi1kb24tdC1zZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlnb2JqZWN0LzAwMDEtY29uZmlndXJlLmFjLWFkZC1zeXNyb290LXBhdGgtdG8tR0lfREFUQURJUi1kb24tdC1zZS5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Z29iamVjdC8wMDAxLWNvbmZpZ3VyZS5hYy1hZGQtc3lzcm9vdC1wYXRoLXRvLUdJX0RBVEFESVItZG9uLXQtc2UucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlnb2JqZWN0LzAwMDEtY29uZmlndXJlLmFjLWFkZC1zeXNyb290LXBhdGgtdG8tR0lfREFUQURJUi1kb24tdC1zZS5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdvYmplY3RfMy4yMC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdvYmplY3RfMy4yMC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkYTE2ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z29iamVjdF8zLjIwLjEuYmIKQEAgLTAsMCArMSwyNSBAQAorU1VNTUFSWSA9ICJQeXRob24gR09iamVjdCBiaW5kaW5ncyIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE5MTY0NjdiOTEwNzZlNjMxZGQ4ZWRiNzQyNDc2OWM3IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ25vbWViYXNlIGRpc3R1dGlsczMtYmFzZSBnb2JqZWN0LWludHJvc3BlY3Rpb24gdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKK0RFUEVORFMgKz0gInB5dGhvbjMgZ2xpYi0yLjAiCisKK1NSQ05BTUU9InB5Z29iamVjdCIKK1NSQ19VUkkgPSAiIFwKKyAgICBodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy8ke1NSQ05BTUV9LyR7QGdub21lX3ZlcmRpcigiJHtQVn0iKX0vJHtTUkNOQU1FfS0ke1BWfS50YXIueHogXAorICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1hZGQtc3lzcm9vdC1wYXRoLXRvLUdJX0RBVEFESVItZG9uLXQtc2UucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDM1NGM2MjgzYjEzNWY4NTk1NjNiNzI0NTdmNmEzMjEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2QyNjEwMDVkNmZlZDZhOTJhYzRjMjVmMjgzNzkyNTUyZjdkYWQ4NjVkMWI3ZTBjMDNjMmI4NGMwNGRiZDc0NSIKKworUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWNhaXJvIgorCitSREVQRU5EU18ke1BOfSArPSAicHl0aG9uMy1zZXR1cHRvb2xzIHB5dGhvbjMtaW1wb3J0bGliIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzXzE5LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNldHVwdG9vbHNfMTkuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmIyOTMxYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNldHVwdG9vbHNfMTkuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLXNldHVwdG9vbHMuaW5jCi0KLURFUEVORFMgKz0gInB5dGhvbjMiCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSArPSAicHl0aG9uMy1uYXRpdmUiCi0KLWluaGVyaXQgZGlzdHV0aWxzMwotCi1ESVNUVVRJTFNfSU5TVEFMTF9BUkdTICs9ICItLWluc3RhbGwtbGliPSR7RH0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzIgotCi0jIFRoZSBpbnN0YWxsZXIgcHV0cyB0aGUgd3JvbmcgcGF0aCBpbiB0aGUgc2V0dXB0b29scy5wdGggZmlsZS4gIENvcnJlY3QgaXQuCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBybSAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2V0dXB0b29scy5wdGgKLSAgICBtdiAke0R9JHtiaW5kaXJ9L2Vhc3lfaW5zdGFsbCAke0R9JHtiaW5kaXJ9L2Vhc3kzX2luc3RhbGwKLSAgICBlY2hvICIuLyR7U1JDTkFNRX0tJHtQVn0tcHkke1BZVEhPTl9CQVNFVkVSU0lPTn0uZWdnIiA+ICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zZXR1cHRvb2xzLnB0aAotfQotCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gIHB5dGhvbjMtZGlzdHV0aWxzIFwKLSAgcHl0aG9uMy1jb21wcmVzc2lvbiBcCi0iCi1SREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgPSAiXAotICBweXRob24zLWN0eXBlcyBcCi0gIHB5dGhvbjMtZGlzdHV0aWxzIFwKLSAgcHl0aG9uMy1lbWFpbCBcCi0gIHB5dGhvbjMtaW1wb3J0bGliIFwKLSAgcHl0aG9uMy1udW1iZXJzIFwKLSAgcHl0aG9uMy1jb21wcmVzc2lvbiBcCi0gIHB5dGhvbjMtc2hlbGwgXAotICBweXRob24zLXN1YnByb2Nlc3MgXAotICBweXRob24zLXRleHR1dGlscyBcCi0gIHB5dGhvbjMtcGtndXRpbCBcCi0gIHB5dGhvbjMtdGhyZWFkaW5nIFwKLSAgcHl0aG9uMy1taXNjIFwKLSAgcHl0aG9uMy11bml0dGVzdCBcCi0gIHB5dGhvbjMteG1sIFwKLSIKLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzXzIyLjAuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2V0dXB0b29sc18yMi4wLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjVhZjZmMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2V0dXB0b29sc18yMi4wLjUuYmIKQEAgLTAsMCArMSwzNyBAQAorcmVxdWlyZSBweXRob24tc2V0dXB0b29scy5pbmMKKworREVQRU5EUyArPSAicHl0aG9uMyIKK0RFUEVORFNfY2xhc3MtbmF0aXZlICs9ICJweXRob24zLW5hdGl2ZSIKKworaW5oZXJpdCBkaXN0dXRpbHMzCisKK0RJU1RVVElMU19JTlNUQUxMX0FSR1MgKz0gIi0taW5zdGFsbC1saWI9JHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgorCisjIFRoZSBpbnN0YWxsZXIgcHV0cyB0aGUgd3JvbmcgcGF0aCBpbiB0aGUgc2V0dXB0b29scy5wdGggZmlsZS4gIENvcnJlY3QgaXQuCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBybSAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2V0dXB0b29scy5wdGgKKyAgICBtdiAke0R9JHtiaW5kaXJ9L2Vhc3lfaW5zdGFsbCAke0R9JHtiaW5kaXJ9L2Vhc3kzX2luc3RhbGwKKyAgICBlY2hvICIuLyR7U1JDTkFNRX0tJHtQVn0tcHkke1BZVEhPTl9CQVNFVkVSU0lPTn0uZWdnIiA+ICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zZXR1cHRvb2xzLnB0aAorfQorCitSREVQRU5EU18ke1BOfSA9ICJcCisgIHB5dGhvbjMtZGlzdHV0aWxzIFwKKyAgcHl0aG9uMy1jb21wcmVzc2lvbiBcCisiCitSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgPSAiXAorICBweXRob24zLWN0eXBlcyBcCisgIHB5dGhvbjMtZGlzdHV0aWxzIFwKKyAgcHl0aG9uMy1lbWFpbCBcCisgIHB5dGhvbjMtaW1wb3J0bGliIFwKKyAgcHl0aG9uMy1udW1iZXJzIFwKKyAgcHl0aG9uMy1jb21wcmVzc2lvbiBcCisgIHB5dGhvbjMtc2hlbGwgXAorICBweXRob24zLXN1YnByb2Nlc3MgXAorICBweXRob24zLXRleHR1dGlscyBcCisgIHB5dGhvbjMtcGtndXRpbCBcCisgIHB5dGhvbjMtdGhyZWFkaW5nIFwKKyAgcHl0aG9uMy1taXNjIFwKKyAgcHl0aG9uMy11bml0dGVzdCBcCisgIHB5dGhvbjMteG1sIFwKKyIKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaXhfMS4xMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaXhfMS4xMC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4YTQ3YjcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNpeF8xLjEwLjAuYmIKQEAgLTAsMCArMSw0IEBACitpbmhlcml0IHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1zaXguaW5jCisKK1JERVBFTkRTXyR7UE59ICs9ICJweXRob24zLWlvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zbW1hcF8wLjkuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc21tYXBfMC45LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWY4YTI2ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc21tYXBfMC45LjAuYmIKQEAgLTAsMCArMSw1IEBACityZXF1aXJlIHB5dGhvbi1zbW1hcC5pbmMKKworaW5oZXJpdCBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSArPSAicHl0aG9uMy1jb2RlY3MgcHl0aG9uMy1tbWFwIHB5dGhvbjMtbGFuZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwLWNyb3NzLWNvbXBpbGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMC1jcm9zcy1jb21waWxlLnBhdGNoCmluZGV4IDI4ZmU3MGEuLjJkODIyMjEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwLWNyb3NzLWNvbXBpbGUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAtY3Jvc3MtY29tcGlsZS5wYXRjaApAQCAtOSwxOSArOSwxOSBAQAogIE1ha2VmaWxlLnByZS5pbiB8ICAgMjUgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKIAotSW5kZXg6IFB5dGhvbi0zLjUuMS9NYWtlZmlsZS5wcmUuaW4KK0luZGV4OiBQeXRob24tMy41LjIvTWFrZWZpbGUucHJlLmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTMuNS4xLm9yaWcvTWFrZWZpbGUucHJlLmluCi0rKysgUHl0aG9uLTMuNS4xL01ha2VmaWxlLnByZS5pbgorLS0tIFB5dGhvbi0zLjUuMi5vcmlnL01ha2VmaWxlLnByZS5pbgorKysrIFB5dGhvbi0zLjUuMi9NYWtlZmlsZS5wcmUuaW4KIEBAIC0yMjAsNiArMjIwLDcgQEAgTElCT0JKUz0JQExJQk9CSlNACiAgCiAgUFlUSE9OPQkJcHl0aG9uJChFWEUpCiAgQlVJTERQWVRIT049CXB5dGhvbiQoQlVJTERFWEUpCiArSE9TVFBZVEhPTj0JJChCVUlMRFBZVEhPTikKICAKKyBjcm9zc19jb21waWxpbmc9QGNyb3NzX2NvbXBpbGluZ0AKICBQWVRIT05fRk9SX0JVSUxEPUBQWVRIT05fRk9SX0JVSUxEQAotIF9QWVRIT05fSE9TVF9QTEFURk9STT1AX1BZVEhPTl9IT1NUX1BMQVRGT1JNQAotQEAgLTI3Niw2ICsyNzcsNyBAQCBMSUJGRklfSU5DTFVERURJUj0JQExJQkZGSV9JTkNMVURFRElSQAorQEAgLTI3OSw2ICsyODAsNyBAQCBMSUJGRklfSU5DTFVERURJUj0JQExJQkZGSV9JTkNMVURFRElSQAogICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgIyBQYXJzZXIKICBQR0VOPQkJUGFyc2VyL3BnZW4kKEVYRSkKQEAgLTI5LDcgKzI5LDcgQEAKICAKICBQU1JDUz0JCVwKICAJCVBhcnNlci9hY2NlbGVyLmMgXAotQEAgLTUwNiw3ICs1MDgsNyBAQCBidWlsZF9hbGxfZ2VuZXJhdGVfcHJvZmlsZToKK0BAIC01MDksNyArNTExLDcgQEAgYnVpbGRfYWxsX2dlbmVyYXRlX3Byb2ZpbGU6CiAgCiAgcnVuX3Byb2ZpbGVfdGFzazoKICAJOiAjIEZJWE1FOiBjYW4ndCBydW4gZm9yIGEgY3Jvc3MgYnVpbGQKQEAgLTM4LDE2ICszOCwxNiBAQAogIAogIGJ1aWxkX2FsbF9tZXJnZV9wcm9maWxlOgogIAkkKExMVk1fUFJPRl9NRVJHRVIpCi1AQCAtNzc5LDcgKzc4MSw3IEBAICQoSU9fT0JKUyk6ICQoSU9fSCkKLSAKLSAkKEdSQU1NQVJfSCk6ICQoR1JBTU1BUl9JTlBVVCkgJChQR0VOKQotIAkJQCQoTUtESVJfUCkgSW5jbHVkZQotLQkJJChQR0VOKSAkKEdSQU1NQVJfSU5QVVQpICQoR1JBTU1BUl9IKSAkKEdSQU1NQVJfQykKLSsJCSQoSE9TVFBHRU4pICQoR1JBTU1BUl9JTlBVVCkgJChHUkFNTUFSX0gpICQoR1JBTU1BUl9DKQotICQoR1JBTU1BUl9DKTogJChHUkFNTUFSX0gpCi0gCQl0b3VjaCAkKEdSQU1NQVJfQykKLSAKLUBAIC05NjgsNyArOTcwLDcgQEAgJChMSUJSQVJZX09CSlMpICQoTU9ET0JKUykgUHJvZ3JhbXMvcHl0aAorQEAgLTc5Miw3ICs3OTQsNyBAQCAkKEdSQU1NQVJfSCk6ICQoR1JBTU1BUl9JTlBVVCkgJChQR0VOKQorIAlAJChNS0RJUl9QKSBJbmNsdWRlCisgCSMgQXZvaWQgY29weWluZyB0aGUgZmlsZSBvbnRvIGl0c2VsZiBmb3IgYW4gaW4tdHJlZSBidWlsZAorIAlpZiB0ZXN0ICIkKGNyb3NzX2NvbXBpbGluZykiICE9ICJ5ZXMiOyB0aGVuIFwKKy0JCSQoUEdFTikgJChHUkFNTUFSX0lOUFVUKSAkKEdSQU1NQVJfSCkgJChHUkFNTUFSX0MpOyBcCisrCQkkKEhPU1RQR0VOKSAkKEdSQU1NQVJfSU5QVVQpICQoR1JBTU1BUl9IKSAkKEdSQU1NQVJfQyk7IFwKKyAJZWxzZSBcCisgCQljcCAkKHNyY2RpcikvSW5jbHVkZS9ncmFtaW5pdC5oICQoR1JBTU1BUl9IKS50bXA7IFwKKyAJCW12ICQoR1JBTU1BUl9IKS50bXAgJChHUkFNTUFSX0gpOyBcCitAQCAtOTkwLDcgKzk5Miw3IEBAICQoTElCUkFSWV9PQkpTKSAkKE1PRE9CSlMpIFByb2dyYW1zL3B5dGgKICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgCiAgVEVTVE9QVFM9CSQoRVhUUkFURVNUT1BUUykKQEAgLTU2LDcgKzU2LDcgQEAKICBURVNUUlVOTkVSPQkkKFRFU1RQWVRIT04pICQoc3JjZGlyKS9Ub29scy9zY3JpcHRzL3J1bl90ZXN0cy5weQogIFRFU1RUSU1FT1VUPQkzNjAwCiAgCi1AQCAtMTQ1NSw3ICsxNDU3LDcgQEAgZnJhbWV3b3JraW5zdGFsbHN0cnVjdHVyZToJJChMRExJQlJBUlkpCitAQCAtMTQ4MSw3ICsxNDgzLDcgQEAgZnJhbWV3b3JraW5zdGFsbHN0cnVjdHVyZToJJChMRExJQlJBUlkpCiAgCQlmaTsgXAogIAlkb25lCiAgCSQoTE4pIC1mc24gaW5jbHVkZS9weXRob24kKExEVkVSU0lPTikgJChERVNURElSKSQocHJlZml4KS9IZWFkZXJzCkBAIC02NSw3ICs2NSw3IEBACiAgCSQoTE4pIC1mc24gJChWRVJTSU9OKSAkKERFU1RESVIpJChQWVRIT05GUkFNRVdPUktJTlNUQUxMRElSKS9WZXJzaW9ucy9DdXJyZW50CiAgCSQoTE4pIC1mc24gVmVyc2lvbnMvQ3VycmVudC8kKFBZVEhPTkZSQU1FV09SSykgJChERVNURElSKSQoUFlUSE9ORlJBTUVXT1JLSU5TVEFMTERJUikvJChQWVRIT05GUkFNRVdPUkspCiAgCSQoTE4pIC1mc24gVmVyc2lvbnMvQ3VycmVudC9IZWFkZXJzICQoREVTVERJUikkKFBZVEhPTkZSQU1FV09SS0lOU1RBTExESVIpL0hlYWRlcnMKLUBAIC0xNTIxLDcgKzE1MjMsNyBAQCBjb25maWcuc3RhdHVzOgkkKHNyY2RpcikvY29uZmlndXJlCitAQCAtMTU0Nyw3ICsxNTQ5LDcgQEAgY29uZmlnLnN0YXR1czoJJChzcmNkaXIpL2NvbmZpZ3VyZQogIAogICMgUnVuIHJlaW5kZW50IG9uIHRoZSBsaWJyYXJ5CiAgcmVpbmRlbnQ6CkBAIC03NCw3ICs3NCw3IEBACiAgCiAgIyBSZXJ1biBjb25maWd1cmUgd2l0aCB0aGUgc2FtZSBvcHRpb25zIGFzIGl0IHdhcyBydW4gbGFzdCB0aW1lLAogICMgcHJvdmlkZWQgdGhlIGNvbmZpZy5zdGF0dXMgc2NyaXB0IGV4aXN0cwotQEAgLTE2NTYsNyArMTY1OCw3IEBAIGZ1bm55OgorQEAgLTE2ODMsNyArMTY4NSw3IEBAIGZ1bm55OgogIAogICMgUGVyZm9ybSBzb21lIHZlcmlmaWNhdGlvbiBjaGVja3Mgb24gYW55IG1vZGlmaWVkIGZpbGVzLgogIHBhdGNoY2hlY2s6IGFsbApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8xMTAtZW5hYmxlLXpsaWIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzExMC1lbmFibGUtemxpYi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI5MmExOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzExMC1lbmFibGUtemxpYi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLUVuYWJsZSB6bGliIGluIHB5dGhvbgotCi0tS2hlbQotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLVNwZWNpZmljXQotCi0tLS0KLSBNb2R1bGVzL1NldHVwLmRpc3QgfCAgICAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLS0tLSBhL01vZHVsZXMvU2V0dXAuZGlzdAotKysrIGIvTW9kdWxlcy9TZXR1cC5kaXN0Ci1AQCAtMzU0LDcgKzM1NCw3IEBAIF9zeW10YWJsZSBzeW10YWJsZW1vZHVsZS5jCi0gIyBBbmRyZXcgS3VjaGxpbmcncyB6bGliIG1vZHVsZS4KLSAjIFRoaXMgcmVxdWlyZSB6bGliIDEuMS4zIChvciBsYXRlcikuCi0gIyBTZWUgaHR0cDovL3d3dy5nemlwLm9yZy96bGliLwotLSN6bGliIHpsaWJtb2R1bGUuYyAtSSQocHJlZml4KS9pbmNsdWRlIC1MJChleGVjX3ByZWZpeCkvbGliIC1segotK3psaWIgemxpYm1vZHVsZS5jIC1segotIAotICMgSW50ZXJmYWNlIHRvIHRoZSBFeHBhdCBYTUwgcGFyc2VyCi0gIwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8xMi1kaXN0dXRpbHMtcHJlZml4LWlzLWluc2lkZS1zdGFnaW5nLWFyZWEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzEyLWRpc3R1dGlscy1wcmVmaXgtaXMtaW5zaWRlLXN0YWdpbmctYXJlYS5wYXRjaAppbmRleCA4YjkzYzFjLi5jNTNlYzBjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzEyLWRpc3R1dGlscy1wcmVmaXgtaXMtaW5zaWRlLXN0YWdpbmctYXJlYS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzEyLWRpc3R1dGlscy1wcmVmaXgtaXMtaW5zaWRlLXN0YWdpbmctYXJlYS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gZDRkZDY3ZGFhMTU1NWJmMTMyNzJjYzA3MTcwNjMzODU3MjUzOWJhZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNzYzMGFiMjI1Nzg3NDZkM2Q3OTBkMDU5OGMwZDI3OWNmN2FmZWQ5NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBUdWUsIDE0IE1heSAyMDEzIDE1OjAwOjI2IC0wNzAwCiBTdWJqZWN0OiBbUEFUQ0ggMDEvMjBdIHB5dGhvbjM6IEFkZCB0YXJnZXQgYW5kIG5hdGl2ZSByZWNpcGVzCkBAIC0xNCwyNyArMTQsMTQgQEAKICMgU2lnbmVkLW9mZi1ieTogQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+CiAKIC0tLQorIExpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5IHwgMTAgKysrKysrKystLQorIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKIGRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weSBiL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5Ci1pbmRleCA1NzM3MjRkLi40MThiNDc4IDEwMDY0NAoraW5kZXggNTczNzI0ZC4uMzkwYzQ4NSAxMDA2NDQKIC0tLSBhL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CiArKysgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQotQEAgLTE3LDEwICsxNywxMSBAQCBpbXBvcnQgc3lzCi0gZnJvbSAuZXJyb3JzIGltcG9ydCBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yCi0gCi0gIyBUaGVzZSBhcmUgbmVlZGVkIGluIGEgY291cGxlIG9mIHNwb3RzLCBzbyBqdXN0IGNvbXB1dGUgdGhlbSBvbmNlLgotLVBSRUZJWCA9IG9zLnBhdGgubm9ybXBhdGgoc3lzLnByZWZpeCkKLS1FWEVDX1BSRUZJWCA9IG9zLnBhdGgubm9ybXBhdGgoc3lzLmV4ZWNfcHJlZml4KQotLUJBU0VfUFJFRklYID0gb3MucGF0aC5ub3JtcGF0aChzeXMuYmFzZV9wcmVmaXgpCi0tQkFTRV9FWEVDX1BSRUZJWCA9IG9zLnBhdGgubm9ybXBhdGgoc3lzLmJhc2VfZXhlY19wcmVmaXgpCi0rUFJFRklYID0gb3MucGF0aC5ub3JtcGF0aChzeXMucHJlZml4KS5yZXBsYWNlKCBvcy5nZXRlbnYoIkJVSUxEX1NZUyIpLCBvcy5nZXRlbnYoIkhPU1RfU1lTIikgKQotK0VYRUNfUFJFRklYID0gb3MucGF0aC5ub3JtcGF0aChzeXMuZXhlY19wcmVmaXgpLnJlcGxhY2UoIG9zLmdldGVudigiQlVJTERfU1lTIiksIG9zLmdldGVudigiSE9TVF9TWVMiKSApCi0rQkFTRV9QUkVGSVggPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5iYXNlX3ByZWZpeCkucmVwbGFjZSggb3MuZ2V0ZW52KCJCVUlMRF9TWVMiKSwgb3MuZ2V0ZW52KCJIT1NUX1NZUyIpICkKLStCQVNFX0VYRUNfUFJFRklYPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5iYXNlX2V4ZWNfcHJlZml4KS5yZXBsYWNlKCBvcy5nZXRlbnYoIkJVSUxEX1NZUyIpLCBvcy5nZXRlbnYoIkhPU1RfU1lTIikgKQotKwotIAotICMgUGF0aCB0byB0aGUgYmFzZSBkaXJlY3Rvcnkgb2YgdGhlIHByb2plY3QuIE9uIFdpbmRvd3MgdGhlIGJpbmFyeSBtYXkKLSAjIGxpdmUgaW4gcHJvamVjdC9QQ0J1aWxkL3dpbjMyIG9yIHByb2plY3QvUENCdWlsZC9hbWQ2NC4KLUBAIC04NCw3ICs4NSw5IEBAIGRlZiBnZXRfcHl0aG9uX2luYyhwbGF0X3NwZWNpZmljPTAsIHByZWZpeD1Ob25lKToKK0BAIC04NCw3ICs4NCw5IEBAIGRlZiBnZXRfcHl0aG9uX2luYyhwbGF0X3NwZWNpZmljPTAsIHByZWZpeD1Ob25lKToKICAgICAgSWYgJ3ByZWZpeCcgaXMgc3VwcGxpZWQsIHVzZSBpdCBpbnN0ZWFkIG9mIHN5cy5iYXNlX3ByZWZpeCBvcgogICAgICBzeXMuYmFzZV9leGVjX3ByZWZpeCAtLSBpLmUuLCBpZ25vcmUgJ3BsYXRfc3BlY2lmaWMnLgogICAgICAiIiIKQEAgLTQ1LDcgKzMyLDcgQEAKICAgICAgICAgIHByZWZpeCA9IHBsYXRfc3BlY2lmaWMgYW5kIEJBU0VfRVhFQ19QUkVGSVggb3IgQkFTRV9QUkVGSVgKICAgICAgaWYgb3MubmFtZSA9PSAicG9zaXgiOgogICAgICAgICAgaWYgcHl0aG9uX2J1aWxkOgotQEAgLTEyNSw2ICsxMjgsMTAgQEAgZGVmIGdldF9weXRob25fbGliKHBsYXRfc3BlY2lmaWM9MCwgc3RhbmRhcmRfbGliPTAsIHByZWZpeD1Ob25lKToKK0BAIC0xMjUsNiArMTI3LDEwIEBAIGRlZiBnZXRfcHl0aG9uX2xpYihwbGF0X3NwZWNpZmljPTAsIHN0YW5kYXJkX2xpYj0wLCBwcmVmaXg9Tm9uZSk6CiAgICAgIElmICdwcmVmaXgnIGlzIHN1cHBsaWVkLCB1c2UgaXQgaW5zdGVhZCBvZiBzeXMuYmFzZV9wcmVmaXggb3IKICAgICAgc3lzLmJhc2VfZXhlY19wcmVmaXggLS0gaS5lLiwgaWdub3JlICdwbGF0X3NwZWNpZmljJy4KICAgICAgIiIiCkBAIC01Niw3ICs0Myw3IEBACiAgICAgIGlmIHByZWZpeCBpcyBOb25lOgogICAgICAgICAgaWYgc3RhbmRhcmRfbGliOgogICAgICAgICAgICAgIHByZWZpeCA9IHBsYXRfc3BlY2lmaWMgYW5kIEJBU0VfRVhFQ19QUkVGSVggb3IgQkFTRV9QUkVGSVgKLUBAIC0xMzMsNyArMTQwLDcgQEAgZGVmIGdldF9weXRob25fbGliKHBsYXRfc3BlY2lmaWM9MCwgc3RhbmRhcmRfbGliPTAsIHByZWZpeD1Ob25lKToKK0BAIC0xMzMsNyArMTM5LDcgQEAgZGVmIGdldF9weXRob25fbGliKHBsYXRfc3BlY2lmaWM9MCwgc3RhbmRhcmRfbGliPTAsIHByZWZpeD1Ob25lKToKICAKICAgICAgaWYgb3MubmFtZSA9PSAicG9zaXgiOgogICAgICAgICAgbGlicHl0aG9uID0gb3MucGF0aC5qb2luKHByZWZpeCwKQEAgLTY1LDI0ICs1Miw2IEBACiAgICAgICAgICBpZiBzdGFuZGFyZF9saWI6CiAgICAgICAgICAgICAgcmV0dXJuIGxpYnB5dGhvbgogICAgICAgICAgZWxzZToKLUBAIC0yMzMsNyArMjQwLDcgQEAgZGVmIGdldF9jb25maWdfaF9maWxlbmFtZSgpOgotICAgICBlbHNlOgotICAgICAgICAgaW5jX2RpciA9IGdldF9weXRob25faW5jKHBsYXRfc3BlY2lmaWM9MSkKLSAKLS0gICAgcmV0dXJuIG9zLnBhdGguam9pbihpbmNfZGlyLCAncHljb25maWcuaCcpCi0rICAgIHJldHVybiBvcy5wYXRoLmpvaW4oaW5jX2RpciwgJ3B5Y29uZmlnLmgnLnJlcGxhY2UoIG9zLmdldGVudigiQlVJTERfU1lTIiksIG9zLmdldGVudigiSE9TVF9TWVMiKSApKQotIAotIAotIGRlZiBnZXRfbWFrZWZpbGVfZmlsZW5hbWUoKToKLUBAIC0yNDIsNyArMjQ5LDcgQEAgZGVmIGdldF9tYWtlZmlsZV9maWxlbmFtZSgpOgotICAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihfc3lzX2hvbWUgb3IgcHJvamVjdF9iYXNlLCAiTWFrZWZpbGUiKQotICAgICBsaWJfZGlyID0gZ2V0X3B5dGhvbl9saWIocGxhdF9zcGVjaWZpYz0wLCBzdGFuZGFyZF9saWI9MSkKLSAgICAgY29uZmlnX2ZpbGUgPSAnY29uZmlnLXt9e30nLmZvcm1hdChnZXRfcHl0aG9uX3ZlcnNpb24oKSwgYnVpbGRfZmxhZ3MpCi0tICAgIHJldHVybiBvcy5wYXRoLmpvaW4obGliX2RpciwgY29uZmlnX2ZpbGUsICdNYWtlZmlsZScpCi0rICAgIHJldHVybiBvcy5wYXRoLmpvaW4obGliX2RpciwgY29uZmlnX2ZpbGUsICdNYWtlZmlsZScpLnJlcGxhY2UoIG9zLmdldGVudigiQlVJTERfU1lTIiksIG9zLmdldGVudigiSE9TVF9TWVMiKSApCi0gCi0gCi0gZGVmIHBhcnNlX2NvbmZpZ19oKGZwLCBnPU5vbmUpOgogLS0gCi0yLjcuMAorMi44LjAucmMzCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvQ1ZFLTIwMTYtNTYzNi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvQ1ZFLTIwMTYtNTYzNi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDQ5NGQyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9DVkUtMjAxNi01NjM2LnBhdGNoCkBAIC0wLDAgKzEsNDQgQEAKKworIyBIRyBjaGFuZ2VzZXQgcGF0Y2gKKyMgVXNlciBCZW5qYW1pbiBQZXRlcnNvbiA8YmVuamFtaW5AcHl0aG9uLm9yZz4KKyMgRGF0ZSAxNDUzMzU3NTA2IDI4ODAwCisjIE5vZGUgSUQgMTBkYWQ2ZGExYjI4ZWE0YWY3OGFkOTUyOWU0NjlmZGJmNGViYmM4ZgorIyBQYXJlbnQgIGEzYWMyY2Q5M2RiOWQ1MzM2ZGZkN2I1YjI3ZWZkZTJjNTY4ZDg3OTQjIFBhcmVudCAgMDFkZGQ2MDhiODVjODU5NTI1MzdkOTVhNDNiYmFiZjRmYjY1NTA1NworbWVyZ2UgMy40ICgjMjYxNzEpCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK0NWRTogQ1ZFLTIwMTYtNTYzNgorCitodHRwczovL2hnLnB5dGhvbi5vcmcvY3B5dGhvbi9yYXctcmV2LzEwZGFkNmRhMWIyOAorU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+CisKK0luZGV4OiBQeXRob24tMy41LjEvTWlzYy9ORVdTCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gUHl0aG9uLTMuNS4xLm9yaWcvTWlzYy9ORVdTCisrKysgUHl0aG9uLTMuNS4xL01pc2MvTkVXUworQEAgLTkxLDYgKzkxLDkgQEAgQ29yZSBhbmQgQnVpbHRpbnMKKyAgIFB5dGhvbi5oIGhlYWRlciB0byBmaXggYSBjb21waWxhdGlvbiBlcnJvciB3aXRoIE9wZW5NUC4gUHlUaHJlYWRTdGF0ZV9HRVQoKQorICAgYmVjb21lcyBhbiBhbGlhcyB0byBQeVRocmVhZFN0YXRlX0dldCgpIHRvIGF2b2lkIEFCSSBpbmNvbXBhdGliaWxpZXMuCisgCisrLSBJc3N1ZSAjMjYxNzE6IEZpeCBwb3NzaWJsZSBpbnRlZ2VyIG92ZXJmbG93IGFuZCBoZWFwIGNvcnJ1cHRpb24gaW4KKysgIHppcGltcG9ydGVyLmdldF9kYXRhKCkuCisrCisgTGlicmFyeQorIC0tLS0tLS0KKyAKK0luZGV4OiBQeXRob24tMy41LjEvTW9kdWxlcy96aXBpbXBvcnQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIFB5dGhvbi0zLjUuMS5vcmlnL01vZHVsZXMvemlwaW1wb3J0LmMKKysrKyBQeXRob24tMy41LjEvTW9kdWxlcy96aXBpbXBvcnQuYworQEAgLTExMTIsNiArMTExMiwxMSBAQCBnZXRfZGF0YShQeU9iamVjdCAqYXJjaGl2ZSwgUHlPYmplY3QgKnRvCisgICAgIH0KKyAgICAgZmlsZV9vZmZzZXQgKz0gbDsgICAgICAgICAgIC8qIFN0YXJ0IG9mIGZpbGUgZGF0YSAqLworIAorKyAgICBpZiAoZGF0YV9zaXplID4gTE9OR19NQVggLSAxKSB7CisrICAgICAgICBmY2xvc2UoZnApOworKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKysgICAgICAgIHJldHVybiBOVUxMOworKyAgICB9CisgICAgIGJ5dGVzX3NpemUgPSBjb21wcmVzcyA9PSAwID8gZGF0YV9zaXplIDogZGF0YV9zaXplICsgMTsKKyAgICAgaWYgKGJ5dGVzX3NpemUgPT0gMCkKKyAgICAgICAgIGJ5dGVzX3NpemUrKzsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvZml4X2Zvcl91c2luZ19kaWZmZXJlbnRfbGliZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9maXhfZm9yX3VzaW5nX2RpZmZlcmVudF9saWJkaXIucGF0Y2gKaW5kZXggY2QxYTk3OC4uMDYxMDU2NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9maXhfZm9yX3VzaW5nX2RpZmZlcmVudF9saWJkaXIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9maXhfZm9yX3VzaW5nX2RpZmZlcmVudF9saWJkaXIucGF0Y2gKQEAgLTQsMTEgKzQsMTEgQEAKIFRoaXMgcGF0Y2ggbWFrZXMgdGhlIG5hdGl2ZSBweXRob24gYmluYXJ5IG1vZHVsZXMgZmluZGFibGUKIGluIHRoZSBpbnN0YWxsIHByb2Nlc3Mgb2YgdGhlIGhvc3QgcHl0aG9uLgogCi1TaWduZWQtT2ZmLUJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KIERhdGU6IDIwMTIvMDMvMTQKIAogVXBkYXRlZCBmb3IgcHl0aG9uIDIuNy4zCi1TaWduZWQtT2ZmLUJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KIERhdGU6IDIwMTIvMDUvMDEKIAogSW5kZXg6IFB5dGhvbi0zLjMuMHJjMi9MaWIvc3lzY29uZmlnLnB5CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbi0zLjMtbXVsdGlsaWIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbi0zLjMtbXVsdGlsaWIucGF0Y2gKaW5kZXggNDRlYzQyNC4uMDU2ZThlNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24tMy4zLW11bHRpbGliLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uLTMuMy1tdWx0aWxpYi5wYXRjaApAQCAtNywxMCArNywxMCBAQAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIFNpZ25lZC1vZmYtYnk6IEFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyby5oZXJuYW5kZXpAbGludXguaW50ZWwuY29tPgogCi1JbmRleDogUHl0aG9uLTMuNS4wL0luY2x1ZGUvcHl0aG9ucnVuLmgKK0luZGV4OiBQeXRob24tMy41LjIvSW5jbHVkZS9weXRob25ydW4uaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0zLjUuMC5vcmlnL0luY2x1ZGUvcHl0aG9ucnVuLmgKLSsrKyBQeXRob24tMy41LjAvSW5jbHVkZS9weXRob25ydW4uaAorLS0tIFB5dGhvbi0zLjUuMi5vcmlnL0luY2x1ZGUvcHl0aG9ucnVuLmgKKysrKyBQeXRob24tMy41LjIvSW5jbHVkZS9weXRob25ydW4uaAogQEAgLTIzLDYgKzIzLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgewogIH0gUHlDb21waWxlckZsYWdzOwogICNlbmRpZgpAQCAtMjEsMTAgKzIxLDEwIEBACiAgI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogIFB5QVBJX0ZVTkMoaW50KSBQeVJ1bl9TaW1wbGVTdHJpbmdGbGFncyhjb25zdCBjaGFyICosIFB5Q29tcGlsZXJGbGFncyAqKTsKICBQeUFQSV9GVU5DKGludCkgUHlSdW5fQW55RmlsZUZsYWdzKEZJTEUgKiwgY29uc3QgY2hhciAqLCBQeUNvbXBpbGVyRmxhZ3MgKik7Ci1JbmRleDogUHl0aG9uLTMuNS4wL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CitJbmRleDogUHl0aG9uLTMuNS4yL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTMuNS4wLm9yaWcvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKLSsrKyBQeXRob24tMy41LjAvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKKy0tLSBQeXRob24tMy41LjIub3JpZy9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQorKysrIFB5dGhvbi0zLjUuMi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQogQEAgLTE5LDYgKzE5LDggQEAgZnJvbSBzaXRlIGltcG9ydCBVU0VSX0JBU0UKICBmcm9tIHNpdGUgaW1wb3J0IFVTRVJfU0lURQogIEhBU19VU0VSX1NJVEUgPSBUcnVlCkBAIC00MywyMyArNDMsMjMgQEAKICAgICAgICAgICdoZWFkZXJzJzogJyRiYXNlL2luY2x1ZGUvcHl0aG9uJHB5X3ZlcnNpb25fc2hvcnQkYWJpZmxhZ3MvJGRpc3RfbmFtZScsCiAgICAgICAgICAnc2NyaXB0cyc6ICckYmFzZS9iaW4nLAogICAgICAgICAgJ2RhdGEnICAgOiAnJGJhc2UnLAotSW5kZXg6IFB5dGhvbi0zLjUuMC9MaWIvcHlkb2MucHkKK0luZGV4OiBQeXRob24tMy41LjIvTGliL3B5ZG9jLnB5CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTMuNS4wLm9yaWcvTGliL3B5ZG9jLnB5Ci0rKysgUHl0aG9uLTMuNS4wL0xpYi9weWRvYy5weQotQEAgLTM5Myw3ICszOTMsNyBAQCBjbGFzcyBEb2M6CistLS0gUHl0aG9uLTMuNS4yLm9yaWcvTGliL3B5ZG9jLnB5CisrKysgUHl0aG9uLTMuNS4yL0xpYi9weWRvYy5weQorQEAgLTM4NCw3ICszODQsNyBAQCBjbGFzcyBEb2M6CisgICAgIGRvY21vZHVsZSA9IGRvY2NsYXNzID0gZG9jcm91dGluZSA9IGRvY290aGVyID0gZG9jcHJvcGVydHkgPSBkb2NkYXRhID0gZmFpbAogIAotICAgICAgICAgZG9jbG9jID0gb3MuZW52aXJvbi5nZXQoIlBZVEhPTkRPQ1MiLCBzZWxmLlBZVEhPTkRPQ1MpCisgICAgIGRlZiBnZXRkb2Nsb2Moc2VsZiwgb2JqZWN0LAorLSAgICAgICAgICAgICAgICAgIGJhc2VkaXI9b3MucGF0aC5qb2luKHN5cy5iYXNlX2V4ZWNfcHJlZml4LCAibGliIiwKKysgICAgICAgICAgICAgICAgICBiYXNlZGlyPW9zLnBhdGguam9pbihzeXMuYmFzZV9leGVjX3ByZWZpeCwgc3lzLmxpYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uJWQuJWQiICUgIHN5cy52ZXJzaW9uX2luZm9bOjJdKSk6CisgICAgICAgICAiIiJSZXR1cm4gdGhlIGxvY2F0aW9uIG9mIG1vZHVsZSBkb2NzIG9yIE5vbmUiIiIKICAKLS0gICAgICAgIGJhc2VkaXIgPSBvcy5wYXRoLmpvaW4oc3lzLmJhc2VfZXhlY19wcmVmaXgsICJsaWIiLAotKyAgICAgICAgYmFzZWRpciA9IG9zLnBhdGguam9pbihzeXMuYmFzZV9leGVjX3ByZWZpeCwgc3lzLmxpYiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiVkLiVkIiAlICBzeXMudmVyc2lvbl9pbmZvWzoyXSkKLSAgICAgICAgIGlmIChpc2luc3RhbmNlKG9iamVjdCwgdHlwZShvcykpIGFuZAotICAgICAgICAgICAgIChvYmplY3QuX19uYW1lX18gaW4gKCdlcnJubycsICdleGNlcHRpb25zJywgJ2djJywgJ2ltcCcsCi1JbmRleDogUHl0aG9uLTMuNS4wL0xpYi90cmFjZS5weQorSW5kZXg6IFB5dGhvbi0zLjUuMi9MaWIvdHJhY2UucHkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMy41LjAub3JpZy9MaWIvdHJhY2UucHkKLSsrKyBQeXRob24tMy41LjAvTGliL3RyYWNlLnB5CistLS0gUHl0aG9uLTMuNS4yLm9yaWcvTGliL3RyYWNlLnB5CisrKysgUHl0aG9uLTMuNS4yL0xpYi90cmFjZS5weQogQEAgLTc0OSwxMCArNzQ5LDEwIEBAIGRlZiBtYWluKGFyZ3Y9Tm9uZSk6CiAgICAgICAgICAgICAgICAgICMgc2hvdWxkIEkgYWxzbyBjYWxsIGV4cGFuZHVzZXI/IChhZnRlciBhbGwsIGNvdWxkIHVzZSAkSE9NRSkKICAKQEAgLTczLDExICs3MywxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIiArIHN5cy52ZXJzaW9uWzozXSkpCiAgICAgICAgICAgICAgICAgIHMgPSBvcy5wYXRoLm5vcm1wYXRoKHMpCiAgICAgICAgICAgICAgICAgIGlnbm9yZV9kaXJzLmFwcGVuZChzKQotSW5kZXg6IFB5dGhvbi0zLjUuMC9NYWtlZmlsZS5wcmUuaW4KK0luZGV4OiBQeXRob24tMy41LjIvTWFrZWZpbGUucHJlLmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTMuNS4wLm9yaWcvTWFrZWZpbGUucHJlLmluCi0rKysgUHl0aG9uLTMuNS4wL01ha2VmaWxlLnByZS5pbgotQEAgLTEwMSw2ICsxMDEsOCBAQCBQWV9DT1JFX0NGTEFHUz0JJChQWV9DRkxBR1MpICQoUFlfQ0ZMQUdTCistLS0gUHl0aG9uLTMuNS4yLm9yaWcvTWFrZWZpbGUucHJlLmluCisrKysgUHl0aG9uLTMuNS4yL01ha2VmaWxlLnByZS5pbgorQEAgLTEwNiw2ICsxMDYsOCBAQCBQWV9DT1JFX0NGTEFHUz0JJChQWV9DRkxBR1MpICQoUFlfQ0ZMQUdTCiAgCiAgIyBNYWNoaW5lLWRlcGVuZGVudCBzdWJkaXJlY3RvcmllcwogIE1BQ0hERVA9CUBNQUNIREVQQApAQCAtODYsNyArODYsNyBAQAogIAogICMgTXVsdGlhcmNoIGRpcmVjdG9yeSAobWF5IGJlIGVtcHR5KQogIE1VTFRJQVJDSD0JQE1VTFRJQVJDSEAKLUBAIC0xMjAsNyArMTIyLDcgQEAgTElCRElSPQkJQGxpYmRpckAKK0BAIC0xMjUsNyArMTI3LDcgQEAgTElCRElSPQkJQGxpYmRpckAKICBNQU5ESVI9CQlAbWFuZGlyQAogIElOQ0xVREVESVI9CUBpbmNsdWRlZGlyQAogIENPTkZJTkNMVURFRElSPQkkKGV4ZWNfcHJlZml4KS9pbmNsdWRlCkBAIC05NSw3ICs5NSw3IEBACiAgQUJJRkxBR1M9CUBBQklGTEFHU0AKICAKICAjIERldGFpbGVkIGRlc3RpbmF0aW9uIGRpcmVjdG9yaWVzCi1AQCAtNzI5LDYgKzczMSw3IEBAIE1vZHVsZXMvZ2V0cGF0aC5vOiAkKHNyY2RpcikvTW9kdWxlcy9nZXQKK0BAIC03NTUsNiArNzU3LDcgQEAgTW9kdWxlcy9nZXRwYXRoLm86ICQoc3JjZGlyKS9Nb2R1bGVzL2dldAogIAkJLURFWEVDX1BSRUZJWD0nIiQoZXhlY19wcmVmaXgpIicgXAogIAkJLURWRVJTSU9OPSciJChWRVJTSU9OKSInIFwKICAJCS1EVlBBVEg9JyIkKFZQQVRIKSInIFwKQEAgLTEwMyw3ICsxMDMsNyBAQAogIAkJLW8gJEAgJChzcmNkaXIpL01vZHVsZXMvZ2V0cGF0aC5jCiAgCiAgUHJvZ3JhbXMvcHl0aG9uLm86ICQoc3JjZGlyKS9Qcm9ncmFtcy9weXRob24uYwotQEAgLTc5OCw3ICs4MDEsNyBAQCAkKE9QQ09ERV9IKTogJChzcmNkaXIpL0xpYi9vcGNvZGUucHkgJChPCitAQCAtODM1LDcgKzgzOCw3IEBAICQoT1BDT0RFX0gpOiAkKHNyY2RpcikvTGliL29wY29kZS5weSAkKE8KICBQeXRob24vY29tcGlsZS5vIFB5dGhvbi9zeW10YWJsZS5vIFB5dGhvbi9hc3QubzogJChHUkFNTUFSX0gpICQoQVNUX0gpCiAgCiAgUHl0aG9uL2dldHBsYXRmb3JtLm86ICQoc3JjZGlyKS9QeXRob24vZ2V0cGxhdGZvcm0uYwpAQCAtMTEyLDI1ICsxMTIsMjUgQEAKICAKICBQeXRob24vaW1wb3J0ZGwubzogJChzcmNkaXIpL1B5dGhvbi9pbXBvcnRkbC5jCiAgCQkkKENDKSAtYyAkKFBZX0NPUkVfQ0ZMQUdTKSAtSSQoRExJTkNMRElSKSAtbyAkQCAkKHNyY2RpcikvUHl0aG9uL2ltcG9ydGRsLmMKLUluZGV4OiBQeXRob24tMy41LjAvTW9kdWxlcy9nZXRwYXRoLmMKK0luZGV4OiBQeXRob24tMy41LjIvTW9kdWxlcy9nZXRwYXRoLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMy41LjAub3JpZy9Nb2R1bGVzL2dldHBhdGguYwotKysrIFB5dGhvbi0zLjUuMC9Nb2R1bGVzL2dldHBhdGguYwotQEAgLTExNyw5ICsxMTcsMTEgQEAKLSAjZGVmaW5lIEVYRUNfUFJFRklYIFBSRUZJWAorLS0tIFB5dGhvbi0zLjUuMi5vcmlnL01vZHVsZXMvZ2V0cGF0aC5jCisrKysgUHl0aG9uLTMuNS4yL01vZHVsZXMvZ2V0cGF0aC5jCitAQCAtMTA1LDYgKzEwNSwxMyBAQAorICNlcnJvciAiUFJFRklYLCBFWEVDX1BSRUZJWCwgVkVSU0lPTiwgYW5kIFZQQVRIIG11c3QgYmUgY29uc3RhbnQgZGVmaW5lZCIKICAjZW5kaWYKICAKICsjZGVmaW5lIExJQl9QWVRIT04gTElCICIvcHl0aG9uIiBWRVJTSU9OCiArCi0gI2lmbmRlZiBQWVRIT05QQVRICi0tI2RlZmluZSBQWVRIT05QQVRIIFBSRUZJWCAiL2xpYi9weXRob24iIFZFUlNJT04gIjoiIFwKLS0gICAgICAgICAgICAgIEVYRUNfUFJFRklYICIvbGliL3B5dGhvbiIgVkVSU0lPTiAiL2xpYi1keW5sb2FkIgorKyNpZm5kZWYgUFlUSE9OUEFUSAogKyNkZWZpbmUgUFlUSE9OUEFUSCBQUkVGSVggIi8iIExJQl9QWVRIT04gIjoiIFwKLSsgICAgICAgICAgICAgIEVYRUNfUFJFRklYICIvIiBMSUJfUFlUSE9OICIvbGliLWR5bmxvYWQiCi0gI2VuZGlmCi0gCisrICAgICAgICBFWEVDX1BSRUZJWCAiLyIgTElCX1BZVEhPTiAiL2xpYi1keW5sb2FkIgorKyNlbmRpZgorKwogICNpZm5kZWYgTEFORE1BUksKLUBAIC0xMzAsNiArMTMyLDcgQEAgc3RhdGljIHdjaGFyX3QgcHJlZml4W01BWFBBVEhMRU4rMV07CisgI2RlZmluZSBMQU5ETUFSSyBMIm9zLnB5IgorICNlbmRpZgorQEAgLTExMyw2ICsxMjAsNyBAQCBzdGF0aWMgd2NoYXJfdCBwcmVmaXhbTUFYUEFUSExFTisxXTsKICBzdGF0aWMgd2NoYXJfdCBleGVjX3ByZWZpeFtNQVhQQVRITEVOKzFdOwogIHN0YXRpYyB3Y2hhcl90IHByb2dwYXRoW01BWFBBVEhMRU4rMV07CiAgc3RhdGljIHdjaGFyX3QgKm1vZHVsZV9zZWFyY2hfcGF0aCA9IE5VTEw7CkBAIC0xMzgsMTAgKzEzOCwxMCBAQAogIAogIC8qIEdldCBmaWxlIHN0YXR1cy4gRW5jb2RlIHRoZSBwYXRoIHRvIHRoZSBsb2NhbGUgZW5jb2RpbmcuICovCiAgCi1JbmRleDogUHl0aG9uLTMuNS4wL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCitJbmRleDogUHl0aG9uLTMuNS4yL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTMuNS4wLm9yaWcvUHl0aG9uL2dldHBsYXRmb3JtLmMKLSsrKyBQeXRob24tMy41LjAvUHl0aG9uL2dldHBsYXRmb3JtLmMKKy0tLSBQeXRob24tMy41LjIub3JpZy9QeXRob24vZ2V0cGxhdGZvcm0uYworKysrIFB5dGhvbi0zLjUuMi9QeXRob24vZ2V0cGxhdGZvcm0uYwogQEAgLTEwLDMgKzEwLDIzIEBAIFB5X0dldFBsYXRmb3JtKHZvaWQpCiAgewogIAlyZXR1cm4gUExBVEZPUk07CkBAIC0xNjYsMTEgKzE2NiwxMSBAQAogK3sKICsJcmV0dXJuIExJQjsKICt9Ci1JbmRleDogUHl0aG9uLTMuNS4wL1B5dGhvbi9zeXNtb2R1bGUuYworSW5kZXg6IFB5dGhvbi0zLjUuMi9QeXRob24vc3lzbW9kdWxlLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMy41LjAub3JpZy9QeXRob24vc3lzbW9kdWxlLmMKLSsrKyBQeXRob24tMy41LjAvUHl0aG9uL3N5c21vZHVsZS5jCi1AQCAtMTc2Nyw2ICsxNzY3LDEwIEBAIF9QeVN5c19Jbml0KHZvaWQpCistLS0gUHl0aG9uLTMuNS4yLm9yaWcvUHl0aG9uL3N5c21vZHVsZS5jCisrKysgUHl0aG9uLTMuNS4yL1B5dGhvbi9zeXNtb2R1bGUuYworQEAgLTE3OTAsNiArMTc5MCwxMCBAQCBfUHlTeXNfSW5pdCh2b2lkKQogICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tU3RyaW5nKFB5X0dldENvcHlyaWdodCgpKSk7CiAgICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoInBsYXRmb3JtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRnJvbVN0cmluZyhQeV9HZXRQbGF0Zm9ybSgpKSk7CkBAIC0xODEsMTEgKzE4MSwxMSBAQAogICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJleGVjdXRhYmxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9HZXRQcm9ncmFtRnVsbFBhdGgoKSwgLTEpKTsKLUluZGV4OiBQeXRob24tMy41LjAvc2V0dXAucHkKK0luZGV4OiBQeXRob24tMy41LjIvc2V0dXAucHkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMy41LjAub3JpZy9zZXR1cC5weQotKysrIFB5dGhvbi0zLjUuMC9zZXR1cC5weQotQEAgLTQ3Miw3ICs0NzIsNyBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CistLS0gUHl0aG9uLTMuNS4yLm9yaWcvc2V0dXAucHkKKysrKyBQeXRob24tMy41LjIvc2V0dXAucHkKK0BAIC00OTIsNyArNDkyLDcgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgogICAgICAgICAgIyBkaXJlY3RvcmllcyAoaS5lLiAnLicgYW5kICdJbmNsdWRlJykgbXVzdCBiZSBmaXJzdC4gIFNlZSBpc3N1ZQogICAgICAgICAgIyAxMDUyMC4KICAgICAgICAgIGlmIG5vdCBjcm9zc19jb21waWxpbmc6CkBAIC0xOTQsNyArMTk0LDcgQEAKICAgICAgICAgICAgICBhZGRfZGlyX3RvX2xpc3Qoc2VsZi5jb21waWxlci5pbmNsdWRlX2RpcnMsICcvdXNyL2xvY2FsL2luY2x1ZGUnKQogICAgICAgICAgIyBvbmx5IGNoYW5nZSB0aGlzIGZvciBjcm9zcyBidWlsZHMgZm9yIDMuMywgaXNzdWVzIG9uIE1hZ2VpYQogICAgICAgICAgaWYgY3Jvc3NfY29tcGlsaW5nOgotQEAgLTUzMCw4ICs1MzAsNyBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CitAQCAtNTUwLDggKzU1MCw3IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKICAgICAgICAgICMgYmUgYXNzdW1lZCB0aGF0IG5vIGFkZGl0aW9uYWwgLUksLUwgZGlyZWN0aXZlcyBhcmUgbmVlZGVkLgogICAgICAgICAgaWYgbm90IGNyb3NzX2NvbXBpbGluZzoKICAgICAgICAgICAgICBsaWJfZGlycyA9IHNlbGYuY29tcGlsZXIubGlicmFyeV9kaXJzICsgWwpAQCAtMjA0LDcgKzIwNCw3IEBACiAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICBpbmNfZGlycyA9IHNlbGYuY29tcGlsZXIuaW5jbHVkZV9kaXJzICsgWycvdXNyL2luY2x1ZGUnXQogICAgICAgICAgZWxzZToKLUBAIC03MTYsMTEgKzcxNSwxMSBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CitAQCAtNzQzLDExICs3NDIsMTEgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgogICAgICAgICAgICAgIGVsaWYgY3Vyc2VzX2xpYnJhcnk6CiAgICAgICAgICAgICAgICAgIHJlYWRsaW5lX2xpYnMuYXBwZW5kKGN1cnNlc19saWJyYXJ5KQogICAgICAgICAgICAgIGVsaWYgc2VsZi5jb21waWxlci5maW5kX2xpYnJhcnlfZmlsZShsaWJfZGlycyArCkBAIC0yMTgsMTAgKzIxOCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfbGlua19hcmdzPXJlYWRsaW5lX2V4dHJhX2xpbmtfYXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcz1yZWFkbGluZV9saWJzKSApCiAgICAgICAgICBlbHNlOgotSW5kZXg6IFB5dGhvbi0zLjUuMC9MaWIvc3lzY29uZmlnLnB5CitJbmRleDogUHl0aG9uLTMuNS4yL0xpYi9zeXNjb25maWcucHkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMy41LjAub3JpZy9MaWIvc3lzY29uZmlnLnB5Ci0rKysgUHl0aG9uLTMuNS4wL0xpYi9zeXNjb25maWcucHkKKy0tLSBQeXRob24tMy41LjIub3JpZy9MaWIvc3lzY29uZmlnLnB5CisrKysgUHl0aG9uLTMuNS4yL0xpYi9zeXNjb25maWcucHkKIEBAIC0yMCwxMCArMjAsMTAgQEAgX19hbGxfXyA9IFsKICAKICBfSU5TVEFMTF9TQ0hFTUVTID0gewpAQCAtMjY0LDExICsyNjQsMTEgQEAKICAgICAgICAgICdpbmNsdWRlJzogJ3t1c2VyYmFzZX0vaW5jbHVkZS9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAogICAgICAgICAgJ3NjcmlwdHMnOiAne3VzZXJiYXNlfS9iaW4nLAogICAgICAgICAgJ2RhdGEnOiAne3VzZXJiYXNlfScsCi1JbmRleDogUHl0aG9uLTMuNS4wL2NvbmZpZ3VyZS5hYworSW5kZXg6IFB5dGhvbi0zLjUuMi9jb25maWd1cmUuYWMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMy41LjAub3JpZy9jb25maWd1cmUuYWMKLSsrKyBQeXRob24tMy41LjAvY29uZmlndXJlLmFjCi1AQCAtODU4LDYgKzg1OCw0MSBAQCBQTEFURElSPXBsYXQtJE1BQ0hERVAKKy0tLSBQeXRob24tMy41LjIub3JpZy9jb25maWd1cmUuYWMKKysrKyBQeXRob24tMy41LjIvY29uZmlndXJlLmFjCitAQCAtODc2LDYgKzg3Niw0MSBAQCBQTEFURElSPXBsYXQtJE1BQ0hERVAKICBBQ19TVUJTVChQTEFURElSKQogIEFDX1NVQlNUKFBMQVRGT1JNX1RSSVBMRVQpCiAgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbjMtZml4LUNWRS0yMDE2LTEwMDAxMTAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbjMtZml4LUNWRS0yMDE2LTEwMDAxMTAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWIxYjcyMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uMy1maXgtQ1ZFLTIwMTYtMTAwMDExMC5wYXRjaApAQCAtMCwwICsxLDE0OCBAQAorRnJvbSBhYWIzZThjNDMyYjkwNTA4YWMxNDc1NTEyOGY1YTY4N2JlMmZkZjQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWluZ2xpIFl1IDxNaW5nbGkuWXVAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjIgU2VwIDIwMTYgMTY6Mzk6NDkgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gcHl0aG9uMzogZml4IENWRS0yMDE2LTEwMDAxMTAKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworSWdub3JlIHRoZSBIVFRQX1BST1hZIHZhcmlhYmxlIHdoZW4gUkVRVUVTVF9NRVRIT0QgZW52aXJvbm1lbnQgaXMgc2V0LCB3aGljaAoraW5kaWNhdGVzIHRoYXQgdGhlIHNjcmlwdCBpcyBpbiBDR0kgbW9kZS4KKworSXNzdWUgIzI3NTY4IFJlcG9ydGVkIGFuZCBwYXRjaCBjb250cmlidXRlZCBieSBSw6ltaSBSYW1waW4uIFsjMjc1NjhdCisKK0JhY2twb3J0IHBhdGNoIGZyb20gaHR0cHM6Ly9oZy5weXRob24ub3JnL2NweXRob24vcmV2L2EwYWM1MmVkOGY3OQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitDVkU6IENWRS0yMDE2LTEwMDAxMTAKK1NpZ25lZC1vZmYtYnk6IE1pbmdsaSBZdSA8TWluZ2xpLll1QHdpbmRyaXZlci5jb20+CistLS0KKyBEb2MvaG93dG8vdXJsbGliMi5yc3QgICAgICAgICAgfCAgNSArKysrKworIERvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdCB8IDE3ICsrKysrKysrKysrKysrKystCisgTGliL3Rlc3QvdGVzdF91cmxsaWIucHkgICAgICAgIHwgMTQgKysrKysrKysrKysrKy0KKyBMaWIvdXJsbGliL3JlcXVlc3QucHkgICAgICAgICAgfCAgNiArKysrKysKKyBNaXNjL05FV1MgICAgICAgICAgICAgICAgICAgICAgfCAgNCArKysrCisgNSBmaWxlcyBjaGFuZ2VkLCA0NCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL3VybGxpYjIucnN0IGIvRG9jL2hvd3RvL3VybGxpYjIucnN0CitpbmRleCAyNGE0MTU2Li5kMmM3OTkxIDEwMDY0NAorLS0tIGEvRG9jL2hvd3RvL3VybGxpYjIucnN0CisrKysgYi9Eb2MvaG93dG8vdXJsbGliMi5yc3QKK0BAIC01MzgsNiArNTM4LDExIEBAIHNldHRpbmcgdXAgYSBgQmFzaWMgQXV0aGVudGljYXRpb25gXyBoYW5kbGVyOiA6OgorICAgICB0aHJvdWdoIGEgcHJveHkuICBIb3dldmVyLCB0aGlzIGNhbiBiZSBlbmFibGVkIGJ5IGV4dGVuZGluZyB1cmxsaWIucmVxdWVzdCBhcworICAgICBzaG93biBpbiB0aGUgcmVjaXBlIFsjXV8uCisgCisrLi4gbm90ZTo6CisrCisrICAgIGBgSFRUUF9QUk9YWWBgIHdpbGwgYmUgaWdub3JlZCBpZiBhIHZhcmlhYmxlIGBgUkVRVUVTVF9NRVRIT0RgYCBpcyBzZXQ7IHNlZQorKyAgICB0aGUgZG9jdW1lbnRhdGlvbiBvbiA6ZnVuYzpgfnVybGxpYi5yZXF1ZXN0LmdldHByb3hpZXNgLgorKworIAorIFNvY2tldHMgYW5kIExheWVycworID09PT09PT09PT09PT09PT09PQorZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdCBiL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdAoraW5kZXggMTMzODkwNi4uMTI5MWFlYiAxMDA2NDQKKy0tLSBhL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdAorKysrIGIvRG9jL2xpYnJhcnkvdXJsbGliLnJlcXVlc3QucnN0CitAQCAtMTczLDYgKzE3MywxNiBAQCBUaGUgOm1vZDpgdXJsbGliLnJlcXVlc3RgIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgorICAgIElmIGJvdGggbG93ZXJjYXNlIGFuZCB1cHBlcmNhc2UgZW52aXJvbm1lbnQgdmFyaWFibGVzIGV4aXN0IChhbmQgZGlzYWdyZWUpLAorICAgIGxvd2VyY2FzZSBpcyBwcmVmZXJyZWQuCisgCisrICAgIC4uIG5vdGU6OgorKworKyAgICAgICBJZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgYGBSRVFVRVNUX01FVEhPRGBgIGlzIHNldCwgd2hpY2ggdXN1YWxseQorKyAgICAgICBpbmRpY2F0ZXMgeW91ciBzY3JpcHQgaXMgcnVubmluZyBpbiBhIENHSSBlbnZpcm9ubWVudCwgdGhlIGVudmlyb25tZW50CisrICAgICAgIHZhcmlhYmxlIGBgSFRUUF9QUk9YWWBgICh1cHBlcmNhc2UgYGBfUFJPWFlgYCkgd2lsbCBiZSBpZ25vcmVkLiBUaGlzIGlzCisrICAgICAgIGJlY2F1c2UgdGhhdCB2YXJpYWJsZSBjYW4gYmUgaW5qZWN0ZWQgYnkgYSBjbGllbnQgdXNpbmcgdGhlICJQcm94eToiIEhUVFAKKysgICAgICAgaGVhZGVyLiBJZiB5b3UgbmVlZCB0byB1c2UgYW4gSFRUUCBwcm94eSBpbiBhIENHSSBlbnZpcm9ubWVudCwgZWl0aGVyIHVzZQorKyAgICAgICBgYFByb3h5SGFuZGxlcmBgIGV4cGxpY2l0bHksIG9yIG1ha2Ugc3VyZSB0aGUgdmFyaWFibGUgbmFtZSBpcyBpbgorKyAgICAgICBsb3dlcmNhc2UgKG9yIGF0IGxlYXN0IHRoZSBgYF9wcm94eWBgIHN1ZmZpeCkuCisrCisgCisgVGhlIGZvbGxvd2luZyBjbGFzc2VzIGFyZSBwcm92aWRlZDoKKyAKK0BAIC0yODAsNiArMjkwLDExIEBAIFRoZSBmb2xsb3dpbmcgY2xhc3NlcyBhcmUgcHJvdmlkZWQ6CisgICAgbGlzdCBvZiBob3N0bmFtZSBzdWZmaXhlcywgb3B0aW9uYWxseSB3aXRoIGBgOnBvcnRgYCBhcHBlbmRlZCwgZm9yIGV4YW1wbGUKKyAgICBgYGNlcm4uY2gsbmNzYS51aXVjLmVkdSxzb21lLmhvc3Q6ODA4MGBgLgorIAorKyAgICAuLiBub3RlOjoKKysKKysgICAgICAgYGBIVFRQX1BST1hZYGAgd2lsbCBiZSBpZ25vcmVkIGlmIGEgdmFyaWFibGUgYGBSRVFVRVNUX01FVEhPRGBgIGlzIHNldDsKKysgICAgICAgc2VlIHRoZSBkb2N1bWVudGF0aW9uIG9uIDpmdW5jOmB+dXJsbGliLnJlcXVlc3QuZ2V0cHJveGllc2AuCisrCisgCisgLi4gY2xhc3M6OiBIVFRQUGFzc3dvcmRNZ3IoKQorIAorQEAgLTExMzgsNyArMTE1Myw3IEBAIHRoZSByZXR1cm5lZCBieXRlcyBvYmplY3QgdG8gc3RyaW5nIG9uY2UgaXQgZGV0ZXJtaW5lcyBvciBndWVzc2VzCisgdGhlIGFwcHJvcHJpYXRlIGVuY29kaW5nLgorIAorIFRoZSBmb2xsb3dpbmcgVzNDIGRvY3VtZW50LCBodHRwczovL3d3dy53My5vcmcvSW50ZXJuYXRpb25hbC9PLWNoYXJzZXRcICwgbGlzdHMKKy10aGUgdmFyaW91cyB3YXlzIGluIHdoaWNoIGEgKFgpSFRNTCBvciBhIFhNTCBkb2N1bWVudCBjb3VsZCBoYXZlIHNwZWNpZmllZCBpdHMKKyt0aGUgdmFyaW91cyB3YXlzIGluIHdoaWNoIGFuIChYKUhUTUwgb3IgYW4gWE1MIGRvY3VtZW50IGNvdWxkIGhhdmUgc3BlY2lmaWVkIGl0cworIGVuY29kaW5nIGluZm9ybWF0aW9uLgorIAorIEFzIHRoZSBweXRob24ub3JnIHdlYnNpdGUgdXNlcyAqdXRmLTgqIGVuY29kaW5nIGFzIHNwZWNpZmllZCBpbiBpdHMgbWV0YSB0YWcsIHdlCitkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91cmxsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3VybGxpYi5weQoraW5kZXggNWQwNWY4ZC4uMjQ3NTk4YSAxMDA2NDQKKy0tLSBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliLnB5CisrKysgYi9MaWIvdGVzdC90ZXN0X3VybGxpYi5weQorQEAgLTEsNCArMSw0IEBACistIiIiUmVncmVzc3Npb24gdGVzdHMgZm9yIHdoYXQgd2FzIGluIFB5dGhvbiAyJ3MgInVybGxpYiIgbW9kdWxlIiIiCisrIiIiUmVncmVzc2lvbiB0ZXN0cyBmb3Igd2hhdCB3YXMgaW4gUHl0aG9uIDIncyAidXJsbGliIiBtb2R1bGUiIiIKKyAKKyBpbXBvcnQgdXJsbGliLnBhcnNlCisgaW1wb3J0IHVybGxpYi5yZXF1ZXN0CitAQCAtMjMyLDYgKzIzMiwxOCBAQCBjbGFzcyBQcm94eVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh1cmxsaWIucmVxdWVzdC5wcm94eV9ieXBhc3NfZW52aXJvbm1lbnQoJ2Fub3RoZXJkb21haW4uY29tOjg4ODgnKSkKKyAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh1cmxsaWIucmVxdWVzdC5wcm94eV9ieXBhc3NfZW52aXJvbm1lbnQoJ25ld2RvbWFpbi5jb206MTIzNCcpKQorIAorKyAgICBkZWYgdGVzdF9wcm94eV9jZ2lfaWdub3JlKHNlbGYpOgorKyAgICAgICAgdHJ5OgorKyAgICAgICAgICAgIHNlbGYuZW52LnNldCgnSFRUUF9QUk9YWScsICdodHRwOi8vc29tZXdoZXJlOjMxMjgnKQorKyAgICAgICAgICAgIHByb3hpZXMgPSB1cmxsaWIucmVxdWVzdC5nZXRwcm94aWVzX2Vudmlyb25tZW50KCkKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdodHRwOi8vc29tZXdoZXJlOjMxMjgnLCBwcm94aWVzWydodHRwJ10pCisrICAgICAgICAgICAgc2VsZi5lbnYuc2V0KCdSRVFVRVNUX01FVEhPRCcsICdHRVQnKQorKyAgICAgICAgICAgIHByb3hpZXMgPSB1cmxsaWIucmVxdWVzdC5nZXRwcm94aWVzX2Vudmlyb25tZW50KCkKKysgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdodHRwJywgcHJveGllcykKKysgICAgICAgIGZpbmFsbHk6CisrICAgICAgICAgICAgc2VsZi5lbnYudW5zZXQoJ1JFUVVFU1RfTUVUSE9EJykKKysgICAgICAgICAgICBzZWxmLmVudi51bnNldCgnSFRUUF9QUk9YWScpCisrCisgICAgIGRlZiB0ZXN0X3Byb3h5X2J5cGFzc19lbnZpcm9ubWVudF9ob3N0X21hdGNoKHNlbGYpOgorICAgICAgICAgYnlwYXNzID0gdXJsbGliLnJlcXVlc3QucHJveHlfYnlwYXNzX2Vudmlyb25tZW50CisgICAgICAgICBzZWxmLmVudi5zZXQoJ05PX1BST1hZJywKK2RpZmYgLS1naXQgYS9MaWIvdXJsbGliL3JlcXVlc3QucHkgYi9MaWIvdXJsbGliL3JlcXVlc3QucHkKK2luZGV4IDE3MzFmZTMuLjNiZTMyN2QgMTAwNjQ0CistLS0gYS9MaWIvdXJsbGliL3JlcXVlc3QucHkKKysrKyBiL0xpYi91cmxsaWIvcmVxdWVzdC5weQorQEAgLTI0MTIsNiArMjQxMiwxMiBAQCBkZWYgZ2V0cHJveGllc19lbnZpcm9ubWVudCgpOgorICAgICAgICAgbmFtZSA9IG5hbWUubG93ZXIoKQorICAgICAgICAgaWYgdmFsdWUgYW5kIG5hbWVbLTY6XSA9PSAnX3Byb3h5JzoKKyAgICAgICAgICAgICBwcm94aWVzW25hbWVbOi02XV0gPSB2YWx1ZQorKyAgICAjIENWRS0yMDE2LTEwMDAxMTAgLSBJZiB3ZSBhcmUgcnVubmluZyBhcyBDR0kgc2NyaXB0LCBmb3JnZXQgSFRUUF9QUk9YWQorKyAgICAjIChub24tYWxsLWxvd2VyY2FzZSkgYXMgaXQgbWF5IGJlIHNldCBmcm9tIHRoZSB3ZWIgc2VydmVyIGJ5IGEgIlByb3h5OiIKKysgICAgIyBoZWFkZXIgZnJvbSB0aGUgY2xpZW50CisrICAgICMgSWYgInByb3h5IiBpcyBsb3dlcmNhc2UsIGl0IHdpbGwgc3RpbGwgYmUgdXNlZCB0aGFua3MgdG8gdGhlIG5leHQgYmxvY2sKKysgICAgaWYgJ1JFUVVFU1RfTUVUSE9EJyBpbiBvcy5lbnZpcm9uOgorKyAgICAgICAgcHJveGllcy5wb3AoJ2h0dHAnLCBOb25lKQorICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gb3MuZW52aXJvbi5pdGVtcygpOgorICAgICAgICAgaWYgbmFtZVstNjpdID09ICdfcHJveHknOgorICAgICAgICAgICAgIG5hbWUgPSBuYW1lLmxvd2VyKCkKK2RpZmYgLS1naXQgYS9NaXNjL05FV1MgYi9NaXNjL05FV1MKK2luZGV4IDRhZDI1NTEuLjJmY2M5NWIgMTAwNjQ0CistLS0gYS9NaXNjL05FV1MKKysrKyBiL01pc2MvTkVXUworQEAgLTMyOSw2ICszMjksMTAgQEAgTGlicmFyeQorIC0gSXNzdWUgIzI2NjQ0OiBSYWlzZSBWYWx1ZUVycm9yIHJhdGhlciB0aGFuIFN5c3RlbUVycm9yIHdoZW4gYSBuZWdhdGl2ZQorICAgbGVuZ3RoIGlzIHBhc3NlZCB0byBTU0xTb2NrZXQucmVjdigpIG9yIHJlYWQoKS4KKyAKKystIElzc3VlICMyNzU2ODogUHJldmVudCBIVFRQb3h5IGF0dGFjayAoQ1ZFLTIwMTYtMTAwMDExMCkuIElnbm9yZSB0aGUKKysgIEhUVFBfUFJPWFkgdmFyaWFibGUgd2hlbiBSRVFVRVNUX01FVEhPRCBlbnZpcm9ubWVudCBpcyBzZXQsIHdoaWNoIGluZGljYXRlcworKyAgdGhhdCB0aGUgc2NyaXB0IGlzIGluIENHSSBtb2RlLgorKworIC0gSXNzdWUgIzIzODA0OiBGaXggU1NMIHJlY3YoMCkgYW5kIHJlYWQoMCkgbWV0aG9kcyB0byByZXR1cm4gemVybyBieXRlcworICAgaW5zdGVhZCBvZiB1cCB0byAxMDI0LgorIAorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3VuaXhjY29tcGlsZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3VuaXhjY29tcGlsZXIucGF0Y2gKaW5kZXggN2I5MGYxMy4uM2UyYjFkMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy91bml4Y2NvbXBpbGVyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvdW5peGNjb21waWxlci5wYXRjaApAQCAtMTgsOSArMTgsOSBAQAogIAogICAgICBkZWYgbGlicmFyeV9kaXJfb3B0aW9uKHNlbGYsIGRpcik6CiAtICAgICAgICByZXR1cm4gIi1MIiArIGRpcgotKyAgICAgICAgaWYgZGlyLnN0YXJ0c3dpdGgoIi4iKToKLSsgICAgICAgICAgICByZXR1cm4gIi1MIiArIGRpcgotKyAgICAgICAgcmV0dXJuICItTD0iICsgZGlyCisrICAgICAgICBpZiBkaXIuc3RhcnRzd2l0aCgiLyIpOgorKyAgICAgICAgICAgIHJldHVybiAiLUw9IiArIGRpcgorKyAgICAgICAgcmV0dXJuICItTCIgKyBkaXIKICAKICAgICAgZGVmIF9pc19nY2Moc2VsZiwgY29tcGlsZXJfbmFtZSk6CiAgICAgICAgICByZXR1cm4gImdjYyIgaW4gY29tcGlsZXJfbmFtZSBvciAiZysrIiBpbiBjb21waWxlcl9uYW1lCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3VzZV9wYWNrZWRfaW1wb3J0bGliLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy91c2VfcGFja2VkX2ltcG9ydGxpYi5wYXRjaAppbmRleCA2YzRiMGNkLi43MDcwOGEwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3VzZV9wYWNrZWRfaW1wb3J0bGliLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvdXNlX3BhY2tlZF9pbXBvcnRsaWIucGF0Y2gKQEAgLTYsNyArNiw3IEBACiB0aGlzIGF2b2lkcyBleGVjdXRpbmcgdGhlIGJpbmFyeSBhbmQgZm9yY2VzIGl0IHRvIHVzZSB0aGUgcGFja2VkIGltcG9ydGxpYiouaCBmaWxlcy4KIAogIAotU2lnbmVkLU9mZi1CeTogQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+IAorU2lnbmVkLW9mZi1ieTogQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+IAogCiBJbmRleDogUHl0aG9uLTMuNS4wL01ha2VmaWxlLnByZS5pbgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uM18zLjUuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy41LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmYmIzY2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uM18zLjUuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyNiArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi5pbmMKLQotREVQRU5EUyA9ICJweXRob24zLW5hdGl2ZSBsaWJmZmkgYnppcDIgZGIgZ2RibSBvcGVuc3NsIHJlYWRsaW5lIHNxbGl0ZTMgemxpYiB2aXJ0dWFsL2xpYmludGwgeHoiCi1QUiA9ICIke0lOQ19QUn0uMCIKLVBZVEhPTl9NQUpNSU4gPSAiMy41IgotUFlUSE9OX0JJTkFCST0gIiR7UFlUSE9OX01BSk1JTn1tIgotRElTVFJPX1NSQ19VUkkgPz0gImZpbGU6Ly9zaXRlY3VzdG9taXplLnB5IgotRElTVFJPX1NSQ19VUklfbGludXhzdGRiYXNlID0gIiIKLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5weXRob24ub3JnL2Z0cC9weXRob24vJHtQVn0vUHl0aG9uLSR7UFZ9LnRhci54eiBcCi1maWxlOi8vcHl0aG9uLWNvbmZpZy5wYXRjaCBcCi1maWxlOi8vMDAwLWNyb3NzLWNvbXBpbGUucGF0Y2ggXAotZmlsZTovLzAyMC1kb250LWNvbXBpbGUtcHl0aG9uLWZpbGVzLnBhdGNoIFwKLWZpbGU6Ly8wMzAtZml4dXAtaW5jbHVkZS1kaXJzLnBhdGNoIFwKLWZpbGU6Ly8wNzAtZG9udC1jbGVhbi1pcGtnLWluc3RhbGwucGF0Y2ggXAotZmlsZTovLzA4MC1kaXN0dXRpbHMtZG9udF9hZGp1c3RfZmlsZXMucGF0Y2ggXAotZmlsZTovLzExMC1lbmFibGUtemxpYi5wYXRjaCBcCi1maWxlOi8vMTMwLXJlYWRsaW5lLXNldHVwLnBhdGNoIFwKLWZpbGU6Ly8xNTAtZml4LXNldHVwdGVybS5wYXRjaCBcCi1maWxlOi8vMDAwMS1oMnB5LUZpeC1pc3N1ZS0xMzAzMi13aGVyZS1pdC1mYWlscy13aXRoLVVuaWNvZGVEZWNvLnBhdGNoIFwKLWZpbGU6Ly90d2Vhay1NVUxUSUFSQ0gtZm9yLXBvd2VycGMtbGludXgtZ251c3BlLnBhdGNoIFwKLSR7RElTVFJPX1NSQ19VUkl9IFwKLSIKLQotU1JDX1VSSSArPSAiXAotICAgICAgICAgICAgZmlsZTovLzAzLWZpeC10a2ludGVyLWRldGVjdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9jZ2lfcHkucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2hvc3RfaW5jbHVkZV9jb250YW1pbmF0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9weXRob24tMy4zLW11bHRpbGliLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9zaHV0aWwtZm9sbG93LXN5bWxpbmstZml4LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9zeXNyb290LWluY2x1ZGUtaGVhZGVycy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vdW5peGNjb21waWxlci5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vYXZvaWQtbmN1cnNlc3ctaW5jbHVkZS1wYXRoLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9weXRob24zLXVzZS1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3B5dGhvbjMtc2V0dXAucHktbm8taG9zdC1oZWFkZXJzLWxpYnMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3N5c2NvbmZpZy5weS1hZGQtX1BZVEhPTl9QUk9KRUNUX1NSQy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vc2V0dXAucHktY2hlY2stY3Jvc3NfY29tcGlsaW5nLXdoZW4tZ2V0LUZMQUdTLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9zZXR1cC5weS1maW5kLWxpYnJhcmllcy1pbi1zdGFnaW5nLWRpcnMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3VzZV9wYWNrZWRfaW1wb3J0bGliLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUuYWMtZml4LUxJQlBMLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImU5ZWE2ZjI2MjNmZmZjZGQ4NzFiN2IxOTExM2ZkZTgwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImM2ZDU3YzBjMzY2ZDkwNjBhYjZjMGNkZjg4OWViZjNkOTI3MTFkNDY2Y2MwMTE5YzQ0MWRiZjI3NDZmNzI1YzkiCi0KLSMgZXhjbHVkZSBwcmUtcmVsZWFzZXMgZm9yIGJvdGggcHl0aG9uIDIueCBhbmQgMy54Ci1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJbUHBdeXRob24tKD9QPHB2ZXI+XGQrKFwuXGQrKSspLnRhciIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZGQ5OGQwMWQ0NzFmYWM4ZDhkYmRkOTc1MjI5ZGJhMDMiCi0KLVMgPSAiJHtXT1JLRElSfS9QeXRob24tJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIG11bHRpbGliX2hlYWRlciBweXRob24zbmF0aXZlIHBrZ2NvbmZpZwotCi1DT05GSUdVUkVPUFRTICs9ICIgLS13aXRoLXN5c3RlbS1mZmkgIgotCi1DQUNIRURfQ09ORklHVVJFVkFSUyA9ICJhY19jdl9oYXZlX2NoZmxhZ3M9bm8gXAotICAgICAgICAgICAgICAgIGFjX2N2X2hhdmVfbGNoZmxhZ3M9bm8gXAotICAgICAgICAgICAgICAgIGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD15ZXMgXAotICAgICAgICAgICAgICAgIGFjX2N2X2J1Z2d5X2dldGFkZHJpbmZvPW5vIFwKLSAgICAgICAgICAgICAgICBhY19jdl9maWxlX19kZXZfcHRteD15ZXMgXAotICAgICAgICAgICAgICAgIGFjX2N2X2ZpbGVfX2Rldl9wdGM9bm8gXAotIgotCi1UQVJHRVRfQ0NfQVJDSCArPSAiLUROREVCVUcgLWZuby1pbmxpbmUiCi1TREtfQ0NfQVJDSCArPSAiLUROREVCVUcgLWZuby1pbmxpbmUiCi1FWFRSQV9PRU1BS0UgKz0gIkNST1NTX0NPTVBJTEU9eWVzIgotRVhUUkFfT0VDT05GICs9ICJDUk9TU1BZVEhPTlBBVEg9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvIC0td2l0aG91dC1lbnN1cmVwaXAiCi0KLWV4cG9ydCBDUk9TU19DT01QSUxFID0gIiR7VEFSR0VUX1BSRUZJWH0iCi1leHBvcnQgX1BZVEhPTl9QUk9KRUNUX0JBU0UgPSAiJHtCfSIKLWV4cG9ydCBfUFlUSE9OX1BST0pFQ1RfU1JDID0gIiR7U30iCi1leHBvcnQgQ0NTSEFSRUQgPSAiLWZQSUMiCi0KLSMgRml4IGN0eXBlcyBjcm9zcyBjb21waWxhdGlvbgotZXhwb3J0IENST1NTUFlUSE9OUEFUSCA9ICIke0J9L2J1aWxkL2xpYi5saW51eC0ke1RBUkdFVF9BUkNIfS0ke1BZVEhPTl9NQUpNSU59OiR7U30vTGliOiR7U30vTGliL3BsYXQtbGludXgiCi0KLSMgTm8gY3R5cGVzIG9wdGlvbiBmb3IgcHl0aG9uIDMKLVBZVEhPTkxTQk9QVFMgPSAiIgotCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotCXJtIC1mICR7U30vTWFrZWZpbGUub3JpZwotCWF1dG9yZWNvbmYgLVdjcm9zcyAtLXZlcmJvc2UgLS1pbnN0YWxsIC0tZm9yY2UgLS1leGNsdWRlPWF1dG9wb2ludCAuLi9QeXRob24tJHtQVn0vTW9kdWxlcy9fY3R5cGVzL2xpYmZmaQotfQotCi1kb19jb21waWxlKCkgewotICAgICAgICAjIHJlZ2VuZXJhdGUgcGxhdGZvcm0gc3BlY2lmaWMgZmlsZXMsIGJlY2F1c2UgdGhleSBkZXBlbmQgb24gc3lzdGVtIGhlYWRlcnMKLSAgICAgICAgY2QgJHtTfS9MaWIvcGxhdC1saW51eCoKLSAgICAgICAgaW5jbHVkZT0ke1NUQUdJTkdfSU5DRElSfSAke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCi0gICAgICAgICAgICAgICAgJHtTfS9Ub29scy9zY3JpcHRzL2gycHkucHkgLWkgJyh1X2xvbmcpJyBcCi0gICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vZGxmY24uaCBcCi0gICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vbGludXgvY2Ryb20uaCBcCi0gICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vbmV0aW5ldC9pbi5oIFwKLSAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9zeXMvdHlwZXMuaAotICAgICAgICBzZWQgLWUgJ3MsJHtTVEFHSU5HX0RJUl9IT1NUfSwsZycgLWkgKi5weQotICAgICAgICBjZCAtCi0KLQotCSMgcmVtb3ZlIGFueSBib2d1cyBMRF9MSUJSQVJZX1BBVEgKLQlzZWQgLWkgLWUgcyxSVU5TSEFSRUQ9LiosUlVOU0hBUkVEPSwgTWFrZWZpbGUKLQotCWlmIFsgISAtZiBNYWtlZmlsZS5vcmlnIF07IHRoZW4KLQkJaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlIE1ha2VmaWxlLm9yaWcKLQlmaQotCXNlZCAtaSAtZSAncyxeQ09ORklHVVJFX0xERkxBR1M9LiosQ09ORklHVVJFX0xERkxBR1M9LUwuIC1MJHtTVEFHSU5HX0xJQkRJUn0sZycgXAotCQktZSAncyxsaWJkaXI9JHtsaWJkaXJ9LGxpYmRpcj0ke1NUQUdJTkdfTElCRElSfSxnJyBcCi0JCS1lICdzLGxpYmV4ZWNkaXI9JHtsaWJleGVjZGlyfSxsaWJleGVjZGlyPSR7U1RBR0lOR19ESVJfSE9TVH0ke2xpYmV4ZWNkaXJ9LGcnIFwKLQkJLWUgJ3MsXkxJQkRJUj0uKixMSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0sZycgXAotCQktZSAncyxpbmNsdWRlZGlyPSR7aW5jbHVkZWRpcn0saW5jbHVkZWRpcj0ke1NUQUdJTkdfSU5DRElSfSxnJyBcCi0JCS1lICdzLF5JTkNMVURFRElSPS4qLElOQ0xVREU9JHtTVEFHSU5HX0lOQ0RJUn0sZycgXAotCQktZSAncyxeQ09ORklOQ0xVREVESVI9LiosQ09ORklOQ0xVREU9JHtTVEFHSU5HX0lOQ0RJUn0sZycgXAotCQlNYWtlZmlsZQotCSMgc2F2ZSBjb3B5IG9mIGl0IG5vdywgYmVjYXVzZSBpZiB3ZSBkbyBpdCBpbiBkb19pbnN0YWxsIGFuZCAKLQkjIHRoZW4gY2FsbCBkb19pbnN0YWxsIHR3aWNlIHdlIGdldCBNYWtlZmlsZS5vcmlnID09IE1ha2VmaWxlLnN5c3Jvb3QKLQlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUgTWFrZWZpbGUuc3lzcm9vdAotCi0Jb2VfcnVubWFrZSBIT1NUUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcGdlbiBcCi0JCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAotCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCi0JCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAotCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCi0JCUJVSUxEX1NZUz0ke0JVSUxEX1NZU30gSE9TVF9TWVM9JHtIT1NUX1NZU30gXAotCQlMSUI9JHtiYXNlbGlifSBcCi0JCUFSQ0g9JHtUQVJHRVRfQVJDSH0gXAotCQlPUFQ9IiR7Q0ZMQUdTfSIgbGlicHl0aG9uMy5zbwotCi0Jb2VfcnVubWFrZSBIT1NUUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcGdlbiBcCi0JCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAotCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCi0JCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKLQkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCi0JCUJVSUxEX1NZUz0ke0JVSUxEX1NZU30gSE9TVF9TWVM9JHtIT1NUX1NZU30gXAotCQlMSUI9JHtiYXNlbGlifSBcCi0JCUFSQ0g9JHtUQVJHRVRfQVJDSH0gXAotCQlPUFQ9IiR7Q0ZMQUdTfSIKLX0KLQotZG9faW5zdGFsbCgpIHsKLQkjIG1ha2UgaW5zdGFsbCBuZWVkcyB0aGUgb3JpZ2luYWwgTWFrZWZpbGUsIG9yIG90aGVyd2lzZSB0aGUgaW5jbHVlcyB3b3VsZAotCSMgZ28gdG8gJHtEfSR7U1RBR0lORy4uLn0vLi4uCi0JaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlLm9yaWcgTWFrZWZpbGUKLQotCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wa2djb25maWcKLQlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcKLQotCSMgcmVydW4gdGhlIGJ1aWxkIG9uY2UgYWdhaW4gd2l0aCBvcmlnaW5hbCBtYWtlZmlsZSB0aGlzIHRpbWUKLQkjIHJ1biBpbnN0YWxsIGluIGEgc2VwYXJhdGUgc3RlcCB0byBhdm9pZCBjb21waWxlL2luc3RhbGwgcmFjZQotCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3BnZW4gXAotCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKLQkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAotCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCi0JCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAotCQlCVUlMRF9TWVM9JHtCVUlMRF9TWVN9IEhPU1RfU1lTPSR7SE9TVF9TWVN9IFwKLQkJTElCPSR7YmFzZWxpYn0gXAotCQlBUkNIPSR7VEFSR0VUX0FSQ0h9IFwKLQkJREVTVERJUj0ke0R9IExJQkRJUj0ke2xpYmRpcn0KLQkKLQlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9wZ2VuIFwKLQkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCi0JCVNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKLQkJU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotCQlTVEFHSU5HX0JBU0VMSUJESVI9JHtTVEFHSU5HX0JBU0VMSUJESVJ9IFwKLQkJQlVJTERfU1lTPSR7QlVJTERfU1lTfSBIT1NUX1NZUz0ke0hPU1RfU1lTfSBcCi0JCUxJQj0ke2Jhc2VsaWJ9IFwKLQkJQVJDSD0ke1RBUkdFVF9BUkNIfSBcCi0JCURFU1RESVI9JHtEfSBMSUJESVI9JHtsaWJkaXJ9IGluc3RhbGwKLQotCSMgYXZvaWQgY29uZmxpY3Qgd2l0aCAydG8zIGZyb20gUHl0aG9uIDIKLQlybSAtZiAke0R9LyR7YmluZGlyfS8ydG8zCi0KLQlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUuc3lzcm9vdCAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy9NYWtlZmlsZQotCi0JaWYgWyAtZSAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgXTsgdGhlbgotCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zaXRlY3VzdG9taXplLnB5ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0KLQlmaQotCi0Jb2VfbXVsdGlsaWJfaGVhZGVyIHB5dGhvbiR7UFlUSE9OX0JJTkFCSX0vcHljb25maWcuaAotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgKCkgewotCWNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfSBURVJNSU5GT19ESVJTPScke3N5c2NvbmZkaXJ9L3Rlcm1pbmZvOi9ldGMvdGVybWluZm86L3Vzci9zaGFyZS90ZXJtaW5mbzovdXNyL3NoYXJlL21pc2MvdGVybWluZm86L2xpYi90ZXJtaW5mbycKLX0KLQotU1NUQVRFX1NDQU5fRklMRVMgKz0gIk1ha2VmaWxlIgotUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJweV9wYWNrYWdlX3ByZXByb2Nlc3MiCi0KLXB5X3BhY2thZ2VfcHJlcHJvY2VzcyAoKSB7Ci0JIyBjb3B5IGJhY2sgdGhlIG9sZCBNYWtlZmlsZSB0byBmaXggdGFyZ2V0IHBhY2thZ2UKLQlpbnN0YWxsIC1tIDA2NDQgJHtCfS9NYWtlZmlsZS5vcmlnICR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL01ha2VmaWxlCi0JIyBSZW1vdmUgcmVmZXJlbmNlcyB0byBidWlsZG1hY2hpbmUgcGF0aHMgaW4gdGFyZ2V0IE1ha2VmaWxlIGFuZCBfc3lzY29uZmlnZGF0YQotCXNlZCAtaSAtZSAnczotLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9OjpnJyAtZSBzOictLXdpdGgtbGlidG9vbC1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSc6OmcgXAotCQkke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy9NYWtlZmlsZSBcCi0JCSR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3N5c2NvbmZpZ2RhdGEucHkKLX0KLQotcmVxdWlyZSBweXRob24tJHtQWVRIT05fTUFKTUlOfS1tYW5pZmVzdC5pbmMKLQotIyBtYW51YWwgZGVwZW5kZW5jeSBhZGRpdGlvbnMKLVJQUk9WSURFU18ke1BOfS1jb3JlID0gIiR7UE59IgotUlJFQ09NTUVORFNfJHtQTn0tY29yZSA9ICIke1BOfS1yZWFkbGluZSIKLVJSRUNPTU1FTkRTXyR7UE59LWNyeXB0ID0gIm9wZW5zc2wiCi1SUkVDT01NRU5EU18ke1BOfS1jcnlwdF9jbGFzcy1uYXRpdmVzZGsgPSAibmF0aXZlc2RrLW9wZW5zc2wiCi0KLUZJTEVTXyR7UE59LTJ0bzMgKz0gIiR7YmluZGlyfS8ydG8zLSR7UFlUSE9OX01BSk1JTn0iCi1GSUxFU18ke1BOfS1weWRvYyArPSAiJHtiaW5kaXJ9L3B5ZG9jJHtQWVRIT05fTUFKTUlOfSAke2JpbmRpcn0vcHlkb2MzIgotRklMRVNfJHtQTn0taWRsZSArPSAiJHtiaW5kaXJ9L2lkbGUzICR7YmluZGlyfS9pZGxlJHtQWVRIT05fTUFKTUlOfSIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXB5dmVudiIKLUZJTEVTXyR7UE59LXB5dmVudiArPSAiJHtiaW5kaXJ9L3B5dmVudi0ke1BZVEhPTl9NQUpNSU59ICR7YmluZGlyfS9weXZlbnYiCi0KLSMgcGFja2FnZSBsaWJweXRob24zCi1QQUNLQUdFUyA9KyAibGlicHl0aG9uMyBsaWJweXRob24zLXN0YXRpY2RldiIKLUZJTEVTX2xpYnB5dGhvbjMgPSAiJHtsaWJkaXJ9L2xpYnB5dGhvbiouc28uKiIKLUZJTEVTX2xpYnB5dGhvbjMtc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWctJHtQWVRIT05fQklOQUJJfS9saWJweXRob24ke1BZVEhPTl9CSU5BQkl9LmEiCi1JTlNBTkVfU0tJUF8ke1BOfS1kZXYgKz0gImRldi1lbGYiCi0KLSMgY2F0Y2ggYWxsIHRoZSByZXN0ICh1bnNvcnRlZCkKLVBBQ0tBR0VTICs9ICIke1BOfS1taXNjIgotUkRFUEVORFNfJHtQTn0tbWlzYyArPSAiJHtQTn0tY29yZSIKLVJERVBFTkRTXyR7UE59LW1vZHVsZXMgKz0gIiR7UE59LW1pc2MiCi1GSUxFU18ke1BOfS1taXNjID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59IgotCi0jIGNhdGNoIG1hbnBhZ2UKLVBBQ0tBR0VTICs9ICIke1BOfS1tYW4iCi1GSUxFU18ke1BOfS1tYW4gPSAiJHtkYXRhZGlyfS9tYW4iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uM18zLjUuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy41LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTZjYmI5YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy41LjIuYmIKQEAgLTAsMCArMSwyMjQgQEAKK3JlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLmluYworCitERVBFTkRTID0gInB5dGhvbjMtbmF0aXZlIGxpYmZmaSBiemlwMiBkYiBnZGJtIG9wZW5zc2wgcmVhZGxpbmUgc3FsaXRlMyB6bGliIHZpcnR1YWwvbGliaW50bCB4eiIKK1BSID0gIiR7SU5DX1BSfS4wIgorUFlUSE9OX01BSk1JTiA9ICIzLjUiCitQWVRIT05fQklOQUJJPSAiJHtQWVRIT05fTUFKTUlOfW0iCitESVNUUk9fU1JDX1VSSSA/PSAiZmlsZTovL3NpdGVjdXN0b21pemUucHkiCitESVNUUk9fU1JDX1VSSV9saW51eHN0ZGJhc2UgPSAiIgorU1JDX1VSSSA9ICJodHRwOi8vd3d3LnB5dGhvbi5vcmcvZnRwL3B5dGhvbi8ke1BWfS9QeXRob24tJHtQVn0udGFyLnh6IFwKK2ZpbGU6Ly9weXRob24tY29uZmlnLnBhdGNoIFwKK2ZpbGU6Ly8wMDAtY3Jvc3MtY29tcGlsZS5wYXRjaCBcCitmaWxlOi8vMDIwLWRvbnQtY29tcGlsZS1weXRob24tZmlsZXMucGF0Y2ggXAorZmlsZTovLzAzMC1maXh1cC1pbmNsdWRlLWRpcnMucGF0Y2ggXAorZmlsZTovLzA3MC1kb250LWNsZWFuLWlwa2ctaW5zdGFsbC5wYXRjaCBcCitmaWxlOi8vMDgwLWRpc3R1dGlscy1kb250X2FkanVzdF9maWxlcy5wYXRjaCBcCitmaWxlOi8vMTMwLXJlYWRsaW5lLXNldHVwLnBhdGNoIFwKK2ZpbGU6Ly8xNTAtZml4LXNldHVwdGVybS5wYXRjaCBcCitmaWxlOi8vMDAwMS1oMnB5LUZpeC1pc3N1ZS0xMzAzMi13aGVyZS1pdC1mYWlscy13aXRoLVVuaWNvZGVEZWNvLnBhdGNoIFwKK2ZpbGU6Ly90d2Vhay1NVUxUSUFSQ0gtZm9yLXBvd2VycGMtbGludXgtZ251c3BlLnBhdGNoIFwKKyR7RElTVFJPX1NSQ19VUkl9IFwKKyIKKworU1JDX1VSSSArPSAiXAorICAgICAgICAgICAgZmlsZTovLzAzLWZpeC10a2ludGVyLWRldGVjdGlvbi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9jZ2lfcHkucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2hvc3RfaW5jbHVkZV9jb250YW1pbmF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9weXRob24tMy4zLW11bHRpbGliLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9zaHV0aWwtZm9sbG93LXN5bWxpbmstZml4LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9zeXNyb290LWluY2x1ZGUtaGVhZGVycy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vdW5peGNjb21waWxlci5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vYXZvaWQtbmN1cnNlc3ctaW5jbHVkZS1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9weXRob24zLXVzZS1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3B5dGhvbjMtc2V0dXAucHktbm8taG9zdC1oZWFkZXJzLWxpYnMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3N5c2NvbmZpZy5weS1hZGQtX1BZVEhPTl9QUk9KRUNUX1NSQy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vc2V0dXAucHktY2hlY2stY3Jvc3NfY29tcGlsaW5nLXdoZW4tZ2V0LUZMQUdTLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9zZXR1cC5weS1maW5kLWxpYnJhcmllcy1pbi1zdGFnaW5nLWRpcnMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5hYy1maXgtTElCUEwucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3B5dGhvbjMtZml4LUNWRS0yMDE2LTEwMDAxMTAucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiODkwNmVmYmFjZmNkYzdjM2M5MTk4YWVlZmFmZDE1OWUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDAxMGY1NjEwMGI5Yjc0MjU5ZWJjZDVkNGIyOTVhMzIzMjRiNThiNTE3NDAzYTEwZDFhMmFhN2NiMjJiY2E0MCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NmI2MDI1ODEzMGU0ZWQxMGQzMTAxNTE3ZWI1YjkzODUiCisKKyMgZXhjbHVkZSBwcmUtcmVsZWFzZXMgZm9yIGJvdGggcHl0aG9uIDIueCBhbmQgMy54CitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJbUHBdeXRob24tKD9QPHB2ZXI+XGQrKFwuXGQrKSspLnRhciIKKworUyA9ICIke1dPUktESVJ9L1B5dGhvbi0ke1BWfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgbXVsdGlsaWJfaGVhZGVyIHB5dGhvbjNuYXRpdmUgcGtnY29uZmlnCisKK0NPTkZJR1VSRU9QVFMgKz0gIiAtLXdpdGgtc3lzdGVtLWZmaSAiCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTID0gImFjX2N2X2hhdmVfY2hmbGFncz1ubyBcCisgICAgICAgICAgICAgICAgYWNfY3ZfaGF2ZV9sY2hmbGFncz1ubyBcCisgICAgICAgICAgICAgICAgYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PXllcyBcCisgICAgICAgICAgICAgICAgYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm89bm8gXAorICAgICAgICAgICAgICAgIGFjX2N2X2ZpbGVfX2Rldl9wdG14PXllcyBcCisgICAgICAgICAgICAgICAgYWNfY3ZfZmlsZV9fZGV2X3B0Yz1ubyBcCisiCisKK1RBUkdFVF9DQ19BUkNIICs9ICItRE5ERUJVRyAtZm5vLWlubGluZSIKK1NES19DQ19BUkNIICs9ICItRE5ERUJVRyAtZm5vLWlubGluZSIKK0VYVFJBX09FTUFLRSArPSAiQ1JPU1NfQ09NUElMRT15ZXMiCitFWFRSQV9PRUNPTkYgKz0gIkNST1NTUFlUSE9OUEFUSD0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC8gLS13aXRob3V0LWVuc3VyZXBpcCIKKworZXhwb3J0IENST1NTX0NPTVBJTEUgPSAiJHtUQVJHRVRfUFJFRklYfSIKK2V4cG9ydCBfUFlUSE9OX1BST0pFQ1RfQkFTRSA9ICIke0J9IgorZXhwb3J0IF9QWVRIT05fUFJPSkVDVF9TUkMgPSAiJHtTfSIKK2V4cG9ydCBDQ1NIQVJFRCA9ICItZlBJQyIKKworIyBGaXggY3Jvc3MgY29tcGlsYXRpb24gb2YgZGlmZmVyZW50IG1vZHVsZXMKK2V4cG9ydCBDUk9TU1BZVEhPTlBBVEggPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvOiR7Qn0vYnVpbGQvbGliLmxpbnV4LSR7VEFSR0VUX0FSQ0h9LSR7UFlUSE9OX01BSk1JTn06JHtTfS9MaWI6JHtTfS9MaWIvcGxhdC1saW51eCIKKworIyBObyBjdHlwZXMgb3B0aW9uIGZvciBweXRob24gMworUFlUSE9OTFNCT1BUUyA9ICIiCisKK2RvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7CisJcm0gLWYgJHtTfS9NYWtlZmlsZS5vcmlnCisJYXV0b3JlY29uZiAtV2Nyb3NzIC0tdmVyYm9zZSAtLWluc3RhbGwgLS1mb3JjZSAtLWV4Y2x1ZGU9YXV0b3BvaW50IC4uL1B5dGhvbi0ke1BWfS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpCit9CisKK2RvX2NvbXBpbGUoKSB7CisgICAgICAgICMgcmVnZW5lcmF0ZSBwbGF0Zm9ybSBzcGVjaWZpYyBmaWxlcywgYmVjYXVzZSB0aGV5IGRlcGVuZCBvbiBzeXN0ZW0gaGVhZGVycworICAgICAgICBjZCAke1N9L0xpYi9wbGF0LWxpbnV4KgorICAgICAgICBpbmNsdWRlPSR7U1RBR0lOR19JTkNESVJ9ICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKKyAgICAgICAgICAgICAgICAke1N9L1Rvb2xzL3NjcmlwdHMvaDJweS5weSAtaSAnKHVfbG9uZyknIFwKKyAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9kbGZjbi5oIFwKKyAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9saW51eC9jZHJvbS5oIFwKKyAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9uZXRpbmV0L2luLmggXAorICAgICAgICAgICAgICAgICR7U1RBR0lOR19JTkNESVJ9L3N5cy90eXBlcy5oCisgICAgICAgIHNlZCAtZSAncywke1NUQUdJTkdfRElSX0hPU1R9LCxnJyAtaSAqLnB5CisgICAgICAgIGNkIC0KKworCisJIyByZW1vdmUgYW55IGJvZ3VzIExEX0xJQlJBUllfUEFUSAorCXNlZCAtaSAtZSBzLFJVTlNIQVJFRD0uKixSVU5TSEFSRUQ9LCBNYWtlZmlsZQorCisJaWYgWyAhIC1mIE1ha2VmaWxlLm9yaWcgXTsgdGhlbgorCQlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUgTWFrZWZpbGUub3JpZworCWZpCisJc2VkIC1pIC1lICdzLF5DT05GSUdVUkVfTERGTEFHUz0uKixDT05GSUdVUkVfTERGTEFHUz0tTC4gLUwke1NUQUdJTkdfTElCRElSfSxnJyBcCisJCS1lICdzLGxpYmRpcj0ke2xpYmRpcn0sbGliZGlyPSR7U1RBR0lOR19MSUJESVJ9LGcnIFwKKwkJLWUgJ3MsbGliZXhlY2Rpcj0ke2xpYmV4ZWNkaXJ9LGxpYmV4ZWNkaXI9JHtTVEFHSU5HX0RJUl9IT1NUfSR7bGliZXhlY2Rpcn0sZycgXAorCQktZSAncyxeTElCRElSPS4qLExJQkRJUj0ke1NUQUdJTkdfTElCRElSfSxnJyBcCisJCS1lICdzLGluY2x1ZGVkaXI9JHtpbmNsdWRlZGlyfSxpbmNsdWRlZGlyPSR7U1RBR0lOR19JTkNESVJ9LGcnIFwKKwkJLWUgJ3MsXklOQ0xVREVESVI9LiosSU5DTFVERT0ke1NUQUdJTkdfSU5DRElSfSxnJyBcCisJCS1lICdzLF5DT05GSU5DTFVERURJUj0uKixDT05GSU5DTFVERT0ke1NUQUdJTkdfSU5DRElSfSxnJyBcCisJCU1ha2VmaWxlCisJIyBzYXZlIGNvcHkgb2YgaXQgbm93LCBiZWNhdXNlIGlmIHdlIGRvIGl0IGluIGRvX2luc3RhbGwgYW5kIAorCSMgdGhlbiBjYWxsIGRvX2luc3RhbGwgdHdpY2Ugd2UgZ2V0IE1ha2VmaWxlLm9yaWcgPT0gTWFrZWZpbGUuc3lzcm9vdAorCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZSBNYWtlZmlsZS5zeXNyb290CisKKwlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9wZ2VuIFwKKwkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCisJCVNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKKwkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCisJCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKKwkJTElCPSR7YmFzZWxpYn0gXAorCQlBUkNIPSR7VEFSR0VUX0FSQ0h9IFwKKwkJT1BUPSIke0NGTEFHU30iIGxpYnB5dGhvbjMuc28KKworCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3BnZW4gXAorCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKKwkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAorCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCisJCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAorCQlMSUI9JHtiYXNlbGlifSBcCisJCUFSQ0g9JHtUQVJHRVRfQVJDSH0gXAorCQlPUFQ9IiR7Q0ZMQUdTfSIKK30KKworZG9faW5zdGFsbCgpIHsKKwkjIG1ha2UgaW5zdGFsbCBuZWVkcyB0aGUgb3JpZ2luYWwgTWFrZWZpbGUsIG9yIG90aGVyd2lzZSB0aGUgaW5jbHVlcyB3b3VsZAorCSMgZ28gdG8gJHtEfSR7U1RBR0lORy4uLn0vLi4uCisJaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlLm9yaWcgTWFrZWZpbGUKKworCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wa2djb25maWcKKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcKKworCSMgcmVydW4gdGhlIGJ1aWxkIG9uY2UgYWdhaW4gd2l0aCBvcmlnaW5hbCBtYWtlZmlsZSB0aGlzIHRpbWUKKwkjIHJ1biBpbnN0YWxsIGluIGEgc2VwYXJhdGUgc3RlcCB0byBhdm9pZCBjb21waWxlL2luc3RhbGwgcmFjZQorCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3BnZW4gXAorCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKKwkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAorCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCisJCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAorCQlMSUI9JHtiYXNlbGlifSBcCisJCUFSQ0g9JHtUQVJHRVRfQVJDSH0gXAorCQlERVNURElSPSR7RH0gTElCRElSPSR7bGliZGlyfQorCQorCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3BnZW4gXAorCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKKwkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAorCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCisJCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAorCQlMSUI9JHtiYXNlbGlifSBcCisJCUFSQ0g9JHtUQVJHRVRfQVJDSH0gXAorCQlERVNURElSPSR7RH0gTElCRElSPSR7bGliZGlyfSBpbnN0YWxsCisKKwkjIGF2b2lkIGNvbmZsaWN0IHdpdGggMnRvMyBmcm9tIFB5dGhvbiAyCisJcm0gLWYgJHtEfS8ke2JpbmRpcn0vMnRvMworCisJaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlLnN5c3Jvb3QgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcvTWFrZWZpbGUKKwlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUuc3lzcm9vdCAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy0ke1BZVEhPTl9NQUpNSU59JHtQWVRIT05fQUJJfS9NYWtlZmlsZQorCisJaWYgWyAtZSAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgXTsgdGhlbgorCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zaXRlY3VzdG9taXplLnB5ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0KKwlmaQorCisJb2VfbXVsdGlsaWJfaGVhZGVyIHB5dGhvbiR7UFlUSE9OX0JJTkFCSX0vcHljb25maWcuaAorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgKCkgeworCWNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfSBURVJNSU5GT19ESVJTPScke3N5c2NvbmZkaXJ9L3Rlcm1pbmZvOi9ldGMvdGVybWluZm86L3Vzci9zaGFyZS90ZXJtaW5mbzovdXNyL3NoYXJlL21pc2MvdGVybWluZm86L2xpYi90ZXJtaW5mbycKK30KKworU1NUQVRFX1NDQU5fRklMRVMgKz0gIk1ha2VmaWxlIgorUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJweV9wYWNrYWdlX3ByZXByb2Nlc3MiCisKK3B5X3BhY2thZ2VfcHJlcHJvY2VzcyAoKSB7CisJIyBjb3B5IGJhY2sgdGhlIG9sZCBNYWtlZmlsZSB0byBmaXggdGFyZ2V0IHBhY2thZ2UKKwlpbnN0YWxsIC1tIDA2NDQgJHtCfS9NYWtlZmlsZS5vcmlnICR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL01ha2VmaWxlCisJaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vTWFrZWZpbGUub3JpZyAke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy0ke1BZVEhPTl9NQUpNSU59JHtQWVRIT05fQUJJfS9NYWtlZmlsZQorCSMgUmVtb3ZlIHJlZmVyZW5jZXMgdG8gYnVpbGRtYWNoaW5lIHBhdGhzIGluIHRhcmdldCBNYWtlZmlsZSBhbmQgX3N5c2NvbmZpZ2RhdGEKKwlzZWQgLWkgLWUgJ3M6LS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfTo6ZycgLWUgczonLS13aXRoLWxpYnRvb2wtc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0nOjpnIFwKKwkJJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcvTWFrZWZpbGUgXAorCQkke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy0ke1BZVEhPTl9NQUpNSU59JHtQWVRIT05fQUJJfS9NYWtlZmlsZSBcCisJCSR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3N5c2NvbmZpZ2RhdGEucHkKK30KKworcmVxdWlyZSBweXRob24tJHtQWVRIT05fTUFKTUlOfS1tYW5pZmVzdC5pbmMKKworIyBtYW51YWwgZGVwZW5kZW5jeSBhZGRpdGlvbnMKK1JQUk9WSURFU18ke1BOfS1jb3JlID0gIiR7UE59IgorUlJFQ09NTUVORFNfJHtQTn0tY29yZSA9ICIke1BOfS1yZWFkbGluZSIKK1JSRUNPTU1FTkRTXyR7UE59LWNyeXB0ID0gIm9wZW5zc2wiCitSUkVDT01NRU5EU18ke1BOfS1jcnlwdF9jbGFzcy1uYXRpdmVzZGsgPSAibmF0aXZlc2RrLW9wZW5zc2wiCisKK0ZJTEVTXyR7UE59LTJ0bzMgKz0gIiR7YmluZGlyfS8ydG8zLSR7UFlUSE9OX01BSk1JTn0iCitGSUxFU18ke1BOfS1weWRvYyArPSAiJHtiaW5kaXJ9L3B5ZG9jJHtQWVRIT05fTUFKTUlOfSAke2JpbmRpcn0vcHlkb2MzIgorRklMRVNfJHtQTn0taWRsZSArPSAiJHtiaW5kaXJ9L2lkbGUzICR7YmluZGlyfS9pZGxlJHtQWVRIT05fTUFKTUlOfSIKKworUEFDS0FHRVMgPSsgIiR7UE59LXB5dmVudiIKK0ZJTEVTXyR7UE59LXB5dmVudiArPSAiJHtiaW5kaXJ9L3B5dmVudi0ke1BZVEhPTl9NQUpNSU59ICR7YmluZGlyfS9weXZlbnYiCisKKyMgcGFja2FnZSBsaWJweXRob24zCitQQUNLQUdFUyA9KyAibGlicHl0aG9uMyBsaWJweXRob24zLXN0YXRpY2RldiIKK0ZJTEVTX2xpYnB5dGhvbjMgPSAiJHtsaWJkaXJ9L2xpYnB5dGhvbiouc28uKiIKK0ZJTEVTX2xpYnB5dGhvbjMtc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWctJHtQWVRIT05fQklOQUJJfS9saWJweXRob24ke1BZVEhPTl9CSU5BQkl9LmEiCitJTlNBTkVfU0tJUF8ke1BOfS1kZXYgKz0gImRldi1lbGYiCisKKyMgY2F0Y2ggYWxsIHRoZSByZXN0ICh1bnNvcnRlZCkKK1BBQ0tBR0VTICs9ICIke1BOfS1taXNjIgorUkRFUEVORFNfJHtQTn0tbWlzYyArPSAiJHtQTn0tY29yZSAke1BOfS1lbWFpbCAke1BOfS1jb2RlY3MgJHtQTn0tdGV4dHV0aWxzICR7UE59LWFyZ3BhcnNlIgorUkRFUEVORFNfJHtQTn0tbW9kdWxlcyArPSAiJHtQTn0tbWlzYyIKK0ZJTEVTXyR7UE59LW1pc2MgPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0iCisKKyMgY2F0Y2ggbWFucGFnZQorUEFDS0FHRVMgKz0gIiR7UE59LW1hbiIKK0ZJTEVTXyR7UE59LW1hbiA9ICIke2RhdGFkaXJ9L21hbiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob25fMi43LjExLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uXzIuNy4xMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjA2ZjE1My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob25fMi43LjExLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTczICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLmluYwotREVQRU5EUyA9ICJweXRob24tbmF0aXZlIGxpYmZmaSBiemlwMiBkYiBnZGJtIG9wZW5zc2wgcmVhZGxpbmUgc3FsaXRlMyB6bGliIgotUFIgPSAiJHtJTkNfUFJ9IgotCi1ESVNUUk9fU1JDX1VSSSA/PSAiZmlsZTovL3NpdGVjdXN0b21pemUucHkiCi1ESVNUUk9fU1JDX1VSSV9saW51eHN0ZGJhc2UgPSAiIgotU1JDX1VSSSArPSAiXAotICBmaWxlOi8vMDEtdXNlLXByb3Blci10b29scy1mb3ItY3Jvc3MtYnVpbGQucGF0Y2ggXAotICBmaWxlOi8vMDMtZml4LXRraW50ZXItZGV0ZWN0aW9uLnBhdGNoIFwKLSAgZmlsZTovLzA2LWF2b2lkX3Vzcl9saWJfdGVybWNhcF9wYXRoX2luX2xpbmtpbmcucGF0Y2ggXAotICAke0RJU1RST19TUkNfVVJJfSBcCi0gIGZpbGU6Ly9tdWx0aWxpYi5wYXRjaCBcCi0gIGZpbGU6Ly9jZ2lfcHkucGF0Y2ggXAotICBmaWxlOi8vc2V0dXBfcHlfc2tpcF9jcm9zc19pbXBvcnRfY2hlY2sucGF0Y2ggXAotICBmaWxlOi8vYWRkLW1kNW1vZHVsZS1zdXBwb3J0LnBhdGNoIFwKLSAgZmlsZTovL2hvc3RfaW5jbHVkZV9jb250YW1pbmF0aW9uLnBhdGNoIFwKLSAgZmlsZTovL2ZpeF9mb3JfdXNpbmdfZGlmZmVyZW50X2xpYmRpci5wYXRjaCBcCi0gIGZpbGU6Ly9zZXR1cHR3ZWFrcy5wYXRjaCBcCi0gIGZpbGU6Ly9jaGVjay1pZi10YXJnZXQtaXMtNjRiLW5vdC1ob3N0LnBhdGNoIFwKLSAgZmlsZTovL3NlYXJjaF9kYl9oX2luX2luY19kaXJzX2FuZF9hdm9pZF93YXJuaW5nLnBhdGNoIFwKLSAgZmlsZTovL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaCBcCi0gIGZpbGU6Ly9hdm9pZF93YXJuaW5nX2Zvcl9zdW5vc19zcGVjaWZpY19tb2R1bGUucGF0Y2ggXAotICBmaWxlOi8vcHl0aG9uLTIuNy4zLXJlbW92ZS1ic2RiLXJwYXRoLnBhdGNoIFwKLSAgZmlsZTovL2ZpeC1tYWtlZmlsZS1mb3ItcHRlc3QucGF0Y2ggXAotICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgZmlsZTovL3BhcmFsbGVsLW1ha2VpbnN0LWNyZWF0ZS1iaW5kaXIucGF0Y2ggXAotICBmaWxlOi8vdXNlX3N5c3Jvb3RfbmN1cnNlc19pbnN0ZWFkX29mX2hvc3QucGF0Y2ggXAotICBmaWxlOi8vYXZvaWRfcGFyYWxsZWxfbWFrZV9yYWNlc19vbl9wZ2VuLnBhdGNoIFwKLSAgZmlsZTovL2FkZC1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2ggXAotIgotCi1TID0gIiR7V09SS0RJUn0vUHl0aG9uLSR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scyBtdWx0aWxpYl9oZWFkZXIgcHl0aG9uLWRpciBweXRob25uYXRpdmUKLQotQ09ORklHVVJFT1BUUyArPSAiIC0td2l0aC1zeXN0ZW0tZmZpICIKLQotRVhUUkFfT0VDT05GICs9ICJhY19jdl9maWxlX19kZXZfcHRteD15ZXMgYWNfY3ZfZmlsZV9fZGV2X3B0Yz1ubyIKLQotZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLQlybSAtZiAke1N9L01ha2VmaWxlLm9yaWcKLSAgICAgICAgYXV0b3JlY29uZiAtV2Nyb3NzIC0tdmVyYm9zZSAtLWluc3RhbGwgLS1mb3JjZSAtLWV4Y2x1ZGU9YXV0b3BvaW50IC4uL1B5dGhvbi0ke1BWfS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpCi19Ci0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgICAgICMgcmVnZW5lcmF0ZSBwbGF0Zm9ybSBzcGVjaWZpYyBmaWxlcywgYmVjYXVzZSB0aGV5IGRlcGVuZCBvbiBzeXN0ZW0gaGVhZGVycwotICAgICAgICBjZCAke1N9L0xpYi9wbGF0LWxpbnV4MgotICAgICAgICBpbmNsdWRlPSR7U1RBR0lOR19JTkNESVJ9ICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3B5dGhvbiBcCi0gICAgICAgICAgICAgICAgJHtTfS9Ub29scy9zY3JpcHRzL2gycHkucHkgLWkgJyh1X2xvbmcpJyBcCi0gICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vZGxmY24uaCBcCi0gICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vbGludXgvY2Ryb20uaCBcCi0gICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vbmV0aW5ldC9pbi5oIFwKLSAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9zeXMvdHlwZXMuaAotICAgICAgICBzZWQgLWUgJ3MsJHtTVEFHSU5HX0RJUl9IT1NUfSwsZycgLWkgKi5weQotICAgICAgICBjZCAtCi0KLQkjIHJlbW92ZSBhbnkgYm9ndXMgTERfTElCUkFSWV9QQVRICi0Jc2VkIC1pIC1lIHMsUlVOU0hBUkVEPS4qLFJVTlNIQVJFRD0sIE1ha2VmaWxlCi0KLQlpZiBbICEgLWYgTWFrZWZpbGUub3JpZyBdOyB0aGVuCi0JCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZSBNYWtlZmlsZS5vcmlnCi0JZmkKLQlzZWQgLWkgLWUgJ3MjXkxERkxBR1M9LiojTERGTEFHUz0ke0xERkxBR1N9IC1MLiAtTCR7U1RBR0lOR19MSUJESVJ9I2cnIFwKLQkJLWUgJ3MsbGliZGlyPSR7bGliZGlyfSxsaWJkaXI9JHtTVEFHSU5HX0xJQkRJUn0sZycgXAotCQktZSAncyxsaWJleGVjZGlyPSR7bGliZXhlY2Rpcn0sbGliZXhlY2Rpcj0ke1NUQUdJTkdfRElSX0hPU1R9JHtsaWJleGVjZGlyfSxnJyBcCi0JCS1lICdzLF5MSUJESVI9LiosTElCRElSPSR7U1RBR0lOR19MSUJESVJ9LGcnIFwKLQkJLWUgJ3MsaW5jbHVkZWRpcj0ke2luY2x1ZGVkaXJ9LGluY2x1ZGVkaXI9JHtTVEFHSU5HX0lOQ0RJUn0sZycgXAotCQktZSAncyxeSU5DTFVERURJUj0uKixJTkNMVURFPSR7U1RBR0lOR19JTkNESVJ9LGcnIFwKLQkJLWUgJ3MsXkNPTkZJTkNMVURFRElSPS4qLENPTkZJTkNMVURFPSR7U1RBR0lOR19JTkNESVJ9LGcnIFwKLQkJTWFrZWZpbGUKLQkjIHNhdmUgY29weSBvZiBpdCBub3csIGJlY2F1c2UgaWYgd2UgZG8gaXQgaW4gZG9faW5zdGFsbCBhbmQgCi0JIyB0aGVuIGNhbGwgZG9faW5zdGFsbCB0d2ljZSB3ZSBnZXQgTWFrZWZpbGUub3JpZyA9PSBNYWtlZmlsZS5zeXNyb290Ci0JaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlIE1ha2VmaWxlLnN5c3Jvb3QKLQotCWV4cG9ydCBDUk9TU19DT01QSUxFPSIke1RBUkdFVF9QUkVGSVh9IgotCWV4cG9ydCBQWVRIT05CVUlMRERJUj0iJHtCfSIKLQotCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcGdlbiBcCi0JCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcHl0aG9uIFwKLQkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAotCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCi0JCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAotCQlCVUlMRF9TWVM9JHtCVUlMRF9TWVN9IEhPU1RfU1lTPSR7SE9TVF9TWVN9IFwKLQkJT1BUPSIke0NGTEFHU30iCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JIyBtYWtlIGluc3RhbGwgbmVlZHMgdGhlIG9yaWdpbmFsIE1ha2VmaWxlLCBvciBvdGhlcndpc2UgdGhlIGluY2x1ZXMgd291bGQKLQkjIGdvIHRvICR7RH0ke1NUQUdJTkcuLi59Ly4uLgotCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZS5vcmlnIE1ha2VmaWxlCi0KLQlleHBvcnQgQ1JPU1NfQ09NUElMRT0iJHtUQVJHRVRfUFJFRklYfSIKLQlleHBvcnQgUFlUSE9OQlVJTERESVI9IiR7Qn0iCi0KLQkjIEFmdGVyIHN3aXp6bGluZyB0aGUgbWFrZWZpbGUsIHdlIG5lZWQgdG8gcnVuIHRoZSBidWlsZCBhZ2Fpbi4KLQkjIGluc3RhbGwgY2FuIHJhY2Ugd2l0aCB0aGUgYnVpbGQgc28gd2UgaGF2ZSB0byBydW4gdGhpcyBmaXJzdCwgdGhlbiBpbnN0YWxsCi0Jb2VfcnVubWFrZSBIT1NUUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9wZ2VuIFwKLQkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9weXRob24gXAotCQlDUk9TU1BZVEhPTlBBVEg9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvIFwKLQkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAotCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCi0JCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAotCQlCVUlMRF9TWVM9JHtCVUlMRF9TWVN9IEhPU1RfU1lTPSR7SE9TVF9TWVN9IFwKLQkJREVTVERJUj0ke0R9IExJQkRJUj0ke2xpYmRpcn0KLQkKLQlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3BnZW4gXAotCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3B5dGhvbiBcCi0JCUNST1NTUFlUSE9OUEFUSD0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC8gXAotCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCi0JCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKLQkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCi0JCUJVSUxEX1NZUz0ke0JVSUxEX1NZU30gSE9TVF9TWVM9JHtIT1NUX1NZU30gXAotCQlERVNURElSPSR7RH0gTElCRElSPSR7bGliZGlyfSBpbnN0YWxsCi0KLQlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUuc3lzcm9vdCAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy9NYWtlZmlsZQotCi0JaWYgWyAtZSAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgXTsgdGhlbgotCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zaXRlY3VzdG9taXplLnB5ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0KLQlmaQotCi0Jb2VfbXVsdGlsaWJfaGVhZGVyIHB5dGhvbiR7UFlUSE9OX01BSk1JTn0vcHljb25maWcuaAotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgKCkgewotCWNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vcHl0aG9uMi43IFBZVEhPTkhPTUU9JyR7cHJlZml4fScgVEVSTUlORk9fRElSUz0nJHtzeXNjb25mZGlyfS90ZXJtaW5mbzovZXRjL3Rlcm1pbmZvOi91c3Ivc2hhcmUvdGVybWluZm86L3Vzci9zaGFyZS9taXNjL3Rlcm1pbmZvOi9saWIvdGVybWluZm8nCi19Ci0KLVNTVEFURV9TQ0FOX0ZJTEVTICs9ICJNYWtlZmlsZSIKLVBBQ0tBR0VfUFJFUFJPQ0VTU19GVU5DUyArPSAicHlfcGFja2FnZV9wcmVwcm9jZXNzIgotCi1weV9wYWNrYWdlX3ByZXByb2Nlc3MgKCkgewotCSMgY29weSBiYWNrIHRoZSBvbGQgTWFrZWZpbGUgdG8gZml4IHRhcmdldCBwYWNrYWdlCi0JaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vTWFrZWZpbGUub3JpZyAke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy9NYWtlZmlsZQotCi0JIyBSZW1vdmUgcmVmZXJlbmNlcyB0byBidWlsZG1hY2hpbmUgcGF0aHMgaW4gdGFyZ2V0IE1ha2VmaWxlIGFuZCBfc3lzY29uZmlnZGF0YQotCXNlZCAtaSAtZSAnczotLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9OjpnJyAtZSBzOictLXdpdGgtbGlidG9vbC1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSc6OmcgXAotCQkke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy9NYWtlZmlsZSBcCi0JCSR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3N5c2NvbmZpZ2RhdGEucHkKLX0KLQotcmVxdWlyZSBweXRob24tJHtQWVRIT05fTUFKTUlOfS1tYW5pZmVzdC5pbmMKLQotIyBtYW51YWwgZGVwZW5kZW5jeSBhZGRpdGlvbnMKLVJQUk9WSURFU18ke1BOfS1jb3JlID0gIiR7UE59IgotUlJFQ09NTUVORFNfJHtQTn0tY29yZSA9ICIke1BOfS1yZWFkbGluZSIKLVJSRUNPTU1FTkRTXyR7UE59LWNvcmVfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgbmF0aXZlc2RrLXB5dGhvbi1tb2R1bGVzIgotUlJFQ09NTUVORFNfJHtQTn0tY3J5cHQgPSAib3BlbnNzbCIKLQotIyBwYWNrYWdlIGxpYnB5dGhvbjIKLVBBQ0tBR0VTID0rICJsaWIke0JQTn0yIgotRklMRVNfbGliJHtCUE59MiA9ICIke2xpYmRpcn0vbGlicHl0aG9uKi5zby4qIgotCi0jIGNhdGNoIGFsbCB0aGUgcmVzdCAodW5zb3J0ZWQpCi1QQUNLQUdFUyArPSAiJHtQTn0tbWlzYyIKLUZJTEVTXyR7UE59LW1pc2MgPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0iCi1SREVQRU5EU18ke1BOfS1tb2R1bGVzICs9ICIke1BOfS1taXNjIgotUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiJHtQTn0tbW9kdWxlcyIKLSNpbmhlcml0IHB0ZXN0IGFmdGVyICJyZXF1aXJlIHB5dGhvbi0ke1BZVEhPTl9NQUpNSU59LW1hbmlmZXN0LmluYyIgc28gUEFDS0FHRVMgZG9lc24ndCBnZXQgb3ZlcndyaXR0ZW4KLWluaGVyaXQgcHRlc3QKLQotIyBUaGlzIG11c3QgY29tZSBhZnRlciBpbmhlcml0IHB0ZXN0IGZvciB0aGUgb3ZlcnJpZGUgdG8gdGFrZSBlZmZlY3QKLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0JY3AgJHtCfS9NYWtlZmlsZSAke0R9JHtQVEVTVF9QQVRIfQotCXNlZCAtZSBzOkxJQkRJUi9weXRob24vcHRlc3Q6JHtQVEVTVF9QQVRIfTpnIFwKLQkgLWUgczpMSUJESVI6JHtsaWJkaXJ9OmcgXAotCSAtaSAke0R9JHtQVEVTVF9QQVRIfS9ydW4tcHRlc3QKLX0KLQotIyBjYXRjaCBtYW5wYWdlCi1QQUNLQUdFUyArPSAiJHtQTn0tbWFuIgotRklMRVNfJHtQTn0tbWFuID0gIiR7ZGF0YWRpcn0vbWFuIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbl8yLjcuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob25fMi43LjEyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmZTM1ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob25fMi43LjEyLmJiCkBAIC0wLDAgKzEsMTcxIEBACityZXF1aXJlIHB5dGhvbi5pbmMKK0RFUEVORFMgPSAicHl0aG9uLW5hdGl2ZSBsaWJmZmkgYnppcDIgZGIgZ2RibSBvcGVuc3NsIHJlYWRsaW5lIHNxbGl0ZTMgemxpYiIKK1BSID0gIiR7SU5DX1BSfSIKKworRElTVFJPX1NSQ19VUkkgPz0gImZpbGU6Ly9zaXRlY3VzdG9taXplLnB5IgorRElTVFJPX1NSQ19VUklfbGludXhzdGRiYXNlID0gIiIKK1NSQ19VUkkgKz0gIlwKKyAgZmlsZTovLzAxLXVzZS1wcm9wZXItdG9vbHMtZm9yLWNyb3NzLWJ1aWxkLnBhdGNoIFwKKyAgZmlsZTovLzAzLWZpeC10a2ludGVyLWRldGVjdGlvbi5wYXRjaCBcCisgIGZpbGU6Ly8wNi1hdm9pZF91c3JfbGliX3Rlcm1jYXBfcGF0aF9pbl9saW5raW5nLnBhdGNoIFwKKyAgJHtESVNUUk9fU1JDX1VSSX0gXAorICBmaWxlOi8vbXVsdGlsaWIucGF0Y2ggXAorICBmaWxlOi8vY2dpX3B5LnBhdGNoIFwKKyAgZmlsZTovL3NldHVwX3B5X3NraXBfY3Jvc3NfaW1wb3J0X2NoZWNrLnBhdGNoIFwKKyAgZmlsZTovL2FkZC1tZDVtb2R1bGUtc3VwcG9ydC5wYXRjaCBcCisgIGZpbGU6Ly9ob3N0X2luY2x1ZGVfY29udGFtaW5hdGlvbi5wYXRjaCBcCisgIGZpbGU6Ly9maXhfZm9yX3VzaW5nX2RpZmZlcmVudF9saWJkaXIucGF0Y2ggXAorICBmaWxlOi8vc2V0dXB0d2Vha3MucGF0Y2ggXAorICBmaWxlOi8vY2hlY2staWYtdGFyZ2V0LWlzLTY0Yi1ub3QtaG9zdC5wYXRjaCBcCisgIGZpbGU6Ly9zZWFyY2hfZGJfaF9pbl9pbmNfZGlyc19hbmRfYXZvaWRfd2FybmluZy5wYXRjaCBcCisgIGZpbGU6Ly9hdm9pZF93YXJuaW5nX2Fib3V0X3RraW50ZXIucGF0Y2ggXAorICBmaWxlOi8vYXZvaWRfd2FybmluZ19mb3Jfc3Vub3Nfc3BlY2lmaWNfbW9kdWxlLnBhdGNoIFwKKyAgZmlsZTovL3B5dGhvbi0yLjcuMy1yZW1vdmUtYnNkYi1ycGF0aC5wYXRjaCBcCisgIGZpbGU6Ly9maXgtbWFrZWZpbGUtZm9yLXB0ZXN0LnBhdGNoIFwKKyAgZmlsZTovL3J1bi1wdGVzdCBcCisgIGZpbGU6Ly9wYXJhbGxlbC1tYWtlaW5zdC1jcmVhdGUtYmluZGlyLnBhdGNoIFwKKyAgZmlsZTovL3VzZV9zeXNyb290X25jdXJzZXNfaW5zdGVhZF9vZl9ob3N0LnBhdGNoIFwKKyAgZmlsZTovL2FkZC1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2ggXAorICBmaWxlOi8vcHl0aG9uLWZpeC1DVkUtMjAxNi0xMDAwMTEwLnBhdGNoIFwKKyIKKworUyA9ICIke1dPUktESVJ9L1B5dGhvbi0ke1BWfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgbXVsdGlsaWJfaGVhZGVyIHB5dGhvbi1kaXIgcHl0aG9ubmF0aXZlCisKK0NPTkZJR1VSRU9QVFMgKz0gIiAtLXdpdGgtc3lzdGVtLWZmaSAiCisKK0VYVFJBX09FQ09ORiArPSAiYWNfY3ZfZmlsZV9fZGV2X3B0bXg9eWVzIGFjX2N2X2ZpbGVfX2Rldl9wdGM9bm8iCisKK2RvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7CisJcm0gLWYgJHtTfS9NYWtlZmlsZS5vcmlnCisgICAgICAgIGF1dG9yZWNvbmYgLVdjcm9zcyAtLXZlcmJvc2UgLS1pbnN0YWxsIC0tZm9yY2UgLS1leGNsdWRlPWF1dG9wb2ludCAuLi9QeXRob24tJHtQVn0vTW9kdWxlcy9fY3R5cGVzL2xpYmZmaQorfQorCitkb19jb21waWxlKCkgeworICAgICAgICAjIHJlZ2VuZXJhdGUgcGxhdGZvcm0gc3BlY2lmaWMgZmlsZXMsIGJlY2F1c2UgdGhleSBkZXBlbmQgb24gc3lzdGVtIGhlYWRlcnMKKyAgICAgICAgY2QgJHtTfS9MaWIvcGxhdC1saW51eDIKKyAgICAgICAgaW5jbHVkZT0ke1NUQUdJTkdfSU5DRElSfSAke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9weXRob24gXAorICAgICAgICAgICAgICAgICR7U30vVG9vbHMvc2NyaXB0cy9oMnB5LnB5IC1pICcodV9sb25nKScgXAorICAgICAgICAgICAgICAgICR7U1RBR0lOR19JTkNESVJ9L2RsZmNuLmggXAorICAgICAgICAgICAgICAgICR7U1RBR0lOR19JTkNESVJ9L2xpbnV4L2Nkcm9tLmggXAorICAgICAgICAgICAgICAgICR7U1RBR0lOR19JTkNESVJ9L25ldGluZXQvaW4uaCBcCisgICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vc3lzL3R5cGVzLmgKKyAgICAgICAgc2VkIC1lICdzLCR7U1RBR0lOR19ESVJfSE9TVH0sLGcnIC1pICoucHkKKyAgICAgICAgY2QgLQorCisJIyByZW1vdmUgYW55IGJvZ3VzIExEX0xJQlJBUllfUEFUSAorCXNlZCAtaSAtZSBzLFJVTlNIQVJFRD0uKixSVU5TSEFSRUQ9LCBNYWtlZmlsZQorCisJaWYgWyAhIC1mIE1ha2VmaWxlLm9yaWcgXTsgdGhlbgorCQlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUgTWFrZWZpbGUub3JpZworCWZpCisJc2VkIC1pIC1lICdzI15MREZMQUdTPS4qI0xERkxBR1M9JHtMREZMQUdTfSAtTC4gLUwke1NUQUdJTkdfTElCRElSfSNnJyBcCisJCS1lICdzLGxpYmRpcj0ke2xpYmRpcn0sbGliZGlyPSR7U1RBR0lOR19MSUJESVJ9LGcnIFwKKwkJLWUgJ3MsbGliZXhlY2Rpcj0ke2xpYmV4ZWNkaXJ9LGxpYmV4ZWNkaXI9JHtTVEFHSU5HX0RJUl9IT1NUfSR7bGliZXhlY2Rpcn0sZycgXAorCQktZSAncyxeTElCRElSPS4qLExJQkRJUj0ke1NUQUdJTkdfTElCRElSfSxnJyBcCisJCS1lICdzLGluY2x1ZGVkaXI9JHtpbmNsdWRlZGlyfSxpbmNsdWRlZGlyPSR7U1RBR0lOR19JTkNESVJ9LGcnIFwKKwkJLWUgJ3MsXklOQ0xVREVESVI9LiosSU5DTFVERT0ke1NUQUdJTkdfSU5DRElSfSxnJyBcCisJCS1lICdzLF5DT05GSU5DTFVERURJUj0uKixDT05GSU5DTFVERT0ke1NUQUdJTkdfSU5DRElSfSxnJyBcCisJCU1ha2VmaWxlCisJIyBzYXZlIGNvcHkgb2YgaXQgbm93LCBiZWNhdXNlIGlmIHdlIGRvIGl0IGluIGRvX2luc3RhbGwgYW5kIAorCSMgdGhlbiBjYWxsIGRvX2luc3RhbGwgdHdpY2Ugd2UgZ2V0IE1ha2VmaWxlLm9yaWcgPT0gTWFrZWZpbGUuc3lzcm9vdAorCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZSBNYWtlZmlsZS5zeXNyb290CisKKwlleHBvcnQgQ1JPU1NfQ09NUElMRT0iJHtUQVJHRVRfUFJFRklYfSIKKwlleHBvcnQgUFlUSE9OQlVJTERESVI9IiR7Qn0iCisKKwlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3BnZW4gXAorCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3B5dGhvbiBcCisJCVNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKKwkJU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAorCQlTVEFHSU5HX0JBU0VMSUJESVI9JHtTVEFHSU5HX0JBU0VMSUJESVJ9IFwKKwkJT1BUPSIke0NGTEFHU30iCit9CisKK2RvX2luc3RhbGwoKSB7CisJIyBtYWtlIGluc3RhbGwgbmVlZHMgdGhlIG9yaWdpbmFsIE1ha2VmaWxlLCBvciBvdGhlcndpc2UgdGhlIGluY2x1ZXMgd291bGQKKwkjIGdvIHRvICR7RH0ke1NUQUdJTkcuLi59Ly4uLgorCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZS5vcmlnIE1ha2VmaWxlCisKKwlleHBvcnQgQ1JPU1NfQ09NUElMRT0iJHtUQVJHRVRfUFJFRklYfSIKKwlleHBvcnQgUFlUSE9OQlVJTERESVI9IiR7Qn0iCisKKwkjIEFmdGVyIHN3aXp6bGluZyB0aGUgbWFrZWZpbGUsIHdlIG5lZWQgdG8gcnVuIHRoZSBidWlsZCBhZ2Fpbi4KKwkjIGluc3RhbGwgY2FuIHJhY2Ugd2l0aCB0aGUgYnVpbGQgc28gd2UgaGF2ZSB0byBydW4gdGhpcyBmaXJzdCwgdGhlbiBpbnN0YWxsCisJb2VfcnVubWFrZSBIT1NUUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9wZ2VuIFwKKwkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9weXRob24gXAorCQlDUk9TU1BZVEhPTlBBVEg9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvIFwKKwkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAorCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCisJCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAorCQlERVNURElSPSR7RH0gTElCRElSPSR7bGliZGlyfQorCQorCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcGdlbiBcCisJCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcHl0aG9uIFwKKwkJQ1JPU1NQWVRIT05QQVRIPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkLyBcCisJCVNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKKwkJU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAorCQlTVEFHSU5HX0JBU0VMSUJESVI9JHtTVEFHSU5HX0JBU0VMSUJESVJ9IFwKKwkJREVTVERJUj0ke0R9IExJQkRJUj0ke2xpYmRpcn0gaW5zdGFsbAorCisJaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlLnN5c3Jvb3QgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcvTWFrZWZpbGUKKworCWlmIFsgLWUgJHtXT1JLRElSfS9zaXRlY3VzdG9taXplLnB5IF07IHRoZW4KKwkJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc2l0ZWN1c3RvbWl6ZS5weSAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59CisJZmkKKworCW9lX211bHRpbGliX2hlYWRlciBweXRob24ke1BZVEhPTl9NQUpNSU59L3B5Y29uZmlnLmgKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrICgpIHsKKwljcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L3B5dGhvbjIuNyBQWVRIT05IT01FPScke3ByZWZpeH0nIFRFUk1JTkZPX0RJUlM9JyR7c3lzY29uZmRpcn0vdGVybWluZm86L2V0Yy90ZXJtaW5mbzovdXNyL3NoYXJlL3Rlcm1pbmZvOi91c3Ivc2hhcmUvbWlzYy90ZXJtaW5mbzovbGliL3Rlcm1pbmZvJworfQorCitTU1RBVEVfU0NBTl9GSUxFUyArPSAiTWFrZWZpbGUiCitQQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gInB5X3BhY2thZ2VfcHJlcHJvY2VzcyIKKworcHlfcGFja2FnZV9wcmVwcm9jZXNzICgpIHsKKwkjIGNvcHkgYmFjayB0aGUgb2xkIE1ha2VmaWxlIHRvIGZpeCB0YXJnZXQgcGFja2FnZQorCWluc3RhbGwgLW0gMDY0NCAke0J9L01ha2VmaWxlLm9yaWcgJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcvTWFrZWZpbGUKKworCSMgUmVtb3ZlIHJlZmVyZW5jZXMgdG8gYnVpbGRtYWNoaW5lIHBhdGhzIGluIHRhcmdldCBNYWtlZmlsZSBhbmQgX3N5c2NvbmZpZ2RhdGEKKwlzZWQgLWkgLWUgJ3M6LS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfTo6ZycgLWUgczonLS13aXRoLWxpYnRvb2wtc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0nOjpnIFwKKwkJJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcvTWFrZWZpbGUgXAorCQkke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zeXNjb25maWdkYXRhLnB5CisgICAgcHl0aG9uIC1tIHB5X2NvbXBpbGUgJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc3lzY29uZmlnZGF0YS5weQorfQorCityZXF1aXJlIHB5dGhvbi0ke1BZVEhPTl9NQUpNSU59LW1hbmlmZXN0LmluYworCisjIG1hbnVhbCBkZXBlbmRlbmN5IGFkZGl0aW9ucworUlBST1ZJREVTXyR7UE59LWNvcmUgPSAiJHtQTn0iCitSUkVDT01NRU5EU18ke1BOfS1jb3JlID0gIiR7UE59LXJlYWRsaW5lIgorUlJFQ09NTUVORFNfJHtQTn0tY29yZV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBuYXRpdmVzZGstcHl0aG9uLW1vZHVsZXMiCitSUkVDT01NRU5EU18ke1BOfS1jcnlwdCA9ICJvcGVuc3NsIgorCisjIHBhY2thZ2UgbGlicHl0aG9uMgorUEFDS0FHRVMgPSsgImxpYiR7QlBOfTIiCitGSUxFU19saWIke0JQTn0yID0gIiR7bGliZGlyfS9saWJweXRob24qLnNvLioiCisKKyMgY2F0Y2ggYWxsIHRoZSByZXN0ICh1bnNvcnRlZCkKK1BBQ0tBR0VTICs9ICIke1BOfS1taXNjIgorRklMRVNfJHtQTn0tbWlzYyA9ICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfSIKK1JERVBFTkRTXyR7UE59LW1vZHVsZXMgKz0gIiR7UE59LW1pc2MiCitSREVQRU5EU18ke1BOfS1wdGVzdCA9ICIke1BOfS1tb2R1bGVzIgorI2luaGVyaXQgcHRlc3QgYWZ0ZXIgInJlcXVpcmUgcHl0aG9uLSR7UFlUSE9OX01BSk1JTn0tbWFuaWZlc3QuaW5jIiBzbyBQQUNLQUdFUyBkb2Vzbid0IGdldCBvdmVyd3JpdHRlbgoraW5oZXJpdCBwdGVzdAorCisjIFRoaXMgbXVzdCBjb21lIGFmdGVyIGluaGVyaXQgcHRlc3QgZm9yIHRoZSBvdmVycmlkZSB0byB0YWtlIGVmZmVjdAorZG9faW5zdGFsbF9wdGVzdCgpIHsKKwljcCAke0J9L01ha2VmaWxlICR7RH0ke1BURVNUX1BBVEh9CisJc2VkIC1lIHM6TElCRElSL3B5dGhvbi9wdGVzdDoke1BURVNUX1BBVEh9OmcgXAorCSAtZSBzOkxJQkRJUjoke2xpYmRpcn06ZyBcCisJIC1pICR7RH0ke1BURVNUX1BBVEh9L3J1bi1wdGVzdAorfQorCisjIGNhdGNoIG1hbnBhZ2UKK1BBQ0tBR0VTICs9ICIke1BOfS1tYW4iCitGSUxFU18ke1BOfS1tYW4gPSAiJHtkYXRhZGlyfS9tYW4iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L25hdGl2ZXNkay1xZW11LWhlbHBlcl8xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvbmF0aXZlc2RrLXFlbXUtaGVscGVyXzEuMC5iYgppbmRleCA1MWQxYzU5Li45NDNjYTVmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvbmF0aXZlc2RrLXFlbXUtaGVscGVyXzEuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvbmF0aXZlc2RrLXFlbXUtaGVscGVyXzEuMC5iYgpAQCAtMSwxNSArMSwxNiBAQAogU1VNTUFSWSA9ICJRZW11IGhlbHBlciBzY3JpcHRzIgogTElDRU5TRSA9ICJHUEx2MiIKLVJERVBFTkRTXyR7UE59ID0gIm5hdGl2ZXNkay1xZW11IgorUkRFUEVORFNfJHtQTn0gPSAibmF0aXZlc2RrLXFlbXUgbmF0aXZlc2RrLXB5dGhvbjMtc3VicHJvY2VzcyBcCisgICAgICAgICAgICAgICAgICBuYXRpdmVzZGstcHl0aG9uMy1zaGVsbCBuYXRpdmVzZGstcHl0aG9uMy1mY250bCBcCisgICAgICAgICAgICAgICAgIgorCiBQUiA9ICJyOSIKIAotCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1dPUktESVJ9L3R1bmN0bC5jO2VuZGxpbmU9NDttZDU9ZmYzYTA5OTk2YmM1ZmZmNmJjNWQ0ZTBiNGMyOGY5OTkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vJHtDT1JFQkFTRX0vc2NyaXB0cy9ydW5xZW11O2VuZGxpbmU9MTg7bWQ1PTc3ZmJlNDQyYTg4YjFiY2RjMjljM2JhNjc3MzNiMjFiIgorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vJHtDT1JFQkFTRX0vc2NyaXB0cy9ydW5xZW11O2VuZGxpbmU9MTk7bWQ1PWE4YWQxOTA1YzcwOWEyZGVhYTA1NzYwOGViYWY3MDVhIgogCiAKIFNSQ19VUkkgPSAiZmlsZTovLyR7Q09SRUJBU0V9L3NjcmlwdHMvcnVucWVtdSBcCi0gICAgICAgICAgIGZpbGU6Ly8ke0NPUkVCQVNFfS9zY3JpcHRzL3J1bnFlbXUtaW50ZXJuYWwgXAogICAgICAgICAgICBmaWxlOi8vJHtDT1JFQkFTRX0vc2NyaXB0cy9ydW5xZW11LWFkZHB0YWJsZTJpbWFnZSBcCiAgICAgICAgICAgIGZpbGU6Ly8ke0NPUkVCQVNFfS9zY3JpcHRzL3J1bnFlbXUtZ2VuLXRhcGRldnMgXAogICAgICAgICAgICBmaWxlOi8vJHtDT1JFQkFTRX0vc2NyaXB0cy9ydW5xZW11LWlmdXAgXApAQCAtMTgsNyArMTksNiBAQAogICAgICAgICAgICBmaWxlOi8vJHtDT1JFQkFTRX0vc2NyaXB0cy9ydW5xZW11LWV4dHJhY3Qtc2RrIFwKICAgICAgICAgICAgZmlsZTovLyR7Q09SRUJBU0V9L3NjcmlwdHMvcnVucWVtdS1leHBvcnQtcm9vdGZzIFwKICAgICAgICAgICAgZmlsZTovL3R1bmN0bC5jIFwKLSAgICAgICAgICAgZmlsZTovL3JhdzJmbGFzaC5jIFwKICAgICAgICAgICAiCiAKIFMgPSAiJHtXT1JLRElSfSIKQEAgLTI3LDggKzI3LDYgQEAKIAogZG9fY29tcGlsZSgpIHsKIAkke0NDfSB0dW5jdGwuYyAtbyB0dW5jdGwKLQkke0NDfSByYXcyZmxhc2guYyAtbyByYXcyZmxhc2guc3BpdHoKLQkke0NDfSByYXcyZmxhc2guYyAtbyBmbGFzaDJyYXcuc3BpdHogLURmbGFzaDJyYXcKIH0KIAogZG9faW5zdGFsbCgpIHsKQEAgLTM2LDEyICszNCw0IEBACiAJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0ke0NPUkVCQVNFfS9zY3JpcHRzL29lLSogJHtEfSR7YmluZGlyfS8KIAlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfSR7Q09SRUJBU0V9L3NjcmlwdHMvcnVucWVtdSogJHtEfSR7YmluZGlyfS8KIAlpbnN0YWxsIHR1bmN0bCAke0R9JHtiaW5kaXJ9LwotCWluc3RhbGwgcmF3MmZsYXNoLnNwaXR6ICR7RH0ke2JpbmRpcn0vCi0JaW5zdGFsbCBmbGFzaDJyYXcuc3BpdHogJHtEfSR7YmluZGlyfS8KLQlsbiAtZnMgcmF3MmZsYXNoLnNwaXR6ICR7RH0ke2JpbmRpcn0vcmF3MmZsYXNoLmFraXRhCi0JbG4gLWZzIHJhdzJmbGFzaC5zcGl0eiAke0R9JHtiaW5kaXJ9L3JhdzJmbGFzaC5ib3J6b2kKLQlsbiAtZnMgcmF3MmZsYXNoLnNwaXR6ICR7RH0ke2JpbmRpcn0vcmF3MmZsYXNoLnRlcnJpZXIKLQlsbiAtZnMgZmxhc2gycmF3LnNwaXR6ICR7RH0ke2JpbmRpcn0vZmxhc2gycmF3LmFraXRhCi0JbG4gLWZzIGZsYXNoMnJhdy5zcGl0eiAke0R9JHtiaW5kaXJ9L2ZsYXNoMnJhdy5ib3J6b2kKLQlsbiAtZnMgZmxhc2gycmF3LnNwaXR6ICR7RH0ke2JpbmRpcn0vZmxhc2gycmF3LnRlcnJpZXIKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LWhlbHBlci9yYXcyZmxhc2guYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LWhlbHBlci9yYXcyZmxhc2guYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTlmYWY2Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS1oZWxwZXIvcmF3MmZsYXNoLmMKKysrIC9kZXYvbnVsbApAQCAtMSwzNzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAwNiBPcGVuZWRIYW5kIEx0ZC4KLSAqCi0gKiBUaGlzIGZpbGUgaXMgbGljZW5zZWQgdW5kZXIgR05VIEdQTCB2Mi4KLSAqLwotI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2luY2x1ZGUgPHN0ZGludC5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0KLSNkZWZpbmUgVEZSKF8pCQlfCi0jZGVmaW5lIFZFUkJPU0UKLSNkZWZpbmUgUEJBUl9MRU4JNDAKLQotI2RlZmluZSBQQVJUSVRJT05fU1RBUlQJMHgwMDcwMDAwMAotCi1zdGF0aWMgY29uc3QgaW50IGVjY19wb3M4W10gPSB7Ci0JMHgwLCAweDEsIDB4MiwKLX07Ci0KLXN0YXRpYyBjb25zdCBpbnQgZWNjX3BvczE2W10gPSB7Ci0JMHgwLCAweDEsIDB4MiwgMHgzLCAweDYsIDB4NywKLX07Ci0KLXN0YXRpYyBjb25zdCBpbnQgZWNjX3BvczY0W10gPSB7Ci0JMHgyOCwgMHgyOSwgMHgyYSwgMHgyYiwgMHgyYywgMHgyZCwgMHgyZSwgMHgyZiwKLQkweDMwLCAweDMxLCAweDMyLCAweDMzLCAweDM0LCAweDM1LCAweDM2LCAweDM3LAotCTB4MzgsIDB4MzksIDB4M2EsIDB4M2IsIDB4M2MsIDB4M2QsIDB4M2UsIDB4M2YsCi19OwotCi1zdGF0aWMgY29uc3QgaW50IGVjY19ha2l0YVtdID0gewotCTB4MDUsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MDYsIDB4MDcsIDB4MTUsIDB4MTEsCi0JMHgxMiwgMHgxMywgMHgxNiwgMHgxNywgMHgyNSwgMHgyMSwgMHgyMiwgMHgyMywKLQkweDI2LCAweDI3LCAweDM1LCAweDMxLCAweDMyLCAweDMzLCAweDM2LCAweDM3LAotfTsKLQotc3RydWN0IGpmZnNfbWFya2VyX3MgewotCWludCBwb3M7Ci0JdWludDhfdCB2YWx1ZTsKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgamZmc19tYXJrZXJfcyBmcmVlX3BvczhbXSA9IHsKLQl7IDB4MDMsIDB4ZmYgfSwgeyAweDA0LCAweGZmIH0sIHsgMHgwNiwgMHg4NSB9LCB7IDB4MDcsIDB4MTkgfSwKLQl7IC0xIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGpmZnNfbWFya2VyX3MgZnJlZV9wb3MxNltdID0gewotCXsgMHgwOCwgMHg4NSB9LCB7IDB4MDksIDB4MTkgfSwgeyAweDBhLCAweDAzIH0sIHsgMHgwYiwgMHgyMCB9LAotCXsgMHgwYywgMHgwOCB9LCB7IDB4MGQsIDB4MDAgfSwgeyAweDBlLCAweDAwIH0sIHsgMHgwZiwgMHgwMCB9LAotCXsgLTEgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgamZmc19tYXJrZXJfcyBmcmVlX3BvczY0W10gPSB7Ci0JeyAweDAyLCAweGZmIH0sIHsgMHgwMywgMHhmZiB9LCB7IDB4MDQsIDB4ZmYgfSwgeyAweDA1LCAweGZmIH0sCi0JeyAweDA2LCAweGZmIH0sIHsgMHgwNywgMHhmZiB9LCB7IDB4MDgsIDB4ZmYgfSwgeyAweDA5LCAweGZmIH0sCi0JeyAweDBhLCAweGZmIH0sIHsgMHgwYiwgMHhmZiB9LCB7IDB4MGMsIDB4ZmYgfSwgeyAweDBkLCAweGZmIH0sCi0JeyAweDBlLCAweGZmIH0sIHsgMHgwZiwgMHhmZiB9LCB7IDB4MTAsIDB4ODUgfSwgeyAweDExLCAweDE5IH0sCi0JeyAweDEyLCAweDAzIH0sIHsgMHgxMywgMHgyMCB9LCB7IDB4MTQsIDB4MDggfSwgeyAweDE1LCAweDAwIH0sCi0JeyAweDE2LCAweDAwIH0sIHsgMHgxNywgMHgwMCB9LCB7IDB4MTgsIDB4ZmYgfSwgeyAweDE5LCAweGZmIH0sCi0JeyAweDFhLCAweGZmIH0sIHsgMHgxYiwgMHhmZiB9LCB7IDB4MWMsIDB4ZmYgfSwgeyAweDFkLCAweGZmIH0sCi0JeyAweDFlLCAweGZmIH0sIHsgMHgxZiwgMHhmZiB9LCB7IDB4MjAsIDB4ZmYgfSwgeyAweDIxLCAweGZmIH0sCi0JeyAweDIyLCAweGZmIH0sIHsgMHgyMywgMHhmZiB9LCB7IDB4MjQsIDB4ZmYgfSwgeyAweDI1LCAweGZmIH0sCi0JeyAweDI2LCAweGZmIH0sIHsgMHgyNywgMHhmZiB9LAotCXsgLTEgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgamZmc19tYXJrZXJfcyBmcmVlX2FraXRhW10gPSB7Ci0JeyAweDA4LCAweDg1IH0sIHsgMHgwOSwgMHgxOSB9LCB7IDB4MGEsIDB4MDMgfSwgeyAweDBiLCAweDIwIH0sCi0JeyAweDBjLCAweDA4IH0sIHsgMHgwZCwgMHgwMCB9LCB7IDB4MGUsIDB4MDAgfSwgeyAweDBmLCAweDAwIH0sCi0JeyAweDEwLCAweGZmIH0sCi0JeyAtMSB9LAotfTsKLQotI2RlZmluZSBMRU4oYXJyYXkpCShzaXplb2YoYXJyYXkpIC8gc2l6ZW9mKCphcnJheSkpCi0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZWNjX3N0eWxlX3MgewotCWludCBwYWdlX3NpemU7Ci0JaW50IG9vYl9zaXplOwotCWludCBlY2NieXRlczsKLQlpbnQgZWNjc2l6ZTsKLQljb25zdCBpbnQgKmVjY3BvczsKLQlpbnQgcm9tc2l6ZTsKLQljb25zdCBzdHJ1Y3QgamZmc19tYXJrZXJfcyAqZnJlZXBvczsKLX0gc3BpdHogPSB7Ci0JMHgyMDAsIDB4MTAsIDB4MTAwLCBMRU4oZWNjX3BvczE2KSwgZWNjX3BvczE2LCAweDAxMDAwMDAwLCBmcmVlX3BvczE2Ci19LCBha2l0YSA9IHsKLQkweDgwMCwgMHg0MCwgMHgxMDAsIExFTihlY2NfYWtpdGEpLCBlY2NfYWtpdGEsIDB4MDgwMDAwMDAsIGZyZWVfYWtpdGEKLX0sIGJvcnpvaSA9IHsKLQkweDgwMCwgMHg0MCwgMHgxMDAsIExFTihlY2NfYWtpdGEpLCBlY2NfYWtpdGEsIDB4MDgwMDAwMDAsIGZyZWVfYWtpdGEKLX0sIHRlcnJpZXIgPSB7Ci0JMHg4MDAsIDB4NDAsIDB4MTAwLCBMRU4oZWNjX2FraXRhKSwgZWNjX2FraXRhLCAweDA4MDAwMDAwLCBmcmVlX2FraXRhCi19OwotCi1zdHJ1Y3QgZWNjX3N0YXRlX3MgewotCWludCBjb3VudDsKLQl1aW50OF90IGNwOwotCXVpbnQ4X3QgbHBbMl07Ci0JY29uc3Qgc3RydWN0IGVjY19zdHlsZV9zICpzdHlsZTsKLX07Ci0KLSNpZm5kZWYgZmxhc2gycmF3Ci0vKgotICogUHJlLWNhbGN1bGF0ZWQgMjU2LXdheSAxIGJ5dGUgY29sdW1uIHBhcml0eS4gIFRhYmxlIGJvcnJvd2VkIGZyb20gTGludXguCi0gKi8KLXN0YXRpYyBjb25zdCB1aW50OF90IGVjY19wcmVjYWxjX3RhYmxlW10gPSB7Ci0JMHgwMCwgMHg1NSwgMHg1NiwgMHgwMywgMHg1OSwgMHgwYywgMHgwZiwgMHg1YSwKLQkweDVhLCAweDBmLCAweDBjLCAweDU5LCAweDAzLCAweDU2LCAweDU1LCAweDAwLAotCTB4NjUsIDB4MzAsIDB4MzMsIDB4NjYsIDB4M2MsIDB4NjksIDB4NmEsIDB4M2YsCi0JMHgzZiwgMHg2YSwgMHg2OSwgMHgzYywgMHg2NiwgMHgzMywgMHgzMCwgMHg2NSwKLQkweDY2LCAweDMzLCAweDMwLCAweDY1LCAweDNmLCAweDZhLCAweDY5LCAweDNjLAotCTB4M2MsIDB4NjksIDB4NmEsIDB4M2YsIDB4NjUsIDB4MzAsIDB4MzMsIDB4NjYsCi0JMHgwMywgMHg1NiwgMHg1NSwgMHgwMCwgMHg1YSwgMHgwZiwgMHgwYywgMHg1OSwKLQkweDU5LCAweDBjLCAweDBmLCAweDVhLCAweDAwLCAweDU1LCAweDU2LCAweDAzLAotCTB4NjksIDB4M2MsIDB4M2YsIDB4NmEsIDB4MzAsIDB4NjUsIDB4NjYsIDB4MzMsCi0JMHgzMywgMHg2NiwgMHg2NSwgMHgzMCwgMHg2YSwgMHgzZiwgMHgzYywgMHg2OSwKLQkweDBjLCAweDU5LCAweDVhLCAweDBmLCAweDU1LCAweDAwLCAweDAzLCAweDU2LAotCTB4NTYsIDB4MDMsIDB4MDAsIDB4NTUsIDB4MGYsIDB4NWEsIDB4NTksIDB4MGMsCi0JMHgwZiwgMHg1YSwgMHg1OSwgMHgwYywgMHg1NiwgMHgwMywgMHgwMCwgMHg1NSwKLQkweDU1LCAweDAwLCAweDAzLCAweDU2LCAweDBjLCAweDU5LCAweDVhLCAweDBmLAotCTB4NmEsIDB4M2YsIDB4M2MsIDB4NjksIDB4MzMsIDB4NjYsIDB4NjUsIDB4MzAsCi0JMHgzMCwgMHg2NSwgMHg2NiwgMHgzMywgMHg2OSwgMHgzYywgMHgzZiwgMHg2YSwKLQkweDZhLCAweDNmLCAweDNjLCAweDY5LCAweDMzLCAweDY2LCAweDY1LCAweDMwLAotCTB4MzAsIDB4NjUsIDB4NjYsIDB4MzMsIDB4NjksIDB4M2MsIDB4M2YsIDB4NmEsCi0JMHgwZiwgMHg1YSwgMHg1OSwgMHgwYywgMHg1NiwgMHgwMywgMHgwMCwgMHg1NSwKLQkweDU1LCAweDAwLCAweDAzLCAweDU2LCAweDBjLCAweDU5LCAweDVhLCAweDBmLAotCTB4MGMsIDB4NTksIDB4NWEsIDB4MGYsIDB4NTUsIDB4MDAsIDB4MDMsIDB4NTYsCi0JMHg1NiwgMHgwMywgMHgwMCwgMHg1NSwgMHgwZiwgMHg1YSwgMHg1OSwgMHgwYywKLQkweDY5LCAweDNjLCAweDNmLCAweDZhLCAweDMwLCAweDY1LCAweDY2LCAweDMzLAotCTB4MzMsIDB4NjYsIDB4NjUsIDB4MzAsIDB4NmEsIDB4M2YsIDB4M2MsIDB4NjksCi0JMHgwMywgMHg1NiwgMHg1NSwgMHgwMCwgMHg1YSwgMHgwZiwgMHgwYywgMHg1OSwKLQkweDU5LCAweDBjLCAweDBmLCAweDVhLCAweDAwLCAweDU1LCAweDU2LCAweDAzLAotCTB4NjYsIDB4MzMsIDB4MzAsIDB4NjUsIDB4M2YsIDB4NmEsIDB4NjksIDB4M2MsCi0JMHgzYywgMHg2OSwgMHg2YSwgMHgzZiwgMHg2NSwgMHgzMCwgMHgzMywgMHg2NiwKLQkweDY1LCAweDMwLCAweDMzLCAweDY2LCAweDNjLCAweDY5LCAweDZhLCAweDNmLAotCTB4M2YsIDB4NmEsIDB4NjksIDB4M2MsIDB4NjYsIDB4MzMsIDB4MzAsIDB4NjUsCi0JMHgwMCwgMHg1NSwgMHg1NiwgMHgwMywgMHg1OSwgMHgwYywgMHgwZiwgMHg1YSwKLQkweDVhLCAweDBmLCAweDBjLCAweDU5LCAweDAzLCAweDU2LCAweDU1LCAweDAwLAotfTsKLQotLyogVXBkYXRlIEVDQyBwYXJpdHkgY291bnQgKi8KLXN0YXRpYyBpbmxpbmUgdWludDhfdCBlY2NfZGlnZXN0KHN0cnVjdCBlY2Nfc3RhdGVfcyAqcywgdWludDhfdCBzYW1wbGUpIHsKLQl1aW50OF90IGlkeCA9IGVjY19wcmVjYWxjX3RhYmxlW3NhbXBsZV07Ci0KLQlzLT5jcCBePSBpZHggJiAweDNmOwotCWlmIChpZHggJiAweDQwKSB7Ci0JCXMtPmxwWzBdIF49IH4ocy0+Y291bnQgJiAweGZmKTsKLQkJcy0+bHBbMV0gXj0gcy0+Y291bnQgJiAweGZmOwotCX0KLQlzLT5jb3VudCArKzsKLQotCXJldHVybiBzYW1wbGU7Ci19Ci0KLXN0YXRpYyB2b2lkIGJ1ZmZlcl9kaWdlc3Qoc3RydWN0IGVjY19zdGF0ZV9zICplY2MsCi0JCWNvbnN0IHVpbnQ4X3QgKmJ1ZiwgdWludDhfdCAqb3V0KSB7Ci0JaW50IGksIGxwX2FbMl07Ci0KLQllY2MtPmxwWzBdID0gMHgwMDsKLQllY2MtPmxwWzFdID0gMHgwMDsKLQllY2MtPmNwID0gMHgwMDsKLQllY2MtPmNvdW50ID0gMDsKLQlmb3IgKGkgPSAwOyBpIDwgZWNjLT5zdHlsZS0+ZWNjYnl0ZXM7IGkgKyspCi0JCWVjY19kaWdlc3QoZWNjLCBidWZbaV0pOwotCi0jIGRlZmluZSBCU0hSKGJ5dGUsIGZyb20sIHRvKQkoKGVjYy0+bHBbYnl0ZV0gPj4gKGZyb20gLSB0bykpICYgKDEgPDwgdG8pKQotCWxwX2FbMF0gPQotCQlCU0hSKDAsIDQsIDApIHwgQlNIUigwLCA1LCAyKSB8Ci0JCUJTSFIoMCwgNiwgNCkgfCBCU0hSKDAsIDcsIDYpIHwKLQkJQlNIUigxLCA0LCAxKSB8IEJTSFIoMSwgNSwgMykgfAotCQlCU0hSKDEsIDYsIDUpIHwgQlNIUigxLCA3LCA3KTsKLQotIyBkZWZpbmUgQlNITChieXRlLCBmcm9tLCB0bykJKChlY2MtPmxwW2J5dGVdIDw8ICh0byAtIGZyb20pKSAmICgxIDw8IHRvKSkKLQlscF9hWzFdID0KLQkJQlNITCgwLCAwLCAwKSB8IEJTSEwoMCwgMSwgMikgfAotCQlCU0hMKDAsIDIsIDQpIHwgQlNITCgwLCAzLCA2KSB8Ci0JCUJTSEwoMSwgMCwgMSkgfCBCU0hMKDEsIDEsIDMpIHwKLQkJQlNITCgxLCAyLCA1KSB8IEJTSEwoMSwgMywgNyk7Ci0KLQlvdXRbMF0gPSB+bHBfYVsxXTsKLQlvdXRbMV0gPSB+bHBfYVswXTsKLQlvdXRbMl0gPSAofmVjYy0+Y3AgPDwgMikgfCAweDAzOwotfQotCi1zdGF0aWMgdm9pZCBqZmZzMl9mb3JtYXQoY29uc3Qgc3RydWN0IGVjY19zdGF0ZV9zICplY2MsIHVpbnQ4X3Qgb29iW10pIHsKLQljb25zdCBzdHJ1Y3QgamZmc19tYXJrZXJfcyAqYnl0ZTsKLQlmb3IgKGJ5dGUgPSBlY2MtPnN0eWxlLT5mcmVlcG9zOyBieXRlLT5wb3MgPj0gMDsgYnl0ZSArKykKLQkJb29iW2J5dGUtPnBvc10gPSBieXRlLT52YWx1ZTsKLX0KLQotc3RhdGljIHZvaWQgYnVmZmVyX2ZpbGwoY29uc3Qgc3RydWN0IGVjY19zdGF0ZV9zICplY2MsIHVpbnQ4X3QgYnVmZmVyW10sCi0JCWludCAqbGVuLCBpbnQgKnBhcnRpdGlvbiwgaW50IGNvdW50LCB1aW50OF90IGpmZnNfYnVmZmVyW10pIHsKLQlpbnQgcmV0OwotCi0Jc3dpdGNoICgqcGFydGl0aW9uKSB7Ci0JY2FzZSAwOgotCQlpZiAoY291bnQgPCBQQVJUSVRJT05fU1RBUlQpIHsKLQkJCW1lbWNweShidWZmZXIsIGpmZnNfYnVmZmVyICsgY291bnQsCi0JCQkJCWVjYy0+c3R5bGUtPmVjY2J5dGVzKTsKLQkJCSpsZW4gPSBlY2MtPnN0eWxlLT5lY2NieXRlczsKLQkJCWJyZWFrOwotCQl9Ci0JCSpwYXJ0aXRpb24gPSAxOwotCWNhc2UgMToKLQkJaWYgKGNvdW50IC0gUEFSVElUSU9OX1NUQVJUIDwgUEFSVElUSU9OX1NUQVJUKSB7Ci0JCQltZW1jcHkoYnVmZmVyLCBqZmZzX2J1ZmZlciArIGNvdW50IC0gUEFSVElUSU9OX1NUQVJULAotCQkJCQllY2MtPnN0eWxlLT5lY2NieXRlcyk7Ci0JCQkqbGVuID0gZWNjLT5zdHlsZS0+ZWNjYnl0ZXM7Ci0JCQlicmVhazsKLQkJfQotCi0JCXdoaWxlICgqbGVuIDwgZWNjLT5zdHlsZS0+ZWNjYnl0ZXMpIHsKLQkJCXJldCA9IFRGUihyZWFkKDAsIGJ1ZmZlciArICpsZW4sIDB4ODAwIC0gKmxlbikpOwotCQkJaWYgKHJldCA8PSAwKQotCQkJCWJyZWFrOwotCQkJKmxlbiArPSByZXQ7Ci0JCX0KLQotCQlpZiAoKmxlbiA9PSAwKQotCQkJKnBhcnRpdGlvbiA9IDI7Ci0JCWVsc2UgaWYgKCpsZW4gPCBlY2MtPnN0eWxlLT5lY2NieXRlcykgewotCQkJZnByaW50ZihzdGRlcnIsICJcbldhcm5pbmc6ICVpIHN0cmF5IGJ5dGVzXG4iLCAqbGVuKTsKLQkJCW1lbXNldChidWZmZXIgKyAqbGVuLCAweGZmLAotCQkJCQllY2MtPnN0eWxlLT5lY2NieXRlcyAtICpsZW4pOwotCQkJKmxlbiA9IGVjYy0+c3R5bGUtPmVjY2J5dGVzOwotCQkJYnJlYWs7Ci0JCX0gZWxzZQotCQkJYnJlYWs7Ci0JY2FzZSAyOgotCQltZW1zZXQoYnVmZmVyLCAweGZmLCBlY2MtPnN0eWxlLT5lY2NieXRlcyk7Ci0JCSpsZW4gPSBlY2MtPnN0eWxlLT5lY2NieXRlczsKLQkJYnJlYWs7Ci0JfQotfQotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdLCBjaGFyICplbnZwW10pIHsKLQlzdHJ1Y3QgZWNjX3N0YXRlX3MgZWNjOwotCXVpbnQ4X3QgYnVmZmVyWzB4MTAwMF0sIGVjY19wYXlsb2FkWzB4NDBdLCByZWdzWzNdLCAqamZmczsKLQlpbnQgcmV0LCBsZW4sIGVjY2J5dGUsIGNvdW50LCBwYXJ0aXRpb247Ci0KLQkvKiBDaGVjayBpZiB3ZSdyZSBjYWxsZWQgYnkgInJhdzJmbGFzaC5zcGl0eiIgb3Igc2ltaWxhciAqLwotCWxlbiA9IHN0cmxlbihhcmd2WzBdKTsKLQlpZiAoIXN0cmNhc2VjbXAoYXJndlswXSArIGxlbiAtIDUsICJha2l0YSIpKQotCQllY2Muc3R5bGUgPSAmYWtpdGE7Ci0JZWxzZSBpZiAoIXN0cmNhc2VjbXAoYXJndlswXSArIGxlbiAtIDYsICJib3J6b2kiKSkKLQkJZWNjLnN0eWxlID0gJmJvcnpvaTsKLQllbHNlIGlmICghc3RyY2FzZWNtcChhcmd2WzBdICsgbGVuIC0gNywgInRlcnJpZXIiKSkKLQkJZWNjLnN0eWxlID0gJnRlcnJpZXI7Ci0JZWxzZQotCQllY2Muc3R5bGUgPSAmc3BpdHo7Ci0KLSMgaWZkZWYgVkVSQk9TRQotCWZwcmludGYoc3RkZXJyLCAiWyIpOwotIyBlbmRpZgotCi0JLyogU2tpcCBmaXJzdCAxMCBieXRlcyAqLwotCVRGUihyZWFkKDAsIGJ1ZmZlciwgMHgxMCkpOwotCi0JbGVuID0gMDsKLQlqZmZzID0gKHVpbnQ4X3QgKikgbWFsbG9jKFBBUlRJVElPTl9TVEFSVCk7Ci0Jd2hpbGUgKGxlbiA8IFBBUlRJVElPTl9TVEFSVCkgewotCQlyZXQgPSBURlIocmVhZCgwLCBqZmZzICsgbGVuLCBQQVJUSVRJT05fU1RBUlQgLSBsZW4pKTsKLQkJaWYgKHJldCA8PSAwKQotCQkJYnJlYWs7Ci0JCWxlbiArPSByZXQ7Ci0JfQotCi0JLyogQ29udmVydCBkYXRhIGZyb20gc3RkaW4gKi8KLQlwYXJ0aXRpb24gPSBsZW4gPSBlY2NieXRlID0gY291bnQgPSAwOwotCW1lbXNldChlY2NfcGF5bG9hZCwgMHhmZiwgZWNjLnN0eWxlLT5vb2Jfc2l6ZSk7Ci0JamZmczJfZm9ybWF0KCZlY2MsIGVjY19wYXlsb2FkKTsKLQl3aGlsZSAoY291bnQgPCBlY2Muc3R5bGUtPnJvbXNpemUpIHsKLQkJYnVmZmVyX2ZpbGwoJmVjYywgYnVmZmVyLCAmbGVuLCAmcGFydGl0aW9uLCBjb3VudCwgamZmcyk7Ci0JCWJ1ZmZlcl9kaWdlc3QoJmVjYywgYnVmZmVyLCByZWdzKTsKLQotCQllY2NfcGF5bG9hZFtlY2Muc3R5bGUtPmVjY3Bvc1tlY2NieXRlICsrXV0gPSByZWdzWzBdOwotCQllY2NfcGF5bG9hZFtlY2Muc3R5bGUtPmVjY3Bvc1tlY2NieXRlICsrXV0gPSByZWdzWzFdOwotCQllY2NfcGF5bG9hZFtlY2Muc3R5bGUtPmVjY3Bvc1tlY2NieXRlICsrXV0gPSByZWdzWzJdOwotCi0JCVRGUih3cml0ZSgxLCBidWZmZXIsIGVjYy5zdHlsZS0+ZWNjYnl0ZXMpKTsKLQkJY291bnQgKz0gZWNjLnN0eWxlLT5lY2NieXRlczsKLQkJbGVuIC09IGVjYy5zdHlsZS0+ZWNjYnl0ZXM7Ci0JCW1lbW1vdmUoYnVmZmVyLCBidWZmZXIgKyBlY2Muc3R5bGUtPmVjY2J5dGVzLCBsZW4pOwotCi0JCWlmIChlY2NieXRlID49IGVjYy5zdHlsZS0+ZWNjc2l6ZSkgewotCQkJVEZSKHdyaXRlKDEsIGVjY19wYXlsb2FkLCBlY2Muc3R5bGUtPm9vYl9zaXplKSk7Ci0JCQllY2NieXRlID0gMDsKLQkJCW1lbXNldChlY2NfcGF5bG9hZCwgMHhmZiwgZWNjLnN0eWxlLT5vb2Jfc2l6ZSk7Ci0JCQlpZiAocGFydGl0aW9uIDwgMikKLQkJCQlqZmZzMl9mb3JtYXQoJmVjYywgZWNjX3BheWxvYWQpOwotCQl9Ci0KLSMgaWZkZWYgVkVSQk9TRQotCQlpZiAoY291bnQgKiBQQkFSX0xFTiAvIGVjYy5zdHlsZS0+cm9tc2l6ZSA+Ci0JCQkJKGNvdW50IC0gZWNjLnN0eWxlLT5lY2NieXRlcykgKgotCQkJCVBCQVJfTEVOIC8gZWNjLnN0eWxlLT5yb21zaXplKQotCQkJZnByaW50ZihzdGRlcnIsICIjIik7Ci0jIGVuZGlmCi0JfQotCi0jIGlmZGVmIFZFUkJPU0UKLQlmcHJpbnRmKHN0ZGVyciwgIl1cbiIpOwotIyBlbmRpZgotCWZyZWUoamZmcyk7Ci0JcmV0dXJuIDA7Ci19Ci0jZWxzZQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSwgY2hhciAqZW52cFtdKSB7Ci0Jc3RydWN0IGVjY19zdGF0ZV9zIGVjYzsKLQl1aW50OF90IGJ1ZmZlclsweDEwMDBdOwotCWludCByZXQsIGxlbiwgY291bnQ7Ci0KLQkvKiBDaGVjayBpZiB3ZSdyZSBjYWxsZWQgYnkgImZsYXNoMnJhdy5zcGl0eiIgb3Igc2ltaWxhciAqLwotCWxlbiA9IHN0cmxlbihhcmd2WzBdKTsKLQlpZiAoIXN0cmNhc2VjbXAoYXJndlswXSArIGxlbiAtIDUsICJha2l0YSIpKQotCQllY2Muc3R5bGUgPSAmYWtpdGE7Ci0JZWxzZSBpZiAoIXN0cmNhc2VjbXAoYXJndlswXSArIGxlbiAtIDYsICJib3J6b2kiKSkKLQkJZWNjLnN0eWxlID0gJmJvcnpvaTsKLQllbHNlIGlmICghc3RyY2FzZWNtcChhcmd2WzBdICsgbGVuIC0gNywgInRlcnJpZXIiKSkKLQkJZWNjLnN0eWxlID0gJnRlcnJpZXI7Ci0JZWxzZQotCQllY2Muc3R5bGUgPSAmc3BpdHo7Ci0KLSMgaWZkZWYgVkVSQk9TRQotCWZwcmludGYoc3RkZXJyLCAiWyIpOwotIyBlbmRpZgotCi0JLyogQ29udmVydCBkYXRhIGZyb20gc3RkaW4gKi8KLQljb3VudCA9IDA7Ci0Jd2hpbGUgKGNvdW50IDwgZWNjLnN0eWxlLT5yb21zaXplKSB7Ci0JCWxlbiA9IDA7Ci0JCXdoaWxlIChsZW4gPCBlY2Muc3R5bGUtPnBhZ2Vfc2l6ZSkgewotCQkJcmV0ID0gVEZSKHJlYWQoMCwgYnVmZmVyICsgbGVuLAotCQkJCQkJZWNjLnN0eWxlLT5wYWdlX3NpemUgLSBsZW4pKTsKLQkJCWlmIChyZXQgPD0gMCkKLQkJCQlicmVhazsKLQkJCWxlbiArPSByZXQ7Ci0JCX0KLQkJaWYgKGxlbiA9PSAwKQotCQkJYnJlYWs7Ci0JCWlmIChsZW4gPCBlY2Muc3R5bGUtPnBhZ2Vfc2l6ZSkgewotCQkJZnByaW50ZihzdGRlcnIsICJcbldhcm5pbmc6ICVpIHN0cmF5IGJ5dGVzXG4iLCBsZW4pOwotCQl9Ci0KLQkJVEZSKHdyaXRlKDEsIGJ1ZmZlciwgZWNjLnN0eWxlLT5wYWdlX3NpemUpKTsKLQotCQljb3VudCArPSBsZW47Ci0JCWxlbiA9IDA7Ci0JCXdoaWxlIChsZW4gPCBlY2Muc3R5bGUtPm9vYl9zaXplKSB7Ci0JCQlyZXQgPSBURlIocmVhZCgwLCBidWZmZXIsIGVjYy5zdHlsZS0+b29iX3NpemUgLSBsZW4pKTsKLQkJCWlmIChyZXQgPD0gMCkKLQkJCQlicmVhazsKLQkJCWxlbiArPSByZXQ7Ci0JCX0KLQotIyBpZmRlZiBWRVJCT1NFCi0JCWlmIChjb3VudCAqIFBCQVJfTEVOIC8gZWNjLnN0eWxlLT5yb21zaXplID4KLQkJCQkoY291bnQgLSBlY2Muc3R5bGUtPnBhZ2Vfc2l6ZSkgKgotCQkJCVBCQVJfTEVOIC8gZWNjLnN0eWxlLT5yb21zaXplKQotCQkJZnByaW50ZihzdGRlcnIsICIjIik7Ci0jIGVuZGlmCi0JfQotCi0jIGlmZGVmIFZFUkJPU0UKLQlmcHJpbnRmKHN0ZGVyciwgIl1cbiIpOwotIyBlbmRpZgotCXJldHVybiAwOwotfQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS5pbmMKaW5kZXggMjY5Yzg5OC4uYjQ2ZTdmNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LmluYwpAQCAtMiw3ICsyLDcgQEAKIEhPTUVQQUdFID0gImh0dHA6Ly9xZW11Lm9yZyIKIExJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIuMSIKIERFUEVORFMgPSAiZ2xpYi0yLjAgemxpYiBwaXhtYW4iCi1SREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gImJhc2ggcHl0aG9uIgorUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICJiYXNoIgogUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiYmFzaCBtYWtlIgogCiByZXF1aXJlIHFlbXUtdGFyZ2V0cy5pbmMKQEAgLTIxLDYgKzIxLDcgQEAKICAgICBmaWxlOi8vd2Fjb20ucGF0Y2ggXAogICAgIGZpbGU6Ly9hZGQtcHRlc3QtaW4tbWFrZWZpbGUucGF0Y2ggXAogICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgIGZpbGU6Ly8wMDAxLXRhcmdldC1taXBzLWFkZC0yNEtFYy1DUFUtZGVmaW5pdGlvbi5wYXRjaCBcCiAgICAgIgogCiBTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiXApAQCAtMzAsOCArMzEsMTIgQEAKIAogRVhUUkFfT0VDT05GICs9ICItLXRhcmdldC1saXN0PSR7QGdldF9xZW11X3RhcmdldF9saXN0KGQpfSAtLWRpc2FibGUtd2Vycm9yICAtLWRpc2FibGUtYmx1ZXogLS1kaXNhYmxlLWxpYmlzY3NpIC0td2l0aC1zeXN0ZW0tcGl4bWFuIC0tZXh0cmEtY2ZsYWdzPScke0NGTEFHU30nIgogCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlc2RrID0gIi0tdGFyZ2V0LWxpc3Q9JHtAZ2V0X3FlbXVfdGFyZ2V0X2xpc3QoZCl9IC0tZGlzYWJsZS13ZXJyb3IgXAotCQkJCSIKK0VYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmVzZGsgPSAiLS10YXJnZXQtbGlzdD0ke0BnZXRfcWVtdV90YXJnZXRfbGlzdChkKX0gLS1kaXNhYmxlLXdlcnJvciIKKworRVhUUkFfT0VNQUtFX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIExEPScke0xEfScgQVI9JyR7QVJ9JyBPQkpDT1BZPScke09CSkNPUFl9JyBMREZMQUdTPScke0xERkxBR1N9JyIKKworTERGTEFHU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtZnVzZS1sZD1iZmQiCisKIGV4cG9ydCBMSUJUT09MPSIke0hPU1RfU1lTfS1saWJ0b29sIgogCiBkb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy1uYXRpdmUoKSB7CkBAIC0zOSwxMyArNDQsMTIgQEAKIAlCSE9TVF9QS0dDT05GSUdfUEFUSD0kKFBBVEg9L3Vzci9iaW46L2JpbiBwa2ctY29uZmlnIC0tdmFyaWFibGUgcGNfcGF0aCBwa2ctY29uZmlnIHx8IGVjaG8gIiIpCiAJaWYgWyAhIC16ICIkQkhPU1RfUEtHQ09ORklHX1BBVEgiIF07IHRoZW4KIAkJZXhwb3J0IFBLR19DT05GSUdfUEFUSD0kUEtHX0NPTkZJR19QQVRIOiRCSE9TVF9QS0dDT05GSUdfUEFUSAotCQkjIGxpbmsgd2l0aCBzeXN0ZW0gZGJ1cyBvbiBVYnVudHUgMTUuMTAKLQkJIyBGSVhNRTogcmVtb3ZlIGJlbG93IDQgbGluZXMgd2hlbiBvZSBkYnVzIGlzIHVwZ3JhZGVkCi0JCWlmIFsgLXIgL2V0Yy9sc2ItcmVsZWFzZSAtYSAiJChsc2JfcmVsZWFzZSAtaXMpJChsc2JfcmVsZWFzZSAtcnMpIiA9ICJVYnVudHUxNS4xMCIgXSA7IHRoZW4KLQkJCWxpYnM9JChQS0dfQ09ORklHX0FMTE9XX1NZU1RFTV9MSUJTPTEgUEtHX0NPTkZJR19QQVRIPSRCSE9TVF9QS0dDT05GSUdfUEFUSCBQQVRIPS91c3IvYmluOi9iaW4gcGtnLWNvbmZpZyAtLWxpYnMgZGJ1cy0xIHx8IGVjaG8gIiIpCi0JCQlbIC1uICIkbGlicyIgXSAmJiBleHBvcnQgTERGTEFHUz0iJGxpYnMgJExERkxBR1MiCi0JCWZpCiAJZmkKKworCSMgQWx0ZXIgdGFyZ2V0IG1ha2VmaWxlcyB0byBhY2NlcHQgQ0ZMQUdTIHNldCB2aWEgZW52CisJc2VkIC1pIC1yIFwKKwkJLWUgJ3MvXihDfE9QX0N8SEVMUEVSX0MpRkxBR1M9L1wxRkxBR1MrPS8nIFwKKwkJIiR7U30iL01ha2VmaWxlICIke1N9Ii9NYWtlZmlsZS50YXJnZXQKIH0KIAogS1ZNRU5BQkxFID0gIi0tZW5hYmxlLWt2bSIKQEAgLTcyLDcgKzc2LDcgQEAKIAljcCAtckwgJHtCfS90ZXN0cyAke0R9JHtQVEVTVF9QQVRIfQogCWZpbmQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMgLXR5cGUgZiAtbmFtZSAiKi5bU3NoY29kXSIgfCB4YXJncyAtaSBybSAtcmYge30KIAotCWNwICR7U30vdGVzdHMvTWFrZWZpbGUgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKwljcCAke1N9L3Rlc3RzL01ha2VmaWxlLmluY2x1ZGUgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKIH0KIAogZG9faW5zdGFsbCAoKSB7CkBAIC0xMDMsOSArMTA3LDggQEAKIAkiCiBQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA/Pz0gImZkdCBhbHNhIHV1aWQiCiBQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZXNkayA/Pz0gImZkdCBzZGwiCi1OQVRJVkVERVBTID0gIiIKLU5BVElWRURFUFNfY2xhc3MtbmF0aXZlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ2xpYnhleHQtbmF0aXZlJywgJycsZCl9IgotUEFDS0FHRUNPTkZJR1tzZGxdID0gIi0tZW5hYmxlLXNkbCwtLWRpc2FibGUtc2RsLGxpYnNkbCAke05BVElWRURFUFN9LCIKKworUEFDS0FHRUNPTkZJR1tzZGxdID0gIi0tZW5hYmxlLXNkbCwtLWRpc2FibGUtc2RsLGxpYnNkbCIKIFBBQ0tBR0VDT05GSUdbdmlydGZzXSA9ICItLWVuYWJsZS12aXJ0ZnMgLS1lbmFibGUtYXR0ciwtLWRpc2FibGUtdmlydGZzLGxpYmNhcCBhdHRyLCIKIFBBQ0tBR0VDT05GSUdbYWlvXSA9ICItLWVuYWJsZS1saW51eC1haW8sLS1kaXNhYmxlLWxpbnV4LWFpbyxsaWJhaW8sIgogUEFDS0FHRUNPTkZJR1t4ZnNdID0gIi0tZW5hYmxlLXhmc2N0bCwtLWRpc2FibGUteGZzY3RsLHhmc3Byb2dzLCIKQEAgLTExNyw3ICsxMjAsNyBAQAogUEFDS0FHRUNPTkZJR1tuc3NdID0gIi0tZW5hYmxlLXNtYXJ0Y2FyZCwtLWRpc2FibGUtc21hcnRjYXJkLG5zcywiCiBQQUNLQUdFQ09ORklHW3V1aWRdID0gIi0tZW5hYmxlLXV1aWQsLS1kaXNhYmxlLXV1aWQsdXRpbC1saW51eCwiCiBQQUNLQUdFQ09ORklHW2N1cnNlc10gPSAiLS1lbmFibGUtY3Vyc2VzLC0tZGlzYWJsZS1jdXJzZXMsbmN1cnNlcywiCi1QQUNLQUdFQ09ORklHW2d0aytdID0gIi0tZW5hYmxlLWd0ayAtLWVuYWJsZS12dGUsLS1kaXNhYmxlLWd0ayAtLWRpc2FibGUtdnRlLGd0aysgbGlidnRlLCIKK1BBQ0tBR0VDT05GSUdbZ3RrK10gPSAiLS1lbmFibGUtZ3RrIC0td2l0aC1ndGthYmk9My4wIC0tZW5hYmxlLXZ0ZSwtLWRpc2FibGUtZ3RrIC0tZGlzYWJsZS12dGUsZ3RrKzMgdnRlIgogUEFDS0FHRUNPTkZJR1tsaWJjYXAtbmddID0gIi0tZW5hYmxlLWNhcC1uZywtLWRpc2FibGUtY2FwLW5nLGxpYmNhcC1uZywiCiBQQUNLQUdFQ09ORklHW3NzaDJdID0gIi0tZW5hYmxlLWxpYnNzaDIsLS1kaXNhYmxlLWxpYnNzaDIsbGlic3NoMiwiCiBQQUNLQUdFQ09ORklHW2djcnlwdF0gPSAiLS1lbmFibGUtZ2NyeXB0LC0tZGlzYWJsZS1nY3J5cHQsZ2NyeXB0LCIKQEAgLTEyOSw2ICsxMzIsNyBAQAogUEFDS0FHRUNPTkZJR1tsem9dID0gIi0tZW5hYmxlLWx6bywtLWRpc2FibGUtbHpvLGx6byIKIFBBQ0tBR0VDT05GSUdbbnVtYV0gPSAiLS1lbmFibGUtbnVtYSwtLWRpc2FibGUtbnVtYSxudW1hY3RsIgogUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0tZW5hYmxlLWdudXRscywtLWRpc2FibGUtZ251dGxzLGdudXRscyIKK1BBQ0tBR0VDT05GSUdbYnppcDJdID0gIi0tZW5hYmxlLWJ6aXAyLC0tZGlzYWJsZS1iemlwMixiemlwMiIKIAogRVhUUkFfT0VDT05GICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdhbHNhJywgJy0tYXVkaW8tZHJ2LWxpc3Q9b3NzLGFsc2EnLCAnJywgZCl9IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAxLXRhcmdldC1taXBzLWFkZC0yNEtFYy1DUFUtZGVmaW5pdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDEtdGFyZ2V0LW1pcHMtYWRkLTI0S0VjLUNQVS1kZWZpbml0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0ZGJlZTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAxLXRhcmdldC1taXBzLWFkZC0yNEtFYy1DUFUtZGVmaW5pdGlvbi5wYXRjaApAQCAtMCwwICsxLDU0IEBACitGcm9tIDkyNmJjMTk0ZjkxOGQ0NmJkOTM1NTdiMTVkYTgxNTNiNmE5NGExZDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcj1DMz1BOT0yMERyYXN6aWs/PSA8Z2l0QGFuZHJlZC5uZXQ+CitEYXRlOiBNb24sIDI1IEp1bCAyMDE2IDIzOjU4OjIyICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIHRhcmdldC1taXBzOiBhZGQgMjRLRWMgQ1BVIGRlZmluaXRpb24KK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworRGVmaW5lIGEgbmV3IENQVSBkZWZpbml0aW9uIHN1cHBvcnRpbmcgMjRLRWMgY29yZXMsIHNpbWlsYXIgdG8KK3RoZSBleGlzdGluZyAyNEtjLCBidXQgd2l0aCBhZGRlZCBzdXBwb3J0IGZvciBEU1AgaW5zdHJ1Y3Rpb25zCithbmQgTUlQUzE2ZSAoYW5kIHdpdGhvdXQgRlBVKS4KKworU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGdpdEBhbmRyZWQubmV0PgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cDovL2xpc3RzLm5vbmdudS5vcmcvYXJjaGl2ZS9odG1sL3FlbXUtZGV2ZWwvMjAxNi0wNy9tc2cwNTc3OC5odG1sXQorIHRhcmdldC1taXBzL3RyYW5zbGF0ZV9pbml0LmMgfCAyMiArKysrKysrKysrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDIyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3RhcmdldC1taXBzL3RyYW5zbGF0ZV9pbml0LmMgYi90YXJnZXQtbWlwcy90cmFuc2xhdGVfaW5pdC5jCitpbmRleCAzOWVkNWM0Li42YWUyM2U0IDEwMDY0NAorLS0tIGEvdGFyZ2V0LW1pcHMvdHJhbnNsYXRlX2luaXQuYworKysrIGIvdGFyZ2V0LW1pcHMvdHJhbnNsYXRlX2luaXQuYworQEAgLTI1Niw2ICsyNTYsMjggQEAgc3RhdGljIGNvbnN0IG1pcHNfZGVmX3QgbWlwc19kZWZzW10gPQorICAgICAgICAgLm1tdV90eXBlID0gTU1VX1RZUEVfUjQwMDAsCisgICAgIH0sCisgICAgIHsKKysgICAgICAgIC5uYW1lID0gIjI0S0VjIiwKKysgICAgICAgIC5DUDBfUFJpZCA9IDB4MDAwMTk2MDAsCisrICAgICAgICAuQ1AwX0NvbmZpZzAgPSBNSVBTX0NPTkZJRzAgfCAoMHgxIDw8IENQMEMwX0FSKSB8CisrICAgICAgICAgICAgICAgICAgICAgICAoTU1VX1RZUEVfUjQwMDAgPDwgQ1AwQzBfTVQpLAorKyAgICAgICAgLkNQMF9Db25maWcxID0gTUlQU19DT05GSUcxIHwgKDE1IDw8IENQMEMxX01NVSkgfAorKyAgICAgICAgICAgICAgICAgICAgICAgKDAgPDwgQ1AwQzFfSVMpIHwgKDMgPDwgQ1AwQzFfSUwpIHwgKDEgPDwgQ1AwQzFfSUEpIHwKKysgICAgICAgICAgICAgICAgICAgICAgICgwIDw8IENQMEMxX0RTKSB8ICgzIDw8IENQMEMxX0RMKSB8ICgxIDw8IENQMEMxX0RBKSB8CisrICAgICAgICAgICAgICAgICAgICAgICAoMSA8PCBDUDBDMV9DQSksCisrICAgICAgICAuQ1AwX0NvbmZpZzIgPSBNSVBTX0NPTkZJRzIsCisrICAgICAgICAuQ1AwX0NvbmZpZzMgPSBNSVBTX0NPTkZJRzMgfCAoMSA8PCBDUDBDM19EU1BQKSB8ICgwIDw8IENQMEMzX1ZJbnQpLAorKyAgICAgICAgLkNQMF9MTEFkZHJfcndfYml0bWFzayA9IDAsCisrICAgICAgICAuQ1AwX0xMQWRkcl9zaGlmdCA9IDQsCisrICAgICAgICAuU1lOQ0lfU3RlcCA9IDMyLAorKyAgICAgICAgLkNDUmVzID0gMiwKKysgICAgICAgIC8qIHdlIGhhdmUgYSBEU1AsIGJ1dCBubyBGUFUgKi8KKysgICAgICAgIC5DUDBfU3RhdHVzX3J3X2JpdG1hc2sgPSAweDEzNzhGRjFGLAorKyAgICAgICAgLlNFR0JJVFMgPSAzMiwKKysgICAgICAgIC5QQUJJVFMgPSAzMiwKKysgICAgICAgIC5pbnNuX2ZsYWdzID0gQ1BVX01JUFMzMlIyIHwgQVNFX01JUFMxNiB8IEFTRV9EU1AsCisrICAgICAgICAubW11X3R5cGUgPSBNTVVfVFlQRV9SNDAwMCwKKysgICAgfSwKKysgICAgeworICAgICAgICAgLm5hbWUgPSAiMjRLZiIsCisgICAgICAgICAuQ1AwX1BSaWQgPSAweDAwMDE5MzAwLAorICAgICAgICAgLkNQMF9Db25maWcwID0gTUlQU19DT05GSUcwIHwgKDB4MSA8PCBDUDBDMF9BUikgfAorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNi0xNTY4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTYtMTU2OC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTZmZDM0Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNi0xNTY4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotRnJvbSA0YWIwMzU5YThhZTE4MmE3YWM1Yzk5NjA5NjY3MjczMTY3NzAzZmFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUHJhc2FkIEogUGFuZGl0IDxwanBAZmVkb3JhcHJvamVjdC5vcmc+Ci1EYXRlOiBNb24sIDExIEphbiAyMDE2IDE0OjEwOjQyIC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGlkZTogYWhjaTogcmVzZXQgbmNxIG9iamVjdCB0byB1bnVzZWQgb24gZXJyb3IKLQotV2hlbiBwcm9jZXNzaW5nIE5DUSBjb21tYW5kcywgQUhDSSBkZXZpY2UgZW11bGF0aW9uIHByZXBhcmVzIGEKLU5DUSB0cmFuc2ZlciBvYmplY3Q7IFRvIHdoaWNoIGFuIGFpbyBjb250cm9sIGJsb2NrKGFpb2NiKSBvYmplY3QKLWlzIGFzc2lnbmVkIGluICdleGVjdXRlX25jcV9jb21tYW5kJy4gSW4gY2FzZSwgd2hlbiB0aGUgTkNRCi1jb21tYW5kIGlzIGludmFsaWQsIHRoZSAnYWlvY2InIG9iamVjdCBpcyBub3QgYXNzaWduZWQsIGFuZCBOQ1EKLXRyYW5zZmVyIG9iamVjdCBpcyBsZWZ0IGFzICd1c2VkJy4gVGhpcyBsZWFkcyB0byBhIHVzZSBhZnRlcgotZnJlZSBraW5kIG9mIGVycm9yIGluICdiZHJ2X2Fpb19jYW5jZWxfYXN5bmMnIHZpYSAnYWhjaV9yZXNldF9wb3J0Jy4KLVJlc2V0IE5DUSB0cmFuc2ZlciBvYmplY3QgdG8gJ3VudXNlZCcgdG8gYXZvaWQgaXQuCi0KLVtNYWludGFpbmVyIGVkaXQ6IHMvQUNISS9BSENJLyBpbiB0aGUgY29tbWl0IG1lc3NhZ2UuIC0tanNdCi0KLVJlcG9ydGVkLWJ5OiBRaW5naGFvIFRhbmcgPGx1b2RhbG9uZ2RlQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFByYXNhZCBKIFBhbmRpdCA8cGpwQGZlZG9yYXByb2plY3Qub3JnPgotUmV2aWV3ZWQtYnk6IEpvaG4gU25vdyA8anNub3dAcmVkaGF0LmNvbT4KLU1lc3NhZ2UtaWQ6IDE0NTIyODI1MTEtNDExNi0xLWdpdC1zZW5kLWVtYWlsLXBwYW5kaXRAcmVkaGF0LmNvbQotU2lnbmVkLW9mZi1ieTogSm9obiBTbm93IDxqc25vd0ByZWRoYXQuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLWh0dHA6Ly9naXQucWVtdS5vcmcvP3A9cWVtdS5naXQ7YT1jb21taXQ7aD00YWIwMzU5YThhZTE4MmE3YWM1Yzk5NjA5NjY3MjczMTY3NzAzZmFiCi0KLUNWRTogQ1ZFLTIwMTYtMTU2OAotW1lvY3RvICMgOTAxM10KLQotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIGh3L2lkZS9haGNpLmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotSW5kZXg6IHFlbXUtMi41LjAvaHcvaWRlL2FoY2kuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHFlbXUtMi41LjAub3JpZy9ody9pZGUvYWhjaS5jCi0rKysgcWVtdS0yLjUuMC9ody9pZGUvYWhjaS5jCi1AQCAtOTEwLDYgKzkxMCw3IEBAIHN0YXRpYyB2b2lkIG5jcV9lcnIoTkNRVHJhbnNmZXJTdGF0ZSAqbmMKLSAgICAgaWRlX3N0YXRlLT5lcnJvciA9IEFCUlRfRVJSOwotICAgICBpZGVfc3RhdGUtPnN0YXR1cyA9IFJFQURZX1NUQVQgfCBFUlJfU1RBVDsKLSAgICAgbmNxX3Rmcy0+ZHJpdmUtPnBvcnRfcmVncy5zY3JfZXJyIHw9ICgxIDw8IG5jcV90ZnMtPnRhZyk7Ci0rICAgIG5jcV90ZnMtPnVzZWQgPSAwOwotIH0KLSAKLSBzdGF0aWMgdm9pZCBuY3FfZmluaXNoKE5DUVRyYW5zZmVyU3RhdGUgKm5jcV90ZnMpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNi0yMTk3LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTYtMjE5Ny5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTQ2NDM1Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNi0yMTk3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotRnJvbTogUHJhc2FkIEogUGFuZGl0IDxhZGRyZXNzQGhpZGRlbj4KLQotV2hlbiBJREUgQUhDSSBlbXVsYXRpb24gdXNlcyBGcmFtZSBJbmZvcm1hdGlvbiBTdHJ1Y3R1cmVzKEZJUykKLWVuZ2luZSBmb3IgZGF0YSB0cmFuc2ZlciwgdGhlIG1hcHBlZCBGSVMgYnVmZmVyIGFkZHJlc3MgaXMgc3RvcmVkCi1pbiBhIHN0YXRpYyAnYm91bmNlLmJ1ZmZlcicuIFdoZW4gYSByZXF1ZXN0IGlzIG1hZGUgdG8gbWFwIGFub3RoZXIKLW1lbW9yeSByZWdpb24sIGFkZHJlc3Nfc3BhY2VfbWFwKCkgcmV0dXJucyBOVUxMIGJlY2F1c2UKLSdib3VuY2UuYnVmZmVyJyBpcyBpbl91c2UuIEl0IGxlYWRzIHRvIGEgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlCi1lcnJvciB3aGlsZSBkb2luZyAnZG1hX21lbW9yeV91bm1hcCcuIEFkZCBhIGNoZWNrIHRvIGF2b2lkIGl0LgotCi1SZXBvcnRlZC1ieTogWnVvemhpIGZ6eiA8YWRkcmVzc0BoaWRkZW4+Ci1TaWduZWQtb2ZmLWJ5OiBQcmFzYWQgSiBQYW5kaXQgPGFkZHJlc3NAaGlkZGVuPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1odHRwczovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL3FlbXUtZGV2ZWwvMjAxNi0wMS9tc2cwNTc0MC5odG1sCi0KLUNWRTogQ1ZFLTIwMTYtMjE5NwotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIGh3L2lkZS9haGNpLmMgfCAxNiArKysrKysrKysrLS0tLS0tCi0gIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi0gIFVwZGF0ZSBhcyBwZXIgcmV2aWV3Ci0gICAgLT4gaHR0cHM6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9xZW11LWRldmVsLzIwMTYtMDEvbXNnMDU3MTUuaHRtbAotCi1JbmRleDogcWVtdS0yLjUuMC9ody9pZGUvYWhjaS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcWVtdS0yLjUuMC5vcmlnL2h3L2lkZS9haGNpLmMKLSsrKyBxZW11LTIuNS4wL2h3L2lkZS9haGNpLmMKLUBAIC02NjEsOSArNjYxLDExIEBAIHN0YXRpYyBib29sIGFoY2lfbWFwX2Zpc19hZGRyZXNzKEFIQ0lEZXYKLSAKLSBzdGF0aWMgdm9pZCBhaGNpX3VubWFwX2Zpc19hZGRyZXNzKEFIQ0lEZXZpY2UgKmFkKQotIHsKLS0gICAgZG1hX21lbW9yeV91bm1hcChhZC0+aGJhLT5hcywgYWQtPnJlc19maXMsIDI1NiwKLS0gICAgICAgICAgICAgICAgICAgICBETUFfRElSRUNUSU9OX0ZST01fREVWSUNFLCAyNTYpOwotLSAgICBhZC0+cmVzX2ZpcyA9IE5VTEw7Ci0rICAgIGlmIChhZC0+cmVzX2ZpcykgewotKyAgICAgICAgZG1hX21lbW9yeV91bm1hcChhZC0+aGJhLT5hcywgYWQtPnJlc19maXMsIDI1NiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgRE1BX0RJUkVDVElPTl9GUk9NX0RFVklDRSwgMjU2KTsKLSsgICAgICAgIGFkLT5yZXNfZmlzID0gTlVMTDsKLSsgICAgfQotIH0KLSAKLSBzdGF0aWMgYm9vbCBhaGNpX21hcF9jbGJfYWRkcmVzcyhBSENJRGV2aWNlICphZCkKLUBAIC02NzcsOSArNjc5LDExIEBAIHN0YXRpYyBib29sIGFoY2lfbWFwX2NsYl9hZGRyZXNzKEFIQ0lEZXYKLSAKLSBzdGF0aWMgdm9pZCBhaGNpX3VubWFwX2NsYl9hZGRyZXNzKEFIQ0lEZXZpY2UgKmFkKQotIHsKLS0gICAgZG1hX21lbW9yeV91bm1hcChhZC0+aGJhLT5hcywgYWQtPmxzdCwgMTAyNCwKLS0gICAgICAgICAgICAgICAgICAgICBETUFfRElSRUNUSU9OX0ZST01fREVWSUNFLCAxMDI0KTsKLS0gICAgYWQtPmxzdCA9IE5VTEw7Ci0rICAgIGlmIChhZC0+bHN0KSB7Ci0rICAgICAgICBkbWFfbWVtb3J5X3VubWFwKGFkLT5oYmEtPmFzLCBhZC0+bHN0LCAxMDI0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICBETUFfRElSRUNUSU9OX0ZST01fREVWSUNFLCAxMDI0KTsKLSsgICAgICAgIGFkLT5sc3QgPSBOVUxMOwotKyAgICB9Ci0gfQotIAotIHN0YXRpYyB2b2lkIGFoY2lfd3JpdGVfZmlzX3NkYihBSENJU3RhdGUgKnMsIE5DUVRyYW5zZmVyU3RhdGUgKm5jcV90ZnMpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNi0yMTk4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTYtMjE5OC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjEyMDFmMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNi0yMTk4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotRnJvbTogUHJhc2FkIEogUGFuZGl0IDxhZGRyZXNzQGhpZGRlbj4KLQotVVNCIEVoY2kgZW11bGF0aW9uIHN1cHBvcnRzIGhvc3QgY29udHJvbGxlciBjYXBhYmlsaXR5IHJlZ2lzdGVycy4KLUJ1dCBpdHMgbW1pbyAnLndyaXRlJyBmdW5jdGlvbiB3YXMgbWlzc2luZywgd2hpY2ggbGVhZCB0byBhIG51bGwKLXBvaW50ZXIgZGVyZWZlcmVuY2UgaXNzdWUuIEFkZCBhIGRvIG5vdGhpbmcgJ2VoY2lfY2Fwc193cml0ZScKLWRlZmluaXRpb24gdG8gYXZvaWQgaXQ7IERvIG5vdGhpbmcgYmVjYXVzZSBjYXBhYmlsaXR5IHJlZ2lzdGVycwotYXJlIFJlYWQgT25seShSTykuCi0KLVJlcG9ydGVkLWJ5OiBadW96aGkgRnp6IDxhZGRyZXNzQGhpZGRlbj4KLVNpZ25lZC1vZmYtYnk6IFByYXNhZCBKIFBhbmRpdCA8YWRkcmVzc0BoaWRkZW4+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLWh0dHBzOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvcWVtdS1kZXZlbC8yMDE2LTAxL21zZzA1ODk5Lmh0bWwKLQotQ1ZFOiBDVkUtMjAxNi0yMTk4Ci1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gaHcvdXNiL2hjZC1laGNpLmMgfCA2ICsrKysrKwotICAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspCi0KLUluZGV4OiBxZW11LTIuNS4wL2h3L3VzYi9oY2QtZWhjaS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcWVtdS0yLjUuMC5vcmlnL2h3L3VzYi9oY2QtZWhjaS5jCi0rKysgcWVtdS0yLjUuMC9ody91c2IvaGNkLWVoY2kuYwotQEAgLTg5Myw2ICs4OTMsMTEgQEAgc3RhdGljIHVpbnQ2NF90IGVoY2lfY2Fwc19yZWFkKHZvaWQgKnB0cgotICAgICByZXR1cm4gcy0+Y2Fwc1thZGRyXTsKLSB9Ci0gCi0rc3RhdGljIHZvaWQgZWhjaV9jYXBzX3dyaXRlKHZvaWQgKnB0ciwgaHdhZGRyIGFkZHIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCB2YWwsIHVuc2lnbmVkIHNpemUpCi0rewotK30KLSsKLSBzdGF0aWMgdWludDY0X3QgZWhjaV9vcHJlZ19yZWFkKHZvaWQgKnB0ciwgaHdhZGRyIGFkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaXplKQotIHsKLUBAIC0yMzEwLDYgKzIzMTUsNyBAQCBzdGF0aWMgdm9pZCBlaGNpX2ZyYW1lX3RpbWVyKHZvaWQgKm9wYXF1Ci0gCi0gc3RhdGljIGNvbnN0IE1lbW9yeVJlZ2lvbk9wcyBlaGNpX21taW9fY2Fwc19vcHMgPSB7Ci0gICAgIC5yZWFkID0gZWhjaV9jYXBzX3JlYWQsCi0rICAgIC53cml0ZSA9IGVoY2lfY2Fwc193cml0ZSwKLSAgICAgLnZhbGlkLm1pbl9hY2Nlc3Nfc2l6ZSA9IDEsCi0gICAgIC52YWxpZC5tYXhfYWNjZXNzX3NpemUgPSA0LAotICAgICAuaW1wbC5taW5fYWNjZXNzX3NpemUgPSAxLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvYWRkLXB0ZXN0LWluLW1ha2VmaWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvYWRkLXB0ZXN0LWluLW1ha2VmaWxlLnBhdGNoCmluZGV4IGE5OWY3MjAuLjJjZTM0NzggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2FkZC1wdGVzdC1pbi1tYWtlZmlsZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9hZGQtcHRlc3QtaW4tbWFrZWZpbGUucGF0Y2gKQEAgLTQsMTQgKzQsMTQgQEAKIAogU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CiAtLS0KLSB0ZXN0cy9NYWtlZmlsZSB8ICAgMTAgKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspCisgdGVzdHMvTWFrZWZpbGUuaW5jbHVkZSB8IDggKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspCiAKLWRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZSBiL3Rlc3RzL01ha2VmaWxlCi1pbmRleCA4OGY3MTA1Li4zZjQwYjRiIDEwMDY0NAotLS0tIGEvdGVzdHMvTWFrZWZpbGUKLSsrKyBiL3Rlc3RzL01ha2VmaWxlCi1AQCAtNDA1LDMgKzQwNSwxMiBAQCBhbGw6ICQoUUVNVV9JT1RFU1RTX0hFTFBFUlMteSkKK2RpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5pbmNsdWRlIGIvdGVzdHMvTWFrZWZpbGUuaW5jbHVkZQoraW5kZXggMTRiZTQ5MS4uMGZjZTM3YSAxMDA2NDQKKy0tLSBhL3Rlc3RzL01ha2VmaWxlLmluY2x1ZGUKKysrKyBiL3Rlc3RzL01ha2VmaWxlLmluY2x1ZGUKK0BAIC03NzYsMyArNzc2LDExIEBAIGFsbDogJChRRU1VX0lPVEVTVFNfSEVMUEVSUy15KQogIAogIC1pbmNsdWRlICQod2lsZGNhcmQgdGVzdHMvKi5kKQogIC1pbmNsdWRlICQod2lsZGNhcmQgdGVzdHMvbGlicW9zLyouZCkKQEAgLTIzLDcgKzIzLDYgQEAKICsJCW5mPSQkKGVjaG8gJCRmIHwgc2VkICdzL3Rlc3RzXC8vXC5cLy9nJyk7IFwKICsJCSQkbmY7IFwKICsJZG9uZQotKwotLS0KLTEuNy45LjUKKy0tIAorMi45LjAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvZGlzYWJsZS1ncmFicy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2Rpc2FibGUtZ3JhYnMucGF0Y2gKaW5kZXggNDE3MjZiMS4uMTIzODMzZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvZGlzYWJsZS1ncmFicy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9kaXNhYmxlLWdyYWJzLnBhdGNoCkBAIC0yOSw5ICsyOSw5IEBACiAtLS0gYS91aS9zZGwuYwogKysrIGIvdWkvc2RsLmMKIEBAIC01OSw2ICs1OSwxMCBAQCBzdGF0aWMgU0RMX0N1cnNvciAqZ3Vlc3Rfc3ByaXRlID0gTlVMTDsKLSBzdGF0aWMgU0RMX1BpeGVsRm9ybWF0IGhvc3RfZm9ybWF0OwogIHN0YXRpYyBpbnQgc2NhbGluZ19hY3RpdmUgPSAwOwogIHN0YXRpYyBOb3RpZmllciBtb3VzZV9tb2RlX25vdGlmaWVyOworIHN0YXRpYyBpbnQgaWRsZV9jb3VudGVyOwogKyNpZm5kZWYgVHJ1ZQogKyNkZWZpbmUgVHJ1ZSAxCiArI2VuZGlmCkBAIC00MCw3ICs0MCw3IEBACiAgc3RhdGljIHZvaWQgc2RsX3VwZGF0ZShEaXNwbGF5Q2hhbmdlTGlzdGVuZXIgKmRjbCwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCB4LCBpbnQgeSwgaW50IHcsIGludCBoKQogQEAgLTM4NCwxNCArMzg4LDE2IEBAIHN0YXRpYyB2b2lkIHNkbF9ncmFiX3N0YXJ0KHZvaWQpCi0gICAgICAgICAgICAgU0RMX1dhcnBNb3VzZShndWVzdF94LCBndWVzdF95KTsKKyAgICAgICAgICAgICB9CiAgICAgIH0gZWxzZQogICAgICAgICAgc2RsX2hpZGVfY3Vyc29yKCk7CiAtICAgIFNETF9XTV9HcmFiSW5wdXQoU0RMX0dSQUJfT04pOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvZml4LWxpYmNhcC1oZWFkZXItaXNzdWUtb24tc29tZS1kaXN0cm8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9maXgtbGliY2FwLWhlYWRlci1pc3N1ZS1vbi1zb21lLWRpc3Ryby5wYXRjaAppbmRleCAxM2E2ZWEyLi5jZWU2YTY3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9maXgtbGliY2FwLWhlYWRlci1pc3N1ZS1vbi1zb21lLWRpc3Ryby5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9maXgtbGliY2FwLWhlYWRlci1pc3N1ZS1vbi1zb21lLWRpc3Ryby5wYXRjaApAQCAtNjcsOSArNjcsOSBAQAogICNpbmNsdWRlIDxzeXMvdmZzLmg+CiAgI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgogQEAgLTI2LDcgKzI1LDExIEBACi0gI2luY2x1ZGUgInZpcnRpby05cC1tYXJzaGFsLmgiCi0gI2luY2x1ZGUgImh3LzlwZnMvdmlydGlvLTlwLXByb3h5LmgiCi0gI2luY2x1ZGUgImZzZGV2L3ZpcnRpby05cC1tYXJzaGFsLmgiCisgI2luY2x1ZGUgIjlwLWlvdi1tYXJzaGFsLmgiCisgI2luY2x1ZGUgImh3LzlwZnMvOXAtcHJveHkuaCIKKyAjaW5jbHVkZSAiZnNkZXYvOXAtaW92LW1hcnNoYWwuaCIKIC0KICsvKgogKyAqIEluY2x1ZGUgdGhpcyBvbmUgbGFzdCBkdWUgdG8gc29tZSB2ZXJzaW9ucyBvZiBpdCBiZWluZyBidWdneToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L3FlbXUtMi41LjAtY2ZsYWdzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvcWVtdS0yLjUuMC1jZmxhZ3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTczMzk0ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L3FlbXUtMi41LjAtY2ZsYWdzLnBhdGNoCkBAIC0wLDAgKzEsMTMgQEAKKy0tLSBhL2NvbmZpZ3VyZQorKysrIGIvY29uZmlndXJlCitAQCAtNDQ2OCwxMCArNDQ2OCw2IEBAIGZpCisgaWYgdGVzdCAiJGdjb3YiID0gInllcyIgOyB0aGVuCisgICBDRkxBR1M9Ii1mcHJvZmlsZS1hcmNzIC1mdGVzdC1jb3ZlcmFnZSAtZyAkQ0ZMQUdTIgorICAgTERGTEFHUz0iLWZwcm9maWxlLWFyY3MgLWZ0ZXN0LWNvdmVyYWdlICRMREZMQUdTIgorLWVsaWYgdGVzdCAiJGZvcnRpZnlfc291cmNlIiA9ICJ5ZXMiIDsgdGhlbgorLSAgQ0ZMQUdTPSItTzIgLVVfRk9SVElGWV9TT1VSQ0UgLURfRk9SVElGWV9TT1VSQ0U9MiAkQ0ZMQUdTIgorLWVsaWYgdGVzdCAiJGRlYnVnIiA9ICJubyI7IHRoZW4KKy0gIENGTEFHUz0iLU8yICRDRkxBR1MiCisgZmkKKyAKKyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11XzIuNS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXVfMi41LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5ZDlhOGQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXVfMi41LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1yZXF1aXJlIHFlbXUuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTQ0MWMyOGQyY2Y4NmUxNWEzN2ZhNDdlMTVhNzJmYmFjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO2VuZGxpbmU9MjQ7bWQ1PWMwNGRlZjdhZTM4ODUwZTdkM2VmNTQ4NTg4MTU5OTEzIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vY29uZmlndXJlLWZpeC1EYXJ3aW4tdGFyZ2V0LWRldGVjdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcWVtdS1lbmxhcmdlLWVudi1lbnRyeS1zaXplLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9RZW11LUFybS12ZXJzYXRpbGVwYi1BZGQtbWVtb3J5LXNpemUtY2hlY2tpbmcucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL25vLXZhbGdyaW5kLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi0xNTY4LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi0yMTk3LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi0yMTk4LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9wYXRobGltaXQucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJX3ByZXBlbmQgPSAiaHR0cDovL3dpa2kucWVtdS1wcm9qZWN0Lm9yZy9kb3dubG9hZC8ke0JQfS50YXIuYnoyIgotU1JDX1VSSVttZDVzdW1dID0gImY0NjlmMjMzMGJiZTc2ZTNlMzlkYjEwZTlhYzRmOGRiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM0NDM4ODc0MDE2MTlmZTMzYmZhNWQ5MDBhNGYyZDZhNzk0MjVhZTJiN2U0M2Q1YjhjMzZlYjdhNjgzNzcyZDQiCi0KLUNPTVBBVElCTEVfSE9TVF9jbGFzcy10YXJnZXRfbWlwczY0ID0gIm51bGwiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICMgUHJldmVudCBRQSB3YXJuaW5ncyBhYm91dCBpbnN0YWxsZWQgJHtsb2NhbHN0YXRlZGlyfS9ydW4KLSAgICBpZiBbIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biBdOyB0aGVuIHJtZGlyICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bjsgZmkKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11XzIuNy4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXVfMi43LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjE5YjhlZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11XzIuNy4wLmJiCkBAIC0wLDAgKzEsMjMgQEAKK3JlcXVpcmUgcWVtdS5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NDQxYzI4ZDJjZjg2ZTE1YTM3ZmE0N2UxNWE3MmZiYWMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7ZW5kbGluZT0yNDttZDU9YzA0ZGVmN2FlMzg4NTBlN2QzZWY1NDg1ODgxNTk5MTMiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9jb25maWd1cmUtZml4LURhcndpbi10YXJnZXQtZGV0ZWN0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9xZW11LWVubGFyZ2UtZW52LWVudHJ5LXNpemUucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL1FlbXUtQXJtLXZlcnNhdGlsZXBiLUFkZC1tZW1vcnktc2l6ZS1jaGVja2luZy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vbm8tdmFsZ3JpbmQucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3BhdGhsaW1pdC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcWVtdS0yLjUuMC1jZmxhZ3MucGF0Y2ggXAorIgorCitTUkNfVVJJX3ByZXBlbmQgPSAiaHR0cDovL3dpa2kucWVtdS1wcm9qZWN0Lm9yZy9kb3dubG9hZC8ke0JQfS50YXIuYnoyIgorU1JDX1VSSVttZDVzdW1dID0gIjA4ZDRkMDZkMWNiNTk4ZWZlY2Q3OTYxMzdmNDg0NGFiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMyNmU3Mzk1MDZiYTY5MGRhZjY5ZmMxN2JkMzkxM2E2YzMxM2Q5OTI4ZDc0M2JkOGVkZGI4MmY0MDNmODFlNTMiCisKK0NPTVBBVElCTEVfSE9TVF9jbGFzcy10YXJnZXRfbWlwczY0ID0gIm51bGwiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICMgUHJldmVudCBRQSB3YXJuaW5ncyBhYm91dCBpbnN0YWxsZWQgJHtsb2NhbHN0YXRlZGlyfS9ydW4KKyAgICBpZiBbIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biBdOyB0aGVuIHJtZGlyICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bjsgZmkKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11d3JhcHBlci1jcm9zc18xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdXdyYXBwZXItY3Jvc3NfMS4wLmJiCmluZGV4IDdmNGM2ZDkuLjUzYjMwMmQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11d3JhcHBlci1jcm9zc18xLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXV3cmFwcGVyLWNyb3NzXzEuMC5iYgpAQCAtNDEsMTAgKzQxLDYgQEAKIAljaG1vZCAreCAke0R9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS9xZW11d3JhcHBlcgogfQogCi1TWVNST09UX1BSRVBST0NFU1NfRlVOQ1MgKz0gInFlbXV3cmFwcGVyX3N5c3Jvb3RfcHJlcHJvY2VzcyIKLQotcWVtdXdyYXBwZXJfc3lzcm9vdF9wcmVwcm9jZXNzICgpIHsKLQlzeXNyb290X3N0YWdlX2RpciAke0R9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfSAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9Ci19CitTWVNST09UX0RJUlMgKz0gIiR7YmluZGlyX2Nyb3Nzc2NyaXB0c30iCiAKIElOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3F1aWx0L3F1aWx0LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcXVpbHQvcXVpbHQuaW5jCmluZGV4IDRlMzkzYzQuLjUxMmI3OTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcXVpbHQvcXVpbHQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcXVpbHQvcXVpbHQuaW5jCkBAIC00OCwxMCArNDgsMTAgQEAKIH0KIAogZG9faW5zdGFsbF9wdGVzdCgpIHsKLQl0YXIgLWNmIC0gYmluLyAtLWV4Y2x1ZGUgXCouaW4gfCAoIGNkICR7RH0ke1BURVNUX1BBVEh9ICYmIHRhciAteGYgLSApCi0JdGFyIC1jZiAtIGNvbXBhdC8gLS1leGNsdWRlIFwqLmluIHwgKCBjZCAke0R9JHtQVEVTVF9QQVRIfSAmJiB0YXIgLXhmIC0gKQotCXRhciAtY2YgLSBxdWlsdC8gLS1leGNsdWRlIFwqLmluIHwgKCBjZCAke0R9JHtQVEVTVF9QQVRIfSAmJiB0YXIgLXhmIC0gKQotCXRhciAtY2YgLSB0ZXN0LyAtLWV4Y2x1ZGUgbWFpbC50ZXN0IC0tZXhjbHVkZSBkZWxldGUudGVzdCB8ICggY2QgJHtEfSR7UFRFU1RfUEFUSH0gJiYgdGFyIC14ZiAtICYmIGNobW9kIDc3NyB0ZXN0KQorCXRhciAtYyAtLWV4Y2x1ZGU9XCouaW4gYmluLyB8ICggY2QgJHtEfSR7UFRFU1RfUEFUSH0gJiYgdGFyIC14ZiAtICkKKwl0YXIgLWMgLS1leGNsdWRlPVwqLmluIGNvbXBhdC8gfCAoIGNkICR7RH0ke1BURVNUX1BBVEh9ICYmIHRhciAteGYgLSApCisJdGFyIC1jIC0tZXhjbHVkZT1cKi5pbiBxdWlsdC8gfCAoIGNkICR7RH0ke1BURVNUX1BBVEh9ICYmIHRhciAteGYgLSApCisJdGFyIC1jIC0tZXhjbHVkZT1tYWlsLnRlc3QgLS1leGNsdWRlPWRlbGV0ZS50ZXN0IHRlc3QvIHwgKCBjZCAke0R9JHtQVEVTVF9QQVRIfSAmJiB0YXIgLXhmIC0gJiYgY2htb2QgNzc3IHRlc3QpCiAJY3AgJHtXT1JLRElSfS9NYWtlZmlsZSAke0R9JHtQVEVTVF9QQVRIfQogCWNwICR7V09SS0RJUn0vdGVzdC5zaCAke0R9JHtQVEVTVF9QQVRIfQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vcnBtLzAwMDEtc3lzdGVtLmgtcXVlcnkuYy1zdXBwb3J0LW5vc2lnbmF0dXJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vcnBtLzAwMDEtc3lzdGVtLmgtcXVlcnkuYy1zdXBwb3J0LW5vc2lnbmF0dXJlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3ZGM1YjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9ycG0vMDAwMS1zeXN0ZW0uaC1xdWVyeS5jLXN1cHBvcnQtbm9zaWduYXR1cmUucGF0Y2gKQEAgLTAsMCArMSw2MyBAQAorRnJvbSBkOGZjYzNjYmVlYzRkZWZiNWJhYmRlNWJkMDllYTI5NGRkM2ZkMDhiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBTdW4sIDMgSnVsIDIwMTYgMTk6MDE6NTkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gc3lzdGVtLmgvcXVlcnkuYzogc3VwcG9ydCBub3NpZ25hdHVyZQorCisqIERlZmluZSBTVVBQT1JUX05PU0lHTkFUVVJFUyB0byAxIGluIHN5c3RlbS5oCisqICFRVkFfSVNTRVQocXZhLT5xdmFfZmxhZ3MsIFNJR05BVFVSRSkgLT4gUVZBX0lTU0VUKHF2YS0+cXZhX2ZsYWdzLCBTSUdOQVRVUkUpLAorICBvdGhlcndpc2UsIHdoZW4gdXNlIC0tbm9zaWduYXR1cmUgd291bGQgcmVhZCBkYXRhYmFzZSBhbmQgdmVyaWZ5CisgIHNpZ25hdHVyZSwgdGhpcyBpcyBub3QgZXhwZWN0ZWQuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtTZW50IGVtYWlsIHRvIHJwbS1kZXZlbEBycG01Lm9yZ10KKworU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWIvcXVlcnkuYyB8IDYgKysrLS0tCisgc3lzdGVtLmggICAgfCA0ICsrLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYi9xdWVyeS5jIGIvbGliL3F1ZXJ5LmMKK2luZGV4IDUwYTc0NTMuLmI3NjFkNzYgMTAwNjQ0CistLS0gYS9saWIvcXVlcnkuYworKysrIGIvbGliL3F1ZXJ5LmMKK0BAIC05NTQsMTkgKzk1NCwxOSBAQCBKQkpERUJVRygoc3RkZXJyLCAiLS0+ICVzKCVwLCVwLCVwKVxuIiwgX19GVU5DVElPTl9fLCB0cywgcXZhLCBhcmd2KSk7CisgICAgIHZzZmxhZ3MgPSAocnBtVlNGbGFncykgcnBtRXhwYW5kTnVtZXJpYygiJXs/X3ZzZmxhZ3NfcXVlcnl9Iik7CisgICAgIHZzZmxhZ3MgPSAocnBtVlNGbGFncykgMDsJLyogWFhYIEZJWE1FOiBpZ25vcmUgZGVmYXVsdCBkaXNhYmxlcnMuICovCisgI2lmIGRlZmluZWQoU1VQUE9SVF9OT1NJR05BVFVSRVMpCistICAgIGlmICghUVZBX0lTU0VUKHF2YS0+cXZhX2ZsYWdzLCBESUdFU1QpKSB7CisrICAgIGlmIChRVkFfSVNTRVQocXZhLT5xdmFfZmxhZ3MsIERJR0VTVCkpIHsKKyAJVlNGX1NFVCh2c2ZsYWdzLCBOT1NIQTFIRUFERVIpOworIAlWU0ZfU0VUKHZzZmxhZ3MsIE5PTUQ1SEVBREVSKTsKKyAJVlNGX1NFVCh2c2ZsYWdzLCBOT1NIQTEpOworIAlWU0ZfU0VUKHZzZmxhZ3MsIE5PTUQ1KTsKKyAgICAgfQorLSAgICBpZiAoIVFWQV9JU1NFVChxdmEtPnF2YV9mbGFncywgU0lHTkFUVVJFKSkgeworKyAgICBpZiAoUVZBX0lTU0VUKHF2YS0+cXZhX2ZsYWdzLCBTSUdOQVRVUkUpKSB7CisgCVZTRl9TRVQodnNmbGFncywgTk9EU0FIRUFERVIpOworIAlWU0ZfU0VUKHZzZmxhZ3MsIE5PUlNBSEVBREVSKTsKKyAJVlNGX1NFVCh2c2ZsYWdzLCBOT0RTQSk7CisgCVZTRl9TRVQodnNmbGFncywgTk9SU0EpOworICAgICB9CistICAgIGlmICghUVZBX0lTU0VUKHF2YS0+cXZhX2ZsYWdzLCBIRFJDSEspKSB7CisrICAgIGlmIChRVkFfSVNTRVQocXZhLT5xdmFfZmxhZ3MsIEhEUkNISykpIHsKKyAJVlNGX1NFVCh2c2ZsYWdzLCBOT0hEUkNISyk7CisgICAgIH0KKyAgICAgVlNGX0NMUih2c2ZsYWdzLCBORUVEUEFZTE9BRCk7CS8qIFhYWCBuZWVkZWQ/ICovCitkaWZmIC0tZ2l0IGEvc3lzdGVtLmggYi9zeXN0ZW0uaAoraW5kZXggMmZmODkwNi4uYWQ0NjE5YSAxMDA2NDQKKy0tLSBhL3N5c3RlbS5oCisrKysgYi9zeXN0ZW0uaAorQEAgLTc4Nyw5ICs3ODcsOSBAQCBzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIgKnJjc2lkKGNvbnN0IGNoYXIgKnApIHsgXAorICNkZWZpbmUgU1VQUE9SVF9JMThOU1RSSU5HX1RZUEUJMQorIAorIC8qKgorLSAqIEVsaW1pbmF0ZSBzaWduYXR1cmUvZGlnZXN0IGRpc2FibGVycy4KKysgKiBTaWduYXR1cmUvZGlnZXN0IGRpc2FibGVycy4KKyAgKi8KKy0jdW5kZWYJU1VQUE9SVF9OT1NJR05BVFVSRVMKKysjZGVmaW5lIFNVUFBPUlRfTk9TSUdOQVRVUkVTIDEKKyAKKyAvKioKKyAgKiBQZXJtaXQgYXIoMSkgcGF5bG9hZHMuIERpc2FibGVkIHdoaWxlIHJwbWlvL2lvc20uYyBpcyB1bmRlciBkZXZlbG9wbWVudC4KKy0tIAorMi45LjAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL3JwbS9nY2M2LXN0ZGxpYi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL3JwbS9nY2M2LXN0ZGxpYi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTM3MmM2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vcnBtL2djYzYtc3RkbGliLnBhdGNoCkBAIC0wLDAgKzEsNTQgQEAKK2djYzYgaGFzIGZpeGVkIGEgbG9uZyBzdGFuZGluZyBjKysgaW5jbHVkZSBpc3N1ZSB3aGVyZSA8Y2hlYWRlcj4KK3dhcyBkaWZmZXJlbnQgZnJvbSA8aGVhZGVyLmg+IGluY2x1c2lvbiB2aWEKKworaHR0cHM6Ly9nY2MuZ251Lm9yZy9tbC9saWJzdGRjKysvMjAxNi0wMS9tc2cwMDAyNS5odG1sCisKK2FuZCBpdHMgYWxzbyBkZXNjaWJlZCBpbiBodHRwczovL2djYy5nbnUub3JnL2djYy02L3BvcnRpbmdfdG8uaHRtbAorcnBtaW8gY29tcG9uZW50IHVzZXMgc29tZSAuY3BwIGFuZCAuY2MgZmllcyB3aGljaCBuZWVkIHRvIHVzZQorQyBzdGRsaWIuaCBmcm9tIEMgbGlicmFyeSBhbmQgbm90IHRoZSBDKysgbGlic3RkYysrIGhlYWRlcgordGhlcmVmb3JlIHdlIHBhc3MgX0dMSUJDWFhfSU5DTFVERV9ORVhUX0NfSEVBREVSUyBzbyB0aGF0IGl0CitrZWVwcyB0aGUgb2xkIGJlaGF2aW9yCisKKy9hL2J1aWxkL3RtcC9zeXNyb290cy9yYXNwYmVycnlwaTIvdXNyL2luY2x1ZGUvYysrLzYuMC4xL2NzdGRsaWI6MTQzOjExOiBlcnJvcjogJzo6Z2V0ZW52JyBoYXMgbm90IGJlZW4gZGVjbGFyZWQKKyAgIHVzaW5nIDo6Z2V0ZW52OworICAgICAgICAgICBefn5+fn4KK0luIGZpbGUgaW5jbHVkZWQgZnJvbSAuLi8uLi9ycG0tNS40LjE1L3N5c3RlbS5oOjIwMTowLAorICAgICAgICAgICAgICAgICBmcm9tIC4uLy4uL3JwbS01LjQuMTUvcnBtaW8vcnBtanMuY3BwOjE6CisvYS9idWlsZC90bXAvc3lzcm9vdHMvcmFzcGJlcnJ5cGkyL3Vzci9pbmNsdWRlL2MrKy82LjAuMS9zdGRsaWIuaDo2MjoxMjogZXJyb3I6ICdzdGQ6OmdldGVudicgaGFzIG5vdCBiZWVuIGRlY2xhcmVkCisgdXNpbmcgc3RkOjpnZXRlbnY7CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworSW5kZXg6IHJwbS01LjQuMTUvcnBtaW8vTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBycG0tNS40LjE1Lm9yaWcvcnBtaW8vTWFrZWZpbGUuYW0KKysrKyBycG0tNS40LjE1L3JwbWlvL01ha2VmaWxlLmFtCitAQCAtMTUxLDcgKzE1MSw3IEBAIGxpYnJwbWlvX2xhX1NPVVJDRVMgPSBcCisgCWdyb2VzdGwuYyBoYW1zaS5jIGpoLmMga2VjY2FrLmMgbGFuZS5jIGx1ZmZhLmMgbWQyLmMgbWQ2LmMgcmFkaW9nYXR1bi5jXAorIAlzYWxzYTEwLmMgc2Fsc2EyMC5jIHNoYWJhbC5jIHNoYXZpdGUzLmMgc2ltZC5jIHNrZWluLmMgdGliMy5jIHRpZ2VyLmMgXAorIAlycG1naXQuYyBycG1pby1zdHViLmMgXAorLQlycG1qcy5jcHAgcnBtanNpby5jIHJwbWtleXJpbmcuYyBcCisrCXJwbWpuaS5jYyBycG1qcy5jcHAgcnBtanNpby5jIHJwbWtleXJpbmcuYyBcCisgCXJwbW5peC5jIHJwbW9kYmMuYyBycG1zcWwuYyBzZXQuYyBcCisgCWFyLmMgXAorIAlhcmd2LmMgXAorQEAgLTE5NSw3ICsxOTUsNiBAQCBsaWJycG1pb19sYV9TT1VSQ0VTID0gXAorIAlycG1ob29rLmMgXAorIAlycG1pby5jIFwKKyAJcnBtaW9iLmMgXAorLQlycG1qbmkuY2MgXAorIAlycG1rdS5jIFwKKyAJcnBtbG9nLmMgXAorIAlycG1sdGMuYyBcCitAQCAtMjc5LDcgKzI3OCw5IEBAIGtlY2Nhay5sbzogJCh0b3Bfc3JjZGlyKS9ycG1pby9rZWNjYWsuYworICNycG1qcy5sbzogJCh0b3Bfc3JjZGlyKS9ycG1pby9ycG1qcy5jCisgIwlAJChMVENPTVBJTEUpIC1PMCAtYyAkPAorIHJwbWpzLmxvOiAkKHRvcF9zcmNkaXIpL3JwbWlvL3JwbWpzLmNwcAorLQlAJChMVENPTVBJTEUpIC1PMCAtYyAkPAorKwlAJChMVENPTVBJTEUpIC1PMCAtYyAtRF9HTElCQ1hYX0lOQ0xVREVfTkVYVF9DX0hFQURFUlMgJDwKKytycG1qbmkubG86ICQodG9wX3NyY2RpcikvcnBtaW8vcnBtam5pLmNjCisrCUAkKExUQ09NUElMRSkgLU8wIC1jIC1EX0dMSUJDWFhfSU5DTFVERV9ORVhUX0NfSEVBREVSUyAkPAorIAorIFlBQ0MgPSBieWFjYyAtZAorIGdldGRhdGUuYzogZ2V0ZGF0ZS55CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9ycG0vcnBtLWVuc3VyZS1ycG0yY3Bpby1jYWxsLXJwbS1yZWxvY2F0aW9uLWNvZGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9ycG0vcnBtLWVuc3VyZS1ycG0yY3Bpby1jYWxsLXJwbS1yZWxvY2F0aW9uLWNvZGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjNhZjEwMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL3JwbS9ycG0tZW5zdXJlLXJwbTJjcGlvLWNhbGwtcnBtLXJlbG9jYXRpb24tY29kZS5wYXRjaApAQCAtMCwwICsxLDI1IEBACitXZSBuZWVkIHRvIGNhbGwgcnBtY2xpSW5pdCB0byBlbnN1cmUgdGhlIHJwbSByZWxvY2F0aW9uIGNvZGUgaXMgY2FsbGVkCithbmQgaXQgY29ycmVjdGx5IGhvbm91cnMgdGhlIHJlbG9jYXRpb24gZW52aXJvbm1lbnRhbCB2YXJpYWJsZXMuCisKK3doZW4gd2UgZXhwb3J0IHRoZSB3cnNkayBhbmQgc291cmNlIHRoZSBzZGssIHRoZW4gZXhlY3V0ZSBycG0yY3BpbyB4eHgucnBtfGNwaW8gLXQuCit3ZSB3aWxsIGdldCB0aGUgZm9sbG93aW5nIGVycm9yIDoKKyJycG0tNS40LjE0L3JwbWRiL2RiY29uZmlnLmM6NDkzOgorZGIzTmV3OiBBc3NlcnRpb24gYGRiT3B0cyAhPSAoKHZvaWQgKikwKSAmJiAqZGJPcHRzICE9ICdcMCcnIGZhaWxlZC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorU2lnbmVkLW9mZi1ieTogWmhpeGlvbmcgQ2hpIDx6aGl4aW9uZy5jaGlAd2luZHJpdmVyLmNvbT4KK0luZGV4OiBycG0tNS40LjE1L3Rvb2xzL3JwbTJjcGlvLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBycG0tNS40LjE1Lm9yaWcvdG9vbHMvcnBtMmNwaW8uYwkyMDEyLTA0LTI3IDAxOjQ2OjUxLjAwMDAwMDAwMCArMDgwMAorKysrIHJwbS01LjQuMTUvdG9vbHMvcnBtMmNwaW8uYwkyMDE2LTA5LTA1IDExOjA3OjMwLjQxOTkwMzMzOCArMDgwMAorQEAgLTg3LDYgKzg3LDggQEAKKyAjZW5kaWYKKyAJKHZvaWQpIHJwbXRzU2V0VlNGbGFncyh0cywgdnNmbGFncyk7CisgCisrCXJwbWNsaUluaXQoYXJnYywgYXJndiwgTlVMTCk7CisrCisgCS8qQC1tdXN0bW9kQCovICAgICAgLyogTENMOiBzZWdmYXVsdCAqLworIAlyYyA9IHJwbVJlYWRQYWNrYWdlRmlsZSh0cywgZmRpLCAicnBtMmNwaW8iLCAmaCk7CisgCS8qQD1tdXN0bW9kQCovCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9ycG0vcnBtZGItbW9yZS12ZXJib3NlLWVycm9yLWxvZ2dpbmctaW4tcnBtVGVtcEZpbGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9ycG0vcnBtZGItbW9yZS12ZXJib3NlLWVycm9yLWxvZ2dpbmctaW4tcnBtVGVtcEZpbGUucGF0Y2gKaW5kZXggODA5ZTU0ZS4uM2E2Zjg3NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vcnBtL3JwbWRiLW1vcmUtdmVyYm9zZS1lcnJvci1sb2dnaW5nLWluLXJwbVRlbXBGaWxlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL3JwbS9ycG1kYi1tb3JlLXZlcmJvc2UtZXJyb3ItbG9nZ2luZy1pbi1ycG1UZW1wRmlsZS5wYXRjaApAQCAtNSwzMiArNSwxMCBAQAogU2lnbmVkLW9mZi1ieTogTWFya3VzIExlaHRvbmVuIDxtYXJrdXMubGVodG9uZW5AbGludXguaW50ZWwuY29tPgogCiBkaWZmIC0tZ2l0IGEvcnBtZGIvc2lnbmF0dXJlLmMgYi9ycG1kYi9zaWduYXR1cmUuYwotaW5kZXggZGNlNmM0ZS4uYTFkMGYwNiAxMDA2NDQKK2luZGV4IDEwMDIwNGIuLmU1NmFiM2QgMTAwNjQ0CiAtLS0gYS9ycG1kYi9zaWduYXR1cmUuYwogKysrIGIvcnBtZGIvc2lnbmF0dXJlLmMKLUBAIC0zNyw2ICszNyw3IEBAIGludCBycG1UZW1wRmlsZShjb25zdCBjaGFyICogcHJlZml4LCBjb25zdCBjaGFyICoqIGZucHRyLCB2b2lkICogZmRwdHIpCi0gICAgIGludCB0ZW1wdXQ7Ci0gICAgIEZEX3QgZmQgPSBOVUxMOwotICAgICB1bnNpZ25lZCBpbnQgcmFuOwotKyAgICBpbnQgcmV0ID0gMDsKLSAKLSAgICAgaWYgKCFwcmVmaXgpIHByZWZpeCA9ICIiOwotIAotQEAgLTQ0LDggKzQ1LDExIEBAIGludCBycG1UZW1wRmlsZShjb25zdCBjaGFyICogcHJlZml4LCBjb25zdCBjaGFyICoqIGZucHRyLCB2b2lkICogZmRwdHIpCi0gICAgIGlmICghX2luaXRpYWxpemVkKSB7Ci0gCV9pbml0aWFsaXplZCA9IDE7Ci0gCXRlbXBmbiA9IHJwbUdlblBhdGgocHJlZml4LCB0cG1hY3JvLCBOVUxMKTsKLS0JaWYgKHJwbWlvTWtwYXRoKHRlbXBmbiwgMDc1NSwgKHVpZF90KSAtMSwgKGdpZF90KSAtMSkpCi0tCSAgICBnb3RvIGVycnhpdDsKLSsgICAgICAgIHJldCA9IHJwbWlvTWtwYXRoKHRlbXBmbiwgMDc1NSwgKHVpZF90KSAtMSwgKGdpZF90KSAtMSk7Ci0rICAgICAgICBpZiAocmV0KSB7Ci0rICAgICAgICAgICAgcnBtbG9nKFJQTUxPR19FUlIsIF8oImVycm9yIGNyZWF0aW5nIHRlbXBvcmFyeSBkaXJlY3RvcnkgJXM6ICVkXG4iKSwgdGVtcGZuLCByZXQpOwotKyAgICAgICAgICAgIGdvdG8gZXJyeGl0OwotKyAgICAgICAgfQotICAgICB9Ci0gCi0gICAgIC8qIFhYWCBzaG91bGQgcHJvYmFibHkgdXNlIG1rc3RlbXAgaGVyZSAqLwotQEAgLTY4LDEyICs3MiwxNiBAQCBpbnQgcnBtVGVtcEZpbGUoY29uc3QgY2hhciAqIHByZWZpeCwgY29uc3QgY2hhciAqKiBmbnB0ciwgdm9pZCAqIGZkcHRyKQorQEAgLTcyLDEyICs3MiwxNiBAQCBpbnQgcnBtVGVtcEZpbGUoY29uc3QgY2hhciAqIHByZWZpeCwgY29uc3QgY2hhciAqKiBmbnB0ciwgdm9pZCAqIGZkcHRyKQogICNlbmRpZgogIAogIAl0ZW1wdXQgPSB1cmxQYXRoKHRlbXBmbiwgJnRmbik7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9ycG0vcnBtZGItcHJldmVudC1yYWNlLWluLXRtcGRpci1jcmVhdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL3JwbS9ycG1kYi1wcmV2ZW50LXJhY2UtaW4tdG1wZGlyLWNyZWF0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0ODNmM2EKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9ycG0vcnBtZGItcHJldmVudC1yYWNlLWluLXRtcGRpci1jcmVhdGlvbi5wYXRjaApAQCAtMCwwICsxLDQxIEBACitycG1kYjogcHJldmVudCByYWNlIGluIHRtcGRpciBjcmVhdGlvbgorCitJZiB0d28gKG9yIG1vcmUpIGluc3RhbmNlcyBvZiBycG0gYXJlIHJ1bm5pbmcgYXQgdGhlIHNhbWUgdGltZSB0aGV5IG1heQorYmUgdHJ5aW5nIHRvIGNyZWF0ZSB0aGUgc2FtZSAoYmFzZS0pdGVtcG9yYXJ5IGRpcmVjdG9yeSBhdCB0aGUgc2FtZSB0aW1lCit3aGljaCBjYXVzZXMgdGhlIG90aGVyIG1rZGlyIHRvIGZhaWwgd2l0aCBFRVhJU1QuIFRoaXMgcGF0Y2ggcHJldmVudHMgYQorZmFpbHVyZSBjYXVzZWQgYnkgdGhpcyByYWNlIGJ5IGlnbm9yaW5nIEVFWElTVCBlcnJvciBvbiBkaXJlY3RvcnkKK2NyZWF0aW9uLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogTWFya3VzIExlaHRvbmVuIDxtYXJrdXMubGVodG9uZW5AbGludXguaW50ZWwuY29tPgorCitkaWZmIC0tZ2l0IGEvcnBtZGIvc2lnbmF0dXJlLmMgYi9ycG1kYi9zaWduYXR1cmUuYworaW5kZXggZGNlNmM0ZS4uMTAwMjA0YiAxMDA2NDQKKy0tLSBhL3JwbWRiL3NpZ25hdHVyZS5jCisrKysgYi9ycG1kYi9zaWduYXR1cmUuYworQEAgLTM3LDYgKzM3LDcgQEAgaW50IHJwbVRlbXBGaWxlKGNvbnN0IGNoYXIgKiBwcmVmaXgsIGNvbnN0IGNoYXIgKiogZm5wdHIsIHZvaWQgKiBmZHB0cikKKyAgICAgaW50IHRlbXB1dDsKKyAgICAgRkRfdCBmZCA9IE5VTEw7CisgICAgIHVuc2lnbmVkIGludCByYW47CisrICAgIGludCByZXQgPSAwOworIAorICAgICBpZiAoIXByZWZpeCkgcHJlZml4ID0gIiI7CisgCitAQCAtNDQsOCArNDUsMTEgQEAgaW50IHJwbVRlbXBGaWxlKGNvbnN0IGNoYXIgKiBwcmVmaXgsIGNvbnN0IGNoYXIgKiogZm5wdHIsIHZvaWQgKiBmZHB0cikKKyAgICAgaWYgKCFfaW5pdGlhbGl6ZWQpIHsKKyAJX2luaXRpYWxpemVkID0gMTsKKyAJdGVtcGZuID0gcnBtR2VuUGF0aChwcmVmaXgsIHRwbWFjcm8sIE5VTEwpOworLQlpZiAocnBtaW9Na3BhdGgodGVtcGZuLCAwNzU1LCAodWlkX3QpIC0xLCAoZ2lkX3QpIC0xKSkKKy0JICAgIGdvdG8gZXJyeGl0OworKyAgICAgICAgcmV0ID0gcnBtaW9Na3BhdGgodGVtcGZuLCAwNzU1LCAodWlkX3QpIC0xLCAoZ2lkX3QpIC0xKTsKKysgICAgICAgIGlmIChyZXQgJiYgcmV0ICE9IEVFWElTVCkgeworKyAgICAgICAgICAgIHJwbWxvZyhSUE1MT0dfRVJSLCBfKCJlcnJvciBjcmVhdGluZyB0ZW1wb3JhcnkgZGlyZWN0b3J5ICVzOiAlZFxuIiksIHRlbXBmbiwgcmV0KTsKKysgICAgICAgICAgICBnb3RvIGVycnhpdDsKKysgICAgICAgIH0KKyAgICAgfQorIAorICAgICAvKiBYWFggc2hvdWxkIHByb2JhYmx5IHVzZSBta3N0ZW1wIGhlcmUgKi8KKy0tIAorMi42LjYKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vcnBtXzUuNCtjdnMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9ycG1fNS40K2N2cy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDk5MWY2ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9ycG1fNS40K2N2cy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDczMCArMCwwIEBACi1TVU1NQVJZID0gIlRoZSBSUE0gcGFja2FnZSBtYW5hZ2VtZW50IHN5c3RlbSIKLURFU0NSSVBUSU9OID0gIlRoZSBSUE0gUGFja2FnZSBNYW5hZ2VyIChSUE0pIGlzIGEgcG93ZXJmdWwgY29tbWFuZCBsaW5lIGRyaXZlbiBcCi1wYWNrYWdlIG1hbmFnZW1lbnQgc3lzdGVtIGNhcGFibGUgb2YgaW5zdGFsbGluZywgdW5pbnN0YWxsaW5nLCBcCi12ZXJpZnlpbmcsIHF1ZXJ5aW5nLCBhbmQgdXBkYXRpbmcgc29mdHdhcmUgcGFja2FnZXMuIEVhY2ggc29mdHdhcmUgXAotcGFja2FnZSBjb25zaXN0cyBvZiBhbiBhcmNoaXZlIG9mIGZpbGVzIGFsb25nIHdpdGggaW5mb3JtYXRpb24gYWJvdXQgXAotdGhlIHBhY2thZ2UgbGlrZSBpdHMgdmVyc2lvbiwgYSBkZXNjcmlwdGlvbiwgZXRjLiIKLQotU1VNTUFSWV8ke1BOfS1saWJzID0gIkxpYnJhcmllcyBmb3IgbWFuaXB1bGF0aW5nIFJQTSBwYWNrYWdlcyIKLURFU0NSSVBUSU9OXyR7UE59LWxpYnMgPSAiVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHRoZSBSUE0gc2hhcmVkIGxpYnJhcmllcy4iCi0KLVNVTU1BUllfJHtQTn0tZGV2ID0gIkRldmVsb3BtZW50IGZpbGVzIGZvciBtYW5pcHVsYXRpbmcgUlBNIHBhY2thZ2VzIgotREVTQ1JJUFRJT05fJHtQTn0tZGV2ID0gIlRoaXMgcGFja2FnZSBjb250YWlucyB0aGUgUlBNIEMgbGlicmFyeSBhbmQgaGVhZGVyIGZpbGVzLiBUaGVzZSBcCi1kZXZlbG9wbWVudCBmaWxlcyB3aWxsIHNpbXBsaWZ5IHRoZSBwcm9jZXNzIG9mIHdyaXRpbmcgcHJvZ3JhbXMgdGhhdCBcCi1tYW5pcHVsYXRlIFJQTSBwYWNrYWdlcyBhbmQgZGF0YWJhc2VzLiBUaGVzZSBmaWxlcyBhcmUgaW50ZW5kZWQgdG8gXAotc2ltcGxpZnkgdGhlIHByb2Nlc3Mgb2YgY3JlYXRpbmcgZ3JhcGhpY2FsIHBhY2thZ2UgbWFuYWdlcnMgb3IgYW55IFwKLW90aGVyIHRvb2xzIHRoYXQgbmVlZCBhbiBpbnRpbWF0ZSBrbm93bGVkZ2Ugb2YgUlBNIHBhY2thZ2VzIGluIG9yZGVyIFwKLXRvIGZ1bmN0aW9uLiIKLQotU1VNTUFSWV8ke1BOfS1jb21tb24gPSAiQ29tbW9uIFJQTSBwYXRocywgc2NyaXB0cywgZG9jdW1lbnRhdGlvbiBhbmQgY29uZmlndXJhdGlvbiIKLURFU0NSSVBUSU9OXyR7UE59LWNvbW1vbiA9ICJUaGUgcnBtLWNvbW1vbiBwYWNrYWdlIGNvbnRhaW5zIHBhdGhzLCBzY3JpcHRzLCBkb2N1bWVudGF0aW9uIFwKLWFuZCBjb25maWd1cmF0aW9uIGNvbW1vbiBiZXR3ZWVuIFJQTSBQYWNrYWdlIE1hbmFnZXIuIgotCi1TVU1NQVJZXyR7UE59LWJ1aWxkID0gIlNjcmlwdHMgYW5kIGV4ZWN1dGFibGUgcHJvZ3JhbXMgdXNlZCB0byBidWlsZCBwYWNrYWdlcyIKLURFU0NSSVBUSU9OXyR7UE59LWJ1aWxkID0gIlRoZSBycG0tYnVpbGQgcGFja2FnZWMgb250YWlucyB0aGUgc2NyaXB0cyBhbmQgZXhlY3V0YWJsZSBwcm9ncmFtcyBcCi10aGF0IGFyZSB1c2VkIHRvIGJ1aWxkIHBhY2thZ2VzIHVzaW5nIHRoZSBSUE0gUGFja2FnZSBNYW5hZ2VyLiIKLQotU1VNTUFSWV9weXRob24tcnBtID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgYXBwcyB3aGljaCB3aWxsIG1hbnVwdWxhdGUgUlBNIHBhY2thZ2VzIgotREVTQ1JJUFRJT05fcHl0aG9uLXJwbSA9ICJUaGUgcnBtLXB5dGhvbiBwYWNrYWdlIGNvbnRhaW5zIGEgbW9kdWxlIHRoYXQgcGVybWl0cyBhcHBsaWNhdGlvbnMgXAotd3JpdHRlbiBpbiB0aGUgUHl0aG9uIHByb2dyYW1taW5nIGxhbmd1YWdlIHRvIHVzZSB0aGUgaW50ZXJmYWNlIFwKLXN1cHBsaWVkIGJ5IHRoZSBSUE0gUGFja2FnZSBNYW5hZ2VyIGxpYnJhcmllcy4iCi0KLVNVTU1BUllfcGVybC1tb2R1bGUtcnBtID0gIlBlcmwgYmluZGluZ3MgZm9yIGFwcHMgd2hpY2ggd2lsbCBtYW5pcHVsYXRlIFJQTSBwYWNrYWdlcyIKLURFU0NSSVBUSU9OX3BlcmwtbW9kdWxlcy1ycG0gPSAiVGhlIHBlcmwtbW9kdWxlcy1ycG0gcGFja2FnZSBjb250YWlucyBhIG1vZHVsZSB0aGF0IHBlcm1pdHMgYXBwbGljYXRpb25zIFwKLXdyaXR0ZW4gaW4gdGhlIFBlcmwgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgdG8gdXNlIHRoZSBpbnRlcmZhY2UgXAotc3VwcGxpZWQgYnkgdGhlIFJQTSBQYWNrYWdlIE1hbmFnZXIgbGlicmFyaWVzLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL3JwbTUub3JnLyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEgJiBBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIgotTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL3JwbWlvL21vbmdvLmM7YmVnaW49NTtlbmQ9MTg7bWQ1PWQ4MzI3YmEyYzcxNjY0YzA1OTE0M2U2ZDMzM2I4OTAxIgotCi0jIFdlIG11c3QgaGF2ZSBnZXR0ZXh0LW5hdGl2ZSwgd2UgbmVlZCBnZXR0ZXh0aXplLCB3aGljaCBtYXkgbm90IGJlIHByb3ZpZGVkCi1ERVBFTkRTID0gImxpYnBjcmUgYXR0ciBhY2wgb3NzcC11dWlkIGZpbGUgYnlhY2MtbmF0aXZlIGdldHRleHQtbmF0aXZlIgotREVQRU5EU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSIKLQotIyBBcHBseSB2YXJpb3VzIGZpeHVwcyB0aGF0IGFyZSB1bmlxdWUgdG8gdGhlIENWUyBlbnZpcm9ubWVudAotZG9fZml4dXBfdW5wYWNrICgpIHsKLQkjICdsbicgaXNuJ3QgcmVsaWFibGUsIGFuZCAnbXYnIGNvdWxkIGJyZWFrIGxhdGVyIGJ1aWxkcwotCXJtIC1yZiAke1N9L3N5Y2sgOyBjcCAtciAke1dPUktESVJ9L3N5Y2sgJHtTfS8uCi0Jcm0gLXJmICR7U30vbHVhIDsgY3AgLXIgJHtXT1JLRElSfS9sdWEgJHtTfS8uCi0Jcm0gLXJmICR7U30vcG9wdCA7IGNwIC1yICR7V09SS0RJUn0vcG9wdCAke1N9Ly4KLQlybSAtcmYgJHtTfS9iZWVjcnlwdCA7IGNwIC1yICR7V09SS0RJUn0vYmVlY3J5cHQgJHtTfS8uCi19Ci0KLWFkZHRhc2sgZml4dXBfdW5wYWNrIGFmdGVyIGRvX3VucGFjayBiZWZvcmUgZG9fcGF0Y2gKLQotIyBUaGlzIHJlY2lwZSBpcyByZWFsbHkgZGVzaWduZWQgZm9yIGRldmVsb3BtZW50Li4uIHRvIFRyeSBvdXQgdGhlIGxhdGVzdAotIyBjb21tdW5pdHkgd29yayBpbiBwcm9ncmVzcy4KLURFRkFVTFRfUFJFRkVSRU5DRSA9ICItMSIKLQotUyA9ICIke1dPUktESVJ9L3JwbSIKLQotIyBycG0yY3BpbyBpcyBhIHNoZWxsIHNjcmlwdCwgd2hpY2ggaXMgcGFydCBvZiB0aGUgcnBtIHNyYy5ycG0uICBJdCBpcyBuZWVkZWQKLSMgaW4gb3JkZXIgdG8gZXh0cmFjdCB0aGUgZGlzdHJpYnV0aW9uIFNSUE0gaW50byBhIGZvcm1hdCB3ZSBjYW4gZXh0cmFjdC4uLgotU1JDX1VSSSA9ICJjdnM6Ly9hbm9ueW1vdXNAcnBtNS5vcmcvY3ZzO3RhZz1ycG0tNV80O21vZHVsZT1ycG0gXAotCSAgIGN2czovL2Fub255bW91c0BycG01Lm9yZy9jdnM7dGFnPXJwbS01XzQ7bW9kdWxlPXN5Y2sgXAotCSAgIGN2czovL2Fub255bW91c0BycG01Lm9yZy9jdnM7dGFnPXJwbS01XzQ7bW9kdWxlPWx1YSBcCi0JICAgY3ZzOi8vYW5vbnltb3VzQHJwbTUub3JnL2N2czt0YWc9cnBtLTVfNDttb2R1bGU9cG9wdCBcCi0JICAgY3ZzOi8vYW5vbnltb3VzQHJwbTUub3JnL2N2czt0YWc9cnBtLTVfNDttb2R1bGU9YmVlY3J5cHQgXAotCSAgIGZpbGU6Ly9wZXJmaWxlX3JwbWRlcHMuc2ggXAotCSAgIGZpbGU6Ly9weXRob25kZXBzLnNoIFwKLSIKLQotIyBCdWcgZml4ZXMKLVNSQ19VUkkgKz0gIiBcCi0JICAgZmlsZTovL2hlYWRlci1pbmNsdWRlLWZpeC5wYXRjaCBcCi0JICAgZmlsZTovL3JwbS1saWJzcWwtZml4LnBhdGNoIFwKLQkgICBmaWxlOi8vcnBtLXBsYXRmb3JtLnBhdGNoIFwKLQkgICBmaWxlOi8vcnBtLXBsYXRmb3JtMi5wYXRjaCBcCi0JICAgZmlsZTovL3JwbS10b29scy1tdHJlZS1MREZMQUdTLnBhdGNoIFwKLQkgICBmaWxlOi8vcnBtLWNhbm9uYXJjaC5wYXRjaCBcCi0JICAgZmlsZTovL3JwbS1uby1sb29wbXNnLnBhdGNoIFwKLQkgICBmaWxlOi8vcnBtLXJlc29sdmVkZXAucGF0Y2ggXAotCSAgIGZpbGU6Ly9ycG0tcGFja2FnZW9yaWdpbi5wYXRjaCBcCi0JICAgZmlsZTovL3VjbGliYy1zdXBwb3J0LnBhdGNoIFwKLQkgICBmaWxlOi8vcnBtYXRjaC5wYXRjaCBcCi0JICAgZmlsZTovL21ha2VmaWxlLWFtLWV4ZWMtaG9vay5wYXRjaCBcCi0JICAgZmlsZTovL3B5dGhvbi1ycG0tcnBtc2Vuc2UucGF0Y2ggXAotCSAgIGZpbGU6Ly9kZWJ1Z2VkaXQtc2Vndi5wYXRjaCBcCi0JICAgZmlsZTovL2RlYnVnZWRpdC12YWxpZC1maWxlLXRvLWZpeC1zZWdtZW50LWZhdWx0LnBhdGNoIFwKLQkgICBmaWxlOi8vcnBtLXBsYXRmb3JtLWZpbGUtZml4LnBhdGNoIFwKLQkgICBmaWxlOi8vcnBtLWxzYi1jb21wYXRpYmlsaXR5LnBhdGNoIFwKLQkgICBmaWxlOi8vcnBtLXRhZy1nZW5lcmF0ZS1lbmRpYW4tY29udmVyc2lvbi1maXgucGF0Y2ggXAotCSAgIGZpbGU6Ly9ycG0taGFyZGxpbmstc2VnZmF1bHQtZml4LnBhdGNoIFwKLQkgICBmaWxlOi8vcnBtLXBheWxvYWQtdXNlLWhhc2hlZC1pbm9kZS5wYXRjaCBcCi0JICAgZmlsZTovL3JwbS1maXgtbG9naW8tY3AucGF0Y2ggXAotCSAgIGZpbGU6Ly8wMDAxLXVzaW5nLXBvcHRQYXJzZUFyZ3ZTdHJpbmctdG8tcGFyc2UtdGhlLV9ncGdfY2hlY2tfcGEucGF0Y2ggXAotCSAgIGZpbGU6Ly9ycG0tb3BlbmRiLWJlZm9yZS12ZXJpZnlzY3JpcHQtdG8tYXZvaWQtbnVsbC1wb2ludC5wYXRjaCBcCi0JICAgZmlsZTovLzAwMDEtZGVmaW5lLUVNX0FBUkNINjQucGF0Y2ggXAotCSAgIGZpbGU6Ly9ycG0tcnBtZmMuYy1maXgtZm9yLU4zMi1NSVBTNjQucGF0Y2ggXAotCSAgIGZpbGU6Ly9ycG0tbGliLXRyYW5zYWN0aW9uLmMtZml4LWZpbGUtY29uZmxpY3RzLWZvci1taXBzNjQtTjMyLnBhdGNoIFwKLQkgICBmaWxlOi8vcnBtLW1vbmdvZGItc2FzbC5wYXRjaCBcCi0JICAgZmlsZTovL3JwbS1maXgtcGFyc2VFbWJlZGRlZC5wYXRjaCBcCi0JICAgZmlsZTovL3JwbS1ycG1pby1oZWFkZXJzLnBhdGNoIFwKLQkgICBmaWxlOi8vcnBtLXB5dGhvbi1yZXN0b3JlLW9yaWdpbi5wYXRjaCBcCi0JICAgZmlsZTovL3JwbS1rZWNjYWstc3NlLWludHJpbi5wYXRjaCBcCi0JICAgZmlsZTovL3JwbS1hdG9taWMtb3BzLnBhdGNoIFwKLQkgICBmaWxlOi8vcnBtLWdudS1hdG9taWMucGF0Y2ggXAotCSAgIGZpbGU6Ly9ycG0tdGFnbmFtZS10eXBlLnBhdGNoIFwKLQkgICBmaWxlOi8vcnBtLXB5dGhvbi10YWduYW1lLnBhdGNoIFwKLQkgICBmaWxlOi8vcnBtLXB5dGhvbi1BZGRFcmFzZS5wYXRjaCBcCi0JICAgZmlsZTovL3JwbS1ycG1wZ3AtcG9wdC5wYXRjaCBcCi0JICAgZmlsZTovLzAwMDEtRGlzYWJsZS1fX3N5bmNfYWRkX2FuZF9mZXRjaF84LW9uLW5pb3MyLnBhdGNoIFwKLSIKLQotIyBPRSBzcGVjaWZpYyBjaGFuZ2VzCi1TUkNfVVJJICs9ICIgXAotCSAgIGZpbGU6Ly9ycG0tbG9nLWF1dG8tcm0ucGF0Y2ggXAotCSAgIGZpbGU6Ly9ycG0tZGItcmVkdWNlLnBhdGNoIFwKLQkgICBmaWxlOi8vcnBtLWF1dG9nZW4ucGF0Y2ggXAotCSAgIGZpbGU6Ly9ycG0tc2hvd3JjLnBhdGNoIFwKLQkgICBmaWxlOi8vcnBtLWZpbGVjbGFzcy5wYXRjaCBcCi0JICAgZmlsZTovL3JwbS1zY3JpcHRsZXRleGVjaGVscGVyLnBhdGNoIFwKLQkgICBmaWxlOi8vcnBtZGVwcy1vZWNvcmUucGF0Y2ggXAotCSAgIGZpbGU6Ly9ycG0tbm8tcGVybC11cnBtLnBhdGNoIFwKLQkgICBmaWxlOi8vcnBtLW1hY3Jvcy5wYXRjaCBcCi0JICAgZmlsZTovL3JwbS1sdWEucGF0Y2ggXAotCSAgIGZpbGU6Ly9ycG0tb3NzcC11dWlkLnBhdGNoIFwKLQkgICBmaWxlOi8vcnBtLXV1aWQtaW5jbHVkZS5wYXRjaCBcCi0JICAgZmlsZTovL3JwbS1wa2djb25maWdkZXBzLnBhdGNoIFwKLQkgICBmaWxlOi8vbm8tbGRmbGFncy1pbi1wa2djb25maWcucGF0Y2ggXAotCSAgIGZpbGU6Ly9kYmNvbnZlcnQucGF0Y2ggXAotCSAgIGZpbGU6Ly9ycG0tZGJfYnVmZmVyX3NtYWxsLnBhdGNoIFwKLQkgICBmaWxlOi8vcnBtLXB5LWluaXQucGF0Y2ggXAotCSAgIGZpbGU6Ly9ycG0tcmVsb2MtbWFjcm9zLnBhdGNoIFwKLQkgICBmaWxlOi8vcnBtLWRiNS1vci1kYjYucGF0Y2ggXAotCSAgIGZpbGU6Ly9ycG0tZGI2MC5wYXRjaCBcCi0JICAgZmlsZTovL3JwbXF2X2NjX2JfZ29uZS5wYXRjaCBcCi0JICAgZmlsZTovL3JwbS1yZWFscGF0aC5wYXRjaCBcCi0JICAgZmlsZTovL3JwbS1jaGVjay1yb290cGF0aC1yZWFzb25hYmxlbmVzcy5wYXRjaCBcCi0JICAgZmlsZTovL3JwbS1tYWNyb3MuaW4tZGlzYWJsZS1leHRlcm5hbC1rZXktc2VydmVyLnBhdGNoIFwKLQkgICBmaWxlOi8vY29uZmlndXJlLmFjLWNoZWNrLWZvci1ib3RoLWdwZzItYW5kLWdwZy5wYXRjaCBcCi0JICAgZmlsZTovL3JwbS1kaXNhYmxlLWF1dG8tc3RhY2stcHJvdGVjdG9yLnBhdGNoIFwKLQkgICBmaWxlOi8vcG9wdC1kaXNhYmxlLWF1dG8tc3RhY2stcHJvdGVjdG9yLnBhdGNoIFwKLQkgICBmaWxlOi8vcnBtLXN5Y2stZml4LWdyYW0ucGF0Y2ggXAotCSAgIGZpbGU6Ly9ycG0tcnBtZGItZ3JhbW1hci5wYXRjaCBcCi0JICAgZmlsZTovL3JwbS1kaXNhYmxlLWJsYWtldGVzdC5wYXRjaCBcCi0JICAgZmlsZTovL3JwbS1hdXRvZ2VuLWZvcmNlLnBhdGNoIFwKLSIKLQotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIlwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcnBtLUZpeC1idWlsZC1vbi1tdXNsLnBhdGNoIFwKLSIKLSMgVW5jb21tZW50IHRoZSBmb2xsb3dpbmcgbGluZSB0byBlbmFibGUgcGxhdGZvcm0gc2NvcmUgZGVidWdnaW5nCi0jIFRoaXMgaXMgdXNlZnVsIHdoZW4gaWRlbnRpZnlpbmcgaXNzdWVzIHdpdGggU21hcnQgYmVpbmcgdW5hYmxlCi0jIHRvIHByb2Nlc3MgY2VydGFpbiBwYWNrYWdlIGZlZWRzLgotI1NSQ19VUkkgKz0gImZpbGU6Ly9ycG0tZGVidWctcGxhdGZvcm0ucGF0Y2giCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQKLQotYWNwYXRocyA9ICItSSAke1N9L2RiL2Rpc3QvYWNsb2NhbCAtSSAke1N9L2RiL2Rpc3QvYWNsb2NhbF9qYXZhIgotCi0jIFRoZSBsb2NhbCBkaXN0cmlidXRpb24gbWFjcm8gZGlyZWN0b3J5Ci1kaXN0cm9tYWNyb2RpciA9ICIke2xpYmRpcn0vcnBtL3Bva3kiCi0KLSMgU3BlY2lmeSB0aGUgZGVmYXVsdCBycG0gbWFjcm9zIGluIHRlcm1zIG9mIGFkanVzdGFibGUgdmFyaWFibGVzCi1ycG1fbWFjcm9zID0gIiV7X3VzcmxpYnJwbX0vbWFjcm9zOiV7X3VzcmxpYnJwbX0vJHtESVNUUk99L21hY3Jvczole191c3JsaWJycG19LyR7RElTVFJPfS8le190YXJnZXR9L21hY3Jvczole19ldGNycG19L21hY3Jvcy4qOiV7X2V0Y3JwbX0vbWFjcm9zOiV7X2V0Y3JwbX0vJXtfdGFyZ2V0fS9tYWNyb3M6fi8ub2VycG1tYWNyb3MiCi1ycG1fbWFjcm9zX2NsYXNzLW5hdGl2ZSA9ICIle191c3JsaWJycG19L21hY3Jvczole191c3JsaWJycG19LyR7RElTVFJPfS9tYWNyb3M6JXtfdXNybGlicnBtfS8ke0RJU1RST30vJXtfdGFyZ2V0fS9tYWNyb3M6fi8ub2VycG1tYWNyb3MiCi1ycG1fbWFjcm9zX2NsYXNzLW5hdGl2ZXNkayA9ICIle191c3JsaWJycG19L21hY3Jvczole191c3JsaWJycG19LyR7RElTVFJPfS9tYWNyb3M6JXtfdXNybGlicnBtfS8ke0RJU1RST30vJXtfdGFyZ2V0fS9tYWNyb3M6fi8ub2VycG1tYWNyb3MiCi0KLSMgc3FsaXRlIGx1YSB0Y2wgYXVnZWFzIG5zcyBnY3J5cHQgbmVvbiB4eiB4YXIga2V5dXRpbHMgcGVybCBzZWxpbnV4Ci0KLSMgU2V0IHRoZSBkaWdlc3QgYWxnb3JpdGhtIHVzZWQgZm9yIHZlcmlmeWluZyBmaWxlIGludGVncml0eQotIyBJZiB0aGlzIHZhbHVlIGNoYW5nZXMsIGFuZCB0d28gZGlmZmVyZW50IHBhY2thZ2VzIGhhdmUgZGlmZmVyZW50IHZhbHVlcwotIyB0aGUgInNhbWUgZmlsZSIgdmFsaWRhdGlvbiAodHdvIHBhY2thZ2VzIGhhdmUgYSBub24tY29uZmxpY3QgZmlsZSkKLSMgd2lsbCBmYWlsLiAgVGhpcyBtYXkgbGVhZCB0byB1cGdyYWRlIHByb2JsZW1zLiAgWW91IHNob3VsZCB0cmVhdCB0aGlzCi0jIHZhbHVlIGFzIGEgZGlzdHJpYnV0aW9uIHdpZGUgc2V0dGluZywgYW5kIG9ubHkgY2hhbmdlIGl0IHdoZW4geW91IGludGVuZAotIyBhIGZ1bGwgc3lzdGVtIHVwZ3JhZGUhCi0jCi0jIERlZmluZWQgZmlsZSBkaWdlc3QgYWxnb3JpdGhtIHZhbHVlcyAobm90ZTogbm90IGFsbCBhcmUgYXZhaWxhYmxlISk6Ci0jICAgICAgIDEgICAgICAgTUQ1IChsZWdhY3kgUlBNIGRlZmF1bHQpCi0jICAgICAgIDIgICAgICAgU0hBMQotIyAgICAgICAzICAgICAgIFJJUEVNRC0xNjAKLSMgICAgICAgNSAgICAgICBNRDIKLSMgICAgICAgNiAgICAgICBUSUdFUi0xOTIKLSMgICAgICAgOCAgICAgICBTSEEyNTYKLSMgICAgICAgOSAgICAgICBTSEEzODQKLSMgICAgICAgMTAgICAgICBTSEE1MTIKLSMgICAgICAgMTEgICAgICBTSEEyMjQKLSMgICAgICAgMTA0ICAgICBNRDQKLSMgICAgICAgMTA1ICAgICBSSVBFTUQtMTI4Ci0jICAgICAgIDEwNiAgICAgQ1JDLTMyCi0jICAgICAgIDEwNyAgICAgQURMRVItMzIKLSMgICAgICAgMTA4ICAgICBDUkMtNjQgKEVDTUEtMTgyIHBvbHlub21pYWwsIHVudGVzdGVkIHVpbnQ2NF90IHByb2JsZW1zKQotIyAgICAgICAxMDkgICAgIEplbmtpbnMgbG9va3VwMy5jIGhhc2hsaXR0bGUoKQotIyAgICAgICAxMTEgICAgIFJJUEVNRC0yNTYKLSMgICAgICAgMTEyICAgICBSSVBFTUQtMzIwCi0jICAgICAgIDE4OCAgICAgQkxBS0UyQgotIyAgICAgICAxODkgICAgIEJMQUtFMkJQCi0jICAgICAgIDE5MCAgICAgQkxBS0UyUwotIyAgICAgICAxOTEgICAgIEJMQUtFMlNQCi1SUE1fRklMRV9ESUdFU1RfQUxHTyA/PSAiMSIKLQotIyBBbGwgcGFja2FnZXMgYnVpbGQgd2l0aCBSUE01IGNvbnRhaW4gYSBub24tcmVwdWRpYWJsZSBzaWduYXR1cmUuCi0jIFRoZSBwdXJwb3NlIG9mIHRoaXMgc2lnbmF0dXJlIGlzIG5vdCB0byBzaG93IGF1dGhlbnRpY2l0eSBvZiBhIHBhY2thZ2UsCi0jIGJ1dCBpbnN0ZWFkIGFjdCBhcyBhIHNlY29uZGFyeSBwYWNrYWdlIHdpZGUgdmFsaWRhdGlvbiB0aGF0IHNob3dzIGl0Ci0jIHdhc24ndCBkYW1hZ2VkIGJ5IGFjY2lkZW50IGluIHRyYW5zcG9ydC4gIChXaGVuIGxhdGVyIHlvdSBzaWduIHRoZSBwYWNrYWdlLCAKLSMgdGhpcyBzaWduYXR1cmUgbWF5IG9yIG1heSBub3QgYmUgcmVwbGFjZWQgYXMgdGhlcmUgYXJlIHRocmVlIHNpZ25hdHVyZSAKLSMgc2xvdHMsIG9uZSBmb3IgRFNBL1JTQSwgb25lIGZvciBFQ1NEQSwgYW5kIG9uZSByZXNlcnZlZC4pCi0jCi0jIFRoZXJlIGlzIGEga25vd24gaXNzdWUgdy8gUlNBIHNpZ25hdHVyZXMgdGhhdCBpZiB0aGV5IHN0YXJ0IHdpdGggYW4gMHgwMAotIyB0aGUgc2lnbmluZyBhbmQgdmFsaWRhdGlvbiBtYXkgZmFpbC4KLSMKLSMgVGhlIGZvbGxvd2luZyBpcyB0aGUgbGlzdCBvZiBjaG9pY2VzIGZvciB0aGUgbm9uLXJwdWRpYWJsZSBzaWduYXR1cmUKLSMgKG5vdGU6IG5vdCBhbGwgb2YgdGhlc2UgYXJlIGltcGxlbWVudGVkKToKLSMgICAgICAgRFNBICAgICAgICAgICAgIChkZWZhdWx0KQotIyAgICAgICBSU0EgICAgICAgICAgICAgKGltcGxpZXMgU0hBMSkKLSMgICAgICAgRUNEU0EgICAgICAgICAgIChpbXBsaWVzIFNIQTI1NikKLSMgICAgICAgRFNBL1NIQTEKLSMgICAgICAgRFNBL1NIQTIyNAotIyAgICAgICBEU0EvU0hBMjU2Ci0jICAgICAgIERTQS9TSEEzODQKLSMgICAgICAgRFNBL1NIQTUxMgotIyAgICAgICBSU0EvU0hBMQotIyAgICAgICBSU0EvU0hBMjI0Ci0jICAgICAgIFJTQS9TSEEyNTYKLSMgICAgICAgUlNBL1NIQTM4NAotIyAgICAgICBSU0EvU0hBNTEyCi0jICAgICAgIEVDRFNBL1NIQTIyNCAgICAodXNpbmcgTklTVCBQLTIyNCkKLSMgICAgICAgRUNEU0EvU0hBMjU2ICAgICh1c2luZyBOSVNUIFAtMjU2KQotIyAgICAgICBFQ0RTQS9TSEEzODQgICAgKHVzaW5nIE5JU1QgUC0zODQpCi0jICAgICAgIEVDRFNBL1NIQTUxMiAgICAodXNpbmcgTklTVCBQLTUyMSkKLVJQTV9TRUxGX1NJR05fQUxHTyA/PSAiRFNBIgotCi0jIE5vdGU6IHBlcmwgYW5kIHNxbGl0ZSB3L28gZGIgc3BlY2lmaWVkIGRvZXMgbm90IGN1cnJlbnRseSB3b3JrLgotIyAgICAgICB0Y2wsIGF1Z2VhcywgbnNzLCBnY3J5cHQsIHhhciBhbmQga2V5dXRpbHMgc3VwcG9ydCBpcyB1bnRlc3RlZC4KLVBBQ0tBR0VDT05GSUcgPz89ICJkYiBiemlwMiB6bGliIHBvcHQgb3BlbnNzbCBsaWJlbGYgcHl0aG9uIgotCi0jIE5vdGU6IHN3aXRjaGluZyB0byBpbnRlcm5hbCBwb3B0IG1heSBub3Qgd29yaywgYXMgaXQgd2lsbCBnZW5lcmF0ZQotIyBhIHNoYXJlZCBsaWJyYXJ5IHdoaWNoIHdpbGwgaW50ZW50aW9uYWxseSBub3QgYmUgcGFja2FnZWQuCi0jCi0jIElmIHlvdSBpbnRlbmQgdG8gdXNlIHRoZSBpbnRlcm5hbCB2ZXJzaW9uLCBhZGRpdGlvbmFsIHdvcmsgbWF5IGJlIHJlcXVpcmVkLgotUEFDS0FHRUNPTkZJR1twb3B0XSA9ICItLXdpdGgtcG9wdD1leHRlcm5hbCwtLXdpdGgtcG9wdD1pbnRlcm5hbCxwb3B0LCIKLQotUEFDS0FHRUNPTkZJR1tiemlwMl0gPSAiLS13aXRoLWJ6aXAyLC0td2l0aG91dC1iemlwMixiemlwMiwiCi1QQUNLQUdFQ09ORklHW3h6XSA9ICItLXdpdGgteHosLS13aXRob3V0LXh6LHh6LCIKLVBBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWIsLS13aXRob3V0LXpsaWIsemxpYiwiCi1QQUNLQUdFQ09ORklHW3hhcl0gPSAiLS13aXRoLXhhciwtLXdpdGhvdXQteGFyLHhhciwiCi0KLVdJVEhfUFlUSE9OID0gIiAtLXdpdGgtcHl0aG9uPSR7UFlUSE9OX0JBU0VWRVJTSU9OfSBcCi0JCS0td2l0aC1weXRob24taW5jLWRpcj0ke1NUQUdJTkdfSU5DRElSfS9weXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0gXAotCQktLXdpdGgtcHl0aG9uLWxpYi1kaXI9JHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfS9zaXRlLXBhY2thZ2VzIFwKLQkJLS13aXRob3V0LXB5dGhvbmVtYmVkIgotUEFDS0FHRUNPTkZJR1tweXRob25dID0gIiR7V0lUSF9QWVRIT059LC0td2l0aG91dC1weXRob24scHl0aG9uLCIKLQotIyBQZXJsIG1vZHVsZXMgYXJlIG5vdCBidWlsdCwgYnV0IHRoZXkgY291bGQgYmUgZW5hYmxlZCBmYWlybHkgZWFzaWx5Ci0jIHRoZSBwZXJsIG1vZHVsZSBjcmVhdGlvbiBhbmQgaW5zdGFsbGF0aW9uIHdvdWxkIG5lZWQgdG8gYmUgcGF0Y2hlZC4KLSMgKGN1cnJlbnRseSBoYXMgaG9zdCBwZXJsIGNvbnRhbWluYXRpb24gaXNzdWVzKQotV0lUSF9QRVJMID0gIi0td2l0aC1wZXJsIC0td2l0aG91dC1wZXJsZW1iZWQgLS13aXRob3V0LXBlcmwtdXJwbSIKLVdJVEhPVVRfUEVSTCA9ICItLXdpdGhvdXQtcGVybCAtLXdpdGhvdXQtcGVybC11cnBtIgotUEFDS0FHRUNPTkZJR1twZXJsXSA9ICIke1dJVEhfUEVSTH0sJHtXSVRIT1VUX1BFUkx9LHBlcmwsIgotCi0jIFRoZSAtLXdpdGgtZGJzcWwgd2lsbCBvbmx5IHRlbGwgUlBNIHRvIGNoZWNrIGZvciBzdXBwb3J0LCBkYgotIyBtYXkgb3IgbWF5IG5vdCBiZSBidWlsdCB3LyB0aGUgZGJzcWwgc3VwcG9ydC4KLVdJVEhfREIgPSAiLS13aXRoLWRiIC0td2l0aC1kYnNxbCAtLXdpdGhvdXQtZGItdG9vbHMtaW50ZWdyYXRlZCIKLVBBQ0tBR0VDT05GSUdbZGJdID0gIiR7V0lUSF9EQn0sLS13aXRob3V0LWRiLGRiLCIKLQotUEFDS0FHRUNPTkZJR1tzcWxpdGVdID0gIi0td2l0aC1zcWxpdGUsLS13aXRob3V0LXNxbGl0ZSxzcWxpdGUzLCIKLQotIyBUaGlzIHN3aXRjaCBzaW1wbHkgZGlzYWJsZXMgZXh0ZXJuYWwgYmVlY3J5cHQsIFJQTTUgYWx3YXlzIHVzZXMgYmVlY3J5cHQKLSMgZm9yIGJhc2U2NCBwcm9jZXNzaW5nIGFuZCB2YXJpb3VzIGRpZ2VzdCBhbGdvcml0aG1zLgotIyBCZWVjcnlwdCBpcyBvbmx5IHRoZSBwcmVmZXJyZWQgY3J5cHRvIGVuZ2luZSBpZiBpdCdzIHRoZSBvbmx5IGVuZ2luZSBlbmFibGVkLgotUEFDS0FHRUNPTkZJR1tiZWVjcnlwdF0gPSAiLS13aXRoLWJlZWNyeXB0PWV4dGVybmFsLC0td2l0aC1iZWVjcnlwdD1pbnRlcm5hbCxiZWVjcnlwdCwiCi0KLSMgLS13aXRoLXVzZWNyeXB0bz0gc2V0dGluZyBkZWZpbmVkIHRoZSBpdGVtIGFzIHRoZSBwcmVmZXJyZWQgc3lzdGVtCi0jIGNyeXB0byBlbmdpbmUsIHdoaWNoIHdpbGwgdGFrZSBwcmlvcml0eSBvdmVyIHRoZSBpbmNsdWRlZCBiZWVjcnlwdAotUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtb3BlbnNzbCAtLXdpdGgtdXNlY3J5cHRvPW9wZW5zc2wsLS13aXRob3V0LW9wZW5zc2wsb3BlbnNzbCwiCi1QQUNLQUdFQ09ORklHW25zc10gPSAiLS13aXRoLW5zcyAtLXdpdGgtdXNlY3J5cHRvPW5zcywtLXdpdGhvdXQtbnNzLG5zcywiCi1QQUNLQUdFQ09ORklHW2djcnlwdF0gPSAiLS13aXRoLWdjcnlwdCAtLXdpdGgtdXNlY3J5cHRvPWdjcnlwdCwtLXdpdGhvdXQtZ2NyeXB0LGdjcnlwdCwiCi0KLVBBQ0tBR0VDT05GSUdba2V5dXRpbHNdID0gIi0td2l0aC1rZXl1dGlscywtLXdpdGhvdXQta2V5dXRpbHMsa2V5dXRpbHMsIgotUEFDS0FHRUNPTkZJR1tsaWJlbGZdID0gIi0td2l0aC1saWJlbGYsLS13aXRob3V0LWxpYmVsZixlbGZ1dGlscywiCi0KLVdJVEhfU0VMSU5VWCA9ICItLXdpdGgtc2VsaW51eCAtLXdpdGgtc2Vwb2wgLS13aXRoLXNlbWFuYWdlIgotV0lUSE9VVF9TRUxJTlVYID0gIi0td2l0aG91dC1zZWxpbnV4IC0td2l0aG91dC1zZXBvbCAtLXdpdGhvdXQtc2VtYW5hZ2UiCi1QQUNLQUdFQ09ORklHW3NlbGludXhdID0gIiR7V0lUSF9TRUxJTlVYfSwke1dJVEhPVVRfU0VMSU5VWH0sbGlic2VsaW51eCwiCi0KLVdJVEhfTkVPTiA9ICItLXdpdGgtbmVvbiAtLXdpdGgtbGlicHJveHkgLS13aXRoLWV4cGF0IC0td2l0aG91dC1nc3NhcGkiCi1XSVRIT1VUX05FT04gPSAiLS13aXRob3V0LW5lb24gLS13aXRob3V0LWxpYnByb3h5IC0td2l0aG91dC1leHBhdCAtLXdpdGhvdXQtZ3NzYXBpIgotUEFDS0FHRUNPTkZJR1tuZW9uXSA9ICIke1dJVEhfTkVPTn0sJHtXSVRIT1VUX05FT059LG5lb24gZXhwYXQsIgotCi1QQUNLQUdFQ09ORklHW2x1YV0gPSAiLS13aXRoLWx1YSwtLXdpdGhvdXQtbHVhLGV4cGF0LCIKLVBBQ0tBR0VDT05GSUdbdGNsXSA9ICItLXdpdGgtdGNsLC0td2l0aG91dC10Y2wsdGNsLCIKLQotUEFDS0FHRUNPTkZJR1thdWdlYXNdID0gIi0td2l0aC1hdWdlYXMsLS13aXRob3V0LWF1Z2VhcyxhdWdlYXMsIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tdmVyYm9zZSBcCi0JCS0tc3lzY29uZmRpcj0ke3N5c2NvbmZkaXJ9IFwKLQkJLS13aXRoLWZpbGUgXAotCQktLXdpdGgtcGF0aC1tYWdpYz0le191c3JsaWJycG19Ly4uLy4uL3NoYXJlL21pc2MvbWFnaWMubWdjIFwKLQkJLS13aXRoLXN5Y2s9aW50ZXJuYWwgXAotCQktLXdpdGhvdXQtcmVhZGxpbmUgXAotCQktLXdpdGhvdXQtbGlidGFzbjEgXAotCQktLXdpdGhvdXQtcGFrY2hvaXMgXAotCQktLXdpdGhvdXQtZ251dGxzIFwKLQkJLS13aXRoLXBjcmUgXAotCQktLWVuYWJsZS11dGY4IFwKLQkJLS13aXRoLXV1aWQgXAotCQktLXdpdGgtYXR0ciBcCi0JCS0td2l0aC1hY2wgXAotCQktLXdpdGgtcHRocmVhZHMgXAotCQktLXdpdGhvdXQtY3VkZiBcCi0JCS0td2l0aG91dC1maWNsIFwKLQkJLS13aXRob3V0LWF0ZXJtIFwKLQkJLS13aXRob3V0LW5peCBcCi0JCS0td2l0aG91dC1iYXNoIFwKLQkJLS13aXRob3V0LXJjIFwKLQkJLS13aXRob3V0LWpzIFwKLQkJLS13aXRob3V0LWdwc2VlIFwKLQkJLS13aXRob3V0LXJ1YnkgXAotCQktLXdpdGhvdXQtc3F1aXJyZWwgXAotCQktLXdpdGhvdXQtc2FzbDIgXAotCQktLXdpdGgtYnVpbGQtZXh0bGliZGVwIFwKLQkJLS13aXRoLWJ1aWxkLW1heGV4dGxpYmRlcCBcCi0JCS0td2l0aG91dC12YWxncmluZCBcCi0JCS0tZGlzYWJsZS1vcGVubXAgXAotCQktLWVuYWJsZS1idWlsZC1waWMgXAotCQktLWVuYWJsZS1idWlsZC12ZXJzaW9uc2NyaXB0IFwKLQkJLS1lbmFibGUtYnVpbGQtd2FybmluZ3MgXAotCQktLWVuYWJsZS1idWlsZC1kZWJ1ZyBcCi0JCS0tZW5hYmxlLW1haW50YWluZXItbW9kZSBcCi0JCS0td2l0aC1wYXRoLW1hY3Jvcz0ke3JwbV9tYWNyb3N9IFwKLQkJLS13aXRoLXBhdGgtbGliPSR7bGliZGlyfS9ycG0gXAotCQktLXdpdGgtYnVncmVwb3J0PWh0dHA6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnIFwKLQkJLS1wcm9ncmFtLXByZWZpeD0gXAotCQlZQUNDPWJ5YWNjIgotCi1DRkxBR1NfYXBwZW5kID0gIiAtRFJQTV9WRU5ET1JfV0lORFJJVkVSIC1EUlBNX1ZFTkRPUl9QT0tZIC1EUlBNX1ZFTkRPUl9PRSIKLQotTERGTEFHU19hcHBlbmRfbGliYy11Y2xpYmMgPSAiLWxydCAtbHB0aHJlYWQiCi0KLVBBQ0tBR0VTID0gIiR7UE59LWRiZyAke1BOfSAke1BOfS1kb2MgJHtQTn0tbGlicyAke1BOfS1kZXYgJHtQTn0tc3RhdGljZGV2ICR7UE59LWNvbW1vbiAke1BOfS1idWlsZCBweXRob24tcnBtIHBlcmwtbW9kdWxlLXJwbSAke1BOfS1sb2NhbGUiCi0KLVNPTElCUyA9ICI1LjQuc28iCi0KLSMgQmFzZWQgb24gJWZpbGVzIHNlY3Rpb24gaW4gdGhlIHJwbS5zcGVjCi0KLUZJTEVTXyR7UE59ID0gICIke2JpbmRpcn0vcnBtIFwKLQkJJHtiaW5kaXJ9L3JwbWNvbnN0YW50IFwKLQkJJHtsaWJkaXJ9L3JwbS9ycG0uKiBcCi0JCSR7bGliZGlyfS9ycG0vdGdwZyBcCi0JCSR7bGliZGlyfS9ycG0vbWFjcm9zIFwKLQkJJHtsaWJkaXJ9L3JwbS9ycG1wb3B0IFwKLQkJJHtsaWJkaXJ9L3JwbS9ycG0yY3BpbyBcCi0JCSR7bGliZGlyfS9ycG0vdmNoZWNrIFwKLQkJJHtsaWJkaXJ9L3JwbS9oZWxwZXJzIFwKLQkJJHtsaWJkaXJ9L3JwbS9xZiBcCi0JCSR7bGliZGlyfS9ycG0vY3B1aW5mby55YW1sIFwKLQkJJHtsaWJkaXJ9L3JwbS9iaW4vbXRyZWUgXAotCQkke2xpYmRpcn0vcnBtL2Jpbi9ycG1rZXkgXAotCQkke2xpYmRpcn0vcnBtL2Jpbi9ycG1yZXBvIFwKLQkJJHtsaWJkaXJ9L3JwbS9iaW4vcnBtcmVwby5yZWFsIFwKLQkJJHtsaWJkaXJ9L3JwbS9iaW4vcnBtc3BlY2R1bXAgXAotCQkke2xpYmRpcn0vcnBtL2Jpbi9ycG1zcGVjZHVtcC5yZWFsIFwKLQkJJHtsaWJkaXJ9L3JwbS9iaW4vd2dldCBcCi0JCSR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUgXAotCQkke2xvY2Fsc3RhdGVkaXJ9L2NhY2hlL3JwbSBcCi0JCSR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUvd2RqIFwKLQkJJHtsb2NhbHN0YXRlZGlyfS9saWIgXAotCQkke2xvY2Fsc3RhdGVkaXJ9L2xpYi9ycG0gXAotCQkke2xvY2Fsc3RhdGVkaXJ9L2xpYi93ZGogXAotCQkke2JpbmRpcn0vcnBtLnJlYWwgXAotCQkke2JpbmRpcn0vcnBtY29uc3RhbnQucmVhbCBcCi0JCSR7YmluZGlyfS9ycG0yY3Bpby5yZWFsIFwKLQkJIgotCi1GSUxFU18ke1BOfS1jb21tb24gPSAiJHtiaW5kaXJ9L3JwbTJjcGlvIFwKLQkJJHtiaW5kaXJ9L2dlbmRpZmYgXAotCQkke3N5c2NvbmZkaXJ9L3JwbSBcCi0JCSR7bG9jYWxzdGF0ZWRpcn0vc3Bvb2wvcmVwYWNrYWdlIFwKLQkJIgotCi1GSUxFU18ke1BOfS1saWJzID0gIiR7bGliZGlyfS9saWJycG0tKi5zbyBcCi0JCSR7bGliZGlyfS9saWJycG1jb25zdGFudC0qLnNvIFwKLQkJJHtsaWJkaXJ9L2xpYnJwbWRiLSouc28gXAotCQkke2xpYmRpcn0vbGlicnBtaW8tKi5zbyBcCi0JCSR7bGliZGlyfS9saWJycG1taXNjLSouc28gXAotCQkke2xpYmRpcn0vbGlicnBtYnVpbGQtKi5zbyBcCi0JCSIKLQotRklMRVNfJHtQTn0tYnVpbGQgPSAiJHtwcmVmaXh9L3NyYy9ycG0gXAotCQkke2JpbmRpcn0vcnBtYnVpbGQgXAotCQkke2JpbmRpcn0vcnBtYnVpbGQucmVhbCBcCi0JCSR7bGliZGlyfS9ycG0vYnJwLSogXAotCQkke2xpYmRpcn0vcnBtL2NoZWNrLWZpbGVzIFwKLQkJJHtsaWJkaXJ9L3JwbS9jcm9zcy1idWlsZCBcCi0JCSR7bGliZGlyfS9ycG0vZmluZC1kZWJ1Z2luZm8uc2ggXAotCQkke2xpYmRpcn0vcnBtL2ZpbmQtbGFuZy5zaCBcCi0JCSR7bGliZGlyfS9ycG0vZmluZC1wcm92LnBsIFwKLQkJJHtsaWJkaXJ9L3JwbS9maW5kLXByb3ZpZGVzLnBlcmwgXAotCQkke2xpYmRpcn0vcnBtL2ZpbmQtcmVxLnBsIFwKLQkJJHtsaWJkaXJ9L3JwbS9maW5kLXJlcXVpcmVzLnBlcmwgXAotCQkke2xpYmRpcn0vcnBtL2dldHBvLnNoIFwKLQkJJHtsaWJkaXJ9L3JwbS9odHRwLnJlcSBcCi0JCSR7bGliZGlyfS9ycG0vamF2YWRlcHMuc2ggXAotCQkke2xpYmRpcn0vcnBtL21vbm8tZmluZC1wcm92aWRlcyBcCi0JCSR7bGliZGlyfS9ycG0vbW9uby1maW5kLXJlcXVpcmVzIFwKLQkJJHtsaWJkaXJ9L3JwbS9leGVjdXRhYmxlZGVwcy5zaCBcCi0JCSR7bGliZGlyfS9ycG0vbGlidG9vbGRlcHMuc2ggXAotCQkke2xpYmRpcn0vcnBtL29zZ2lkZXBzLnBsIFwKLQkJJHtsaWJkaXJ9L3JwbS9wZXJsZGVwcy5wbCBcCi0JCSR7bGliZGlyfS9ycG0vcGVybC5wcm92IFwKLQkJJHtsaWJkaXJ9L3JwbS9wZXJsLnJlcSBcCi0JCSR7bGliZGlyfS9ycG0vcGhwLnByb3YgXAotCQkke2xpYmRpcn0vcnBtL3BocC5yZXEgXAotCQkke2xpYmRpcn0vcnBtL3BrZ2NvbmZpZ2RlcHMuc2ggXAotCQkke2xpYmRpcn0vcnBtL3B5dGhvbmRlcHMuc2ggXAotCQkke2xpYmRpcn0vcnBtL2Jpbi9kZWJ1Z2VkaXQgXAotCQkke2xpYmRpcn0vcnBtL2Jpbi9kZWJ1Z2VkaXQucmVhbCBcCi0JCSR7bGliZGlyfS9ycG0vYmluL3JwbWNhY2hlIFwKLQkJJHtsaWJkaXJ9L3JwbS9iaW4vcnBtY2FjaGUucmVhbCBcCi0JCSR7bGliZGlyfS9ycG0vYmluL3JwbWNtcCBcCi0JCSR7bGliZGlyfS9ycG0vYmluL3JwbWNtcC5yZWFsIFwKLQkJJHtsaWJkaXJ9L3JwbS9iaW4vcnBtZGVwcyBcCi0JCSR7bGliZGlyfS9ycG0vYmluL3JwbWRlcHMucmVhbCBcCi0JCSR7bGliZGlyfS9ycG0vYmluL3JwbWRlcHMtb2Vjb3JlIFwKLQkJJHtsaWJkaXJ9L3JwbS9iaW4vcnBtZGVwcy1vZWNvcmUucmVhbCBcCi0JCSR7bGliZGlyfS9ycG0vYmluL3JwbWRpZ2VzdCBcCi0JCSR7bGliZGlyfS9ycG0vYmluL3JwbWRpZ2VzdC5yZWFsIFwKLQkJJHtsaWJkaXJ9L3JwbS9iaW4vYWJpLWNvbXBsaWFuY2UtY2hlY2tlci5wbCBcCi0JCSR7bGliZGlyfS9ycG0vYmluL2FwaS1zYW5pdHktYXV0b3Rlc3QucGwgXAotCQkke2xpYmRpcn0vcnBtL2Jpbi9jaHJvb3QgXAotCQkke2xpYmRpcn0vcnBtL2Jpbi9jcCBcCi0JCSR7bGliZGlyfS9ycG0vYmluL2Ric3FsIFwKLQkJJHtsaWJkaXJ9L3JwbS9iaW4vZmluZCBcCi0JCSR7bGliZGlyfS9ycG0vYmluL2luc3RhbGwtc2ggXAotCQkke2xpYmRpcn0vcnBtL2Jpbi9sdWEgXAotCQkke2xpYmRpcn0vcnBtL2Jpbi9sdWFjIFwKLQkJJHtsaWJkaXJ9L3JwbS9iaW4vbWtpbnN0YWxsZGlycyBcCi0JCSR7bGliZGlyfS9ycG0vYmluL3JwbWx1YSBcCi0JCSR7bGliZGlyfS9ycG0vYmluL3JwbWx1YWMgXAotCQkke2xpYmRpcn0vcnBtL2Jpbi9zcWxpdGUzIFwKLQkJJHtsaWJkaXJ9L3JwbS9tYWNyb3MuZC9jbWFrZSBcCi0JCSR7bGliZGlyfS9ycG0vbWFjcm9zLmQvamF2YSBcCi0JCSR7bGliZGlyfS9ycG0vbWFjcm9zLmQvbGlidG9vbCBcCi0JCSR7bGliZGlyfS9ycG0vbWFjcm9zLmQvbWFuZHJpdmEgXAotCQkke2xpYmRpcn0vcnBtL21hY3Jvcy5kL21vbm8gXAotCQkke2xpYmRpcn0vcnBtL21hY3Jvcy5kL3BlcmwgXAotCQkke2xpYmRpcn0vcnBtL21hY3Jvcy5kL3BocCBcCi0JCSR7bGliZGlyfS9ycG0vbWFjcm9zLmQvcGtnY29uZmlnIFwKLQkJJHtsaWJkaXJ9L3JwbS9tYWNyb3MuZC9weXRob24gXAotCQkke2xpYmRpcn0vcnBtL21hY3Jvcy5kL3J1YnkgXAotCQkke2xpYmRpcn0vcnBtL21hY3Jvcy5kL3NlbGludXggXAotCQkke2xpYmRpcn0vcnBtL21hY3Jvcy5kL3RjbCBcCi0JCSR7bGliZGlyfS9ycG0vbWFjcm9zLnJwbWJ1aWxkIFwKLQkJJHtsaWJkaXJ9L3JwbS91X3BrZy5zaCBcCi0JCSR7bGliZGlyfS9ycG0vdnBrZy1wcm92aWRlcy5zaCBcCi0JCSR7bGliZGlyfS9ycG0vdnBrZy1wcm92aWRlczIuc2ggXAotCQkke2xpYmRpcn0vcnBtL3BlcmZpbGVfcnBtZGVwcy5zaCBcCi0JCSR7ZGlzdHJvbWFjcm9kaXJ9IFwKLQkJIgotUkRFUEVORFNfJHtQTn0gPSAiYmFzZS1maWxlcyBydW4tcG9zdGluc3RzIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZXNkayA9ICIiCi1SREVQRU5EU18ke1BOfS1idWlsZCA9ICJmaWxlIGJhc2ggcGVybCIKLQotUkRFUEVORFNfcHl0aG9uLXJwbSA9ICIke1BOfSBweXRob24iCi0KLUZJTEVTX3B5dGhvbi1ycG0gPSAiJHtsaWJkaXJ9L3B5dGhvbiovc2l0ZS1wYWNrYWdlcy9ycG0iCi1QUk9WSURFUyArPSAicHl0aG9uLXJwbSIKLQotRklMRVNfcGVybC1tb2R1bGUtcnBtID0gIiR7bGliZGlyfS9wZXJsLyovKiBcCi0JCSIKLQotUkRFUEVORFNfJHtQTn0tZGV2ICs9ICJiYXNoIgotCi1GSUxFU18ke1BOfS1kZXYgPSAiJHtpbmNsdWRlZGlyfS9ycG0gXAotCQkke2xpYmRpcn0vbGlicnBtLmxhIFwKLQkJJHtsaWJkaXJ9L2xpYnJwbS5zbyBcCi0JCSR7bGliZGlyfS9saWJycG1jb25zdGFudC5sYSBcCi0JCSR7bGliZGlyfS9saWJycG1jb25zdGFudC5zbyBcCi0JCSR7bGliZGlyfS9saWJycG1kYi5sYSBcCi0JCSR7bGliZGlyfS9saWJycG1kYi5zbyBcCi0JCSR7bGliZGlyfS9saWJycG1pby5sYSBcCi0JCSR7bGliZGlyfS9saWJycG1pby5zbyBcCi0JCSR7bGliZGlyfS9saWJycG1taXNjLmxhIFwKLQkJJHtsaWJkaXJ9L2xpYnJwbW1pc2Muc28gXAotCQkke2xpYmRpcn0vbGlicnBtYnVpbGQubGEgXAotCQkke2xpYmRpcn0vbGlicnBtYnVpbGQuc28gXAotCQkke2xpYmRpcn0vcnBtL2xpYi9saWJsdWEubGEgXAotCQkke2xpYmRpcn0vcGtnY29uZmlnL3JwbS5wYyBcCi0JCSR7bGliZGlyfS9ycG0vcnBtZGJfbG9hZGN2dCBcCi0JCSIKLQotRklMRVNfJHtQTn0tc3RhdGljZGV2ID0gIiBcCi0JCSR7bGliZGlyfS9saWJycG0uYSBcCi0JCSR7bGliZGlyfS9saWJycG1jb25zdGFudC5hIFwKLQkJJHtsaWJkaXJ9L2xpYnJwbWRiLmEgXAotCQkke2xpYmRpcn0vbGlicnBtaW8uYSBcCi0JCSR7bGliZGlyfS9saWJycG1taXNjLmEgXAotCQkke2xpYmRpcn0vbGlicnBtYnVpbGQuYSBcCi0JCSR7bGliZGlyfS9ycG0vbGliL2xpYmx1YS5hIFwKLQkJJHtsaWJkaXJ9L3B5dGhvbiovc2l0ZS1wYWNrYWdlcy9ycG0vKi5hIFwKLQkJIgotCi1kb19jb25maWd1cmUoKSB7Ci0JIyBEaXNhYmxlIHRlc3RzIQotCWVjaG8gImFsbDoiID4gJHtTfS90ZXN0cy9NYWtlZmlsZS5hbQotCXNlZCAtZSAncy9AX19NS0RJUl9QQC8le19fbWtkaXJ9IC1wLycgLWkgJHtTfS9tYWNyb3MvbWFjcm9zLmluCi0KLQkoIGNkICR7U307ICR7U30vYXV0b2dlbi5zaCApCi0KLQkjIE5BU1RZIGhhY2sgdG8gbWFrZSBzdXJlIGNvbmZpZ3VyZSBmaWxlcyB0aGUgcmlnaHQgcGtnLWNvbmZpZyBmaWxlLi4uCi0Jc2VkIC1lICdzL3BrZy1jb25maWcgLS1leGlzdHMgdXVpZC9wa2ctY29uZmlnIC0tZXhpc3RzIG9zc3AtdXVpZC9nJyBcCi0JICAgIC1lICdzL3BrZy1jb25maWcgdXVpZC9wa2ctY29uZmlnIG9zc3AtdXVpZC9nJyAtaSAke1N9L2NvbmZpZ3VyZQotCi0JKCBjZCAke1N9L3N5Y2sgOyBzZXQgK2UgOyBybSAtLSAtbCogOyBtYWtlIGRpc3RjbGVhbiApIHx8IDoKLQotCWV4cG9ydCB2YXJwcmVmaXg9JHtsb2NhbHN0YXRlZGlyfQotCW9lX3J1bmNvbmYKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JIyBDb25maWd1cmUgLWRpc3RyaWJ1dGlvbiB3aWRlLSBwYWNrYWdlIGNyeXB0byBzZXR0aW5ncwotCSMgSWYgdGhlc2UgY2hhbmdlLCBlZmZlY3RpdmVseSBhbGwgcGFja2FnZXMgaGF2ZSB0byBiZSB1cGdyYWRlZCEKLQlzZWQgLWkgLWUgJ3MsJV9idWlsZF9maWxlX2RpZ2VzdF9hbGdvLiosJV9idWlsZF9zaWduICR7UlBNX0ZJTEVfRElHRVNUX0FMR099LCcgJHtEfS8ke2xpYmRpcn0vcnBtL21hY3Jvcy5ycG1idWlsZAotCXNlZCAtaSAtZSAncywlX2J1aWxkX3NpZ24uKiwlX2J1aWxkX3NpZ24gJHtSUE1fU0VMRl9TSUdOX0FMR099LCcgJHtEfS8ke2xpYmRpcn0vcnBtL21hY3Jvcy5ycG1idWlsZAotCi0Jc2VkIC1pIC1lICdzLCVfX3NjcmlwdGxldF9yZXF1aXJlcywjJSVfX3NjcmlwdGxldF9yZXF1aXJlcywnICR7RH0vJHtsaWJkaXJ9L3JwbS9tYWNyb3MKLQlzZWQgLWkgLWUgJ3MsJV9fcGVybF9wcm92aWRlcywjJSVfX3BlcmxfcHJvdmlkZXMsJyAke0R9LyR7bGliZGlyfS9ycG0vbWFjcm9zICR7RH0vJHtsaWJkaXJ9L3JwbS9tYWNyb3MuZC8qCi0Jc2VkIC1pIC1lICdzLCVfX3BlcmxfcmVxdWlyZXMsIyUlX19wZXJsX3JlcXVpcmVzLCcgJHtEfS8ke2xpYmRpcn0vcnBtL21hY3JvcyAke0R9LyR7bGliZGlyfS9ycG0vbWFjcm9zLmQvKgotCXNlZCAtaSAtZSAncywlX3JlcGFja2FnZV9hbGxfZXJhc3VyZXNbXl9dLiosJV9yZXBhY2thZ2VfYWxsX2VyYXN1cmVzIDAsJyAke0R9LyR7bGliZGlyfS9ycG0vbWFjcm9zCi0Jc2VkIC1pIC1lICdzLF4jJV9vcGVuYWxsX2JlZm9yZV9jaHJvb3QuKiwlX29wZW5hbGxfYmVmb3JlX2Nocm9vdFx0MSwnICR7RH0vJHtsaWJkaXJ9L3JwbS9tYWNyb3MKLQotCSMgRW5hYmxlIE1JUFM2NCBOMzIgdHJhbnNhY3Rpb25zLiAgKFRoaXMgaXMgYSBuby1vcCBvbiBub24tTUlQUyB0YXJnZXRzLikKLQlzZWQgLWkgLWUgJ3MsJV90cmFuc2FjdGlvbl9jb2xvclteX10uKiwlX3RyYW5zYWN0aW9uX2NvbG9yIDcsJyAke0R9LyR7bGliZGlyfS9ycG0vbWFjcm9zCi0KLQkjIEVuYWJsZSBEZWJpYW4gc3R5bGUgYXJiaXRyYXJ5IHRhZ3MuLi4KLQlzZWQgLWkgLWUgJ3MsJV9hcmJpdHJhcnlfdGFnc1teX10uKiwlX2FyYml0cmFyeV90YWdzICV7X2FyYml0cmFyeV90YWdzX2RlYmlhbn0sJyAke0R9LyR7bGliZGlyfS9ycG0vbWFjcm9zCi0KLQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9weXRob25kZXBzLnNoICR7RH0vJHtsaWJkaXJ9L3JwbS9weXRob25kZXBzLnNoCi0JaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vcGVyZmlsZV9ycG1kZXBzLnNoICR7RH0vJHtsaWJkaXJ9L3JwbS9wZXJmaWxlX3JwbWRlcHMuc2gKLQotCSMgUmVtb3ZlIHVucGFja2FnZWQgZmlsZXMgKGJhc2VkIG9uIGxpc3QgaW4gcnBtLnNwZWMpCi0Jcm0gLWYgJHtEfS8ke2xpYmRpcn0vcnBtL3tTcGVjZmlsZS5wbSxjcGFuZmx1dGUsY3BhbmZsdXRlMixycG1kaWZmLHJwbWRpZmYuY2dpLHNxbC5wcm92LHNxbC5yZXEsdGNsLnJlcSx0cnBtfQotCi0Jcm0gLWYgJHtEfS8ke21hbmRpcn0vbWFuOC9ycG1jYWNoZS44KgotCXJtIC1mICR7RH0vJHttYW5kaXJ9L21hbjgvcnBtZ3JhcGguOCoKLQlybSAtZiAke0R9LyR7bWFuZGlyfS8qL21hbjgvcnBtY2FjaGUuOCoKLQlybSAtZiAke0R9LyR7bWFuZGlyfS8qL21hbjgvcnBtZ3JhcGguOCoKLQlybSAtcmYgJHtEfS8ke21hbmRpcn0ve2ZyLGtvfQotCi0Jcm0gLWYgJHtEfS8ke2luY2x1ZGVkaXJ9L3BvcHQuaAotCXJtIC1mICR7RH0vJHtsaWJkaXJ9L2xpYnBvcHQuKgotCXJtIC1mICR7RH0vJHtsaWJkaXJ9L3BrZ2NvbmZpZy9wb3B0LnBjCi0Jcm0gLWYgJHtEfS8ke2RhdGFkaXJ9L2xvY2FsZS8qL0xDX01FU1NBR0VTL3BvcHQubW8KLQlybSAtZiAke0R9LyR7bWFuZGlyfS9tYW4zL3BvcHQuMwotCi0Jcm0gLWYgJHtEfS8ke21hbmRpcn0vbWFuMS94YXIuMSoKLQlybSAtZiAke0R9LyR7YmluZGlyfS94YXIKLQlybSAtcmYgJHtEfS8ke2luY2x1ZGVkaXJ9L3hhcgotCXJtIC1mICR7RH0vJHtsaWJkaXJ9L2xpYnhhcioKLQotCXJtIC1mICR7RH0vJHtiaW5kaXJ9L2x6KgotCXJtIC1mICR7RH0vJHtiaW5kaXJ9L3VubHptYQotCXJtIC1mICR7RH0vJHtiaW5kaXJ9L3VueHoKLQlybSAtZiAke0R9LyR7YmluZGlyfS94eioKLQlybSAtcmYgJHtEfS8ke2luY2x1ZGVkaXJ9L2x6bWEqCi0Jcm0gLWYgJHtEfS8ke21hbmRpcn0vbWFuMS9seiouMQotCXJtIC1mICR7RH0vJHtsaWJkaXJ9L3BrZ2NvbmZpZy9saWJsem1hKgotCi0Jcm0gLWYgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJXt3aXRoX3B5dGhvbl92ZXJzaW9ufS9zaXRlLXBhY2thZ2VzLyouYQotCXJtIC1mICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiV7d2l0aF9weXRob25fdmVyc2lvbn0vc2l0ZS1wYWNrYWdlcy8qLmxhCi0Jcm0gLWYgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJXt3aXRoX3B5dGhvbl92ZXJzaW9ufS9zaXRlLXBhY2thZ2VzL3JwbS8qLmEKLQlybSAtZiAke0R9LyR7bGliZGlyfS9weXRob24le3dpdGhfcHl0aG9uX3ZlcnNpb259L3NpdGUtcGFja2FnZXMvcnBtLyoubGEKLQotCSNmaW5kICR7RH0vJHtsaWJkaXJ9L3Blcmw1IC10eXBlIGYgLWEgXCggLW5hbWUgcGVybGxvY2FsLnBvZCAtbyAtbmFtZSAucGFja2xpc3QgXAotCSMJLW8gXCggLW5hbWUgJyouYnMnIC1hIC1lbXB0eSBcKSBcKSAtZXhlYyBybSAtZiB7fSAnOycKLQkjZmluZCAke0R9LyR7bGliZGlyfS9wZXJsNSAtdHlwZSBkIC1kZXB0aCAtZXhlYyBybWRpciB7fSAyPi9kZXYvbnVsbCAnOycKLQotCXJtIC1mICR7RH0vJHtsaWJkaXJ9L3JwbS9kYmNvbnZlcnQuc2gKLQotCXJtIC1mICR7RH0vJHtsaWJkaXJ9L3JwbS9saWJzcWxkYi4qCi0KLQkjIFdlIGRvbid0IHdhbnQsIG5vciBuZWVkIHRoZSBNYW5kcml2YSBtdWx0aWFyY2ggaXRlbXMKLQlybSAtZiAke0R9LyR7YmluZGlyfS9tdWx0aWFyY2gtZGlzcGF0Y2gKLQlybSAtZiAke0R9LyR7YmluZGlyfS9tdWx0aWFyY2gtcGxhdGZvcm0KLQlybSAtZiAke0R9LyR7bGliZGlyfS9ycG0vY2hlY2stbXVsdGlhcmNoLWZpbGVzCi0Jcm0gLWYgJHtEfS8ke2xpYmRpcn0vcnBtL21rbXVsdGlhcmNoCi0Jcm0gLWYgJHtEfS8ke2luY2x1ZGVkaXJ9L211bHRpYXJjaC1kaXNwYXRjaC5oCi0KLQlybSAtZiAke0R9LyR7bGliZGlyfS9ycG0vZ3N0cmVhbWVyLnNoCi0Jcm0gLWYgJHtEfS8ke2xpYmRpcn0vcnBtL2dlbV9oZWxwZXIucmIKLQlybSAtZiAke0R9LyR7bGliZGlyfS9ycG0vcnVieWdlbXMucmIKLQlybSAtZiAke0R9LyR7bGliZGlyfS9ycG0va21vZC1kZXBzLnNoCi0Jcm0gLWYgJHtEfS8ke2xpYmRpcn0vcnBtL3B5dGhvbmVnZ3MucHkKLQlybSAtZiAke0R9LyR7bGliZGlyfS9ycG0vbWFjcm9zLmQva2VybmVsCi0Jcm0gLWYgJHtEfS8ke2xpYmRpcn0vcnBtL21hY3Jvcy5kL2dzdHJlYW1lcgotCXJtIC1mICR7RH0vJHtsaWJkaXJ9L3JwbS9iaW4vbWdvCi0Jcm0gLWYgJHtEfS8ke2xpYmRpcn0vcnBtL2Jpbi9kYmNvbnZlcnQKLQlybSAtZiAke0R9LyR7bGliZGlyfS9ycG0vYmluL3BvbTJzcGVjCi0KLQlybSAtcmYgJHtEfS92YXIvbGliL3dkaiAke0R9L3Zhci9jYWNoZS93ZGoKLQlybSAtZiAke0R9LyR7bGliZGlyfS9ycG0vYmluL2FwaS1zYW5pdHktY2hlY2tlci5wbAotCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLQkjIENyZWF0ZSBhbmQgaW5zdGFsbCBkaXN0cmlidXRpb24gc3BlY2lmaWMgbWFjcm9zCi0JbWtkaXIgLXAgJHtEfS8ke2Rpc3Ryb21hY3JvZGlyfQotCWNhdCA8PCBFT0YgPiAke0R9LyR7ZGlzdHJvbWFjcm9kaXJ9L21hY3JvcwotJV9kZWZhdWx0ZG9jZGlyCQkke2RvY2Rpcn0KLQotJV9wcmVmaXggICAgICAgICAgICAgICAgJHtwcmVmaXh9Ci0lX2V4ZWNfcHJlZml4ICAgICAgICAgICAke2V4ZWNfcHJlZml4fQotJV9kYXRhcm9vdGRpciAgICAgICAgICAgJHtkYXRhZGlyfQotJV9iaW5kaXIgICAgICAgICAgICAgICAgJHtiaW5kaXJ9Ci0lX3NiaW5kaXIgICAgICAgICAgICAgICAke3NiaW5kaXJ9Ci0lX2xpYmV4ZWNkaXIgICAgICAgICAgICAle19saWJkaXJ9LyV7bmFtZX0KLSVfZGF0YWRpciAgICAgICAgICAgICAgICR7ZGF0YWRpcn0KLSVfc3lzY29uZmRpciAgICAgICAgICAgICR7c3lzY29uZmRpcn0KLSVfc2hhcmVkc3RhdGVkaXIgICAgICAgICR7c2hhcmVkc3RhdGVkaXJ9Ci0lX2xvY2Fsc3RhdGVkaXIgICAgICAgICAke2xvY2Fsc3RhdGVkaXJ9Ci0lX2xpYiAgICAgICAgICAgICAgICAgICBsaWIKLSVfbGliZGlyICAgICAgICAgICAgICAgICV7X2V4ZWNfcHJlZml4fS8le19saWJ9Ci0lX2luY2x1ZGVkaXIgICAgICAgICAgICAke2luY2x1ZGVkaXJ9Ci0lX29sZGluY2x1ZGVkaXIgICAgICAgICAke29sZGluY2x1ZGVkaXJ9Ci0lX2luZm9kaXIgICAgICAgICAgICAgICAke2luZm9kaXJ9Ci0lX21hbmRpciAgICAgICAgICAgICAgICAke21hbmRpcn0KLSVfbG9jYWxlZGlyICAgICAgICAgICAgICV7X2xpYmRpcn0vbG9jYWxlCi1FT0YKLQotCSMgQ3JlYXRlIGFuZCBpbnN0YWxsIG11bHRpbGliIHNwZWNpZmljIG1hY3JvcwotCSR7QG11bHRpbGliX3JwbW1hY3JvcyhkKX0KLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKLQlzZWQgLWkgLWUgJ3N8XiMhLiovdXNyL2Jpbi9weXRob258IyEgL3Vzci9iaW4vZW52IG5hdGl2ZXB5dGhvbnwnICR7RH0vJHtsaWJkaXJ9L3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3JwbS90cmFuc2FjdGlvbi5weQotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgKCkgewotCXNlZCAtaSAtZSAnc3xeIyEuKi91c3IvYmluL3B5dGhvbnwjISAvdXNyL2Jpbi9lbnYgcHl0aG9ufCcgJHtEfS8ke2xpYmRpcn0vcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcnBtL3RyYW5zYWN0aW9uLnB5Ci19Ci0KLWRlZiBtdWx0aWxpYl9ycG1tYWNyb3MoZCk6Ci0gICAgbG9jYWxkYXRhID0gZC5jcmVhdGVDb3B5KCkKLSAgICAjIFdlIG5lZWQgdG8gY2xlYXIgdGhlIFRPT0xDSEFJTl9PUFRJT05TICgtLXN5c3Jvb3QpCi0gICAgbG9jYWxkYXRhLmRlbFZhcignVE9PTENIQUlOX09QVElPTlMnKQotCi0gICAgIyBTZXQgJ2xvY2FsZGF0YScgdmFsdWVzIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCAnZCcgdmFsdWVzLgotICAgIGxvY2FsZGF0YS5zZXRWYXIoJ2Rpc3Ryb21hY3JvZGlyJywgZC5nZXRWYXIoJ2Rpc3Ryb21hY3JvZGlyJywgVHJ1ZSkpCi0gICAgbG9jYWxkYXRhLnNldFZhcignV09SS0RJUicsIGQuZ2V0VmFyKCdXT1JLRElSJywgVHJ1ZSkpCi0KLSAgICByZXQgPSBnZW5fYXJjaF9tYWNybyhsb2NhbGRhdGEpCi0KLSAgICB2YXJpYW50cyA9IGQuZ2V0VmFyKCJNVUxUSUxJQl9WQVJJQU5UUyIsIFRydWUpIG9yICIiCi0gICAgZm9yIGl0ZW0gaW4gdmFyaWFudHMuc3BsaXQoKToKLSAgICAgICAgIyBMb2FkIG92ZXJyaWRlcyBmcm9tICdkJyB0byBhdm9pZCBoYXZpbmcgdG8gcmVzZXQgdGhlIHZhbHVlLi4uCi0gICAgICAgIGxvY2FsZGF0YSA9IGQuY3JlYXRlQ29weSgpCi0gICAgICAgIG92ZXJyaWRlcyA9IGQuZ2V0VmFyKCJPVkVSUklERVMiLCBGYWxzZSkgKyAiOnZpcnRjbGFzcy1tdWx0aWxpYi0iICsgaXRlbQotICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCJPVkVSUklERVMiLCBvdmVycmlkZXMpCi0gICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoIk1MUFJFRklYIiwgaXRlbSArICItIikKLSAgICAgICAgYmIuZGF0YS51cGRhdGVfZGF0YShsb2NhbGRhdGEpCi0gICAgICAgIHJldCArPSBnZW5fYXJjaF9tYWNybyhsb2NhbGRhdGEpCi0gICAgcmV0dXJuIHJldAotCi1kZWYgZ2VuX2FyY2hfbWFjcm8oZCk6Ci0gICAgIyBHZW5lcmF0ZSBzaGVsbCBzY3JpcHQgdG8gcHJvZHVjZSB0aGUgZmlsZSBhcyBwYXJ0IG9mIGRvX2luc3RhbGwKLSAgICB2YWwgID0gIm1rZGlyIC1wICR7RH0vJHtkaXN0cm9tYWNyb2Rpcn0vJHtUQVJHRVRfQVJDSH0tJHtUQVJHRVRfT1N9XG4iCi0gICAgdmFsICs9ICJjYXQgPDwgRU9GID4gJHtEfS8ke2Rpc3Ryb21hY3JvZGlyfS8ke1RBUkdFVF9BUkNIfS0ke1RBUkdFVF9PU30vbWFjcm9zXG4iCi0gICAgdmFsICs9ICIlX2xpYiAgICAgICAgICAgICAgICR7YmFzZWxpYn1cbiIKLSAgICB2YWwgKz0gIiVfbGliZGlyICAgICAgICAgICAgJHtsaWJkaXJ9XG4iCi0gICAgdmFsICs9ICIlX2xvY2FsZWRpciAgICAgICAgICR7bG9jYWxlZGlyfVxuIgotICAgIHZhbCArPSAiXG4iCi0gICAgdmFsICs9ICIjIFRvb2xjaGFpbiBjb25maWd1cmF0aW9uXG4iCi0gICAgdmFsICs9ICIlVE9PTENIQUlOX09QVElPTlMgICV7bmlsfVxuIgotICAgIHZhbCArPSAiJV9fYXIgICAgICAgICAgICAgICAke0BkLmdldFZhcignQVInLCBUcnVlKS5yZXBsYWNlKCckJywnJScpfVxuIgotICAgIHZhbCArPSAiJV9fYXMgICAgICAgICAgICAgICAke0BkLmdldFZhcignQVMnLCBUcnVlKS5yZXBsYWNlKCckJywnJScpfVxuIgotICAgIHZhbCArPSAiJV9fY2MgICAgICAgICAgICAgICAke0BkLmdldFZhcignQ0MnLCBUcnVlKS5yZXBsYWNlKCckJywnJScpfVxuIgotICAgIHZhbCArPSAiJV9fY3BwICAgICAgICAgICAgICAke0BkLmdldFZhcignQ1BQJywgVHJ1ZSkucmVwbGFjZSgnJCcsJyUnKX1cbiIKLSAgICB2YWwgKz0gIiVfX2N4eCAgICAgICAgICAgICAgJHtAZC5nZXRWYXIoJ0NYWCcsIFRydWUpLnJlcGxhY2UoJyQnLCclJyl9XG4iCi0gICAgdmFsICs9ICIlX19sZCAgICAgICAgICAgICAgICR7QGQuZ2V0VmFyKCdMRCcsIFRydWUpLnJlcGxhY2UoJyQnLCclJyl9XG4iCi0gICAgdmFsICs9ICIlX19ubSAgICAgICAgICAgICAgICR7QGQuZ2V0VmFyKCdOTScsIFRydWUpLnJlcGxhY2UoJyQnLCclJyl9XG4iCi0gICAgdmFsICs9ICIlX19vYmpjb3B5ICAgICAgICAgICR7QGQuZ2V0VmFyKCdPQkpDT1BZJywgVHJ1ZSkucmVwbGFjZSgnJCcsJyUnKX1cbiIKLSAgICB2YWwgKz0gIiVfX29iamR1bXAgICAgICAgICAgJHtAZC5nZXRWYXIoJ09CSkRVTVAnLCBUcnVlKS5yZXBsYWNlKCckJywnJScpfVxuIgotICAgIHZhbCArPSAiJV9fcmFubGliICAgICAgICAgICAke0BkLmdldFZhcignUkFOTElCJywgVHJ1ZSkucmVwbGFjZSgnJCcsJyUnKX1cbiIKLSAgICB2YWwgKz0gIiVfX3N0cmlwICAgICAgICAgICAgJHtAZC5nZXRWYXIoJ1NUUklQJywgVHJ1ZSkucmVwbGFjZSgnJCcsJyUnKX1cbiIKLSAgICB2YWwgKz0gIkVPRlxuIgotICAgIHZhbCArPSAiXG4iCi0gICAgcmV0dXJuIGQuZXhwYW5kKHZhbCkKLQotCi1hZGRfbmF0aXZlX3dyYXBwZXIoKSB7Ci0gICAgICAgIGNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L3JwbSBcCi0JCVJQTV9VU1JMSUJSUE09J2BkaXJuYW1lICQnJ3JlYWxwYXRoYCcvJHtAb3MucGF0aC5yZWxwYXRoKGQuZ2V0VmFyKCdsaWJkaXInLCBUcnVlKSwgZC5nZXRWYXIoJ2JpbmRpcicsIFRydWUpKX0vcnBtIFwKLQkJUlBNX0VUQ1JQTT0nJCd7UlBNX0VUQ1JQTS0nYGRpcm5hbWUgJCcncmVhbHBhdGhgJy8ke0Bvcy5wYXRoLnJlbHBhdGgoZC5nZXRWYXIoJ3N5c2NvbmZkaXInLCBUcnVlKSwgZC5nZXRWYXIoJ2JpbmRpcicsIFRydWUpKX0vcnBtfSBcCi0JCVJQTV9MT0NBTEVESVJSUE09J2BkaXJuYW1lICQnJ3JlYWxwYXRoYCcvJHtAb3MucGF0aC5yZWxwYXRoKGQuZ2V0VmFyKCdkYXRhZGlyJywgVHJ1ZSksIGQuZ2V0VmFyKCdiaW5kaXInLCBUcnVlKSl9L2xvY2FsZQotCi0gICAgICAgIGNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L3JwbTJjcGlvIFwKLQkJUlBNX1VTUkxJQlJQTT0nYGRpcm5hbWUgJCcncmVhbHBhdGhgJy8ke0Bvcy5wYXRoLnJlbHBhdGgoZC5nZXRWYXIoJ2xpYmRpcicsIFRydWUpLCBkLmdldFZhcignYmluZGlyJywgVHJ1ZSkpfS9ycG0gXAotCQlSUE1fRVRDUlBNPSckJ3tSUE1fRVRDUlBNLSdgZGlybmFtZSAkJydyZWFscGF0aGAnLyR7QG9zLnBhdGgucmVscGF0aChkLmdldFZhcignc3lzY29uZmRpcicsIFRydWUpLCBkLmdldFZhcignYmluZGlyJywgVHJ1ZSkpfS9ycG19IFwKLQkJUlBNX0xPQ0FMRURJUlJQTT0nYGRpcm5hbWUgJCcncmVhbHBhdGhgJy8ke0Bvcy5wYXRoLnJlbHBhdGgoZC5nZXRWYXIoJ2RhdGFkaXInLCBUcnVlKSwgZC5nZXRWYXIoJ2JpbmRpcicsIFRydWUpKX0vbG9jYWxlCi0KLSAgICAgICAgY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vcnBtYnVpbGQgXAotCQlSUE1fVVNSTElCUlBNPSdgZGlybmFtZSAkJydyZWFscGF0aGAnLyR7QG9zLnBhdGgucmVscGF0aChkLmdldFZhcignbGliZGlyJywgVHJ1ZSksIGQuZ2V0VmFyKCdiaW5kaXInLCBUcnVlKSl9L3JwbSBcCi0JCVJQTV9FVENSUE09JyQne1JQTV9FVENSUE0tJ2BkaXJuYW1lICQnJ3JlYWxwYXRoYCcvJHtAb3MucGF0aC5yZWxwYXRoKGQuZ2V0VmFyKCdzeXNjb25mZGlyJywgVHJ1ZSksIGQuZ2V0VmFyKCdiaW5kaXInLCBUcnVlKSl9L3JwbX0gXAotCQlSUE1fTE9DQUxFRElSUlBNPSdgZGlybmFtZSAkJydyZWFscGF0aGAnLyR7QG9zLnBhdGgucmVscGF0aChkLmdldFZhcignZGF0YWRpcicsIFRydWUpLCBkLmdldFZhcignYmluZGlyJywgVHJ1ZSkpfS9sb2NhbGUKLQotICAgICAgICBjcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9ycG1jb25zdGFudCBcCi0JCVJQTV9VU1JMSUJSUE09J2BkaXJuYW1lICQnJ3JlYWxwYXRoYCcvJHtAb3MucGF0aC5yZWxwYXRoKGQuZ2V0VmFyKCdsaWJkaXInLCBUcnVlKSwgZC5nZXRWYXIoJ2JpbmRpcicsIFRydWUpKX0vcnBtIFwKLQkJUlBNX0VUQ1JQTT0nJCd7UlBNX0VUQ1JQTS0nYGRpcm5hbWUgJCcncmVhbHBhdGhgJy8ke0Bvcy5wYXRoLnJlbHBhdGgoZC5nZXRWYXIoJ3N5c2NvbmZkaXInLCBUcnVlKSwgZC5nZXRWYXIoJ2JpbmRpcicsIFRydWUpKX0vcnBtfSBcCi0JCVJQTV9MT0NBTEVESVJSUE09J2BkaXJuYW1lICQnJ3JlYWxwYXRoYCcvJHtAb3MucGF0aC5yZWxwYXRoKGQuZ2V0VmFyKCdkYXRhZGlyJywgVHJ1ZSksIGQuZ2V0VmFyKCdiaW5kaXInLCBUcnVlKSl9L2xvY2FsZQotCi0JZm9yIHJwbV9iaW5hcnkgaW4gJHtEfS8ke2xpYmRpcn0vcnBtL2Jpbi9ycG0qICR7RH0vJHtsaWJkaXJ9L3JwbS9iaW4vZGVidWdlZGl0OyBkbwotICAgICAgICAJY3JlYXRlX3dyYXBwZXIgJHJwbV9iaW5hcnkgXAotCQkJUlBNX1VTUkxJQlJQTT0nYGRpcm5hbWUgJCcncmVhbHBhdGhgJy8ke0Bvcy5wYXRoLnJlbHBhdGgoZC5nZXRWYXIoJ2xpYmRpcicsIFRydWUpLCBkLmdldFZhcignYmluZGlyJywgVHJ1ZSkpfS9ycG0gXAotCQkJUlBNX0VUQ1JQTT0nJCd7UlBNX0VUQ1JQTS0nYGRpcm5hbWUgJCcncmVhbHBhdGhgJy8ke0Bvcy5wYXRoLnJlbHBhdGgoZC5nZXRWYXIoJ3N5c2NvbmZkaXInLCBUcnVlKSwgZC5nZXRWYXIoJ2JpbmRpcicsIFRydWUpKX0vcnBtfSBcCi0JCQlSUE1fTE9DQUxFRElSUlBNPSdgZGlybmFtZSAkJydyZWFscGF0aGAnLyR7QG9zLnBhdGgucmVscGF0aChkLmdldFZhcignZGF0YWRpcicsIFRydWUpLCBkLmdldFZhcignYmluZGlyJywgVHJ1ZSkpfS9sb2NhbGUKLQlkb25lCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLQlhZGRfbmF0aXZlX3dyYXBwZXIKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgewotCWFkZF9uYXRpdmVfd3JhcHBlcgotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9ycG1fNS40LjE2LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vcnBtXzUuNC4xNi5iYgppbmRleCBmMmMxMmQyLi4xMzMyMzk3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9ycG1fNS40LjE2LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL3JwbV81LjQuMTYuYmIKQEAgLTExNiw2ICsxMTYsOSBAQAogCSAgIGZpbGU6Ly9ycG0tZml4LWx1YS10ZXN0cy1jb21waWxhdGlvbi1mYWlsdXJlLnBhdGNoIFwKIAkgICBmaWxlOi8vcnBtcXYuYy1jaGVjay1fZ3BnX3Bhc3NwaHJhc2UtYmVmb3JlLWFzay1mb3ItaW5wdXQucGF0Y2ggXAogCSAgIGZpbGU6Ly8wMDAxLURpc2FibGUtX19zeW5jX2FkZF9hbmRfZmV0Y2hfOC1vbi1uaW9zMi5wYXRjaCBcCisJICAgZmlsZTovL2djYzYtc3RkbGliLnBhdGNoIFwKKwkgICBmaWxlOi8vMDAwMS1zeXN0ZW0uaC1xdWVyeS5jLXN1cHBvcnQtbm9zaWduYXR1cmUucGF0Y2ggXAorCSAgIGZpbGU6Ly9ycG0tZW5zdXJlLXJwbTJjcGlvLWNhbGwtcnBtLXJlbG9jYXRpb24tY29kZS5wYXRjaCBcCiAiCiAKICMgT0Ugc3BlY2lmaWMgY2hhbmdlcwpAQCAtMTUxLDYgKzE1NCw3IEBACiAJICAgZmlsZTovL3JwbS1ycG1kYi1ncmFtbWFyLnBhdGNoIFwKIAkgICBmaWxlOi8vcnBtLWRpc2FibGUtYmxha2V0ZXN0LnBhdGNoIFwKIAkgICBmaWxlOi8vcnBtLWF1dG9nZW4tZm9yY2UucGF0Y2ggXAorCSAgIGZpbGU6Ly9ycG1kYi1wcmV2ZW50LXJhY2UtaW4tdG1wZGlyLWNyZWF0aW9uLnBhdGNoIFwKIAkgICBmaWxlOi8vcnBtZGItbW9yZS12ZXJib3NlLWVycm9yLWxvZ2dpbmctaW4tcnBtVGVtcEZpbGUucGF0Y2ggXAogIgogCkBAIC0xNjQsNyArMTY4LDcgQEAKIAogVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAicnBtLSg/UDxwdmVyPihcZCtbXC5cLV9dKikrKS0uKiQiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcHl0aG9uLWRpcgogCiBhY3BhdGhzID0gIi1JICR7U30vZGIvZGlzdC9hY2xvY2FsIC1JICR7U30vZGIvZGlzdC9hY2xvY2FsX2phdmEiCiAKQEAgLTI1Nyw3ICsyNjEsNyBAQAogCiBXSVRIX1BZVEhPTiA9ICIgLS13aXRoLXB5dGhvbj0ke1BZVEhPTl9CQVNFVkVSU0lPTn0gXAogCQktLXdpdGgtcHl0aG9uLWluYy1kaXI9JHtTVEFHSU5HX0lOQ0RJUn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059IFwKLQkJLS13aXRoLXB5dGhvbi1saWItZGlyPSR7bGliZGlyfS9weXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0vc2l0ZS1wYWNrYWdlcyBcCisJCS0td2l0aC1weXRob24tbGliLWRpcj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSBcCiAJCS0td2l0aG91dC1weXRob25lbWJlZCIKIFBBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICIke1dJVEhfUFlUSE9OfSwtLXdpdGhvdXQtcHl0aG9uLHB5dGhvbiwiCiAKQEAgLTM0NCw3ICszNDgsNyBAQAogCQktLXByb2dyYW0tcHJlZml4PSBcCiAJCVlBQ0M9YnlhY2MiCiAKLUNGTEFHU19hcHBlbmQgPSAiIC1EUlBNX1ZFTkRPUl9XSU5EUklWRVIgLURSUE1fVkVORE9SX1BPS1kgLURSUE1fVkVORE9SX09FIgorQ0ZMQUdTX2FwcGVuZCA9ICIgLURSUE1fVkVORE9SX1dJTkRSSVZFUiAtRFJQTV9WRU5ET1JfUE9LWSAtRFJQTV9WRU5ET1JfT0UgLURfR0xJQkNYWF9JTkNMVURFX05FWFRfQ19IRUFERVJTIgogCiBMREZMQUdTX2FwcGVuZF9saWJjLXVjbGliYyA9ICItbHJ0IC1scHRocmVhZCIKIApAQCAtNDc1LDcgKzQ3OSw3IEBACiAKIFJERVBFTkRTX3B5dGhvbi1ycG0gPSAiJHtQTn0gcHl0aG9uIgogCi1GSUxFU19weXRob24tcnBtID0gIiR7bGliZGlyfS9weXRob24qL3NpdGUtcGFja2FnZXMvcnBtIgorRklMRVNfcHl0aG9uLXJwbSA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9ycG0iCiBQUk9WSURFUyArPSAicHl0aG9uLXJwbSIKIAogRklMRVNfcGVybC1tb2R1bGUtcnBtID0gIiR7bGliZGlyfS9wZXJsLyovKiBcCkBAIC01MTAsNyArNTE0LDcgQEAKIAkJJHtsaWJkaXJ9L2xpYnJwbW1pc2MuYSBcCiAJCSR7bGliZGlyfS9saWJycG1idWlsZC5hIFwKIAkJJHtsaWJkaXJ9L3JwbS9saWIvbGlibHVhLmEgXAotCQkke2xpYmRpcn0vcHl0aG9uKi9zaXRlLXBhY2thZ2VzL3JwbS8qLmEgXAorCQkke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9ycG0vKi5hIFwKIAkJIgogCiBkb19jb25maWd1cmUoKSB7CkBAIC01MjQsNyArNTI4LDcgQEAKIAlzZWQgLWUgJ3MvcGtnLWNvbmZpZyAtLWV4aXN0cyB1dWlkL3BrZy1jb25maWcgLS1leGlzdHMgb3NzcC11dWlkL2cnIFwKIAkgICAgLWUgJ3MvcGtnLWNvbmZpZyB1dWlkL3BrZy1jb25maWcgb3NzcC11dWlkL2cnIC1pICR7U30vY29uZmlndXJlCiAKLQkoIGNkICR7U30vc3ljayA7IHNldCArZSA7IHJtIC0tIC1sKiA7IG1ha2UgZGlzdGNsZWFuICkgfHwgOgorCSggY2QgJHtTfS9zeWNrIDsgc2V0ICtlIDsgcm0gLS0gLWwqIDsgcm0gTWFrZWZpbGUgY29uZmlnLmggY29uZmlnLnN0YXR1cyBsaWIvTWFrZWZpbGUgbGlidG9vbCBzdGFtcC1oMSB0ZXN0cy8uZGVwcyB0ZXN0cy9NYWtlZmlsZSAgKSB8fCA6CiAKIAlleHBvcnQgdmFycHJlZml4PSR7bG9jYWxzdGF0ZWRpcn0KIAlvZV9ydW5jb25mCkBAIC01NTEsNTQgKzU1NSwyMCBAQAogCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L3B5dGhvbmRlcHMuc2ggJHtEfS8ke2xpYmRpcn0vcnBtL3B5dGhvbmRlcHMuc2gKIAlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9wZXJmaWxlX3JwbWRlcHMuc2ggJHtEfS8ke2xpYmRpcn0vcnBtL3BlcmZpbGVfcnBtZGVwcy5zaAogCi0JIyBSZW1vdmUgdW5wYWNrYWdlZCBmaWxlcyAoYmFzZWQgb24gbGlzdCBpbiBycG0uc3BlYykKLQlybSAtZiAke0R9LyR7bGliZGlyfS9ycG0ve1NwZWNmaWxlLnBtLGNwYW5mbHV0ZSxjcGFuZmx1dGUyLHJwbWRpZmYscnBtZGlmZi5jZ2ksc3FsLnByb3Ysc3FsLnJlcSx0Y2wucmVxLHRycG19Ci0KLQlybSAtZiAke0R9LyR7bWFuZGlyfS9tYW44L3JwbWNhY2hlLjgqCi0Jcm0gLWYgJHtEfS8ke21hbmRpcn0vbWFuOC9ycG1ncmFwaC44KgotCXJtIC1mICR7RH0vJHttYW5kaXJ9LyovbWFuOC9ycG1jYWNoZS44KgotCXJtIC1mICR7RH0vJHttYW5kaXJ9LyovbWFuOC9ycG1ncmFwaC44KgotCXJtIC1yZiAke0R9LyR7bWFuZGlyfS97ZnIsa299Ci0KIAlybSAtZiAke0R9LyR7aW5jbHVkZWRpcn0vcG9wdC5oCiAJcm0gLWYgJHtEfS8ke2xpYmRpcn0vbGlicG9wdC4qCiAJcm0gLWYgJHtEfS8ke2xpYmRpcn0vcGtnY29uZmlnL3BvcHQucGMKIAlybSAtZiAke0R9LyR7ZGF0YWRpcn0vbG9jYWxlLyovTENfTUVTU0FHRVMvcG9wdC5tbwogCXJtIC1mICR7RH0vJHttYW5kaXJ9L21hbjMvcG9wdC4zCiAKLQlybSAtZiAke0R9LyR7bWFuZGlyfS9tYW4xL3hhci4xKgotCXJtIC1mICR7RH0vJHtiaW5kaXJ9L3hhcgotCXJtIC1yZiAke0R9LyR7aW5jbHVkZWRpcn0veGFyCi0Jcm0gLWYgJHtEfS8ke2xpYmRpcn0vbGlieGFyKgotCi0Jcm0gLWYgJHtEfS8ke2JpbmRpcn0vbHoqCi0Jcm0gLWYgJHtEfS8ke2JpbmRpcn0vdW5sem1hCi0Jcm0gLWYgJHtEfS8ke2JpbmRpcn0vdW54egotCXJtIC1mICR7RH0vJHtiaW5kaXJ9L3h6KgotCXJtIC1yZiAke0R9LyR7aW5jbHVkZWRpcn0vbHptYSoKLQlybSAtZiAke0R9LyR7bWFuZGlyfS9tYW4xL2x6Ki4xCi0Jcm0gLWYgJHtEfS8ke2xpYmRpcn0vcGtnY29uZmlnL2xpYmx6bWEqCi0KLQlybSAtZiAke0R9LyR7bGliZGlyfS9weXRob24le3dpdGhfcHl0aG9uX3ZlcnNpb259L3NpdGUtcGFja2FnZXMvKi5hCi0Jcm0gLWYgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJXt3aXRoX3B5dGhvbl92ZXJzaW9ufS9zaXRlLXBhY2thZ2VzLyoubGEKLQlybSAtZiAke0R9LyR7bGliZGlyfS9weXRob24le3dpdGhfcHl0aG9uX3ZlcnNpb259L3NpdGUtcGFja2FnZXMvcnBtLyouYQotCXJtIC1mICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiV7d2l0aF9weXRob25fdmVyc2lvbn0vc2l0ZS1wYWNrYWdlcy9ycG0vKi5sYQotCi0JI2ZpbmQgJHtEfS8ke2xpYmRpcn0vcGVybDUgLXR5cGUgZiAtYSBcKCAtbmFtZSBwZXJsbG9jYWwucG9kIC1vIC1uYW1lIC5wYWNrbGlzdCBcCi0JIwktbyBcKCAtbmFtZSAnKi5icycgLWEgLWVtcHR5IFwpIFwpIC1leGVjIHJtIC1mIHt9ICc7JwotCSNmaW5kICR7RH0vJHtsaWJkaXJ9L3Blcmw1IC10eXBlIGQgLWRlcHRoIC1leGVjIHJtZGlyIHt9IDI+L2Rldi9udWxsICc7JworCXJtIC1mICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLmEKKwlybSAtZiAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKi5sYQorCXJtIC1mICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9ycG0vKi5hCisJcm0gLWYgJHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3JwbS8qLmxhCiAKIAlybSAtZiAke0R9LyR7bGliZGlyfS9ycG0vZGJjb252ZXJ0LnNoCi0KIAlybSAtZiAke0R9LyR7bGliZGlyfS9ycG0vbGlic3FsZGIuKgogCi0JIyBXZSBkb24ndCB3YW50LCBub3IgbmVlZCB0aGUgTWFuZHJpdmEgbXVsdGlhcmNoIGl0ZW1zCi0Jcm0gLWYgJHtEfS8ke2JpbmRpcn0vbXVsdGlhcmNoLWRpc3BhdGNoCi0Jcm0gLWYgJHtEfS8ke2JpbmRpcn0vbXVsdGlhcmNoLXBsYXRmb3JtCi0Jcm0gLWYgJHtEfS8ke2xpYmRpcn0vcnBtL2NoZWNrLW11bHRpYXJjaC1maWxlcwotCXJtIC1mICR7RH0vJHtsaWJkaXJ9L3JwbS9ta211bHRpYXJjaAotCXJtIC1mICR7RH0vJHtpbmNsdWRlZGlyfS9tdWx0aWFyY2gtZGlzcGF0Y2guaAotCiAJcm0gLWYgJHtEfS8ke2xpYmRpcn0vcnBtL2dzdHJlYW1lci5zaAogCXJtIC1mICR7RH0vJHtsaWJkaXJ9L3JwbS9nZW1faGVscGVyLnJiCiAJcm0gLWYgJHtEfS8ke2xpYmRpcn0vcnBtL3J1YnlnZW1zLnJiCkBAIC02MDcsMTIgKzU3NywxMCBAQAogCXJtIC1mICR7RH0vJHtsaWJkaXJ9L3JwbS9tYWNyb3MuZC9rZXJuZWwKIAlybSAtZiAke0R9LyR7bGliZGlyfS9ycG0vbWFjcm9zLmQvZ3N0cmVhbWVyCiAJcm0gLWYgJHtEfS8ke2xpYmRpcn0vcnBtL2Jpbi9tZ28KLQlybSAtZiAke0R9LyR7bGliZGlyfS9ycG0vYmluL2RiY29udmVydAogCXJtIC1mICR7RH0vJHtsaWJkaXJ9L3JwbS9iaW4vcG9tMnNwZWMKIAogCXJtIC1yZiAke0R9L3Zhci9saWIvd2RqICR7RH0vdmFyL2NhY2hlL3dkagogCXJtIC1mICR7RH0vJHtsaWJkaXJ9L3JwbS9iaW4vYXBpLXNhbml0eS1jaGVja2VyLnBsCi0KIH0KIAogZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewpAQCAtNjQ1LDExICs2MTMsMTEgQEAKIH0KIAogZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKLQlzZWQgLWkgLWUgJ3N8XiMhLiovdXNyL2Jpbi9weXRob258IyEgL3Vzci9iaW4vZW52IG5hdGl2ZXB5dGhvbnwnICR7RH0vJHtsaWJkaXJ9L3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3JwbS90cmFuc2FjdGlvbi5weQorCXNlZCAtaSAtZSAnc3xeIyEuKi91c3IvYmluL3B5dGhvbnwjISAvdXNyL2Jpbi9lbnYgbmF0aXZlcHl0aG9ufCcgJHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3JwbS90cmFuc2FjdGlvbi5weQogfQogCiBkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgKCkgewotCXNlZCAtaSAtZSAnc3xeIyEuKi91c3IvYmluL3B5dGhvbnwjISAvdXNyL2Jpbi9lbnYgcHl0aG9ufCcgJHtEfS8ke2xpYmRpcn0vcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcnBtL3RyYW5zYWN0aW9uLnB5CisJc2VkIC1pIC1lICdzfF4jIS4qL3Vzci9iaW4vcHl0aG9ufCMhIC91c3IvYmluL2VudiBweXRob258JyAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vcnBtL3RyYW5zYWN0aW9uLnB5CiB9CiAKIGRlZiBtdWx0aWxpYl9ycG1tYWNyb3MoZCk6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JzeW5jL3JzeW5jLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnN5bmMvcnN5bmMuaW5jCmluZGV4IGM2NWYyNzAuLjM3ODk3YWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnN5bmMvcnN5bmMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnN5bmMvcnN5bmMuaW5jCkBAIC0zLDExICszLDYgQEAKIEJVR1RSQUNLRVIgPSAiaHR0cDovL3JzeW5jLnNhbWJhLm9yZy9idWd6aWxsYS5odG1sIgogU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCiAKLSMgR1BMdjIrICg8PCAzLjAuMCksIEdQTHYzKyAoPj0gMy4wLjApCi1MSUNFTlNFID0gIkdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi0jIG5lZWRzIHRvIGFkZCBhY2wgYW5kIGF0dHIKIERFUEVORFMgPSAicG9wdCIKIAogU1JDX1VSSSA9ICJodHRwOi8vcnN5bmMuc2FtYmEub3JnL2Z0cC9yc3luYy9zcmMvcnN5bmMtJHtQVn0udGFyLmd6IFwKQEAgLTIxLDMgKzE2LDUgQEAKIH0KIAogRVhUUkFfT0VNQUtFPSdTVFJJUD0iIicKKworUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnN5bmMvcnN5bmNfMi42LjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JzeW5jL3JzeW5jXzIuNi45LmJiCmluZGV4IDY4NTRjNzcuLmVmZGYyNTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnN5bmMvcnN5bmNfMi42LjkuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9yc3luYy9yc3luY18yLjYuOS5iYgpAQCAtMSwyOCArMSwxNSBAQAotU1VNTUFSWSA9ICJGaWxlIHN5bmNocm9uaXphdGlvbiB0b29sIgotSE9NRVBBR0UgPSAiaHR0cDovL3JzeW5jLnNhbWJhLm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9yc3luYy5zYW1iYS5vcmcvYnVnemlsbGEuaHRtbCIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorcmVxdWlyZSByc3luYy5pbmMKIAotIyBuZWVkcyB0byBhZGQgYWNsIGFuZCBhdHRyCi1ERVBFTkRTID0gInBvcHQiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3JzeW5jLnNhbWJhLm9yZy9mdHAvcnN5bmMvc3JjL3JzeW5jLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9yc3luYy0yLjYuOS1mbmFtZS1vYm8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnN5bmNkLmNvbmYiCitTUkNfVVJJICs9ICJmaWxlOi8vcnN5bmMtMi42LjktZm5hbWUtb2JvLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9yc3luY2QuY29uZiBcCisiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICI5OTZkOGQ4ODMxZGJjYTE3OTEwMDk0ZTU2ZGNiNTk0MiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJjYTQzNzMwMWJlY2Q4OTBlNzMzMDBiYzY5YTM5MTg5ZmYxNTY0YmFhNzYxOTQ4ZmYxNDliM2RkN2JkZTYzM2Y5IgogCi1pbmhlcml0IGF1dG90b29scwotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9Ci0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcnN5bmNkLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0KLX0KLQotRVhUUkFfT0VNQUtFPSdTVFJJUD0iIicKLQogTElDRU5TRSA9ICJHUEx2MisiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02ZDVhOWQ0YzRkM2FmMjVjZDY4ZmQ4M2U4YThjYjA5YyIKIAogUFIgPSAicjQiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCAnaXB2NicsICcnLCBkKX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JzeW5jL3JzeW5jXzMuMS4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9yc3luYy9yc3luY18zLjEuMi5iYgppbmRleCA5NjM3ZWQ0Li5jNmNiMzMxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JzeW5jL3JzeW5jXzMuMS4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnN5bmMvcnN5bmNfMy4xLjIuYmIKQEAgLTUsNyArNSwxMyBAQAogU1JDX1VSSVttZDVzdW1dID0gIjBmNzU4ZDdlMDAwYzBmN2Y3ZDM3OTI2MTBmYWQ3MGNiIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImVjZmE2MmE3ZmEzYzRjMThiOWVjY2Q4YzE2ZWFkZGVlNGJkMzA4YTc2ZWE1MGI1YzAyYTU4NDBmMDljMGExYzIiCiAKLVBBQ0tBR0VDT05GSUcgPz89ICJhY2wgYXR0ciIKKyMgR1BMdjIrICg8PCAzLjAuMCksIEdQTHYzKyAoPj0gMy4wLjApCitMSUNFTlNFID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorCitQQUNLQUdFQ09ORklHID8/PSAiYWNsIGF0dHIgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsICdpcHY2JywgJycsIGQpfSBcCisiCiBQQUNLQUdFQ09ORklHW2FjbF0gPSAiLS1lbmFibGUtYWNsLXN1cHBvcnQsLS1kaXNhYmxlLWFjbC1zdXBwb3J0LGFjbCwiCiBQQUNLQUdFQ09ORklHW2F0dHJdID0gIi0tZW5hYmxlLXhhdHRyLXN1cHBvcnQsLS1kaXNhYmxlLXhhdHRyLXN1cHBvcnQsYXR0ciwiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5LmluYwppbmRleCAzMTNlNzUyLi5mZGU2N2U5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkuaW5jCkBAIC0yMCw3ICsyMCw4IEBACiBTSFJUX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgogU1JDX1VSSSA9ICJodHRwOi8vY2FjaGUucnVieS1sYW5nLm9yZy9wdWIvcnVieS8ke1NIUlRfVkVSfS9ydWJ5LSR7UFZ9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9leHRtay5wYXRjaCBcCi0iCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLU9iZXktTERGTEFHUy1mb3ItdGhlLWxpbmstb2YtbGlicnVieS5wYXRjaCBcCisgICAgICAgICAgICIKIAogaW5oZXJpdCBhdXRvdG9vbHMKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvMDAwMi1PYmV5LUxERkxBR1MtZm9yLXRoZS1saW5rLW9mLWxpYnJ1YnkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS8wMDAyLU9iZXktTERGTEFHUy1mb3ItdGhlLWxpbmstb2YtbGlicnVieS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDExNGJhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvMDAwMi1PYmV5LUxERkxBR1MtZm9yLXRoZS1saW5rLW9mLWxpYnJ1YnkucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK0Zyb20gMzA2ZTk1YTk4MThkMzlkMzM0OTA3NWFhYzk2MDllMDYyYjBmMTljZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+CitEYXRlOiBUaHUsIDUgTWF5IDIwMTYgMTA6NTk6MDcgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIE9iZXkgTERGTEFHUyBmb3IgdGhlIGxpbmsgb2YgbGlicnVieQorCitTaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgorLS0tCisgTWFrZWZpbGUuaW4gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCitpbmRleCA3ZGEyNDg4Li41YjRhZWExIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuaW4KKysrKyBiL01ha2VmaWxlLmluCitAQCAtNzUsNyArNzUsNyBAQCBFWFRMSUJTID0KKyBMSUJTID0gQExJQlNAICQoRVhUTElCUykKKyBNSVNTSU5HID0gQExJQk9CSlNAIEBBTExPQ0FACisgTERTSEFSRUQgPSBATElCUlVCWV9MRFNIQVJFREAKKy1ETERGTEFHUyA9IEBMSUJSVUJZX0RMREZMQUdTQCAkKFhMREZMQUdTKSAkKEFSQ0hfRkxBRykKKytETERGTEFHUyA9IEBMSUJSVUJZX0RMREZMQUdTQCBATERGTEFHU0AgJChYTERGTEFHUykgJChBUkNIX0ZMQUcpCisgU09MSUJTID0gQFNPTElCU0AKKyBNQUlOTElCUyA9IEBNQUlOTElCU0AKKyBBUkNITUlOSU9CSlMgPSBATUlOSU9CSlNACistLSAKKzIuOC4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5XzIuMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnlfMi4yLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3MTUwMjMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnlfMi4yLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1yZXF1aXJlIHJ1YnkuaW5jCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzMjZlOTlkZGM3NTM4MWM3YjUwYzg1ZjcwODlmMzI2MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZmZjMGYzMTdlNDI5ZTZiMjlkNGE5OGFjNTIxYzNjZTY1NDgxYmZkMjJhOGNmODQ1ZmEwMmE3YjExM2Q5YjQ0IgotCi0jIGl0J3MgdW5rbm93biB0byBjb25maWd1cmUgc2NyaXB0LCBidXQgdGhlbiBwYXNzZWQgdG8gZXh0Y29uZi5yYgotIyBtYXliZSBpdCdzIG5vdCByZWFsbHkgbmVlZGVkIGFzIHdlJ3JlIGhhcmRjb2RpbmcgdGhlIHJlc3VsdCB3aXRoCi0jIDAwMDEtc29ja2V0LWV4dGNvbmYtaGFyZGNvZGUtd2lkZS1nZXRhZGRyLWluZm8tdGVzdC1vdXRjby5wYXRjaAotVU5LTk9XTl9DT05GSUdVUkVfV0hJVEVMSVNUICs9ICItLWVuYWJsZS13aWRlLWdldGFkZHJpbmZvIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJRyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgJ2lwdjYnLCAnJywgZCl9IgotCi1QQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLXdpdGgtdmFsZ3JpbmQ9eWVzLCAtLXdpdGgtdmFsZ3JpbmQ9bm8sIHZhbGdyaW5kIgotUEFDS0FHRUNPTkZJR1tncG1dID0gIi0td2l0aC1nbXA9eWVzLCAtLXdpdGgtZ21wPW5vLCBnbXAiCi1QQUNLQUdFQ09ORklHW2lwdjZdID0gIiwtLWVuYWJsZS13aWRlLWdldGFkZHJpbmZvLCIKLQotRVhUUkFfT0VDT05GID0gIlwKLSAgICAtLWRpc2FibGUtdmVyc2lvbmVkLXBhdGhzIFwKLSAgICAtLWRpc2FibGUtcnBhdGggXAotICAgIC0tZGlzYWJsZS1kdHJhY2UgXAotICAgIC0tZW5hYmxlLXNoYXJlZCBcCi0gICAgLS1lbmFibGUtbG9hZC1yZWxhdGl2ZSBcCi0iCi0KLUVYVFJBX09FTUFLRSA9ICIgXAotICAgIExJQlJVQllBUkc9Jy1scnVieS1zdGF0aWMnIFwKLSIKLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LXJpLWRvY3MgJHtQTn0tcmRvYyIKLQotU1VNTUFSWV8ke1BOfS1yaS1kb2NzID0gInJpIChSdWJ5IEludGVyYWN0aXZlKSBkb2N1bWVudGF0aW9uIGZvciB0aGUgUnVieSBzdGFuZGFyZCBsaWJyYXJ5IgotUkRFUEVORFNfJHtQTn0tcmktZG9jcyA9ICIke1BOfSIKLUZJTEVTXyR7UE59LXJpLWRvY3MgKz0gIiR7ZGF0YWRpcn0vcmkiCi0KLVNVTU1BUllfJHtQTn0tcmRvYyA9ICJSRG9jIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yIGZyb20gUnVieSBzb3VyY2UiCi1SREVQRU5EU18ke1BOfS1yZG9jID0gIiR7UE59IgotRklMRVNfJHtQTn0tcmRvYyArPSAiJHtsaWJkaXJ9L3J1YnkvKi9yZG9jICR7YmluZGlyfS9yZG9jIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9ydWJ5Z2VtcyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieV8yLjIuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5XzIuMi41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhNjQ1ODIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieV8yLjIuNS5iYgpAQCAtMCwwICsxLDQyIEBACityZXF1aXJlIHJ1YnkuaW5jCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiZDhlMzQ5ZDRmYjJjNzVkOTA4MTc2NDk2NzRmOTRiZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzMGM0YjMxNjk3YTRjYTRlYTBjOGRiOGFkMzBjZjQ1ZTY2OTBhMGYwOTY4N2U1ZDQ4M2M5MzNjMDNjYTMzNWUzIgorCisjIGl0J3MgdW5rbm93biB0byBjb25maWd1cmUgc2NyaXB0LCBidXQgdGhlbiBwYXNzZWQgdG8gZXh0Y29uZi5yYgorIyBtYXliZSBpdCdzIG5vdCByZWFsbHkgbmVlZGVkIGFzIHdlJ3JlIGhhcmRjb2RpbmcgdGhlIHJlc3VsdCB3aXRoCisjIDAwMDEtc29ja2V0LWV4dGNvbmYtaGFyZGNvZGUtd2lkZS1nZXRhZGRyLWluZm8tdGVzdC1vdXRjby5wYXRjaAorVU5LTk9XTl9DT05GSUdVUkVfV0hJVEVMSVNUICs9ICItLWVuYWJsZS13aWRlLWdldGFkZHJpbmZvIgorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJRyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgJ2lwdjYnLCAnJywgZCl9IgorCitQQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLXdpdGgtdmFsZ3JpbmQ9eWVzLCAtLXdpdGgtdmFsZ3JpbmQ9bm8sIHZhbGdyaW5kIgorUEFDS0FHRUNPTkZJR1tncG1dID0gIi0td2l0aC1nbXA9eWVzLCAtLXdpdGgtZ21wPW5vLCBnbXAiCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIiwtLWVuYWJsZS13aWRlLWdldGFkZHJpbmZvLCIKKworRVhUUkFfT0VDT05GID0gIlwKKyAgICAtLWRpc2FibGUtdmVyc2lvbmVkLXBhdGhzIFwKKyAgICAtLWRpc2FibGUtcnBhdGggXAorICAgIC0tZGlzYWJsZS1kdHJhY2UgXAorICAgIC0tZW5hYmxlLXNoYXJlZCBcCisgICAgLS1lbmFibGUtbG9hZC1yZWxhdGl2ZSBcCisiCisKK2RvX2luc3RhbGwoKSB7CisgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1yaS1kb2NzICR7UE59LXJkb2MiCisKK1NVTU1BUllfJHtQTn0tcmktZG9jcyA9ICJyaSAoUnVieSBJbnRlcmFjdGl2ZSkgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIFJ1Ynkgc3RhbmRhcmQgbGlicmFyeSIKK1JERVBFTkRTXyR7UE59LXJpLWRvY3MgPSAiJHtQTn0iCitGSUxFU18ke1BOfS1yaS1kb2NzICs9ICIke2RhdGFkaXJ9L3JpIgorCitTVU1NQVJZXyR7UE59LXJkb2MgPSAiUkRvYyBkb2N1bWVudGF0aW9uIGdlbmVyYXRvciBmcm9tIFJ1Ynkgc291cmNlIgorUkRFUEVORFNfJHtQTn0tcmRvYyA9ICIke1BOfSIKK0ZJTEVTXyR7UE59LXJkb2MgKz0gIiR7bGliZGlyfS9ydWJ5LyovcmRvYyAke2JpbmRpcn0vcmRvYyIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vcnVieWdlbXMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMKaW5kZXggNTNhOGUxZC4uMDRiYTM5NCAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzCkBAIC02LDcgKzYsNyBAQAogIwogCiAjIFRoZSBmb2xsb3dpbmcgc2NyaXB0IHdpbGwgcnVuIGFsbCB0aGUgc2NyaXB0bGV0cyBmb3VuZCBpbiAjU1lTQ09ORkRJUiMvZGViLXBvc3RpbnN0cywKLSMgI1NZU0NPTkZESVIjL2lway1wb3N0aW5zdHMgb3IgI1NZU0NPTkZESVIjL3JwbS1wb3NpbnN0cy4KKyMgI1NZU0NPTkZESVIjL2lway1wb3N0aW5zdHMgb3IgI1NZU0NPTkZESVIjL3JwbS1wb3N0aW5zdHMuCiAKICMgdGhlIG9yZGVyIG9mIHRoaXMgbGlzdCBpcyBpbXBvcnRhbnQsIGRvIG5vdCBjaGFuZ2UhCiBiYWNrZW5kX2xpc3Q9InJwbSBkZWIgaXBrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zZ21sLWNvbW1vbi9zZ21sLWNvbW1vbi1uYXRpdmVfMC42LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3NnbWwtY29tbW9uL3NnbWwtY29tbW9uLW5hdGl2ZV8wLjYuMy5iYgppbmRleCA1OTc1MzY1Li45N2IzMDhhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3NnbWwtY29tbW9uL3NnbWwtY29tbW9uLW5hdGl2ZV8wLjYuMy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3NnbWwtY29tbW9uL3NnbWwtY29tbW9uLW5hdGl2ZV8wLjYuMy5iYgpAQCAtMjIsOCArMjIsNiBAQAogCiBTWVNST09UX1BSRVBST0NFU1NfRlVOQ1MgKz0gInNnbWxfY29tbW9uX25hdGl2ZV9tYW5nbGUiCiBTU1RBVEVQT1NUSU5TVEZVTkNTICs9ICJzZ21sX2NvbW1vbl9zc3RhdGVfcG9zdGluc3QiCi1DTEVBTkZVTkNTICs9ICJzZ21sX2NvbW1vbl9zc3RhdGVfY2xlYW4iCi0KIAogZG9faW5zdGFsbF9hcHBlbmQoKSB7CiAJIyBpbnN0YWxsLWNhdGFsb2cgc2NyaXB0IGNvbnRhaW5zIGhhcmQtY29kZWQgcmVmZXJlbmNlcyB0bwpAQCAtNTksMTMgKzU3LDE0IEBACiAJCQkJZmkKIAkJCWRvbmUKIAkJZmkKLQlmaQotfQorCQljYXQgPDwgRU9GID4gJHtTU1RBVEVfSU5TVF9QT1NUUk19CisjIS9iaW4vc2gKIAotc2dtbF9jb21tb25fc3N0YXRlX2NsZWFuICgpIHsKLQkjIEVuc3VyZSB0aGF0IHRoZSBjYXRhbG9nIGZpbGUgc2dtbC1kb2Nib29rLmNhdCBpcyBwcm9wZXJseQotCSMgdXBkYXRlZCB3aGVuIHRoZSBwYWNrYWdlIGlzIHJlbW92ZWQgZnJvbSBzc3RhdGUgY2FjaGUuCi0JaWYgWyAtZiAke3N5c2NvbmZkaXJ9L3NnbWwvc2dtbC1kb2Nib29rLmNhdCBdOyB0aGVuCi0JCXNlZCAtaSAnL1wvc2dtbFwvc2dtbC1lbnQuY2F0L2QnICR7c3lzY29uZmRpcn0vc2dtbC9zZ21sLWRvY2Jvb2suY2F0CisjIEVuc3VyZSB0aGF0IHRoZSBjYXRhbG9nIGZpbGUgc2dtbC1kb2Nib29rLmNhdCBpcyBwcm9wZXJseQorIyB1cGRhdGVkIHdoZW4gdGhlIHBhY2thZ2UgaXMgcmVtb3ZlZCBmcm9tIHNzdGF0ZSBjYWNoZS4KK2lmIFsgLWYgJHtzeXNjb25mZGlyfS9zZ21sL3NnbWwtZG9jYm9vay5jYXQgXTsgdGhlbgorCXNlZCAtaSAnL1wvc2dtbFwvc2dtbC1lbnQuY2F0L2QnICR7c3lzY29uZmRpcn0vc2dtbC9zZ21sLWRvY2Jvb2suY2F0CitmaQorRU9GCiAJZmkKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS8wMDAxLUZpeC1idWlsZC13aGVuLXVzaW5nLW5vbi1nbGliYy1saWJjLWltcGxlbWVudGF0aW9uLW8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvMDAwMS1GaXgtYnVpbGQtd2hlbi11c2luZy1ub24tZ2xpYmMtbGliYy1pbXBsZW1lbnRhdGlvbi1vLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmNTkyMTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvMDAwMS1GaXgtYnVpbGQtd2hlbi11c2luZy1ub24tZ2xpYmMtbGliYy1pbXBsZW1lbnRhdGlvbi1vLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK0Zyb20gMWYwYzIyYjc5MDQ1Y2ZjZGM5NzY2NDNmMzgzYzFkMDk1ODlkMzA4NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDMwIEFwciAyMDE2IDE2OjIzOjU2ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCB3aGVuIHVzaW5nIG5vbi1nbGliYyBsaWJjIGltcGxlbWVudGF0aW9uIG9uIHBwYworCitnbGliYyBpbmNsdWRlcyB0aGUga2VybmVsIGhlYWRlciBpbnRvIGl0cyBvd24gaGVhZGVyIGZvciBtYWNyb3MKK211c2wgZG9lcyBub3QKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgcHRyYWNlLmggfCA4ICsrKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvcHRyYWNlLmggYi9wdHJhY2UuaAoraW5kZXggZDhhZjk3Ni4uNDk3OGE2OSAxMDA2NDQKKy0tLSBhL3B0cmFjZS5oCisrKysgYi9wdHJhY2UuaAorQEAgLTUyLDcgKzUyLDEzIEBAIGV4dGVybiBsb25nIHB0cmFjZShpbnQsIGludCwgY2hhciAqLCBsb25nKTsKKyAjIGRlZmluZSBwdHJhY2VfcGVla3NpZ2luZm9fYXJncyBYWFhfcHRyYWNlX3BlZWtzaWdpbmZvX2FyZ3MKKyAjZW5kaWYKKyAKKy0jaW5jbHVkZSA8bGludXgvcHRyYWNlLmg+CisrI2lmIGRlZmluZWQoUE9XRVJQQykgJiYgIWRlZmluZWQoX19HTElCQ19fKQorKyNkZWZpbmUgcHRfcmVncyB1YXBpX3B0X3JlZ3MKKysjZW5kaWYKKysjIGluY2x1ZGUgPGxpbnV4L3B0cmFjZS5oPgorKyNpZiBkZWZpbmVkKFBPV0VSUEMpICYmICFkZWZpbmVkKF9fR0xJQkNfXykKKysjIHVuZGVmIHB0X3JlZ3MKKysjZW5kaWYKKyAKKyAjaWZkZWYgSEFWRV9TVFJVQ1RfSUE2NF9GUFJFRworICMgdW5kZWYgaWE2NF9mcHJlZworLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS8wMDAxLU1vdmUtZ2NjLWNvbXBhdC1tYWNyb3MtdG8tZ2NjX2NvbXBhdC5oLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlLzAwMDEtTW92ZS1nY2MtY29tcGF0LW1hY3Jvcy10by1nY2NfY29tcGF0LmgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhNjFlMTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlLzAwMDEtTW92ZS1nY2MtY29tcGF0LW1hY3Jvcy10by1nY2NfY29tcGF0LmgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNzYgKzAsMCBAQAotRnJvbSBmMzIxMjZiYTc5MGRkNGU2MWQ0M2EyMTQwYjI0ZjAyNDI2Mjk3YmI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIkRtaXRyeSBWLiBMZXZpbiIgPGxkdkBhbHRsaW51eC5vcmc+Ci1EYXRlOiBUaHUsIDMxIERlYyAyMDE1IDE0OjE5OjQxICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIE1vdmUgZ2NjIGNvbXBhdCBtYWNyb3MgdG8gZ2NjX2NvbXBhdC5oCi0KLSogZGVmcy5oOiBJbmNsdWRlICJnY2NfY29tcGF0LmgiLgotKEdOVUNfUFJFUkVRLCBBVFRSSUJVVEVfTk9SRVRVUk4sIEFUVFJJQlVURV9GT1JNQVQsCi1BVFRSSUJVVEVfQUxJR05FRCwgQVRUUklCVVRFX1BBQ0tFRCwgQVRUUklCVVRFX01BTExPQywKLUFUVFJJQlVURV9OT0lOTElORSwgQVRUUklCVVRFX0FMTE9DX1NJWkUpOiBNb3ZlIC4uLgotKiBnY2NfY29tcGF0Lmg6IC4uLiBoZXJlLgotKiBNYWtlZmlsZS5hbSAoc3RyYWNlX1NPVVJDRVMpOiBBZGQgZ2NjX2NvbXBhdC5oLgotLS0tCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi0gTWFrZWZpbGUuYW0gIHwgIDEgKwotIGRlZnMuaCAgICAgICB8IDQzICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gZ2NjX2NvbXBhdC5oIHwgNzMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCA3NSBpbnNlcnRpb25zKCspLCA0MiBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjX2NvbXBhdC5oCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCBhYjUyNzc4Li5kNDM2MDhkIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtOTcsNiArOTcsNyBAQCBzdHJhY2VfU09VUkNFUyA9CVwKLSAJZmxvY2suYwkJXAotIAlmbG9jay5oCQlcCi0gCWZ1dGV4LmMJCVwKLSsJZ2NjX2NvbXBhdC5oCVwKLSAJZ2V0X3JvYnVzdF9saXN0LmMgXAotIAlnZXRjcHUuYwlcCi0gCWdldGN3ZC5jCVwKLWRpZmYgLS1naXQgYS9kZWZzLmggYi9kZWZzLmgKLWluZGV4IDI4M2FiMWYuLmJhZTIxMmMgMTAwNjQ0Ci0tLS0gYS9kZWZzLmgKLSsrKyBiL2RlZnMuaAotQEAgLTU1LDYgKzU1LDcgQEAKLSAjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KLSAKLSAjaW5jbHVkZSAibXBlcnNfdHlwZS5oIgotKyNpbmNsdWRlICJnY2NfY29tcGF0LmgiCi0gCi0gI2lmbmRlZiBIQVZFX1NUUkVSUk9SCi0gY29uc3QgY2hhciAqc3RyZXJyb3IoaW50KTsKLUBAIC02OCw0OCArNjksNiBAQCBjb25zdCBjaGFyICpzdHJlcnJvcihpbnQpOwotIGV4dGVybiBjaGFyICpzdHBjcHkoY2hhciAqZHN0LCBjb25zdCBjaGFyICpzcmMpOwotICNlbmRpZgotIAotLSNpZiBkZWZpbmVkIF9fR05VQ19fICYmIGRlZmluZWQgX19HTlVDX01JTk9SX18KLS0jIGRlZmluZSBHTlVDX1BSRVJFUShtYWosIG1pbikJXAotLQkoKF9fR05VQ19fIDw8IDE2KSArIF9fR05VQ19NSU5PUl9fID49ICgobWFqKSA8PCAxNikgKyAobWluKSkKLS0jZWxzZQotLSMgZGVmaW5lIF9fYXR0cmlidXRlX18oeCkJLyogZW1wdHkgKi8KLS0jIGRlZmluZSBHTlVDX1BSRVJFUShtYWosIG1pbikJMAotLSNlbmRpZgotLQotLSNpZiBHTlVDX1BSRVJFUSgyLCA1KQotLSMgZGVmaW5lIEFUVFJJQlVURV9OT1JFVFVSTglfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKQotLSNlbHNlCi0tIyBkZWZpbmUgQVRUUklCVVRFX05PUkVUVVJOCS8qIGVtcHR5ICovCi0tI2VuZGlmCi0tCi0tI2lmIEdOVUNfUFJFUkVRKDIsIDcpCi0tIyBkZWZpbmUgQVRUUklCVVRFX0ZPUk1BVChhcmdzKQlfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fIGFyZ3MpKQotLSMgZGVmaW5lIEFUVFJJQlVURV9BTElHTkVEKGFyZykJX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oYXJnKSkpCi0tIyBkZWZpbmUgQVRUUklCVVRFX1BBQ0tFRAlfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fKSkKLS0jZWxzZQotLSMgZGVmaW5lIEFUVFJJQlVURV9GT1JNQVQoYXJncykJLyogZW1wdHkgKi8KLS0jIGRlZmluZSBBVFRSSUJVVEVfQUxJR05FRChhcmcpCS8qIGVtcHR5ICovCi0tIyBkZWZpbmUgQVRUUklCVVRFX1BBQ0tFRAkvKiBlbXB0eSAqLwotLSNlbmRpZgotLQotLSNpZiBHTlVDX1BSRVJFUSgzLCAwKQotLSMgZGVmaW5lIEFUVFJJQlVURV9NQUxMT0MJX19hdHRyaWJ1dGVfXygoX19tYWxsb2NfXykpCi0tI2Vsc2UKLS0jIGRlZmluZSBBVFRSSUJVVEVfTUFMTE9DCS8qIGVtcHR5ICovCi0tI2VuZGlmCi0tCi0tI2lmIEdOVUNfUFJFUkVRKDMsIDEpCi0tIyBkZWZpbmUgQVRUUklCVVRFX05PSU5MSU5FCV9fYXR0cmlidXRlX18oKF9fbm9pbmxpbmVfXykpCi0tI2Vsc2UKLS0jIGRlZmluZSBBVFRSSUJVVEVfTk9JTkxJTkUJLyogZW1wdHkgKi8KLS0jZW5kaWYKLS0KLS0jaWYgR05VQ19QUkVSRVEoNCwgMykKLS0jIGRlZmluZSBBVFRSSUJVVEVfQUxMT0NfU0laRShhcmdzKQlfX2F0dHJpYnV0ZV9fKChfX2FsbG9jX3NpemVfXyBhcmdzKSkKLS0jZWxzZQotLSMgZGVmaW5lIEFUVFJJQlVURV9BTExPQ19TSVpFKGFyZ3MpCS8qIGVtcHR5ICovCi0tI2VuZGlmCi0tCi0gI2lmbmRlZiBvZmZzZXRvZgotICMgZGVmaW5lIG9mZnNldG9mKHR5cGUsIG1lbWJlcikJXAotIAkoKChjaGFyICopICYoKCh0eXBlICopIE5VTEwpLT5tZW1iZXIpKSAtICgoY2hhciAqKSAodHlwZSAqKSBOVUxMKSkKLWRpZmYgLS1naXQgYS9nY2NfY29tcGF0LmggYi9nY2NfY29tcGF0LmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4xZjJjODM1Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2NfY29tcGF0LmgKLUBAIC0wLDAgKzEsNzMgQEAKLSsvKgotKyAqIENvcHlyaWdodCAoYykgMjAxNSBEbWl0cnkgVi4gTGV2aW4gPGxkdkBhbHRsaW51eC5vcmc+Ci0rICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKgotKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKyAqIGFyZSBtZXQ6Ci0rICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0rICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0rICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSsgKiAzLiBUaGUgbmFtZSBvZiB0aGUgYXV0aG9yIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMKLSsgKiAgICBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSsgKgotKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SCi0rICogSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUwotKyAqIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuCi0rICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULAotKyAqIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAotKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSsgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSsgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0rICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0rICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSsgKi8KLSsKLSsjaWZuZGVmIEdDQ19DT01QQVRfSF8KLSsjZGVmaW5lIEdDQ19DT01QQVRfSF8KLSsKLSsjaWYgZGVmaW5lZCBfX0dOVUNfXyAmJiBkZWZpbmVkIF9fR05VQ19NSU5PUl9fCi0rIyBkZWZpbmUgR05VQ19QUkVSRVEobWFqLCBtaW4pCVwKLSsJKChfX0dOVUNfXyA8PCAxNikgKyBfX0dOVUNfTUlOT1JfXyA+PSAoKG1haikgPDwgMTYpICsgKG1pbikpCi0rI2Vsc2UKLSsjIGRlZmluZSBfX2F0dHJpYnV0ZV9fKHgpCS8qIGVtcHR5ICovCi0rIyBkZWZpbmUgR05VQ19QUkVSRVEobWFqLCBtaW4pCTAKLSsjZW5kaWYKLSsKLSsjaWYgR05VQ19QUkVSRVEoMiwgNSkKLSsjIGRlZmluZSBBVFRSSUJVVEVfTk9SRVRVUk4JX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9fKSkKLSsjZWxzZQotKyMgZGVmaW5lIEFUVFJJQlVURV9OT1JFVFVSTgkvKiBlbXB0eSAqLwotKyNlbmRpZgotKwotKyNpZiBHTlVDX1BSRVJFUSgyLCA3KQotKyMgZGVmaW5lIEFUVFJJQlVURV9GT1JNQVQoYXJncykJX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyBhcmdzKSkKLSsjIGRlZmluZSBBVFRSSUJVVEVfQUxJR05FRChhcmcpCV9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKGFyZykpKQotKyMgZGVmaW5lIEFUVFJJQlVURV9QQUNLRUQJX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXykpCi0rI2Vsc2UKLSsjIGRlZmluZSBBVFRSSUJVVEVfRk9STUFUKGFyZ3MpCS8qIGVtcHR5ICovCi0rIyBkZWZpbmUgQVRUUklCVVRFX0FMSUdORUQoYXJnKQkvKiBlbXB0eSAqLwotKyMgZGVmaW5lIEFUVFJJQlVURV9QQUNLRUQJLyogZW1wdHkgKi8KLSsjZW5kaWYKLSsKLSsjaWYgR05VQ19QUkVSRVEoMywgMCkKLSsjIGRlZmluZSBBVFRSSUJVVEVfTUFMTE9DCV9fYXR0cmlidXRlX18oKF9fbWFsbG9jX18pKQotKyNlbHNlCi0rIyBkZWZpbmUgQVRUUklCVVRFX01BTExPQwkvKiBlbXB0eSAqLwotKyNlbmRpZgotKwotKyNpZiBHTlVDX1BSRVJFUSgzLCAxKQotKyMgZGVmaW5lIEFUVFJJQlVURV9OT0lOTElORQlfX2F0dHJpYnV0ZV9fKChfX25vaW5saW5lX18pKQotKyNlbHNlCi0rIyBkZWZpbmUgQVRUUklCVVRFX05PSU5MSU5FCS8qIGVtcHR5ICovCi0rI2VuZGlmCi0rCi0rI2lmIEdOVUNfUFJFUkVRKDQsIDMpCi0rIyBkZWZpbmUgQVRUUklCVVRFX0FMTE9DX1NJWkUoYXJncykJX19hdHRyaWJ1dGVfXygoX19hbGxvY19zaXplX18gYXJncykpCi0rI2Vsc2UKLSsjIGRlZmluZSBBVFRSSUJVVEVfQUxMT0NfU0laRShhcmdzKQkvKiBlbXB0eSAqLwotKyNlbmRpZgotKwotKyNlbmRpZgotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvMDAwMS1hcmMtbWV0YWctbmlvczItb3Ixay10aWxlLWZpeC1idWlsZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS8wMDAxLWFyYy1tZXRhZy1uaW9zMi1vcjFrLXRpbGUtZml4LWJ1aWxkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOWQzMjAzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS8wMDAxLWFyYy1tZXRhZy1uaW9zMi1vcjFrLXRpbGUtZml4LWJ1aWxkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTE3ICswLDAgQEAKLUZyb20gZGQxYTgwYzhkMjEzZWVkOTVmZTU1YjdlYmNiMDdlZTE2NWRkOGU0YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJEbWl0cnkgVi4gTGV2aW4iIDxsZHZAYWx0bGludXgub3JnPgotRGF0ZTogVGh1LCAyNCBEZWMgMjAxNSAxNTo0MDo1NSArMDAwMAotU3ViamVjdDogW1BBVENIXSBhcmMsIG1ldGFnLCBuaW9zMiwgb3IxaywgdGlsZTogZml4IGJ1aWxkCi0KLUZpeCBidWlsZCByZWdyZXNzaW9uIGludHJvZHVjZWQgYnkgY29tbWl0Ci0zNDY4M2UzOTI2ZDhjMmRhYTM2OGFmYjgwNWRhNDIyZWU3MDQzMzk2LgotCi0qIGxpbnV4LzMyL3N5c2NhbGxlbnQuaDogQWRkIHN5c18gcHJlZml4IHRvIEFSQ0hfbW1hcCBhbmQgbW1hcC4KLSogbGludXgvYXJjL3N5c2NhbGxlbnQuaDogQWRkIHN5c18gcHJlZml4IHRvIEFSQ0hfbW1hcCBhbmQgbW1hcF9wZ29mZi4KLSogbGludXgvbmlvczIvc3lzY2FsbGVudC5oOiBMaWtld2lzZS4KLSogbGludXgvb3Ixay9zeXNjYWxsZW50Lmg6IExpa2V3aXNlLgotKiBsaW51eC90aWxlL3N5c2NhbGxlbnQxLmg6IEFkZCBzeXNfIHByZWZpeCB0byBBUkNIX21tYXAgYW5kIHN5c19tbWFwXzRrb2ZmLgotKiBwYXRodHJhY2UuYyAocGF0aHRyYWNlX21hdGNoKTogSGFuZGxlIFNFTl9BUkNIX21tYXAuCi0qIE5FV1M6IE1lbnRpb24gdGhpcyBidWlsZCBmaXguCi0KLVJlcG9ydGVkLWJ5OiBBbGV4ZXkgQnJvZGtpbiA8QWxleGV5LkJyb2RraW5Ac3lub3BzeXMuY29tPgotU2lnbmVkLW9mZi1ieTogTWFyZWsgVmFzdXQgPG1hcmV4QGRlbnguZGU+Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0tLS0KLSBORVdTICAgICAgICAgICAgICAgICAgICAgfCAzICsrKwotIGxpbnV4LzMyL3N5c2NhbGxlbnQuaCAgICB8IDYgKysrLS0tCi0gbGludXgvYXJjL3N5c2NhbGxlbnQuaCAgIHwgMiArLQotIGxpbnV4L25pb3MyL3N5c2NhbGxlbnQuaCB8IDIgKy0KLSBsaW51eC9vcjFrL3N5c2NhbGxlbnQuaCAgfCAyICstCi0gbGludXgvdGlsZS9zeXNjYWxsZW50MS5oIHwgMiArLQotIHBhdGh0cmFjZS5jICAgICAgICAgICAgICB8IDEgKwotIDcgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL05FV1MgYi9ORVdTCi1pbmRleCBmZTQwY2E0Li4wOTI2M2ViIDEwMDY0NAotLS0tIGEvTkVXUwotKysrIGIvTkVXUwotQEAgLTEsMyArMSw5IEBACi0rTm90ZXdvcnRoeSBjaGFuZ2VzIGluIHJlbGVhc2UgPy4/PyAoPz8/Py0/Py0/PykKLSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotKwotKyogQnVnIGZpeGVzCi0rICAqIEZpeGVkIGJ1aWxkIG9uIGFyYywgbWV0YWcsIG5pb3MyLCBvcjFrLCBhbmQgdGlsZSBhcmNoaXRlY3R1cmVzLgotKwotIE5vdGV3b3J0aHkgY2hhbmdlcyBpbiByZWxlYXNlIDQuMTEgKDIwMTUtMTItMjEpCi0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAKLWRpZmYgLS1naXQgYS9saW51eC8zMi9zeXNjYWxsZW50LmggYi9saW51eC8zMi9zeXNjYWxsZW50LmgKLWluZGV4IDVmOTk3ZTcuLmU2Zjg5NWMgMTAwNjQ0Ci0tLS0gYS9saW51eC8zMi9zeXNjYWxsZW50LmgKLSsrKyBiL2xpbnV4LzMyL3N5c2NhbGxlbnQuaAotQEAgLTEsNSArMSw1IEBACi0tI2lmbmRlZiBBUkNIX21tYXAKLS0jIGRlZmluZSBBUkNIX21tYXAgbW1hcAotKyNpZm5kZWYgc3lzX0FSQ0hfbW1hcAotKyMgZGVmaW5lIHN5c19BUkNIX21tYXAgc3lzX21tYXAKLSAjZW5kaWYKLSBbICAwXSA9IHsgMiwJMCwJCVNFTihpb19zZXR1cCksCQkJImlvX3NldHVwIgkJfSwKLSBbICAxXSA9IHsgMSwJMCwJCVNFTihpb19kZXN0cm95KSwJCSJpb19kZXN0cm95IgkJfSwKLUBAIC0yNzYsNSArMjc2LDUgQEAKLSBbMjgzXSA9IHsgMiwJMCwJCVNFTihtZW1iYXJyaWVyKSwJCSJtZW1iYXJyaWVyIiwJCX0sCi0gWzI4NF0gPSB7IDMsCVRNLAkJU0VOKG1sb2NrMiksCQkJIm1sb2NrMiIJCX0sCi0gCi0tI3VuZGVmIEFSQ0hfbW1hcAotKyN1bmRlZiBzeXNfQVJDSF9tbWFwCi0gI3VuZGVmIEFSQ0hfV0FOVF9TWU5DX0ZJTEVfUkFOR0UyCi1kaWZmIC0tZ2l0IGEvbGludXgvYXJjL3N5c2NhbGxlbnQuaCBiL2xpbnV4L2FyYy9zeXNjYWxsZW50LmgKLWluZGV4IDU4NDdkYzQuLjExMDAwMDggMTAwNjQ0Ci0tLS0gYS9saW51eC9hcmMvc3lzY2FsbGVudC5oCi0rKysgYi9saW51eC9hcmMvc3lzY2FsbGVudC5oCi1AQCAtMSw0ICsxLDQgQEAKLS0jZGVmaW5lIEFSQ0hfbW1hcCBtbWFwX3Bnb2ZmCi0rI2RlZmluZSBzeXNfQVJDSF9tbWFwIHN5c19tbWFwX3Bnb2ZmCi0gI2luY2x1ZGUgIjMyL3N5c2NhbGxlbnQuaCIKLSBbMjQ0XSA9IHsgMywJMCwJU0VOKHByaW50YXJncyksCSJhcmNfY2FjaGVmbHVzaCJ9LAotIFsyNDVdID0geyAxLAkwLAlTRU4ocHJpbnRhcmdzKSwJImFyY19zZXR0bHMiCX0sCi1kaWZmIC0tZ2l0IGEvbGludXgvbmlvczIvc3lzY2FsbGVudC5oIGIvbGludXgvbmlvczIvc3lzY2FsbGVudC5oCi1pbmRleCA4YTRiNzBlLi4wMWVmZTNhIDEwMDY0NAotLS0tIGEvbGludXgvbmlvczIvc3lzY2FsbGVudC5oCi0rKysgYi9saW51eC9uaW9zMi9zeXNjYWxsZW50LmgKLUBAIC0xLDQgKzEsNCBAQAotLSNkZWZpbmUgQVJDSF9tbWFwIG1tYXBfcGdvZmYKLSsjZGVmaW5lIHN5c19BUkNIX21tYXAgc3lzX21tYXBfcGdvZmYKLSAjaW5jbHVkZSAiMzIvc3lzY2FsbGVudC5oIgotIFsyNDRdID0gezQsICAgIDAsCVNFTihjYWNoZWZsdXNoKSwgImNhY2hlZmx1c2gifSwKLSBbMjQ1IC4uLiAyNTldID0geyB9LAotZGlmZiAtLWdpdCBhL2xpbnV4L29yMWsvc3lzY2FsbGVudC5oIGIvbGludXgvb3Ixay9zeXNjYWxsZW50LmgKLWluZGV4IGVkODRiM2IuLjM1MWZlMjUgMTAwNjQ0Ci0tLS0gYS9saW51eC9vcjFrL3N5c2NhbGxlbnQuaAotKysrIGIvbGludXgvb3Ixay9zeXNjYWxsZW50LmgKLUBAIC0xLDQgKzEsNCBAQAotLSNkZWZpbmUgQVJDSF9tbWFwIG1tYXBfcGdvZmYKLSsjZGVmaW5lIHN5c19BUkNIX21tYXAgc3lzX21tYXBfcGdvZmYKLSAjaW5jbHVkZSAiMzIvc3lzY2FsbGVudC5oIgotIFsyNDRdID0geyAzLAlORiwJU0VOKG9yMWtfYXRvbWljKSwJIm9yMWtfYXRvbWljIgl9LAotIFsyNDUgLi4uIDI1OV0gPSB7IH0sCi1kaWZmIC0tZ2l0IGEvbGludXgvdGlsZS9zeXNjYWxsZW50MS5oIGIvbGludXgvdGlsZS9zeXNjYWxsZW50MS5oCi1pbmRleCBjODZmMDU5Li4yOGRiYWI0IDEwMDY0NAotLS0tIGEvbGludXgvdGlsZS9zeXNjYWxsZW50MS5oCi0rKysgYi9saW51eC90aWxlL3N5c2NhbGxlbnQxLmgKLUBAIC0xLDQgKzEsNCBAQAotLSNkZWZpbmUgQVJDSF9tbWFwIG1tYXBfNGtvZmYKLSsjZGVmaW5lIHN5c19BUkNIX21tYXAgc3lzX21tYXBfNGtvZmYKLSAjZGVmaW5lIEFSQ0hfV0FOVF9TWU5DX0ZJTEVfUkFOR0UyIDEKLSAjaW5jbHVkZSAiMzIvc3lzY2FsbGVudC5oIgotIFsyNDRdID0geyAxLAkwLAlTRU4ocHJpbnRhcmdzKSwJImNtcHhjaGdfYmFkYWRkciIJfSwKLWRpZmYgLS1naXQgYS9wYXRodHJhY2UuYyBiL3BhdGh0cmFjZS5jCi1pbmRleCBkNTMwZWMyLi5lNzJjZGY3IDEwMDY0NAotLS0tIGEvcGF0aHRyYWNlLmMKLSsrKyBiL3BhdGh0cmFjZS5jCi1AQCAtMjE2LDYgKzIxNiw3IEBAIHBhdGh0cmFjZV9tYXRjaChzdHJ1Y3QgdGNiICp0Y3ApCi0gCWNhc2UgU0VOX21tYXA6Ci0gCWNhc2UgU0VOX21tYXBfNGtvZmY6Ci0gCWNhc2UgU0VOX21tYXBfcGdvZmY6Ci0rCWNhc2UgU0VOX0FSQ0hfbW1hcDoKLSAJCS8qIHgsIHgsIHgsIHgsIGZkICovCi0gCQlyZXR1cm4gZmRtYXRjaCh0Y3AsIHRjcC0+dV9hcmdbNF0pOwotIAotLS0gCi0yLjYuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvMDAwMS1zY21fcmlnaHRzLWZkLnRlc3QtcmV3cml0ZS13aXRob3V0LWZvcmsucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvMDAwMS1zY21fcmlnaHRzLWZkLnRlc3QtcmV3cml0ZS13aXRob3V0LWZvcmsucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0ZTY0NWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlLzAwMDEtc2NtX3JpZ2h0cy1mZC50ZXN0LXJld3JpdGUtd2l0aG91dC1mb3JrLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTk4ICswLDAgQEAKLUZyb20gM2ZkY2RkNDdjNmE2NzU4NTEyM2EwYTBjOGZmZmFiY2M5Zjc5YTNhMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJEbWl0cnkgVi4gTGV2aW4iIDxsZHZAYWx0bGludXgub3JnPgotRGF0ZTogVHVlLCAxMiBKYW4gMjAxNiAxNDo0NzoxMiArMDAwMAotU3ViamVjdDogW1BBVENIXSBzY21fcmlnaHRzLWZkLnRlc3Q6IHJld3JpdGUgd2l0aG91dCBmb3JrCi0KLSogdGVzdHMvc2NtX3JpZ2h0cy5jIChtYWluKTogUmV3cml0ZSB3aXRob3V0IGZvcmsuCi1QbGFjZSBhbGwgb2JqZWN0cyBwYXNzZWQgdG8gc2VuZG1zZyBhbmQgcmVjdm1zZyBhdCB0aGUgZW5kCi1vZiBtZW1vcnkgcGFnZXMgZm9sbG93ZWQgYnkgaW5hY2Nlc3NpYmxlIHBhZ2VzLgotKiB0ZXN0cy9zY21fcmlnaHRzLWZkLnRlc3Q6IFVwZGF0ZS4KLS0tLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotIHRlc3RzL3NjbV9yaWdodHMtZmQudGVzdCB8ICAxMiArKy0tLQotIHRlc3RzL3NjbV9yaWdodHMuYyAgICAgICB8IDEyMiArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgNjMgaW5zZXJ0aW9ucygrKSwgNzEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0cy9zY21fcmlnaHRzLWZkLnRlc3QgYi90ZXN0cy9zY21fcmlnaHRzLWZkLnRlc3QKLWluZGV4IGEzMmVmMzYuLjQ4YzUwMjggMTAwNzU1Ci0tLS0gYS90ZXN0cy9zY21fcmlnaHRzLWZkLnRlc3QKLSsrKyBiL3Rlc3RzL3NjbV9yaWdodHMtZmQudGVzdAotQEAgLTQ5LDE4ICs0OSwxOCBAQCB0b3VjaCAtLSAiJGZpbGUiIHx8Ci0gCWZyYW1ld29ya19za2lwXyAnZmFpbGVkIHRvIGNyZWF0ZSBhIGZpbGUnCi0gCi0gcnVuX3Byb2cgLi9zY21fcmlnaHRzIC9kZXYvemVybwotLXJ1bl9zdHJhY2VfbWVyZ2UgLXkgLXggLWVuZXR3b3JrICRhcmdzICIkZmlsZSIKLStydW5fc3RyYWNlIC15IC14IC1lbmV0d29yayAkYXJncyAiJGZpbGUiCi0gCi0rc2FtcGxlPSdcXHhmMVxceGYyXFx4ZjNcXHhmNFxceGY1XFx4ZjZcXHhmN1xceGY4XFx4ZjlcXHhmYVxceGZiXFx4ZmNcXHhmZFxceGZlXFx4ZmYnCi0gbj0nWzEtOV1bMC05XSonCi0tbXNnPSdce21zZ19uYW1lXCgwXCk9TlVMTCwgbXNnX2lvdlwoMVwpPVxbXHsiXFx4MDBcXHgwMFxceDAwXFx4MDBbXiJdKiIsICciJG4iJ1x9XF0sIG1zZ19jb250cm9sbGVuPSciJG4iCi0tcmlnaHRzPSdce2Ntc2dfbGVuPSciJG4iJywgY21zZ19sZXZlbD1TT0xfU09DS0VULCBjbXNnX3R5cGU9U0NNX1JJR0hUUywgXFszPC9kZXYvbnVsbD4sIDQ8L2Rldi96ZXJvPiwgNTwvW159Pl0qLyhBXFxuKXsxMjd9Wj5cXVx9JwotK21zZz0nXHttc2dfbmFtZVwoMFwpPU5VTEwsIG1zZ19pb3ZcKDFcKT1cW1x7IiciJHNhbXBsZSInIiwgMTVcfVxdLCBtc2dfY29udHJvbGxlbj0nIiRuIgotK3JpZ2h0cz0nXHtjbXNnX2xlbj0nIiRuIicsIGNtc2dfbGV2ZWw9U09MX1NPQ0tFVCwgY21zZ190eXBlPVNDTV9SSUdIVFMsIFxbNDwvZGV2L251bGw+LCA1PC9kZXYvemVybz4sIDY8L1tefT5dKi8oQVxcbil7MTI3fVo+XF1cfScKLSBjcmVkcz0nXHtjbXNnX2xlbj0nIiRuIicsIGNtc2dfbGV2ZWw9U09MX1NPQ0tFVCwgY21zZ190eXBlPVNDTV9DUkVERU5USUFMUywgXHtwaWQ9JyIkbiInLCB1aWQ9WzAtOV0rLCBnaWQ9WzAtOV0rXH1cfScKLS1wcmVmaXg9J1sxLTldWzAtOV0qICtbMC05XSs6WzAtOV0rOlswLTldK1wuWzAtOV0rICsnCi0gRVhQRUNURUQ9IiRMT0cuZXhwZWN0ZWQiCi0gCi0gY2F0ID4gIiRFWFBFQ1RFRCIgPDwgX19FT0ZfXwotLSR7cHJlZml4fXNlbmRtc2dcXCgxPHNvY2tldDpcXFtbMC05XStcXF0+LCAkbXNnLCBcXFskcmlnaHRzXFxdLCBtc2dfZmxhZ3M9MFxcfSwgMFxcKSArPSAkbgotLSR7cHJlZml4fXJlY3Ztc2dcXCgwPHNvY2tldDpcXFtbMC05XStcXF0+LCAkbXNnLCBcXFskY3JlZHMsICRyaWdodHNcXF0sIG1zZ19mbGFncz0wXFx9LCAwXFwpICs9ICRuCi0rc2VuZG1zZ1xcKDM8c29ja2V0OlxcW1swLTldK1xcXT4sICRtc2csIFxcWyRyaWdodHNcXF0sIG1zZ19mbGFncz0wXFx9LCAwXFwpID0gMTUKLStyZWN2bXNnXFwoMDxzb2NrZXQ6XFxbWzAtOV0rXFxdPiwgJG1zZywgXFxbJGNyZWRzLCAkcmlnaHRzXFxdLCBtc2dfZmxhZ3M9MFxcfSwgMFxcKSA9IDE1Ci0gX19FT0ZfXwotIAotIG1hdGNoX2dyZXAgIiRMT0ciICIkRVhQRUNURUQiCi1kaWZmIC0tZ2l0IGEvdGVzdHMvc2NtX3JpZ2h0cy5jIGIvdGVzdHMvc2NtX3JpZ2h0cy5jCi1pbmRleCAxZTVlODUwLi4wMGFmNGQ1IDEwMDY0NAotLS0tIGEvdGVzdHMvc2NtX3JpZ2h0cy5jCi0rKysgYi90ZXN0cy9zY21fcmlnaHRzLmMKLUBAIC0yNywyNiArMjcsMzkgQEAKLSAKLSAjaW5jbHVkZSAidGVzdHMuaCIKLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0tI2luY2x1ZGUgPHN0cmluZy5oPgotLSNpbmNsdWRlIDxzdGRsaWIuaD4KLS0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLS0jaW5jbHVkZSA8c3lzL3dhaXQuaD4KLSAKLSBpbnQgbWFpbihpbnQgYWMsIGNvbnN0IGNoYXIgKiphdikKLSB7Ci0tCWludCBpOwotLQlpbnQgZGF0YSA9IDA7Ci0tCXN0cnVjdCBpb3ZlYyBpb3YgPSB7Ci0tCQkuaW92X2Jhc2UgPSAmZGF0YSwKLS0JCS5pb3ZfbGVuID0gc2l6ZW9mKGlvdikKLS0JfTsKLSsJYXNzZXJ0KGFjID4gMCk7Ci0rCWludCBmZHNbYWNdOwotKwotKwlzdGF0aWMgY29uc3QgY2hhciBzYW1wbGVbXSA9Ci0rCQkiXHhmMVx4ZjJceGYzXHhmNFx4ZjVceGY2XHhmN1x4ZjhceGY5XHhmYVx4ZmJceGZjXHhmZFx4ZmVceGZmIjsKLSsJY29uc3QgdW5zaWduZWQgaW50IGRhdGFfc2l6ZSA9IHNpemVvZihzYW1wbGUpIC0gMTsKLSsJdm9pZCAqZGF0YSA9IHRhaWxfYWxsb2MoZGF0YV9zaXplKTsKLSsJbWVtY3B5KGRhdGEsIHNhbXBsZSwgZGF0YV9zaXplKTsKLSsKLSsJc3RydWN0IGlvdmVjICppb3YgPSB0YWlsX2FsbG9jKHNpemVvZihzdHJ1Y3QgaW92ZWMpKTsKLSsJaW92LT5pb3ZfYmFzZSA9IGRhdGE7Ci0rCWlvdi0+aW92X2xlbiA9IGRhdGFfc2l6ZTsKLSAKLS0Jd2hpbGUgKChpID0gb3BlbigiL2Rldi9udWxsIiwgT19SRFdSKSkgPCAzKQotKwlzdHJ1Y3QgbXNnaGRyICptaCA9IHRhaWxfYWxsb2Moc2l6ZW9mKHN0cnVjdCBtc2doZHIpKTsKLSsJbWVtc2V0KG1oLCAwLCBzaXplb2YoKm1oKSk7Ci0rCW1oLT5tc2dfaW92ID0gaW92OwotKwltaC0+bXNnX2lvdmxlbiA9IDE7Ci0rCi0rCWludCBpOwotKwl3aGlsZSAoKGkgPSBvcGVuKCIvZGV2L251bGwiLCBPX1JEV1IpKSA8PSBhYyArIDIpCi0gCQlhc3NlcnQoaSA+PSAwKTsKLS0JKHZvaWQpIGNsb3NlKDMpOwotKwl3aGlsZSAoaSA+IDIpCi0rCQlhc3NlcnQoY2xvc2UoaS0tKSA9PSAwKTsKLSsJYXNzZXJ0KGNsb3NlKDApID09IDApOwotIAotIAlpbnQgc3ZbMl07Ci0gCWlmIChzb2NrZXRwYWlyKEFGX1VOSVgsIFNPQ0tfU1RSRUFNLCAwLCBzdikpCi1AQCAtNTUsNjAgKzY4LDM5IEBAIGludCBtYWluKGludCBhYywgY29uc3QgY2hhciAqKmF2KQotIAlpZiAoc2V0c29ja29wdChzdlswXSwgU09MX1NPQ0tFVCwgU09fUEFTU0NSRUQsICZvbmUsIHNpemVvZihvbmUpKSkKLSAJCXBlcnJvcl9tc2dfYW5kX3NraXAoInNldHNvY2tvcHQiKTsKLSAKLS0JcGlkX3QgcGlkID0gZm9yaygpOwotLQlpZiAocGlkIDwgMCkKLS0JCXBlcnJvcl9tc2dfYW5kX2ZhaWwoImZvcmsiKTsKLS0KLS0JaWYgKHBpZCkgewotLQkJYXNzZXJ0KGNsb3NlKHN2WzBdKSA9PSAwKTsKLS0JCWFzc2VydChkdXAyKHN2WzFdLCAxKSA9PSAxKTsKLS0JCWFzc2VydChjbG9zZShzdlsxXSkgPT0gMCk7Ci0tCi0tCQlpbnQgZmRzW2FjXTsKLS0JCWFzc2VydCgoZmRzWzBdID0gb3BlbigiL2Rldi9udWxsIiwgT19SRFdSKSkgPT0gMyk7Ci0tCQlmb3IgKGkgPSAxOyBpIDwgYWM7ICsraSkKLS0JCQlhc3NlcnQoKGZkc1tpXSA9IG9wZW4oYXZbaV0sIE9fUkRPTkxZKSkgPT0gaSArIDMpOwotLQotLQkJdW5pb24gewotLQkJCXN0cnVjdCBjbXNnaGRyIGNtc2c7Ci0tCQkJY2hhciBidWZbQ01TR19MRU4oc2l6ZW9mKGZkcykpXTsKLS0JCX0gY29udHJvbDsKLS0KLS0JCWNvbnRyb2wuY21zZy5jbXNnX2xldmVsID0gU09MX1NPQ0tFVDsKLS0JCWNvbnRyb2wuY21zZy5jbXNnX3R5cGUgPSBTQ01fUklHSFRTOwotLQkJY29udHJvbC5jbXNnLmNtc2dfbGVuID0gQ01TR19MRU4oc2l6ZW9mKGZkcykpOwotLQkJbWVtY3B5KENNU0dfREFUQSgmY29udHJvbC5jbXNnKSwgZmRzLCBzaXplb2YoZmRzKSk7Ci0tCi0tCQlzdHJ1Y3QgbXNnaGRyIG1oID0gewotLQkJCS5tc2dfaW92ID0gJmlvdiwKLS0JCQkubXNnX2lvdmxlbiA9IDEsCi0tCQkJLm1zZ19jb250cm9sID0gJmNvbnRyb2wsCi0tCQkJLm1zZ19jb250cm9sbGVuID0gc2l6ZW9mKGNvbnRyb2wpCi0tCQl9OwotLQotLQkJYXNzZXJ0KHNlbmRtc2coMSwgJm1oLCAwKSA9PSBzaXplb2YoaW92KSk7Ci0tCQlhc3NlcnQoY2xvc2UoMSkgPT0gMCk7Ci0tCi0tICAgICAgICAgICAgICAgIGludCBzdGF0dXM7Ci0tCQlhc3NlcnQod2FpdHBpZChwaWQsICZzdGF0dXMsIDApID09IHBpZCk7Ci0tCQlhc3NlcnQoc3RhdHVzID09IDApOwotLQl9IGVsc2UgewotLQkJYXNzZXJ0KGNsb3NlKHN2WzFdKSA9PSAwKTsKLS0JCWFzc2VydChkdXAyKHN2WzBdLCAwKSA9PSAwKTsKLS0JCWFzc2VydChjbG9zZShzdlswXSkgPT0gMCk7Ci0tCi0tCQlzdHJ1Y3QgY21zZ2hkciBjb250cm9sWzQgKyBhYyAqIHNpemVvZihpbnQpIC8gc2l6ZW9mKHN0cnVjdCBjbXNnaGRyKV07Ci0tCi0tCQlzdHJ1Y3QgbXNnaGRyIG1oID0gewotLQkJCS5tc2dfaW92ID0gJmlvdiwKLS0JCQkubXNnX2lvdmxlbiA9IDEsCi0tCQkJLm1zZ19jb250cm9sID0gY29udHJvbCwKLS0JCQkubXNnX2NvbnRyb2xsZW4gPSBzaXplb2YoY29udHJvbCkKLS0JCX07Ci0tCi0tCQlhc3NlcnQocmVjdm1zZygwLCAmbWgsIDApID09IHNpemVvZihpb3YpKTsKLS0JCWFzc2VydChjbG9zZSgwKSA9PSAwKTsKLSsJYXNzZXJ0KChmZHNbMF0gPSBvcGVuKCIvZGV2L251bGwiLCBPX1JEV1IpKSA9PSA0KTsKLSsJZm9yIChpID0gMTsgaSA8IGFjOyArK2kpCi0rCQlhc3NlcnQoKGZkc1tpXSA9IG9wZW4oYXZbaV0sIE9fUkRPTkxZKSkgPT0gaSArIDQpOwotKwotKwl1bnNpZ25lZCBpbnQgY21zZ19zaXplID0gQ01TR19TUEFDRShzaXplb2YoZmRzKSk7Ci0rCXN0cnVjdCBjbXNnaGRyICpjbXNnID0gdGFpbF9hbGxvYyhjbXNnX3NpemUpOwotKwltZW1zZXQoY21zZywgMCwgY21zZ19zaXplKTsKLSsJY21zZy0+Y21zZ19sZXZlbCA9IFNPTF9TT0NLRVQ7Ci0rCWNtc2ctPmNtc2dfdHlwZSA9IFNDTV9SSUdIVFM7Ci0rCWNtc2ctPmNtc2dfbGVuID0gQ01TR19MRU4oc2l6ZW9mKGZkcykpOwotKwltZW1jcHkoQ01TR19EQVRBKGNtc2cpLCBmZHMsIHNpemVvZihmZHMpKTsKLSsKLSsJbWgtPm1zZ19jb250cm9sID0gY21zZzsKLSsJbWgtPm1zZ19jb250cm9sbGVuID0gY21zZ19zaXplOwotKwotKwlhc3NlcnQoc2VuZG1zZyhzdlsxXSwgbWgsIDApID09IChpbnQpIGRhdGFfc2l6ZSk7Ci0rCi0rCWFzc2VydChjbG9zZShzdlsxXSkgPT0gMCk7Ci0rCWFzc2VydChvcGVuKCIvZGV2L251bGwiLCBPX1JEV1IpID09IHN2WzFdKTsKLSsKLSsJZm9yIChpID0gMDsgaSA8IGFjOyArK2kpIHsKLSsJCWFzc2VydChjbG9zZShmZHNbaV0pID09IDApOwotKwkJZmRzW2ldID0gMDsKLSAJfQotIAotKwljbXNnX3NpemUgKz0gQ01TR19TUEFDRShzaXplb2Yoc3RydWN0IHVjcmVkKSk7Ci0rCWNtc2cgPSB0YWlsX2FsbG9jKGNtc2dfc2l6ZSk7Ci0rCW1lbXNldChjbXNnLCAwLCBjbXNnX3NpemUpOwotKwltaC0+bXNnX2NvbnRyb2wgPSBjbXNnOwotKwltaC0+bXNnX2NvbnRyb2xsZW4gPSBjbXNnX3NpemU7Ci0rCi0rCWFzc2VydChyZWN2bXNnKDAsIG1oLCAwKSA9PSAoaW50KSBkYXRhX3NpemUpOwotKwlhc3NlcnQoY2xvc2UoMCkgPT0gMCk7Ci0rCi0gCXJldHVybiAwOwotIH0KLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlLzAwMDEtdGVzdHMtaW50cm9kdWNlLWxpYnRlc3RzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlLzAwMDEtdGVzdHMtaW50cm9kdWNlLWxpYnRlc3RzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTc1ZWNkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS8wMDAxLXRlc3RzLWludHJvZHVjZS1saWJ0ZXN0cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwNiArMCwwIEBACi1Gcm9tIDg3ZTZiMjMwZmZmODAwZWI3NjhiNjhiMmU1MTczZWJiZTgzZmQzZWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiRG1pdHJ5IFYuIExldmluIiA8bGR2QGFsdGxpbnV4Lm9yZz4KLURhdGU6IFNhdCwgMiBKYW4gMjAxNiAxMjowNToxNCArMDAwMAotU3ViamVjdDogW1BBVENIXSB0ZXN0czogaW50cm9kdWNlIGxpYnRlc3RzCi0KLUludHJvZHVjZSB0ZXN0cy9saWJ0ZXN0cy5hIHdpdGggY29tbW9uIGZ1bmN0aW9ucyBmb3IgdXNlIGluIHRlc3RzLgotCi0qIHRlc3RzL3Rlc3RzLmg6IE5ldyBmaWxlLgotKiB0ZXN0cy9lcnJvcl9tc2cuYzogTGlrZXdpc2UuCi0qIHRlc3RzL3RhaWxfYWxsb2MuYzogTGlrZXdpc2UuCi0qIHRlc3RzL2dldF9wYWdlX3NpemUuYzogTGlrZXdpc2UuCi0qIHRlc3RzL01ha2VmaWxlLmFtIChsaWJ0ZXN0c19hX1NPVVJDRVMsIGxpYnRlc3RzX2FfQ1BQRkxBR1MsCi1jaGVja19MSUJSQVJJRVMsIExEQUREKTogTmV3IHZhcmlhYmxlcy4KLShjbG9ja194ZXR0aW1lX0xEQURELCBmaWx0ZXJfdW5hdmFpbGFibGVfTERBREQsIG1xX0xEQURELAotcGNfTERBREQsIHRpbWVzX0xEQUREKTogQWRkICQoTERBREQpLgotKiB0ZXN0cy8uZ2l0aWdub3JlOiBBZGQgbGlidGVzdHMuYS4KLS0tLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotIHRlc3RzLy5naXRpZ25vcmUgICAgICB8ICAxICsKLSB0ZXN0cy9NYWtlZmlsZS5hbSAgICAgfCAyMCArKysrKysrKysrLS0tLQotIHRlc3RzL2Vycm9yX21zZy5jICAgICB8IDc0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIHRlc3RzL2dldF9wYWdlX3NpemUuYyB8IDEzICsrKysrKysrKwotIHRlc3RzL3RhaWxfYWxsb2MuYyAgICB8IDUyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIHRlc3RzL3Rlc3RzLmggICAgICAgICB8IDYyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDYgZmlsZXMgY2hhbmdlZCwgMjE3IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2Vycm9yX21zZy5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2dldF9wYWdlX3NpemUuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy90YWlsX2FsbG9jLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvdGVzdHMuaAotCi1kaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuYW0gYi90ZXN0cy9NYWtlZmlsZS5hbQotaW5kZXggMzg2YTJjMi4uNjJkMGU1NiAxMDA2NDQKLS0tLSBhL3Rlc3RzL01ha2VmaWxlLmFtCi0rKysgYi90ZXN0cy9NYWtlZmlsZS5hbQotQEAgLTQwLDYgKzQwLDE2IEBAIEFNX0NQUEZMQUdTID0gJChBUkNIX01GTEFHUykgXAotIAkgICAgICAtSSQodG9wX3NyY2RpcikKLSBBTV9MREZMQUdTID0gJChBUkNIX01GTEFHUykKLSAKLStsaWJ0ZXN0c19hX1NPVVJDRVMgPSBcCi0rCWdldF9wYWdlX3NpemUuYyBcCi0rCWVycm9yX21zZy5jIFwKLSsJdGFpbF9hbGxvYy5jIFwKLSsJdGVzdHMuaCBcCi0rCSMgZW5kIG9mIGxpYnRlc3RzX2FfU09VUkNFUwotK2xpYnRlc3RzX2FfQ1BQRkxBR1MgPSAkKEFNX0NQUEZMQUdTKSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0Ci0rY2hlY2tfTElCUkFSSUVTID0gbGlidGVzdHMuYQotK0xEQUREID0gbGlidGVzdHMuYQotKwotIGNoZWNrX1BST0dSQU1TID0gXAotIAlfbmV3c2VsZWN0IFwKLSAJYWRqdGltZXggXAotQEAgLTE0NiwxOSArMTU2LDE5IEBAIGNoZWNrX1BST0dSQU1TID0gXAotIAl4ZXR0aW1lb2ZkYXkgXAotIAkjIGVuZCBvZiBjaGVja19QUk9HUkFNUwotIAotLWNsb2NrX3hldHRpbWVfTERBREQgPSAtbHJ0Ci0tZmlsdGVyX3VuYXZhaWxhYmxlX0xEQUREID0gLWxwdGhyZWFkCi0rY2xvY2tfeGV0dGltZV9MREFERCA9IC1scnQgJChMREFERCkKLStmaWx0ZXJfdW5hdmFpbGFibGVfTERBREQgPSAtbHB0aHJlYWQgJChMREFERCkKLSBmc3RhdDY0X0NQUEZMQUdTID0gJChBTV9DUFBGTEFHUykgLURfRklMRV9PRkZTRVRfQklUUz02NAotIGZzdGF0YXQ2NF9DUFBGTEFHUyA9ICQoQU1fQ1BQRkxBR1MpIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQKLSBmdHJ1bmNhdGU2NF9DUFBGTEFHUyA9ICQoQU1fQ1BQRkxBR1MpIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQKLSBsc3RhdDY0X0NQUEZMQUdTID0gJChBTV9DUFBGTEFHUykgLURfRklMRV9PRkZTRVRfQklUUz02NAotIG1tYXA2NF9DUFBGTEFHUyA9ICQoQU1fQ1BQRkxBR1MpIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQKLS1tcV9MREFERCA9IC1scnQKLSttcV9MREFERCA9IC1scnQgJChMREFERCkKLSBuZXdmc3RhdGF0X0NQUEZMQUdTID0gJChBTV9DUFBGTEFHUykgLURfRklMRV9PRkZTRVRfQklUUz02NAotLXBjX0xEQUREID0gJChkbF9MSUJTKQotK3BjX0xEQUREID0gJChkbF9MSUJTKSAkKExEQUREKQotIHN0YXQ2NF9DUFBGTEFHUyA9ICQoQU1fQ1BQRkxBR1MpIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQKLSBzdGF0ZnNfQ1BQRkxBR1MgPSAkKEFNX0NQUEZMQUdTKSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0Ci0tdGltZXNfTERBREQgPSAtbHJ0Ci0rdGltZXNfTERBREQgPSAtbHJ0ICQoTERBREQpCi0gdHJ1bmNhdGU2NF9DUFBGTEFHUyA9ICQoQU1fQ1BQRkxBR1MpIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQKLSB1aW9fQ1BQRkxBR1MgPSAkKEFNX0NQUEZMQUdTKSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0Ci0gc3RhY2tfZmNhbGxfU09VUkNFUyA9IHN0YWNrLWZjYWxsLmMgXAotZGlmZiAtLWdpdCBhL3Rlc3RzL2Vycm9yX21zZy5jIGIvdGVzdHMvZXJyb3JfbXNnLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4zZmQzNDExCi0tLS0gL2Rldi9udWxsCi0rKysgYi90ZXN0cy9lcnJvcl9tc2cuYwotQEAgLTAsMCArMSw3NCBAQAotKy8qCi0rICogQ29weXJpZ2h0IChjKSAyMDE2IERtaXRyeSBWLiBMZXZpbiA8bGR2QGFsdGxpbnV4Lm9yZz4KLSsgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotKyAqCi0rICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0rICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0rICogYXJlIG1ldDoKLSsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSsgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotKyAqIDMuIFRoZSBuYW1lIG9mIHRoZSBhdXRob3IgbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cwotKyAqICAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotKyAqCi0rICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IKLSsgKiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTCi0rICogT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4KLSsgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCi0rICogSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCi0rICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSsgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSsgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKyAqLwotKwotKyNpbmNsdWRlICJ0ZXN0cy5oIgotKyNpbmNsdWRlIDxlcnJuby5oPgotKyNpbmNsdWRlIDxzdGRhcmcuaD4KLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKwotK3ZvaWQKLStwZXJyb3JfbXNnX2FuZF9mYWlsKGNvbnN0IGNoYXIgKmZtdCwgLi4uKQotK3sKLSsJaW50IGVycl9ubyA9IGVycm5vOwotKwl2YV9saXN0IHA7Ci0rCi0rCXZhX3N0YXJ0KHAsIGZtdCk7Ci0rCXZmcHJpbnRmKHN0ZGVyciwgZm10LCBwKTsKLSsJaWYgKGVycl9ubykKLSsJCWZwcmludGYoc3RkZXJyLCAiOiAlc1xuIiwgc3RyZXJyb3IoZXJyX25vKSk7Ci0rCWVsc2UKLSsJCXB1dGMoJ1xuJywgc3RkZXJyKTsKLSsJZXhpdCgxKTsKLSt9Ci0rCi0rdm9pZAotK2Vycm9yX21zZ19hbmRfc2tpcChjb25zdCBjaGFyICpmbXQsIC4uLikKLSt7Ci0rCXZhX2xpc3QgcDsKLSsKLSsJdmFfc3RhcnQocCwgZm10KTsKLSsJdmZwcmludGYoc3RkZXJyLCBmbXQsIHApOwotKwlwdXRjKCdcbicsIHN0ZGVycik7Ci0rCWV4aXQoNzcpOwotK30KLSsKLSt2b2lkCi0rcGVycm9yX21zZ19hbmRfc2tpcChjb25zdCBjaGFyICpmbXQsIC4uLikKLSt7Ci0rCWludCBlcnJfbm8gPSBlcnJubzsKLSsJdmFfbGlzdCBwOwotKwotKwl2YV9zdGFydChwLCBmbXQpOwotKwl2ZnByaW50ZihzdGRlcnIsIGZtdCwgcCk7Ci0rCWlmIChlcnJfbm8pCi0rCQlmcHJpbnRmKHN0ZGVyciwgIjogJXNcbiIsIHN0cmVycm9yKGVycl9ubykpOwotKwllbHNlCi0rCQlwdXRjKCdcbicsIHN0ZGVycik7Ci0rCWV4aXQoNzcpOwotK30KLWRpZmYgLS1naXQgYS90ZXN0cy9nZXRfcGFnZV9zaXplLmMgYi90ZXN0cy9nZXRfcGFnZV9zaXplLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5hZWVhODYxCi0tLS0gL2Rldi9udWxsCi0rKysgYi90ZXN0cy9nZXRfcGFnZV9zaXplLmMKLUBAIC0wLDAgKzEsMTMgQEAKLSsjaW5jbHVkZSAidGVzdHMuaCIKLSsjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rCi0rc2l6ZV90Ci0rZ2V0X3BhZ2Vfc2l6ZSh2b2lkKQotK3sKLSsJc3RhdGljIHNpemVfdCBwYWdlX3NpemU7Ci0rCi0rCWlmICghcGFnZV9zaXplKQotKwkJcGFnZV9zaXplID0gc3lzY29uZihfU0NfUEFHRVNJWkUpOwotKwotKwlyZXR1cm4gcGFnZV9zaXplOwotK30KLWRpZmYgLS1naXQgYS90ZXN0cy90YWlsX2FsbG9jLmMgYi90ZXN0cy90YWlsX2FsbG9jLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4yYjhiMTRlCi0tLS0gL2Rldi9udWxsCi0rKysgYi90ZXN0cy90YWlsX2FsbG9jLmMKLUBAIC0wLDAgKzEsNTIgQEAKLSsvKgotKyAqIENvcHlyaWdodCAoYykgMjAxNS0yMDE2IERtaXRyeSBWLiBMZXZpbiA8bGR2QGFsdGxpbnV4Lm9yZz4KLSsgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotKyAqCi0rICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0rICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0rICogYXJlIG1ldDoKLSsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSsgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotKyAqIDMuIFRoZSBuYW1lIG9mIHRoZSBhdXRob3IgbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cwotKyAqICAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotKyAqCi0rICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IKLSsgKiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTCi0rICogT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4KLSsgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCi0rICogSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCi0rICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSsgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSsgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKyAqLwotKwotKyNpbmNsdWRlICJ0ZXN0cy5oIgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8c3lzL21tYW4uaD4KLSsKLSt2b2lkICoKLSt0YWlsX2FsbG9jKGNvbnN0IHNpemVfdCBzaXplKQotK3sKLSsJY29uc3Qgc2l6ZV90IHBhZ2Vfc2l6ZSA9IGdldF9wYWdlX3NpemUoKTsKLSsJY29uc3Qgc2l6ZV90IGxlbiA9IChzaXplICsgcGFnZV9zaXplIC0gMSkgJiAtcGFnZV9zaXplOwotKwljb25zdCBzaXplX3QgYWxsb2Nfc2l6ZSA9IGxlbiArIDIgKiBwYWdlX3NpemU7Ci0rCi0rCXZvaWQgKnAgPSBtbWFwKE5VTEwsIGFsbG9jX3NpemUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsCi0rCQkgICAgICAgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTllNT1VTLCAtMSwgMCk7Ci0rCWlmIChNQVBfRkFJTEVEID09IHApCi0rCQlwZXJyb3JfbXNnX2FuZF9mYWlsKCJtbWFwKCV6dSkiLCBhbGxvY19zaXplKTsKLSsKLSsJdm9pZCAqc3RhcnRfd29yayA9IHAgKyBwYWdlX3NpemU7Ci0rCXZvaWQgKnRhaWxfZ3VhcmQgPSBzdGFydF93b3JrICsgbGVuOwotKwotKwlpZiAobXVubWFwKHAsIHBhZ2Vfc2l6ZSkgfHwgbXVubWFwKHRhaWxfZ3VhcmQsIHBhZ2Vfc2l6ZSkpCi0rCQlwZXJyb3JfbXNnX2FuZF9mYWlsKCJtdW5tYXAiKTsKLSsKLSsJbWVtc2V0KHN0YXJ0X3dvcmssIDB4ZmYsIGxlbik7Ci0rCXJldHVybiB0YWlsX2d1YXJkIC0gc2l6ZTsKLSt9Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvdGVzdHMuaCBiL3Rlc3RzL3Rlc3RzLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi45MWZhMjRlCi0tLS0gL2Rldi9udWxsCi0rKysgYi90ZXN0cy90ZXN0cy5oCi1AQCAtMCwwICsxLDYyIEBACi0rLyoKLSsgKiBDb3B5cmlnaHQgKGMpIDIwMTYgRG1pdHJ5IFYuIExldmluIDxsZHZAYWx0bGludXgub3JnPgotKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rICoKLSsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSsgKiBhcmUgbWV0OgotKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0rICogMy4gVGhlIG5hbWUgb2YgdGhlIGF1dGhvciBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCi0rICogICAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0rICoKLSsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUgotKyAqIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMKLSsgKiBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELgotKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKLSsgKiBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKLSsgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0rICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0rICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0rICovCi0rCi0rI2lmbmRlZiBURVNUU19IXwotKyMgZGVmaW5lIFRFU1RTX0hfCi0rCi0rIyBpZmRlZiBIQVZFX0NPTkZJR19ICi0rIyAgaW5jbHVkZSAiY29uZmlnLmgiCi0rIyBlbmRpZgotKwotKyMgaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0rIyBpbmNsdWRlICJnY2NfY29tcGF0LmgiCi0rCi0rLyogQ2FjaGVkIHN5c2NvbmYoX1NDX1BBR0VTSVpFKS4gKi8KLStzaXplX3QgZ2V0X3BhZ2Vfc2l6ZSh2b2lkKTsKLSsKLSsvKiBQcmludCBtZXNzYWdlIGFuZCBzdHJlcnJvcihlcnJubykgdG8gc3RkZXJyLCB0aGVuIGV4aXQoMSkuICovCi0rdm9pZCBwZXJyb3JfbXNnX2FuZF9mYWlsKGNvbnN0IGNoYXIgKiwgLi4uKQotKwlBVFRSSUJVVEVfRk9STUFUKChwcmludGYsIDEsIDIpKSBBVFRSSUJVVEVfTk9SRVRVUk47Ci0rLyogUHJpbnQgbWVzc2FnZSB0byBzdGRlcnIsIHRoZW4gZXhpdCg3NykuICovCi0rdm9pZCBlcnJvcl9tc2dfYW5kX3NraXAoY29uc3QgY2hhciAqLCAuLi4pCi0rCUFUVFJJQlVURV9GT1JNQVQoKHByaW50ZiwgMSwgMikpIEFUVFJJQlVURV9OT1JFVFVSTjsKLSsvKiBQcmludCBtZXNzYWdlIGFuZCBzdHJlcnJvcihlcnJubykgdG8gc3RkZXJyLCB0aGVuIGV4aXQoNzcpLiAqLwotK3ZvaWQgcGVycm9yX21zZ19hbmRfc2tpcChjb25zdCBjaGFyICosIC4uLikKLSsJQVRUUklCVVRFX0ZPUk1BVCgocHJpbnRmLCAxLCAyKSkgQVRUUklCVVRFX05PUkVUVVJOOwotKwotKy8qCi0rICogQWxsb2NhdGUgbWVtb3J5IHRoYXQgZW5kcyBvbiB0aGUgcGFnZSBib3VuZGFyeS4KLSsgKiBQYWdlcyBhbGxvY2F0ZWQgYnkgdGhpcyBjYWxsIGFyZSBwcmVjZWVkZWQgYnkgYW4gdW5tYXBwZWQgcGFnZQotKyAqIGFuZCBmb2xsb3dlZCBhbHNvIGJ5IGFuIHVubWFwcGVkIHBhZ2UuCi0rICovCi0rdm9pZCAqdGFpbF9hbGxvYyhjb25zdCBzaXplX3QpCi0rCUFUVFJJQlVURV9NQUxMT0MgQVRUUklCVVRFX0FMTE9DX1NJWkUoKDEpKTsKLSsKLSsjIGRlZmluZSBTS0lQX01BSU5fVU5ERUZJTkVEKGFyZykgXAotKwlpbnQgbWFpbih2b2lkKSB7IGVycm9yX21zZ19hbmRfc2tpcCgidW5kZWZpbmVkOiAlcyIsIGFyZyk7IH0KLSsKLSsjZW5kaWYKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlLzAwMDEtdGVzdHMtc2NtX3JpZ2h0cy5jLXVzZS1saWJ0ZXN0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS8wMDAxLXRlc3RzLXNjbV9yaWdodHMuYy11c2UtbGlidGVzdHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmYmFiOGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlLzAwMDEtdGVzdHMtc2NtX3JpZ2h0cy5jLXVzZS1saWJ0ZXN0cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLUZyb20gMzM5YTE1YjYxOWI0NzljNjNjYWZiYTIxZDVmYzM1OWU2MTNkOWVlOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJEbWl0cnkgVi4gTGV2aW4iIDxsZHZAYWx0bGludXgub3JnPgotRGF0ZTogTW9uLCA0IEphbiAyMDE2IDIzOjUzOjMxICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIHRlc3RzL3NjbV9yaWdodHMuYzogdXNlIGxpYnRlc3RzCi0KLSogdGVzdHMvc2NtX3JpZ2h0cy5jIChtYWluKTogVXNlIHBlcnJvcl9tc2dfYW5kX2ZhaWwgYW5kIHBlcnJvcl9tc2dfYW5kX3NraXAuCi0tLS0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLSB0ZXN0cy9zY21fcmlnaHRzLmMgfCAxMiArKysrKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdHMvc2NtX3JpZ2h0cy5jIGIvdGVzdHMvc2NtX3JpZ2h0cy5jCi1pbmRleCBjNDE0NDRmLi4xZTVlODUwIDEwMDY0NAotLS0tIGEvdGVzdHMvc2NtX3JpZ2h0cy5jCi0rKysgYi90ZXN0cy9zY21fcmlnaHRzLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qCi0tICogQ29weXJpZ2h0IChjKSAyMDE0LTIwMTUgRG1pdHJ5IFYuIExldmluIDxsZHZAYWx0bGludXgub3JnPgotKyAqIENvcHlyaWdodCAoYykgMjAxNC0yMDE2IERtaXRyeSBWLiBMZXZpbiA8bGR2QGFsdGxpbnV4Lm9yZz4KLSAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICAqCi0gICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1AQCAtMjUsNiArMjUsNyBAQAotICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gICovCi0gCi0rI2luY2x1ZGUgInRlc3RzLmgiCi0gI2luY2x1ZGUgPGFzc2VydC5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci1AQCAtNDgsMTIgKzQ5LDE1IEBAIGludCBtYWluKGludCBhYywgY29uc3QgY2hhciAqKmF2KQotIAkodm9pZCkgY2xvc2UoMyk7Ci0gCi0gCWludCBzdlsyXTsKLS0JYXNzZXJ0KHNvY2tldHBhaXIoQUZfVU5JWCwgU09DS19TVFJFQU0sIDAsIHN2KSA9PSAwKTsKLSsJaWYgKHNvY2tldHBhaXIoQUZfVU5JWCwgU09DS19TVFJFQU0sIDAsIHN2KSkKLSsJCXBlcnJvcl9tc2dfYW5kX3NraXAoInNvY2tldHBhaXIiKTsKLSAJaW50IG9uZSA9IDE7Ci0tCWFzc2VydChzZXRzb2Nrb3B0KHN2WzBdLCBTT0xfU09DS0VULCBTT19QQVNTQ1JFRCwgJm9uZSwgc2l6ZW9mKG9uZSkpID09IDApOwotKwlpZiAoc2V0c29ja29wdChzdlswXSwgU09MX1NPQ0tFVCwgU09fUEFTU0NSRUQsICZvbmUsIHNpemVvZihvbmUpKSkKLSsJCXBlcnJvcl9tc2dfYW5kX3NraXAoInNldHNvY2tvcHQiKTsKLSAKLSAJcGlkX3QgcGlkID0gZm9yaygpOwotLQlhc3NlcnQocGlkID49IDApOwotKwlpZiAocGlkIDwgMCkKLSsJCXBlcnJvcl9tc2dfYW5kX2ZhaWwoImZvcmsiKTsKLSAKLSAJaWYgKHBpZCkgewotIAkJYXNzZXJ0KGNsb3NlKHN2WzBdKSA9PSAwKTsKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL01ha2VmaWxlLXB0ZXN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL01ha2VmaWxlLXB0ZXN0LnBhdGNoCmluZGV4IDgyNDAzMWUuLjJiNzZlOGEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9NYWtlZmlsZS1wdGVzdC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvTWFrZWZpbGUtcHRlc3QucGF0Y2gKQEAgLTEwLDIzICsxMCwyMiBAQAogIDIgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAwMjA5YmFjLi5iOTY5ZTI1IDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKIEBAIC0zNiw3ICszNiw3IEBAIEFDX0lOSVQoW3N0cmFjZV0sCiAgQUNfQ09ORklHX1NSQ0RJUihbc3RyYWNlLmNdKQogIEFDX0NPTkZJR19BVVhfRElSKFsuXSkKICBBQ19DT05GSUdfSEVBREVSUyhbY29uZmlnLmhdKQotLUFNX0lOSVRfQVVUT01BS0UoW2ZvcmVpZ24gbm9zdGRpbmMgZGlzdC14eiBuby1kaXN0LWd6aXAgc2lsZW50LXJ1bGVzIHBhcmFsbGVsLXRlc3RzXSkKLStBTV9JTklUX0FVVE9NQUtFKFtmb3JlaWduIG5vc3RkaW5jIGRpc3QteHogbm8tZGlzdC1nemlwIHNpbGVudC1ydWxlcyBzZXJpYWwtdGVzdHNdKQorLUFNX0lOSVRfQVVUT01BS0UoW2ZvcmVpZ24gbm9zdGRpbmMgZGlzdC14eiBzaWxlbnQtcnVsZXMgcGFyYWxsZWwtdGVzdHNdKQorK0FNX0lOSVRfQVVUT01BS0UoW2ZvcmVpZ24gbm9zdGRpbmMgZGlzdC14eiBzaWxlbnQtcnVsZXMgc2VyaWFsLXRlc3RzXSkKICBBTV9NQUlOVEFJTkVSX01PREUKICBBQ19DQU5PTklDQUxfSE9TVAogIAogZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KLWluZGV4IDBmMjNiNGIuLjQyOWY3ZTkgMTAwNjQ0CitpbmRleCA5MDIzMDI5Li5lMTkxN2ZhIDEwMDY0NAogLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0KICsrKyBiL3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtMzMyLDMgKzMzMiwyMSBAQCBrc3lzZW50Lmg6ICQoc3JjZGlyKS9rc3lzZW50LnNlZAorQEAgLTc4NCwzICs3ODQsMjEgQEAga3N5c2VudC5oOiAkKHNyY2Rpcikva3N5c2VudC5zZWQKICAKICBCVUlMVF9TT1VSQ0VTID0ga3N5c2VudC5oCiAgQ0xFQU5GSUxFUyA9IGtzeXNlbnQuaCAkKFRFU1RTOj0udG1wKQpAQCAtNDgsNiArNDcsMyBAQAogKwkJc2VkIC1pIC1lICdzLyQke3NyY2Rpcj0ufS8uL2cnICQoREVTVERJUikvJChURVNURElSKS8kJGZpbGU7IFwKICsJZG9uZQogKwlmb3IgaSBpbiBuZXQgbmV0LWZkIHNjbV9yaWdodHMtZmQgc2lnYWN0aW9uOyBkbyBzZWQgLWkgLWUgJ3MvJCRzcmNkaXIvLi9nJyAkKERFU1RESVIpLyQoVEVTVERJUikvJCRpLnRlc3Q7IGRvbmUKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL21pcHMtU0lHRU1ULnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL21pcHMtU0lHRU1ULnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyNDM3OGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvbWlwcy1TSUdFTVQucGF0Y2gKQEAgLTAsMCArMSwyNCBAQAorU0lHRU1UIGlzIG5vdCBkZWZpbmVkIGV2ZXJ5d2hlcmUgZS5nIG11c2wgZG9lcworbm90IGRlZmluZSBpdC4gVGhlcmVmb3JlIGNoZWNrIGl0IGJlaW5nIGRlZmluZWQKK2JlZm9yZSB1c2luZyBpdC4KKworRml4ZXMgZXJyb3JzIGUuZy4KKy4uLy4uL3N0cmFjZS00LjEzL3Rlc3RzL3NpZ25hbDJuYW1lLmM6NDU6NzogZXJyb3I6ICdTSUdFTVQnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK0luZGV4OiBzdHJhY2UtNC4xMy90ZXN0cy9zaWduYWwybmFtZS5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gc3RyYWNlLTQuMTMub3JpZy90ZXN0cy9zaWduYWwybmFtZS5jCisrKysgc3RyYWNlLTQuMTMvdGVzdHMvc2lnbmFsMm5hbWUuYworQEAgLTQyLDcgKzQyLDkgQEAgc2lnbmFsMm5hbWUoaW50IHNpZykKKyAJQ0FTRShTSUdFTVQpOworIAlDQVNFKFNJR0xPU1QpOworICNlbGlmIGRlZmluZWQgTUlQUworKyNpZmRlZiBTSUdFTVQKKyAJQ0FTRShTSUdFTVQpOworKyNlbmRpZgorIAlDQVNFKFNJR0lPVCk7CisgCUNBU0UoU0lHUFdSKTsKKyAjZWxzZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL3VwZGF0ZS1nYXdrLXBhdGhzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL3VwZGF0ZS1nYXdrLXBhdGhzLnBhdGNoCmluZGV4IGJmYzdmMzQuLjk0ZWU1M2MgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS91cGRhdGUtZ2F3ay1wYXRocy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvdXBkYXRlLWdhd2stcGF0aHMucGF0Y2gKQEAgLTEyLDE5ICsxMiwyMCBAQAogCiBTaWduZWQtb2ZmLWJ5OiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgogLS0tCi0gbXBlcnMuYXdrICAgICAgICAgICAgICAgICB8IDIgKy0KLSB0ZXN0cy9jYXBzLmF3ayAgICAgICAgICAgIHwgMiArLQotIHRlc3RzL21hdGNoLmF3ayAgICAgICAgICAgfCAyICstCi0gdGVzdHMvbmV0LXl5LWFjY2VwdC5hd2sgICB8IDIgKy0KLSB0ZXN0cy9uZXQteXktY29ubmVjdC5hd2sgIHwgMiArLQotIHRlc3RzL3NpZ2FjdGlvbi5hd2sgICAgICAgfCAyICstCi0gdGVzdHMvdWlkLmF3ayAgICAgICAgICAgICB8IDIgKy0KLSB0ZXN0cy91bml4LXl5LWFjY2VwdC5hd2sgIHwgMiArLQotIHRlc3RzL3VuaXgteXktY29ubmVjdC5hd2sgfCAyICstCi0gOSBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCisgbXBlcnMuYXdrICAgICAgICAgICAgICAgIHwgMiArLQorIHRlc3RzLW0zMi9jYXBzLmF3ayAgICAgICB8IDIgKy0KKyB0ZXN0cy1tMzIvbWF0Y2guYXdrICAgICAgfCAyICstCisgdGVzdHMtbTMyL3NpZ2FjdGlvbi5hd2sgIHwgMiArLQorIHRlc3RzLW14MzIvY2Fwcy5hd2sgICAgICB8IDIgKy0KKyB0ZXN0cy1teDMyL21hdGNoLmF3ayAgICAgfCAyICstCisgdGVzdHMtbXgzMi9zaWdhY3Rpb24uYXdrIHwgMiArLQorIHRlc3RzL2NhcHMuYXdrICAgICAgICAgICB8IDIgKy0KKyB0ZXN0cy9tYXRjaC5hd2sgICAgICAgICAgfCAyICstCisgdGVzdHMvc2lnYWN0aW9uLmF3ayAgICAgIHwgMiArLQorIDEwIGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvbXBlcnMuYXdrIGIvbXBlcnMuYXdrCi1pbmRleCA3M2JmMGIwLi41MGU2YzE2IDEwMDY0NAoraW5kZXggOTkyNDhjNS4uZmYxMDUyMCAxMDA2NDQKIC0tLSBhL21wZXJzLmF3awogKysrIGIvbXBlcnMuYXdrCiBAQCAtMSw0ICsxLDQgQEAKQEAgLTMyLDE3ICszMyw3NyBAQAogKyMhL3Vzci9iaW4vZ2F3awogICMKICAjIENvcHlyaWdodCAoYykgMjAxNSBFbHZpcmEgS2hhYmlyb3ZhIDxsaW5lcHJpbnRlcjBAZ21haWwuY29tPgotICMgQ29weXJpZ2h0IChjKSAyMDE1IERtaXRyeSBWLiBMZXZpbiA8bGR2QGFsdGxpbnV4Lm9yZz4KLWRpZmYgLS1naXQgYS90ZXN0cy9jYXBzLmF3ayBiL3Rlc3RzL2NhcHMuYXdrCi1pbmRleCBiYWQ4YjBmLi44NDVmMzdjIDEwMDY0NAotLS0tIGEvdGVzdHMvY2Fwcy5hd2sKLSsrKyBiL3Rlc3RzL2NhcHMuYXdrCisgIyBDb3B5cmlnaHQgKGMpIDIwMTUtMjAxNiBEbWl0cnkgVi4gTGV2aW4gPGxkdkBhbHRsaW51eC5vcmc+CitkaWZmIC0tZ2l0IGEvdGVzdHMtbTMyL2NhcHMuYXdrIGIvdGVzdHMtbTMyL2NhcHMuYXdrCitpbmRleCA2NzAwM2FjLi5hNjZmMWYwIDEwMDY0NAorLS0tIGEvdGVzdHMtbTMyL2NhcHMuYXdrCisrKysgYi90ZXN0cy1tMzIvY2Fwcy5hd2sKK0BAIC0xLDQgKzEsNCBAQAorLSMhL2Jpbi9nYXdrCisrIyEvdXNyL2Jpbi9nYXdrCisgIworICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgY2FwcyBzdHJhY2UgdGVzdC4KKyAjCitkaWZmIC0tZ2l0IGEvdGVzdHMtbTMyL21hdGNoLmF3ayBiL3Rlc3RzLW0zMi9tYXRjaC5hd2sKK2luZGV4IGFiZmJhZTkuLmYyNzQwYmYgMTAwNjQ0CistLS0gYS90ZXN0cy1tMzIvbWF0Y2guYXdrCisrKysgYi90ZXN0cy1tMzIvbWF0Y2guYXdrCiBAQCAtMSw0ICsxLDQgQEAKIC0jIS9iaW4vZ2F3awogKyMhL3Vzci9iaW4vZ2F3awogICMKICAjIENvcHlyaWdodCAoYykgMjAxNC0yMDE1IERtaXRyeSBWLiBMZXZpbiA8bGR2QGFsdGxpbnV4Lm9yZz4KICAjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCitkaWZmIC0tZ2l0IGEvdGVzdHMtbTMyL3NpZ2FjdGlvbi5hd2sgYi90ZXN0cy1tMzIvc2lnYWN0aW9uLmF3aworaW5kZXggNWM2YjZkMC4uM2UxNDQ2NCAxMDA2NDQKKy0tLSBhL3Rlc3RzLW0zMi9zaWdhY3Rpb24uYXdrCisrKysgYi90ZXN0cy1tMzIvc2lnYWN0aW9uLmF3aworQEAgLTEsNCArMSw0IEBACistIyEvYmluL2dhd2sKKysjIS91c3IvYmluL2dhd2sKKyAjCisgIyBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNSBEbWl0cnkgVi4gTGV2aW4gPGxkdkBhbHRsaW51eC5vcmc+CisgIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorZGlmZiAtLWdpdCBhL3Rlc3RzLW14MzIvY2Fwcy5hd2sgYi90ZXN0cy1teDMyL2NhcHMuYXdrCitpbmRleCA2NzAwM2FjLi5hNjZmMWYwIDEwMDY0NAorLS0tIGEvdGVzdHMtbXgzMi9jYXBzLmF3aworKysrIGIvdGVzdHMtbXgzMi9jYXBzLmF3aworQEAgLTEsNCArMSw0IEBACistIyEvYmluL2dhd2sKKysjIS91c3IvYmluL2dhd2sKKyAjCisgIyBUaGlzIGZpbGUgaXMgcGFydCBvZiBjYXBzIHN0cmFjZSB0ZXN0LgorICMKK2RpZmYgLS1naXQgYS90ZXN0cy1teDMyL21hdGNoLmF3ayBiL3Rlc3RzLW14MzIvbWF0Y2guYXdrCitpbmRleCBhYmZiYWU5Li5mMjc0MGJmIDEwMDY0NAorLS0tIGEvdGVzdHMtbXgzMi9tYXRjaC5hd2sKKysrKyBiL3Rlc3RzLW14MzIvbWF0Y2guYXdrCitAQCAtMSw0ICsxLDQgQEAKKy0jIS9iaW4vZ2F3aworKyMhL3Vzci9iaW4vZ2F3aworICMKKyAjIENvcHlyaWdodCAoYykgMjAxNC0yMDE1IERtaXRyeSBWLiBMZXZpbiA8bGR2QGFsdGxpbnV4Lm9yZz4KKyAjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCitkaWZmIC0tZ2l0IGEvdGVzdHMtbXgzMi9zaWdhY3Rpb24uYXdrIGIvdGVzdHMtbXgzMi9zaWdhY3Rpb24uYXdrCitpbmRleCA1YzZiNmQwLi4zZTE0NDY0IDEwMDY0NAorLS0tIGEvdGVzdHMtbXgzMi9zaWdhY3Rpb24uYXdrCisrKysgYi90ZXN0cy1teDMyL3NpZ2FjdGlvbi5hd2sKK0BAIC0xLDQgKzEsNCBAQAorLSMhL2Jpbi9nYXdrCisrIyEvdXNyL2Jpbi9nYXdrCisgIworICMgQ29weXJpZ2h0IChjKSAyMDE0LTIwMTUgRG1pdHJ5IFYuIExldmluIDxsZHZAYWx0bGludXgub3JnPgorICMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KK2RpZmYgLS1naXQgYS90ZXN0cy9jYXBzLmF3ayBiL3Rlc3RzL2NhcHMuYXdrCitpbmRleCA2NzAwM2FjLi5hNjZmMWYwIDEwMDY0NAorLS0tIGEvdGVzdHMvY2Fwcy5hd2sKKysrKyBiL3Rlc3RzL2NhcHMuYXdrCitAQCAtMSw0ICsxLDQgQEAKKy0jIS9iaW4vZ2F3aworKyMhL3Vzci9iaW4vZ2F3aworICMKKyAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGNhcHMgc3RyYWNlIHRlc3QuCisgIwogZGlmZiAtLWdpdCBhL3Rlc3RzL21hdGNoLmF3ayBiL3Rlc3RzL21hdGNoLmF3awogaW5kZXggYWJmYmFlOS4uZjI3NDBiZiAxMDA2NDQKIC0tLSBhL3Rlc3RzL21hdGNoLmF3awpAQCAtNTMsMjYgKzExNCw2IEBACiAgIwogICMgQ29weXJpZ2h0IChjKSAyMDE0LTIwMTUgRG1pdHJ5IFYuIExldmluIDxsZHZAYWx0bGludXgub3JnPgogICMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLWRpZmYgLS1naXQgYS90ZXN0cy9uZXQteXktYWNjZXB0LmF3ayBiL3Rlc3RzL25ldC15eS1hY2NlcHQuYXdrCi1pbmRleCBmZWQzZTMwLi5lOTE2YWIwIDEwMDY0NAotLS0tIGEvdGVzdHMvbmV0LXl5LWFjY2VwdC5hd2sKLSsrKyBiL3Rlc3RzL25ldC15eS1hY2NlcHQuYXdrCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS9iaW4vZ2F3awotKyMhL3Vzci9iaW4vZ2F3awotICMKLSAjIENvcHlyaWdodCAoYykgMjAxNCBNYXNhdGFrZSBZQU1BVE8gPHlhbWF0b0ByZWRoYXQuY29tPgotICMgQ29weXJpZ2h0IChjKSAyMDE0LTIwMTUgRG1pdHJ5IFYuIExldmluIDxsZHZAYWx0bGludXgub3JnPgotZGlmZiAtLWdpdCBhL3Rlc3RzL25ldC15eS1jb25uZWN0LmF3ayBiL3Rlc3RzL25ldC15eS1jb25uZWN0LmF3awotaW5kZXggZjRkY2Y5MS4uYjNjZWM4YyAxMDA2NDQKLS0tLSBhL3Rlc3RzL25ldC15eS1jb25uZWN0LmF3awotKysrIGIvdGVzdHMvbmV0LXl5LWNvbm5lY3QuYXdrCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS9iaW4vZ2F3awotKyMhL3Vzci9iaW4vZ2F3awotICMKLSAjIENvcHlyaWdodCAoYykgMjAxNCBNYXNhdGFrZSBZQU1BVE8gPHlhbWF0b0ByZWRoYXQuY29tPgotICMgQ29weXJpZ2h0IChjKSAyMDE0LTIwMTUgRG1pdHJ5IFYuIExldmluIDxsZHZAYWx0bGludXgub3JnPgogZGlmZiAtLWdpdCBhL3Rlc3RzL3NpZ2FjdGlvbi5hd2sgYi90ZXN0cy9zaWdhY3Rpb24uYXdrCiBpbmRleCA1YzZiNmQwLi4zZTE0NDY0IDEwMDY0NAogLS0tIGEvdGVzdHMvc2lnYWN0aW9uLmF3awpAQCAtODMsMzYgKzEyNCwzIEBACiAgIwogICMgQ29weXJpZ2h0IChjKSAyMDE0LTIwMTUgRG1pdHJ5IFYuIExldmluIDxsZHZAYWx0bGludXgub3JnPgogICMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLWRpZmYgLS1naXQgYS90ZXN0cy91aWQuYXdrIGIvdGVzdHMvdWlkLmF3awotaW5kZXggYTU2YzViZS4uNjdiMDc0OSAxMDA2NDQKLS0tLSBhL3Rlc3RzL3VpZC5hd2sKLSsrKyBiL3Rlc3RzL3VpZC5hd2sKLUBAIC0xLDQgKzEsNCBAQAotLSMhL2Jpbi9nYXdrCi0rIyEvdXNyL2Jpbi9nYXdrCi0gIwotICMgQ29weXJpZ2h0IChjKSAyMDE0LTIwMTUgRG1pdHJ5IFYuIExldmluIDxsZHZAYWx0bGludXgub3JnPgotICMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLWRpZmYgLS1naXQgYS90ZXN0cy91bml4LXl5LWFjY2VwdC5hd2sgYi90ZXN0cy91bml4LXl5LWFjY2VwdC5hd2sKLWluZGV4IDRlZDYwZTQuLjJhOWQ5YzAgMTAwNjQ0Ci0tLS0gYS90ZXN0cy91bml4LXl5LWFjY2VwdC5hd2sKLSsrKyBiL3Rlc3RzL3VuaXgteXktYWNjZXB0LmF3awotQEAgLTEsNCArMSw0IEBACi0tIyEvYmluL2dhd2sKLSsjIS91c3IvYmluL2dhd2sKLSAjCi0gIyBDb3B5cmlnaHQgKGMpIDIwMTQgTWFzYXRha2UgWUFNQVRPIDx5YW1hdG9AcmVkaGF0LmNvbT4KLSAjIENvcHlyaWdodCAoYykgMjAxNC0yMDE1IERtaXRyeSBWLiBMZXZpbiA8bGR2QGFsdGxpbnV4Lm9yZz4KLWRpZmYgLS1naXQgYS90ZXN0cy91bml4LXl5LWNvbm5lY3QuYXdrIGIvdGVzdHMvdW5peC15eS1jb25uZWN0LmF3awotaW5kZXggMjYyYmYyZS4uYzgwOWRmYSAxMDA2NDQKLS0tLSBhL3Rlc3RzL3VuaXgteXktY29ubmVjdC5hd2sKLSsrKyBiL3Rlc3RzL3VuaXgteXktY29ubmVjdC5hd2sKLUBAIC0xLDQgKzEsNCBAQAotLSMhL2Jpbi9nYXdrCi0rIyEvdXNyL2Jpbi9nYXdrCi0gIwotICMgQ29weXJpZ2h0IChjKSAyMDE0IE1hc2F0YWtlIFlBTUFUTyA8eWFtYXRvQHJlZGhhdC5jb20+Ci0gIyBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNSBEbWl0cnkgVi4gTGV2aW4gPGxkdkBhbHRsaW51eC5vcmc+Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZV80LjExLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlXzQuMTEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczOTEzODguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlXzQuMTEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1TVU1NQVJZID0gIlN5c3RlbSBjYWxsIHRyYWNpbmcgdG9vbCIKLUhPTUVQQUdFID0gImh0dHA6Ly9zdHJhY2Uuc291cmNlZm9yZ2UubmV0IgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xMjQ1MDBjMjFlODU2ZjA5MTJkZjI5Mjk1YmExMDRjNyIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vc3RyYWNlL3N0cmFjZS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1naXQtdmVyc2lvbi1nZW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbW9yZS1yb2J1c3QtdGVzdC1mb3ItbTMyLW14MzItY29tcGlsZS1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3VwZGF0ZS1nYXdrLXBhdGhzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3VzZS1hc20tc2dpZGVmcy5oLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYXJjLW1ldGFnLW5pb3MyLW9yMWstdGlsZS1maXgtYnVpbGQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUtcHRlc3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0cy1zY21fcmlnaHRzLmMtdXNlLWxpYnRlc3RzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtc2NtX3JpZ2h0cy1mZC50ZXN0LXJld3JpdGUtd2l0aG91dC1mb3JrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtTW92ZS1nY2MtY29tcGF0LW1hY3Jvcy10by1nY2NfY29tcGF0LmgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0cy1pbnRyb2R1Y2UtbGlidGVzdHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhMTVkMjU1NWE3ZmViYjU2ZDAwYzZlMWE1MWM2NTVkYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlODZhNWY2Y2Q4Zjk0MWY2N2YzZTRiMjhmNGU2MGYzZDkxODVjOTUxY2YyNjY0MDQ1MzMyMTBhMmU1Y2Q4MTUyIgotCi1pbmhlcml0IGF1dG90b29scyBwdGVzdCBibHVldG9vdGgKLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgY29yZXV0aWxzIGdyZXAgZ2F3ayBzZWQiCi0KLVBBQ0tBR0VDT05GSUdfY2xhc3MtdGFyZ2V0ID8/PSAiXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJ2JsdWV6JywgJycsIGQpfSBcCi0iCi0KLVBBQ0tBR0VDT05GSUdbYmx1ZXpdID0gImFjX2N2X2hlYWRlcl9ibHVldG9vdGhfYmx1ZXRvb3RoX2g9eWVzLGFjX2N2X2hlYWRlcl9ibHVldG9vdGhfYmx1ZXRvb3RoX2g9bm8sJHtCTFVFWn0iCi1QQUNLQUdFQ09ORklHW2xpYnVud2luZF0gPSAiLS13aXRoLWxpYnVud2luZCwtLXdpdGhvdXQtbGlidW53aW5kLGxpYnVud2luZCIKLQotVEVTVERJUiA9ICJ0ZXN0cyIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JIyBXZSBkb24ndCBzaGlwIHN0cmFjZS1ncmFwaCBoZXJlIGJlY2F1c2UgaXQgbmVlZHMgcGVybAotCXJtICR7RH0ke2JpbmRpcn0vc3RyYWNlLWdyYXBoCi19Ci0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0Jb2VfcnVubWFrZSAtQyAke1RFU1RESVJ9IGJ1aWxkdGVzdC1URVNUUwotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCW9lX3J1bm1ha2UgLUMgJHtURVNURElSfSBpbnN0YWxsLXB0ZXN0IEJVSUxERElSPSR7Qn0gREVTVERJUj0ke0R9JHtQVEVTVF9QQVRIfSBURVNURElSPSR7VEVTVERJUn0KLQlzZWQgLWkgLWUgJy9ec3JjL3Mvc3RyYWNlLipbMS05XS9wdGVzdC8nICR7RH0vJHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlXzQuMTMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNC4xMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYWU3ZjIxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlXzQuMTMuYmIKQEAgLTAsMCArMSw0OSBAQAorU1VNTUFSWSA9ICJTeXN0ZW0gY2FsbCB0cmFjaW5nIHRvb2wiCitIT01FUEFHRSA9ICJodHRwOi8vc3RyYWNlLnNvdXJjZWZvcmdlLm5ldCIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTI0NTAwYzIxZTg1NmYwOTEyZGYyOTI5NWJhMTA0YzciCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3N0cmFjZS9zdHJhY2UtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtZ2l0LXZlcnNpb24tZ2VuLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21vcmUtcm9idXN0LXRlc3QtZm9yLW0zMi1teDMyLWNvbXBpbGUtc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly91cGRhdGUtZ2F3ay1wYXRocy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly91c2UtYXNtLXNnaWRlZnMuaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS1wdGVzdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2hlbi11c2luZy1ub24tZ2xpYmMtbGliYy1pbXBsZW1lbnRhdGlvbi1vLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21pcHMtU0lHRU1ULnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNGI3OGM3ZmViZGQyNGM3OWQ1MTQ3ODI0ZDFhMDgwYTMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDQ4ZjczMjU3NmM5MWVjZTM2YTU4NDNkNjNmOWJlMDU0YzQwZWY1OWYxZTQ3NzM5ODYwNDI2MzY4NjE2MjVkNyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcHRlc3QgYmx1ZXRvb3RoCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIGNvcmV1dGlscyBncmVwIGdhd2sgc2VkIgorCitQQUNLQUdFQ09ORklHX2NsYXNzLXRhcmdldCA/Pz0gIlwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2JsdWV0b290aCcsICdibHVleicsICcnLCBkKX0gXAorIgorCitQQUNLQUdFQ09ORklHW2JsdWV6XSA9ICJhY19jdl9oZWFkZXJfYmx1ZXRvb3RoX2JsdWV0b290aF9oPXllcyxhY19jdl9oZWFkZXJfYmx1ZXRvb3RoX2JsdWV0b290aF9oPW5vLCR7QkxVRVp9IgorUEFDS0FHRUNPTkZJR1tsaWJ1bndpbmRdID0gIi0td2l0aC1saWJ1bndpbmQsLS13aXRob3V0LWxpYnVud2luZCxsaWJ1bndpbmQiCisKK1RFU1RESVIgPSAidGVzdHMiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgV2UgZG9uJ3Qgc2hpcCBzdHJhY2UtZ3JhcGggaGVyZSBiZWNhdXNlIGl0IG5lZWRzIHBlcmwKKwlybSAke0R9JHtiaW5kaXJ9L3N0cmFjZS1ncmFwaAorfQorCitkb19jb21waWxlX3B0ZXN0KCkgeworCW9lX3J1bm1ha2UgLUMgJHtURVNURElSfSBidWlsZHRlc3QtVEVTVFMKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlvZV9ydW5tYWtlIC1DICR7VEVTVERJUn0gaW5zdGFsbC1wdGVzdCBCVUlMRERJUj0ke0J9IERFU1RESVI9JHtEfSR7UFRFU1RfUEFUSH0gVEVTVERJUj0ke1RFU1RESVJ9CisJc2VkIC1pIC1lICcvXnNyYy9zL3N0cmFjZS4qWzEtOV0vcHRlc3QvJyAke0R9LyR7UFRFU1RfUEFUSH0vJHtURVNURElSfS9NYWtlZmlsZQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKK1RPT0xDSEFJTiA9ICJnY2MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbl8xLjkuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuOS4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTlhNjc1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuOS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotU1VNTUFSWSA9ICJTdWJ2ZXJzaW9uIChzdm4pIHZlcnNpb24gY29udHJvbCBzeXN0ZW0gY2xpZW50IgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi1ERVBFTkRTID0gImFwci11dGlsIHNlcmYgc3FsaXRlMyBmaWxlIgotREVQRU5EU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59ID0gInNlcmYiCi1MSUNFTlNFID0gIkFwYWNoZS0yIgotSE9NRVBBR0UgPSAiaHR0cDovL3N1YnZlcnNpb24udGlncmlzLm9yZyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLWluaGVyaXQgZ2V0dGV4dCBweXRob25uYXRpdmUKLQotU1JDX1VSSSA9ICIke0FQQUNIRV9NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlX21hY29zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NlcmYubTQtUmVnZXgtbW9kaWZpZWQtdG8tYWxsb3ctRC1pbi1wYXRocy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1saWJ0b29sLW5hbWUtaW4tY29uZmlndXJlLmFjLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjI0MzAzNmViMjhiNTBjZTUxN2ZjMjI4ZWIzMjUwYWRkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhiYmY2YmIxMjUwMDNkODhlZTFjMjI5MzVhMzZiN2IxYWI3ZDk1N2UwYzhiNWZiZmU1Y2I2MzEwYjZlODZhZTAiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWFmODFhZTQ5YmEzNTllNzA2MjZjMDVlOWJmMzEzNzA5IgotCi1QQUNLQUdFQ09ORklHW3Nhc2xdID0gIi0td2l0aC1zYXNsLC0td2l0aG91dC1zYXNsLGN5cnVzLXNhc2wiCi1QQUNLQUdFQ09ORklHW2dub21lLWtleXJpbmddID0gIi0td2l0aC1nbm9tZS1rZXlyaW5nLC0td2l0aG91dC1nbm9tZS1rZXlyaW5nLGdsaWItMi4wIGdub21lLWtleXJpbmciCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1iZXJrZWxleS1kYiAtLXdpdGhvdXQtYXB4cyBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXN3aWcgLS13aXRoLWFwcj0ke1NUQUdJTkdfQklORElSX0NST1NTfSBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWFwci11dGlsPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9IFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUta2V5Y2hhaW4gXAotICAgICAgICAgICAgICAgIGFjX2N2X3BhdGhfUlVCWT1ub25lIgotCi1pbmhlcml0IGF1dG90b29scwotCi1leHBvcnQgTERGTEFHUyArPSAiIC1MJHtTVEFHSU5HX0xJQkRJUn0gIgotQ1BQRkxBR1MgKz0gIi1QIgotQlVJTERfQ1BQRkxBR1MgKz0gIi1QIgotCi1hY3BhdGhzID0gIi1JIGJ1aWxkLyAtSSBidWlsZC9hYy1tYWNyb3MvIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0Jcm0gLWYgJHtTfS9saWJ0b29sCi0Jcm0gLWYgJHtTfS9idWlsZC9saWJ0b29sLm00ICR7U30vYnVpbGQvbHRtYWluLnNoICR7U30vYnVpbGQvbHRvcHRpb25zLm00ICR7U30vYnVpbGQvbHRzdWdhci5tNCAke1N9L2J1aWxkL2x0dmVyc2lvbi5tNCAke1N9L2J1aWxkL2x0fm9ic29sZXRlLm00Ci0Jcm0gLWYgJHtTfS9hY2xvY2FsLm00Ci0Jc2VkIC1pIC1lICdzOndpdGhfc2FzbD0iL3Vzci9sb2NhbCI6d2l0aF9zYXNsPSIke1NUQUdJTkdfRElSfSI6JyAke1N9L2J1aWxkL2FjLW1hY3Jvcy9zYXNsLm00Ci19Ci0KLSN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmFfbG9jYWwvbGlic3ZuX3JhX2xvY2FsLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJ3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9idWlsZC9zdWJ2ZXJzaW9uL2xpYnN2bl9yZXBvcy9saWJzdm5fcmVwb3MtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInfCAvdXNyL2Jpbi9sZDogY2Fubm90IGZpbmQgLWxzdm5fZGVsdGEtMXwgY29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmFfc3ZuL2xpYnN2bl9yYV9zdm4tMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL2J1aWxkL3N1YnZlcnNpb24vbGlic3ZuX3JhX3NlcmYvbGlic3ZuX3JhX3NlcmYtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInCi0jfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogZXJyb3I6IHJlbGluayBgbGlic3ZuX3JhX3NlcmYtMS5sYScgd2l0aCB0aGUgYWJvdmUgY29tbWFuZCBiZWZvcmUgaW5zdGFsbGluZyBpdAotI3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAuLi8uLi9zdWJ2ZXJzaW9uL2xpYnN2bl9yZXBvcy9saWJzdm5fcmVwb3MtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInCi0jfCAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9zdWJ2ZXJzaW9uLTEuOC45L2J1aWxkLW91dHB1dHMubWs6MTA5MDogcmVjaXBlIGZvciB0YXJnZXQgJ2luc3RhbGwtc2VyZi1saWInIGZhaWxlZAotI3wgbWFrZTogKioqIFtpbnN0YWxsLXNlcmYtbGliXSBFcnJvciAxCi1QQVJBTExFTF9NQUtFSU5TVCA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbl8xLjkuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuOS40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjZTgzYzEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbl8xLjkuNC5iYgpAQCAtMCwwICsxLDU0IEBACitTVU1NQVJZID0gIlN1YnZlcnNpb24gKHN2bikgdmVyc2lvbiBjb250cm9sIHN5c3RlbSBjbGllbnQiCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0RFUEVORFMgPSAiYXByLXV0aWwgc2VyZiBzcWxpdGUzIGZpbGUiCitERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIgorUkRFUEVORFNfJHtQTn0gPSAic2VyZiIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIiCitIT01FUEFHRSA9ICJodHRwOi8vc3VidmVyc2lvbi50aWdyaXMub3JnIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworaW5oZXJpdCBnZXR0ZXh0CisKK1NSQ19VUkkgPSAiJHtBUEFDSEVfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZV9tYWNvcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zZXJmLm00LVJlZ2V4LW1vZGlmaWVkLXRvLWFsbG93LUQtaW4tcGF0aHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtbGlidG9vbC1uYW1lLWluLWNvbmZpZ3VyZS5hYy5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjI5MTIxYTAzOGY4NzY0MTA1NWE4MTgzZjQ5ZTk3MzlmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjEyNjdmOWUyYWI5ODNmMjYwNjIzYmVlODQxZTZjOWNjNDU4YmY0YmY3NzYyMzhlZDVmMTAwOTgzZjc5ZTkyOTkiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWFmODFhZTQ5YmEzNTllNzA2MjZjMDVlOWJmMzEzNzA5IgorCitQQUNLQUdFQ09ORklHW3Nhc2xdID0gIi0td2l0aC1zYXNsLC0td2l0aG91dC1zYXNsLGN5cnVzLXNhc2wiCitQQUNLQUdFQ09ORklHW2dub21lLWtleXJpbmddID0gIi0td2l0aC1nbm9tZS1rZXlyaW5nLC0td2l0aG91dC1nbm9tZS1rZXlyaW5nLGdsaWItMi4wIGdub21lLWtleXJpbmciCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgICAgICAgICAgICAgIC0td2l0aG91dC1iZXJrZWxleS1kYiAtLXdpdGhvdXQtYXB4cyBcCisgICAgICAgICAgICAgICAgLS13aXRob3V0LXN3aWcgLS13aXRoLWFwcj0ke1NUQUdJTkdfQklORElSX0NST1NTfSBcCisgICAgICAgICAgICAgICAgLS13aXRoLWFwci11dGlsPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9IFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUta2V5Y2hhaW4gXAorICAgICAgICAgICAgICAgIGFjX2N2X3BhdGhfUlVCWT1ub25lIgorCitpbmhlcml0IGF1dG90b29scworCitleHBvcnQgTERGTEFHUyArPSAiIC1MJHtTVEFHSU5HX0xJQkRJUn0gIgorQ1BQRkxBR1MgKz0gIi1QIgorQlVJTERfQ1BQRkxBR1MgKz0gIi1QIgorCithY3BhdGhzID0gIi1JIGJ1aWxkLyAtSSBidWlsZC9hYy1tYWNyb3MvIgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJcm0gLWYgJHtTfS9saWJ0b29sCisJcm0gLWYgJHtTfS9idWlsZC9saWJ0b29sLm00ICR7U30vYnVpbGQvbHRtYWluLnNoICR7U30vYnVpbGQvbHRvcHRpb25zLm00ICR7U30vYnVpbGQvbHRzdWdhci5tNCAke1N9L2J1aWxkL2x0dmVyc2lvbi5tNCAke1N9L2J1aWxkL2x0fm9ic29sZXRlLm00CisJcm0gLWYgJHtTfS9hY2xvY2FsLm00CisJc2VkIC1pIC1lICdzOndpdGhfc2FzbD0iL3Vzci9sb2NhbCI6d2l0aF9zYXNsPSIke1NUQUdJTkdfRElSfSI6JyAke1N9L2J1aWxkL2FjLW1hY3Jvcy9zYXNsLm00Cit9CisKKyN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmFfbG9jYWwvbGlic3ZuX3JhX2xvY2FsLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJ3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9idWlsZC9zdWJ2ZXJzaW9uL2xpYnN2bl9yZXBvcy9saWJzdm5fcmVwb3MtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInfCAvdXNyL2Jpbi9sZDogY2Fubm90IGZpbmQgLWxzdm5fZGVsdGEtMXwgY29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmFfc3ZuL2xpYnN2bl9yYV9zdm4tMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL2J1aWxkL3N1YnZlcnNpb24vbGlic3ZuX3JhX3NlcmYvbGlic3ZuX3JhX3NlcmYtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInCisjfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogZXJyb3I6IHJlbGluayBgbGlic3ZuX3JhX3NlcmYtMS5sYScgd2l0aCB0aGUgYWJvdmUgY29tbWFuZCBiZWZvcmUgaW5zdGFsbGluZyBpdAorI3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAuLi8uLi9zdWJ2ZXJzaW9uL2xpYnN2bl9yZXBvcy9saWJzdm5fcmVwb3MtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInCisjfCAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9zdWJ2ZXJzaW9uLTEuOC45L2J1aWxkLW91dHB1dHMubWs6MTA5MDogcmVjaXBlIGZvciB0YXJnZXQgJ2luc3RhbGwtc2VyZi1saWInIGZhaWxlZAorI3wgbWFrZTogKioqIFtpbnN0YWxsLXNlcmYtbGliXSBFcnJvciAxCitQQVJBTExFTF9NQUtFSU5TVCA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N3YWJiZXIvc3dhYmJlci1uYXRpdmVfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zd2FiYmVyL3N3YWJiZXItbmF0aXZlX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmYzMTNiYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N3YWJiZXIvc3dhYmJlci1uYXRpdmVfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotU1VNTUFSWSA9ICJUb29sIHRvIG1vbml0b3IgYW5kIHJlcG9ydCBvbiBob3N0IHN5c3RlbSBmaWxlIHVzYWdlIgotSE9NRVBBR0UgPSAiaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvc3dhYmJlciIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zOTNhNWNhNDQ1ZjY5NjU4NzNlY2EwMjU5YTE3ZjgzMyIKLQotU1JDUkVWID0gIjJkMWZlMzZmYjBhNGZkYWFlODgyM2E5ODE4YTY3ODUxODJkNzVlNjYiCi1QViA9ICIwLjArZ2l0JHtTUkNQVn0iCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvc3dhYmJlciIKLQotaW5oZXJpdCBuYXRpdmUKLQotZG9fY29uZmlndXJlICgpIHsKLQk6Ci19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zd2lnL3N3aWcuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zd2lnL3N3aWcuaW5jCmluZGV4IDlkYTQwZGYuLjcwNGJiMjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3dpZy9zd2lnLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N3aWcvc3dpZy5pbmMKQEAgLTcsMTQgKzcsMTQgQEAKIAogU0VDVElPTiA9ICJkZXZlbCIKIAotREVQRU5EUyA9ICJsaWJwY3JlIHB5dGhvbiIKK0RFUEVORFMgPSAibGlicGNyZSBweXRob24zIgogCiBTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5neiIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcHl0aG9ubmF0aXZlCitpbmhlcml0IGF1dG90b29scyBweXRob24zbmF0aXZlCiAKIEVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0td2l0aC1weXRob249JHtQWVRIT059IFwKKyAgICAtLXdpdGgtcHl0aG9uMz0ke1BZVEhPTn0gXAogICAgIC0td2l0aG91dC1hbGxlZ3JvY2wgXAogICAgIC0td2l0aG91dC1hbmRyb2lkIFwKICAgICAtLXdpdGhvdXQtYm9vc3QgXApAQCAtMzMsNyArMzMsNiBAQAogICAgIC0td2l0aG91dC1wZXJsNSBcCiAgICAgLS13aXRob3V0LXBpa2UgXAogICAgIC0td2l0aG91dC1waHAgXAotICAgIC0td2l0aG91dC1weXRob24zIFwKICAgICAtLXdpdGhvdXQtciBcCiAgICAgLS13aXRob3V0LXJ1YnkgXAogICAgIC0td2l0aG91dC10Y2wgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9zeXN0ZW1kLWJvb3RjaGFydF8yMzAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0XzIzMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Y2U2MjlhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9zeXN0ZW1kLWJvb3RjaGFydF8yMzAuYmIKQEAgLTAsMCArMSwyOSBAQAorTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5MR1BMMi4xO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLkdQTDI7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kLWJvb3RjaGFydC5naXQ7cHJvdG9jb2w9aHR0cHMiCisKKyMgTW9kaWZ5IHRoZXNlIGFzIGRlc2lyZWQKK1BWID0gIjIzMCtnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICJkY2IyNDZiNDYyMzkyNTllYzk5YjNjNmU2YWI3ZDI3ZTFhNWE4YTg0IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitERVBFTkRTID0gInN5c3RlbWQgbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIGRvY2Jvb2steG1sLWR0ZDQtbmF0aXZlIGRvY2Jvb2steHNsLXN0eWxlc2hlZXRzLW5hdGl2ZSBpbnRsdG9vbCIKKworaW5oZXJpdCBwa2djb25maWcgYXV0b3Rvb2xzIHN5c3RlbWQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJzeXN0ZW1kIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAic3lzdGVtZC1ib290Y2hhcnQuc2VydmljZSIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgIyBpbnRsdG9vbC5tNCBpcyBhIHNvZnQgbGluayB0byAvdXNyL3NoYXJlL2FjbG9jYWwvbTQsIGRlbGV0ZSBpdCBhbmQgdXNlIHRoZSBvbmUgaW4gb3VyIHN5c3Jvb3QKKyAgICBybSAtZiAke1N9L200L2ludGx0b29sLm00Cit9CisKK0ZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtZC1ib290Y2hhcnQiCisKK0VYVFJBX09FQ09ORiA9ICIgLS13aXRoLXJvb3RwcmVmaXg9JHtiYXNlX3ByZWZpeH0gXAorICAgICAgICAgICAgICAgICAtLXdpdGgtcm9vdGxpYmRpcj0ke2Jhc2VfbGliZGlyfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNmLWFnZW50L3RjZi1hZ2VudF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjZi1hZ2VudC90Y2YtYWdlbnRfZ2l0LmJiCmluZGV4IGFiMmZjZDcuLmU1ZTQxZjEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNmLWFnZW50L3RjZi1hZ2VudF9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2YtYWdlbnQvdGNmLWFnZW50X2dpdC5iYgpAQCAtNSwxMSArNSwxMSBAQAogTElDRU5TRSA9ICJFUEwtMS4wIHwgRURMLTEuMCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2VkbC12MTAuaHRtbDttZDU9NTIyYTM5MGE4M2RjMTg2NTEzZjA1MDA1NDNhZDM2NzkiCiAKLVNSQ1JFViA9ICJiOWE3MzVlOWM3Y2Y4MmY4MGQ0MTJiN2FiMTVkMDhiODlkNWE0Y2NjIgotUFYgPSAiMS4zLjArZ2l0JHtTUkNQVn0iCitTUkNSRVYgPSAiMmRkZGQ1ZjQ0MGExNWQ1NDA2MDMyZmFjMjBmMjA2NDg0NTEzNjQ2ZiIKK1BWID0gIjEuNC4wK2dpdCR7U1JDUFZ9IgogCiBVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj4oXGQrKFwuXGQrKSspKSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmVjbGlwc2Uub3JnL2dpdHJvb3QvdGNmL29yZy5lY2xpcHNlLnRjZi5hZ2VudC5naXQ7YnJhbmNoPTEuM19tYXJzX2J1Z2ZpeCBcCitTUkNfVVJJID0gImdpdDovL2dpdC5lY2xpcHNlLm9yZy9naXRyb290L3RjZi9vcmcuZWNsaXBzZS50Y2YuYWdlbnQ7YnJhbmNoPTEuNF9uZW9uX2J1Z2ZpeCBcCiAgICAgICAgICAgIGZpbGU6Ly9maXhfcmFubGliLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2xkZmxhZ3MucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1jYW5vbmljYWxpemVfZmlsZV9uYW1lLWlzLXNwZWNpZmljLXRvLWdsaWJjLnBhdGNoO3N0cmlwbGV2ZWw9MiBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbC9maXhfaXNzdWVfd2l0aF9vbGRfZGlzdHJvX2dsaWJjLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2wvZml4X2lzc3VlX3dpdGhfb2xkX2Rpc3Ryb19nbGliYy5wYXRjaAppbmRleCA1YjVkZTA3Li43MmEwZmE0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbC9maXhfaXNzdWVfd2l0aF9vbGRfZGlzdHJvX2dsaWJjLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsL2ZpeF9pc3N1ZV93aXRoX29sZF9kaXN0cm9fZ2xpYmMucGF0Y2gKQEAgLTEyLDcgKzEyLDcgQEAKIHwgTWFraW5nIGRpcmVjdG9yeSAvc3J2L2hvbWUvbml0aW4vYnVpbGRzL2J1aWxkLWdjYzQ3L3RtcC93b3JrL3g4Nl82NC1wb2t5LWxpbnV4L3RjbC04LjUuMTEtcjUvaW1hZ2UvdXNyL2JpbgogfCBtYWtlOiAqKiogW2luc3RhbGwtbXNnc10gRXJyb3IgMQogCi1TaWduZWQtT2ZmLUJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KIDIwMTIvMDQvMjYKIAogSW5kZXg6IHVuaXgvTWFrZWZpbGUuaW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsL25vX3BhY2thZ2VzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2wvbm9fcGFja2FnZXMucGF0Y2gKaW5kZXggYWI2Y2M0My4uNWM2MjJhMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2wvbm9fcGFja2FnZXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2wvbm9fcGFja2FnZXMucGF0Y2gKQEAgLTUsMjYgKzUsMjYgQEAKIAogU2lnbmVkLW9mZi1ieTogQm9nZGFuIE1hcmluZXNjdSA8Ym9nZGFuLmEubWFyaW5lc2N1QGludGVsLmNvbT4KIAotSW5kZXg6IHVuaXgvTWFrZWZpbGUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB1bml4Lm9yaWcvTWFrZWZpbGUuaW4JMjAxMy0xMS0xMCAyMzozODoxMi4yMzU0MjU4OTEgLTA4MDAKLSsrKyB1bml4L01ha2VmaWxlLmluCTIwMTMtMTEtMTAgMjM6Mzg6MTIuMjMxNDI1ODkxIC0wODAwCi1AQCAtNjExLDcgKzYxMSw3IEBACitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgoraW5kZXggYjcyOWZmZC4uMmMyZTgyNCAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmluCisrKysgYi9NYWtlZmlsZS5pbgorQEAgLTYxMiw3ICs2MTIsNyBAQCBTUkNTID0gJChHRU5FUklDX1NSQ1MpICQoVE9NTUFUSF9TUkNTKSAkKFVOSVhfU1JDUykgJChOT1RJRllfU1JDUykgXAogICMgU3RhcnQgb2YgcnVsZXMKICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAKIC1hbGw6IGJpbmFyaWVzIGxpYnJhcmllcyBkb2MgcGFja2FnZXMKICthbGw6IGJpbmFyaWVzIGxpYnJhcmllcyBkb2MKICAKLSBiaW5hcmllczogJHtMSUJfRklMRX0gJChTVFVCX0xJQl9GSUxFKSAke1RDTF9FWEV9CisgYmluYXJpZXM6ICR7TElCX0ZJTEV9ICR7VENMX0VYRX0KICAKLUBAIC02NTMsMTIgKzY1MywxMiBAQAorQEAgLTY1NiwxMiArNjU2LDEyIEBAIE1ha2VmaWxlOiAkKFVOSVhfRElSKS9NYWtlZmlsZS5pbiAkKERMVEVTVF9ESVIpL01ha2VmaWxlLmluCiAgI3RjbENvbmZpZy5oOiAkKFVOSVhfRElSKS90Y2xDb25maWcuaC5pbgogICMJJChTSEVMTCkgY29uZmlnLnN0YXR1cwogIAogLWNsZWFuOiBjbGVhbi1wYWNrYWdlcwogK2NsZWFuOgotIAlybSAtZiAqLmEgKi5vIGxpYnRjbCogY29yZSBlcnJzICp+IFwjKiBUQUdTICouRSBhLm91dCBcCisgCXJtIC1yZiAqLmEgKi5vIGxpYnRjbCogY29yZSBlcnJzICp+IFwjKiBUQUdTICouRSBhLm91dCBcCiAgCQllcnJvcnMgJHtUQ0xfRVhFfSAke1RDTFRFU1RfRVhFfSBsaWIuZXhwIFRjbCBARFRSQUNFX0hEUkAKICAJY2QgZGx0ZXN0IDsgJChNQUtFKSBjbGVhbgogIApAQCAtMzMsNyArMzMsNyBAQAogIAlybSAtcmYgTWFrZWZpbGUgY29uZmlnLnN0YXR1cyBjb25maWcuY2FjaGUgY29uZmlnLmxvZyB0Y2xDb25maWcuc2ggXAogIAkJdGNsQ29uZmlnLmggKi5wbGlzdCBUY2wuZnJhbWV3b3JrIHRjbC5wYwogIAljZCBkbHRlc3QgOyAkKE1BS0UpIGRpc3RjbGVhbgotQEAgLTcwNiw3ICs3MDYsNyBAQAorQEAgLTcwOSw3ICs3MDksNyBAQCB0Y2x0ZXN0LXJlYWw6CiAgIyB0Y2x0ZXN0LCBpZToKICAjCSUgbWFrZSB0ZXN0IFRFU1RGTEFHUz0iLXZlcmJvc2UgYnBzIC1maWxlIGZpbGVOYW1lLnRlc3QiCiAgCkBAIC00Miw3ICs0Miw3IEBACiAgCiAgdGVzdC10Y2w6ICR7VENMVEVTVF9FWEV9CiAgCSQoU0hFTExfRU5WKSAke1RDTFRFU1RfRVhFfSAkKFRPUF9ESVIpL3Rlc3RzL2FsbC50Y2wgJChURVNURkxBR1MpCi1AQCAtNzcxLDcgKzc3MSw3IEBACitAQCAtNzc0LDcgKzc3NCw3IEBAIElOU1RBTExfUEFDS0FHRV9UQVJHRVRTID0gaW5zdGFsbC1wYWNrYWdlcwogIElOU1RBTExfREVWX1RBUkdFVFMgPSBpbnN0YWxsLWhlYWRlcnMKICBJTlNUQUxMX0VYVFJBX1RBUkdFVFMgPSBARVhUUkFfSU5TVEFMTEAKICBJTlNUQUxMX1RBUkdFVFMgPSAkKElOU1RBTExfQkFTRV9UQVJHRVRTKSAkKElOU1RBTExfRE9DX1RBUkdFVFMpICQoSU5TVEFMTF9ERVZfVEFSR0VUUykgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2xfOC42LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbF84LjYuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGU5MmIzZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbF84LjYuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi1TVU1NQVJZID0gIlRvb2wgQ29tbWFuZCBMYW5ndWFnZSIKLUhPTUVQQUdFID0gImh0dHA6Ly90Y2wuc291cmNlZm9yZ2UubmV0IgotU0VDVElPTiA9ICJkZXZlbC90Y2x0ayIKLQotIyBodHRwOi8vd3d3LnRjbC50ay9zb2Z0d2FyZS90Y2x0ay9saWNlbnNlLmh0bWwKLUxJQ0VOU0UgPSAidGNsICYgQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vLi4vbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAotICAgIGZpbGU6Ly8uLi9jb21wYXQvbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAotICAgIGZpbGU6Ly8uLi9saWJyYXJ5L2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKLSAgICBmaWxlOi8vLi4vbWFjb3N4L2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKLSAgICBmaWxlOi8vLi4vdGVzdHMvbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAotICAgIGZpbGU6Ly8uLi93aW4vbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAotIgotCi1ERVBFTkRTID0gInRjbC1uYXRpdmUgemxpYiIKLQotQkFTRV9TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS90Y2wvJHtCUE59JHtQVn0tc3JjLnRhci5neiBcCi0gICAgICAgICAgICAgICAgZmlsZTovL3RjbC1hZGQtc29uYW1lLnBhdGNoIgotU1JDX1VSSSA9ICIke0JBU0VfU1JDX1VSSX0gXAotICAgICAgICAgICBmaWxlOi8vZml4X25vbl9uYXRpdmVfYnVpbGRfaXNzdWUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4X2lzc3VlX3dpdGhfb2xkX2Rpc3Ryb19nbGliYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ub19wYWNrYWdlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly90Y2wtcmVtb3ZlLWhhcmRjb2RlZC1pbnN0YWxsLXBhdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYWx0ZXItaW5jbHVkZWRpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotIgotU1JDX1VSSVttZDVzdW1dID0gImQ3Y2JiOTFmMWRlZDE5MTkzNzBhMzBlZGQxNTM0MzA0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjllNmVkOTRjOTgxYzFkMGM1ZjVmZWZiODExMmQwNmM2YmY0ZDA1MGE3MzI3ZTk1ZTcxZDQxN2M0MTY1MTljOGQiCi0KLVNSQ19VUklfY2xhc3MtbmF0aXZlID0gIiR7QkFTRV9TUkNfVVJJfSIKLQotUyA9ICIke1dPUktESVJ9LyR7QlBOfSR7UFZ9L3VuaXgiCi0KLVZFUiA9ICIke1BWfSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcHRlc3QgYmluY29uZmlnCi0KLURFUEVORFNfY2xhc3MtbmF0aXZlID0gInpsaWItbmF0aXZlIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtdGhyZWFkcyAtLWRpc2FibGUtcnBhdGggLS1saWJkaXI9JHtsaWJkaXJ9IgotCi1kb19jb25maWd1cmUoKSB7Ci0JY2QgJHtTfQotCWdudS1jb25maWdpemUKLQljZCAke0J9Ci0Jb2VfcnVuY29uZgotfQotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0JZWNobyA+ICR7U30vLi4vY29tcGF0L2ZpeHN0cnRvZC5jCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwgaW5zdGFsbC1wcml2YXRlLWhlYWRlcnMKLQlsbiAtc2YgLi90Y2xzaCR7VkVSfSAke0R9JHtiaW5kaXJ9L3RjbHNoCi0JbG4gLXNmIHRjbHNoOC42ICR7RH0ke2JpbmRpcn0vdGNsc2gke1ZFUn0KLQlzZWQgLWkgInMrLUwke0J9Ky1MJHtTVEFHSU5HX0xJQkRJUn0rZyIgdGNsQ29uZmlnLnNoCi0Jc2VkIC1pICJzKyR7V09SS0RJUn0rJHtTVEFHSU5HX0lOQ0RJUn0rZyIgdGNsQ29uZmlnLnNoCi0Jc2VkIC1pICJzLC1MJHtsaWJkaXJ9LC1MPSR7bGliZGlyfSxnIiB0Y2xDb25maWcuc2gKLQlzZWQgLWkgInMsLUkke2luY2x1ZGVkaXJ9LC1JPSR7aW5jbHVkZWRpcn0sZyIgdGNsQ29uZmlnLnNoCi0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfQotCWluc3RhbGwgLW0gMDc1NSB0Y2xDb25maWcuc2ggJHtEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30KLQlpbnN0YWxsIC1tIDA3NTUgdGNsQ29uZmlnLnNoICR7RH0ke2xpYmRpcn0KLQljZCAuLgotCWZvciBkaXIgaW4gY29tcGF0IGdlbmVyaWMgdW5peDsgZG8KLQkJaW5zdGFsbCAtZCAke0R9JHtpbmNsdWRlZGlyfS8ke0JQTn0ke1ZFUn0vJGRpcgotCQlpbnN0YWxsIC1tIDA2NDQgJHtTfS8uLi8kZGlyLyouaCAke0R9JHtpbmNsdWRlZGlyfS8ke0JQTn0ke1ZFUn0vJGRpci8KLQlkb25lCi19Ci0KLVNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DUyArPSAidGNsX3N5c3Jvb3RfcHJlcHJvY2VzcyIKLXRjbF9zeXNyb290X3ByZXByb2Nlc3MgKCkgewotCXN5c3Jvb3Rfc3RhZ2VfZGlyICR7RH0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9ICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30KLX0KLQotUEFDS0FHRVMgPSsgInRjbC1saWIiCi1GSUxFU190Y2wtbGliID0gIiR7bGliZGlyfS9saWJ0Y2w4LjYuc28uKiIKLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vdGNsJHtWRVJ9ICR7bGliZGlyfS90Y2w4LjYgJHtsaWJkaXJ9L3RjbDgiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS90Y2xDb25maWcuc2ggJHtsaWJkaXJ9L3RjbG9vQ29uZmlnLnNoIgotCi0jIGlzbid0IGdldHRpbmcgcGlja2VkIHVwIGJ5IHNobGlicyBjb2RlCi1SREVQRU5EU18ke1BOfSArPSAidGNsLWxpYiIKLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAibGliZ2NjIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQlvZV9ydW5tYWtlIHRjbHRlc3QKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQljcCAke0J9L3RjbHRlc3QgJHtEfSR7UFRFU1RfUEFUSH0KLQljcCAtciAke1N9Ly4uL2xpYnJhcnkgJHtEfSR7UFRFU1RfUEFUSH0KLQljcCAtciAke1N9Ly4uL3Rlc3RzICR7RH0ke1BURVNUX1BBVEh9Ci19Ci0KLSMgRml4IHNvbWUgcGF0aHMgdGhhdCBtaWdodCBiZSB1c2VkIGJ5IFRjbCBleHRlbnNpb25zCi1CSU5DT05GSUdfR0xPQiA9ICIqQ29uZmlnLnNoIgotCi0jIEZpeCB0aGUgcGF0aCBpbiBzc3RhdGUKLVNTVEFURV9TQ0FOX0ZJTEVTICs9ICIqQ29uZmlnLnNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2xfOC42LjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbF84LjYuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGQwYTdhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2xfOC42LjYuYmIKQEAgLTAsMCArMSw5NyBAQAorU1VNTUFSWSA9ICJUb29sIENvbW1hbmQgTGFuZ3VhZ2UiCitIT01FUEFHRSA9ICJodHRwOi8vdGNsLnNvdXJjZWZvcmdlLm5ldCIKK1NFQ1RJT04gPSAiZGV2ZWwvdGNsdGsiCisKKyMgaHR0cDovL3d3dy50Y2wudGsvc29mdHdhcmUvdGNsdGsvbGljZW5zZS5odG1sCitMSUNFTlNFID0gInRjbCAmIEJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKKyAgICBmaWxlOi8vLi4vY29tcGF0L2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKKyAgICBmaWxlOi8vLi4vbGlicmFyeS9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCisgICAgZmlsZTovLy4uL21hY29zeC9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCisgICAgZmlsZTovLy4uL3Rlc3RzL2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKKyAgICBmaWxlOi8vLi4vd2luL2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKKyIKKworREVQRU5EUyA9ICJ0Y2wtbmF0aXZlIHpsaWIiCisKK0JBU0VfU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vdGNsLyR7QlBOfSR7UFZ9LXNyYy50YXIuZ3ogXAorICAgICAgICAgICAgICAgIGZpbGU6Ly90Y2wtYWRkLXNvbmFtZS5wYXRjaCIKK1NSQ19VUkkgPSAiJHtCQVNFX1NSQ19VUkl9IFwKKyAgICAgICAgICAgZmlsZTovL2ZpeF9ub25fbmF0aXZlX2J1aWxkX2lzc3VlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeF9pc3N1ZV93aXRoX29sZF9kaXN0cm9fZ2xpYmMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbm9fcGFja2FnZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdGNsLXJlbW92ZS1oYXJkY29kZWQtaW5zdGFsbC1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2FsdGVyLWluY2x1ZGVkaXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI1MTkzYWVhODEwNzgzOWE3OWRmOGFjNzA5NTUyZWNiNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhMjY1NDA5NzgxZTRiM2VkY2M0ZWY4MjI1MzMwNzFiMzRjM2RjNjc5MGI4OTM5NjM4MDliOWZlMjIxYmVmZTA3IgorCitTUkNfVVJJX2NsYXNzLW5hdGl2ZSA9ICIke0JBU0VfU1JDX1VSSX0iCisKK1MgPSAiJHtXT1JLRElSfS8ke0JQTn0ke1BWfS91bml4IgorCitWRVIgPSAiJHtQVn0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0IGJpbmNvbmZpZworCitERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJ6bGliLW5hdGl2ZSIKKworRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXRocmVhZHMgLS1kaXNhYmxlLXJwYXRoIC0tbGliZGlyPSR7bGliZGlyfSIKKworZG9fY29uZmlndXJlKCkgeworCWNkICR7U30KKwlnbnUtY29uZmlnaXplCisJY2QgJHtCfQorCW9lX3J1bmNvbmYKK30KKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworCWVjaG8gPiAke1N9Ly4uL2NvbXBhdC9maXhzdHJ0b2QuYworfQorCitkb19pbnN0YWxsKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsIGluc3RhbGwtcHJpdmF0ZS1oZWFkZXJzCisJbG4gLXNmIC4vdGNsc2gke1ZFUn0gJHtEfSR7YmluZGlyfS90Y2xzaAorCWxuIC1zZiB0Y2xzaDguNiAke0R9JHtiaW5kaXJ9L3RjbHNoJHtWRVJ9CisJc2VkIC1pICJzKy1MJHtCfSstTCR7U1RBR0lOR19MSUJESVJ9K2ciIHRjbENvbmZpZy5zaAorCXNlZCAtaSAicyske1dPUktESVJ9KyR7U1RBR0lOR19JTkNESVJ9K2ciIHRjbENvbmZpZy5zaAorCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30KKwlpbnN0YWxsIC1tIDA3NTUgdGNsQ29uZmlnLnNoICR7RH0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9CisJaW5zdGFsbCAtbSAwNzU1IHRjbENvbmZpZy5zaCAke0R9JHtsaWJkaXJ9CisJY2QgLi4KKwlmb3IgZGlyIGluIGNvbXBhdCBnZW5lcmljIHVuaXg7IGRvCisJCWluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0vJHtCUE59JHtWRVJ9LyRkaXIKKwkJaW5zdGFsbCAtbSAwNjQ0ICR7U30vLi4vJGRpci8qLmggJHtEfSR7aW5jbHVkZWRpcn0vJHtCUE59JHtWRVJ9LyRkaXIvCisJZG9uZQorfQorCitTWVNST09UX0RJUlMgKz0gIiR7YmluZGlyX2Nyb3Nzc2NyaXB0c30iCisKK1BBQ0tBR0VTID0rICJ0Y2wtbGliIgorRklMRVNfdGNsLWxpYiA9ICIke2xpYmRpcn0vbGlidGNsOC42LnNvLioiCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3RjbCR7VkVSfSAke2xpYmRpcn0vdGNsOC42ICR7bGliZGlyfS90Y2w4IgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vdGNsQ29uZmlnLnNoICR7bGliZGlyfS90Y2xvb0NvbmZpZy5zaCIKKworIyBpc24ndCBnZXR0aW5nIHBpY2tlZCB1cCBieSBzaGxpYnMgY29kZQorUkRFUEVORFNfJHtQTn0gKz0gInRjbC1saWIiCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImxpYmdjYyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisJb2VfcnVubWFrZSB0Y2x0ZXN0Cit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJY3AgJHtCfS90Y2x0ZXN0ICR7RH0ke1BURVNUX1BBVEh9CisJY3AgLXIgJHtTfS8uLi9saWJyYXJ5ICR7RH0ke1BURVNUX1BBVEh9CisJY3AgLXIgJHtTfS8uLi90ZXN0cyAke0R9JHtQVEVTVF9QQVRIfQorfQorCisjIEZpeCBzb21lIHBhdGhzIHRoYXQgbWlnaHQgYmUgdXNlZCBieSBUY2wgZXh0ZW5zaW9ucworQklOQ09ORklHX0dMT0IgPSAiKkNvbmZpZy5zaCIKKworIyBGaXggdGhlIHBhdGggaW4gc3N0YXRlCitTU1RBVEVfU0NBTl9GSUxFUyArPSAiKkNvbmZpZy5zaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdW5mczMvdW5mczNfMC45LjIyLnI0OTcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3VuZnMzL3VuZnMzXzAuOS4yMi5yNDk3LmJiCmluZGV4IGViYTExMzkuLmU3NTc0ZmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdW5mczMvdW5mczNfMC45LjIyLnI0OTcuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy91bmZzMy91bmZzM18wLjkuMjIucjQ5Ny5iYgpAQCAtOSw4ICs5LDggQEAKIENIRUNLX0RBVEUgPSAiRGVjIDEwLCAyMDE1IgogCiBERVBFTkRTID0gImZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSBmbGV4IgotREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBsaWJ0aXJwYyAiCi1ERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgKz0gImZsZXgtbmF0aXZlc2RrIgorREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBsaWJ0aXJwYyIKK0RFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgZmxleC1uYXRpdmVzZGsiCiAKIE1PRF9QViA9ICI0OTciCiBTID0gIiR7V09SS0RJUn0vdHJ1bmsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYS5pbmMKaW5kZXggMmE4ODc1Zi4uMzRjOWRiOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGEuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhLmluYwpAQCAtMTEsNyArMTEsNyBAQAogTElDRU5TRSA9ICJMR1BMdjIuMSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZiYzA5MzkwMTg1N2ZjZDExOGYwNjVmOTAwOTgyYzI0IgogCi1TSFJUX1ZFUiA9ICIke0BkLmdldFZhcignUFYnLDEpLnNwbGl0KCcuJylbMF19LiR7QGQuZ2V0VmFyKCdQVicsMSkuc3BsaXQoJy4nKVsxXX0iCitTSFJUX1ZFUiA9ICIke0BkLmdldFZhcignUFYnLCBUcnVlKS5zcGxpdCgnLicpWzBdfS4ke0BkLmdldFZhcignUFYnLCBUcnVlKS5zcGxpdCgnLicpWzFdfSIKIAogU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy8ke0JQTn0vJHtTSFJUX1ZFUn0vJHtCUH0udGFyLnh6IgogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgpAQCAtMzYsMTUgKzM2LDE0IEBACiAgICAgICAgIGluc3RhbGwgJHtCfS92YXBpZ2VuLXdyYXBwZXIgJHtEfSR7YmluZGlyfS8KIH0KIAorIyBQdXQgdmFwaWdlbiB3cmFwcGVyIGludG8gdGFyZ2V0IHN5c3Jvb3Qgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCB3aGVuIGJ1aWxkaW5nCisjIHZhcGkgZmlsZXMuCitTWVNST09UX0RJUlNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtiaW5kaXJ9IgogCi1TWVNST09UX1BSRVBST0NFU1NfRlVOQ1NfYXBwZW5kX2NsYXNzLXRhcmdldCArPSAidmFwaWdlbl9zeXNyb290X3ByZXByb2Nlc3MiCi0KK1NZU1JPT1RfUFJFUFJPQ0VTU19GVU5DU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiB2YXBpZ2VuX3N5c3Jvb3RfcHJlcHJvY2VzcyIKIHZhcGlnZW5fc3lzcm9vdF9wcmVwcm9jZXNzKCkgewotICAgICAgICAjIFB1dCB2YXBpZ2VuIHdyYXBwZXIgaW50byB0YXJnZXQgc3lzcm9vdCBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIHdoZW4gYnVpbGRpbmcgdmFwaSBmaWxlcy4KLSAgICAgICAgc3lzcm9vdF9zdGFnZV9kaXIgJHtEfSR7YmluZGlyfSAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcn0KLQotICAgICAgICAjIEFsc28sIHR3ZWFrIHRoZSB2YXBpZ2VuIG5hbWUgaW4gdmFwaWdlbiBwa2djb25maWcgZmlsZSwgc28gdGhhdCBpdCBwaWNrcyB1cCBvdXIKLSAgICAgICAgIyB3cmFwcGVyLgorICAgICAgICAjIFR3ZWFrIHRoZSB2YXBpZ2VuIG5hbWUgaW4gdGhlIHZhcGlnZW4gcGtnY29uZmlnIGZpbGUsIHNvIHRoYXQgaXQgcGlja3MKKyAgICAgICAgIyB1cCBvdXIgd3JhcHBlci4KICAgICAgICAgc2VkIC1pIFwKICAgICAgICAgICAgLWUgInN8dmFwaWdlbj0uKnx2YXBpZ2VuPSR7YmluZGlyfS92YXBpZ2VuLXdyYXBwZXJ8IiBcCiAgICAgICAgICAgICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vcGtnY29uZmlnL3ZhcGlnZW4tJHtTSFJUX1ZFUn0ucGMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhXzAuMzAuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhXzAuMzAuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjM5NGFmYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYV8wLjMwLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLXJlcXVpcmUgJHtCUE59LmluYwotCi1TUkNfVVJJICs9ICIgZmlsZTovLzAwMDEtZ2l0LXZlcnNpb24tZ2VuLWRvbi10LWFwcGVuZC1kaXJ0eS1pZi13ZS1yZS1ub3QtaW4tZy5wYXRjaCBcCi0gICAgICAgICAgICAgZmlsZTovLzAwMDEtdmFwaWdlbi5tNC11c2UtUEtHX0NPTkZJR19TWVNST09UX0RJUi5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjYzJlYjIzODRmYzEwMDM4YjY0Mzc1M2Q3MzRhNWE1MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyM2FkZDc4ZTVjNmE1ZTZkZjAxOWQ0YTg4NWM5Yzc5ODE0YzllMGI5NTc1MTllYzhhNGY0ZDgyNmM0ZTVkZjJjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGFfMC4zMi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGFfMC4zMi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzNDA4NmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYV8wLjMyLjEuYmIKQEAgLTAsMCArMSw4IEBACityZXF1aXJlICR7QlBOfS5pbmMKKworU1JDX1VSSSArPSAiIGZpbGU6Ly8wMDAxLWdpdC12ZXJzaW9uLWdlbi1kb24tdC1hcHBlbmQtZGlydHktaWYtd2UtcmUtbm90LWluLWcucGF0Y2ggXAorICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXZhcGlnZW4ubTQtdXNlLVBLR19DT05GSUdfU1lTUk9PVF9ESVIucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzU1ODgxNzcwYmZmYWMwMjBiNWVhNWY2MjVmYmU1MjgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGQwZDQ3ZTU0OGEzNGNmYjFlNGIwNDE0OWFjZDA4MmE4NjQxNGM0OTA1N2ZmYjc5OTAyZWI5YTUwOGExNjFhOSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvZ2NjNS1wb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC9nY2M1LXBvcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzZiYzgyMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvZ2NjNS1wb3J0LnBhdGNoCkBAIC0wLDAgKzEsNjQgQEAKK2JhY2twb3J0IGZpeCBmcm9tIHVwc3RyZWFtIHRvIGZpeCBidWlsZCBlcnJvcnMgd2l0aCBnY2MgNgorCitodHRwOi8vdmFsZ3JpbmQuMTA5MDgubjcubmFiYmxlLmNvbS9WYWxncmluZC1yMTU3NzMtaW4tdHJ1bmstY29uZmlndXJlLWFjLWRyZC10ZXN0cy1zdGQtdGhyZWFkLWNwcC1kcmQtdGVzdHMtc3RkLXRocmVhZDItY3BwLXRkNTYxMDkuaHRtbAorCisuLi8uLi8uLi92YWxncmluZC0zLjExLjAvZHJkL3Rlc3RzL3N0ZF90aHJlYWQuY3BwOjMwOjM6IGVycm9yOiAnX0ltcGxfYmFzZScgaXMgbm90IGEgbWVtYmVyIG9mICdzdGQ6OnRocmVhZCcKKyAgIHN0ZDo6dGhyZWFkOjpfSW1wbF9iYXNlKiBfX3QgPSBzdGF0aWNfY2FzdDxzdGQ6OnRocmVhZDo6X0ltcGxfYmFzZSo+KF9fcCk7CisgICBefn4KKy4uLy4uLy4uL3ZhbGdyaW5kLTMuMTEuMC9kcmQvdGVzdHMvc3RkX3RocmVhZC5jcHA6MzA6Mjg6IGVycm9yOiAnX190JyB3YXMgbm90IGRlY2xhcmVkIGluIHRoaXMgc2NvcGUKKyAgIHN0ZDo6dGhyZWFkOjpfSW1wbF9iYXNlKiBfX3QgPSBzdGF0aWNfY2FzdDxzdGQ6OnRocmVhZDo6X0ltcGxfYmFzZSo+KF9fcCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+CisuLi8uLi8uLi92YWxncmluZC0zLjExLjAvZHJkL3Rlc3RzL3N0ZF90aHJlYWQuY3BwOjMwOjU5OiBlcnJvcjogJ19JbXBsX2Jhc2UnIGluICdjbGFzcyBzdGQ6OnRocmVhZCcgZG9lcyBub3QgbmFtZSBhIHR5cGUKKyAgIHN0ZDo6dGhyZWFkOjpfSW1wbF9iYXNlKiBfX3QgPSBzdGF0aWNfY2FzdDxzdGQ6OnRocmVhZDo6X0ltcGxfYmFzZSo+KF9fcCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fn4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworSW5kZXg6IGNvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGEvY29uZmlndXJlLmFjCShyZXZpc2lvbiAxNTc3MikKKysrKyBiL2NvbmZpZ3VyZS5hYwkocmV2aXNpb24gMTU3NzMpCitAQCAtMTYwLDcgKzE2MCw3IEBACisgICAgICBpY2MtMVtbMy05XV0uKikKKyAJQUNfTVNHX1JFU1VMVChbb2sgKElDQyB2ZXJzaW9uICR7Z2NjX3ZlcnNpb259KV0pCisgCTs7CistICAgICBub3RjbGFuZy1bWzMtOV1dLip8bm90Y2xhbmctW1sxLTldWzAtOV1dKikKKysgICAgIG5vdGNsYW5nLVtbMy05XV18bm90Y2xhbmctW1szLTldXS4qfG5vdGNsYW5nLVtbMS05XVswLTldXSopCisgCUFDX01TR19SRVNVTFQoW29rICgke2djY192ZXJzaW9ufSldKQorIAk7OworICAgICAgY2xhbmctMi45fGNsYW5nLVtbMy05XV0uKnxjbGFuZy1bWzEtOV1bMC05XV0qKQorSW5kZXg6IGRyZC90ZXN0cy9zdGRfdGhyZWFkMi5jcHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhL2RyZC90ZXN0cy9zdGRfdGhyZWFkMi5jcHAJKHJldmlzaW9uIDE1NzcyKQorKysrIGIvZHJkL3Rlc3RzL3N0ZF90aHJlYWQyLmNwcAkocmV2aXNpb24gMTU3NzMpCitAQCAtMjYsNiArMjYsNyBAQAorICAgcmV0dXJuIDA7CisgfQorIAorKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyAtMCA8IDYKKyAvLworIC8vIEZyb20gbGlic3RkYysrLXYzL3NyYy9jKysxMS90aHJlYWQuY2MKKyAvLworQEAgLTcwLDMgKzcxLDQgQEAKKyAgICAgfQorICAgfQorIH0KKysjZW5kaWYKK0luZGV4OiBkcmQvdGVzdHMvc3RkX3RocmVhZC5jcHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhL2RyZC90ZXN0cy9zdGRfdGhyZWFkLmNwcAkocmV2aXNpb24gMTU3NzIpCisrKysgYi9kcmQvdGVzdHMvc3RkX3RocmVhZC5jcHAJKHJldmlzaW9uIDE1NzczKQorQEAgLTIxLDYgKzIxLDcgQEAKKyAgIHJldHVybiAwOworIH0KKyAKKysjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gLTAgPCA2CisgLy8KKyAvLyBGcm9tIGxpYnN0ZGMrKy12My9zcmMvYysrMTEvdGhyZWFkLmNjCisgLy8KK0BAIC02NSwzICs2Niw0IEBACisgICAgIH0KKyAgIH0KKyB9CisrI2VuZGlmCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kXzMuMTEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmRfMy4xMS4wLmJiCmluZGV4IDUxYzg4YmYuLjQyZmQyN2YgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmRfMy4xMS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmRfMy4xMS4wLmJiCkBAIC0yMyw2ICsyMyw3IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS10ZXN0cy10aGF0LWZhaWwtdG8tYnVpbGQtb24tc29tZS1QUEMzMi1jb25maWcucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vdXNlLWFwcHJvcHJpYXRlLW1hcmNoLW1jcHUtbWZwdS1mb3ItQVJNLXRlc3QtYXBwcy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9hdm9pZC1uZW9uLWZvci10YXJnZXRzLXdoaWNoLWRvbi10LXN1cHBvcnQtaXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZ2NjNS1wb3J0LnBhdGNoIFwKICIKIFNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICJcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1idWlsZC1mb3ItbXVzbC10YXJnZXRzLnBhdGNoIFwKQEAgLTM3LDYgKzM4LDEwIEBACiBDT01QQVRJQkxFX0hPU1RfYXJtdjUgPSAnbnVsbCcKIENPTVBBVElCTEVfSE9TVF9hcm12NiA9ICdudWxsJwogCisjIHZhbGdyaW5kIGRvZXNuJ3QgbGlrZSBtaXBzIHNvZnQgZmxvYXQKK0NPTVBBVElCTEVfSE9TVF9taXBzID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUQVJHRVRfRlBVIiwgInNvZnQiLCAibnVsbCIsICIuKi1saW51eCIsIGQpfSIKK0NPTVBBVElCTEVfSE9TVF9taXBzZWwgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRBUkdFVF9GUFUiLCAic29mdCIsICJudWxsIiwgIi4qLWxpbnV4IiwgZCl9IgorCiBpbmhlcml0IGF1dG90b29scyBwdGVzdAogCiBFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtdGxzIC0td2l0aG91dC1tcGljYyIKQEAgLTY4LDkgKzczLDkgQEAKIFJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIgc2VkIHBlcmwgcGVybC1tb2R1bGUtZmlsZS1nbG9iIgogUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGdsaWJjLXV0aWxzIgogCi0jIE9uZSBvZiB0aGUgdGVzdHMgY29udGFpbnMgYSBib2d1cyBpbnRlcnByZXRlciBwYXRoIG9uIHB1cnBvc2UsIGFuZCBRQQotIyBjaGVjayBjb21wbGFpbnMgYWJvdXQgaXQKLUlOU0FORV9TS0lQXyR7UE59LXB0ZXN0ICs9ICJmaWxlLXJkZXBzIgorIyBPbmUgb2YgdGhlIHRlc3RzIGNvbnRhaW5zIGEgYm9ndXMgaW50ZXJwcmV0ZXIgcGF0aCBvbiBwdXJwb3NlLgorIyBTa2lwIGZpbGUgZGVwZW5kZW5jeSBjaGVjaworU0tJUF9GSUxFREVQU18ke1BOfS1wdGVzdCA9ICcxJwogCiBkb19jb21waWxlX3B0ZXN0KCkgewogICAgIG9lX3J1bm1ha2UgY2hlY2sKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMveG1sdG8veG1sdG9fMC4wLjI4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy94bWx0by94bWx0b18wLjAuMjguYmIKaW5kZXggNzFmODczZi4uYWFhZWI2ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy94bWx0by94bWx0b18wLjAuMjguYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy94bWx0by94bWx0b18wLjAuMjguYmIKQEAgLTEzLDggKzEzLDkgQEAKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIyZjk4NmI3YzlhMGU5YWM2NzI4MTQ3NjY4ZTc3NmQ0MDU0NjUyODRlMTNjNzRkNDE0NmM5Y2JjNTFmZDhhYWQzIgogCiBpbmhlcml0IGF1dG90b29scworUkRFUEVORFNfY2xhc3MtbmF0aXZlID0gImxpYnhzbHQtbmF0aXZlIgogCi0jIHhtbHRvIG5lZWRzIGdldG9wdC94bWxsaW50L3hzbHRwcm9jL2Jhc2ggYXQgcnVudGltZQorIyB4bWx0byBuZWVkcyBnZXRvcHQveG1sbGludC94c2x0cHJvYy9iYXNoL3RhaWwgYXQgcnVudGltZQogUkRFUEVORFNfJHtQTn0gPSAiZG9jYm9vay14bWwtZHRkNCBcCiAgICAgICAgICAgICAgICAgICBkb2Nib29rLXhzbC1zdHlsZXNoZWV0cyBcCiAgICAgICAgICAgICAgICAgICB1dGlsLWxpbnV4IFwKQEAgLTIzLDcgKzI0LDkgQEAKICIKIFJERVBFTkRTXyR7UE59X2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIFwKICAgICAgICAgICAgICAgICAgIGxpYnhzbHQtYmluIFwKKyAgICAgICAgICAgICAgICAgIGNvcmV1dGlscyBcCiAiCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9UQUlMPSR7YmluZGlyfS90YWlsIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hc2NpaWRvYy9hc2NpaWRvY184LjYuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXNjaWlkb2MvYXNjaWlkb2NfOC42LjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWNkMTQ1NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXNjaWlkb2MvYXNjaWlkb2NfOC42LjkuYmIKQEAgLTAsMCArMSwyNCBAQAorU1VNTUFSWSA9ICJUb29sIGZvciBjcmVhdGluZyBIVE1MLCBQREYsIEVQVUIsIG1hbiBwYWdlcyIKK0RFU0NSSVBUSU9OID0gIkFzY2lpRG9jIGlzIGEgdGV4dCBkb2N1bWVudCBmb3JtYXQgZm9yIHdyaXRpbmcgc2hvcnQgZG9jdW1lbnRzLCBcCithcnRpY2xlcywgYm9va3MgYW5kIFVOSVggbWFuIHBhZ2VzLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL2FzY2lpZG9jLm9yZy8iCisKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04Y2E0M2NiYzg0MmMyMzM2ZTgzNTkyNmMyMTY2YzI4YiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZUklHSFQ7bWQ1PTAyOWFkNTQyOGJhNWVmYTIwMTc2YjM5NjIyMmQ0MDY5IgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMuc291cmNlZm9yZ2UubmV0L3Byb2plY3QvJHtCUE59LyR7QlBOfS8ke1BWfS8ke0JQfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiYzU5MDE4ZjEwNWJlOGQwMjI3MTRiODI2YjBiZTEzMGEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzhkYjlkMDU2N2M4YWI2NTcwYTZlZmY3ZmZkZjg0ZWFkZDkxZjJkZmMwYTkyYTJkMDEwNWQzMjNjYWI0ZTFmMCIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2FzY2lpZG9jL2ZpbGVzLyIKKworaW5oZXJpdCBkaXN0dXRpbHMgYXV0b3Rvb2xzLWJyb2tlbnNlcAorCitleHBvcnQgREVTVERJUiA9ICIke0R9IgorREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiZG9jYm9vay14bWwtZHRkNC1uYXRpdmUiCitSREVQRU5EU18ke1BOfSArPSAicHl0aG9uIiAKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitDTEVBTkJST0tFTiA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdC9hdC9jb25maWd1cmUtZml4LXdpdGgtd2l0aG91dC1zZWxpbnV4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdC9hdC9jb25maWd1cmUtZml4LXdpdGgtd2l0aG91dC1zZWxpbnV4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODlhZjFlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXQvY29uZmlndXJlLWZpeC13aXRoLXdpdGhvdXQtc2VsaW51eC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLUZyb20gYzAyMzU0YWY3ZjNkOTQyNmRhMzE1MDNhYmZhZTcwOTUyYzY5OWE5ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgotRGF0ZTogRnJpLCAxOCBNYXIgMjAxNiAwMzoyMzoxMSAtMDQwMAotU3ViamVjdDogW1BBVENIXSBjb25maWd1cmU6IGZpeCB3aXRoL3dpdGhvdXQgc2VsaW51eAotCi1Qcm9ibGVtOgotd2l0aG91dC1zZWxpbnV4IGRvZXNuJ3Qgd29yayBzaW5jZSBXSVRIX1NFTElOVVggaXMgYWx3YXlzIGJlIGRlZmluZWQgbm8KLW1hdHRlciB3aGljaCBvcHRpb24gaXMgZ2l2ZW46IHdpdGgtc2VsaW51eCwgd2l0aG91dC1zZWxpbnV4LgotCi1GaXg6Ci1EaXNhYmxlIHNlbGludXggc3VwcG9ydCBpZiB3aXRob3V0LXNlbGludXggaXMgZ2l2ZW47IG90aGVyd2lzZSBjaGVjawotbGlic2VsaW51eCB0byBkZXRlcm1pbmUgaWYgc2VsaW51eCBzdXBwb3J0IHNob3VsZCBiZSBlbmFibGVkLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbYXRAcGFja2FnZXMuZGViaWFuLm9yZ10KLQotU2lnbmVkLW9mZi1ieTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAxOSArKysrKysrKysrKysrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDVhNDM0MTkuLjhjOWRlNjIgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTI0MCwxMCArMjQwLDIxIEBAIEFDX0FSR19XSVRIKGRhZW1vbl91c2VybmFtZSwKLSBBQ19TVUJTVChEQUVNT05fVVNFUk5BTUUpCi0gCi0gQUNfQVJHX1dJVEgoc2VsaW51eCwKLS1bIC0td2l0aC1zZWxpbnV4ICAgICAgIERlZmluZSB0byBydW4gd2l0aCBzZWxpbnV4XSwKLS1BQ19ERUZJTkUoV0lUSF9TRUxJTlVYLCAxLCBbRGVmaW5lIGlmIHlvdSBhcmUgYnVpbGRpbmcgd2l0aF9zZWxpbnV4XSksCi0tKQotLUFDX0NIRUNLX0xJQihzZWxpbnV4LCBpc19zZWxpbnV4X2VuYWJsZWQsIFNFTElOVVhMSUI9LWxzZWxpbnV4KQotK1sgLS13aXRoLXNlbGludXggICAgICAgRGVmaW5lIHRvIHJ1biB3aXRoIHNlbGludXggKGRlZmF1bHQ9Y2hlY2spXSwKLStbXSwKLStbd2l0aF9zZWxpbnV4PWNoZWNrXSkKLSsKLStpZiB0ZXN0ICJ4JHdpdGhfc2VsaW51eCIgIT0geG5vOyB0aGVuCi0rICBBQ19DSEVDS19MSUIoW3NlbGludXhdLCBbaXNfc2VsaW51eF9lbmFibGVkXSwKLSsgICAgW1NFTElOVVhMSUI9LWxzZWxpbnV4Ci0rICAgICBBQ19ERUZJTkUoV0lUSF9TRUxJTlVYLCAxLCBbRGVmaW5lIGlmIHlvdSBhcmUgYnVpbGRpbmcgd2l0aF9zZWxpbnV4XSkKLSsgICAgXSwKLSsgICAgW2lmIHRlc3QgIngkd2l0aF9zZWxpbnV4IiAhPSB4Y2hlY2s7IHRoZW4KLSsgICAgICAgQUNfTVNHX0ZBSUxVUkUoWy0td2l0aC1zZWxpbnV4IGlzIGdpdmVuLCBidXQgdGVzdCBmb3Igc2VsaW51eCBmYWlsZWRdKQotKyAgICAgZmkKLSsgICAgXQotKyAgKQotK2ZpCi0gQUNfU1VCU1QoU0VMSU5VWExJQikKLSBBQ19TVUJTVChXSVRIX1NFTElOVVgpCi0gCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXRfMy4xLjE4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdC9hdF8zLjEuMTguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzMDQ0ZjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdC9hdF8zLjEuMTguYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi1TVU1NQVJZID0gIkRlbGF5ZWQgam9iIGV4ZWN1dGlvbiBhbmQgYmF0Y2ggcHJvY2Vzc2luZyIKLURFU0NSSVBUSU9OID0gIkF0IGFsbG93cyBmb3IgY29tbWFuZHMgdG8gYmUgcnVuIGF0IGEgcGFydGljdWxhciB0aW1lLiAgQmF0Y2ggd2lsbCBleGVjdXRlIGNvbW1hbmRzIHdoZW4gXAotdGhlIHN5c3RlbSBsb2FkIGxldmVscyBkcm9wIHRvIGEgcGFydGljdWxhciBsZXZlbC4iCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTQzMjVhZmQzOTZmZWJjYjY1OWMzNmI0OTUzMzEzNWQ0IgotREVQRU5EUyA9ICJmbGV4IGZsZXgtbmF0aXZlIFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKLQotUkRFUEVORFNfJHtQTn0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnJHtQQU1fREVQU30nLCAnJywgZCl9IFwKLSIKLQotUEFNX0RFUFMgPSAibGlicGFtIGxpYnBhbS1ydW50aW1lIHBhbS1wbHVnaW4tZW52IHBhbS1wbHVnaW4tbGltaXRzIgotCi1SQ09ORkxJQ1RTXyR7UE59ID0gImF0ZCIKLVJSRVBMQUNFU18ke1BOfSA9ICJhdGQiCi0KLVNSQ19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL2EvYXQvYXRfJHtQVn0ub3JpZy50YXIuZ3o7c3ViZGlyPSR7QlB9IFwKLSAgICBmaWxlOi8vZml4X3BhcmFsbGVsX2J1aWxkX2Vycm9yLnBhdGNoIFwKLSAgICBmaWxlOi8vcG9zaXh0bS5jIFwKLSAgICBmaWxlOi8vcG9zaXh0bS5oIFwKLSAgICBmaWxlOi8vZmlsZV9yZXBsYWNlbWVudF93aXRoX2dwbHYyLnBhdGNoIFwKLSAgICBmaWxlOi8vYXRkLmluaXQgXAotICAgIGZpbGU6Ly9hdGQuc2VydmljZSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnJHtQQU1fU1JDX1VSSX0nLCAnJywgZCl9IFwKLSAgICBmaWxlOi8vbWFrZWZpbGUtZml4LXBhcmFsbGVsLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1yZW1vdmUtZ2xpYmMtYXNzdW1wdGlvbi5wYXRjaCBcCi0gICAgZmlsZTovL2NvbmZpZ3VyZS1maXgtd2l0aC13aXRob3V0LXNlbGludXgucGF0Y2ggXAotICAgICIKLQotUEFNX1NSQ19VUkkgPSAiZmlsZTovL3BhbS5jb25mLnBhdGNoIFwKLSAgICAgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtYWRkLWVuYWJsZS1wYW0ucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmNjdhN2FhYjU1N2NkNWI0YTEzMTEwNzlhMDhhY2ViZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkYmQ1YzhjYjhlZGQ1M2VmNDY3MzYzYzNhZjAzOTFjMDg3NjlmMWRiYmQ0ZDUwMDJjNTlhNGNkNGNhYzExZDUyIgotCi1FWFRSQV9PRUNPTkYgKz0gImFjX2N2X3BhdGhfU0VORE1BSUw9L2Jpbi90cnVlIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWRhZW1vbl91c2VybmFtZT1yb290IFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWRhZW1vbl9ncm91cG5hbWU9cm9vdCBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1qb2JkaXI9L3Zhci9zcG9vbC9hdC9qb2JzIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWF0c3Bvb2w9L3Zhci9zcG9vbC9hdC9zcG9vbCBcCi0gICAgICAgICAgICAgICAgIGFjX2N2X2hlYWRlcl9zZWN1cml0eV9wYW1fYXBwbF9oPSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3llcycsICdubycsIGQpfSAiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBzeXN0ZW1kIHVwZGF0ZS1yYy5kCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJhdGQiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImF0ZC5zZXJ2aWNlIgotCi1jb3B5X3NvdXJjZXMoKSB7Ci0JY3AgLWYgJHtXT1JLRElSfS9wb3NpeHRtLltjaF0gJHtTfQotfQotZG9fcGF0Y2hbcG9zdGZ1bmNzXSArPSAiY29weV9zb3VyY2VzIgotCi1kb19pbnN0YWxsICgpIHsKLQlvZV9ydW5tYWtlIC1lICJJUk9PVD0ke0R9IiBpbnN0YWxsCi0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotCWluc3RhbGwgLW0gMDc1NSAgICAke1dPUktESVJ9L2F0ZC5pbml0CQkke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvYXRkCi0KLQkjIGluc3RhbGwgc3lzdGVtZCB1bml0IGZpbGVzCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2F0ZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0Jc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2F0ZC5zZXJ2aWNlCi0KLQlpZiBbICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdwYW0nLCAnJywgZCl9IiA9ICJwYW0iIF07IHRoZW4KLQkJaW5zdGFsbCAtRCAtbSAwNjQ0ICR7V09SS0RJUn0vJHtCUH0vcGFtLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vcGFtLmQvYXRkCi0JZmkKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXRfMy4xLjIwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdC9hdF8zLjEuMjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU0NTliNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXRfMy4xLjIwLmJiCkBAIC0wLDAgKzEsNzEgQEAKK1NVTU1BUlkgPSAiRGVsYXllZCBqb2IgZXhlY3V0aW9uIGFuZCBiYXRjaCBwcm9jZXNzaW5nIgorREVTQ1JJUFRJT04gPSAiQXQgYWxsb3dzIGZvciBjb21tYW5kcyB0byBiZSBydW4gYXQgYSBwYXJ0aWN1bGFyIHRpbWUuICBCYXRjaCB3aWxsIGV4ZWN1dGUgY29tbWFuZHMgd2hlbiBcCit0aGUgc3lzdGVtIGxvYWQgbGV2ZWxzIGRyb3AgdG8gYSBwYXJ0aWN1bGFyIGxldmVsLiIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NDMyNWFmZDM5NmZlYmNiNjU5YzM2YjQ5NTMzMTM1ZDQiCitERVBFTkRTID0gImZsZXggZmxleC1uYXRpdmUgXAorICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdsaWJwYW0nLCAnJywgZCl9IgorCitSREVQRU5EU18ke1BOfSA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICcke1BBTV9ERVBTfScsICcnLCBkKX0gXAorIgorCitQQU1fREVQUyA9ICJsaWJwYW0gbGlicGFtLXJ1bnRpbWUgcGFtLXBsdWdpbi1lbnYgcGFtLXBsdWdpbi1saW1pdHMiCisKK1JDT05GTElDVFNfJHtQTn0gPSAiYXRkIgorUlJFUExBQ0VTXyR7UE59ID0gImF0ZCIKKworU1JDX1VSSSA9ICJodHRwOi8vc25hcHNob3QuZGViaWFuLm9yZy9hcmNoaXZlL2RlYmlhbi8yMDE2MDcyOFQwNDM0NDNaL3Bvb2wvbWFpbi9hLyR7QlBOfS8ke0JQTn1fJHtQVn0ub3JpZy50YXIuZ3ogXAorICAgIGZpbGU6Ly9maXhfcGFyYWxsZWxfYnVpbGRfZXJyb3IucGF0Y2ggXAorICAgIGZpbGU6Ly9wb3NpeHRtLmMgXAorICAgIGZpbGU6Ly9wb3NpeHRtLmggXAorICAgIGZpbGU6Ly9maWxlX3JlcGxhY2VtZW50X3dpdGhfZ3BsdjIucGF0Y2ggXAorICAgIGZpbGU6Ly9hdGQuaW5pdCBcCisgICAgZmlsZTovL2F0ZC5zZXJ2aWNlIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICcke1BBTV9TUkNfVVJJfScsICcnLCBkKX0gXAorICAgIGZpbGU6Ly9tYWtlZmlsZS1maXgtcGFyYWxsZWwucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLXJlbW92ZS1nbGliYy1hc3N1bXB0aW9uLnBhdGNoIFwKKyAgICAiCisKK1BBTV9TUkNfVVJJID0gImZpbGU6Ly9wYW0uY29uZi5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLWFkZC1lbmFibGUtcGFtLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZTdiZDdiNzg1YjJjYmIxN2UxMzNkNmJkYzBmYjA5OWUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDg3MTkyM2NhYjczMDUwYjk4YWNlMDIwNjY0ZWIyZGRjMWU2NjllNDE2NmI1YWJiNjRkODY0ZDAyZmNlZmFiOSIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9hL2F0LyIKKworRVhUUkFfT0VDT05GICs9ICJhY19jdl9wYXRoX1NFTkRNQUlMPS9iaW4vdHJ1ZSBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1kYWVtb25fdXNlcm5hbWU9cm9vdCBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1kYWVtb25fZ3JvdXBuYW1lPXJvb3QgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtam9iZGlyPS92YXIvc3Bvb2wvYXQvam9icyBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1hdHNwb29sPS92YXIvc3Bvb2wvYXQvc3Bvb2wgXAorICAgICAgICAgICAgICAgICBhY19jdl9oZWFkZXJfc2VjdXJpdHlfcGFtX2FwcGxfaD0ke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICd5ZXMnLCAnbm8nLCBkKX0gIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgc3lzdGVtZCB1cGRhdGUtcmMuZAorCitJTklUU0NSSVBUX05BTUUgPSAiYXRkIgorSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJhdGQuc2VydmljZSIKKworY29weV9zb3VyY2VzKCkgeworCWNwIC1mICR7V09SS0RJUn0vcG9zaXh0bS5bY2hdICR7U30KK30KK2RvX3BhdGNoW3Bvc3RmdW5jc10gKz0gImNvcHlfc291cmNlcyIKKworZG9faW5zdGFsbCAoKSB7CisJb2VfcnVubWFrZSAtZSAiSVJPT1Q9JHtEfSIgaW5zdGFsbAorCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKwlpbnN0YWxsIC1tIDA3NTUgICAgJHtXT1JLRElSfS9hdGQuaW5pdAkJJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2F0ZAorCisJIyBpbnN0YWxsIHN5c3RlbWQgdW5pdCBmaWxlcworCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9hdGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCXNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9hdGQuc2VydmljZQorCisJaWYgWyAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtJywgJycsIGQpfSIgPSAicGFtIiBdOyB0aGVuCisJCWluc3RhbGwgLUQgLW0gMDY0NCAke1dPUktESVJ9LyR7QlB9L3BhbS5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3BhbS5kL2F0ZAorCWZpCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2F1Z2Vhcy9hdWdlYXMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdWdlYXMvYXVnZWFzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjNkMTJjYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2F1Z2Vhcy9hdWdlYXMuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotU1VNTUFSWSA9ICJBdWdlYXMgY29uZmlndXJhdGlvbiBBUEkiCi1IT01FUEFHRSA9ICJodHRwOi8vYXVnZWFzLm5ldC8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZmVkb3JhaG9zdGVkLm9yZy9hdWdlYXMvcmVwb3J0LzEiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YmJiNDYxMjExYTMzYjEzNGQ0MmVkNWVlODAyYjM3ZmYiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLmF1Z2Vhcy5uZXQvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2FkZC1taXNzaW5nLWFyZ3otY29uZGl0aW9uYWwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc2VwYnVpbGRmaXgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIgotCi1ERVBFTkRTID0gInJlYWRsaW5lIGxpYnhtbDIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1QQUNLQUdFUyA9KyAiJHtQTn0tbGVuc2VzIGxpYiR7QlBOfSIKLQotRklMRVNfJHtQTn0tbGVuc2VzID0gIiR7ZGF0YWRpcn0vYXVnZWFzL2xlbnNlcyIKLUZJTEVTX2xpYiR7QlBOfSA9ICIke2xpYmRpcn0vbGliKiR7U09MSUJTfSIKLQotUkRFUEVORFNfbGliJHtCUE59ICs9ICIke1BOfS1sZW5zZXMiCi1SUkVDT01NRU5EU19saWIke0JQTn0gKz0gIiR7UE59IgotCi1MRUFEX1NPTkFNRSA9ICJsaWJhdWdlYXMuc28iCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCXJtIC1mciAke0R9JHtkYXRhZGlyfS92aW0KLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXVnZWFzL2F1Z2Vhcy8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdWdlYXMvYXVnZWFzLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhMTk4NzYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdWdlYXMvYXVnZWFzLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1Gcm9tIGI5NTY1ZGMyZmUwYzRmN2RhYWVjOTFiN2U4M2JjNzMxM2RlZTJmNGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAxMyBBcHIgMjAxNSAxNzowMjoxMyAtMDcwMAotU3ViamVjdDogW1BBVENIXSBVbnNldCBuZWVkX2NoYXJzZXRfYWxpYXMgd2hlbiBidWlsZGluZyBmb3IgbXVzbAotCi1sb2NhbGNoYXJzZXQgdXNlcyBhY19jdl9nbnVfbGlicmFyeV8yXzEgZnJvbSBnbGliYzIxLm00Ci13aGljaCBhY3R1YWxseSBzaG91ZGwgYmUgZml4ZWQgaW4gZ251bGliIGFuZCB0aGVuIGFsbCBkb3duc3RyZWFtCi1wcm9qZWN0cyB3aWxsIGdldCBpdCBldmVudHVhbGx5LiBGb3Igbm93IHdlIGFwcGx5IHRoZSBmaXggdG8KLWNvcmV1dGlscwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxpYi9nbnVsaWIubWsgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLUluZGV4OiBhdWdlYXMtMS4yLjAvZ251bGliL2xpYi9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGF1Z2Vhcy0xLjIuMC5vcmlnL2dudWxpYi9saWIvTWFrZWZpbGUuYW0KLSsrKyBhdWdlYXMtMS4yLjAvZ251bGliL2xpYi9NYWtlZmlsZS5hbQotQEAgLTQ2Myw3ICs0NjMsNyBAQCBpbnN0YWxsLWV4ZWMtbG9jYWxjaGFyc2V0OiBhbGwtbG9jYWwKLSAJICBjYXNlICckKGhvc3Rfb3MpJyBpbiBcCi0gCSAgICBkYXJ3aW5bNTZdKikgXAotIAkgICAgICBuZWVkX2NoYXJzZXRfYWxpYXM9dHJ1ZSA7OyBcCi0tCSAgICBkYXJ3aW4qIHwgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKSBcCi0rCSAgICBkYXJ3aW4qIHwgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqIHwgbGludXgtbXVzbCopIFwKLSAJICAgICAgbmVlZF9jaGFyc2V0X2FsaWFzPWZhbHNlIDs7IFwKLSAJICAgICopIFwKLSAJICAgICAgbmVlZF9jaGFyc2V0X2FsaWFzPXRydWUgOzsgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdWdlYXMvYXVnZWFzL2FkZC1taXNzaW5nLWFyZ3otY29uZGl0aW9uYWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2F1Z2Vhcy9hdWdlYXMvYWRkLW1pc3NpbmctYXJnei1jb25kaXRpb25hbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWJiZGJhYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2F1Z2Vhcy9hdWdlYXMvYWRkLW1pc3NpbmctYXJnei1jb25kaXRpb25hbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLUFkZCBtaXNzaW5nIEdMX0dFTkVSQVRFX0FSR1pfSCBjb25kaXRpb25hbAotCi0tIEdMX0dFTkVSQVRFX0FSR1pfSCBpcyB1c2VkIGluIGdudWxpYi9saWIvTWFrZWZpbGUuYW0KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBDb25zdGFudGluIE11c2NhIDxjb25zdGFudGlueC5tdXNjYUBpbnRlbC5jb20+Ci0KLUluZGV4OiBhdWdlYXMtMS4wLjAvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYXVnZWFzLTEuMC4wLm9yaWcvY29uZmlndXJlLmFjCi0rKysgYXVnZWFzLTEuMC4wL2NvbmZpZ3VyZS5hYwotQEAgLTU1LDYgKzU1LDggQEAgQUNfQVJHX1dJVEgoW2ZhaWxtYWxsb2NdLAotIAotIEFNX0NPTkRJVElPTkFMKFtXSVRIX0ZBSUxNQUxMT0NdLCBbdGVzdCB4JHdpdGhfZmFpbG1hbGxvYyAhPSB4bm9dKQotIAotK0FNX0NPTkRJVElPTkFMKFtHTF9HRU5FUkFURV9BUkdaX0hdLCBbdGVzdCAtbiAiJEFSR1pfSCJdKQotKwotIGRubCAtLWVuYWJsZS1kZWJ1Zz0oeWVzfG5vKQotIEFDX0FSR19FTkFCTEUoW2RlYnVnXSwKLSAgICAgICAgICAgICAgIFtBQ19IRUxQX1NUUklORyhbLS1lbmFibGUtZGVidWc9bm8veWVzXSwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXVnZWFzL2F1Z2Vhcy9zZXBidWlsZGZpeC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXVnZWFzL2F1Z2Vhcy9zZXBidWlsZGZpeC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjgyYTNlZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2F1Z2Vhcy9hdWdlYXMvc2VwYnVpbGRmaXgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1FbnN1cmUgdGhhdCBidWlsZHMgaW4gc2VwYXJhdGUgYnVpbGRkaXJzICgke0J9ICE9ICR7U30pIGNvcnJlY3RseSBpbnN0YWxsIHRoZSAKLWxlbnNlcyBmaWxlcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVJQIDIwMTMvNC8xNwotCi1JbmRleDogYXVnZWFzLTEuMC4wL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYXVnZWFzLTEuMC4wLm9yaWcvTWFrZWZpbGUuYW0JMjAxMi0xMS0wMiAxNToyMDoxMS4wMDAwMDAwMDAgKzAwMDAKLSsrKyBhdWdlYXMtMS4wLjAvTWFrZWZpbGUuYW0JMjAxMy0wNC0xNyAxMDozNjoyNC4wMzM0MDAxMjUgKzAwMDAKLUBAIC01LDggKzUsOCBAQAotIGxlbnNkaXI9JChkYXRhZGlyKS9hdWdlYXMvbGVuc2VzL2Rpc3QKLSBsZW5zdGVzdGRpcj0kKGRhdGFkaXIpL2F1Z2Vhcy9sZW5zZXMvZGlzdC90ZXN0cwotIAotLWRpc3RfbGVuc19EQVRBPSQod2lsZGNhcmQgbGVuc2VzLyouYXVnKQotLWRpc3RfbGVuc3Rlc3RfREFUQT0kKHdpbGRjYXJkIGxlbnNlcy90ZXN0cy8qLmF1ZykKLStkaXN0X2xlbnNfREFUQT0kKHdpbGRjYXJkICQodG9wX3NyY2RpcikvbGVuc2VzLyouYXVnKQotK2Rpc3RfbGVuc3Rlc3RfREFUQT0kKHdpbGRjYXJkICQodG9wX3NyY2RpcilsZW5zZXMvdGVzdHMvKi5hdWcpCi0gCi0gRVhUUkFfRElTVD1hdWdlYXMuc3BlYyBidWlsZC9hdXgvbW92ZS1pZi1jaGFuZ2UgTWFrZWZpbGUuYW0gSEFDS0lORwotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdWdlYXMvYXVnZWFzXzEuNC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdWdlYXMvYXVnZWFzXzEuNC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDY0YWQ0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXVnZWFzL2F1Z2Vhc18xLjQuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotcmVxdWlyZSBhdWdlYXMuaW5jCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhMjUzNmE5YzNkNzQ0ZGMwOWQyMzQyMjhmZTRiMGM5MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2NTlmYWU3YWMyMjkwMjllNjBhODY5YTNiODhjNjE2Y2ZkNTFjZjJmYmEyODZjZGZlM2FmM2EwNTJjYjM1YjMwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gtMy4yLjQ4L2J1aWxkLXRlc3RzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gtMy4yLjQ4L2J1aWxkLXRlc3RzLnBhdGNoCmluZGV4IDkxMzQxZWUuLmU2MzQ1N2MgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoLTMuMi40OC9idWlsZC10ZXN0cy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC0zLjIuNDgvYnVpbGQtdGVzdHMucGF0Y2gKQEAgLTExLDE1ICsxMSwxNSBAQAogIAogIHJlY2hvJChFWEVFWFQpOgkJJChTVVBQT1JUX1NSQylyZWNoby5jCiAtCUAkKENDX0ZPUl9CVUlMRCkgJChDQ0ZMQUdTX0ZPUl9CVUlMRCkgLW8gJEAgJChTVVBQT1JUX1NSQylyZWNoby5jICR7TElCU19GT1JfQlVJTER9Ci0rCUAkKENDKSAkKENDRkxBR1MpIC1vICRAICQ8CisrCUAkKENDKSAkKENDRkxBR1MpICQoTERGTEFHUykgLW8gJEAgJDwKICAKICB6ZWNobyQoRVhFRVhUKToJCSQoU1VQUE9SVF9TUkMpemVjaG8uYwogLQlAJChDQ19GT1JfQlVJTEQpICQoQ0NGTEFHU19GT1JfQlVJTEQpIC1vICRAICQoU1VQUE9SVF9TUkMpemVjaG8uYyAke0xJQlNfRk9SX0JVSUxEfQotKwlAJChDQykgJChDQ0ZMQUdTKSAtbyAkQCAkPAorKwlAJChDQykgJChDQ0ZMQUdTKSAkKExERkxBR1MpIC1vICRAICQ8CiAgCiAgcHJpbnRlbnYkKEVYRUVYVCk6CSQoU1VQUE9SVF9TUkMpcHJpbnRlbnYuYwogLQlAJChDQ19GT1JfQlVJTEQpICQoQ0NGTEFHU19GT1JfQlVJTEQpIC1vICRAICQoU1VQUE9SVF9TUkMpcHJpbnRlbnYuYyAke0xJQlNfRk9SX0JVSUxEfQotKwlAJChDQykgJChDQ0ZMQUdTKSAtbyAkQCAkPAorKwlAJChDQykgJChDQ0ZMQUdTKSAkKExERkxBR1MpIC1vICRAICQ8CiAgCiAtdGVzdCB0ZXN0cyBjaGVjazoJZm9yY2UgJChQcm9ncmFtKSAkKFRFU1RTX1NVUFBPUlQpCiArdGVzdCB0ZXN0cyBjaGVjazoKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoLTMuMi40OC9zdHJpbmctZm9ybWF0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gtMy4yLjQ4L3N0cmluZy1mb3JtYXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRhMzk2NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoLTMuMi40OC9zdHJpbmctZm9ybWF0LnBhdGNoCkBAIC0wLDAgKzEsMjEgQEAKK0ZpeCBhIHN0cmluZyBmb3JtYXQgd2FybmluZyB3aGVuIHVzaW5nIHNlY3VyaXR5IGZsYWdzOgorCit8IC4uL2Jhc2gtMy4yLjQ4L3ByaW50X2NtZC5jOjExNTI6MzogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCit8ICAgIGNwcmludGYgKGluZGVudGF0aW9uX3N0cmluZyk7CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CisKK2RpZmYgLS1naXQgYS9wcmludF9jbWQuYyBiL3ByaW50X2NtZC5jCitpbmRleCBkMWRmZDFhLi45NTZkYjUzIDEwMDY0NAorLS0tIGEvcHJpbnRfY21kLmMKKysrKyBiL3ByaW50X2NtZC5jCitAQCAtMTE0OSw3ICsxMTQ5LDcgQEAgaW5kZW50IChhbW91bnQpCisgICBmb3IgKGkgPSAwOyBhbW91bnQgPiAwOyBhbW91bnQtLSkKKyAgICAgaW5kZW50YXRpb25fc3RyaW5nW2krK10gPSAnICc7CisgICBpbmRlbnRhdGlvbl9zdHJpbmdbaV0gPSAnXDAnOworLSAgY3ByaW50ZiAoaW5kZW50YXRpb25fc3RyaW5nKTsKKysgIGNwcmludGYgKCIlcyIsIGluZGVudGF0aW9uX3N0cmluZyk7CisgfQorIAorIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC5pbmMKaW5kZXggOTNjYTAwYi4uMWQwODUyNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2guaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoLmluYwpAQCAtMiw3ICsyLDcgQEAKIEhPTUVQQUdFID0gImh0dHA6Ly90aXN3d3cuY2FzZS5lZHUvcGhwL2NoZXQvYmFzaC9iYXNodG9wLmh0bWwiCiBTRUNUSU9OID0gImJhc2Uvc2hlbGwiCiAKLURFUEVORFMgPSAibmN1cnNlcyBiaXNvbi1uYXRpdmUiCitERVBFTkRTID0gIm5jdXJzZXMgYmlzb24tbmF0aXZlIHZpcnR1YWwvbGliaWNvbnYiCiAKIGluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyB1cGRhdGUtYWx0ZXJuYXRpdmVzIHB0ZXN0CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoLzAwMDEtaGVscC1maXgtcHJpbnRmLWZvcm1hdC1zZWN1cml0eS13YXJuaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvMDAwMS1oZWxwLWZpeC1wcmludGYtZm9ybWF0LXNlY3VyaXR5LXdhcm5pbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQwNWM4NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoLzAwMDEtaGVscC1maXgtcHJpbnRmLWZvcm1hdC1zZWN1cml0eS13YXJuaW5nLnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK0Zyb20gZTU4MzdhNDJmOGY0OGE2YTcyMTgwNWZmOGY3ZmNkMzI4NjFkMDljYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9BbmRyPUMzPUE5PTIwRHJhc3ppaz89IDxhZHJhc3ppa0B0eWNvaW50LmNvbT4KK0RhdGU6IFR1ZSwgMjYgSnVsIDIwMTYgMTM6MDk6NDcgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gaGVscDogZml4IHByaW50ZigpIGZvcm1hdCBzZWN1cml0eSB3YXJuaW5nCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK3wgLi4vLi4vYmFzaC00LjMuMzAvYnVpbHRpbnMvLi4vLi4vYmFzaC00LjMuMzAvYnVpbHRpbnMvaGVscC5kZWY6IEluIGZ1bmN0aW9uICdoZWxwX2J1aWx0aW4nOgorfCAuLi8uLi9iYXNoLTQuMy4zMC9idWlsdGlucy8uLi8uLi9iYXNoLTQuMy4zMC9idWlsdGlucy9oZWxwLmRlZjoxMzA6NzogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCit8ICAgICAgICBwcmludGYgKG5nZXR0ZXh0ICgiU2hlbGwgY29tbWFuZHMgbWF0Y2hpbmcga2V5d29yZCBgIiwgIlNoZWxsIGNvbW1hbmRzIG1hdGNoaW5nIGtleXdvcmRzIGAiLCAobGlzdC0+bmV4dCA/IDIgOiAxKSkpOworfCAgICAgICAgXn5+fn5+CisKK1NpZ25lZC1vZmYtYnk6IEFuZHLDqSBEcmFzemlrIDxhZHJhc3ppa0B0eWNvaW50LmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisgYnVpbHRpbnMvaGVscC5kZWYgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9idWlsdGlucy9oZWxwLmRlZiBiL2J1aWx0aW5zL2hlbHAuZGVmCitpbmRleCAxODk0ZjE3Li5jZjYyNGM2IDEwMDY0NAorLS0tIGEvYnVpbHRpbnMvaGVscC5kZWYKKysrKyBiL2J1aWx0aW5zL2hlbHAuZGVmCitAQCAtMTI3LDcgKzEyNyw3IEBAIGhlbHBfYnVpbHRpbiAobGlzdCkKKyAKKyAgIGlmIChnbG9iX3BhdHRlcm5fcCAobGlzdC0+d29yZC0+d29yZCkpCisgICAgIHsKKy0gICAgICBwcmludGYgKG5nZXR0ZXh0ICgiU2hlbGwgY29tbWFuZHMgbWF0Y2hpbmcga2V5d29yZCBgIiwgIlNoZWxsIGNvbW1hbmRzIG1hdGNoaW5nIGtleXdvcmRzIGAiLCAobGlzdC0+bmV4dCA/IDIgOiAxKSkpOworKyAgICAgIHByaW50ZiAoIiVzIiwgbmdldHRleHQgKCJTaGVsbCBjb21tYW5kcyBtYXRjaGluZyBrZXl3b3JkIGAiLCAiU2hlbGwgY29tbWFuZHMgbWF0Y2hpbmcga2V5d29yZHMgYCIsIChsaXN0LT5uZXh0ID8gMiA6IDEpKSk7CisgICAgICAgcHJpbnRfd29yZF9saXN0IChsaXN0LCAiLCAiKTsKKyAgICAgICBwcmludGYgKCInXG5cbiIpOworICAgICB9CistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoL2ZpeC1ydW4tYnVpbHRpbnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC9maXgtcnVuLWJ1aWx0aW5zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmYTM4ODMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC9maXgtcnVuLWJ1aWx0aW5zLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gMGM0Y2FiOTU5NGM5NmMyZGM0MzVhOGQ5NzI0NjA1ODI0YmNiZjkxNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDE5IEFwciAyMDE2IDAyOjU3OjQ1IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIGZpeCBydW4tYnVpbHRpbnMgZmFpbGVkCisKK0ZBSUw6IHJ1bi1idWlsdGlucworMS4gcmVkaXJlY3QgdGhlIHN0ZGVyciBvdXRwdXQgb2YgY29tbWFuZCBleGVjIHdpdGggLWwgb3B0aW9uIGluCisgICBidWlsdGlucy50ZXN0cyB0byAvZGV2L251bGwKKzIuIGVuc3VyZSB0aGUgc3lzdGVtIGNvbnRhaW4gdGhlIGxvY2FsZXMgImVuX1VTLlVURi04IgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KKy0tLQorIHRlc3RzL2J1aWx0aW5zLnRlc3RzIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvdGVzdHMvYnVpbHRpbnMudGVzdHMgYi90ZXN0cy9idWlsdGlucy50ZXN0cworaW5kZXggOWQ3NzUyMC4uNjNmM2FmOCAxMDA2NDQKKy0tLSBhL3Rlc3RzL2J1aWx0aW5zLnRlc3RzCisrKysgYi90ZXN0cy9idWlsdGlucy50ZXN0cworQEAgLTEwOSw3ICsxMDksNyBAQCBlc2FjCisgCisgIyB0ZXN0IG9wdGlvbnMgdG8gZXhlYworIChleGVjIC1hIHNwZWNpYWxuYW1lICR7VEhJU19TSH0gLWMgJ2VjaG8gJDAnICkKKy0oZXhlYyAtbCAtYSBzcGVjaWFsbmFtZSAke1RISVNfU0h9IC1jICdlY2hvICQwJyApCisrKGV4ZWMgLWwgLWEgc3BlY2lhbG5hbWUgJHtUSElTX1NIfSAtYyAnZWNobyAkMCcgKSAyPiAvZGV2L251bGwKKyAjIHRlc3QgYGNsZWFuJyBlbnZpcm9ubWVudC4gIGlmIC9iaW4vc2ggaXMgYmFzaCwgYW5kIHRoZSBzY3JpcHQgdmVyc2lvbiBvZgorICMgcHJpbnRlbnYgaXMgcnVuLCB0aGVyZSB3aWxsIGJlIHZhcmlhYmxlcyBpbiB0aGUgZW52aXJvbm1lbnQgdGhhdCBiYXNoCisgIyBzZXRzIG9uIHN0YXJ0dXAuICBBbHNvIHRlc3QgY29kZSB0aGF0IHByZWZpeGVzIGFyZ3ZbMF0gd2l0aCBhIGRhc2guCistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoL2ZpeC1ydW4taW50bC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoL2ZpeC1ydW4taW50bC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGEzNDA5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvZml4LXJ1bi1pbnRsLnBhdGNoCkBAIC0wLDAgKzEsMTEwIEBACitGcm9tIGEwMGQzMTYxZmQ3YjZhNjk4YmRkMmVkNWYwYWM1ZmFhYzU4MGVlMmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAzIEF1ZyAyMDE2IDIzOjEzOjAwIC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIGZpeCBydW4taW50bCBmYWlsZWQKKworMS4gRmlsdGVyIGV4dHJhIHdoaXRlIHNwYWNlIG9mIGludGwucmlnaHQKKworICAgRHVlIHRvIHRoZSBleHRyYSB3aGl0ZSBzcGFjZSBvZiBpbnRsLnJpZ2h0LCB3aGVuIHRoZSByZXN1bHQgb2YKKyAgIHN1Yi10ZXN0IHVuaWNvZGUyLnN1YiBvZiBpbnRsLnRlc3RzIGNvbXBhcmVkIHRvIGl0LCB0aGUgdGVzdAorICAgZmFpbGVkLgorCisgICBTbyB3ZSBuZWVkIHRvIGZpbHRlciB0aGUgZXh0cmEgd2hpdGUgc3BhY2Ugb2YgaW50bC5yaWdodC4KKworICAgSW1wb3J0IHRoaXMgcGF0Y2ggZm9yIGludGwucmlnaHQgZnJvbSBiYXNoIGRldmVsIGJyYW5jaDoKKworCWh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9jZ2l0L2Jhc2guZ2l0L2xvZy8/aD1kZXZlbAorCisgICBjb21taXQgaXM6CisKKwk4NWVjMDc3OGY5ZDc3OGUxODIwZmI4YzBlM2U5OTZmMmQxMTAzYjQ1CisKKzIuIENoYW5nZSBpbnRsLnJpZ2h0IGNvcnJlc3BvbmQgdG8gdGhlIHVuaWNvZGUzLnN1YidzIG91dHB1dAorCisgICBJbiBzdWItdGVzdCB1bmljb2RlMy5zdWIgb2YgaW50bC50ZXN0cywgdGhlIHBheWxvYWQgdmFsdWUgaXM6CisKKwlwYXlsb2FkPSQnXDA2NVwyNDdcMTAwXDA2M1wyMzFcMDUzXDMwNlwxMjNcMDcwXDIzN1wyNDJcMzUyXDI2MycKKworICAgSXQgdXNlZCBxdW90ZWQgc3RyaW5nIGV4cGFuc2lvbihlc2NhcGVkIG9jdGFsKSB0byBhc3NpZ24gQVNDSUkKKyAgIGNoYXJhY3RlcnMgdG8gdmFyaWFibGVzLiBTbyB3aGVuIHRoZSB0ZXN0IHJ1biB0aGUgZm9sbG93aW5nOgorCisJcHJpbnRmICVxICIkcGF5bG9hZCIKKworICAgSXQgcHJvZHVjZWQ6CisKKwkkJzVcMjQ3QDNcMjMxK1wzMDZTOFwyMzdcMjQyXDM1MlwyNjMnCisKKyAgIFdoZW4gY29tcGFyZWQgdG8gdGhlIGludGwucmlnaHQoY29udGFpbiB0aGUgY29udmVydGVkIGNoYXJhY3RlciksIGl0IGZhaWxlZC4KKworICAgSW1wb3J0IHBhcnRzIG9mIHBhdGNoIGZvciBpbnRsLnJpZ2h0IGZyb20gYmFzaCBkZXZlbCBicmFuY2g6CisKKwlodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvY2dpdC9iYXNoLmdpdC9sb2cvP2g9ZGV2ZWwKKworICAgY29tbWl0IGlzOgorCisJNzRiOGNiYjQxMzk4YjQ0NTNkOGJhMDRkMGNkZDFiMjVmOWRjYjllMworCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+CistLS0KKyB0ZXN0cy9pbnRsLnJpZ2h0IHwgMzAgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdGVzdHMvaW50bC5yaWdodCBiL3Rlc3RzL2ludGwucmlnaHQKK2luZGV4IGFjZjEwOGEuLjFlZmRmYmUgMTAwNjQ0CistLS0gYS90ZXN0cy9pbnRsLnJpZ2h0CisrKysgYi90ZXN0cy9pbnRsLnJpZ2h0CitAQCAtMTgsMzQgKzE4LDM0IEBAIGHDqWIKKyAxLjAwMDAKKyAxLDAwMDAKKyBQYXNzZWQgYWxsIDEzNzggVW5pY29kZSB0ZXN0cworLTAwMDAwMDAgICAzMDMgMjc3IDAxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyswMDAwMDAwIDMwMyAyNzcgMDEyCisgMDAwMDAwMworLTAwMDAwMDAgICAzMDMgMjc3IDAxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyswMDAwMDAwIDMwMyAyNzcgMDEyCisgMDAwMDAwMworLTAwMDAwMDAgICAzMDMgMjc3IDAxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyswMDAwMDAwIDMwMyAyNzcgMDEyCisgMDAwMDAwMworLTAwMDAwMDAgICAzMDMgMjc3IDAxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyswMDAwMDAwIDMwMyAyNzcgMDEyCisgMDAwMDAwMworLTAwMDAwMDAgICAzNTcgMjc3IDI3NyAwMTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyswMDAwMDAwIDM1NyAyNzcgMjc3IDAxMgorIDAwMDAwMDQKKy0wMDAwMDAwICAgMzU3IDI3NyAyNzcgMDEyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisrMDAwMDAwMCAzNTcgMjc3IDI3NyAwMTIKKyAwMDAwMDA0CistMDAwMDAwMCAgIDAxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorKzAwMDAwMDAgMDEyCisgMDAwMDAwMQorLTAwMDAwMDAgICAwMTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyswMDAwMDAwIDAxMgorIDAwMDAwMDEKKy0wMDAwMDAwICAgMDEyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisrMDAwMDAwMCAwMTIKKyAwMDAwMDAxCistMDAwMDAwMCAgIDAxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorKzAwMDAwMDAgMDEyCisgMDAwMDAwMQorLTAwMDAwMDAgICAzMDMgMjc3IDAxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyswMDAwMDAwIDMwMyAyNzcgMDEyCisgMDAwMDAwMworLTAwMDAwMDAgICAzMDMgMjc3IDAxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyswMDAwMDAwIDMwMyAyNzcgMDEyCisgMDAwMDAwMworLTAwMDAwMDAgICAzMDMgMjc3IDAxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyswMDAwMDAwIDMwMyAyNzcgMDEyCisgMDAwMDAwMworLTAwMDAwMDAgICAxMDEgMDQwIDMwMiAyNDMgMDQwIDMwNSAyMjIgMDEyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyswMDAwMDAwIDEwMSAwNDAgMzAyIDI0MyAwNDAgMzA1IDIyMiAwMTIKKyAwMDAwMDEwCisgLi91bmljb2RlMy5zdWI6IGxpbmUgMjogNadAM5krxlM4n6LqszogY29tbWFuZCBub3QgZm91bmQKKy01p0AzmSvGUzifouqzCisrJCc1XDI0N0AzXDIzMStcMzA2UzhcMjM3XDI0MlwzNTJcMjYzJworICsgOiAkJzVcMjQ3QDNcMjMxK1wzMDZTOFwyMzdcMjQyXDM1MlwyNjMnCistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoL3J1bi1wdGVzdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoL3J1bi1wdGVzdAppbmRleCAyMDk4ZmE0Li5jNjFmYWJkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC9ydW4tcHRlc3QKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvcnVuLXB0ZXN0CkBAIC0xLDIgKzEsMjIgQEAKICMhL2Jpbi9zaAorCitlbl9VUz1gbG9jYWxlIC1hIHwgZ3JlcCBlbl9VUypgCitmcl9GUj1gbG9jYWxlIC1hIHwgZ3JlcCBmcl9GUipgCitkZV9ERT1gbG9jYWxlIC1hIHwgZ3JlcCBkZV9ERSpgCisKK2lmIFsgLXogIiRlbl9VUyIgXQordGhlbgorICAgICAgICBlY2hvICJXYXJuaW5nOiBUaGUgZW5fVVMqIGxvY2FsZXMgaXMgbmVlZGVkIHRvIHJ1biB0aGUgaW50bC50ZXN0cywgcGxlYXNlIGFkZCBpdC4iCitmaQorIAoraWYgWyAteiAiJGZyX0ZSIiBdCit0aGVuCisgICAgICAgIGVjaG8gIldhcm5pbmc6IFRoZSBmcl9GUiogbG9jYWxlcyBpcyBuZWVkZWQgdG8gcnVuIHRoZSBpbnRsLnRlc3RzLCBwbGVhc2UgYWRkIGl0LiIKK2ZpCisgCitpZiBbIC16ICIkZGVfREUiIF0KK3RoZW4KKyAgICAgICAgZWNobyAiV2FybmluZzogVGhlIGRlX0RFKiBsb2NhbGVzIGlzIG5lZWRlZCB0byBydW4gdGhlIGludGwudGVzdHMsIHBsZWFzZSBhZGQgaXQuIgorZmkKKwogbWFrZSAtayBUSElTX1NIPS9iaW4vYmFzaCBCVUlMRF9ESVI9YHB3ZGAgc3JjZGlyPWBwd2RgICBydW50ZXN0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaF8zLjIuNDguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaF8zLjIuNDguYmIKaW5kZXggZDQyYjI5Mi4uNmI0MDI4ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2hfMy4yLjQ4LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoXzMuMi40OC5iYgpAQCAtMjAsNiArMjAsNyBAQAogICAgICAgICAgICBmaWxlOi8vdGVzdC1vdXRwdXQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKICAgICAgICAgICAgZmlsZTovL2RvbnQtaW5jbHVkZS10YXJnZXQtQ0ZMQUdTLWluLWhvc3QtTERGTEFHUy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zdHJpbmctZm9ybWF0LnBhdGNoIFwKICAgICAgICAgICAiCiAKIFNSQ19VUklbdGFyYmFsbC5tZDVzdW1dID0gIjMzOGRjZjk3NWE5MzY0MGJiM2VhYTg0M2NhNDJlM2Y4IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2hfNC4zLjMwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2hfNC4zLjMwLmJiCmluZGV4IDQ0MjZjZjAuLjc2NTU2MmYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoXzQuMy4zMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaF80LjMuMzAuYmIKQEAgLTE0LDEyICsxNCwyMiBAQAogICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjMtcGF0Y2hlcy9iYXNoNDMtMDM3O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAzNyBcCiAgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuMy1wYXRjaGVzL2Jhc2g0My0wMzg7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDM4IFwKICAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC4zLXBhdGNoZXMvYmFzaDQzLTAzOTthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMzkgXAorICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjMtcGF0Y2hlcy9iYXNoNDMtMDQwO2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDA0MCBcCisgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuMy1wYXRjaGVzL2Jhc2g0My0wNDE7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDQxIFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC4zLXBhdGNoZXMvYmFzaDQzLTA0MjthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwNDIgXAorICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjMtcGF0Y2hlcy9iYXNoNDMtMDQzO2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDA0MyBcCisgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuMy1wYXRjaGVzL2Jhc2g0My0wNDQ7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDQ0IFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC4zLXBhdGNoZXMvYmFzaDQzLTA0NTthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwNDUgXAorICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjMtcGF0Y2hlcy9iYXNoNDMtMDQ2O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDA0NiBcCiAgICAgICAgICAgIGZpbGU6Ly9leGVjdXRlX2NtZC5wYXRjaDtzdHJpcGxldmVsPTAgXAogICAgICAgICAgICBmaWxlOi8vbWtidWlsdGluc19oYXZlX3N0cmluZ2l6ZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9idWlsZC10ZXN0cy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly90ZXN0LW91dHB1dC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgtcnVuLWNvcHJvYy1ydW4taGVyZWRvYy1ydW4tZXhlY3NjcmlwdC1ydW4tdGVzdC1mLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtcnVuLWJ1aWx0aW5zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaGVscC1maXgtcHJpbnRmLWZvcm1hdC1zZWN1cml0eS13YXJuaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1ydW4taW50bC5wYXRjaCBcCiAgICAgICAgICAgICIKIAogU1JDX1VSSVt0YXJiYWxsLm1kNXN1bV0gPSAiYTI3YjNlZTliZTgzYmQzYmE0NDhjMGZmNTJiMjg0NDciCkBAIC00Myw1ICs1MywxOSBAQAogU1JDX1VSSVtwYXRjaDAzOC5zaGEyNTZzdW1dID0gImFkYmVhYTUwMGNhN2E4MjUzNWYwZTg4ZDY3MzY2MTk2M2Y4YTVmY2RjN2FkNjM0NDVlNjhiZjViNDk3ODYzNjciCiBTUkNfVVJJW3BhdGNoMDM5Lm1kNXN1bV0gPSAiYTQ3NzU0ODdhYmU5NTg1MzY3NTFjOGNlNTNjZGY2ZjkiCiBTUkNfVVJJW3BhdGNoMDM5LnNoYTI1NnN1bV0gPSAiYWI5NGRjZWQyMjE1NTQxMDk3NjkxZjYwYzNlYjMyM2NjMjhlZjI1NDk0NjNlNmE1MzM0YmJjYzFlNjFlNzRlYyIKK1NSQ19VUklbcGF0Y2gwNDAubWQ1c3VtXSA9ICI4MGQzNTg3YzU4ODU0ZTIyNjA1NWVmMDk5ZmZlYjUzNSIKK1NSQ19VUklbcGF0Y2gwNDAuc2hhMjU2c3VtXSA9ICI4NGJiMzk2YjkyNjI5OTJjYTU0MjRmZWFiNmVkM2VjMzlmMTkzZWY1Yzc2ZGZlNGE2MmI1NTFiZDhkZDlkNzZiIgorU1JDX1VSSVtwYXRjaDA0MS5tZDVzdW1dID0gIjIwYmY2M2VlZjdjYjQ0MWMwYjFjYzQ5ZWYzMTkxZDAzIgorU1JDX1VSSVtwYXRjaDA0MS5zaGEyNTZzdW1dID0gIjRlYzQzMjk2NmU0MTk4NTI0YTdlMGNkNjg1ZmUyMjJlOTYwNDM3NjljOTYxM2U2Njc0MmFjNDc1ZGIxMzJjMWEiCitTUkNfVVJJW3BhdGNoMDQyLm1kNXN1bV0gPSAiNzA3OTA2NDZhZTYxZTIwN2M5OTVlNDQ5MzEzOTBlNTAiCitTUkNfVVJJW3BhdGNoMDQyLnNoYTI1NnN1bV0gPSAiYWMyMTkzMjJkYjI3OTFkYTg3YTQ5NmVlNmU4ZTU1NDQ4NDY0OTRiZGFhZWEyNjI2MjcwYzJmNzNjMTA0NDkxOSIKK1NSQ19VUklbcGF0Y2gwNDMubWQ1c3VtXSA9ICI4NTVhNDY5NTVjYjI1MTUzNGU4MGI0NzMyYjc0OGUzNyIKK1NSQ19VUklbcGF0Y2gwNDMuc2hhMjU2c3VtXSA9ICI0N2E4YTNjMDA1YjQ2ZTI1ODIxZjRkOGY1Y2NiMDRjMWQ2NTNiMWM4MjljYjQwNTY4ZDU1M2RjNDRmN2E2MTgwIgorU1JDX1VSSVtwYXRjaDA0NC5tZDVzdW1dID0gIjI5NjIzZDMyODJmY2JiMzdlMTE1ODEzNjUwOWI1YmI4IgorU1JDX1VSSVtwYXRjaDA0NC5zaGEyNTZzdW1dID0gIjkzMzg4MjA2MzBiZjY3MzczYjQ0ZDhlYTY4NDA5ZjY1MTYyZWE3YTQ3YjliMjlhY2UwNmEwYWVkMTI1NjdmOTkiCitTUkNfVVJJW3BhdGNoMDQ1Lm1kNXN1bV0gPSAiNDQ3MzI0NGNhNWFiZmQ0YjAxOGVhMjZkYzczZTc0MTIiCitTUkNfVVJJW3BhdGNoMDQ1LnNoYTI1NnN1bV0gPSAiYmE2ZWMzOTc4ZTllYWExZWIzZmFiZGFmM2NjNmZkZjhjNDYwNmFjMWM1OTlmYWFlYjRlMmQ2OTg2NDE1MDAyMyIKK1NSQ19VUklbcGF0Y2gwNDYubWQ1c3VtXSA9ICI3ZTVmYjA5OTkxYzA3NzA3NmI4NmUwZTA1Nzc5ODkxMyIKK1NSQ19VUklbcGF0Y2gwNDYuc2hhMjU2c3VtXSA9ICJiM2I0NTZhNmI2OTBjZDI5MzM1M2YxN2UyMmQ5MmEyMDJiM2M4YmNlNTg3YWU1ZjI2NjdjMjBjOWFiNmY2ODhmIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmxrdG9vbC9ibGt0b29sXzQtNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmxrdG9vbC9ibGt0b29sXzQtNy5iYgppbmRleCBkNjI1MGE5Li40NTUxYzMyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jsa3Rvb2wvYmxrdG9vbF80LTcuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ibGt0b29sL2Jsa3Rvb2xfNC03LmJiCkBAIC05LDcgKzksNyBAQAogCiBERVBFTkRTID0gImdsaWItMi4wIgogCi1TUkNfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9iL2Jsa3Rvb2wvYmxrdG9vbF80Lm9yaWcudGFyLmd6O25hbWU9dGFyYmFsbCBcCitTUkNfVVJJID0gImh0dHA6Ly9zbmFwc2hvdC5kZWJpYW4ub3JnL2FyY2hpdmUvZGViaWFuLzIwMTYwNzI4VDA0MzQ0M1ovcG9vbC9tYWluL2IvJHtCUE59LyR7QlBOfV80Lm9yaWcudGFyLmd6O25hbWU9dGFyYmFsbCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC10eXBvcy1pbi1tYW5wYWdlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDItZml4LXN0cmluZy1lcnJvci5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAzLUZpeC0zLWQtYXJndW1lbnQtZm9yLUJMS1JPU0VULWl0LW11c3QtYmUtY29uc3QtaW50LnBhdGNoIFwKQEAgLTIwLDYgKzIwLDcgQEAKIAogIyBmb3IgdGhpcyBwYWNrYWdlIHdlJ3JlIG1vc3RseSBpbnRlcmVzdGVkIGluIHRyYWNraW5nIGRlYmlhbiBwYXRjaGVzLAogIyBhbmQgbm90IGluIHRoZSB1cHN0cmVhbSB2ZXJzaW9uIHdoZXJlIGFsbCBkZXZlbG9wbWVudCBoYXMgZWZmZWN0aXZlbHkgc3RvcHBlZAorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9iL2Jsa3Rvb2wvIgogVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+KChcZCtcLiopKyktKChcZCtcLiopKykpXC4oZGlmZnxkZWJpYW5cLnRhcilcLihnenx4eikiCiAKIFMgPSAiJHtXT1JLRElSfS8ke0JQTn0tNC5vcmlnIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ieWFjYy9ieWFjY18yMDE1MDcxMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2NfMjAxNTA3MTEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1YjU0NTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ieWFjYy9ieWFjY18yMDE1MDcxMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLSMgU2lnaC4gVGhpcyBpcyBvbmUgb2YgdGhvc2UgcGxhY2VzIHdoZXJlIGV2ZXJ5b25lIGxpY2Vuc2VzIGl0IGRpZmZlcmVudGx5LiBTb21lb25lCi0jIGV2ZW4gYXBwbHkgVUNCIHRvIGl0IChGcmVlL05ldC9PcGVuQlNEKS4gVGhlIG1haW50YWluZXIgc3RhdGVzIHRoYXQ6Ci0jICJJJ3ZlIGZvdW5kIG5vIHJlbGlhYmxlIHNvdXJjZSB3aGljaCBzdGF0ZXMgdGhhdCBieWFjYyBtdXN0IGJlYXIgYSBVQ0IgY29weXJpZ2h0LiIKLSMgU2V0dGluZyB0byBQRCBhcyB0aGlzIGlzIHdoYXQgdGhlIHVwc3RyZWFtIGhhcyBpdCBhcy4KLQotTElDRU5TRSA9ICJQRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3BhY2thZ2UvZGViaWFuL2NvcHlyaWdodDttZDU9YzUyZmIyZDFiM2Y3NWIzYjc1MzQ5Mjc4MDdhMWI3MTQiCi1yZXF1aXJlIGJ5YWNjLmluYwotCi1TUkNfVVJJW21kNXN1bV0gPSAiMjcwMDQwMTAzMDU4M2M0ZTkxNjlhYzdlYTdkMDhkZTgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzM1NGU0ZWUxNGM0YTFiZjExZTU1ZGRlOTI3NTAxMWQxNDg4N2VmMDY2NDA2YTA4OGI2ZmE1NmNhZjAzOTI0OCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2NfMjAxNjA2MDYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2J5YWNjL2J5YWNjXzIwMTYwNjA2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4MTI5ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2J5YWNjL2J5YWNjXzIwMTYwNjA2LmJiCkBAIC0wLDAgKzEsMTIgQEAKKyMgU2lnaC4gVGhpcyBpcyBvbmUgb2YgdGhvc2UgcGxhY2VzIHdoZXJlIGV2ZXJ5b25lIGxpY2Vuc2VzIGl0IGRpZmZlcmVudGx5LiBTb21lb25lCisjIGV2ZW4gYXBwbHkgVUNCIHRvIGl0IChGcmVlL05ldC9PcGVuQlNEKS4gVGhlIG1haW50YWluZXIgc3RhdGVzIHRoYXQ6CisjICJJJ3ZlIGZvdW5kIG5vIHJlbGlhYmxlIHNvdXJjZSB3aGljaCBzdGF0ZXMgdGhhdCBieWFjYyBtdXN0IGJlYXIgYSBVQ0IgY29weXJpZ2h0LiIKKyMgU2V0dGluZyB0byBQRCBhcyB0aGlzIGlzIHdoYXQgdGhlIHVwc3RyZWFtIGhhcyBpdCBhcy4KKworTElDRU5TRSA9ICJQRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3BhY2thZ2UvZGViaWFuL2NvcHlyaWdodDttZDU9NzQ1MzNkMzJmZmQzOGJjYTRjYmYxZjEzMDVmOGJjNjAiCityZXF1aXJlIGJ5YWNjLmluYworCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkNTI3YzgxMWIzNjBmMDRhOGM1ZjVhMGE5MDYyNTk2NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjYzhmZGNlZDQ4NmNiNzBjZWM3YTdjOTM1OGRlODM2YmZkMjY3ZDE5ZDY0NTY3NjBiYjQ3MjFjY2ZlYTVhYzkxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iemlwMi9iemlwMi0xLjAuNi9DVkUtMjAxNi0zMTg5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iemlwMi9iemlwMi0xLjAuNi9DVkUtMjAxNi0zMTg5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkMGMzYTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2J6aXAyL2J6aXAyLTEuMC42L0NWRS0yMDE2LTMxODkucGF0Y2gKQEAgLTAsMCArMSwxOCBAQAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAoraHR0cHM6Ly9idWd6aWxsYS5zdXNlLmNvbS9hdHRhY2htZW50LmNnaT9pZD02ODEzMzQKKworQ1ZFOiBDVkUtMjAxNi0zMTg5CitTaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KKworSW5kZXg6IGJ6aXAyLTEuMC42L2J6aXAycmVjb3Zlci5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYnppcDItMS4wLjYub3JpZy9iemlwMnJlY292ZXIuYworKysrIGJ6aXAyLTEuMC42L2J6aXAycmVjb3Zlci5jCitAQCAtNDU3LDYgKzQ1Nyw3IEBAIEludDMyIG1haW4gKCBJbnQzMiBhcmdjLCBDaGFyKiogYXJndiApCisgICAgICAgICAgICAgYnNQdXRVQ2hhciAoIGJzV3IsIDB4NTAgKTsgYnNQdXRVQ2hhciAoIGJzV3IsIDB4OTAgKTsKKyAgICAgICAgICAgICBic1B1dFVJbnQzMiAoIGJzV3IsIGJsb2NrQ1JDICk7CisgICAgICAgICAgICAgYnNDbG9zZSAoIGJzV3IgKTsKKysgICAgICAgICAgICBvdXRGaWxlID0gTlVMTDsKKyAgICAgICAgICB9CisgICAgICAgICAgaWYgKHdyQmxvY2sgPj0gcmJDdHIpIGJyZWFrOworICAgICAgICAgIHdyQmxvY2srKzsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnppcDIvYnppcDJfMS4wLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2J6aXAyL2J6aXAyXzEuMC42LmJiCmluZGV4IGY3MTdkODUuLmVmN2JjODkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnppcDIvYnppcDJfMS4wLjYuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iemlwMi9iemlwMl8xLjAuNi5iYgpAQCAtMTIsNyArMTIsOSBAQAogICAgICAgICAgICBmaWxlOi8vZml4LWJ1bnppcDItcXQtcmV0dXJucy0wLWZvci1jb3JydXB0LWFyY2hpdmVzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5hYztzdWJkaXI9JHtCUH0gXAogICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUuYW07c3ViZGlyPSR7QlB9IFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCIKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi0zMTg5LnBhdGNoIFwKKyAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiMDBiNTE2ZjQ3MDRkNGE3Y2I1MGExZDk3ZTZlOGUxNWIiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTI4NDhmMzRmY2Q1ZDZjZjQ3ZGVmMDA0NjFmY2I1MjhhMDQ4NGQ4ZWRlZjgyMDhkNmQyZTI5MDlkYzYxZDljZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvX3YyLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvX3YyLmluYwppbmRleCAxYmRjNjE3Li4zMWFkYjcxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpb192Mi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcGlvL2NwaW9fdjIuaW5jCkBAIC0zOSwzICszOSw1IEBACiAKIEFMVEVSTkFUSVZFX1BSSU9SSVRZW3JtdF0gPSAiNTAiCiBBTFRFUk5BVElWRV9MSU5LX05BTUVbcm10XSA9ICIke2Jhc2Vfc2JpbmRpcn0vcm10IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3JhY2tsaWIvY3JhY2tsaWIvMDAwMS1BcHBseS1wYXRjaC10by1maXgtQ1ZFLTIwMTYtNjMxOC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3JhY2tsaWIvY3JhY2tsaWIvMDAwMS1BcHBseS1wYXRjaC10by1maXgtQ1ZFLTIwMTYtNjMxOC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjUxYWM5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcmFja2xpYi9jcmFja2xpYi8wMDAxLUFwcGx5LXBhdGNoLXRvLWZpeC1DVkUtMjAxNi02MzE4LnBhdGNoCkBAIC0wLDAgKzEsMTA1IEBACitGcm9tIDQ3ZTVkZWM1MjFhYjYyNDNjOWIyNDlkZDY1YjkzZDIzMmQ5MGQ2YjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYW4gRGl0dGJlcm5lciA8amFuQGRpdHRiZXJuZXIuaW5mbz4KK0RhdGU6IFRodSwgMjUgQXVnIDIwMTYgMTc6MTM6NDkgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gQXBwbHkgcGF0Y2ggdG8gZml4IENWRS0yMDE2LTYzMTgKKworVGhpcyBwYXRjaCBmaXhlcyBhbiBpc3N1ZSB3aXRoIGEgc3RhY2stYmFzZWQgYnVmZmVyIG92ZXJmbG93IHdoZW4KK3BhcnNpbmcgbGFyZ2UgR0VDT1MgZmllbGQuIFNlZQoraHR0cHM6Ly9jdmUubWl0cmUub3JnL2NnaS1iaW4vY3ZlbmFtZS5jZ2k/bmFtZT1DVkUtMjAxNi02MzE4IGFuZAoraHR0cHM6Ly9zZWN1cml0eS10cmFja2VyLmRlYmlhbi5vcmcvdHJhY2tlci9DVkUtMjAxNi02MzE4IGZvciBtb3JlCitpbmZvcm1hdGlvbi4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2NyYWNrbGliL2NyYWNrbGliL2NvbW1pdC80N2U1ZGVjNTIxYWI2MjQzYzliMjQ5ZGQ2NWI5M2QyMzJkOTBkNmIxXQorQ1ZFOiBDVkUtMjAxNi02MzE4CitTaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgorLS0tCisgbGliL2Zhc2Npc3QuYyB8IDU3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWIvZmFzY2lzdC5jIGIvbGliL2Zhc2Npc3QuYworaW5kZXggYTk5NjUwOS4uZDRkZWIxNSAxMDA2NDQKKy0tLSBhL2xpYi9mYXNjaXN0LmMKKysrKyBiL2xpYi9mYXNjaXN0LmMKK0BAIC01MDIsNyArNTAyLDcgQEAgRmFzY2lzdEdlY29zVXNlcihjaGFyICpwYXNzd29yZCwgY29uc3QgY2hhciAqdXNlciwgY29uc3QgY2hhciAqZ2Vjb3MpCisgICAgIGNoYXIgZ2J1ZmZlcltTVFJJTkdTSVpFXTsKKyAgICAgY2hhciB0YnVmZmVyW1NUUklOR1NJWkVdOworICAgICBjaGFyICp1d29yZHNbU1RSSU5HU0laRV07CistICAgIGNoYXIgbG9uZ2J1ZmZlcltTVFJJTkdTSVpFICogMl07CisrICAgIGNoYXIgbG9uZ2J1ZmZlcltTVFJJTkdTSVpFXTsKKyAKKyAgICAgaWYgKGdlY29zID09IE5VTEwpCisgCWdlY29zID0gIiI7CitAQCAtNTgzLDM4ICs1ODMsNDcgQEAgRmFzY2lzdEdlY29zVXNlcihjaGFyICpwYXNzd29yZCwgY29uc3QgY2hhciAqdXNlciwgY29uc3QgY2hhciAqZ2Vjb3MpCisgICAgIHsKKyAJZm9yIChpID0gMDsgaSA8IGo7IGkrKykKKyAJeworLQkgICAgc3RyY3B5KGxvbmdidWZmZXIsIHV3b3Jkc1tpXSk7CistCSAgICBzdHJjYXQobG9uZ2J1ZmZlciwgdXdvcmRzW2pdKTsKKy0KKy0JICAgIGlmIChHVHJ5KGxvbmdidWZmZXIsIHBhc3N3b3JkKSkKKysJICAgIGlmIChzdHJsZW4odXdvcmRzW2ldKSArIHN0cmxlbih1d29yZHNbal0pIDwgU1RSSU5HU0laRSkKKyAJICAgIHsKKy0JCXJldHVybiBfKCJpdCBpcyBkZXJpdmVkIGZyb20geW91ciBwYXNzd29yZCBlbnRyeSIpOworLQkgICAgfQorKwkJc3RyY3B5KGxvbmdidWZmZXIsIHV3b3Jkc1tpXSk7CisrCQlzdHJjYXQobG9uZ2J1ZmZlciwgdXdvcmRzW2pdKTsKKyAKKy0JICAgIHN0cmNweShsb25nYnVmZmVyLCB1d29yZHNbal0pOworLQkgICAgc3RyY2F0KGxvbmdidWZmZXIsIHV3b3Jkc1tpXSk7CisrCQlpZiAoR1RyeShsb25nYnVmZmVyLCBwYXNzd29yZCkpCisrCQl7CisrCQkgICAgcmV0dXJuIF8oIml0IGlzIGRlcml2ZWQgZnJvbSB5b3VyIHBhc3N3b3JkIGVudHJ5Iik7CisrCQl9CisgCistCSAgICBpZiAoR1RyeShsb25nYnVmZmVyLCBwYXNzd29yZCkpCistCSAgICB7CistCQlyZXR1cm4gXygiaXQncyBkZXJpdmVkIGZyb20geW91ciBwYXNzd29yZCBlbnRyeSIpOworLQkgICAgfQorKwkJc3RyY3B5KGxvbmdidWZmZXIsIHV3b3Jkc1tqXSk7CisrCQlzdHJjYXQobG9uZ2J1ZmZlciwgdXdvcmRzW2ldKTsKKyAKKy0JICAgIGxvbmdidWZmZXJbMF0gPSB1d29yZHNbaV1bMF07CistCSAgICBsb25nYnVmZmVyWzFdID0gJ1wwJzsKKy0JICAgIHN0cmNhdChsb25nYnVmZmVyLCB1d29yZHNbal0pOworKwkJaWYgKEdUcnkobG9uZ2J1ZmZlciwgcGFzc3dvcmQpKQorKwkJeworKwkJICAgcmV0dXJuIF8oIml0J3MgZGVyaXZlZCBmcm9tIHlvdXIgcGFzc3dvcmQgZW50cnkiKTsKKysJCX0KKysJICAgIH0KKyAKKy0JICAgIGlmIChHVHJ5KGxvbmdidWZmZXIsIHBhc3N3b3JkKSkKKysJICAgIGlmIChzdHJsZW4odXdvcmRzW2pdKSA8IFNUUklOR1NJWkUgLSAxKQorIAkgICAgeworLQkJcmV0dXJuIF8oIml0IGlzIGRlcml2YWJsZSBmcm9tIHlvdXIgcGFzc3dvcmQgZW50cnkiKTsKKysJCWxvbmdidWZmZXJbMF0gPSB1d29yZHNbaV1bMF07CisrCQlsb25nYnVmZmVyWzFdID0gJ1wwJzsKKysJCXN0cmNhdChsb25nYnVmZmVyLCB1d29yZHNbal0pOworKworKwkJaWYgKEdUcnkobG9uZ2J1ZmZlciwgcGFzc3dvcmQpKQorKwkJeworKwkJICAgIHJldHVybiBfKCJpdCBpcyBkZXJpdmFibGUgZnJvbSB5b3VyIHBhc3N3b3JkIGVudHJ5Iik7CisrCQl9CisgCSAgICB9CisgCistCSAgICBsb25nYnVmZmVyWzBdID0gdXdvcmRzW2pdWzBdOworLQkgICAgbG9uZ2J1ZmZlclsxXSA9ICdcMCc7CistCSAgICBzdHJjYXQobG9uZ2J1ZmZlciwgdXdvcmRzW2ldKTsKKy0KKy0JICAgIGlmIChHVHJ5KGxvbmdidWZmZXIsIHBhc3N3b3JkKSkKKysJICAgIGlmIChzdHJsZW4odXdvcmRzW2ldKSA8IFNUUklOR1NJWkUgLSAxKQorIAkgICAgeworLQkJcmV0dXJuIF8oIml0J3MgZGVyaXZhYmxlIGZyb20geW91ciBwYXNzd29yZCBlbnRyeSIpOworKwkJbG9uZ2J1ZmZlclswXSA9IHV3b3Jkc1tqXVswXTsKKysJCWxvbmdidWZmZXJbMV0gPSAnXDAnOworKwkJc3RyY2F0KGxvbmdidWZmZXIsIHV3b3Jkc1tpXSk7CisrCisrCQlpZiAoR1RyeShsb25nYnVmZmVyLCBwYXNzd29yZCkpCisrCQl7CisrCQkgICAgcmV0dXJuIF8oIml0J3MgZGVyaXZhYmxlIGZyb20geW91ciBwYXNzd29yZCBlbnRyeSIpOworKwkJfQorIAkgICAgfQorIAl9CisgICAgIH0KKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcmFja2xpYi9jcmFja2xpYl8yLjkuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3JhY2tsaWIvY3JhY2tsaWJfMi45LjUuYmIKaW5kZXggM2JkM2Y5My4uODI5OTUyMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcmFja2xpYi9jcmFja2xpYl8yLjkuNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NyYWNrbGliL2NyYWNrbGliXzIuOS41LmJiCkBAIC00LDE1ICs0LDEzIEBACiBMSUNFTlNFID0gIkxHUEx2Mi4xKyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTElCO21kNT1lM2VkYTAxZDk4MTVmOGQyNGFhZTJkYmQ4OWI2OGIwNiIKIAotREVQRU5EUyA9ICJjcmFja2xpYi1uYXRpdmUgemxpYiBweXRob24iCi1SREVQRU5EXyR7UE59LXB5dGhvbiArPSAicHl0aG9uIgorREVQRU5EUyA9ICJjcmFja2xpYi1uYXRpdmUgemxpYiIKIAotUEFDS0FHRVMgKz0gIiR7UE59LXB5dGhvbiIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC1weXRob24gLS1saWJkaXI9JHtiYXNlX2xpYmRpcn0iCitFWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LXB5dGhvbiAtLWxpYmRpcj0ke2Jhc2VfbGliZGlyfSIKIAogU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vY3JhY2tsaWIvY3JhY2tsaWItJHtQVn0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtcGFja2xpYi5jLXN1cHBvcnQtZGljdGlvbmFyeS1ieXRlLW9yZGVyLWRlcGVuZGVudC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFwcGx5LXBhdGNoLXRvLWZpeC1DVkUtMjAxNi02MzE4LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDItY3Jha2xpYi1maXgtdGVzdG51bS1hbmQtdGVzdHN0ci1mYWlsZWQucGF0Y2giCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICIzNzY3OTBhOTVjMWZiNjQ1ZTU5ZTZlOTgwM2M3ODU4MiIKQEAgLTIxLDI3ICsxOSwxMSBAQAogVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvY3JhY2tsaWIvZmlsZXMvY3JhY2tsaWIvIgogVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL2NyYWNrbGliLyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKS8iCiAKLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcHl0aG9ubmF0aXZlIHB5dGhvbi1kaXIKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQKIAogZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewogCWNyZWF0ZS1jcmFja2xpYi1kaWN0IC1vICR7RH0ke2RhdGFkaXJ9L2NyYWNrbGliL3B3X2RpY3QgJHtEfSR7ZGF0YWRpcn0vY3JhY2tsaWIvY3JhY2tsaWItc21hbGwKIH0KIAotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0Jc3JjX2Rpcj0iJHtEfSR7YmFzZV9saWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcyIKLQlybSAtZiAkc3JjX2Rpci90ZXN0X2NyYWNrbGliLnB5KgotCi0JaWYgWyAiJHtiYXNlX2xpYmRpcn0iICE9ICIke2xpYmRpcn0iIF0gOyB0aGVuCi0JICAgIyBNb3ZlIHB5dGhvbiBmaWxlcyBmcm9tICR7YmFzZV9saWJkaXJ9IHRvICR7bGliZGlyfSBzaW5jZSB1c2VkIC0tbGliZGlyPSR7YmFzZV9saWJkaXJ9Ci0JICAgaW5zdGFsbCAtZCAtbSAwNzU1ICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8KLQkgICBtdiAkc3JjX2Rpci8qICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfQotCSAgIHJtIC1mciAke0R9JHtiYXNlX2xpYmRpcn0vJHtQWVRIT05fRElSfQotCWZpCi19Ci0KIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKIAotRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L2NyYWNrbGliLnB5KiBcCi0JJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vX2NyYWNrbGliLioiCi0KLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vX2NyYWNrbGliLmEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Nyb25pZS9jcm9uaWUvY3JvbmRfcGFtX2NvbmZpZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3JvbmllL2Nyb25pZS9jcm9uZF9wYW1fY29uZmlnLnBhdGNoCmluZGV4IDY3NTg3MmMuLjZjOTI4MTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3JvbmllL2Nyb25pZS9jcm9uZF9wYW1fY29uZmlnLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3JvbmllL2Nyb25pZS9jcm9uZF9wYW1fY29uZmlnLnBhdGNoCkBAIC00LDE2ICs0LDE5IEBACiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+Ci0tLS0gY3JvbmllLTEuNC43L3BhbS9jcm9uZC5vcmlnCTIwMTAtMTItMTYgMTY6NTk6MDIuMDAwMDAwMDAwICswODAwCi0rKysgY3JvbmllLTEuNC43L3BhbS9jcm9uZAkyMDExLTA3LTIwIDA5OjQ3OjE2LjA4MDgxOTIwMyArMDgwMAotQEAgLTQsNyArNCw3IEBACitJbmRleDogY3JvbmllLTEuNS4xL3BhbS9jcm9uZAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGNyb25pZS0xLjUuMS5vcmlnL3BhbS9jcm9uZAorKysrIGNyb25pZS0xLjUuMS9wYW0vY3JvbmQKK0BAIC00LDggKzQsOCBAQAogICMKLSAjIE5vIFBBTSBhdXRoZW50aWNhdGlvbiBjYWxsZWQsIGF1dGggbW9kdWxlcyBub3QgbmVlZGVkCisgIyBBbHRob3VnaCBubyBQQU0gYXV0aGVudGljYXRpb24gaXMgY2FsbGVkLCBhdXRoIG1vZHVsZXMKKyAjIGFyZSB1c2VkIGZvciBjcmVkZW50aWFsIHNldHRpbmcKKy1hdXRoICAgICAgIGluY2x1ZGUgICAgcGFzc3dvcmQtYXV0aAorK2F1dGggICAgICAgaW5jbHVkZSAgICBjb21tb24tYXV0aAogIGFjY291bnQgICAgcmVxdWlyZWQgICBwYW1fYWNjZXNzLnNvCiAtYWNjb3VudCAgICBpbmNsdWRlICAgIHBhc3N3b3JkLWF1dGgKICthY2NvdW50ICAgIGluY2x1ZGUgICAgY29tbW9uLWFjY291bnQKICBzZXNzaW9uICAgIHJlcXVpcmVkICAgcGFtX2xvZ2ludWlkLnNvCiAtc2Vzc2lvbiAgICBpbmNsdWRlICAgIHBhc3N3b3JkLWF1dGgKLS1hdXRoICAgICAgIGluY2x1ZGUgICAgcGFzc3dvcmQtYXV0aAogK3Nlc3Npb24gICAgaW5jbHVkZSAgICBjb21tb24tc2Vzc2lvbi1ub25pbnRlcmFjdGl2ZQotK2F1dGggICAgICAgaW5jbHVkZSAgICBjb21tb24tYXV0aApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcm9uaWUvY3JvbmllXzEuNS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcm9uaWUvY3JvbmllXzEuNS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OTc1MDFhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3JvbmllL2Nyb25pZV8xLjUuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLVNVTU1BUlkgPSAiQ3JvbiBkYWVtb24gZm9yIGV4ZWN1dGluZyBwcm9ncmFtcyBhdCBzZXQgdGltZXMiCi1ERVNDUklQVElPTiA9ICJDcm9uaWUgY29udGFpbnMgdGhlIHN0YW5kYXJkIFVOSVggZGFlbW9uIGNyb25kIHRoYXQgcnVucyBcCi1zcGVjaWZpZWQgcHJvZ3JhbXMgYXQgc2NoZWR1bGVkIHRpbWVzIGFuZCByZWxhdGVkIHRvb2xzLiBJdCBpcyBiYXNlZCBvbiB0aGUgXAotb3JpZ2luYWwgY3JvbiBhbmQgaGFzIHNlY3VyaXR5IGFuZCBjb25maWd1cmF0aW9uIGVuaGFuY2VtZW50cyBsaWtlIHRoZSBcCi1hYmlsaXR5IHRvIHVzZSBwYW0gYW5kIFNFTGludXguIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9mZWRvcmFob3N0ZWQub3JnL2Nyb25pZS8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbSIKLQotIyBJbnRlcm5ldCBTeXN0ZW1zIENvbnNvcnRpdW0gTGljZW5zZQotTElDRU5TRSA9ICJJU0MgJiBCU0QtMy1DbGF1c2UgJiBCU0QtMi1DbGF1c2UgJiBHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kZDJhNTkyMTcwNzYwZTEzODZjNzY5ZTEwNDNiMzcyMiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvY3Jvbi5jO2VuZGxpbmU9MjA7bWQ1PWI0MjVjMzM0MjY1MDI2MTc3MTI4MzUzYTE0MjYzM2I0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9wb3Blbi5jO2JlZ2lubGluZT0zO2VuZGxpbmU9MzE7bWQ1PWVkZDUwNzQyZDhkZWY3MTJlOTQ3MmRiYTM1MzY2OGE5IgotCi1TRUNUSU9OID0gInV0aWxzIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZmVkb3JhaG9zdGVkLm9yZy9yZWxlYXNlcy9jL3IvY3JvbmllL2Nyb25pZS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vY3JvbmQuaW5pdCBcCi0gICAgICAgICAgIGZpbGU6Ly9jcm9udGFiIFwKLSAgICAgICAgICAgZmlsZTovL2Nyb25kLnNlcnZpY2UgXAotICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICcke1BBTV9TUkNfVVJJfScsICcnLCBkKX0iCi0KLVBBTV9TUkNfVVJJID0gImZpbGU6Ly9jcm9uZF9wYW1fY29uZmlnLnBhdGNoIgotUEFNX0RFUFMgPSAibGlicGFtIGxpYnBhbS1ydW50aW1lIHBhbS1wbHVnaW4tYWNjZXNzIHBhbS1wbHVnaW4tbG9naW51aWQiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5ZGI3NWUxODg0ZDgzYTQ1ZTAwMmQxNDVjNmM1NGQ0NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5Y2YwZTNmNGY1MDQyYTljMDk0MTNkNjJjOGUwYzA1NWUxMjQwMWY3MGIxMTI0NjVmMGY4MWYyYzg0ZWJmYjNmIgotCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCB1c2VyYWRkIHN5c3RlbWQKLQotUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtJywgJycsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1thdWRpdF0gPSAiLS13aXRoLWF1ZGl0LC0td2l0aG91dC1hdWRpdCxhdWRpdCwiCi1QQUNLQUdFQ09ORklHW3BhbV0gPSAiLS13aXRoLXBhbSwtLXdpdGhvdXQtcGFtLGxpYnBhbSwke1BBTV9ERVBTfSIKLQotSU5JVFNDUklQVF9OQU1FID0gImNyb25kIgotSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgOTAgMiAzIDQgNSAuIHN0b3AgNjAgMCAxIDYgLiIKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKLUdST1VQQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIGNyb250YWIiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJjcm9uZC5zZXJ2aWNlIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcvCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCi0JaW5zdGFsbCAtbSAwNjQ0ICR7U30vY3JvbmQuc3lzY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9jcm9uZAotCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2Nyb25kLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2Nyb25kCi0KLQkjIGluc3RhbGwgc3lzdGVtZCB1bml0IGZpbGVzCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2Nyb25kLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlzZWQgLWkgLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCi0JICAgICAgIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKLQkgICAgICAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vY3JvbmQuc2VydmljZQotCi0JIyBiZWxvdyBhcmUgbmVjZXNzYXJ5IGZvciBhIGNvbXBsZXRlIGNyb24gZW52aXJvbm1lbnQKLQlpbnN0YWxsIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3Nwb29sL2Nyb24KLQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9jcm9udGFiICR7RH0ke3N5c2NvbmZkaXJ9LwotCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uZAotCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uaG91cmx5Ci0JbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kYWlseQotCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24ud2Vla2x5Ci0JbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5tb250aGx5Ci0JdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kZW55Ci0KLQkjIGJlbG93IHNldHRpbmcgaXMgbmVjZXNzYXJ5IHRvIGFsbG93IG5vcm1hbCB1c2VyIHVzaW5nIGNyb250YWIKLQotCSMgc2V0Z2lkIGZvciBjcm9udGFiIGJpbmFyeQotCWNob3duIHJvb3Q6Y3JvbnRhYiAke0R9JHtiaW5kaXJ9L2Nyb250YWIKLQljaG1vZCAyNzU1ICR7RH0ke2JpbmRpcn0vY3JvbnRhYgotCi0JIyBhbGxvdyAnY3JvbnRhYicgZ3JvdXAgd3JpdGUgdG8gL3Zhci9zcG9vbC9jcm9uCi0JY2hvd24gcm9vdDpjcm9udGFiICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3Nwb29sL2Nyb24KLQljaG1vZCA3NzAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vc3Bvb2wvY3JvbgotCi0JY2htb2QgNjAwICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb250YWIKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vY3JvbioiCi1DT05GRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vY3JvbnRhYiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3JvbmllL2Nyb25pZV8xLjUuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3JvbmllL2Nyb25pZV8xLjUuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OWIyYmI1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcm9uaWUvY3JvbmllXzEuNS4xLmJiCkBAIC0wLDAgKzEsODEgQEAKK1NVTU1BUlkgPSAiQ3JvbiBkYWVtb24gZm9yIGV4ZWN1dGluZyBwcm9ncmFtcyBhdCBzZXQgdGltZXMiCitERVNDUklQVElPTiA9ICJDcm9uaWUgY29udGFpbnMgdGhlIHN0YW5kYXJkIFVOSVggZGFlbW9uIGNyb25kIHRoYXQgcnVucyBcCitzcGVjaWZpZWQgcHJvZ3JhbXMgYXQgc2NoZWR1bGVkIHRpbWVzIGFuZCByZWxhdGVkIHRvb2xzLiBJdCBpcyBiYXNlZCBvbiB0aGUgXAorb3JpZ2luYWwgY3JvbiBhbmQgaGFzIHNlY3VyaXR5IGFuZCBjb25maWd1cmF0aW9uIGVuaGFuY2VtZW50cyBsaWtlIHRoZSBcCithYmlsaXR5IHRvIHVzZSBwYW0gYW5kIFNFTGludXguIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9mZWRvcmFob3N0ZWQub3JnL2Nyb25pZS8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbSIKKworIyBJbnRlcm5ldCBTeXN0ZW1zIENvbnNvcnRpdW0gTGljZW5zZQorTElDRU5TRSA9ICJJU0MgJiBCU0QtMy1DbGF1c2UgJiBCU0QtMi1DbGF1c2UgJiBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kZDJhNTkyMTcwNzYwZTEzODZjNzY5ZTEwNDNiMzcyMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvY3Jvbi5jO2VuZGxpbmU9MjA7bWQ1PWI0MjVjMzM0MjY1MDI2MTc3MTI4MzUzYTE0MjYzM2I0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9wb3Blbi5jO2JlZ2lubGluZT0zO2VuZGxpbmU9MzE7bWQ1PWVkZDUwNzQyZDhkZWY3MTJlOTQ3MmRiYTM1MzY2OGE5IgorCitTRUNUSU9OID0gInV0aWxzIgorCitTUkNfVVJJID0gImh0dHBzOi8vZmVkb3JhaG9zdGVkLm9yZy9yZWxlYXNlcy9jL3IvY3JvbmllL2Nyb25pZS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vY3JvbmQuaW5pdCBcCisgICAgICAgICAgIGZpbGU6Ly9jcm9udGFiIFwKKyAgICAgICAgICAgZmlsZTovL2Nyb25kLnNlcnZpY2UgXAorICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICcke1BBTV9TUkNfVVJJfScsICcnLCBkKX0iCisKK1BBTV9TUkNfVVJJID0gImZpbGU6Ly9jcm9uZF9wYW1fY29uZmlnLnBhdGNoIgorUEFNX0RFUFMgPSAibGlicGFtIGxpYnBhbS1ydW50aW1lIHBhbS1wbHVnaW4tYWNjZXNzIHBhbS1wbHVnaW4tbG9naW51aWQiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI5MTBlNmVmZmNjMDMyOTk4YjBhNDlmYmQ0NjMyMmUxOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2YzczNjY2MTAyYTZiNWQzNWUyZWFmMWJkMDY5MjVmMmQ0YjBjZWY4ZDMzMjNjMzcyODZkZGEzMDg5YTg1MzM4IgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCB1c2VyYWRkIHN5c3RlbWQKKworUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtJywgJycsIGQpfSIKKworUEFDS0FHRUNPTkZJR1thdWRpdF0gPSAiLS13aXRoLWF1ZGl0LC0td2l0aG91dC1hdWRpdCxhdWRpdCwiCitQQUNLQUdFQ09ORklHW3BhbV0gPSAiLS13aXRoLXBhbSwtLXdpdGhvdXQtcGFtLGxpYnBhbSwke1BBTV9ERVBTfSIKKworSU5JVFNDUklQVF9OQU1FID0gImNyb25kIgorSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgOTAgMiAzIDQgNSAuIHN0b3AgNjAgMCAxIDYgLiIKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK0dST1VQQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIGNyb250YWIiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJjcm9uZC5zZXJ2aWNlIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcvCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCisJaW5zdGFsbCAtbSAwNjQ0ICR7U30vY3JvbmQuc3lzY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9jcm9uZAorCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2Nyb25kLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2Nyb25kCisKKwkjIGluc3RhbGwgc3lzdGVtZCB1bml0IGZpbGVzCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2Nyb25kLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlzZWQgLWkgLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCisJICAgICAgIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKKwkgICAgICAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vY3JvbmQuc2VydmljZQorCisJIyBiZWxvdyBhcmUgbmVjZXNzYXJ5IGZvciBhIGNvbXBsZXRlIGNyb24gZW52aXJvbm1lbnQKKwlpbnN0YWxsIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3Nwb29sL2Nyb24KKwlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9jcm9udGFiICR7RH0ke3N5c2NvbmZkaXJ9LworCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uZAorCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uaG91cmx5CisJbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kYWlseQorCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24ud2Vla2x5CisJbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5tb250aGx5CisJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kZW55CisKKwkjIGJlbG93IHNldHRpbmcgaXMgbmVjZXNzYXJ5IHRvIGFsbG93IG5vcm1hbCB1c2VyIHVzaW5nIGNyb250YWIKKworCSMgc2V0Z2lkIGZvciBjcm9udGFiIGJpbmFyeQorCWNob3duIHJvb3Q6Y3JvbnRhYiAke0R9JHtiaW5kaXJ9L2Nyb250YWIKKwljaG1vZCAyNzU1ICR7RH0ke2JpbmRpcn0vY3JvbnRhYgorCisJIyBhbGxvdyAnY3JvbnRhYicgZ3JvdXAgd3JpdGUgdG8gL3Zhci9zcG9vbC9jcm9uCisJY2hvd24gcm9vdDpjcm9udGFiICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3Nwb29sL2Nyb24KKwljaG1vZCA3NzAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vc3Bvb2wvY3JvbgorCisJY2htb2QgNjAwICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb250YWIKK30KKworRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vY3JvbioiCitDT05GRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vY3JvbnRhYiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLmluYwppbmRleCA0YjJkMjE0Li4wMmI2MzU4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMuaW5jCkBAIC0zLDEzICszLDEzIEBACiBMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyIgogREVQRU5EUyA9ICJnbnV0bHMgbGlicG5nIGpwZWcgZGJ1cyBkYnVzLWdsaWIgemxpYiBsaWJ1c2IiCiAKLVNSQ19VUkkgPSAiaHR0cHM6Ly93d3cuY3Vwcy5vcmcvc29mdHdhcmUvJHtQVn0vJHtCUH0tc291cmNlLnRhci5iejIgXAorU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9yZWxlYXNlcy9kb3dubG9hZC9yZWxlYXNlLSR7UFZ9LyR7QlB9LXNvdXJjZS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vdXNlX2VjaG9fb25seV9pbl9pbml0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtZG9uLXQtdHJ5LXRvLXJ1bi1nZW5lcmF0ZWQtYmluYXJpZXMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vY3Vwc19zZXJ2ZXJiaW4ucGF0Y2ggXAogCSAgIgogCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5jdXBzLm9yZy9zb2Z0d2FyZS5waHAiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcmVsZWFzZXMiCiBVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJjdXBzLSg/UDxwdmVyPlxkK1wuXGQrKFwuXGQrKT8pLXNvdXJjZS50YXIiCiAKIExFQURfU09OQU1FID0gImxpYmN1cHNkcml2ZXIuc28iCkBAIC00NCw2ICs0NCw3IEBACiAgICAgICAgICAgICAgICAtLXdpdGhvdXQtcGVybCBcCiAgICAgICAgICAgICAgICAtLXdpdGhvdXQtcHl0aG9uIFwKICAgICAgICAgICAgICAgIC0td2l0aG91dC1qYXZhIFwKKyAgICAgICAgICAgICAgIERTT0ZMQUdTPScke0xERkxBR1N9JyBcCiAgICAgICAgICAgICAgICAiCiAKIEVYVFJBX0FVVE9SRUNPTkYgKz0gIi0tZXhjbHVkZT1hdXRvaGVhZGVyIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHNfMi4xLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwc18yLjEuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVmMjExZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwc18yLjEuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotcmVxdWlyZSBjdXBzLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9NmM1YTM1MDU5NmZiYTAyNzU0YmQ5NmViNmRmM2FmZDAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2MmI4ZmFmZDU5MGU3NWY3MjMxNjkxNTc5MGIwODUwYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzNmE3MGQ0MzU4NGFlYTI2MTdkYTkxNGI5MzMxZTIzMzQxYzM1MDFhODI1NGM0ZDJlYWU5YzExZWMwMWZkNGQzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHNfMi4xLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwc18yLjEuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZmFiODA2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHNfMi4xLjQuYmIKQEAgLTAsMCArMSw2IEBACityZXF1aXJlIGN1cHMuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT02YzVhMzUwNTk2ZmJhMDI3NTRiZDk2ZWI2ZGYzYWZkMCIKKworU1JDX1VSSVttZDVzdW1dID0gIjlmOWJmNmUzYjljMjBhMzUxOWI0ZGM0MDk2NjZkNmU3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRiMTRmZDgzMzE4MGFjNTI5ZWJlYmVhNzY2YTA5MDk0YzI1NjhiZjg0MjZlMjE5Y2IzYTE3MTUzMDRlZjcyOGQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHMtMi44LjEvZGlmZnV0aWxzX2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlscy0yLjguMS9kaWZmdXRpbHNfZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoCmluZGV4IGNjMDVkMWQuLmY4NjM4YmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlscy0yLjguMS9kaWZmdXRpbHNfZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlscy0yLjguMS9kaWZmdXRpbHNfZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoCkBAIC0xMCw3ICsxMCw3IEBACiB8IGNvbmZpZ3VyZS5hYzo5MDogdGhlIHRvcCBsZXZlbAogfCBhdXRvbTR0ZTogbTQgZmFpbGVkIHdpdGggZXhpdCBzdGF0dXM6IDEKIAotU2lnbmVkLU9mZi1CeTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+CiAyMDEyLzA1LzA0CiAKIEluZGV4OiBkaWZmdXRpbHMtMi44LjEvbTQvcHJlcmVxLm00CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHMtMi44LjEvZml4X2djYzYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHMtMi44LjEvZml4X2djYzYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjkxNTI4NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlscy0yLjguMS9maXhfZ2NjNi5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGaXhlcyB0byBhbGxvdyBkaWZmdXRpbHMgdG8gYnVpbGQgd2l0aCBnY2MgdjYuCisKK1JQCisyMDE2LzUvMjUKKworSW5kZXg6IGRpZmZ1dGlscy0yLjguMS9saWIvcG9zaXgvcmVnZXguaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGRpZmZ1dGlscy0yLjguMS5vcmlnL2xpYi9wb3NpeC9yZWdleC5oCisrKysgZGlmZnV0aWxzLTIuOC4xL2xpYi9wb3NpeC9yZWdleC5oCitAQCAtNTI5LDcgKzUyOSw5IEBAIGV4dGVybiBpbnQgcmVfZXhlYyBfUkVfQVJHUyAoKGNvbnN0IGNoYXIKKyAvKiBGb3Igbm93IHVuY29uZGl0aW9uYWxseSBkZWZpbmUgX19yZXN0cmljdF9hcnIgdG8gZXhwYW5kIHRvIG5vdGhpbmcuCisgICAgSWRlYWxseSB3ZSB3b3VsZCBoYXZlIGEgdGVzdCBmb3IgdGhlIGNvbXBpbGVyIHdoaWNoIGFsbG93cyBkZWZpbmluZworICAgIGl0IHRvIHJlc3RyaWN0LiAgKi8KKysjaWZuZGVmIF9fcmVzdHJpY3RfYXJyCisgI2RlZmluZSBfX3Jlc3RyaWN0X2FycgorKyNlbmRpZgorIAorIC8qIFBPU0lYIGNvbXBhdGliaWxpdHkuICAqLworIGV4dGVybiBpbnQgcmVnY29tcCBfUkVfQVJHUyAoKHJlZ2V4X3QgKl9fcmVzdHJpY3QgX19wcmVnLAorSW5kZXg6IGRpZmZ1dGlscy0yLjguMS9zcmMvZGlmZi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZGlmZnV0aWxzLTIuOC4xLm9yaWcvc3JjL2RpZmYuYworKysrIGRpZmZ1dGlscy0yLjguMS9zcmMvZGlmZi5jCitAQCAtNzEsNiArNzEsNyBAQCBzdGF0aWMgdm9pZCB1c2FnZSAodm9pZCk7Cisgc3RhdGljIGJvb2wgcmVjdXJzaXZlOworIAorIC8qIEluIGNvbnRleHQgZGlmZnMsIHNob3cgcHJldmlvdXMgbGluZXMgdGhhdCBtYXRjaCB0aGVzZSByZWdleHBzLiAgKi8KKytzdHJ1Y3QgcmVfcGF0dGVybl9idWZmZXIgZnVuY3Rpb25fcmVnZXhwOworIHN0YXRpYyBzdHJ1Y3QgcmVnZXhwX2xpc3QgZnVuY3Rpb25fcmVnZXhwX2xpc3Q7CisgCisgLyogSWdub3JlIGNoYW5nZXMgYWZmZWN0aW5nIG9ubHkgbGluZXMgdGhhdCBtYXRjaCB0aGVzZSByZWdleHBzLiAgKi8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlscy0zLjMvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlscy0zLjQvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzLTMuMy8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHMtMy40LzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlscy0zLjMvcnVuLXB0ZXN0IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzLTMuNC9ydW4tcHRlc3QKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlscy0zLjMvcnVuLXB0ZXN0CnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHMtMy40L3J1bi1wdGVzdApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzXzIuOC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzXzIuOC4xLmJiCmluZGV4IGJmNDI1YmIuLmZlNTZmOWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlsc18yLjguMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHNfMi44LjEuYmIKQEAgLTYsNyArNiw4IEBACiBQUiA9ICJyNy4wIgogCiBTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZGlmZnV0aWxzL2RpZmZ1dGlscy0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vZGlmZnV0aWxzX2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaCIKKyAgICAgICAgICAgZmlsZTovL2RpZmZ1dGlsc19maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4X2djYzYucGF0Y2giCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICI3MWY5YzVhZTE5YjYwNjA4ZjZjN2YxNjJkYTg2YTQyOCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJjNTAwMTc0OGIwNjkyMjRkZDk4YmYxYmI5ZWU4NzczMjFjN2RlOGIzMzJjOGFhZDVhZjNlMmE3MzcyZDIzZjVhIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzXzMuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlsc18zLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwMDg2OTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzXzMuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0KLXJlcXVpcmUgZGlmZnV0aWxzLmluYwotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZGlmZnV0aWxzL2RpZmZ1dGlscy0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0td2l0aG91dC1saWJzaWdzZWd2LXByZWZpeCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCSMgTmVlZCB0byByZW1vdmUgZ2V0dGV4dCBtYWNyb3Mgd2l0aCB3ZWlyZCBtaXggb2YgdmVyc2lvbnMKLQlmb3IgaSBpbiBjb2Rlc2V0Lm00IGdldHRleHRfZ2wubTQgaW50bG1hY29zeC5tNCBpbnR0eXBlcy1wcmkubTQgbGliLWxkX2dsLm00IGxpYi1wcmVmaXhfZ2wubTQgcG9fZ2wubTQgc3NpemVfdC5tNCB3Y2hhcl90Lm00IHdpbnRfdC5tNDsgZG8KLQkJcm0gLWYgJHtTfS9tNC8kaQotCWRvbmUKLX0KLQotU1JDX1VSSVttZDVzdW1dID0gIjk5MTgwMjA4ZWMyYTgyY2U3MWY1NWIwZDczODlmMWIzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImEyNWU4OWE4YWI2NWZkZWQxNzMxZTQxODZiZTFiYjI1Y2RhOTY3ODM0YjZkZjk3MzU5OWNkY2Q1YWJkZmMxOWMiCi0KLWluaGVyaXQgcHRlc3QKLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQl0PSR7RH0ke1BURVNUX1BBVEh9Ci0JaW5zdGFsbCAtRCAke1N9L2J1aWxkLWF1eC90ZXN0LWRyaXZlciAkdC9idWlsZC1hdXgvdGVzdC1kcml2ZXIKLQljcCAtciAke1N9L3Rlc3RzICR0LwotCWluc3RhbGwgJHtCfS90ZXN0cy9NYWtlZmlsZSAkdC90ZXN0cy8KLQlzZWQgLWUgJ3N8Xk1ha2VmaWxlOnxfTWFrZWZpbGU6fCcgXAotCSAgICAtZSAnc3xiYXNofHNofCcgXAotCSAgICAtZSAnc3xedG9wX3NyY2RpciA9IFwoLipcKXx0b3Bfc3JjZGlyID0gLi5cL3wnIFwKLQkgICAgLWUgJ3N8XnNyY2RpciA9IFwoLipcKXxzcmNkaXIgPSAufCcgXAotCSAgICAtZSAnc3wiYCQoYnVpbHRfcHJvZ3JhbXMpYCJ8ZGlmZnwnIFwKLQkgICAgLWUgJ3N8Z2F3a3xhd2t8ZycgXAotCSAgICAtaSAkdC90ZXN0cy9NYWtlZmlsZQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzXzMuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlsc18zLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2I3MDkyYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlsc18zLjQuYmIKQEAgLTAsMCArMSwzNyBAQAorTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworcmVxdWlyZSBkaWZmdXRpbHMuaW5jCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9kaWZmdXRpbHMvZGlmZnV0aWxzLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisiCisKK0VYVFJBX09FQ09ORiArPSAiLS13aXRob3V0LWxpYnNpZ3NlZ3YtcHJlZml4IgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJIyBOZWVkIHRvIHJlbW92ZSBnZXR0ZXh0IG1hY3JvcyB3aXRoIHdlaXJkIG1peCBvZiB2ZXJzaW9ucworCWZvciBpIGluIGNvZGVzZXQubTQgZ2V0dGV4dF9nbC5tNCBpbnRsbWFjb3N4Lm00IGludHR5cGVzLXByaS5tNCBsaWItbGRfZ2wubTQgbGliLXByZWZpeF9nbC5tNCBwb19nbC5tNCBzc2l6ZV90Lm00IHdjaGFyX3QubTQgd2ludF90Lm00OyBkbworCQlybSAtZiAke1N9L200LyRpCisJZG9uZQorfQorCitTUkNfVVJJW21kNXN1bV0gPSAiZGY5Y2E0NjVmMzAzMDdjZmZkMDNkYTE3NmE0M2E1ZDQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGI1M2MwMjVmMmFjM2QyMTdiY2Y3NTNkYWQ2ZGVlN2I0MTBiMzNkMDk0ODQ5NWZmMDE1YWFmOGI5MTE4OWNlMiIKKworaW5oZXJpdCBwdGVzdAorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCXQ9JHtEfSR7UFRFU1RfUEFUSH0KKwlpbnN0YWxsIC1EICR7U30vYnVpbGQtYXV4L3Rlc3QtZHJpdmVyICR0L2J1aWxkLWF1eC90ZXN0LWRyaXZlcgorCWNwIC1yICR7U30vdGVzdHMgJHQvCisJaW5zdGFsbCAke0J9L3Rlc3RzL01ha2VmaWxlICR0L3Rlc3RzLworCXNlZCAtZSAnc3xeTWFrZWZpbGU6fF9NYWtlZmlsZTp8JyBcCisJICAgIC1lICdzfGJhc2h8c2h8JyBcCisJICAgIC1lICdzfF50b3Bfc3JjZGlyID0gXCguKlwpfHRvcF9zcmNkaXIgPSAuLlwvfCcgXAorCSAgICAtZSAnc3xec3JjZGlyID0gXCguKlwpfHNyY2RpciA9IC58JyBcCisJICAgIC1lICdzfCJgJChidWlsdF9wcm9ncmFtcylgInxkaWZmfCcgXAorCSAgICAtZSAnc3xnYXdrfGF3a3xnJyBcCisJICAgIC1pICR0L3Rlc3RzL01ha2VmaWxlCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbF80LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbF80LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1ZGY3ODQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2xfNC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotU1VNTUFSWSA9ICJEaXNwbGF5IG9yIGNoYW5nZSBldGhlcm5ldCBjYXJkIHNldHRpbmdzIgotREVTQ1JJUFRJT04gPSAiQSBzbWFsbCB1dGlsaXR5IGZvciBleGFtaW5pbmcgYW5kIHR1bmluZyB0aGUgc2V0dGluZ3Mgb2YgeW91ciBldGhlcm5ldC1iYXNlZCBuZXR3b3JrIGludGVyZmFjZXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9zb2Z0d2FyZS9uZXR3b3JrL2V0aHRvb2wvIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2V0aHRvb2wuYztiZWdpbmxpbmU9NDtlbmRsaW5lPTE3O21kNT1jMTliMzA1NDhjNTgyNTc3ZmM2YjQ0MzYyNmZjMTIxNiIKLQotU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L3NvZnR3YXJlL25ldHdvcmsvZXRodG9vbC9ldGh0b29sLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1YjU1ZjdjZDc2ZTkwMWRmYzI3MzhhYzIyY2FiOTZjYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmODQyMjZkYjhkZDE4YWZhZjkxZDhkMDBmNWNiOGY4N2VjM2Q3Zjc4N2QyYTM2MDVkZTA4ZDZkZmE5NWFiOGVmIgotCi1pbmhlcml0IGF1dG90b29scyBwdGVzdAotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UiCi0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0gICBvZV9ydW5tYWtlIGJ1aWxkdGVzdC1URVNUUwotfQotCi1kb19pbnN0YWxsX3B0ZXN0ICgpIHsKLSAgIGNwICR7Qn0vTWFrZWZpbGUgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9Ci0gICBpbnN0YWxsICR7Qn0vdGVzdC1jbWRsaW5lICAgICAgICAke0R9JHtQVEVTVF9QQVRIfQotICAgaW5zdGFsbCAke0J9L3Rlc3QtZmVhdHVyZXMgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KLSAgIGluc3RhbGwgJHtCfS9ldGh0b29sICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L2V0aHRvb2wKLSAgIHNlZCAtaSAncy9eTWFrZWZpbGUvX01ha2VmaWxlLycgICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbF80LjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbF80LjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzg4ZDRlYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZXRodG9vbC9ldGh0b29sXzQuNi5iYgpAQCAtMCwwICsxLDMwIEBACitTVU1NQVJZID0gIkRpc3BsYXkgb3IgY2hhbmdlIGV0aGVybmV0IGNhcmQgc2V0dGluZ3MiCitERVNDUklQVElPTiA9ICJBIHNtYWxsIHV0aWxpdHkgZm9yIGV4YW1pbmluZyBhbmQgdHVuaW5nIHRoZSBzZXR0aW5ncyBvZiB5b3VyIGV0aGVybmV0LWJhc2VkIG5ldHdvcmsgaW50ZXJmYWNlcy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL3NvZnR3YXJlL25ldHdvcmsvZXRodG9vbC8iCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZXRodG9vbC5jO2JlZ2lubGluZT00O2VuZGxpbmU9MTc7bWQ1PWMxOWIzMDU0OGM1ODI1NzdmYzZiNDQzNjI2ZmMxMjE2IgorCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vc29mdHdhcmUvbmV0d29yay9ldGh0b29sL2V0aHRvb2wtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjExODZkZDgzYTAzODQxMDliOTJjNmNkNDBhN2JiMGU1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImFkNDU2MjA4ODdmN2U2MTMxMmZjMmY5Y2EzZmQ1MGQ0OWFjNzczN2VkODc0YjBiMDI4NDVkMDdlMGZhM2NhNDkiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0CitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSIKKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKyAgIG9lX3J1bm1ha2UgYnVpbGR0ZXN0LVRFU1RTCit9CisKK2RvX2luc3RhbGxfcHRlc3QgKCkgeworICAgY3AgJHtCfS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KKyAgIGluc3RhbGwgJHtCfS90ZXN0LWNtZGxpbmUgICAgICAgICR7RH0ke1BURVNUX1BBVEh9CisgICBpbnN0YWxsICR7Qn0vdGVzdC1mZWF0dXJlcyAgICAgICAke0R9JHtQVEVTVF9QQVRIfQorICAgaW5zdGFsbCAke0J9L2V0aHRvb2wgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vZXRodG9vbAorICAgc2VkIC1pICdzL15NYWtlZmlsZS9fTWFrZWZpbGUvJyAgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy00LjIuMzEvZmluZHV0aWxzX2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy00LjIuMzEvZmluZHV0aWxzX2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaAppbmRleCAyZDBkZGI0Li4xYjdmOGNmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMtNC4yLjMxL2ZpbmR1dGlsc19maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzLTQuMi4zMS9maW5kdXRpbHNfZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoCkBAIC02LDcgKzYsNyBAQAogCiB8IGNvbmZpZ3VyZS5pbjo3NTogZXJyb3I6IGF1dG9tYXRpYyBkZS1BTlNJLWZpY2F0aW9uIHN1cHBvcnQgaGFzIGJlZW4gcmVtb3ZlZAogCi1TaWduZWQtT2ZmLUJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KIDIwMTIvMDUvMDQKIAogSW5kZXg6IGZpbmR1dGlscy00LjIuMzEvY29uZmlndXJlLmluCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Zvb21hdGljL2Zvb21hdGljLWZpbHRlcnMtNC4wLjE3L0NWRS0yMDE1LTgzMjcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Zvb21hdGljL2Zvb21hdGljLWZpbHRlcnMtNC4wLjE3L0NWRS0yMDE1LTgzMjcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWFlZGM4OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZm9vbWF0aWMvZm9vbWF0aWMtZmlsdGVycy00LjAuMTcvQ1ZFLTIwMTUtODMyNy5wYXRjaApAQCAtMCwwICsxLDIzIEBACitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKKworaHR0cDovL2J6ci5saW51eGZvdW5kYXRpb24ub3JnL2xvZ2dlcmhlYWQvb3BlbnByaW50aW5nL2N1cHMtZmlsdGVycy9yZXZpc2lvbi83NDA2CisKK0hhbmQgYXBwbGllZCBjaGFuZ2UgdG8gdXRpbC5jLiBGaXggd2FzIGZvciBjdXBzLWZpbHRlcnMgYnV0IGFsc28gYXBwbGllZCB0byBmb29tYXRpYy1maWx0ZXJzLgorCitDVkU6IENWRS0yMDE1LTgzMjcKK1NpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgorCitJbmRleDogdXRpbC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYS91dGlsLmMKKysrKyBiL3V0aWwuYworQEAgLTMxLDcgKzMxLDcgQEAKKyAjaW5jbHVkZSA8YXNzZXJ0Lmg+CisgCisgCistY29uc3QgY2hhciogc2hlbGxlc2NhcGVzID0gInw7PD4mISRcJ1wiIyo/KClbXXt9IjsKKytjb25zdCBjaGFyKiBzaGVsbGVzY2FwZXMgPSAifDs8PiYhJFwnXCJgIyo/KClbXXt9IjsKKyAKKyBjb25zdCBjaGFyICogdGVtcF9kaXIoKQorIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZm9vbWF0aWMvZm9vbWF0aWMtZmlsdGVycy00LjAuMTcvQ1ZFLTIwMTUtODU2MC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZm9vbWF0aWMvZm9vbWF0aWMtZmlsdGVycy00LjAuMTcvQ1ZFLTIwMTUtODU2MC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzk3M2M0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9mb29tYXRpYy9mb29tYXRpYy1maWx0ZXJzLTQuMC4xNy9DVkUtMjAxNS04NTYwLnBhdGNoCkBAIC0wLDAgKzEsMjMgQEAKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworCitodHRwOi8vYnpyLmxpbnV4Zm91bmRhdGlvbi5vcmcvbG9nZ2VyaGVhZC9vcGVucHJpbnRpbmcvY3Vwcy1maWx0ZXJzL3JldmlzaW9uLzc0MTkKKworSGFuZCBhcHBsaWVkIGNoYW5nZSB0byB1dGlsLmMuIEZpeCB3YXMgZm9yIGN1cHMtZmlsdGVycyBidXQgYWxzbyBhcHBsaWVkIHRvIGZvb21hdGljLWZpbHRlcnMuCisKK0NWRTogQ1ZFLTIwMTUtODU2MAorU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+CisKK0luZGV4OiB1dGlsLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhL3V0aWwuYworKysrIGIvdXRpbC5jCitAQCAtMzEsNyArMzEsNyBAQAorICNpbmNsdWRlIDxhc3NlcnQuaD4KKyAKKyAKKy1jb25zdCBjaGFyKiBzaGVsbGVzY2FwZXMgPSAifDw+JiEkXCdcIiMqPygpW117fSI7CisrY29uc3QgY2hhciogc2hlbGxlc2NhcGVzID0gInw7PD4mISRcJ1wiIyo/KClbXXt9IjsKKyAKKyBjb25zdCBjaGFyICogdGVtcF9kaXIoKQorIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZm9vbWF0aWMvZm9vbWF0aWMtZmlsdGVyc180LjAuMTcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Zvb21hdGljL2Zvb21hdGljLWZpbHRlcnNfNC4wLjE3LmJiCmluZGV4IDBjZmZlZGQuLjNmNDM5ZTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZm9vbWF0aWMvZm9vbWF0aWMtZmlsdGVyc180LjAuMTcuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9mb29tYXRpYy9mb29tYXRpYy1maWx0ZXJzXzQuMC4xNy5iYgpAQCAtMTcsNiArMTcsMTAgQEAKIAogU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm9wZW5wcmludGluZy5vcmcvZG93bmxvYWQvZm9vbWF0aWMvZm9vbWF0aWMtZmlsdGVycy0ke1BWfS50YXIuZ3oiCiAKK1NSQ19VUkkgKz0gImZpbGU6Ly9DVkUtMjAxNS04NTYwLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNS04MzI3LnBhdGNoIFwKKyAgICAgICAgICAgIgorCiBTUkNfVVJJW21kNXN1bV0gPSAiYjA1ZjVkY2JmZTM1OWYxOThlZWYzZGY1YjI4M2Q4OTYiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTJlMmU1M2U1MDI1NzFlODhlZWI5MDEwYzQ1YTBkNTQ2NzFmMTU3MDdlZTEwNGY1YzljMjJiNTllYTdhMzNlMyIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2stMy4xLjUvMDAwMS1nYXdrLWZpeC1ub24tZ2xpYmMtZ2NjLTQtY29tcGlsYXRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dhd2svZ2F3ay0zLjEuNS8wMDAxLWdhd2stZml4LW5vbi1nbGliYy1nY2MtNC1jb21waWxhdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzkyMDFiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2stMy4xLjUvMDAwMS1nYXdrLWZpeC1ub24tZ2xpYmMtZ2NjLTQtY29tcGlsYXRpb24ucGF0Y2gKQEAgLTAsMCArMSw2NyBAQAorRnJvbSA1MzQ5NmUyZTMwNmIxNmFjNTk4MDE1NTNmNzc1YmNjYTE2NGU2YTM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0FuZHI9QzM9QTk9MjBEcmFzemlrPz0gPGdpdEBhbmRyZWQubmV0PgorRGF0ZTogV2VkLCAxNCBTZXAgMjAxNiAxNjoyMDozNyArMDEwMAorU3ViamVjdDogW1BBVENIXSBmaXggZ2NjID49IDQgY29tcGlsYXRpb24KKworfCAuLi9nYXdrLTMuMS41L2hhcmQtbG9jYWxlLmg6IEluIGZ1bmN0aW9uICdoYXJkX2xvY2FsZSc6Cit8IC4uL2dhd2stMy4xLjUvaGFyZC1sb2NhbGUuaDo0MzoyMDogZXJyb3I6IGludmFsaWQgc3RvcmFnZSBjbGFzcyBmb3IgZnVuY3Rpb24gJ3htYWxsb2MnCit8ICAgICAgICBzdGF0aWMgcHRyX3QgeG1hbGxvYyBQQVJBTVMgKChzaXplX3QgbikpOworfCAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn4KKworfCAuLi9nYXdrLTMuMS41L2hhcmQtbG9jYWxlLmg6NDU6MjI6IHdhcm5pbmc6IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uICd4bWFsbG9jJyBbLVdpbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlvbl0KK3wgICAgICAgIGNoYXIgKmxvY2FsZSA9IHhtYWxsb2MgKHN0cmxlbiAocCkgKyAxKTsKK3wgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn4KK3wgLi4vZ2F3ay0zLjEuNS9oYXJkLWxvY2FsZS5oOjQ1OjIyOiB3YXJuaW5nOiBpbml0aWFsaXphdGlvbiBtYWtlcyBwb2ludGVyIGZyb20gaW50ZWdlciB3aXRob3V0IGEgY2FzdCBbLVdpbnQtY29udmVyc2lvbl0KK3wgLi4vZ2F3ay0zLjEuNS9kZmEuYzogQXQgdG9wIGxldmVsOgorfCAuLi9nYXdrLTMuMS41L2RmYS5jOjEyNToxNDogZXJyb3I6IGNvbmZsaWN0aW5nIHR5cGVzIGZvciAneG1hbGxvYycKK3wgIHN0YXRpYyBwdHJfdCB4bWFsbG9jIFBBUkFNUyAoKHNpemVfdCBuKSk7Cit8ICAgICAgICAgICAgICAgXn5+fn5+fgorfCBJbiBmaWxlIGluY2x1ZGVkIGZyb20gLi4vZ2F3ay0zLjEuNS9kZmEuYzoxMTI6MDoKK3wgLi4vZ2F3ay0zLjEuNS9oYXJkLWxvY2FsZS5oOjQ1OjIyOiBub3RlOiBwcmV2aW91cyBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiAneG1hbGxvYycgd2FzIGhlcmUKK3wgICAgICAgIGNoYXIgKmxvY2FsZSA9IHhtYWxsb2MgKHN0cmxlbiAocCkgKyAxKTsKK3wgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtyZXF1aXJlZCBmb3IgZ2F3ayAzLjEuNSAoR1BMdjIpIHJlY2lwZSBvbmx5XQorCitTaWduZWQtb2ZmLWJ5OiBBbmRyw6kgRHJhc3ppayA8Z2l0QGFuZHJlZC5uZXQ+CistLS0KKyBkZmEuYyAgICAgICAgIHwgMiArLQorIGhhcmQtbG9jYWxlLmggfCAyIC0tCisgMiBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2RmYS5jIGIvZGZhLmMKK2luZGV4IDcxZTM3MzYuLjk3ZjYwNDUgMTAwNjQ0CistLS0gYS9kZmEuYworKysrIGIvZGZhLmMKK0BAIC0xMDksNiArMTA5LDcgQEAgZXh0ZXJuIHZvaWQgZnJlZSgpOworIAorICNpbmNsdWRlICJyZWdleC5oIgorICNpbmNsdWRlICJkZmEuaCIKKytzdGF0aWMgcHRyX3QgeG1hbGxvYyBQQVJBTVMgKChzaXplX3QgbikpOworICNpbmNsdWRlICJoYXJkLWxvY2FsZS5oIgorIAorIC8qIEhQVVgsIGRlZmluZSB0aG9zZSBhcyBtYWNyb3MgaW4gc3lzL3BhcmFtLmggKi8KK0BAIC0xMjIsNyArMTIzLDYgQEAgZXh0ZXJuIHZvaWQgZnJlZSgpOworIHN0YXRpYyB2b2lkIGRmYW11c3QgUEFSQU1TICgoc3RydWN0IGRmYSAqZGZhKSk7CisgCisgc3RhdGljIHB0cl90IHhjYWxsb2MgUEFSQU1TICgoc2l6ZV90IG4sIHNpemVfdCBzKSk7Cistc3RhdGljIHB0cl90IHhtYWxsb2MgUEFSQU1TICgoc2l6ZV90IG4pKTsKKyBzdGF0aWMgcHRyX3QgeHJlYWxsb2MgUEFSQU1TICgocHRyX3QgcCwgc2l6ZV90IG4pKTsKKyAjaWZkZWYgREVCVUcKKyBzdGF0aWMgdm9pZCBwcnRvayBQQVJBTVMgKCh0b2tlbiB0KSk7CitkaWZmIC0tZ2l0IGEvaGFyZC1sb2NhbGUuaCBiL2hhcmQtbG9jYWxlLmgKK2luZGV4IDBmNDk4NmIuLjllZTU3ZTAgMTAwNjQ0CistLS0gYS9oYXJkLWxvY2FsZS5oCisrKysgYi9oYXJkLWxvY2FsZS5oCitAQCAtNDAsOCArNDAsNiBAQCBoYXJkX2xvY2FsZSAoaW50IGNhdGVnb3J5KQorICAgICAgIGlmIChzdHJjbXAgKHAsICJDIikgPT0gMCB8fCBzdHJjbXAgKHAsICJQT1NJWCIpID09IDApCisgCWhhcmQgPSAwOworICMgZWxzZQorLSAgICAgIHN0YXRpYyBwdHJfdCB4bWFsbG9jIFBBUkFNUyAoKHNpemVfdCBuKSk7CistCisgICAgICAgY2hhciAqbG9jYWxlID0geG1hbGxvYyAoc3RybGVuIChwKSArIDEpOworICAgICAgIHN0cmNweSAobG9jYWxlLCBwKTsKKyAKKy0tIAorMi45LjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2stMy4xLjUvZ2F3ay0zLjEuNV9maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dhd2svZ2F3ay0zLjEuNS9nYXdrLTMuMS41X2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaAppbmRleCBiM2U3OTg3Li5jNDJjMzNjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dhd2svZ2F3ay0zLjEuNS9nYXdrLTMuMS41X2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dhd2svZ2F3ay0zLjEuNS9nYXdrLTMuMS41X2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaApAQCAtMTEsNyArMTEsNyBAQAogLi4uCiB8IE1ha2VmaWxlLmFtOjI3OiBlcnJvcjogYXV0b21hdGljIGRlLUFOU0ktZmljYXRpb24gc3VwcG9ydCBoYXMgYmVlbiByZW1vdmVkCiAKLVNpZ25lZC1PZmYtQnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgogMjAxMi8wNS8wNAogCiBJbmRleDogZ2F3ay0zLjEuNS9jb25maWd1cmUuYWMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2F3ay9nYXdrXzMuMS41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2tfMy4xLjUuYmIKaW5kZXggN2M5MmJkZS4uNjNmZDMyZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2tfMy4xLjUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2tfMy4xLjUuYmIKQEAgLTE1LDggKzE1LDExIEBACiBSREVQRU5EU19wZ2F3ayArPSAiZ2F3ay1jb21tb24iCiBQUiA9ICJyMiIKIAotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2dhd2svZ2F3ay0ke1BWfS50YXIuZ3ogXAotCWZpbGU6Ly9nYXdrLTMuMS41X2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaCIKK1NSQ19VUkkgPSAiXAorICAgICR7R05VX01JUlJPUn0vZ2F3ay9nYXdrLSR7UFZ9LnRhci5neiBcCisgICAgZmlsZTovL2dhd2stMy4xLjVfZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1nYXdrLWZpeC1ub24tZ2xpYmMtZ2NjLTQtY29tcGlsYXRpb24ucGF0Y2ggXAorIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiNDc2MDMyNTQ4OTQ3OWNhYzE3ZmUwMTE0YjhmNjJmMzAiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDYzZGNiOWQwY2EzOThiMWQ0ZjVhMzMyZjZjZDljZWM1NjQ0MTI2NWZjYTYxNmYyZWExYjQ0ZDQ1OWU5ZjBmOCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZmlsZXMvMDAwMS1CdWctNjk2NDk3LUZpeC1zdXBwb3J0LWZvci1idWlsZGluZy13aXRoLW5vLWpiaWcyLWRlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9maWxlcy8wMDAxLUJ1Zy02OTY0OTctRml4LXN1cHBvcnQtZm9yLWJ1aWxkaW5nLXdpdGgtbm8tamJpZzItZGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1ODZhMWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9maWxlcy8wMDAxLUJ1Zy02OTY0OTctRml4LXN1cHBvcnQtZm9yLWJ1aWxkaW5nLXdpdGgtbm8tamJpZzItZGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi1Gcm9tIDFkMTk5OTgwOTExNTRmODliODI5NGU0NTk0YTA1OTg2YjRjMmY4MjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaHJpcyBMaWRkZWxsIDxjaHJpcy5saWRkZWxsQGFydGlmZXguY29tPgotRGF0ZTogV2VkLCAxMyBKYW4gMjAxNiAwMjowODo0MiAtMDUwMAotU3ViamVjdDogW1BBVENIIDEvMl0gQnVnIDY5NjQ5NzogRml4IHN1cHBvcnQgZm9yIGJ1aWxkaW5nIHdpdGggbm8gamJpZzIKLSBkZWNvZGVyCi0KLUF1dGhvcjogQ2hyaXMgTGlkZGVsbCA8Y2hyaXMubGlkZGVsbEBhcnRpZmV4LmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotaHR0cDovL2J1Z3MuZ2hvc3RzY3JpcHQuY29tL3Nob3dfYnVnLmNnaT9pZD02OTY0OTcKLWh0dHA6Ly9naXQuZ2hvc3RzY3JpcHQuY29tLz9wPWdob3N0cGRsLmdpdDthPWNvbW1pdGRpZmY7aD1iMGY1YTk3NQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gYmFzZS9saWIubWFrIHwgIDkgKysrKysrKysrCi0gcHNpL2ludC5tYWsgIHwgMjMgKysrKysrKysrKysrKysrKysrLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9iYXNlL2xpYi5tYWsgYi9iYXNlL2xpYi5tYWsKLWluZGV4IDI0MWRmMmYuLmRhYTcwNTYgMTAwNjQ0Ci0tLS0gYS9iYXNlL2xpYi5tYWsKLSsrKyBiL2Jhc2UvbGliLm1hawotQEAgLTE3MzIsNiArMTczMiwxMCBAQCAkKEdMRClzamJpZzJfamJpZzJkZWMuZGV2IDogJChMSUJfTUFLKSAkKEVDSE9HU19YRSkgXAotIAkkKFNFVE1PRCkgJChHTEQpc2piaWcyX2piaWcyZGVjICQoc2piaWcyX2piaWcyZGVjKQotIAkkKEFERE1PRCkgJChHTEQpc2piaWcyX2piaWcyZGVjIC1pbmNsdWRlICQoR0xEKWpiaWcyZGVjLmRldgotIAotKyQoR0xEKXNqYmlnMl8uZGV2IDogJChMSUJfTUFLKSAkKEVDSE9HU19YRSkgXAotKyAgJChMSUJfTUFLKSAkKE1BS0VESVJTKQotKwkkKFNFVE1PRCkgJChHTEQpc2piaWcyXwotKwotICMgamJpZzJkZWMuZGV2IGlzIGRlZmluZWQgaW4gamJpZzIubWFrCi0gCi0gJChHTE9CSilzamJpZzIuJChPQkopIDogJChHTFNSQylzamJpZzIuYyAkKEFLKSBcCi1AQCAtMTczOSw2ICsxNzQzLDExIEBAICQoR0xPQkopc2piaWcyLiQoT0JKKSA6ICQoR0xTUkMpc2piaWcyLmMgJChBSykgXAotICAkKHNqYmlnMl9oKSAkKHN0cmltcGxfaCkgJChNQUtFRElSUykKLSAJJChHTEpCSUcyQ0MpICQoR0xPXylzamJpZzIuJChPQkopICQoQ18pICQoR0xTUkMpc2piaWcyLmMKLSAKLSskKEdMT0JKKXNub2piaWcyLiQoT0JKKSA6ICQoR0xTUkMpc25vamJpZzIuYyAkKEFLKSBcCi0rICQoc3RkaW50X19oKSAkKG1lbW9yeV9faCkgJChzdGRpb19faCkgJChnc2Vycm9yc19oKSAkKGdkZWJ1Z19oKSBcCi0rICQoc3RyaW1wbF9oKSAkKExJQl9NQUspICQoTUFLRURJUlMpCi0rCSQoR0xKQklHMkNDKSAkKEdMT18pc25vamJpZzIuJChPQkopICQoQ18pICQoR0xTUkMpc25vamJpZzIuYwotKwotICMgbHVyYXRlY2ggdmVyc2lvbgotIHNqYmlnMl9sdXJhdGVjaD0kKEdMT0JKKXNqYmlnMl9sdXJhdGVjaC4kKE9CSikKLSAKLWRpZmYgLS1naXQgYS9wc2kvaW50Lm1hayBiL3BzaS9pbnQubWFrCi1pbmRleCA2MTQ5YTNiLi5mOWQ2NjdkIDEwMDY0NAotLS0tIGEvcHNpL2ludC5tYWsKLSsrKyBiL3BzaS9pbnQubWFrCi1AQCAtMTI1NCwxMSArMTI1NCwyNCBAQCAkKFBTT0JKKXpmYWVzLiQoT0JKKSA6ICQoUFNTUkMpemZhZXMuYyAkKE9QKSAkKG1lbW9yeV9faClcCi0gIyB0aGlzIGNhbiBiZSB0dXJuZWQgb24gYW5kIG9mZiB3aXRoIGEgRkVBVFVSRV9ERVYKLSAKLSBmamJpZzJfPSQoUFNPQkopemZqYmlnMl8kKEpCSUcyX0xJQikuJChPQkopCi0tJChQU0QpamJpZzIuZGV2IDogJChJTlRfTUFLKSAkKEVDSE9HU19YRSkgJChmamJpZzJfKSAkKEdMRClzamJpZzIuZGV2XAotLSAkKE1BS0VESVJTKQotLQkkKFNFVE1PRCkgJChQU0QpamJpZzIgJChmamJpZzJfKQotLQkkKEFERE1PRCkgJChQU0QpamJpZzIgLWluY2x1ZGUgJChHTEQpc2piaWcyCi0tCSQoQURETU9EKSAkKFBTRClqYmlnMiAtb3BlciB6ZmpiaWcyCi0rCi0rJChQU0QpamJpZzJfamJpZzJkZWMuZGV2IDogJChFQ0hPR1NfWEUpICQoZmpiaWcyXykgJChHTEQpc2piaWcyLmRldlwKLSsgJChJTlRfTUFLKSAkKE1BS0VESVJTKQotKwkkKFNFVE1PRCkgJChQU0QpamJpZzJfamJpZzJkZWMgJChmamJpZzJfKQotKwkkKEFERE1PRCkgJChQU0QpamJpZzJfamJpZzJkZWMgLWluY2x1ZGUgJChHTEQpc2piaWcyCi0rCSQoQURETU9EKSAkKFBTRClqYmlnMl9qYmlnMmRlYyAtb3BlciB6ZmpiaWcyCi0rCi0rJChQU0QpamJpZzJfbHVyYXRlY2guZGV2IDogJChFQ0hPR1NfWEUpICQoZmpiaWcyXykgJChHTEQpc2piaWcyLmRldlwKLSsgJChJTlRfTUFLKSAkKE1BS0VESVJTKQotKwkkKFNFVE1PRCkgJChQU0QpamJpZzJfbHVyYXRlY2ggJChmamJpZzJfKQotKwkkKEFERE1PRCkgJChQU0QpamJpZzJfbHVyYXRlY2ggLWluY2x1ZGUgJChHTEQpc2piaWcyCi0rCSQoQURETU9EKSAkKFBTRClqYmlnMl9sdXJhdGVjaCAtb3BlciB6ZmpiaWcyCi0rCi0rJChQU0QpamJpZzJfLmRldiA6ICQoRUNIT0dTX1hFKSAkKElOVF9NQUspICQoTUFLRURJUlMpCi0rCSQoU0VUTU9EKSAkKFBTRClqYmlnMl8gCi0rCi0rJChQU0QpamJpZzIuZGV2IDogJChQU0QpamJpZzJfJChKQklHMl9MSUIpLmRldiAkKElOVF9NQUspICQoTUFLRURJUlMpCi0rCSQoQ1BfKSAkKFBTRClqYmlnMl8kKEpCSUcyX0xJQikuZGV2ICQoUFNEKWpiaWcyLmRldgotIAotICQoUFNPQkopemZqYmlnMl9qYmlnMmRlYy4kKE9CSikgOiAkKFBTU1JDKXpmamJpZzIuYyAkKE9QKSAkKG1lbW9yeV9faClcCi0gICQoZ3NzdHJ1Y3RfaCkgJChnc3R5cGVzX2gpICQoaWFsbG9jX2gpICQoaWRpY3RfaCkgJChpZmlsdGVyX2gpXAotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2ZpbGVzLzAwMDItQnVnLTY5NjQ5Ny1wYXJ0LTItZml4LXN1cHBvcnQtZm9yLWJ1aWxkaW5nLXdpdGgtYS1KUC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZmlsZXMvMDAwMi1CdWctNjk2NDk3LXBhcnQtMi1maXgtc3VwcG9ydC1mb3ItYnVpbGRpbmctd2l0aC1hLUpQLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmY2ZjNDc5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZmlsZXMvMDAwMi1CdWctNjk2NDk3LXBhcnQtMi1maXgtc3VwcG9ydC1mb3ItYnVpbGRpbmctd2l0aC1hLUpQLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotRnJvbSAzYjQzZjkzZWMwMjYxMWM0ZDU1NDYxMjk1M2Y1YjY0NzY1Yjg2ODNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hyaXMgTGlkZGVsbCA8Y2hyaXMubGlkZGVsbEBhcnRpZmV4LmNvbT4KLURhdGU6IFdlZCwgMTMgSmFuIDIwMTYgMDI6MTQ6NTUgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzJdIEJ1ZyA2OTY0OTcgKHBhcnQgMik6IGZpeCBzdXBwb3J0IGZvciBidWlsZGluZyB3aXRoIGEgSlBYCi0gZGVjb2RlcgotCi1BdXRob3I6IENocmlzIExpZGRlbGwgPGNocmlzLmxpZGRlbGxAYXJ0aWZleC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLWh0dHA6Ly9idWdzLmdob3N0c2NyaXB0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9Njk2NDk3Ci1odHRwOi8vZ2l0Lmdob3N0c2NyaXB0LmNvbS8/cD1naG9zdHBkbC5naXQ7YT1jb21taXRkaWZmO2g9YjBmNWE5NzUKLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGJhc2UvbGliLm1hayB8IDMgKysrCi0gcHNpL2ludC5tYWsgIHwgMyArKysKLSAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvYmFzZS9saWIubWFrIGIvYmFzZS9saWIubWFrCi1pbmRleCBkYWE3MDU2Li44ODUzZGQ1IDEwMDY0NAotLS0tIGEvYmFzZS9saWIubWFrCi0rKysgYi9iYXNlL2xpYi5tYWsKLUBAIC0xNzc0LDYgKzE3NzQsOSBAQCAkKEdMT0JKKXNqcHguJChPQkopIDogJChHTFNSQylzanB4LmMgJChBSykgXAotICAkKGdkZWJ1Z19oKSAkKHN0cmltcGxfaCkgJChzanB4X2gpICQoTUFLRURJUlMpCi0gCSQoR0xKQVNDQykgJChHTE9fKXNqcHguJChPQkopICQoQ18pICQoR0xTUkMpc2pweC5jCi0gCi0rJChHTEQpc2pweF8uZGV2IDogJChMSUJfTUFLKSAkKEVDSE9HU19YRSkgJChMSUJfTUFLKSAkKE1BS0VESVJTKQotKwkkKFNFVE1PRCkgJChHTEQpc2pweF8KLSsKLSAjIGx1cmF0ZWNoIHZlcnNpb24KLSBzanB4X2x1cmF0ZWNoPSQoR0xPQkopc2pweF9sdXJhdGVjaC4kKE9CSikKLSAkKEdMRClzanB4X2x1cmF0ZWNoLmRldiA6ICQoTElCX01BSykgJChFQ0hPR1NfWEUpIFwKLWRpZmYgLS1naXQgYS9wc2kvaW50Lm1hayBiL3BzaS9pbnQubWFrCi1pbmRleCBmOWQ2NjdkLi5kYjAxYjY1IDEwMDY0NAotLS0tIGEvcHNpL2ludC5tYWsKLSsrKyBiL3BzaS9pbnQubWFrCi1AQCAtMTI5MCw2ICsxMjkwLDkgQEAgJChQU0QpanB4LmRldiA6ICQoSU5UX01BSykgJChFQ0hPR1NfWEUpICQoUFNEKWpweF8kKEpQWF9MSUIpLmRldlwKLSAgJChNQUtFRElSUykKLSAJJChDUF8pICQoUFNEKWpweF8kKEpQWF9MSUIpLmRldiAkKFBTRClqcHguZGV2Ci0gCi0rJChQU0QpanB4Xy5kZXYgOiAkKEVDSE9HU19YRSkgJChJTlRfTUFLKSAkKE1BS0VESVJTKQotKwkkKFNFVE1PRCkgJChQU0QpanB4XwotKwotIGZqcHhfbHVyYXRlY2g9JChQU09CSil6ZmpweF9sdXJhdGVjaC4kKE9CSikKLSAKLSAkKFBTT0JKKXpmanB4LiQoT0JKKSA6ICQoUFNTUkMpemZqcHguYyAkKE9QKSAkKG1lbW9yeV9faClcCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZmlsZXMvZG8tbm90LWNoZWNrLWxvY2FsLWxpYnBuZy1zb3VyY2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2ZpbGVzL2RvLW5vdC1jaGVjay1sb2NhbC1saWJwbmctc291cmNlLnBhdGNoCmluZGV4IGI0NDVhNmMuLmMzZTQ0ZmUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZmlsZXMvZG8tbm90LWNoZWNrLWxvY2FsLWxpYnBuZy1zb3VyY2UucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9maWxlcy9kby1ub3QtY2hlY2stbG9jYWwtbGlicG5nLXNvdXJjZS5wYXRjaApAQCAtMTYsMTcgKzE2LDE3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggYWIzMGE5Ny4uYjc2MmZkNyAxMDA2NDQKK2luZGV4IGJmNmQzZjUuLjAxZGYwM2YgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTk1NSwxMSArOTU1LDExIEBAIEFDX1NVQlNUKFpMSUJESVIpCitAQCAtOTMwLDExICs5MzAsMTEgQEAgQUNfU1VCU1QoWkxJQkRJUikKICBBQ19TVUJTVChGVF9TWVNfWkxJQikKICAKICBkbmwgcG5nIGZvciB0aGUgcG5nIG91dHB1dCBkZXZpY2U7IGl0IGFsc28gcmVxdWlyZXMgemxpYgogLUxJQlBOR0RJUj1zcmMKICtMSUJQTkdESVI9JHNyY2Rpci9saWJwbmcKICBQTkdERVZTPScnCi0gUE5HREVWU19BTEw9J3BuZzQ4IHBuZzE2bSBwbmdncmF5IHBuZ21vbm8gcG5nMjU2IHBuZzE2IHBuZ2FscGhhJworIFBOR0RFVlNfQUxMPSdwbmc0OCBwbmcxNm0gcG5nZ3JheSBwbmdtb25vIHBuZ21vbm9kIHBuZzI1NiBwbmcxNiBwbmdhbHBoYScKICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBsb2NhbCBwbmcgbGlicmFyeSBzb3VyY2VdKQogLWlmIHRlc3QgLWYgJHNyY2Rpci9saWJwbmcvcG5ncmVhZC5jOyB0aGVuCiAraWYgZmFsc2U7IHRoZW4KQEAgLTM0LDUgKzM0LDUgQEAKICAgICAgICAgIFNIQVJFX0xJQlBORz0wCiAgICAgICAgICBMSUJQTkdESVI9JHNyY2Rpci9saWJwbmcKIC0tIAotMS45LjEKKzIuOC4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQtOS4wMi1wcmV2ZW50X3JlY29tcGlsaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjAyLXByZXZlbnRfcmVjb21waWxpbmcucGF0Y2gKaW5kZXggYmMyOWJlNS4uZTcwOTE5NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjAyLXByZXZlbnRfcmVjb21waWxpbmcucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjAyLXByZXZlbnRfcmVjb21waWxpbmcucGF0Y2gKQEAgLTEsNCArMSw0IEBACi11c3QgdXNlIGNvbW1hbmRzIHByb3ZpZGVkIGJ5IGdob3N0c2NyaXB0LW5hdGl2ZSwgcHJldmVudGluZyByZWNvbXBpbGUgdGhlbSB3aGVuCitKdXN0IHVzZSBjb21tYW5kcyBwcm92aWRlZCBieSBnaG9zdHNjcmlwdC1uYXRpdmUsIHByZXZlbnRpbmcgcmVjb21waWxlIHRoZW0gd2hlbgogY29tcGlsZSBnaG9zdHNjcmlwdC4KIFdheSB0byBlbmFibGUgY3Jvc3MgY29tcGlsZS4KIApAQCAtNyw5NCArNyw5MyBAQAogU2lnbmVkLW9mZi1ieTogS2FuZyBLYWkgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CiBTaWduZWQtb2ZmLWJ5OiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KIAorUmViYXNlIHRvIDkuMTkKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGJhc2UvdW5peC1hdXgubWFrIHwgNjQgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkKKwogZGlmZiAtLWdpdCBhL2Jhc2UvdW5peC1hdXgubWFrIGIvYmFzZS91bml4LWF1eC5tYWsKLWluZGV4IGE5MWZiMjYuLmM5OTFkMTEgMTAwNjQ0CitpbmRleCAwMTEwNjY3Li5lMmViMWExIDEwMDY0NAogLS0tIGEvYmFzZS91bml4LWF1eC5tYWsKICsrKyBiL2Jhc2UvdW5peC1hdXgubWFrCi1AQCAtNjksNDYgKzY5LDQ2IEBAICQoR0xPQkopZ3Bfc3lzdi4kKE9CSik6ICQoR0xTUkMpZ3Bfc3lzdi5jICQoc3RkaW9fX2gpICQodGltZV9faCkgJChBSylcCi0gICQoTUFLRURJUlMpCi0gCSQoR0xDQykgJChHTE9fKWdwX3N5c3YuJChPQkopICQoQ18pICQoR0xTUkMpZ3Bfc3lzdi5jCitAQCAtNzEsNDQgKzcxLDQ0IEBAICQoR0xPQkopZ3Bfc3lzdi4kKE9CSik6ICQoR0xTUkMpZ3Bfc3lzdi5jICQoc3RkaW9fX2gpICQodGltZV9faCkgJChBSylcCiAgCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBdXhpbGlhcnkgcHJvZ3JhbXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKLS0KLS0kKEVDSE9HU19YRSk6ICQoR0xTUkMpZWNob2dzLmMgJChBSykgJChzdGRwcmVfaCkgJChNQUtFRElSUykKKyAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEF1eGlsaWFyeSBwcm9ncmFtcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIworIAorLSQoRUNIT0dTX1hFKTogJChHTFNSQyllY2hvZ3MuYyAkKEFLKSAkKHN0ZHByZV9oKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKIC0JJChDQ0FVWF8pICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKE9fKSQoRUNIT0dTX1hFKSAkKEdMU1JDKWVjaG9ncy5jICQoQVVYRVhUUkFMSUJTKQogLQotLSMgT24gdGhlIFJTLzYwMDAgKGF0IGxlYXN0KSwgY29tcGlsaW5nIGdlbmFyY2guYyB3aXRoIGdjYyB3aXRoIC1PCi0tIyBwcm9kdWNlcyBhIGJ1Z2d5IGV4ZWN1dGFibGUuCi0tJChHRU5BUkNIX1hFKTogJChHTFNSQylnZW5hcmNoLmMgJChBSykgJChHRU5BUkNIX0RFUFMpICQoTUFLRURJUlMpCisrIyQoRUNIT0dTX1hFKTogJChHTFNSQyllY2hvZ3MuYyAkKEFLKSAkKHN0ZHByZV9oKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKKysjCSQoQ0NBVVhfKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChPXykkKEVDSE9HU19YRSkgJChHTFNSQyllY2hvZ3MuYyAkKEFVWEVYVFJBTElCUykKKysjCisgIyBPbiB0aGUgUlMvNjAwMCAoYXQgbGVhc3QpLCBjb21waWxpbmcgZ2VuYXJjaC5jIHdpdGggZ2NjIHdpdGggLU8KKyAjIHByb2R1Y2VzIGEgYnVnZ3kgZXhlY3V0YWJsZS4KKy0kKEdFTkFSQ0hfWEUpOiAkKEdMU1JDKWdlbmFyY2guYyAkKEFLKSAkKEdFTkFSQ0hfREVQUykgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCiAtCSQoQ0NBVVhfKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChPXykkKEdFTkFSQ0hfWEUpICQoR0xTUkMpZ2VuYXJjaC5jICQoQVVYRVhUUkFMSUJTKQogLQotLSQoR0VOQ09ORl9YRSk6ICQoR0xTUkMpZ2VuY29uZi5jICQoQUspICQoR0VOQ09ORl9ERVBTKSAkKE1BS0VESVJTKQorLSQoR0VOQ09ORl9YRSk6ICQoR0xTUkMpZ2VuY29uZi5jICQoQUspICQoR0VOQ09ORl9ERVBTKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKIC0JJChDQ0FVWF8pICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKE9fKSQoR0VOQ09ORl9YRSkgJChHTFNSQylnZW5jb25mLmMgJChBVVhFWFRSQUxJQlMpCiAtCi0tJChHRU5ERVZfWEUpOiAkKEdMU1JDKWdlbmRldi5jICQoQUspICQoR0VOREVWX0RFUFMpICQoTUFLRURJUlMpCistJChHRU5ERVZfWEUpOiAkKEdMU1JDKWdlbmRldi5jICQoQUspICQoR0VOREVWX0RFUFMpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQogLQkkKENDQVVYXykgJChJXykkKEdMU1JDRElSKSQoX0kpICQoT18pJChHRU5ERVZfWEUpICQoR0xTUkMpZ2VuZGV2LmMgJChBVVhFWFRSQUxJQlMpCiAtCi0tJChHRU5IVF9YRSk6ICQoR0xTUkMpZ2VuaHQuYyAkKEFLKSAkKEdFTkhUX0RFUFMpICQoTUFLRURJUlMpCistJChHRU5IVF9YRSk6ICQoR0xTUkMpZ2VuaHQuYyAkKEFLKSAkKEdFTkhUX0RFUFMpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQogLQkkKENDQVVYXykgJChHRU5IVF9DRkxBR1MpICQoT18pJChHRU5IVF9YRSkgJChHTFNSQylnZW5odC5jICQoQVVYRVhUUkFMSUJTKQogLQotLSMgVG8gZ2V0IEdTIHRvIHVzZSB0aGUgc3lzdGVtIHpsaWIsIHlvdSByZW1vdmUvaGlkZSB0aGUgZ3MvemxpYiBkaXJlY3RvcnkKLS0jIHdoaWNoIG1lYW5zIHRoYXQgdGhlIG1rcm9tZnMgYnVpbGQgY2FuJ3QgZmluZCB0aGUgemxpYiBzb3VyY2UgaXQgbmVlZHMuCi0tIyBTbyBpdCdzIHNwbGl0IGludG8gdHdvIHRhcmdldHMsIG9uZSB1c2luZyB0aGUgemxpYiBzb3VyY2UgZGlyZWN0bHkuLi4uLgorKyMkKEdFTkFSQ0hfWEUpOiAkKEdMU1JDKWdlbmFyY2guYyAkKEFLKSAkKEdFTkFSQ0hfREVQUykgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCisrIwkkKENDQVVYXykgJChJXykkKEdMU1JDRElSKSQoX0kpICQoT18pJChHRU5BUkNIX1hFKSAkKEdMU1JDKWdlbmFyY2guYyAkKEFVWEVYVFJBTElCUykKKysjCisrIyQoR0VOQ09ORl9YRSk6ICQoR0xTUkMpZ2VuY29uZi5jICQoQUspICQoR0VOQ09ORl9ERVBTKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKKysjCSQoQ0NBVVhfKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChPXykkKEdFTkNPTkZfWEUpICQoR0xTUkMpZ2VuY29uZi5jICQoQVVYRVhUUkFMSUJTKQorKyMKKysjJChHRU5ERVZfWEUpOiAkKEdMU1JDKWdlbmRldi5jICQoQUspICQoR0VOREVWX0RFUFMpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQorKyMJJChDQ0FVWF8pICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKE9fKSQoR0VOREVWX1hFKSAkKEdMU1JDKWdlbmRldi5jICQoQVVYRVhUUkFMSUJTKQorKyMKKysjJChHRU5IVF9YRSk6ICQoR0xTUkMpZ2VuaHQuYyAkKEFLKSAkKEdFTkhUX0RFUFMpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQorKyMJJChDQ0FVWF8pICQoR0VOSFRfQ0ZMQUdTKSAkKE9fKSQoR0VOSFRfWEUpICQoR0xTUkMpZ2VuaHQuYyAkKEFVWEVYVFJBTElCUykKKysjCisgIyBUbyBnZXQgR1MgdG8gdXNlIHRoZSBzeXN0ZW0gemxpYiwgeW91IHJlbW92ZS9oaWRlIHRoZSBncy96bGliIGRpcmVjdG9yeQorICMgd2hpY2ggbWVhbnMgdGhhdCB0aGUgbWtyb21mcyBidWlsZCBjYW4ndCBmaW5kIHRoZSB6bGliIHNvdXJjZSBpdCBuZWVkcy4KKyAjIFNvIGl0J3Mgc3BsaXQgaW50byB0d28gdGFyZ2V0cywgb25lIHVzaW5nIHRoZSB6bGliIHNvdXJjZSBkaXJlY3RseS4uLi4uCiAtTUtST01GU19PQkpTXzA9JChNS1JPTUZTX1pMSUJfT0JKUykgJChBVVgpZ3BtaXNjLiQoT0JKKSAkKEFVWClncF9nZXRudi4kKE9CSikgXAogLSAkKEFVWClnc2NkZWZzLiQoT0JKKSAkKEFVWClncF91bml4LiQoT0JKKSAkKEFVWClncF91bmlmcy4kKE9CSikgJChBVVgpZ3BfdW5pZm4uJChPQkopIFwKIC0gJChBVVgpZ3Bfc3RkaWEuJChPQkopICQoQVVYKWdzdXRpbC4kKE9CSikgJChBVVgpbWVtZW50by4kKE9CSikKIC0KLS0kKE1LUk9NRlNfWEUpXzA6ICQoR0xTUkMpbWtyb21mcy5jICQoTUtST01GU19DT01NT05fREVQUykgJChNS1JPTUZTX09CSlNfMCkgJChNQUtFRElSUykKKy0kKE1LUk9NRlNfWEUpXzA6ICQoR0xTUkMpbWtyb21mcy5jICQoTUtST01GU19DT01NT05fREVQUykgJChNS1JPTUZTX09CSlNfMCkgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCiAtCSQoQ0NBVVhfKSAkKEdFTk9QVCkgJChDRkxBR1MpICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKElfKSQoR0xPQkopJChfSSkgJChJXykkKFpTUkNESVIpJChfSSkgJChHTFNSQylta3JvbWZzLmMgJChPXykkKE1LUk9NRlNfWEUpXzAgJChNS1JPTUZTX09CSlNfMCkgJChBVVhFWFRSQUxJQlMpCiAtCi0tIyAuLi4uIGFuZCBvbmUgdXNpbmcgdGhlIHpsaWIgbGlicmFyeSBsaW5rZWQgdmlhIHRoZSBjb21tYW5kIGxpbmUKKysjTUtST01GU19PQkpTXzA9JChNS1JPTUZTX1pMSUJfT0JKUykgJChBVVgpZ3BtaXNjLiQoT0JKKSAkKEFVWClncF9nZXRudi4kKE9CSikgXAorKyMgJChBVVgpZ3NjZGVmcy4kKE9CSikgJChBVVgpZ3BfdW5peC4kKE9CSikgJChBVVgpZ3BfdW5pZnMuJChPQkopICQoQVVYKWdwX3VuaWZuLiQoT0JKKSBcCisrIyAkKEFVWClncF9zdGRpYS4kKE9CSikgJChBVVgpZ3N1dGlsLiQoT0JKKSAkKEFVWCltZW1lbnRvLiQoT0JKKQorKyMKKysjJChNS1JPTUZTX1hFKV8wOiAkKEdMU1JDKW1rcm9tZnMuYyAkKE1LUk9NRlNfQ09NTU9OX0RFUFMpICQoTUtST01GU19PQkpTXzApICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQorKyMJJChDQ0FVWF8pICQoR0VOT1BUKSAkKENGTEFHUykgJChJXykkKEdMU1JDRElSKSQoX0kpICQoSV8pJChHTE9CSikkKF9JKSAkKElfKSQoWlNSQ0RJUikkKF9JKSAkKEdMU1JDKW1rcm9tZnMuYyAkKE9fKSQoTUtST01GU19YRSlfMCAkKE1LUk9NRlNfT0JKU18wKSAkKEFVWEVYVFJBTElCUykKKysjCisgIyAuLi4uIGFuZCBvbmUgdXNpbmcgdGhlIHpsaWIgbGlicmFyeSBsaW5rZWQgdmlhIHRoZSBjb21tYW5kIGxpbmUKIC1NS1JPTUZTX09CSlNfMT0kKEFVWClnc2NkZWZzLiQoT0JKKSBcCiAtICQoQVVYKWdwbWlzYy4kKE9CSikgJChBVVgpZ3BfZ2V0bnYuJChPQkopIFwKIC0gJChBVVgpZ3BfdW5peC4kKE9CSikgJChBVVgpZ3BfdW5pZnMuJChPQkopICQoQVVYKWdwX3VuaWZuLiQoT0JKKSBcCiAtICQoQVVYKWdwX3N0ZGlhLiQoT0JKKSAkKEFVWClnc3V0aWwuJChPQkopCiAtCi0tJChNS1JPTUZTX1hFKV8xOiAkKEdMU1JDKW1rcm9tZnMuYyAkKE1LUk9NRlNfQ09NTU9OX0RFUFMpICQoTUtST01GU19PQkpTXzEpICQoTUFLRURJUlMpCistJChNS1JPTUZTX1hFKV8xOiAkKEdMU1JDKW1rcm9tZnMuYyAkKE1LUk9NRlNfQ09NTU9OX0RFUFMpICQoTUtST01GU19PQkpTXzEpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQogLQkkKENDQVVYXykgJChHRU5PUFQpICQoQ0ZMQUdTKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChJXykkKEdMT0JKKSQoX0kpICQoSV8pJChaU1JDRElSKSQoX0kpICQoR0xTUkMpbWtyb21mcy5jICQoT18pJChNS1JPTUZTX1hFKV8xICQoTUtST01GU19PQkpTXzEpICQoQVVYRVhUUkFMSUJTKQogLQotLSQoTUtST01GU19YRSk6ICQoTUtST01GU19YRSlfJChTSEFSRV9aTElCKSAkKE1BS0VESVJTKQorLSQoTUtST01GU19YRSk6ICQoTUtST01GU19YRSlfJChTSEFSRV9aTElCKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKIC0JJChDUF8pICQoTUtST01GU19YRSlfJChTSEFSRV9aTElCKSAkKE1LUk9NRlNfWEUpCi0rIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQXV4aWxpYXJ5IHByb2dyYW1zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCi0rIwotKyMkKEVDSE9HU19YRSk6ICQoR0xTUkMpZWNob2dzLmMgJChBSykgJChzdGRwcmVfaCkgJChNQUtFRElSUykKLSsjCSQoQ0NBVVhfKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChPXykkKEVDSE9HU19YRSkgJChHTFNSQyllY2hvZ3MuYyAkKEFVWEVYVFJBTElCUykKLSsjCi0rIyMgT24gdGhlIFJTLzYwMDAgKGF0IGxlYXN0KSwgY29tcGlsaW5nIGdlbmFyY2guYyB3aXRoIGdjYyB3aXRoIC1PCi0rIyMgcHJvZHVjZXMgYSBidWdneSBleGVjdXRhYmxlLgotKyMkKEdFTkFSQ0hfWEUpOiAkKEdMU1JDKWdlbmFyY2guYyAkKEFLKSAkKEdFTkFSQ0hfREVQUykgJChNQUtFRElSUykKLSsjCSQoQ0NBVVhfKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChPXykkKEdFTkFSQ0hfWEUpICQoR0xTUkMpZ2VuYXJjaC5jICQoQVVYRVhUUkFMSUJTKQotKyMKLSsjJChHRU5DT05GX1hFKTogJChHTFNSQylnZW5jb25mLmMgJChBSykgJChHRU5DT05GX0RFUFMpICQoTUFLRURJUlMpCi0rIwkkKENDQVVYXykgJChJXykkKEdMU1JDRElSKSQoX0kpICQoT18pJChHRU5DT05GX1hFKSAkKEdMU1JDKWdlbmNvbmYuYyAkKEFVWEVYVFJBTElCUykKLSsjCi0rIyQoR0VOREVWX1hFKTogJChHTFNSQylnZW5kZXYuYyAkKEFLKSAkKEdFTkRFVl9ERVBTKSAkKE1BS0VESVJTKQotKyMJJChDQ0FVWF8pICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKE9fKSQoR0VOREVWX1hFKSAkKEdMU1JDKWdlbmRldi5jICQoQVVYRVhUUkFMSUJTKQotKyMKLSsjJChHRU5IVF9YRSk6ICQoR0xTUkMpZ2VuaHQuYyAkKEFLKSAkKEdFTkhUX0RFUFMpICQoTUFLRURJUlMpCi0rIwkkKENDQVVYXykgJChHRU5IVF9DRkxBR1MpICQoT18pJChHRU5IVF9YRSkgJChHTFNSQylnZW5odC5jICQoQVVYRVhUUkFMSUJTKQotKyMKLSsjIyBUbyBnZXQgR1MgdG8gdXNlIHRoZSBzeXN0ZW0gemxpYiwgeW91IHJlbW92ZS9oaWRlIHRoZSBncy96bGliIGRpcmVjdG9yeQotKyMjIHdoaWNoIG1lYW5zIHRoYXQgdGhlIG1rcm9tZnMgYnVpbGQgY2FuJ3QgZmluZCB0aGUgemxpYiBzb3VyY2UgaXQgbmVlZHMuCi0rIyMgU28gaXQncyBzcGxpdCBpbnRvIHR3byB0YXJnZXRzLCBvbmUgdXNpbmcgdGhlIHpsaWIgc291cmNlIGRpcmVjdGx5Li4uLi4KLSsjTUtST01GU19PQkpTXzA9JChNS1JPTUZTX1pMSUJfT0JKUykgJChBVVgpZ3BtaXNjLiQoT0JKKSAkKEFVWClncF9nZXRudi4kKE9CSikgXAotKyMgJChBVVgpZ3NjZGVmcy4kKE9CSikgJChBVVgpZ3BfdW5peC4kKE9CSikgJChBVVgpZ3BfdW5pZnMuJChPQkopICQoQVVYKWdwX3VuaWZuLiQoT0JKKSBcCi0rIyAkKEFVWClncF9zdGRpYS4kKE9CSikgJChBVVgpZ3N1dGlsLiQoT0JKKSAkKEFVWCltZW1lbnRvLiQoT0JKKQotKyMKLSsjJChNS1JPTUZTX1hFKV8wOiAkKEdMU1JDKW1rcm9tZnMuYyAkKE1LUk9NRlNfQ09NTU9OX0RFUFMpICQoTUtST01GU19PQkpTXzApICQoTUFLRURJUlMpCi0rIwkkKENDQVVYXykgJChHRU5PUFQpICQoQ0ZMQUdTKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChJXykkKEdMT0JKKSQoX0kpICQoSV8pJChaU1JDRElSKSQoX0kpICQoR0xTUkMpbWtyb21mcy5jICQoT18pJChNS1JPTUZTX1hFKV8wICQoTUtST01GU19PQkpTXzApICQoQVVYRVhUUkFMSUJTKQotKyMKLSsjIyAuLi4uIGFuZCBvbmUgdXNpbmcgdGhlIHpsaWIgbGlicmFyeSBsaW5rZWQgdmlhIHRoZSBjb21tYW5kIGxpbmUKICsjTUtST01GU19PQkpTXzE9JChBVVgpZ3NjZGVmcy4kKE9CSikgXAogKyMgJChBVVgpZ3BtaXNjLiQoT0JKKSAkKEFVWClncF9nZXRudi4kKE9CSikgXAogKyMgJChBVVgpZ3BfdW5peC4kKE9CSikgJChBVVgpZ3BfdW5pZnMuJChPQkopICQoQVVYKWdwX3VuaWZuLiQoT0JKKSBcCiArIyAkKEFVWClncF9zdGRpYS4kKE9CSikgJChBVVgpZ3N1dGlsLiQoT0JKKQogKyMKLSsjJChNS1JPTUZTX1hFKV8xOiAkKEdMU1JDKW1rcm9tZnMuYyAkKE1LUk9NRlNfQ09NTU9OX0RFUFMpICQoTUtST01GU19PQkpTXzEpICQoTUFLRURJUlMpCisrIyQoTUtST01GU19YRSlfMTogJChHTFNSQylta3JvbWZzLmMgJChNS1JPTUZTX0NPTU1PTl9ERVBTKSAkKE1LUk9NRlNfT0JKU18xKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKICsjCSQoQ0NBVVhfKSAkKEdFTk9QVCkgJChDRkxBR1MpICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKElfKSQoR0xPQkopJChfSSkgJChJXykkKFpTUkNESVIpJChfSSkgJChHTFNSQylta3JvbWZzLmMgJChPXykkKE1LUk9NRlNfWEUpXzEgJChNS1JPTUZTX09CSlNfMSkgJChBVVhFWFRSQUxJQlMpCiArIwotKyMkKE1LUk9NRlNfWEUpOiAkKE1LUk9NRlNfWEUpXyQoU0hBUkVfWkxJQikgJChNQUtFRElSUykKKysjJChNS1JPTUZTX1hFKTogJChNS1JPTUZTX1hFKV8kKFNIQVJFX1pMSUIpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQogKyMJJChDUF8pICQoTUtST01GU19YRSlfJChTSEFSRV9aTElCKSAkKE1LUk9NRlNfWEUpCiAgCiAgIyBRdWVyeSB0aGUgZW52aXJvbm1lbnQgdG8gY29uc3RydWN0IGdjb25maWdfLmguCiAgIyBUaGVzZSBhcmUgYWxsIGRlZmluZWQgY29uZGl0aW9uYWxseSAoZXhjZXB0IHRoZSBKYXNQRVIgb25lKSwgc28gdGhhdAorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L3BuZ19tYWsucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L3BuZ19tYWsucGF0Y2gKaW5kZXggZGE5MDBlYS4uOGI4NDk4NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9wbmdfbWFrLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvcG5nX21hay5wYXRjaApAQCAtMSwyMSArMSwzMiBAQAogZ2hvc3RzY3JpcHQ6IGFkZCBkZXBlbmRlbmN5IGZvciBwbmdsaWJjb25mLmgKLSAgICAKKwogV2hlbiB1c2luZyBwYXJhbGxlbCBtYWtlIGpvYnMsIHdlIG5lZWQgdG8gYmUgc3VyZSB0aGF0CiBwbmdsaWJjb25mLmggaXMgY3JlYXRlZCBiZWZvcmUgd2UgdHJ5IHRvIHJlZmVyZW5jZSBpdCwKIHNvIGFkZCBhIHJ1bGUgdG8gcG5nLm1hay4KIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0gICAgCisKIFNpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpzbGF0ZXJAd2luZHJpdmVyLmNvbT4KIAorUmViYXNlIHRvIDkuMTkKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGJhc2UvcG5nLm1hayB8IDIgKysKKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9iYXNlL3BuZy5tYWsgYi9iYXNlL3BuZy5tYWsKK2luZGV4IGZlNWM2ZTIuLjhhYmI1M2EgMTAwNjQ0CiAtLS0gYS9iYXNlL3BuZy5tYWsKICsrKyBiL2Jhc2UvcG5nLm1hawotQEAgLTgxLDYgKzgxLDggQEAgcG5nLmNvbmZpZy1jbGVhbiA6Ci0gJChwbmdsaWJjb25mX2gpIDogJChQTkdTUkMpc2NyaXB0cyQoRClwbmdsaWJjb25mLmgucHJlYnVpbHQKLSAJJChDUF8pICAkKFBOR1NSQylzY3JpcHRzJChEKXBuZ2xpYmNvbmYuaC5wcmVidWlsdCAkKHBuZ2xpYmNvbmZfaCkKK0BAIC03NCw2ICs3NCw4IEBAIHBuZy5jbGVhbi1ub3QtY29uZmlnLWNsZWFuIDoKKyAKKyBwbmdsaWJjb25mX2g9JChQTkdHRU5ESVIpJChEKXBuZ2xpYmNvbmYuaAogIAogKyQoTUFLRURJUlMpIDogJChwbmdsaWJjb25mX2gpCiArCi0gUERFUD0kKEFLKSAkKHBuZ2xpYmNvbmZfaCkgJChNQUtFRElSUykKLSAKLSBwbmdfMT0kKFBOR09CSilwbmcuJChPQkopICQoUE5HT0JKKXBuZ21lbS4kKE9CSikgJChQTkdPQkopcG5nZXJyb3IuJChPQkopICQoUE5HT0JKKXBuZ3NldC4kKE9CSikKKyBwbmcuY29uZmlnLWNsZWFuIDoKKyAJJChSTV8pICQocG5nbGliY29uZl9oKQorIAkkKFJNXykgJChQTkdHRU4pbHBnKi5kZXYKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdF85LjE4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdF85LjE4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNDIyMmM3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHRfOS4xOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwNyArMCwwIEBACi1TVU1NQVJZID0gIlRoZSBHUEwgR2hvc3RzY3JpcHQgUG9zdFNjcmlwdC9QREYgaW50ZXJwcmV0ZXIiCi1ERVNDUklQVElPTiA9ICJHaG9zdHNjcmlwdCBpcyB1c2VkIGZvciBQb3N0U2NyaXB0L1BERiBwcmV2aWV3IGFuZCBwcmludGluZy4gIFVzdWFsbHkgYXMgXAotYSBiYWNrLWVuZCB0byBhIHByb2dyYW0gc3VjaCBhcyBnaG9zdHZpZXcsIGl0IGNhbiBkaXNwbGF5IFBvc3RTY3JpcHQgYW5kIFBERiBcCi1kb2N1bWVudHMgaW4gYW4gWDExIGVudmlyb25tZW50LiBcCi1cCi1GdXJ0aGVybW9yZSwgaXQgY2FuIHJlbmRlciBQb3N0U2NyaXB0IGFuZCBQREYgZmlsZXMgYXMgZ3JhcGhpY3MgdG8gYmUgcHJpbnRlZCBcCi1vbiBub24tUG9zdFNjcmlwdCBwcmludGVycy4gU3VwcG9ydGVkIHByaW50ZXJzIGluY2x1ZGUgY29tbW9uIFwKLWRvdC1tYXRyaXgsIGlua2pldCBhbmQgbGFzZXIgbW9kZWxzLiBcCi0iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lmdob3N0c2NyaXB0LmNvbSIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLQotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWIxN2NlYTU0NzQzNDM1YWIyYTU4MWMyMzdiZWEyOTRhIgotCi1ERVBFTkRTID0gImdob3N0c2NyaXB0LW5hdGl2ZSB0aWZmIGpwZWcgZm9udGNvbmZpZyBjdXBzIGxpYnBuZyIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gImxpYnBuZy1uYXRpdmUiCi0KLVNSQ19VUklfQkFTRSA9ICJodHRwOi8vZG93bmxvYWRzLmdob3N0c2NyaXB0LmNvbS9wdWJsaWMvZ2hvc3RzY3JpcHQtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgICAgICBmaWxlOi8vZ2hvc3RzY3JpcHQtOS4xNS1wYXJhbGxlbC1tYWtlLnBhdGNoIFwKLSAgICAgICAgICAgICAgICBmaWxlOi8vZ2hvc3RzY3JpcHQtOS4xNi1XZXJyb3ItcmV0dXJuLXR5cGUucGF0Y2ggXAotICAgICAgICAgICAgICAgIGZpbGU6Ly9wbmdfbWFrLnBhdGNoIFwKLSAgICAgICAgICAgICAgICBmaWxlOi8vMDAwMS1CdWctNjk2NDk3LUZpeC1zdXBwb3J0LWZvci1idWlsZGluZy13aXRoLW5vLWpiaWcyLWRlLnBhdGNoIFwKLSAgICAgICAgICAgICAgICBmaWxlOi8vMDAwMi1CdWctNjk2NDk3LXBhcnQtMi1maXgtc3VwcG9ydC1mb3ItYnVpbGRpbmctd2l0aC1hLUpQLnBhdGNoIFwKLSAgICAgICAgICAgICAgICBmaWxlOi8vZG8tbm90LWNoZWNrLWxvY2FsLWxpYnBuZy1zb3VyY2UucGF0Y2ggXAotIgotCi1TUkNfVVJJID0gIiR7U1JDX1VSSV9CQVNFfSBcCi0gICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjAyLXByZXZlbnRfcmVjb21waWxpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ2hvc3RzY3JpcHQtOS4wMi1nZW5hcmNoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL29iamFyY2guaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jdXBzLW5vLWdjcnlwdC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSV9jbGFzcy1uYXRpdmUgPSAiJHtTUkNfVVJJX0JBU0V9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC1uYXRpdmUtZml4LWRpc2FibGUtc3lzdGVtLWxpYnRpZmYucGF0Y2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2Jhc2UtZ2VuaHQuYy1hZGQtYS1wcmVwcm9jZXNzb3ItZGVmaW5lLXRvLWFsbG93LWZvcGUucGF0Y2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzNhNDc1NjdkN2E1OTFjMDBhMjUzY2FkZGQxMmE4OGEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWZjOTMwNzk3NDlhMjUwYmU1NDA0YzQ2NTk0Mzg1MGUzZWQ1ZmZiYzBkNWMwN2UxMGM3YzVlZThhZmJiZGIxYiIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC14IC0td2l0aC1zeXN0ZW0tbGlidGlmZiAtLXdpdGhvdXQtamJpZzJkZWMgXAotICAgICAgICAgICAgICAgIC0td2l0aC1mb250cGF0aD0ke2RhdGFkaXJ9L2ZvbnRzIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtbGliaWRuIC0td2l0aC1jdXBzLXNlcnZlcmJpbj0ke2V4ZWNfcHJlZml4fS9saWIvY3VwcyBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWN1cHMtZGF0YWRpcj0ke2RhdGFkaXJ9L2N1cHMgXAotICAgICAgICAgICAgICAgICR7QGJhc2VfY29uZGl0aW9uYWwoJ1NJVEVJTkZPX0VORElBTk5FU1MnLCAnbGUnLCAnLS1lbmFibGUtbGl0dGxlLWVuZGlhbicsICctLWVuYWJsZS1iaWctZW5kaWFuJywgZCl9IFwKLSAgICAgICAgICAgICAgICAiCi0KLUVYVFJBX09FQ09ORl9hcHBlbmRfbWlwcyA9ICIgLS13aXRoLWxhcmdlX2NvbG9yX2luZGV4PTAiCi1FWFRSQV9PRUNPTkZfYXBwZW5kX21pcHNlbCA9ICIgLS13aXRoLWxhcmdlX2NvbG9yX2luZGV4PTAiCi0KLSMgRXhwbGljaXR5IGRpc2FibGUgbGlidGlmZiwgZm9udGNvbmZpZywKLSMgZnJlZXR5cGUsIGN1cHMgZm9yIGdob3N0c2NyaXB0LW5hdGl2ZQotRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLXdpdGhvdXQteCAtLXdpdGgtc3lzdGVtLWxpYnRpZmY9bm8gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtamJpZzJkZWMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgtZm9udHBhdGg9JHtkYXRhZGlyfS9mb250cyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aG91dC1saWJpZG4gLS1kaXNhYmxlLWZvbnRjb25maWcgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZnJlZXR5cGUgLS1kaXNhYmxlLWN1cHMiCi0KLSMgVGhpcyBoYXMgYmVlbiBmaXhlZCB1cHN0cmVhbSBidXQgZm9yIG5vdyB3ZSBuZWVkIHRvIHN1YnZlcnQgdGhlIGNoZWNrIGZvciB0aW1lLmgKLSMgaHR0cDovL2J1Z3MuZ2hvc3RzY3JpcHQuY29tL3Nob3dfYnVnLmNnaT9pZD02OTI0NDMKLSMgaHR0cDovL2J1Z3MuZ2hvc3RzY3JpcHQuY29tL3Nob3dfYnVnLmNnaT9pZD02OTI0MjYKLUNGTEFHUyArPSAiLURIQVZFX1NZU19USU1FX0g9MSIKLUJVSUxEX0NGTEFHUyArPSAiLURIQVZFX1NZU19USU1FX0g9MSIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCW1rZGlyIC1wIG9iagotCW1rZGlyIC1wIHNvb2JqCi0JaWYgWyAtZSAke1dPUktESVJ9L29iamFyY2guaCBdOyB0aGVuCi0JCWNwICR7V09SS0RJUn0vb2JqYXJjaC5oIG9iai9hcmNoLmgKLQlmaQotfQotCi1kb19jb25maWd1cmVfYXBwZW5kICgpIHsKLQkjIGNvcHkgdG9vbHMgZnJvbSB0aGUgbmF0aXZlIGdob3N0c2NyaXB0IGJ1aWxkCi0JaWYgWyAiJHtQTn0iICE9ICJnaG9zdHNjcmlwdC1uYXRpdmUiIF07IHRoZW4KLQkJbWtkaXIgLXAgb2JqL2F1eCBzb29iagotCQlmb3IgaSBpbiBnZW5hcmNoIGdlbmNvbmYgbWtyb21mcyBlY2hvZ3MgZ2VuZGV2IGdlbmh0OyBkbwotCQkJY3AgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2dob3N0c2NyaXB0LSR7UFZ9LyRpIG9iai9hdXgvJGkKLQkJZG9uZQotCWZpCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICBta2RpciAtcCAke0R9JHtkYXRhZGlyfS9naG9zdHNjcmlwdC8ke1BWfS8KLSAgICBjcCAtciAke1N9L1Jlc291cmNlICR7RH0ke2RhdGFkaXJ9L2dob3N0c2NyaXB0LyR7UFZ9LwotICAgIGNwIC1yICR7U30vaWNjcHJvZmlsZXMgJHtEfSR7ZGF0YWRpcn0vZ2hvc3RzY3JpcHQvJHtQVn0vCi19Ci0KLWRvX2NvbXBpbGVfY2xhc3MtbmF0aXZlICgpIHsKLSAgICBta2RpciAtcCBvYmoKLSAgICBmb3IgaSBpbiBnZW5hcmNoIGdlbmNvbmYgbWtyb21mcyBlY2hvZ3MgZ2VuZGV2IGdlbmh0OyBkbwotICAgICAgICBvZV9ydW5tYWtlIG9iai9hdXgvJGkKLSAgICBkb25lCi19Ci0KLWRvX2luc3RhbGxfY2xhc3MtbmF0aXZlICgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vZ2hvc3RzY3JpcHQtJHtQVn0KLSAgICBmb3IgaSBpbiBnZW5hcmNoIGdlbmNvbmYgbWtyb21mcyBlY2hvZ3MgZ2VuZGV2IGdlbmh0OyBkbwotICAgICAgICBpbnN0YWxsIC1tIDc1NSBvYmovYXV4LyRpICR7RH0ke2JpbmRpcn0vZ2hvc3RzY3JpcHQtJHtQVn0vJGkKLSAgICBkb25lCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdF85LjE5LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdF85LjE5LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlMjAxNmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0XzkuMTkuYmIKQEAgLTAsMCArMSwxMDYgQEAKK1NVTU1BUlkgPSAiVGhlIEdQTCBHaG9zdHNjcmlwdCBQb3N0U2NyaXB0L1BERiBpbnRlcnByZXRlciIKK0RFU0NSSVBUSU9OID0gIkdob3N0c2NyaXB0IGlzIHVzZWQgZm9yIFBvc3RTY3JpcHQvUERGIHByZXZpZXcgYW5kIHByaW50aW5nLiAgVXN1YWxseSBhcyBcCithIGJhY2stZW5kIHRvIGEgcHJvZ3JhbSBzdWNoIGFzIGdob3N0dmlldywgaXQgY2FuIGRpc3BsYXkgUG9zdFNjcmlwdCBhbmQgUERGIFwKK2RvY3VtZW50cyBpbiBhbiBYMTEgZW52aXJvbm1lbnQuIFwKK1wKK0Z1cnRoZXJtb3JlLCBpdCBjYW4gcmVuZGVyIFBvc3RTY3JpcHQgYW5kIFBERiBmaWxlcyBhcyBncmFwaGljcyB0byBiZSBwcmludGVkIFwKK29uIG5vbi1Qb3N0U2NyaXB0IHByaW50ZXJzLiBTdXBwb3J0ZWQgcHJpbnRlcnMgaW5jbHVkZSBjb21tb24gXAorZG90LW1hdHJpeCwgaW5ramV0IGFuZCBsYXNlciBtb2RlbHMuIFwKKyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ2hvc3RzY3JpcHQuY29tIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YjE3Y2VhNTQ3NDM0MzVhYjJhNTgxYzIzN2JlYTI5NGEiCisKK0RFUEVORFMgPSAiZ2hvc3RzY3JpcHQtbmF0aXZlIHRpZmYganBlZyBmb250Y29uZmlnIGN1cHMgbGlicG5nIgorREVQRU5EU19jbGFzcy1uYXRpdmUgPSAibGlicG5nLW5hdGl2ZSIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9BcnRpZmV4U29mdHdhcmUvZ2hvc3RwZGwtZG93bmxvYWRzL3JlbGVhc2VzIgorCitTUkNfVVJJX0JBU0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL0FydGlmZXhTb2Z0d2FyZS9naG9zdHBkbC1kb3dubG9hZHMvcmVsZWFzZXMvZG93bmxvYWQvZ3M5MTkvJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LTkuMTUtcGFyYWxsZWwtbWFrZS5wYXRjaCBcCisgICAgICAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LTkuMTYtV2Vycm9yLXJldHVybi10eXBlLnBhdGNoIFwKKyAgICAgICAgICAgICAgICBmaWxlOi8vcG5nX21hay5wYXRjaCBcCisgICAgICAgICAgICAgICAgZmlsZTovL2RvLW5vdC1jaGVjay1sb2NhbC1saWJwbmctc291cmNlLnBhdGNoIFwKKyIKKworU1JDX1VSSSA9ICIke1NSQ19VUklfQkFTRX0gXAorICAgICAgICAgICBmaWxlOi8vZ2hvc3RzY3JpcHQtOS4wMi1wcmV2ZW50X3JlY29tcGlsaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LTkuMDItZ2VuYXJjaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vYmphcmNoLmggXAorICAgICAgICAgICBmaWxlOi8vY3Vwcy1uby1nY3J5cHQucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklfY2xhc3MtbmF0aXZlID0gIiR7U1JDX1VSSV9CQVNFfSBcCisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2hvc3RzY3JpcHQtbmF0aXZlLWZpeC1kaXNhYmxlLXN5c3RlbS1saWJ0aWZmLnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9iYXNlLWdlbmh0LmMtYWRkLWEtcHJlcHJvY2Vzc29yLWRlZmluZS10by1hbGxvdy1mb3BlLnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImM5NjgyY2U2Yjg1MmY5MTk3YzY5OTA1YTQzOTI4OTA3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImNmM2MwZGNlNjdkYjE1NTdhODczNjY5Njk5NDVmOWM1MjM1ODg3OTg5YzBiNTg1ZTAzN2FmMzY2ZGMwMzU5ODkiCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGhvdXQteCAtLXdpdGgtc3lzdGVtLWxpYnRpZmYgLS13aXRob3V0LWpiaWcyZGVjIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtZm9udHBhdGg9JHtkYXRhZGlyfS9mb250cyBcCisgICAgICAgICAgICAgICAgLS13aXRob3V0LWxpYmlkbiAtLXdpdGgtY3Vwcy1zZXJ2ZXJiaW49JHtleGVjX3ByZWZpeH0vbGliL2N1cHMgXAorICAgICAgICAgICAgICAgIC0td2l0aC1jdXBzLWRhdGFkaXI9JHtkYXRhZGlyfS9jdXBzIFwKKyAgICAgICAgICAgICAgICAiCisKK0VYVFJBX09FQ09ORl9hcHBlbmRfbWlwcyA9ICIgLS13aXRoLWxhcmdlX2NvbG9yX2luZGV4PTAiCitFWFRSQV9PRUNPTkZfYXBwZW5kX21pcHNlbCA9ICIgLS13aXRoLWxhcmdlX2NvbG9yX2luZGV4PTAiCisKKyMgRXhwbGljaXR5IGRpc2FibGUgbGlidGlmZiwgZm9udGNvbmZpZywKKyMgZnJlZXR5cGUsIGN1cHMgZm9yIGdob3N0c2NyaXB0LW5hdGl2ZQorRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLXdpdGhvdXQteCAtLXdpdGgtc3lzdGVtLWxpYnRpZmY9bm8gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtamJpZzJkZWMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgtZm9udHBhdGg9JHtkYXRhZGlyfS9mb250cyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aG91dC1saWJpZG4gLS1kaXNhYmxlLWZvbnRjb25maWcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZnJlZXR5cGUgLS1kaXNhYmxlLWN1cHMiCisKKyMgVGhpcyBoYXMgYmVlbiBmaXhlZCB1cHN0cmVhbSBidXQgZm9yIG5vdyB3ZSBuZWVkIHRvIHN1YnZlcnQgdGhlIGNoZWNrIGZvciB0aW1lLmgKKyMgaHR0cDovL2J1Z3MuZ2hvc3RzY3JpcHQuY29tL3Nob3dfYnVnLmNnaT9pZD02OTI0NDMKKyMgaHR0cDovL2J1Z3MuZ2hvc3RzY3JpcHQuY29tL3Nob3dfYnVnLmNnaT9pZD02OTI0MjYKK0NGTEFHUyArPSAiLURIQVZFX1NZU19USU1FX0g9MSIKK0JVSUxEX0NGTEFHUyArPSAiLURIQVZFX1NZU19USU1FX0g9MSIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCW1rZGlyIC1wIG9iagorCW1rZGlyIC1wIHNvb2JqCisJaWYgWyAtZSAke1dPUktESVJ9L29iamFyY2guaCBdOyB0aGVuCisJCWNwICR7V09SS0RJUn0vb2JqYXJjaC5oIG9iai9hcmNoLmgKKwlmaQorfQorCitkb19jb25maWd1cmVfYXBwZW5kICgpIHsKKwkjIGNvcHkgdG9vbHMgZnJvbSB0aGUgbmF0aXZlIGdob3N0c2NyaXB0IGJ1aWxkCisJaWYgWyAiJHtQTn0iICE9ICJnaG9zdHNjcmlwdC1uYXRpdmUiIF07IHRoZW4KKwkJbWtkaXIgLXAgb2JqL2F1eCBzb29iagorCQlmb3IgaSBpbiBnZW5hcmNoIGdlbmNvbmYgbWtyb21mcyBlY2hvZ3MgZ2VuZGV2IGdlbmh0OyBkbworCQkJY3AgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2dob3N0c2NyaXB0LSR7UFZ9LyRpIG9iai9hdXgvJGkKKwkJZG9uZQorCWZpCit9CisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICBta2RpciAtcCAke0R9JHtkYXRhZGlyfS9naG9zdHNjcmlwdC8ke1BWfS8KKyAgICBjcCAtciAke1N9L1Jlc291cmNlICR7RH0ke2RhdGFkaXJ9L2dob3N0c2NyaXB0LyR7UFZ9LworICAgIGNwIC1yICR7U30vaWNjcHJvZmlsZXMgJHtEfSR7ZGF0YWRpcn0vZ2hvc3RzY3JpcHQvJHtQVn0vCit9CisKK2RvX2NvbXBpbGVfY2xhc3MtbmF0aXZlICgpIHsKKyAgICBta2RpciAtcCBvYmoKKyAgICBmb3IgaSBpbiBnZW5hcmNoIGdlbmNvbmYgbWtyb21mcyBlY2hvZ3MgZ2VuZGV2IGdlbmh0OyBkbworICAgICAgICBvZV9ydW5tYWtlIG9iai9hdXgvJGkKKyAgICBkb25lCit9CisKK2RvX2luc3RhbGxfY2xhc3MtbmF0aXZlICgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vZ2hvc3RzY3JpcHQtJHtQVn0KKyAgICBmb3IgaSBpbiBnZW5hcmNoIGdlbmNvbmYgbWtyb21mcyBlY2hvZ3MgZ2VuZGV2IGdlbmh0OyBkbworICAgICAgICBpbnN0YWxsIC1tIDc1NSBvYmovYXV4LyRpICR7RH0ke2JpbmRpcn0vZ2hvc3RzY3JpcHQtJHtQVn0vJGkKKyAgICBkb25lCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncmVwL2dyZXAtMi41LjFhL2ZpeC1mb3ItdGV4aW5mby01LjEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyZXAvZ3JlcC0yLjUuMWEvZml4LWZvci10ZXhpbmZvLTUuMS5wYXRjaAppbmRleCA1YTQxNDljLi5jZTU5NTA5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyZXAvZ3JlcC0yLjUuMWEvZml4LWZvci10ZXhpbmZvLTUuMS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyZXAvZ3JlcC0yLjUuMWEvZml4LWZvci10ZXhpbmZvLTUuMS5wYXRjaApAQCAtMSw2ICsxLDYgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbUG9reSBTcGVjaWZpYyB0aGlzIGlzIGdwbHYyIHZlcnNpb25dCiAKLVNpZ25lZC1vZmYtYnkgU2F1bCBXb2xkIDxzZ3dAbGludXguaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogU2F1bCBXb2xkIDxzZ3dAbGludXguaW50ZWwuY29tPgogCiBJbmRleDogZ3JlcC0yLjUuMWEvZG9jL2dyZXAudGV4aQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncmVwL2dyZXAtMi41LjFhL2dyZXAtQ1ZFLTIwMTItNTY2Ny5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwLTIuNS4xYS9ncmVwLUNWRS0yMDEyLTU2NjcucGF0Y2gKaW5kZXggNzIxZjJhMC4uYTQwYTlmMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncmVwL2dyZXAtMi41LjFhL2dyZXAtQ1ZFLTIwMTItNTY2Ny5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyZXAvZ3JlcC0yLjUuMWEvZ3JlcC1DVkUtMjAxMi01NjY3LnBhdGNoCkBAIC0xMiw3ICsxMiw3IEBACiBhY2NlcHRpbmcgcGF0Y2hlcy4gIFRoaXMgaXMgbm90IGEgYmFja3BvcnQuCiBDVkU6IENWRS0yMDEyLTU2NjcKIAotU2lnbmVkLW9mZi1ieSBNaW5nIExpdSA8bWluZy5saXVAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE1pbmcgTGl1IDxtaW5nLmxpdUB3aW5kcml2ZXIuY29tPgogLS0tCiAgZ3JlcC5jIHwgICAgNyArKystLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwLTIuNS4xYS9ncmVwX2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwLTIuNS4xYS9ncmVwX2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaAppbmRleCAzY2NjZTVmLi5kOWIxZTM1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyZXAvZ3JlcC0yLjUuMWEvZ3JlcF9maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncmVwL2dyZXAtMi41LjFhL2dyZXBfZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoCkBAIC0xMyw3ICsxMyw3IEBACiB8IHNyYy9NYWtlZmlsZS5hbToyOiBlcnJvcjogYXV0b21hdGljIGRlLUFOU0ktZmljYXRpb24gc3VwcG9ydCBoYXMgYmVlbiByZW1vdmVkCiB8IGF1dG9yZWNvbmY6IGF1dG9tYWtlIGZhaWxlZCB3aXRoIGV4aXQgc3RhdHVzOiAxCiAKLVNpZ25lZC1PZmYtQnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgogMjAxMi8wNS8wNAogCiBJbmRleDogZ3JlcC0yLjUuMWEvY29uZmlndXJlLmluCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyZXAvZ3JlcF8yLjIzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncmVwL2dyZXBfMi4yMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTNmZjMyZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyZXAvZ3JlcF8yLjIzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotU1VNTUFSWSA9ICJHTlUgZ3JlcCB1dGlsaXR5IgotSE9NRVBBR0UgPSAiaHR0cDovL3NhdmFubmFoLmdudS5vcmcvcHJvamVjdHMvZ3JlcC8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9zYXZhbm5haC5nbnUub3JnL2J1Z3MvP2dyb3VwPWdyZXAiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ODAwNmQ5YzgxNDI3N2MxYmZjNGNhMjJhZjk0YjU5ZWUiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9ncmVwL2dyZXAtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImY0NmFhOWQwZDI1NzdiOTIxMmExMDQzNDhhMjg2Nzg3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU0ZmM0NzhlZTFjZTE3NzgwMTA5ODIwZWYzMDczMGM5ZTE4NzE1YTk0OWY3ZDVjNmFmYzY3M2FkYjJhNTZlY2YiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbwotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXBlcmwtcmVnZXhwIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0Jcm0gLWYgJHtTfS9tNC9pbml0Lm00Ci19Ci0KLWRvX2luc3RhbGwgKCkgewotCWF1dG90b29sc19kb19pbnN0YWxsCi0JaWYgWyAiJHtiYXNlX2JpbmRpcn0iICE9ICIke2JpbmRpcn0iIF07IHRoZW4KLQkJaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KLQkJbXYgJHtEfSR7YmluZGlyfS9ncmVwICR7RH0ke2Jhc2VfYmluZGlyfS9ncmVwCi0JCW12ICR7RH0ke2JpbmRpcn0vZWdyZXAgJHtEfSR7YmFzZV9iaW5kaXJ9L2VncmVwCi0JCW12ICR7RH0ke2JpbmRpcn0vZmdyZXAgJHtEfSR7YmFzZV9iaW5kaXJ9L2ZncmVwCi0JCXJtZGlyICR7RH0ke2JpbmRpcn0vCi0JZmkKLX0KLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAiZ3JlcCBlZ3JlcCBmZ3JlcCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtncmVwXSA9ICIke2Jhc2VfYmluZGlyfS9ncmVwIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2VncmVwXSA9ICIke2Jhc2VfYmluZGlyfS9lZ3JlcCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtmZ3JlcF0gPSAiJHtiYXNlX2JpbmRpcn0vZmdyZXAiCi0KLWV4cG9ydCBDT05GSUdfU0hFTEw9Ii9iaW4vc2giCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyZXAvZ3JlcF8yLjI1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncmVwL2dyZXBfMi4yNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzIwZDlmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncmVwL2dyZXBfMi4yNS5iYgpAQCAtMCwwICsxLDQzIEBACitTVU1NQVJZID0gIkdOVSBncmVwIHV0aWxpdHkiCitIT01FUEFHRSA9ICJodHRwOi8vc2F2YW5uYWguZ251Lm9yZy9wcm9qZWN0cy9ncmVwLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL3NhdmFubmFoLmdudS5vcmcvYnVncy8/Z3JvdXA9Z3JlcCIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04MDA2ZDljODE0Mjc3YzFiZmM0Y2EyMmFmOTRiNTllZSIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2dyZXAvZ3JlcC0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMDRlOTZiMGU2ZjBmZTZhMTgwYWU2MmM4OGZjZDBhZjYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTIxZTgzYmFjNTA0NTBlMGQwZDYxYTQyYzE1NGVlMGRjZWFhY2RiZjRmNjA0ZWY2ZTc5MDcxY2I4ZTU5NjgzMCIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtcGVybC1yZWdleHAiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwlybSAtZiAke1N9L200L2luaXQubTQKK30KKworZG9faW5zdGFsbCAoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKwlpZiBbICIke2Jhc2VfYmluZGlyfSIgIT0gIiR7YmluZGlyfSIgXTsgdGhlbgorCQlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQorCQltdiAke0R9JHtiaW5kaXJ9L2dyZXAgJHtEfSR7YmFzZV9iaW5kaXJ9L2dyZXAKKwkJbXYgJHtEfSR7YmluZGlyfS9lZ3JlcCAke0R9JHtiYXNlX2JpbmRpcn0vZWdyZXAKKwkJbXYgJHtEfSR7YmluZGlyfS9mZ3JlcCAke0R9JHtiYXNlX2JpbmRpcn0vZmdyZXAKKwkJcm1kaXIgJHtEfSR7YmluZGlyfS8KKwlmaQorfQorCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJncmVwIGVncmVwIGZncmVwIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2dyZXBdID0gIiR7YmFzZV9iaW5kaXJ9L2dyZXAiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZWdyZXBdID0gIiR7YmFzZV9iaW5kaXJ9L2VncmVwIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2ZncmVwXSA9ICIke2Jhc2VfYmluZGlyfS9mZ3JlcCIKKworZXhwb3J0IENPTkZJR19TSEVMTD0iL2Jpbi9zaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JvZmYvZ3JvZmYtMS4xOC4xLjQvZml4LW5hcnJvd2luZy1jb252ZXJzaW9uLWVycm9yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncm9mZi9ncm9mZi0xLjE4LjEuNC9maXgtbmFycm93aW5nLWNvbnZlcnNpb24tZXJyb3IucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGIwMTc2ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JvZmYvZ3JvZmYtMS4xOC4xLjQvZml4LW5hcnJvd2luZy1jb252ZXJzaW9uLWVycm9yLnBhdGNoCkBAIC0wLDAgKzEsNjEgQEAKK0Zyb20gZmMyODlhYjY5YzZkN2U0YWQ0ODkxNzI1MDlhODVmNjhhZmVjNDNlYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgMjkgSnVsIDIwMTYgMDM6MTk6MzkgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gZml4IG5hcnJvd2luZyBjb252ZXJzaW9uIGVycm9yCisKK1doaWxlIGdjYzYgdXNlZCwgYnVpbGQgb2xkIGdyb2ZmIChmb3IgYW50aS1HUEx2MyByZWFzb25zKSBmYWlsZWQ6CisuLi4uLgorfGdyb2ZmLTEuMTguMS40L3NyYy9kZXZpY2VzL2dyb2xicC9jaGFyc2V0Lmg6Njk6MTogZXJyb3I6IG5hcnJvd2luZworY29udmVyc2lvbiBvZiAnMTMwJyBmcm9tICdpbnQnIHRvICdjaGFyJyBpbnNpZGUgeyB9IFstV25hcnJvd2luZ10KKy4uLi4uLgorCitJbiB1cHN0cmVhbSBnaXQ6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9ncm9mZi5naXQsCit0aGUgZm9sbG93aW5nIGNvbW1pdCBmaXggdGhlIGlzc3VlLCBidXQgdGhlIGxpY2Vuc2UgaXMgR1BMVjMsCit3ZSBjb3VsZCBub3QgYmFja3BvcnQgaXQgdG8gdGhlIG9sZCBncm9mZiB3aGljaCBsaWNlbnNlIGlzIEdQTFYyLgorLi4uCitjb21taXQgZDE4MDAzOGFlMGRhMTk2NTViYzI3NjBhZTIwNDNlZmEwNTUwYTc2YworQXV0aG9yOiBXZXJuZXIgTEVNQkVSRyA8d2xAZ251Lm9yZz4KK0RhdGU6ICAgV2VkIEFwciAxNiAyMToxMTowNyAyMDAzICswMDAwCisgICAgKiBzcmMvZGV2aWNlcy9ncm9sYnAvY2hhcnNldC5oIChzeW1zZXQpOiBVc2UgYHVuc2lnbmVkIGNoYXInLgorLi4uCisKK1dlIHVzZSBhbm90aGVyIGRpZmZlcmVudCB3YXkgdG8gZml4IHRoZSBpc3N1ZS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9kZXZpY2VzL2dyb2xicC9jaGFyc2V0LmggfCAyICstCisgc3JjL2RldmljZXMvZ3JvbGJwL2xicC5jYyAgICB8IDQgKystLQorIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2RldmljZXMvZ3JvbGJwL2NoYXJzZXQuaCBiL3NyYy9kZXZpY2VzL2dyb2xicC9jaGFyc2V0LmgKK2luZGV4IGFkYzc2ZjQuLmU5YzZjNWIgMTAwNjQ0CistLS0gYS9zcmMvZGV2aWNlcy9ncm9sYnAvY2hhcnNldC5oCisrKysgYi9zcmMvZGV2aWNlcy9ncm9sYnAvY2hhcnNldC5oCitAQCAtMSw2ICsxLDYgQEAKKyAvLyBEZWZpbml0aW9uIG9mIHRoZSBXUDU0IGNoYXJhY3RlciBzZXQKKyAKKy1jaGFyIHN5bXNldFtdID0geworK2ludCBzeW1zZXRbXSA9IHsKKyAweDU3LDB4NTAsMHgzNSwweDM0LDB4MDAsMHg0MSwweDc2LDB4NjEsMHg2ZSwweDc0LDB4NDcsMHg2MSwKKyAweDcyLDB4NjQsMHg2NSwweDJkLDB4NDIsMHg2ZiwweDZmLDB4NmIsMHgwMCwweDQxLDB4NzYsCisgMHg2MSwweDZlLDB4NzQsMHg0NywweDYxLDB4NzIsMHg2NCwweDY1LDB4MmQsMHg0NCwweDY1LAorZGlmZiAtLWdpdCBhL3NyYy9kZXZpY2VzL2dyb2xicC9sYnAuY2MgYi9zcmMvZGV2aWNlcy9ncm9sYnAvbGJwLmNjCitpbmRleCA3NmRiMzJhLi4wMGQ0Y2E3IDEwMDY0NAorLS0tIGEvc3JjL2RldmljZXMvZ3JvbGJwL2xicC5jYworKysrIGIvc3JjL2RldmljZXMvZ3JvbGJwL2xicC5jYworQEAgLTE1Miw4ICsxNTIsOCBAQCBzdGF0aWMgdm9pZCB3cDU0Y2hhcnNldCgpCisgeworICAgdW5zaWduZWQgaW50IGk7CisgICBsYnBwdXRzKCJcMDMzWzcxNDsxMDA7Mjk7MDszMjsxMjAufSIpOworLSAgZm9yIChpID0gMDsgaSA8IHNpemVvZihzeW1zZXQpOyBpKyspCistICAgIGxicHB1dGMoc3ltc2V0W2ldKTsKKysgIGZvciAoaSA9IDA7IGkgPCBzaXplb2Yoc3ltc2V0KS9zaXplb2Yoc3ltc2V0WzBdKTsgaSsrKQorKyAgICBsYnBwdXRjKChjaGFyKXN5bXNldFtpXSYweEZGKTsKKyAgIGxicHB1dHMoIlwwMzNbMTAwOzAgRCIpOworICAgcmV0dXJuOworIH0KKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncm9mZi9ncm9mZl8xLjE4LjEuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JvZmYvZ3JvZmZfMS4xOC4xLjQuYmIKaW5kZXggYmQ3ODZhMy4uZmM3ZWI0NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncm9mZi9ncm9mZl8xLjE4LjEuNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyb2ZmL2dyb2ZmXzEuMTguMS40LmJiCkBAIC0xMyw2ICsxMyw3IEBACiAgICAgICAgICAgZmlsZTovL21hbi1sb2NhbC5wYXRjaCBcCiAgICAgICAgICAgZmlsZTovL21kb2MtbG9jYWwucGF0Y2ggXAogICAgICAgICAgIGZpbGU6Ly9ncm9mZi0xLjE4LjEuNC1maXgtYmluZGlyLnBhdGNoIFwKKyAgICAgICAgICBmaWxlOi8vZml4LW5hcnJvd2luZy1jb252ZXJzaW9uLWVycm9yLnBhdGNoIFwKICIgCiAKIGluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JvZmYvZ3JvZmZfMS4yMi4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncm9mZi9ncm9mZl8xLjIyLjMuYmIKaW5kZXggNGJmZmE4MS4uZGQyNDFmMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncm9mZi9ncm9mZl8xLjIyLjMuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncm9mZi9ncm9mZl8xLjIyLjMuYmIKQEAgLTU2LDYgKzU2LDE3IEBACiAJaWYgWyAtZSAke0R9JHtsaWJkaXJ9L2NoYXJzZXQuYWxpYXMgXTsgdGhlbgogCQlybSAtcmYgJHtEfSR7bGliZGlyfS9jaGFyc2V0LmFsaWFzCiAJZmkKKworCSMgYXdrIGlzIGxvY2F0ZWQgYXQgL3Vzci9iaW4vLCBub3QgL2Jpbi8KKwlTUEVDSUFMX0FXSz1gZmluZCAke0R9IC1uYW1lIHNwZWNpYWwuYXdrYAorCWlmIFsgLWYgJHtTUEVDSUFMX0FXS30gXTsgdGhlbgorCQlzZWQgLWkgLWUgJ3M6IyEuKmF3azojISAke1VTUkJJTlBBVEh9L2F3azonICR7U1BFQ0lBTF9BV0t9CisJZmkKKworCSMgbm90IHNoaXAgL3Vzci9iaW4vZ2xpbHlwb25kIGFuZCBpdHMgcmVsZWF0ZWQgZmlsZXMgaW4gZW1iZWRkZWQgdGFyZ2V0IHN5c3RlbQorCXJtIC1yZiAke0R9JHtiaW5kaXJ9L2dsaWx5cG9uZAorCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2dyb2ZmL2dsaWx5cG9uZAorCXJtIC1yZiAke0R9JHttYW5kaXJ9L21hbjEvZ2xpbHlwb25kKgogfQogCiBkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcC0xLjYvd3JvbmctcGF0aC1maXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcC0xLjYvd3JvbmctcGF0aC1maXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyODYzZDYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXAtMS42L3dyb25nLXBhdGgtZml4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotZml4IE1ha2VNYWtlciBpc3N1ZXMgd2l0aCB1c2luZyB3cm9uZyBTSEVMTC9HUkVQCi0KLUEgc2V0IG9mIHN1YnN0aXR1dGlvbiBpcyBiZWluZyBwcm9jZXNzZWQgdG8gYWxsIHRhcmdldCBzY3JpcHRzIHdpdGggc2VkIGJ5Ci1yZXBsYWNpbmcgc29tZSBrZXkgd29yZHMgd2l0aCB0aGUgZGV0ZWN0ZWQgdmFsdWVzIGF0IGNvbmZpZ3VyZSB0aW1lLCB0aGlzCi1pcyBleGFjdGx5IG5vdCBjb21wbGlhbnQgd2l0aCBjcm9zcyBjb21wbGluZywgYW5kIHdpbGwgY2F1c2UgbWlzc2luZyBwYXRoCi1lcnJvcnMgYXQgcnVuIHRpbWUgbGlrZToKLSIvdXNyL2Jpbi96Z3JlcDogbGluZSAyMzA6IC91c3IvYmluL2dyZXA6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkiCi0KLUZpeGVkIGJ5IHJlbW92aW5nIHVubmVlZGVkIHN1YnN0aXR1dGlvbiBhbmQgdXNpbmcgcmVhbCBydW50aW1lIHBhdGhzCi1pbnN0ZWFkLgotCi1TaWduZWQtb2ZmLWJ5OiBNaW5nIExpdSA8bWluZy5saXVAd2luZHJpdmVyLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUluZGV4OiBnemlwLTEuMy4xMi9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotZGlmZiAtdXJwTiBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLS0tLSBhL01ha2VmaWxlLmFtCTIwMTMtMTEtMzAgMTA6MDY6MDkuNDAyMjM0ODcxICswODAwCi0rKysgYi9NYWtlZmlsZS5hbQkyMDEzLTExLTMwIDEwOjEzOjQyLjk1MjIzNjAyNSArMDgwMAotQEAgLTgxLDkgKzgxLDggQEAgZ3ppcC5kb2MuZ3o6IGd6aXAuZG9jICQoYmluX1BST0dSQU1TKQotIFNVRkZJWEVTID0gLmluCi0gLmluOgotIAkkKEFNX1ZfR0VOKXNlZCBcCi0tCQktZSAnc3wvYmluL3NofCQoU0hFTEwpfGcnIFwKLSAJCS1lICdzfFtAXWJpbmRpckB8J1wnJyQoYmluZGlyKSdcJyd8ZycgXAotLQkJLWUgJ3N8W0BdR1JFUEB8JChHUkVQKXxnJyBcCi0rCQktZSAnc3xbQF1HUkVQQHwkKGJhc2VfYmluZGlyKS9ncmVwfGcnIFwKLSAJCS1lICdzfFtAXVZFUlNJT05AfCQoVkVSU0lPTil8ZycgXAotIAkJJChzcmNkaXIpLyRALmluID4kQC10IFwKLSAJICAmJiBjaG1vZCBhK3ggJEAtdCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcC0xLjgvd3JvbmctcGF0aC1maXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcC0xLjgvd3JvbmctcGF0aC1maXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGRjMTAwMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwLTEuOC93cm9uZy1wYXRoLWZpeC5wYXRjaApAQCAtMCwwICsxLDI5IEBACitmaXggTWFrZU1ha2VyIGlzc3VlcyB3aXRoIHVzaW5nIHdyb25nIFNIRUxML0dSRVAKKworQSBzZXQgb2Ygc3Vic3RpdHV0aW9uIGlzIGJlaW5nIHByb2Nlc3NlZCB0byBhbGwgdGFyZ2V0IHNjcmlwdHMgd2l0aCBzZWQgYnkKK3JlcGxhY2luZyBzb21lIGtleSB3b3JkcyB3aXRoIHRoZSBkZXRlY3RlZCB2YWx1ZXMgYXQgY29uZmlndXJlIHRpbWUsIHRoaXMKK2lzIGV4YWN0bHkgbm90IGNvbXBsaWFudCB3aXRoIGNyb3NzIGNvbXBsaW5nLCBhbmQgd2lsbCBjYXVzZSBtaXNzaW5nIHBhdGgKK2Vycm9ycyBhdCBydW4gdGltZSBsaWtlOgorIi91c3IvYmluL3pncmVwOiBsaW5lIDIzMDogL3Vzci9iaW4vZ3JlcDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSIKKworRml4ZWQgYnkgcmVtb3ZpbmcgdW5uZWVkZWQgc3Vic3RpdHV0aW9uIGFuZCB1c2luZyByZWFsIHJ1bnRpbWUgcGF0aHMKK2luc3RlYWQuCisKK1NpZ25lZC1vZmYtYnk6IE1pbmcgTGl1IDxtaW5nLmxpdUB3aW5kcml2ZXIuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworSW5kZXg6IGd6aXAtMS44L01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ3ppcC0xLjgub3JpZy9NYWtlZmlsZS5hbQorKysrIGd6aXAtMS44L01ha2VmaWxlLmFtCitAQCAtODEsOCArODEsNyBAQCBnemlwLmRvYy5nejogZ3ppcC5kb2MgJChiaW5fUFJPR1JBTVMpCisgU1VGRklYRVMgPSAuaW4KKyAuaW46CisgCSQoQU1fVl9HRU4pc2VkIFwKKy0JCS1lICdzfC9iaW4vc2h8JChTSEVMTCl8ZycgXAorLQkJLWUgJ3N8W0BdR1JFUEB8JChHUkVQKXxnJyBcCisrCQktZSAnc3xbQF1HUkVQQHwkKGJhc2VfYmluZGlyKS9ncmVwfGcnIFwKKyAJCS1lICdzfFtAXVZFUlNJT05AfCQoVkVSU0lPTil8ZycgXAorIAkJJChzcmNkaXIpLyRALmluID4kQC10IFwKKyAJICAmJiBjaG1vZCBhK3ggJEAtdCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcC5pbmMKaW5kZXggNmU4MTg4My4uMDRmOGY5NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXAuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwLmluYwpAQCAtMjIsMTEgKzIyLDYgQEAKIAlmaQogfQogCi1kb19pbnN0YWxsX2FwcGVuZF9saWJjLW11c2wgKCkgewotCXJtICR7RH0ke2xpYmRpcn0vY2hhcnNldC5hbGlhcwotCXJtZGlyICR7RH0ke2xpYmRpcn0KLX0KLQogaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCiAKIEFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwXzEuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwXzEuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjM0N2YwYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcF8xLjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1yZXF1aXJlIGd6aXAuaW5jCi0KLUxJQ0VOU0UgPSAiR1BMdjMrIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ3ppcC8ke0JQfS50YXIuZ3oiCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGZpbGU6Ly93cm9uZy1wYXRoLWZpeC5wYXRjaCIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3ppcC5oO2JlZ2lubGluZT04O2VuZGxpbmU9MjA7bWQ1PTZlNDdjYWFhNjMwZTBjOGJmOWYxYmM4ZDk0YThlZDBlIgotCi1QUk9WSURFU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBnemlwLXJlcGxhY2VtZW50LW5hdGl2ZSIKLU5BVElWRV9QQUNLQUdFX1BBVEhfU1VGRklYID0gIi8ke1BOfSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzODYwM2NiMjg0M2JmNTY4MWZmNDFhYWIzYmNkNmEyMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5N2ViODNiNzYzZDllNWFkMzVmMzUxZmU1NTE3ZTZiNzE1MjFkN2FhYzdhY2YzZTNjYWNkYjZiMTQ5NmQ4ZjdlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXBfMS44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXBfMS44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExOWI5NjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcF8xLjguYmIKQEAgLTAsMCArMSwxOCBAQAorcmVxdWlyZSBnemlwLmluYworCitMSUNFTlNFID0gIkdQTHYzKyIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2d6aXAvJHtCUH0udGFyLmd6IgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBmaWxlOi8vd3JvbmctcGF0aC1maXgucGF0Y2giCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2d6aXAuaDtiZWdpbmxpbmU9ODtlbmRsaW5lPTIwO21kNT02ZTQ3Y2FhYTYzMGUwYzhiZjlmMWJjOGQ5NGE4ZWQwZSIKKworUFJPVklERVNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZ3ppcC1yZXBsYWNlbWVudC1uYXRpdmUiCitOQVRJVkVfUEFDS0FHRV9QQVRIX1NVRkZJWCA9ICIvJHtQTn0iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzMyNTUzMTUyODE0YjIyZGMzNWFhMDI2N2RmNTI4NmMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWZmN2FlZGIzZDY2YTBkNzNmNDQyZjYyNjFlNGIzODYwZGY2ZmQ2Yzk0MDI1YzJjYjMxYTIwMmM5YzYwZmUwZSIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9oZHBhcm0vaGRwYXJtXzkuNDguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2hkcGFybS9oZHBhcm1fOS40OC5iYgppbmRleCBlYzNkMjZmNC4uY2Q4NTc3NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9oZHBhcm0vaGRwYXJtXzkuNDguYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9oZHBhcm0vaGRwYXJtXzkuNDguYmIKQEAgLTIsOCArMiwxMiBAQAogREVTQ1JJUFRJT04gPSAiaGRwYXJtIGlzIGEgTGludXggc2hlbGwgdXRpbGl0eSBmb3Igdmlld2luZyBcCiBhbmQgbWFuaXB1bGF0aW5nIHZhcmlvdXMgSURFIGRyaXZlIGFuZCBkcml2ZXIgcGFyYW1ldGVycy4iCiBTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkJTRCIKKworTElDRU5TRSA9ICJCU0QgJiBHUEx2MiIKK0xJQ0VOU0VfJHtQTn0gPSAiQlNEIgorTElDRU5TRV8ke1BOfS1kYmcgPSAiQlNEIgogTElDRU5TRV93aXBlciA9ICJHUEx2MiIKKwogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5UWFQ7bWQ1PTkxMGE4YTQyYzk2MmQyMzg2MTljNzVmZGI3OGJkYjI0IFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PWE4MmQ3YmEzYWRlOWU4ZWM5MDI3NDlkYjk4YzU5MmYzIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3dpcGVyL0dQTHYyLnR4dDttZDU9ZmNiMDJkYzU1MmEwNDFkZWUyN2U0Yjg1YzczOTYwNjcgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pbWFnZXMvY29yZS1pbWFnZS1rZXJuZWwtZGV2LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pbWFnZXMvY29yZS1pbWFnZS1rZXJuZWwtZGV2LmJiCmluZGV4IDI2Yjg4YzkuLmE0MGIzYWEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaW1hZ2VzL2NvcmUtaW1hZ2Uta2VybmVsLWRldi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy9jb3JlLWltYWdlLWtlcm5lbC1kZXYuYmIKQEAgLTE0LDcgKzE0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCiAKICMgV2UgbmVlZCBleHRyYSBzcGFjZSBmb3IgdGhpbmdzIGxpa2Uga2VybmVsIGJ1aWxkcywgZXRjLgotSU1BR0VfUk9PVEZTX0VYVFJBX1NQQUNFX2FwcGVuZCArPSAiKyAzMDAwMDAwIgorSU1BR0VfUk9PVEZTX0VYVFJBX1NQQUNFX2FwcGVuZCA9ICIgKyAzMDAwMDAwIgogCiAjIExldCdzIGRlZmluZSBvdXIgb3duIHN1YnNldCB0byB0ZXN0LCB3ZSBjYW4gbGF0ZXIgYWRkIGEgb24tdGFyZ2V0IGtlcm5lbCBidWlsZCBldmVuIQogREVGQVVMVF9URVNUX1NVSVRFUyA9ICJwaW5nIHNzaCBkZiBjb25ubWFuIHN5c2xvZyBzY3AgZGF0ZSBwYXJzZWxvZ3MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy9jb3JlLWltYWdlLXRlc3RtYXN0ZXItaW5pdHJhbWZzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pbWFnZXMvY29yZS1pbWFnZS10ZXN0bWFzdGVyLWluaXRyYW1mcy5iYgppbmRleCBhZDE0MDdjLi4wOWE2ZDE2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy9jb3JlLWltYWdlLXRlc3RtYXN0ZXItaW5pdHJhbWZzLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaW1hZ2VzL2NvcmUtaW1hZ2UtdGVzdG1hc3Rlci1pbml0cmFtZnMuYmIKQEAgLTE4LDMgKzE4LDYgQEAKIElNQUdFX1JPT1RGU19TSVpFID0gIjgxOTIiCiBJTUFHRV9ST09URlNfRVhUUkFfU1BBQ0UgPSAiMCIKIEJBRF9SRUNPTU1FTkRBVElPTlMgKz0gImJ1c3lib3gtc3lzbG9nIgorCisjIFVzZSB0aGUgc2FtZSByZXN0cmljdGlvbiBhcyBpbml0cmFtZnMtbGl2ZS1pbnN0YWxsLXRlc3RmcworQ09NUEFUSUJMRV9IT1NUID0gIihpLjg2fHg4Nl82NCkuKi1saW51eCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYWlvL2xpYmFpby9saWJhaW9fZml4X2Zvcl94MzIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFpby9saWJhaW8vbGliYWlvX2ZpeF9mb3JfeDMyLnBhdGNoCmluZGV4IDUwOGY1YTEuLmRjNGJhNTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYWlvL2xpYmFpby9saWJhaW9fZml4X2Zvcl94MzIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhaW8vbGliYWlvL2xpYmFpb19maXhfZm9yX3gzMi5wYXRjaApAQCAtNiw3ICs2LDcgQEAKIAogUmVjZWl2ZWQgdGhpcyBwYXRjaCBmcm9tIEguSi4gTHUgPGhqbC50b29sc0BnbWFpbC5jb20+CiAKLVNpZ25lZC1PZmYtQnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgogMjAxMS8xMi8wMgogCiAtLS0gbGliYWlvLTAuMy4xMDkvc3JjL3N5c2NhbGwteDg2XzY0LmgueDMyCTIwMDktMTAtMDkgMTE6MTc6MDIuMDAwMDAwMDAwIC0wNzAwCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFpby9saWJhaW9fMC4zLjExMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYWlvL2xpYmFpb18wLjMuMTEwLmJiCmluZGV4IDJhZGZhMGEuLjc1OTc1ZDQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYWlvL2xpYmFpb18wLjMuMTEwLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYWlvL2xpYmFpb18wLjMuMTEwLmJiCkBAIC01LDcgKzUsNyBAQAogTElDRU5TRSA9ICJMR1BMdjIuMSsiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kODA0NWYzYjhmOTI5YzFjYjI5YTFlM2ZkNzM3YjQ5OSIKIAotU1JDX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vbGliYS9saWJhaW8vbGliYWlvXyR7UFZ9Lm9yaWcudGFyLmd6IFwKK1NSQ19VUkkgPSAiaHR0cDovL3NuYXBzaG90LmRlYmlhbi5vcmcvYXJjaGl2ZS9kZWJpYW4vMjAxNjA3MjhUMDQzNDQzWi9wb29sL21haW4vbGliYS8ke0JQTn0vJHtCUE59XyR7UFZ9Lm9yaWcudGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovL2dlbmVyaWMtYXJjaC1kZWN0ZWN0aW9uLWZvci1wYWRkaW5nLWRlZmluZXMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDBfYXJjaGVzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2Rlc3RkaXIucGF0Y2ggXApAQCAtMTcsNiArMTcsOCBAQAogU1JDX1VSSVttZDVzdW1dID0gIjJhMzU2MDJlNDM3NzgzODNlMmY0OTA3YTRjYTM5YWI4IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImUwMTkwMjhlNjMxNzI1NzI5Mzc2MjUwZTMyYjQ3MzAxMmY3Y2I2OGUxZjcyNzViZmMxYmJjZGQwZjg3NDVmN2UiCiAKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vbGliYS9saWJhaW8vIgorCiBFWFRSQV9PRU1BS0UgPSsgInByZWZpeD0ke3ByZWZpeH0gaW5jbHVkZWRpcj0ke2luY2x1ZGVkaXJ9IGxpYmRpcj0ke2xpYmRpcn0iCiAKIGRvX2luc3RhbGwgKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvMDAwMS1TZXQteGF0dHJzLWFmdGVyLXNldHRpbmctdGltZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS8wMDAxLVNldC14YXR0cnMtYWZ0ZXItc2V0dGluZy10aW1lcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmQ3NGU4Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS8wMDAxLVNldC14YXR0cnMtYWZ0ZXItc2V0dGluZy10aW1lcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLUZyb20gNTQ1ZGVkNTYwOTVjNTcwNDI2ZmUxMDJmZjIxOTI4ODk2ODFlYTc1YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERtaXRyeSBSb3poa292IDxkbWl0cnkucm96aGtvdkBsaW51eC5pbnRlbC5jb20+Ci1EYXRlOiBNb24sIDI5IEZlYiAyMDE2IDE0OjM4OjI1ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIFNldCB4YXR0cnMgYWZ0ZXIgc2V0dGluZyB0aW1lcwotCi1XaXRoIEludGVncml0eSBNZWFzdXJlbWVudCBBcmNoaXRlY3R1cmUgKElNQSkgZW5hYmxlZCBpbiBMaW51eAota2VybmVsIHRoZSBzZWN1cml0eS5pbWEgZXh0ZW5kZWQgYXR0cmlidXRlIGdldHMgb3ZlcndyaXR0ZW4KLXdoZW4gc2V0dGluZyB0aW1lcyBvbiBhIGZpbGUgd2l0aCBhIGZ1dGltZW5zKCkgY2FsbC4gU28gaXQncyBzYWZlcgotdG8gc2V0IHhhdHRycyBhZnRlciB0aW1lcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9saWJhcmNoaXZlL2xpYmFyY2hpdmUvcHVsbC82NjRdCi0KLVNpZ25lZC1vZmYtYnk6IERtaXRyeSBSb3poa292IDxkbWl0cnkucm96aGtvdkBsaW51eC5pbnRlbC5jb20+Ci0KLS0tLQotIGxpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9kaXNrX3Bvc2l4LmMgfCAyMSArKysrKysrKysrKy0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfZGlza19wb3NpeC5jIGIvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2Rpc2tfcG9zaXguYwotaW5kZXggMGZjNjE5My4uMjdjOWMxZSAxMDA2NDQKLS0tLSBhL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9kaXNrX3Bvc2l4LmMKLSsrKyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9kaXNrX3Bvc2l4LmMKLUBAIC0xNjIwLDE2ICsxNjIwLDYgQEAgX2FyY2hpdmVfd3JpdGVfZGlza19maW5pc2hfZW50cnkoc3RydWN0IGFyY2hpdmUgKl9hKQotCX0KLQotCS8qCi0tCSAqIFNlY3VyaXR5LXJlbGF0ZWQgZXh0ZW5kZWQgYXR0cmlidXRlcyAoc3VjaCBhcwotLQkgKiBzZWN1cml0eS5jYXBhYmlsaXR5IG9uIExpbnV4KSBoYXZlIHRvIGJlIHJlc3RvcmVkIGxhc3QsCi0tCSAqIHNpbmNlIHRoZXkncmUgaW1wbGljaXRseSByZW1vdmVkIGJ5IG90aGVyIGZpbGUgY2hhbmdlcy4KLS0JICovCi0tCWlmIChhLT50b2RvICYgVE9ET19YQVRUUikgewotLQkJaW50IHIyID0gc2V0X3hhdHRycyhhKTsKLS0JCWlmIChyMiA8IHJldCkgcmV0ID0gcjI7Ci0tCX0KLS0KLS0JLyoKLQkgKiBTb21lIGZsYWdzIHByZXZlbnQgZmlsZSBtb2RpZmljYXRpb247IHRoZXkgbXVzdCBiZSByZXN0b3JlZCBhZnRlcgotCSAqIGZpbGUgY29udGVudHMgYXJlIHdyaXR0ZW4uCi0JICovCi1AQCAtMTY0OCw2ICsxNjM4LDE3IEBAIF9hcmNoaXZlX3dyaXRlX2Rpc2tfZmluaXNoX2VudHJ5KHN0cnVjdCBhcmNoaXZlICpfYSkKLQl9Ci0KLQkvKgotKwkgKiBTZWN1cml0eS1yZWxhdGVkIGV4dGVuZGVkIGF0dHJpYnV0ZXMgKHN1Y2ggYXMKLSsJICogc2VjdXJpdHkuY2FwYWJpbGl0eSBvciBzZWN1cml0eS5pbWEgb24gTGludXgpIGhhdmUgdG8gYmUgcmVzdG9yZWQgbGFzdCwKLSsJICogc2luY2UgdGhleSdyZSBpbXBsaWNpdGx5IHJlbW92ZWQgYnkgb3RoZXIgZmlsZSBjaGFuZ2VzIGxpa2Ugc2V0dGluZwotKwkgKiB0aW1lcy4KLSsJICovCi0rCWlmIChhLT50b2RvICYgVE9ET19YQVRUUikgewotKwkJaW50IHIyID0gc2V0X3hhdHRycyhhKTsKLSsJCWlmIChyMiA8IHJldCkgcmV0ID0gcjI7Ci0rCX0KLSsKLSsJLyoKLQkgKiBNYWMgZXh0ZW5kZWQgbWV0YWRhdGEgaW5jbHVkZXMgQUNMcy4KLQkgKi8KLQlpZiAoYS0+dG9kbyAmIFRPRE9fTUFDX01FVEFEQVRBKSB7Ci0tLQotMi41LjAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL2xpYmFyY2hpdmUtQ1ZFLTIwMTMtMDIxMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL2xpYmFyY2hpdmUtQ1ZFLTIwMTMtMDIxMS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTk1MjNmNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9saWJhcmNoaXZlLUNWRS0yMDEzLTAyMTEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1Gcm9tIDJmNTVkNmJkMzA4ZWE2MTk3NTU1OGMyNDY5YWUzNDlkYmEyOTdlODkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFNhdCwgMjIgRmViIDIwMTQgMTQ6MzU6NTkgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IENWRS0yMDEzLTAyMTEKLQotVGhpcyBwYXRjaCBjb21lcyBmcm9tOmh0dHBzOi8vZ2l0aHViLmNvbS9saWJhcmNoaXZlL2xpYmFyY2hpdmUvY29tbWl0LzIyNTMxNTQ1NTE0MDQzZTA0NjMzZTFjMDE1Yzc1NDBiOWRlOWRiZTQKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxMy0wMjExCi0KLVNpZ25lZC1vZmYtYnk6IEJhb2dlbiBzaGFuZyA8YmFvZ2VuLnNoYW5nQHdpbmRyaXZlci5jb20+Ci0KLVVwZGF0ZSB0aGUgcGF0Y2ggYmVjYXVzZSBvZiB1cHJldiBvbiAyMDE0MDIyMgotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZS5jIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlLmMgYi9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGUuYwotaW5kZXggYTNkMWEzMy4uYTMyMzU4OCAxMDA2NDQKLS0tLSBhL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZS5jCi0rKysgYi9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGUuYwotQEAgLTY3MSw4ICs2NzEsMTIgQEAgc3RhdGljIHNzaXplX3QKLSBfYXJjaGl2ZV93cml0ZV9kYXRhKHN0cnVjdCBhcmNoaXZlICpfYSwgY29uc3Qgdm9pZCAqYnVmZiwgc2l6ZV90IHMpCi0gewotIAlzdHJ1Y3QgYXJjaGl2ZV93cml0ZSAqYSA9IChzdHJ1Y3QgYXJjaGl2ZV93cml0ZSAqKV9hOwotKwljb25zdCBzaXplX3QgbWF4X3dyaXRlID0gSU5UX01BWDsKLSAJYXJjaGl2ZV9jaGVja19tYWdpYygmYS0+YXJjaGl2ZSwgQVJDSElWRV9XUklURV9NQUdJQywKLSAJICAgIEFSQ0hJVkVfU1RBVEVfREFUQSwgImFyY2hpdmVfd3JpdGVfZGF0YSIpOwotKwkvKiBJbiBwYXJ0aWN1bGFyLCB0aGlzIGNhdGNoZXMgYXR0ZW1wdHMgdG8gcGFzcyBuZWdhdGl2ZSB2YWx1ZXMuICovCi0rCWlmIChzID4gbWF4X3dyaXRlKQotKwkJcyA9IG1heF93cml0ZTsKLSAJYXJjaGl2ZV9jbGVhcl9lcnJvcigmYS0+YXJjaGl2ZSk7Ci0gCXJldHVybiAoKGEtPmZvcm1hdF93cml0ZV9kYXRhKShhLCBidWZmLCBzKSk7Ci0gfQotLS0gCi0xLjguMi4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL2xpYmFyY2hpdmUtQ1ZFLTIwMTUtMjMwNC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL2xpYmFyY2hpdmUtQ1ZFLTIwMTUtMjMwNC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWMyNDM5Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9saWJhcmNoaXZlLUNWRS0yMDE1LTIzMDQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNTIgKzAsMCBAQAotRnJvbSA1OTM1NzE1NzcwNmQ0N2MzNjViMjIyNzczOWUxN2RhYmEzNjA3NTI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxlc3NhbmRybyBHaGVkaW5pIDxhbGVzc2FuZHJvQGdoZWRpbmkubWU+Ci1EYXRlOiBTdW4sIDEgTWFyIDIwMTUgMTI6MDc6NDUgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gQWRkIEFSQ0hJVkVfRVhUUkFDVF9TRUNVUkVfTk9BQlNPTFVURVBBVEhTIG9wdGlvbgotCi1UaGlzIGZpeGVzIGEgZGlyZWN0b3J5IHRyYXZlcnNhbCBpbiB0aGUgY3BpbyB0b29sLgotCi0KLVVwc3RyZWFtLVN0YXR1czogYmFja3BvcnQKLUNWRTogQ1ZFLTIwMTUtMjMwNAotCi1TaWduZWQtb2ZmLWJ5OiBMaSBaaG91IDxsaS56aG91QHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjcGlvL2JzZGNwaW8uMSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMyArKy0KLSBjcGlvL2NwaW8uYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArKwotIGxpYmFyY2hpdmUvYXJjaGl2ZS5oICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsrCi0gbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2Rpc2suMyAgICAgICAgICB8ICAgIDMgKysrCi0gbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2Rpc2tfcG9zaXguYyAgICB8ICAgMTQgKysrKysrKysrKystLS0KLSBsaWJhcmNoaXZlL3Rlc3QvdGVzdF93cml0ZV9kaXNrX3NlY3VyZS5jIHwgICAyMyArKysrKysrKysrKysrKysrKysrKysrKwotIDYgZmlsZXMgY2hhbmdlZCwgNDMgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NwaW8vYnNkY3Bpby4xIGIvY3Bpby9ic2RjcGlvLjEKLWluZGV4IGY5NjZhYTAuLmU1MjU0NmUgMTAwNjQ0Ci0tLS0gYS9jcGlvL2JzZGNwaW8uMQotKysrIGIvY3Bpby9ic2RjcGlvLjEKLUBAIC0xNTYsNyArMTU2LDggQEAgU2VlIGFib3ZlIGZvciBkZXNjcmlwdGlvbi4KLSAuSXQgRmwgRmwgaW5zZWN1cmUKLSAoaSBhbmQgcCBtb2RlIG9ubHkpCi0gRGlzYWJsZSBzZWN1cml0eSBjaGVja3MgZHVyaW5nIGV4dHJhY3Rpb24gb3IgY29weWluZy4KLS1UaGlzIGFsbG93cyBleHRyYWN0aW9uIHZpYSBzeW1ib2xpYyBsaW5rcyBhbmQgcGF0aCBuYW1lcyBjb250YWluaW5nCi0rVGhpcyBhbGxvd3MgZXh0cmFjdGlvbiB2aWEgc3ltYm9saWMgbGlua3MsIGFic29sdXRlIHBhdGhzLAotK2FuZCBwYXRoIG5hbWVzIGNvbnRhaW5pbmcKLSAuU3EgLi4KLSBpbiB0aGUgbmFtZS4KLSAuSXQgRmwgSiAsIEZsIEZsIHh6Ci1kaWZmIC0tZ2l0IGEvY3Bpby9jcGlvLmMgYi9jcGlvL2NwaW8uYwotaW5kZXggMGFjZGUxMS4uYjI2N2U5YiAxMDA2NDQKLS0tLSBhL2NwaW8vY3Bpby5jCi0rKysgYi9jcGlvL2NwaW8uYwotQEAgLTE3MSw2ICsxNzEsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCWNwaW8tPmV4dHJhY3RfZmxhZ3MgfD0gQVJDSElWRV9FWFRSQUNUX05PX09WRVJXUklURV9ORVdFUjsKLSAJY3Bpby0+ZXh0cmFjdF9mbGFncyB8PSBBUkNISVZFX0VYVFJBQ1RfU0VDVVJFX1NZTUxJTktTOwotIAljcGlvLT5leHRyYWN0X2ZsYWdzIHw9IEFSQ0hJVkVfRVhUUkFDVF9TRUNVUkVfTk9ET1RET1Q7Ci0rCWNwaW8tPmV4dHJhY3RfZmxhZ3MgfD0gQVJDSElWRV9FWFRSQUNUX1NFQ1VSRV9OT0FCU09MVVRFUEFUSFM7Ci0gCWNwaW8tPmV4dHJhY3RfZmxhZ3MgfD0gQVJDSElWRV9FWFRSQUNUX1BFUk07Ci0gCWNwaW8tPmV4dHJhY3RfZmxhZ3MgfD0gQVJDSElWRV9FWFRSQUNUX0ZGTEFHUzsKLSAJY3Bpby0+ZXh0cmFjdF9mbGFncyB8PSBBUkNISVZFX0VYVFJBQ1RfQUNMOwotQEAgLTI1Niw2ICsyNTcsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCQljYXNlIE9QVElPTl9JTlNFQ1VSRToKLSAJCQljcGlvLT5leHRyYWN0X2ZsYWdzICY9IH5BUkNISVZFX0VYVFJBQ1RfU0VDVVJFX1NZTUxJTktTOwotIAkJCWNwaW8tPmV4dHJhY3RfZmxhZ3MgJj0gfkFSQ0hJVkVfRVhUUkFDVF9TRUNVUkVfTk9ET1RET1Q7Ci0rCQkJY3Bpby0+ZXh0cmFjdF9mbGFncyAmPSB+QVJDSElWRV9FWFRSQUNUX1NFQ1VSRV9OT0FCU09MVVRFUEFUSFM7Ci0gCQkJYnJlYWs7Ci0gCQljYXNlICdMJzogLyogR05VIGNwaW8gKi8KLSAJCQljcGlvLT5vcHRpb25fZm9sbG93X2xpbmtzID0gMTsKLWRpZmYgLS1naXQgYS9saWJhcmNoaXZlL2FyY2hpdmUuaCBiL2xpYmFyY2hpdmUvYXJjaGl2ZS5oCi1pbmRleCAxZjBmYzM4Li5lZjYzNWFjIDEwMDY0NAotLS0tIGEvbGliYXJjaGl2ZS9hcmNoaXZlLmgKLSsrKyBiL2xpYmFyY2hpdmUvYXJjaGl2ZS5oCi1AQCAtNjQ5LDYgKzY0OSw4IEBAIF9fTEFfREVDTCBpbnQgYXJjaGl2ZV9yZWFkX3NldF9wYXNzcGhyYXNlX2NhbGxiYWNrKHN0cnVjdCBhcmNoaXZlICosCi0gLyogRGVmYXVsdDogRG8gbm90IHVzZSBIRlMrIGNvbXByZXNzaW9uIGlmIGl0IHdhcyBub3QgY29tcHJlc3NlZC4gKi8KLSAvKiBUaGlzIGhhcyBubyBlZmZlY3QgZXhjZXB0IG9uIE1hYyBPUyB2MTAuNiBvciBsYXRlci4gKi8KLSAjZGVmaW5lCUFSQ0hJVkVfRVhUUkFDVF9IRlNfQ09NUFJFU1NJT05fRk9SQ0VECSgweDgwMDApCi0rLyogRGVmYXVsdDogRG8gbm90IHJlamVjdCBlbnRyaWVzIHdpdGggYWJzb2x1dGUgcGF0aHMgKi8KLSsjZGVmaW5lIEFSQ0hJVkVfRVhUUkFDVF9TRUNVUkVfTk9BQlNPTFVURVBBVEhTICgweDEwMDAwKQotIAotIF9fTEFfREVDTCBpbnQgYXJjaGl2ZV9yZWFkX2V4dHJhY3Qoc3RydWN0IGFyY2hpdmUgKiwgc3RydWN0IGFyY2hpdmVfZW50cnkgKiwKLSAJCSAgICAgaW50IGZsYWdzKTsKLWRpZmYgLS1naXQgYS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfZGlzay4zIGIvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2Rpc2suMwotaW5kZXggZmE5MjVjYy4uYTJlN2FmYSAxMDA2NDQKLS0tLSBhL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9kaXNrLjMKLSsrKyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9kaXNrLjMKLUBAIC0xNzcsNiArMTc3LDkgQEAgVGhlIGRlZmF1bHQgaXMgdG8gbm90IHJlZnVzZSBzdWNoIHBhdGhzLgotIE5vdGUgdGhhdCBwYXRocyBlbmRpbmcgaW4KLSAuUGEgLi4KLSBhbHdheXMgY2F1c2UgYW4gZXJyb3IsIHJlZ2FyZGxlc3Mgb2YgdGhpcyBmbGFnLgotKy5JdCBDbSBBUkNISVZFX0VYVFJBQ1RfU0VDVVJFX05PQUJTT0xVVEVQQVRIUwotK1JlZnVzZSB0byBleHRyYWN0IGFuIGFic29sdXRlIHBhdGguCi0rVGhlIGRlZmF1bHQgaXMgdG8gbm90IHJlZnVzZSBzdWNoIHBhdGhzLgotIC5JdCBDbSBBUkNISVZFX0VYVFJBQ1RfU1BBUlNFCi0gU2NhbiBkYXRhIGZvciBibG9ja3Mgb2YgTlVMIGJ5dGVzIGFuZCB0cnkgdG8gcmVjcmVhdGUgdGhlbSB3aXRoIGhvbGVzLgotIFRoaXMgcmVzdWx0cyBpbiBzcGFyc2UgZmlsZXMsIGluZGVwZW5kZW50IG9mIHdoZXRoZXIgdGhlIGFyY2hpdmUgZm9ybWF0Ci1kaWZmIC0tZ2l0IGEvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2Rpc2tfcG9zaXguYyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9kaXNrX3Bvc2l4LmMKLWluZGV4IGFiM2JkYWMuLmMxMjkwZWIgMTAwNjQ0Ci0tLS0gYS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfZGlza19wb3NpeC5jCi0rKysgYi9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfZGlza19wb3NpeC5jCi1AQCAtMjUwOSw4ICsyNTA5LDkgQEAgY2xlYW51cF9wYXRobmFtZV93aW4oc3RydWN0IGFyY2hpdmVfd3JpdGVfZGlzayAqYSkKLSAvKgotICAqIENhbm9uaWNhbGl6ZSB0aGUgcGF0aG5hbWUuICBJbiBwYXJ0aWN1bGFyLCB0aGlzIHN0cmlwcyBkdXBsaWNhdGUKLSAgKiAnLycgY2hhcmFjdGVycywgJy4nIGVsZW1lbnRzLCBhbmQgdHJhaWxpbmcgJy8nLiAgSXQgYWxzbyByYWlzZXMgYW4KLS0gKiBlcnJvciBmb3IgYW4gZW1wdHkgcGF0aCwgYSB0cmFpbGluZyAnLi4nIG9yIChpZiBfU0VDVVJFX05PRE9URE9UIGlzCi0tICogc2V0KSBhbnkgJy4uJyBpbiB0aGUgcGF0aC4KLSsgKiBlcnJvciBmb3IgYW4gZW1wdHkgcGF0aCwgYSB0cmFpbGluZyAnLi4nLCAoaWYgX1NFQ1VSRV9OT0RPVERPVCBpcwotKyAqIHNldCkgYW55ICcuLicgaW4gdGhlIHBhdGggb3IgKGlmIEFSQ0hJVkVfRVhUUkFDVF9TRUNVUkVfTk9BQlNPTFVURVBBVEhTCi0rICogaXMgc2V0KSBpZiB0aGUgcGF0aCBpcyBhYnNvbHV0ZS4KLSAgKi8KLSBzdGF0aWMgaW50Ci0gY2xlYW51cF9wYXRobmFtZShzdHJ1Y3QgYXJjaGl2ZV93cml0ZV9kaXNrICphKQotQEAgLTI1MjksOCArMjUzMCwxNSBAQCBjbGVhbnVwX3BhdGhuYW1lKHN0cnVjdCBhcmNoaXZlX3dyaXRlX2Rpc2sgKmEpCi0gCWNsZWFudXBfcGF0aG5hbWVfd2luKGEpOwotICNlbmRpZgotIAkvKiBTa2lwIGxlYWRpbmcgJy8nLiAqLwotLQlpZiAoKnNyYyA9PSAnLycpCi0rCWlmICgqc3JjID09ICcvJykgewotKwkJaWYgKGEtPmZsYWdzICYgQVJDSElWRV9FWFRSQUNUX1NFQ1VSRV9OT0FCU09MVVRFUEFUSFMpIHsKLSsJCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgQVJDSElWRV9FUlJOT19NSVNDLAotKwkJCSAgICAgICAgICAgICAgICAgICJQYXRoIGlzIGFic29sdXRlIik7Ci0rCQkJcmV0dXJuIChBUkNISVZFX0ZBSUxFRCk7Ci0rCQl9Ci0rCi0gCQlzZXBhcmF0b3IgPSAqc3JjKys7Ci0rCX0KLSAKLSAJLyogU2NhbiB0aGUgcGF0aG5hbWUgb25lIGVsZW1lbnQgYXQgYSB0aW1lLiAqLwotIAlmb3IgKDs7KSB7Ci1kaWZmIC0tZ2l0IGEvbGliYXJjaGl2ZS90ZXN0L3Rlc3Rfd3JpdGVfZGlza19zZWN1cmUuYyBiL2xpYmFyY2hpdmUvdGVzdC90ZXN0X3dyaXRlX2Rpc2tfc2VjdXJlLmMKLWluZGV4IDMxYzViZmQuLjJjOTQyMDYgMTAwNjQ0Ci0tLS0gYS9saWJhcmNoaXZlL3Rlc3QvdGVzdF93cml0ZV9kaXNrX3NlY3VyZS5jCi0rKysgYi9saWJhcmNoaXZlL3Rlc3QvdGVzdF93cml0ZV9kaXNrX3NlY3VyZS5jCi1AQCAtMTc4LDYgKzE3OCwyOSBAQCBERUZJTkVfVEVTVCh0ZXN0X3dyaXRlX2Rpc2tfc2VjdXJlKQotIAlhc3NlcnQoU19JU0RJUihzdC5zdF9tb2RlKSk7Ci0gCWFyY2hpdmVfZW50cnlfZnJlZShhZSk7Ci0gCi0rCS8qCi0rCSAqIFdpdGhvdXQgc2VjdXJpdHkgY2hlY2tzLCB3ZSBzaG91bGQgYmUgYWJsZSB0bwotKwkgKiBleHRyYWN0IGFuIGFic29sdXRlIHBhdGguCi0rCSAqLwotKwlhc3NlcnQoKGFlID0gYXJjaGl2ZV9lbnRyeV9uZXcoKSkgIT0gTlVMTCk7Ci0rCWFyY2hpdmVfZW50cnlfY29weV9wYXRobmFtZShhZSwgIi90bXAvbGliYXJjaGl2ZV90ZXN0LXRlc3Rfd3JpdGVfZGlza19zZWN1cmUtYWJzb2x1dGVfcGF0aC50bXAiKTsKLSsJYXJjaGl2ZV9lbnRyeV9zZXRfbW9kZShhZSwgU19JRlJFRyB8IDA3NzcpOwotKwlhc3NlcnQoMCA9PSBhcmNoaXZlX3dyaXRlX2hlYWRlcihhLCBhZSkpOwotKwlhc3NlcnQoMCA9PSBhcmNoaXZlX3dyaXRlX2ZpbmlzaF9lbnRyeShhKSk7Ci0rCWFzc2VydEZpbGVFeGlzdHMoIi90bXAvbGliYXJjaGl2ZV90ZXN0LXRlc3Rfd3JpdGVfZGlza19zZWN1cmUtYWJzb2x1dGVfcGF0aC50bXAiKTsKLSsJYXNzZXJ0KDAgPT0gdW5saW5rKCIvdG1wL2xpYmFyY2hpdmVfdGVzdC10ZXN0X3dyaXRlX2Rpc2tfc2VjdXJlLWFic29sdXRlX3BhdGgudG1wIikpOwotKwotKwkvKiBCdXQgd2l0aCBzZWN1cml0eSBjaGVja3MgZW5hYmxlZCwgdGhpcyBzaG91bGQgZmFpbC4gKi8KLSsJYXNzZXJ0KGFyY2hpdmVfZW50cnlfY2xlYXIoYWUpICE9IE5VTEwpOwotKwlhcmNoaXZlX2VudHJ5X2NvcHlfcGF0aG5hbWUoYWUsICIvdG1wL2xpYmFyY2hpdmVfdGVzdC10ZXN0X3dyaXRlX2Rpc2tfc2VjdXJlLWFic29sdXRlX3BhdGgudG1wIik7Ci0rCWFyY2hpdmVfZW50cnlfc2V0X21vZGUoYWUsIFNfSUZSRUcgfCAwNzc3KTsKLSsJYXJjaGl2ZV93cml0ZV9kaXNrX3NldF9vcHRpb25zKGEsIEFSQ0hJVkVfRVhUUkFDVF9TRUNVUkVfTk9BQlNPTFVURVBBVEhTKTsKLSsJZmFpbHVyZSgiRXh0cmFjdGluZyBhbiBhYnNvbHV0ZSBwYXRoIHNob3VsZCBmYWlsIGhlcmUuIik7Ci0rCWFzc2VydEVxdWFsSW50KEFSQ0hJVkVfRkFJTEVELCBhcmNoaXZlX3dyaXRlX2hlYWRlcihhLCBhZSkpOwotKwlhcmNoaXZlX2VudHJ5X2ZyZWUoYWUpOwotKwlhc3NlcnQoMCA9PSBhcmNoaXZlX3dyaXRlX2ZpbmlzaF9lbnRyeShhKSk7Ci0rCWFzc2VydEZpbGVOb3RFeGlzdHMoIi90bXAvbGliYXJjaGl2ZV90ZXN0LXRlc3Rfd3JpdGVfZGlza19zZWN1cmUtYWJzb2x1dGVfcGF0aC50bXAiKTsKLSsKLSAJYXNzZXJ0RXF1YWxJbnQoQVJDSElWRV9PSywgYXJjaGl2ZV93cml0ZV9mcmVlKGEpKTsKLSAKLSAJLyogVGVzdCB0aGUgZW50cmllcyBvbiBkaXNrLiAqLwotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL21rZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvbWtkaXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwOWEyOTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvbWtkaXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1BZGQgbWlzc2luZyBta2RpciBjYWxscyBzbyB0aGF0IG91dC1vZi10cmVlIGJ1aWxkcyB3b3JrLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCAoaHR0cHM6Ly9naXRodWIuY29tL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9wdWxsLzUzNCkKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCAzZmEyZDIyLi41ZWNjYTUyIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtNTA4LDYgKzUwOCw3IEBAIGxpYmFyY2hpdmVfdGVzdF9MREFERD0gJChMVExJQklDT05WKQotICMgQnVpbGRpbmcgaXQgYXV0b21hdGljYWxseSBwcm92aWRlcyBhIHNhbml0eS1jaGVjayBvbiBsaWJhcmNoaXZlX3Rlc3RfU09VUkNFUwotICMgYWJvdmUuCi0gbGliYXJjaGl2ZS90ZXN0L2xpc3QuaDogTWFrZWZpbGUKLSsJJChNS0RJUl9QKSBsaWJhcmNoaXZlL3Rlc3QKLSAJY2F0ICQodG9wX3NyY2RpcikvbGliYXJjaGl2ZS90ZXN0L3Rlc3RfKi5jIHwgZ3JlcCBERUZJTkVfVEVTVCA+IGxpYmFyY2hpdmUvdGVzdC9saXN0LmgKLSAKLSBsaWJhcmNoaXZlX1RFU1RTX0VOVklST05NRU5UPSBMSUJBUkNISVZFX1RFU1RfRklMRVM9YGNkICQodG9wX3NyY2Rpcik7L2Jpbi9wd2RgL2xpYmFyY2hpdmUvdGVzdCBMUlpJUD1OT0NPTkZJRwotQEAgLTgzNSw2ICs4MzYsNyBAQCBic2R0YXJfdGVzdF9DUFBGTEFHUz1cCi0gCSQoUExBVEZPUk1DUFBGTEFHUykKLSAKLSB0YXIvdGVzdC9saXN0Lmg6IE1ha2VmaWxlCi0rCSQoTUtESVJfUCkgdGFyL3Rlc3QKLSAJY2F0ICQodG9wX3NyY2RpcikvdGFyL3Rlc3QvdGVzdF8qLmMgfCBncmVwIERFRklORV9URVNUID4gdGFyL3Rlc3QvbGlzdC5oCi0gCi0gaWYgQlVJTERfQlNEVEFSCi1AQCAtOTc1LDYgKzk3Nyw3IEBAIGJzZGNwaW9fdGVzdF9DUFBGTEFHUz0gXAotIGJzZGNwaW9fdGVzdF9MREFERD1saWJhcmNoaXZlX2ZlLmxhCi0gCi0gY3Bpby90ZXN0L2xpc3QuaDogTWFrZWZpbGUKLSsJJChNS0RJUl9QKSBjcGlvL3Rlc3QKLSAJY2F0ICQodG9wX3NyY2RpcikvY3Bpby90ZXN0L3Rlc3RfKi5jIHwgZ3JlcCBERUZJTkVfVEVTVCA+IGNwaW8vdGVzdC9saXN0LmgKLSAKLSBpZiBCVUlMRF9CU0RDUElPCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAzOGJkMjk5Li43YmRiMDBjIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xMDIsNiArMTAyLDcgQEAgQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TCi0gQUNfTElCVE9PTF9XSU4zMl9ETEwKLSBBQ19QUk9HX0xJQlRPT0wKLSBBQ19DSEVDS19UT09MKFtTVFJJUF0sW3N0cmlwXSkKLStBQ19QUk9HX01LRElSX1AKLSAKLSAjCi0gIyBPcHRpb25zIGZvciBidWlsZGluZyBic2R0YXIuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9wa2djb25maWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9wa2djb25maWcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0NmFmOTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvcGtnY29uZmlnLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotVXNlIHBrZy1jb25maWcgZm9yIHRoZSBsaWJ4bWwyIGRlcGVuZGVuY3ksIG5vdCB0aGUgLWNvbmZpZyBzY3JpcHQuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1SUCAyMDE0LzUvMjIKLQotSW5kZXg6IGxpYmFyY2hpdmUtMy4xLjIvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGliYXJjaGl2ZS0zLjEuMi5vcmlnL2NvbmZpZ3VyZS5hYwkyMDEzLTAyLTA5IDE3OjIzOjAzLjAwMDAwMDAwMCArMDAwMAotKysrIGxpYmFyY2hpdmUtMy4xLjIvY29uZmlndXJlLmFjCTIwMTQtMDUtMTMgMTU6MjY6NDUuNDQ2NDk5MTA4ICswMDAwCi1AQCAtMzI5LDEwICszMjksMTAgQEAKLSAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGhvdXQtZXhwYXRdLCBbRG9uJ3QgYnVpbGQgc3VwcG9ydCBmb3IgeGFyIHRocm91Z2ggZXhwYXRdKSkKLSAKLSBpZiB0ZXN0ICJ4JHdpdGhfeG1sMiIgIT0gInhubyI7IHRoZW4KLS0gIEFDX1BBVEhfUFJPRyhbWE1MMl9DT05GSUddLCBbeG1sMi1jb25maWddLCwgWyR7UEFUSH1dKQotLSAgaWYgdGVzdCAieCRYTUwyX0NPTkZJRyIgIT0gIngiOyB0aGVuCi0tICAgIENQUEZMQUdTPSIke0NQUEZMQUdTfSBgJHtYTUwyX0NPTkZJR30gLS1jZmxhZ3NgIgotLSAgICBMSUJTPSIke0xJQlN9IGAke1hNTDJfQ09ORklHfSAtLWxpYnNgIgotKyAgUEtHX0NIRUNLX01PRFVMRVMoUEtHX1hNTDIsIFtsaWJ4bWwtMi4wXSwsKQotKyAgaWYgdGVzdCAieCRQS0dfWE1MMl9DRkxBR1MiICE9ICJ4IjsgdGhlbgotKyAgICBDUFBGTEFHUz0iJHtDUFBGTEFHU30gJHtQS0dfWE1MMl9DRkxBR1N9IgotKyAgICBMSUJTPSIke0xJQlN9ICR7UEtHX1hNTDJfTElCU30iCi0gICAgIEFDX0NIRUNLX0xJQih4bWwyLHhtbEluaXRQYXJzZXIsW3RydWVdLEFDX01TR19GQUlMVVJFKE1pc3NpbmcgeG1sMiBsaWJyYXJ5KSkKLSAgIGVsc2UKLSAgICAgQUNfQ0hFQ0tfTElCKHhtbDIseG1sSW5pdFBhcnNlcikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlXzMuMS4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmVfMy4xLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkNjc3YWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmVfMy4xLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi1TVU1NQVJZID0gIlN1cHBvcnQgZm9yIHJlYWRpbmcgdmFyaW91cyBhcmNoaXZlIGZvcm1hdHMiCi1ERVNDUklQVElPTiA9ICJDIGxpYnJhcnkgYW5kIGNvbW1hbmQtbGluZSB0b29scyBmb3IgcmVhZGluZyBhbmQgd3JpdGluZyB0YXIsIGNwaW8sIHppcCwgSVNPLCBhbmQgb3RoZXIgYXJjaGl2ZSBmb3JtYXRzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saWJhcmNoaXZlLm9yZy8iCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iNGUzZmZkNjA3ZDY2ODZjNmNiMmY2MzM5NDM3MDg0MSIKLQotREVQRU5EUyA9ICJlMmZzcHJvZ3MtbmF0aXZlIgotCi1QQUNLQUdFQ09ORklHID89ICJ6bGliIGJ6MiIKLQotUEFDS0FHRUNPTkZJR19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIlwKLQlsaWJ4bWwyIFwKLQkke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2FjbCcsICdhY2wnLCAnJywgZCl9IFwKLQkke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3hhdHRyJywgJ3hhdHRyJywgJycsIGQpfSBcCi0JJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsYXJnZWZpbGUnLCAnbGFyZ2VmaWxlJywgJycsIGQpfSBcCi0iCi0KLVBBQ0tBR0VDT05GSUdfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgbGFyZ2VmaWxlIgotCi1QQUNLQUdFQ09ORklHW2FjbF0gPSAiLS1lbmFibGUtYWNsLC0tZGlzYWJsZS1hY2wsYWNsLCIKLVBBQ0tBR0VDT05GSUdbeGF0dHJdID0gIi0tZW5hYmxlLXhhdHRyLC0tZGlzYWJsZS14YXR0cixhdHRyLCIKLVBBQ0tBR0VDT05GSUdbbGFyZ2VmaWxlXSA9ICItLWVuYWJsZS1sYXJnZWZpbGUsLS1kaXNhYmxlLWxhcmdlZmlsZSwsIgotUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYiwtLXdpdGhvdXQtemxpYix6bGliLCIKLVBBQ0tBR0VDT05GSUdbYnoyXSA9ICItLXdpdGgtYnoybGliLC0td2l0aG91dC1iejJsaWIsYnppcDIsIgotUEFDS0FHRUNPTkZJR1t4el0gPSAiLS13aXRoLWx6bWFkZWMgLS13aXRoLWx6bWEsLS13aXRob3V0LWx6bWFkZWMgLS13aXRob3V0LWx6bWEseHosIgotUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtb3BlbnNzbCwtLXdpdGhvdXQtb3BlbnNzbCxvcGVuc3NsLCIKLVBBQ0tBR0VDT05GSUdbbGlieG1sMl0gPSAiLS13aXRoLXhtbDIsLS13aXRob3V0LXhtbDIsbGlieG1sMiwiCi1QQUNLQUdFQ09ORklHW2V4cGF0XSA9ICItLXdpdGgtZXhwYXQsLS13aXRob3V0LWV4cGF0LGV4cGF0LCIKLVBBQ0tBR0VDT05GSUdbbHpvXSA9ICItLXdpdGgtbHpvMiwtLXdpdGhvdXQtbHpvMixsem8sIgotUEFDS0FHRUNPTkZJR1tuZXR0bGVdID0gIi0td2l0aC1uZXR0bGUsLS13aXRob3V0LW5ldHRsZSxuZXR0bGUsIgotCi1TUkNfVVJJID0gImh0dHA6Ly9saWJhcmNoaXZlLm9yZy9kb3dubG9hZHMvbGliYXJjaGl2ZS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vbGliYXJjaGl2ZS1DVkUtMjAxMy0wMjExLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3BrZ2NvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJhcmNoaXZlLUNWRS0yMDE1LTIzMDQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWtkaXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1TZXQteGF0dHJzLWFmdGVyLXNldHRpbmctdGltZXMucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlZmFkNWE1MDNmNjYzMjliYjlkMmY0MzA4YjVkZTk4YSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlYjg3ZWFjZDhmZTQ5ZThkOTBjOGZkYzE4OTgxMzAyM2NjYzMxOWM1ZTc1MmIwMWZiNmFkMGNjN2IyYzUzZDVlIgotCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzIHBrZ2NvbmZpZwotCi1DUFBGTEFHUyArPSAiLUkke1dPUktESVJ9L2V4dHJhLWluY2x1ZGVzIgotCi1kb19jb25maWd1cmVbY2xlYW5kaXJzXSArPSAiJHtXT1JLRElSfS9leHRyYS1pbmNsdWRlcyIKLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotCSMgV2UganVzdCBuZWVkIHRoZSBoZWFkZXJzIGZvciBzb21lIHR5cGUgY29uc3RhbnRzLCBzbyBubyBuZWVkIHRvCi0JIyBidWlsZCBhbGwgb2YgZTJmc3Byb2dzIGZvciB0aGUgdGFyZ2V0Ci0JY3AgLVIgJHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9L2V4dDJmcyAke1dPUktESVJ9L2V4dHJhLWluY2x1ZGVzLwotfQotCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCi0KLVBBQ0tBR0VTID0rICJic2R0YXIiCi1GSUxFU19ic2R0YXIgPSAiJHtiaW5kaXJ9L2JzZHRhciIKLQotQUxURVJOQVRJVkVfYnNkdGFyID0gInRhciIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVt0YXJdID0gIiR7YmFzZV9iaW5kaXJ9L3RhciIKLUFMVEVSTkFUSVZFX1RBUkdFVFt0YXJdID0gIiR7YmluZGlyfS9ic2R0YXIiCi0KLVBBQ0tBR0VTID0rICJic2RjcGlvIgotRklMRVNfYnNkY3BpbyA9ICIke2JpbmRpcn0vYnNkY3BpbyIKLQotQUxURVJOQVRJVkVfYnNkY3BpbyA9ICJjcGlvIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2NwaW9dID0gIiR7YmFzZV9iaW5kaXJ9L2NwaW8iCi1BTFRFUk5BVElWRV9UQVJHRVRbY3Bpb10gPSAiJHtiaW5kaXJ9L2JzZGNwaW8iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlXzMuMi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmVfMy4yLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjY1YjVkZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlXzMuMi4xLmJiCkBAIC0wLDAgKzEsNjcgQEAKK1NVTU1BUlkgPSAiU3VwcG9ydCBmb3IgcmVhZGluZyB2YXJpb3VzIGFyY2hpdmUgZm9ybWF0cyIKK0RFU0NSSVBUSU9OID0gIkMgbGlicmFyeSBhbmQgY29tbWFuZC1saW5lIHRvb2xzIGZvciByZWFkaW5nIGFuZCB3cml0aW5nIHRhciwgY3BpbywgemlwLCBJU08sIGFuZCBvdGhlciBhcmNoaXZlIGZvcm1hdHMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpYmFyY2hpdmUub3JnLyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWVkOTlhY2EwMDZiYzM0Njk3NGJiNzQ1YTM1MzM2NDI1IgorCitERVBFTkRTID0gImUyZnNwcm9ncy1uYXRpdmUiCisKK1BBQ0tBR0VDT05GSUcgPz0gInpsaWIgYnoyIgorCitQQUNLQUdFQ09ORklHX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiXAorCWxpYnhtbDIgXAorCSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYWNsJywgJ2FjbCcsICcnLCBkKX0gXAorCSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneGF0dHInLCAneGF0dHInLCAnJywgZCl9IFwKKwkke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2xhcmdlZmlsZScsICdsYXJnZWZpbGUnLCAnJywgZCl9IFwKKyIKKworUEFDS0FHRUNPTkZJR19hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBsYXJnZWZpbGUiCisKK1BBQ0tBR0VDT05GSUdbYWNsXSA9ICItLWVuYWJsZS1hY2wsLS1kaXNhYmxlLWFjbCxhY2wsIgorUEFDS0FHRUNPTkZJR1t4YXR0cl0gPSAiLS1lbmFibGUteGF0dHIsLS1kaXNhYmxlLXhhdHRyLGF0dHIsIgorUEFDS0FHRUNPTkZJR1tsYXJnZWZpbGVdID0gIi0tZW5hYmxlLWxhcmdlZmlsZSwtLWRpc2FibGUtbGFyZ2VmaWxlLCwiCitQQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliLC0td2l0aG91dC16bGliLHpsaWIsIgorUEFDS0FHRUNPTkZJR1tiejJdID0gIi0td2l0aC1iejJsaWIsLS13aXRob3V0LWJ6MmxpYixiemlwMiwiCitQQUNLQUdFQ09ORklHW3h6XSA9ICItLXdpdGgtbHptYWRlYyAtLXdpdGgtbHptYSwtLXdpdGhvdXQtbHptYWRlYyAtLXdpdGhvdXQtbHptYSx4eiwiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1vcGVuc3NsLC0td2l0aG91dC1vcGVuc3NsLG9wZW5zc2wsIgorUEFDS0FHRUNPTkZJR1tsaWJ4bWwyXSA9ICItLXdpdGgteG1sMiwtLXdpdGhvdXQteG1sMixsaWJ4bWwyLCIKK1BBQ0tBR0VDT05GSUdbZXhwYXRdID0gIi0td2l0aC1leHBhdCwtLXdpdGhvdXQtZXhwYXQsZXhwYXQsIgorUEFDS0FHRUNPTkZJR1tsem9dID0gIi0td2l0aC1sem8yLC0td2l0aG91dC1sem8yLGx6bywiCitQQUNLQUdFQ09ORklHW25ldHRsZV0gPSAiLS13aXRoLW5ldHRsZSwtLXdpdGhvdXQtbmV0dGxlLG5ldHRsZSwiCitQQUNLQUdFQ09ORklHW2x6NF0gPSAiLS13aXRoLWx6NCwtLXdpdGhvdXQtbHo0LGx6NCwiCisKK1NSQ19VUkkgPSAiaHR0cDovL2xpYmFyY2hpdmUub3JnL2Rvd25sb2Fkcy9saWJhcmNoaXZlLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImFmYTI1NzA0N2QxOTQxYTU2NTIxNmVkYmYwMTcxZTcyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcyZWUxYTRlM2ZkNTM0NTI1ZjEzYTBiYTFhYTdiMDViMjAzZDE4NmUwYzYwNzJhOGE0NzM4NjQ5ZDBiM2NmZDIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgcGtnY29uZmlnCisKK0NQUEZMQUdTICs9ICItSSR7V09SS0RJUn0vZXh0cmEtaW5jbHVkZXMiCisKK2RvX2NvbmZpZ3VyZVtjbGVhbmRpcnNdICs9ICIke1dPUktESVJ9L2V4dHJhLWluY2x1ZGVzIgorZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisJIyBXZSBqdXN0IG5lZWQgdGhlIGhlYWRlcnMgZm9yIHNvbWUgdHlwZSBjb25zdGFudHMsIHNvIG5vIG5lZWQgdG8KKwkjIGJ1aWxkIGFsbCBvZiBlMmZzcHJvZ3MgZm9yIHRoZSB0YXJnZXQKKwljcCAtUiAke1NUQUdJTkdfSU5DRElSX05BVElWRX0vZXh0MmZzICR7V09SS0RJUn0vZXh0cmEtaW5jbHVkZXMvCit9CisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworUEFDS0FHRVMgPSsgImJzZHRhciIKK0ZJTEVTX2JzZHRhciA9ICIke2JpbmRpcn0vYnNkdGFyIgorCitBTFRFUk5BVElWRV9ic2R0YXIgPSAidGFyIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3Rhcl0gPSAiJHtiYXNlX2JpbmRpcn0vdGFyIgorQUxURVJOQVRJVkVfVEFSR0VUW3Rhcl0gPSAiJHtiaW5kaXJ9L2JzZHRhciIKKworUEFDS0FHRVMgPSsgImJzZGNwaW8iCitGSUxFU19ic2RjcGlvID0gIiR7YmluZGlyfS9ic2RjcGlvIgorCitBTFRFUk5BVElWRV9ic2RjcGlvID0gImNwaW8iCitBTFRFUk5BVElWRV9MSU5LX05BTUVbY3Bpb10gPSAiJHtiYXNlX2JpbmRpcn0vY3BpbyIKK0FMVEVSTkFUSVZFX1RBUkdFVFtjcGlvXSA9ICIke2JpbmRpcn0vYnNkY3BpbyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuLzAwMDEtaWRuLWZpeC1wcmludGYtZm9ybWF0LXNlY3VyaXR5LXdhcm5pbmdzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuLzAwMDEtaWRuLWZpeC1wcmludGYtZm9ybWF0LXNlY3VyaXR5LXdhcm5pbmdzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhZGM3ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vMDAwMS1pZG4tZml4LXByaW50Zi1mb3JtYXQtc2VjdXJpdHktd2FybmluZ3MucGF0Y2gKQEAgLTAsMCArMSwxODEgQEAKK0Zyb20gODJmOThkY2JjNDI5YmJlODlhOTgzN2M1MzNjYmNiYzAyZTc3Yzc5MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9BbmRyPUMzPUE5PTIwRHJhc3ppaz89IDxhZHJhc3ppa0B0eWNvaW50LmNvbT4KK0RhdGU6IFR1ZSwgMjggSnVuIDIwMTYgMTI6NDM6MzEgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gaWRuOiBmaXggcHJpbnRmKCkgZm9ybWF0IHNlY3VyaXR5IHdhcm5pbmdzCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK3wgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOiBJbiBmdW5jdGlvbiAnbWFpbic6Cit8IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzoxNzI6NzogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCit8ICAgICAgICBlcnJvciAoMCwgMCwgXygib25seSBvbmUgb2YgLXMsIC1lLCAtZCwgLWEsIC11IG9yIC1uIGNhbiBiZSBzcGVjaWZpZWQiKSk7Cit8ICAgICAgICBefn5+fgorfCAuLi8uLi9saWJpZG4tMS4zMi9zcmMvaWRuLmM6MTg3OjU6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQorfCAgICAgIGZwcmludGYgKHN0ZGVyciwgXygiVHlwZSBlYWNoIGlucHV0IHN0cmluZyBvbiBhIGxpbmUgYnkgaXRzZWxmLCAiCit8ICAgICAgXn5+fn5+fgorfCAuLi8uLi9saWJpZG4tMS4zMi9zcmMvaWRuLmM6MjAyOjQ6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQorfCAgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgZXJybm8sIF8oImlucHV0IGVycm9yIikpOworfCAgICAgXn5+fn4KK3wgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjIyMDo4OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KK3wgICAgICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOworfCAgICAgICAgIF4KK3wgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjI0NTo4OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KK3wgICAgICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOworfCAgICAgICAgIF4KK3wgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjI4MTo2OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KK3wgICAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKK3wgICAgICAgXgorfCAuLi8uLi9saWJpZG4tMS4zMi9zcmMvaWRuLmM6MzQwOjY6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQorfCAgICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVDUy00IHRvIFVURi04IikpOworfCAgICAgICBeCit8IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzozNjQ6NjogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCit8ICAgICAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVUNTLTQgdG8gVVRGLTgiKSk7Cit8ICAgICAgIF4KK3wgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjQ0Mjo4OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KK3wgICAgICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVDUy00IHRvIFVURi04IikpOworfCAgICAgICAgIF4KK3wgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjQ5ODo2OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KK3wgICAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKK3wgICAgICAgXgorfCAuLi8uLi9saWJpZG4tMS4zMi9zcmMvaWRuLmM6NTI3OjU6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQorfCAgICAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVVRGLTggdG8gVUNTLTQiKSk7Cit8ICAgICAgXgorfCAuLi8uLi9saWJpZG4tMS4zMi9zcmMvaWRuLmM6NTQwOjY6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQorfCAgICAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCBfKCJjb3VsZCBub3QgZG8gTkZLQyBub3JtYWxpemF0aW9uIikpOworfCAgICAgICBefn5+fgorfCAuLi8uLi9saWJpZG4tMS4zMi9zcmMvaWRuLmM6NTUxOjU6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQorfCAgICAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVVRGLTggdG8gVUNTLTQiKSk7Cit8ICAgICAgXgorCitTaWduZWQtb2ZmLWJ5OiBBbmRyw6kgRHJhc3ppayA8YWRyYXN6aWtAdHljb2ludC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgc3JjL2lkbi5jIHwgMjcgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2lkbi5jIGIvc3JjL2lkbi5jCitpbmRleCBiZTFjN2QxLi42OGU0MjkxIDEwMDY0NAorLS0tIGEvc3JjL2lkbi5jCisrKysgYi9zcmMvaWRuLmMKK0BAIC0xNzAsNyArMTcwLDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAgICAgICAoYXJnc19pbmZvLmlkbmFfdG9fdW5pY29kZV9naXZlbiA/IDEgOiAwKSArCisgICAgICAgKGFyZ3NfaW5mby5uZmtjX2dpdmVuID8gMSA6IDApICE9IDEpCisgICAgIHsKKy0gICAgICBlcnJvciAoMCwgMCwgXygib25seSBvbmUgb2YgLXMsIC1lLCAtZCwgLWEsIC11IG9yIC1uIGNhbiBiZSBzcGVjaWZpZWQiKSk7CisrICAgICAgZXJyb3IgKDAsIDAsICIlcyIsIF8oIm9ubHkgb25lIG9mIC1zLCAtZSwgLWQsIC1hLCAtdSBvciAtbiBjYW4gYmUgc3BlY2lmaWVkIikpOworICAgICAgIHVzYWdlIChFWElUX0ZBSUxVUkUpOworICAgICB9CisgCitAQCAtMTg1LDcgKzE4NSw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgICBpZiAoIWFyZ3NfaW5mby5xdWlldF9naXZlbgorICAgICAgICYmIGFyZ3NfaW5mby5pbnB1dHNfbnVtID09IDAKKyAgICAgICAmJiBpc2F0dHkgKGZpbGVubyAoc3RkaW4pKSkKKy0gICAgZnByaW50ZiAoc3RkZXJyLCBfKCJUeXBlIGVhY2ggaW5wdXQgc3RyaW5nIG9uIGEgbGluZSBieSBpdHNlbGYsICIKKysgICAgZnByaW50ZiAoc3RkZXJyLCAiJXMiLCBfKCJUeXBlIGVhY2ggaW5wdXQgc3RyaW5nIG9uIGEgbGluZSBieSBpdHNlbGYsICIKKyAJCSAgICAgICAidGVybWluYXRlZCBieSBhIG5ld2xpbmUgY2hhcmFjdGVyLlxuIikpOworIAorICAgZG8KK0BAIC0xOTcsNyArMTk3LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJICBpZiAoZmVvZiAoc3RkaW4pKQorIAkgICAgYnJlYWs7CisgCistCSAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgZXJybm8sIF8oImlucHV0IGVycm9yIikpOworKwkgIGVycm9yIChFWElUX0ZBSUxVUkUsIGVycm5vLCAiJXMiLCBfKCJpbnB1dCBlcnJvciIpKTsKKyAJfQorIAorICAgICAgIGlmIChzdHJsZW4gKGxpbmUpID4gMCkKK0BAIC0yMTUsNyArMjE1LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJICBpZiAoIXEpCisgCSAgICB7CisgCSAgICAgIGZyZWUgKHApOworLQkgICAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLAorKwkgICAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCAiJXMiLAorIAkJICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOworIAkgICAgfQorIAorQEAgLTI0MCw3ICsyNDAsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAkgIGlmICghcSkKKyAJICAgIHsKKyAJICAgICAgZnJlZSAocik7CistCSAgICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsCisrCSAgICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsICIlcyIsCisgCQkgICAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVVRGLTggdG8gVUNTLTQiKSk7CisgCSAgICB9CisgCitAQCAtMjc3LDcgKzI3Nyw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgCSAgcSA9IHN0cmluZ3ByZXBfdXRmOF90b191Y3M0IChwLCAtMSwgJmxlbik7CisgCSAgZnJlZSAocCk7CisgCSAgaWYgKCFxKQorLQkgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwKKysJICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsICIlcyIsCisgCQkgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOworIAorIAkgIGlmIChhcmdzX2luZm8uZGVidWdfZ2l2ZW4pCitAQCAtMzM2LDcgKzMzNiw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgCSAgciA9IHN0cmluZ3ByZXBfdWNzNF90b191dGY4IChxLCAtMSwgTlVMTCwgTlVMTCk7CisgCSAgZnJlZSAocSk7CisgCSAgaWYgKCFyKQorLQkgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwKKysJICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsICIlcyIsCisgCQkgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVDUy00IHRvIFVURi04IikpOworIAorIAkgIHAgPSBzdHJpbmdwcmVwX3V0ZjhfdG9fbG9jYWxlIChyKTsKK0BAIC0zNjAsNyArMzYwLDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJICBxID0gc3RyaW5ncHJlcF91dGY4X3RvX3VjczQgKHAsIC0xLCBOVUxMKTsKKyAJICBmcmVlIChwKTsKKyAJICBpZiAoIXEpCistCSAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLAorKwkgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgIiVzIiwKKyAJCSAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVUNTLTQgdG8gVVRGLTgiKSk7CisgCisgCSAgaWYgKGFyZ3NfaW5mby5kZWJ1Z19naXZlbikKK0BAIC00MzgsNyArNDM4LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJICBpZiAoIXEpCisgCSAgICB7CisgCSAgICAgIGZyZWUgKHApOworLQkgICAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLAorKwkgICAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCAiJXMiLAorIAkJICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVDUy00IHRvIFVURi04IikpOworIAkgICAgfQorIAorQEAgLTQ5NCw3ICs0OTQsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAkgIHIgPSBzdHJpbmdwcmVwX3VjczRfdG9fdXRmOCAocSwgLTEsIE5VTEwsIE5VTEwpOworIAkgIGZyZWUgKHEpOworIAkgIGlmICghcikKKy0JICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsCisrCSAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCAiJXMiLAorIAkJICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKKyAKKyAJICBwID0gc3RyaW5ncHJlcF91dGY4X3RvX2xvY2FsZSAocik7CitAQCAtNTIzLDcgKzUyMyw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgCSAgICAgIGlmICghcSkKKyAJCXsKKyAJCSAgZnJlZSAocCk7CistCQkgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsCisrCQkgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsICIlcyIsCisgCQkJIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVVRGLTggdG8gVUNTLTQiKSk7CisgCQl9CisgCitAQCAtNTM3LDcgKzUzNyw4IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgCSAgciA9IHN0cmluZ3ByZXBfdXRmOF9uZmtjX25vcm1hbGl6ZSAocCwgLTEpOworIAkgIGZyZWUgKHApOworIAkgIGlmICghcikKKy0JICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsIF8oImNvdWxkIG5vdCBkbyBORktDIG5vcm1hbGl6YXRpb24iKSk7CisrCSAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCAiJXMiLAorKwkJICAgXygiY291bGQgbm90IGRvIE5GS0Mgbm9ybWFsaXphdGlvbiIpKTsKKyAKKyAJICBpZiAoYXJnc19pbmZvLmRlYnVnX2dpdmVuKQorIAkgICAgeworQEAgLTU0Nyw3ICs1NDgsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAkgICAgICBpZiAoIXEpCisgCQl7CisgCQkgIGZyZWUgKHIpOworLQkJICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLAorKwkJICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCAiJXMiLAorIAkJCSBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOworIAkJfQorIAorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vYXZvaWRfQU1fUFJPR19NS0RJUl9QX3dhcm5pbmdfZXJyb3Jfd2l0aF9hdXRvbWFrZV8xLjEyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuL2F2b2lkX0FNX1BST0dfTUtESVJfUF93YXJuaW5nX2Vycm9yX3dpdGhfYXV0b21ha2VfMS4xMi5wYXRjaAppbmRleCAzNDc2YmI5Li45OGJhNGQ2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vYXZvaWRfQU1fUFJPR19NS0RJUl9QX3dhcm5pbmdfZXJyb3Jfd2l0aF9hdXRvbWFrZV8xLjEyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9hdm9pZF9BTV9QUk9HX01LRElSX1Bfd2FybmluZ19lcnJvcl93aXRoX2F1dG9tYWtlXzEuMTIucGF0Y2gKQEAgLTcsNyArNyw3IEBACiBlbGltaW5hdGVkIHRoZXNlIGRlcHJlY2F0ZWQgbWFjcm9zIHlldC4gU28gZGlzYWJsZSB0aGUgdHJlYXRtZW50IG9mIHdhcm5pbmdzCiBhcyBlcnJvcnMgdW50aWwgZ2V0dGV4dCBpcyB1cGRhdGVkIHRvIHJlbW92ZSB0aGUgZGVwcmVjYXRlZCBtYWNyb3MuCiAKLVNpZ25lZC1PZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgogMjAxMi8wNy8xMAogCiBJbmRleDogbGliaWRuLTEuMjQvY29uZmlndXJlLmFjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vbGliaWRuX2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9saWJpZG5fZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoCmluZGV4IDIwYWZkMjUuLjU2ODNkM2MgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9saWJpZG5fZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9saWJpZG5fZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoCkBAIC02LDcgKzYsNyBAQAogfCAvc3J2L2hvbWUvbml0aW4vYnVpbGRzL2J1aWxkLWdjYzQ3L3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL3NoYXJlL2F1dG9tYWtlLTEuMTIvYW0vbHRsaWJyYXJ5LmFtOiB3YXJuaW5nOiAnbGliaWRuLmxhJzogbGlua2luZyBsaWJ0b29sIGxpYnJhcmllcyB1c2luZyBhIG5vbi1QT1NJWAogfCAvc3J2L2hvbWUvbml0aW4vYnVpbGRzL2J1aWxkLWdjYzQ3L3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL3NoYXJlL2F1dG9tYWtlLTEuMTIvYW0vbHRsaWJyYXJ5LmFtOiBhcmNoaXZlciByZXF1aXJlcyAnQU1fUFJPR19BUicgaW4gJ2NvbmZpZ3VyZS5hYycKIAotU2lnbmVkLU9mZi1CeTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+CiAyMDEyLzA1LzAzCiAKIEluZGV4OiBsaWJpZG4tMS4yNC9jb25maWd1cmUuYWMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbl8xLjMyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuXzEuMzIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkNmU4ODUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuXzEuMzIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1TVU1NQVJZID0gIkludGVybmF0aW9uYWxpemVkIERvbWFpbiBOYW1lIHN1cHBvcnQgbGlicmFyeSIKLURFU0NSSVBUSU9OID0gIkltcGxlbWVudGF0aW9uIG9mIHRoZSBTdHJpbmdwcmVwLCBQdW55Y29kZSBhbmQgSUROQSBzcGVjaWZpY2F0aW9ucyBkZWZpbmVkIGJ5IHRoZSBJRVRGIEludGVybmF0aW9uYWxpemVkIERvbWFpbiBOYW1lcyAoSUROKSB3b3JraW5nIGdyb3VwLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJpZG4vIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICIoTEdQTHYyLjErIHwgTEdQTHYzKSAmIEdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWRmNGJlNDc5NDBhOTFlZTY5NTU2ZjVmNzFlZWQ0YWVjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEVTU0VSdjI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEVTU0VSdjM7bWQ1PWU2YTYwMGZkNWUxZDljYmRlMmQ5ODM2ODAyMzNhZDAyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkd2MjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlOR3YzO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvaWRuYS5oO2VuZGxpbmU9MjE7bWQ1PTdjMGIzODI4ZDFiMTUzNjYzYmU5YTA0YWQ0Zjc5NzVmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9pZG4uYztlbmRsaW5lPTIwO21kNT1mNDIzNWYyYTJjYjJiNjU3ODZiMjk3OWZiM2NmN2ZiZiIKLQotaW5oZXJpdCBwa2djb25maWcgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbwotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbGliaWRuLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vbGliaWRuX2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hdm9pZF9BTV9QUk9HX01LRElSX1Bfd2FybmluZ19lcnJvcl93aXRoX2F1dG9tYWtlXzEuMTIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNGRkODM1NmJhNTc3Mjg3ZWE3MDc2YmZhMTU1NGI1MzQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmE1ZDVhZmVlMmJlZmY3MDNhMzRlZTA5NDY2OGRhNWM2ZWE1YWZhMzg3ODRjZWJiYTg5MjQxMDVlMTg1YzRmNSIKLQotIyBjb21tYW5kIHRvb2wgaXMgdW5kZXIgR1BMdjMrLCB3aGlsZSBsaWJpZG4gaXRzZWxmIGlzIHVuZGVyIExHUEx2Mi4xKyBvciBMR1BMdjMKLSMgc28gcGFja2FnZSBjb21tYW5kIGludG8gYSBzZXBhcmF0ZSBwYWNrYWdlCi1QQUNLQUdFUyA9KyAiaWRuIgotRklMRVNfaWRuID0gIiR7YmluZGlyfS8qIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWNzaGFycCIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0Jcm0gLXJmICR7RH0ke2RhdGFkaXJ9L2VtYWNzCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuXzEuMzMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG5fMS4zMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kM2QwZjU1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuXzEuMzMuYmIKQEAgLTAsMCArMSw0MiBAQAorU1VNTUFSWSA9ICJJbnRlcm5hdGlvbmFsaXplZCBEb21haW4gTmFtZSBzdXBwb3J0IGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJJbXBsZW1lbnRhdGlvbiBvZiB0aGUgU3RyaW5ncHJlcCwgUHVueWNvZGUgYW5kIElETkEgc3BlY2lmaWNhdGlvbnMgZGVmaW5lZCBieSB0aGUgSUVURiBJbnRlcm5hdGlvbmFsaXplZCBEb21haW4gTmFtZXMgKElETikgd29ya2luZyBncm91cC4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGliaWRuLyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiKExHUEx2Mi4xKyB8IExHUEx2MykgJiBHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kZjRiZTQ3OTQwYTkxZWU2OTU1NmY1ZjcxZWVkNGFlYyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUnYyO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUnYzO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkd2MzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL2lkbmEuaDtlbmRsaW5lPTIxO21kNT0zN2NmZmFkMjQ4MDdmNDQ2YTI0ZGUzZTczNzFmMjBiOSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvaWRuLmM7ZW5kbGluZT0yMDttZDU9MDllOTcwMzRhODg3N2IzNDUxY2I2NTA2NWZjMmMwNmUiCitERVBFTkRTID0gInZpcnR1YWwvbGliaWNvbnYiCisKK2luaGVyaXQgcGtnY29uZmlnIGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gZ3RrLWRvYworCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbGliaWRuLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vbGliaWRuX2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hdm9pZF9BTV9QUk9HX01LRElSX1Bfd2FybmluZ19lcnJvcl93aXRoX2F1dG9tYWtlXzEuMTIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pZG4tZml4LXByaW50Zi1mb3JtYXQtc2VjdXJpdHktd2FybmluZ3MucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYTlhYTdlMDAzNjY1ZGU5YzgyYmQzZjlmYzZjY2YzMDgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDRhN2FhYjYzNWJiNzIxY2VlZjZiZWVjYzRkNDlkZmQxOTQ3ODMyNWUxYjQ3ZjMxOTZmN2QyYWNjNDkzMGUxOSIKKworIyBjb21tYW5kIHRvb2wgaXMgdW5kZXIgR1BMdjMrLCB3aGlsZSBsaWJpZG4gaXRzZWxmIGlzIHVuZGVyIExHUEx2Mi4xKyBvciBMR1BMdjMKKyMgc28gcGFja2FnZSBjb21tYW5kIGludG8gYSBzZXBhcmF0ZSBwYWNrYWdlCitQQUNLQUdFUyA9KyAiaWRuIgorRklMRVNfaWRuID0gIiR7YmluZGlyfS8qIgorCitMSUNFTlNFXyR7UE59ID0gIkxHUEx2Mi4xKyB8IExHUEx2MyIKK0xJQ0VOU0VfaWRuID0gIkdQTHYzKyIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1jc2hhcnAiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCXJtIC1yZiAke0R9JHtkYXRhZGlyfS9lbWFjcworfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2LzAwMDEtQWRkLWZhbGxiYWNrLWZvcGVuY29va2llLWltcGxlbWVudGF0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHYvMDAwMS1BZGQtZmFsbGJhY2stZm9wZW5jb29raWUtaW1wbGVtZW50YXRpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRlMjIyOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2LzAwMDEtQWRkLWZhbGxiYWNrLWZvcGVuY29va2llLWltcGxlbWVudGF0aW9uLnBhdGNoCkBAIC0wLDAgKzEsMjU0IEBACitGcm9tIDViNmUxMTNmNTQ4YmQ4YTJiMTAwMjY3YmM1ZDU0Y2VlODYxYTRiOTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/TmVhbD0yMEdvbXBhPTIwPTI4PUUzPTgzPThCPUUzPTgzPUJDPUUzPTgzPUFCPUUzPTgzPUJCPz0KKyA9P1VURi04P3E/PUUzPTgyPUIzPUUzPTgyPTk5PUUzPTgzPUIzPUUzPTgzPThGPUUzPTgyPTlBPTI5Pz0KKyA8bmdvbXBhMTNAZ21haWwuY29tPgorRGF0ZTogV2VkLCAxMSBOb3YgMjAxNSAyMDozMjoxNyAtMDUwMAorU3ViamVjdDogW1BBVENIXSBBZGQgZmFsbGJhY2sgZm9wZW5jb29raWUoKSBpbXBsZW1lbnRhdGlvbgorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitJbiBlbnZpcm9ubWVudHMgd2hlcmUgbmVpdGhlciBmb3BlbmNvb2tpZSgpIG5vciBmdW5vcGVuKCkKK2FyZSBpbXBsZW1lbnRlZCwgd2UgbmVlZCB0byBwcm92aWRlIGEgc3VpdGFibGUgaW1wbGVtZW50YXRpb24KK29mIGZvcGVuY29va2llKCkgdGhhdCB3ZSBjYW4gdXNlLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9saWJzb2x2L3B1bGwvMTEyIF0KKworU2lnbmVkLW9mZi1ieTogTmVhbCBHb21wYSAo44OL44O844Or44O744Kz44KZ44Oz44OP44KaKSA8bmdvbXBhMTNAZ21haWwuY29tPmNvbT4KK1NpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgorLS0tCisgZXh0L0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAgICAgfCAgIDcgKysKKyBleHQvc29sdl94Zm9wZW4uYyAgICAgICAgICAgICAgICAgICAgICB8ICAxMCArLS0KKyBleHQvc29sdl94Zm9wZW5fZmFsbGJhY2tfZm9wZW5jb29raWUuYyB8IDEyNCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBleHQvc29sdl94Zm9wZW5fZmFsbGJhY2tfZm9wZW5jb29raWUuaCB8ICAyOCArKysrKysrKworIDQgZmlsZXMgY2hhbmdlZCwgMTY1IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGV4dC9zb2x2X3hmb3Blbl9mYWxsYmFja19mb3BlbmNvb2tpZS5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGV4dC9zb2x2X3hmb3Blbl9mYWxsYmFja19mb3BlbmNvb2tpZS5oCisKK2RpZmYgLS1naXQgYS9leHQvQ01ha2VMaXN0cy50eHQgYi9leHQvQ01ha2VMaXN0cy50eHQKK2luZGV4IGFkNTI0OTUuLjRmMjgyY2UgMTAwNjQ0CistLS0gYS9leHQvQ01ha2VMaXN0cy50eHQKKysrKyBiL2V4dC9DTWFrZUxpc3RzLnR4dAorQEAgLTQsNiArNCwxMyBAQCBTRVQgKGxpYnNvbHZleHRfU1JDUworIFNFVCAobGlic29sdmV4dF9IRUFERVJTCisgICAgIHRvb2xzX3V0aWwuaCBzb2x2X3hmb3Blbi5oIHRlc3RjYXNlLmgpCisgCisrSUYgKE5PVCBIQVZFX0ZPUEVOQ09PS0lFIEFORCBOT1QgSEFWRV9GVU5PUEVOKQorKyAgICBTRVQgKGxpYnNvbHZleHRfU1JDUyAke2xpYnNvbHZleHRfU1JDU30KKysgICAgICAgIHNvbHZfeGZvcGVuX2ZhbGxiYWNrX2ZvcGVuY29va2llLmMpCisrICAgIFNFVCAobGlic29sdmV4dF9IRUFERVJTICR7bGlic29sdmV4dF9IRUFERVJTfQorKyAgICAgICAgc29sdl94Zm9wZW5fZmFsbGJhY2tfZm9wZW5jb29raWUuaCkKKytFTkRJRiAoTk9UIEhBVkVfRk9QRU5DT09LSUUgQU5EIE5PVCBIQVZFX0ZVTk9QRU4pCisrCisgSUYgKEVOQUJMRV9SUE1EQikKKyAgICAgU0VUIChsaWJzb2x2ZXh0X1NSQ1MgJHtsaWJzb2x2ZXh0X1NSQ1N9CisgICAgICAgICBwb29sX2ZpbGVjb25mbGljdHMuYyByZXBvX3JwbWRiLmMpCitkaWZmIC0tZ2l0IGEvZXh0L3NvbHZfeGZvcGVuLmMgYi9leHQvc29sdl94Zm9wZW4uYworaW5kZXggYjA0MjFiZi4uMzEzNDVkZCAxMDA2NDQKKy0tLSBhL2V4dC9zb2x2X3hmb3Blbi5jCisrKysgYi9leHQvc29sdl94Zm9wZW4uYworQEAgLTEzLDYgKzEzLDEwIEBACisgI2luY2x1ZGUgPHpsaWIuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAKKysjaWYgIWRlZmluZWQoSEFWRV9GVU5PUEVOKSAmJiAhZGVmaW5lZChIQVZFX0ZPUEVOQ09PS0lFKQorKyNpbmNsdWRlICJzb2x2X3hmb3Blbl9mYWxsYmFja19mb3BlbmNvb2tpZS5oIgorKyNlbmRpZgorKworICNpbmNsdWRlICJzb2x2X3hmb3Blbi5oIgorICNpbmNsdWRlICJ1dGlsLmgiCisgCitAQCAtMzksNyArNDMsNyBAQCBzdGF0aWMgRklMRSAqY29va2llb3Blbih2b2lkICpjb29raWUsIGNvbnN0IGNoYXIgKm1vZGUsCisgCXNzaXplX3QgKCpjd3JpdGUpKHZvaWQgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpLAorIAlpbnQgKCpjY2xvc2UpKHZvaWQgKikpCisgeworLSNpZmRlZiBIQVZFX0ZVTk9QRU4KKysjaWYgZGVmaW5lZChIQVZFX0ZVTk9QRU4pICYmICFkZWZpbmVkKEhBVkVfRk9QRU5DT09LSUUpCisgICBpZiAoIWNvb2tpZSkKKyAgICAgcmV0dXJuIDA7CisgICByZXR1cm4gZnVub3Blbihjb29raWUsCitAQCAtNDgsNyArNTIsNyBAQCBzdGF0aWMgRklMRSAqY29va2llb3Blbih2b2lkICpjb29raWUsIGNvbnN0IGNoYXIgKm1vZGUsCisgICAgICAgKGZwb3NfdCAoKikodm9pZCAqLCBmcG9zX3QsIGludCkpTlVMTCwJCQkJCS8qIHNlZWtmbiAqLworICAgICAgIGNjbG9zZQorICAgICAgICk7CistI2VsaWYgZGVmaW5lZChIQVZFX0ZPUEVOQ09PS0lFKQorKyNlbHNlCisgICBjb29raWVfaW9fZnVuY3Rpb25zX3QgY2lvOworIAorICAgaWYgKCFjb29raWUpCitAQCAtNjAsOCArNjQsNiBAQCBzdGF0aWMgRklMRSAqY29va2llb3Blbih2b2lkICpjb29raWUsIGNvbnN0IGNoYXIgKm1vZGUsCisgICAgIGNpby53cml0ZSA9IGN3cml0ZTsKKyAgIGNpby5jbG9zZSA9IGNjbG9zZTsKKyAgIHJldHVybiAgZm9wZW5jb29raWUoY29va2llLCAqbW9kZSA9PSAndycgPyAidyIgOiAiciIsIGNpbyk7CistI2Vsc2UKKy0jIGVycm9yIE5lZWQgdG8gaW1wbGVtZW50IGN1c3RvbSBJL08KKyAjZW5kaWYKKyB9CisgCitkaWZmIC0tZ2l0IGEvZXh0L3NvbHZfeGZvcGVuX2ZhbGxiYWNrX2ZvcGVuY29va2llLmMgYi9leHQvc29sdl94Zm9wZW5fZmFsbGJhY2tfZm9wZW5jb29raWUuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjg5NDI2YTkKKy0tLSAvZGV2L251bGwKKysrKyBiL2V4dC9zb2x2X3hmb3Blbl9mYWxsYmFja19mb3BlbmNvb2tpZS5jCitAQCAtMCwwICsxLDEyNCBAQAorKy8qCisrICoJUHJvdmlkZXMgYSB2ZXJ5IGxpbWl0ZWQgZm9wZW5jb29raWUoKSBmb3IgZW52aXJvbm1lbnRzIHdpdGggYSBsaWJjCisrICoJdGhhdCBsYWNrcyBpdC4KKysgKgorKyAqCUF1dGhvcnM6IHpoYXNoYSAmIG5zegorKyAqCU1vZGlmaWVkIGZvciBsaWJzb2x2IGJ5IE5lYWwgR29tcGEKKysgKgorKyAqCVRoaXMgcHJvZ3JhbSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNEIGxpY2Vuc2UsIHJlYWQgTElDRU5TRS5CU0QKKysgKglmb3IgZnVydGhlciBpbmZvcm1hdGlvbi4KKysgKgorKyAqLworKworKyNkZWZpbmUgX0xBUkdFRklMRTY0X1NPVVJDRSAxCisrI2luY2x1ZGUgPHB0aHJlYWQuaD4KKysjaW5jbHVkZSA8c3RkaW8uaD4KKysjaW5jbHVkZSA8c3RkbGliLmg+CisrI2luY2x1ZGUgPHVuaXN0ZC5oPgorKyNpbmNsdWRlIDxmY250bC5oPgorKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKysjaW5jbHVkZSA8ZXJybm8uaD4KKysjaW5jbHVkZSAic29sdl94Zm9wZW5fZmFsbGJhY2tfZm9wZW5jb29raWUuaCIKKysKKytleHRlcm4gaW50IHBpcGUyKGludFsyXSwgaW50KTsKKysKKytzdHJ1Y3QgY3R4IHsKKysgICAgaW50IGZkOworKyAgICB2b2lkICpjb29raWU7CisrICAgIHN0cnVjdCBjb29raWVfaW9fZnVuY3Rpb25zX3QgaW87CisrICAgIGNoYXIgYnVmWzEwMjRdOworK307CisrCisrc3RhdGljIHZvaWQgKnByb3h5KHZvaWQgKmFyZykKKyt7CisrICAgIHN0cnVjdCBjdHggKmN0eCA9IGFyZzsKKysgICAgc3NpemVfdCByOworKyAgICBzaXplX3QgbiwgazsKKysKKysgICAgcHRocmVhZF9kZXRhY2gocHRocmVhZF9zZWxmKCkpOworKworKyAgICB3aGlsZSAoMSkgeworKyAgICAgICAgciA9IGN0eC0+aW8ucmVhZCA/CisrICAgICAgICAgICAgKGN0eC0+aW8ucmVhZCkoY3R4LT5jb29raWUsIGN0eC0+YnVmLCBzaXplb2YoY3R4LT5idWYpKSA6CisrICAgICAgICAgICAgcmVhZChjdHgtPmZkLCBjdHgtPmJ1Ziwgc2l6ZW9mKGN0eC0+YnVmKSk7CisrICAgICAgICBpZiAociA8IDApIHsKKysgICAgICAgICAgICBpZiAoZXJybm8gIT0gRUlOVFIpIHsgYnJlYWs7IH0KKysgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgIH0KKysgICAgICAgIGlmIChyID09IDApIHsgYnJlYWs7IH0KKysKKysgICAgICAgIG4gPSByLCBrID0gMDsKKysgICAgICAgIHdoaWxlIChuID4gMCkgeworKyAgICAgICAgICAgIHIgPSBjdHgtPmlvLndyaXRlID8KKysgICAgICAgICAgICAgICAgKGN0eC0+aW8ud3JpdGUpKGN0eC0+Y29va2llLCBjdHgtPmJ1ZiArIGssIG4pIDoKKysgICAgICAgICAgICAgICAgd3JpdGUoY3R4LT5mZCwgY3R4LT5idWYgKyBrLCBuKTsKKysgICAgICAgICAgICBpZiAociA8IDApIHsKKysgICAgICAgICAgICAgICAgaWYgKGVycm5vICE9IEVJTlRSKSB7IGJyZWFrOyB9CisrICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBpZiAociA9PSAwKSB7IGJyZWFrOyB9CisrCisrICAgICAgICAgICAgbiAtPSByLCBrICs9IHI7CisrICAgICAgICB9CisrICAgICAgICBpZiAobiA+IDApIHsgYnJlYWs7IH0KKysgICAgfQorKworKyAgICBpZiAoY3R4LT5pby5jbG9zZSkgeyAoY3R4LT5pby5jbG9zZSkoY3R4LT5jb29raWUpOyB9CisrICAgIGNsb3NlKGN0eC0+ZmQpOworKyAgICByZXR1cm4gTlVMTDsKKyt9CisrCisrRklMRSAqZm9wZW5jb29raWUodm9pZCAqY29va2llLCBjb25zdCBjaGFyICptb2RlLCBzdHJ1Y3QgY29va2llX2lvX2Z1bmN0aW9uc190IGlvKQorK3sKKysgICAgc3RydWN0IGN0eCAqY3R4ID0gTlVMTDsKKysgICAgaW50IHJkID0gMCwgd3IgPSAwOworKyAgICBpbnQgcFsyXSA9IHsgLTEsIC0xIH07CisrICAgIEZJTEUgKmYgPSBOVUxMOworKyAgICBwdGhyZWFkX3QgZHVtbXk7CisrCisrICAgIHN3aXRjaCAobW9kZVswXSkgeworKyAgICAgICAgY2FzZSAnYSc6CisrICAgICAgICBjYXNlICd3Jzogd3IgPSAxOyBicmVhazsKKysgICAgICAgIGNhc2UgJ3InOiByZCA9IDE7IGJyZWFrOworKyAgICAgICAgZGVmYXVsdDoKKysgICAgICAgICAgICBlcnJubyA9IEVJTlZBTDsKKysgICAgICAgICAgICByZXR1cm4gTlVMTDsKKysgICAgfQorKyAgICBzd2l0Y2ggKG1vZGVbMV0pIHsKKysgICAgICAgIGNhc2UgJ1wwJzogYnJlYWs7CisrICAgICAgICBjYXNlICcrJzoKKysgICAgICAgICAgICBpZiAobW9kZVsyXSA9PSAnXDAnKSB7CisrICAgICAgICAgICAgICAgIGVycm5vID0gRU5PVFNVUDsKKysgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisrICAgICAgICAgICAgfQorKyAgICAgICAgZGVmYXVsdDoKKysgICAgICAgICAgICBlcnJubyA9IEVJTlZBTDsKKysgICAgICAgICAgICByZXR1cm4gTlVMTDsKKysgICAgfQorKyAgICBpZiAoaW8uc2VlaykgeworKyAgICAgICAgZXJybm8gPSBFTk9UU1VQOworKyAgICAgICAgcmV0dXJuIE5VTEw7CisrICAgIH0KKysKKysgICAgY3R4ID0gbWFsbG9jKHNpemVvZigqY3R4KSk7CisrICAgIGlmICghY3R4KSB7IHJldHVybiBOVUxMOyB9CisrICAgIGlmIChwaXBlMihwLCBPX0NMT0VYRUMpICE9IDApIHsgZ290byBlcnI7IH0KKysgICAgaWYgKChmID0gZmRvcGVuKHBbd3JdLCBtb2RlKSkgPT0gTlVMTCkgeyBnb3RvIGVycjsgfQorKyAgICBwW3dyXSA9IC0xOworKyAgICBjdHgtPmZkID0gcFtyZF07CisrICAgIGN0eC0+Y29va2llID0gY29va2llOworKyAgICBjdHgtPmlvLnJlYWQgPSByZCA/IGlvLnJlYWQgOiBOVUxMOworKyAgICBjdHgtPmlvLndyaXRlID0gd3IgPyBpby53cml0ZSA6IE5VTEw7CisrICAgIGN0eC0+aW8uc2VlayA9IE5VTEw7CisrICAgIGN0eC0+aW8uY2xvc2UgPSBpby5jbG9zZTsKKysgICAgaWYgKHB0aHJlYWRfY3JlYXRlKCZkdW1teSwgTlVMTCwgcHJveHksIGN0eCkgIT0gMCkgeyBnb3RvIGVycjsgfQorKworKyAgICByZXR1cm4gZjsKKysKKytlcnI6CisrICAgIGlmIChwWzBdID49IDApIHsgY2xvc2UocFswXSk7IH0KKysgICAgaWYgKHBbMV0gPj0gMCkgeyBjbG9zZShwWzFdKTsgfQorKyAgICBpZiAoZikgeyBmY2xvc2UoZik7IH0KKysgICAgZnJlZShjdHgpOworKyAgICByZXR1cm4gTlVMTDsKKyt9CitkaWZmIC0tZ2l0IGEvZXh0L3NvbHZfeGZvcGVuX2ZhbGxiYWNrX2ZvcGVuY29va2llLmggYi9leHQvc29sdl94Zm9wZW5fZmFsbGJhY2tfZm9wZW5jb29raWUuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjcyMjNlM2YKKy0tLSAvZGV2L251bGwKKysrKyBiL2V4dC9zb2x2X3hmb3Blbl9mYWxsYmFja19mb3BlbmNvb2tpZS5oCitAQCAtMCwwICsxLDI4IEBACisrLyoKKysgKglQcm92aWRlcyBhIHZlcnkgbGltaXRlZCBmb3BlbmNvb2tpZSgpIGZvciBlbnZpcm9ubWVudHMgd2l0aCBhIGxpYmMKKysgKgl0aGF0IGxhY2tzIGl0LgorKyAqCisrICoJQXV0aG9yczogemhhc2hhICYgbnN6CisrICoJTW9kaWZpZWQgZm9yIGxpYnNvbHYgYnkgTmVhbCBHb21wYQorKyAqCisrICoJVGhpcyBwcm9ncmFtIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0QgbGljZW5zZSwgcmVhZCBMSUNFTlNFLkJTRAorKyAqCWZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLgorKyAqCisrICovCisrCisrI2lmbmRlZiBTT0xWX1hGT1BFTl9GQUxMQkFDS19GT1BFTkNPT0tJRV9ICisrI2RlZmluZSBTT0xWX1hGT1BFTl9GQUxMQkFDS19GT1BFTkNPT0tJRV9ICisrCisrI2luY2x1ZGUgPHN0ZGlvLmg+CisrI2luY2x1ZGUgPHN0ZGludC5oPgorKworK3R5cGVkZWYgc3RydWN0IGNvb2tpZV9pb19mdW5jdGlvbnNfdCB7CisrICAgIHNzaXplX3QgKCpyZWFkKSh2b2lkICosIGNoYXIgKiwgc2l6ZV90KTsKKysgICAgc3NpemVfdCAoKndyaXRlKSh2b2lkICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKKysgICAgaW50ICgqc2Vlaykodm9pZCAqLCBvZmY2NF90LCBpbnQpOworKyAgICBpbnQgKCpjbG9zZSkodm9pZCAqKTsKKyt9IGNvb2tpZV9pb19mdW5jdGlvbnNfdDsKKysKKytGSUxFICpmb3BlbmNvb2tpZSh2b2lkICpjb29raWUsIGNvbnN0IGNoYXIgKm1vZGUsIHN0cnVjdCBjb29raWVfaW9fZnVuY3Rpb25zX3QgaW8pOworKworKyNlbmRpZgorLS0gCisyLjQuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdi8wMDAxLUNNYWtlTGlzdHMudHh0LWZpeC1NQU5fSU5TVEFMTF9ESVIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdi8wMDAxLUNNYWtlTGlzdHMudHh0LWZpeC1NQU5fSU5TVEFMTF9ESVIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3MmVjYzkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHYvMDAwMS1DTWFrZUxpc3RzLnR4dC1maXgtTUFOX0lOU1RBTExfRElSLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotRnJvbSAyODBmMGQzN2M2NDJkNjhiYWQyYTJlNDllZjQzNzk1MzQ3NGQ5OWU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDYgQXByIDIwMTYgMjM6MTU6MDIgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gQ01ha2VMaXN0cy50eHQ6IGZpeCBNQU5fSU5TVEFMTF9ESVIKLQotSXQgY2hlY2tzICR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9L3NoYXJlL21hbiB3aGVuIGNvbmZpZ3VyZSwgYnV0IGl0IG1heQotbm90IGV4aXN0IHdoZW4gY3Jvc3Njb21waWxlLCBmb3IgZXhhbXBsZSwgd2hlbiBDTUFLRV9JTlNUQUxMX1BSRUZJWD0iLyIsCi1pdCBpcyBPSywgYnV0IHdoZW4gQ01BS0VfSU5TVEFMTF9QUkVGSVg9Ii9zb21lL3BhdGgvZWxzZSIsIHRoZW4gaXQKLWRvZXNuJ3QgZXhpc3QsIGFuZCB0aGUgbWFuIGRpciB3b3VsZCBiZSBzZXQgdG8gIi91c3IvbWFuIiB3aGljaCBpcwotaW5jb3JyZWN0LgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBDTWFrZUxpc3RzLnR4dCB8IDUgKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0Ci1pbmRleCBmZDE0MjZiLi43NDdkYjIyIDEwMDY0NAotLS0tIGEvQ01ha2VMaXN0cy50eHQKLSsrKyBiL0NNYWtlTGlzdHMudHh0Ci1AQCAtNTcsMTAgKzU3LDcgQEAgZWxzZSAoREVGSU5FRCBJTkNMVURFKQotIEVORElGIChERUZJTkVEICBJTkNMVURFKQotIE1FU1NBR0UgKFNUQVRVUyAiSGVhZGVyIGZpbGVzIHdpbGwgYmUgaW5zdGFsbGVkIGluICR7SU5DTFVERV9JTlNUQUxMX0RJUn0iKQotIFNFVCAoQklOX0lOU1RBTExfRElSICIke0NNQUtFX0lOU1RBTExfUFJFRklYfS9iaW4iKQotLVNFVCAoTUFOX0lOU1RBTExfRElSICIke0NNQUtFX0lOU1RBTExfUFJFRklYfS9tYW4iKQotLUlGIChJU19ESVJFQ1RPUlkgIiR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9L3NoYXJlL21hbiIgIEFORCBOT1QgSVNfRElSRUNUT1JZICIke0NNQUtFX0lOU1RBTExfUFJFRklYfS9tYW4iKQotLSAgU0VUIChNQU5fSU5TVEFMTF9ESVIgIiR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9L3NoYXJlL21hbiIpCi0tRU5ESUYgKElTX0RJUkVDVE9SWSAiJHtDTUFLRV9JTlNUQUxMX1BSRUZJWH0vc2hhcmUvbWFuIiAgQU5EIE5PVCBJU19ESVJFQ1RPUlkgIiR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9L21hbiIpCi0rU0VUIChNQU5fSU5TVEFMTF9ESVIgIiR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9L3NoYXJlL21hbiIpCi0gTUVTU0FHRShTVEFUVVMgIk1hbiBwYWdlcyB3aWxsIGJlIGluc3RhbGxlZCBpbiAke01BTl9JTlNUQUxMX0RJUn0iKQotIAotICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2XzAuNi4yMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2XzAuNi4yMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mM2YzZDZlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHZfMC42LjIzLmJiCkBAIC0wLDAgKzEsMjkgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSBmb3Igc29sdmluZyBwYWNrYWdlcyBhbmQgcmVhZGluZyByZXBvc2l0b3JpZXMiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvbGlic29sdiIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYvaXNzdWVzIgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5CU0Q7bWQ1PTYyMjcyYmQxMWM5NzM5NmQ0YWFmMWM0MWJjMTFmN2Q4IgorCitERVBFTkRTID0gImV4cGF0IHpsaWIiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9saWJzb2x2LmdpdCBcCisgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vMDAwMS1BZGQtZmFsbGJhY2stZm9wZW5jb29raWUtaW1wbGVtZW50YXRpb24ucGF0Y2giCisKK1NSQ1JFViA9ICJmNjU0YzhjZmE1MjQyN2VkNDJkNzE0MmU1ODQ1MmRhZTA4YzBjMmQwIgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlCisKK0VYVFJBX09FQ01BS0UgPSAiLURMSUI9JHtiYXNlbGlifSAtRE1VTFRJX1NFTUFOVElDUz1PTiIKKworUEFDS0FHRVMgPSsgIiR7UE59LXRvb2xzICR7UE59ZXh0IgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7ZGF0YWRpcn0vY21ha2UvTW9kdWxlcy9GaW5kTGliU29sdi5jbWFrZSIKK0ZJTEVTXyR7UE59LXRvb2xzID0gIiR7YmluZGlyfS8qIgorRklMRVNfJHtQTn1leHQgPSAiJHtsaWJkaXJ9LyR7UE59ZXh0LnNvLioiCisKK0JCQ0xBU1NFWFRFTkQgPSsgIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiODFjOGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHZfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciBzb2x2aW5nIHBhY2thZ2VzIGFuZCByZWFkaW5nIHJlcG9zaXRvcmllcyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9saWJzb2x2IgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvbGlic29sdi9pc3N1ZXMiCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLkJTRDttZDU9NjIyNzJiZDExYzk3Mzk2ZDRhYWYxYzQxYmMxMWY3ZDgiCi0KLURFUEVORFMgPSAiZXhwYXQgemxpYiIKLQotUFYgPSAiMC42LjE5IgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vb3BlblNVU0UvbGlic29sdi5naXQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1DTWFrZUxpc3RzLnR4dC1maXgtTUFOX0lOU1RBTExfRElSLnBhdGNoIFwKLSIKLVNSQ1JFViA9ICI0YzVhZjQwMWE4OTg1OGQ0Y2ViYmZlNDBjNTlhMDAzMWZmOWRiNWIwIgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGNtYWtlCi0KLUVYVFJBX09FQ01BS0UgPSAiLURMSUI9JHtiYXNlbGlifSIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXRvb2xzICR7UE59ZXh0IgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7ZGF0YWRpcn0vY21ha2UvTW9kdWxlcy9GaW5kTGliU29sdi5jbWFrZSIKLUZJTEVTXyR7UE59LXRvb2xzID0gIiR7YmluZGlyfS8qIgotRklMRVNfJHtQTn1leHQgPSAiJHtsaWJkaXJ9LyR7UE59ZXh0LnNvLioiCi0KLUJCQ0xBU1NFWFRFTkQgPSsgIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnVzZXIvbGlidXNlci8wMDAxLW1vZHVsZXMtZmlsZXMuYy1wYXJzZV9maWVsZC1maXgtc3RyaW5nLWZvcm1hdGluZy1pbi0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnVzZXIvbGlidXNlci8wMDAxLW1vZHVsZXMtZmlsZXMuYy1wYXJzZV9maWVsZC1maXgtc3RyaW5nLWZvcm1hdGluZy1pbi0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2M0N2RmMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidXNlci9saWJ1c2VyLzAwMDEtbW9kdWxlcy1maWxlcy5jLXBhcnNlX2ZpZWxkLWZpeC1zdHJpbmctZm9ybWF0aW5nLWluLS5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIGE0ODU3OTExZWNlNWViZmNkZWY0MmFlZTRjMDcwZWIyMTZmMzk1OTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW49QzM9QURiYWw9MjBMaW09QzM9QjNuPz0gPGFuaWJhbC5saW1vbkBsaW51eC5pbnRlbC5jb20+CitEYXRlOiBGcmksIDEzIE1heSAyMDE2IDExOjQwOjEzIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIG1vZHVsZXMvZmlsZXMuYzogcGFyc2VfZmllbGQgZml4IHN0cmluZyBmb3JtYXRpbmcgaW4KKyBnX3dhcm5pbmdzCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK1tZT0NUTyAjOTU0N10KKworU2lnbmVkLW9mZi1ieTogQW7DrWJhbCBMaW3Ds24gPGFuaWJhbC5saW1vbkBsaW51eC5pbnRlbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgbW9kdWxlcy9maWxlcy5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbW9kdWxlcy9maWxlcy5jIGIvbW9kdWxlcy9maWxlcy5jCitpbmRleCA0ZWYwYTU3Li4zNWVhZmM5IDEwMDY0NAorLS0tIGEvbW9kdWxlcy9maWxlcy5jCisrKysgYi9tb2R1bGVzL2ZpbGVzLmMKK0BAIC01MzQsNyArNTM0LDcgQEAgcGFyc2VfZmllbGQoY29uc3Qgc3RydWN0IGZvcm1hdF9zcGVjaWZpZXIgKmZvcm1hdCwgR1ZhbHVlICp2YWx1ZSwKKyAJCQkJCQkgc3RyaW5nLCAmZXJyKTsKKyAJaWYgKHJldCA9PSBGQUxTRSkgeworIAkJZ19hc3NlcnQoZXJyICE9IE5VTEwpOworLQkJZ193YXJuaW5nKGx1X3N0cmVycm9yKGVycikpOworKwkJZ193YXJuaW5nKGx1X3N0cmVycm9yKGVyciksIE5VTEwpOworIAkJbHVfZXJyb3JfZnJlZSgmZXJyKTsKKyAJfQorIAlyZXR1cm4gcmV0OworLS0gCisyLjEuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnVzZXIvbGlidXNlcl8wLjYyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ1c2VyL2xpYnVzZXJfMC42Mi5iYgppbmRleCAxMzY5YWU4Li4zZDBiNTE2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnVzZXIvbGlidXNlcl8wLjYyLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidXNlci9saWJ1c2VyXzAuNjIuYmIKQEAgLTE0LDE2ICsxNCwxNyBAQAogU1JDX1VSSSA9ICJodHRwczovL2ZlZG9yYWhvc3RlZC5vcmcvcmVsZWFzZXMvbC9pL2xpYnVzZXIvbGlidXNlci0ke1BWfS50YXIueHogXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1DaGVjay1mb3ItaXNzZXR1Z2lkLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDItcmVtb3ZlLXVudXNlZC1leGVjaW5mby5oLnBhdGNoIFwKLSAgICAgICAgICAiCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1vZHVsZXMtZmlsZXMuYy1wYXJzZV9maWVsZC1maXgtc3RyaW5nLWZvcm1hdGluZy1pbi0ucGF0Y2ggXAorICAgICAgICAgICAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICI2M2U1ZTVjNTUxZTk5ZGM1MzAyYjQwYjgwYmQ2ZDRmMiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJhNThmZjRmYWJiMDFhMjUwNDNiMTQyMTg1YTMzZWVlYTk2MTEwOWRkNjBkNGI0MGI2YTlkZjRmYTNjYWNlMjBiIgogCi1ERVBFTkRTID0gInBvcHQgbGlicGFtIGdsaWItMi4wIGRvY2Jvb2stdXRpbHMtbmF0aXZlIGxpbnV4ZG9jLXRvb2xzLW5hdGl2ZSBweXRob24iCitERVBFTkRTID0gInBvcHQgbGlicGFtIGdsaWItMi4wIGRvY2Jvb2stdXRpbHMtbmF0aXZlIGxpbnV4ZG9jLXRvb2xzLW5hdGl2ZSBweXRob24zIgogCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHB5dGhvbm5hdGl2ZSBweXRob24tZGlyIHBrZ2NvbmZpZworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBweXRob24zbmF0aXZlIHB5dGhvbjMtZGlyIHBrZ2NvbmZpZyBndGstZG9jCiAKLUVYVFJBX09FTUFLRSA9ICJQWVRIT05fQ1BQRkxBR1M9LUkke1NUQUdJTkdfSU5DRElSfS8ke1BZVEhPTl9ESVJ9IgorRVhUUkFfT0VNQUtFID0gIlBZVEhPTl9DUFBGTEFHUz0tSSR7U1RBR0lOR19JTkNESVJ9LyR7UFlUSE9OX0RJUn0ke1BZVEhPTl9BQkl9IgogCiBQQUNLQUdFUyArPSAiJHtQTn0tcHl0aG9uICIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZC8wMDAxLVVzZS1wa2ctY29uZmlnLWZvci1wY3JlLWRlcGVuZGVuY3ktaW5zdGVhZC1vZi1jb25maWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpZ2h0dHBkL2xpZ2h0dHBkLzAwMDEtVXNlLXBrZy1jb25maWctZm9yLXBjcmUtZGVwZW5kZW5jeS1pbnN0ZWFkLW9mLWNvbmZpZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOGM3ZjM3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZC8wMDAxLVVzZS1wa2ctY29uZmlnLWZvci1wY3JlLWRlcGVuZGVuY3ktaW5zdGVhZC1vZi1jb25maWcucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSBlN2E4YzkyNWI5MzE2YTcyYmRjOGYzMjc4OWZmZTU2ZmRhNWM0Nzg4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI2IEF1ZyAyMDE2IDE4OjIwOjMyICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIFVzZSBwa2ctY29uZmlnIGZvciBwY3JlIGRlcGVuZGVuY3kgaW5zdGVhZCBvZiAtY29uZmlnIHNjcmlwdC4KKworUlAgMjAxNC81LzIyCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgMTEgKysrKysrLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCAxZDE3MmExLi5hOTIzNmRhIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0zODAsMTEgKzM4MCwxMiBAQCBpZiB0ZXN0ICIkV0lUSF9QQ1JFIiAhPSAibm8iOyB0aGVuCisgCQkJUENSRV9MSUI9Ii1MJFdJVEhfUENSRS9saWIgLWxwY3JlIgorIAkJCUNQUEZMQUdTPSIkQ1BQRkxBR1MgLUkkV0lUSF9QQ1JFL2luY2x1ZGUiCisgCQllbHNlCistCQkJQUNfUEFUSF9QUk9HKFBDUkVDT05GSUcsIHBjcmUtY29uZmlnKQorLQkJCWlmIHRlc3QgeCIkUENSRUNPTkZJRyIgIT0geDsgdGhlbgorLQkJCQlQQ1JFX0xJQj1gJFBDUkVDT05GSUcgLS1saWJzYAorLQkJCQlDUFBGTEFHUz0iJENQUEZMQUdTIGAkUENSRUNPTkZJRyAtLWNmbGFnc2AiCistCQkJZmkKKysJCQlQS0dfQ0hFQ0tfTU9EVUxFUyhQQ1JFUEtHLCBbbGlicGNyZV0sIFsKKysJCQkJUENSRV9MSUI9JHtQQ1JFUEtHX0xJQlN9CisrCQkJCUNQUEZMQUdTPSIkQ1BQRkxBR1MgJHtQQ1JFUEtHX0NGTEFHU30iCisrCQkJXSwgWworKwkJCQlBQ19NU0dfRVJST1IoW3BjcmUgcGtnY29uZmlnIG5vdCBmb3VuZCwgaW5zdGFsbCB0aGUgcGNyZS1kZXZlbCBwYWNrYWdlIG9yIGJ1aWxkIHdpdGggLS13aXRob3V0LXBjcmVdKQorKwkJCV0pCisgCQlmaQorIAorICAgaWYgdGVzdCB4IiRQQ1JFX0xJQiIgIT0geDsgdGhlbgorLS0gCisyLjkuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpZ2h0dHBkL2xpZ2h0dHBkL3BrZ2NvbmZpZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlnaHR0cGQvbGlnaHR0cGQvcGtnY29uZmlnLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzk1ZjkyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlnaHR0cGQvbGlnaHR0cGQvcGtnY29uZmlnLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotVXNlIHBrZy1jb25maWcgZm9yIHBjcmUgZGVwZW5kZW5jeSBpbnN0ZWFkIG9mIC1jb25maWcgc2NyaXB0LgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotUlAgMjAxNC81LzIyCi0KLQotSW5kZXg6IGxpZ2h0dHBkLTEuNC4zNS9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWdodHRwZC0xLjQuMzUub3JpZy9jb25maWd1cmUuYWMJMjAxNC0wMy0wNiAxNDowODowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBsaWdodHRwZC0xLjQuMzUvY29uZmlndXJlLmFjCTIwMTQtMDUtMTMgMTY6NTg6MzAuNzU4NDcxMTY5ICswMDAwCi1AQCAtMzA5LDE2ICszMDksMTQgQEAKLSBBQ19NU0dfUkVTVUxUKFskV0lUSF9QQ1JFXSkKLSAKLSBpZiB0ZXN0ICIkV0lUSF9QQ1JFIiAhPSAibm8iOyB0aGVuCi0tICBBQ19QQVRIX1BST0coUENSRUNPTkZJRywgcGNyZS1jb25maWcpCi0tCi0tICBpZiB0ZXN0IHgiJFBDUkVDT05GSUciICE9IHg7IHRoZW4KLS0gICAgUENSRV9MSUI9YCRQQ1JFQ09ORklHIC0tbGlic2AKLS0gICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyBgJFBDUkVDT05GSUcgLS1jZmxhZ3NgIgotKyAgUEtHX0NIRUNLX01PRFVMRVMoUENSRVBLRywgW2xpYnBjcmVdLCBbCi0rICAgIFBDUkVfTElCPSR7UENSRVBLR19MSUJTfQotKyAgICBDUFBGTEFHUz0iJENQUEZMQUdTICR7UENSRVBLR19DRkxBR1N9IgotICAgICBBQ19ERUZJTkUoW0hBVkVfTElCUENSRV0sIFsxXSwgW2xpYnBjcmVdKQotICAgICBBQ19ERUZJTkUoW0hBVkVfUENSRV9IXSwgWzFdLCBbcGNyZS5oXSkKLS0gIGVsc2UKLSsgIF0sIFsKLSAgICAgIEFDX01TR19FUlJPUihbcGNyZS1jb25maWcgbm90IGZvdW5kLCBpbnN0YWxsIHRoZSBwY3JlLWRldmVsIHBhY2thZ2Ugb3IgYnVpbGQgd2l0aCAtLXdpdGhvdXQtcGNyZV0pCi0tICBmaQotKyAgXSkKLSBmaQotIAotIEFDX1NVQlNUKFBDUkVfTElCKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZF8xLjQuMzkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpZ2h0dHBkL2xpZ2h0dHBkXzEuNC4zOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzc4YWNjYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpZ2h0dHBkL2xpZ2h0dHBkXzEuNC4zOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLVNVTU1BUlkgPSAiTGlnaHR3ZWlnaHQgaGlnaC1wZXJmb3JtYW5jZSB3ZWIgc2VydmVyIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saWdodHRwZC5uZXQvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vcmVkbWluZS5saWdodHRwZC5uZXQvcHJvamVjdHMvbGlnaHR0cGQvaXNzdWVzIgotCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWU0ZGFjNWM2YWIxNjlhYTIxMmZlYjUwMjg4NTNhNTc5IgotCi1TRUNUSU9OID0gIm5ldCIKLURFUEVORFMgPSAiemxpYiBsaWJwY3JlIgotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgICAgICAgICAgICBsaWdodHRwZC1tb2R1bGUtYWNjZXNzIFwKLSAgICAgICAgICAgICAgIGxpZ2h0dHBkLW1vZHVsZS1hY2Nlc3Nsb2cgXAotICAgICAgICAgICAgICAgbGlnaHR0cGQtbW9kdWxlLWluZGV4ZmlsZSBcCi0gICAgICAgICAgICAgICBsaWdodHRwZC1tb2R1bGUtZGlybGlzdGluZyBcCi0gICAgICAgICAgICAgICBsaWdodHRwZC1tb2R1bGUtc3RhdGljZmlsZSBcCi0iCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLmxpZ2h0dHBkLm5ldC9saWdodHRwZC9yZWxlYXNlcy0xLjQueC9saWdodHRwZC0ke1BWfS50YXIueHogXAotICAgICAgICBmaWxlOi8vaW5kZXguaHRtbC5saWdodHRwZCBcCi0gICAgICAgIGZpbGU6Ly9saWdodHRwZC5jb25mIFwKLSAgICAgICAgZmlsZTovL2xpZ2h0dHBkIFwKLSAgICAgICAgZmlsZTovL2xpZ2h0dHBkLnNlcnZpY2UgXAotICAgICAgICBmaWxlOi8vcGtnY29uZmlnLnBhdGNoIFwKLSAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNjNjNzU2M2JlMWM3YTdhOTgxOWE1MWYwN2YxYWY4YjIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2ViOWExODUzYzNkNmRkNTg1MTY4MmIwNzMzYTcyOWJhNDE1OGQ2YmRmZjgwOTc0ZDVlZjVmMWY2ODg3MzY1YiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIm9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1vcGVuc3NsLCAtLXdpdGhvdXQtb3BlbnNzbCwgb3BlbnNzbCIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgICAgICAgICAgLS13aXRob3V0LWJ6aXAyIFwKLSAgICAgICAgICAgICAtLXdpdGhvdXQtbGRhcCBcCi0gICAgICAgICAgICAgLS13aXRob3V0LWx1YSBcCi0gICAgICAgICAgICAgLS13aXRob3V0LW1lbWNhY2hlIFwKLSAgICAgICAgICAgICAtLXdpdGgtcGNyZSBcCi0gICAgICAgICAgICAgLS13aXRob3V0LXdlYmRhdi1wcm9wcyBcCi0gICAgICAgICAgICAgLS13aXRob3V0LXdlYmRhdi1sb2NrcyBcCi0gICAgICAgICAgICAgLS1kaXNhYmxlLXN0YXRpYyBcCi0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1cGRhdGUtcmMuZCBnZXR0ZXh0IHN5c3RlbWQKLQotSU5JVFNDUklQVF9OQU1FID0gImxpZ2h0dHBkIgotSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMgNzAiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJsaWdodHRwZC5zZXJ2aWNlIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZCAke0R9JHtzeXNjb25mZGlyfS9saWdodHRwZC5kICR7RH0vd3d3L3BhZ2VzL2RhdgotCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2xpZ2h0dHBkICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2xpZ2h0dHBkLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9pbmRleC5odG1sLmxpZ2h0dHBkICR7RH0vd3d3L3BhZ2VzL2luZGV4Lmh0bWwKLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9saWdodHRwZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0Jc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKLQkJLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAotCQktZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKLQkJJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbGlnaHR0cGQuc2VydmljZQotCSNGb3IgRkhTIGNvbXBsaWFuY2UsIGNyZWF0ZSBzeW1ib2xpYyBsaW5rcyB0byAvdmFyL2xvZyBhbmQgL3Zhci90bXAgZm9yIGxvZ3MgYW5kIHRlbXBvcmFyeSBkYXRhCi0JbG4gLXNmICR7bG9jYWxzdGF0ZWRpcn0vbG9nICR7RH0vd3d3L2xvZ3MKLQlsbiAtc2YgJHtsb2NhbHN0YXRlZGlyfS90bXAgJHtEfS93d3cvdmFyCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9IC93d3ciCi0KLUNPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L2xpZ2h0dHBkLmNvbmYiCi0KLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl5saWdodHRwZC1tb2R1bGUtLioiCi0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKLSAgICBsaWdodHRwZF9saWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9JykKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWdodHRwZF9saWJkaXIsICdebW9kXyguKilcLnNvJCcsICdsaWdodHRwZC1tb2R1bGUtJXMnLCAnTGlnaHR0cGQgbW9kdWxlIGZvciAlcycsIGV4dHJhX2RlcGVuZHM9JycpCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpZ2h0dHBkL2xpZ2h0dHBkXzEuNC40MS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlnaHR0cGQvbGlnaHR0cGRfMS40LjQxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhM2YzMjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpZ2h0dHBkL2xpZ2h0dHBkXzEuNC40MS5iYgpAQCAtMCwwICsxLDc5IEBACitTVU1NQVJZID0gIkxpZ2h0d2VpZ2h0IGhpZ2gtcGVyZm9ybWFuY2Ugd2ViIHNlcnZlciIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubGlnaHR0cGQubmV0LyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL3JlZG1pbmUubGlnaHR0cGQubmV0L3Byb2plY3RzL2xpZ2h0dHBkL2lzc3VlcyIKKworTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lNGRhYzVjNmFiMTY5YWEyMTJmZWI1MDI4ODUzYTU3OSIKKworU0VDVElPTiA9ICJuZXQiCitERVBFTkRTID0gInpsaWIgbGlicGNyZSIKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICAgICAgICAgICAgbGlnaHR0cGQtbW9kdWxlLWFjY2VzcyBcCisgICAgICAgICAgICAgICBsaWdodHRwZC1tb2R1bGUtYWNjZXNzbG9nIFwKKyAgICAgICAgICAgICAgIGxpZ2h0dHBkLW1vZHVsZS1pbmRleGZpbGUgXAorICAgICAgICAgICAgICAgbGlnaHR0cGQtbW9kdWxlLWRpcmxpc3RpbmcgXAorICAgICAgICAgICAgICAgbGlnaHR0cGQtbW9kdWxlLXN0YXRpY2ZpbGUgXAorIgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5saWdodHRwZC5uZXQvbGlnaHR0cGQvcmVsZWFzZXMtMS40LngvbGlnaHR0cGQtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgZmlsZTovL2luZGV4Lmh0bWwubGlnaHR0cGQgXAorICAgICAgICBmaWxlOi8vbGlnaHR0cGQuY29uZiBcCisgICAgICAgIGZpbGU6Ly9saWdodHRwZCBcCisgICAgICAgIGZpbGU6Ly9saWdodHRwZC5zZXJ2aWNlIFwKKyAgICAgICAgZmlsZTovLzAwMDEtVXNlLXBrZy1jb25maWctZm9yLXBjcmUtZGVwZW5kZW5jeS1pbnN0ZWFkLW9mLWNvbmZpZy5wYXRjaCBcCisgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjFkZjJlNGRiYzk2NWNmZTZmOTlmMDA4YWMzZGI0ZDhkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRiY2MzODNlZjZkNmRjN2IyODRmNjg4ODJkNzFhMTc4ZTI5ODZjODNjNGU4NWVlYjNjOGYzYjg4MmUzNDZiNmMiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJvcGVuc3NsIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCAnaXB2NicsICcnLCBkKX0gXAorIgorUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtb3BlbnNzbCwgLS13aXRob3V0LW9wZW5zc2wsIG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAgICAgICAgICAtLXdpdGhvdXQtYnppcDIgXAorICAgICAgICAgICAgIC0td2l0aG91dC1sZGFwIFwKKyAgICAgICAgICAgICAtLXdpdGhvdXQtbHVhIFwKKyAgICAgICAgICAgICAtLXdpdGhvdXQtbWVtY2FjaGVkIFwKKyAgICAgICAgICAgICAtLXdpdGgtcGNyZSBcCisgICAgICAgICAgICAgLS13aXRob3V0LXdlYmRhdi1wcm9wcyBcCisgICAgICAgICAgICAgLS13aXRob3V0LXdlYmRhdi1sb2NrcyBcCisgICAgICAgICAgICAgLS1kaXNhYmxlLXN0YXRpYyBcCisiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1cGRhdGUtcmMuZCBnZXR0ZXh0IHN5c3RlbWQKKworSU5JVFNDUklQVF9OQU1FID0gImxpZ2h0dHBkIgorSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMgNzAiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJsaWdodHRwZC5zZXJ2aWNlIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZCAke0R9JHtzeXNjb25mZGlyfS9saWdodHRwZC5kICR7RH0vd3d3L3BhZ2VzL2RhdgorCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2xpZ2h0dHBkICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2xpZ2h0dHBkLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0KKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9pbmRleC5odG1sLmxpZ2h0dHBkICR7RH0vd3d3L3BhZ2VzL2luZGV4Lmh0bWwKKworCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9saWdodHRwZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKKwkJLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAorCQktZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKKwkJJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbGlnaHR0cGQuc2VydmljZQorCSNGb3IgRkhTIGNvbXBsaWFuY2UsIGNyZWF0ZSBzeW1ib2xpYyBsaW5rcyB0byAvdmFyL2xvZyBhbmQgL3Zhci90bXAgZm9yIGxvZ3MgYW5kIHRlbXBvcmFyeSBkYXRhCisJbG4gLXNmICR7bG9jYWxzdGF0ZWRpcn0vbG9nICR7RH0vd3d3L2xvZ3MKKwlsbiAtc2YgJHtsb2NhbHN0YXRlZGlyfS90bXAgJHtEfS93d3cvdmFyCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9IC93d3ciCisKK0NPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L2xpZ2h0dHBkLmNvbmYiCisKK1BBQ0tBR0VTX0RZTkFNSUMgKz0gIl5saWdodHRwZC1tb2R1bGUtLioiCisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKKyAgICBsaWdodHRwZF9saWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9JykKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWdodHRwZF9saWJkaXIsICdebW9kXyguKilcLnNvJCcsICdsaWdodHRwZC1tb2R1bGUtJXMnLCAnTGlnaHR0cGQgbW9kdWxlIGZvciAlcycsIGV4dHJhX2RlcGVuZHM9JycpCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0cy8wMDAxLWZ1bmN0aW9ucy1hdm9pZC1leGl0LTEtd2hpY2gtY2F1c2VzLWluaXQtc2NyaXB0cy10by0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0cy8wMDAxLWZ1bmN0aW9ucy1hdm9pZC1leGl0LTEtd2hpY2gtY2F1c2VzLWluaXQtc2NyaXB0cy10by0ucGF0Y2gKaW5kZXggMDgwOWM5Yi4uMTdjOTAwMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHMvMDAwMS1mdW5jdGlvbnMtYXZvaWQtZXhpdC0xLXdoaWNoLWNhdXNlcy1pbml0LXNjcmlwdHMtdG8tLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzLzAwMDEtZnVuY3Rpb25zLWF2b2lkLWV4aXQtMS13aGljaC1jYXVzZXMtaW5pdC1zY3JpcHRzLXRvLS5wYXRjaApAQCAtMTEsMTMgKzExLDE0IEBACiBpbmRleCA2ODUwMDQ2Li4xMTIyM2Y3IDEwMDY0NAogLS0tIGEvcmMuZC9pbml0LmQvZnVuY3Rpb25zCiArKysgYi9yYy5kL2luaXQuZC9mdW5jdGlvbnMKLUBAIC01OTcsNSArNTk3LDUgQEAgaWYgWyAiJF91c2Vfc3lzdGVtY3RsIiA9ICIxIiBdOyB0aGVuCitAQCAtNTk3LDYgKzU5Nyw2IEBAIGlmIFsgIiRfdXNlX3N5c3RlbWN0bCIgPSAiMSIgXTsgdGhlbgogIAlmaQogIGZpCiAgCiAtc3Ryc3RyICIkKGNhdCAvcHJvYy9jbWRsaW5lKSIgInJjLmRlYnVnIiAmJiBzZXQgLXgKICtzdHJzdHIgIiQoY2F0IC9wcm9jL2NtZGxpbmUpIiAicmMuZGVidWciICYmIHNldCAteCB8fCB0cnVlCi0gCisgcmV0dXJuIDAKKwogLS0gCiAyLjEuMAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0c185LjY0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHNfOS42NC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzI3MzA1MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0c185LjY0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotU1VNTUFSWSA9ICJTeXNWIGluaXQgc2NyaXB0cyB3aGljaCBhcmUgb25seSB1c2VkIGluIGFuIExTQiBpbWFnZSIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1ERVBFTkRTID0gInBvcHQgZ2xpYi0yLjAiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJ1dGlsLWxpbnV4IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lYmY0ZThiNDk3ODBhYjE4N2Q1MWJkMjZhYWEwMjJjNiIKLQotUz0iJHtXT1JLRElSfS9pbml0c2NyaXB0cy0ke1BWfSIKLVNSQ19VUkkgPSAiaHR0cDovL3BrZ3MuZmVkb3JhcHJvamVjdC5vcmcvcmVwby9wa2dzL2luaXRzY3JpcHRzL2luaXRzY3JpcHRzLSR7UFZ9LnRhci5iejIvOWNjZTJhZTEwMDk3NTBlODRiZTM3YzA5YTAyODc1N2UvaW5pdHNjcmlwdHMtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9mdW5jdGlvbnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1mdW5jdGlvbnMtYXZvaWQtZXhpdC0xLXdoaWNoLWNhdXNlcy1pbml0LXNjcmlwdHMtdG8tLnBhdGNoIFwKLSAgICAgICAgICAiIAotCi1TUkNfVVJJW21kNXN1bV0gPSAiOWNjZTJhZTEwMDk3NTBlODRiZTM3YzA5YTAyODc1N2UiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDhiNTljZTgxNTdjZmM1OGJiZDRiMWRmYTU4YWQxMDg3MjQ1NzYxYWUxMWMyMDMzYjY2YWUzODY0ZWE3ZTFjZiIKLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLUFMVEVSTkFUSVZFXyR7UE59ID0gImZ1bmN0aW9ucyIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtmdW5jdGlvbnNdID0gIiR7c3lzY29uZmRpcn0vaW5pdC5kL2Z1bmN0aW9ucyIKLQotIyBTaW5jZSB3ZSBhcmUgb25seSB0YWtpbmcgdGhlIHBhdGNoZWQgdmVyc2lvbiBvZiBmdW5jdGlvbnMsIG5vIG5lZWQgdG8KLSMgY29uZmlndXJlIG9yIGNvbXBpbGUgYW55dGhpbmcgc28gZG8gbm90IGV4ZWN1dGUgdGhlc2UKLWRvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiIAotZG9fY29tcGlsZVtub2V4ZWNdID0gIjEiIAotCi1kb19pbnN0YWxsKCl7Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCi0JaW5zdGFsbCAtbSAwNjQ0ICR7U30vcmMuZC9pbml0LmQvZnVuY3Rpb25zICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9mdW5jdGlvbnMKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzXzkuNjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0c185LjY4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjMDhmZmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0c185LjY4LmJiCkBAIC0wLDAgKzEsMzMgQEAKK1NVTU1BUlkgPSAiU3lzViBpbml0IHNjcmlwdHMgd2hpY2ggYXJlIG9ubHkgdXNlZCBpbiBhbiBMU0IgaW1hZ2UiCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIkdQTHYyIgorREVQRU5EUyA9ICJwb3B0IGdsaWItMi4wIgorCitSREVQRU5EU18ke1BOfSArPSAidXRpbC1saW51eCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWJmNGU4YjQ5NzgwYWIxODdkNTFiZDI2YWFhMDIyYzYiCisKK1M9IiR7V09SS0RJUn0vaW5pdHNjcmlwdHMtJHtQVn0iCitTUkNfVVJJID0gImh0dHA6Ly9wa2dzLmZlZG9yYXByb2plY3Qub3JnL3JlcG8vcGtncy9pbml0c2NyaXB0cy9pbml0c2NyaXB0cy0ke1BWfS50YXIuYnoyLzZhNTFhNWFmMzhlMDE0NDVmNTM5ODllZDA3MjdjM2UxL2luaXRzY3JpcHRzLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vZnVuY3Rpb25zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZnVuY3Rpb25zLWF2b2lkLWV4aXQtMS13aGljaC1jYXVzZXMtaW5pdC1zY3JpcHRzLXRvLS5wYXRjaCBcCisgICAgICAgICAgIiAKKworU1JDX1VSSVttZDVzdW1dID0gIjZhNTFhNWFmMzhlMDE0NDVmNTM5ODllZDA3MjdjM2UxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJhMWM2ZTlkYmFhMzdhNjc2NTE4ZjQ4MDNiNTAxZTEwN2MwNThiYjE0ZWY3YThkYjI0YzUyYjc3ZmJjYmE1MzEiCisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCitBTFRFUk5BVElWRV8ke1BOfSA9ICJmdW5jdGlvbnMiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZnVuY3Rpb25zXSA9ICIke3N5c2NvbmZkaXJ9L2luaXQuZC9mdW5jdGlvbnMiCisKKyMgU2luY2Ugd2UgYXJlIG9ubHkgdGFraW5nIHRoZSBwYXRjaGVkIHZlcnNpb24gb2YgZnVuY3Rpb25zLCBubyBuZWVkIHRvCisjIGNvbmZpZ3VyZSBvciBjb21waWxlIGFueXRoaW5nIHNvIGRvIG5vdCBleGVjdXRlIHRoZXNlCitkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIiAKK2RvX2NvbXBpbGVbbm9leGVjXSA9ICIxIiAKKworZG9faW5zdGFsbCgpeworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLworCWluc3RhbGwgLW0gMDY0NCAke1N9L3JjLmQvaW5pdC5kL2Z1bmN0aW9ucyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvZnVuY3Rpb25zCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2J0ZXN0L0xTQl9UZXN0LnNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdC9MU0JfVGVzdC5zaAppbmRleCBiOTk3MWExLi5jMzFhM2ViIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2J0ZXN0L0xTQl9UZXN0LnNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3QvTFNCX1Rlc3Quc2gKQEAgLTExMyw3ICsxMTMsNyBAQAogI2ZpCiAKIFNFUlZFUjE9IlwKLQlodHRwOi8vJHtTRVJWRVJfTkFNRX0vcHViL2xzYi9iYXNlLyR7TFNCX1JFTEVBU0V9L2JpbmFyeSIKKwlodHRwOi8vJHtTRVJWRVJfTkFNRX0vcHViL2xzYi9iYXNlL3JlbGVhc2VkLWFsbC9iaW5hcnkiCQogU0VSVkVSMj0iXAogCWh0dHA6Ly8ke1NFUlZFUl9OQU1FfS9wdWIvbHNiL3Rlc3Rfc3VpdGVzL3JlbGVhc2VkLWFsbC9iaW5hcnkvcnVudGltZSIKIFNFUlZFUjM9IlwKQEAgLTQyOSw3ICs0MjksNiBAQAogL29wdC9sc2IvdGVzdC9kZXNrdG9wL2ZyZWV0eXBlCiAvb3B0L2xzYi90ZXN0L2Rlc2t0b3AvZ3RrdnRzCiAvb3B0L2xzYi90ZXN0L2Rlc2t0b3AvbGlicG5nCi0vb3B0L2xzYi90ZXN0L2Rlc2t0b3AvcXQzCiAvb3B0L2xzYi90ZXN0L2Rlc2t0b3AveGZ0CiAvb3B0L2xzYi90ZXN0L2Rlc2t0b3AveG1sCiAvb3B0L2xzYi90ZXN0L2Rlc2t0b3AveHJlbmRlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdC9wYWNrYWdlc19saXN0IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdC9wYWNrYWdlc19saXN0CmluZGV4IDI3ZDgzNTIuLjk1OWY5MzEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3QvcGFja2FnZXNfbGlzdAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2J0ZXN0L3BhY2thZ2VzX2xpc3QKQEAgLTEsNCArMSw0IEBACi1MU0JfUkVMRUFTRT0icmVsZWFzZWQtNC4xLjAiCitMU0JfUkVMRUFTRT0icmVsZWFzZWQtNS4wIgogTFNCX0FSQ0g9ImxzYmFyY2giCiAKIEJBU0VfUEFDS0FHRVNfTElTVD0ibHNiLXNldHVwLTQuMS4wLTEubm9hcmNoLnJwbSIKQEAgLTksMzYgKzksMzUgQEAKIAlsc2IteHZmYi0xLjIuMC0yMi50YXJnZXRhcmNoLnJwbSBcCiAJIgogCi1SVU5USU1FX1BBQ0tBR0VTX0xJU1Q9ImxzYi1jbWRjaGstNC4xLjQtNS50YXJnZXRhcmNoLnJwbSBcCi0JbHNiLWxpYmNoay00LjEuNC01LnRhcmdldGFyY2gucnBtIFwKLQlsc2ItcW0tMi4yLTEyLmxzYjQudGFyZ2V0YXJjaC5ycG0gXAotCWxzYi10YXNrLWRpc3QtdGVzdGtpdC00LjEuOS0xLm5vYXJjaC5ycG0gXAotCWxzYi10ZXN0LWNvcmUtNC4xLjE1LTEudGFyZ2V0YXJjaC5ycG0gXAotCWxzYi10ZXN0LWNwcC10MmMtNC4xLjAtMS50YXJnZXRhcmNoLnJwbSBcCi0JbHNiLXRlc3QtZGVza3RvcC00LjEuOS0xLnRhcmdldGFyY2gucnBtIFwKLQlsc2ItdGVzdC1kZXNrdG9wLXQyYy00LjEuMy0zLnRhcmdldGFyY2gucnBtIFwKLQlsc2ItdGVzdC1saWJzdGRjcHAtNC4xLjAtMTgubHNiNC50YXJnZXRhcmNoLnJwbSBcCi0JbHNiLXRlc3Qtb2x2ZXItY29yZS00LjEuNC0xLnRhcmdldGFyY2gucnBtIFwKLQlsc2ItdGVzdC1wZXJsLTQuMS44LTEubm9hcmNoLnJwbSBcCi0JbHNiLXRlc3QtcHJpbnRpbmctNC4xLjItMS50YXJnZXRhcmNoLnJwbSBcCi0JbHNiLXRlc3QtcHl0aG9uLTQuMS41LTEudGFyZ2V0YXJjaC5ycG0gXAotCWxzYi10ZXN0LXF0My1hem92LTQuMS4xLTMudGFyZ2V0YXJjaC5ycG0gXAotCWxzYi10ZXN0LXF0NC1hem92LTQuMS4zLTEudGFyZ2V0YXJjaC5ycG0gXAotCWxzYi10ZXN0LXh0czUtNS4xLjUtNDUubHNiNC50YXJnZXRhcmNoLnJwbSBcCi0JbHNiLXRlc3QtYWxzYS10MmMtNC4xLjAtMS50YXJnZXRhcmNoLnJwbSBcCi0JbHNiLXRlc3QtY29yZS10MmMtNC4xLjItMy50YXJnZXRhcmNoLnJwbSBcCi0JbHNiLXRlc3QteG1sMi1hem92LTQuMS4wLTEudGFyZ2V0YXJjaC5ycG0gXAorUlVOVElNRV9QQUNLQUdFU19MSVNUPSJsc2ItY21kY2hrLTUuMC4zLTEudGFyZ2V0YXJjaC5ycG0gXAorCWxzYi1saWJjaGstNS4wLjMtMS50YXJnZXRhcmNoLnJwbSBcCisJbHNiLXFtLTIuMi0xLmxzYjUudGFyZ2V0YXJjaC5ycG0gXAorCWxzYi10YXNrLWRpc3QtdGVzdGtpdC01LjAuMC0yLm5vYXJjaC5ycG0gXAorCWxzYi10ZXN0LWNvcmUtNS4wLjEtMS50YXJnZXRhcmNoLnJwbSBcCisJbHNiLXRlc3QtY3BwLXQyYy01LjAuMC0xLnRhcmdldGFyY2gucnBtIFwKKwlsc2ItdGVzdC1kZXNrdG9wLTUuMC4wLTEudGFyZ2V0YXJjaC5ycG0gXAorCWxzYi10ZXN0LWRlc2t0b3AtdDJjLTUuMC4wLTEudGFyZ2V0YXJjaC5ycG0gXAorCWxzYi10ZXN0LWxpYnN0ZGNwcC00LjEuMC0yMi5sc2IxLnRhcmdldGFyY2gucnBtIFwKKwlsc2ItdGVzdC1vbHZlci1jb3JlLTUuMC4wLTEudGFyZ2V0YXJjaC5ycG0gXAorCWxzYi10ZXN0LXBlcmwtNS4wLjItMS5ub2FyY2gucnBtIFwKKwlsc2ItdGVzdC1wcmludGluZy01LjAuMS0xLnRhcmdldGFyY2gucnBtIFwKKwlsc2ItdGVzdC1weXRob24tNS4wLjAtMS50YXJnZXRhcmNoLnJwbSBcCisJbHNiLXRlc3QtcXQ0LWF6b3YtNS4wLjAtMS50YXJnZXRhcmNoLnJwbSBcCisJbHNiLXRlc3QteHRzNS01LjEuNS00Ny5sc2I1LnRhcmdldGFyY2gucnBtIFwKKwlsc2ItdGVzdC1hbHNhLXQyYy01LjEuOTEtNC50YXJnZXRhcmNoLnJwbSBcCisJbHNiLXRlc3QtY29yZS10MmMtNS4wLjEtMS50YXJnZXRhcmNoLnJwbSBcCisJbHNiLXRlc3QteG1sMi1hem92LTUuMC4wLTEudGFyZ2V0YXJjaC5ycG0gXAogCSIKIAotQVBQX1BBQ0tBR0VTX0xJU1Q9ImxzYi1weXRob24tMi40LjYtNy5sc2I0LnRhcmdldGFyY2gucnBtIFwKLQlsc2ItYXBhY2hlLTIuMi4xNC04LmxzYjQudGFyZ2V0YXJjaC5ycG0gXAotCWxzYi10Y2wtOC41LjctOC5sc2I0LnRhcmdldGFyY2gucnBtIFwKLQlsc2ItZXhwZWN0LTUuNDMuMC0xMy5sc2I0LnRhcmdldGFyY2gucnBtIFwKLQlsc2ItZ3JvZmYtMS4yMC4xLTcubHNiNC50YXJnZXRhcmNoLnJwbSBcCi0JbHNiLXJhcHRvci0xLjQuMTktNS5sc2I0LnRhcmdldGFyY2gucnBtIFwKLQlsc2IteHBkZi0xLjAxLTE0LmxzYjQudGFyZ2V0YXJjaC5ycG0gXAotCWxzYi1zYW1iYS0zLjQuMy05LmxzYjQudGFyZ2V0YXJjaC5ycG0gXAotCWxzYi1yc3luYy0zLjAuNi02LmxzYjQudGFyZ2V0YXJjaC5ycG0gXAorQVBQX1BBQ0tBR0VTX0xJU1Q9ImxzYi1weXRob24tMi40LjYtMTAubHNiNS50YXJnZXRhcmNoLnJwbSBcCisJbHNiLWFwYWNoZS0yLjIuMTktNS5sc2I1LnRhcmdldGFyY2gucnBtIFwKKwlsc2ItdGNsLTguNS45LTIxLmxzYjUudGFyZ2V0YXJjaC5ycG0gXAorCWxzYi1leHBlY3QtNS40My4wLTIxLmxzYjUudGFyZ2V0YXJjaC5ycG0gXAorCWxzYi1ncm9mZi0xLjIwLjEtOS5sc2I1LnRhcmdldGFyY2gucnBtIFwKKwlsc2ItcmFwdG9yLTEuNC4yMS00LmxzYjUudGFyZ2V0YXJjaC5ycG0gXAorCWxzYi14cGRmLTEuMDEtMTcubHNiNS50YXJnZXRhcmNoLnJwbSBcCisJbHNiLXNhbWJhLTMuNS45LTUubHNiNS50YXJnZXRhcmNoLnJwbSBcCisJbHNiLXJzeW5jLTMuMC44LTMubHNiNS50YXJnZXRhcmNoLnJwbSBcCiAJIgogCiBBUFBfVEVTVEZJTEVTX0xJU1Q9ImV4cGVjdC10ZXN0cy50YXIgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdC9zZXNzaW9uIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdC9zZXNzaW9uCmluZGV4IDg1Y2EyZWYuLjNhYmNjYTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3Qvc2Vzc2lvbgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2J0ZXN0L3Nlc3Npb24KQEAgLTEyNiwxNSArMTI2LDYgQEAKIEFVVE9SRVBMWV9URVNUU1VJVEVfRElSOiAvb3B0L2xzYi90ZXN0L3B5dGhvbgogQVVUT1JFUExZX1JFU1VMVFNfRElSOiAvb3B0L2xzYi90ZXN0L3B5dGhvbi9yZXN1bHRzCiAKLVtxdDMtYXpvdl0KLVJVTjogMQotVkVSU0lPTjogbG9jYWx8KgotCi1bcXQzLWF6b3Z8bG9jYWx8Kl0KLUFVVE9SRVBMWV9URVNUU1VJVEVfRElSOiAvb3B0L2xzYi90ZXN0L3F0My1hem92Ci1BVVRPUkVQTFlfWDExX0ZPTlRfUEFUSDogW2RlZmF1bHRdCi1BVVRPUkVQTFlfUkVTVUxUU19ESVI6IC9vcHQvbHNiL3Rlc3QvcXQzLWF6b3YvcmVzdWx0cwotCiBbcXQ0LWF6b3ZdCiBSVU46IDEKIFZFUlNJT046IGxvY2FsfCoKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNvZi9sc29mXzQuODkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzb2YvbHNvZl80Ljg5LmJiCmluZGV4IGMxMDMzN2IuLmI3MzJjZjAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNvZi9sc29mXzQuODkuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc29mL2xzb2ZfNC44OS5iYgpAQCAtNDcsOCArNDcsNiBAQAogZXhwb3J0IEkgPSAiJHtTVEFHSU5HX0lOQ0RJUn0iCiBleHBvcnQgTCA9ICIke1NUQUdJTkdfSU5DRElSfSIKIAotRVhUUkFfT0VNQUtFID0gIiIKLQogZG9fY29tcGlsZSAoKSB7CiAJb2VfcnVubWFrZSAnQ0M9JHtDQ30nICdDRkdMPSR7TERGTEFHU30gLUwuL2xpYiAtbGxzb2YnICdERUJVRz0nICdJTkNMPSR7Q0ZMQUdTfScKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLXRlc3RjYXNlcy1uZXR3b3JrLW5mc3Y0LWFjbC1hY2wxLmMtU2VjdXJpdHktZml4LW9uLXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS10ZXN0Y2FzZXMtbmV0d29yay1uZnN2NC1hY2wtYWNsMS5jLVNlY3VyaXR5LWZpeC1vbi1zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0NTMyYmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS10ZXN0Y2FzZXMtbmV0d29yay1uZnN2NC1hY2wtYWNsMS5jLVNlY3VyaXR5LWZpeC1vbi1zLnBhdGNoCkBAIC0wLDAgKzEsNDEgQEAKK0Zyb20gNjcyYTU2YmUxNDQyNmVhZTQ0ODY0NjczYzZjMmFmY2EwYWI4OWQ0NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9Bbj1DMz1BRGJhbD0yMExpbT1DMz1CM24/PSA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4KK0RhdGU6IEZyaSwgMTMgTWF5IDIwMTYgMTE6MTE6MjggLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL2FjbDEuYzogU2VjdXJpdHkgZml4IG9uIHN0cmluZworIHByaW50ZgorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitGaXhlczoKKworYWNsMS5jOiBJbiBmdW5jdGlvbiAndGVzdF9hY2xfZGVmYXVsdCc6CithY2wxLmM6MzE3OjI6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMKK1stV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KKyAgcHJpbnRmKGNtZCk7CisKK1tZT0NUTyAjOTU0OF0KKworU2lnbmVkLW9mZi1ieTogQW7DrWJhbCBMaW3Ds24gPGFuaWJhbC5saW1vbkBsaW51eC5pbnRlbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL2FjbDEuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9uZXR3b3JrL25mc3Y0L2FjbC9hY2wxLmMgYi90ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvYWNsMS5jCitpbmRleCBiOGI2N2I0Li43YzdjNTA2IDEwMDY0NAorLS0tIGEvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL2FjbDEuYworKysrIGIvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL2FjbDEuYworQEAgLTMxNCw3ICszMTQsNyBAQCB2b2lkIHRlc3RfYWNsX2RlZmF1bHQoY2hhciAqZGlyLCBhY2xfdCBhY2wpCisgCWNoYXIgKmNtZCA9IG1hbGxvYygyNTYpOworIAorIAlzdHJjcHkoY21kLCAiY2htb2QgNzc3NyAiKTsKKy0JcHJpbnRmKGNtZCk7CisrCXByaW50ZihjbWQsIE5VTEwpOworIAlzdHJjYXQoY21kLCBkaXIpOworIAlzeXN0ZW0oY21kKTsKKyAJYWNsMiA9IGFjbF9nZXRfZmlsZShwYXRoLCBBQ0xfVFlQRV9BQ0NFU1MpOworLS0gCisyLjEuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMi1BZGQta25vYi10by1jb250cm9sLXdoZXRoZXItbnVtYS1zdXBwb3J0LXNob3VsZC1iZS1jLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDItQWRkLWtub2ItdG8tY29udHJvbC13aGV0aGVyLW51bWEtc3VwcG9ydC1zaG91bGQtYmUtYy5wYXRjaAppbmRleCA2ODcyNWRjLi4wNjg0YmVlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMi1BZGQta25vYi10by1jb250cm9sLXdoZXRoZXItbnVtYS1zdXBwb3J0LXNob3VsZC1iZS1jLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAyLUFkZC1rbm9iLXRvLWNvbnRyb2wtd2hldGhlci1udW1hLXN1cHBvcnQtc2hvdWxkLWJlLWMucGF0Y2gKQEAgLTcsNyArNyw3IEBACiBvdGhlcndpc2UgdW5kZXRlcm1pbmlzdGljIGRlcGVuZGVuY3kgd2lsbCBiZSBnZW5lcmF0ZWQKIGR1cmluZyBidWlsZCBkZXBlbmRpbmcgdXBvbmcgbnVtYSBiZWluZyBzdGFnZWQgb3Igbm90CiAKLXNpZ25lZC1vZmYtYnk6IFJveS5MaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFJveS5MaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiAtLS0KICBtNC9sdHAtbnVtYS5tNCB8IDEwICsrKysrKysrKy0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDE2MDEyNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDE2MDEyNi5iYgppbmRleCAwOTdjMTZkLi43NjMxZTBlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHBfMjAxNjAxMjYuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwXzIwMTYwMTI2LmJiCkBAIC02Miw2ICs2Miw3IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDMzLXNobWF0MS1Db3Zlci1HTlUtc3BlY2lmaWMtY29kZS11bmRlci1fX1VTRV9HTlUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAzNC1wZXJpb2RpY19vdXRwdXQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAzNS1maXgtdGVzdF9wcm9jX2tpbGwtaGFuZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3RjYXNlcy1uZXR3b3JrLW5mc3Y0LWFjbC1hY2wxLmMtU2VjdXJpdHktZml4LW9uLXMucGF0Y2ggXAogICAgICAgICAgICAiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCkBAIC05MSw2ICs5MiwxNCBAQAogICAgIGluc3RhbGwgLWQgJHtEfS9vcHQvbHRwLwogICAgIG9lX3J1bm1ha2UgREVTVERJUj0ke0R9IFNLSVBfSURDSEVDSz0xIGluc3RhbGwKIAorICAgICMgZml4dXAgbm90IGRlcGxveSBTVFBmYWlsdXJlX3JlcG9ydC5wbCB0byBhdm9pZCBjb25mdXNpbmcgYWJvdXQgaXQgZmFpbHMgdG8gcnVuCisgICAgIyBhcyBpdCBsYWNrcyBkZXBlbmRlbmN5IG9uIHNvbWUgcGVybCBtb3VkbGUgc3VjaCBhcyBMV1A6OlNpbXBsZQorICAgICMgQW5kIHRoaXMgc2NyaXB0IHByZXZpb3VzbHkgd29ya3MgYXMgYSB0b29sIGZvciBhbmFseXppbmcgZmFpbHVyZXMgZnJvbSBMVFAKKyAgICAjIHJ1bnMgb24gdGhlIE9TREwncyBTY2FsZWFibGUgVGVzdCBQbGF0Zm9ybSAoU1RQKSBhbmQgaXQgbWFpbmx5IGFjY2Vzc2VzCisgICAgIyBodHRwOi8va2hhY2sub3NkbC5vcmcgdG8gcmV0cmlldmUgbHRwIHRlc3QgcmVzdWx0cyBydW4gb24KKyAgICAjIE9TREwncyBTY2FsZWFibGUgVGVzdCBQbGF0Zm9ybSwgYnV0IG5vdyBodHRwOi8va2hhY2sub3NkbC5vcmcgdW5hY2Nlc3NpYmxlCisgICAgcm0gLXJmICR7RH0vb3B0L2x0cC9iaW4vU1RQZmFpbHVyZV9yZXBvcnQucGwKKwogICAgICMgQ29weSBQT1NJWCB0ZXN0IHN1aXRlIGludG8gJHtEfS9vcHQvbHRwL3Rlc3RjYXNlcyBieSBtYW51YWwKICAgICBjcCAtciB0ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUgJHtEfS9vcHQvbHRwL3Rlc3RjYXNlcwogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9tYWlseF8xMi41LTUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L21haWx4XzEyLjUtNS5iYgppbmRleCA0YTMyZDJmLi45ZGQ3MTBhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L21haWx4XzEyLjUtNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L21haWx4XzEyLjUtNS5iYgpAQCAtMTEsNyArMTEsNyBAQAogCiBERVBFTkRTID0gIm9wZW5zc2wiCiAKLVNSQ19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL2gvaGVpcmxvb20tbWFpbHgvaGVpcmxvb20tbWFpbHhfMTIuNS5vcmlnLnRhci5nejtuYW1lPWFyY2hpdmUgXAorU1JDX1VSSSA9ICJodHRwOi8vc25hcHNob3QuZGViaWFuLm9yZy9hcmNoaXZlL2RlYmlhbi8yMDE2MDcyOFQwNDM0NDNaL3Bvb2wvbWFpbi9oL2hlaXJsb29tLW1haWx4L2hlaXJsb29tLW1haWx4XzEyLjUub3JpZy50YXIuZ3o7bmFtZT1hcmNoaXZlIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtcmV1c2Utd2Vhay1zeW1ib2wtb3B0b3B0LXRvLWZpeC1GVEJGUy1vbi1taXBzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDItUGF0Y2hlZC1vdXQtU1NMMi1zdXBwb3J0LXNpbmNlLWl0LWlzLW5vLWxvbmdlci1zdXBwby5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAzLUZpeGVkLUxpbnRpYW4td2FybmluZy13YXJuaW5nLW1hY3JvLU4tbm90LWRlZmluZWQucGF0Y2ggXApAQCAtMjgsNiArMjgsNyBAQAogCiAjIGZvciB0aGlzIHBhY2thZ2Ugd2UncmUgbW9zdGx5IGludGVyZXN0ZWQgaW4gdHJhY2tpbmcgZGViaWFuIHBhdGNoZXMsCiAjIGFuZCBub3QgaW4gdGhlIHVwc3RyZWFtIHZlcnNpb24gd2hlcmUgYWxsIGRldmVsb3BtZW50IGhhcyBlZmZlY3RpdmVseSBzdG9wcGVkCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL2gvaGVpcmxvb20tbWFpbHgvIgogVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+KChcZCtcLiopKyktKChcZCtcLiopKykpXC4oZGlmZnxkZWJpYW5cLnRhcilcLihnenx4eikiCiAKIFMgPSAiJHtXT1JLRElSfS9oZWlybG9vbS1tYWlseC0xMi41IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzQuMDQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1wYWdlcy9tYW4tcGFnZXNfNC4wNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjVkZjBhYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1wYWdlcy9tYW4tcGFnZXNfNC4wNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiTGludXggbWFuLXBhZ2VzIgotREVTQ1JJUFRJT04gPSAiVGhlIExpbnV4IG1hbi1wYWdlcyBwcm9qZWN0IGRvY3VtZW50cyB0aGUgTGludXgga2VybmVsIGFuZCBDIGxpYnJhcnkgaW50ZXJmYWNlcyB0aGF0IGFyZSBlbXBsb3llZCBieSB1c2VyIHByb2dyYW1zIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9saW51eC9kb2NzL21hbi1wYWdlcyIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7bWQ1PThmMmEzZDQzMDU3ZDQ1OGU1MDY2NzE0OTgwNTY3YTYwIgotU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L2RvY3MvJHtCUE59L0FyY2hpdmUvJHtCUH0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTAxY2Q1MmUwZWUyYTlkNzUwOGFlMWFiMTVkNWU4MzUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmZmMDcyNDYyYmFlYThkMWI4ZTQ1Njg3NTkzMjRjNWVkNmM3NjA3MTZmZTgzMGJjYTcxMTI5Y2MwOWUwMDY2OCIKLQotUkRFUEVORFNfJHtQTn0gPSAibWFuIgotCi1kb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgotZG9fY29tcGlsZVtub2V4ZWNdID0gIjEiCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KLX0KLQotIyBPbmx5IGRlbGl2ZXJlcyBtYW4tcGFnZXMgc28gRklMRVNfJHtQTn0gZ2V0cyBldmVyeXRoaW5nCi1GSUxFU18ke1BOfS1kb2MgPSAiIgotRklMRVNfJHtQTn0gPSAiJHttYW5kaXJ9LyoiCi0KLWluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJwYXNzd2QuNSBnZXRzcG5hbS4zIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3Bhc3N3ZC41XSA9ICIke21hbmRpcn0vbWFuNS9wYXNzd2QuNSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtnZXRzcG5hbS4zXSA9ICIke21hbmRpcn0vbWFuMy9nZXRzcG5hbS4zIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzQuMDcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1wYWdlcy9tYW4tcGFnZXNfNC4wNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NmEzZmQ4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzQuMDcuYmIKQEAgLTAsMCArMSwzMSBAQAorU1VNTUFSWSA9ICJMaW51eCBtYW4tcGFnZXMiCitERVNDUklQVElPTiA9ICJUaGUgTGludXggbWFuLXBhZ2VzIHByb2plY3QgZG9jdW1lbnRzIHRoZSBMaW51eCBrZXJuZWwgYW5kIEMgbGlicmFyeSBpbnRlcmZhY2VzIHRoYXQgYXJlIGVtcGxveWVkIGJ5IHVzZXIgcHJvZ3JhbXMiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL2xpbnV4L2RvY3MvbWFuLXBhZ2VzIgorTElDRU5TRSA9ICJHUEx2MisiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTttZDU9OGYyYTNkNDMwNTdkNDU4ZTUwNjY3MTQ5ODA1NjdhNjAiCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvZG9jcy8ke0JQTn0vQXJjaGl2ZS8ke0JQfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwNWJhMWNiMjFlOTlkMDJiZDdiYzFhNTkzNzg5NjVkMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjOTczMzUxMTMxOTMxZjc3MDBmNWU5ZmJmNGVmMzY2YzQzZWE3YzE1MTVkMjgyZThkNWRiOWM3NzU5MGM0YzkzIgorCitSREVQRU5EU18ke1BOfSA9ICJtYW4iCisKK2RvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiCitkb19jb21waWxlW25vZXhlY10gPSAiMSIKKworZG9faW5zdGFsbCgpIHsKKyAgICAgICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfQorfQorCisjIE9ubHkgZGVsaXZlcmVzIG1hbi1wYWdlcyBzbyBGSUxFU18ke1BOfSBnZXRzIGV2ZXJ5dGhpbmcKK0ZJTEVTXyR7UE59LWRvYyA9ICIiCitGSUxFU18ke1BOfSA9ICIke21hbmRpcn0vKiIKKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKK0FMVEVSTkFUSVZFXyR7UE59ID0gInBhc3N3ZC41IGdldHNwbmFtLjMiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcGFzc3dkLjVdID0gIiR7bWFuZGlyfS9tYW41L3Bhc3N3ZC41IgorQUxURVJOQVRJVkVfTElOS19OQU1FW2dldHNwbmFtLjNdID0gIiR7bWFuZGlyfS9tYW4zL2dldHNwbmFtLjMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL21jXzQuOC4xNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvbWNfNC44LjE1LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YzNhMTZhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvbWNfNC44LjE1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotU1VNTUFSWSA9ICJNaWRuaWdodCBDb21tYW5kZXIgaXMgYW4gbmN1cnNlcyBiYXNlZCBmaWxlIG1hbmFnZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1pZG5pZ2h0LWNvbW1hbmRlci5vcmcvIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTI3MGJiYWZlMzYwZTczZjk4NDBiZDc5ODE2MjFmOWMyIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotREVQRU5EUyA9ICJuY3Vyc2VzIGdsaWItMi4wIHV0aWwtbGludXgiCi1SREVQRU5EU18ke1BOfSA9ICJuY3Vyc2VzLXRlcm1pbmZvIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cubWlkbmlnaHQtY29tbWFuZGVyLm9yZy9kb3dubG9hZHMvJHtCUE59LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiZGI0OGNlMjZiYTQyNWE2MWVkYzUxOTMwZTk0MjI3ZmQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjc0ZTNkYTcwNDEwOTc1Y2RlYjI3ZWU5YTY2ZDFkZDgxMjI1MGI2ZDNlZGUzNjRiY2E3MjhkZDVhNDhlNTQ3MSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcKLQotIwotIyBCb3RoIFNhbWJhIChzbWIpIGFuZCBzZnRwIHJlcXVpcmUgcGFja2FnZSBkZWxpdmVyZWQgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZAotIwotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbc21iXSA9ICItLWVuYWJsZS12ZnMtc21iLC0tZGlzYWJsZS12ZnMtc21iLHNhbWJhLCIKLVBBQ0tBR0VDT05GSUdbc2Z0cF0gPSAiLS1lbmFibGUtdmZzLXNmdHAsLS1kaXNhYmxlLXZmcy1zZnRwLGxpYnNzaDIsIgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLXNjcmVlbj1uY3Vyc2VzIC0td2l0aG91dC1ncG0tbW91c2UgLS13aXRob3V0LXgiCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlzZWQgLWkgLWUgJzFzLCMhLipwZXJsLCMhJHtiaW5kaXJ9L2VudiBwZXJsLCcgJHtEfSR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC8qCi0Jc2VkIC1pIC1lICcxcywjIS4qcHl0aG9uLCMhJHtiaW5kaXJ9L2VudiBweXRob24sJyAke0R9JHtsaWJleGVjZGlyfS9tYy9leHRmcy5kLyoKLX0KLQotUEFDS0FHRVMgPSsgIiR7QlBOfS1oZWxwZXJzLXBlcmwgJHtCUE59LWhlbHBlcnMtcHl0aG9uICR7QlBOfS1oZWxwZXJzICR7QlBOfS1maXNoIgotCi1TVU1NQVJZXyR7QlBOfS1oZWxwZXJzLXBlcmwgPSAiTWlkbmlnaHQgQ29tbWFuZGVyIFBlcmwtYmFzZWQgaGVscGVyIHNjcmlwdHMiCi1GSUxFU18ke0JQTn0taGVscGVycy1wZXJsID0gIiR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9hKyAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvYXB0KyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9kZWIgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2RlYmEgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvZGViZCAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvZHBrZysgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvbWFpbGZzICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9wYXRjaGZzIFwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9ycG1zKyAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvdWxpYiBcIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvdXppcCIKLVJERVBFTkRTXyR7QlBOfS1oZWxwZXJzLXBlcmwgPSAicGVybCIKLQotU1VNTUFSWV8ke0JQTn0taGVscGVycy1weXRob24gPSAiTWlkbmlnaHQgQ29tbWFuZGVyIFB5dGhvbi1iYXNlZCBoZWxwZXIgc2NyaXB0cyIKLUZJTEVTXyR7QlBOfS1oZWxwZXJzLXB5dGhvbiA9ICIke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvczMrICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC91YzE1NDEiCi1SREVQRU5EU18ke0JQTn0taGVscGVycy1weXRob24gPSAicHl0aG9uIgotCi1TVU1NQVJZXyR7QlBOfS1oZWxwZXJzID0gIk1pZG5pZ2h0IENvbW1hbmRlciBzaGVsbCBoZWxwZXIgc2NyaXB0cyIKLUZJTEVTXyR7QlBOfS1oZWxwZXJzID0gIiR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC8qICR7bGliZXhlY2Rpcn0vbWMvZXh0LmQvKiIKLQotU1VNTUFSWV8ke0JQTn0tZmlzaCA9ICJNaWRuaWdodCBDb21tYW5kZXIgRmlzaCBzY3JpcHRzIgotRklMRVNfJHtCUE59LWZpc2ggPSAiJHtsaWJleGVjZGlyfS9tYy9maXNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9tY180LjguMTcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL21jXzQuOC4xNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNWM0ZWNlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9tY180LjguMTcuYmIKQEAgLTAsMCArMSw0OSBAQAorU1VNTUFSWSA9ICJNaWRuaWdodCBDb21tYW5kZXIgaXMgYW4gbmN1cnNlcyBiYXNlZCBmaWxlIG1hbmFnZXIiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1pZG5pZ2h0LWNvbW1hbmRlci5vcmcvIgorTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTI3MGJiYWZlMzYwZTczZjk4NDBiZDc5ODE2MjFmOWMyIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorREVQRU5EUyA9ICJuY3Vyc2VzIGdsaWItMi4wIHV0aWwtbGludXgiCitSREVQRU5EU18ke1BOfSA9ICJuY3Vyc2VzLXRlcm1pbmZvIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cubWlkbmlnaHQtY29tbWFuZGVyLm9yZy9kb3dubG9hZHMvJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNmU5YzA3MDY2ZTQwYWYwNmIyNjNhMTNmYWQxN2EwN2YiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjZkMGNiMzdiYWFlZDhlZjkzMGY4YWQyNWE2MzRhZGFkNGYyNjRlYjYxODIwODkzOTIwYWM4N2I5ZGZiNzgzYiIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcKKworIworIyBCb3RoIFNhbWJhIChzbWIpIGFuZCBzZnRwIHJlcXVpcmUgcGFja2FnZSBkZWxpdmVyZWQgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZAorIworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbc21iXSA9ICItLWVuYWJsZS12ZnMtc21iLC0tZGlzYWJsZS12ZnMtc21iLHNhbWJhLCIKK1BBQ0tBR0VDT05GSUdbc2Z0cF0gPSAiLS1lbmFibGUtdmZzLXNmdHAsLS1kaXNhYmxlLXZmcy1zZnRwLGxpYnNzaDIsIgorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLXNjcmVlbj1uY3Vyc2VzIC0td2l0aG91dC1ncG0tbW91c2UgLS13aXRob3V0LXgiCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlzZWQgLWkgLWUgJzFzLCMhLipwZXJsLCMhJHtiaW5kaXJ9L2VudiBwZXJsLCcgJHtEfSR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC8qCisJc2VkIC1pIC1lICcxcywjIS4qcHl0aG9uLCMhJHtiaW5kaXJ9L2VudiBweXRob24sJyAke0R9JHtsaWJleGVjZGlyfS9tYy9leHRmcy5kLyoKK30KKworUEFDS0FHRVMgPSsgIiR7QlBOfS1oZWxwZXJzLXBlcmwgJHtCUE59LWhlbHBlcnMtcHl0aG9uICR7QlBOfS1oZWxwZXJzICR7QlBOfS1maXNoIgorCitTVU1NQVJZXyR7QlBOfS1oZWxwZXJzLXBlcmwgPSAiTWlkbmlnaHQgQ29tbWFuZGVyIFBlcmwtYmFzZWQgaGVscGVyIHNjcmlwdHMiCitGSUxFU18ke0JQTn0taGVscGVycy1wZXJsID0gIiR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9hKyAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvYXB0KyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9kZWIgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2RlYmEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvZGViZCAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvZHBrZysgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvbWFpbGZzICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9wYXRjaGZzIFwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9ycG1zKyAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvdWxpYiBcIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvdXppcCIKK1JERVBFTkRTXyR7QlBOfS1oZWxwZXJzLXBlcmwgPSAicGVybCIKKworU1VNTUFSWV8ke0JQTn0taGVscGVycy1weXRob24gPSAiTWlkbmlnaHQgQ29tbWFuZGVyIFB5dGhvbi1iYXNlZCBoZWxwZXIgc2NyaXB0cyIKK0ZJTEVTXyR7QlBOfS1oZWxwZXJzLXB5dGhvbiA9ICIke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvczMrICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC91YzE1NDEiCitSREVQRU5EU18ke0JQTn0taGVscGVycy1weXRob24gPSAicHl0aG9uIgorCitTVU1NQVJZXyR7QlBOfS1oZWxwZXJzID0gIk1pZG5pZ2h0IENvbW1hbmRlciBzaGVsbCBoZWxwZXIgc2NyaXB0cyIKK0ZJTEVTXyR7QlBOfS1oZWxwZXJzID0gIiR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC8qICR7bGliZXhlY2Rpcn0vbWMvZXh0LmQvKiIKKworU1VNTUFSWV8ke0JQTn0tZmlzaCA9ICJNaWRuaWdodCBDb21tYW5kZXIgRmlzaCBzY3JpcHRzIgorRklMRVNfJHtCUE59LWZpc2ggPSAiJHtsaWJleGVjZGlyfS9tYy9maXNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy8wMDAxLUZpeC1zb21lLXR5cGUtY29tcGFyaXNvbi1wcm9ibGVtcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvMDAwMS1GaXgtc29tZS10eXBlLWNvbXBhcmlzb24tcHJvYmxlbXMucGF0Y2gKaW5kZXggZWU0ODJiNS4uZjgyOTQ2NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy8wMDAxLUZpeC1zb21lLXR5cGUtY29tcGFyaXNvbi1wcm9ibGVtcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzLzAwMDEtRml4LXNvbWUtdHlwZS1jb21wYXJpc29uLXByb2JsZW1zLnBhdGNoCkBAIC0xMSw3ICsxMSw3IEBACiAKIFVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKIAotU2lnbmVkLW9mZi1ieSA6IFhpYW8gTmkgPHhuaUByZWRoYXQuY29tPgorU2lnbmVkLW9mZi1ieTogOiBYaWFvIE5pIDx4bmlAcmVkaGF0LmNvbT4KIFNpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgogLS0tCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvMDAwMS1tZGFkbS5oLVVuZGVmaW5lLWRwcmludGYtYmVmb3JlLXJlZGVmaW5pbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzLzAwMDEtbWRhZG0uaC1VbmRlZmluZS1kcHJpbnRmLWJlZm9yZS1yZWRlZmluaW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjZjgwOTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzLzAwMDEtbWRhZG0uaC1VbmRlZmluZS1kcHJpbnRmLWJlZm9yZS1yZWRlZmluaW5nLnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK0Zyb20gNmQzNjllOGYyMjY1OTQ2MzJjZTQyNjAxMjk1MDlkYWY3MDMwZGUwYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDkgTWF5IDIwMTYgMjI6MDM6NTcgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gbWRhZG0uaDogVW5kZWZpbmUgZHByaW50ZiBiZWZvcmUgcmVkZWZpbmluZworCitkcHJpbnRmIGlzIGFsc28gZGVmaW5lZCBpbiBsaWJjIHNlZQordXNyL2luY2x1ZGUvYml0cy9zdGRpbzIuaCwgdGhpcyBjb21lcyBpbnRvCitwbGF5IGVzcGVjaWFsbHkgd2hlbiBmb3J0aWZ5IHNvdXJjZXMgaXMgZW5hYmxlZAorYW5kIGNvbXBpbGVycyBsaWtlIGNsYW5nIHJlcG9ydHMgdGhlIG92ZXJyaWRlCisKK0luIGZpbGUgaW5jbHVkZWQgZnJvbSBwb2xpY3kuYzoyNToKKy4vbWRhZG0uaDoxNTYyOjk6IGVycm9yOiAnZHByaW50ZicgbWFjcm8gcmVkZWZpbmVkIFstV2Vycm9yLC1XbWFjcm8tcmVkZWZpbmVkXQorICAgICAgICBeCisvbW50L29lL29wZW5lbWJlZGRlZC1jb3JlL2J1aWxkL3RtcC1nbGliYy9zeXNyb290cy9xZW11eDg2L3Vzci9pbmNsdWRlL2JpdHMvc3RkaW8yLmg6MTQ1OjEyOiBub3RlOiBwcmV2aW91cyBkZWZpbml0aW9uIGlzIGhlcmUKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBtZGFkbS5oIHwgMiArKworIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL21kYWRtLmggYi9tZGFkbS5oCitpbmRleCAyMzBlNjBmLi44YzhmNGQxIDEwMDc1NQorLS0tIGEvbWRhZG0uaAorKysrIGIvbWRhZG0uaAorQEAgLTE1NTQsMTEgKzE1NTQsMTMgQEAgc3RhdGljIGlubGluZSBjaGFyICp0b19zdWJhcnJheShzdHJ1Y3QgbWRzdGF0X2VudCAqZW50LCBjaGFyICpjb250YWluZXIpCisgfQorIAorICNpZmRlZiBERUJVRworKyN1bmRlZiBkcHJpbnRmCisgI2RlZmluZSBkcHJpbnRmKGZtdCwgYXJnLi4uKSBcCisgCWZwcmludGYoc3RkZXJyLCAiJXM6ICVzOiAiZm10LCBOYW1lLCBfX2Z1bmNfXywgIyNhcmcpCisgI2RlZmluZSBkcHJpbnRmX2NvbnQoZm10LCBhcmcuLi4pIFwKKyAJZnByaW50ZihzdGRlcnIsIGZtdCwgIyNhcmcpCisgI2Vsc2UKKysjdW5kZWYgZHByaW50ZgorICNkZWZpbmUgZHByaW50ZihmbXQsIGFyZy4uLikgXAorICAgICAgICAgKHsgaWYgKDApIGZwcmludGYoc3RkZXJyLCAiJXM6ICVzOiAiIGZtdCwgTmFtZSwgX19mdW5jX18sICMjYXJnKTsgMDsgfSkKKyAjZGVmaW5lIGRwcmludGZfY29udChmbXQsIGFyZy4uLikgXAorLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzLzAwMDEtcmFpZDZjaGVjay1GaXgtaWYtZWxzZS1pbmRlbnRhdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvMDAwMS1yYWlkNmNoZWNrLUZpeC1pZi1lbHNlLWluZGVudGF0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiMzRiODQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzLzAwMDEtcmFpZDZjaGVjay1GaXgtaWYtZWxzZS1pbmRlbnRhdGlvbi5wYXRjaApAQCAtMCwwICsxLDM3IEBACitGcm9tIDFiMGFhMWRlYmY2ZmJlOTkyM2M5YWFjNjcxZDI4OTRmNzZjMzJmOWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAyMCBBcHIgMjAxNiAxNjozODoxMyArMDAwMAorU3ViamVjdDogW1BBVENIXSByYWlkNmNoZWNrOiBGaXggaWYtZWxzZSBpbmRlbnRhdGlvbgorCitnY2MgNiB3YXJucyBhYm91dCBhbWJpZ3VpdHkgZHVlIHRvIHRoaXMgaW5kZW50YXRpb24KK3wgcmFpZDZjaGVjay5jOiBJbiBmdW5jdGlvbiAnbWFudWFsX3JlcGFpcic6Cit8IHJhaWQ2Y2hlY2suYzoyNjc6NDogZXJyb3I6IHRoaXMgJ2Vsc2UnIGNsYXVzZSBkb2VzIG5vdCBndWFyZC4uLiBbLVdlcnJvcj1taXNsZWFkaW5nLWluZGVudGF0aW9uXQorfCAgICAgZWxzZQorfCAgICAgXn5+fgorfCByYWlkNmNoZWNrLmM6MjY5OjU6IG5vdGU6IC4uLnRoaXMgc3RhdGVtZW50LCBidXQgdGhlIGxhdHRlciBpcyBtaXNsZWFkaW5nbHkgaW5kZW50ZWQgYXMgaWYgaXQgaXMgZ3VhcmRlZCBieSB0aGUgJ2Vsc2UnCit8ICAgICAgcHJpbnRmKCJSZXBhaXJpbmcgRCglZCkgYW5kIFBcbiIsIGZhaWxlZF9kYXRhKTsKK3wgICAgICBefn5+fn4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworIHJhaWQ2Y2hlY2suYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3JhaWQ2Y2hlY2suYyBiL3JhaWQ2Y2hlY2suYworaW5kZXggYWQ3ZmZlNy4uNDA5YjFiNiAxMDA2NDQKKy0tLSBhL3JhaWQ2Y2hlY2suYworKysrIGIvcmFpZDZjaGVjay5jCitAQCAtMjY2LDcgKzI2Niw3IEBAIGludCBtYW51YWxfcmVwYWlyKGludCBjaHVua19zaXplLCBpbnQgc3luZHJvbWVfZGlza3MsCisgCQkJCWZhaWxlZF9kYXRhID0gZmFpbGVkX3Nsb3QyOworIAkJCWVsc2UKKyAJCQkJZmFpbGVkX2RhdGEgPSBmYWlsZWRfc2xvdDE7CistCQkJCXByaW50ZigiUmVwYWlyaW5nIEQoJWQpIGFuZCBQXG4iLCBmYWlsZWRfZGF0YSk7CisrCQkJcHJpbnRmKCJSZXBhaXJpbmcgRCglZCkgYW5kIFBcbiIsIGZhaWxlZF9kYXRhKTsKKyAJCQlyYWlkNl9kYXRhcF9yZWNvdihzeW5kcm9tZV9kaXNrcysyLCBjaHVua19zaXplLAorIAkJCQkJICBmYWlsZWRfZGF0YSwgKHVpbnQ4X3QqKilibG9ja3MsIDEpOworIAkJfSBlbHNlIHsKKy0tIAorMS45LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy9tZGFkbS0zLjIuMl9maXhfZm9yX3gzMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvbWRhZG0tMy4yLjJfZml4X2Zvcl94MzIucGF0Y2gKaW5kZXggNDBhY2MxNC4uODRjMzgyZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy9tZGFkbS0zLjIuMl9maXhfZm9yX3gzMi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzL21kYWRtLTMuMi4yX2ZpeF9mb3JfeDMyLnBhdGNoCkBAIC02LDcgKzYsNyBAQAogQXMgdGhlIGJpdGJha2UgZGVmaW5lZCBDQyBpcyBnb29kLCB0aGVyZSBpcyBubyBuZWVkIHRvIHJlZGZpbmUgQ0MgaW4gdGhlIAogbWFrZSBmaWxlLCBoZW5jZSBtYWtpbmcgdGhlIENDIGRlZmluaXRpb24gaW4gdGhlIE1ha2VmaWxlIGNvbmRpdGlvbmFsLgogCi1TaWduZWQtT2ZmLUJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPiAyMDExLzEyLzA3CitTaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPiAyMDExLzEyLzA3CiAKIEluZGV4OiBtZGFkbS0zLjMvTWFrZWZpbGUKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vbWRhZG1fMy40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9tZGFkbV8zLjQuYmIKaW5kZXggMTQyZGZkZC4uMjYxMDU0ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9tZGFkbV8zLjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9tZGFkbV8zLjQuYmIKQEAgLTE5LDcgKzE5LDkgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LXNvbWUtdHlwZS1jb21wYXJpc29uLXByb2JsZW1zLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LXRoZS1wYXRoLW9mLWNvcm9zeW5jLWFuZC1kbG0taGVhZGVyLWZpbGVzLWNoZWNrLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0JICAiCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXJhaWQ2Y2hlY2stRml4LWlmLWVsc2UtaW5kZW50YXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tZGFkbS5oLVVuZGVmaW5lLWRwcmludGYtYmVmb3JlLXJlZGVmaW5pbmcucGF0Y2ggXAorICAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiMDRiOGIyMWY2Mzc1NDAzNTBmODUxN2M3ZTY4ZDNjNjMiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjdkMGJlNDYyN2QzOGExMmRkY2QxYzFjMzcyMWQ2NDlkNGU4OWUxMDkzOTE0NDk3ZTIyYjU3MjQ1Y2RhODgwOCIKIApAQCAtNDQsOCArNDYsNiBAQAogCWF1dG90b29sc19kb19pbnN0YWxsCiB9CiAKLUZJTEVTXyR7UE59ICs9ICIke2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQvKi5ydWxlcyIKLQogaW5oZXJpdCBwdGVzdAogCiBkb19jb21waWxlX3B0ZXN0KCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tc210cC9tc210cF8xLjYuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbXNtdHAvbXNtdHBfMS42LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkYmQ3OGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tc210cC9tc210cF8xLjYuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLVNVTU1BUlkgPSAibXNtdHAgaXMgYW4gU01UUCBjbGllbnQiCi1ERVNDUklQVElPTiA9ICJBIHNlbmRtYWlsIHJlcGxhY2VtZW50IGZvciB1c2UgaW4gTVRBcyBsaWtlIG11dHQiCi1IT01FUEFHRSA9ICJodHRwOi8vbXNtdHAuc291cmNlZm9yZ2UubmV0LyIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotCi1MSUNFTlNFID0gIkdQTHYzIgotREVQRU5EUyA9ICJ6bGliIGdudXRscyIKLQotI0NPUFlJTkcgb3IgTGljZW5jZQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9tc210cC9maWxlcy9tc210cC8ke1BWfS8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2ZDkzODRjMDk0MDVkYjk0NzZiZWFhMjIzN2M1NjcwNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmOTgyYmUwNjljMDc3MmMzZWU4MzkyNWY1NTJmNWRhYzVmYjMwN2QyZDFjNjgyMDJmOTkyNmJiMTNiNzU3MzU1IgotCi1pbmhlcml0IGdldHRleHQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiArPSAiLS13aXRob3V0LWxpYnNlY3JldCAtLXdpdGhvdXQtbGliZ3Nhc2wgLS13aXRob3V0LWxpYmlkbiIKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAic2VuZG1haWwiCi1BTFRFUk5BVElWRV9UQVJHRVRbc2VuZG1haWxdID0gIiR7YmluZGlyfS9tc210cCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtzZW5kbWFpbF0gPSAiJHtzYmluZGlyfS9zZW5kbWFpbCIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLQotcGtnX3Bvc3RpbnN0XyR7UE59X2xpbnV4c3RkYmFzZSAoKSB7Ci0JIyAvdXNyL2xpYi9zZW5kbWlhbCBpcyByZXF1aXJlZCBieSBMU0IgY29yZSB0ZXN0Ci0JWyAhIC1MICREL3Vzci9saWIvc2VuZG1haWwgXSAmJiBsbiAtc2YgJHtzYmluZGlyfS9zZW5kbWFpbCAkRC91c3IvbGliLwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tc210cC9tc210cF8xLjYuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbXNtdHAvbXNtdHBfMS42LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDBjMzllYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbXNtdHAvbXNtdHBfMS42LjUuYmIKQEAgLTAsMCArMSwzMCBAQAorU1VNTUFSWSA9ICJtc210cCBpcyBhbiBTTVRQIGNsaWVudCIKK0RFU0NSSVBUSU9OID0gIkEgc2VuZG1haWwgcmVwbGFjZW1lbnQgZm9yIHVzZSBpbiBNVEFzIGxpa2UgbXV0dCIKK0hPTUVQQUdFID0gImh0dHA6Ly9tc210cC5zb3VyY2Vmb3JnZS5uZXQvIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCisKK0xJQ0VOU0UgPSAiR1BMdjMiCitERVBFTkRTID0gInpsaWIgZ251dGxzIgorCisjQ09QWUlORyBvciBMaWNlbmNlCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworU1JDX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL21zbXRwL2ZpbGVzL21zbXRwLyR7UFZ9LyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjUwYThjOWJiNzJmODIyMjc3OWRiNmI0YWFlMjk2NWUwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc2YTBkNjA2OTNjN2U2NWQwYzdhMTJmMDFkMzAwODgyZDI4MGIxZTFiZTAyMDJmNTQ3MzBhZTQ0ZDQ0YTUwMDYiCisKK2luaGVyaXQgZ2V0dGV4dCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcyBwa2djb25maWcKKworRVhUUkFfT0VDT05GICs9ICItLXdpdGhvdXQtbGlic2VjcmV0IC0td2l0aG91dC1saWJnc2FzbCAtLXdpdGhvdXQtbGliaWRuIgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJzZW5kbWFpbCIKK0FMVEVSTkFUSVZFX1RBUkdFVFtzZW5kbWFpbF0gPSAiJHtiaW5kaXJ9L21zbXRwIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3NlbmRtYWlsXSA9ICIke3NiaW5kaXJ9L3NlbmRtYWlsIgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCitwa2dfcG9zdGluc3RfJHtQTn1fbGludXhzdGRiYXNlICgpIHsKKwkjIC91c3IvbGliL3NlbmRtaWFsIGlzIHJlcXVpcmVkIGJ5IExTQiBjb3JlIHRlc3QKKwlbICEgLUwgJEQvdXNyL2xpYi9zZW5kbWFpbCBdICYmIGxuIC1zZiAke3NiaW5kaXJ9L3NlbmRtYWlsICREL3Vzci9saWIvCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ldC10b29scy9uZXQtdG9vbHMvMDAwMS1saWItaW5ldDYuYy1JTkVUNl9ycmVzb2x2ZS12YXJpb3VzLWZpeGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXQtdG9vbHMvbmV0LXRvb2xzLzAwMDEtbGliLWluZXQ2LmMtSU5FVDZfcnJlc29sdmUtdmFyaW91cy1maXhlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmU0NWNjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXQtdG9vbHMvbmV0LXRvb2xzLzAwMDEtbGliLWluZXQ2LmMtSU5FVDZfcnJlc29sdmUtdmFyaW91cy1maXhlcy5wYXRjaApAQCAtMCwwICsxLDg3IEBACitGcm9tIDA4YWJmY2Q5MjNlOWYzN2QxOTAyZGIyNjc3MWIxZGM2NzMxZWIyNjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKaXJpIFBvcGVsa2EgPGpwb3BlbGthQHJlZGhhdC5jb20+CitEYXRlOiBGcmksIDI3IFNlcCAyMDEzIDE4OjQwOjA2ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMS8xXSBsaWIvaW5ldDYuYzpJTkVUNl9ycmVzb2x2ZSgpIC0gdmFyaW91cyBmaXhlcworCisxKSBGYWxsLWJhY2sgdG8gbnVtZXJpYyBhZGRyZXNzIGlmIGdldG5hbWVpbmZvIGZhaWxzLgorICAgUmV2ZXJzZSBsb29rdXAgaXMgbm90IG1hbmRhdG9yeSwgdGhlcmVmb3JlIGl0cyBmYWlsCisgICBpcyBub3QgYW4gZXJyb3IuIEp1c3QgcmV0dXJuIG51bWVyaWMgYWRkcmVzcyBpbiB0aGF0IGNhc2UuCisgICBUaGlzIG1ha2VzIG5ldHN0YXQvcm91dGUgc2hvdyBJUHY2IGFkZHJlc3MgaW5zdGVhZCBvZgorICAgW1VOS05PV05dIGluIGNhc2Ugb2YgRE5TIHByb2JsZW1zLgorCisyKSBQYXNzIGxlbmd0aCBvZiAnbmFtZScgYnVmZmVyIGludG8gZnVuY3Rpb24uCisgICAnbmFtZScgaXMgYSBwb2ludGVyIGFuZCB0aGVyZWZvcmUgc2l6ZW9mKG5hbWUpCisgICByZXR1cm5zIHNpemUgb2YgcG9pbnRlciBhbmQgbm90IHNpemUgb2YgdGhlIGJ1ZmZlci4KKyAgIHNlZSBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzE0Mjk4NzEwL2MtcG9pbnRlcnMtYW5kLWFycmF5cy1zaXplb2Ytb3BlcmF0b3IKKyAgIFRoZSBzaXplb2YoKSB1c2FnZSB3YXMgYWRkZWQgd2l0aCBjb21taXQgNjA0Nzg1YWRjLAorICAgc28gSSBjaGVja2VkIGFsbCB0aGUgb3RoZXIgY2hhbmdlcyBpbiB0aGF0IGNvbW1pdAorICAgYW5kIHRoZXkgc2VlbSB0byBiZSBPSy4KKworMykgcmVtb3ZlIHVudXNlZCAncycgdmFyaWFibGUKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFNoYW4gSGFpIDxzaGFuLmhhaUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogSmlhbmNodWFuIFdhbmcgPGppYW5jaHVhbi53YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWIvaW5ldDYuYyB8IDIxICsrKysrKysrKystLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYi9pbmV0Ni5jIGIvbGliL2luZXQ2LmMKK2luZGV4IDlhNDg0YTAuLjJhOWM0NTkgMTAwNjQ0CistLS0gYS9saWIvaW5ldDYuYworKysrIGIvbGliL2luZXQ2LmMKK0BAIC04NCwxMCArODQsOSBAQCBzdGF0aWMgaW50IElORVQ2X3Jlc29sdmUoY2hhciAqbmFtZSwgc3RydWN0IHNvY2thZGRyX2luNiAqc2luNikKKyAjZW5kaWYKKyAKKyAKKy1zdGF0aWMgaW50IElORVQ2X3JyZXNvbHZlKGNoYXIgKm5hbWUsIHN0cnVjdCBzb2NrYWRkcl9pbjYgKnNpbjYsIGludCBudW1lcmljKQorK3N0YXRpYyBpbnQgSU5FVDZfcnJlc29sdmUoY2hhciAqbmFtZSwgc2l6ZV90IG5hbWVsZW4sCisrCQkJICBzdHJ1Y3Qgc29ja2FkZHJfaW42ICpzaW42LCBpbnQgbnVtZXJpYykKKyB7CistICAgIGludCBzOworLQorICAgICAvKiBHcm1wZi4gLUZ2SyAqLworICAgICBpZiAoc2luNi0+c2luNl9mYW1pbHkgIT0gQUZfSU5FVDYpIHsKKyAjaWZkZWYgREVCVUcKK0BAIC05OCwyMSArOTcsMjAgQEAgc3RhdGljIGludCBJTkVUNl9ycmVzb2x2ZShjaGFyICpuYW1lLCBzdHJ1Y3Qgc29ja2FkZHJfaW42ICpzaW42LCBpbnQgbnVtZXJpYykKKyAJcmV0dXJuICgtMSk7CisgICAgIH0KKyAgICAgaWYgKG51bWVyaWMgJiAweDdGRkYpIHsKKy0JaW5ldF9udG9wKCBBRl9JTkVUNiwgJnNpbjYtPnNpbjZfYWRkciwgbmFtZSwgODApOworKwlpbmV0X250b3AoIEFGX0lORVQ2LCAmc2luNi0+c2luNl9hZGRyLCBuYW1lLCBuYW1lbGVuKTsKKyAJcmV0dXJuICgwKTsKKyAgICAgfQorICAgICBpZiAoSU42X0lTX0FERFJfVU5TUEVDSUZJRUQoJnNpbjYtPnNpbjZfYWRkcikpIHsKKyAgICAgICAgIGlmIChudW1lcmljICYgMHg4MDAwKQorLQkgICAgc3RyY3B5KG5hbWUsICJkZWZhdWx0Iik7CisrCSAgICBzYWZlX3N0cm5jcHkobmFtZSwgImRlZmF1bHQiLCBuYW1lbGVuKTsKKyAJZWxzZQorLQkgICAgc3RyY3B5KG5hbWUsICJbOjpdIik7CisrCSAgICBzYWZlX3N0cm5jcHkobmFtZSwgIls6Ol0iLCBuYW1lbGVuKTsKKyAJcmV0dXJuICgwKTsKKyAgICAgfQorIAorLSAgICBpZiAoKHMgPSBnZXRuYW1laW5mbygoc3RydWN0IHNvY2thZGRyICopIHNpbjYsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSwKKy0JCQkgbmFtZSwgMjU1IC8qICEhICovICwgTlVMTCwgMCwgMCkpKSB7CistCWZwdXRzKCJnZXRuYW1laW5mbyBmYWlsZWRcbiIsIHN0ZGVycik7CistCXJldHVybiAtMTsKKysgICAgaWYgKGdldG5hbWVpbmZvKChzdHJ1Y3Qgc29ja2FkZHIgKikgc2luNiwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpLAorKwkJICAgIG5hbWUsIG5hbWVsZW4gLCBOVUxMLCAwLCAwKSkgeworKwlpbmV0X250b3AoIEFGX0lORVQ2LCAmc2luNi0+c2luNl9hZGRyLCBuYW1lLCBuYW1lbGVuKTsKKyAgICAgfQorICAgICByZXR1cm4gKDApOworIH0KK0BAIC0xNDMsNyArMTQxLDggQEAgc3RhdGljIGNoYXIgKklORVQ2X3NwcmludChzdHJ1Y3Qgc29ja2FkZHIgKnNhcCwgaW50IG51bWVyaWMpCisgCisgICAgIGlmIChzYXAtPnNhX2ZhbWlseSA9PSAweEZGRkYgfHwgc2FwLT5zYV9mYW1pbHkgPT0gMCkKKyAJcmV0dXJuIHNhZmVfc3RybmNweShidWZmLCBfKCJbTk9ORSBTRVRdIiksIHNpemVvZihidWZmKSk7CistICAgIGlmIChJTkVUNl9ycmVzb2x2ZShidWZmLCAoc3RydWN0IHNvY2thZGRyX2luNiAqKSBzYXAsIG51bWVyaWMpICE9IDApCisrICAgIGlmIChJTkVUNl9ycmVzb2x2ZShidWZmLCBzaXplb2YoYnVmZiksCisrCQkgICAgICAgKHN0cnVjdCBzb2NrYWRkcl9pbjYgKikgc2FwLCBudW1lcmljKSAhPSAwKQorIAlyZXR1cm4gc2FmZV9zdHJuY3B5KGJ1ZmYsIF8oIltVTktOT1dOXSIpLCBzaXplb2YoYnVmZikpOworICAgICByZXR1cm4gKGZpeF92NF9hZGRyZXNzKGJ1ZmYsICYoKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilzYXApLT5zaW42X2FkZHIpKTsKKyB9CistLSAKKzEuOC41LjIuMjMzLmc5MzJmN2U0CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV0LXRvb2xzL25ldC10b29scy9uZXQtdG9vbHMtZml4LWJ1aWxkaW5nLXdpdGgtbGludXgtNC44LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXQtdG9vbHMvbmV0LXRvb2xzL25ldC10b29scy1maXgtYnVpbGRpbmctd2l0aC1saW51eC00LjgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA1ZWViMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV0LXRvb2xzL25ldC10b29scy9uZXQtdG9vbHMtZml4LWJ1aWxkaW5nLXdpdGgtbGludXgtNC44LnBhdGNoCkBAIC0wLDAgKzEsNTIgQEAKK0Zyb20gNGQ1NjY0NWVhMTQ0YTM0ZjdjZGQzZTNlZGU2NDUyZDgxZmJhZTI1MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJhbmR5IE1hY0xlb2QgPFJhbmR5Lk1hY0xlb2RAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFNhdCwgOCBPY3QgMjAxNiAxNDo0Mjo1NCArMDgwMAorU3ViamVjdDogW1BBVENIXSBpcHR1bm5lbC5jOiBpbmNsdWRlIGxpbnV4L2lwLmggdG8gZml4IGJ1aWxkaW5nIHdpdGggbGludXgtNC44CisKK0ZpeCBhIGJ1aWxkIGVycm9yIHdoZW4gdXNpbmcgdGhlIGxpbnV4LTQuOCBoZWFkZXJzIHRoYXQgcmVzdWx0cyBpbjoKKworSW4gZmlsZSBpbmNsdWRlZCBmcm9tCisuLi4vc3lzcm9vdHMvcWVtdWFybTY0L3Vzci9pbmNsdWRlL2xpbnV4L2lmX3R1bm5lbC5oOjY6MCwKKyAgICAgICAgICAgICAgICAgIGZyb20gaXB0dW5uZWwuYzozOToKKy4uLi9xZW11YXJtNjQvdXNyL2luY2x1ZGUvbGludXgvaXAuaDo4NTo4OiBlcnJvcjogcmVkZWZpbml0aW9uIG9mCisnc3RydWN0IGlwaGRyJworICBzdHJ1Y3QgaXBoZHIgeworICAgICAgICAgXn5+fn4KK0luIGZpbGUgaW5jbHVkZWQgZnJvbSBpcHR1bm5lbC5jOjI5OjA6CisuLi4vcWVtdWFybTY0L3Vzci9pbmNsdWRlL25ldGluZXQvaXAuaDo0NDo4OiBub3RlOiBvcmlnaW5hbGx5IGRlZmluZWQgaGVyZQorICBzdHJ1Y3QgaXBoZHIKKyAgICAgICAgIF5+fn5+CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFsxXQorCitbMV0gaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcC9uZXQtdG9vbHMvbWFpbG1hbi9tZXNzYWdlLzM1NDEzMDIyLworCitTaWduZWQtb2ZmLWJ5OiBSYW5keSBNYWNMZW9kIDxSYW5keS5NYWNMZW9kQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgaXB0dW5uZWwuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2lwdHVubmVsLmMgYi9pcHR1bm5lbC5jCitpbmRleCA0OTQzZDgzLi5hY2ZjYmM3IDEwMDY0NAorLS0tIGEvaXB0dW5uZWwuYworKysrIGIvaXB0dW5uZWwuYworQEAgLTI2LDcgKzI2LDYgQEAKKyAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorLSNpbmNsdWRlIDxuZXRpbmV0L2lwLmg+CisgI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorICNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgKF9fR0xJQkNfXyA+IDIgfHwgKF9fR0xJQkNfXyA9PSAyICYmIF9fR0xJQkNfTUlOT1JfXyA+PSAxKSkKKyAjaW5jbHVkZSA8bmV0L2lmLmg+CitAQCAtMzYsNiArMzUsNyBAQAorICNpbmNsdWRlIDxsaW51eC9pZl9hcnAuaD4KKyAjZW5kaWYKKyAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKysjaW5jbHVkZSA8bGludXgvaXAuaD4KKyAjaW5jbHVkZSA8bGludXgvaWZfdHVubmVsLmg+CisgCisgI2luY2x1ZGUgImNvbmZpZy5oIgorLS0gCisyLjguMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ldC10b29scy9uZXQtdG9vbHNfMS42MC0yNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV0LXRvb2xzL25ldC10b29sc18xLjYwLTI2LmJiCmluZGV4IDYzYjIwNTEuLjQ3YTY4YTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV0LXRvb2xzL25ldC10b29sc18xLjYwLTI2LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV0LXRvb2xzL25ldC10b29sc18xLjYwLTI2LmJiCkBAIC0xNSw2ICsxNSw4IEBACiAgICAgICAgICAgIGZpbGU6Ly9uZXQtdG9vbHMtMS42MC1zY3RwMS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9uZXQtdG9vbHMtMS42MC1zY3RwMi1xdWlldC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9uZXQtdG9vbHMtMS42MC1zY3RwMy1hZGRycy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYi1pbmV0Ni5jLUlORVQ2X3JyZXNvbHZlLXZhcmlvdXMtZml4ZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbmV0LXRvb2xzLWZpeC1idWlsZGluZy13aXRoLWxpbnV4LTQuOC5wYXRjaCBcCiAgICAgICAgICAgIgogCiAjIGZvciB0aGlzIHBhY2thZ2Ugd2UncmUgbW9zdGx5IGludGVyZXN0ZWQgaW4gdHJhY2tpbmcgZGViaWFuIHBhdGNoZXMsCkBAIC05OSw2ICsxMDEsMTAgQEAKIGJhc2VfYmluZGlyX3Byb2dzICA9ICJkbnNkb21haW5uYW1lIGRvbWFpbm5hbWUgaG9zdG5hbWUgbmV0c3RhdCBuaXNkb21haW5uYW1lIHlwZG9tYWlubmFtZSIKIAogQUxURVJOQVRJVkVfJHtQTn0gPSAiJHtiYXNlX3NiaW5kaXJfcHJvZ3N9ICR7YmFzZV9iaW5kaXJfcHJvZ3N9IgorQUxURVJOQVRJVkVfJHtQTn0tZG9jICs9ICJob3N0bmFtZS4xIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2hvc3RuYW1lLjFdID0gIiR7bWFuZGlyfS9tYW4xL2hvc3RuYW1lLjEiCitBTFRFUk5BVElWRV9QUklPUklUWVtob3N0bmFtZS4xXSA9ICIxMCIKKwogcHl0aG9uIF9fYW5vbnltb3VzKCkgewogCWZvciBwcm9nIGluIGQuZ2V0VmFyKCdiYXNlX3NiaW5kaXJfcHJvZ3MnLCBUcnVlKS5zcGxpdCgpOgogCQlkLnNldFZhckZsYWcoJ0FMVEVSTkFUSVZFX0xJTktfTkFNRScsIHByb2csICclcy8lcycgJSAoZC5nZXRWYXIoJ2Jhc2Vfc2JpbmRpcicsIFRydWUpLCBwcm9nKSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV3dC9maWxlcy8wMDAxLWRldGVjdC1nb2xkLWFzLUdOVS1saW5rZXItdG9vLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXd0L2ZpbGVzLzAwMDEtZGV0ZWN0LWdvbGQtYXMtR05VLWxpbmtlci10b28ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTRiM2FmZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV3dC9maWxlcy8wMDAxLWRldGVjdC1nb2xkLWFzLUdOVS1saW5rZXItdG9vLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gNTgyNDViODU5ZmZiY2IxNzgwNTc1YmYxYjBhMDE4ZDU1ZTc0ZTQzNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMjEgU2VwIDIwMTYgMjE6MTQ6NDAgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gZGV0ZWN0IGdvbGQgYXMgR05VIGxpbmtlciB0b28KK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggMDNlOGJkYS4uYzJmY2U1MSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMjgsNyArMjgsNyBAQCBBQ19DSEVDS19TSVpFT0YoW3ZvaWQgKl0pCisgQUNfTVNHX0NIRUNLSU5HKFtmb3IgR05VIGxkXSkKKyBMRD1gJENDIC1wcmludC1wcm9nLW5hbWU9bGQgMj4mNWAKKyAKKy1pZiB0ZXN0IGAkTEQgLXYgMj4mMSB8ICRhY19jdl9wYXRoX0dSRVAgLWMgIkdOVSBsZCJgID0gMDsgdGhlbgorK2lmIHRlc3QgYCRMRCAtdiAyPiYxIHwgJGFjX2N2X3BhdGhfR1JFUCAtYyAiR05VICJgID0gMDsgdGhlbgorICAgIyBOb3QKKyAgIEdOVV9MRD0iIgorICAgQUNfTVNHX1JFU1VMVChbbm9dKQorLS0gCisyLjUuNQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ld3QvZmlsZXMvcmVtb3ZlX3NsYW5nX2luY2x1ZGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ld3QvZmlsZXMvcmVtb3ZlX3NsYW5nX2luY2x1ZGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyNjM0ZWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXd0L2ZpbGVzL3JlbW92ZV9zbGFuZ19pbmNsdWRlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotSW5kZXg6IGdpdC9NYWtlZmlsZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL01ha2VmaWxlLmluCi0rKysgZ2l0L01ha2VmaWxlLmluCi1AQCAtNSw3ICs1LDcgQEAgQ0MgPSBAQ0NACi0gQ1BQID0gQENQUEAKLSBDRkxBR1MgPSBAQ0ZMQUdTQAotIExERkxBR1MgPSBATERGTEFHU0AKLS1DUFBGTEFHUyA9IC1EX0dOVV9TT1VSQ0UgLUkvdXNyL2luY2x1ZGUvc2xhbmcgQENQUEZMQUdTQCAKLStDUFBGTEFHUyA9IC1EX0dOVV9TT1VSQ0UgQENQUEZMQUdTQCAKLSBHTlVfTEQgPSBAR05VX0xEQAotIAotIFZFUlNJT04gPSBAVkVSU0lPTkAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV3dC9saWJuZXd0LXB5dGhvbl8wLjUyLjE4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXd0L2xpYm5ld3QtcHl0aG9uXzAuNTIuMTguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhMDQ3NTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXd0L2xpYm5ld3QtcHl0aG9uXzAuNTIuMTguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZXh0ZW5kZWQvbmV3dC9saWJuZXd0XyR7UFZ9LmJiCi0KLVNVTU1BUlkgLj0gIiAtIHB5dGhvbiIKLURFUEVORFMgPSAibGlibmV3dCBweXRob24iCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uLWNvcmUiCi0KLWluaGVyaXQgcHl0aG9ubmF0aXZlIHB5dGhvbi1kaXIKLQotRVhUUkFfT0VDT05GICs9ICItLXdpdGgtcHl0aG9uIgotRVhUUkFfT0VNQUtFICs9ICJQWVRIT05WRVJTPSR7UFlUSE9OX0RJUn0iCi0KLQotZG9fY29tcGlsZSAoKSB7Ci0JVkVSU0lPTj0iJChzZWQgLW4gJ3MvXlZFUlNJT04gPSAvL3AnIE1ha2VmaWxlKSIKLQlvZV9ydW5tYWtlIF9zbmFjay5zbwotfQotCi1kb19pbnN0YWxsICgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfQotCWluc3RhbGwgLW0gMDc1NSAke1BZVEhPTl9ESVJ9L19zbmFjay5zbyAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vCi0JaW5zdGFsbCAtbSAwNjQ0IHNuYWNrLnB5ICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8KLX0KLQotUEFDS0FHRVNfcmVtb3ZlID0gIndoaXB0YWlsIgotCi1GSUxFU18ke1BOfSA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV3dC9saWJuZXd0LXB5dGhvbl8wLjUyLjE5LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXd0L2xpYm5ld3QtcHl0aG9uXzAuNTIuMTkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjAzNjllZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV3dC9saWJuZXd0LXB5dGhvbl8wLjUyLjE5LmJiCkBAIC0wLDAgKzEsMjggQEAKK3JlcXVpcmUgcmVjaXBlcy1leHRlbmRlZC9uZXd0L2xpYm5ld3RfJHtQVn0uYmIKKworU1VNTUFSWSAuPSAiIC0gcHl0aG9uIgorREVQRU5EUyA9ICJsaWJuZXd0IHB5dGhvbjMiCitSREVQRU5EU18ke1BOfSArPSAicHl0aG9uMy1jb3JlIgorCitpbmhlcml0IHB5dGhvbjNuYXRpdmUgcHl0aG9uMy1kaXIKKworRVhUUkFfT0VDT05GICs9ICItLXdpdGgtcHl0aG9uIgorRVhUUkFfT0VNQUtFICs9ICJQWVRIT05WRVJTPSR7UFlUSE9OX0RJUn0iCisKKworZG9fY29tcGlsZSAoKSB7CisJVkVSU0lPTj0iJChzZWQgLW4gJ3MvXlZFUlNJT04gPSAvL3AnIE1ha2VmaWxlKSIKKwlvZV9ydW5tYWtlIF9zbmFjay5zbworfQorCitkb19pbnN0YWxsICgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfQorCWluc3RhbGwgLW0gMDc1NSAke1BZVEhPTl9ESVJ9L19zbmFjay5zbyAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vCisJaW5zdGFsbCAtbSAwNjQ0IHNuYWNrLnB5ICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8KK30KKworUEFDS0FHRVNfcmVtb3ZlID0gIndoaXB0YWlsIgorCitGSUxFU18ke1BOfSA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV3dC9saWJuZXd0XzAuNTIuMTguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ld3QvbGlibmV3dF8wLjUyLjE4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTI5NjRiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV3dC9saWJuZXd0XzAuNTIuMTguYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi1TVU1NQVJZID0gIkEgbGlicmFyeSBmb3IgdGV4dCBtb2RlIHVzZXIgaW50ZXJmYWNlcyIKLQotREVTQ1JJUFRJT04gPSAiTmV3dCBpcyBhIHByb2dyYW1taW5nIGxpYnJhcnkgZm9yIGNvbG9yIHRleHQgbW9kZSwgd2lkZ2V0IGJhc2VkIHVzZXIgXAotaW50ZXJmYWNlcy4gIE5ld3QgY2FuIGJlIHVzZWQgdG8gYWRkIHN0YWNrZWQgd2luZG93cywgZW50cnkgd2lkZ2V0cywgXAotY2hlY2tib3hlcywgcmFkaW8gYnV0dG9ucywgbGFiZWxzLCBwbGFpbiB0ZXh0IGZpZWxkcywgc2Nyb2xsYmFycywgXAotZXRjLiwgdG8gdGV4dCBtb2RlIHVzZXIgaW50ZXJmYWNlcy4gIFRoaXMgcGFja2FnZSBhbHNvIGNvbnRhaW5zIHRoZSBcCi1zaGFyZWQgbGlicmFyeSBuZWVkZWQgYnkgcHJvZ3JhbXMgYnVpbHQgd2l0aCBuZXd0LCBhcyB3ZWxsIGFzIGEgXAotL3Vzci9iaW4vZGlhbG9nIHJlcGxhY2VtZW50IGNhbGxlZCB3aGlwdGFpbC4gIE5ld3QgaXMgYmFzZWQgb24gdGhlIFwKLXNsYW5nIGxpYnJhcnkuIgotCi1IT01FUEFHRSA9ICJodHRwczovL2ZlZG9yYWhvc3RlZC5vcmcvbmV3dC8iCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIiCi0KLSMgc2xhbmcgbmVlZHMgdG8gYmUgPj0gMi4yCi1ERVBFTkRTID0gInNsYW5nIHBvcHQiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9mZWRvcmFob3N0ZWQub3JnL3JlbGVhc2VzL24vZS9uZXd0L25ld3QtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3JlbW92ZV9zbGFuZ19pbmNsdWRlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeF9TSEFSRURESVIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY3Jvc3NfYXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUuaW4tQWRkLXRpbmZvLWxpYnJhcnktdG8tdGhlLWxpbmtpbmctbGlicmFyaS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9waWUtZmxhZ3MucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNjg1NzIxYmVlMWEzMTg1NzA3MDRiMTlkY2YzMWQyNjgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzcxYjBlNjM0ZWRlNTZhZTZhNmFjZDkxMDcyOGJiNTgzMmFjMTNkZGIwZDFkMjc5MTlkMjQ5OGRhYjcwYzkxZSIKLQotUyA9ICIke1dPUktESVJ9L25ld3QtJHtQVn0iCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGhvdXQtdGNsIC0td2l0aG91dC1weXRob24iCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAotCi1DTEVBTkJST0tFTiA9ICIxIgotCi1leHBvcnQgU1RBR0lOR19JTkNESVIKLWV4cG9ydCBTVEFHSU5HX0xJQkRJUgotZXhwb3J0IENQUEZMQUdTCi0KLWV4cG9ydCBCVUlMRF9TWVMKLWV4cG9ydCBIT1NUX1NZUwotCi1QQUNLQUdFU19wcmVwZW5kID0gIndoaXB0YWlsICIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgc2ggYXV0b2dlbi5zaAotfQotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgIyBNYWtlIHN1cmUgdGhlIHJlY29tcGlsZSBpcyBPSwotICAgIHJtIC1mICR7Qn0vLmRlcGVuZAotfQotCi1GSUxFU193aGlwdGFpbCA9ICIke2JpbmRpcn0vd2hpcHRhaWwiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXd0L2xpYm5ld3RfMC41Mi4xOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV3dC9saWJuZXd0XzAuNTIuMTkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI2Y2UxZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV3dC9saWJuZXd0XzAuNTIuMTkuYmIKQEAgLTAsMCArMSw1NCBAQAorU1VNTUFSWSA9ICJBIGxpYnJhcnkgZm9yIHRleHQgbW9kZSB1c2VyIGludGVyZmFjZXMiCisKK0RFU0NSSVBUSU9OID0gIk5ld3QgaXMgYSBwcm9ncmFtbWluZyBsaWJyYXJ5IGZvciBjb2xvciB0ZXh0IG1vZGUsIHdpZGdldCBiYXNlZCB1c2VyIFwKK2ludGVyZmFjZXMuICBOZXd0IGNhbiBiZSB1c2VkIHRvIGFkZCBzdGFja2VkIHdpbmRvd3MsIGVudHJ5IHdpZGdldHMsIFwKK2NoZWNrYm94ZXMsIHJhZGlvIGJ1dHRvbnMsIGxhYmVscywgcGxhaW4gdGV4dCBmaWVsZHMsIHNjcm9sbGJhcnMsIFwKK2V0Yy4sIHRvIHRleHQgbW9kZSB1c2VyIGludGVyZmFjZXMuICBUaGlzIHBhY2thZ2UgYWxzbyBjb250YWlucyB0aGUgXAorc2hhcmVkIGxpYnJhcnkgbmVlZGVkIGJ5IHByb2dyYW1zIGJ1aWx0IHdpdGggbmV3dCwgYXMgd2VsbCBhcyBhIFwKKy91c3IvYmluL2RpYWxvZyByZXBsYWNlbWVudCBjYWxsZWQgd2hpcHRhaWwuICBOZXd0IGlzIGJhc2VkIG9uIHRoZSBcCitzbGFuZyBsaWJyYXJ5LiIKKworSE9NRVBBR0UgPSAiaHR0cHM6Ly9mZWRvcmFob3N0ZWQub3JnL25ld3QvIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIgorCisjIHNsYW5nIG5lZWRzIHRvIGJlID49IDIuMgorREVQRU5EUyA9ICJzbGFuZyBwb3B0IgorCitTUkNfVVJJID0gImh0dHBzOi8vZmVkb3JhaG9zdGVkLm9yZy9yZWxlYXNlcy9uL2UvbmV3dC9uZXd0LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9maXhfU0hBUkVERElSLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Nyb3NzX2FyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLmluLUFkZC10aW5mby1saWJyYXJ5LXRvLXRoZS1saW5raW5nLWxpYnJhcmkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcGllLWZsYWdzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZGV0ZWN0LWdvbGQtYXMtR05VLWxpbmtlci10b28ucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZTRhYTBmNzk0M2VkZDM5YzUyNDgxYTg3ZjY4ZjQxMmEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDhjMGRiNTZjMjE5OTZhZjZhN2NiYWI5OTQ5MWI3NzRjNmMwOWNlZjkxY2Q5YjAzOTAzYzg0NjM0YmZmMmU4MCIKKworUyA9ICIke1dPUktESVJ9L25ld3QtJHtQVn0iCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGhvdXQtdGNsIC0td2l0aG91dC1weXRob24iCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAorCitDTEVBTkJST0tFTiA9ICIxIgorCitleHBvcnQgQ1BQRkxBR1MKKworUEFDS0FHRVNfcHJlcGVuZCA9ICJ3aGlwdGFpbCAiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgIHNoIGF1dG9nZW4uc2gKK30KKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgICMgTWFrZSBzdXJlIHRoZSByZWNvbXBpbGUgaXMgT0sKKyAgICBybSAtZiAke0J9Ly5kZXBlbmQKK30KKworRklMRVNfd2hpcHRhaWwgPSAiJHtiaW5kaXJ9L3doaXB0YWlsIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1mdWxsLWNtZGxpbmUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtZnVsbC1jbWRsaW5lLmJiCmluZGV4IDFkN2U2MDguLmE2MGE2OGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1mdWxsLWNtZGxpbmUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWZ1bGwtY21kbGluZS5iYgpAQCAtNSw3ICs1LDYgQEAKIFNVTU1BUlkgPSAiU3RhbmRhcmQgZnVsbC1mZWF0dXJlZCBMaW51eCBzeXN0ZW0iCiBERVNDUklQVElPTiA9ICJQYWNrYWdlIGdyb3VwIGJyaW5naW5nIGluIHBhY2thZ2VzIG5lZWRlZCBmb3IgYSBtb3JlIHRyYWRpdGlvbmFsIGZ1bGwtZmVhdHVyZWQgTGludXggc3lzdGVtIgogUFIgPSAicjYiCi1MSUNFTlNFID0gIk1JVCIKIAogaW5oZXJpdCBwYWNrYWdlZ3JvdXAKIApAQCAtMTQ0LDcgKzE0Myw2IEBACiAgICAgY3JvbmllIFwKICAgICBkYnVzIFwKICAgICBkYnVzLWdsaWIgXAotICAgIHB5dGhvbi1kYnVzIFwKICAgICBlbGZ1dGlscyBcCiAgICAgZ3ppcCBcCiAgICAgbGVzcyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtbHNiLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWxzYi5iYgppbmRleCBhMjljM2Q3Li4yOTU2NGUwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtbHNiLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1sc2IuYmIKQEAgLTUsNyArNSw2IEBACiBTVU1NQVJZID0gIkxpbnV4IFN0YW5kYXJkIEJhc2UgKExTQikiCiBERVNDUklQVElPTiA9ICJQYWNrYWdlcyByZXF1aXJlZCB0byBzYXRpc2Z5IHRoZSBMaW51eCBTdGFuZGFyZCBCYXNlIChMU0IpIHNwZWNpZmljYXRpb24iCiBQUiA9ICJyMTAiCi1MSUNFTlNFID0gIk1JVCIKIAogaW5oZXJpdCBwYWNrYWdlZ3JvdXAgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCiAKQEAgLTIwMSwxNiArMjAwLDYgQEAKICAgICBweXRob24tbWlzYyBcCiAiCiAKLWRlZiBnZXRfbGlicXQzKGQpOgotICAgIGlmICdsaW51eHN0ZGJhc2UnIGluIGQuZ2V0VmFyKCdESVNUUk9PVkVSUklERVMnLCBGYWxzZSkgb3IgIiI6Ci0gICAgICAgIGlmICdxdDMnIGluIGQuZ2V0VmFyKCdCQkZJTEVfQ09MTEVDVElPTlMnLCBGYWxzZSkgb3IgIiI6Ci0gICAgICAgICAgICByZXR1cm4gJ2xpYnF0LW10MycKLQotICAgICAgICBiYi53YXJuKCdUaGUgbWV0YS1xdDMgbGF5ZXIgc2hvdWxkIGJlIGFkZGVkLCB0aGlzIGxheWVyIHByb3ZpZGVzIFF0IDMueCcgXAotICAgICAgICAgICAgICAgICdsaWJyYXJpZXMuIEl0cyBpbnRlbmRlZCB1c2UgaXMgZm9yIHBhc3NpbmcgTFNCIHRlc3RzIGFzIFF0MyBpcycgXAotICAgICAgICAgICAgICAgICdhIHJlcXVpcmVtZW50IGZvciBMU0IuJykKLSAgICByZXR1cm4gJycKLQogUVQ0UEtHUyA9ICIgXAogICAgIGxpYnF0Y29yZTQgXAogICAgIGxpYnF0Z3VpNCBcCkBAIC0yMjksOCArMjE4LDggQEAKICAgICAgICAgaWYgJ3F0NCcgaW4gZC5nZXRWYXIoJ0JCRklMRV9DT0xMRUNUSU9OUycsIEZhbHNlKSBvciAiIjoKICAgICAgICAgICAgIHJldHVybiBkLmdldFZhcignUVQ0UEtHUycsIEZhbHNlKQogCi0gICAgICAgIGJiLndhcm4oJ1RoZSBtZXRhLXF0NCBsYXllciBzaG91bGQgYmUgYWRkZWQsIHRoaXMgbGF5ZXIgcHJvdmlkZXMgUXQgNC54JyBcCi0gICAgICAgICAgICAgICAgJ2xpYnJhcmllcy4gSXRzIGludGVuZGVkIHVzZSBpcyBmb3IgcGFzc2luZyBMU0IgdGVzdHMgYXMgUXQ0IGlzJyBcCisgICAgICAgIGJiLndhcm4oJ1RoZSBtZXRhLXF0NCBsYXllciBzaG91bGQgYmUgYWRkZWQsIHRoaXMgbGF5ZXIgcHJvdmlkZXMgUXQgNC54ICcgXAorICAgICAgICAgICAgICAgICdsaWJyYXJpZXMuIEl0cyBpbnRlbmRlZCB1c2UgaXMgZm9yIHBhc3NpbmcgTFNCIHRlc3RzIGFzIFF0NCBpcyAnIFwKICAgICAgICAgICAgICAgICAnYSByZXF1aXJlbWVudCBmb3IgTFNCLicpCiAgICAgcmV0dXJuICcnCiAKQEAgLTI1NSw3ICsyNDQsNiBAQAogICAgIGF0ayBcCiAgICAgbGliYXNvdW5kIFwKICAgICAke0BnZXRfbGlicXQ0KGQpfSBcCi0gICAgJHtAZ2V0X2xpYnF0MyhkKX0gXAogIgogCiBSREVQRU5EU19wYWNrYWdlZ3JvdXAtY29yZS1sc2ItcnVudGltZS1hZGQgPSAiXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtL2NyeXB0X2NvbmZpZ3VyZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9jcnlwdF9jb25maWd1cmUucGF0Y2gKaW5kZXggYmVjODJhNS4uOTE3YThhZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtL2NyeXB0X2NvbmZpZ3VyZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW0vY3J5cHRfY29uZmlndXJlLnBhdGNoCkBAIC0xLDMxICsxLDQwIEBACitGcm9tIGI4NjU3NWFiNGEwZGYwN2RhMTYwMjgzNDU5ZGEyNzBlMWMwMzcyYTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiTWF4aW4gQi4gSm9obiIgPG1heGluLmpvaG5AaW50ZWwuY29tPgorRGF0ZTogVHVlLCAyNCBNYXkgMjAxNiAxNDoxMTowOSArMDMwMAorU3ViamVjdDogW1BBVENIXSBjcnlwdF9jb25maWd1cmUKKwogVGhpcyBwYXRjaCBmaXhlcyBhIGNhc2Ugd2hlcmUgaXQgZmluZCBjcnlwdCBkZWZpbmVkIGluIGxpYmMgKG11c2wpIGJ1dAogbm90IGluIHNwZWNpZmllZCBsaWJyYXJpZXMgdGhlbiBpdCBlbmRzIHVwIGFzc2lnbmluZwotCiBMSUJDUllQVD0iLWwiIHdoaWNoIHRoZW4gZ29lcyBpbnRvIG1ha2VmaWxlIGNhdXNlIGFsbCBzb3J0IG9mIHByb2JsZW1zCiBlLmcuCiAKIGxkOiBjYW5ub3QgZmluZCAtbC1tMzIKIHwgY29sbGVjdDI6IGVycm9yOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCi0KLVRoZSByZWFzb24gaXMgdGhhdCAtbCBhcHBlYXJzIG9uIGNvbW1hbmRsaW5lIHdpdGggb3V0IGFueSBsaWJyYXJ5IGFuZAotY29tcGlsZXIgdHJlYXRzIHRoZSBuZXh0IGFyZ3VtZW50IGFzIGxpYnJhcnkgbmFtZSB3aGF0ZXZlciBpdCBpcy4KLQorVGhlIHJlYXNvbiBpcyB0aGF0IC1sIGFwcGVhcnMgb24gY29tbWFuZGxpbmUgd2l0aAorb3V0IGFueSBsaWJyYXJ5IGFuZCBjb21waWxlciB0cmVhdHMgdGhlIG5leHQgYXJndW1lbnQgYXMgbGlicmFyeSBuYW1lCit3aGF0ZXZlciBpdCBpcy4KIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogCi1JbmRleDogTGludXgtUEFNLTEuMS42L2NvbmZpZ3VyZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIExpbnV4LVBBTS0xLjEuNi5vcmcvY29uZmlndXJlLmFjCi0rKysgTGludXgtUEFNLTEuMS42L2NvbmZpZ3VyZS5hYwotQEAgLTQwMCw3ICs0MDAsOSBAQCBBU19JRihbdGVzdCAieCRhY19jdl9oZWFkZXJfeGNyeXB0X2giID0KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggZGYzOWQwNy4uZTY4ZDg1NiAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNDAxLDcgKzQwMSw3IEBAIEFTX0lGKFt0ZXN0ICJ4JGFjX2N2X2hlYWRlcl94Y3J5cHRfaCIgPSAieHllcyJdLAogICAgW2NyeXB0X2xpYnM9ImNyeXB0Il0pCiAgCiAgQkFDS1VQX0xJQlM9JExJQlMKLS1BQ19TRUFSQ0hfTElCUyhbY3J5cHRdLFskY3J5cHRfbGlic10sIExJQkNSWVBUPSItbCRhY19saWIiLCBMSUJDUllQVD0iIikKLStBQ19TRUFSQ0hfTElCUyhbY3J5cHRdLFskY3J5cHRfbGlic10sCi0rCSAgICAgICBbdGVzdCAiJGFjX2N2X3NlYXJjaF9jcnlwdCIgPSAibm9uZSByZXF1aXJlZCIgfHwKLSsJCUxJQkNSWVBUPSIkYWNfY3Zfc2VhcmNoX2NyeXB0Il0pCistQUNfU0VBUkNIX0xJQlMoW2NyeXB0XSxbJGNyeXB0X2xpYnNdLCBMSUJDUllQVD0iJHthY19saWI6Ky1sJGFjX2xpYn0iLCBMSUJDUllQVD0iIikKKytBQ19TRUFSQ0hfTElCUyhbY3J5cHRdLFskY3J5cHRfbGlic10sIFt0ZXN0ICIkYWNfY3Zfc2VhcmNoX2NyeXB0IiA9ICJub25lIHJlcXVpcmVkIiB8fCBMSUJDUllQVD0iJGFjX2N2X3NlYXJjaF9jcnlwdCJdKQogIEFDX0NIRUNLX0ZVTkNTKGNyeXB0X3IgY3J5cHRfZ2Vuc2FsdF9yKQogIExJQlM9JEJBQ0tVUF9MSUJTCiAgQUNfU1VCU1QoTElCQ1JZUFQpCistLSAKKzIuNC4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9wYW0tbm8taW5uZXRnci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9wYW0tbm8taW5uZXRnci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWU1NTFhYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW0vcGFtLW5vLWlubmV0Z3IucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi1pbm5ldGdyIG1heSBub3QgYmUgdGhlcmUgc28gbWFrZSBzdXJlIHRoYXQgd2hlbiBpbm5ldGdyIGlzIG5vdCBwcmVzZW50Ci10aGVuIHdlIGluZm9ybSBhYm91dCBpdCBhbmQgbm90IHVzZSBpdC4KLQotLUtoZW0KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgotCi1JbmRleDogTGludXgtUEFNLTEuMS4zL21vZHVsZXMvcGFtX2dyb3VwL3BhbV9ncm91cC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gTGludXgtUEFNLTEuMS4zLm9yaWcvbW9kdWxlcy9wYW1fZ3JvdXAvcGFtX2dyb3VwLmMKLSsrKyBMaW51eC1QQU0tMS4xLjMvbW9kdWxlcy9wYW1fZ3JvdXAvcGFtX2dyb3VwLmMKLUBAIC02NTksNyArNjU5LDExIEBAIHN0YXRpYyBpbnQgY2hlY2tfYWNjb3VudChwYW1faGFuZGxlX3QgKnAKLSAJfQotIAkvKiBJZiBidWZmZXIgc3RhcnRzIHdpdGggQCwgd2UgYXJlIHVzaW5nIG5ldGdyb3VwcyAqLwotIAlpZiAoYnVmZmVyWzBdID09ICdAJykKLS0JICBnb29kICY9IGlubmV0Z3IgKCZidWZmZXJbMV0sIE5VTEwsIHVzZXIsIE5VTEwpOwotKyNpZmRlZiBIQVZFX0lOTkVUR1IKLSsgICAgICAgICAgIGdvb2QgJj0gaW5uZXRnciAoJmJ1ZmZlclsxXSwgTlVMTCwgdXNlciwgTlVMTCk7Ci0rI2Vsc2UKLSsgICAgICAgICAgIHBhbV9zeXNsb2cgKHBhbWgsIExPR19FUlIsICJwYW1fZ3JvdXAgZG9lcyBub3QgaGF2ZSBuZXRncm91cCBzdXBwb3J0Iik7Ci0rI2VuZGlmCi0gCS8qIG90aGVyd2lzZSwgaWYgdGhlIGJ1ZmZlciBzdGFydHMgd2l0aCAlLCBpdCdzIGEgVU5JWCBncm91cCAqLwotIAllbHNlIGlmIChidWZmZXJbMF0gPT0gJyUnKQotICAgICAgICAgICBnb29kICY9IHBhbV9tb2R1dGlsX3VzZXJfaW5fZ3JvdXBfbmFtX25hbShwYW1oLCB1c2VyLCAmYnVmZmVyWzFdKTsKLUluZGV4OiBMaW51eC1QQU0tMS4xLjMvbW9kdWxlcy9wYW1fdGltZS9wYW1fdGltZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gTGludXgtUEFNLTEuMS4zLm9yaWcvbW9kdWxlcy9wYW1fdGltZS9wYW1fdGltZS5jCi0rKysgTGludXgtUEFNLTEuMS4zL21vZHVsZXMvcGFtX3RpbWUvcGFtX3RpbWUuYwotQEAgLTU1NSw5ICs1NTUsMTMgQEAgY2hlY2tfYWNjb3VudChwYW1faGFuZGxlX3QgKnBhbWgsIGNvbnN0Ci0gCSAgfQotIAkgIC8qIElmIGJ1ZmZlciBzdGFydHMgd2l0aCBALCB3ZSBhcmUgdXNpbmcgbmV0Z3JvdXBzICovCi0gCSAgaWYgKGJ1ZmZlclswXSA9PSAnQCcpCi0tCSAgICBnb29kICY9IGlubmV0Z3IgKCZidWZmZXJbMV0sIE5VTEwsIHVzZXIsIE5VTEwpOwotKyNpZmRlZiBIQVZFX0lOTkVUR1IKLSsJICAgICAgIGdvb2QgJj0gaW5uZXRnciAoJmJ1ZmZlclsxXSwgTlVMTCwgdXNlciwgTlVMTCk7Ci0rI2Vsc2UKLSsJICAgICAgIHBhbV9zeXNsb2cgKHBhbWgsIExPR19FUlIsICJwYW1fdGltZSBkb2VzIG5vdCBoYXZlIG5ldGdyb3VwIHN1cHBvcnQiKTsKLSsjZW5kaWYKLSAJICBlbHNlCi0tCSAgICBnb29kICY9IGxvZ2ljX2ZpZWxkKHBhbWgsIHVzZXIsIGJ1ZmZlciwgY291bnQsIGlzX3NhbWUpOwotKwkgICAgICAgZ29vZCAmPSBsb2dpY19maWVsZChwYW1oLCB1c2VyLCBidWZmZXIsIGNvdW50LCBpc19zYW1lKTsKLSAJICBEKCgid2l0aCB1c2VyOiAlcyIsIGdvb2QgPyAicGFzc2VzIjoiZmFpbHMiICkpOwotIAotIAkgIC8qIGhlcmUgd2UgZ2V0IHRoZSB0aW1lIGZpZWxkICovCi1JbmRleDogTGludXgtUEFNLTEuMS4zL21vZHVsZXMvcGFtX3N1Y2NlZWRfaWYvcGFtX3N1Y2NlZWRfaWYuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIExpbnV4LVBBTS0xLjEuMy5vcmlnL21vZHVsZXMvcGFtX3N1Y2NlZWRfaWYvcGFtX3N1Y2NlZWRfaWYuYwotKysrIExpbnV4LVBBTS0xLjEuMy9tb2R1bGVzL3BhbV9zdWNjZWVkX2lmL3BhbV9zdWNjZWVkX2lmLmMKLUBAIC0yMzEsMTggKzIzMSwyNyBAQCBldmFsdWF0ZV9ub3Rpbmdyb3VwKHBhbV9oYW5kbGVfdCAqcGFtaCwKLSB9Ci0gLyogUmV0dXJuIFBBTV9TVUNDRVNTIGlmIHRoZSAoaG9zdCx1c2VyKSBpcyBpbiB0aGUgbmV0Z3JvdXAuICovCi0gc3RhdGljIGludAotLWV2YWx1YXRlX2lubmV0Z3IoY29uc3QgY2hhciAqaG9zdCwgY29uc3QgY2hhciAqdXNlciwgY29uc3QgY2hhciAqZ3JvdXApCi0rZXZhbHVhdGVfaW5uZXRncihjb25zdCBwYW1faGFuZGxlX3QqIHBhbWgsIGNvbnN0IGNoYXIgKmhvc3QsIGNvbnN0IGNoYXIgKnVzZXIsIGNvbnN0IGNoYXIgKmdyb3VwKQotIHsKLSsjaWZkZWYgSEFWRV9JTk5FVEdSCi0gCWlmIChpbm5ldGdyKGdyb3VwLCBob3N0LCB1c2VyLCBOVUxMKSA9PSAxKQotIAkJcmV0dXJuIFBBTV9TVUNDRVNTOwotKyNlbHNlCi0rICAgICAgICBwYW1fc3lzbG9nIChwYW1oLCBMT0dfRVJSLCAicGFtX3N1Y2NlZWRfaWYgZG9lcyBub3QgaGF2ZSBuZXRncm91cCBzdXBwb3J0Iik7Ci0rI2VuZGlmCi0rCi0gCXJldHVybiBQQU1fQVVUSF9FUlI7Ci0gfQotIC8qIFJldHVybiBQQU1fU1VDQ0VTUyBpZiB0aGUgKGhvc3QsdXNlcikgaXMgTk9UIGluIHRoZSBuZXRncm91cC4gKi8KLSBzdGF0aWMgaW50Ci0tZXZhbHVhdGVfbm90aW5uZXRncihjb25zdCBjaGFyICpob3N0LCBjb25zdCBjaGFyICp1c2VyLCBjb25zdCBjaGFyICpncm91cCkKLStldmFsdWF0ZV9ub3Rpbm5ldGdyKGNvbnN0IHBhbV9oYW5kbGVfdCogcGFtaCwgY29uc3QgY2hhciAqaG9zdCwgY29uc3QgY2hhciAqdXNlciwgY29uc3QgY2hhciAqZ3JvdXApCi0gewotKyNpZmRlZiBIQVZFX0lOTkVUR1IKLSAJaWYgKGlubmV0Z3IoZ3JvdXAsIGhvc3QsIHVzZXIsIE5VTEwpID09IDApCi0gCQlyZXR1cm4gUEFNX1NVQ0NFU1M7Ci0rI2Vsc2UKLSsJcGFtX3N5c2xvZyAocGFtaCwgTE9HX0VSUiwgInBhbV9zdWNjZWVkX2lmIGRvZXMgbm90IGhhdmUgbmV0Z3JvdXAgc3VwcG9ydCIpOwotKyNlbmRpZgotIAlyZXR1cm4gUEFNX0FVVEhfRVJSOwotIH0KLSAKLUBAIC0zNjEsMTQgKzM3MCwxNCBAQCBldmFsdWF0ZShwYW1faGFuZGxlX3QgKnBhbWgsIGludCBkZWJ1ZywKLSAJCWNvbnN0IHZvaWQgKnJob3N0OwotIAkJaWYgKHBhbV9nZXRfaXRlbShwYW1oLCBQQU1fUkhPU1QsICZyaG9zdCkgIT0gUEFNX1NVQ0NFU1MpCi0gCQkJcmhvc3QgPSBOVUxMOwotLQkJcmV0dXJuIGV2YWx1YXRlX2lubmV0Z3Iocmhvc3QsIHVzZXIsIHJpZ2h0KTsKLSsJCXJldHVybiBldmFsdWF0ZV9pbm5ldGdyKHBhbWgsIHJob3N0LCB1c2VyLCByaWdodCk7Ci0gCX0KLSAJLyogKFJob3N0LCB1c2VyKSBpcyBub3QgaW4gdGhpcyBncm91cC4gKi8KLSAJaWYgKHN0cmNhc2VjbXAocXVhbCwgIm5vdGlubmV0Z3IiKSA9PSAwKSB7Ci0gCQljb25zdCB2b2lkICpyaG9zdDsKLSAJCWlmIChwYW1fZ2V0X2l0ZW0ocGFtaCwgUEFNX1JIT1NULCAmcmhvc3QpICE9IFBBTV9TVUNDRVNTKQotIAkJCXJob3N0ID0gTlVMTDsKLS0JCXJldHVybiBldmFsdWF0ZV9ub3Rpbm5ldGdyKHJob3N0LCB1c2VyLCByaWdodCk7Ci0rCQlyZXR1cm4gZXZhbHVhdGVfbm90aW5uZXRncihwYW1oLCByaG9zdCwgdXNlciwgcmlnaHQpOwotIAl9Ci0gCS8qIEZhaWwgY2xvc2VkLiAqLwotIAlyZXR1cm4gUEFNX1NFUlZJQ0VfRVJSOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtL3BhbS11bml4LW51bGxvay1zZWN1cmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW0vcGFtLXVuaXgtbnVsbG9rLXNlY3VyZS5wYXRjaAppbmRleCAzMjQxZTgyLi5kMmNjNjY4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW0vcGFtLXVuaXgtbnVsbG9rLXNlY3VyZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW0vcGFtLXVuaXgtbnVsbG9rLXNlY3VyZS5wYXRjaApAQCAtMSw5ICsxLDExIEBACi1Gcm9tIDliZGMxOTc0NzQ3OTVmMmQwMDBjMmJjMDRmNThmN2NlZjg4OThmMjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbWFybmF0aCBWYWxsdXJpIDxhbWFybmF0aC52YWxsdXJpQGludGVsLmNvbT4KLURhdGU6IFdlZCwgMTUgSnVsIDIwMTUgMTM6MDc6MjAgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gRGViaWFuIHBhdGNoIHRvIGFkZCBhIG5ldyAnbnVsbG9rX3NlY3VyZScgb3B0aW9uIHRvIHBhbV91bml4LAotIHdoaWNoIGFjY2VwdHMgdXNlcnMgd2l0aCBudWxsIHBhc3N3b3JkcyBvbmx5IHdoZW4gdGhlIGFwcGxpY2FudCBpcyBjb25uZWN0ZWQKLSBmcm9tIGEgdHR5IGxpc3RlZCBpbiAvZXRjL3NlY3VyZXR0eS4KK0Zyb20gYjY1NDViODNmOTRjNWZiN2FlYzE0NzhiOGQ0NThhMTM5M2Y0NzljOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ICJNYXhpbiBCLiBKb2huIiA8bWF4aW4uam9obkBpbnRlbC5jb20+CitEYXRlOiBXZWQsIDI1IE1heSAyMDE2IDE0OjEyOjI1ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIHBhbV91bml4OiBzdXBwb3J0ICdudWxsb2tfc2VjdXJlJyBvcHRpb24KKworRGViaWFuIHBhdGNoIHRvIGFkZCBhIG5ldyAnbnVsbG9rX3NlY3VyZScgb3B0aW9uIHRvIHBhbV91bml4LAord2hpY2ggYWNjZXB0cyB1c2VycyB3aXRoIG51bGwgcGFzc3dvcmRzIG9ubHkgd2hlbiB0aGUgYXBwbGljYW50IGlzCitjb25uZWN0ZWQgZnJvbSBhIHR0eSBsaXN0ZWQgaW4gL2V0Yy9zZWN1cmV0dHkuCiAKIEF1dGhvcnM6IFNhbSBIYXJ0bWFuIDxoYXJ0bWFuc0BkZWJpYW4ub3JnPiwKICAgICAgICAgIFN0ZXZlIExhbmdhc2VrIDx2b3Jsb25AZGViaWFuLm9yZz4KQEAgLTExLDc4ICsxMywzMSBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIFNpZ25lZC1vZmYtYnk6IE1pbmcgTGl1IDxtaW5nLmxpdUB3aW5kcml2ZXIuY29tPgotCi12MjoKLQktIEZvcndhcmQgcG9ydGVkIGZyb20gdjEuMS42IHRvIHYxLjIuMQotCiBTaWduZWQtb2ZmLWJ5OiBBbWFybmF0aCBWYWxsdXJpIDxhbWFybmF0aC52YWxsdXJpQGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgogLS0tCiAgbW9kdWxlcy9wYW1fdW5peC9NYWtlZmlsZS5hbSAgICB8ICAzICsrLQotIG1vZHVsZXMvcGFtX3VuaXgvUkVBRE1FICAgICAgICAgfCAxMSArKysrKysrKysrLQotIG1vZHVsZXMvcGFtX3VuaXgvcGFtX3VuaXguOCAgICAgfCAgOSArKysrKysrKy0KICBtb2R1bGVzL3BhbV91bml4L3BhbV91bml4LjgueG1sIHwgMTkgKysrKysrKysrKysrKysrKysrLQogIG1vZHVsZXMvcGFtX3VuaXgvc3VwcG9ydC5jICAgICAgfCA0MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiAgbW9kdWxlcy9wYW1fdW5peC9zdXBwb3J0LmggICAgICB8ICA4ICsrKysrKy0tCi0gNiBmaWxlcyBjaGFuZ2VkLCA3OSBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKKyA0IGZpbGVzIGNoYW5nZWQsIDYxIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9tb2R1bGVzL3BhbV91bml4L01ha2VmaWxlLmFtIGIvbW9kdWxlcy9wYW1fdW5peC9NYWtlZmlsZS5hbQotaW5kZXggNTZlZDU5MS4uOWEzNzJhYyAxMDA2NDQKK2luZGV4IDU2ZGYxNzguLjJiYmE0NjAgMTAwNjQ0CiAtLS0gYS9tb2R1bGVzL3BhbV91bml4L01ha2VmaWxlLmFtCiArKysgYi9tb2R1bGVzL3BhbV91bml4L01ha2VmaWxlLmFtCiBAQCAtMzAsNyArMzAsOCBAQCBpZiBIQVZFX1ZFUlNJT05JTkcKICAgIHBhbV91bml4X2xhX0xERkxBR1MgKz0gLVdsLC0tdmVyc2lvbi1zY3JpcHQ9JChzcmNkaXIpLy4uL21vZHVsZXMubWFwCiAgZW5kaWYKICBwYW1fdW5peF9sYV9MSUJBREQgPSAkKHRvcF9idWlsZGRpcikvbGlicGFtL2xpYnBhbS5sYSBcCi0tCUBMSUJDUllQVEAgQExJQlNFTElOVVhAICQoTklTX0xJQlMpCi0rCUBMSUJDUllQVEAgQExJQlNFTElOVVhAICQoTklTX0xJQlMpIFwKKy0JQExJQkNSWVBUQCBATElCU0VMSU5VWEAgQFRJUlBDX0xJQlNAIEBOU0xfTElCU0AKKysJQExJQkNSWVBUQCBATElCU0VMSU5VWEAgQFRJUlBDX0xJQlNAIEBOU0xfTElCU0AgXAogKwkuLi9wYW1fc2VjdXJldHR5L3R0eV9zZWN1cmUubG8KICAKICBzZWN1cmVsaWJfTFRMSUJSQVJJRVMgPSBwYW1fdW5peC5sYQogIAotZGlmZiAtLWdpdCBhL21vZHVsZXMvcGFtX3VuaXgvUkVBRE1FIGIvbW9kdWxlcy9wYW1fdW5peC9SRUFETUUKLWluZGV4IDM5MzVkYmEuLjc4ODBkOTEgMTAwNjQ0Ci0tLS0gYS9tb2R1bGVzL3BhbV91bml4L1JFQURNRQotKysrIGIvbW9kdWxlcy9wYW1fdW5peC9SRUFETUUKLUBAIC02Nyw3ICs2NywxNiBAQCBudWxsb2sKLSAKLSAgICAgVGhlIGRlZmF1bHQgYWN0aW9uIG9mIHRoaXMgbW9kdWxlIGlzIHRvIG5vdCBwZXJtaXQgdGhlIHVzZXIgYWNjZXNzIHRvIGEKLSAgICAgc2VydmljZSBpZiB0aGVpciBvZmZpY2lhbCBwYXNzd29yZCBpcyBibGFuay4gVGhlIG51bGxvayBhcmd1bWVudCBvdmVycmlkZXMKLS0gICAgdGhpcyBkZWZhdWx0LgotKyAgICB0aGlzIGRlZmF1bHQgYW5kIGFsbG93cyBhbnkgdXNlciB3aXRoIGEgYmxhbmsgcGFzc3dvcmQgdG8gYWNjZXNzIHRoZQotKyAgICBzZXJ2aWNlLgotKwotK251bGxva19zZWN1cmUKLSsKLSsgICAgVGhlIGRlZmF1bHQgYWN0aW9uIG9mIHRoaXMgbW9kdWxlIGlzIHRvIG5vdCBwZXJtaXQgdGhlIHVzZXIgYWNjZXNzIHRvIGEKLSsgICAgc2VydmljZSBpZiB0aGVpciBvZmZpY2lhbCBwYXNzd29yZCBpcyBibGFuay4gVGhlIG51bGxva19zZWN1cmUgYXJndW1lbnQKLSsgICAgb3ZlcnJpZGVzIHRoaXMgZGVmYXVsdCBhbmQgYWxsb3dzIGFueSB1c2VyIHdpdGggYSBibGFuayBwYXNzd29yZCB0byBhY2Nlc3MKLSsgICAgdGhlIHNlcnZpY2UgYXMgbG9uZyBhcyB0aGUgdmFsdWUgb2YgUEFNX1RUWSBpcyBzZXQgdG8gb25lIG9mIHRoZSB2YWx1ZXMKLSsgICAgZm91bmQgaW4gL2V0Yy9zZWN1cmV0dHkuCi0gCi0gdHJ5X2ZpcnN0X3Bhc3MKLSAKLWRpZmYgLS1naXQgYS9tb2R1bGVzL3BhbV91bml4L3BhbV91bml4LjggYi9tb2R1bGVzL3BhbV91bml4L3BhbV91bml4LjgKLWluZGV4IDMzOTE3OGIuLmE0YmQ5MDYgMTAwNjQ0Ci0tLS0gYS9tb2R1bGVzL3BhbV91bml4L3BhbV91bml4LjgKLSsrKyBiL21vZHVsZXMvcGFtX3VuaXgvcGFtX3VuaXguOAotQEAgLTkyLDcgKzkyLDE0IEBAIFR1cm5zIG9mZiBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzIG5hbWVseSBtZXNzYWdlcyBhYm91dCBzZXNzaW9uIG9wZW4gYW5kIGNsb3NlIHZpCi0gLlJTIDQKLSBUaGUgZGVmYXVsdCBhY3Rpb24gb2YgdGhpcyBtb2R1bGUgaXMgdG8gbm90IHBlcm1pdCB0aGUgdXNlciBhY2Nlc3MgdG8gYSBzZXJ2aWNlIGlmIHRoZWlyIG9mZmljaWFsIHBhc3N3b3JkIGlzIGJsYW5rXCYuIFRoZQotIFxmQm51bGxva1xmUgotLWFyZ3VtZW50IG92ZXJyaWRlcyB0aGlzIGRlZmF1bHRcJi4KLSthcmd1bWVudCBvdmVycmlkZXMgdGhpcyBkZWZhdWx0IGFuZCBhbGxvd3MgYW55IHVzZXIgd2l0aCBhIGJsYW5rIHBhc3N3b3JkIHRvIGFjY2VzcyB0aGUgc2VydmljZVwmLgotKy5SRQotKy5QUAotK1xmQm51bGxva19zZWN1cmVcZlIKLSsuUlMgNAotK1RoZSBkZWZhdWx0IGFjdGlvbiBvZiB0aGlzIG1vZHVsZSBpcyB0byBub3QgcGVybWl0IHRoZSB1c2VyIGFjY2VzcyB0byBhIHNlcnZpY2UgaWYgdGhlaXIgb2ZmaWNpYWwgcGFzc3dvcmQgaXMgYmxhbmtcJi4gVGhlCi0rXGZCbnVsbG9rX3NlY3VyZVxmUgotK2FyZ3VtZW50IG92ZXJyaWRlcyB0aGlzIGRlZmF1bHQgYW5kIGFsbG93cyBhbnkgdXNlciB3aXRoIGEgYmxhbmsgcGFzc3dvcmQgdG8gYWNjZXNzIHRoZSBzZXJ2aWNlIGFzIGxvbmcgYXMgdGhlIHZhbHVlIG9mIFBBTV9UVFkgaXMgc2V0IHRvIG9uZSBvZiB0aGUgdmFsdWVzIGZvdW5kIGluIC9ldGMvc2VjdXJldHR5XCYuCi0gLlJFCi0gLlBQCi0gXGZCdHJ5X2ZpcnN0X3Bhc3NcZlIKIGRpZmYgLS1naXQgYS9tb2R1bGVzL3BhbV91bml4L3BhbV91bml4LjgueG1sIGIvbW9kdWxlcy9wYW1fdW5peC9wYW1fdW5peC44LnhtbAotaW5kZXggYThiNjRiYi4uMWNlZDZmNCAxMDA2NDQKK2luZGV4IDFiMzE4ZjEuLmJlMDMzMGUgMTAwNjQ0CiAtLS0gYS9tb2R1bGVzL3BhbV91bml4L3BhbV91bml4LjgueG1sCiArKysgYi9tb2R1bGVzL3BhbV91bml4L3BhbV91bml4LjgueG1sCiBAQCAtMTU5LDcgKzE1OSwyNCBAQApAQCAtMTEyLDEwICs2NywxMCBAQAogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIGRpZmYgLS1naXQgYS9tb2R1bGVzL3BhbV91bml4L3N1cHBvcnQuYyBiL21vZHVsZXMvcGFtX3VuaXgvc3VwcG9ydC5jCi1pbmRleCBhYmNjZDgyLi4yMzYxOTU3IDEwMDY0NAoraW5kZXggZmM4NTk1ZS4uMjllMzM0MSAxMDA2NDQKIC0tLSBhL21vZHVsZXMvcGFtX3VuaXgvc3VwcG9ydC5jCiArKysgYi9tb2R1bGVzL3BhbV91bml4L3N1cHBvcnQuYwotQEAgLTE4OSwxMyArMTg5LDIyIEBAIGludCBfc2V0X2N0cmwocGFtX2hhbmRsZV90ICpwYW1oLCBpbnQgZmxhZ3MsIGludCAqcmVtZW1iZXIsIGludCAqcm91bmRzLAorQEAgLTE4MywxMyArMTgzLDIyIEBAIGludCBfc2V0X2N0cmwocGFtX2hhbmRsZV90ICpwYW1oLCBpbnQgZmxhZ3MsIGludCAqcmVtZW1iZXIsIGludCAqcm91bmRzLAogIAkvKiBub3cgcGFyc2UgdGhlIGFyZ3VtZW50cyB0byB0aGlzIG1vZHVsZSAqLwogIAogIAlmb3IgKDsgYXJnYy0tID4gMDsgKythcmd2KSB7CkBAIC0xNDEsNyArOTYsNyBAQAogIAkJCX0KICAJCX0KICAKLUBAIC01NjYsNiArNTc1LDcgQEAgc3RhdGljIGludCBfdW5peF9ydW5faGVscGVyX2JpbmFyeShwYW1faGFuZGxlX3QgKnBhbWgsIGNvbnN0IGNoYXIgKnBhc3N3ZCwKK0BAIC01NjAsNiArNTY5LDcgQEAgc3RhdGljIGludCBfdW5peF9ydW5faGVscGVyX2JpbmFyeShwYW1faGFuZGxlX3QgKnBhbWgsIGNvbnN0IGNoYXIgKnBhc3N3ZCwKICAgICAgaWYgKGNoaWxkID09IDApIHsKICAJc3RhdGljIGNoYXIgKmVudnBbXSA9IHsgTlVMTCB9OwogIAljb25zdCBjaGFyICphcmdzW10gPSB7IE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwgfTsKQEAgLTE0OSw3ICsxMDQsNyBAQAogIAogIAkvKiBYWFggLSBzaG91bGQgcmVhbGx5IHRpZHkgdXAgUEFNIGhlcmUgdG9vICovCiAgCi1AQCAtNTkzLDcgKzYwMywxNiBAQCBzdGF0aWMgaW50IF91bml4X3J1bl9oZWxwZXJfYmluYXJ5KHBhbV9oYW5kbGVfdCAqcGFtaCwgY29uc3QgY2hhciAqcGFzc3dkLAorQEAgLTU4Nyw3ICs1OTcsMTYgQEAgc3RhdGljIGludCBfdW5peF9ydW5faGVscGVyX2JpbmFyeShwYW1faGFuZGxlX3QgKnBhbWgsIGNvbnN0IGNoYXIgKnBhc3N3ZCwKICAJLyogZXhlYyBiaW5hcnkgaGVscGVyICovCiAgCWFyZ3NbMF0gPSBDSEtQV0RfSEVMUEVSOwogIAlhcmdzWzFdID0gdXNlcjsKQEAgLTE2Nyw3ICsxMjIsNyBAQAogIAkgIGFyZ3NbMl09Im51bGxvayI7CiAgCX0gZWxzZSB7CiAgCSAgYXJnc1syXT0ibm9udWxsIjsKLUBAIC02NzgsNiArNjk3LDE3IEBAIF91bml4X2JsYW5rcGFzc3dkIChwYW1faGFuZGxlX3QgKnBhbWgsIHVuc2lnbmVkIGludCBjdHJsLCBjb25zdCBjaGFyICpuYW1lKQorQEAgLTY3Miw2ICs2OTEsMTcgQEAgX3VuaXhfYmxhbmtwYXNzd2QgKHBhbV9oYW5kbGVfdCAqcGFtaCwgdW5zaWduZWQgaW50IGN0cmwsIGNvbnN0IGNoYXIgKm5hbWUpCiAgCWlmIChvbihVTklYX19OT05VTEwsIGN0cmwpKQogIAkJcmV0dXJuIDA7CS8qIHdpbGwgZmFpbCBidXQgZG9uJ3QgbGV0IG9uIHlldCAqLwogIApAQCAtMTg1LDcgKzE0MCw3IEBACiAgCS8qIFVOSVggcGFzc3dvcmRzIGFyZWEgKi8KICAKICAJcmV0dmFsID0gZ2V0X3B3ZF9oYXNoKHBhbWgsIG5hbWUsICZwd2QsICZzYWx0KTsKLUBAIC03NjQsNyArNzk0LDcgQEAgaW50IF91bml4X3ZlcmlmeV9wYXNzd29yZChwYW1faGFuZGxlX3QgKiBwYW1oLCBjb25zdCBjaGFyICpuYW1lCitAQCAtNzU4LDcgKzc4OCw3IEBAIGludCBfdW5peF92ZXJpZnlfcGFzc3dvcmQocGFtX2hhbmRsZV90ICogcGFtaCwgY29uc3QgY2hhciAqbmFtZQogIAkJCX0KICAJCX0KICAJfSBlbHNlIHsKQEAgLTE5NSw0NiArMTUwLDQ2IEBACiAgCiAgCWlmIChyZXR2YWwgPT0gUEFNX1NVQ0NFU1MpIHsKIGRpZmYgLS1naXQgYS9tb2R1bGVzL3BhbV91bml4L3N1cHBvcnQuaCBiL21vZHVsZXMvcGFtX3VuaXgvc3VwcG9ydC5oCi1pbmRleCAzNzI5Y2UwLi40M2NkYmVhIDEwMDY0NAoraW5kZXggYjRjMjc5Yy4uOGRhNGE4ZSAxMDA2NDQKIC0tLSBhL21vZHVsZXMvcGFtX3VuaXgvc3VwcG9ydC5oCiArKysgYi9tb2R1bGVzL3BhbV91bml4L3N1cHBvcnQuaAotQEAgLTk5LDggKzk5LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgewotICNkZWZpbmUgVU5JWF9NSU5fUEFTU19MRU4gICAgICAgIDI3CS8qIG1pbiBsZW5ndGggZm9yIHBhc3N3b3JkICovCitAQCAtOTgsOCArOTgsOSBAQCB0eXBlZGVmIHN0cnVjdCB7CiAgI2RlZmluZSBVTklYX1FVSUVUCQkgMjgJLyogRG9uJ3QgcHJpbnQgaW5mb3JtYXRpb25hbCBtZXNzYWdlcyAqLwotICNkZWZpbmUgVU5JWF9ERVMgICAgICAgICAgICAgICAgIDI5ICAgICAvKiBERVMsIGRlZmF1bHQgKi8KLSsjZGVmaW5lIFVOSVhfTlVMTE9LX1NFQ1VSRSAgICAgICAzMCAgICAgLyogTlVMTCBwYXNzd29yZHMgYWxsb3dlZCBvbmx5IG9uIHNlY3VyZSB0dHlzICovCisgI2RlZmluZSBVTklYX05PX1BBU1NfRVhQSVJZICAgICAgMjkgICAgIC8qIERvbid0IGNoZWNrIGZvciBwYXNzd29yZCBleHBpcmF0aW9uIGlmIG5vdCB1c2VkIGZvciBhdXRoZW50aWNhdGlvbiAqLworICNkZWZpbmUgVU5JWF9ERVMgICAgICAgICAgICAgICAgIDMwICAgICAvKiBERVMsIGRlZmF1bHQgKi8KKysjZGVmaW5lIFVOSVhfTlVMTE9LX1NFQ1VSRSAgICAgICAzMSAgICAgLyogTlVMTCBwYXNzd29yZHMgYWxsb3dlZCBvbmx5IG9uIHNlY3VyZSB0dHlzICovCiAgLyogLS0tLS0tLS0tLS0tLS0gKi8KLS0jZGVmaW5lIFVOSVhfQ1RSTFNfICAgICAgICAgICAgICAzMAkvKiBudW1iZXIgb2YgY3RybCBhcmd1bWVudHMgZGVmaW5lZCAqLwotKyNkZWZpbmUgVU5JWF9DVFJMU18gICAgICAgICAgICAgIDMxCS8qIG51bWJlciBvZiBjdHJsIGFyZ3VtZW50cyBkZWZpbmVkICovCistI2RlZmluZSBVTklYX0NUUkxTXyAgICAgICAgICAgICAgMzEJLyogbnVtYmVyIG9mIGN0cmwgYXJndW1lbnRzIGRlZmluZWQgKi8KKysjZGVmaW5lIFVOSVhfQ1RSTFNfICAgICAgICAgICAgICAzMgkvKiBudW1iZXIgb2YgY3RybCBhcmd1bWVudHMgZGVmaW5lZCAqLwogIAogICNkZWZpbmUgVU5JWF9ERVNfQ1JZUFQoY3RybCkJKG9mZihVTklYX01ENV9QQVNTLGN0cmwpJiZvZmYoVU5JWF9CSUdDUllQVCxjdHJsKSYmb2ZmKFVOSVhfU0hBMjU2X1BBU1MsY3RybCkmJm9mZihVTklYX1NIQTUxMl9QQVNTLGN0cmwpJiZvZmYoVU5JWF9CTE9XRklTSF9QQVNTLGN0cmwpKQogIAotQEAgLTExOCw3ICsxMTksNyBAQCBzdGF0aWMgY29uc3QgVU5JWF9DdHJscyB1bml4X2FyZ3NbVU5JWF9DVFJMU19dID0KLSAvKiBVTklYX05PVF9TRVRfUEFTUyAqLyAgICB7Im5vdF9zZXRfcGFzcyIsICAgIF9BTExfT05fLCAgICAgICAgICAgICAgICAwMTAwLCAwfSwKK0BAIC0xMTcsNyArMTE4LDcgQEAgc3RhdGljIGNvbnN0IFVOSVhfQ3RybHMgdW5peF9hcmdzW1VOSVhfQ1RSTFNfXSA9CisgLyogVU5JWF9BVVRIVE9LX1RZUEUgKi8gICAgeyJhdXRodG9rX3R5cGU9IiwgICBfQUxMX09OXywgICAgICAgICAgICAgICAgMDEwMCwgMH0sCiAgLyogVU5JWF9fUFJFTElNICovICAgICAgICAge05VTEwsICAgICAgICAgICAgICBfQUxMX09OX14oMDYwMCksICAgICAgICAgMDIwMCwgMH0sCiAgLyogVU5JWF9fVVBEQVRFICovICAgICAgICAge05VTEwsICAgICAgICAgICAgICBfQUxMX09OX14oMDYwMCksICAgICAgICAgMDQwMCwgMH0sCiAtLyogVU5JWF9fTk9OVUxMICovICAgICAgICAge05VTEwsICAgICAgICAgICAgICBfQUxMX09OXywgICAgICAgICAgICAgICAwMTAwMCwgMH0sCi0rLyogVU5JWF9fTk9OVUxMICovICAgICAgICAge05VTEwsICAgICAgICAgICAgICBfQUxMX09OX14oMDIwMDAwMDAwMDApLCAgIDAxMDAwLCAwfSwKKysvKiBVTklYX19OT05VTEwgKi8gICAgICAgICB7TlVMTCwgICAgICAgICAgICAgIF9BTExfT05fXigwMjAwMDAwMDAwMCksIDAxMDAwLCAwfSwKICAvKiBVTklYX19RVUlFVCAqLyAgICAgICAgICB7TlVMTCwgICAgICAgICAgICAgIF9BTExfT05fLCAgICAgICAgICAgICAgIDAyMDAwLCAwfSwKICAvKiBVTklYX1VTRV9BVVRIVE9LICovICAgICB7InVzZV9hdXRodG9rIiwgICAgIF9BTExfT05fLCAgICAgICAgICAgICAgIDA0MDAwLCAwfSwKICAvKiBVTklYX1NIQURPVyAqLyAgICAgICAgICB7InNoYWRvdyIsICAgICAgICAgIF9BTExfT05fLCAgICAgICAgICAgICAgMDEwMDAwLCAwfSwKIEBAIC0xMzksNiArMTQwLDcgQEAgc3RhdGljIGNvbnN0IFVOSVhfQ3RybHMgdW5peF9hcmdzW1VOSVhfQ1RSTFNfXSA9Ci0gLyogVU5JWF9NSU5fUEFTU19MRU4gKi8gICAgeyJtaW5sZW49IiwJCV9BTExfT05fLCAgICAgICAgIDA0MDAwMDAwMDAsIDB9LAogIC8qIFVOSVhfUVVJRVQgKi8gICAgICAgICAgIHsicXVpZXQiLCAgICAgICAgICAgX0FMTF9PTl8sICAgICAgICAgMDEwMDAwMDAwMDAsIDB9LAorIC8qIFVOSVhfTk9fUEFTU19FWFBJUlkgKi8gIHsibm9fcGFzc19leHBpcnkiLCAgX0FMTF9PTl8sICAgICAgICAgMDIwMDAwMDAwMDAsIDB9LAogIC8qIFVOSVhfREVTICovICAgICAgICAgICAgIHsiZGVzIiwgICAgICAgICAgICAgX0FMTF9PTl9eKDAyNjA0MjAwMDApLCAgICAgIDAsIDF9LAotKy8qIFVOSVhfTlVMTE9LX1NFQ1VSRSAqLyAgIHsibnVsbG9rX3NlY3VyZSIsICAgX0FMTF9PTl9eKDAxMDAwKSwgIDAyMDAwMDAwMDAwLCAwfSwKKysvKiBVTklYX05VTExPS19TRUNVUkUgKi8gICB7Im51bGxva19zZWN1cmUiLCAgIF9BTExfT05fXigwMTAwMCksIDAyMDAwMDAwMDAwLCAwfSwKICB9OwogIAogICNkZWZpbmUgVU5JWF9ERUZBVUxUUyAgKHVuaXhfYXJnc1tVTklYX19OT05VTExdLmZsYWcpCi1AQCAtMTcxLDYgKzE3Myw4IEBAIGV4dGVybiBpbnQgX3VuaXhfcmVhZF9wYXNzd29yZChwYW1faGFuZGxlX3QgKiBwYW1oCi0gCQkJLGNvbnN0IGNoYXIgKnByb21wdDIKK0BAIC0xNzIsNiArMTc0LDggQEAgZXh0ZXJuIGludCBfdW5peF9yZWFkX3Bhc3N3b3JkKHBhbV9oYW5kbGVfdCAqIHBhbWgKICAJCQksY29uc3QgY2hhciAqZGF0YV9uYW1lCiAgCQkJLGNvbnN0IHZvaWQgKipwYXNzKTsKLStleHRlcm4gaW50IF9wYW1tb2R1dGlsX3R0eV9zZWN1cmUoY29uc3QgcGFtX2hhbmRsZV90ICpwYW1oLAotKyAgICAgICAgIGNvbnN0IGNoYXIgKnV0dHluYW1lKTsKICAKKytleHRlcm4gaW50IF9wYW1tb2R1dGlsX3R0eV9zZWN1cmUoY29uc3QgcGFtX2hhbmRsZV90ICpwYW1oLCBjb25zdCBjaGFyICp1dHR5bmFtZSk7CisrCiAgZXh0ZXJuIGludCBfdW5peF9ydW5fdmVyaWZ5X2JpbmFyeShwYW1faGFuZGxlX3QgKnBhbWgsCiAgCQkJdW5zaWduZWQgaW50IGN0cmwsIGNvbnN0IGNoYXIgKnVzZXIsIGludCAqZGF5c2xlZnQpOworICNlbmRpZiAvKiBfUEFNX1VOSVhfU1VQUE9SVF9IICovCiAtLSAKLTIuMS40CisyLjQuMAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW1fMS4yLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW1fMS4yLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0MWVhMjQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtXzEuMi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTcxICswLDAgQEAKLVNVTU1BUlkgPSAiTGludXgtUEFNIChQbHVnZ2FibGUgQXV0aGVudGljYXRpb24gTW9kdWxlcykiCi1ERVNDUklQVElPTiA9ICJMaW51eC1QQU0gKFBsdWdnYWJsZSBBdXRoZW50aWNhdGlvbiBNb2R1bGVzIGZvciBMaW51eCksIGEgZmxleGlibGUgbWVjaGFuaXNtIGZvciBhdXRoZW50aWNhdGluZyB1c2VycyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZmVkb3JhaG9zdGVkLm9yZy9saW51eC1wYW0vIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2ZlZG9yYWhvc3RlZC5vcmcvbGludXgtcGFtL25ld3RpY2tldCIKLVNFQ1RJT04gPSAiYmFzZSIKLSMgUEFNIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgR1BMIGFuZCBCU0QuCi0jIC9ldGMvcGFtLmQgY29tZXMgZnJvbSBEZWJpYW4gbGlicGFtLXJ1bnRpbWUgaW4gMjAwOS0xMSAoYXQgdGhhdCB0aW1lCi0jIGxpYnBhbS1ydW50aW1lLTEuMC4xIGlzIEdQTHYyKyksIGJ5IG9wZW5lbWJlZGRlZAotTElDRU5TRSA9ICJHUEx2MisgfCBCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03ZWI1YzFiZjg1NGU4ODgxMDA1ZDY3MzU5OWVlNzRkMyIKLQotU1JDX1VSSSA9ICJodHRwOi8vbGludXgtcGFtLm9yZy9saWJyYXJ5L0xpbnV4LVBBTS0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovLzk5X3BhbSBcCi0gICAgICAgICAgIGZpbGU6Ly9wYW0uZC9jb21tb24tYWNjb3VudCBcCi0gICAgICAgICAgIGZpbGU6Ly9wYW0uZC9jb21tb24tYXV0aCBcCi0gICAgICAgICAgIGZpbGU6Ly9wYW0uZC9jb21tb24tcGFzc3dvcmQgXAotICAgICAgICAgICBmaWxlOi8vcGFtLmQvY29tbW9uLXNlc3Npb24gXAotICAgICAgICAgICBmaWxlOi8vcGFtLmQvY29tbW9uLXNlc3Npb24tbm9uaW50ZXJhY3RpdmUgXAotICAgICAgICAgICBmaWxlOi8vcGFtLmQvb3RoZXIgXAotICAgICAgICAgICBmaWxlOi8vbGlicGFtLXh0ZXN0cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXhzZXBidWlsZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9wYW0tc2VjdXJpdHktYWJzdHJhY3Qtc2VjdXJldHR5LWhhbmRsaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3BhbS11bml4LW51bGxvay1zZWN1cmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGlicGFtLXh0ZXN0cy1yZW1vdmUtYmFzaC1kZXBlbmRlbmN5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NyeXB0X2NvbmZpZ3VyZS5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOWRjNTMwNjc1NTZkMmRkNTY3ODA4ZmQ1MDk1MTlkZDYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzQyYjEyMTFjMGQzYjIwM2E3ZGYyNTQwYTViMDNhNDI4YTA4N2JkOGE0OGMxN2U0OWFlMjY4Zjk5MmIzMzRkOSIKLQotU1JDX1VSSV9hcHBlbmRfbGliYy11Y2xpYmMgPSAiIGZpbGU6Ly9wYW0tbm8taW5uZXRnci5wYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3VzZS11dG1weC5wYXRjaCIKLQotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vcGFtLW5vLWlubmV0Z3IucGF0Y2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtc3VwcG9ydC1mb3ItZGVmaW5pbmctbWlzc2luZy1mdW5jaXRvbmFsaXR5LnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGVfcGF0aHNfaGVhZGVyLnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICIKLQotREVQRU5EUyA9ICJiaXNvbiBmbGV4IGZsZXgtbmF0aXZlIGNyYWNrbGliIgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLWRiLXVuaXF1ZW5hbWU9X3BhbSBcCi0gICAgICAgICAgICAgICAgLS1pbmNsdWRlZGlyPSR7aW5jbHVkZWRpcn0vc2VjdXJpdHkgXAotICAgICAgICAgICAgICAgIC0tbGliZGlyPSR7YmFzZV9saWJkaXJ9IFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtbmlzIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtcmVnZW5lcmF0ZS1kb2N1IFwKLQkJLS1kaXNhYmxlLXByZWx1ZGUiCi0KLUNGTEFHU19hcHBlbmQgPSAiIC1mUElDICIKLQotUFIgPSAicjUiCi0KLVMgPSAiJHtXT1JLRElSfS9MaW51eC1QQU0tJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnCi0KLVBBQ0tBR0VDT05GSUdbYXVkaXRdID0gIi0tZW5hYmxlLWF1ZGl0LC0tZGlzYWJsZS1hdWRpdCxhdWRpdCwiCi0KLVBBQ0tBR0VTICs9ICIke1BOfS1ydW50aW1lICR7UE59LXh0ZXN0cyIKLUZJTEVTXyR7UE59ID0gIiR7YmFzZV9saWJkaXJ9L2xpYioke1NPTElCU30iCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5LyoubGEgJHtiYXNlX2xpYmRpcn0vKi5sYSAke2Jhc2VfbGliZGlyfS9saWIqJHtTT0xJQlNERVZ9IgotRklMRVNfJHtQTn0tcnVudGltZSA9ICIke3N5c2NvbmZkaXJ9IgotRklMRVNfJHtQTn0teHRlc3RzID0gIiR7ZGF0YWRpcn0vTGludXgtUEFNL3h0ZXN0cyIKLQotUEFDS0FHRVNfRFlOQU1JQyArPSAiXiR7TUxQUkVGSVh9cGFtLXBsdWdpbi0uKiIKLQotZGVmIGdldF9tdWx0aWxpYl9iaXQoZCk6Ci0gICAgYmFzZWxpYiA9IGQuZ2V0VmFyKCdiYXNlbGliJywgVHJ1ZSkgb3IgJycKLSAgICByZXR1cm4gYmFzZWxpYi5yZXBsYWNlKCdsaWInLCAnJykKLQotbGlicGFtX3N1ZmZpeCA9ICJzdWZmaXgke0BnZXRfbXVsdGlsaWJfYml0KGQpfSIKLQotUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS0ke2xpYnBhbV9zdWZmaXh9IgotUlBST1ZJREVTXyR7UE59LXJ1bnRpbWUgKz0gIiR7UE59LXJ1bnRpbWUtJHtsaWJwYW1fc3VmZml4fSIKLQotUkRFUEVORFNfJHtQTn0tcnVudGltZSA9ICIke1BOfS0ke2xpYnBhbV9zdWZmaXh9IFwKLSAgICAke01MUFJFRklYfXBhbS1wbHVnaW4tZGVueS0ke2xpYnBhbV9zdWZmaXh9IFwKLSAgICAke01MUFJFRklYfXBhbS1wbHVnaW4tcGVybWl0LSR7bGlicGFtX3N1ZmZpeH0gXAotICAgICR7TUxQUkVGSVh9cGFtLXBsdWdpbi13YXJuLSR7bGlicGFtX3N1ZmZpeH0gXAotICAgICR7TUxQUkVGSVh9cGFtLXBsdWdpbi11bml4LSR7bGlicGFtX3N1ZmZpeH0gXAotICAgICIKLVJERVBFTkRTXyR7UE59LXh0ZXN0cyA9ICIke1BOfS0ke2xpYnBhbV9zdWZmaXh9IFwKLSAgICAke01MUFJFRklYfXBhbS1wbHVnaW4tYWNjZXNzLSR7bGlicGFtX3N1ZmZpeH0gXAotICAgICR7TUxQUkVGSVh9cGFtLXBsdWdpbi1kZWJ1Zy0ke2xpYnBhbV9zdWZmaXh9IFwKLSAgICAke01MUFJFRklYfXBhbS1wbHVnaW4tY3JhY2tsaWItJHtsaWJwYW1fc3VmZml4fSBcCi0gICAgJHtNTFBSRUZJWH1wYW0tcGx1Z2luLXB3aGlzdG9yeS0ke2xpYnBhbV9zdWZmaXh9IFwKLSAgICAke01MUFJFRklYfXBhbS1wbHVnaW4tc3VjY2VlZC1pZi0ke2xpYnBhbV9zdWZmaXh9IFwKLSAgICAke01MUFJFRklYfXBhbS1wbHVnaW4tdGltZS0ke2xpYnBhbV9zdWZmaXh9IFwKLSAgICBjb3JldXRpbHMiCi0KLSMgRklYTUU6IE5hdGl2ZSBzdWZmaXggYnJlYWtzIGhlcmUsIGRpc2FibGUgaXQgZm9yIG5vdwotUlJFQ09NTUVORFNfJHtQTn0gPSAiJHtQTn0tcnVudGltZS0ke2xpYnBhbV9zdWZmaXh9IgotUlJFQ09NTUVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIGRlZiBwYW1fcGx1Z2luX2FwcGVuZF9maWxlKHBuLCBkaXIsIGZpbGUpOgotICAgICAgICBuZiA9IG9zLnBhdGguam9pbihkaXIsIGZpbGUpCi0gICAgICAgIG9mID0gZC5nZXRWYXIoJ0ZJTEVTXycgKyBwbiwgVHJ1ZSkKLSAgICAgICAgaWYgb2Y6Ci0gICAgICAgICAgICBuZiA9IG9mICsgIiAiICsgbmYKLSAgICAgICAgZC5zZXRWYXIoJ0ZJTEVTXycgKyBwbiwgbmYpCi0KLSAgICBkZWYgcGFtX3BsdWdpbl9ob29rKGZpbGUsIHBrZywgcGF0dGVybiwgZm9ybWF0LCBiYXNlbmFtZSk6Ci0gICAgICAgIHBuID0gZC5nZXRWYXIoJ1BOJywgVHJ1ZSkKLSAgICAgICAgbGlicGFtX3N1ZmZpeCA9IGQuZ2V0VmFyKCdsaWJwYW1fc3VmZml4JywgVHJ1ZSkKLQotICAgICAgICByZGVwcyA9IGQuZ2V0VmFyKCdSREVQRU5EU18nICsgcGtnLCBUcnVlKQotICAgICAgICBpZiByZGVwczoKLSAgICAgICAgICAgIHJkZXBzID0gcmRlcHMgKyAiICIgKyBwbiArICItIiArIGxpYnBhbV9zdWZmaXgKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJkZXBzID0gcG4gKyAiLSIgKyBsaWJwYW1fc3VmZml4Ci0gICAgICAgIGQuc2V0VmFyKCdSREVQRU5EU18nICsgcGtnLCByZGVwcykKLQotICAgICAgICBwcm92aWRlcyA9IGQuZ2V0VmFyKCdSUFJPVklERVNfJyArIHBrZywgVHJ1ZSkKLSAgICAgICAgaWYgcHJvdmlkZXM6Ci0gICAgICAgICAgICBwcm92aWRlcyA9IHByb3ZpZGVzICsgIiAiICsgcGtnICsgIi0iICsgbGlicGFtX3N1ZmZpeAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcHJvdmlkZXMgPSBwa2cgKyAiLSIgKyBsaWJwYW1fc3VmZml4Ci0gICAgICAgIGQuc2V0VmFyKCdSUFJPVklERVNfJyArIHBrZywgcHJvdmlkZXMpCi0KLSAgICBtbHByZWZpeCA9IGQuZ2V0VmFyKCdNTFBSRUZJWCcsIFRydWUpIG9yICcnCi0gICAgZHZhciA9IGJiLmRhdGEuZXhwYW5kKCcke1dPUktESVJ9L3BhY2thZ2UnLCBkLCBUcnVlKQotICAgIHBhbV9saWJkaXIgPSBkLmV4cGFuZCgnJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHknKQotICAgIHBhbV9zYmluZGlyID0gZC5leHBhbmQoJyR7c2JpbmRpcn0nKQotICAgIHBhbV9maWx0ZXJkaXIgPSBkLmV4cGFuZCgnJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkvcGFtX2ZpbHRlcicpCi0gICAgcGFtX3BrZ25hbWUgPSBtbHByZWZpeCArICdwYW0tcGx1Z2luJXMnCi0KLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBwYW1fbGliZGlyLCAnXnBhbSguKilcLnNvJCcsIHBhbV9wa2duYW1lLAotICAgICAgICAgICAgICAgICAgICAgICdQQU0gcGx1Z2luIGZvciAlcycsIGhvb2s9cGFtX3BsdWdpbl9ob29rLCBleHRyYV9kZXBlbmRzPScnKQotICAgIHBhbV9wbHVnaW5fYXBwZW5kX2ZpbGUoJyVzcGFtLXBsdWdpbi11bml4JyAlIG1scHJlZml4LCBwYW1fc2JpbmRpciwgJ3VuaXhfY2hrcHdkJykKLSAgICBwYW1fcGx1Z2luX2FwcGVuZF9maWxlKCclc3BhbS1wbHVnaW4tdW5peCcgJSBtbHByZWZpeCwgcGFtX3NiaW5kaXIsICd1bml4X3VwZGF0ZScpCi0gICAgcGFtX3BsdWdpbl9hcHBlbmRfZmlsZSgnJXNwYW0tcGx1Z2luLXRhbGx5JyAlIG1scHJlZml4LCBwYW1fc2JpbmRpciwgJ3BhbV90YWxseScpCi0gICAgcGFtX3BsdWdpbl9hcHBlbmRfZmlsZSgnJXNwYW0tcGx1Z2luLXRhbGx5MicgJSBtbHByZWZpeCwgcGFtX3NiaW5kaXIsICdwYW1fdGFsbHkyJykKLSAgICBwYW1fcGx1Z2luX2FwcGVuZF9maWxlKCclc3BhbS1wbHVnaW4tdGltZXN0YW1wJyAlIG1scHJlZml4LCBwYW1fc2JpbmRpciwgJ3BhbV90aW1lc3RhbXBfY2hlY2snKQotICAgIHBhbV9wbHVnaW5fYXBwZW5kX2ZpbGUoJyVzcGFtLXBsdWdpbi1ta2hvbWVkaXInICUgbWxwcmVmaXgsIHBhbV9zYmluZGlyLCAnbWtob21lZGlyX2hlbHBlcicpCi0gICAgcGFtX3BsdWdpbl9hcHBlbmRfZmlsZSgnJXNwYW0tcGx1Z2luLWNvbnNvbGUnICUgbWxwcmVmaXgsIHBhbV9zYmluZGlyLCAncGFtX2NvbnNvbGVfYXBwbHknKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHBhbV9maWx0ZXJkaXIsICdeKC4qKSQnLCAncGFtLWZpbHRlci0lcycsICdQQU0gZmlsdGVyIGZvciAlcycsIGV4dHJhX2RlcGVuZHM9JycpCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQotCSMgZG9uJ3QgaW5zdGFsbCAvdmFyL3J1biB3aGVuIHBvcHVsYXRpbmcgcm9vdGZzLiBEbyBpdCB0aHJvdWdoIHZvbGF0aWxlCi0Jcm0gLXJmICR7RH0ke2xvY2Fsc3RhdGVkaXJ9Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcwotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9Lzk5X3BhbSAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcwotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9wYW0uZC8KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9wYW0uZC8qICR7RH0ke3N5c2NvbmZkaXJ9L3BhbS5kLwotCi0JIyBUaGUgbHNiIHJlcXVpcmVzIHVuaXhfY2hrcHdkIGhhcyBzZXR1aWQgcGVybWlzc2lvbgotCWNobW9kIDQ3NTUgJHtEfSR7c2JpbmRpcn0vdW5peF9jaGtwd2QKLQotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KLQkJZWNobyAic2Vzc2lvbiBvcHRpb25hbCBwYW1fc3lzdGVtZC5zbyIgPj4gJHtEfSR7c3lzY29uZmRpcn0vcGFtLmQvY29tbW9uLXNlc3Npb24KLQlmaQotfQotCi1weXRob24gZG9fcGFtX3Nhbml0eSAoKSB7Ci0gICAgaWYgbm90IGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgVHJ1ZSwgRmFsc2UsIGQpOgotICAgICAgICBiYi53YXJuKCJCdWlsZGluZyBsaWJwYW0gYnV0ICdwYW0nIGlzbid0IGluIERJU1RST19GRUFUVVJFUywgUEFNIHdvbid0IHdvcmsgY29ycmVjdGx5IikKLX0KLWFkZHRhc2sgcGFtX3Nhbml0eSBiZWZvcmUgZG9fY29uZmlndXJlCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIG5hdGl2ZSIKLQotQ09ORkZJTEVTXyR7UE59LXJ1bnRpbWUgKz0gIiR7c3lzY29uZmRpcn0vcGFtLmQvY29tbW9uLXNlc3Npb24iCi1DT05GRklMRVNfJHtQTn0tcnVudGltZSArPSAiJHtzeXNjb25mZGlyfS9wYW0uZC9jb21tb24tYXV0aCIKLUNPTkZGSUxFU18ke1BOfS1ydW50aW1lICs9ICIke3N5c2NvbmZkaXJ9L3BhbS5kL2NvbW1vbi1wYXNzd29yZCIKLUNPTkZGSUxFU18ke1BOfS1ydW50aW1lICs9ICIke3N5c2NvbmZkaXJ9L3BhbS5kL2NvbW1vbi1zZXNzaW9uLW5vbmludGVyYWN0aXZlIgotQ09ORkZJTEVTXyR7UE59LXJ1bnRpbWUgKz0gIiR7c3lzY29uZmRpcn0vcGFtLmQvY29tbW9uLWFjY291bnQiCi1DT05GRklMRVNfJHtQTn0tcnVudGltZSArPSAiJHtzeXNjb25mZGlyfS9zZWN1cml0eS9saW1pdHMuY29uZiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbV8xLjMuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbV8xLjMuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjVhNGJkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtXzEuMy4wLmJiCkBAIC0wLDAgKzEsMTY5IEBACitTVU1NQVJZID0gIkxpbnV4LVBBTSAoUGx1Z2dhYmxlIEF1dGhlbnRpY2F0aW9uIE1vZHVsZXMpIgorREVTQ1JJUFRJT04gPSAiTGludXgtUEFNIChQbHVnZ2FibGUgQXV0aGVudGljYXRpb24gTW9kdWxlcyBmb3IgTGludXgpLCBhIGZsZXhpYmxlIG1lY2hhbmlzbSBmb3IgYXV0aGVudGljYXRpbmcgdXNlcnMiCitIT01FUEFHRSA9ICJodHRwczovL2ZlZG9yYWhvc3RlZC5vcmcvbGludXgtcGFtLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9mZWRvcmFob3N0ZWQub3JnL2xpbnV4LXBhbS9uZXd0aWNrZXQiCitTRUNUSU9OID0gImJhc2UiCisjIFBBTSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIEdQTCBhbmQgQlNELgorIyAvZXRjL3BhbS5kIGNvbWVzIGZyb20gRGViaWFuIGxpYnBhbS1ydW50aW1lIGluIDIwMDktMTEgKGF0IHRoYXQgdGltZQorIyBsaWJwYW0tcnVudGltZS0xLjAuMSBpcyBHUEx2MispLCBieSBvcGVuZW1iZWRkZWQKK0xJQ0VOU0UgPSAiR1BMdjIrIHwgQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9N2ViNWMxYmY4NTRlODg4MTAwNWQ2NzM1OTllZTc0ZDMiCisKK1NSQ19VUkkgPSAiaHR0cDovL2xpbnV4LXBhbS5vcmcvbGlicmFyeS9MaW51eC1QQU0tJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly85OV9wYW0gXAorICAgICAgICAgICBmaWxlOi8vcGFtLmQvY29tbW9uLWFjY291bnQgXAorICAgICAgICAgICBmaWxlOi8vcGFtLmQvY29tbW9uLWF1dGggXAorICAgICAgICAgICBmaWxlOi8vcGFtLmQvY29tbW9uLXBhc3N3b3JkIFwKKyAgICAgICAgICAgZmlsZTovL3BhbS5kL2NvbW1vbi1zZXNzaW9uIFwKKyAgICAgICAgICAgZmlsZTovL3BhbS5kL2NvbW1vbi1zZXNzaW9uLW5vbmludGVyYWN0aXZlIFwKKyAgICAgICAgICAgZmlsZTovL3BhbS5kL290aGVyIFwKKyAgICAgICAgICAgZmlsZTovL2xpYnBhbS14dGVzdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4c2VwYnVpbGQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcGFtLXNlY3VyaXR5LWFic3RyYWN0LXNlY3VyZXR0eS1oYW5kbGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wYW0tdW5peC1udWxsb2stc2VjdXJlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2xpYnBhbS14dGVzdHMtcmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jcnlwdF9jb25maWd1cmUucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImRhNGIyMjg5YjdjZmIxOTU4M2Q1NGU5ZWFhZWYxYzNhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI0MWFlZDFlZjUyMmY2NmVkNjcyNzE5ZWNmMjIwNWVjNTEzZmQwMDc1ZWQ4MGNkYThlMDg2YTViMWEwMWQxYmIiCisKK1NSQ19VUklfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiBmaWxlOi8vdXNlLXV0bXB4LnBhdGNoIgorCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly8wMDAxLUFkZC1zdXBwb3J0LWZvci1kZWZpbmluZy1taXNzaW5nLWZ1bmNpdG9uYWxpdHkucGF0Y2ggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZV9wYXRoc19oZWFkZXIucGF0Y2ggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorCitERVBFTkRTID0gImJpc29uLW5hdGl2ZSBmbGV4IGZsZXgtbmF0aXZlIGNyYWNrbGliIGxpYnhtbDItbmF0aXZlIgorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLWRiLXVuaXF1ZW5hbWU9X3BhbSBcCisgICAgICAgICAgICAgICAgLS1pbmNsdWRlZGlyPSR7aW5jbHVkZWRpcn0vc2VjdXJpdHkgXAorICAgICAgICAgICAgICAgIC0tbGliZGlyPSR7YmFzZV9saWJkaXJ9IFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtbmlzIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtcmVnZW5lcmF0ZS1kb2N1IFwKKwkJLS1kaXNhYmxlLXByZWx1ZGUiCisKK0NGTEFHU19hcHBlbmQgPSAiIC1mUElDICIKKworUFIgPSAicjUiCisKK1MgPSAiJHtXT1JLRElSfS9MaW51eC1QQU0tJHtQVn0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnCisKK1BBQ0tBR0VDT05GSUdbYXVkaXRdID0gIi0tZW5hYmxlLWF1ZGl0LC0tZGlzYWJsZS1hdWRpdCxhdWRpdCwiCisKK1BBQ0tBR0VTICs9ICIke1BOfS1ydW50aW1lICR7UE59LXh0ZXN0cyIKK0ZJTEVTXyR7UE59ID0gIiR7YmFzZV9saWJkaXJ9L2xpYioke1NPTElCU30iCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5LyoubGEgJHtiYXNlX2xpYmRpcn0vKi5sYSAke2Jhc2VfbGliZGlyfS9saWIqJHtTT0xJQlNERVZ9IgorRklMRVNfJHtQTn0tcnVudGltZSA9ICIke3N5c2NvbmZkaXJ9IgorRklMRVNfJHtQTn0teHRlc3RzID0gIiR7ZGF0YWRpcn0vTGludXgtUEFNL3h0ZXN0cyIKKworUEFDS0FHRVNfRFlOQU1JQyArPSAiXiR7TUxQUkVGSVh9cGFtLXBsdWdpbi0uKiIKKworZGVmIGdldF9tdWx0aWxpYl9iaXQoZCk6CisgICAgYmFzZWxpYiA9IGQuZ2V0VmFyKCdiYXNlbGliJywgVHJ1ZSkgb3IgJycKKyAgICByZXR1cm4gYmFzZWxpYi5yZXBsYWNlKCdsaWInLCAnJykKKworbGlicGFtX3N1ZmZpeCA9ICJzdWZmaXgke0BnZXRfbXVsdGlsaWJfYml0KGQpfSIKKworUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS0ke2xpYnBhbV9zdWZmaXh9IgorUlBST1ZJREVTXyR7UE59LXJ1bnRpbWUgKz0gIiR7UE59LXJ1bnRpbWUtJHtsaWJwYW1fc3VmZml4fSIKKworUkRFUEVORFNfJHtQTn0tcnVudGltZSA9ICIke1BOfS0ke2xpYnBhbV9zdWZmaXh9IFwKKyAgICAke01MUFJFRklYfXBhbS1wbHVnaW4tZGVueS0ke2xpYnBhbV9zdWZmaXh9IFwKKyAgICAke01MUFJFRklYfXBhbS1wbHVnaW4tcGVybWl0LSR7bGlicGFtX3N1ZmZpeH0gXAorICAgICR7TUxQUkVGSVh9cGFtLXBsdWdpbi13YXJuLSR7bGlicGFtX3N1ZmZpeH0gXAorICAgICR7TUxQUkVGSVh9cGFtLXBsdWdpbi11bml4LSR7bGlicGFtX3N1ZmZpeH0gXAorICAgICIKK1JERVBFTkRTXyR7UE59LXh0ZXN0cyA9ICIke1BOfS0ke2xpYnBhbV9zdWZmaXh9IFwKKyAgICAke01MUFJFRklYfXBhbS1wbHVnaW4tYWNjZXNzLSR7bGlicGFtX3N1ZmZpeH0gXAorICAgICR7TUxQUkVGSVh9cGFtLXBsdWdpbi1kZWJ1Zy0ke2xpYnBhbV9zdWZmaXh9IFwKKyAgICAke01MUFJFRklYfXBhbS1wbHVnaW4tY3JhY2tsaWItJHtsaWJwYW1fc3VmZml4fSBcCisgICAgJHtNTFBSRUZJWH1wYW0tcGx1Z2luLXB3aGlzdG9yeS0ke2xpYnBhbV9zdWZmaXh9IFwKKyAgICAke01MUFJFRklYfXBhbS1wbHVnaW4tc3VjY2VlZC1pZi0ke2xpYnBhbV9zdWZmaXh9IFwKKyAgICAke01MUFJFRklYfXBhbS1wbHVnaW4tdGltZS0ke2xpYnBhbV9zdWZmaXh9IFwKKyAgICBjb3JldXRpbHMiCisKKyMgRklYTUU6IE5hdGl2ZSBzdWZmaXggYnJlYWtzIGhlcmUsIGRpc2FibGUgaXQgZm9yIG5vdworUlJFQ09NTUVORFNfJHtQTn0gPSAiJHtQTn0tcnVudGltZS0ke2xpYnBhbV9zdWZmaXh9IgorUlJFQ09NTUVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKKworcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgeworICAgIGRlZiBwYW1fcGx1Z2luX2FwcGVuZF9maWxlKHBuLCBkaXIsIGZpbGUpOgorICAgICAgICBuZiA9IG9zLnBhdGguam9pbihkaXIsIGZpbGUpCisgICAgICAgIG9mID0gZC5nZXRWYXIoJ0ZJTEVTXycgKyBwbiwgVHJ1ZSkKKyAgICAgICAgaWYgb2Y6CisgICAgICAgICAgICBuZiA9IG9mICsgIiAiICsgbmYKKyAgICAgICAgZC5zZXRWYXIoJ0ZJTEVTXycgKyBwbiwgbmYpCisKKyAgICBkZWYgcGFtX3BsdWdpbl9ob29rKGZpbGUsIHBrZywgcGF0dGVybiwgZm9ybWF0LCBiYXNlbmFtZSk6CisgICAgICAgIHBuID0gZC5nZXRWYXIoJ1BOJywgVHJ1ZSkKKyAgICAgICAgbGlicGFtX3N1ZmZpeCA9IGQuZ2V0VmFyKCdsaWJwYW1fc3VmZml4JywgVHJ1ZSkKKworICAgICAgICByZGVwcyA9IGQuZ2V0VmFyKCdSREVQRU5EU18nICsgcGtnLCBUcnVlKQorICAgICAgICBpZiByZGVwczoKKyAgICAgICAgICAgIHJkZXBzID0gcmRlcHMgKyAiICIgKyBwbiArICItIiArIGxpYnBhbV9zdWZmaXgKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJkZXBzID0gcG4gKyAiLSIgKyBsaWJwYW1fc3VmZml4CisgICAgICAgIGQuc2V0VmFyKCdSREVQRU5EU18nICsgcGtnLCByZGVwcykKKworICAgICAgICBwcm92aWRlcyA9IGQuZ2V0VmFyKCdSUFJPVklERVNfJyArIHBrZywgVHJ1ZSkKKyAgICAgICAgaWYgcHJvdmlkZXM6CisgICAgICAgICAgICBwcm92aWRlcyA9IHByb3ZpZGVzICsgIiAiICsgcGtnICsgIi0iICsgbGlicGFtX3N1ZmZpeAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcHJvdmlkZXMgPSBwa2cgKyAiLSIgKyBsaWJwYW1fc3VmZml4CisgICAgICAgIGQuc2V0VmFyKCdSUFJPVklERVNfJyArIHBrZywgcHJvdmlkZXMpCisKKyAgICBtbHByZWZpeCA9IGQuZ2V0VmFyKCdNTFBSRUZJWCcsIFRydWUpIG9yICcnCisgICAgZHZhciA9IGJiLmRhdGEuZXhwYW5kKCcke1dPUktESVJ9L3BhY2thZ2UnLCBkLCBUcnVlKQorICAgIHBhbV9saWJkaXIgPSBkLmV4cGFuZCgnJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHknKQorICAgIHBhbV9zYmluZGlyID0gZC5leHBhbmQoJyR7c2JpbmRpcn0nKQorICAgIHBhbV9maWx0ZXJkaXIgPSBkLmV4cGFuZCgnJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkvcGFtX2ZpbHRlcicpCisgICAgcGFtX3BrZ25hbWUgPSBtbHByZWZpeCArICdwYW0tcGx1Z2luJXMnCisKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBwYW1fbGliZGlyLCAnXnBhbSguKilcLnNvJCcsIHBhbV9wa2duYW1lLAorICAgICAgICAgICAgICAgICAgICAgICdQQU0gcGx1Z2luIGZvciAlcycsIGhvb2s9cGFtX3BsdWdpbl9ob29rLCBleHRyYV9kZXBlbmRzPScnKQorICAgIHBhbV9wbHVnaW5fYXBwZW5kX2ZpbGUoJyVzcGFtLXBsdWdpbi11bml4JyAlIG1scHJlZml4LCBwYW1fc2JpbmRpciwgJ3VuaXhfY2hrcHdkJykKKyAgICBwYW1fcGx1Z2luX2FwcGVuZF9maWxlKCclc3BhbS1wbHVnaW4tdW5peCcgJSBtbHByZWZpeCwgcGFtX3NiaW5kaXIsICd1bml4X3VwZGF0ZScpCisgICAgcGFtX3BsdWdpbl9hcHBlbmRfZmlsZSgnJXNwYW0tcGx1Z2luLXRhbGx5JyAlIG1scHJlZml4LCBwYW1fc2JpbmRpciwgJ3BhbV90YWxseScpCisgICAgcGFtX3BsdWdpbl9hcHBlbmRfZmlsZSgnJXNwYW0tcGx1Z2luLXRhbGx5MicgJSBtbHByZWZpeCwgcGFtX3NiaW5kaXIsICdwYW1fdGFsbHkyJykKKyAgICBwYW1fcGx1Z2luX2FwcGVuZF9maWxlKCclc3BhbS1wbHVnaW4tdGltZXN0YW1wJyAlIG1scHJlZml4LCBwYW1fc2JpbmRpciwgJ3BhbV90aW1lc3RhbXBfY2hlY2snKQorICAgIHBhbV9wbHVnaW5fYXBwZW5kX2ZpbGUoJyVzcGFtLXBsdWdpbi1ta2hvbWVkaXInICUgbWxwcmVmaXgsIHBhbV9zYmluZGlyLCAnbWtob21lZGlyX2hlbHBlcicpCisgICAgcGFtX3BsdWdpbl9hcHBlbmRfZmlsZSgnJXNwYW0tcGx1Z2luLWNvbnNvbGUnICUgbWxwcmVmaXgsIHBhbV9zYmluZGlyLCAncGFtX2NvbnNvbGVfYXBwbHknKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHBhbV9maWx0ZXJkaXIsICdeKC4qKSQnLCAncGFtLWZpbHRlci0lcycsICdQQU0gZmlsdGVyIGZvciAlcycsIGV4dHJhX2RlcGVuZHM9JycpCit9CisKK2RvX2luc3RhbGwoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKworCSMgZG9uJ3QgaW5zdGFsbCAvdmFyL3J1biB3aGVuIHBvcHVsYXRpbmcgcm9vdGZzLiBEbyBpdCB0aHJvdWdoIHZvbGF0aWxlCisJcm0gLXJmICR7RH0ke2xvY2Fsc3RhdGVkaXJ9CisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcworCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9Lzk5X3BhbSAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcworCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9wYW0uZC8KKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9wYW0uZC8qICR7RH0ke3N5c2NvbmZkaXJ9L3BhbS5kLworCisJIyBUaGUgbHNiIHJlcXVpcmVzIHVuaXhfY2hrcHdkIGhhcyBzZXR1aWQgcGVybWlzc2lvbgorCWNobW9kIDQ3NTUgJHtEfSR7c2JpbmRpcn0vdW5peF9jaGtwd2QKKworCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KKwkJZWNobyAic2Vzc2lvbiBvcHRpb25hbCBwYW1fc3lzdGVtZC5zbyIgPj4gJHtEfSR7c3lzY29uZmRpcn0vcGFtLmQvY29tbW9uLXNlc3Npb24KKwlmaQorfQorCitweXRob24gZG9fcGFtX3Nhbml0eSAoKSB7CisgICAgaWYgbm90IGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgVHJ1ZSwgRmFsc2UsIGQpOgorICAgICAgICBiYi53YXJuKCJCdWlsZGluZyBsaWJwYW0gYnV0ICdwYW0nIGlzbid0IGluIERJU1RST19GRUFUVVJFUywgUEFNIHdvbid0IHdvcmsgY29ycmVjdGx5IikKK30KK2FkZHRhc2sgcGFtX3Nhbml0eSBiZWZvcmUgZG9fY29uZmlndXJlCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIG5hdGl2ZSIKKworQ09ORkZJTEVTXyR7UE59LXJ1bnRpbWUgKz0gIiR7c3lzY29uZmRpcn0vcGFtLmQvY29tbW9uLXNlc3Npb24iCitDT05GRklMRVNfJHtQTn0tcnVudGltZSArPSAiJHtzeXNjb25mZGlyfS9wYW0uZC9jb21tb24tYXV0aCIKK0NPTkZGSUxFU18ke1BOfS1ydW50aW1lICs9ICIke3N5c2NvbmZkaXJ9L3BhbS5kL2NvbW1vbi1wYXNzd29yZCIKK0NPTkZGSUxFU18ke1BOfS1ydW50aW1lICs9ICIke3N5c2NvbmZkaXJ9L3BhbS5kL2NvbW1vbi1zZXNzaW9uLW5vbmludGVyYWN0aXZlIgorQ09ORkZJTEVTXyR7UE59LXJ1bnRpbWUgKz0gIiR7c3lzY29uZmRpcn0vcGFtLmQvY29tbW9uLWFjY291bnQiCitDT05GRklMRVNfJHtQTn0tcnVudGltZSArPSAiJHtzeXNjb25mZGlyfS9zZWN1cml0eS9saW1pdHMuY29uZiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGF4L3BheC9wYXgtMy40X2ZpeF9mb3JfeDMyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4L3BheC0zLjRfZml4X2Zvcl94MzIucGF0Y2gKaW5kZXggODA4NzhmMy4uN2FkYmQwMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4L3BheC0zLjRfZml4X2Zvcl94MzIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4L3BheC0zLjRfZml4X2Zvcl94MzIucGF0Y2gKQEAgLTksNyArOSw3IEBACiAgICAgc2l6ZSBvZiBvZmZfdCB0byBzZWUgaWYgZmlsZSBvZmZzZXQgaXMgNjRiaXQuICBUaGlzIHBhdGNoIGFkZHMKICAgICBBQ19DSEVDS19TSVpFT0Yob2ZmX3QpIGFuZCBjaGVja3MgU0laRU9GX09GRl9UID09IDguCiAKLVNpZ25lZC1PZmYtQnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+IDIwMTEvMTIvMDYKK1NpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+IDIwMTEvMTIvMDYKIAogSW5kZXg6IHBheC0zLjQvY29uZmlndXJlLmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BpZ3ovcGlnel8yLjMuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGlnei9waWd6XzIuMy4zLmJiCmluZGV4IDA4MGJlMmIuLjllOTcyNzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGlnei9waWd6XzIuMy4zLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGlnei9waWd6XzIuMy4zLmJiCkBAIC0xLDYgKzEsOCBAQAogcmVxdWlyZSBwaWd6LmluYwogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vcGlnei5jO2JlZ2lubGluZT03O2VuZGxpbmU9MjE7bWQ1PWEyMWQ0MDc1Y2IwMGFiNGNhMTdmY2U1ZTc1MzRjYTk1IgogCitVUFNUUkVBTV9DSEVDS19VUkkgOj0gIiR7U1JDX1VSSX0iCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy8ke0JQfS50YXIuZ3oiCiBTUkNfVVJJICs9ICJmaWxlOi8vbGluay1vcmRlci5wYXRjaCIKIAogU1JDX1VSSVttZDVzdW1dID0gIjAxZDdhMTZjY2U3NzkyOWNjMWE3OGFhMWJkZmI2OGNiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wcm9jcHMvcHJvY3BzXzMuMy4xMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHJvY3BzL3Byb2Nwc18zLjMuMTEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2ZGNjYzYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wcm9jcHMvcHJvY3BzXzMuMy4xMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLVNVTU1BUlkgPSAiU3lzdGVtIGFuZCBwcm9jZXNzIG1vbml0b3JpbmcgdXRpbGl0aWVzIgotREVTQ1JJUFRJT04gPSAiUHJvY3BzIGNvbnRhaW5zIGEgc2V0IG9mIHN5c3RlbSB1dGlsaXRpZXMgdGhhdCBwcm92aWRlIHN5c3RlbSBpbmZvcm1hdGlvbiBhYm91dCBwcm9jZXNzZXMgdXNpbmcgXAotdGhlIC9wcm9jIGZpbGVzeXN0ZW0uIFRoZSBwYWNrYWdlIGluY2x1ZGVzIHRoZSBwcm9ncmFtcyBwcywgdG9wLCB2bXN0YXQsIHcsIGtpbGwsIGFuZCBza2lsbC4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdG9yaW91cy5vcmcvcHJvY3BzIgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTT0iZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGNmNjZhNDk4NDEyMDAwN2M5ODgxY2M4NzFjZjQ5ZGIgXAotICAgICAgICAgICAgICAgICAiCi0KLURFUEVORFMgPSAibmN1cnNlcyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMuc291cmNlZm9yZ2UubmV0L3Byb2plY3QvcHJvY3BzLW5nL1Byb2R1Y3Rpb24vcHJvY3BzLW5nLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9zeXNjdGwuY29uZiBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNmNjNWI5NGMxYzViOGNiYzg5YWQzNDVhN2I1MjJmNzQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTk0OTMxNjlhMmQyYWRjMGJjMDQ1NTM4NzA3MzEwYzhlODc3YjM4NWU0ZTI5NjE0M2I2MjYwN2QyYmIwNDRlZCIKLQotUyA9ICIke1dPUktESVJ9L3Byb2Nwcy1uZy0ke1BWfSIKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXNraWxsIC0tZGlzYWJsZS1tb2Rlcm4tdG9wIgotCi1DUFBGTEFHUyArPSAiLUkke1N9IgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KLQlbICIke2JpbmRpcn0iICE9ICIke2Jhc2VfYmluZGlyfSIgXSAmJiBmb3IgaSBpbiAke2Jhc2VfYmluZGlyX3Byb2dzfTsgZG8gbXYgJHtEfSR7YmluZGlyfS8kaSAke0R9JHtiYXNlX2JpbmRpcn0vJGk7IGRvbmUKLQlpbnN0YWxsIC1kICR7RH0ke2Jhc2Vfc2JpbmRpcn0KLQlbICIke3NiaW5kaXJ9IiAhPSAiJHtiYXNlX3NiaW5kaXJ9IiBdICYmIGZvciBpIGluICR7YmFzZV9zYmluZGlyX3Byb2dzfTsgZG8gbXYgJHtEfSR7c2JpbmRpcn0vJGkgJHtEfSR7YmFzZV9zYmluZGlyfS8kaTsgZG9uZQotICAgICAgICBpZiBbICIke2Jhc2Vfc2JpbmRpcn0iICE9ICIke3NiaW5kaXJ9IiBdOyB0aGVuCi0gICAgICAgICAgICAgICAgcm1kaXIgJHtEfSR7c2JpbmRpcn0KLSAgICAgICAgZmkKLQotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9Ci0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3N5c2N0bC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2N0bC5jb25mCi0gICAgICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KLSAgICAgICAgICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2N0bC5kCi0gICAgICAgICAgICAgICAgbG4gLXNmIC4uL3N5c2N0bC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2N0bC5kLzk5LXN5c2N0bC5jb25mCi0gICAgICAgIGZpCi19Ci0KLUNPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L3N5c2N0bC5jb25mIgotCi1iaW5kaXJfcHJvZ3MgPSAiZnJlZSBwa2lsbCBwbWFwIHBncmVwIHB3ZHggc2tpbGwgc25pY2UgdG9wIHVwdGltZSIKLWJhc2VfYmluZGlyX3Byb2dzICs9ICJraWxsIHBpZG9mIHBzIHdhdGNoIgotYmFzZV9zYmluZGlyX3Byb2dzICs9ICJzeXNjdGwiCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjIwMCIKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAiJHtiaW5kaXJfcHJvZ3N9ICR7YmFzZV9iaW5kaXJfcHJvZ3N9ICR7YmFzZV9zYmluZGlyX3Byb2dzfSIKLQotQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gImtpbGwuMSB1cHRpbWUuMSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtraWxsLjFdID0gIiR7bWFuZGlyfS9tYW4xL2tpbGwuMSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVt1cHRpbWUuMV0gPSAiJHttYW5kaXJ9L21hbjEvdXB0aW1lLjEiCi0KLXB5dGhvbiBfX2Fub255bW91cygpIHsKLSAgICBmb3IgcHJvZyBpbiBkLmdldFZhcignYmFzZV9iaW5kaXJfcHJvZ3MnLCBUcnVlKS5zcGxpdCgpOgotICAgICAgICBkLnNldFZhckZsYWcoJ0FMVEVSTkFUSVZFX0xJTktfTkFNRScsIHByb2csICclcy8lcycgJSAoZC5nZXRWYXIoJ2Jhc2VfYmluZGlyJywgVHJ1ZSksIHByb2cpKQotCi0gICAgZm9yIHByb2cgaW4gZC5nZXRWYXIoJ2Jhc2Vfc2JpbmRpcl9wcm9ncycsIFRydWUpLnNwbGl0KCk6Ci0gICAgICAgIGQuc2V0VmFyRmxhZygnQUxURVJOQVRJVkVfTElOS19OQU1FJywgcHJvZywgJyVzLyVzJyAlIChkLmdldFZhcignYmFzZV9zYmluZGlyJywgVHJ1ZSksIHByb2cpKQotfQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Byb2Nwcy9wcm9jcHNfMy4zLjEyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wcm9jcHMvcHJvY3BzXzMuMy4xMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Y2ExYTUwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wcm9jcHMvcHJvY3BzXzMuMy4xMi5iYgpAQCAtMCwwICsxLDY2IEBACitTVU1NQVJZID0gIlN5c3RlbSBhbmQgcHJvY2VzcyBtb25pdG9yaW5nIHV0aWxpdGllcyIKK0RFU0NSSVBUSU9OID0gIlByb2NwcyBjb250YWlucyBhIHNldCBvZiBzeXN0ZW0gdXRpbGl0aWVzIHRoYXQgcHJvdmlkZSBzeXN0ZW0gaW5mb3JtYXRpb24gYWJvdXQgcHJvY2Vzc2VzIHVzaW5nIFwKK3RoZSAvcHJvYyBmaWxlc3lzdGVtLiBUaGUgcGFja2FnZSBpbmNsdWRlcyB0aGUgcHJvZ3JhbXMgcHMsIHRvcCwgdm1zdGF0LCB3LCBraWxsLCBhbmQgc2tpbGwuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRvcmlvdXMub3JnL3Byb2NwcyIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU09ImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRjZjY2YTQ5ODQxMjAwMDdjOTg4MWNjODcxY2Y0OWRiIFwKKyAgICAgICAgICAgICAgICAgIgorCitERVBFTkRTID0gIm5jdXJzZXMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnNvdXJjZWZvcmdlLm5ldC9wcm9qZWN0L3Byb2Nwcy1uZy9Qcm9kdWN0aW9uL3Byb2Nwcy1uZy0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vc3lzY3RsLmNvbmYgXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjk1N2U0MmU4YjE5MzQ5MGIyMTExMjUyZTRhMmI0NDNjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZlZDY1YWI4NjMxOGYzNzkwNGU4ZjkwMTQ0MTVhMDk4YmVjNWJjNTM2NTNlNWQ5YWI0MDRmOTVjYTVlMWE3ZDQiCisKK1MgPSAiJHtXT1JLRElSfS9wcm9jcHMtbmctJHtQVn0iCisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1za2lsbCAtLWRpc2FibGUtbW9kZXJuLXRvcCIKKworQ1BQRkxBR1MgKz0gIi1JJHtTfSIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9CisJWyAiJHtiaW5kaXJ9IiAhPSAiJHtiYXNlX2JpbmRpcn0iIF0gJiYgZm9yIGkgaW4gJHtiYXNlX2JpbmRpcl9wcm9nc307IGRvIG12ICR7RH0ke2JpbmRpcn0vJGkgJHtEfSR7YmFzZV9iaW5kaXJ9LyRpOyBkb25lCisJaW5zdGFsbCAtZCAke0R9JHtiYXNlX3NiaW5kaXJ9CisJWyAiJHtzYmluZGlyfSIgIT0gIiR7YmFzZV9zYmluZGlyfSIgXSAmJiBmb3IgaSBpbiAke2Jhc2Vfc2JpbmRpcl9wcm9nc307IGRvIG12ICR7RH0ke3NiaW5kaXJ9LyRpICR7RH0ke2Jhc2Vfc2JpbmRpcn0vJGk7IGRvbmUKKyAgICAgICAgaWYgWyAiJHtiYXNlX3NiaW5kaXJ9IiAhPSAiJHtzYmluZGlyfSIgXTsgdGhlbgorICAgICAgICAgICAgICAgIHJtZGlyICR7RH0ke3NiaW5kaXJ9CisgICAgICAgIGZpCisKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQorICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zeXNjdGwuY29uZiAke0R9JHtzeXNjb25mZGlyfS9zeXNjdGwuY29uZgorICAgICAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCisgICAgICAgICAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zeXNjdGwuZAorICAgICAgICAgICAgICAgIGxuIC1zZiAuLi9zeXNjdGwuY29uZiAke0R9JHtzeXNjb25mZGlyfS9zeXNjdGwuZC85OS1zeXNjdGwuY29uZgorICAgICAgICBmaQorfQorCitDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9zeXNjdGwuY29uZiIKKworYmluZGlyX3Byb2dzID0gImZyZWUgcGtpbGwgcG1hcCBwZ3JlcCBwd2R4IHNraWxsIHNuaWNlIHRvcCB1cHRpbWUiCitiYXNlX2JpbmRpcl9wcm9ncyArPSAia2lsbCBwaWRvZiBwcyB3YXRjaCIKK2Jhc2Vfc2JpbmRpcl9wcm9ncyArPSAic3lzY3RsIgorCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIyMDAiCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gIiR7YmluZGlyX3Byb2dzfSAke2Jhc2VfYmluZGlyX3Byb2dzfSAke2Jhc2Vfc2JpbmRpcl9wcm9nc30iCisKK0FMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJraWxsLjEgdXB0aW1lLjEiCitBTFRFUk5BVElWRV9MSU5LX05BTUVba2lsbC4xXSA9ICIke21hbmRpcn0vbWFuMS9raWxsLjEiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdXB0aW1lLjFdID0gIiR7bWFuZGlyfS9tYW4xL3VwdGltZS4xIgorCitweXRob24gX19hbm9ueW1vdXMoKSB7CisgICAgZm9yIHByb2cgaW4gZC5nZXRWYXIoJ2Jhc2VfYmluZGlyX3Byb2dzJywgVHJ1ZSkuc3BsaXQoKToKKyAgICAgICAgZC5zZXRWYXJGbGFnKCdBTFRFUk5BVElWRV9MSU5LX05BTUUnLCBwcm9nLCAnJXMvJXMnICUgKGQuZ2V0VmFyKCdiYXNlX2JpbmRpcicsIFRydWUpLCBwcm9nKSkKKworICAgIGZvciBwcm9nIGluIGQuZ2V0VmFyKCdiYXNlX3NiaW5kaXJfcHJvZ3MnLCBUcnVlKS5zcGxpdCgpOgorICAgICAgICBkLnNldFZhckZsYWcoJ0FMVEVSTkFUSVZFX0xJTktfTkFNRScsIHByb2csICclcy8lcycgJSAoZC5nZXRWYXIoJ2Jhc2Vfc2JpbmRpcicsIFRydWUpLCBwcm9nKSkKK30KKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzYy5pbmMKaW5kZXggNjhlMDY1Ni4uOThhODQ3MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9wc21pc2MuaW5jCkBAIC0xNSw2ICsxNSw5IEBACiAKIGluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQKIAorUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsICdpcHY2JywgJycsIGQpfSIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCisKIEFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCiAKIFBBQ0tBR0VTID0rICJmdXNlciBmdXNlci1kb2Mga2lsbGFsbCBraWxsYWxsLWRvYyBwc3RyZWUgcHN0cmVlLWRvYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGEvMDAwMS1Vc2UtTkdST1VQU19NQVgtaW5zdGVhZC1vZi1OR1JPVVBTLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS8wMDAxLVVzZS1OR1JPVVBTX01BWC1pbnN0ZWFkLW9mLU5HUk9VUFMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmZiMmRhZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGEvMDAwMS1Vc2UtTkdST1VQU19NQVgtaW5zdGVhZC1vZi1OR1JPVVBTLnBhdGNoCkBAIC0wLDAgKzEsODMgQEAKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CistLS0KK0Zyb20gZmVjYTZkMmU1NWQ5OTJiYmUxNzZlZThmYWE3MzRjMTA1ZWIxYjJlMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRoZW9kb3JlIFRzJ28gPHR5dHNvQG1pdC5lZHU+CitEYXRlOiBUdWUsIDI5IE1hciAyMDE2IDIwOjQ4OjA1IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIFVzZSBOR1JPVVBTX01BWCBpbnN0ZWFkIG9mIE5HUk9VUFMKKworTkdSUk9VUFNfTUFYIGlzIHdoYXQgaXMgZGVmaW5lZCBieSBTdVN2MzsgTkdST1VQUyBpcyBub3QgZ3VhcmFudGVlZCBieQorYW55IHN0YW5kYXJkLCBidXQgaXMganVzdCBhbiBhbmNpZW50IEJTRCdpc20uICBTaW5jZSBBbmRyb2lkJ3MgYmlvbmljCitsaWJjIGhhcyB0aGUgZm9ybWVyIGJ1dCBub3QgdGhlIGxhdHRlciwgbGV0J3MgdXNlIE5HUk9VUFNfTUFYIGluc3RlYWQuCisKK1NpZ25lZC1vZmYtYnk6IFRoZW9kb3JlIFRzJ28gPHR5dHNvQG1pdC5lZHU+CitTaWduZWQtb2ZmLWJ5OiBKYW4gS2FyYSA8amFja0BzdXNlLmN6PgorLS0tCisgcXVvdGEuYyAgICB8IDUgKysrLS0KKyBxdW90YW9wcy5jIHwgNSArKystLQorIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvcXVvdGEuYyBiL3F1b3RhLmMKK2luZGV4IDA0OWRhYzQuLmUxOTVlYWQgMTAwNjQ0CistLS0gYS9xdW90YS5jCisrKysgYi9xdW90YS5jCitAQCAtNDgsNiArNDgsNyBAQAorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisrI2luY2x1ZGUgPGxpbWl0cy5oPgorICNpZmRlZiBSUEMKKyAjaW5jbHVkZSA8cnBjL3JwYy5oPgorICNpbmNsdWRlICJycXVvdGEuaCIKK0BAIC0yOTYsNyArMjk3LDcgQEAgc3RhdGljIGludCBzaG93cXVvdGFzKGludCB0eXBlLCBxaWRfdCBpZCwgaW50IG1udGNudCwgY2hhciAqKm1udCkKKyBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgeworIAlpbnQgbmdyb3VwczsKKy0JZ2lkX3QgZ2lkc2V0W05HUk9VUFNdLCAqZ2lkc2V0cDsKKysJZ2lkX3QgZ2lkc2V0W05HUk9VUFNfTUFYXSwgKmdpZHNldHA7CisgCWludCBpLCByZXQ7CisgCXN0cnVjdCBvcHRpb24gbG9uZ19vcHRzW10gPSB7CisgCQl7ICJoZWxwIiwgMCwgTlVMTCwgJ2gnIH0sCitAQCAtNDA1LDcgKzQwNiw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJCQlyZXQgfD0gc2hvd3F1b3RhcyhVU1JRVU9UQSwgZ2V0dWlkKCksIGFyZ2MsIGFyZ3YpOworIAkJaWYgKGZsYWdzICYgRkxfR1JPVVApIHsKKyAJCQluZ3JvdXBzID0gc3lzY29uZihfU0NfTkdST1VQU19NQVgpOworLQkJCWlmIChuZ3JvdXBzID4gTkdST1VQUykgeworKwkJCWlmIChuZ3JvdXBzID4gTkdST1VQU19NQVgpIHsKKyAJCQkJZ2lkc2V0cCA9IG1hbGxvYyhuZ3JvdXBzICogc2l6ZW9mKGdpZF90KSk7CisgCQkJCWlmICghZ2lkc2V0cCkKKyAJCQkJCWRpZSgxLCBfKCJHaWQgc2V0IGFsbG9jYXRpb24gKCVkKTogJXNcbiIpLCBuZ3JvdXBzLCBzdHJlcnJvcihlcnJubykpOworZGlmZiAtLWdpdCBhL3F1b3Rhb3BzLmMgYi9xdW90YW9wcy5jCitpbmRleCAxMzZhZWMzLi41OTBkYzFiIDEwMDY0NAorLS0tIGEvcXVvdGFvcHMuYworKysrIGIvcXVvdGFvcHMuYworQEAgLTUxLDYgKzUxLDcgQEAKKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPHRpbWUuaD4KKyAjaW5jbHVkZSA8Y3R5cGUuaD4KKysjaW5jbHVkZSA8bGltaXRzLmg+CisgCisgI2lmIGRlZmluZWQoUlBDKQorICNpbmNsdWRlICJycXVvdGEuaCIKK0BAIC05Nyw3ICs5OCw3IEBAIHN0cnVjdCBkcXVvdCAqZ2V0cHJpdnMocWlkX3QgaWQsIHN0cnVjdCBxdW90YV9oYW5kbGUgKipoYW5kbGVzLCBpbnQgcXVpZXQpCisgI2lmIGRlZmluZWQoQlNEX0JFSEFWSU9VUikKKyAJaW50IGosIG5ncm91cHM7CisgCXVpZF90IGV1aWQ7CistCWdpZF90IGdpZHNldFtOR1JPVVBTXSwgKmdpZHNldHA7CisrCWdpZF90IGdpZHNldFtOR1JPVVBTX01BWF0sICpnaWRzZXRwOworICNlbmRpZgorIAorIAlmb3IgKGkgPSAwOyBoYW5kbGVzW2ldOyBpKyspIHsKK0BAIC0xMTUsNyArMTE2LDcgQEAgc3RydWN0IGRxdW90ICpnZXRwcml2cyhxaWRfdCBpZCwgc3RydWN0IHF1b3RhX2hhbmRsZSAqKmhhbmRsZXMsIGludCBxdWlldCkKKyAJCQkJaWYgKGdldGV1aWQoKSA9PSAwKQorIAkJCQkJYnJlYWs7CisgCQkJCW5ncm91cHMgPSBzeXNjb25mKF9TQ19OR1JPVVBTX01BWCk7CistCQkJCWlmIChuZ3JvdXBzID4gTkdST1VQUykgeworKwkJCQlpZiAobmdyb3VwcyA+IE5HUk9VUFNfTUFYKSB7CisgCQkJCQlnaWRzZXRwID0gbWFsbG9jKG5ncm91cHMgKiBzaXplb2YoZ2lkX3QpKTsKKyAJCQkJCWlmICghZ2lkc2V0cCkgeworIAkJCQkJCWdpZDJncm91cChpZCwgbmFtZSk7CistLSAKKzIuNi4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGEvMDAwMi1BbGxvdy1idWlsZGluZy1vbi1zeXN0ZW1zLXRoYXQtZG8tbm90LWhhdmUtcnBjLWhlYWRlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS8wMDAyLUFsbG93LWJ1aWxkaW5nLW9uLXN5c3RlbXMtdGhhdC1kby1ub3QtaGF2ZS1ycGMtaGVhZGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmNlYTU0OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGEvMDAwMi1BbGxvdy1idWlsZGluZy1vbi1zeXN0ZW1zLXRoYXQtZG8tbm90LWhhdmUtcnBjLWhlYWRlLnBhdGNoCkBAIC0wLDAgKzEsMTUzIEBACitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorLS0tCitGcm9tIGYzMGUxYWRhODMyNjQ2M2NjMGFmMDQ4YWZhMDU4YmMyZjFkYzkzNzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUaGVvZG9yZSBUcydvIDx0eXRzb0BtaXQuZWR1PgorRGF0ZTogVHVlLCAyOSBNYXIgMjAxNiAyMDo0ODowNCAtMDQwMAorU3ViamVjdDogW1BBVENIXSBBbGxvdyBidWlsZGluZyBvbiBzeXN0ZW1zIHRoYXQgZG8gbm90IGhhdmUgcnBjIGhlYWRlciBmaWxlcworCitBbmRyb2lkJ3MgYmlvbmljIEMgbGlicmFyeSBkb2Vzbid0IGhhdmUgU3VuIFJQQyBzdXBwb3J0LgorCitTaWduZWQtb2ZmLWJ5OiBUaGVvZG9yZSBUcydvIDx0eXRzb0BtaXQuZWR1PgorU2lnbmVkLW9mZi1ieTogSmFuIEthcmEgPGphY2tAc3VzZS5jej4KKy0tLQorIE1ha2VmaWxlLmFtIHwgMzAgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCisgcXVvdGFvcHMuYyAgfCAgMiArKworIHNldHF1b3RhLmMgIHwgIDIgKysKKyAzIGZpbGVzIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggNmQ3ZWEwZS4uODJkYjk5ZiAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTEsNyArMSw1IEBACisgQUNMT0NBTF9BTUZMQUdTID0gLUkgbTQKKyAKKy1CVUlMVF9TT1VSQ0VTID0gcnF1b3RhLmggcnF1b3RhLmMgcnF1b3RhX2NsbnQuYworLQorIGRvY2RpciA9ICQoZGF0YWRpcikvZG9jL0BQQUNLQUdFQAorIGRvY19EQVRBID0gXAorIAlSRUFETUUubWFpbHNlcnZlciBcCitAQCAtMTIsMTEgKzEwLDYgQEAgZG9jX0RBVEEgPSBcCisgCWRvYy9xdW90YXMucHJlZm9ybWF0ZWQgXAorIAlkb2MvcXVvdGFzLTEuZXBzCisgCistcnBjc3ZjZGlyID0gJChpbmNsdWRlZGlyKS9ycGNzdmMKKy1ycGNzdmNfREFUQSA9IFwKKy0JcnF1b3RhLmggXAorLQlycXVvdGEueAorLQorIHN5c2NvbmZfREFUQSA9IFwKKyAJd2FybnF1b3RhLmNvbmYgXAorIAlxdW90YXRhYiBcCitAQCAtMzUsMTUgKzI4LDEyIEBAIG1hbl9NQU5TID0gXAorIAlxdW90YS4xIFwKKyAJcXVvdC44IFwKKyAJcmVwcXVvdGEuOCBcCistCXJwYy5ycXVvdGFkLjggXAorIAlycXVvdGEuMyBcCisgCXNldHF1b3RhLjggXAorIAl3YXJucXVvdGEuY29uZi41IFwKKyAJd2FybnF1b3RhLjggXAorIAl4cW1zdGF0cy44CisgCistQ0xFQU5GSUxFUyA9IHJxdW90YS5jIHJxdW90YS5oIHJxdW90YV9jbG50LmMKKy0KKyBTVUJESVJTID0gcG8KKyAKKyBFWFRSQV9ESVNUID0gXAorQEAgLTU1LDkgKzQ1LDE1IEBAIEVYVFJBX0RJU1QgPSBcCisgCUNoYW5nZWxvZyBcCisgCWxkYXAtc2NyaXB0cworIAorLW5vaW5zdF9MSUJSQVJJRVMgPSBcCistCWxpYnF1b3RhLmEgXAorLQlsaWJycGNjbGllbnQuYQorK25vaW5zdF9MSUJSQVJJRVMgPSBsaWJxdW90YS5hCisrCisraWYgV0lUSF9SUEMKKytycGNzdmNkaXIgPSAkKGluY2x1ZGVkaXIpL3JwY3N2YworK3JwY3N2Y19EQVRBID0gXAorKwlycXVvdGEuaCBcCisrCXJxdW90YS54CisrCisrbm9pbnN0X0xJQlJBUklFUyArPSBsaWJycGNjbGllbnQuYQorIAorIGxpYnJwY2NsaWVudF9hX1NPVVJDRVMgPSBcCisgCXJxdW90YS5jIFwKK0BAIC02Nyw4ICs2MywxMCBAQCBsaWJycGNjbGllbnRfYV9TT1VSQ0VTID0gXAorIAlycXVvdGFfY2xudC5jCisgbGlicnBjY2xpZW50X2FfQ0ZMQUdTID0gLVduby11bnVzZWQKKyAKKy1pZiBXSVRIX1JQQworIFJQQ0xJQlMgPSBsaWJycGNjbGllbnQuYQorK0JVSUxUX1NPVVJDRVMgPSBycXVvdGEuaCBycXVvdGEuYyBycXVvdGFfY2xudC5jCisrQ0xFQU5GSUxFUyA9IHJxdW90YS5jIHJxdW90YS5oIHJxdW90YV9jbG50LmMKKyttYW5fTUFOUyArPSBycGMucnF1b3RhZC44CisgZW5kaWYKKyAKKyBsaWJxdW90YV9hX1NPVVJDRVMgPSBcCitAQCAtMjE3LDYgKzIxNSw3IEBAIGNvbnZlcnRxdW90YV9MREFERCA9IFwKKyAJbGlicXVvdGEuYSBcCisgCSQoUlBDTElCUykKKyAKKytpZiBXSVRIX1JQQworIHJwY19ycXVvdGFkX1NPVVJDRVMgPSBcCisgCXJxdW90YV9zZXJ2ZXIuYyBcCisgCXJxdW90YV9zdmMuYyBcCitAQCAtMjI1LDYgKzIyNCw3IEBAIHJwY19ycXVvdGFkX0xEQUREID0gXAorIAlsaWJxdW90YS5hIFwKKyAJJChXUkFQX0xJQlMpIFwKKyAJJChSUENMSUJTKQorK2VuZGlmCisgCisgcXVvdGFfbmxkX1NPVVJDRVMgPSBxdW90YV9ubGQuYworIHF1b3RhX25sZF9DRkxBR1MgPSBcCitAQCAtMjM2LDYgKzIzNiw3IEBAIHF1b3RhX25sZF9MREFERCA9IFwKKyAJJChEQlVTX0xJQlMpIFwKKyAJJChMSUJOTDNfTElCUykKKyAKKytpZiBXSVRIX1JQQworICMgLS0tLS0tLS0tLS0tLS0tLS0tCisgIyBScGNnZW4gY29udmVyc2lvbnMKKyAjIC0tLS0tLS0tLS0tLS0tLS0tLQorQEAgLTI1MCw2ICsyNTEsNyBAQCBxdW90YV9ubGRfTERBREQgPSBcCisgcnF1b3RhX2NsbnQuYzogcnF1b3RhLngKKyAJQHJtIC1mICRACisgCUAkKFJQQ0dFTikgLWwgLW8gJEAgJDwKKytlbmRpZgorIAorICMgLS0tLS0tLS0KKyAjIFF1b3Rhb2ZmCitkaWZmIC0tZ2l0IGEvcXVvdGFvcHMuYyBiL3F1b3Rhb3BzLmMKK2luZGV4IDQ3ZWY5YTcuLjEzNmFlYzMgMTAwNjQ0CistLS0gYS9xdW90YW9wcy5jCisrKysgYi9xdW90YW9wcy5jCitAQCAtMzQsNyArMzQsOSBAQAorIAorICNpbmNsdWRlICJjb25maWcuaCIKKyAKKysjaWYgZGVmaW5lZChSUEMpCisgI2luY2x1ZGUgPHJwYy9ycGMuaD4KKysjZW5kaWYKKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisgI2luY2x1ZGUgPHN5cy9maWxlLmg+CitkaWZmIC0tZ2l0IGEvc2V0cXVvdGEuYyBiL3NldHF1b3RhLmMKK2luZGV4IDUxZDdiM2MuLjhlY2Q5YzMgMTAwNjQ0CistLS0gYS9zZXRxdW90YS5jCisrKysgYi9zZXRxdW90YS5jCitAQCAtNyw3ICs3LDkgQEAKKyAKKyAjaW5jbHVkZSAiY29uZmlnLmgiCisgCisrI2lmIGRlZmluZWQoUlBDKQorICNpbmNsdWRlIDxycGMvcnBjLmg+CisrI2VuZGlmCisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorLS0gCisyLjYuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhLzAwMDMtRG9uLXQtYnVpbGQtcnBjLnJxdW90YWQtd2hlbi1kaXNhYmxlLXJwYy13YXMtcmVxdWVzdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGEvMDAwMy1Eb24tdC1idWlsZC1ycGMucnF1b3RhZC13aGVuLWRpc2FibGUtcnBjLXdhcy1yZXF1ZXN0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0NTUzODQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhLzAwMDMtRG9uLXQtYnVpbGQtcnBjLnJxdW90YWQtd2hlbi1kaXNhYmxlLXJwYy13YXMtcmVxdWVzdC5wYXRjaApAQCAtMCwwICsxLDYyIEBACitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorLS0tCitGcm9tIGM3YTc2MjM3ZTdhNTFhNjlkMDIzNmViZmMxOTFlNDYyZjgwNWNmNGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBMYXJzIFdlbmRsZXIgPHBvbHlub21pYWwtY0BnZW50b28ub3JnPgorRGF0ZTogTW9uLCAxNSBGZWIgMjAxNiAxNDo0MjoxNCArMDEwMAorU3ViamVjdDogW1BBVENIXSBEb24ndCBidWlsZCBycGMucnF1b3RhZCB3aGVuIC0tZGlzYWJsZS1ycGMgd2FzIHJlcXVlc3RlZC4KKworVGhpcyBmaXhlcyBhIGJ1Y2ggb2YgdW5kZWZpbmVkIHJlZmVyZW5jZXM6CisKK3g4Nl82NC1wYy1saW51eC1nbnUtZ2NjICAtbWFyY2g9bmF0aXZlIC1tdHVuZT1uYXRpdmUgLU8yIC1waXBlIC1EX0dOVV9TT1VSQ0UgLVdhCitsbCAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgLURfRklMRV9PRkZTRVRfQklUUz02NCAtZlBJQyAtcGllIC1XbCwtTzEgLVdsLC0taGFzaC1zdAoreWxlPWdudSAtV2wsLS1zb3J0LWNvbW1vbiAtV2wsLS1hcy1uZWVkZWQgLW8gcnBjLnJxdW90YWQgcnF1b3RhX3NlcnZlci5vIHJxdW90YV8KK3N2Yy5vIHN2Y19zb2NrZXQubyBsaWJxdW90YS5hCitycXVvdGFfc3ZjLm86IEluIGZ1bmN0aW9uIGBycXVvdGFwcm9nXzInOgorcnF1b3RhX3N2Yy5jOigudGV4dCsweDFkMyk6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHhkcl9zZXRxdW90YV9yc2x0JworcnF1b3RhX3N2Yy5jOigudGV4dCsweDFkYSk6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHhkcl9leHRfc2V0cXVvdGFfYXJncycKK3JxdW90YV9zdmMuYzooLnRleHQrMHgyYjIpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB4ZHJfc2V0cXVvdGFfcnNsdCcKK3JxdW90YV9zdmMuYzooLnRleHQrMHgyYjkpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB4ZHJfZXh0X3NldHF1b3RhX2FyZ3MnCitycXVvdGFfc3ZjLmM6KC50ZXh0KzB4MmZmKTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgeGRyX2dldHF1b3RhX3JzbHQnCitycXVvdGFfc3ZjLmM6KC50ZXh0KzB4MzA2KTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgeGRyX2V4dF9nZXRxdW90YV9hcmdzJworcnF1b3RhX3N2Yy5jOigudGV4dCsweDMxYSk6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHhkcl9nZXRxdW90YV9yc2x0JworcnF1b3RhX3N2Yy5jOigudGV4dCsweDMyMSk6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHhkcl9leHRfZ2V0cXVvdGFfYXJncycKK3JxdW90YV9zdmMubzogSW4gZnVuY3Rpb24gYHJxdW90YXByb2dfMSc6CitycXVvdGFfc3ZjLmM6KC50ZXh0KzB4M2YzKTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgeGRyX3NldHF1b3RhX3JzbHQnCitycXVvdGFfc3ZjLmM6KC50ZXh0KzB4M2ZhKTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgeGRyX3NldHF1b3RhX2FyZ3MnCitycXVvdGFfc3ZjLmM6KC50ZXh0KzB4NGQyKTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgeGRyX3NldHF1b3RhX3JzbHQnCitycXVvdGFfc3ZjLmM6KC50ZXh0KzB4NGQ5KTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgeGRyX3NldHF1b3RhX2FyZ3MnCitycXVvdGFfc3ZjLmM6KC50ZXh0KzB4NTFmKTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgeGRyX2dldHF1b3RhX3JzbHQnCitycXVvdGFfc3ZjLmM6KC50ZXh0KzB4NTI2KTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgeGRyX2dldHF1b3RhX2FyZ3MnCitycXVvdGFfc3ZjLmM6KC50ZXh0KzB4NTNhKTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgeGRyX2dldHF1b3RhX3JzbHQnCitycXVvdGFfc3ZjLmM6KC50ZXh0KzB4NTQxKTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgeGRyX2dldHF1b3RhX2FyZ3MnCitjb2xsZWN0MjogZXJyb3I6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKK01ha2VmaWxlOjkwMTogcmVjaXBlIGZvciB0YXJnZXQgJ3JwYy5ycXVvdGFkJyBmYWlsZWQKKworU2lnbmVkLW9mZi1ieTogTGFycyBXZW5kbGVyIDxwb2x5bm9taWFsLWNAZ2VudG9vLm9yZz4KK1NpZ25lZC1vZmYtYnk6IEphbiBLYXJhIDxqYWNrQHN1c2UuY3o+CistLS0KKyBNYWtlZmlsZS5hbSB8IDUgKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCA3N2Y4NDAwLi42ZDdlYTBlIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtMTE2LDggKzExNiwxMSBAQCBzYmluX1BST0dSQU1TID0gXAorIAl4cW1zdGF0cyBcCisgCWVkcXVvdGEgXAorIAlzZXRxdW90YSBcCistCWNvbnZlcnRxdW90YSBcCisrCWNvbnZlcnRxdW90YQorK2lmIFdJVEhfUlBDCisrc2Jpbl9QUk9HUkFNUyArPSBcCisgCXJwYy5ycXVvdGFkCisrZW5kaWYKKyBpZiBXSVRIX05FVExJTksKKyBzYmluX1BST0dSQU1TICs9IFwKKyAJcXVvdGFfbmxkCistLSAKKzIuNi4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGEvMDAwNC1GaXgtd2FybmluZ3MtZHVlLXRvLW1pc3Npbmctc3RkbGliLmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhLzAwMDQtRml4LXdhcm5pbmdzLWR1ZS10by1taXNzaW5nLXN0ZGxpYi5oLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkYjRjZWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhLzAwMDQtRml4LXdhcm5pbmdzLWR1ZS10by1taXNzaW5nLXN0ZGxpYi5oLnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CistLS0KK0Zyb20gYzRiNTZlZTU4YjliNzZkMjU5ODUzNWNmNjEwOWEyN2IyMmU2MGFiZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEphbiBLYXJhIDxqYWNrQHN1c2UuY3o+CitEYXRlOiBXZWQsIDMwIE1hciAyMDE2IDEwOjIxOjEzICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCB3YXJuaW5ncyBkdWUgdG8gbWlzc2luZyBzdGRsaWIuaAorCitXaGVuIGNvbXBpbGluZyB3aXRob3V0IFJQQywgd2UgZG8gbm90IGdldCBzdGRsaWIuaCBhdXRvbWF0aWNhbGx5CitpbmNsdWRlZCB2aWEgb3RoZXIgaW5jbHVkZXMgYW5kIHRodXMgbWlzcyBzb21lIGZ1bmN0aW9uIGRlZmluaXRpb25zLgorSW5jbHVkZSBzdGRsaWIuaCBleHBsaWNpdGVseS4KKworU2lnbmVkLW9mZi1ieTogSmFuIEthcmEgPGphY2tAc3VzZS5jej4KKy0tLQorIHF1b3Rhb3BzLmMgfCAxICsKKyBzZXRxdW90YS5jIHwgMSArCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3F1b3Rhb3BzLmMgYi9xdW90YW9wcy5jCitpbmRleCA1OTBkYzFiLi41NmNmNjIyIDEwMDY0NAorLS0tIGEvcXVvdGFvcHMuYworKysrIGIvcXVvdGFvcHMuYworQEAgLTUyLDYgKzUyLDcgQEAKKyAjaW5jbHVkZSA8dGltZS5oPgorICNpbmNsdWRlIDxjdHlwZS5oPgorICNpbmNsdWRlIDxsaW1pdHMuaD4KKysjaW5jbHVkZSA8c3RkbGliLmg+CisgCisgI2lmIGRlZmluZWQoUlBDKQorICNpbmNsdWRlICJycXVvdGEuaCIKK2RpZmYgLS1naXQgYS9zZXRxdW90YS5jIGIvc2V0cXVvdGEuYworaW5kZXggOGVjZDljMy4uNDIxNjMxZSAxMDA2NDQKKy0tLSBhL3NldHF1b3RhLmMKKysrKyBiL3NldHF1b3RhLmMKK0BAIC0xNyw2ICsxNyw3IEBACisgI2luY2x1ZGUgPGdldG9wdC5oPgorICNpbmNsdWRlIDx0aW1lLmg+CisgI2luY2x1ZGUgPGN0eXBlLmg+CisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorIAorICNpZiBkZWZpbmVkKFJQQykKKyAjaW5jbHVkZSAicnF1b3RhLmgiCistLSAKKzIuNi4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGEvZmNudGwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhL2ZjbnRsLnBhdGNoCmluZGV4IDI3ZTYwZmQuLjJkMzc5NzEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGEvZmNudGwucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS9mY250bC5wYXRjaApAQCAtNTksMjAgKzU5LDYgQEAKICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAgI2luY2x1ZGUgInF1b3RhX3RyZWUuaCIKICAKLUluZGV4OiBxdW90YS10b29scy9xdW90YW9wcy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcXVvdGEtdG9vbHMub3JpZy9xdW90YW9wcy5jCi0rKysgcXVvdGEtdG9vbHMvcXVvdGFvcHMuYwotQEAgLTM0LDcgKzM0LDkgQEAKLSAKLSAjaW5jbHVkZSAiY29uZmlnLmgiCi0gCi0rI2lmIGRlZmluZWQoUlBDKQotICNpbmNsdWRlIDxycGMvcnBjLmg+Ci0rI2VuZGlmCi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotICNpbmNsdWRlIDxzeXMvZmlsZS5oPgogSW5kZXg6IHF1b3RhLXRvb2xzL3JxdW90YV9jbGllbnQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIHF1b3RhLXRvb2xzLm9yaWcvcnF1b3RhX2NsaWVudC5jCkBAIC05NywxNyArODMsMyBAQAogICNpbmNsdWRlICJjb21tb24uaCIKICAjaW5jbHVkZSAicXVvdGFpby5oIgogICNpbmNsdWRlICJxdW90YXN5cy5oIgotSW5kZXg6IHF1b3RhLXRvb2xzL3NldHF1b3RhLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBxdW90YS10b29scy5vcmlnL3NldHF1b3RhLmMKLSsrKyBxdW90YS10b29scy9zZXRxdW90YS5jCi1AQCAtNyw3ICs3LDkgQEAKLSAKLSAjaW5jbHVkZSAiY29uZmlnLmgiCi0gCi0rI2lmIGRlZmluZWQoUlBDKQotICNpbmNsdWRlIDxycGMvcnBjLmg+Ci0rI2VuZGlmCi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxzdGRpby5oPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YV80LjAzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YV80LjAzLmJiCmluZGV4IDRhOTgwNDYuLjIyYWFiNDEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGFfNC4wMy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhXzQuMDMuYmIKQEAgLTEyLDYgKzEyLDEwIEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1hY2NpZGVudGFseS1vdmVycmlkZS1jb21tYW5kbGluZS1wYXNzZWQtQ0ZMQUcucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vZmNudGwucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vcmVtb3ZlX25vbl9wb3NpeF90eXBlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1OR1JPVVBTX01BWC1pbnN0ZWFkLW9mLU5HUk9VUFMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1BbGxvdy1idWlsZGluZy1vbi1zeXN0ZW1zLXRoYXQtZG8tbm90LWhhdmUtcnBjLWhlYWRlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtRG9uLXQtYnVpbGQtcnBjLnJxdW90YWQtd2hlbi1kaXNhYmxlLXJwYy13YXMtcmVxdWVzdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LUZpeC13YXJuaW5ncy1kdWUtdG8tbWlzc2luZy1zdGRsaWIuaC5wYXRjaCBcCiAgICAgICAgICAgIgogU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vcmVwbGFjZV9nZXRycGNieW51bWJlcl9yLnBhdGNoIgogCkBAIC0yNSw4ICsyOSw4IEBACiAKIGluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBnZXR0ZXh0IHBrZ2NvbmZpZwogCi1DRkxBR1MgKz0gIi1JJHtTVEFHSU5HX0lOQ0RJUn0vdGlycGMiCi1MREZMQUdTICs9ICItbHRpcnBjIgorQ0ZMQUdTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdycGMnLCAnLUkke1NUQUdJTkdfSU5DRElSfS90aXJwYycsICcnLCBkKX0iCitMREZMQUdTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdycGMnLCAnLWx0aXJwYycsICcnLCBkKX0iCiBBU05FRURFRCA9ICIiCiAKIFBBQ0tBR0VDT05GSUcgPz89ICJ0Y3Atd3JhcHBlcnMgcnBjIGJzZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbi8wMDAxLUZpeC1zdGFjay1vdmVyZmxvdy1kdWUtdG8tdG9vLWRlZXAtcmVjdXJzaW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuLzAwMDEtRml4LXN0YWNrLW92ZXJmbG93LWR1ZS10by10b28tZGVlcC1yZWN1cnNpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhYzgyMGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuLzAwMDEtRml4LXN0YWNrLW92ZXJmbG93LWR1ZS10by10b28tZGVlcC1yZWN1cnNpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi1CdWc6IDQ1NzEzCi0KLUhvdyB0byByZXByb2R1Y2U6Ci1SdW4gdGhpcyBjb21tYW5kIGluc2lkZSBzY3JlZW4KLSQgcHJpbnRmICdceDFiWzEwMDAwMDAwVCcKLQotc2NyZWVuIHdpbGwgcmVjdXJzaXZlbHkgY2FsbCBNU2Nyb2xsViB0byBkZXB0aCBuLzI1Ni4KLVRoaXMgaXMgdGltZSBjb25zdW1pbmcgYW5kIHdpbGwgb3ZlcmZsb3cgc3RhY2sgaWYgbiBpcyBodWdlLgotCi1GaXhlcyBDVkUtMjAxNS02ODA2Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTUtNjgwNgotCi1TaWduZWQtb2ZmLWJ5OiBLdWFuZy1jaGUgV3UgPGtjd3VAY3NpZS5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBBbWFkZXVzeiBTxYJhd2nFhHNraSA8YW1hZGVAYXNtYmxyLm5ldD4KLVNpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgotLS0tCi1kaWZmIC1OYXVyIHNjcmVlbi00LjMuMS1vcmlnL2Fuc2kuYyBzY3JlZW4tNC4zLjEvYW5zaS5jCi0tLS0gc2NyZWVuLTQuMy4xLW9yaWcvYW5zaS5jCTIwMTUtMDYtMjkgMDA6MjI6NTUuMDAwMDAwMDAwICswMzAwCi0rKysgc2NyZWVuLTQuMy4xL2Fuc2kuYwkyMDE1LTEwLTA2IDEzOjEzOjU4LjI5NzY0ODAzOSArMDMwMAotQEAgLTI1MDIsMTMgKzI1MDIsMTMgQEAKLSAgICAgcmV0dXJuOwotICAgaWYgKG4gPiAwKQotICAgICB7Ci0rICAgICAgaWYgKHllIC0geXMgKyAxIDwgbikKLSsJICBuID0geWUgLSB5cyArIDE7Ci0gICAgICAgaWYgKG4gPiAyNTYpCi0gCXsKLSAJICBNU2Nyb2xsVihwLCBuIC0gMjU2LCB5cywgeWUsIGJjZSk7Ci0gCSAgbiA9IDI1NjsKLSAJfQotLSAgICAgIGlmICh5ZSAtIHlzICsgMSA8IG4pCi0tCW4gPSB5ZSAtIHlzICsgMTsKLSAjaWZkZWYgQ09QWV9QQVNURQotICAgICAgIGlmIChjb21wYWN0aGlzdCkKLSAJewotQEAgLTI1NjIsMTUgKzI1NjIsMTUgQEAKLSAgICAgfQotICAgZWxzZQotICAgICB7Ci0tICAgICAgaWYgKG4gPCAtMjU2KQotLQl7Ci0tCSAgTVNjcm9sbFYocCwgbiArIDI1NiwgeXMsIHllLCBiY2UpOwotLQkgIG4gPSAtMjU2OwotLQl9Ci0gICAgICAgbiA9IC1uOwotICAgICAgIGlmICh5ZSAtIHlzICsgMSA8IG4pCi0gCW4gPSB5ZSAtIHlzICsgMTsKLSAKLSsgICAgICBpZiAobiA+IDI1NikKLSsgICAgICB7Ci0rICAgICAgICBNU2Nyb2xsVihwLCAtIChuIC0gMjU2KSwgeXMsIHllLCBiY2UpOwotKyAgICAgICAgbiA9IDI1NjsKLSsgICAgICB9Ci0gICAgICAgbWwgPSBwLT53X21saW5lcyArIHllOwotICAgICAgIC8qIENsZWFyIGxpbmVzICovCi0gICAgICAgZm9yIChpID0geWU7IGkgPiB5ZSAtIG47IGktLSwgbWwtLSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbi8wMDAxLWZpeC1mb3ItbXVsdGlqb2ItYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW4vMDAwMS1maXgtZm9yLW11bHRpam9iLWJ1aWxkLnBhdGNoCmluZGV4IDQwZWNlZjAuLmZiZGIwZWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbi8wMDAxLWZpeC1mb3ItbXVsdGlqb2ItYnVpbGQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuLzAwMDEtZml4LWZvci1tdWx0aWpvYi1idWlsZC5wYXRjaApAQCAtMSwzICsxLDEzIEBACitGcm9tIDc5YWQyODg1ZTI2NjMxMDc3ZGQ2YjhhZWJlMTdhZTk1YjM4MTMzYTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAyNiBKdWwgMjAxNiAxNDoyMzo1OSArMDgwMAorU3ViamVjdDogW1BBVENIXSBmaXggZm9yIG11bHRpam9iIGJ1aWxkCisKK21ha2Ugc3VyZSB0aGF0IGNvbW0uc2ggc2NyaXB0IGdlbmVyYXRlcyBjb21tLmggaGVhZGVyIGJlZm9yZSBkb2luZworYW55dGhpbmcgZWxzZQorCitTaWduZWQtb2ZmLWJ5OiBBbWFkZXVzeiBTYXdpc2tpIDxhbWFkZUBhc21ibHIubmV0PgorCiBVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CiAKIEJhY2twb3J0IHBhdGNoIHRvIGZpeCBwYXJhbGxlbCBidWlsZCBmYWlsdXJlIGFuZCB1cGRhdGUgY29udGV4dCB0byBtYWtlIHBhdGNoCkBAIC02LDI1ICsxNiwxMyBAQAogaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2NnaXQvc2NyZWVuLmdpdC9jb21taXQ/aWQ9YzBkZTZkZAogCiBTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CiAtLS0KLUZyb20gYzBkZTZkZDc5NzBiMmM3YjQyNmE1YzM5ZGNiYzMxYzJiZWY4NzIzMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9BbWFkZXVzej0yMFM9QzU9ODJhd2k9QzU9ODRza2k/PSA8YW1hZGVAYXNtYmxyLm5ldD4KLURhdGU6IFRodSwgMiBKYW4gMjAxNCAxODoxODowNiArMDEwMAotU3ViamVjdDogW1BBVENIXSBmaXggZm9yIG11bHRpam9iIGJ1aWxkCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLW1ha2Ugc3VyZSB0aGF0IGNvbW0uc2ggc2NyaXB0IGdlbmVyYXRlcyBjb21tLmggaGVhZGVyIGJlZm9yZSBkb2luZwotYW55dGhpbmcgZWxzZQotCi1TaWduZWQtb2ZmLWJ5OiBBbWFkZXVzeiBTxYJhd2nFhHNraSA8YW1hZGVAYXNtYmxyLm5ldD4KLS0tLQotIE1ha2VmaWxlLmluIHwgMTAgKysrKystLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisgTWFrZWZpbGUuaW4gfCA4ICsrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KLWluZGV4IGNlODZjYmMuLmRlYTE2ZDggMTAwNjQ0CitpbmRleCBhY2E3ZGEzLi4zNjA3NzExIDEwMDY0NAogLS0tIGEvTWFrZWZpbGUuaW4KICsrKyBiL01ha2VmaWxlLmluCiBAQCAtMjk4LDcgKzI5OCw3IEBAIHNlYXJjaC5vOiBsYXlvdXQuaCB2aWV3cG9ydC5oIGNhbnZhcy5oIHNlYXJjaC5jIGNvbmZpZy5oIHNjcmVlbi5oIG9zLmggb3NkZWYuaCBhCkBAIC01MSw4ICs0OSwxMCBAQAogICBicmFpbGxlLmgKIC1saXN0X2dlbmVyaWMubzogbGlzdF9nZW5lcmljLmggbGlzdF9nZW5lcmljLmMgbGF5ZXIuaCBzY3JlZW4uaCBvc2RlZi5oCiAtbGlzdF9kaXNwbGF5Lm86IGxpc3RfZ2VuZXJpYy5oIGxpc3RfZGlzcGxheS5jIGxheWVyLmggc2NyZWVuLmggb3NkZWYuaAotLWxpc3Rfd2luZG93Lm86IGxpc3RfZ2VuZXJpYy5oIGxpc3Rfd2luZG93LmMgd2luZG93LmggbGF5ZXIuaCBzY3JlZW4uaCBvc2RlZi5oCiArbGlzdF9nZW5lcmljLm86IGxpc3RfZ2VuZXJpYy5oIGxpc3RfZ2VuZXJpYy5jIGxheWVyLmggc2NyZWVuLmggb3NkZWYuaCBjb21tLmgKICtsaXN0X2Rpc3BsYXkubzogbGlzdF9nZW5lcmljLmggbGlzdF9kaXNwbGF5LmMgbGF5ZXIuaCBzY3JlZW4uaCBvc2RlZi5oIGNvbW0uaAotK2xpc3Rfd2luZG93Lm86IGxpc3RfZ2VuZXJpYy5oIGxpc3Rfd2luZG93LmMgd2luZG93LmggbGF5ZXIuaCBzY3JlZW4uaCBvc2RlZi5oIGNvbW0uaAorIGxpc3Rfd2luZG93Lm86IGxpc3RfZ2VuZXJpYy5oIGxpc3Rfd2luZG93LmMgd2luZG93LmggbGF5ZXIuaCBzY3JlZW4uaCBvc2RlZi5oIGNvbW0uaAogIAorLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW5fNC4zLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW5fNC4zLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwZDg3OGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuXzQuMy4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotU1VNTUFSWSA9ICJNdWx0aXBsZXhpbmcgdGVybWluYWwgbWFuYWdlciIKLURFU0NSSVBUSU9OID0gIlNjcmVlbiBpcyBhIGZ1bGwtc2NyZWVuIHdpbmRvdyBtYW5hZ2VyIFwKLXRoYXQgbXVsdGlwbGV4ZXMgYSBwaHlzaWNhbCB0ZXJtaW5hbCBiZXR3ZWVuIHNldmVyYWwgXAotcHJvY2Vzc2VzLCB0eXBpY2FsbHkgaW50ZXJhY3RpdmUgc2hlbGxzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9zY3JlZW4vIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL3NhdmFubmFoLmdudS5vcmcvYnVncy8/ZnVuYz1hZGRpdGVtJmdyb3VwPXNjcmVlbiIKLQotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotCi1MSUNFTlNFID0gIkdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NjcmVlbi5oO2VuZGxpbmU9MjY7bWQ1PTM5NzExNDI5ODkyODlhODE5OGE1NDQyMjA3MDNjMmJmIgotCi1ERVBFTkRTID0gIm5jdXJzZXMgXAotICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCi1SREVQRU5EU18ke1BOfSA9ICJiYXNlLWZpbGVzIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vc2NyZWVuL3NjcmVlbi0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vZml4LXBhcmFsbGVsLW1ha2UucGF0Y2ggXAotICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdmaWxlOi8vc2NyZWVuLnBhbScsICcnLCBkKX0gXAotICAgICAgICAgICBmaWxlOi8vUmVtb3ZlLXJlZHVuZGFudC1jb21waWxlci1zYW5pdHktY2hlY2tzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL1Byb3ZpZGUtY3Jvc3MtY29tcGlsZS1hbHRlcm5hdGl2ZXMtZm9yLUFDX1RSWV9SVU4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vU2tpcC1ob3N0LWZpbGUtc3lzdGVtLWNoZWNrcy13aGVuLWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9Bdm9pZC1taXMtaWRlbnRpZnlpbmctc3lzdGVtcy1hcy1TVlI0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LWZvci1tdWx0aWpvYi1idWlsZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbW0uaC1ub3ctZGVwZW5kcy1vbi10ZXJtLmgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtc3RhY2stb3ZlcmZsb3ctZHVlLXRvLXRvby1kZWVwLXJlY3Vyc2lvbi5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNWJiM2IwZmYyNjc0ZTI5Mzc4YzMxYWQzNDExMTcwYWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmE0MDQ5ZjhhZWUyODNkZTYyZTI4M2Q0MjdmMmNmZDM1ZDZjMzY5YjQwZjdmNDVmOTQ3ZGJmZDkxNTY5OWQ2MyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbwotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1t1dGVtcHRlcl0gPSAiYWNfY3ZfaGVhZGVyX3V0ZW1wdGVyX2g9eWVzLGFjX2N2X2hlYWRlcl91dGVtcHRlcl9oPW5vLGxpYnV0ZW1wdGVyLCIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC1wdHktbW9kZT0wNjIwIC0td2l0aC1wdHktZ3JvdXA9NSBcCi0gICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICctLWVuYWJsZS1wYW0nLCAnLS1kaXNhYmxlLXBhbScsIGQpfSIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCWlmIFsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3BhbScsICcnLCBkKX0iID0gInBhbSIgXTsgdGhlbgotCQlpbnN0YWxsIC1EIC1tIDY0NCAke1dPUktESVJ9L3NjcmVlbi5wYW0gJHtEfS8ke3N5c2NvbmZkaXJ9L3BhbS5kL3NjcmVlbgotCWZpCi19Ci0KLXBrZ19wb3N0aW5zdF8ke1BOfSAoKSB7Ci0JZ3JlcCAtcSAiXiR7YmluZGlyfS9zY3JlZW4kIiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzIHx8IGVjaG8gJHtiaW5kaXJ9L3NjcmVlbiA+PiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzCi19Ci0KLXBrZ19wb3N0cm1fJHtQTn0gKCkgewotCXByaW50ZiAiJChncmVwIC12ICJeJHtiaW5kaXJ9L3NjcmVlbiQiICREJHtzeXNjb25mZGlyfS9zaGVsbHMpXG4iID4gJEQke3N5c2NvbmZkaXJ9L3NoZWxscwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuXzQuNC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuXzQuNC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2OWJhYzEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW5fNC40LjAuYmIKQEAgLTAsMCArMSw1MiBAQAorU1VNTUFSWSA9ICJNdWx0aXBsZXhpbmcgdGVybWluYWwgbWFuYWdlciIKK0RFU0NSSVBUSU9OID0gIlNjcmVlbiBpcyBhIGZ1bGwtc2NyZWVuIHdpbmRvdyBtYW5hZ2VyIFwKK3RoYXQgbXVsdGlwbGV4ZXMgYSBwaHlzaWNhbCB0ZXJtaW5hbCBiZXR3ZWVuIHNldmVyYWwgXAorcHJvY2Vzc2VzLCB0eXBpY2FsbHkgaW50ZXJhY3RpdmUgc2hlbGxzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9zY3JlZW4vIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL3NhdmFubmFoLmdudS5vcmcvYnVncy8/ZnVuYz1hZGRpdGVtJmdyb3VwPXNjcmVlbiIKKworU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorCitMSUNFTlNFID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NjcmVlbi5oO2VuZGxpbmU9MjY7bWQ1PTM5NzExNDI5ODkyODlhODE5OGE1NDQyMjA3MDNjMmJmIgorCitERVBFTkRTID0gIm5jdXJzZXMgXAorICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCitSREVQRU5EU18ke1BOfSA9ICJiYXNlLWZpbGVzIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vc2NyZWVuL3NjcmVlbi0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vZml4LXBhcmFsbGVsLW1ha2UucGF0Y2ggXAorICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdmaWxlOi8vc2NyZWVuLnBhbScsICcnLCBkKX0gXAorICAgICAgICAgICBmaWxlOi8vUmVtb3ZlLXJlZHVuZGFudC1jb21waWxlci1zYW5pdHktY2hlY2tzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL1Byb3ZpZGUtY3Jvc3MtY29tcGlsZS1hbHRlcm5hdGl2ZXMtZm9yLUFDX1RSWV9SVU4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vU2tpcC1ob3N0LWZpbGUtc3lzdGVtLWNoZWNrcy13aGVuLWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9Bdm9pZC1taXMtaWRlbnRpZnlpbmctc3lzdGVtcy1hcy1TVlI0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItY29tbS5oLW5vdy1kZXBlbmRzLW9uLXRlcm0uaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1mb3ItbXVsdGlqb2ItYnVpbGQucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImQyNmUxMWEzNjQ4YzJiMTFhYWVmYTIxNWE1NWRmZDM5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImVmNzIyYTU0NzU5YTNiZjIzYWFkMjcyYmJmMzNjNDE0YzEwNzhjYWQ2YmNkOTgyZmFkYTkzYzBkNzkxNzIxOGIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbdXRlbXB0ZXJdID0gImFjX2N2X2hlYWRlcl91dGVtcHRlcl9oPXllcyxhY19jdl9oZWFkZXJfdXRlbXB0ZXJfaD1ubyxsaWJ1dGVtcHRlciwiCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtcHR5LW1vZGU9MDYyMCAtLXdpdGgtcHR5LWdyb3VwPTUgXAorICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLS1lbmFibGUtcGFtJywgJy0tZGlzYWJsZS1wYW0nLCBkKX0iCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlpZiBbICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdwYW0nLCAnJywgZCl9IiA9ICJwYW0iIF07IHRoZW4KKwkJaW5zdGFsbCAtRCAtbSA2NDQgJHtXT1JLRElSfS9zY3JlZW4ucGFtICR7RH0vJHtzeXNjb25mZGlyfS9wYW0uZC9zY3JlZW4KKwlmaQorfQorCitwa2dfcG9zdGluc3RfJHtQTn0gKCkgeworCWdyZXAgLXEgIl4ke2JpbmRpcn0vc2NyZWVuJCIgJEQke3N5c2NvbmZkaXJ9L3NoZWxscyB8fCBlY2hvICR7YmluZGlyfS9zY3JlZW4gPj4gJEQke3N5c2NvbmZkaXJ9L3NoZWxscworfQorCitwa2dfcG9zdHJtXyR7UE59ICgpIHsKKwlwcmludGYgIiQoZ3JlcCAtdiAiXiR7YmluZGlyfS9zY3JlZW4kIiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzKVxuIiA+ICREJHtzeXNjb25mZGlyfS9zaGVsbHMKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2VkL3NlZC00LjEuMi9zZWQtNC4xLjJfZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkLTQuMS4yL3NlZC00LjEuMl9maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2gKaW5kZXggODA1OTQwNi4uYzdjMGFhMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkLTQuMS4yL3NlZC00LjEuMl9maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkLTQuMS4yL3NlZC00LjEuMl9maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2gKQEAgLTYsNyArNiw3IEBACiB8IG1ha2VbMV06IG1rZGlyX3BAOiBDb21tYW5kIG5vdCBmb3VuZAogfCBtYWtlWzFdOiAqKiogW2luc3RhbGwtZGF0YS15ZXNdIEVycm9yIDEyNwogCi1TaWduZWQtT2ZmLUJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KIDIwMTIvMDcvMTMKIAogSW5kZXg6IHNlZC00LjEuMi9pbnRsL01ha2VmaWxlLmluCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWQtNC4yLjIvc2VkLWFkZC1wdGVzdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2VkL3NlZC00LjIuMi9zZWQtYWRkLXB0ZXN0LnBhdGNoCmluZGV4IDEwNWU4YjcuLjAyOTM5MDAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2VkL3NlZC00LjIuMi9zZWQtYWRkLXB0ZXN0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2VkL3NlZC00LjIuMi9zZWQtYWRkLXB0ZXN0LnBhdGNoCkBAIC01NCw3ICs1NCw3IEBACiAgIyBkdW1teSB0YXJnZXRzIGZvciAkKFRFU1RTKSBzbyB0aGF0IG1ha2UgZG9lcyBub3QgY29tcGxhaW4uCiAgCiAraW5zdGFsbC1wdGVzdDoKLSsJY2QgJChCVUlMRERJUik7IHRhciAtY2YgLSAkKFRFU1RESVIpIC0tZXhjbHVkZSAqLm8gfCAoIGNkICQoREVTVERJUikgJiYgdGFyIC14ZiAtICkKKysJY2QgJChCVUlMRERJUik7IHRhciAtYyAtLWV4Y2x1ZGU9Ki5vICQoVEVTVERJUikgfCAoIGNkICQoREVTVERJUikgJiYgdGFyIC14ZiAtICkKICsJZm9yIGkgaW4gJChFWFRSQV9ESVNUKSB0c3QtcmVnZXgyLmM7IGRvIGluc3RhbGwgJChzcmNkaXIpLyQkaSAkKERFU1RESVIpLyQoVEVTVERJUik7IGRvbmUKICsJc2VkIC1lICdzL15NYWtlZmlsZTovX01ha2VmaWxlOi8nIC1lICdzL15zcmNkaXIgPSBcKC4qXCkvc3JjZGlyID0gLi8nIC1lICdzL2Jhc2gvc2gvJyAtaSAkKERFU1RESVIpLyQoVEVTVERJUikvTWFrZWZpbGUKICsJZm9yIGkgaW4gYGdyZXAgLXJsICIuLi9zZWQvc2VkIiAkKERFU1RESVIpLyQoVEVTVERJUilgOyBkbyBzZWQgLWUgJ3MvLi5cL3NlZFwvc2VkL3NlZC8nIC1pICQkaTsgZG9uZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvc2hhZG93LXJlbGF4ZWQtdXNlcm5hbWVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvc2hhZG93LXJlbGF4ZWQtdXNlcm5hbWVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhZjA0ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9zaGFkb3ctcmVsYXhlZC11c2VybmFtZXMucGF0Y2gKQEAgLTAsMCArMSwxMDAgQEAKKworVGhlIGdyb3VwYWRkIGZyb20gc2hhZG93IGRvZXMgbm90IGFsbG93IHVwcGVyIGNhc2UgZ3JvdXAgbmFtZXMsIHRoZQorc2FtZSBpcyB0cnVlIGZvciB0aGUgdXBzdHJlYW0gc2hhZG93LiBCdXQgZGlzdHJpYnV0aW9ucyBsaWtlCitEZWJpYW4vVWJ1bnR1L0NlbnRPUyBoYXMgdGhlaXIgb3duIHdheSB0byBjb3BlIHdpdGggdGhpcyBwcm9ibGVtLAordGhpcyBwYXRjaCBpcyBwaWNrZWQgdXAgZnJvbSBDZW50T1MgcmVsZWFzZSA3LjAgdG8gcmVsYXggdGhlIHVzZXJuYW1lcworcmVzdHJpY3Rpb25zIHRvIGFsbG93IHRoZSB1cHBlciBjYXNlIGdyb3VwIG5hbWVzLCBhbmQgdGhlIHJlbGF4YXRpb24gaXMKK1BPU0lYIGNvbXBsaWFudCBiZWNhdXNlIFBPU0lYIGluZGljYXRlIHRoYXQgdXNlcm5hbWVzIGFyZSBjb21wb3NlZCBvZiAKK2NoYXJhY3RlcnMgZnJvbSB0aGUgcG9ydGFibGUgZmlsZW5hbWUgY2hhcmFjdGVyIHNldCBbQS1aYS16MC05Ll8tXS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFNoYW4gSGFpIDxzaGFuLmhhaUB3aW5kcml2ZXIuY29tPiAKKworZGlmZiAtdXJwTiBhL2xpYm1pc2MvY2hrbmFtZS5jIGIvbGlibWlzYy9jaGtuYW1lLmMKK2luZGV4IDUwODkxMTIuLmY0MGEwZGEgMTAwNjQ0CistLS0gYS9saWJtaXNjL2Noa25hbWUuYworKysrIGIvbGlibWlzYy9jaGtuYW1lLmMKK0BAIC00OSwyMSArNDksMjggQEAKKyBzdGF0aWMgYm9vbCBpc192YWxpZF9uYW1lIChjb25zdCBjaGFyICpuYW1lKQorIHsKKyAJLyoKKy0JICogVXNlci9ncm91cCBuYW1lcyBtdXN0IG1hdGNoIFthLXpfXVthLXowLTlfLV0qWyRdCistCSAqLworLQlpZiAoKCdcMCcgPT0gKm5hbWUpIHx8CistCSAgICAhKCgoJ2EnIDw9ICpuYW1lKSAmJiAoJ3onID49ICpuYW1lKSkgfHwgKCdfJyA9PSAqbmFtZSkpKSB7CisrICAgICAgICAgKiBVc2VyL2dyb3VwIG5hbWVzIG11c3QgbWF0Y2ggZ251IGUtcmVnZXg6CisrICAgICAgICAgKiAgICBbYS16QS1aMC05Xy5dW2EtekEtWjAtOV8uLV17MCwzMH1bYS16QS1aMC05Xy4kLV0/CisrICAgICAgICAgKgorKyAgICAgICAgICogYXMgYSBub24tUE9TSVgsIGV4dGVuc2lvbiwgYWxsb3cgIiQiIGFzIHRoZSBsYXN0IGNoYXIgZm9yCisrICAgICAgICAgKiBzYWtlIG9mIFNhbWJhIDMueCAiYWRkIG1hY2hpbmUgc2NyaXB0IgorKyAgICAgICAgICovCisrCWlmICggKCdcMCcgPT0gKm5hbWUpIHx8CisrICAgICAgICAgICAgICEoKCpuYW1lID49ICdhJyAmJiAqbmFtZSA8PSAneicpIHx8CisrICAgICAgICAgICAgICAgKCpuYW1lID49ICdBJyAmJiAqbmFtZSA8PSAnWicpIHx8CisrICAgICAgICAgICAgICAgKCpuYW1lID49ICcwJyAmJiAqbmFtZSA8PSAnOScpIHx8CisrICAgICAgICAgICAgICAgKCpuYW1lID09ICdfJykgfHwgKCpuYW1lID09ICcuJykgCisrCSAgICAgICkpIHsKKyAJCXJldHVybiBmYWxzZTsKKyAJfQorIAorIAl3aGlsZSAoJ1wwJyAhPSAqKytuYW1lKSB7CistCQlpZiAoISgoICgnYScgPD0gKm5hbWUpICYmICgneicgPj0gKm5hbWUpICkgfHwKKy0JCSAgICAgICggKCcwJyA8PSAqbmFtZSkgJiYgKCc5JyA+PSAqbmFtZSkgKSB8fAorLQkJICAgICAgKCdfJyA9PSAqbmFtZSkgfHwKKy0JCSAgICAgICgnLScgPT0gKm5hbWUpIHx8CistCQkgICAgICAoJy4nID09ICpuYW1lKSB8fAorLQkJICAgICAgKCAoJyQnID09ICpuYW1lKSAmJiAoJ1wwJyA9PSAqKG5hbWUgKyAxKSkgKQorLQkJICAgICApKSB7CisrICAgICAgICAgICAgICAgIGlmICghKCAgKCpuYW1lID49ICdhJyAmJiAqbmFtZSA8PSAneicpIHx8CisrICAgICAgICAgICAgICAgICAgICAgICAgKCpuYW1lID49ICdBJyAmJiAqbmFtZSA8PSAnWicpIHx8CisrICAgICAgICAgICAgICAgICAgICAgICAgKCpuYW1lID49ICcwJyAmJiAqbmFtZSA8PSAnOScpIHx8CisrICAgICAgICAgICAgICAgICAgICAgICAgKCpuYW1lID09ICdfJykgfHwgKCpuYW1lID09ICcuJykgfHwgKCpuYW1lID09ICctJykgfHwKKysgICAgICAgICAgICAgICAgICAgICAgICAoKm5hbWUgPT0gJyQnICYmICoobmFtZSArIDEpID09ICdcMCcpIAorKyAgICAgICAgICAgICAgICAgICAgICkpIHsKKyAJCQlyZXR1cm4gZmFsc2U7CisgCQl9CisgCX0KK2RpZmYgLXVycE4gYS9tYW4vZ3JvdXBhZGQuOC54bWwgYi9tYW4vZ3JvdXBhZGQuOC54bWwKK2luZGV4IDIzMGZkMGMuLjk0Zjc4MDcgMTAwNjQ0CistLS0gYS9tYW4vZ3JvdXBhZGQuOC54bWwKKysrKyBiL21hbi9ncm91cGFkZC44LnhtbAorQEAgLTIyMiwxMiArMjIyLDYgQEAKKyAgICA8cmVmc2VjdDEgaWQ9J2NhdmVhdHMnPgorICAgICAgPHRpdGxlPkNBVkVBVFM8L3RpdGxlPgorICAgICAgPHBhcmE+CistICAgICAgIEdyb3VwbmFtZXMgbXVzdCBzdGFydCB3aXRoIGEgbG93ZXIgY2FzZSBsZXR0ZXIgb3IgYW4gdW5kZXJzY29yZSwKKy0gICAgICAgZm9sbG93ZWQgYnkgbG93ZXIgY2FzZSBsZXR0ZXJzLCBkaWdpdHMsIHVuZGVyc2NvcmVzLCBvciBkYXNoZXMuCistICAgICAgIFRoZXkgY2FuIGVuZCB3aXRoIGEgZG9sbGFyIHNpZ24uCistICAgICAgIEluIHJlZ3VsYXIgZXhwcmVzc2lvbiB0ZXJtczogW2Etel9dW2EtejAtOV8tXSpbJF0/CistICAgICA8L3BhcmE+CistICAgICA8cGFyYT4KKyAgICAgICAgR3JvdXBuYW1lcyBtYXkgb25seSBiZSB1cCB0byAmR1JPVVBfTkFNRV9NQVhfTEVOR1RIOyBjaGFyYWN0ZXJzIGxvbmcuCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KK2RpZmYgLXVycE4gYS9tYW4vdXNlcmFkZC44LnhtbCBiL21hbi91c2VyYWRkLjgueG1sCitpbmRleCA1ZGVjOTg5Li5mZTYyM2I5IDEwMDY0NAorLS0tIGEvbWFuL3VzZXJhZGQuOC54bWwKKysrKyBiL21hbi91c2VyYWRkLjgueG1sCitAQCAtMzM2LDcgKzMzNiw3IEBACisgCTwvdGVybT4KKyAJPGxpc3RpdGVtPgorIAkgIDxwYXJhPgorLQkgICAgRG8gbm8gY3JlYXRlIHRoZSB1c2VyJ3MgaG9tZSBkaXJlY3RvcnksIGV2ZW4gaWYgdGhlIHN5c3RlbQorKwkgICAgRG8gbm90IGNyZWF0ZSB0aGUgdXNlcidzIGhvbWUgZGlyZWN0b3J5LCBldmVuIGlmIHRoZSBzeXN0ZW0KKyAJICAgIHdpZGUgc2V0dGluZyBmcm9tIDxmaWxlbmFtZT4vZXRjL2xvZ2luLmRlZnM8L2ZpbGVuYW1lPgorIAkgICAgKDxvcHRpb24+Q1JFQVRFX0hPTUU8L29wdGlvbj4pIGlzIHNldCB0bworIAkgICAgPHJlcGxhY2VhYmxlPnllczwvcmVwbGFjZWFibGU+LgorQEAgLTYwNywxMiArNjA3LDYgQEAKKyAgICAgPC9wYXJhPgorIAorICAgICA8cGFyYT4KKy0gICAgICBVc2VybmFtZXMgbXVzdCBzdGFydCB3aXRoIGEgbG93ZXIgY2FzZSBsZXR0ZXIgb3IgYW4gdW5kZXJzY29yZSwKKy0gICAgICBmb2xsb3dlZCBieSBsb3dlciBjYXNlIGxldHRlcnMsIGRpZ2l0cywgdW5kZXJzY29yZXMsIG9yIGRhc2hlcy4KKy0gICAgICBUaGV5IGNhbiBlbmQgd2l0aCBhIGRvbGxhciBzaWduLgorLSAgICAgIEluIHJlZ3VsYXIgZXhwcmVzc2lvbiB0ZXJtczogW2Etel9dW2EtejAtOV8tXSpbJF0/CistICAgIDwvcGFyYT4KKy0gICAgPHBhcmE+CisgICAgICAgVXNlcm5hbWVzIG1heSBvbmx5IGJlIHVwIHRvIDMyIGNoYXJhY3RlcnMgbG9uZy4KKyAgICAgPC9wYXJhPgorICAgPC9yZWZzZWN0MT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvdy1zeXNyb290XzQuMi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvc2hhZG93LXN5c3Jvb3RfNC4yLjEuYmIKaW5kZXggNjk3NTY5Yy4uZWYwMTQ2MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvc2hhZG93LXN5c3Jvb3RfNC4yLjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvc2hhZG93LXN5c3Jvb3RfNC4yLjEuYmIKQEAgLTIxLDEyICsyMSwxMCBAQAogCiBkb19pbnN0YWxsKCkgewogCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KLQlpbnN0YWxsIC1wIC1tIDc1NSAke1N9L2xvZ2luLmRlZnNfc2hhZG93LXN5c3Jvb3QgJHtEfSR7c3lzY29uZmRpcn0vbG9naW4uZGVmcworCWluc3RhbGwgLXAgLW0gNjQ0ICR7U30vbG9naW4uZGVmc19zaGFkb3ctc3lzcm9vdCAke0R9JHtzeXNjb25mZGlyfS9sb2dpbi5kZWZzCiB9CiAKLXN5c3Jvb3Rfc3RhZ2VfYWxsKCkgewotCXN5c3Jvb3Rfc3RhZ2VfZGlyICR7RH0gJHtTWVNST09UX0RFU1RESVJ9Ci19CitTWVNST09UX0RJUlMgKz0gIiR7c3lzY29uZmRpcn0iCiAKICMgZG9uJ3QgY3JlYXRlIGFueSBwYWNrYWdlcwogIyBvdGhlcndpc2U6IGRidXMtZGV2IGRlcGVuZHMgb24gc2hhZG93LXN5c3Jvb3QtZGV2IHdoaWNoIGRlcGVuZHMgb24gc2hhZG93LXN5c3Jvb3QgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3cuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvc2hhZG93LmluYwppbmRleCBkMDI0YjAxLi4zNWExOGY4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3cuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvdy5pbmMKQEAgLTIyLDYgKzIyLDcgQEAKIFNSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgXAogICAgICAgICAgICBmaWxlOi8vbG9naW5fZGVmc19wYW0uc2VkIFwKICAgICAgICAgICAgZmlsZTovL3NoYWRvdy11cGRhdGUtcGFtLWNvbmYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc2hhZG93LXJlbGF4ZWQtdXNlcm5hbWVzLnBhdGNoIFwKICAgICAgICAgICAgIgogCiBTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIFwKQEAgLTE3OSwxMCArMTgwLDExIEBACiBBTFRFUk5BVElWRV9MSU5LX05BTUVbbG9naW5dID0gIiR7YmFzZV9iaW5kaXJ9L2xvZ2luIgogQUxURVJOQVRJVkVfTElOS19OQU1FW3N1XSA9ICIke2Jhc2VfYmluZGlyfS9zdSIKIAotQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gInBhc3N3ZC41IGdldHNwbmFtLjMgZ3JvdXBzLjEiCitBTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAicGFzc3dkLjUgZ2V0c3BuYW0uMyBncm91cHMuMSBzdS4xIgogQUxURVJOQVRJVkVfTElOS19OQU1FW3Bhc3N3ZC41XSA9ICIke21hbmRpcn0vbWFuNS9wYXNzd2QuNSIKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtnZXRzcG5hbS4zXSA9ICIke21hbmRpcn0vbWFuMy9nZXRzcG5hbS4zIgogQUxURVJOQVRJVkVfTElOS19OQU1FW2dyb3Vwcy4xXSA9ICIke21hbmRpcn0vbWFuMS9ncm91cHMuMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtzdS4xXSA9ICIke21hbmRpcn0vbWFuMS9zdS4xIgogCiBwa2dfcG9zdGluc3RfJHtQTn0gKCkgewogCWlmIFsgIngkRCIgIT0gIngiIF07IHRoZW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmcvY2hhbmdlLWNoYXItdHlwZS10by1zaWduZWQtY2hhci1pbi1tYWNyb3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NsYW5nL3NsYW5nL2NoYW5nZS1jaGFyLXR5cGUtdG8tc2lnbmVkLWNoYXItaW4tbWFjcm9zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZWExZmZkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmcvY2hhbmdlLWNoYXItdHlwZS10by1zaWduZWQtY2hhci1pbi1tYWNyb3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMTggKzAsMCBAQAotc2xhbmc6IGNoYW5nZSBjaGFyIHR5cGUgdG8gc2lnbmVkIGNoYXIgaW4gbWFjcm9zCi0KLUMgbGFuZ3VhZ2UgaGFzIDMgZGlzdGluY3QgY2hhciB0eXBlczoKLSAgICAgICAgIGNoYXIKLSAgICAgICAgIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgIHNpZ25lZCBjaGFyCi1BIGNoYXIgaGFzIHRoZSBzYW1lIHJhbmdlIG9mIHZhbHVlcyBhcyBzaWduZWQgY2hhciBvbiBYODYsCi1idXQgc2FtZSBhcyB1bnNpZ25lZCBjaGFyIG9uIEFSTSB3aGljaCBtYWRlIFNsYW5nJ3MgdHlwZWNhc3QoKQotYW5kIGFycmF5X3NvcnQoKSB1bmFibGUgdG8gd29yayBmb3IgY2hhciB2YWx1ZSBvbiBBUk0sIHNpbmNlCi1TbGFuZyBpcyBhc3N1bWluZyAiY2hhciIgYXMgInNpZ25lZCBjaGFyIi4KLQotTm93IHdlIGNoYW5nZSAiY2hhciIgYXMgInNpZ25lZCBjaGFyIiBleHBsaWNpdGx5IGluCi11dGlsL21rc2xhcml0aDIuc2wsIGFuZCB1c2UgaXQgdG8gcmVnZW5lcmF0ZSBzcmMvc2xhcml0aDIuaW5jCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi1TaWduZWQtb2ZmLWJ5OiBSb3kuTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzcmMvc2xhcml0aDIuaW5jICAgICAgIHwgICA3MiArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gc3JjL3V0aWwvbWtzbGFyaXRoMi5zbCB8ICAgIDIgLQotIDIgZmlsZXMgY2hhbmdlZCwgMzcgaW5zZXJ0aW9ucygrKSwgMzcgZGVsZXRpb25zKC0pCi0KLS0tLSBhL3NyYy91dGlsL21rc2xhcml0aDIuc2wKLSsrKyBiL3NyYy91dGlsL21rc2xhcml0aDIuc2wKLUBAIC0xLDcgKzEsNyBAQAotICMhL3Vzci9iaW4vZW52IHNsc2gKLSAKLSBwcml2YXRlIHZhcmlhYmxlIENUeXBlcyA9Ci0tICBbImNoYXIiLCAidW5zaWduZWQgY2hhciIsICJzaG9ydCIsICJ1bnNpZ25lZCBzaG9ydCIsICJpbnQiLCAidW5zaWduZWQgaW50IiwKLSsgIFsic2lnbmVkIGNoYXIiLCAidW5zaWduZWQgY2hhciIsICJzaG9ydCIsICJ1bnNpZ25lZCBzaG9ydCIsICJpbnQiLCAidW5zaWduZWQgaW50IiwKLSAgICAibG9uZyIsICJ1bnNpZ25lZCBsb25nIiwgImxvbmcgbG9uZyIsICJ1bnNpZ25lZCBsb25nIGxvbmciLAotICAgICJmbG9hdCIsICJkb3VibGUiLCAibG9uZyBkb3VibGUiXTsKLSBwcml2YXRlIHZhcmlhYmxlIElzX0ludF9UeXBlID0KLS0tLSBhL3NyYy9zbGFyaXRoMi5pbmMKLSsrKyBiL3NyYy9zbGFyaXRoMi5pbmMKLUBAIC0xLDQzICsxLDQzIEBACi0gLyogRE8gTk9UIEVESVQgLS0gdGhpcyBmaWxlIHdhcyBnZW5lcmF0ZWQgYnkgc3JjL3V0aWwvbWtzbGFyaXRoMi5zbCAqLwotLS8qIC0tLS0tLS0tLS0tLSBjaGFyIC0tLS0tLS0tLS0gKi8KLS1ERUZVTl8xKGNvcHlfY2hhcl90b19jaGFyLGNoYXIsY2hhcikKLSsvKiAtLS0tLS0tLS0tLS0gc2lnbmVkIGNoYXIgLS0tLS0tLS0tLSAqLwotK0RFRlVOXzEoY29weV9jaGFyX3RvX2NoYXIsc2lnbmVkIGNoYXIsc2lnbmVkIGNoYXIpCi0gI2RlZmluZSBjaGFyX3RvX2NoYXIJTlVMTAotICNkZWZpbmUgY29weV9jaGFyX3RvX3VjaGFyCWNvcHlfY2hhcl90b19jaGFyCi0gI2RlZmluZSBjaGFyX3RvX3VjaGFyCU5VTEwKLS1ERUZVTl8xKGNvcHlfY2hhcl90b19zaG9ydCxjaGFyLHNob3J0KQotK0RFRlVOXzEoY29weV9jaGFyX3RvX3Nob3J0LHNpZ25lZCBjaGFyLHNob3J0KQotICNkZWZpbmUgY2hhcl90b19zaG9ydAlOVUxMCi0tREVGVU5fMShjb3B5X2NoYXJfdG9fdXNob3J0LGNoYXIsdW5zaWduZWQgc2hvcnQpCi0rREVGVU5fMShjb3B5X2NoYXJfdG9fdXNob3J0LHNpZ25lZCBjaGFyLHVuc2lnbmVkIHNob3J0KQotICNkZWZpbmUgY2hhcl90b191c2hvcnQJTlVMTAotLURFRlVOXzEoY29weV9jaGFyX3RvX2ludCxjaGFyLGludCkKLS1ERUZVTl8yKGNoYXJfdG9faW50LGNoYXIsaW50LGNvcHlfY2hhcl90b19pbnQpCi0tREVGVU5fMShjb3B5X2NoYXJfdG9fdWludCxjaGFyLHVuc2lnbmVkIGludCkKLS1ERUZVTl8yKGNoYXJfdG9fdWludCxjaGFyLHVuc2lnbmVkIGludCxjb3B5X2NoYXJfdG9fdWludCkKLS1ERUZVTl8xKGNvcHlfY2hhcl90b19sb25nLGNoYXIsbG9uZykKLS1ERUZVTl8yKGNoYXJfdG9fbG9uZyxjaGFyLGxvbmcsY29weV9jaGFyX3RvX2xvbmcpCi0tREVGVU5fMShjb3B5X2NoYXJfdG9fdWxvbmcsY2hhcix1bnNpZ25lZCBsb25nKQotLURFRlVOXzIoY2hhcl90b191bG9uZyxjaGFyLHVuc2lnbmVkIGxvbmcsY29weV9jaGFyX3RvX3Vsb25nKQotK0RFRlVOXzEoY29weV9jaGFyX3RvX2ludCxzaWduZWQgY2hhcixpbnQpCi0rREVGVU5fMihjaGFyX3RvX2ludCxzaWduZWQgY2hhcixpbnQsY29weV9jaGFyX3RvX2ludCkKLStERUZVTl8xKGNvcHlfY2hhcl90b191aW50LHNpZ25lZCBjaGFyLHVuc2lnbmVkIGludCkKLStERUZVTl8yKGNoYXJfdG9fdWludCxzaWduZWQgY2hhcix1bnNpZ25lZCBpbnQsY29weV9jaGFyX3RvX3VpbnQpCi0rREVGVU5fMShjb3B5X2NoYXJfdG9fbG9uZyxzaWduZWQgY2hhcixsb25nKQotK0RFRlVOXzIoY2hhcl90b19sb25nLHNpZ25lZCBjaGFyLGxvbmcsY29weV9jaGFyX3RvX2xvbmcpCi0rREVGVU5fMShjb3B5X2NoYXJfdG9fdWxvbmcsc2lnbmVkIGNoYXIsdW5zaWduZWQgbG9uZykKLStERUZVTl8yKGNoYXJfdG9fdWxvbmcsc2lnbmVkIGNoYXIsdW5zaWduZWQgbG9uZyxjb3B5X2NoYXJfdG9fdWxvbmcpCi0gI2lmIGRlZmluZWQoSEFWRV9MT05HX0xPTkcpCi0tREVGVU5fMShjb3B5X2NoYXJfdG9fbGxvbmcsY2hhcixsb25nIGxvbmcpCi0tREVGVU5fMihjaGFyX3RvX2xsb25nLGNoYXIsbG9uZyBsb25nLGNvcHlfY2hhcl90b19sbG9uZykKLStERUZVTl8xKGNvcHlfY2hhcl90b19sbG9uZyxzaWduZWQgY2hhcixsb25nIGxvbmcpCi0rREVGVU5fMihjaGFyX3RvX2xsb25nLHNpZ25lZCBjaGFyLGxvbmcgbG9uZyxjb3B5X2NoYXJfdG9fbGxvbmcpCi0gI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9MT05HX0xPTkcpICovCi0gI2lmIGRlZmluZWQoSEFWRV9MT05HX0xPTkcpCi0tREVGVU5fMShjb3B5X2NoYXJfdG9fdWxsb25nLGNoYXIsdW5zaWduZWQgbG9uZyBsb25nKQotLURFRlVOXzIoY2hhcl90b191bGxvbmcsY2hhcix1bnNpZ25lZCBsb25nIGxvbmcsY29weV9jaGFyX3RvX3VsbG9uZykKLStERUZVTl8xKGNvcHlfY2hhcl90b191bGxvbmcsc2lnbmVkIGNoYXIsdW5zaWduZWQgbG9uZyBsb25nKQotK0RFRlVOXzIoY2hhcl90b191bGxvbmcsc2lnbmVkIGNoYXIsdW5zaWduZWQgbG9uZyBsb25nLGNvcHlfY2hhcl90b191bGxvbmcpCi0gI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9MT05HX0xPTkcpICovCi0gI2lmIFNMQU5HX0hBU19GTE9BVAotLURFRlVOXzEoY29weV9jaGFyX3RvX2Zsb2F0LGNoYXIsZmxvYXQpCi0tREVGVU5fMihjaGFyX3RvX2Zsb2F0LGNoYXIsZmxvYXQsY29weV9jaGFyX3RvX2Zsb2F0KQotK0RFRlVOXzEoY29weV9jaGFyX3RvX2Zsb2F0LHNpZ25lZCBjaGFyLGZsb2F0KQotK0RFRlVOXzIoY2hhcl90b19mbG9hdCxzaWduZWQgY2hhcixmbG9hdCxjb3B5X2NoYXJfdG9fZmxvYXQpCi0gI2VuZGlmIC8qIFNMQU5HX0hBU19GTE9BVCAqLwotICNpZiBTTEFOR19IQVNfRkxPQVQKLS1ERUZVTl8xKGNvcHlfY2hhcl90b19kb3VibGUsY2hhcixkb3VibGUpCi0tREVGVU5fMihjaGFyX3RvX2RvdWJsZSxjaGFyLGRvdWJsZSxjb3B5X2NoYXJfdG9fZG91YmxlKQotK0RFRlVOXzEoY29weV9jaGFyX3RvX2RvdWJsZSxzaWduZWQgY2hhcixkb3VibGUpCi0rREVGVU5fMihjaGFyX3RvX2RvdWJsZSxzaWduZWQgY2hhcixkb3VibGUsY29weV9jaGFyX3RvX2RvdWJsZSkKLSAjZW5kaWYgLyogU0xBTkdfSEFTX0ZMT0FUICovCi0gI2lmIGRlZmluZWQoSEFWRV9MT05HX0RPVUJMRSkKLS1ERUZVTl8xKGNvcHlfY2hhcl90b19sZG91YmxlLGNoYXIsbG9uZyBkb3VibGUpCi0tREVGVU5fMihjaGFyX3RvX2xkb3VibGUsY2hhcixsb25nIGRvdWJsZSxjb3B5X2NoYXJfdG9fbGRvdWJsZSkKLStERUZVTl8xKGNvcHlfY2hhcl90b19sZG91YmxlLHNpZ25lZCBjaGFyLGxvbmcgZG91YmxlKQotK0RFRlVOXzIoY2hhcl90b19sZG91YmxlLHNpZ25lZCBjaGFyLGxvbmcgZG91YmxlLGNvcHlfY2hhcl90b19sZG91YmxlKQotICNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfTE9OR19ET1VCTEUpICovCi0gI2lmIFNMQU5HX0hBU19GTE9BVAotLVRPX0RPVUJMRV9GVU4oY2hhcl90b19vbmVfZG91YmxlLGNoYXIpCi0rVE9fRE9VQkxFX0ZVTihjaGFyX3RvX29uZV9kb3VibGUsc2lnbmVkIGNoYXIpCi0gI2VuZGlmCi0gCi0gLyogLS0tLS0tLS0tLS0tIHVuc2lnbmVkIGNoYXIgLS0tLS0tLS0tLSAqLwotQEAgLTgyLDcgKzgyLDcgQEAgVE9fRE9VQkxFX0ZVTih1Y2hhcl90b19vbmVfZG91YmxlLHVuc2lnbgotICNlbmRpZgotIAotIC8qIC0tLS0tLS0tLS0tLSBzaG9ydCAtLS0tLS0tLS0tICovCi0tREVGVU5fMShjb3B5X3Nob3J0X3RvX2NoYXIsc2hvcnQsY2hhcikKLStERUZVTl8xKGNvcHlfc2hvcnRfdG9fY2hhcixzaG9ydCxzaWduZWQgY2hhcikKLSAjZGVmaW5lIHNob3J0X3RvX2NoYXIJTlVMTAotIERFRlVOXzEoY29weV9zaG9ydF90b191Y2hhcixzaG9ydCx1bnNpZ25lZCBjaGFyKQotICNkZWZpbmUgc2hvcnRfdG9fdWNoYXIJTlVMTAotQEAgLTEyMyw3ICsxMjMsNyBAQCBUT19ET1VCTEVfRlVOKHNob3J0X3RvX29uZV9kb3VibGUsc2hvcnQpCi0gI2VuZGlmCi0gCi0gLyogLS0tLS0tLS0tLS0tIHVuc2lnbmVkIHNob3J0IC0tLS0tLS0tLS0gKi8KLS1ERUZVTl8xKGNvcHlfdXNob3J0X3RvX2NoYXIsdW5zaWduZWQgc2hvcnQsY2hhcikKLStERUZVTl8xKGNvcHlfdXNob3J0X3RvX2NoYXIsdW5zaWduZWQgc2hvcnQsc2lnbmVkIGNoYXIpCi0gI2RlZmluZSB1c2hvcnRfdG9fY2hhcglOVUxMCi0gREVGVU5fMShjb3B5X3VzaG9ydF90b191Y2hhcix1bnNpZ25lZCBzaG9ydCx1bnNpZ25lZCBjaGFyKQotICNkZWZpbmUgdXNob3J0X3RvX3VjaGFyCU5VTEwKLUBAIC0xNjQsNyArMTY0LDcgQEAgVE9fRE9VQkxFX0ZVTih1c2hvcnRfdG9fb25lX2RvdWJsZSx1bnNpZwotICNlbmRpZgotIAotIC8qIC0tLS0tLS0tLS0tLSBpbnQgLS0tLS0tLS0tLSAqLwotLURFRlVOXzEoY29weV9pbnRfdG9fY2hhcixpbnQsY2hhcikKLStERUZVTl8xKGNvcHlfaW50X3RvX2NoYXIsaW50LHNpZ25lZCBjaGFyKQotICNkZWZpbmUgaW50X3RvX2NoYXIJTlVMTAotIERFRlVOXzEoY29weV9pbnRfdG9fdWNoYXIsaW50LHVuc2lnbmVkIGNoYXIpCi0gI2RlZmluZSBpbnRfdG9fdWNoYXIJTlVMTAotQEAgLTIwNSw3ICsyMDUsNyBAQCBUT19ET1VCTEVfRlVOKGludF90b19vbmVfZG91YmxlLGludCkKLSAjZW5kaWYKLSAKLSAvKiAtLS0tLS0tLS0tLS0gdW5zaWduZWQgaW50IC0tLS0tLS0tLS0gKi8KLS1ERUZVTl8xKGNvcHlfdWludF90b19jaGFyLHVuc2lnbmVkIGludCxjaGFyKQotK0RFRlVOXzEoY29weV91aW50X3RvX2NoYXIsdW5zaWduZWQgaW50LHNpZ25lZCBjaGFyKQotICNkZWZpbmUgdWludF90b19jaGFyCU5VTEwKLSBERUZVTl8xKGNvcHlfdWludF90b191Y2hhcix1bnNpZ25lZCBpbnQsdW5zaWduZWQgY2hhcikKLSAjZGVmaW5lIHVpbnRfdG9fdWNoYXIJTlVMTAotQEAgLTI0Niw3ICsyNDYsNyBAQCBUT19ET1VCTEVfRlVOKHVpbnRfdG9fb25lX2RvdWJsZSx1bnNpZ25lCi0gI2VuZGlmCi0gCi0gLyogLS0tLS0tLS0tLS0tIGxvbmcgLS0tLS0tLS0tLSAqLwotLURFRlVOXzEoY29weV9sb25nX3RvX2NoYXIsbG9uZyxjaGFyKQotK0RFRlVOXzEoY29weV9sb25nX3RvX2NoYXIsbG9uZyxzaWduZWQgY2hhcikKLSAjZGVmaW5lIGxvbmdfdG9fY2hhcglOVUxMCi0gREVGVU5fMShjb3B5X2xvbmdfdG9fdWNoYXIsbG9uZyx1bnNpZ25lZCBjaGFyKQotICNkZWZpbmUgbG9uZ190b191Y2hhcglOVUxMCi1AQCAtMjg3LDcgKzI4Nyw3IEBAIFRPX0RPVUJMRV9GVU4obG9uZ190b19vbmVfZG91YmxlLGxvbmcpCi0gI2VuZGlmCi0gCi0gLyogLS0tLS0tLS0tLS0tIHVuc2lnbmVkIGxvbmcgLS0tLS0tLS0tLSAqLwotLURFRlVOXzEoY29weV91bG9uZ190b19jaGFyLHVuc2lnbmVkIGxvbmcsY2hhcikKLStERUZVTl8xKGNvcHlfdWxvbmdfdG9fY2hhcix1bnNpZ25lZCBsb25nLHNpZ25lZCBjaGFyKQotICNkZWZpbmUgdWxvbmdfdG9fY2hhcglOVUxMCi0gREVGVU5fMShjb3B5X3Vsb25nX3RvX3VjaGFyLHVuc2lnbmVkIGxvbmcsdW5zaWduZWQgY2hhcikKLSAjZGVmaW5lIHVsb25nX3RvX3VjaGFyCU5VTEwKLUBAIC0zMjksNyArMzI5LDcgQEAgVE9fRE9VQkxFX0ZVTih1bG9uZ190b19vbmVfZG91YmxlLHVuc2lnbgotIAotIC8qIC0tLS0tLS0tLS0tLSBsb25nIGxvbmcgLS0tLS0tLS0tLSAqLwotICNpZiBkZWZpbmVkKEhBVkVfTE9OR19MT05HKQotLURFRlVOXzEoY29weV9sbG9uZ190b19jaGFyLGxvbmcgbG9uZyxjaGFyKQotK0RFRlVOXzEoY29weV9sbG9uZ190b19jaGFyLGxvbmcgbG9uZyxzaWduZWQgY2hhcikKLSAjZGVmaW5lIGxsb25nX3RvX2NoYXIJTlVMTAotIERFRlVOXzEoY29weV9sbG9uZ190b191Y2hhcixsb25nIGxvbmcsdW5zaWduZWQgY2hhcikKLSAjZGVmaW5lIGxsb25nX3RvX3VjaGFyCU5VTEwKLUBAIC0zNzIsNyArMzcyLDcgQEAgVE9fRE9VQkxFX0ZVTihsbG9uZ190b19vbmVfZG91YmxlLGxvbmcgbAotIAotIC8qIC0tLS0tLS0tLS0tLSB1bnNpZ25lZCBsb25nIGxvbmcgLS0tLS0tLS0tLSAqLwotICNpZiBkZWZpbmVkKEhBVkVfTE9OR19MT05HKQotLURFRlVOXzEoY29weV91bGxvbmdfdG9fY2hhcix1bnNpZ25lZCBsb25nIGxvbmcsY2hhcikKLStERUZVTl8xKGNvcHlfdWxsb25nX3RvX2NoYXIsdW5zaWduZWQgbG9uZyBsb25nLHNpZ25lZCBjaGFyKQotICNkZWZpbmUgdWxsb25nX3RvX2NoYXIJTlVMTAotIERFRlVOXzEoY29weV91bGxvbmdfdG9fdWNoYXIsdW5zaWduZWQgbG9uZyBsb25nLHVuc2lnbmVkIGNoYXIpCi0gI2RlZmluZSB1bGxvbmdfdG9fdWNoYXIJTlVMTAotQEAgLTQxNSw3ICs0MTUsNyBAQCBUT19ET1VCTEVfRlVOKHVsbG9uZ190b19vbmVfZG91YmxlLHVuc2lnCi0gCi0gLyogLS0tLS0tLS0tLS0tIGZsb2F0IC0tLS0tLS0tLS0gKi8KLSAjaWYgU0xBTkdfSEFTX0ZMT0FUCi0tREVGVU5fMShjb3B5X2Zsb2F0X3RvX2NoYXIsZmxvYXQsY2hhcikKLStERUZVTl8xKGNvcHlfZmxvYXRfdG9fY2hhcixmbG9hdCxzaWduZWQgY2hhcikKLSAjZGVmaW5lIGZsb2F0X3RvX2NoYXIJTlVMTAotIERFRlVOXzEoY29weV9mbG9hdF90b191Y2hhcixmbG9hdCx1bnNpZ25lZCBjaGFyKQotICNkZWZpbmUgZmxvYXRfdG9fdWNoYXIJTlVMTAotQEAgLTQ1OCw3ICs0NTgsNyBAQCBUT19ET1VCTEVfRlVOKGZsb2F0X3RvX29uZV9kb3VibGUsZmxvYXQpCi0gCi0gLyogLS0tLS0tLS0tLS0tIGRvdWJsZSAtLS0tLS0tLS0tICovCi0gI2lmIFNMQU5HX0hBU19GTE9BVAotLURFRlVOXzEoY29weV9kb3VibGVfdG9fY2hhcixkb3VibGUsY2hhcikKLStERUZVTl8xKGNvcHlfZG91YmxlX3RvX2NoYXIsZG91YmxlLHNpZ25lZCBjaGFyKQotICNkZWZpbmUgZG91YmxlX3RvX2NoYXIJTlVMTAotIERFRlVOXzEoY29weV9kb3VibGVfdG9fdWNoYXIsZG91YmxlLHVuc2lnbmVkIGNoYXIpCi0gI2RlZmluZSBkb3VibGVfdG9fdWNoYXIJTlVMTAotQEAgLTUwMSw3ICs1MDEsNyBAQCBUT19ET1VCTEVfRlVOKGRvdWJsZV90b19vbmVfZG91YmxlLGRvdWJsCi0gCi0gLyogLS0tLS0tLS0tLS0tIGxvbmcgZG91YmxlIC0tLS0tLS0tLS0gKi8KLSAjaWYgZGVmaW5lZChIQVZFX0xPTkdfRE9VQkxFKQotLURFRlVOXzEoY29weV9sZG91YmxlX3RvX2NoYXIsbG9uZyBkb3VibGUsY2hhcikKLStERUZVTl8xKGNvcHlfbGRvdWJsZV90b19jaGFyLGxvbmcgZG91YmxlLHNpZ25lZCBjaGFyKQotICNkZWZpbmUgbGRvdWJsZV90b19jaGFyCU5VTEwKLSBERUZVTl8xKGNvcHlfbGRvdWJsZV90b191Y2hhcixsb25nIGRvdWJsZSx1bnNpZ25lZCBjaGFyKQotICNkZWZpbmUgbGRvdWJsZV90b191Y2hhcglOVUxMCi1AQCAtNTQ1LDcgKzU0NSw3IEBAIFRPX0RPVUJMRV9GVU4obGRvdWJsZV90b19vbmVfZG91YmxlLGxvbmcKLSAjaWYgU0xBTkdfSEFTX0ZMT0FUCi0gc3RhdGljIFRvX0RvdWJsZV9GdW5fVGFibGVfVHlwZSBUb19Eb3VibGVfRnVuX1RhYmxlIFtNQVhfQVJJVEhNRVRJQ19UWVBFU10gPQotIHsKLS0gICB7c2l6ZW9mKGNoYXIpLCBjaGFyX3RvX29uZV9kb3VibGV9LAotKyAgIHtzaXplb2Yoc2lnbmVkIGNoYXIpLCBjaGFyX3RvX29uZV9kb3VibGV9LAotICAgIHtzaXplb2YodW5zaWduZWQgY2hhciksIHVjaGFyX3RvX29uZV9kb3VibGV9LAotICAgIHtzaXplb2Yoc2hvcnQpLCBzaG9ydF90b19vbmVfZG91YmxlfSwKLSAgICB7c2l6ZW9mKHVuc2lnbmVkIHNob3J0KSwgdXNob3J0X3RvX29uZV9kb3VibGV9LAotQEAgLTU4Myw3ICs1ODMsNyBAQCBzdGF0aWMgVG9fRG91YmxlX0Z1bl9UYWJsZV9UeXBlIFRvX0RvdWJsCi0gCi0gc3RhdGljIEJpbmFyeV9NYXRyaXhfVHlwZSBCaW5hcnlfTWF0cml4IFtNQVhfQVJJVEhNRVRJQ19UWVBFU11bTUFYX0FSSVRITUVUSUNfVFlQRVNdID0KLSB7Ci0tICAgLyogY2hhciAqLwotKyAgIC8qIHNpZ25lZCBjaGFyICovCi0gICAgewotICAgICAgeyhGVk9JRF9TVEFSKWNvcHlfY2hhcl90b19jaGFyLCBjaGFyX3RvX2NoYXJ9LAotICAgICAgeyhGVk9JRF9TVEFSKWNvcHlfY2hhcl90b191Y2hhciwgY2hhcl90b191Y2hhcn0sCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NsYW5nL3NsYW5nL2ZpeC1jaGVjay1wY3JlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZy9maXgtY2hlY2stcGNyZS5wYXRjaAppbmRleCAwYzE1NTNhLi5hMGVjMGZmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NsYW5nL3NsYW5nL2ZpeC1jaGVjay1wY3JlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmcvZml4LWNoZWNrLXBjcmUucGF0Y2gKQEAgLTExLDE0ICsxMSwxMyBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCiBTaWduZWQtb2ZmLWJ5OiBSb3kuTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CiAtLS0KLSBjb25maWd1cmUgfCAgIDYwICsrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA1NCBkZWxldGlvbnMoLSkKKyBjb25maWd1cmUgfCAgIDcyICsrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNjYgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKLWluZGV4IGYxNTg2YzMuLmQyMjgxNGYgMTAwNzU1CiAtLS0gYS9jb25maWd1cmUKICsrKyBiL2NvbmZpZ3VyZQotQEAgLTY5OTEsNiArNjk5MSw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciB0aGUgcGNyZSBsaWJyYXJ5IGFuZCBoZWFkZXIgZmlsZXMgLi4uICIgPiY2OyB9CitAQCAtNzE5MSw2ICs3MTkxLDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHRoZSBwY3JlIGxpYnJhcnkgYW5kIGhlYWRlciBmaWxlcyAuLi4gIiA+JjY7IH0KICAJIC91c3IvaW5jbHVkZS9wY3JlLC91c3IvbGliIFwKICAJIC91c3IvcGNyZS9pbmNsdWRlLC91c3IvcGNyZS9saWIgXAogIAkgL3Vzci9pbmNsdWRlLC91c3IvbGliIFwKQEAgLTI2LDcgKzI1LDcgQEAKICAJIC9vcHQvaW5jbHVkZS9wY3JlLC9vcHQvbGliIFwKICAJIC9vcHQvcGNyZS9pbmNsdWRlLC9vcHQvcGNyZS9saWIgXAogIAkgL29wdC9pbmNsdWRlLC9vcHQvbGliIgotQEAgLTcwMjEsMTQgKzcwMjIsMTQgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHRoZSBwY3JlIGxpYnJhcnkgYW5kIGhlYWRlciBmaWxlcyAuLi4gIiA+JjY7IH0KK0BAIC03MjIxLDE0ICs3MjIyLDE0IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciB0aGUgcGNyZSBsaWJyYXJ5IGFuZCBoZWFkZXIgZmlsZXMgLi4uICIgPiY2OyB9CiAgICAgICAgICB4aW5jZGlyPWBlY2hvICRpbmNsdWRlX2FuZF9saWIgfCB0ciAnLCcgJyAnIHwgYXdrICd7cHJpbnQgJDF9J2AKICAJeGxpYmRpcj1gZWNobyAkaW5jbHVkZV9hbmRfbGliIHwgdHIgJywnICcgJyB8IGF3ayAne3ByaW50ICQyfSdgCiAgCWZvdW5kPTAKQEAgLTQ1LDcgKzQ0LDcgQEAKICAJICAgICAgamRfd2l0aF9wY3JlX2xpYnJhcnk9InllcyIKICAJICAgICAgZm91bmQ9MQogIAkgICAgICBicmVhawotQEAgLTcwNTQsNTYgKzcwNTUsNyBAQCAkYXNfZWNobyAieWVzOiAkamRfcGNyZV9saWJyYXJ5X2RpciBhbmQgJGpkX3BjcmVfaW5jbHVkZV9kaXIiID4mNjsgfQorQEAgLTcyNTUsNjggKzcyNTUsNyBAQCAkYXNfZWNobyAieWVzOiAkamRfcGNyZV9saWJyYXJ5X2RpciBhbmQgJGpkX3BjcmVfaW5jbHVkZV9kaXIiID4mNjsgfQogICAgICB0aGVuCiAgICAgICAgUENSRV9MSUI9IiIKICAgICAgZWxzZQpAQCAtNzQsNyArNzMsNyBAQAogLSAgICAgIGZpCiAtICAgIGZpCiAtICA7OwotLSAgKm9zZip8Km9wZW5ic2QqKQorLSAgKm9zZip8Km9wZW5ic2QqfCpmcmVlYnNkKikKIC0gICAgaWYgdGVzdCAiWCRHQ0MiID0gWHllcwogLSAgICB0aGVuCiAtICAgICAgUlBBVEg9Ii1XbCwtcnBhdGgsIgpAQCAtOTUsNyArOTQsMTkgQEAKIC0gICAgICBSUEFUSD0iJFJQQVRIJGpkX3BjcmVfbGlicmFyeV9kaXIiCiAtICAgIGZpCiAtICBlbHNlCi0tICAgIFJQQVRIPSIkUlBBVEg6JGpkX3BjcmVfbGlicmFyeV9kaXIiCistICAgIF9hbHJlYWR5X3RoZXJlPTAKKy0gICAgZm9yIFggaW4gYGVjaG8gJFJQQVRIIHwgc2VkICdzLzovIC9nJ2AKKy0gICAgZG8KKy0gICAgICBpZiB0ZXN0ICIkWCIgPSAiJGpkX3BjcmVfbGlicmFyeV9kaXIiCistICAgICAgdGhlbgorLSAgICAgICAgX2FscmVhZHlfdGhlcmU9MQorLQlicmVhaworLSAgICAgIGZpCistICAgIGRvbmUKKy0gICAgaWYgdGVzdCAkX2FscmVhZHlfdGhlcmUgPSAwCistICAgIHRoZW4KKy0gICAgICBSUEFUSD0iJFJQQVRIOiRqZF9wY3JlX2xpYnJhcnlfZGlyIgorLSAgICBmaQogLSAgZmkKIC1maQogLQpAQCAtMTAzLDYgKzExNCwzIEBACiAgICAgIGZpCiAgCiAgICAgIFBDUkVfSU5DPS1JJGpkX3BjcmVfaW5jbHVkZV9kaXIKLS0tIAotMS43LjQuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NsYW5nL3NsYW5nL3JwYXRoZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZy9ycGF0aGZpeC5wYXRjaAppbmRleCA1MGNhYzkyLi5mODJhNTMxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NsYW5nL3NsYW5nL3JwYXRoZml4LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmcvcnBhdGhmaXgucGF0Y2gKQEAgLTEwLDcgKzEwLDcgQEAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBzbGFuZy0yLjIuNC5vcmlnL2NvbmZpZ3VyZQkyMDEyLTAzLTE0IDIzOjQwOjAxLjI4MzU2MDY3OSArMDAwMAogKysrIHNsYW5nLTIuMi40L2NvbmZpZ3VyZQkyMDEyLTAzLTE0IDIzOjQxOjE4LjAyMzU1ODkwMCArMDAwMAotQEAgLTYwODEsNTYgKzYwODEsNyBAQAorQEAgLTYyNDYsNjggKzYyNDYsNyBAQCBlc2FjCiAgRUxGX0NGTEFHUz0iJEVMRl9DRkxBR1MgJElFRUVfQ0ZMQUdTIgogIENGTEFHUz0iJENGTEFHUyAkSUVFRV9DRkxBR1MiCiAgCkBAIC0zOSw3ICszOSw3IEBACiAtICAgICAgZmkKIC0gICAgZmkKIC0gIDs7Ci0tICAqb3NmKnwqb3BlbmJzZCopCistICAqb3NmKnwqb3BlbmJzZCp8KmZyZWVic2QqKQogLSAgICBpZiB0ZXN0ICJYJEdDQyIgPSBYeWVzCiAtICAgIHRoZW4KIC0gICAgICBSUEFUSD0iLVdsLC1ycGF0aCwiCkBAIC02MCw3ICs2MCwxOSBAQAogLSAgICAgIFJQQVRIPSIkUlBBVEgkbGliZGlyIgogLSAgICBmaQogLSAgZWxzZQotLSAgICBSUEFUSD0iJFJQQVRIOiRsaWJkaXIiCistICAgIF9hbHJlYWR5X3RoZXJlPTAKKy0gICAgZm9yIFggaW4gYGVjaG8gJFJQQVRIIHwgc2VkICdzLzovIC9nJ2AKKy0gICAgZG8KKy0gICAgICBpZiB0ZXN0ICIkWCIgPSAiJGxpYmRpciIKKy0gICAgICB0aGVuCistICAgICAgICBfYWxyZWFkeV90aGVyZT0xCistCWJyZWFrCistICAgICAgZmkKKy0gICAgZG9uZQorLSAgICBpZiB0ZXN0ICRfYWxyZWFkeV90aGVyZSA9IDAKKy0gICAgdGhlbgorLSAgICAgIFJQQVRIPSIkUlBBVEg6JGxpYmRpciIKKy0gICAgZmkKIC0gIGZpCiAtZmkKIC0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmcvc2xhbmctZml4LXRoZS1pY29udi1leGlzdGVuY2UtY2hlY2tpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NsYW5nL3NsYW5nL3NsYW5nLWZpeC10aGUtaWNvbnYtZXhpc3RlbmNlLWNoZWNraW5nLnBhdGNoCmluZGV4IDk1OGZlOTguLjg1MDU1MWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmcvc2xhbmctZml4LXRoZS1pY29udi1leGlzdGVuY2UtY2hlY2tpbmcucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZy9zbGFuZy1maXgtdGhlLWljb252LWV4aXN0ZW5jZS1jaGVja2luZy5wYXRjaApAQCAtMTksMTQgKzE5LDE0IEBACiAKIFNpZ25lZC1vZmYtYnk6IFpoZW5nIEp1bmxpbmcgPHpoZW5nanVubGluZ0BodWF3ZWkuY29tPgogLS0tCi0gY29uZmlndXJlIHwgNjAgKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNTQgZGVsZXRpb25zKC0pCisgY29uZmlndXJlIHwgICA3MiArKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDY2IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCi1pbmRleCA3YTk2MjU2Li45MTYzMmYzIDEwMDc1NQoraW5kZXggZmEzOTVmZi4uN2ZhNzY5YyAxMDA3NTUKIC0tLSBhL2NvbmZpZ3VyZQogKysrIGIvY29uZmlndXJlCi1AQCAtNzkwOSw2ICs3OTA5LDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHRoZSBpY29udiBsaWJyYXJ5IGFuZCBoZWFkZXIgZmlsZXMgLi4uICIgPiY2OyB9CitAQCAtODI1OSw2ICs4MjU5LDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHRoZSBpY29udiBsaWJyYXJ5IGFuZCBoZWFkZXIgZmlsZXMgLi4uICIgPiY2OyB9CiAgCSAvdXNyL2luY2x1ZGUvaWNvbnYsL3Vzci9saWIgXAogIAkgL3Vzci9pY29udi9pbmNsdWRlLC91c3IvaWNvbnYvbGliIFwKICAJIC91c3IvaW5jbHVkZSwvdXNyL2xpYiBcCkBAIC0zNCw3ICszNCw3IEBACiAgCSAvb3B0L2luY2x1ZGUvaWNvbnYsL29wdC9saWIgXAogIAkgL29wdC9pY29udi9pbmNsdWRlLC9vcHQvaWNvbnYvbGliIFwKICAJIC9vcHQvaW5jbHVkZSwvb3B0L2xpYiIKLUBAIC03OTM5LDE0ICs3OTQwLDE0IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciB0aGUgaWNvbnYgbGlicmFyeSBhbmQgaGVhZGVyIGZpbGVzIC4uLiAiID4mNjsgfQorQEAgLTgyODksMTQgKzgyOTAsMTQgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHRoZSBpY29udiBsaWJyYXJ5IGFuZCBoZWFkZXIgZmlsZXMgLi4uICIgPiY2OyB9CiAgICAgICAgICB4aW5jZGlyPWBlY2hvICRpbmNsdWRlX2FuZF9saWIgfCB0ciAnLCcgJyAnIHwgYXdrICd7cHJpbnQgJDF9J2AKICAJeGxpYmRpcj1gZWNobyAkaW5jbHVkZV9hbmRfbGliIHwgdHIgJywnICcgJyB8IGF3ayAne3ByaW50ICQyfSdgCiAgCWZvdW5kPTAKQEAgLTUzLDcgKzUzLDcgQEAKICAJICAgICAgamRfd2l0aF9pY29udl9saWJyYXJ5PSJ5ZXMiCiAgCSAgICAgIGZvdW5kPTEKICAJICAgICAgYnJlYWsKLUBAIC03OTcyLDU2ICs3OTczLDcgQEAgJGFzX2VjaG8gInllczogJGpkX2ljb252X2xpYnJhcnlfZGlyIGFuZCAkamRfaWNvbnZfaW5jbHVkZV9kaXIiID4mNjsgfQorQEAgLTgyMDEsNjggKzgyMDEsNyBAQCAkYXNfZWNobyAieWVzOiAkamRfaWNvbnZfbGlicmFyeV9kaXIgYW5kICRqZF9pY29udl9pbmNsdWRlX2RpciIgPiY2OyB9CiAgICAgIHRoZW4KICAgICAgICBJQ09OVl9MSUI9IiIKICAgICAgZWxzZQpAQCAtODIsNyArODIsNyBAQAogLSAgICAgIGZpCiAtICAgIGZpCiAtICA7OwotLSAgKm9zZip8Km9wZW5ic2QqKQorLSAgKm9zZip8Km9wZW5ic2QqfCpmcmVlYnNkKikKIC0gICAgaWYgdGVzdCAiWCRHQ0MiID0gWHllcwogLSAgICB0aGVuCiAtICAgICAgUlBBVEg9Ii1XbCwtcnBhdGgsIgpAQCAtMTAzLDcgKzEwMywxOSBAQAogLSAgICAgIFJQQVRIPSIkUlBBVEgkamRfaWNvbnZfbGlicmFyeV9kaXIiCiAtICAgIGZpCiAtICBlbHNlCi0tICAgIFJQQVRIPSIkUlBBVEg6JGpkX2ljb252X2xpYnJhcnlfZGlyIgorLSAgICBfYWxyZWFkeV90aGVyZT0wCistICAgIGZvciBYIGluIGBlY2hvICRSUEFUSCB8IHNlZCAncy86LyAvZydgCistICAgIGRvCistICAgICAgaWYgdGVzdCAiJFgiID0gIiRqZF9pY29udl9saWJyYXJ5X2RpciIKKy0gICAgICB0aGVuCistICAgICAgICBfYWxyZWFkeV90aGVyZT0xCistCWJyZWFrCistICAgICAgZmkKKy0gICAgZG9uZQorLSAgICBpZiB0ZXN0ICRfYWxyZWFkeV90aGVyZSA9IDAKKy0gICAgdGhlbgorLSAgICAgIFJQQVRIPSIkUlBBVEg6JGpkX2ljb252X2xpYnJhcnlfZGlyIgorLSAgICBmaQogLSAgZmkKIC1maQogLQpAQCAtMTExLDYgKzEyMywzIEBACiAgICAgIGZpCiAgCiAgICAgIElDT05WX0lOQz0tSSRqZF9pY29udl9pbmNsdWRlX2RpcgotLS0gCi0xLjguMy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmcvc3ByaW50Zi1idWctY29uY2VybmluZy04LWJpdC1jaGFyYWN0ZXJzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZy9zcHJpbnRmLWJ1Zy1jb25jZXJuaW5nLTgtYml0LWNoYXJhY3RlcnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyMDAwMWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZy9zcHJpbnRmLWJ1Zy1jb25jZXJuaW5nLTgtYml0LWNoYXJhY3RlcnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLUZyb20gM2EwNWQxYTkyMDE0MGU5ZjJjNzI3OTFjMTJmNjY0MjEzZmViNDZkZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hbmZyZWQgSGFua2UgPE1hbmZyZWQuSGFua2VAdG5ndGVjaC5jb20+Ci1EYXRlOiBUaHUsIDIwIEp1biAyMDEzIDEwOjI0OjEyICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNwcmludGYgYnVnIChjb25jZXJuaW5nICVjIGZvciA4LWJpdCBjaGFyYWN0ZXIgaW4gbm9uLVVURjgKLSBtb2RlKSBmaXhlZAotCi1jaGFyICpzdHIgcG9pbnRzIHRvIFNMdWNoYXJfVHlwZSB1dGY4X2J1ZltdLCB3aGljaCBoYWQgdG9vIHNtYWxsIHNjb3BlCi0KLXNyYy90ZXN0L3N0cm9wcy5zbCBmYWlsZWQgaW4gdGhlIGZvbGxvd2luZyBlbnZpcm9ubWVudDoKLSAtIGNvbXBpbGVyOiAgZ2NjIChEZWJpYW4gNC43LjItNSkgNC43LjIKLSAtIENGTEFHUzogICAgLWcgLU8yCi0gLSBsaWJjOiAgICAgIEdOVSBDIExpYnJhcnkgKERlYmlhbiBFR0xJQkMgMi4xMy0zOCkgc3RhYmxlIHJlbGVhc2UgdmVyc2lvbiAyLjEzCi0gLSBrZXJuZWw6ICAgIDMuMi4wLTQtNjg2LXBhZSAjMSBTTVAgRGViaWFuIDMuMi4zOS0yIGk2ODYgR05VL0xpbnV4Ci0tLS0KLSBzcmMvc2xzdHJvcHMuYyB8ICAgIDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9zbHN0cm9wcy5jIGIvc3JjL3Nsc3Ryb3BzLmMKLWluZGV4IGNlNmFjYjAuLmNiYmJiMDEgMTAwNjQ0Ci0tLS0gYS9zcmMvc2xzdHJvcHMuYwotKysrIGIvc3JjL3Nsc3Ryb3BzLmMKLUBAIC0xODg0LDYgKzE4ODQsNyBAQCBzdGF0aWMgY2hhciAqU0xkb19zcHJpbnRmIChjaGFyICpmbXQpIC8qe3t7Ki8KLSAjZW5kaWYKLSAgICB1bnNpZ25lZCBjaGFyIHVjaDsKLSAgICBpbnQgdXNlX2xvbmcgPSAwLCB1c2VfYWx0X2Zvcm1hdCA9IDA7Ci0rICAgU0x1Y2hhcl9UeXBlIHV0ZjhfYnVmW1NMVVRGOF9NQVhfTUJMRU4rMV07Ci0gCi0gICAgd2hpbGUgKDEpCi0gICAgICB7Ci1AQCAtMjA3MSw3ICsyMDcyLDYgQEAgc3RhdGljIGNoYXIgKlNMZG9fc3ByaW50ZiAoY2hhciAqZm10KSAvKnt7eyovCi0gI2VuZGlmCi0gCSAgICAgICB7Ci0gCQkgIFNMd2NoYXJfVHlwZSB3YzsKLS0JCSAgU0x1Y2hhcl9UeXBlIHV0ZjhfYnVmW1NMVVRGOF9NQVhfTUJMRU4rMV07Ci0gCi0gCQkgIGlmICgtMSA9PSBTTGFuZ19wb3Bfd2NoYXIgKCZ3YykpCi0gCQkgICAgcmV0dXJuIG91dDsKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NsYW5nL3NsYW5nXzIuMi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZ18yLjIuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjM3ZTlmMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NsYW5nL3NsYW5nXzIuMi40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgc2hhcmVkIGxpYnJhcnkgZm9yIHRoZSBTLUxhbmcgZXh0ZW5zaW9uIGxhbmd1YWdlIgotCi1ERVNDUklQVElPTiA9ICJTLUxhbmcgaXMgYW4gaW50ZXJwcmV0ZWQgbGFuZ3VhZ2UgYW5kIGEgcHJvZ3JhbW1pbmcgbGlicmFyeS4gIFRoZSBcCi1TLUxhbmcgbGFuZ3VhZ2Ugd2FzIGRlc2lnbmVkIHNvIHRoYXQgaXQgY2FuIGJlIGVhc2lseSBlbWJlZGRlZCBpbnRvIFwKLWEgcHJvZ3JhbSB0byBwcm92aWRlIHRoZSBwcm9ncmFtIHdpdGggYSBwb3dlcmZ1bCBleHRlbnNpb24gbGFuZ3VhZ2UuIFwKLVRoZSBTLUxhbmcgbGlicmFyeSwgcHJvdmlkZWQgaW4gdGhpcyBwYWNrYWdlLCBwcm92aWRlcyB0aGUgUy1MYW5nIFwKLWV4dGVuc2lvbiBsYW5ndWFnZS4gIFMtTGFuZydzIHN5bnRheCByZXNlbWJsZXMgQywgd2hpY2ggbWFrZXMgaXQgZWFzeSBcCi10byByZWNvZGUgUy1MYW5nIHByb2NlZHVyZXMgaW4gQyBpZiB5b3UgbmVlZCB0by4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuamVkc29mdC5vcmcvc2xhbmcvIgotU0VDVElPTiA9ICJsaWJzIgotREVQRU5EUyA9ICJwY3JlIG5jdXJzZXMiCi1QUiA9ICJyMTIiCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNTJhMThhNDcyZDRmN2U0NTQ3OWIwNjU2MzcxN2MwMiIKLQotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuamVkc29mdC5vcmcvcmVsZWFzZXMvc2xhbmcvb2xkL3NsYW5nLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vcnBhdGhmaXgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LWNoZWNrLXBjcmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY2hhbmdlLWNoYXItdHlwZS10by1zaWduZWQtY2hhci1pbi1tYWNyb3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc3ByaW50Zi1idWctY29uY2VybmluZy04LWJpdC1jaGFyYWN0ZXJzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NsYW5nLWZpeC10aGUtaWNvbnYtZXhpc3RlbmNlLWNoZWNraW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWVycm9yLWNvbmZsaWN0aW5nLXR5cGVzLWZvci1wb3NpeF9jbG9zZS5wYXRjaCBcCi0gICAgICAgICAgIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly93d3cuamVkc29mdC5vcmcvcmVsZWFzZXMvc2xhbmcvIgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKLQotQ0xFQU5CUk9LRU4gPSAiMSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjdmY2ZkNDQ3ZTM3OGYwN2RkMGMwYmFlNjcxZmU2NDg3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlhODI1N2E5YTJhNTUwOTlhZjg1OGIxMzMzOGRjOGYzYTA2ZGQyMDY5ZjQ2ZjBkZjJjOWMzYmI4NGEwMWQ1ZGIiCi0KLUVYVFJBX09FQ09ORiArPSAiIC0td2l0aG91dC16IC0td2l0aG91dC1wbmcgLS13aXRob3V0LW9uaWcgLS14LWluY2x1ZGVzPSR7U1RBR0lOR19ESVJfSE9TVH0vdXNyL2luY2x1ZGUvWDExIC0teC1saWJyYXJpZXM9JHtTVEFHSU5HX0RJUl9IT1NUfS91c3IvbGliIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICAjIHNsYW5nIGtlZXBzIGNvbmZpZ3VyZS5hYyBhbmQgcmVzdCBvZiBhdXRvY29uZiBmaWxlcyBpbiBhdXRvY29uZi8gZGlyZWN0b3J5Ci0gICAgIyB3ZSBoYXZlIHRvIGdvIHRoZXJlIHRvIGJlIGFibGUgdG8gcnVuIGdudS1jb25maWdpemUgY2F1c2UgaXQgZXhwZWN0cyBjb25maWd1cmUue2luLGFjfQotICAgICMgdG8gYmUgcHJlc2VudC4gUmVzdWx0aW5nIGZpbGVzIGxhbmQgaW4gYXV0b2NvbmYvYXV0b2NvbmYvIHNvIHdlIG5lZWQgdG8gbW92ZSB0aGVtLgotICAgIGNkICR7U30vYXV0b2NvbmYgJiYgZ251LWNvbmZpZ2l6ZSAtLWZvcmNlICYmIG12IGF1dG9jb25mL2NvbmZpZy4qIC4KLSAgICBjZCAke0J9Ci19Ci0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfSAtZSAnSU5TVF9MSUJfRElSPSR7U1RBR0lOR19ESVJfSE9TVH0vdXNyL2xpYicKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8ke0JQTn0vdjIvbW9kdWxlcy8gJHtkYXRhZGlyfS9zbHNoLyIKLQotUEFSQUxMRUxfTUFLRSA9ICIiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZ18yLjMuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmdfMi4zLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdlZmJiZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmdfMi4zLjAuYmIKQEAgLTAsMCArMSw1MSBAQAorU1VNTUFSWSA9ICJUaGUgc2hhcmVkIGxpYnJhcnkgZm9yIHRoZSBTLUxhbmcgZXh0ZW5zaW9uIGxhbmd1YWdlIgorCitERVNDUklQVElPTiA9ICJTLUxhbmcgaXMgYW4gaW50ZXJwcmV0ZWQgbGFuZ3VhZ2UgYW5kIGEgcHJvZ3JhbW1pbmcgbGlicmFyeS4gIFRoZSBcCitTLUxhbmcgbGFuZ3VhZ2Ugd2FzIGRlc2lnbmVkIHNvIHRoYXQgaXQgY2FuIGJlIGVhc2lseSBlbWJlZGRlZCBpbnRvIFwKK2EgcHJvZ3JhbSB0byBwcm92aWRlIHRoZSBwcm9ncmFtIHdpdGggYSBwb3dlcmZ1bCBleHRlbnNpb24gbGFuZ3VhZ2UuIFwKK1RoZSBTLUxhbmcgbGlicmFyeSwgcHJvdmlkZWQgaW4gdGhpcyBwYWNrYWdlLCBwcm92aWRlcyB0aGUgUy1MYW5nIFwKK2V4dGVuc2lvbiBsYW5ndWFnZS4gIFMtTGFuZydzIHN5bnRheCByZXNlbWJsZXMgQywgd2hpY2ggbWFrZXMgaXQgZWFzeSBcCit0byByZWNvZGUgUy1MYW5nIHByb2NlZHVyZXMgaW4gQyBpZiB5b3UgbmVlZCB0by4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuamVkc29mdC5vcmcvc2xhbmcvIgorU0VDVElPTiA9ICJsaWJzIgorREVQRU5EUyA9ICJwY3JlIG5jdXJzZXMiCisKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNTJhMThhNDcyZDRmN2U0NTQ3OWIwNjU2MzcxN2MwMiIKKworCitTUkNfVVJJID0gImh0dHA6Ly93d3cuamVkc29mdC5vcmcvcmVsZWFzZXMvJHtCUE59LyR7QlB9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vcnBhdGhmaXgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4LWNoZWNrLXBjcmUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc2xhbmctZml4LXRoZS1pY29udi1leGlzdGVuY2UtY2hlY2tpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtZXJyb3ItY29uZmxpY3RpbmctdHlwZXMtZm9yLXBvc2l4X2Nsb3NlLnBhdGNoIFwKKyAgICAgICAgICAiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5qZWRzb2Z0Lm9yZy9yZWxlYXNlcy9zbGFuZy8iCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAorCitDTEVBTkJST0tFTiA9ICIxIgorCitTUkNfVVJJW21kNXN1bV0gPSAiM2JjYzc5MDQ2MGQ1MmRiMTMxNmMyMDM5NWI3YWMyZjEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjk1MjI0MDYwZjQ1ZTBkODIxMmE1MDM5YjMzOWFmYTVmMWE5NGExYmIwMjk4ZTc5NjEwNGU1YjEyZTkyNjEyOSIKKworRVhUUkFfT0VDT05GICs9ICIgLS13aXRob3V0LXogLS13aXRob3V0LXBuZyAtLXdpdGhvdXQtb25pZyAtLXgtaW5jbHVkZXM9JHtTVEFHSU5HX0RJUl9IT1NUfS91c3IvaW5jbHVkZS9YMTEgLS14LWxpYnJhcmllcz0ke1NUQUdJTkdfRElSX0hPU1R9L3Vzci9saWIiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICMgc2xhbmcga2VlcHMgY29uZmlndXJlLmFjIGFuZCByZXN0IG9mIGF1dG9jb25mIGZpbGVzIGluIGF1dG9jb25mLyBkaXJlY3RvcnkKKyAgICAjIHdlIGhhdmUgdG8gZ28gdGhlcmUgdG8gYmUgYWJsZSB0byBydW4gZ251LWNvbmZpZ2l6ZSBjYXVzZSBpdCBleHBlY3RzIGNvbmZpZ3VyZS57aW4sYWN9CisgICAgIyB0byBiZSBwcmVzZW50LiBSZXN1bHRpbmcgZmlsZXMgbGFuZCBpbiBhdXRvY29uZi9hdXRvY29uZi8gc28gd2UgbmVlZCB0byBtb3ZlIHRoZW0uCisgICAgY2QgJHtTfS9hdXRvY29uZiAmJiBnbnUtY29uZmlnaXplIC0tZm9yY2UgJiYgbXYgYXV0b2NvbmYvY29uZmlnLiogLgorICAgIGNkICR7Qn0KK30KKworZG9faW5zdGFsbCgpIHsKKwlvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9IC1lICdJTlNUX0xJQl9ESVI9JHtTVEFHSU5HX0RJUl9IT1NUfS91c3IvbGliJworfQorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9LyR7QlBOfS92Mi9tb2R1bGVzLyAke2RhdGFkaXJ9L3Nsc2gvIgorCitQQVJBTExFTF9NQUtFID0gIiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0YXQvc3RhdC0zLjMvZml4LXNlY3VyaXR5LWZvcm1hdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3RhdC9zdGF0LTMuMy9maXgtc2VjdXJpdHktZm9ybWF0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjMDFlZDAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0YXQvc3RhdC0zLjMvZml4LXNlY3VyaXR5LWZvcm1hdC5wYXRjaApAQCAtMCwwICsxLDY4IEBACitzdGF0OiBGaXhpbmcgc2VjdXJpdHkgZm9ybWF0dGluZyBpc3N1ZXMKKworRml4IHNlY3VyaXR5IGZvcm1hdHRpbmcgaXNzdWVzIHJlbGF0ZWQgdG8gcHJpbnRmIHdpdGhvdXQgTlVMTCBhcmd1bWVudCAKKworc3RhdC5jOiBJbiBmdW5jdGlvbiAncHJpbnRfaHVtYW5fYWNjZXNzJzoKK3N0YXQuYzoyOTI6MTM6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQorICAgICBwcmludGYgKGFjY2Vzcyk7CisgICAgICAgICAgICAgXgorc3RhdC5jOiBJbiBmdW5jdGlvbiAncHJpbnRfaHVtYW5fdGltZSc6CitzdGF0LmM6Mjk5OjU3OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KKyAgIGlmIChzdHJmdGltZShzdHIsIDQwLCAiJWMiLCBsb2NhbHRpbWUodCkpID4gMCkgcHJpbnRmKHN0cik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitzdGF0LmM6IEluIGZ1bmN0aW9uICdwcmludF9pdCc6CitzdGF0LmM6NjEzOjY6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQorICAgICAgcHJpbnRmKGIpOworICAgICAgXgorc3RhdC5jOjY0Mjo2OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KKyAgICAgIHByaW50ZihiKTsKKyAgICAgIF4KKworW1lPQ1RPICM5NTUwXQorW2h0dHBzOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU1MF0KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEVkd2luIFBsYXVjaHUgPGVkd2luLnBsYXVjaHUuY2FtYWNob0BpbnRlbC5jb20+CisKK2RpZmYgLS1naXQgYS9zdGF0LmMgYi9zdGF0LmMKK2luZGV4IDFlZDA3YTkuLjJiZTZmNjIgMTAwNjQ0CistLS0gYS9zdGF0LmMKKysrKyBiL3N0YXQuYworQEAgLTI4OSwxNSArMjg5LDE1IEBAIHZvaWQgcHJpbnRfaHVtYW5fYWNjZXNzKHN0cnVjdCBzdGF0ICpzdGF0YnVmKQorICAgICBkZWZhdWx0OgorICAgICAgIGFjY2Vzc1swXSA9ICc/JzsKKyAgICAgfQorLSAgICBwcmludGYgKGFjY2Vzcyk7CisrICAgIGZwdXRzKGFjY2VzcyxzdGRvdXQpOworIH0KKyAKKyB2b2lkIHByaW50X2h1bWFuX3RpbWUodGltZV90ICp0KQorIHsKKyAgIGNoYXIgc3RyWzQwXTsKKyAgIAorLSAgaWYgKHN0cmZ0aW1lKHN0ciwgNDAsICIlYyIsIGxvY2FsdGltZSh0KSkgPiAwKSBwcmludGYoc3RyKTsKKy0gIGVsc2UgcHJpbnRmKCJDYW5ub3QgY2FsY3VsYXRlIGh1bWFuIHJlYWRhYmxlIHRpbWUsIHNvcnJ5Iik7CisrICBpZiAoc3RyZnRpbWUoc3RyLCA0MCwgIiVjIiwgbG9jYWx0aW1lKHQpKSA+IDApIGZwdXRzKHN0cixzdGRvdXQpOworKyAgZWxzZSBmcHV0cygiQ2Fubm90IGNhbGN1bGF0ZSBodW1hbiByZWFkYWJsZSB0aW1lLCBzb3JyeSIsc3Rkb3V0KTsKKyB9CisgCisgLyogcHJpbnQgc3RhdGZzIGluZm8gKi8KK0BAIC02MTAsNyArNjEwLDcgQEAgdm9pZCBwcmludF9pdChjaGFyICptYXN0ZXJmb3JtYXQsIGNoYXIgKmZpbGVuYW1lLAorIAl7CisgCSAgICBzdHJjcHkgKHBmb3JtYXQsICIlIik7CisgCSAgICAqbSsrID0gJ1wwJzsKKy0JICAgIHByaW50ZihiKTsKKysJICAgIGZwdXRzKGIsc3Rkb3V0KTsKKyAKKyAJICAgIC8qIGNvcHkgYWxsIGZvcm1hdCBzcGVjaWZpZXJzIHRvIG91ciBmb3JtYXQgc3RyaW5nICovCisgCSAgICB3aGlsZSAoaXNkaWdpdCgqbSkgfHwgc3RyY2hyKCIjMC0rLiBJIiwgKm0pKQorQEAgLTYzOSw3ICs2MzksNyBAQCB2b2lkIHByaW50X2l0KGNoYXIgKm1hc3RlcmZvcm1hdCwgY2hhciAqZmlsZW5hbWUsCisgCX0KKyAJZWxzZQorIAl7CistCSAgICBwcmludGYoYik7CisrCSAgICBmcHV0cyhiLHN0ZG91dCk7CisgCSAgICBiID0gTlVMTDsKKyAJfQorICAgICB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0YXQvc3RhdF8zLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0YXQvc3RhdF8zLjMuYmIKaW5kZXggYTVlY2UwNy4uMDY5N2M3MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdGF0L3N0YXRfMy4zLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3RhdC9zdGF0XzMuMy5iYgpAQCAtNiw2ICs2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL0dQTDttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCiAKIFNSQ19VUkkgPSAiaHR0cDovL3d3dy5pYmlibGlvLm9yZy9wdWIvTGludXgvdXRpbHMvZmlsZS8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vZml4LXNlY3VyaXR5LWZvcm1hdC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgtZXJyb3ItcmV0dXJuLnBhdGNoIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiMzdlMjQ3ZThlNDAwYWQ5MjA1ZjFiMDUwMGI3MjhmZDMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkb18xLjguMTUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkb18xLjguMTUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0MjA0M2VjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvXzEuOC4xNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLXJlcXVpcmUgc3Vkby5pbmMKLQotU1JDX1VSSSA9ICJodHRwOi8vZnRwLnN1ZG8ud3Mvc3Vkby9kaXN0L3N1ZG8tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnJHtQQU1fU1JDX1VSSX0nLCAnJywgZCl9IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtSW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItaWRfdC1kZWZpbml0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1QQU1fU1JDX1VSSSA9ICJmaWxlOi8vc3Vkby5wYW0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3Y2Y2YjliNzZkMDQ3OGE1NzI0MzJiZWQ0ODFkZDdiNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0MzE2MzgxNzA4MzI0ZGE4YjZjYjE1MWY2NTVjMWExMTg1NTIwN2M3YzAyMjQ0ZDhmZmRlYTUxMDRkN2NjMzA4IgotCi1ERVBFTkRTICs9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKLVJERVBFTkRTXyR7UE59ICs9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtLXBsdWdpbi1saW1pdHMgcGFtLXBsdWdpbi1rZXlpbml0JywgJycsIGQpfSIKLQotRVhUUkFfT0VDT05GICs9ICIgXAotICAgICAgICAgICAgIGFjX2N2X3R5cGVfcnNpemVfdD1ubyBcCi0gICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLS13aXRoLXBhbScsICctLXdpdGhvdXQtcGFtJywgZCl9IFwKLSAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnLS1lbmFibGUtdG1wZmlsZXMuZD0ke2xpYmRpcn0vdG1wZmlsZXMuZCcsICctLWRpc2FibGUtdG1wZmlsZXMuZCcsIGQpfSBcCi0gICAgICAgICAgICAgIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0JaWYgWyAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtJywgJycsIGQpfSIgPSAicGFtIiBdOyB0aGVuCi0JCWluc3RhbGwgLUQgLW0gNjQ0ICR7V09SS0RJUn0vc3Vkby5wYW0gJHtEfS8ke3N5c2NvbmZkaXJ9L3BhbS5kL3N1ZG8KLQlmaQotCi0JY2htb2QgNDExMSAke0R9JHtiaW5kaXJ9L3N1ZG8KLQljaG1vZCAwNDQwICR7RH0ke3N5c2NvbmZkaXJ9L3N1ZG9lcnMKLQotCSMgRXhwbGljaXRseSByZW1vdmUgdGhlICR7bG9jYWxzdGF0ZWRpcn0vcnVuIGRpcmVjdG9yeSB0byBhdm9pZCBRQSBlcnJvcgotCXJtZGlyIC1wIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bi9zdWRvCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vdG1wZmlsZXMuZCIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJleGVjZGlyfS8ke0JQTn0vbGliKiR7U09MSUJTREVWfSAke2xpYmV4ZWNkaXJ9LyR7QlBOfS8qLmxhIFwKLSAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9saWIqJHtTT0xJQlNERVZ9ICR7bGliZXhlY2Rpcn0vKi5sYSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvXzEuOC4xN3AxLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG9fMS44LjE3cDEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjE0YWQ1YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvXzEuOC4xN3AxLmJiCkBAIC0wLDAgKzEsMzYgQEAKK3JlcXVpcmUgc3Vkby5pbmMKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLnN1ZG8ud3Mvc3Vkby9kaXN0L3N1ZG8tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnJHtQQU1fU1JDX1VSSX0nLCAnJywgZCl9IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtSW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItaWRfdC1kZWZpbml0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitQQU1fU1JDX1VSSSA9ICJmaWxlOi8vc3Vkby5wYW0iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1MGE4NDBhNjg4Y2ViNmZhM2FiMjRmYzBhZGY0ZmEyMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjNjkwZDcwN2ZiNTYxYjNlY2RmNmE2ZGU1NTYzYmMwYjc2OTM4OGVmZjIwMWM4NTFlZGJhY2U0MDhiYjE1NWNjIgorCitERVBFTkRTICs9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKK1JERVBFTkRTXyR7UE59ICs9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtLXBsdWdpbi1saW1pdHMgcGFtLXBsdWdpbi1rZXlpbml0JywgJycsIGQpfSIKKworRVhUUkFfT0VDT05GICs9ICIgXAorICAgICAgICAgICAgIGFjX2N2X3R5cGVfcnNpemVfdD1ubyBcCisgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLS13aXRoLXBhbScsICctLXdpdGhvdXQtcGFtJywgZCl9IFwKKyAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnLS1lbmFibGUtdG1wZmlsZXMuZD0ke2xpYmRpcn0vdG1wZmlsZXMuZCcsICctLWRpc2FibGUtdG1wZmlsZXMuZCcsIGQpfSBcCisgICAgICAgICAgICAgIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJaWYgWyAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtJywgJycsIGQpfSIgPSAicGFtIiBdOyB0aGVuCisJCWluc3RhbGwgLUQgLW0gNjQ0ICR7V09SS0RJUn0vc3Vkby5wYW0gJHtEfS8ke3N5c2NvbmZkaXJ9L3BhbS5kL3N1ZG8KKwlmaQorCisJY2htb2QgNDExMSAke0R9JHtiaW5kaXJ9L3N1ZG8KKwljaG1vZCAwNDQwICR7RH0ke3N5c2NvbmZkaXJ9L3N1ZG9lcnMKKworCSMgRXhwbGljaXRseSByZW1vdmUgdGhlICR7bG9jYWxzdGF0ZWRpcn0vcnVuIGRpcmVjdG9yeSB0byBhdm9pZCBRQSBlcnJvcgorCXJtZGlyIC1wIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bi9zdWRvCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vdG1wZmlsZXMuZCIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJleGVjZGlyfS8ke0JQTn0vbGliKiR7U09MSUJTREVWfSAke2xpYmV4ZWNkaXJ9LyR7QlBOfS8qLmxhIFwKKyAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9saWIqJHtTT0xJQlNERVZ9ICR7bGliZXhlY2Rpcn0vKi5sYSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2Qvc3lza2xvZ2QuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9zeXNrbG9nZC5pbmMKaW5kZXggMWUzNjNkYi4uNWMxNWZmZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9zeXNrbG9nZC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9zeXNrbG9nZC5pbmMKQEAgLTU1LDcgKzU1LDcgQEAKIHBrZ19wcmVybV8ke1BOfSAoKSB7CiAJaWYgdGVzdCAieCREIiA9ICJ4IjsgdGhlbgogCWlmIHRlc3QgIiQxIiA9ICJ1cGdyYWRlIiAtbyAiJDEiID0gInJlbW92ZSI7IHRoZW4KLQkJL2V0Yy9pbml0LmQvc3lzbG9nIHN0b3AKKwkJL2V0Yy9pbml0LmQvc3lzbG9nIHN0b3AgfHwgOgogCWZpCiAJZmkKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LmluYwppbmRleCBjMzUzMjkxLi5iYjU2MjlkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXQuaW5jCkBAIC0xNCw2ICsxNCw3IEBACiAKIERFUEVORFMgKz0gImJhc2UtcGFzc3dkIgogCisjIGF1dG90b29scy1icm9rZW5zZXAgYXMgdGhpcyBwYWNrYWdlIGRvZXNuJ3QgdXNlIGF1dG9tYWtlCiBpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgZ2V0dGV4dCBzeXN0ZW1kCiAKIEVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXNlbnNvcnMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdF8xMS4yLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdF8xMS4yLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhOGViOTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXRfMTEuMi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1yZXF1aXJlIHN5c3N0YXQuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PThjYTQzY2JjODQyYzIzMzZlODM1OTI2YzIxNjZjMjhiIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1JbmNsdWRlLW5lZWRlZC1oZWFkZXJzLWV4cGxpY2l0bHkucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlOGI2MTU3NzVhZDk4NzgwZTNmMDY3NWI5MWVkZGIxOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5ODA2YjlhNjYyNTY4Nzk2ZDNmYjkzZWNkMDFlY2VhMTBkODE1ZTY2ODMzN2E2NDY0OTQ5NTNiZmY0YmM0MTU1IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXRfMTEuNC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXRfMTEuNC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5ZjgzZmMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdF8xMS40LjAuYmIKQEAgLTAsMCArMSw4IEBACityZXF1aXJlIHN5c3N0YXQuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWEyM2E3NGIzZjRjYWY5NjE2MjMwNzg5ZDk0MjE3YWNiIgorCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1JbmNsdWRlLW5lZWRlZC1oZWFkZXJzLWV4cGxpY2l0bHkucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlZTdiOGMwYjEzOWExMWE3YTM0MThkYzA2NThjYTFiZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiODUxOGNhODhhY2ZjYmM0NzRhNDA2MDIyZWU5YzBjMzIxMGNjZWY0ZjBlYzgwZTViM2U4YzQxZGRhOGMxNmYyIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyL3JlbW92ZS1nZXRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyL3JlbW92ZS1nZXRzLnBhdGNoCmluZGV4IDBiOGJlMzkuLmYyNGRlOTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGFyL3Rhci9yZW1vdmUtZ2V0cy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Rhci90YXIvcmVtb3ZlLWdldHMucGF0Y2gKQEAgLTMsMjAgKzMsMjcgQEAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotSW5kZXg6IHRhci0xLjI3L2dudS9zdGRpby5pbi5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGFyLTEuMjcub3JpZy9nbnUvc3RkaW8uaW4uaAkyMDEzLTA2LTI5IDA4OjU0OjI2LjAwMDAwMDAwMCArMDMwMAotKysrIHRhci0xLjI3L2dudS9zdGRpby5pbi5oCTIwMTMtMTAtMTYgMTU6MjI6NDYuOTc3MjA0NzM3ICswMzAwCi1AQCAtNzEwLDEwICs3MTAsMTIgQEAKKy0tLQorIGdudS9zdGRpby5pbi5oIHwgMiArKworIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2dudS9zdGRpby5pbi5oIGIvZ251L3N0ZGlvLmluLmgKK2luZGV4IGVjNDM4NzQuLjUwMmUzYWUgMTAwNjQ0CistLS0gYS9nbnUvc3RkaW8uaW4uaAorKysrIGIvZ251L3N0ZGlvLmluLmgKK0BAIC03MjIsMTAgKzcyMiwxMiBAQCBfR0xfV0FSTl9PTl9VU0UgKGdldGxpbmUsICJnZXRsaW5lIGlzIHVucG9ydGFibGUgLSAiCiAgLyogSXQgaXMgdmVyeSByYXJlIHRoYXQgdGhlIGRldmVsb3BlciBldmVyIGhhcyBmdWxsIGNvbnRyb2wgb2Ygc3RkaW4sCiAgICAgc28gYW55IHVzZSBvZiBnZXRzIHdhcnJhbnRzIGFuIHVuY29uZGl0aW9uYWwgd2FybmluZzsgYmVzaWRlcywgQzExCiAgICAgcmVtb3ZlZCBpdC4gICovCiArI2lmIGRlZmluZWQgZ2V0cwogICN1bmRlZiBnZXRzCi0gI2lmIEhBVkVfUkFXX0RFQ0xfR0VUUworICNpZiBIQVZFX1JBV19ERUNMX0dFVFMgJiYgIWRlZmluZWQgX19jcGx1c3BsdXMKICBfR0xfV0FSTl9PTl9VU0UgKGdldHMsICJnZXRzIGlzIGEgc2VjdXJpdHkgaG9sZSAtIHVzZSBmZ2V0cyBpbnN0ZWFkIik7CiAgI2VuZGlmCiArI2VuZGlmCiAgCi0gCiAgI2lmIEBHTlVMSUJfT0JTVEFDS19QUklOVEZAIHx8IEBHTlVMSUJfT0JTVEFDS19QUklOVEZfUE9TSVhACisgc3RydWN0IG9ic3RhY2s7CistLSAKKzIuOC4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGFyL3Rhcl8xLjI4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyXzEuMjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxOGU2MjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyXzEuMjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1yZXF1aXJlIHRhci5pbmMKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbYWNsXSA9ICItLXdpdGgtcG9zaXgtYWNscywgLS13aXRob3V0LXBvc2l4LWFjbHMsIGFjbCwiCi0KLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotU1JDX1VSSSArPSAiZmlsZTovL3JlbW92ZS1nZXRzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9tdXNsX2RpcmVudC5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI4ZjMyYjJiYzFlZDdkZGY0Y2Y0ZTRhMzk3MTEzNDFiMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2MGU0YmZlMDYwMmZlZjM0Y2Q5MDhkOTFjZjYzOGUxN2VlYjA5Mzk0ZDdiOThjMjQ4NzIxN2RjNGQzMTQ3NTYyIgotCi1kb19pbnN0YWxsX2FwcGVuZF9saWJjLW11c2woKSB7Ci0Jcm0gLWYgJHtEfSR7bGliZGlyfS9jaGFyc2V0LmFsaWFzCi0Jcm1kaXIgJHtEfSR7bGliZGlyfQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyXzEuMjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Rhci90YXJfMS4yOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZmNlNTdkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyXzEuMjkuYmIKQEAgLTAsMCArMSwxOCBAQAorcmVxdWlyZSB0YXIuaW5jCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW2FjbF0gPSAiLS13aXRoLXBvc2l4LWFjbHMsIC0td2l0aG91dC1wb3NpeC1hY2xzLCBhY2wsIgorCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9yZW1vdmUtZ2V0cy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vbXVzbF9kaXJlbnQucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiOTU1Y2Q1MzM5NTVhY2IxODA0YjgzZmQ3MDIxOGRhNTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjM2YjExMTkwYzBhM2E2ODg1YmRiOGQ2MTQyNGYyYjM2YTU4NzI4NjlhYTNmN2Y2OTVkZWE0YjQ4NDNhZTJmMiIKKworZG9faW5zdGFsbF9hcHBlbmRfbGliYy1tdXNsKCkgeworCXJtIC1mICR7RH0ke2xpYmRpcn0vY2hhcnNldC5hbGlhcworCXJtZGlyICR7RH0ke2xpYmRpcn0KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL3R6Y29kZS1uYXRpdmVfMjAxNmMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6Y29kZS90emNvZGUtbmF0aXZlXzIwMTZjLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNmI5MmVhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL3R6Y29kZS1uYXRpdmVfMjAxNmMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi0jIG5vdGUgdGhhdCB3ZSBhbGxvdyBmb3IgdXMgdG8gdXNlIGRhdGEgbGF0ZXIgdGhhbiBvdXIgY29kZSB2ZXJzaW9uCi0jCi1TVU1NQVJZID0gInR6Y29kZSwgdGltZXpvbmUgem9uZWluZm8gdXRpbHMgLS0gemljLCB6ZHVtcCwgdHpzZWxlY3QiCi1MSUNFTlNFID0gIlBEICYgQlNEICYgQlNELTMtQ2xhdXNlIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03NmFlMmJlY2ZjYjlhNjg1MDQxYzZmMTY2YjQ0YzJjMiIKLQotU1JDX1VSSSA9IiBodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMvcmVwb3NpdG9yeS9yZWxlYXNlcy90emNvZGUke1BWfS50YXIuZ3o7bmFtZT10emNvZGUgXAotICAgICAgICAgICBodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMvcmVwb3NpdG9yeS9yZWxlYXNlcy90emRhdGEke1BWfS50YXIuZ3o7bmFtZT10emRhdGEiCi0KLVNSQ19VUklbdHpjb2RlLm1kNXN1bV0gPSAiZmZiODJhYjBiNTg4MTM4NzU5OTAyYjQ2MjdhNmE4MGQiCi1TUkNfVVJJW3R6Y29kZS5zaGEyNTZzdW1dID0gIjM0NGIxYmQ0ODY5MzViY2EyYjdiYWE0N2RiM2I5OWIzMjIxMWM0NWYzMWVjMGQxZWFkOGJhY2QxMDNjNWE0MTYiCi1TUkNfVVJJW3R6ZGF0YS5tZDVzdW1dID0gIjAzMzBjY2QxNjE0MGQzYjY0MzhhMThkYWU5YjM0YjkzIgotU1JDX1VSSVt0emRhdGEuc2hhMjU2c3VtXSA9ICI4NzAwZDk4MWU2ZjIwMDdhYzAzN2RhYmI1ZDJiMTJmMzkwZTg2MjliYmMzMGU1NjRiYzIxY2YwYzA2OWEyZDQ4IgotCi1TID0gIiR7V09SS0RJUn0iCi0KLWluaGVyaXQgbmF0aXZlCi0KLWRvX2luc3RhbGwgKCkgewotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vCi0gICAgICAgIGluc3RhbGwgLW0gNzU1IHppYyAke0R9JHtiaW5kaXJ9LwotICAgICAgICBpbnN0YWxsIC1tIDc1NSB6ZHVtcCAke0R9JHtiaW5kaXJ9LwotICAgICAgICBpbnN0YWxsIC1tIDc1NSB0enNlbGVjdCAke0R9JHtiaW5kaXJ9LwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emNvZGUvdHpjb2RlLW5hdGl2ZV8yMDE2Zy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL3R6Y29kZS1uYXRpdmVfMjAxNmcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTJlNjIxNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL3R6Y29kZS1uYXRpdmVfMjAxNmcuYmIKQEAgLTAsMCArMSwyNiBAQAorIyBub3RlIHRoYXQgd2UgYWxsb3cgZm9yIHVzIHRvIHVzZSBkYXRhIGxhdGVyIHRoYW4gb3VyIGNvZGUgdmVyc2lvbgorIworU1VNTUFSWSA9ICJ0emNvZGUsIHRpbWV6b25lIHpvbmVpbmZvIHV0aWxzIC0tIHppYywgemR1bXAsIHR6c2VsZWN0IgorTElDRU5TRSA9ICJQRCAmIEJTRCAmIEJTRC0zLUNsYXVzZSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZWYxYTM1MmI5MDFlZTdiNzVhNzVkZjgxNzFkNmFjYTciCisKK1NSQ19VUkkgPSIgaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzL3JlcG9zaXRvcnkvcmVsZWFzZXMvdHpjb2RlJHtQVn0udGFyLmd6O25hbWU9dHpjb2RlIFwKKyAgICAgICAgICAgaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzL3JlcG9zaXRvcnkvcmVsZWFzZXMvdHpkYXRhJHtQVn0udGFyLmd6O25hbWU9dHpkYXRhIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly93d3cuaWFuYS5vcmcvdGltZS16b25lcyIKKworU1JDX1VSSVt0emNvZGUubWQ1c3VtXSA9ICJmODk4NjcwMTM2NzZlM2NiOTU0NGJlMmRmN2QzNmE5MSIKK1NSQ19VUklbdHpjb2RlLnNoYTI1NnN1bV0gPSAiMWZmOTBiNDdhZDc5ODYxNDBhNTEzYjUyODdiMTg1MWM0MGY4MGZkNDRmZDYzNmRiNWNjNWI0NmQwNmY5ZmEyYiIKK1NSQ19VUklbdHpkYXRhLm1kNXN1bV0gPSAiM2M3ZTk3ZWM4NTI3MjExMTA0ZDI3Y2MxZDk3YTIzZGUiCitTUkNfVVJJW3R6ZGF0YS5zaGEyNTZzdW1dID0gIjNjNzEzN2IyYmM0NzMyM2IwZGU0N2I3Nzc4NmJhY2Y4MWVkNTAzZDRiMmM2OTNmZjhhZGEyZmJkMTI4MWViZDEiCisKK1MgPSAiJHtXT1JLRElSfSIKKworaW5oZXJpdCBuYXRpdmUKKworZG9faW5zdGFsbCAoKSB7CisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfS8KKyAgICAgICAgaW5zdGFsbCAtbSA3NTUgemljICR7RH0ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgLW0gNzU1IHpkdW1wICR7RH0ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgLW0gNzU1IHR6c2VsZWN0ICR7RH0ke2JpbmRpcn0vCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6ZGF0YS90emRhdGFfMjAxNmMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6ZGF0YS90emRhdGFfMjAxNmMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlYjg1YjcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emRhdGEvdHpkYXRhXzIwMTZjLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEyICswLDAgQEAKLVNVTU1BUlkgPSAiVGltZXpvbmUgZGF0YSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuaWFuYS5vcmcvdGltZS16b25lcyIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiUEQgJiBCU0QgJiBCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03NmFlMmJlY2ZjYjlhNjg1MDQxYzZmMTY2YjQ0YzJjMiIKLQotREVQRU5EUyA9ICJ0emNvZGUtbmF0aXZlIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuaWFuYS5vcmcvdGltZS16b25lcy9yZXBvc2l0b3J5L3JlbGVhc2VzL3R6ZGF0YSR7UFZ9LnRhci5nejtuYW1lPXR6ZGF0YSIKLQotU1JDX1VSSVt0emRhdGEubWQ1c3VtXSA9ICIwMzMwY2NkMTYxNDBkM2I2NDM4YTE4ZGFlOWIzNGI5MyIKLVNSQ19VUklbdHpkYXRhLnNoYTI1NnN1bV0gPSAiODcwMGQ5ODFlNmYyMDA3YWMwMzdkYWJiNWQyYjEyZjM5MGU4NjI5YmJjMzBlNTY0YmMyMWNmMGMwNjlhMmQ0OCIKLQotaW5oZXJpdCBhbGxhcmNoCi0KLVJDT05GTElDVFNfJHtQTn0gPSAidGltZXpvbmVzIHRpbWV6b25lLWFmcmljYSB0aW1lem9uZS1hbWVyaWNhIHRpbWV6b25lLWFudGFyY3RpY2EgXAotICAgICAgICAgICAgIHRpbWV6b25lLWFyY3RpYyB0aW1lem9uZS1hc2lhIHRpbWV6b25lLWF0bGFudGljIFwKLSAgICAgICAgICAgICB0aW1lem9uZS1hdXN0cmFsaWEgdGltZXpvbmUtZXVyb3BlIHRpbWV6b25lLWluZGlhbiBcCi0gICAgICAgICAgICAgdGltZXpvbmUtaXNvMzE2Ni50YWIgdGltZXpvbmUtcGFjaWZpYyB0aW1lem9uZS16b25lLnRhYiIKLQotUyA9ICIke1dPUktESVJ9IgotCi1ERUZBVUxUX1RJTUVaT05FID89ICJVbml2ZXJzYWwiCi1JTlNUQUxMX1RJTUVaT05FX0ZJTEUgPz0gIjEiCi0KLVRaT05FUz0gImFmcmljYSBhbnRhcmN0aWNhIGFzaWEgYXVzdHJhbGFzaWEgZXVyb3BlIG5vcnRoYW1lcmljYSBzb3V0aGFtZXJpY2EgIFwKLSAgICAgICAgIGZhY3RvcnkgZXRjZXRlcmEgYmFja3dhcmQgc3lzdGVtdiBcCi0gICAgICAgICIKLSMgcGFjaWZpY25ldyAKLQotZG9fY29tcGlsZSAoKSB7Ci0gICAgICAgIGZvciB6b25lIGluICR7VFpPTkVTfTsgZG8gXAotICAgICAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3ppYyAtZCAke1dPUktESVJ9JHtkYXRhZGlyfS96b25laW5mbyAtTCAvZGV2L251bGwgXAotICAgICAgICAgICAgICAgIC15ICR7U30veWVhcmlzdHlwZS5zaCAke1N9LyR7em9uZX0gOyBcCi0gICAgICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vemljIC1kICR7V09SS0RJUn0ke2RhdGFkaXJ9L3pvbmVpbmZvL3Bvc2l4IC1MIC9kZXYvbnVsbCBcCi0gICAgICAgICAgICAgICAgLXkgJHtTfS95ZWFyaXN0eXBlLnNoICR7U30vJHt6b25lfSA7IFwKLSAgICAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS96aWMgLWQgJHtXT1JLRElSfSR7ZGF0YWRpcn0vem9uZWluZm8vcmlnaHQgLUwgJHtTfS9sZWFwc2Vjb25kcyBcCi0gICAgICAgICAgICAgICAgLXkgJHtTfS95ZWFyaXN0eXBlLnNoICR7U30vJHt6b25lfSA7IFwKLSAgICAgICAgZG9uZQotfQotCi1kb19pbnN0YWxsICgpIHsKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9LyRleGVjX3ByZWZpeCAke0R9JHtkYXRhZGlyfS96b25laW5mbwotICAgICAgICBjcCAtcFBSICR7U30vJGV4ZWNfcHJlZml4ICR7RH0vCi0gICAgICAgICMgbGliYyBpcyByZW1vdmluZyB6b25laW5mbyBmaWxlcyBmcm9tIHBhY2thZ2UKLSAgICAgICAgY3AgLXBQICIke1N9L3pvbmUudGFiIiAke0R9JHtkYXRhZGlyfS96b25laW5mbwotICAgICAgICBjcCAtcFAgIiR7U30vaXNvMzE2Ni50YWIiICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvCi0KLSAgICAgICAgIyBJbnN0YWxsIGRlZmF1bHQgdGltZXpvbmUKLSAgICAgICAgaWYgWyAtZSAke0R9JHtkYXRhZGlyfS96b25laW5mby8ke0RFRkFVTFRfVElNRVpPTkV9IF07IHRoZW4KLSAgICAgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KLSAgICAgICAgICAgIGlmIFsgIiR7SU5TVEFMTF9USU1FWk9ORV9GSUxFfSIgPSAiMSIgXTsgdGhlbgotICAgICAgICAgICAgICAgIGVjaG8gJHtERUZBVUxUX1RJTUVaT05FfSA+ICR7RH0ke3N5c2NvbmZkaXJ9L3RpbWV6b25lCi0gICAgICAgICAgICBmaQotICAgICAgICAgICAgbG4gLXMgJHtkYXRhZGlyfS96b25laW5mby8ke0RFRkFVTFRfVElNRVpPTkV9ICR7RH0ke3N5c2NvbmZkaXJ9L2xvY2FsdGltZQotICAgICAgICBlbHNlCi0gICAgICAgICAgICBiYmVycm9yICJERUZBVUxUX1RJTUVaT05FIGlzIHNldCB0byBhbiBpbnZhbGlkIHZhbHVlLiIKLSAgICAgICAgICAgIGV4aXQgMQotICAgICAgICBmaQotCi0gICAgICAgIGNob3duIC1SIHJvb3Q6cm9vdCAke0R9Ci19Ci0KLXBrZ19wb3N0aW5zdF8ke1BOfSAoKSB7Ci0JZXRjX2x0PSIkRCR7c3lzY29uZmRpcn0vbG9jYWx0aW1lIgotCXNyYz0iJEQke3N5c2NvbmZkaXJ9L3RpbWV6b25lIgotCi0JaWYgWyAtZSAke3NyY30gXSA7IHRoZW4KLQkJdHo9JChzZWQgLWUgJ3M6Iy4qOjonIC1lICdzOltbOnNwYWNlOl1dKjo6ZycgLWUgJy9eJC9kJyAiJHtzcmN9IikKLQlmaQotCQotCWlmIFsgLXogIiR7dHp9IiBdIDsgdGhlbgotCQlleGl0IDAKLQlmaQotCQotCWlmIFsgISAtZSAiJEQke2RhdGFkaXJ9L3pvbmVpbmZvLyR7dHp9IiBdIDsgdGhlbgotCQllY2hvICJZb3UgaGF2ZSBhbiBpbnZhbGlkIFRJTUVaT05FIHNldHRpbmcgaW4gJHtzcmN9IgotCQllY2hvICJZb3VyICR7ZXRjX2x0fSBoYXMgYmVlbiByZXNldCB0byBVbml2ZXJzYWw7IGVuam95ISIKLQkJdHo9IlVuaXZlcnNhbCIKLQkJZWNobyAiVXBkYXRpbmcgJHtldGNfbHR9IHdpdGggJEQke2RhdGFkaXJ9L3pvbmVpbmZvLyR7dHp9IgotCQlpZiBbIC1MICR7ZXRjX2x0fSBdIDsgdGhlbgotCQkJcm0gLWYgIiR7ZXRjX2x0fSIKLQkJZmkKLQkJbG4gLXMgIiR7ZGF0YWRpcn0vem9uZWluZm8vJHt0en0iICIke2V0Y19sdH0iCi0JZmkKLX0KLQotIyBQYWNrYWdlcyBwcmltYXJpbHkgb3JnYW5pemVkIGJ5IGRpcmVjdG9yeSB3aXRoIGEgbWFqb3IgY2l0eQotIyBpbiBtb3N0IHRpbWUgem9uZXMgaW4gdGhlIGJhc2UgcGFja2FnZQotCi1QQUNLQUdFUyA9ICJ0emRhdGEgdHpkYXRhLW1pc2MgdHpkYXRhLXBvc2l4IHR6ZGF0YS1yaWdodCB0emRhdGEtYWZyaWNhIFwKLSAgICB0emRhdGEtYW1lcmljYXMgdHpkYXRhLWFudGFyY3RpY2EgdHpkYXRhLWFyY3RpYyB0emRhdGEtYXNpYSBcCi0gICAgdHpkYXRhLWF0bGFudGljIHR6ZGF0YS1hdXN0cmFsaWEgdHpkYXRhLWV1cm9wZSB0emRhdGEtcGFjaWZpYyIKLQotRklMRVNfdHpkYXRhLWFmcmljYSArPSAiJHtkYXRhZGlyfS96b25laW5mby9BZnJpY2EvKiIKLVJQUk9WSURFU190emRhdGEtYWZyaWNhID0gInR6ZGF0YS1hZnJpY2EiCi0KLUZJTEVTX3R6ZGF0YS1hbWVyaWNhcyArPSAiJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhLyogIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1VTLyogICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQnJhemlsLyogICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9DYW5hZGEvKiAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01leGljby8qICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQ2hpbGUvKiIKLVJQUk9WSURFU190emRhdGEtYW1lcmljYXMgPSAidHpkYXRhLWFtZXJpY2FzIgotCi1GSUxFU190emRhdGEtYW50YXJjdGljYSArPSAiJHtkYXRhZGlyfS96b25laW5mby9BbnRhcmN0aWNhLyoiCi1SUFJPVklERVNfdHpkYXRhLWFudGFyY3RpY2EgPSAidHpkYXRhLWFudGFyY3RpY2EiCi0KLUZJTEVTX3R6ZGF0YS1hcmN0aWMgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQXJjdGljLyoiCi1SUFJPVklERVNfdHpkYXRhLWFyY3RpYyA9ICJ0emRhdGEtYXJjdGljIgotCi1GSUxFU190emRhdGEtYXNpYSArPSAiJHtkYXRhZGlyfS96b25laW5mby9Bc2lhLyogICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0luZGlhbi8qICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTWlkZWFzdC8qIgotUlBST1ZJREVTX3R6ZGF0YS1hc2lhID0gInR6ZGF0YS1hc2lhIgotCi1GSUxFU190emRhdGEtYXRsYW50aWMgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQXRsYW50aWMvKiIKLVJQUk9WSURFU190emRhdGEtYXRsYW50aWMgPSAidHpkYXRhLWF0bGFudGljIgotCi1GSUxFU190emRhdGEtYXVzdHJhbGlhICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS8qIgotUlBST1ZJREVTX3R6ZGF0YS1hdXN0cmFsaWEgPSAidHpkYXRhLWF1c3RyYWxpYSIKLQotRklMRVNfdHpkYXRhLWV1cm9wZSArPSAiJHtkYXRhZGlyfS96b25laW5mby9FdXJvcGUvKiIKLVJQUk9WSURFU190emRhdGEtZXVyb3BlID0gInR6ZGF0YS1ldXJvcGUiCi0KLUZJTEVTX3R6ZGF0YS1wYWNpZmljICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL1BhY2lmaWMvKiIKLVJQUk9WSURFU190emRhdGEtcGFjaWZpYyA9ICJ0emRhdGEtcGFjaWZpYyIKLQotRklMRVNfdHpkYXRhLXBvc2l4ICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL3Bvc2l4LyoiCi1SUFJPVklERVNfdHpkYXRhLXBvc2l4ID0gInR6ZGF0YS1wb3NpeCIKLQotRklMRVNfdHpkYXRhLXJpZ2h0ICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL3JpZ2h0LyoiCi1SUFJPVklERVNfdHpkYXRhLXJpZ2h0ID0gInR6ZGF0YS1yaWdodCIKLQotCi1GSUxFU190emRhdGEtbWlzYyArPSAiJHtkYXRhZGlyfS96b25laW5mby9DdWJhICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FZ3lwdCAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FaXJlICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9GYWN0b3J5ICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HQi1FaXJlICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Ib25na29uZyAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9JY2VsYW5kICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9JcmFuICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Jc3JhZWwgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9KYW1haWNhICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9KYXBhbiAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Ld2FqYWxlaW4gICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9MaWJ5YSAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9OYXZham8gICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Qb2xhbmQgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Qb3J0dWdhbCAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9TaW5nYXBvcmUgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9UdXJrZXkiCi1SUFJPVklERVNfdHpkYXRhLW1pc2MgPSAidHpkYXRhLW1pc2MiCi0KLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vUGFjaWZpYy9Ib25vbHVsdSAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQW1lcmljYS9BbmNob3JhZ2UgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQW1lcmljYS9Mb3NfQW5nZWxlcyAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQW1lcmljYS9EZW52ZXIgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQW1lcmljYS9DaGljYWdvICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQW1lcmljYS9OZXdfWW9yayAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQW1lcmljYS9DYXJhY2FzICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQW1lcmljYS9TYW9fUGF1bG8gICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRXVyb3BlL0xvbmRvbiAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRXVyb3BlL1BhcmlzICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQWZyaWNhL0NhaXJvICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRXVyb3BlL01vc2NvdyAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXNpYS9EdWJhaSAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXNpYS9LYXJhY2hpICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXNpYS9EaGFrYSAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXNpYS9CYW5rb2sgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXNpYS9Ib25nX0tvbmcgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXNpYS9Ub2t5byAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXVzdHJhbGlhL0RhcndpbiAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXVzdHJhbGlhL0FkZWxhaWRlICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXVzdHJhbGlhL0JyaXNiYW5lICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXVzdHJhbGlhL1N5ZG5leSAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUGFjaWZpYy9Ob3VtZWEgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQ0VUICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQ1NUNkNEVCAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRUVUICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRVNUICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRVNUNUVEVCAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vR0IgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vR01UICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vR01UKzAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vR01ULTAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vR01UMCAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vR3JlZW53aWNoICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSFNUICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTUVUICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTVNUICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTVNUN01EVCAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTlogICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTlotQ0hBVCAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUFJDICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUFNUOFBEVCAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUk9DICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUk9LICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vVUNUICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vVVRDICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vVW5pdmVyc2FsICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vVy1TVSAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vV0VUICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vWnVsdSAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vem9uZS50YWIgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vaXNvMzE2Ni50YWIgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRXRjLyoiCi0KLUNPTkZGSUxFU18ke1BOfSArPSAiJHtAICIke3N5c2NvbmZkaXJ9L3RpbWV6b25lIiBpZiBiYi51dGlscy50b19ib29sZWFuKGQuZ2V0VmFyKCdJTlNUQUxMX1RJTUVaT05FX0ZJTEUnLCBUcnVlKSkgZWxzZSAiIiB9IgotQ09ORkZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9L2xvY2FsdGltZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpkYXRhL3R6ZGF0YV8yMDE2Zy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpkYXRhL3R6ZGF0YV8yMDE2Zy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZWU0YjVhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emRhdGEvdHpkYXRhXzIwMTZnLmJiCkBAIC0wLDAgKzEsMjEzIEBACitTVU1NQVJZID0gIlRpbWV6b25lIGRhdGEiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMiCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIlBEICYgQlNEICYgQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZWYxYTM1MmI5MDFlZTdiNzVhNzVkZjgxNzFkNmFjYTciCisKK0RFUEVORFMgPSAidHpjb2RlLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMvcmVwb3NpdG9yeS9yZWxlYXNlcy90emRhdGEke1BWfS50YXIuZ3o7bmFtZT10emRhdGEiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzIgorCitTUkNfVVJJW3R6ZGF0YS5tZDVzdW1dID0gIjNjN2U5N2VjODUyNzIxMTEwNGQyN2NjMWQ5N2EyM2RlIgorU1JDX1VSSVt0emRhdGEuc2hhMjU2c3VtXSA9ICIzYzcxMzdiMmJjNDczMjNiMGRlNDdiNzc3ODZiYWNmODFlZDUwM2Q0YjJjNjkzZmY4YWRhMmZiZDEyODFlYmQxIgorCitpbmhlcml0IGFsbGFyY2gKKworUkNPTkZMSUNUU18ke1BOfSA9ICJ0aW1lem9uZXMgdGltZXpvbmUtYWZyaWNhIHRpbWV6b25lLWFtZXJpY2EgdGltZXpvbmUtYW50YXJjdGljYSBcCisgICAgICAgICAgICAgdGltZXpvbmUtYXJjdGljIHRpbWV6b25lLWFzaWEgdGltZXpvbmUtYXRsYW50aWMgXAorICAgICAgICAgICAgIHRpbWV6b25lLWF1c3RyYWxpYSB0aW1lem9uZS1ldXJvcGUgdGltZXpvbmUtaW5kaWFuIFwKKyAgICAgICAgICAgICB0aW1lem9uZS1pc28zMTY2LnRhYiB0aW1lem9uZS1wYWNpZmljIHRpbWV6b25lLXpvbmUudGFiIgorCitTID0gIiR7V09SS0RJUn0iCisKK0RFRkFVTFRfVElNRVpPTkUgPz0gIlVuaXZlcnNhbCIKK0lOU1RBTExfVElNRVpPTkVfRklMRSA/PSAiMSIKKworVFpPTkVTPSAiYWZyaWNhIGFudGFyY3RpY2EgYXNpYSBhdXN0cmFsYXNpYSBldXJvcGUgbm9ydGhhbWVyaWNhIHNvdXRoYW1lcmljYSAgXAorICAgICAgICAgZmFjdG9yeSBldGNldGVyYSBiYWNrd2FyZCBzeXN0ZW12IFwKKyAgICAgICAgIgorIyBwYWNpZmljbmV3IAorCitkb19jb21waWxlICgpIHsKKyAgICAgICAgZm9yIHpvbmUgaW4gJHtUWk9ORVN9OyBkbyBcCisgICAgICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vemljIC1kICR7V09SS0RJUn0ke2RhdGFkaXJ9L3pvbmVpbmZvIC1MIC9kZXYvbnVsbCBcCisgICAgICAgICAgICAgICAgLXkgJHtTfS95ZWFyaXN0eXBlLnNoICR7U30vJHt6b25lfSA7IFwKKyAgICAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS96aWMgLWQgJHtXT1JLRElSfSR7ZGF0YWRpcn0vem9uZWluZm8vcG9zaXggLUwgL2Rldi9udWxsIFwKKyAgICAgICAgICAgICAgICAteSAke1N9L3llYXJpc3R5cGUuc2ggJHtTfS8ke3pvbmV9IDsgXAorICAgICAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3ppYyAtZCAke1dPUktESVJ9JHtkYXRhZGlyfS96b25laW5mby9yaWdodCAtTCAke1N9L2xlYXBzZWNvbmRzIFwKKyAgICAgICAgICAgICAgICAteSAke1N9L3llYXJpc3R5cGUuc2ggJHtTfS8ke3pvbmV9IDsgXAorICAgICAgICBkb25lCit9CisKK2RvX2luc3RhbGwgKCkgeworICAgICAgICBpbnN0YWxsIC1kICR7RH0vJGV4ZWNfcHJlZml4ICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvCisgICAgICAgIGNwIC1wUFIgJHtTfS8kZXhlY19wcmVmaXggJHtEfS8KKyAgICAgICAgIyBsaWJjIGlzIHJlbW92aW5nIHpvbmVpbmZvIGZpbGVzIGZyb20gcGFja2FnZQorICAgICAgICBjcCAtcFAgIiR7U30vem9uZS50YWIiICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvCisgICAgICAgIGNwIC1wUCAiJHtTfS9pc28zMTY2LnRhYiIgJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8KKworICAgICAgICAjIEluc3RhbGwgZGVmYXVsdCB0aW1lem9uZQorICAgICAgICBpZiBbIC1lICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvLyR7REVGQVVMVF9USU1FWk9ORX0gXTsgdGhlbgorICAgICAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQorICAgICAgICAgICAgaWYgWyAiJHtJTlNUQUxMX1RJTUVaT05FX0ZJTEV9IiA9ICIxIiBdOyB0aGVuCisgICAgICAgICAgICAgICAgZWNobyAke0RFRkFVTFRfVElNRVpPTkV9ID4gJHtEfSR7c3lzY29uZmRpcn0vdGltZXpvbmUKKyAgICAgICAgICAgIGZpCisgICAgICAgICAgICBsbiAtcyAke2RhdGFkaXJ9L3pvbmVpbmZvLyR7REVGQVVMVF9USU1FWk9ORX0gJHtEfSR7c3lzY29uZmRpcn0vbG9jYWx0aW1lCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJiZXJyb3IgIkRFRkFVTFRfVElNRVpPTkUgaXMgc2V0IHRvIGFuIGludmFsaWQgdmFsdWUuIgorICAgICAgICAgICAgZXhpdCAxCisgICAgICAgIGZpCisKKyAgICAgICAgY2hvd24gLVIgcm9vdDpyb290ICR7RH0KK30KKworcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKKwlldGNfbHQ9IiREJHtzeXNjb25mZGlyfS9sb2NhbHRpbWUiCisJc3JjPSIkRCR7c3lzY29uZmRpcn0vdGltZXpvbmUiCisKKwlpZiBbIC1lICR7c3JjfSBdIDsgdGhlbgorCQl0ej0kKHNlZCAtZSAnczojLio6OicgLWUgJ3M6W1s6c3BhY2U6XV0qOjpnJyAtZSAnL14kL2QnICIke3NyY30iKQorCWZpCisJCisJaWYgWyAteiAiJHt0en0iIF0gOyB0aGVuCisJCWV4aXQgMAorCWZpCisJCisJaWYgWyAhIC1lICIkRCR7ZGF0YWRpcn0vem9uZWluZm8vJHt0en0iIF0gOyB0aGVuCisJCWVjaG8gIllvdSBoYXZlIGFuIGludmFsaWQgVElNRVpPTkUgc2V0dGluZyBpbiAke3NyY30iCisJCWVjaG8gIllvdXIgJHtldGNfbHR9IGhhcyBiZWVuIHJlc2V0IHRvIFVuaXZlcnNhbDsgZW5qb3khIgorCQl0ej0iVW5pdmVyc2FsIgorCQllY2hvICJVcGRhdGluZyAke2V0Y19sdH0gd2l0aCAkRCR7ZGF0YWRpcn0vem9uZWluZm8vJHt0en0iCisJCWlmIFsgLUwgJHtldGNfbHR9IF0gOyB0aGVuCisJCQlybSAtZiAiJHtldGNfbHR9IgorCQlmaQorCQlsbiAtcyAiJHtkYXRhZGlyfS96b25laW5mby8ke3R6fSIgIiR7ZXRjX2x0fSIKKwlmaQorfQorCisjIFBhY2thZ2VzIHByaW1hcmlseSBvcmdhbml6ZWQgYnkgZGlyZWN0b3J5IHdpdGggYSBtYWpvciBjaXR5CisjIGluIG1vc3QgdGltZSB6b25lcyBpbiB0aGUgYmFzZSBwYWNrYWdlCisKK1BBQ0tBR0VTID0gInR6ZGF0YSB0emRhdGEtbWlzYyB0emRhdGEtcG9zaXggdHpkYXRhLXJpZ2h0IHR6ZGF0YS1hZnJpY2EgXAorICAgIHR6ZGF0YS1hbWVyaWNhcyB0emRhdGEtYW50YXJjdGljYSB0emRhdGEtYXJjdGljIHR6ZGF0YS1hc2lhIFwKKyAgICB0emRhdGEtYXRsYW50aWMgdHpkYXRhLWF1c3RyYWxpYSB0emRhdGEtZXVyb3BlIHR6ZGF0YS1wYWNpZmljIgorCitGSUxFU190emRhdGEtYWZyaWNhICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FmcmljYS8qIgorUlBST1ZJREVTX3R6ZGF0YS1hZnJpY2EgPSAidHpkYXRhLWFmcmljYSIKKworRklMRVNfdHpkYXRhLWFtZXJpY2FzICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvKiAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vVVMvKiAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9CcmF6aWwvKiAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0NhbmFkYS8qICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTWV4aWNvLyogICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9DaGlsZS8qIgorUlBST1ZJREVTX3R6ZGF0YS1hbWVyaWNhcyA9ICJ0emRhdGEtYW1lcmljYXMiCisKK0ZJTEVTX3R6ZGF0YS1hbnRhcmN0aWNhICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FudGFyY3RpY2EvKiIKK1JQUk9WSURFU190emRhdGEtYW50YXJjdGljYSA9ICJ0emRhdGEtYW50YXJjdGljYSIKKworRklMRVNfdHpkYXRhLWFyY3RpYyArPSAiJHtkYXRhZGlyfS96b25laW5mby9BcmN0aWMvKiIKK1JQUk9WSURFU190emRhdGEtYXJjdGljID0gInR6ZGF0YS1hcmN0aWMiCisKK0ZJTEVTX3R6ZGF0YS1hc2lhICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvKiAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSW5kaWFuLyogICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NaWRlYXN0LyoiCitSUFJPVklERVNfdHpkYXRhLWFzaWEgPSAidHpkYXRhLWFzaWEiCisKK0ZJTEVTX3R6ZGF0YS1hdGxhbnRpYyArPSAiJHtkYXRhZGlyfS96b25laW5mby9BdGxhbnRpYy8qIgorUlBST1ZJREVTX3R6ZGF0YS1hdGxhbnRpYyA9ICJ0emRhdGEtYXRsYW50aWMiCisKK0ZJTEVTX3R6ZGF0YS1hdXN0cmFsaWEgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQXVzdHJhbGlhLyoiCitSUFJPVklERVNfdHpkYXRhLWF1c3RyYWxpYSA9ICJ0emRhdGEtYXVzdHJhbGlhIgorCitGSUxFU190emRhdGEtZXVyb3BlICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0V1cm9wZS8qIgorUlBST1ZJREVTX3R6ZGF0YS1ldXJvcGUgPSAidHpkYXRhLWV1cm9wZSIKKworRklMRVNfdHpkYXRhLXBhY2lmaWMgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vUGFjaWZpYy8qIgorUlBST1ZJREVTX3R6ZGF0YS1wYWNpZmljID0gInR6ZGF0YS1wYWNpZmljIgorCitGSUxFU190emRhdGEtcG9zaXggKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vcG9zaXgvKiIKK1JQUk9WSURFU190emRhdGEtcG9zaXggPSAidHpkYXRhLXBvc2l4IgorCitGSUxFU190emRhdGEtcmlnaHQgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vcmlnaHQvKiIKK1JQUk9WSURFU190emRhdGEtcmlnaHQgPSAidHpkYXRhLXJpZ2h0IgorCisKK0ZJTEVTX3R6ZGF0YS1taXNjICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0N1YmEgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VneXB0ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VpcmUgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0ZhY3RvcnkgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dCLUVpcmUgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0hvbmdrb25nICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0ljZWxhbmQgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0lyYW4gICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0lzcmFlbCAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0phbWFpY2EgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0phcGFuICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0t3YWphbGVpbiAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0xpYnlhICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL05hdmFqbyAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BvbGFuZCAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BvcnR1Z2FsICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1NpbmdhcG9yZSAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1R1cmtleSIKK1JQUk9WSURFU190emRhdGEtbWlzYyA9ICJ0emRhdGEtbWlzYyIKKworCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS96b25laW5mby9QYWNpZmljL0hvbm9sdWx1ICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0FuY2hvcmFnZSAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0xvc19BbmdlbGVzICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0RlbnZlciAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0NoaWNhZ28gICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL05ld19Zb3JrICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0NhcmFjYXMgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL1Nhb19QYXVsbyAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FdXJvcGUvTG9uZG9uICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FdXJvcGUvUGFyaXMgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BZnJpY2EvQ2Fpcm8gICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FdXJvcGUvTW9zY293ICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0R1YmFpICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0thcmFjaGkgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0RoYWthICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0JhbmtvayAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0hvbmdfS29uZyAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL1Rva3lvICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvRGFyd2luICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvQWRlbGFpZGUgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvQnJpc2JhbmUgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvU3lkbmV5ICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9QYWNpZmljL05vdW1lYSAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9DRVQgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9DU1Q2Q0RUICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FRVQgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FU1QgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FU1Q1RURUICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HQiAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HTVQgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HTVQrMCAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HTVQtMCAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HTVQwICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HcmVlbndpY2ggICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9IU1QgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NRVQgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NU1QgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NU1Q3TURUICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9OWiAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9OWi1DSEFUICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9QUkMgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9QU1Q4UERUICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9ST0MgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9ST0sgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9VQ1QgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9VVEMgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Vbml2ZXJzYWwgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9XLVNVICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9XRVQgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9adWx1ICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby96b25lLnRhYiAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9pc28zMTY2LnRhYiAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FdGMvKiIKKworQ09ORkZJTEVTXyR7UE59ICs9ICIke0AgIiR7c3lzY29uZmRpcn0vdGltZXpvbmUiIGlmIGJiLnV0aWxzLnRvX2Jvb2xlYW4oZC5nZXRWYXIoJ0lOU1RBTExfVElNRVpPTkVfRklMRScsIFRydWUpKSBlbHNlICIiIH0iCitDT05GRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vbG9jYWx0aW1lIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC91bnppcC91bnppcC9maXgtc2VjdXJpdHktZm9ybWF0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC91bnppcC91bnppcC9maXgtc2VjdXJpdHktZm9ybWF0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlOWIwNmMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3VuemlwL3VuemlwL2ZpeC1zZWN1cml0eS1mb3JtYXQucGF0Y2gKQEAgLTAsMCArMSw5NyBAQAordW56aXA6IEZpeGluZyBzZWN1cml0eSBmb3JtYXR0aW5nIGlzc3VlcworCitGaXggc2VjdXJpdHkgZm9ybWF0dGluZyBpc3N1ZXMgcmVsYXRlZCB0byBzcHJpbnRmIHBhcmFtZXRlcnMgZXhwZXRlZC4gCisKK1tZT0NUTyAjOTU1MV0KK1todHRwczovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NTFdCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBFZHdpbiBQbGF1Y2h1IDxlZHdpbi5wbGF1Y2h1LmNhbWFjaG9AaW50ZWwuY29tPgorCitkaWZmIC0tZ2l0IGEvZXh0cmFjdC5jIGIvZXh0cmFjdC5jCitpbmRleCA3Y2Q5MTIzLi4yNWM1YTYyIDEwMDY0NAorLS0tIGEvZXh0cmFjdC5jCisrKysgYi9leHRyYWN0LmMKK0BAIC00NzUsNyArNDc1LDcgQEAgaW50IGV4dHJhY3Rfb3JfdGVzdF9maWxlcyhfX0cpICAgIC8qIHJldHVybiBQSy10eXBlIGVycm9yIGNvZGUgKi8KKyAgICAgICAgICAgICAgICAgICAgIEluZm8oc2xpZGUsIDB4NDAxLCAoKGNoYXIgKilzbGlkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgTG9hZEZhclN0cmluZyhDZW50U2lnTXNnKSwgaiArIGJsa251bSpESVJfQkxLU0laICsgMSkpOworICAgICAgICAgICAgICAgICAgICAgSW5mbyhzbGlkZSwgMHg0MDEsICgoY2hhciAqKXNsaWRlLAorLSAgICAgICAgICAgICAgICAgICAgICBMb2FkRmFyU3RyaW5nKFJlcG9ydE1zZykpKTsKKysgICAgICAgICAgICAgICAgICAgICAgIiVzIixMb2FkRmFyU3RyaW5nKFJlcG9ydE1zZykpKTsKKyAgICAgICAgICAgICAgICAgICAgIGVycm9yX2luX2FyY2hpdmUgPSBQS19CQURFUlI7CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgcmVhY2hlZF9lbmQgPSBUUlVFOyAgICAgLyogLi4uc28gbm8gbW9yZSBsZWZ0IHRvIGRvICovCitAQCAtNzU0LDggKzc1NCw4IEBAIGludCBleHRyYWN0X29yX3Rlc3RfZmlsZXMoX19HKSAgICAvKiByZXR1cm4gUEstdHlwZSBlcnJvciBjb2RlICovCisKKyAjaWZuZGVmIFNGWAorICAgICBpZiAobm9fZW5kc2lnX2ZvdW5kKSB7ICAgICAgICAgICAgICAgICAgICAgIC8qIGp1c3QgdG8gbWFrZSBzdXJlICovCistICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwgKChjaGFyICopc2xpZGUsIExvYWRGYXJTdHJpbmcoRW5kU2lnTXNnKSkpOworLSAgICAgICAgSW5mbyhzbGlkZSwgMHg0MDEsICgoY2hhciAqKXNsaWRlLCBMb2FkRmFyU3RyaW5nKFJlcG9ydE1zZykpKTsKKysgICAgICAgIEluZm8oc2xpZGUsIDB4NDAxLCAoKGNoYXIgKilzbGlkZSwgIiVzIiwgTG9hZEZhclN0cmluZyhFbmRTaWdNc2cpKSk7CisrICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwgKChjaGFyICopc2xpZGUsICIlcyIsIExvYWRGYXJTdHJpbmcoUmVwb3J0TXNnKSkpOworICAgICAgICAgaWYgKCFlcnJvcl9pbl9hcmNoaXZlKSAgICAgICAvKiBkb24ndCBvdmVyd3JpdGUgc3Ryb25nZXIgZXJyb3IgKi8KKyAgICAgICAgICAgICBlcnJvcl9pbl9hcmNoaXZlID0gUEtfV0FSTjsKKyAgICAgfQorZGlmZiAtLWdpdCBhL2xpc3QuYyBiL2xpc3QuYworaW5kZXggMTVlMDAxMS4uMGI0ODRmNiAxMDA2NDQKKy0tLSBhL2xpc3QuYworKysrIGIvbGlzdC5jCitAQCAtMTgxLDcgKzE4MSw3IEBAIGludCBsaXN0X2ZpbGVzKF9fRykgICAgLyogcmV0dXJuIFBLLXR5cGUgZXJyb3IgY29kZSAqLworICAgICAgICAgICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwKKyAgICAgICAgICAgICAgICAgICAgICAoKGNoYXIgKilzbGlkZSwgTG9hZEZhclN0cmluZyhDZW50U2lnTXNnKSwgaikpOworICAgICAgICAgICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwKKy0gICAgICAgICAgICAgICAgICAgICAoKGNoYXIgKilzbGlkZSwgTG9hZEZhclN0cmluZyhSZXBvcnRNc2cpKSk7CisrICAgICAgICAgICAgICAgICAgICAgKChjaGFyICopc2xpZGUsICIlcyIsIExvYWRGYXJTdHJpbmcoUmVwb3J0TXNnKSkpOworICAgICAgICAgICAgICAgICByZXR1cm4gUEtfQkFERVJSOyAgIC8qIHNpZyBub3QgZm91bmQgKi8KKyAgICAgICAgICAgICB9CisgICAgICAgICB9CitAQCAtNTA3LDcgKzUwNyw3IEBAIGludCBsaXN0X2ZpbGVzKF9fRykgICAgLyogcmV0dXJuIFBLLXR5cGUgZXJyb3IgY29kZSAqLworICAgICAgICAgICAgICYmICghRy5lY3JlYy5pc196aXA2NF9hcmNoaXZlKQorICAgICAgICAgICAgICYmIChtZW1jbXAoRy5zaWcsIGVuZF9jZW50cmFsX3NpZywgNCkgIT0gMCkKKyAgICAgICAgICAgICkgeyAgICAgICAgICAvKiBqdXN0IHRvIG1ha2Ugc3VyZSBhZ2FpbiAqLworLSAgICAgICAgICAgIEluZm8oc2xpZGUsIDB4NDAxLCAoKGNoYXIgKilzbGlkZSwgTG9hZEZhclN0cmluZyhFbmRTaWdNc2cpKSk7CisrICAgICAgICAgICAgSW5mbyhzbGlkZSwgMHg0MDEsICgoY2hhciAqKXNsaWRlLCAiJXMiLCBMb2FkRmFyU3RyaW5nKEVuZFNpZ01zZykpKTsKKyAgICAgICAgICAgICBlcnJvcl9pbl9hcmNoaXZlID0gUEtfV0FSTjsgICAvKiBkaWRuJ3QgZmluZCBzaWcgKi8KKyAgICAgICAgIH0KKworQEAgLTU5MSw3ICs1OTEsNyBAQCBpbnQgZ2V0X3RpbWVfc3RhbXAoX19HX18gbGFzdF9tb2R0aW1lLCBubWVtYmVyKSAgLyogcmV0dXJuIFBLLXR5cGUgZXJyb3IgY29kZSAqLworICAgICAgICAgICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwKKyAgICAgICAgICAgICAgICAgICAgICAoKGNoYXIgKilzbGlkZSwgTG9hZEZhclN0cmluZyhDZW50U2lnTXNnKSwgaikpOworICAgICAgICAgICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwKKy0gICAgICAgICAgICAgICAgICAgICAoKGNoYXIgKilzbGlkZSwgTG9hZEZhclN0cmluZyhSZXBvcnRNc2cpKSk7CisrICAgICAgICAgICAgICAgICAgICAgKChjaGFyICopc2xpZGUsICIlcyIsIExvYWRGYXJTdHJpbmcoUmVwb3J0TXNnKSkpOworICAgICAgICAgICAgICAgICByZXR1cm4gUEtfQkFERVJSOyAgIC8qIHNpZyBub3QgZm91bmQgKi8KKyAgICAgICAgICAgICB9CisgICAgICAgICB9CitAQCAtNjc0LDcgKzY3NCw3IEBAIGludCBnZXRfdGltZV9zdGFtcChfX0dfXyBsYXN0X21vZHRpbWUsIG5tZW1iZXIpICAvKiByZXR1cm4gUEstdHlwZSBlcnJvciBjb2RlICovCisgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworIAorICAgICBpZiAobWVtY21wKEcuc2lnLCBlbmRfY2VudHJhbF9zaWcsIDQpKSB7ICAgIC8qIGp1c3QgdG8gbWFrZSBzdXJlIGFnYWluICovCistICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwgKChjaGFyICopc2xpZGUsIExvYWRGYXJTdHJpbmcoRW5kU2lnTXNnKSkpOworKyAgICAgICAgSW5mbyhzbGlkZSwgMHg0MDEsICgoY2hhciAqKXNsaWRlLCAiJXMiLCBMb2FkRmFyU3RyaW5nKEVuZFNpZ01zZykpKTsKKyAgICAgICAgIGVycm9yX2luX2FyY2hpdmUgPSBQS19XQVJOOworICAgICB9CisgICAgIGlmICgqbm1lbWJlciA9PSAwTCAmJiBlcnJvcl9pbl9hcmNoaXZlIDw9IFBLX1dBUk4pCitkaWZmIC0tZ2l0IGEvemlwaW5mby5jIGIvemlwaW5mby5jCitpbmRleCAwYWM3NWIzLi4xZTdmYTgyIDEwMDY0NAorLS0tIGEvemlwaW5mby5jCisrKysgYi96aXBpbmZvLmMKK0BAIC04MzMsNyArODMzLDcgQEAgaW50IHppcGluZm8oX19HKSAgIC8qIHJldHVybiBQSy10eXBlIGVycm9yIGNvZGUgKi8KKyAgICAgICAgICAgICAgICAgSW5mbyhzbGlkZSwgMHg0MDEsCisgICAgICAgICAgICAgICAgICAgICAgKChjaGFyICopc2xpZGUsIExvYWRGYXJTdHJpbmcoQ2VudFNpZ01zZyksIGopKTsKKyAgICAgICAgICAgICAgICAgSW5mbyhzbGlkZSwgMHg0MDEsCistICAgICAgICAgICAgICAgICAgICAgKChjaGFyICopc2xpZGUsIExvYWRGYXJTdHJpbmcoUmVwb3J0TXNnKSkpOworKyAgICAgICAgICAgICAgICAgICAgICgoY2hhciAqKXNsaWRlLCAiJXMiLCBMb2FkRmFyU3RyaW5nKFJlcG9ydE1zZykpKTsKKyAgICAgICAgICAgICAgICAgZXJyb3JfaW5fYXJjaGl2ZSA9IFBLX0JBREVSUjsgICAvKiBzaWcgbm90IGZvdW5kICovCisgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgIH0KK0BAIC0xMDIyLDcgKzEwMjIsNyBAQCBpbnQgemlwaW5mbyhfX0cpICAgLyogcmV0dXJuIFBLLXR5cGUgZXJyb3IgY29kZSAqLworICAgICAgICAgICAgICYmICghRy5lY3JlYy5pc196aXA2NF9hcmNoaXZlKQorICAgICAgICAgICAgICYmIChtZW1jbXAoRy5zaWcsIGVuZF9jZW50cmFsX3NpZywgNCkgIT0gMCkKKyAgICAgICAgICAgICkgeyAgICAgICAgICAvKiBqdXN0IHRvIG1ha2Ugc3VyZSBhZ2FpbiAqLworLSAgICAgICAgICAgIEluZm8oc2xpZGUsIDB4NDAxLCAoKGNoYXIgKilzbGlkZSwgTG9hZEZhclN0cmluZyhFbmRTaWdNc2cpKSk7CisrICAgICAgICAgICAgSW5mbyhzbGlkZSwgMHg0MDEsICgoY2hhciAqKXNsaWRlLCAiJXMiLCBMb2FkRmFyU3RyaW5nKEVuZFNpZ01zZykpKTsKKyAgICAgICAgICAgICBlcnJvcl9pbl9hcmNoaXZlID0gUEtfV0FSTjsgICAvKiBkaWRuJ3QgZmluZCBzaWcgKi8KKyAgICAgICAgIH0KKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdW56aXAvdW56aXBfNi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC91bnppcC91bnppcF82LjAuYmIKaW5kZXggOWVmZTc1Ni4uNTQ3Mzc5YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC91bnppcC91bnppcF82LjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC91bnppcC91bnppcF82LjAuYmIKQEAgLTYsNyArNiw3IEBACiBQRSA9ICIxIgogUFIgPSAicjUiCiAKLVNSQ19VUkkgPSAiZnRwOi8vZnRwLmluZm8temlwLm9yZy9wdWIvaW5mb3ppcC9zcmMvdW56aXA2MC50Z3ogXAorU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vaW5mb3ppcC9VblppcCUyMDYueCUyMCUyOGxhdGVzdCUyOS9VblppcCUyMDYuMC91bnppcDYwLnRhci5neiBcCiAJZmlsZTovL2F2b2lkLXN0cmlwLnBhdGNoIFwKIAlmaWxlOi8vZGVmaW5lLWxkZmxhZ3MucGF0Y2ggXAogCWZpbGU6Ly8wNi11bnppcDYwLWFsdC1pY29udi11dGY4X0NWRS0yMDE1LTEzMTUucGF0Y2ggXApAQCAtMTYsNiArMTYsNyBAQAogCWZpbGU6Ly8xMS1jdmUtMjAxNC04MTQxLWdldHppcDY0ZGF0YS5wYXRjaCBcCiAJZmlsZTovL0NWRS0yMDE1LTc2OTYucGF0Y2ggXAogCWZpbGU6Ly9DVkUtMjAxNS03Njk3LnBhdGNoIFwKKyAgICAgICAgZmlsZTovL2ZpeC1zZWN1cml0eS1mb3JtYXQucGF0Y2ggXAogIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiNjJiNDkwNDA3NDg5NTIxZGI4NjNiNTIzYTdmODYzNzUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nLWNvbmZpZy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2F0Y2hkb2cvd2F0Y2hkb2ctY29uZmlnLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiZjQwZjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nLWNvbmZpZy5iYgpAQCAtMCwwICsxLDIwIEBACitTVU1NQVJZID0gIlNvZnR3YXJlIHdhdGNoZG9nIgorREVTQ1JJUFRJT04gPSAiV2F0Y2hkb2cgaXMgYSBkYWVtb24gdGhhdCBjaGVja3MgaWYgeW91ciBzeXN0ZW0gaXMgc3RpbGwgXAord29ya2luZy4gSWYgcHJvZ3JhbXMgaW4gdXNlciBzcGFjZSBhcmUgbm90IGxvbmdlciBleGVjdXRlZCBpdCB3aWxsIHJlYm9vdCBcCit0aGUgc3lzdGVtLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93YXRjaGRvZy5zb3VyY2Vmb3JnZS5uZXQvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3RyYWNrZXIvP2dyb3VwX2lkPTE3MjAzMCZhdGlkPTg2MDE5NCIKKworTElDRU5TRSA9ICJNSVQtWCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvQ09QWUlORy5NSVQ7bWQ1PTNkYTljZmJjYjc4OGM4MGEwMzg0MzYxYjRkZTIwNDIwIgorCitTUkNfVVJJID0gIiBcCisgICAgZmlsZTovL3dhdGNoZG9nLmRlZmF1bHQgXAorICAgIGZpbGU6Ly93YXRjaGRvZy5jb25mIFwKKyIKKworZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1EbSAwNjQ0ICR7V09SS0RJUn0vd2F0Y2hkb2cuZGVmYXVsdCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3dhdGNoZG9nCisgICAgaW5zdGFsbCAtRG0gMDY0NCAke1dPUktESVJ9L3dhdGNoZG9nLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vd2F0Y2hkb2cuY29uZgorfQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nLWNvbmZpZy93YXRjaGRvZy5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZy1jb25maWcvd2F0Y2hkb2cuY29uZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDkzZDEyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZy1jb25maWcvd2F0Y2hkb2cuY29uZgpAQCAtMCwwICsxLDQyIEBACisjcGluZwkJCT0gMTcyLjMxLjE0LjEKKyNwaW5nCQkJPSAxNzIuMjYuMS4yNTUKKyNpbnRlcmZhY2UJCT0gZXRoMAorI2ZpbGUJCQk9IC92YXIvbG9nL21lc3NhZ2VzCisjY2hhbmdlCQkJPSAxNDA3CisKKyMgVW5jb21tZW50IHRvIGVuYWJsZSB0ZXN0LiBTZXR0aW5nIG9uZSBvZiB0aGVzZSB2YWx1ZXMgdG8gJzAnIGRpc2FibGVzIGl0LgorIyBUaGVzZSB2YWx1ZXMgd2lsbCBob3BlZnVsbHkgbmV2ZXIgcmVib290IHlvdXIgbWFjaGluZSBkdXJpbmcgbm9ybWFsIHVzZQorIyAoaWYgeW91ciBtYWNoaW5lIGlzIHJlYWxseSBodW5nLCB0aGUgbG9hZGF2ZyB3aWxsIGdvIG11Y2ggaGlnaGVyIHRoYW4gMjUpCisjbWF4LWxvYWQtMQkJPSAyNAorI21heC1sb2FkLTUJCT0gMTgKKyNtYXgtbG9hZC0xNQkJPSAxMgorCisjIE5vdGUgdGhhdCB0aGlzIGlzIHRoZSBudW1iZXIgb2YgcGFnZXMhCisjIFRvIGdldCB0aGUgcmVhbCBzaXplLCBjaGVjayBob3cgbGFyZ2UgdGhlIHBhZ2VzaXplIGlzIG9uIHlvdXIgbWFjaGluZS4KKyNtaW4tbWVtb3J5CQk9IDEKKworI3JlcGFpci1iaW5hcnkJCT0gL3Vzci9zYmluL3JlcGFpcgorI3JlcGFpci10aW1lb3V0CQk9IAorI3Rlc3QtYmluYXJ5CQk9IAorI3Rlc3QtdGltZW91dAkJPSAKKword2F0Y2hkb2ctZGV2aWNlCT0gL2Rldi93YXRjaGRvZworCisjIERlZmF1bHRzIGNvbXBpbGVkIGludG8gdGhlIGJpbmFyeQorI3RlbXBlcmF0dXJlLWRldmljZQk9CisjbWF4LXRlbXBlcmF0dXJlCT0gMTIwCisKKyMgRGVmYXVsdHMgY29tcGlsZWQgaW50byB0aGUgYmluYXJ5CisjYWRtaW4JCQk9IHJvb3QKKyNpbnRlcnZhbAkJPSAxCisjbG9ndGljayAgICAgICAgICAgICAgICA9IDEKKyNsb2ctZGlyCQk9IC92YXIvbG9nL3dhdGNoZG9nCisKKyMgVGhpcyBncmVhdGx5IGRlY3JlYXNlcyB0aGUgY2hhbmNlIHRoYXQgd2F0Y2hkb2cgd29uJ3QgYmUgc2NoZWR1bGVkIGJlZm9yZQorIyB5b3VyIG1hY2hpbmUgaXMgcmVhbGx5IGxvYWRlZAorcmVhbHRpbWUJCT0geWVzCitwcmlvcml0eQkJPSAxCisKKyMgQ2hlY2sgaWYgcnN5c2xvZ2QgaXMgc3RpbGwgcnVubmluZyBieSBlbmFibGluZyB0aGUgZm9sbG93aW5nIGxpbmUKKyNwaWRmaWxlCQk9IC92YXIvcnVuL3JzeXNsb2dkLnBpZCAgIAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nLWNvbmZpZy93YXRjaGRvZy5kZWZhdWx0IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZy1jb25maWcvd2F0Y2hkb2cuZGVmYXVsdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDdkNWFiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZy1jb25maWcvd2F0Y2hkb2cuZGVmYXVsdApAQCAtMCwwICsxLDIgQEAKKyMgU3RhcnQgd2F0Y2hkb2cgYXQgYm9vdCB0aW1lPyAwIG9yIDEKK3J1bl93YXRjaGRvZz0xCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nLzAwMDEtRml4LWJ1aWxkLWlzc3Vlcy1mb3VuZC13aXRoLW5vbi1nbGliYy1DLWxpYnJhcmllcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2F0Y2hkb2cvd2F0Y2hkb2cvMDAwMS1GaXgtYnVpbGQtaXNzdWVzLWZvdW5kLXdpdGgtbm9uLWdsaWJjLUMtbGlicmFyaWVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YWZlZDVjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2F0Y2hkb2cvd2F0Y2hkb2cvMDAwMS1GaXgtYnVpbGQtaXNzdWVzLWZvdW5kLXdpdGgtbm9uLWdsaWJjLUMtbGlicmFyaWVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotRnJvbSA4M2VjMzRkZjM1NzIxOGExYzljZmMxM2EyM2QzMzY3ZDMzMzY1MmMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMzAgRGVjIDIwMTUgMDE6MDE6MTUgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIGlzc3VlcyBmb3VuZCB3aXRoIG5vbiBnbGliYyBDIGxpYnJhcmllcwotCi1BZGQgdGltZS5oIGZvciBnZXR0aW5nIHRpbWVfdCBkZWZpbml0aW9uCi1saW1pdHMuaCBmb3IgUEFUSF9NQVgKLWxpbnV4L3BhcmFtLmggZm9yIEVYRUNfUEFHRVNJWkUKLVJlcGxhY2UgZGVwcmVjYXRlZCBNTlRUQUIgd2l0aCBfUEFUSF9NTlRUQUIKLWluY2x1ZGUgZXh0Ml9tbnQuaCBmb3IgTU5UT1BUX1VTUlFVT1RBIGFuZCBNTlRPUFRfR1JQUVVPVEEgYW5kCi1NTlRUWVBFX0VYVDIKLUluY2x1ZGUgc3lzL3R5cGVzLmggZm9yIHVfY2hhciBkZWZpbml0aW9uCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLQotIGluY2x1ZGUvZXh0ZXJuLmggfCAxICsKLSBzcmMvY29uZmlnZmlsZS5jIHwgMSArCi0gc3JjL21lbW9yeS5jICAgICB8IDMgKysrCi0gc3JjL25ldC5jICAgICAgICB8IDEgKwotIHNyYy9zaHV0ZG93bi5jICAgfCAzICsrLQotIDUgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9pbmNsdWRlL2V4dGVybi5oIGIvaW5jbHVkZS9leHRlcm4uaAotaW5kZXggMjFkYjExYi4uMDRiMTZiYyAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvZXh0ZXJuLmgKLSsrKyBiL2luY2x1ZGUvZXh0ZXJuLmgKLUBAIC0zLDYgKzMsNyBAQAotIAotICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPHRpbWUuaD4KLSAKLSAjaW5jbHVkZSAibG9nbWVzc2FnZS5oIgotICNpbmNsdWRlICJ4bWFsbG9jLmgiCi1kaWZmIC0tZ2l0IGEvc3JjL2NvbmZpZ2ZpbGUuYyBiL3NyYy9jb25maWdmaWxlLmMKLWluZGV4IGJlNWQ3YjMuLjdjMWQxZGQgMTAwNjQ0Ci0tLS0gYS9zcmMvY29uZmlnZmlsZS5jCi0rKysgYi9zcmMvY29uZmlnZmlsZS5jCi1AQCAtMTYsNiArMTYsNyBAQAotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8ZGlyZW50Lmg+Ci0rI2luY2x1ZGUgPGxpbWl0cy5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotIAotICNpbmNsdWRlICJleHRlcm4uaCIKLWRpZmYgLS1naXQgYS9zcmMvbWVtb3J5LmMgYi9zcmMvbWVtb3J5LmMKLWluZGV4IGU5NjA3ZTQuLmI1ZTA4YWEgMTAwNjQ0Ci0tLS0gYS9zcmMvbWVtb3J5LmMKLSsrKyBiL3NyYy9tZW1vcnkuYwotQEAgLTIxLDYgKzIxLDkgQEAKLSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0gI2luY2x1ZGUgPHN5cy9tbWFuLmg+Ci0rI2lmZGVmIF9fbGludXhfXwotKyNpbmNsdWRlIDxsaW51eC9wYXJhbS5oPgotKyNlbmRpZgotIAotICNpbmNsdWRlICJleHRlcm4uaCIKLSAjaW5jbHVkZSAid2F0Y2hfZXJyLmgiCi1kaWZmIC0tZ2l0IGEvc3JjL25ldC5jIGIvc3JjL25ldC5jCi1pbmRleCAyMTgyM2FlLi44OTMwY2FmIDEwMDY0NAotLS0tIGEvc3JjL25ldC5jCi0rKysgYi9zcmMvbmV0LmMKLUBAIC0xNyw2ICsxNyw3IEBACi0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4JCS8qIGZvciBnZXRob3N0bmFtZSgpIGV0YyAqLwotICNpbmNsdWRlIDxuZXRkYi5oPgkJLyogZm9yIGdldGhvc3RieW5hbWUoKSAqLwotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CS8qIGZvciBNQVhIT1NUTkFNRUxFTiAqLwotICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0gI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLWRpZmYgLS1naXQgYS9zcmMvc2h1dGRvd24uYyBiL3NyYy9zaHV0ZG93bi5jCi1pbmRleCA3NGFhZmE1Li40NmI5OWNmIDEwMDY0NAotLS0tIGEvc3JjL3NodXRkb3duLmMKLSsrKyBiL3NyYy9zaHV0ZG93bi5jCi1AQCAtMjUsNiArMjUsNyBAQAotIAotICNpbmNsdWRlICJ3YXRjaF9lcnIuaCIKLSAjaW5jbHVkZSAiZXh0ZXJuLmgiCi0rI2luY2x1ZGUgImV4dDJfbW50LmgiCi0gCi0gI2lmIGRlZmluZWQgX19HTElCQ19fCi0gI2luY2x1ZGUgImV4dDJfbW50LmgiCi1AQCAtMTIzLDcgKzEyNCw3IEBAIHN0YXRpYyB2b2lkIG1udF9vZmYoKQotIAlGSUxFICpmcDsKLSAJc3RydWN0IG1udGVudCAqbW50OwotIAotLQlmcCA9IHNldG1udGVudChNTlRUQUIsICJyIik7Ci0rCWZwID0gc2V0bW50ZW50KF9QQVRIX01OVFRBQiwgInIiKTsKLSAJLyogaW4gc29tZSByYXJlIGNhc2VzIGZwIG1pZ2h0IGJlIE5VTEwgc28gYmUgY2FyZWZ1bCAqLwotIAl3aGlsZSAoZnAgIT0gTlVMTCAmJiAoKG1udCA9IGdldG1udGVudChmcCkpICE9IChzdHJ1Y3QgbW50ZW50ICopMCkpIHsKLSAJCS8qIEZpcnN0IGNoZWNrIGlmIHN3YXAgKi8KLS0tIAotMi42LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZy8wMDAxLUluY2x1ZGUtbGludXgtcGFyYW0uaC1mb3ItRVhFQ19QQUdFU0laRS1kZWZpbml0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZy8wMDAxLUluY2x1ZGUtbGludXgtcGFyYW0uaC1mb3ItRVhFQ19QQUdFU0laRS1kZWZpbml0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5OGYxOTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nLzAwMDEtSW5jbHVkZS1saW51eC1wYXJhbS5oLWZvci1FWEVDX1BBR0VTSVpFLWRlZmluaXRpb24ucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSA4ZjkxMzg1ZGJkNWU3YzE0YjM2ZWNiZDhhMDFjYTgyYzcwOWY2ZDc3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjQgSnVuIDIwMTYgMTg6MTk6MjkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gSW5jbHVkZSBsaW51eC9wYXJhbS5oIGZvciBFWEVDX1BBR0VTSVpFIGRlZmluaXRpb24KKworTXVzbCBkb2VzIG5vdCBpbmNsdWRlIGxpbnV4L3BhcmFtLmggd2hlcmVhcyBnbGliYworZG9lcywgc28gaXQgZmFpbHMgdG8gYnVpbGQgb24gbXVzbC4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworIHNyYy93YXRjaGRvZy5jIHwgMyArKysKKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvd2F0Y2hkb2cuYyBiL3NyYy93YXRjaGRvZy5jCitpbmRleCBhY2Y2NDUwLi40ODYzODRhIDEwMDY0NAorLS0tIGEvc3JjL3dhdGNoZG9nLmMKKysrKyBiL3NyYy93YXRjaGRvZy5jCitAQCAtMjYsNiArMjYsOSBAQAorICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4JCS8qIEZvciBFWEVDX1BBR0VTSVpFICovCisgI2luY2x1ZGUgPGxpbnV4L29vbS5oPgorICNpbmNsdWRlIDxsaW51eC93YXRjaGRvZy5oPgorKyNpZmRlZiBfX2xpbnV4X18KKysjaW5jbHVkZSA8bGludXgvcGFyYW0uaD4KKysjZW5kaWYKKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgCisgI2luY2x1ZGUgPGxpYmdlbi5oPgorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2F0Y2hkb2cvd2F0Y2hkb2cvZml4LXBpbmctZmFpbHVyZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2F0Y2hkb2cvd2F0Y2hkb2cvZml4LXBpbmctZmFpbHVyZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTRhYjljNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nL2ZpeC1waW5nLWZhaWx1cmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi1GaXggcGluZyBtb2RlIGZhaWx1cmUKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nICAKLQotV2hlbiB3YXRjaGRvZyB3b3JrcyBvbiBwaW5nIG1vZGUsIHRoZSBzeXN0ZW0gd2lsbCBiZSByZWJvb3RlZCBzaW5jZQotd2F0Y2hkb2cgY2FuIG5vdCByZWNlaXZlIHRoZSBleHBlY3RlZCBFQ09SRVBMWSBvbiBhIHNldHRpbmcgaW50ZXJ2YWwuCi0KLVBpbmcgbW9kZSB1c2VzIGEgcmF3IHNvY2tldCB0byBzZW5kIGEgRUNPIHBhY2tldCwgdGhlbiB1c2VzIHNlbGVjdCgpCi10byB3YWl0IGFuZCByZWN2ZnJvbSgpIHRvIHJlY2VpdmUgdGhlIEVDT1JFUExZIHBhY2tldCwgaWYgc2VsZWN0KCkKLXNob3dzIHRoZSBkYXRhIGlzIHJlYWR5LCBhbmQgdGhlIGRhdGEgaXMgbm90IHRoZSBleHBlY3RlZCBFQ09SRVBMWSwKLWFuZCB3YWl0aW5nIHRpbWUgaXMgbm90IG92ZXJkdWUsIGl0IHdpbGwgY29udGludWUgdXNlIHNlbGVjdCgpIGFuZAotcmVjdmZyb20oKS4KLQotUHJvYmxlbSBpcyB0aGF0IHRoZSByYXcgc29ja2V0IGNhbiByZWNlaXZlIGFueSBpY21wIHBhY2tldHMsIGlmIHdlIGRvCi1ub3Qgc2V0IGZpbHRlcnMsIGFuZCB0aGVyZSBhcmUgbWFueSBpY21wIHBhY2tldHMgb24gc29ja2V0LCB0aGlzCi1wcm9ncmFtIHdpbGwgbm90IGZpbmQgaXRzIGludGVyZXN0ZWQgRUNPUkVQTFkgcGFja2V0IGluIGEgc3BlY2lhbAotaW50ZXJ2YWwsIHdoaWNoIG1ha2VzIHRoZSBwaW5nIG1vZGUgZmFpbC4KLQotCi1PdGhlciBwcm9ncmFtIGlzIHRoYXQgd2F0Y2hkb2cgc29tZXRpbWUgY2FuIG5vdCByZWFjaCB0aGUgY2FsbCBvZgotcmVjdmZyb20gdG8gdHJ5IHRvIHJlY2VpdmUgcGFja2V0cyBzaW5jZSB0dl9zZWMgb2Ygc3RydWN0IHRpbWV2YWwKLW9mIHNlbGVjdCBwYXJhbWV0ZXIgaXMgMC4KLQotVGhlIHRpbWVvdXQgb2Ygc2VsZWN0KCkgaXMgdGhlIHJlc3VsdCBvZiBwaW5nIGludGVydmFsIG1pbnVzaW5nIHRoZQotdGltZSBvZiBjYWxsaW5nIGdldHRpbWVvZmRheSBzcGVuZGluZywgd2hlbiBwaW5nIGludGVydmFsIGlzIDEgc2Vjb25kLAotYW5kIHRoZSBjYWxsIG9mIGdldHRpbWVvZmRheSgpIHNwZW5kcyBzZXZlcmFsIHVzZWNvbmRzLCB0aGUgdHZfc2VjIG9mCi1zdHJ1Y3QgdGltZXZhbCBvZiBzZWxlY3QgcGFyYW1ldGVyIG11c3QgYmUgMCwgYXQgdGhhdCBjb25kaXRpb24sIHdlCi1zaG91bGQgaXQgaXMgdmFsaWQgb2YgdHZfc2VjIG9mIHN0cnVjdCB0aW1ldmFsIG9mIHNlbGVjdCBwYXJhbWV0ZXIgYmUgMCAKLQotU2lnbmVkLW9mZi1ieTogUm95LkxpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL25ldC5jICAgICAgfCAgICAyICstCi0gc3JjL3dhdGNoZG9nLmMgfCAgICA1ICsrKystCi0gMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLUluZGV4OiB3YXRjaGRvZy01LjE0L3NyYy93YXRjaGRvZy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gd2F0Y2hkb2ctNS4xNC5vcmlnL3NyYy93YXRjaGRvZy5jCi0rKysgd2F0Y2hkb2ctNS4xNC9zcmMvd2F0Y2hkb2cuYwotQEAgLTI0LDYgKzI0LDcgQEAKLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotICNpbmNsdWRlIDxsaW51eC9vb20uaD4KLSsjaW5jbHVkZSA8bGludXgvaWNtcC5oPgotICNpbmNsdWRlIDxsaW51eC93YXRjaGRvZy5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAKLUluZGV4OiB3YXRjaGRvZy01LjE0L3NyYy9uZXQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHdhdGNoZG9nLTUuMTQub3JpZy9zcmMvbmV0LmMKLSsrKyB3YXRjaGRvZy01LjE0L3NyYy9uZXQuYwotQEAgLTExLDcgKzExLDggQEAKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSAjaW5jbHVkZSA8bmV0aW5ldC9pcC5oPgotLSNpbmNsdWRlIDxuZXRpbmV0L2lwX2ljbXAuaD4KLSsjaW5jbHVkZSA8bGludXgvaWNtcC5oPgotKy8vI2luY2x1ZGUgPG5ldGluZXQvaXBfaWNtcC5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+CQkvKiBmb3IgZ2V0aG9zdG5hbWUoKSBldGMgKi8KLUBAIC0xNzksNiArMTgwLDkgQEAgaW50IG9wZW5fbmV0Y2hlY2soc3RydWN0IGxpc3QgKnRsaXN0KQotIHsKLSAJc3RydWN0IGxpc3QgKmFjdDsKLSAJaW50IGhvbGQgPSAwOwotKwlzdHJ1Y3QgaWNtcF9maWx0ZXIgZmlsdDsKLSsJZmlsdC5kYXRhID0gfigxPDxJQ01QX0VDSE9SRVBMWSk7Ci0rCi0gCi0gCWlmICh0bGlzdCAhPSBOVUxMKSB7Ci0gCQlmb3IgKGFjdCA9IHRsaXN0OyBhY3QgIT0gTlVMTDsgYWN0ID0gYWN0LT5uZXh0KSB7Ci1AQCAtMjAyLDYgKzIwNiw3IEBAIGludCBvcGVuX25ldGNoZWNrKHN0cnVjdCBsaXN0ICp0bGlzdCkKLSAJCQkgICAgZmF0YWxfZXJyb3IoRVhfU1lTRVJSLCAiZXJyb3Igb3BlbmluZyBzb2NrZXQgKCVzKSIsIHN0cmVycm9yKGVycm5vKSk7Ci0gCQkJfQotIAotKwkJCXNldHNvY2tvcHQobmV0LT5zb2NrX2ZwLCBTT0xfUkFXLCBJQ01QX0ZJTFRFUiwgKGNoYXIqKSZmaWx0LCBzaXplb2YoZmlsdCkpOwotIAkJCS8qIHRoaXMgaXMgbmVjZXNzYXJ5IGZvciBicm9hZGNhc3QgcGluZ3MgdG8gd29yayAqLwotIAkJCSh2b2lkKXNldHNvY2tvcHQobmV0LT5zb2NrX2ZwLCBTT0xfU09DS0VULCBTT19CUk9BRENBU1QsIChjaGFyICopJmhvbGQsIHNpemVvZihob2xkKSk7Ci0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nL2ZpeHNlcGJ1aWxkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZy9maXhzZXBidWlsZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmZhZDNhMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nL2ZpeHNlcGJ1aWxkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotRml4IG91dCBvZiB0cmVlIGJ1aWxkIHN1cHBvcnQ6Ci0KLXwgaW5zdGFsbGluZyAvZXRjL3dhdGNoZG9nLmNvbmYKLXwgIC9iaW4vbWtkaXIgLXAgJy9tZWRpYS9idWlsZDEvcG9reS9idWlsZC90bXAvd29yay9pNTg2LXBva3ktbGludXgvd2F0Y2hkb2cvNS4xMy1yMC9pbWFnZS91c3Ivc2hhcmUvbWFuL21hbjUnCi18ICAvYmluL21rZGlyIC1wICcvbWVkaWEvYnVpbGQxL3Bva3kvYnVpbGQvdG1wL3dvcmsvaTU4Ni1wb2t5LWxpbnV4L3dhdGNoZG9nLzUuMTMtcjAvaW1hZ2UvdXNyL3NoYXJlL21hbi9tYW44JwotfCAgL3Vzci9iaW4vaW5zdGFsbCAtYyAtbSA2NDQgL21lZGlhL2J1aWxkMS9wb2t5L2J1aWxkL3RtcC93b3JrL2k1ODYtcG9reS1saW51eC93YXRjaGRvZy81LjEzLXIwL3dhdGNoZG9nLTUuMTMvd2F0Y2hkb2cuY29uZi41ICcvbWVkaWEvYnVpbGQxL3Bva3kvYnVpbGQvdG1wL3dvcmsvaTU4Ni1wb2t5LWxpbnV4L3dhdGNoZG9nLzUuMTMtcjAvaW1hZ2UvdXNyL3NoYXJlL21hbi9tYW41JwotfCAgL3Vzci9iaW4vaW5zdGFsbCAtYyAtbSA2NDQgL21lZGlhL2J1aWxkMS9wb2t5L2J1aWxkL3RtcC93b3JrL2k1ODYtcG9reS1saW51eC93YXRjaGRvZy81LjEzLXIwL3dhdGNoZG9nLTUuMTMvd2F0Y2hkb2cuOCAvbWVkaWEvYnVpbGQxL3Bva3kvYnVpbGQvdG1wL3dvcmsvaTU4Ni1wb2t5LWxpbnV4L3dhdGNoZG9nLzUuMTMtcjAvd2F0Y2hkb2ctNS4xMy93ZF9rZWVwYWxpdmUuOCAvbWVkaWEvYnVpbGQxL3Bva3kvYnVpbGQvdG1wL3dvcmsvaTU4Ni1wb2t5LWxpbnV4L3dhdGNoZG9nLzUuMTMtcjAvd2F0Y2hkb2ctNS4xMy93ZF9pZGVudGlmeS44ICcvbWVkaWEvYnVpbGQxL3Bva3kvYnVpbGQvdG1wL3dvcmsvaTU4Ni1wb2t5LWxpbnV4L3dhdGNoZG9nLzUuMTMtcjAvaW1hZ2UvdXNyL3NoYXJlL21hbi9tYW44JwotfCAvdXNyL2Jpbi9pbnN0YWxsOiBjYW5ub3Qgc3RhdCBgd2F0Y2hkb2cuY29uZic6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKLXwgbWFrZVsyXTogKioqIFtpbnN0YWxsLWV0Yy1sb2NhbF0gRXJyb3IgMQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotUlAgMjAxMy8wMy8yMQotCi1JbmRleDogd2F0Y2hkb2ctNS4xMy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHdhdGNoZG9nLTUuMTMub3JpZy9NYWtlZmlsZS5hbQkyMDEzLTAyLTAxIDExOjE1OjQ0LjAwMDAwMDAwMCArMDAwMAotKysrIHdhdGNoZG9nLTUuMTMvTWFrZWZpbGUuYW0JMjAxMy0wMy0yMSAxMTo1OTozNS42MzcxMzkwMzEgKzAwMDAKLUBAIC0xNiw3ICsxNiw3IEBACi0gCWVsc2UgXAotIAkgICAgICAgIGVjaG8gImluc3RhbGxpbmcgJChDT05GSUdfRklMRU5BTUUpIjsgXAotIAkJJChta2luc3RhbGxkaXJzKSBgZGlybmFtZSAkKERFU1RESVIpJChDT05GSUdfRklMRU5BTUUpYDsgXAotLQkgICAgICAgICQoSU5TVEFMTF9EQVRBKSB3YXRjaGRvZy5jb25mICQoREVTVERJUikkKENPTkZJR19GSUxFTkFNRSk7IFwKLSsJICAgICAgICAkKElOU1RBTExfREFUQSkgJChzcmNkaXIpL3dhdGNoZG9nLmNvbmYgJChERVNURElSKSQoQ09ORklHX0ZJTEVOQU1FKTsgXAotIAlmaQotIAotIGluc3RhbGwtZGF0YS1sb2NhbDogaW5zdGFsbC1ldGMtbG9jYWwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2F0Y2hkb2cvd2F0Y2hkb2cvd2Rfa2VlcGFsaXZlLmluaXQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nL3dkX2tlZXBhbGl2ZS5pbml0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkM2U0YzUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nL3dkX2tlZXBhbGl2ZS5pbml0CkBAIC0wLDAgKzEsMTIxIEBACisjIS9iaW4vc2gKKyMvZXRjL2luaXQuZC93ZF9rZWVwYWxpdmU6IHN0YXJ0IHdkX2tlZXBhbGl2ZSBkYWVtb24uCisKKyMjIyBCRUdJTiBJTklUIElORk8KKyMgUHJvdmlkZXM6ICAgICAgICAgIHdkX2tlZXBhbGl2ZQorIyBTaG9ydC1EZXNjcmlwdGlvbjogU3RhcnQgd2F0Y2hkb2cga2VlcGFsaXZlIGRhZW1vbgorIyBSZXF1aXJlZC1TdGFydDogICAgJHJlbW90ZV9mcworIyBSZXF1aXJlZC1TdG9wOiAgICAgJHJlbW90ZV9mcworIyBYLVN0YXJ0LUJlZm9yZTogICAgJGFsbAorIyBEZWZhdWx0LVN0YXJ0OiAgICAgMiAzIDQgNQorIyBEZWZhdWx0LVN0b3AKKyMjIyBFTkQgSU5JVCBJTkZPCisKK1BBVEg9L2JpbjovdXNyL2Jpbjovc2JpbjovdXNyL3NiaW4KKwordGVzdCAteCAvdXNyL3NiaW4vd2Rfa2VlcGFsaXZlIHx8IGV4aXQgMAorCisjIEZvciBjb25maWd1cmF0aW9uIG9mIHRoZSBpbml0IHNjcmlwdCB1c2UgdGhlIGZpbGUKKyMgL2V0Yy9kZWZhdWx0L3dhdGNoZG9nLCBkbyBub3QgZWRpdCB0aGlzIGluaXQgc2NyaXB0LgorCisjIFNldCBydW5fd2F0Y2hkb2cgdG8gMSB0byBzdGFydCB3YXRjaGRvZyBvciAwIHRvIGRpc2FibGUgaXQuCitydW5fd2F0Y2hkb2c9MAorCisjIFNwZWNpZnkgYWRkaXRpb25hbCB3YXRjaGRvZyBvcHRpb25zIGhlcmUgKHNlZSBtYW5wYWdlKS4KK3dhdGNoZG9nX29wdGlvbnM9IiIKKworIyBTcGVjaWZ5IG1vZHVsZSB0byBsb2FkCit3YXRjaGRvZ19tb2R1bGU9Im5vbmUiCisKK1sgLWUgL2V0Yy9kZWZhdWx0L3dhdGNoZG9nIF0gJiYgLiAvZXRjL2RlZmF1bHQvd2F0Y2hkb2cKKworTkFNRT13ZF9rZWVwYWxpdmUKK0RBRU1PTj0vdXNyL3NiaW4vd2Rfa2VlcGFsaXZlCisKK1NUT1BfUkVUUllfU0NIRURVTEU9J1RFUk0vMTAvZm9yZXZlci9LSUxMLzEnCisKKyMgLiAvbGliL2xzYi9pbml0LWZ1bmN0aW9ucworCisjIE1vY2sgRGViaWFuIHN0dWZmCitsb2dfYmVnaW5fbXNnKCkgeworICAgIGVjaG8gLW4gJCoKK30KKworbG9nX2VuZF9tc2coKSB7CisgICAgaWYgWyAiJDEiID0gIjAiIF07IHRoZW4KKyAgICAgICAgZWNobyAnZG9uZScKKyAgICBlbHNlCisgICAgICAgIGVjaG8gJ2Vycm9yJworICAgIGZpCit9CisKK2xvZ19kYWVtb25fbXNnKCkgeworICAgIGVjaG8gJCoKK30KKworbG9nX3Byb2dyZXNzX21zZygpIHsKKyAgICBlY2hvICQqCit9CisKKworY2FzZSAiJDEiIGluCisgIHN0YXJ0KQorICAgIGlmIFsgJHJ1bl93YXRjaGRvZyA9IDEgXQorICAgIHRoZW4KKyAgICAgICAgWyAke3dhdGNoZG9nX21vZHVsZTotbm9uZX0gIT0gIm5vbmUiIF0gJiYgL3NiaW4vbW9kcHJvYmUgJHdhdGNoZG9nX21vZHVsZQorCWVjaG8gLW4gIlN0YXJ0aW5nIHdhdGNoZG9nIGtlZXBhbGl2ZSBkYWVtb246ICIKKwlpZiBzdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC0tcXVpZXQgXAorCSAgICAtLWV4ZWMgJERBRU1PTiAtLSAkd2F0Y2hkb2dfb3B0aW9ucworCXRoZW4KKwkgICAgZWNobyB3ZF9rZWVwYWxpdmUuCisJZWxzZQorCSAgICBlY2hvCisJZmkKKyAgICBmaQorICAgIDs7CisKKyAgc3RvcCkKKyAgICBpZiBbICRydW5fd2F0Y2hkb2cgPSAxIF0KKyAgICB0aGVuCisJZWNobyAtbiAiU3RvcHBpbmcgd2F0Y2hkb2cga2VlcGFsaXZlIGRhZW1vbjogIgorCWlmIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAtLXF1aWV0IC0tcGlkZmlsZSAvdmFyL3J1bi8kTkFNRS5waWQgXAorCSAgICAkU1RPUF9SRVRSWV9TQ0hFRFVMRQorCXRoZW4KKwkgICAgZWNobyB3ZF9rZWVwYWxpdmUuCisJZWxzZQorCSAgICBlY2hvCisJZmkKKyAgICBmaQorICAgIDs7CisKKyAgc3RhdHVzKQorICAgIHN0YXR1c19vZl9wcm9jICIkREFFTU9OIiAiJE5BTUUiICYmIGV4aXQgMCB8fCBleGl0ICQ/CisgICAgOzsKKworICByZXN0YXJ0KQorICAgICQwIGZvcmNlLXJlbG9hZAorICAgIDs7CisKKyAgZm9yY2UtcmVsb2FkKQorICAgIGlmIFsgJHJ1bl93YXRjaGRvZyA9IDAgXTsgdGhlbiBleGl0IDA7IGZpCisgICAgZWNobyAtbiAiUmVzdGFydGluZyAkTkFNRSBkYWVtb24uIgorICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAtLXF1aWV0IC0tcGlkZmlsZSAvdmFyL3J1bi8kTkFNRS5waWQgXAorCSRTVE9QX1JFVFJZX1NDSEVEVUxFCisgICAgZWNobyAtbiAiLiIKKyAgICBpZiBzdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC0tcXVpZXQgLS1waWRmaWxlIC92YXIvcnVuLyROQU1FLnBpZCBcCisJLS1leGVjICREQUVNT04gLS0gJHdhdGNoZG9nX29wdGlvbnMKKyAgICB0aGVuCisJZWNobyAiZG9uZS4iCisgICAgZWxzZQorCWVjaG8KKyAgICBmaQorICAgIDs7CisKKyAgKikKKyAgICBlY2hvICJVc2FnZTogL2V0Yy9pbml0LmQvd2Rfa2VlcGFsaXZlIHtzdGFydHxzdG9wfHN0YXR1c3xyZXN0YXJ0fGZvcmNlLXJlbG9hZH0iCisgICAgZXhpdCAxCisKK2VzYWMKKworZXhpdCAwCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2F0Y2hkb2cvd2F0Y2hkb2dfNS4xNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2F0Y2hkb2cvd2F0Y2hkb2dfNS4xNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzMzMDIzOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nXzUuMTQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1TVU1NQVJZID0gIlNvZnR3YXJlIHdhdGNoZG9nIgotREVTQ1JJUFRJT04gPSAiV2F0Y2hkb2cgaXMgYSBkYWVtb24gdGhhdCBjaGVja3MgaWYgeW91ciBzeXN0ZW0gaXMgc3RpbGwgXAotd29ya2luZy4gSWYgcHJvZ3JhbXMgaW4gdXNlciBzcGFjZSBhcmUgbm90IGxvbmdlciBleGVjdXRlZCBcCi1pdCB3aWxsIHJlYm9vdCB0aGUgc3lzdGVtLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93YXRjaGRvZy5zb3VyY2Vmb3JnZS5uZXQvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3RyYWNrZXIvP2dyb3VwX2lkPTE3MjAzMCZhdGlkPTg2MDE5NCIKLQotTElDRU5TRSA9ICJHUEwtMi4wKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWVjYzA1NTFiZjU0YWQ5N2Y2YjU0MTcyMGY4NGQ2NTY5IgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS93YXRjaGRvZy93YXRjaGRvZy0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vZml4c2VwYnVpbGQucGF0Y2ggXAotCSAgIGZpbGU6Ly9maXgtcGluZy1mYWlsdXJlLnBhdGNoIFwKLQkgICBmaWxlOi8vd2F0Y2hkb2ctaW5pdC5wYXRjaCBcCi0JICAgZmlsZTovL3dhdGNoZG9nLWNvbmYucGF0Y2ggXAotCSAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC1pc3N1ZXMtZm91bmQtd2l0aC1ub24tZ2xpYmMtQy1saWJyYXJpZXMucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNWIyZGJhMGM1OTM5NDJmNGFjYzEwMGJjYTBkNTYwYzQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjIwYjJmNDllOTg3OWYyZTg1YzczZDRjMWY0MjJmOTEwMWU2YjM4ZTgyNGZlYTI0MTRiZWZkOGJiNjg2NmFkMSIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvd2F0Y2hkb2cvZmlsZXMvd2F0Y2hkb2cvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL3dhdGNoZG9nLyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKS8iCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi1pbmhlcml0IHVwZGF0ZS1yYy5kCi0KLURFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgbGlidGlycGMgIgotQ0ZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1JJHtTVEFHSU5HX0lOQ0RJUn0vdGlycGMgIgotTERGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtbHRpcnBjICIKLUVYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsID0gIiAtLWRpc2FibGUtbmZzICIKLQotSU5JVFNDUklQVF9OQU1FID0gIndhdGNoZG9nLnNoIgotSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMTUgMSAyIDMgNCA1IC4gc3RvcCA4NSAwIDYgLiIKLQotUlJFQ09NTUVORFNfJHtQTn0gPSAia2VybmVsLW1vZHVsZS1zb2Z0ZG9nIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlpbnN0YWxsIC1EICR7U30vcmVkaGF0L3dhdGNoZG9nLmluaXQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC93YXRjaGRvZy5zaAotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZ181LjE1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZ181LjE1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlZGZjMDQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nXzUuMTUuYmIKQEAgLTAsMCArMSw1OSBAQAorU1VNTUFSWSA9ICJTb2Z0d2FyZSB3YXRjaGRvZyIKK0RFU0NSSVBUSU9OID0gIldhdGNoZG9nIGlzIGEgZGFlbW9uIHRoYXQgY2hlY2tzIGlmIHlvdXIgc3lzdGVtIGlzIHN0aWxsIFwKK3dvcmtpbmcuIElmIHByb2dyYW1zIGluIHVzZXIgc3BhY2UgYXJlIG5vdCBsb25nZXIgZXhlY3V0ZWQgXAoraXQgd2lsbCByZWJvb3QgdGhlIHN5c3RlbS4iCitIT01FUEFHRSA9ICJodHRwOi8vd2F0Y2hkb2cuc291cmNlZm9yZ2UubmV0LyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC90cmFja2VyLz9ncm91cF9pZD0xNzIwMzAmYXRpZD04NjAxOTQiCisKK0xJQ0VOU0UgPSAiR1BMLTIuMCsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lY2MwNTUxYmY1NGFkOTdmNmI1NDE3MjBmODRkNjU2OSIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vd2F0Y2hkb2cvd2F0Y2hkb2ctJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtSW5jbHVkZS1saW51eC1wYXJhbS5oLWZvci1FWEVDX1BBR0VTSVpFLWRlZmluaXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vd2F0Y2hkb2ctaW5pdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly93YXRjaGRvZy1jb25mLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3dkX2tlZXBhbGl2ZS5pbml0IFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjY3OGMzMmY2ZjM1YTA0OTJjOWMxYjc2YjRhYTg4ODI4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImZmZGM4NjUxMzdhZDVkOGU1MzY2NGJkMjJiYWQ0ZGU2Y2ExMzZkMWI0NjM2NzIwMzIwY2I1MmFmMGMxODk0N2MiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL3dhdGNoZG9nL2ZpbGVzL3dhdGNoZG9nLyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi93YXRjaGRvZy8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgorCitpbmhlcml0IGF1dG90b29scworaW5oZXJpdCB1cGRhdGUtcmMuZAorCitERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGxpYnRpcnBjICIKK0NGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtSSR7U1RBR0lOR19JTkNESVJ9L3RpcnBjICIKK0xERkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLWx0aXJwYyAiCitFWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLS1kaXNhYmxlLW5mcyAiCisKK0lOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiJHtQTn0gJHtQTn0ta2VlcGFsaXZlIgorCitJTklUU0NSSVBUX05BTUVfJHtQTn0gPSAid2F0Y2hkb2cuc2giCitJTklUU0NSSVBUX1BBUkFNU18ke1BOfSA9ICJzdGFydCAxNSAxIDIgMyA0IDUgLiBzdG9wIDg1IDAgNiAuIgorCitJTklUU0NSSVBUX05BTUVfJHtQTn0ta2VlcGFsaXZlID0gIndkX2tlZXBhbGl2ZSIKK0lOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LWtlZXBhbGl2ZSA9ICJzdGFydCAxNSAxIDIgMyA0IDUgLiBzdG9wIDg1IDAgNiAuIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlpbnN0YWxsIC1EICR7U30vcmVkaGF0L3dhdGNoZG9nLmluaXQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC93YXRjaGRvZy5zaAorICAgIGluc3RhbGwgLURtIDA3NTUgJHtXT1JLRElSfS93ZF9rZWVwYWxpdmUuaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvd2Rfa2VlcGFsaXZlCisKKyAgICAjIHdhdGNoZG9nLmNvbmYgaXMgcHJvdmlkZWQgYnkgdGhlIHdhdGNoZG9nLWNvbmZpZyByZWNpcGUKKyAgICBybSAke0R9JHtzeXNjb25mZGlyfS93YXRjaGRvZy5jb25mCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1rZWVwYWxpdmUiCisKK0ZJTEVTXyR7UE59LWtlZXBhbGl2ZSA9ICIgXAorICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL3dkX2tlZXBhbGl2ZSBcCisgICAgJHtzYmluZGlyfS93ZF9rZWVwYWxpdmUgXAorIgorCitSREVQRU5EU18ke1BOfSArPSAiJHtQTn0tY29uZmlnICR7UE59LWtlZXBhbGl2ZSIKK1JERVBFTkRTXyR7UE59LWtlZXBhbGl2ZSArPSAiJHtQTn0tY29uZmlnIgorCitSUkVDT01NRU5EU18ke1BOfSA9ICJrZXJuZWwtbW9kdWxlLXNvZnRkb2ciCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2dldC93Z2V0LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2dldC93Z2V0LmluYwppbmRleCBkYzM4MWE2Li5jNGFiZmU0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dnZXQvd2dldC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93Z2V0L3dnZXQuaW5jCkBAIC05LDcgKzksNyBAQAogCiBpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gdXBkYXRlLWFsdGVybmF0aXZlcyBwa2djb25maWcKIAotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLWlwdjYgLS13aXRoLXNzbD1nbnV0bHMgLS1kaXNhYmxlLXJwYXRoIC0tZGlzYWJsZS1pcmkgXAorRVhUUkFfT0VDT05GID0gIi0td2l0aC1zc2w9Z251dGxzIC0tZGlzYWJsZS1ycGF0aCAtLWRpc2FibGUtaXJpIFwKICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtbGliZ251dGxzLXByZWZpeCBhY19jdl9oZWFkZXJfdXVpZF91dWlkX2g9bm8iCiAKIEFMVEVSTkFUSVZFXyR7UE59ID0gIndnZXQiCkBAIC0yMCw4ICsyMCw5IEBACiAKIEJCQ0xBU1NFWFRFTkQgKz0gIm5hdGl2ZXNkayIKIAotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCAnaXB2NicsICcnLCBkKX0iCiBQQUNLQUdFQ09ORklHW2xpYnV1aWRdID0gIi0td2l0aC1saWJ1dWlkLCAtLXdpdGhvdXQtbGlidXVpZCx1dGlsLWxpbnV4IgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKIAogIyBMZXQgYWNsb2NhbCB1c2UgdGhlIHJlbGF0aXZlIHBhdGggZm9yIHRoZSBtNCBmaWxlIHJhdGhlciB0aGFuCiAjIGFic29sdXRlLCBvdGhlcndpc2UgdGhlcmUgbWlnaHQgYmUgYW4gIkFyZ3VtZW50IGxpc3QgdG9vIGxvbmciIGVycm9yCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dnZXQvd2dldF8xLjE3LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dnZXQvd2dldF8xLjE3LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjYTVkMWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93Z2V0L3dnZXRfMS4xNy4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vd2dldC93Z2V0LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhNmE5MDhjOWFlMGU2YTQxOTRjNjI4OTc0Y2MzZjA1YSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwMjlmYmI5M2JkYzFjMGM1YTc1MDdiNjA3NmE2ZWMyZjhkMzQyMDRhODVhYTg3ZTViMmY2MWE5NDA1YjI5MGY1IgotCi1yZXF1aXJlIHdnZXQuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dnZXQvd2dldF8xLjE4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93Z2V0L3dnZXRfMS4xOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTY5Yjk4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93Z2V0L3dnZXRfMS4xOC5iYgpAQCAtMCwwICsxLDggQEAKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS93Z2V0L3dnZXQtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImZjMmRlYmQ4Mzk5ZTNiOTMzYTliMjI2Nzk0ZTJhODg2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImEwMGE2NWZhYjg0Y2M0NmUyNGM1M2NlODhjNDU2MDQ2NjhhN2E0NzkyNzZlMDM3ZGMyZjU1OGUzNDcxN2ZiMmQiCisKK3JlcXVpcmUgd2dldC5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2hpY2gvd2hpY2gtMi4xOC9maXhfbmFtZV9jb25mbGljdF9ncm91cF9tZW1iZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3doaWNoL3doaWNoLTIuMTgvZml4X25hbWVfY29uZmxpY3RfZ3JvdXBfbWVtYmVyLnBhdGNoCmluZGV4IGZiOWIxYTQuLjBlMDk4OGIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2hpY2gvd2hpY2gtMi4xOC9maXhfbmFtZV9jb25mbGljdF9ncm91cF9tZW1iZXIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93aGljaC93aGljaC0yLjE4L2ZpeF9uYW1lX2NvbmZsaWN0X2dyb3VwX21lbWJlci5wYXRjaApAQCAtMyw3ICszLDcgQEAKICMgZ2xpYmMgYWxzbyBpbXBsZW1lbnRzIHRoZSBmdW5jdGlvbiBncm91cF9tZW1iZXIuIFRvIGF2b2lkIG5hbWUgY29uZmxpY3QsCiAjIGhlcmUgbGV0IHVzIGFwcGVuZCBhICJfIiB0byB3aGljaCdzIHZlcnNpb24uCiAjCi0jIFNpZ25lZC1vZmYtYnkgRGV4dWFuIEN1aSA8ZGV4dWFuLmN1aUBpbnRlbC5jb20+LCAyMDEwLTA4LTIwCisjIFNpZ25lZC1vZmYtYnk6IERleHVhbiBDdWkgPGRleHVhbi5jdWlAaW50ZWwuY29tPiwgMjAxMC0wOC0yMAogIyAodGhpcyBwYXRjaCBpcyBsaWNlbnNlZCB1bmRlciBHUEx2MikKIAogLS0tIHdoaWNoLTIuMTgvYmFzaC5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hkZy11dGlscy94ZGctdXRpbHNfMS4xLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hkZy11dGlscy94ZGctdXRpbHNfMS4xLjEuYmIKaW5kZXggYzE0NzJjZi4uNTAwNzQ5OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94ZGctdXRpbHMveGRnLXV0aWxzXzEuMS4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGRnLXV0aWxzL3hkZy11dGlsc18xLjEuMS5iYgpAQCAtMjcsNiArMjcsNyBAQAogCiBVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJ4ZGctdXRpbHMtKD9QPHB2ZXI+KChcZCtbXC5cLV9dKikrKSgocmN8YWxwaGF8YmV0YSlcZCspPylcLih0YXJcLmd6fHRneikiCiAKKyMgTmVlZHMgYnJva2Vuc2VwIGFzIHRoaXMgZG9lc24ndCB1c2UgYXV0b21ha2UKIGluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKIAogIyBUaGUgeHByb3AgcmVxdWlyZXMgeDExIGluIERJU1RST19GRUFUVVJFUwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC96aXAvemlwLTMuMC9maXgtc2VjdXJpdHktZm9ybWF0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC96aXAvemlwLTMuMC9maXgtc2VjdXJpdHktZm9ybWF0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5ZDg1NDgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3ppcC96aXAtMy4wL2ZpeC1zZWN1cml0eS1mb3JtYXQucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAoremlwOiBGaXhpbmcgc2VjdXJpdHkgZm9ybWF0dGluZyBpc3N1ZXMKKworRml4IHNlY3VyaXR5IGZvcm1hdHRpbmcgaXNzdWVzIHJlbGF0ZWQgdG8gcHJpbnRpbmcgd2l0aG91dCBOVUxMIGFyZ3VtZW50CisKK3ppcC5jOiBJbiBmdW5jdGlvbiAnaGVscF9leHRlbmRlZCc6Cit6aXAuYzoxMDMxOjU6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQorICAgICBwcmludGYodGV4dFtpXSk7CisgICAgIF4KK3ppcC5jOiBJbiBmdW5jdGlvbiAndmVyc2lvbl9pbmZvJzoKK3ppcC5jOjEyMjg6NTogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCisgICAgIHByaW50ZihjcnlwdG5vdGVbaV0pOworICAgICBeCisKK1tZT0NUTyAjOTU1Ml0KK1todHRwczovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NTJdCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBFZHdpbiBQbGF1Y2h1IDxlZHdpbi5wbGF1Y2h1LmNhbWFjaG9AaW50ZWwuY29tPgorCitkaWZmIC0tZ2l0IGEvemlwLmMgYi96aXAuYworaW5kZXggNDM5ODIxZi4uZDdkYTc2OCAxMDA2NDQKKy0tLSBhL3ppcC5jCisrKysgYi96aXAuYworQEAgLTEwMjgsNyArMTAyOCw3IEBAIGxvY2FsIHZvaWQgaGVscF9leHRlbmRlZCgpCisgCisgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKHRleHQpL3NpemVvZihjaGFyICopOyBpKyspCisgICB7CistICAgIHByaW50Zih0ZXh0W2ldKTsKKysgICAgZnB1dHModGV4dFtpXSxzdGRvdXQpOworICAgICBwdXRjaGFyKCdcbicpOworICAgfQorICNpZmRlZiBET1MKK0BAIC0xMjI1LDcgKzEyMjUsNyBAQCBsb2NhbCB2b2lkIHZlcnNpb25faW5mbygpCisgICAgICAgICAgICAgQ1JfTUFKT1JWRVIsIENSX01JTk9SVkVSLCBDUl9CRVRBX1ZFUiwgQ1JfVkVSU0lPTl9EQVRFKTsKKyAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YoY3J5cHRub3RlKS9zaXplb2YoY2hhciAqKTsgaSsrKQorICAgeworLSAgICBwcmludGYoY3J5cHRub3RlW2ldKTsKKysgICAgZnB1dHMoY3J5cHRub3RlW2ldLHN0ZG91dCk7CisgICAgIHB1dGNoYXIoJ1xuJyk7CisgICB9CisgICArK2k7ICAvKiBjcnlwdCBzdXBwb3J0IG1lYW5zIHRoZXJlIElTIGF0IGxlYXN0IG9uZSBjb21waWxhdGlvbiBvcHRpb24gKi8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvemlwL3ppcC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3ppcC96aXAuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MjIxYzVlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvemlwL3ppcC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1TVU1NQVJZID0gIkNvbXByZXNzb3IvYXJjaGl2ZXIgZm9yIGNyZWF0aW5nIGFuZCBtb2RpZnlpbmcgLnppcCBmaWxlcyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuaW5mby16aXAub3JnIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTA0ZDQzYzVkNzBiNDk2YzAzMjMwODEwNmUyNmFlMTdkIgotCi1TUkNfVVJJID0gImZ0cDovL2Z0cC5pbmZvLXppcC5vcmcvcHViL2luZm96aXAvc3JjL3ppcCR7QGQuZ2V0VmFyKCdQVicsMSkucmVwbGFjZSgnLicsICcnKX0udGd6IgotCi1FWFRSQV9PRU1BS0UgPSAiJ0NDPSR7Q0N9JyAnQklORD0ke0NDfScgJ0FTPSR7Q0N9IC1jJyAnQ1BQPSR7Q1BQfScgXAotCQknQ0ZMQUdTPS1JLiAtRFVOSVggJHtDRkxBR1N9JyAnSU5TVEFMTD1pbnN0YWxsJyBcCi0JCSdCSU5GTEFHUz0wNzU1JyAnSU5TVEFMTF9EPWluc3RhbGwgLWQnIgotCi1kb19jb21waWxlKCkgewotCW9lX3J1bm1ha2UgLWYgdW5peC9NYWtlZmlsZSBmbGFncyBJWl9CWklQMj1ub19zdWNoX2RpcmVjdG9yeQotCXNlZCAtaSAncyNMRkxBR1MxPSIiI0xGTEFHUzE9IiR7TERGTEFHU30iIycgZmxhZ3MKLQlvZV9ydW5tYWtlIC1mIHVuaXgvTWFrZWZpbGUgZ2VuZXJpYyBJWl9CWklQMj1ub19zdWNoX2RpcmVjdG9yeQotfQotCi1kb19pbnN0YWxsKCkgewotCW9lX3J1bm1ha2UgLWYgdW5peC9NYWtlZmlsZSBwcmVmaXg9JHtEfSR7cHJlZml4fSBcCi0JCSAgIEJJTkRJUj0ke0R9JHtiaW5kaXJ9IE1BTkRJUj0ke0R9JHttYW5kaXJ9L21hbjEgXAotCQkgICBpbnN0YWxsCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC96aXAvemlwXzMuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvemlwL3ppcF8zLjAuYmIKaW5kZXggMzgzZGE0Yi4uMDg3NDIzYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC96aXAvemlwXzMuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3ppcC96aXBfMy4wLmJiCkBAIC0xLDE4ICsxLDQyIEBACi1yZXF1aXJlIHppcC5pbmMKK1NVTU1BUlkgPSAiQ29tcHJlc3Nvci9hcmNoaXZlciBmb3IgY3JlYXRpbmcgYW5kIG1vZGlmeWluZyAuemlwIGZpbGVzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5pbmZvLXppcC5vcmciCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCiAKLVBSPSJyMiIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MDRkNDNjNWQ3MGI0OTZjMDMyMzA4MTA2ZTI2YWUxN2QiCiAKLSMgemlwLTIuMzIgc3RpbGwgdXNlcyBkaXJlY3RvcnkgbmFtZSBvZiB6aXAtMi4zMAorUFIgPSAicjIiCisKIFMgPSAiJHtXT1JLRElSfS96aXAzMCIKIAorU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vaW5mb3ppcC9aaXAlMjAzLnglMjAlMjhsYXRlc3QlMjkvMy4wL3ppcDMwLnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtc2VjdXJpdHktZm9ybWF0LnBhdGNoIgorCiBTUkNfVVJJW21kNXN1bV0gPSAiN2I3NDU1MWU2M2Y4ZWU2YWFiNmZiYzg2Njc2YzBkMzciCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjBlOGJiMWY5YjdlYjBiMDEyODU0OTVhMjY5OWRmM2E0Yjc2Njc4NGMxNzY1YThmMWFlZWRmNjNjMDgwNjM2OSIKIAotIyBleGNsdWRlIHZlcnNpb24gMi4zLjIgd2hpY2ggdHJpZ2dlcnMgYSBmYWxzZSBwb3NpdGl2ZQotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiXnppcCg/UDxwdmVyPig/ITIzMikuKylcLnRneiIKLQogIyB6aXAuaW5jIHNldHMgQ0ZMQUdTLCBidXQgd2hhdCBNYWtlZmlsZSBhY3R1YWxseSB1c2VzIGlzCiAjIENGTEFHU19OT09QVC4gIEl0IHdpbGwgYWxzbyBmb3JjZSAtTzMgb3B0aW1pemF0aW9uLCBvdmVycmlkaW5nCiAjIHdoYXRldmVyIHdlIHNldC4KLSMKLUVYVFJBX09FTUFLRV9hcHBlbmQgPSAiICdDRkxBR1NfTk9PUFQ9LUkuIC1EVU5JWCAke0NGTEFHU30nIgorRVhUUkFfT0VNQUtFID0gIidDQz0ke0NDfScgJ0JJTkQ9JHtDQ30nICdBUz0ke0NDfSAtYycgJ0NQUD0ke0NQUH0nIFwKKwkJJ0NGTEFHUz0tSS4gLURVTklYICR7Q0ZMQUdTfScgXAorCQknQ0ZMQUdTX05PT1BUPS1JLiAtRFVOSVggJHtDRkxBR1N9JyBcCisJCSdJTlNUQUxMPWluc3RhbGwnICdJTlNUQUxMX0Q9aW5zdGFsbCAtZCcgXAorCQknQklORkxBR1M9MDc1NSciCisKK2RvX2NvbXBpbGUoKSB7CisJb2VfcnVubWFrZSAtZiB1bml4L01ha2VmaWxlIGZsYWdzIElaX0JaSVAyPW5vX3N1Y2hfZGlyZWN0b3J5CisJc2VkIC1pICdzI0xGTEFHUzE9IiIjTEZMQUdTMT0iJHtMREZMQUdTfSIjJyBmbGFncworCW9lX3J1bm1ha2UgLWYgdW5peC9NYWtlZmlsZSBnZW5lcmljIElaX0JaSVAyPW5vX3N1Y2hfZGlyZWN0b3J5Cit9CisKK2RvX2luc3RhbGwoKSB7CisJb2VfcnVubWFrZSAtZiB1bml4L01ha2VmaWxlIHByZWZpeD0ke0R9JHtwcmVmaXh9IFwKKwkJICAgQklORElSPSR7RH0ke2JpbmRpcn0gTUFORElSPSR7RH0ke21hbmRpcn0vbWFuMSBcCisJCSAgIGluc3RhbGwKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKKyMgZXhjbHVkZSB2ZXJzaW9uIDIuMy4yIHdoaWNoIHRyaWdnZXJzIGEgZmFsc2UgcG9zaXRpdmUKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIl56aXAoP1A8cHZlcj4oPyEyMzIpLispXC50Z3oiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2VwaXBoYW55XzMuMTguNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZXBpcGhhbnkvZXBpcGhhbnlfMy4xOC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Njk1NjljLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZXBpcGhhbnkvZXBpcGhhbnlfMy4xOC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotU1VNTUFSWSA9ICJXZWJLaXQgYmFzZWQgd2ViIGJyb3dzZXIgZm9yIEdOT01FIgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLQotREVQRU5EUyA9ICJsaWJzb3VwLTIuNCB3ZWJraXRndGsgZ3RrKzMgaXNvLWNvZGVzIGNhLWNlcnRpZmljYXRlcyBhdmFoaSBsaWJub3RpZnkgZ2NyIGxpYnduY2szIFwKLQkgICBnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIGdub21lLWRlc2t0b3AzIGxpYnhtbDItbmF0aXZlIGludGx0b29sLW5hdGl2ZSIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ3NldHRpbmdzIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLSMgbGlid25jazMgaXMgeDExIG9ubHkKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLXllbHAubTQtZHJvcC10aGUtY2hlY2stZm9yLWl0c3Rvb2wucGF0Y2giCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIxNzJiNzgyNTYxMDBlOGQzYzYyOTc2NGFiZDBlMTQ5NSIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImJlNjk5ZDQ4NDM3MTExMWFiYWU3NTRlNjY5MTg3MjE1ZGY3M2UyMTUzM2Y0NjFlNTEzYjc5NTM3ZDdhMWMxYzEiCi0KLUVYVFJBX09FQ09ORiArPSAiIC0tZGlzYWJsZS1uc3MgLS13aXRoLWRpc3RyaWJ1dG9yLW5hbWU9JHtESVNUUk99IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICB0b3VjaCAke1N9L2dub21lLWRvYy11dGlscy5tYWtlCi0gICAgc2VkIC1pIC1lIHM6aGVscDo6ZyAke1N9L01ha2VmaWxlLmFtCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2FwcGRhdGEgJHtkYXRhZGlyfS9kYnVzLTEgJHtkYXRhZGlyfS9nbm9tZS1zaGVsbC9zZWFyY2gtcHJvdmlkZXJzIgotUkRFUEVORFNfJHtQTn0gPSAiaXNvLWNvZGVzIGFkd2FpdGEtaWNvbi10aGVtZSIKLVJSRUNPTU1FTkRTXyR7UE59ID0gImNhLWNlcnRpZmljYXRlcyIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9lcGlwaGFueV8zLjIwLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2VwaXBoYW55XzMuMjAuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYmE0ODBiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9lcGlwaGFueV8zLjIwLjMuYmIKQEAgLTAsMCArMSwyNSBAQAorU1VNTUFSWSA9ICJXZWJLaXQgYmFzZWQgd2ViIGJyb3dzZXIgZm9yIEdOT01FIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKKworREVQRU5EUyA9ICJsaWJzb3VwLTIuNCB3ZWJraXRndGsgZ3RrKzMgaXNvLWNvZGVzIGNhLWNlcnRpZmljYXRlcyBhdmFoaSBsaWJub3RpZnkgZ2NyIGxpYnduY2szIFwKKwkgICBnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIGdub21lLWRlc2t0b3AzIGxpYnhtbDItbmF0aXZlIGludGx0b29sLW5hdGl2ZSIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ3NldHRpbmdzIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKyMgbGlid25jazMgaXMgeDExIG9ubHkKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLXllbHAubTQtZHJvcC10aGUtY2hlY2stZm9yLWl0c3Rvb2wucGF0Y2giCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIzMTgyMmI2YjE5OWY3MjRmMjEyYWU5MjAwYmMwNTVmMSIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjRkOWRlMWJkYjQ0YzE0YWRmMjVhYTZkYzAyZWEzZGU2MDkyNWNmZjVlYjAxZmU4OTU0NWU2MDMyYzliNDI0YTIiCisKK0VYVFJBX09FQ09ORiArPSAiIC0tZGlzYWJsZS1uc3MgLS13aXRoLWRpc3RyaWJ1dG9yLW5hbWU9JHtESVNUUk99IgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICBzZWQgLWkgLWUgczpoZWxwOjpnICR7U30vTWFrZWZpbGUuYW0KK30KKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vYXBwZGF0YSAke2RhdGFkaXJ9L2RidXMtMSAke2RhdGFkaXJ9L2dub21lLXNoZWxsL3NlYXJjaC1wcm92aWRlcnMiCitSREVQRU5EU18ke1BOfSA9ICJpc28tY29kZXMgYWR3YWl0YS1pY29uLXRoZW1lIgorUlJFQ09NTUVORFNfJHtQTn0gPSAiY2EtY2VydGlmaWNhdGVzIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2djci9nY3JfMy4xOC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nY3IvZ2NyXzMuMTguMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzI1MjNhNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2djci9nY3JfMy4xOC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGxpYnJhcnkgZm9yIGJpdHMgb2YgY3J5cHRvIFVJIGFuZCBwYXJzaW5nIGV0YyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ25vbWUub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTVjYTgxN2NjYjdkNWI1YjY2MzU1NjkwZTlhYmM2MDUiCi0KLURFUEVORFMgPSAiZ3RrKzMgcDExLWtpdCBnbGliLTIuMCBsaWJnY3J5cHQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdub21lYmFzZSBndGstaWNvbi1jYWNoZSBndGstZG9jIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gdmFsYSBnb2JqZWN0LWludHJvc3BlY3Rpb24KLSMgZGVwZW5kcyBvbiBndGsrMywgYnV0IGFsc28geDExIHRocm91Z2ggZ3RrKy14MTEKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImI5NTliYWM5OWUxN2M5YmIwOTkwYTE1YzliZTExYWVkIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiZDRkMTZkYTVhZjU1MTQ4YTY5NDA1NTgzNWNjZDA3YWQzNGRhZjBhZDAzYmRhZDkyOWJmN2NhZDE1NjM3Y2UwMCIKLQotRklMRVNfJHtQTn0gKz0gIiBcCi0gICAgJHtkYXRhZGlyfS9kYnVzLTEgXAotICAgICR7ZGF0YWRpcn0vZ2NyLTMgXAotIgotCi0jIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8yMDIyOS8KLUFSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgotCi0jIG9uIHg4Ni02NCB0aGUgaW50cm9zcGVjdGlvbiBiaW5hcnkgZ29lcyBpbnRvIAotIyBhbiBpbmZpbml0ZSBsb29wIHVuZGVyIHFlbXUgZHVyaW5nIGNvbXBpbGF0aW9uLCAKLSMgcHJpbnRpbmcgdGhlIGZvbGxvd2luZzoKLSMgCi0jIGdjcnlwdC1NZXNzYWdlOiBzZWxlY3QoKSBlcnJvcjogQmFkIGFkZHJlc3MKLSMKLSMgZ2NyeXB0LU1lc3NhZ2U6IHNlbGVjdCgpIGVycm9yOiBCYWQgYWRkcmVzcwotIwotIyBnY3J5cHQtTWVzc2FnZTogc2VsZWN0KCkgZXJyb3I6IEJhZCBhZGRyZXNzCi0jCi0jIFRoaXMgd2lsbCBiZSBpbnZlc3RpZ2F0ZWQgbGF0ZXIuCi1FWFRSQV9PRUNPTkZfYXBwZW5kX3g4Ni02NCA9ICIgLS1kaXNhYmxlLWludHJvc3BlY3Rpb24iCi0KLSMgR2NyLTMuYnJva2VuOiBwb2t5L2J1aWxkLW1pcHM2NC90bXAvd29yay9taXBzNjQtcG9reS1saW51eC9saWJncGctZXJyb3IvMS4xOS1yMC9saWJncGctZXJyb3ItMS4xOS9zcmMvcG9zaXgtbG9jay5jOjExOTogZ2V0X2xvY2tfb2JqZWN0OiBBc3NlcnRpb24gYCEic2l6ZW9mIGxvY2sgb2JqIicgZmFpbGVkLgotIyBxZW11OiB1bmNhdWdodCB0YXJnZXQgc2lnbmFsIDYgKEFib3J0ZWQpIC0gY29yZSBkdW1wZWQKLUVYVFJBX09FQ09ORl9hcHBlbmRfbWlwczY0ID0gIiAtLWRpc2FibGUtaW50cm9zcGVjdGlvbiIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nY3IvZ2NyXzMuMjAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2NyL2djcl8zLjIwLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjMyYTQ1NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2NyL2djcl8zLjIwLjAuYmIKQEAgLTAsMCArMSw0MCBAQAorU1VNTUFSWSA9ICJBIGxpYnJhcnkgZm9yIGJpdHMgb2YgY3J5cHRvIFVJIGFuZCBwYXJzaW5nIGV0YyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ25vbWUub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTVjYTgxN2NjYjdkNWI1YjY2MzU1NjkwZTlhYmM2MDUiCisKK0RFUEVORFMgPSAiaW50bHRvb2wtbmF0aXZlIGd0ayszIHAxMS1raXQgZ2xpYi0yLjAgbGliZ2NyeXB0IgorCitpbmhlcml0IGF1dG90b29scyBnbm9tZWJhc2UgZ3RrLWljb24tY2FjaGUgZ3RrLWRvYyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIHZhbGEgZ29iamVjdC1pbnRyb3NwZWN0aW9uCisjIGRlcGVuZHMgb24gZ3RrKzMsIGJ1dCBhbHNvIHgxMSB0aHJvdWdoIGd0aysteDExCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI0MzE0YmY4OWVhYzI5M2RkMGE5ZDgwNjU5M2ZmMWIzNSIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjkwNTcyYzYyNmQ4YTcwODIyNTU2MGM0MmI0NDIxZjc5NDEzMTUyNDdmYTE2NzlkNGVmNTY5YmRlN2Y0YmIzNzkiCisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7ZGF0YWRpcn0vZGJ1cy0xIFwKKyAgICAke2RhdGFkaXJ9L2djci0zIFwKKyIKKworIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjAyMjkvCitBUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKKworIyBvbiB4ODYtNjQgdGhlIGludHJvc3BlY3Rpb24gYmluYXJ5IGdvZXMgaW50byAKKyMgYW4gaW5maW5pdGUgbG9vcCB1bmRlciBxZW11IGR1cmluZyBjb21waWxhdGlvbiwgCisjIHByaW50aW5nIHRoZSBmb2xsb3dpbmc6CisjIAorIyBnY3J5cHQtTWVzc2FnZTogc2VsZWN0KCkgZXJyb3I6IEJhZCBhZGRyZXNzCisjCisjIGdjcnlwdC1NZXNzYWdlOiBzZWxlY3QoKSBlcnJvcjogQmFkIGFkZHJlc3MKKyMKKyMgZ2NyeXB0LU1lc3NhZ2U6IHNlbGVjdCgpIGVycm9yOiBCYWQgYWRkcmVzcworIworIyBUaGlzIHdpbGwgYmUgaW52ZXN0aWdhdGVkIGxhdGVyLgorRVhUUkFfT0VDT05GX2FwcGVuZF94ODYtNjQgPSAiIC0tZGlzYWJsZS1pbnRyb3NwZWN0aW9uIC0tZGlzYWJsZS1ndGstZG9jIgorCisjIEdjci0zLmJyb2tlbjogcG9reS9idWlsZC1taXBzNjQvdG1wL3dvcmsvbWlwczY0LXBva3ktbGludXgvbGliZ3BnLWVycm9yLzEuMTktcjAvbGliZ3BnLWVycm9yLTEuMTkvc3JjL3Bvc2l4LWxvY2suYzoxMTk6IGdldF9sb2NrX29iamVjdDogQXNzZXJ0aW9uIGAhInNpemVvZiBsb2NrIG9iaiInIGZhaWxlZC4KKyMgcWVtdTogdW5jYXVnaHQgdGFyZ2V0IHNpZ25hbCA2IChBYm9ydGVkKSAtIGNvcmUgZHVtcGVkCitFWFRSQV9PRUNPTkZfYXBwZW5kX21pcHM2NCA9ICIgLS1kaXNhYmxlLWludHJvc3BlY3Rpb24gLS1kaXNhYmxlLWd0ay1kb2MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zl8yLjMyLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zl8yLjMyLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhOTRlZWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nZGstcGl4YnVmL2dkay1waXhidWZfMi4zMi4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLVNVTU1BUlkgPSAiSW1hZ2UgbG9hZGluZyBsaWJyYXJ5IGZvciBHVEsrIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5ndGsub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotCi1MSUNFTlNFID0gIkxHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dkay1waXhidWYvZ2RrLXBpeGJ1Zi5oO2VuZGxpbmU9MjY7bWQ1PTcyYjM5ZGE3Y2JkZGUyZTY2NTMyOWZlZjYxOGUxZDZiIgotCi1TRUNUSU9OID0gImxpYnMiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAiCi0KLU1BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKLQotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9oYXJkY29kZWRfbGlidG9vbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9leHRlbmRpbmctbGliaW5zdGFsbC1kZXBlbmRlbmNpZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL2ZhdGFsLWxvYWRlci5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjkyNzUwNzY2MzliYWEyNGEzNDJmM2UwMmM0MDI5MjBlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJiNjc3MWYxYWM3MmY2ODdhODk3MWU1OTgxMGI4ZGM2NThlNjVlN2QzMDg2YmQyZTY3NmU2MThmZDU0MWQwMzEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IHBpeGJ1ZmNhY2hlIHB0ZXN0LWdub21lIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotTElCViA9ICIyLjEwLjAiCi0KLUdES19QSVhCVUZfTE9BREVSUyA/PSAicG5nIGpwZWciCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0dES19QSVhCVUZfTE9BREVSU30iCi1QQUNLQUdFQ09ORklHX2xpbnV4c3RkYmFzZSA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEnLCAnJywgZCl9ICR7R0RLX1BJWEJVRl9MT0FERVJTfSIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiR7R0RLX1BJWEJVRl9MT0FERVJTfSIKLQotUEFDS0FHRUNPTkZJR1twbmddID0gIi0td2l0aC1saWJwbmcsLS13aXRob3V0LWxpYnBuZyxsaWJwbmciCi1QQUNLQUdFQ09ORklHW2pwZWddID0gIi0td2l0aC1saWJqcGVnLC0td2l0aG91dC1saWJqcGVnLGpwZWciCi1QQUNLQUdFQ09ORklHW3RpZmZdID0gIi0td2l0aC1saWJ0aWZmLC0td2l0aG91dC1saWJ0aWZmLHRpZmYiCi1QQUNLQUdFQ09ORklHW2pwZWcyMDAwXSA9ICItLXdpdGgtbGliamFzcGVyLC0td2l0aG91dC1saWJqYXNwZXIsamFzcGVyIgotCi0jIFVzZSBHSU8gdG8gc25pZmYgaW1hZ2UgZm9ybWF0IGluc3RlYWQgb2YgdHJ5aW5nIGFsbCBsb2FkZXJzCi1QQUNLQUdFQ09ORklHW2dpby1zbmlmZl0gPSAiLS1lbmFibGUtZ2lvLXNuaWZmaW5nLC0tZGlzYWJsZS1naW8tc25pZmZpbmcsLHNoYXJlZC1taW1lLWluZm8iCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLS13aXRoLXgxMSwtLXdpdGhvdXQteDExLHZpcnR1YWwvbGlieDExIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0teGxpYiIKLQotRklMRVNfJHtQTn0teGxpYiA9ICIke2xpYmRpcn0vKnBpeGJ1Zl94bGliKiR7U09MSUJTfSIKLUFMTE9XX0VNUFRZXyR7UE59LXhsaWIgPSAiMSIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMiCi0KLUZJTEVTXyR7UE59LWRldiArPSAiIFwKLQkke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1jc291cmNlIFwKLQkke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1waXhkYXRhIFwKLQkke2luY2x1ZGVkaXJ9LyogXAotCSR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMvKi5sYSBcCi0iCi0KLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl5nZGstcGl4YnVmLWxvYWRlci0uKiIKLVBBQ0tBR0VTX0RZTkFNSUNfY2xhc3MtbmF0aXZlID0gIiIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIHBvc3RpbnN0X3BpeGJ1ZmxvYWRlciA9IGQuZ2V0VmFyKCJwb3N0aW5zdF9waXhidWZsb2FkZXIiLCBUcnVlKQotCi0gICAgbG9hZGVyc19yb290ID0gZC5leHBhbmQoJyR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMnKQotCi0gICAgcGFja2FnZXMgPSAnICcuam9pbihkb19zcGxpdF9wYWNrYWdlcyhkLCBsb2FkZXJzX3Jvb3QsICdebGlicGl4YnVmbG9hZGVyLSguKilcLnNvJCcsICdnZGstcGl4YnVmLWxvYWRlci0lcycsICdHREsgcGl4YnVmIGxvYWRlciBmb3IgJXMnKSkKLSAgICBkLnNldFZhcignUElYQlVGX1BBQ0tBR0VTJywgcGFja2FnZXMpCi0KLSAgICAjIFRoZSB0ZXN0IHN1aXRlIGV4ZXJjaXNlcyBhbGwgdGhlIGxvYWRlcnMsIHNvIGVuc3VyZSB0aGV5IGFyZSBhbGwKLSAgICAjIGRlcGVuZGVuY2llcyBvZiB0aGUgcHRlc3QgcGFja2FnZS4KLSAgICBkLmFwcGVuZFZhcigiUkRFUEVORFNfZ2RrLXBpeGJ1Zi1wdGVzdCIsICIgIiArIHBhY2thZ2VzKQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIE1vdmUgZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzIGludG8gbGliZGlyIHNvIGl0IGlzIGFsd2F5cyBhdmFpbGFibGUKLQkjIGluIG11bHRpbGliIGJ1aWxkcy4KLQltdiAke0R9LyR7YmluZGlyfS9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMgJHtEfS8ke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLQlmaW5kICR7RH0ke2xpYmRpcn0gLW5hbWUgImxpYnBpeGJ1ZmxvYWRlci0qLmxhIiAtZXhlYyBybSBce1x9IFw7Ci0KLQljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9nZGstcGl4YnVmLWNzb3VyY2UgXAotCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUKLQotCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2dkay1waXhidWYtcGl4ZGF0YSBcCi0JCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy5jYWNoZQotCi0JY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzIFwKLQkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzLmNhY2hlIFwKLQkJR0RLX1BJWEJVRl9NT0RVTEVESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycwotfQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLVNTVEFURVBSRUlOU1RGVU5DU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBnZGtwaXhidWZfc3N0YXRlX3ByZWluc3QiCi1TWVNST09UX1BSRVBST0NFU1NfRlVOQ1NfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZ2RrcGl4YnVmX3NzdGF0ZV9wcmVpbnN0IgotCi1nZGtwaXhidWZfc3N0YXRlX3ByZWluc3QoKSB7Ci0JaWYgWyAiJHtCQl9DVVJSRU5UVEFTS30iID0gInBvcHVsYXRlX3N5c3Jvb3QiIF07IHRoZW4KLQkJcm0gLXJmICR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9LyoKLQlmaQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nZGstcGl4YnVmL2dkay1waXhidWZfMi4zNC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nZGstcGl4YnVmL2dkay1waXhidWZfMi4zNC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmMzk0OTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zl8yLjM0LjAuYmIKQEAgLTAsMCArMSwxMDIgQEAKK1NVTU1BUlkgPSAiSW1hZ2UgbG9hZGluZyBsaWJyYXJ5IGZvciBHVEsrIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5ndGsub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgorCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dkay1waXhidWYvZ2RrLXBpeGJ1Zi5oO2VuZGxpbmU9MjY7bWQ1PTcyYjM5ZGE3Y2JkZGUyZTY2NTMyOWZlZjYxOGUxZDZiIgorCitTRUNUSU9OID0gImxpYnMiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAiCisKK01BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9oYXJkY29kZWRfbGlidG9vbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9leHRlbmRpbmctbGliaW5zdGFsbC1kZXBlbmRlbmNpZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL2ZhdGFsLWxvYWRlci5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjYzY2IxOWY5MmNmNzcwOWNjZjQ0YmJiNmZlMWZmNzBjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ1NWU1YjM4M2VlMjE5YmQwZTIzYmY2ZWQ0NDI3ZDU2YTdkYjUzNzk3MjlhNmUzZTBhMGUwZWJhOWE4ZDg4NzkiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IHBpeGJ1ZmNhY2hlIHB0ZXN0LWdub21lIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYworCitMSUJWID0gIjIuMTAuMCIKKworR0RLX1BJWEJVRl9MT0FERVJTID89ICJwbmcganBlZyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7R0RLX1BJWEJVRl9MT0FERVJTfSIKK1BBQ0tBR0VDT05GSUdfbGludXhzdGRiYXNlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3gxMScsICcnLCBkKX0gJHtHREtfUElYQlVGX0xPQURFUlN9IgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiJHtHREtfUElYQlVGX0xPQURFUlN9IgorCitQQUNLQUdFQ09ORklHW3BuZ10gPSAiLS13aXRoLWxpYnBuZywtLXdpdGhvdXQtbGlicG5nLGxpYnBuZyIKK1BBQ0tBR0VDT05GSUdbanBlZ10gPSAiLS13aXRoLWxpYmpwZWcsLS13aXRob3V0LWxpYmpwZWcsanBlZyIKK1BBQ0tBR0VDT05GSUdbdGlmZl0gPSAiLS13aXRoLWxpYnRpZmYsLS13aXRob3V0LWxpYnRpZmYsdGlmZiIKK1BBQ0tBR0VDT05GSUdbanBlZzIwMDBdID0gIi0td2l0aC1saWJqYXNwZXIsLS13aXRob3V0LWxpYmphc3BlcixqYXNwZXIiCisKKyMgVXNlIEdJTyB0byBzbmlmZiBpbWFnZSBmb3JtYXQgaW5zdGVhZCBvZiB0cnlpbmcgYWxsIGxvYWRlcnMKK1BBQ0tBR0VDT05GSUdbZ2lvLXNuaWZmXSA9ICItLWVuYWJsZS1naW8tc25pZmZpbmcsLS1kaXNhYmxlLWdpby1zbmlmZmluZywsc2hhcmVkLW1pbWUtaW5mbyIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteDExLC0td2l0aG91dC14MTEsdmlydHVhbC9saWJ4MTEiCisKK1BBQ0tBR0VTID0rICIke1BOfS14bGliIgorCitGSUxFU18ke1BOfS14bGliID0gIiR7bGliZGlyfS8qcGl4YnVmX3hsaWIqJHtTT0xJQlN9IgorQUxMT1dfRU1QVFlfJHtQTn0teGxpYiA9ICIxIgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wL2dkay1waXhidWYtcXVlcnktbG9hZGVycyIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIgXAorCSR7YmluZGlyfS9nZGstcGl4YnVmLWNzb3VyY2UgXAorCSR7YmluZGlyfS9nZGstcGl4YnVmLXBpeGRhdGEgXAorCSR7aW5jbHVkZWRpcn0vKiBcCisJJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy8qLmxhIFwKKyIKKworUEFDS0FHRVNfRFlOQU1JQyArPSAiXmdkay1waXhidWYtbG9hZGVyLS4qIgorUEFDS0FHRVNfRFlOQU1JQ19jbGFzcy1uYXRpdmUgPSAiIgorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7CisgICAgcG9zdGluc3RfcGl4YnVmbG9hZGVyID0gZC5nZXRWYXIoInBvc3RpbnN0X3BpeGJ1ZmxvYWRlciIsIFRydWUpCisKKyAgICBsb2FkZXJzX3Jvb3QgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycycpCisKKyAgICBwYWNrYWdlcyA9ICcgJy5qb2luKGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxvYWRlcnNfcm9vdCwgJ15saWJwaXhidWZsb2FkZXItKC4qKVwuc28kJywgJ2dkay1waXhidWYtbG9hZGVyLSVzJywgJ0dESyBwaXhidWYgbG9hZGVyIGZvciAlcycpKQorICAgIGQuc2V0VmFyKCdQSVhCVUZfUEFDS0FHRVMnLCBwYWNrYWdlcykKKworICAgICMgVGhlIHRlc3Qgc3VpdGUgZXhlcmNpc2VzIGFsbCB0aGUgbG9hZGVycywgc28gZW5zdXJlIHRoZXkgYXJlIGFsbAorICAgICMgZGVwZW5kZW5jaWVzIG9mIHRoZSBwdGVzdCBwYWNrYWdlLgorICAgIGQuYXBwZW5kVmFyKCJSREVQRU5EU19nZGstcGl4YnVmLXB0ZXN0IiwgIiAiICsgcGFja2FnZXMpCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgTW92ZSBnZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMgaW50byBsaWJkaXIgc28gaXQgaXMgYWx3YXlzIGF2YWlsYWJsZQorCSMgaW4gbXVsdGlsaWIgYnVpbGRzLgorCW12ICR7RH0vJHtiaW5kaXJ9L2dkay1waXhidWYtcXVlcnktbG9hZGVycyAke0R9LyR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8KK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworCWZpbmQgJHtEfSR7bGliZGlyfSAtbmFtZSAibGlicGl4YnVmbG9hZGVyLSoubGEiIC1leGVjIHJtIFx7XH0gXDsKKworCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2dkay1waXhidWYtY3NvdXJjZSBcCisJCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy5jYWNoZQorCisJY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1waXhkYXRhIFwKKwkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzLmNhY2hlCisKKwljcmVhdGVfd3JhcHBlciAke0R9LyR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMgXAorCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUgXAorCQlHREtfUElYQlVGX01PRFVMRURJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzCit9CitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworU1NUQVRFUFJFSU5TVEZVTkNTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGdka3BpeGJ1Zl9zc3RhdGVfcHJlaW5zdCIKK1NZU1JPT1RfUFJFUFJPQ0VTU19GVU5DU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBnZGtwaXhidWZfc3N0YXRlX3ByZWluc3QiCisKK2dka3BpeGJ1Zl9zc3RhdGVfcHJlaW5zdCgpIHsKKwlpZiBbICIke0JCX0NVUlJFTlRUQVNLfSIgPSAicG9wdWxhdGVfc3lzcm9vdCIgXTsgdGhlbgorCQlybSAtcmYgJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vKgorCWZpCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcDNfMy4xOC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AzXzMuMTguMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU0NjBkOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcDNfMy4xOC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotU1VNTUFSWSA9ICJHTk9NRSBsaWJyYXJ5IGZvciByZWFkaW5nIC5kZXNrdG9wIGZpbGVzIgotU0VDVElPTiA9ICJ4MTEvZ25vbWUiCi1MSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIgotCi1CUE4gPSAiZ25vbWUtZGVza3RvcCIKLQotaW5oZXJpdCBnbm9tZSBwa2djb25maWcgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiOWE1ODc1MjQ3YWJkYjk5YmFkOTNmMWM0MjMwZDFkNmQiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJkZGQ0NmQwMjJkZTEzNzU0M2E3MWY1MGM3MzkyYjMyZjliOThkNWQzZjJiNTMwNDBiMzVmNTgwMmRlMmU3YjU2IgotCi1ERVBFTkRTICs9ICJnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIGdjb25mIGxpYnhyYW5kciB2aXJ0dWFsL2xpYngxMSBndGsrMyBnbGliLTIuMCBnbm9tZS1kb2MtdXRpbHMgZ25vbWUtY29tbW9uIHN0YXJ0dXAtbm90aWZpY2F0aW9uIHhrZXlib2FyZC1jb25maWcgaXNvLWNvZGVzIgotCi1pbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjawotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kZXNrdG9wLWRvY3MiCi0KLVBBQ0tBR0VTID0rICJsaWJnbm9tZS1kZXNrdG9wMyIKLUZJTEVTX2xpYmdub21lLWRlc2t0b3AzID0gIiR7bGliZGlyfS9saWIqJHtTT0xJQlN9ICR7ZGF0YWRpcn0vbGliZ25vbWUtZGVza3RvcCovcG5wLmlkcyAke2RhdGFkaXJ9L2dub21lLyp4bWwiCi0KLVJSRUNPTU1FTkRTX2xpYmdub21lLWRlc2t0b3AzICs9ICJnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcDNfMy4yMC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AzXzMuMjAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjA2MWIyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AzXzMuMjAuMi5iYgpAQCAtMCwwICsxLDIzIEBACitTVU1NQVJZID0gIkdOT01FIGxpYnJhcnkgZm9yIHJlYWRpbmcgLmRlc2t0b3AgZmlsZXMiCitTRUNUSU9OID0gIngxMS9nbm9tZSIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIiCisKK0JQTiA9ICJnbm9tZS1kZXNrdG9wIgorCitpbmhlcml0IGdub21lIHBrZ2NvbmZpZyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI4MzU0ZWQzODYyNGY1ZWI2YjVkMzQyNjdiNjU4YTljOSIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjQ5MmMyZGE3YWE4YzNhOGI2NTc5NmU4MTcxZmM4ZjBkZmI1ZDMyMmRkMjc5OWMwZDc2MzkyZTFmYjA2MWUyYjIiCisKK0RFUEVORFMgKz0gImludGx0b29sLW5hdGl2ZSBnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIGdjb25mIGxpYnhyYW5kciB2aXJ0dWFsL2xpYngxMSBndGsrMyBnbGliLTIuMCBzdGFydHVwLW5vdGlmaWNhdGlvbiB4a2V5Ym9hcmQtY29uZmlnIGlzby1jb2RlcyIKKworaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgZ3RrLWRvYworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kZXNrdG9wLWRvY3MiCisKK1BBQ0tBR0VTID0rICJsaWJnbm9tZS1kZXNrdG9wMyIKK0ZJTEVTX2xpYmdub21lLWRlc2t0b3AzID0gIiR7bGliZGlyfS9saWIqJHtTT0xJQlN9ICR7ZGF0YWRpcn0vbGliZ25vbWUtZGVza3RvcCovcG5wLmlkcyAke2RhdGFkaXJ9L2dub21lLyp4bWwiCisKK1JSRUNPTU1FTkRTX2xpYmdub21lLWRlc2t0b3AzICs9ICJnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWVfMy4xOC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWVfMy4xOC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MWM4ODQ1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lXzMuMTguMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLVNVTU1BUlkgPSAiR1RLKyBpY29uIHRoZW1lIgotSE9NRVBBR0UgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3NvdXJjZXMvYWR3YWl0YS1pY29uLXRoZW1lLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotU0VDVElPTiA9ICJ4MTEvZ25vbWUiCi0KLUxJQ0VOU0UgPSAiTEdQTC0zLjAgfCBDQy1CWS1TQS0zLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jODRjYWM4OGU0NmZjMDc2NDdlYTA3ZTZjMjRlZWI3YyIKLQotaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBndGstaWNvbi1jYWNoZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLQotREVQRU5EUyArPSAiaW50bHRvb2wtbmF0aXZlIgotCi1NQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vJHtNQUpfVkVSfS8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlYzFmYTNmZGU4M2FkMTY2YWU3MDc1YTk3ZGMxZWM0YiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZTljZTcyNjAwMWZkZDhlZTkzYzM5NGZkYzNjZGI5ZTE2MDNiYmVkNWI3YzYyZGY0NTNjY2Y1MjFlYzUwZTU4IgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIEJ1aWxkIHVzZXMgZ3RrLWVuY29kZS1zeW1ib2xpYy1zdmcgdG8gY3JlYXRlIHBuZyB2ZXJzaW9uczoKLSAgICAgICAgIyBubyBuZWVkIHRvIHN0b3JlIHRoZSBzdmdzIGFueW1vcmUuCi0Jcm0gLWYgJHtEfSR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhL3NjYWxhYmxlLyovKi1zeW1ib2xpYy5zdmcgXAotCSAgICAgICR7RH0ke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS9zY2FsYWJsZS8qLyotc3ltYm9saWMtcnRsLnN2ZwotfQotCi1QQUNLQUdFUyA9ICIke1BOfS1jdXJzb3JzICR7UE59LXN5bWJvbGljICR7UE59LWhpcmVzICR7UE59IgotCi1SUkVQTEFDRVNfJHtQTn0gPSAiZ25vbWUtaWNvbi10aGVtZSIKLVJDT05GTElDVFNfJHtQTn0gPSAiZ25vbWUtaWNvbi10aGVtZSIKLVJQUk9WSURFU18ke1BOfSA9ICJnbm9tZS1pY29uLXRoZW1lIgotCi1GSUxFU18ke1BOfS1jdXJzb3JzID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhL2N1cnNvcnMvIgotRklMRVNfJHtQTn0tc3ltYm9saWMgPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvKi8qLyouc3ltYm9saWMucG5nIgotRklMRVNfJHtQTn0taGlyZXMgPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvMjU2eDI1Ni8iCi1GSUxFU18ke1BOfSA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8gXAotICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL3BrZ2NvbmZpZy9hZHdhaXRhLWljb24tdGhlbWUucGMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZV8zLjIwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWVfMy4yMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjBlYWViCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWVfMy4yMC5iYgpAQCAtMCwwICsxLDQxIEBACitTVU1NQVJZID0gIkdUSysgaWNvbiB0aGVtZSIKK0hPTUVQQUdFID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzL2Fkd2FpdGEtaWNvbi10aGVtZS8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKK1NFQ1RJT04gPSAieDExL2dub21lIgorCitMSUNFTlNFID0gIkxHUEwtMy4wIHwgQ0MtQlktU0EtMy4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Yzg0Y2FjODhlNDZmYzA3NjQ3ZWEwN2U2YzI0ZWViN2MiCisKK2luaGVyaXQgYWxsYXJjaCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgZ3RrLWljb24tY2FjaGUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKKworTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgorU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDExYmUyYmQ2OGRkOGIwYTNjODZhY2EyZWIzNTFjZTQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2EwYTg4NzM0OWYzNDBkZDY0NDAzMmY4OWQ4MTI2NGI2OTRjNGIwMDZiZDUxYWYxYzJjMzY4ZDQzMWU3YWUzNSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyBCdWlsZCB1c2VzIGd0ay1lbmNvZGUtc3ltYm9saWMtc3ZnIHRvIGNyZWF0ZSBwbmcgdmVyc2lvbnM6CisgICAgICAgICMgbm8gbmVlZCB0byBzdG9yZSB0aGUgc3ZncyBhbnltb3JlLgorCXJtIC1mICR7RH0ke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS9zY2FsYWJsZS8qLyotc3ltYm9saWMuc3ZnIFwKKwkgICAgICAke0R9JHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvc2NhbGFibGUvKi8qLXN5bWJvbGljLXJ0bC5zdmcKK30KKworUEFDS0FHRVMgPSAiJHtQTn0tY3Vyc29ycyAke1BOfS1zeW1ib2xpYy1oaXJlcyAke1BOfS1zeW1ib2xpYyAke1BOfS1oaXJlcyAke1BOfSIKKworUlJFUExBQ0VTXyR7UE59ID0gImdub21lLWljb24tdGhlbWUiCitSQ09ORkxJQ1RTXyR7UE59ID0gImdub21lLWljb24tdGhlbWUiCitSUFJPVklERVNfJHtQTn0gPSAiZ25vbWUtaWNvbi10aGVtZSIKKworRklMRVNfJHtQTn0tY3Vyc29ycyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS9jdXJzb3JzLyIKK0ZJTEVTXyR7UE59LXN5bWJvbGljLWhpcmVzID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzk2eDk2LyovKi5zeW1ib2xpYy5wbmcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvNjR4NjQvKi8qLnN5bWJvbGljLnBuZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS80OHg0OC8qLyouc3ltYm9saWMucG5nIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzMyeDMyLyovKi5zeW1ib2xpYy5wbmciCitGSUxFU18ke1BOfS1zeW1ib2xpYyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8xNngxNi8qLyouc3ltYm9saWMucG5nIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzI0eDI0LyovKi5zeW1ib2xpYy5wbmciCitGSUxFU18ke1BOfS1oaXJlcyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8yNTZ4MjU2LyIKK0ZJTEVTXyR7UE59ID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLyBcCisgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvcGtnY29uZmlnL2Fkd2FpdGEtaWNvbi10aGVtZS5wYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvZ25vbWUtZG9jLXV0aWxzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvZ25vbWUtZG9jLXV0aWxzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGFkZmFjNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2dub21lLWRvYy11dGlscy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1TVU1NQVJZID0gIkEgY29sbGVjdGlvbiBvZiBkb2N1bWVudGF0aW9uIHV0aWxpdGllcyBmb3IgdGhlIEdub21lIHByb2plY3QiCi1ERVNDUklQVElPTiA9ICJUaGUgR05PTUUgRG9jdW1lbnRhdGlvbiBCdWlsZCBVdGlsaXRpZXMgKGdub21lLWRvYy0gXAotdXRpbHMpIHdlcmUgY3JlYXRlZCB0byBtYWtlIGl0IGVhc2llciBmb3IgYXBwbGljYXRpb24gZGV2ZWxvcGVycyB0byBcCi1pbmNsdWRlIGFuZCBjcmVhdGUgZG9jdW1lbnRhdGlvbiBpbiB0aGVpciByZWxlYXNlcy4gVGhleSBpbmNsdWRlIHRoZSBcCi14bWwycG8gdG9vbCB3aGljaCBtYWtlcyBpdCBlYXNpZXIgdG8gdHJhbnNsYXRlIGFuZCBrZWVwIHVwIHRvIGRhdGUgXAotdHJhbnNsYXRpb25zIG9mIGRvY3VtZW50YXRpb24uIgotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2Mi4xIgotREVQRU5EUyA9ICJsaWJ4bWwyIGxpYnhzbHQgbGlieHNsdC1uYXRpdmUgZ25vbWUtZG9jLXV0aWxzLW5hdGl2ZSBnbGliLTIuMCIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gImxpYnhtbDItbmF0aXZlIGxpYnhzbHQtbmF0aXZlIGludGx0b29sLW5hdGl2ZSBnbGliLTIuMC1uYXRpdmUiCi0KLWluaGVyaXQgZ25vbWViYXNlIGdldHRleHQgcHl0aG9uLWRpciBweXRob25uYXRpdmUgYXV0b3Rvb2xzLWJyb2tlbnNlcAotCi1DTEVBTkJST0tFTiA9ICIxIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1zY3JvbGxrZWVwZXIiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCWNob3duIC1SIHJvb3Q6cm9vdCAke0R9Ci19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7Ci0Jc2VkIC1pIC1lICdzfF4jIS4qL3Vzci9iaW4vZW52IHB5dGhvbnwjISAvdXNyL2Jpbi9lbnYgbmF0aXZlcHl0aG9ufCcgJHtEfSR7YmluZGlyfS94bWwycG8KLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0veG1sKiAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgotCi1SREVQRU5EU18ke1BOfSA9ICJiYXNoIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2dub21lLWRvYy11dGlscy8wMDAxLWdsaWItZ2V0dGV4dC5tNC1VcGRhdGUtQU1fR0xJQl9HTlVfR0VUVEVYVC10by1tYXRjaC0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2dub21lLWRvYy11dGlscy8wMDAxLWdsaWItZ2V0dGV4dC5tNC1VcGRhdGUtQU1fR0xJQl9HTlVfR0VUVEVYVC10by1tYXRjaC0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNmY2FiZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvZ25vbWUtZG9jLXV0aWxzLzAwMDEtZ2xpYi1nZXR0ZXh0Lm00LVVwZGF0ZS1BTV9HTElCX0dOVV9HRVRURVhULXRvLW1hdGNoLS5wYXRjaApAQCAtMCwwICsxLDQwIEBACitGcm9tIDQyNmUzODQ2ODQ2M2E0YWJiNDk1Y2Y2YTI2OWI5NjM1YjIxMDc1MTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorRGF0ZTogVHVlLCAxNyBNYXkgMjAxNiAxMzo1MToyNCArMDMwMAorU3ViamVjdDogW1BBVENIXSBnbGliLWdldHRleHQubTQ6IFVwZGF0ZSBBTV9HTElCX0dOVV9HRVRURVhUIHRvIG1hdGNoIGdsaWIKKworVGhpcyBhdm9pZHMKKyAgZXJyb3I6IG00X2NvcHk6IHdvbid0IG92ZXJ3cml0ZSBkZWZpbmVkIG1hY3JvOiBnbGliX0RFRlVOCisKK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW05vIHVwc3RyZWFtXQorLS0tCisgbTQvZ2xpYi1nZXR0ZXh0Lm00IHwgNSArKystLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tNC9nbGliLWdldHRleHQubTQgYi9tNC9nbGliLWdldHRleHQubTQKK2luZGV4IDgxZjhmZDIuLmUyYjE0MmIgMTAwNjQ0CistLS0gYS9tNC9nbGliLWdldHRleHQubTQKKysrKyBiL200L2dsaWItZ2V0dGV4dC5tNAorQEAgLTMxMCw3ICszMTAsNyBAQCBtc2dzdHIgIiIKKyAjIG9uIHZhcmlvdXMgdmFyaWFibGVzIG5lZWRlZCBieSB0aGUgTWFrZWZpbGUuaW4uaW4gaW5zdGFsbGVkIGJ5CisgIyBnbGliLWdldHRleHRpemUuCisgZG5sCistZ2xpYl9ERUZVTihbR0xJQl9HTlVfR0VUVEVYVF0sCisrQVVfREVGVU4oW0dMSUJfR05VX0dFVFRFWFRdLAorICAgW0FDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKWRubAorICAgIEFDX1JFUVVJUkUoW0FDX0hFQURFUl9TVERDXSlkbmwKKyAKK0BAIC0zODEsNyArMzgxLDggQEAgZ2xpYl9ERUZVTihbR0xJQl9HTlVfR0VUVEVYVF0sCisgICAgcm0gLWYgcG8vUE9URklMRVMKKyAgICBzZWQgLWUgIi9eIy9kIiAtZSAiL15cJC9kIiAtZSAicywuKiwJJHBvc3JjcHJlZml4JiBcXFxcLCIgLWUgIlwkcy9cKC4qXCkgXFxcXC9cMS8iIFwKKyAJPCAkc3JjZGlyL3BvL1BPVEZJTEVTLmluID4gcG8vUE9URklMRVMKKy0gIF0pCisrICBdCisrICBbWyQwOiBUaGlzIG1hY3JvIGlzIGRlcHJlY2F0ZWQuIFlvdSBzaG91bGQgdXNlIHVwc3RyZWFtIGdldHRleHQgaW5zdGVhZC5dXSkKKyAKKyAjIEFYX0dMSUJfREVGSU5FX0xPQ0FMRURJUihWQVJJQUJMRSkKKyAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIAorMi4xLjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9nbm9tZS1kb2MtdXRpbHMvc3lzcm9vdGVkLXBrZy1jb25maWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2dub21lLWRvYy11dGlscy9zeXNyb290ZWQtcGtnLWNvbmZpZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDE2ZDY5OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2dub21lLWRvYy11dGlscy9zeXNyb290ZWQtcGtnLWNvbmZpZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUluIGNyb3NzIGVudmlyb25tZW50IHdlIGhhdmUgdG8gcHJlcGVuZCB0aGUgc3lzcm9vdCB0byB0aGUgcGF0aCBmb3VuZCBieQotcGtnY29uZmlnIHNpbmNlIHRoZSBwYXRoIHJldHVybmVkIGZyb20gcGtnY29uZmlnIGRvZXMgbm90IGhhdmUgc3lzcm9vdCBwcmVmaXhlZAotaXQgZW5kcyB1cCB1c2luZyB0aGUgZmlsZXMgZnJvbSBob3N0IHN5c3RlbS4gTm93IHVzdWFsbHkgcGVvcGxlIGhhdmUgZ25vbWUgaW5zdGFsbGVkCi1zbyB0aGUgYnVpbGQgc3VjY2VlZHMgYnV0IGlmIHlvdSBkb250IGhhdmUgZ25vbWUgaW5zdGFsbGVkIG9uIGJ1aWxkIGhvc3QgdGhlbgotaXQgd29udCBmaW5kIHRoZSBmaWxlcyBvbiBob3N0IHN5c3RlbSBhbmQgcGFja2FnZXMgdXNpbmcgZ25vbWUtZG9jLXV0aWxzIHdvbnQKLWNvbXBpbGUuCi0KLVRoaXMgc2hvdWxkIHdvcmsgb2sgd2l0aCBub24gc3lzcm9vdGVkIGJ1aWxkcyB0b28gc2luY2UgaW4gdGhvc2UgY2FzZXMgUEtHX0NPTkZJR19TWVNST09UX0RJUgotd2lsbCBiZSBlbXB0eQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBDb25zdGFudGluIE11c2NhIDxjb25zdGFudGlueC5tdXNjYUBpbnRlbC5jb20+Ci0KLUluZGV4OiBnbm9tZS1kb2MtdXRpbHMtMC4yMC4xMC90b29scy9nbm9tZS1kb2MtdXRpbHMubWFrZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdub21lLWRvYy11dGlscy0wLjIwLjEwLm9yaWcvdG9vbHMvZ25vbWUtZG9jLXV0aWxzLm1ha2UKLSsrKyBnbm9tZS1kb2MtdXRpbHMtMC4yMC4xMC90b29scy9nbm9tZS1kb2MtdXRpbHMubWFrZQotQEAgLTEzMywxMSArMTMzLDExIEBAIF9ET0NfQUJTX1NSQ0RJUiA9IEBhYnNfc3JjZGlyQAotIF94bWwycG8gPz0gYHdoaWNoIHhtbDJwb2AKLSBfeG1sMnBvX21vZGUgPSAkKGlmICQoRE9DX0lEKSxtYWxsYXJkLGRvY2Jvb2spCi0gCi0tX2RiMmh0bWwgPz0gYCQoUEtHX0NPTkZJRykgLS12YXJpYWJsZSBkYjJodG1sIGdub21lLWRvYy11dGlsc2AKLS1fZGIyb21mICA/PSBgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlIGRiMm9tZiBnbm9tZS1kb2MtdXRpbHNgCi0tX2NodW5rcyAgPz0gYCQoUEtHX0NPTkZJRykgLS12YXJpYWJsZSB4bWxkaXIgZ25vbWUtZG9jLXV0aWxzYC9nbm9tZS94c2x0L2RvY2Jvb2svdXRpbHMvY2h1bmtzLnhzbAotLV9jcmVkaXRzID89IGAkKFBLR19DT05GSUcpIC0tdmFyaWFibGUgeG1sZGlyIGdub21lLWRvYy11dGlsc2AvZ25vbWUveHNsdC9kb2Nib29rL3V0aWxzL2NyZWRpdHMueHNsCi0tX2lkcyA/PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZSB4bWxkaXIgZ25vbWUtZG9jLXV0aWxzKS9nbm9tZS94c2x0L2RvY2Jvb2svdXRpbHMvaWRzLnhzbAotK19kYjJodG1sID89ICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn1gJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlIGRiMmh0bWwgZ25vbWUtZG9jLXV0aWxzYAotK19kYjJvbWYgID89ICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn1gJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlIGRiMm9tZiBnbm9tZS1kb2MtdXRpbHNgCi0rX2NodW5rcyAgPz0gJHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfWAkKFBLR19DT05GSUcpIC0tdmFyaWFibGUgeG1sZGlyIGdub21lLWRvYy11dGlsc2AvZ25vbWUveHNsdC9kb2Nib29rL3V0aWxzL2NodW5rcy54c2wKLStfY3JlZGl0cyA/PSAke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9YCQoUEtHX0NPTkZJRykgLS12YXJpYWJsZSB4bWxkaXIgZ25vbWUtZG9jLXV0aWxzYC9nbm9tZS94c2x0L2RvY2Jvb2svdXRpbHMvY3JlZGl0cy54c2wKLStfaWRzID89ICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn0kKHNoZWxsICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZSB4bWxkaXIgZ25vbWUtZG9jLXV0aWxzKS9nbm9tZS94c2x0L2RvY2Jvb2svdXRpbHMvaWRzLnhzbAotIAotIGlmIEVOQUJMRV9TSwotIF9FTkFCTEVfU0sgPSB0cnVlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2dub21lLWRvYy11dGlscy91c2UtdXNyLWJpbi1lbnYtZm9yLXB5dGhvbi1pbi14bWwycG8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2dub21lLWRvYy11dGlscy91c2UtdXNyLWJpbi1lbnYtZm9yLXB5dGhvbi1pbi14bWwycG8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlMTk2YzAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9nbm9tZS1kb2MtdXRpbHMvdXNlLXVzci1iaW4tZW52LWZvci1weXRob24taW4teG1sMnBvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotV2UgY2FuJ3QgdXNlICMhL2Z1bGwvcGF0aC90by9weXRob24gLXUgYXMgdGhpcyBjYW4gYmUgbG9uZ2VyIHRoYW4gc2hlYmFuZwotYWxsb3dzIGZvci4gIEluIG9yZGVyIHRvIGJlIGFwcHJvcHJhaXRlIGZvciB1cHN0cmVhbSBtb3JlIHdvcmsgd291bGQgYmUKLW5lZWRlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgbWFpbiB4bWwycG8gY29kZSBkb2Vzbid0IHJlbHkgb24gcHl0aG9uCi1iZWluZyBpbnZva2VkIHdpdGggLXUgKGZvcmNlIHN0ZGluL291dC9lcnIgdG8gYmUgdXNlZCByYXcpLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW1dvdWxkIGJyZWFrIGJlaGF2aW9yIG9uIFdpbmRvd3NdCi1TaWduZWQtb2ZmLWJ5OiBDb25zdGFudGluIE11c2NhIDxjb25zdGFudGlueC5tdXNjYUBpbnRlbC5jb20+Ci0KLUluZGV4OiBnbm9tZS1kb2MtdXRpbHMtMC4yMC4xMC94bWwycG8veG1sMnBvL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ25vbWUtZG9jLXV0aWxzLTAuMjAuMTAub3JpZy94bWwycG8veG1sMnBvL01ha2VmaWxlLmFtCi0rKysgZ25vbWUtZG9jLXV0aWxzLTAuMjAuMTAveG1sMnBvL3htbDJwby9NYWtlZmlsZS5hbQotQEAgLTcsNyArNyw2IEBAIENMRUFORklMRVMgPSB4bWwycG8KLSAKLSB4bWwycG86IHhtbDJwby5weS5pbgotIAkkKEFNX1ZfR0VOKXNlZCAtZSAicy9eVkVSU0lPTiA9LiovVkVSU0lPTiA9IFwiQFZFUlNJT05AXCIvIiBcCi0tCSAgICAtZSAicyteIyEuKnB5dGhvbi4qKyMhJChQWVRIT04pKyIgXAotIAkgIDwgJChzcmNkaXIpL3htbDJwby5weS5pbiA+IHhtbDJwbwotIAkkKEFNX1ZfYXQpY2htb2QgK3ggeG1sMnBvCi0gCi1JbmRleDogZ25vbWUtZG9jLXV0aWxzLTAuMjAuMTAveG1sMnBvL3htbDJwby94bWwycG8ucHkuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnbm9tZS1kb2MtdXRpbHMtMC4yMC4xMC5vcmlnL3htbDJwby94bWwycG8veG1sMnBvLnB5LmluCi0rKysgZ25vbWUtZG9jLXV0aWxzLTAuMjAuMTAveG1sMnBvL3htbDJwby94bWwycG8ucHkuaW4KLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vcHl0aG9uIC11Ci0rIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0gIyAtKi0gZW5jb2Rpbmc6IHV0Zi04IC0qLQotICMgQ29weXJpZ2h0IChjKSAyMDA0LCAyMDA1LCAyMDA2IERhbmlsbyDFoGVnYW4gPGRhbmlsb0Bnbm9tZS5vcmc+LgotICMgQ29weXJpZ2h0IChjKSAyMDA5IENsYXVkZSBQYXJveiA8Y2xhdWRlQDJ4bGlicmUubmV0Pi4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvZ25vbWUtZG9jLXV0aWxzL3hzbHRwcm9jX25vbmV0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9nbm9tZS1kb2MtdXRpbHMveHNsdHByb2Nfbm9uZXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzNDY0OTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9nbm9tZS1kb2MtdXRpbHMveHNsdHByb2Nfbm9uZXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5NSArMCwwIEBACi1UaGlzIGFkZHMgdGhlIC1ub25ldCBvcHRpb24gdG8geHNsdHByb2MgaW52b2NhdGlvbnMsIHdoaWNoIGZpeGVzCi1jb21waWxlIGVycm9ycyB3aGVuIGJ1aWxkaW5nIHRoZSBnbm9tZS1kb2MtdXRpbHMgZG9jcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBDb25zdGFudGluIE11c2NhIDxjb25zdGFudGlueC5tdXNjYUBpbnRlbC5jb20+Ci0KLUluZGV4OiBnbm9tZS1kb2MtdXRpbHMtMC4yMC4xMC9kb2MveHNsdC9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdub21lLWRvYy11dGlscy0wLjIwLjEwLm9yaWcvZG9jL3hzbHQvTWFrZWZpbGUuYW0KLSsrKyBnbm9tZS1kb2MtdXRpbHMtMC4yMC4xMC9kb2MveHNsdC9NYWtlZmlsZS5hbQotQEAgLTIxLDE0ICsyMSwxNCBAQCBhbGw6ICQoeHNsZG9jX2RvY3MpICQoeHNsZG9jX3htbHMpCi0gCi0gJCh4c2xkb2NfZG9jcyk6ICQoeHNsZG9jX3hzbHMpIHhzbGRvYy5hd2sgeHNsZG9jLWZpbGwueHNsCi0gCSQoQU1fVl9HRU4pJChHRFVfQVdLKSAtZiAiJChzcmNkaXIpL3hzbGRvYy5hd2siICIkKGZpbHRlciAlLyQoYmFzZW5hbWUgJChub3RkaXIgJEApKS54c2wsJCh4c2xkb2NfeHNscykpIiBcCi0tCXwgeHNsdHByb2MgLW8gIiRAIiBcCi0rCXwgeHNsdHByb2MgLW5vbmV0IC1vICIkQCIgXAotIAktLXN0cmluZ3BhcmFtIGJhc2VuYW1lICIkKGJhc2VuYW1lICQobm90ZGlyICRAKSkiIFwKLSAJLS1zdHJpbmdwYXJhbSB4c2xfZmlsZSAiJChmaWx0ZXIgJS8kKGJhc2VuYW1lICQobm90ZGlyICRAKSkueHNsLCQoeHNsZG9jX3hzbHMpKSIgXAotIAkiJChzcmNkaXIpL3hzbGRvYy1maWxsLnhzbCIgLQotIAotICQoeHNsZG9jX3htbHMpOiB4c2xkb2MtZG9jYm9vay54c2wKLSAkKHhzbGRvY194bWxzKTogQy8lLnhtbCA6IEMvJS54c2xkb2MKLS0JJChBTV9WX0dFTil4c2x0cHJvYyAtbyAiJEAiIFwKLSsJJChBTV9WX0dFTil4c2x0cHJvYyAtbm9uZXQgLW8gIiRAIiBcCi0gCS0tc3RyaW5ncGFyYW0gYmFzZW5hbWUgIiQoYmFzZW5hbWUgJChub3RkaXIgJEApKSIgXAotIAktLXN0cmluZ3BhcmFtIHhzbF9maWxlICIkKGZpbHRlciAlLyQoYmFzZW5hbWUgJChub3RkaXIgJEApKS54c2wsJCh4c2xkb2NfeHNscykpIiBcCi0gCSIkKHNyY2RpcikveHNsZG9jLWRvY2Jvb2sueHNsIiAiJDwiCi1AQCAtNjIsNyArNjIsNyBAQCBnbm9tZS1kb2MteHNsdC1jaGVjay1pbmNsdWRlczoKLSBnbm9tZS1kb2MteHNsdC1jaGVjay14c2xkb2M6ICQoeHNsZG9jX2RvY3MpCi0gCUBlY2hvICJSdW5uaW5nIHhzbGRvYyBjaGVja3MiOwotIAlAKGVjaG8gIjx4c2xkb2M+IjsgY2F0ICQoeHNsZG9jX2RvY3MpOyBlY2hvICI8L3hzbGRvYz4iKSBcCi0tCXwgeHNsdHByb2MgIiQoc3JjZGlyKS94c2xkb2MtY2hlY2sueHNsIiAtIDE+IC9kZXYvbnVsbAotKwl8IHhzbHRwcm9jIC1ub25ldCAiJChzcmNkaXIpL3hzbGRvYy1jaGVjay54c2wiIC0gMT4gL2Rldi9udWxsCi0gCi0gLlBIT05ZOiBjbGVhbi14c2xkb2MKLSBjbGVhbi1sb2NhbDogY2xlYW5feHNsZG9jCi1JbmRleDogZ25vbWUtZG9jLXV0aWxzLTAuMjAuMTAvdG9vbHMvZ25vbWUtZG9jLXV0aWxzLm1ha2UKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnbm9tZS1kb2MtdXRpbHMtMC4yMC4xMC5vcmlnL3Rvb2xzL2dub21lLWRvYy11dGlscy5tYWtlCi0rKysgZ25vbWUtZG9jLXV0aWxzLTAuMjAuMTAvdG9vbHMvZ25vbWUtZG9jLXV0aWxzLm1ha2UKLUBAIC0zNyw3ICszNyw3IEBAICQoRE9DX0hfRklMRSk6ICQoRE9DX0hfRE9DUyk7Ci0gCWxpc3Q9JyQoRE9DX0hfRE9DUyknOyBmb3IgZG9jIGluICQkbGlzdDsgZG8gXAotIAkgIHhtbHBhdGg9ImBlY2hvICQkZG9jIHwgc2VkIC1lICdzL15cKC4qXC9cKS4qL1wxLycgLWUgJy9cLy8hcy8uKi8vJ2A6JChzcmNkaXIpL2BlY2hvICQkZG9jIHwgc2VkIC1lICdzL15cKC4qXC9cKS4qL1wxLycgLWUgJy9cLy8hcy8uKi8vJ2AiOyBcCi0gCSAgaWYgISB0ZXN0IC1mICIkJGRvYyI7IHRoZW4gZG9jPSIkKHNyY2RpcikvJCRkb2MiOyBmaTsgXAotLQkgIHhzbHRwcm9jIC0tcGF0aCAiJCR4bWxwYXRoIiAkKF9jcmVkaXRzKSAkJGRvYzsgXAotKwkgIHhzbHRwcm9jIC1ub25ldCAtLXBhdGggIiQkeG1scGF0aCIgJChfY3JlZGl0cykgJCRkb2M7IFwKLSAJZG9uZSB8IHNvcnQgfCB1bmlxIFwKLSAJICB8IGF3ayAnQkVHSU57cz0iIn17bj1zcGxpdCgkJDAsdywiPCIpO2lmKHMhPSIiJiZzIT1zdWJzdHIod1sxXSwxLGxlbmd0aCh3WzFdKS0xKSl7cHJpbnQgc307aWYobj4xKXtwcmludCAkJDA7cz0iIn1lbHNle3M9JCQwfX07RU5Ee2lmKHMhPSIiKXtwcmludCBzfX0nIFwKLSAJICB8IHNlZCAtZSAncy9cXC9cXFxcLycgLWUgJ3MvIi9cXCIvJyAtZSAncy9cKC4qXCkvXHQiXDEiLC8nID4+ICRALnRtcAotQEAgLTUwLDcgKzUwLDcgQEAgJChET0NfSF9GSUxFKTogJChET0NfSF9ET0NTKTsKLSAJICBkb2NpZD1gZWNobyAiJCRkb2MiIHwgc2VkIC1lICdzLy4qXC9cKFteL10qXClcLnhtbC9cMS8nIFwKLSAJICAgIHwgc2VkIC1lICdzL1teYS16QS1aX10vXy9nJyB8IHRyICdhLXonICdBLVonYDsgXAotIAkgIGVjaG8gJCR4bWxwYXRoOyBcCi0tCSAgaWRzPWB4c2x0cHJvYyAtLXhpbmNsdWRlIC0tcGF0aCAiJCR4bWxwYXRoIiAkKF9pZHMpICQkZG9jYDsgXAotKwkgIGlkcz1geHNsdHByb2MgLW5vbmV0IC0teGluY2x1ZGUgLS1wYXRoICIkJHhtbHBhdGgiICQoX2lkcykgJCRkb2NgOyBcCi0gCSAgZm9yIGlkIGluICQkaWRzOyBkbyBcCi0gCSAgICBlY2hvICcjZGVmaW5lIEhFTFBfJ2BlY2hvICQkZG9jaWRgJ18nYGVjaG8gJCRpZCBcCi0gCSAgICAgIHwgc2VkIC1lICdzL1teYS16QS1aX10vXy9nJyB8IHRyICdhLXonICdBLVonYCcgIickJGlkJyInID4+ICRALnRtcDsgXAotQEAgLTE5Nyw3ICsxOTcsNyBAQCAkKF9ET0NfT01GX0RCKSA6ICQoRE9DX01PRFVMRSktJS5vbWYgOiAlCi0gCSAgZWNobyAiVGhlIGZpbGUgJyQoX3NrY29udGVudHNsaXN0KScgZG9lcyBub3QgZXhpc3QuIiA+JjI7CQlcCi0gCSAgZWNobyAiUGxlYXNlIGNoZWNrIHlvdXIgU2Nyb2xsS2VlcGVyIGluc3RhbGxhdGlvbi4iID4mMjsJCVwKLSAJICBleGl0IDE7IH0KLS0JJChHRFVfVl9EQjJPTUYpeHNsdHByb2MgLW8gJEAgJChjYWxsIGRiMm9tZl9hcmdzLCRALCQ8LCdkb2Nib29rJykgfHwgeyBybSAtZiAiJEAiOyBleGl0IDE7IH0KLSsJJChHRFVfVl9EQjJPTUYpeHNsdHByb2MgLW5vbmV0IC1vICRAICQoY2FsbCBkYjJvbWZfYXJncywkQCwkPCwnZG9jYm9vaycpIHx8IHsgcm0gLWYgIiRAIjsgZXhpdCAxOyB9Ci0gCi0gIyMgQCBfRE9DX09NRl9IVE1MCi0gIyMgVGhlIE9NRiBmaWxlcyBmb3IgSFRNTCBvdXRwdXQKLUBAIC0yMTIsNyArMjEyLDcgQEAgaWYgRU5BQkxFX1NLCi0gCSAgZWNobyAiUGxlYXNlIGNoZWNrIHlvdXIgU2Nyb2xsS2VlcGVyIGluc3RhbGxhdGlvbi4iID4mMjsJCVwKLSAJICBleGl0IDE7IH0KLSBlbmRpZgotLQkkKEdEVV9WX0RCMk9NRil4c2x0cHJvYyAtbyAkQCAkKGNhbGwgZGIyb21mX2FyZ3MsJEAsJDwsJ3hodG1sJykgfHwgeyBybSAtZiAiJEAiOyBleGl0IDE7IH0KLSsJJChHRFVfVl9EQjJPTUYpeHNsdHByb2MgLW5vbmV0IC1vICRAICQoY2FsbCBkYjJvbWZfYXJncywkQCwkPCwneGh0bWwnKSB8fCB7IHJtIC1mICIkQCI7IGV4aXQgMTsgfQotIAotICMjIEAgX0RPQ19PTUZfQUxMCi0gIyMgQWxsIE9NRiBvdXRwdXQgZmlsZXMgdG8gYmUgYnVpbHQKLUBAIC0yNjcsNyArMjY3LDcgQEAgX0RPQ19DX0ZJR1VSRVMgPSAkKGlmICQoRE9DX0ZJR1VSRVMpLAotICMjIEFsbCBIVE1MIGRvY3VtZW50YXRpb24gaW4gdGhlIEMgbG9jYWxlCi0gIyBGSVhNRTogcHJvYmFibHkgaGF2ZSB0byBzaGVsbCBlc2NhcGUgdG8gZGV0ZXJtaW5lIHRoZSBmaWxlIG5hbWVzCi0gX0RPQ19DX0hUTUwgPSAkKGZvcmVhY2ggZiwJCQkJCQlcCi0tCSQoc2hlbGwgeHNsdHByb2MgLS14aW5jbHVkZSAJCQkJCVwKLSsJJChzaGVsbCB4c2x0cHJvYyAtbm9uZXQgLS14aW5jbHVkZSAJCQkJCVwKLSAJICAtLXN0cmluZ3BhcmFtIGRiLmNodW5rLmJhc2VuYW1lICIkKERPQ19NT0RVTEUpIgkJXAotIAkgICQoX2NodW5rcykgIkMvJChET0NfTU9EVUxFKS54bWwiKSwJCQkJXAotIAlDLyQoZikueGh0bWwpCi1AQCAtMzkzLDcgKzM5Myw3IEBAIF9ET0NfSFRNTF9BTEwgPSAkKGlmICQoZmlsdGVyIGh0bWwgSFRNTCwKLSBfRE9DX0hUTUxfVE9QUyA9ICQoZm9yZWFjaCBsYyxDICQoX0RPQ19SRUFMX0xJTkdVQVMpLCQobGMpLyQoRE9DX01PRFVMRSkueGh0bWwpCi0gCi0gJChfRE9DX0hUTUxfVE9QUyk6ICQoX0RPQ19DX0RPQ1MpICQoX0RPQ19MQ19ET0NTKQotLQkkKEdEVV9WX0RCMkhUTSl4c2x0cHJvYyAtbyAkQCAtLXhpbmNsdWRlIC0tcGFyYW0gZGIuY2h1bmsuY2h1bmtfdG9wICJmYWxzZSgpIiAtLXN0cmluZ3BhcmFtIGRiLmNodW5rLmJhc2VuYW1lICIkKERPQ19NT0RVTEUpIiAtLXN0cmluZ3BhcmFtIGRiLmNodW5rLmV4dGVuc2lvbiAiLnhodG1sIiAkKF9kYjJodG1sKSAkKHBhdHN1YnN0ICUueGh0bWwsJS54bWwsJEApCi0rCSQoR0RVX1ZfREIySFRNKXhzbHRwcm9jIC1ub25ldCAtbyAkQCAtLXhpbmNsdWRlIC0tcGFyYW0gZGIuY2h1bmsuY2h1bmtfdG9wICJmYWxzZSgpIiAtLXN0cmluZ3BhcmFtIGRiLmNodW5rLmJhc2VuYW1lICIkKERPQ19NT0RVTEUpIiAtLXN0cmluZ3BhcmFtIGRiLmNodW5rLmV4dGVuc2lvbiAiLnhodG1sIiAkKF9kYjJodG1sKSAkKHBhdHN1YnN0ICUueGh0bWwsJS54bWwsJEApCi0gCi0gCi0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvZ25vbWUtZG9jLXV0aWxzXzAuMjAuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2dub21lLWRvYy11dGlsc18wLjIwLjEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OGNjMDA1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvZ25vbWUtZG9jLXV0aWxzXzAuMjAuMTAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1yZXF1aXJlIGdub21lLWRvYy11dGlscy5pbmMKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuR1BMO21kNT1lYjcyM2I2MTUzOWZlZWYwMTNkZTQ3NmU2OGI1YzUwYSBcCi0JCSAgICBmaWxlOi8vQ09QWUlORy5MR1BMO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3hzbHRwcm9jX25vbmV0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly91c2UtdXNyLWJpbi1lbnYtZm9yLXB5dGhvbi1pbi14bWwycG8ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3N5c3Jvb3RlZC1wa2ctY29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIzYzY0YWQ3YmFjZDYxN2IwNDk5OWU0YTE2OGFmYWFjNSIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImNiMDYzOWZmYTk1NTBiNmRkZjNiNjJmM2IxYWRkOTJmYjkyYWI0NjkwZDM1MWYyMzUzY2ZmZTY2OGJlOGM0YTYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2dub21lLXRoZW1lcy1zdGFuZGFyZF8zLjIwLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2dub21lLXRoZW1lcy1zdGFuZGFyZF8zLjIwLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzk4ZDg3MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvZ25vbWUtdGhlbWVzLXN0YW5kYXJkXzMuMjAuMi5iYgpAQCAtMCwwICsxLDM5IEBACitTVU1NQVJZID0gIkdUSysyIHN0YW5kYXJkIHRoZW1lcyIKK0hPTUVQQUdFID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzL2dub21lLXRoZW1lcy1zdGFuZGFyZC8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKK1NFQ1RJT04gPSAieDExL2dub21lIgorCitMSUNFTlNFID0gIkxHUEwtMi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IGd0ay1pY29uLWNhY2hlIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzJESVNUUk9GRUFUVVJFU30iCisKK0RFUEVORFMgKz0gImludGx0b29sLW5hdGl2ZSBndGsrIgorCitNQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vJHtNQUpfVkVSfS8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhZGMzYjFkNTczMzA1NjFmZWE1MjQ4NDJkMGMwYjQ4NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5ZDBkOWM0YjJjOWY5MDA4MzAxYzNjMTg3OGViYjk1ODU5YTczNWI3ZmQ0YTZhNTE4ODAyYjk2MzdlNGE3OTE1IgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWd0azMtZW5naW5lIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAgICAgIyBPbmx5IGJ1aWxkaW5nIEFkd2FpdGEsIHJlbW92ZSBoaWdoY29udHJhc3QgZmlsZXMKKyAgICAgICAgcm0gLXJmICR7RH0ke3ByZWZpeH0vc2hhcmUvdGhlbWVzL0hpZ2hDb250cmFzdCBcCisgICAgICAgICAgICAgICAke0R9JHtwcmVmaXh9L3NoYXJlL2ljb25zCit9CisKKyMgVGhlcmUgY291bGQgYmUgZ25vbWUtdGhlbWUtaGlnaGNvbnRyYXN0IGFzIHdlbGwgYnV0IHRoYXQgcmVxdWlyZXMKKyMgZ3RrKzMgYW5kIGluY2x1ZGVzIGxvdHMgb2YgaWNvbnMgKGlzIGFsc28gYnJva2VuIHdpdGggQiAhPSBTKS4KK1BBQ0tBR0VTICs9ICJnbm9tZS10aGVtZS1hZHdhaXRhIFwKKyAgICAgICAgICAgICBnbm9tZS10aGVtZS1hZHdhaXRhLWRiZyBcCisgICAgICAgICAgICAgZ25vbWUtdGhlbWUtYWR3YWl0YS1kZXYiCisKK0ZJTEVTX2dub21lLXRoZW1lLWFkd2FpdGEgPSAiJHtwcmVmaXh9L3NoYXJlL3RoZW1lcy9BZHdhaXRhIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9ndGstMi4wLzIuMTAuMC9lbmdpbmVzL2xpYmFkd2FpdGEuc28iCitGSUxFU19nbm9tZS10aGVtZS1hZHdhaXRhLWRldiA9ICIke2xpYmRpcn0vZ3RrLTIuMC8yLjEwLjAvZW5naW5lcy9saWJhZHdhaXRhLmxhIgorRklMRVNfZ25vbWUtdGhlbWUtYWR3YWl0YS1kYmcgPSAiJHtsaWJkaXJ9L2d0ay0yLjAvMi4xMC4wL2VuZ2luZXMvLmRlYnVnL2xpYmFkd2FpdGEuc28iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1QcmVmaXgtcGtnLWNvbmZpZy1wYXRocy13aXRoLVBLR19DT05GSUdfU1lTUk9PVF9ESVItLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtUHJlZml4LXBrZy1jb25maWctcGF0aHMtd2l0aC1QS0dfQ09ORklHX1NZU1JPT1RfRElSLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTAyNmQ4MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1QcmVmaXgtcGtnLWNvbmZpZy1wYXRocy13aXRoLVBLR19DT05GSUdfU1lTUk9PVF9ESVItLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotRnJvbSBhNTc2MDRlMjA1ZTY1MzVhY2Q5OTg5NDQ0YWQxZjVmNTAzOGY0ZmJhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDggT2N0IDIwMTUgMTg6MzA6MzUgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzRdIFByZWZpeCBwa2ctY29uZmlnIHBhdGhzIHdpdGggUEtHX0NPTkZJR19TWVNST09UX0RJUgotIGVudmlyb25tZW50IHZhcmlhYmxlCi0KLVRoaXMgZW52aXJvbm1lbnQgdmFyaWFibGUgc2V0cyB0aGUgbG9jYXRpb24gb2Ygc3lzcm9vdCBkaXJlY3RvcnkgaW4gY3Jvc3MtY29tcGlsYXRpb24KLWVudmlyb25tZW50czsgaWYgdGhlIHZhcmlhYmxlIGlzIG5vdCBzZXQsIHRoZSBwcmVmaXggd2lsbCBiZSBlbXB0eS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtyZXZpZXcgb24gb2UtY29yZSBsaXN0XQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0KLS0tLQotIE1ha2VmaWxlLWdpci5hbSAgICAgfCAxOCArKysrKysrKystLS0tLS0tLS0KLSBtNC9pbnRyb3NwZWN0aW9uLm00IHwgIDggKysrKy0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUtZ2lyLmFtIGIvTWFrZWZpbGUtZ2lyLmFtCi1pbmRleCA5YWNhNjY0Li4wOWI5MzYwIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUtZ2lyLmFtCi0rKysgYi9NYWtlZmlsZS1naXIuYW0KLUBAIC01NSw4ICs1NSw4IEBAIGVsc2UKLSBlbmRpZgotIAotICMgZ2xpYgotLUdMSUJfSU5DTFVERURJUj0kKHNoZWxsICIke1BLR19DT05GSUd9IiAtLXZhcmlhYmxlPWluY2x1ZGVkaXIgZ2xpYi0yLjApL2dsaWItMi4wCi0tR0xJQl9MSUJESVI9JChzaGVsbCAiJHtQS0dfQ09ORklHfSIgLS12YXJpYWJsZT1saWJkaXIgZ2xpYi0yLjApCi0rR0xJQl9JTkNMVURFRElSPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUikkKHNoZWxsICIke1BLR19DT05GSUd9IiAtLXZhcmlhYmxlPWluY2x1ZGVkaXIgZ2xpYi0yLjApL2dsaWItMi4wCi0rR0xJQl9MSUJESVI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKSQoc2hlbGwgIiR7UEtHX0NPTkZJR30iIC0tdmFyaWFibGU9bGliZGlyIGdsaWItMi4wKQotIAotIEdMSUJfTElCUkFSWT1nbGliLTIuMAotIAotQEAgLTkyLDggKzkyLDggQEAgR0xpYi0yLjAuZ2lyOiBnLWlyLXNjYW5uZXIgZy1pci1jb21waWxlciQoRVhFRVhUKQotIGdpci9EQnVzR0xpYi0xLjAudHlwZWxpYjogR09iamVjdC0yLjAuZ2lyCi0gCi0gIyBnb2JqZWN0Ci0tR09CSkVDVF9JTkNMVURFRElSPSQoc2hlbGwgIiR7UEtHX0NPTkZJR30iIC0tdmFyaWFibGU9aW5jbHVkZWRpciBnb2JqZWN0LTIuMCkvZ2xpYi0yLjAKLS1HT0JKRUNUX0xJQkRJUj0kKHNoZWxsICIke1BLR19DT05GSUd9IiAtLXZhcmlhYmxlPWxpYmRpciBnb2JqZWN0LTIuMCkKLStHT0JKRUNUX0lOQ0xVREVESVI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKSQoc2hlbGwgIiR7UEtHX0NPTkZJR30iIC0tdmFyaWFibGU9aW5jbHVkZWRpciBnb2JqZWN0LTIuMCkvZ2xpYi0yLjAKLStHT0JKRUNUX0xJQkRJUj0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpJChzaGVsbCAiJHtQS0dfQ09ORklHfSIgLS12YXJpYWJsZT1saWJkaXIgZ29iamVjdC0yLjApCi0gCi0gR09CSkVDVF9MSUJSQVJZPWdvYmplY3QtMi4wCi0gCi1AQCAtMTIwLDggKzEyMCw4IEBAIEdPYmplY3RfMl8wX2dpcl9GSUxFUyA9IFwKLSBCVUlMVF9HSVJTT1VSQ0VTICs9IEdPYmplY3QtMi4wLmdpcgotIAotICMgZ21vZHVsZQotLUdNT0RVTEVfSU5DTFVERURJUj0kKHNoZWxsICIke1BLR19DT05GSUd9IiAtLXZhcmlhYmxlPWluY2x1ZGVkaXIgZ21vZHVsZS0yLjApL2dsaWItMi4wCi0tR01PRFVMRV9MSUJESVI9JChzaGVsbCAiJHtQS0dfQ09ORklHfSIgLS12YXJpYWJsZT1saWJkaXIgZ21vZHVsZS0yLjApCi0rR01PRFVMRV9JTkNMVURFRElSPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUikkKHNoZWxsICIke1BLR19DT05GSUd9IiAtLXZhcmlhYmxlPWluY2x1ZGVkaXIgZ21vZHVsZS0yLjApL2dsaWItMi4wCi0rR01PRFVMRV9MSUJESVI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKSQoc2hlbGwgIiR7UEtHX0NPTkZJR30iIC0tdmFyaWFibGU9bGliZGlyIGdtb2R1bGUtMi4wKQotIAotIEdNT0RVTEVfTElCUkFSWT1nbW9kdWxlLTIuMAotIAotQEAgLTE0NiwxMyArMTQ2LDEzIEBAIEdNb2R1bGVfMl8wX2dpcl9GSUxFUyA9ICQoR0xJQl9JTkNMVURFRElSKS9nbW9kdWxlLmggXAotIEJVSUxUX0dJUlNPVVJDRVMgKz0gR01vZHVsZS0yLjAuZ2lyCi0gCi0gIyBnaW8KLS1HSU9fSU5DTFVERURJUj0kKHNoZWxsICIke1BLR19DT05GSUd9IiAtLXZhcmlhYmxlPWluY2x1ZGVkaXIgZ2lvLTIuMCkvZ2xpYi0yLjAKLS1HSU9fTElCRElSPSQoc2hlbGwgIiR7UEtHX0NPTkZJR30iIC0tdmFyaWFibGU9bGliZGlyIGdpby0yLjApCi0rR0lPX0lOQ0xVREVESVI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKSQoc2hlbGwgIiR7UEtHX0NPTkZJR30iIC0tdmFyaWFibGU9aW5jbHVkZWRpciBnaW8tMi4wKS9nbGliLTIuMAotK0dJT19MSUJESVI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKSQoc2hlbGwgIiR7UEtHX0NPTkZJR30iIC0tdmFyaWFibGU9bGliZGlyIGdpby0yLjApCi0gCi0gR0lPX0xJQlJBUlk9Z2lvLTIuMAotIAotIGlmIEhBVkVfR0lPX1VOSVgKLS1HSU9fVU5JWF9IRFJTPSQoc2hlbGwgIiR7UEtHX0NPTkZJR30iIC0tdmFyaWFibGU9aW5jbHVkZWRpciBnaW8tdW5peC0yLjApL2dpby11bml4LTIuMC9naW8vKi5oCi0rR0lPX1VOSVhfSERSUz0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpJChzaGVsbCAiJHtQS0dfQ09ORklHfSIgLS12YXJpYWJsZT1pbmNsdWRlZGlyIGdpby11bml4LTIuMCkvZ2lvLXVuaXgtMi4wL2dpby8qLmgKLSBHSU9fVU5JWF9QQUNLQUdFUyA9IGdpby11bml4LTIuMAotIGVsc2UKLSBHSU9fVU5JWF9IRFJTPQotZGlmZiAtLWdpdCBhL200L2ludHJvc3BlY3Rpb24ubTQgYi9tNC9pbnRyb3NwZWN0aW9uLm00Ci1pbmRleCBkODljM2Q5Li5iNTYyMjY2IDEwMDY0NAotLS0tIGEvbTQvaW50cm9zcGVjdGlvbi5tNAotKysrIGIvbTQvaW50cm9zcGVjdGlvbi5tNAotQEAgLTU2LDE0ICs1NiwxNCBAQCBtNF9kZWZpbmUoW19HT0JKRUNUX0lOVFJPU1BFQ1RJT05fQ0hFQ0tfSU5URVJOQUxdLAotICAgICBJTlRST1NQRUNUSU9OX0dJUkRJUj0KLSAgICAgSU5UUk9TUEVDVElPTl9UWVBFTElCRElSPQotICAgICBpZiB0ZXN0ICJ4JGZvdW5kX2ludHJvc3BlY3Rpb24iID0gInh5ZXMiOyB0aGVuCi0tICAgICAgIElOVFJPU1BFQ1RJT05fU0NBTk5FUj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1nX2lyX3NjYW5uZXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLS0gICAgICAgSU5UUk9TUEVDVElPTl9DT01QSUxFUj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1nX2lyX2NvbXBpbGVyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0tICAgICAgIElOVFJPU1BFQ1RJT05fR0VORVJBVEU9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z19pcl9nZW5lcmF0ZSBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotKyAgICAgICBJTlRST1NQRUNUSU9OX1NDQU5ORVI9JFBLR19DT05GSUdfU1lTUk9PVF9ESVJgJFBLR19DT05GSUcgLS12YXJpYWJsZT1nX2lyX3NjYW5uZXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLSsgICAgICAgSU5UUk9TUEVDVElPTl9DT01QSUxFUj0kUEtHX0NPTkZJR19TWVNST09UX0RJUmAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdfaXJfY29tcGlsZXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLSsgICAgICAgSU5UUk9TUEVDVElPTl9HRU5FUkFURT0kUEtHX0NPTkZJR19TWVNST09UX0RJUmAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdfaXJfZ2VuZXJhdGUgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLSAgICAgICAgSU5UUk9TUEVDVElPTl9HSVJESVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z2lyZGlyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0gICAgICAgIElOVFJPU1BFQ1RJT05fVFlQRUxJQkRJUj0iJCgkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXR5cGVsaWJkaXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMCkiCi0gICAgICAgIElOVFJPU1BFQ1RJT05fQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotICAgICAgICBJTlRST1NQRUNUSU9OX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotLSAgICAgICBJTlRST1NQRUNUSU9OX01BS0VGSUxFPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWRhdGFkaXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAvZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC9NYWtlZmlsZS5pbnRyb3NwZWN0aW9uCi0rICAgICAgIElOVFJPU1BFQ1RJT05fTUFLRUZJTEU9JFBLR19DT05GSUdfU1lTUk9PVF9ESVJgJFBLR19DT05GSUcgLS12YXJpYWJsZT1kYXRhZGlyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgL2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvTWFrZWZpbGUuaW50cm9zcGVjdGlvbgotICAgICBmaQotICAgICBBQ19TVUJTVChJTlRST1NQRUNUSU9OX1NDQU5ORVIpCi0gICAgIEFDX1NVQlNUKElOVFJPU1BFQ1RJT05fQ09NUElMRVIpCi0tLSAKLTIuNy4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAxLVJldmVydC1hbi1pbmNvbXBsZXRlLXVwc3RyZWFtLWF0dGVtcHQtYXQtY3Jvc3MtY29tcGkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1SZXZlcnQtYW4taW5jb21wbGV0ZS11cHN0cmVhbS1hdHRlbXB0LWF0LWNyb3NzLWNvbXBpLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhYmFlYTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1SZXZlcnQtYW4taW5jb21wbGV0ZS11cHN0cmVhbS1hdHRlbXB0LWF0LWNyb3NzLWNvbXBpLnBhdGNoCkBAIC0wLDAgKzEsNTAgQEAKK0Zyb20gM2E5ZDFlNWVlMGFhZTU2ZmFmZWMwYmViYTIwMTRjMTllNGZmMzEwYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogV2VkLCAyMyBNYXIgMjAxNiAxNzowNzoyOCArMDIwMAorU3ViamVjdDogW1BBVENIIDEvNV0gUmV2ZXJ0IGFuIGluY29tcGxldGUgdXBzdHJlYW0gYXR0ZW1wdCBhdCBjcm9zcy1jb21waWxlCisgc3VwcG9ydAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgY29tbW9uLm1rICAgICAgICAgICAgICAgIHwgNCAtLS0tCisgZ2lzY2FubmVyL2dkdW1wcGFyc2VyLnB5IHwgNiAtLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDEwIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29tbW9uLm1rIGIvY29tbW9uLm1rCitpbmRleCBiNzc4ZjdhLi5lMjZjNjM3IDEwMDY0NAorLS0tIGEvY29tbW9uLm1rCisrKysgYi9jb21tb24ubWsKK0BAIC0yNCwxMiArMjQsOCBAQCBJTlRST1NQRUNUSU9OX1NDQU5ORVJfQVJHUyA9IFwKKyAgICAgLS1hZGQtaW5jbHVkZS1wYXRoPSQodG9wX2J1aWxkZGlyKSBcCisgICAgIC0tYWRkLWluY2x1ZGUtcGF0aD0kKHRvcF9idWlsZGRpcikvZ2lyCisgCistIyBHSV9DUk9TU19MQVVOQ0hFUiBpcyB0aGUgY29tbWFuZCB0byB1c2UgZm9yIGV4ZWN1dGluZyBnLWlyLWNvbXBpbGVyLgorLSMgTm9ybWFsbHkgd2lsbCBiZSB1bmRlZmluZWQgYnV0IGNhbiBiZSBzZXQgKGUuZy4gdG8gd2luZSBvciBxZW11KQorLSMgd2hlbiBjcm9zcy1jb21waWxpbmcKKyBJTlRST1NQRUNUSU9OX0NPTVBJTEVSID0gXAorICAgICBlbnYgUEFUSD0iLmxpYnM6JChQQVRIKSIgXAorLSAgICAgICAgJChHSV9DUk9TU19MQVVOQ0hFUikgXAorICAgICAgICAgJCh0b3BfYnVpbGRkaXIpL2ctaXItY29tcGlsZXIkKEVYRUVYVCkKKyAKKyBJTlRST1NQRUNUSU9OX0NPTVBJTEVSX0FSR1MgPSBcCitkaWZmIC0tZ2l0IGEvZ2lzY2FubmVyL2dkdW1wcGFyc2VyLnB5IGIvZ2lzY2FubmVyL2dkdW1wcGFyc2VyLnB5CitpbmRleCAxMTM0ZjMzLi45YmRjMmJjIDEwMDY0NAorLS0tIGEvZ2lzY2FubmVyL2dkdW1wcGFyc2VyLnB5CisrKysgYi9naXNjYW5uZXIvZ2R1bXBwYXJzZXIucHkKK0BAIC0xNjIsMTIgKzE2Miw2IEBAIGJsb2IgY29udGFpbmluZyBkYXRhIGdsZWFuZWQgZnJvbSBHT2JqZWN0J3MgcHJpbWl0aXZlIGludHJvc3BlY3Rpb24uIiIiCisgICAgICAgICBvdXRfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLl9iaW5hcnkudG1wZGlyLCAnZHVtcC54bWwnKQorIAorICAgICAgICAgYXJncyA9IFtdCistCistICAgICAgICAjIFByZXBlbmQgdGhlIGxhdW5jaGVyIGNvbW1hbmQgYW5kIGFyZ3VtZW50cywgaWYgZGVmaW5lZAorLSAgICAgICAgbGF1bmNoZXIgPSBvcy5lbnZpcm9uLmdldCgnR0lfQ1JPU1NfTEFVTkNIRVInKQorLSAgICAgICAgaWYgbGF1bmNoZXI6CistICAgICAgICAgICAgYXJncy5leHRlbmQobGF1bmNoZXIuc3BsaXQoKSkKKy0KKyAgICAgICAgIGFyZ3MuZXh0ZW5kKHNlbGYuX2JpbmFyeS5hcmdzKQorICAgICAgICAgYXJncy5hcHBlbmQoJy0taW50cm9zcGVjdC1kdW1wPSVzLCVzJyAlIChpbl9wYXRoLCBvdXRfcGF0aCkpCisgCistLSAKKzIuNy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAxLWNvbmZpZ3VyZS5hYy1hZGQtaG9zdC1naS1naS1jcm9zcy13cmFwcGVyLWFuZC1naS1sZGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1jb25maWd1cmUuYWMtYWRkLWhvc3QtZ2ktZ2ktY3Jvc3Mtd3JhcHBlci1hbmQtZ2ktbGRkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YWZlZmFiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAxLWNvbmZpZ3VyZS5hYy1hZGQtaG9zdC1naS1naS1jcm9zcy13cmFwcGVyLWFuZC1naS1sZGQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMDQgKzAsMCBAQAotRnJvbSBjNmU0ZjgzYzM3M2I1NzcxNjZhN2U0NjEzMGNlOGZmMDI1ZWU4NTE1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDE5IE9jdCAyMDE1IDE4OjI5OjIxICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5hYzogYWRkIGhvc3QtZ2ksIGdpLWNyb3NzLXdyYXBwZXIsIGdpLWxkZC13cmFwcGVyCi0gYW5kIGludHJvc3BlY3Rpb24tZGF0YSBvcHRpb25zCi0KLVdpdGggdGhlIGZpcnN0IG9wdGlvbiwgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHRvb2xzIChnLWlyLWRvYy10b29sIGFuZCBnLWlyLXNjYW5uZXIpCi10aGF0IGFyZSBhbHJlYWR5IGluc3RhbGxlZCBpbiB0aGUgaG9zdCBzeXN0ZW0gd2lsbCBiZSB1c2VkIGZvciBidWlsZGluZyB0aGUgc291cmNlIHRyZWUuCi0KLVdpdGggdGhlIHNlY29uZCBvcHRpb24sIGctaXItc2Nhbm5lciB3aWxsIGJlIGluc3RydWN0ZWQgdG8gdXNlIGFuIGV4ZWN1dGFibGUKLXdyYXBwZXIgdG8gcnVuIGJpbmFyaWVzIGl0J3MgcHJvZHVjaW5nLCBhbmQgZy1pci1jb21waWxlciB3aWxsIGJlIHJ1bgotdGhyb3VnaCB0aGUgc2FtZSB3cmFwcGVyIChob3N0IHN5c3RlbSdzIGctaXItY29tcGlsZXIgY2Fubm90IGJlIHVzZWQgYmVjYXVzZQotaXQncyBwcm9kdWNpbmcgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIG91dHB1dCkuCi0KLVdpdGggdGhlIHRoaXJkIG9wdGlvbiwgZ2lzY2FubmVyIHdpbGwgYmUgaW5zdHJ1Y3RlZCB0byB1c2UgYSBzcGVjaWFsIGxkZAotY29tbWFuZCBpbnN0ZWFkIG9mIHN5c3RlbSdzIGxkZCAod2hpY2ggZG9lcyBub3Qgd29yayB3aGVuIHRoZSBiaW5hcnkgdG8gaW5zcGVjdAotaXMgY29tcGlsZWQgZm9yIGEgZGlmZmVyZW50IGFyY2hpdGVjdHVyZSkuCi0KLVdpdGggdGhlIGZvdXJ0aCBvcHRpb24sIGl0IGlzIHBvc3NpYmxlIHRvIGRpc2FibGUgYnVpbGRpbmcgb2YgaW50cm9zcGVjdGlvbiBkYXRhCi0oLmdpciBhbmQgLnR5cGVsaWIgZmlsZXMpLCB3aGljaCBtYXkgYmUgZGlmZmljdWx0IG9yIGltcG9zc2libGUgaW4gY3Jvc3MtY29tcGlsYXRpb24KLWVudmlyb25tZW50cywgYmVjYXVzZSBvZiBsYWNrIG9mIGVtdWxhdGlvbiAob3IgbmF0aXZlIGhhcmR3YXJlKSBmb3IgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUKLW9uIHdoaWNoIHRoZSB0YXJnZXQgYmluYXJpZXMgY2FuIGJlIHJ1bi4KLQotVGhlc2Ugb3B0aW9ucyBhcmUgdXNlZnVsIHdoZW4gY3Jvc3MtY29tcGlsaW5nIGZvciBhIGRpZmZlcmVudCB0YXJnZXQgYXJjaGl0ZWN0dXJlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW3JldmlldyBvbiBvZS1jb3JlIGxpc3RdCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLQotLS0tCi0gTWFrZWZpbGUuYW0gICAgICAgfCAgMiArKwotIGNvbW1vbi5tayAgICAgICAgIHwgMzkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gY29uZmlndXJlLmFjICAgICAgfCA0MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSB0ZXN0cy9NYWtlZmlsZS5hbSB8ICA1ICsrKystCi0gNCBmaWxlcyBjaGFuZ2VkLCA4NyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCA0MzdjNjczLi4xZWIzNTQ1IDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtMjEsNyArMjEsOSBAQCBpbmNsdWRlIE1ha2VmaWxlLWNtcGguYW0KLSBpbmNsdWRlIE1ha2VmaWxlLWdpcmVwb3NpdG9yeS5hbQotIGluY2x1ZGUgTWFrZWZpbGUtZ2lzY2FubmVyLmFtCi0gaW5jbHVkZSBNYWtlZmlsZS1leGFtcGxlcy5hbQotK2lmIEJVSUxEX0lOVFJPU1BFQ1RJT05fREFUQQotIGluY2x1ZGUgTWFrZWZpbGUtZ2lyLmFtCi0rZW5kaWYKLSBpbmNsdWRlIE1ha2VmaWxlLXRvb2xzLmFtCi0gaW5jbHVkZSBNYWtlZmlsZS1tc3ZjcHJvai5hbQotIAotZGlmZiAtLWdpdCBhL2NvbW1vbi5tayBiL2NvbW1vbi5tawotaW5kZXggZTI2YzYzNy4uOWYzYTY1ZiAxMDA2NDQKLS0tLSBhL2NvbW1vbi5tawotKysrIGIvY29tbW9uLm1rCi1AQCAtNiw2ICs2LDE1IEBACi0gIyBtb2R1bGUgaXRzZWxmLgotICMKLSAKLStpZiBVU0VfSE9TVF9HSQotK0lOVFJPU1BFQ1RJT05fU0NBTk5FUiA9IFwKLSsgICAgZW52IFBBVEg9IiQoUEFUSCkiIFwKLSsgICAgICAgIExQQVRIPS5saWJzIFwKLSsgICAgICAgIENDPSIkKENDKSIgXAotKyAgICAgICAgUFlUSE9OUEFUSD0kKHRvcF9idWlsZGRpcik6JCh0b3Bfc3JjZGlyKSBcCi0rICAgICAgICBVTklOU1RBTExFRF9JTlRST1NQRUNUSU9OX0JVSUxERElSPSQodG9wX2J1aWxkZGlyKSBcCi0rICAgICAgICBnLWlyLXNjYW5uZXIKLStlbHNlCi0gSU5UUk9TUEVDVElPTl9TQ0FOTkVSID0gXAotICAgICBlbnYgUEFUSD0iLmxpYnM6JChQQVRIKSIgXAotICAgICAgICAgTFBBVEg9LmxpYnMgXAotQEAgLTE0LDkgKzIzLDI0IEBAIElOVFJPU1BFQ1RJT05fU0NBTk5FUiA9IFwKLSAgICAgICAgIFVOSU5TVEFMTEVEX0lOVFJPU1BFQ1RJT05fU1JDRElSPSQodG9wX3NyY2RpcikgXAotICAgICAgICAgVU5JTlNUQUxMRURfSU5UUk9TUEVDVElPTl9CVUlMRERJUj0kKHRvcF9idWlsZGRpcikgXAotICAgICAgICAgJCh0b3BfYnVpbGRkaXIpL2ctaXItc2Nhbm5lcgotK2VuZGlmCi0rCi0raWYgVVNFX0NST1NTX1dSQVBQRVIKLStDUk9TU19XUkFQUEVSX0FSRyA9IC0tdXNlLWJpbmFyeS13cmFwcGVyPSQoR0lfQ1JPU1NfV1JBUFBFUikKLStlbHNlCi0rQ1JPU1NfV1JBUFBFUl9BUkcgPQotK2VuZGlmCi0rCi0raWYgVVNFX0xERF9XUkFQUEVSCi0rTEREX1dSQVBQRVJfQVJHID0gLS11c2UtbGRkLXdyYXBwZXI9JChHSV9MRERfV1JBUFBFUikKLStlbHNlCi0rTEREX1dSQVBQRVJfQVJHID0KLStlbmRpZgotIAotIElOVFJPU1BFQ1RJT05fU0NBTk5FUl9BUkdTID0gXAotICAgICAtLXZlcmJvc2UgXAotKyAgICAkKENST1NTX1dSQVBQRVJfQVJHKSBcCi0rICAgICQoTEREX1dSQVBQRVJfQVJHKSBcCi0gICAgIC1JJCh0b3Bfc3JjZGlyKSBcCi0gICAgIC0tYWRkLWluY2x1ZGUtcGF0aD0kKHNyY2RpcikgXAotICAgICAtLWFkZC1pbmNsdWRlLXBhdGg9JCh0b3Bfc3JjZGlyKS9naXIgXAotQEAgLTI0LDkgKzQ4LDE1IEBAIElOVFJPU1BFQ1RJT05fU0NBTk5FUl9BUkdTID0gXAotICAgICAtLWFkZC1pbmNsdWRlLXBhdGg9JCh0b3BfYnVpbGRkaXIpIFwKLSAgICAgLS1hZGQtaW5jbHVkZS1wYXRoPSQodG9wX2J1aWxkZGlyKS9naXIKLSAKLStpZiBVU0VfQ1JPU1NfV1JBUFBFUgotK0lOVFJPU1BFQ1RJT05fQ09NUElMRVIgPSBcCi0rICAgIGVudiBQQVRIPSIubGliczokKFBBVEgpIiBcCi0rICAgICAgICAkKEdJX0NST1NTX1dSQVBQRVIpICQodG9wX2J1aWxkZGlyKS8ubGlicy9nLWlyLWNvbXBpbGVyJChFWEVFWFQpCi0rZWxzZQotIElOVFJPU1BFQ1RJT05fQ09NUElMRVIgPSBcCi0gICAgIGVudiBQQVRIPSIubGliczokKFBBVEgpIiBcCi0gICAgICAgICAkKHRvcF9idWlsZGRpcikvZy1pci1jb21waWxlciQoRVhFRVhUKQotK2VuZGlmCi0gCi0gSU5UUk9TUEVDVElPTl9DT01QSUxFUl9BUkdTID0gXAotICAgICAtLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKLUBAIC0zNSw2ICs2NSwxNCBAQCBJTlRST1NQRUNUSU9OX0NPTVBJTEVSX0FSR1MgPSBcCi0gICAgIC0taW5jbHVkZWRpcj0kKHRvcF9idWlsZGRpcikgXAotICAgICAtLWluY2x1ZGVkaXI9JCh0b3BfYnVpbGRkaXIpL2dpcgotIAotK2lmIFVTRV9IT1NUX0dJCi0rSU5UUk9TUEVDVElPTl9ET0NUT09MID0gXAotKyAgICBlbnYgUEFUSD0iJChQQVRIKSIgXAotKyAgICAgICAgTFBBVEg9LmxpYnMgXAotKyAgICAgICAgUFlUSE9OUEFUSD0kKHRvcF9idWlsZGRpcik6JCh0b3Bfc3JjZGlyKSBcCi0rICAgICAgICBVTklOU1RBTExFRF9JTlRST1NQRUNUSU9OX0JVSUxERElSPSQodG9wX2J1aWxkZGlyKSBcCi0rICAgICAgICBnLWlyLWRvYy10b29sCi0rZWxzZQotIElOVFJPU1BFQ1RJT05fRE9DVE9PTCA9IFwKLSAgICAgZW52IFBBVEg9Ii5saWJzOiQoUEFUSCkiIFwKLSAgICAgICAgIExQQVRIPS5saWJzIFwKLUBAIC00Miw2ICs4MCw3IEBAIElOVFJPU1BFQ1RJT05fRE9DVE9PTCA9IFwKLSAgICAgICAgIFVOSU5TVEFMTEVEX0lOVFJPU1BFQ1RJT05fU1JDRElSPSQodG9wX3NyY2RpcikgXAotICAgICAgICAgVU5JTlNUQUxMRURfSU5UUk9TUEVDVElPTl9CVUlMRERJUj0kKHRvcF9idWlsZGRpcikgXAotICAgICAgICAgJCh0b3BfYnVpbGRkaXIpL2ctaXItZG9jLXRvb2wKLStlbmRpZgotIAotIElOVFJPU1BFQ1RJT05fRE9DVE9PTF9BUkdTID0gXAotICAgICAtLWFkZC1pbmNsdWRlLXBhdGg9JChzcmNkaXIpIFwKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGIxMTU5NmIuLmQ3OGFlNTIgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTM0Nyw2ICszNDcsNDggQEAgZmkKLSAKLSBBQ19TVUJTVChFWFRSQV9MSU5LX0ZMQUdTKQotIAotK0FDX0FSR19FTkFCTEUoW2hvc3QtZ2ldLAotK1tBU19IRUxQX1NUUklORyhbLS1lbmFibGUtaG9zdC1naV0sW1VzZSBnb2JqZWN0IGludHJvc3BlY3Rpb24gdG9vbHMgaW5zdGFsbGVkIGluIHRoZSBob3N0IHN5c3RlbSAodXNlZnVsIHdoZW4gY3Jvc3MtY29tcGlsaW5nKV0pXSwKLStbY2FzZSAiJHtlbmFibGV2YWx9IiBpbgotKyAgeWVzKSBob3N0X2dpPXRydWUgOzsKLSsgIG5vKSAgaG9zdF9naT1mYWxzZSA7OwotKyAgKikgQUNfTVNHX0VSUk9SKFtiYWQgdmFsdWUgJHtlbmFibGV2YWx9IGZvciAtLWVuYWJsZS1ob3N0LWdpXSkgOzsKLStlc2FjXSxbaG9zdF9naT1mYWxzZV0pCi0rQU1fQ09ORElUSU9OQUwoW1VTRV9IT1NUX0dJXSwgW3Rlc3QgeCRob3N0X2dpID0geHRydWVdKQotKwotK0FDX0FSR19FTkFCTEUoW2dpLWNyb3NzLXdyYXBwZXJdLAotK1tBU19IRUxQX1NUUklORyhbLS1lbmFibGUtZ2ktY3Jvc3Mtd3JhcHBlcj1wYXRoXSxbVXNlIGEgd3JhcHBlciB0byBydW4gZ2ljb21waWxlciBhbmQgYmluYXJpZXMgcHJvZHVjZWQgYnkgZ2lzY2FubmVyICh1c2VmdWwgd2hlbiBjcm9zcy1jb21waWxpbmcpXSldLAotK1sKLStHSV9DUk9TU19XUkFQUEVSPSIke2VuYWJsZXZhbH0iCi0rdXNlX3dyYXBwZXI9dHJ1ZQotK10sWwotK0dJX0NST1NTX1dSQVBQRVI9IiIKLSt1c2Vfd3JhcHBlcj1mYWxzZQotK10pCi0rQUNfU1VCU1QoR0lfQ1JPU1NfV1JBUFBFUikKLStBTV9DT05ESVRJT05BTChbVVNFX0NST1NTX1dSQVBQRVJdLCBbdGVzdCB4JHVzZV93cmFwcGVyID0geHRydWVdKQotKwotK0FDX0FSR19FTkFCTEUoW2dpLWxkZC13cmFwcGVyXSwKLStbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWdpLWxkZC13cmFwcGVyPXBhdGhdLFtVc2UgYSBsZGQgd3JhcHBlciBpbnN0ZWFkIG9mIHN5c3RlbSdzIGxkZCBjb21tYW5kIGluIGdpc2Nhbm5lciAodXNlZnVsIHdoZW4gY3Jvc3MtY29tcGlsaW5nKV0pXSwKLStbCi0rR0lfTEREX1dSQVBQRVI9IiR7ZW5hYmxldmFsfSIKLSt1c2VfbGRkX3dyYXBwZXI9dHJ1ZQotK10sWwotK0dJX0xERF9XUkFQUEVSPSIiCi0rdXNlX2xkZF93cmFwcGVyPWZhbHNlCi0rXSkKLStBQ19TVUJTVChHSV9MRERfV1JBUFBFUikKLStBTV9DT05ESVRJT05BTChbVVNFX0xERF9XUkFQUEVSXSwgW3Rlc3QgeCR1c2VfbGRkX3dyYXBwZXIgPSB4dHJ1ZV0pCi0rCi0rQUNfQVJHX0VOQUJMRShbaW50cm9zcGVjdGlvbi1kYXRhXSwKLStbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWludHJvc3BlY3Rpb24tZGF0YV0sW0J1aWxkIGludHJvc3BlY3Rpb24gZGF0YSAoLmdpciBhbmQgLnR5cGVsaWIgZmlsZXMpIGluIGFkZGl0aW9uIHRvIGxpYnJhcnkgYW5kIHRvb2xzXSldLAotK1tjYXNlICIke2VuYWJsZXZhbH0iIGluCi0rICB5ZXMpIGludHJvc3BlY3Rpb25fZGF0YT10cnVlIDs7Ci0rICBubykgIGludHJvc3BlY3Rpb25fZGF0YT1mYWxzZSA7OwotKyAgKikgQUNfTVNHX0VSUk9SKFtiYWQgdmFsdWUgJHtlbmFibGV2YWx9IGZvciAtLWVuYWJsZS1pbnRyb3NwZWN0aW9uLWRhdGFdKSA7OwotK2VzYWNdLFtpbnRyb3NwZWN0aW9uX2RhdGE9dHJ1ZV0pCi0rQU1fQ09ORElUSU9OQUwoW0JVSUxEX0lOVFJPU1BFQ1RJT05fREFUQV0sIFt0ZXN0IHgkaW50cm9zcGVjdGlvbl9kYXRhID0geHRydWVdKQotKwotIEFDX0NPTkZJR19GSUxFUyhbCi0gTWFrZWZpbGUKLSB0ZXN0cy9NYWtlZmlsZQotZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KLWluZGV4IGJkZDBmYTcuLjc1ZGQzYzkgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9NYWtlZmlsZS5hbQotKysrIGIvdGVzdHMvTWFrZWZpbGUuYW0KLUBAIC0xLDYgKzEsOSBAQAotIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9jb21tb24ubWsKLSAKLS1TVUJESVJTID0gLiBzY2FubmVyIHJlcG9zaXRvcnkgb2Zmc2V0cyB3YXJuCi0rU1VCRElSUyA9IC4gc2Nhbm5lciByZXBvc2l0b3J5IHdhcm4KLStpZiBCVUlMRF9JTlRST1NQRUNUSU9OX0RBVEEKLStTVUJESVJTICs9IG9mZnNldHMKLStlbmRpZgotIAotIEVYVFJBX0RJU1Q9Ci0gQlVJTFRfU09VUkNFUz0KLS0tIAotMi42LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtZ2lzY2FubmVyLWFkZC1hLXVzZS1sZGQtd3JhcHBlci1vcHRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1naXNjYW5uZXItYWRkLWEtdXNlLWxkZC13cmFwcGVyLW9wdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjkyM2RjYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1naXNjYW5uZXItYWRkLWEtdXNlLWxkZC13cmFwcGVyLW9wdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLUZyb20gMjkxYTkyZjIwMDk4MWE3NzJiMmQwMzczOWRmZmI1OTI2YTgyYzVhNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogRnJpLCAzMCBPY3QgMjAxNSAxNjoyODo0NiArMDIwMAotU3ViamVjdDogW1BBVENIIDEvMl0gZ2lzY2FubmVyOiBhZGQgYSAtLXVzZS1sZGQtd3JhcHBlciBvcHRpb24KLQotVGhpcyBpcyB1c2VmdWwgaW4gY3Jvc3MtY29tcGlsZSBlbnZpcm9ubWVudHMgd2hlcmUgc3lzdGVtJ3MgbGRkCi1jb21tYW5kIGRvZXMgbm90IHdvcmsgb24gYmluYXJpZXMgYnVpbHQgZm9yIGEgZGlmZmVyZW50IGFyY2hpdGVjdHVyZQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW3JldmlldyBpbiBvZS1jb3JlXQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0KLS0tLQotIGdpc2Nhbm5lci9zY2FubmVybWFpbi5weSB8IDMgKysrCi0gZ2lzY2FubmVyL3NobGlicy5weSAgICAgIHwgNCArKystCi0gMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2dpc2Nhbm5lci9zY2FubmVybWFpbi5weSBiL2dpc2Nhbm5lci9zY2FubmVybWFpbi5weQotaW5kZXggZTM3ZDNlMy4uYjhmZmY1ZiAxMDA3NTUKLS0tLSBhL2dpc2Nhbm5lci9zY2FubmVybWFpbi5weQotKysrIGIvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5Ci1AQCAtMTIxLDYgKzEyMSw5IEBAIGRlZiBfZ2V0X29wdGlvbl9wYXJzZXIoKToKLSAgICAgcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLXVzZS1iaW5hcnktd3JhcHBlciIsCi0gICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJ3cmFwcGVyIiwgZGVmYXVsdD1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJ3cmFwcGVyIHRvIHVzZSBmb3IgcnVubmluZyBwcm9ncmFtcyAodXNlZnVsIHdoZW4gY3Jvc3MtY29tcGlsaW5nKSIpCi0rICAgIHBhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS11c2UtbGRkLXdyYXBwZXIiLAotKyAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlIiwgZGVzdD0ibGRkX3dyYXBwZXIiLCBkZWZhdWx0PU5vbmUsCi0rICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IndyYXBwZXIgdG8gdXNlIGluc3RlYWQgb2YgbGRkICh1c2VmdWwgd2hlbiBjcm9zcy1jb21waWxpbmcpIikKLSAgICAgcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLXByb2dyYW0tYXJnIiwKLSAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJhcHBlbmQiLCBkZXN0PSJwcm9ncmFtX2FyZ3MiLCBkZWZhdWx0PVtdLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJleHRyYSBhcmd1bWVudHMgdG8gcHJvZ3JhbSIpCi1kaWZmIC0tZ2l0IGEvZ2lzY2FubmVyL3NobGlicy5weSBiL2dpc2Nhbm5lci9zaGxpYnMucHkKLWluZGV4IDFhZDc1ZWUuLjQxMTE3YzYgMTAwNjQ0Ci0tLS0gYS9naXNjYW5uZXIvc2hsaWJzLnB5Ci0rKysgYi9naXNjYW5uZXIvc2hsaWJzLnB5Ci1AQCAtMTAwLDcgKzEwMCw5IEBAIGRlZiBfcmVzb2x2ZV9ub25fbGlidG9vbChvcHRpb25zLCBiaW5hcnksIGxpYnJhcmllcyk6Ci0gICAgICAgICAgICAgYXJncy5leHRlbmQobGlidG9vbCkKLSAgICAgICAgICAgICBhcmdzLmFwcGVuZCgnLS1tb2RlPWV4ZWN1dGUnKQotICAgICAgICAgcGxhdGZvcm1fc3lzdGVtID0gcGxhdGZvcm0uc3lzdGVtKCkKLS0gICAgICAgIGlmIHBsYXRmb3JtX3N5c3RlbSA9PSAnRGFyd2luJzoKLSsgICAgICAgIGlmIG9wdGlvbnMubGRkX3dyYXBwZXI6Ci0rICAgICAgICAgICAgYXJncy5leHRlbmQoW29wdGlvbnMubGRkX3dyYXBwZXIsIGJpbmFyeS5hcmdzWzBdXSkKLSsgICAgICAgIGVsaWYgcGxhdGZvcm1fc3lzdGVtID09ICdEYXJ3aW4nOgotICAgICAgICAgICAgIGFyZ3MuZXh0ZW5kKFsnb3Rvb2wnLCAnLUwnLCBiaW5hcnkuYXJnc1swXV0pCi0gICAgICAgICBlbHNlOgotICAgICAgICAgICAgIGFyZ3MuZXh0ZW5kKFsnbGRkJywgYmluYXJ5LmFyZ3NbMF1dKQotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1naXNjYW5uZXItYWRkLXVzZS1iaW5hcnktd3JhcHBlci1vcHRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1naXNjYW5uZXItYWRkLXVzZS1iaW5hcnktd3JhcHBlci1vcHRpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxMjQxYTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtZ2lzY2FubmVyLWFkZC11c2UtYmluYXJ5LXdyYXBwZXItb3B0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotRnJvbSAyMzIyZjM2MDU2MjY1ZjgwOWFhZmZiNzRmY2Y1YWMwYzgzMTI5NzUyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDE5IE9jdCAyMDE1IDE4OjI2OjQwICswMzAwCi1TdWJqZWN0OiBbUEFUQ0ggMi80XSBnaXNjYW5uZXI6IGFkZCAtLXVzZS1iaW5hcnktd3JhcHBlciBvcHRpb24KLQotV2l0aCB0aGlzIG9wdGlvbiwgZ2lzY2FubmVyIHdpbGwgdXNlIGEgd3JhcHBlciBleGVjdXRhYmxlIHRvIHJ1bgotYmluYXJpZXMgaXQncyBwcm9kdWNpbmcsIGluc3RlYWQgb2YgcnVubmluZyB0aGVtIGRpcmVjdGx5LiBUaGlzCi1pcyB1c2VmdWwgd2hlbiBiaW5hcmllcyBhcmUgY3Jvc3MtY29tcGlsZWQgYW5kIGNhbm5vdCBiZSBydW4gZGlyZWN0bHksCi1idXQgdGhleSBjYW4gYmUgcnVuIHVzaW5nIGZvciBleGFtcGxlIFFFTVUgZW11bGF0aW9uLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW3JldmlldyBvbiBvZS1jb3JlIGxpc3RdCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLQotLS0tCi0gZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5IHwgMTQgKysrKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5IGIvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5Ci1pbmRleCBiMzYyODRkLi5lMzdkM2UzIDEwMDc1NQotLS0tIGEvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5Ci0rKysgYi9naXNjYW5uZXIvc2Nhbm5lcm1haW4ucHkKLUBAIC0xMTgsNiArMTE4LDkgQEAgZGVmIF9nZXRfb3B0aW9uX3BhcnNlcigpOgotICAgICBwYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tcHJvZ3JhbSIsCi0gICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJwcm9ncmFtIiwgZGVmYXVsdD1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJwcm9ncmFtIHRvIGV4ZWN1dGUiKQotKyAgICBwYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tdXNlLWJpbmFyeS13cmFwcGVyIiwKLSsgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9IndyYXBwZXIiLCBkZWZhdWx0PU5vbmUsCi0rICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IndyYXBwZXIgdG8gdXNlIGZvciBydW5uaW5nIHByb2dyYW1zICh1c2VmdWwgd2hlbiBjcm9zcy1jb21waWxpbmcpIikKLSAgICAgcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLXByb2dyYW0tYXJnIiwKLSAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJhcHBlbmQiLCBkZXN0PSJwcm9ncmFtX2FyZ3MiLCBkZWZhdWx0PVtdLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJleHRyYSBhcmd1bWVudHMgdG8gcHJvZ3JhbSIpCi1AQCAtNDA2LDYgKzQwOSwxNyBAQCBkZWYgY3JlYXRlX2JpbmFyeSh0cmFuc2Zvcm1lciwgb3B0aW9ucywgYXJncyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkdW1wX3BhcnNlci5nZXRfZXJyb3JfcXVhcmtfZnVuY3Rpb25zKCkpCi0gCi0gICAgIHNobGlicyA9IHJlc29sdmVfc2hsaWJzKG9wdGlvbnMsIGJpbmFyeSwgb3B0aW9ucy5saWJyYXJpZXMpCi0rICAgIGlmIG9wdGlvbnMud3JhcHBlcjoKLSsgICAgICAgICMgVGhlIHdyYXBwZXIgbmVlZHMgdGhlIGJpbmFyeSBpdHNlbGYsIG5vdCB0aGUgbGlidG9vbCB3cmFwcGVyIHNjcmlwdCwKLSsgICAgICAgICMgc28gd2UgY2hlY2sgaWYgbGlidG9vbCBoYXMgc25lYWtlZCB0aGUgYmluYXJ5IGludG8gLmxpYnMgc3ViZGlyZWN0b3J5Ci0rICAgICAgICAjIGFuZCBhZGp1c3QgdGhlIHBhdGggYWNjb3JkaW5nbHkKLSsJaW1wb3J0IG9zLnBhdGgKLSsgICAgICAgIGRpcl9uYW1lLCBiaW5hcnlfbmFtZSAgPSBvcy5wYXRoLnNwbGl0KGJpbmFyeS5hcmdzWzBdKQotKyAgICAgICAgbGlidG9vbF9iaW5hcnkgPSBvcy5wYXRoLmpvaW4oZGlyX25hbWUsICcubGlicycsIGJpbmFyeV9uYW1lKQotKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMobGlidG9vbF9iaW5hcnkpOgotKwkgICAgYmluYXJ5LmFyZ3NbMF0gPSBsaWJ0b29sX2JpbmFyeQotKwkjIFRoZW4gcHJlcGVuZCB0aGUgd3JhcHBlciB0byB0aGUgY29tbWFuZCBsaW5lIHRvIGV4ZWN1dGUKLSsgICAgICAgIGJpbmFyeS5hcmdzID0gW29wdGlvbnMud3JhcHBlcl0gKyBiaW5hcnkuYXJncwotICAgICBnZHVtcF9wYXJzZXIuc2V0X2ludHJvc3BlY3Rpb25fYmluYXJ5KGJpbmFyeSkKLSAgICAgZ2R1bXBfcGFyc2VyLnBhcnNlKCkKLSAgICAgcmV0dXJuIHNobGlicwotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMi1jb25maWd1cmUuYWMtYWRkLWhvc3QtZ2ktZ2ktY3Jvc3Mtd3JhcHBlci1naS1sZGQtd3JhLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDItY29uZmlndXJlLmFjLWFkZC1ob3N0LWdpLWdpLWNyb3NzLXdyYXBwZXItZ2ktbGRkLXdyYS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OGEwYzg1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDItY29uZmlndXJlLmFjLWFkZC1ob3N0LWdpLWdpLWNyb3NzLXdyYXBwZXItZ2ktbGRkLXdyYS5wYXRjaApAQCAtMCwwICsxLDIwMyBAQAorRnJvbSBiMTUwM2ZlMjY5M2Q2MDJiM2UyNGU0YjgzMmRjMDkzNDk2MGQ1ZDIyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBNb24sIDE5IE9jdCAyMDE1IDE4OjI5OjIxICswMzAwCitTdWJqZWN0OiBbUEFUQ0ggMi81XSBjb25maWd1cmUuYWM6IGFkZCBob3N0LWdpLCBnaS1jcm9zcy13cmFwcGVyLAorIGdpLWxkZC13cmFwcGVyIGFuZCBpbnRyb3NwZWN0aW9uLWRhdGEgb3B0aW9ucworCitXaXRoIHRoZSBmaXJzdCBvcHRpb24sIGdvYmplY3QtaW50cm9zcGVjdGlvbiB0b29scyAoZy1pci1kb2MtdG9vbCBhbmQgZy1pci1zY2FubmVyKQordGhhdCBhcmUgYWxyZWFkeSBpbnN0YWxsZWQgaW4gdGhlIGhvc3Qgc3lzdGVtIHdpbGwgYmUgdXNlZCBmb3IgYnVpbGRpbmcgdGhlIHNvdXJjZSB0cmVlLgorCitXaXRoIHRoZSBzZWNvbmQgb3B0aW9uLCBnLWlyLXNjYW5uZXIgd2lsbCBiZSBpbnN0cnVjdGVkIHRvIHVzZSBhbiBleGVjdXRhYmxlCit3cmFwcGVyIHRvIHJ1biBiaW5hcmllcyBpdCdzIHByb2R1Y2luZywgYW5kIGctaXItY29tcGlsZXIgd2lsbCBiZSBydW4KK3Rocm91Z2ggdGhlIHNhbWUgd3JhcHBlciAoaG9zdCBzeXN0ZW0ncyBnLWlyLWNvbXBpbGVyIGNhbm5vdCBiZSB1c2VkIGJlY2F1c2UKK2l0J3MgcHJvZHVjaW5nIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBvdXRwdXQpLgorCitXaXRoIHRoZSB0aGlyZCBvcHRpb24sIGdpc2Nhbm5lciB3aWxsIGJlIGluc3RydWN0ZWQgdG8gdXNlIGEgc3BlY2lhbCBsZGQKK2NvbW1hbmQgaW5zdGVhZCBvZiBzeXN0ZW0ncyBsZGQgKHdoaWNoIGRvZXMgbm90IHdvcmsgd2hlbiB0aGUgYmluYXJ5IHRvIGluc3BlY3QKK2lzIGNvbXBpbGVkIGZvciBhIGRpZmZlcmVudCBhcmNoaXRlY3R1cmUpLgorCitXaXRoIHRoZSBmb3VydGggb3B0aW9uLCBpdCBpcyBwb3NzaWJsZSB0byBkaXNhYmxlIGJ1aWxkaW5nIG9mIGludHJvc3BlY3Rpb24gZGF0YQorKC5naXIgYW5kIC50eXBlbGliIGZpbGVzKSwgd2hpY2ggbWF5IGJlIGRpZmZpY3VsdCBvciBpbXBvc3NpYmxlIGluIGNyb3NzLWNvbXBpbGF0aW9uCitlbnZpcm9ubWVudHMsIGJlY2F1c2Ugb2YgbGFjayBvZiBlbXVsYXRpb24gKG9yIG5hdGl2ZSBoYXJkd2FyZSkgZm9yIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlCitvbiB3aGljaCB0aGUgdGFyZ2V0IGJpbmFyaWVzIGNhbiBiZSBydW4uCisKK1RoZXNlIG9wdGlvbnMgYXJlIHVzZWZ1bCB3aGVuIGNyb3NzLWNvbXBpbGluZyBmb3IgYSBkaWZmZXJlbnQgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtyZXZpZXcgb24gb2UtY29yZSBsaXN0XQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZS5hbSAgICAgICB8ICAyICsrCisgY29tbW9uLm1rICAgICAgICAgfCAzOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBjb25maWd1cmUuYWMgICAgICB8IDQyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIHRlc3RzL01ha2VmaWxlLmFtIHwgIDUgKysrKy0KKyA0IGZpbGVzIGNoYW5nZWQsIDg3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KK2luZGV4IGIwODBhODkuLmNlOGQyOWIgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5hbQorKysrIGIvTWFrZWZpbGUuYW0KK0BAIC0yMSw3ICsyMSw5IEBAIGluY2x1ZGUgTWFrZWZpbGUtY21waC5hbQorIGluY2x1ZGUgTWFrZWZpbGUtZ2lyZXBvc2l0b3J5LmFtCisgaW5jbHVkZSBNYWtlZmlsZS1naXNjYW5uZXIuYW0KKyBpbmNsdWRlIE1ha2VmaWxlLWV4YW1wbGVzLmFtCisraWYgQlVJTERfSU5UUk9TUEVDVElPTl9EQVRBCisgaW5jbHVkZSBNYWtlZmlsZS1naXIuYW0KKytlbmRpZgorIGluY2x1ZGUgTWFrZWZpbGUtdG9vbHMuYW0KKyBpbmNsdWRlIE1ha2VmaWxlLW1zdmNwcm9qLmFtCisgCitkaWZmIC0tZ2l0IGEvY29tbW9uLm1rIGIvY29tbW9uLm1rCitpbmRleCBlMjZjNjM3Li45ZjNhNjVmIDEwMDY0NAorLS0tIGEvY29tbW9uLm1rCisrKysgYi9jb21tb24ubWsKK0BAIC02LDYgKzYsMTUgQEAKKyAjIG1vZHVsZSBpdHNlbGYuCisgIworIAorK2lmIFVTRV9IT1NUX0dJCisrSU5UUk9TUEVDVElPTl9TQ0FOTkVSID0gXAorKyAgICBlbnYgUEFUSD0iJChQQVRIKSIgXAorKyAgICAgICAgTFBBVEg9LmxpYnMgXAorKyAgICAgICAgQ0M9IiQoQ0MpIiBcCisrICAgICAgICBQWVRIT05QQVRIPSQodG9wX2J1aWxkZGlyKTokKHRvcF9zcmNkaXIpIFwKKysgICAgICAgIFVOSU5TVEFMTEVEX0lOVFJPU1BFQ1RJT05fQlVJTERESVI9JCh0b3BfYnVpbGRkaXIpIFwKKysgICAgICAgIGctaXItc2Nhbm5lcgorK2Vsc2UKKyBJTlRST1NQRUNUSU9OX1NDQU5ORVIgPSBcCisgICAgIGVudiBQQVRIPSIubGliczokKFBBVEgpIiBcCisgICAgICAgICBMUEFUSD0ubGlicyBcCitAQCAtMTQsOSArMjMsMjQgQEAgSU5UUk9TUEVDVElPTl9TQ0FOTkVSID0gXAorICAgICAgICAgVU5JTlNUQUxMRURfSU5UUk9TUEVDVElPTl9TUkNESVI9JCh0b3Bfc3JjZGlyKSBcCisgICAgICAgICBVTklOU1RBTExFRF9JTlRST1NQRUNUSU9OX0JVSUxERElSPSQodG9wX2J1aWxkZGlyKSBcCisgICAgICAgICAkKHRvcF9idWlsZGRpcikvZy1pci1zY2FubmVyCisrZW5kaWYKKysKKytpZiBVU0VfQ1JPU1NfV1JBUFBFUgorK0NST1NTX1dSQVBQRVJfQVJHID0gLS11c2UtYmluYXJ5LXdyYXBwZXI9JChHSV9DUk9TU19XUkFQUEVSKQorK2Vsc2UKKytDUk9TU19XUkFQUEVSX0FSRyA9CisrZW5kaWYKKysKKytpZiBVU0VfTEREX1dSQVBQRVIKKytMRERfV1JBUFBFUl9BUkcgPSAtLXVzZS1sZGQtd3JhcHBlcj0kKEdJX0xERF9XUkFQUEVSKQorK2Vsc2UKKytMRERfV1JBUFBFUl9BUkcgPQorK2VuZGlmCisgCisgSU5UUk9TUEVDVElPTl9TQ0FOTkVSX0FSR1MgPSBcCisgICAgIC0tdmVyYm9zZSBcCisrICAgICQoQ1JPU1NfV1JBUFBFUl9BUkcpIFwKKysgICAgJChMRERfV1JBUFBFUl9BUkcpIFwKKyAgICAgLUkkKHRvcF9zcmNkaXIpIFwKKyAgICAgLS1hZGQtaW5jbHVkZS1wYXRoPSQoc3JjZGlyKSBcCisgICAgIC0tYWRkLWluY2x1ZGUtcGF0aD0kKHRvcF9zcmNkaXIpL2dpciBcCitAQCAtMjQsOSArNDgsMTUgQEAgSU5UUk9TUEVDVElPTl9TQ0FOTkVSX0FSR1MgPSBcCisgICAgIC0tYWRkLWluY2x1ZGUtcGF0aD0kKHRvcF9idWlsZGRpcikgXAorICAgICAtLWFkZC1pbmNsdWRlLXBhdGg9JCh0b3BfYnVpbGRkaXIpL2dpcgorIAorK2lmIFVTRV9DUk9TU19XUkFQUEVSCisrSU5UUk9TUEVDVElPTl9DT01QSUxFUiA9IFwKKysgICAgZW52IFBBVEg9Ii5saWJzOiQoUEFUSCkiIFwKKysgICAgICAgICQoR0lfQ1JPU1NfV1JBUFBFUikgJCh0b3BfYnVpbGRkaXIpLy5saWJzL2ctaXItY29tcGlsZXIkKEVYRUVYVCkKKytlbHNlCisgSU5UUk9TUEVDVElPTl9DT01QSUxFUiA9IFwKKyAgICAgZW52IFBBVEg9Ii5saWJzOiQoUEFUSCkiIFwKKyAgICAgICAgICQodG9wX2J1aWxkZGlyKS9nLWlyLWNvbXBpbGVyJChFWEVFWFQpCisrZW5kaWYKKyAKKyBJTlRST1NQRUNUSU9OX0NPTVBJTEVSX0FSR1MgPSBcCisgICAgIC0taW5jbHVkZWRpcj0kKHNyY2RpcikgXAorQEAgLTM1LDYgKzY1LDE0IEBAIElOVFJPU1BFQ1RJT05fQ09NUElMRVJfQVJHUyA9IFwKKyAgICAgLS1pbmNsdWRlZGlyPSQodG9wX2J1aWxkZGlyKSBcCisgICAgIC0taW5jbHVkZWRpcj0kKHRvcF9idWlsZGRpcikvZ2lyCisgCisraWYgVVNFX0hPU1RfR0kKKytJTlRST1NQRUNUSU9OX0RPQ1RPT0wgPSBcCisrICAgIGVudiBQQVRIPSIkKFBBVEgpIiBcCisrICAgICAgICBMUEFUSD0ubGlicyBcCisrICAgICAgICBQWVRIT05QQVRIPSQodG9wX2J1aWxkZGlyKTokKHRvcF9zcmNkaXIpIFwKKysgICAgICAgIFVOSU5TVEFMTEVEX0lOVFJPU1BFQ1RJT05fQlVJTERESVI9JCh0b3BfYnVpbGRkaXIpIFwKKysgICAgICAgIGctaXItZG9jLXRvb2wKKytlbHNlCisgSU5UUk9TUEVDVElPTl9ET0NUT09MID0gXAorICAgICBlbnYgUEFUSD0iLmxpYnM6JChQQVRIKSIgXAorICAgICAgICAgTFBBVEg9LmxpYnMgXAorQEAgLTQyLDYgKzgwLDcgQEAgSU5UUk9TUEVDVElPTl9ET0NUT09MID0gXAorICAgICAgICAgVU5JTlNUQUxMRURfSU5UUk9TUEVDVElPTl9TUkNESVI9JCh0b3Bfc3JjZGlyKSBcCisgICAgICAgICBVTklOU1RBTExFRF9JTlRST1NQRUNUSU9OX0JVSUxERElSPSQodG9wX2J1aWxkZGlyKSBcCisgICAgICAgICAkKHRvcF9idWlsZGRpcikvZy1pci1kb2MtdG9vbAorK2VuZGlmCisgCisgSU5UUk9TUEVDVElPTl9ET0NUT09MX0FSR1MgPSBcCisgICAgIC0tYWRkLWluY2x1ZGUtcGF0aD0kKHNyY2RpcikgXAorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggNmM5MWZhNS4uMjEzNDBhNSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMzYwLDYgKzM2MCw0OCBAQCBmaQorIAorIEFDX1NVQlNUKEVYVFJBX0xJTktfRkxBR1MpCisgCisrQUNfQVJHX0VOQUJMRShbaG9zdC1naV0sCisrW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1ob3N0LWdpXSxbVXNlIGdvYmplY3QgaW50cm9zcGVjdGlvbiB0b29scyBpbnN0YWxsZWQgaW4gdGhlIGhvc3Qgc3lzdGVtICh1c2VmdWwgd2hlbiBjcm9zcy1jb21waWxpbmcpXSldLAorK1tjYXNlICIke2VuYWJsZXZhbH0iIGluCisrICB5ZXMpIGhvc3RfZ2k9dHJ1ZSA7OworKyAgbm8pICBob3N0X2dpPWZhbHNlIDs7CisrICAqKSBBQ19NU0dfRVJST1IoW2JhZCB2YWx1ZSAke2VuYWJsZXZhbH0gZm9yIC0tZW5hYmxlLWhvc3QtZ2ldKSA7OworK2VzYWNdLFtob3N0X2dpPWZhbHNlXSkKKytBTV9DT05ESVRJT05BTChbVVNFX0hPU1RfR0ldLCBbdGVzdCB4JGhvc3RfZ2kgPSB4dHJ1ZV0pCisrCisrQUNfQVJHX0VOQUJMRShbZ2ktY3Jvc3Mtd3JhcHBlcl0sCisrW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1naS1jcm9zcy13cmFwcGVyPXBhdGhdLFtVc2UgYSB3cmFwcGVyIHRvIHJ1biBnaWNvbXBpbGVyIGFuZCBiaW5hcmllcyBwcm9kdWNlZCBieSBnaXNjYW5uZXIgKHVzZWZ1bCB3aGVuIGNyb3NzLWNvbXBpbGluZyldKV0sCisrWworK0dJX0NST1NTX1dSQVBQRVI9IiR7ZW5hYmxldmFsfSIKKyt1c2Vfd3JhcHBlcj10cnVlCisrXSxbCisrR0lfQ1JPU1NfV1JBUFBFUj0iIgorK3VzZV93cmFwcGVyPWZhbHNlCisrXSkKKytBQ19TVUJTVChHSV9DUk9TU19XUkFQUEVSKQorK0FNX0NPTkRJVElPTkFMKFtVU0VfQ1JPU1NfV1JBUFBFUl0sIFt0ZXN0IHgkdXNlX3dyYXBwZXIgPSB4dHJ1ZV0pCisrCisrQUNfQVJHX0VOQUJMRShbZ2ktbGRkLXdyYXBwZXJdLAorK1tBU19IRUxQX1NUUklORyhbLS1lbmFibGUtZ2ktbGRkLXdyYXBwZXI9cGF0aF0sW1VzZSBhIGxkZCB3cmFwcGVyIGluc3RlYWQgb2Ygc3lzdGVtJ3MgbGRkIGNvbW1hbmQgaW4gZ2lzY2FubmVyICh1c2VmdWwgd2hlbiBjcm9zcy1jb21waWxpbmcpXSldLAorK1sKKytHSV9MRERfV1JBUFBFUj0iJHtlbmFibGV2YWx9IgorK3VzZV9sZGRfd3JhcHBlcj10cnVlCisrXSxbCisrR0lfTEREX1dSQVBQRVI9IiIKKyt1c2VfbGRkX3dyYXBwZXI9ZmFsc2UKKytdKQorK0FDX1NVQlNUKEdJX0xERF9XUkFQUEVSKQorK0FNX0NPTkRJVElPTkFMKFtVU0VfTEREX1dSQVBQRVJdLCBbdGVzdCB4JHVzZV9sZGRfd3JhcHBlciA9IHh0cnVlXSkKKysKKytBQ19BUkdfRU5BQkxFKFtpbnRyb3NwZWN0aW9uLWRhdGFdLAorK1tBU19IRUxQX1NUUklORyhbLS1lbmFibGUtaW50cm9zcGVjdGlvbi1kYXRhXSxbQnVpbGQgaW50cm9zcGVjdGlvbiBkYXRhICguZ2lyIGFuZCAudHlwZWxpYiBmaWxlcykgaW4gYWRkaXRpb24gdG8gbGlicmFyeSBhbmQgdG9vbHNdKV0sCisrW2Nhc2UgIiR7ZW5hYmxldmFsfSIgaW4KKysgIHllcykgaW50cm9zcGVjdGlvbl9kYXRhPXRydWUgOzsKKysgIG5vKSAgaW50cm9zcGVjdGlvbl9kYXRhPWZhbHNlIDs7CisrICAqKSBBQ19NU0dfRVJST1IoW2JhZCB2YWx1ZSAke2VuYWJsZXZhbH0gZm9yIC0tZW5hYmxlLWludHJvc3BlY3Rpb24tZGF0YV0pIDs7CisrZXNhY10sW2ludHJvc3BlY3Rpb25fZGF0YT10cnVlXSkKKytBTV9DT05ESVRJT05BTChbQlVJTERfSU5UUk9TUEVDVElPTl9EQVRBXSwgW3Rlc3QgeCRpbnRyb3NwZWN0aW9uX2RhdGEgPSB4dHJ1ZV0pCisrCisgQUNfQ09ORklHX0ZJTEVTKFsKKyBNYWtlZmlsZQorIHRlc3RzL01ha2VmaWxlCitkaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuYW0gYi90ZXN0cy9NYWtlZmlsZS5hbQoraW5kZXggYmRkMGZhNy4uNzVkZDNjOSAxMDA2NDQKKy0tLSBhL3Rlc3RzL01ha2VmaWxlLmFtCisrKysgYi90ZXN0cy9NYWtlZmlsZS5hbQorQEAgLTEsNiArMSw5IEBACisgaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2NvbW1vbi5taworIAorLVNVQkRJUlMgPSAuIHNjYW5uZXIgcmVwb3NpdG9yeSBvZmZzZXRzIHdhcm4KKytTVUJESVJTID0gLiBzY2FubmVyIHJlcG9zaXRvcnkgd2FybgorK2lmIEJVSUxEX0lOVFJPU1BFQ1RJT05fREFUQQorK1NVQkRJUlMgKz0gb2Zmc2V0cworK2VuZGlmCisgCisgRVhUUkFfRElTVD0KKyBCVUlMVF9TT1VSQ0VTPQorLS0gCisyLjcuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMy1naXNjYW5uZXItYWRkLXVzZS1iaW5hcnktd3JhcHBlci1vcHRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMy1naXNjYW5uZXItYWRkLXVzZS1iaW5hcnktd3JhcHBlci1vcHRpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjIxZWFjYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAzLWdpc2Nhbm5lci1hZGQtdXNlLWJpbmFyeS13cmFwcGVyLW9wdGlvbi5wYXRjaApAQCAtMCwwICsxLDUxIEBACitGcm9tIDcwNGI4ODhkMGFiZmIwMTA2NzM1MmM0MDE1NmY0OWY2NTU2OTFjN2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMTkgT2N0IDIwMTUgMTg6MjY6NDAgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSCAzLzVdIGdpc2Nhbm5lcjogYWRkIC0tdXNlLWJpbmFyeS13cmFwcGVyIG9wdGlvbgorCitXaXRoIHRoaXMgb3B0aW9uLCBnaXNjYW5uZXIgd2lsbCB1c2UgYSB3cmFwcGVyIGV4ZWN1dGFibGUgdG8gcnVuCitiaW5hcmllcyBpdCdzIHByb2R1Y2luZywgaW5zdGVhZCBvZiBydW5uaW5nIHRoZW0gZGlyZWN0bHkuIFRoaXMKK2lzIHVzZWZ1bCB3aGVuIGJpbmFyaWVzIGFyZSBjcm9zcy1jb21waWxlZCBhbmQgY2Fubm90IGJlIHJ1biBkaXJlY3RseSwKK2J1dCB0aGV5IGNhbiBiZSBydW4gdXNpbmcgZm9yIGV4YW1wbGUgUUVNVSBlbXVsYXRpb24uCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbcmV2aWV3IG9uIG9lLWNvcmUgbGlzdF0KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5IHwgMTQgKysrKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5IGIvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5CitpbmRleCA2MzM0OTZmLi5kNjg0Y2QwIDEwMDc1NQorLS0tIGEvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5CisrKysgYi9naXNjYW5uZXIvc2Nhbm5lcm1haW4ucHkKK0BAIC0xMjQsNiArMTI0LDkgQEAgZGVmIF9nZXRfb3B0aW9uX3BhcnNlcigpOgorICAgICBwYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tcHJvZ3JhbSIsCisgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJwcm9ncmFtIiwgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJwcm9ncmFtIHRvIGV4ZWN1dGUiKQorKyAgICBwYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tdXNlLWJpbmFyeS13cmFwcGVyIiwKKysgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9IndyYXBwZXIiLCBkZWZhdWx0PU5vbmUsCisrICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IndyYXBwZXIgdG8gdXNlIGZvciBydW5uaW5nIHByb2dyYW1zICh1c2VmdWwgd2hlbiBjcm9zcy1jb21waWxpbmcpIikKKyAgICAgcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLXByb2dyYW0tYXJnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJhcHBlbmQiLCBkZXN0PSJwcm9ncmFtX2FyZ3MiLCBkZWZhdWx0PVtdLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJleHRyYSBhcmd1bWVudHMgdG8gcHJvZ3JhbSIpCitAQCAtNDE5LDYgKzQyMiwxNyBAQCBkZWYgY3JlYXRlX2JpbmFyeSh0cmFuc2Zvcm1lciwgb3B0aW9ucywgYXJncyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkdW1wX3BhcnNlci5nZXRfZXJyb3JfcXVhcmtfZnVuY3Rpb25zKCkpCisgCisgICAgIHNobGlicyA9IHJlc29sdmVfc2hsaWJzKG9wdGlvbnMsIGJpbmFyeSwgb3B0aW9ucy5saWJyYXJpZXMpCisrICAgIGlmIG9wdGlvbnMud3JhcHBlcjoKKysgICAgICAgICMgVGhlIHdyYXBwZXIgbmVlZHMgdGhlIGJpbmFyeSBpdHNlbGYsIG5vdCB0aGUgbGlidG9vbCB3cmFwcGVyIHNjcmlwdCwKKysgICAgICAgICMgc28gd2UgY2hlY2sgaWYgbGlidG9vbCBoYXMgc25lYWtlZCB0aGUgYmluYXJ5IGludG8gLmxpYnMgc3ViZGlyZWN0b3J5CisrICAgICAgICAjIGFuZCBhZGp1c3QgdGhlIHBhdGggYWNjb3JkaW5nbHkKKysgICAgICAgIGltcG9ydCBvcy5wYXRoCisrICAgICAgICBkaXJfbmFtZSwgYmluYXJ5X25hbWUgID0gb3MucGF0aC5zcGxpdChiaW5hcnkuYXJnc1swXSkKKysgICAgICAgIGxpYnRvb2xfYmluYXJ5ID0gb3MucGF0aC5qb2luKGRpcl9uYW1lLCAnLmxpYnMnLCBiaW5hcnlfbmFtZSkKKysgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGxpYnRvb2xfYmluYXJ5KToKKysgICAgICAgICAgICBiaW5hcnkuYXJnc1swXSA9IGxpYnRvb2xfYmluYXJ5CisrCSMgVGhlbiBwcmVwZW5kIHRoZSB3cmFwcGVyIHRvIHRoZSBjb21tYW5kIGxpbmUgdG8gZXhlY3V0ZQorKyAgICAgICAgYmluYXJ5LmFyZ3MgPSBbb3B0aW9ucy53cmFwcGVyXSArIGJpbmFyeS5hcmdzCisgICAgIGdkdW1wX3BhcnNlci5zZXRfaW50cm9zcGVjdGlvbl9iaW5hcnkoYmluYXJ5KQorICAgICBnZHVtcF9wYXJzZXIucGFyc2UoKQorICAgICByZXR1cm4gc2hsaWJzCistLSAKKzIuNy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDA0LWdpc2Nhbm5lci1hZGQtYS11c2UtbGRkLXdyYXBwZXItb3B0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDQtZ2lzY2FubmVyLWFkZC1hLXVzZS1sZGQtd3JhcHBlci1vcHRpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZiNzFlNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDA0LWdpc2Nhbm5lci1hZGQtYS11c2UtbGRkLXdyYXBwZXItb3B0aW9uLnBhdGNoCkBAIC0wLDAgKzEsNDcgQEAKK0Zyb20gZDRhZDU3ZmQ0YTMyYzRmMGQyZjA1MjJhMzA5MGVmOTQwNzQ2NDMxYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogRnJpLCAzMCBPY3QgMjAxNSAxNjoyODo0NiArMDIwMAorU3ViamVjdDogW1BBVENIIDQvNV0gZ2lzY2FubmVyOiBhZGQgYSAtLXVzZS1sZGQtd3JhcHBlciBvcHRpb24KKworVGhpcyBpcyB1c2VmdWwgaW4gY3Jvc3MtY29tcGlsZSBlbnZpcm9ubWVudHMgd2hlcmUgc3lzdGVtJ3MgbGRkCitjb21tYW5kIGRvZXMgbm90IHdvcmsgb24gYmluYXJpZXMgYnVpbHQgZm9yIGEgZGlmZmVyZW50IGFyY2hpdGVjdHVyZQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW3JldmlldyBpbiBvZS1jb3JlXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBnaXNjYW5uZXIvc2Nhbm5lcm1haW4ucHkgfCAzICsrKworIGdpc2Nhbm5lci9zaGxpYnMucHkgICAgICB8IDQgKysrLQorIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9naXNjYW5uZXIvc2Nhbm5lcm1haW4ucHkgYi9naXNjYW5uZXIvc2Nhbm5lcm1haW4ucHkKK2luZGV4IGQ2ODRjZDAuLjFiM2IzNjkgMTAwNzU1CistLS0gYS9naXNjYW5uZXIvc2Nhbm5lcm1haW4ucHkKKysrKyBiL2dpc2Nhbm5lci9zY2FubmVybWFpbi5weQorQEAgLTEyNyw2ICsxMjcsOSBAQCBkZWYgX2dldF9vcHRpb25fcGFyc2VyKCk6CisgICAgIHBhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS11c2UtYmluYXJ5LXdyYXBwZXIiLAorICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlIiwgZGVzdD0id3JhcHBlciIsIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0id3JhcHBlciB0byB1c2UgZm9yIHJ1bm5pbmcgcHJvZ3JhbXMgKHVzZWZ1bCB3aGVuIGNyb3NzLWNvbXBpbGluZykiKQorKyAgICBwYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tdXNlLWxkZC13cmFwcGVyIiwKKysgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9ImxkZF93cmFwcGVyIiwgZGVmYXVsdD1Ob25lLAorKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJ3cmFwcGVyIHRvIHVzZSBpbnN0ZWFkIG9mIGxkZCAodXNlZnVsIHdoZW4gY3Jvc3MtY29tcGlsaW5nKSIpCisgICAgIHBhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS1wcm9ncmFtLWFyZyIsCisgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0iYXBwZW5kIiwgZGVzdD0icHJvZ3JhbV9hcmdzIiwgZGVmYXVsdD1bXSwKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iZXh0cmEgYXJndW1lbnRzIHRvIHByb2dyYW0iKQorZGlmZiAtLWdpdCBhL2dpc2Nhbm5lci9zaGxpYnMucHkgYi9naXNjYW5uZXIvc2hsaWJzLnB5CitpbmRleCBjOTNkMjBjLi5jNWI1OTQyIDEwMDY0NAorLS0tIGEvZ2lzY2FubmVyL3NobGlicy5weQorKysrIGIvZ2lzY2FubmVyL3NobGlicy5weQorQEAgLTEwNSw3ICsxMDUsOSBAQCBkZWYgX3Jlc29sdmVfbm9uX2xpYnRvb2wob3B0aW9ucywgYmluYXJ5LCBsaWJyYXJpZXMpOgorICAgICAgICAgICAgIGFyZ3MuZXh0ZW5kKGxpYnRvb2wpCisgICAgICAgICAgICAgYXJncy5hcHBlbmQoJy0tbW9kZT1leGVjdXRlJykKKyAgICAgICAgIHBsYXRmb3JtX3N5c3RlbSA9IHBsYXRmb3JtLnN5c3RlbSgpCistICAgICAgICBpZiBwbGF0Zm9ybV9zeXN0ZW0gPT0gJ0Rhcndpbic6CisrICAgICAgICBpZiBvcHRpb25zLmxkZF93cmFwcGVyOgorKyAgICAgICAgICAgIGFyZ3MuZXh0ZW5kKFtvcHRpb25zLmxkZF93cmFwcGVyLCBiaW5hcnkuYXJnc1swXV0pCisrICAgICAgICBlbGlmIHBsYXRmb3JtX3N5c3RlbSA9PSAnRGFyd2luJzoKKyAgICAgICAgICAgICBhcmdzLmV4dGVuZChbJ290b29sJywgJy1MJywgYmluYXJ5LmFyZ3NbMF1dKQorICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICBhcmdzLmV4dGVuZChbJ2xkZCcsIGJpbmFyeS5hcmdzWzBdXSkKKy0tIAorMi43LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDUtUHJlZml4LXBrZy1jb25maWctcGF0aHMtd2l0aC1QS0dfQ09ORklHX1NZU1JPT1RfRElSLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDA1LVByZWZpeC1wa2ctY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTkZJR19TWVNST09UX0RJUi0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdhMThlYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDA1LVByZWZpeC1wa2ctY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTkZJR19TWVNST09UX0RJUi0ucGF0Y2gKQEAgLTAsMCArMSw5NiBAQAorRnJvbSBlMDhiMzY3N2RkMDRkNmVjNDA3YmE4Zjc0ZjYwMWIyZDUxMzEwZWZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDggT2N0IDIwMTUgMTg6MzA6MzUgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSCA1LzVdIFByZWZpeCBwa2ctY29uZmlnIHBhdGhzIHdpdGggUEtHX0NPTkZJR19TWVNST09UX0RJUgorIGVudmlyb25tZW50IHZhcmlhYmxlCisKK1RoaXMgZW52aXJvbm1lbnQgdmFyaWFibGUgc2V0cyB0aGUgbG9jYXRpb24gb2Ygc3lzcm9vdCBkaXJlY3RvcnkgaW4gY3Jvc3MtY29tcGlsYXRpb24KK2Vudmlyb25tZW50czsgaWYgdGhlIHZhcmlhYmxlIGlzIG5vdCBzZXQsIHRoZSBwcmVmaXggd2lsbCBiZSBlbXB0eS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtyZXZpZXcgb24gb2UtY29yZSBsaXN0XQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZS1naXIuYW0gICAgIHwgMTggKysrKysrKysrLS0tLS0tLS0tCisgbTQvaW50cm9zcGVjdGlvbi5tNCB8ICA4ICsrKystLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLWdpci5hbSBiL01ha2VmaWxlLWdpci5hbQoraW5kZXggYTA5MjYwYS4uYmE2ZTg5ZSAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLWdpci5hbQorKysrIGIvTWFrZWZpbGUtZ2lyLmFtCitAQCAtNTUsOCArNTUsOCBAQCBlbHNlCisgZW5kaWYKKyAKKyAjIGdsaWIKKy1HTElCX0lOQ0xVREVESVI9JChzaGVsbCAiJHtQS0dfQ09ORklHfSIgLS12YXJpYWJsZT1pbmNsdWRlZGlyIGdsaWItMi4wKS9nbGliLTIuMAorLUdMSUJfTElCRElSPSQoc2hlbGwgIiR7UEtHX0NPTkZJR30iIC0tdmFyaWFibGU9bGliZGlyIGdsaWItMi4wKQorK0dMSUJfSU5DTFVERURJUj0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpJChzaGVsbCAiJHtQS0dfQ09ORklHfSIgLS12YXJpYWJsZT1pbmNsdWRlZGlyIGdsaWItMi4wKS9nbGliLTIuMAorK0dMSUJfTElCRElSPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUikkKHNoZWxsICIke1BLR19DT05GSUd9IiAtLXZhcmlhYmxlPWxpYmRpciBnbGliLTIuMCkKKyAKKyBHTElCX0xJQlJBUlk9Z2xpYi0yLjAKKyAKK0BAIC05Miw4ICs5Miw4IEBAIEdMaWItMi4wLmdpcjogZy1pci1zY2FubmVyIGctaXItY29tcGlsZXIkKEVYRUVYVCkKKyBnaXIvREJ1c0dMaWItMS4wLnR5cGVsaWI6IEdPYmplY3QtMi4wLmdpcgorIAorICMgZ29iamVjdAorLUdPQkpFQ1RfSU5DTFVERURJUj0kKHNoZWxsICIke1BLR19DT05GSUd9IiAtLXZhcmlhYmxlPWluY2x1ZGVkaXIgZ29iamVjdC0yLjApL2dsaWItMi4wCistR09CSkVDVF9MSUJESVI9JChzaGVsbCAiJHtQS0dfQ09ORklHfSIgLS12YXJpYWJsZT1saWJkaXIgZ29iamVjdC0yLjApCisrR09CSkVDVF9JTkNMVURFRElSPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUikkKHNoZWxsICIke1BLR19DT05GSUd9IiAtLXZhcmlhYmxlPWluY2x1ZGVkaXIgZ29iamVjdC0yLjApL2dsaWItMi4wCisrR09CSkVDVF9MSUJESVI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKSQoc2hlbGwgIiR7UEtHX0NPTkZJR30iIC0tdmFyaWFibGU9bGliZGlyIGdvYmplY3QtMi4wKQorIAorIEdPQkpFQ1RfTElCUkFSWT1nb2JqZWN0LTIuMAorIAorQEAgLTEyMCw4ICsxMjAsOCBAQCBHT2JqZWN0XzJfMF9naXJfRklMRVMgPSBcCisgQlVJTFRfR0lSU09VUkNFUyArPSBHT2JqZWN0LTIuMC5naXIKKyAKKyAjIGdtb2R1bGUKKy1HTU9EVUxFX0lOQ0xVREVESVI9JChzaGVsbCAiJHtQS0dfQ09ORklHfSIgLS12YXJpYWJsZT1pbmNsdWRlZGlyIGdtb2R1bGUtMi4wKS9nbGliLTIuMAorLUdNT0RVTEVfTElCRElSPSQoc2hlbGwgIiR7UEtHX0NPTkZJR30iIC0tdmFyaWFibGU9bGliZGlyIGdtb2R1bGUtMi4wKQorK0dNT0RVTEVfSU5DTFVERURJUj0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpJChzaGVsbCAiJHtQS0dfQ09ORklHfSIgLS12YXJpYWJsZT1pbmNsdWRlZGlyIGdtb2R1bGUtMi4wKS9nbGliLTIuMAorK0dNT0RVTEVfTElCRElSPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUikkKHNoZWxsICIke1BLR19DT05GSUd9IiAtLXZhcmlhYmxlPWxpYmRpciBnbW9kdWxlLTIuMCkKKyAKKyBHTU9EVUxFX0xJQlJBUlk9Z21vZHVsZS0yLjAKKyAKK0BAIC0xNDYsMTMgKzE0NiwxMyBAQCBHTW9kdWxlXzJfMF9naXJfRklMRVMgPSAkKEdMSUJfSU5DTFVERURJUikvZ21vZHVsZS5oIFwKKyBCVUlMVF9HSVJTT1VSQ0VTICs9IEdNb2R1bGUtMi4wLmdpcgorIAorICMgZ2lvCistR0lPX0lOQ0xVREVESVI9JChzaGVsbCAiJHtQS0dfQ09ORklHfSIgLS12YXJpYWJsZT1pbmNsdWRlZGlyIGdpby0yLjApL2dsaWItMi4wCistR0lPX0xJQkRJUj0kKHNoZWxsICIke1BLR19DT05GSUd9IiAtLXZhcmlhYmxlPWxpYmRpciBnaW8tMi4wKQorK0dJT19JTkNMVURFRElSPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUikkKHNoZWxsICIke1BLR19DT05GSUd9IiAtLXZhcmlhYmxlPWluY2x1ZGVkaXIgZ2lvLTIuMCkvZ2xpYi0yLjAKKytHSU9fTElCRElSPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUikkKHNoZWxsICIke1BLR19DT05GSUd9IiAtLXZhcmlhYmxlPWxpYmRpciBnaW8tMi4wKQorIAorIEdJT19MSUJSQVJZPWdpby0yLjAKKyAKKyBpZiBIQVZFX0dJT19VTklYCistR0lPX1VOSVhfSU5DTFVERURJUiA9ICQoc2hlbGwgIiR7UEtHX0NPTkZJR30iIC0tdmFyaWFibGU9aW5jbHVkZWRpciBnaW8tdW5peC0yLjApL2dpby11bml4LTIuMAorK0dJT19VTklYX0lOQ0xVREVESVIgPSAkKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpJChzaGVsbCAiJHtQS0dfQ09ORklHfSIgLS12YXJpYWJsZT1pbmNsdWRlZGlyIGdpby11bml4LTIuMCkvZ2lvLXVuaXgtMi4wCisgR0lPX1VOSVhfSERSUyA9ICQoR0lPX1VOSVhfSU5DTFVERURJUikvZ2lvLyouaAorIEdJT19VTklYX1BBQ0tBR0VTID0gZ2lvLXVuaXgtMi4wCisgZWxzZQorZGlmZiAtLWdpdCBhL200L2ludHJvc3BlY3Rpb24ubTQgYi9tNC9pbnRyb3NwZWN0aW9uLm00CitpbmRleCBkODljM2Q5Li5iNTYyMjY2IDEwMDY0NAorLS0tIGEvbTQvaW50cm9zcGVjdGlvbi5tNAorKysrIGIvbTQvaW50cm9zcGVjdGlvbi5tNAorQEAgLTU2LDE0ICs1NiwxNCBAQCBtNF9kZWZpbmUoW19HT0JKRUNUX0lOVFJPU1BFQ1RJT05fQ0hFQ0tfSU5URVJOQUxdLAorICAgICBJTlRST1NQRUNUSU9OX0dJUkRJUj0KKyAgICAgSU5UUk9TUEVDVElPTl9UWVBFTElCRElSPQorICAgICBpZiB0ZXN0ICJ4JGZvdW5kX2ludHJvc3BlY3Rpb24iID0gInh5ZXMiOyB0aGVuCistICAgICAgIElOVFJPU1BFQ1RJT05fU0NBTk5FUj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1nX2lyX3NjYW5uZXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKKy0gICAgICAgSU5UUk9TUEVDVElPTl9DT01QSUxFUj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1nX2lyX2NvbXBpbGVyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCistICAgICAgIElOVFJPU1BFQ1RJT05fR0VORVJBVEU9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z19pcl9nZW5lcmF0ZSBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAorKyAgICAgICBJTlRST1NQRUNUSU9OX1NDQU5ORVI9JFBLR19DT05GSUdfU1lTUk9PVF9ESVJgJFBLR19DT05GSUcgLS12YXJpYWJsZT1nX2lyX3NjYW5uZXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKKysgICAgICAgSU5UUk9TUEVDVElPTl9DT01QSUxFUj0kUEtHX0NPTkZJR19TWVNST09UX0RJUmAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdfaXJfY29tcGlsZXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKKysgICAgICAgSU5UUk9TUEVDVElPTl9HRU5FUkFURT0kUEtHX0NPTkZJR19TWVNST09UX0RJUmAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdfaXJfZ2VuZXJhdGUgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKKyAgICAgICAgSU5UUk9TUEVDVElPTl9HSVJESVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z2lyZGlyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCisgICAgICAgIElOVFJPU1BFQ1RJT05fVFlQRUxJQkRJUj0iJCgkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXR5cGVsaWJkaXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMCkiCisgICAgICAgIElOVFJPU1BFQ1RJT05fQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAorICAgICAgICBJTlRST1NQRUNUSU9OX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAorLSAgICAgICBJTlRST1NQRUNUSU9OX01BS0VGSUxFPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWRhdGFkaXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAvZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC9NYWtlZmlsZS5pbnRyb3NwZWN0aW9uCisrICAgICAgIElOVFJPU1BFQ1RJT05fTUFLRUZJTEU9JFBLR19DT05GSUdfU1lTUk9PVF9ESVJgJFBLR19DT05GSUcgLS12YXJpYWJsZT1kYXRhZGlyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgL2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvTWFrZWZpbGUuaW50cm9zcGVjdGlvbgorICAgICBmaQorICAgICBBQ19TVUJTVChJTlRST1NQRUNUSU9OX1NDQU5ORVIpCisgICAgIEFDX1NVQlNUKElOVFJPU1BFQ1RJT05fQ09NUElMRVIpCistLSAKKzIuNy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbl8xLjQ2LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS40Ni4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YjE2MTQ3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbl8xLjQ2LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNjMgKzAsMCBAQAotSE9NRVBBR0UgPSAiaHR0cDovL2dub21lLm9yZyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMR1BMdjIrICYgR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTBkNTc3NTM1YTM4OThlMWFlNWRiZjBhZTM1MDlhOGMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdG9vbHMvY29tcGlsZXIuYztlbmRsaW5lPTIwO21kNT1mYzUwMDdmYzIwMDIyNzIwZTZjMGIwY2RkZTQxZmFiZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9naXNjYW5uZXIvc291cmNlc2Nhbm5lci5jO2VuZGxpbmU9MjI7bWQ1PTE5NGQ2ZTBjMWQwMDY2MmYzMmQwMzBjZTQ0ZGU4ZDM5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dpcmVwb3NpdG9yeS9naXJlZ2lzdGVyZWR0eXBlaW5mby5jO2VuZGxpbmU9MjE7bWQ1PTY2MTg0NzYxMWFlNjk3OTQ2NTQxNWYzMWE3NTliYTI3IgotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vMS40Ni8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtUHJlZml4LXBrZy1jb25maWctcGF0aHMtd2l0aC1QS0dfQ09ORklHX1NZU1JPT1RfRElSLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWdpc2Nhbm5lci1hZGQtdXNlLWJpbmFyeS13cmFwcGVyLW9wdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWdpc2Nhbm5lci1hZGQtYS11c2UtbGRkLXdyYXBwZXItb3B0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWFkZC1ob3N0LWdpLWdpLWNyb3NzLXdyYXBwZXItYW5kLWdpLWxkZC5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJhZGI0MGEzMWM3YzgwYjY1YjBmNGM4ZmQ3MWI0OTNkYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2NjU4YmQzYzJiODgxM2ViM2UyNTExZWUxNTMyMzhkMDlhY2U5ZDMwOWU0NTc0YWYyNzQ0M2Q4NzQyM2U0MjMzIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWRvYyBweXRob25uYXRpdmUgcWVtdSBnb2JqZWN0LWludHJvc3BlY3Rpb24tZGF0YQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLSMgbmVjZXNzYXJ5IHRvIGxldCB0aGUgY2FsbCBmb3IgcHl0aG9uLWNvbmZpZyBmcm9tIGNvbmZpZ3VyZS5hYyBzdWNjZWVkCi1leHBvcnQgQlVJTERfU1lTCi1leHBvcnQgSE9TVF9TWVMKLWV4cG9ydCBTVEFHSU5HX0lOQ0RJUgotZXhwb3J0IFNUQUdJTkdfTElCRElSCi0KLSMgbmVlZGVkIGZvciB3cml0aW5nIG91dCB0aGUgcWVtdSB3cmFwcGVyIHNjcmlwdAotZXhwb3J0IFNUQUdJTkdfRElSX0hPU1QKLWV4cG9ydCBCCi0KLURFUEVORFNfYXBwZW5kID0gIiBsaWJmZmkgemxpYiBnbGliLTIuMCBweXRob24iCi0KLSMgdGFyZ2V0IGJ1aWxkIG5lZWRzIHFlbXUgdG8gcnVuIHRlbXBvcmFyeSBpbnRyb3NwZWN0aW9uIGJpbmFyaWVzIGNyZWF0ZWQKLSMgb24gdGhlIGZseSBieSBnLWlyLXNjYW5uZXIgYW5kIGEgbmF0aXZlIHZlcnNpb24gb2YgaXRzZWxmIHRvIHJ1bgotIyBuYXRpdmUgdmVyc2lvbnMgb2YgaXRzIG93biB0b29scyBkdXJpbmcgYnVpbGQuCi0jIEFsc28gcHJlbGluay1ydGxkIGlzIHVzZWQgdG8gZmluZCBvdXQgbGlicmFyeSBkZXBlbmRlbmNpZXMgb2YgaW50cm9zcGVjdGlvbiBiaW5hcmllcwotIyAoc3RhbmRhcmQgbGRkIGRvZXNuJ3Qgd29yayB3aGVuIGNyb3NzLWNvbXBpbGluZykuCi1ERVBFTkRTX2NsYXNzLXRhcmdldF9hcHBlbmQgPSAiIGdvYmplY3QtaW50cm9zcGVjdGlvbi1uYXRpdmUgcWVtdS1uYXRpdmUgcHJlbGluay1uYXRpdmUiCi0KLVNTVEFURV9TQ0FOX0ZJTEVTICs9ICJnLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgZy1pci1zY2FubmVyLXdyYXBwZXIgZy1pci1jb21waWxlci13cmFwcGVyIGctaXItc2Nhbm5lci1sZGR3cmFwcGVyIEdpby0yLjAuZ2lyIgotCi1kb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0gICAgICAgICMgVHdlYWsgdGhlIG5hdGl2ZSBweXRob24gc2NyaXB0cyBzbyB0aGF0IHRoZXkgZG9uJ3QgcmVmZXIgdG8gdGhlCi0gICAgICAgICMgZnVsbCBwYXRoIG9mIG5hdGl2ZSBweXRob24gYmluYXJ5ICh0aGUgc29sdXRpb24gaXMgdGFrZW4gZnJvbSBnbGliLTIuMCByZWNpcGUpCi0gICAgICAgICMgVGhpcyByZW1vdmVzIHRoZSByaXNrIG9mIGV4Y2VlZGluZyBMaW51eCBrZXJuZWwncyBzaGViYW5nIGxpbmUgbGltaXQgKDEyOCBieXRlcykKLSAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qLCMhJHtVU1JCSU5QQVRIfS9lbnYgbmF0aXZlcHl0aG9uLCcgJHtTfS90b29scy9nLWlyLXRvb2wtdGVtcGxhdGUuaW4KLX0KLQotZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgICAgICAjIFdyaXRlIG91dCBhIHFlbXUgd3JhcHBlciB0aGF0IHdpbGwgYmUgZ2l2ZW4gdG8gZ2ktc2Nhbm5lciBzbyB0aGF0IGl0Ci0gICAgICAgICMgY2FuIHJ1biB0YXJnZXQgaGVscGVyIGJpbmFyaWVzIHRocm91Z2ggdGhhdC4KLSAgICAgICAgcWVtdV9iaW5hcnk9IiR7QHFlbXVfd3JhcHBlcl9jbWRsaW5lKGQsICckU1RBR0lOR19ESVJfSE9TVCcsIFsnXCRHSVJfRVhUUkFfTElCU19QQVRIJywnLmxpYnMnLCckU1RBR0lOR19ESVJfSE9TVC8ke2xpYmRpcn0nLCckU1RBR0lOR19ESVJfSE9TVC8ke2Jhc2VfbGliZGlyfSddKX0iCi0gICAgICAgIGNhdCA+ICR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyIDw8IEVPRgotIyEvYmluL3NoCi0jIFVzZSBhIG1vZHVsZXMgZGlyZWN0b3J5IHdoaWNoIGRvZXNuJ3QgZXhpc3Qgc28gd2UgZG9uJ3QgbG9hZCByYW5kb20gdGhpbmdzCi0jIHdoaWNoIG1heSB0aGVuIGdldCBkZWxldGVkIChvciB0aGVpciBkZXBlbmRlbmNpZXMpIGFuZCBwb3RlbnRpYWxseSBzZWdmYXVsdAotZXhwb3J0IEdJT19NT0RVTEVfRElSPSR7U1RBR0lOR19MSUJESVJ9L2dpby9tb2R1bGVzLWR1bW15Ci0KLSRxZW11X2JpbmFyeSAiXCRAIgotaWYgWyBcJD8gLW5lIDAgXTsgdGhlbgotICAgIGVjaG8gIklmIHRoZSBhYm92ZSBlcnJvciBtZXNzYWdlIGlzIGFib3V0IG1pc3NpbmcgLnNvIGxpYnJhcmllcywgdGhlbiBzZXR0aW5nIHVwIEdJUl9FWFRSQV9MSUJTX1BBVEggaW4gdGhlIHJlY2lwZSBzaG91bGQgaGVscC4iCi0gICAgZWNobyAiKHR5cGljYWxseSBsaWtlIHRoaXM6IEdJUl9FWFRSQV9MSUJTX1BBVEg9XCIkIiJ7Qn0vc29tZXRoaW5nLy5saWJzXCIgKSIKLSAgICBleGl0IDEKLWZpCi1FT0YKLSAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIKLQotICAgICAgICAjIFdyaXRlIG91dCBhIHdyYXBwZXIgZm9yIGctaXItc2Nhbm5lciBpdHNlbGYsIHdoaWNoIHdpbGwgYmUgdXNlZCB3aGVuIGJ1aWxkaW5nIGludHJvc3BlY3Rpb24gZmlsZXMKLSAgICAgICAgIyBmb3IgZ2xpYi1iYXNlZCBwYWNrYWdlcy4gVGhpcyB3cmFwcGVyIGNhbGxzIHRoZSBuYXRpdmUgdmVyc2lvbiBvZiB0aGUgc2Nhbm5lciwgYW5kIHRlbGxzIGl0IHRvIHVzZQotICAgICAgICAjIGEgcWVtdSB3cmFwcGVyIGZvciBydW5uaW5nIHRyYW5zaWVudCB0YXJnZXQgYmluYXJpZXMgcHJvZHVjZWQgYnkgdGhlIHNjYW5uZXIsIGFuZCBhbiBpbmNsdWRlIGRpcmVjdG9yeSAKLSAgICAgICAgIyBmcm9tIHRoZSB0YXJnZXQgc3lzcm9vdC4KLSAgICAgICAgY2F0ID4gJHtCfS9nLWlyLXNjYW5uZXItd3JhcHBlciA8PCBFT0YKLSMhL2Jpbi9zaAotIyBUaGlzIHByZXZlbnRzIGctaXItc2Nhbm5lciBmcm9tIHdyaXRpbmcgY2FjaGUgZGF0YSB0byAkSE9NRQotZXhwb3J0IEdJX1NDQU5ORVJfRElTQUJMRV9DQUNIRT0xCi0KLWctaXItc2Nhbm5lciAtLXVzZS1iaW5hcnktd3JhcHBlcj0ke1NUQUdJTkdfQklORElSfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgLS11c2UtbGRkLXdyYXBwZXI9JHtTVEFHSU5HX0JJTkRJUn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgLS1hZGQtaW5jbHVkZS1wYXRoPSR7U1RBR0lOR19EQVRBRElSfS9naXItMS4wICJcJEAiCi1FT0YKLSAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLXNjYW5uZXItd3JhcHBlcgotCi0gICAgICAgICMgV3JpdGUgb3V0IGEgd3JhcHBlciBmb3IgZy1pci1jb21waWxlciwgd2hpY2ggcnVucyB0aGUgdGFyZ2V0IHZlcnNpb24gb2YgaXQgdGhyb3VnaCBxZW11LgotICAgICAgICAjIGctaXItY29tcGlsZXIgd3JpdGVzIG91dCB0aGUgcmF3IGNvbnRlbnQgb2YgYSBDIHN0cnVjdCB0byBkaXNrLCBhbmQgdGhlcmVmb3JlIGlzIGFyY2hpdGVjdHVyZSBkZXBlbmRlbnQuCi0gICAgICAgIGNhdCA+ICR7Qn0vZy1pci1jb21waWxlci13cmFwcGVyIDw8IEVPRgotIyEvYmluL3NoCi0ke1NUQUdJTkdfQklORElSfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgJHtTVEFHSU5HX0JJTkRJUn0vZy1pci1jb21waWxlciAiXCRAIgotRU9GCi0gICAgICAgIGNobW9kICt4ICR7Qn0vZy1pci1jb21waWxlci13cmFwcGVyCi0KLSAgICAgICAgIyBXcml0ZSBvdXQgYSB3cmFwcGVyIHRvIHVzZSBpbnN0ZWFkIG9mIGxkZCwgd2hpY2ggZG9lcyBub3Qgd29yayB3aGVuIGEgYmluYXJ5IGlzIGJ1aWx0Ci0gICAgICAgICMgZm9yIGEgZGlmZmVyZW50IGFyY2hpdGVjdHVyZQotICAgICAgICBjYXQgPiAke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyIDw8IEVPRgotIyEvYmluL3NoCi1wcmVsaW5rLXJ0bGQgLS1yb290PSRTVEFHSU5HX0RJUl9IT1NUICJcJEAiCi1FT0YKLSAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlcgotCi0gICAgICAgICMgQWxzbyB0d2VhayB0aGUgdGFyZ2V0IHB5dGhvbiBzY3JpcHRzIHNvIHRoYXQgdGhleSBkb24ndCByZWZlciB0byB0aGUKLSAgICAgICAgIyBuYXRpdmUgdmVyc2lvbiBvZiBweXRob24gYmluYXJ5ICh0aGUgc29sdXRpb24gaXMgdGFrZW4gZnJvbSBnbGliLTIuMCByZWNpcGUpCi0gICAgICAgIHNlZCAtaSAtZSAnMXMsIyEuKiwjISR7VVNSQklOUEFUSH0vZW52IHB5dGhvbiwnICR7U30vdG9vbHMvZy1pci10b29sLXRlbXBsYXRlLmluCi19Ci0KLSMgQ29uZmlndXJlIHRhcmdldCBidWlsZCB0byB1c2UgbmF0aXZlIHRvb2xzIG9mIGl0c2VsZiBhbmQgdG8gdXNlIGEgcWVtdSB3cmFwcGVyCi0jIGFuZCBvcHRpb25hbGx5IHRvIGdlbmVyYXRlIGludHJvc3BlY3Rpb24gZGF0YQotRVhUUkFfT0VDT05GX2NsYXNzLXRhcmdldCArPSAiLS1lbmFibGUtaG9zdC1naSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS1naS1jcm9zcy13cmFwcGVyPSR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWdpLWxkZC13cmFwcGVyPSR7Qn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0dJX0RBVEFfRU5BQkxFRCcsICdUcnVlJywgJy0tZW5hYmxlLWludHJvc3BlY3Rpb24tZGF0YScsICctLWRpc2FibGUtaW50cm9zcGVjdGlvbi1kYXRhJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgotCi0KLWRvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0gICAgICAgICMgVGhpcyBwcmV2ZW50cyBnLWlyLXNjYW5uZXIgZnJvbSB3cml0aW5nIGNhY2hlIGRhdGEgdG8gJEhPTUUKLSAgICAgICAgZXhwb3J0IEdJX1NDQU5ORVJfRElTQUJMRV9DQUNIRT0xCi0KLSAgICAgICAgIyBOZWVkZWQgdG8gcnVuIGctaXIgdW5pdCB0ZXN0cywgd2hpY2ggd29uJ3QgYmUgYWJsZSB0byBmaW5kIHRoZSBidWlsdCBsaWJyYXJpZXMgb3RoZXJ3aXNlCi0gICAgICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSRCLy5saWJzCi19Ci0KLSMgT3VyIHdyYXBwZXJzIG5lZWQgdG8gYmUgYXZhaWxhYmxlIHN5c3RlbS13aWRlLCBiZWNhdXNlIHRoZXkgd2lsbCBiZSB1c2VkIAotIyB0byBidWlsZCBpbnRyb3NwZWN0aW9uIGZpbGVzIGZvciBhbGwgb3RoZXIgZ29iamVjdC1iYXNlZCBwYWNrYWdlcwotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vCi0gICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgJHtEfSR7YmluZGlyfS8KLSAgICAgICAgaW5zdGFsbCAke0J9L2ctaXItc2Nhbm5lci13cmFwcGVyICR7RH0ke2JpbmRpcn0vCi0gICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIgJHtEfSR7YmluZGlyfS8KLSAgICAgICAgaW5zdGFsbCAke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyICR7RH0ke2JpbmRpcn0vCi19Ci0KLSMgLnR5cGVsaWIgZmlsZXMgYXJlIG5lZWRlZCBhdCBydW50aW1lIGFuZCBzbyB0aGV5IGdvIHRvIHRoZSBtYWluIHBhY2thZ2UKLUZJTEVTXyR7UE59X2FwcGVuZCA9ICIgJHtsaWJkaXJ9L2dpcmVwb3NpdG9yeS0qLyoudHlwZWxpYiIKLQotIyAuZ2lyIGZpbGVzIGdvIHRvIGRldiBwYWNrYWdlLCBhcyB0aGV5J3JlIG5lZWRlZCBmb3IgZGV2ZWxvcGluZyAoYnV0IG5vdCBmb3IgcnVubmluZykKLSMgdGhpbmdzIHRoYXQgZGVwZW5kcyBvbiBpbnRyb3NwZWN0aW9uLgotRklMRVNfJHtQTn0tZGV2X2FwcGVuZCA9ICIgJHtkYXRhZGlyfS9naXItKi8qLmdpciIKLQotIyBUaGVzZSBhcmUgdXNlZCBieSBnb2JqZWN0LWJhc2VkIHBhY2thZ2VzCi0jIHRvIGdlbmVyYXRlIHRyYW5zaWVudCBpbnRyb3NwZWN0aW9uIGJpbmFyaWVzCi1GSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2RhdGFkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvZ2R1bXAuYyBcCi0gICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvTWFrZWZpbGUuaW50cm9zcGVjdGlvbiIKLQotIyBUaGVzZSBhcmUgdXNlZCBieSBkZXBlbmRlbnQgcGFja2FnZXMgKGUuZy4gcHlnb2JqZWN0KSB0byBidWlsZCB0aGVpcgotIyB0ZXN0c3VpdGVzLgotRklMRVNfJHtQTn0tZGV2X2FwcGVuZCA9ICIgJHtkYXRhZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL3Rlc3RzLyouYyBcCi0gICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL3Rlc3RzLyouaCIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dpc2Nhbm5lci8uZGVidWcvIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dpc2Nhbm5lci8qLmEiCi0KLSMgd2UgbmVlZCB0YXJnZXQgdmVyc2lvbnMgb2YgaW50cm9zcGVjdGlvbiB0b29scyBpbiBzeXNyb290IHNvIHRoYXQgdGhleSBjYW4gYmUgcnVuIHZpYSBxZW11Ci0jIHdoZW4gYnVpbGRpbmcgaW50cm9zcGVjdGlvbiBmaWxlcyBpbiBvdGhlciBwYWNrYWdlcwotU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTX2FwcGVuZF9jbGFzcy10YXJnZXQgKz0gImdpX2JpbmFyaWVzX3N5c3Jvb3RfcHJlcHJvY2VzcyIKLQotZ2lfYmluYXJpZXNfc3lzcm9vdF9wcmVwcm9jZXNzKCkgewotICAgICAgICBzeXNyb290X3N0YWdlX2RpciAke0R9JHtiaW5kaXJ9ICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyfQotCi0gICAgICAgICMgQWxzbywgdHdlYWsgdGhlIGJpbmFyeSBuYW1lcyBpbiBpbnRyb3NwZWN0aW9uIHBrZ2NvbmZpZyBmaWxlLCBzbyB0aGF0IGl0IHBpY2tzIHVwIG91ciAKLSAgICAgICAgIyB3cmFwcGVycyB3aGljaCBkbyB0aGUgY3Jvc3MtY29tcGlsZSBhbmQgcWVtdSBtYWdpYy4KLSAgICAgICAgc2VkIC1pIFwKLSAgICAgICAgICAgLWUgInN8Z19pcl9zY2FubmVyPS4qfGdfaXJfc2Nhbm5lcj0ke2JpbmRpcn0vZy1pci1zY2FubmVyLXdyYXBwZXJ8IiBcCi0gICAgICAgICAgIC1lICJzfGdfaXJfY29tcGlsZXI9Lip8Z19pcl9jb21waWxlcj0ke2JpbmRpcn0vZy1pci1jb21waWxlci13cmFwcGVyfCIgXAotICAgICAgICAgICAke1NZU1JPT1RfREVTVERJUn0ke2xpYmRpcn0vcGtnY29uZmlnL2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAucGMKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbl8xLjQ4LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS40OC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiYWE0ODUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS40OC4wLmJiCkBAIC0wLDAgKzEsMTczIEBACitTVU1NQVJZID0gIk1pZGRsZXdhcmUgbGF5ZXIgYmV0d2VlbiBHT2JqZWN0LXVzaW5nIEMgbGlicmFyaWVzIGFuZCBsYW5ndWFnZSBiaW5kaW5ncyIKK0hPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nbm9tZS5vcmcvYWN0aW9uL3Nob3cvUHJvamVjdHMvR09iamVjdEludHJvc3BlY3Rpb24iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTHYyKyAmIEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTkwZDU3NzUzNWEzODk4ZTFhZTVkYmYwYWUzNTA5YThjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rvb2xzL2NvbXBpbGVyLmM7ZW5kbGluZT0yMDttZDU9ZmM1MDA3ZmMyMDAyMjcyMGU2YzBiMGNkZGU0MWZhYmQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2lzY2FubmVyL3NvdXJjZXNjYW5uZXIuYztlbmRsaW5lPTIyO21kNT0xOTRkNmUwYzFkMDA2NjJmMzJkMDMwY2U0NGRlOGQzOSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9naXJlcG9zaXRvcnkvZ2lyZWdpc3RlcmVkdHlwZWluZm8uYztlbmRsaW5lPTIxO21kNT02NjE4NDc2MTFhZTY5Nzk0NjU0MTVmMzFhNzU5YmEyNyIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LzEuNDgvJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJldmVydC1hbi1pbmNvbXBsZXRlLXVwc3RyZWFtLWF0dGVtcHQtYXQtY3Jvc3MtY29tcGkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1jb25maWd1cmUuYWMtYWRkLWhvc3QtZ2ktZ2ktY3Jvc3Mtd3JhcHBlci1naS1sZGQtd3JhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtZ2lzY2FubmVyLWFkZC11c2UtYmluYXJ5LXdyYXBwZXItb3B0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtZ2lzY2FubmVyLWFkZC1hLXVzZS1sZGQtd3JhcHBlci1vcHRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1QcmVmaXgtcGtnLWNvbmZpZy1wYXRocy13aXRoLVBLR19DT05GSUdfU1lTUk9PVF9ESVItLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjAxMzAxZmE5MDE5NjY3ZDQ4ZTkyNzM1M2UwOGJjMjE4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImZhMjc1YWFjY2RiZmM5MWVjMGJjOWE2ZmQwNTYyMDUxYWNkYmE3MzFlN2Q1ODRiNjRhMjc3ZmVjNjBlNzU4NzciCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jIHB5dGhvbjNuYXRpdmUgcWVtdSBnb2JqZWN0LWludHJvc3BlY3Rpb24tZGF0YSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCisjIG5lZWRlZCBmb3Igd3JpdGluZyBvdXQgdGhlIHFlbXUgd3JhcHBlciBzY3JpcHQKK2V4cG9ydCBTVEFHSU5HX0RJUl9IT1NUCitleHBvcnQgQgorCitERVBFTkRTX2FwcGVuZCA9ICIgbGliZmZpIHpsaWIgZ2xpYi0yLjAgcHl0aG9uMyBmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUiCisKKyMgdGFyZ2V0IGJ1aWxkIG5lZWRzIHFlbXUgdG8gcnVuIHRlbXBvcmFyeSBpbnRyb3NwZWN0aW9uIGJpbmFyaWVzIGNyZWF0ZWQKKyMgb24gdGhlIGZseSBieSBnLWlyLXNjYW5uZXIgYW5kIGEgbmF0aXZlIHZlcnNpb24gb2YgaXRzZWxmIHRvIHJ1bgorIyBuYXRpdmUgdmVyc2lvbnMgb2YgaXRzIG93biB0b29scyBkdXJpbmcgYnVpbGQuCisjIEFsc28gcHJlbGluay1ydGxkIGlzIHVzZWQgdG8gZmluZCBvdXQgbGlicmFyeSBkZXBlbmRlbmNpZXMgb2YgaW50cm9zcGVjdGlvbiBiaW5hcmllcworIyAoc3RhbmRhcmQgbGRkIGRvZXNuJ3Qgd29yayB3aGVuIGNyb3NzLWNvbXBpbGluZykuCitERVBFTkRTX2NsYXNzLXRhcmdldF9hcHBlbmQgPSAiIGdvYmplY3QtaW50cm9zcGVjdGlvbi1uYXRpdmUgcWVtdS1uYXRpdmUgcHJlbGluay1uYXRpdmUiCisKK1NTVEFURV9TQ0FOX0ZJTEVTICs9ICJnLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgZy1pci1zY2FubmVyLXdyYXBwZXIgZy1pci1jb21waWxlci13cmFwcGVyIGctaXItc2Nhbm5lci1sZGR3cmFwcGVyIEdpby0yLjAuZ2lyIgorCitkb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisgICAgICAgICMgVHdlYWsgdGhlIG5hdGl2ZSBweXRob24gc2NyaXB0cyBzbyB0aGF0IHRoZXkgZG9uJ3QgcmVmZXIgdG8gdGhlCisgICAgICAgICMgZnVsbCBwYXRoIG9mIG5hdGl2ZSBweXRob24gYmluYXJ5ICh0aGUgc29sdXRpb24gaXMgdGFrZW4gZnJvbSBnbGliLTIuMCByZWNpcGUpCisgICAgICAgICMgVGhpcyByZW1vdmVzIHRoZSByaXNrIG9mIGV4Y2VlZGluZyBMaW51eCBrZXJuZWwncyBzaGViYW5nIGxpbmUgbGltaXQgKDEyOCBieXRlcykKKyAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qLCMhJHtVU1JCSU5QQVRIfS9lbnYgcHl0aG9uMywnICR7U30vdG9vbHMvZy1pci10b29sLXRlbXBsYXRlLmluCit9CisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICAgICAgIyBXcml0ZSBvdXQgYSBxZW11IHdyYXBwZXIgdGhhdCB3aWxsIGJlIGdpdmVuIHRvIGdpLXNjYW5uZXIgc28gdGhhdCBpdAorICAgICAgICAjIGNhbiBydW4gdGFyZ2V0IGhlbHBlciBiaW5hcmllcyB0aHJvdWdoIHRoYXQuCisgICAgICAgIHFlbXVfYmluYXJ5PSIke0BxZW11X3dyYXBwZXJfY21kbGluZShkLCAnJFNUQUdJTkdfRElSX0hPU1QnLCBbJ1wkR0lSX0VYVFJBX0xJQlNfUEFUSCcsJy5saWJzJywnJFNUQUdJTkdfRElSX0hPU1QvJHtsaWJkaXJ9JywnJFNUQUdJTkdfRElSX0hPU1QvJHtiYXNlX2xpYmRpcn0nXSl9IgorICAgICAgICBjYXQgPiAke0J9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciA8PCBFT0YKKyMhL2Jpbi9zaAorIyBVc2UgYSBtb2R1bGVzIGRpcmVjdG9yeSB3aGljaCBkb2Vzbid0IGV4aXN0IHNvIHdlIGRvbid0IGxvYWQgcmFuZG9tIHRoaW5ncworIyB3aGljaCBtYXkgdGhlbiBnZXQgZGVsZXRlZCAob3IgdGhlaXIgZGVwZW5kZW5jaWVzKSBhbmQgcG90ZW50aWFsbHkgc2VnZmF1bHQKK2V4cG9ydCBHSU9fTU9EVUxFX0RJUj0ke1NUQUdJTkdfTElCRElSfS9naW8vbW9kdWxlcy1kdW1teQorCiskcWVtdV9iaW5hcnkgIlwkQCIKK2lmIFsgXCQ/IC1uZSAwIF07IHRoZW4KKyAgICBlY2hvICJJZiB0aGUgYWJvdmUgZXJyb3IgbWVzc2FnZSBpcyBhYm91dCBtaXNzaW5nIC5zbyBsaWJyYXJpZXMsIHRoZW4gc2V0dGluZyB1cCBHSVJfRVhUUkFfTElCU19QQVRIIGluIHRoZSByZWNpcGUgc2hvdWxkIGhlbHAuIgorICAgIGVjaG8gIih0eXBpY2FsbHkgbGlrZSB0aGlzOiBHSVJfRVhUUkFfTElCU19QQVRIPVwiJCIie0J9L3NvbWV0aGluZy8ubGlic1wiICkiCisgICAgZXhpdCAxCitmaQorRU9GCisgICAgICAgIGNobW9kICt4ICR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyCisKKyAgICAgICAgIyBXcml0ZSBvdXQgYSB3cmFwcGVyIGZvciBnLWlyLXNjYW5uZXIgaXRzZWxmLCB3aGljaCB3aWxsIGJlIHVzZWQgd2hlbiBidWlsZGluZyBpbnRyb3NwZWN0aW9uIGZpbGVzCisgICAgICAgICMgZm9yIGdsaWItYmFzZWQgcGFja2FnZXMuIFRoaXMgd3JhcHBlciBjYWxscyB0aGUgbmF0aXZlIHZlcnNpb24gb2YgdGhlIHNjYW5uZXIsIGFuZCB0ZWxscyBpdCB0byB1c2UKKyAgICAgICAgIyBhIHFlbXUgd3JhcHBlciBmb3IgcnVubmluZyB0cmFuc2llbnQgdGFyZ2V0IGJpbmFyaWVzIHByb2R1Y2VkIGJ5IHRoZSBzY2FubmVyLCBhbmQgYW4gaW5jbHVkZSBkaXJlY3RvcnkgCisgICAgICAgICMgZnJvbSB0aGUgdGFyZ2V0IHN5c3Jvb3QuCisgICAgICAgIGNhdCA+ICR7Qn0vZy1pci1zY2FubmVyLXdyYXBwZXIgPDwgRU9GCisjIS9iaW4vc2gKKyMgVGhpcyBwcmV2ZW50cyBnLWlyLXNjYW5uZXIgZnJvbSB3cml0aW5nIGNhY2hlIGRhdGEgdG8gJEhPTUUKK2V4cG9ydCBHSV9TQ0FOTkVSX0RJU0FCTEVfQ0FDSEU9MQorCitnLWlyLXNjYW5uZXIgLS11c2UtYmluYXJ5LXdyYXBwZXI9JHtTVEFHSU5HX0JJTkRJUn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyIC0tdXNlLWxkZC13cmFwcGVyPSR7U1RBR0lOR19CSU5ESVJ9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyIC0tYWRkLWluY2x1ZGUtcGF0aD0ke1NUQUdJTkdfREFUQURJUn0vZ2lyLTEuMCAiXCRAIgorRU9GCisgICAgICAgIGNobW9kICt4ICR7Qn0vZy1pci1zY2FubmVyLXdyYXBwZXIKKworICAgICAgICAjIFdyaXRlIG91dCBhIHdyYXBwZXIgZm9yIGctaXItY29tcGlsZXIsIHdoaWNoIHJ1bnMgdGhlIHRhcmdldCB2ZXJzaW9uIG9mIGl0IHRocm91Z2ggcWVtdS4KKyAgICAgICAgIyBnLWlyLWNvbXBpbGVyIHdyaXRlcyBvdXQgdGhlIHJhdyBjb250ZW50IG9mIGEgQyBzdHJ1Y3QgdG8gZGlzaywgYW5kIHRoZXJlZm9yZSBpcyBhcmNoaXRlY3R1cmUgZGVwZW5kZW50LgorICAgICAgICBjYXQgPiAke0J9L2ctaXItY29tcGlsZXItd3JhcHBlciA8PCBFT0YKKyMhL2Jpbi9zaAorJHtTVEFHSU5HX0JJTkRJUn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyICR7U1RBR0lOR19CSU5ESVJ9L2ctaXItY29tcGlsZXIgIlwkQCIKK0VPRgorICAgICAgICBjaG1vZCAreCAke0J9L2ctaXItY29tcGlsZXItd3JhcHBlcgorCisgICAgICAgICMgV3JpdGUgb3V0IGEgd3JhcHBlciB0byB1c2UgaW5zdGVhZCBvZiBsZGQsIHdoaWNoIGRvZXMgbm90IHdvcmsgd2hlbiBhIGJpbmFyeSBpcyBidWlsdAorICAgICAgICAjIGZvciBhIGRpZmZlcmVudCBhcmNoaXRlY3R1cmUKKyAgICAgICAgY2F0ID4gJHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlciA8PCBFT0YKKyMhL2Jpbi9zaAorcHJlbGluay1ydGxkIC0tcm9vdD0kU1RBR0lOR19ESVJfSE9TVCAiXCRAIgorRU9GCisgICAgICAgIGNobW9kICt4ICR7Qn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIKKworICAgICAgICAjIEFsc28gdHdlYWsgdGhlIHRhcmdldCBweXRob24gc2NyaXB0cyBzbyB0aGF0IHRoZXkgZG9uJ3QgcmVmZXIgdG8gdGhlCisgICAgICAgICMgbmF0aXZlIHZlcnNpb24gb2YgcHl0aG9uIGJpbmFyeSAodGhlIHNvbHV0aW9uIGlzIHRha2VuIGZyb20gZ2xpYi0yLjAgcmVjaXBlKQorICAgICAgICBzZWQgLWkgLWUgJzFzLCMhLiosIyEke1VTUkJJTlBBVEh9L2VudiBweXRob24zLCcgJHtTfS90b29scy9nLWlyLXRvb2wtdGVtcGxhdGUuaW4KK30KKworIyBDb25maWd1cmUgdGFyZ2V0IGJ1aWxkIHRvIHVzZSBuYXRpdmUgdG9vbHMgb2YgaXRzZWxmIGFuZCB0byB1c2UgYSBxZW11IHdyYXBwZXIKKyMgYW5kIG9wdGlvbmFsbHkgdG8gZ2VuZXJhdGUgaW50cm9zcGVjdGlvbiBkYXRhCitFWFRSQV9PRUNPTkZfY2xhc3MtdGFyZ2V0ICs9ICItLWVuYWJsZS1ob3N0LWdpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWdpLWNyb3NzLXdyYXBwZXI9JHtCfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUtZ2ktbGRkLXdyYXBwZXI9JHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlciBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnR0lfREFUQV9FTkFCTEVEJywgJ1RydWUnLCAnLS1lbmFibGUtaW50cm9zcGVjdGlvbi1kYXRhJywgJy0tZGlzYWJsZS1pbnRyb3NwZWN0aW9uLWRhdGEnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCisKK1BBQ0tBR0VDT05GSUcgPz0gIiIKK1BBQ0tBR0VDT05GSUdbZG9jdG9vbF0gPSAiLS1lbmFibGUtZG9jdG9vbCwtLWRpc2FibGUtZG9jdG9vbCxweXRob24zLW1ha28sIgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgICAgICMgVGhpcyBwcmV2ZW50cyBnLWlyLXNjYW5uZXIgZnJvbSB3cml0aW5nIGNhY2hlIGRhdGEgdG8gJEhPTUUKKyAgICAgICAgZXhwb3J0IEdJX1NDQU5ORVJfRElTQUJMRV9DQUNIRT0xCisKKyAgICAgICAgIyBOZWVkZWQgdG8gcnVuIGctaXIgdW5pdCB0ZXN0cywgd2hpY2ggd29uJ3QgYmUgYWJsZSB0byBmaW5kIHRoZSBidWlsdCBsaWJyYXJpZXMgb3RoZXJ3aXNlCisgICAgICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSRCLy5saWJzCit9CisKKyMgT3VyIHdyYXBwZXJzIG5lZWQgdG8gYmUgYXZhaWxhYmxlIHN5c3RlbS13aWRlLCBiZWNhdXNlIHRoZXkgd2lsbCBiZSB1c2VkIAorIyB0byBidWlsZCBpbnRyb3NwZWN0aW9uIGZpbGVzIGZvciBhbGwgb3RoZXIgZ29iamVjdC1iYXNlZCBwYWNrYWdlcworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgJHtEfSR7YmluZGlyfS8KKyAgICAgICAgaW5zdGFsbCAke0J9L2ctaXItc2Nhbm5lci13cmFwcGVyICR7RH0ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIgJHtEfSR7YmluZGlyfS8KKyAgICAgICAgaW5zdGFsbCAke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyICR7RH0ke2JpbmRpcn0vCit9CisKKyMgLnR5cGVsaWIgZmlsZXMgYXJlIG5lZWRlZCBhdCBydW50aW1lIGFuZCBzbyB0aGV5IGdvIHRvIHRoZSBtYWluIHBhY2thZ2UKK0ZJTEVTXyR7UE59X2FwcGVuZCA9ICIgJHtsaWJkaXJ9L2dpcmVwb3NpdG9yeS0qLyoudHlwZWxpYiIKKworIyAuZ2lyIGZpbGVzIGdvIHRvIGRldiBwYWNrYWdlLCBhcyB0aGV5J3JlIG5lZWRlZCBmb3IgZGV2ZWxvcGluZyAoYnV0IG5vdCBmb3IgcnVubmluZykKKyMgdGhpbmdzIHRoYXQgZGVwZW5kcyBvbiBpbnRyb3NwZWN0aW9uLgorRklMRVNfJHtQTn0tZGV2X2FwcGVuZCA9ICIgJHtkYXRhZGlyfS9naXItKi8qLmdpciIKKworIyBUaGVzZSBhcmUgdXNlZCBieSBnb2JqZWN0LWJhc2VkIHBhY2thZ2VzCisjIHRvIGdlbmVyYXRlIHRyYW5zaWVudCBpbnRyb3NwZWN0aW9uIGJpbmFyaWVzCitGSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2RhdGFkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvZ2R1bXAuYyBcCisgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvTWFrZWZpbGUuaW50cm9zcGVjdGlvbiIKKworIyBUaGVzZSBhcmUgdXNlZCBieSBkZXBlbmRlbnQgcGFja2FnZXMgKGUuZy4gcHlnb2JqZWN0KSB0byBidWlsZCB0aGVpcgorIyB0ZXN0c3VpdGVzLgorRklMRVNfJHtQTn0tZGV2X2FwcGVuZCA9ICIgJHtkYXRhZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL3Rlc3RzLyouYyBcCisgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL3Rlc3RzLyouaCIKKworRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dpc2Nhbm5lci8uZGVidWcvIgorRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dpc2Nhbm5lci8qLmEiCisKKyMgd2UgbmVlZCB0YXJnZXQgdmVyc2lvbnMgb2YgaW50cm9zcGVjdGlvbiB0b29scyBpbiBzeXNyb290IHNvIHRoYXQgdGhleSBjYW4gYmUgcnVuIHZpYSBxZW11CisjIHdoZW4gYnVpbGRpbmcgaW50cm9zcGVjdGlvbiBmaWxlcyBpbiBvdGhlciBwYWNrYWdlcworU1lTUk9PVF9ESVJTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7YmluZGlyfSIKKworU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGdpX2JpbmFyaWVzX3N5c3Jvb3RfcHJlcHJvY2VzcyIKK2dpX2JpbmFyaWVzX3N5c3Jvb3RfcHJlcHJvY2VzcygpIHsKKyAgICAgICAgIyBUd2VhayB0aGUgYmluYXJ5IG5hbWVzIGluIHRoZSBpbnRyb3NwZWN0aW9uIHBrZ2NvbmZpZyBmaWxlLCBzbyB0aGF0IGl0CisgICAgICAgICMgcGlja3MgdXAgb3VyIHdyYXBwZXJzIHdoaWNoIGRvIHRoZSBjcm9zcy1jb21waWxlIGFuZCBxZW11IG1hZ2ljLgorICAgICAgICBzZWQgLWkgXAorICAgICAgICAgICAtZSAic3xnX2lyX3NjYW5uZXI9Lip8Z19pcl9zY2FubmVyPSR7YmluZGlyfS9nLWlyLXNjYW5uZXItd3JhcHBlcnwiIFwKKyAgICAgICAgICAgLWUgInN8Z19pcl9jb21waWxlcj0uKnxnX2lyX2NvbXBpbGVyPSR7YmluZGlyfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXJ8IiBcCisgICAgICAgICAgICR7U1lTUk9PVF9ERVNURElSfSR7bGliZGlyfS9wa2djb25maWcvZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC5wYworfQorCisjIE5lZWQgdG8gZW5zdXJlIGxkLnNvLmNvbmYgZXhpc3RzIHNvIHByZWxpbmstbmF0aXZlIHdvcmtzCisjIGJvdGggYmVmb3JlIHdlIGJ1aWxkIGFuZCBpZiB3ZSBpbnN0YWxsIGZyb20gc3N0YXRlCitkb19jb25maWd1cmVbcHJlZnVuY3NdICs9ICJnb2JqZWN0X2ludHJvc3BlY3Rpb25fcHJlY29uZmlndXJlIgorcHl0aG9uIGdvYmplY3RfaW50cm9zcGVjdGlvbl9wcmVjb25maWd1cmUgKCkgeworICAgIG9lLnV0aWxzLndyaXRlX2xkX3NvX2NvbmYoZCkKK30KKworU1NUQVRFUE9TVElOU1RGVU5DUyArPSAiZ29iamVjdF9pbnRyb3NwZWN0aW9uX3Bvc3RpbnN0IgorcHl0aG9uIGdvYmplY3RfaW50cm9zcGVjdGlvbl9wb3N0aW5zdCAoKSB7CisgICAgaWYgZC5nZXRWYXIoIkJCX0NVUlJFTlRUQVNLIiwgVHJ1ZSkuc3RhcnRzd2l0aCgicG9wdWxhdGVfc3lzcm9vdCIpOgorICAgICAgICBvZS51dGlscy53cml0ZV9sZF9zb19jb25mKGQpCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hc18zLjE5LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hc18zLjE5LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1ZmRhYmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXNfMy4xOS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotU1VNTUFSWSA9ICJHTk9NRSBkZXNrdG9wLXdpZGUgR1NldHRpbmdzIHNjaGVtYXMiCi1IT01FUEFHRSA9ICJodHRwOi8vbGl2ZS5nbm9tZS5vcmcvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgaW50bHRvb2wtbmF0aXZlIgotCi1pbmhlcml0IGdub21lYmFzZSBnc2V0dGluZ3MgZ2V0dGV4dCBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZmRjOTJhYmNmZmU0NjgyMWJlNDIzMTkzYjI3NWNmOGIiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI5MDg0OTg5Yjc1Y2E5YjNmYzU5ODRjOGEwZDI5N2E5M2QzZDEyNGY1MWNhZGQyYmRhYWFhNzVhNzgzYzgwNjM1IgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hc18zLjIwLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hc18zLjIwLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmI5MjRjZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcy9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzXzMuMjAuMC5iYgpAQCAtMCwwICsxLDEzIEBACitTVU1NQVJZID0gIkdOT01FIGRlc2t0b3Atd2lkZSBHU2V0dGluZ3Mgc2NoZW1hcyIKK0hPTUVQQUdFID0gImh0dHA6Ly9saXZlLmdub21lLm9yZy9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworREVQRU5EUyA9ICJnbGliLTIuMCBpbnRsdG9vbC1uYXRpdmUiCisKK2luaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBnZXR0ZXh0IGdvYmplY3QtaW50cm9zcGVjdGlvbiB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiYzVkODdlYTQ4MGFhOWJmNjZiMTM0ZGRiNWI4ZWEwZjgiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI1NWE0MWI1MzNjMGFiOTU1ZTBhMzZhODRkNzM4Mjk0NTFjODhiMDI3ZDhkNzE5OTU1ZDhmNjk1YzM1YzZkOWMxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0aysuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0aysuaW5jCmluZGV4IDViYmZlNmIuLmMyNDBiYWEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKy5pbmMKQEAgLTU4LDcgKzU4LDE0IEBACiAJJHtsaWJkaXJ9L2d0ay0yLjAvbW9kdWxlcy9saWJmZXJyZXQuc28gXAogCSIKIAotR1RLQkFTRV9SUkVDT01NRU5EUyA/PSAibGliZXJhdGlvbi1mb250cyBnZGstcGl4YnVmLWxvYWRlci1wbmcgZ2RrLXBpeGJ1Zi1sb2FkZXItanBlZyBnZGstcGl4YnVmLWxvYWRlci1naWYgZ2RrLXBpeGJ1Zi1sb2FkZXIteHBtIHNoYXJlZC1taW1lLWluZm8iCitHVEtCQVNFX1JSRUNPTU1FTkRTID89ICJsaWJlcmF0aW9uLWZvbnRzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGdkay1waXhidWYtbG9hZGVyLXBuZyBcCisgICAgICAgICAgICAgICAgICAgICAgICBnZGstcGl4YnVmLWxvYWRlci1qcGVnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGdkay1waXhidWYtbG9hZGVyLWdpZiBcCisgICAgICAgICAgICAgICAgICAgICAgICBnZGstcGl4YnVmLWxvYWRlci14cG0gXAorICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkLW1pbWUtaW5mbyBcCisgICAgICAgICAgICAgICAgICAgICAgICBnbm9tZS10aGVtZS1hZHdhaXRhIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICIKIEdUS0dMSUJDX1JSRUNPTU1FTkRTID89ICIke0dUS0JBU0VfUlJFQ09NTUVORFN9IGdsaWJjLWdjb252LWlzbzg4NTktMSIKIAogUlJFQ09NTUVORFNfJHtQTn0gPSAiJHtHVEtCQVNFX1JSRUNPTU1FTkRTfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMuaW5jCmluZGV4IGJkMjkzMDAuLjgzZTliOTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLmluYwpAQCAtNiw3ICs2LDcgQEAKIFNFQ1RJT04gPSAibGlicyIKIAogREVQRU5EUyA9ICJnbGliLTIuMCBjYWlybyBwYW5nbyBhdGsganBlZyBsaWJwbmcgZ2RrLXBpeGJ1ZiBcCi0gICAgICAgICAgIGRvY2Jvb2stdXRpbHMtbmF0aXZlIGdkay1waXhidWYtbmF0aXZlIGxpYmVwb3h5IgorICAgICAgICAgICBkb2Nib29rLXV0aWxzLW5hdGl2ZSBnZGstcGl4YnVmLW5hdGl2ZSIKIAogTElDRU5TRSA9ICJMR1BMdjIgJiBMR1BMdjIrICYgTEdQTHYyLjErIgogCkBAIC0yMSw2ICsyMSw4IEBACiAgICAgIyBEbyB0aGlzIGJlY2F1c2UgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgaXMgcnVubmluZyAuL2xpYnRvb2wgZGlyZWN0bHkKICAgICBybSAtZiBsaWJ0b29sCiAgICAgbG4gLXMgJHtUQVJHRVRfUFJFRklYfWxpYnRvb2wgbGlidG9vbAorICAgICNkZWxldGUgYSBmaWxlIHRoYXQgd2lsbCBnZXQgY29uZnVzZWQgd2l0aCBnZW5lcmF0ZWQgb25lIGluICR7Qn0KKyAgICBybSAtZiAke1N9L2d0ay9ndGt0eXBlZnVuY3MuYwogfQogCiBFWFRSQV9PRUNPTkYgKz0gIiBcCkBAIC0yOSwxOSArMzEsMjUgQEAKICAgICAgICAgICAgICAgICAgLS1lbmFibGUtbW9kdWxlcyBcCiAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1jdXBzIFwKICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWNvbG9yZCBcCi0iCisgICAgICAgICAgICAgICAgIFdBWUxBTkRfUFJPVE9DT0xTX1NZU1JPT1RfRElSPSR7U1RBR0lOR19ESVJ9LyR7TUFDSElORX0gXAorICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgIngxMSIsICIiLCAiLS1kaXNhYmxlLWd0ay1kb2MiLCBkKX0gXAorICAgICAgICAgICAgICAgICAiCitFWFRSQV9PRUNPTkZbdmFyZGVwc2V4Y2x1ZGVdID0gIk1BQ0hJTkUiCiAKIGRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKICAgICAgICAgZXhwb3J0IEdJUl9FWFRSQV9MSUJTX1BBVEg9IiR7Qn0vZ2RrLy5saWJzIgogfQogCiBQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJ4MTEiLCAieDExIiwgIiIsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJvcGVuZ2wiLCAib3BlbmdsIiwgIiIsIGQpfSBcCiAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJvcGVuZ2wgeDExIiwgImdseCIsICIiLCBkKX0gXAogICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAid2F5bGFuZCIsICJ3YXlsYW5kIiwgIiIsIGQpfSIKIAogUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLXgxMS1iYWNrZW5kLC0tZGlzYWJsZS14MTEtYmFja2VuZCxhdC1zcGkyLWF0ayBmb250Y29uZmlnIGxpYngxMSBsaWJ4ZXh0IGxpYnhjdXJzb3IgbGlieGkgbGlieGRhbWFnZSBsaWJ4cmFuZHIgbGlieHJlbmRlciBsaWJ4Y29tcG9zaXRlIGxpYnhmaXhlcyIKKyMgdGhpcyBpcyBwcm92aWRlZCBieSBvZS1jb3JlIHBhdGNoIHRoYXQgcmVtb3ZlcyBlcG94eS9nbCBkZXBlbmRlbmN5IGZyb20gYSBYMTEgYnVpbGQKK1BBQ0tBR0VDT05GSUdbb3BlbmdsXSA9ICItLWVuYWJsZS1vcGVuZ2wsLS1kaXNhYmxlLW9wZW5nbCxsaWJlcG94eSIKIFBBQ0tBR0VDT05GSUdbZ2x4XSA9ICItLWVuYWJsZS1nbHgsLS1kaXNhYmxlLWdseCwsbGliZ2wiCi1QQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi0tZW5hYmxlLXdheWxhbmQtYmFja2VuZCwtLWRpc2FibGUtd2F5bGFuZC1iYWNrZW5kLHdheWxhbmQgbGlieGtiY29tbW9uIHZpcnR1YWwvbWVzYSB3YXlsYW5kLW5hdGl2ZSIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLS1lbmFibGUtd2F5bGFuZC1iYWNrZW5kLC0tZGlzYWJsZS13YXlsYW5kLWJhY2tlbmQsd2F5bGFuZCB3YXlsYW5kLXByb3RvY29scyBsaWJ4a2Jjb21tb24gdmlydHVhbC9tZXNhIHdheWxhbmQtbmF0aXZlIgogCiBkb19pbnN0YWxsX2FwcGVuZCgpIHsKIAltdiAke0R9JHtiaW5kaXJ9L2d0ay11cGRhdGUtaWNvbi1jYWNoZSAke0R9JHtiaW5kaXJ9L2d0ay11cGRhdGUtaWNvbi1jYWNoZS0zLjAKQEAgLTYxLDEwICs2OSw2IEBACiAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vaWNvbnMvaGljb2xvci8qL2FwcHMvZ3RrMy1kZW1vKi5wbmcgXAogICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2ljb25zL2hpY29sb3IvKi9hcHBzL2d0azMtd2lkZ2V0LWZhY3RvcnkqLnBuZyIKIAotIyBUaGUgZGVtbyB1c2VzIFBORyBmaWxlcyBhbmQgbWltZSB0eXBlIHNuaWZmaW5nLCBzbyBlbnN1cmUgdGhhdCB0aGVzZQotIyBkZXBlbmRlbmNpZXMgYXJlIHByZXNlbnQuCi1SREVQRU5EU18ke1BOfS1kZW1vICs9ICJnZGstcGl4YnVmLWxvYWRlci1wbmcgc2hhcmVkLW1pbWUtaW5mbyIKLQogRklMRVNfJHtQTn1fYXBwZW5kID0gIiAke2JpbmRpcn0vZ3RrLXVwZGF0ZS1pY29uLWNhY2hlLTMuMCBcCiAgICAgICAgICAgICAgICAke2JpbmRpcn0vZ3RrLXF1ZXJ5LWltbW9kdWxlcy0zLjAgXAogICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2d0ay1sYXVuY2ggXApAQCAtNzUsNiArNzksNyBAQAogRklMRVNfJHtQTn0tZGV2ICs9ICIgXAogICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2d0ay0zLjAvZ3RrYnVpbGRlci5ybmcgXAogICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2d0ay0zLjAvaW5jbHVkZSBcCisgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ2V0dGV4dC9pdHMgXAogICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZ3RrLTMuMC9pbmNsdWRlIFwKICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2d0ay0zLjAvJHtMSUJWfS9sb2FkZXJzLyoubGEgXAogICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZ3RrLTMuMC8ke0xJQlZ9L2ltbW9kdWxlcy8qLmxhIFwKQEAgLTg0LDkgKzg5LDIyIEBACiAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9ndGstYnVpbGRlci1jb252ZXJ0IFwKICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2d0ay1lbmNvZGUtc3ltYm9saWMtc3ZnIFwKICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2d0ay1idWlsZGVyLXRvb2wgXAorICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vZ3RrLXF1ZXJ5LXNldHRpbmdzIFwKICAgICAgICAgICAgICAgICAgICAgIgogCi1SUkVDT01NRU5EU18ke1BOfSA9ICJhZHdhaXRhLWljb24tdGhlbWUtc3ltYm9saWMiCitHVEtCQVNFX1JSRUNPTU1FTkRTID89ICJsaWJlcmF0aW9uLWZvbnRzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGdkay1waXhidWYtbG9hZGVyLXBuZyBcCisgICAgICAgICAgICAgICAgICAgICAgICBnZGstcGl4YnVmLWxvYWRlci1qcGVnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGdkay1waXhidWYtbG9hZGVyLWdpZiBcCisgICAgICAgICAgICAgICAgICAgICAgICBnZGstcGl4YnVmLWxvYWRlci14cG0gXAorICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkLW1pbWUtaW5mbyBcCisgICAgICAgICAgICAgICAgICAgICAgICBhZHdhaXRhLWljb24tdGhlbWUtc3ltYm9saWMgXAorICAgICAgICAgICAgICAgICAgICAgICAgIgorR1RLR0xJQkNfUlJFQ09NTUVORFMgPz0gIiR7R1RLQkFTRV9SUkVDT01NRU5EU30gZ2xpYmMtZ2NvbnYtaXNvODg1OS0xIgorCitSUkVDT01NRU5EU18ke1BOfSA9ICIke0dUS0JBU0VfUlJFQ09NTUVORFN9IgorUlJFQ09NTUVORFNfJHtQTn1fbGliYy1nbGliYyA9ICIke0dUS0dMSUJDX1JSRUNPTU1FTkRTfSIKK1JERVBFTkRTXyR7UE59LWRldiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlBBQ0tBR0VDT05GSUciLCAid2F5bGFuZCIsICJ3YXlsYW5kLXByb3RvY29scyIsICIiLCBkKX0iCiAKIFBBQ0tBR0VTX0RZTkFNSUMgKz0gIl5ndGszLWltbW9kdWxlLS4qIF5ndGszLXByaW50YmFja2VuZC0uKiIKIApAQCAtMTEwLDQgKzEyOCwzIEBACiAgICAgaWYgKGQuZ2V0VmFyKCdERUJJQU5fTkFNRVMnLCBUcnVlKSk6CiAgICAgICAgIGQuc2V0VmFyKGQuZXhwYW5kKCdQS0dfJHtQTn0nKSwgJyR7TUxQUkVGSVh9bGliZ3RrLTMuMCcpCiB9Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAxLUhhcmRjb2RlZC1saWJ0b29sLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLzAwMDEtSGFyZGNvZGVkLWxpYnRvb2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGJkYTFmMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAxLUhhcmRjb2RlZC1saWJ0b29sLnBhdGNoCkBAIC0wLDAgKzEsNDcgQEAKK0Zyb20gNWE3M2E1YjkyNTY2ZTMxNGJiYzhhMWJkNDBmMWVjMjA0ODM3YzExMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitEYXRlOiBUdWUsIDIxIEp1biAyMDE2IDE0OjUzOjU2ICswMzAwCitTdWJqZWN0OiBbUEFUQ0ggMS80XSBIYXJkY29kZWQgbGlidG9vbAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBNYXJrbyBMaW5kcXZpc3QgPGNhemZpNzRAZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDYgKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggMjNkMzA3Ny4uYjY5MzFkNiAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNjEwLDcgKzYxMCw3IEBAIEFDX01TR19DSEVDS0lORyhbd2hldGhlciB0byB3cml0ZSBkZXBlbmRlbmNpZXMgaW50byAucGMgZmlsZXNdKQorIGNhc2UgJGVuYWJsZV9leHBsaWNpdF9kZXBzIGluCisgICBhdXRvKQorICAgICBleHBvcnQgU0VECistICAgIGRlcGxpYnNfY2hlY2tfbWV0aG9kPWAoLi9saWJ0b29sIC0tY29uZmlnOyBlY2hvICdldmFsIGVjaG8gXCIkZGVwbGlic19jaGVja19tZXRob2RcIicpIHwgc2hgCisrICAgIGRlcGxpYnNfY2hlY2tfbWV0aG9kPWAoLi8kaG9zdF9hbGlhcy1saWJ0b29sIC0tY29uZmlnOyBlY2hvICdldmFsIGVjaG8gXCIkZGVwbGlic19jaGVja19tZXRob2RcIicpIHwgc2hgCisgICAgIGlmIHRlc3QgIngkZGVwbGlic19jaGVja19tZXRob2QiICE9IHhwYXNzX2FsbCB8fCB0ZXN0ICJ4JGVuYWJsZV9zdGF0aWMiID0geHllcyA7IHRoZW4KKyAgICAgICBlbmFibGVfZXhwbGljaXRfZGVwcz15ZXMKKyAgICAgZWxzZQorQEAgLTg3Niw3ICs4NzYsNyBAQCBlbHNlCisgICAgIGRubCBOb3cgd2UgY2hlY2sgdG8gc2VlIGlmIG91ciBsaWJ0b29sIHN1cHBvcnRzIHNoYXJlZCBsaWIgZGVwcworICAgICBkbmwgKGluIGEgcmF0aGVyIHVnbHkgd2F5IGV2ZW4pCisgICAgIGlmICRkeW53b3JrczsgdGhlbgorLSAgICAgICAgbW9kdWxlX2xpYnRvb2xfY29uZmlnPSIke0NPTkZJR19TSEVMTC0vYmluL3NofSAuL2xpYnRvb2wgLS1jb25maWciCisrICAgICAgICBtb2R1bGVfbGlidG9vbF9jb25maWc9IiR7Q09ORklHX1NIRUxMLS9iaW4vc2h9IC4vJGhvc3RfYWxpYXMtbGlidG9vbCAtLWNvbmZpZyIKKyAgICAgICAgIG1vZHVsZV9kZXBsaWJzX2NoZWNrPWAkbW9kdWxlX2xpYnRvb2xfY29uZmlnIHwgXAorICAgICAgICAgICAgIGdyZXAgJ15bW2Etel9dXSpjaGVja1tbYS16X11dKl9tZXRob2Q9W1snXCcnIl1dJyB8IFwKKyAgICAgICAgICAgICBzZWQgJ3MvLipbWydcJyciXV1cKC4qXClbWydcJyciXV0kL1wxLydgCitAQCAtMTYzMCw3ICsxNjMwLDcgQEAgQUNfU1VCU1QoR1RLX1BSSU5UX0JBQ0tFTkRTKQorICMgV2UgYXJlIHVzaW5nIGdtb2R1bGUtbm8tZXhwb3J0IG5vdywgYnV0IEknbSBsZWF2aW5nIHRoZSBzdHJpcHBpbmcKKyAjIGNvZGUgaW4gcGxhY2UgZm9yIG5vdywgc2luY2UgcGFuZ28gYW5kIGF0ayBzdGlsbCByZXF1aXJlIGdtb2R1bGUuCisgZXhwb3J0IFNFRAorLWV4cG9ydF9keW5hbWljPWAoLi9saWJ0b29sIC0tY29uZmlnOyBlY2hvIGV2YWwgZWNobyBcXCRleHBvcnRfZHluYW1pY19mbGFnX3NwZWMpIHwgc2hgCisrZXhwb3J0X2R5bmFtaWM9YCguLyRob3N0X2FsaWFzLWxpYnRvb2wgLS1jb25maWc7IGVjaG8gZXZhbCBlY2hvIFxcJGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYykgfCBzaGAKKyBpZiB0ZXN0IC1uICIkZXhwb3J0X2R5bmFtaWMiOyB0aGVuCisgICBHREtfREVQX0xJQlM9YGVjaG8gJEdES19ERVBfTElCUyB8IHNlZCAtZSAicy8kZXhwb3J0X2R5bmFtaWMvLyJgCisgICBHVEtfREVQX0xJQlM9YGVjaG8gJEdUS19ERVBfTElCUyB8IHNlZCAtZSAicy8kZXhwb3J0X2R5bmFtaWMvLyJgCistLSAKKzIuMS40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAxLVJlZG8tZm9jdXMtaGFuZGxpbmctaW4tdHJlZXZpZXctb25jZS1tb3JlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLzAwMDEtUmVkby1mb2N1cy1oYW5kbGluZy1pbi10cmVldmlldy1vbmNlLW1vcmUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTgxOWFkZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAxLVJlZG8tZm9jdXMtaGFuZGxpbmctaW4tdHJlZXZpZXctb25jZS1tb3JlLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgWzI5ZmFhMmRiXQorU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KKworCitGcm9tIDI5ZmFhMmRiNDRiMDRiOWNmN2Y0ZDk2ZTMyNjkxZjQyNDQ5MGM3MzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXR0aGlhcyBDbGFzZW4gPG1jbGFzZW5AcmVkaGF0LmNvbT4KK0RhdGU6IFN1biwgMTEgU2VwIDIwMTYgMTE6NDc6NTUgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gUmVkbyBmb2N1cyBoYW5kbGluZyBpbiB0cmVldmlldyBvbmNlIG1vcmUKKworVGhlIGZpeCBmb3IgYnVnIDc2NzQ2OCBoYWQgc29tZSB1bmludGVuZGVkIHNpZGUtZWZmZWN0cy4gVGhpcyBpcworYW4gYXR0ZW1wdCBhdCBkb2luZyB0aGUgc2FtZSBmaXggKGRvbid0IGdyYWIgZm9jdXMgd2hlbiB3ZSBhcmUKK2dyYWItc2hhZG93ZWQpLCB3aGlsZSBhdm9pZGluZyB0aGUgYnJlYWthZ2UsIGJ5IHVzaW5nIEdUSysncworaW50ZXJuYWwgdHJhY2tpbmcgZm9yIGdyYWItc2hhZG93ZWQtbmVzcy4KKworaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc3MDUwOAorLS0tCisgZ3RrL2d0a3RyZWV2aWV3LmMgfCAzICstLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2d0ay9ndGt0cmVldmlldy5jIGIvZ3RrL2d0a3RyZWV2aWV3LmMKK2luZGV4IGE3NDYzY2MuLjczZDM1NTcgMTAwNjQ0CistLS0gYS9ndGsvZ3RrdHJlZXZpZXcuYworKysrIGIvZ3RrL2d0a3RyZWV2aWV3LmMKK0BAIC0zMDUwLDExICszMDUwLDEwIEBAIHN0YXRpYyB2b2lkCisgZ3JhYl9mb2N1c19hbmRfdW5zZXRfZHJhd19rZXlmb2N1cyAoR3RrVHJlZVZpZXcgKnRyZWVfdmlldykKKyB7CisgICBHdGtXaWRnZXQgKndpZGdldCA9IEdUS19XSURHRVQgKHRyZWVfdmlldyk7CistICBHdGtXaWRnZXQgKmdyYWJfd2lkZ2V0ID0gZ3RrX2dyYWJfZ2V0X2N1cnJlbnQgKCk7CisgCisgICBpZiAoZ3RrX3dpZGdldF9nZXRfY2FuX2ZvY3VzICh3aWRnZXQpICYmCisgICAgICAgIWd0a193aWRnZXRfaGFzX2ZvY3VzICh3aWRnZXQpICYmCistICAgICAgKCFncmFiX3dpZGdldCB8fCBncmFiX3dpZGdldCA9PSB3aWRnZXQpKQorKyAgICAgICFfZ3RrX3dpZGdldF9nZXRfc2hhZG93ZWQgKHdpZGdldCkpCisgICAgIGd0a193aWRnZXRfZ3JhYl9mb2N1cyAod2lkZ2V0KTsKKyAKKyAgIHRyZWVfdmlldy0+cHJpdi0+ZHJhd19rZXlmb2N1cyA9IDA7CistLSAKKzIuOS4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAyLURvLW5vdC10cnktdG8taW5pdGlhbGl6ZS1HTC13aXRob3V0LWxpYkdMLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLzAwMDItRG8tbm90LXRyeS10by1pbml0aWFsaXplLUdMLXdpdGhvdXQtbGliR0wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTg5NzE2ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAyLURvLW5vdC10cnktdG8taW5pdGlhbGl6ZS1HTC13aXRob3V0LWxpYkdMLnBhdGNoCkBAIC0wLDAgKzEsNjAgQEAKK0Zyb20gZDYzYjkyNmY4YzhkOGI1YzlmOWVjMzNkMDc4Yjc3NWYwNDA5ZDg4YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitEYXRlOiBGcmksIDE2IE9jdCAyMDE1IDE2OjM1OjE2ICswMzAwCitTdWJqZWN0OiBbUEFUQ0ggMi80XSBEbyBub3QgdHJ5IHRvIGluaXRpYWxpemUgR0wgd2l0aG91dCBsaWJHTAorCitfZ2RrX3gxMV9zY3JlZW5fdXBkYXRlX3Zpc3VhbHNfZm9yX2dsKCkgd2lsbCBlbmQgdXAgY2FsbGluZyBlcG94eXMKK0dMWCBhcGkgd2hpY2ggd2lsbCBleGl0KCkgaWYgbGliR0wuc28uMSBpcyBub3QgcHJlc2VudC4gV2UgZG8gbm90Cit3YW50IHRoYXQgdG8gaGFwcGVuIGFuZCB3ZSBkb24ndCB3YW50IGV2ZXJ5IGFwcCB0byBoYXZlIHRvIHNldAorIkdES19HTD1kaXNhYmxlZCIgZW52aXJvbm1lbnQgdmFyaWFibGU6IHNvIHVzZSAjaWZkZWYgc2V0IGJhc2VkIG9uCitvcGVuZ2wgZGlzdHJvIGZlYXR1cmUuCisKK1Vwc3RyZWFtIGlzIG5vdCBpbnRlcmVzdGVkIGluIHRoZSBmaXggYXMgaXQgaXM6IEVpdGhlciBlcG94eSBzaG91bGQgYmUKK2ZpeGVkICh0byBub3QgZXhpdCkgb3IgR1RLKyBwb3NzaWJseSBjb3VsZCBkbyBzb21lIGFkZGl0aW9uYWwgcHJvYmluZworYmVmb3JlIGNhbGxpbmcgZXBveHkgQVBJcy4KKworVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQKK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgICAgICAgICAgICB8IDcgKysrKysrKworIGdkay94MTEvZ2RrdmlzdWFsLXgxMS5jIHwgNSArKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBiNjkzMWQ2Li5lMjdkYTQ5IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0zNDIsNiArMzQyLDEzIEBAIEFDX0FSR19FTkFCTEUobWlyLWJhY2tlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuYWJsZSB0aGUgTWlyIGdkayBiYWNrZW5kXSldLAorIAkJCSAgICAgIFtiYWNrZW5kX3NldD15ZXNdKQorIAorK0FDX0FSR19FTkFCTEUoZ2x4LAorKyAgICAgICAgICAgICAgW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1nbHhdLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtXaGVuIGVuYWJsZWQgR2RrIHdpbGwgdHJ5IHRvIGluaXRpYWxpemUgR0xYXSldKQorK0FTX0lGKFt0ZXN0ICJ4JGVuYWJsZV9nbHgiICE9ICJ4bm8iXSwgWworKyAgQUNfREVGSU5FKFtIQVZFX0dMWF0sIFtdLCBbR0xYIHdpbGwgYmUgYXZhaWxhYmxlIGF0IHJ1bnRpbWVdKQorK10pCisrCisgaWYgdGVzdCAteiAiJGJhY2tlbmRfc2V0IjsgdGhlbgorICAgaWYgdGVzdCAiJHBsYXRmb3JtX3dpbjMyIiA9IHllczsgdGhlbgorICAgICBlbmFibGVfd2luMzJfYmFja2VuZD15ZXMKK2RpZmYgLS1naXQgYS9nZGsveDExL2dka3Zpc3VhbC14MTEuYyBiL2dkay94MTEvZ2RrdmlzdWFsLXgxMS5jCitpbmRleCA4MTQ3OWQ4Li4zYzhjNWMwIDEwMDY0NAorLS0tIGEvZ2RrL3gxMS9nZGt2aXN1YWwteDExLmMKKysrKyBiL2dkay94MTEvZ2RrdmlzdWFsLXgxMS5jCitAQCAtMzA2LDcgKzMwNiwxMiBAQCBfZ2RrX3gxMV9zY3JlZW5faW5pdF92aXN1YWxzIChHZGtTY3JlZW4gKnNjcmVlbikKKyAgIC8qIElmIEdMIGlzIGF2YWlsYWJsZSB3ZSB3YW50IHRvIHBpY2sgYmV0dGVyIGRlZmF1bHQvcmdiYSB2aXN1YWxzLAorICAgICAgYXMgd2UgY2FyZSBhYm91dCBnbHggZGV0YWlscyBzdWNoIGFzIGFscGhhL2RlcHRoL3N0ZW5jaWwgZGVwdGgsCisgICAgICBzdGVyZW8gYW5kIGRvdWJsZSBidWZmZXJpbmcgKi8KKysgIC8qIHVwZGF0ZV92aXN1YWxzX2Zvcl9nbCgpIHdpbGwgZW5kIHVwIGNhbGxpbmcgZXBveHkgR0xYIGFwaSB3aGljaAorKyAgICAgd2lsbCBleGl0IGlmIGxpYmdsIGlzIG5vdCB0aGVyZTogc28gb25seSBkbyB0aGlzIGlmIHdlIGtub3cgR0wKKysgICAgIGlzIGF2YWlsYWJsZSAqLworKyNpZmRlZiBIQVZFX0dMWAorICAgX2dka194MTFfc2NyZWVuX3VwZGF0ZV92aXN1YWxzX2Zvcl9nbCAoc2NyZWVuKTsKKysjZW5kaWYKKyB9CisgCisgZ2ludAorLS0gCisyLjEuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMvMDAwMy1BZGQtZGlzYWJsZS1vcGVuZ2wtY29uZmlndXJlLW9wdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAzLUFkZC1kaXNhYmxlLW9wZW5nbC1jb25maWd1cmUtb3B0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5MTJjNDQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMvMDAwMy1BZGQtZGlzYWJsZS1vcGVuZ2wtY29uZmlndXJlLW9wdGlvbi5wYXRjaApAQCAtMCwwICsxLDk1NCBAQAorRnJvbSBhOGZhNTQ3ZmRjMTQxNmIzMzBhY2VkODA1ZjUzNDNhZDkxMjkzMmFlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK0RhdGU6IFR1ZSwgMjEgSnVuIDIwMTYgMTU6MTE6MzkgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSCAzLzRdIEFkZCAtLWRpc2FibGUtb3BlbmdsIGNvbmZpZ3VyZSBvcHRpb24KKworLS1kaXNhYmxlLW9wZW5nbCB3aWxsIHJlbW92ZSB0aGUgZGVwZW5kZW5jeSBvbiBsaWJlcG94eSBhbmQgb24gdGhlCitPcGVuR0wgQVBJcy4gVGhpcyBpcyB1c2VmdWwgZm9yIHRob3NlIHdobyB3YW50IHRvIGtlZXAgdXNpbmcgZ3RrKzMKK3dpdGhvdXQgdGhlICJvcGVuZ2wiIGRpc3RybyBmZWF0dXJlLgorCitHdGtHTEFyZWEgaXMgc3RpbGwgcGFydCBvZiB0aGUgQVBJIChpdCBqdXN0IGRvZXNuJ3Qgd29yaykgZXZlbiB3aGVuCitPcGVuR0wgaXMgZGlzYWJsZWQuIEdka1gxMUdMQ29udGV4dCB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBHdGsgQVBJCitjb21wbGV0ZWx5OiB0aGF0IG9iamVjdCBleHBvc2VzIEdMIEFQSSBlbGVtZW50cyBzbyBpdCBoYWQgdG8gYmUgYXQKK3RoZSB2ZXJ5IGxlYXN0IG1vZGlmaWVkLgorCitUaGUgcGF0Y2ggaXMgX25vdF8gZ3JlYXQgZnJvbSBhIG1haW50ZW5hbmNlIHBvaW50IG9mIHZpZXcgYW5kCittb2RpZnlpbmcgdGhlIGxpYnJhcnkgQVBJIGlzIGFsc28gYSBmYWlybHkgbmFzdHkgdGhpbmcgdG8gZG8uCitMb25nLXRlcm0gaXQgd291bGQgYmUgZ29vZCB0byBmaW5kIGFuIGFsdGVybmF0aXZlIHNvbHV0aW9uIHRvIHRoaXMKKyhtYXliZSBhIG5vLW9wIGJhY2tlbmQgZm9yIGxpYmVwb3h5PykKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtFdmlsIGV5ZSBleHBlY3RlZCBmcm9tIHVwc3RyZWFtXQorU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICB8IDEzICsrKysrKysrKysrLS0KKyBkZW1vcy9ndGstZGVtby9nbGFyZWEuYyAgICAgICAgICAgfCAxMyArKysrKysrKysrKysrCisgZG9jcy90b29scy9NYWtlZmlsZS5hbSAgICAgICAgICAgIHwgIDkgKysrKysrKy0tCisgZG9jcy90b29scy93aWRnZXRzLmMgICAgICAgICAgICAgIHwgIDQgKysrLQorIGdkay9nZGtkaXNwbGF5LmMgICAgICAgICAgICAgICAgICB8ICA0ICsrKy0KKyBnZGsvZ2RrZ2wuYyAgICAgICAgICAgICAgICAgICAgICAgfCAxMCArKysrKysrKysrCisgZ2RrL2dka2dsY29udGV4dC5jICAgICAgICAgICAgICAgIHwgIDYgKysrKysrCisgZ2RrL2dka3dpbmRvdy5jICAgICAgICAgICAgICAgICAgIHwgMTMgKysrKysrKysrKysrKworIGdkay94MTEvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICB8IDMwICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQorIGdkay94MTEvZ2RrZGlzcGxheS14MTEuYyAgICAgICAgICB8ICA2ICsrKysrLQorIGdkay94MTEvZ2Rrc2NyZWVuLXgxMS5jICAgICAgICAgICB8ICA1ICsrKysrCisgZ2RrL3gxMS9nZGt3aW5kb3cteDExLmMgICAgICAgICAgIHwgIDQgKysrKworIGdkay94MTEvZ2RreC1hdXRvY2xlYW51cHMuaCAgICAgICB8ICAyICsrCisgZ2RrL3gxMS9nZGt4LXdpdGgtZ2wtY29udGV4dC5oICAgIHwgNTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBnZGsveDExL2dka3gtd2l0aG91dC1nbC1jb250ZXh0LmggfCA1OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgZ2RrL3gxMS9nZGt4LmggICAgICAgICAgICAgICAgICAgIHwgNTkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBndGsvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgfCAgMyArLS0KKyBndGsvZ3RrZ2xhcmVhLmMgICAgICAgICAgICAgICAgICAgfCAyMCArKysrKysrKysrKysrKysrKysrLQorIGd0ay9pbnNwZWN0b3IvZ2VuZXJhbC5jICAgICAgICAgICB8ICA2ICsrKysrKworIHRlc3RzL01ha2VmaWxlLmFtICAgICAgICAgICAgICAgICB8IDEwICsrKysrKystLS0KKyB0ZXN0c3VpdGUvZ3RrL29iamVjdHMtZmluYWxpemUuYyAgfCAgMiArKworIDIxIGZpbGVzIGNoYW5nZWQsIDI2MCBpbnNlcnRpb25zKCspLCA3NiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggYTAxODI0ZS4uZGRlOWRjNSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMzQyLDYgKzM0MiwxNSBAQCBBQ19BUkdfRU5BQkxFKG1pci1iYWNrZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmFibGUgdGhlIE1pciBnZGsgYmFja2VuZF0pXSwKKyAJCQkgICAgICBbYmFja2VuZF9zZXQ9eWVzXSkKKyAKKytBQ19BUkdfRU5BQkxFKG9wZW5nbCwKKysgICAgICAgICAgICAgIFtBU19IRUxQX1NUUklORyhbLS1lbmFibGUtb3BlbmdsXSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbV2hlbiBlbmFibGVkLCBHdGsrIHdpbGwgdXNlIGxpYmVwb3h5IGFuZCBleHBvc2VzIEd0a0dMQXJlYSB3aWRnZXQgXSldKQorK0FTX0lGKFt0ZXN0ICJ4JGVuYWJsZV9vcGVuZ2wiICE9ICJ4bm8iXSwgWworKyAgQUNfREVGSU5FKFtIQVZFX09QRU5HTF0sIFsxXSwgW2xpYmVwb3h5IGFuZCBvcGVuZ2wgQVBJcyBhcmUgYXZhaWxhYmxlIGF0IGJ1aWxkdGltZV0pCisrICBFUE9YWV9QQUNLQUdFUz0iZXBveHkgPj0gZXBveHlfcmVxdWlyZWRfdmVyc2lvbiIKKytdKQorK0FNX0NPTkRJVElPTkFMKFtIQVZFX09QRU5HTF0sW3Rlc3QgIngkZW5hYmxlX29wZW5nbCIgIT0gInhubyJdKQorKworIEFDX0FSR19FTkFCTEUoZ2x4LAorICAgICAgICAgICAgICAgW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1nbHhdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtXaGVuIGVuYWJsZWQgR2RrIHdpbGwgdHJ5IHRvIGluaXRpYWxpemUgR0xYXSldKQorQEAgLTEzMzMsNyArMTM0Miw3IEBAIENGTEFHUz0iJHNhdmVkX2NmbGFncyIKKyBMREZMQUdTPSIkc2F2ZWRfbGRmbGFncyIKKyAKKyBHREtfUEFDS0FHRVM9IiRQQU5HT19QQUNLQUdFUyBnZGstcGl4YnVmLTIuMCA+PSBnZGtfcGl4YnVmX3JlcXVpcmVkX3ZlcnNpb24gY2Fpcm8gPj0gY2Fpcm9fcmVxdWlyZWRfdmVyc2lvbiBjYWlyby1nb2JqZWN0ID49IGNhaXJvX3JlcXVpcmVkX3ZlcnNpb24iCistR0RLX1BSSVZBVEVfUEFDS0FHRVM9IiRHREtfR0lPX1BBQ0tBR0UgJFhfUEFDS0FHRVMgJFdBWUxBTkRfUEFDS0FHRVMgJE1JUl9QQUNLQUdFUyAkY2Fpcm9fYmFja2VuZHMgZXBveHkgPj0gZXBveHlfcmVxdWlyZWRfdmVyc2lvbiIKKytHREtfUFJJVkFURV9QQUNLQUdFUz0iJEdES19HSU9fUEFDS0FHRSAkWF9QQUNLQUdFUyAkV0FZTEFORF9QQUNLQUdFUyAkTUlSX1BBQ0tBR0VTICRjYWlyb19iYWNrZW5kcyAkRVBPWFlfUEFDS0FHRVMiCisgCisgUEtHX0NIRUNLX01PRFVMRVMoR0RLX0RFUCwgJEdES19QQUNLQUdFUyAkR0RLX1BSSVZBVEVfUEFDS0FHRVMpCisgR0RLX0RFUF9MSUJTPSIkR0RLX0VYVFJBX0xJQlMgJEdES19ERVBfTElCUyAkTUFUSF9MSUIiCitAQCAtMTM2Nyw3ICsxMzc2LDcgQEAgZmkKKyBQS0dfQ0hFQ0tfTU9EVUxFUyhBVEssICRBVEtfUEFDS0FHRVMpCisgCisgR1RLX1BBQ0tBR0VTPSJhdGsgPj0gYXRrX3JlcXVpcmVkX3ZlcnNpb24gY2Fpcm8gPj0gY2Fpcm9fcmVxdWlyZWRfdmVyc2lvbiBjYWlyby1nb2JqZWN0ID49IGNhaXJvX3JlcXVpcmVkX3ZlcnNpb24gZ2RrLXBpeGJ1Zi0yLjAgPj0gZ2RrX3BpeGJ1Zl9yZXF1aXJlZF92ZXJzaW9uIGdpby0yLjAgPj0gZ2xpYl9yZXF1aXJlZF92ZXJzaW9uIgorLUdUS19QUklWQVRFX1BBQ0tBR0VTPSIkQVRLX1BBQ0tBR0VTICRXQVlMQU5EX1BBQ0tBR0VTICRNSVJfUEFDS0FHRVMgZXBveHkgPj0gZXBveHlfcmVxdWlyZWRfdmVyc2lvbiIKKytHVEtfUFJJVkFURV9QQUNLQUdFUz0iJEFUS19QQUNLQUdFUyAkV0FZTEFORF9QQUNLQUdFUyAkTUlSX1BBQ0tBR0VTICRFUE9YWV9QQUNLQUdFUyIKKyBpZiB0ZXN0ICJ4JGVuYWJsZV94MTFfYmFja2VuZCIgPSB4eWVzIC1vICJ4JGVuYWJsZV93YXlsYW5kX2JhY2tlbmQiID0geHllczsgdGhlbgorICAgR1RLX1BSSVZBVEVfUEFDS0FHRVM9IiRHVEtfUFJJVkFURV9QQUNLQUdFUyBwYW5nb2Z0MiIKKyBmaQorZGlmZiAtLWdpdCBhL2RlbW9zL2d0ay1kZW1vL2dsYXJlYS5jIGIvZGVtb3MvZ3RrLWRlbW8vZ2xhcmVhLmMKK2luZGV4IDNhYmE3MjkuLmM2Yzc5ZjcgMTAwNjQ0CistLS0gYS9kZW1vcy9ndGstZGVtby9nbGFyZWEuYworKysrIGIvZGVtb3MvZ3RrLWRlbW8vZ2xhcmVhLmMKK0BAIC01LDcgKzUsOSBAQAorIAorICNpbmNsdWRlIDxtYXRoLmg+CisgI2luY2x1ZGUgPGd0ay9ndGsuaD4KKysjaWYgSEFWRV9PUEVOR0wKKyAjaW5jbHVkZSA8ZXBveHkvZ2wuaD4KKysjZW5kaWYKKyAKKyBzdGF0aWMgR3RrV2lkZ2V0ICpkZW1vX3dpbmRvdyA9IE5VTEw7CisgCitAQCAtMjMsNiArMjUsOCBAQCBlbnVtIHsKKyAvKiBSb3RhdGlvbiBhbmdsZXMgb24gZWFjaCBheGlzICovCisgc3RhdGljIGZsb2F0IHJvdGF0aW9uX2FuZ2xlc1tOX0FYSVNdID0geyAwLjAgfTsKKyAKKysjaWZkZWYgSEFWRV9PUEVOR0wKKysKKyAvKiBUaGUgb2JqZWN0IHdlIGFyZSBkcmF3aW5nICovCisgc3RhdGljIGNvbnN0IEdMZmxvYXQgdmVydGV4X2RhdGFbXSA9IHsKKyAgIDAuZiwgICAwLjVmLCAgIDAuZiwgMS5mLAorQEAgLTIxMyw2ICsyMTcsNyBAQCBjb21wdXRlX212cCAoZmxvYXQgKnJlcywKKyBzdGF0aWMgR0x1aW50IHBvc2l0aW9uX2J1ZmZlcjsKKyBzdGF0aWMgR0x1aW50IHByb2dyYW07Cisgc3RhdGljIEdMdWludCBtdnBfbG9jYXRpb247CisrI2VuZGlmCisgCisgLyogV2UgbmVlZCB0byBzZXQgdXAgb3VyIHN0YXRlIHdoZW4gd2UgcmVhbGl6ZSB0aGUgR3RrR0xBcmVhIHdpZGdldCAqLworIHN0YXRpYyB2b2lkCitAQCAtMjIzLDggKzIyOCwxMCBAQCByZWFsaXplIChHdGtXaWRnZXQgKndpZGdldCkKKyAgIGlmIChndGtfZ2xfYXJlYV9nZXRfZXJyb3IgKEdUS19HTF9BUkVBICh3aWRnZXQpKSAhPSBOVUxMKQorICAgICByZXR1cm47CisgCisrI2lmZGVmIEhBVkVfT1BFTkdMCisgICBpbml0X2J1ZmZlcnMgKCZwb3NpdGlvbl9idWZmZXIsIE5VTEwpOworICAgaW5pdF9zaGFkZXJzICgmcHJvZ3JhbSwgJm12cF9sb2NhdGlvbik7CisrI2VuZGlmCisgfQorIAorIC8qIFdlIHNob3VsZCB0ZWFyIGRvd24gdGhlIHN0YXRlIHdoZW4gdW5yZWFsaXppbmcgKi8KK0BAIC0yMzYsMTAgKzI0MywxMyBAQCB1bnJlYWxpemUgKEd0a1dpZGdldCAqd2lkZ2V0KQorICAgaWYgKGd0a19nbF9hcmVhX2dldF9lcnJvciAoR1RLX0dMX0FSRUEgKHdpZGdldCkpICE9IE5VTEwpCisgICAgIHJldHVybjsKKyAKKysjaWZkZWYgSEFWRV9PUEVOR0wKKyAgIGdsRGVsZXRlQnVmZmVycyAoMSwgJnBvc2l0aW9uX2J1ZmZlcik7CisgICBnbERlbGV0ZVByb2dyYW0gKHByb2dyYW0pOworKyNlbmRpZgorIH0KKyAKKysjaWZkZWYgSEFWRV9PUEVOR0wKKyBzdGF0aWMgdm9pZAorIGRyYXdfdHJpYW5nbGUgKHZvaWQpCisgeworQEAgLTI3Miw2ICsyODIsNyBAQCBkcmF3X3RyaWFuZ2xlICh2b2lkKQorICAgZ2xCaW5kQnVmZmVyIChHTF9BUlJBWV9CVUZGRVIsIDApOworICAgZ2xVc2VQcm9ncmFtICgwKTsKKyB9CisrI2VuZGlmCisgCisgc3RhdGljIGdib29sZWFuCisgcmVuZGVyIChHdGtHTEFyZWEgICAgKmFyZWEsCitAQCAtMjgwLDYgKzI5MSw3IEBAIHJlbmRlciAoR3RrR0xBcmVhICAgICphcmVhLAorICAgaWYgKGd0a19nbF9hcmVhX2dldF9lcnJvciAoYXJlYSkgIT0gTlVMTCkKKyAgICAgcmV0dXJuIEZBTFNFOworIAorKyNpZmRlZiBIQVZFX09QRU5HTAorICAgLyogQ2xlYXIgdGhlIHZpZXdwb3J0ICovCisgICBnbENsZWFyQ29sb3IgKDAuNSwgMC41LCAwLjUsIDEuMCk7CisgICBnbENsZWFyIChHTF9DT0xPUl9CVUZGRVJfQklUKTsKK0BAIC0yODksNiArMzAxLDcgQEAgcmVuZGVyIChHdGtHTEFyZWEgICAgKmFyZWEsCisgCisgICAvKiBGbHVzaCB0aGUgY29udGVudHMgb2YgdGhlIHBpcGVsaW5lICovCisgICBnbEZsdXNoICgpOworKyNlbmRpZgorIAorICAgcmV0dXJuIFRSVUU7CisgfQorZGlmZiAtLWdpdCBhL2RvY3MvdG9vbHMvTWFrZWZpbGUuYW0gYi9kb2NzL3Rvb2xzL01ha2VmaWxlLmFtCitpbmRleCA2YTZkNzBmLi41Y2RmMzEyIDEwMDY0NAorLS0tIGEvZG9jcy90b29scy9NYWtlZmlsZS5hbQorKysrIGIvZG9jcy90b29scy9NYWtlZmlsZS5hbQorQEAgLTksMTMgKzksMTggQEAgQU1fQ1BQRkxBR1MgPSBcCisgCSQoR1RLX0RFQlVHX0ZMQUdTKQkJXAorIAkkKEdUS19ERVBfQ0ZMQUdTKQorIAorK2lmIEhBVkVfT1BFTkdMCisrR0VBUlNfTERBREQgPSAkKHRvcF9idWlsZGRpcikvdGVzdHMvZ3RrZ2VhcnMubworK2VuZGlmCisrCisgREVQUyA9IFwKKy0JJCh0b3BfYnVpbGRkaXIpL2d0ay9saWJndGstMy5sYQorKwkkKHRvcF9idWlsZGRpcikvZ3RrL2xpYmd0ay0zLmxhCVwKKysJJChHRUFSU19MREFERCkKKyAKKyBMREFERFMgPSBcCisgCSQodG9wX2J1aWxkZGlyKS9ndGsvbGliZ3RrLTMubGEJXAorIAkkKHRvcF9idWlsZGRpcikvZ2RrL2xpYmdkay0zLmxhCVwKKy0JJCh0b3BfYnVpbGRkaXIpL3Rlc3RzL2d0a2dlYXJzLm8gXAorKwkkKEdFQVJTX0xEQUREKQkJCVwKKyAJJChHVEtfREVQX0xJQlMpCQkJXAorIAkkKEdES19ERVBfTElCUykJCQlcCisgCS1sbQorZGlmZiAtLWdpdCBhL2RvY3MvdG9vbHMvd2lkZ2V0cy5jIGIvZG9jcy90b29scy93aWRnZXRzLmMKK2luZGV4IDkzMmRhZjEuLjU0MjM5ZDYgMTAwNjQ0CistLS0gYS9kb2NzL3Rvb2xzL3dpZGdldHMuYworKysrIGIvZG9jcy90b29scy93aWRnZXRzLmMKK0BAIC0xNTI2LDkgKzE1MjYsMTEgQEAgY3JlYXRlX2dsX2FyZWEgKHZvaWQpCisgICB3aWRnZXQgPSBndGtfZnJhbWVfbmV3IChOVUxMKTsKKyAgIGd0a19mcmFtZV9zZXRfc2hhZG93X3R5cGUgKEdUS19GUkFNRSAod2lkZ2V0KSwgR1RLX1NIQURPV19JTik7CisgCisrI2lmZGVmIEhBVkVfT1BFTkdMCisgICBnZWFycyA9IGd0a19nZWFyc19uZXcgKCk7CisgICBndGtfY29udGFpbmVyX2FkZCAoR1RLX0NPTlRBSU5FUiAod2lkZ2V0KSwgZ2VhcnMpOworLSAKKysjZW5kaWYKKysKKyAgIGluZm8gPSBuZXdfd2lkZ2V0X2luZm8gKCJnbGFyZWEiLCB3aWRnZXQsIE1FRElVTSk7CisgCisgICByZXR1cm4gaW5mbzsKK2RpZmYgLS1naXQgYS9nZGsvZ2RrZGlzcGxheS5jIGIvZ2RrL2dka2Rpc3BsYXkuYworaW5kZXggNjE1MGVmNy4uMjIyMzYyOSAxMDA2NDQKKy0tLSBhL2dkay9nZGtkaXNwbGF5LmMKKysrKyBiL2dkay9nZGtkaXNwbGF5LmMKK0BAIC0yMzYwLDcgKzIzNjAsOSBAQCBnYm9vbGVhbgorIGdka19kaXNwbGF5X21ha2VfZ2xfY29udGV4dF9jdXJyZW50IChHZGtEaXNwbGF5ICAgKmRpc3BsYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdka0dMQ29udGV4dCAqY29udGV4dCkKKyB7CistICByZXR1cm4gR0RLX0RJU1BMQVlfR0VUX0NMQVNTIChkaXNwbGF5KS0+bWFrZV9nbF9jb250ZXh0X2N1cnJlbnQgKGRpc3BsYXksIGNvbnRleHQpOworKyAgaWYgKEdES19ESVNQTEFZX0dFVF9DTEFTUyAoZGlzcGxheSktPm1ha2VfZ2xfY29udGV4dF9jdXJyZW50KQorKyAgICByZXR1cm4gR0RLX0RJU1BMQVlfR0VUX0NMQVNTIChkaXNwbGF5KS0+bWFrZV9nbF9jb250ZXh0X2N1cnJlbnQgKGRpc3BsYXksIGNvbnRleHQpOworKyAgcmV0dXJuIEZBTFNFOworIH0KKyAKKyBHZGtSZW5kZXJpbmdNb2RlCitkaWZmIC0tZ2l0IGEvZ2RrL2dka2dsLmMgYi9nZGsvZ2RrZ2wuYworaW5kZXggZThiYTc3MC4uYmE3Yzg0YiAxMDA2NDQKKy0tLSBhL2dkay9nZGtnbC5jCisrKysgYi9nZGsvZ2RrZ2wuYworQEAgLTIyLDcgKzIyLDkgQEAKKyAKKyAjaW5jbHVkZSAiZ2RraW50ZXJuYWxzLmgiCisgCisrI2lmZGVmIEhBVkVfT1BFTkdMCisgI2luY2x1ZGUgPGVwb3h5L2dsLmg+CisrI2VuZGlmCisgI2luY2x1ZGUgPG1hdGguaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgCitAQCAtMzYsNiArMzgsNyBAQCBnZGtfY2Fpcm9fc3VyZmFjZV9tYXJrX2FzX2RpcmVjdCAoY2Fpcm9fc3VyZmFjZV90ICpzdXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX29iamVjdF9yZWYgKHdpbmRvdyksICBnX29iamVjdF91bnJlZik7CisgfQorIAorKyNpZmRlZiBIQVZFX09QRU5HTAorIHN0YXRpYyBjb25zdCBjaGFyICoKKyBnZXRfdmVydGV4X3R5cGVfbmFtZSAoaW50IHR5cGUpCisgeworQEAgLTI1NCw2ICsyNTcsNyBAQCB1c2VfdGV4dHVyZV9yZWN0X3Byb2dyYW0gKEdka0dMQ29udGV4dFBhaW50RGF0YSAqcGFpbnRfZGF0YSkKKyAgICAgICBnbFVzZVByb2dyYW0gKHBhaW50X2RhdGEtPmN1cnJlbnRfcHJvZ3JhbS0+cHJvZ3JhbSk7CisgICAgIH0KKyB9CisrI2VuZGlmCisgCisgdm9pZAorIGdka19nbF90ZXh0dXJlX3F1YWRzIChHZGtHTENvbnRleHQgKnBhaW50X2NvbnRleHQsCitAQCAtMjYxLDYgKzI2NSw3IEBAIGdka19nbF90ZXh0dXJlX3F1YWRzIChHZGtHTENvbnRleHQgKnBhaW50X2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgIGludCBuX3F1YWRzLAorICAgICAgICAgICAgICAgICAgICAgICBHZGtUZXh0dXJlZFF1YWQgKnF1YWRzKQorIHsKKysjaWZkZWYgSEFWRV9PUEVOR0wKKyAgIEdka0dMQ29udGV4dFBhaW50RGF0YSAqcGFpbnRfZGF0YSAgPSBnZGtfZ2xfY29udGV4dF9nZXRfcGFpbnRfZGF0YSAocGFpbnRfY29udGV4dCk7CisgICBHZGtHTENvbnRleHRQcm9ncmFtICpwcm9ncmFtOworICAgR2RrV2luZG93ICp3aW5kb3cgPSBnZGtfZ2xfY29udGV4dF9nZXRfd2luZG93IChwYWludF9jb250ZXh0KTsKK0BAIC0zMjQsNiArMzI5LDcgQEAgZ2RrX2dsX3RleHR1cmVfcXVhZHMgKEdka0dMQ29udGV4dCAqcGFpbnRfY29udGV4dCwKKyAKKyAgIGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5IChwcm9ncmFtLT5wb3NpdGlvbl9sb2NhdGlvbik7CisgICBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSAocHJvZ3JhbS0+dXZfbG9jYXRpb24pOworKyNlbmRpZgorIH0KKyAKKyAvKiB4LHksd2lkdGgsaGVpZ2h0IGRlc2NyaWJlcyBhIHJlY3RhbmdsZSBpbiB0aGUgZ2wgcmVuZGVyIGJ1ZmZlcgorQEAgLTM3Miw2ICszNzgsNyBAQCBnZGtfY2Fpcm9fZHJhd19mcm9tX2dsIChjYWlyb190ICAgICAgICAgICAgICAqY3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICBoZWlnaHQpCisgeworKyNpZmRlZiBIQVZFX09QRU5HTAorICAgR2RrR0xDb250ZXh0ICpwYWludF9jb250ZXh0OworICAgY2Fpcm9fc3VyZmFjZV90ICppbWFnZTsKKyAgIGNhaXJvX21hdHJpeF90IG1hdHJpeDsKK0BAIC02OTIsNiArNjk5LDcgQEAgZ2RrX2NhaXJvX2RyYXdfZnJvbV9nbCAoY2Fpcm9fdCAgICAgICAgICAgICAgKmNyLAorICAgaWYgKGNsaXBfcmVnaW9uKQorICAgICBjYWlyb19yZWdpb25fZGVzdHJveSAoY2xpcF9yZWdpb24pOworIAorKyNlbmRpZgorIH0KKyAKKyAvKiBUaGlzIGlzIGFsd2F5cyBjYWxsZWQgd2l0aCB0aGUgcGFpbnQgY29udGV4dCBjdXJyZW50ICovCitAQCAtNjk5LDYgKzcwNyw3IEBAIHZvaWQKKyBnZGtfZ2xfdGV4dHVyZV9mcm9tX3N1cmZhY2UgKGNhaXJvX3N1cmZhY2VfdCAqc3VyZmFjZSwKKyAJCQkgICAgIGNhaXJvX3JlZ2lvbl90ICAqcmVnaW9uKQorIHsKKysjaWZkZWYgSEFWRV9PUEVOR0wKKyAgIEdka0dMQ29udGV4dCAqcGFpbnRfY29udGV4dDsKKyAgIGNhaXJvX3N1cmZhY2VfdCAqaW1hZ2U7CisgICBkb3VibGUgZGV2aWNlX3hfb2Zmc2V0LCBkZXZpY2VfeV9vZmZzZXQ7CitAQCAtNzk5LDQgKzgwOCw1IEBAIGdka19nbF90ZXh0dXJlX2Zyb21fc3VyZmFjZSAoY2Fpcm9fc3VyZmFjZV90ICpzdXJmYWNlLAorIAorICAgZ2xEaXNhYmxlIChHTF9TQ0lTU09SX1RFU1QpOworICAgZ2xEZWxldGVUZXh0dXJlcyAoMSwgJnRleHR1cmVfaWQpOworKyNlbmRpZgorIH0KK2RpZmYgLS1naXQgYS9nZGsvZ2RrZ2xjb250ZXh0LmMgYi9nZGsvZ2RrZ2xjb250ZXh0LmMKK2luZGV4IDAwYTMzZWIuLmJkOGE3OTMgMTAwNjQ0CistLS0gYS9nZGsvZ2RrZ2xjb250ZXh0LmMKKysrKyBiL2dkay9nZGtnbGNvbnRleHQuYworQEAgLTg1LDcgKzg1LDkgQEAKKyAjaW5jbHVkZSAiZ2RraW50bC5oIgorICNpbmNsdWRlICJnZGstcHJpdmF0ZS5oIgorIAorKyNpZmRlZiBIQVZFX09QRU5HTAorICNpbmNsdWRlIDxlcG94eS9nbC5oPgorKyNlbmRpZgorIAorIHR5cGVkZWYgc3RydWN0IHsKKyAgIEdka0Rpc3BsYXkgKmRpc3BsYXk7CitAQCAtMjM5LDYgKzI0MSw3IEBAIGdka19nbF9jb250ZXh0X3VwbG9hZF90ZXh0dXJlIChHZGtHTENvbnRleHQgICAgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAgIHRleHR1cmVfdGFyZ2V0KQorIHsKKysjaWZkZWYgSEFWRV9PUEVOR0wKKyAgIGdfcmV0dXJuX2lmX2ZhaWwgKEdES19JU19HTF9DT05URVhUIChjb250ZXh0KSk7CisgCisgICBnbFBpeGVsU3RvcmVpIChHTF9VTlBBQ0tfQUxJR05NRU5ULCA0KTsKK0BAIC0yNDYsNiArMjQ5LDcgQEAgZ2RrX2dsX2NvbnRleHRfdXBsb2FkX3RleHR1cmUgKEdka0dMQ29udGV4dCAgICAqY29udGV4dCwKKyAgIGdsVGV4SW1hZ2UyRCAodGV4dHVyZV90YXJnZXQsIDAsIEdMX1JHQkEsIHdpZHRoLCBoZWlnaHQsIDAsIEdMX0JHUkEsIEdMX1VOU0lHTkVEX0lOVF84XzhfOF84X1JFViwKKyAgICAgICAgICAgICAgICAgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YSAoaW1hZ2Vfc3VyZmFjZSkpOworICAgZ2xQaXhlbFN0b3JlaSAoR0xfVU5QQUNLX1JPV19MRU5HVEgsIDApOworKyNlbmRpZgorIH0KKyAKKyBzdGF0aWMgdm9pZAorQEAgLTYzNSw2ICs2MzksNyBAQCBnZGtfZ2xfY29udGV4dF9yZWFsaXplIChHZGtHTENvbnRleHQgICpjb250ZXh0LAorIHN0YXRpYyB2b2lkCisgZ2RrX2dsX2NvbnRleHRfY2hlY2tfZXh0ZW5zaW9ucyAoR2RrR0xDb250ZXh0ICpjb250ZXh0KQorIHsKKysjaWZkZWYgSEFWRV9PUEVOR0wKKyAgIEdka0dMQ29udGV4dFByaXZhdGUgKnByaXYgPSBnZGtfZ2xfY29udGV4dF9nZXRfaW5zdGFuY2VfcHJpdmF0ZSAoY29udGV4dCk7CisgICBnYm9vbGVhbiBoYXNfbnBvdCwgaGFzX3RleHR1cmVfcmVjdGFuZ2xlOworIAorQEAgLTY3Nyw2ICs2ODIsNyBAQCBnZGtfZ2xfY29udGV4dF9jaGVja19leHRlbnNpb25zIChHZGtHTENvbnRleHQgKmNvbnRleHQpCisgICAgICAgICAgICAgICAgICAgICAgICBwcml2LT51c2VfdGV4dHVyZV9yZWN0YW5nbGUgPyAieWVzIiA6ICJubyIpKTsKKyAKKyAgIHByaXYtPmV4dGVuc2lvbnNfY2hlY2tlZCA9IFRSVUU7CisrI2VuZGlmCisgfQorIAorIC8qKgorZGlmZiAtLWdpdCBhL2dkay9nZGt3aW5kb3cuYyBiL2dkay9nZGt3aW5kb3cuYworaW5kZXggNjZlYmI5ZC4uNzRhMGMzYSAxMDA2NDQKKy0tLSBhL2dkay9nZGt3aW5kb3cuYworKysrIGIvZ2RrL2dka3dpbmRvdy5jCitAQCAtNDQsNyArNDQsOSBAQAorIAorICNpbmNsdWRlIDxtYXRoLmg+CisgCisrI2lmZGVmIEhBVkVfT1BFTkdMCisgI2luY2x1ZGUgPGVwb3h5L2dsLmg+CisrI2VuZGlmCisgCisgLyogZm9yIHRoZSB1c2Ugb2Ygcm91bmQoKSAqLworICNpbmNsdWRlICJmYWxsYmFjay1jODkuYyIKK0BAIC0yNzU5LDYgKzI3NjEsMTMgQEAgZ2RrX3dpbmRvd19nZXRfcGFpbnRfZ2xfY29udGV4dCAoR2RrV2luZG93ICAqd2luZG93LAorIHsKKyAgIEdFcnJvciAqaW50ZXJuYWxfZXJyb3IgPSBOVUxMOworIAorKyNpZm5kZWYgSEFWRV9PUEVOR0wKKysgIGdfc2V0X2Vycm9yX2xpdGVyYWwgKGVycm9yLCBHREtfR0xfRVJST1IsCisrICAgICAgICAgICAgICAgICAgICAgICBHREtfR0xfRVJST1JfTk9UX0FWQUlMQUJMRSwKKysgICAgICAgICAgICAgICAgICAgICAgIF8oIkdMIHN1cHBvcnQgZGlzYWJsZWQgd2l0aCAtLWRpc2FibGUtb3BlbmdsIikpOworKyAgcmV0dXJuIE5VTEw7CisrI2VuZGlmCisrCisgICBpZiAoX2dka19nbF9mbGFncyAmIEdES19HTF9ESVNBQkxFKQorICAgICB7CisgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbCAoZXJyb3IsIEdES19HTF9FUlJPUiwKK0BAIC0yOTU1LDYgKzI5NjQsNyBAQCBnZGtfd2luZG93X2JlZ2luX3BhaW50X3JlZ2lvbiAoR2RrV2luZG93ICAgICAgICp3aW5kb3csCisgICAgICAgICB9CisgICAgICAgZWxzZQorICAgICAgICAgeworKyNpZmRlZiBIQVZFX09QRU5HTAorIAkgIGdka19nbF9jb250ZXh0X21ha2VfY3VycmVudCAoY29udGV4dCk7CisgICAgICAgICAgIC8qIFdpdGggZ2wgd2UgYWx3YXlzIG5lZWQgYSBzdXJmYWNlIHRvIGNvbWJpbmUgdGhlIGdsCisgICAgICAgICAgICAgIGRyYXdpbmcgd2l0aCB0aGUgbmF0aXZlIGRyYXdpbmcuICovCitAQCAtMjk2OSw2ICsyOTc5LDcgQEAgZ2RrX3dpbmRvd19iZWdpbl9wYWludF9yZWdpb24gKEdka1dpbmRvdyAgICAgICAqd2luZG93LAorICAgICAgICAgICBnbEJsZW5kRnVuYyAoR0xfT05FLCBHTF9PTkVfTUlOVVNfU1JDX0FMUEhBKTsKKyAKKyAgICAgICAgICAgZ2xWaWV3cG9ydCAoMCwgMCwgd3csIHdoKTsKKysjZW5kaWYKKyAgICAgICAgIH0KKyAgICAgfQorIAorQEAgLTMxMTcsNiArMzEyOCw3IEBAIGdka193aW5kb3dfZW5kX3BhaW50IChHZGtXaW5kb3cgKndpbmRvdykKKyAKKyAgICAgICAgICAgZ2RrX2dsX2NvbnRleHRfbWFrZV9jdXJyZW50ICh3aW5kb3ctPmdsX3BhaW50X2NvbnRleHQpOworIAorKyNpZmRlZiBIQVZFX09QRU5HTAorICAgICAgICAgICBpZiAoIWNhaXJvX3JlZ2lvbl9pc19lbXB0eSAob3BhcXVlX3JlZ2lvbikpCisgICAgICAgICAgICAgZ2RrX2dsX3RleHR1cmVfZnJvbV9zdXJmYWNlICh3aW5kb3ctPmN1cnJlbnRfcGFpbnQuc3VyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYXF1ZV9yZWdpb24pOworQEAgLTMxMjcsNiArMzEzOSw3IEBAIGdka193aW5kb3dfZW5kX3BhaW50IChHZGtXaW5kb3cgKndpbmRvdykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LT5jdXJyZW50X3BhaW50Lm5lZWRfYmxlbmRfcmVnaW9uKTsKKyAgICAgICAgICAgICAgIGdsRGlzYWJsZShHTF9CTEVORCk7CisgICAgICAgICAgICAgfQorKyNlbmRpZgorIAorICAgICAgICAgICBjYWlyb19yZWdpb25fZGVzdHJveSAob3BhcXVlX3JlZ2lvbik7CisgCitkaWZmIC0tZ2l0IGEvZ2RrL3gxMS9NYWtlZmlsZS5hbSBiL2dkay94MTEvTWFrZWZpbGUuYW0KK2luZGV4IGM0ODhhMzEuLjRjZTNjMDcgMTAwNjQ0CistLS0gYS9nZGsveDExL01ha2VmaWxlLmFtCisrKysgYi9nZGsveDExL01ha2VmaWxlLmFtCitAQCAtMzksOCArMzksNiBAQCBsaWJnZGtfeDExX2xhX1NPVVJDRVMgPSAJXAorIAlnZGtldmVudHRyYW5zbGF0b3IuYwlcCisgCWdka2V2ZW50dHJhbnNsYXRvci5oCVwKKyAJZ2RrZ2VvbWV0cnkteDExLmMgIAlcCistCWdka2dsY29udGV4dC14MTEuYwlcCistCWdka2dsY29udGV4dC14MTEuaAlcCisgCWdka2tleXMteDExLmMJCVwKKyAJZ2RrbWFpbi14MTEuYwkJXAorIAlnZGtwcm9wZXJ0eS14MTEuYwlcCitAQCAtNTMsMTQgKzUxLDMyIEBAIGxpYmdka194MTFfbGFfU09VUkNFUyA9IAlcCisgCWdka3dpbmRvdy14MTEuaAkJXAorIAlnZGt4ZnRkZWZhdWx0cy5jCVwKKyAJZ2RreGlkLmMJCVwKKy0JZ2RreC5oCQkJXAorIAlnZGtwcml2YXRlLXgxMS5oCVwKKyAJeHNldHRpbmdzLWNsaWVudC5oCVwKKyAJeHNldHRpbmdzLWNsaWVudC5jCisgCisraWYgSEFWRV9PUEVOR0wKKytsaWJnZGtfeDExX2xhX1NPVVJDRVMgKz0gICAgICAgIFwKKysJZ2RrZ2xjb250ZXh0LXgxMS5jCVwKKysJZ2RrZ2xjb250ZXh0LXgxMS5oCisrZW5kaWYKKysKKyBsaWJnZGtpbmNsdWRlX0hFQURFUlMgPSAJXAorIAlnZGt4LmgKKyAKKytpZiBIQVZFX09QRU5HTAorK0dES1hfSEVBREVSID0gZ2RreC13aXRoLWdsLWNvbnRleHQuaAorK2Vsc2UKKytHREtYX0hFQURFUiA9IGdka3gtd2l0aG91dC1nbC1jb250ZXh0LmgKKytlbmRpZgorKworK0JVSUxUX1NPVVJDRVMgPSBnZGt4LmgKKysKKysuUEhPTlk6IGdka3guaAorK2dka3guaDoKKysJJChBTV9WX0dFTikgY2QgJChzcmNkaXIpIFwKKysJJiYgKGNtcCAtcyAkKEdES1hfSEVBREVSKSBnZGt4LmggfHwgY3AgJChHREtYX0hFQURFUikgZ2RreC5oICkKKysKKyBsaWJnZGt4MTFpbmNsdWRlX0hFQURFUlMgPSAJXAorIAlnZGt4LWF1dG9jbGVhbnVwcy5oCVwKKyAJZ2RreDExYXBwbGF1bmNoY29udGV4dC5oIFwKK0BAIC03NCw3ICs5MCw2IEBAIGxpYmdka3gxMWluY2x1ZGVfSEVBREVSUyA9IAlcCisgCWdka3gxMWRpc3BsYXkuaAkJXAorIAlnZGt4MTFkaXNwbGF5bWFuYWdlci5oCVwKKyAJZ2RreDExZG5kLmgJCVwKKy0JZ2RreDExZ2xjb250ZXh0LmgJXAorIAlnZGt4MTFrZXlzLmgJCVwKKyAJZ2RreDExcHJvcGVydHkuaAlcCisgCWdka3gxMXNjcmVlbi5oCQlcCitAQCAtODMsOSArOTgsMTYgQEAgbGliZ2RreDExaW5jbHVkZV9IRUFERVJTID0gCVwKKyAJZ2RreDExdmlzdWFsLmgJCVwKKyAJZ2RreDExd2luZG93LmgKKyAKKytpZiBIQVZFX09QRU5HTAorK2xpYmdka3gxMWluY2x1ZGVfSEVBREVSUyArPSBnZGt4MTFnbGNvbnRleHQuaAorK2VuZGlmCisrCisgIyBXZSBuZWVkIHRvIGluY2x1ZGUgYWxsIHRoZXNlIEMgZmlsZXMgaGVyZSBzaW5jZSB0aGUgY29uZGl0aW9uYWxzCisgIyBkb24ndCBzZWVtIHRvIGJlIGNvcnJlY3RseSBleHBhbmRlZCBmb3IgdGhlIGRpc3QgZmlsZXMuCisgRVhUUkFfRElTVCArPSAJCQlcCisrCWdka3guaAkJCVwKKyAJZ2Rrc2V0dGluZ3MuYworIAorK01BSU5UQUlORVJDTEVBTkZJTEVTID0gZ2RreC5oCisrCisgLWluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9naXQubWsKK2RpZmYgLS1naXQgYS9nZGsveDExL2dka2Rpc3BsYXkteDExLmMgYi9nZGsveDExL2dka2Rpc3BsYXkteDExLmMKK2luZGV4IGRlOTFjNjQuLjQyZDUwZjYgMTAwNjQ0CistLS0gYS9nZGsveDExL2dka2Rpc3BsYXkteDExLmMKKysrKyBiL2dkay94MTEvZ2RrZGlzcGxheS14MTEuYworQEAgLTM3LDcgKzM3LDkgQEAKKyAjaW5jbHVkZSAiZ2RrZGlzcGxheS14MTEuaCIKKyAjaW5jbHVkZSAiZ2RrcHJpdmF0ZS14MTEuaCIKKyAjaW5jbHVkZSAiZ2Rrc2NyZWVuLXgxMS5oIgorKyNpZmRlZiBIQVZFX09QRU5HTAorICNpbmNsdWRlICJnZGtnbGNvbnRleHQteDExLmgiCisrI2VuZGlmCisgI2luY2x1ZGUgImdkay1wcml2YXRlLmgiCisgCisgI2luY2x1ZGUgPGdsaWIuaD4KK0BAIC0yOTU5LDcgKzI5NjEsOSBAQCBnZGtfeDExX2Rpc3BsYXlfY2xhc3NfaW5pdCAoR2RrWDExRGlzcGxheUNsYXNzICogY2xhc3MpCisgICBkaXNwbGF5X2NsYXNzLT50ZXh0X3Byb3BlcnR5X3RvX3V0ZjhfbGlzdCA9IF9nZGtfeDExX2Rpc3BsYXlfdGV4dF9wcm9wZXJ0eV90b191dGY4X2xpc3Q7CisgICBkaXNwbGF5X2NsYXNzLT51dGY4X3RvX3N0cmluZ190YXJnZXQgPSBfZ2RrX3gxMV9kaXNwbGF5X3V0ZjhfdG9fc3RyaW5nX3RhcmdldDsKKyAKKy0gIGRpc3BsYXlfY2xhc3MtPm1ha2VfZ2xfY29udGV4dF9jdXJyZW50ID0gZ2RrX3gxMV9kaXNwbGF5X21ha2VfZ2xfY29udGV4dF9jdXJyZW50OworKyNpZmRlZiBIQVZFX09QRU5HTAorKyAgIGRpc3BsYXlfY2xhc3MtPm1ha2VfZ2xfY29udGV4dF9jdXJyZW50ID0gZ2RrX3gxMV9kaXNwbGF5X21ha2VfZ2xfY29udGV4dF9jdXJyZW50OworKyNlbmRpZgorIAorICAgZGlzcGxheV9jbGFzcy0+Z2V0X2RlZmF1bHRfc2VhdCA9IGdka194MTFfZGlzcGxheV9nZXRfZGVmYXVsdF9zZWF0OworIAorZGlmZiAtLWdpdCBhL2dkay94MTEvZ2Rrc2NyZWVuLXgxMS5jIGIvZ2RrL3gxMS9nZGtzY3JlZW4teDExLmMKK2luZGV4IDlkOGVkMjAuLmJkNDZiMDAgMTAwNjQ0CistLS0gYS9nZGsveDExL2dka3NjcmVlbi14MTEuYworKysrIGIvZ2RrL3gxMS9nZGtzY3JlZW4teDExLmMKK0BAIC0xOTY4LDMgKzE5NjgsOCBAQCBnZGtfeDExX3NjcmVlbl9nZXRfY3VycmVudF9kZXNrdG9wIChHZGtTY3JlZW4gKnNjcmVlbikKKyB7CisgICByZXR1cm4gZ2V0X25ldHdtX2NhcmRpbmFsX3Byb3BlcnR5IChzY3JlZW4sICJfTkVUX0NVUlJFTlRfREVTS1RPUCIpOworIH0KKysKKysjaWZuZGVmIEhBVkVfT1BFTkdMCisrLyogRnVuY3Rpb24gZnJvbSBpbiBnZGsveDExL2dka2dsY29udGV4dC14MTEuYyAqLworK3ZvaWQgX2dka194MTFfc2NyZWVuX3VwZGF0ZV92aXN1YWxzX2Zvcl9nbCAoR2RrU2NyZWVuICpzY3JlZW4pIHt9CisrI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2RrL3gxMS9nZGt3aW5kb3cteDExLmMgYi9nZGsveDExL2dka3dpbmRvdy14MTEuYworaW5kZXggOWVkMDg3YS4uMzBkNmViNyAxMDA2NDQKKy0tLSBhL2dkay94MTEvZ2Rrd2luZG93LXgxMS5jCisrKysgYi9nZGsveDExL2dka3dpbmRvdy14MTEuYworQEAgLTM2LDcgKzM2LDkgQEAKKyAjaW5jbHVkZSAiZ2RrYXN5bmMuaCIKKyAjaW5jbHVkZSAiZ2RrZXZlbnRzb3VyY2UuaCIKKyAjaW5jbHVkZSAiZ2RrZGlzcGxheS14MTEuaCIKKysjaWZkZWYgSEFWRV9PUEVOR0wKKyAjaW5jbHVkZSAiZ2RrZ2xjb250ZXh0LXgxMS5oIgorKyNlbmRpZgorICNpbmNsdWRlICJnZGtwcml2YXRlLXgxMS5oIgorICNpbmNsdWRlICJnZGstcHJpdmF0ZS5oIgorIAorQEAgLTU3ODIsNyArNTc4NCw5IEBAIGdka193aW5kb3dfaW1wbF94MTFfY2xhc3NfaW5pdCAoR2RrV2luZG93SW1wbFgxMUNsYXNzICprbGFzcykKKyAgIGltcGxfY2xhc3MtPnNldF9vcGFxdWVfcmVnaW9uID0gZ2RrX3gxMV93aW5kb3dfc2V0X29wYXF1ZV9yZWdpb247CisgICBpbXBsX2NsYXNzLT5zZXRfc2hhZG93X3dpZHRoID0gZ2RrX3gxMV93aW5kb3dfc2V0X3NoYWRvd193aWR0aDsKKyAgIGltcGxfY2xhc3MtPnNob3dfd2luZG93X21lbnUgPSBnZGtfeDExX3dpbmRvd19zaG93X3dpbmRvd19tZW51OworKyNpZmRlZiBIQVZFX09QRU5HTAorICAgaW1wbF9jbGFzcy0+Y3JlYXRlX2dsX2NvbnRleHQgPSBnZGtfeDExX3dpbmRvd19jcmVhdGVfZ2xfY29udGV4dDsKKyAgIGltcGxfY2xhc3MtPmludmFsaWRhdGVfZm9yX25ld19mcmFtZSA9IGdka194MTFfd2luZG93X2ludmFsaWRhdGVfZm9yX25ld19mcmFtZTsKKysjZW5kaWYKKyAgIGltcGxfY2xhc3MtPmdldF91bnNjYWxlZF9zaXplID0gZ2RrX3gxMV93aW5kb3dfZ2V0X3Vuc2NhbGVkX3NpemU7CisgfQorZGlmZiAtLWdpdCBhL2dkay94MTEvZ2RreC1hdXRvY2xlYW51cHMuaCBiL2dkay94MTEvZ2RreC1hdXRvY2xlYW51cHMuaAoraW5kZXggZWRiMGVhNy4uYTMxN2Q2MSAxMDA2NDQKKy0tLSBhL2dkay94MTEvZ2RreC1hdXRvY2xlYW51cHMuaAorKysrIGIvZ2RrL3gxMS9nZGt4LWF1dG9jbGVhbnVwcy5oCitAQCAtMzAsNyArMzAsOSBAQCBHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyhHZGtYMTFEZXZpY2VYSTIsIGdfb2JqZWN0X3VucmVmKQorIEdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DKEdka1gxMURpc3BsYXksIGdfb2JqZWN0X3VucmVmKQorIEdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DKEdka1gxMURpc3BsYXlNYW5hZ2VyLCBnX29iamVjdF91bnJlZikKKyBHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyhHZGtYMTFEcmFnQ29udGV4dCwgZ19vYmplY3RfdW5yZWYpCisrI2lmZGVmIEhBVkVfT1BFTkdMCisgR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMoR2RrWDExR0xDb250ZXh0LCBnX29iamVjdF91bnJlZikKKysjZW5kaWYKKyBHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyhHZGtYMTFLZXltYXAsIGdfb2JqZWN0X3VucmVmKQorIEdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DKEdka1gxMVNjcmVlbiwgZ19vYmplY3RfdW5yZWYpCisgR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMoR2RrWDExVmlzdWFsLCBnX29iamVjdF91bnJlZikKK2RpZmYgLS1naXQgYS9nZGsveDExL2dka3gtd2l0aC1nbC1jb250ZXh0LmggYi9nZGsveDExL2dka3gtd2l0aC1nbC1jb250ZXh0LmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5hZTA1ZmE2CistLS0gL2Rldi9udWxsCisrKysgYi9nZGsveDExL2dka3gtd2l0aC1nbC1jb250ZXh0LmgKK0BAIC0wLDAgKzEsNTkgQEAKKysvKiBHREsgLSBUaGUgR0lNUCBEcmF3aW5nIEtpdAorKyAqIENvcHlyaWdodCAoQykgMTk5NS0xOTk3IFBldGVyIE1hdHRpcywgU3BlbmNlciBLaW1iYWxsIGFuZCBKb3NoIE1hY0RvbmFsZAorKyAqCisrICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrICoKKysgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgKgorKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5LiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrICovCisrCisrLyoKKysgKiBNb2RpZmllZCBieSB0aGUgR1RLKyBUZWFtIGFuZCBvdGhlcnMgMTk5Ny0yMDAwLiAgU2VlIHRoZSBBVVRIT1JTCisrICogZmlsZSBmb3IgYSBsaXN0IG9mIHBlb3BsZSBvbiB0aGUgR1RLKyBUZWFtLiAgU2VlIHRoZSBDaGFuZ2VMb2cKKysgKiBmaWxlcyBmb3IgYSBsaXN0IG9mIGNoYW5nZXMuICBUaGVzZSBmaWxlcyBhcmUgZGlzdHJpYnV0ZWQgd2l0aAorKyAqIEdUSysgYXQgZnRwOi8vZnRwLmd0ay5vcmcvcHViL2d0ay8uCisrICovCisrCisrI2lmbmRlZiBfX0dES19YX0hfXworKyNkZWZpbmUgX19HREtfWF9IX18KKysKKysjaW5jbHVkZSA8Z2RrL2dkay5oPgorKworKyNpbmNsdWRlIDxYMTEvWGxpYi5oPgorKyNpbmNsdWRlIDxYMTEvWHV0aWwuaD4KKysKKysjZGVmaW5lIF9fR0RLWF9IX0lOU0lERV9fCisrCisrI2luY2x1ZGUgPGdkay94MTEvZ2RreDExYXBwbGF1bmNoY29udGV4dC5oPgorKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWN1cnNvci5oPgorKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRldmljZS5oPgorKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRldmljZS1jb3JlLmg+CisrI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZGV2aWNlLXhpMi5oPgorKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRldmljZW1hbmFnZXIuaD4KKysjaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFkZXZpY2VtYW5hZ2VyLWNvcmUuaD4KKysjaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFkZXZpY2VtYW5hZ2VyLXhpMi5oPgorKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRpc3BsYXkuaD4KKysjaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFkaXNwbGF5bWFuYWdlci5oPgorKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRuZC5oPgorKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWdsY29udGV4dC5oPgorKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWtleXMuaD4KKysjaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFwcm9wZXJ0eS5oPgorKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMXNjcmVlbi5oPgorKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMXNlbGVjdGlvbi5oPgorKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMXV0aWxzLmg+CisrI2luY2x1ZGUgPGdkay94MTEvZ2RreDExdmlzdWFsLmg+CisrI2luY2x1ZGUgPGdkay94MTEvZ2RreDExd2luZG93Lmg+CisrCisrI2luY2x1ZGUgPGdkay94MTEvZ2RreC1hdXRvY2xlYW51cHMuaD4KKysKKysjdW5kZWYgX19HREtYX0hfSU5TSURFX18KKysKKysjZW5kaWYgLyogX19HREtfWF9IX18gKi8KK2RpZmYgLS1naXQgYS9nZGsveDExL2dka3gtd2l0aG91dC1nbC1jb250ZXh0LmggYi9nZGsveDExL2dka3gtd2l0aG91dC1nbC1jb250ZXh0LmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5jOWUyNjE3CistLS0gL2Rldi9udWxsCisrKysgYi9nZGsveDExL2dka3gtd2l0aG91dC1nbC1jb250ZXh0LmgKK0BAIC0wLDAgKzEsNTggQEAKKysvKiBHREsgLSBUaGUgR0lNUCBEcmF3aW5nIEtpdAorKyAqIENvcHlyaWdodCAoQykgMTk5NS0xOTk3IFBldGVyIE1hdHRpcywgU3BlbmNlciBLaW1iYWxsIGFuZCBKb3NoIE1hY0RvbmFsZAorKyAqCisrICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrICoKKysgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgKgorKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5LiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrICovCisrCisrLyoKKysgKiBNb2RpZmllZCBieSB0aGUgR1RLKyBUZWFtIGFuZCBvdGhlcnMgMTk5Ny0yMDAwLiAgU2VlIHRoZSBBVVRIT1JTCisrICogZmlsZSBmb3IgYSBsaXN0IG9mIHBlb3BsZSBvbiB0aGUgR1RLKyBUZWFtLiAgU2VlIHRoZSBDaGFuZ2VMb2cKKysgKiBmaWxlcyBmb3IgYSBsaXN0IG9mIGNoYW5nZXMuICBUaGVzZSBmaWxlcyBhcmUgZGlzdHJpYnV0ZWQgd2l0aAorKyAqIEdUSysgYXQgZnRwOi8vZnRwLmd0ay5vcmcvcHViL2d0ay8uCisrICovCisrCisrI2lmbmRlZiBfX0dES19YX0hfXworKyNkZWZpbmUgX19HREtfWF9IX18KKysKKysjaW5jbHVkZSA8Z2RrL2dkay5oPgorKworKyNpbmNsdWRlIDxYMTEvWGxpYi5oPgorKyNpbmNsdWRlIDxYMTEvWHV0aWwuaD4KKysKKysjZGVmaW5lIF9fR0RLWF9IX0lOU0lERV9fCisrCisrI2luY2x1ZGUgPGdkay94MTEvZ2RreDExYXBwbGF1bmNoY29udGV4dC5oPgorKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWN1cnNvci5oPgorKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRldmljZS5oPgorKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRldmljZS1jb3JlLmg+CisrI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZGV2aWNlLXhpMi5oPgorKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRldmljZW1hbmFnZXIuaD4KKysjaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFkZXZpY2VtYW5hZ2VyLWNvcmUuaD4KKysjaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFkZXZpY2VtYW5hZ2VyLXhpMi5oPgorKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRpc3BsYXkuaD4KKysjaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFkaXNwbGF5bWFuYWdlci5oPgorKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRuZC5oPgorKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWtleXMuaD4KKysjaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFwcm9wZXJ0eS5oPgorKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMXNjcmVlbi5oPgorKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMXNlbGVjdGlvbi5oPgorKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMXV0aWxzLmg+CisrI2luY2x1ZGUgPGdkay94MTEvZ2RreDExdmlzdWFsLmg+CisrI2luY2x1ZGUgPGdkay94MTEvZ2RreDExd2luZG93Lmg+CisrCisrI2luY2x1ZGUgPGdkay94MTEvZ2RreC1hdXRvY2xlYW51cHMuaD4KKysKKysjdW5kZWYgX19HREtYX0hfSU5TSURFX18KKysKKysjZW5kaWYgLyogX19HREtfWF9IX18gKi8KK2RpZmYgLS1naXQgYS9nZGsveDExL2dka3guaCBiL2dkay94MTEvZ2RreC5oCitkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IGFlMDVmYTYuLjAwMDAwMDAKKy0tLSBhL2dkay94MTEvZ2RreC5oCisrKysgL2Rldi9udWxsCitAQCAtMSw1OSArMCwwIEBACistLyogR0RLIC0gVGhlIEdJTVAgRHJhd2luZyBLaXQKKy0gKiBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5NyBQZXRlciBNYXR0aXMsIFNwZW5jZXIgS2ltYmFsbCBhbmQgSm9zaCBNYWNEb25hbGQKKy0gKgorLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKy0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCistICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCistICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorLSAqCistICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorLSAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistICoKKy0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCistICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorLSAqLworLQorLS8qCistICogTW9kaWZpZWQgYnkgdGhlIEdUSysgVGVhbSBhbmQgb3RoZXJzIDE5OTctMjAwMC4gIFNlZSB0aGUgQVVUSE9SUworLSAqIGZpbGUgZm9yIGEgbGlzdCBvZiBwZW9wbGUgb24gdGhlIEdUSysgVGVhbS4gIFNlZSB0aGUgQ2hhbmdlTG9nCistICogZmlsZXMgZm9yIGEgbGlzdCBvZiBjaGFuZ2VzLiAgVGhlc2UgZmlsZXMgYXJlIGRpc3RyaWJ1dGVkIHdpdGgKKy0gKiBHVEsrIGF0IGZ0cDovL2Z0cC5ndGsub3JnL3B1Yi9ndGsvLgorLSAqLworLQorLSNpZm5kZWYgX19HREtfWF9IX18KKy0jZGVmaW5lIF9fR0RLX1hfSF9fCistCistI2luY2x1ZGUgPGdkay9nZGsuaD4KKy0KKy0jaW5jbHVkZSA8WDExL1hsaWIuaD4KKy0jaW5jbHVkZSA8WDExL1h1dGlsLmg+CistCistI2RlZmluZSBfX0dES1hfSF9JTlNJREVfXworLQorLSNpbmNsdWRlIDxnZGsveDExL2dka3gxMWFwcGxhdW5jaGNvbnRleHQuaD4KKy0jaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFjdXJzb3IuaD4KKy0jaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFkZXZpY2UuaD4KKy0jaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFkZXZpY2UtY29yZS5oPgorLSNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRldmljZS14aTIuaD4KKy0jaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFkZXZpY2VtYW5hZ2VyLmg+CistI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZGV2aWNlbWFuYWdlci1jb3JlLmg+CistI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZGV2aWNlbWFuYWdlci14aTIuaD4KKy0jaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFkaXNwbGF5Lmg+CistI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZGlzcGxheW1hbmFnZXIuaD4KKy0jaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFkbmQuaD4KKy0jaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFnbGNvbnRleHQuaD4KKy0jaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFrZXlzLmg+CistI2luY2x1ZGUgPGdkay94MTEvZ2RreDExcHJvcGVydHkuaD4KKy0jaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFzY3JlZW4uaD4KKy0jaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFzZWxlY3Rpb24uaD4KKy0jaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTF1dGlscy5oPgorLSNpbmNsdWRlIDxnZGsveDExL2dka3gxMXZpc3VhbC5oPgorLSNpbmNsdWRlIDxnZGsveDExL2dka3gxMXdpbmRvdy5oPgorLQorLSNpbmNsdWRlIDxnZGsveDExL2dka3gtYXV0b2NsZWFudXBzLmg+CistCistI3VuZGVmIF9fR0RLWF9IX0lOU0lERV9fCistCistI2VuZGlmIC8qIF9fR0RLX1hfSF9fICovCitkaWZmIC0tZ2l0IGEvZ3RrL01ha2VmaWxlLmFtIGIvZ3RrL01ha2VmaWxlLmFtCitpbmRleCA2YTUzYTJiLi40OWEzNWU2IDEwMDY0NAorLS0tIGEvZ3RrL01ha2VmaWxlLmFtCisrKysgYi9ndGsvTWFrZWZpbGUuYW0KK0BAIC0xMzUxLDE0ICsxMzUxLDEzIEBAIGd0a3ByaXZhdGV0eXBlYnVpbHRpbnMuYzogJChndGtfcHJpdmF0ZV90eXBlX2hfc291cmNlcykgIGd0a3ByaXZhdGV0eXBlYnVpbHRpbnMuCisgCSYmIGNwIHhnZW4tZ3B0YmMgZ3RrcHJpdmF0ZXR5cGVidWlsdGlucy5jICBcCisgCSYmIHJtIC1mIHhnZW4tZ3B0YmMKKyAKKy0KKyBndGt0eXBlZnVuY3MuYzogc3RhbXAtZ3RrdHlwZWJ1aWx0aW5zLmggc3RhbXAtZ3RrcHJpdmF0ZXR5cGVidWlsdGlucy5oICQodG9wX3NyY2RpcikvZ3RrLyouaCAkKHRvcF9zcmNkaXIpL2d0ay9hMTF5LyouaCAkKHRvcF9zcmNkaXIpL2d0ay9kZXByZWNhdGVkLyouaCAkKHRvcF9zcmNkaXIpL2dkay8qLmggTWFrZWZpbGUKKyAJJChBTV9WX0dFTikgKGVjaG8gJyN1bmRlZiBHVEtfQ09NUElMQVRJT04nICYmIGVjaG8gJyNpbmNsdWRlIDxndGsvZ3RreC5oPicpID4geGdlbi1ndGZzcmMuYyAmJiBcCisgCSAgZWNobyAnR19HTlVDX0JFR0lOX0lHTk9SRV9ERVBSRUNBVElPTlMnID4geGdlbi1ndGYgJiYgXAorIAkgICR7Q1BQfSAkKERFRlMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykgeGdlbi1ndGZzcmMuYyB8IFwKKyAJICAkKEdSRVApIC1vICdcYmdbdGRda19bYS16QS1aMC05X10qX2dldF90eXBlXGInIHwgXAorIAkgIHNvcnQgfCB1bmlxIHwgXAorLQkgICQoU0VEKSAneyBzL14vKnRwKysgPSAvOyBzLyQkLygpOy87IHMvXi4qXChnZGtfeDExXHxndGtfcGx1Z19cfGd0a19zb2NrZXRfXCkuKiQkLyNpZmRlZiBHREtfV0lORE9XSU5HX1gxMVxuJlxuI2VuZGlmLzsgfScgPj4geGdlbi1ndGYgXAorKwkgICQoU0VEKSAneyBzL14vKnRwKysgPSAvOyBzLyQkLygpOy87IHMvXi4qXChnZGtfeDExXHxndGtfcGx1Z19cfGd0a19zb2NrZXRfXCkuKiQkLyNpZmRlZiBHREtfV0lORE9XSU5HX1gxMVxuJlxuI2VuZGlmLzsgcy9eLipnZGtfeDExX2dsLiokJC8jaWZkZWYgSEFWRV9PUEVOR0xcbiZcbiNlbmRpZi87IH0nID4+IHhnZW4tZ3RmIFwKKyAJJiYgY3AgeGdlbi1ndGYgJEAgJiYgcm0gLWYgeGdlbi1ndGYKKyBndGt0ZXN0dXRpbHMuYzogZ3RrdHlwZWZ1bmNzLmMKKyAKK2RpZmYgLS1naXQgYS9ndGsvZ3RrZ2xhcmVhLmMgYi9ndGsvZ3RrZ2xhcmVhLmMKK2luZGV4IDI0NWZjNmIuLjQyMTRhZDEgMTAwNjQ0CistLS0gYS9ndGsvZ3RrZ2xhcmVhLmMKKysrKyBiL2d0ay9ndGtnbGFyZWEuYworQEAgLTI4LDcgKzI4LDkgQEAKKyAjaW5jbHVkZSAiZ3RrcHJpdmF0ZS5oIgorICNpbmNsdWRlICJndGtyZW5kZXIuaCIKKyAKKysjaWZkZWYgSEFWRV9PUEVOR0wKKyAjaW5jbHVkZSA8ZXBveHkvZ2wuaD4KKysjZW5kaWYKKyAKKyAvKioKKyAgKiBTRUNUSU9OOmd0a2dsYXJlYQorQEAgLTM1Nyw5ICszNTksMTIgQEAgZ3RrX2dsX2FyZWFfcmVhbF9jcmVhdGVfY29udGV4dCAoR3RrR0xBcmVhICphcmVhKQorIHN0YXRpYyB2b2lkCisgZ3RrX2dsX2FyZWFfcmVzaXplIChHdGtHTEFyZWEgKmFyZWEsIGludCB3aWR0aCwgaW50IGhlaWdodCkKKyB7CisrI2lmZGVmIEhBVkVfT1BFTkdMCisgICBnbFZpZXdwb3J0ICgwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKKysjZW5kaWYKKyB9CisgCisrI2lmZGVmIEhBVkVfT1BFTkdMCisgLyoKKyAgKiBDcmVhdGVzIGFsbCB0aGUgYnVmZmVyIG9iamVjdHMgbmVlZGVkIGZvciByZW5kZXJpbmcgdGhlIHNjZW5lCisgICovCitAQCAtNDY3LDYgKzQ3Miw3IEBAIGd0a19nbF9hcmVhX2FsbG9jYXRlX2J1ZmZlcnMgKEd0a0dMQXJlYSAqYXJlYSkKKyAKKyAgIHByaXYtPm5lZWRzX3JlbmRlciA9IFRSVUU7CisgfQorKyNlbmRpZgorIAorIC8qKgorICAqIGd0a19nbF9hcmVhX2F0dGFjaF9idWZmZXJzOgorQEAgLTQ4NSw2ICs0OTEsNyBAQCBndGtfZ2xfYXJlYV9hbGxvY2F0ZV9idWZmZXJzIChHdGtHTEFyZWEgKmFyZWEpCisgdm9pZAorIGd0a19nbF9hcmVhX2F0dGFjaF9idWZmZXJzIChHdGtHTEFyZWEgKmFyZWEpCisgeworKyNpZmRlZiBIQVZFX09QRU5HTAorICAgR3RrR0xBcmVhUHJpdmF0ZSAqcHJpdiA9IGd0a19nbF9hcmVhX2dldF9pbnN0YW5jZV9wcml2YXRlIChhcmVhKTsKKyAKKyAgIGdfcmV0dXJuX2lmX2ZhaWwgKEdUS19JU19HTF9BUkVBIChhcmVhKSk7CitAQCAtNTE3LDExICs1MjQsMTMgQEAgZ3RrX2dsX2FyZWFfYXR0YWNoX2J1ZmZlcnMgKEd0a0dMQXJlYSAqYXJlYSkKKyAgICAgICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXJFWFQgKEdMX0ZSQU1FQlVGRkVSX0VYVCwgR0xfU1RFTkNJTF9BVFRBQ0hNRU5UX0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JFTkRFUkJVRkZFUl9FWFQsIHByaXYtPmRlcHRoX3N0ZW5jaWxfYnVmZmVyKTsKKyAgICAgfQorKyNlbmRpZgorIH0KKyAKKyBzdGF0aWMgdm9pZAorIGd0a19nbF9hcmVhX2RlbGV0ZV9idWZmZXJzIChHdGtHTEFyZWEgKmFyZWEpCisgeworKyNpZmRlZiBIQVZFX09QRU5HTAorICAgR3RrR0xBcmVhUHJpdmF0ZSAqcHJpdiA9IGd0a19nbF9hcmVhX2dldF9pbnN0YW5jZV9wcml2YXRlIChhcmVhKTsKKyAKKyAgIGlmIChwcml2LT5jb250ZXh0ID09IE5VTEwpCitAQCAtNTUzLDYgKzU2Miw3IEBAIGd0a19nbF9hcmVhX2RlbGV0ZV9idWZmZXJzIChHdGtHTEFyZWEgKmFyZWEpCisgICAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnNFWFQgKDEsICZwcml2LT5mcmFtZV9idWZmZXIpOworICAgICAgIHByaXYtPmZyYW1lX2J1ZmZlciA9IDA7CisgICAgIH0KKysjZW5kaWYKKyB9CisgCisgc3RhdGljIHZvaWQKK0BAIC02NjMsNiArNjczLDcgQEAgZ3RrX2dsX2FyZWFfZHJhdyAoR3RrV2lkZ2V0ICp3aWRnZXQsCisgICBHdGtHTEFyZWEgKmFyZWEgPSBHVEtfR0xfQVJFQSAod2lkZ2V0KTsKKyAgIEd0a0dMQXJlYVByaXZhdGUgKnByaXYgPSBndGtfZ2xfYXJlYV9nZXRfaW5zdGFuY2VfcHJpdmF0ZSAoYXJlYSk7CisgICBnYm9vbGVhbiB1bnVzZWQ7CisrI2lmZGVmIEhBVkVfT1BFTkdMCisgICBpbnQgdywgaCwgc2NhbGU7CisgICBHTGVudW0gc3RhdHVzOworIAorQEAgLTY3NCw3ICs2ODUsNiBAQCBndGtfZ2xfYXJlYV9kcmF3IChHdGtXaWRnZXQgKndpZGdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3RrX3dpZGdldF9nZXRfYWxsb2NhdGVkX2hlaWdodCAod2lkZ2V0KSk7CisgICAgICAgcmV0dXJuIEZBTFNFOworICAgICB9CistCisgICBpZiAocHJpdi0+Y29udGV4dCA9PSBOVUxMKQorICAgICByZXR1cm4gRkFMU0U7CisgCitAQCAtNzIwLDYgKzczMCwxNCBAQCBndGtfZ2xfYXJlYV9kcmF3IChHdGtXaWRnZXQgKndpZGdldCwKKyAgICAgfQorIAorICAgcmV0dXJuIFRSVUU7CisrI2Vsc2UKKysgIGlmIChwcml2LT5lcnJvciAhPSBOVUxMKQorKyAgICAgIGd0a19nbF9hcmVhX2RyYXdfZXJyb3Jfc2NyZWVuIChhcmVhLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjciwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3RrX3dpZGdldF9nZXRfYWxsb2NhdGVkX3dpZHRoICh3aWRnZXQpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndGtfd2lkZ2V0X2dldF9hbGxvY2F0ZWRfaGVpZ2h0ICh3aWRnZXQpKTsKKysgIHJldHVybiBGQUxTRTsKKysjZW5kaWYKKyB9CisgCisgc3RhdGljIGdib29sZWFuCitkaWZmIC0tZ2l0IGEvZ3RrL2luc3BlY3Rvci9nZW5lcmFsLmMgYi9ndGsvaW5zcGVjdG9yL2dlbmVyYWwuYworaW5kZXggNGVhYjNhNy4uYzRlOTAwZSAxMDA2NDQKKy0tLSBhL2d0ay9pbnNwZWN0b3IvZ2VuZXJhbC5jCisrKysgYi9ndGsvaW5zcGVjdG9yL2dlbmVyYWwuYworQEAgLTMzLDggKzMzLDEwIEBACisgCisgI2lmZGVmIEdES19XSU5ET1dJTkdfWDExCisgI2luY2x1ZGUgIngxMS9nZGt4LmgiCisrI2lmZGVmIEhBVkVfT1BFTkdMCisgI2luY2x1ZGUgPGVwb3h5L2dseC5oPgorICNlbmRpZgorKyNlbmRpZgorIAorICNpZmRlZiBHREtfV0lORE9XSU5HX1dJTjMyCisgI2luY2x1ZGUgIndpbjMyL2dka3dpbjMyLmgiCitAQCAtMTQ3LDYgKzE0OSw3IEBAIGFwcGVuZF9leHRlbnNpb25fcm93IChHdGtJbnNwZWN0b3JHZW5lcmFsICpnZW4sCisgICBndGtfc2l6ZV9ncm91cF9hZGRfd2lkZ2V0IChHVEtfU0laRV9HUk9VUCAoZ2VuLT5wcml2LT5sYWJlbHMpLCBsYWJlbCk7CisgfQorIAorKyNpZmRlZiBIQVZFX09QRU5HTAorICNpZmRlZiBHREtfV0lORE9XSU5HX1gxMQorIHN0YXRpYyB2b2lkCisgYXBwZW5kX2dseF9leHRlbnNpb25fcm93IChHdGtJbnNwZWN0b3JHZW5lcmFsICpnZW4sCitAQCAtMTU2LDYgKzE1OSw3IEBAIGFwcGVuZF9nbHhfZXh0ZW5zaW9uX3JvdyAoR3RrSW5zcGVjdG9yR2VuZXJhbCAqZ2VuLAorICAgYXBwZW5kX2V4dGVuc2lvbl9yb3cgKGdlbiwgZXh0LCBlcG94eV9oYXNfZ2x4X2V4dGVuc2lvbiAoZHB5LCAwLCBleHQpKTsKKyB9CisgI2VuZGlmCisrI2VuZGlmCisgCisgI2lmZGVmIEdES19XSU5ET1dJTkdfV0FZTEFORAorIHN0YXRpYyB2b2lkCitAQCAtMTcxLDYgKzE3NSw3IEBAIGFwcGVuZF9lZ2xfZXh0ZW5zaW9uX3JvdyAoR3RrSW5zcGVjdG9yR2VuZXJhbCAqZ2VuLAorIHN0YXRpYyB2b2lkCisgaW5pdF9nbCAoR3RrSW5zcGVjdG9yR2VuZXJhbCAqZ2VuKQorIHsKKysjaWZkZWYgSEFWRV9PUEVOR0wKKyAjaWZkZWYgR0RLX1dJTkRPV0lOR19YMTEKKyAgIGlmIChHREtfSVNfWDExX0RJU1BMQVkgKGdka19kaXNwbGF5X2dldF9kZWZhdWx0ICgpKSkKKyAgICAgeworQEAgLTE5Nyw2ICsyMDIsNyBAQCBpbml0X2dsIChHdGtJbnNwZWN0b3JHZW5lcmFsICpnZW4pCisgICAgIH0KKyAgIGVsc2UKKyAjZW5kaWYKKysjZW5kaWYKKyAjaWZkZWYgR0RLX1dJTkRPV0lOR19XQVlMQU5ECisgICBpZiAoR0RLX0lTX1dBWUxBTkRfRElTUExBWSAoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQgKCkpKQorICAgICB7CitkaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuYW0gYi90ZXN0cy9NYWtlZmlsZS5hbQoraW5kZXggNjgxODA3ZC4uMjk0MWEzNiAxMDA2NDQKKy0tLSBhL3Rlc3RzL01ha2VmaWxlLmFtCisrKysgYi90ZXN0cy9NYWtlZmlsZS5hbQorQEAgLTgwLDggKzgwLDYgQEAgbm9pbnN0X1BST0dSQU1TID0gICQoVEVTVF9QUk9HUykJXAorIAl0ZXN0ZnVsbHNjcmVlbgkJCVwKKyAJdGVzdGdlb21ldHJ5CQkJXAorIAl0ZXN0Z2ljb25waXhidWYJCQlcCistCXRlc3RnbGFyZWEJCQlcCistCXRlc3RnbGJsZW5kaW5nCQkJXAorIAl0ZXN0Z3JpZAkJCVwKKyAJdGVzdGd0awkJCQlcCisgCXRlc3RoZWFkZXJiYXIJCQlcCitAQCAtMTY5LDExICsxNjcsMTcgQEAgbm9pbnN0X1BST0dSQU1TID0gICQoVEVTVF9QUk9HUykJXAorIAl0ZXN0YWN0aW9uYmFyCQkJXAorIAl0ZXN0d2luZG93c2l6ZQkJCVwKKyAJdGVzdHBvcG92ZXIJCQlcCistCWdka2dlYXJzCQkJXAorIAlsaXN0bW9kZWwJCQlcCisgCXRlc3Rwb3B1cAkJCVwKKyAJJChOVUxMKQorIAorK2lmIEhBVkVfT1BFTkdMCisrbm9pbnN0X1BST0dSQU1TICs9CisrCXRlc3RnbGFyZWEgICAgICAgICAgICAgICAgICAgICAgXAorKwl0ZXN0Z2xibGVuZGluZyAgICAgICAgICAgICAgICAgIFwKKysJZ2RrZ2VhcnMKKytlbmRpZgorKworIGlmIFVTRV9YMTEKKyBub2luc3RfUFJPR1JBTVMgKz0gdGVzdGVycm9ycworIGVuZGlmCitkaWZmIC0tZ2l0IGEvdGVzdHN1aXRlL2d0ay9vYmplY3RzLWZpbmFsaXplLmMgYi90ZXN0c3VpdGUvZ3RrL29iamVjdHMtZmluYWxpemUuYworaW5kZXggZTBlYmVlMC4uNzAzNjQzYyAxMDA2NDQKKy0tLSBhL3Rlc3RzdWl0ZS9ndGsvb2JqZWN0cy1maW5hbGl6ZS5jCisrKysgYi90ZXN0c3VpdGUvZ3RrL29iamVjdHMtZmluYWxpemUuYworQEAgLTExNSw4ICsxMTUsMTAgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkgIGFsbF90eXBlc1tpXSAhPSBHREtfVFlQRV9YMTFfREVWSUNFX01BTkFHRVJfQ09SRSAmJgorIAkgIGFsbF90eXBlc1tpXSAhPSBHREtfVFlQRV9YMTFfREVWSUNFX01BTkFHRVJfWEkyICYmCisgCSAgYWxsX3R5cGVzW2ldICE9IEdES19UWVBFX1gxMV9ESVNQTEFZX01BTkFHRVIgJiYKKysjaWZkZWYgSEFWRV9PUEVOR0wKKyAJICBhbGxfdHlwZXNbaV0gIT0gR0RLX1RZUEVfWDExX0dMX0NPTlRFWFQgJiYKKyAjZW5kaWYKKysjZW5kaWYKKyAJICAvKiBOb3QgYWxsb3dlZCB0byBmaW5hbGl6ZSBhIEdka1BpeGJ1ZkxvYWRlciB3aXRob3V0IGNhbGxpbmcgZ2RrX3BpeGJ1Zl9sb2FkZXJfY2xvc2UoKSAqLworIAkgIGFsbF90eXBlc1tpXSAhPSBHREtfVFlQRV9QSVhCVUZfTE9BREVSICYmCisgCSAgYWxsX3R5cGVzW2ldICE9IGdka19waXhidWZfc2ltcGxlX2FuaW1faXRlcl9nZXRfdHlwZSgpKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLzAwMDQtY29uZmlndXJlLmFjLUZpeC13YXlsYW5kLXByb3RvY29scy1wYXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLzAwMDQtY29uZmlndXJlLmFjLUZpeC13YXlsYW5kLXByb3RvY29scy1wYXRoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzNGIzYTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMvMDAwNC1jb25maWd1cmUuYWMtRml4LXdheWxhbmQtcHJvdG9jb2xzLXBhdGgucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSA5N2I3OGU1NjY2MzQ1NzliYmFlNTFiZTkxNGFlYWFhOTIxMTM3YThiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK0RhdGU6IFRodSwgOSBKdW4gMjAxNiAxMToyMTozNiArMDMwMAorU3ViamVjdDogW1BBVENIIDQvNF0gY29uZmlndXJlLmFjOiBGaXggd2F5bGFuZC1wcm90b2NvbHMgcGF0aAorCitUaGUgd2F5bGFuZC1wcm90b2NvbHMgZGlyZWN0b3J5IGlzIHVzZWQgZHVyaW5nIGJ1aWxkOiBGaXggdGhlIHBhdGgKK3RvIHBvaW50IHRvIHN5c3Jvb3Qgc3BlY2lmaWVkIGluIHJlY2lwZS4KKworTm9ybWFsbHkgUEtHX0NPTkZJR19TWVNST09UX0RJUiBjb3VsZCBiZSB1c2VkIGluIGNvbmZpZ3VyZS5hYyBidXQgdGhhdAorYnJlYWtzIG11bHRpbGliIGd0aysgYXMgaXQgd291bGQgcG9pbnQgdG8gbXVsdGlsaWIgc3lzcm9vdCB3aGVuIHRoZQorKGFsbGFyY2gpIHdheWxhbmQtcHJvdG9jb2xzIGlzIGFjdHVhbGx5IGluIHRoZSBtYWNoaW5lIHN5c3Jvb3QuCisKK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBhM2U5YmViLi5kZGU5ZGM1IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC00NjEsNyArNDYxLDcgQEAgZmkKKyBpZiB0ZXN0ICIkZW5hYmxlX3dheWxhbmRfYmFja2VuZCIgPSAieWVzIjsgdGhlbgorICAgIyBGb3IgdGhlIGNhaXJvIGltYWdlIGJhY2tlbmQKKyAgIGNhaXJvX2JhY2tlbmRzPSIkY2Fpcm9fYmFja2VuZHMgY2Fpcm8iCistICBBQ19TVUJTVChXQVlMQU5EX1BST1RPQ09MU19EQVRBRElSLCBgJFBLR19DT05GSUcgLS12YXJpYWJsZT1wa2dkYXRhZGlyIHdheWxhbmQtcHJvdG9jb2xzYCkKKysgIEFDX1NVQlNUKFdBWUxBTkRfUFJPVE9DT0xTX0RBVEFESVIsICR7V0FZTEFORF9QUk9UT0NPTFNfU1lTUk9PVF9ESVJ9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9cGtnZGF0YWRpciB3YXlsYW5kLXByb3RvY29sc2ApCisgICBHREtfQkFDS0VORFM9IiRHREtfQkFDS0VORFMgd2F5bGFuZCIKKyAgIEdES19XSU5ET1dJTkc9IiRHREtfV0lORE9XSU5HCisgI2RlZmluZSBHREtfV0lORE9XSU5HX1dBWUxBTkQiCistLSAKKzIuMS40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy9Eby1ub3QtdHJ5LXRvLWluaXRpYWxpemUtR0wtd2l0aG91dC1saWJHTC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy9Eby1ub3QtdHJ5LXRvLWluaXRpYWxpemUtR0wtd2l0aG91dC1saWJHTC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzhjNDgwYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMvRG8tbm90LXRyeS10by1pbml0aWFsaXplLUdMLXdpdGhvdXQtbGliR0wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi1Gcm9tIGZjMjIwNThhMTBkYjkxMzUzNGYxMTM0OGY4NjY4MWZlOWUxODM4ZTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogRnJpLCAxNiBPY3QgMjAxNSAxNjozNToxNiArMDMwMAotU3ViamVjdDogW1BBVENIXSBEbyBub3QgdHJ5IHRvIGluaXRpYWxpemUgR0wgd2l0aG91dCBsaWJHTAotCi1fZ2RrX3gxMV9zY3JlZW5fdXBkYXRlX3Zpc3VhbHNfZm9yX2dsKCkgd2lsbCBlbmQgdXAgY2FsbGluZyBlcG94eXMKLUdMWCBhcGkgd2hpY2ggd2lsbCBleGl0KCkgaWYgbGliR0wuc28uMSBpcyBub3QgcHJlc2VudC4gV2UgZG8gbm90Ci13YW50IHRoYXQgdG8gaGFwcGVuIGFuZCB3ZSBkb24ndCB3YW50IGV2ZXJ5IGFwcCB0byBoYXZlIHRvIHNldAotIkdES19HTD1kaXNhYmxlZCIgZW52aXJvbm1lbnQgdmFyaWFibGU6IHNvIHVzZSAjaWZkZWYgc2V0IGJhc2VkIG9uCi1vcGVuZ2wgZGlzdHJvIGZlYXR1cmUuCi0KLVVwc3RyZWFtIGlzIG5vdCBpbnRlcmVzdGVkIGluIHRoZSBmaXggYXMgaXQgaXM6IEVpdGhlciBlcG94eSBzaG91bGQgYmUKLWZpeGVkICh0byBub3QgZXhpdCkgb3IgR1RLKyBwb3NzaWJseSBjb3VsZCBkbyBzb21lIGFkZGl0aW9uYWwgcHJvYmluZwotYmVmb3JlIGNhbGxpbmcgZXBveHkgQVBJcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQKLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgICAgICAgICAgICB8IDcgKysrKysrKwotIGdkay94MTEvZ2RrdmlzdWFsLXgxMS5jIHwgNSArKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA3MjlhNjJlLi41OGNjMWFjIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0zMjgsNiArMzI4LDEzIEBAIEFDX0FSR19FTkFCTEUobWlyLWJhY2tlbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuYWJsZSB0aGUgTWlyIGdkayBiYWNrZW5kXSldLAotIAkJCSAgICAgIFtiYWNrZW5kX3NldD15ZXNdKQotIAotK0FDX0FSR19FTkFCTEUoZ2x4LAotKyAgICAgICAgICAgICAgW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1nbHhdLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtXaGVuIGVuYWJsZWQgR2RrIHdpbGwgdHJ5IHRvIGluaXRpYWxpemUgR0xYXSldKQotK0FTX0lGKFt0ZXN0ICJ4JGVuYWJsZV9nbHgiICE9ICJ4bm8iXSwgWwotKyAgQUNfREVGSU5FKFtIQVZFX0dMWF0sIFtdLCBbR0xYIHdpbGwgYmUgYXZhaWxhYmxlIGF0IHJ1bnRpbWVdKQotK10pCi0rCi0gaWYgdGVzdCAteiAiJGJhY2tlbmRfc2V0IjsgdGhlbgotICAgaWYgdGVzdCAiJHBsYXRmb3JtX3dpbjMyIiA9IHllczsgdGhlbgotICAgICBlbmFibGVfd2luMzJfYmFja2VuZD15ZXMKLWRpZmYgLS1naXQgYS9nZGsveDExL2dka3Zpc3VhbC14MTEuYyBiL2dkay94MTEvZ2RrdmlzdWFsLXgxMS5jCi1pbmRleCBmM2IwNjJkLi5jODI0M2Y0IDEwMDY0NAotLS0tIGEvZ2RrL3gxMS9nZGt2aXN1YWwteDExLmMKLSsrKyBiL2dkay94MTEvZ2RrdmlzdWFsLXgxMS5jCi1AQCAtMzQ1LDcgKzM0NSwxMiBAQCBfZ2RrX3gxMV9zY3JlZW5faW5pdF92aXN1YWxzIChHZGtTY3JlZW4gKnNjcmVlbikKLSAgIC8qIElmIEdMIGlzIGF2YWlsYWJsZSB3ZSB3YW50IHRvIHBpY2sgYmV0dGVyIGRlZmF1bHQvcmdiYSB2aXN1YWxzLAotICAgICAgYXMgd2UgY2FyZSBhYm91dCBnbHggZGV0YWlscyBzdWNoIGFzIGFscGhhL2RlcHRoL3N0ZW5jaWwgZGVwdGgsCi0gICAgICBzdGVyZW8gYW5kIGRvdWJsZSBidWZmZXJpbmcgKi8KLSsgIC8qIHVwZGF0ZV92aXN1YWxzX2Zvcl9nbCgpIHdpbGwgZW5kIHVwIGNhbGxpbmcgZXBveHkgR0xYIGFwaSB3aGljaAotKyAgICAgd2lsbCBleGl0IGlmIGxpYmdsIGlzIG5vdCB0aGVyZTogc28gb25seSBkbyB0aGlzIGlmIHdlIGtub3cgR0wKLSsgICAgIGlzIGF2YWlsYWJsZSAqLwotKyNpZmRlZiBIQVZFX0dMWAotICAgX2dka194MTFfc2NyZWVuX3VwZGF0ZV92aXN1YWxzX2Zvcl9nbCAoc2NyZWVuKTsKLSsjZW5kaWYKLSB9Ci0gCi0gZ2ludAotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMvRG9udC1mb3JjZS1jc2QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMvRG9udC1mb3JjZS1jc2QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyZDhhODQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszL0RvbnQtZm9yY2UtY3NkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTE4ICswLDAgQEAKLXdpbmRvdzogQ2hlY2sgaWYgd2UgY2FuIHVzZSBDU0QgYmVmb3JlIGVuYWJsaW5nIHRoZW0KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLQotCi1Gcm9tIGM1ZTVlZTY3NDkwZTdlN2FmNTYwNTJkOGY4YmViNzVkYjAwMmMyZjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBFbW1hbnVlbGUgQmFzc2kgPGViYXNzaUBnbm9tZS5vcmc+Ci1EYXRlOiBXZWQsIDMgSnVuIDIwMTUgMTQ6MDc6MjkgKzAxMDAKLVN1YmplY3Q6IHdpbmRvdzogQ2hlY2sgaWYgd2UgY2FuIHVzZSBDU0QgYmVmb3JlIGVuYWJsaW5nIHRoZW0KLQotVGhlIGNoYW5nZSBpbiAwMzIxM2I5NTA5ZmMxZGYxNmM2NjE5NGVhMTY4YWVkNmMxNTExMGU5IGNoYW5nZWQgdGhlIHJ1bGVzCi1hcyB0byB3aGVuIENTRCBjYW4gYmUgZW5hYmxlZCwgYnV0IGl0IGFsc28gdW5jb25kaXRpb25hbGx5IGVuYWJsZXMgQ1NECi13aXRoIHRoZSBpbXBsaWNpdCBhc3N1bXB0aW9uIHRoYXQgY2xpZW50LXNpZGUgc2hhZG93cyB3ZXJlIHRoZSByZWFsCi1pc3N1ZSwgYW5kIHRoYXQgd2UgY291bGQgd29yayBhcm91bmQgdGhhdCBieSBkcmF3aW5nIG91ciBvd24gYm9yZGVycy4KLVRoaXMgYWxzbyBtZWFucyB0aGF0IHNldHRpbmcgYSB0aXRsZWJhciBmb3IgYSBHdGtXaW5kb3cgd2lsbCBlbmFibGUgQ1NECi11bmNvbmRpdGlvbmFsbHkuCi0KLUluIHJlYWxpdHksIHNvbWUgd2luZG93IG1hbmFnZXJzIChsaWtlIE1hdGNoYm94KSAqb25seSogc3VwcG9ydAotc2VydmVyLXNpZGUgZGVjb3JhdGlvbnMsIGFuZCB3aWxsIGlnbm9yZSBhbGwgaGludHMgdG8gdGhlIGNvbnRyYXJ5LCB0bwotdGhlIHBvaW50IG9mIGRyYXdpbmcgZGVjb3JhdGlvbnMgYXQgcmFuZG9tIGxvY2F0aW9ucyBvbiB0b3Agb2YgdGhlCi13aW5kb3cuCi0KLVNpbmNlIENTRCBhcmUgZW5hYmxlZCB1bmNvbmRpdGlvbmFsbHksIHRoZSBHVEtfQ1NEIGVudmlyb25tZW50IHZhcmlhYmxlCi1pcyBhbHNvIG5vdCBhIHN1aXRhYmxlIGVzY2FwZSBoYXRjaC4KLQotSW4gdGhlIGdyYW5kIHRyYWRpdGlvbiBvZiBhc2tpbmcgb3Vyc2VsdmVzIGlmIHdlIHNob3VsZCBkbyBzb21ldGhpbmcKLWp1c3QgYmVjYXVzZSB3ZSBjYW4sIHdlIHNob3VsZCBzcGxpdCB0aGUgZW52aXJvbm1lbnQgY2hlY2tzIGZyb20gdGhlCi1jaGVja3Mgb24gd2hhdCB0aGUgdXNlciByZXF1ZXN0ZWQ7IGJ5IGRvaW5nIHRoYXQsIHdlIGNhbiBhbHNvIGNoZWNrCi13aGVuIGVuYWJsaW5nIGNsaWVudC1zaWRlIGRlY29yYXRpb25zLCBhbmQgaWRlYWxseSBiYWlsIG91dCBpZiBuZWVkZWQuCi0KLWh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTAzNDMKLQotZGlmZiAtLWdpdCBhL2d0ay9ndGt3aW5kb3cuYyBiL2d0ay9ndGt3aW5kb3cuYwotaW5kZXggNDIzYzZiZC4uOWZlODgyZiAxMDA2NDQKLS0tLSBhL2d0ay9ndGt3aW5kb3cuYwotKysrIGIvZ3RrL2d0a3dpbmRvdy5jCi1AQCAtNDA1Niw2ICs0MDU2LDMyIEBAIGd0a193aW5kb3dfc3VwcG9ydHNfY2xpZW50X3NoYWRvdyAoR3RrV2luZG93ICp3aW5kb3cpCi0gICByZXR1cm4gVFJVRTsKLSB9Ci0gCi0rc3RhdGljIGdib29sZWFuCi0rZ3RrX3dpbmRvd19jYW5fdXNlX2NzZCAoR3RrV2luZG93ICp3aW5kb3cpCi0rewotKyAgY29uc3QgZ2NoYXIgKmNzZF9lbnY7Ci0rCi0rI2lmZGVmIEdES19XSU5ET1dJTkdfQlJPQURXQVkKLSsgIGlmIChHREtfSVNfQlJPQURXQVlfRElTUExBWSAoZ3RrX3dpZGdldF9nZXRfZGlzcGxheSAoR1RLX1dJREdFVCAod2luZG93KSkpKQotKyAgICByZXR1cm4gVFJVRTsKLSsjZW5kaWYKLSsKLSsjaWZkZWYgR0RLX1dJTkRPV0lOR19XQVlMQU5ECi0rICBpZiAoR0RLX0lTX1dBWUxBTkRfRElTUExBWSAoZ3RrX3dpZGdldF9nZXRfZGlzcGxheSAoR1RLX1dJREdFVCAod2luZG93KSkpKQotKyAgICByZXR1cm4gVFJVRTsKLSsjZW5kaWYKLSsKLSsjaWZkZWYgR0RLX1dJTkRPV0lOR19NSVIKLSsgIGlmIChHREtfSVNfTUlSX0RJU1BMQVkgKGd0a193aWRnZXRfZ2V0X2Rpc3BsYXkgKEdUS19XSURHRVQgKHdpbmRvdykpKSkKLSsgICAgcmV0dXJuIFRSVUU7Ci0rI2VuZGlmCi0rCi0rICBjc2RfZW52ID0gZ19nZXRlbnYgKCJHVEtfQ1NEIik7Ci0rCi0rICAvKiBJZiBHVEtfQ1NEIGlzIHVuc2V0IHdlIGRlZmF1bHQgdG8gQ1NEIHN1cHBvcnQgKi8KLSsgIHJldHVybiBjc2RfZW52ID09IE5VTEwgfHwgKHN0cmNtcCAoY3NkX2VudiwgIjEiKSA9PSAwKTsKLSt9Ci0rCi0gc3RhdGljIHZvaWQKLSBndGtfd2luZG93X2VuYWJsZV9jc2QgKEd0a1dpbmRvdyAqd2luZG93KQotIHsKLUBAIC00MDYzLDYgKzQwODksMTAgQEAgZ3RrX3dpbmRvd19lbmFibGVfY3NkIChHdGtXaW5kb3cgKndpbmRvdykKLSAgIEd0a1dpZGdldCAqd2lkZ2V0ID0gR1RLX1dJREdFVCAod2luZG93KTsKLSAgIEdka1Zpc3VhbCAqdmlzdWFsOwotIAotKyAgLyogSWYgdGhlIGVudmlyb25tZW50IGRvZXMgbm90IHN1cHBvcnQgQ1NELCB0aGVuIHRoZXJlJ3Mgbm8gcG9pbnQgaW4gZW5hYmxpbmcgdGhlbSAqLwotKyAgaWYgKCFndGtfd2luZG93X2Nhbl91c2VfY3NkICh3aW5kb3cpKQotKyAgICByZXR1cm47Ci0rCi0gICAvKiBXZSBuZWVkIGEgdmlzdWFsIHdpdGggYWxwaGEgZm9yIGNsaWVudCBzaGFkb3dzICovCi0gICBpZiAocHJpdi0+dXNlX2NsaWVudF9zaGFkb3cpCi0gICAgIHsKLUBAIC01ODM5LDcgKzU4NjksNiBAQCBzdGF0aWMgZ2Jvb2xlYW4KLSBndGtfd2luZG93X3Nob3VsZF91c2VfY3NkIChHdGtXaW5kb3cgKndpbmRvdykKLSB7Ci0gICBHdGtXaW5kb3dQcml2YXRlICpwcml2ID0gd2luZG93LT5wcml2OwotLSAgY29uc3QgZ2NoYXIgKmNzZF9lbnY7Ci0gCi0gICBpZiAocHJpdi0+Y3NkX3JlcXVlc3RlZCkKLSAgICAgcmV0dXJuIFRSVUU7Ci1AQCAtNTg1MCwyNCArNTg3OSw3IEBAIGd0a193aW5kb3dfc2hvdWxkX3VzZV9jc2QgKEd0a1dpbmRvdyAqd2luZG93KQotICAgaWYgKHByaXYtPnR5cGUgPT0gR1RLX1dJTkRPV19QT1BVUCkKLSAgICAgcmV0dXJuIEZBTFNFOwotIAotLSNpZmRlZiBHREtfV0lORE9XSU5HX0JST0FEV0FZCi0tICBpZiAoR0RLX0lTX0JST0FEV0FZX0RJU1BMQVkgKGd0a193aWRnZXRfZ2V0X2Rpc3BsYXkgKEdUS19XSURHRVQgKHdpbmRvdykpKSkKLS0gICAgcmV0dXJuIFRSVUU7Ci0tI2VuZGlmCi0tCi0tI2lmZGVmIEdES19XSU5ET1dJTkdfV0FZTEFORAotLSAgaWYgKEdES19JU19XQVlMQU5EX0RJU1BMQVkgKGd0a193aWRnZXRfZ2V0X2Rpc3BsYXkgKEdUS19XSURHRVQgKHdpbmRvdykpKSkKLS0gICAgcmV0dXJuIFRSVUU7Ci0tI2VuZGlmCi0tCi0tI2lmZGVmIEdES19XSU5ET1dJTkdfTUlSCi0tICBpZiAoR0RLX0lTX01JUl9ESVNQTEFZIChndGtfd2lkZ2V0X2dldF9kaXNwbGF5IChHVEtfV0lER0VUICh3aW5kb3cpKSkpCi0tICAgIHJldHVybiBUUlVFOwotLSNlbmRpZgotLQotLSAgY3NkX2VudiA9IGdfZ2V0ZW52ICgiR1RLX0NTRCIpOwotLQotLSAgcmV0dXJuIChnX3N0cmNtcDAgKGNzZF9lbnYsICIxIikgPT0gMCk7Ci0rICByZXR1cm4gZ3RrX3dpbmRvd19jYW5fdXNlX2NzZCAod2luZG93KTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS0tIAotY2dpdCB2MC4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy9oYXJkY29kZWRfbGlidG9vbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy9oYXJkY29kZWRfbGlidG9vbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2I0YmVlYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMvaGFyZGNvZGVkX2xpYnRvb2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBNYXJrbyBMaW5kcXZpc3QgPGNhemZpNzRAZ21haWwuY29tPgotCi1JbmRleDogZ3RrKy0zLjguMi9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBndGsrLTMuOC4yLm9yaWcvY29uZmlndXJlLmFjCi0rKysgZ3RrKy0zLjguMi9jb25maWd1cmUuYWMKLUBAIC01MzEsNyArNTMxLDcgQEAgQUNfTVNHX0NIRUNLSU5HKFtXaGV0aGVyIHRvIHdyaXRlIGRlcGVuZAotIGNhc2UgJGVuYWJsZV9leHBsaWNpdF9kZXBzIGluCi0gICBhdXRvKQotICAgICBleHBvcnQgU0VECi0tICAgIGRlcGxpYnNfY2hlY2tfbWV0aG9kPWAoLi9saWJ0b29sIC0tY29uZmlnOyBlY2hvICdldmFsIGVjaG8gXCIkZGVwbGlic19jaGVja19tZXRob2RcIicpIHwgc2hgCi0rICAgIGRlcGxpYnNfY2hlY2tfbWV0aG9kPWAoLi8kaG9zdF9hbGlhcy1saWJ0b29sIC0tY29uZmlnOyBlY2hvICdldmFsIGVjaG8gXCIkZGVwbGlic19jaGVja19tZXRob2RcIicpIHwgc2hgCi0gICAgIGlmIHRlc3QgIngkZGVwbGlic19jaGVja19tZXRob2QiICE9IHhwYXNzX2FsbCB8fCB0ZXN0ICJ4JGVuYWJsZV9zdGF0aWMiID0geHllcyA7IHRoZW4KLSAgICAgICBlbmFibGVfZXhwbGljaXRfZGVwcz15ZXMKLSAgICAgZWxzZQotQEAgLTc5Myw3ICs3OTMsNyBAQCBlbHNlCi0gICAgIGRubCBOb3cgd2UgY2hlY2sgdG8gc2VlIGlmIG91ciBsaWJ0b29sIHN1cHBvcnRzIHNoYXJlZCBsaWIgZGVwcwotICAgICBkbmwgKGluIGEgcmF0aGVyIHVnbHkgd2F5IGV2ZW4pCi0gICAgIGlmICRkeW53b3JrczsgdGhlbgotLSAgICAgICAgbW9kdWxlX2xpYnRvb2xfY29uZmlnPSIke0NPTkZJR19TSEVMTC0vYmluL3NofSAuL2xpYnRvb2wgLS1jb25maWciCi0rICAgICAgICBtb2R1bGVfbGlidG9vbF9jb25maWc9IiR7Q09ORklHX1NIRUxMLS9iaW4vc2h9IC4vJGhvc3RfYWxpYXMtbGlidG9vbCAtLWNvbmZpZyIKLSAgICAgICAgIG1vZHVsZV9kZXBsaWJzX2NoZWNrPWAkbW9kdWxlX2xpYnRvb2xfY29uZmlnIHwgXAotICAgICAgICAgICAgIGdyZXAgJ15bW2Etel9dXSpjaGVja1tbYS16X11dKl9tZXRob2Q9W1snXCcnIl1dJyB8IFwKLSAgICAgICAgICAgICBzZWQgJ3MvLipbWydcJyciXV1cKC4qXClbWydcJyciXV0kL1wxLydgCi1AQCAtMTUyOCw3ICsxNTI4LDcgQEAgZmkKLSAjIFdlIGFyZSB1c2luZyBnbW9kdWxlLW5vLWV4cG9ydCBub3csIGJ1dCBJJ20gbGVhdmluZyB0aGUgc3RyaXBwaW5nCi0gIyBjb2RlIGluIHBsYWNlIGZvciBub3csIHNpbmNlIHBhbmdvIGFuZCBhdGsgc3RpbGwgcmVxdWlyZSBnbW9kdWxlLgotIGV4cG9ydCBTRUQKLS1leHBvcnRfZHluYW1pYz1gKC4vbGlidG9vbCAtLWNvbmZpZzsgZWNobyBldmFsIGVjaG8gXFwkZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjKSB8IHNoYAotK2V4cG9ydF9keW5hbWljPWAoLi8kaG9zdF9hbGlhcy1saWJ0b29sIC0tY29uZmlnOyBlY2hvIGV2YWwgZWNobyBcXCRleHBvcnRfZHluYW1pY19mbGFnX3NwZWMpIHwgc2hgCi0gaWYgdGVzdCAtbiAiJGV4cG9ydF9keW5hbWljIjsgdGhlbgotICAgR0RLX0RFUF9MSUJTPWBlY2hvICRHREtfREVQX0xJQlMgfCBzZWQgLWUgInMvJGV4cG9ydF9keW5hbWljLy8iYAotICAgR1RLX0RFUF9MSUJTPWBlY2hvICRHVEtfREVQX0xJQlMgfCBzZWQgLWUgInMvJGV4cG9ydF9keW5hbWljLy8iYApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszXzMuMTguOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrM18zLjE4LjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3NmMwY2MuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszXzMuMTguOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLXJlcXVpcmUgZ3RrKzMuaW5jCi0KLU1BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvZ25vbWUvc291cmNlcy9ndGsrLyR7TUFKX1ZFUn0vZ3RrKy0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vaGFyZGNvZGVkX2xpYnRvb2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vRG9udC1mb3JjZS1jc2QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vRG8tbm90LXRyeS10by1pbml0aWFsaXplLUdMLXdpdGhvdXQtbGliR0wucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjk2NzFhY2I0MWRjMTM1NjFkMTkyMzNmMWE3NWNmMTg0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFjNTNlZjFiYjU1MzY0Njk4ZjcxODNlY2QxODViNTQ3ZjkyZjRhM2E3YWJmYWZkNTMxNDAwMjMyZTJlMDUyZjgiCi0KLVMgPSAiJHtXT1JLRElSfS9ndGsrLSR7UFZ9IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ndGsvZ3RrLmg7ZW5kbGluZT0yNTttZDU9MWQ4ZGMwZmNjZGJmYTI2Mjg3YTI3MWRjZTg4YWY3MzcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2RrL2dkay5oO2VuZGxpbmU9MjU7bWQ1PWM5MjBjZTM5ZGM4OGM2ZjA2ZDNlN2M1MGUwODA4NmYyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL3Rlc3RndGsuYztlbmRsaW5lPTI1O21kNT1jYjczMmRhZWUxZDgyYWY3YTJiZjk1M2NmM2NmMjZmMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrM18zLjIwLjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzNfMy4yMC45LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4ZTA5NWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzNfMy4yMC45LmJiCkBAIC0wLDAgKzEsMjAgQEAKK3JlcXVpcmUgZ3RrKzMuaW5jCisKK01BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvZ25vbWUvc291cmNlcy9ndGsrLyR7TUFKX1ZFUn0vZ3RrKy0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1IYXJkY29kZWQtbGlidG9vbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLURvLW5vdC10cnktdG8taW5pdGlhbGl6ZS1HTC13aXRob3V0LWxpYkdMLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtQWRkLWRpc2FibGUtb3BlbmdsLWNvbmZpZ3VyZS1vcHRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1jb25maWd1cmUuYWMtRml4LXdheWxhbmQtcHJvdG9jb2xzLXBhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1SZWRvLWZvY3VzLWhhbmRsaW5nLWluLXRyZWV2aWV3LW9uY2UtbW9yZS5wYXRjaCBcCisgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gImNjNzZjYWM1ZTE4Yzc3MmM2Nzg0YmYxOWEzZGZmMDhiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgzYTYwOWJhMmYzNDI0YjU1MDllNzM5NjdjNDljNjc4MzNhZjQ2NmQ2ZjkxMDgxYjI0ZWU1YzY0ZmNlNmFjMTciCisKK1MgPSAiJHtXT1JLRElSfS9ndGsrLSR7UFZ9IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ndGsvZ3RrLmg7ZW5kbGluZT0yNTttZDU9MWQ4ZGMwZmNjZGJmYTI2Mjg3YTI3MWRjZTg4YWY3MzcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2RrL2dkay5oO2VuZGxpbmU9MjU7bWQ1PWM5MjBjZTM5ZGM4OGM2ZjA2ZDNlN2M1MGUwODA4NmYyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL3Rlc3RndGsuYztlbmRsaW5lPTI1O21kNT1jYjczMmRhZWUxZDgyYWY3YTJiZjk1M2NmM2NmMjZmMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrXzIuMjQuMjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrK18yLjI0LjI5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjU1ZDIwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrXzIuMjQuMjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1yZXF1aXJlIGd0aysuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2d0ay9ndGsuaDtlbmRsaW5lPTI3O21kNT1jNTllMGI0NDkwZGQxMzVhNTcyNmViZjg1MWY5YjE3ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nZGsvZ2RrLmg7ZW5kbGluZT0yNzttZDU9MDdkYjI4NWVjMjA4ZmIzZTBiZjdkODYxYjA2MTQyMDIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdGVzdHMvdGVzdGd0ay5jO2VuZGxpbmU9Mjc7bWQ1PTI2MmRiNWRiNWY3NzZmOTg2M2U1NmRmMzE0MjNlMjRjIgotU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvZ25vbWUvc291cmNlcy9ndGsrLzIuMjQvZ3RrKy0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8veHNldHRpbmdzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2hhcmRjb2RlZF9saWJ0b29sLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3RvZ2dsZS1mb250LmRpZmY7c3RyaXBsZXZlbD0wIFwKLSAgICAgICAgICAgZmlsZTovL2RvYy1maXhlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zdHJpY3QtcHJvdG90eXBlcy5wYXRjaCBcCi0JICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxYjdhMzY4OWY2NTYxNzM4N2I1YjU0NTIwZjQ0MzllOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwNzQxYzU5NjAwZDNkODEwYTIyMzg2NjQ1M2RjMmJiYjE4Y2U0NzIzODI4NjgxYmEyNGFhNjUxOWMzNzYzMWI4IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUteGtiIC0tZGlzYWJsZS1nbGlidGVzdCAtLWRpc2FibGUtY3VwcyAtLWRpc2FibGUteGluZXJhbWEiCi0KLUxJQlYgPSAiMi4xMC4wIgotCi1QQUNLQUdFU19EWU5BTUlDICs9ICJeZ3RrLWltbW9kdWxlLS4qIF5ndGstcHJpbnRiYWNrZW5kLS4qIgotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7Ci0gICAgZ3RrX2xpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0vZ3RrLTIuMC8ke0xJQlZ9JykKLSAgICBpbW1vZHVsZXNfcm9vdCA9IG9zLnBhdGguam9pbihndGtfbGliZGlyLCAnaW1tb2R1bGVzJykKLSAgICBwcmludG1vZHVsZXNfcm9vdCA9IG9zLnBhdGguam9pbihndGtfbGliZGlyLCAncHJpbnRiYWNrZW5kcycpOwotCi0gICAgZC5zZXRWYXIoJ0dUS0lNTU9EVUxFU19QQUNLQUdFUycsICcgJy5qb2luKGRvX3NwbGl0X3BhY2thZ2VzKGQsIGltbW9kdWxlc19yb290LCAnXmltLSguKilcLnNvJCcsICdndGstaW1tb2R1bGUtJXMnLCAnR1RLIGlucHV0IG1vZHVsZSBmb3IgJXMnKSkpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgcHJpbnRtb2R1bGVzX3Jvb3QsICdebGlicHJpbnRiYWNrZW5kLSguKilcLnNvJCcsICdndGstcHJpbnRiYWNrZW5kLSVzJywgJ0dUSyBwcmludGJhY2tlbmQgbW9kdWxlIGZvciAlcycpCi0KLSAgICBpZiAoZC5nZXRWYXIoJ0RFQklBTl9OQU1FUycsIFRydWUpKToKLSAgICAgICAgZC5zZXRWYXIoZC5leHBhbmQoJ1BLR18ke1BOfScpLCAnJHtNTFBSRUZJWH1saWJndGstMi4wJykKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrXzIuMjQuMzAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrK18yLjI0LjMwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmZTk5MGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrK18yLjI0LjMwLmJiCkBAIC0wLDAgKzEsMzQgQEAKK3JlcXVpcmUgZ3RrKy5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2JmNTAwMDJhZWZkMDAyZjQ5ZTdiYjg1NDA2M2Y3ZTcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3RrL2d0ay5oO2VuZGxpbmU9Mjc7bWQ1PWM1OWUwYjQ0OTBkZDEzNWE1NzI2ZWJmODUxZjliMTdmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dkay9nZGsuaDtlbmRsaW5lPTI3O21kNT0wN2RiMjg1ZWMyMDhmYjNlMGJmN2Q4NjFiMDYxNDIwMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZXN0cy90ZXN0Z3RrLmM7ZW5kbGluZT0yNzttZDU9MjYyZGI1ZGI1Zjc3NmY5ODYzZTU2ZGYzMTQyM2UyNGMiCitTUkNfVVJJID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9nbm9tZS9zb3VyY2VzL2d0aysvMi4yNC9ndGsrLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly94c2V0dGluZ3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vaGFyZGNvZGVkX2xpYnRvb2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdG9nZ2xlLWZvbnQuZGlmZjtzdHJpcGxldmVsPTAgXAorICAgICAgICAgICBmaWxlOi8vZG9jLWZpeGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3N0cmljdC1wcm90b3R5cGVzLnBhdGNoIFwKKwkgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjA0NTY4YmE1YzU4Yjc1ZTNjNzU0M2U0NTYyOGFkNzg5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBkMTVjZWMzYjZkNTVjNjBlYWMyMDViMWYzYmE4MWExZWQ0ZWFkZDlkMGY4ZTdjNTA4YmM3MDY1ZDBjNGNhNTAiCisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS14a2IgLS1kaXNhYmxlLWdsaWJ0ZXN0IC0tZGlzYWJsZS1jdXBzIC0tZGlzYWJsZS14aW5lcmFtYSIKKworTElCViA9ICIyLjEwLjAiCisKK1BBQ0tBR0VTX0RZTkFNSUMgKz0gIl5ndGstaW1tb2R1bGUtLiogXmd0ay1wcmludGJhY2tlbmQtLioiCisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKKyAgICBndGtfbGliZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfS9ndGstMi4wLyR7TElCVn0nKQorICAgIGltbW9kdWxlc19yb290ID0gb3MucGF0aC5qb2luKGd0a19saWJkaXIsICdpbW1vZHVsZXMnKQorICAgIHByaW50bW9kdWxlc19yb290ID0gb3MucGF0aC5qb2luKGd0a19saWJkaXIsICdwcmludGJhY2tlbmRzJyk7CisKKyAgICBkLnNldFZhcignR1RLSU1NT0RVTEVTX1BBQ0tBR0VTJywgJyAnLmpvaW4oZG9fc3BsaXRfcGFja2FnZXMoZCwgaW1tb2R1bGVzX3Jvb3QsICdeaW0tKC4qKVwuc28kJywgJ2d0ay1pbW1vZHVsZS0lcycsICdHVEsgaW5wdXQgbW9kdWxlIGZvciAlcycpKSkKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBwcmludG1vZHVsZXNfcm9vdCwgJ15saWJwcmludGJhY2tlbmQtKC4qKVwuc28kJywgJ2d0ay1wcmludGJhY2tlbmQtJXMnLCAnR1RLIHByaW50YmFja2VuZCBtb2R1bGUgZm9yICVzJykKKworICAgIGlmIChkLmdldFZhcignREVCSUFOX05BTUVTJywgVHJ1ZSkpOgorICAgICAgICBkLnNldFZhcihkLmV4cGFuZCgnUEtHXyR7UE59JyksICcke01MUFJFRklYfWxpYmd0ay0yLjAnKQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ay1pY29uLXV0aWxzLW5hdGl2ZV8zLjE4LjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrLWljb24tdXRpbHMtbmF0aXZlXzMuMTguOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzkzZjE0YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrLWljb24tdXRpbHMtbmF0aXZlXzMuMTguOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLVNVTU1BUlkgPSAiTmF0aXZlIGljb24gdXRpbHMgZm9yIEdUSysiCi1ERVNDUklQVElPTiA9ICJndGstdXBkYXRlLWljb24tY2FjaGUgYW5kIGd0ay1lbmNvZGUtc3ltYm9saWMtc3ZnIGJ1aWx0IGZyb20gR1RLKyBuYXRpdmVseSwgZm9yIGJ1aWxkIHRpbWUgYW5kIG9uLWhvc3QgcG9zdGluc3Qgc2NyaXB0IGV4ZWN1dGlvbi4iCi1TRUNUSU9OID0gImxpYnMiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAtbmF0aXZlIGdkay1waXhidWYtbmF0aXZlIGxpYnJzdmctbmF0aXZlIgotCi1MSUNFTlNFID0gIkxHUEx2MiAmIExHUEx2MisgJiBMR1BMdjIuMSsiCi0KLU1BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvZ25vbWUvc291cmNlcy9ndGsrLyR7TUFKX1ZFUn0vZ3RrKy0ke1BWfS50YXIueHogXAotICAgICAgICAgIGZpbGU6Ly9SZW1vdmUtR2RrLWRlcGVuZGVuY3ktZnJvbS1ndGstZW5jb2RlLXN5bWJvbGljLXN2Zy5wYXRjaCIKLVNSQ19VUklbbWQ1c3VtXSA9ICI5NjcxYWNiNDFkYzEzNTYxZDE5MjMzZjFhNzVjZjE4NCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxYzUzZWYxYmI1NTM2NDY5OGY3MTgzZWNkMTg1YjU0N2Y5MmY0YTNhN2FiZmFmZDUzMTQwMDIzMmUyZTA1MmY4IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ndGsvZ3RrLmg7ZW5kbGluZT0yNTttZDU9MWQ4ZGMwZmNjZGJmYTI2Mjg3YTI3MWRjZTg4YWY3MzcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2RrL2dkay5oO2VuZGxpbmU9MjU7bWQ1PWM5MjBjZTM5ZGM4OGM2ZjA2ZDNlN2M1MGUwODA4NmYyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL3Rlc3RndGsuYztlbmRsaW5lPTI1O21kNT1jYjczMmRhZWUxZDgyYWY3YTJiZjk1M2NmM2NmMjZmMSIKLQotUyA9ICIke1dPUktESVJ9L2d0aystJHtQVn0iCi0KLWluaGVyaXQgcGtnY29uZmlnIG5hdGl2ZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLQotUEtHX0NPTkZJR19GT1JfQlVJTEQgPSAiJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3BrZy1jb25maWctbmF0aXZlIgotCi1kb19jb25maWd1cmUoKSB7Ci0JIyBRdWl0ZSB1Z2x5IGJ1dCBkZWZpbmVzIGVub3VnaCB0byBjb21waWxlIHRoZSB0b29scy4KLQlpZiAhIHRlc3QgLWYgZ3RrL2NvbmZpZy5oOyB0aGVuCi0JCWVjaG8gIiNkZWZpbmUgR0VUVEVYVF9QQUNLQUdFIFwiZ3RrMzBcIiIgPj4gZ3RrL2NvbmZpZy5oCi0JCWVjaG8gIiNkZWZpbmUgSEFWRV9VTklTVERfSCAxIiA+PiBndGsvY29uZmlnLmgKLQkJZWNobyAiI2RlZmluZSBIQVZFX0ZUV19IIDEiID4+IGd0ay9jb25maWcuaAotCWZpCi0JaWYgISB0ZXN0IC1mIGdkay9jb25maWcuaDsgdGhlbgotCQl0b3VjaCBnZGsvY29uZmlnLmgKLQlmaQotfQotCi1kb19jb21waWxlKCkgewotCSR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IFwKLQkJJHtTfS9ndGsvdXBkYXRlaWNvbmNhY2hlLmMgXAotCQkkKCR7UEtHX0NPTkZJR19GT1JfQlVJTER9IC0tY2ZsYWdzIC0tbGlicyBnZGstcGl4YnVmLTIuMCkgXAotCQktbyBndGstdXBkYXRlLWljb24tY2FjaGUKLQotCSR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IFwKLQkJJHtTfS9ndGsvZW5jb2Rlc3ltYm9saWMuYyBcCi0JCSQoJHtQS0dfQ09ORklHX0ZPUl9CVUlMRH0gLS1jZmxhZ3MgLS1saWJzIGdpby0yLjAgZ2RrLXBpeGJ1Zi0yLjApIFwKLQkJLW8gZ3RrLWVuY29kZS1zeW1ib2xpYy1zdmcKLX0KLQotZG9faW5zdGFsbCgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KLQlpbnN0YWxsIC1tIDA3NTUgJHtCfS9ndGstdXBkYXRlLWljb24tY2FjaGUgJHtEfSR7YmluZGlyfQotCWluc3RhbGwgLW0gMDc1NSAke0J9L2d0ay1lbmNvZGUtc3ltYm9saWMtc3ZnICR7RH0ke2JpbmRpcn0KLQotCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2d0ay11cGRhdGUtaWNvbi1jYWNoZSBcCi0JCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLzIuMTAuMC9sb2FkZXJzLmNhY2hlCi0JY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ3RrLWVuY29kZS1zeW1ib2xpYy1zdmcgXAotCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8yLjEwLjAvbG9hZGVycy5jYWNoZQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ay1pY29uLXV0aWxzLW5hdGl2ZV8zLjIwLjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrLWljb24tdXRpbHMtbmF0aXZlXzMuMjAuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWMxZDYyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ay1pY29uLXV0aWxzLW5hdGl2ZV8zLjIwLjkuYmIKQEAgLTAsMCArMSw2MCBAQAorU1VNTUFSWSA9ICJOYXRpdmUgaWNvbiB1dGlscyBmb3IgR1RLKyIKK0RFU0NSSVBUSU9OID0gImd0ay11cGRhdGUtaWNvbi1jYWNoZSBhbmQgZ3RrLWVuY29kZS1zeW1ib2xpYy1zdmcgYnVpbHQgZnJvbSBHVEsrIG5hdGl2ZWx5LCBmb3IgYnVpbGQgdGltZSBhbmQgb24taG9zdCBwb3N0aW5zdCBzY3JpcHQgZXhlY3V0aW9uLiIKK1NFQ1RJT04gPSAibGlicyIKKworREVQRU5EUyA9ICJnbGliLTIuMC1uYXRpdmUgZ2RrLXBpeGJ1Zi1uYXRpdmUgbGlicnN2Zy1uYXRpdmUiCisKK0xJQ0VOU0UgPSAiTEdQTHYyICYgTEdQTHYyKyAmIExHUEx2Mi4xKyIKKworTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgorCitTUkNfVVJJID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9nbm9tZS9zb3VyY2VzL2d0aysvJHtNQUpfVkVSfS9ndGsrLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgZmlsZTovL1JlbW92ZS1HZGstZGVwZW5kZW5jeS1mcm9tLWd0ay1lbmNvZGUtc3ltYm9saWMtc3ZnLnBhdGNoIgorU1JDX1VSSVttZDVzdW1dID0gImNjNzZjYWM1ZTE4Yzc3MmM2Nzg0YmYxOWEzZGZmMDhiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgzYTYwOWJhMmYzNDI0YjU1MDllNzM5NjdjNDljNjc4MzNhZjQ2NmQ2ZjkxMDgxYjI0ZWU1YzY0ZmNlNmFjMTciCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2d0ay9ndGsuaDtlbmRsaW5lPTI1O21kNT0xZDhkYzBmY2NkYmZhMjYyODdhMjcxZGNlODhhZjczNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nZGsvZ2RrLmg7ZW5kbGluZT0yNTttZDU9YzkyMGNlMzlkYzg4YzZmMDZkM2U3YzUwZTA4MDg2ZjIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdGVzdHMvdGVzdGd0ay5jO2VuZGxpbmU9MjU7bWQ1PWNiNzMyZGFlZTFkODJhZjdhMmJmOTUzY2YzY2YyNmYxIgorCitTID0gIiR7V09SS0RJUn0vZ3RrKy0ke1BWfSIKKworaW5oZXJpdCBwa2djb25maWcgbmF0aXZlIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgorCitQS0dfQ09ORklHX0ZPUl9CVUlMRCA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0vcGtnLWNvbmZpZy1uYXRpdmUiCisKK2RvX2NvbmZpZ3VyZSgpIHsKKwkjIFF1aXRlIHVnbHkgYnV0IGRlZmluZXMgZW5vdWdoIHRvIGNvbXBpbGUgdGhlIHRvb2xzLgorCWlmICEgdGVzdCAtZiBndGsvY29uZmlnLmg7IHRoZW4KKwkJZWNobyAiI2RlZmluZSBHRVRURVhUX1BBQ0tBR0UgXCJndGszMFwiIiA+PiBndGsvY29uZmlnLmgKKwkJZWNobyAiI2RlZmluZSBIQVZFX1VOSVNURF9IIDEiID4+IGd0ay9jb25maWcuaAorCQllY2hvICIjZGVmaW5lIEhBVkVfRlRXX0ggMSIgPj4gZ3RrL2NvbmZpZy5oCisJZmkKKwlpZiAhIHRlc3QgLWYgZ2RrL2NvbmZpZy5oOyB0aGVuCisJCXRvdWNoIGdkay9jb25maWcuaAorCWZpCit9CisKK2RvX2NvbXBpbGUoKSB7CisJJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30gXAorCQkke1N9L2d0ay91cGRhdGVpY29uY2FjaGUuYyBcCisJCSQoJHtQS0dfQ09ORklHX0ZPUl9CVUlMRH0gLS1jZmxhZ3MgLS1saWJzIGdkay1waXhidWYtMi4wKSBcCisJCS1vIGd0ay11cGRhdGUtaWNvbi1jYWNoZQorCisJJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30gXAorCQkke1N9L2d0ay9lbmNvZGVzeW1ib2xpYy5jIFwKKwkJJCgke1BLR19DT05GSUdfRk9SX0JVSUxEfSAtLWNmbGFncyAtLWxpYnMgZ2lvLTIuMCBnZGstcGl4YnVmLTIuMCkgXAorCQktbyBndGstZW5jb2RlLXN5bWJvbGljLXN2ZworfQorCitkb19pbnN0YWxsKCkgeworCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorCWluc3RhbGwgLW0gMDc1NSAke0J9L2d0ay11cGRhdGUtaWNvbi1jYWNoZSAke0R9JHtiaW5kaXJ9CisJaW5zdGFsbCAtbSAwNzU1ICR7Qn0vZ3RrLWVuY29kZS1zeW1ib2xpYy1zdmcgJHtEfSR7YmluZGlyfQorCisJY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ3RrLXVwZGF0ZS1pY29uLWNhY2hlIFwKKwkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvMi4xMC4wL2xvYWRlcnMuY2FjaGUKKwljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9ndGstZW5jb2RlLXN5bWJvbGljLXN2ZyBcCisJCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLzIuMTAuMC9sb2FkZXJzLmNhY2hlCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2Mtc3R1Yi9maWxlcy8wMDAxLVJldmVydC1JbXBvcnQtaW50cm9zcGVjdGlvbi1zdHViLW1hY2hpbmVyeS10b28ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2Mtc3R1Yi9maWxlcy8wMDAxLVJldmVydC1JbXBvcnQtaW50cm9zcGVjdGlvbi1zdHViLW1hY2hpbmVyeS10b28ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwYjA1MjEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jLXN0dWIvZmlsZXMvMDAwMS1SZXZlcnQtSW1wb3J0LWludHJvc3BlY3Rpb24tc3R1Yi1tYWNoaW5lcnktdG9vLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzA1ICswLDAgQEAKLUZyb20gZDYzNmJlMjliZjk1Mzk2YjRlMjdmY2QxN2ZmODRjYjcwOTFjY2E5MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogVGh1LCA4IE9jdCAyMDE1IDE1OjM3OjQwICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFJldmVydCAiSW1wb3J0IGludHJvc3BlY3Rpb24gc3R1YiBtYWNoaW5lcnkgdG9vIgotCi1UaGlzIHJldmVydHMgY29tbWl0IDNkZmQwYTA5ZGU2OTZlYzhjNTQ0NzYyNzQ3ZjhhMGY3NzE1MzYyMmUuCi1BcyB3ZSBwcm92aWRlIHRoZSBmdWxsIGludHJvc3BlY3Rpb24gc3VwcG9ydCwgd2UgbmVlZCB0byByZW1vdmUKLXRoZSBzdHVicyBmcm9tIHRoaXMgcGFja2FnZSB0aGF0IGNvbmZsaWN0IHdpdGggaXQuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbcmV2aWV3IG9uIG9lLWNvcmUgbGlzdF0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotLS0tCi0gTWFrZWZpbGUgICAgICAgICAgICAgICB8ICAgNCAtLQotIE1ha2VmaWxlLmludHJvc3BlY3Rpb24gfCAxNjMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIGludHJvc3BlY3Rpb24ubTQgICAgICAgfCAgOTYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDI2MyBkZWxldGlvbnMoLSkKLSBkZWxldGUgbW9kZSAxMDA2NDQgTWFrZWZpbGUuaW50cm9zcGVjdGlvbgotIGRlbGV0ZSBtb2RlIDEwMDY0NCBpbnRyb3NwZWN0aW9uLm00Ci0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCA3Y2I2Y2U1Li5hZDQyMzFhIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUKLSsrKyBiL01ha2VmaWxlCi1AQCAtMjMsNyArMjMsMyBAQCBpbnN0YWxsOiAkKGJpbl9wcm9ncmFtcykKLSAKLSAJbWtkaXIgLXAgJChERVNURElSKSQoZGF0YXJvb3RkaXIpL2FjbG9jYWwvCi0gCWluc3RhbGwgLW0gMDY0NCAkKHNyY2RpcikvZ3RrLWRvYy5tNCAkKERFU1RESVIpJChkYXRhcm9vdGRpcikvYWNsb2NhbC9ndGstZG9jLm00Ci0tCi0tCW1rZGlyIC1wICQoREVTVERJUikkKGRhdGFyb290ZGlyKS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wCi0tCWluc3RhbGwgLW0gMDY0NCAkKHNyY2RpcikvTWFrZWZpbGUuaW50cm9zcGVjdGlvbiAkKERFU1RESVIpJChkYXRhcm9vdGRpcikvZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC9NYWtlZmlsZS5pbnRyb3NwZWN0aW9uCi0tCWluc3RhbGwgLW0gMDY0NCAkKHNyY2RpcikvaW50cm9zcGVjdGlvbi5tNCAkKERFU1RESVIpJChkYXRhcm9vdGRpcikvYWNsb2NhbC9pbnRyb3NwZWN0aW9uLm00Ci1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW50cm9zcGVjdGlvbiBiL01ha2VmaWxlLmludHJvc3BlY3Rpb24KLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggNzU1ZGQxNS4uMDAwMDAwMAotLS0tIGEvTWFrZWZpbGUuaW50cm9zcGVjdGlvbgotKysrIC9kZXYvbnVsbAotQEAgLTEsMTYzICswLDAgQEAKLS0jIC0qLSBNb2RlOiBtYWtlIC0qLQotLSMgQ29weXJpZ2h0IDIwMDktMjAxMCBKb2hhbiBEYWhsaW4KLS0jCi0tIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIGF1dGhvcihzKSBnaXZlcyB1bmxpbWl0ZWQKLS0jIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0Ci0tIyBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KLS0jCi0tIyAqIElucHV0IHZhcmlhYmxlczoKLS0jCi0tIyAgIElOVFJPU1BFQ1RJT05fR0lSUyAtIExpc3Qgb2YgR0lSUyB0aGF0IHNob3VsZCBiZSBnZW5lcmF0ZWQKLS0jICAgSU5UUk9TUEVDVElPTl9TQ0FOTkVSIC0gQ29tbWFuZCB0byBpbnZva2Ugc2Nhbm5lciwgbm9ybWFsbHkgc2V0IGJ5Ci0tIyAgICAgIEdPQkpFQ1RfSU5UUk9TUEVDVElPTl9SRVFVSVJFL0NIRUNLKCkgaW4gaW50cm9zcGVjdGlvbi5tNAotLSMgICBJTlRST1NQRUNUSU9OX1NDQU5ORVJfQVJHUyAtIEFkZGl0aW9uYWwgYXJncyB0byBwYXNzIGluIHRvIHRoZSBzY2FubmVyCi0tIyAgIElOVFJPU1BFQ1RJT05fU0NBTk5FUl9FTlYgLSBFbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gc2V0IGJlZm9yZSBydW5uaW5nCi0tIyAgICAgIHRoZSBzY2FubmVyCi0tIyAgIElOVFJPU1BFQ1RJT05fQ09NUElMRVIgLSBDb21tYW5kIHRvIGludm9rZSBjb21waWxlciwgbm9ybWFsbHkgc2V0IGJ5Ci0tIyAgICAgIEdPQkpFQ1RfSU5UUk9TUEVDVElPTl9SRVFVSVJFL0NIRUNLKCkgaW4gaW50cm9zcGVjdGlvbi5tNAotLSMgICBJTlRST1NQRUNUSU9OX0NPTVBJTEVSX0FSR1MgLSBBZGRpdGlvbmFsIGFyZ3MgdG8gcGFzcyBpbiB0byB0aGUgY29tcGlsZXIKLS0jCi0tIyAqIFNpbXBsZSB0dXRvcmlhbAotLSMKLS0jIEFkZCB0aGlzIHRvIGNvbmZpZ3VyZS5hYzoKLS0jICAgLVduby1wb3J0YWJpbGl0eSB0byBBTV9JTklUX0FVVE9NQUtFCi0tIyAgIEdPQkpFQ1RfSU5UUk9TUEVDVElPTl9DSEVDSyhbMC42LjddKQotLSMKLS0jIEFkZCB0aGlzIHRvIE1ha2VmaWxlLmFtIHdoZXJlIHlvdXIgbGlicmFyeS9wcm9ncmFtIGlzIGJ1aWx0OgotLSMgICBpbmNsdWRlICQoSU5UUk9TUEVDVElPTl9NQUtFRklMRSkKLS0jICAgSU5UUk9TUEVDVElPTl9HSVJTID0gWW91ckxpYi0xLjAuZ2lyCi0tIyAgIFlvdXJMaWJfMV8wX2dpcl9OQU1FU1BBQ0UgPSBZb3VyTGliCi0tIyAgIFlvdXJMaWJfMV8wX2dpcl9WRVJTSU9OID0gMS4wCi0tIyAgIFlvdXJMaWJfMV8wX2dpcl9MSUJTID0gbGlieW91cmxpYi5sYQotLSMgICBZb3VyTGliXzFfMF9naXJfRklMRVMgPSAkKGxpYnlvdXJsaWJfMV8wX1NPVVJDRVMpCi0tIyAgIGdpcmRpciA9ICQoZGF0YWRpcikvZ2lyLTEuMAotLSMgICBkaXN0X2dpcl9EQVRBID0gWW91ckxpYi0xLjAuZ2lyCi0tIyAgIHR5cGVsaWJkaXIgPSAkKGxpYmRpcikvZ2lyZXBvc2l0b3J5LTEuMAotLSMgICB0eXBlbGliX0RBVEEgPSBZb3VyTGliLTEuMC50eXBlbGliCi0tIyAgIENMRUFORklMRVMgPSAkKGRpc3RfZ2lyX0RBVEEpICQodHlwZWxpYl9EQVRBKQotLSMKLS0KLS0jIE1ha2Ugc3VyZSB0aGUgcmVxdWlyZWQgdmFyaWFibGVzIGFyZSBzZXQsIHRoZXNlIHNob3VsZCB1bmRlciBub3JtYWwKLS0jIGNpcmN1bXN0YW5jZXMgY29tZSBmcm9tIGludHJvc3BlY3Rpb24ubTQKLS0kKGlmICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSwsJChlcnJvciBOZWVkIHRvIGRlZmluZSBJTlRST1NQRUNUSU9OX1NDQU5ORVIpKQotLSQoaWYgJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKSwsJChlcnJvciBOZWVkIHRvIGRlZmluZSBJTlRST1NQRUNUSU9OX0NPTVBJTEVSKSkKLS0KLS0jIFByaXZhdGUgZnVuY3Rpb25zCi0tCi0tIyMgVHJhbnNmb3JtIHRoZSBnaXIgZmlsZW5hbWUgdG8gc29tZXRoaW5nIHdoaWNoIGNhbiByZWZlcmVuY2UgdGhyb3VnaCBhIHZhcmlhYmxlCi0tIyMgd2l0aG91dCBhdXRvbWFrZS9tYWtlIGNvbXBsYWluaW5nLCBlZyBHdGstMi4wLmdpciAtPiBHdGtfMl8wX2dpcgotLV9naXJfbmFtZSA9ICQoc3Vic3QgLyxfLCQoc3Vic3QgLSxfLCQoc3Vic3QgLixfLCQoMSkpKSkKLS0KLS0jIE5hbWVzcGFjZSBhbmQgVmVyc2lvbiBpcyBlaXRoZXIgZmV0Y2hlZCBmcm9tIHRoZSBnaXIgZmlsZW5hbWUKLS0jIG9yIHRoZSBfTkFNRVNQQUNFL19WRVJTSU9OIHZhcmlhYmxlIGNvbWJvCi0tX2dpcl9uYW1lc3BhY2UgPSAkKG9yICQoJChfZ2lyX25hbWUpX05BTUVTUEFDRSksJChmaXJzdHdvcmQgJChzdWJzdCAtLCAsJChub3RkaXIgJCgxKSkpKSkKLS1fZ2lyX3ZlcnNpb24gPSAkKG9yICQoJChfZ2lyX25hbWUpX1ZFUlNJT04pLCQobGFzdHdvcmQgJChzdWJzdCAtLCAsJCgxOi5naXI9KSkpKQotLQotLSMgX1BST0dSQU0gaXMgYW4gb3B0aW9uYWwgdmFyaWFibGUgd2hpY2ggbmVlZHMgaXQncyBvd24gLS1wcm9ncmFtIGFyZ3VtZW50Ci0tX2dpcl9wcm9ncmFtID0gJChpZiAkKCQoX2dpcl9uYW1lKV9QUk9HUkFNKSwtLXByb2dyYW09JCgkKF9naXJfbmFtZSlfUFJPR1JBTSkpCi0tCi0tIyBWYXJpYWJsZXMgd2hpY2ggcHJvdmlkZXMgYSBsaXN0IG9mIHRoaW5ncwotLV9naXJfbGlicmFyaWVzID0gJChmb3JlYWNoIGxpYiwkKCQoX2dpcl9uYW1lKV9MSUJTKSwtLWxpYnJhcnk9JChsaWIpKQotLV9naXJfcGFja2FnZXMgPSAkKGZvcmVhY2ggcGtnLCQoJChfZ2lyX25hbWUpX1BBQ0tBR0VTKSwtLXBrZz0kKHBrZykpCi0tX2dpcl9pbmNsdWRlcyA9ICQoZm9yZWFjaCBpbmNsdWRlLCQoJChfZ2lyX25hbWUpX0lOQ0xVREVTKSwtLWluY2x1ZGU9JChpbmNsdWRlKSkKLS1fZ2lyX2V4cG9ydF9wYWNrYWdlcyA9ICQoZm9yZWFjaCBwa2csJCgkKF9naXJfbmFtZSlfRVhQT1JUX1BBQ0tBR0VTKSwtLXBrZy1leHBvcnQ9JChwa2cpKQotLQotLSMgUmV1c2UgdGhlIExJQlRPT0wgdmFyaWFibGUgZnJvbSBhdXRvbWFrZSBpZiBpdCdzIHNldCwgYnV0Ci0tIyB3b3JrIGFyb3VuZCBNU1lTIHdlaXJkbmVzczogV2hlbiBydW5uaW5nIGctaXItc2Nhbm5lciwgTVNZUyBjaGFuZ2VzCi0tIyBhIGNvbW1hbmQtbGluZSBhcmd1bWVudCAtLWxpYnRvb2w9Ii9iaW4vc2ggLi4vLi4vbGlidG9vbCIgaW50bwotLSMgLS1saWJ0b29sPWM6L29wdC9tc3lzLzEuMC9iaW4vbGlidG9vbC4gU28ganVzdCB1c2Ugc2guZXhlIHdpdGhvdXQgcGF0aAotLSMgYmVjYXVzZSB3ZSBhbHJlYWR5ICJrbm93IiB3aGVyZSB0aGUgbGlidG9vbCBjb25maWd1cmUgcHJvZHVjZWQgaXMuCi0tX2dpcl9saWJ0b29sID0gJChpZiAkKGZpbmRzdHJpbmcgTUlOR1czMiwkKHNoZWxsIHVuYW1lIC1zKSksLS1saWJ0b29sPSIkKHRvcF9idWlsZGRpcikvbGlidG9vbCIsJChpZiAkKExJQlRPT0wpLC0tbGlidG9vbD0iJChMSUJUT09MKSIpKQotLQotLSMgTWFjcm9zIGZvciBBTV9TSUxFTlRfUlVMRVMgcHJldHRpbmVzcwotLV9naXJfdmVyYm9zaXR5ID0gJChpZiAkKEFNX0RFRkFVTFRfVkVSQk9TSVRZKSwkKEFNX0RFRkFVTFRfVkVSQk9TSVRZKSwxKQotLQotLV9naXJfc2lsZW50X3NjYW5uZXJfcHJlZml4ID0gJChfZ2lyX3NpbGVudF9zY2FubmVyX3ByZWZpeF8kKFYpKQotLV9naXJfc2lsZW50X3NjYW5uZXJfcHJlZml4XyA9ICQoX2dpcl9zaWxlbnRfc2Nhbm5lcl9wcmVmaXhfJChfZ2lyX3ZlcmJvc2l0eSkpCi0tX2dpcl9zaWxlbnRfc2Nhbm5lcl9wcmVmaXhfMCA9IEBlY2hvICIgIEdJU0NBTiAkKDEpIjsKLS1fZ2lyX3NpbGVudF9zY2FubmVyX29wdHMgPSAkKF9naXJfc2lsZW50X3NjYW5uZXJfb3B0c18kKFYpKQotLV9naXJfc2lsZW50X3NjYW5uZXJfb3B0c18gPSAkKF9naXJfc2lsZW50X3NjYW5uZXJfb3B0c18kKF9naXJfdmVyYm9zaXR5KSkKLS1fZ2lyX3NpbGVudF9zY2FubmVyX29wdHNfMCA9IC0tcXVpZXQKLS0KLS1fZ2lyX3NpbGVudF9jb21waWxlciA9ICQoX2dpcl9zaWxlbnRfY29tcGlsZXJfJChWKSkKLS1fZ2lyX3NpbGVudF9jb21waWxlcl8gPSAkKF9naXJfc2lsZW50X2NvbXBpbGVyXyQoX2dpcl92ZXJib3NpdHkpKQotLV9naXJfc2lsZW50X2NvbXBpbGVyXzAgPSBAZWNobyAiICBHSUNPTVAgJCgxKSI7Ci0tCi0tIwotLSMgQ3JlYXRlcyBhIEdJUiBieSBzY2FubmluZyBDIGhlYWRlcnMvc291cmNlcwotLSMgJCgxKSAtIE5hbWUgb2YgdGhlIGdpciBmaWxlIChvdXRwdXQpCi0tIwotLSMgSWYgb3V0cHV0IGlzIEd0ay0yLjAuZ2lyIHRoZW4geW91IHNob3VsZCBuYW1lIHRoZSB2YXJpYWJsZXMgbGlrZQotLSMgR3RrXzJfMF9naXJfTkFNRVNQQUNFLCBHdGtfMl8wX2dpcl9WRVJTSU9OIGV0Yy4KLS0jIFJlcXVpcmVkIHZhcmlhYmxlczoKLS0jIEZJTEVTIC0gQyBzb3VyY2VzIGFuZCBoZWFkZXJzIHdoaWNoIHNob3VsZCBiZSBzY2FubmVkCi0tIwotLSMgT25lIG9mIHRoZXNlIHZhcmlhYmxlcyBhcmUgcmVxdWlyZWQ6Ci0tIyBMSUJTIC0gTGlicmFyeSB3aGVyZSB0aGUgc3ltYm9sIHJlcHJlc2VudGVkIGluIHRoZSBnaXIgY2FuIGJlIGZvdW5kCi0tIyBQUk9HUkFNIC0gUHJvZ3JhbSB3aGVyZSB0aGUgc3ltYm9sIHJlcHJlc2VudGVkIGluIHRoZSBnaXIgY2FuIGJlIGZvdW5kCi0tIwotLSMgT3B0aW9uYWwgdmFyaWFibGVzCi0tIyBOQU1FU1BBQ0UgLSBOYW1lc3BhY2Ugb2YgdGhlIGdpciwgZmlyc3QgbGV0dGVyIGNhcGl0YWwsCi0tIyAgIHJlc3Qgc2hvdWxkIGJlIGxvd2VyIGNhc2UsIGZvciBpbnN0YW5jZTogJ0d0aycsICdDbHV0dGVyJywgJ0NsdXR0ZXJHdGsnLgotLSMgICBJZiBub3QgcHJlc2VudCB0aGUgbmFtZXNwYWNlIHdpbGwgYmUgZmV0Y2hlZCBmcm9tIHRoZSBnaXIgZmlsZW5hbWUsCi0tIyAgIHRoZSBwYXJ0IGJlZm9yZSB0aGUgZmlyc3QgZGFzaC4gRm9yICdHdGstMi4wJywgbmFtZXNwYWNlIHdpbGwgYmUgJ0d0aycuCi0tIyBWRVJTSU9OIC0gVmVyc2lvbiBvZiB0aGUgZ2lyLCBpZiBub3QgcHJlc2VudCwgd2lsbCBiZSBmZXRjaGVkIGZyb20gZ2lyCi0tIyBmaWxlbmFtZSwgdGhlIHBhcnQgYWZ0ZXIgdGhlIGZpcnN0IGRhc2guIEZvciAnR3RrLTIuMCcsIHZlcnNpb24gd2lsbCBiZSAnMi4wJy4KLS0jIExJQlRPT0wgLSBDb21tYW5kIHRvIGludm9rZSBsaWJ0b29sLCB1c3VhbGx5IHNldCBieSBhdXRvbWFrZQotLSMgU0NBTk5FUkZMQUdTIC0gRmxhZ3MgdG8gcGFzcyBpbiB0byB0aGUgc2Nhbm5lciwgc2VlIGctaXItc2Nhbm5lcigxKSBmb3IgYSBsaXN0Ci0tIyBDRkxBR1MgLSBGbGFncyB0byBwYXNzIGluIHRvIHRoZSBwYXJzZXIgd2hlbiBzY2FubmluZyBoZWFkZXJzCi0tIyBMREZMQUdTIC0gTGlua2VyIGZsYWdzIHVzZWQgYnkgdGhlIHNjYW5uZXIKLS0jIFBBQ0tBR0VTIC0gbGlzdCBvZiBwa2ctY29uZmlnIG5hbWVzIHdoaWNoIGNmbGFncyBhcmUgcmVxdWlyZWQgdG8gcGFyc2UKLS0jICAgdGhlIGhlYWRlcnMgb2YgdGhpcyBnaXIKLS0jIElOQ0xVREVTIC0gR2lyIGZpbGVzIHRvIGluY2x1ZGUgd2l0aG91dCB0aGUgLmdpciBzdWZmaXgsIGZvciBpbnN0YW5jZQotLSMgICBHTGliLTIuMCwgR3RrLTIuMC4gVGhpcyBpcyBuZWVkZWQgZm9yIGFsbCBsaWJyYXJpZXMgd2hpY2ggeW91IGRlcGVuZCBvbiB0aGF0Ci0tIyAgIHByb3ZpZGVzIGludHJvc3BlY3Rpb24gaW5mb3JtYXRpb24uCi0tIyBFWFBPUlRfUEFDS0FHRVMgLSBsaXN0IG9mIHBrZy1jb25maWcgbmFtZXMgdGhhdCBhcmUgcHJvdmlkZWQgYnkgdGhpcyBnaXIuCi0tIyAgIEJ5IGRlZmF1bHQgdGhlIG5hbWVzIGluIHRoZSBQQUNLQUdFUyB2YXJpYWJsZSB3aWxsIGJlIHVzZWQuCi0tIwotLQotLWRlZmluZSBpbnRyb3NwZWN0aW9uLXNjYW5uZXIKLS0KLS0jIEJhc2ljIHNhbml0eSBjaGVjaywgdG8gbWFrZSBzdXJlIHJlcXVpcmVkIHZhcmlhYmxlcyBhcmUgc2V0Ci0tJChpZiAkKCQoX2dpcl9uYW1lKV9GSUxFUyksLCQoZXJyb3IgTmVlZCB0byBkZWZpbmUgJChfZ2lyX25hbWUpX0ZJTEVTKSkKLS0kKGlmICQob3IgJChmaW5kc3RyaW5nIC0taGVhZGVyLW9ubHksJCgkKF9naXJfbmFtZSlfU0NBTk5FUkZMQUdTKSksCi0tICAgICAgICAgICQoJChfZ2lyX25hbWUpX0xJQlMpLAotLSAgICAgICAgICAkKCQoX2dpcl9uYW1lKV9QUk9HUkFNKSksLAotLSAgICAkKGVycm9yIE5lZWQgdG8gZGVmaW5lICQoX2dpcl9uYW1lKV9MSUJTIG9yICQoX2dpcl9uYW1lKV9QUk9HUkFNKSkKLS0KLS0jIE9ubHkgZGVwZW5kZW5jaWVzIHdlIGtub3cgYXJlIGFjdHVhbGx5IGZpbGVuYW1lcyBnb2VzIGludG8gX0ZJTEVTLCBtYWtlCi0tIyBzdXJlIHRoZXNlIGFyZSBidWlsdCBiZWZvcmUgcnVubmluZyB0aGUgc2Nhbm5lci4gTGlicmFyaWVzIGFuZCBwcm9ncmFtcwotLSMgbmVlZHMgdG8gYmUgYWRkZWQgbWFudWFsbHkuCi0tJCgxKTogJCQoJChfZ2lyX25hbWUpX0ZJTEVTKQotLQlAICQoTUtESVJfUCkgJChkaXIgJCgxKSkKLS0JJChfZ2lyX3NpbGVudF9zY2FubmVyX3ByZWZpeCkgJChJTlRST1NQRUNUSU9OX1NDQU5ORVJfRU5WKSAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgJChfZ2lyX3NpbGVudF9zY2FubmVyX29wdHMpIFwKLS0JJChJTlRST1NQRUNUSU9OX1NDQU5ORVJfQVJHUykgXAotLQkgIC0tbmFtZXNwYWNlPSQoX2dpcl9uYW1lc3BhY2UpIFwKLS0JICAtLW5zdmVyc2lvbj0kKF9naXJfdmVyc2lvbikgXAotLQkgICQoX2dpcl9saWJ0b29sKSBcCi0tCSAgJChfZ2lyX3BhY2thZ2VzKSBcCi0tCSAgJChfZ2lyX2luY2x1ZGVzKSBcCi0tCSAgJChfZ2lyX2V4cG9ydF9wYWNrYWdlcykgXAotLQkgICQoX2dpcl9wcm9ncmFtKSBcCi0tCSAgJChfZ2lyX2xpYnJhcmllcykgXAotLQkgICQoJChfZ2lyX25hbWUpX1NDQU5ORVJGTEFHUykgXAotLQkgICQoJChfZ2lyX25hbWUpX0NGTEFHUykgXAotLQkgICQoJChfZ2lyX25hbWUpX0xERkxBR1MpIFwKLS0JICAkJF4gXAotLQkgIC0tb3V0cHV0ICQoMSkKLS1lbmRlZgotLQotLSQoZm9yZWFjaCBnaXIsJChJTlRST1NQRUNUSU9OX0dJUlMpLCQoZXZhbCAkKGNhbGwgaW50cm9zcGVjdGlvbi1zY2FubmVyLCQoZ2lyKSkpKQotLQotLSMKLS0jIENvbXBpbGVzIGEgZ2lyIGludG8gYSB0eXBlbGliCi0tIyAkKDEpOiBnaXIgZmlsZW5hbWUgKGlucHV0KQotLSMgJCgyKTogdHlwZWxpYiBmaWxlbmFtZSAob3V0cHV0KQotLSMKLS1kZWZpbmUgaW50cm9zcGVjdGlvbi1jb21waWxlcgotLSQoX2dpcl9zaWxlbnRfY29tcGlsZXIpICQoSU5UUk9TUEVDVElPTl9DT01QSUxFUikgJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSX0FSR1MpIC0taW5jbHVkZWRpcj0uICQoMSkgLW8gJCgyKQotLWVuZGVmCi0tCi0tIyBTaW1wbGUgcnVsZSB0byBjb21waWxlIGEgdHlwZWxpYi4KLS0lLnR5cGVsaWI6ICUuZ2lyCi0tCSQoY2FsbCBpbnRyb3NwZWN0aW9uLWNvbXBpbGVyLCQ8LCRAKQotZGlmZiAtLWdpdCBhL2ludHJvc3BlY3Rpb24ubTQgYi9pbnRyb3NwZWN0aW9uLm00Ci1kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IGQ4OWMzZDkuLjAwMDAwMDAKLS0tLSBhL2ludHJvc3BlY3Rpb24ubTQKLSsrKyAvZGV2L251bGwKLUBAIC0xLDk2ICswLDAgQEAKLS1kbmwgLSotIG1vZGU6IGF1dG9jb25mIC0qLQotLWRubCBDb3B5cmlnaHQgMjAwOSBKb2hhbiBEYWhsaW4KLS1kbmwKLS1kbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBhdXRob3IocykgZ2l2ZXMgdW5saW1pdGVkCi0tZG5sIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0Ci0tZG5sIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgotLWRubAotLQotLSMgc2VyaWFsIDEKLS0KLS1tNF9kZWZpbmUoW19HT0JKRUNUX0lOVFJPU1BFQ1RJT05fQ0hFQ0tfSU5URVJOQUxdLAotLVsKLS0gICAgQUNfQkVGT1JFKFtBQ19QUk9HX0xJQlRPT0xdLFskMF0pZG5sIHNldHVwIGxpYnRvb2wgZmlyc3QKLS0gICAgQUNfQkVGT1JFKFtBTV9QUk9HX0xJQlRPT0xdLFskMF0pZG5sIHNldHVwIGxpYnRvb2wgZmlyc3QKLS0gICAgQUNfQkVGT1JFKFtMVF9JTklUXSxbJDBdKWRubCBzZXR1cCBsaWJ0b29sIGZpcnN0Ci0tCi0tICAgIGRubCBlbmFibGUvZGlzYWJsZSBpbnRyb3NwZWN0aW9uCi0tICAgIG00X2lmKFskMl0sIFtyZXF1aXJlXSwKLS0gICAgW2RubAotLSAgICAgICAgZW5hYmxlX2ludHJvc3BlY3Rpb249eWVzCi0tICAgIF0sW2RubAotLSAgICAgICAgQUNfQVJHX0VOQUJMRShpbnRyb3NwZWN0aW9uLAotLSAgICAgICAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1pbnRyb3NwZWN0aW9uWz1APDpAbm8vYXV0by95ZXNAOj5AXV0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0VuYWJsZSBpbnRyb3NwZWN0aW9uIGZvciB0aGlzIGJ1aWxkXSksLCAKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZW5hYmxlX2ludHJvc3BlY3Rpb249YXV0b10pCi0tICAgIF0pZG5sCi0tCi0tICAgIEFDX01TR19DSEVDS0lORyhbZm9yIGdvYmplY3QtaW50cm9zcGVjdGlvbl0pCi0tCi0tICAgIGRubCBwcmVzZW5jZS92ZXJzaW9uIGNoZWNraW5nCi0tICAgIEFTX0NBU0UoWyRlbmFibGVfaW50cm9zcGVjdGlvbl0sCi0tICAgIFtub10sIFtkbmwKLS0gICAgICAgIGZvdW5kX2ludHJvc3BlY3Rpb249Im5vIChkaXNhYmxlZCwgdXNlIC0tZW5hYmxlLWludHJvc3BlY3Rpb24gdG8gZW5hYmxlKSIKLS0gICAgXSxkbmwKLS0gICAgW3llc10sW2RubAotLSAgICAgICAgUEtHX0NIRUNLX0VYSVNUUyhbZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMF0sLAotLSAgICAgICAgICAgICAgICAgICAgICAgICBBQ19NU0dfRVJST1IoW2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAgaXMgbm90IGluc3RhbGxlZF0pKQotLSAgICAgICAgUEtHX0NIRUNLX0VYSVNUUyhbZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMCA+PSAkMV0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2ludHJvc3BlY3Rpb249eWVzLAotLSAgICAgICAgICAgICAgICAgICAgICAgICBBQ19NU0dfRVJST1IoW1lvdSBuZWVkIHRvIGhhdmUgZ29iamVjdC1pbnRyb3NwZWN0aW9uID49ICQxIGluc3RhbGxlZCB0byBidWlsZCBBQ19QQUNLQUdFX05BTUVdKSkKLS0gICAgXSxkbmwKLS0gICAgW2F1dG9dLFtkbmwKLS0gICAgICAgIFBLR19DSEVDS19FWElTVFMoW2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAgPj0gJDFdLCBmb3VuZF9pbnRyb3NwZWN0aW9uPXllcywgZm91bmRfaW50cm9zcGVjdGlvbj1ubykKLS0JZG5sIENhbm9uaWNhbGl6ZSBlbmFibGVfaW50cm9zcGVjdGlvbgotLQllbmFibGVfaW50cm9zcGVjdGlvbj0kZm91bmRfaW50cm9zcGVjdGlvbgotLSAgICBdLGRubAotLSAgICBbZG5sCQotLSAgICAgICAgQUNfTVNHX0VSUk9SKFtpbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byAtLWVuYWJsZS1pbnRyb3NwZWN0aW9uLCBzaG91bGQgYmUgb25lIG9mIEA8OkBuby9hdXRvL3llc0A6PkBdKQotLSAgICBdKWRubAotLQotLSAgICBBQ19NU0dfUkVTVUxUKFskZm91bmRfaW50cm9zcGVjdGlvbl0pCi0tCi0tICAgIElOVFJPU1BFQ1RJT05fU0NBTk5FUj0KLS0gICAgSU5UUk9TUEVDVElPTl9DT01QSUxFUj0KLS0gICAgSU5UUk9TUEVDVElPTl9HRU5FUkFURT0KLS0gICAgSU5UUk9TUEVDVElPTl9HSVJESVI9Ci0tICAgIElOVFJPU1BFQ1RJT05fVFlQRUxJQkRJUj0KLS0gICAgaWYgdGVzdCAieCRmb3VuZF9pbnRyb3NwZWN0aW9uIiA9ICJ4eWVzIjsgdGhlbgotLSAgICAgICBJTlRST1NQRUNUSU9OX1NDQU5ORVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z19pcl9zY2FubmVyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0tICAgICAgIElOVFJPU1BFQ1RJT05fQ09NUElMRVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z19pcl9jb21waWxlciBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotLSAgICAgICBJTlRST1NQRUNUSU9OX0dFTkVSQVRFPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdfaXJfZ2VuZXJhdGUgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLS0gICAgICAgSU5UUk9TUEVDVElPTl9HSVJESVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z2lyZGlyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0tICAgICAgIElOVFJPU1BFQ1RJT05fVFlQRUxJQkRJUj0iJCgkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXR5cGVsaWJkaXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMCkiCi0tICAgICAgIElOVFJPU1BFQ1RJT05fQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotLSAgICAgICBJTlRST1NQRUNUSU9OX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotLSAgICAgICBJTlRST1NQRUNUSU9OX01BS0VGSUxFPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWRhdGFkaXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAvZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC9NYWtlZmlsZS5pbnRyb3NwZWN0aW9uCi0tICAgIGZpCi0tICAgIEFDX1NVQlNUKElOVFJPU1BFQ1RJT05fU0NBTk5FUikKLS0gICAgQUNfU1VCU1QoSU5UUk9TUEVDVElPTl9DT01QSUxFUikKLS0gICAgQUNfU1VCU1QoSU5UUk9TUEVDVElPTl9HRU5FUkFURSkKLS0gICAgQUNfU1VCU1QoSU5UUk9TUEVDVElPTl9HSVJESVIpCi0tICAgIEFDX1NVQlNUKElOVFJPU1BFQ1RJT05fVFlQRUxJQkRJUikKLS0gICAgQUNfU1VCU1QoSU5UUk9TUEVDVElPTl9DRkxBR1MpCi0tICAgIEFDX1NVQlNUKElOVFJPU1BFQ1RJT05fTElCUykKLS0gICAgQUNfU1VCU1QoSU5UUk9TUEVDVElPTl9NQUtFRklMRSkKLS0KLS0gICAgQU1fQ09ORElUSU9OQUwoSEFWRV9JTlRST1NQRUNUSU9OLCB0ZXN0ICJ4JGZvdW5kX2ludHJvc3BlY3Rpb24iID0gInh5ZXMiKQotLV0pCi0tCi0tCi0tZG5sIFVzYWdlOgotLWRubCAgIEdPQkpFQ1RfSU5UUk9TUEVDVElPTl9DSEVDSyhbbWluaW11bS1nLWktdmVyc2lvbl0pCi0tCi0tQUNfREVGVU4oW0dPQkpFQ1RfSU5UUk9TUEVDVElPTl9DSEVDS10sCi0tWwotLSAgX0dPQkpFQ1RfSU5UUk9TUEVDVElPTl9DSEVDS19JTlRFUk5BTChbJDFdKQotLV0pCi0tCi0tZG5sIFVzYWdlOgotLWRubCAgIEdPQkpFQ1RfSU5UUk9TUEVDVElPTl9SRVFVSVJFKFttaW5pbXVtLWctaS12ZXJzaW9uXSkKLS0KLS0KLS1BQ19ERUZVTihbR09CSkVDVF9JTlRST1NQRUNUSU9OX1JFUVVJUkVdLAotLVsKLS0gIF9HT0JKRUNUX0lOVFJPU1BFQ1RJT05fQ0hFQ0tfSU5URVJOQUwoWyQxXSwgW3JlcXVpcmVdKQotLV0pCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy1zdHViL2d0ay1kb2Mtc3R1Yl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2Mtc3R1Yi9ndGstZG9jLXN0dWJfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NGU0OWMxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy1zdHViL2d0ay1kb2Mtc3R1Yl9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1TVU1NQVJZID0gIlN0dWIgaW1wbGVtZW50YXRpb24gb2YgZ3RrLWRvYyIKLURFU0NSSVBUSU9OID0gIlN0dWIgaW1wbGVtZW50YXRpb24gb2YgZ3RrLWRvYywgYXMgd2UgZG9uJ3Qgd2FudCB0byBidWlsZCB0aGUgQVBJIGRvY3VtZW50YXRpb24iCi1TRUNUSU9OID0gIngxMS9iYXNlIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgotCi1QUk9WSURFUyA9ICJndGstZG9jIgotCi1TUkNSRVYgPSAiMWRlYTI2NjU5M2VkYjc2NmQ2ZDg5OGM3OTQ1MWVmMTkzZWIxN2NmYSIKLVBWID0gIjEuMStnaXQke1NSQ1BWfSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQuZ25vbWUub3JnLyR7QlBOfSBcCi0JICAgZmlsZTovLzAwMDEtUmV2ZXJ0LUltcG9ydC1pbnRyb3NwZWN0aW9uLXN0dWItbWFjaGluZXJ5LXRvby5wYXRjaCBcCi0JICAiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLQkuL2NvbmZpZ3VyZSAtLXByZWZpeD0ke3ByZWZpeH0gXAotICAgICAgICAgICAgICAgICAgICAtLXN5c2NvbmZkaXI9JHtzeXNjb25mZGlyfSBcCi0gICAgICAgICAgICAgICAgICAgIC0tYmluZGlyPSR7YmluZGlyfSBcCi0gICAgICAgICAgICAgICAgICAgIC0tbGliZGlyPSR7bGliZGlyfSBcCi0gICAgICAgICAgICAgICAgICAgIC0tZGF0YWRpcj0ke2RhdGFkaXJ9IFwKLSAgICAgICAgICAgICAgICAgICAgLS1kYXRhcm9vdGRpcj0ke2RhdGFkaXJ9Ci19Ci0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9IiR7RH0iCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9maWxlcy8wMDAxLURvLW5vdC1lcnJvci1vdXQtaWYtcGVybC1pcy1ub3QtZm91bmQtb3ItaXRzLXZlcnNpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvMDAwMS1Eby1ub3QtZXJyb3Itb3V0LWlmLXBlcmwtaXMtbm90LWZvdW5kLW9yLWl0cy12ZXJzaW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhOTAyODcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvMDAwMS1Eby1ub3QtZXJyb3Itb3V0LWlmLXBlcmwtaXMtbm90LWZvdW5kLW9yLWl0cy12ZXJzaW9uLnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKK0Zyb20gZTczMzI0MWZiNTgwZjAzMmVmYmJlNjg0ZWMzNWQ0YzlkMjdmMTU5NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVGh1LCA4IFNlcCAyMDE2IDEzOjM4OjM5ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIERvIG5vdCBlcnJvciBvdXQgaWYgcGVybCBpcyBub3QgZm91bmQgb3IgaXRzIHZlcnNpb24gaXMgdG9vCisgb2xkLgorCitUaGlzIGFsbG93cyB1c2UgdG8gYXZvaWQgZGVwZW5kaW5nIG9uIHBlcmwtbmF0aXZlIGlmIHdlJ3JlIG5vdCBnb2luZwordG8gdXNlIGl0ICh3aGVuIGFwaS1kb2NzIGFyZSBkaXNhYmxlZCkuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggMmE2MWQ2ZS4uMjk0MTViZCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMzYsNyArMzYsNyBAQCBkbmwgQ2hlY2sgZm9yIFBlcmwuCisgZG5sCisgQUNfUEFUSF9QUk9HKFtQRVJMXSwgW3BlcmxdKQorIGlmIHRlc3QgLXogIiRQRVJMIjsgdGhlbgorLQlBQ19NU0dfRVJST1IoW3Blcmwgbm90IGZvdW5kXSkKKysJQUNfTVNHX1dBUk4oW3Blcmwgbm90IGZvdW5kXSkKKyBmaQorIAorIEFDX01TR19DSEVDS0lORyhbaWYgUGVybCB2ZXJzaW9uID49IDUuMTguMF0pCitAQCAtNDQsNyArNDQsNyBAQCBpZiAiJFBFUkwiIC1lICJyZXF1aXJlIHY1LjE4LjAiOyB0aGVuCisgCUFDX01TR19SRVNVTFQoW3llc10pCisgZWxzZQorIAlBQ19NU0dfUkVTVUxUKFtub10pCistCUFDX01TR19FUlJPUihbcGVybCA+PSA1LjE4LjAgaXMgcmVxdWlyZWQgZm9yIGd0ay1kb2NdKQorKwlBQ19NU0dfV0FSTihbcGVybCA+PSA1LjE4LjAgaXMgcmVxdWlyZWQgZm9yIGd0ay1kb2NdKQorIGZpCisgCisgZG5sCistLSAKKzIuOS4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9maWxlcy8wMDAxLURvLW5vdC1lcnJvci1vdXQtaWYteHNsdHByb2MtaXMtbm90LWZvdW5kLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2ZpbGVzLzAwMDEtRG8tbm90LWVycm9yLW91dC1pZi14c2x0cHJvYy1pcy1ub3QtZm91bmQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTlhZTRkNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9maWxlcy8wMDAxLURvLW5vdC1lcnJvci1vdXQtaWYteHNsdHByb2MtaXMtbm90LWZvdW5kLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gOGI3ZmJiYjQwNTk1OWYyODY4YWQ2ZWFkZDdkZDAwMDE4NzU4YThhNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogV2VkLCA3IFNlcCAyMDE2IDE0OjUyOjA0ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIERvIG5vdCBlcnJvciBvdXQgaWYgeHNsdHByb2MgaXMgbm90IGZvdW5kLgorCitUaGlzIGFsbG93cyB1cyB0byBkcm9wIHRoZSBoYXJkIHhzbHRwcm9jIGRlcGVuZGVuY3ksIGlmIHdlJ3JlIG5vdAorZ29pbmcgdG8gYWN0dWFsbHkgcnVuIHRoZSBndGtkb2Mgc2NyaXB0cyAod2hlbiBhcGkgZG9jdW1lbnRhdGlvbiBpcworZGlzYWJsZWQpLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggYjBjODhkNy4uMmE2MWQ2ZSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNTgsNyArNTgsNyBAQCBkbmwgQ2hlY2sgZm9yIHhzbHRwcm9jCisgZG5sCisgQUNfUEFUSF9QUk9HKFtYU0xUUFJPQ10sIFt4c2x0cHJvY10pCisgaWYgdGVzdCAteiAiJFhTTFRQUk9DIjsgdGhlbgorLQlBQ19NU0dfRVJST1IoW3hzbHRwcm9jIG5vdCBmb3VuZF0pCisrCUFDX01TR19XQVJOKFt4c2x0cHJvYyBub3QgZm91bmRdKQorIGZpCisgCisgZG5sCistLSAKKzIuOS4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9maWxlcy8wMDAxLURvLW5vdC1oYXJkb2NvZGUtcGF0aHMtdG8tcGVybC1weXRob24taW4tc2NyaXB0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9maWxlcy8wMDAxLURvLW5vdC1oYXJkb2NvZGUtcGF0aHMtdG8tcGVybC1weXRob24taW4tc2NyaXB0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzdmYzlhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2ZpbGVzLzAwMDEtRG8tbm90LWhhcmRvY29kZS1wYXRocy10by1wZXJsLXB5dGhvbi1pbi1zY3JpcHRzLnBhdGNoCkBAIC0wLDAgKzEsMTM5IEBACitGcm9tIDZmYWI4MmI5M2M3YmQzMDFlYjQyNDQ4NTE1YjAyZjdjYjMzMDY4OTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMzEgQXVnIDIwMTYgMTY6NDQ6NDYgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gRG8gbm90IGhhcmRvY29kZSBwYXRocyB0byBwZXJsL3B5dGhvbiBpbiBzY3JpcHRzLgorCitEb2luZyBzbyB3aGVuIHRoZSBpbnRlcnByZXRlcnMgYXJlIHNvbWV3aGVyZSBkZWVwIGluIGEgc3lzcm9vdCBkaXJlY3RvcnkKK2NhbiByZWFjaCB0aGUgc2hlYmFuZyBsaW5lIGxpbWl0LCBhbmQgcmVzdWx0aW5nIHNjcmlwdHMgd291bGRuJ3Qgd29yaworb24gdGFyZ2V0cyBlaXRoZXIuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgZ3RrZG9jLWNoZWNrLmluICAgICB8IDIgKy0KKyBndGtkb2MtY29tbW9uLnBsLmluIHwgMiArLQorIGd0a2RvYy1kZXBzY2FuLmluICAgfCAyICstCisgZ3RrZG9jLWZpeHhyZWYuaW4gICB8IDIgKy0KKyBndGtkb2MtbWtkYi5pbiAgICAgIHwgMiArLQorIGd0a2RvYy1ta3RtcGwuaW4gICAgfCAyICstCisgZ3RrZG9jLXJlYmFzZS5pbiAgICB8IDIgKy0KKyBndGtkb2Mtc2Nhbi5pbiAgICAgIHwgMiArLQorIGd0a2RvYy1zY2FuZ29iai5pbiAgfCAyICstCisgdGVzdHMvdG9vbHMuc2guaW4gICB8IDQgKystLQorIDEwIGZpbGVzIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ3RrZG9jLWNoZWNrLmluIGIvZ3RrZG9jLWNoZWNrLmluCitpbmRleCA1NjBkNjliLi5iNjA4NTdmIDEwMDc1NQorLS0tIGEvZ3RrZG9jLWNoZWNrLmluCisrKysgYi9ndGtkb2MtY2hlY2suaW4KK0BAIC0xLDQgKzEsNCBAQAorLSMhQFBFUkxAIC13CisrIyEvdXNyL2Jpbi9lbnYgcGVybAorICMgLSotIGNwZXJsIC0qLQorICMKKyAjIGd0ay1kb2MgLSBHVEsgRG9jQm9vayBkb2N1bWVudGF0aW9uIGdlbmVyYXRvci4KK2RpZmYgLS1naXQgYS9ndGtkb2MtY29tbW9uLnBsLmluIGIvZ3RrZG9jLWNvbW1vbi5wbC5pbgoraW5kZXggNDc0NzM5Ni4uY2ZhZGI3OCAxMDA2NDQKKy0tLSBhL2d0a2RvYy1jb21tb24ucGwuaW4KKysrKyBiL2d0a2RvYy1jb21tb24ucGwuaW4KK0BAIC0xLDQgKzEsNCBAQAorLSMhQFBFUkxAIC13CisrIyEvdXNyL2Jpbi9lbnYgcGVybAorICMgLSotIGNwZXJsIC0qLQorICMKKyAjIGd0ay1kb2MgLSBHVEsgRG9jQm9vayBkb2N1bWVudGF0aW9uIGdlbmVyYXRvci4KK2RpZmYgLS1naXQgYS9ndGtkb2MtZGVwc2Nhbi5pbiBiL2d0a2RvYy1kZXBzY2FuLmluCitpbmRleCA4M2FmMDFiLi45MTdlMjQ3IDEwMDY0NAorLS0tIGEvZ3RrZG9jLWRlcHNjYW4uaW4KKysrKyBiL2d0a2RvYy1kZXBzY2FuLmluCitAQCAtMSw0ICsxLDQgQEAKKy0jIUBQWVRIT05ACisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisgCisgaW1wb3J0IGd6aXAsIG9zLnBhdGgsIHJlCisgCitkaWZmIC0tZ2l0IGEvZ3RrZG9jLWZpeHhyZWYuaW4gYi9ndGtkb2MtZml4eHJlZi5pbgoraW5kZXggM2Q5ZThkMC4uZDU1MTkwYiAxMDA3NTUKKy0tLSBhL2d0a2RvYy1maXh4cmVmLmluCisrKysgYi9ndGtkb2MtZml4eHJlZi5pbgorQEAgLTEsNCArMSw0IEBACistIyFAUEVSTEAgLXcKKysjIS91c3IvYmluL2VudiBwZXJsCisgIyAtKi0gY3BlcmwgLSotCisgIworICMgZ3RrLWRvYyAtIEdUSyBEb2NCb29rIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yLgorZGlmZiAtLWdpdCBhL2d0a2RvYy1ta2RiLmluIGIvZ3RrZG9jLW1rZGIuaW4KK2luZGV4IDhkZDZkNWUuLmQ4MDg3NTAgMTAwNzU1CistLS0gYS9ndGtkb2MtbWtkYi5pbgorKysrIGIvZ3RrZG9jLW1rZGIuaW4KK0BAIC0xLDQgKzEsNCBAQAorLSMhQFBFUkxAIC13CisrIyEvdXNyL2Jpbi9lbnYgcGVybAorICMgLSotIGNwZXJsIC0qLQorICMKKyAjIGd0ay1kb2MgLSBHVEsgRG9jQm9vayBkb2N1bWVudGF0aW9uIGdlbmVyYXRvci4KK2RpZmYgLS1naXQgYS9ndGtkb2MtbWt0bXBsLmluIGIvZ3RrZG9jLW1rdG1wbC5pbgoraW5kZXggYzY0ZGZkMy4uMmY0NmMxOCAxMDA3NTUKKy0tLSBhL2d0a2RvYy1ta3RtcGwuaW4KKysrKyBiL2d0a2RvYy1ta3RtcGwuaW4KK0BAIC0xLDQgKzEsNCBAQAorLSMhQFBFUkxAIC13CisrIyEvdXNyL2Jpbi9lbnYgcGVybAorICMgLSotIGNwZXJsIC0qLQorICMKKyAjIGd0ay1kb2MgLSBHVEsgRG9jQm9vayBkb2N1bWVudGF0aW9uIGdlbmVyYXRvci4KK2RpZmYgLS1naXQgYS9ndGtkb2MtcmViYXNlLmluIGIvZ3RrZG9jLXJlYmFzZS5pbgoraW5kZXggMzc1NDgyZC4uY2YwNWI0NSAxMDA2NDQKKy0tLSBhL2d0a2RvYy1yZWJhc2UuaW4KKysrKyBiL2d0a2RvYy1yZWJhc2UuaW4KK0BAIC0xLDQgKzEsNCBAQAorLSMhQFBFUkxAIC13CisrIyEvdXNyL2Jpbi9lbnYgcGVybAorICMgLSotIGNwZXJsIC0qLQorICMKKyAjIGd0ay1kb2MgLSBHVEsgRG9jQm9vayBkb2N1bWVudGF0aW9uIGdlbmVyYXRvci4KK2RpZmYgLS1naXQgYS9ndGtkb2Mtc2Nhbi5pbiBiL2d0a2RvYy1zY2FuLmluCitpbmRleCAwNDhlNWM5Li43OGM2MTM2IDEwMDc1NQorLS0tIGEvZ3RrZG9jLXNjYW4uaW4KKysrKyBiL2d0a2RvYy1zY2FuLmluCitAQCAtMSw0ICsxLDQgQEAKKy0jIUBQRVJMQCAtdworKyMhL3Vzci9iaW4vZW52IHBlcmwKKyAjIC0qLSBjcGVybCAtKi0KKyAjCisgIyBndGstZG9jIC0gR1RLIERvY0Jvb2sgZG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IuCitkaWZmIC0tZ2l0IGEvZ3RrZG9jLXNjYW5nb2JqLmluIGIvZ3RrZG9jLXNjYW5nb2JqLmluCitpbmRleCBmYjY2Yjc2Li42N2VlOGY3IDEwMDY0NAorLS0tIGEvZ3RrZG9jLXNjYW5nb2JqLmluCisrKysgYi9ndGtkb2Mtc2NhbmdvYmouaW4KK0BAIC0xLDQgKzEsNCBAQAorLSMhQFBFUkxAIC13CisrIyEvdXNyL2Jpbi9lbnYgcGVybAorICMgLSotIGNwZXJsIC0qLQorICMKKyAjIGd0ay1kb2MgLSBHVEsgRG9jQm9vayBkb2N1bWVudGF0aW9uIGdlbmVyYXRvci4KK2RpZmYgLS1naXQgYS90ZXN0cy90b29scy5zaC5pbiBiL3Rlc3RzL3Rvb2xzLnNoLmluCitpbmRleCBhMTE0YTQyLi43MDczODgzIDEwMDY0NAorLS0tIGEvdGVzdHMvdG9vbHMuc2guaW4KKysrKyBiL3Rlc3RzL3Rvb2xzLnNoLmluCitAQCAtMTEsNyArMTEsNyBAQCBlY2hvICJSdW5uaW5nIHN1aXRlKHMpOiBndGstZG9jLSRzdWl0ZSI7CisgCisgIyB0ZXN0IHBlcmwgc2NyaXB0cworIGZvciBmaWxlIGluIGd0a2RvYy1jaGVjayBndGtkb2MtZml4eHJlZiBndGtkb2MtbWtkYiBndGtkb2MtbWt0bXBsIGd0a2RvYy1yZWJhc2UgZ3RrZG9jLXNjYW4gZ3RrZG9jLXNjYW5nb2JqIDsgZG8KKy0gIEBQRVJMQCAtY3dUIGB3aGljaCAkZmlsZWAKKysgIHBlcmwgLWN3VCBgd2hpY2ggJGZpbGVgCisgICBpZiB0ZXN0ICQ/ID0gMSA7IHRoZW4gZmFpbGVkPWBleHByICRmYWlsZWQgKyAxYDsgZmkKKyAgIHRlc3RlZD1gZXhwciAkdGVzdGVkICsgMWAKKyBkb25lCitAQCAtMzQsNyArMzQsNyBAQCBkb25lCisgCisgCisgIyB0ZXN0IHB5dGhvbiBzY3JpcHRzCistQFBZVEhPTkAgLW0gcHlfY29tcGlsZSBgd2hpY2ggZ3RrZG9jLWRlcHNjYW5gCisrcHl0aG9uIC1tIHB5X2NvbXBpbGUgYHdoaWNoIGd0a2RvYy1kZXBzY2FuYAorIGlmIHRlc3QgJD8gIT0gMCA7IHRoZW4gZmFpbGVkPWBleHByICRmYWlsZWQgKyAxYDsgZmkKKyB0ZXN0ZWQ9YGV4cHIgJHRlc3RlZCArIDFgCisgCistLSAKKzIuOS4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9maWxlcy9wa2ctY29uZmlnLW5hdGl2ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9maWxlcy9wa2ctY29uZmlnLW5hdGl2ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzY4ODcwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2ZpbGVzL3BrZy1jb25maWctbmF0aXZlLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK1VzZSBuYXRpdmUgcGtnLWNvbmZpZyB3aGVuIGxvb2tpbmcgZm9yIGd0ay1kb2MuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworZGlmZiAtLWdpdCBhL2d0ay1kb2MubTQgYi9ndGstZG9jLm00CitpbmRleCAzNjc1NTQzLi45NDg4MWFlIDEwMDY0NAorLS0tIGEvZ3RrLWRvYy5tNAorKysrIGIvZ3RrLWRvYy5tNAorQEAgLTEsNiArMSw2IEBACisgZG5sIC0qLSBtb2RlOiBhdXRvY29uZiAtKi0KKworLSMgc2VyaWFsIDIKKysjIHNlcmlhbCAyLjEKKworIGRubCBVc2FnZToKKyBkbmwgICBHVEtfRE9DX0NIRUNLKFttaW5pbXVtLWd0ay1kb2MtdmVyc2lvbl0pCitAQCAtMTAsMTEgKzEwLDE2IEBAIEFDX0RFRlVOKFtHVEtfRE9DX0NIRUNLXSwKKyAgIEFDX0JFRk9SRShbQUNfUFJPR19MSUJUT09MXSxbJDBdKWRubCBzZXR1cCBsaWJ0b29sIGZpcnN0CisgICBBQ19CRUZPUkUoW0FNX1BST0dfTElCVE9PTF0sWyQwXSlkbmwgc2V0dXAgbGlidG9vbCBmaXJzdAorCisrICBndGtkb2NfcGtnY29uZmlnX3NhdmU9JFBLR19DT05GSUcKKysgIFBLR19DT05GSUc9cGtnLWNvbmZpZy1uYXRpdmUKKysKKyAgIGlmZWxzZShbJDFdLFtdLFtndGtfZG9jX3JlcXVpcmVzPSJndGstZG9jIl0sW2d0a19kb2NfcmVxdWlyZXM9Imd0ay1kb2MgPj0gJDEiXSkKKyAgIEFDX01TR19DSEVDS0lORyhbZm9yIGd0ay1kb2NdKQorICAgUEtHX0NIRUNLX0VYSVNUUyhbJGd0a19kb2NfcmVxdWlyZXNdLFtoYXZlX2d0a19kb2M9eWVzXSxbaGF2ZV9ndGtfZG9jPW5vXSkKKyAgIEFDX01TR19SRVNVTFQoJGhhdmVfZ3RrX2RvYykKKworKyAgUEtHX0NPTkZJRz0kZ3RrZG9jX3BrZ2NvbmZpZ19zYXZlCisrCisgICBpZiB0ZXN0ICIkaGF2ZV9ndGtfZG9jIiA9ICJubyI7IHRoZW4KKyAgICAgICBBQ19NU0dfV0FSTihbCisgICBZb3Ugd2lsbCBub3QgYmUgYWJsZSB0byBjcmVhdGUgc291cmNlIHBhY2thZ2VzIHdpdGggJ21ha2UgZGlzdCcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9ndGstZG9jXzEuMjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZ3RrLWRvY18xLjI1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhZjk5NmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZ3RrLWRvY18xLjI1LmJiCkBAIC0wLDAgKzEsNTIgQEAKK1NVTU1BUlkgPSAiRG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IgZm9yIGdsaWItYmFzZWQgc29mdHdhcmUiCitERVNDUklQVElPTiA9ICJHdGstZG9jIGlzIGEgc2V0IG9mIHNjcmlwdHMgdGhhdCBleHRyYWN0IHNwZWNpYWxseSBmb3JtYXR0ZWQgY29tbWVudHMgXAorICAgICAgICAgICAgICAgZnJvbSBnbGliLWJhc2VkIHNvZnR3YXJlIGFuZCBwcm9kdWNlIGEgc2V0IG9mIGh0bWwgZG9jdW1lbnRhdGlvbiBmaWxlcyBmcm9tIHRoZW0iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lmd0ay5vcmcvZ3RrLWRvYy8iCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCisKK2luaGVyaXQgZ25vbWViYXNlCisKKyMgQ29uZmlndXJlIHRoZSBzY3JpcHRzIGNvcnJlY3RseSAoYW5kIGJ1aWxkIHRoZWlyIGRlcGVuZGVuY2llcykgb25seSBpZiB0aGV5IGFyZSBhY3R1YWxseQorIyBnb2luZyB0byBiZSB1c2VkOyBvdGhlcml3c2Ugd2UgbmVlZCBvbmx5IHRoZSBtNC9tYWtlZmlsZSBpbmNsdWRlcyBmcm9tIHRoZSBndGstZG9jIHRhcmJhbGwuCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJhcGktZG9jdW1lbnRhdGlvbiIsICJ3b3JraW5nLXNjcmlwdHMiLCAiIiwgZCl9IgorCisjIFRoaXMgd2lsbCBjYXVzZSB0YXJnZXQgZ3RrLWRvYyB0byBoYXJkY29kZSBwYXRocyBvZiBuYXRpdmUgZGVwZW5kZW5jaWVzCisjIGludG8gaXRzIHNjcmlwdHMuIFRoaXMgbWVhbnMgdGhhdCB0YXJnZXQgZ3RrLWRvYyBwYWNrYWdlIGlzIGJyb2tlbjsKKyMgaG9wZWZ1bGx5IG5vIG9uZSBtaW5kcyBiZWNhdXNlIGl0cyBzY3JpcHRzIGFyZSBub3QgdXNlZCBmb3IgYW55dGhpbmcgZHVyaW5nIGJ1aWxkCisjIGFuZCBzaG91bGRuJ3QgYmUgdXNlZCBvbiB0YXJnZXRzLgorUEFDS0FHRUNPTkZJR1t3b3JraW5nLXNjcmlwdHNdID0gIi0td2l0aC1oaWdobGlnaHQ9c291cmNlLWhpZ2hsaWdodCwtLXdpdGgtaGlnaGxpZ2h0PW5vLGxpYnhzbHQtbmF0aXZlIHhtbHRvLW5hdGl2ZSBzb3VyY2UtaGlnaGxpZ2h0LW5hdGl2ZSBwZXJsLW5hdGl2ZSIKKworIyBXZSBjYW5ub3QgdXNlIGhvc3QgcGVybCwgYmVjYXVzZSBpdCBtYXkgYmUgdG9vIG9sZCBmb3IgZ3RrLWRvYworRVhUUkFOQVRJVkVQQVRIICs9ICJwZXJsLW5hdGl2ZSIKKworU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtRG8tbm90LWhhcmRvY29kZS1wYXRocy10by1wZXJsLXB5dGhvbi1pbi1zY3JpcHRzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1lcnJvci1vdXQtaWYteHNsdHByb2MtaXMtbm90LWZvdW5kLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1lcnJvci1vdXQtaWYtcGVybC1pcy1ub3QtZm91bmQtb3ItaXRzLXZlcnNpb24ucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly9wa2ctY29uZmlnLW5hdGl2ZS5wYXRjaCIKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiMGRjNjU3MDk1MzExMmE0NjRhNDA5ZmI5OTI1OGNjYmMiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIxZWE0NmVkNDAwZTY1MDFmOTc1YWNhYWZlYTMxNDc5Y2VhOGYzMmY5MTFkY2E0ZGZmMDM2ZjU5ZTY0NjRmZDQyIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworIyBEbyBub3QgY2hlY2sgZm9yIFhNTCBjYXRhbG9ncyB3aGVuIGJ1aWxkaW5nIGJlY2F1c2UgdGhhdAorIyBpbmZvcm1hdGlvbiBpcyBub3QgdXNlZCBmb3IgYW55dGhpbmcgZHVyaW5nIGJ1aWxkLiBSZWNpcGUKKyMgZGVwZW5kZW5jaWVzIG1ha2Ugc3VyZSB3ZSBoYXZlIGFsbCB0aGUgcmlnaHQgYml0cy4KK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICAgICBzZWQgLWkgLWUgJ3MsXkpIX0NIRUNLX1hNTF9DQVRBTE9HLiosLCcgJHtTfS9jb25maWd1cmUuYWMKK30KKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vc2dtbCIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NtYWtlIgorRklMRVNfJHtQTn0tZG9jID0gIiIKKworU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGd0a2RvY19tYWtlZmlsZXNfc3lzcm9vdF9wcmVwcm9jZXNzIgorZ3RrZG9jX21ha2VmaWxlc19zeXNyb290X3ByZXByb2Nlc3MoKSB7CisgICAgICAgICMgUGF0Y2ggdGhlIGd0ay1kb2MgbWFrZWZpbGVzIHNvIHRoYXQgdGhlIHFlbXUgd3JhcHBlciBpcyB1c2VkIHRvIHJ1biB0cmFuc2llbnQgYmluYXJpZXMKKyAgICAgICAgIyBpbnN0ZWFkIG9mIGxpYnRvb2wgd3JhcHBlciBvciBydW5uaW5nIHRoZW0gZGlyZWN0bHkKKyAgICAgICAgc2VkIC1pIFwKKyAgICAgICAgICAgLWUgInN8R1RLRE9DX1JVTiA9Lip8R1RLRE9DX1JVTiA9IFwkKHRvcF9idWlsZGRpcikvZ3RrZG9jLXFlbXV3cmFwcGVyfCIgXAorICAgICAgICAgICAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9L2d0ay1kb2MvZGF0YS9ndGstZG9jKm1ha2UKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWVuZ2luZXMvZ3RrLWVuZ2luZXMtMi4yMC4yL2dsaWItMi4zMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWVuZ2luZXMvZ3RrLWVuZ2luZXMtMi4yMC4yL2dsaWItMi4zMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjBiODc4ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1lbmdpbmVzL2d0ay1lbmdpbmVzLTIuMjAuMi9nbGliLTIuMzIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1Gcm9tIDhkNDlhMzg2ZjQ2N2NiZjhlMDg0MmQyMjE4MTI2ZjY0M2U1MGY4MzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEb21pbmlxdWUgTGV1ZW5iZXJnZXIgPGRpbXN0YXJAb3BlbnN1c2Uub3JnPgotRGF0ZTogU3VuLCAyNyBOb3YgMjAxMSAxNDoyNDo1NyArMDAwMAotU3ViamVjdDogRml4IGJ1aWxkIHdpdGggZ2xpYiAyLjMxOiBPbmx5IGdsaWIuaCBjYW4gYmUgI2luY2x1ZGUnZC4gRml4ZXMgYnVnICM2NjQ5MTQKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi0tLS0KLWRpZmYgLS1naXQgYS9lbmdpbmVzL2NsZWFybG9va3Mvc3JjL2FuaW1hdGlvbi5jIGIvZW5naW5lcy9jbGVhcmxvb2tzL3NyYy9hbmltYXRpb24uYwotaW5kZXggMWY3YTQxZi4uNTZhOTI4NiAxMDA2NDQKLS0tLSBhL2VuZ2luZXMvY2xlYXJsb29rcy9zcmMvYW5pbWF0aW9uLmMKLSsrKyBiL2VuZ2luZXMvY2xlYXJsb29rcy9zcmMvYW5pbWF0aW9uLmMKLUBAIC0yOCw3ICsyOCw3IEBACi0gI2luY2x1ZGUgImFuaW1hdGlvbi5oIgotIAotICNpZmRlZiBIQVZFX1dPUktJTkdfQU5JTUFUSU9OCi0tI2luY2x1ZGUgPGdsaWIvZ3RpbWVyLmg+Ci0rI2luY2x1ZGUgPGdsaWIuaD4KLSAKLSBzdHJ1Y3QgX0FuaW1hdGlvbkluZm8gewotIAlHVGltZXIgKnRpbWVyOwotLS0KLWNnaXQgdjAuOS4wLjIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWVuZ2luZXMvZ3RrLWVuZ2luZXMtMi4yMC4yL3N1YnN0aXR1dGUtdGVzdHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1lbmdpbmVzL2d0ay1lbmdpbmVzLTIuMjAuMi9zdWJzdGl0dXRlLXRlc3RzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YzU1N2JhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWVuZ2luZXMvZ3RrLWVuZ2luZXMtMi4yMC4yL3N1YnN0aXR1dGUtdGVzdHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogTWFya28gTGluZHF2aXN0IDxjYXpmaTc0QGdtYWlsLmNvbT4KLWRpZmYgLU51cmQgZ3RrLWVuZ2luZXMtMi4yMC4yL2NvbmZpZ3VyZS5hYyBndGstZW5naW5lcy0yLjIwLjIvY29uZmlndXJlLmFjCi0tLS0gZ3RrLWVuZ2luZXMtMi4yMC4yL2NvbmZpZ3VyZS5hYwkyMDEwLTEwLTAxIDE1OjQyOjM3LjAwMDAwMDAwMCArMDMwMAotKysrIGd0ay1lbmdpbmVzLTIuMjAuMi9jb25maWd1cmUuYWMJMjAxMy0wOC0yMCAwMjo1MDoyNy45MzA1MTA1NjUgKzAzMDAKLUBAIC0xNjYsNiArMTY2LDkgQEAKLQotIEFDX1NVQlNUKERFVkVMT1BNRU5UX0NGTEFHUykKLQotK0FDX1NVQlNUKFtleHBvcnRlZF9zeW1ib2xzX3Rlc3RzXSwgW1skKEVYUE9SVEVEX1NZTUJPTFNfVEVTVFMpXV0pCi0rQUNfU1VCU1QoW3RvcnR1cmVfdGVzdF90ZXN0c10sIFtbJChUT1JUVVJFX1RFU1RfVEVTVFMpXV0pCi0rCi0gQU1fQ09ORklHX0hFQURFUihbZW5naW5lcy9zdXBwb3J0L2NvbmZpZy5oXSkKLQotIEFDX0NPTkZJR19GSUxFUyhbCi1kaWZmIC1OdXJkIGd0ay1lbmdpbmVzLTIuMjAuMi90ZXN0L01ha2VmaWxlLmFtIGd0ay1lbmdpbmVzLTIuMjAuMi90ZXN0L01ha2VmaWxlLmFtCi0tLS0gZ3RrLWVuZ2luZXMtMi4yMC4yL3Rlc3QvTWFrZWZpbGUuYW0JMjAxMC0wOS0xOSAxODoxODoyMS4wMDAwMDAwMDAgKzAzMDAKLSsrKyBndGstZW5naW5lcy0yLjIwLjIvdGVzdC9NYWtlZmlsZS5hbQkyMDEzLTA4LTIwIDAyOjUwOjM2Ljg0MjUxMDg2NSArMDMwMAotQEAgLTY2LDcgKzY2LDcgQEAKLSAjIFByZWZpeCB3aXRoIGV4cG9ydGVkXwotIEVYUE9SVEVEX1NZTUJPTFNfVEVTVFMgPSAkKHBhdHN1YnN0ICUsZXhwb3J0ZWRfJSwkKEJVSUxEX0VOR0lORVMpKQotCi0tVEVTVFMgKz0gJChFWFBPUlRFRF9TWU1CT0xTX1RFU1RTKQotK1RFU1RTICs9IEBleHBvcnRlZF9zeW1ib2xzX3Rlc3RzQAotCi0KLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1AQCAtODgsNyArODgsNyBAQAotIFRPUlRVUkVfVEVTVF9URVNUUyA9IHRvcnR1cmVfYnVpbGRpbiAkKHBhdHN1YnN0ICUsdG9ydHVyZV8lLCQoVE9SVFVSRV9URVNUX0VOR0lORVMpKQotCi0gIyBBZGQgVE9SVFVSRV9URVNUX0VOR0lORVMgdG8gbGlzdCBvZiB0ZXN0cwotLVRFU1RTICs9ICQoVE9SVFVSRV9URVNUX1RFU1RTKQotK1RFU1RTICs9IEB0b3J0dXJlX3Rlc3RfdGVzdHNACi0KLSAjIFBvc3NpYmxlIG90aGVyIHRlc3RzOgotICMgIC0gQW4gZXh0ZW5zaXZlIHRoZW1lIHN3aXRjaCB0ZXN0cyB0aGF0IGxvYWRzL3VubG9hZHMgdGhlIGVuZ2luZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZW5naW5lcy9ndGstZW5naW5lc18yLjIwLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1lbmdpbmVzL2d0ay1lbmdpbmVzXzIuMjAuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzBhYzkxMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1lbmdpbmVzL2d0ay1lbmdpbmVzXzIuMjAuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLVNVTU1BUlkgPSAiR1RLKyB0aGVtZSBlbmdpbmVzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbm9tZS5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSIKLQotU0VDVElPTiA9ICJ4MTEvYmFzZSIKLURFUEVORFMgPSAiaW50bHRvb2wtbmF0aXZlIGd0aysgZ2V0dGV4dC1uYXRpdmUiCi0KLVBSID0gInIzIgotCi1QQUNLQUdFUyArPSAiJHtQTn0tc2NoZW1hcyIKLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl5ndGstZW5naW5lLS4qIF5ndGstdGhlbWUtLioiCi0KLVJERVBFTkRTX2d0ay10aGVtZS1yZWRtb25kID0gImd0ay1lbmdpbmUtcmVkbW9uZDk1IgotUkRFUEVORFNfZ3RrLXRoZW1lLW1ldGFsID0gImd0ay1lbmdpbmUtbWV0YWwiCi1SREVQRU5EU19ndGstdGhlbWUtbWlzdCA9ICJndGstZW5naW5lLW1pc3QiCi1SREVQRU5EU19ndGstdGhlbWUtY3J1eCA9ICJndGstZW5naW5lLWNydXgtZW5naW5lIgotUkRFUEVORFNfZ3RrLXRoZW1lLWxpZ2h0aG91c2VibHVlID0gImd0ay1lbmdpbmUtbGlnaHRob3VzZWJsdWUiCi1SREVQRU5EU19ndGstdGhlbWUtdGhpbmljZSA9ICJndGstZW5naW5lLXRoaW5pY2UiCi1SREVQRU5EU19ndGstdGhlbWUtaW5kdXN0cmlhbCA9ICJndGstZW5naW5lLWluZHVzdHJpYWwiCi1SREVQRU5EU19ndGstdGhlbWUtY2xlYXJsb29rcyA9ICJndGstZW5naW5lLWNsZWFybG9va3MiCi0KLUZJTEVTXyR7UE59ID0gIiIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2d0ay0yLjAvKi9lbmdpbmVzLyoubGEiCi1GSUxFU18ke1BOfS1zY2hlbWFzID0gIiR7ZGF0YWRpcn0vZ3RrLWVuZ2luZXMvKi54bWwiCi0KLUNGTEFHU19wcmVwZW5kID0gIi1ESEFWRV9BTklNQVRJT04gIgotCi1SREVQRU5EU18ke1BOfS1kZXYgPSAiIgotCi1pbmhlcml0IGdub21lYmFzZQotR05PTUVfQ09NUFJFU1NfVFlQRT0iYnoyIgotCi1pbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjawotQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzJESVNUUk9GRUFUVVJFU30iCi0KLSMgVGhpcyBwaWNrcyBzdGFibGUgcmVsZWFzZXMgaW4gdGhlIDIueCBzZXJpZXMgKGJ1dCBub3QgMi45MCBvbndhcmRzLAotIyB3aGljaCB3ZXJlIEdOT01FIDMgYmV0YXMpLgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+MlwuKFswLThdKlswMjQ2OF0pKyhcLlxkKykrKSIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQoKSB7Ci0gICAgZW5naW5lc19yb290ID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCdsaWJkaXInLCBUcnVlKSwgImd0ay0yLjAvMi4xMC4wL2VuZ2luZXMiKQotICAgIHRoZW1lc19yb290ID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCdkYXRhZGlyJywgVHJ1ZSksICJ0aGVtZXMiKQotCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgZW5naW5lc19yb290LCAnXmxpYiguKilcLnNvJCcsICdndGstZW5naW5lLSVzJywgJ0dUSyAlcyB0aGVtZSBlbmdpbmUnLCBleHRyYV9kZXBlbmRzPScnKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHRoZW1lc19yb290LCAnKC4qKScsICdndGstdGhlbWUtJXMnLCAnR1RLIHRoZW1lICVzJywgYWxsb3dfZGlycz1UcnVlLCBleHRyYV9kZXBlbmRzPScnKQotICAgICMgVE9ETzogbWFyayB0aGVtZSBwYWNrYWdlcyBhcyBhcmNoIGFsbAotfQotCi1TUkNfVVJJICs9ICJmaWxlOi8vZ2xpYi0yLjMyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9zdWJzdGl0dXRlLXRlc3RzLnBhdGNoIgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNWRlYjI4N2JjNjA3NWRjMjE4MTIxMzA2MDRjN2RjNGYiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIxNWI2ODBhYmNhNmM3NzNlY2I4NTI1MzUyMWZhMTAwZGQzYjg1NDliZWZlZWNjNzU5NWIxMDIwOWQ2MmQ2NmI1IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9qc29uLWdsaWIvanNvbi1nbGliXzEuMC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9qc29uLWdsaWIvanNvbi1nbGliXzEuMC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzY2UzOGNlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvanNvbi1nbGliL2pzb24tZ2xpYl8xLjAuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVNVTU1BUlkgPSAiSlNPTi1HTGliIGltcGxlbWVudHMgYSBmdWxsIEpTT04gcGFyc2VyIHVzaW5nIEdMaWIgYW5kIEdPYmplY3QiCi1ERVNDUklQVElPTiA9ICJVc2UgSlNPTi1HTGliIGl0IGlzIHBvc3NpYmxlIHRvIHBhcnNlIGFuZCBnZW5lcmF0ZSB2YWxpZCBKU09OXAotIGRhdGEgc3RydWN0dXJlcywgdXNpbmcgYSBET00tbGlrZSBBUEkuIEpTT04tR0xpYiBhbHNvIG9mZmVycyBHT2JqZWN0IFwKLWludGVncmF0aW9uLCBwcm92aWRpbmcgdGhlIGFiaWxpdHkgdG8gc2VyaWFsaXplIGFuZCBkZXNlcmlhbGl6ZSBHT2JqZWN0IFwKLWluc3RhbmNlcyB0byBhbmQgZnJvbSBKU09OIGRhdGEgdHlwZXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL2xpdmUuZ25vbWUub3JnL0pzb25HbGliIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9N2ZiYzMzODMwOWFjMzhmZWZjZDY0YjA0YmI5MDNlMzQiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAiCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjMxMzFiMDQxN2VjZGUzZGExYWU3MmFjY2VhYTM3NWNmIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiODBmMzU5M2NiNmJkMTNmMTQ2NTgyOGU0NmE5Zjc0MGUyZTliZDNjZDIyNTc4ODk0NDJiM2U2MmJkNmRlMDVjZCIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ2V0dGV4dCBsaWJfcGFja2FnZSBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2pzb24tZ2xpYi9qc29uLWdsaWJfMS4yLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2pzb24tZ2xpYi9qc29uLWdsaWJfMS4yLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRmMmE0MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvanNvbi1nbGliL2pzb24tZ2xpYl8xLjIuMi5iYgpAQCAtMCwwICsxLDE4IEBACitTVU1NQVJZID0gIkpTT04tR0xpYiBpbXBsZW1lbnRzIGEgZnVsbCBKU09OIHBhcnNlciB1c2luZyBHTGliIGFuZCBHT2JqZWN0IgorREVTQ1JJUFRJT04gPSAiVXNlIEpTT04tR0xpYiBpdCBpcyBwb3NzaWJsZSB0byBwYXJzZSBhbmQgZ2VuZXJhdGUgdmFsaWQgSlNPTlwKKyBkYXRhIHN0cnVjdHVyZXMsIHVzaW5nIGEgRE9NLWxpa2UgQVBJLiBKU09OLUdMaWIgYWxzbyBvZmZlcnMgR09iamVjdCBcCitpbnRlZ3JhdGlvbiwgcHJvdmlkaW5nIHRoZSBhYmlsaXR5IHRvIHNlcmlhbGl6ZSBhbmQgZGVzZXJpYWxpemUgR09iamVjdCBcCitpbnN0YW5jZXMgdG8gYW5kIGZyb20gSlNPTiBkYXRhIHR5cGVzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9saXZlLmdub21lLm9yZy9Kc29uR2xpYiIKKworTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTdmYmMzMzgzMDlhYzM4ZmVmY2Q2NGIwNGJiOTAzZTM0IgorCitERVBFTkRTID0gImdsaWItMi4wIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJjMWRhZWZiOGQwZmI1OTYxMmFmMGMwNzJjOGFhYmI1OCIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImVhMTI4YWI1MmE4MjRmY2QwNmU1NDQ4ZmJiMmJkOGQ5YTEzNzQwZDUxYzY2ZDQ0NTgyOGVkYmE3MTMyMWE2MjEiCisKK2luaGVyaXQgZ25vbWViYXNlIGdldHRleHQgbGliX3BhY2thZ2UgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYmdsYWRlL2xpYmdsYWRlLTIuNi40L2dsYWRlLWNydWZ0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJnbGFkZS9saWJnbGFkZS0yLjYuNC9nbGFkZS1jcnVmdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzVkNTg2NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYmdsYWRlL2xpYmdsYWRlLTIuNi40L2dsYWRlLWNydWZ0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1kaWZmIC11ciBsaWJnbGFkZS0yLjQuMH4vY29uZmlndXJlLmluIGxpYmdsYWRlLTIuNC4wL2NvbmZpZ3VyZS5pbgotLS0tIGxpYmdsYWRlLTIuNC4wfi9jb25maWd1cmUuaW4JMjAwNC0wNS0xNyAxMjozODozMS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBsaWJnbGFkZS0yLjQuMC9jb25maWd1cmUuaW4JMjAwNC0wNy0yOCAxNjo1MzowOS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xNDcsNiArMTQ3LDE4IEBACi0gQU1fQ09ORElUSU9OQUwoSEFWRV9QWVRIT04sICRoYXZlX3B5dGhvbikKLSBBQ19TVUJTVChQWVRIT04pCi0gCi0rQUNfTVNHX0NIRUNLSU5HKFtmb3IgY3J1ZnQgaW4gbGliZ3RrXSkKLStBQ19UUllfTElOSyhbCi0rI2luY2x1ZGUgPGd0ay9ndGsuaD4KLSsjaW5jbHVkZSA8c3RkaW8uaD4KLStdLCAgICAgIFsgZ3RrX3RyZWVfZ2V0X3R5cGUgKCk7IHJldHVybiAwOyBdLAotKyAgICAgICAgWyBBQ19NU0dfUkVTVUxUKHllcykKLSsgICAgICAgICAgaGF2ZV9jcnVmdD15ZXMgXSwKLSsgICAgICAgIFsgQUNfTVNHX1JFU1VMVChubykKLSsJICBBQ19ERUZJTkUoRElTQUJMRV9DUlVGVCwsW2xlYXZlIG91dCBzdXBwb3J0IGZvciBvbGQsIGJyb2tlbiB3aWRnZXRzXSkKLSsgICAgICAgICAgaGF2ZV9jcnVmdD1ubyBdKQotK0FDX1NVQlNUKERJU0FCTEVfQ1JVRlQpCi0rCi0gZG5sIGFkZCBkZWJ1Z2dpbmcgb3B0aW9ucyAuLi4KLSBjaGFuZ2VxdW90ZSgsKWRubAotIGlmIHRlc3QgIngkR0NDIiA9IHh5ZXM7IHRoZW4KLU9ubHkgaW4gbGliZ2xhZGUtMi40LjA6IGNvbmZpZ3VyZS5pbi5vcmlnCi1kaWZmIC11ciBsaWJnbGFkZS0yLjQuMH4vZ2xhZGUvZ2xhZGUtZ3RrLmMgbGliZ2xhZGUtMi40LjAvZ2xhZGUvZ2xhZGUtZ3RrLmMKLS0tLSBsaWJnbGFkZS0yLjQuMH4vZ2xhZGUvZ2xhZGUtZ3RrLmMJMjAwNC0wMy0xMyAxMzo0NzozNS4wMDAwMDAwMDAgKzAwMDAKLSsrKyBsaWJnbGFkZS0yLjQuMC9nbGFkZS9nbGFkZS1ndGsuYwkyMDA0LTA3LTI4IDE2OjUzOjUyLjAwMDAwMDAwMCArMDEwMAotQEAgLTIxMyw2ICsyMTMsOCBAQAotIAlndGtfY2xpc3RfY29sdW1uX3RpdGxlc19oaWRlIChHVEtfQ0xJU1QgKHcpKTsKLSB9Ci0gCi0rI2lmbmRlZiBESVNBQkxFX0NSVUZUCi0rCi0gc3RhdGljIHZvaWQKLSB0cmVlX3NldF9zZWxlY3Rpb25fbW9kZSAoR2xhZGVYTUwgKnhtbCwgR3RrV2lkZ2V0ICp3LAotIAkJCSBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKLUBAIC0yMzgsNiArMjQwLDggQEAKLSAgICAgZ3RrX3RyZWVfc2V0X3ZpZXdfbGluZXMgKEdUS19UUkVFICh3KSwgQk9PTCAodmFsdWUpKTsKLSB9Ci0gCi0rI2VuZGlmCi0rCi0gc3RhdGljIHZvaWQKLSBsaXN0X3NldF9zZWxlY3Rpb25fbW9kZSAoR2xhZGVYTUwgKnhtbCwgR3RrV2lkZ2V0ICp3LAotIAkJCSBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKLUBAIC0yNTQsNiArMjU4LDcgQEAKLSAgICAgZ3RrX2NoZWNrX21lbnVfaXRlbV9zZXRfc2hvd190b2dnbGUgKEdUS19DSEVDS19NRU5VX0lURU0gKHcpLCBCT09MICh2YWx1ZSkpOwotIH0KLSAKLSsjaWZuZGVmIERJU0FCTEVfQ1JVRlQKLSBzdGF0aWMgdm9pZAotIHRleHRfc2V0X3RleHQgKEdsYWRlWE1MICp4bWwsIEd0a1dpZGdldCAqdywKLSAJICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQotQEAgLTI2Miw2ICsyNjcsNyBAQAotIAotICAgICBndGtfZWRpdGFibGVfaW5zZXJ0X3RleHQgKEdUS19FRElUQUJMRSAodyksIHZhbHVlLCAtMSwgJnBvcyk7Ci0gfQotKyNlbmRpZgotIAotIHN0YXRpYyB2b2lkCi0gcmFkaW9fbWVudV9pdGVtX3NldF9ncm91cCAoR2xhZGVYTUwgKnhtbCwgR3RrV2lkZ2V0ICp3LAotQEAgLTExMjUsMTMgKzExMzEsMTcgQEAKLSAgICAgZ2xhZGVfcmVnaXN0ZXJfY3VzdG9tX3Byb3AgKEdUS19UWVBFX0NMSVNULCAic2VsZWN0aW9uX21vZGUiLCBjbGlzdF9zZXRfc2VsZWN0aW9uX21vZGUpOwotICAgICBnbGFkZV9yZWdpc3Rlcl9jdXN0b21fcHJvcCAoR1RLX1RZUEVfQ0xJU1QsICJzaGFkb3dfdHlwZSIsIGNsaXN0X3NldF9zaGFkb3dfdHlwZSk7Ci0gICAgIGdsYWRlX3JlZ2lzdGVyX2N1c3RvbV9wcm9wIChHVEtfVFlQRV9DTElTVCwgInNob3dfdGl0bGVzIiwgY2xpc3Rfc2V0X3Nob3dfdGl0bGVzKTsKLSsjaWZuZGVmIERJU0FCTEVfQ1JVRlQKLSAgICAgZ2xhZGVfcmVnaXN0ZXJfY3VzdG9tX3Byb3AgKEdUS19UWVBFX1RSRUUsICJzZWxlY3Rpb25fbW9kZSIsIHRyZWVfc2V0X3NlbGVjdGlvbl9tb2RlKTsKLSAgICAgZ2xhZGVfcmVnaXN0ZXJfY3VzdG9tX3Byb3AgKEdUS19UWVBFX1RSRUUsICJ2aWV3X21vZGUiLCB0cmVlX3NldF92aWV3X21vZGUpOwotICAgICBnbGFkZV9yZWdpc3Rlcl9jdXN0b21fcHJvcCAoR1RLX1RZUEVfVFJFRSwgInZpZXdfbGluZSIsIHRyZWVfc2V0X3ZpZXdfbGluZSk7Ci0rI2VuZGlmCi0gICAgIGdsYWRlX3JlZ2lzdGVyX2N1c3RvbV9wcm9wIChHVEtfVFlQRV9MSVNULCAic2VsZWN0aW9uX21vZGUiLCBsaXN0X3NldF9zZWxlY3Rpb25fbW9kZSk7Ci0gICAgIGdsYWRlX3JlZ2lzdGVyX2N1c3RvbV9wcm9wIChHVEtfVFlQRV9DSEVDS19NRU5VX0lURU0sICJhbHdheXNfc2hvd190b2dnbGUiLAotIAkJCQljaGVja19tZW51X2l0ZW1fc2V0X2Fsd2F5c19zaG93X3RvZ2dsZSk7Ci0rI2lmbmRlZiBESVNBQkxFX0NSVUZUCi0gICAgIGdsYWRlX3JlZ2lzdGVyX2N1c3RvbV9wcm9wIChHVEtfVFlQRV9URVhULCAidGV4dCIsIHRleHRfc2V0X3RleHQpOwotKyNlbmRpZgotICAgICBnbGFkZV9yZWdpc3Rlcl9jdXN0b21fcHJvcCAoR1RLX1RZUEVfUkFESU9fTUVOVV9JVEVNLCAiZ3JvdXAiLAotIAkJCQlyYWRpb19tZW51X2l0ZW1fc2V0X2dyb3VwKTsKLSAgICAgZ2xhZGVfcmVnaXN0ZXJfY3VzdG9tX3Byb3AgKEdUS19UWVBFX1RPT0xCQVIsICJ0b29sdGlwcyIsIHRvb2xiYXJfc2V0X3Rvb2x0aXBzKTsKLUBAIC0xMjg4LDggKzEyOTgsMTAgQEAKLSAJCQkgICBnbGFkZV9zdGFuZGFyZF9idWlsZF9jaGlsZHJlbiwgTlVMTCk7Ci0gICAgIGdsYWRlX3JlZ2lzdGVyX3dpZGdldCAoR1RLX1RZUEVfVEVBUk9GRl9NRU5VX0lURU0sIGdsYWRlX3N0YW5kYXJkX2J1aWxkX3dpZGdldCwKLSAJCQkgICBOVUxMLCBOVUxMKTsKLSsjaWZuZGVmIERJU0FCTEVfQ1JVRlQKLSAgICAgZ2xhZGVfcmVnaXN0ZXJfd2lkZ2V0IChHVEtfVFlQRV9URVhULCBnbGFkZV9zdGFuZGFyZF9idWlsZF93aWRnZXQsCi0gCQkJICAgTlVMTCwgTlVMTCk7Ci0rI2VuZGlmCi0gICAgIGdsYWRlX3JlZ2lzdGVyX3dpZGdldCAoR1RLX1RZUEVfVEVYVF9WSUVXLCBnbGFkZV9zdGFuZGFyZF9idWlsZF93aWRnZXQsCi0gCQkJICAgTlVMTCwgTlVMTCk7Ci0gICAgIGdsYWRlX3JlZ2lzdGVyX3dpZGdldCAoR1RLX1RZUEVfVElQU19RVUVSWSwgZ2xhZGVfc3RhbmRhcmRfYnVpbGRfd2lkZ2V0LAotQEAgLTEzMDQsOCArMTMxNiwxMCBAQAotIAkJCSAgIGdsYWRlX3N0YW5kYXJkX2J1aWxkX2NoaWxkcmVuLCBOVUxMKTsKLSAgICAgZ2xhZGVfcmVnaXN0ZXJfd2lkZ2V0IChHVEtfVFlQRV9UT09MX0JVVFRPTiwgZ2xhZGVfc3RhbmRhcmRfYnVpbGRfd2lkZ2V0LAotIAkJCSAgIE5VTEwsIE5VTEwpOwotKyNpZm5kZWYgRElTQUJMRV9DUlVGVAotICAgICBnbGFkZV9yZWdpc3Rlcl93aWRnZXQgKEdUS19UWVBFX1RSRUUsIGdsYWRlX3N0YW5kYXJkX2J1aWxkX3dpZGdldCwKLSAJCQkgICBOVUxMLCBOVUxMKTsKLSsjZW5kaWYKLSAgICAgZ2xhZGVfcmVnaXN0ZXJfd2lkZ2V0IChHVEtfVFlQRV9UUkVFX1ZJRVcsIGdsYWRlX3N0YW5kYXJkX2J1aWxkX3dpZGdldCwKLSAJCQkgICBOVUxMLCBOVUxMKTsKLSAgICAgZ2xhZGVfcmVnaXN0ZXJfd2lkZ2V0IChHVEtfVFlQRV9WQlVUVE9OX0JPWCwgZ2xhZGVfc3RhbmRhcmRfYnVpbGRfd2lkZ2V0LApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJnbGFkZS9saWJnbGFkZS0yLjYuNC9uby14bWwyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJnbGFkZS9saWJnbGFkZS0yLjYuNC9uby14bWwyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYzRjMDkyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGliZ2xhZGUvbGliZ2xhZGUtMi42LjQvbm8teG1sMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwMSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLWRpZmYgLXVyTiBsaWJnbGFkZS0yLjQuMi5vcmlnL2NvbmZpZ3VyZS5pbiBsaWJnbGFkZS0yLjQuMi9jb25maWd1cmUuaW4KLS0tLSBsaWJnbGFkZS0yLjQuMi5vcmlnL2NvbmZpZ3VyZS5pbgkyMDA1LTAyLTExIDEyOjQyOjU4LjAwMDAwMDAwMCArMDEwMAotKysrIGxpYmdsYWRlLTIuNC4yL2NvbmZpZ3VyZS5pbgkyMDA1LTAzLTIyIDAxOjIyOjAwLjAwMDAwMDAwMCArMDEwMAotQEAgLTUyLDExICs1MiwzMyBAQAotIEFDX1BBVEhfUFJPRyhQS0dfQ09ORklHLCBwa2ctY29uZmlnLCBubykKLSAKLSBQS0dfQ0hFQ0tfTU9EVUxFUyhMSUJHTEFERSwgW2RubAotLSAgbGlieG1sLTIuMCA+PSByZXF1aXJlZF9saWJ4bWxfdmVyc2lvbiBkbmwKLSAgIGF0ayA+PSByZXF1aXJlZF9hdGtfdmVyc2lvbiBkbmwKLSAgIGd0aystMi4wID49IHJlcXVpcmVkX2d0a192ZXJzaW9uIGRubAotICAgZ2xpYi0yLjAgPj0gcmVxdWlyZWRfZ2xpYl92ZXJzaW9uXSkKLSAKLStkaXNhYmxlX3htbDI9bm8KLStBQ19BUkdfV0lUSChbbGlieG1sMl0sCi0rICBBQ19IRUxQX1NUUklORyhbLS13aXRob3V0LWxpYnhtbDJdLCBbRG9uJ3QgdXNlIGxpYnhtbDIsIHVzZSBHbGliJ3MgR01hcmt1cFBhcnNlciBpbnN0ZWFkXSksCi0rICBbZGlzYWJsZV94bWwyPXllc10sCi0rICBbZGlzYWJsZV94bWwyPW5vXSkKLSsKLStBQ19NU0dfQ0hFQ0tJTkcoW2lmIHdlIGFyZSB1c2luZyBsaWJ4bWwyXSkKLStpZiB0ZXN0ICJ4JGRpc2FibGVfeG1sMiIgPT0gInhubyI7IHRoZW4KLSsgIEFDX01TR19SRVNVTFQoeWVzKQotKyAgUEtHX0NIRUNLX01PRFVMRVMoWE1MMiwgbGlieG1sLTIuMCA+PSAyLjQuMTApCi0rICBQS0dDRkdfUkVRVUlSRV9MSUJYTUwyPSJsaWJ4bWwtMi4wIgotKyAgTElCR0xBREVfQ0ZMQUdTPSIkTElCR0xBREVfQ0ZMQUdTICRYTUwyX0NGTEFHUyIKLSsgIExJQkdMQURFX0xJQlM9IiRMSUJHTEFERV9MSUJTICRYTUwyX0xJQlMiCi0rZWxzZQotKyAgTElCR0xBREVfQ0ZMQUdTPSIkTElCR0xBREVfQ0ZMQUdTIC1EVVNFX0dNQVJLVVBfUEFSU0VSIgotKyAgUEtHQ0ZHX1JFUVVJUkVfTElCWE1MMj0iIgotKyAgQUNfTVNHX1JFU1VMVChubykKLStmaQotKwotK0FDX1NVQlNUKFhNTDJfTElCUykKLStBQ19TVUJTVChYTUwyX0NGTEFHUykKLStBQ19TVUJTVChQS0dDRkdfUkVRVUlSRV9MSUJYTUwyKQotKwotIEFDX01TR19DSEVDS0lORyhbZm9yIG5hdGl2ZSBXaW4zMl0pCi0gY2FzZSAiJGhvc3QiIGluCi0gICAqLSotbWluZ3cqKQotQEAgLTExNiw2ICsxMzgsMjEgQEAKLSAgIGZpCi0gZmkKLSAKLStpZiB0ZXN0ICJ4JGRpc2FibGVfeG1sMiIgPT0gInh5ZXMiOyB0aGVuCi0rICBlY2hvICIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIKLSsgIGVjaG8gIiAgWW91IGNob3NlIHRvIGRpc2FibGUgbGlieG1sMiBhbmQgdXNlIEdsaWIncyIKLSsgIGVjaG8gIiAgR01hcmt1cFBhcnNlciBpbnN0ZWFkLiIgCi0rICBlY2hvICAKLSsgIGVjaG8gIiAgUGxlYXNlIGJlYXIgaW4gbWluZCB0aGF0IHVzaW5nIGxpYmdsYWRlIHdpdGgiCi0rICBlY2hvICIgIEdNYXJrdXBQYXJzZXIgaXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUgb25seS4iCi0rICBlY2hvCi0rICBlY2hvICIgIFBsZWFzZSBwb3N0IHByb2JsZW1zIG9yIHN1Y2Nlc3Mgc3RvcmllcyB0byIKLSsgIGVjaG8gIiAgdGhlIGdsYWRlLWRldmVsIG1haWxpbmcgbGlzdC4gVGhhbmsgeW91LiIKLSsgIGVjaG8gIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIgotK2ZpCi0rCi0rCi0rCi0gR1RLX0RPQ19DSEVDSygxLjApCi0gCi0gZG5sIGdldHRleHQgc3R1ZmYgLi4uIHRoZXJlIGlzIG5vIG1lc3NhZ2UgY2F0YWxvZyBmb3IgbGliZ2xhZGUgLS0gbGliZ2xhZGUKLWRpZmYgLXVyTiBsaWJnbGFkZS0yLjQuMi5vcmlnL2dsYWRlL2dsYWRlLXBhcnNlci5jIGxpYmdsYWRlLTIuNC4yL2dsYWRlL2dsYWRlLXBhcnNlci5jCi0tLS0gbGliZ2xhZGUtMi40LjIub3JpZy9nbGFkZS9nbGFkZS1wYXJzZXIuYwkyMDA0LTExLTExIDExOjU2OjEzLjAwMDAwMDAwMCArMDEwMAotKysrIGxpYmdsYWRlLTIuNC4yL2dsYWRlL2dsYWRlLXBhcnNlci5jCTIwMDUtMDMtMjIgMDE6MjA6MDAuMDAwMDAwMDAwICswMTAwCi1AQCAtMzQsNyArMzQsMTUgQEAKLSAjICBkZWZpbmUgZGdldHRleHQoRG9tYWluLCBTdHJpbmcpIChTdHJpbmcpCi0gI2VuZGlmCi0gCi0tI2luY2x1ZGUgPGxpYnhtbC9wYXJzZXIuaD4KLSsjaWZkZWYgVVNFX0dNQVJLVVBfUEFSU0VSCi0rIyAgaW5jbHVkZSA8emxpYi5oPgotKyNlbHNlCi0rIyAgaW5jbHVkZSA8bGlieG1sL3BhcnNlci5oPgotKyNlbmRpZgotKwotKyNpZmRlZiBVU0VfR01BUktVUF9QQVJTRVIKLSsjICBkZWZpbmUgeG1sQ2hhciBnY2hhcgotKyNlbmRpZgotIAotICNpbmNsdWRlICJnbGFkZS1wYXJzZXIuaCIKLSAjaW5jbHVkZSAiZ2xhZGUtcHJpdmF0ZS5oIgotQEAgLTUwOCw3ICs1MTYsOSBAQAotICAgICBjYXNlIFBBUlNFUl9TVEFSVDoKLSAJaWYgKCFzdHJjbXAobmFtZSwgImdsYWRlLWludGVyZmFjZSIpKSB7Ci0gCSAgICBzdGF0ZS0+c3RhdGUgPSBQQVJTRVJfR0xBREVfSU5URVJGQUNFOwotLSNpZiAwCi0rCi0rI2lmbmRlZiBVU0VfR01BUktVUF9QQVJTRVIKLSsgI2lmIDAKLSAJICAgIC8qIGNoZWNrIGZvciBjb3JyZWN0IFhNTCBuYW1lc3BhY2UgKi8KLSAJICAgIGZvciAoaSA9IDA7IGF0dHJzICYmIGF0dHJzW2ldICE9IE5VTEw7IGkgKz0gMikgewotIAkJaWYgKCFzdHJjbXAoYXR0cnNbaV0sICJ4bWxucyIpICYmCi1AQCAtNTE4LDcgKzUyOCw5IEBACi0gCQkgICAgZ193YXJuaW5nKCJ1bmtub3duIGF0dHJpYnV0ZSBgJXMnIGZvciA8Z2xhZGUtaW50ZXJmYWNlPiIsCi0gCQkJICAgICAgYXR0cnNbaV0pOwotIAkgICAgfQotKyAjZW5kaWYKLSAjZW5kaWYKLSsKLSAJfSBlbHNlIHsKLSAJICAgIGdfd2FybmluZygiRXhwZWN0ZWQgPGdsYWRlLWludGVyZmFjZT4uICBHb3QgPCVzPi4iLCBuYW1lKTsKLSAJICAgIHN0YXRlLT5wcmV2X3N0YXRlID0gc3RhdGUtPnN0YXRlOwotQEAgLTEwNjMsMTIgKzEwNzUsMTggQEAKLSAgICAgfQotIH0KLSAKLSsjaWZuZGVmIFVTRV9HTUFSS1VQX1BBUlNFUgotKwotIHN0YXRpYyB4bWxFbnRpdHlQdHIKLSBnbGFkZV9wYXJzZXJfZ2V0X2VudGl0eShHbGFkZVBhcnNlU3RhdGUgKnN0YXRlLCBjb25zdCB4bWxDaGFyICpuYW1lKQotIHsKLSAgICAgcmV0dXJuIHhtbEdldFByZWRlZmluZWRFbnRpdHkobmFtZSk7Ci0gfQotIAotKyNlbmRpZiAvKiAhZGVmaW5lZChVU0VfR01BUktVUF9QQVJTRVIpICovCi0rCi0rI2lmbmRlZiBVU0VfR01BUktVUF9QQVJTRVIKLSsKLSBzdGF0aWMgdm9pZAotIGdsYWRlX3BhcnNlcl93YXJuaW5nKEdsYWRlUGFyc2VTdGF0ZSAqc3RhdGUsIGNvbnN0IGNoYXIgKm1zZywgLi4uKQotIHsKLUBAIC0xMDc5LDYgKzEwOTcsMTAgQEAKLSAgICAgdmFfZW5kKGFyZ3MpOwotIH0KLSAKLSsjZW5kaWYgLyogIWRlZmluZWQoVVNFX0dNQVJLVVBfUEFSU0VSKSAqLwotKwotKyNpZm5kZWYgVVNFX0dNQVJLVVBfUEFSU0VSCi0rCi0gc3RhdGljIHZvaWQKLSBnbGFkZV9wYXJzZXJfZXJyb3IoR2xhZGVQYXJzZVN0YXRlICpzdGF0ZSwgY29uc3QgY2hhciAqbXNnLCAuLi4pCi0gewotQEAgLTEwODksNiArMTExMSwxMCBAQAotICAgICB2YV9lbmQoYXJncyk7Ci0gfQotIAotKyNlbmRpZiAvKiAhZGVmaW5lZChVU0VfR01BUktVUF9QQVJTRVIpICovCi0rCi0rI2lmbmRlZiBVU0VfR01BUktVUF9QQVJTRVIKLSsKLSBzdGF0aWMgdm9pZAotIGdsYWRlX3BhcnNlcl9mYXRhbF9lcnJvcihHbGFkZVBhcnNlU3RhdGUgKnN0YXRlLCBjb25zdCBjaGFyICptc2csIC4uLikKLSB7Ci1AQCAtMTA5OSw2ICsxMTI1LDEwIEBACi0gICAgIHZhX2VuZChhcmdzKTsKLSB9Ci0gCi0rI2VuZGlmIC8qICFkZWZpbmVkKFVTRV9HTUFSS1VQX1BBUlNFUikgKi8KLSsKLSsjaWZuZGVmIFVTRV9HTUFSS1VQX1BBUlNFUgotKwotIHN0YXRpYyB4bWxTQVhIYW5kbGVyIGdsYWRlX3BhcnNlciA9IHsKLSAgICAgKGludGVybmFsU3Vic2V0U0FYRnVuYylOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgLyogaW50ZXJuYWxTdWJzZXQgKi8KLSAgICAgKGlzU3RhbmRhbG9uZVNBWEZ1bmMpTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXNTdGFuZGFsb25lICovCi1AQCAtMTEyNiw2ICsxMTU2LDgyIEBACi0gICAgIChmYXRhbEVycm9yU0FYRnVuYylnbGFkZV9wYXJzZXJfZmF0YWxfZXJyb3IsICAgICAgIC8qIGZhdGFsRXJyb3IgKi8KLSB9OwotIAotKyNlbHNlIC8qIFVTRV9HTUFSS1VQX1BBUlNFUiAqLwotKwotK3N0YXRpYyB2b2lkCi0rZ2xhZGVfcGFyc2VyX3N0YXJ0X2VsZW1lbnRfd3JhcHBlcihHTWFya3VwUGFyc2VDb250ZXh0ICpjb250ZXh0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAqbmFtZSwgCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgKiphdHRyX25hbWVzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICoqYXR0cl92YWx1ZXMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciAgICAgICAgICAgICBzdGF0ZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICAgICAqKmVycm9yKQotK3sKLSsgICAgZ3VpbnQgaSA9IDA7Ci0rCi0rICAgIC8qIFBhY2sgYXR0cmlidXRlIG5hbWVzL3ZhbHVlcyBmcm9tIHR3byBzZXBhcmF0ZQotKyAgICAgKiAgYXJyYXlzIChHTWFya3VwUGFyc2VyIHN0eWxlKSBpbnRvIG9uZSBzaW5nbGUKLSsgICAgICogIGFycmF5IChsaWJ4bWwgU0FYUGFyc2VyIHN0eWxlKS4gVGhpcyBpcyBub3QKLSsgICAgICogIHZlcnkgZWZmaWNpZW50LCBidXQgd2UgZG8gaXQgdG8gbWFrZSB0aGUKLSsgICAgICogIEdNYXJrdXBQYXJzZXIgY29kZSBhcyBsaXR0bGUgaW52YXNpdmUgYXMKLSsgICAgICogIHBvc3NpYmxlLiAqLwotKwotKyAgICB3aGlsZSAoYXR0cl9uYW1lc1tpXSAhPSBOVUxMKSB7Ci0rICAgICAgKytpOwotKyAgICB9Ci0rCi0rICAgIGlmICgxKQotKyAgICB7Ci0rICAgICAgICBjb25zdCBnY2hhciAqYXR0clsoaSoyKSsxXTsKLSsgICAgICAgIGd1aW50IGosIGs7Ci0rICAgICAgIAotKyAgICAgICAgZm9yIChqPTAsIGs9MDsgIGsgPCBpOyAgaiArPSAyKQotKyAgICAgICAgewotKyAgICAgICAgICAgIGF0dHJbal0gPSBhdHRyX25hbWVzW2tdOwotKyAgICAgICAgICAgIGF0dHJbaisxXSA9IGF0dHJfdmFsdWVzW2tdOwotKyAgICAgICAgICAgICsrazsKLSsgICAgICAgIH0KLSsgICAgICAgIGF0dHJbaSoyXSA9IE5VTEw7Ci0rCi0rICAgICAgICBnbGFkZV9wYXJzZXJfc3RhcnRfZWxlbWVudCgoR2xhZGVQYXJzZVN0YXRlKilzdGF0ZSwgbmFtZSwgYXR0cik7Ci0rICAgIH0KLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStnbGFkZV9wYXJzZXJfZW5kX2VsZW1lbnRfd3JhcHBlcihHTWFya3VwUGFyc2VDb250ZXh0ICpjb250ZXh0LCAKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICpuYW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyICAgICAgICAgICAgIHN0YXRlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICAgICAqKmVycikKLSt7Ci0rICAgIGdsYWRlX3BhcnNlcl9lbmRfZWxlbWVudCgoR2xhZGVQYXJzZVN0YXRlKilzdGF0ZSwgbmFtZSk7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rZ2xhZGVfcGFyc2VyX2NoYXJhY3RlcnNfd3JhcHBlcihHTWFya3VwUGFyc2VDb250ZXh0ICpjb250ZXh0LCAKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgKmNoYXJzLCAKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdzaXplICAgICAgICAgICAgICAgIGxlbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyICAgICAgICAgICAgIHN0YXRlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICAgICAgICAgICAgICoqZXJyKQotK3sKLSsgICAgZ2xhZGVfcGFyc2VyX2NoYXJhY3RlcnMoKEdsYWRlUGFyc2VTdGF0ZSopc3RhdGUsIGNoYXJzLCAoaW50KSBsZW4pOwotK30KLSsKLStzdGF0aWMgdm9pZAotK2dsYWRlX3BhcnNlcl9lcnJvcihHTWFya3VwUGFyc2VDb250ZXh0ICpjb250ZXh0LCBHRXJyb3IgKmVyciwgZ3BvaW50ZXIgZGF0YSkKLSt7Ci0rICAgIGdfbG9nKCJHbGFkZS1QYXJzZXIiLCBHX0xPR19MRVZFTF9DUklUSUNBTCwgIiVzIiwgZXJyLT5tZXNzYWdlKTsKLSt9Ci0rCi0rc3RhdGljIGNvbnN0IEdNYXJrdXBQYXJzZXIgICBnbGFkZV9wYXJzZXIgPSB7Ci0rICAgIGdsYWRlX3BhcnNlcl9zdGFydF9lbGVtZW50X3dyYXBwZXIsICAvKiBlbGVtZW50IG9wZW4gICAqLwotKyAgICBnbGFkZV9wYXJzZXJfZW5kX2VsZW1lbnRfd3JhcHBlciwgICAgLyogZWxlbWVudCBjbG9zZSAgKi8KLSsgICAgZ2xhZGVfcGFyc2VyX2NoYXJhY3RlcnNfd3JhcHBlciwgICAgIC8qIHRleHQgY29udGVudCAgICovCi0rICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBwYXNzdGhyb3VnaCAgICAqLwotKyAgICBnbGFkZV9wYXJzZXJfZXJyb3IsICAgICAgICAgICAgICAgICAgLyogcGFyc2UgZXJyb3IgICAgKi8KLSt9OwotKwotKyNlbmRpZiAvKiBVU0VfR01BUktVUF9QQVJTRVIgKi8KLSsKLSsKLSBzdGF0aWMgdm9pZAotIHdpZGdldF9pbmZvX2ZyZWUoR2xhZGVXaWRnZXRJbmZvICppbmZvKQotIHsKLUBAIC0xMTkxLDYgKzEyOTcsOSBAQAotICAqCi0gICogUmV0dXJuczogdGhlIEdsYWRlSW50ZXJmYWNlIHN0cnVjdHVyZSBmb3IgdGhlIFhNTCBmaWxlLgotICAqLwotKwotKyNpZm5kZWYgVVNFX0dNQVJLVVBfUEFSU0VSCi0rCi0gR2xhZGVJbnRlcmZhY2UgKgotIGdsYWRlX3BhcnNlcl9wYXJzZV9maWxlKGNvbnN0IGdjaGFyICpmaWxlLCBjb25zdCBnY2hhciAqZG9tYWluKQotIHsKLUBAIC0xMjIyLDYgKzEzMzEsMzEgQEAKLSAgICAgcmV0dXJuIHN0YXRlLmludGVyZmFjZTsKLSB9Ci0gCi0rI2Vsc2UgLyogZGVmaW5lZChVU0VfR01BUktVUF9QQVJTRVIpICovCi0rCi0rR2xhZGVJbnRlcmZhY2UgKgotK2dsYWRlX3BhcnNlcl9wYXJzZV9maWxlKGNvbnN0IGdjaGFyICpmaWxlLCBjb25zdCBnY2hhciAqZG9tYWluKQotK3sKLSsgICAgR2xhZGVJbnRlcmZhY2UgICppbnRlcmZhY2U7Ci0rICAgIEdFcnJvciAgICAgICAgICAqZXJyICAgICA9IE5VTEw7Ci0rICAgIGdjaGFyICAgICAgICAgICAqY29udGVudCA9IE5VTEw7Ci0rICAgIGdzaXplICAgICAgICAgICAgY2xlbjsKLSsKLSsgICAgaWYgKCFnX2ZpbGVfZ2V0X2NvbnRlbnRzKGZpbGUsICZjb250ZW50LCAmY2xlbiwgJmVycikpIHsKLSsgICAgICAgIGdfd2FybmluZygiY291bGQgbm90IGxvYWQgZ2xhZGUgZmlsZTogJXMiLCBlcnItPm1lc3NhZ2UpOwotKyAgICAgICAgZ19lcnJvcl9mcmVlKGVycik7Ci0rICAgICAgICByZXR1cm4gTlVMTDsKLSsgICAgfQotKwotKyAgICBpbnRlcmZhY2UgPSBnbGFkZV9wYXJzZXJfcGFyc2VfYnVmZmVyKGNvbnRlbnQsIChnaW50KSBjbGVuLCBkb21haW4pOwotKwotKyAgICBnX2ZyZWUoY29udGVudCk7Ci0rCi0rICAgIHJldHVybiBpbnRlcmZhY2U7Ci0rfQotKwotKyNlbmRpZiAvKiBVU0VfR01BUktVUF9QQVJTRVIgKi8KLSsKLSAvKioKLSAgKiBnbGFkZV9wYXJzZXJfcGFyc2VfYnVmZmVyCi0gICogQGJ1ZmZlcjogYSBidWZmZXIgaW4gbWVtb3J5IGNvbnRhaW5pbmcgWE1MIGRhdGEuCi1AQCAtMTIzNyw2ICsxMzcxLDkgQEAKLSAgKgotICAqIFJldHVybnM6IHRoZSBHbGFkZUludGVyZmFjZSBzdHJ1Y3R1cmUgZm9yIHRoZSBYTUwgYnVmZmVyLgotICAqLwotKwotKyNpZm5kZWYgVVNFX0dNQVJLVVBfUEFSU0VSCi0rCi0gR2xhZGVJbnRlcmZhY2UgKgotIGdsYWRlX3BhcnNlcl9wYXJzZV9idWZmZXIoY29uc3QgZ2NoYXIgKmJ1ZmZlciwgZ2ludCBsZW4sIGNvbnN0IGdjaGFyICpkb21haW4pCi0gewotQEAgLTEyNjMsNiArMTQwMCwxNjEgQEAKLSAgICAgcmV0dXJuIHN0YXRlLmludGVyZmFjZTsKLSB9Ci0gCi0rI2Vsc2UgLyogZGVmaW5lZChVU0VfR01BUktVUF9QQVJTRVIpICovCi0rCi0rCi0rc3RhdGljIEdsYWRlSW50ZXJmYWNlICoKLStnbGFkZV9wYXJzZXJfcGFyc2VfYnVmZmVyX2ludGVybmFsKGNvbnN0IGdjaGFyICpidWZmZXIsIGdpbnQgbGVuLCBjb25zdCBnY2hhciAqZG9tYWluKQotK3sKLSsJR01hcmt1cFBhcnNlQ29udGV4dCAgKmNvbnRleHQ7Ci0rCUdsYWRlUGFyc2VTdGF0ZSAgICAgICBzdGF0ZSA9IHsgMCB9OwotKwlHRXJyb3IgICAgICAgICAgICAgICAqZXJyICAgPSBOVUxMOwotKwotKwlzdGF0ZS5pbnRlcmZhY2UgPSBOVUxMOwotKwlpZiAoZG9tYWluKQotKwkJc3RhdGUuZG9tYWluID0gZG9tYWluOwotKwllbHNlCi0rCQlzdGF0ZS5kb21haW4gPSB0ZXh0ZG9tYWluKE5VTEwpOwotKwotKwkvKiBGSVhNRTogVGhpcyBzdHJzdHIoKSBpcyBub3Qgc2FmZSwgYXMgaXQgaWdub3JlcyB0aGUgbGVuCi0rCSAqICAgICAgICBhcmd1bWVudCBhbmQgYXNzdW1lcyB0aGUgYnVmZmVyIGlzIE5VTC10ZXJtaW5hdGVkICovCi0rCWlmIChzdHJzdHIoYnVmZmVyLCAiPD94bWwiKSA9PSBOVUxMKSB7Ci0rCQlnX3dhcm5pbmcoIk5vIFhNTCBoZWFkZXIgZm91bmQgaW4gZG9jdW1lbnQhIik7Ci0rCQlyZXR1cm4gTlVMTDsKLSsJfQotKwotKwljb250ZXh0ID0gZ19tYXJrdXBfcGFyc2VfY29udGV4dF9uZXcoJmdsYWRlX3BhcnNlciwgKEdNYXJrdXBQYXJzZUZsYWdzKSAwLCAmc3RhdGUsIE5VTEwpOwotKwotKwlnbGFkZV9wYXJzZXJfc3RhcnRfZG9jdW1lbnQoJnN0YXRlKTsKLSsKLSsJaWYgKCFnX21hcmt1cF9wYXJzZV9jb250ZXh0X3BhcnNlKGNvbnRleHQsIGJ1ZmZlciwgKGdzc2l6ZSkgbGVuLCAmZXJyKSkgewotKwkJZ193YXJuaW5nKCJkb2N1bWVudCBub3Qgd2VsbCBmb3JtZWQ6ICVzIiwgZXJyLT5tZXNzYWdlKTsKLSsJCWdfZXJyb3JfZnJlZShlcnIpOwotKwkJaWYgKHN0YXRlLmludGVyZmFjZSkKLSsJCQlnbGFkZV9pbnRlcmZhY2VfZGVzdHJveSAoc3RhdGUuaW50ZXJmYWNlKTsKLSsJCXJldHVybiBOVUxMOwotKwl9Ci0rCi0rCWdsYWRlX3BhcnNlcl9lbmRfZG9jdW1lbnQoJnN0YXRlKTsKLSsKLSsJaWYgKHN0YXRlLnN0YXRlICE9IFBBUlNFUl9GSU5JU0gpIHsKLSsJCWdfd2FybmluZygiZGlkIG5vdCBmaW5pc2ggaW4gUEFSU0VSX0ZJTklTSCBzdGF0ZSEiKTsKLSsKLSsJCWlmIChzdGF0ZS5pbnRlcmZhY2UpCi0rCQkJZ2xhZGVfaW50ZXJmYWNlX2Rlc3Ryb3koc3RhdGUuaW50ZXJmYWNlKTsKLSsKLSsJCXJldHVybiBOVUxMOwotKwl9Ci0rCi0rCXJldHVybiBzdGF0ZS5pbnRlcmZhY2U7Ci0rfQotKwotK3N0cnVjdCBfZ3ppcF9yZmMxOTUyX2hkcgotK3sKLSsJZ3VpbnQ4CWlkMSwgaWQyLCBjbSwgZmxhZ3M7Ci0rCWd1aW50MzIgbXRpbWU7Ci0rCWd1aW50OCAgeGZsYWdzOwotKwlndWludDggIG9zOwotK307Ci0rCi0rc3RhdGljIEdsYWRlSW50ZXJmYWNlICoKLStnbGFkZV9wYXJzZXJfcGFyc2VfZ3ppcHBlZF9idWZmZXIoY29uc3QgZ2NoYXIgKmJ1ZmZlciwgZ2ludCBsZW4sIGNvbnN0IGdjaGFyICpkb21haW4pCi0rewotKwlzdHJ1Y3QgX2d6aXBfcmZjMTk1Ml9oZHIgKmhkciA9IChzdHJ1Y3QgX2d6aXBfcmZjMTk1Ml9oZHIqKWJ1ZmZlcjsKLSsJc3RydWN0IHpfc3RyZWFtX3MgICAgICAgICB6c3RyZWFtOwotKwlHbGFkZUludGVyZmFjZSAgICAgICAgICAgKmludGVyZmFjZTsKLSsJY29uc3QgZ3VpbnQ4ICAgICAgICAgICAgICpjYnVmOyAgICAgICAgICAgICAgLyogc3RhcnQgb2YgY29tcHJlc3NlZCBkYXRhICovCi0rCWd1aW50OCAgICAgICAgICAgICAgICAgICAqZGVjb21wcmVzc19idWY7Ci0rCWd1bG9uZyAgICAgICAgICAgICAgICAgICAgZGVjb21wcmVzc19sZW4gPSAwOwotKwlnaW50ICAgICAgICAgICAgICAgICAgICAgIHJldDsKLSsKLSsJZ19hc3NlcnQoaGRyICE9IE5VTEwgJiYgaGRyLT5pZDEgPT0gMHgxZiAmJiBoZHItPmlkMiA9PSAweDhiKTsKLSsKLSsJaWYgKGhkci0+Y20gIT0gWl9ERUZMQVRFRCkgewotKwkJZ193YXJuaW5nKCJVbmtub3duIGRlY29tcHJlc3Npb24gbWV0aG9kICV1IiwgKGd1aW50KSBoZHItPmNtKTsKLSsJCXJldHVybiBOVUxMOwotKwl9Ci0rCi0rCS8qIFVuY29tcHJlc3NlZCBzaXplIChtb2R1bG8gMl4zMikgaXMgbGFzdAotKwkgKiAgNCBieXRlcyBvZiBnemlwcGVkIGZpbGUsIGFuZCBsaXR0bGUgZW5kaWFuLgotKwkgKiAgU2VlIFJGQyAxOTUyICovCi0rCWRlY29tcHJlc3NfbGVuID0gR1VJTlQzMl9GUk9NX0xFKCooKGd1aW50MzIqKSgoKGd1aW50OCopYnVmZmVyKSArIGxlbiAtIDQpKSk7Ci0rCi0rCS8qIHBhcmFub2lkIG1vZGU6IGdsYWRlIGZpbGVzID4gNU1CIGFyZSB1bmxpa2VseSAqLwotKwlnX3JldHVybl92YWxfaWZfZmFpbChkZWNvbXByZXNzX2xlbiA8IDUqMTAyNCoxMDI0LCBOVUxMKTsKLSsKLSsJZGVjb21wcmVzc19idWYgPSBnX21hbGxvYzAoZGVjb21wcmVzc19sZW4gKyAxKTsgLyogKzEgZm9yIE5VTC10ZXJtaW5hdG9yICovCi0rCi0rCS8qIGZpbmQgc3RhcnQgb2YgY29tcHJlc3NlZCBkYXRhLCBza2lwcGluZyBoZWFkZXIgc3R1ZmYgKi8KLSsJY2J1ZiA9IChndWludDgqKWJ1ZmZlciArIDEwOwotKwlpZiAoaGRyLT5mbGFncyAmIDB4MDQpIHsKLSsJCWd1aW50MTYgeGxlbiA9IEdVSU5UMTZfRlJPTV9MRSgqKChndWludDE2KiljYnVmKSk7Ci0rCQljYnVmICs9IHhsZW4gKyAyOwotKwl9Ci0rCWlmIChoZHItPmZsYWdzICYgMHgwOCkgewotKwkJZ3VpbnQxNiBvbmFtZWxlbiA9IHN0cmxlbihjYnVmKTsKLSsJCWNidWYgKz0gb25hbWVsZW4gKyAxOwotKwl9Ci0rCWlmIChoZHItPmZsYWdzICYgMHgxMCkgewotKwkJZ3VpbnQxNiBjb21tZW50bGVuID0gc3RybGVuKGNidWYpOwotKwkJY2J1ZiArPSBjb21tZW50bGVuICsgMTsKLSsJfQotKwlpZiAoaGRyLT5mbGFncyAmIDB4MDIpCi0rCXsKLSsJCWNidWYgKz0gMjsgLyogc2tpcCBoZWFkZXIgQ1JDMTYgKi8KLSsJfQotKwotKwl6c3RyZWFtLm5leHRfaW4gID0gKHZvaWQqKWNidWY7Ci0rCXpzdHJlYW0uYXZhaWxfaW4gPSAodUxvbmdmKSBsZW4gLSAoKHZvaWQqKWNidWYtKHZvaWQqKWJ1ZmZlcikgLSA0IC0gNCArMTsgCi0rCXpzdHJlYW0ubmV4dF9vdXQgPSBkZWNvbXByZXNzX2J1ZjsKLSsJenN0cmVhbS5hdmFpbF9vdXQ9IGRlY29tcHJlc3NfbGVuOwotKwl6c3RyZWFtLnphbGxvYyAgID0gWl9OVUxMOwotKwl6c3RyZWFtLnpmcmVlICAgID0gWl9OVUxMOwotKwl6c3RyZWFtLm9wYXF1ZSAgID0gWl9OVUxMOwotKwotKwlyZXQgPSBpbmZsYXRlSW5pdDIoJnpzdHJlYW0sIC1NQVhfV0JJVFMpOwotKwotKwlpZiAocmV0ICE9IFpfT0spIHsKLSsJCWdfd2FybmluZygiaW5mbGF0ZUluaXQyKCkgZmFpbGVkLiB6bGliIGVycm9yIGNvZGU6ICVkIiwgcmV0KTsKLSsJCWdfZnJlZShkZWNvbXByZXNzX2J1Zik7Ci0rCQlyZXR1cm4gTlVMTDsKLSsJfQotKwotKwlyZXQgPSBpbmZsYXRlKCZ6c3RyZWFtLCBaX0ZJTklTSCk7Ci0rCi0rCWlmIChyZXQgIT0gWl9TVFJFQU1fRU5EKSB7Ci0rCQlnX3dhcm5pbmcoInpsaWIgZGVjb21wcmVzc2lvbiBmYWlsZWQuIHpsaWIgZXJyb3IgY29kZTogJWQiLCByZXQpOwotKwkJZ19mcmVlKGRlY29tcHJlc3NfYnVmKTsKLSsJCXJldHVybiBOVUxMOwotKwl9Ci0rCi0rCWludGVyZmFjZSA9IGdsYWRlX3BhcnNlcl9wYXJzZV9idWZmZXJfaW50ZXJuYWwoZGVjb21wcmVzc19idWYsIGRlY29tcHJlc3NfbGVuLCBkb21haW4pOwotKwotKwlnX2ZyZWUoZGVjb21wcmVzc19idWYpOwotKwotKwlyZXR1cm4gaW50ZXJmYWNlOwotK30KLSsKLStHbGFkZUludGVyZmFjZSAqCi0rZ2xhZGVfcGFyc2VyX3BhcnNlX2J1ZmZlcihjb25zdCBnY2hhciAqYnVmZmVyLCBnaW50IGxlbiwgY29uc3QgZ2NoYXIgKmRvbWFpbikKLSt7Ci0rCWdfcmV0dXJuX3ZhbF9pZl9mYWlsKGJ1ZmZlciAhPSBOVUxMLCBOVUxMKTsKLSsJZ19yZXR1cm5fdmFsX2lmX2ZhaWwobGVuID4gMCwgTlVMTCk7Ci0rCi0rCS8qIENoZWNrIGlmIGJ1ZmZlciBpcyBnemlwcGVkICovCi0rCWlmIChidWZmZXJbMF0gPT0gMHgxZiAmJiBidWZmZXJbMV0gPT0gKGdjaGFyKTB4OGIpIHsKLSsJCXJldHVybiBnbGFkZV9wYXJzZXJfcGFyc2VfZ3ppcHBlZF9idWZmZXIoYnVmZmVyLCBsZW4sIGRvbWFpbik7Ci0rCX0KLSsKLSsJLyogQnVmZmVyIGlzIGNsZWFydGV4dC4gKi8KLSsJcmV0dXJuIGdsYWRlX3BhcnNlcl9wYXJzZV9idWZmZXJfaW50ZXJuYWwoYnVmZmVyLCBsZW4sIGRvbWFpbik7Ci0rfQotKwotKyNlbmRpZiAvKiBVU0VfR01BUktVUF9QQVJTRVIgKi8KLSsKLSsKLSsjaWZuZGVmIFVTRV9HTUFSS1VQX1BBUlNFUgotKwotIHN0YXRpYyB2b2lkCi0gZHVtcF93aWRnZXQoeG1sTm9kZSAqcGFyZW50LCBHbGFkZVdpZGdldEluZm8gKmluZm8sIGdpbnQgaW5kZW50KQotIHsKLUBAIC0xMzgyLDYgKzE2NzQsOCBAQAotIAl4bWxOb2RlQWRkQ29udGVudCh3aWRnZXQsICIgICIpOwotIH0KLSAKLSsjZW5kaWYgLyogIWRlZmluZWQoVVNFX0dNQVJLVVBfUEFSU0VSKSAqLwotKwotIC8qKgotICAqIGdsYWRlX2ludGVyZmFjZV9kdW1wCi0gICogQGludGVyZmFjZTogdGhlIEdsYWRlSW50ZXJmYWNlCi1AQCAtMTM5MCw2ICsxNjg0LDkgQEAKLSAgKiBUaGlzIGZ1bmN0aW9uIGR1bXBzIHRoZSBjb250ZW50cyBvZiBhIEdsYWRlSW50ZXJmYWNlIGludG8gYSBmaWxlIGFzCi0gICogWE1MLiAgSXQgaXMgaW50ZW5kZWQgbWFpbmx5IGFzIGEgZGVidWdnaW5nIHRvb2wuCi0gICovCi0rCi0rI2lmbmRlZiBVU0VfR01BUktVUF9QQVJTRVIKLSsKLSB2b2lkCi0gZ2xhZGVfaW50ZXJmYWNlX2R1bXAoR2xhZGVJbnRlcmZhY2UgKmludGVyZmFjZSwgY29uc3QgZ2NoYXIgKmZpbGVuYW1lKQotIHsKLUBAIC0xNDI4LDYgKzE3MjUsMTcgQEAKLSAgICAgeG1sRnJlZURvYyhkb2MpOwotIH0KLSAKLSsjZWxzZSAvKiBkZWZpbmVkKFVTRV9HTUFSS1VQX1BBUlNFUikgKi8KLSsKLSt2b2lkCi0rZ2xhZGVfaW50ZXJmYWNlX2R1bXAoR2xhZGVJbnRlcmZhY2UgKmludGVyZmFjZSwgY29uc3QgZ2NoYXIgKmZpbGVuYW1lKQotK3sKLSsgICAgZ193YXJuaW5nKCJnbGFkZV9pbnRlcmZhY2VfZHVtcCgpIGlzIG9ubHkgYXZhaWxhYmxlIHdpdGggbGlieG1sMi4iKTsKLSt9Ci0rCi0rI2VuZGlmIC8qIFVTRV9HTUFSS1VQX1BBUlNFUiAqLwotKwotKwotICNpZiAwCi0gaW50Ci0gbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLWRpZmYgLXVyTiBsaWJnbGFkZS0yLjQuMi5vcmlnL2xpYmdsYWRlLTIuMC5wYy5pbiBsaWJnbGFkZS0yLjQuMi9saWJnbGFkZS0yLjAucGMuaW4KLS0tLSBsaWJnbGFkZS0yLjQuMi5vcmlnL2xpYmdsYWRlLTIuMC5wYy5pbgkyMDAxLTEyLTEyIDE1OjI4OjIzLjAwMDAwMDAwMCArMDEwMAotKysrIGxpYmdsYWRlLTIuNC4yL2xpYmdsYWRlLTIuMC5wYy5pbgkyMDA1LTAzLTIyIDAxOjIwOjAwLjAwMDAwMDAwMCArMDEwMAotQEAgLTExLDcgKzExLDcgQEAKLSBOYW1lOiBMaWJnbGFkZQotIERlc2NyaXB0aW9uOiBhIGxpYnJhcnkgZm9yIGR5bmFtaWNhbGx5IGxvYWRpbmcgR0xBREUgaW50ZXJmYWNlIGZpbGVzCi0gVmVyc2lvbjogQFZFUlNJT05ACi0tUmVxdWlyZXM6IGd0aystMi4wIGxpYnhtbC0yLjAKLStSZXF1aXJlczogZ3RrKy0yLjAgQFBLR0NGR19SRVFVSVJFX0xJQlhNTDJACi0gTGliczogLUwke2xpYmRpcn0gLWxnbGFkZS0yLjAKLSBDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfS9saWJnbGFkZS0yLjAKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGliZ2xhZGUvbGliZ2xhZGUtMi42LjQvcHl0aG9uX2Vudmlyb25tZW50LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJnbGFkZS9saWJnbGFkZS0yLjYuNC9weXRob25fZW52aXJvbm1lbnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1YjJlYzQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJnbGFkZS9saWJnbGFkZS0yLjYuNC9weXRob25fZW52aXJvbm1lbnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1Vc2luZyBAUFlUSE9OQCBmb3IgdGhpcyBwYXRoIHdvdWxkIHJlc3VsdCBpbiB0aGUgYnVpbGQgc3lzdGVtIHB5dGhvbiBiZWluZyAKLXJlZmVycmVkIHRvLiBJbnN0ZWFkIHdlIHdhbnQgdG8gbG9jYXRlIHB5dGhvbiBmcm9tIHRoZSBlbnZpcm9ubWVudC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1kaWZmIC1ydU4gbGliZ2xhZGUtMi42LjQtb3JpZy8vbGliZ2xhZGUtY29udmVydC5pbiBsaWJnbGFkZS0yLjYuNC9saWJnbGFkZS1jb252ZXJ0LmluCi0tLS0gbGliZ2xhZGUtMi42LjQtb3JpZy8vbGliZ2xhZGUtY29udmVydC5pbgkyMDExLTA5LTIyIDEwOjE4OjI4Ljk5MTE2NDAwMyArMDgwMAotKysrIGxpYmdsYWRlLTIuNi40L2xpYmdsYWRlLWNvbnZlcnQuaW4JMjAxMS0wOS0yMiAxMDoxODo1NS40MzExNjQwMDMgKzA4MDAKLUBAIC0xLDQgKzEsNCBAQAotLSMhQFBZVEhPTkAKLSsjIS91c3IvYmluL2VudiBweXRob24KLSAjIC0qLSBtb2RlOiBweXRob24gLSotCi0gCi0gIyB5ZXMsIHRoaXMgcmVxdWlyZXMgcHl0aG9uIDIueCBhbmQgYW4gWE1MIHBhcnNlciBtb2R1bGUgKGVnLiBQeUV4cGF0KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJnbGFkZS9saWJnbGFkZV8yLjYuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGliZ2xhZGUvbGliZ2xhZGVfMi42LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1M2UxOWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJnbGFkZS9saWJnbGFkZV8yLjYuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiUnVudGltZSBzdXBwb3J0IGZvciB0aGUgR1RLKyBpbnRlcmZhY2UgYnVpbGRlciIKLUhPTUVQQUdFID0gImh0dHA6Ly9saWJyYXJ5Lmdub21lLm9yZy9kZXZlbC9saWJnbGFkZS8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKLQotTElDRU5TRSA9ICJMR1BMdjIgJiBMR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTVjYTgxN2NjYjdkNWI1YjY2MzU1NjkwZTlhYmM2MDUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2xhZGUvZ2xhZGUuaDtlbmRsaW5lPTIyO21kNT1hMDRmNDYxYzk2NGJhNGI1N2ExNzJkMWZiY2Q4ZjhmYyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nbGFkZS9nbGFkZS1ndGsuYztlbmRsaW5lPTIyO21kNT03NjZmOTkzNDMzZTI2NDJmZWM4NzkzNmQzMTk5OTBmZiIKLQotU0VDVElPTiA9ICJsaWJzIgotUFIgPSAicjUiCi1ERVBFTkRTID0gInpsaWIgZ2RrLXBpeGJ1ZiBndGsrIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ25vbWViYXNlIGd0ay1kb2MgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi1BTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIiR7R1RLMkRJU1RST0ZFQVRVUkVTfSIKLUdOT01FX0NPTVBSRVNTX1RZUEU9ImJ6MiIKLQotU1JDX1VSSSArPSAiZmlsZTovL2dsYWRlLWNydWZ0LnBhdGNoIGZpbGU6Ly9uby14bWwyLnBhdGNoIGZpbGU6Ly9weXRob25fZW52aXJvbm1lbnQucGF0Y2giCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImQxNzc2YjQwZjRlMTY2YjVlOWMxMDdmMWM4ZmU0MTM5IgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiNjQzNjFlNzY0NzgzOWQzNmVkODMzNmQ5OTJmZDIxMGQzZTgxMzk4ODIyNjliZWQ0N2RjNDY3NDk4MDE2NWRlYyIKLQotRVhUUkFfT0VDT05GICs9ICItLXdpdGhvdXQtbGlieG1sMiIKLQotQ0ZMQUdTICs9ICItbHoiCi0KLVBBQ0tBR0VTICs9ICIgJHtQTn0tZGF0YSIKLUZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWIqLnNvLioiCi1GSUxFU18ke1BOfS1kYXRhID0gIiR7ZGF0YWRpcn0veG1sL2xpYmdsYWRlL2dsYWRlLTIuMC5kdGQiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9saWJnbGFkZS1jb252ZXJ0IgotI1JERVBFTkRTXyR7UE59ID0gIiR7UE59LWRhdGEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYmd1ZGV2L2xpYmd1ZGV2XzIzMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGliZ3VkZXYvbGliZ3VkZXZfMjMwLmJiCmluZGV4IDZhMTA1MDIuLjcwOTU1M2IgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGliZ3VkZXYvbGliZ3VkZXZfMjMwLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGliZ3VkZXYvbGliZ3VkZXZfMjMwLmJiCkBAIC0xMCw1ICsxMCw3IEBACiBMSUNFTlNFID0gIkxHUEx2Mi4xIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCiAKLWluaGVyaXQgZ25vbWViYXNlIGdvYmplY3QtaW50cm9zcGVjdGlvbgoraW5oZXJpdCBnbm9tZWJhc2UgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MKIAorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzL2xpYmd1ZGV2LyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPihcZCspKSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlicnN2Zy9saWJyc3ZnXzIuNDAuMTMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnJzdmcvbGlicnN2Z18yLjQwLjEzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYWM1MmY3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlicnN2Zy9saWJyc3ZnXzIuNDAuMTMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgZm9yIHJlbmRlcmluZyBTVkcgZmlsZXMiCi1IT01FUEFHRSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy9saWJyc3ZnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotCi1MSUNFTlNFID0gIkxHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9yc3ZnLmg7YmVnaW5saW5lPTM7ZW5kbGluZT0yNDttZDU9MjBiNDExM2M0OTA5YmJmMGQ2N2UwMDY3NzgzMDJiYzYiCi0KLVNFQ1RJT04gPSAieDExL3V0aWxzIgotREVQRU5EUyA9ICJjYWlybyBnZGstcGl4YnVmIGdsaWItMi4wIGxpYmNyb2NvIGxpYnhtbDIgcGFuZ28iCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdub21lYmFzZSBndGstZG9jIHBpeGJ1ZmNhY2hlIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotU1JDX1VSSSArPSAiZmlsZTovL2d0ay1vcHRpb24ucGF0Y2giCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImFkMDM3ODBlMTJjNTZlNTI0NzRkOGVkZjg2OTc2YzczIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiNGQ2ZWE5M2VjMDVmNWRhYmU3MjYyZDcxMWQyNDZhMGE5OWIyMzExZTIxNTM2MGRkM2RjYWJkNmFmZTNiOTgwNCIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgPSAiYWNfY3ZfcGF0aF9HREtfUElYQlVGX1FVRVJZTE9BREVSUz0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzIgotCi0jIFRoZSBvbGRlciBsZCAoMi4yMikgb24gdGhlIGhvc3QgKENlbnRvcyA2LjUpIGRvZXNuJ3QgaGF2ZSB0aGUKLSMgLUJzeW1ib2xpYy1mdW5jdGlvbnMgb3B0aW9uLCB3ZSBjYW4gZGlzYWJsZSBpdCBmb3IgbmF0aXZlLgotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0tZW5hYmxlLUJzeW1ib2xpYz1hdXRvIgotCi1QQUNLQUdFQ09ORklHID8/PSAiZ2RrcGl4YnVmIgotIyBUaGUgZ2RrLXBpeGJ1ZiBsb2FkZXIKLVBBQ0tBR0VDT05GSUdbZ2RrcGl4YnVmXSA9ICItLWVuYWJsZS1waXhidWYtbG9hZGVyLC0tZGlzYWJsZS1waXhidWYtbG9hZGVyLGdkay1waXhidWYtbmF0aXZlIgotIyBHVEsrIHRlc3QgYXBwbGljYXRpb24gKHJzdmctdmlldykKLVBBQ0tBR0VDT05GSUdbZ3RrXSA9ICItLXdpdGgtZ3RrMywtLXdpdGhvdXQtZ3RrMyxndGsrMyIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JIyBMb2FkYWJsZSBtb2R1bGVzIGRvbid0IG5lZWQgLmEgb3IgLmxhIG9uIExpbnV4Ci0Jcm0gLWYgJHtEfSR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8qL2xvYWRlcnMvKi5hICR7RH0ke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvKi9sb2FkZXJzLyoubGEKLX0KLQotUEFDS0FHRVMgPSsgImxpYnJzdmctZ3RrIHJzdmciCi1GSUxFU19yc3ZnID0gIiR7YmluZGlyfS9yc3ZnKiBcCi0JICAgICAgJHtkYXRhZGlyfS9waXhtYXBzL3N2Zy12aWV3ZXIuc3ZnIFwKLQkgICAgICAke2RhdGFkaXJ9L3RoZW1lcyIKLUZJTEVTX2xpYnJzdmctZ3RrID0gIiR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8qLyovKi5zbyIKLQotUElYQlVGX1BBQ0tBR0VTID0gImxpYnJzdmctZ3RrIgotCi1QSVhCVUZDQUNIRV9TWVNST09UX0RFUFNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgaGFyZmJ1enotbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmUgcGFuZ28tbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmUgaWN1LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290X3NldHNjZW5lIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJyc3ZnL2xpYnJzdmdfMi40MC4xNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlicnN2Zy9saWJyc3ZnXzIuNDAuMTYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDkyNDNjOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlicnN2Zy9saWJyc3ZnXzIuNDAuMTYuYmIKQEAgLTAsMCArMSw0MyBAQAorU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciByZW5kZXJpbmcgU1ZHIGZpbGVzIgorSE9NRVBBR0UgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3NvdXJjZXMvbGlicnN2Zy8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKKworTElDRU5TRSA9ICJMR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcnN2Zy5oO2JlZ2lubGluZT0zO2VuZGxpbmU9MjQ7bWQ1PTIwYjQxMTNjNDkwOWJiZjBkNjdlMDA2Nzc4MzAyYmM2IgorCitTRUNUSU9OID0gIngxMS91dGlscyIKK0RFUEVORFMgPSAiY2Fpcm8gZ2RrLXBpeGJ1ZiBnbGliLTIuMCBsaWJjcm9jbyBsaWJ4bWwyIHBhbmdvIgorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnbm9tZWJhc2UgZ3RrLWRvYyBwaXhidWZjYWNoZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9ndGstb3B0aW9uLnBhdGNoIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJmNDc0ZmUzNzE3N2EyYmY4MDUwNzg3ZGYyMDQ2MDk1YyIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImQ0OGJjZjZiMDNmYTk4ZjA3ZGYxMDMzMmZiNDlkOGMwMTA3ODZkZGNhNmFiMzRjYmJhMjE3Njg0ZjUzM2ZmMmUiCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTID0gImFjX2N2X3BhdGhfR0RLX1BJWEJVRl9RVUVSWUxPQURFUlM9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wL2dkay1waXhidWYtcXVlcnktbG9hZGVycyIKKworIyBUaGUgb2xkZXIgbGQgKDIuMjIpIG9uIHRoZSBob3N0IChDZW50b3MgNi41KSBkb2Vzbid0IGhhdmUgdGhlCisjIC1Cc3ltYm9saWMtZnVuY3Rpb25zIG9wdGlvbiwgd2UgY2FuIGRpc2FibGUgaXQgZm9yIG5hdGl2ZS4KK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtLWVuYWJsZS1Cc3ltYm9saWM9YXV0byIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImdka3BpeGJ1ZiIKKyMgVGhlIGdkay1waXhidWYgbG9hZGVyCitQQUNLQUdFQ09ORklHW2dka3BpeGJ1Zl0gPSAiLS1lbmFibGUtcGl4YnVmLWxvYWRlciwtLWRpc2FibGUtcGl4YnVmLWxvYWRlcixnZGstcGl4YnVmLW5hdGl2ZSIKKyMgR1RLKyB0ZXN0IGFwcGxpY2F0aW9uIChyc3ZnLXZpZXcpCitQQUNLQUdFQ09ORklHW2d0a10gPSAiLS13aXRoLWd0azMsLS13aXRob3V0LWd0azMsZ3RrKzMiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgTG9hZGFibGUgbW9kdWxlcyBkb24ndCBuZWVkIC5hIG9yIC5sYSBvbiBMaW51eAorCXJtIC1mICR7RH0ke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvKi9sb2FkZXJzLyouYSAke0R9JHtsaWJkaXJ9L2dkay1waXhidWYtMi4wLyovbG9hZGVycy8qLmxhCit9CisKK1BBQ0tBR0VTID0rICJsaWJyc3ZnLWd0ayByc3ZnIgorRklMRVNfcnN2ZyA9ICIke2JpbmRpcn0vcnN2ZyogXAorCSAgICAgICR7ZGF0YWRpcn0vcGl4bWFwcy9zdmctdmlld2VyLnN2ZyBcCisJICAgICAgJHtkYXRhZGlyfS90aGVtZXMiCitGSUxFU19saWJyc3ZnLWd0ayA9ICIke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvKi8qLyouc28iCisKK1BJWEJVRl9QQUNLQUdFUyA9ICJsaWJyc3ZnLWd0ayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlic2VjcmV0L2xpYnNlY3JldF8wLjE4LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnNlY3JldC9saWJzZWNyZXRfMC4xOC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWFhYmEwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlic2VjcmV0L2xpYnNlY3JldF8wLjE4LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gImxpYnNlY3JldCBpcyBhIGxpYnJhcnkgZm9yIHN0b3JpbmcgYW5kIHJldHJpZXZpbmcgcGFzc3dvcmRzIGFuZCBvdGhlciBzZWNyZXRzIgotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTIzYzJhNWUwMTA2Yjk5ZDc1MjM4OTg2NTU5YmI1ZmM2IgotCi1pbmhlcml0IGdub21lYmFzZSBndGstZG9jIHZhbGEgZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLURFUEVORFMgKz0gImdsaWItMi4wIGxpYmdjcnlwdCBnZXR0ZXh0LW5hdGl2ZSBpbnRsdG9vbC1uYXRpdmUiCi0KLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLW1hbnBhZ2VzIgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI1MTkwZGExZWU2ODY0MzcwNDZiYzEwMDY4ZjEyMGQxZCIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjBmMjliNTE2OTgxOThlNjk5OWM5MWY0YWRjZTMxMTljOGM0NTdmNTQ2YjEzM2E4NWJhZWE1ZWE5MDEwYTE5ZWQiCi0KLSMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzIwMjI4LwotQVJNX0lOU1RSVUNUSU9OX1NFVCA9ICJhcm0iCi0KLSMgdmFwaWdlbi5tNCBidW5kbGVkIHdpdGggdGhlIHRhcmJhbGwgZG9lcyBub3QgeWV0IGhhdmUgb3VyIGNyb3NzLWNvbXBpbGF0aW9uIGZpeGVzCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBybSAtZiAke1N9L2J1aWxkL200L3ZhcGlnZW4ubTQKLX0KLQotIyBTZWNyZXQtMTogcG9reS9idWlsZC1taXBzNjQvdG1wL3dvcmsvbWlwczY0LXBva3ktbGludXgvbGliZ3BnLWVycm9yLzEuMTktcjAvbGliZ3BnLWVycm9yLTEuMTkvc3JjL3Bvc2l4LWxvY2suYzoxMTk6IGdldF9sb2NrX29iamVjdDogQXNzZXJ0aW9uIGAhInNpemVvZiBsb2NrIG9iaiInIGZhaWxlZC4KLSMgcWVtdTogdW5jYXVnaHQgdGFyZ2V0IHNpZ25hbCA2IChBYm9ydGVkKSAtIGNvcmUgZHVtcGVkCi1FWFRSQV9PRUNPTkZfYXBwZW5kX21pcHM2NCA9ICIgLS1kaXNhYmxlLWludHJvc3BlY3Rpb24iCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlic2VjcmV0L2xpYnNlY3JldF8wLjE4LjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnNlY3JldC9saWJzZWNyZXRfMC4xOC41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjYjMwNDYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnNlY3JldC9saWJzZWNyZXRfMC4xOC41LmJiCkBAIC0wLDAgKzEsMjUgQEAKK1NVTU1BUlkgPSAibGlic2VjcmV0IGlzIGEgbGlicmFyeSBmb3Igc3RvcmluZyBhbmQgcmV0cmlldmluZyBwYXNzd29yZHMgYW5kIG90aGVyIHNlY3JldHMiCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjNjMmE1ZTAxMDZiOTlkNzUyMzg5ODY1NTliYjVmYzYiCisKK2luaGVyaXQgZ25vbWViYXNlIGd0ay1kb2MgdmFsYSBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworREVQRU5EUyArPSAiZ2xpYi0yLjAgbGliZ2NyeXB0IGdldHRleHQtbmF0aXZlIGludGx0b29sLW5hdGl2ZSIKKworRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtbWFucGFnZXMiCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjJkNjg4ODI1OTIxMzEzZGE4NzMxMzEzYjBhN2YzOTRjIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiOWNlN2JkOGRkNTgzMWYyNzg2YzkzNWQ4MjYzOGFjNDI4ZmEwODUwNTdjYzY3ODBhYmEwZTM5Mzc1ODg3Y2NiMyIKKworIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjAyMjgvCitBUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKKworIyB2YXBpZ2VuLm00IGJ1bmRsZWQgd2l0aCB0aGUgdGFyYmFsbCBkb2VzIG5vdCB5ZXQgaGF2ZSBvdXIgY3Jvc3MtY29tcGlsYXRpb24gZml4ZXMKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgIHJtIC1mICR7U30vYnVpbGQvbTQvdmFwaWdlbi5tNAorfQorCisjIFNlY3JldC0xOiBwb2t5L2J1aWxkLW1pcHM2NC90bXAvd29yay9taXBzNjQtcG9reS1saW51eC9saWJncGctZXJyb3IvMS4xOS1yMC9saWJncGctZXJyb3ItMS4xOS9zcmMvcG9zaXgtbG9jay5jOjExOTogZ2V0X2xvY2tfb2JqZWN0OiBBc3NlcnRpb24gYCEic2l6ZW9mIGxvY2sgb2JqIicgZmFpbGVkLgorIyBxZW11OiB1bmNhdWdodCB0YXJnZXQgc2lnbmFsIDYgKEFib3J0ZWQpIC0gY29yZSBkdW1wZWQKK0VYVFJBX09FQ09ORl9hcHBlbmRfbWlwczY0ID0gIiAtLWRpc2FibGUtaW50cm9zcGVjdGlvbiAtLWRpc2FibGUtZ3RrLWRvYyIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJ3bmNrL2xpYnduY2szXzMuMTQuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlid25jay9saWJ3bmNrM18zLjE0LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5NTg5NGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJ3bmNrL2xpYnduY2szXzMuMTQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVNVTU1BUlkgPSAiV2luZG93IG5hdmlnYXRpb24gY29uc3RydWN0aW9uIHRvb2xraXQiCi1MSUNFTlNFID0gIkxHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIgotCi1CUE4gPSAibGlid25jayIKLQotU0VDVElPTiA9ICJ4MTEvbGlicyIKLURFUEVORFMgPSAiZ3RrKzMgZ2RrLXBpeGJ1Zi1uYXRpdmUgbGlieHJlcyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInN0YXJ0dXAtbm90aWZpY2F0aW9uIgotUEFDS0FHRUNPTkZJR1tzdGFydHVwLW5vdGlmaWNhdGlvbl0gPSAiLS1lbmFibGUtc3RhcnR1cC1ub3RpZmljYXRpb24sLS1kaXNhYmxlLXN0YXJ0dXAtbm90aWZpY2F0aW9uLHN0YXJ0dXAtbm90aWZpY2F0aW9uIgotCi1pbmhlcml0IGdub21lYmFzZSBnb2JqZWN0LWludHJvc3BlY3Rpb24KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImQ5NmMwYjc0YzRkYzVmZGFlNzU4OTY0MDk4NjAzYzkwIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiYmI2NDNjOWM0MjNjOGFhNzljNTk5NzNjZTI3Y2U5MWQzYjE4MGQxZTk5MDc5MDIyNzhmYjc5MzkxZjUyYmVmYSIKLQotaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLSMgbGlieHJlcyBtZWFucyB4MTEgb25seQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJ3bmNrL2xpYnduY2szXzMuMjAuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlid25jay9saWJ3bmNrM18zLjIwLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQ0ZWY2OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlid25jay9saWJ3bmNrM18zLjIwLjEuYmIKQEAgLTAsMCArMSwxOSBAQAorU1VNTUFSWSA9ICJXaW5kb3cgbmF2aWdhdGlvbiBjb25zdHJ1Y3Rpb24gdG9vbGtpdCIKK0xJQ0VOU0UgPSAiTEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIiCisKK0JQTiA9ICJsaWJ3bmNrIgorCitTRUNUSU9OID0gIngxMS9saWJzIgorREVQRU5EUyA9ICJpbnRsdG9vbC1uYXRpdmUgZ3RrKzMgZ2RrLXBpeGJ1Zi1uYXRpdmUgbGlieHJlcyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInN0YXJ0dXAtbm90aWZpY2F0aW9uIgorUEFDS0FHRUNPTkZJR1tzdGFydHVwLW5vdGlmaWNhdGlvbl0gPSAiLS1lbmFibGUtc3RhcnR1cC1ub3RpZmljYXRpb24sLS1kaXNhYmxlLXN0YXJ0dXAtbm90aWZpY2F0aW9uLHN0YXJ0dXAtbm90aWZpY2F0aW9uIgorCitpbmhlcml0IGdub21lYmFzZSBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNDg3OTM4ZDY1ZDRiZmFlMWYyNTAxMDUyYjFiZDc0OTIiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIxY2IwMzcxNmJjNDc3MDU4ZGZkZjNlYmZhNGY1MzRkZTNiMTNiMWFhMDY3ZmNkMDY0ZDBiNzgxMzI5MWNiYTcyIgorCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjaworIyBsaWJ4cmVzIG1lYW5zIHgxMSBvbmx5CitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9idWlsZGVyL2ZpbGVzL2J1aWxkZXJfc2Vzc2lvbi5zaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvYnVpbGRlci9maWxlcy9idWlsZGVyX3Nlc3Npb24uc2gKaW5kZXggMDAxYTAzMy4uNGU1MDlhNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9idWlsZGVyL2ZpbGVzL2J1aWxkZXJfc2Vzc2lvbi5zaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2J1aWxkZXIvZmlsZXMvYnVpbGRlcl9zZXNzaW9uLnNoCkBAIC0yMyw4ICsyMyw4IEBACiAgICAgeGRnLW1pbWUgZGVmYXVsdCBlcGlwaGFueS5kZXNrdG9wIHgtc2NoZW1lLWhhbmRsZXIvaHR0cHMKICAgICB4ZGctbWltZSBkZWZhdWx0IGVwaXBoYW55LmRlc2t0b3AgdGV4dC9odG1sCiAKLSAgICAjcmVnaXN0ZXIgdGV4dCBmaWxlcyB3aXRoIGxlYWZwYWQgdGV4dCBlZGl0b3IKLSAgICB4ZGctbWltZSBkZWZhdWx0IGxlYWZwYWQuZGVza3RvcCB0ZXh0L3BsYWluCisgICAgI3JlZ2lzdGVyIHRleHQgZmlsZXMgd2l0aCBsM2FmcGFkIHRleHQgZWRpdG9yCisgICAgeGRnLW1pbWUgZGVmYXVsdCBsM2FmcGFkLmRlc2t0b3AgdGV4dC9wbGFpbgogZmkKIAogY2QgL2hvbWUvYnVpbGRlci9wb2t5CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2Fpcm8vY2Fpcm8uaW5jCmluZGV4IGM3ZTY4NmQuLmM0YjZmMzIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2Fpcm8vY2Fpcm8uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2Fpcm8vY2Fpcm8uaW5jCkBAIC0zNiw3ICszNiw3IEBACiAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLXRlZSBcCiAgICAgICAgICAgICAgICAgIgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ3RrLWRvYwogCiAjIFdlIGRvbid0IGRlcGVuZCBvbiBiaW51dGlscyBzbyB3ZSBuZWVkIHRvIGRpc2FibGUgdGhpcwogZXhwb3J0IGFjX2N2X2xpYl9iZmRfYmZkX29wZW5yPSJubyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2Fpcm8vY2Fpcm9fMS4xNC42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYWlyby9jYWlyb18xLjE0LjYuYmIKaW5kZXggMjBiNDY2OC4uZDJjMWUxMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYWlyby9jYWlyb18xLjE0LjYuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYWlyby9jYWlyb18xLjE0LjYuYmIKQEAgLTcsOCArNyw2IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiMjNhMGIyZjAyMzU0MzFkMzUyMzhkZjFkM2E1MTdmZGIiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjEzY2IzODQ0N2I3NmE5M2ZmNzIzNWUxN2FjZDU1YTc4YjUyZWE4NGE5ZGYxMjhjM2YyMjU3ZjhlYWE3YjI1MiIKIAotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiY2Fpcm8tKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCi0KIFBBQ0tBR0VTID0rICJjYWlyby1nb2JqZWN0IGNhaXJvLXNjcmlwdC1pbnRlcnByZXRlciBjYWlyby1wZXJmLXV0aWxzIgogCiBTVU1NQVJZXyR7UE59ID0gIlRoZSBDYWlybyAyRCB2ZWN0b3IgZ3JhcGhpY3MgbGlicmFyeSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2FudGFyZWxsLWZvbnRzL2NhbnRhcmVsbC1mb250c19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhbnRhcmVsbC1mb250cy9jYW50YXJlbGwtZm9udHNfZ2l0LmJiCmluZGV4IDEyN2YwYTEuLmUzZTRjZGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2FudGFyZWxsLWZvbnRzL2NhbnRhcmVsbC1mb250c19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYW50YXJlbGwtZm9udHMvY2FudGFyZWxsLWZvbnRzX2dpdC5iYgpAQCAtMTAsMTAgKzEwLDExIEBACiBMSUNFTlNFID0gIk9GTC0xLjEiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kZjkxZTNmZmNhYjhjZmI5NzJhNjZiZjExMjU1MTg4ZCIKIAotUFYgPSAiMC4wLjIxK2dpdCR7U1JDUFZ9IgorUFYgPSAiMC4wLjI0IgogCi1TUkNSRVYgPSAiNjExYzE2OWRmNTI4N2MwNTlkNjNiMGM4ZjA1NzA2NDdjNzVjOTE4OSIKK1NSQ1JFViA9ICIwN2I2ZWEyY2JiZWJmYzM2MGFhNDY2ODYxMmEzNzZiZTVlMjE0ZWFhIgogU1JDX1VSSSA9ICJnaXQ6Ly9naXQuZ25vbWUub3JnL2NhbnRhcmVsbC1mb250cztwcm90b2NvbD1naXQ7YnJhbmNoPW1hc3RlciIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPig/ITBcLjEzKSg/ITBcLjEwXC4xKVxkK1wuXGQrKFwuXGQrKSspIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci0xLjAvMDAwMS1SZW1vdmUtY2x1dHRlci50eXBlcy1hcy1pdC1pcy1idWlsZC1jb25maWd1cmF0aW9uLXNwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItMS4wLzAwMDEtUmVtb3ZlLWNsdXR0ZXIudHlwZXMtYXMtaXQtaXMtYnVpbGQtY29uZmlndXJhdGlvbi1zcC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjNjMTk4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItMS4wLzAwMDEtUmVtb3ZlLWNsdXR0ZXIudHlwZXMtYXMtaXQtaXMtYnVpbGQtY29uZmlndXJhdGlvbi1zcC5wYXRjaApAQCAtMCwwICsxLDE0MyBAQAorRnJvbSAzYTA0MDRkZmJjNjVjNmE4NjRlMDFkMTIwMGE0ODA3NGUxOWQ1ZGVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBGcmksIDIgU2VwIDIwMTYgMTQ6Mjg6MzggKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gUmVtb3ZlIGNsdXR0ZXIudHlwZXMgYXMgaXQgaXMgYnVpbGQgY29uZmlndXJhdGlvbi1zcGVjaWZpYy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGRvYy9yZWZlcmVuY2UvY2x1dHRlci50eXBlcyB8IDEyMiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMjIgZGVsZXRpb25zKC0pCisgZGVsZXRlIG1vZGUgMTAwNjQ0IGRvYy9yZWZlcmVuY2UvY2x1dHRlci50eXBlcworCitkaWZmIC0tZ2l0IGEvZG9jL3JlZmVyZW5jZS9jbHV0dGVyLnR5cGVzIGIvZG9jL3JlZmVyZW5jZS9jbHV0dGVyLnR5cGVzCitkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMzdhY2MuLjAwMDAwMDAKKy0tLSBhL2RvYy9yZWZlcmVuY2UvY2x1dHRlci50eXBlcworKysrIC9kZXYvbnVsbAorQEAgLTEsMTIyICswLDAgQEAKKy1jYWxseV9hY3Rvcl9nZXRfdHlwZQorLWNhbGx5X2Nsb25lX2dldF90eXBlCistY2FsbHlfZ3JvdXBfZ2V0X3R5cGUKKy1jYWxseV9yZWN0YW5nbGVfZ2V0X3R5cGUKKy1jYWxseV9yb290X2dldF90eXBlCistY2FsbHlfc3RhZ2VfZ2V0X3R5cGUKKy1jYWxseV90ZXh0X2dldF90eXBlCistY2FsbHlfdGV4dHVyZV9nZXRfdHlwZQorLWNhbGx5X3V0aWxfZ2V0X3R5cGUKKy1jbHV0dGVyX2FjdGlvbl9nZXRfdHlwZQorLWNsdXR0ZXJfYWN0b3JfYm94X2dldF90eXBlCistY2x1dHRlcl9hY3Rvcl9nZXRfdHlwZQorLWNsdXR0ZXJfYWN0b3JfbWV0YV9nZXRfdHlwZQorLWNsdXR0ZXJfYWxpZ25fY29uc3RyYWludF9nZXRfdHlwZQorLWNsdXR0ZXJfYWxwaGFfZ2V0X3R5cGUKKy1jbHV0dGVyX2FuaW1hdGFibGVfZ2V0X3R5cGUKKy1jbHV0dGVyX2FuaW1hdGlvbl9nZXRfdHlwZQorLWNsdXR0ZXJfYW5pbWF0b3JfZ2V0X3R5cGUKKy1jbHV0dGVyX2FuaW1hdG9yX2tleV9nZXRfdHlwZQorLWNsdXR0ZXJfYmFja2VuZF9nZXRfdHlwZQorLWNsdXR0ZXJfYmVoYXZpb3VyX2RlcHRoX2dldF90eXBlCistY2x1dHRlcl9iZWhhdmlvdXJfZWxsaXBzZV9nZXRfdHlwZQorLWNsdXR0ZXJfYmVoYXZpb3VyX2dldF90eXBlCistY2x1dHRlcl9iZWhhdmlvdXJfb3BhY2l0eV9nZXRfdHlwZQorLWNsdXR0ZXJfYmVoYXZpb3VyX3BhdGhfZ2V0X3R5cGUKKy1jbHV0dGVyX2JlaGF2aW91cl9yb3RhdGVfZ2V0X3R5cGUKKy1jbHV0dGVyX2JlaGF2aW91cl9zY2FsZV9nZXRfdHlwZQorLWNsdXR0ZXJfYmluX2xheW91dF9nZXRfdHlwZQorLWNsdXR0ZXJfYmluZF9jb25zdHJhaW50X2dldF90eXBlCistY2x1dHRlcl9iaW5kaW5nX3Bvb2xfZ2V0X3R5cGUKKy1jbHV0dGVyX2JsdXJfZWZmZWN0X2dldF90eXBlCistY2x1dHRlcl9ib3hfZ2V0X3R5cGUKKy1jbHV0dGVyX2JveF9sYXlvdXRfZ2V0X3R5cGUKKy1jbHV0dGVyX2JyaWdodG5lc3NfY29udHJhc3RfZWZmZWN0X2dldF90eXBlCistY2x1dHRlcl9jYWlyb190ZXh0dXJlX2dldF90eXBlCistY2x1dHRlcl9jYW52YXNfZ2V0X3R5cGUKKy1jbHV0dGVyX2NoaWxkX21ldGFfZ2V0X3R5cGUKKy1jbHV0dGVyX2NsaWNrX2FjdGlvbl9nZXRfdHlwZQorLWNsdXR0ZXJfY2xpcF9ub2RlX2dldF90eXBlCistY2x1dHRlcl9jbG9uZV9nZXRfdHlwZQorLWNsdXR0ZXJfY29sb3JfZ2V0X3R5cGUKKy1jbHV0dGVyX2NvbG9yX25vZGVfZ2V0X3R5cGUKKy1jbHV0dGVyX2NvbG9yaXplX2VmZmVjdF9nZXRfdHlwZQorLWNsdXR0ZXJfY29uc3RyYWludF9nZXRfdHlwZQorLWNsdXR0ZXJfY29udGFpbmVyX2dldF90eXBlCistY2x1dHRlcl9jb250ZW50X2dldF90eXBlCistY2x1dHRlcl9kZWZvcm1fZWZmZWN0X2dldF90eXBlCistY2x1dHRlcl9kZXNhdHVyYXRlX2VmZmVjdF9nZXRfdHlwZQorLWNsdXR0ZXJfZGV2aWNlX21hbmFnZXJfZ2V0X3R5cGUKKy1jbHV0dGVyX2RyYWdfYWN0aW9uX2dldF90eXBlCistY2x1dHRlcl9kcm9wX2FjdGlvbl9nZXRfdHlwZQorLWNsdXR0ZXJfZWZmZWN0X2dldF90eXBlCistY2x1dHRlcl9ldmVudF9nZXRfdHlwZQorLWNsdXR0ZXJfZXZlbnRfc2VxdWVuY2VfZ2V0X3R5cGUKKy1jbHV0dGVyX2ZpeGVkX2xheW91dF9nZXRfdHlwZQorLWNsdXR0ZXJfZmxvd19sYXlvdXRfZ2V0X3R5cGUKKy1jbHV0dGVyX2ZvZ19nZXRfdHlwZQorLWNsdXR0ZXJfZ2VvbWV0cnlfZ2V0X3R5cGUKKy1jbHV0dGVyX2dlc3R1cmVfYWN0aW9uX2dldF90eXBlCistY2x1dHRlcl9nbHhfdGV4dHVyZV9waXhtYXBfZ2V0X3R5cGUKKy1jbHV0dGVyX2dyaWRfbGF5b3V0X2dldF90eXBlCistY2x1dHRlcl9ncm91cF9nZXRfdHlwZQorLWNsdXR0ZXJfaW1hZ2VfZ2V0X3R5cGUKKy1jbHV0dGVyX2lucHV0X2RldmljZV9nZXRfdHlwZQorLWNsdXR0ZXJfaW50ZXJ2YWxfZ2V0X3R5cGUKKy1jbHV0dGVyX2tleWZyYW1lX3RyYW5zaXRpb25fZ2V0X3R5cGUKKy1jbHV0dGVyX2tub3RfZ2V0X3R5cGUKKy1jbHV0dGVyX2xheW91dF9tYW5hZ2VyX2dldF90eXBlCistY2x1dHRlcl9sYXlvdXRfbWV0YV9nZXRfdHlwZQorLWNsdXR0ZXJfbGlzdF9tb2RlbF9nZXRfdHlwZQorLWNsdXR0ZXJfbWFyZ2luX2dldF90eXBlCistY2x1dHRlcl9tZWRpYV9nZXRfdHlwZQorLWNsdXR0ZXJfbW9kZWxfZ2V0X3R5cGUKKy1jbHV0dGVyX21vZGVsX2l0ZXJfZ2V0X3R5cGUKKy1jbHV0dGVyX29mZnNjcmVlbl9lZmZlY3RfZ2V0X3R5cGUKKy1jbHV0dGVyX3BhZ2VfdHVybl9lZmZlY3RfZ2V0X3R5cGUKKy1jbHV0dGVyX3BhaW50X25vZGVfZ2V0X3R5cGUKKy1jbHV0dGVyX3BhaW50X3ZvbHVtZV9nZXRfdHlwZQorLWNsdXR0ZXJfcGFuX2FjdGlvbl9nZXRfdHlwZQorLWNsdXR0ZXJfcGFyYW1fY29sb3JfZ2V0X3R5cGUKKy1jbHV0dGVyX3BhcmFtX2ZpeGVkX2dldF90eXBlCistY2x1dHRlcl9wYXJhbV91bml0c19nZXRfdHlwZQorLWNsdXR0ZXJfcGF0aF9jb25zdHJhaW50X2dldF90eXBlCistY2x1dHRlcl9wYXRoX2dldF90eXBlCistY2x1dHRlcl9wYXRoX25vZGVfZ2V0X3R5cGUKKy1jbHV0dGVyX3BlcnNwZWN0aXZlX2dldF90eXBlCistY2x1dHRlcl9waXBlbGluZV9ub2RlX2dldF90eXBlCistY2x1dHRlcl9wb2ludF9nZXRfdHlwZQorLWNsdXR0ZXJfcHJvcGVydHlfdHJhbnNpdGlvbl9nZXRfdHlwZQorLWNsdXR0ZXJfcmVjdF9nZXRfdHlwZQorLWNsdXR0ZXJfcmVjdGFuZ2xlX2dldF90eXBlCistY2x1dHRlcl9yb3RhdGVfYWN0aW9uX2dldF90eXBlCistY2x1dHRlcl9zY29yZV9nZXRfdHlwZQorLWNsdXR0ZXJfc2NyaXB0X2dldF90eXBlCistY2x1dHRlcl9zY3JpcHRhYmxlX2dldF90eXBlCistY2x1dHRlcl9zY3JvbGxfYWN0b3JfZ2V0X3R5cGUKKy1jbHV0dGVyX3NldHRpbmdzX2dldF90eXBlCistY2x1dHRlcl9zaGFkZXJfZWZmZWN0X2dldF90eXBlCistY2x1dHRlcl9zaGFkZXJfZmxvYXRfZ2V0X3R5cGUKKy1jbHV0dGVyX3NoYWRlcl9nZXRfdHlwZQorLWNsdXR0ZXJfc2hhZGVyX2ludF9nZXRfdHlwZQorLWNsdXR0ZXJfc2hhZGVyX21hdHJpeF9nZXRfdHlwZQorLWNsdXR0ZXJfc2l6ZV9nZXRfdHlwZQorLWNsdXR0ZXJfc25hcF9jb25zdHJhaW50X2dldF90eXBlCistY2x1dHRlcl9zdGFnZV9nZXRfdHlwZQorLWNsdXR0ZXJfc3RhZ2VfbWFuYWdlcl9nZXRfdHlwZQorLWNsdXR0ZXJfc3RhdGVfZ2V0X3R5cGUKKy1jbHV0dGVyX3N0YXRlX2tleV9nZXRfdHlwZQorLWNsdXR0ZXJfc3dpcGVfYWN0aW9uX2dldF90eXBlCistY2x1dHRlcl90YWJsZV9sYXlvdXRfZ2V0X3R5cGUKKy1jbHV0dGVyX3RhcF9hY3Rpb25fZ2V0X3R5cGUKKy1jbHV0dGVyX3RleHRfYnVmZmVyX2dldF90eXBlCistY2x1dHRlcl90ZXh0X2dldF90eXBlCistY2x1dHRlcl90ZXh0X25vZGVfZ2V0X3R5cGUKKy1jbHV0dGVyX3RleHR1cmVfZ2V0X3R5cGUKKy1jbHV0dGVyX3RleHR1cmVfbm9kZV9nZXRfdHlwZQorLWNsdXR0ZXJfdGltZWxpbmVfZ2V0X3R5cGUKKy1jbHV0dGVyX3RyYW5zaXRpb25fZ2V0X3R5cGUKKy1jbHV0dGVyX3RyYW5zaXRpb25fZ3JvdXBfZ2V0X3R5cGUKKy1jbHV0dGVyX3VuaXRzX2dldF90eXBlCistY2x1dHRlcl92ZXJ0ZXhfZ2V0X3R5cGUKKy1jbHV0dGVyX3pvb21fYWN0aW9uX2dldF90eXBlCistLSAKKzIuOS4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLTEuMC8wMDAxLWJ1aWxkLVVzZS1BQ19DT01QSUxFX0lGRUxTRS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLTEuMC8wMDAxLWJ1aWxkLVVzZS1BQ19DT01QSUxFX0lGRUxTRS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzRlZGZmMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci0xLjAvMDAwMS1idWlsZC1Vc2UtQUNfQ09NUElMRV9JRkVMU0UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotRnJvbSA0ODNhNGJiMDBlN2RkMmYxNGQ4NmUxNjdjODAxM2M4NjM4NzIzYzMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRW1tYW51ZWxlIEJhc3NpIDxlYmFzc2lAZ25vbWUub3JnPgotRGF0ZTogVGh1LCAxOCBGZWIgMjAxNiAxNzoxOTowOSArMDAwMAotU3ViamVjdDogW1BBVENIXSBidWlsZDogVXNlIEFDX0NPTVBJTEVfSUZFTFNFCi0KLUluc3RlYWQgb2YgQUNfVFJZX0NPTVBJTEUsIHdoaWNoIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYnkgbmV3ZXIgYXV0b2NvbmYuCi0tLS0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLSBjb25maWd1cmUuYWMgfCA2NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDRkNzJlMGMuLjhjYTNmOTQgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTM0OCwyNCArMzQ4LDI1IEBAIEFTX0lGKFt0ZXN0ICJ4JGVuYWJsZV93YXlsYW5kIiAhPSB4bm9dLAotICAgICAgICAgIyBXZSBuZWVkIHRvIG1hbnVhbGx5IGNoZWNrIGZvciBXYXlsYW5kIHN1cHBvcnQgaW4gQ29nbCBiZWNhdXNlCi0gICAgICAgICAjIHRoZSB3aW5kb3dpbmcgc3lzdGVtcyBhcmUgbm90IGV4cG9zZWQgaW4gdGhlIHBrZy1jb25maWcgZmlsZQotICAgICAgICAgc2F2ZWRfQ0ZMQUdTPSIke0NGTEFHU30iCi0tICAgICAgICBDRkxBR1M9ImAkUEtHX0NPTkZJRyAtLWNmbGFncyAkQ0xVVFRFUl9CQVNFX1BDX0ZJTEVTYCIKLSsgICAgICAgIENGTEFHUz0iYCRQS0dfQ09ORklHIC0tY2ZsYWdzIGNvZ2wtMS4wYCIKLSAKLSAgICAgICAgIEFDX01TR19DSEVDS0lORyhbZm9yIFdheWxhbmQgQ29nbCBiYWNrZW5kXSkKLS0gICAgICAgIEFDX1RSWV9DT01QSUxFKFsjaW5jbHVkZSA8Y29nbC9jb2dsLmg+XSwKLS0gICAgICAgICAgICAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgICAgICAgICAgI2lmbmRlZiBDT0dMX0hBU19FR0xfUExBVEZPUk1fV0FZTEFORF9TVVBQT1JUCi0tICAgICAgICAgICAgICAgICAgICAgICAgICNlcnJvciAiTm8gV2F5bGFuZCBzdXBwb3J0IGluIENvZ2wiCi0tICAgICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgotLSAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWFpbiAodm9pZCkgeyByZXR1cm4gMDsgfQotLSAgICAgICAgICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgICAgICAgICAgQUNfTVNHX1JFU1VMVCh5ZXMpCi0tICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVfY29nbF93YXlsYW5kPXllcwotLSAgICAgICAgICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgICAgICAgICAgQUNfTVNHX1JFU1VMVChubykKLS0gICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZV9jb2dsX3dheWxhbmQ9bm8KLS0gICAgICAgICAgICAgICAgICAgICAgIF0pCi0rCi0rICAgICAgICBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCi0rI2luY2x1ZGUgPGNvZ2wvY29nbC5oPgotK11dLAotK1tbCi0rI2lmbmRlZiBDT0dMX0hBU19FR0xfUExBVEZPUk1fV0FZTEFORF9TVVBQT1JUCi0rI2Vycm9yIENvZ2wgY29tcGlsZWQgd2l0aG91dCBXYXlsYW5kIHN1cHBvcnQKLSsjZW5kaWYKLStdXSldLCBbCi0rICAgICAgICAgIEFDX01TR19SRVNVTFQoeWVzKQotKyAgICAgICAgICBoYXZlX2NvZ2xfd2F5bGFuZD15ZXMKLSsgICAgICAgIF0sIFsKLSsgICAgICAgICAgQUNfTVNHX1JFU1VMVChubykKLSsgICAgICAgICAgaGF2ZV9jb2dsX3dheWxhbmQ9bm8KLSsgICAgICAgIF0pCi0rCi0gICAgICAgICBDRkxBR1M9IiR7c2F2ZWRfQ0ZMQUdTfSIKLSAgICAgICAgIEFTX0lGKFt0ZXN0ICJ4JGhhdmVfY29nbF93YXlsYW5kIiA9IHh5ZXNdLAotICAgICAgICAgICAgICAgWwotQEAgLTQ5OSwyNiArNTAwLDI1IEBAIEFTX0lGKFt0ZXN0ICJ4JGVuYWJsZV9taXIiID0gInh5ZXMiXSwKLSAgICAgICAgICMgV2UgbmVlZCB0byBtYW51YWxseSBjaGVjayBmb3IgTWlyIHN1cHBvcnQgaW4gQ29nbCBiZWNhdXNlCi0gICAgICAgICAjIHRoZSB3aW5kb3dpbmcgc3lzdGVtcyBhcmUgbm90IGV4cG9zZWQgaW4gdGhlIHBrZy1jb25maWcgZmlsZQotICAgICAgICAgc2F2ZWRfQ0ZMQUdTPSIke0NGTEFHU30iCi0tICAgICAgICBDRkxBR1M9ImAkUEtHX0NPTkZJRyAtLWNmbGFncyAkQ0xVVFRFUl9CQVNFX1BDX0ZJTEVTYCIKLSsgICAgICAgIENGTEFHUz0iYCRQS0dfQ09ORklHIC0tY2ZsYWdzIGNvZ2wtMS4wYCIKLSAKLSAgICAgICAgIEFDX01TR19DSEVDS0lORyhbZm9yIE1pciBDb2dsIGJhY2tlbmRdKQotLSAgICAgICAgQUNfVFJZX0NPTVBJTEUoWyNpbmNsdWRlIDxjb2dsL2NvZ2wuaD5dLAotLSAgICAgICAgICAgICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAgICAgICAgICNpZm5kZWYgQ09HTF9IQVNfRUdMX1BMQVRGT1JNX01JUl9TVVBQT1JUCi0tICAgICAgICAgICAgICAgICAgICAgICAgI2Vycm9yICJObyBNaXIgc3VwcG9ydCBpbiBDb2dsIgotLSAgICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgotLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYWluICh2b2lkKSB7IHJldHVybiAwOyB9Ci0tICAgICAgICAgICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAgICAgICAgICBBQ19NU0dfUkVTVUxUKHllcykKLS0gICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZV9jb2dsX21pcj15ZXMKLS0gICAgICAgICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICAgICAgICAgIEFDX01TR19SRVNVTFQobm8pCi0tICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVfY29nbF9taXI9bm8KLS0gICAgICAgICAgICAgICAgICAgICAgIF0pCi0gCi0tICAgICAgICBDRkxBR1M9IiR7c2F2ZWRfQ0ZMQUdTfSIKLSsgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKLSsjaW5jbHVkZSA8Y29nbC9jb2dsLmg+Ci0rXV0sCi0rW1sKLSsjaWZuZGVmIENPR0xfSEFTX0VHTF9QTEFURk9STV9NSVJfU1VQUE9SVAotKyNlcnJvciBDb2dsIGNvbXBpbGVkIHdpdGhvdXQgTWlyIHN1cHBvcnQKLSsjZW5kaWYKLStdXSldLCBbCi0rICAgICAgICAgIEFDX01TR19SRVNVTFQoeWVzKQotKyAgICAgICAgICBoYXZlX2NvZ2xfbWlyPXllcwotKyAgICAgICAgXSwgWwotKyAgICAgICAgICBBQ19NU0dfUkVTVUxUKG5vKQotKyAgICAgICAgICBoYXZlX2NvZ2xfbWlyPW5vCi0rICAgICAgICBdKQotKwotICAgICAgICAgQVNfSUYoW3Rlc3QgIngkaGF2ZV9jb2dsX21pciIgPSB4bm9dLCBbQUNfTVNHX0VSUk9SKCIqKiogQ29nbCBpcyBtaXNzaW5nIE1pciBzdXBwb3J0LiIpXSkKLSAKLSAgICAgICAgIFBLR19DSEVDS19FWElTVFMoW21pcmNsaWVudF0sCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLTEuMF8xLjI0LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci0xLjBfMS4yNC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTNiM2U3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLTEuMF8xLjI0LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1yZXF1aXJlIGNsdXR0ZXItMS4wLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiM2I5OGUxYjMzNzE5OTgyYTU3MzZhZTQyY2JmNzE4M2UiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI5NjMxYzk4Y2I0YmNiZmVjMTVlMWJiZTllYWE2ZWVmMGYxMjcyMDE1NTJmY2U0MGQ3ZDI4ZjIxMzM4MDNjZDYzIgotU1JDX1VSSSArPSAiZmlsZTovL2luc3RhbGwtZXhhbXBsZXMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3J1bi1pbnN0YWxsZWQtdGVzdHMtd2l0aC10YXAtb3V0cHV0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLVVzZS1BQ19DT01QSUxFX0lGRUxTRS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItMS4wXzEuMjYuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLTEuMF8xLjI2LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGZhMWNmZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLTEuMF8xLjI2LjAuYmIKQEAgLTAsMCArMSwxMCBAQAorcmVxdWlyZSBjbHV0dGVyLTEuMC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImIwNjVlOWNhNTNkMWY2YmMxZWMyNmFlYjI3MzM4YmI3IgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiNjc1MTRlNzgyNGIzZmViNDcyMzE2NDA4NGIzNmQ2Y2UxYWU0MWNiM2E5ODk3ZTlmMWE1NmM4MzM0OTkzY2UwNiIKK1NSQ19VUkkgKz0gImZpbGU6Ly9pbnN0YWxsLWV4YW1wbGVzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9ydW4taW5zdGFsbGVkLXRlc3RzLXdpdGgtdGFwLW91dHB1dC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtY2x1dHRlci50eXBlcy1hcy1pdC1pcy1idWlsZC1jb25maWd1cmF0aW9uLXNwLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1nc3QtMy4wXzMuMC4xNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLWdzdC0zLjBfMy4wLjE2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmY2Y1MjQyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLWdzdC0zLjBfMy4wLjE2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1yZXF1aXJlIGNsdXR0ZXItZ3N0LTMuMC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vY2x1dHRlci1nc3QvY2x1dHRlci1nc3QuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTI0O21kNT05NWJhYWNiYTE5NGU4MTRjMTEwZWEzYmRmMjVkZGJmNCIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiY2EyNGViOTJhMGQzNGZjOWU2NmZkNjg2YTk2NWQ1MWMiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI4MDNlOGI3MjY1ZTYzZTA1ODFlMjFmZDBjNjA2NDc5MmRmZTk1MTUxMmU5ZjUxNWU5ZTdhOWI0NTJjYWFmOWYwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItZ3N0LTMuMF8zLjAuMTguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1nc3QtMy4wXzMuMC4xOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjI2Y2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItZ3N0LTMuMF8zLjAuMTguYmIKQEAgLTAsMCArMSw3IEBACityZXF1aXJlIGNsdXR0ZXItZ3N0LTMuMC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vY2x1dHRlci1nc3QvY2x1dHRlci1nc3QuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTI0O21kNT05NWJhYWNiYTE5NGU4MTRjMTEwZWEzYmRmMjVkZGJmNCIKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiM2U0ZjY0NDc3ZjI2ZDljZmQyZGIwNmQzYWFlZDIwM2EiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIwYWVjMGQwYzYwMjBjZDE5YTViYjBkYWIxMTY1YTkyNzQ4ZjgxYTlhM2FjZGZhYmIwZjk2NmQ1ZjUzYmM4MDkzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItZ3RrLTEuMF8xLjYuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLWd0ay0xLjBfMS42LjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzMjU3YmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItZ3RrLTEuMF8xLjYuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotcmVxdWlyZSBjbHV0dGVyLWd0ay0xLjAuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTdmYmMzMzgzMDlhYzM4ZmVmY2Q2NGIwNGJiOTAzZTM0IgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI3OWRjM2Q3YTg2NDVmODdkODNhOWNjY2E4YTA4YWE4ZSIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjk0NDBhNjg2MDBmNThkMDBmZTBhZjM1MzgzNzM4OTQzZThlYWQ5OTA3ZjRjZjUwN2ExMDJkOTY4MjI0MzRhMjgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1ndGstMS4wXzEuOC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItZ3RrLTEuMF8xLjguMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzUzNjVjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItZ3RrLTEuMF8xLjguMC5iYgpAQCAtMCwwICsxLDYgQEAKK3JlcXVpcmUgY2x1dHRlci1ndGstMS4wLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03ZmJjMzM4MzA5YWMzOGZlZmNkNjRiMDRiYjkwM2UzNCIKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiMzUxY2Y5MjI5Y2Y5NDFkMzZiNDQxZWRlMjIzNmQ3NDIiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI3NDJlZjlkNjhlY2UzNmNiYjFiMmUxYTRhNmZiZGFkOTMyZjY2NDUzNjBiZTdlNmRlNzVhYmJiMTQwZGZiZjFkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jb2dsL2NvZ2wtMS4wLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY29nbC9jb2dsLTEuMC5pbmMKaW5kZXggNjkwZWEzYi4uN2E3OWFhNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jb2dsL2NvZ2wtMS4wLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NvZ2wvY29nbC0xLjAuaW5jCkBAIC03MywzICs3Myw1IEBACiBSUFJPVklERVNfbGliY29nbCA9ICJjb2dsLTEuMCIKIFJDT05GTElDVFNfbGliY29nbCA9ICJjb2dsLTEuMCIKIFJSRVBMQUNFU19saWJjb2dsID0gImNvZ2wtMS4wIgorCitDT01QQVRJQkxFX0hPU1RfYXJtdjQgPSAnbnVsbCcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZGlyZWN0ZmIvZGlyZWN0ZmItZXhhbXBsZXMvY29uZmlndXJlLmluLUZpeC1zdHJpbmctYXJndW1lbnQtc3ludGF4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kaXJlY3RmYi9kaXJlY3RmYi1leGFtcGxlcy9jb25maWd1cmUuaW4tRml4LXN0cmluZy1hcmd1bWVudC1zeW50YXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3MTdlYTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kaXJlY3RmYi9kaXJlY3RmYi1leGFtcGxlcy9jb25maWd1cmUuaW4tRml4LXN0cmluZy1hcmd1bWVudC1zeW50YXgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIDg4MDc3ZWQxNTZhNzE0ZjMyYmI0MDhmNDIyMjc4ZDYxNjExZmZkNDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgotRGF0ZTogU2F0LCAyNiBKdWwgMjAxNCAxNjo1Nzo0NiAtMDMwMAotU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuaW46IEZpeCBzdHJpbmcgYXJndW1lbnQgc3ludGF4Ci0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi0KLVNpZ25lZC1vZmYtYnk6IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+Ci0tLS0KLSBjb25maWd1cmUuaW4gfCAgICAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KLWluZGV4IGJmZTFiODIuLmU5MzliYmQgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuaW4KLSsrKyBiL2NvbmZpZ3VyZS5pbgotQEAgLTY1LDcgKzY1LDcgQEAgZmkpCi0gCi0gRElSRUNURkJfUkVRVUlSRURfVkVSU0lPTj0xLjQuMTQKLSAKLS1QS0dfQ0hFQ0tfTU9EVUxFUyhESVJFQ1RGQiwgZGlyZWN0ZmIgPj0gJERJUkVDVEZCX1JFUVVJUkVEX1ZFUlNJT04sWyBXQVRFUj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT13YXRlciBkaXJlY3RmYmAgXSwKLStQS0dfQ0hFQ0tfTU9EVUxFUyhbRElSRUNURkJdLCBkaXJlY3RmYiA+PSAkRElSRUNURkJfUkVRVUlSRURfVkVSU0lPTixbIFdBVEVSPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXdhdGVyIGRpcmVjdGZiYCBdLAotIAlBQ19NU0dfRVJST1IoWyRESVJFQ1RGQl9QS0dfRVJST1JTCi0gKioqIERpcmVjdEZCICRESVJFQ1RGQl9SRVFVSVJFRF9WRVJTSU9OIG9yIG5ld2VyIGlzIHJlcXVpcmVkLiBUaGUgbGF0ZXN0IHZlcnNpb24KLSAqKiogb2YgRGlyZWN0RkIgaXMgYXZhaWxhYmxlIGZyb20gaHR0cDovL3d3dy5kaXJlY3RmYi5vcmcvLl0pKQotLS0gCi0xLjcuMTAuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RpcmVjdGZiL2RpcmVjdGZiLWV4YW1wbGVzXzEuNy4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kaXJlY3RmYi9kaXJlY3RmYi1leGFtcGxlc18xLjcuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzkwN2M1Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RpcmVjdGZiL2RpcmVjdGZiLWV4YW1wbGVzXzEuNy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotU1VNTUFSWSA9ICJFeGFtcGxlIERpcmVjdEZCIGFwcGxpY2F0aW9ucyIKLURFU0NSSVBUSU9OID0gIlRoZSBEaXJlY3RGQi1leGFtcGxlcyBwYWNrYWdlIGNvbnRhaW5zIGEgc2V0IG9mIHNpbXBsZSBEaXJlY3RGQiBcCi0gICAgICBhcHBsaWNhdGlvbnMgdGhhdCBjYW4gYmUgdXNlZCB0byB0ZXN0IGFuZCBkZW1vbnN0cmF0ZSB2YXJpb3VzIERpcmVjdEZCIFwKLSAgICAgIGZlYXR1cmVzIgotREVQRU5EUyA9ICJkaXJlY3RmYiIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTUlUIgotCi1TUkNfVVJJID0gIiBcCi0gICAgICAgICAgIGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy9EaXJlY3RGQi1leGFtcGxlcy0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLmluLUZpeC1zdHJpbmctYXJndW1lbnQtc3ludGF4LnBhdGNoIFwKLSAgICAgICAgICAiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWVjZjZmZDJiMTk5MTVhZmM0ZGE1NjA0MzkyNmNhMThmIgotCi1TID0gIiR7V09SS0RJUn0vRGlyZWN0RkItZXhhbXBsZXMtJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1TUkNfVVJJW21kNXN1bV0gPSAiOGI2MGM4NjdhZjI5NTQ4MWMzMmE4YzdmYzU4MDIzMDciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWEyMTA0Y2M0ZGE4MTIzYzgzNzE4MTM1NTFiNjZiOTQzMTk4OTc5Zjc0NWNiZWJjMDM0YmI1ZTEwODQ0MTIyYSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZGlyZWN0ZmIvZGlyZWN0ZmIuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kaXJlY3RmYi9kaXJlY3RmYi5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2YjdjYmUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kaXJlY3RmYi9kaXJlY3RmYi5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi1TVU1NQVJZID0gIkdyYXBoaWNzIGFic3RyYWN0aW9uIGxpYnJhcnkgZm9yIHRoZSBMaW51eCBGcmFtZWJ1ZmZlciBEZXZpY2UiCi1ERVNDUklQVElPTiA9ICJEaXJlY3RGQiBpcyBhIHRoaW4gbGlicmFyeSB0aGF0IHByb3ZpZGVzIGRldmVsb3BlcnMgXAotd2l0aCBoYXJkd2FyZSBncmFwaGljcyBhY2NlbGVyYXRpb24sIGlucHV0IGRldmljZSBoYW5kbGluZyBhbmQgXAotYWJzdHJhY3Rpb24sIGFuIGludGVncmF0ZWQgd2luZG93aW5nIHN5c3RlbSB3aXRoIHN1cHBvcnQgZm9yIFwKLXRyYW5zbHVjZW50IHdpbmRvd3MgYW5kIG11bHRpcGxlIGRpc3BsYXkgbGF5ZXJzIG9uIHRvcCBvZiB0aGUgXAotTGludXggZnJhbWVidWZmZXIgZGV2aWNlLiIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kY2YzYzgyNTY1OWU4MjUzOTY0NWRhNDFhNzkwODU4OSIKLQotSE9NRVBBR0UgPSAiaHR0cDovL2RpcmVjdGZiLm9yZyIKLURFUEVORFMgPSAianBlZyBsaWJwbmcgZnJlZXR5cGUgemxpYiB0c2xpYiBzeXNmc3V0aWxzIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy9EaXJlY3RGQi0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlZml4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Z1c2lvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9iYXNoaXNtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZ2Z4LWRpcmVjdC1BYm9pZC11c25nLVZMQXMtYW5kLXByaW50Zi1mb3JtYXRzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NvbXBhcl9mbl90LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3VuaW9uLXNpZ3ZhbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly91c2UtUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkUucGF0Y2ggXAotICAgICAgICAgICIKLQotUyA9ICIke1dPUktESVJ9L0RpcmVjdEZCLSR7UFZ9IgotCi1MREZMQUdTX2FwcGVuZCA9IiAtbHRzIC1sbSIKLQotIyBXb3JrYXJvdW5kIGZvciBsaW5raW5nIGlzc3VlcyBzZWVuIHdpdGggYXJtdjdhICsgZ29sZAotTERGTEFHU19hcHBlbmRfYXJtID0gIiR7QGJhc2VfY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsZC1pcy1nb2xkJywgJyAtZnVzZS1sZD1iZmQgJywgJycsIGQpfSIKLQotQklOQ09ORklHID0gIiR7YmluZGlyfS9kaXJlY3RmYi1jb25maWciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbanBlZzIwMDBdID0gIi0tZW5hYmxlLWpwZWcyMDAwLC0tZGlzYWJsZS1qcGVnMjAwMCxqYXNwZXIiCi1QQUNLQUdFQ09ORklHW2RybWttc10gPSAiLS1lbmFibGUtZHJta21zLC0tZGlzYWJsZS1kcm1rbXMsbGliZHJtIgotUEFDS0FHRUNPTkZJR1t0aWZmXSA9ICItLWVuYWJsZS10aWZmLC0tZGlzYWJsZS10aWZmLHRpZmYiCi1QQUNLQUdFQ09ORklHW3dlYnBdID0gIi0tZW5hYmxlLXdlYnAsLS1kaXNhYmxlLXdlYnAsbGlid2VicCIKLQotRVhUUkFfT0VDT05GID0gIlwKLSAgLS13aXRoLWdmeGRyaXZlcnM9bm9uZSBcCi0gIC0tZW5hYmxlLWZyZWV0eXBlPXllcyBcCi0gIC0tZW5hYmxlLXpsaWIgXAotICAtLWRpc2FibGUtaW1saWIyIFwKLSAgLS1kaXNhYmxlLW1lc2EgXAotICAtLWRpc2FibGUtc2RsIFwKLSAgLS1kaXNhYmxlLXZuYyBcCi0gIC0tZGlzYWJsZS14MTEgXAotIgotCi0jT25jZSAtZm5vLW9taXQtZnJhbWUtcG9pbnRlciBvcHRpb24gb2YgZ2NjIGlzIGFkZGVkIGludG8gVEFSR0VUX0NMRkFHUyBhcyBkZWZhdWx0Ci0jdGhpcyB3aWxsIGNhdXNlIGRpcmVjdGZiIGJ1aWxkIGZhaWx1cmUgb24geDg2IGFyY2gsIHNvIGZpbHRlciBvdXQgaXQuCi1UQVJHRVRfQ0ZMQUdTX3JlbW92ZV94ODYgPSAiLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIiCi0KLSNQQUNLQUdFU19EWU5BTUlDICs9ICJeZGlyZWN0ZmItaW5wdXRkcml2ZXJzLS4qIgotIwotI3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKLSMgICAgaW5wdXRkcml2ZXJzX2xpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0vZGlyZWN0ZmItJHtSVn0vaW5wdXRkcml2ZXJzJykKLSMgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgaW5wdXRkcml2ZXJzX2xpYmRpciwgJyouc28kJywgJ2RpcmVjdGZiLWlucHV0ZHJpdmVycy0lcycsICdEaXJlY3RmYiBwbHVnaW4gZm9yICVzJykKLSN9Ci0KLSMgTk9URTogbW9ub2xpdGhpYyBwYWNrYWdpbmcgZm9yIG5vdywgc2hvdWxkIGltcHJvdmUgdGhhdCBldmVudHVhbGx5Ci0KLUZJTEVTXyR7UE59LWRldiArPSAiXAotICAke2JpbmRpcn0vZGlyZWN0ZmItY29uZmlnIFwKLSAgJHtsaWJkaXJ9L2RpcmVjdGZiLSR7UlZ9L3N5c3RlbXMvKi5sYSBcCi0gICR7bGliZGlyfS9kaXJlY3RmYi0ke1JWfS9pbnB1dGRyaXZlcnMvKi5sYSBcCi0gICR7bGliZGlyfS9kaXJlY3RmYi0ke1JWfS9pbnRlcmZhY2VzLyovKi5sYSBcCi0gICR7bGliZGlyfS9kaXJlY3RmYi0ke1JWfS93bS8qLmxhIFwKLSIKLQotRklMRVNfJHtQTn0gKz0gIlwKLSAgJHtsaWJkaXJ9L2RpcmVjdGZiLSR7UlZ9L3N5c3RlbXMvKi5zbyBcCi0gICR7bGliZGlyfS9kaXJlY3RmYi0ke1JWfS9pbnB1dGRyaXZlcnMvKi5zbyBcCi0gICR7bGliZGlyfS9kaXJlY3RmYi0ke1JWfS9pbnRlcmZhY2VzLyovKi5zbyBcCi0gICR7bGliZGlyfS9kaXJlY3RmYi0ke1JWfS93bS8qLnNvIFwKLSAgJHtkYXRhZGlyfS9kaXJlY3RmYi0ke1BWfSBcCi0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RpcmVjdGZiL2RpcmVjdGZiLzAwMDEtZ2Z4LWRpcmVjdC1BYm9pZC11c25nLVZMQXMtYW5kLXByaW50Zi1mb3JtYXRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kaXJlY3RmYi9kaXJlY3RmYi8wMDAxLWdmeC1kaXJlY3QtQWJvaWQtdXNuZy1WTEFzLWFuZC1wcmludGYtZm9ybWF0cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzZlMGY3NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RpcmVjdGZiL2RpcmVjdGZiLzAwMDEtZ2Z4LWRpcmVjdC1BYm9pZC11c25nLVZMQXMtYW5kLXByaW50Zi1mb3JtYXRzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotRnJvbSBmNDNlZjQ0ODA2ZmZiOGUzYjM1ZDk5MDcwZGRlOWI2Y2MxNzE0ZDNkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgOCBTZXAgMjAxNSAyMTozMjoyMCArMDAwMAotU3ViamVjdDogW1BBVENIXSBnZngsZGlyZWN0OiBBYm9pZCB1c25nIFZMQXMgYW5kIHByaW50ZiBmb3JtYXRzCi0KLVZMQXMgYXJlIGZsYWdnZWQgYnkgY2xhbmcgd2hlbiB1c2luZyBub24tUE9EIHR5cGVzLCB0aGVyZWZvcmUgcmVwbGFjZQotdGhlIHVzYWdlIHdpdGggYWxsb2NhIHdoaWNoIGlzIGV4YWN0IHNhbWUgYWxsb2NhdGlvbiBvbiBzdGFjawotCi0gX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyAoX19wcmludGZfXykpKSBpcyBub3QgcG9ydGFibGUgYXMgdXNlZCBoZXJlCi0gdGhlcmVmb3JlIGRpc2FibGUgdGhlIGNoZWNrIGZvciBjbGFuZyBoZXJlLCB3ZSBsb3NlIG5vIGZ1bmN0aW9uYWxpdHkKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBsaWIvZGlyZWN0L3V0aWwuaCB8IDIgKy0KLSBzcmMvZ2Z4L3V0aWwuY3BwICB8IDggKysrKy0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYi9kaXJlY3QvdXRpbC5oIGIvbGliL2RpcmVjdC91dGlsLmgKLWluZGV4IDcyOTQxZTkuLjhlN2ZhNGEgMTAwNjQ0Ci0tLS0gYS9saWIvZGlyZWN0L3V0aWwuaAotKysrIGIvbGliL2RpcmVjdC91dGlsLmgKLUBAIC05OCw3ICs5OCw3IEBACi0gI2RlZmluZSBEX0NPTlNUX0ZVTkMKLSAjZW5kaWYKLSAKLS0jaWYgX19HTlVDX18gPj0gMwotKyNpZiBfX0dOVUNfXyA+PSAzICYmICFkZWZpbmVkIF9fY2xhbmdfXwotICNkZWZpbmUgRF9GT1JNQVRfUFJJTlRGKG4pICAgICAgICAgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyAoX19wcmludGZfXywgbiwgbisxKSkpCi0gI2RlZmluZSBEX0ZPUk1BVF9WUFJJTlRGKG4pICAgICAgICBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCBuLCAwKSkpCi0gI2Vsc2UKLWRpZmYgLS1naXQgYS9zcmMvZ2Z4L3V0aWwuY3BwIGIvc3JjL2dmeC91dGlsLmNwcAotaW5kZXggNDAwMzJiYy4uZDEwMTVkNCAxMDA2NDQKLS0tLSBhL3NyYy9nZngvdXRpbC5jcHAKLSsrKyBiL3NyYy9nZngvdXRpbC5jcHAKLUBAIC0yOTQsOCArMjk0LDggQEAgZGZiX2dmeF9jb3B5X3JlZ2lvbnNfc3RlcmVvKCBDb3JlU3VyZmFjZSAgICAgICAgICAgKnNvdXJjZSwKLSB7Ci0gICAgICB1bnNpZ25lZCBpbnQgaSwgbiA9IDA7Ci0gICAgICBERkJSZWN0YW5nbGUgcmVjdCA9IHsgMCwgMCwgc291cmNlLT5jb25maWcuc2l6ZS53LCBzb3VyY2UtPmNvbmZpZy5zaXplLmggfTsKLS0gICAgIERGQlJlY3RhbmdsZSByZWN0c1tudW1dOwotLSAgICAgREZCUG9pbnQgICAgIHBvaW50c1tudW1dOwotKyAgICAgREZCUmVjdGFuZ2xlICpyZWN0cyA9ICAoREZCUmVjdGFuZ2xlKilhbGxvY2EoIHNpemVvZihzdHJ1Y3QgREZCUmVjdGFuZ2xlKSAqIG51bSk7Ci0rICAgICBERkJQb2ludCAqcG9pbnRzID0gIChERkJQb2ludCopYWxsb2NhKCBzaXplb2Yoc3RydWN0IERGQlBvaW50KSAqIG51bSk7Ci0gCi0gICAgICBmb3IgKGk9MDsgaTxudW07IGkrKykgewotICAgICAgICAgICBERkJfUkVHSU9OX0FTU0VSVCggJnJlZ2lvbnNbaV0gKTsKLUBAIC0zNTEsOCArMzUxLDggQEAgZGZiX2dmeF9jb3B5X3JlZ2lvbnNfY2xpZW50KCBDb3JlU3VyZmFjZSAgICAgICAgICAgICAqc291cmNlLAotIHsKLSAgICAgIHVuc2lnbmVkIGludCAgICAgICAgICAgICBpLCBuID0gMDsKLSAgICAgIERGQlJlY3RhbmdsZSAgICAgICAgICAgICByZWN0ID0geyAwLCAwLCBzb3VyY2UtPmNvbmZpZy5zaXplLncsIHNvdXJjZS0+Y29uZmlnLnNpemUuaCB9OwotLSAgICAgREZCUmVjdGFuZ2xlICAgICAgICAgICAgIHJlY3RzW251bV07Ci0tICAgICBERkJQb2ludCAgICAgICAgICAgICAgICAgcG9pbnRzW251bV07Ci0rICAgICBERkJSZWN0YW5nbGUgICAgICAgICAgICAqcmVjdHMgPSAgKERGQlJlY3RhbmdsZSopYWxsb2NhKCBzaXplb2Yoc3RydWN0IERGQlJlY3RhbmdsZSkgKiBudW0pOwotKyAgICAgREZCUG9pbnQgICAgICAgICAgICAgICAgKnBvaW50cyA9ICAoREZCUG9pbnQqKWFsbG9jYSggc2l6ZW9mKHN0cnVjdCBERkJQb2ludCkgKiBudW0pOwotICAgICAgQ29yZUdyYXBoaWNzU3RhdGVDbGllbnQgKmNsaWVudCA9IF9jbGllbnQgPyBfY2xpZW50IDogJlN0YXRlQ2xpZW50OjpHZXQoKS0+Y2xpZW50OwotICAgICAgQ2FyZFN0YXRlICAgICAgICAgICAgICAgKnN0YXRlICA9IGNsaWVudC0+c3RhdGU7Ci0gICAgICBDYXJkU3RhdGUgICAgICAgICAgICAgICAgYmFja3VwOwotLS0gCi0yLjUuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RpcmVjdGZiL2RpcmVjdGZiL2Jhc2hpc20ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RpcmVjdGZiL2RpcmVjdGZiL2Jhc2hpc20ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlZjRlOTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kaXJlY3RmYi9kaXJlY3RmYi9iYXNoaXNtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotJHt4Ly95L30gaXMgYSBiYXNoIHN5bnRheC4gUmVwbGFjZSB3aXRoIHNvbWV0aGluZyBkYXNoIGNvbXBhdGlibGUKLQotUlAgMjAxNS81LzMKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1JbmRleDogRGlyZWN0RkItMS43LjcvY29uZmlndXJlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gRGlyZWN0RkItMS43Ljcub3JpZy9jb25maWd1cmUuaW4KLSsrKyBEaXJlY3RGQi0xLjcuNy9jb25maWd1cmUuaW4KLUBAIC0yNjk2LDcgKzI2OTYsNyBAQCBBTV9DT05ESVRJT05BTChCVUlMRF9UT09MUywgdGVzdCAiJHdpdGhfCi0gQU1fQ09ORElUSU9OQUwoQ1JPU1NfQ09NUElMSU5HLCB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9ICJ5ZXMiKQotIAotIENGTEFHUz0iJENGTEFHUyAkREZCX0lOVEVSTkFMX0NGTEFHUyIKLS1DWFhGTEFHUz0iJENYWEZMQUdTICR7Q0ZMQUdTLy8tV2Vycm9yLWltcGxpY2l0LWZ1bmN0aW9uLWRlY2xhcmF0aW9uL30iCi0rQ1hYRkxBR1M9IiRDWFhGTEFHUyAkKHByaW50ZiAnJXNcbicgIiRDRkxBR1MiIHwgc2VkICdzLy1XZXJyb3ItaW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb24vL2cnKSIKLSBERkJfTERGTEFHUz0iJExERkxBR1MgJFpMSUJfTElCUyIKLSAKLSBDRkxBR1M9IiRDRkxBR1MgJENGTEFHU19TVEQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RpcmVjdGZiL2RpcmVjdGZiL2NvbXBhcl9mbl90LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kaXJlY3RmYi9kaXJlY3RmYi9jb21wYXJfZm5fdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU0ZDkwMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RpcmVjdGZiL2RpcmVjdGZiL2NvbXBhcl9mbl90LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotdGVzdCBmb3IgX19jb21wYXJfZm5fdCBhbmQgaWYgbm90IGRlZmluZWQgYnkgbGliYyB0aGVuIGRlZmluZSBpdAotaGVscCBtYWtlIGRpcmVjdGZiIGNvbXBpbGUgd2l0aCBtdXNsCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotSW5kZXg6IERpcmVjdEZCLTEuNy43L2NvbmZpZ3VyZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIERpcmVjdEZCLTEuNy43Lm9yaWcvY29uZmlndXJlLmluCi0rKysgRGlyZWN0RkItMS43LjcvY29uZmlndXJlLmluCi1AQCAtMTEyLDYgKzExMiwxNyBAQCBBQ19DSEVDS19TSVpFT0YobG9uZykKLSBBQ19DSEVDS19TSVpFT0YobG9uZyBsb25nKQotIEFDX0NIRUNLX0ZVTkNTKGZvcmspCi0gCi0rQUNfQ0FDSEVfQ0hFQ0soW2ZvciBjb21wYXJfZm5fdCBpbiBzdGRsaWIuaF0sY2NhY2hlX2N2X0NPTVBBUl9GTl9ULCBbCi0rICAgIEFDX1RSWV9DT01QSUxFKAotKyAgICAgICAgWyNpbmNsdWRlIDxzdGRsaWIuaD5dLAotKyAgICAgICAgW3ZvaWQgdGVzdF9mbih2b2lkKSB7IHFzb3J0KE5VTEwsIDAsIDAsIChfX2NvbXBhcl9mbl90KU5VTEwpOyB9XSwKLSsgICAgICAgIGNjYWNoZV9jdl9DT01QQVJfRk5fVD15ZXMsCi0rICAgICAgICBjY2FjaGVfY3ZfQ09NUEFSX0ZOX1Q9bm8pXSkKLStpZiB0ZXN0IHgiJGNjYWNoZV9jdl9DT01QQVJfRk5fVCIgPSB4InllcyI7IHRoZW4KLSsgICBBQ19ERUZJTkUoSEFWRV9DT01QQVJfRk5fVCwgMSwKLSsgICAgICAgICAgICAgRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBfX2NvbXBhcl9mbl90JyB0eXBlZGVmLikKLStmaQotKwotIEFDX1BBVEhfUFJPR1MoUEVSTCwgcGVybDUgcGVybCkKLSAKLSBBQ19QQVRIX1BST0coTUFOMkhUTUwsIG1hbjJodG1sLCBubykKLUluZGV4OiBEaXJlY3RGQi0xLjcuNy9pbnB1dGRyaXZlcnMvbGlyYy9saXJjLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBEaXJlY3RGQi0xLjcuNy5vcmlnL2lucHV0ZHJpdmVycy9saXJjL2xpcmMuYwotKysrIERpcmVjdEZCLTEuNy43L2lucHV0ZHJpdmVycy9saXJjL2xpcmMuYwotQEAgLTU5LDYgKzU5LDExIEBACi0gCi0gI2luY2x1ZGUgPGNvcmUvaW5wdXRfZHJpdmVyLmg+Ci0gCi0rI2lmIEhBVkVfQ09NUEFSX0ZOX1QKLSsjZGVmaW5lIENPTVBBUl9GTl9UIF9fY29tcGFyX2ZuX3QKLSsjZWxzZQotK3R5cGVkZWYgaW50ICgqQ09NUEFSX0ZOX1QpKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKTsKLSsjZW5kaWYKLSAKLSBERkJfSU5QVVRfRFJJVkVSKCBsaXJjICkKLSAKLUBAIC05Nyw3ICsxMDIsNyBAQCBzdGF0aWMgREZCSW5wdXREZXZpY2VLZXlTeW1ib2wgbGlyY19wYXJzCi0gICAgICAgICAgIHFzb3J0ICgga2V5bmFtZXMsCi0gICAgICAgICAgICAgICAgICAgRF9BUlJBWV9TSVpFKCBrZXluYW1lcyApLAotICAgICAgICAgICAgICAgICAgIHNpemVvZihrZXluYW1lc1swXSksCi0tICAgICAgICAgICAgICAgICAgKF9fY29tcGFyX2ZuX3QpIGtleW5hbWVzX3NvcnRfY29tcGFyZSApOwotKyAgICAgICAgICAgICAgICAgIChDT01QQVJfRk5fVCkga2V5bmFtZXNfc29ydF9jb21wYXJlICk7Ci0gICAgICAgICAgIGtleW5hbWVzX3NvcnRlZCA9IHRydWU7Ci0gICAgICB9Ci0gCi1AQCAtMTI0LDcgKzEyOSw3IEBAIHN0YXRpYyBERkJJbnB1dERldmljZUtleVN5bWJvbCBsaXJjX3BhcnMKLSAgICAgICAgICAgICAgICBzeW1ib2xfbmFtZSA9IGJzZWFyY2goIG5hbWUsIGtleW5hbWVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRF9BUlJBWV9TSVpFKCBrZXluYW1lcyApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGtleW5hbWVzWzBdKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX2NvbXBhcl9mbl90KSBrZXluYW1lc19jb21wYXJlICk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ09NUEFSX0ZOX1QpIGtleW5hbWVzX2NvbXBhcmUgKTsKLSAgICAgICAgICAgICAgICBpZiAoc3ltYm9sX25hbWUpCi0gICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sX25hbWUtPnN5bWJvbDsKLSAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZGlyZWN0ZmIvZGlyZWN0ZmIvY29uZmlndXJlZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kaXJlY3RmYi9kaXJlY3RmYi9jb25maWd1cmVmaXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkOGMwMTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kaXJlY3RmYi9kaXJlY3RmYi9jb25maWd1cmVmaXgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi1MaWJ0b29sIG5lZWRzIHRoZXNlIHNldCBjb3JyZWN0bHkgZWxzZSB3ZSBlbmQgdXAgd2l0aCBwb2ludGxlc3MgcnBhdGhzCi1zdWNoIGFzIHRoZSBRQSB3YXJuaW5nczoKLQotV0FSTklORzogUUEgSXNzdWU6IGRpcmVjdGZiOiAvd29yay9pNTg2LXBva3ktbGludXgvZGlyZWN0ZmItMS40LjE1LXIxL3BhY2thZ2VzLXNwbGl0L2RpcmVjdGZiL3Vzci9iaW4vZGZibGF5ZXIgY29udGFpbnMgcHJvYmFibHktcmVkdW5kYW50IFJQQVRIIC91c3IvbGliV0FSTklORzogUUEgSXNzdWU6IGRpcmVjdGZiOiAvd29yay9pNTg2LXBva3ktbGludXgvZGlyZWN0ZmItMS40LjE1LXIxL3BhY2thZ2VzLXNwbGl0L2RpcmVjdGZiL3Vzci9iaW4vZGZibWFzdGVyIGNvbnRhaW5zIHByb2JhYmx5LXJlZHVuZGFudCBSUEFUSCAvdXNyL2xpYldBUk5JTkc6IFFBIElzc3VlOiBkaXJlY3RmYjogL3dvcmsvaTU4Ni1wb2t5LWxpbnV4L2RpcmVjdGZiLTEuNC4xNS1yMS9wYWNrYWdlcy1zcGxpdC9kaXJlY3RmYi91c3IvYmluL21rZGdpZmZ0IGNvbnRhaW5zIHByb2JhYmx5LXJlZHVuZGFudCBSUEFUSCAvdXNyL2xpYldBUk5JTkc6IFFBIElzc3VlOiBkaXJlY3RmYjogL3dvcmsvaTU4Ni1wb2t5LWxpbnV4L2RpcmVjdGZiLTEuNC4xNS1yMS9wYWNrYWdlcy1zcGxpdC9kaXJlY3RmYi91c3IvYmluL2RmYmR1bXAgY29udGFpbnMgcHJvYmFibHktcmVkdW5kYW50IFJQQVRIIC91c3IvbGliV0FSTklORzogUUEgSXNzdWU6IGRpcmVjdGZiOiAvd29yay9pNTg2LXBva3ktbGludXgvZGlyZWN0ZmItMS40LjE1LXIxL3BhY2thZ2VzLXNwbGl0L2RpcmVjdGZiL3Vzci9iaW4vZGZiaW5wdXQgY29udGFpbnMgcHJvYmFibHktcmVkdW5kYW50IFJQQVRIIC91c3IvbGliV0FSTklORzogUUEgSXNzdWU6IGRpcmVjdGZiOiAvd29yay9pNTg2LXBva3ktbGludXgvZGlyZWN0ZmItMS40LjE1LXIxL3BhY2thZ2VzLXNwbGl0L2RpcmVjdGZiL3Vzci9iaW4vZGZiZnggY29udGFpbnMgcHJvYmFibHktcmVkdW5kYW50IFJQQVRIIC91c3IvbGliV0FSTklORzogUUEgSXNzdWU6IGRpcmVjdGZiOiAvd29yay9pNTg2LXBva3ktbGludXgvZGlyZWN0ZmItMS40LjE1LXIxL3BhY2thZ2VzLXNwbGl0L2RpcmVjdGZiL3Vzci9iaW4vZGZic2NyZWVuIGNvbnRhaW5zIHByb2JhYmx5LXJlZHVuZGFudCBSUEFUSCAvdXNyL2xpYldBUk5JTkc6IFFBIElzc3VlOiBkaXJlY3RmYjogL3dvcmsvaTU4Ni1wb2t5LWxpbnV4L2RpcmVjdGZiLTEuNC4xNS1yMS9wYWNrYWdlcy1zcGxpdC9kaXJlY3RmYi91c3IvYmluL21rZGdpZmYgY29udGFpbnMgcHJvYmFibHktcmVkdW5kYW50IFJQQVRIIC91c3IvbGliV0FSTklORzogUUEgSXNzdWU6IGRpcmVjdGZiOiAvd29yay9pNTg2LXBva3ktbGludXgvZGlyZWN0ZmItMS40LjE1LXIxL3BhY2thZ2VzLXNwbGl0L2RpcmVjdGZiL3Vzci9iaW4vZGZiaW5zcGVjdG9yIGNvbnRhaW5zIHByb2JhYmx5LXJlZHVuZGFudCBSUEFUSCAvdXNyL2xpYgotV0FSTklORzogUUEgSXNzdWU6IGRpcmVjdGZiOiAvd29yay9pNTg2LXBva3ktbGludXgvZGlyZWN0ZmItMS40LjE1LXIxL3BhY2thZ2VzLXNwbGl0L2RpcmVjdGZiL3Vzci9iaW4vbWtkZmlmZiBjb250YWlucyBwcm9iYWJseS1yZWR1bmRhbnQgUlBBVEggL3Vzci9saWIKLVdBUk5JTkc6IFFBIElzc3VlOiBkaXJlY3RmYjogL3dvcmsvaTU4Ni1wb2t5LWxpbnV4L2RpcmVjdGZiLTEuNC4xNS1yMS9wYWNrYWdlcy1zcGxpdC9kaXJlY3RmYi91c3IvYmluL2RmYmluZm8gY29udGFpbnMgcHJvYmFibHktcmVkdW5kYW50IFJQQVRIIC91c3IvbGliCi1XQVJOSU5HOiBRQSBJc3N1ZTogZGlyZWN0ZmI6IC93b3JrL2k1ODYtcG9reS1saW51eC9kaXJlY3RmYi0xLjQuMTUtcjEvcGFja2FnZXMtc3BsaXQvZGlyZWN0ZmIvdXNyL2Jpbi9kZmJwZW5tb3VudCBjb250YWlucyBwcm9iYWJseS1yZWR1bmRhbnQgUlBBVEggL3Vzci9saWIKLVdBUk5JTkc6IFFBIElzc3VlOiBkaXJlY3RmYjogL3dvcmsvaTU4Ni1wb2t5LWxpbnV4L2RpcmVjdGZiLTEuNC4xNS1yMS9wYWNrYWdlcy1zcGxpdC9kaXJlY3RmYi91c3IvYmluL2RmYmcgY29udGFpbnMgcHJvYmFibHktcmVkdW5kYW50IFJQQVRIIC91c3IvbGliCi1XQVJOSU5HOiBRQSBJc3N1ZTogZGlyZWN0ZmI6IC93b3JrL2k1ODYtcG9reS1saW51eC9kaXJlY3RmYi0xLjQuMTUtcjEvcGFja2FnZXMtc3BsaXQvZGlyZWN0ZmIvdXNyL2xpYi9saWJmdXNpb24tMS40LnNvLjYgY29udGFpbnMgcHJvYmFibHktcmVkdW5kYW50IFJQQVRIIC91c3IvbGliCi1XQVJOSU5HOiBRQSBJc3N1ZTogZGlyZWN0ZmI6IC93b3JrL2k1ODYtcG9reS1saW51eC9kaXJlY3RmYi0xLjQuMTUtcjEvcGFja2FnZXMtc3BsaXQvZGlyZWN0ZmIvdXNyL2xpYi9saWJkaXJlY3RmYi0xLjQuc28uNi4wLjkgY29udGFpbnMgcHJvYmFibHktcmVkdW5kYW50IFJQQVRIIC91c3IvbGliCi1XQVJOSU5HOiBRQSBJc3N1ZTogZGlyZWN0ZmI6IC93b3JrL2k1ODYtcG9reS1saW51eC9kaXJlY3RmYi0xLjQuMTUtcjEvcGFja2FnZXMtc3BsaXQvZGlyZWN0ZmIvdXNyL2xpYi9saWJkaXJlY3RmYi0xLjQuc28uNiBjb250YWlucyBwcm9iYWJseS1yZWR1bmRhbnQgUlBBVEggL3Vzci9saWIKLVdBUk5JTkc6IFFBIElzc3VlOiBkaXJlY3RmYjogL3dvcmsvaTU4Ni1wb2t5LWxpbnV4L2RpcmVjdGZiLTEuNC4xNS1yMS9wYWNrYWdlcy1zcGxpdC9kaXJlY3RmYi91c3IvbGliL2xpYmZ1c2lvbi0xLjQuc28uNi4wLjkgY29udGFpbnMgcHJvYmFibHktcmVkdW5kYW50IFJQQVRIIC91c3IvbGliCi1XQVJOSU5HOiBRQSBJc3N1ZTogZGlyZWN0ZmI6IC93b3JrL2k1ODYtcG9reS1saW51eC9kaXJlY3RmYi0xLjQuMTUtcjEvcGFja2FnZXMtc3BsaXQvZGlyZWN0ZmIvdXNyL2xpYi9kaXJlY3RmYi0xLjQtNi9zeXN0ZW1zL2xpYmRpcmVjdGZiX2ZiZGV2LnNvIGNvbnRhaW5zIHByb2JhYmx5LXJlZHVuZGFudCBSUEFUSCAvdXNyL2xpYgotV0FSTklORzogUUEgSXNzdWU6IGRpcmVjdGZiOiAvd29yay9pNTg2LXBva3ktbGludXgvZGlyZWN0ZmItMS40LjE1LXIxL3BhY2thZ2VzLXNwbGl0L2RpcmVjdGZiL3Vzci9saWIvZGlyZWN0ZmItMS40LTYvc3lzdGVtcy9saWJkaXJlY3RmYl9kZXZtZW0uc28gY29udGFpbnMgcHJvYmFibHktcmVkdW5kYW50IFJQQVRIIC91c3IvbGliCi1XQVJOSU5HOiBRQSBJc3N1ZTogZGlyZWN0ZmI6IC93b3JrL2k1ODYtcG9reS1saW51eC9kaXJlY3RmYi0xLjQuMTUtcjEvcGFja2FnZXMtc3BsaXQvZGlyZWN0ZmIvdXNyL2xpYi9kaXJlY3RmYi0xLjQtNi9zeXN0ZW1zL2xpYmRpcmVjdGZiX2R1bW15LnNvIGNvbnRhaW5zIHByb2JhYmx5LXJlZHVuZGFudCBSUEFUSCAvdXNyL2xpYgotV0FSTklORzogUUEgSXNzdWU6IGRpcmVjdGZiOiAvd29yay9pNTg2LXBva3ktbGludXgvZGlyZWN0ZmItMS40LjE1LXIxL3BhY2thZ2VzLXNwbGl0L2RpcmVjdGZiL3Vzci9saWIvZGlyZWN0ZmItMS40LTYvaW50ZXJmYWNlcy9JRGlyZWN0RkJWaWRlb1Byb3ZpZGVyL2xpYmlkaXJlY3RmYnZpZGVvcHJvdmlkZXJfdjRsLnNvIGNvbnRhaW5zIHByb2JhYmx5LXJlZHVuZGFudCBSUEFUSCAvdXNyL2xpYgotV0FSTklORzogUUEgSXNzdWU6IGRpcmVjdGZiOiAvd29yay9pNTg2LXBva3ktbGludXgvZGlyZWN0ZmItMS40LjE1LXIxL3BhY2thZ2VzLXNwbGl0L2RpcmVjdGZiL3Vzci9saWIvZGlyZWN0ZmItMS40LTYvaW50ZXJmYWNlcy9JRGlyZWN0RkJWaWRlb1Byb3ZpZGVyL2xpYmlkaXJlY3RmYnZpZGVvcHJvdmlkZXJfZ2lmLnNvIGNvbnRhaW5zIHByb2JhYmx5LXJlZHVuZGFudCBSUEFUSCAvdXNyL2xpYgotV0FSTklORzogUUEgSXNzdWU6IGRpcmVjdGZiOiAvd29yay9pNTg2LXBva3ktbGludXgvZGlyZWN0ZmItMS40LjE1LXIxL3BhY2thZ2VzLXNwbGl0L2RpcmVjdGZiL3Vzci9saWIvZGlyZWN0ZmItMS40LTYvaW50ZXJmYWNlcy9JQ29yZVJlc291cmNlTWFuYWdlci9saWJpY29yZXJlc291cmNlbWFuYWdlcl90ZXN0LnNvIGNvbnRhaW5zIHByb2JhYmx5LXJlZHVuZGFudCBSUEFUSCAvdXNyL2xpYgotV0FSTklORzogUUEgSXNzdWU6IGRpcmVjdGZiOiAvd29yay9pNTg2LXBva3ktbGludXgvZGlyZWN0ZmItMS40LjE1LXIxL3BhY2thZ2VzLXNwbGl0L2RpcmVjdGZiL3Vzci9saWIvZGlyZWN0ZmItMS40LTYvaW50ZXJmYWNlcy9JRGlyZWN0RkJJbWFnZVByb3ZpZGVyL2xpYmlkaXJlY3RmYmltYWdlcHJvdmlkZXJfanBlZy5zbyBjb250YWlucyBwcm9iYWJseS1yZWR1bmRhbnQgUlBBVEggL3Vzci9saWIKLVdBUk5JTkc6IFFBIElzc3VlOiBkaXJlY3RmYjogL3dvcmsvaTU4Ni1wb2t5LWxpbnV4L2RpcmVjdGZiLTEuNC4xNS1yMS9wYWNrYWdlcy1zcGxpdC9kaXJlY3RmYi91c3IvbGliL2RpcmVjdGZiLTEuNC02L2ludGVyZmFjZXMvSURpcmVjdEZCSW1hZ2VQcm92aWRlci9saWJpZGlyZWN0ZmJpbWFnZXByb3ZpZGVyX3BuZy5zbyBjb250YWlucyBwcm9iYWJseS1yZWR1bmRhbnQgUlBBVEggL3Vzci9saWIKLVdBUk5JTkc6IFFBIElzc3VlOiBkaXJlY3RmYjogL3dvcmsvaTU4Ni1wb2t5LWxpbnV4L2RpcmVjdGZiLTEuNC4xNS1yMS9wYWNrYWdlcy1zcGxpdC9kaXJlY3RmYi91c3IvbGliL2RpcmVjdGZiLTEuNC02L2ludGVyZmFjZXMvSURpcmVjdEZCSW1hZ2VQcm92aWRlci9saWJpZGlyZWN0ZmJpbWFnZXByb3ZpZGVyX2RmaWZmLnNvIGNvbnRhaW5zIHByb2JhYmx5LXJlZHVuZGFudCBSUEFUSCAvdXNyL2xpYgotV0FSTklORzogUUEgSXNzdWU6IGRpcmVjdGZiOiAvd29yay9pNTg2LXBva3ktbGludXgvZGlyZWN0ZmItMS40LjE1LXIxL3BhY2thZ2VzLXNwbGl0L2RpcmVjdGZiL3Vzci9saWIvZGlyZWN0ZmItMS40LTYvaW50ZXJmYWNlcy9JRGlyZWN0RkJJbWFnZVByb3ZpZGVyL2xpYmlkaXJlY3RmYmltYWdlcHJvdmlkZXJfZ2lmLnNvIGNvbnRhaW5zIHByb2JhYmx5LXJlZHVuZGFudCBSUEFUSCAvdXNyL2xpYgotV0FSTklORzogUUEgSXNzdWU6IGRpcmVjdGZiOiAvd29yay9pNTg2LXBva3ktbGludXgvZGlyZWN0ZmItMS40LjE1LXIxL3BhY2thZ2VzLXNwbGl0L2RpcmVjdGZiL3Vzci9saWIvZGlyZWN0ZmItMS40LTYvaW50ZXJmYWNlcy9JRGlyZWN0RkJGb250L2xpYmlkaXJlY3RmYmZvbnRfZnQyLnNvIGNvbnRhaW5zIHByb2JhYmx5LXJlZHVuZGFudCBSUEFUSCAvdXNyL2xpYgotV0FSTklORzogUUEgSXNzdWU6IGRpcmVjdGZiOiAvd29yay9pNTg2LXBva3ktbGludXgvZGlyZWN0ZmItMS40LjE1LXIxL3BhY2thZ2VzLXNwbGl0L2RpcmVjdGZiL3Vzci9saWIvZGlyZWN0ZmItMS40LTYvaW50ZXJmYWNlcy9JRGlyZWN0RkJGb250L2xpYmlkaXJlY3RmYmZvbnRfZGdpZmYuc28gY29udGFpbnMgcHJvYmFibHktcmVkdW5kYW50IFJQQVRIIC91c3IvbGliCi1XQVJOSU5HOiBRQSBJc3N1ZTogZGlyZWN0ZmI6IC93b3JrL2k1ODYtcG9reS1saW51eC9kaXJlY3RmYi0xLjQuMTUtcjEvcGFja2FnZXMtc3BsaXQvZGlyZWN0ZmIvdXNyL2xpYi9kaXJlY3RmYi0xLjQtNi93bS9saWJkaXJlY3RmYndtX2RlZmF1bHQuc28gY29udGFpbnMgcHJvYmFibHktcmVkdW5kYW50IFJQQVRIIC91c3IvbGliCi1XQVJOSU5HOiBRQSBJc3N1ZTogZGlyZWN0ZmI6IC93b3JrL2k1ODYtcG9reS1saW51eC9kaXJlY3RmYi0xLjQuMTUtcjEvcGFja2FnZXMtc3BsaXQvZGlyZWN0ZmIvdXNyL2xpYi9kaXJlY3RmYi0xLjQtNi9pbnB1dGRyaXZlcnMvbGliZGlyZWN0ZmJfenl0cm9uaWMuc28gY29udGFpbnMgcHJvYmFibHktcmVkdW5kYW50IFJQQVRIIC91c3IvbGliCi1XQVJOSU5HOiBRQSBJc3N1ZTogZGlyZWN0ZmI6IC93b3JrL2k1ODYtcG9reS1saW51eC9kaXJlY3RmYi0xLjQuMTUtcjEvcGFja2FnZXMtc3BsaXQvZGlyZWN0ZmIvdXNyL2xpYi9kaXJlY3RmYi0xLjQtNi9pbnB1dGRyaXZlcnMvbGliZGlyZWN0ZmJfcGVubW91bnQuc28gY29udGFpbnMgcHJvYmFibHktcmVkdW5kYW50IFJQQVRIIC91c3IvbGliCi1XQVJOSU5HOiBRQSBJc3N1ZTogZGlyZWN0ZmI6IC93b3JrL2k1ODYtcG9reS1saW51eC9kaXJlY3RmYi0xLjQuMTUtcjEvcGFja2FnZXMtc3BsaXQvZGlyZWN0ZmIvdXNyL2xpYi9kaXJlY3RmYi0xLjQtNi9pbnB1dGRyaXZlcnMvbGliZGlyZWN0ZmJfbGludXhfaW5wdXQuc28gY29udGFpbnMgcHJvYmFibHktcmVkdW5kYW50IFJQQVRIIC91c3IvbGliCi1XQVJOSU5HOiBRQSBJc3N1ZTogZGlyZWN0ZmI6IC93b3JrL2k1ODYtcG9reS1saW51eC9kaXJlY3RmYi0xLjQuMTUtcjEvcGFja2FnZXMtc3BsaXQvZGlyZWN0ZmIvdXNyL2xpYi9kaXJlY3RmYi0xLjQtNi9pbnB1dGRyaXZlcnMvbGliZGlyZWN0ZmJfc2VyaWFsbW91c2Uuc28gY29udGFpbnMgcHJvYmFibHktcmVkdW5kYW50IFJQQVRIIC91c3IvbGliCi1XQVJOSU5HOiBRQSBJc3N1ZTogZGlyZWN0ZmI6IC93b3JrL2k1ODYtcG9reS1saW51eC9kaXJlY3RmYi0xLjQuMTUtcjEvcGFja2FnZXMtc3BsaXQvZGlyZWN0ZmIvdXNyL2xpYi9kaXJlY3RmYi0xLjQtNi9pbnB1dGRyaXZlcnMvbGliZGlyZWN0ZmJfbXV0b3VjaC5zbyBjb250YWlucyBwcm9iYWJseS1yZWR1bmRhbnQgUlBBVEggL3Vzci9saWIKLVdBUk5JTkc6IFFBIElzc3VlOiBkaXJlY3RmYjogL3dvcmsvaTU4Ni1wb2t5LWxpbnV4L2RpcmVjdGZiLTEuNC4xNS1yMS9wYWNrYWdlcy1zcGxpdC9kaXJlY3RmYi91c3IvbGliL2RpcmVjdGZiLTEuNC02L2lucHV0ZHJpdmVycy9saWJkaXJlY3RmYl90c2xpYi5zbyBjb250YWlucyBwcm9iYWJseS1yZWR1bmRhbnQgUlBBVEggL3Vzci9saWIKLVdBUk5JTkc6IFFBIElzc3VlOiBkaXJlY3RmYjogL3dvcmsvaTU4Ni1wb2t5LWxpbnV4L2RpcmVjdGZiLTEuNC4xNS1yMS9wYWNrYWdlcy1zcGxpdC9kaXJlY3RmYi91c3IvbGliL2RpcmVjdGZiLTEuNC02L2lucHV0ZHJpdmVycy9saWJkaXJlY3RmYl9qb3lzdGljay5zbyBjb250YWlucyBwcm9iYWJseS1yZWR1bmRhbnQgUlBBVEggL3Vzci9saWIKLVdBUk5JTkc6IFFBIElzc3VlOiBkaXJlY3RmYjogL3dvcmsvaTU4Ni1wb2t5LWxpbnV4L2RpcmVjdGZiLTEuNC4xNS1yMS9wYWNrYWdlcy1zcGxpdC9kaXJlY3RmYi91c3IvbGliL2RpcmVjdGZiLTEuNC02L2lucHV0ZHJpdmVycy9saWJkaXJlY3RmYl9zb255cGkuc28gY29udGFpbnMgcHJvYmFibHktcmVkdW5kYW50IFJQQVRIIC91c3IvbGliCi1XQVJOSU5HOiBRQSBJc3N1ZTogZGlyZWN0ZmI6IC93b3JrL2k1ODYtcG9reS1saW51eC9kaXJlY3RmYi0xLjQuMTUtcjEvcGFja2FnZXMtc3BsaXQvZGlyZWN0ZmIvdXNyL2xpYi9kaXJlY3RmYi0xLjQtNi9pbnB1dGRyaXZlcnMvbGliZGlyZWN0ZmJfbGlyYy5zbyBjb250YWlucyBwcm9iYWJseS1yZWR1bmRhbnQgUlBBVEggL3Vzci9saWIKLVdBUk5JTkc6IFFBIElzc3VlOiBkaXJlY3RmYjogL3dvcmsvaTU4Ni1wb2t5LWxpbnV4L2RpcmVjdGZiLTEuNC4xNS1yMS9wYWNrYWdlcy1zcGxpdC9kaXJlY3RmYi91c3IvbGliL2RpcmVjdGZiLTEuNC02L2lucHV0ZHJpdmVycy9saWJkaXJlY3RmYl93bTk3eHhfdHMuc28gY29udGFpbnMgcHJvYmFibHktcmVkdW5kYW50IFJQQVRIIC91c3IvbGliCi1XQVJOSU5HOiBRQSBJc3N1ZTogZGlyZWN0ZmI6IC93b3JrL2k1ODYtcG9reS1saW51eC9kaXJlY3RmYi0xLjQuMTUtcjEvcGFja2FnZXMtc3BsaXQvZGlyZWN0ZmIvdXNyL2xpYi9kaXJlY3RmYi0xLjQtNi9pbnB1dGRyaXZlcnMvbGliZGlyZWN0ZmJfcHMybW91c2Uuc28gY29udGFpbnMgcHJvYmFibHktcmVkdW5kYW50IFJQQVRIIC91c3IvbGliCi1XQVJOSU5HOiBRQSBJc3N1ZTogZGlyZWN0ZmI6IC93b3JrL2k1ODYtcG9reS1saW51eC9kaXJlY3RmYi0xLjQuMTUtcjEvcGFja2FnZXMtc3BsaXQvZGlyZWN0ZmIvdXNyL2xpYi9kaXJlY3RmYi0xLjQtNi9pbnB1dGRyaXZlcnMvbGliZGlyZWN0ZmJfa2V5Ym9hcmQuc28gY29udGFpbnMgcHJvYmFibHktcmVkdW5kYW50IFJQQVRIIC91c3IvbGliCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1SUCAyMDEyLzAzLzE2Ci0KLUluZGV4OiBEaXJlY3RGQi0xLjQuMTUvY29uZmlndXJlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gRGlyZWN0RkItMS40LjE1Lm9yaWcvY29uZmlndXJlLmluCTIwMTItMDMtMTYgMTM6MzI6MjMuNjkyNDAyODc5ICswMDAwCi0rKysgRGlyZWN0RkItMS40LjE1L2NvbmZpZ3VyZS5pbgkyMDEyLTAzLTE2IDEzOjMzOjIyLjMxMjQwMDk2MCArMDAwMAotQEAgLTk3LDEzICs5Nyw2IEBACi0gQUNfQ0hFQ0tfU0laRU9GKGxvbmcgbG9uZykKLSBBQ19DSEVDS19GVU5DUyhmb3JrKQotIAotLQotLSMjIFdvcmsgYXJvdW5kIGxpYnN0dWhsIGR1cmluZyBjcm9zcyBidWlsZC4uLgotLWlmIHRlc3QgIiRob3N0IiAhPSAiJGJ1aWxkIjsgdGhlbgotLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9IiIKLS0gIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iIgotLWZpCi0tCi0gQUNfUEFUSF9QUk9HUyhQRVJMLCBwZXJsNSBwZXJsKQotIAotIEFDX1BBVEhfUFJPRyhNQU4ySFRNTCwgbWFuMmh0bWwsIG5vKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kaXJlY3RmYi9kaXJlY3RmYi9mdXNpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RpcmVjdGZiL2RpcmVjdGZiL2Z1c2lvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWY4MWE2Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RpcmVjdGZiL2RpcmVjdGZiL2Z1c2lvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLWRpcmVjdGZiOiBGaXggZm9yIGhhbmdzIGluIGRpcmVjdF90ZXN0LCBmdXNpb25fc2tpcm1pc2ggb24gZXhpdAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IExhdXJlbiBQb3N0IDxsYXVyZW4ucG9zdEBmcmVlc2NhbGUuY29tPgotCi0tLS0gYS9saWIvZnVzaW9uL2Z1c2lvbi5jCTIwMTMtMDEtMTggMjI6NTc6MTEuMDAwMDAwMDAwICswODAwCi0rKysgYi9saWIvZnVzaW9uL2Z1c2lvbi5jCTIwMTMtMDctMDQgMTA6NDI6NTYuNTAyNjk5MTE5ICswODAwCi1AQCAtMjg1Myw5ICsyODUzLDE0IEBACi0gICAgICAgICAgIGRpcmVjdF9tdXRleF9sb2NrKCAmd29ybGQtPmV2ZW50X2Rpc3BhdGNoZXJfbXV0ZXggKTsKLSAKLSAgICAgICAgICAgd2hpbGUgKDEpIHsKLS0gICAgICAgICAgICAgICBpZiAoIXdvcmxkLT5ldmVudF9kaXNwYXRjaGVyX2J1ZmZlcnMpCi0rICAgICAgICAgICAgICAgaWYgKCF3b3JsZC0+ZXZlbnRfZGlzcGF0Y2hlcl9idWZmZXJzKXsKLSAgICAgICAgICAgICAgICAgICAgIGRpcmVjdF93YWl0cXVldWVfd2FpdCggJndvcmxkLT5ldmVudF9kaXNwYXRjaGVyX2NvbmQsICZ3b3JsZC0+ZXZlbnRfZGlzcGF0Y2hlcl9tdXRleCApOwotLQotKyAgICAgICAgICAgICAgICAgICAgaWYgKHdvcmxkLT5kaXNwYXRjaF9zdG9wKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgIERfREVCVUdfQVQoIEZ1c2lvbl9NYWluX0Rpc3BhdGNoLCAiICAtPiBJR05PUklORyAoZGlzcGF0Y2hfc3RvcCEpXG4iICk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdF9tdXRleF91bmxvY2soICZ3b3JsZC0+ZXZlbnRfZGlzcGF0Y2hlcl9tdXRleCApOwotKyAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSsgICAgICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnVmID0gKEZ1c2lvbkV2ZW50RGlzcGF0Y2hlckJ1ZmZlciAqKXdvcmxkLT5ldmVudF9kaXNwYXRjaGVyX2J1ZmZlcnM7Ci0gICAgICAgICAgICAgICAgRF9NQUdJQ19BU1NFUlQoIGJ1ZiwgRnVzaW9uRXZlbnREaXNwYXRjaGVyQnVmZmVyICk7Ci0gCi1AQCAtMjg3Miw2ICsyODc3LDExIEBACi0gLy9EX0lORk8oIndhaXRpbmcuLi5cbiIpOwotICAgICAgICAgICAgICAgICAgICAgRF9BU1NFUlQoIGJ1Zi0+cmVhZF9wb3MgPT0gYnVmLT53cml0ZV9wb3MgKTsKLSAgICAgICAgICAgICAgICAgICAgIGRpcmVjdF93YWl0cXVldWVfd2FpdCggJndvcmxkLT5ldmVudF9kaXNwYXRjaGVyX2NvbmQsICZ3b3JsZC0+ZXZlbnRfZGlzcGF0Y2hlcl9tdXRleCApOwotKwkJICAgICAgaWYgKHdvcmxkLT5kaXNwYXRjaF9zdG9wKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgIERfREVCVUdfQVQoIEZ1c2lvbl9NYWluX0Rpc3BhdGNoLCAiICAtPiBJR05PUklORyAoZGlzcGF0Y2hfc3RvcCEpXG4iICk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdF9tdXRleF91bmxvY2soICZ3b3JsZC0+ZXZlbnRfZGlzcGF0Y2hlcl9tdXRleCApOwotKyAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSsgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gCi0gICAgICAgICAgICAgICAgYnVmID0gKEZ1c2lvbkV2ZW50RGlzcGF0Y2hlckJ1ZmZlciAqKXdvcmxkLT5ldmVudF9kaXNwYXRjaGVyX2J1ZmZlcnM7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RpcmVjdGZiL2RpcmVjdGZiL3VuaW9uLXNpZ3ZhbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZGlyZWN0ZmIvZGlyZWN0ZmIvdW5pb24tc2lndmFsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOWY0NWM3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZGlyZWN0ZmIvZGlyZWN0ZmIvdW5pb24tc2lndmFsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotVGhpcyBwYXRjaCBpcyB0YWtlbiBmcm9tIGdlbnRvbyBtdXNsIG92ZXJsYXkKLXNpZ3ZhbF90IGlzIGdsaWJjIG9ubHkgY29uc3RydWN0LCB3ZSB1c2UgYSB1bmlvbiBvZiBzaWd2YWwKLXdoaWNoIHByZXR0eSBtdWNoIGlzIHNhbWUgZWZmZWN0IGFzIHNpZ3ZhbF90Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotZGlmZiAtTmF1ciBEaXJlY3RGQi0xLjcuNi5vcmlnL2xpYi9kaXJlY3Qvb3MvbGludXgvZ2xpYmMvc3lzdGVtLmMgRGlyZWN0RkItMS43LjYvbGliL2RpcmVjdC9vcy9saW51eC9nbGliYy9zeXN0ZW0uYwotLS0tIERpcmVjdEZCLTEuNy42Lm9yaWcvbGliL2RpcmVjdC9vcy9saW51eC9nbGliYy9zeXN0ZW0uYwkyMDE0LTA3LTE1IDAyOjU0OjU4LjAwMDAwMDAwMCAtMDQwMAotKysrIERpcmVjdEZCLTEuNy42L2xpYi9kaXJlY3Qvb3MvbGludXgvZ2xpYmMvc3lzdGVtLmMJMjAxNS0wNy0xOCAxNjo1NTozNS4wNzc5ODkxNjYgLTA0MDAKLUBAIC0xMTEsNyArMTExLDcgQEAKLSB2b2lkCi0gZGlyZWN0X3RyYXAoIGNvbnN0IGNoYXIgKmRvbWFpbiwgaW50IHNpZyApCi0gewotLSAgICAgc2lndmFsX3QgdmFsOwotKyAgICAgdW5pb24gc2lndmFsIHZhbDsKLSAKLSAgICAgIGlmIChkaXJlY3RfY29uZmlnLT5kZWxheV90cmFwX21zKSB7Ci0gICAgICAgICAgIERfTE9HKCBEaXJlY3RfVHJhcCwgVkVSQk9TRSwgIk5PVCBSQUlTSU5HIHNpZ25hbCAlZCBmcm9tICVzLCB3YWl0aW5nIGZvciAlZG1zLi4uIGF0dGFjaCBnZGIgLS1waWQ9JWRcbiIsIHNpZywgZG9tYWluLCBkaXJlY3RfY29uZmlnLT5kZWxheV90cmFwX21zLCBnZXRwaWQoKSApOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kaXJlY3RmYi9kaXJlY3RmYi91c2UtUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RpcmVjdGZiL2RpcmVjdGZiL3VzZS1QVEhSRUFEX01VVEVYX1JFQ1VSU0lWRS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWM0OGY2OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RpcmVjdGZiL2RpcmVjdGZiL3VzZS1QVEhSRUFEX01VVEVYX1JFQ1VSU0lWRS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExNiArMCwwIEBACi1SZW1vdmUgdXNlIG9mIERJUkVDVF9SRUNVUlNJVkVfTVVURVhfSU5JVElBTElaRVIgaXRzIG5vdCBwb3J0YWJsZQotdXNlIHBvcnRhYmxlIHdheSB0byBpbml0aWFsaXplIHJlY3Vyc2l2ZSBtdXRleCB1c2luZyBwdGhyZWFkX29uY2UoKSBhbmQgZGlyZWN0X3JlY3Vyc2l2ZV9tdXRleF9pbml0KCkKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotSW5kZXg6IERpcmVjdEZCLTEuNy43L2xpYi9kaXJlY3Qvb3MvbGludXgvZ2xpYmMvbXV0ZXguaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIERpcmVjdEZCLTEuNy43Lm9yaWcvbGliL2RpcmVjdC9vcy9saW51eC9nbGliYy9tdXRleC5oCi0rKysgRGlyZWN0RkItMS43LjcvbGliL2RpcmVjdC9vcy9saW51eC9nbGliYy9tdXRleC5oCi1AQCAtNDYsNyArNDYsNiBAQCBzdHJ1Y3QgX19EX0RpcmVjdE11dGV4IHsKLSAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSAKLSAjZGVmaW5lIERJUkVDVF9NVVRFWF9JTklUSUFMSVpFUihuYW1lKSAgICAgICAgICAgIHsgUFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUiB9Ci0tI2RlZmluZSBESVJFQ1RfUkVDVVJTSVZFX01VVEVYX0lOSVRJQUxJWkVSKG5hbWUpICB7IFBUSFJFQURfUkVDVVJTSVZFX01VVEVYX0lOSVRJQUxJWkVSX05QIH0KLSAKLSAjZW5kaWYKLSAKLUluZGV4OiBEaXJlY3RGQi0xLjcuNy9saWIvZGlyZWN0L3RyYWNlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBEaXJlY3RGQi0xLjcuNy5vcmlnL2xpYi9kaXJlY3QvdHJhY2UuYwotKysrIERpcmVjdEZCLTEuNy43L2xpYi9kaXJlY3QvdHJhY2UuYwotQEAgLTg5LDggKzg5LDE1IEBAIHN0cnVjdCBfX0RfRGlyZWN0VHJhY2VCdWZmZXIgewotIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSAKLSBzdGF0aWMgRGlyZWN0TGluayAgKmJ1ZmZlcnM7Ci0tc3RhdGljIERpcmVjdE11dGV4ICBidWZmZXJzX2xvY2sgPSBESVJFQ1RfUkVDVVJTSVZFX01VVEVYX0lOSVRJQUxJWkVSKGJ1ZmZlcnNfbG9jayk7Ci0gCi0rc3RhdGljIHB0aHJlYWRfb25jZV90IGJ1ZmZlcnNfbG9ja19pbml0X29uY2UgPSBQVEhSRUFEX09OQ0VfSU5JVDsKLStzdGF0aWMgRGlyZWN0TXV0ZXggYnVmZmVyc19sb2NrOwotKwotK3N0YXRpYyB2b2lkCi0rYnVmZmVyc19sb2NrX2luaXQoIHZvaWQgKQotK3sKLSsgICAgIGRpcmVjdF9yZWN1cnNpdmVfbXV0ZXhfaW5pdCgmYnVmZmVyc19sb2NrKTsKLSt9Ci0gLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotIAotIF9fZGZiX25vX2luc3RydW1lbnRfZnVuY3Rpb25fXwotQEAgLTExMyw2ICsxMjAsNyBAQCBnZXRfdHJhY2VfYnVmZmVyKCB2b2lkICkKLSAKLSAgICAgICAgICAgRF9NQUdJQ19TRVQoIGJ1ZmZlciwgRGlyZWN0VHJhY2VCdWZmZXIgKTsKLSAKLSsgICAgICAgICAgcHRocmVhZF9vbmNlKCZidWZmZXJzX2xvY2tfaW5pdF9vbmNlLCBidWZmZXJzX2xvY2tfaW5pdCk7Ci0gICAgICAgICAgIGRpcmVjdF9tdXRleF9sb2NrKCAmYnVmZmVyc19sb2NrICk7Ci0gICAgICAgICAgIGRpcmVjdF9saXN0X2FwcGVuZCggJmJ1ZmZlcnMsICZidWZmZXItPmxpbmsgKTsKLSAgICAgICAgICAgZGlyZWN0X211dGV4X3VubG9jayggJmJ1ZmZlcnNfbG9jayApOwotQEAgLTEzOCw4ICsxNDYsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgewotIH0gU3ltYm9sVGFibGU7Ci0gCi0gc3RhdGljIERpcmVjdExpbmsgICp0YWJsZXMgICAgICA9IE5VTEw7Ci0tc3RhdGljIERpcmVjdE11dGV4ICB0YWJsZXNfbG9jayA9IERJUkVDVF9SRUNVUlNJVkVfTVVURVhfSU5JVElBTElaRVIodGFibGVzX2xvY2spOwotK3N0YXRpYyBwdGhyZWFkX29uY2VfdCB0YWJsZXNfbG9ja19pbml0X29uY2UgPSBQVEhSRUFEX09OQ0VfSU5JVDsKLStzdGF0aWMgRGlyZWN0TXV0ZXggdGFibGVzX2xvY2s7Ci0gCi0rc3RhdGljIHZvaWQKLSt0YWJsZXNfbG9ja19pbml0KCB2b2lkICkKLSt7Ci0rICAgICBkaXJlY3RfcmVjdXJzaXZlX211dGV4X2luaXQoJnRhYmxlc3NfbG9jayk7Ci0rfQotIAotIF9fZGZiX25vX2luc3RydW1lbnRfZnVuY3Rpb25fXwotIHN0YXRpYyB2b2lkCi1AQCAtMzcwLDYgKzM4NCw3IEBAIGRpcmVjdF90cmFjZV9sb29rdXBfc3ltYm9sKCBjb25zdCBjaGFyICoKLSAgICAgIFN5bWJvbCAgICAgICpzeW1ib2w7Ci0gICAgICBTeW1ib2xUYWJsZSAqdGFibGU7Ci0gCi0rICAgICBwdGhyZWFkX29uY2UoJnRhYmxlc19sb2NrX2luaXRfb25jZSwgdGFibGVzX2xvY2tfaW5pdCk7Ci0gICAgICBkaXJlY3RfbXV0ZXhfbG9jayggJnRhYmxlc19sb2NrICk7Ci0gCi0gICAgICB0YWJsZSA9IGZpbmRfdGFibGUoIGZpbGVuYW1lICk7Ci1AQCAtNTE0LDYgKzUyOSw3IEBAIGRpcmVjdF90cmFjZV9wcmludF9zdGFja3MoKQotICAgICAgRGlyZWN0VHJhY2VCdWZmZXIgKmI7Ci0gICAgICBEaXJlY3RUcmFjZUJ1ZmZlciAqYnVmZmVyID0gZ2V0X3RyYWNlX2J1ZmZlcigpOwotIAotKyAgICAgcHRocmVhZF9vbmNlKCZidWZmZXJzX2xvY2tfaW5pdF9vbmNlLCBidWZmZXJzX2xvY2tfaW5pdCk7Ci0gICAgICBkaXJlY3RfbXV0ZXhfbG9jayggJmJ1ZmZlcnNfbG9jayApOwotIAotICAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPmxldmVsKQotQEAgLTYxMSw2ICs2MjcsNyBAQCBkaXJlY3RfdHJhY2VfZnJlZV9idWZmZXIoIERpcmVjdFRyYWNlQnVmCi0gICAgICBEX01BR0lDX0FTU0VSVCggYnVmZmVyLCBEaXJlY3RUcmFjZUJ1ZmZlciApOwotIAotICAgICAgaWYgKGJ1ZmZlci0+dGhyZWFkKSB7Ci0rICAgICAgICAgIHB0aHJlYWRfb25jZSgmYnVmZmVyc19sb2NrX2luaXRfb25jZSwgYnVmZmVyc19sb2NrX2luaXQpOwotICAgICAgICAgICBkaXJlY3RfbXV0ZXhfbG9jayggJmJ1ZmZlcnNfbG9jayApOwotICAgICAgICAgICBkaXJlY3RfbGlzdF9yZW1vdmUoICZidWZmZXJzLCAmYnVmZmVyLT5saW5rICk7Ci0gICAgICAgICAgIGRpcmVjdF9tdXRleF91bmxvY2soICZidWZmZXJzX2xvY2sgKTsKLUluZGV4OiBEaXJlY3RGQi0xLjcuNy9zcmMvZGlyZWN0ZmIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIERpcmVjdEZCLTEuNy43Lm9yaWcvc3JjL2RpcmVjdGZiLmMKLSsrKyBEaXJlY3RGQi0xLjcuNy9zcmMvZGlyZWN0ZmIuYwotQEAgLTk5LDYgKzk5LDE1IEBAIGNvbnN0IHVuc2lnbmVkIGludCBkaXJlY3RmYl9taWNyb192ZXJzaW8KLSBjb25zdCB1bnNpZ25lZCBpbnQgZGlyZWN0ZmJfYmluYXJ5X2FnZSAgICA9IERJUkVDVEZCX0JJTkFSWV9BR0U7Ci0gY29uc3QgdW5zaWduZWQgaW50IGRpcmVjdGZiX2ludGVyZmFjZV9hZ2UgPSBESVJFQ1RGQl9JTlRFUkZBQ0VfQUdFOwotIAotK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBsb2NrX2luaXRfb25jZSA9IFBUSFJFQURfT05DRV9JTklUOwotK3N0YXRpYyBEaXJlY3RNdXRleCBsb2NrOwotKwotK3N0YXRpYyB2b2lkCi0rbG9ja19pbml0KCB2b2lkICkKLSt7Ci0rICAgICBkaXJlY3RfcmVjdXJzaXZlX211dGV4X2luaXQoJmxvY2spOwotK30KLSsKLSBjb25zdCBjaGFyICoKLSBEaXJlY3RGQkNoZWNrVmVyc2lvbiggdW5zaWduZWQgaW50IHJlcXVpcmVkX21ham9yLAotICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcmVxdWlyZWRfbWlub3IsCi1AQCAtMjE1LDggKzIyNCw3IEBAIERpcmVjdEZCQ3JlYXRlKCBJRGlyZWN0RkIgKippbnRlcmZhY2VfcHQKLSAgICAgIGlmIChkZmJfY29uZmlnLT5yZW1vdGUuaG9zdCkKLSAgICAgICAgICAgcmV0dXJuIENyZWF0ZVJlbW90ZSggZGZiX2NvbmZpZy0+cmVtb3RlLmhvc3QsIGRmYl9jb25maWctPnJlbW90ZS5wb3J0LCBpbnRlcmZhY2VfcHRyICk7Ci0gCi0tICAgICBzdGF0aWMgRGlyZWN0TXV0ZXggbG9jayA9IERJUkVDVF9SRUNVUlNJVkVfTVVURVhfSU5JVElBTElaRVIobG9jayk7Ci0tCi0rICAgICBwdGhyZWFkX29uY2UoJmxvY2tfaW5pdF9vbmNlLCBsb2NrX2luaXQpOwotICAgICAgZGlyZWN0X211dGV4X2xvY2soICZsb2NrICk7Ci0gCi0gICAgICBpZiAoIWRmYl9jb25maWctPm5vX3NpbmdsZXRvbiAmJiBpZGlyZWN0ZmJfc2luZ2xldG9uKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RpcmVjdGZiL2RpcmVjdGZiXzEuNy43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kaXJlY3RmYi9kaXJlY3RmYl8xLjcuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzZjMDcwZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RpcmVjdGZiL2RpcmVjdGZiXzEuNy43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1yZXF1aXJlIGRpcmVjdGZiLmluYwotCi1SViA9ICIxLjctNyIKLQotTEVBRF9TT05BTUUgPSAibGliZGlyZWN0ZmItMS43LnNvLjAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxNTJjZjE4NjNiMWEzYTI4YWExMzcwZTkwNTM0NDBiZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiNzg1YzYzOGRjMzFiOGZlM2E3YzgxYmUxNDc1Yzg5YjIyNTVhYjNkNjdiNzc3Yzc0N2QzZmJjNTJmODAyN2EzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtLzAwMDEtY29uZmlndXJlLmFjLUFsbG93LWV4cGxpY2l0LWVuYWJsaW5nLW9mLWN1bml0LXRlc3RzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtLzAwMDEtY29uZmlndXJlLmFjLUFsbG93LWV4cGxpY2l0LWVuYWJsaW5nLW9mLWN1bml0LXRlc3RzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmNTI2MzcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm0vMDAwMS1jb25maWd1cmUuYWMtQWxsb3ctZXhwbGljaXQtZW5hYmxpbmctb2YtY3VuaXQtdGVzdHMucGF0Y2gKQEAgLTAsMCArMSw1NiBAQAorRnJvbSBlNmJkNDIwNWIwYjU0NmFmZTk5MWFlNmY3MjI1NjY0NWY0NDA0YWQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK0RhdGU6IE1vbiwgNSBTZXAgMjAxNiAxNDo0MTozNyArMDMwMAorU3ViamVjdDogW1BBVENIIGxpYmRybV0gY29uZmlndXJlLmFjOiBBbGxvdyBleHBsaWNpdCBlbmFibGluZyBvZiBjdW5pdCB0ZXN0cworCitBZGQgLS13aXRoLWN1bml0IHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRvIHJlcHJvZHVjaWJsZSBidWlsZHMuIERlZmF1bHQKK2lzIHN0aWxsIHRvIHByb2JlIGN1bml0IGFuZCBidWlsZCBvcHBvcnR1bmlzdGljYWxseS4KKworU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFttYWlsaW5nIGxpc3RdCistLS0KKyBjb25maWd1cmUuYWMgfCAxNCArKysrKysrKysrKystLQorIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBlMzA0OGM3Li45MThkMjFkIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xMzcsNiArMTM3LDEyIEBAIEFDX0FSR19FTkFCTEUoaW5zdGFsbC10ZXN0LXByb2dyYW1zLAorIAkJICBbSW5zdGFsbCB0ZXN0IHByb2dyYW1zIChkZWZhdWx0OiBubyldKSwKKyAJCSAgW0lOU1RBTExfVEVTVFM9JGVuYWJsZXZhbF0sIFtJTlNUQUxMX1RFU1RTPW5vXSkKKyAKKytBQ19BUkdfV0lUSChbY3VuaXRdLAorKyAgICAgICAgICAgIFtBU19IRUxQX1NUUklORyhbLS13aXRoLWN1bml0XSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0J1aWxkIHRlc3RzIHRoYXQgdXNlIGN1bml0IChkZWZhdWx0OiBhdXRvKV0pXSwKKysgICAgICAgICAgICBbXSwKKysgICAgICAgICAgICBbd2l0aF9jdW5pdD1hdXRvXSkKKysKKyBkbmwgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgZG5sIGNoZWNrIGNvbXBpbGVyIGZsYWdzCisgQUNfREVGVU4oW0xJQkRSTV9DQ19UUllfRkxBR10sIFsKK0BAIC0zNzIsNyArMzc4LDcgQEAgaWYgdGVzdCAieCRSQURFT04iID0geHllczsgdGhlbgorIAlBQ19ERUZJTkUoSEFWRV9SQURFT04sIDEsIFtIYXZlIHJhZGVvbiBzdXBwb3J0XSkKKyBmaQorIAorLWlmIHRlc3QgIngkQU1ER1BVIiAhPSB4bm87IHRoZW4KKytpZiB0ZXN0ICJ4JHdpdGhfY3VuaXQiICE9IHhubyAtYSAieCRBTURHUFUiICE9IHhubzsgdGhlbgorIAkjIERldGVjdCBjdW5pdCBsaWJyYXJ5CisgCVBLR19DSEVDS19NT0RVTEVTKFtDVU5JVF0sIFtjdW5pdCA+PSAyLjFdLCBbaGF2ZV9jdW5pdD15ZXNdLCBbaGF2ZV9jdW5pdD1ub10pCisgCSMgSWYgcGtnLWNvbmZpZyBkb2VzIG5vdCBmaW5kIGN1bml0LCBjaGVjayBpdCB1c2luZyBBQ19DSEVDS19MSUIuICBXZQorQEAgLTM5OSw3ICs0MDYsMTEgQEAgaWYgdGVzdCAieCRBTURHUFUiID0geHllczsgdGhlbgorIAlBQ19ERUZJTkUoSEFWRV9DVU5JVCwgW3Rlc3QgIngkaGF2ZV9jdW5pdCIgIT0gInhubyJdLCBbRW5hYmxlIENVTklUIEhhdmUgYW1kZ3B1IHN1cHBvcnRdKQorIAorIAlpZiB0ZXN0ICJ4JGhhdmVfY3VuaXQiID0gInhubyI7IHRoZW4KKy0JCUFDX01TR19XQVJOKFtDb3VsZCBub3QgZmluZCBjdW5pdCBsaWJyYXJ5LiBEaXNhYmxpbmcgYW1kZ3B1IHRlc3RzXSkKKysJCWlmIHRlc3QgIngkd2l0aF9jdW5pdCIgPSAieHllcyI7IHRoZW4KKysJCQlBQ19NU0dfRVJST1IoW0NvdWxkIG5vdCBmaW5kIGN1bml0IGxpYnJhcnkgYnV0IC0td2l0aC1jdW5pdCB3YXMgZ2l2ZW5dKQorKwkJZWxpZiB0ZXN0ICJ4JHdpdGhfY3VuaXQiID0gInhhdXRvIjsgdGhlbgorKwkJCUFDX01TR19XQVJOKFtDb3VsZCBub3QgZmluZCBjdW5pdCBsaWJyYXJ5LiBEaXNhYmxpbmcgYW1kZ3B1IHRlc3RzXSkKKysJCWZpCisgCWZpCisgZmkKKyAKKy0tIAorMi4xLjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtL2ZpeF9PX0NMT0VYRUNfdW5kZWNsYXJlZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybS9maXhfT19DTE9FWEVDX3VuZGVjbGFyZWQucGF0Y2gKaW5kZXggMjg2ZTU0OC4uNDcwOGJmMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtL2ZpeF9PX0NMT0VYRUNfdW5kZWNsYXJlZC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm0vZml4X09fQ0xPRVhFQ191bmRlY2xhcmVkLnBhdGNoCkBAIC0xOSw2ICsxOSw2IEBACiAgICovCiAgCiArI2luY2x1ZGUgPGNvbmZpZy5oPgorICNpbmNsdWRlIDxlcnJuby5oPgogICNpbmNsdWRlIDxzdGRpby5oPgogICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybV8yLjQuNjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm1fMi40LjY3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZGQ2OTdmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybV8yLjQuNjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1TVU1NQVJZID0gIlVzZXJzcGFjZSBpbnRlcmZhY2UgdG8gdGhlIGtlcm5lbCBEUk0gc2VydmljZXMiCi1ERVNDUklQVElPTiA9ICJUaGUgcnVudGltZSBsaWJyYXJ5IGZvciBhY2Nlc3NpbmcgdGhlIGtlcm5lbCBEUk0gc2VydmljZXMuICBEUk0gXAotc3RhbmRzIGZvciBcIkRpcmVjdCBSZW5kZXJpbmcgTWFuYWdlclwiLCB3aGljaCBpcyB0aGUga2VybmVsIHBvcnRpb24gb2YgdGhlIFwKLVwiRGlyZWN0IFJlbmRlcmluZyBJbmZyYXN0cnVjdHVyZVwiIChEUkkpLiAgRFJJIGlzIHJlcXVpcmVkIGZvciBtYW55IGhhcmR3YXJlIFwKLWFjY2VsZXJhdGVkIE9wZW5HTCBkcml2ZXJzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9kcmkuZnJlZWRlc2t0b3Aub3JnIgotU0VDVElPTiA9ICJ4MTEvYmFzZSIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8veGY4NmRybS5jO2JlZ2lubGluZT05O2VuZGxpbmU9MzI7bWQ1PWM4YTNiOTYxYWY3NjY3YzUzMDgxNjc2MWU5NDlkYzcxIgotUFJPVklERVMgPSAiZHJtIgotREVQRU5EUyA9ICJsaWJwdGhyZWFkLXN0dWJzIHVkZXYgbGlicGNpYWNjZXNzIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kcmkuZnJlZWRlc2t0b3Aub3JnL2xpYmRybS8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2luc3RhbGx0ZXN0cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXhfT19DTE9FWEVDX3VuZGVjbGFyZWQucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImI4NDRjNmFmMzRlNjEzZWJmNTJmODBiM2NkOGQ3MDU1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImVlNWI3MWUxMTEzYmUzNzU0NGQwNzUyNjgxYzEyZjA0MGMwMWY3ODJlMjkzM2RmN2Q3YmMyMWZkMGQxMGNlYmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1jYWlyby10ZXN0cyBcCi0gICAgICAgICAgICAgICAgIC0tZW5hYmxlLW9tYXAtZXhwZXJpbWVudGFsLWFwaSBcCi0gICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGwtdGVzdC1wcm9ncmFtcyBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1tYW5wYWdlcyBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS12YWxncmluZCBcCi0gICAgICAgICAgICAgICAgIgotCi1BTExPV19FTVBUWV8ke1BOfS1kcml2ZXJzID0gIjEiCi1QQUNLQUdFUyA9KyAiJHtQTn0tdGVzdHMgJHtQTn0tZHJpdmVycyAke1BOfS1yYWRlb24gJHtQTn0tbm91dmVhdSAke1BOfS1vbWFwIFwKLSAgICAgICAgICAgICAke1BOfS1pbnRlbCAke1BOfS1leHlub3MgJHtQTn0ta21zICR7UE59LWZyZWVkcmVubyAke1BOfS1hbWRncHUiCi0KLVJSRUNPTU1FTkRTXyR7UE59LWRyaXZlcnMgPSAiJHtQTn0tcmFkZW9uICR7UE59LW5vdXZlYXUgJHtQTn0tb21hcCAke1BOfS1pbnRlbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7UE59LWV4eW5vcyAke1BOfS1mcmVlZHJlbm8gJHtQTn0tYW1kZ3B1IgotCi1GSUxFU18ke1BOfS10ZXN0cyA9ICIke2JpbmRpcn0vKiIKLUZJTEVTXyR7UE59LXJhZGVvbiA9ICIke2xpYmRpcn0vbGliZHJtX3JhZGVvbi5zby4qIgotRklMRVNfJHtQTn0tbm91dmVhdSA9ICIke2xpYmRpcn0vbGliZHJtX25vdXZlYXUuc28uKiIKLUZJTEVTXyR7UE59LW9tYXAgPSAiJHtsaWJkaXJ9L2xpYmRybV9vbWFwLnNvLioiCi1GSUxFU18ke1BOfS1pbnRlbCA9ICIke2xpYmRpcn0vbGliZHJtX2ludGVsLnNvLioiCi1GSUxFU18ke1BOfS1leHlub3MgPSAiJHtsaWJkaXJ9L2xpYmRybV9leHlub3Muc28uKiIKLUZJTEVTXyR7UE59LWttcyA9ICIke2xpYmRpcn0vbGlia21zKi5zby4qIgotRklMRVNfJHtQTn0tZnJlZWRyZW5vID0gIiR7bGliZGlyfS9saWJkcm1fZnJlZWRyZW5vLnNvLioiCi1GSUxFU18ke1BOfS1hbWRncHUgPSAiJHtsaWJkaXJ9L2xpYmRybV9hbWRncHUuc28uKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybV8yLjQuNzAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm1fMi40LjcwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyYjUyODIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm1fMi40LjcwLmJiCkBAIC0wLDAgKzEsNDcgQEAKK1NVTU1BUlkgPSAiVXNlcnNwYWNlIGludGVyZmFjZSB0byB0aGUga2VybmVsIERSTSBzZXJ2aWNlcyIKK0RFU0NSSVBUSU9OID0gIlRoZSBydW50aW1lIGxpYnJhcnkgZm9yIGFjY2Vzc2luZyB0aGUga2VybmVsIERSTSBzZXJ2aWNlcy4gIERSTSBcCitzdGFuZHMgZm9yIFwiRGlyZWN0IFJlbmRlcmluZyBNYW5hZ2VyXCIsIHdoaWNoIGlzIHRoZSBrZXJuZWwgcG9ydGlvbiBvZiB0aGUgXAorXCJEaXJlY3QgUmVuZGVyaW5nIEluZnJhc3RydWN0dXJlXCIgKERSSSkuICBEUkkgaXMgcmVxdWlyZWQgZm9yIG1hbnkgaGFyZHdhcmUgXAorYWNjZWxlcmF0ZWQgT3BlbkdMIGRyaXZlcnMuIgorSE9NRVBBR0UgPSAiaHR0cDovL2RyaS5mcmVlZGVza3RvcC5vcmciCitTRUNUSU9OID0gIngxMS9iYXNlIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly94Zjg2ZHJtLmM7YmVnaW5saW5lPTk7ZW5kbGluZT0zMjttZDU9YzhhM2I5NjFhZjc2NjdjNTMwODE2NzYxZTk0OWRjNzEiCitQUk9WSURFUyA9ICJkcm0iCitERVBFTkRTID0gImxpYnB0aHJlYWQtc3R1YnMgdWRldiBsaWJwY2lhY2Nlc3MiCisKK1NSQ19VUkkgPSAiaHR0cDovL2RyaS5mcmVlZGVza3RvcC5vcmcvbGliZHJtLyR7QlB9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vaW5zdGFsbHRlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeF9PX0NMT0VYRUNfdW5kZWNsYXJlZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1BbGxvdy1leHBsaWNpdC1lbmFibGluZy1vZi1jdW5pdC10ZXN0cy5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOTIwOTU3Y2ZlMjVhODBlZmIwMmJlOWJkOTBiZjNjMWUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjE3ZDRiMzllZDk3Y2EwZTRjZmZhMGRiMDZmZjYwOWU2MTdiYWM5NDY0NmVjMzhlOGUwNTc5ZDUzMDU0MGU3YiIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWNhaXJvLXRlc3RzIFwKKyAgICAgICAgICAgICAgICAgLS13aXRob3V0LWN1bml0IFwKKyAgICAgICAgICAgICAgICAgLS1lbmFibGUtb21hcC1leHBlcmltZW50YWwtYXBpIFwKKyAgICAgICAgICAgICAgICAgLS1lbmFibGUtaW5zdGFsbC10ZXN0LXByb2dyYW1zIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLW1hbnBhZ2VzIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXZhbGdyaW5kIFwKKyAgICAgICAgICAgICAgICAiCisKK0FMTE9XX0VNUFRZXyR7UE59LWRyaXZlcnMgPSAiMSIKK1BBQ0tBR0VTID0rICIke1BOfS10ZXN0cyAke1BOfS1kcml2ZXJzICR7UE59LXJhZGVvbiAke1BOfS1ub3V2ZWF1ICR7UE59LW9tYXAgXAorICAgICAgICAgICAgICR7UE59LWludGVsICR7UE59LWV4eW5vcyAke1BOfS1rbXMgJHtQTn0tZnJlZWRyZW5vICR7UE59LWFtZGdwdSIKKworUlJFQ09NTUVORFNfJHtQTn0tZHJpdmVycyA9ICIke1BOfS1yYWRlb24gJHtQTn0tbm91dmVhdSAke1BOfS1vbWFwICR7UE59LWludGVsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh5bm9zICR7UE59LWZyZWVkcmVubyAke1BOfS1hbWRncHUiCisKK0ZJTEVTXyR7UE59LXRlc3RzID0gIiR7YmluZGlyfS8qIgorRklMRVNfJHtQTn0tcmFkZW9uID0gIiR7bGliZGlyfS9saWJkcm1fcmFkZW9uLnNvLioiCitGSUxFU18ke1BOfS1ub3V2ZWF1ID0gIiR7bGliZGlyfS9saWJkcm1fbm91dmVhdS5zby4qIgorRklMRVNfJHtQTn0tb21hcCA9ICIke2xpYmRpcn0vbGliZHJtX29tYXAuc28uKiIKK0ZJTEVTXyR7UE59LWludGVsID0gIiR7bGliZGlyfS9saWJkcm1faW50ZWwuc28uKiIKK0ZJTEVTXyR7UE59LWV4eW5vcyA9ICIke2xpYmRpcn0vbGliZHJtX2V4eW5vcy5zby4qIgorRklMRVNfJHtQTn0ta21zID0gIiR7bGliZGlyfS9saWJrbXMqLnNvLioiCitGSUxFU18ke1BOfS1mcmVlZHJlbm8gPSAiJHtsaWJkaXJ9L2xpYmRybV9mcmVlZHJlbm8uc28uKiIKK0ZJTEVTXyR7UE59LWFtZGdwdSA9ICIke2xpYmRpcn0vbGliZHJtX2FtZGdwdS5zby4qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mb250Y29uZmlnL2ZvbnRjb25maWcvMDAwMS1SZXZlcnQtY2hhbmdlcy1tYWRlLXRvLUZjQ29uZmlnQXBwRm9udEFkZERpci1yZWNlbnRsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mb250Y29uZmlnL2ZvbnRjb25maWcvMDAwMS1SZXZlcnQtY2hhbmdlcy1tYWRlLXRvLUZjQ29uZmlnQXBwRm9udEFkZERpci1yZWNlbnRsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMmZkNWQ0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZm9udGNvbmZpZy9mb250Y29uZmlnLzAwMDEtUmV2ZXJ0LWNoYW5nZXMtbWFkZS10by1GY0NvbmZpZ0FwcEZvbnRBZGREaXItcmVjZW50bC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzMiArMCwwIEBACi1Gcm9tIDQ2ZWM2YTUyZDRjYzQ0N2NjM2ZmNGExM2IyMDY3ZWNiNzZjOWRiMmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBCZWhkYWQgRXNmYWhib2QgPGJlaGRhZEBiZWhkYWQub3JnPgotRGF0ZTogRnJpLCAyNiBKdW4gMjAxNSAxNzowMjoxMyAtMDcwMAotU3ViamVjdDogW1BBVENIXSBSZXZlcnQgY2hhbmdlcyBtYWRlIHRvIEZjQ29uZmlnQXBwRm9udEFkZERpcigpIHJlY2VudGx5Ci0KLUluIDMyYWM3Yzc1ZThkYjAxMzVlZjM3Y2Y4NmY5MmQ4YjliZTAwMGM4YmIgdGhlIGJlaGF2aW9yIG9mCi1GY0NvbmZpZ0FwcEZvbnRBZGRGaWxlL0RpcigpIHdlcmUgY2hhbmdlZCB0byByZXR1cm4gZmFsc2UKLWlmIG5vdCBmb250cyB3ZXJlIGZvdW5kLiAgV2hpbGUgdGhpcyBpcyB3ZWxsZGVmaW5lZCBhbmQgdXNlZnVsCi1mb3IgQWRkRmlsZSgpLCBpdCdzIHF1aXRlIHByb2JsZW1hdGljIGZvciBBZGREaXIoKS4gIEZvciBleGFtcGxlLAotaWYgdGhlIGRpcmVjdG9yeSBpcyBlbXB0eSwgaXMgdGhhdCBhIGZhaWx1cmUgb3Igc3VjY2Vzcz8gIFdvcnNlLAotdGhlIGZhbHNlIHZhbHVlIGZyb20gQWRkRGlyKCkgd2FzIGJlaW5nIHByb3BhZ2F0ZWQgYWxsIHRoZSB3YXkKLXRvIEZjSW5pdCgpIHJldHVybmluZyBmYWxzZSBub3cuICBUaGlzIG9ubHkgaGFwcGVuZWQgdXBvbiBtZW1vcnkKLWFsbG9jYXRpb24gZmFpbHVyZSBiZWZvcmUsIGFuZCBzb21lIGNsaWVudHMgYXNzZXJ0IHRoYXQgRmNJbml0KCkKLWlzIHN1Y2Nlc3NmdWwuCi0KLVdpdGggdGhpcyBjaGFuZ2UsIEFkZERpcigpIGlzIHJldmVydGVkIGJhY2sgdG8gd2hhdCBpdCB3YXMuCi1BZGRGb250KCkgY2hhbmdlICh3aGljaCB3YXMgYWN0dWFsbHkgaW4gZmNkaXIuYykgZnJvbSB0aGUgb3JpZ2luYWwKLWNvbW1pdCBpcyBsZWZ0IGluLgotCi1VcHN0cmVhbS1TdGF0dXM6IGJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IExpIFpob3UgPGxpLnpob3VAd2luZHJpdmVyLmNvbT4KLS0tLQotIGRvYy9mY2NvbmZpZy5mbmNzIHwgICAgMiArLQotIHNyYy9mY2NmZy5jICAgICAgIHwgICAyOSArKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQotIHNyYy9mY2ludC5oICAgICAgIHwgICAgMyAtLS0KLSBzcmMvZmNzdHIuYyAgICAgICB8ICAgIDggLS0tLS0tLS0KLSA0IGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDMwIGRlbGV0aW9ucygtKQotCi1JbmRleDogZm9udGNvbmZpZy0yLjExLjk0L2RvYy9mY2NvbmZpZy5mbmNzCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZm9udGNvbmZpZy0yLjExLjk0Lm9yaWcvZG9jL2ZjY29uZmlnLmZuY3MKLSsrKyBmb250Y29uZmlnLTIuMTEuOTQvZG9jL2ZjY29uZmlnLmZuY3MKLUBAIC0yMzIsNyArMjMyLDcgQEAgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBpcyB1c2VkLgotIEBERVNDQAotIFNjYW5zIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5IGZvciBmb250cywgYWRkaW5nIGVhY2ggb25lIGZvdW5kIHRvIHRoZQotIGFwcGxpY2F0aW9uLXNwZWNpZmljIHNldCBvZiBmb250cy4gUmV0dXJucyBGY0ZhbHNlCi0taWYgdGhlIGZvbnRzIGNhbm5vdCBiZSBhZGRlZCAoZHVlIHRvIGFsbG9jYXRpb24gZmFpbHVyZSBvciBubyBmb250cyBmb3VuZCkuCi0raWYgdGhlIGZvbnRzIGNhbm5vdCBiZSBhZGRlZCAoZHVlIHRvIGFsbG9jYXRpb24gZmFpbHVyZSkuCi0gT3RoZXJ3aXNlIHJldHVybnMgRmNUcnVlLiBJZiA8cGFyYW1ldGVyPmNvbmZpZzwvcGFyYW1ldGVyPiBpcyBOVUxMLAotIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gaXMgdXNlZC4KLSBAQAotSW5kZXg6IGZvbnRjb25maWctMi4xMS45NC9zcmMvZmNjZmcuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZvbnRjb25maWctMi4xMS45NC5vcmlnL3NyYy9mY2NmZy5jCi0rKysgZm9udGNvbmZpZy0yLjExLjk0L3NyYy9mY2NmZy5jCi1AQCAtMzY4LDcgKzM2OCw2IEBAIEZjQ29uZmlnQWRkRGlyTGlzdCAoRmNDb25maWcgKmNvbmZpZywgRmMKLSAgICAgRmNTdHJMaXN0CSAgICAqZGlybGlzdDsKLSAgICAgRmNDaGFyOAkgICAgKmRpcjsKLSAgICAgRmNDYWNoZQkgICAgKmNhY2hlOwotLSAgICBGY0Jvb2wJICAgICByZXQgPSBGY0ZhbHNlOwotIAotICAgICBkaXJsaXN0ID0gRmNTdHJMaXN0Q3JlYXRlIChkaXJTZXQpOwotICAgICBpZiAoIWRpcmxpc3QpCi1AQCAtMzgzLDEwICszODIsOSBAQCBGY0NvbmZpZ0FkZERpckxpc3QgKEZjQ29uZmlnICpjb25maWcsIEZjCi0gCSAgICBjb250aW51ZTsKLSAJRmNDb25maWdBZGRDYWNoZSAoY29uZmlnLCBjYWNoZSwgc2V0LCBkaXJTZXQpOwotIAlGY0RpckNhY2hlVW5sb2FkIChjYWNoZSk7Ci0tCXJldCA9IEZjVHJ1ZTsKLSAgICAgfQotICAgICBGY1N0ckxpc3REb25lIChkaXJsaXN0KTsKLS0gICAgcmV0dXJuIHJldDsKLSsgICAgcmV0dXJuIEZjVHJ1ZTsKLSB9Ci0gCi0gLyoKLUBAIC0yMTk5LDcgKzIxOTcsNiBAQCBGY0NvbmZpZ0FwcEZvbnRBZGRGaWxlIChGY0NvbmZpZyAgICAqY29uCi0gICAgIEZjU3RyU2V0CSpzdWJkaXJzOwotICAgICBGY1N0ckxpc3QJKnN1Ymxpc3Q7Ci0gICAgIEZjQ2hhcjgJKnN1YmRpcjsKLS0gICAgRmNCb29sCSByZXQgPSBGY0ZhbHNlOwotIAotICAgICBpZiAoIWNvbmZpZykKLSAgICAgewotQEAgLTIyMjksMTkgKzIyMjYsMTYgQEAgRmNDb25maWdBcHBGb250QWRkRmlsZSAoRmNDb25maWcgICAgKmNvbgotIAlGY1N0clNldERlc3Ryb3kgKHN1YmRpcnMpOwotIAlyZXR1cm4gRmNGYWxzZTsKLSAgICAgfQotLSAgICBpZiAoc3ViZGlycy0+bnVtID09IDApCi0tCXJldCA9IEZjVHJ1ZTsKLS0gICAgZWxzZSBpZiAoKHN1Ymxpc3QgPSBGY1N0ckxpc3RDcmVhdGUgKHN1YmRpcnMpKSkKLSsgICAgaWYgKChzdWJsaXN0ID0gRmNTdHJMaXN0Q3JlYXRlIChzdWJkaXJzKSkpCi0gICAgIHsKLSAJd2hpbGUgKChzdWJkaXIgPSBGY1N0ckxpc3ROZXh0IChzdWJsaXN0KSkpCi0gCXsKLS0JICAgIGlmIChGY0NvbmZpZ0FwcEZvbnRBZGREaXIgKGNvbmZpZywgc3ViZGlyKSkKLS0JCXJldCA9IEZjVHJ1ZTsKLSsJICAgIEZjQ29uZmlnQXBwRm9udEFkZERpciAoY29uZmlnLCBzdWJkaXIpOwotIAl9Ci0gCUZjU3RyTGlzdERvbmUgKHN1Ymxpc3QpOwotICAgICB9Ci0gICAgIEZjU3RyU2V0RGVzdHJveSAoc3ViZGlycyk7Ci0tICAgIHJldHVybiByZXQ7Ci0rICAgIHJldHVybiBGY1RydWU7Ci0gfQotIAotIEZjQm9vbAotQEAgLTIyNTAsNyArMjI0NCw2IEBAIEZjQ29uZmlnQXBwRm9udEFkZERpciAoRmNDb25maWcJICAgICpjb24KLSB7Ci0gICAgIEZjRm9udFNldAkqc2V0OwotICAgICBGY1N0clNldAkqZGlyczsKLS0gICAgRmNCb29sCSByZXQgPSBGY1RydWU7Ci0gCi0gICAgIGlmICghY29uZmlnKQotICAgICB7Ci1AQCAtMjI2OSw4ICsyMjYyLDggQEAgRmNDb25maWdBcHBGb250QWRkRGlyIChGY0NvbmZpZwkgICAgKmNvbgotIAlzZXQgPSBGY0ZvbnRTZXRDcmVhdGUgKCk7Ci0gCWlmICghc2V0KQotIAl7Ci0tCSAgICByZXQgPSBGY0ZhbHNlOwotLQkgICAgZ290byBiYWlsOwotKwkgICAgRmNTdHJTZXREZXN0cm95IChkaXJzKTsKLSsJICAgIHJldHVybiBGY0ZhbHNlOwotIAl9Ci0gCUZjQ29uZmlnU2V0Rm9udHMgKGNvbmZpZywgc2V0LCBGY1NldEFwcGxpY2F0aW9uKTsKLSAgICAgfQotQEAgLTIyNzgsMTAgKzIyNzEsMTIgQEAgRmNDb25maWdBcHBGb250QWRkRGlyIChGY0NvbmZpZwkgICAgKmNvbgotICAgICBGY1N0clNldEFkZEZpbGVuYW1lIChkaXJzLCBkaXIpOwotIAotICAgICBpZiAoIUZjQ29uZmlnQWRkRGlyTGlzdCAoY29uZmlnLCBGY1NldEFwcGxpY2F0aW9uLCBkaXJzKSkKLS0JcmV0ID0gRmNGYWxzZTsKLS1iYWlsOgotKyAgICB7Ci0rCUZjU3RyU2V0RGVzdHJveSAoZGlycyk7Ci0rCXJldHVybiBGY0ZhbHNlOwotKyAgICB9Ci0gICAgIEZjU3RyU2V0RGVzdHJveSAoZGlycyk7Ci0tICAgIHJldHVybiByZXQ7Ci0rICAgIHJldHVybiBGY1RydWU7Ci0gfQotIAotIHZvaWQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZm9udGNvbmZpZy9mb250Y29uZmlnXzIuMTEuOTQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRjb25maWcvZm9udGNvbmZpZ18yLjExLjk0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDI3OTQ3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZm9udGNvbmZpZy9mb250Y29uZmlnXzIuMTEuOTQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1TVU1NQVJZID0gIkdlbmVyaWMgZm9udCBjb25maWd1cmF0aW9uIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJGb250Y29uZmlnIGlzIGEgZm9udCBjb25maWd1cmF0aW9uIGFuZCBjdXN0b21pemF0aW9uIGxpYnJhcnksIHdoaWNoIFwKLWRvZXMgbm90IGRlcGVuZCBvbiB0aGUgWCBXaW5kb3cgU3lzdGVtLiBJdCBpcyBkZXNpZ25lZCB0byBsb2NhdGUgXAotZm9udHMgd2l0aGluIHRoZSBzeXN0ZW0gYW5kIHNlbGVjdCB0aGVtIGFjY29yZGluZyB0byByZXF1aXJlbWVudHMgXAotc3BlY2lmaWVkIGJ5IGFwcGxpY2F0aW9ucy4gXAotRm9udGNvbmZpZyBpcyBub3QgYSByYXN0ZXJpemF0aW9uIGxpYnJhcnksIG5vciBkb2VzIGl0IGltcG9zZSBhIFwKLXBhcnRpY3VsYXIgcmFzdGVyaXphdGlvbiBsaWJyYXJ5IG9uIHRoZSBhcHBsaWNhdGlvbi4gVGhlIFgtc3BlY2lmaWMgXAotbGlicmFyeSAnWGZ0JyB1c2VzIGZvbnRjb25maWcgYWxvbmcgd2l0aCBmcmVldHlwZSB0byBzcGVjaWZ5IGFuZCBcCi1yYXN0ZXJpemUgZm9udHMuIgotCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZvbnRjb25maWcub3JnIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1mb250Y29uZmlnIgotCi1MSUNFTlNFID0gIk1JVC1zdHlsZSAmIE1JVCAmIFBEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9N2EwNDQ5ZTliYzUzNzA0MDJhOTRjMDAyMDRiZWNhM2QgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2ZjZnJlZXR5cGUuYztlbmRsaW5lPTQ1O21kNT01ZDk1MTNlMzE5NmExZmJmZGZhOTQwNTFjMDlkZmM4NCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZmNjYWNoZS5jO2JlZ2lubGluZT0xMTk5O2VuZGxpbmU9MTIxNDttZDU9MDMyNmNmZWI0YTczMzNkZDRkZDI1ZmJiYzRiOWYyN2YiCi0KLVNFQ1RJT04gPSAibGlicyIKLQotREVQRU5EUyA9ICJleHBhdCBmcmVldHlwZSB6bGliIgotCi1TUkNfVVJJID0gImh0dHA6Ly9mb250Y29uZmlnLm9yZy9yZWxlYXNlL2ZvbnRjb25maWctJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3JldmVydC1zdGF0aWMtcGtnY29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtUmV2ZXJ0LWNoYW5nZXMtbWFkZS10by1GY0NvbmZpZ0FwcEZvbnRBZGREaXItcmVjZW50bC5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI0NzliZTg3MGM3ZjgzZjE1Zjg3YmFjMDg1YjYxZDY0MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3M2Y2ZDMyM2M3YmNmYmRlMjVkNzgzOTc2NzUxOTFkNTViOGY0MTM5MTMyYzZhOTQ0NDQxMGYzYTJkOGE5YTk1IgotCi1QQUNLQUdFUyA9KyAiZm9udGNvbmZpZy11dGlscyIKLUZJTEVTXyR7UE59ID0rICIke2RhdGFkaXJ9L3htbC8qIgotRklMRVNfZm9udGNvbmZpZy11dGlscyA9ICIke2JpbmRpcn0vKiIKLQotIyBXb3JrIGFyb3VuZCBwYXN0IGJyZWFrYWdlIGluIGRlYmlhbi5iYmNsYXNzCi1SUFJPVklERVNfZm9udGNvbmZpZy11dGlscyA9ICJsaWJmb250Y29uZmlnLXV0aWxzIgotUlJFUExBQ0VTX2ZvbnRjb25maWctdXRpbHMgPSAibGliZm9udGNvbmZpZy11dGlscyIKLVJDT05GTElDVFNfZm9udGNvbmZpZy11dGlscyA9ICJsaWJmb250Y29uZmlnLXV0aWxzIgotREVCSUFOX05PQVVUT05BTUVfZm9udGNvbmZpZy11dGlscyA9ICIxIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotRk9OVENPTkZJR19DQUNIRV9ESVIgPz0gIiR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUvZm9udGNvbmZpZyIKLQotIyBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBhZGRpdGlvbmFsIGRpcmVjdG9yaWVzCi0jIC91c3Ivc2hhcmUvZm9udHMgaXMgYWxyZWFkeSBpbmNsdWRlZCBieSBkZWZhdWx0ICh5b3UgY2FuIGNoYW5nZSBpdCB3aXRoIC0td2l0aC1kZWZhdWx0LWZvbnRzKQotRk9OVENPTkZJR19GT05UX0RJUlMgPz0gIm5vIgotCi1FWFRSQV9PRUNPTkYgPSAiIC0tZGlzYWJsZS1kb2NzIC0td2l0aC1kZWZhdWx0LWZvbnRzPSR7ZGF0YWRpcn0vZm9udHMgLS13aXRoLWNhY2hlLWRpcj0ke0ZPTlRDT05GSUdfQ0FDSEVfRElSfSAtLXdpdGgtYWRkLWZvbnRzPSR7Rk9OVENPTkZJR19GT05UX0RJUlN9IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZm9udGNvbmZpZy9mb250Y29uZmlnXzIuMTIuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZm9udGNvbmZpZy9mb250Y29uZmlnXzIuMTIuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTVmNTU4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mb250Y29uZmlnL2ZvbnRjb25maWdfMi4xMi4xLmJiCkBAIC0wLDAgKzEsNDkgQEAKK1NVTU1BUlkgPSAiR2VuZXJpYyBmb250IGNvbmZpZ3VyYXRpb24gbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIkZvbnRjb25maWcgaXMgYSBmb250IGNvbmZpZ3VyYXRpb24gYW5kIGN1c3RvbWl6YXRpb24gbGlicmFyeSwgd2hpY2ggXAorZG9lcyBub3QgZGVwZW5kIG9uIHRoZSBYIFdpbmRvdyBTeXN0ZW0uIEl0IGlzIGRlc2lnbmVkIHRvIGxvY2F0ZSBcCitmb250cyB3aXRoaW4gdGhlIHN5c3RlbSBhbmQgc2VsZWN0IHRoZW0gYWNjb3JkaW5nIHRvIHJlcXVpcmVtZW50cyBcCitzcGVjaWZpZWQgYnkgYXBwbGljYXRpb25zLiBcCitGb250Y29uZmlnIGlzIG5vdCBhIHJhc3Rlcml6YXRpb24gbGlicmFyeSwgbm9yIGRvZXMgaXQgaW1wb3NlIGEgXAorcGFydGljdWxhciByYXN0ZXJpemF0aW9uIGxpYnJhcnkgb24gdGhlIGFwcGxpY2F0aW9uLiBUaGUgWC1zcGVjaWZpYyBcCitsaWJyYXJ5ICdYZnQnIHVzZXMgZm9udGNvbmZpZyBhbG9uZyB3aXRoIGZyZWV0eXBlIHRvIHNwZWNpZnkgYW5kIFwKK3Jhc3Rlcml6ZSBmb250cy4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZm9udGNvbmZpZy5vcmciCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PWZvbnRjb25maWciCisKK0xJQ0VOU0UgPSAiTUlULXN0eWxlICYgTUlUICYgUEQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03YTA0NDllOWJjNTM3MDQwMmE5NGMwMDIwNGJlY2EzZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZmNmcmVldHlwZS5jO2VuZGxpbmU9NDU7bWQ1PTVkOTUxM2UzMTk2YTFmYmZkZmE5NDA1MWMwOWRmYzg0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9mY2NhY2hlLmM7YmVnaW5saW5lPTEzNjA7ZW5kbGluZT0xMzc1O21kNT0wMzI2Y2ZlYjRhNzMzM2RkNGRkMjVmYmJjNGI5ZjI3ZiIKKworU0VDVElPTiA9ICJsaWJzIgorCitERVBFTkRTID0gImV4cGF0IGZyZWV0eXBlIHpsaWIiCisKK1NSQ19VUkkgPSAiaHR0cDovL2ZvbnRjb25maWcub3JnL3JlbGVhc2UvZm9udGNvbmZpZy0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcmV2ZXJ0LXN0YXRpYy1wa2djb25maWcucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiY2U1NWU1MjVjMzcxNDdlZWUxNGNjMmRlNmNjMDlmNmMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTlmNDJkMDM5NDlmOTQ4YTNhNGY3NjIyODdkYmMxNmU1M2E5MjdjOTFhMDdlZTY0MjA3ZWJkOTBhOWU1ZTI5MiIKKworUEFDS0FHRVMgPSsgImZvbnRjb25maWctdXRpbHMiCitGSUxFU18ke1BOfSA9KyAiJHtkYXRhZGlyfS94bWwvKiIKK0ZJTEVTX2ZvbnRjb25maWctdXRpbHMgPSAiJHtiaW5kaXJ9LyoiCisKKyMgV29yayBhcm91bmQgcGFzdCBicmVha2FnZSBpbiBkZWJpYW4uYmJjbGFzcworUlBST1ZJREVTX2ZvbnRjb25maWctdXRpbHMgPSAibGliZm9udGNvbmZpZy11dGlscyIKK1JSRVBMQUNFU19mb250Y29uZmlnLXV0aWxzID0gImxpYmZvbnRjb25maWctdXRpbHMiCitSQ09ORkxJQ1RTX2ZvbnRjb25maWctdXRpbHMgPSAibGliZm9udGNvbmZpZy11dGlscyIKK0RFQklBTl9OT0FVVE9OQU1FX2ZvbnRjb25maWctdXRpbHMgPSAiMSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0ZPTlRDT05GSUdfQ0FDSEVfRElSID89ICIke2xvY2Fsc3RhdGVkaXJ9L2NhY2hlL2ZvbnRjb25maWciCisKKyMgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgYWRkaXRpb25hbCBkaXJlY3RvcmllcworIyAvdXNyL3NoYXJlL2ZvbnRzIGlzIGFscmVhZHkgaW5jbHVkZWQgYnkgZGVmYXVsdCAoeW91IGNhbiBjaGFuZ2UgaXQgd2l0aCAtLXdpdGgtZGVmYXVsdC1mb250cykKK0ZPTlRDT05GSUdfRk9OVF9ESVJTID89ICJubyIKKworRVhUUkFfT0VDT05GID0gIiAtLWRpc2FibGUtZG9jcyAtLXdpdGgtZGVmYXVsdC1mb250cz0ke2RhdGFkaXJ9L2ZvbnRzIC0td2l0aC1jYWNoZS1kaXI9JHtGT05UQ09ORklHX0NBQ0hFX0RJUn0gLS13aXRoLWFkZC1mb250cz0ke0ZPTlRDT05GSUdfRk9OVF9ESVJTfSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZyZWV0eXBlL2ZyZWV0eXBlXzIuNi4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mcmVldHlwZS9mcmVldHlwZV8yLjYuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2VkOTA3MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZyZWV0eXBlL2ZyZWV0eXBlXzIuNi4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotU1VNTUFSWSA9ICJGcmVldHlwZSBmb250IHJlbmRlcmluZyBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiRnJlZVR5cGUgaXMgYSBzb2Z0d2FyZSBmb250IGVuZ2luZSB0aGF0IGlzIGRlc2lnbmVkIHRvIGJlIHNtYWxsLCBlZmZpY2llbnQsIFwKLWhpZ2hseSBjdXN0b21pemFibGUsIGFuZCBwb3J0YWJsZSB3aGlsZSBjYXBhYmxlIG9mIHByb2R1Y2luZyBoaWdoLXF1YWxpdHkgb3V0cHV0IChnbHlwaCBcCi1pbWFnZXMpLiBJdCBjYW4gYmUgdXNlZCBpbiBncmFwaGljcyBsaWJyYXJpZXMsIGRpc3BsYXkgc2VydmVycywgZm9udCBjb252ZXJzaW9uIHRvb2xzLCB0ZXh0IFwKLWltYWdlIGdlbmVyYXRpb24gdG9vbHMsIGFuZCBtYW55IG90aGVyIHByb2R1Y3RzIGFzIHdlbGwuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVldHlwZS5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL3NhdmFubmFoLm5vbmdudS5vcmcvYnVncy8/Z3JvdXA9ZnJlZXR5cGUiCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiRnJlZVR5cGUgfCBHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2NzL0xJQ0VOU0UuVFhUO21kNT00YWY2MjIxNTA2ZjIwMjc3NGVmNzRmNjQ5MzI4NzhhMSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2NzL0ZUTC5UWFQ7bWQ1PWQ0NzllODM3OTdmNjk5ZmU4NzNiMzhkYWRkMGZjZDRjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvY3MvR1BMdjIuVFhUO21kNT04ZWYzODA0NzZmNjQyYzIwZWJmNDBmZWNiMGFkZDJlYyIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vZnJlZXR5cGUvZnJlZXR5cGUtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly91c2UtcmlnaHQtbGlidG9vbC5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjAwMzdiMjVhOGMwOTBiYzhhMTIxOGU4NjdiMzJiZWIxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM3MWU3MDdhYTUyMmFjZjViMTVjZTkzZjExMTgzYzcyNWI4ZWQxZWU4NTQ2ZDdiM2FmNTQ5ODYzMDQ1ODYzYTIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBiaW5jb25maWctZGlzYWJsZWQgbXVsdGlsaWJfaGVhZGVyCi0KLSMgQWRhcHQgYXV0b3Rvb2xzIHRvIHdvcmsgd2l0aCB0aGUgbWluaW1hbCBhdXRvY29uZiB1c2FnZSBpbiBmcmVldHlwZQotQVVUT1RPT0xTX1NDUklQVF9QQVRIID0gIiR7U30vYnVpbGRzL3VuaXgiCi1DT05GSUdVUkVfU0NSSVBUID0gIiR7U30vY29uZmlndXJlIgotRVhUUkFfQVVUT1JFQ09ORiArPSAiLS1leGNsdWRlPWF1dG9oZWFkZXIgLS1leGNsdWRlPWF1dG9tYWtlIgotCi1QQUNLQUdFQ09ORklHID8/PSAiemxpYiIKLQotUEFDS0FHRUNPTkZJR1tiemlwMl0gPSAiLS13aXRoLWJ6aXAyLC0td2l0aG91dC1iemlwMixiemlwMiIKLSMgaGFyZmJ1enogcmVzdWx0cyBpbiBhIGNpcmN1bGFyIGRlcGVuZGVuY3kgc28gZW5hYmxpbmcgaXMgbm9uLXRyaXZpYWwKLVBBQ0tBR0VDT05GSUdbaGFyZmJ1enpdID0gIi0td2l0aC1oYXJmYnV6eiwtLXdpdGhvdXQtaGFyZmJ1enosaGFyZmJ1enoiCi1QQUNLQUdFQ09ORklHW3BpeG1hcF0gPSAiLS13aXRoLXBuZywtLXdpdGhvdXQtcG5nLGxpYnBuZyIKLVBBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWIsLS13aXRob3V0LXpsaWIsemxpYiIKLQotRVhUUkFfT0VDT05GID0gIkNDX0JVSUxEPScke0JVSUxEX0NDfSciCi0KLVRBUkdFVF9DUFBGTEFHUyArPSAiLURfRklMRV9PRkZTRVRfQklUUz02NCIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0Jb2VfbXVsdGlsaWJfaGVhZGVyIGZyZWV0eXBlMi9mcmVldHlwZS9jb25maWcvZnRjb25maWcuaAotfQotCi1CSU5DT05GSUcgPSAiJHtiaW5kaXJ9L2ZyZWV0eXBlLWNvbmZpZyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZyZWV0eXBlL2ZyZWV0eXBlXzIuNi41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mcmVldHlwZS9mcmVldHlwZV8yLjYuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2RkZTNhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mcmVldHlwZS9mcmVldHlwZV8yLjYuNS5iYgpAQCAtMCwwICsxLDQ5IEBACitTVU1NQVJZID0gIkZyZWV0eXBlIGZvbnQgcmVuZGVyaW5nIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJGcmVlVHlwZSBpcyBhIHNvZnR3YXJlIGZvbnQgZW5naW5lIHRoYXQgaXMgZGVzaWduZWQgdG8gYmUgc21hbGwsIGVmZmljaWVudCwgXAoraGlnaGx5IGN1c3RvbWl6YWJsZSwgYW5kIHBvcnRhYmxlIHdoaWxlIGNhcGFibGUgb2YgcHJvZHVjaW5nIGhpZ2gtcXVhbGl0eSBvdXRwdXQgKGdseXBoIFwKK2ltYWdlcykuIEl0IGNhbiBiZSB1c2VkIGluIGdyYXBoaWNzIGxpYnJhcmllcywgZGlzcGxheSBzZXJ2ZXJzLCBmb250IGNvbnZlcnNpb24gdG9vbHMsIHRleHQgXAoraW1hZ2UgZ2VuZXJhdGlvbiB0b29scywgYW5kIG1hbnkgb3RoZXIgcHJvZHVjdHMgYXMgd2VsbC4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWV0eXBlLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vc2F2YW5uYWgubm9uZ251Lm9yZy9idWdzLz9ncm91cD1mcmVldHlwZSIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJGcmVlVHlwZSB8IEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvY3MvTElDRU5TRS5UWFQ7bWQ1PTRhZjYyMjE1MDZmMjAyNzc0ZWY3NGY2NDkzMjg3OGExIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvY3MvRlRMLlRYVDttZDU9MTNiMjU0MTMyNzRjOWIzYjA5YjYzZTQwMjgyMTZmZjQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jcy9HUEx2Mi5UWFQ7bWQ1PThlZjM4MDQ3NmY2NDJjMjBlYmY0MGZlY2IwYWRkMmVjIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9mcmVldHlwZS9mcmVldHlwZS0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL3VzZS1yaWdodC1saWJ0b29sLnBhdGNoIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9mcmVldHlwZS9maWxlcy9mcmVldHlwZTIvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNmEzODY5NjRlMThiYTI4Y2I5MzM3MGU1N2ExOTAzMWIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTIwYTZlMTQwMDc5OGZkNWUzZDgzMWRkODIxYjYxYzM1YjFmOWE2NDY1ZDZiMThhNTNhOWRmNGNmNDQxYWNmMCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZy1kaXNhYmxlZCBtdWx0aWxpYl9oZWFkZXIKKworIyBBZGFwdCBhdXRvdG9vbHMgdG8gd29yayB3aXRoIHRoZSBtaW5pbWFsIGF1dG9jb25mIHVzYWdlIGluIGZyZWV0eXBlCitBVVRPVE9PTFNfU0NSSVBUX1BBVEggPSAiJHtTfS9idWlsZHMvdW5peCIKK0NPTkZJR1VSRV9TQ1JJUFQgPSAiJHtTfS9jb25maWd1cmUiCitFWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YXV0b2hlYWRlciAtLWV4Y2x1ZGU9YXV0b21ha2UiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJ6bGliIgorCitQQUNLQUdFQ09ORklHW2J6aXAyXSA9ICItLXdpdGgtYnppcDIsLS13aXRob3V0LWJ6aXAyLGJ6aXAyIgorIyBoYXJmYnV6eiByZXN1bHRzIGluIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBzbyBlbmFibGluZyBpcyBub24tdHJpdmlhbAorUEFDS0FHRUNPTkZJR1toYXJmYnV6el0gPSAiLS13aXRoLWhhcmZidXp6LC0td2l0aG91dC1oYXJmYnV6eixoYXJmYnV6eiIKK1BBQ0tBR0VDT05GSUdbcGl4bWFwXSA9ICItLXdpdGgtcG5nLC0td2l0aG91dC1wbmcsbGlicG5nIgorUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYiwtLXdpdGhvdXQtemxpYix6bGliIgorCitFWFRSQV9PRUNPTkYgPSAiQ0NfQlVJTEQ9JyR7QlVJTERfQ0N9JyIKKworVEFSR0VUX0NQUEZMQUdTICs9ICItRF9GSUxFX09GRlNFVF9CSVRTPTY0IgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlvZV9tdWx0aWxpYl9oZWFkZXIgZnJlZXR5cGUyL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oCit9CisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vZnJlZXR5cGUtY29uZmlnIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2dsZXcvZ2xld18xLjEzLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2dsZXcvZ2xld18xLjEzLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyNWM0MDUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9nbGV3L2dsZXdfMS4xMy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotU1VNTUFSWSA9ICJPcGVuR0wgZXh0ZW5zaW9uIGxvYWRpbmcgbGlicmFyeSIKLURFU0NSSVBUSU9OID0gIlRoZSBPcGVuR0wgRXh0ZW5zaW9uIFdyYW5nbGVyIExpYnJhcnkgKEdMRVcpIGlzIGEgY3Jvc3MtcGxhdGZvcm0gb3Blbi1zb3VyY2UgQy9DKysgZXh0ZW5zaW9uIGxvYWRpbmcgbGlicmFyeS4iCi1IT01FUEFHRSA9ICJodHRwOi8vZ2xldy5zb3VyY2Vmb3JnZS5uZXQvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3RyYWNrZXIvP2dyb3VwX2lkPTY3NTg2IgotU0VDVElPTiA9ICJ4MTEiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0yYWMyNTE1NThkZTY4NWM2Yjk0NzhkODliZTMxNDljMiIKLQotREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYngxMSB2aXJ0dWFsL2xpYmdsIGxpYmdsdSBsaWJ4ZXh0IGxpYnhpIGxpYnhtdSIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC9nbGV3L2dsZXcvJHtQVn0vZ2xldy0ke1BWfS50Z3ogXAotICAgICAgICAgICBmaWxlOi8vbm8tc3RyaXAucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3Y2JhZGEzMTY2ZDJhYWRmYzQxNjljNDI4MzcwMTA2NiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhYTI1ZGM0OGVkODRiMGI2NGI4ZDQxY2RkNDJjOGY0MGYxNDljMzdmYTJmZmEzOWNkOTdmNDJjNzhkMTI4YmM3IgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9nbGV3L2ZpbGVzL2dsZXciCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvZ2xldy8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgotCi1pbmhlcml0IGxpYl9wYWNrYWdlIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotIyBPdmVycmlkZSBTWVNURU0gdG8gYXZvaWQgY2FsbGluZyBjb25maWcuZ3Vlc3MsIHdlJ3JlIGNyb3NzLWNvbXBpbGluZy4gIFBhc3MKLSMgb3VyIENGTEFHUyB2aWEgUE9QVCBhcyB0aGF0J3MgdGhlIG9wdGltaXNhdGlvbiB2YXJpYWJsZSBhbmQgc2FmZWx5Ci0jIG92ZXJ3cml0dGVuLgotRVhUUkFfT0VNQUtFID0gIlNZU1RFTT0nbGludXgnIFwKLSAgICAgICAgICAgICAgICBDQz0nJHtDQ30nIExEPScke0NDfScgU1RSSVA9JycgXAotICAgICAgICAgICAgICAgIExERkxBR1MuRVhUUkE9JyR7TERGTEFHU30nIFwKLSAgICAgICAgICAgICAgICBQT1BUPScke0NGTEFHU30nIFwKLSAgICAgICAgICAgICAgICBHTEVXX1BSRUZJWD0nJHtwcmVmaXh9JyBCSU5ESVI9JyR7YmluZGlyfScgXAotICAgICAgICAgICAgICAgIExJQkRJUj0nJHtsaWJkaXJ9JyBJTkNESVI9JyR7aW5jbHVkZWRpcn0vR0wnIgotCi1kb19jb21waWxlKCkgewotCW9lX3J1bm1ha2UKLX0KLQotZG9faW5zdGFsbCgpIHsKLQlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwuYWxsCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2dsZXcvZ2xld18yLjAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZ2xldy9nbGV3XzIuMC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4OWRkN2MKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2dsZXcvZ2xld18yLjAuMC5iYgpAQCAtMCwwICsxLDQwIEBACitTVU1NQVJZID0gIk9wZW5HTCBleHRlbnNpb24gbG9hZGluZyBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiVGhlIE9wZW5HTCBFeHRlbnNpb24gV3JhbmdsZXIgTGlicmFyeSAoR0xFVykgaXMgYSBjcm9zcy1wbGF0Zm9ybSBvcGVuLXNvdXJjZSBDL0MrKyBleHRlbnNpb24gbG9hZGluZyBsaWJyYXJ5LiIKK0hPTUVQQUdFID0gImh0dHA6Ly9nbGV3LnNvdXJjZWZvcmdlLm5ldC8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvdHJhY2tlci8/Z3JvdXBfaWQ9Njc1ODYiCitTRUNUSU9OID0gIngxMSIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTJhYzI1MTU1OGRlNjg1YzZiOTQ3OGQ4OWJlMzE0OWMyIgorCitERVBFTkRTID0gInZpcnR1YWwvbGlieDExIHZpcnR1YWwvbGliZ2wgbGliZ2x1IGxpYnhleHQgbGlieGkgbGlieG11IgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0L2dsZXcvZ2xldy8ke1BWfS9nbGV3LSR7UFZ9LnRneiBcCisgICAgICAgICAgIGZpbGU6Ly9uby1zdHJpcC5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gIjJhMmNkN2M5OGYxMzg1NGQyZmNkZGFlMGQyYjIwNDExIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImM1NzJjMzBhNGU2NDY4OWMzNDJiYTE2MjQxMzBhYzk4OTM2ZDdhZjkwYzMxMDNmOWNlMTJiOGEwYzU3MzY3NjQiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2dsZXcvZmlsZXMvZ2xldyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9nbGV3Lyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKS8iCisKK2luaGVyaXQgbGliX3BhY2thZ2UgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCisjIE92ZXJyaWRlIFNZU1RFTSB0byBhdm9pZCBjYWxsaW5nIGNvbmZpZy5ndWVzcywgd2UncmUgY3Jvc3MtY29tcGlsaW5nLiAgUGFzcworIyBvdXIgQ0ZMQUdTIHZpYSBQT1BUIGFzIHRoYXQncyB0aGUgb3B0aW1pc2F0aW9uIHZhcmlhYmxlIGFuZCBzYWZlbHkKKyMgb3ZlcndyaXR0ZW4uCitFWFRSQV9PRU1BS0UgPSAiU1lTVEVNPSdsaW51eCcgXAorICAgICAgICAgICAgICAgIENDPScke0NDfScgTEQ9JyR7Q0N9JyBTVFJJUD0nJyBcCisgICAgICAgICAgICAgICAgTERGTEFHUy5FWFRSQT0nJHtMREZMQUdTfScgXAorICAgICAgICAgICAgICAgIFBPUFQ9JyR7Q0ZMQUdTfScgXAorICAgICAgICAgICAgICAgIEdMRVdfUFJFRklYPScke3ByZWZpeH0nIEJJTkRJUj0nJHtiaW5kaXJ9JyBcCisgICAgICAgICAgICAgICAgTElCRElSPScke2xpYmRpcn0nIElOQ0RJUj0nJHtpbmNsdWRlZGlyfS9HTCcgUEtHRElSPScke2xpYmRpcn0vcGtnY29uZmlnJyIKKworZG9fY29tcGlsZSgpIHsKKwlvZV9ydW5tYWtlCit9CisKK2RvX2luc3RhbGwoKSB7CisJb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsLmFsbAorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9oYXJmYnV6ei9oYXJmYnV6el8xLjIuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvaGFyZmJ1enovaGFyZmJ1enpfMS4yLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmZTg4NWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9oYXJmYnV6ei9oYXJmYnV6el8xLjIuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLVNVTU1BUlkgPSAiVGV4dCBzaGFwaW5nIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJIYXJmQnV6eiBpcyBhbiBPcGVuVHlwZSB0ZXh0IHNoYXBpbmcgZW5naW5lLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvSGFyZkJ1enoiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PUhhcmZCdXp6IgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lMDIxZGQ2ZGRhNmZmMWU2YjEwNDQwMDJmYzY2MmI5YiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvaGItdWNkbi9DT1BZSU5HO21kNT05OTRiYTBmMTI5NWYxNWI0YmRhNDk5OWE1YmJlZGRlZiBcCi0iCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgY2Fpcm8gZm9udGNvbmZpZyBmcmVldHlwZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS9oYXJmYnV6ei9yZWxlYXNlLyR7QlB9LnRhci5iejIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkYThkOTdlMjYyZTZlZjgyODhlMWFlNzYzNjk0MjFiZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4MjE2ZDI0MDRhYWFiN2ZkZTg3YmUwMzY1YTkwZDY0YWE2YzU1OTI4ZTEwNDU1N2NmY2IzN2I1NGEwOTZjYjhjIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgbGliX3BhY2thZ2UKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImljdSIKLVBBQ0tBR0VDT05GSUdbaWN1XSA9ICItLXdpdGgtaWN1LC0td2l0aG91dC1pY3UsaWN1IgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLXdpdGgtY2Fpcm8gXAotICAgIC0td2l0aC1mb250Y29uZmlnIFwKLSAgICAtLXdpdGgtZnJlZXR5cGUgXAotICAgIC0td2l0aC1nbGliIFwKLSAgICAtLXdpdGhvdXQtZ3JhcGhpdGUyIFwKLSIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWljdSAke1BOfS1pY3UtZGV2IgotCi1GSUxFU18ke1BOfS1pY3UgPSAiJHtsaWJkaXJ9L2xpYmhhcmZidXp6LWljdS5zby4qIgotRklMRVNfJHtQTn0taWN1LWRldiA9ICIke2xpYmRpcn0vbGliaGFyZmJ1enotaWN1LmxhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYmhhcmZidXp6LWljdS5zbyBcCi0gICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wa2djb25maWcvaGFyZmJ1enotaWN1LnBjIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2hhcmZidXp6L2hhcmZidXp6XzEuMy4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9oYXJmYnV6ei9oYXJmYnV6el8xLjMuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjRjNDQzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9oYXJmYnV6ei9oYXJmYnV6el8xLjMuMC5iYgpAQCAtMCwwICsxLDM5IEBACitTVU1NQVJZID0gIlRleHQgc2hhcGluZyBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiSGFyZkJ1enogaXMgYW4gT3BlblR5cGUgdGV4dCBzaGFwaW5nIGVuZ2luZS4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL0hhcmZCdXp6IgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1IYXJmQnV6eiIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTAyMWRkNmRkYTZmZjFlNmIxMDQ0MDAyZmM2NjJiOWIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2hiLXVjZG4vQ09QWUlORzttZDU9OTk0YmEwZjEyOTVmMTViNGJkYTQ5OTlhNWJiZWRkZWYgXAorIgorCitERVBFTkRTID0gImdsaWItMi4wIGNhaXJvIGZvbnRjb25maWcgZnJlZXR5cGUiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvaGFyZmJ1enovcmVsZWFzZS8ke0JQfS50YXIuYnoyIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYTgyZDQ5ZmY2NzE5N2JjM2M5NmVhMzRiOTg4ODBjNTIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjA0YmUzMTYzM2VmZWUyY2FlMWQ2MmQ0NjQzNDU4NzMwMjU1NGZhODM3MjI0ODQ1YTYyNTY1ZWM2OGEwMzM0ZCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGxpYl9wYWNrYWdlIGd0ay1kb2MKKworUEFDS0FHRUNPTkZJRyA/Pz0gImljdSIKK1BBQ0tBR0VDT05GSUdbaWN1XSA9ICItLXdpdGgtaWN1LC0td2l0aG91dC1pY3UsaWN1IgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLXdpdGgtY2Fpcm8gXAorICAgIC0td2l0aC1mb250Y29uZmlnIFwKKyAgICAtLXdpdGgtZnJlZXR5cGUgXAorICAgIC0td2l0aC1nbGliIFwKKyAgICAtLXdpdGhvdXQtZ3JhcGhpdGUyIFwKKyIKKworUEFDS0FHRVMgPSsgIiR7UE59LWljdSAke1BOfS1pY3UtZGV2IgorCitGSUxFU18ke1BOfS1pY3UgPSAiJHtsaWJkaXJ9L2xpYmhhcmZidXp6LWljdS5zby4qIgorRklMRVNfJHtQTn0taWN1LWRldiA9ICIke2xpYmRpcn0vbGliaGFyZmJ1enotaWN1LmxhIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYmhhcmZidXp6LWljdS5zbyBcCisgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wa2djb25maWcvaGFyZmJ1enotaWN1LnBjIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ltYWdlcy9jb3JlLWltYWdlLWRpcmVjdGZiLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9pbWFnZXMvY29yZS1pbWFnZS1kaXJlY3RmYi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTY0MTE5NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ltYWdlcy9jb3JlLWltYWdlLWRpcmVjdGZiLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotU1VNTUFSWSA9ICJBbiBpbWFnZSB0aGF0IHVzZXMgRGlyZWN0RkIgaW5zdGVhZCBvZiBYMTEiCi1MSUNFTlNFID0gIk1JVCIKLQotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9MSUNFTlNFO21kNT00ZDkyY2QzNzNhYmRhMzkzN2MyYmM0N2ZiYzQ5ZDY5MCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL0NPUFlJTkcuTUlUO21kNT0zZGE5Y2ZiY2I3ODhjODBhMDM4NDM2MWI0ZGUyMDQyMCIKLQotaW5oZXJpdCBjb3JlLWltYWdlIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAiZGlyZWN0ZmIiCi1DT05GTElDVF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1JTUFHRV9JTlNUQUxMICs9ICJcCi0JJHtDT1JFX0lNQUdFX0JBU0VfSU5TVEFMTH0gXAotCXBhY2thZ2Vncm91cC1jb3JlLWZ1bGwtY21kbGluZSBcCi0JcGFja2FnZWdyb3VwLWNvcmUtZGlyZWN0ZmIgXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9pbWFnZXMvY29yZS1pbWFnZS13ZXN0b24uYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ltYWdlcy9jb3JlLWltYWdlLXdlc3Rvbi5iYgppbmRleCA1MmUyNzFkLi5lMzY2NTVmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ltYWdlcy9jb3JlLWltYWdlLXdlc3Rvbi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ltYWdlcy9jb3JlLWltYWdlLXdlc3Rvbi5iYgpAQCAtOSwzICs5LDQgQEAKIFJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ3YXlsYW5kIgogCiBDT1JFX0lNQUdFX0JBU0VfSU5TVEFMTCArPSAid2VzdG9uIHdlc3Rvbi1pbml0IHdlc3Rvbi1leGFtcGxlcyBndGsrMy1kZW1vIGNsdXR0ZXItMS4wLWV4YW1wbGVzIgorQ09SRV9JTUFHRV9CQVNFX0lOU1RBTEwgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3dlc3Rvbi14d2F5bGFuZCBtYXRjaGJveC10ZXJtaW5hbCcsICcnLCBkKX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18xLjUuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvanBlZy9saWJqcGVnLXR1cmJvXzEuNS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5ZTcwZDcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18xLjUuMC5iYgpAQCAtMCwwICsxLDQ2IEBACitTVU1NQVJZID0gIkhhcmR3YXJlIGFjY2VsZXJhdGVkIEpQRUcgY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAibGlianBlZy10dXJibyBpcyBhIGRlcml2YXRpdmUgb2YgbGlianBlZyB0aGF0IHVzZXMgU0lNRCBpbnN0cnVjdGlvbnMgKE1NWCwgU1NFMiwgTkVPTikgdG8gYWNjZWxlcmF0ZSBiYXNlbGluZSBKUEVHIGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uIgorSE9NRVBBR0UgPSAiaHR0cDovL2xpYmpwZWctdHVyYm8ub3JnLyIKKworTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9jZGpwZWcuaDtlbmRsaW5lPTEzO21kNT0wNWJhYjdjN2FkODk5ZDg1YmZiYTYwZGExYTEyNzFmMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9qcGVnbGliLmg7ZW5kbGluZT0xNjttZDU9ZjY3ZDcwZTU0N2EyNjYyYzA3OTc4MWM3MmY4NzdmNzIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZGpwZWcuYztlbmRsaW5lPTExO21kNT1iOTBiNmQyYjQxMTlmOWU1ODA3Y2QyNzNmNTI1ZDJhZiBcCisiCitERVBFTkRTID0gIm5hc20tbmF0aXZlIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIzZmM1ZDliNmE4YmNlOTYxNjE2NTlhZTdhOTkzOTI1NyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5ZjM5N2MzMWE2N2QyYjAwZWUzNzU5N2RhMjU4OThiMDNlYjI4MmNjZDg3YjEzNWE1MGE2OTk5M2I2YTIwMzVmIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbGlianBlZy10dXJiby9maWxlcy8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvbGlianBlZy10dXJiby9maWxlcy8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgorCitQRT0gIjEiCisKKyMgRHJvcC1pbiByZXBsYWNlbWVudCBmb3IganBlZworUFJPVklERVMgPSAianBlZyIKK1JQUk9WSURFU18ke1BOfSArPSAianBlZyIKK1JSRVBMQUNFU18ke1BOfSArPSAianBlZyIKK1JDT05GTElDVFNfJHtQTn0gKz0gImpwZWciCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCisjIFdvcmsgYXJvdW5kIG1pc3NpbmcgeDMyIEFCSSBzdXBwb3J0CitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICItLXdpdGhvdXQtc2ltZCIsICIiLCBkKX0iCisKKyMgV29yayBhcm91bmQgbWlzc2luZyBub24tZmxvYXRpbmcgcG9pbnQgQUJJIHN1cHBvcnQgaW4gTUlQUworRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJNSVBTUEtHU0ZYX0ZQVSIsICItbmYiLCAiLS13aXRob3V0LXNpbWQiLCAiIiwgZCl9IgorCisjIFByb3ZpZGUgYSB3b3JrYXJvdW5kIGlmIEFsdGl2ZWMgdW5pdCBpcyBub3QgcHJlc2VudCBpbiBQUEMKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0X3Bvd2VycGMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYWx0aXZlYyIsICIiLCAiLS13aXRob3V0LXNpbWQiLCBkKX0iCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldF9wb3dlcnBjNjQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYWx0aXZlYyIsICIiLCAiLS13aXRob3V0LXNpbWQiLCBkKX0iCisKK1BBQ0tBR0VTID0rICJqcGVnLXRvb2xzIGxpYnR1cmJvanBlZyIKKworREVTQ1JJUFRJT05fanBlZy10b29scyA9ICJUaGUganBlZy10b29scyBwYWNrYWdlIGluY2x1ZGVzIGNsaWVudCBwcm9ncmFtcyB0byBhY2Nlc3MgbGlianBlZyBmdW5jdGlvbmFsaXR5LiAgVGhlc2UgdG9vbHMgYWxsb3cgZm9yIHRoZSBjb21wcmVzc2lvbiwgZGVjb21wcmVzc2lvbiwgdHJhbnNmb3JtYXRpb24gYW5kIGRpc3BsYXkgb2YgSlBFRyBmaWxlcyBhbmQgYmVuY2htYXJraW5nIG9mIHRoZSBsaWJqcGVnIGxpYnJhcnkuIgorRklMRVNfanBlZy10b29scyA9ICIke2JpbmRpcn0vKiIKKworREVTQ1JJUFRJT05fbGlidHVyYm9qcGVnID0gIkEgU0lNRC1hY2NlbGVyYXRlZCBKUEVHIGNvZGVjIHdoaWNoIHByb3ZpZGVzIG9ubHkgVHVyYm9KUEVHIEFQSXMiCitGSUxFU19saWJ0dXJib2pwZWcgPSAiJHtsaWJkaXJ9L2xpYnR1cmJvanBlZy5zby4qIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvanBlZy9saWJqcGVnLXR1cmJvXzhkKzEuNC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm9fOGQrMS40LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4NTk0MzEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm9fOGQrMS40LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJsaWJqcGVnLXR1cmJvIGlzIGEgZGVyaXZhdGl2ZSBvZiBsaWJqcGVnIHRoYXQgdXNlcyBTSU1EIGluc3RydWN0aW9ucyAoTU1YLCBTU0UyLCBORU9OKSB0byBhY2NlbGVyYXRlIGJhc2VsaW5lIEpQRUcgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24iCi1IT01FUEFHRSA9ICJodHRwOi8vbGlianBlZy10dXJiby5vcmcvIgotCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2NkanBlZy5oO2VuZGxpbmU9MTI7bWQ1PWNhZDk1NWQxNTE0NWMzZmRjZWVjNjg1NWUwNzhlOTUzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2pwZWdsaWIuaDtlbmRsaW5lPTE0O21kNT1kZmM4MDNkYzUxYWUyMTE3OGQxMzc2ZWM3M2M0NDU0ZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kanBlZy5jO2VuZGxpbmU9OTttZDU9ZTkzYThmMjA2MWU4YTBhYzcxYzdhNDg1YzEwNDg5ZTIgXAotIgotCi1ERVBFTkRTID0gIm5hc20tbmF0aXZlIgotCi1CQVNFUFYgPSAiJHtAZC5nZXRWYXIoJ1BWJyxUcnVlKS5zcGxpdCgnKycpWzFdfSIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke0JBU0VQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjg2YjBkNWY3NTA3YzJlNmMyMWMwMDIxOTE2MmMzYzQ0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUyMWJiNWQzMDQzZTdhYzA2M2NlMzAyNmQ5YTU5Y2MyYWIyZTk2MzZjNjU1YTI1MTVhZjVmNDcwNjEyMjIzM2UiCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9saWJqcGVnLXR1cmJvL2ZpbGVzLyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9saWJqcGVnLXR1cmJvL2ZpbGVzLyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKS8iCi0KLVMgPSAiJHtXT1JLRElSfS8ke0JQTn0tJHtCQVNFUFZ9IgotCi0jIERyb3AtaW4gcmVwbGFjZW1lbnQgZm9yIGpwZWcKLVBST1ZJREVTID0gImpwZWciCi1SUFJPVklERVNfJHtQTn0gKz0gImpwZWciCi1SUkVQTEFDRVNfJHtQTn0gKz0gImpwZWciCi1SQ09ORkxJQ1RTXyR7UE59ICs9ICJqcGVnIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotIyBXb3JrIGFyb3VuZCBtaXNzaW5nIHgzMiBBQkkgc3VwcG9ydAotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm14MzIiLCAiLS13aXRob3V0LXNpbWQiLCAiIiwgZCl9IgotCi1QQUNLQUdFUyA9KyAianBlZy10b29scyBsaWJ0dXJib2pwZWciCi0KLURFU0NSSVBUSU9OX2pwZWctdG9vbHMgPSAiVGhlIGpwZWctdG9vbHMgcGFja2FnZSBpbmNsdWRlcyBjbGllbnQgcHJvZ3JhbXMgdG8gYWNjZXNzIGxpYmpwZWcgZnVuY3Rpb25hbGl0eS4gIFRoZXNlIHRvb2xzIGFsbG93IGZvciB0aGUgY29tcHJlc3Npb24sIGRlY29tcHJlc3Npb24sIHRyYW5zZm9ybWF0aW9uIGFuZCBkaXNwbGF5IG9mIEpQRUcgZmlsZXMgYW5kIGJlbmNobWFya2luZyBvZiB0aGUgbGlianBlZyBsaWJyYXJ5LiIKLUZJTEVTX2pwZWctdG9vbHMgPSAiJHtiaW5kaXJ9LyoiCi0KLURFU0NSSVBUSU9OX2xpYnR1cmJvanBlZyA9ICJBIFNJTUQtYWNjZWxlcmF0ZWQgSlBFRyBjb2RlYyB3aGljaCBwcm92aWRlcyBvbmx5IFR1cmJvSlBFRyBBUElzIgotRklMRVNfbGlidHVyYm9qcGVnID0gIiR7bGliZGlyfS9saWJ0dXJib2pwZWcuc28uKiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYm1hdGNoYm94L2xpYm1hdGNoYm94L2xpYnBuZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlibWF0Y2hib3gvbGlibWF0Y2hib3gvbGlicG5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Y2Q1MDdmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlibWF0Y2hib3gvbGlibWF0Y2hib3gvbGlicG5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSAxOWMzZDI0MjAzNDc0OGIzYzYwNzY1NjgzZTFmZjRlMmRmOTcwMjA1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLURhdGU6IFR1ZSwgMTAgRGVjIDIwMTMgMTE6Mzc6MzIgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlOiBpbXByb3ZlIGxpYnBuZyBkZXRlY3Rpb24KLQotSW5zdGVhZCBvZiBsb29raW5nIGZvciAibGlicG5nMTIiIGV4cGxpY2l0bHkgdGhvdWdoIHBrZy1jb25maWcgYW5kIHRoZW4gZmFsbGluZwotYmFjayB0byBsaWJyYXJ5IGh1bnRpbmcsIGp1c3QgdXNlIHBrZy1jb25maWcgdG8gZmluZCAibGlicG5nIiB3aGljaCBpcyBwcm92aWRlZAotYnkgYm90aCBsaWJwbmcxMiBhbmQgbGlicG5nMTYuCi0KLVRoaXMgYWxzbyBtYWtlcyB0aGUgbGlicG5nIGRldGVjdGlvbiBkZXRlcm1pbmlzdGljLgotCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgMjkgKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggOGEyODA3Ni4uNjVkN2M3OSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzQsNyArMzQsNyBAQCBBQ19BUkdfRU5BQkxFKGpwZWcsCi0gICBlbmFibGVfanBlZz0kZW5hYmxldmFsLCBlbmFibGVfanBlZz1ubykKLSAKLSBBQ19BUkdfRU5BQkxFKHBuZywKLS0gIFsgIC0tZGlzYWJsZS1wbmcgICAgICAgICAgIGRpc2FibGUgcG5nIHN1cHBvcnQgW2RlZmF1bHQ9bm9dXSwKLSsgIFsgIC0tZGlzYWJsZS1wbmcgICAgICAgICAgIGRpc2FibGUgUE5HIHN1cHBvcnQgW2RlZmF1bHQ9ZW5hYmxlZF1dLAotICAgICAgZW5hYmxlX3BuZz0kZW5hYmxldmFsLCBlbmFibGVfcG5nPXllcyApCi0gCi0gQUNfQVJHX0VOQUJMRShkb3h5Z2VuLWRvY3MsICAgICAKLUBAIC0xNTYsMjkgKzE1NiwxMCBAQCBmaQotIGRubCAtLS0tLS0gQ2hlY2sgZm9yIFBORyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAKLSBpZiB0ZXN0IHgkZW5hYmxlX3BuZyAhPSB4bm87IHRoZW4KLS0gIEFDX01TR19DSEVDS0lORyhmb3IgbGlicG5nMTIpCi0tICBpZiB0ZXN0IHgkUEtHX0NPTkZJRyAhPSB4bm8gJiYgJFBLR19DT05GSUcgLS1leGlzdHMgbGlicG5nMTI7IHRoZW4gCi0tICAgICAgICBBQ19NU0dfUkVTVUxUKHllcykKLS0gICAgICAgIFBOR19MSUJTPWAkUEtHX0NPTkZJRyAtLWxpYnMgbGlicG5nMTJgCi0tCVBOR19DRkxBR1M9YCRQS0dfQ09ORklHIC0tY2ZsYWdzIGxpYnBuZzEyYAotLSAgICAgICAgQUNfREVGSU5FKFVTRV9QTkcsIFsxXSwgW1VzZSBQbmddKQotLQlTVVBQT1JUU19QTkc9MQotLQlQTkdfUkVRVUlSRUQ9ImxpYnBuZzEyIgotLSAgZWxzZQotLQlBQ19NU0dfUkVTVUxUKG5vKQotLSAgICAgICAgIyBBQ19DSEVDS19IRUFERVJTKHBuZy5oLCBbIGhhdmVfcG5nX2g9InllcyIgXSwgWyBoYXZlX3BuZ19oPSJubyIgXSApCi0tICAgICAgICBBQ19DSEVDS19MSUIoW3BuZ10sIFtwbmdfY3JlYXRlX3JlYWRfc3RydWN0XSwgW2hhdmVfcG5nPSJ5ZXMiXSwgW2hhdmVfcG5nPSJubyJdKQotLQotLSAgICAgICAgaWYgdGVzdCB4JGhhdmVfcG5nPXh5ZXMgJiYgdGVzdCB4JGhhdmVfcG5nX2g9eHllczsgdGhlbiAKLS0gICAgICAgICAgICBBQ19ERUZJTkUoVVNFX1BORywgWzFdLCBbVXNlIFBuZ10pCi0tCSAgICBTVVBQT1JUU19QTkc9MQotLSAgICAgICAgICAgIFBOR19MSUJTPSItbHBuZyAtbHoiCi0tICAgICAgICAgICAgTUJfRVhUUkFfTElCUz0iJE1CX0VYVFJBX0xJQlMgJFBOR19MSUJTIgotLSAgICAgICAgZWxzZQotLQkgICAgQUNfTVNHX1dBUk4oWyoqKiBDYW5ub3QgZmluZCBQTkcsIGRpc2FibGluZyBzdXBwb3J0XSkKLS0gICAgICAgICAgICBlbmFibGVfcG5nPW5vCi0tCWZpCi0tICBmaQotKyAgUEtHX0NIRUNLX01PRFVMRVMoUE5HLCBsaWJwbmcpCi0rICBBQ19ERUZJTkUoVVNFX1BORywgWzFdLCBbVXNlIFBOR10pCi0rICBTVVBQT1JUU19QTkc9MQotKyAgUE5HX1JFUVVJUkVEPSJsaWJwbmciCi0gZmkKLSAKLSAKLS0tIAotMS44LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJtYXRjaGJveC9saWJtYXRjaGJveF8xLjExLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJtYXRjaGJveC9saWJtYXRjaGJveF8xLjExLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMmViNjc1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlibWF0Y2hib3gvbGlibWF0Y2hib3hfMS4xMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVNVTU1BUlkgPSAiTWF0Y2hib3ggd2luZG93IG1hbmFnZXIgY29yZSBsaWJyYXJ5IgotU0VDVElPTiA9ICJ4MTEvbGlicyIKLUhPTUVQQUdFID0gImh0dHA6Ly9tYXRjaGJveC1wcm9qZWN0Lm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS55b2N0b3Byb2plY3QuY29tLyIKLQotTElDRU5TRSA9ICJMR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9N2ZiYzMzODMwOWFjMzhmZWZjZDY0YjA0YmI5MDNlMzQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGlibWIvbWJleHAuYztlbmRsaW5lPTIwO21kNT0yOGMwYWVmM2IyM2UzMDg0NjRmNWRhZTZhMTFiMGQyZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJtYi9tYmRvdGRlc2t0b3AuYztlbmRsaW5lPTIxO21kNT01YTI4NzE1NmIzMjA3ZTg1MWMxZDY4ZDA5YzQzOWI1MSIKLQotREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYngxMSBsaWJ4ZXh0IgotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy9tYXRjaGJveC8ke0JQTn0vJHtQVn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vbGlicG5nLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZmM2Y2M4MDdmNTVhM2U3Yzc1MmQ4MDEzMTc2ODc1ZDciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjU0Y2FiNTJlMzA0YTM1MTJjOGRmNGJlNTlkNjkwY2YzOTIxYmJiNjhhMjhlZGU3ZmUyNmI5MzUzNDIxN2I1MyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjawotIyBkZXBlbmRzIG9uIHZpcnR1YWwvbGlieDExCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1QQUNLQUdFQ09ORklHID8/PSAianBlZyBwbmcgeGZ0IHhzZXR0aW5ncyIKLVBBQ0tBR0VDT05GSUdbanBlZ10gPSAiLS1lbmFibGUtanBlZywtLWRpc2FibGUtanBlZyxqcGVnIgotUEFDS0FHRUNPTkZJR1twYW5nb10gPSAiLS1lbmFibGUtcGFuZ28sLS1kaXNhYmxlLXBhbmdvLHBhbmdvIgotUEFDS0FHRUNPTkZJR1twbmddID0gIi0tZW5hYmxlLXBuZywtLWRpc2FibGUtcG5nLGxpYnBuZyIKLVBBQ0tBR0VDT05GSUdbeGZ0XSA9ICItLWVuYWJsZS14ZnQsLS1kaXNhYmxlLXhmdCxsaWJ4ZnQiCi1QQUNLQUdFQ09ORklHW3hzZXR0aW5nc10gPSAiLS1lbmFibGUteHNldHRpbmdzLC0tZGlzYWJsZS14c2V0dGluZ3MsbGlieHNldHRpbmdzLWNsaWVudCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlibWF0Y2hib3gvbGlibWF0Y2hib3hfMS4xMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlibWF0Y2hib3gvbGlibWF0Y2hib3hfMS4xMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTQ1ZTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJtYXRjaGJveC9saWJtYXRjaGJveF8xLjEyLmJiCkBAIC0wLDAgKzEsMjggQEAKK1NVTU1BUlkgPSAiTWF0Y2hib3ggd2luZG93IG1hbmFnZXIgY29yZSBsaWJyYXJ5IgorU0VDVElPTiA9ICJ4MTEvbGlicyIKK0hPTUVQQUdFID0gImh0dHA6Ly9tYXRjaGJveC1wcm9qZWN0Lm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS55b2N0b3Byb2plY3QuY29tLyIKKworTElDRU5TRSA9ICJMR1BMdjIrICYgTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9N2ZiYzMzODMwOWFjMzhmZWZjZDY0YjA0YmI5MDNlMzQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5NSVQ7bWQ1PWY0NWVkOTMzMmI0ZjUwYTM1YWRmMjA2NWFkZGU0Y2E3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYm1iL21iZXhwLmM7ZW5kbGluZT0yMDttZDU9MjhjMGFlZjNiMjNlMzA4NDY0ZjVkYWU2YTExYjBkMmYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGlibWIveHNldHRpbmdzLWNsaWVudC5jO2VuZGxpbmU9MjA7bWQ1PTRiMTA2YTM4NzYwMmRiOGQ5MWE1MGQ1Y2RmZDY1MDMxIgorCitERVBFTkRTID0gInZpcnR1YWwvbGlieDExIGxpYnhleHQiCisKKyNTUkNSRVYgZm9yIDEuMTIKK1NSQ1JFViA9ICJlODQ2ZWU0MzRmOGUyM2Q5ZGIzOGFmMTNjNTIzZjc5MTQ5NWUwZTg3IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy8ke0JQTn0iCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKyMgZGVwZW5kcyBvbiB2aXJ0dWFsL2xpYngxMQorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImpwZWcgcG5nIHhmdCIKK1BBQ0tBR0VDT05GSUdbanBlZ10gPSAiLS1lbmFibGUtanBlZywtLWRpc2FibGUtanBlZyxqcGVnIgorUEFDS0FHRUNPTkZJR1twYW5nb10gPSAiLS1lbmFibGUtcGFuZ28sLS1kaXNhYmxlLXBhbmdvLHBhbmdvIgorUEFDS0FHRUNPTkZJR1twbmddID0gIi0tZW5hYmxlLXBuZywtLWRpc2FibGUtcG5nLGxpYnBuZyIKK1BBQ0tBR0VDT05GSUdbeGZ0XSA9ICItLWVuYWJsZS14ZnQsLS1kaXNhYmxlLXhmdCxsaWJ4ZnQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMi8wMDAxLXNyYy12aWRlby1tYWtlLWl0LWNvbXBhdGlibGUtd2l0aC13YXlsYW5kLTEuMTAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMi8wMDAxLXNyYy12aWRlby1tYWtlLWl0LWNvbXBhdGlibGUtd2l0aC13YXlsYW5kLTEuMTAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRlNmQ0ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyLzAwMDEtc3JjLXZpZGVvLW1ha2UtaXQtY29tcGF0aWJsZS13aXRoLXdheWxhbmQtMS4xMC5wYXRjaApAQCAtMCwwICsxLDU3IEBACitGcm9tIGIxZWQzNTMzNDMzNTAxZWM1MmM4Mjg5YTViM2EyOTRlNTdlN2Y3OTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXJ0aW4gSmFuc2EgPG1hcnRpbi5qYW5zYUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDI2IE1heSAyMDE2IDExOjMxOjUyICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIHNyYy92aWRlbzogbWFrZSBpdCBjb21wYXRpYmxlIHdpdGggd2F5bGFuZCAxLjEwCisKK3wgYnVpbGQvLmxpYnMvU0RMX3dheWxhbmRldmVudHMubzogSW4gZnVuY3Rpb24gYHdsX3JlZ2lzdHJ5X2JpbmQnOgorfCAvdXNyL2luY2x1ZGUvd2F5bGFuZC1jbGllbnQtcHJvdG9jb2wuaDozMDU6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHdsX3Byb3h5X21hcnNoYWxfY29uc3RydWN0b3JfdmVyc2lvbmVkJworfCAvdXNyL2luY2x1ZGUvd2F5bGFuZC1jbGllbnQtcHJvdG9jb2wuaDozMDU6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHdsX3Byb3h5X21hcnNoYWxfY29uc3RydWN0b3JfdmVyc2lvbmVkJworfCBidWlsZC8ubGlicy9TRExfd2F5bGFuZGtleWJvYXJkLm86IEluIGZ1bmN0aW9uIGB3bF9yZWdpc3RyeV9iaW5kJzoKK3wgL3Vzci9pbmNsdWRlL3dheWxhbmQtY2xpZW50LXByb3RvY29sLmg6MzA1OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB3bF9wcm94eV9tYXJzaGFsX2NvbnN0cnVjdG9yX3ZlcnNpb25lZCcKK3wgL3Vzci9pbmNsdWRlL3dheWxhbmQtY2xpZW50LXByb3RvY29sLmg6MzA1OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB3bF9wcm94eV9tYXJzaGFsX2NvbnN0cnVjdG9yX3ZlcnNpb25lZCcKK3wgYnVpbGQvLmxpYnMvU0RMX3dheWxhbmR2aWRlby5vOiBJbiBmdW5jdGlvbiBgd2xfcmVnaXN0cnlfYmluZCc6Cit8IC91c3IvaW5jbHVkZS93YXlsYW5kLWNsaWVudC1wcm90b2NvbC5oOjMwNTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgd2xfcHJveHlfbWFyc2hhbF9jb25zdHJ1Y3Rvcl92ZXJzaW9uZWQnCit8IGNvbGxlY3QyOiBlcnJvcjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cworfCBtYWtlOiAqKiogW2J1aWxkL2xpYlNETDIubGFdIEVycm9yIDEKK3wgRVJST1I6IG9lX3J1bm1ha2UgZmFpbGVkCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgorCistLS0KKyBzcmMvdmlkZW8vd2F5bGFuZC9TRExfd2F5bGFuZGR5bi5oIHwgMSArCisgc3JjL3ZpZGVvL3dheWxhbmQvU0RMX3dheWxhbmRzeW0uaCB8IDQgKysrKworIHNyYy92aWRlby93ZWJvcy9TRExfd2F5bGFuZGR5bi5oICAgfCAxICsKKyBzcmMvdmlkZW8vd2Vib3MvU0RMX3dheWxhbmRzeW0uaCAgIHwgNCArKysrCisgNCBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvdmlkZW8vd2F5bGFuZC9TRExfd2F5bGFuZGR5bi5oIGIvc3JjL3ZpZGVvL3dheWxhbmQvU0RMX3dheWxhbmRkeW4uaAoraW5kZXggOGQ5MzEzYS4uYzdiMDE1NyAxMDA2NDQKKy0tLSBhL3NyYy92aWRlby93YXlsYW5kL1NETF93YXlsYW5kZHluLmgKKysrKyBiL3NyYy92aWRlby93YXlsYW5kL1NETF93YXlsYW5kZHluLmgKK0BAIC03OSw2ICs3OSw3IEBAIHZvaWQgU0RMX1dBWUxBTkRfVW5sb2FkU3ltYm9scyh2b2lkKTsKKyAjZGVmaW5lIHdsX3Byb3h5X2dldF91c2VyX2RhdGEgKCpXQVlMQU5EX3dsX3Byb3h5X2dldF91c2VyX2RhdGEpCisgI2RlZmluZSB3bF9wcm94eV9hZGRfbGlzdGVuZXIgKCpXQVlMQU5EX3dsX3Byb3h5X2FkZF9saXN0ZW5lcikKKyAjZGVmaW5lIHdsX3Byb3h5X21hcnNoYWxfY29uc3RydWN0b3IgKCpXQVlMQU5EX3dsX3Byb3h5X21hcnNoYWxfY29uc3RydWN0b3IpCisrI2RlZmluZSB3bF9wcm94eV9tYXJzaGFsX2NvbnN0cnVjdG9yX3ZlcnNpb25lZCAoKldBWUxBTkRfd2xfcHJveHlfbWFyc2hhbF9jb25zdHJ1Y3Rvcl92ZXJzaW9uZWQpCisgCisgI2RlZmluZSB3bF9zZWF0X2ludGVyZmFjZSAoKldBWUxBTkRfd2xfc2VhdF9pbnRlcmZhY2UpCisgI2RlZmluZSB3bF9zdXJmYWNlX2ludGVyZmFjZSAoKldBWUxBTkRfd2xfc3VyZmFjZV9pbnRlcmZhY2UpCitkaWZmIC0tZ2l0IGEvc3JjL3ZpZGVvL3dheWxhbmQvU0RMX3dheWxhbmRzeW0uaCBiL3NyYy92aWRlby93YXlsYW5kL1NETF93YXlsYW5kc3ltLmgKK2luZGV4IGMzYjRmYTUuLmI5YTBkOTcgMTAwNjQ0CistLS0gYS9zcmMvdmlkZW8vd2F5bGFuZC9TRExfd2F5bGFuZHN5bS5oCisrKysgYi9zcmMvdmlkZW8vd2F5bGFuZC9TRExfd2F5bGFuZHN5bS5oCitAQCAtNTUsNiArNTUsMTAgQEAgU0RMX1dBWUxBTkRfU1lNKHZvaWQsIHdsX2xpc3RfaW5zZXJ0X2xpc3QsIChzdHJ1Y3Qgd2xfbGlzdCAqLCBzdHJ1Y3Qgd2xfbGlzdCAqKSkKKyBTRExfV0FZTEFORF9NT0RVTEUoV0FZTEFORF9DTElFTlRfMV80KQorIFNETF9XQVlMQU5EX1NZTShzdHJ1Y3Qgd2xfcHJveHkgKiwgd2xfcHJveHlfbWFyc2hhbF9jb25zdHJ1Y3RvciwgKHN0cnVjdCB3bF9wcm94eSAqLCB1aW50MzJfdCBvcGNvZGUsIGNvbnN0IHN0cnVjdCB3bF9pbnRlcmZhY2UgKmludGVyZmFjZSwgLi4uKSkKKyAKKysvKiBUaGVzZSBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSBpbiBXYXlsYW5kID49IDEuMTAgKi8KKytTRExfV0FZTEFORF9NT0RVTEUoV0FZTEFORF9DTElFTlRfMV8xMCkKKytTRExfV0FZTEFORF9TWU0oc3RydWN0IHdsX3Byb3h5ICosIHdsX3Byb3h5X21hcnNoYWxfY29uc3RydWN0b3JfdmVyc2lvbmVkLCAoc3RydWN0IHdsX3Byb3h5ICpwcm94eSwgdWludDMyX3Qgb3Bjb2RlLCBjb25zdCBzdHJ1Y3Qgd2xfaW50ZXJmYWNlICppbnRlcmZhY2UsIHVpbnQzMl90IHZlcnNpb24sIC4uLikpCisrCisgU0RMX1dBWUxBTkRfSU5URVJGQUNFKHdsX3NlYXRfaW50ZXJmYWNlKQorIFNETF9XQVlMQU5EX0lOVEVSRkFDRSh3bF9zdXJmYWNlX2ludGVyZmFjZSkKKyBTRExfV0FZTEFORF9JTlRFUkZBQ0Uod2xfc2htX3Bvb2xfaW50ZXJmYWNlKQorLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMl8yLjAuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyXzIuMC40LmJiCmluZGV4IDQyODIzMDcuLjg0NGZmMzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyXzIuMC40LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyXzIuMC40LmJiCkBAIC0xNSw3ICsxNSw5IEBACiBERVBFTkRTX2NsYXNzLW5hdGl2ZXNkayA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd2aXJ0dWFsL25hdGl2ZXNkay1saWJ4MTEgbmF0aXZlc2RrLWxpYnhyYW5kciBuYXRpdmVzZGstbGlieHJlbmRlciBuYXRpdmVzZGstbGlieGV4dCcsICcnLCBkKX0iCiAKIFNSQ19VUkkgPSAiaHR0cDovL3d3dy5saWJzZGwub3JnL3JlbGVhc2UvU0RMMi0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vbGlua2FnZS5wYXRjaCIKKyAgICAgICAgICAgZmlsZTovL2xpbmthZ2UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1zcmMtdmlkZW8tbWFrZS1pdC1jb21wYXRpYmxlLXdpdGgtd2F5bGFuZC0xLjEwLnBhdGNoIFwKKyIKIAogUyA9ICIke1dPUktESVJ9L1NETDItJHtQVn0iCiAKQEAgLTQ0LDcgKzQ2LDcgQEAKICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEnLCAnJywgZCl9IFwKICIKIFBBQ0tBR0VDT05GSUdbYWxzYV0gICAgICAgPSAiLS1lbmFibGUtYWxzYSAtLWRpc2FibGUtYWxzYXRlc3QsLS1kaXNhYmxlLWFsc2EsYWxzYS1saWIsIgotUEFDS0FHRUNPTkZJR1tkaXJlY3RmYl0gICA9ICItLWVuYWJsZS12aWRlby1kaXJlY3RmYiAtLWRpc2FibGUtdmlkZW8tZGlyZWN0ZmIsZGlyZWN0ZmIiCitQQUNLQUdFQ09ORklHW2RpcmVjdGZiXSAgID0gIi0tZW5hYmxlLXZpZGVvLWRpcmVjdGZiLC0tZGlzYWJsZS12aWRlby1kaXJlY3RmYixkaXJlY3RmYiIKIFBBQ0tBR0VDT05GSUdbZ2xlczJdICAgICAgPSAiLS1lbmFibGUtdmlkZW8tb3BlbmdsZXMsLS1kaXNhYmxlLXZpZGVvLW9wZW5nbGVzLHZpcnR1YWwvbGliZ2xlczIiCiBQQUNLQUdFQ09ORklHW29wZW5nbF0gICAgID0gIi0tZW5hYmxlLXZpZGVvLW9wZW5nbCwtLWRpc2FibGUtdmlkZW8tb3BlbmdsLHZpcnR1YWwvbGliZ2wiCiBQQUNLQUdFQ09ORklHW3B1bHNlYXVkaW9dID0gIi0tZW5hYmxlLXB1bHNlYXVkaW8sLS1kaXNhYmxlLXB1bHNlYXVkaW8scHVsc2VhdWRpbyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlieHNldHRpbmdzLWNsaWVudC9saWJ4c2V0dGluZ3MtY2xpZW50L01JVC1zdHlsZS1saWNlbnNlIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ4c2V0dGluZ3MtY2xpZW50L2xpYnhzZXR0aW5ncy1jbGllbnQvTUlULXN0eWxlLWxpY2Vuc2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyOGRlOTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ4c2V0dGluZ3MtY2xpZW50L2xpYnhzZXR0aW5ncy1jbGllbnQvTUlULXN0eWxlLWxpY2Vuc2UKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IMKpIDIwMDEgUmVkIEhhdCwgSW5jLgotICoKLSAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGRpc3RyaWJ1dGUsIGFuZCBzZWxsIHRoaXMgc29mdHdhcmUgYW5kIGl0cwotICogZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgaXMgaGVyZWJ5IGdyYW50ZWQgd2l0aG91dCBmZWUsIHByb3ZpZGVkIHRoYXQKLSAqIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzIGFuZCB0aGF0IGJvdGggdGhhdAotICogY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gc3VwcG9ydGluZwotICogZG9jdW1lbnRhdGlvbiwgYW5kIHRoYXQgdGhlIG5hbWUgb2YgUmVkIEhhdCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvcgotICogcHVibGljaXR5IHBlcnRhaW5pbmcgdG8gZGlzdHJpYnV0aW9uIG9mIHRoZSBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljLAotICogd3JpdHRlbiBwcmlvciBwZXJtaXNzaW9uLiAgUmVkIEhhdCBtYWtlcyBubyByZXByZXNlbnRhdGlvbnMgYWJvdXQgdGhlCi0gKiBzdWl0YWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIKLSAqIHdpdGhvdXQgZXhwcmVzcyBvciBpbXBsaWVkIHdhcnJhbnR5LgotICoKLSAqIFJFRCBIQVQgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEggUkVHQVJEIFRPIFRISVMgU09GVFdBUkUsIElOQ0xVRElORyBBTEwKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MsIElOIE5PIEVWRU5UIFNIQUxMIFJFRCBIQVQKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUwotICogV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTgotICogT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiAKLSAqIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCi0gKgotICogQXV0aG9yOiAgT3dlbiBUYXlsb3IsIFJlZCBIYXQsIEluYy4KLSAqLwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ4c2V0dGluZ3MtY2xpZW50L2xpYnhzZXR0aW5ncy1jbGllbnQvbGluay14MTEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnhzZXR0aW5ncy1jbGllbnQvbGlieHNldHRpbmdzLWNsaWVudC9saW5rLXgxMS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDA4ZDBkNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnhzZXR0aW5ncy1jbGllbnQvbGlieHNldHRpbmdzLWNsaWVudC9saW5rLXgxMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotSW5kZXg6IFhzZXR0aW5ncy1jbGllbnQtMC4xMC9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFhzZXR0aW5ncy1jbGllbnQtMC4xMC5vcmlnL01ha2VmaWxlLmFtCTIwMDgtMDItMDcgMTQ6NDk6NTQuMDAwMDAwMDAwICswMDAwCi0rKysgWHNldHRpbmdzLWNsaWVudC0wLjEwL01ha2VmaWxlLmFtCTIwMDgtMDItMDcgMTQ6NTA6MDAuMDAwMDAwMDAwICswMDAwCi1AQCAtOSw0ICs5LDQgQEAKLSAKLSBsaWJYc2V0dGluZ3NfY2xpZW50X2xhX1NPVVJDRVM9ICQoc291cmNlX2MpICQoc291cmNlX2gpCi0gCi0tbGliWHNldHRpbmdzX2NsaWVudF9sYV9MSUJBREQgICAgICA9IEBYX0xJQlNACi1cIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKLStsaWJYc2V0dGluZ3NfY2xpZW50X2xhX0xJQkFERCAgICAgID0gQFhfTElCU0AgLWxYMTEKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlieHNldHRpbmdzLWNsaWVudC9saWJ4c2V0dGluZ3MtY2xpZW50L29ic29sZXRlX2F1dG9tYWtlX21hY3Jvcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlieHNldHRpbmdzLWNsaWVudC9saWJ4c2V0dGluZ3MtY2xpZW50L29ic29sZXRlX2F1dG9tYWtlX21hY3Jvcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTA1ZDA4ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnhzZXR0aW5ncy1jbGllbnQvbGlieHNldHRpbmdzLWNsaWVudC9vYnNvbGV0ZV9hdXRvbWFrZV9tYWNyb3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogTWFya28gTGluZHF2aXN0IDxjYXpmaTc0QGdtYWlsLmNvbT4KLWRpZmYgLU51cmQgWHNldHRpbmdzLWNsaWVudC0wLjEwL2NvbmZpZ3VyZS5hYyBYc2V0dGluZ3MtY2xpZW50LTAuMTAvY29uZmlndXJlLmFjCi0tLS0gWHNldHRpbmdzLWNsaWVudC0wLjEwL2NvbmZpZ3VyZS5hYwkyMDAzLTAzLTI4IDEyOjM5OjUxLjAwMDAwMDAwMCArMDIwMAotKysrIFhzZXR0aW5ncy1jbGllbnQtMC4xMC9jb25maWd1cmUuYWMJMjAxMy0wMS0xMSAwNzozNzoyMS40OTE1OTc3NDMgKzAyMDAKLUBAIC0xLDcgKzEsNyBAQAotICMgUHJvY2VzcyB0aGlzIGZpbGUgd2l0aCBhdXRvY29uZiB0byBwcm9kdWNlIGEgY29uZmlndXJlIHNjcmlwdC4KLSBBQ19JTklUKHhzZXR0aW5ncy1jbGllbnQuYykKLSBBTV9JTklUX0FVVE9NQUtFKFhzZXR0aW5ncy1jbGllbnQsIDAuMTApCi0tQU1fQ09ORklHX0hFQURFUihjb25maWcuaCkKLStBQ19DT05GSUdfSEVBREVSUyhjb25maWcuaCkKLQotIENGTEFHUz0iLU9zIC1XYWxsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ4c2V0dGluZ3MtY2xpZW50L2xpYnhzZXR0aW5ncy1jbGllbnRfMC4xMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlieHNldHRpbmdzLWNsaWVudC9saWJ4c2V0dGluZ3MtY2xpZW50XzAuMTAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3YzVlMjcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ4c2V0dGluZ3MtY2xpZW50L2xpYnhzZXR0aW5ncy1jbGllbnRfMC4xMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLVNVTU1BUlkgPSAidXRpbGl0eSBmdW5jdGlvbnMgZm9yIHRoZSBYc2V0dGluZ3MgcHJvdG9jb2wiCi1ERVNDUklQVElPTiA9ICJMaWJyYXJpZXMgdXNlZCBmb3IgYXBwbGljYXRpb25zIG1ha2luZyB1c2Ugb2YgdGhlIFhzZXR0aW5ncyBjb25maWd1cmF0aW9uIFwKLXNldHRpbmcgcHJvcGFnYXRpb24gcHJvdG9jb2wuIENvbnRyb2xzIHNldHRpbmcgb2YgZG91YmxlIGNsaWNrIHRpbWVvdXQsIGRyYWctYW5kLWRyb3AgXAotdGhyZXNob2xkLCBhbmQgZGVmYXVsdCBmb3JlZ3JvdW5kIGFuZCBiYWNrZ3JvdW5kIGNvbG9ycyBmb3IgYWxsIGFwcGxpY2F0aW9ucyBydW5uaW5nIHdpdGhpbiBhIFwKLWRlc2t0b3AuIgotSE9NRVBBR0UgPSAiaHR0cDovL21hdGNoYm94LXByb2plY3Qub3JnL3NvdXJjZXMvb3B0aW9uYWwtZGVwZW5kZW5jaWVzLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvIgotU0VDVElPTiA9ICJ4L2xpYnMiCi1MSUNFTlNFID0gIk1JVC1zdHlsZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTdjZmFjOWQyZDRkYzM2OTRjYzdlYjYwNWNmMzJhNjliIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3hzZXR0aW5ncy1jbGllbnQuaDtlbmRsaW5lPTIyO21kNT03Y2ZhYzlkMmQ0ZGMzNjk0Y2M3ZWI2MDVjZjMyYTY5YiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly94c2V0dGluZ3MtY29tbW9uLmg7ZW5kbGluZT0yMjttZDU9N2NmYWM5ZDJkNGRjMzY5NGNjN2ViNjA1Y2YzMmE2OWIiCi1ERVBFTkRTID0gInZpcnR1YWwvbGlieDExIgotCi1QUiA9ICJyNSIKLQotaGVhZGVycyA9ICJ4c2V0dGluZ3MtY29tbW9uLmggeHNldHRpbmdzLWNsaWVudC5oIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy9tYXRjaGJveC9vcHRpb25hbC1kZXBlbmRlbmNpZXMvWHNldHRpbmdzLWNsaWVudC0wLjEwLnRhci5neiBcCi0gICAgICAgIGZpbGU6Ly9NSVQtc3R5bGUtbGljZW5zZSBcCi0gICAgICAgIGZpbGU6Ly9saW5rLXgxMS5wYXRjaDthcHBseT15ZXMgXAotICAgICAgICBmaWxlOi8vb2Jzb2xldGVfYXV0b21ha2VfbWFjcm9zLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImMxNGFhOWRiNmMwOTdlMDMwNmRhYzk3ZmI3ZGExYWRkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImYyNzRhNGJjOTY5YWUxOTI5OTRhODU2YjdmNzg2YzZmY2U5NmJhZTc3Zjk2YzFjMmI3MWRkOTc1OTllMDZlNDMiCi0KLVMgPSAiJHtXT1JLRElSfS9Yc2V0dGluZ3MtY2xpZW50LTAuMTAiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0jIGRlcGVuZHMgb24gdmlydHVhbC9saWJ4MTEKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgICMgVGhpcyBwYWNrYWdlIGRvZXNuJ3Qgc2hpcCB3aXRoIGl0cyBvd24gQ09QWUlORyBmaWxlIGFuZAotICAgICMgYXV0b3Rvb2xzIHdpbGwgaW5zdGFsbCBhIEdQTHYyIG9uZSBpbnN0ZWFkIG9mIHRoZSBhY3R1YWwgTUlULXN0eWxlIGxpY2Vuc2UgaGVyZS4KLSAgICAjIEFkZCB0aGUgY29ycmVjdCBsaWNlbnNlIGhlcmUgdG8gYXZvaWQgY29uZnVzaW9uLgotICAgIGNwIC1mICR7V09SS0RJUn0vTUlULXN0eWxlLWxpY2Vuc2UgJHtTfS9DT1BZSU5HCi19Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWF0Y2hib3gtd20vbWF0Y2hib3gtd21fMS4yLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21hdGNoYm94LXdtL21hdGNoYm94LXdtXzEuMi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzZDJkMjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21hdGNoYm94LXdtL21hdGNoYm94LXdtXzEuMi4xLmJiCkBAIC0wLDAgKzEsMzkgQEAKK1NVTU1BUlkgPSAiTWF0Y2hib3ggbGlnaHR3ZWlnaHQgd2luZG93IG1hbmFnZXIiCitIT01FUEFHRSA9ICJodHRwOi8vbWF0Y2hib3gtcHJvamVjdC5vcmciCitCVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnLyIKKworTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcmMvd20uaDtlbmRsaW5lPTIxO21kNT1hN2U4NDQ0NjVlZGJjZjc5YzI4MjM2OWY5M2NhYTgzNSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbWFpbi5jO2VuZGxpbmU9MjE7bWQ1PTNlNWQ5ZjgzMmI1MjdiMGQ3MmRiZThlM2M0YzYwYjk1IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy93bS5jO2VuZGxpbmU9MjE7bWQ1PThkYzlkMjQ0NzdkODdlZjVkZmJjMmU0OTI3MTQ2YWFiIgorCitTRUNUSU9OID0gIngxMS93bSIKK0RFUEVORFMgPSAibGlibWF0Y2hib3ggdmlydHVhbC9saWJ4MTEgbGlieGV4dCBsaWJ4cmVuZGVyIHN0YXJ0dXAtbm90aWZpY2F0aW9uIGV4cGF0IGdjb25mIGxpYnhjdXJzb3IgbGlieGZpeGVzIgorCisjIFNSQ1JFViB0YWdnZWQgMS4yLjEKK1NSQ1JFViA9ICI5ZmQxODA2ZGZhN2M4ZjIyMDJkYjE4YjdiYzg4MDg1N2EzMDE5ZjhjIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9tYXRjaGJveC13aW5kb3ctbWFuYWdlciBcCisgICAgICAgICAgIGZpbGU6Ly9rYmRjb25maWciCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKyMgZGVwZW5kcyBvbiB2aXJ0dWFsL2xpYngxMQorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9LyogXAorICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9tYXRjaGJveCBcCisgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L21hdGNoYm94IFwKKyAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vdGhlbWVzL2Jsb25kaWUvbWF0Y2hib3ggXAorICAgICAgICAgICAgICAgJHtkYXRhZGlyfS90aGVtZXMvRGVmYXVsdC9tYXRjaGJveCBcCisgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3RoZW1lcy9NQk9wdXMvbWF0Y2hib3giCisKK0VYVFJBX09FQ09ORiA9ICIgLS1lbmFibGUtc3RhcnR1cC1ub3RpZmljYXRpb24gXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUteHJtIFwKKyAgICAgICAgICAgICAgICAgLS1lbmFibGUtZXhwYXQgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtZXhwYXQtbGliPSR7U1RBR0lOR19MSUJESVJ9IFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWV4cGF0LWluY2x1ZGVzPSR7U1RBR0lOR19JTkNESVJ9IgorCitkb19pbnN0YWxsX3ByZXBlbmQoKSB7CisJaW5zdGFsbCAke1dPUktESVJ9L2tiZGNvbmZpZyAke1N9L2RhdGEva2JkY29uZmlnCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21hdGNoYm94LXdtL21hdGNoYm94LXdtX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWF0Y2hib3gtd20vbWF0Y2hib3gtd21fZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTc2ODI4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWF0Y2hib3gtd20vbWF0Y2hib3gtd21fZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotU1VNTUFSWSA9ICJNYXRjaGJveCBsaWdodHdlaWdodCB3aW5kb3cgbWFuYWdlciIKLUhPTUVQQUdFID0gImh0dHA6Ly9tYXRjaGJveC1wcm9qZWN0Lm9yZyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvIgotCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy93bS5oO2VuZGxpbmU9MjE7bWQ1PWE3ZTg0NDQ2NWVkYmNmNzljMjgyMzY5ZjkzY2FhODM1IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9tYWluLmM7ZW5kbGluZT0yMTttZDU9M2U1ZDlmODMyYjUyN2IwZDcyZGJlOGUzYzRjNjBiOTUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3dtLmM7ZW5kbGluZT0yMTttZDU9OGRjOWQyNDQ3N2Q4N2VmNWRmYmMyZTQ5MjcxNDZhYWIiCi0KLVNFQ1RJT04gPSAieDExL3dtIgotREVQRU5EUyA9ICJsaWJtYXRjaGJveCB2aXJ0dWFsL2xpYngxMSBsaWJ4ZXh0IGxpYnhyZW5kZXIgc3RhcnR1cC1ub3RpZmljYXRpb24gZXhwYXQgZ2NvbmYgbGlieGN1cnNvciBsaWJ4Zml4ZXMiCi0KLVNSQ1JFViA9ICI4MTc4ZTcwZDVjNzQyYzRjZDYzYjUxZGYyMjhjYzhhYTM1OTRkNTE4IgotUFYgPSAiMS4yK2dpdCR7U1JDUFZ9IgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL21hdGNoYm94LXdpbmRvdy1tYW5hZ2VyIFwKLSAgICAgICAgICAgZmlsZTovL2tiZGNvbmZpZyIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjawotIyBkZXBlbmRzIG9uIHZpcnR1YWwvbGlieDExCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vKiBcCi0gICAgICAgICAgICAgICAke2RhdGFkaXJ9L21hdGNoYm94IFwKLSAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vbWF0Y2hib3ggXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS90aGVtZXMvYmxvbmRpZS9tYXRjaGJveCBcCi0gICAgICAgICAgICAgICAke2RhdGFkaXJ9L3RoZW1lcy9EZWZhdWx0L21hdGNoYm94IFwKLSAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vdGhlbWVzL01CT3B1cy9tYXRjaGJveCIKLQotRVhUUkFfT0VDT05GID0gIiAtLWVuYWJsZS1zdGFydHVwLW5vdGlmaWNhdGlvbiBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS14cm0gXAotICAgICAgICAgICAgICAgICAtLWVuYWJsZS1leHBhdCBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1leHBhdC1saWI9JHtTVEFHSU5HX0xJQkRJUn0gXAotICAgICAgICAgICAgICAgICAtLXdpdGgtZXhwYXQtaW5jbHVkZXM9JHtTVEFHSU5HX0lOQ0RJUn0iCi0KLWRvX2luc3RhbGxfcHJlcGVuZCgpIHsKLQlpbnN0YWxsICR7V09SS0RJUn0va2JkY29uZmlnICR7U30vZGF0YS9rYmRjb25maWcKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVudS1jYWNoZS9tZW51LWNhY2hlXzEuMC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZW51LWNhY2hlL21lbnUtY2FjaGVfMS4wLjEuYmIKaW5kZXggZWI4MGNkM2JiLi5hMWE4ZTI2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lbnUtY2FjaGUvbWVudS1jYWNoZV8xLjAuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lbnUtY2FjaGUvbWVudS1jYWNoZV8xLjAuMS5iYgpAQCAtNiw3ICs2LDcgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA5NjRjNjg5ZmNmNGMyMWM2Nzk3ZWE4NzQwODQxNmI2IgogCiBTRUNUSU9OID0gIngxMS9saWJzIgotREVQRU5EUyA9ICJnbGliLTIuMCBpbnRsdG9vbC1uYXRpdmUgbGliZm0tZXh0cmEiCitERVBFTkRTID0gImdsaWItMi4wIGxpYmZtLWV4dHJhIgogCiBTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9seGRlL21lbnUtY2FjaGUtJHtQVn0udGFyLnh6IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvY2xhbmctY29tcGlsZS1QUjg5NTk5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzL2NsYW5nLWNvbXBpbGUtUFI4OTU5OS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OGJkMzI1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzL2NsYW5nLWNvbXBpbGUtUFI4OTU5OS5wYXRjaApAQCAtMCwwICsxLDExNiBAQAorRnJvbSA1ZWMxNDBjMTdiNTRjMjU5MjAwOTE1MDFiNjY1YjlhYTgwOWNjNWU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF0dCBUdXJuZXIgPG1hdHRzdDg4QGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMTEgSnVsIDIwMTYgMTA6NDQ6MjUgLTA3MDAKK1N1YmplY3Q6IG1hcGk6IE1hc3NhZ2UgY29kZSB0byBhbGxvdyBjbGFuZyB0byBjb21waWxlLgorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitBY2NvcmRpbmcgdG8gaHR0cHM6Ly9sbHZtLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0xOTc3OCNjMyB0aGlzIGNvZGUKK3dhcyB2aW9sYXRpbmcgdGhlIHNwZWMsIHJlc3VsdGluZyBpbiBpdCBmYWlsaW5nIHRvIGNvbXBpbGUuCisKK0NjOiBtZXNhLXN0YWJsZUBsaXN0cy5mcmVlZGVza3RvcC5vcmcKK0NvLWF1dGhvcmVkLWJ5OiBUb21hc3ogUGF3ZcWCIEdhamMgPHRwZ3h5ekBnbWFpbC5jb20+CitCdWd6aWxsYTogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk1OTkKK1Jldmlld2VkLWJ5OiBFbWlsIFZlbGlrb3YgPGVtaWwudmVsaWtvdkBjb2xsYWJvcmEuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCAzNzk5ZDhkLi4xY2E4MzU5IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0yMjYsNiArMjI2LDcgQEAgQVhfR0NDX0ZVTkNfQVRUUklCVVRFKFtwYWNrZWRdKQorIEFYX0dDQ19GVU5DX0FUVFJJQlVURShbcHVyZV0pCisgQVhfR0NDX0ZVTkNfQVRUUklCVVRFKFtyZXR1cm5zX25vbm51bGxdKQorIEFYX0dDQ19GVU5DX0FUVFJJQlVURShbdW51c2VkXSkKKytBWF9HQ0NfRlVOQ19BVFRSSUJVVEUoW3Zpc2liaWxpdHldKQorIEFYX0dDQ19GVU5DX0FUVFJJQlVURShbd2Fybl91bnVzZWRfcmVzdWx0XSkKKyBBWF9HQ0NfRlVOQ19BVFRSSUJVVEUoW3dlYWtdKQorIAorZGlmZiAtLWdpdCBhL3NyYy9tYXBpL2VudHJ5X3g4Ni02NF90bHMuaCBiL3NyYy9tYXBpL2VudHJ5X3g4Ni02NF90bHMuaAoraW5kZXggMzhmYWNjYy4uYzUyNjJhMSAxMDA2NDQKKy0tLSBhL3NyYy9tYXBpL2VudHJ5X3g4Ni02NF90bHMuaAorKysrIGIvc3JjL21hcGkvZW50cnlfeDg2LTY0X3Rscy5oCitAQCAtMjUsNiArMjUsMTEgQEAKKyAgKiAgICBDaGlhLUkgV3UgPG9sdkBsdW5hcmcuY29tPgorICAqLworIAorKyNpZmRlZiBIQVZFX0ZVTkNfQVRUUklCVVRFX1ZJU0lCSUlUWQorKyNkZWZpbmUgSElEREVOIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSkKKysjZWxzZQorKyNkZWZpbmUgSElEREVOCisrI2VuZGlmCisgCisgX19hc21fXygiLnRleHRcbiIKKyAgICAgICAgICIuYmFsaWduIDMyXG4iCitAQCAtNTQsOCArNTksOCBAQCBlbnRyeV9wYXRjaF9wdWJsaWModm9pZCkKKyB7CisgfQorIAorLXN0YXRpYyBjaGFyCisteDg2XzY0X2VudHJ5X3N0YXJ0W107CisrZXh0ZXJuIGNoYXIKKyt4ODZfNjRfZW50cnlfc3RhcnRbXSBISURERU47CisgCisgbWFwaV9mdW5jCisgZW50cnlfZ2V0X3B1YmxpYyhpbnQgc2xvdCkKK2RpZmYgLS1naXQgYS9zcmMvbWFwaS9lbnRyeV94ODZfdGxzLmggYi9zcmMvbWFwaS9lbnRyeV94ODZfdGxzLmgKK2luZGV4IDQ2ZDJlY2UuLjIzMWI0MDkgMTAwNjQ0CistLS0gYS9zcmMvbWFwaS9lbnRyeV94ODZfdGxzLmgKKysrKyBiL3NyYy9tYXBpL2VudHJ5X3g4Nl90bHMuaAorQEAgLTI3LDYgKzI3LDEyIEBACisgCisgI2luY2x1ZGUgPHN0cmluZy5oPgorIAorKyNpZmRlZiBIQVZFX0ZVTkNfQVRUUklCVVRFX1ZJU0lCSUlUWQorKyNkZWZpbmUgSElEREVOIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSkKKysjZWxzZQorKyNkZWZpbmUgSElEREVOCisrI2VuZGlmCisrCisgX19hc21fXygiLnRleHQiKTsKKyAKKyBfX2FzbV9fKCJ4ODZfY3VycmVudF90bHM6XG5cdCIKK0BAIC03MSw4ICs3Nyw4IEBAIF9fYXNtX18oIi50ZXh0Iik7CisgZXh0ZXJuIHVuc2lnbmVkIGxvbmcKKyB4ODZfY3VycmVudF90bHMoKTsKKyAKKy1zdGF0aWMgY2hhciB4ODZfZW50cnlfc3RhcnRbXTsKKy1zdGF0aWMgY2hhciB4ODZfZW50cnlfZW5kW107CisrZXh0ZXJuIGNoYXIgeDg2X2VudHJ5X3N0YXJ0W10gSElEREVOOworK2V4dGVybiBjaGFyIHg4Nl9lbnRyeV9lbmRbXSBISURERU47CisgCisgdm9pZAorIGVudHJ5X3BhdGNoX3B1YmxpYyh2b2lkKQorZGlmZiAtLWdpdCBhL3NyYy9tYXBpL2VudHJ5X3g4Nl90c2QuaCBiL3NyYy9tYXBpL2VudHJ5X3g4Nl90c2QuaAoraW5kZXggZWE3YmFjYi4uMDNkOTczNSAxMDA2NDQKKy0tLSBhL3NyYy9tYXBpL2VudHJ5X3g4Nl90c2QuaAorKysrIGIvc3JjL21hcGkvZW50cnlfeDg2X3RzZC5oCitAQCAtMjUsNiArMjUsMTEgQEAKKyAgKiAgICBDaGlhLUkgV3UgPG9sdkBsdW5hcmcuY29tPgorICAqLworIAorKyNpZmRlZiBIQVZFX0ZVTkNfQVRUUklCVVRFX1ZJU0lCSUlUWQorKyNkZWZpbmUgSElEREVOIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSkKKysjZWxzZQorKyNkZWZpbmUgSElEREVOCisrI2VuZGlmCisgCisgI2RlZmluZSBYODZfRU5UUllfU0laRSAzMgorIAorQEAgLTU4LDggKzYzLDggQEAgX19hc21fXygiLmJhbGlnbiAzMlxuIgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSAidV9leGVjbWVtLmgiCisgCistc3RhdGljIGNvbnN0IGNoYXIgeDg2X2VudHJ5X3N0YXJ0W107Cistc3RhdGljIGNvbnN0IGNoYXIgeDg2X2VudHJ5X2VuZFtdOworK2V4dGVybiBjb25zdCBjaGFyIHg4Nl9lbnRyeV9zdGFydFtdIEhJRERFTjsKKytleHRlcm4gY29uc3QgY2hhciB4ODZfZW50cnlfZW5kW10gSElEREVOOworIAorIHZvaWQKKyBlbnRyeV9wYXRjaF9wdWJsaWModm9pZCkKKy0tIAorY2dpdCB2MC4xMC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy9kaXNhYmxlLWFzbS1vbi1ub24tZ2NjLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzL2Rpc2FibGUtYXNtLW9uLW5vbi1nY2MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJkNjc1NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy9kaXNhYmxlLWFzbS1vbi1ub24tZ2NjLnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK0NvbmZpZ3VyZSBjaGVja3MgZm9yIGNvbXBpbGVyIHRvIGJlIGdjYyBhbmQgdGhlbiBpdCBlbmFibGVzIGFzbV9vZmZzZXRzCitnZW5lcmF0aW9uLiBzZWUKKworaHR0cHM6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9tZXNhL21lc2EvY29tbWl0Lz9pZD03M2M5YjRiMGUwNWZjNjY2MjliYTI1MDg0Njk0OGRjNTVjMGU3YTBkCisKK0hvd2V2ZXIsIHdlIG1pc3NlZCB0aGUgY2hlY2sgd2hlbiBlbmFibGluZyB0aGlzIG9uIGNyb3NzIGNvbXBpbGF0aW9uCit3aGVuIGFyY2hpdGVjdHVyZSBmb3IgYm90aCBob3N0IGFuZCB0YXJnZXQgaXMgeDg2CisKK0ZpeGVzIGVycm9ycyBsaWtlCisuL2dlbl9tYXR5cGVzID4gbWF0eXBlcy5oCisvYmluL2Jhc2g6IC4vZ2VuX21hdHlwZXM6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKKworLUtoZW0KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworSW5kZXg6IG1lc2EtMTIuMC4xL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG1lc2EtMTIuMC4xLm9yaWcvY29uZmlndXJlLmFjCisrKysgbWVzYS0xMi4wLjEvY29uZmlndXJlLmFjCitAQCAtNzMyLDcgKzczMiw3IEBAIHRlc3QgIngkZW5hYmxlX2FzbSIgPSB4bm8gJiYgQUNfTVNHX1JFU1UKKyBpZiB0ZXN0ICJ4JGVuYWJsZV9hc20iID0geHllcyAtYSAieCRjcm9zc19jb21waWxpbmciID0geHllczsgdGhlbgorICAgICBjYXNlICIkaG9zdF9jcHUiIGluCisgICAgIGk/ODYgfCB4ODZfNjQgfCBhbWQ2NCkKKy0gICAgICAgIGlmIHRlc3QgIngkaG9zdF9jcHUiICE9ICJ4JHRhcmdldF9jcHUiOyB0aGVuCisrICAgICAgICBpZiB0ZXN0ICJ4JGhvc3RfY3B1IiAhPSAieCR0YXJnZXRfY3B1IiAtbyAieCRhY3ZfbWVzYV9DTEFORyIgPSB4eWVzOyB0aGVuCisgICAgICAgICAgICAgZW5hYmxlX2FzbT1ubworICAgICAgICAgICAgIEFDX01TR19SRVNVTFQoW25vLCBjcm9zcyBjb21waWxpbmddKQorICAgICAgICAgZmkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWRlbW9zLzAwMDItQ29ycmVjdGx5LWltcGxlbWVudC13aXRoLUFDX1dJVEgtZ2x1dC1zby10aGF0LXdpdGhvdS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWRlbW9zLzAwMDItQ29ycmVjdGx5LWltcGxlbWVudC13aXRoLUFDX1dJVEgtZ2x1dC1zby10aGF0LXdpdGhvdS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDkwNTRjYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1kZW1vcy8wMDAyLUNvcnJlY3RseS1pbXBsZW1lbnQtd2l0aC1BQ19XSVRILWdsdXQtc28tdGhhdC13aXRob3UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1Gcm9tIDM2ODI5YThkN2FkMjg4ODUxNWZiZWU5NWMyYTcwYjNkNjM2ZDc1MzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotRGF0ZTogV2VkLCA5IEp1bCAyMDE0IDE0OjMwOjMzICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMi85XSBDb3JyZWN0bHkgaW1wbGVtZW50IHdpdGggQUNfV0lUSChnbHV0KSBzbyB0aGF0Ci0gLS13aXRob3V0LWdsdXQgd29ya3MuCi0KLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCAoaHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3BhdGNoLzY0NDE3LykKLQotLS0tCi0gY29uZmlndXJlLmFjIHwgMjYgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGM0ZWUxMmIuLjk0NDU0MjQgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTY3LDIxICs2NywyNSBAQCBERU1PX0NGTEFHUz0iJERFTU9fQ0ZMQUdTICRHTF9DRkxBR1MiCi0gREVNT19MSUJTPSIkREVNT19MSUJTICRHTF9MSUJTIgotIAotIGRubCBDaGVjayBmb3IgR0xVVAotLUdMVVRfQ0ZMQUdTPSIiCi0tR0xVVF9MSUJTPS1sZ2x1dAotLWdsdXRfZW5hYmxlZD15ZXMKLStnbHV0X2VuYWJsZWQ9bm8KLSBBQ19BUkdfV0lUSChbZ2x1dF0sCi0gCVtBU19IRUxQX1NUUklORyhbLS13aXRoLWdsdXQ9RElSXSwKLSAJCQlbZ2x1dCBpbnN0YWxsIGRpcmVjdG9yeV0pXSwKLSAJW0dMVVRfQ0ZMQUdTPSItSSR3aXRodmFsL2luY2x1ZGUiCi0tCSBHTFVUX0xJQlM9Ii1MJHdpdGh2YWwvbGliIC1sZ2x1dCJdKQotLUFDX0NIRUNLX0hFQURFUihbR0wvZ2x1dC5oXSwKLS0JCVtdLAotLQkJW2dsdXRfZW5hYmxlZD1ub10pCi0tQUNfQ0hFQ0tfTElCKFtnbHV0XSwKLS0JCVtnbHV0SW5pdF0sCi0tCQlbXSwKLS0JCVtnbHV0X2VuYWJsZWQ9bm9dKQotKwkgR0xVVF9MSUJTPSItTCR3aXRodmFsL2xpYiAtbGdsdXQiXSwKLSsJW0dMVVRfQ0ZMQUdTPSIiCi0rCSBHTFVUX0xJQlM9Ii1sZ2x1dCJdCi0rICAgICAgICApCi0rQVNfSUYoW3Rlc3QgIngkd2l0aF9nbHV0IiAhPSB4bm9dLAotKyAgICAgIFtBQ19DSEVDS19IRUFERVIoW0dML2dsdXQuaF0sCi0rICAgICAgICAgICAgICAgICAgICAgICBbXSwKLSsgICAgICAgICAgICAgICAgICAgICAgIFtnbHV0X2VuYWJsZWQ9bm9dKQotKyAgICAgICBBQ19DSEVDS19MSUIoW2dsdXRdLAotKyAgICAgICAgICAgICAgICAgICAgW2dsdXRJbml0XSwKLSsgICAgICAgICAgICAgICAgICAgIFtdLAotKyAgICAgICAgICAgICAgICAgICAgW2dsdXRfZW5hYmxlZD1ub10pCi0rICAgICAgIGdsdXRfZW5hYmxlZD15ZXMKLStdKQotIAotIGRubCBDaGVjayBmb3IgRnJlZUdMVVQgMi42IG9yIGxhdGVyCi0gQUNfRUdSRVBfSEVBREVSKFtnbHV0SW5pdENvbnRleHRQcm9maWxlXSwKLS0tIAotMi4wLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EtZGVtb3MvMDAwMy1jb25maWd1cmUtQWxsb3ctdG8tZGlzYWJsZS1kZW1vcy13aGljaC1yZXF1aXJlLUdMRVctLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EtZGVtb3MvMDAwMy1jb25maWd1cmUtQWxsb3ctdG8tZGlzYWJsZS1kZW1vcy13aGljaC1yZXF1aXJlLUdMRVctLnBhdGNoCmluZGV4IDZiNThjMmIuLmY2YjU5YTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWRlbW9zLzAwMDMtY29uZmlndXJlLUFsbG93LXRvLWRpc2FibGUtZGVtb3Mtd2hpY2gtcmVxdWlyZS1HTEVXLS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1kZW1vcy8wMDAzLWNvbmZpZ3VyZS1BbGxvdy10by1kaXNhYmxlLWRlbW9zLXdoaWNoLXJlcXVpcmUtR0xFVy0ucGF0Y2gKQEAgLTEsOCArMSw3IEBACi1Gcm9tIGIyNWU5YzY3NWNmNTYwYjhiMDM3ZGM4NTVjNmIzYjFkMDk5NTc4NjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDc3OTQzODc3MGJlZGYzZDUzZTZhZDhmN2NkNjg4OWI3ZjUwZGFmM2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDkgSnVsIDIwMTQgMTQ6MjM6NDEgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAzLzldIGNvbmZpZ3VyZTogQWxsb3cgdG8gZGlzYWJsZSBkZW1vcyB3aGljaCByZXF1aXJlIEdMRVcgb3IKLSBHTFUKK1N1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlOiBBbGxvdyB0byBkaXNhYmxlIGRlbW9zIHdoaWNoIHJlcXVpcmUgR0xFVyBvciBHTFUKIAogKiBpbiBzb21lIHN5c3RlbXMgd2l0aG91dCBYMTEgc3VwcG9ydCB3ZSBkb24ndCBoYXZlIEdMRVcsIGJ1dAogICBtZXNhLWRlbW9zIGFyZSBzdGlsbCB1c2VmdWwKQEAgLTEwLDE3ICs5LDIwIEBACiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgorCitQb3J0IHRvIDguMy4wCitTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgogLS0tCiAgY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgfCA0OSArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQotIHNyYy9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgIHwgMTQgKysrKysrLS0tCisgc3JjL01ha2VmaWxlLmFtICAgICAgICAgICAgICAgfCAxOCArKysrKysrKy0tLQogIHNyYy9kZW1vcy9NYWtlZmlsZS5hbSAgICAgICAgIHwgNzMgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQogIHNyYy9lZ2wvTWFrZWZpbGUuYW0gICAgICAgICAgIHwgIDggKysrLS0KLSBzcmMvZWdsL29wZW5nbGVzMS9NYWtlZmlsZS5hbSB8IDQ0ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCi0gc3JjL2VnbC9vcGVuZ2xlczIvTWFrZWZpbGUuYW0gfCAzMyArKysrKysrKysrLS0tLS0tLS0tCi0gNiBmaWxlcyBjaGFuZ2VkLCAxMzUgaW5zZXJ0aW9ucygrKSwgODYgZGVsZXRpb25zKC0pCisgc3JjL2VnbC9vcGVuZ2xlczEvTWFrZWZpbGUuYW0gfCAxMCArKysrLS0KKyBzcmMvZWdsL29wZW5nbGVzMi9NYWtlZmlsZS5hbSB8IDI5ICsrKysrKysrLS0tLS0tLS0tCisgNiBmaWxlcyBjaGFuZ2VkLCAxMTcgaW5zZXJ0aW9ucygrKSwgNzAgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDk0NDU0MjQuLmJjNGM4ZDEgMTAwNjQ0CitpbmRleCAwNTI1YjA5Li4yODgzNGNkIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKIEBAIC05MywyNSArOTMsNDQgQEAgQUNfRUdSRVBfSEVBREVSKFtnbHV0SW5pdENvbnRleHRQcm9maWxlXSwKQEAgLTkyLDEwICs5NCwxMSBAQAogIEFNX0NPTkRJVElPTkFMKEhBVkVfR0xFU1YxLCB0ZXN0ICJ4JGdsZXN2MV9lbmFibGVkIiA9ICJ4eWVzIikKICBBTV9DT05ESVRJT05BTChIQVZFX0dMRVNWMiwgdGVzdCAieCRnbGVzdjJfZW5hYmxlZCIgPSAieHllcyIpCiBkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCi1pbmRleCAxNjQ3ZDY0Li43NTRjNDdjIDEwMDY0NAoraW5kZXggMTY0N2Q2NC4uOGI4OWRlZSAxMDA2NDQKIC0tLSBhL3NyYy9NYWtlZmlsZS5hbQogKysrIGIvc3JjL01ha2VmaWxlLmFtCi1AQCAtMjMsMTQgKzIzLDE4IEBACitAQCAtMjIsMTUgKzIyLDE5IEBACisgIyBBdXRob3JzOgogICMgICAgRXJpYyBBbmhvbHQgPGVyaWNAYW5ob2x0Lm5ldD4KICAKICtpZiBIQVZFX0dMRVcKQEAgLTExNiw3ICsxMTksNyBAQAogIAlvYmp2aWV3ZXIgXAogIAlvc2RlbW9zIFwKICAJcGVyZiBcCi1AQCAtNDAsOCArMzksMTIgQEAgU1VCRElSUyA9IFwKK0BAIC00MCw4ICs0NCwxMiBAQCBTVUJESVJTID0gXAogIAlzbGFuZyBcCiAgCXRlc3RzIFwKICAJdG9vbHMgXApAQCAtMjg5LDEwICsyOTIsMTAgQEAKICsJb3BlbnZnCiArZW5kaWYKIGRpZmYgLS1naXQgYS9zcmMvZWdsL29wZW5nbGVzMS9NYWtlZmlsZS5hbSBiL3NyYy9lZ2wvb3BlbmdsZXMxL01ha2VmaWxlLmFtCi1pbmRleCA3YTk4MjhkLi4zNDU1ZTc1IDEwMDY0NAoraW5kZXggZmEzOTdjMi4uMjE4NTNlOCAxMDA2NDQKIC0tLSBhL3NyYy9lZ2wvb3BlbmdsZXMxL01ha2VmaWxlLmFtCiArKysgYi9zcmMvZWdsL29wZW5nbGVzMS9NYWtlZmlsZS5hbQotQEAgLTM2LDI4ICszNiw0MyBAQCBBTV9MREZMQUdTID0gXAorQEAgLTM2LDkgKzM2LDEyIEBAIEFNX0xERkxBR1MgPSBcCiAgCSQoRUdMX0xJQlMpIFwKICAJLWxtCiAgCkBAIC0zMDEsNDIgKzMwNCwxMyBAQAogIGlmIEhBVkVfRUdMCiAgaWYgSEFWRV9HTEVTVjEKIC1ub2luc3RfUFJPR1JBTVMgPSBcCi0tCWJpbmR0ZXggXAotLQljbGVhciBcCi0rbm9pbnN0X1BST0dSQU1TICs9IFwKLSAJZHJhd3RleF9zY3JlZW4gXAotKwlnZWFyc19zY3JlZW4gXAotKwl0b3J1c19zY3JlZW4gXAotKwl0cmlfc2NyZWVuCi0rCi0rZHJhd3RleF9zY3JlZW5fU09VUkNFUyA9IGRyYXd0ZXguYwotK2dlYXJzX3NjcmVlbl9TT1VSQ0VTID0gZ2VhcnMuYwotK3RvcnVzX3NjcmVlbl9TT1VSQ0VTID0gdG9ydXMuYwotK3RyaV9zY3JlZW5fU09VUkNFUyA9IHRyaS5jCi0rCi0rZHJhd3RleF9zY3JlZW5fTERBREQgPSAuLi9lZ2x1dC9saWJlZ2x1dF9zY3JlZW4ubGEKLStnZWFyc19zY3JlZW5fTERBREQgPSAuLi9lZ2x1dC9saWJlZ2x1dF9zY3JlZW4ubGEKLSt0b3J1c19zY3JlZW5fTERBREQgPSAuLi9lZ2x1dC9saWJlZ2x1dF9zY3JlZW4ubGEKLSt0cmlfc2NyZWVuX0xEQUREID0gLi4vZWdsdXQvbGliZWdsdXRfc2NyZWVuLmxhCi0rCiAraWYgSEFWRV9YMTEKLStub2luc3RfUFJPR1JBTVMgKz0gXAotKwljbGVhcgotKwogK2Jpbl9QUk9HUkFNUyA9IFwKLSsJYmluZHRleCBcCisgCWJpbmR0ZXggXAorIAljbGVhciBcCiAgCWRyYXd0ZXhfeDExIFwKLSAJZWdsZmJkZXYgXAotIAllczFfaW5mbyBcCi0tCWdlYXJzX3NjcmVlbiBcCi0gCWdlYXJzX3gxMSBcCi0gCW1zYWEgXAotIAlwYnVmZmVyXAotIAlyZW5kZXJfdGV4IFwKLSAJdGV4dHVyZV9mcm9tX3BpeG1hcCBcCi0tCXRvcnVzX3NjcmVlbiBcCitAQCAtNTIsOCArNTUsNiBAQCBub2luc3RfUFJPR1JBTVMgPSBcCiAgCXRvcnVzX3gxMSBcCi0tCXRyaV9zY3JlZW4gXAogIAl0cmlfeDExIFwKICAJdHdvX3dpbgogLWVuZGlmCkBAIC0zNDQsMjYgKzMxOCw3IEBACiAgCiAgYmluZHRleF9MREFERCA9ICQoWDExX0xJQlMpCiAgZXMxX2luZm9fTERBREQgPSAkKFgxMV9MSUJTKQotQEAgLTcxLDIyICs4NiwxNSBAQCB0d29fd2luX0xEQUREID0gJChYMTFfTElCUykKLSBjbGVhcl9MREFERCA9IC4uL2VnbHV0L2xpYmVnbHV0X3gxMS5sYSAkKEVHTF9MSUJTKSAkKFgxMV9MSUJTKQotIGNsZWFyX0xERkxBR1MgPQotIAotLWRyYXd0ZXhfc2NyZWVuX1NPVVJDRVMgPSBkcmF3dGV4LmMKLS1nZWFyc19zY3JlZW5fU09VUkNFUyA9IGdlYXJzLmMKLS10b3J1c19zY3JlZW5fU09VUkNFUyA9IHRvcnVzLmMKLS10cmlfc2NyZWVuX1NPVVJDRVMgPSB0cmkuYwotLQotIGRyYXd0ZXhfeDExX1NPVVJDRVMgPSBkcmF3dGV4LmMKLSBnZWFyc194MTFfU09VUkNFUyA9IGdlYXJzLmMKLSB0b3J1c194MTFfU09VUkNFUyA9IHRvcnVzLmMKLSB0cmlfeDExX1NPVVJDRVMgPSB0cmkuYwotIAotLWRyYXd0ZXhfc2NyZWVuX0xEQUREID0gLi4vZWdsdXQvbGliZWdsdXRfc2NyZWVuLmxhCi0tZ2VhcnNfc2NyZWVuX0xEQUREID0gLi4vZWdsdXQvbGliZWdsdXRfc2NyZWVuLmxhCi0tdG9ydXNfc2NyZWVuX0xEQUREID0gLi4vZWdsdXQvbGliZWdsdXRfc2NyZWVuLmxhCi0tdHJpX3NjcmVlbl9MREFERCA9IC4uL2VnbHV0L2xpYmVnbHV0X3NjcmVlbi5sYQotLQotIGRyYXd0ZXhfeDExX0xEQUREID0gLi4vZWdsdXQvbGliZWdsdXRfeDExLmxhCitAQCAtNzYsMyArNzcsNiBAQCBkcmF3dGV4X3gxMV9MREFERCA9IC4uL2VnbHV0L2xpYmVnbHV0X3gxMS5sYQogIGdlYXJzX3gxMV9MREFERCA9IC4uL2VnbHV0L2xpYmVnbHV0X3gxMS5sYQogIHRvcnVzX3gxMV9MREFERCA9IC4uL2VnbHV0L2xpYmVnbHV0X3gxMS5sYQogIHRyaV94MTFfTERBREQgPSAuLi9lZ2x1dC9saWJlZ2x1dF94MTEubGEKQEAgLTM3MSwzNSArMzI2LDM1IEBACiArZW5kaWYKICtlbmRpZgogZGlmZiAtLWdpdCBhL3NyYy9lZ2wvb3BlbmdsZXMyL01ha2VmaWxlLmFtIGIvc3JjL2VnbC9vcGVuZ2xlczIvTWFrZWZpbGUuYW0KLWluZGV4IDQxYzFiODAuLjc0YWY0NjAgMTAwNjQ0CitpbmRleCBiODBiYTUwLi4xN2Y4ZDQ5IDEwMDY0NAogLS0tIGEvc3JjL2VnbC9vcGVuZ2xlczIvTWFrZWZpbGUuYW0KICsrKyBiL3NyYy9lZ2wvb3BlbmdsZXMyL01ha2VmaWxlLmFtCi1AQCAtMzYsMjYgKzM2LDI5IEBAIEFNX0xERkxBR1MgPSBcCitAQCAtMzMsMjcgKzMzLDI4IEBAIEFNX0xERkxBR1MgPSBcCisgCSQoRUdMX0xJQlMpIFwKKyAJLWxtCisgCisrYmluX1BST0dSQU1TID0KKysKICBpZiBIQVZFX0VHTAogIGlmIEhBVkVfR0xFU1YyCi0gYmluX1BST0dSQU1TID0gXAorLWJpbl9QUk9HUkFNUyA9CistaWYgSEFWRV9YMTEKKy1iaW5fUFJPR1JBTVMgKz0gXAogLQllczJfaW5mbyBcCi0tCWVzMmdlYXJzX3NjcmVlbiBcCiAtCWVzMmdlYXJzX3gxMSBcCiAtCWVzMnRyaQotKwllczJnZWFyc19zY3JlZW4KLSsKLStlczJnZWFyc19zY3JlZW5fU09VUkNFUyA9IGVzMmdlYXJzLmMKLStlczJnZWFyc19zY3JlZW5fTERBREQgPSAuLi9lZ2x1dC9saWJlZ2x1dF9zY3JlZW4ubGEKLSsKKy1lbmRpZgogIGlmIEhBVkVfV0FZTEFORAogIGJpbl9QUk9HUkFNUyArPSBlczJnZWFyc193YXlsYW5kCiAtZW5kaWYKIC1lbmRpZgotLWVuZGlmCisrCisrZXMyZ2VhcnNfd2F5bGFuZF9TT1VSQ0VTID0gZXMyZ2VhcnMuYworK2VzMmdlYXJzX3dheWxhbmRfTERBREQgPSAuLi9lZ2x1dC9saWJlZ2x1dF93YXlsYW5kLmxhCisgZW5kaWYKICAKIC1lczJfaW5mb19MREFERCA9ICQoWDExX0xJQlMpCiAtZXMydHJpX0xEQUREID0gJChYMTFfTElCUykKLStlczJnZWFyc193YXlsYW5kX1NPVVJDRVMgPSBlczJnZWFycy5jCi0rZXMyZ2VhcnNfd2F5bGFuZF9MREFERCA9IC4uL2VnbHV0L2xpYmVnbHV0X3dheWxhbmQubGEKLStlbmRpZgotIAotLWVzMmdlYXJzX3NjcmVlbl9TT1VSQ0VTID0gZXMyZ2VhcnMuYwogK2lmIEhBVkVfWDExCiArYmluX1BST0dSQU1TICs9IFwKICsJZXMydHJpIFwKQEAgLTQwOSw4ICszNjQsNiBAQAogK2VzMl9pbmZvX0xEQUREID0gJChYMTFfTElCUykKICBlczJnZWFyc194MTFfU09VUkNFUyA9IGVzMmdlYXJzLmMKIC0KLS1lczJnZWFyc19zY3JlZW5fTERBREQgPSAuLi9lZ2x1dC9saWJlZ2x1dF9zY3JlZW4ubGEKLS0KICBlczJnZWFyc194MTFfTERBREQgPSAuLi9lZ2x1dC9saWJlZ2x1dF94MTEubGEKICtlczJ0cmlfTERBREQgPSAkKFgxMV9MSUJTKQogK2VuZGlmCkBAIC00MjAsNSArMzczLDUgQEAKIC1lczJnZWFyc193YXlsYW5kX1NPVVJDRVMgPSBlczJnZWFycy5jCiAtZXMyZ2VhcnNfd2F5bGFuZF9MREFERCA9IC4uL2VnbHV0L2xpYmVnbHV0X3dheWxhbmQubGEKIC0tIAotMi4wLjAKKzIuMS40CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWRlbW9zLzAwMDUtRml4LWJ1aWxkLXdoZW4tRUdMX01FU0Ffc2NyZWVuX3N1cmZhY2UtZXh0ZW5zaW9uLWlzbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWRlbW9zLzAwMDUtRml4LWJ1aWxkLXdoZW4tRUdMX01FU0Ffc2NyZWVuX3N1cmZhY2UtZXh0ZW5zaW9uLWlzbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWFjMmEzNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1kZW1vcy8wMDA1LUZpeC1idWlsZC13aGVuLUVHTF9NRVNBX3NjcmVlbl9zdXJmYWNlLWV4dGVuc2lvbi1pc24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNjcgKzAsMCBAQAotRnJvbSA0NTMzNTNhMjIxZGU5YzY0NDc5ZjQzNzI1NjVkMmNkODU5MWIzNmNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRnJhbmsgQmlubnMgPGZyYW5rLmJpbm5zQGltZ3RlYy5jb20+Ci1EYXRlOiBGcmksIDI5IEp1biAyMDEyIDExOjI2OjA0ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggNS85XSBGaXggYnVpbGQgd2hlbiBFR0xfTUVTQV9zY3JlZW5fc3VyZmFjZSBleHRlbnNpb24gaXNuJ3QKLSBwcmVzZW50Ci0KLVRoZSBFR0wgZGVtb3Mgd29uJ3QgYnVpbGQgYWdhaW5zdCBFR0wgaW1wbGVtZW50YXRpb25zIHRoYXQgZG9uJ3Qgc3VwcG9ydAotdGhlIEVHTF9NRVNBX3NjcmVlbl9zdXJmYWNlIGV4dGVuc2lvbi4gRml4IHRoaXMsIGluIG1vc3QgY2FzZXMsIGJ5Ci13cmFwcGluZyByZWxldmFudCBiaXRzIG9mIGNvZGUgaW4gI2lmZGVmIEVHTF9NRVNBX3NjcmVlbl9zdXJmYWNlLgotCi1TaWduZWQtb2ZmLWJ5OiBGcmFuayBCaW5ucyA8ZnJhbmsuYmlubnNAaW1ndGVjLmNvbT4KLQotQXBwbGllZCBhbmQgZml4ZWQgdXAgaW4gWW9jdG8gYnkuLi4KLQotSW50ZWdyYXRlZC1ieTogVG9tIFphbnVzc2kgPHRvbS56YW51c3NpQGxpbnV4LmludGVsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBzcmMvZWdsL2VnbHV0L2VnbHV0LmMgICAgICAgIHwgIDkgKysrKysrKy0tCi0gc3JjL2VnbC9lZ2x1dC9lZ2x1dF9zY3JlZW4uYyB8IDE0ICsrKysrKysrKysrKysrCi0gc3JjL2VnbC9vcGVuZ2wvZGVtbzEuYyAgICAgICB8ICAyICsrCi0gc3JjL2VnbC9vcGVuZ2wvZGVtbzIuYyAgICAgICB8ICA3ICsrKysrKy0KLSBzcmMvZWdsL29wZW5nbC9kZW1vMy5jICAgICAgIHwgIDcgKysrKysrLQotIDUgZmlsZXMgY2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9lZ2wvZWdsdXQvZWdsdXQuYyBiL3NyYy9lZ2wvZWdsdXQvZWdsdXQuYwotaW5kZXggMmVlNmYxNS4uZjZhMmFkNCAxMDA2NDQKLS0tLSBhL3NyYy9lZ2wvZWdsdXQvZWdsdXQuYwotKysrIGIvc3JjL2VnbC9lZ2x1dC9lZ2x1dC5jCi1AQCAtNzYsOCArNzYsOSBAQCBfZWdsdXROb3codm9pZCkKLSBzdGF0aWMgdm9pZAotIF9lZ2x1dERlc3Ryb3lXaW5kb3coc3RydWN0IGVnbHV0X3dpbmRvdyAqd2luKQotIHsKLS0gICBpZiAoX2VnbHV0LT5zdXJmYWNlX3R5cGUgIT0gRUdMX1BCVUZGRVJfQklUICYmCi0tICAgICAgIF9lZ2x1dC0+c3VyZmFjZV90eXBlICE9IEVHTF9TQ1JFRU5fQklUX01FU0EpCi0rCi0rICAgaWYgKF9lZ2x1dC0+c3VyZmFjZV90eXBlID09IEVHTF9XSU5ET1dfQklUIHx8Ci0rICAgICAgIF9lZ2x1dC0+c3VyZmFjZV90eXBlID09IEVHTF9QSVhNQVBfQklUKQotICAgICAgIGVnbERlc3Ryb3lTdXJmYWNlKF9lZ2x1dC0+ZHB5LCB3aW4tPnN1cmZhY2UpOwotIAotICAgIF9lZ2x1dE5hdGl2ZUZpbmlXaW5kb3cod2luKTsKLUBAIC0xNzUsNyArMTc2LDkgQEAgX2VnbHV0Q3JlYXRlV2luZG93KGNvbnN0IGNoYXIgKnRpdGxlLCBpbnQgeCwgaW50IHksIGludCB3LCBpbnQgaCkKLSAgICAgICAgICAgICB3aW4tPmNvbmZpZywgd2luLT5uYXRpdmUudS5waXhtYXAsIE5VTEwpOwotICAgICAgIGJyZWFrOwotICAgIGNhc2UgRUdMX1BCVUZGRVJfQklUOgotKyNpZmRlZiBFR0xfTUVTQV9zY3JlZW5fc3VyZmFjZQotICAgIGNhc2UgRUdMX1NDUkVFTl9CSVRfTUVTQToKLSsjZW5kaWYKLSAgICAgICB3aW4tPnN1cmZhY2UgPSB3aW4tPm5hdGl2ZS51LnN1cmZhY2U7Ci0gICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLUBAIC0yODksOCArMjkyLDEwIEBAIGVnbHV0RGVzdHJveVdpbmRvdyhpbnQgd2luKQotICAgIGlmICh3aW5kb3ctPmluZGV4ICE9IHdpbikKLSAgICAgICByZXR1cm47Ci0gCi0rI2lmZGVmIEVHTF9NRVNBX3NjcmVlbl9zdXJmYWNlCi0gICAgLyogWFhYIGl0IGNhdXNlcyBzb21lIGJ1ZyBpbiBzdC9lZ2wgS01TIGJhY2tlbmQgKi8KLSAgICBpZiAoIF9lZ2x1dC0+c3VyZmFjZV90eXBlICE9IEVHTF9TQ1JFRU5fQklUX01FU0EpCi0rI2VuZGlmCi0gICAgICAgZWdsTWFrZUN1cnJlbnQoX2VnbHV0LT5kcHksIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX0NPTlRFWFQpOwotIAotICAgIF9lZ2x1dERlc3Ryb3lXaW5kb3coX2VnbHV0LT5jdXJyZW50KTsKLWRpZmYgLS1naXQgYS9zcmMvZWdsL2VnbHV0L2VnbHV0X3NjcmVlbi5jIGIvc3JjL2VnbC9lZ2x1dC9lZ2x1dF9zY3JlZW4uYwotaW5kZXggMDIxYThmMS4uMDk0YTRlMiAxMDA2NDQKLS0tLSBhL3NyYy9lZ2wvZWdsdXQvZWdsdXRfc2NyZWVuLmMKLSsrKyBiL3NyYy9lZ2wvZWdsdXQvZWdsdXRfc2NyZWVuLmMKLUBAIC0zNSwyNiArMzUsMzMgQEAKLSAKLSAjZGVmaW5lIE1BWF9NT0RFUyAxMDAKLSAKLSsjaWZkZWYgRUdMX01FU0Ffc2NyZWVuX3N1cmZhY2UKLSBzdGF0aWMgRUdMU2NyZWVuTUVTQSBrbXNfc2NyZWVuOwotIHN0YXRpYyBFR0xNb2RlTUVTQSBrbXNfbW9kZTsKLSBzdGF0aWMgRUdMaW50IGttc193aWR0aCwga21zX2hlaWdodDsKLSsjZW5kaWYKLSAKLSB2b2lkCi0gX2VnbHV0TmF0aXZlSW5pdERpc3BsYXkodm9pZCkKLSB7Ci0rI2lmZGVmIEVHTF9NRVNBX3NjcmVlbl9zdXJmYWNlCi0gICAgX2VnbHV0LT5uYXRpdmVfZHB5ID0gRUdMX0RFRkFVTFRfRElTUExBWTsKLSAgICBfZWdsdXQtPnN1cmZhY2VfdHlwZSA9IEVHTF9TQ1JFRU5fQklUX01FU0E7Ci0rI2VuZGlmCi0gfQotIAotIHZvaWQKLSBfZWdsdXROYXRpdmVGaW5pRGlzcGxheSh2b2lkKQotIHsKLSsjaWZkZWYgRUdMX01FU0Ffc2NyZWVuX3N1cmZhY2UKLSAgICBrbXNfc2NyZWVuID0gMDsKLSAgICBrbXNfbW9kZSA9IDA7Ci0gICAga21zX3dpZHRoID0gMDsKLSAgICBrbXNfaGVpZ2h0ID0gMDsKLSsjZW5kaWYKLSB9Ci0gCi0rI2lmZGVmIEVHTF9NRVNBX3NjcmVlbl9zdXJmYWNlCi0gc3RhdGljIHZvaWQKLSBpbml0X2ttcyh2b2lkKQotIHsKLUBAIC05NCwxOSArMTAxLDIzIEBAIGluaXRfa21zKHZvaWQpCi0gICAga21zX3dpZHRoID0gd2lkdGg7Ci0gICAga21zX2hlaWdodCA9IGhlaWdodDsKLSB9Ci0rI2VuZGlmCi0gCi0gdm9pZAotIF9lZ2x1dE5hdGl2ZUluaXRXaW5kb3coc3RydWN0IGVnbHV0X3dpbmRvdyAqd2luLCBjb25zdCBjaGFyICp0aXRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCB4LCBpbnQgeSwgaW50IHcsIGludCBoKQotIHsKLSsjaWZkZWYgRUdMX01FU0Ffc2NyZWVuX3N1cmZhY2UKLSAgICBFR0xpbnQgc3VyZl9hdHRyaWJzWzE2XTsKLSAgICBFR0xpbnQgaTsKLSsjZW5kaWYKLSAgICBjb25zdCBjaGFyICpleHRzOwotIAotICAgIGV4dHMgPSBlZ2xRdWVyeVN0cmluZyhfZWdsdXQtPmRweSwgRUdMX0VYVEVOU0lPTlMpOwotICAgIGlmICghZXh0cyB8fCAhc3Ryc3RyKGV4dHMsICJFR0xfTUVTQV9zY3JlZW5fc3VyZmFjZSIpKQotICAgICAgIF9lZ2x1dEZhdGFsKCJFR0xfTUVTQV9zY3JlZW5fc3VyZmFjZSBpcyBub3Qgc3VwcG9ydGVkXG4iKTsKLSAKLSsjaWZkZWYgRUdMX01FU0Ffc2NyZWVuX3N1cmZhY2UKLSAgICBpbml0X2ttcygpOwotIAotICAgIGkgPSAwOwotQEAgLTEyOCwxNCArMTM5LDE3IEBAIF9lZ2x1dE5hdGl2ZUluaXRXaW5kb3coc3RydWN0IGVnbHV0X3dpbmRvdyAqd2luLCBjb25zdCBjaGFyICp0aXRsZSwKLSAKLSAgICB3aW4tPm5hdGl2ZS53aWR0aCA9IGttc193aWR0aDsKLSAgICB3aW4tPm5hdGl2ZS5oZWlnaHQgPSBrbXNfaGVpZ2h0OwotKyNlbmRpZgotIH0KLSAKLSB2b2lkCi0gX2VnbHV0TmF0aXZlRmluaVdpbmRvdyhzdHJ1Y3QgZWdsdXRfd2luZG93ICp3aW4pCi0gewotKyNpZmRlZiBFR0xfTUVTQV9zY3JlZW5fc3VyZmFjZQotICAgIGVnbFNob3dTY3JlZW5TdXJmYWNlTUVTQShfZWdsdXQtPmRweSwKLSAgICAgICAgICBrbXNfc2NyZWVuLCBFR0xfTk9fU1VSRkFDRSwgMCk7Ci0gICAgZWdsRGVzdHJveVN1cmZhY2UoX2VnbHV0LT5kcHksIHdpbi0+bmF0aXZlLnUuc3VyZmFjZSk7Ci0rI2VuZGlmCi0gfQotIAotIHZvaWQKLWRpZmYgLS1naXQgYS9zcmMvZWdsL29wZW5nbC9kZW1vMS5jIGIvc3JjL2VnbC9vcGVuZ2wvZGVtbzEuYwotaW5kZXggZDg5MjczNC4uM2EzNTY0YyAxMDA2NDQKLS0tLSBhL3NyYy9lZ2wvb3BlbmdsL2RlbW8xLmMKLSsrKyBiL3NyYy9lZ2wvb3BlbmdsL2RlbW8xLmMKLUBAIC0xOCw2ICsxOCw3IEBACi0gc3RhdGljIHZvaWQKLSBUZXN0U2NyZWVucyhFR0xEaXNwbGF5IGRweSkKLSB7Ci0rI2lmZGVmIEVHTF9NRVNBX3NjcmVlbl9zdXJmYWNlCi0gI2RlZmluZSBNQVggOAotICAgIEVHTFNjcmVlbk1FU0Egc2NyZWVuc1tNQVhdOwotICAgIEVHTGludCBudW1TY3JlZW5zOwotQEAgLTI4LDYgKzI5LDcgQEAgVGVzdFNjcmVlbnMoRUdMRGlzcGxheSBkcHkpCi0gICAgZm9yIChpID0gMDsgaSA8IG51bVNjcmVlbnM7IGkrKykgewotICAgICAgIHByaW50ZigiIFNjcmVlbiAlZCBoYW5kbGU6ICVkXG4iLCBpLCAoaW50KSBzY3JlZW5zW2ldKTsKLSAgICB9Ci0rI2VuZGlmCi0gfQotIAotIC8qKgotZGlmZiAtLWdpdCBhL3NyYy9lZ2wvb3BlbmdsL2RlbW8yLmMgYi9zcmMvZWdsL29wZW5nbC9kZW1vMi5jCi1pbmRleCA1MDViNDc0Li5iZmVmNTllIDEwMDY0NAotLS0tIGEvc3JjL2VnbC9vcGVuZ2wvZGVtbzIuYwotKysrIGIvc3JjL2VnbC9vcGVuZ2wvZGVtbzIuYwotQEAgLTE2LDYgKzE2LDcgQEAKLSAKLSAvKiNkZWZpbmUgRlJPTlRCVUZGRVIqLwotIAotKyNpZmRlZiBFR0xfTUVTQV9zY3JlZW5fc3VyZmFjZQotIHN0YXRpYyB2b2lkIF9zdWJzZXRfUmVjdGYoR0xmbG9hdCB4MSwgR0xmbG9hdCB5MSwgR0xmbG9hdCB4MiwgR0xmbG9hdCB5MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgciwgR0xmbG9hdCBnLCBHTGZsb2F0IGIpCi0gewotQEAgLTk1LDEyICs5NiwxMyBAQCBUZXN0U2NyZWVucyhFR0xEaXNwbGF5IGRweSkKLSAgICAgICBwcmludGYoIiBTY3JlZW4gJWQgaGFuZGxlOiAlZFxuIiwgaSwgKGludCkgc2NyZWVuc1tpXSk7Ci0gICAgfQotIH0KLS0KLSsjZW5kaWYKLSAKLSBpbnQKLSBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gewotICAgIGludCBtYWosIG1pbjsKLSsjaWZkZWYgRUdMX01FU0Ffc2NyZWVuX3N1cmZhY2UKLSAgICBFR0xDb250ZXh0IGN0eDsKLSAgICBFR0xTdXJmYWNlIHBidWZmZXIsIHNjcmVlbl9zdXJmOwotICAgIEVHTENvbmZpZyBjb25maWdzWzEwXTsKLUBAIC0xMTUsNiArMTE3LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQotICAgIEVHTE1vZGVNRVNBIG1vZGU7Ci0gICAgRUdMU2NyZWVuTUVTQSBzY3JlZW47Ci0gICAgRUdMaW50IGNvdW50OwotKyNlbmRpZgotIAotICAgIEVHTERpc3BsYXkgZCA9IGVnbEdldERpc3BsYXkoRUdMX0RFRkFVTFRfRElTUExBWSk7Ci0gICAgYXNzZXJ0KGQpOwotQEAgLTEzMiw2ICsxMzUsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gICAgICAgZXhpdCgxKTsKLSAgICB9Ci0gCi0rI2lmZGVmIEVHTF9NRVNBX3NjcmVlbl9zdXJmYWNlCi0gICAgZWdsR2V0Q29uZmlncyhkLCBjb25maWdzLCAxMCwgJm51bUNvbmZpZ3MpOwotICAgIHByaW50ZigiR290ICVkIEVHTCBjb25maWdzOlxuIiwgbnVtQ29uZmlncyk7Ci0gICAgZm9yIChpID0gMDsgaSA8IG51bUNvbmZpZ3M7IGkrKykgewotQEAgLTIxMSw2ICsyMTUsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gICAgZWdsRGVzdHJveVN1cmZhY2UoZCwgcGJ1ZmZlcik7Ci0gICAgZWdsRGVzdHJveUNvbnRleHQoZCwgY3R4KTsKLSAgICBlZ2xUZXJtaW5hdGUoZCk7Ci0rI2VuZGlmCi0gCi0gICAgcmV0dXJuIDA7Ci0gfQotZGlmZiAtLWdpdCBhL3NyYy9lZ2wvb3BlbmdsL2RlbW8zLmMgYi9zcmMvZWdsL29wZW5nbC9kZW1vMy5jCi1pbmRleCBmODRjYTIzLi4zMWI1ZDhiIDEwMDY0NAotLS0tIGEvc3JjL2VnbC9vcGVuZ2wvZGVtbzMuYwotKysrIGIvc3JjL2VnbC9vcGVuZ2wvZGVtbzMuYwotQEAgLTQ2LDcgKzQ2LDcgQEAgR0x1Ynl0ZSBPcGVuR0xfYml0c1tdID0gewotICAgIDB4M2UsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4MGMsIDB4MDAsIAotIH07Ci0gCi0tCi0rI2lmZGVmIEVHTF9NRVNBX3NjcmVlbl9zdXJmYWNlCi0gc3RhdGljIHZvaWQgSW5pdCh2b2lkKQotIHsKLSAKLUBAIC01NTEsMTEgKzU1MSwxMyBAQCB3cml0ZV9wcG0oY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IEdMdWJ5dGUgKmJ1ZmZlciwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQotICAgICAgIGZjbG9zZShmKTsKLSAgICB9Ci0gfQotKyNlbmRpZgotIAotIGludAotIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSB7Ci0gICAgaW50IG1haiwgbWluOwotKyNpZmRlZiBFR0xfTUVTQV9zY3JlZW5fc3VyZmFjZQotICAgIEVHTENvbnRleHQgY3R4OwotICAgIEVHTFN1cmZhY2Ugc2NyZWVuX3N1cmY7Ci0gICAgRUdMQ29uZmlnIGNvbmZpZ3NbMTBdOwotQEAgLTU2Niw2ICs1NjgsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gICAgY29uc3QgR0x1Ynl0ZSAqYml0bWFwOwotICAgIEVHTGludCBzY3JlZW5BdHRyaWJzWzMyXTsKLSAgICBFR0xpbnQgaTsKLSsjZW5kaWYKLSAKLSAgICBFR0xEaXNwbGF5IGQgPSBlZ2xHZXREaXNwbGF5KEVHTF9ERUZBVUxUX0RJU1BMQVkpOwotICAgIGFzc2VydChkKTsKLUBAIC01ODMsNiArNTg2LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQotICAgICAgIGV4aXQoMSk7Ci0gICAgfQotIAotKyNpZmRlZiBFR0xfTUVTQV9zY3JlZW5fc3VyZmFjZQotICAgIGVnbEdldENvbmZpZ3MoZCwgY29uZmlncywgMTAsICZudW1Db25maWdzKTsKLSAgICBlZ2xHZXRTY3JlZW5zTUVTQShkLCAmc2NyZWVuLCAxLCAmY291bnQpOwotICAgIGVnbEdldE1vZGVzTUVTQShkLCBzY3JlZW4sICZtb2RlLCAxLCAmY291bnQpOwotQEAgLTY0Miw2ICs2NDYsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gICAgZWdsRGVzdHJveVN1cmZhY2UoZCwgc2NyZWVuX3N1cmYpOwotICAgIGVnbERlc3Ryb3lDb250ZXh0KGQsIGN0eCk7Ci0gICAgZWdsVGVybWluYXRlKGQpOwotKyNlbmRpZgotIAotICAgIHJldHVybiAwOwotIH0KLS0tIAotMi4wLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EtZGVtb3MvMDAwNi1RdWVyeS1kaXNwbGF5LWZvci1FR0xfTUVTQV9zY3JlZW5fc3VyZmFjZS1leHRlbnNpb24tLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EtZGVtb3MvMDAwNi1RdWVyeS1kaXNwbGF5LWZvci1FR0xfTUVTQV9zY3JlZW5fc3VyZmFjZS1leHRlbnNpb24tLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMmUwODA1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWRlbW9zLzAwMDYtUXVlcnktZGlzcGxheS1mb3ItRUdMX01FU0Ffc2NyZWVuX3N1cmZhY2UtZXh0ZW5zaW9uLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLUZyb20gNmExOWRiYTFkMjc1NTc5YzczZTc3NjNiMDU1NDQxMGZmNGUxZTY1MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEZyYW5rIEJpbm5zIDxmcmFuay5iaW5uc0BpbWd0ZWMuY29tPgotRGF0ZTogRnJpLCAyOSBKdW4gMjAxMiAxMjowMDoyNiArMDEwMAotU3ViamVjdDogW1BBVENIIDYvOV0gUXVlcnkgZGlzcGxheSBmb3IgRUdMX01FU0Ffc2NyZWVuX3N1cmZhY2UgZXh0ZW5zaW9uCi0gYmVmb3JlIHVzaW5nIGl0Ci0KLVRoaXMgY29kZSBtYWtlcyBoZWF2eSB1c2Ugb2YgdGhlIEVHTF9NRVNBX3NjcmVlbl9zdXJmYWNlIGV4dGVuc2lvbiBzbwotY2hlY2sgdGhlIGRpc3BsYXkgdG8gZGV0ZXJtaW5lIGlmIGl0J3Mgc3VwcG9ydGVkIGJ5IHRoZSB1bmRlcmx5aW5nIEVHTAotaW1wbGVtZW50YXRpb24uIElmIGl0IGRvZXNuJ3QgdGhlbiBiYWlsLgotCi1TaWduZWQtb2ZmLWJ5OiBGcmFuayBCaW5ucyA8ZnJhbmsuYmlubnNAaW1ndGVjLmNvbT4KLQotQXBwbGllZCBhbmQgZml4ZWQgdXAgaW4gWW9jdG8gYnkuLi4KLQotSW50ZWdyYXRlZC1ieTogVG9tIFphbnVzc2kgPHRvbS56YW51c3NpQGxpbnV4LmludGVsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBzcmMvZWdsL29wZW5nbC9kZW1vMS5jIHwgNiArKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvZWdsL29wZW5nbC9kZW1vMS5jIGIvc3JjL2VnbC9vcGVuZ2wvZGVtbzEuYwotaW5kZXggM2EzNTY0Yy4uMDZlMjEzOCAxMDA2NDQKLS0tLSBhL3NyYy9lZ2wvb3BlbmdsL2RlbW8xLmMKLSsrKyBiL3NyYy9lZ2wvb3BlbmdsL2RlbW8xLmMKLUBAIC0xMTAsNiArMTEwLDEyIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAgICBwcmludGYoIkVHTCB2ZXJzaW9uID0gJWQuJWRcbiIsIG1haiwgbWluKTsKLSAgICBwcmludGYoIkVHTF9WRU5ET1IgPSAlc1xuIiwgZWdsUXVlcnlTdHJpbmcoZCwgRUdMX1ZFTkRPUikpOwotIAotKyAgIGlmICghc3Ryc3RyKGVnbFF1ZXJ5U3RyaW5nKGQsIEVHTF9FWFRFTlNJT05TKSwKLSsgICAgICAgICAgICAgICAiRUdMX01FU0Ffc2NyZWVuX3N1cmZhY2UiKSkgewotKyAgICAgIHByaW50ZigiRUdMX01FU0Ffc2NyZWVuX3N1cmZhY2UgaXMgbm90IHN1cHBvcnRlZFxuIik7Ci0rICAgICAgZXhpdCgxKTsKLSsgICB9Ci0rCi0gICAgZWdsR2V0Q29uZmlncyhkLCBOVUxMLCAwLCAmbnVtQ29uZmlncyk7Ci0gICAgY29uZmlncyA9IG1hbGxvYyhzaXplb2YoKmNvbmZpZ3MpICpudW1Db25maWdzKTsKLSAgICBlZ2xHZXRDb25maWdzKGQsIGNvbmZpZ3MsIG51bUNvbmZpZ3MsICZudW1Db25maWdzKTsKLS0tIAotMi4wLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EtZGVtb3MvMDAwNy1JbnN0YWxsLWZldy1tb3JlLXRlc3QtcHJvZ3JhbXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1kZW1vcy8wMDA3LUluc3RhbGwtZmV3LW1vcmUtdGVzdC1wcm9ncmFtcy5wYXRjaAppbmRleCA4OWQyZmFjLi42YjY3NmNkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1kZW1vcy8wMDA3LUluc3RhbGwtZmV3LW1vcmUtdGVzdC1wcm9ncmFtcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1kZW1vcy8wMDA3LUluc3RhbGwtZmV3LW1vcmUtdGVzdC1wcm9ncmFtcy5wYXRjaApAQCAtMSwxMSArMSwxMyBAQAotRnJvbSBkOTMwYjJkYTU3ZjdjOWVmYjgwYzhjZWY4ZjhhZGFkMTViYmJjMGQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBjNTllMjg2ZmE0ZTgxOGNhMDE1ZGQ0MGU0NzI1NjM2MzA5OTcwZWE4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgogRGF0ZTogVGh1LCAxMCBKdWwgMjAxNCAxNDozMDo1MiArMDIwMAotU3ViamVjdDogW1BBVENIIDcvOV0gSW5zdGFsbCBmZXcgbW9yZSB0ZXN0IHByb2dyYW1zCitTdWJqZWN0OiBbUEFUQ0hdIEluc3RhbGwgZmV3IG1vcmUgdGVzdCBwcm9ncmFtcwogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgorCitTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgogLS0tCiAgc3JjL2VnbC9vcGVuZ2wvTWFrZWZpbGUuYW0gICAgfCAgMiArLQogIHNyYy9lZ2wvb3BlbmdsZXMxL01ha2VmaWxlLmFtIHwgMTAgKysrKy0tLS0tLQpAQCAtMTMsNyArMTUsNyBAQAogIDMgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2VnbC9vcGVuZ2wvTWFrZWZpbGUuYW0gYi9zcmMvZWdsL29wZW5nbC9NYWtlZmlsZS5hbQotaW5kZXggMGM3MjI4Zi4uODdiMmYxYSAxMDA2NDQKK2luZGV4IGZlN2ZhYTkuLjNlNDgxNDEgMTAwNjQ0CiAtLS0gYS9zcmMvZWdsL29wZW5nbC9NYWtlZmlsZS5hbQogKysrIGIvc3JjL2VnbC9vcGVuZ2wvTWFrZWZpbGUuYW0KIEBAIC01MCw3ICs1MCw3IEBAIGVuZGlmCkBAIC0yMiw0MiArMjQsMTEgQEAKICBpZiBIQVZFX0VHTAogLW5vaW5zdF9QUk9HUkFNUyA9IFwKICtiaW5fUFJPR1JBTVMgPSBcCi0gCWRlbW8xIFwKLSAJZGVtbzIgXAotIAlkZW1vMyBcCi1kaWZmIC0tZ2l0IGEvc3JjL2VnbC9vcGVuZ2xlczEvTWFrZWZpbGUuYW0gYi9zcmMvZWdsL29wZW5nbGVzMS9NYWtlZmlsZS5hbQotaW5kZXggMzQ1NWU3NS4uNTE2ZTUxNiAxMDA2NDQKLS0tLSBhL3NyYy9lZ2wvb3BlbmdsZXMxL01ha2VmaWxlLmFtCi0rKysgYi9zcmMvZWdsL29wZW5nbGVzMS9NYWtlZmlsZS5hbQotQEAgLTM2LDExICszNiwxMSBAQCBBTV9MREZMQUdTID0gXAotIAkkKEVHTF9MSUJTKSBcCi0gCS1sbQotIAotLW5vaW5zdF9QUk9HUkFNUyA9Ci0rYmluX1BST0dSQU1TID0KLSAKLSBpZiBIQVZFX0VHTAotIGlmIEhBVkVfR0xFU1YxCi0tbm9pbnN0X1BST0dSQU1TICs9IFwKLStiaW5fUFJPR1JBTVMgKz0gXAotIAlkcmF3dGV4X3NjcmVlbiBcCi0gCWdlYXJzX3NjcmVlbiBcCi0gCXRvcnVzX3NjcmVlbiBcCi1AQCAtNTcsMTAgKzU3LDggQEAgdG9ydXNfc2NyZWVuX0xEQUREID0gLi4vZWdsdXQvbGliZWdsdXRfc2NyZWVuLmxhCi0gdHJpX3NjcmVlbl9MREFERCA9IC4uL2VnbHV0L2xpYmVnbHV0X3NjcmVlbi5sYQotIAotIGlmIEhBVkVfWDExCi0tbm9pbnN0X1BST0dSQU1TICs9IFwKLS0JY2xlYXIKLS0KLS1iaW5fUFJPR1JBTVMgPSBcCi0rYmluX1BST0dSQU1TICs9IFwKLSsJY2xlYXIgXAotIAliaW5kdGV4IFwKLSAJZHJhd3RleF94MTEgXAotIAllZ2xmYmRldiBcCisgCWVnbGluZm8gXAorIAlwZWdsZ2VhcnMgXAorIAkkKEVHTF9EUk1fREVNT1MpIFwKIGRpZmYgLS1naXQgYS9zcmMvZWdsL29wZW52Zy9NYWtlZmlsZS5hbSBiL3NyYy9lZ2wvb3BlbnZnL01ha2VmaWxlLmFtCi1pbmRleCA3MzE4YTQzLi5iNTQ1MjI1IDEwMDY0NAoraW5kZXggYjBmMTIxMi4uNWZkMWNmOCAxMDA2NDQKIC0tLSBhL3NyYy9lZ2wvb3BlbnZnL01ha2VmaWxlLmFtCiArKysgYi9zcmMvZWdsL29wZW52Zy9NYWtlZmlsZS5hbQogQEAgLTQ5LDcgKzQ5LDcgQEAgZW5kaWYKQEAgLTY2LDkgKzM3LDkgQEAKICBpZiBIQVZFX1ZHCiAtbm9pbnN0X1BST0dSQU1TID0gXAogK2Jpbl9QUk9HUkFNUyA9IFwKLSAJbGlvbl9zY3JlZW4gXAotIAlzcF9zY3JlZW4gXAogIAkkKEVHTF9YMTFfREVNT1MpCisgZW5kaWYKKyBlbmRpZgogLS0gCi0yLjAuMAorMi4xLjQKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EtZGVtb3MvMDAxMC1zaGFyZWR0ZXhfbXQtZml4LXJlbmRlcmluZy10aHJlYWQtaGFuZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWRlbW9zLzAwMTAtc2hhcmVkdGV4X210LWZpeC1yZW5kZXJpbmctdGhyZWFkLWhhbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0ZTFiNDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EtZGVtb3MvMDAxMC1zaGFyZWR0ZXhfbXQtZml4LXJlbmRlcmluZy10aHJlYWQtaGFuZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLUZyb20gNTI1ZmE5ZGVkNzJkMjJiNTNjNWViMzY2ZjYxZTJhYzFkNDA3YTJkYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEF3YWlzIEJlbGFsIDxhd2Fpc19iZWxhbEBtZW50b3IuY29tPgotRGF0ZTogVGh1LCA4IE9jdCAyMDE1IDEzOjQ5OjMxICswNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNoYXJlZHRleF9tdDogZml4IHJlbmRlcmluZyB0aHJlYWQgaGFuZwotCi1YTmV4dEV2ZW50IGlzIGEgYmxvY2tpbmcgY2FsbCB3aGljaCBsb2NrcyB1cCB0aGUgZGlzcGxheSBtdXRleAotdGhpcyBjYXVzZXMgdGhlIHJlbmRlcmluZyB0aHJlYWRzIHRvIGhhbmcgd2hlbiB0aGV5IHRyeSBjYWxsCi1nbFhTd2FwQnVmZmVycygpIGFzIHRoYXQgdHJpZXMgdG8gdGFrZSB0aGUgc2FtZSBtdXRleCBpbgotdW5kZXJseWluZyBjYWxscyB0aHJvdWdoIFhDb3B5QXJlYSgpLgotU28gd2Ugb25seSBnbyB0byBYTmV4dEV2ZW50IHdoZW4gaXQgaGFzIGF0IGxlYXN0IG9uZSBldmVudAotYW5kIHdlIHdvdWxkbid0IGxvY2sgaW5kZWZpbml0ZWx5LgotCi1TaWduZWQtb2ZmLWJ5OiBBd2FpcyBCZWxhbCA8YXdhaXNfYmVsYWxAbWVudG9yLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgKDJiMzA0ZTc2NTY5NWQzODVmZDNiZjQxNGU2ZTQ0NDAyMGJlZGIwYTgpCi0KLS0tLQotIHNyYy94ZGVtb3Mvc2hhcmVkdGV4X210LmMgfCA5ICsrKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMveGRlbW9zL3NoYXJlZHRleF9tdC5jIGIvc3JjL3hkZW1vcy9zaGFyZWR0ZXhfbXQuYwotaW5kZXggYTkwOTAzYS4uMWQ1MDNjNCAxMDA2NDQKLS0tLSBhL3NyYy94ZGVtb3Mvc2hhcmVkdGV4X210LmMKLSsrKyBiL3NyYy94ZGVtb3Mvc2hhcmVkdGV4X210LmMKLUBAIC00MjAsOSArNDIwLDE0IEBAIFJlc2l6ZShzdHJ1Y3Qgd2luZG93ICpoLCB1bnNpZ25lZCBpbnQgd2lkdGgsIHVuc2lnbmVkIGludCBoZWlnaHQpCi0gc3RhdGljIHZvaWQKLSBFdmVudExvb3Aodm9pZCkKLSB7Ci0rICAgaW50IGk7Ci0rICAgWEV2ZW50IGV2ZW50OwotICAgIHdoaWxlICgxKSB7Ci0tICAgICAgaW50IGk7Ci0tICAgICAgWEV2ZW50IGV2ZW50OwotKyAgICAgIC8qIERvIHdlIGhhdmUgYW4gZXZlbnQ/ICovCi0rICAgICAgaWYgKFhQZW5kaW5nKGdEcHkpID09IDApIHsKLSsgICAgICAgICB1c2xlZXAoMTAwMDApOwotKyAgICAgICAgIGNvbnRpbnVlOwotKyAgICAgIH0KLSAgICAgICBYTmV4dEV2ZW50KGdEcHksICZldmVudCk7Ci0gICAgICAgZm9yIChpID0gMDsgaSA8IE51bVdpbmRvd3M7IGkrKykgewotIAkgc3RydWN0IHdpbmRvdyAqaCA9ICZXaW5kb3dzW2ldOwotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1kZW1vcy8wMDEyLW1lc2EtZGVtb3MtT3BlblZHLWRlbW9zLXdpdGgtc2luZ2xlLWZyYW1lLW5lZWQtZWdsU3cucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1kZW1vcy8wMDEyLW1lc2EtZGVtb3MtT3BlblZHLWRlbW9zLXdpdGgtc2luZ2xlLWZyYW1lLW5lZWQtZWdsU3cucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY4NzY0NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWRlbW9zLzAwMTItbWVzYS1kZW1vcy1PcGVuVkctZGVtb3Mtd2l0aC1zaW5nbGUtZnJhbWUtbmVlZC1lZ2xTdy5wYXRjaApAQCAtMCwwICsxLDQ0IEBACitGcm9tIDNhYTg0YzQ3ZTg4YTRjMzg0NDZjZTEzMjNhYmY2ZjJjNzczODkxMDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQcmFiaHUgPHByYWJodS5zdW5kYXJhcmFqQGZyZWVzY2FsZS5jb20+CitEYXRlOiBNb24sIDE2IE5vdiAyMDE1IDE3OjA5OjMyIC0wNjAwCitTdWJqZWN0OiBbUEFUQ0hdIG1lc2EtZGVtb3M6IE9wZW5WRyBkZW1vcyB3aXRoIHNpbmdsZSBmcmFtZSBuZWVkIGVnbFN3YXBCdWZmZXIKKworc3AgYW5kIHRleHQgZGVtb3MgcmVuZGVyaW5nIHNpbmdsZSBmcmFtZS4gdG8gZGlzcGxheSB0aGUKK3NpbmdsZSBmcmFtZSByZW5kZXJlZCBuZWVkZWQgYSBlZ2xTd2FwQnVmZmVyIHRvIGRpcGxheSB0byB3aW5kb3cuCitIZW5jZSBhZGRlZCBlZ2x1dFBvc3RSZWRpc3BsYXkgdG8gZGlzcGxheSB0aGUgZnJhbWUKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFByYWJodSA8cHJhYmh1LnN1bmRhcmFyYWpAZnJlZXNjYWxlLmNvbT4KKy0tLQorIHNyYy9lZ2wvb3BlbnZnL3NwLmMgICB8IDEgKworIHNyYy9lZ2wvb3BlbnZnL3RleHQuYyB8IDEgKworIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvZWdsL29wZW52Zy9zcC5jIGIvc3JjL2VnbC9vcGVudmcvc3AuYworaW5kZXggYTIwYzBhMy4uNDY4ZTkxZSAxMDA2NDQKKy0tLSBhL3NyYy9lZ2wvb3BlbnZnL3NwLmMKKysrKyBiL3NyYy9lZ2wvb3BlbnZnL3NwLmMKK0BAIC01MDAsNiArNTAwLDcgQEAgZHJhdyh2b2lkKQorICAgIH0KKyAKKyAgICB2Z0ZsdXNoKCk7CisrICAgZWdsdXRQb3N0UmVkaXNwbGF5KCk7CisgfQorIAorIAorZGlmZiAtLWdpdCBhL3NyYy9lZ2wvb3BlbnZnL3RleHQuYyBiL3NyYy9lZ2wvb3BlbnZnL3RleHQuYworaW5kZXggZjVjNmRlOC4uNDkyNTgxYyAxMDA2NDQKKy0tLSBhL3NyYy9lZ2wvb3BlbnZnL3RleHQuYworKysrIGIvc3JjL2VnbC9vcGVudmcvdGV4dC5jCitAQCAtMzYwLDYgKzM2MCw3IEBAIGRpc3BsYXkodm9pZCkKKyB7CisgICAgdmdDbGVhcigwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBnbHlwaF9zdHJpbmdfZHJhdygxMC4wLCAxMC4wKTsKKysgICBlZ2x1dFBvc3RSZWRpc3BsYXkoKTsKKyB9CisgCisgCistLSAKKzIuNS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWRlbW9zLzAwMTMtb25seS1idWlsZC1HTFgtZGVtb3MtaWYtbmVlZGVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EtZGVtb3MvMDAxMy1vbmx5LWJ1aWxkLUdMWC1kZW1vcy1pZi1uZWVkZWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTdiZTRkZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWRlbW9zLzAwMTMtb25seS1idWlsZC1HTFgtZGVtb3MtaWYtbmVlZGVkLnBhdGNoCkBAIC0wLDAgKzEsNjIgQEAKK0Zyb20gMzIyYWYyOTQzOTBhN2Y0ZTE1MjRjNWE3OTMxMmJlNmNiZWJjZTk4OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEF3YWlzIEJlbGFsIDxhd2Fpc19iZWxhbEBtZW50b3IuY29tPgorRGF0ZTogV2VkLCAxMSBOb3YgMjAxNSAxNzoyMjoxMiArMDUwMAorU3ViamVjdDogW1BBVENIXSBvbmx5IGJ1aWxkIEdMWCBkZW1vcyBpZiBuZWVkZWQKKworVGhlcmUgYXJlIHBsYXRmb3JtcyB0aGF0IGRlZmF1bHQgdG8gRUdMIG9ubHkgY29uZmlndXJhdGlvbnMKK2luIHdoaWNoIGNhc2UgdGhlIEdMWCBhcHBsaWNhdGlvbnMgYXJlIG5vdCByZXF1aXJlZAorYXQgYWxsLiBBbGxvdyB0aGUgdXNlciB0byBjb250cm9sIGdlbmVyYXRpb24gb2YgdGhlc2UKK2RlbW9zIGFzIG5lZWRlZCB0aHJvdWdoIGEgY29uZmlndXJlIHN3aXRjaC4KKworU2lnbmVkLW9mZi1ieTogQXdhaXMgQmVsYWwgPGF3YWlzX2JlbGFsQG1lbnRvci5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGNvbmZpZ3VyZS5hYyAgICB8IDkgKysrKysrKysrCisgc3JjL01ha2VmaWxlLmFtIHwgNiArKysrKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggZjhlYzdlMy4uMWE0ZDk2ZCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTMyLDYgKzEzMiwxMSBAQCBpZiB0ZXN0ICJ4JGVuYWJsZV9nbHUiID0geHllczsgdGhlbgorICAgICBERU1PX0xJQlM9IiRERU1PX0xJQlMgJEdMVV9MSUJTIgorIGZpCisgCisrQUNfQVJHX0VOQUJMRShbZ2x4LWRlbW9zXSwKKysgICAgW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1nbHgtZGVtb3NdLAorKyAgICAgICAgW2VuYWJsZSBHTFggZGVtb3MgQDw6QGRlZmF1bHQ9YXV0b0A6PkBdKV0sCisrICAgIFtnbHhfZGVtb3NfZW5hYmxlZD0iJGVuYWJsZXZhbCJdLAorKyAgICBbZ2x4X2RlbW9zX2VuYWJsZWQ9eWVzXSkKKyBBQ19BUkdfRU5BQkxFKFtlZ2xdLAorICAgICBbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWVnbF0sCisgICAgICAgICBbZW5hYmxlIEVHTCBsaWJyYXJ5IEA8OkBkZWZhdWx0PWF1dG9AOj5AXSldLAorQEAgLTMyNSw2ICszMzMsNyBAQCBBQ19TVUJTVChbV0FZTEFORF9MSUJTXSkKKyAKKyBBTV9DT05ESVRJT05BTChIQVZFX0dMVSwgdGVzdCAieCRnbHVfZW5hYmxlZCIgPSAieHllcyIpCisgQU1fQ09ORElUSU9OQUwoSEFWRV9HTEVXLCB0ZXN0ICJ4JGdsZXdfZW5hYmxlZCIgPSAieHllcyIpCisrQU1fQ09ORElUSU9OQUwoSEFWRV9HTFgsIHRlc3QgIngkZ2x4X2RlbW9zX2VuYWJsZWQiID0gInh5ZXMiKQorIEFNX0NPTkRJVElPTkFMKEhBVkVfRUdMLCB0ZXN0ICJ4JGVnbF9lbmFibGVkIiA9ICJ4eWVzIikKKyBBTV9DT05ESVRJT05BTChIQVZFX0dMRVNWMSwgdGVzdCAieCRnbGVzdjFfZW5hYmxlZCIgPSAieHllcyIpCisgQU1fQ09ORElUSU9OQUwoSEFWRV9HTEVTVjIsIHRlc3QgIngkZ2xlc3YyX2VuYWJsZWQiID0gInh5ZXMiKQorZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQoraW5kZXggOGI4OWRlZS4uYTRkN2U4ZiAxMDA2NDQKKy0tLSBhL3NyYy9NYWtlZmlsZS5hbQorKysrIGIvc3JjL01ha2VmaWxlLmFtCitAQCAtNDQsOCArNDQsMTIgQEAgU1VCRElSUyA9IFwKKyAJc2xhbmcgXAorIAl0ZXN0cyBcCisgCXRvb2xzIFwKKy0Jd2dsIFwKKysJd2dsCisrCisraWYgSEFWRV9HTFgKKytTVUJESVJTICs9IFwKKyAJeGRlbW9zCisrZW5kaWYKKyAKKyBpZiBIQVZFX0dMRVcKKyBTVUJESVJTICs9IFwKKy0tIAorMS45LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EtZGVtb3NfOC4yLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1kZW1vc184LjIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTU3YjhjNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1kZW1vc184LjIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLVNVTU1BUlkgPSAiTWVzYSBkZW1vIGFwcGxpY2F0aW9ucyIKLURFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBpbmNsdWRlcyB0aGUgZGVtb25zdHJhdGlvbiBhcHBsaWNhdGlvbiwgc3VjaCBhcyBnbHhnZWFycy4gXAotVGhlc2UgYXBwbGljYXRpb25zIGNhbiBiZSB1c2VkIGZvciBNZXNhIHZhbGlkYXRpb24gYW5kIGJlbmNobWFya2luZy4iCi1IT01FUEFHRSA9ICJodHRwOi8vbWVzYTNkLm9yZyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZyIKLVNFQ1RJT04gPSAieDExIgotCi1MSUNFTlNFID0gIk1JVCAmIFBEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3JjL3hkZW1vcy9nbHhnZWFycy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PTkxNDIyNTc4NTQ1MGVmZjY0NGE4NmM4NzFkM2FlMDBlIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy94ZGVtb3MvZ2x4ZGVtby5jO2JlZ2lubGluZT0xO2VuZGxpbmU9ODttZDU9YjAxZDVhYjFhZWU5NGQzNWI3ZWZhYTJlZjQ4ZTFhMDYiCi0KLVNSQ19VUkkgPSAiZnRwOi8vZnRwLmZyZWVkZXNrdG9wLm9yZy9wdWIvbWVzYS9kZW1vcy8ke1BWfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCi0gICAgZmlsZTovLzAwMDEtbWVzYS1kZW1vcy1BZGQtbWlzc2luZy1kYXRhLWZpbGVzLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMi1Db3JyZWN0bHktaW1wbGVtZW50LXdpdGgtQUNfV0lUSC1nbHV0LXNvLXRoYXQtd2l0aG91LnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMy1jb25maWd1cmUtQWxsb3ctdG8tZGlzYWJsZS1kZW1vcy13aGljaC1yZXF1aXJlLUdMRVctLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwNC1Vc2UtREVNT1NfREFUQV9ESVItdG8tbG9jYXRlLWRhdGEtZmlsZXMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA1LUZpeC1idWlsZC13aGVuLUVHTF9NRVNBX3NjcmVlbl9zdXJmYWNlLWV4dGVuc2lvbi1pc24ucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA2LVF1ZXJ5LWRpc3BsYXktZm9yLUVHTF9NRVNBX3NjcmVlbl9zdXJmYWNlLWV4dGVuc2lvbi0ucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA3LUluc3RhbGwtZmV3LW1vcmUtdGVzdC1wcm9ncmFtcy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDgtZ2xzbC1wZXJmLUFkZC1mZXctbWlzc2luZy0uZ2xzbC0udmVydC0uZnJhZy1maWxlcy10by5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDktZ2xzbC1wZXJmLUluc3RhbGwtLmdsc2wtLnZlcnQtLmZyYWctZmlsZXMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDEwLXNoYXJlZHRleF9tdC1maXgtcmVuZGVyaW5nLXRocmVhZC1oYW5nLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI3MjYxM2EyYzhjMDEzNzE2ZGIwMmUzZmY1OWQyOTA2MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlNGJmZWNiNTgxNmRkZDRiN2IzN2MxYmM4NzZiNjNmMWY3ZjA2ZmRhNTg3OTIyMWE5Nzc0ZDA5NTJmOTBiYTkyIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0jIGRlcGVuZHMgb24gdmlydHVhbC9lZ2wsIHZpcnR1YWwvbGliZ2wgLi4uCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgotCi1QQUNLQUdFQ09ORklHID89ICJkcm0gb3NtZXNhIGZyZWV0eXBlMiBnYm0gZWdsIGdsZXMxIGdsZXMyIFwKLSAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3gxMSBnbGV3IGdsdScsICcnLCBkKX0iCi0KLSMgVGhlIFdheWxhbmQgY29kZSBkb2Vzbid0IHdvcmsgd2l0aCBXYXlsYW5kIDEuMCwgc28gZGlzYWJsZSBpdCBmb3Igbm93Ci0jJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgJ3dheWxhbmQnLCAnJywgZCl9IgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLXN5c3RlbS1kYXRhLWZpbGVzIgotCi1QQUNLQUdFQ09ORklHW2RybV0gPSAiLS1lbmFibGUtbGliZHJtLC0tZGlzYWJsZS1saWJkcm0sbGliZHJtIgotUEFDS0FHRUNPTkZJR1tlZ2xdID0gIi0tZW5hYmxlLWVnbCwtLWRpc2FibGUtZWdsLHZpcnR1YWwvZWdsIgotUEFDS0FHRUNPTkZJR1tmcmVldHlwZTJdID0gIi0tZW5hYmxlLWZyZWV0eXBlMiwtLWRpc2FibGUtZnJlZXR5cGUyLGZyZWV0eXBlIgotUEFDS0FHRUNPTkZJR1tnYm1dID0gIi0tZW5hYmxlLWdibSwtLWRpc2FibGUtZ2JtLHZpcnR1YWwvbGliZ2wiCi1QQUNLQUdFQ09ORklHW2dsZXMxXSA9ICItLWVuYWJsZS1nbGVzMSwtLWRpc2FibGUtZ2xlczEsdmlydHVhbC9saWJnbGVzMSIKLVBBQ0tBR0VDT05GSUdbZ2xlczJdID0gIi0tZW5hYmxlLWdsZXMyLC0tZGlzYWJsZS1nbGVzMix2aXJ0dWFsL2xpYmdsZXMyIgotUEFDS0FHRUNPTkZJR1tnbHV0XSA9ICItLXdpdGgtZ2x1dD0ke1NUQUdJTkdfRVhFQ1BSRUZJWERJUn0sLS13aXRob3V0LWdsdXQsIgotUEFDS0FHRUNPTkZJR1tvc21lc2FdID0gIi0tZW5hYmxlLW9zbWVzYSwtLWRpc2FibGUtb3NtZXNhLCIKLVBBQ0tBR0VDT05GSUdbdmddID0gIi0tZW5hYmxlLXZnLC0tZGlzYWJsZS12Zyx2aXJ0dWFsL2xpYm9wZW52ZyIKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLS1lbmFibGUtd2F5bGFuZCwtLWRpc2FibGUtd2F5bGFuZCx2aXJ0dWFsL2xpYmdsIHdheWxhbmQiCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUteDExLC0tZGlzYWJsZS14MTEsdmlydHVhbC9saWJ4MTEiCi1QQUNLQUdFQ09ORklHW2dsZXddID0gIi0tZW5hYmxlLWdsZXcsLS1kaXNhYmxlLWdsZXcsZ2xldyIKLVBBQ0tBR0VDT05GSUdbZ2x1XSA9ICItLWVuYWJsZS1nbHUsLS1kaXNhYmxlLWdsdSx2aXJ0dWFsL2xpYmdsIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIGl0IGNhbiBiZSBjb21wbGV0ZWx5IGVtcHR5IHdoZW4gYWxsIFBBQ0tBR0VDT05GSUcgb3B0aW9ucyBhcmUgZGlzYWJsZWQKLQlybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtiaW5kaXJ9Ci0KLQlpZiBbIC1mICR7RH0ke2JpbmRpcn0vY2xlYXIgXTsgdGhlbgotICAgICAgICAJbXYgJHtEfSR7YmluZGlyfS9jbGVhciAke0R9JHtiaW5kaXJ9L2NsZWFyLm1lc2EtZGVtb3MKLQlmaQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EtZGVtb3NfOC4zLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1kZW1vc184LjMuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYWIwYmRiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EtZGVtb3NfOC4zLjAuYmIKQEAgLTAsMCArMSw1OSBAQAorU1VNTUFSWSA9ICJNZXNhIGRlbW8gYXBwbGljYXRpb25zIgorREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIGluY2x1ZGVzIHRoZSBkZW1vbnN0cmF0aW9uIGFwcGxpY2F0aW9uLCBzdWNoIGFzIGdseGdlYXJzLiBcCitUaGVzZSBhcHBsaWNhdGlvbnMgY2FuIGJlIHVzZWQgZm9yIE1lc2EgdmFsaWRhdGlvbiBhbmQgYmVuY2htYXJraW5nLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9tZXNhM2Qub3JnIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnIgorU0VDVElPTiA9ICJ4MTEiCisKK0xJQ0VOU0UgPSAiTUlUICYgUEQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcmMveGRlbW9zL2dseGdlYXJzLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9OTE0MjI1Nzg1NDUwZWZmNjQ0YTg2Yzg3MWQzYWUwMGUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3hkZW1vcy9nbHhkZW1vLmM7YmVnaW5saW5lPTE7ZW5kbGluZT04O21kNT1iMDFkNWFiMWFlZTk0ZDM1YjdlZmFhMmVmNDhlMWEwNiIKKworU1JDX1VSSSA9ICJmdHA6Ly9mdHAuZnJlZWRlc2t0b3Aub3JnL3B1Yi9tZXNhL2RlbW9zLyR7UFZ9LyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWVzYS1kZW1vcy1BZGQtbWlzc2luZy1kYXRhLWZpbGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtY29uZmlndXJlLUFsbG93LXRvLWRpc2FibGUtZGVtb3Mtd2hpY2gtcmVxdWlyZS1HTEVXLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LVVzZS1ERU1PU19EQVRBX0RJUi10by1sb2NhdGUtZGF0YS1maWxlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LUluc3RhbGwtZmV3LW1vcmUtdGVzdC1wcm9ncmFtcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA4LWdsc2wtcGVyZi1BZGQtZmV3LW1pc3NpbmctLmdsc2wtLnZlcnQtLmZyYWctZmlsZXMtdG8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOS1nbHNsLXBlcmYtSW5zdGFsbC0uZ2xzbC0udmVydC0uZnJhZy1maWxlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEyLW1lc2EtZGVtb3MtT3BlblZHLWRlbW9zLXdpdGgtc2luZ2xlLWZyYW1lLW5lZWQtZWdsU3cucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMy1vbmx5LWJ1aWxkLUdMWC1kZW1vcy1pZi1uZWVkZWQucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNjI4ZTc1YzIzYzE3Mzk0ZjExYTMxNmMzNmY4ZTQxNjQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzE3MzE1NGJiZDBkNWZiNTNkNzMyNDcxOTg0ZGVmNDJmYjFiMTRhYzg1ZmNiODM0MTM4ZmI5NTE4YjNlMGJlZiIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjaworIyBkZXBlbmRzIG9uIHZpcnR1YWwvZWdsLCB2aXJ0dWFsL2xpYmdsIC4uLgorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCB4MTEiCisKK1BBQ0tBR0VDT05GSUcgPz0gImRybSBvc21lc2EgZnJlZXR5cGUyIGdibSBlZ2wgZ2xlczEgZ2xlczIgXAorICAgICAgICAgICAgICAgICAgeDExIGdsZXcgZ2x1IGdseCIKKworIyBUaGUgV2F5bGFuZCBjb2RlIGRvZXNuJ3Qgd29yayB3aXRoIFdheWxhbmQgMS4wLCBzbyBkaXNhYmxlIGl0IGZvciBub3cKKyMke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCAnd2F5bGFuZCcsICcnLCBkKX0iCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtc3lzdGVtLWRhdGEtZmlsZXMiCisKK1BBQ0tBR0VDT05GSUdbZHJtXSA9ICItLWVuYWJsZS1saWJkcm0sLS1kaXNhYmxlLWxpYmRybSxsaWJkcm0iCitQQUNLQUdFQ09ORklHW2VnbF0gPSAiLS1lbmFibGUtZWdsLC0tZGlzYWJsZS1lZ2wsdmlydHVhbC9lZ2wiCitQQUNLQUdFQ09ORklHW2ZyZWV0eXBlMl0gPSAiLS1lbmFibGUtZnJlZXR5cGUyLC0tZGlzYWJsZS1mcmVldHlwZTIsZnJlZXR5cGUiCitQQUNLQUdFQ09ORklHW2dibV0gPSAiLS1lbmFibGUtZ2JtLC0tZGlzYWJsZS1nYm0sdmlydHVhbC9saWJnbCIKK1BBQ0tBR0VDT05GSUdbZ2xlczFdID0gIi0tZW5hYmxlLWdsZXMxLC0tZGlzYWJsZS1nbGVzMSx2aXJ0dWFsL2xpYmdsZXMxIgorUEFDS0FHRUNPTkZJR1tnbGVzMl0gPSAiLS1lbmFibGUtZ2xlczIsLS1kaXNhYmxlLWdsZXMyLHZpcnR1YWwvbGliZ2xlczIiCitQQUNLQUdFQ09ORklHW2dsdXRdID0gIi0td2l0aC1nbHV0PSR7U1RBR0lOR19FWEVDUFJFRklYRElSfSwtLXdpdGhvdXQtZ2x1dCwiCitQQUNLQUdFQ09ORklHW29zbWVzYV0gPSAiLS1lbmFibGUtb3NtZXNhLC0tZGlzYWJsZS1vc21lc2EsIgorUEFDS0FHRUNPTkZJR1t2Z10gPSAiLS1lbmFibGUtdmcsLS1kaXNhYmxlLXZnLHZpcnR1YWwvbGlib3BlbnZnIgorUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItLWVuYWJsZS13YXlsYW5kLC0tZGlzYWJsZS13YXlsYW5kLHZpcnR1YWwvbGliZ2wgd2F5bGFuZCIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS14MTEsLS1kaXNhYmxlLXgxMSx2aXJ0dWFsL2xpYngxMSIKK1BBQ0tBR0VDT05GSUdbZ2xld10gPSAiLS1lbmFibGUtZ2xldywtLWRpc2FibGUtZ2xldyxnbGV3IgorUEFDS0FHRUNPTkZJR1tnbHVdID0gIi0tZW5hYmxlLWdsdSwtLWRpc2FibGUtZ2x1LHZpcnR1YWwvbGliZ2wiCitQQUNLQUdFQ09ORklHW2dseF0gPSAiLS1lbmFibGUtZ2x4LWRlbW9zLC0tZGlzYWJsZS1nbHgtZGVtb3MiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgaXQgY2FuIGJlIGNvbXBsZXRlbHkgZW1wdHkgd2hlbiBhbGwgUEFDS0FHRUNPTkZJRyBvcHRpb25zIGFyZSBkaXNhYmxlZAorCXJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICR7RH0ke2JpbmRpcn0KKworCWlmIFsgLWYgJHtEfSR7YmluZGlyfS9jbGVhciBdOyB0aGVuCisgICAgICAgIAltdiAke0R9JHtiaW5kaXJ9L2NsZWFyICR7RH0ke2JpbmRpcn0vY2xlYXIubWVzYS1kZW1vcworCWZpCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1nbF8xMS4xLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1nbF8xMS4xLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjMmJjYTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EtZ2xfMTEuMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotcmVxdWlyZSBtZXNhXyR7UFZ9LmJiCi0KLVNVTU1BUlkgKz0gIiAoT3BlbkdMIG9ubHksIG5vIEVHTC9HTEVTKSIKLQotRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vbWVzYToiCi0KLVBST1ZJREVTID0gInZpcnR1YWwvbGliZ2wgdmlydHVhbC9tZXNhIgotCi1TID0gIiR7V09SS0RJUn0vbWVzYS0ke1BWfSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImRyaSAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEnLCAnJywgZCl9IgotCi1FWENMVURFX0ZST01fV09STEQgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWdsXzEyLjAuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWdsXzEyLjAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDZhM2U5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EtZ2xfMTIuMC4xLmJiCkBAIC0wLDAgKzEsMTMgQEAKK3JlcXVpcmUgbWVzYV8ke1BWfS5iYgorCitTVU1NQVJZICs9ICIgKE9wZW5HTCBvbmx5LCBubyBFR0wvR0xFUykiCisKK0ZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9L21lc2E6IgorCitQUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYmdsIHZpcnR1YWwvbWVzYSIKKworUyA9ICIke1dPUktESVJ9L21lc2EtJHtQVn0iCisKK1BBQ0tBR0VDT05GSUcgPz89ICJkcmkgJHtNRVNBX0NSWVBUT30gJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneDExJywgJycsIGQpfSIKKworRVhDTFVERV9GUk9NX1dPUkxEID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS5pbmMKaW5kZXggNDQyNDc5YS4uZTQ4ODBmZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLmluYwpAQCAtMTAsNyArMTAsNyBAQAogQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnIgogU0VDVElPTiA9ICJ4MTEiCiBMSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvY3MvbGljZW5zZS5odG1sO21kNT02YTIzNDQ1OTgyYTdhOTcyYWMxOThlOTNjYzFjYjNkZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvY3MvbGljZW5zZS5odG1sO21kNT04OTlmYmU3ZTQyZDQ5NGM3YzhjMTU5YzcwMDE2OTNkNSIKIAogUEUgPSAiMiIKIApAQCAtMjQsMTEgKzI0LDEzIEBACiAKIEVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1zaGFyZWQtZ2xhcGkiCiAKLVBBQ0tBR0VDT05GSUcgPz89ICJlZ2wgZ2xlcyBkcmkgJHtNRVNBX0NSWVBUT30gXAorUEFDS0FHRUNPTkZJRyA/Pz0gImdibSBlZ2wgZ2xlcyBkcmkgJHtNRVNBX0NSWVBUT30gXAogCQkke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEnLCAnJywgZCl9XAogCQkke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCAnd2F5bGFuZCcsICcnLCBkKX1cCiAJCSIKIAorUEFDS0FHRUNPTkZJR1tnYm1dID0gIi0tZW5hYmxlLWdibSwtLWRpc2FibGUtZ2JtIgorCiBYMTFfREVQUyA9ICJ4Zjg2ZHJpcHJvdG8gZ2xwcm90byB2aXJ0dWFsL2xpYngxMSBsaWJ4ZXh0IGxpYnh4Zjg2dm0gbGlieGRhbWFnZSBsaWJ4Zml4ZXMiCiBQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUtZ2x4LXRscywtLWRpc2FibGUtZ2x4LCR7WDExX0RFUFN9IgogUEFDS0FHRUNPTkZJR1t4dm1jXSA9ICItLWVuYWJsZS14dm1jLC0tZGlzYWJsZS14dm1jLGxpYnh2bWMiCkBAIC0zNyw3ICszOSw3IEBACiBEUklEUklWRVJTID0gInN3cmFzdCIKIERSSURSSVZFUlNfYXBwZW5kX3g4NiA9ICIscmFkZW9uLHIyMDAsbm91dmVhdSxpOTY1LGk5MTUiCiBEUklEUklWRVJTX2FwcGVuZF94ODYtNjQgPSAiLHJhZGVvbixyMjAwLG5vdXZlYXUsaTk2NSxpOTE1IgotUEFDS0FHRUNPTkZJR1tkcmldID0gIi0tZW5hYmxlLWRyaSAtLXdpdGgtZHJpLWRyaXZlcnM9JHtEUklEUklWRVJTfSAtLWVuYWJsZS1nYm0sIC0tZGlzYWJsZS1kcmksIGRyaTJwcm90byBsaWJkcm0iCitQQUNLQUdFQ09ORklHW2RyaV0gPSAiLS1lbmFibGUtZHJpIC0td2l0aC1kcmktZHJpdmVycz0ke0RSSURSSVZFUlN9LCAtLWRpc2FibGUtZHJpLCBkcmkycHJvdG8gbGliZHJtIgogUEFDS0FHRUNPTkZJR1tkcmkzXSA9ICItLWVuYWJsZS1kcmkzLCAtLWRpc2FibGUtZHJpMywgZHJpM3Byb3RvIHByZXNlbnRwcm90byBsaWJ4c2htZmVuY2UiCiAKIFBBQ0tBR0VDT05GSUdbZ2xlc10gPSAiLS1lbmFibGUtZ2xlczEgLS1lbmFibGUtZ2xlczIsIC0tZGlzYWJsZS1nbGVzMSAtLWRpc2FibGUtZ2xlczIiCkBAIC0xNDAsMTYgKzE0MiwxNyBAQAogICAgICAgICBkLnNldFZhcigiUlJFUExBQ0VTXyVzIiAlIHBrZywgcGtnLnJlcGxhY2UoIm1lc2EiLCAibWVzYS1kcmkiLCAxKSkKIAogICAgIGltcG9ydCByZQotICAgIGRyaV9kcml2ZXJzX3Jvb3QgPSBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoJ2xpYmRpcicsIFRydWUpLCAiZHJpIikKLSAgICBkcmlfcGtncyA9IG9zLmxpc3RkaXIoZC5nZXRWYXIoJ1BLR0QnLCBUcnVlKSArIGRyaV9kcml2ZXJzX3Jvb3QpCi0gICAgbGliX25hbWUgPSBkLmV4cGFuZCgiJHtNTFBSRUZJWH1tZXNhLW1lZ2Fkcml2ZXIiKQotICAgIGZvciBwIGluIGRyaV9wa2dzOgotICAgICAgICBtID0gcmUubWF0Y2goJ14oLiopX2RyaVwuc28kJywgcCkKLSAgICAgICAgaWYgbToKLSAgICAgICAgICAgIHBrZ19uYW1lID0gIiAke01MUFJFRklYfW1lc2EtZHJpdmVyLSVzIiAlIGxlZ2l0aW1pemVfcGFja2FnZV9uYW1lKG0uZ3JvdXAoMSkpCi0gICAgICAgICAgICBkLmFwcGVuZFZhcigiUlBST1ZJREVTXyVzIiAlIGxpYl9uYW1lLCBwa2dfbmFtZSkKLSAgICAgICAgICAgIGQuYXBwZW5kVmFyKCJSQ09ORkxJQ1RTXyVzIiAlIGxpYl9uYW1lLCBwa2dfbmFtZSkKLSAgICAgICAgICAgIGQuYXBwZW5kVmFyKCJSUkVQTEFDRVNfJXMiICUgbGliX25hbWUsIHBrZ19uYW1lKQorICAgIGRyaV9kcml2ZXJzX3Jvb3QgPSBvZS5wYXRoLmpvaW4oZC5nZXRWYXIoJ1BLR0QnLCBUcnVlKSwgZC5nZXRWYXIoJ2xpYmRpcicsIFRydWUpLCAiZHJpIikKKyAgICBpZiBvcy5wYXRoLmlzZGlyKGRyaV9kcml2ZXJzX3Jvb3QpOgorICAgICAgICBkcmlfcGtncyA9IG9zLmxpc3RkaXIoZHJpX2RyaXZlcnNfcm9vdCkKKyAgICAgICAgbGliX25hbWUgPSBkLmV4cGFuZCgiJHtNTFBSRUZJWH1tZXNhLW1lZ2Fkcml2ZXIiKQorICAgICAgICBmb3IgcCBpbiBkcmlfcGtnczoKKyAgICAgICAgICAgIG0gPSByZS5tYXRjaCgnXiguKilfZHJpXC5zbyQnLCBwKQorICAgICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICBwa2dfbmFtZSA9ICIgJHtNTFBSRUZJWH1tZXNhLWRyaXZlci0lcyIgJSBsZWdpdGltaXplX3BhY2thZ2VfbmFtZShtLmdyb3VwKDEpKQorICAgICAgICAgICAgICAgIGQuYXBwZW5kVmFyKCJSUFJPVklERVNfJXMiICUgbGliX25hbWUsIHBrZ19uYW1lKQorICAgICAgICAgICAgICAgIGQuYXBwZW5kVmFyKCJSQ09ORkxJQ1RTXyVzIiAlIGxpYl9uYW1lLCBwa2dfbmFtZSkKKyAgICAgICAgICAgICAgICBkLmFwcGVuZFZhcigiUlJFUExBQ0VTXyVzIiAlIGxpYl9uYW1lLCBwa2dfbmFtZSkKIAogICAgIHBpcGVfZHJpdmVyc19yb290ID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCdsaWJkaXInLCBUcnVlKSwgImdhbGxpdW0tcGlwZSIpCiAgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgcGlwZV9kcml2ZXJzX3Jvb3QsICdecGlwZV8oLiopXC5zbyQnLCAnbWVzYS1kcml2ZXItcGlwZS0lcycsICdNZXNhICVzIHBpcGUgZHJpdmVyJywgZXh0cmFfZGVwZW5kcz0nJykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhXzExLjEuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhXzExLjEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTAyYWZjZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYV8xMS4xLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1yZXF1aXJlICR7QlBOfS5pbmMKLQotU1JDX1VSSSA9ICJmdHA6Ly9mdHAuZnJlZWRlc2t0b3Aub3JnL3B1Yi9tZXNhLyR7UFZ9L21lc2EtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL3JlcGxhY2VfZ2xpYmNfY2hlY2tfd2l0aF9saW51eC5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxMDQzZGZiOTA3YmVlY2IyYTc2MTI3MjQ1NTk2MDQyNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2NGRiMDc0ZmM1MTQxMzZiNWZiMzg5MDExMWYwZDUwNjA0ZGI1MmYwYjFlOTRiYTNmY2IwZmU4NjY4YTdmZDIwIgotCi0jYmVjYXVzZSB3ZSBjYW5ub3QgcmVseSBvbiB0aGUgZmFjdCB0aGF0IGFsbCBhcHBzIHdpbGwgdXNlIHBrZ2NvbmZpZywKLSNtYWtlIGVnbHBsYXRmb3JtLmggaW5kZXBlbmRlbnQgb2YgTUVTQV9FR0xfTk9fWDExX0hFQURFUgotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZWdsJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLSAgICAgICAgc2VkIC1pIC1lICdzL14jaWYgZGVmaW5lZChNRVNBX0VHTF9OT19YMTFfSEVBREVSUykkLyNpZiBkZWZpbmVkKE1FU0FfRUdMX05PX1gxMV9IRUFERVJTKSB8fCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd4MTEnLCAnMCcsICcxJywgZCl9LycgJHtEfSR7aW5jbHVkZWRpcn0vRUdML2VnbHBsYXRmb3JtLmgKLSAgICBmaQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2FfMTIuMC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2FfMTIuMC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwMTg5ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYV8xMi4wLjEuYmIKQEAgLTAsMCArMSwxOCBAQAorcmVxdWlyZSAke0JQTn0uaW5jCisKK1NSQ19VUkkgPSAiZnRwOi8vZnRwLmZyZWVkZXNrdG9wLm9yZy9wdWIvbWVzYS8ke1BWfS9tZXNhLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9yZXBsYWNlX2dsaWJjX2NoZWNrX3dpdGhfbGludXgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY2xhbmctY29tcGlsZS1QUjg5NTk5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtYXNtLW9uLW5vbi1nY2MucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOTcyZmQ1YWQ1YTYzYWVhYmYxNzNmYjlhZGVmYzY1MjIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmFiMjRmYjc5Zjc4Yzg3NjA3MzUyN2Y1MTVlZDg3MWZjOWM4MWQ4MTZmNjZjOGEwYjA1MWQ4ZDY1Mzg5NjM4OSIKKworI2JlY2F1c2Ugd2UgY2Fubm90IHJlbHkgb24gdGhlIGZhY3QgdGhhdCBhbGwgYXBwcyB3aWxsIHVzZSBwa2djb25maWcsCisjbWFrZSBlZ2xwbGF0Zm9ybS5oIGluZGVwZW5kZW50IG9mIE1FU0FfRUdMX05PX1gxMV9IRUFERVIKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2VnbCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIHNlZCAtaSAtZSAncy9eI2lmIGRlZmluZWQoTUVTQV9FR0xfTk9fWDExX0hFQURFUlMpJC8jaWYgZGVmaW5lZChNRVNBX0VHTF9OT19YMTFfSEVBREVSUykgfHwgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAneDExJywgJzAnLCAnMScsIGQpfS8nICR7RH0ke2luY2x1ZGVkaXJ9L0VHTC9lZ2xwbGF0Zm9ybS5oCisgICAgZmkKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbXgvbXgtMS4wL2ZpeC1idWlsZC1kaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL214L214LTEuMC9maXgtYnVpbGQtZGlyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYzhhODMyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbXgvbXgtMS4wL2ZpeC1idWlsZC1kaXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1GaXggYnVpbGQgZm9yIFMgIT0gQgotCi1UaGlzIHBhdGNoIGlzIHNwZWNpZmljIHRvIHZlcnNpb24gMS40LngKLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIEAgaHR0cHM6Ly9naXRodWIuY29tL2NsdXR0ZXItcHJvamVjdC9teC9pc3N1ZXMvODEKLVNpZ25lZC1vZmYtYnk6IFRvbWFzIEZyeWRyeWNoIDx0b21hc0BzbGVlcGZpdmUuY29tPgotLS0KLUluZGV4OiBnaXQvZG9jcy9yZWZlcmVuY2UvbGlibXgtZ3RrL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvZG9jcy9yZWZlcmVuY2UvbGlibXgtZ3RrL01ha2VmaWxlLmFtCTIwMTMtMDUtMDggMTU6MDc6MDIuMDI3MTU0Nzg4ICswMTAwCi0rKysgZ2l0L2RvY3MvcmVmZXJlbmNlL2xpYm14LWd0ay9NYWtlZmlsZS5hbQkyMDEzLTA1LTA4IDE1OjE0OjMzLjY4NDMxODY1MCArMDEwMAotQEAgLTEsMyArMSw2IEBACi0rRVhUUkFfRElTVD0KLStDTEVBTkZJTEVTPQotKwotICMjIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b21ha2UgdG8gcHJvZHVjZSBNYWtlZmlsZS5pbgotIAotICMgV2UgcmVxdWlyZSBhdXRvbWFrZSAxLjYgYXQgbGVhc3QuCi1AQCAtNzcsNyArODAsNyBAQAotIEdUS0RPQ19MSUJTPSQoTVhfTElCUykgJCh0b3BfYnVpbGRkaXIpL214LWd0ay9saWJteC1ndGstJChNWF9BUElfVkVSU0lPTikubGEKLSAKLSAjIFRoaXMgaW5jbHVkZXMgdGhlIHN0YW5kYXJkIGd0ay1kb2MgbWFrZSBydWxlcywgY29waWVkIGJ5IGd0a2RvY2l6ZS4KLS1pbmNsdWRlICQodG9wX3NyY2RpcikvZ3RrLWRvYy5tYWtlCi0raW5jbHVkZSAkKHRvcF9idWlsZGRpcikvZ3RrLWRvYy5tYWtlCi0gCi0gIyBPdGhlciBmaWxlcyB0byBkaXN0cmlidXRlCi0gRVhUUkFfRElTVCArPSB2ZXJzaW9uLnhtbC5pbgotSW5kZXg6IGdpdC9kb2NzL3JlZmVyZW5jZS9saWJteC9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2RvY3MvcmVmZXJlbmNlL2xpYm14L01ha2VmaWxlLmFtCTIwMTMtMDUtMDggMTU6MDc6MDIuMDI3MTU0Nzg4ICswMTAwCi0rKysgZ2l0L2RvY3MvcmVmZXJlbmNlL2xpYm14L01ha2VmaWxlLmFtCTIwMTMtMDUtMDggMTU6MTQ6MjQuNDU2Mzc4MTM1ICswMTAwCi1AQCAtMSwzICsxLDYgQEAKLStFWFRSQV9ESVNUPQotK0NMRUFORklMRVM9Ci0rCi0gIyMgUHJvY2VzcyB0aGlzIGZpbGUgd2l0aCBhdXRvbWFrZSB0byBwcm9kdWNlIE1ha2VmaWxlLmluCi0gCi0gIyBXZSByZXF1aXJlIGF1dG9tYWtlIDEuNiBhdCBsZWFzdC4KLUBAIC0xMDYsNyArMTA5LDcgQEAKLSBHVEtET0NfTElCUz0kKE1YX0xJQlMpICQodG9wX2J1aWxkZGlyKS9teC9saWJteC0kKE1YX0FQSV9WRVJTSU9OKS5sYQotIAotICMgVGhpcyBpbmNsdWRlcyB0aGUgc3RhbmRhcmQgZ3RrLWRvYyBtYWtlIHJ1bGVzLCBjb3BpZWQgYnkgZ3RrZG9jaXplLgotLWluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9ndGstZG9jLm1ha2UKLStpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9ndGstZG9jLm1ha2UKLSAKLSAjIE90aGVyIGZpbGVzIHRvIGRpc3RyaWJ1dGUKLSBFWFRSQV9ESVNUICs9IHZlcnNpb24ueG1sLmluCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL214L214LTEuMF8xLjQuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbXgvbXgtMS4wXzEuNC43LmJiCmluZGV4IDU1NDVjMWUuLjU4YTY5OTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbXgvbXgtMS4wXzEuNC43LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbXgvbXgtMS4wXzEuNC43LmJiCkBAIC04LDcgKzgsNiBAQAogVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XlxkKyhcLig/ITk5KVxkKykrKSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2NsdXR0ZXItcHJvamVjdC9teC5naXQ7YnJhbmNoPW14LTEuNCBcCi0JICAgZmlsZTovL2ZpeC1idWlsZC1kaXIucGF0Y2ggXAogCSAgIGZpbGU6Ly9maXgtdGVzdC1pbmNsdWRlcy5wYXRjaCBcCiAJICAiCiBTID0gIiR7V09SS0RJUn0vZ2l0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9teC9teC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL214L214LmluYwppbmRleCA0ZjEwOTU3Li5kMzA0ODM3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL214L214LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL214L214LmluYwpAQCAtMSwxNiArMSwxNSBAQAogU1VNTUFSWSA9ICJDbHV0dGVyIGJhc2VkIFVJIHdpZGdldCBsaWJyYXJ5IgogTElDRU5TRSA9ICJMR1BMdjIuMSIKIAotaW5oZXJpdCBjbHV0dGVyIGF1dG90b29scy1icm9rZW5zZXAgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGdvYmplY3QtaW50cm9zcGVjdGlvbgoraW5oZXJpdCBjbHV0dGVyIGF1dG90b29scyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MKICMgZGVwZW5kcyBvbiBjbHV0dGVyLTEuMCB3aGljaCBkZXBlbmRzIG9uIGNvZ2wtMS4wCiBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgogCi1ERVBFTkRTID0gImNsdXR0ZXItMS4wIGRidXMtZ2xpYiBnZGstcGl4YnVmIgorREVQRU5EUyA9ICJpbnRsdG9vbC1uYXRpdmUgY2x1dHRlci0xLjAgZGJ1cy1nbGliIGdkay1waXhidWYiCiAKIFNSQ19VUkkgPSAiaHR0cDovL3NvdXJjZS5jbHV0dGVyLXByb2plY3Qub3JnL3NvdXJjZXMvbXgvJHtAZ2V0X3ZlcmRpcigiJHtQVn0iKX0vbXgtJHtQVn0udGFyLnh6IgogCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWd0ay1kb2MJCVwKLQkgICAgICAgIC0tZGlzYWJsZS1ndGstd2lkZ2V0cwkJXAorRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1ndGstd2lkZ2V0cwkJXAogCQktLXdpdGgtZGJ1cwkJCVwKIAkJLS13aXRoLXdpbnN5cz1ub25lCQlcCiAJCS0td2l0aG91dC1jbHV0dGVyLWltY29udGV4dAlcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtY2x1dHRlci5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1jbHV0dGVyLmJiCmluZGV4IDU3MzRiMjcuLjg3YzcwMGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1jbHV0dGVyLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1jbHV0dGVyLmJiCkBAIC0zLDcgKzMsNiBAQAogIwogCiBTVU1NQVJZID0gIkNsdXR0ZXIgcGFja2FnZSBncm91cHMiCi1MSUNFTlNFID0gIk1JVCIKIAogUFIgPSAicjYiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1kaXJlY3RmYi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1kaXJlY3RmYi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTY1N2ExYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtZGlyZWN0ZmIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1TVU1NQVJZID0gIkRpcmVjdEZCIHdpdGhvdXQgWDExIgotTElDRU5TRSA9ICJNSVQiCi0KLVBBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCi0KLWluaGVyaXQgcGFja2FnZWdyb3VwCi0KLVRPVUNIID0gJyAke0BiYi51dGlscy5jb250YWlucygiTUFDSElORV9GRUFUVVJFUyIsICJ0b3VjaHNjcmVlbiIsICJ0c2xpYiB0c2xpYi1jYWxpYnJhdGUgdHNsaWItdGVzdHMiLCAiIixkKX0nCi0KLVJERVBFTkRTXyR7UE59ID0gIiBcCi0JCWRpcmVjdGZiIFwKLQkJZGlyZWN0ZmItZXhhbXBsZXMgXAotCQlwYW5nbyBcCi0JCWZvbnRjb25maWcgXAotCQkke1RPVUNIfSBcCi0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUteDExLWJhc2UuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUteDExLWJhc2UuYmIKaW5kZXggMTczMDFhMC4uN2VhNzJkNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXgxMS1iYXNlLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS14MTEtYmFzZS5iYgpAQCAtMSw2ICsxLDUgQEAKIFNVTU1BUlkgPSAiQmFzaWMgWDExIHNlc3Npb24iCiBERVNDUklQVElPTiA9ICJQYWNrYWdlcyByZXF1aXJlZCB0byBzZXQgdXAgYSBiYXNpYyB3b3JraW5nIFgxMSBzZXNzaW9uIgotTElDRU5TRSA9ICJNSVQiCiBQUiA9ICJyMSIKIAogaW5oZXJpdCBwYWNrYWdlZ3JvdXAgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCkBAIC0xMSw3ICsxMCw2IEBACiAgICAgcGFja2FnZWdyb3VwLWNvcmUteDExLXhzZXJ2ZXIgXAogICAgIHBhY2thZ2Vncm91cC1jb3JlLXgxMS11dGlscyBcCiAgICAgZGJ1cyBcCi0gICAgcG9pbnRlcmNhbCBcCiAgICAgbWF0Y2hib3gtdGVybWluYWwgXAogICAgIG1hdGNoYm94LXdtIFwKICAgICBtaW5pLXgtc2Vzc2lvbiBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUteDExLXhzZXJ2ZXIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUteDExLXhzZXJ2ZXIuYmIKaW5kZXggYzUzZjFiNy4uNmI1MDAyOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXgxMS14c2VydmVyLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS14MTEteHNlcnZlci5iYgpAQCAtMyw3ICszLDYgQEAKICMKIAogU1VNTUFSWSA9ICJYMTEgZGlzcGxheSBzZXJ2ZXIiCi1MSUNFTlNFID0gIk1JVCIKIFBSID0gInI0MCIKIAogUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS14MTEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUteDExLmJiCmluZGV4IDM1MzdkOGMuLjQyOTE0MjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS14MTEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXgxMS5iYgpAQCAtMiw3ICsyLDYgQEAKICMgQ29weXJpZ2h0IChDKSAyMDExIEludGVsIENvcnBvcmF0aW9uCiAjCiAKLUxJQ0VOU0UgPSAiTUlUIgogUFIgPSAicjQwIgogCiBpbmhlcml0IHBhY2thZ2Vncm91cCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ28vMDAwMS1FbmZvcmNlLXJlY3JlYXRpb24tb2YtZG9jcy1wYW5nby50eXBlcy1pdC1pcy1idWlsZC1jLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nby8wMDAxLUVuZm9yY2UtcmVjcmVhdGlvbi1vZi1kb2NzLXBhbmdvLnR5cGVzLWl0LWlzLWJ1aWxkLWMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjc4NGExMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ28vMDAwMS1FbmZvcmNlLXJlY3JlYXRpb24tb2YtZG9jcy1wYW5nby50eXBlcy1pdC1pcy1idWlsZC1jLnBhdGNoCkBAIC0wLDAgKzEsMTQ3IEBACitGcm9tIDUyNmE2YTlmYzlhMWNmZTc1YzUyMWM4YmIzOWI2MTc1NGZlNDJmZTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMiBTZXAgMjAxNiAxNDowMDoyNCArMDMwMAorU3ViamVjdDogW1BBVENIXSBFbmZvcmNlIHJlY3JlYXRpb24gb2YgZG9jcy9wYW5nby50eXBlczsgaXQgaXMgYnVpbGQKKyBjb25maWd1cmF0aW9uLXNwZWNpZmljLgorCitJbiBwYXJ0aWN1bGFyLCBpdCBuZWVkcyB0byBleGNsdWRlIHJlZmVyZW5jZXMgdG8gUGFuZ29YZnQgaWYgWGZ0IGlzIG5vdCBhdmFpbGFibGUuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBkb2NzL01ha2VmaWxlLmFtIHwgMTcgKysrKy0tLS0tLS0tCisgZG9jcy9wYW5nby50eXBlcyB8IDgwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDkyIGRlbGV0aW9ucygtKQorIGRlbGV0ZSBtb2RlIDEwMDY0NCBkb2NzL3BhbmdvLnR5cGVzCisKK2RpZmYgLS1naXQgYS9kb2NzL01ha2VmaWxlLmFtIGIvZG9jcy9NYWtlZmlsZS5hbQoraW5kZXggZjVmMTMxNy4uODk0N2E5OSAxMDA2NDQKKy0tLSBhL2RvY3MvTWFrZWZpbGUuYW0KKysrKyBiL2RvY3MvTWFrZWZpbGUuYW0KK0BAIC00OSw2ICs0OSwxMCBAQCBJR05PUkVfSEZJTEVTPQkJCVwKKyAJcGFuZ29jb3JldGV4dC1wcml2YXRlLmgJCVwKKyAJcGFuZ29hdHN1aS1wcml2YXRlLmgKKyAKKytpZiAhSEFWRV9YRlQKKytJR05PUkVfSEZJTEVTICs9IHBhbmdveGZ0IHBhbmdveGZ0LXJlbmRlci5oCisrZW5kaWYKKysKKyAjIENGTEFHUyBhbmQgTERGTEFHUyBmb3IgY29tcGlsaW5nIHNjYW4gcHJvZ3JhbS4gT25seSBuZWVkZWQKKyAjIGlmICQoRE9DX01PRFVMRSkudHlwZXMgaXMgbm9uLWVtcHR5LgorIElOQ0xVREVTID0gICAgICAgICAgICAgICAJXAorQEAgLTEwMywxNiArMTA3LDYgQEAgaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2d0ay1kb2MubWFrZQorICMgVGhpcyBsaW5lIHJlYWxseSBiZWxvbmdzIGluIGd0ay1kb2MubWsKKyAkKFJFUE9SVF9GSUxFUyk6IHNnbWwtYnVpbGQuc3RhbXAKKyAKKy1wYW5nby50eXBlczoKKy0JQGVjaG8gIlJlYnVpbGRpbmcgJEAiCistCUBMQU5HPUM7IExJU1Q9JCQoZ3JlcCAncGFuZ29fW19hLXpBLVowLTldKl9nZXRfdHlwZScgJChIRklMRV9HTE9CKSB8IGdyZXAgLXYgJ1wocHJpdmF0ZVx8YXRzdWlcfGNvcmVfdGV4dFx8d2luMzJcKScgfCBzZWQgJ3MvXChbXjpdKjpcKS4qXChwYW5nb1tfYS16QS1aMC05XSpfZ2V0X3R5cGVcKS4qL1wxXDIvJykgJiYgXAorLQllY2hvICIkJExJU1QiIHwgc2VkICdzLy4qXC9cKHBhbmdvXC8uKlwpOi4qLyNpbmNsdWRlIDxcMT4vJyB8IHNvcnQgLXUgPiAkQC50bXAgJiYgXAorLQllY2hvID4+ICRALnRtcCAmJiBcCistCWVjaG8gIiQkTElTVCIgfCBjdXQgLWQgOiAtZiAyIHwgc29ydCAtdSA+PiAkQC50bXAgJiYgXAorLQltdiAkQC50bXAgJEAKKy0KKy1CVUlMVF9TT1VSQ0VTID0gcGFuZ28udHlwZXMKKy0KKyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAKKyBNQUlOVEFJTkVSQ0xFQU5GSUxFUyA9ICQoQlVJTFRfU09VUkNFUykKK0BAIC0xMjAsOCArMTE0LDcgQEAgRVhUUkFfRElTVCArPQkJCQlcCisgCWxheW91dC5maWcJCQlcCisgCWxheW91dC5lcHMJCQlcCisgCXZlcnNpb24ueG1sLmluCQkJXAorLQljaGVjay5kb2NzCQkJXAorLQlwYW5nby50eXBlcworKwljaGVjay5kb2NzCisgCisgIyBmb3JjZSBkb2MgcmVidWxpZCBhZnRlciBjb25maWd1cmUKKyBkaXN0LWhvb2stbG9jYWw6IGRpc3QtbG9jYWwtY2hlY2stbm8tY3Jvc3MtcmVmZXJlbmNlcyBhbGwtbG9jYWwKK2RpZmYgLS1naXQgYS9kb2NzL3BhbmdvLnR5cGVzIGIvZG9jcy9wYW5nby50eXBlcworZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCA3ZDkzY2RhLi4wMDAwMDAwCistLS0gYS9kb2NzL3BhbmdvLnR5cGVzCisrKysgL2Rldi9udWxsCitAQCAtMSw4MCArMCwwIEBACistI2luY2x1ZGUgPHBhbmdvL3BhbmdvLWF0dHJpYnV0ZXMuaD4KKy0jaW5jbHVkZSA8cGFuZ28vcGFuZ28tY29udGV4dC5oPgorLSNpbmNsdWRlIDxwYW5nby9wYW5nby1lbmdpbmUuaD4KKy0jaW5jbHVkZSA8cGFuZ28vcGFuZ28tZW51bS10eXBlcy5oPgorLSNpbmNsdWRlIDxwYW5nby9wYW5nby1mb250Lmg+CistI2luY2x1ZGUgPHBhbmdvL3BhbmdvLWZvbnRtYXAuaD4KKy0jaW5jbHVkZSA8cGFuZ28vcGFuZ28tZm9udHNldC5oPgorLSNpbmNsdWRlIDxwYW5nby9wYW5nby1nbHlwaC1pdGVtLmg+CistI2luY2x1ZGUgPHBhbmdvL3BhbmdvLWdseXBoLmg+CistI2luY2x1ZGUgPHBhbmdvL3BhbmdvLWl0ZW0uaD4KKy0jaW5jbHVkZSA8cGFuZ28vcGFuZ28tbGFuZ3VhZ2UuaD4KKy0jaW5jbHVkZSA8cGFuZ28vcGFuZ28tbGF5b3V0Lmg+CistI2luY2x1ZGUgPHBhbmdvL3BhbmdvLW1hdHJpeC5oPgorLSNpbmNsdWRlIDxwYW5nby9wYW5nby1vdC5oPgorLSNpbmNsdWRlIDxwYW5nby9wYW5nby1yZW5kZXJlci5oPgorLSNpbmNsdWRlIDxwYW5nby9wYW5nby10YWJzLmg+CistI2luY2x1ZGUgPHBhbmdvL3BhbmdvY2Fpcm8tZmMuaD4KKy0jaW5jbHVkZSA8cGFuZ28vcGFuZ29jYWlyby5oPgorLSNpbmNsdWRlIDxwYW5nby9wYW5nb2ZjLWRlY29kZXIuaD4KKy0jaW5jbHVkZSA8cGFuZ28vcGFuZ29mYy1mb250Lmg+CistI2luY2x1ZGUgPHBhbmdvL3BhbmdvZmMtZm9udG1hcC5oPgorLSNpbmNsdWRlIDxwYW5nby9wYW5nb2Z0Mi5oPgorLSNpbmNsdWRlIDxwYW5nby9wYW5nb3hmdC1yZW5kZXIuaD4KKy0jaW5jbHVkZSA8cGFuZ28vcGFuZ294ZnQuaD4KKy0KKy1wYW5nb19hbGlnbm1lbnRfZ2V0X3R5cGUKKy1wYW5nb19hdHRyX2xpc3RfZ2V0X3R5cGUKKy1wYW5nb19hdHRyX3R5cGVfZ2V0X3R5cGUKKy1wYW5nb19iaWRpX3R5cGVfZ2V0X3R5cGUKKy1wYW5nb19jYWlyb19mY19mb250X21hcF9nZXRfdHlwZQorLXBhbmdvX2NhaXJvX2ZvbnRfZ2V0X3R5cGUKKy1wYW5nb19jYWlyb19mb250X21hcF9nZXRfdHlwZQorLXBhbmdvX2NvbG9yX2dldF90eXBlCistcGFuZ29fY29udGV4dF9nZXRfdHlwZQorLXBhbmdvX2NvdmVyYWdlX2xldmVsX2dldF90eXBlCistcGFuZ29fZGlyZWN0aW9uX2dldF90eXBlCistcGFuZ29fZWxsaXBzaXplX21vZGVfZ2V0X3R5cGUKKy1wYW5nb19lbmdpbmVfZ2V0X3R5cGUKKy1wYW5nb19lbmdpbmVfbGFuZ19nZXRfdHlwZQorLXBhbmdvX2VuZ2luZV9zaGFwZV9nZXRfdHlwZQorLXBhbmdvX2ZjX2RlY29kZXJfZ2V0X3R5cGUKKy1wYW5nb19mY19mb250X2dldF90eXBlCistcGFuZ29fZmNfZm9udF9tYXBfZ2V0X3R5cGUKKy1wYW5nb19mb250X2Rlc2NyaXB0aW9uX2dldF90eXBlCistcGFuZ29fZm9udF9mYWNlX2dldF90eXBlCistcGFuZ29fZm9udF9mYW1pbHlfZ2V0X3R5cGUKKy1wYW5nb19mb250X2dldF90eXBlCistcGFuZ29fZm9udF9tYXBfZ2V0X3R5cGUKKy1wYW5nb19mb250X21hc2tfZ2V0X3R5cGUKKy1wYW5nb19mb250X21ldHJpY3NfZ2V0X3R5cGUKKy1wYW5nb19mb250c2V0X2dldF90eXBlCistcGFuZ29fZm9udHNldF9zaW1wbGVfZ2V0X3R5cGUKKy1wYW5nb19mdDJfZm9udF9tYXBfZ2V0X3R5cGUKKy1wYW5nb19nbHlwaF9pdGVtX2dldF90eXBlCistcGFuZ29fZ2x5cGhfaXRlbV9pdGVyX2dldF90eXBlCistcGFuZ29fZ2x5cGhfc3RyaW5nX2dldF90eXBlCistcGFuZ29fZ3Jhdml0eV9nZXRfdHlwZQorLXBhbmdvX2dyYXZpdHlfaGludF9nZXRfdHlwZQorLXBhbmdvX2l0ZW1fZ2V0X3R5cGUKKy1wYW5nb19sYW5ndWFnZV9nZXRfdHlwZQorLXBhbmdvX2xheW91dF9nZXRfdHlwZQorLXBhbmdvX2xheW91dF9pdGVyX2dldF90eXBlCistcGFuZ29fbGF5b3V0X2xpbmVfZ2V0X3R5cGUKKy1wYW5nb19tYXRyaXhfZ2V0X3R5cGUKKy1wYW5nb19vdF9pbmZvX2dldF90eXBlCistcGFuZ29fb3RfcnVsZXNldF9nZXRfdHlwZQorLXBhbmdvX3JlbmRlcl9wYXJ0X2dldF90eXBlCistcGFuZ29fcmVuZGVyZXJfZ2V0X3R5cGUKKy1wYW5nb19zY3JpcHRfZ2V0X3R5cGUKKy1wYW5nb19zdHJldGNoX2dldF90eXBlCistcGFuZ29fc3R5bGVfZ2V0X3R5cGUKKy1wYW5nb190YWJfYWxpZ25fZ2V0X3R5cGUKKy1wYW5nb190YWJfYXJyYXlfZ2V0X3R5cGUKKy1wYW5nb191bmRlcmxpbmVfZ2V0X3R5cGUKKy1wYW5nb192YXJpYW50X2dldF90eXBlCistcGFuZ29fd2VpZ2h0X2dldF90eXBlCistcGFuZ29fd3JhcF9tb2RlX2dldF90eXBlCistcGFuZ29feGZ0X2ZvbnRfZ2V0X3R5cGUKKy1wYW5nb194ZnRfZm9udF9tYXBfZ2V0X3R5cGUKKy1wYW5nb194ZnRfcmVuZGVyZXJfZ2V0X3R5cGUKKy0tIAorMi45LjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb18xLjM4LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvXzEuMzguMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2ZjNjVmZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvXzEuMzguMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLVNVTU1BUlkgPSAiRnJhbWV3b3JrIGZvciBsYXlvdXQgYW5kIHJlbmRlcmluZyBvZiBpbnRlcm5hdGlvbmFsaXplZCB0ZXh0IgotREVTQ1JJUFRJT04gPSAiUGFuZ28gaXMgYSBsaWJyYXJ5IGZvciBsYXlpbmcgb3V0IGFuZCByZW5kZXJpbmcgb2YgdGV4dCwgXAotd2l0aCBhbiBlbXBoYXNpcyBvbiBpbnRlcm5hdGlvbmFsaXphdGlvbi4gUGFuZ28gY2FuIGJlIHVzZWQgYW55d2hlcmUgXAotdGhhdCB0ZXh0IGxheW91dCBpcyBuZWVkZWQsIHRob3VnaCBtb3N0IG9mIHRoZSB3b3JrIG9uIFBhbmdvIHNvIGZhciBoYXMgXAotYmVlbiBkb25lIGluIHRoZSBjb250ZXh0IG9mIHRoZSBHVEsrIHdpZGdldCB0b29sa2l0LiBQYW5nbyBmb3JtcyB0aGUgXAotY29yZSBvZiB0ZXh0IGFuZCBmb250IGhhbmRsaW5nIGZvciBHVEsrLTIueC4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnBhbmdvLm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmciCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxHUEx2Mi4wKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2JmNTAwMDJhZWZkMDAyZjQ5ZTdiYjg1NDA2M2Y3ZTciCi0KLWluaGVyaXQgZ25vbWViYXNlIGd0ay1kb2MgcHRlc3QtZ25vbWUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgotCi1TUkNfVVJJICs9ICJmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURyb3AtaW50cm9zcGVjdGlvbi1tYWNyb3MtZnJvbS1hY2luY2x1ZGUubTQucGF0Y2ggXAotIgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI3ZmRlMzVkNGExMjdiNTVjZThiYmNlZmUxMDliYzgwZCIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjEzMjA1NjlmNmM2ZDc1ZDZiNjYxNzJiMmQyOGU1OWM1NmVlODY0ZWU5ZGYyMDJiNzY3OTljNDUwNmEyMTRlYjciCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGZvbnRjb25maWcgZnJlZXR5cGUgdmlydHVhbC9saWJpY29udiBjYWlybyBoYXJmYnV6eiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3gxMScsICcnLCBkKX0iCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLS13aXRoLXhmdCwtLXdpdGhvdXQteGZ0LHZpcnR1YWwvbGlieDExIGxpYnhmdCIKLQotRVhUUkFfQVVUT1JFQ09ORiA9ICIiCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotCSAgICAgICAgLS1kaXNhYmxlLWRlYnVnIFwKLQkgICAgICAgICIKLQotTEVBRF9TT05BTUUgPSAibGlicGFuZ28tMS4wKiIKLUxJQlYgPSAiMS44LjAiCi0KLSMgVGhpcyBiaW5hcnkgbmVlZHMgdG8gYmUgY29tcGlsZWQgZm9yIHRoZSBob3N0IGFyY2hpdGVjdHVyZS4gIFRoaXMgaXNuJ3QgcHJldHR5IQotZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLXRhcmdldCAoKSB7Ci0JaWYgJHtAYmFzZV9jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3B0ZXN0JywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLQkJbWFrZSBDQz0iJHtCVUlMRF9DQ30iIENGTEFHUz0iIiBMREZMQUdTPSIiIEFNX0NQUEZMQUdTPSIkKHBrZy1jb25maWctbmF0aXZlIC0tY2ZsYWdzIGdsaWItMi4wKSIgZ2VuX2FsbF91bmljb2RlX0xEQUREPSIkKHBrZy1jb25maWctbmF0aXZlIC0tbGlicyBnbGliLTIuMCkiIC1DICR7Qn0vdGVzdHMgZ2VuLWFsbC11bmljb2RlCi0JZmkKLX0KLQotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9LyogJHtsaWJkaXJ9L2xpYnBhbmdvKiR7U09MSUJTfSIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3BhbmdvLyR7TElCVn0vbW9kdWxlcy8qLmxhIgotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAibGliZXJhdGlvbi1mb250cyBjYW50YXJlbGwtZm9udHMiCi0KLVJQUk9WSURFU18ke1BOfSArPSAicGFuZ28tbW9kdWxlcyBwYW5nby1tb2R1bGUtaW5kaWMtbGFuZyBcCi0gICAgICAgICAgICAgICAgICAgIHBhbmdvLW1vZHVsZS1iYXNpYy1mYyBwYW5nby1tb2R1bGUtYXJhYmljLWxhbmciCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb18xLjQwLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvXzEuNDAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOWYzNDRhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb18xLjQwLjEuYmIKQEAgLTAsMCArMSw1MiBAQAorU1VNTUFSWSA9ICJGcmFtZXdvcmsgZm9yIGxheW91dCBhbmQgcmVuZGVyaW5nIG9mIGludGVybmF0aW9uYWxpemVkIHRleHQiCitERVNDUklQVElPTiA9ICJQYW5nbyBpcyBhIGxpYnJhcnkgZm9yIGxheWluZyBvdXQgYW5kIHJlbmRlcmluZyBvZiB0ZXh0LCBcCit3aXRoIGFuIGVtcGhhc2lzIG9uIGludGVybmF0aW9uYWxpemF0aW9uLiBQYW5nbyBjYW4gYmUgdXNlZCBhbnl3aGVyZSBcCit0aGF0IHRleHQgbGF5b3V0IGlzIG5lZWRlZCwgdGhvdWdoIG1vc3Qgb2YgdGhlIHdvcmsgb24gUGFuZ28gc28gZmFyIGhhcyBcCitiZWVuIGRvbmUgaW4gdGhlIGNvbnRleHQgb2YgdGhlIEdUSysgd2lkZ2V0IHRvb2xraXQuIFBhbmdvIGZvcm1zIHRoZSBcCitjb3JlIG9mIHRleHQgYW5kIGZvbnQgaGFuZGxpbmcgZm9yIEdUSystMi54LiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cucGFuZ28ub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjArIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyBwdGVzdC1nbm9tZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtRHJvcC1pbnRyb3NwZWN0aW9uLW1hY3Jvcy1mcm9tLWFjaW5jbHVkZS5tNC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1FbmZvcmNlLXJlY3JlYXRpb24tb2YtZG9jcy1wYW5nby50eXBlcy1pdC1pcy1idWlsZC1jLnBhdGNoIFwKKyIKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjZmYzg4YzY1Mjk4OTBkNmM4ZTAzMDc0ZDU3YTNlY2ViIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiZTI3YWY1NDE3MmM3MmIzYWM2YmU1M2M5YTRjNjcwNTNlMTZjOTA1ZTAyYWRkY2YzYTYwM2NlYjIwMDVjMWE0MCIKKworREVQRU5EUyA9ICJnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgZm9udGNvbmZpZyBmcmVldHlwZSB2aXJ0dWFsL2xpYmljb252IGNhaXJvIGhhcmZidXp6IgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneDExJywgJycsIGQpfSIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteGZ0LC0td2l0aG91dC14ZnQsdmlydHVhbC9saWJ4MTEgbGlieGZ0IgorCitFWFRSQV9BVVRPUkVDT05GID0gIiIKKworRVhUUkFfT0VDT05GID0gIiBcCisJICAgICAgICAtLWRpc2FibGUtZGVidWcgXAorCSAgICAgICAgIgorCitMRUFEX1NPTkFNRSA9ICJsaWJwYW5nby0xLjAqIgorTElCViA9ICIxLjguMCIKKworIyBUaGlzIGJpbmFyeSBuZWVkcyB0byBiZSBjb21waWxlZCBmb3IgdGhlIGhvc3QgYXJjaGl0ZWN0dXJlLiAgVGhpcyBpc24ndCBwcmV0dHkhCitkb19jb21waWxlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3B0ZXN0JywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJbWFrZSBDQz0iJHtCVUlMRF9DQ30iIENGTEFHUz0iIiBMREZMQUdTPSIke0JVSUxEX0xERkxBR1N9IiBBTV9DUFBGTEFHUz0iJChwa2ctY29uZmlnLW5hdGl2ZSAtLWNmbGFncyBnbGliLTIuMCkiIGdlbl9hbGxfdW5pY29kZV9MREFERD0iJChwa2ctY29uZmlnLW5hdGl2ZSAtLWxpYnMgZ2xpYi0yLjApIiAtQyAke0J9L3Rlc3RzIGdlbi1hbGwtdW5pY29kZQorCWZpCit9CisKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS8qICR7bGliZGlyfS9saWJwYW5nbyoke1NPTElCU30iCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9wYW5nby8ke0xJQlZ9L21vZHVsZXMvKi5sYSIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImxpYmVyYXRpb24tZm9udHMgY2FudGFyZWxsLWZvbnRzIgorCitSUFJPVklERVNfJHtQTn0gKz0gInBhbmdvLW1vZHVsZXMgcGFuZ28tbW9kdWxlLWluZGljLWxhbmcgXAorICAgICAgICAgICAgICAgICAgICBwYW5nby1tb2R1bGUtYmFzaWMtZmMgcGFuZ28tbW9kdWxlLWFyYWJpYy1sYW5nIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGlnbGl0L3BpZ2xpdC8wMDAxLWNtYWtlLUxpbmstdGVzdC11dGlscy13aXRoLWxkbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGlnbGl0L3BpZ2xpdC8wMDAxLWNtYWtlLUxpbmstdGVzdC11dGlscy13aXRoLWxkbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTFjOTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0LzAwMDEtY21ha2UtTGluay10ZXN0LXV0aWxzLXdpdGgtbGRsLnBhdGNoCkBAIC0wLDAgKzEsNDEgQEAKK0JhY2twb3J0IHBhdGNoIHRvIGZpeCBidWlsZCB3aXRoIGdvbGQgbGlua2VyLgorCitTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCisKKworRnJvbSA5M2E3MTEzNDg1Y2YxYzU1ZmQ3MDc2MTE2ZmFmNWIzYTY5MDcwNmIyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK0RhdGU6IFR1ZSwgMzAgQXVnIDIwMTYgMTc6MTc6MjggKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gY21ha2U6IExpbmsgdGVzdCB1dGlscyB3aXRoICItbGRsIgorCitXaXRob3V0IHRoaXMgbGlua2luZyBDWFggZXhlY3V0YWJsZXMgKGUuZy4gZmJvLWJsaXQtc3RyZXRjaCkgZmFpbHMKK3dpdGggZ29sZCBsaW5rZXI6CisKK3wgbGlicGlnbGl0dXRpbF9nbC5zby4wOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAnZGxzeW0nCit8IGxpYnBpZ2xpdHV0aWxfZ2wuc28uMDogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ2RsZXJyb3InCit8IGxpYnBpZ2xpdHV0aWxfZ2wuc28uMDogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ2Rsb3BlbicKKworU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK1Jldmlld2VkLWJ5OiBFbWlsIFZlbGlrb3YgPGVtaWwudmVsaWtvdkBjb2xsYWJvcmEuY29tPgorLS0tCisgdGVzdHMvdXRpbC9DTWFrZUxpc3RzLnR4dCB8IDIgKysKKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS90ZXN0cy91dGlsL0NNYWtlTGlzdHMudHh0IGIvdGVzdHMvdXRpbC9DTWFrZUxpc3RzLnR4dAoraW5kZXggZTFmODA3My4uM2Q1YmVmNSAxMDA2NDQKKy0tLSBhL3Rlc3RzL3V0aWwvQ01ha2VMaXN0cy50eHQKKysrKyBiL3Rlc3RzL3V0aWwvQ01ha2VMaXN0cy50eHQKK0BAIC0xMSw2ICsxMSw4IEBAIHNldF9zb3VyY2VfZmlsZXNfcHJvcGVydGllcygKKyAJUFJPUEVSVElFUyBHRU5FUkFURUQgMQorIAkpCisgCisrbGlua19saWJyYXJpZXMoJHtDTUFLRV9ETF9MSUJTfSkKKysKKyBpZihIQVZFX0xJQkNBQ0EpCisgICAgIGxpbmtfbGlicmFyaWVzKGNhY2EpCisgZW5kaWYoKQorLS0gCisyLjkuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXQvMDAwMS1jbWFrZS1MaW5rLXV0aWxzLXdpdGgteGNiLWV4cGxpY2l0bHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXQvMDAwMS1jbWFrZS1MaW5rLXV0aWxzLXdpdGgteGNiLWV4cGxpY2l0bHkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQ1ODA0ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGlnbGl0L3BpZ2xpdC8wMDAxLWNtYWtlLUxpbmstdXRpbHMtd2l0aC14Y2ItZXhwbGljaXRseS5wYXRjaApAQCAtMCwwICsxLDU0IEBACitGcm9tIDczZTRmYmM1Nzc3ZWRkZDg5YmIwZmIxNmU5MDM0MzU1MWZlM2UwZWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorRGF0ZTogVHVlLCA1IEp1bCAyMDE2IDEwOjU2OjIzICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIGNtYWtlOiBMaW5rIHV0aWxzIHdpdGggeGNiIGV4cGxpY2l0bHkKKworTGlua2luZyB3aXRoIGcrKyBjYW4gcmVwb3J0ZWRseSBsZWFkIHRvOgorCitsaWJwaWdsaXR1dGlsX2dsLnNvLjA6IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICd4Y2JfY29ubmVjdCcKK2xpYnBpZ2xpdHV0aWxfZ2wuc28uMDogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3hjYl9nZXRfc2V0dXAnCitsaWJwaWdsaXR1dGlsX2dsLnNvLjA6IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICd4Y2Jfc2V0dXBfcm9vdHNfaXRlcmF0b3InCisKK1RoaXMgbWF5IGhhdmUgYXBwZWFyZWQgbm93IGJlY2F1c2UgeGNiLWRyaTIgdXNlZCB0byBvdmVybGluayBwdWJsaWNseQorYnV0IG5vdyBkb2VzIG5vdC4KKworU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQKKy0tLQorIENNYWtlTGlzdHMudHh0ICAgICAgICAgICAgfCAxICsKKyB0ZXN0cy91dGlsL0NNYWtlTGlzdHMudHh0IHwgMiArKworIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0CitpbmRleCA4ZTJhYmJhLi4yZTFhNDczIDEwMDY0NAorLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrKyBiL0NNYWtlTGlzdHMudHh0CitAQCAtMTUxLDYgKzE1MSw3IEBAIElGKCR7Q01BS0VfU1lTVEVNX05BTUV9IE1BVENIRVMgIkxpbnV4IikKKyAKKyAJcGtnX2NoZWNrX21vZHVsZXMoTElCRFJNIFFVSUVUIGxpYmRybSkKKyAJcGtnX2NoZWNrX21vZHVsZXMoTElCRFJNX0lOVEVMIFFVSUVUIGxpYmRybV9pbnRlbCkKKysJcGtnX2NoZWNrX21vZHVsZXMoWENCIFFVSUVUIHhjYikKKyAJcGtnX2NoZWNrX21vZHVsZXMoWENCX0RSSTIgUVVJRVQgeGNiLWRyaTIpCisgCXBrZ19jaGVja19tb2R1bGVzKEdMUFJPVE8gUVVJRVQgZ2xwcm90bykKKyBFTFNFSUYoJHtDTUFLRV9TWVNURU1fTkFNRX0gTUFUQ0hFUyAiV2luZG93cyIpCitkaWZmIC0tZ2l0IGEvdGVzdHMvdXRpbC9DTWFrZUxpc3RzLnR4dCBiL3Rlc3RzL3V0aWwvQ01ha2VMaXN0cy50eHQKK2luZGV4IGZiMjJmZmEuLmUxZjgwNzMgMTAwNjQ0CistLS0gYS90ZXN0cy91dGlsL0NNYWtlTGlzdHMudHh0CisrKysgYi90ZXN0cy91dGlsL0NNYWtlTGlzdHMudHh0CitAQCAtMTIxLDExICsxMjEsMTMgQEAgaWYoJHtDTUFLRV9TWVNURU1fTkFNRX0gTUFUQ0hFUyAiTGludXgiKQorIAorIAkJbGlzdChBUFBFTkQgVVRJTF9HTF9MSUJTCisgCQkJJHtMSUJEUk1fTERGTEFHU30KKysJCQkke1hDQl9MREZMQUdTfQorIAkJCSR7WENCX0RSSTJfTERGTEFHU30KKyAJCSkKKyAKKyAJCWxpc3QoQVBQRU5EIFVUSUxfR0xfSU5DTFVERVMKKyAJCQkke0xJQkRSTV9JTkNMVURFX0RJUlN9CisrCQkJJHtYQ0JfSU5DTFVERV9ESVJTfQorIAkJCSR7WENCX0RSSTJfSU5DTFVERV9ESVJTfQorIAkJKQorIAorLS0gCisyLjEuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXQvMDAwMS1jbWFrZS1pbnN0YWxsLWJhc2gtY29tcGxldGlvbnMtaW4tdGhlLXJpZ2h0LXBsYWNlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0LzAwMDEtY21ha2UtaW5zdGFsbC1iYXNoLWNvbXBsZXRpb25zLWluLXRoZS1yaWdodC1wbGFjZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDdlODEwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0LzAwMDEtY21ha2UtaW5zdGFsbC1iYXNoLWNvbXBsZXRpb25zLWluLXRoZS1yaWdodC1wbGFjZS5wYXRjaApAQCAtMCwwICsxLDM1IEBACitGcm9tIDI2ZmFhMmMxNTdhMjdhMThhOWY3Njc5NzY3MzBmZTBjMTE1ZTNhZjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorRGF0ZTogV2VkLCAxMyBKdWwgMjAxNiAxOToxOTowMiArMDMwMAorU3ViamVjdDogW1BBVENIXSBjbWFrZTogaW5zdGFsbCBiYXNoLWNvbXBsZXRpb25zIGluIHRoZSByaWdodCBwbGFjZQorCitUaGUgY29tcGxldGlvbnNkaXIgdmFyaWFibGUgaXMgYSBmdWxsIHBhdGggYW5kIHNob3VsZCBub3QgYmUKK3ByZWZpeGVkLgorCitUaGlzIGRvZXMgbWVhbiB0aGUgZmlsZXMgbWF5IGJlIGluc3RhbGxlZCBvdXRzaWRlIG9mCitDTUFLRV9JTlNUQUxMX1BSRUZJWCAtLSB0aGUgYWx0ZXJuYXRpdmUgaXMgbW9yZSBkaWZmaWN1bHQgYW5kCittZWFucyB0aGF0IGJhc2ggY29tcGxldGlvbiBmaWxlcyBtYXkgYmUgaW5zdGFsbGVkIHdoZXJlCitiYXNoLWNvbXBsZXRpb24gY2FuJ3QgZmluZCB0aGVtLgorCitTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW21haWxpbmcgbGlzdF0KKy0tLQorIENNYWtlTGlzdHMudHh0IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAoraW5kZXggOGUyYWJiYS4uNzg0YThmOSAxMDA2NDQKKy0tLSBhL0NNYWtlTGlzdHMudHh0CisrKysgYi9DTWFrZUxpc3RzLnR4dAorQEAgLTUzMiw3ICs1MzIsNyBAQCBpbnN0YWxsICgKKyBpZiAoQkFTSF9DT01QTEVUSU9OX0ZPVU5EKQorIAlpbnN0YWxsKAorIAkJRklMRVMgY29tcGxldGlvbnMvYmFzaC9waWdsaXQKKy0JCURFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9LyR7QkFTSF9DT01QTEVUSU9OX0NPTVBMRVRJT05TRElSfS8KKysJCURFU1RJTkFUSU9OICR7QkFTSF9DT01QTEVUSU9OX0NPTVBMRVRJT05TRElSfS8KKyAJKQorIGVuZGlmIChCQVNIX0NPTVBMRVRJT05fRk9VTkQpCisgCistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGlnbGl0L3BpZ2xpdC8wMDAxLXRlc3RzLUZpeC1taXNzaW5nLWluY2x1ZGUtb2YtWHV0aWwuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGlnbGl0L3BpZ2xpdC8wMDAxLXRlc3RzLUZpeC1taXNzaW5nLWluY2x1ZGUtb2YtWHV0aWwuaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzI3Y2MwNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXQvMDAwMS10ZXN0cy1GaXgtbWlzc2luZy1pbmNsdWRlLW9mLVh1dGlsLmgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgotCi1Gcm9tIGU0MGUwYTI1Zjk5NmQyZTIwNWM0YmRlYzJjOGE1Y2M3Zjc0ZTUwNjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgotRGF0ZTogTW9uLCAxNSBKdW4gMjAxNSAxNjoyNTozMCAtMDMwMAotU3ViamVjdDogdGVzdHM6IEZpeCBtaXNzaW5nIGluY2x1ZGUgb2YgWHV0aWwuaAotCi1UaGUgRUdMIHRlc3RzIHJlbHkgb24gWHV0aWwuaCBiZWluZyBpbmNsdWRlZC4gU29tZSBFR0wgaW1wbGVtZW50YXRpb24KLWRvZXMgbm90IGV4cGxpdGx5IGluY2x1ZGUgaXQgYnkgZGVmYXVsdCBhbmQgdGhlbiB0aGUgYnVpbGQgZmFpbHMuCi0KLVNpZ25lZC1vZmYtYnk6IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+Ci1SZXZpZXdlZC1ieTogTmVpbCBSb2JlcnRzIDxuZWlsQGxpbnV4LmludGVsLmNvbT4KLQotZGlmZiAtLWdpdCBhL3Rlc3RzL2VnbC9lZ2wtY29uZmlnbGVzcy1jb250ZXh0LmMgYi90ZXN0cy9lZ2wvZWdsLWNvbmZpZ2xlc3MtY29udGV4dC5jCi1pbmRleCAwNTA0YTI2Li4xNTRiNTVjIDEwMDY0NAotLS0tIGEvdGVzdHMvZWdsL2VnbC1jb25maWdsZXNzLWNvbnRleHQuYwotKysrIGIvdGVzdHMvZWdsL2VnbC1jb25maWdsZXNzLWNvbnRleHQuYwotQEAgLTMyLDYgKzMyLDcgQEAKLSAvKiBDaHVua3Mgb2YgY29kZSBpbiB0aGlzIGZpbGUgYXJlIHRha2VuIGZyb20gZWdsLXV0aWwuYyAqLwotIAotICNpbmNsdWRlIDxYMTEvWGxpYi5oPgotKyNpbmNsdWRlIDxYMTEvWHV0aWwuaD4KLSAKLSAjaW5jbHVkZSAicGlnbGl0LXV0aWwtZ2wuaCIKLSAjaW5jbHVkZSAicGlnbGl0LXV0aWwtZWdsLmgiCi0tLSAKLWNnaXQgdjAuMTAuMgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0LzAwMDEtdGVzdHMtVXNlLUZFX1VQV0FSRC1vbmx5LWlmLWl0cy1kZWZpbmVkLWluLWZlbnYuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGlnbGl0L3BpZ2xpdC8wMDAxLXRlc3RzLVVzZS1GRV9VUFdBUkQtb25seS1pZi1pdHMtZGVmaW5lZC1pbi1mZW52LmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjg1MWE5MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGlnbGl0L3BpZ2xpdC8wMDAxLXRlc3RzLVVzZS1GRV9VUFdBUkQtb25seS1pZi1pdHMtZGVmaW5lZC1pbi1mZW52LmgucGF0Y2gKQEAgLTAsMCArMSw1NCBAQAorRnJvbSAwZmMyYzI5MzI2OTljZmQ2OGJlOTZjODIwZmRkZmRkNzliNDhiNzg4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgOSBKdWwgMjAxNiAwNzo1MjoxOSArMDAwMAorU3ViamVjdDogW1BBVENIXSB0ZXN0czogVXNlIEZFX1VQV0FSRCBvbmx5IGlmIGl0cyBkZWZpbmVkIGluIGZlbnYuaAorCitPbiBBUk0sIG11c2wgZG9lcyBub3QgZGVmaW5lIEZFXyogd2hlbiBhcmNoIGRvZXMgbm90IGhhdmUKK1ZGUCwgKHdoaWNoIGlzIHJpZ2h0IGludGVycHJldGF0aW9uKSwgdGhlcmVmb3JlIGNoZWNrIGlmCitpdHMgZGVmaW5lZCBiZWZvcmUgdXNpbmcgaXQKKworRml4ZXMgZXJyb3JzIGxpa2UKKwordGVzdHMvZ2VuZXJhbC9yb3VuZG1vZGUtcGl4ZWxzdG9yZS5jOjgyOjE5OiBlcnJvcjogJ0ZFX1VQV0FSRCcgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pCisgIHJldCA9IGZlc2V0cm91bmQoRkVfVVBXQVJEKTsKKyAgICAgICAgICAgICAgICAgICBefn5+fn5+fn4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyB0ZXN0cy9nZW5lcmFsL3JvdW5kbW9kZS1nZXRpbnRlZ2Vydi5jIHwgMiArKworIHRlc3RzL2dlbmVyYWwvcm91bmRtb2RlLXBpeGVsc3RvcmUuYyAgfCAyICsrCisgMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3Rlc3RzL2dlbmVyYWwvcm91bmRtb2RlLWdldGludGVnZXJ2LmMgYi90ZXN0cy9nZW5lcmFsL3JvdW5kbW9kZS1nZXRpbnRlZ2Vydi5jCitpbmRleCAyOGVjZmFmLi41YzI3NTc5IDEwMDY0NAorLS0tIGEvdGVzdHMvZ2VuZXJhbC9yb3VuZG1vZGUtZ2V0aW50ZWdlcnYuYworKysrIGIvdGVzdHMvZ2VuZXJhbC9yb3VuZG1vZGUtZ2V0aW50ZWdlcnYuYworQEAgLTgxLDcgKzgxLDkgQEAgcGlnbGl0X2luaXQoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIHsKKyAJaW50IHJldDsKKyAJYm9vbCBwYXNzID0gdHJ1ZTsKKysjaWZkZWYgRkVfVVBXQVJECisgCXJldCA9IGZlc2V0cm91bmQoRkVfVVBXQVJEKTsKKysjZW5kaWYKKyAJaWYgKHJldCAhPSAwKSB7CisgCQlwcmludGYoIkNvdWxkbid0IHNldCByb3VuZGluZyBtb2RlXG4iKTsKKyAJCXBpZ2xpdF9yZXBvcnRfcmVzdWx0KFBJR0xJVF9TS0lQKTsKK2RpZmYgLS1naXQgYS90ZXN0cy9nZW5lcmFsL3JvdW5kbW9kZS1waXhlbHN0b3JlLmMgYi90ZXN0cy9nZW5lcmFsL3JvdW5kbW9kZS1waXhlbHN0b3JlLmMKK2luZGV4IDkyODRmNDMuLjNmY2IzOTYgMTAwNjQ0CistLS0gYS90ZXN0cy9nZW5lcmFsL3JvdW5kbW9kZS1waXhlbHN0b3JlLmMKKysrKyBiL3Rlc3RzL2dlbmVyYWwvcm91bmRtb2RlLXBpeGVsc3RvcmUuYworQEAgLTc5LDcgKzc5LDkgQEAgcGlnbGl0X2luaXQoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIHsKKyAJaW50IHJldDsKKyAJYm9vbCBwYXNzID0gdHJ1ZTsKKysjaWZkZWYgRkVfVVBXQVJECisgCXJldCA9IGZlc2V0cm91bmQoRkVfVVBXQVJEKTsKKysjZW5kaWYKKyAJaWYgKHJldCAhPSAwKSB7CisgCQlwcmludGYoIkNvdWxkbid0IHNldCByb3VuZGluZyBtb2RlXG4iKTsKKyAJCXBpZ2xpdF9yZXBvcnRfcmVzdWx0KFBJR0xJVF9TS0lQKTsKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXRfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0X2dpdC5iYgppbmRleCA2MDdmMjM2Li44MmFkY2RlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXRfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGlnbGl0L3BpZ2xpdF9naXQuYmIKQEAgLTMsMTggKzMsMjIgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyYmVkZWQ3MTAzYTNkOGE0NDJhMmEwMzkxZDYwN2IwIgogCiBTUkNfVVJJID0gImdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL3BpZ2xpdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3RzLUZpeC1taXNzaW5nLWluY2x1ZGUtb2YtWHV0aWwuaC5wYXRjaCIKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY21ha2UtaW5zdGFsbC1iYXNoLWNvbXBsZXRpb25zLWluLXRoZS1yaWdodC1wbGFjZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3RzLVVzZS1GRV9VUFdBUkQtb25seS1pZi1pdHMtZGVmaW5lZC1pbi1mZW52LmgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jbWFrZS1MaW5rLXV0aWxzLXdpdGgteGNiLWV4cGxpY2l0bHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jbWFrZS1MaW5rLXRlc3QtdXRpbHMtd2l0aC1sZGwucGF0Y2ggXAorICAgICAgICAgICAiCiAKLSMgRnJvbSAyMDE1LTAyLTE5Ci1TUkNSRVYgPSAiYzQ1ODU0Mjc5MTNlNGNiMjg5OTRiNGJmYjExZDQ5Nzc4MjczYWEyYyIKKyMgRnJvbSAyMDE2LTA3LTA3CitTUkNSRVYgPSAiYzM5ZTQxYTg2NTUxZWIzOTBiOGRhMjMyMzJkYzg1Nzc2Mzk0MDNkMCIKICMgKHdoZW4gUFYgZ29lcyBhYm92ZSAxLjAgcmVtb3ZlIHRoZSB0cmFpbGluZyByKQogUFYgPSAiMS4wK2dpdHIke1NSQ1BWfSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAotREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYngxMSBsaWJ4cmVuZGVyIHdhZmZsZSB2aXJ0dWFsL2xpYmdsIGxpYmdsdSBweXRob24tbWFrby1uYXRpdmUgcHl0aG9uLW51bXB5LW5hdGl2ZSIKK0RFUEVORFMgPSAibGlicG5nIHZpcnR1YWwvbGlieDExIGxpYnhyZW5kZXIgd2FmZmxlIHZpcnR1YWwvbGliZ2wgbGliZ2x1IHB5dGhvbjMtbWFrby1uYXRpdmUgcHl0aG9uMy1udW1weS1uYXRpdmUgcHl0aG9uMy1zaXgtbmF0aXZlIgogCi1pbmhlcml0IGNtYWtlIHB5dGhvbm5hdGl2ZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKK2luaGVyaXQgY21ha2UgcHl0aG9uM25hdGl2ZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgYmFzaC1jb21wbGV0aW9uCiAjIGRlcGVuZHMgb24gdmlydHVhbC9saWJ4MTEKIFJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCiAKQEAgLTM0LDEwICszOCwxNSBAQAogICAgZmkKIH0KIAotUkRFUEVORFNfJHtQTn0gPSAid2FmZmxlIHB5dGhvbiBweXRob24tbWFrbyBweXRob24tanNvbiBweXRob24tc3VicHJvY2VzcyBcCi0JcHl0aG9uLWFyZ3BhcnNlIHB5dGhvbi1pbXBvcnRsaWIgcHl0aG9uLXVuaXhhZG1pbiBweXRob24teG1sIFwKLQlweXRob24tbXVsdGlwcm9jZXNzaW5nIHB5dGhvbi10ZXh0dXRpbHMgcHl0aG9uLW5ldHNlcnZlciBweXRob24tc2hlbGwgXAorZG9faW5zdGFsbCgpIHsKKwlvZV9ydW5tYWtlIC1DICR7Qn0gJ0RFU1RESVI9JHtEfScgaW5zdGFsbC9zdHJpcAorfQorCitSREVQRU5EU18ke1BOfSA9ICJ3YWZmbGUgcHl0aG9uMyBweXRob24zLW1ha28gcHl0aG9uMy1qc29uIFwKKwlweXRob24zLXN1YnByb2Nlc3MgcHl0aG9uMy1taXNjIHB5dGhvbjMtaW1wb3J0bGliIFwKKwlweXRob24zLXVuaXhhZG1pbiBweXRob24zLXhtbCBweXRob24zLW11bHRpcHJvY2Vzc2luZyBcCisJcHl0aG9uMy1zaXggcHl0aG9uMy1zaGVsbCBweXRob24zLWlvIHB5dGhvbjMtYXJncGFyc2UgXAogCW1lc2EtZGVtb3MgYmFzaCBcCiAJIgogCi1JTlNBTkVfU0tJUF8ke1BOfSArPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtQTn0gKz0gImRldi1zbyBhbHJlYWR5LXN0cmlwcGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wb25nLWNsb2NrL3BvbmctY2xvY2tfMS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wb25nLWNsb2NrL3BvbmctY2xvY2tfMS4wLmJiCmluZGV4IDBlMWE3OTIuLjZjM2JjZDggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcG9uZy1jbG9jay9wb25nLWNsb2NrXzEuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BvbmctY2xvY2svcG9uZy1jbG9ja18xLjAuYmIKQEAgLTEzLDcgKzEzLDcgQEAKIFMgPSAiJHtXT1JLRElSfSIKIAogZG9fY29tcGlsZSAoKSB7Ci0JJHtDQ30gLW8gcG9uZy1jbG9jayBwb25nLWNsb2NrLW5vLWZsaWNrZXIuYyBgcGtnLWNvbmZpZyAtLWNmbGFncyAtLWxpYnMgeDExIHhhdSB4ZG1jcGAKKwkke0NDfSAke0NGTEFHU30gJHtMREZMQUdTfSAtbyBwb25nLWNsb2NrIHBvbmctY2xvY2stbm8tZmxpY2tlci5jIGBwa2ctY29uZmlnIC0tY2ZsYWdzIC0tbGlicyB4MTEgeGF1IHhkbWNwYAogfQogCiBkb19pbnN0YWxsICgpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdHNsaWIvdHNsaWIvdHMuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdHNsaWIvdHNsaWIvdHMuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWIwZGE5My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3RzbGliL3RzbGliL3RzLmNvbmYKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi0jIFVuY29tbWVudCBpZiB5b3Ugd2lzaCB0byB1c2UgdGhlIGxpbnV4IGlucHV0IGxheWVyIGV2ZW50IGludGVyZmFjZQotbW9kdWxlX3JhdyBpbnB1dAotCi0jIFVuY29tbWVudCBpZiB5b3UncmUgdXNpbmcgYSBTaGFycCBaYXVydXMgU0wtNTUwMC9TTC01MDAwZAotIyBtb2R1bGVfcmF3IGNvbGxpZQotCi0jIFVuY29tbWVudCBpZiB5b3UncmUgdXNpbmcgYSBTaGFycCBaYXVydXMgU0wtQzcwMC9DNzUwL0M3NjAvQzg2MAotIyBtb2R1bGVfcmF3IGNvcmdpCi0KLSMgVW5jb21tZW50IGlmIHlvdSdyZSB1c2luZyBhIGRldmljZSB3aXRoIGEgVUNCMTIwMC8xMzAwLzE0MDAgVFMgaW50ZXJmYWNlCi0jIG1vZHVsZV9yYXcgdWNiMXgwMAotCi0jIFVuY29tbWVudCBpZiB5b3UncmUgdXNpbmcgYW4gSFAgaVBhcSBoMzYwMCBvciBzaW1pbGFyCi0jIG1vZHVsZV9yYXcgaDM2MDAKLQotIyBVbmNvbW1lbnQgaWYgeW91J3JlIHVzaW5nIGEgSGl0YWNoaSBXZWJwYWQKLSMgbW9kdWxlX3JhdyBtazcxMgotCi0jIFVuY29tbWVudCBpZiB5b3UncmUgdXNpbmcgYW4gSUJNIEFyY3RpYyBJSQotIyBtb2R1bGVfcmF3IGFyY3RpYzIKLQotbW9kdWxlIHB0aHJlcyBwbWluPTEKLW1vZHVsZSB2YXJpYW5jZSBkZWx0YT0zMAotbW9kdWxlIGRlaml0dGVyIGRlbHRhPTEwMAotbW9kdWxlIGxpbmVhcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy90c2xpYi90c2xpYi90c2xpYi5zaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdHNsaWIvdHNsaWIvdHNsaWIuc2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwNjhlOGQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy90c2xpYi90c2xpYi90c2xpYi5zaAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotIyEvYmluL3NoCi0KLWlmIFsgLWUgL2Rldi9pbnB1dC90b3VjaHNjcmVlbjAgXTsgdGhlbgotICAgIFRTTElCX1RTREVWSUNFPS9kZXYvaW5wdXQvdG91Y2hzY3JlZW4wCi0KLSAgICBleHBvcnQgVFNMSUJfVFNERVZJQ0UKLWZpCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdHNsaWIvdHNsaWJfMS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy90c2xpYi90c2xpYl8xLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwMjY0YzMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy90c2xpYi90c2xpYl8xLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1TVU1NQVJZID0gIkFuIGFic3RyYWN0aW9uIGxheWVyIGZvciB0b3VjaHNjcmVlbiBwYW5lbCBldmVudHMiCi1ERVNDUklQVElPTiA9ICJUc2xpYiBpcyBhbiBhYnN0cmFjdGlvbiBsYXllciBmb3IgdG91Y2hzY3JlZW4gcGFuZWwgXAotZXZlbnRzLCBhcyB3ZWxsIGFzIGEgZmlsdGVyIHN0YWNrIGZvciB0aGUgbWFuaXB1bGF0aW9uIG9mIHRob3NlIGV2ZW50cy4gXAotVHNsaWIgaXMgZ2VuZXJhbGx5IHVzZWQgb24gZW1iZWRkZWQgZGV2aWNlcyB0byBwcm92aWRlIGEgY29tbW9uIHVzZXIgXAotc3BhY2UgaW50ZXJmYWNlIHRvIHRvdWNoc2NyZWVuIGZ1bmN0aW9uYWxpdHkuIgotSE9NRVBBR0UgPSAiaHR0cDovL3RzbGliLmJlcmxpb3MuZGUvIgotCi1BVVRIT1IgPSAiUnVzc2VsbCBLaW5nIHcvIHBsdWdpbnMgYnkgQ2hyaXMgTGFyc29uIGV0LiBhbC4iCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIkxHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWYzMGE5NzE2ZWYzNzYyZTM0NjdhMmY2MmJmNzkwZjBhIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9rZXJnb3RoL3RzbGliL3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9L3RzbGliLSR7UFZ9LnRhci54ejtkb3dubG9hZGZpbGVuYW1lPXRzbGliLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly90cy5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL3RzbGliLnNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjE0NzcxZjg2MDdiMzQxYmI0YjI5NzgxOWQzN2U4MzdkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImZlMzVlNWY3MTBlYTkzM2IxMThmNzEwZTJjZTQ0MDNhYzA3NmZlNjk5MjZiNTcwMzMzODY3ZDRkZTA4MmE1MWMiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20va2VyZ290aC90c2xpYi9yZWxlYXNlcyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1zaGFyZWQgLS1kaXNhYmxlLWgzNjAwIC0tZW5hYmxlLWlucHV0IC0tZGlzYWJsZS1jb3JnaSAtLWRpc2FibGUtY29sbGllIC0tZGlzYWJsZS1tazcxMiAtLWRpc2FibGUtYXJjdGljMiAtLWRpc2FibGUtdWNiMXgwMCIKLQotZG9faW5zdGFsbF9wcmVwZW5kKCkgewotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3RzLmNvbmYgJHtTfS9ldGMvdHMuY29uZgotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3Byb2ZpbGUuZC8KLQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS90c2xpYi5zaCAke0R9JHtzeXNjb25mZGlyfS9wcm9maWxlLmQvCi19Ci0KLSMgUGVvcGxlIHNob3VsZCBjb25zaWRlciB1c2luZyB1ZGV2J3MgL2Rldi9pbnB1dC90b3VjaHNjcmVlbjAgc3ltbGluawotIyBpbnN0ZWFkIG9mIGRldGVjdC1zdHlsdXMKLSNSREVQRU5EU190c2xpYi1jb25mX3dlaXJkLW1hY2hpbmUgPSAiZGV0ZWN0LXN0eWx1cyIKLVJQUk9WSURFU190c2xpYi1jb25mID0gImxpYnRzLTAuMC1jb25mIgotCi1QQUNLQUdFUyA9KyAidHNsaWItY29uZiB0c2xpYi10ZXN0cyB0c2xpYi1jYWxpYnJhdGUiCi1ERUJJQU5fTk9BVVRPTkFNRV90c2xpYi1jb25mID0gIjEiCi1ERUJJQU5fTk9BVVRPTkFNRV90c2xpYi10ZXN0cyA9ICIxIgotREVCSUFOX05PQVVUT05BTUVfdHNsaWItY2FsaWJyYXRlID0gIjEiCi0KLVJERVBFTkRTXyR7UE59ID0gInRzbGliLWNvbmYiCi1SUkVDT01NRU5EU18ke1BOfSA9ICJwb2ludGVyY2FsIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS90cy8qLmxhIgotRklMRVNfdHNsaWItY29uZiA9ICIke3N5c2NvbmZkaXJ9L3RzLmNvbmYgJHtzeXNjb25mZGlyfS9wcm9maWxlLmQvdHNsaWIuc2ggJHtkYXRhZGlyfS90c2xpYiIKLUZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS8qLnNvLiogJHtsaWJkaXJ9L3RzLyouc28qIgotRklMRVNfdHNsaWItY2FsaWJyYXRlICs9ICIke2JpbmRpcn0vdHNfY2FsaWJyYXRlIgotRklMRVNfdHNsaWItdGVzdHMgPSAiJHtiaW5kaXJ9L3RzX2hhcnZlc3QgJHtiaW5kaXJ9L3RzX3ByaW50ICR7YmluZGlyfS90c19wcmludF9yYXcgJHtiaW5kaXJ9L3RzX3Rlc3QiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXQvdG91Y2hwYWQtc2VyaWFsLXN5bmFwdGljcy1uZWVkLXRvLWZha2UtbmV3LXRvdWNoZXMtb24tVFJJUExFVEFQLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL2xpYmlucHV0L3RvdWNocGFkLXNlcmlhbC1zeW5hcHRpY3MtbmVlZC10by1mYWtlLW5ldy10b3VjaGVzLW9uLVRSSVBMRVRBUC5wYXRjaAppbmRleCA5N2M2M2JkLi5iNTJiNDk2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXQvdG91Y2hwYWQtc2VyaWFsLXN5bmFwdGljcy1uZWVkLXRvLWZha2UtbmV3LXRvdWNoZXMtb24tVFJJUExFVEFQLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dC90b3VjaHBhZC1zZXJpYWwtc3luYXB0aWNzLW5lZWQtdG8tZmFrZS1uZXctdG91Y2hlcy1vbi1UUklQTEVUQVAucGF0Y2gKQEAgLTEsNyArMSw3IEBACiBUaGlzIGlzIGEgd29ya2Fyb3VuZCB1cHN0cmVhbSBzdWdnZXN0cyBmb3IgdXNlIHdpdGgga2VybmVsIDQuMS4KIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFt0ZW1wb3Jhcnkgd29yay1hcm91bmRdCi1TaWduZWQtT2ZmLUJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIAogCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dF8xLjEuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dF8xLjEuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDE2NzY3OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXRfMS4xLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgdG8gaGFuZGxlIGlucHV0IGRldmljZXMgaW4gV2F5bGFuZCBjb21wb3NpdG9ycyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvbGliaW5wdXQvIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTIxODRhZWYzOGZmMTM3ZWQzM2NlOWE2M2I5ZDFlYjhmIgotCi1ERVBFTkRTID0gImxpYmV2ZGV2IHVkZXYgbXRkZXYiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvJHtCUE59LyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly90b3VjaHBhZC1zZXJpYWwtc3luYXB0aWNzLW5lZWQtdG8tZmFrZS1uZXctdG91Y2hlcy1vbi1UUklQTEVUQVAucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjA5NDUzMTgxNDFjMWE5ZjUyODU3YmJmNjVkMTc1ZjMyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMwMmNiNzYyMDliOWM1N2E1YTMxOGUxNzhmOWJjNDQ2ZWVkZThlYTc5Mzg2MTAzYjUyOTFjYmZhYTVmYWI1YjYiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tsaWJ1bndpbmRdID0gIi0td2l0aC1saWJ1bndpbmQsLS13aXRob3V0LWxpYnVud2luZCxsaWJ1bndpbmQiCi1QQUNLQUdFQ09ORklHW2d1aV0gPSAiLS1lbmFibGUtZXZlbnQtZ3VpLC0tZGlzYWJsZS1ldmVudC1ndWksY2Fpcm8gZ3RrKzMiCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vdWRldi8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXRfMS40LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXRfMS40LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzU4MDM5MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dF8xLjQuMS5iYgpAQCAtMCwwICsxLDI1IEBACitTVU1NQVJZID0gIkxpYnJhcnkgdG8gaGFuZGxlIGlucHV0IGRldmljZXMgaW4gV2F5bGFuZCBjb21wb3NpdG9ycyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvbGliaW5wdXQvIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTIxODRhZWYzOGZmMTM3ZWQzM2NlOWE2M2I5ZDFlYjhmIgorCitERVBFTkRTID0gImxpYmV2ZGV2IHVkZXYgbXRkZXYiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvJHtCUE59LyR7QlB9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly90b3VjaHBhZC1zZXJpYWwtc3luYXB0aWNzLW5lZWQtdG8tZmFrZS1uZXctdG91Y2hlcy1vbi1UUklQTEVUQVAucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjJlN2JhNTc3ZWQ3NGQ4ZDFiYWViMDdkYmQ0ZmI5MTJhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI2ZTdiM2FiNDk5MzU4Y2FiYTQ5OTcwNTY4MGVhN2U1ODUxYWYyYmQzN2RjMzJmMmJlNjQxODE2MTBkNjM5MmEiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tsaWJ1bndpbmRdID0gIi0td2l0aC1saWJ1bndpbmQsLS13aXRob3V0LWxpYnVud2luZCxsaWJ1bndpbmQiCitQQUNLQUdFQ09ORklHW2xpYndhY29tXSA9ICItLWVuYWJsZS1saWJ3YWNvbSwtLWRpc2FibGUtbGlid2Fjb20sbGlid2Fjb20iCitQQUNLQUdFQ09ORklHW2d1aV0gPSAiLS1lbmFibGUtZXZlbnQtZ3VpLC0tZGlzYWJsZS1ldmVudC1ndWksY2Fpcm8gZ3RrKzMiCisKK1VERVZESVIgPSAiYHBrZy1jb25maWcgLS12YXJpYWJsZT11ZGV2ZGlyIHVkZXZgIgorCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC11ZGV2LWRpcj0ke1VERVZESVJ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQtcHJvdG9jb2xzXzEuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLXByb3RvY29sc18xLjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQyZjBkYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLXByb3RvY29sc18xLjcuYmIKQEAgLTAsMCArMSwyMCBAQAorU1VNTUFSWSA9ICJDb2xsZWN0aW9uIG9mIGFkZGl0aW9uYWwgV2F5bGFuZCBwcm90b2NvbHMiCitERVNDUklQVElPTiA9ICJXYXlsYW5kIHByb3RvY29scyB0aGF0IGFkZCBmdW5jdGlvbmFsaXR5IG5vdCBcCithdmFpbGFibGUgaW4gdGhlIFdheWxhbmQgY29yZSBwcm90b2NvbC4gU3VjaCBwcm90b2NvbHMgZWl0aGVyIGFkZCBcCitjb21wbGV0ZWx5IG5ldyBmdW5jdGlvbmFsaXR5LCBvciBleHRlbmQgdGhlIGZ1bmN0aW9uYWxpdHkgb2Ygc29tZSBvdGhlciBcCitwcm90b2NvbCBlaXRoZXIgaW4gV2F5bGFuZCBjb3JlLCBvciBzb21lIG90aGVyIHByb3RvY29sIGluIFwKK3dheWxhbmQtcHJvdG9jb2xzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzdiMTJiNjcwMmRhMzhjYTAyOGFjZTU0YWFlM2Q0ODQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3RhYmxlL3ByZXNlbnRhdGlvbi10aW1lL3ByZXNlbnRhdGlvbi10aW1lLnhtbDtlbmRsaW5lPTI2O21kNT00NjQ2Y2Q3ZDllZGM5ZmE1NWRiOTQxZjJkM2E3ZGM1MyIKKworU1JDX1VSSSA9ICJodHRwczovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiOWFjZmM5NTU2ZjdjZmVkYzQ0ZDk3YWY2MGRhNjZhNWYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjM1ZjJhOTM3ZDMxOGYxZmVjYjk3YjU0MDc0Y2EyMTE0ODZlMzhhZjk0Mzg2OGRkMGZhODJlYTM4ZDA5MWMxZiIKKworaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scyBwa2djb25maWcKKworUEFDS0FHRVMgPSAiJHtQTn0iCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9wa2djb25maWcvd2F5bGFuZC1wcm90b2NvbHMucGMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC8wMDAxLXNjYW5uZXItVXNlLXVuaXQzMl90LWluc3RlYWQtb2YtdWludC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLzAwMDEtc2Nhbm5lci1Vc2UtdW5pdDMyX3QtaW5zdGVhZC1vZi11aW50LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlY2U5NWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC8wMDAxLXNjYW5uZXItVXNlLXVuaXQzMl90LWluc3RlYWQtb2YtdWludC5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIDU1MTZkMzJlNjk0YmFkY2EzNWI2YzcxYjAyYTNmMDhmNjUwMzA4YmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAxNSBKdWwgMjAxNiAxNjoyMzo0OCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBzY2FubmVyOiBVc2UgdW5pdDMyX3QgaW5zdGVhZCBvZiB1aW50CisKK3VpbnQzMl90IGlzIEM5OSBkZWZpbmVkIHN0ZGludCB0eXBlCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKy0tLQorIHNyYy9zY2FubmVyLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvc2Nhbm5lci5jIGIvc3JjL3NjYW5uZXIuYworaW5kZXggNWYwNmU4ZS4uMTBhNDAyMyAxMDA2NDQKKy0tLSBhL3NyYy9zY2FubmVyLmMKKysrKyBiL3NyYy9zY2FubmVyLmMKK0BAIC04MDgsNyArODA4LDcgQEAgZmluZF9lbnVtZXJhdGlvbihzdHJ1Y3QgcHJvdG9jb2wgKnByb3RvY29sLAorIAlzdHJ1Y3QgaW50ZXJmYWNlICppOworIAlzdHJ1Y3QgZW51bWVyYXRpb24gKmU7CisgCWNoYXIgKmVudW1fbmFtZTsKKy0JdWludCBpZHggPSAwLCBqOworKwl1aW50MzJfdCBpZHggPSAwLCBqOworIAorIAlmb3IgKGogPSAwOyBqICsgMSA8IHN0cmxlbihlbnVtX2F0dHJpYnV0ZSk7IGorKykgeworIAkJaWYgKGVudW1fYXR0cmlidXRlW2pdID09ICcuJykgeworLS0gCisyLjEuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZF8xLjExLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZF8xLjExLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQxMzQwNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kXzEuMTEuMC5iYgpAQCAtMCwwICsxLDQzIEBACitTVU1NQVJZID0gIldheWxhbmQsIGEgcHJvdG9jb2wgYmV0d2VlbiBhIGNvbXBvc2l0b3IgYW5kIGNsaWVudHMiCitERVNDUklQVElPTiA9ICJXYXlsYW5kIGlzIGEgcHJvdG9jb2wgZm9yIGEgY29tcG9zaXRvciB0byB0YWxrIHRvIGl0cyBjbGllbnRzIFwKK2FzIHdlbGwgYXMgYSBDIGxpYnJhcnkgaW1wbGVtZW50YXRpb24gb2YgdGhhdCBwcm90b2NvbC4gVGhlIGNvbXBvc2l0b3IgY2FuIGJlIFwKK2Egc3RhbmRhbG9uZSBkaXNwbGF5IHNlcnZlciBydW5uaW5nIG9uIExpbnV4IGtlcm5lbCBtb2Rlc2V0dGluZyBhbmQgZXZkZXYgXAoraW5wdXQgZGV2aWNlcywgYW4gWCBhcHBsaWNhdGlvbiwgb3IgYSB3YXlsYW5kIGNsaWVudCBpdHNlbGYuIFRoZSBjbGllbnRzIGNhbiBcCitiZSB0cmFkaXRpb25hbCBhcHBsaWNhdGlvbnMsIFggc2VydmVycyAocm9vdGxlc3Mgb3IgZnVsbHNjcmVlbikgb3Igb3RoZXIgXAorZGlzcGxheSBzZXJ2ZXJzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjMxZDhmNTNiNmFhZjJiNDk4NWQ3ZGQ3ODEwYTcwZDEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3dheWxhbmQtc2VydmVyLmM7ZW5kbGluZT0yNDttZDU9YjhlMDQ2MTY0YTc2NmJiMWVkZThiYTM4ZTlkY2Q3Y2UiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc2Nhbm5lci1Vc2UtdW5pdDMyX3QtaW5zdGVhZC1vZi11aW50LnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gImZjY2Y2ODBiZTA2NmUyMzQ3MjlkNWI2OWUwYmQwZmE5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk1NDA5MjVmNzkyOGJlY2ZkZjVlM2I4NGM3MDc1N2Y2NTg5YmYxY2VlZjA5YmVhNzg3ODRkOGU0NzcyYzBkYjAiCisKK0VYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS1kaXNhYmxlLWRvY3VtZW50YXRpb24gLS1kaXNhYmxlLWxpYnJhcmllcyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworREVQRU5EUyA9ICJleHBhdCBsaWJ4bWwyIGxpYmZmaSB3YXlsYW5kLW5hdGl2ZSIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kb2N1bWVudGF0aW9uIC0td2l0aC1ob3N0LXNjYW5uZXIiCisKKyMgV2F5bGFuZCBpbnN0YWxscyBhIE00IG1hY3JvIGZvciBvdGhlciBwcm9qZWN0cyB0byB1c2UsIHdoaWNoIHVzZXMgdGhlIHRhcmdldAorIyBwa2ctY29uZmlnIHRvIGZpbmQgZmlsZXMuICBSZXBsYWNlIHBrZy1jb25maWcgd2l0aCBwa2ctY29uZmlnLW5hdGl2ZS4KK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKyAgc2VkIC1lICdzLFBLR19DSEVDS19NT0RVTEVTKC4qKSwsZycgXAorICAgICAgLWUgJ3MsJFBLR19DT05GSUcscGtnLWNvbmZpZy1uYXRpdmUsZycgXAorICAgICAgLWkgJHtEfS8ke2RhdGFkaXJ9L2FjbG9jYWwvd2F5bGFuZC1zY2FubmVyLm00Cit9CisKK3N5c3Jvb3Rfc3RhZ2VfYWxsX2FwcGVuZF9jbGFzcy10YXJnZXQgKCkgeworCXJtICR7U1lTUk9PVF9ERVNURElSfS8ke2RhdGFkaXJ9L2FjbG9jYWwvd2F5bGFuZC1zY2FubmVyLm00CisJY3AgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9hY2xvY2FsL3dheWxhbmQtc2Nhbm5lci5tNCAke1NZU1JPT1RfREVTVERJUn0vJHtkYXRhZGlyfS9hY2xvY2FsLworfQorCitGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vKiR7U09MSUJTfSIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9ICR7ZGF0YWRpcn0vd2F5bGFuZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kXzEuOS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmRfMS45LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxMmFjMTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmRfMS45LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1TVU1NQVJZID0gIldheWxhbmQsIGEgcHJvdG9jb2wgYmV0d2VlbiBhIGNvbXBvc2l0b3IgYW5kIGNsaWVudHMiCi1ERVNDUklQVElPTiA9ICJXYXlsYW5kIGlzIGEgcHJvdG9jb2wgZm9yIGEgY29tcG9zaXRvciB0byB0YWxrIHRvIGl0cyBjbGllbnRzIFwKLWFzIHdlbGwgYXMgYSBDIGxpYnJhcnkgaW1wbGVtZW50YXRpb24gb2YgdGhhdCBwcm90b2NvbC4gVGhlIGNvbXBvc2l0b3IgY2FuIGJlIFwKLWEgc3RhbmRhbG9uZSBkaXNwbGF5IHNlcnZlciBydW5uaW5nIG9uIExpbnV4IGtlcm5lbCBtb2Rlc2V0dGluZyBhbmQgZXZkZXYgXAotaW5wdXQgZGV2aWNlcywgYW4gWCBhcHBsaWNhdGlvbiwgb3IgYSB3YXlsYW5kIGNsaWVudCBpdHNlbGYuIFRoZSBjbGllbnRzIGNhbiBcCi1iZSB0cmFkaXRpb25hbCBhcHBsaWNhdGlvbnMsIFggc2VydmVycyAocm9vdGxlc3Mgb3IgZnVsbHNjcmVlbikgb3Igb3RoZXIgXAotZGlzcGxheSBzZXJ2ZXJzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjMxZDhmNTNiNmFhZjJiNDk4NWQ3ZGQ3ODEwYTcwZDEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3dheWxhbmQtc2VydmVyLmM7ZW5kbGluZT0yNDttZDU9YjhlMDQ2MTY0YTc2NmJiMWVkZThiYTM4ZTlkY2Q3Y2UiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiNWUxNDFiM2YyYTcwMDVkNmM4OWQ2ZjIzM2M4N2MzMTciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWM4NzcwNzIwYWEwMDM0NDc5NzM1ZjU4YTRkYzRjYTliMTcyZWNmZWRlMjhmNTEzNDMxMmUxMzViNzMwMWVmYSIKLQotRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLWRpc2FibGUtZG9jdW1lbnRhdGlvbiAtLWRpc2FibGUtbGlicmFyaWVzIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1ERVBFTkRTID0gImV4cGF0IGxpYmZmaSB3YXlsYW5kLW5hdGl2ZSIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kb2N1bWVudGF0aW9uIC0td2l0aC1ob3N0LXNjYW5uZXIiCi0KLSMgV2F5bGFuZCBpbnN0YWxscyBhIE00IG1hY3JvIGZvciBvdGhlciBwcm9qZWN0cyB0byB1c2UsIHdoaWNoIHVzZXMgdGhlIHRhcmdldAotIyBwa2ctY29uZmlnIHRvIGZpbmQgZmlsZXMuICBSZXBsYWNlIHBrZy1jb25maWcgd2l0aCBwa2ctY29uZmlnLW5hdGl2ZS4KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLSAgc2VkIC1lICdzLFBLR19DSEVDS19NT0RVTEVTKC4qKSwsZycgXAotICAgICAgLWUgJ3MsJFBLR19DT05GSUcscGtnLWNvbmZpZy1uYXRpdmUsZycgXAotICAgICAgLWkgJHtEfS8ke2RhdGFkaXJ9L2FjbG9jYWwvd2F5bGFuZC1zY2FubmVyLm00Ci19Ci0KLXN5c3Jvb3Rfc3RhZ2VfYWxsX2FwcGVuZF9jbGFzcy10YXJnZXQgKCkgewotCXJtICR7U1lTUk9PVF9ERVNURElSfS8ke2RhdGFkaXJ9L2FjbG9jYWwvd2F5bGFuZC1zY2FubmVyLm00Ci0JY3AgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9hY2xvY2FsL3dheWxhbmQtc2Nhbm5lci5tNCAke1NZU1JPT1RfREVTVERJUn0vJHtkYXRhZGlyfS9hY2xvY2FsLwotfQotCi1GSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vKiR7U09MSUJTfSIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9ICR7ZGF0YWRpcn0vd2F5bGFuZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC5iYgppbmRleCA2NTM1NDFlLi4yOTFjZDE2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0LmJiCkBAIC0zLDE2ICszLDE5IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9MSUNFTlNFO21kNT00ZDkyY2QzNzNhYmRhMzkzN2MyYmM0N2ZiYzQ5ZDY5MCIKIAogU1JDX1VSSSA9ICJmaWxlOi8vaW5pdCBcCi0gICAgICAgICAgIGZpbGU6Ly93ZXN0b24uc2VydmljZSIKKyAgICAgICAgICAgZmlsZTovL3dlc3Rvbi5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL3dlc3Rvbi1zdGFydCIKIAogUyA9ICIke1dPUktESVJ9IgogCiBkb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZAotCWluc3RhbGwgLW03NTUgJHtXT1JLRElSfS9pbml0ICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvd2VzdG9uCisJaW5zdGFsbCAtRG03NTUgJHtXT1JLRElSfS9pbml0ICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvd2VzdG9uCisJaW5zdGFsbCAtRG0wNjQ0ICR7V09SS0RJUn0vd2VzdG9uLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vd2VzdG9uLnNlcnZpY2UKIAotCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KLQlpbnN0YWxsIC1tMDY0NCAke1dPUktESVJ9L3dlc3Rvbi5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9CisJIyBJbnN0YWxsIHdlc3Rvbi1zdGFydCBzY3JpcHQKKwlpbnN0YWxsIC1EbTc1NSAke1dPUktESVJ9L3dlc3Rvbi1zdGFydCAke0R9JHtiaW5kaXJ9L3dlc3Rvbi1zdGFydAorCXNlZCAtaSAncyxAREFUQURJUkAsJHtkYXRhZGlyfSxnJyAke0R9JHtiaW5kaXJ9L3dlc3Rvbi1zdGFydAorCXNlZCAtaSAncyxATE9DQUxTVEFURURJUkAsJHtsb2NhbHN0YXRlZGlyfSxnJyAke0R9JHtiaW5kaXJ9L3dlc3Rvbi1zdGFydAogfQogCiBpbmhlcml0IGFsbGFyY2ggdXBkYXRlLXJjLmQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHN5c3RlbWQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC9pbml0IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L2luaXQKaW5kZXggMmU5MzhmNC4uZDNlODdjNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L2luaXQKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L2luaXQKQEAgLTMxLDE0ICszMSw3IEBACiAgIHN0YXJ0KQogICAgICAgICAuIC9ldGMvcHJvZmlsZQogCi0gICAgICAgICMgVGhpcyBpcyBhbGwgYSBuYXN0eSBoYWNrCi0gICAgICAgIGlmIHRlc3QgLXogIiRYREdfUlVOVElNRV9ESVIiOyB0aGVuCi0gICAgICAgICAgICAgICAgZXhwb3J0IFhER19SVU5USU1FX0RJUj0vcnVuL3VzZXIvcm9vdAotICAgICAgICAgICAgICAgIG1rZGlyIC0tcGFyZW50cyAkWERHX1JVTlRJTUVfRElSCi0gICAgICAgICAgICAgICAgY2htb2QgMDcwMCAkWERHX1JVTlRJTUVfRElSCi0gICAgICAgIGZpCi0KLSAgICAgICAgb3BlbnZ0IC1zIHdlc3RvbiAtLSAkT1BUQVJHUworICAgICAgICB3ZXN0b24tc3RhcnQgLS0gJE9QVEFSR1MKICAgOzsKIAogICBzdG9wKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L3dlc3Rvbi1zdGFydCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC93ZXN0b24tc3RhcnQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZTcyZmJhYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC93ZXN0b24tc3RhcnQKQEAgLTAsMCArMSw2OSBAQAorIyEvYmluL3NoCisjIENvcHlyaWdodCAoQykgMjAxNiBPLlMuIFN5c3RlbXMgU29mdHdhcmUgTFREQS4KKyMgQ29weXJpZ2h0IChDKSAyMDE2IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yCisKK2V4cG9ydCBQQVRIPSIvc2JpbjovdXNyL3NiaW46L2JpbjovdXNyL2JpbiIKKwordXNhZ2UoKSB7CisgICAgY2F0IDw8RU9GCisgICAgJDAgWzxvcGVudnQgYXJndW1lbnRzPl0gWy0tIDx3ZXN0b24gb3B0aW9ucz5dCitFT0YKK30KKworIyMgTW9kdWxlIHN1cHBvcnQKK21vZHVsZXNfZGlyPUBEQVRBRElSQC93ZXN0b24tc3RhcnQKKworIyBBZGQgd2VzdG9uIGV4dHJhIGFyZ3VtZW50CithZGRfd2VzdG9uX2FyZ3VtZW50KCkgeworCXdlc3Rvbl9hcmdzPSIkd2VzdG9uX2FyZ3MgJDEiCit9CisKKyMgQWRkIG9wZW52dCBleHRyYSBhcmd1bWVudAorYWRkX29wZW52dF9hcmd1bWVudCgpIHsKKwlvcGVudnRfYXJncz0iJG9wZW52dF9hcmdzICQxIgorfQorCitpZiBbIC1uICIkV0FZTEFORF9ESVNQTEFZIiBdOyB0aGVuCisJZWNobyAiRVJST1I6IEEgV2F5bGFuZCBjb21wb3NpdG9yIGlzIGFscmVhZHkgcnVubmluZywgbmVzdGVkIFdlc3RvbiBpbnN0YW5jZSBpcyBub3Qgc3VwcG9ydGVkIHlldC4iCisJZXhpdCAxCitmaQoraWYgWyAtbiAiJERJU1BMQVkiIF07IHRoZW4KKwlsYXVuY2hlcj0id2VzdG9uIgorZWxzZQorCWxhdW5jaGVyPSJ3ZXN0b24tbGF1bmNoIC0tIgorZmkKKworb3BlbnZ0X2FyZ3M9Ii1zIgord2hpbGUgWyAtbiAiJDEiIF07IGRvCisJaWYgWyAiJDEiID0gIi0tIiBdOyB0aGVuCisJCXNoaWZ0CisJCWJyZWFrCisJZmkKKwlvcGVudnRfYXJncz0iJG9wZW52dF9hcmdzICQxIgorCXNoaWZ0Citkb25lCisKK3dlc3Rvbl9hcmdzPSQqCisKKyMgTG9hZCBhbmQgcnVuIG1vZHVsZXMKK2lmIFsgLWQgIiRtb2R1bGVzX2RpciIgXTsgdGhlbgorCWZvciBtIGluICIkbW9kdWxlc19kaXIiLyo7IGRvCisJCSMgU2tpcCBiYWNrdXAgZmlsZXMKKwkJaWYgWyAiYGVjaG8gJG0gfCBzZWQgLWUgJ3MvXH4kLy8nYCIgIT0gIiRtIiBdOyB0aGVuCisJCQljb250aW51ZQorCQlmaQorCisJCSMgcHJvY2VzcyBtb2R1bGUKKwkJLiAkbQorCWRvbmUKK2ZpCisKK2lmIHRlc3QgLXogIiRYREdfUlVOVElNRV9ESVIiOyB0aGVuCisgICAgZXhwb3J0IFhER19SVU5USU1FX0RJUj0vcnVuL3VzZXIvYGlkIC11YAorICAgIGlmICEgdGVzdCAtZCAiJFhER19SVU5USU1FX0RJUiI7IHRoZW4KKyAgICAgICAgbWtkaXIgLS1wYXJlbnRzICRYREdfUlVOVElNRV9ESVIKKyAgICAgICAgY2htb2QgMDcwMCAkWERHX1JVTlRJTUVfRElSCisgICAgZmkKK2ZpCisKK2V4ZWMgb3BlbnZ0ICRvcGVudnRfYXJncyAtLSAkbGF1bmNoZXIgJHdlc3Rvbl9hcmdzIC0tbG9nPUBMT0NBTFNUQVRFRElSQC9sb2cvd2VzdG9uLmxvZwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L3dlc3Rvbi5zZXJ2aWNlIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L3dlc3Rvbi5zZXJ2aWNlCmluZGV4IDRmMWY3ZmYuLjY4OWNlNDEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC93ZXN0b24uc2VydmljZQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQvd2VzdG9uLnNlcnZpY2UKQEAgLTEsMTQgKzEsMTEgQEAKIFtVbml0XQotRGVzY3JpcHRpb249V2VzdG9uIFdheWxhbmQgY29tcG9zaXRvciBzdGFydHVwCitEZXNjcmlwdGlvbj1XZXN0b24gV2F5bGFuZCBDb21wb3NpdG9yCiBSZXF1aXJlc01vdW50c0Zvcj0vcnVuCiAKIFtTZXJ2aWNlXQogVXNlcj1yb290CiBFbnZpcm9ubWVudEZpbGU9LS9ldGMvZGVmYXVsdC93ZXN0b24KLUVudmlyb25tZW50PSJYREdfUlVOVElNRV9ESVI9L3J1bi91c2VyL3Jvb3QiCi1FeGVjU3RhcnRQcmU9L2Jpbi9ta2RpciAtcCAvcnVuL3VzZXIvcm9vdAotRXhlY1N0YXJ0UHJlPS9iaW4vY2htb2QgMDcwMCAvcnVuL3VzZXIvcm9vdAotRXhlY1N0YXJ0PS91c3IvYmluL29wZW52dCAtdiAtZSAvdXNyL2Jpbi93ZXN0b24gLS0gJE9QVEFSR1MKK0V4ZWNTdGFydD0vdXNyL2Jpbi93ZXN0b24tc3RhcnQgLXYgLWUgLS0gJE9QVEFSR1MKIAogW0luc3RhbGxdCiBXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi8wMDAxLWNvbmZpZ3VyZS5hYy1GaXgtd2F5bGFuZC1wcm90b2NvbHMtcGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vMDAwMS1jb25maWd1cmUuYWMtRml4LXdheWxhbmQtcHJvdG9jb2xzLXBhdGgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDAxMThkNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vMDAwMS1jb25maWd1cmUuYWMtRml4LXdheWxhbmQtcHJvdG9jb2xzLXBhdGgucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSAxY2ZjMTQzNGE1ZDM4NWE3NGRlNTkzZWM3NjAxNjc0ZGJhMzllMmZlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK0RhdGU6IFdlZCwgMTEgTWF5IDIwMTYgMTY6MTY6MzAgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBGaXggd2F5bGFuZC1wcm90b2NvbHMgcGF0aAorCitUaGUgd2F5bGFuZC1wcm90b2NvbHMgZGlyZWN0b3J5IGlzIHVzZWQgZHVyaW5nIGJ1aWxkOiBGaXggdGhlIHBhdGgKK3RvIHBvaW50IHRvIHN5c3Jvb3Qgc3BlY2lmaWVkIGluIHJlY2lwZS4KKworTm9ybWFsbHkgUEtHX0NPTkZJR19TWVNST09UX0RJUiBjb3VsZCBiZSB1c2VkIGluIGNvbmZpZ3VyZS5hYyBidXQgdGhhdAorYnJlYWtzIG11bHRpbGliIHdlc3RvbiBhcyBpdCB3b3VsZCBwb2ludCB0byBtdWx0aWxpYiBzeXNyb290IHdoZW4gdGhlCisoYWxsYXJjaCkgd2F5bGFuZC1wcm90b2NvbHMgaXMgYWN0dWFsbHkgaW4gdGhlIG1hY2hpbmUgc3lzcm9vdC4KKworU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCistLS0KKyBjb25maWd1cmUuYWMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGJjN2MzMjkuLjE1YTA1ZDMgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTE4Nyw3ICsxODcsNyBAQCBQS0dfQ0hFQ0tfTU9EVUxFUyhMSUJJTlBVVF9CQUNLRU5ELCBbbGliaW5wdXQgPj0gMC44LjBdKQorIFBLR19DSEVDS19NT0RVTEVTKENPTVBPU0lUT1IsIFskQ09NUE9TSVRPUl9NT0RVTEVTXSkKKyAKKyBQS0dfQ0hFQ0tfTU9EVUxFUyhXQVlMQU5EX1BST1RPQ09MUywgW3dheWxhbmQtcHJvdG9jb2xzID49IDEuMl0sCistCQkgIFthY193YXlsYW5kX3Byb3RvY29sc19wa2dkYXRhZGlyPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXBrZ2RhdGFkaXIgd2F5bGFuZC1wcm90b2NvbHNgXSkKKysJCSAgW2FjX3dheWxhbmRfcHJvdG9jb2xzX3BrZ2RhdGFkaXI9JHtXQVlMQU5EX1BST1RPQ09MU19TWVNST09UX0RJUn1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1wa2dkYXRhZGlyIHdheWxhbmQtcHJvdG9jb2xzYF0pCisgQUNfU1VCU1QoV0FZTEFORF9QUk9UT0NPTFNfREFUQURJUiwgJGFjX3dheWxhbmRfcHJvdG9jb2xzX3BrZ2RhdGFkaXIpCisgCisgQUNfQVJHX0VOQUJMRSh3YXlsYW5kLWNvbXBvc2l0b3IsIFsgIC0tZW5hYmxlLXdheWxhbmQtY29tcG9zaXRvcl0sLAorLS0gCisyLjEuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLzAwMDEtc2hhcmVkLWluY2x1ZGUtc3RkaW50LmgtZm9yLWludDMyX3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLzAwMDEtc2hhcmVkLWluY2x1ZGUtc3RkaW50LmgtZm9yLWludDMyX3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTFlZjcyNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vMDAwMS1zaGFyZWQtaW5jbHVkZS1zdGRpbnQuaC1mb3ItaW50MzJfdC5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIGJhMDJiOGFiZTRlMmFmYWMyYmZiZjI1NTk5NzJkNTA1OWQ3NWEwNDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorRGF0ZTogU2F0LCAxNiBKdWwgMjAxNiAyMjo1MDoxOSArMDMwMAorU3ViamVjdDogW1BBVENIIHdlc3Rvbl0gc2hhcmVkOiBpbmNsdWRlIHN0ZGludC5oIGZvciBpbnQzMl90CisKK1RoaXMgZml4ZXMgYnVpbGQgb24gbXVzbC4KKworU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCistLS0KKyBzaGFyZWQveGFsbG9jLmggfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3NoYXJlZC94YWxsb2MuaCBiL3NoYXJlZC94YWxsb2MuaAoraW5kZXggODVmY2NiNC4uNDg0ZGUyZCAxMDA2NDQKKy0tLSBhL3NoYXJlZC94YWxsb2MuaAorKysrIGIvc2hhcmVkL3hhbGxvYy5oCitAQCAtMzAsNiArMzAsNyBAQAorIGV4dGVybiAiQyIgeworICNlbmRpZgorIAorKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorIAorLS0gCisyLjEuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLzAwMDEtd2VzdG9uLWxhdW5jaC1Qcm92aWRlLWEtZGVmYXVsdC12ZXJzaW9uLXRoYXQtZG9lc24tdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vMDAwMS13ZXN0b24tbGF1bmNoLVByb3ZpZGUtYS1kZWZhdWx0LXZlcnNpb24tdGhhdC1kb2Vzbi10LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1NDIwMzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLzAwMDEtd2VzdG9uLWxhdW5jaC1Qcm92aWRlLWEtZGVmYXVsdC12ZXJzaW9uLXRoYXQtZG9lc24tdC5wYXRjaApAQCAtMCwwICsxLDE3MyBAQAorRnJvbSBkMDIyMjZiM2Q1ODcyYjE4NGMxZDUwYzdmNDcwNmFjOTQ2N2ZmYjgxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVG9tIEhvY2hzdGVpbiA8dG9tLmhvY2hzdGVpbkBueHAuY29tPgorRGF0ZTogRnJpLCAxNSBKdWwgMjAxNiAxMTowMDoxNSArMDMwMAorU3ViamVjdDogW1BBVENIXSB3ZXN0b24tbGF1bmNoOiBQcm92aWRlIGEgZGVmYXVsdCB2ZXJzaW9uIHRoYXQgZG9lc24ndCByZXF1aXJlCisgUEFNCisKK3dlc3Rvbi1sYXVuY2ggcmVxdWlyZXMgUEFNIGZvciBzdGFydGluZyB3ZXN0b24gYXMgYSBub24tcm9vdCB1c2VyLgorCitTaW5jZSBzdGFydGluZyB3ZXN0b24gYXMgcm9vdCBpcyBhIHZhbGlkIHVzZSBjYXNlIGJ5IGl0c2VsZiwgaWYKK1BBTSBpcyBub3QgYXZhaWxhYmxlLCBwcm92aWRlIGEgZGVmYXVsdCB2ZXJzaW9uIG9mIHdlc3Rvbi1sYXVuY2gKK3dpdGhvdXQgbm9uLXJvb3QtdXNlciBzdXBwb3J0LgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogVG9tIEhvY2hzdGVpbiA8dG9tLmhvY2hzdGVpbkBueHAuY29tPgorLS0tCisgY29uZmlndXJlLmFjICAgICAgICB8ICA5ICsrKysrKystLQorIHNyYy93ZXN0b24tbGF1bmNoLmMgfCAyMCArKysrKysrKysrKysrKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggMzJmZGRlNy4uMjQwOTY2ZiAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNDE2LDEzICs0MTYsMTcgQEAgQUNfQVJHX0VOQUJMRShyZXNpemUtb3B0aW1pemF0aW9uLAorIEFTX0lGKFt0ZXN0ICJ4JGVuYWJsZV9yZXNpemVfb3B0aW1pemF0aW9uIiA9ICJ4eWVzIl0sCisgICAgICAgW0FDX0RFRklORShbVVNFX1JFU0laRV9QT09MXSwgWzFdLCBbVXNlIHJlc2l6ZSBtZW1vcnkgcG9vbCBhcyBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbl0pXSkKKyAKKytBQ19BUkdfV0lUSChwYW0sCisrICAgICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1wYW1dLCBbVXNlIFBBTV0pLAorKyAgICAgICAgICAgIFt1c2VfcGFtPSR3aXRodmFsXSwgW3VzZV9wYW09eWVzXSkKKyBBQ19BUkdfRU5BQkxFKHdlc3Rvbi1sYXVuY2gsIFsgIC0tZW5hYmxlLXdlc3Rvbi1sYXVuY2hdLCwgZW5hYmxlX3dlc3Rvbl9sYXVuY2g9eWVzKQorIEFNX0NPTkRJVElPTkFMKEJVSUxEX1dFU1RPTl9MQVVOQ0gsIHRlc3QgeCRlbmFibGVfd2VzdG9uX2xhdW5jaCA9PSB4eWVzKQorLWlmIHRlc3QgeCRlbmFibGVfd2VzdG9uX2xhdW5jaCA9PSB4eWVzOyB0aGVuCisraWYgdGVzdCB4JGVuYWJsZV93ZXN0b25fbGF1bmNoID0geHllcyAtYSB4JHVzZV9wYW0gPSB4eWVzOyB0aGVuCisgICBXRVNUT05fU0VBUkNIX0xJQlMoW1BBTV0sIFtwYW1dLCBbcGFtX29wZW5fc2Vzc2lvbl0sIFtoYXZlX3BhbT15ZXNdLCBbaGF2ZV9wYW09bm9dKQorICAgaWYgdGVzdCB4JGhhdmVfcGFtID09IHhubzsgdGhlbgorLSAgICBBQ19FUlJPUihbd2VzdG9uLWxhdW5jaCByZXF1aXJlcyBwYW1dKQorKyAgICBBQ19FUlJPUihbUEFNIHN1cHBvcnQgaXMgZXhwbGljaXRseSByZXF1ZXN0ZWQsIGJ1dCBsaWJwYW0gY291bGRuJ3QgYmUgZm91bmRdKQorICAgZmkKKysgIEFDX0RFRklORShbSEFWRV9QQU1dLCBbMV0sIFtEZWZpbmUgaWYgUEFNIGlzIGF2YWlsYWJsZV0pCisgZmkKKyAKKyBBTV9DT05ESVRJT05BTChIQVZFX1BBTkdPLCB0ZXN0ICJ4JGhhdmVfcGFuZ28iID0gInh5ZXMiKQorQEAgLTY3Myw2ICs2NzcsNyBAQCBBQ19NU0dfUkVTVUxUKFsKKyAJRW5hYmxlIGRldmVsb3BlciBkb2N1bWVudGF0aW9uCSR7ZW5hYmxlX2RldmRvY3N9CisgCisgCXdlc3Rvbi1sYXVuY2ggdXRpbGl0eQkJJHtlbmFibGVfd2VzdG9uX2xhdW5jaH0KKysJUEFNIHN1cHBvcnQJCQkke3VzZV9wYW19CisgCXN5c3RlbWQtbG9naW4gc3VwcG9ydAkJJHtoYXZlX3N5c3RlbWRfbG9naW59CisgCXN5c3RlbWQgbm90aWZ5IHN1cHBvcnQJCSR7ZW5hYmxlX3N5c3RlbWRfbm90aWZ5fQorIAorZGlmZiAtLWdpdCBhL3NyYy93ZXN0b24tbGF1bmNoLmMgYi9zcmMvd2VzdG9uLWxhdW5jaC5jCitpbmRleCBiOGIyYmEwLi5hODY1MDYxIDEwMDY0NAorLS0tIGEvc3JjL3dlc3Rvbi1sYXVuY2guYworKysrIGIvc3JjL3dlc3Rvbi1sYXVuY2guYworQEAgLTUxLDcgKzUxLDkgQEAKKyAKKyAjaW5jbHVkZSA8cHdkLmg+CisgI2luY2x1ZGUgPGdycC5oPgorKyNpZmRlZiBIQVZFX1BBTQorICNpbmNsdWRlIDxzZWN1cml0eS9wYW1fYXBwbC5oPgorKyNlbmRpZgorIAorICNpZmRlZiBIQVZFX1NZU1RFTURfTE9HSU4KKyAjaW5jbHVkZSA8c3lzdGVtZC9zZC1sb2dpbi5oPgorQEAgLTkzLDggKzk1LDEwIEBAIGRybVNldE1hc3RlcihpbnQgZHJtX2ZkKQorICNlbmRpZgorIAorIHN0cnVjdCB3ZXN0b25fbGF1bmNoIHsKKysjaWZkZWYgSEFWRV9QQU0KKyAJc3RydWN0IHBhbV9jb252IHBjOworIAlwYW1faGFuZGxlX3QgKnBoOworKyNlbmRpZgorIAlpbnQgdHR5OworIAlpbnQgdHR5bnI7CisgCWludCBzb2NrWzJdOworQEAgLTE4MSw2ICsxODUsNyBAQCB3ZXN0b25fbGF1bmNoX2FsbG93ZWQoc3RydWN0IHdlc3Rvbl9sYXVuY2ggKndsKQorIAlyZXR1cm4gZmFsc2U7CisgfQorIAorKyNpZmRlZiBIQVZFX1BBTQorIHN0YXRpYyBpbnQKKyBwYW1fY29udmVyc2F0aW9uX2ZuKGludCBtc2dfY291bnQsCisgCQkgICAgY29uc3Qgc3RydWN0IHBhbV9tZXNzYWdlICoqbWVzc2FnZXMsCitAQCAtMjIxLDYgKzIyNiw3IEBAIHNldHVwX3BhbShzdHJ1Y3Qgd2VzdG9uX2xhdW5jaCAqd2wpCisgCisgCXJldHVybiAwOworIH0KKysjZW5kaWYKKyAKKyBzdGF0aWMgaW50Cisgc2V0dXBfbGF1bmNoZXJfc29ja2V0KHN0cnVjdCB3ZXN0b25fbGF1bmNoICp3bCkKK0BAIC00MTQsNiArNDIwLDcgQEAgcXVpdChzdHJ1Y3Qgd2VzdG9uX2xhdW5jaCAqd2wsIGludCBzdGF0dXMpCisgCWNsb3NlKHdsLT5zaWduYWxmZCk7CisgCWNsb3NlKHdsLT5zb2NrWzBdKTsKKyAKKysjaWZkZWYgSEFWRV9QQU0KKyAJaWYgKHdsLT5uZXdfdXNlcikgeworIAkJZXJyID0gcGFtX2Nsb3NlX3Nlc3Npb24od2wtPnBoLCAwKTsKKyAJCWlmIChlcnIpCitAQCAtNDIxLDYgKzQyOCw3IEBAIHF1aXQoc3RydWN0IHdlc3Rvbl9sYXVuY2ggKndsLCBpbnQgc3RhdHVzKQorIAkJCQllcnIsIHBhbV9zdHJlcnJvcih3bC0+cGgsIGVycikpOworIAkJcGFtX2VuZCh3bC0+cGgsIGVycik7CisgCX0KKysjZW5kaWYKKyAKKyAJaWYgKGlvY3RsKHdsLT50dHksIEtEU0tCTVVURSwgMCkgJiYKKyAJICAgIGlvY3RsKHdsLT50dHksIEtEU0tCTU9ERSwgd2wtPmtiX21vZGUpKQorQEAgLTYwMCw2ICs2MDgsNyBAQCBzZXR1cF9zZXNzaW9uKHN0cnVjdCB3ZXN0b25fbGF1bmNoICp3bCkKKyAJc2V0ZW52KCJIT01FIiwgd2wtPnB3LT5wd19kaXIsIDEpOworIAlzZXRlbnYoIlNIRUxMIiwgd2wtPnB3LT5wd19zaGVsbCwgMSk7CisgCisrI2lmZGVmIEhBVkVfUEFNCisgCWVudiA9IHBhbV9nZXRlbnZsaXN0KHdsLT5waCk7CisgCWlmIChlbnYpIHsKKyAJCWZvciAoaSA9IDA7IGVudltpXTsgKytpKSB7CitAQCAtNjA4LDYgKzYxNyw3IEBAIHNldHVwX3Nlc3Npb24oc3RydWN0IHdlc3Rvbl9sYXVuY2ggKndsKQorIAkJfQorIAkJZnJlZShlbnYpOworIAl9CisrI2VuZGlmCisgfQorIAorIHN0YXRpYyB2b2lkCitAQCAtNjY1LDcgKzY3NSw5IEBAIHN0YXRpYyB2b2lkCisgaGVscChjb25zdCBjaGFyICpuYW1lKQorIHsKKyAJZnByaW50ZihzdGRlcnIsICJVc2FnZTogJXMgW2FyZ3MuLi5dIFstLSBbd2VzdG9uIGFyZ3MuLl1dXG4iLCBuYW1lKTsKKysjaWZkZWYgSEFWRV9QQU0KKyAJZnByaW50ZihzdGRlcnIsICIgIC11LCAtLXVzZXIgICAgICBTdGFydCBzZXNzaW9uIGFzIHNwZWNpZmllZCB1c2VybmFtZVxuIik7CisrI2VuZGlmCisgCWZwcmludGYoc3RkZXJyLCAiICAtdCwgLS10dHkgICAgICAgU3RhcnQgc2Vzc2lvbiBvbiBhbHRlcm5hdGl2ZSB0dHlcbiIpOworIAlmcHJpbnRmKHN0ZGVyciwgIiAgLXYsIC0tdmVyYm9zZSAgIEJlIHZlcmJvc2VcbiIpOworIAlmcHJpbnRmKHN0ZGVyciwgIiAgLWgsIC0taGVscCAgICAgIERpc3BsYXkgdGhpcyBoZWxwIG1lc3NhZ2VcbiIpOworQEAgLTY3OCw3ICs2OTAsOSBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgCWludCBpLCBjOworIAljaGFyICp0dHkgPSBOVUxMOworIAlzdHJ1Y3Qgb3B0aW9uIG9wdHNbXSA9IHsKKysjaWZkZWYgSEFWRV9QQU0KKyAJCXsgInVzZXIiLCAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3UnIH0sCisrI2VuZGlmCisgCQl7ICJ0dHkiLCAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICd0JyB9LAorIAkJeyAidmVyYm9zZSIsIG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCAndicgfSwKKyAJCXsgImhlbHAiLCAgICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ2gnIH0sCitAQCAtNjkwLDkgKzcwNCwxMyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgCXdoaWxlICgoYyA9IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsICJ1OnQ6OnZoIiwgb3B0cywgJmkpKSAhPSAtMSkgeworIAkJc3dpdGNoIChjKSB7CisgCQljYXNlICd1JzoKKysjaWZkZWYgSEFWRV9QQU0KKyAJCQl3bC5uZXdfdXNlciA9IG9wdGFyZzsKKyAJCQlpZiAoZ2V0dWlkKCkgIT0gMCkKKyAJCQkJZXJyb3IoMSwgMCwgIlBlcm1pc3Npb24gZGVuaWVkLiAtdSBhbGxvd2VkIGZvciByb290IG9ubHkiKTsKKysjZWxzZQorKwkJCWVycm9yKDEsIDAsICItdSBpcyB1bnN1cHBvcnRlZCBpbiB0aGlzIHdlc3Rvbi1sYXVuY2ggYnVpbGQiKTsKKysjZW5kaWYKKyAJCQlicmVhazsKKyAJCWNhc2UgJ3QnOgorIAkJCXR0eSA9IG9wdGFyZzsKK0BAIC03MzAsOCArNzQ4LDEwIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJaWYgKHNldHVwX3R0eSgmd2wsIHR0eSkgPCAwKQorIAkJZXhpdChFWElUX0ZBSUxVUkUpOworIAorKyNpZmRlZiBIQVZFX1BBTQorIAlpZiAod2wubmV3X3VzZXIgJiYgc2V0dXBfcGFtKCZ3bCkgPCAwKQorIAkJZXhpdChFWElUX0ZBSUxVUkUpOworKyNlbmRpZgorIAorIAlpZiAoc2V0dXBfbGF1bmNoZXJfc29ja2V0KCZ3bCkgPCAwKQorIAkJZXhpdChFWElUX0ZBSUxVUkUpOworLS0gCisyLjEuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uL2V4cGxpY2l0LWVuYWJsZS1kaXNhYmxlLXN5c3RlbWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uL2V4cGxpY2l0LWVuYWJsZS1kaXNhYmxlLXN5c3RlbWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0MGVhZjEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi9leHBsaWNpdC1lbmFibGUtZGlzYWJsZS1zeXN0ZW1kLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotRnJvbSA4ZTFlZmNkNDBiM2JhZDgxYzgzNzQ0ZTJlMTIwZDcwYzJiNTY3ZWYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRnJlZGVyaWNvIENhZGV0ZSA8ZnJlZGVyaWNvQGNhZGV0ZS5ldT4KLURhdGU6IE1vbiwgMjggU2VwIDIwMTUgMDA6MzA6MTAgKzAyMDAKLVN1YmplY3Q6IGNvbmZpZ3VyZS5hYzogYWRkIGV4cGxpY2l0IGVuYWJsZS9kaXNhYmxlIGZvciBzeXN0ZW1kLWxvZ2luIHN1cHBvcnQKLQotT3RoZXJ3aXNlLCBhdXRvLWVuYWJsZSBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgc3lzdGVtIGhhcyB0aGUgbmVjZXNzYXJ5Ci1saWJyYXJpZXMuCi0KLVtVcGRhdGVkIGhlbHAgdGV4dCBhcyBwZXIgcHEgc3VnZ2VzdGlvbiAtLSBid2hdCi0KLVJldmlld2VkLWJ5OiBCcnljZSBIYXJyaW5ndG9uIDxicnljZUBvc2cuc2Ftc3VuZy5jb20+Ci1SZXZpZXdlZC1ieTogUGVra2EgUGFhbGFuZW4gPHBla2thLnBhYWxhbmVuQGNvbGxhYm9yYS5jby51az4KLVRlc3RlZC1ieTogUGVra2EgUGFhbGFuZW4gPHBla2thLnBhYWxhbmVuQGNvbGxhYm9yYS5jby51az4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQmFja3BvcnRlZCBmcm9tIFdlc3RvbiBnaXQ6Ci1odHRwOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcvd2F5bGFuZC93ZXN0b24vY29tbWl0Lz9pZD04ZTFlZmMKLQotU2lnbmVkLW9mZi1ieTogSm9zaHVhIExvY2sgPGpvc2h1YS5sb2NrQGNvbGxhYm9yYS5jby51az4KLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggYTljZDQyOS4uNjdlODBkMCAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzgwLDE4ICszODAsMzAgQEAgQUNfQVJHX0VOQUJMRShyZXNpemUtb3B0aW1pemF0aW9uLAotIEFTX0lGKFt0ZXN0ICJ4JGVuYWJsZV9yZXNpemVfb3B0aW1pemF0aW9uIiA9ICJ4eWVzIl0sCi0gICAgICAgW0FDX0RFRklORShbVVNFX1JFU0laRV9QT09MXSwgWzFdLCBbVXNlIHJlc2l6ZSBtZW1vcnkgcG9vbCBhcyBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbl0pXSkKLSAKLS1QS0dfQ0hFQ0tfTU9EVUxFUyhTWVNURU1EX0xPR0lOLAotLSAgICAgICAgICAgICAgICAgIFtsaWJzeXN0ZW1kID49IDIwOV0sCi0tICAgICAgICAgICAgICAgICAgW2hhdmVfc3lzdGVtZF9sb2dpbl8yMDk9eWVzO2hhdmVfc3lzdGVtZF9sb2dpbj15ZXNdLAotLSAgICAgICAgICAgICAgICAgIFtoYXZlX3N5c3RlbWRfbG9naW5fMjA5PW5vO2hhdmVfc3lzdGVtZF9sb2dpbj1ub10pCi0tCi0tIyBPbGRlciB2ZXJzaW9ucyBvZiBzeXN0ZW1kIHBhY2thZ2Ugc3lzdGVtZC1sb2dpbiBzZXBhcmF0ZWx5LiBGYWxsIGJhY2sgb24gdGhhdAotLUFTX0lGKFt0ZXN0IHgkaGF2ZV9zeXN0ZW1kX2xvZ2luICE9IHh5ZXNdLFsKLS0gICAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhTWVNURU1EX0xPR0lOLAotLSAgICAgICAgICAgICAgICAgICAgICAgIFtsaWJzeXN0ZW1kLWxvZ2luID49IDE5OF0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgW2hhdmVfc3lzdGVtZF9sb2dpbj15ZXNdLAotLSAgICAgICAgICAgICAgICAgICAgICAgIFtoYXZlX3N5c3RlbWRfbG9naW49bm9dKQotLSAgICAgIF0pCi0rQUNfQVJHX0VOQUJMRShzeXN0ZW1kLWxvZ2luLAotKyAgICAgICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXN5c3RlbWQtbG9naW5dLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0VuYWJsZSBsb2dpbmQgc3VwcG9ydF0pLCwKLSsgICAgICAgICAgICAgIGVuYWJsZV9zeXN0ZW1kX2xvZ2luPWF1dG8pCi0raWYgdGVzdCB4JGVuYWJsZV9zeXN0ZW1kX2xvZ2luICE9IHhubzsgdGhlbgotKyAgUEtHX0NIRUNLX01PRFVMRVMoU1lTVEVNRF9MT0dJTiwKLSsgICAgICAgICAgICAgICAgICAgIFtsaWJzeXN0ZW1kID49IDIwOV0sCi0rICAgICAgICAgICAgICAgICAgICBbaGF2ZV9zeXN0ZW1kX2xvZ2luXzIwOT15ZXM7aGF2ZV9zeXN0ZW1kX2xvZ2luPXllc10sCi0rICAgICAgICAgICAgICAgICAgICBbaGF2ZV9zeXN0ZW1kX2xvZ2luXzIwOT1ubztoYXZlX3N5c3RlbWRfbG9naW49bm9dKQotKwotKyAgIyBPbGRlciB2ZXJzaW9ucyBvZiBzeXN0ZW1kIHBhY2thZ2Ugc3lzdGVtZC1sb2dpbiBzZXBhcmF0ZWx5LiBGYWxsIGJhY2sgb24gdGhhdAotKyAgQVNfSUYoW3Rlc3QgeCRoYXZlX3N5c3RlbWRfbG9naW4gIT0geHllc10sWwotKyAgICAgICAgUEtHX0NIRUNLX01PRFVMRVMoU1lTVEVNRF9MT0dJTiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaWJzeXN0ZW1kLWxvZ2luID49IDE5OF0sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBbaGF2ZV9zeXN0ZW1kX2xvZ2luPXllc10sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBbaGF2ZV9zeXN0ZW1kX2xvZ2luPW5vXSkKLSsgICAgICAgIF0pCi0rZWxzZQotKyAgaGF2ZV9zeXN0ZW1kX2xvZ2luPW5vCi0rZmkKLSsKLStpZiB0ZXN0ICJ4JGhhdmVfc3lzdGVtZF9sb2dpbiIgPSAieG5vIiAtYSAieCRlbmFibGVfc3lzdGVtZF9sb2dpbiIgPSAieHllcyI7IHRoZW4KLSsgIEFDX01TR19FUlJPUihbc3lzdGVtZC1sb2dpbiBzdXBwb3J0IGV4cGxpY2l0bHkgZW5hYmxlZCwgYnV0IGNhbid0IGZpbmQgbGlic3lzdGVtZD49MjA5IG9yIGxpYnN5c3RlbWQtbG9naW5dKQotK2ZpCi0gCi0gQVNfSUYoW3Rlc3QgIngkaGF2ZV9zeXN0ZW1kX2xvZ2luIiA9ICJ4eWVzIl0sCi0gICAgICAgW0FDX0RFRklORShbSEFWRV9TWVNURU1EX0xPR0lOXSwgWzFdLCBbSGF2ZSBzeXN0ZW1kLWxvZ2luXSldKQotLS0gCi1jZ2l0IHYwLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi9saWJzeXN0ZW1kLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi9saWJzeXN0ZW1kLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZDI4ZDU2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vbGlic3lzdGVtZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLUZyb20gNWViMDI1YTg2N2I0MmY4YmM3YmM3MzI3OWVhYzhkZTU4ZTUxYTEzZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEZyZWRlcmljbyBDYWRldGUgPGZyZWRlcmljb0BjYWRldGUuZXU+Ci1EYXRlOiBNb24sIDI4IFNlcCAyMDE1IDAwOjMwOjA5ICswMjAwCi1TdWJqZWN0OiBjb25maWd1cmUuYWM6IGFkZCBzdXBwb3J0IGZvciBuZXcgdmVyc2lvbnMgb2Ygc3lzdGVtZAotCi1TdGFydGluZyBmcm9tIHN5c3RlbWQgdmVyc2lvbiAyMDksIGEgc2luZ2xlIGxpYnN5c3RlbWQucGMgaXMgcHJvdmlkZWQuCi1Gb3IgcHJldmlvdXMgdmVyc2lvbnMsIGZhbGwgYmFjayBvbiBsaWJzeXN0ZW1kLWxvZ2luLnBjLgotCi1TaWduZWQtb2ZmLWJ5OiBGcmVkZXJpY28gQ2FkZXRlIDxmcmVkZXJpY29AY2FkZXRlLmV1PgotUmV2aWV3ZWQtYnk6IEJyeWNlIEhhcnJpbmd0b24gPGJyeWNlQG9zZy5zYW1zdW5nLmNvbT4KLVJldmlld2VkLWJ5OiBEZXJlayBGb3JlbWFuIDxkZXJla2ZAb3NnLnNhbXN1bmcuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1CYWNrcG9ydGVkIGZyb20gV2VzdG9uIGdpdDoKLWh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy93YXlsYW5kL3dlc3Rvbi9jb21taXQvP2lkPTVlYjAyNQotCi1TaWduZWQtb2ZmLWJ5OiBKb3NodWEgTG9jayA8am9zaHVhLmxvY2tAY29sbGFib3JhLmNvLnVrPgotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAwNDUyOTFjLi5hOWNkNDI5IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0zODAsMTQgKzM4MCwyMyBAQCBBQ19BUkdfRU5BQkxFKHJlc2l6ZS1vcHRpbWl6YXRpb24sCi0gQVNfSUYoW3Rlc3QgIngkZW5hYmxlX3Jlc2l6ZV9vcHRpbWl6YXRpb24iID0gInh5ZXMiXSwKLSAgICAgICBbQUNfREVGSU5FKFtVU0VfUkVTSVpFX1BPT0xdLCBbMV0sIFtVc2UgcmVzaXplIG1lbW9yeSBwb29sIGFzIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uXSldKQotIAotLVBLR19DSEVDS19NT0RVTEVTKFNZU1RFTURfTE9HSU4sIFtsaWJzeXN0ZW1kLWxvZ2luID49IDE5OF0sCi0tICAgICAgICAgICAgICAgICAgW2hhdmVfc3lzdGVtZF9sb2dpbj15ZXNdLCBbaGF2ZV9zeXN0ZW1kX2xvZ2luPW5vXSkKLStQS0dfQ0hFQ0tfTU9EVUxFUyhTWVNURU1EX0xPR0lOLAotKyAgICAgICAgICAgICAgICAgIFtsaWJzeXN0ZW1kID49IDIwOV0sCi0rICAgICAgICAgICAgICAgICAgW2hhdmVfc3lzdGVtZF9sb2dpbl8yMDk9eWVzO2hhdmVfc3lzdGVtZF9sb2dpbj15ZXNdLAotKyAgICAgICAgICAgICAgICAgIFtoYXZlX3N5c3RlbWRfbG9naW5fMjA5PW5vO2hhdmVfc3lzdGVtZF9sb2dpbj1ub10pCi0rCi0rIyBPbGRlciB2ZXJzaW9ucyBvZiBzeXN0ZW1kIHBhY2thZ2Ugc3lzdGVtZC1sb2dpbiBzZXBhcmF0ZWx5LiBGYWxsIGJhY2sgb24gdGhhdAotK0FTX0lGKFt0ZXN0IHgkaGF2ZV9zeXN0ZW1kX2xvZ2luICE9IHh5ZXNdLFsKLSsgICAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhTWVNURU1EX0xPR0lOLAotKyAgICAgICAgICAgICAgICAgICAgICAgIFtsaWJzeXN0ZW1kLWxvZ2luID49IDE5OF0sCi0rICAgICAgICAgICAgICAgICAgICAgICAgW2hhdmVfc3lzdGVtZF9sb2dpbj15ZXNdLAotKyAgICAgICAgICAgICAgICAgICAgICAgIFtoYXZlX3N5c3RlbWRfbG9naW49bm9dKQotKyAgICAgIF0pCi0rCi0gQVNfSUYoW3Rlc3QgIngkaGF2ZV9zeXN0ZW1kX2xvZ2luIiA9ICJ4eWVzIl0sCi0gICAgICAgW0FDX0RFRklORShbSEFWRV9TWVNURU1EX0xPR0lOXSwgWzFdLCBbSGF2ZSBzeXN0ZW1kLWxvZ2luXSldKQotIEFNX0NPTkRJVElPTkFMKEhBVkVfU1lTVEVNRF9MT0dJTiwgdGVzdCAieCRoYXZlX3N5c3RlbWRfbG9naW4iID0gInh5ZXMiKQotIAotLVBLR19DSEVDS19NT0RVTEVTKFNZU1RFTURfTE9HSU5fMjA5LCBbbGlic3lzdGVtZC1sb2dpbiA+PSAyMDldLAotLSAgICAgICAgICAgICAgICAgIFtoYXZlX3N5c3RlbWRfbG9naW5fMjA5PXllc10sIFtoYXZlX3N5c3RlbWRfbG9naW5fMjA5PW5vXSkKLSBBU19JRihbdGVzdCAieCRoYXZlX3N5c3RlbWRfbG9naW5fMjA5IiA9ICJ4eWVzIl0sCi0gICAgICAgW0FDX0RFRklORShbSEFWRV9TWVNURU1EX0xPR0lOXzIwOV0sIFsxXSwgW0hhdmUgc3lzdGVtZC1sb2dpbiA+PSAyMDldKV0pCi0gCi0tLSAKLWNnaXQgdjAuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uL21ha2UtbGNtcy1leHBsaWNpdGx5LWNvbmZpZ3VyYWJsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vbWFrZS1sY21zLWV4cGxpY2l0bHktY29uZmlndXJhYmxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNWU2ZDZmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vbWFrZS1sY21zLWV4cGxpY2l0bHktY29uZmlndXJhYmxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotd2VzdG9uLTEuNS4wL2NvbmZpZ3VyZS5hYzogbWFrZSBsY21zIGV4cGxpY2l0bHkgY29uZmlndXJhYmxlCi0KLVRoZSBsY21zIHBhY2thZ2UgaXMgb3V0c2lkZSBvZiBvcGVuZW1iZWRkZWQtY29yZSwgc28gbWFrZSBpdAotZXhwbGljaXRseSBjb25maWd1cmFibGUuIE1ha2UgaXQgZGV0ZXJtaW5pc3RpYywgc28gdGhhdCBpZiBsY21zCi1kZXBlbmRlbmNpZXMgYXJlIG1pc3NpbmcsIGF1dG9jb25mIHRocm93cyBhIGZhdGFsIGVycm9yLiBGb2xsb3cKLXVwc3RyZWFtIHN0eWxlIHRvIG1ha2UgaXQgbW9yZSBsaWtlbHkgdG8gYmUgbWVyZ2VkLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotSW5kZXg6IHdlc3Rvbi0xLjUuMC9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB3ZXN0b24tMS41LjAub3JpZy9jb25maWd1cmUuYWMKLSsrKyB3ZXN0b24tMS41LjAvY29uZmlndXJlLmFjCi1AQCAtNDkxLDEyICs0OTEsMjQgQEAgQUNfQVJHX0VOQUJMRShkZW1vLWNsaWVudHMtaW5zdGFsbCwKLSAJCQkgICAgIGVuYWJsZV9kZW1vX2NsaWVudHNfaW5zdGFsbD1ubykKLSBBTV9DT05ESVRJT05BTChJTlNUQUxMX0RFTU9fQ0xJRU5UUywgW3Rlc3QgIngkZW5hYmxlX2RlbW9fY2xpZW50c19pbnN0YWxsIiA9ICJ4eWVzIl0pCi0gCi0tUEtHX0NIRUNLX01PRFVMRVMoTENNUywgbGNtczIsCi0tICAgICAgICAgICAgICAgICAgW2hhdmVfbGNtcz15ZXNdLCBbaGF2ZV9sY21zPW5vXSkKLS1pZiB0ZXN0ICJ4JGhhdmVfbGNtcyIgPSB4eWVzOyB0aGVuCi0tICAgICAgIEFDX0RFRklORShIQVZFX0xDTVMsIDEsIFtIYXZlIGxjbXMgc3VwcG9ydF0pCi0rQUNfQVJHX0VOQUJMRShsY21zLAotKyAgICAgICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0tZGlzYWJsZS1sY21zXSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtEaXNhYmxlIGxjbXMgc3VwcG9ydF0pLCwKLSsgICAgICAgICAgICAgIGVuYWJsZV9sY21zPWF1dG8pCi0rQU1fQ09ORElUSU9OQUwoSEFWRV9MQ01TLCBbdGVzdCAieCRlbmFibGVfbGNtcyIgPSB4eWVzXSkKLStpZiB0ZXN0ICJ4JGVuYWJsZV9sY21zIiAhPSAieG5vIjsgdGhlbgotKyAgICAgICAgUEtHX0NIRUNLX01PRFVMRVMoTENNUywgCi0rICAgICAgICAgICAgICAgICAgICAgICAgIGxjbXMyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICBbaGF2ZV9sY21zPXllc10sCi0rICAgICAgICAgICAgICAgICAgICAgICAgIFtoYXZlX2xjbXM9bm9dKQotKyAgICAgICAgaWYgdGVzdCAieCRoYXZlX2xjbXMiID0gInhubyIgLWEgIngkZW5hYmxlX2xjbXMiID0gInh5ZXMiOyB0aGVuCi0rICAgICAgICAgIEFDX01TR19FUlJPUihbbGNtcyBzdXBwb3J0IGV4cGxpY2l0bHkgcmVxdWVzdGVkLCBidXQgbGNtcyBjb3VsZG4ndCBiZSBmb3VuZF0pCi0rICAgICAgICBmaQotKyAgICAgICAgaWYgdGVzdCAieCRoYXZlX2xjbXMiID0gInh5ZXMiOyB0aGVuCi0rICAgICAgICAgICAgICAgIGVuYWJsZV9sY21zPXllcwotKyAgICAgICAgICAgICAgICBBQ19ERUZJTkUoSEFWRV9MQ01TLCAxLCBbSGF2ZSBsY21zIHN1cHBvcnRdKQotKyAgICAgICAgZmkKLSBmaQotLUFNX0NPTkRJVElPTkFMKEhBVkVfTENNUywgW3Rlc3QgIngkaGF2ZV9sY21zIiA9IHh5ZXNdKQotIAotIEFDX1BBVEhfUFJPRyhbd2F5bGFuZF9zY2FubmVyXSwgW3dheWxhbmQtc2Nhbm5lcl0pCi0gaWYgdGVzdCB4JHdheWxhbmRfc2Nhbm5lciA9IHg7IHRoZW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vbWFrZS1saWJ3ZWJwLWV4cGxpY2l0bHktY29uZmlndXJhYmxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi9tYWtlLWxpYndlYnAtZXhwbGljaXRseS1jb25maWd1cmFibGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkMDdkNGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi9tYWtlLWxpYndlYnAtZXhwbGljaXRseS1jb25maWd1cmFibGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0KLVRoZSBsaWJ3ZWJwIHBhY2thZ2UgaXMgb3V0c2lkZSBvZiBvcGVuZW1iZWRkZWQtY29yZSwgc28gbWFrZSBpdAotZXhwbGljaXRseSBjb25maWd1cmFibGUuIE1ha2UgaXQgZGV0ZXJtaW5pc3RpYywgc28gdGhhdCBpZiBsaWJ3ZWJwIAotZGVwZW5kZW5jaWVzIGFyZSBtaXNzaW5nLCBhdXRvY29uZiB0aHJvd3MgYSBmYXRhbCBlcnJvci4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUluZGV4OiB3ZXN0b24tMS41LjAvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gd2VzdG9uLTEuNS4wLm9yaWcvY29uZmlndXJlLmFjCi0rKysgd2VzdG9uLTEuNS4wL2NvbmZpZ3VyZS5hYwotQEAgLTI2OCw5ICsyNjgsMjIgQEAgZmkKLSAKLSBQS0dfQ0hFQ0tfTU9EVUxFUyhQSVhNQU4sIFtwaXhtYW4tMV0pCi0gUEtHX0NIRUNLX01PRFVMRVMoUE5HLCBbbGlicG5nXSkKLS1QS0dfQ0hFQ0tfTU9EVUxFUyhXRUJQLCBbbGlid2VicF0sIFtoYXZlX3dlYnA9eWVzXSwgW2hhdmVfd2VicD1ub10pCi0tQVNfSUYoW3Rlc3QgIngkaGF2ZV93ZWJwIiA9ICJ4eWVzIl0sCi0tICAgICAgW0FDX0RFRklORShbSEFWRV9XRUJQXSwgWzFdLCBbSGF2ZSB3ZWJwXSldKQotK0FDX0FSR19FTkFCTEUod2VicCwKLSsgICAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtd2VicF0sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbRGlzYWJsZSBsaWJ3ZWJwIHN1cHBvcnRdKSwsCi0rICAgICAgICAgICAgICBlbmFibGVfd2VicD1hdXRvKQotK0FNX0NPTkRJVElPTkFMKEhBVkVfV0VCUCwgW3Rlc3QgIngkZW5hYmxlX3dlYnAiID0geHllc10pCi0rQVNfSUYoW3Rlc3QgIngkZW5hYmxlX3dlYnAiICE9ICJ4bm8iXSwKLSsgICAgUEtHX0NIRUNLX01PRFVMRVMoV0VCUCwKLSsgICAgICAgICAgICAgICAgICAgICBbbGlid2VicF0sCi0rICAgICAgICAgICAgICAgICAgICAgW2hhdmVfd2VicD15ZXNdLAotKyAgICAgICAgICAgICAgICAgICAgIFtoYXZlX3dlYnA9bm9dKQotKyAgICBBU19JRihbdGVzdCAieCRoYXZlX3dlYnAiID0gInhubyIgLWEgIngkZW5hYmxlX3dlYnAiID0gInh5ZXMiXSwKLSsgICAgICAgIEFDX01TR19FUlJPUihbbGlid2VicCBzdXBwb3J0IGV4cGxpY2l0bHkgcmVxdWVzdCwgYnV0IGxpcHdlYnAgY291bGQgbm90IGJlIGZvdW5kXSkpCi0rICAgIEFTX0lGKFt0ZXN0ICJ4JGhhdmVfd2VicCIgPSAieHllcyJdLAotKyAgICAgICAgW2VuYWJsZV93ZWJwPXllc10KLSsgICAgICAgIFtBQ19ERUZJTkUoW0hBVkVfV0VCUF0sIFsxXSwgW0hhdmUgd2VicF0pXSkKLSspCi0gCi0gQUNfQVJHX0VOQUJMRSh2YWFwaS1yZWNvcmRlciwgWyAgLS1lbmFibGUtdmFhcGktcmVjb3JkZXJdLCwKLSAJICAgICAgZW5hYmxlX3ZhYXBpX3JlY29yZGVyPWF1dG8pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uL21ha2Utd2VzdG9uLWxhdW5jaC1leGl0LWZvci11bnJlY29nbml6ZWQtb3B0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi9tYWtlLXdlc3Rvbi1sYXVuY2gtZXhpdC1mb3ItdW5yZWNvZ25pemVkLW9wdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzQwOGE0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi9tYWtlLXdlc3Rvbi1sYXVuY2gtZXhpdC1mb3ItdW5yZWNvZ25pemVkLW9wdGlvbi5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIGU4YjYxNTI1MGY3MDBmNzg1NGI0MjNhYWFmMGEwYWVlYTkyYzA1YTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUb20gSG9jaHN0ZWluIDx0b20uaG9jaHN0ZWluQG54cC5jb20+CitEYXRlOiBTYXQsIDcgTWF5IDIwMTYgMDg6NTE6NTggLTAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gd2VzdG9uLWxhdW5jaDogSGFuZGxlIGludmFsaWQgY29tbWFuZCBsaW5lIG9wdGlvbnMKK09yZ2FuaXphdGlvbjogTy5TLiBTeXN0ZW1zIFNvZnR3YXJlIExUREEuCisKK0V4aXQgdGhlIHByb2dyYW0gaWYgYW4gdW5yZWNvZ25pemVkIGNvbW1hbmQgbGluZSBvcHRpb24gaXMgZm91bmQuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKK1NpZ25lZC1vZmYtYnk6IFRvbSBIb2Noc3RlaW4gPHRvbS5ob2Noc3RlaW5AbnhwLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+CistLS0KKworIHNyYy93ZXN0b24tbGF1bmNoLmMgfCAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL3dlc3Rvbi1sYXVuY2guYyBiL3NyYy93ZXN0b24tbGF1bmNoLmMKK2luZGV4IGI4ZGZiMTcuLjk5ODdkOGUgMTAwNjQ0CistLS0gYS9zcmMvd2VzdG9uLWxhdW5jaC5jCisrKysgYi9zcmMvd2VzdG9uLWxhdW5jaC5jCitAQCAtNzAzLDYgKzcwMyw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJCWNhc2UgJ2gnOgorIAkJCWhlbHAoIndlc3Rvbi1sYXVuY2giKTsKKyAJCQlleGl0KEVYSVRfRkFJTFVSRSk7CisrCQlkZWZhdWx0OgorKwkJCWV4aXQoRVhJVF9GQUlMVVJFKTsKKyAJCX0KKyAJfQorIAorLS0gCisyLjguMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uL3h3YXlsYW5kLndlc3Rvbi1zdGFydCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24veHdheWxhbmQud2VzdG9uLXN0YXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0ODNjOTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uL3h3YXlsYW5kLndlc3Rvbi1zdGFydApAQCAtMCwwICsxLDcgQEAKKyMhL2Jpbi9zaAorCitpZiB0eXBlIFh3YXlsYW5kICA+L2Rldi9udWxsIDI+L2Rldi9udWxsOyB0aGVuCisJbWtkaXIgLXAgL3RtcC8uWDExLXVuaXgKKworCWFkZF93ZXN0b25fYXJndW1lbnQgIi0tbW9kdWxlcz14d2F5bGFuZC5zbyIKK2ZpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXzEuMTEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b25fMS4xMS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhZDMwOWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXzEuMTEuMC5iYgpAQCAtMCwwICsxLDExNyBAQAorU1VNTUFSWSA9ICJXZXN0b24sIGEgV2F5bGFuZCBjb21wb3NpdG9yIgorREVTQ1JJUFRJT04gPSAiV2VzdG9uIGlzIHRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb2YgYSBXYXlsYW5kIGNvbXBvc2l0b3IiCitIT01FUEFHRSA9ICJodHRwOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmciCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ3OWVlOWU2NmJiMGY5NWQzMzg2YTdhY2FlNzgwYjcwIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9jb21wb3NpdG9yLmM7ZW5kbGluZT0yMzttZDU9MWQ1MzVmZWQyNjZjZjM5ZjZkOGMwNjQ3ZjUyYWMzMzEiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL3dlc3Rvbi5wbmcgXAorICAgICAgICAgICBmaWxlOi8vd2VzdG9uLmRlc2t0b3AgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tYWtlLWVycm9yLXBvcnRhYmxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLUZpeC13YXlsYW5kLXByb3RvY29scy1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc2hhcmVkLWluY2x1ZGUtc3RkaW50LmgtZm9yLWludDMyX3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8veHdheWxhbmQud2VzdG9uLXN0YXJ0IFwKKyAgICAgICAgICAgZmlsZTovL21ha2Utd2VzdG9uLWxhdW5jaC1leGl0LWZvci11bnJlY29nbml6ZWQtb3B0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtd2VzdG9uLWxhdW5jaC1Qcm92aWRlLWEtZGVmYXVsdC12ZXJzaW9uLXRoYXQtZG9lc24tdC5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiYmM2ZjkwYTIwMzkxNjM4MDRhZWNmYTY2M2I2OWM0YzIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDVlMDg2ZTlmMTg2YTA2ODQzYjlmN2E1ZTFhYmYxOTM0N2IxYTZlNGJlMjZkN2U3NDkyN2FiYzE3YjZiNzEyNSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVzZXJhZGQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisjIGRlcGVuZHMgb24gdmlydHVhbC9lZ2wKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCisKK0RFUEVORFMgPSAibGlieGtiY29tbW9uIGdkay1waXhidWYgcGl4bWFuIGNhaXJvIGdsaWItMi4wIGpwZWciCitERVBFTkRTICs9ICJ3YXlsYW5kIHdheWxhbmQtcHJvdG9jb2xzIGxpYmlucHV0IHZpcnR1YWwvZWdsIHBhbmdvIHdheWxhbmQtbmF0aXZlIgorCitFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc2V0dWlkLWluc3RhbGwgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ycGktY29tcG9zaXRvciBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXJkcC1jb21wb3NpdG9yIFwKKyAgICAgICAgICAgICAgICBXQVlMQU5EX1BST1RPQ09MU19TWVNST09UX0RJUj0ke1NUQUdJTkdfRElSfS8ke01BQ0hJTkV9IFwKKyAgICAgICAgICAgICAgICAiCitFWFRSQV9PRUNPTkZbdmFyZGVwc2V4Y2x1ZGVdID0gIk1BQ0hJTkUiCisKK0VYVFJBX09FQ09ORl9hcHBlbmRfcWVtdXg4NiA9ICJcCisJCVdFU1RPTl9OQVRJVkVfQkFDS0VORD1mYmRldi1iYWNrZW5kLnNvIFwKKwkJIgorRVhUUkFfT0VDT05GX2FwcGVuZF9xZW11eDg2LTY0ID0gIlwKKwkJV0VTVE9OX05BVElWRV9CQUNLRU5EPWZiZGV2LWJhY2tlbmQuc28gXAorCQkiCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgJ2ttcyBmYmRldiB3YXlsYW5kIGVnbCcsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3gxMScsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExIHdheWxhbmQnLCAneHdheWxhbmQnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdwYW0nLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnc3lzdGVtZCcsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgIGNsaWVudHMgbGF1bmNoIgorIworIyBDb21wb3NpdG9yIGNob2ljZXMKKyMKKyMgV2VzdG9uIG9uIEtNUworUEFDS0FHRUNPTkZJR1trbXNdID0gIi0tZW5hYmxlLWRybS1jb21wb3NpdG9yLC0tZGlzYWJsZS1kcm0tY29tcG9zaXRvcixkcm0gdWRldiB2aXJ0dWFsL21lc2EgbXRkZXYiCisjIFdlc3RvbiBvbiBXYXlsYW5kIChuZXN0ZWQgV2VzdG9uKQorUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItLWVuYWJsZS13YXlsYW5kLWNvbXBvc2l0b3IsLS1kaXNhYmxlLXdheWxhbmQtY29tcG9zaXRvcix2aXJ0dWFsL21lc2EiCisjIFdlc3RvbiBvbiBYMTEKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS14MTEtY29tcG9zaXRvciwtLWRpc2FibGUteDExLWNvbXBvc2l0b3IsdmlydHVhbC9saWJ4MTEgbGlieGNiIGxpYnhjYiBsaWJ4Y3Vyc29yIGNhaXJvIgorIyBIZWFkbGVzcyBXZXN0b24KK1BBQ0tBR0VDT05GSUdbaGVhZGxlc3NdID0gIi0tZW5hYmxlLWhlYWRsZXNzLWNvbXBvc2l0b3IsLS1kaXNhYmxlLWhlYWRsZXNzLWNvbXBvc2l0b3IiCisjIFdlc3RvbiBvbiBmcmFtZWJ1ZmZlcgorUEFDS0FHRUNPTkZJR1tmYmRldl0gPSAiLS1lbmFibGUtZmJkZXYtY29tcG9zaXRvciwtLWRpc2FibGUtZmJkZXYtY29tcG9zaXRvcix1ZGV2IG10ZGV2IgorIyB3ZXN0b24tbGF1bmNoCitQQUNLQUdFQ09ORklHW2xhdW5jaF0gPSAiLS1lbmFibGUtd2VzdG9uLWxhdW5jaCwtLWRpc2FibGUtd2VzdG9uLWxhdW5jaCxkcm0iCisjIFZBLUFQSSBkZXNrdG9wIHJlY29yZGVyCitQQUNLQUdFQ09ORklHW3ZhYXBpXSA9ICItLWVuYWJsZS12YWFwaS1yZWNvcmRlciwtLWRpc2FibGUtdmFhcGktcmVjb3JkZXIsbGlidmEiCisjIFdlc3RvbiB3aXRoIEVHTCBzdXBwb3J0CitQQUNLQUdFQ09ORklHW2VnbF0gPSAiLS1lbmFibGUtZWdsIC0tZW5hYmxlLXNpbXBsZS1lZ2wtY2xpZW50cywtLWRpc2FibGUtZWdsIC0tZGlzYWJsZS1zaW1wbGUtZWdsLWNsaWVudHMsdmlydHVhbC9lZ2wiCisjIFdlc3RvbiB3aXRoIGNhaXJvIGdsZXN2MiBzdXBwb3J0CitQQUNLQUdFQ09ORklHW2NhaXJvLWdsZXN2Ml0gPSAiLS13aXRoLWNhaXJvLWdsZXN2MiwtLXdpdGgtY2Fpcm89aW1hZ2UsY2Fpcm8iCisjIFdlc3RvbiB3aXRoIGxjbXMgc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tsY21zXSA9ICItLWVuYWJsZS1sY21zLC0tZGlzYWJsZS1sY21zLGxjbXMiCisjIFdlc3RvbiB3aXRoIHdlYnAgc3VwcG9ydAorUEFDS0FHRUNPTkZJR1t3ZWJwXSA9ICItLXdpdGgtd2VicCwtLXdpdGhvdXQtd2VicCxsaWJ3ZWJwIgorIyBXZXN0b24gd2l0aCB1bndpbmRpbmcgc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tsaWJ1bndpbmRdID0gIi0tZW5hYmxlLWxpYnVud2luZCwtLWRpc2FibGUtbGlidW53aW5kLGxpYnVud2luZCIKKyMgV2VzdG9uIHdpdGggc3lzdGVtZC1sb2dpbiBzdXBwb3J0CitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0tZW5hYmxlLXN5c3RlbWQtbG9naW4sLS1kaXNhYmxlLXN5c3RlbWQtbG9naW4sc3lzdGVtZCBkYnVzIgorIyBXZXN0b24gd2l0aCBYd2F5bGFuZCBzdXBwb3J0IChyZXF1aXJlcyBYMTEgYW5kIFdheWxhbmQpCitQQUNLQUdFQ09ORklHW3h3YXlsYW5kXSA9ICItLWVuYWJsZS14d2F5bGFuZCwtLWRpc2FibGUteHdheWxhbmQiCisjIGNvbG9yZCBDTVMgc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tjb2xvcmRdID0gIi0tZW5hYmxlLWNvbG9yZCwtLWRpc2FibGUtY29sb3JkLGNvbG9yZCIKKyMgQ2xpZW50cyBzdXBwb3J0CitQQUNLQUdFQ09ORklHW2NsaWVudHNdID0gIi0tZW5hYmxlLWNsaWVudHMgLS1lbmFibGUtc2ltcGxlLWNsaWVudHMgLS1lbmFibGUtZGVtby1jbGllbnRzLWluc3RhbGwsLS1kaXNhYmxlLWNsaWVudHMgLS1kaXNhYmxlLXNpbXBsZS1jbGllbnRzIgorIyBXZXN0b24gd2l0aCBQQU0gc3VwcG9ydAorUEFDS0FHRUNPTkZJR1twYW1dID0gIi0td2l0aC1wYW0sLS13aXRob3V0LXBhbSxsaWJwYW0iCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgV2VzdG9uIGRvZXNuJ3QgbmVlZCB0aGUgLmxhIGZpbGVzIHRvIGxvYWQgbW9kdWxlcywgc28gd2lwZSB0aGVtCisJcm0gLWYgJHtEfS8ke2xpYmRpcn0vd2VzdG9uLyoubGEKKworCSMgSWYgWDExLCBzaGlwIGEgZGVza3RvcCBmaWxlIHRvIGxhdW5jaCBpdAorCWlmIFsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3gxMScsICcnLCBkKX0iID0gIngxMSIgXTsgdGhlbgorCQlpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucworCQlpbnN0YWxsICR7V09SS0RJUn0vd2VzdG9uLmRlc2t0b3AgJHtEfSR7ZGF0YWRpcn0vYXBwbGljYXRpb25zCisKKwkJaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9pY29ucy9oaWNvbG9yLzQ4eDQ4L2FwcHMKKwkJaW5zdGFsbCAke1dPUktESVJ9L3dlc3Rvbi5wbmcgJHtEfSR7ZGF0YWRpcn0vaWNvbnMvaGljb2xvci80OHg0OC9hcHBzCisJZmkKKworCWlmIFsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3h3YXlsYW5kJywgJ3llcycsICdubycsIGQpfSIgPSAieWVzIiBdOyB0aGVuCisJCWluc3RhbGwgLURtIDY0NCAke1dPUktESVJ9L3h3YXlsYW5kLndlc3Rvbi1zdGFydCAke0R9JHtkYXRhZGlyfS93ZXN0b24tc3RhcnQveHdheWxhbmQKKwlmaQorfQorCitQQUNLQUdFX0JFRk9SRV9QTiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAneHdheWxhbmQnLCAnJHtQTn0teHdheWxhbmQnLCAnJywgZCl9IgorUEFDS0FHRVMgKz0gIiR7UE59LWV4YW1wbGVzIgorCitGSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vd2VzdG9uICR7YmluZGlyfS93ZXN0b24tdGVybWluYWwgJHtiaW5kaXJ9L3dlc3Rvbi1pbmZvICR7YmluZGlyfS93ZXN0b24tbGF1bmNoICR7YmluZGlyfS93Y2FwLWRlY29kZSAke2xpYmV4ZWNkaXJ9ICR7bGliZGlyfS8ke0JQTn0vKi5zbyAke2RhdGFkaXJ9IgorRklMRVNfJHtQTn0tZXhhbXBsZXMgPSAiJHtiaW5kaXJ9LyoiCisKK0ZJTEVTXyR7UE59LXh3YXlsYW5kID0gIiR7bGliZGlyfS8ke0JQTn0veHdheWxhbmQuc28iCitSREVQRU5EU18ke1BOfS14d2F5bGFuZCArPSAieHNlcnZlci14b3JnLXh3YXlsYW5kIgorCitSREVQRU5EU18ke1BOfSArPSAieGtleWJvYXJkLWNvbmZpZyIKK1JSRUNPTU1FTkRTXyR7UE59ID0gImxpYmVyYXRpb24tZm9udHMiCitSUkVDT01NRU5EU18ke1BOfS1kZXYgKz0gIndheWxhbmQtcHJvdG9jb2xzIgorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgorR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gd2VzdG9uLWxhdW5jaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b25fMS45LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXzEuOS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNmE3ODhkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b25fMS45LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotU1VNTUFSWSA9ICJXZXN0b24sIGEgV2F5bGFuZCBjb21wb3NpdG9yIgotREVTQ1JJUFRJT04gPSAiV2VzdG9uIGlzIHRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb2YgYSBXYXlsYW5kIGNvbXBvc2l0b3IiCi1IT01FUEFHRSA9ICJodHRwOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmciCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ3OWVlOWU2NmJiMGY5NWQzMzg2YTdhY2FlNzgwYjcwIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9jb21wb3NpdG9yLmM7ZW5kbGluZT0yMzttZDU9MWQ1MzVmZWQyNjZjZjM5ZjZkOGMwNjQ3ZjUyYWMzMzEiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vd2VzdG9uLnBuZyBcCi0gICAgICAgICAgIGZpbGU6Ly93ZXN0b24uZGVza3RvcCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYWtlLWxjbXMtZXhwbGljaXRseS1jb25maWd1cmFibGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFrZS1saWJ3ZWJwLWV4cGxpY2l0bHktY29uZmlndXJhYmxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbWFrZS1lcnJvci1wb3J0YWJsZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJzeXN0ZW1kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2V4cGxpY2l0LWVuYWJsZS1kaXNhYmxlLXN5c3RlbWQucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjY2YmJiYTEyZjU0NjU3MGI0ZDk3ZjY3NmJjNzlhMjhlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjljMWIwM2YzMTg0ZmEwYjBkZmRmNjdlMjE1MDQ4MDg1MTU2ZTFhMmNhMzQ0YWY2NjEzZmVkMzY3OTRhYzQ4Y2YiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1c2VyYWRkIGRpc3Ryb19mZWF0dXJlc19jaGVjawotIyBkZXBlbmRzIG9uIHZpcnR1YWwvZWdsCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgotCi1ERVBFTkRTID0gImxpYnhrYmNvbW1vbiBnZGstcGl4YnVmIHBpeG1hbiBjYWlybyBnbGliLTIuMCBqcGVnIgotREVQRU5EUyArPSAid2F5bGFuZCBsaWJpbnB1dCB2aXJ0dWFsL2VnbCBwYW5nbyB3YXlsYW5kLW5hdGl2ZSIKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXNldHVpZC1pbnN0YWxsIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1zaW1wbGUtY2xpZW50cyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtY2xpZW50cyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtZGVtby1jbGllbnRzLWluc3RhbGwgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ycGktY29tcG9zaXRvciBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLXJkcC1jb21wb3NpdG9yIFwKLSAgICAgICAgICAgICAgICAiCi0KLUVYVFJBX09FQ09ORl9hcHBlbmRfcWVtdXg4NiA9ICJcCi0JCVdFU1RPTl9OQVRJVkVfQkFDS0VORD1mYmRldi1iYWNrZW5kLnNvIFwKLQkJIgotRVhUUkFfT0VDT05GX2FwcGVuZF9xZW11eDg2LTY0ID0gIlwKLQkJV0VTVE9OX05BVElWRV9CQUNLRU5EPWZiZGV2LWJhY2tlbmQuc28gXAotCQkiCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgJ2ttcyBmYmRldiB3YXlsYW5kIGVnbCcsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3gxMScsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xhdW5jaCcsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICdzeXN0ZW1kJywgJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAiCi0jCi0jIENvbXBvc2l0b3IgY2hvaWNlcwotIwotIyBXZXN0b24gb24gS01TCi1QQUNLQUdFQ09ORklHW2ttc10gPSAiLS1lbmFibGUtZHJtLWNvbXBvc2l0b3IsLS1kaXNhYmxlLWRybS1jb21wb3NpdG9yLGRybSB1ZGV2IHZpcnR1YWwvbWVzYSBtdGRldiIKLSMgV2VzdG9uIG9uIFdheWxhbmQgKG5lc3RlZCBXZXN0b24pCi1QQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi0tZW5hYmxlLXdheWxhbmQtY29tcG9zaXRvciwtLWRpc2FibGUtd2F5bGFuZC1jb21wb3NpdG9yLHZpcnR1YWwvbWVzYSIKLSMgV2VzdG9uIG9uIFgxMQotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLXgxMS1jb21wb3NpdG9yLC0tZGlzYWJsZS14MTEtY29tcG9zaXRvcix2aXJ0dWFsL2xpYngxMSBsaWJ4Y2IgbGlieGNiIGxpYnhjdXJzb3IgY2Fpcm8iCi0jIEhlYWRsZXNzIFdlc3RvbgotUEFDS0FHRUNPTkZJR1toZWFkbGVzc10gPSAiLS1lbmFibGUtaGVhZGxlc3MtY29tcG9zaXRvciwtLWRpc2FibGUtaGVhZGxlc3MtY29tcG9zaXRvciIKLSMgV2VzdG9uIG9uIGZyYW1lYnVmZmVyCi1QQUNLQUdFQ09ORklHW2ZiZGV2XSA9ICItLWVuYWJsZS1mYmRldi1jb21wb3NpdG9yLC0tZGlzYWJsZS1mYmRldi1jb21wb3NpdG9yLHVkZXYgbXRkZXYiCi0jIHdlc3Rvbi1sYXVuY2gKLVBBQ0tBR0VDT05GSUdbbGF1bmNoXSA9ICItLWVuYWJsZS13ZXN0b24tbGF1bmNoLC0tZGlzYWJsZS13ZXN0b24tbGF1bmNoLGxpYnBhbSBkcm0iCi0jIFZBLUFQSSBkZXNrdG9wIHJlY29yZGVyCi1QQUNLQUdFQ09ORklHW3ZhYXBpXSA9ICItLWVuYWJsZS12YWFwaS1yZWNvcmRlciwtLWRpc2FibGUtdmFhcGktcmVjb3JkZXIsbGlidmEiCi0jIFdlc3RvbiB3aXRoIEVHTCBzdXBwb3J0Ci1QQUNLQUdFQ09ORklHW2VnbF0gPSAiLS1lbmFibGUtZWdsIC0tZW5hYmxlLXNpbXBsZS1lZ2wtY2xpZW50cywtLWRpc2FibGUtZWdsIC0tZGlzYWJsZS1zaW1wbGUtZWdsLWNsaWVudHMsdmlydHVhbC9lZ2wiCi0jIFdlc3RvbiB3aXRoIGNhaXJvIGdsZXN2MiBzdXBwb3J0Ci1QQUNLQUdFQ09ORklHW2NhaXJvLWdsZXN2Ml0gPSAiLS13aXRoLWNhaXJvLWdsZXN2MiwtLXdpdGgtY2Fpcm89aW1hZ2UsY2Fpcm8iCi0jIFdlc3RvbiB3aXRoIGxjbXMgc3VwcG9ydAotUEFDS0FHRUNPTkZJR1tsY21zXSA9ICItLWVuYWJsZS1sY21zLC0tZGlzYWJsZS1sY21zLGxjbXMiCi0jIFdlc3RvbiB3aXRoIHdlYnAgc3VwcG9ydAotUEFDS0FHRUNPTkZJR1t3ZWJwXSA9ICItLWVuYWJsZS13ZWJwLC0tZGlzYWJsZS13ZWJwLGxpYndlYnAiCi0jIFdlc3RvbiB3aXRoIHVud2luZGluZyBzdXBwb3J0Ci1QQUNLQUdFQ09ORklHW2xpYnVud2luZF0gPSAiLS1lbmFibGUtbGlidW53aW5kLC0tZGlzYWJsZS1saWJ1bndpbmQsbGlidW53aW5kIgotIyBXZXN0b24gd2l0aCBzeXN0ZW1kLWxvZ2luIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS1lbmFibGUtc3lzdGVtZC1sb2dpbiwtLWRpc2FibGUtc3lzdGVtZC1sb2dpbixzeXN0ZW1kIGRidXMiCi0jIFdlc3RvbiB3aXRoIFh3YXlsYW5kIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbeHdheWxhbmRdID0gIi0tZW5hYmxlLXh3YXlsYW5kLC0tZGlzYWJsZS14d2F5bGFuZCxsaWJ4Y2IgbGlieGN1cnNvciBjYWlybyIKLSMgY29sb3JkIENNUyBzdXBwb3J0Ci1QQUNLQUdFQ09ORklHW2NvbG9yZF0gPSAiLS1lbmFibGUtY29sb3JkLC0tZGlzYWJsZS1jb2xvcmQsY29sb3JkIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIFdlc3RvbiBkb2Vzbid0IG5lZWQgdGhlIC5sYSBmaWxlcyB0byBsb2FkIG1vZHVsZXMsIHNvIHdpcGUgdGhlbQotCXJtIC1mICR7RH0vJHtsaWJkaXJ9L3dlc3Rvbi8qLmxhCi0KLQkjIElmIFgxMSwgc2hpcCBhIGRlc2t0b3AgZmlsZSB0byBsYXVuY2ggaXQKLQlpZiBbICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEnLCAnJywgZCl9IiA9ICJ4MTEiIF07IHRoZW4KLQkJaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMKLQkJaW5zdGFsbCAke1dPUktESVJ9L3dlc3Rvbi5kZXNrdG9wICR7RH0ke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucwotCi0JCWluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vaWNvbnMvaGljb2xvci80OHg0OC9hcHBzCi0JCWluc3RhbGwgJHtXT1JLRElSfS93ZXN0b24ucG5nICR7RH0ke2RhdGFkaXJ9L2ljb25zL2hpY29sb3IvNDh4NDgvYXBwcwotICAgICAgICBmaQotfQotCi1QQUNLQUdFUyArPSAiJHtQTn0tZXhhbXBsZXMiCi0KLUZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS93ZXN0b24gJHtiaW5kaXJ9L3dlc3Rvbi10ZXJtaW5hbCAke2JpbmRpcn0vd2VzdG9uLWluZm8gJHtiaW5kaXJ9L3dlc3Rvbi1sYXVuY2ggJHtiaW5kaXJ9L3djYXAtZGVjb2RlICR7bGliZXhlY2Rpcn0gJHtsaWJkaXJ9LyR7QlBOfS8qLnNvICR7ZGF0YWRpcn0iCi1GSUxFU18ke1BOfS1leGFtcGxlcyA9ICIke2JpbmRpcn0vKiIKLQotUkRFUEVORFNfJHtQTn0gKz0gInhrZXlib2FyZC1jb25maWciCi1SUkVDT01NRU5EU18ke1BOfSA9ICJsaWJlcmF0aW9uLWZvbnRzIgotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gd2VzdG9uLWxhdW5jaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveDExLWNvbW1vbi94MTEtY29tbW9uL1hzZXJ2ZXIuaW4gYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3gxMS1jb21tb24veDExLWNvbW1vbi9Yc2VydmVyLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOGVlZDc2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveDExLWNvbW1vbi94MTEtY29tbW9uL1hzZXJ2ZXIuaW4KKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0jIS9iaW4vc2gKLSMKLQotWFNFUlZFUj0vdXNyL2Jpbi9Yb3JnCi0KLS4gL2V0Yy9wcm9maWxlCi0KLUFSR1M9IiAtYnIgLXBuIEBCTEFOS19BUkdTQCIKLQotRElTUExBWT0nOjAnCi0KLWV4ZWMgeGluaXQgL2V0Yy9YMTEvWHNlc3Npb24gLS0gJFhTRVJWRVIgJERJU1BMQVkgJEFSR1MgJCoKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveDExLWNvbW1vbi94MTEtY29tbW9uL2V0Yy9YMTEvWHNlc3Npb24uZC8xM3hkZ2Jhc2VkaXJzLnNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3gxMS1jb21tb24vZXRjL1gxMS9Yc2Vzc2lvbi5kLzEzeGRnYmFzZWRpcnMuc2gKaW5kZXggOTE1OTRiOS4uNmJkNDBiMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3gxMS1jb21tb24vZXRjL1gxMS9Yc2Vzc2lvbi5kLzEzeGRnYmFzZWRpcnMuc2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3gxMS1jb21tb24vZXRjL1gxMS9Yc2Vzc2lvbi5kLzEzeGRnYmFzZWRpcnMuc2gKQEAgLTcsNyArNyw3IEBACiAjIEluIHRoZSBpZGVhbCBjYXNlIHdoZXJlIFN5c3RlbUQgaXMgYm9vdGluZyBhbmQgdXNlcnNwYWNlIGlzIGluaXRpYXRlZCBieSBhCiAjIFN5c3RlbUQgdXNlciBzZXNzaW9uIHRoaXMgd2lsbCBoYXZlIGJlZW4gc2V0IGFscmVhZHksIHNvIGRvbid0IG92ZXJ3cml0ZSBpdC4KIAotaWYgWyAteiAiJFhHRF9SVU5USU1FX0RJUiIgXTsgdGhlbgotCVhER19SVU5USU1FX0RJUj0iL3RtcCIKLSAgICAgICAgZXhwb3J0IFhER19SVU5USU1FX0RJUgoraWYgWyAteiAiJFhER19SVU5USU1FX0RJUiIgXTsgdGhlbgorICAgIFhER19SVU5USU1FX0RJUj0iL3RtcCIKKyAgICBleHBvcnQgWERHX1JVTlRJTUVfRElSCiBmaQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3gxMS1jb21tb25fMC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3gxMS1jb21tb25fMC4xLmJiCmluZGV4IDZkN2MzNDcuLmFiOWE5MzkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveDExLWNvbW1vbi94MTEtY29tbW9uXzAuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3gxMS1jb21tb24veDExLWNvbW1vbl8wLjEuYmIKQEAgLTksMjIgKzksMTQgQEAKIFJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCiAKIFNSQ19VUkkgPSAiZmlsZTovL2V0YyBcCi0gICAgICAgICAgIGZpbGU6Ly9Yc2VydmVyLmluIFwKICAgICAgICAgICAgZmlsZTovL2dwbHYyLWxpY2Vuc2UucGF0Y2giCiAKIFMgPSAiJHtXT1JLRElSfSIKIAotUEFDS0FHRUNPTkZJRyA/Pz0gImJsYW5rIgotIyBkcG1zIGFuZCBzY3JlZW4gc2F2ZXIgd2lsbCBiZSBvbiBvbmx5IGlmICdibGFuaycgaXMgaW4gUEFDS0FHRUNPTkZJRwotUEFDS0FHRUNPTkZJR1tibGFua10gPSAiIgotCiBkb19pbnN0YWxsKCkgewogCWNwIC1SICR7U30vZXRjICR7RH0ke3N5c2NvbmZkaXJ9Ci0Jc2VkIC1lICdzL0BCTEFOS19BUkdTQC8ke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdibGFuaycsICcnLCAnLXMgMCAtZHBtcycsIGQpfS8nIFwKLQkJJHtTfS9Yc2VydmVyLmluID4gJHtEfSR7c3lzY29uZmRpcn0vWDExL1hzZXJ2ZXIKLQogCWNobW9kIC1SIDc1NSAke0R9JHtzeXNjb25mZGlyfQogfQogCi1SREVQRU5EU18ke1BOfSA9ICJkYnVzLXgxMSB4bW9kbWFwIHhkcHlpbmZvIHh0c2NhbCB4aW5pdCBmb3JtZmFjdG9yIgorUkRFUEVORFNfJHtQTn0gPSAiZGJ1cy14MTEgeG1vZG1hcCB4ZHB5aW5mbyB4aW5wdXQtY2FsaWJyYXRvciBmb3JtZmFjdG9yIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3gxMS1jb21tb24veHNlcnZlci1ub2RtLWluaXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3gxMS1jb21tb24veHNlcnZlci1ub2RtLWluaXQuYmIKaW5kZXggYjY4ZDQwZS4uYTZkMGQ1ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveDExLWNvbW1vbi94c2VydmVyLW5vZG0taW5pdC5iYgpAQCAtNSwxMCArNSwxMCBAQAogUFIgPSAicjMxIgogCiBTUkNfVVJJID0gImZpbGU6Ly94c2VydmVyLW5vZG0gXAotICAgICAgICAgICBmaWxlOi8vWHVzZXJuYW1lIFwKKyAgICAgICAgICAgZmlsZTovL1hzZXJ2ZXIgXAogICAgICAgICAgICBmaWxlOi8vZ3BsdjItbGljZW5zZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly94c2VydmVyLW5vZG0uc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly94c2VydmVyLW5vZG0uY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly94c2VydmVyLW5vZG0uc2VydmljZS5pbiBcCisgICAgICAgICAgIGZpbGU6Ly94c2VydmVyLW5vZG0uY29uZi5pbiBcCiAiCiAKIFMgPSAiJHtXT1JLRElSfSIKQEAgLTE2LDM1ICsxNiw0NCBAQAogIyBTaW5jZSB3ZSByZWZlciB0byBST09UTEVTU19YIHdoaWNoIGlzIG5vcm1hbGx5IGVuYWJsZWQgcGVyLW1hY2hpbmUKIFBBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCiAKLWluaGVyaXQgdXBkYXRlLXJjLmQgc3lzdGVtZAoraW5oZXJpdCB1cGRhdGUtcmMuZCBzeXN0ZW1kIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitQQUNLQUdFQ09ORklHID8/PSAiYmxhbmsiCisjIGRwbXMgYW5kIHNjcmVlbiBzYXZlciB3aWxsIGJlIG9uIG9ubHkgaWYgJ2JsYW5rJyBpcyBpbiBQQUNLQUdFQ09ORklHCitQQUNLQUdFQ09ORklHW2JsYW5rXSA9ICIiCiAKIGRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICBpbnN0YWxsIHhzZXJ2ZXItbm9kbSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKKyAgICBpbnN0YWxsIHhzZXJ2ZXItbm9kbS5jb25mLmluICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQveHNlcnZlci1ub2RtCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS94c2VydmVyLW5vZG0KKyAgICBpbnN0YWxsIFhzZXJ2ZXIgJHtEfSR7c3lzY29uZmRpcn0veHNlcnZlci1ub2RtL1hzZXJ2ZXIKKworICAgIEJMQU5LX0FSR1M9IiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2JsYW5rJywgJycsICctcyAwIC1kcG1zJywgZCl9IgorICAgIGlmIFsgIiR7Uk9PVExFU1NfWH0iID0gIjEiIF0gOyB0aGVuCisgICAgICAgIFhVU0VSX0hPTUU9Ii9ob21lL3h1c2VyIgorICAgICAgICBYVVNFUj0ieHVzZXIiCisgICAgZWxzZQorICAgICAgICBYVVNFUl9IT01FPSR7Uk9PVF9IT01FfQorICAgICAgICBYVVNFUj0icm9vdCIKKyAgICBmaQorICAgIHNlZCAtaSAiczpASE9NRUA6JHtYVVNFUl9IT01FfTo7IHM6QFVTRVJAOiR7WFVTRVJ9OjsgczpAQkxBTktfQVJHU0A6JHtCTEFOS19BUkdTfToiIFwKKyAgICAgICAgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC94c2VydmVyLW5vZG0KIAogICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0Ci0gICAgICAgIGluc3RhbGwgeHNlcnZlci1ub2RtLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC94c2VydmVyLW5vZG0KICAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS94c2VydmVyLW5vZG0uc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgICAgICBpZiBbICIke1JPT1RMRVNTX1h9IiA9ICIxIiBdIDsgdGhlbgotICAgICAgICAgICAgc2VkIC1pICdzIV5IT01FPS4qIUhPTUU9L2hvbWUveHVzZXIhJyAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3hzZXJ2ZXItbm9kbQotICAgICAgICAgICAgc2VkIC1pICdzIV5Vc2VyPS4qIVVzZXI9eHVzZXIhJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS94c2VydmVyLW5vZG0uc2VydmljZQotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzZWQgLWkgJ3MhXkhPTUU9LiohSE9NRT0ke1JPT1RfSE9NRX0hJyAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3hzZXJ2ZXItbm9kbQotICAgICAgICAgICAgc2VkIC1pICcvXlVzZXI9L2QnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3hzZXJ2ZXItbm9kbS5zZXJ2aWNlCi0gICAgICAgIGZpCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3hzZXJ2ZXItbm9kbS5zZXJ2aWNlLmluICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3hzZXJ2ZXItbm9kbS5zZXJ2aWNlCisgICAgICAgIHNlZCAtaSAiczpAVVNFUkA6JHtYVVNFUn06IiAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS94c2VydmVyLW5vZG0uc2VydmljZQogICAgIGZpCiAKICAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdmluaXQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgotICAgICAgICBpZiBbICIke1JPT1RMRVNTX1h9IiA9ICIxIiBdIDsgdGhlbgotICAgICAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9YMTEKLSAgICAgICAgICAgIGluc3RhbGwgWHVzZXJuYW1lICR7RH0ke3N5c2NvbmZkaXJ9L1gxMQotICAgICAgICBmaQorICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorICAgICAgICBpbnN0YWxsIHhzZXJ2ZXItbm9kbSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKICAgICBmaQogfQogCi1SREVQRU5EU18ke1BOfSA9ICIke0BiYXNlX2NvbmRpdGlvbmFsKCdST09UTEVTU19YJywgJzEnLCAneHVzZXItYWNjb3VudCcsICcnLCBkKX0iCitSREVQRU5EU18ke1BOfSA9ICJ4aW5pdCAke0BiYXNlX2NvbmRpdGlvbmFsKCdST09UTEVTU19YJywgJzEnLCAneHVzZXItYWNjb3VudCcsICcnLCBkKX0iCiAKIElOSVRTQ1JJUFRfTkFNRSA9ICJ4c2VydmVyLW5vZG0iCiBJTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCA5IDUgLiBzdG9wIDIwIDAgMSAyIDMgNiAuIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0L1hzZXJ2ZXIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3gxMS1jb21tb24veHNlcnZlci1ub2RtLWluaXQvWHNlcnZlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZWRiZmJmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0L1hzZXJ2ZXIKQEAgLTAsMCArMSwyNSBAQAorIyEvYmluL3NoCisKKyMgVGhpcyBzY3JpcHQgaXMgb25seSBuZWVkZWQgdG8gbWFrZSBzdXJlIC9ldGMvWDExL3hzZXJ2ZXItY29tbW9uCisjIGNhbiBhZmZlY3QgWFNFUlZFUiwgQVJHUyAmIERQSTogb3RoZXJ3aXNlIHN5c3RlbWQgY291bGQganVzdCB1c2UKKyMgL2V0Yy9kZWZhdWx0L3hzZXJ2ZXItbm9kbSBhcyBFbnZpcm9ubWVudEZpbGUgYW5kIHN5c3Zpbml0IGNvdWxkIGp1c3QKKyMgc291cmNlIHRoZSBzYW1lIGZpbGUKKworLiAvZXRjL3Byb2ZpbGUKKworIyBsb2FkIGRlZmF1bHQgdmFsdWVzIGZvciBYU0VSVkVSLCBBUkdTLCBESVNQTEFZLi4uCisuIC9ldGMvZGVmYXVsdC94c2VydmVyLW5vZG0KKworIyBBbGxvdyB4c2VydmVyLWNvbW1vbiB0byBvdmVycmlkZSBBUkdTLCBYU0VSVkVSLCBEUEkKK2lmIFsgLWUgL2V0Yy9YMTEveHNlcnZlci1jb21tb24gXSA7IHRoZW4KKyAgICAuIC9ldGMvWDExL3hzZXJ2ZXItY29tbW9uCisgICAgaWYgWyAhIC1lICRYU0VSVkVSIF0gOyB0aGVuCisgICAgICAgIFhTRVJWRVI9JCh3aGljaCAkWFNFUlZFUikKKyAgICBmaQorZmkKKworaWYgWyAtbiAiJERQSSIgXSA7IHRoZW4KKyAgICBBUkdTPSIkQVJHUyAtZHBpICREUEkiCitmaQorCitleGVjIHhpbml0IC9ldGMvWDExL1hzZXNzaW9uIC0tICRYU0VSVkVSICRESVNQTEFZICRBUkdTICQqCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3gxMS1jb21tb24veHNlcnZlci1ub2RtLWluaXQvWHVzZXJuYW1lIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0L1h1c2VybmFtZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzA2MGU1ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3gxMS1jb21tb24veHNlcnZlci1ub2RtLWluaXQvWHVzZXJuYW1lCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAoteHVzZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveDExLWNvbW1vbi94c2VydmVyLW5vZG0taW5pdC94c2VydmVyLW5vZG0gYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3gxMS1jb21tb24veHNlcnZlci1ub2RtLWluaXQveHNlcnZlci1ub2RtCmluZGV4IGJmYTBhOGQuLjZjNTQ4NTUgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveDExLWNvbW1vbi94c2VydmVyLW5vZG0taW5pdC94c2VydmVyLW5vZG0KKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0L3hzZXJ2ZXItbm9kbQpAQCAtMjYsMTAgKzI2LDExIEBACiBjYXNlICIkMSIgaW4KICAgc3RhcnQpCiAgICAgICAgLiAvZXRjL3Byb2ZpbGUKLSAgICAgICB1c2VybmFtZT1yb290CisKKyAgICAgICAjZGVmYXVsdCBmb3IgVVNFUgorICAgICAgIC4gL2V0Yy9kZWZhdWx0L3hzZXJ2ZXItbm9kbQogICAgICAgIGVjaG8gIlN0YXJ0aW5nIFhzZXJ2ZXIiCi0gICAgICAgaWYgWyAtZiAvZXRjL1gxMS9YdXNlcm5hbWUgXTsgdGhlbgotICAgICAgICAgICB1c2VybmFtZT1gY2F0IC9ldGMvWDExL1h1c2VybmFtZWAKKyAgICAgICBpZiBbICIkVVNFUiIgIT0gInJvb3QiIF07IHRoZW4KICAgICAgICAgICAgIyBzZXR0aW5nIGZvciByb290bGVzcyBYCiAgICAgICAgICAgIGNobW9kIG8rdyAvdmFyL2xvZwogICAgICAgICAgICBjaG1vZCBnK3IgL2Rldi90dHlbMC0zXQpAQCAtMzgsOCArMzksOSBAQAogICAgICAgICAgICAgICAgY2htb2QgbytydyAvZGV2L2hpZHJhdyoKICAgICAgICAgICAgZmkKICAgICAgICBmaQorCiAgICAgICAgIyBVc2luZyBzdSByYXRoZXIgdGhhbiBzdWRvIGFzIGxhdGVzdCAxLjguMSBjYXVzZSBmYWlsdXJlIFtZT0NUTyAjMTIxMV0KLSAgICAgICBzdSAtbCAtYyAnL2V0Yy9YMTEvWHNlcnZlciYnICR1c2VybmFtZSAKKyAgICAgICBzdSAtbCAtYyAnL2V0Yy94c2VydmVyLW5vZG0vWHNlcnZlciAmJyAkVVNFUgogICAgICAgICMgV2FpdCBmb3IgdGhlIGRlc2t0b3AgdG8gc2F5IGl0cyBmaW5pc2hlZCBsb2FkaW5nCiAgICAgICAgIyBiZWZvcmUgbG9hZGluZyB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtCiAgICAgICAgIyBkYnVzLXdhaXQgb3JnLm1hdGNoYm94X3Byb2plY3QuZGVza3RvcCBMb2FkZWQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveDExLWNvbW1vbi94c2VydmVyLW5vZG0taW5pdC94c2VydmVyLW5vZG0uY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveDExLWNvbW1vbi94c2VydmVyLW5vZG0taW5pdC94c2VydmVyLW5vZG0uY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2MwNTgyYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3gxMS1jb21tb24veHNlcnZlci1ub2RtLWluaXQveHNlcnZlci1ub2RtLmNvbmYKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1IT01FPS9ob21lL3Jvb3QKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveDExLWNvbW1vbi94c2VydmVyLW5vZG0taW5pdC94c2VydmVyLW5vZG0uY29uZi5pbiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveDExLWNvbW1vbi94c2VydmVyLW5vZG0taW5pdC94c2VydmVyLW5vZG0uY29uZi5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTdjMjNkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0L3hzZXJ2ZXItbm9kbS5jb25mLmluCkBAIC0wLDAgKzEsNyBAQAorIyBjb21tb24gZW52aXJvbm1lbnQgZmlsZSBmb3Igc3lzdmluaXQgYW5kIHN5c3RlbWQKKworWFNFUlZFUj0vdXNyL2Jpbi9Yb3JnCitESVNQTEFZPTowCitBUkdTPSIgLWJyIC1wbiBAQkxBTktfQVJHU0AgIgorSE9NRT1ASE9NRUAKK1VTRVI9QFVTRVJACmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3gxMS1jb21tb24veHNlcnZlci1ub2RtLWluaXQveHNlcnZlci1ub2RtLnNlcnZpY2UgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3gxMS1jb21tb24veHNlcnZlci1ub2RtLWluaXQveHNlcnZlci1ub2RtLnNlcnZpY2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyZDk3OWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0L3hzZXJ2ZXItbm9kbS5zZXJ2aWNlCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotW1VuaXRdCi1EZXNjcmlwdGlvbj1Yc2VydmVyIHN0YXJ0dXAgd2l0aG91dCBhIGRpc3BsYXkgbWFuYWdlcgotCi1bU2VydmljZV0KLVVzZXI9cm9vdAotRW52aXJvbm1lbnRGaWxlPS9ldGMvZGVmYXVsdC94c2VydmVyLW5vZG0KLUV4ZWNTdGFydD0vZXRjL1gxMS9Yc2VydmVyCi0KLVtJbnN0YWxsXQotQWxpYXM9ZGlzcGxheS1tYW5hZ2VyLnNlcnZpY2UKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveDExLWNvbW1vbi94c2VydmVyLW5vZG0taW5pdC94c2VydmVyLW5vZG0uc2VydmljZS5pbiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveDExLWNvbW1vbi94c2VydmVyLW5vZG0taW5pdC94c2VydmVyLW5vZG0uc2VydmljZS5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjRhMjZmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0L3hzZXJ2ZXItbm9kbS5zZXJ2aWNlLmluCkBAIC0wLDAgKzEsMTAgQEAKK1tVbml0XQorRGVzY3JpcHRpb249WHNlcnZlciBzdGFydHVwIHdpdGhvdXQgYSBkaXNwbGF5IG1hbmFnZXIKKworW1NlcnZpY2VdCitFbnZpcm9ubWVudEZpbGU9L2V0Yy9kZWZhdWx0L3hzZXJ2ZXItbm9kbQorVXNlcj1AVVNFUkAKK0V4ZWNTdGFydD0vZXRjL3hzZXJ2ZXItbm9kbS9Yc2VydmVyCisKK1tJbnN0YWxsXQorQWxpYXM9ZGlzcGxheS1tYW5hZ2VyLnNlcnZpY2UKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveGlucHV0LWNhbGlicmF0b3IvcG9pbnRlcmNhbC14aW5wdXQvcWVtdWFsbC9wb2ludGVyY2FsLnhpbnB1dCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveGlucHV0LWNhbGlicmF0b3IvcG9pbnRlcmNhbC14aW5wdXQvcWVtdWFsbC9wb2ludGVyY2FsLnhpbnB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODE2ZDZkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94aW5wdXQtY2FsaWJyYXRvci9wb2ludGVyY2FsLXhpbnB1dC9xZW11YWxsL3BvaW50ZXJjYWwueGlucHV0CkBAIC0wLDAgKzEsMiBAQAorIyBEdW1teSBwb2ludGVyY2FsLnhpbnB1dCBmaWxlIHRvIHByZXZlbnQgeGlucHV0X2NhbGlicmF0b3IKKyMgZnJvbSBydW5uaW5nIG9uIHFlbXUgc3RhcnR1cApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94aW5wdXQtY2FsaWJyYXRvci94aW5wdXQtY2FsaWJyYXRvci9hZGQtZ2VvbWV0cnktaW5wdXQtd2hlbi1jYWxpYnJhdGluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveGlucHV0LWNhbGlicmF0b3IveGlucHV0LWNhbGlicmF0b3IvYWRkLWdlb21ldHJ5LWlucHV0LXdoZW4tY2FsaWJyYXRpbmcucGF0Y2gKaW5kZXggOTM1MTMzMS4uOWRjOTRhZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94aW5wdXQtY2FsaWJyYXRvci94aW5wdXQtY2FsaWJyYXRvci9hZGQtZ2VvbWV0cnktaW5wdXQtd2hlbi1jYWxpYnJhdGluZy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hpbnB1dC1jYWxpYnJhdG9yL3hpbnB1dC1jYWxpYnJhdG9yL2FkZC1nZW9tZXRyeS1pbnB1dC13aGVuLWNhbGlicmF0aW5nLnBhdGNoCkBAIC0xLDMzICsxLDM0IEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW25vIGxvbmdlciBtYWludGFpbmVkXQotCi1Gcm9tIDkzYWJmMjhkNjAyZGE2MzczNzZiNzhkZThjODhiN2FiNWNmMTNiNGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKb25hdGhhbiBEYXZpZCA8am9uYXRoYW4uZGF2aWRAbmkuY29tPgotRGF0ZTogTW9uLCAzMCBOb3YgMjAxNSAxMjoxMjoyMCAtMDYwMAorRnJvbSAxY2I4Mzc1OTYzMmJiMjE4NTU5YzRkMGQ2NWZmNzlmODY4YzAzZGM1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIk1heGluIEIuIEpvaG4iIDxtYXhpbi5qb2huQGludGVsLmNvbT4KK0RhdGU6IFR1ZSwgOSBBdWcgMjAxNiAxNzowMzozMSArMDMwMAogU3ViamVjdDogW1BBVENIXSBhZGQgZ2VvbWV0cnkgaW5wdXQgd2hlbiBjYWxpYnJhdGluZwogCiBTZW5kIG1vbml0b3IgZ2VvbWV0cnkgdG8geGlucHV0X2NhbGlicmF0b3Igd2hlbiBydW5uaW5nIHRoZSBzY3JpcHQKK1VwZGF0ZToKKyAgICAgICAgUmVtb3ZlIGJhc2hpc20KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtubyBsb25nZXIgbWFpbnRhaW5lZF0KIAogU2lnbmVkLW9mZi1ieTogSm9uYXRoYW4gRGF2aWQgPGpvbmF0aGFuLmRhdmlkQG5pLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgogLS0tCi0gc2NyaXB0cy94aW5wdXRfY2FsaWJyYXRvcl9wb2ludGVyY2FsLnNoIHwgNSArKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKyBzY3JpcHRzL3hpbnB1dF9jYWxpYnJhdG9yX3BvaW50ZXJjYWwuc2ggfCAzICsrLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL3NjcmlwdHMveGlucHV0X2NhbGlicmF0b3JfcG9pbnRlcmNhbC5zaCBiL3NjcmlwdHMveGlucHV0X2NhbGlicmF0b3JfcG9pbnRlcmNhbC5zaAotaW5kZXggMGFkYTdkYS4uNmEzYWRlZCAxMDA3NTUKK2luZGV4IGZjY2IxOTcuLmZlYTdjMmYgMTAwNzU1CiAtLS0gYS9zY3JpcHRzL3hpbnB1dF9jYWxpYnJhdG9yX3BvaW50ZXJjYWwuc2gKICsrKyBiL3NjcmlwdHMveGlucHV0X2NhbGlicmF0b3JfcG9pbnRlcmNhbC5zaAotQEAgLTM3LDcgKzM3LDEwIEBAIGRvbmUKLSAKLSBbICIkVVNFUiIgIT0gInJvb3QiIF0gJiYgQ0FMRklMRT0kVVNFUl9DQUxGSUxFCitAQCAtMjQsNyArMjQsOCBAQCBpZiBbIC1lICRDQUxGSUxFIF0gOyB0aGVuCisgICBmaQorIGZpCiAgCiAtQ0FMREFUQT1gJEJJTkFSWSAtLW91dHB1dC10eXBlIHhpbnB1dCAtdiB8IHRlZSAkTE9HRklMRSB8IGdyZXAgJyAgICB4aW5wdXQgc2V0JyB8IHNlZCAncy9eICAgIC8vZzsgcy8kLzsvZydgCi0rcmVhZCBSRVNPTFVUSU9OIDw8PCAkKHhyYW5kciB8IGF3ayAtRiAnW1s6c3BhY2U6XStdJyAnLyBjb25uZWN0ZWQvIFwKLSsgIHsgaWYgKCQzICE9ICJwcmltYXJ5IikgcHJpbnQgJDM7IGlmICgkMyA9PSAicHJpbWFyeSIpIHByaW50ICQ0IH0nKQotKworK1JFU09MVVRJT049JCh4cmFuZHIgfCBhd2sgLUYgJ1tbOnNwYWNlOl0rXScgJy8gY29ubmVjdGVkLyB7IGlmICgkMyAhPSAicHJpbWFyeSIpIHByaW50ICQzOyBpZiAoJDMgPT0gInByaW1hcnkiKSBwcmludCAkNCB9JykKICtDQUxEQVRBPWAkQklOQVJZIC0tZ2VvbWV0cnkgJFJFU09MVVRJT04gLS1vdXRwdXQtdHlwZSB4aW5wdXQgLXYgfCB0ZWUgJExPR0ZJTEUgfCBncmVwICcgICAgeGlucHV0IHNldCcgfCBzZWQgJ3MvXiAgICAvL2c7IHMvJC87L2cnYAogIGlmIFsgISAteiAiJENBTERBVEEiIF0gOyB0aGVuCiAgICBlY2hvICRDQUxEQVRBID4gJENBTEZJTEUKICAgIGVjaG8gIkNhbGlicmF0aW9uIGRhdGEgc3RvcmVkIGluICRDQUxGSUxFIChsb2cgaW4gJExPR0ZJTEUpIgogLS0gCi0xLjkuMQorMi40LjAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94aW5wdXQtY2FsaWJyYXRvci94aW5wdXQtY2FsaWJyYXRvcl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hpbnB1dC1jYWxpYnJhdG9yL3hpbnB1dC1jYWxpYnJhdG9yX2dpdC5iYgppbmRleCBhYzViNzBjLi41N2MzYTdhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hpbnB1dC1jYWxpYnJhdG9yL3hpbnB1dC1jYWxpYnJhdG9yX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hpbnB1dC1jYWxpYnJhdG9yL3hpbnB1dC1jYWxpYnJhdG9yX2dpdC5iYgpAQCAtMzQsNSArMzQsNSBAQAogfQogCiBGSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfS94ZGcvYXV0b3N0YXJ0IgotUkRFUEVORFNfJHtQTn0gPSAieGlucHV0IGZvcm1mYWN0b3IiCitSREVQRU5EU18ke1BOfSA9ICJ4aW5wdXQgZm9ybWZhY3RvciB4cmFuZHIiCiBSUkVDT01NRU5EU18ke1BOfSA9ICJwb2ludGVyY2FsLXhpbnB1dCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGF1dGhfMS4wLjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hhdXRoXzEuMC45LmJiCmluZGV4IGIxNzNmNGYuLjU5YjMzMjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGF1dGhfMS4wLjkuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94YXV0aF8xLjAuOS5iYgpAQCAtMTAsMyArMTAsNiBAQAogCiBTUkNfVVJJW21kNXN1bV0gPSAiN2Q2MDAzZjMyODM4ZDViNjg4ZTJjOGExMzEwODMyNzEiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTZjZTE1MjNlYjQ4YjFmOGE0ZjQyNDRmZTFjM2Q4ZTZhZjFhM2I3ZDRiMGU2MDYzNTgyNDIxYjBiNjhkYzI4ZiIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsICdpcHY2JywgJycsIGQpfSIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hob3N0XzEuMC43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94aG9zdF8xLjAuNy5iYgppbmRleCA4MjU3MzdmLi5mMjNkMjU4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hob3N0XzEuMC43LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGhvc3RfMS4wLjcuYmIKQEAgLTE1LDMgKzE1LDYgQEAKIAogU1JDX1VSSVttZDVzdW1dID0gImY1ZDQ5MDczOGIxNDhjYjdmMmZlNzYwZjQwZjkyNTE2IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkzZTYxOWVlMTU0NzFmNTc2Y2ZiMzBjNjYzZTE4ZjViYzcwYWNhNTc3YTYzZDJjMmMwM2YwMDZhNzgzN2MyOWEiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCAnaXB2NicsICcnLCBkKX0iCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94cmFuZHJfMS40LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hyYW5kcl8xLjQuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDFiZDQyMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hyYW5kcl8xLjQuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLXJlcXVpcmUgeG9yZy1hcHAtY29tbW9uLmluYwotCi1TVU1NQVJZID0gIlhSYW5kUjogWCBSZXNpemUsIFJvdGF0ZSBhbmQgUmVmbGVjdCBleHRlbnNpb24gY29tbWFuZCIKLQotREVTQ1JJUFRJT04gPSAiWHJhbmRyIGlzIHVzZWQgdG8gc2V0IHRoZSBzaXplLCBvcmllbnRhdGlvbiBhbmQvb3IgXAotcmVmbGVjdGlvbiBvZiB0aGUgb3V0cHV0cyBmb3IgYSBzY3JlZW4uIEl0IGNhbiBhbHNvIHNldCB0aGUgc2NyZWVuIFwKLXNpemUuIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZlMTYwOGJkYjMzY2Y4YzYyYTQ0MzhmN2QzNDY3OWIzIgotREVQRU5EUyArPSAibGlieHJhbmRyIGxpYnhyZW5kZXIiCi1QRSA9ICIxIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDQxZmRiOThkMmFiYzYwNTExMDhiNzA3NWQ5NDhmYzciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzE1NGFjMzQ4NmI4NjkyMzY5MmYyZDZjZGIyOTkxYTJlZTcyYmMzMmFmMmM0Mzc5YTZmMWMwNjhmMjA0YmUxYiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveHJhbmRyXzEuNS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94cmFuZHJfMS41LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWE2ODk3OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveHJhbmRyXzEuNS4wLmJiCkBAIC0wLDAgKzEsMTUgQEAKK3JlcXVpcmUgeG9yZy1hcHAtY29tbW9uLmluYworCitTVU1NQVJZID0gIlhSYW5kUjogWCBSZXNpemUsIFJvdGF0ZSBhbmQgUmVmbGVjdCBleHRlbnNpb24gY29tbWFuZCIKKworREVTQ1JJUFRJT04gPSAiWHJhbmRyIGlzIHVzZWQgdG8gc2V0IHRoZSBzaXplLCBvcmllbnRhdGlvbiBhbmQvb3IgXAorcmVmbGVjdGlvbiBvZiB0aGUgb3V0cHV0cyBmb3IgYSBzY3JlZW4uIEl0IGNhbiBhbHNvIHNldCB0aGUgc2NyZWVuIFwKK3NpemUuIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZlMTYwOGJkYjMzY2Y4YzYyYTQ0MzhmN2QzNDY3OWIzIgorREVQRU5EUyArPSAibGlieHJhbmRyIGxpYnhyZW5kZXIiCitQRSA9ICIxIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZWJmZmFjOTgwMjFiOGYxZGM3MWRhMGMxOTE4ZTliNTciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzFjZmQ0ZTFkNGQ3MDhjMDMxZDYwODAxZTUyN2FiYzliNmQzNGI4NWYyZmZhMmNhZGQyMWY3NWZmMzgxNTFjZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1ldmRldl8yLjEwLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtZXZkZXZfMi4xMC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjc3YWQyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1ldmRldl8yLjEwLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1yZXF1aXJlIHhvcmctZHJpdmVyLWlucHV0LmluYwotCi1TVU1NQVJZID0gIlguT3JnIFggc2VydmVyIC0tIGV2ZW50IGRldmljZXMgKGV2ZGV2KSBpbnB1dCBkcml2ZXIiCi0KLURFU0NSSVBUSU9OID0gImV2ZGV2IGlzIGFuIFhvcmcgaW5wdXQgZHJpdmVyIGZvciBMaW51eCdzIGdlbmVyaWMgZXZlbnQgXAotZGV2aWNlcy4gSXQgdGhlcmVmb3JlIHN1cHBvcnRzIGFsbCBpbnB1dCBkZXZpY2VzIHRoYXQgdGhlIGtlcm5lbCBrbm93cyBcCi1hYm91dCwgaW5jbHVkaW5nIG1vc3QgbWljZSBhbmQga2V5Ym9hcmRzLiBcCi1cCi1UaGUgZXZkZXYgZHJpdmVyIGNhbiBzZXJ2ZSBhcyBib3RoIGEgcG9pbnRlciBhbmQgYSBrZXlib2FyZCBpbnB1dCBcCi1kZXZpY2UsIGFuZCBtYXkgYmUgdXNlZCBhcyBib3RoIHRoZSBjb3JlIGtleWJvYXJkIGFuZCB0aGUgY29yZSBwb2ludGVyLiBcCi1NdWx0aXBsZSBpbnB1dCBkZXZpY2VzIGFyZSBzdXBwb3J0ZWQgYnkgbXVsdGlwbGUgaW5zdGFuY2VzIG9mIHRoaXMgXAotZHJpdmVyLCB3aXRoIG9uZSBMb2FkIGRpcmVjdGl2ZSBmb3IgZXZkZXYgaW4gdGhlIE1vZHVsZSBzZWN0aW9uIG9mIHlvdXIgXAoteG9yZy5jb25mIGZvciBlYWNoIGlucHV0IGRldmljZSB0aGF0IHdpbGwgdXNlIHRoaXMgZHJpdmVyLiAiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZlZmUzM2IxY2YwY2FjYmEwZTcyZTNiMGZhMGYwZTE2IgotCi1ERVBFTkRTICs9ICJtdGRldiBsaWJldmRldiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjk2ZDg5ZDk0MDZhMDJmNWUzNmJkYWE0ZWRkOWEyNDNhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImFmOWMyYjQ3ZjViMjcyYWU1NmI0NWRhNmJkODQ2MTBmYzlhM2Q4MGE0YjMyYzgyMTU4NDJhMzlkODYyZGUwMTciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtZXZkZXZfMi4xMC4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LWV2ZGV2XzIuMTAuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODFjM2VjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LWV2ZGV2XzIuMTAuMy5iYgpAQCAtMCwwICsxLDIwIEBACityZXF1aXJlIHhvcmctZHJpdmVyLWlucHV0LmluYworCitTVU1NQVJZID0gIlguT3JnIFggc2VydmVyIC0tIGV2ZW50IGRldmljZXMgKGV2ZGV2KSBpbnB1dCBkcml2ZXIiCisKK0RFU0NSSVBUSU9OID0gImV2ZGV2IGlzIGFuIFhvcmcgaW5wdXQgZHJpdmVyIGZvciBMaW51eCdzIGdlbmVyaWMgZXZlbnQgXAorZGV2aWNlcy4gSXQgdGhlcmVmb3JlIHN1cHBvcnRzIGFsbCBpbnB1dCBkZXZpY2VzIHRoYXQgdGhlIGtlcm5lbCBrbm93cyBcCithYm91dCwgaW5jbHVkaW5nIG1vc3QgbWljZSBhbmQga2V5Ym9hcmRzLiBcCitcCitUaGUgZXZkZXYgZHJpdmVyIGNhbiBzZXJ2ZSBhcyBib3RoIGEgcG9pbnRlciBhbmQgYSBrZXlib2FyZCBpbnB1dCBcCitkZXZpY2UsIGFuZCBtYXkgYmUgdXNlZCBhcyBib3RoIHRoZSBjb3JlIGtleWJvYXJkIGFuZCB0aGUgY29yZSBwb2ludGVyLiBcCitNdWx0aXBsZSBpbnB1dCBkZXZpY2VzIGFyZSBzdXBwb3J0ZWQgYnkgbXVsdGlwbGUgaW5zdGFuY2VzIG9mIHRoaXMgXAorZHJpdmVyLCB3aXRoIG9uZSBMb2FkIGRpcmVjdGl2ZSBmb3IgZXZkZXYgaW4gdGhlIE1vZHVsZSBzZWN0aW9uIG9mIHlvdXIgXAoreG9yZy5jb25mIGZvciBlYWNoIGlucHV0IGRldmljZSB0aGF0IHdpbGwgdXNlIHRoaXMgZHJpdmVyLiAiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZlZmUzM2IxY2YwY2FjYmEwZTcyZTNiMGZhMGYwZTE2IgorCitERVBFTkRTICs9ICJtdGRldiBsaWJldmRldiIKKworU1JDX1VSSVttZDVzdW1dID0gImFhMzM2M2NlNTA2MWQwYzRkMWU3ZjcwMTliOTk3MTZkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVhYTIxYmE0YmU4ZGY5MjdlNTY3NmE5OWM3ZjRmMDM0M2FiYzA4OWY1NDUxYjdlNzNlMzk1MzZmMjliMzMyYTIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtbGliaW5wdXRfMC4xNi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LWxpYmlucHV0XzAuMTYuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDI1MmJhZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtbGliaW5wdXRfMC4xNi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotcmVxdWlyZSB4b3JnLWRyaXZlci1pbnB1dC5pbmMKLQotU1VNTUFSWSA9ICJHZW5lcmljIGlucHV0IGRyaXZlciBmb3IgdGhlIFguT3JnIHNlcnZlciBiYXNlZCBvbiBsaWJpbnB1dCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVlNmIyMGVhMmVmOTRhOTk4MTQ1ZjBlYTNmNzg4ZWUwIgotCi1ERVBFTkRTICs9ICJsaWJpbnB1dCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjJjOGNiNTIwZjg4ZGE3YmFmYWNlZWJjMGIzNGVhMWQ0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImZkYWRlNTMxZTkxZTc5YWNmNmRjZThhYzU1ZmE0ZjY1YWJlM2YxMzU4YzVkM2Q3NzdhZTQ4ZGJjNzRiNzZmNDkiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L1gxMS94b3JnLmNvbmYuZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1saWJpbnB1dF8wLjE5LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtbGliaW5wdXRfMC4xOS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlNWM0NzEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtbGliaW5wdXRfMC4xOS4wLmJiCkBAIC0wLDAgKzEsMTEgQEAKK3JlcXVpcmUgeG9yZy1kcml2ZXItaW5wdXQuaW5jCisKK1NVTU1BUlkgPSAiR2VuZXJpYyBpbnB1dCBkcml2ZXIgZm9yIHRoZSBYLk9yZyBzZXJ2ZXIgYmFzZWQgb24gbGliaW5wdXQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZTZiMjBlYTJlZjk0YTk5ODE0NWYwZWEzZjc4OGVlMCIKKworREVQRU5EUyArPSAibGliaW5wdXQiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1MmMzOGIxMzY5NzY0MjQzYmZjZjZlYWQxZTRjNmQzMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2YzVkMzBkYzdjOGI4YWUzNDI2MTM0MGUxZGM5Y2JiOGVmNDM1MDc4ZTA4NGI4ZWY1MDc1MjdhOGEyMWFmNDc3IgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9YMTEveG9yZy5jb25mLmQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtdm1tb3VzZV8xMy4xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtdm1tb3VzZV8xMy4xLjAuYmIKaW5kZXggODYxNWI0OC4uOTJhMWIyNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LXZtbW91c2VfMTMuMS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC12bW1vdXNlXzEzLjEuMC5iYgpAQCAtMjMsNCArMjMsNCBAQAogCiBFWFRSQV9PRUNPTkYgPSAiLS13aXRoLXVkZXYtcnVsZXMtZGlyPSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kIgogCi1GSUxFU18ke1BOfSArPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQvICR7ZGF0YWRpcn0vWDExL3hvcmcuY29uZi5kIgorRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vWDExL3hvcmcuY29uZi5kIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsLzAwMDEtZ2VuOC1GaXgtdGhlLVlVVi1SR0Itc2hhZGVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsLzAwMDEtZ2VuOC1GaXgtdGhlLVlVVi1SR0Itc2hhZGVyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNTc2MjE5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbC8wMDAxLWdlbjgtRml4LXRoZS1ZVVYtUkdCLXNoYWRlci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLUZyb20gYzQzNjE3YjczOWUzNTgwNjQzOTY5MTJjN2E3YTgwMjhjYTkxZDIwMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9WaWxsZT0yMFN5cmo9QzM9QTRsPUMzPUE0Pz0gPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgotRGF0ZTogVGh1LCAxNiBBcHIgMjAxNSAyMDo0MDozOSArMDMwMAotU3ViamVjdDogW1BBVENIXSBnZW44OiBGaXggdGhlIFlVVi0+UkdCIHNoYWRlcgotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1Vc2UgdGhlIGNvcnJlY3QgcmVnaXN0ZXIgKFluXzAxKSB3aXRoIGZpcnN0IGhhbGYgb2YgdGhlCi1ZIHNhbXBsZXMgaW5zdGVhZCBvZiB1c2luZyB0aGUgcmVnaXN0ZXIgKFluXzIzKSB3aXRoIHRoZQotc2Vjb25kIGhhbGYgdHdpY2Ugd2hlbiBjb21wdXRpbmcgdGhlIGdyZWVuIGNoYW5uZWwuCi0KLUFsc28gdXNlIHRoZSBZbl8wMSByZWdpc3RlciBuYW1lIGluc3RlYWQgb2YgWW4gZm9yIHRoZSByZWQKLWNoYW5uZWwgYXMgd2VsbCwganVzdCBmb3IgYSBiaXQgb2YgZXh0cmEgY29uc2lzdGVuY3kuCi0KLUJ1Z3ppbGxhOiBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD04OTgwNwotU2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KLVRlc3RlZC1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFNhdWwgV29sZCA8c2d3QGxpbnV4LmludGVsLmNvbT4KLQotLS0tCi0gc3JjL3JlbmRlcl9wcm9ncmFtL2V4YV93bV95dXZfcmdiLmc4YSB8IDQgKystLQotIHNyYy9yZW5kZXJfcHJvZ3JhbS9leGFfd21feXV2X3JnYi5nOGIgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvcmVuZGVyX3Byb2dyYW0vZXhhX3dtX3l1dl9yZ2IuZzhhIGIvc3JjL3JlbmRlcl9wcm9ncmFtL2V4YV93bV95dXZfcmdiLmc4YQotaW5kZXggN2RlZjA5My4uMzQ5NzNiYSAxMDA2NDQKLS0tLSBhL3NyYy9yZW5kZXJfcHJvZ3JhbS9leGFfd21feXV2X3JnYi5nOGEKLSsrKyBiL3NyYy9yZW5kZXJfcHJvZ3JhbS9leGFfd21feXV2X3JnYi5nOGEKLUBAIC03Niw3ICs3Niw3IEBAIGFkZCAoMTYpICAgIENibjwxPkYJCUNiPDgsOCwxPkYJLTAuNTAxOTYxRiAgeyBjb21wciBhbGlnbjEgfTsKLSAgICAgLyogCi0gICAgICAqIFIgPSBZICsgQ3IgKiAxLjU5NgotICAgICAgKi8KLS1tb3YgKDgpICAgIGFjYzA8MT5GCQlZbjw4LDgsMT5GCQkgICAgeyBjb21wciBhbGlnbjEgfTsKLSttb3YgKDgpICAgIGFjYzA8MT5GCQlZbl8wMTw4LDgsMT5GCQkgICAgeyBjb21wciBhbGlnbjEgfTsKLSBtYWMuc2F0KDgpIHNyY19zYW1wbGVfcl8wMTwxPkYJQ3JuXzAxPDgsOCwxPkYJMS41OTZGCSAgICB7IGNvbXByIGFsaWduMSB9OwotICAgICAgCi0gbW92ICg4KSAgICBhY2MwPDE+RgkJWW5fMjM8OCw4LDE+RgkJICAgIHsgY29tcHIgYWxpZ24xIH07Ci1AQCAtODQsNyArODQsNyBAQCBtYWMuc2F0KDgpIHNyY19zYW1wbGVfcl8yMzwxPkYJQ3JuXzIzPDgsOCwxPkYJMS41OTZGCSAgICB7IGNvbXByIGFsaWduMSB9OwotICAgICAvKgotICAgICAgKiBHID0gQ3JuICogLTAuODEzICsgQ2JuICogLTAuMzkyICsgWQotICAgICAgKi8KLS1tb3YgKDgpICAgIGFjYzA8MT5GCQlZbl8yMzw4LDgsMT5GCQkgICAgeyBjb21wciBhbGlnbjEgfTsKLSttb3YgKDgpICAgIGFjYzA8MT5GCQlZbl8wMTw4LDgsMT5GCQkgICAgeyBjb21wciBhbGlnbjEgfTsKLSBtYWMgKDgpICAgIGFjYzA8MT5GCQlDcm5fMDE8OCw4LDE+RiAgICAJLTAuODEzRgkgICAgeyBjb21wciBhbGlnbjEgfTsKLSBtYWMuc2F0KDgpIHNyY19zYW1wbGVfZ18wMTwxPkYJQ2JuXzAxPDgsOCwxPkYgICAgCS0wLjM5MkYJICAgIHsgY29tcHIgYWxpZ24xIH07Ci0gCi1kaWZmIC0tZ2l0IGEvc3JjL3JlbmRlcl9wcm9ncmFtL2V4YV93bV95dXZfcmdiLmc4YiBiL3NyYy9yZW5kZXJfcHJvZ3JhbS9leGFfd21feXV2X3JnYi5nOGIKLWluZGV4IDQ0OTQ5NTMuLjJjZDZmYzQgMTAwNjQ0Ci0tLS0gYS9zcmMvcmVuZGVyX3Byb2dyYW0vZXhhX3dtX3l1dl9yZ2IuZzhiCi0rKysgYi9zcmMvcmVuZGVyX3Byb2dyYW0vZXhhX3dtX3l1dl9yZ2IuZzhiCi1AQCAtNiw3ICs2LDcgQEAKLSAgICB7IDB4ODA2MDAwNDgsIDB4MjFjMDNhZTgsIDB4M2U4ZDAyYzAsIDB4M2ZjYzQ5YmEgfSwKLSAgICB7IDB4MDA2MDAwMDEsIDB4MjQwMDNhZTAsIDB4MDA4ZDAzMjAsIDB4MDAwMDAwMDAgfSwKLSAgICB7IDB4ODA2MDAwNDgsIDB4MjFlMDNhZTgsIDB4M2U4ZDAyZTAsIDB4M2ZjYzQ5YmEgfSwKLS0gICB7IDB4MDA2MDAwMDEsIDB4MjQwMDNhZTAsIDB4MDA4ZDAzMjAsIDB4MDAwMDAwMDAgfSwKLSsgICB7IDB4MDA2MDAwMDEsIDB4MjQwMDNhZTAsIDB4MDA4ZDAzMDAsIDB4MDAwMDAwMDAgfSwKLSAgICB7IDB4MDA2MDAwNDgsIDB4MjQwMDNhZTAsIDB4M2U4ZDAyYzAsIDB4YmY1MDIwYzUgfSwKLSAgICB7IDB4ODA2MDAwNDgsIDB4MjIwMDNhZTgsIDB4M2U4ZDAzNDAsIDB4YmVjOGI0MzkgfSwKLSAgICB7IDB4MDA2MDAwMDEsIDB4MjQwMDNhZTAsIDB4MDA4ZDAzMjAsIDB4MDAwMDAwMDAgfSwKLS0tIAotMi41LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsLzAwMDEtdXhhLWZpeC10aGUtY2FsbC10by1QaXhtYXBTeW5jRGlydHlIZWxwZXItYnJva2VuLWJ5LS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbC8wMDAxLXV4YS1maXgtdGhlLWNhbGwtdG8tUGl4bWFwU3luY0RpcnR5SGVscGVyLWJyb2tlbi1ieS0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5OTI0YmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsLzAwMDEtdXhhLWZpeC10aGUtY2FsbC10by1QaXhtYXBTeW5jRGlydHlIZWxwZXItYnJva2VuLWJ5LS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gMmM1MDYzOTM4Y2M4MDlmNjI0ZTU2ZWZkNDY3MzA0MWZhODE0MWU4MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcnRpbiBQZXJlcyA8bWFydGluLnBlcmVzQGxpbnV4LmludGVsLmNvbT4KLURhdGU6IFRodSwgOSBKdWwgMjAxNSAxMToyNjozOCArMDMwMAotU3ViamVjdDogW1BBVENIXSB1eGE6IGZpeCB0aGUgY2FsbCB0byBQaXhtYXBTeW5jRGlydHlIZWxwZXIsIGJyb2tlbiBieQotIHhzZXJ2ZXIncyA5MGRiNWVkCi0KLVtpY2tsZTogc3dpdGNoIHRvIEhBU19ESVJUWVRSQUNLSU5HX1JPVEFUSU9OIGFzIHN1Z2dlc3RlZCBieSBEYXZlIEFpcmxpZV0KLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBQZXJlcyA8bWFydGluLnBlcmVzQGxpbnV4LmludGVsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogU2F1bCBXb2xkIDxzZ3dAbGludXguaW50ZWwuY29tPgotLS0tCi0gc3JjL2NvbXBhdC1hcGkuaCB8IDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy9jb21wYXQtYXBpLmggYi9zcmMvY29tcGF0LWFwaS5oCi1pbmRleCBhYTkzYmVlLi4yOTNlOWQ3IDEwMDY0NAotLS0tIGEvc3JjL2NvbXBhdC1hcGkuaAotKysrIGIvc3JjL2NvbXBhdC1hcGkuaAotQEAgLTI0NywzICsyNDcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgRnJlZVBpeG1hcChQaXhtYXBQdHIgcGl4bWFwKQotICNlbmRpZgotIAotICNlbmRpZgotKwotKyNpZiBIQVNfRElSVFlUUkFDS0lOR19ST1RBVElPTgotKyNkZWZpbmUgUGl4bWFwU3luY0RpcnR5SGVscGVyKGQsIGRkKSBQaXhtYXBTeW5jRGlydHlIZWxwZXIoZCkKLSsjZW5kaWYKLS0tIAotMi41LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsL2Rpc2FibGUteDExLWRyaTMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8taW50ZWwvZGlzYWJsZS14MTEtZHJpMy5wYXRjaAppbmRleCBkZGE1MDhkLi4zZGRkZDMzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8taW50ZWwvZGlzYWJsZS14MTEtZHJpMy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8taW50ZWwvZGlzYWJsZS14MTEtZHJpMy5wYXRjaApAQCAtMTIsNiArMTIsNiBAQAogaW5kZXggYmQ2NTRmMy4uNzhhMGUwZCAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMjUxICsyNTEgQEAgZmkKLS1QS0dfQ0hFQ0tfTU9EVUxFUyhYMTFfRFJJMywgW3hjYi1kcmkzIHhjYi1zeW5jIHhjYi1wcmVzZW50IHgxMS14Y2IgeHNobWZlbmNlIHgxMSB4cmVuZGVyIHhleHQgbGliZHJtXSwgW3gxMV9kcmkzPSJ5ZXMiXSwgW3gxMV9kcmkzPSJubyJdKQotKyNQS0dfQ0hFQ0tfTU9EVUxFUyhYMTFfRFJJMywgW3hjYi1kcmkzIHhjYi1zeW5jIHhjYi1wcmVzZW50IHgxMS14Y2IgeHNobWZlbmNlIHgxMSB4cmVuZGVyIHhleHQgbGliZHJtXSwgW3gxMV9kcmkzPSJ5ZXMiXSwgW3gxMV9kcmkzPSJubyJdKQorQEAgLTI3OSArMjc5IEBAIGZpCistUEtHX0NIRUNLX01PRFVMRVMoWDExX0RSSTMsIFt4Y2ItZHJpMyB4Y2Itc3luYyB4Y2IteGZpeGVzIHhjYi1wcmVzZW50IHgxMS14Y2IgeHNobWZlbmNlIHgxMSB4Y29tcG9zaXRlIHhkYW1hZ2UgeHJlbmRlciB4cmFuZHIgeHhmODZ2bSB4ZXh0IGxpYmRybV0sIFt4MTFfZHJpMz0ieWVzIl0sIFt4MTFfZHJpMz0ibm8iXSkKKysjUEtHX0NIRUNLX01PRFVMRVMoWDExX0RSSTMsIFt4Y2ItZHJpMyB4Y2Itc3luYyB4Y2IteGZpeGVzIHhjYi1wcmVzZW50IHgxMS14Y2IgeHNobWZlbmNlIHgxMSB4Y29tcG9zaXRlIHhkYW1hZ2UgeHJlbmRlciB4cmFuZHIgeHhmODZ2bSB4ZXh0IGxpYmRybV0sIFt4MTFfZHJpMz0ieWVzIl0sIFt4MTFfZHJpMz0ibm8iXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbC9zbmEtUHJvdGVjdC1hZ2FpbnN0LUFCSS1icmVha2FnZS1pbi1yZWNlbnQtdmVyc2lvbnMtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsL3NuYS1Qcm90ZWN0LWFnYWluc3QtQUJJLWJyZWFrYWdlLWluLXJlY2VudC12ZXJzaW9ucy0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4OWQ1MmUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsL3NuYS1Qcm90ZWN0LWFnYWluc3QtQUJJLWJyZWFrYWdlLWluLXJlY2VudC12ZXJzaW9ucy0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi1Gcm9tIDdmZTJiMjk0ODY1MjQ0M2ZmNDNkOTA3ODU1YmQ3YTA1MWQ1NGQzMDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLURhdGU6IFRodSwgMTkgTWFyIDIwMTUgMjM6MTQ6MTcgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gc25hOiBQcm90ZWN0IGFnYWluc3QgQUJJIGJyZWFrYWdlIGluIHJlY2VudCB2ZXJzaW9ucyBvZgotIGxpYmRybQotCi1jb21taXQgN2ZlMmIyOTQ4NjUyNDQzZmY0M2Q5MDc4NTViZDdhMDUxZDU0ZDMwOSB1cHN0cmVhbS4KLQotU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KLQotZGlmZiAtLWdpdCBhL3NyYy9zbmEva2dlbS5jIGIvc3JjL3NuYS9rZ2VtLmMKLWluZGV4IDExZjA4MjhmMmJiYy4uNmYxNmNiYWM4N2YyIDEwMDY0NAotLS0tIGEvc3JjL3NuYS9rZ2VtLmMKLSsrKyBiL3NyYy9zbmEva2dlbS5jCi1AQCAtMTgyLDYgKzE4MiwxNSBAQCBzdHJ1Y3QgbG9jYWxfaTkxNV9nZW1fY2FjaGluZyB7Ci0gI2RlZmluZSBMT0NBTF9JT0NUTF9JOTE1X0dFTV9TRVRfQ0FDSElORyBEUk1fSU9XKERSTV9DT01NQU5EX0JBU0UgKyBMT0NBTF9JOTE1X0dFTV9TRVRfQ0FDSElORywgc3RydWN0IGxvY2FsX2k5MTVfZ2VtX2NhY2hpbmcpCi0gI2RlZmluZSBMT0NBTF9JT0NUTF9JOTE1X0dFTV9HRVRfQ0FDSElORyBEUk1fSU9XKERSTV9DT01NQU5EX0JBU0UgKyBMT0NBTF9JOTE1X0dFTV9HRVRfQ0FDSElORywgc3RydWN0IGxvY2FsX2k5MTVfZ2VtX2NhY2hpbmcpCi0gCi0rc3RydWN0IGxvY2FsX2k5MTVfZ2VtX21tYXAgewotKwl1aW50MzJfdCBoYW5kbGU7Ci0rCXVpbnQzMl90IHBhZDsKLSsJdWludDY0X3Qgb2Zmc2V0OwotKwl1aW50NjRfdCBzaXplOwotKwl1aW50NjRfdCBhZGRyX3B0cjsKLSt9OwotKyNkZWZpbmUgTE9DQUxfSU9DVExfSTkxNV9HRU1fTU1BUCBEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX01NQVAsIHN0cnVjdCBsb2NhbF9pOTE1X2dlbV9tbWFwKQotKwotIHN0cnVjdCBsb2NhbF9pOTE1X2dlbV9tbWFwMiB7Ci0gCXVpbnQzMl90IGhhbmRsZTsKLSAJdWludDMyX3QgcGFkOwotQEAgLTUxNCwxNSArNTIzLDE1IEBAIHJldHJ5X3djOgotIAotIHN0YXRpYyB2b2lkICpfX2tnZW1fYm9fbWFwX19jcHUoc3RydWN0IGtnZW0gKmtnZW0sIHN0cnVjdCBrZ2VtX2JvICpibykKLSB7Ci0tCXN0cnVjdCBkcm1faTkxNV9nZW1fbW1hcCBtbWFwX2FyZzsKLSsJc3RydWN0IGxvY2FsX2k5MTVfZ2VtX21tYXAgYXJnOwotIAlpbnQgZXJyOwotIAotIHJldHJ5OgotLQlWR19DTEVBUihtbWFwX2FyZyk7Ci0tCW1tYXBfYXJnLmhhbmRsZSA9IGJvLT5oYW5kbGU7Ci0tCW1tYXBfYXJnLm9mZnNldCA9IDA7Ci0tCW1tYXBfYXJnLnNpemUgPSBieXRlcyhibyk7Ci0tCWlmICgoZXJyID0gZG9faW9jdGwoa2dlbS0+ZmQsIERSTV9JT0NUTF9JOTE1X0dFTV9NTUFQLCAmbW1hcF9hcmcpKSkgewotKwlWR19DTEVBUihhcmcpOwotKwlhcmcuaGFuZGxlID0gYm8tPmhhbmRsZTsKLSsJYXJnLm9mZnNldCA9IDA7Ci0rCWFyZy5zaXplID0gYnl0ZXMoYm8pOwotKwlpZiAoKGVyciA9IGRvX2lvY3RsKGtnZW0tPmZkLCBMT0NBTF9JT0NUTF9JOTE1X0dFTV9NTUFQLCAmYXJnKSkpIHsKLSAJCWFzc2VydChlcnIgIT0gRUlOVkFMKTsKLSAKLSAJCWlmIChfX2tnZW1fdGhyb3R0bGVfcmV0aXJlKGtnZW0sIDApKQotQEAgLTUzNiwxMCArNTQ1LDEwIEBAIHJldHJ5OgotIAkJcmV0dXJuIE5VTEw7Ci0gCX0KLSAKLS0JVkcoVkFMR1JJTkRfTUFLRV9NRU1fREVGSU5FRChtbWFwX2FyZy5hZGRyX3B0ciwgYnl0ZXMoYm8pKSk7Ci0rCVZHKFZBTEdSSU5EX01BS0VfTUVNX0RFRklORUQoYXJnLmFkZHJfcHRyLCBieXRlcyhibykpKTsKLSAKLSAJREJHKCgiJXM6IGNhY2hpbmcgQ1BVIHZtYSBmb3IgJWRcbiIsIF9fRlVOQ1RJT05fXywgYm8tPmhhbmRsZSkpOwotLQlyZXR1cm4gYm8tPm1hcF9fY3B1ID0gKHZvaWQgKikodWludHB0cl90KW1tYXBfYXJnLmFkZHJfcHRyOwotKwlyZXR1cm4gYm8tPm1hcF9fY3B1ID0gKHZvaWQgKikodWludHB0cl90KWFyZy5hZGRyX3B0cjsKLSB9Ci0gCi0gc3RhdGljIGludCBnZW1fd3JpdGUoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsCi0tLSAKLTIuNC40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbC91ZGV2LWZzdGF0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsL3VkZXYtZnN0YXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlNjc1ZWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsL3VkZXYtZnN0YXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Gcm9tIDEyYWY4YTU3NWQxNTE4ZDQwNDE2ZjgzMTk1MDQ5MTU3YzNhMDYyYTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLURhdGU6IFR1ZSwgMjQgRmViIDIwMTUgMTU6MjU6NDAgKzAwMDAKLVN1YmplY3Q6IHNuYTogdWRldiBpbnRlZ3JhdGlvbiBkZXBlbmRzIG9uIGZzdGF0IGFuZCBzeXMvc3RhdC5oCi0KLXNyYy9zbmEvc25hX2RyaXZlci5jOiBJbiBmdW5jdGlvbiAnc25hX2hhbmRsZV91ZXZlbnRzJzoKLXNyYy9zbmEvc25hX2RyaXZlci5jOjc1OToyOiBlcnJvcjogaW1wbGljaXQgZGVjbGFyYXRpb24gb2YgZnVuY3Rpb24gJ2ZzdGF0JyBbLVdlcnJvcj1pbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlvbl0KLQotQWxzbyB0YWtlIHRoZSBvcHBvcnR1bml0eSB0byBpbmNsdWRlIHVkZXYgc3VwcG9ydCBpbiB0aGUgY29uZmlndXJlCi1zdW1tYXJ5LgotCi1TaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNzQ3NmUyYi4uZGUzYTRiMyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTk3LDExICsxOTcsMTUgQEAgQUNfQVJHX0VOQUJMRSh1ZGV2LAotIAotIGlmIHRlc3QgIngkVURFViIgIT0gInhubyI7IHRoZW4KLSAJUEtHX0NIRUNLX01PRFVMRVMoVURFViwgW2xpYnVkZXZdLCBbdWRldj0ieWVzIl0sIFt1ZGV2PSJubyJdKQotKwlBQ19DSEVDS19IRUFERVJTKFtzeXMvc3RhdC5oXSwgW10sIFt1ZGV2PSJubyJdKQotIAlpZiB0ZXN0ICJ4JFVERVYiID0gInh5ZXMiIC1hICJ4JHVkZXYiICE9ICJ4eWVzIjsgdGhlbgotIAkJQUNfTVNHX0VSUk9SKFt1ZGV2IHN1cHBvcnQgcmVxdWVzdGVkIGJ1dCBub3QgZm91bmQgKGxpYnVkZXYpXSkKLSAJZmkKLSAJaWYgdGVzdCAieCR1ZGV2IiA9ICJ4eWVzIjsgdGhlbgotIAkJQUNfREVGSU5FKEhBVkVfVURFViwxLFtFbmFibGUgdWRldi1iYXNlZCBtb25pdG9yIGhvdHBsdWcgZGV0ZWN0aW9uXSkKLSsJCXVkZXZfbXNnPSIgeWVzIgotKwllbHNlCi0rCQl1ZGV2X21zZz0iIG5vIgotIAlmaQotIGZpCi0gCi1AQCAtOTExLDYgKzkxNSw3IEBAIGVjaG8gIiAgU3VwcG9ydCBmb3IgS2VybmVsIE1vZGUgU2V0dGluZz8gJEtNUyIKLSBlY2hvICIgIFN1cHBvcnQgZm9yIGxlZ2FjeSBVc2VyIE1vZGUgU2V0dGluZyAoZm9yIGk4MTApPyAkVU1TIgotIGVjaG8gIiAgU3VwcG9ydCBmb3IgRGlyZWN0IFJlbmRlcmluZyBJbmZyYXN0cnVjdHVyZTokZHJpX21zZyIKLSBlY2hvICIgIFN1cHBvcnQgZm9yIFh2IG1vdGlvbiBjb21wZW5zYXRpb24gKFh2TUMgYW5kIGxpYlh2TUMpOiR4dm1jX21zZyIKLStlY2hvICIgIFN1cHBvcnQgZm9yIGRpc3BsYXkgaG90cGx1ZyBub3RpZmljYXRpb25zICh1ZGV2KTokdWRldl9tc2ciCi0gZWNobyAiICBCdWlsZCBhZGRpdGlvbmFsIHRvb2xzIGFuZCB1dGlsaXRpZXM/JHRvb2xzX21zZyIKLSBpZiB0ZXN0IC1uICIkeHBfbXNnIjsgdGhlbgotIGVjaG8gIiAgRXhwZXJpbWVudGFsIHN1cHBvcnQ6JHhwX21zZyIKLWRpZmYgLS1naXQgYS9zcmMvc25hL3NuYV9kcml2ZXIuYyBiL3NyYy9zbmEvc25hX2RyaXZlci5jCi1pbmRleCA4YzBkMGI1Li5iYzIwZWYwIDEwMDY0NAotLS0tIGEvc3JjL3NuYS9zbmFfZHJpdmVyLmMKLSsrKyBiL3NyYy9zbmEvc25hX2RyaXZlci5jCi1AQCAtNzQwLDYgKzc0MCw4IEBAIHNuYV93YWtldXBfaGFuZGxlcihXQUtFVVBIQU5ETEVSX0FSR1NfREVDTCkKLSB9Ci0gCi0gI2lmIEhBVkVfVURFVgotKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgotKwotIHN0YXRpYyB2b2lkCi0gc25hX2hhbmRsZV91ZXZlbnRzKGludCBmZCwgdm9pZCAqY2xvc3VyZSkKLSB7Ci0tLSAKLWNnaXQgdjAuMTAuMgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsXzIuOTkuOTE3LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsXzIuOTkuOTE3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzViNDRmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbF8yLjk5LjkxNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLXJlcXVpcmUgeG9yZy1kcml2ZXItdmlkZW8uaW5jCi0KLVNVTU1BUlkgPSAiWC5PcmcgWCBzZXJ2ZXIgLS0gSW50ZWwgaW50ZWdyYXRlZCBncmFwaGljcyBjaGlwc2V0cyBkcml2ZXIiCi0KLURFU0NSSVBUSU9OID0gImludGVsIGlzIGFuIFhvcmcgZHJpdmVyIGZvciBJbnRlbCBpbnRlZ3JhdGVkIGdyYXBoaWNzIFwKLWNoaXBzZXRzLiBUaGUgZHJpdmVyIHN1cHBvcnRzIGRlcHRocyA4LCAxNSwgMTYgYW5kIDI0LiBPbiBzb21lIGNoaXBzZXRzLCBcCi10aGUgZHJpdmVyIHN1cHBvcnRzIGhhcmR3YXJlIGFjY2VsZXJhdGVkIDNEIHZpYSB0aGUgRGlyZWN0IFJlbmRlcmluZyBcCi1JbmZyYXN0cnVjdHVyZSAoRFJJKS4iCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTg3MzBhZDU4ZDExYzdiYmFkOWE3MDY2ZDY5Zjc4MDhlIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vZGlzYWJsZS14MTEtZHJpMy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vYWx3YXlzX2luY2x1ZGVfeG9yZ19zZXJ2ZXIuaC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vc25hLVByb3RlY3QtYWdhaW5zdC1BQkktYnJlYWthZ2UtaW4tcmVjZW50LXZlcnNpb25zLS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vdWRldi1mc3RhdC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS11eGEtZml4LXRoZS1jYWxsLXRvLVBpeG1hcFN5bmNEaXJ0eUhlbHBlci1icm9rZW4tYnktLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWdlbjgtRml4LXRoZS1ZVVYtUkdCLXNoYWRlci5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImZhMTk2YTY2ZTUyYzBjNjI0ZmU1ZDM1MGFmN2E1ZTdiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAwYjc4MWVlYTA1NTU4MjgyMGExMjNjNDdiNjI0MTFiZGY2YWFiZjRmMDNkYzA1NjhmYWVjNTVmYWY5NjY3YzkiCi0KLURFUEVORFMgKz0gInZpcnR1YWwvbGlieDExIGRybSBsaWJwY2lhY2Nlc3MgcGl4bWFuIgotCi1QQUNLQUdFQ09ORklHID8/PSAieHZtYyBzbmEgdWRldiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsICdkcmkgZHJpMSBkcmkyJywgJycsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1tkcmldID0gIi0tZW5hYmxlLWRyaSwtLWRpc2FibGUtZHJpIgotUEFDS0FHRUNPTkZJR1tkcmkxXSA9ICItLWVuYWJsZS1kcmkxLC0tZGlzYWJsZS1kcmkxLHhmODZkcmlwcm90byIKLVBBQ0tBR0VDT05GSUdbZHJpMl0gPSAiLS1lbmFibGUtZHJpMiwtLWRpc2FibGUtZHJpMixkcmkycHJvdG8iCi1QQUNLQUdFQ09ORklHW2RyaTNdID0gIi0tZW5hYmxlLWRyaTMsLS1kaXNhYmxlLWRyaTMsZHJpM3Byb3RvIgotUEFDS0FHRUNPTkZJR1tzbmFdID0gIi0tZW5hYmxlLXNuYSwtLWRpc2FibGUtc25hIgotUEFDS0FHRUNPTkZJR1t1eGFdID0gIi0tZW5hYmxlLXV4YSwtLWRpc2FibGUtdXhhIgotUEFDS0FHRUNPTkZJR1t1ZGV2XSA9ICItLWVuYWJsZS11ZGV2LC0tZGlzYWJsZS11ZGV2LHVkZXYiCi1QQUNLQUdFQ09ORklHW3h2bWNdID0gIi0tZW5hYmxlLXh2bWMsLS1kaXNhYmxlLXh2bWMsbGlieHZtYyB4Y2ItdXRpbCIKLVBBQ0tBR0VDT05GSUdbdG9vbHNdID0gIi0tZW5hYmxlLXRvb2xzLC0tZGlzYWJsZS10b29scyxsaWJ4aW5lcmFtYSBsaWJ4cmFuZHIgbGlieGRhbWFnZSBsaWJ4Zml4ZXMgbGlieGN1cnNvciBsaWJ4dHN0IGxpYnhleHQgbGlieHJlbmRlciIKLQotIyAtLWVuYWJsZS1rbXMtb25seSBvcHRpb24gaXMgcmVxdWlyZWQgYnkgUk9PVExFU1NfWAotRVhUUkFfT0VDT05GICs9ICcke0BiYXNlX2NvbmRpdGlvbmFsKCAiUk9PVExFU1NfWCIsICIxIiwgIiAtLWVuYWJsZS1rbXMtb25seSIsICIiLCBkICl9JwotCi1DT01QQVRJQkxFX0hPU1QgPSAnKGkuODZ8eDg2XzY0KS4qLWxpbnV4JwotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9wb2xraXQtMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8taW50ZWxfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2Y2M3MzAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8taW50ZWxfZ2l0LmJiCkBAIC0wLDAgKzEsNDMgQEAKK3JlcXVpcmUgeG9yZy1kcml2ZXItdmlkZW8uaW5jCisKK1NVTU1BUlkgPSAiWC5PcmcgWCBzZXJ2ZXIgLS0gSW50ZWwgaW50ZWdyYXRlZCBncmFwaGljcyBjaGlwc2V0cyBkcml2ZXIiCisKK0RFU0NSSVBUSU9OID0gImludGVsIGlzIGFuIFhvcmcgZHJpdmVyIGZvciBJbnRlbCBpbnRlZ3JhdGVkIGdyYXBoaWNzIFwKK2NoaXBzZXRzLiBUaGUgZHJpdmVyIHN1cHBvcnRzIGRlcHRocyA4LCAxNSwgMTYgYW5kIDI0LiBPbiBzb21lIGNoaXBzZXRzLCBcCit0aGUgZHJpdmVyIHN1cHBvcnRzIGhhcmR3YXJlIGFjY2VsZXJhdGVkIDNEIHZpYSB0aGUgRGlyZWN0IFJlbmRlcmluZyBcCitJbmZyYXN0cnVjdHVyZSAoRFJJKS4iCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTg3MzBhZDU4ZDExYzdiYmFkOWE3MDY2ZDY5Zjc4MDhlIgorCitTUkNSRVYgPSAiOGYzM2Y4MDEwMDA5NmY3NzkwYzdiODE5Y2UzN2EzZWQ4Y2U4YjVmYSIKK1BWID0gIjIuOTkuOTE3K2dpdCR7U1JDUFZ9IgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworU1JDX1VSSSA9ICJnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy94b3JnL2RyaXZlci94Zjg2LXZpZGVvLWludGVsIFwKKyAgICAgICAgICAgZmlsZTovL2Rpc2FibGUteDExLWRyaTMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYWx3YXlzX2luY2x1ZGVfeG9yZ19zZXJ2ZXIuaC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImZhMTk2YTY2ZTUyYzBjNjI0ZmU1ZDM1MGFmN2E1ZTdiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAwYjc4MWVlYTA1NTU4MjgyMGExMjNjNDdiNjI0MTFiZGY2YWFiZjRmMDNkYzA1NjhmYWVjNTVmYWY5NjY3YzkiCisKK0RFUEVORFMgKz0gInZpcnR1YWwvbGlieDExIGRybSBsaWJwY2lhY2Nlc3MgcGl4bWFuIgorCitQQUNLQUdFQ09ORklHID8/PSAieHZtYyBzbmEgdWRldiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsICdkcmkgZHJpMSBkcmkyJywgJycsIGQpfSIKKworUEFDS0FHRUNPTkZJR1tkcmldID0gIi0tZW5hYmxlLWRyaSwtLWRpc2FibGUtZHJpIgorUEFDS0FHRUNPTkZJR1tkcmkxXSA9ICItLWVuYWJsZS1kcmkxLC0tZGlzYWJsZS1kcmkxLHhmODZkcmlwcm90byIKK1BBQ0tBR0VDT05GSUdbZHJpMl0gPSAiLS1lbmFibGUtZHJpMiwtLWRpc2FibGUtZHJpMixkcmkycHJvdG8iCitQQUNLQUdFQ09ORklHW2RyaTNdID0gIi0tZW5hYmxlLWRyaTMsLS1kaXNhYmxlLWRyaTMsZHJpM3Byb3RvIgorUEFDS0FHRUNPTkZJR1tzbmFdID0gIi0tZW5hYmxlLXNuYSwtLWRpc2FibGUtc25hIgorUEFDS0FHRUNPTkZJR1t1eGFdID0gIi0tZW5hYmxlLXV4YSwtLWRpc2FibGUtdXhhIgorUEFDS0FHRUNPTkZJR1t1ZGV2XSA9ICItLWVuYWJsZS11ZGV2LC0tZGlzYWJsZS11ZGV2LHVkZXYiCitQQUNLQUdFQ09ORklHW3h2bWNdID0gIi0tZW5hYmxlLXh2bWMsLS1kaXNhYmxlLXh2bWMsbGlieHZtYyB4Y2ItdXRpbCIKK1BBQ0tBR0VDT05GSUdbdG9vbHNdID0gIi0tZW5hYmxlLXRvb2xzLC0tZGlzYWJsZS10b29scyxsaWJ4aW5lcmFtYSBsaWJ4cmFuZHIgbGlieGRhbWFnZSBsaWJ4Zml4ZXMgbGlieGN1cnNvciBsaWJ4dHN0IGxpYnhleHQgbGlieHJlbmRlciIKKworIyAtLWVuYWJsZS1rbXMtb25seSBvcHRpb24gaXMgcmVxdWlyZWQgYnkgUk9PVExFU1NfWAorRVhUUkFfT0VDT05GICs9ICcke0BiYXNlX2NvbmRpdGlvbmFsKCAiUk9PVExFU1NfWCIsICIxIiwgIiAtLWVuYWJsZS1rbXMtb25seSIsICIiLCBkICl9JworCitDT01QQVRJQkxFX0hPU1QgPSAnKGkuODZ8eDg2XzY0KS4qLWxpbnV4JworCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9wb2xraXQtMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1mb250L2VuY29kaW5nc18xLjAuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1mb250L2VuY29kaW5nc18xLjAuNC5iYgppbmRleCA5MDg0NmQ4Li4zNjc2NmYyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZm9udC9lbmNvZGluZ3NfMS4wLjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWZvbnQvZW5jb2RpbmdzXzEuMC40LmJiCkBAIC05LDcgKzksNyBAQAogUEUgPSAiMSIKIFBSID0gIiR7SU5DX1BSfS4xIgogCi1ERVBFTkRTID0gIm1rZm9udHNjYWxlLW5hdGl2ZSBmb250LXV0aWwtbmF0aXZlIgorREVQRU5EUyA9ICJta2ZvbnRzY2FsZS1uYXRpdmUgbWtmb250ZGlyLW5hdGl2ZSBmb250LXV0aWwtbmF0aXZlIgogUkRFUEVORFNfJHtQTn0gPSAiIgogCiBTUkNfVVJJICs9ICJmaWxlOi8vbm9jb21waWxlci5wYXRjaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1mb250L2ZvbnQtdXRpbF8xLjMuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1mb250L2ZvbnQtdXRpbF8xLjMuMS5iYgppbmRleCAyMjg1MTI0Li4zNDY0NmZmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZm9udC9mb250LXV0aWxfMS4zLjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWZvbnQvZm9udC11dGlsXzEuMy4xLmJiCkBAIC0xOSw3ICsxOSw0IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiMjM3NTZkYWI4MDlmOWVjNTAxMWJiMjdmYjJjM2M3ZDYiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWE3ZWJkYjA3MTUxMDZkZDI1NTA4MmYyMzEwZGJhYTJjZDdlMjI1OTU3YzJhNzdkNzE5NzIwYzdjYzkyYjkyMSIKIAotU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTICs9ICJmb250dXRpbF9zeXNyb290X3ByZXByb2Nlc3MiCi1mb250dXRpbF9zeXNyb290X3ByZXByb2Nlc3MgKCkgewotCXN5c3Jvb3Rfc3RhZ2VfZGlyICR7RH0ke2RhdGFkaXJ9L2ZvbnRzLyAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9L2ZvbnRzLwotfQorU1lTUk9PVF9ESVJTX0JMQUNLTElTVF9yZW1vdmUgPSAiJHtkYXRhZGlyfS9mb250cyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGliaWNlXzEuMC45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJpY2VfMS4wLjkuYmIKaW5kZXggNTA0OWI3ZS4uYjM2MWFkNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJpY2VfMS4wLjkuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJpY2VfMS4wLjkuYmIKQEAgLTIzLDUgKzIzLDYgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICJhZGRmYjFlODk3Y2E4MDc5NTMxNjY5YzdjNzcxMTcyNiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZjcwMzJmMmMxYzY0MzUyYjU0MjNmNmI0OGE4ZWJkYzMzOWNjNjMwNjRhZjM0ZDY2YTZjOWFhNzk3NTllMjAyIgogCi1QQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsICdpcHY2JywgJycsIGQpfSIKIFBBQ0tBR0VDT05GSUdbYXJjNF0gPSAiYWNfY3ZfbGliX2JzZF9hcmM0cmFuZG9tX2J1Zj15ZXMsYWNfY3ZfbGliX2JzZF9hcmM0cmFuZG9tX2J1Zj1ubyxsaWJic2QiCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJzbV8xLjIuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlic21fMS4yLjIuYmIKaW5kZXggMTkyNTEzNi4uZGE0ZWQ5MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJzbV8xLjIuMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnNtXzEuMi4yLmJiCkBAIC0yNiwzICsyNiw2IEBACiAKIFNSQ19VUklbbWQ1c3VtXSA9ICI0OTlhNzc3M2M2NWFiYTUxMzYwOWZlNjUxODUzYzVmMyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIwYmFjYThjOWY1ZDkzNDQ1MGE3MDg5NmM0YWQzOGQwNjQ3NTUyMTI1NWNhNjNiNzE3YTY1MTBmZGI2ZTI4N2JkIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgJ2lwdjYnLCAnJywgZCl9IgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGNiL0ZpeC1pbmNvbnNpc3RlbnQtdXNlLW9mLXRhYnMtdnMuLXNwYWNlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y2IvRml4LWluY29uc2lzdGVudC11c2Utb2YtdGFicy12cy4tc3BhY2UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODk5MjM4NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGNiL0ZpeC1pbmNvbnNpc3RlbnQtdXNlLW9mLXRhYnMtdnMuLXNwYWNlLnBhdGNoCkBAIC0wLDAgKzEsNjIgQEAKK0Zyb20gODc0MGEyODhjYTQ2ODQzMzE0MTM0MTM0N2FhMTE1Yjk1NDQ4OTFkMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRob21hcyBLbGF1c25lciA8d2l6QE5ldEJTRC5vcmc+CitEYXRlOiBUaHUsIDE5IE1heSAyMDE2IDE3OjMxOjE4ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBpbmNvbnNpc3RlbnQgdXNlIG9mIHRhYnMgdnMuIHNwYWNlLgorCitOZWVkZWQgZm9yIGF0IGxlYXN0IHB5dGhvbi0zLjUueC4KKworU2lnbmVkLW9mZi1ieTogVGhvbWFzIEtsYXVzbmVyIDx3aXpATmV0QlNELm9yZz4KK1NpZ25lZC1vZmYtYnk6IFVsaSBTY2hsYWNodGVyIDxwc3ljaG9uQHpuYy5pbj4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9jX2NsaWVudC5weSB8IDE0ICsrKysrKystLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jX2NsaWVudC5weSBiL3NyYy9jX2NsaWVudC5weQoraW5kZXggNTdkZTNmYi4uMDQzMzM4ZCAxMDA2NDQKKy0tLSBhL3NyYy9jX2NsaWVudC5weQorKysrIGIvc3JjL2NfY2xpZW50LnB5CitAQCAtMTM2NCw3ICsxMzY0LDcgQEAgZGVmIF9jX3NlcmlhbGl6ZShjb250ZXh0LCBzZWxmKToKKyAgICAgICAgICAgICBfYygnICAgIHVuc2lnbmVkIGludCB4Y2JfYWxpZ25fdG8gPSAwOycpCisgICAgICAgICBpZiBzZWxmLmlzX3N3aXRjaDoKKyAgICAgICAgICAgICBfYygnICAgIHVuc2lnbmVkIGludCB4Y2JfcGFkZGluZ19vZmZzZXQgPSAlZDsnLAorLQkgICAgICAgc2VsZi5nZXRfYWxpZ25fb2Zmc2V0KCkgKQorKyAgICAgICAgICAgICAgIHNlbGYuZ2V0X2FsaWduX29mZnNldCgpICkKKyAgICAgICAgIHByZWZpeCA9IFsoJ19hdXgnLCAnLT4nLCBzZWxmKV0KKyAgICAgICAgIGF1eF9wdHIgPSAneGNiX291dCcKKyAKK0BAIC0xMzkwLDcgKzEzOTAsNyBAQCBkZWYgX2Nfc2VyaWFsaXplKGNvbnRleHQsIHNlbGYpOgorICAgICAgICAgX2MoJyAgICB1bnNpZ25lZCBpbnQgeGNiX2FsaWduX3RvID0gMDsnKQorICAgICAgICAgaWYgc2VsZi5pc19zd2l0Y2g6CisgICAgICAgICAgICAgX2MoJyAgICB1bnNpZ25lZCBpbnQgeGNiX3BhZGRpbmdfb2Zmc2V0ID0gJWQ7JywKKy0JICAgICAgIHNlbGYuZ2V0X2FsaWduX29mZnNldCgpICkKKysgICAgICAgICAgICAgICBzZWxmLmdldF9hbGlnbl9vZmZzZXQoKSApCisgCisgICAgIGVsaWYgJ3NpemVvZicgPT0gY29udGV4dDoKKyAgICAgICAgIHBhcmFtX25hbWVzID0gW3BbMl0gZm9yIHAgaW4gcGFyYW1zXQorQEAgLTE5MzAsMTQgKzE5MzAsMTQgQEAgZGVmIF9jX2FjY2Vzc29yc19saXN0KHNlbGYsIGZpZWxkKToKKyAgICAgICAgICAgICAgICAgICAgICMgZnJvbSB0aGUgcmVxdWVzdCBzaXplIGFuZCBkaXZpZGUgdGhhdCBieSB0aGUgbWVtYmVyIHNpemUKKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnKCgoUi0+bGVuZ3RoICogNCkgLSBzaXplb2YoJysgc2VsZi5jX3R5cGUgKyAnKSkvJysnc2l6ZW9mKCcrZmllbGQudHlwZS5tZW1iZXIuY193aXJldHlwZSsnKSknCisgICAgICAgICAgICAgICAgIGVsc2U6CistCQkgICAgIyB1c2UgdGhlIGFjY2Vzc29yIHRvIGdldCB0aGUgc3RhcnQgb2YgdGhlIGxpc3QsIHRoZW4KKy0JCSAgICAjIGNvbXB1dGUgdGhlIGxlbmd0aCBvZiBpdCBieSBzdWJ0cmFjdGluZyBpdCBmcm9tCisrICAgICAgICAgICAgICAgICAgICAjIHVzZSB0aGUgYWNjZXNzb3IgdG8gZ2V0IHRoZSBzdGFydCBvZiB0aGUgbGlzdCwgdGhlbgorKyAgICAgICAgICAgICAgICAgICAgIyBjb21wdXRlIHRoZSBsZW5ndGggb2YgaXQgYnkgc3VidHJhY3RpbmcgaXQgZnJvbQorICAgICAgICAgICAgICAgICAgICAgIyB0aGUgYWRyZXNzIG9mIHRoZSBmaXJzdCBieXRlIGFmdGVyIHRoZSBlbmQgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAjIHJlcXVlc3QKKy0JCSAgICBhZnRlcl9lbmRfb2ZfcmVxdWVzdCA9ICcoKChjaGFyKilSKSArIFItPmxlbmd0aCAqIDQpJworLQkJICAgIHN0YXJ0X29mX2xpc3QgPSAnJXMoUiknICUgKGZpZWxkLmNfYWNjZXNzb3JfbmFtZSkKKysgICAgICAgICAgICAgICAgICAgIGFmdGVyX2VuZF9vZl9yZXF1ZXN0ID0gJygoKGNoYXIqKVIpICsgUi0+bGVuZ3RoICogNCknCisrICAgICAgICAgICAgICAgICAgICBzdGFydF9vZl9saXN0ID0gJyVzKFIpJyAlIChmaWVsZC5jX2FjY2Vzc29yX25hbWUpCisgICAgICAgICAgICAgICAgICAgICBieXRlc2l6ZV9vZl9saXN0ID0gJyVzIC0gKGNoYXIqKSglcyknICUgKGFmdGVyX2VuZF9vZl9yZXF1ZXN0LCBzdGFydF9vZl9saXN0KQorLQkJICAgIHJldHVybiAnKCVzKSAvIHNpemVvZiglcyknICUgKGJ5dGVzaXplX29mX2xpc3QsIGZpZWxkLnR5cGUubWVtYmVyLmNfd2lyZXR5cGUpCisrICAgICAgICAgICAgICAgICAgICByZXR1cm4gJyglcykgLyBzaXplb2YoJXMpJyAlIChieXRlc2l6ZV9vZl9saXN0LCBmaWVsZC50eXBlLm1lbWJlci5jX3dpcmV0eXBlKQorICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICJsZW5ndGhsZXNzIGxpc3RzIHdpdGggdmFyc2l6ZWQgbWVtYmVycyBhcmUgbm90IHN1cHBvcnRlZC4gRmllbGRuYW1lICclcyciCistLSAKKzIuOS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGNiXzEuMTEuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGNiXzEuMTEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDg1NmMxOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhjYl8xLjExLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1TVU1NQVJZID0gIlhDQjogVGhlIFggcHJvdG9jb2wgQyBiaW5kaW5nIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJUaGUgWCBwcm90b2NvbCBDLWxhbmd1YWdlIEJpbmRpbmcgKFhDQikgaXMgYSByZXBsYWNlbWVudCBcCi1mb3IgWGxpYiBmZWF0dXJpbmcgYSBzbWFsbCBmb290cHJpbnQsIGxhdGVuY3kgaGlkaW5nLCBkaXJlY3QgYWNjZXNzIHRvIFwKLXRoZSBwcm90b2NvbCwgaW1wcm92ZWQgdGhyZWFkaW5nIHN1cHBvcnQsIGFuZCBleHRlbnNpYmlsaXR5LiIKLUhPTUVQQUdFID0gImh0dHA6Ly94Y2IuZnJlZWRlc2t0b3Aub3JnIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1YQ0IiCi1TRUNUSU9OID0gIngxMS9saWJzIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ3NjNiMDgxY2IxMGMyMjM0MzViMDFlMDBkYzBhYmE3IgotCi1TUkNfVVJJID0gImh0dHA6Ly94Y2IuZnJlZWRlc2t0b3Aub3JnL2Rpc3QvbGlieGNiLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8veGNiaW5jbHVkZWRpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWNoZWNrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2djYy1taXBzLXByNjgzMDItbWlwcy13b3JrYXJvdW5kLnBhdGNoIFwKLSAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiZjk3YTY1ZTYxNTg3NzVkZTUxOGFjMzkxOTM1NjM0YzIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjcyMGZkNmM3ZDIwMGU1MzcxYWZmZGIzZjA0OWNjOGY4OGNmZjlhZWQ5NDJmZjFiODI0ZDk1ZWVkYmY2OWQzMCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1ERVBFTkRTID0gInhjYi1wcm90byB4cHJvdG8gbGlieGF1IGxpYnB0aHJlYWQtc3R1YnMgbGlieGRtY3AiCi0KLVBBQ0tBR0VTX0RZTkFNSUMgPSAiXmxpYnhjYi0uKiIKLQotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYnhjYi5zby4qIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0KLSMgVGhlIGxpYnhhdSBhbmQgb3RoZXJzIHJlcXVpcmVzIHgxMSBpbiBESVNUUk9fRkVBVFVSRVMKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVNfY2xhc3MtbmF0aXZlID0gIiIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsICcke2xpYmRpcn0nLCAnXmxpYnhjYi0oLiopXC5zb1wuLiokJywgJ2xpYnhjYi0lcycsICdYQ0IgbGlicmFyeSBtb2R1bGUgZm9yICVzJywgYWxsb3dfbGlua3M9VHJ1ZSkKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGNiXzEuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhjYl8xLjEyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzOGJkZWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhjYl8xLjEyLmJiCkBAIC0wLDAgKzEsMzkgQEAKK1NVTU1BUlkgPSAiWENCOiBUaGUgWCBwcm90b2NvbCBDIGJpbmRpbmcgbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIlRoZSBYIHByb3RvY29sIEMtbGFuZ3VhZ2UgQmluZGluZyAoWENCKSBpcyBhIHJlcGxhY2VtZW50IFwKK2ZvciBYbGliIGZlYXR1cmluZyBhIHNtYWxsIGZvb3RwcmludCwgbGF0ZW5jeSBoaWRpbmcsIGRpcmVjdCBhY2Nlc3MgdG8gXAordGhlIHByb3RvY29sLCBpbXByb3ZlZCB0aHJlYWRpbmcgc3VwcG9ydCwgYW5kIGV4dGVuc2liaWxpdHkuIgorSE9NRVBBR0UgPSAiaHR0cDovL3hjYi5mcmVlZGVza3RvcC5vcmciCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PVhDQiIKK1NFQ1RJT04gPSAieDExL2xpYnMiCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDc2M2IwODFjYjEwYzIyMzQzNWIwMWUwMGRjMGFiYTciCisKK1NSQ19VUkkgPSAiaHR0cDovL3hjYi5mcmVlZGVza3RvcC5vcmcvZGlzdC9saWJ4Y2ItJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly94Y2JpbmNsdWRlZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtY2hlY2sucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZ2NjLW1pcHMtcHI2ODMwMi1taXBzLXdvcmthcm91bmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vRml4LWluY29uc2lzdGVudC11c2Utb2YtdGFicy12cy4tc3BhY2UucGF0Y2ggXAorICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyOGU1NTJiZDc4YmMxMDUwYjZiMjZjYTFkYjBlNWJiNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0YWRmYjFiN2M2N2U5OWJjOWMyY2NiMTEwYjJmMTc1Njg2NTc2ZDJmNzkyYzhhNzFiOWM4YjE5MDE0MDU3YjViIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK0RFUEVORFMgPSAieGNiLXByb3RvIHhwcm90byBsaWJ4YXUgbGlicHRocmVhZC1zdHVicyBsaWJ4ZG1jcCIKKworUEFDS0FHRVNfRFlOQU1JQyA9ICJebGlieGNiLS4qIgorCitGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGlieGNiLnNvLioiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworIyBUaGUgbGlieGF1IGFuZCBvdGhlcnMgcmVxdWlyZXMgeDExIGluIERJU1RST19GRUFUVVJFUworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFU19jbGFzcy1uYXRpdmUgPSAiIgorCitleHBvcnQgUFlUSE9OID0gInB5dGhvbjMiCisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCAnJHtsaWJkaXJ9JywgJ15saWJ4Y2ItKC4qKVwuc29cLi4qJCcsICdsaWJ4Y2ItJXMnLCAnWENCIGxpYnJhcnkgbW9kdWxlIGZvciAlcycsIGFsbG93X2xpbmtzPVRydWUpCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhjdXJzb3JfMS4xLjE0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y3Vyc29yXzEuMS4xNC5iYgppbmRleCBhOGU0ZjI0Li4xNzYyOTA0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhjdXJzb3JfMS4xLjE0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGN1cnNvcl8xLjEuMTQuYmIKQEAgLTEyLDcgKzEyLDcgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTg5MDJlNjY0M2Y3YmNkNzc5M2IyM2RjZDVkODAzMWE0IgogCiBERVBFTkRTICs9ICJsaWJ4cmVuZGVyIGxpYnhmaXhlcyIKLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgogCiBQRSA9ICIxIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhleHRfMS4zLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhleHRfMS4zLjMuYmIKaW5kZXggZWZhOGI2NS4uMDYzZTUzMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4ZXh0XzEuMy4zLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGV4dF8xLjMuMy5iYgpAQCAtMTMsNyArMTMsNyBAQAogTElDRU5TRSA9ICJNSVQtc3R5bGUiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04NzljZTI2Njc4NTQxNGJkMWNiYzNiYzJmNGQ5ZDdjOCIKIAotREVQRU5EUyArPSAieHByb3RvIHZpcnR1YWwvbGlieDExIHhleHRwcm90byBsaWJ4YXUgbGlieGRtY3AiCitERVBFTkRTICs9ICJ4cHJvdG8gdmlydHVhbC9saWJ4MTEgeGV4dHByb3RvIgogUFJPVklERVMgPSAieGV4dCIKIAogUEUgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGV4dF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhleHRfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzk5MTg2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGV4dF9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1yZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKLQotU1VNTUFSWSA9ICJYRXh0OiBYIEV4dGVuc2lvbiBsaWJyYXJ5IgotCi1ERVNDUklQVElPTiA9ICJsaWJYZXh0IHByb3ZpZGVzIGFuIFggV2luZG93IFN5c3RlbSBjbGllbnQgaW50ZXJmYWNlIHRvIFwKLXNldmVyYWwgZXh0ZW5zaW9ucyB0byB0aGUgWCBwcm90b2NvbC4gIFRoZSBzdXBwb3J0ZWQgcHJvdG9jb2wgZXh0ZW5zaW9ucyBcCi1hcmUgRE9VQkxFLUJVRkZFUiwgRFBNUywgRXh0ZW5kZWQtVmlzdWFsLUluZm9ybWF0aW9uLCBMQlgsIE1JVF9TSE0sIFwKLU1JVF9TVU5EUlktTk9OU1RBTkRBUkQsIE11bHRpLUJ1ZmZlcmluZywgU0VDVVJJVFksIFNIQVBFLCBTWU5DLCBUT0ctQ1VQLCBcCi1YQy1BUFBHUk9VUCwgWEMtTUlTQywgWFRFU1QuICBsaWJYZXh0IGFsc28gcHJvdmlkZXMgYSBzbWFsbCBzZXQgb2YgXAotdXRpbGl0eSBmdW5jdGlvbnMgdG8gYWlkIGF1dGhvcnMgb2YgY2xpZW50IEFQSXMgZm9yIFggcHJvdG9jb2wgXAotZXh0ZW5zaW9ucy4iCi0KLURFUEVORFMgKz0gInhwcm90byB2aXJ0dWFsL2xpYngxMSB4ZXh0cHJvdG8gbGlieGF1IGxpYnhkbWNwIgotUFJPVklERVMgPSAieGV4dCIKLVNSQ1JFViA9ICJkMWYzYmM3N2E0OGM4ZTQyNzcxNTc5ZTNmZGYzMzcwYjM1ZDMyMDlkIgotUEUgPSAiMSIKLVBWID0gIjEuMC45OS4xK2dpdHIke1NSQ1BWfSIKLQotWE9SR19QTiA9ICJsaWJYZXh0IgotCi1TUkNfVVJJID0gImdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL2dpdC94b3JnL2xpYi8ke1hPUkdfUE59IgotUyA9ICIke1dPUktESVJ9L2dpdC8iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Zml4ZXNfNS4wLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhmaXhlc181LjAuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmUyNzQwYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhmaXhlc181LjAuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVNVTU1BUlkgPSAiWEZpeGVzOiBYIEZpeGVzIGV4dGVuc2lvbiBsaWJyYXJ5IgotCi1ERVNDUklQVElPTiA9ICJYIGFwcGxpY2F0aW9ucyBoYXZlIG9mdGVuIG5lZWRlZCB0byB3b3JrIGFyb3VuZCB2YXJpb3VzIFwKLXNob3J0Y29taW5ncyBpbiB0aGUgY29yZSBYIHdpbmRvdyBzeXN0ZW0uICBUaGlzIGV4dGVuc2lvbiBpcyBkZXNpZ25lZCB0byBcCi1wcm92aWRlIHRoZSBtaW5pbWFsIHNlcnZlci1zaWRlIHN1cHBvcnQgbmVjZXNzYXJ5IHRvIGVsaW1pbmF0ZSBwcm9ibGVtcyBcCi1jYXVzZWQgYnkgdGhlc2Ugd29ya2Fyb3VuZHMuIgotCi1yZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKLQotTElDRU5TRSA9ICJNSVQtc3R5bGUiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYzFjZTQyYzMzNGE2ZjVjY2NiMDI3NzU1NmEwNTNlMCIKLQotREVQRU5EUyArPSAidmlydHVhbC9saWJ4MTEgeHByb3RvIGZpeGVzcHJvdG8geGV4dHByb3RvIgotCi1QRSA9ICIxIgotCi1YT1JHX1BOID0gImxpYlhmaXhlcyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYjk4NWI4NWY4YjkzODZjODVkZGNmZTEwNzM5MDZiNGQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjNiZWMwODUwODRmYTNjYWFlZTUxODA0OTBkZDg3MWYxZWIyMDIwYmE5ZTliMzlhMzBmOTM2OTNmZmMzNDc2NyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZpeGVzXzUuMC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Zml4ZXNfNS4wLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjA3OGFlZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZpeGVzXzUuMC4yLmJiCkBAIC0wLDAgKzEsMjIgQEAKK1NVTU1BUlkgPSAiWEZpeGVzOiBYIEZpeGVzIGV4dGVuc2lvbiBsaWJyYXJ5IgorCitERVNDUklQVElPTiA9ICJYIGFwcGxpY2F0aW9ucyBoYXZlIG9mdGVuIG5lZWRlZCB0byB3b3JrIGFyb3VuZCB2YXJpb3VzIFwKK3Nob3J0Y29taW5ncyBpbiB0aGUgY29yZSBYIHdpbmRvdyBzeXN0ZW0uICBUaGlzIGV4dGVuc2lvbiBpcyBkZXNpZ25lZCB0byBcCitwcm92aWRlIHRoZSBtaW5pbWFsIHNlcnZlci1zaWRlIHN1cHBvcnQgbmVjZXNzYXJ5IHRvIGVsaW1pbmF0ZSBwcm9ibGVtcyBcCitjYXVzZWQgYnkgdGhlc2Ugd29ya2Fyb3VuZHMuIgorCityZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKKworTElDRU5TRSA9ICJNSVQtc3R5bGUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYzFjZTQyYzMzNGE2ZjVjY2NiMDI3NzU1NmEwNTNlMCIKKworREVQRU5EUyArPSAidmlydHVhbC9saWJ4MTEgeHByb3RvIGZpeGVzcHJvdG8geGV4dHByb3RvIgorCitQRSA9ICIxIgorCitYT1JHX1BOID0gImxpYlhmaXhlcyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNTQ0ZDczZGY5NGU2MzhiYTdiNjQxNDdiZTQxNmU1NzYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWJkMjBlZGZlYzA4NGExYmVkNDgxZDQ4ZGQ0ODE1ZGVlODgxMzlmZmZhZDA5MTQxOGNkZGEwODExMjlhOWFlYSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZvbnRfMS41LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhmb250XzEuNS4xLmJiCmluZGV4IDFiNmUzM2MuLmUwMWYzMzEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZvbnRfMS41LjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Zm9udF8xLjUuMS5iYgpAQCAtMjAsMyArMjAsNiBAQAogCiBTUkNfVVJJW21kNXN1bV0gPSAiOTZmNzZiYTk0YjRjOTA5MjMwYmFjMWUyZGNkNTUxYzQiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjcwODk4NTI3YzczZjk3NThmNTUxYmJhYjYxMmFmNjExYjhhMDk2MjIwMjgyOTU2OGQ5NGYzZWRmNGQ4NjA5OCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsICdpcHY2JywgJycsIGQpfSIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhpbmVyYW1hXzEuMS4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4aW5lcmFtYV8xLjEuMy5iYgppbmRleCAwMjdjODA0Li5iYjAzZjQ0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhpbmVyYW1hXzEuMS4zLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGluZXJhbWFfMS4xLjMuYmIKQEAgLTE4LDMgKzE4LDUgQEAKIAogU1JDX1VSSVttZDVzdW1dID0gIjkzMzZkYzQ2YWUzYmY1ZjgxYzI0N2Y3MTMxNDYxZWZkIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdhNDU2OTlmMTc3MzA5NWEzZjgyMWU0OTFjYmQ1ZTEwYzg4N2M1YTVmY2U1ZDhkM2ZjZWQxNWMyZmY3Njk4ZTIiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGtiY29tbW9uXzAuNS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4a2Jjb21tb25fMC41LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlMjJhODEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4a2Jjb21tb25fMC41LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1TVU1NQVJZID0gIkdlbmVyaWMgWEtCIGtleW1hcCBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAibGlieGtiY29tbW9uIGlzIGEga2V5bWFwIGNvbXBpbGVyIGFuZCBzdXBwb3J0IGxpYnJhcnkgd2hpY2ggXAotcHJvY2Vzc2VzIGEgcmVkdWNlZCBzdWJzZXQgb2Yga2V5bWFwcyBhcyBkZWZpbmVkIGJ5IHRoZSBYS0Igc3BlY2lmaWNhdGlvbi4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnhrYmNvbW1vbi5vcmciCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wOTQ1N2IxNTZlMzE1NTk3MmFiZWJjYWFhYTBjYjQzNCIKLUxJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlIgotCi1ERVBFTkRTID0gInV0aWwtbWFjcm9zIGZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8veGtiY29tbW9uLm9yZy9kb3dubG9hZC8ke0JQTn0tJHtQVn0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMmUxZmFlYWZjYzYwOWMzMGFmM2E1NjFhOTFlODQxNTgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTBiZDc4MjQ3NDJiOWE2ZjUyYTZjZjgwZTJjYWRkNmY1MzQ5Y2Y2MDBhMzU4ZDA4MjYwNzcyNjE1Yjg5ZDE5YyIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly94a2Jjb21tb24ub3JnLyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZG9jcyIKLQotUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneDExJywgJycsIGQpfSIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS14MTEsLS1kaXNhYmxlLXgxMSxsaWJ4Y2IgeGtleWJvYXJkLWNvbmZpZywiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhrYmNvbW1vbl8wLjYuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGtiY29tbW9uXzAuNi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjMDgxMDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhrYmNvbW1vbl8wLjYuMS5iYgpAQCAtMCwwICsxLDIyIEBACitTVU1NQVJZID0gIkdlbmVyaWMgWEtCIGtleW1hcCBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAibGlieGtiY29tbW9uIGlzIGEga2V5bWFwIGNvbXBpbGVyIGFuZCBzdXBwb3J0IGxpYnJhcnkgd2hpY2ggXAorcHJvY2Vzc2VzIGEgcmVkdWNlZCBzdWJzZXQgb2Yga2V5bWFwcyBhcyBkZWZpbmVkIGJ5IHRoZSBYS0Igc3BlY2lmaWNhdGlvbi4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnhrYmNvbW1vbi5vcmciCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0wOTQ1N2IxNTZlMzE1NTk3MmFiZWJjYWFhYTBjYjQzNCIKK0xJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlIgorCitERVBFTkRTID0gInV0aWwtbWFjcm9zIGZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwOi8veGtiY29tbW9uLm9yZy9kb3dubG9hZC8ke0JQTn0tJHtQVn0udGFyLnh6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNjdhOGYzMjJiNWZhMzIzNTIyNzJlODExYmI5MGRkNzMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWIwODg3YjA4MGI0MjE2OTA5NmE2MTEwNjY2MWY4ZDM1YmFlNzgzZjhiNmM1OGY5N2ViY2QzYWY4M2VhODc2MCIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly94a2Jjb21tb24ub3JnLyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZG9jcyIKKworUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneDExJywgJycsIGQpfSIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS14MTEsLS1kaXNhYmxlLXgxMSxsaWJ4Y2IgeGtleWJvYXJkLWNvbmZpZywiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhtdV8xLjEuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieG11XzEuMS4yLmJiCmluZGV4IDAwM2JhZWMuLmQ1OTM1ZmYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieG11XzEuMS4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieG11XzEuMS4yLmJiCkBAIC0zMCwzICszMCw2IEBACiAKIFNSQ19VUklbbWQ1c3VtXSA9ICI0MWQ5MmFiNjI3ZGZhMDY1NjgwNzYwNDNmM2UwODllNCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI3NTZlZGM3YzM4MzI1NGVlZjhiNGUxYjczM2MzYmYxZGMwNjFiNTIzYzlmOTgzM2FjNzA1ODM3OGI4MzQ5ZDBiIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgJ2lwdjYnLCAnJywgZCl9IgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHJlbmRlcl8wLjkuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHJlbmRlcl8wLjkuOS5iYgppbmRleCA5ZmRlMDQwLi40NGNiMmUwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhyZW5kZXJfMC45LjkuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4cmVuZGVyXzAuOS45LmJiCkBAIC0xMSw3ICsxMSw3IEBACiBMSUNFTlNFID0gIk1JVC1zdHlsZSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ4YmM3MTk4NmQzYjliMzYzOWY2ZGZkNmZhYzhmMTk2IgogCi1ERVBFTkRTICs9ICJ2aXJ0dWFsL2xpYngxMSByZW5kZXJwcm90byB4cHJvdG8geGRtY3AiCitERVBFTkRTICs9ICJ2aXJ0dWFsL2xpYngxMSByZW5kZXJwcm90byB4cHJvdG8iCiAKIFBFID0gIjEiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHQvbGlieHRfZml4X2Zvcl94MzIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnh0L2xpYnh0X2ZpeF9mb3JfeDMyLnBhdGNoCmluZGV4IGNlNmM3NTYuLmZmYzJjMTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHQvbGlieHRfZml4X2Zvcl94MzIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4dC9saWJ4dF9maXhfZm9yX3gzMi5wYXRjaApAQCAtMyw3ICszLDcgQEAKIFRoaXMgZml4ZXMgY29tcGlsYXRpb24gd2l0aCB4MzIgdG9vbGNoYWluLgogCiBSZWNlaXZlZCB0aGlzIHBhdGNoIGZyb20gSC5KLiBMdSA8aGpsLnRvb2xzQGdtYWlsLmNvbT4KLVNpZ25lZC1PZmYtQnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+IDIwMTEvMTIvMQorU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4gMjAxMS8xMi8xCiAKIAogLS0tIGxpYlh0LTEuMS4xL2luY2x1ZGUvWDExL1h0b3MuaC54MzIJMjAxMS0wMi0wOCAwNzo1Njo0MC4wMDAwMDAwMDAgLTA4MDAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvcGl4bWFuLzAwMDEtdGVzdC11dGlscy1DaGVjay1mb3ItRkVfSU5WQUxJRC1kZWZpbml0aW9uLWJlZm9yZS11cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvcGl4bWFuLzAwMDEtdGVzdC11dGlscy1DaGVjay1mb3ItRkVfSU5WQUxJRC1kZWZpbml0aW9uLWJlZm9yZS11cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODJjMWRiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9waXhtYW4vMDAwMS10ZXN0LXV0aWxzLUNoZWNrLWZvci1GRV9JTlZBTElELWRlZmluaXRpb24tYmVmb3JlLXVzLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gMGNjZDkwNmI5MDRkMjE1MzZkNWFiNDFjNjE5Njc2MGUzZTVkNzJjYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDE3IE1heSAyMDE2IDE3OjMwOjAwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHRlc3QvdXRpbHM6IENoZWNrIGZvciBGRV9JTlZBTElEIGRlZmluaXRpb24gYmVmb3JlIHVzZQorCitTb21lIGFyY2hpdGVjdHVyZXMgZS5nLiBuaW9zMiBkbyBub3Qgc3VwcG9ydCBhbGwgZXhjZXB0aW9ucworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCisgdGVzdC91dGlscy5jIHwgMiArKworIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3Rlc3QvdXRpbHMuYyBiL3Rlc3QvdXRpbHMuYworaW5kZXggZjhlNDJhNS4uZmUzMmIxZSAxMDA2NDQKKy0tLSBhL3Rlc3QvdXRpbHMuYworKysrIGIvdGVzdC91dGlscy5jCitAQCAtOTc4LDkgKzk3OCwxMSBAQCBlbmFibGVfaW52YWxpZF9leGNlcHRpb25zICh2b2lkKQorIHsKKyAjaWZkZWYgSEFWRV9GRU5WX0gKKyAjaWZkZWYgSEFWRV9GRUVOQUJMRUVYQ0VQVAorKyNpZmRlZiBGRV9JTlZBTElECisgICAgIGZlZW5hYmxlZXhjZXB0IChGRV9JTlZBTElEKTsKKyAjZW5kaWYKKyAjZW5kaWYKKysjZW5kaWYKKyB9CisgCisgdm9pZCAqCistLSAKKzIuOC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvcGl4bWFuLzAwMDEtdjMtdGVzdC1hZGQtYS1jaGVjay1mb3ItRkVfRElWQllaRVJPLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9waXhtYW4vMDAwMS12My10ZXN0LWFkZC1hLWNoZWNrLWZvci1GRV9ESVZCWVpFUk8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiN2MxZTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9waXhtYW4vMDAwMS12My10ZXN0LWFkZC1hLWNoZWNrLWZvci1GRV9ESVZCWVpFUk8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi1Gcm9tIGZjZDVlYjliZDBlODY3NGE2ZjQ5ODdhOGZjZTdkYzFiYThmOTMyMGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBUaG9tYXMgUGV0YXp6b25pIDx0aG9tYXMucGV0YXp6b25pQGZyZWUtZWxlY3Ryb25zLmNvbT4KLURhdGU6IFRodSwgMTcgU2VwIDIwMTUgMDM6MDg6MzYgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gW3YzXSB0ZXN0OiBhZGQgYSBjaGVjayBmb3IgRkVfRElWQllaRVJPCi0KLVNvbWUgYXJjaGl0ZWN0dXJlcywgc3VjaCBhcyBNaWNyb2JsYXplIGFuZCBOaW9zMiwgY3VycmVudGx5IGRvIG5vdAotaW1wbGVtZW50IEZFX0RJVkJZWkVSTywgZXZlbiB0aG91Z2ggdGhleSBoYXZlIDxmZW52Lmg+IGFuZAotZmVlbmFibGVleGNlcHQoKS4gVGhpcyBjb21taXQgYWRkcyBhIGNvbmZpZ3VyZS5hYyBjaGVjayB0byB2ZXJpZnkKLXdoZXRoZXIgRkVfRElWQllaRVJPIGlzIGRlZmluZWQgb3Igbm90LCBhbmQgaWYgbm90LCBkaXNhYmxlcyB0aGUKLXByb2JsZW1hdGljIGNvZGUgaW4gdGVzdC91dGlscy5jLgotCi1TaWduZWQtb2ZmLWJ5OiBUaG9tYXMgUGV0YXp6b25pIDx0aG9tYXMucGV0YXp6b25pQGZyZWUtZWxlY3Ryb25zLmNvbT4KLVNpZ25lZC1vZmYtYnk6IE1hcmVrIFZhc3V0IDxtYXJleEBkZW54LmRlPgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbY29tbWl0IDQyOTdlOTA1OF0KLS0tLQotQ2hhbmdlcyB2MSAtPiB2MjoKLQotICogVXNlIHRoZSBhY19jdl9oYXZlX2RlY2xfRkVfRElWQllaRVJPIHZhcmlhYmxlLCB3aGljaCBpcwotICAgYXV0b21hdGljYWxseSBzZXQgYnkgQUNfQ0hFQ0tfREVDTCwgdG8gZGVjaWRlIHdoZXRoZXIgb3Igbm90Ci0gICBIQVZFX0ZFRElWQllaRVJPIHNob3VsZCBiZSBkZWZpbmVkLgotCi1DaGFuZ2VzIHYyIC0+IHYzOgotCi0gKiBVc2UgYWN0aW9uLWlmLXllcyBvZiBBQ19DSEVDS19ERUNMIGFzIHN1Z2dlc3RlZCBpbgotICAgaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZlcy9waXhtYW4vMjAxNC1GZWJydWFyeS8wMDMxNzYuaHRtbAotLS0tCi0gY29uZmlndXJlLmFjIHwgNSArKysrKwotIHRlc3QvdXRpbHMuYyB8IDIgKysKLSAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBmOTNjYzMwLi40MjRiZmQzIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC04OTEsNiArODkxLDExIEBAIGlmIHRlc3QgeCRoYXZlX2ZlZW5hYmxlZXhjZXB0ID0geHllczsgdGhlbgotICAgIEFDX0RFRklORShIQVZFX0ZFRU5BQkxFRVhDRVBULCAxLCBbV2hldGhlciB3ZSBoYXZlIGZlZW5hYmxlZXhjZXB0KCldKQotIGZpCi0gCi0rQUNfQ0hFQ0tfREVDTChbRkVfRElWQllaRVJPXSwKLSsJW0FDX0RFRklORShIQVZFX0ZFRElWQllaRVJPLCAxLCBbV2hldGhlciB3ZSBoYXZlIEZFX0RJVkJZWkVST10pXSwKLSsJW10sCi0rCVtbI2luY2x1ZGUgPGZlbnYuaD5dXSkKLSsKLSBBQ19DSEVDS19GVU5DKGdldHRpbWVvZmRheSwgaGF2ZV9nZXR0aW1lb2ZkYXk9eWVzLCBoYXZlX2dldHRpbWVvZmRheT1ubykKLSBBQ19DSEVDS19IRUFERVIoc3lzL3RpbWUuaCwgaGF2ZV9zeXNfdGltZV9oPXllcywgaGF2ZV9zeXNfdGltZV9oPW5vKQotIGlmIHRlc3QgeCRoYXZlX2dldHRpbWVvZmRheSA9IHh5ZXMgJiYgdGVzdCB4JGhhdmVfc3lzX3RpbWVfaCA9IHh5ZXM7IHRoZW4KLWRpZmYgLS1naXQgYS90ZXN0L3V0aWxzLmMgYi90ZXN0L3V0aWxzLmMKLWluZGV4IDIyMmQ0ZDUuLjg2NTc5NjYgMTAwNjQ0Ci0tLS0gYS90ZXN0L3V0aWxzLmMKLSsrKyBiL3Rlc3QvdXRpbHMuYwotQEAgLTk2Niw5ICs5NjYsMTEgQEAgZW5hYmxlX2RpdmJ5emVyb19leGNlcHRpb25zICh2b2lkKQotIHsKLSAjaWZkZWYgSEFWRV9GRU5WX0gKLSAjaWZkZWYgSEFWRV9GRUVOQUJMRUVYQ0VQVAotKyNpZmRlZiBIQVZFX0ZFRElWQllaRVJPCi0gICAgIGZlZW5hYmxlZXhjZXB0IChGRV9ESVZCWVpFUk8pOwotKyNlbmRpZgotICNlbmRpZgotICNlbmRpZgotIH0KLSAKLSB2b2lkCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvcGl4bWFuL21pcHMtZXhwb3J0LXJldmVydC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvcGl4bWFuL21pcHMtZXhwb3J0LXJldmVydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTRhNWZkMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3BpeG1hbi9taXBzLWV4cG9ydC1yZXZlcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1SZXZlcnQgYSBjb21taXQgaW4gcGl4bWFuIDAuMzIuNiB3aGljaCBicmVha3MgY29tcGxpYXRpb24gb24gTUlQUyBtYWNoaW5lcyB3aXRoCi1lcnJvcnMgc3VjaCBhczoKLQotcGl4bWFuLTAuMzIuNi9waXhtYW4vcGl4bWFuLW1pcHMtZHNwcjItYXNtLlM6NDI2NzoKLUVycm9yOiBpbnZhbGlkIG9wZXJhbmRzIGBtZmxvICQxNCwkYWMzJwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLS0tLSBiL3BpeG1hbi9waXhtYW4tbWlwcy1kc3ByMi1hc20uaAotKysrIGEvcGl4bWFuL3BpeG1hbi1taXBzLWRzcHIyLWFzbS5oCi1AQCAtNzIsMTAgKzcyLDcgQEAKLSAjZGVmaW5lIExFQUZfTUlQUzMyUjIoc3ltYm9sKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgLmdsb2JsICBzeW1ib2w7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgLmFsaWduICAyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0jaWZkZWYgX19FTEZfXwotLSAgICAgICAgICAgICAgICAuaGlkZGVuIHN5bWJvbDsgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAudHlwZSAgIHN5bWJvbCwgQGZ1bmN0aW9uOyAgICAgICAgICAgICAgXAotLSNlbmRpZgotICAgICAgICAgICAgICAgICAuZW50ICAgIHN5bWJvbCwgMDsgICAgICAgICAgICAgICAgICAgICAgXAotIHN5bWJvbDogICAgICAgICAuZnJhbWUgIHNwLCAwLCByYTsgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAuc2V0ICAgIHB1c2g7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9waXhtYW5fMC4zMi44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9waXhtYW5fMC4zMi44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTNjZTM2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvcGl4bWFuXzAuMzIuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLVNVTU1BUlkgPSAiUGl4bWFuOiBQaXhlbCBNYW5pcHVsYXRpb24gbGlicmFyeSIKLQotREVTQ1JJUFRJT04gPSAiUGl4bWFuIHByb3ZpZGVzIGEgbGlicmFyeSBmb3IgbWFuaXB1bGF0aW5nIHBpeGVsIHJlZ2lvbnMgXAotLS0gYSBzZXQgb2YgWS1YIGJhbmRlZCByZWN0YW5nbGVzLCBpbWFnZSBjb21wb3NpdGluZyB1c2luZyB0aGUgXAotUG9ydGVyL0R1ZmYgbW9kZWwgYW5kIGltcGxpY2l0IG1hc2sgZ2VuZXJhdGlvbiBmb3IgZ2VvbWV0cmljIHByaW1pdGl2ZXMgXAotaW5jbHVkaW5nIHRyYXBlem9pZHMsIHRyaWFuZ2xlcywgYW5kIHJlY3RhbmdsZXMuIgotCi1yZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKLQotIyBzZWUgaHR0cDovL2NhaXJvZ3JhcGhpY3Mub3JnL3JlbGVhc2VzLyAtIG9ubHkgZXZlbiBtaW5vciB2ZXJzaW9ucyBhcmUgc3RhYmxlCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJwaXhtYW4tKD9QPHB2ZXI+XGQrXC4oXGQqWzAyNDY4XSkrKFwuXGQrKSspIgotCi1MSUNFTlNFID0gIk1JVCAmIE1JVC1zdHlsZSAmIFBEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTQwOTZjNzY5YWUwY2JiNWZjYjk0ZWM0NjhiZTExYjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcGl4bWFuL3BpeG1hbi1tYXRyaXguYztlbmRsaW5lPTI1O21kNT1iYTZlODc2OWJmYWFlZTJjNDE2OTg3NTVhZjA0YzRiZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9waXhtYW4vcGl4bWFuLWFybS1uZW9uLWFzbS5oO2VuZGxpbmU9MjQ7bWQ1PTlhOWNjMWU1MWFiYmYxZGE1OGY0ZDk1MjhlYzlkNDliIFwKLSAgICAgICAgICAgICAgICAgICAiCi1ERVBFTkRTICs9ICJ6bGliIGxpYnBuZyIKLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotUEUgPSAiMSIKLQotSVdNTVhUID0gIi0tZGlzYWJsZS1hcm0taXdtbXh0IgotTE9PTkdTT05fTU1JID0gIi0tZGlzYWJsZS1sb29uZ3Nvbi1tbWkiCi0jIElmIHRhcmdldCBzdXBwb3J0cyBuZW9uIHRoZW4gZGlzYWJsZSB0aGUgJ3NpbWQnIChpZSBWRlB2MikgZmFsbGJhY2ssIG90aGVyd2lzZSBkaXNhYmxlIG5lb24uCi1ORU9OID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm5lb24iLCAiLS1kaXNhYmxlLWFybS1zaW1kIiwgIi0tZGlzYWJsZS1hcm0tbmVvbiIgLGQpfSIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1ndGsgJHtJV01NWFR9ICR7TE9PTkdTT05fTU1JfSAke05FT059IgotRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLWRpc2FibGUtZ3RrIgotRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZXNkayA9ICItLWRpc2FibGUtZ3RrIgotCi1TUkNfVVJJICs9ICJcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1BUk0tcWVtdS1yZWxhdGVkLXdvcmthcm91bmRzLWluLWNwdS1mZWF0dXJlcy1kZXRlY3RpLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9taXBzLWV4cG9ydC1yZXZlcnQucGF0Y2ggXAotCSAgICBmaWxlOi8vYXNtX2luY2x1ZGUucGF0Y2ggXAotCSAgICBmaWxlOi8vMDAwMS12My10ZXN0LWFkZC1hLWNoZWNrLWZvci1GRV9ESVZCWVpFUk8ucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMThkNmI2MmFiZGI3YmMwZjhlNmIwZGRmNDg5ODZiMmMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWM2M2RiYjM1MjNmYzRkODZlZDQxODY2Nzc4MTU5MThhOTQxYjdjYjM5MGQ1ZWVjNGY1NWNiNWQ2NmI1OWZiMSIKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvcGl4bWFuXzAuMzQuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvcGl4bWFuXzAuMzQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNGNhNjIxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9waXhtYW5fMC4zNC4wLmJiCkBAIC0wLDAgKzEsNDEgQEAKK1NVTU1BUlkgPSAiUGl4bWFuOiBQaXhlbCBNYW5pcHVsYXRpb24gbGlicmFyeSIKKworREVTQ1JJUFRJT04gPSAiUGl4bWFuIHByb3ZpZGVzIGEgbGlicmFyeSBmb3IgbWFuaXB1bGF0aW5nIHBpeGVsIHJlZ2lvbnMgXAorLS0gYSBzZXQgb2YgWS1YIGJhbmRlZCByZWN0YW5nbGVzLCBpbWFnZSBjb21wb3NpdGluZyB1c2luZyB0aGUgXAorUG9ydGVyL0R1ZmYgbW9kZWwgYW5kIGltcGxpY2l0IG1hc2sgZ2VuZXJhdGlvbiBmb3IgZ2VvbWV0cmljIHByaW1pdGl2ZXMgXAoraW5jbHVkaW5nIHRyYXBlem9pZHMsIHRyaWFuZ2xlcywgYW5kIHJlY3RhbmdsZXMuIgorCityZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKKworIyBzZWUgaHR0cDovL2NhaXJvZ3JhcGhpY3Mub3JnL3JlbGVhc2VzLyAtIG9ubHkgZXZlbiBtaW5vciB2ZXJzaW9ucyBhcmUgc3RhYmxlCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJwaXhtYW4tKD9QPHB2ZXI+XGQrXC4oXGQqWzAyNDY4XSkrKFwuXGQrKSspIgorCitMSUNFTlNFID0gIk1JVCAmIE1JVC1zdHlsZSAmIFBEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTQwOTZjNzY5YWUwY2JiNWZjYjk0ZWM0NjhiZTExYjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcGl4bWFuL3BpeG1hbi1tYXRyaXguYztlbmRsaW5lPTI1O21kNT1iYTZlODc2OWJmYWFlZTJjNDE2OTg3NTVhZjA0YzRiZSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9waXhtYW4vcGl4bWFuLWFybS1uZW9uLWFzbS5oO2VuZGxpbmU9MjQ7bWQ1PTlhOWNjMWU1MWFiYmYxZGE1OGY0ZDk1MjhlYzlkNDliIFwKKyAgICAgICAgICAgICAgICAgICAiCitERVBFTkRTICs9ICJ6bGliIGxpYnBuZyIKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworUEUgPSAiMSIKKworSVdNTVhUID0gIi0tZGlzYWJsZS1hcm0taXdtbXh0IgorTE9PTkdTT05fTU1JID0gIi0tZGlzYWJsZS1sb29uZ3Nvbi1tbWkiCisjIElmIHRhcmdldCBzdXBwb3J0cyBuZW9uIHRoZW4gZGlzYWJsZSB0aGUgJ3NpbWQnIChpZSBWRlB2MikgZmFsbGJhY2ssIG90aGVyd2lzZSBkaXNhYmxlIG5lb24uCitORU9OID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm5lb24iLCAiLS1kaXNhYmxlLWFybS1zaW1kIiwgIi0tZGlzYWJsZS1hcm0tbmVvbiIgLGQpfSIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1ndGsgJHtJV01NWFR9ICR7TE9PTkdTT05fTU1JfSAke05FT059IgorRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLWRpc2FibGUtZ3RrIgorRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZXNkayA9ICItLWRpc2FibGUtZ3RrIgorCitTUkNfVVJJICs9ICJcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1BUk0tcWVtdS1yZWxhdGVkLXdvcmthcm91bmRzLWluLWNwdS1mZWF0dXJlcy1kZXRlY3RpLnBhdGNoIFwKKwkgICAgZmlsZTovL2FzbV9pbmNsdWRlLnBhdGNoIFwKKwkgICAgZmlsZTovLzAwMDEtdGVzdC11dGlscy1DaGVjay1mb3ItRkVfSU5WQUxJRC1kZWZpbml0aW9uLWJlZm9yZS11cy5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwMDJhNGZjYjY0NGRkZmNiNGIwZTQxOTE1NzZhMGQ1OSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzOWJhMzQzOGYzZDE3YzQ2NGIwY2I4YmUwMDZkYWNiY2EwYWI1YWVlOTdlYmRlNjlmZWM3ZWNkYmY4NTc5NGEwIgorCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi94a2V5Ym9hcmQtY29uZmlnXzIuMTYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hrZXlib2FyZC1jb25maWdfMi4xNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTZhMWY0Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hrZXlib2FyZC1jb25maWdfMi4xNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiS2V5Ym9hcmQgY29uZmlndXJhdGlvbiBkYXRhYmFzZSBmb3IgWCBXaW5kb3ciCi0KLURFU0NSSVBUSU9OID0gIlRoZSBub24tYXJjaCBrZXlib2FyZCBjb25maWd1cmF0aW9uIGRhdGFiYXNlIGZvciBYIFwKLVdpbmRvdy4gIFRoZSBnb2FsIGlzIHRvIHByb3ZpZGUgdGhlIGNvbnNpc3RlbnQsIHdlbGwtc3RydWN0dXJlZCwgXAotZnJlcXVlbnRseSByZWxlYXNlZCBvcGVuIHNvdXJjZSBvZiBYIGtleWJvYXJkIGNvbmZpZ3VyYXRpb24gZGF0YSBmb3IgWCBcCi1XaW5kb3cgU3lzdGVtIGltcGxlbWVudGF0aW9ucy4gIFRoZSBwcm9qZWN0IGlzIHRhcmdldGVkIHRvIFhLQi1iYXNlZCBcCi1zeXN0ZW1zLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL2ZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL1hLZXlib2FyZENvbmZpZyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9eGtleWJvYXJkLWNvbmZpZyIKLQotTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wZTdmMjFjYTdkYjk3NWM2MzQ2N2QyZTc2MjRhMTJmOSIKLQotU1JDX1VSSSA9ICIke1hPUkdfTUlSUk9SfS9pbmRpdmlkdWFsL2RhdGEveGtleWJvYXJkLWNvbmZpZy8ke0JQTn0tJHtQVn0udGFyLmJ6MiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJiZjZhYTMxMTk1NTg0Y2ZjZTAxYjIxOTRjM2U1ZWEyNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxZThhMWYyMTJjOTZiN2Y3MWNhMGIwNWRhMzYxY2FjMTgxNmQyN2JhYWUxZDhlMDNlN2I1MzA0OWI1OGQxZDU4IgotCi1TRUNUSU9OID0gIngxMS9saWJzIgotREVQRU5EUyA9ICJpbnRsdG9vbC1uYXRpdmUgdmlydHVhbC9nZXR0ZXh0IHV0aWwtbWFjcm9zIGxpYnhzbHQtbmF0aXZlIgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLXhrYi1ydWxlcy1zeW1saW5rPXhvcmcgLS1kaXNhYmxlLXJ1bnRpbWUtZGVwcyIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vWDExL3hrYiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vWDExL3hrYi9jb21waWxlZAotICAgIGNkICR7RH0ke2RhdGFkaXJ9L1gxMS94a2IvcnVsZXMgJiYgbG4gLXNmIGJhc2UgeG9yZwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi94a2V5Ym9hcmQtY29uZmlnXzIuMTguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hrZXlib2FyZC1jb25maWdfMi4xOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWZjYmQ4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi94a2V5Ym9hcmQtY29uZmlnXzIuMTguYmIKQEAgLTAsMCArMSwzMSBAQAorU1VNTUFSWSA9ICJLZXlib2FyZCBjb25maWd1cmF0aW9uIGRhdGFiYXNlIGZvciBYIFdpbmRvdyIKKworREVTQ1JJUFRJT04gPSAiVGhlIG5vbi1hcmNoIGtleWJvYXJkIGNvbmZpZ3VyYXRpb24gZGF0YWJhc2UgZm9yIFggXAorV2luZG93LiAgVGhlIGdvYWwgaXMgdG8gcHJvdmlkZSB0aGUgY29uc2lzdGVudCwgd2VsbC1zdHJ1Y3R1cmVkLCBcCitmcmVxdWVudGx5IHJlbGVhc2VkIG9wZW4gc291cmNlIG9mIFgga2V5Ym9hcmQgY29uZmlndXJhdGlvbiBkYXRhIGZvciBYIFwKK1dpbmRvdyBTeXN0ZW0gaW1wbGVtZW50YXRpb25zLiAgVGhlIHByb2plY3QgaXMgdGFyZ2V0ZWQgdG8gWEtCLWJhc2VkIFwKK3N5c3RlbXMuIgorCitIT01FUEFHRSA9ICJodHRwOi8vZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvWEtleWJvYXJkQ29uZmlnIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD14a2V5Ym9hcmQtY29uZmlnIgorCitMSUNFTlNFID0gIk1JVCAmIE1JVC1zdHlsZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTBlN2YyMWNhN2RiOTc1YzYzNDY3ZDJlNzYyNGExMmY5IgorCitTUkNfVVJJID0gIiR7WE9SR19NSVJST1J9L2luZGl2aWR1YWwvZGF0YS94a2V5Ym9hcmQtY29uZmlnLyR7QlBOfS0ke1BWfS50YXIuYnoyIgorU1JDX1VSSVttZDVzdW1dID0gImMyOGNmNDU2MTZiZmVjMjc2ODc5MzYwYmMzNmM2YjI3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImM0MWQ5MTdkNmM4YTU5ZmViN2NjYmRhNTFjNDBhNmFkYTgyNGZkZDFlOTY4NGI1MmRkNDhjOTUzMDYxN2RkZDAiCisKK1NFQ1RJT04gPSAieDExL2xpYnMiCitERVBFTkRTID0gImludGx0b29sLW5hdGl2ZSB2aXJ0dWFsL2dldHRleHQgdXRpbC1tYWNyb3MgbGlieHNsdC1uYXRpdmUiCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgteGtiLXJ1bGVzLXN5bWxpbms9eG9yZyAtLWRpc2FibGUtcnVudGltZS1kZXBzIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9YMTEveGtiIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9YMTEveGtiL2NvbXBpbGVkCisgICAgY2QgJHtEfSR7ZGF0YWRpcn0vWDExL3hrYi9ydWxlcyAmJiBsbiAtc2YgYmFzZSB4b3JnCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vZHJpMnByb3RvX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9kcmkycHJvdG9fZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDc0ZjQ4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9kcmkycHJvdG9fZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotcmVxdWlyZSB4b3JnLXByb3RvLWNvbW1vbi5pbmMKLQotU1VNTUFSWSA9ICJEUkkyOiBEaXJlY3QgUmVuZGVyaW5nIEluZnJhc3RydWN0dXJlIDIgaGVhZGVycyIKLQotREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIHByb3ZpZGVzIHRoZSB3aXJlIHByb3RvY29sIGZvciB0aGUgRGlyZWN0IFwKLVJlbmRlcmluZyBJZm5yYXN0cnVjdHVyZSAyLiAgRElSIGlzIHJlcXVpcmVkIGZvciBtYXkgaGFyZHdhcmUgXAotYWNjZWxlcmF0ZWQgT3BlbkdMIGRyaXZlcnMuIgotCi1TUkNSRVYgPSAiNjZjNTZhYjEwZDkxN2UzZjQ3ZjkzMTc4ZDdlYWM2NDMwOTcwZDNjNCIKLVBWID0gIjEuOTkuMytnaXQke1NSQ1BWfSIKLVBSID0gInIyIgotCi1TUkNfVVJJID0gImdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL2dpdC94b3JnL3Byb3RvL2RyaTJwcm90byIKLQotTElDX0ZJTEVTX0NIS1NVTT0iZmlsZTovL0NPUFlJTkc7bWQ1PTJlMzk2ZmE5MTgzNGY4Nzg2MDMyY2FkMmRhNTYzOGYzIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vaW5wdXRwcm90b18yLjMuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9pbnB1dHByb3RvXzIuMy4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZThlMGMxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9pbnB1dHByb3RvXzIuMy4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotcmVxdWlyZSB4b3JnLXByb3RvLWNvbW1vbi5pbmMKLQotU1VNTUFSWSA9ICJYSTogWCBJbnB1dCBleHRlbnNpb24gaGVhZGVycyIKLQotREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIHByb3ZpZGVzIHRoZSB3aXJlIHByb3RvY29sIGZvciB0aGUgWCBJbnB1dCBcCi1leHRlbnNpb24uICBUaGUgZXh0ZW5zaW9uIHN1cHBvcnRzIGlucHV0IGRldmljZXMgb3RoZXIgdGhlbiB0aGUgY29yZSBYIFwKLWtleWJvYXJkIGFuZCBwb2ludGVyLiIKLQotTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lNTYyY2MwZjY1ODdiOTYxZjAzMjIxMWQ4MTYwZjMxZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9YSTJwcm90by5oO2VuZGxpbmU9NDg7bWQ1PTFhYzE1ODFlNjExODhkYTI4ODVjYzE0ZmY0OWIyMGJlIgotCi1QRSA9ICIxIgotCi1pbmhlcml0IGdldHRleHQKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNmNhZWJlYWQ0Yjc3OWJhMDMxNzI3ZjY2YTdmZmEzNTgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWE0N2VlNjIwNTNhNmFjZWYzYTgzZjUwNjMxMjQ5NGJlMTQ2MTA2OGQwYjkyNjlkODE4ODM5NzAzYjk1YzFkMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9pbnB1dHByb3RvXzIuMy4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL2lucHV0cHJvdG9fMi4zLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI1ZTY2YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9pbnB1dHByb3RvXzIuMy4yLmJiCkBAIC0wLDAgKzEsMjIgQEAKK3JlcXVpcmUgeG9yZy1wcm90by1jb21tb24uaW5jCisKK1NVTU1BUlkgPSAiWEk6IFggSW5wdXQgZXh0ZW5zaW9uIGhlYWRlcnMiCisKK0RFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBwcm92aWRlcyB0aGUgd2lyZSBwcm90b2NvbCBmb3IgdGhlIFggSW5wdXQgXAorZXh0ZW5zaW9uLiAgVGhlIGV4dGVuc2lvbiBzdXBwb3J0cyBpbnB1dCBkZXZpY2VzIG90aGVyIHRoZW4gdGhlIGNvcmUgWCBcCitrZXlib2FyZCBhbmQgcG9pbnRlci4iCisKK0xJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTU2MmNjMGY2NTg3Yjk2MWYwMzIyMTFkODE2MGYzMWUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vWEkycHJvdG8uaDtlbmRsaW5lPTQ4O21kNT0xYWMxNTgxZTYxMTg4ZGEyODg1Y2MxNGZmNDliMjBiZSIKKworUEUgPSAiMSIKKworaW5oZXJpdCBnZXR0ZXh0CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworU1JDX1VSSVttZDVzdW1dID0gImIyOTBhNDYzYWY3ZGVmNDgzZTZlMTkwZGU0NjBmMzFhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg5M2E2YWY1NTczMzI2MjA1OGEyN2IzOGVlYjFlZGM3MzM2NjlmMDFkNDA0ZTg1ODFiMTY3ZjAzYzAzZWYzMWQiCisKK0VYVFJBX09FQ09ORiArPSAiLS13aXRob3V0LWFzY2lpZG9jIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL2lucHV0cHJvdG9fZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL2lucHV0cHJvdG9fZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NTIwZjNiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9pbnB1dHByb3RvX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLXJlcXVpcmUgeG9yZy1wcm90by1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiWEk6IFggSW5wdXQgZXh0ZW5zaW9uIGhlYWRlcnMiCi0KLURFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBwcm92aWRlcyB0aGUgd2lyZSBwcm90b2NvbCBmb3IgdGhlIFggSW5wdXQgXAotZXh0ZW5zaW9uLiAgVGhlIGV4dGVuc2lvbiBzdXBwb3J0cyBpbnB1dCBkZXZpY2VzIG90aGVyIHRoZW4gdGhlIGNvcmUgWCBcCi1rZXlib2FyZCBhbmQgcG9pbnRlci4iCi0KLVBSID0gInIxIgotUEUgPSAiMSIKLVNSQ1JFViA9ICI3MjAzMDM2NTIyYmE5ZDRiMjI0ZDI4MmQ2YWZjMmQwYjk0NzcxMWVlIgotUFYgPSAiMS45Ljk5LjEyK2dpdCR7U1JDUFZ9IgotCi1TUkNfVVJJID0gImdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL2dpdC94b3JnL3Byb3RvL2lucHV0cHJvdG8iCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGdldHRleHQKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3ZpZGVvcHJvdG9fMi4zLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vdmlkZW9wcm90b18yLjMuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTNhYTc1OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vdmlkZW9wcm90b18yLjMuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLXJlcXVpcmUgeG9yZy1wcm90by1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiWHY6IFggVmlkZW8gZXh0ZW5zaW9uIGhlYWRlcnMiCi0KLURFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBwcm92aWRlcyB0aGUgd2lyZSBwcm90b2NvbCBmb3IgdGhlIFggVmlkZW8gXAotZXh0ZW5zaW9uLiAgVGhpcyBleHRlbnNpb24gYWxvd3MgZm9yIGFjY2VybGF0ZWQgZHJhd2luZyBvZiB2aWRlb3MuIgotCi1MSUNFTlNFID0gIk1JVCAmIE1JVC1zdHlsZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWNlMzQ3MmExMTlhODY0MDg1ZmE0MTU1Y2IwOTc5YTdiIgotCi1QRSA9ICIxIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTY1ODY0MTU5NTMyN2QzOTkwZWFiNzBmZGI1NWNhOGIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGRhZTE2OGNiODIwZmNkMzJmNTY0ODc5YWZiM2YyNGQyN2MxNzYzMDBkOWFmNjY4MTlhMTgyNjU1MzliZDRiNiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by92aWRlb3Byb3RvXzIuMy4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3ZpZGVvcHJvdG9fMi4zLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmY5N2EyNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by92aWRlb3Byb3RvXzIuMy4zLmJiCkBAIC0wLDAgKzEsMTQgQEAKK3JlcXVpcmUgeG9yZy1wcm90by1jb21tb24uaW5jCisKK1NVTU1BUlkgPSAiWHY6IFggVmlkZW8gZXh0ZW5zaW9uIGhlYWRlcnMiCisKK0RFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBwcm92aWRlcyB0aGUgd2lyZSBwcm90b2NvbCBmb3IgdGhlIFggVmlkZW8gXAorZXh0ZW5zaW9uLiAgVGhpcyBleHRlbnNpb24gYWxvd3MgZm9yIGFjY2VybGF0ZWQgZHJhd2luZyBvZiB2aWRlb3MuIgorCitMSUNFTlNFID0gIk1JVCAmIE1JVC1zdHlsZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWNlMzQ3MmExMTlhODY0MDg1ZmE0MTU1Y2IwOTc5YTdiIgorCitQRSA9ICIxIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZmU4NmRlOGVhM2ViNTNiNWE4ZjUyOTU2YzVjZDMxNzQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzc4MDM4ODlmZDA4ZTZmY2FmN2I2OGNjMzk0ZmIwMzhiMjMyNWQxZjMxNWU1NzFhNjk1NDU3N2UwN2NjYTcwMiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Y2ItcHJvdG8uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hjYi1wcm90by5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3MDNkNjMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hjYi1wcm90by5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1TVU1NQVJZID0gIlhDQjogVGhlIFggcHJvdG9jb2wgQyBiaW5kaW5nIGhlYWRlcnMiCi1ERVNDUklQVElPTiA9ICJGdW5jdGlvbiBwcm90b3R5cGVzIGZvciB0aGUgWCBwcm90b2NvbCBDLWxhbmd1YWdlIEJpbmRpbmcgXAotKFhDQikuICBYQ0IgaXMgYSByZXBsYWNlbWVudCBmb3IgWGxpYiBmZWF0dXJpbmcgYSBzbWFsbCBmb290cHJpbnQsIFwKLWxhdGVuY3kgaGlkaW5nLCBkaXJlY3QgYWNjZXNzIHRvIHRoZSBwcm90b2NvbCwgaW1wcm92ZWQgdGhyZWFkaW5nIFwKLXN1cHBvcnQsIGFuZCBleHRlbnNpYmlsaXR5LiIKLUhPTUVQQUdFID0gImh0dHA6Ly94Y2IuZnJlZWRlc2t0b3Aub3JnIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1YQ0IiCi0KLVNFQ1RJT04gPSAieDExL2xpYnMiCi1MSUNFTlNFID0gIk1JVC1YIgotCi1TUkNfVVJJID0gImh0dHA6Ly94Y2IuZnJlZWRlc2t0b3Aub3JnL2Rpc3QveGNiLXByb3RvLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vbm8tcHl0aG9uLW5hdGl2ZS5wYXRjaCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVBBQ0tBR0VTICs9ICJweXRob24teGNiZ2VuIgotCi1GSUxFU18ke1BOfSA9ICIiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7ZGF0YWRpcn0veGNiLyoueG1sICR7ZGF0YWRpcn0veGNiLyoueHNkIgotRklMRVNfcHl0aG9uLXhjYmdlbiA9ICIke2xpYmRpcn0veGNiLXByb3RvIgotCi1SREVQRU5EU18ke1BOfS1kZXYgPSAiIgotUlJFQ09NTUVORFNfJHtQTn0tZGJnID0gIiR7UE59LWRldiAoPSAke0VYVEVORFBLR1Z9KSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hjYi1wcm90by8wMDAxLU1ha2Utd2hpdGVzcGFjZS11c2UtY29uc2lzdGVudC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Y2ItcHJvdG8vMDAwMS1NYWtlLXdoaXRlc3BhY2UtdXNlLWNvbnNpc3RlbnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODllYzY2NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Y2ItcHJvdG8vMDAwMS1NYWtlLXdoaXRlc3BhY2UtdXNlLWNvbnNpc3RlbnQucGF0Y2gKQEAgLTAsMCArMSwyMTUgQEAKK0Zyb20gZWE3YTNhYzZjNjU4MTY0NjkwZTBmZWJiNTVmNDQ2N2NiOWUwYmNhYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRob21hcyBLbGF1c25lciA8d2l6QE5ldEJTRC5vcmc+CitEYXRlOiBUaHUsIDE5IE1heSAyMDE2IDE3OjMwOjA0ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBNYWtlIHdoaXRlc3BhY2UgdXNlIGNvbnNpc3RlbnQuCisKK0F0IGxlYXN0IHB5dGhvbi0zLjUueCBjb21wbGFpbnMgYWJvdXQgdGhpcyBmb3JjZWZ1bGx5LgorCitTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgS2xhdXNuZXIgPHdpekBOZXRCU0Qub3JnPgorU2lnbmVkLW9mZi1ieTogVWxpIFNjaGxhY2h0ZXIgPHBzeWNob25Aem5jLmluPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgeGNiZ2VuL2FsaWduLnB5IHwgOTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQ4IGluc2VydGlvbnMoKyksIDQ4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEveGNiZ2VuL2FsaWduLnB5IGIveGNiZ2VuL2FsaWduLnB5CitpbmRleCA1ZTMxODM4Li5kNGMxMmVlIDEwMDY0NAorLS0tIGEveGNiZ2VuL2FsaWduLnB5CisrKysgYi94Y2JnZW4vYWxpZ24ucHkKK0BAIC0xNiwxMiArMTYsMTIgQEAgY2xhc3MgQWxpZ25tZW50KG9iamVjdCk6CisgICAgICAgICByZXR1cm4gc2VsZi5hbGlnbiA9PSBvdGhlci5hbGlnbiBhbmQgc2VsZi5vZmZzZXQgPT0gb3RoZXIub2Zmc2V0CisgCisgICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorLQlyZXR1cm4gIihhbGlnbj0lZCwgb2Zmc2V0PSVkKSIgJSAoc2VsZi5hbGlnbiwgc2VsZi5vZmZzZXQpCisrICAgICAgICByZXR1cm4gIihhbGlnbj0lZCwgb2Zmc2V0PSVkKSIgJSAoc2VsZi5hbGlnbiwgc2VsZi5vZmZzZXQpCisgCisgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgZGVmIGZvcl9wcmltaXRpdmVfdHlwZShzaXplKToKKy0JIyBjb21wdXRlIHRoZSByZXF1aXJlZCBzdGFydF9hbGlnbm1lbnQgYmFzZWQgb24gdGhlIHNpemUgb2YgdGhlIHR5cGUKKy0JaWYgc2l6ZSAlIDggPT0gMDoKKysgICAgICAgICMgY29tcHV0ZSB0aGUgcmVxdWlyZWQgc3RhcnRfYWxpZ25tZW50IGJhc2VkIG9uIHRoZSBzaXplIG9mIHRoZSB0eXBlCisrICAgICAgICBpZiBzaXplICUgOCA9PSAwOgorICAgICAgICAgICAgICMgZG8gOC1ieXRlIHByaW1pdGl2ZXMgcmVxdWlyZSA4LWJ5dGUgYWxpZ25tZW50IGluIFgxMT8KKyAgICAgICAgICAgICByZXR1cm4gQWxpZ25tZW50KDgsMCkKKyAgICAgICAgIGVsaWYgc2l6ZSAlIDQgPT0gMDoKK0BAIC0zMyw3ICszMyw3IEBAIGNsYXNzIEFsaWdubWVudChvYmplY3QpOgorIAorIAorICAgICBkZWYgYWxpZ25fYWZ0ZXJfZml4ZWRfc2l6ZShzZWxmLCBzaXplKToKKy0JbmV3X29mZnNldCA9IChzZWxmLm9mZnNldCArIHNpemUpICUgc2VsZi5hbGlnbgorKyAgICAgICAgbmV3X29mZnNldCA9IChzZWxmLm9mZnNldCArIHNpemUpICUgc2VsZi5hbGlnbgorICAgICAgICAgcmV0dXJuIEFsaWdubWVudChzZWxmLmFsaWduLCBuZXdfb2Zmc2V0KQorIAorIAorQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgQWxpZ25tZW50KG9iamVjdCk6CisgICAgICAgICAnJycKKyAgICAgICAgIEFzc3VtaW5nIHRoZSBnaXZlbiBleHRlcm5hbF9hbGlnbiwgY2hlY2tzIHdoZXRoZXIKKyAgICAgICAgIHNlbGYgaXMgZnVsZmlsbGVkIGZvciBhbGwgY2FzZXMuCistCVJldHVybnMgVHJ1ZSBpZiB5ZXMsIEZhbHNlIG90aGVyd2lzZS4KKysgICAgICAgIFJldHVybnMgVHJ1ZSBpZiB5ZXMsIEZhbHNlIG90aGVyd2lzZS4KKyAgICAgICAgICcnJworICAgICAgICAgaWYgc2VsZi5hbGlnbiA9PSAxIGFuZCBzZWxmLm9mZnNldCA9PSAwOgorICAgICAgICAgICAgICMgYWxpZ25tZW50IDEgd2l0aCBvZmZzZXQgMCBpcyBhbHdheXMgZnVsZmlsbGVkCitAQCAtNTUsOSArNTUsOSBAQCBjbGFzcyBBbGlnbm1lbnQob2JqZWN0KToKKyAgICAgICAgICAgICAjIHRoZSBleHRlcm5hbCBhbGlnbiBndWFyYW50ZWVzIGxlc3MgYWxpZ25tZW50IC0+IG5vdCBndWFyYW50ZWVkCisgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgCistCWlmIGV4dGVybmFsX2FsaWduLmFsaWduICUgc2VsZi5hbGlnbiAhPSAwOgorKyAgICAgICAgaWYgZXh0ZXJuYWxfYWxpZ24uYWxpZ24gJSBzZWxmLmFsaWduICE9IDA6CisgICAgICAgICAgICAgIyB0aGUgZXh0ZXJuYWwgYWxpZ24gY2Fubm90IGJlIGRpdmlkZWQgYnkgb3VyIGFsaWduCistCSAgICAjIC0+IG5vdCBndWFyYW50ZWVkCisrICAgICAgICAgICAgIyAtPiBub3QgZ3VhcmFudGVlZAorICAgICAgICAgICAgICMgKHRoaXMgY2FuIG9ubHkgaGFwcGVuIGlmIHRoZXJlIGFyZSBhbGlnbm1lbnRzIHRoYXQgYXJlIG5vdAorICAgICAgICAgICAgICMgYSBwb3dlciBvZiAyLCB3aGljaCBpcyBoaWdobHkgZGlzY291cmFnZWQuIEJ1dCBiZXR0ZXIgYmUKKyAgICAgICAgICAgICAjIHNhZmUgYW5kIGNoZWNrIGZvciBpdCkKK0BAIC03Miw3ICs3Miw3IEBAIGNsYXNzIEFsaWdubWVudChvYmplY3QpOgorIAorICAgICBkZWYgY29tYmluZV93aXRoKHNlbGYsIG90aGVyKToKKyAgICAgICAgICMgcmV0dXJucyB0aGUgYWxpZ25tZW50IHRoYXQgaXMgZ3VhcmFudGVlZCB3aGVuCistCSMgYm90aCwgc2VsZiBvciBvdGhlciwgY2FuIGhhcHBlbgorKyAgICAgICAgIyBib3RoLCBzZWxmIG9yIG90aGVyLCBjYW4gaGFwcGVuCisgICAgICAgICBuZXdfYWxpZ24gPSBnY2Qoc2VsZi5hbGlnbiwgb3RoZXIuYWxpZ24pCisgICAgICAgICBuZXdfb2Zmc2V0X2NhbmRpZGF0ZTEgPSBzZWxmLm9mZnNldCAlIG5ld19hbGlnbgorICAgICAgICAgbmV3X29mZnNldF9jYW5kaWRhdGUyID0gb3RoZXIub2Zmc2V0ICUgbmV3X2FsaWduCitAQCAtODMsOCArODMsOCBAQCBjbGFzcyBBbGlnbm1lbnQob2JqZWN0KToKKyAgICAgICAgICAgICBuZXdfYWxpZ24gPSBnY2QobmV3X2FsaWduLCBvZmZzZXRfZGlmZikKKyAgICAgICAgICAgICBuZXdfb2Zmc2V0X2NhbmRpZGF0ZTEgPSBzZWxmLm9mZnNldCAlIG5ld19hbGlnbgorICAgICAgICAgICAgIG5ld19vZmZzZXRfY2FuZGlkYXRlMiA9IG90aGVyLm9mZnNldCAlIG5ld19hbGlnbgorLQkgICAgYXNzZXJ0IG5ld19vZmZzZXRfY2FuZGlkYXRlMSA9PSBuZXdfb2Zmc2V0X2NhbmRpZGF0ZTIKKy0JICAgIG5ld19vZmZzZXQgPSBuZXdfb2Zmc2V0X2NhbmRpZGF0ZTEKKysgICAgICAgICAgICBhc3NlcnQgbmV3X29mZnNldF9jYW5kaWRhdGUxID09IG5ld19vZmZzZXRfY2FuZGlkYXRlMgorKyAgICAgICAgICAgIG5ld19vZmZzZXQgPSBuZXdfb2Zmc2V0X2NhbmRpZGF0ZTEKKyAgICAgICAgICMgcmV0dXJuIHRoZSByZXN1bHQKKyAgICAgICAgIHJldHVybiBBbGlnbm1lbnQobmV3X2FsaWduLCBuZXdfb2Zmc2V0KQorIAorQEAgLTkyLDQ0ICs5Miw0NCBAQCBjbGFzcyBBbGlnbm1lbnQob2JqZWN0KToKKyBjbGFzcyBBbGlnbm1lbnRMb2cob2JqZWN0KToKKyAKKyAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorLQlzZWxmLm9rX2xpc3QgPSBbXQorLQlzZWxmLmZhaWxfbGlzdCA9IFtdCistCXNlbGYudmVyYm9zaXR5ID0gMQorKyAgICAgICAgc2VsZi5va19saXN0ID0gW10KKysgICAgICAgIHNlbGYuZmFpbF9saXN0ID0gW10KKysgICAgICAgIHNlbGYudmVyYm9zaXR5ID0gMQorIAorICAgICBkZWYgX19zdHJfXyhzZWxmKToKKy0JcmVzdWx0ID0gIiIKKysgICAgICAgIHJlc3VsdCA9ICIiCisgCistCSMgb3V0cHV0IHRoZSBPSy1saXN0CistCWZvciAoYWxpZ25fYmVmb3JlLCBmaWVsZF9uYW1lLCB0eXBlX29iaiwgY2FsbHN0YWNrLCBhbGlnbl9hZnRlcikgaW4gc2VsZi5va19saXN0OgorLQkgICAgc3RhY2tzaXplID0gbGVuKGNhbGxzdGFjaykKKysgICAgICAgICMgb3V0cHV0IHRoZSBPSy1saXN0CisrICAgICAgICBmb3IgKGFsaWduX2JlZm9yZSwgZmllbGRfbmFtZSwgdHlwZV9vYmosIGNhbGxzdGFjaywgYWxpZ25fYWZ0ZXIpIGluIHNlbGYub2tfbGlzdDoKKysgICAgICAgICAgICBzdGFja3NpemUgPSBsZW4oY2FsbHN0YWNrKQorICAgICAgICAgICAgIGluZGVudCA9ICcgICcgKiBzdGFja3NpemUKKy0JICAgIGlmIHNlbGYub2tfY2FsbHN0YWNrX2lzX3JlbGV2YW50KGNhbGxzdGFjayk6CisrICAgICAgICAgICAgaWYgc2VsZi5va19jYWxsc3RhY2tfaXNfcmVsZXZhbnQoY2FsbHN0YWNrKToKKyAgICAgICAgICAgICAgICAgaWYgZmllbGRfbmFtZSBpcyBOb25lIG9yIGZpZWxkX25hbWUgPT0gIiI6CistCSAgICAgICAgICAgIHJlc3VsdCArPSAoIiAgICAlc29rOiAlczpcblx0JXNiZWZvcmU6ICVzLCBhZnRlcjogJXNcbiIKKy0JCSAgICAgICAgJSAoaW5kZW50LCBzdHIodHlwZV9vYmopLCBpbmRlbnQsIHN0cihhbGlnbl9iZWZvcmUpLCBzdHIoYWxpZ25fYWZ0ZXIpKSkKKy0JICAgICAgICBlbHNlOgorLQkJICAgIHJlc3VsdCArPSAoIiAgICAlc29rOiBmaWVsZCBcIiVzXCIgaW4gJXM6XG5cdCVzYmVmb3JlOiAlcywgYWZ0ZXI6ICVzXG4iCistCQkgICAgICAgICUgKGluZGVudCwgc3RyKGZpZWxkX25hbWUpLCBzdHIodHlwZV9vYmopLAorLQkJICAgICAgICAgICBpbmRlbnQsIHN0cihhbGlnbl9iZWZvcmUpLCBzdHIoYWxpZ25fYWZ0ZXIpKSkKKysgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAoIiAgICAlc29rOiAlczpcblx0JXNiZWZvcmU6ICVzLCBhZnRlcjogJXNcbiIKKysgICAgICAgICAgICAgICAgICAgICAgICAlIChpbmRlbnQsIHN0cih0eXBlX29iaiksIGluZGVudCwgc3RyKGFsaWduX2JlZm9yZSksIHN0cihhbGlnbl9hZnRlcikpKQorKyAgICAgICAgICAgICAgICBlbHNlOgorKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICgiICAgICVzb2s6IGZpZWxkIFwiJXNcIiBpbiAlczpcblx0JXNiZWZvcmU6ICVzLCBhZnRlcjogJXNcbiIKKysgICAgICAgICAgICAgICAgICAgICAgICAlIChpbmRlbnQsIHN0cihmaWVsZF9uYW1lKSwgc3RyKHR5cGVfb2JqKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRlbnQsIHN0cihhbGlnbl9iZWZvcmUpLCBzdHIoYWxpZ25fYWZ0ZXIpKSkKKyAgICAgICAgICAgICAgICAgaWYgc2VsZi52ZXJib3NpdHkgPj0gMToKKy0JCSAgICByZXN1bHQgKz0gc2VsZi5jYWxsc3RhY2tfdG9fc3RyKGluZGVudCwgY2FsbHN0YWNrKQorKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHNlbGYuY2FsbHN0YWNrX3RvX3N0cihpbmRlbnQsIGNhbGxzdGFjaykKKyAKKy0JIyBvdXRwdXQgdGhlIGZhaWwtbGlzdAorLQlmb3IgKGFsaWduX2JlZm9yZSwgZmllbGRfbmFtZSwgdHlwZV9vYmosIGNhbGxzdGFjaywgcmVhc29uKSBpbiBzZWxmLmZhaWxfbGlzdDoKKy0JICAgIHN0YWNrc2l6ZSA9IGxlbihjYWxsc3RhY2spCisrICAgICAgICAjIG91dHB1dCB0aGUgZmFpbC1saXN0CisrICAgICAgICBmb3IgKGFsaWduX2JlZm9yZSwgZmllbGRfbmFtZSwgdHlwZV9vYmosIGNhbGxzdGFjaywgcmVhc29uKSBpbiBzZWxmLmZhaWxfbGlzdDoKKysgICAgICAgICAgICBzdGFja3NpemUgPSBsZW4oY2FsbHN0YWNrKQorICAgICAgICAgICAgIGluZGVudCA9ICcgICcgKiBzdGFja3NpemUKKy0JICAgIGlmIGZpZWxkX25hbWUgaXMgTm9uZSBvciBmaWVsZF9uYW1lID09ICIiOgorLQkgICAgICAgIHJlc3VsdCArPSAoIiAgICAlc2ZhaWw6IGFsaWduICVzIGlzIGluY29tcGF0aWJsZSB3aXRoXG5cdCVzJXNcblx0JXNSZWFzb246ICVzXG4iCistCQkgICAgJSAoaW5kZW50LCBzdHIoYWxpZ25fYmVmb3JlKSwgaW5kZW50LCBzdHIodHlwZV9vYmopLCBpbmRlbnQsIHJlYXNvbikpCistCSAgICBlbHNlOgorLQkJcmVzdWx0ICs9ICgiICAgICVzZmFpbDogYWxpZ24gJXMgaXMgaW5jb21wYXRpYmxlIHdpdGhcblx0JXNmaWVsZCBcIiVzXCIgaW4gJXNcblx0JXNSZWFzb246ICVzXG4iCistCQkgICAgJSAoaW5kZW50LCBzdHIoYWxpZ25fYmVmb3JlKSwgaW5kZW50LCBzdHIoZmllbGRfbmFtZSksIHN0cih0eXBlX29iaiksIGluZGVudCwgcmVhc29uKSkKKysgICAgICAgICAgICBpZiBmaWVsZF9uYW1lIGlzIE5vbmUgb3IgZmllbGRfbmFtZSA9PSAiIjoKKysgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICgiICAgICVzZmFpbDogYWxpZ24gJXMgaXMgaW5jb21wYXRpYmxlIHdpdGhcblx0JXMlc1xuXHQlc1JlYXNvbjogJXNcbiIKKysgICAgICAgICAgICAgICAgICAgICUgKGluZGVudCwgc3RyKGFsaWduX2JlZm9yZSksIGluZGVudCwgc3RyKHR5cGVfb2JqKSwgaW5kZW50LCByZWFzb24pKQorKyAgICAgICAgICAgIGVsc2U6CisrICAgICAgICAgICAgICAgIHJlc3VsdCArPSAoIiAgICAlc2ZhaWw6IGFsaWduICVzIGlzIGluY29tcGF0aWJsZSB3aXRoXG5cdCVzZmllbGQgXCIlc1wiIGluICVzXG5cdCVzUmVhc29uOiAlc1xuIgorKyAgICAgICAgICAgICAgICAgICAgJSAoaW5kZW50LCBzdHIoYWxpZ25fYmVmb3JlKSwgaW5kZW50LCBzdHIoZmllbGRfbmFtZSksIHN0cih0eXBlX29iaiksIGluZGVudCwgcmVhc29uKSkKKyAKKyAgICAgICAgICAgICBpZiBzZWxmLnZlcmJvc2l0eSA+PSAxOgorLQkgICAgICAgIHJlc3VsdCArPSBzZWxmLmNhbGxzdGFja190b19zdHIoaW5kZW50LCBjYWxsc3RhY2spCisrICAgICAgICAgICAgICAgIHJlc3VsdCArPSBzZWxmLmNhbGxzdGFja190b19zdHIoaW5kZW50LCBjYWxsc3RhY2spCisgCisgCistCXJldHVybiByZXN1bHQKKysgICAgICAgIHJldHVybiByZXN1bHQKKyAKKyAKKyAgICAgZGVmIGNhbGxzdGFja190b19zdHIoc2VsZiwgaW5kZW50LCBjYWxsc3RhY2spOgorQEAgLTEzNyw0MSArMTM3LDQxIEBAIGNsYXNzIEFsaWdubWVudExvZyhvYmplY3QpOgorICAgICAgICAgZm9yIHN0YWNrX2VsZW0gaW4gY2FsbHN0YWNrOgorICAgICAgICAgICAgIHJlc3VsdCArPSAiXHQgICVzJXNcbiIgJSAoaW5kZW50LCBzdHIoc3RhY2tfZWxlbSkpCisgICAgICAgICByZXN1bHQgKz0gIlx0JXNdXG4iICUgaW5kZW50CistCXJldHVybiByZXN1bHQKKysgICAgICAgIHJldHVybiByZXN1bHQKKyAKKyAKKyAgICAgZGVmIG9rX2NhbGxzdGFja19pc19yZWxldmFudChzZWxmLCBva19jYWxsc3RhY2spOgorICAgICAgICAgIyBkZXRlcm1pbmUgd2hldGhlciBhbiBvayBjYWxsc3RhY2sgaXMgcmVsZXZhbnQgZm9yIGxvZ2dpbmcKKy0JaWYgc2VsZi52ZXJib3NpdHkgPj0gMjoKKy0JICAgIHJldHVybiBUcnVlCisrICAgICAgICBpZiBzZWxmLnZlcmJvc2l0eSA+PSAyOgorKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgCisgICAgICAgICAjIGVtcHR5IGNhbGxzdGFja3MgYXJlIGFsd2F5cyByZWxldmFudAorLQlpZiBsZW4ob2tfY2FsbHN0YWNrKSA9PSAwOgorKyAgICAgICAgaWYgbGVuKG9rX2NhbGxzdGFjaykgPT0gMDoKKyAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorIAorLQkjIGNoZWNrIHdoZXRoZXIgdGhlIG9rX2NhbGxzdGFjayBpcyBhIHN1YnNldCBvciBlcXVhbCB0byBhIGZhaWxfY2FsbHN0YWNrCisrICAgICAgICAjIGNoZWNrIHdoZXRoZXIgdGhlIG9rX2NhbGxzdGFjayBpcyBhIHN1YnNldCBvciBlcXVhbCB0byBhIGZhaWxfY2FsbHN0YWNrCisgICAgICAgICBmb3IgKGFsaWduX2JlZm9yZSwgZmllbGRfbmFtZSwgdHlwZV9vYmosIGZhaWxfY2FsbHN0YWNrLCByZWFzb24pIGluIHNlbGYuZmFpbF9saXN0OgorICAgICAgICAgICAgIGlmIGxlbihva19jYWxsc3RhY2spIDw9IGxlbihmYWlsX2NhbGxzdGFjayk6CisgICAgICAgICAgICAgICAgIHppcHBlZCA9IHppcChva19jYWxsc3RhY2ssIGZhaWxfY2FsbHN0YWNrWzpsZW4ob2tfY2FsbHN0YWNrKV0pCistCQlpc19zdWJzZXQgPSBhbGwoW2kgPT0gaiBmb3IgaSwgaiBpbiB6aXBwZWRdKQorLQkJaWYgaXNfc3Vic2V0OgorKyAgICAgICAgICAgICAgICBpc19zdWJzZXQgPSBhbGwoW2kgPT0gaiBmb3IgaSwgaiBpbiB6aXBwZWRdKQorKyAgICAgICAgICAgICAgICBpZiBpc19zdWJzZXQ6CisgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorIAorICAgICAgICAgcmV0dXJuIEZhbHNlCisgCisgCisgICAgIGRlZiBvayhzZWxmLCBhbGlnbl9iZWZvcmUsIGZpZWxkX25hbWUsIHR5cGVfb2JqLCBjYWxsc3RhY2ssIGFsaWduX2FmdGVyKToKKy0Jc2VsZi5va19saXN0LmFwcGVuZCgoYWxpZ25fYmVmb3JlLCBmaWVsZF9uYW1lLCB0eXBlX29iaiwgY2FsbHN0YWNrLCBhbGlnbl9hZnRlcikpCisrICAgICAgICBzZWxmLm9rX2xpc3QuYXBwZW5kKChhbGlnbl9iZWZvcmUsIGZpZWxkX25hbWUsIHR5cGVfb2JqLCBjYWxsc3RhY2ssIGFsaWduX2FmdGVyKSkKKyAKKyAgICAgZGVmIGZhaWwoc2VsZiwgYWxpZ25fYmVmb3JlLCBmaWVsZF9uYW1lLCB0eXBlX29iaiwgY2FsbHN0YWNrLCByZWFzb24pOgorLQlzZWxmLmZhaWxfbGlzdC5hcHBlbmQoKGFsaWduX2JlZm9yZSwgZmllbGRfbmFtZSwgdHlwZV9vYmosIGNhbGxzdGFjaywgcmVhc29uKSkKKysgICAgICAgIHNlbGYuZmFpbF9saXN0LmFwcGVuZCgoYWxpZ25fYmVmb3JlLCBmaWVsZF9uYW1lLCB0eXBlX29iaiwgY2FsbHN0YWNrLCByZWFzb24pKQorIAorICAgICBkZWYgYXBwZW5kKHNlbGYsIG90aGVyKToKKy0Jc2VsZi5va19saXN0LmV4dGVuZChvdGhlci5va19saXN0KQorLQlzZWxmLmZhaWxfbGlzdC5leHRlbmQob3RoZXIuZmFpbF9saXN0KQorKyAgICAgICAgc2VsZi5va19saXN0LmV4dGVuZChvdGhlci5va19saXN0KQorKyAgICAgICAgc2VsZi5mYWlsX2xpc3QuZXh0ZW5kKG90aGVyLmZhaWxfbGlzdCkKKyAKKyAgICAgZGVmIG9rX2NvdW50KHNlbGYpOgorLQlyZXR1cm4gbGVuKHNlbGYub2tfbGlzdCkKKysgICAgICAgIHJldHVybiBsZW4oc2VsZi5va19saXN0KQorIAorIAorIAorLS0gCisyLjkuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veGNiLXByb3RvLzAwMDItcHJpbnQtaXMtYS1mdW5jdGlvbi1hbmQtbmVlZHMtcGFyZW50aGVzZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veGNiLXByb3RvLzAwMDItcHJpbnQtaXMtYS1mdW5jdGlvbi1hbmQtbmVlZHMtcGFyZW50aGVzZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQyYWNiOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Y2ItcHJvdG8vMDAwMi1wcmludC1pcy1hLWZ1bmN0aW9uLWFuZC1uZWVkcy1wYXJlbnRoZXNlcy5wYXRjaApAQCAtMCwwICsxLDc1IEBACitGcm9tIGJlYTVlMWM4NWJkYzA5NTA5MTM3OTAzNjRlMTgyMjhmMjAzOTVhM2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUaG9tYXMgS2xhdXNuZXIgPHdpekBOZXRCU0Qub3JnPgorRGF0ZTogVGh1LCAxOSBNYXkgMjAxNiAxNzozMDowNSArMDIwMAorU3ViamVjdDogW1BBVENIIDIvMl0gcHJpbnQoKSBpcyBhIGZ1bmN0aW9uIGFuZCBuZWVkcyBwYXJlbnRoZXNlcy4KKworRml4ZXMgYnVpbGQgd2l0aCBweXRob24tMy54LgorCitTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgS2xhdXNuZXIgPHdpekBOZXRCU0Qub3JnPgorU2lnbmVkLW9mZi1ieTogVWxpIFNjaGxhY2h0ZXIgPHBzeWNob25Aem5jLmluPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgeGNiZ2VuL3h0eXBlcy5weSB8IDEyICsrKysrKy0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS94Y2JnZW4veHR5cGVzLnB5IGIveGNiZ2VuL3h0eXBlcy5weQoraW5kZXggYzNiNTc1OC4uYjgzYjExOSAxMDA2NDQKKy0tLSBhL3hjYmdlbi94dHlwZXMucHkKKysrKyBiL3hjYmdlbi94dHlwZXMucHkKK0BAIC01MDEsNyArNTAxLDcgQEAgY2xhc3MgQ29tcGxleFR5cGUoVHlwZSk6CisgICAgICAgICAgICAgICAgIGludChyZXF1aXJlZF9zdGFydF9hbGlnbl9lbGVtZW50LmdldCgnYWxpZ24nLCAiNCIpLCAwKSwKKyAgICAgICAgICAgICAgICAgaW50KHJlcXVpcmVkX3N0YXJ0X2FsaWduX2VsZW1lbnQuZ2V0KCdvZmZzZXQnLCAiMCIpLCAwKSkKKyAgICAgICAgICAgICBpZiB2ZXJib3NlX2FsaWduX2xvZzoKKy0gICAgICAgICAgICAgICAgcHJpbnQgIkV4cGxpY2l0IHN0YXJ0LWFsaWduIGZvciAlczogJXNcbiIgJSAoc2VsZiwgc2VsZi5yZXF1aXJlZF9zdGFydF9hbGlnbikKKysgICAgICAgICAgICAgICAgcHJpbnQgKCJFeHBsaWNpdCBzdGFydC1hbGlnbiBmb3IgJXM6ICVzXG4iICUgKHNlbGYsIHNlbGYucmVxdWlyZWRfc3RhcnRfYWxpZ24pKQorIAorICAgICBkZWYgcmVzb2x2ZShzZWxmLCBtb2R1bGUpOgorICAgICAgICAgaWYgc2VsZi5yZXNvbHZlZDoKK0BAIC01OTIsNyArNTkyLDcgQEAgY2xhc3MgQ29tcGxleFR5cGUoVHlwZSk6CisgICAgICAgICAgICAgICAgIGlmIHZlcmJvc2VfYWxpZ25fbG9nOgorICAgICAgICAgICAgICAgICAgICAgcHJpbnQgKCJjYWxjX3JlcXVpcmVkX3N0YXJ0X2FsaWduOiAlcyBoYXMgc3RhcnQtYWxpZ24gJXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgJSAoc3RyKHNlbGYpLCBzdHIoc2VsZi5yZXF1aXJlZF9zdGFydF9hbGlnbikpKQorLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIkRldGFpbHM6XG4iICsgc3RyKGxvZykKKysgICAgICAgICAgICAgICAgICAgIHByaW50ICgiRGV0YWlsczpcbiIgKyBzdHIobG9nKSkKKyAgICAgICAgICAgICAgICAgaWYgc2VsZi5yZXF1aXJlZF9zdGFydF9hbGlnbi5vZmZzZXQgIT0gMDoKKyAgICAgICAgICAgICAgICAgICAgIHByaW50ICgoIldBUk5JTkc6ICVzXG5cdGhhcyBzdGFydC1hbGlnbiB3aXRoIG5vbi16ZXJvIG9mZnNldDogJXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgKyAiXG5cdHN1Z2dlc3QgdG8gYWRkIGV4cGxpY2l0IGRlZmluaXRpb24gd2l0aDoiCitAQCAtNjE5LDEyICs2MTksMTIgQEAgY2xhc3MgQ29tcGxleFR5cGUoVHlwZSk6CisgICAgICAgICAgICAgZm9yIG9mZnNldCBpbiByYW5nZSgwLGFsaWduKToKKyAgICAgICAgICAgICAgICAgYWxpZ25fY2FuZGlkYXRlID0gQWxpZ25tZW50KGFsaWduLCBvZmZzZXQpCisgICAgICAgICAgICAgICAgIGlmIHZlcmJvc2VfYWxpZ25fbG9nOgorLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgInRyeWluZyAlcyBmb3IgJXMiICUgKHN0cihhbGlnbl9jYW5kaWRhdGUpLCBzdHIoc2VsZikpCisrICAgICAgICAgICAgICAgICAgICBwcmludCAoInRyeWluZyAlcyBmb3IgJXMiICUgKHN0cihhbGlnbl9jYW5kaWRhdGUpLCBzdHIoc2VsZikpKQorICAgICAgICAgICAgICAgICBteV9sb2cgPSBBbGlnbm1lbnRMb2coKQorICAgICAgICAgICAgICAgICBpZiBzZWxmLmlzX3Bvc3NpYmxlX3N0YXJ0X2FsaWduKGFsaWduX2NhbmRpZGF0ZSwgY2FsbHN0YWNrLCBteV9sb2cpOgorICAgICAgICAgICAgICAgICAgICAgbG9nLmFwcGVuZChteV9sb2cpCisgICAgICAgICAgICAgICAgICAgICBpZiB2ZXJib3NlX2FsaWduX2xvZzoKKy0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCAiZm91bmQgc3RhcnQtYWxpZ24gJXMgZm9yICVzIiAlIChzdHIoYWxpZ25fY2FuZGlkYXRlKSwgc3RyKHNlbGYpKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICgiZm91bmQgc3RhcnQtYWxpZ24gJXMgZm9yICVzIiAlIChzdHIoYWxpZ25fY2FuZGlkYXRlKSwgc3RyKHNlbGYpKSkKKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhbGlnbl9jYW5kaWRhdGUKKyAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIG15X29rX2NvdW50ID0gbXlfbG9nLm9rX2NvdW50KCkKK0BAIC02NDEsNyArNjQxLDcgQEAgY2xhc3MgQ29tcGxleFR5cGUoVHlwZSk6CisgICAgICAgICAjIG5vbmUgb2YgdGhlIGNhbmRpZGF0ZXMgYXBwbGllcworICAgICAgICAgIyB0aGlzIHR5cGUgaGFzIGlsbGVnYWwgaW50ZXJuYWwgYWxpZ25zIGZvciBhbGwgcG9zc2libGUgc3RhcnRfYWxpZ25zCisgICAgICAgICBpZiB2ZXJib3NlX2FsaWduX2xvZzoKKy0gICAgICAgICAgICBwcmludCAiZGlkbid0IGZpbmQgc3RhcnQtYWxpZ24gZm9yICVzIiAlIHN0cihzZWxmKQorKyAgICAgICAgICAgIHByaW50ICgiZGlkbid0IGZpbmQgc3RhcnQtYWxpZ24gZm9yICVzIiAlIHN0cihzZWxmKSkKKyAgICAgICAgIGxvZy5hcHBlbmQoYmVzdF9sb2cpCisgICAgICAgICByZXR1cm4gTm9uZQorIAorQEAgLTkwMCw3ICs5MDAsNyBAQCBjbGFzcyBTd2l0Y2hUeXBlKENvbXBsZXhUeXBlKToKKyAgICAgIyBhdXggZnVuY3Rpb24gZm9yIHVuY2hlY2tlZF9nZXRfYWxpZ25tZW50X2FmdGVyCisgICAgIGRlZiBnZXRfYWxpZ25fZm9yX3NlbGVjdGVkX2Nhc2VfZmllbGQoc2VsZiwgY2FzZV9maWVsZCwgc3RhcnRfYWxpZ24sIGNhbGxzdGFjaywgbG9nKToKKyAgICAgICAgIGlmIHZlcmJvc2VfYWxpZ25fbG9nOgorLSAgICAgICAgICAgIHByaW50ICJnZXRfYWxpZ25fZm9yX3NlbGVjdGVkX2Nhc2VfZmllbGQ6ICVzLCBjYXNlX2ZpZWxkID0gJXMiICUgKHN0cihzZWxmKSwgc3RyKGNhc2VfZmllbGQpKQorKyAgICAgICAgICAgIHByaW50ICgiZ2V0X2FsaWduX2Zvcl9zZWxlY3RlZF9jYXNlX2ZpZWxkOiAlcywgY2FzZV9maWVsZCA9ICVzIiAlIChzdHIoc2VsZiksIHN0cihjYXNlX2ZpZWxkKSkpCisgICAgICAgICB0b3RhbF9hbGlnbiA9IHN0YXJ0X2FsaWduCisgICAgICAgICBmb3IgZmllbGQgaW4gc2VsZi5iaXRjYXNlczoKKyAgICAgICAgICAgICBteV9jYWxsc3RhY2sgPSBjYWxsc3RhY2tbOl0KKy0tIAorMi45LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hjYi1wcm90by9uby1weXRob24tbmF0aXZlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hjYi1wcm90by9uby1weXRob24tbmF0aXZlLnBhdGNoCmluZGV4IGY4MDhlMTkuLjA5YjYwODggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Y2ItcHJvdG8vbm8tcHl0aG9uLW5hdGl2ZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veGNiLXByb3RvL25vLXB5dGhvbi1uYXRpdmUucGF0Y2gKQEAgLTIwLDcgKzIwLDcgQEAKIC1BTV9QQVRIX1BZVEhPTihbMi41XSkKICtweXRob25kaXI9IiR7bGliZGlyfS94Y2ItcHJvdG8iCiArQUNfU1VCU1QocHl0aG9uZGlyKQotK1BZVEhPTj0icHl0aG9uIgorK1BZVEhPTj0icHl0aG9uMyIKICtBQ19TVUJTVChQWVRIT04pCiAKICB4Y2JpbmNsdWRlZGlyPScke2RhdGFkaXJ9L3hjYicKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Y2ItcHJvdG9fMS4xMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Y2ItcHJvdG9fMS4xMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWJjNWExMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veGNiLXByb3RvXzEuMTEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLWluY2x1ZGUgeGNiLXByb3RvLmluYwotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ3NjNiMDgxY2IxMGMyMjM0MzViMDFlMDBkYzBhYmE3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9kcmkyLnhtbDtiZWdpbmxpbmU9MjtlbmRsaW5lPTI4O21kNT1mODc2M2IxM2ZmNDMyZTg1OTdlMGQ2MTBjZjU5OGU2NSIKLQotCi1TUkNfVVJJW21kNXN1bV0gPSAiNmJmMjc5NzQ0NWRjNmQ0M2U5ZTQ3MDdjMDgyZWZmOWMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjRhY2VlZTY1MDJhMGNlNDVmYzM5YjMzYzU0MWEyZGY0NzE1ZDAwYjcyZTY2MGViZThjNWJiNDQ0NzcxZTMyZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Y2ItcHJvdG9fMS4xMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Y2ItcHJvdG9fMS4xMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzA0YmM0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hjYi1wcm90b18xLjEyLmJiCkBAIC0wLDAgKzEsNDAgQEAKK1NVTU1BUlkgPSAiWENCOiBUaGUgWCBwcm90b2NvbCBDIGJpbmRpbmcgaGVhZGVycyIKK0RFU0NSSVBUSU9OID0gIkZ1bmN0aW9uIHByb3RvdHlwZXMgZm9yIHRoZSBYIHByb3RvY29sIEMtbGFuZ3VhZ2UgQmluZGluZyBcCisoWENCKS4gIFhDQiBpcyBhIHJlcGxhY2VtZW50IGZvciBYbGliIGZlYXR1cmluZyBhIHNtYWxsIGZvb3RwcmludCwgXAorbGF0ZW5jeSBoaWRpbmcsIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIHByb3RvY29sLCBpbXByb3ZlZCB0aHJlYWRpbmcgXAorc3VwcG9ydCwgYW5kIGV4dGVuc2liaWxpdHkuIgorSE9NRVBBR0UgPSAiaHR0cDovL3hjYi5mcmVlZGVza3RvcC5vcmciCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PVhDQiIKKworU0VDVElPTiA9ICJ4MTEvbGlicyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDc2M2IwODFjYjEwYzIyMzQzNWIwMWUwMGRjMGFiYTcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2RyaTIueG1sO2JlZ2lubGluZT0yO2VuZGxpbmU9Mjg7bWQ1PWY4NzYzYjEzZmY0MzJlODU5N2UwZDYxMGNmNTk4ZTY1IgorCitTUkNfVVJJID0gImh0dHA6Ly94Y2IuZnJlZWRlc2t0b3Aub3JnL2Rpc3QveGNiLXByb3RvLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vbm8tcHl0aG9uLW5hdGl2ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2Utd2hpdGVzcGFjZS11c2UtY29uc2lzdGVudC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLXByaW50LWlzLWEtZnVuY3Rpb24tYW5kLW5lZWRzLXBhcmVudGhlc2VzLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjE0ZTYwOTE5Zjg1OTU2MGYyODQyNmE2ODVhNTU1OTYyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU5MjJhYmE0YzY2NGFiNzg5OWEyOWQ5MmVhOTFhODdhYTRjMWZjN2ViNWVlNTUwMzI1YzMyMTZjNDgwYTQ5MDYiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitQQUNLQUdFUyArPSAicHl0aG9uLXhjYmdlbiIKKworRklMRVNfJHtQTn0gPSAiIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L3hjYi8qLnhtbCAke2RhdGFkaXJ9L3hjYi8qLnhzZCIKK0ZJTEVTX3B5dGhvbi14Y2JnZW4gPSAiJHtsaWJkaXJ9L3hjYi1wcm90byIKKworUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKK1JSRUNPTU1FTkRTXyR7UE59LWRiZyA9ICIke1BOfS1kZXYgKD0gJHtFWFRFTkRQS0dWfSkiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgIyBNYWtlZmlsZSdzIGRvX2luc3RhbGwgY3JlYXRlcyAucHljIGZpbGVzIGZvciBweXRob24zLCBub3cgYWxzbyBjcmVhdGUKKyAgICAjIHRoZW0gZm9yIHB5dGhvbjIgc28gdGhhdCB0aGV5IHdpbGwgYmUgcmVjb3JkZWQgYnkgbWFuaWZlc3QsIGFuZCBjYW4gYmUKKyAgICAjIGNsZWFuZWQgY29ycmVjdGx5LgorICAgIHB5dGhvbiAtbSBweV9jb21waWxlICR7RH0ke2xpYmRpcn0veGNiLXByb3RvL3hjYmdlbi8qLnB5Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veGNiLXByb3RvX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Y2ItcHJvdG9fZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZWE0ZDA0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Y2ItcHJvdG9fZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1ERUZBVUxUX1BSRUZFUkVOQ0UgPSAiLTEiCi0KLWluY2x1ZGUgeGNiLXByb3RvLmluYwotU1JDUkVWID0gImQ4MWNhMjMzZTk4YmU4ZmE1OWU4YzkwZDI2MmMwNTE2OTQ0YzVhNjYiCi1QViA9ICIxLjIrZ2l0ciR7U1JDUFZ9IgotUFIgPSAicjQiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvZ2l0L3hjYi9wcm90byIKLVMgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veGluZXJhbWFwcm90b18xLjIuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94aW5lcmFtYXByb3RvXzEuMi4xLmJiCmluZGV4IGQwMDc3NGUuLmRkZTdlOWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94aW5lcmFtYXByb3RvXzEuMi4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94aW5lcmFtYXByb3RvXzEuMi4xLmJiCkBAIC0xNSwzICsxNSw1IEBACiAKIFNSQ19VUklbbWQ1c3VtXSA9ICI5OTU5ZmUwYmZiMjJhMGU3MjYwNDMzYjhkMTk5NTkwYSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI5Nzc1NzRiYjNkYzE5MmVjZDljNTVmNTlmOTkxZWMxZGZmMzQwYmUzZTMxMzkyYzk1ZGVmZjQyM2RhNTI0ODViIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veHByb3RvL3hwcm90b19maXhfZm9yX3gzMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94cHJvdG8veHByb3RvX2ZpeF9mb3JfeDMyLnBhdGNoCmluZGV4IDU0MGFkMjcuLjhhNWZmNTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94cHJvdG8veHByb3RvX2ZpeF9mb3JfeDMyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94cHJvdG8veHByb3RvX2ZpeF9mb3JfeDMyLnBhdGNoCkBAIC04LDcgKzgsNyBAQAogVGhpcyBmaXhlcyBjb21waWxhdGlvbiB3aXRoIHgzMiB0b29sY2hhaW4uCiAKIFJlY2VpdmVkIHRoaXMgcGF0Y2ggZnJvbSBILkouIEx1IDxoamwudG9vbHNAZ21haWwuY29tPgotU2lnbmVkLU9mZi1CeTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4gMjAxMS8xMi8xCitTaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPiAyMDExLzEyLzEKIAogLS0tIHhwcm90by03LjAuMjIvWG1kLmgueDMyCTIwMDktMDctMTEgMDQ6MTk6NTAuMDAwMDAwMDAwIC0wNzAwCiArKysgeHByb3RvLTcuMC4yMi9YbWQuaAkyMDExLTExLTMwIDE3OjE0OjE5LjI5MDM5NTg5MyAtMDgwMApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hwcm90b183LjAuMjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veHByb3RvXzcuMC4yOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzQyN2E3ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veHByb3RvXzcuMC4yOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLXJlcXVpcmUgeG9yZy1wcm90by1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiWGxpYjogQyBMYW5ndWFnZSBYIGludGVyZmFjZSBoZWFkZXJzIgotCi1ERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgcHJvdmlkZXMgdGhlIGJhc2ljIGhlYWRlcnMgZm9yIHRoZSBYIFdpbmRvdyBcCi1TeXN0ZW0uIgotCi1MSUNFTlNFID0gIk1JVCAmIE1JVC1zdHlsZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWI5ZTA1MTEwN2Q1NjI4OTY2NzM5YTBiMmU5YjMyNjc2IgotCi1QRSA9ICIxIgotCi1TUkNfVVJJICs9ICJmaWxlOi8veHByb3RvX2ZpeF9mb3JfeDMyLnBhdGNoIgotCi1FWFRSQV9PRUNPTkZfYXBwZW5kID0gIiAtLWVuYWJsZS1zcGVjcz1ubyIKLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotU1JDX1VSSVttZDVzdW1dID0gIjNjZTJmMjMwYzVkOGZhOTI5ZjMyNmFkMWYwZmE0MGE4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI5ZTg1NTY4ZDFmNjhjZWVmOGEyYzA4MWRhZDliYzBlNTUwMGE1M2NmZmZkZTI0YjU2NGRjNDNkNDZkZGY2Y2EiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94cHJvdG9fNy4wLjI5LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hwcm90b183LjAuMjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDEyYjZhMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94cHJvdG9fNy4wLjI5LmJiCkBAIC0wLDAgKzEsMTkgQEAKK3JlcXVpcmUgeG9yZy1wcm90by1jb21tb24uaW5jCisKK1NVTU1BUlkgPSAiWGxpYjogQyBMYW5ndWFnZSBYIGludGVyZmFjZSBoZWFkZXJzIgorCitERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgcHJvdmlkZXMgdGhlIGJhc2ljIGhlYWRlcnMgZm9yIHRoZSBYIFdpbmRvdyBcCitTeXN0ZW0uIgorCitMSUNFTlNFID0gIk1JVCAmIE1JVC1zdHlsZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWI5ZTA1MTEwN2Q1NjI4OTY2NzM5YTBiMmU5YjMyNjc2IgorCitQRSA9ICIxIgorCitTUkNfVVJJICs9ICJmaWxlOi8veHByb3RvX2ZpeF9mb3JfeDMyLnBhdGNoIgorCitFWFRSQV9PRUNPTkZfYXBwZW5kID0gIiAtLWVuYWJsZS1zcGVjcz1ubyIKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworU1JDX1VSSVttZDVzdW1dID0gImVlZWFlMWY0N2Q0M2EzM2VmMGQ1YzU2NzI3NDEwMzI2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZjMWE0NzcwOTJjYTczMjMzOTAyYjhkNWYzMzAxMjYzNWM0YjAyMDhmMTdlNzgzM2NjN2VmZTVjOTNiYTlmOGEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnLzEwLXByZWxvYWQtbW9kdWxlcy5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy8xMC1wcmVsb2FkLW1vZHVsZXMuY29uZgppbmRleCA3Y2ViNmZkLi43MmU0ZmJmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnLzEwLXByZWxvYWQtbW9kdWxlcy5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvMTAtcHJlbG9hZC1tb2R1bGVzLmNvbmYKQEAgLTMsNyArMyw3IEBACiAgICAgTG9hZCAiZmIiCiAgICAgTG9hZCAic2hhZG93IgogICAgIExvYWQgInNoYWRvd2ZiIgorICAgIExvYWQgImludDEwIgogICAgIExvYWQgInZiZSIKICAgICBMb2FkICJ2Z2FodyIKIEVuZFNlY3Rpb24KLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy5pbmMKaW5kZXggZjRjNTQ2OS4uMjk1MDNiMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcuaW5jCkBAIC02OSw3ICs2OSw3IEBACiAgICAgICAgICAgICAgeGY4Ni12aWRlby1tb2Rlc2V0dGluZyIKIAogU1VNTUFSWV94Zjg2LXZpZGVvLW1vZGVzZXR0aW5nID0gIlguT3JnIFggc2VydmVyIC0tIG1vZGVzZXR0aW5nIGRpc3BsYXkgZHJpdmVyIgotSU5TQU5FX1NLSVBfeGY4Ni12aWRlby1tb2Rlc2V0dGluZyA9ICJ4b3JnLWRyaXZlci1hYmkiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfXhmODYtdmlkZW8tbW9kZXNldHRpbmcgPSAieG9yZy1kcml2ZXItYWJpIgogCiBYU0VSVkVSX1JSRUNPTU1FTkRTID0gInhrZXlib2FyZC1jb25maWcgcmdiIHhzZXJ2ZXIteGY4Ni1jb25maWcgeGtiY29tcCIKIFJSRUNPTU1FTkRTXyR7UE59ICs9ICIke1hTRVJWRVJfUlJFQ09NTUVORFN9IgpAQCAtMTMxLDYgKzEzMSw3IEBACiAjIERSSTMgcmVxdWlyZXMgeHNobWZlbmNlIHRvIGFsc28gYmUgZW5hYmxlZAogUEFDS0FHRUNPTkZJR1tkcmkzXSA9ICItLWVuYWJsZS1kcmkzLC0tZGlzYWJsZS1kcmkzLGRyaTNwcm90byIKIFBBQ0tBR0VDT05GSUdbZ2x4XSA9ICItLWVuYWJsZS1nbHgsLS1kaXNhYmxlLWdseCxnbHByb3RvIHZpcnR1YWwvbGliZ2wgdmlydHVhbC9saWJ4MTEiCitQQUNLQUdFQ09ORklHW2dsYW1vcl0gPSAiLS1lbmFibGUtZ2xhbW9yLC0tZGlzYWJsZS1nbGFtb3IsbGliZXBveHksbGliZWdsIgogUEFDS0FHRUNPTkZJR1t1bndpbmRdID0gIi0tZW5hYmxlLWxpYnVud2luZCwtLWRpc2FibGUtbGlidW53aW5kLGxpYnVud2luZCIKIFBBQ0tBR0VDT05GSUdbeHNobWZlbmNlXSA9ICItLWVuYWJsZS14c2htZmVuY2UsLS1kaXNhYmxlLXhzaG1mZW5jZSxsaWJ4c2htZmVuY2UiCiBQQUNLQUdFQ09ORklHW3htbHRvXSA9ICItLXdpdGgteG1sdG8sIC0td2l0aG91dC14bWx0bywgeG1sdG8tbmF0aXZlIGRvY2Jvb2steG1sLWR0ZDQtbmF0aXZlIGRvY2Jvb2steHNsLXN0eWxlc2hlZXRzLW5hdGl2ZSIKQEAgLTE2Nyw5ICsxNjgsMTAgQEAKICAgICAgICAgfQogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihhcmdzPSJwa2ctY29uZmlnIC0tdmFyaWFibGU9JXMgeG9yZy1zZXJ2ZXIiICUgYWJpc1tuYW1lXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hlbGw9VHJ1ZSwgZW52PW5ld2Vudiwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKLSAgICAgICAgb3V0cHV0ID0gcC5jb21tdW5pY2F0ZSgpWzBdCisgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcC5jb21tdW5pY2F0ZSgpCisgICAgICAgIG91dHB1dCA9IHN0ZG91dC5kZWNvZGUoInV0Zi04Iikuc3BsaXQoIi4iKVswXQogICAgICAgICBtbHByZWZpeCA9IGQuZ2V0VmFyKCdNTFBSRUZJWCcsIFRydWUpIG9yICcnCi0gICAgICAgIHJldHVybiAiJXN4b3JnLWFiaS0lcy0lcyIgJSAobWxwcmVmaXgsIG5hbWUsIG91dHB1dC5zcGxpdCgiLiIpWzBdKQorICAgICAgICByZXR1cm4gIiVzeG9yZy1hYmktJXMtJXMiICUgKG1scHJlZml4LCBuYW1lLCBvdXRwdXQpCiAKICAgICBwbiA9IGQuZ2V0VmFyKCJQTiIsIFRydWUpCiAgICAgZC5hcHBlbmRWYXIoIlJQUk9WSURFU18iICsgcG4sICIgIiArIGdldF9hYmkoImlucHV0IikpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvY29uZmlndXJlLmFjLVVzZS1saWJzeXN0ZW1kLWluLVJFUVVJUkVEX0xJQlMtY2hlY2sucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvY29uZmlndXJlLmFjLVVzZS1saWJzeXN0ZW1kLWluLVJFUVVJUkVEX0xJQlMtY2hlY2sucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkMzA5OTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnL2NvbmZpZ3VyZS5hYy1Vc2UtbGlic3lzdGVtZC1pbi1SRVFVSVJFRF9MSUJTLWNoZWNrLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotRnJvbSAwYzIxNTNkNDY4MjI5ZjU2ZTZmZWY3MWQyZjAwMmUwY2FlMTRhYTU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLURhdGU6IE1vbiwgMTYgTm92IDIwMTUgMTY6MTg6NDAgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBVc2UgbGlic3lzdGVtZCBpbiBSRVFVSVJFRF9MSUJTIGNoZWNrCi0KLVJFUVVJUkVEX0xJQlMgbmVlZHMgdG8gYmUgc2V0IHRvIHRoZSBjb3JyZWN0IHN5c3RlbWQgbGlicmFyeSwKLW90aGVyd2lzZSB0aGUgbGF0ZXIgY2hlY2sgd2lsbCBlaXRoZXIgZmFpbCBvciB1c2UgdGhlIHdyb25nCi1wYyBmaWxlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbeG9yZy1kZXZlbEBsaXN0cy54Lm9yZ10KLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAxMyArKysrKysrKysrLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDk2YzAyNDIuLmY2M2VjYTEgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTgzNyw5ICs4MzcsMTYgQEAgQUNfQVJHX1dJVEgoW3N5c3RlbWQtZGFlbW9uXSwKLSAJCVtzdXBwb3J0IHN5c3RlbWQgc29ja2V0IGFjdGl2YXRpb24gKGRlZmF1bHQ6IGF1dG8pXSksCi0gCVtXSVRIX1NZU1RFTURfREFFTU9OPSR3aXRodmFsXSwgW1dJVEhfU1lTVEVNRF9EQUVNT049YXV0b10pCi0gUEtHX0NIRUNLX01PRFVMRVMoW1NZU1RFTURfREFFTU9OXSwgW2xpYnN5c3RlbWQtZGFlbW9uXSwKLS0gICAgICAgICAgICAgICAgICBbSEFWRV9TWVNURU1EX0RBRU1PTj15ZXNdLAotKyAgICAgICAgICAgICAgICAgIFtSRVFVSVJFRF9TWVNURU1EX0RBRU1PTj1saWJzeXN0ZW1kLWRhZW1vbl0sCi0gICAgICAgICAgICAgICAgICAgW1BLR19DSEVDS19NT0RVTEVTKFtTWVNURU1EX0RBRU1PTl0sIFtsaWJzeXN0ZW1kXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0hBVkVfU1lTVEVNRF9EQUVNT049eWVzXSwgW0hBVkVfU1lTVEVNRF9EQUVNT049bm9dKV0pCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtSRVFVSVJFRF9TWVNURU1EX0RBRU1PTj1saWJzeXN0ZW1kXSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1JFUVVJUkVEX1NZU1RFTURfREFFTU9OPV0pXSkKLStpZiB0ZXN0ICJ4JFJFUVVJUkVEX1NZU1RFTURfREFFTU9OIiA9IHg7IHRoZW4KLSsgICAgICAgIEhBVkVfU1lTVEVNRF9EQUVNT049bm8KLStlbHNlCi0rICAgICAgICBIQVZFX1NZU1RFTURfREFFTU9OPXllcwotK2ZpCi0rCi0gaWYgdGVzdCAieCRXSVRIX1NZU1RFTURfREFFTU9OIiA9IHhhdXRvOyB0aGVuCi0gCVdJVEhfU1lTVEVNRF9EQUVNT049IiRIQVZFX1NZU1RFTURfREFFTU9OIgotIGZpCi1AQCAtODQ4LDcgKzg1NSw3IEBAIGlmIHRlc3QgIngkV0lUSF9TWVNURU1EX0RBRU1PTiIgPSB4eWVzOyB0aGVuCi0gCQlBQ19NU0dfRVJST1IoW3N5c3RlbWQgc3VwcG9ydCByZXF1ZXN0ZWQgYnV0IG5vIGxpYnJhcnkgaGFzIGJlZW4gZm91bmRdKQotIAlmaQotIAlBQ19ERUZJTkUoSEFWRV9TWVNURU1EX0RBRU1PTiwgMSwgW0RlZmluZSB0byAxIGlmIGxpYnN5c3RlbWQtZGFlbW9uIGlzIGF2YWlsYWJsZV0pCi0tCVJFUVVJUkVEX0xJQlM9IiRSRVFVSVJFRF9MSUJTIGxpYnN5c3RlbWQtZGFlbW9uIgotKwlSRVFVSVJFRF9MSUJTPSIkUkVRVUlSRURfTElCUyAkUkVRVUlSRURfU1lTVEVNRF9EQUVNT04iCi0gZmkKLSBBTV9DT05ESVRJT05BTChbSEFWRV9TWVNURU1EX0RBRU1PTl0sIFt0ZXN0ICJ4JEhBVkVfU1lTVEVNRF9EQUVNT04iID0gInh5ZXMiXSkKLSAKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnL21vZGVzZXR0aW5nX2xpYmRybV9yZXF1aXJlbWVudHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvbW9kZXNldHRpbmdfbGliZHJtX3JlcXVpcmVtZW50cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWYxODZjYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvbW9kZXNldHRpbmdfbGliZHJtX3JlcXVpcmVtZW50cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gYmYyM2RiNDJhNGU1OTQzMTI5NTAxMjIzYTQ3YjQ4ODg0Y2RlYjYyZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFkYW0gSmFja3NvbiA8YWpheEByZWRoYXQuY29tPgotRGF0ZTogV2VkLCAyNyBKYW4gMjAxNiAxMTo1MDoxMyAtMDUwMAotU3ViamVjdDogbW9kZXNldHRpbmc6IFJlcXVpcmUgc3VmZmljaWVudGx5IG5ldyBsaWJkcm0KLQotQnVnemlsbGE6IGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvOTM4ODMKLVNpZ25lZC1vZmYtYnk6IEFkYW0gSmFja3NvbiA8YWpheEByZWRoYXQuY29tPgotUmV2aWV3ZWQtYnk6IEFsZXggRGV1Y2hlciA8YWxleGFuZGVyLmRldWNoZXJAYW1kLmNvbT4KLVJldmlld2VkLWJ5OiBKdWxpZW4gQ3Jpc3RhdSA8amNyaXN0YXVAZGViaWFuLm9yZz4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogSm9oYW5uZXMgUG9pbnRuZXIgPGpvaGFubmVzLnBvaW50bmVyQGdtYWlsLmNvbT4KLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggYWMzYmI2NC4uMzEyZmM2OSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMjAzNSw4ICsyMDM1LDcgQEAgaWYgdGVzdCAieCRYT1JHIiA9IHh5ZXM7IHRoZW4KLSAKLSAJaWYgdGVzdCAieCREUk0iID0geHllczsgdGhlbgotIAkJZG5sIDIuNC40NiBpcyByZXF1aXJlZCBmb3IgY3Vyc29yIGhvdHNwb3Qgc3VwcG9ydC4KLS0JCVBLR19DSEVDS19FWElTVFMobGliZHJtID49IDIuNC40NikKLS0JCVhPUkdfRFJJVkVSX01PREVTRVRUSU5HPXllcwotKwkJUEtHX0NIRUNLX0VYSVNUUyhsaWJkcm0gPj0gMi40LjQ2LCBYT1JHX0RSSVZFUl9NT0RFU0VUVElORz15ZXMsIFhPUkdfRFJJVkVSX01PREVTRVRUSU5HPW5vKQotIAlmaQotIAotIAlBQ19TVUJTVChbWE9SR19MSUJTXSkKLS0tIAotY2dpdCB2MC4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZ18xLjE4LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmdfMS4xOC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjc5YjQwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZ18xLjE4LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1yZXF1aXJlIHhzZXJ2ZXIteG9yZy5pbmMKLQotU1JDX1VSSSArPSAiZmlsZTovL2NvbmZpZ3VyZS5hYy1Vc2UtbGlic3lzdGVtZC1pbi1SRVFVSVJFRF9MSUJTLWNoZWNrLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9tdXNsLWFybS1pbmItb3V0Yi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vbW9kZXNldHRpbmdfbGliZHJtX3JlcXVpcmVtZW50cy5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICIzYzFjMTA1N2QzYWQyNzM4MGQ4ZGQ4N2ZmY2MxODJjZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxOTU2NzA4MTk2OTVkOWNlZGQ4ZGRlOTVmYmUwNjliZTBkMGY0ODhhNzc3OTdhMmQ0MDlmOWY3MDJkYWYzMTJlIgotCi0jIFRoZXNlIGV4dGVuc2lvbnMgYXJlIG5vdyBpbnRlZ3JhdGVkIGludG8gdGhlIHNlcnZlciwgc28gZGVjbGFyZSB0aGUgbWlncmF0aW9uCi0jIHBhdGggZm9yIGluLXBsYWNlIHVwZ3JhZGVzLgotCi1SUkVQTEFDRVNfJHtQTn0gPSAgIiR7UE59LWV4dGVuc2lvbi1kcmkgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZHJpMiBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1yZWNvcmQgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZXh0bW9kIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRiZSBcCi0gICAgICAgICAgICAgICAgICAgIgotUlBST1ZJREVTXyR7UE59ID0gICIke1BOfS1leHRlbnNpb24tZHJpIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRyaTIgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tcmVjb3JkIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWV4dG1vZCBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kYmUgXAotICAgICAgICAgICAgICAgICAgICIKLVJDT05GTElDVFNfJHtQTn0gPSAiJHtQTn0tZXh0ZW5zaW9uLWRyaSBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kcmkyIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLXJlY29yZCBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1leHRtb2QgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZGJlIFwKLSAgICAgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmdfMS4xOC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXzEuMTguNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzAwNTY1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXzEuMTguNC5iYgpAQCAtMCwwICsxLDI3IEBACityZXF1aXJlIHhzZXJ2ZXIteG9yZy5pbmMKKworU1JDX1VSSSArPSAiZmlsZTovL211c2wtYXJtLWluYi1vdXRiLnBhdGNoIgorU1JDX1VSSVttZDVzdW1dID0gImQ0ODQyZGZlM2JkOWE5ZDA2MmYyZmExZGY5MTA0YTQ2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI3ODQ1OWIyYzMxZDYxYTE1NjU1ZDk1YTcyZmI3OTkzMGM0ODBhNmJiOGNmOTIyNmU0OGEwN2RmOGIxZDMxYzgiCisKKyMgVGhlc2UgZXh0ZW5zaW9ucyBhcmUgbm93IGludGVncmF0ZWQgaW50byB0aGUgc2VydmVyLCBzbyBkZWNsYXJlIHRoZSBtaWdyYXRpb24KKyMgcGF0aCBmb3IgaW4tcGxhY2UgdXBncmFkZXMuCisKK1JSRVBMQUNFU18ke1BOfSA9ICAiJHtQTn0tZXh0ZW5zaW9uLWRyaSBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kcmkyIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLXJlY29yZCBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1leHRtb2QgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZGJlIFwKKyAgICAgICAgICAgICAgICAgICAiCitSUFJPVklERVNfJHtQTn0gPSAgIiR7UE59LWV4dGVuc2lvbi1kcmkgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZHJpMiBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1yZWNvcmQgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZXh0bW9kIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRiZSBcCisgICAgICAgICAgICAgICAgICAgIgorUkNPTkZMSUNUU18ke1BOfSA9ICIke1BOfS1leHRlbnNpb24tZHJpIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRyaTIgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tcmVjb3JkIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWV4dG1vZCBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kYmUgXAorICAgICAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveHRzY2FsL3h0c2NhbC8zMHhUc19DYWxpYnJhdGUuc2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3h0c2NhbC94dHNjYWwvMzB4VHNfQ2FsaWJyYXRlLnNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTQzNjE3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveHRzY2FsL3h0c2NhbC8zMHhUc19DYWxpYnJhdGUuc2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi0jIS9iaW4vc2gKLQotLiAvZXRjL2Zvcm1mYWN0b3IvY29uZmlnCi0KLWlmIFsgIiRIQVZFX1RPVUNIU0NSRUVOIiA9ICIxIiBdOyB0aGVuCi0Jbj0xCi0Jd2hpbGUgWyAhIC16ICRUU0xJQl9UU0RFVklDRSBdICYmIFsgISAtZiAvZXRjL3BvaW50ZXJjYWwgXSAmJiBbICRuIC1sZSA1IF0KLQlkbwotCSAgIC91c3IvYmluL3h0c2NhbAotCSAgIHNsZWVwIDEKLQkgICBuPSQoKCRuKzEpKQotCWRvbmUKLWZpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3h0c2NhbC94dHNjYWwvY2hhbmdlLWNyb3NzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94dHNjYWwveHRzY2FsL2NoYW5nZS1jcm9zcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWRhNzcxNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3h0c2NhbC94dHNjYWwvY2hhbmdlLWNyb3NzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLS0tLSB0bXAvbWFpbi5jLm9yaWcJMjAwNy0wMS0wMiAxNTozOTo1NC4wMDAwMDAwMDAgKzAwMDAKLSsrKyB0bXAvbWFpbi5jCTIwMDctMDEtMDIgMTU6Mzk6NTQuMDAwMDAwMDAwICswMDAwCi1AQCAtMTMxLDkgKzEzMSwxMCBAQAotIHsKLSAgIFhSZW5kZXJGaWxsUmVjdGFuZ2xlcyAoZHB5LCBQaWN0T3BTcmMsIHBpY3QsICZyZWN0X2NvbG9yLCByZWN0YW5nbGVzLCAyKTsKLSAKLS0gIFhGaWxsQXJjIChkcHksIGNyb3NzaGFpcl93LCBjcm9zc2hhaXJfZ2MsIChDUk9TU0hBSVJfU0laRSAvIDIpIC0gKFdJRFRIIC8gMikgLSAxLCAKLS0JICAgIChDUk9TU0hBSVJfU0laRSAvIDIpIC0gKFdJRFRIIC8gMikgLSAxLAotLQkgICAgV0lEVEggKyAxLCBXSURUSCArIDEsIDAsIDM2MCAqIDY0KTsKLSsgIFhGaWxsUmVjdGFuZ2xlIChkcHksIGNyb3NzaGFpcl93LCBjcm9zc2hhaXJfZ2MsCi0rCQkgIChDUk9TU0hBSVJfU0laRSAvIDIpIC0gKFdJRFRIIC8gMiksCi0rCQkgIChDUk9TU0hBSVJfU0laRSAvIDIpIC0gKFdJRFRIIC8gMiksCi0rCQkgIFdJRFRILCBXSURUSCk7Ci0gfQotIAotIHZvaWQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveHRzY2FsL3h0c2NhbC9jbGVhbnVwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94dHNjYWwveHRzY2FsL2NsZWFudXAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3YjA4NTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94dHNjYWwveHRzY2FsL2NsZWFudXAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MjEgKzAsMCBAQAotLS0tCi0gTWFrZWZpbGUuYW0gIHwgICAgOSAtLQotIGNvbmZpZ3VyZS5hYyB8ICAgIDMgCi0gZ3BlLWRpc3QuYW0gIHwgICAxMiAtLS0KLSBoMzYwMF90cy5oICAgfCAgMjE2IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gbWFpbi5jICAgICAgIHwgIDIxMCArKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSB4dHNjYWwuaW4gICAgfCAgIDE5IC0tLS0tCi0gNiBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCA0NTUgZGVsZXRpb25zKC0pCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1JbmRleDogeHRzY2FsLTAuNi4zL3h0c2NhbC5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHh0c2NhbC0wLjYuMy5vcmlnL3h0c2NhbC5pbgkyMDA0LTA5LTEwIDIwOjEwOjM2LjAwMDAwMDAwMCArMDEwMAotKysrIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotQEAgLTEsMTkgKzAsMCBAQAotLSMhL2Jpbi9zaAotLQotLW1vZHVsZV9pZCgpIHsKLS0gICAgIyBHZXQgbW9kZWwgbmFtZQotLSAgICBlY2hvIGBncmVwICJeSGFyZHdhcmUiIC9wcm9jL2NwdWluZm8gfCBzZWQgLWUgInMvLio6ICovLyIgfCB0ciBhLXogQS1aYAotLX0KLS0KLS1jYXNlIGBtb2R1bGVfaWRgIGluCi0tCSJIUCBJUEFRIEgzMTAwIiB8ICJIUCBJUEFRIEgzODAwIiApCi0tCQlBUkdTPSItcm90YXRlIDkwIiA7OwotLQkiSFAgSVBBUSBIMzYwMCIgfCAiSFAgSVBBUSBIMzcwMCIgfCAiSFAgSVBBUSBIMzkwMCIgfCAqQ09MTElFIHwgKlBPT0RMRSkKLS0JCUFSR1M9Ii1yb3RhdGUgMjcwIiA7OwotLQkjIEgyMjAwOiB3b3JrcyB3aXRob3V0IHJvdGF0aW9uCi0tZXNhYwotLQotLSMgdGhlIHRoaW5ncyB3ZSBkbyBmb3IgYXV0b2NvbmYKLS1wcmVmaXg9QHByZWZpeEAKLS1leGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACi0tZXhlYyBAbGliZXhlY2RpckAveHRzY2FsLmJpbiAkQVJHUyAkKgotSW5kZXg6IHh0c2NhbC0wLjYuMy9tYWluLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB4dHNjYWwtMC42LjMub3JpZy9tYWluLmMJMjAwNy0wNy0wMSAwMToxMjo1Mi4wMDAwMDAwMDAgKzAxMDAKLSsrKyB4dHNjYWwtMC42LjMvbWFpbi5jCTIwMDctMDctMDEgMDE6MTI6NTUuMDAwMDAwMDAwICswMTAwCi1AQCAtMjIsMTIgKzIyLDEwIEBACi0gI2luY2x1ZGUgPFgxMS9YbGliLmg+Ci0gCi0gI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hyZW5kZXIuaD4KLS0jaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMvWHJhbmRyLmg+Ci0gI2luY2x1ZGUgPFgxMS9YZnQvWGZ0Lmg+Ci0gI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL3hjYWxpYnJhdGUuaD4KLSAjaW5jbHVkZSA8WDExL2tleXN5bS5oPgotIAotLSNpbmNsdWRlICJoMzYwMF90cy5oIgotICNpbmNsdWRlICJjYWxpYnJhdGUuaCIKLSAKLSBEaXNwbGF5ICpkcHk7Ci1AQCAtNDUsMTUgKzQzLDExIEBAIFhmdENvbG9yIHhmdGNvbDsKLSBYZnREcmF3ICp4ZnRkcmF3OwotIFhmdEZvbnQgKnhmdGZvbnQ7Ci0gaW50IHNjcmVlbl94LCBzY3JlZW5feTsKLS1pbnQgdHNfZmQ7Ci0gaW50IHNhbXBsZXM7Ci0gUGl4bWFwIGJnX3BpeG1hcDsKLSBpbnQgZmxhZ19kZWJ1ZzsKLS1pbnQgcm90YXRpb24gPSAwOwotIGludCBlcnJvcl9iYXNlLCBldmVudF9iYXNlOwotIAotLWludCB1c2luZ194Y2FsaWJyYXRlOwotLQotIGludCBtb3Zpbmc7Ci0gCi0gI2RlZmluZSBDUk9TU0hBSVJfU0laRQkyNQotQEAgLTYzLDcgKzU3LDYgQEAgaW50IG1vdmluZzsKLSAjZGVmaW5lIEVOT1VHSCA1Ci0gI2RlZmluZSBNQVhfU0FNUExFUyA0MAotIAotLSNkZWZpbmUgUkFXX0RFVklDRSAiL2Rldi9oMzYwMF90c3JhdyIKLSAjZGVmaW5lIEZPTlROQU1FICJzYW5zLTEwIgotIAotIHN0cnVjdCBwb2ludCAKLUBAIC0yODcsMTIgKzI4MCw4IEBAIHNvcnRfYnlfeSAoY29uc3Qgdm9pZCogYSwgY29uc3Qgdm9pZCAqYikKLSB2b2lkCi0gc2V0X2NhbGlicmF0aW9uIChjYWxpYnJhdGlvbiAqY2FsKQotIHsKLS0gIFRTX0NBTCB0YzsKLS0gIGludCB4dHJhbnMsIHl0cmFucywgeHNjYWxlLCB5c2NhbGUsIHh5c2NhbGUsIHl4c2NhbGU7Ci0gICBjYWxpYnJhdGlvbiBvY2FsID0gKmNhbDsKLSAKLS0gIGlmICh1c2luZ194Y2FsaWJyYXRlKQotLSAgICB7Ci0gICAgICAgRklMRSAqZnA7Ci0gICAgICAgaWYgKGZsYWdfZGVidWcpCi0gCXByaW50ZiAoImNvbnN0YW50cyBhcmU6ICVkICVkICVkICVkICVkICVkICVkXG4iLCBjYWwtPmFbMV0sIGNhbC0+YVsyXSwgY2FsLT5hWzBdLCBjYWwtPmFbNF0sIGNhbC0+YVs1XSwgY2FsLT5hWzNdLCBjYWwtPmFbNl0pOwotQEAgLTMwNCwyOSArMjkzLDYgQEAgc2V0X2NhbGlicmF0aW9uIChjYWxpYnJhdGlvbiAqY2FsKQotIAl9Ci0gICAgICAgZnByaW50ZiAoZnAsICIlZCAlZCAlZCAlZCAlZCAlZCAlZFxuIiwgY2FsLT5hWzFdLCBjYWwtPmFbMl0sIGNhbC0+YVswXSwgY2FsLT5hWzRdLCBjYWwtPmFbNV0sIGNhbC0+YVszXSwgY2FsLT5hWzZdKTsKLSAgICAgICBmY2xvc2UgKGZwKTsgCi0tICAgICAgcmV0dXJuOwotLSAgICB9Ci0tCi0tICB4dHJhbnMgPSBjYWwtPmFbMF0gLyBjYWwtPmFbNl07Ci0tICB5dHJhbnMgPSBjYWwtPmFbM10gLyBjYWwtPmFbNl07Ci0tICB4c2NhbGUgPSBjYWwtPmFbMV0gKiAyNTYgLyBjYWwtPmFbNl07Ci0tICB5c2NhbGUgPSBjYWwtPmFbNV0gKiAyNTYgLyBjYWwtPmFbNl07Ci0tICB4eXNjYWxlID0gY2FsLT5hWzJdICogMjU2IC8gY2FsLT5hWzZdOwotLSAgeXhzY2FsZSA9IGNhbC0+YVs0XSAqIDI1NiAvIGNhbC0+YVs2XTsKLS0gIAotLSAgdGMueHRyYW5zID0geHRyYW5zOwotLSAgdGMueXRyYW5zID0geXRyYW5zOwotLSAgdGMueHNjYWxlID0geHNjYWxlOwotLSAgdGMueXNjYWxlID0geXNjYWxlOwotLSAgdGMueHlzd2FwID0gMDsKLS0KLS0gIHByaW50ZiAoIiVkICVkICVkICVkICVkXG4iLCB0Yy54c2NhbGUsIHRjLnh0cmFucywgdGMueXNjYWxlLCB0Yy55dHJhbnMsIHRjLnh5c3dhcCk7Ci0tCi0tICBpZiAoaW9jdGwgKHRzX2ZkLCBUU19TRVRfQ0FMLCAodm9pZCAqKSZ0YykgIT0gMCkKLS0gICAgewotLSAgICAgIHBlcnJvciAoIlRTX1NFVF9DQUwiKTsKLS0gICAgICBleGl0ICgxKTsKLS0gICAgfQotIH0KLSAKLSB2b2lkCi1AQCAtMzk4LDgwICszNjQsMTMgQEAgaGFuZGxlX3RzX2V2ZW50IChpbnQgeCwgaW50IHksIGludCBwcmVzcwotIH0KLSAKLSB2b2lkCi0tcmVhZF90cyAodm9pZCkKLS17Ci0tICBUU19FVkVOVCB0c19ldjsKLS0gIGludCByOwotLQotLSAgciA9IHJlYWQgKHRzX2ZkLCAmdHNfZXYsIHNpemVvZiAodHNfZXYpKTsKLS0gIGlmIChyID09IHNpemVvZiAodHNfZXYpKQotLSAgICBoYW5kbGVfdHNfZXZlbnQgKHRzX2V2LngsIHRzX2V2LnksIHRzX2V2LnByZXNzdXJlKTsKLS19Ci0tCi0tdm9pZAotLWRvX2NhbCAoY2hhciAqKmFyZ3MpCi0tewotLSAgVFNfQ0FMIHRjOwotLQotLSAgdGMueHNjYWxlID0gYXRvaSAoYXJnc1swXSk7Ci0tICB0Yy54dHJhbnMgPSBhdG9pIChhcmdzWzFdKTsKLS0gIHRjLnlzY2FsZSA9IGF0b2kgKGFyZ3NbMl0pOwotLSAgdGMueXRyYW5zID0gYXRvaSAoYXJnc1szXSk7Ci0tICB0Yy54eXN3YXAgPSBhdG9pIChhcmdzWzRdKTsKLS0KLS0gIGlmIChmbGFnX2RlYnVnKQotLSAgICBmcHJpbnRmIChzdGRlcnIsICJzZXR0aW5nOiAlZCAlZCAlZCAlZCAlZFxuIiwgCi0tCSAgICAgdGMueHRyYW5zLCB0Yy55dHJhbnMsIHRjLnhzY2FsZSwgdGMueXNjYWxlLCB0Yy54eXN3YXApOwotLSAgICAKLS0gIGlmIChpb2N0bCAodHNfZmQsIFRTX1NFVF9DQUwsICh2b2lkICopJnRjKSAhPSAwKQotLSAgICB7Ci0tICAgICAgcGVycm9yICgiVFNfU0VUX0NBTCIpOwotLSAgICAgIGV4aXQgKDEpOwotLSAgICB9Ci0tICAKLS0gIGV4aXQgKDApOwotLX0KLS0KLS12b2lkCi0tc2hvd19jYWwgKHZvaWQpCi0tewotLSAgVFNfQ0FMIHRjOwotLQotLSAgaWYgKGlvY3RsICh0c19mZCwgVFNfR0VUX0NBTCwgKHZvaWQgKikmdGMpICE9IDApCi0tICAgIHsKLS0gICAgICBwZXJyb3IgKCJUU19HRVRfQ0FMIik7Ci0tICAgICAgZXhpdCAoMSk7Ci0tICAgIH0KLS0KLS0gIHByaW50ZiAoIiVkICVkICVkICVkICVkXG4iLCB0Yy54c2NhbGUsIHRjLnh0cmFucywgdGMueXNjYWxlLCB0Yy55dHJhbnMsIHRjLnh5c3dhcCk7Ci0tfQotLQotLXZvaWQKLSB1c2FnZSAoY29uc3QgY2hhciAqbmFtZSkKLSB7Ci0tICBmcHJpbnRmIChzdGRlcnIsICJ1c2FnZTogJXMgLXZpZXdcbiIsIG5hbWUpOwotLSAgZnByaW50ZiAoc3RkZXJyLCAiICAgICAgICVzIFstcm90YXRlIDwwIHwgOTAgfCAxODAgfCAyNzA+XVxuIiwgbmFtZSk7Ci0tICBmcHJpbnRmIChzdGRlcnIsICIgICAgICAgJXMgLWNhbCA8eHM+IDx4dD4gPHlzPiA8eXQ+IDx4eXN3YXA+XG4iLCBuYW1lKTsKLS0KLSsgIGZwcmludGYgKHN0ZGVyciwgInVzYWdlOiAlcyBbLWRlYnVnXVxuIiwgbmFtZSk7Ci0gICBleGl0ICgxKTsKLSB9Ci0gCi0gaW50Ci0teHJyX3N1cHBvcnRlZCAodm9pZCkKLS17Ci0tICBpbnQgeHJyX2V2ZW50X2Jhc2UsIHhycl9lcnJvcl9iYXNlOwotLSAgaW50IHhycl9tYWpvciwgeHJyX21pbm9yOwotLQotLSAgaWYgKFhSUlF1ZXJ5RXh0ZW5zaW9uIChkcHksICZ4cnJfZXZlbnRfYmFzZSwgJnhycl9lcnJvcl9iYXNlKSA9PSBGYWxzZQotLSAgICAgIHx8IFhSUlF1ZXJ5VmVyc2lvbiAoZHB5LCAmeHJyX21ham9yLCAmeHJyX21pbm9yKSA9PSAwCi0tICAgICAgfHwgeHJyX21ham9yICE9IDEKLS0gICAgICB8fCB4cnJfbWlub3IgPCAxKQotLSAgICByZXR1cm4gMDsKLS0KLS0gIHJldHVybiAxOwotLX0KLS0KLS1pbnQKLSBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotIHsKLSAgIFhTZXRXaW5kb3dBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7Ci1AQCAtNDgwLDMxICszNzksMTEgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAgIGludCBtYXhfZmQ7Ci0gICBHQyBiZ19nYzsKLSAgIGludCBpOwotLSAgaW50IGhhdmVfeHJhbmRyOwotIAotICAgZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykKLSAgICAgewotLSAgICAgIGlmICghc3RyY21wIChhcmd2W2ldLCAiLXZpZXciKSkKLS0JewotLQkgIHNob3dfY2FsICgpOwotLQkgIGV4aXQgKDApOwotLQl9Ci0tICAgICAgZWxzZSBpZiAoIXN0cmNtcCAoYXJndltpXSwgIi1kZWJ1ZyIpKQotKyAgICAgIGlmICghc3RyY21wIChhcmd2W2ldLCAiLWRlYnVnIikpCi0gCWZsYWdfZGVidWcgPSAxOwotLSAgICAgIGVsc2UgaWYgKCFzdHJjbXAgKGFyZ3ZbaV0sICItY2FsIikpCi0tCXsKLS0JICBpZiAoYXJnYyA+IChpICsgNSkpCi0tCSAgICBkb19jYWwgKGFyZ3YgKyBpICsgMSk7Ci0tCSAgZWxzZQotLQkgICAgdXNhZ2UgKGFyZ3ZbMF0pOwotLQl9Ci0tICAgICAgZWxzZSBpZiAoIXN0cmNtcCAoYXJndltpXSwgIi1yb3RhdGUiKSkKLS0JewotLQkgIGlmIChhcmdjID4gKGkgKyAxKSkKLS0JICAgIHJvdGF0aW9uID0gYXRvaSAoYXJndlsrK2ldKTsKLS0JICBlbHNlCi0tCSAgICB1c2FnZSAoYXJndlswXSk7Ci0tCX0KLSAgICAgICBlbHNlCi0gCXVzYWdlIChhcmd2WzBdKTsKLSAgICAgfQotQEAgLTUzMSw0OCArNDEwLDExIEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCSAgZnByaW50ZiAoc3RkZXJyLCAiZmFpbGVkIHRvIHNldCByYXcgbW9kZTogZXJyb3IgJWRcbiIsIHIpOwotIAkgIGV4aXQgKDEpOwotIAl9Ci0tCi0tICAgICAgdXNpbmdfeGNhbGlicmF0ZSA9IDE7Ci0tICAgIH0KLS0KLS0gIGhhdmVfeHJhbmRyID0geHJyX3N1cHBvcnRlZCAoKTsKLS0gIGlmIChoYXZlX3hyYW5kcikKLS0gICAgewotLSAgICAgIFhSUlNjcmVlbkNvbmZpZ3VyYXRpb24gKnJyX3NjcmVlbjsKLS0gICAgICBSb3RhdGlvbiBjdXJyZW50X3JvdGF0aW9uOwotLQotLSAgICAgIGlmIChmbGFnX2RlYnVnKQotLQlmcHJpbnRmIChzdGRlcnIsICJYUkFORFIgaXMgc3VwcG9ydGVkXG4iKTsKLS0KLS0gICAgICBycl9zY3JlZW4gPSBYUlJHZXRTY3JlZW5JbmZvIChkcHksIFJvb3RXaW5kb3cgKGRweSwgc2NyZWVuKSk7Ci0tCi0tICAgICAgWFJSUm90YXRpb25zIChkcHksIHNjcmVlbiwgJmN1cnJlbnRfcm90YXRpb24pOwotLQotLSAgICAgIFhSUkZyZWVTY3JlZW5Db25maWdJbmZvIChycl9zY3JlZW4pOwotLQotLSAgICAgIGlmIChmbGFnX2RlYnVnKQotLQlmcHJpbnRmIChzdGRlcnIsICJDdXJyZW50IFJBTkRSIHJvdGF0aW9uIGlzICVkXG4iLCBjdXJyZW50X3JvdGF0aW9uKTsKLS0KLS0gICAgICBzd2l0Y2ggKGN1cnJlbnRfcm90YXRpb24pCi0tCXsKLS0JY2FzZSBSUl9Sb3RhdGVfMjcwOgotLQkgIHJvdGF0aW9uICs9IDkwOwotLQljYXNlIFJSX1JvdGF0ZV8xODA6Ci0tCSAgcm90YXRpb24gKz0gOTA7Ci0tCWNhc2UgUlJfUm90YXRlXzkwOgotLQkgIHJvdGF0aW9uICs9IDkwOwotLQkgIHJvdGF0aW9uICU9IDM2MDsKLS0JY2FzZSBSUl9Sb3RhdGVfMDoKLS0JICBicmVhazsKLS0JZGVmYXVsdDoKLS0JICBmcHJpbnRmIChzdGRlcnIsICJVbmtub3duIFJBTkRSIHJvdGF0aW9uOiAlZFxuIiwgY3VycmVudF9yb3RhdGlvbik7Ci0tCSAgYnJlYWs7Ci0tCX0KLSAgICAgfQotICAgZWxzZQotICAgICB7Ci0tICAgICAgaWYgKGZsYWdfZGVidWcpCi0tCWZwcmludGYgKHN0ZGVyciwgIlhSQU5EUiBub3Qgc3VwcG9ydGVkXG4iKTsKLSsgICAgICBwZXJyb3IgKCJYQ0FMSUJSQVRFIGV4dGVuc2lvbiBtaXNzaW5nIik7Ci0rICAgICAgZXhpdCAoMSk7Ci0gICAgIH0KLSAKLSAgIGF0dHJpYnV0ZXMub3ZlcnJpZGVfcmVkaXJlY3QgPSBmbGFnX2RlYnVnID8gRmFsc2UgOiBUcnVlOwotQEAgLTY2Niw0NSArNTA4LDE3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCi0gICBmb3IgKGkgPSAwOyBpIDwgTlJfUE9JTlRTOyBpKyspCi0gICAgIHsKLS0gICAgICBzd2l0Y2ggKHJvdGF0aW9uKQotLQl7Ci0tCWNhc2UgMDoKLS0JICBjYWwueGZiW2ldID0gY2FsLnhzY3JbaV07Ci0tCSAgY2FsLnlmYltpXSA9IGNhbC55c2NyW2ldOwotLQkgIGJyZWFrOwotLQljYXNlIDkwOgotLQkgIGNhbC54ZmJbaV0gPSBjYWwueXNjcltpXTsKLS0JICBjYWwueWZiW2ldID0gc2NyZWVuX3ggLSBjYWwueHNjcltpXTsKLS0JICBicmVhazsKLS0JY2FzZSAxODA6Ci0tCSAgY2FsLnhmYltpXSA9IHNjcmVlbl94IC0gY2FsLnhzY3JbaV07Ci0tCSAgY2FsLnlmYltpXSA9IHNjcmVlbl95IC0gY2FsLnlzY3JbaV07Ci0tCSAgYnJlYWs7Ci0tCWNhc2UgMjcwOgotLQkgIGNhbC54ZmJbaV0gPSBzY3JlZW5feSAtIGNhbC55c2NyW2ldOwotLQkgIGNhbC55ZmJbaV0gPSBjYWwueHNjcltpXTsKLS0JICBicmVhazsKLS0JfQotKyAgICAgIGNhbC54ZmJbaV0gPSBjYWwueHNjcltpXTsKLSsgICAgICBjYWwueWZiW2ldID0gY2FsLnlzY3JbaV07Ci0rICAgICAgWENhbGlicmF0ZVNjcmVlblRvQ29vcmQgKGRweSwgJmNhbC54ZmJbaV0sICZjYWwueWZiW2ldKTsKLSAKLSAgICAgICBpZiAoZmxhZ19kZWJ1ZykKLS0JcHJpbnRmICgicm90YXRpb24gJWQ6ICglZCwlZCkgLT4gKCVkLCVkKVxuIiwgcm90YXRpb24sIAotKwlwcmludGYgKCJyb3RhdGlvbiBjb252ZXJzaW9uOiAoJWQsJWQpIC0+ICglZCwlZClcbiIsCi0gCQljYWwueHNjcltpXSwgY2FsLnlzY3JbaV0sIGNhbC54ZmJbaV0sIGNhbC55ZmJbaV0pOwotICAgICB9Ci0gCi0gICBuZXh0X2V2ZW50ICgpOwotIAotLSAgaWYgKCF1c2luZ194Y2FsaWJyYXRlKQotLSAgICB7Ci0tICAgICAgdHNfZmQgPSBvcGVuIChSQVdfREVWSUNFLCBPX1JET05MWSk7Ci0tICAgICAgaWYgKHRzX2ZkIDwgMCkKLS0JewotLQkgIHBlcnJvciAoUkFXX0RFVklDRSk7Ci0tCSAgZXhpdCAoMSk7Ci0tCX0KLS0gICAgfQotLQotLSAgbWF4X2ZkID0gKHhmZCA+IHRzX2ZkKSA/IHhmZCA6IHRzX2ZkOwotLQotICAgZm9yICg7OykKLSAgICAgewotICAgICAgIGZkX3NldCBmZHM7Ci1AQCAtNzEzLDEyICs1MjcsOCBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAotICAgICAgIEZEX1pFUk8gKCZmZHMpOwotICAgICAgIEZEX1NFVCAoeGZkLCAmZmRzKTsKLS0gICAgICBpZiAodHNfZmQgIT0gLTEpCi0tCUZEX1NFVCAodHNfZmQsICZmZHMpOwotIAotLSAgICAgIHNlbGVjdCAobWF4X2ZkICsgMSwgJmZkcywgTlVMTCwgTlVMTCwgTlVMTCk7Ci0tICAgICAgCi0tICAgICAgaWYgKHRzX2ZkICE9IC0xICYmIEZEX0lTU0VUICh0c19mZCwgJmZkcykpCi0tCXJlYWRfdHMgKCk7Ci0rICAgICAgc2VsZWN0ICh4ZmQgKyAxLCAmZmRzLCBOVUxMLCBOVUxMLCBOVUxMKTsKLSAgICAgfQotIH0KLSsKLUluZGV4OiB4dHNjYWwtMC42LjMvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0geHRzY2FsLTAuNi4zLm9yaWcvY29uZmlndXJlLmFjCTIwMDQtMDktMTAgMjA6MTE6MTIuMDAwMDAwMDAwICswMTAwCi0rKysgeHRzY2FsLTAuNi4zL2NvbmZpZ3VyZS5hYwkyMDA3LTA3LTAxIDAxOjEyOjU1LjAwMDAwMDAwMCArMDEwMAotQEAgLTksOCArOSw3IEBAIEFNX0lOSVRfQVVUT01BS0UoW2ZvcmVpZ24gZGlzdC1iemlwMl0pCi0gIyBDaGVja3MgZm9yIHByb2dyYW1zLgotIEFDX1BST0dfQ0MKLSAKLS1QS0dfQ0hFQ0tfTU9EVUxFUyhYVFNDQUwsIHgxMSB4ZnQgeGV4dCB4cmFuZHIgeGNhbGlicmF0ZSkKLStQS0dfQ0hFQ0tfTU9EVUxFUyhYVFNDQUwsIHgxMSB4ZnQgeGV4dCB4Y2FsaWJyYXRlKQotIAotIEFDX0NPTkZJR19GSUxFUyhbTWFrZWZpbGVdKQotLUFDX0NPTkZJR19GSUxFUyhbeHRzY2FsXSkKLSBBQ19PVVRQVVQKLUluZGV4OiB4dHNjYWwtMC42LjMvZ3BlLWRpc3QuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB4dHNjYWwtMC42LjMub3JpZy9ncGUtZGlzdC5hbQkyMDA0LTA2LTAyIDIzOjA3OjEzLjAwMDAwMDAwMCArMDEwMAotKysrIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotQEAgLTEsMTIgKzAsMCBAQAotLUNWU1RBRyA6PSAkKHNoZWxsIGVjaG8gJChQQUNLQUdFKS0kKFZFUlNJT04pIHwgdHIgW2Etei5dIFtBLVpfXSkKLS0KLS1kaXN0LXVwbG9hZDogZGlzdAotLQlzY3AgJChQQUNLQUdFKS0kKFZFUlNJT04pLnRhci5iejIgJChVU0VSKUBoYW5kaGVsZHMub3JnOi9ob21lL2Z0cC9wdWIvcHJvamVjdHMvZ3BlL3NvdXJjZS8KLS0KLS10YWc6Ci0tCWN2cyB0YWcgJChDVlNUQUcpCi0tCi0tcmV0YWc6Ci0tCWN2cyB0YWcgLUYgJChDVlNUQUcpCi0tCi0tc291cmNlOiB0YWcgZGlzdC11cGxvYWQKLUluZGV4OiB4dHNjYWwtMC42LjMvaDM2MDBfdHMuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHh0c2NhbC0wLjYuMy5vcmlnL2gzNjAwX3RzLmgJMjAwMy0wNy0wNSAxNzoyNzoxMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLUBAIC0xLDIxNiArMCwwIEBACi0tLyoKLS0qCi0tKiBEcml2ZXIgZm9yIHRoZSBIMzYwMCBUb3VjaCBTY3JlZW4gYW5kIG90aGVyIEF0bWVsIGNvbnRyb2xsZWQgZGV2aWNlcy4KLS0qCi0tKiBDb3B5cmlnaHQgMjAwMCBDb21wYXEgQ29tcHV0ZXIgQ29ycG9yYXRpb24uCi0tKgotLSogVXNlIGNvbnNpc3RlbnQgd2l0aCB0aGUgR05VIEdQTCBpcyBwZXJtaXR0ZWQsCi0tKiBwcm92aWRlZCB0aGF0IHRoaXMgY29weXJpZ2h0IG5vdGljZSBpcwotLSogcHJlc2VydmVkIGluIGl0cyBlbnRpcmV0eSBpbiBhbGwgY29waWVzIGFuZCBkZXJpdmVkIHdvcmtzLgotLSoKLS0qIENPTVBBUSBDT01QVVRFUiBDT1JQT1JBVElPTiBNQUtFUyBOTyBXQVJSQU5USUVTLCBFWFBSRVNTRUQgT1IgSU1QTElFRCwKLS0qIEFTIFRPIFRIRSBVU0VGVUxORVNTIE9SIENPUlJFQ1RORVNTIE9GIFRISVMgQ09ERSBPUiBJVFMKLS0qIEZJVE5FU1MgRk9SIEFOWSBQQVJUSUNVTEFSIFBVUlBPU0UuCi0tKgotLSogQXV0aG9yOiBDaGFybGVzIEZseW5uLgotLSoKLS0qLwotLQotLQotLSNpZm5kZWYgX19IMzYwMF9UU19IX18KLS0jZGVmaW5lIF9fSDM2MDBfVFNfSF9fCi0tCi0tI2luY2x1ZGUgPGxpbnV4L2lvY3RsLmg+Ci0tCi0tZW51bSBoMzYwMF90c19taW5vcl9kZXZpY2VzIHsKLS0JVFNfTUlOT1IgICAgPSAwLAotLQlUU1JBV19NSU5PUiA9IDEsCi0tCUtFWV9NSU5PUiAgID0gMgotLX07Ci0tCi0tdHlwZWRlZiBzdHJ1Y3QgaDM2MDBfdHNfY2FsaWJyYXRpb24gewotLSAgICAgICAgaW50IHhzY2FsZTsKLS0gICAgICAgIGludCB4dHJhbnM7Ci0tICAgICAgICBpbnQgeXNjYWxlOwotLSAgICAgICAgaW50IHl0cmFuczsKLS0gICAgICAgIGludCB4eXN3YXA7Ci0tfSBUU19DQUw7Ci0tCi0tdHlwZWRlZiBzdHJ1Y3QgaDM2MDBfdHNfZXZlbnQgewotLSAgICAgICAgdW5zaWduZWQgc2hvcnQgcHJlc3N1cmU7Ci0tICAgICAgICB1bnNpZ25lZCBzaG9ydCB4OwotLSAgICAgICAgdW5zaWduZWQgc2hvcnQgeTsKLS0gICAgICAgIHVuc2lnbmVkIHNob3J0IHBhZDsKLS19IFRTX0VWRU5UOwotLQotLS8qIERlcHJlY2F0ZWQgLSBkbyBub3QgdXNlICovCi0tdHlwZWRlZiBzdHJ1Y3QgaDM2MDBfdHNfcmV0dXJuIHsKLS0gICAgICAgIHVuc2lnbmVkIHNob3J0IHByZXNzdXJlOwotLSAgICAgICAgdW5zaWduZWQgc2hvcnQgeDsKLS0gICAgICAgIHVuc2lnbmVkIHNob3J0IHk7Ci0tICAgICAgICB1bnNpZ25lZCBzaG9ydCBwYWQ7Ci0tfSBUU19SRVQ7Ci0tCi0tZW51bSBwb3dlcl9idXR0b25fbW9kZSB7Ci0tICAgUEJNX1NVU1BFTkQgICAgICAgICAgID0gMCwKLS0gICBQQk1fR0VORVJBVEVfS0VZUFJFU1MgPSAxCi0tfTsKLS0KLS0KLS0vKiArKysrKysrKysrKysrKyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrICovCi0tCi0tdHlwZWRlZiBzdHJ1Y3QgdGhlcm1fZGV2IHsKLS0Jc2hvcnQgZGF0YTsKLS19IFRIRVJNX0RFVjsKLS0KLS0jZGVmaW5lIEgzNjAwX0JBVFRfQ0hFTV9BTEtBTElORSAgICAgICAgMHgwMQotLSNkZWZpbmUgSDM2MDBfQkFUVF9DSEVNX05JQ0QgICAgICAgICAgICAweDAyCi0tI2RlZmluZSBIMzYwMF9CQVRUX0NIRU1fTklNSCAgICAgICAgICAgIDB4MDMKLS0jZGVmaW5lIEgzNjAwX0JBVFRfQ0hFTV9MSU9OICAgICAgICAgICAgMHgwNAotLSNkZWZpbmUgSDM2MDBfQkFUVF9DSEVNX0xJUE9MWSAgICAgICAgICAweDA1Ci0tI2RlZmluZSBIMzYwMF9CQVRUX0NIRU1fTk9UX0lOU1RBTExFRCAgIDB4MDYKLS0jZGVmaW5lIEgzNjAwX0JBVFRfQ0hFTV9VTktOT1dOICAgICAgICAgMHhmZgotLQotLS8qIFRoZXNlIHNob3VsZCBtYXRjaCB0aGUgYXBtX2Jpb3MuaCBkZWZpbml0aW9ucyAqLwotLSNkZWZpbmUgSDM2MDBfQUNfU1RBVFVTX0FDX09GRkxJTkUJMHgwMAotLSNkZWZpbmUgSDM2MDBfQUNfU1RBVFVTX0FDX09OTElORQkweDAxCi0tI2RlZmluZSBIMzYwMF9BQ19TVEFUVVNfQUNfQkFDS1VQCTB4MDIgICAvKiBXaGF0IGRvZXMgdGhpcyBtZWFuPyAqLwotLSNkZWZpbmUgSDM2MDBfQUNfU1RBVFVTX0FDX1VOS05PV04JMHhmZgotLQotLS8qIFRoZXNlIGJpdGZpZWxkcyBhcmUgcmFyZWx5ICJvcidkIiB0b2dldGhlciAqLwotLSNkZWZpbmUgSDM2MDBfQkFUVF9TVEFUVVNfSElHSAkJMHgwMQotLSNkZWZpbmUgSDM2MDBfQkFUVF9TVEFUVVNfTE9XCQkweDAyCi0tI2RlZmluZSBIMzYwMF9CQVRUX1NUQVRVU19DUklUSUNBTAkweDA0Ci0tI2RlZmluZSBIMzYwMF9CQVRUX1NUQVRVU19DSEFSR0lORwkweDA4Ci0tI2RlZmluZSBIMzYwMF9CQVRUX1NUQVRVU19DSEFSR0VfTUFJTiAgIDB4MTAKLS0jZGVmaW5lIEgzNjAwX0JBVFRfU1RBVFVTX0RFQUQgICAgICAgICAgMHgyMCAgIC8qIEJhdHRlcnkgd2lsbCBub3QgY2hhcmdlICovCi0tI2RlZmluZSBIMzYwMF9CQVRUX05PVF9JTlNUQUxMRUQgICAgICAgIDB4MjAgICAvKiBGb3IgZXhwYW5zaW9uIHBhY2sgYmF0dGVyaWVzICovCi0tI2RlZmluZSBIMzYwMF9CQVRUX1NUQVRVU19GVUxMICAgICAgICAgIDB4NDAgICAvKiBCYXR0ZXJ5IGZ1bGx5IGNoYXJnZWQgKGFuZCBjb25uZWN0ZWQgdG8gQUMpICovCi0tI2RlZmluZSBIMzYwMF9CQVRUX1NUQVRVU19OT0JBVFQJMHg4MAotLSNkZWZpbmUgSDM2MDBfQkFUVF9TVEFUVVNfVU5LTk9XTgkweGZmCi0tCi0tc3RydWN0IGJhdHRlcnlfZGF0YSB7Ci0tCXVuc2lnbmVkIGNoYXIgIGNoZW1pc3RyeTsKLS0JdW5zaWduZWQgY2hhciAgc3RhdHVzOwotLQl1bnNpZ25lZCBzaG9ydCB2b2x0YWdlOyAgICAvKiBWb2x0YWdlIGZvciBiYXR0ZXJ5ICMwOyB1bmtub3duIGZvciBiYXR0ZXJ5ICMxICovCi0tCXVuc2lnbmVkIHNob3J0IHBlcmNlbnRhZ2U7IC8qIFBlcmNlbnRhZ2Ugb2YgZnVsbCBjaGFyZ2UgKi8KLS0JdW5zaWduZWQgc2hvcnQgbGlmZTsgICAgICAgLyogTGlmZSByZW1haW5pbmcgaW4gbWludXRlcyAqLwotLX07Ci0tCi0tc3RydWN0IGgzNjAwX2JhdHRlcnkgewotLSAgICAgICAgdW5zaWduZWQgY2hhciAgICAgICBhY19zdGF0dXM7Ci0tCXVuc2lnbmVkIGNoYXIgICAgICAgYmF0dGVyeV9jb3VudDsgIC8qIEhvdyBtYW55IGJhdHRlcmllcyB3ZSBoYXZlICovCi0tCXN0cnVjdCBiYXR0ZXJ5X2RhdGEgYmF0dGVyeVsyXTsKLS19OwotLQotLS8qIC0tLS0tLS0tIEVFUFJPTSBhbmQgU1BJIEludGVyZmFjZXMgLS0tLS0tLS0tLS0tLS0tKi8KLS0KLS0jZGVmaW5lIEVFUFJPTV9SRF9CVUZTSVogNgkvKiBFRVBST00gcmVhZHMgYXJlIDE2IGJpdHMgKi8KLS0jZGVmaW5lIEVFUFJPTV9XUl9CVUZTSVogNQkvKiBBbGxvdyByb29tIGZvciA4Yml0ICdhZGRyJyBmaWVsZCBpbiBidWZmZXIqLyAKLS0jZGVmaW5lIFNQSV9SRF9CVUZTSVoJIDE2CS8qIFNQSSByZWFkcyBhcmUgOCBiaXRzICovCi0tI2RlZmluZSBTUElfV1JfQlVGU0laCSA3Ci0tCi0tLyogVGhlIEVFUFJPTSBpcyB3aGVyZSBpbnRlcm5hbCBwcm9ncmFtcyBhcmUgc3RvcmVkIG9uIHRoZSBBbXRlbC4KLS0gICBZb3UgcHJvYmFibHkgZG9uJ3Qgd2FudCB0byByZWFkIG9yIHdyaXRlIHRoZXNlIHZhbHVlcyAqLwotLQotLXR5cGVkZWYgc3RydWN0IGgzNjAwX2VlcHJvbV9yZWFkX3JlcXVlc3QgewotLQl1bnNpZ25lZCBjaGFyIGFkZHI7ICAgIC8qIDhiaXQgQWRkcmVzcyBPZmZzZXQgMC0yNTUgKi8KLS0JdW5zaWduZWQgY2hhciBsZW47ICAgICAvKiBOdW1iZXIgb2YgMTZiaXQgd29yZHMgdG8gcmVhZCAwLTEyOCAgKi8KLS0JdW5zaWduZWQgc2hvcnQgYnVmZltFRVBST01fUkRfQlVGU0laXTsKLS19IEVFUFJPTV9SRUFEOwotLQotLXR5cGVkZWYgc3RydWN0IGgzNjAwX2VlcHJvbV93cml0ZV9yZXF1ZXN0IHsKLS0JdW5zaWduZWQgY2hhciBsZW47CS8qIHVzZWQgb25seSB0byBjb21wdXRlIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gc2VuZCAqLwotLQl1bnNpZ25lZCBjaGFyIGFkZHI7ICAgIC8qIDAtMTI4ICAqLwotLQl1bnNpZ25lZCBzaG9ydCBidWZmW0VFUFJPTV9XUl9CVUZTSVpdOwotLX0gRUVQUk9NX1dSSVRFOwotLQotLS8qIFRoZSBTUEkgYnVzIGNvbm5lY3RzIHRvIEVFUFJPTXMgbG9jYXRlZCBvbiBzbGVldmVzIHBsdWdnZWQgaW50bwotLSAgIHRoZSBpUEFRLiAgWW91IG1heSB3YW50IHRvIHJlYWQgdGhlc2UgdmFsdWVzICAqLwotLQotLXR5cGVkZWYgc3RydWN0IGgzNjAwX3NwaV9yZWFkX3JlcXVlc3QgewotLQl1bnNpZ25lZCBzaG9ydCBhZGRyOyAgICAvKiAxNmJpdCBBZGRyZXNzIE9mZnNldCAwLTEyOCAqLwotLQl1bnNpZ25lZCBjaGFyIGxlbjsgICAgICAvKiBOdW1iZXIgb2YgYnl0ZXMgdG8gcmVhZCAqLwotLQl1bnNpZ25lZCBjaGFyIGJ1ZmZbU1BJX1JEX0JVRlNJWl07Ci0tfSBTUElfUkVBRDsKLS0KLS0jZGVmaW5lIFNQSV9SRUFEX1NUQVRVU19CWVRFICAweGZmZmYgICAvKiBVc2UgdGhpcyBhZGRyZXNzIHRvIHJlYWQgdGhlIHN0YXR1cyBieXRlICovCi0tCi0tdHlwZWRlZiBzdHJ1Y3QgaDM2MDBfc3BpX3dyaXRlX3JlcXVlc3QgewotLQl1bnNpZ25lZCBzaG9ydCBsZW47CS8qIHVzZWQgb25seSB0byBjb21wdXRlIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gc2VuZCAqLwotLQl1bnNpZ25lZCBzaG9ydCBhZGRyOwkvKiB0aGlzIDE2Yml0IGFkZHJlc3MgYWNjZXNzZXMgYSBzaW5nbGUgYnl0ZSAqLwotLQl1bnNpZ25lZCBjaGFyICBidWZmW1NQSV9XUl9CVUZTSVpdOwotLX0gU1BJX1dSSVRFOwotLQotLQotLS8qIC0tLS0tLS0tIGVuZCBvZiBFRVBST00gYW5kIFNQSSBJbnRlcmZhY2VzIC0tLS0tLS0tLS0tLS0tLSovCi0tCi0tLyogVXNlciBzcGFjZSBzdHJ1Y3R1cmVzIGZvciBJT0NUTCBjYWxscyAqLwotLQotLXR5cGVkZWYgc3RydWN0IGgzNjAwX3RzX3ZlcnNpb24gewotLQl1bnNpZ25lZCBjaGFyIGhvc3RfdmVyc2lvbls4XTsJLyogYXNjaWkgIngueXkiICovCi0tCXVuc2lnbmVkIGNoYXIgcGFja192ZXJzaW9uWzhdOwkvKiBhc2NpaSAieC55eSIgKi8KLS0JdW5zaWduZWQgY2hhciBib290X3R5cGU7CQkvKiBUT0RPID8/ICovCi0tfSBWRVJfUkVUOwotLQotLXR5cGVkZWYgc3RydWN0IGgzNjAwX3RzX2xlZCB7Ci0tICAgICAgICB1bnNpZ25lZCBjaGFyIE9mZk9uQmxpbms7ICAgICAgIC8qIDA9b2ZmIDE9b24gMj1CbGluayAqLwotLSAgICAgICAgdW5zaWduZWQgY2hhciBUb3RhbFRpbWU7ICAgICAgICAvKiBVbml0cyBvZiA1IHNlY29uZHMgKi8KLS0gICAgICAgIHVuc2lnbmVkIGNoYXIgT25UaW1lOyAgICAgICAgICAgLyogdW5pdHMgb2YgMTAwbS9zICovCi0tICAgICAgICB1bnNpZ25lZCBjaGFyIE9mZlRpbWU7ICAgICAgICAgIC8qIHVuaXRzIG9mIDEwMG0vcyAqLwotLX0gTEVEX0lOOwotLQotLWVudW0gZmxpdGVfbW9kZSB7Ci0tICAgICAgICBGTElURV9NT0RFMSA9IDEsCi0tCUZMSVRFX0FVVE9fTU9ERSAgID0gMSwgICAgIC8qIGZvciByZWZlcmVuY2Ugb25seSAqLwotLQlGTElURV9NQU5VQUxfTU9ERSA9IDIsICAgICAvKiBVc2UgdGhpcyBub3JtYWxseT8gKi8KLS0JRkxJVEVfR0VUX0xJR0hUX1NFTlNPUiA9IDMgLyogUmV0dXJucyBsaWdodCByZWFkaW5nIGluICJicmlnaHRuZXNzIiBmaWVsZCAqLwotLX07Ci0tZW51bSBmbGl0ZV9wd3IgewotLSAgICAgICAgRkxJVEVfUFdSX09GRiA9IDAsCi0tICAgICAgICBGTElURV9QV1JfT04gID0gMQotLX07Ci0tCi0tdHlwZWRlZiBzdHJ1Y3QgaDM2MDBfdHNfZmxpdGUgewotLSAgICAgICAgdW5zaWduZWQgY2hhciBtb2RlOwotLSAgICAgICAgdW5zaWduZWQgY2hhciBwd3I7Ci0tICAgICAgICB1bnNpZ25lZCBjaGFyIGJyaWdodG5lc3M7Ci0tfSBGTElURV9JTjsKLS0KLS0vKioqKioqKioqKioqKioqKioqKioqKioqKioqIFVwZGF0ZWQgInVuaXZlcnNhbCIgc3RydWN0dXJlcyAqKioqKioqKioqKioqKioqKioqLwotLQotLS8qIFNldHMgYmFja2xpZ2h0IGZvciBib3RoIEgzMTAwIGFuZCBIMzYwMCBtb2RlbHMgLSB0ZWNobmljYWxseSAiZnJvbnRsaWdodCIgZm9yIEgzNjAwICovCi0tc3RydWN0IGgzNjAwX3RzX2JhY2tsaWdodCB7Ci0tCWVudW0gZmxpdGVfcHdyIHBvd2VyOyAgICAgICAgICAvKiAwID0gb2ZmLCAxID0gb24gKi8KLS0JdW5zaWduZWQgY2hhciAgYnJpZ2h0bmVzczsgICAgIC8qIDAgLSAyNTUgICAgICAgICAqLwotLX07Ci0tCi0tc3RydWN0IGgzNjAwX3RzX2NvbnRyYXN0IHsgICAgICAgICAgICAvKiBPbmx5IHVzZWZ1bCBvbiBIMzEwMCBtb2RlbCAqLwotLQl1bnNpZ25lZCBjaGFyIGNvbnRyYXN0OyAgICAgICAvKiAwIC0gMjU1ICovCi0tfTsKLS0KLS0vKiBJT0NUTCBjbWRzICB1c2VyIG9yIGtlcm5lbCBzcGFjZSAqLwotLQotLS8qIFVzZSAnZicgYXMgbWFnaWMgbnVtYmVyICovCi0tI2RlZmluZSBJT0NfSDM2MDBfVFNfTUFHSUMgICdmJwotLQotLS8qIFRPRE86IFNvbWUgb2YgdGhlc2UgSU9XUiB2YWx1ZXMgYXJlIGp1c3QgcGxhaW4gd3JvbmcgKi8KLS0jZGVmaW5lIEdFVF9WRVJTSU9OCQlfSU9SKElPQ19IMzYwMF9UU19NQUdJQywgIDEsIHN0cnVjdCBoMzYwMF90c192ZXJzaW9uICkKLS0jZGVmaW5lIFJFQURfRUVQUk9NCQlfSU9XUihJT0NfSDM2MDBfVFNfTUFHSUMsIDIsIHN0cnVjdCBoMzYwMF9lZXByb21fcmVhZF9yZXF1ZXN0KQotLSNkZWZpbmUgV1JJVEVfRUVQUk9NCQlfSU9XUihJT0NfSDM2MDBfVFNfTUFHSUMsIDMsIHN0cnVjdCBoMzYwMF9lZXByb21fd3JpdGVfcmVxdWVzdCkKLS0jZGVmaW5lIEdFVF9USEVSTUFMCQlfSU9SKElPQ19IMzYwMF9UU19NQUdJQywgIDQsIHN0cnVjdCB0aGVybV9kZXYpCi0tI2RlZmluZSBMRURfT04JCQlfSU9XKElPQ19IMzYwMF9UU19NQUdJQywgIDUsIHN0cnVjdCBoMzYwMF90c19sZWQpCi0tI2RlZmluZSBHRVRfQkFUVEVSWV9TVEFUVVMJX0lPUihJT0NfSDM2MDBfVFNfTUFHSUMsICA2LCBzdHJ1Y3QgaDM2MDBfYmF0dGVyeSkKLS0jZGVmaW5lIEZMSVRFX09OCQlfSU9XKElPQ19IMzYwMF9UU19NQUdJQywgIDcsIHN0cnVjdCBoMzYwMF90c19mbGl0ZSkKLS0jZGVmaW5lIFJFQURfU1BJCQlfSU9XUihJT0NfSDM2MDBfVFNfTUFHSUMsIDgsIHN0cnVjdCBoMzYwMF9zcGlfcmVhZF9yZXF1ZXN0KQotLSNkZWZpbmUgV1JJVEVfU1BJCQlfSU9XUihJT0NfSDM2MDBfVFNfTUFHSUMsIDksIHN0cnVjdCBoMzYwMF9zcGlfd3JpdGVfcmVxdWVzdCkKLS0jZGVmaW5lIFRTX0dFVF9DQUwJCV9JT1IoSU9DX0gzNjAwX1RTX01BR0lDLCAxMCwgc3RydWN0IGgzNjAwX3RzX2NhbGlicmF0aW9uKQotLSNkZWZpbmUgVFNfU0VUX0NBTAkJX0lPVyhJT0NfSDM2MDBfVFNfTUFHSUMsIDExLCBzdHJ1Y3QgaDM2MDBfdHNfY2FsaWJyYXRpb24pCi0tCi0tLyogTmV3IElPQ1RMIGludGVyZmFjZXMgLSBkZWZpbmVkIHRvIGJlIG1vcmUgdXNlciBmcmllbmRseSAqLwotLSNkZWZpbmUgVFNfR0VUX0JBQ0tMSUdIVCAgICAgICAgX0lPUihJT0NfSDM2MDBfVFNfTUFHSUMsIDIwLCBzdHJ1Y3QgaDM2MDBfdHNfYmFja2xpZ2h0KQotLSNkZWZpbmUgVFNfU0VUX0JBQ0tMSUdIVCAgICAgICAgX0lPVyhJT0NfSDM2MDBfVFNfTUFHSUMsIDIwLCBzdHJ1Y3QgaDM2MDBfdHNfYmFja2xpZ2h0KQotLSNkZWZpbmUgVFNfR0VUX0NPTlRSQVNUICAgICAgICAgX0lPUihJT0NfSDM2MDBfVFNfTUFHSUMsIDIxLCBzdHJ1Y3QgaDM2MDBfdHNfY29udHJhc3QpCi0tI2RlZmluZSBUU19TRVRfQ09OVFJBU1QgICAgICAgICBfSU9XKElPQ19IMzYwMF9UU19NQUdJQywgMjEsIHN0cnVjdCBoMzYwMF90c19jb250cmFzdCkKLS0KLS0jZW5kaWYKLUluZGV4OiB4dHNjYWwtMC42LjMvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB4dHNjYWwtMC42LjMub3JpZy9NYWtlZmlsZS5hbQkyMDA0LTA2LTAyIDIzOjA3OjEzLjAwMDAwMDAwMCArMDEwMAotKysrIHh0c2NhbC0wLjYuMy9NYWtlZmlsZS5hbQkyMDA3LTA3LTAyIDEyOjUxOjAyLjAwMDAwMDAwMCArMDEwMAotQEAgLTEsMTEgKzEsOCBAQAotLWxpYmV4ZWNfUFJPR1JBTVMgPSB4dHNjYWwuYmluCi0tYmluX1NDUklQVFMgPSB4dHNjYWwKLStiaW5fUFJPR1JBTVMgPSB4dHNjYWwKLSAKLS14dHNjYWxfYmluX1NPVVJDRVMgPSBtYWluLmMgY2FsaWJyYXRlLmMgY2FsaWJyYXRlLmggaDM2MDBfdHMuaAotK3h0c2NhbF9TT1VSQ0VTID0gbWFpbi5jIGNhbGlicmF0ZS5jIGNhbGlicmF0ZS5oCi0gCi0teHRzY2FsX2Jpbl9MREFERCA9IEBYVFNDQUxfTElCU0AKLSt4dHNjYWxfTERBREQgPSBAWFRTQ0FMX0xJQlNACi0gCi0gSU5DTFVERVMgPSBAWFRTQ0FMX0NGTEFHU0AgLUROUl9QT0lOVFM9NQotIAotLWluY2x1ZGUgZ3BlLWRpc3QuYW0KLS0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveHRzY2FsL3h0c2NhbC9kc29fbGlua2luZ19jaGFuZ2VfYnVpbGRfZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94dHNjYWwveHRzY2FsL2Rzb19saW5raW5nX2NoYW5nZV9idWlsZF9maXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlNDUzM2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94dHNjYWwveHRzY2FsL2Rzb19saW5raW5nX2NoYW5nZV9idWlsZF9maXgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1hZnRlciBnY2MgbGlua2luZyBoYXMgY2hhbmdlZCwgYWxsIHRoZSBsaWJyYXJpZXMgbXVzdCBiZSBleHBsaWNpdGVseSBzcGVjaWZpZWQgCi1UaGlzIHBhdGNoIGF2b2lkcyB0aGlzIGxpbmtpbmcgZXJyb3I6Ci0KLXwgY2NhY2hlIGk1ODYtcG9reS1saW51eC1nY2MgLW1hcmNoPWk1ODYgLS1zeXNyb290PS9kaXNrMC9wb2t5YnVpbGQvYnVpbGQxL3RtcC9zeXNyb290cy9pNTg2LXBva3ktbGludXggIC1mZXhwZW5zaXZlLW9wdGltaXphdGlvbnMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLWZyZW5hbWUtcmVnaXN0ZXJzIC1PMiAtZ2dkYiAtZmVsaW1pbmF0ZS11bnVzZWQtZGVidWctdHlwZXMgIC1XbCwtTzEgLVdsLC0taGFzaC1zdHlsZT1nbnUgLVdsLC0tYXMtbmVlZGVkIC1vIHh0c2NhbCBtYWluLm8gY2FsaWJyYXRlLm8gLWxYMTEgLWxYZnQgLWxYZXh0IC1sWGNhbGlicmF0ZV5NCi18IC9kaXNrMC9wb2t5YnVpbGQvYnVpbGQxL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYmV4ZWMvaTU4Ni1wb2t5LWxpbnV4L2djYy9pNTg2LXBva3ktbGludXgvNC41LjEvbGQ6IF4/OiBpbnZhbGlkIERTTyBmb3Igc3ltYm9sIGBYUmVuZGVyQ2hhbmdlUGljdHVyZScgZGVmaW5pdGlvbl5NCi18IC9kaXNrMC9wb2t5YnVpbGQvYnVpbGQxL3RtcC9zeXNyb290cy9pNTg2LXBva3ktbGludXgvdXNyL2xpYi9saWJYcmVuZGVyLnNvLjE6IGNvdWxkIG5vdCByZWFkIHN5bWJvbHM6IEJhZCB2YWx1ZV5NCi18IGNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzXk0KLXwgbWFrZTogKioqIFt4dHNjYWxdIEVycm9yIDEKLQotTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KLURhdGU6IDIwMTEvMDEvMTEKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUluZGV4OiB4dHNjYWwtMC42LjMvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0geHRzY2FsLTAuNi4zLm9yaWcvY29uZmlndXJlLmFjCi0rKysgeHRzY2FsLTAuNi4zL2NvbmZpZ3VyZS5hYwotQEAgLTksNyArOSw3IEBAIEFNX0lOSVRfQVVUT01BS0UoW2ZvcmVpZ24gZGlzdC1iemlwMl0pCi0gIyBDaGVja3MgZm9yIHByb2dyYW1zLgotIEFDX1BST0dfQ0MKLSAKLS1QS0dfQ0hFQ0tfTU9EVUxFUyhYVFNDQUwsIHgxMSB4ZnQgeGV4dCB4Y2FsaWJyYXRlKQotK1BLR19DSEVDS19NT0RVTEVTKFhUU0NBTCwgeDExIHhmdCB4ZXh0IHhjYWxpYnJhdGUgeHJlbmRlcikKLSAKLSBBQ19DT05GSUdfRklMRVMoW01ha2VmaWxlXSkKLSBBQ19PVVRQVVQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveHRzY2FsL3h0c2NhbF8wLjYuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveHRzY2FsL3h0c2NhbF8wLjYuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGJmZGRmMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3h0c2NhbC94dHNjYWxfMC42LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1TVU1NQVJZID0gIlRvdWNoc2NyZWVuIGNhbGlicmF0aW9uIHV0aWxpdHkiCi0KLURFU0NSSVBUSU9OID0gIkJhc2ljIHRvdWNoc2NyZWVuIGNhbGlicmF0aW9uIHV0aWxpdHkiCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9ncGUubGludXh0b2dvLm9yZyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3MubGludXh0b2dvLm9yZyIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9tYWluLmM7ZW5kbGluZT0xMDttZDU9ODcyMWJjYjA4YWU5ZjI0ZTVmZTRjODI5NDE4NzNjODciCi0KLVNFQ1RJT04gPSAieDExL2Jhc2UiCi0KLURFUEVORFMgPSAidmlydHVhbC9saWJ4MTEgbGlieGZ0IGxpYnhjYWxpYnJhdGUiCi0KLVBSID0gInIxMyIKLQotU1JDX1VSSSA9ICIke0dQRV9NSVJST1J9L3h0c2NhbC0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2NoYW5nZS1jcm9zcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jbGVhbnVwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Rzb19saW5raW5nX2NoYW5nZV9idWlsZF9maXgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMzB4VHNfQ2FsaWJyYXRlLnNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOWJjYWI4MGI0NzRkNTQ1NDQ3N2QxY2ExNjZhNjhjMzQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjdiOWRjMjIwM2RlOWIxNzA2Y2EzOWZhNmNhODBlY2FiODgwNzkwOWVjOTAxYzRhMzQ1YjhlNDExNzg4MDBhMSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjawotIyBkZXBlbmRzIG9uIHZpcnR1YWwvbGlieDExCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L1gxMS9Yc2Vzc2lvbi5kLwotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9LzMweFRzX0NhbGlicmF0ZS5zaCAke0R9JHtzeXNjb25mZGlyfS9YMTEvWHNlc3Npb24uZC8KLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9jcnlwdG9kZXYuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi5pbmMKaW5kZXggYWRlN2VmOS4uMTYwYWIzMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi5pbmMKQEAgLTMsNyArMyw5IEBACiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCiAKLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLmduYS5vcmcvY3J5cHRvZGV2LWxpbnV4L2NyeXB0b2Rldi1saW51eC0ke1BWfS50YXIuZ3oiCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5nbmEub3JnL2NyeXB0b2Rldi1saW51eC9jcnlwdG9kZXYtbGludXgtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzA2ZDZiNTYwYzZlNDVkYzMxN2RhZTQ3Yzc0NzA2ZmE0M2Y0YTMxZDgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY2IxODZmNjgyNjc5MzgzZThiNTgwNjI0MDkyNzkwMzczMGNlODVkOS5wYXRjaCIKIAogU1JDX1VSSVttZDVzdW1dID0gIjAyNjQ0Y2M0Y2QwMjMwMWUwYjUwM2EzMzJlYjJmMGI1IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY3ZmFiZGU5ZmI2N2IyODZhOTZjNGY0NWI1OTRiMGVjY2QwZjc2MWI0OTU3MDVjMThmMmFlOTQ2MWI4MzEzNzYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMvMDZkNmI1NjBjNmU0NWRjMzE3ZGFlNDdjNzQ3MDZmYTQzZjRhMzFkOC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy8wNmQ2YjU2MGM2ZTQ1ZGMzMTdkYWU0N2M3NDcwNmZhNDNmNGEzMWQ4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiNTU2ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMvMDZkNmI1NjBjNmU0NWRjMzE3ZGFlNDdjNzQ3MDZmYTQzZjRhMzFkOC5wYXRjaApAQCAtMCwwICsxLDU0IEBACitGcm9tIGYxNGI0NzA2YjBkMDQ5ODhlN2U1YmM4YzRkMmFlZmVmOWYwMjlkOWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaWNoYWVsIFdlaXNlciA8bWljaGFlbC53ZWlzZXJAZ214LmRlPgorRGF0ZTogRnJpLCA1IEF1ZyAyMDE2IDE4OjQzOjU1ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkanVzdCB0byByZWNlbnQgdXNlciBwYWdlIEFQSSBjaGFuZ2VzCisKKzQuNi4wIGJhc2ljYWxseSByZW5hbWVkIGdldF91c2VyX3BhZ2VzKCkgdG8gZ2V0X3VzZXJfcGFnZXNfcmVtb3RlKCkgYW5kCitpbnRyb2R1Y2VkIGEgbmV3IGdldF91c2VyX3BhZ2VzKCkgdGhhdCBhbHdheXMgd29ya3Mgb24gdGhlIGN1cnJlbnQKK3Rhc2suWzFdIERpc3Rpbmd1aXNoIHRoZSB0d28gQVBJcyBiYXNlZCBvbiBrZXJuZWwgdmVyc2lvbiB3ZSdyZQorY29tcGlsaW5nIGZvci4KKworQWxzbywgdGhlcmUgc2VlbXMgdG8gaGF2ZSBiZWVuIGEgbWFzc2l2ZSBjbGVhbnNpbmcgb2YKK3BhZ2VfY2FjaGVfcmVsZWFzZShwYWdlKSBpbiBmYXZvdXIgb2YgcHV0X3BhZ2UocGFnZSlbMl0gd2hpY2ggd2FzIGFuCithbGlhcyBmb3IgcHV0X3BhZ2UocGFnZSlbM10gc2luY2UgMi42LjAuIEJlZm9yZSB0aGF0IGJlZ2lubmluZyB3aXRoCisyLjQuMCBib3RoIHBhZ2VfY2FjaGVfcmVsZWFzZShwYWdlKSBhbmQgcHV0X3BhZ2UocGFnZSkgaGF2ZSBiZWVuIGFsaWFzZXMKK2ZvciBfX2ZyZWVfcGFnZShwYWdlKS4gU28gdXNpbmcgcHV0X3BhZ2UoKSBpbnN0ZWFkIG9mCitwYWdlX2NhY2hlX3JlbGVhc2UocGFnZSkgd2lsbCBwcm9kdWNlIGlkZW50aWNhbCBjb2RlIGZvciBhbnl0aGluZyBhZnRlcgorMi40LjAuCisKK1sxXSBodHRwczovL2xrbWwub3JnL2xrbWwvMjAxNi8yLzEwLzU1NQorWzJdIGh0dHBzOi8vd3d3LnNwaW5pY3MubmV0L2xpc3RzL2xpbnV4LWZzZGV2ZWwvbXNnOTU5MjMuaHRtbAorWzNdIGh0dHBzOi8vd3d3LnNwaW5pY3MubmV0L2xpc3RzL2xpbnV4LWZzZGV2ZWwvbXNnOTU5MjIuaHRtbAorLS0tCisgemMuYyB8IDkgKysrKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZnJvbSBtYXN0ZXIgZm9yIDQuOCBrZXJuZWxzXQorCitJbmRleDogY3J5cHRvZGV2LWxpbnV4LTEuOC96Yy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gY3J5cHRvZGV2LWxpbnV4LTEuOC5vcmlnL3pjLmMKKysrKyBjcnlwdG9kZXYtbGludXgtMS44L3pjLmMKK0BAIC01OSw3ICs1OSwxMiBAQCBpbnQgX19nZXRfdXNlcmJ1Zih1aW50OF90IF9fdXNlciAqYWRkciwKKyAJfQorIAorIAlkb3duX3JlYWQoJm1tLT5tbWFwX3NlbSk7CistCXJldCA9IGdldF91c2VyX3BhZ2VzKHRhc2ssIG1tLAorKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDQsIDYsIDApKQorKwlyZXQgPSBnZXRfdXNlcl9wYWdlc19yZW1vdGUoCisrI2Vsc2UKKysJcmV0ID0gZ2V0X3VzZXJfcGFnZXMoCisrI2VuZGlmCisrCQkJdGFzaywgbW0sCisgCQkJKHVuc2lnbmVkIGxvbmcpYWRkciwgcGdjb3VudCwgd3JpdGUsIDAsIHBnLCBOVUxMKTsKKyAJdXBfcmVhZCgmbW0tPm1tYXBfc2VtKTsKKyAJaWYgKHJldCAhPSBwZ2NvdW50KQorQEAgLTExOSw3ICsxMjQsNyBAQCB2b2lkIHJlbGVhc2VfdXNlcl9wYWdlcyhzdHJ1Y3QgY3Nlc3Npb24KKyAJCWVsc2UKKyAJCQlzZXMtPnJlYWRvbmx5X3BhZ2VzLS07CisgCistCQlwYWdlX2NhY2hlX3JlbGVhc2Uoc2VzLT5wYWdlc1tpXSk7CisrCQlwdXRfcGFnZShzZXMtPnBhZ2VzW2ldKTsKKyAJfQorIAlzZXMtPnVzZWRfcGFnZXMgPSAwOworIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy9jYjE4NmY2ODI2NzkzODNlOGI1ODA2MjQwOTI3OTAzNzMwY2U4NWQ5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2ZpbGVzL2NiMTg2ZjY4MjY3OTM4M2U4YjU4MDYyNDA5Mjc5MDM3MzBjZTg1ZDkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWIwZWFiNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy9jYjE4NmY2ODI2NzkzODNlOGI1ODA2MjQwOTI3OTAzNzMwY2U4NWQ5LnBhdGNoCkBAIC0wLDAgKzEsMjc5IEBACitGcm9tIGNiMTg2ZjY4MjY3OTM4M2U4YjU4MDYyNDA5Mjc5MDM3MzBjZTg1ZDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaWNoYWVsIFdlaXNlciA8bWljaGFlbC53ZWlzZXJAZ214LmRlPgorRGF0ZTogRnJpLCA1IEF1ZyAyMDE2IDE3OjI2OjI3ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIFN1cHBvcnQgc2tjaXBoZXIgaW4gYWRkaXRpb24gdG8gYWJsa2NpcGhlciBBUEkKKworVGhlIGFibGtjaXBoZXIgQVBJIGlzIGJlaW5nIHBoYXNlZCBvdXRbMV0uIFRoZSB1bmlmaWVkIHNrY2lwaGVyIEFQSQorc2VlbXMgdG8gaGF2ZSBtYWRlIGl0cyBlbnRyeSB3aXRoIDQuMy5bMywgNF0gQnkgd2hhdCBjYW4gYmUgc2VlbiBmcm9tCittaWdyYXRpb24gcGF0Y2hlc1sxLmZmLl0sIGl0J3MgYSBkcm9wLWluIHJlcGxhY2VtZW50LgorCitBbHNvLCBkZWFsbG9jYXRvcnMgc3VjaCBhcyBjcnlwdG9fZnJlZV9za2NpcGhlcigpIGFyZSBOVUxMLXNhZmUgbm93WzJdLgorCitBZGQgYSBuZXcgaGVhZGVyIGNpcGhlcmFwaS5oIHRvIGFpZCBtaWdyYXRpb24gZnJvbSBhYmxrY2lwaGVyIHRvIHNrY2lwaGVyIGFuZAorcmV0YWluIHN1cHBvcnQgZm9yIG9sZCBrZXJuZWxzLiBNYWtlIGl0IGRlY2lkZSB3aGljaCBBUEkgdG8gdXNlIGFuZCBwcm92aWRlCithcHByb3ByaWF0ZSBmdW5jdGlvbiBjYWxscyBhbmQgdHlwZSBkZWZpbml0aW9ucy4gU2luY2UgdGhlIGFibGtjaXBoZXIgYW5kCitza2NpcGhlciBBUElzIGFyZSBzbyBzaW1pbGFyLCB0aG9zZSBhcmUgbWFpbmx5IGRlZmluZXMgZm9yIGNvcnJlc3BvbmRpbmcKK3BzZXVkby1mdW5jdGlvbnMgaW4gbmFtZXNwYWNlIGNyeXB0b2Rldl8gZGVyaXZlZCBkaXJlY3RseSBmcm9tIHRoZWlyIEFQSQorY291bnRlcnBhcnRzLgorCitDb21waWxlcyBhbmQgd29ya3MgKGkuZS4gY2hlY2tzIHBhc3MpIHdpdGggRGViaWFuIHRlc3RpbmcgNC42LjQga2VybmVsCithcyB3ZWxsIGFzIDQuOC1yYzIrIExpbnVzIGdpdCB0cmVlIGFzIG9mIHRvZGF5LiAoQm90aCByZXF1aXJlIGEgZml4IGZvcgorY2hhbmdlZCBwYWdlIGFjY2VzcyBBUElbNV0uKQorCitbMV0gaHR0cHM6Ly93d3cuc3Bpbmljcy5uZXQvbGlzdHMvbGludXgtY3J5cHRvL21zZzE4MTMzLmh0bWwKK1syXSBodHRwczovL3d3dy5zcGluaWNzLm5ldC9saXN0cy9saW51eC1jcnlwdG8vbXNnMTgxNTQuaHRtbCwgbGluZSAxMjAKK1szXSBodHRwczovL3d3dy5zcGluaWNzLm5ldC9saXN0cy9saW51eC1jcnlwdG8vbXNnMTYzNzMuaHRtbAorWzRdIGh0dHBzOi8vd3d3LnNwaW5pY3MubmV0L2xpc3RzL2xpbnV4LWNyeXB0by9tc2cxNjI5NC5odG1sCitbNV0gaHR0cHM6Ly9naXRodWIuY29tL2NyeXB0b2Rldi1saW51eC9jcnlwdG9kZXYtbGludXgvcHVsbC8xNAorLS0tCisgY2lwaGVyYXBpLmggfCA2MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBjcnlwdGxpYi5jICB8IDQwICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBjcnlwdGxpYi5oICB8ICA2ICsrKystLQorIGlvY3RsLmMgICAgIHwgIDQgKystLQorIDQgZmlsZXMgY2hhbmdlZCwgODQgaW5zZXJ0aW9ucygrKSwgMjYgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGNpcGhlcmFwaS5oCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2Zyb20gbWFzdGVyIGZvciA0Ljgga2VybmVsc10KKworSW5kZXg6IGNyeXB0b2Rldi1saW51eC0xLjgvY2lwaGVyYXBpLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwKKysrKyBjcnlwdG9kZXYtbGludXgtMS44L2NpcGhlcmFwaS5oCitAQCAtMCwwICsxLDYwIEBACisrI2lmbmRlZiBDSVBIRVJBUElfSAorKyMgZGVmaW5lIENJUEhFUkFQSV9ICisrCisrI2luY2x1ZGUgPGxpbnV4L3ZlcnNpb24uaD4KKysKKysjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDQsIDgsIDApKQorKyMgaW5jbHVkZSA8bGludXgvY3J5cHRvLmg+CisrCisrdHlwZWRlZiBzdHJ1Y3QgYWJsa2NpcGhlcl9hbGcgY3J5cHRvZGV2X2Jsa2NpcGhlcl9hbGdfdDsKKyt0eXBlZGVmIHN0cnVjdCBjcnlwdG9fYWJsa2NpcGhlciBjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl90OworK3R5cGVkZWYgc3RydWN0IGFibGtjaXBoZXJfcmVxdWVzdCBjcnlwdG9kZXZfYmxrY2lwaGVyX3JlcXVlc3RfdDsKKysKKysjIGRlZmluZSBjcnlwdG9kZXZfY3J5cHRvX2FsbG9jX2Jsa2NpcGhlciBjcnlwdG9fYWxsb2NfYWJsa2NpcGhlcgorKyMgZGVmaW5lIGNyeXB0b2Rldl9jcnlwdG9fYmxrY2lwaGVyX2FsZyBjcnlwdG9fYWJsa2NpcGhlcl9hbGcKKysjIGRlZmluZSBjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl9ibG9ja3NpemUgY3J5cHRvX2FibGtjaXBoZXJfYmxvY2tzaXplCisrIyBkZWZpbmUgY3J5cHRvZGV2X2NyeXB0b19ibGtjaXBoZXJfaXZzaXplIGNyeXB0b19hYmxrY2lwaGVyX2l2c2l6ZQorKyMgZGVmaW5lIGNyeXB0b2Rldl9jcnlwdG9fYmxrY2lwaGVyX2FsaWdubWFzayBjcnlwdG9fYWJsa2NpcGhlcl9hbGlnbm1hc2sKKysjIGRlZmluZSBjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl9zZXRrZXkgY3J5cHRvX2FibGtjaXBoZXJfc2V0a2V5CisrCisrc3RhdGljIGlubGluZSB2b2lkIGNyeXB0b2Rldl9jcnlwdG9fZnJlZV9ibGtjaXBoZXIoY3J5cHRvZGV2X2NyeXB0b19ibGtjaXBoZXJfdCAqYykgeworKwlpZiAoYykKKysJCWNyeXB0b19mcmVlX2FibGtjaXBoZXIoYyk7CisrfQorKworKyMgZGVmaW5lIGNyeXB0b2Rldl9ibGtjaXBoZXJfcmVxdWVzdF9hbGxvYyBhYmxrY2lwaGVyX3JlcXVlc3RfYWxsb2MKKysjIGRlZmluZSBjcnlwdG9kZXZfYmxrY2lwaGVyX3JlcXVlc3Rfc2V0X2NhbGxiYWNrIGFibGtjaXBoZXJfcmVxdWVzdF9zZXRfY2FsbGJhY2sKKysKKytzdGF0aWMgaW5saW5lIHZvaWQgY3J5cHRvZGV2X2Jsa2NpcGhlcl9yZXF1ZXN0X2ZyZWUoY3J5cHRvZGV2X2Jsa2NpcGhlcl9yZXF1ZXN0X3QgKnIpIHsKKysJaWYgKHIpCisrCQlhYmxrY2lwaGVyX3JlcXVlc3RfZnJlZShyKTsKKyt9CisrCisrIyBkZWZpbmUgY3J5cHRvZGV2X2Jsa2NpcGhlcl9yZXF1ZXN0X3NldF9jcnlwdCBhYmxrY2lwaGVyX3JlcXVlc3Rfc2V0X2NyeXB0CisrIyBkZWZpbmUgY3J5cHRvZGV2X2NyeXB0b19ibGtjaXBoZXJfZW5jcnlwdCBjcnlwdG9fYWJsa2NpcGhlcl9lbmNyeXB0CisrIyBkZWZpbmUgY3J5cHRvZGV2X2NyeXB0b19ibGtjaXBoZXJfZGVjcnlwdCBjcnlwdG9fYWJsa2NpcGhlcl9kZWNyeXB0CisrIyBkZWZpbmUgY3J5cHRvZGV2X2NyeXB0b19ibGtjaXBoZXJfdGZtIGNyeXB0b19hYmxrY2lwaGVyX3RmbQorKyNlbHNlCisrI2luY2x1ZGUgPGNyeXB0by9za2NpcGhlci5oPgorKworK3R5cGVkZWYgc3RydWN0IHNrY2lwaGVyX2FsZyBjcnlwdG9kZXZfYmxrY2lwaGVyX2FsZ190OworK3R5cGVkZWYgc3RydWN0IGNyeXB0b19za2NpcGhlciBjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl90OworK3R5cGVkZWYgc3RydWN0IHNrY2lwaGVyX3JlcXVlc3QgY3J5cHRvZGV2X2Jsa2NpcGhlcl9yZXF1ZXN0X3Q7CisrCisrIyBkZWZpbmUgY3J5cHRvZGV2X2NyeXB0b19hbGxvY19ibGtjaXBoZXIgY3J5cHRvX2FsbG9jX3NrY2lwaGVyCisrIyBkZWZpbmUgY3J5cHRvZGV2X2NyeXB0b19ibGtjaXBoZXJfYWxnIGNyeXB0b19za2NpcGhlcl9hbGcKKysjIGRlZmluZSBjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl9ibG9ja3NpemUgY3J5cHRvX3NrY2lwaGVyX2Jsb2Nrc2l6ZQorKyMgZGVmaW5lIGNyeXB0b2Rldl9jcnlwdG9fYmxrY2lwaGVyX2l2c2l6ZSBjcnlwdG9fc2tjaXBoZXJfaXZzaXplCisrIyBkZWZpbmUgY3J5cHRvZGV2X2NyeXB0b19ibGtjaXBoZXJfYWxpZ25tYXNrIGNyeXB0b19za2NpcGhlcl9hbGlnbm1hc2sKKysjIGRlZmluZSBjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl9zZXRrZXkgY3J5cHRvX3NrY2lwaGVyX3NldGtleQorKyMgZGVmaW5lIGNyeXB0b2Rldl9jcnlwdG9fZnJlZV9ibGtjaXBoZXIgY3J5cHRvX2ZyZWVfc2tjaXBoZXIKKysjIGRlZmluZSBjcnlwdG9kZXZfYmxrY2lwaGVyX3JlcXVlc3RfYWxsb2Mgc2tjaXBoZXJfcmVxdWVzdF9hbGxvYworKyMgZGVmaW5lIGNyeXB0b2Rldl9ibGtjaXBoZXJfcmVxdWVzdF9zZXRfY2FsbGJhY2sgc2tjaXBoZXJfcmVxdWVzdF9zZXRfY2FsbGJhY2sKKysjIGRlZmluZSBjcnlwdG9kZXZfYmxrY2lwaGVyX3JlcXVlc3RfZnJlZSBza2NpcGhlcl9yZXF1ZXN0X2ZyZWUKKysjIGRlZmluZSBjcnlwdG9kZXZfYmxrY2lwaGVyX3JlcXVlc3Rfc2V0X2NyeXB0IHNrY2lwaGVyX3JlcXVlc3Rfc2V0X2NyeXB0CisrIyBkZWZpbmUgY3J5cHRvZGV2X2NyeXB0b19ibGtjaXBoZXJfZW5jcnlwdCBjcnlwdG9fc2tjaXBoZXJfZW5jcnlwdAorKyMgZGVmaW5lIGNyeXB0b2Rldl9jcnlwdG9fYmxrY2lwaGVyX2RlY3J5cHQgY3J5cHRvX3NrY2lwaGVyX2RlY3J5cHQKKysjIGRlZmluZSBjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl90Zm0gY3J5cHRvX3NrY2lwaGVyX3RmbQorKyNlbmRpZgorKworKyNlbmRpZgorSW5kZXg6IGNyeXB0b2Rldi1saW51eC0xLjgvY3J5cHRsaWIuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGNyeXB0b2Rldi1saW51eC0xLjgub3JpZy9jcnlwdGxpYi5jCisrKysgY3J5cHRvZGV2LWxpbnV4LTEuOC9jcnlwdGxpYi5jCitAQCAtMjMsNyArMjMsNiBAQAorICAqIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEsIFVTQS4KKyAgKi8KKyAKKy0jaW5jbHVkZSA8bGludXgvY3J5cHRvLmg+CisgI2luY2x1ZGUgPGxpbnV4L21tLmg+CisgI2luY2x1ZGUgPGxpbnV4L2hpZ2htZW0uaD4KKyAjaW5jbHVkZSA8bGludXgvaW9jdGwuaD4KK0BAIC0zNyw2ICszNiw3IEBACisgI2luY2x1ZGUgPGxpbnV4L3J0bmV0bGluay5oPgorICNpbmNsdWRlIDxjcnlwdG8vYXV0aGVuYy5oPgorICNpbmNsdWRlICJjcnlwdG9kZXZfaW50LmgiCisrI2luY2x1ZGUgImNpcGhlcmFwaS5oIgorIAorIAorIHN0cnVjdCBjcnlwdG9kZXZfcmVzdWx0IHsKK0BAIC0xMzMsMTUgKzEzMywxNSBAQCBpbnQgY3J5cHRvZGV2X2NpcGhlcl9pbml0KHN0cnVjdCBjaXBoZXJfCisgCWludCByZXQ7CisgCisgCWlmIChhZWFkID09IDApIHsKKy0JCXN0cnVjdCBhYmxrY2lwaGVyX2FsZyAqYWxnOworKwkJY3J5cHRvZGV2X2Jsa2NpcGhlcl9hbGdfdCAqYWxnOworIAorLQkJb3V0LT5hc3luYy5zID0gY3J5cHRvX2FsbG9jX2FibGtjaXBoZXIoYWxnX25hbWUsIDAsIDApOworKwkJb3V0LT5hc3luYy5zID0gY3J5cHRvZGV2X2NyeXB0b19hbGxvY19ibGtjaXBoZXIoYWxnX25hbWUsIDAsIDApOworIAkJaWYgKHVubGlrZWx5KElTX0VSUihvdXQtPmFzeW5jLnMpKSkgeworIAkJCWRkZWJ1ZygxLCAiRmFpbGVkIHRvIGxvYWQgY2lwaGVyICVzIiwgYWxnX25hbWUpOworIAkJCQlyZXR1cm4gLUVJTlZBTDsKKyAJCX0KKyAKKy0JCWFsZyA9IGNyeXB0b19hYmxrY2lwaGVyX2FsZyhvdXQtPmFzeW5jLnMpOworKwkJYWxnID0gY3J5cHRvZGV2X2NyeXB0b19ibGtjaXBoZXJfYWxnKG91dC0+YXN5bmMucyk7CisgCQlpZiAoYWxnICE9IE5VTEwpIHsKKyAJCQkvKiBXYXMgY29ycmVjdCBrZXkgbGVuZ3RoIHN1cHBsaWVkPyAqLworIAkJCWlmIChhbGctPm1heF9rZXlzaXplID4gMCAmJgorQEAgLTE1NCwxMSArMTU0LDExIEBAIGludCBjcnlwdG9kZXZfY2lwaGVyX2luaXQoc3RydWN0IGNpcGhlcl8KKyAJCQl9CisgCQl9CisgCistCQlvdXQtPmJsb2Nrc2l6ZSA9IGNyeXB0b19hYmxrY2lwaGVyX2Jsb2Nrc2l6ZShvdXQtPmFzeW5jLnMpOworLQkJb3V0LT5pdnNpemUgPSBjcnlwdG9fYWJsa2NpcGhlcl9pdnNpemUob3V0LT5hc3luYy5zKTsKKy0JCW91dC0+YWxpZ25tYXNrID0gY3J5cHRvX2FibGtjaXBoZXJfYWxpZ25tYXNrKG91dC0+YXN5bmMucyk7CisrCQlvdXQtPmJsb2Nrc2l6ZSA9IGNyeXB0b2Rldl9jcnlwdG9fYmxrY2lwaGVyX2Jsb2Nrc2l6ZShvdXQtPmFzeW5jLnMpOworKwkJb3V0LT5pdnNpemUgPSBjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl9pdnNpemUob3V0LT5hc3luYy5zKTsKKysJCW91dC0+YWxpZ25tYXNrID0gY3J5cHRvZGV2X2NyeXB0b19ibGtjaXBoZXJfYWxpZ25tYXNrKG91dC0+YXN5bmMucyk7CisgCistCQlyZXQgPSBjcnlwdG9fYWJsa2NpcGhlcl9zZXRrZXkob3V0LT5hc3luYy5zLCBrZXlwLCBrZXlsZW4pOworKwkJcmV0ID0gY3J5cHRvZGV2X2NyeXB0b19ibGtjaXBoZXJfc2V0a2V5KG91dC0+YXN5bmMucywga2V5cCwga2V5bGVuKTsKKyAJfSBlbHNlIHsKKyAJCW91dC0+YXN5bmMuYXMgPSBjcnlwdG9fYWxsb2NfYWVhZChhbGdfbmFtZSwgMCwgMCk7CisgCQlpZiAodW5saWtlbHkoSVNfRVJSKG91dC0+YXN5bmMuYXMpKSkgeworQEAgLTE5MSwxNCArMTkxLDE0IEBAIGludCBjcnlwdG9kZXZfY2lwaGVyX2luaXQoc3RydWN0IGNpcGhlcl8KKyAJaW5pdF9jb21wbGV0aW9uKCZvdXQtPmFzeW5jLnJlc3VsdC0+Y29tcGxldGlvbik7CisgCisgCWlmIChhZWFkID09IDApIHsKKy0JCW91dC0+YXN5bmMucmVxdWVzdCA9IGFibGtjaXBoZXJfcmVxdWVzdF9hbGxvYyhvdXQtPmFzeW5jLnMsIEdGUF9LRVJORUwpOworKwkJb3V0LT5hc3luYy5yZXF1ZXN0ID0gY3J5cHRvZGV2X2Jsa2NpcGhlcl9yZXF1ZXN0X2FsbG9jKG91dC0+YXN5bmMucywgR0ZQX0tFUk5FTCk7CisgCQlpZiAodW5saWtlbHkoIW91dC0+YXN5bmMucmVxdWVzdCkpIHsKKyAJCQlkZXJyKDEsICJlcnJvciBhbGxvY2F0aW5nIGFzeW5jIGNyeXB0byByZXF1ZXN0Iik7CisgCQkJcmV0ID0gLUVOT01FTTsKKyAJCQlnb3RvIGVycm9yOworIAkJfQorIAorLQkJYWJsa2NpcGhlcl9yZXF1ZXN0X3NldF9jYWxsYmFjayhvdXQtPmFzeW5jLnJlcXVlc3QsCisrCQljcnlwdG9kZXZfYmxrY2lwaGVyX3JlcXVlc3Rfc2V0X2NhbGxiYWNrKG91dC0+YXN5bmMucmVxdWVzdCwKKyAJCQkJCUNSWVBUT19URk1fUkVRX01BWV9CQUNLTE9HLAorIAkJCQkJY3J5cHRvZGV2X2NvbXBsZXRlLCBvdXQtPmFzeW5jLnJlc3VsdCk7CisgCX0gZWxzZSB7CitAQCAtMjE4LDEwICsyMTgsOCBAQCBpbnQgY3J5cHRvZGV2X2NpcGhlcl9pbml0KHN0cnVjdCBjaXBoZXJfCisgCXJldHVybiAwOworIGVycm9yOgorIAlpZiAoYWVhZCA9PSAwKSB7CistCQlpZiAob3V0LT5hc3luYy5yZXF1ZXN0KQorLQkJCWFibGtjaXBoZXJfcmVxdWVzdF9mcmVlKG91dC0+YXN5bmMucmVxdWVzdCk7CistCQlpZiAob3V0LT5hc3luYy5zKQorLQkJCWNyeXB0b19mcmVlX2FibGtjaXBoZXIob3V0LT5hc3luYy5zKTsKKysJCWNyeXB0b2Rldl9ibGtjaXBoZXJfcmVxdWVzdF9mcmVlKG91dC0+YXN5bmMucmVxdWVzdCk7CisrCQljcnlwdG9kZXZfY3J5cHRvX2ZyZWVfYmxrY2lwaGVyKG91dC0+YXN5bmMucyk7CisgCX0gZWxzZSB7CisgCQlpZiAob3V0LT5hc3luYy5hcmVxdWVzdCkKKyAJCQlhZWFkX3JlcXVlc3RfZnJlZShvdXQtPmFzeW5jLmFyZXF1ZXN0KTsKK0BAIC0yMzcsMTAgKzIzNSw4IEBAIHZvaWQgY3J5cHRvZGV2X2NpcGhlcl9kZWluaXQoc3RydWN0IGNpcGgKKyB7CisgCWlmIChjZGF0YS0+aW5pdCkgeworIAkJaWYgKGNkYXRhLT5hZWFkID09IDApIHsKKy0JCQlpZiAoY2RhdGEtPmFzeW5jLnJlcXVlc3QpCistCQkJCWFibGtjaXBoZXJfcmVxdWVzdF9mcmVlKGNkYXRhLT5hc3luYy5yZXF1ZXN0KTsKKy0JCQlpZiAoY2RhdGEtPmFzeW5jLnMpCistCQkJCWNyeXB0b19mcmVlX2FibGtjaXBoZXIoY2RhdGEtPmFzeW5jLnMpOworKwkJCWNyeXB0b2Rldl9ibGtjaXBoZXJfcmVxdWVzdF9mcmVlKGNkYXRhLT5hc3luYy5yZXF1ZXN0KTsKKysJCQljcnlwdG9kZXZfY3J5cHRvX2ZyZWVfYmxrY2lwaGVyKGNkYXRhLT5hc3luYy5zKTsKKyAJCX0gZWxzZSB7CisgCQkJaWYgKGNkYXRhLT5hc3luYy5hcmVxdWVzdCkKKyAJCQkJYWVhZF9yZXF1ZXN0X2ZyZWUoY2RhdGEtPmFzeW5jLmFyZXF1ZXN0KTsKK0BAIC0yODksMTAgKzI4NSwxMCBAQCBzc2l6ZV90IGNyeXB0b2Rldl9jaXBoZXJfZW5jcnlwdChzdHJ1Y3QKKyAJcmVpbml0X2NvbXBsZXRpb24oJmNkYXRhLT5hc3luYy5yZXN1bHQtPmNvbXBsZXRpb24pOworIAorIAlpZiAoY2RhdGEtPmFlYWQgPT0gMCkgeworLQkJYWJsa2NpcGhlcl9yZXF1ZXN0X3NldF9jcnlwdChjZGF0YS0+YXN5bmMucmVxdWVzdCwKKysJCWNyeXB0b2Rldl9ibGtjaXBoZXJfcmVxdWVzdF9zZXRfY3J5cHQoY2RhdGEtPmFzeW5jLnJlcXVlc3QsCisgCQkJKHN0cnVjdCBzY2F0dGVybGlzdCAqKXNyYywgZHN0LAorIAkJCWxlbiwgY2RhdGEtPmFzeW5jLml2KTsKKy0JCXJldCA9IGNyeXB0b19hYmxrY2lwaGVyX2VuY3J5cHQoY2RhdGEtPmFzeW5jLnJlcXVlc3QpOworKwkJcmV0ID0gY3J5cHRvZGV2X2NyeXB0b19ibGtjaXBoZXJfZW5jcnlwdChjZGF0YS0+YXN5bmMucmVxdWVzdCk7CisgCX0gZWxzZSB7CisgCQlhZWFkX3JlcXVlc3Rfc2V0X2NyeXB0KGNkYXRhLT5hc3luYy5hcmVxdWVzdCwKKyAJCQkoc3RydWN0IHNjYXR0ZXJsaXN0ICopc3JjLCBkc3QsCitAQCAtMzExLDEwICszMDcsMTAgQEAgc3NpemVfdCBjcnlwdG9kZXZfY2lwaGVyX2RlY3J5cHQoc3RydWN0CisgCisgCXJlaW5pdF9jb21wbGV0aW9uKCZjZGF0YS0+YXN5bmMucmVzdWx0LT5jb21wbGV0aW9uKTsKKyAJaWYgKGNkYXRhLT5hZWFkID09IDApIHsKKy0JCWFibGtjaXBoZXJfcmVxdWVzdF9zZXRfY3J5cHQoY2RhdGEtPmFzeW5jLnJlcXVlc3QsCisrCQljcnlwdG9kZXZfYmxrY2lwaGVyX3JlcXVlc3Rfc2V0X2NyeXB0KGNkYXRhLT5hc3luYy5yZXF1ZXN0LAorIAkJCShzdHJ1Y3Qgc2NhdHRlcmxpc3QgKilzcmMsIGRzdCwKKyAJCQlsZW4sIGNkYXRhLT5hc3luYy5pdik7CistCQlyZXQgPSBjcnlwdG9fYWJsa2NpcGhlcl9kZWNyeXB0KGNkYXRhLT5hc3luYy5yZXF1ZXN0KTsKKysJCXJldCA9IGNyeXB0b2Rldl9jcnlwdG9fYmxrY2lwaGVyX2RlY3J5cHQoY2RhdGEtPmFzeW5jLnJlcXVlc3QpOworIAl9IGVsc2UgeworIAkJYWVhZF9yZXF1ZXN0X3NldF9jcnlwdChjZGF0YS0+YXN5bmMuYXJlcXVlc3QsCisgCQkJKHN0cnVjdCBzY2F0dGVybGlzdCAqKXNyYywgZHN0LAorSW5kZXg6IGNyeXB0b2Rldi1saW51eC0xLjgvY3J5cHRsaWIuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGNyeXB0b2Rldi1saW51eC0xLjgub3JpZy9jcnlwdGxpYi5oCisrKysgY3J5cHRvZGV2LWxpbnV4LTEuOC9jcnlwdGxpYi5oCitAQCAtMyw2ICszLDggQEAKKyAKKyAjaW5jbHVkZSA8bGludXgvdmVyc2lvbi5oPgorIAorKyNpbmNsdWRlICJjaXBoZXJhcGkuaCIKKysKKyBzdHJ1Y3QgY2lwaGVyX2RhdGEgeworIAlpbnQgaW5pdDsgLyogMCB1bmluaXRpYWxpemVkICovCisgCWludCBibG9ja3NpemU7CitAQCAtMTIsOCArMTQsOCBAQCBzdHJ1Y3QgY2lwaGVyX2RhdGEgeworIAlpbnQgYWxpZ25tYXNrOworIAlzdHJ1Y3QgeworIAkJLyogYmxvY2sgY2lwaGVycyAqLworLQkJc3RydWN0IGNyeXB0b19hYmxrY2lwaGVyICpzOworLQkJc3RydWN0IGFibGtjaXBoZXJfcmVxdWVzdCAqcmVxdWVzdDsKKysJCWNyeXB0b2Rldl9jcnlwdG9fYmxrY2lwaGVyX3QgKnM7CisrCQljcnlwdG9kZXZfYmxrY2lwaGVyX3JlcXVlc3RfdCAqcmVxdWVzdDsKKyAKKyAJCS8qIEFFQUQgY2lwaGVycyAqLworIAkJc3RydWN0IGNyeXB0b19hZWFkICphczsKK0luZGV4OiBjcnlwdG9kZXYtbGludXgtMS44L2lvY3RsLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBjcnlwdG9kZXYtbGludXgtMS44Lm9yaWcvaW9jdGwuYworKysrIGNyeXB0b2Rldi1saW51eC0xLjgvaW9jdGwuYworQEAgLTM0LDcgKzM0LDYgQEAKKyAgKi8KKyAKKyAjaW5jbHVkZSA8Y3J5cHRvL2hhc2guaD4KKy0jaW5jbHVkZSA8bGludXgvY3J5cHRvLmg+CisgI2luY2x1ZGUgPGxpbnV4L21tLmg+CisgI2luY2x1ZGUgPGxpbnV4L2hpZ2htZW0uaD4KKyAjaW5jbHVkZSA8bGludXgvaW9jdGwuaD4KK0BAIC01Myw2ICs1Miw3IEBACisgI2luY2x1ZGUgImNyeXB0b2Rldl9pbnQuaCIKKyAjaW5jbHVkZSAiemMuaCIKKyAjaW5jbHVkZSAidmVyc2lvbi5oIgorKyNpbmNsdWRlICJjaXBoZXJhcGkuaCIKKyAKKyBNT0RVTEVfQVVUSE9SKCJOaWtvcyBNYXZyb2dpYW5ub3BvdWxvcyA8bm1hdkBnbnV0bHMub3JnPiIpOworIE1PRFVMRV9ERVNDUklQVElPTigiQ3J5cHRvRGV2IGRyaXZlciIpOworQEAgLTc2NSw3ICs3NjUsNyBAQCBzdGF0aWMgaW50IGdldF9zZXNzaW9uX2luZm8oc3RydWN0IGZjcnlwCisgCisgCWlmIChzZXNfcHRyLT5jZGF0YS5pbml0KSB7CisgCQlpZiAoc2VzX3B0ci0+Y2RhdGEuYWVhZCA9PSAwKQorLQkJCXRmbSA9IGNyeXB0b19hYmxrY2lwaGVyX3RmbShzZXNfcHRyLT5jZGF0YS5hc3luYy5zKTsKKysJCQl0Zm0gPSBjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl90Zm0oc2VzX3B0ci0+Y2RhdGEuYXN5bmMucyk7CisgCQllbHNlCisgCQkJdGZtID0gY3J5cHRvX2FlYWRfdGZtKHNlc19wdHItPmNkYXRhLmFzeW5jLmFzKTsKKyAJCXRmbV9pbmZvX3RvX2FsZ19pbmZvKCZzaW9wLT5jaXBoZXJfaW5mbywgdGZtKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tlcm4tdG9vbHMva2Vybi10b29scy1uYXRpdmVfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2Vybi10b29scy9rZXJuLXRvb2xzLW5hdGl2ZV9naXQuYmIKaW5kZXggNDQ1ZDAzYS4uZDgwNDFkZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2Vybi10b29scy9rZXJuLXRvb2xzLW5hdGl2ZV9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2Vybi10b29scy9rZXJuLXRvb2xzLW5hdGl2ZV9naXQuYmIKQEAgLTEsMTAgKzEsMTAgQEAKIFNVTU1BUlkgPSAiVG9vbHMgZm9yIG1hbmFnaW5nIFlvY3RvIFByb2plY3Qgc3R5bGUgYnJhbmNoZWQga2VybmVscyIKIExJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9naXQvdG9vbHMva2dpdDtiZWdpbmxpbmU9NTtlbmRsaW5lPTk7bWQ1PWQ4ZDFkNzI5YTcwY2Q1ZjUyOTcyZjg4ODRiODA3NDNkIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZ2l0L3Rvb2xzL2tnaXQ7YmVnaW5saW5lPTU7ZW5kbGluZT05O21kNT1hNmMyZmE4YWVmMWJkYTQwMGUyODI4ODQ1YmEwZDA2YyIKIAogREVQRU5EUyA9ICJnaXQtbmF0aXZlIgogCi1TUkNSRVYgPSAiMTdkODlkMTg2MWI1MzJiYmYxYTgxYzFmMDI0OTUzZTQ0MGRiOGRlNyIKK1NSQ1JFViA9ICI5YTM5OTVlZThkYWFiZjM3ZTkyZTFiNTFiMTMzY2Y4NTgyZDg1ODA5IgogUFIgPSAicjEyIgogUFYgPSAiMC4yK2dpdCR7U1JDUFZ9IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy5pbmMKaW5kZXggNzU4YTNhNy4uYmRmZTAyNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLmluYwpAQCAtMjIsNiArMjIsMTAgQEAKIElOU0FORV9TS0lQXyR7UE59ID0gImFyY2giCiAKIGRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICAjIFJlbW92ZSB0aGUgcHJlcGFja2FnZWQgY29uZmlnLmggZnJvbSB0aGUgc291cmNlIHRyZWUgYXMgaXQgb3ZlcnJpZGVzCisgICAgIyB0aGUgc2FtZSBmaWxlIGdlbmVyYXRlZCBieSBjb25maWd1cmUgYW5kIHBsYWNlZCBpbiB0aGUgYnVpbGQgdHJlZQorICAgIHJtIC1mICR7U30vaW5jbHVkZS9jb25maWcuaAorCiAgICAgIyBSZW1vdmUgdGhlICcqLmQnIGZpbGUgdG8gbWFrZSBzdXJlIHRoZSByZWNvbXBpbGUgaXMgT0sKICAgICBmb3IgZGVwIGluIGBmaW5kICR7Qn0gLXR5cGUgZiAtbmFtZSAnKi5kJ2A7IGRvCiAgICAgICAgIGRlcF9ub19kPSJgZWNobyAkZGVwIHwgc2VkICdzIy5kJCMjJ2AiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy9rZHVtcCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzL2tkdW1wCmluZGV4IDNmYjEzM2YuLjIzNDcyMDUgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzL2tkdW1wCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzL2tkdW1wCkBAIC04LDIzICs4LDcgQEAKICMKIAogI2RlZmF1bHQKLUtEVU1QX0tWRVI9ImB1bmFtZSAtcmAiCi1LRFVNUF9LSU1BR0U9Ii9ib290L2J6SW1hZ2UtJHtLRFVNUF9LVkVSfSIKLUtEVU1QX0NNRExJTkU9ImBjYXQgL3Byb2MvY21kbGluZWAiCi1LRFVNUF9DTURMSU5FX0FQUEVORD0ia2R1bXBfbmVlZGVkIG1heGNwdXM9MSBpcnFwb2xsIHJlc2V0X2RldmljZXMiCi1LRFVNUF9WTUNPUkVfUEFUSD0iL3Zhci9jcmFzaC9gZGF0ZSArIiVZLSVtLSVkImAiCi0KLSNnZXQgcmlnaHQga2VybmVsIGltYWdlCi1tYXJjaD0iYHVuYW1lIC1tYCIKLWNhc2UgJHttYXJjaH0gaW4KLQl4ODYqfGk/ODYpCi0JCTs7Ci0JCSopCi0JCUtEVU1QX0tJTUFHRT0iL2Jvb3QvdUltYWdlLSR7S0RVTVBfS1ZFUn0iCi0JCTs7Ci1lc2FjCi0KLUtFWEVDPXVzci9zYmluL2tleGVjCitLRVhFQz0vdXNyL3NiaW4va2V4ZWMKIEtFWEVDX0FSR1M9Ii1wIgogCiBNQUtFRFVNUEZJTEU9L3Vzci9iaW4vbWFrZWR1bXBmaWxlCkBAIC0zNCw2ICsxOCw5IEBACiAKIGlmIFsgLWYgL2V0Yy9zeXNjb25maWcva2R1bXAuY29uZiBdOyB0aGVuCiAJLiAvZXRjL3N5c2NvbmZpZy9rZHVtcC5jb25mCitlbHNlCisJZWNobyAibm8gL2V0Yy9zeXNjb25maWcva2R1bXAuY29uZiIKKwlleGl0IDE7CiBmaQogCiBkb19jaGVjaygpCkBAIC00MSwyNCArMjgsMzMgQEAKIAkjY2hlY2sgbWFrZWR1bXBmaWxlCiAJaWYgWyAhIC1lICR7TUFLRURVTVBGSUxFfSAtbyAhIC14ICR7TUFLRURVTVBGSUxFfSBdIDt0aGVuCiAJCWVjaG8gIk5vIG1ha2VkdW1wZmlsZSBmb3VuZC4iCi0JCXJldHVybiAxOworCQlleGl0IDAKIAlmaQogCiAJI2NoZWNrIGtleGVjCiAJaWYgWyAhIC1lICR7S0VYRUN9IC1vICEgLXggJHtLRVhFQ30gXSA7dGhlbgogCQllY2hvICJObyBrZXhlYyBmb3VuZC4iCi0JCXJldHVybiAxOworCQlleGl0IDAKIAlmaQogCiAJI2NoZWNrIHdoZXRoZXIga2R1bXAga2VybmVsIGltYWdlIGV4aXN0cyBvbiB0aGUgc3lzdGVtCi0JaWYgWyAhIC1mICR7S0RVTVBfS0lNQUdFfSBdOyB0aGVuCisJaWYgWyAteiAiJHtLRFVNUF9LSU1BR0V9IiAtbyAhIC1mICIke0tEVU1QX0tJTUFHRX0iIF07IHRoZW4KIAkJZWNobyAiTm8ga2R1bXAga2VybmVsIGltYWdlIGZvdW5kLiIKLQkJcmV0dXJuIDEKKwkJZXhpdCAwCisJZmkKKworCWlmIFsgIiR7S0RVTVBfQ01ETElORX0ieCA9ICJ4IiBdIDsgdGhlbgorCQllY2hvICJLRFVNUF9DTURMSU5FIGlzIG5vdCBjb25maWd1cmVkIgorCQlleGl0IDAKIAlmaQogfQogCiBkb19zYXZlX3ZtY29yZSgpCiB7CisJaWYgWyAke0tEVU1QX1ZNQ09SRV9QQVRIfXggPSB4IF07IHRoZW4KKwkJS0RVTVBfVk1DT1JFX1BBVEg9Ii92YXIvY3Jhc2gvYGRhdGUgKyIlWS0lbS0lZCJgIgorCWZpCisKIAlta2RpciAtcCAke0tEVU1QX1ZNQ09SRV9QQVRIfQogCWVjaG8gIlNhdmluZyBhIHZtY29yZSB0byAke0tEVU1QX1ZNQ09SRV9QQVRIfS4iCiAKQEAgLTEwMSwyMCArOTcsNiBAQAogCQlyZXR1cm4gMQogCWZpCiAKLQkjaGFuZGxlIGtkdW1wIGNtZGxpbmUgcGFyYW1ldGVycywgcmVtb3ZlIHNvbWUgdXNlbGVzcyBvcHRpb25zCi0Ja2NtZGxpbmU9IiIKLQlmb3IgeCBpbiBgY2F0IC9wcm9jL2NtZGxpbmVgOyBkbwotCQljYXNlICR4IGluCi0JCQljcmFzaGtlcm5lbCopCi0JCQkJOzsKLQkJCSopCi0JCQkJa2NtZGxpbmU9IiR7a2NtZGxpbmV9ICR4IgotCQkJCTs7Ci0JCWVzYWMKLQlkb25lCi0KLQlLRFVNUF9DTURMSU5FPSIke2tjbWRsaW5lfSAke0tEVU1QX0NNRExJTkVfQVBQRU5EfSIKLQogCSNMb2FkIHRoZSBrZHVtcCBrZXJuZWwgaW1hZ2UKIAkke0tFWEVDfSAke0tFWEVDX0FSR1N9ICIke0tEVU1QX0tJTUFHRX0iIC0tYXBwZW5kPSIke0tEVU1QX0NNRExJTkV9IgogCWlmIFsgJD8gIT0gMCBdOyB0aGVuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy9rZHVtcC5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMva2R1bXAuY29uZgppbmRleCA0MmEyNDM1Li4zODE5MGQyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy9rZHVtcC5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzL2tkdW1wLmNvbmYKQEAgLTEsMTMgKzEsOSBAQAogI3RoZSBrZHVtcCBrZXJuZWwgdmVyc2lvbiBzdHJpbmcuCiAjS0RVTVBfS1ZFUj0iYHVuYW1lIC1yYCIKIAotI3RoaXMgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGtkdW1wIGtlcm5lbCBhcyBrZHVtcCBrZXJuZWwgY29tbWFuZCBsaW5lLCBpdAotI3VzdWFsbHkgY29tZXMgZnJvbSAvcHJvYy9jbWRsaW5lCisjdGhpcyB3aWxsIGJlIHBhc3NlZCB0byB0aGUga2R1bXAga2VybmVsIGFzIGtkdW1wIGtlcm5lbCBjb21tYW5kIGxpbmUKICNLRFVNUF9DTURMSU5FPSJgY2F0IC9wcm9jL2NtZGxpbmVgIgogCi0jIGFwcGVuZCBhcmd1bWVudHMgdG8gdGhlIGtkdW1wIGNvbW1hbmRsaW5lCi0jS0RVTVBfQ01ETElORV9BUFBFTkQ9ImtkdW1wX25lZWRlZCBtYXhjcHVzPTEgaXJxcG9sbCByZXNldF9kZXZpY2VzIgotCiAjdGhlIGtlcm5lbCBpbWFnZSBmb3Iga2R1bXAKICNLRFVNUF9LSU1BR0U9Ii9ib290L2J6SW1hZ2UtJHtLRFVNUF9LVkVSfSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMva2V4ZWMtdG9vbHMtUmVmaW5lLWtkdW1wLWRldmljZV90cmVlLXNvcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy9rZXhlYy10b29scy1SZWZpbmUta2R1bXAtZGV2aWNlX3RyZWUtc29ydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTE5OGViNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy9rZXhlYy10b29scy1SZWZpbmUta2R1bXAtZGV2aWNlX3RyZWUtc29ydC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLWtleGVjLXRvb2xzOiBSZWZpbmUga2R1bXAgZGV2aWNlX3RyZWUgc29ydAotCi1UaGUgY29tbWl0IGIwMmQ3MzViZiB3YXMgdG8gcmVhcnJhbmdlIHRoZSBkZXZpY2UtdHJlZSBlbnRyaWVzLCBhbmQKLWFzc3VtZWQgdGhhdCB0aGVzZSBlbnRyaWVzIGFyZSBzb3J0ZWQgaW4gdGhlIGFzY2VuZGluZyBvcmRlci4gYnV0Ci1hY2N0dWFsbHkgd2hlbiBJIHdhcyB2YWxpZGF0aW5nIGtleGVjIGFuZCBrZHVtcCwgdGhlIG9yZGVyIG9mCi1zZXJpYWwgbm9kZSBzdGlsbCBpcyBjaGFuZ2VkLiBTbyB0aGUgcGF0Y2ggaXMgdG8gc29ydCB0aGVzZSBlbnRyaWVzCi1ieSB0aGUgZGlyZWN0b3J5IG5hbWUgaW4gYXNjZW5kaW5nIG9yZGVyLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogWWFuZyBXZWkgPFdlaS5ZYW5nQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBDaG9uZyBMdSA8Q2hvbmcuTHVAd2luZHJpdmVyLmNvbT4KLS0tLQotIGtleGVjL2FyY2gvcHBjL2ZzMmR0LmMgfCAgIDEzICsrKysrKysrKystLS0KLSBrZXhlYy9mczJkdC5jICAgICAgICAgIHwgICAxMyArKysrKysrKysrLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1JbmRleDoga2V4ZWMtdG9vbHMtMi4wLjEwL2tleGVjL2FyY2gvcHBjL2ZzMmR0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBrZXhlYy10b29scy0yLjAuMTAub3JpZy9rZXhlYy9hcmNoL3BwYy9mczJkdC5jCi0rKysga2V4ZWMtdG9vbHMtMi4wLjEwL2tleGVjL2FyY2gvcHBjL2ZzMmR0LmMKLUBAIC0yOTYsNiArMjk2LDkgQEAgc3RhdGljIGludCBjb21wYXJlZnVuYyhjb25zdCB2b2lkICpkZW50cgotIHsKLSAJY2hhciAqc3RyMSA9ICgqKHN0cnVjdCBkaXJlbnQgKiopZGVudHJ5MSktPmRfbmFtZTsKLSAJY2hhciAqc3RyMiA9ICgqKHN0cnVjdCBkaXJlbnQgKiopZGVudHJ5MiktPmRfbmFtZTsKLSsJY2hhciogcHRyMSA9IHN0cmNocihzdHIxLCAnQCcpOwotKwljaGFyKiBwdHIyID0gc3RyY2hyKHN0cjIsICdAJyk7Ci0rCWludCBsZW4xLCBsZW4yOwotIAotIAkvKgotIAkgKiBzdHJjbXAgc2NhbnMgZnJvbSBsZWZ0IHRvIHJpZ2h0IGFuZCBmYWlscyB0byBpZGV0aWZ5IGZvciBzb21lCi1AQCAtMzAzLDkgKzMwNiwxMyBAQCBzdGF0aWMgaW50IGNvbXBhcmVmdW5jKGNvbnN0IHZvaWQgKmRlbnRyCi0gCSAqIFRoZXJlZm9yZSwgd2UgZ2V0IHRoZSB3cm9uZyBzb3J0ZWQgb3JkZXIgbGlrZSBtZW1vcnlAMTAwMDAwMDAgYW5kCi0gCSAqIG1lbW9yeUBmMDAwMDAwLgotIAkgKi8KLS0JaWYgKHN0cmNocihzdHIxLCAnQCcpICYmIHN0cmNocihzdHIyLCAnQCcpICYmCi0tCQkoc3RybGVuKHN0cjEpID4gc3RybGVuKHN0cjIpKSkKLS0JCXJldHVybiAxOwotKwlpZiAocHRyMSAmJiBwdHIyKSB7Ci0rCQlsZW4xID0gcHRyMSAtIHN0cjE7Ci0rCQlsZW4yID0gcHRyMiAtIHN0cjI7Ci0rCQlpZiAoIXN0cm5jbXAoc3RyMSwgc3RyMiwgbGVuMSA+bGVuMiA/IGxlbjE6IGxlbjIpICYmCi0rCQkJCQkoc3RybGVuKHN0cjEpID4gc3RybGVuKHN0cjIpKSkKLSsJCQkJcmV0dXJuIDE7Ci0rCX0KLSAKLSAJcmV0dXJuIHN0cmNtcChzdHIxLCBzdHIyKTsKLSB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29sc18yLjAuMTEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29sc18yLjAuMTEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxYzk3YWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHNfMi4wLjExLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotcmVxdWlyZSBrZXhlYy10b29scy5pbmMKLWV4cG9ydCBMREZMQUdTID0gIi1MJHtTVEFHSU5HX0xJQkRJUn0iCi1FWFRSQV9PRUNPTkYgPSAiIC0td2l0aC16bGliPXllcyIKLQotU1JDX1VSSSArPSAiZmlsZTovL2tleGVjLXRvb2xzLVJlZmluZS1rZHVtcC1kZXZpY2VfdHJlZS1zb3J0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9rZXhlYy1hYXJjaDY0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9rZXhlYy14MzIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDItcG93ZXJwYy1jaGFuZ2UtdGhlLW1lbW9yeS1zaXplLWxpbWl0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXB1cmdhdG9yeS1QYXNzLXItZGlyZWN0bHktdG8tbGlua2VyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXZtY29yZS1kbWVzZy1EZWZpbmUtX0dOVV9TT1VSQ0UucGF0Y2ggXAotICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODZkZTA2Njg1OWYyODkwNDhmMWIyODZhZjZmMDNmNzgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODRmNjUyZWJmMWRlM2Y3YjlkZTc1N2E1MGNkYmY2ZDU2MzlkODhjMWQ1YjVlZjlmNTI1ZWRkZTVlZjk1OTBjMiIKLQotUEFDS0FHRVMgPSsgImtleGVjIGtkdW1wIHZtY29yZS1kbWVzZyIKLQotQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKLVJSRUNPTU1FTkRTXyR7UE59ID0gImtleGVjIGtkdW1wIHZtY29yZS1kbWVzZyIKLQotRklMRVNfa2V4ZWMgPSAiJHtzYmluZGlyfS9rZXhlYyIKLUZJTEVTX2tkdW1wID0gIiR7c2JpbmRpcn0va2R1bXAgJHtzeXNjb25mZGlyfS9pbml0LmQva2R1bXAgXAotICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXNjb25maWcva2R1bXAuY29uZiIKLUZJTEVTX3ZtY29yZS1kbWVzZyA9ICIke3NiaW5kaXJ9L3ZtY29yZS1kbWVzZyIKLQotaW5oZXJpdCB1cGRhdGUtcmMuZAotCi1JTklUU0NSSVBUX1BBQ0tBR0VTID0gImtkdW1wIgotSU5JVFNDUklQVF9OQU1FX2tkdW1wID0gImtkdW1wIgotSU5JVFNDUklQVF9QQVJBTVNfa2R1bXAgPSAic3RhcnQgNTYgMiAzIDQgNSAuIHN0b3AgNTYgMCAxIDYgLiIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9rZHVtcCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQva2R1bXAKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcKLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0va2R1bXAuY29uZiAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzXzIuMC4xMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzXzIuMC4xMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTM3NmM4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHNfMi4wLjEyLmJiCkBAIC0wLDAgKzEsMzcgQEAKK3JlcXVpcmUga2V4ZWMtdG9vbHMuaW5jCitleHBvcnQgTERGTEFHUyA9ICItTCR7U1RBR0lOR19MSUJESVJ9IgorRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtemxpYj15ZXMiCisKK1NSQ19VUkkgKz0gIiBcCisgICAgICAgICAgICBmaWxlOi8va2V4ZWMtYWFyY2g2NC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8va2V4ZWMteDMyLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAyLXBvd2VycGMtY2hhbmdlLXRoZS1tZW1vcnktc2l6ZS1saW1pdC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1wdXJnYXRvcnktUGFzcy1yLWRpcmVjdGx5LXRvLWxpbmtlci5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS12bWNvcmUtZG1lc2ctRGVmaW5lLV9HTlVfU09VUkNFLnBhdGNoIFwKKyAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjEwZGRhYWUwZTg2YWY1NDQwN2IxNjRhMWY1YTM5Y2MzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImNjN2I2MGRhZDBkYTIwMjAwNDA0OGE2MTc5ZDhhNTM2MDY5NDMwNjJkZDYyN2EyZWRiYTQ1YThlYTNhODUxMzUiCisKK1BBQ0tBR0VTID0rICJrZXhlYyBrZHVtcCB2bWNvcmUtZG1lc2ciCisKK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCitSUkVDT01NRU5EU18ke1BOfSA9ICJrZXhlYyBrZHVtcCB2bWNvcmUtZG1lc2ciCisKK0ZJTEVTX2tleGVjID0gIiR7c2JpbmRpcn0va2V4ZWMiCitGSUxFU19rZHVtcCA9ICIke3NiaW5kaXJ9L2tkdW1wICR7c3lzY29uZmRpcn0vaW5pdC5kL2tkdW1wIFwKKyAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzY29uZmlnL2tkdW1wLmNvbmYiCitGSUxFU192bWNvcmUtZG1lc2cgPSAiJHtzYmluZGlyfS92bWNvcmUtZG1lc2ciCisKK2luaGVyaXQgdXBkYXRlLXJjLmQKKworSU5JVFNDUklQVF9QQUNLQUdFUyA9ICJrZHVtcCIKK0lOSVRTQ1JJUFRfTkFNRV9rZHVtcCA9ICJrZHVtcCIKK0lOSVRTQ1JJUFRfUEFSQU1TX2tkdW1wID0gInN0YXJ0IDU2IDIgMyA0IDUgLiBzdG9wIDU2IDAgMSA2IC4iCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0va2R1bXAgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2tkdW1wCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2tkdW1wLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rbW9kL2RlcG1vZHdyYXBwZXItY3Jvc3NfMS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva21vZC9kZXBtb2R3cmFwcGVyLWNyb3NzXzEuMC5iYgppbmRleCBjMmMyNTg5Li41YzdkZDUyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rbW9kL2RlcG1vZHdyYXBwZXItY3Jvc3NfMS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2QvZGVwbW9kd3JhcHBlci1jcm9zc18xLjAuYmIKQEAgLTQxLDEwICs0MSw2IEBACiAJY2htb2QgK3ggJHtEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vZGVwbW9kd3JhcHBlcgogfQogCi1TWVNST09UX1BSRVBST0NFU1NfRlVOQ1MgKz0gImRlcG1vZHdyYXBwZXJfc3lzcm9vdF9wcmVwcm9jZXNzIgotCi1kZXBtb2R3cmFwcGVyX3N5c3Jvb3RfcHJlcHJvY2VzcyAoKSB7Ci0Jc3lzcm9vdF9zdGFnZV9kaXIgJHtEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30gJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfQotfQorU1lTUk9PVF9ESVJTICs9ICIke2JpbmRpcl9jcm9zc3NjcmlwdHN9IgogCiBpbmhlcml0IG5vcGFja2FnZXMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2Qva21vZC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rbW9kL2ttb2QuaW5jCmluZGV4IDBiY2RjZjYuLjE2NmIzZjAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2Qva21vZC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva21vZC9rbW9kLmluYwpAQCAtOSwxNiArOSwxNCBAQAogTElDRU5TRV9saWJrbW9kID0gIkxHUEwtMi4xKyIKIFNFQ1RJT04gPSAiYmFzZSIKIAotREVQRU5EUyArPSAicGtnY29uZmlnLW5hdGl2ZSIKLQogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGlia21vZC9DT1BZSU5HO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyBcCiAgICAgICAgICAgICAgICAgICAgIgotaW5oZXJpdCBhdXRvdG9vbHMgZ3RrLWRvYworaW5oZXJpdCBhdXRvdG9vbHMgZ3RrLWRvYyBwa2djb25maWcKIAotU1JDUkVWID0gIjQyZjMyYjhhZTQ1YWQ4ZTNhMWRhMjljOWIyMGFmOWI1ZTJlOWU2NzYiCitTUkNSRVYgPSAiNjVhODg1ZGY1ZjZmMTUyMjJiNDRmZDY5NWM1ZWFjYTE3ZTgzN2ExNCIKICMgTG9va291dCBmb3IgUFYgYnVtcCB0b28gd2hlbiBTUkNSRVYgaXMgY2hhbmdlZAotUFYgPSAiMjIrZ2l0JHtTUkNQVn0iCitQViA9ICIyMytnaXQke1NSQ1BWfSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL3V0aWxzL2tlcm5lbC9rbW9kL2ttb2QuZ2l0IFwKICAgICAgICAgICAgZmlsZTovL2RlcG1vZC1zZWFyY2guY29uZiBcCkBAIC0zNSw3ICszMyw3IEBACiBQQUNLQUdFQ09ORklHW2xvZ2dpbmddID0gIiAtLWVuYWJsZS1sb2dnaW5nLC0tZGlzYWJsZS1sb2dnaW5nIgogCiBkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0gICAgICAgIGd0a2RvY2l6ZSAtLWRvY2RpciAke1N9L2xpYmttb2QvZG9jcyB8fCB0b3VjaCAke1N9L2xpYmttb2QvZG9jcy9ndGstZG9jLm1ha2UKKyAgICAgICAgZ3RrZG9jaXplIC0tZG9jZGlyICR7U30vbGlia21vZC9kb2NzIC0tc3JjZGlyICR7U30KIH0KIAogZG9fY29uZmlndXJlX2FwcGVuZCAoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saWJwZm0vZmlsZXMvZml4LW1pc2xlYWRpbmctaW5kZW50YXRpb24tZXJyb3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saWJwZm0vZmlsZXMvZml4LW1pc2xlYWRpbmctaW5kZW50YXRpb24tZXJyb3IucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjVkNDdlZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpYnBmbS9maWxlcy9maXgtbWlzbGVhZGluZy1pbmRlbnRhdGlvbi1lcnJvci5wYXRjaApAQCAtMCwwICsxLDM4IEBACitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworRml4IGNvbXBpbGUgZXJyb3I6CisKK3wgc3lzdF9jb3VudC5jOjM0NjozOiBlcnJvcjogdGhpcyAnZm9yJyBjbGF1c2UgZG9lcyBub3QgZ3VhcmQuLi4gWy1XZXJyb3I9bWlzbGVhZGluZy1pbmRlbnRhdGlvbl0gCit8ICAgIGZvcihjPWNtaW4gOyBjIDwgY21heDsgYysrKSAKK3wgICAgICAgXn5+IAorCitTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorZGlmZiAtLWdpdCBhL3BlcmZfZXhhbXBsZXMvc3lzdF9jb3VudC5jIGIvcGVyZl9leGFtcGxlcy9zeXN0X2NvdW50LmMKK2luZGV4IDBkNTMwNzguLjJkZmI5YjkgMTAwNjQ0CistLS0gYS9wZXJmX2V4YW1wbGVzL3N5c3RfY291bnQuYworKysrIGIvcGVyZl9leGFtcGxlcy9zeXN0X2NvdW50LmMKK0BAIC0zNDMsOCArMzQzLDkgQEAgbWVhc3VyZSh2b2lkKQorIAorIAkJZm9yIChkZWxheSA9IDEgOyBkZWxheSA8PSBvcHRpb25zLmRlbGF5OyBkZWxheSsrKSB7CisgCistCQlmb3IoYz1jbWluIDsgYyA8IGNtYXg7IGMrKykKKy0JCQlzdGFydF9jcHUoYyk7CisrCQkJZm9yKGM9Y21pbiA7IGMgPCBjbWF4OyBjKyspIHsKKysJCQkJc3RhcnRfY3B1KGMpOworKwkJCX0KKyAKKyAJCQlpZiAoMCkgeworIAkJCQl0di50dl9zZWMgPSAwOworQEAgLTM1Myw4ICszNTQsOSBAQCBtZWFzdXJlKHZvaWQpCisgCQkJfSBlbHNlCisgCQkJCXNsZWVwKDEpOworIAorLQkJZm9yKGM9Y21pbiA7IGMgPCBjbWF4OyBjKyspCistCQkJc3RvcF9jcHUoYyk7CisrCQkJZm9yKGM9Y21pbiA7IGMgPCBjbWF4OyBjKyspIHsKKysJCQkJc3RvcF9jcHUoYyk7CisrCQkJfQorIAorIAkJCWZvcihjID0gY21pbjsgYyA8IGNtYXg7IGMrKykgeworIAkJCQlwcmludGYoIiMgJSdkcyAtLS0tLVxuIiwgZGVsYXkpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGlicGZtL2xpYnBmbTRfNC42LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saWJwZm0vbGlicGZtNF80LjYuMC5iYgppbmRleCAwYjAyNGFkLi40MTM2ZWFjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saWJwZm0vbGlicGZtNF80LjYuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saWJwZm0vbGlicGZtNF80LjYuMC5iYgpAQCAtMTQsNiArMTQsNyBAQAogCiBTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMuc291cmNlZm9yZ2UubmV0L3Byb2plY3QvcGVyZm1vbjIvJHtCUE59L2xpYnBmbS0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS1BZGQtTERGTEFHUy12YXJpYWJsZS10by1TTERGTEFHUy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtbWlzbGVhZGluZy1pbmRlbnRhdGlvbi1lcnJvci5wYXRjaCBcCiAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiNTA3N2I5MDIyNDQwZTQ5NTFkOTZmMmQwZTczYmQ0ODciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1maXJtd2FyZS9saW51eC1maXJtd2FyZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1maXJtd2FyZS9saW51eC1maXJtd2FyZV9naXQuYmIKaW5kZXggYTRlNjRkNS4uOGU2OGFlOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtZmlybXdhcmUvbGludXgtZmlybXdhcmVfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWZpcm13YXJlL2xpbnV4LWZpcm13YXJlX2dpdC5iYgpAQCAtNTUsMTMgKzU1LDE0IEBACiAgICAgJiBGaXJtd2FyZS14YzQwMDAgXAogICAgICYgRmlybXdhcmUteGM1MDAwIFwKICAgICAmIEZpcm13YXJlLXhjNTAwMGMgXAorICAgICYgV0hFTkNFIFwKICIKIAogTElDX0ZJTEVTX0NIS1NVTSA9ICJcCiAgICAgZmlsZTovL0xJQ0VOQ0UuQWJpbGlzO21kNT1iNWVlM2Y0MTA3ODBlNTY3MTFhZDQ4ZWFkYzIyYjhiYyBcCiAgICAgZmlsZTovL0xJQ0VOQ0UuYWRzcF9zc3Q7bWQ1PTYxNWM0NWI5MWE1YTRhOWZlMDQ2ZDZhYjlhMmRmNzI4IFwKICAgICBmaWxlOi8vTElDRU5DRS5hZ2VyZTttZDU9YWYwMTMzZGU2YjRhOWIyNTIyZGVmZDVmMTg4YWZkMzEgXAotICAgIGZpbGU6Ly9MSUNFTlNFLmFtZGdwdTttZDU9YTg1OTJjMjRjMjY3MjA2MmUwM2M3MzkyZmM3ZmUzYmMgXAorICAgIGZpbGU6Ly9MSUNFTlNFLmFtZGdwdTttZDU9M2ZlOGEzNDMwNzAwYTUxODk5MGMzYjNkNzUyOTcyMDkgXAogICAgIGZpbGU6Ly9MSUNFTlNFLmFtZC11Y29kZTttZDU9M2EwZGU0NTEyNTNjYzFlZGJmMzBhM2M2MjFlZmZlZTMgXAogICAgIGZpbGU6Ly9MSUNFTkNFLmF0aGVyb3NfZmlybXdhcmU7bWQ1PTMwYTE0Yzc4MjNiZWVkYWM5ZmEzOWM2NGZkZDAxYTEzIFwKICAgICBmaWxlOi8vTElDRU5TRS5hdG1lbDttZDU9YWE3NGFjMGM2MDU5NWRlZTRkNGUyMzkxMDdlYTc3YTMgXApAQCAtOTcsNyArOTgsNyBAQAogICAgIGZpbGU6Ly9MSUNFTlNFLlF1YWxjb21tQXRoZXJvc19hcjNrO21kNT1iNWZlMjQ0ZmIyYjUzMjMxMWRlMTQ3MmEzYmMwNmRhNSBcCiAgICAgZmlsZTovL0xJQ0VOU0UuUXVhbGNvbW1BdGhlcm9zX2F0aDEwazttZDU9YjVmZTI0NGZiMmI1MzIzMTFkZTE0NzJhM2JjMDZkYTUgXAogICAgIGZpbGU6Ly9MSUNFTkNFLnI4YTc3OXhfdXNiMzttZDU9NGMxNjcxNjU2MTUzMDI1ZDcwNzYxMDVhNWRhN2U0OTggXAotICAgIGZpbGU6Ly9MSUNFTlNFLnJhZGVvbjttZDU9NmM3Zjk3YzZjNjJiZGQ5NTk2ZDAyMzhiYjIwNTExOGMgXAorICAgIGZpbGU6Ly9MSUNFTlNFLnJhZGVvbjttZDU9Njk2MTJmNGY3YjE0MWE5NzY1OWNiMWQ2MDlhMWJkZTIgXAogICAgIGZpbGU6Ly9MSUNFTkNFLnJhbGlua19hX21lZGlhdGVrX2NvbXBhbnlfZmlybXdhcmU7bWQ1PTcyOGYxYTg1ZmQ1M2ZkNjdmYThkN2FmYjA4MGJjNDM1IFwKICAgICBmaWxlOi8vTElDRU5DRS5yYWxpbmstZmlybXdhcmUudHh0O21kNT1hYjJjMjY5Mjc3YzQ1NDc2ZmI0NDk2NzM5MTFhMmRmZCBcCiAgICAgZmlsZTovL0xJQ0VOQ0UucnRsd2lmaV9maXJtd2FyZS50eHQ7bWQ1PTAwZDA2Y2ZkM2VkZGQ1YTI2OTg5NDhlYWQyYWQ1NGE1IFwKQEAgLTExMSw2ICsxMTIsNyBAQAogICAgIGZpbGU6Ly9MSUNFTkNFLnhjNDAwMDttZDU9MGZmNTFkMmRjNDlmY2UwNDgxNGM5MTU1MDgxMDkyZjAgXAogICAgIGZpbGU6Ly9MSUNFTkNFLnhjNTAwMDttZDU9MWUxNzBjMTMxNzUzMjNjMzJjN2Y0ZDA5OThkNTNmNjYgXAogICAgIGZpbGU6Ly9MSUNFTkNFLnhjNTAwMGM7bWQ1PTEyYjAyZWZhMzA0OWRiNjVkNTI0YWViNDE4ZGQ4N2NhIFwKKyAgICBmaWxlOi8vV0hFTkNFO21kNT1mNTE0YTBjNTNjNWQ3M2MyZmU5OGQ1ODYxMTAzZjBjNiBcCiAiCiAKICMgVGhlc2UgYXJlIG5vdCBjb21tb24gbGljZW5zZXMsIHNldCBOT19HRU5FUklDX0xJQ0VOU0UgZm9yIHRoZW0KQEAgLTE2OCwxMyArMTcwLDIwIEBACiBOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUteGM0MDAwXSA9ICJMSUNFTkNFLnhjNDAwMCIKIE5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS14YzUwMDBdID0gIkxJQ0VOQ0UueGM1MDAwIgogTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXhjNTAwMGNdID0gIkxJQ0VOQ0UueGM1MDAwYyIKK05PX0dFTkVSSUNfTElDRU5TRVtXSEVOQ0VdID0gIldIRU5DRSIKIAotU1JDUkVWID0gIjVmOGNhMGMxZGI2MTA2YTJkNmQ3ZTg1ZWVlNzc4OTE3ZmYwM2MzZGUiCitTUkNSRVYgPSAiNDJhZDUzNjdkZDM4MzcxYjJhMWJiMjYzYjZlZmE4NWY5YjkyZmM5MyIKIFBFID0gIjEiCiBQViA9ICIwLjArZ2l0JHtTUkNQVn0iCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2Zpcm13YXJlL2xpbnV4LWZpcm13YXJlLmdpdCIKIAorIyBTb21lIGRldmljZXMgbmVlZCBhIHNwZWNpZmljIHZlcnNpb24sIG5vdCB0aGUgbGF0ZXN0CitTUkNfVVJJICs9ICJodHRwczovL2dpdC5rZXJuZWwub3JnL2NnaXQvbGludXgva2VybmVsL2dpdC9pd2x3aWZpL2xpbnV4LWZpcm13YXJlLmdpdC9wbGFpbi9pd2x3aWZpLTgwMDBDLTE5LnVjb2RlO25hbWU9aXdsd2lmaS0xOSIKKworU1JDX1VSSVtpd2x3aWZpLTE5Lm1kNXN1bV0gPSAiMTMyZmJhZWUzNmJlZWM1ZTk4NzE0ZjBiZDY2ZjdhMWQiCitTUkNfVVJJW2l3bHdpZmktMTkuc2hhMjU2c3VtXSA9ICIyMDM0NDcwZGY2NGQzMjNiODI3YzRmMmQ0ZDBkNTViZTI4NDZiNzM2MDE3OWI1NTc0YWEyOGZmNzdiNmM5NDcxIgorCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCiBpbmhlcml0IGFsbGFyY2ggdXBkYXRlLWFsdGVybmF0aXZlcwpAQCAtMjA0LDYgKzIxMyw5IEBACiAKIAkjIGZpeHVwIHdsMTJ4eCBsb2NhdGlvbiwgYWZ0ZXIgMi42LjM3IHRoZSBrZXJuZWwgc2VhcmNoZXMgYSBkaWZmZXJlbnQgbG9jYXRpb24gZm9yIGl0CiAJKCBjZCAke0R9L2xpYi9maXJtd2FyZSA7IGxuIC1zZiB0aS1jb25uZWN0aXZpdHkvKiAuICkKKworICAgICAgICAjIENvcHkgdGhlIGl3bHdpZmkgdWNvZGUKKyAgICAgICAgY3AgJHtXT1JLRElSfS9pd2x3aWZpLTgwMDBDLTE5LnVjb2RlICR7RH0vbGliL2Zpcm13YXJlLwogfQogCiAKQEAgLTIxMywxMSArMjI1LDEyIEBACiAgICAgICAgICAgICAgJHtQTn0tdGktY29ubmVjdGl2aXR5LWxpY2Vuc2UgJHtQTn0td2wxMnh4ICR7UE59LXdsMTh4eCBcCiAgICAgICAgICAgICAgJHtQTn0tdnQ2NjU2LWxpY2Vuc2UgJHtQTn0tdnQ2NjU2IFwKICAgICAgICAgICAgICAke1BOfS1ydGwtbGljZW5zZSAke1BOfS1ydGw4MTkyY3UgJHtQTn0tcnRsODE5MmNlICR7UE59LXJ0bDgxOTJzdSBcCi0gICAgICAgICAgICAgJHtQTn0tYnJvYWRjb20tbGljZW5zZSAke1BOfS1iY200MzI5ICR7UE59LWJjbTQzMzAgJHtQTn0tYmNtNDMzNCAke1BOfS1iY200MzM0MCAke1BOfS1iY200MzM5ICR7UE59LWJjbTQzNTQgXAotICAgICAgICAgICAgICR7UE59LWF0aGVyb3MtbGljZW5zZSAke1BOfS1hcjkxNzAgJHtQTn0tYXRoNmsgJHtQTn0tYXRoOWsgXAorICAgICAgICAgICAgICR7UE59LWJyb2FkY29tLWxpY2Vuc2UgJHtQTn0tYmNtNDMyOSAke1BOfS1iY200MzMwICR7UE59LWJjbTQzMzQgJHtQTn0tYmNtNDMzNDAgJHtQTn0tYmNtNDMzOSAke1BOfS1iY200MzQzMCAke1BOfS1iY200MzU0IFwKKyAgICAgICAgICAgICAke1BOfS1hdGhlcm9zLWxpY2Vuc2UgJHtQTn0tYXI5MTcwICR7UE59LWNhcmw5MTcwICR7UE59LWF0aDZrICR7UE59LWF0aDlrIFwKICAgICAgICAgICAgICAke1BOfS1hcjNrLWxpY2Vuc2UgICR7UE59LWFyM2sgICR7UE59LWF0aDEway1saWNlbnNlICAke1BOfS1hdGgxMGsgIFwKICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgJHtQTn0taXdsd2lmaS1saWNlbnNlICR7UE59LWl3bHdpZmktMTM1LTYgXAorICAgICAgICAgICAgICR7UE59LWl3bHdpZmktbGljZW5zZSAke1BOfS1pd2x3aWZpIFwKKyAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTEzNS02IFwKICAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTMxNjAtNyAke1BOfS1pd2x3aWZpLTMxNjAtOCAke1BOfS1pd2x3aWZpLTMxNjAtOSBcCiAgICAgICAgICAgICAgJHtQTn0taXdsd2lmaS02MDAwLTQgJHtQTn0taXdsd2lmaS02MDAwZzJhLTUgJHtQTn0taXdsd2lmaS02MDAwZzJhLTYgXAogICAgICAgICAgICAgICR7UE59LWl3bHdpZmktNjAwMGcyYi01ICR7UE59LWl3bHdpZmktNjAwMGcyYi02IFwKQEAgLTIyNSw4ICsyMzgsMTEgQEAKICAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTcyNjAgXAogICAgICAgICAgICAgICR7UE59LWl3bHdpZmktNzI2NSBcCiAgICAgICAgICAgICAgJHtQTn0taXdsd2lmaS03MjY1ZCAke1BOfS1pd2x3aWZpLTgwMDBjICR7UE59LWl3bHdpZmktODI2NSBcCisgICAgICAgICAgICAgJHtQTn0taXdsd2lmaS1taXNjIFwKICAgICAgICAgICAgICAke1BOfS1pOTE1LWxpY2Vuc2UgJHtQTn0taTkxNSBcCiAgICAgICAgICAgICAgJHtQTn0tYWRzcC1zc3QtbGljZW5zZSAke1BOfS1hZHNwLXNzdCBcCisgICAgICAgICAgICAgJHtQTn0tYm54Mi1taXBzIFwKKyAgICAgICAgICAgICAke1BOfS13aGVuY2UtbGljZW5zZSBcCiAgICAgICAgICAgICAgJHtQTn0tbGljZW5zZSBcCiAgICAgICAgICAgICAgIgogCkBAIC0yMzQsMTEgKzI1MCwxNSBAQAogTElDRU5TRV8ke1BOfS1hcjkxNzAgPSAiRmlybXdhcmUtYXRoZXJvc19maXJtd2FyZSIKIExJQ0VOU0VfJHtQTn0tYXRoNmsgPSAiRmlybXdhcmUtYXRoZXJvc19maXJtd2FyZSIKIExJQ0VOU0VfJHtQTn0tYXRoOWsgPSAiRmlybXdhcmUtYXRoZXJvc19maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0tYXRoZXJvcy1saWNlbnNlID0gIkZpcm13YXJlLWF0aGVyb3NfZmlybXdhcmUiCiAKIEZJTEVTXyR7UE59LWF0aGVyb3MtbGljZW5zZSA9ICIvbGliL2Zpcm13YXJlL0xJQ0VOQ0UuYXRoZXJvc19maXJtd2FyZSIKIEZJTEVTXyR7UE59LWFyOTE3MCA9ICIgXAogICAvbGliL2Zpcm13YXJlL2FyOTE3MCouZncgXAogIgorRklMRVNfJHtQTn0tY2FybDkxNzAgPSAiIFwKKyAgL2xpYi9maXJtd2FyZS9jYXJsOTE3MCouZncgXAorIgogRklMRVNfJHtQTn0tYXRoNmsgPSAiIFwKICAgL2xpYi9maXJtd2FyZS9hdGg2ayBcCiAiCkBAIC0yNTAsMTIgKzI3MCwxNSBAQAogIgogCiBSREVQRU5EU18ke1BOfS1hcjkxNzAgKz0gIiR7UE59LWF0aGVyb3MtbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWNhcmw5MTcwICs9ICIke1BOfS1hdGhlcm9zLWxpY2Vuc2UiCiBSREVQRU5EU18ke1BOfS1hdGg2ayArPSAiJHtQTn0tYXRoZXJvcy1saWNlbnNlIgogUkRFUEVORFNfJHtQTn0tYXRoOWsgKz0gIiR7UE59LWF0aGVyb3MtbGljZW5zZSIKIAogIyBGb3IgUXVhbENvbW1BdGhvcwogTElDRU5TRV8ke1BOfS1hcjNrID0gIkZpcm13YXJlLXF1YWxjb21tQXRob3NfYXIzayIKK0xJQ0VOU0VfJHtQTn0tYXIzay1saWNlbnNlID0gIkZpcm13YXJlLXF1YWxjb21tQXRob3NfYXIzayIKIExJQ0VOU0VfJHtQTn0tYXRoMTBrID0gIkZpcm13YXJlLXF1YWxjb21tQXRob3NfYXRoMTBrIgorTElDRU5TRV8ke1BOfS1hdGgxMGstbGljZW5zZSA9ICJGaXJtd2FyZS1xdWFsY29tbUF0aG9zX2F0aDEwayIKIAogRklMRVNfJHtQTn0tYXIzay1saWNlbnNlID0gIi9saWIvZmlybXdhcmUvTElDRU5TRS5RdWFsY29tbUF0aGVyb3NfYXIzayIKIEZJTEVTXyR7UE59LWFyM2sgPSAiIFwKQEAgLTI3Miw2ICsyOTUsNyBAQAogCiAjIEZvciByYWxpbmsKIExJQ0VOU0VfJHtQTn0tcmFsaW5rID0gIkZpcm13YXJlLXJhbGluay1maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0tcmFsaW5rLWxpY2Vuc2UgPSAiRmlybXdhcmUtcmFsaW5rLWZpcm13YXJlIgogCiBGSUxFU18ke1BOfS1yYWxpbmstbGljZW5zZSA9ICIvbGliL2Zpcm13YXJlL0xJQ0VOQ0UucmFsaW5rLWZpcm13YXJlLnR4dCIKIEZJTEVTXyR7UE59LXJhbGluayA9ICIgXApAQCAtMjgyLDYgKzMwNiw3IEBACiAKICMgRm9yIHJhZGVvbgogTElDRU5TRV8ke1BOfS1yYWRlb24gPSAiRmlybXdhcmUtcmFkZW9uIgorTElDRU5TRV8ke1BOfS1yYWRlb24tbGljZW5zZSA9ICJGaXJtd2FyZS1yYWRlb24iCiAKIEZJTEVTXyR7UE59LXJhZGVvbi1saWNlbnNlID0gIi9saWIvZmlybXdhcmUvTElDRU5TRS5yYWRlb24iCiBGSUxFU18ke1BOfS1yYWRlb24gPSAiIFwKQEAgLTI5NSw2ICszMjAsNyBAQAogTElDRU5TRV8ke1BOfS1zZDg2ODggPSAiRmlybXdhcmUtTWFydmVsbCIKIExJQ0VOU0VfJHtQTn0tc2Q4Nzg3ID0gIkZpcm13YXJlLU1hcnZlbGwiCiBMSUNFTlNFXyR7UE59LXNkODc5NyA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgorTElDRU5TRV8ke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UgPSAiRmlybXdhcmUtTWFydmVsbCIKIAogRklMRVNfJHtQTn0tbWFydmVsbC1saWNlbnNlID0gIi9saWIvZmlybXdhcmUvTElDRU5DRS5NYXJ2ZWxsIgogRklMRVNfJHtQTn0tc2Q4Njg2ID0gIiBcCkBAIC0zMjEsNiArMzQ3LDcgQEAKIExJQ0VOU0VfJHtQTn0tcnRsODE5MmN1ID0gIkZpcm13YXJlLXJ0bHdpZmlfZmlybXdhcmUiCiBMSUNFTlNFXyR7UE59LXJ0bDgxOTJjZSA9ICJGaXJtd2FyZS1ydGx3aWZpX2Zpcm13YXJlIgogTElDRU5TRV8ke1BOfS1ydGw4MTkyc3UgPSAiRmlybXdhcmUtcnRsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0tcnRsLWxpY2Vuc2UgPSAiRmlybXdhcmUtcnRsd2lmaV9maXJtd2FyZSIKIAogRklMRVNfJHtQTn0tcnRsLWxpY2Vuc2UgPSAiIFwKICAgL2xpYi9maXJtd2FyZS9MSUNFTkNFLnJ0bHdpZmlfZmlybXdhcmUudHh0IFwKQEAgLTM0Miw2ICszNjksNyBAQAogIyBGb3IgdGktY29ubmVjdGl2aXR5CiBMSUNFTlNFXyR7UE59LXdsMTJ4eCA9ICJGaXJtd2FyZS10aS1jb25uZWN0aXZpdHkiCiBMSUNFTlNFXyR7UE59LXdsMTh4eCA9ICJGaXJtd2FyZS10aS1jb25uZWN0aXZpdHkiCitMSUNFTlNFXyR7UE59LXRpLWNvbm5lY3Rpdml0eS1saWNlbnNlID0gIkZpcm13YXJlLXRpLWNvbm5lY3Rpdml0eSIKIAogRklMRVNfJHtQTn0tdGktY29ubmVjdGl2aXR5LWxpY2Vuc2UgPSAiL2xpYi9maXJtd2FyZS9MSUNFTkNFLnRpLWNvbm5lY3Rpdml0eSIKIEZJTEVTXyR7UE59LXdsMTJ4eCA9ICIgXApAQCAtMzYwLDYgKzM4OCw3IEBACiAKICMgRm9yIHZ0NjY1NgogTElDRU5TRV8ke1BOfS12dDY2NTYgPSAiRmlybXdhcmUtdmlhX3Z0NjY1NiIKK0xJQ0VOU0VfJHtQTn0tdnQ2NjU2LWxpY2Vuc2UgPSAiRmlybXdhcmUtdmlhX3Z0NjY1NiIKIAogRklMRVNfJHtQTn0tdnQ2NjU2LWxpY2Vuc2UgPSAiL2xpYi9maXJtd2FyZS9MSUNFTkNFLnZpYV92dDY2NTYiCiBGSUxFU18ke1BOfS12dDY2NTYgPSAiIFwKQEAgLTM3OSw3ICs0MDgsOSBAQAogTElDRU5TRV8ke1BOfS1iY200MzM0ID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCiBMSUNFTlNFXyR7UE59LWJjbTQzMzQwID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCiBMSUNFTlNFXyR7UE59LWJjbTQzMzkgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK0xJQ0VOU0VfJHtQTn0tYmNtNDM0MzAgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKIExJQ0VOU0VfJHtQTn0tYmNtNDM1NCA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorTElDRU5TRV8ke1BOfS1icm9hZGNvbS1saWNlbnNlID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCiAKIEZJTEVTXyR7UE59LWJyb2FkY29tLWxpY2Vuc2UgPSAiIFwKICAgL2xpYi9maXJtd2FyZS9MSUNFTkNFLmJyb2FkY29tX2JjbTQzeHggXApAQCAtMzk5LDYgKzQzMCw5IEBACiBGSUxFU18ke1BOfS1iY200MzM5ID0gIiBcCiAgIC9saWIvZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzMzktc2Rpby5iaW4gXAogIgorRklMRVNfJHtQTn0tYmNtNDM0MzAgPSAiIFwKKyAgL2xpYi9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM0MzAtc2Rpby5iaW4gXAorIgogRklMRVNfJHtQTn0tYmNtNDM1NCA9ICIgXAogICAvbGliL2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzU0LXNkaW8uYmluIFwKICIKQEAgLTQxNywxNSArNDUxLDMzIEBACiBBTFRFUk5BVElWRV9UQVJHRVRfbGludXgtZmlybXdhcmUtYmNtNDMzMFticmNtZm1hYy1zZGlvLmJpbl0gPSAiL2xpYi9maXJtd2FyZS9icmNtL2JyY21mbWFjNDMzMC1zZGlvLmJpbiIKIEFMVEVSTkFUSVZFX2xpbnV4LWZpcm13YXJlLWJjbTQzMzkgPSAiYnJjbWZtYWMtc2Rpby5iaW4iCiBBTFRFUk5BVElWRV9UQVJHRVRfbGludXgtZmlybXdhcmUtYmNtNDMzOVticmNtZm1hYy1zZGlvLmJpbl0gPSAiL2xpYi9maXJtd2FyZS9icmNtL2JyY21mbWFjNDMzOS1zZGlvLmJpbiIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZX2xpbnV4LWZpcm13YXJlLWJjbTQzMzlbYnJjbWZtYWMtc2Rpby5iaW5dID0gIjIwIgorQUxURVJOQVRJVkVfbGludXgtZmlybXdhcmUtYmNtNDM0MzAgPSAiYnJjbWZtYWMtc2Rpby5iaW4iCitBTFRFUk5BVElWRV9UQVJHRVRfbGludXgtZmlybXdhcmUtYmNtNDM0MzBbYnJjbWZtYWMtc2Rpby5iaW5dID0gIi9saWIvZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNDMwLXNkaW8uYmluIgogCiBSREVQRU5EU18ke1BOfS1iY200MzI5ICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgogUkRFUEVORFNfJHtQTn0tYmNtNDMzMCArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKIFJERVBFTkRTXyR7UE59LWJjbTQzMzQgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCiBSREVQRU5EU18ke1BOfS1iY200MzM0MCArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKIFJERVBFTkRTXyR7UE59LWJjbTQzMzkgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1iY200MzQzMCArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKIFJERVBFTkRTXyR7UE59LWJjbTQzNTQgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCiAKKyMgRm9yIEJyb2FkY29tIGJueDItbWlwcworIworIyB3aGljaCBpcyBhIHNlcGFyYXRlIGNhc2UgdG8gdGhlIG90aGVyIEJyb2FkY29tIGZpcm13YXJlcyBzaW5jZSBpdHMKKyMgbGljZW5zZSBpcyBjb250YWluZWQgaW4gdGhlIHNoYXJlZCBXSEVOQ0UgZmlsZS4KKworTElDRU5TRV8ke1BOfS1ibngyLW1pcHMgPSAiV0hFTkNFIgorTElDRU5TRV8ke1BOfS13aGVuY2UtbGljZW5zZSA9ICJXSEVOQ0UiCisKK0ZJTEVTXyR7UE59LWJueDItbWlwcyA9ICIvbGliL2Zpcm13YXJlL2JueDIvYm54Mi1taXBzLTA5LTYuMi4xYi5mdyIKK0ZJTEVTXyR7UE59LXdoZW5jZS1saWNlbnNlID0gIi9saWIvZmlybXdhcmUvV0hFTkNFIgorCitSREVQRU5EU18ke1BOfS1ibngyLW1pcHMgKz0gIiR7UE59LXdoZW5jZS1saWNlbnNlIgorCiAjIEZvciBpd2x3aWZpCitMSUNFTlNFXyR7UE59LWl3bHdpZmkgICAgICAgICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCiBMSUNFTlNFXyR7UE59LWl3bHdpZmktMTM1LTYgICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCiBMSUNFTlNFXyR7UE59LWl3bHdpZmktMzE2MC03ICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCiBMSUNFTlNFXyR7UE59LWl3bHdpZmktMzE2MC04ICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCkBAIC00MzMsNyArNDg1LDcgQEAKIExJQ0VOU0VfJHtQTn0taXdsd2lmaS02MDAwLTQgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKIExJQ0VOU0VfJHtQTn0taXdsd2lmaS02MDAwZzJhLTUgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKIExJQ0VOU0VfJHtQTn0taXdsd2lmaS02MDAwZzJhLTYgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS02MDAwZzJhLTUgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS02MDAwZzJiLTUgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKIExJQ0VOU0VfJHtQTn0taXdsd2lmaS02MDAwZzJiLTYgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKIExJQ0VOU0VfJHtQTn0taXdsd2lmaS02MDUwLTQgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKIExJQ0VOU0VfJHtQTn0taXdsd2lmaS02MDUwLTUgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKQEAgLTQ0Miw2ICs0OTQsOCBAQAogTElDRU5TRV8ke1BOfS1pd2x3aWZpLTcyNjVkICAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgogTElDRU5TRV8ke1BOfS1pd2x3aWZpLTgwMDBjICAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgogTElDRU5TRV8ke1BOfS1pd2x3aWZpLTgyNjUgICAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLW1pc2MgICAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLWxpY2Vuc2UgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgogCiAKIEZJTEVTXyR7UE59LWl3bHdpZmktbGljZW5zZSA9ICIvbGliL2Zpcm13YXJlL0xJQ0VOQ0UuaXdsd2lmaV9maXJtd2FyZSIKQEAgLTQ2MSw2ICs1MTUsNyBAQAogRklMRVNfJHtQTn0taXdsd2lmaS03MjY1ZCAgID0gIi9saWIvZmlybXdhcmUvaXdsd2lmaS03MjY1RC0qLnVjb2RlIgogRklMRVNfJHtQTn0taXdsd2lmaS04MDAwYyAgID0gIi9saWIvZmlybXdhcmUvaXdsd2lmaS04MDAwQy0qLnVjb2RlIgogRklMRVNfJHtQTn0taXdsd2lmaS04MjY1ICAgPSAiL2xpYi9maXJtd2FyZS9pd2x3aWZpLTgyNjUtKi51Y29kZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktbWlzYyAgID0gIi9saWIvZmlybXdhcmUvaXdsd2lmaS0qLnVjb2RlIgogCiBSREVQRU5EU18ke1BOfS1pd2x3aWZpLTEzNS02ICAgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCiBSREVQRU5EU18ke1BOfS1pd2x3aWZpLTMxNjAtNyAgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCkBAIC00NjksNyArNTI0LDcgQEAKIFJERVBFTkRTXyR7UE59LWl3bHdpZmktNjAwMC00ICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKIFJERVBFTkRTXyR7UE59LWl3bHdpZmktNjAwMGcyYS01ID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKIFJERVBFTkRTXyR7UE59LWl3bHdpZmktNjAwMGcyYS02ID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktNjAwMGcyYS01ID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktNjAwMGcyYi01ID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKIFJERVBFTkRTXyR7UE59LWl3bHdpZmktNjAwMGcyYi02ID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKIFJERVBFTkRTXyR7UE59LWl3bHdpZmktNjA1MC00ICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKIFJERVBFTkRTXyR7UE59LWl3bHdpZmktNjA1MC01ICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKQEAgLTQ3OCw2ICs1MzMsMTUgQEAKIFJERVBFTkRTXyR7UE59LWl3bHdpZmktNzI2NWQgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKIFJERVBFTkRTXyR7UE59LWl3bHdpZmktODAwMGMgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKIFJERVBFTkRTXyR7UE59LWl3bHdpZmktODI2NSAgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktbWlzYyAgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKKworIyAtaXdsd2lmaS1taXNjIGlzIGEgImNhdGNoIGFsbCIgcGFja2FnZSB0aGF0IGluY2x1ZGVzIGFsbCB0aGUgaXdsd2lmaQorIyBmaXJtd2FyZXMgdGhhdCBhcmUgbm90IGFscmVhZHkgaW5jbHVkZWQgaW4gb3RoZXIgLWl3bHdpZmktIHBhY2thZ2VzLgorIyAtaXdsd2lmaSBpcyBhIHZpcnR1YWwgcGFja2FnZSB0aGF0IGRlcGVuZHMgdXBvbiBhbGwgaXdsd2lmaSBwYWNrYWdlcy4KKyMgVGhlc2UgYXJlIGRpc3RpbmN0IGluIG9yZGVyIHRvIGFsbG93IHRoZSAtbWlzYyBmaXJtd2FyZXMgdG8gYmUgaW5zdGFsbGVkCisjIHdpdGhvdXQgcHVsbGluZyBpbiBldmVyeSBvdGhlciBpd2x3aWZpIHBhY2thZ2UuCitBTExPV19FTVBUWV8ke1BOfS1pd2x3aWZpID0gIjEiCitBTExPV19FTVBUWV8ke1BOfS1pd2x3aWZpLW1pc2MgPSAiMSIKIAogIyBIYW5kbGUgcGFja2FnZSB1cGRhdGluZyBmb3IgdGhlIG5ld2x5IG1lcmdlZCBpd2x3aWZpIGdyb3VwaW5ncwogUlBST1ZJREVTXyR7UE59LWl3bHdpZmktNzI2NSA9ICIke1BOfS1pd2x3aWZpLTcyNjUtOCAke1BOfS1pd2x3aWZpLTcyNjUtOSIKQEAgLTQ4OSwxMiArNTUzLDE0IEBACiBSQ09ORkxJQ1RTXyR7UE59LWl3bHdpZmktNzI2MCA9ICIke1BOfS1pd2x3aWZpLTcyNjAtNyAke1BOfS1pd2x3aWZpLTcyNjAtOCAke1BOfS1pd2x3aWZpLTcyNjAtOSIKIAogTElDRU5TRV8ke1BOfS1pOTE1ICAgICAgID0gIkZpcm13YXJlLWk5MTUiCitMSUNFTlNFXyR7UE59LWk5MTUtbGljZW5zZSA9ICJGaXJtd2FyZS1pOTE1IgogRklMRVNfJHtQTn0taTkxNS1saWNlbnNlID0gIi9saWIvZmlybXdhcmUvTElDRU5TRS5pOTE1IgogRklMRVNfJHtQTn0taTkxNSAgICAgICAgID0gIi9saWIvZmlybXdhcmUvaTkxNSIKIFJERVBFTkRTXyR7UE59LWk5MTUgICAgICA9ICIke1BOfS1pOTE1LWxpY2Vuc2UiCiAKIEZJTEVTXyR7UE59LWFkc3Atc3N0LWxpY2Vuc2UgICAgICA9ICIvbGliL2Zpcm13YXJlL0xJQ0VOQ0UuYWRzcF9zc3QiCiBMSUNFTlNFXyR7UE59LWFkc3Atc3N0ICAgICAgICAgICAgPSAiRmlybXdhcmUtYWRzcF9zc3QiCitMSUNFTlNFXyR7UE59LWFkc3Atc3N0LWxpY2Vuc2UgICAgPSAiRmlybXdhcmUtYWRzcF9zc3QiCiBGSUxFU18ke1BOfS1hZHNwLXNzdCAgICAgICAgICAgICAgPSAiL2xpYi9maXJtd2FyZS9pbnRlbC9kc3BfZncqIgogUkRFUEVORFNfJHtQTn0tYWRzcC1zc3QgICAgICAgICAgID0gIiR7UE59LWFkc3Atc3N0LWxpY2Vuc2UiCiAKQEAgLTUzNCw2ICs2MDAsNyBAQAogICAgICYgRmlybXdhcmUtcjhhNzc5eF91c2IzIFwKICAgICAmIEZpcm13YXJlLXJhZGVvbiBcCiAgICAgJiBGaXJtd2FyZS1yYWxpbmtfYV9tZWRpYXRla19jb21wYW55X2Zpcm13YXJlIFwKKyAgICAmIEZpcm13YXJlLXJhbGluay1maXJtd2FyZSBcCiAgICAgJiBGaXJtd2FyZS1zaWFubyBcCiAgICAgJiBGaXJtd2FyZS10ZGE3NzA2LWZpcm13YXJlIFwKICAgICAmIEZpcm13YXJlLXRpLWNvbm5lY3Rpdml0eSBcCkBAIC01NDMsMTQgKzYxMCwyMCBAQAogICAgICYgRmlybXdhcmUteGM0MDAwIFwKICAgICAmIEZpcm13YXJlLXhjNTAwMCBcCiAgICAgJiBGaXJtd2FyZS14YzUwMDBjIFwKKyAgICAmIFdIRU5DRSBcCiAiCiAKIEZJTEVTXyR7UE59LWxpY2Vuc2UgKz0gIi9saWIvZmlybXdhcmUvTElDRU4qIgogRklMRVNfJHtQTn0gKz0gIi9saWIvZmlybXdhcmUvKiIKIFJERVBFTkRTXyR7UE59ICs9ICIke1BOfS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LXdoZW5jZS1saWNlbnNlIgogCiAjIE1ha2UgbGludXgtZmlybXdhcmUgZGVwZW5kIG9uIGFsbCBvZiB0aGUgc3BsaXQtb3V0IHBhY2thZ2VzLgorIyBNYWtlIGxpbnV4LWZpcm13YXJlLWl3bHdpZmkgZGVwZW5kIG9uIGFsbCBvZiB0aGUgc3BsaXQtb3V0IGl3bHdpZmkgcGFja2FnZXMuCiBweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7CiAgICAgZmlybXdhcmVfcGtncyA9IG9lLnV0aWxzLnBhY2thZ2VzX2ZpbHRlcl9vdXRfc3lzdGVtKGQpCiAgICAgZC5hcHBlbmRWYXIoJ1JERVBFTkRTX2xpbnV4LWZpcm13YXJlJywgJyAnICsgJyAnLmpvaW4oZmlybXdhcmVfcGtncykpCisKKyAgICBpd2x3aWZpX3BrZ3MgPSBmaWx0ZXIobGFtYmRhIHg6IHguZmluZCgnLWl3bHdpZmktJykgIT0gLTEsIGZpcm13YXJlX3BrZ3MpCisgICAgZC5hcHBlbmRWYXIoJ1JERVBFTkRTX2xpbnV4LWZpcm13YXJlLWl3bHdpZmknLCAnICcgKyAnICcuam9pbihpd2x3aWZpX3BrZ3MpKQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLmluYwppbmRleCAyYmE2ZWQ1Li4wNzhkNzUyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLmluYwpAQCAtMTgsOSArMTgsMTAgQEAKICMgQnV0IHlvdSBoYXZlIHNvbWUga2VybmVsIGhlYWRlcnMgeW91IG5lZWQgZm9yIHNvbWUgZHJpdmVyPyBUaGF0IGlzIGZpbmUKICMgYnV0IGdldCB0aGVtIGZyb20gU1RBR0lOR19LRVJORUxfRElSIHdoZXJlIHRoZSBrZXJuZWwgaW5zdGFsbHMgaXRzZWxmLgogIyBUaGlzIHdpbGwgbWFrZSB0aGUgcGFja2FnZSB1c2luZyB0aGVtIG1hY2hpbmUgc3BlY2lmaWMgYnV0IHRoaXMgaXMgbXVjaAotIyBiZXR0ZXIgdGhhbiBoYXZpbmcgYSBtYWNoaW5lIHNwZWNpZmljIEMgbGlicmFyeS4gVGhpcyBkb2VzIG1lYW4geW91ciAKLSMgcmVjaXBlIG5lZWRzIGEgREVQRU5EUyArPSAidmlydHVhbC9rZXJuZWwiIGJ1dCBhZ2FpbiwgdGhhdCBpcyBmaW5lIGFuZAotIyBtYWtlcyB0b3RhbCBzZW5zZS4KKyMgYmV0dGVyIHRoYW4gaGF2aW5nIGEgbWFjaGluZSBzcGVjaWZpYyBDIGxpYnJhcnkuIFRoaXMgZG9lcyBtZWFuIHlvdXIKKyMgcmVjaXBlIG5lZWRzIGEKKyMgICAgZG9fY29uZmlndXJlW2RlcGVuZHNdICs9ICJ2aXJ0dWFsL2tlcm5lbDpkb19zaGFyZWRfd29ya2RpciIKKyMgYnV0IGFnYWluLCB0aGF0IGlzIGZpbmUgYW5kIG1ha2VzIHRvdGFsIHNlbnNlLgogIwogIyBUaGVyZSBjYW4gYWxzbyBiZSBhIGNhc2Ugd2hlcmUgeW91ciBrZXJuZWwgZXh0cmVtZWx5IG9sZCBhbmQgeW91IHdhbnQKICMgYW4gb2xkZXIgbGliYyBBQkkgZm9yIHRoYXQgb2xkIGtlcm5lbC4gVGhlIGhlYWRlcnMgaW5zdGFsbGVkIGJ5IHRoaXMKQEAgLTQ5LDggKzUwLDcgQEAKIAogUyA9ICIke1dPUktESVJ9L2xpbnV4LSR7UFZ9IgogCi0jIEZvciB0aGUga2VybmVsLCB3ZSBkb24ndCB3YW50IHRoZSAnLWUgTUFLRUZMQUdTPScgaW4gRVhUUkFfT0VNQUtFLgotRVhUUkFfT0VNQUtFID0gIiIKK0VYVFJBX09FTUFLRSA9ICIgSE9TVENDPSIke0JVSUxEX0NDfSIgSE9TVENQUD0iJHtCVUlMRF9DUFB9IiIKIAogZG9fY29uZmlndXJlKCkgewogCW9lX3J1bm1ha2UgYWxsbm9jb25maWcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMS1saWJjLWNvbXBhdC5oLWZpeC1zb21lLWlzc3Vlcy1hcmlzaW5nLWZyb20taW42LmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLzAwMDEtbGliYy1jb21wYXQuaC1maXgtc29tZS1pc3N1ZXMtYXJpc2luZy1mcm9tLWluNi5oLnBhdGNoCmluZGV4IDZhZDQ3OTguLjhiYjc3NWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMS1saWJjLWNvbXBhdC5oLWZpeC1zb21lLWlzc3Vlcy1hcmlzaW5nLWZyb20taW42LmgucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy8wMDAxLWxpYmMtY29tcGF0LmgtZml4LXNvbWUtaXNzdWVzLWFyaXNpbmctZnJvbS1pbjYuaC5wYXRjaApAQCAtMTEsMTAgKzExLDEwIEBACiAgaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmggfCAyNSArKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCiAKLUluZGV4OiBsaW51eC00LjQvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmgKK0luZGV4OiBsaW51eC00LjgtcmM0L2luY2x1ZGUvdWFwaS9saW51eC9saWJjLWNvbXBhdC5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGludXgtNC40Lm9yaWcvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmgKLSsrKyBsaW51eC00LjQvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmgKKy0tLSBsaW51eC00LjgtcmM0Lm9yaWcvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmgKKysrKyBsaW51eC00LjgtcmM0L2luY2x1ZGUvdWFwaS9saW51eC9saWJjLWNvbXBhdC5oCiBAQCAtNDgsMTMgKzQ4LDEyIEBACiAgI2lmbmRlZiBfVUFQSV9MSUJDX0NPTVBBVF9ICiAgI2RlZmluZSBfVUFQSV9MSUJDX0NPTVBBVF9ICkBAIC0yMywxNiArMjMsMTcgQEAKIC0jaWYgZGVmaW5lZChfX0dMSUJDX18pCiArI2lmbmRlZiBfX0tFUk5FTF9fIC8qIHdlJ3JlIHVzZWQgZnJvbSB1c2Vyc3BhY2UgKi8KICAKLS0vKiBDb29yZGluYXRlIHdpdGggZ2xpYmMgbmV0aW5ldC9pbi5oIGhlYWRlci4gKi8KLSsvKiBDb29yZGluYXRlIHdpdGggbGliYyBuZXRpbmV0L2luLmggaGVhZGVyLiAqLwotICNpZiBkZWZpbmVkKF9ORVRJTkVUX0lOX0gpCistLyogQ29vcmRpbmF0ZSB3aXRoIGdsaWJjIG5ldC9pZi5oIGhlYWRlci4gKi8KKy0jaWYgZGVmaW5lZChfTkVUX0lGX0gpICYmIGRlZmluZWQoX19VU0VfTUlTQykKKysvKiBDb29yZGluYXRlIHdpdGggbGliYyBuZXQvaWYuaCBoZWFkZXIuICovCisrI2lmIGRlZmluZWQoX05FVF9JRl9IKQogIAogLS8qIEdMSUJDIGhlYWRlcnMgaW5jbHVkZWQgZmlyc3Qgc28gZG9uJ3QgZGVmaW5lIGFueXRoaW5nCiArLyogTElCQyBoZWFkZXJzIGluY2x1ZGVkIGZpcnN0IHNvIGRvbid0IGRlZmluZSBhbnl0aGluZwogICAqIHRoYXQgd291bGQgYWxyZWFkeSBiZSBkZWZpbmVkLiAqLwotICNkZWZpbmUgX19VQVBJX0RFRl9JTl9BRERSCQkwCi0gI2RlZmluZSBfX1VBUElfREVGX0lOX0lQUFJPVE8JCTAKLUBAIC02NCwxNSArNjMsNyBAQAorIAorICNkZWZpbmUgX19VQVBJX0RFRl9JRl9JRkNPTkYgMAorQEAgLTk4LDE1ICs5Nyw3IEBACiAgI2RlZmluZSBfX1VBUElfREVGX0lOX0NMQVNTCQkwCiAgCiAgI2RlZmluZSBfX1VBUElfREVGX0lONl9BRERSCQkwCkBAIC00OCw3ICs0OSw3IEBACiAgI2RlZmluZSBfX1VBUElfREVGX1NPQ0tBRERSX0lONgkJMAogICNkZWZpbmUgX19VQVBJX0RFRl9JUFY2X01SRVEJCTAKICAjZGVmaW5lIF9fVUFQSV9ERUZfSVBQUk9UT19WNgkJMAotQEAgLTgwLDEwICs3MSwxMCBAQAorQEAgLTExNCwxMCArMTA1LDEwIEBACiAgI2RlZmluZSBfX1VBUElfREVGX0lONl9QS1RJTkZPCQkwCiAgI2RlZmluZSBfX1VBUElfREVGX0lQNl9NVFVJTkZPCQkwCiAgCkBAIC02MSw3ICs2Miw3IEBACiAgICogX19VQVBJX0RFRl8qIGRlZmluZXMgYW5kIGFkanVzdCBhcHByb3ByaWF0ZWx5LiAqLwogICNkZWZpbmUgX19VQVBJX0RFRl9JTl9BRERSCQkxCiAgI2RlZmluZSBfX1VBUElfREVGX0lOX0lQUFJPVE8JCTEKLUBAIC05Myw3ICs4NCw3IEBACitAQCAtMTI3LDcgKzExOCw3IEBACiAgI2RlZmluZSBfX1VBUElfREVGX0lOX0NMQVNTCQkxCiAgCiAgI2RlZmluZSBfX1VBUElfREVGX0lONl9BRERSCQkxCkBAIC03MCwxNiArNzEsMTYgQEAKICAgKiBjb29yZGluYXRlLiAqLwogICNkZWZpbmUgX19VQVBJX0RFRl9JTjZfQUREUl9BTFQJCTEKICAjZGVmaW5lIF9fVUFQSV9ERUZfU09DS0FERFJfSU42CQkxCi1AQCAtMTE1LDcgKzEwNiw3IEBACitAQCAtMTQ5LDcgKzE0MCw3IEBACiAgLyogSWYgd2UgZGlkIG5vdCBzZWUgYW55IGhlYWRlcnMgZnJvbSBhbnkgc3VwcG9ydGVkIEMgbGlicmFyaWVzLAogICAqIG9yIHdlIGFyZSBiZWluZyBpbmNsdWRlZCBpbiB0aGUga2VybmVsLCB0aGVuIGRlZmluZSBldmVyeXRoaW5nCiAgICogdGhhdCB3ZSBuZWVkLiAqLwogLSNlbHNlIC8qICFkZWZpbmVkKF9fR0xJQkNfXykgKi8KICsjZWxzZSAvKiBfX0tFUk5FTF9fICovCiAgCi0gLyogRGVmaW5pdGlvbnMgZm9yIGluLmggKi8KLSAjZGVmaW5lIF9fVUFQSV9ERUZfSU5fQUREUgkJMQotQEAgLTEzOCw2ICsxMjksNiBAQAorIC8qIERlZmluaXRpb25zIGZvciBpZi5oICovCisgI2RlZmluZSBfX1VBUElfREVGX0lGX0lGQ09ORiAxCitAQCAtMTgyLDYgKzE3Myw2IEBACiAgLyogRGVmaW5pdGlvbnMgZm9yIHhhdHRyLmggKi8KICAjZGVmaW5lIF9fVUFQSV9ERUZfWEFUVFIJCTEKICAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMi1saWJjLWNvbXBhdC5oLXByZXZlbnQtcmVkZWZpbml0aW9uLW9mLXN0cnVjdC1ldGhoZHIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLzAwMDItbGliYy1jb21wYXQuaC1wcmV2ZW50LXJlZGVmaW5pdGlvbi1vZi1zdHJ1Y3QtZXRoaGRyLnBhdGNoCmluZGV4IGM2MTcwOTMuLjhkYzFlZGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMi1saWJjLWNvbXBhdC5oLXByZXZlbnQtcmVkZWZpbml0aW9uLW9mLXN0cnVjdC1ldGhoZHIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy8wMDAyLWxpYmMtY29tcGF0LmgtcHJldmVudC1yZWRlZmluaXRpb24tb2Ytc3RydWN0LWV0aGhkci5wYXRjaApAQCAtMTEsMTAgKzExLDEwIEBACiAgaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmggfCA2ICsrKysrKwogIDIgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvaWZfZXRoZXIuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9pZl9ldGhlci5oCi1pbmRleCBhYTYzZWQwLi5lOTRkYTU3IDEwMDY0NAotLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2lmX2V0aGVyLmgKLSsrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9pZl9ldGhlci5oCitJbmRleDogbGludXgtNC44LXJjNC9pbmNsdWRlL3VhcGkvbGludXgvaWZfZXRoZXIuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGxpbnV4LTQuOC1yYzQub3JpZy9pbmNsdWRlL3VhcGkvbGludXgvaWZfZXRoZXIuaAorKysrIGxpbnV4LTQuOC1yYzQvaW5jbHVkZS91YXBpL2xpbnV4L2lmX2V0aGVyLmgKIEBAIC0yMiw2ICsyMiw3IEBACiAgI2RlZmluZSBfVUFQSV9MSU5VWF9JRl9FVEhFUl9ICiAgCkBAIC0yMyw3ICsyMyw3IEBACiAgCiAgLyoKICAgKglJRUVFIDgwMi4zIEV0aGVybmV0IG1hZ2ljIGNvbnN0YW50cy4gIFRoZSBmcmFtZSBzaXplcyBvbWl0IHRoZSBwcmVhbWJsZQotQEAgLTEzNCwxMSArMTM1LDEyIEBACitAQCAtMTM4LDExICsxMzksMTIgQEAKICAgKglUaGlzIGlzIGFuIEV0aGVybmV0IGZyYW1lIGhlYWRlci4KICAgKi8KICAKQEAgLTM3LDEwICszNywxMCBAQAogKyNlbmRpZgogIAogICNlbmRpZiAvKiBfVUFQSV9MSU5VWF9JRl9FVEhFUl9IICovCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmggYi9pbmNsdWRlL3VhcGkvbGludXgvbGliYy1jb21wYXQuaAotaW5kZXggYWZlMTVjMi4uN2QwYzc4YSAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9saWJjLWNvbXBhdC5oCi0rKysgYi9pbmNsdWRlL3VhcGkvbGludXgvbGliYy1jb21wYXQuaAorSW5kZXg6IGxpbnV4LTQuOC1yYzQvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBsaW51eC00LjgtcmM0Lm9yaWcvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmgKKysrKyBsaW51eC00LjgtcmM0L2luY2x1ZGUvdWFwaS9saW51eC9saWJjLWNvbXBhdC5oCiBAQCAtNTAsNiArNTAsMTIgQEAKICAKICAjaWZuZGVmIF9fS0VSTkVMX18gLyogd2UncmUgdXNlZCBmcm9tIHVzZXJzcGFjZSAqLwpAQCAtNTEsOSArNTEsNiBAQAogKyNkZWZpbmUgX19VQVBJX0RFRl9FVEhIRFIgMQogKyNlbmRpZgogKwotIC8qIENvb3JkaW5hdGUgd2l0aCBsaWJjIG5ldGluZXQvaW4uaCBoZWFkZXIuICovCi0gI2lmIGRlZmluZWQoX05FVElORVRfSU5fSCkKKyAvKiBDb29yZGluYXRlIHdpdGggbGliYyBuZXQvaWYuaCBoZWFkZXIuICovCisgI2lmIGRlZmluZWQoX05FVF9JRl9IKSAmJiBkZWZpbmVkKF9fVVNFX01JU0MpCiAgCi0tLSAKLTIuNi40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMy1yZW1vdmUtaW5jbHVzaW9uLW9mLXN5c2luZm8uaC1pbi1rZXJuZWwuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMy1yZW1vdmUtaW5jbHVzaW9uLW9mLXN5c2luZm8uaC1pbi1rZXJuZWwuaC5wYXRjaAppbmRleCA2ZDllOGQ4Li5iNWM0ZTE3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLzAwMDMtcmVtb3ZlLWluY2x1c2lvbi1vZi1zeXNpbmZvLmgtaW4ta2VybmVsLmgucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy8wMDAzLXJlbW92ZS1pbmNsdXNpb24tb2Ytc3lzaW5mby5oLWluLWtlcm5lbC5oLnBhdGNoCkBAIC0xMywxMCArMTMsMTAgQEAKICBpbmNsdWRlL3VhcGkvbGludXgva2VybmVsLmggfCAyICsrCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQogCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2tlcm5lbC5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2tlcm5lbC5oCi1pbmRleCAzMjFlMzk5Li5lOGZmODIxIDEwMDY0NAotLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2tlcm5lbC5oCi0rKysgYi9pbmNsdWRlL3VhcGkvbGludXgva2VybmVsLmgKK0luZGV4OiBsaW51eC00LjgtcmM0L2luY2x1ZGUvdWFwaS9saW51eC9rZXJuZWwuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGxpbnV4LTQuOC1yYzQub3JpZy9pbmNsdWRlL3VhcGkvbGludXgva2VybmVsLmgKKysrKyBsaW51eC00LjgtcmM0L2luY2x1ZGUvdWFwaS9saW51eC9rZXJuZWwuaAogQEAgLTEsNyArMSw5IEBACiAgI2lmbmRlZiBfVUFQSV9MSU5VWF9LRVJORUxfSAogICNkZWZpbmUgX1VBUElfTElOVVhfS0VSTkVMX0gKQEAgLTI3LDYgKzI3LDMgQEAKICAKICAvKgogICAqICdrZXJuZWwuaCcgY29udGFpbnMgc29tZSBvZnRlbi11c2VkIGZ1bmN0aW9uIHByb3RvdHlwZXMgZXRjCi0tLSAKLTIuNi40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnNfNC44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVyc180LjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzdlMDg3MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnNfNC44LmJiCkBAIC0wLDAgKzEsMTIgQEAKK3JlcXVpcmUgbGludXgtbGliYy1oZWFkZXJzLmluYworCitQViA9ICI0LjgiCisKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICJcCisgICAgZmlsZTovLzAwMDEtbGliYy1jb21wYXQuaC1maXgtc29tZS1pc3N1ZXMtYXJpc2luZy1mcm9tLWluNi5oLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMi1saWJjLWNvbXBhdC5oLXByZXZlbnQtcmVkZWZpbml0aW9uLW9mLXN0cnVjdC1ldGhoZHIucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAzLXJlbW92ZS1pbmNsdXNpb24tb2Ytc3lzaW5mby5oLWluLWtlcm5lbC5oLnBhdGNoIFwKKyAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImMxYWYwYWZiZDNkZjM1YzFjY2RjN2E1MTE4Y2QyZDA3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNlOTE1MDA2NWYxOTNkM2Q5NGJjZjQ2YTFmZTlmMDMzYzdlZjcxMjJhYjcxZDc1YTdmYjVhMmYwYzlhN2UxMWEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtZGV2c3JjLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWRldnNyYy5iYgppbmRleCAxOTZjOGM3Li4wZmRkMGFkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtZGV2c3JjLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1kZXZzcmMuYmIKQEAgLTI4LDkgKzI4LDYgQEAKIGRvX2NvbXBpbGVbbm9leGVjXSA9ICIxIgogZG9fcG9wdWxhdGVfc3lzcm9vdFtub2V4ZWNdID0gIjEiCiAKLSMgRGVmaW5lIHdoZXJlIHRoZSBrZXJuZWwgaGVhZGVycyBhcmUgaW5zdGFsbGVkIG9uIHRoZSB0YXJnZXQgYXMgd2VsbCBhcyB3aGVyZQotIyB0aGV5IGFyZSBzdGFnZWQuCi1LRVJORUxfU1JDX1BBVEggPSAiL3Vzci9zcmMva2VybmVsIgogUyA9ICIke1NUQUdJTkdfS0VSTkVMX0RJUn0iCiBCID0gIiR7U1RBR0lOR19LRVJORUxfQlVJTERESVJ9IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1kdGIuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtZHRiLmluYwppbmRleCA3NGY1ZWY4Li44NTI4ZDY0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1kdGIuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LWR0Yi5pbmMKQEAgLTMzLDEyICszMywxMyBAQAogZG9faW5zdGFsbF9hcHBlbmQoKSB7CiAJZm9yIERUQiBpbiAke0tFUk5FTF9ERVZJQ0VUUkVFfTsgZG8KIAkJRFRCPWBub3JtYWxpemVfZHRiICIke0RUQn0iYAotCQlEVEJfQkFTRV9OQU1FPWBiYXNlbmFtZSAke0RUQn0gLmR0YmAKKwkJRFRCX0VYVD0ke0RUQiMjKi59CisJCURUQl9CQVNFX05BTUU9YGJhc2VuYW1lICR7RFRCfSAuIiR7RFRCX0VYVH0iYAogCQlmb3IgdHlwZSBpbiAke0tFUk5FTF9JTUFHRVRZUEVfRk9SX01BS0V9OyBkbwogCQkJc3ltbGlua19uYW1lPSR7dHlwZX0iLSIke0tFUk5FTF9JTUFHRV9TWU1MSU5LX05BTUV9CiAJCQlEVEJfU1lNTElOS19OQU1FPWBlY2hvICR7c3ltbGlua19uYW1lfSB8IHNlZCAicy8ke01BQ0hJTkV9LyR7RFRCX0JBU0VfTkFNRX0vZyJgCiAJCQlEVEJfUEFUSD1gZ2V0X3JlYWxfZHRiX3BhdGhfaW5fa2VybmVsICIke0RUQn0iYAotCQkJaW5zdGFsbCAtbSAwNjQ0ICR7RFRCX1BBVEh9ICR7RH0vJHtLRVJORUxfSU1BR0VERVNUfS9kZXZpY2V0cmVlLSR7RFRCX1NZTUxJTktfTkFNRX0uZHRiCisJCQlpbnN0YWxsIC1tIDA2NDQgJHtEVEJfUEFUSH0gJHtEfS8ke0tFUk5FTF9JTUFHRURFU1R9L2RldmljZXRyZWUtJHtEVEJfU1lNTElOS19OQU1FfS4ke0RUQl9FWFR9CiAJCWRvbmUKIAlkb25lCiB9CkBAIC00Niw3ICs0Nyw4IEBACiBkb19kZXBsb3lfYXBwZW5kKCkgewogCWZvciBEVEIgaW4gJHtLRVJORUxfREVWSUNFVFJFRX07IGRvCiAJCURUQj1gbm9ybWFsaXplX2R0YiAiJHtEVEJ9ImAKLQkJRFRCX0JBU0VfTkFNRT1gYmFzZW5hbWUgJHtEVEJ9IC5kdGJgCisJCURUQl9FWFQ9JHtEVEIjIyoufQorCQlEVEJfQkFTRV9OQU1FPWBiYXNlbmFtZSAke0RUQn0gLiIke0RUQl9FWFR9ImAKIAkJZm9yIHR5cGUgaW4gJHtLRVJORUxfSU1BR0VUWVBFX0ZPUl9NQUtFfTsgZG8KIAkJCWJhc2VfbmFtZT0ke3R5cGV9Ii0iJHtLRVJORUxfSU1BR0VfQkFTRV9OQU1FfQogCQkJc3ltbGlua19uYW1lPSR7dHlwZX0iLSIke0tFUk5FTF9JTUFHRV9TWU1MSU5LX05BTUV9CkBAIC01NCw4ICs1Niw4IEBACiAJCQlEVEJfU1lNTElOS19OQU1FPWBlY2hvICR7c3ltbGlua19uYW1lfSB8IHNlZCAicy8ke01BQ0hJTkV9LyR7RFRCX0JBU0VfTkFNRX0vZyJgCiAJCQlEVEJfUEFUSD1gZ2V0X3JlYWxfZHRiX3BhdGhfaW5fa2VybmVsICIke0RUQn0iYAogCQkJaW5zdGFsbCAtZCAke0RFUExPWURJUn0KLQkJCWluc3RhbGwgLW0gMDY0NCAke0RUQl9QQVRIfSAke0RFUExPWURJUn0vJHtEVEJfTkFNRX0uZHRiCi0JCQlsbiAtc2YgJHtEVEJfTkFNRX0uZHRiICR7REVQTE9ZRElSfS8ke0RUQl9TWU1MSU5LX05BTUV9LmR0YgorCQkJaW5zdGFsbCAtbSAwNjQ0ICR7RFRCX1BBVEh9ICR7REVQTE9ZRElSfS8ke0RUQl9OQU1FfS4ke0RUQl9FWFR9CisJCQlsbiAtc2YgJHtEVEJfTkFNRX0uJHtEVEJfRVhUfSAke0RFUExPWURJUn0vJHtEVEJfU1lNTElOS19OQU1FfS4ke0RUQl9FWFR9CiAJCWRvbmUKIAlkb25lCiB9CkBAIC02NSw5ICs2NywxMCBAQAogCWZvciBEVEIgaW4gJHtLRVJORUxfREVWSUNFVFJFRX07IGRvCiAJCWZvciB0eXBlIGluICR7S0VSTkVMX0lNQUdFVFlQRV9GT1JfTUFLRX07IGRvCiAJCQlzeW1saW5rX25hbWU9JHt0eXBlfSItIiR7S0VSTkVMX0lNQUdFX1NZTUxJTktfTkFNRX0KKwkJCURUQl9FWFQ9JHtEVEIjIyoufQogCQkJRFRCX0JBU0VfTkFNRT1gYmFzZW5hbWUgJHtEVEJ9IHwgYXdrIC1GICIuIiAne3ByaW50ICQxfSdgCiAJCQlEVEJfU1lNTElOS19OQU1FPWBlY2hvICR7c3ltbGlua19uYW1lfSB8IHNlZCAicy8ke01BQ0hJTkV9LyR7RFRCX0JBU0VfTkFNRX0vZyJgCi0JCQl1cGRhdGUtYWx0ZXJuYXRpdmVzIC0taW5zdGFsbCAvJHtLRVJORUxfSU1BR0VERVNUfS8ke0RUQl9CQVNFX05BTUV9LmR0YiAke0RUQl9CQVNFX05BTUV9LmR0YiAvYm9vdC9kZXZpY2V0cmVlLSR7RFRCX1NZTUxJTktfTkFNRX0uZHRiICR7S0VSTkVMX1BSSU9SSVRZfSB8fCB0cnVlCisJCQl1cGRhdGUtYWx0ZXJuYXRpdmVzIC0taW5zdGFsbCAvJHtLRVJORUxfSU1BR0VERVNUfS8ke0RUQl9CQVNFX05BTUV9LiR7RFRCX0VYVH0gJHtEVEJfQkFTRV9OQU1FfS4ke0RUQl9FWFR9IC9ib290L2RldmljZXRyZWUtJHtEVEJfU1lNTElOS19OQU1FfS4ke0RUQl9FWFR9ICR7S0VSTkVMX1BSSU9SSVRZfSB8fCB0cnVlCiAJCWRvbmUKIAlkb25lCiB9CkBAIC03Nyw5ICs4MCwxMCBAQAogCWZvciBEVEIgaW4gJHtLRVJORUxfREVWSUNFVFJFRX07IGRvCiAJCWZvciB0eXBlIGluICR7S0VSTkVMX0lNQUdFVFlQRV9GT1JfTUFLRX07IGRvCiAJCQlzeW1saW5rX25hbWU9JHt0eXBlfSItIiR7S0VSTkVMX0lNQUdFX1NZTUxJTktfTkFNRX0KKwkJCURUQl9FWFQ9JHtEVEIjIyoufQogCQkJRFRCX0JBU0VfTkFNRT1gYmFzZW5hbWUgJHtEVEJ9IHwgYXdrIC1GICIuIiAne3ByaW50ICQxfSdgCiAJCQlEVEJfU1lNTElOS19OQU1FPWBlY2hvICR7c3ltbGlua19uYW1lfSB8IHNlZCAicy8ke01BQ0hJTkV9LyR7RFRCX0JBU0VfTkFNRX0vZyJgCi0JCQl1cGRhdGUtYWx0ZXJuYXRpdmVzIC0tcmVtb3ZlICR7RFRCX0JBU0VfTkFNRX0uZHRiIC9ib290L2RldmljZXRyZWUtJHtEVEJfU1lNTElOS19OQU1FfS5kdGIgJHtLRVJORUxfUFJJT1JJVFl9IHx8IHRydWUKKwkJCXVwZGF0ZS1hbHRlcm5hdGl2ZXMgLS1yZW1vdmUgJHtEVEJfQkFTRV9OQU1FfS4ke0RUQl9FWFR9IC9ib290L2RldmljZXRyZWUtJHtEVEJfU1lNTElOS19OQU1FfS4ke0RUQl9FWFR9ICR7S0VSTkVMX1BSSU9SSVRZfSB8fCB0cnVlCiAJCWRvbmUKIAlkb25lCiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1kdW1teS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LWR1bW15LmJiCmluZGV4IGNjMGU0ZTYuLjk5NGFjNzQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LWR1bW15LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LWR1bW15LmJiCkBAIC0xOCw2ICsxOCw4IEBACiBBTExPV19FTVBUWV9rZXJuZWwtbW9kdWxlcyA9ICIxIgogREVTQ1JJUFRJT05fa2VybmVsLW1vZHVsZXMgPSAiS2VybmVsIG1vZHVsZXMgbWV0YSBwYWNrYWdlIgogCitJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgorCiAjQ09NUEFUSUJMRV9NQUNISU5FID0gInlvdXJfbWFjaGluZSIKIAogUFIgPSAicjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmIKaW5kZXggMzA4NTI2My4uOTE1NGJiNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYgpAQCAtMTQsMTQgKzE0LDYgQEAKICMgcHJvdmlkZSB0aGlzIC5pbmMgdG8gc2V0IHNwZWNpZmljIHJldmlzaW9ucwogaW5jbHVkZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYtcmV2aXNpb25zLmluYwogCi0jIFNraXAgcHJvY2Vzc2luZyBvZiB0aGlzIHJlY2lwZSBpZiBpdCBpcyBub3QgZXhwbGljaXRseSBzcGVjaWZpZWQgYXMgdGhlCi0jIFBSRUZFUlJFRF9QUk9WSURFUiBmb3IgdmlydHVhbC9rZXJuZWwuIFRoaXMgYXZvaWRzIG5ldHdvcmsgYWNjZXNzIHJlcXVpcmVkCi0jIGJ5IHRoZSB1c2Ugb2YgQVVUT1JFViBTUkNSRVZzLCB3aGljaCBhcmUgdGhlIGRlZmF1bHQgZm9yIHRoaXMgcmVjaXBlLgotcHl0aG9uICgpIHsKLSAgICBpZiBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIiwgVHJ1ZSkgIT0gImxpbnV4LXlvY3RvLWRldiI6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJTZXQgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIHRvIGxpbnV4LXlvY3RvLWRldiB0byBlbmFibGUgaXQiKQotfQotCiBLQlJBTkNIID0gInN0YW5kYXJkL2Jhc2UiCiBLTUVUQSA9ICJrZXJuZWwtbWV0YSIKIApAQCAtMzYsMTIgKzI4LDE0IEBACiBTUkNSRVZfbWFjaGluZSA/PSAnJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCIsICJsaW51eC15b2N0by1kZXYiLCAiJHtBVVRPUkVWfSIsICIyOTU5NDQwNGQ3ZmU3M2NkODBlYWE0ZWU4YzQzZGNjNTM5NzBjNjBlIiwgZCl9JwogU1JDUkVWX21ldGEgPz0gJyR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiLCAibGludXgteW9jdG8tZGV2IiwgIiR7QVVUT1JFVn0iLCAiMjk1OTQ0MDRkN2ZlNzNjZDgwZWFhNGVlOGM0M2RjYzUzOTcwYzYwZSIsIGQpfScKIAotTElOVVhfVkVSU0lPTiA/PSAiNC42LXJjKyIKK0xJTlVYX1ZFUlNJT04gPz0gIjQuOC1yYysiCiBMSU5VWF9WRVJTSU9OX0VYVEVOU0lPTiA/PSAiLXlvY3RvZGV2LSR7TElOVVhfS0VSTkVMX1RZUEV9IgogUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKIAogQ09NUEFUSUJMRV9NQUNISU5FID0gIihxZW11YXJtfHFlbXV4ODZ8cWVtdXBwY3xxZW11bWlwc3xxZW11bWlwczY0fHFlbXV4ODYtNjQpIgogCitLRVJORUxfREVWSUNFVFJFRV9xZW11YXJtID0gInZlcnNhdGlsZS1wYi5kdGIiCisKICMgRnVuY3Rpb25hbGl0eSBmbGFncwogS0VSTkVMX0VYVFJBX0ZFQVRVUkVTID89ICJmZWF0dXJlcy9uZXRmaWx0ZXIvbmV0ZmlsdGVyLnNjYyBmZWF0dXJlcy90YXNrc3RhdHMvdGFza3N0YXRzLnNjYyIKIEtFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7S0VSTkVMX0VYVFJBX0ZFQVRVUkVTfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMS5iYgppbmRleCBhMTM4OTU3Li5iOTVmYjU4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xLmJiCkBAIC0yLDEzICsyLDIyIEBACiAKIHJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCiAKLVNSQ1JFVl9tYWNoaW5lID89ICIyOGQ4Y2ZkYmNiMThhNmVlZjIwMjA5OWNjYTY2NDMwZmQzYjZlYWUwIgotU1JDUkVWX21ldGEgPz0gImE0Zjg4YzNmYWQ4ODdlMWM1NTlkMDNhZTFiNTMxY2EyNjcxMzdiNjkiCisjIFNraXAgcHJvY2Vzc2luZyBvZiB0aGlzIHJlY2lwZSBpZiBpdCBpcyBub3QgZXhwbGljaXRseSBzcGVjaWZpZWQgYXMgdGhlCisjIFBSRUZFUlJFRF9QUk9WSURFUiBmb3IgdmlydHVhbC9rZXJuZWwuIFRoaXMgYXZvaWRzIGVycm9ycyB3aGVuIHRyeWluZworIyB0byBidWlsZCBtdWx0aXBsZSB2aXJ0dWFsL2tlcm5lbCBwcm92aWRlcnMsIGUuZy4gYXMgZGVwZW5kZW5jeSBvZgorIyBjb3JlLWltYWdlLXJ0LXNkaywgY29yZS1pbWFnZS1ydC4KK3B5dGhvbiAoKSB7CisgICAgaWYgZC5nZXRWYXIoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCIsIFRydWUpICE9ICJsaW51eC15b2N0by1ydCI6CisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJTZXQgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIHRvIGxpbnV4LXlvY3RvLXJ0IHRvIGVuYWJsZSBpdCIpCit9CisKK1NSQ1JFVl9tYWNoaW5lID89ICI5NjZkZGRlNDkwMDMwMTY2MDEwYzU3NzBmOGY4NmNkZDBlOTYxYzc2IgorU1JDUkVWX21ldGEgPz0gIjNjMzE5N2U2NWI2ZjJmNTUxNDg1M2MxZmU3OGFlOGZmYzEzMWIwMmMiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8tNC4xLmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAogICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTtkZXN0c3VmZml4PSR7S01FVEF9IgogCi1MSU5VWF9WRVJTSU9OID89ICI0LjEuMTgiCitMSU5VWF9WRVJTSU9OID89ICI0LjEuMzMiCiAKIFBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuNC5iYgppbmRleCBkODFjYTEzLi42YzExMzgyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC40LmJiCkBAIC0xLDE0ICsxLDIzIEBACi1LQlJBTkNIID89ICJzdGFuZGFyZC9wcmVlbXB0LXJ0IgorS0JSQU5DSCA/PSAic3RhbmRhcmQvcHJlZW1wdC1ydC9iYXNlIgogCiByZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwogCi1TUkNSRVZfbWFjaGluZSA/PSAiMmJjMTEyYTZjY2QxNjgwMGE0YzQ1ZTQ3Y2NiMzAxOGExMDQyYWJkZiIKLVNSQ1JFVl9tZXRhID89ICJiY2M2NTA5MDg0MGY1MWE2YWM5MzcyOTdiZTVjMjJmZTI2OGQwMWFiIgorIyBTa2lwIHByb2Nlc3Npbmcgb2YgdGhpcyByZWNpcGUgaWYgaXQgaXMgbm90IGV4cGxpY2l0bHkgc3BlY2lmaWVkIGFzIHRoZQorIyBQUkVGRVJSRURfUFJPVklERVIgZm9yIHZpcnR1YWwva2VybmVsLiBUaGlzIGF2b2lkcyBlcnJvcnMgd2hlbiB0cnlpbmcKKyMgdG8gYnVpbGQgbXVsdGlwbGUgdmlydHVhbC9rZXJuZWwgcHJvdmlkZXJzLCBlLmcuIGFzIGRlcGVuZGVuY3kgb2YKKyMgY29yZS1pbWFnZS1ydC1zZGssIGNvcmUtaW1hZ2UtcnQuCitweXRob24gKCkgeworICAgIGlmIGQuZ2V0VmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiLCBUcnVlKSAhPSAibGludXgteW9jdG8tcnQiOgorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiU2V0IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCB0byBsaW51eC15b2N0by1ydCB0byBlbmFibGUgaXQiKQorfQorCitTUkNSRVZfbWFjaGluZSA/PSAiNjUyYjU2NDk4NWRiNTU1YjU0OWVmNzM0MDVhZWE2YzM4OTE5ZWVmYyIKK1NSQ1JFVl9tZXRhID89ICIzMDMwMzMwYjA2NmEzM2NlMjExNjRhOGIzMGQwNTAzY2Y5ZjY4ZTViIgogCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuNC5naXQ7YnJhbmNoPSR7S0JSQU5DSH07bmFtZT1tYWNoaW5lIFwKICAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00LjQ7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKIAotTElOVVhfVkVSU0lPTiA/PSAiNC40LjMiCitMSU5VWF9WRVJTSU9OID89ICI0LjQuMjYiCiAKIFBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTFjOWNkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC44LmJiCkBAIC0wLDAgKzEsMzggQEAKK0tCUkFOQ0ggPz0gInN0YW5kYXJkL3ByZWVtcHQtcnQvYmFzZSIKKworcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKKworIyBTa2lwIHByb2Nlc3Npbmcgb2YgdGhpcyByZWNpcGUgaWYgaXQgaXMgbm90IGV4cGxpY2l0bHkgc3BlY2lmaWVkIGFzIHRoZQorIyBQUkVGRVJSRURfUFJPVklERVIgZm9yIHZpcnR1YWwva2VybmVsLiBUaGlzIGF2b2lkcyBlcnJvcnMgd2hlbiB0cnlpbmcKKyMgdG8gYnVpbGQgbXVsdGlwbGUgdmlydHVhbC9rZXJuZWwgcHJvdmlkZXJzLCBlLmcuIGFzIGRlcGVuZGVuY3kgb2YKKyMgY29yZS1pbWFnZS1ydC1zZGssIGNvcmUtaW1hZ2UtcnQuCitweXRob24gKCkgeworICAgIGlmIGQuZ2V0VmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiLCBUcnVlKSAhPSAibGludXgteW9jdG8tcnQiOgorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiU2V0IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCB0byBsaW51eC15b2N0by1ydCB0byBlbmFibGUgaXQiKQorfQorCitTUkNSRVZfbWFjaGluZSA/PSAiNDA1NzU1NmMwNDFmNmFhYzBkMjlhYTM0MjU1ODdkNDE0YzlhMDA5MCIKK1NSQ1JFVl9tZXRhID89ICI4MzExMGQ5NGVkZWI4NTZhMzY2N2I2MjkwM2VkNGFlOTFjMjQxMTdkIgorCitTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuOC5naXQ7YnJhbmNoPSR7S0JSQU5DSH07bmFtZT1tYWNoaW5lIFwKKyAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00Ljg7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKKworTElOVVhfVkVSU0lPTiA/PSAiNC44LjMiCisKK1BWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCisKK0tNRVRBID0gImtlcm5lbC1tZXRhIgorS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCisKK0xJTlVYX0tFUk5FTF9UWVBFID0gInByZWVtcHQtcnQiCisKK0NPTVBBVElCTEVfTUFDSElORSA9ICIocWVtdXg4NnxxZW11eDg2LTY0fHFlbXVhcm18cWVtdXBwY3xxZW11bWlwcykiCisKK0tFUk5FTF9ERVZJQ0VUUkVFX3FlbXVhcm0gPSAidmVyc2F0aWxlLXBiLmR0YiIKKworIyBGdW5jdGlvbmFsaXR5IGZsYWdzCitLRVJORUxfRVhUUkFfRkVBVFVSRVMgPz0gImZlYXR1cmVzL25ldGZpbHRlci9uZXRmaWx0ZXIuc2NjIGZlYXR1cmVzL3Rhc2tzdGF0cy90YXNrc3RhdHMuc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtLRVJORUxfRVhUUkFfRkVBVFVSRVN9IgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgY2ZnL3ZpcnRpby5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODY9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2LTY0PSIgY2ZnL3NvdW5kLnNjYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEuYmIKaW5kZXggMjhjNzIxMy4uYmEwMTcwMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEuYmIKQEAgLTQsMTMgKzQsMTMgQEAKIAogcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKIAotTElOVVhfVkVSU0lPTiA/PSAiNC4xLjE4IgorTElOVVhfVkVSU0lPTiA/PSAiNC4xLjMzIgogCiBLTUVUQSA9ICJrZXJuZWwtbWV0YSIKIEtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgogCi1TUkNSRVZfbWFjaGluZSA/PSAiOTFmNjJkNGEwYTMxOTE5ZDliMmNjZGFmODgxMTMwZjk5YjYxZmM1ZSIKLVNSQ1JFVl9tZXRhID89ICJhNGY4OGMzZmFkODg3ZTFjNTU5ZDAzYWUxYjUzMWNhMjY3MTM3YjY5IgorU1JDUkVWX21hY2hpbmUgPz0gImY0ZDA5MDBiMjg1MWU4MjllOTkwZTBmNjRiMDllZDNiOGUzNTVmYWUiCitTUkNSRVZfbWV0YSA/PSAiM2MzMTk3ZTY1YjZmMmY1NTE0ODUzYzFmZTc4YWU4ZmZjMTMxYjAyYyIKIAogUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYgppbmRleCA2ODRlODgwLi43NmM0MTYzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYgpAQCAtNCwxMyArNCwxMyBAQAogCiByZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwogCi1MSU5VWF9WRVJTSU9OID89ICI0LjQuMyIKK0xJTlVYX1ZFUlNJT04gPz0gIjQuNC4yNiIKIAogS01FVEEgPSAia2VybmVsLW1ldGEiCiBLQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKIAotU1JDUkVWX21hY2hpbmUgPz0gIjFhNzJjZWM4MzRkZTJjODBiNTU2M2Y4YWZiZWVhNzY2NGZkNWVlMDUiCi1TUkNSRVZfbWV0YSA/PSAiYmNjNjUwOTA4NDBmNTFhNmFjOTM3Mjk3YmU1YzIyZmUyNjhkMDFhYiIKK1NSQ1JFVl9tYWNoaW5lID89ICJjYTZhMDhiZDdmODZlYmVmMTFmNzYzZDI2Zjc4N2Y3ZDY1MjcwNDczIgorU1JDUkVWX21ldGEgPz0gIjMwMzAzMzBiMDY2YTMzY2UyMTE2NGE4YjMwZDA1MDNjZjlmNjhlNWIiCiAKIFBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhkZGJkOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC44LmJiCkBAIC0wLDAgKzEsMjUgQEAKK0tCUkFOQ0ggPz0gInN0YW5kYXJkL3RpbnkvY29tbW9uLXBjIgorTElOVVhfS0VSTkVMX1RZUEUgPSAidGlueSIKK0tDT05GSUdfTU9ERSA9ICItLWFsbG5vY29uZmlnIgorCityZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYworCitMSU5VWF9WRVJTSU9OID89ICI0LjguMyIKKworS01FVEEgPSAia2VybmVsLW1ldGEiCitLQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKKworU1JDUkVWX21hY2hpbmUgPz0gIjFhZGY5ZDM2MzM4ZGMzYzYzY2RiZjZmOThiY2JkYzdiYmE0MmE3OTQiCitTUkNSRVZfbWV0YSA/PSAiODMxMTBkOTRlZGViODU2YTM2NjdiNjI5MDNlZDRhZTkxYzI0MTE3ZCIKKworUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjguZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCisgICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC44O2Rlc3RzdWZmaXg9JHtLTUVUQX0iCisKK0NPTVBBVElCTEVfTUFDSElORSA9ICIocWVtdXg4NiQpIgorCisjIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKK0tFUk5FTF9GRUFUVVJFUyA9ICIiCisKK0tFUk5FTF9ERVZJQ0VUUkVFX3FlbXVhcm0gPSAidmVyc2F0aWxlLXBiLmR0YiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwppbmRleCA2YjE2MWZjLi4wOWNkMWYxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCkBAIC04LDYgKzgsMTUgQEAKIAogSU5DX1BSID0gInI0IgogCisjIFNraXAgcHJvY2Vzc2luZyBvZiB0aGlzIHJlY2lwZSBpZiBpdCBpcyBub3QgZXhwbGljaXRseSBzcGVjaWZpZWQgYXMgdGhlCisjIFBSRUZFUlJFRF9QUk9WSURFUiBmb3IgdmlydHVhbC9rZXJuZWwuIFRoaXMgYXZvaWRzIG5ldHdvcmsgYWNjZXNzIHJlcXVpcmVkCisjIGJ5IHRoZSB1c2Ugb2YgQVVUT1JFViBTUkNSRVZzLCB3aGljaCBhcmUgdGhlIGRlZmF1bHQgZm9yIHRoaXMgcmVjaXBlLgorcHl0aG9uICgpIHsKKyAgICBpZiBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIiwgVHJ1ZSkgIT0gZC5nZXRWYXIoIlBOIiwgVHJ1ZSk6CisgICAgICAgIGQuZGVsVmFyKCJCQl9ET05UX0NBQ0hFIikKKyAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIlNldCBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgdG8gJXMgdG8gZW5hYmxlIGl0IiAlIChkLmdldFZhcigiUE4iLCBUcnVlKSkpCit9CisKIERFUEVORFMgKz0gInh6LW5hdGl2ZSBiYy1uYXRpdmUiCiBERVBFTkRTX2FwcGVuZF9hYXJjaDY0ID0gIiBsaWJnY2MiCiBLRVJORUxfQ0NfYXBwZW5kX2FhcmNoNjQgPSAiICR7VE9PTENIQUlOX09QVElPTlN9IgpAQCAtMTcsNiArMjYsOCBAQAogS0VSTkVMX0NDX2FwcGVuZF9uaW9zMiA9ICIgJHtUT09MQ0hBSU5fT1BUSU9OU30iCiBLRVJORUxfTERfYXBwZW5kX25pb3MyID0gIiAke1RPT0xDSEFJTl9PUFRJT05TfSIKIAorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgZmVhdHVyZXMvZGVidWcvcHJpbnRrLnNjYyIKKwogIyBBIEtNQUNISU5FIGlzIHRoZSBtYXBwaW5nIG9mIGEgeW9jdG8gJE1BQ0hJTkUgdG8gd2hhdCBpcyBidWlsdAogIyBieSB0aGUga2VybmVsLiBUaGlzIGlzIHR5cGljYWxseSB0aGUgYnJhbmNoIHRoYXQgc2hvdWxkIGJlIGJ1aWx0LAogIyBhbmQgaXQgY2FuIGJlIHNwZWNpZmljIHRvIHRoZSBtYWNoaW5lIG9yIHNoYXJlZApAQCAtMzUsNiArNDYsNyBAQAogIyAgIDI6IHJlcG9ydCBvcHRpb25zIHRoYXQgYXJlIG5vdCBoYXJkd2FyZSByZWxhdGVkLCBidXQgc2V0IGJ5IGEgQlNQCiBLQ09ORl9BVURJVF9MRVZFTCA/PSAiMSIKIEtDT05GX0JTUF9BVURJVF9MRVZFTCA/PSAiMCIKK0tNRVRBX0FVRElUID89ICJ5ZXMiCiAKIExJTlVYX1ZFUlNJT05fRVhURU5TSU9OID89ICIteW9jdG8tJHtMSU5VWF9LRVJORUxfVFlQRX0iCiAKQEAgLTUyLDYgKzY0LDcgQEAKIH0KIAogIyBleHRyYSB0YXNrcwotYWRkdGFzayBrZXJuZWxfbGlua192bWxpbnV4IGFmdGVyIGRvX2NvbXBpbGUgYmVmb3JlIGRvX2luc3RhbGwKK2FkZHRhc2sga2VybmVsX3ZlcnNpb25fc2FuaXR5X2NoZWNrIGFmdGVyIGRvX2tlcm5lbF9tZXRhZGF0YSBkb19rZXJuZWxfY2hlY2tvdXQgYmVmb3JlIGRvX2NvbXBpbGUKK2FkZHRhc2sga2VybmVsX2xpbmtfaW1hZ2VzIGFmdGVyIGRvX2NvbXBpbGUgYmVmb3JlIGRvX3N0cmlwCiBhZGR0YXNrIHZhbGlkYXRlX2JyYW5jaGVzIGJlZm9yZSBkb19wYXRjaCBhZnRlciBkb19rZXJuZWxfY2hlY2tvdXQKIGFkZHRhc2sga2VybmVsX2NvbmZpZ2NoZWNrIGFmdGVyIGRvX2NvbmZpZ3VyZSBiZWZvcmUgZG9fY29tcGlsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xLmJiCmluZGV4IGFlY2I1MTcuLjc4OGE4ZWEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEuYmIKQEAgLTExLDIwICsxMSwyMCBAQAogS0JSQU5DSF9xZW11eDg2LTY0ID89ICJzdGFuZGFyZC9iYXNlIgogS0JSQU5DSF9xZW11bWlwczY0ID89ICJzdGFuZGFyZC9tdGktbWFsdGE2NCIKIAotU1JDUkVWX21hY2hpbmVfcWVtdWFybSA/PSAiMjMyZTJkODg4NDFjN2UyMDg1NzM1MDI3NWQ4MGY1NTg1ZWQ5MzczNCIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVhcm02NCA/PSAiOTFmNjJkNGEwYTMxOTE5ZDliMmNjZGFmODgxMTMwZjk5YjYxZmM1ZSIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzID89ICI3ZDM2OTBjMDc2MmYxMWUwMzhmMTQzMTBhNTBjYTFjZGM4MTNjYzIyIgotU1JDUkVWX21hY2hpbmVfcWVtdXBwYyA/PSAiOTFmNjJkNGEwYTMxOTE5ZDliMmNjZGFmODgxMTMwZjk5YjYxZmM1ZSIKLVNSQ1JFVl9tYWNoaW5lX3FlbXV4ODYgPz0gIjkxZjYyZDRhMGEzMTkxOWQ5YjJjY2RhZjg4MTEzMGY5OWI2MWZjNWUiCi1TUkNSRVZfbWFjaGluZV9xZW11eDg2LTY0ID89ICI5MWY2MmQ0YTBhMzE5MTlkOWIyY2NkYWY4ODExMzBmOTliNjFmYzVlIgotU1JDUkVWX21hY2hpbmVfcWVtdW1pcHM2NCA/PSAiYjcxZTRjZDdkNDVmMDMwNDhhZDMxZTJhMzZkZmU1YTQzZjAyMWI1MSIKLVNSQ1JFVl9tYWNoaW5lID89ICI5MWY2MmQ0YTBhMzE5MTlkOWIyY2NkYWY4ODExMzBmOTliNjFmYzVlIgotU1JDUkVWX21ldGEgPz0gImE0Zjg4YzNmYWQ4ODdlMWM1NTlkMDNhZTFiNTMxY2EyNjcxMzdiNjkiCitTUkNSRVZfbWFjaGluZV9xZW11YXJtID89ICJkNjdlZjQ4NWNlMTQyMGRmMTFiZGEyZDlmNmZiNzhlZjUwYzFhZGZmIgorU1JDUkVWX21hY2hpbmVfcWVtdWFybTY0ID89ICJmNGQwOTAwYjI4NTFlODI5ZTk5MGUwZjY0YjA5ZWQzYjhlMzU1ZmFlIgorU1JDUkVWX21hY2hpbmVfcWVtdW1pcHMgPz0gIjY1MTE2MzM5Y2ZkMjEwOTkwYzljNDcxMGNkZmVjM2ViZDU5YWJiMGUiCitTUkNSRVZfbWFjaGluZV9xZW11cHBjID89ICIzMDgxNjkwNzY1M2I1N2YxZjNkNWY5YTdhMmY2MzM5YmFiMTRhNjgwIgorU1JDUkVWX21hY2hpbmVfcWVtdXg4NiA/PSAiZjRkMDkwMGIyODUxZTgyOWU5OTBlMGY2NGIwOWVkM2I4ZTM1NWZhZSIKK1NSQ1JFVl9tYWNoaW5lX3FlbXV4ODYtNjQgPz0gImY0ZDA5MDBiMjg1MWU4MjllOTkwZTBmNjRiMDllZDNiOGUzNTVmYWUiCitTUkNSRVZfbWFjaGluZV9xZW11bWlwczY0ID89ICJmN2EwYjUzMmI2YWM4MTc1N2Q4NWIwYzlhOTI4ZjQ1YTg3YzllMzY0IgorU1JDUkVWX21hY2hpbmUgPz0gImY0ZDA5MDBiMjg1MWU4MjllOTkwZTBmNjRiMDllZDNiOGUzNTVmYWUiCitTUkNSRVZfbWV0YSA/PSAiM2MzMTk3ZTY1YjZmMmY1NTE0ODUzYzFmZTc4YWU4ZmZjMTMxYjAyYyIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjEuZ2l0O25hbWU9bWFjaGluZTticmFuY2g9JHtLQlJBTkNIfTsgXAogICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTtkZXN0c3VmZml4PSR7S01FVEF9IgogCi1MSU5VWF9WRVJTSU9OID89ICI0LjEuMTgiCitMSU5VWF9WRVJTSU9OID89ICI0LjEuMzMiCiAKIFBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYgppbmRleCAzYzVlZTFiLi5lM2EzZDkwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiCkBAIC0xMSwyMCArMTEsMjAgQEAKIEtCUkFOQ0hfcWVtdXg4Ni02NCA/PSAic3RhbmRhcmQvYmFzZSIKIEtCUkFOQ0hfcWVtdW1pcHM2NCA/PSAic3RhbmRhcmQvbXRpLW1hbHRhNjQiCiAKLVNSQ1JFVl9tYWNoaW5lX3FlbXVhcm0gPz0gImVjOTE2N2JjYjBjY2Q0ODk3MTc3YzVlMjM1YWY2OGI1ODkwYWEzMjYiCi1TUkNSRVZfbWFjaGluZV9xZW11YXJtNjQgPz0gIjFhNzJjZWM4MzRkZTJjODBiNTU2M2Y4YWZiZWVhNzY2NGZkNWVlMDUiCi1TUkNSRVZfbWFjaGluZV9xZW11bWlwcyA/PSAiOTAwZjk4ZDNhYjY0OThiYzdmNGZmNmI3YTQ4OWRiM2JjYTRlNjQxNyIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVwcGMgPz0gIjFhNzJjZWM4MzRkZTJjODBiNTU2M2Y4YWZiZWVhNzY2NGZkNWVlMDUiCi1TUkNSRVZfbWFjaGluZV9xZW11eDg2ID89ICIxYTcyY2VjODM0ZGUyYzgwYjU1NjNmOGFmYmVlYTc2NjRmZDVlZTA1IgotU1JDUkVWX21hY2hpbmVfcWVtdXg4Ni02NCA/PSAiMWE3MmNlYzgzNGRlMmM4MGI1NTYzZjhhZmJlZWE3NjY0ZmQ1ZWUwNSIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzNjQgPz0gIjRiMDhkZmIxZmIzYmM3NjU5ZThmM2UxMzY2NTU5N2Q5YTlmMDgxNmQiCi1TUkNSRVZfbWFjaGluZSA/PSAiMWE3MmNlYzgzNGRlMmM4MGI1NTYzZjhhZmJlZWE3NjY0ZmQ1ZWUwNSIKLVNSQ1JFVl9tZXRhID89ICJiY2M2NTA5MDg0MGY1MWE2YWM5MzcyOTdiZTVjMjJmZTI2OGQwMWFiIgorU1JDUkVWX21hY2hpbmVfcWVtdWFybSA/PSAiMTg3YmNjMTNmMzAyM2MzYWUwYTNiYTVjNjlhZTg1YzRlNWU2OTNhYyIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVhcm02NCA/PSAiY2E2YTA4YmQ3Zjg2ZWJlZjExZjc2M2QyNmY3ODdmN2Q2NTI3MDQ3MyIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzID89ICIyZjI3MzU1NjQ5NWRkMjg3MWYwOGM3M2ZjM2Y0MGQxYWQ1NDZjNjM4IgorU1JDUkVWX21hY2hpbmVfcWVtdXBwYyA/PSAiY2E2YTA4YmQ3Zjg2ZWJlZjExZjc2M2QyNmY3ODdmN2Q2NTI3MDQ3MyIKK1NSQ1JFVl9tYWNoaW5lX3FlbXV4ODYgPz0gImNhNmEwOGJkN2Y4NmViZWYxMWY3NjNkMjZmNzg3ZjdkNjUyNzA0NzMiCitTUkNSRVZfbWFjaGluZV9xZW11eDg2LTY0ID89ICJjYTZhMDhiZDdmODZlYmVmMTFmNzYzZDI2Zjc4N2Y3ZDY1MjcwNDczIgorU1JDUkVWX21hY2hpbmVfcWVtdW1pcHM2NCA/PSAiMGExOWNhY2Y1NzM4ODc2NjY2YTRiNTMwYTlmYTE0ZjA1YjM1NTI5OSIKK1NSQ1JFVl9tYWNoaW5lID89ICJjYTZhMDhiZDdmODZlYmVmMTFmNzYzZDI2Zjc4N2Y3ZDY1MjcwNDczIgorU1JDUkVWX21ldGEgPz0gIjMwMzAzMzBiMDY2YTMzY2UyMTE2NGE4YjMwZDA1MDNjZjlmNjhlNWIiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8tNC40LmdpdDtuYW1lPW1hY2hpbmU7YnJhbmNoPSR7S0JSQU5DSH07IFwKICAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00LjQ7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKIAotTElOVVhfVkVSU0lPTiA/PSAiNC40LjMiCitMSU5VWF9WRVJTSU9OID89ICI0LjQuMjYiCiAKIFBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzc3OGI5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC44LmJiCkBAIC0wLDAgKzEsNDQgQEAKK0tCUkFOQ0ggPz0gInN0YW5kYXJkL2Jhc2UiCisKK3JlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCisKKyMgYm9hcmQgc3BlY2lmaWMgYnJhbmNoZXMKK0tCUkFOQ0hfcWVtdWFybSAgPz0gInN0YW5kYXJkL2FybS12ZXJzYXRpbGUtOTI2ZWpzIgorS0JSQU5DSF9xZW11YXJtNjQgPz0gInN0YW5kYXJkL3FlbXVhcm02NCIKK0tCUkFOQ0hfcWVtdW1pcHMgPz0gInN0YW5kYXJkL210aS1tYWx0YTMyIgorS0JSQU5DSF9xZW11cHBjICA/PSAic3RhbmRhcmQvcWVtdXBwYyIKK0tCUkFOQ0hfcWVtdXg4NiAgPz0gInN0YW5kYXJkL2Jhc2UiCitLQlJBTkNIX3FlbXV4ODYtNjQgPz0gInN0YW5kYXJkL2Jhc2UiCitLQlJBTkNIX3FlbXVtaXBzNjQgPz0gInN0YW5kYXJkL210aS1tYWx0YTY0IgorCitTUkNSRVZfbWFjaGluZV9xZW11YXJtID89ICI0Y2M1NDRhZDA5YWQ3MDQzMjJjYjY2ZmU0YmExOTdhNmEwNWRjNzFmIgorU1JDUkVWX21hY2hpbmVfcWVtdWFybTY0ID89ICIxYWRmOWQzNjMzOGRjM2M2M2NkYmY2Zjk4YmNiZGM3YmJhNDJhNzk0IgorU1JDUkVWX21hY2hpbmVfcWVtdW1pcHMgPz0gImMyODU5NjlkNGY5Mzc2YTY3MTE2N2VjZjM5NzU3OGM4YWQzZTZhNzUiCitTUkNSRVZfbWFjaGluZV9xZW11cHBjID89ICIxYWRmOWQzNjMzOGRjM2M2M2NkYmY2Zjk4YmNiZGM3YmJhNDJhNzk0IgorU1JDUkVWX21hY2hpbmVfcWVtdXg4NiA/PSAiMWFkZjlkMzYzMzhkYzNjNjNjZGJmNmY5OGJjYmRjN2JiYTQyYTc5NCIKK1NSQ1JFVl9tYWNoaW5lX3FlbXV4ODYtNjQgPz0gIjFhZGY5ZDM2MzM4ZGMzYzYzY2RiZjZmOThiY2JkYzdiYmE0MmE3OTQiCitTUkNSRVZfbWFjaGluZV9xZW11bWlwczY0ID89ICI2NGY5NmJhNTMwZTU4NDU2MDcwZjI2YjBmM2ZjY2UzZjY0OTg4YjcyIgorU1JDUkVWX21hY2hpbmUgPz0gIjFhZGY5ZDM2MzM4ZGMzYzYzY2RiZjZmOThiY2JkYzdiYmE0MmE3OTQiCitTUkNSRVZfbWV0YSA/PSAiODMxMTBkOTRlZGViODU2YTM2NjdiNjI5MDNlZDRhZTkxYzI0MTE3ZCIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjguZ2l0O25hbWU9bWFjaGluZTticmFuY2g9JHtLQlJBTkNIfTsgXAorICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuODtkZXN0c3VmZml4PSR7S01FVEF9IgorCitMSU5VWF9WRVJTSU9OID89ICI0LjguMyIKKworUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKKworS01FVEEgPSAia2VybmVsLW1ldGEiCitLQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKKworS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgorCitDT01QQVRJQkxFX01BQ0hJTkUgPSAicWVtdWFybXxxZW11YXJtNjR8cWVtdXg4NnxxZW11cHBjfHFlbXVtaXBzfHFlbXVtaXBzNjR8cWVtdXg4Ni02NCIKKworIyBGdW5jdGlvbmFsaXR5IGZsYWdzCitLRVJORUxfRVhUUkFfRkVBVFVSRVMgPz0gImZlYXR1cmVzL25ldGZpbHRlci9uZXRmaWx0ZXIuc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtLRVJORUxfRVhUUkFfRkVBVFVSRVN9IgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgY2ZnL3ZpcnRpby5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODY9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2LTY0PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm14MzIiLCAiIGNmZy94MzIuc2NjIiwgIiIgLGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2UvMDAwMS1GaXgtaW52YWxpZC1wb2ludGVyLWZyZWUtd2l0aC10cmFjZS1jb2xsZWN0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZS8wMDAxLUZpeC1pbnZhbGlkLXBvaW50ZXItZnJlZS13aXRoLXRyYWNlLWNvbGxlY3Rpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlMmM0ZTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZS8wMDAxLUZpeC1pbnZhbGlkLXBvaW50ZXItZnJlZS13aXRoLXRyYWNlLWNvbGxlY3Rpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1Gcm9tIGU0Y2FkOTAwOTk0Y2YyODZkOTcxNzk2YTk0N2ZlYTc4MmRmYzY2NTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBGcmFuY2lzIEdpcmFsZGVhdSA8ZnJhbmNpcy5naXJhbGRlYXVAZ21haWwuY29tPgotRGF0ZTogTW9uLCAxNSBKdW4gMjAxNSAxMTo0MzowMiAtMDQwMAotU3ViamVjdDogW1BBVENIXSBGaXggaW52YWxpZCBwb2ludGVyIGZyZWUgd2l0aCB0cmFjZSBjb2xsZWN0aW9uCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi0KLVBhdGNoIHByb3Bvc2VkIGJ5IExpIFJvbmdRaW5nIHJlbGF0ZWQgdG8gYnVnIyA3OTAKLQotU2lnbmVkLW9mZi1ieTogTWlrYWVsIEJlY2tpdXMgPG1pa2FlbC5iZWNraXVzQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBGcmFuY2lzIEdpcmFsZGVhdSA8ZnJhbmNpcy5naXJhbGRlYXVAZ21haWwuY29tPgotLS0tCi0gbGliL2NvbnRleHQuYyB8IDggKysrLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliL2NvbnRleHQuYyBiL2xpYi9jb250ZXh0LmMKLWluZGV4IDQ1YWFiMzQuLjhkMzc3MGYgMTAwNjQ0Ci0tLS0gYS9saWIvY29udGV4dC5jCi0rKysgYi9saWIvY29udGV4dC5jCi1AQCAtNzksNyArNzksNyBAQCBpbnQgYnRfY29udGV4dF9hZGRfdHJhY2Uoc3RydWN0IGJ0X2NvbnRleHQgKmN0eCwgY29uc3QgY2hhciAqcGF0aCwKLSAJc3RydWN0IGJ0X3RyYWNlX2Rlc2NyaXB0b3IgKnRkOwotIAlzdHJ1Y3QgYnRfZm9ybWF0ICpmbXQ7Ci0gCXN0cnVjdCBidF90cmFjZV9oYW5kbGUgKmhhbmRsZTsKLS0JaW50IHJldCwgY2xvc2VyZXQ7Ci0rCWludCByZXQ7Ci0gCi0gCWlmICghY3R4IHx8ICFmb3JtYXRfbmFtZSB8fCAoIXBhdGggJiYgIXN0cmVhbV9saXN0KSkKLSAJCXJldHVybiAtRUlOVkFMOwotQEAgLTE1OSwxMCArMTU5LDggQEAgaW50IGJ0X2NvbnRleHRfYWRkX3RyYWNlKHN0cnVjdCBidF9jb250ZXh0ICpjdHgsIGNvbnN0IGNoYXIgKnBhdGgsCi0gCXJldHVybiBoYW5kbGUtPmlkOwotIAotIGVycm9yOgotLQljbG9zZXJldCA9IGZtdC0+Y2xvc2VfdHJhY2UodGQpOwotLQlpZiAoY2xvc2VyZXQpIHsKLS0JCWZwcmludGYoc3RkZXJyLCAiRXJyb3IgaW4gY2xvc2VfdHJhY2UgY2FsbGJhY2tcbiIpOwotLQl9Ci0rCWlmIChoYW5kbGUpCi0rCQlidF9jb250ZXh0X3JlbW92ZV90cmFjZShjdHgsIGhhbmRsZS0+aWQpOwotIGVuZDoKLSAJcmV0dXJuIHJldDsKLSB9Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2UvMDAwMS1sdHRuZy1saXZlLUluY2x1ZGUtc3lzLXBhcmFtLmgtZm9yLU1BWE5BTUxFTi1kZWZpbnRpLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZS8wMDAxLWx0dG5nLWxpdmUtSW5jbHVkZS1zeXMtcGFyYW0uaC1mb3ItTUFYTkFNTEVOLWRlZmludGkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViMTZjZDEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZS8wMDAxLWx0dG5nLWxpdmUtSW5jbHVkZS1zeXMtcGFyYW0uaC1mb3ItTUFYTkFNTEVOLWRlZmludGkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIDgzMzFiODc4NDVjYWZkZGE0MGU1OWE2ODJmMmNhODEyMGVkMGM0NzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVGh1LCAzMSBEZWMgMjAxNSAwODoxNzo0MCArMDAwMAotU3ViamVjdDogW1BBVENIXSBsdHRuZy1saXZlOiBJbmNsdWRlIHN5cy9wYXJhbS5oIGZvciBNQVhOQU1MRU4gZGVmaW50aW9uCi0KLWV4cG9zZWQgb24gbXVzbCBiYXNlZCBzeXN0ZW1zCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogcGVuZGluZwotCi0gZm9ybWF0cy9sdHRuZy1saXZlL2x0dG5nLWxpdmUuaCB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvZm9ybWF0cy9sdHRuZy1saXZlL2x0dG5nLWxpdmUuaCBiL2Zvcm1hdHMvbHR0bmctbGl2ZS9sdHRuZy1saXZlLmgKLWluZGV4IDRhYjY0MWQuLjgwOGVkMmIgMTAwNjQ0Ci0tLS0gYS9mb3JtYXRzL2x0dG5nLWxpdmUvbHR0bmctbGl2ZS5oCi0rKysgYi9mb3JtYXRzL2x0dG5nLWxpdmUvbHR0bmctbGl2ZS5oCi1AQCAtMjUsNiArMjUsNyBAQAotICAqLwotIAotICNpbmNsdWRlIDxzdGRpbnQuaD4KLSsjaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0gI2luY2x1ZGUgImx0dG5nLXZpZXdlci1hYmkuaCIKLSAKLSAjZGVmaW5lIExUVE5HX0RFRkFVTFRfTkVUV09SS19WSUVXRVJfUE9SVAk1MzQ0Ci0tLSAKLTIuNi40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2VfMS4zLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlXzEuMy4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzY2MDI2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2VfMS4zLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1TVU1NQVJZID0gIkJhYmVsdHJhY2UgLSBUcmFjZSBGb3JtYXQgQmFiZWwgVG93ZXIiCi1ERVNDUklQVElPTiA9ICJCYWJlbHRyYWNlIHByb3ZpZGVzIHRyYWNlIHJlYWQgYW5kIHdyaXRlIGxpYnJhcmllcyBpbiBob3N0IHNpZGUsIGFzIHdlbGwgYXMgYSB0cmFjZSBjb252ZXJ0ZXIsIHdoaWNoIHVzZWQgdG8gY29udmVydCBMVFRuZyAyLjAgdHJhY2VzIGludG8gaHVtYW4tcmVhZGFibGUgbG9nLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZWZmaWNpb3MuY29tL2JhYmVsdHJhY2UvIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MubHR0bmcub3JnL3Byb2plY3RzL2JhYmVsdHJhY2UiCi0KLUxJQ0VOU0UgPSAiTUlUICYgR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03NmJhMTVkZDc2YTI0OGUxZGQ1MjZiY2EwZTIxMjVmYSIKLQotREVQRU5EUyA9ICJnbGliLTIuMCB1dGlsLWxpbnV4IHBvcHQgYmlzb24tbmF0aXZlIGZsZXgtbmF0aXZlIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotU1JDUkVWID0gIjZlMmI5MDk2Yzc3MTM4NTkzMDk3MzM1YjliMjcyMDJkOTg5MTgwODkiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmVmZmljaW9zLmNvbS9iYWJlbHRyYWNlLmdpdDticmFuY2g9c3RhYmxlLTEuMyBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1pbnZhbGlkLXBvaW50ZXItZnJlZS13aXRoLXRyYWNlLWNvbGxlY3Rpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1sdHRuZy1saXZlLUluY2x1ZGUtc3lzLXBhcmFtLmgtZm9yLU1BWE5BTUxFTi1kZWZpbnRpLnBhdGNoIFwKLSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCSggY2QgJHtTfTsgJHtTfS9ib290c3RyYXAgKQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZV8xLjQuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2VfMS40LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZhZGViMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2VfMS40LjAuYmIKQEAgLTAsMCArMSwyMCBAQAorU1VNTUFSWSA9ICJCYWJlbHRyYWNlIC0gVHJhY2UgRm9ybWF0IEJhYmVsIFRvd2VyIgorREVTQ1JJUFRJT04gPSAiQmFiZWx0cmFjZSBwcm92aWRlcyB0cmFjZSByZWFkIGFuZCB3cml0ZSBsaWJyYXJpZXMgaW4gaG9zdCBzaWRlLCBhcyB3ZWxsIGFzIGEgdHJhY2UgY29udmVydGVyLCB3aGljaCB1c2VkIHRvIGNvbnZlcnQgTFRUbmcgMi4wIHRyYWNlcyBpbnRvIGh1bWFuLXJlYWRhYmxlIGxvZy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmVmZmljaW9zLmNvbS9iYWJlbHRyYWNlLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmx0dG5nLm9yZy9wcm9qZWN0cy9iYWJlbHRyYWNlIgorCitMSUNFTlNFID0gIk1JVCAmIEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzZiYTE1ZGQ3NmEyNDhlMWRkNTI2YmNhMGUyMTI1ZmEiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgdXRpbC1saW51eCBwb3B0IGJpc29uLW5hdGl2ZSBmbGV4LW5hdGl2ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5lZmZpY2lvcy5jb20vZmlsZXMvYmFiZWx0cmFjZS9iYWJlbHRyYWNlLSR7UFZ9LnRhci5iejIgXAorIgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWRlYnVnLWluZm8iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJmYTk5MDY0MDQ4YWY1YzljNmZmMDBlNDg5YWM4MDljMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5NDY5ZWViMjI2MTdjZDEyNjY4NjgzYjA0YzI3MDAzZTUzMzdlOWFjNjZhZGU5MTQ5ODhkZjM2NDJmYzBkMGU0IgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy1tb2R1bGVzL01ha2VmaWxlLURvLW5vdC1mYWlsLWlmLUNPTkZJR19UUkFDRVBPSU5UUy1pcy1ub3QtZW4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy1tb2R1bGVzL01ha2VmaWxlLURvLW5vdC1mYWlsLWlmLUNPTkZJR19UUkFDRVBPSU5UUy1pcy1ub3QtZW4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmE5MWYzMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLW1vZHVsZXMvTWFrZWZpbGUtRG8tbm90LWZhaWwtaWYtQ09ORklHX1RSQUNFUE9JTlRTLWlzLW5vdC1lbi5wYXRjaApAQCAtMCwwICsxLDQ5IEBACitGcm9tIDFiMGU1NzRkNjgwMTAxMTA1YTZjMWU4OTMxYzc4ODI0ZjVhOTdhNDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgorRGF0ZTogTW9uLCA1IFNlcCAyMDE2IDE3OjA4OjU2ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlOiBEbyBub3QgZmFpbCBpZiBDT05GSUdfVFJBQ0VQT0lOVFMgaXMgbm90IGVuYWJsZWQKK09yZ2FuaXphdGlvbjogTy5TLiBTeXN0ZW1zIFNvZnR3YXJlIExUREEuCisKK1RoZSBsdHRuZy1tb2R1bGVzIGFyZSBiZWluZyBwdWxsZWQgYnkgdGhlIHRvb2xzLXByb2ZpbGUgaW1hZ2UgZmVhdHVyZSwKK2hvd2V2ZXIsIG5vdCBldmVyeSBrZXJuZWwgaGFzIHRoZSBDT05GSUdfVFJBQ0VQT0lOVFMgZmVhdHVyZSBlbmFibGVkLgorCitUaGlzIGNoYW5nZSBtYWtlcyB0aGUgYnVpbGQgZG8gbm90IGZhaWwgd2hlbiBDT05GSUdfVFJBQ0VQT0lOVFMgaXMgbm90CithdmFpbGFibGUsIGFsbG93aW5nIGl0IHRvIGJlIGtlcHQgYmVpbmcgcHVsbGVkIGJ5IGRlZmF1bHQuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KKy0tLQorIE1ha2VmaWxlIHwgOSArKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggODYwMjY0OS4uNzU1NTBjYyAxMDA2NDQKKy0tLSBhL01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAgLTgsMTAgKzgsNyBAQCBpZm5lcSAoJChLRVJORUxSRUxFQVNFKSwpCisgICAjIGFuZCBkZWZpbmVzIHRoZSBtb2R1bGVzIHRvIGJlIGJ1aWx0LgorIAorICAgaWZkZWYgQ09ORklHX0xPQ0FMVkVSU0lPTgkjIENoZWNrIGlmIGRvdC1jb25maWcgaXMgaW5jbHVkZWQuCistICAgIGlmZXEgKCQoQ09ORklHX1RSQUNFUE9JTlRTKSwpCistICAgICAgJChlcnJvciBUaGUgb3B0aW9uIENPTkZJR19UUkFDRVBPSU5UUyBuZWVkcyB0byBiZSBlbmFibGVkIGluIHlvdXIga2VybmVsIGNvbmZpZ3VyYXRpb24pCistICAgIGVuZGlmICMgQ09ORklHX1RSQUNFUE9JTlRTCistICBlbmRpZiAjIGlmZGVmIENPTkZJR19MT0NBTFZFUlNJT04KKysgICAgaWZuZXEgKCQoQ09ORklHX1RSQUNFUE9JTlRTKSwpCisgCisgICBUT1BfTFRUTkdfTU9EVUxFU19ESVIgOj0gJChzaGVsbCBkaXJuYW1lICQobGFzdHdvcmQgJChNQUtFRklMRV9MSVNUKSkpCisgCitAQCAtOTQsNiArOTEsMTAgQEAgaWZuZXEgKCQoS0VSTkVMUkVMRUFTRSksKQorICAgb2JqLSQoQ09ORklHX0xUVE5HKSArPSBsaWIvCisgICBvYmotJChDT05GSUdfTFRUTkcpICs9IHRlc3RzLworIAorKyAgICBlbHNlCisrICAgICAgJCh3YXJuaW5nIFRoZSBvcHRpb24gQ09ORklHX1RSQUNFUE9JTlRTIG5lZWRzIHRvIGJlIGVuYWJsZWQgaW4geW91ciBrZXJuZWwgY29uZmlndXJhdGlvbikKKysgICAgZW5kaWYgIyBDT05GSUdfVFJBQ0VQT0lOVFMKKysgIGVuZGlmICMgaWZkZWYgQ09ORklHX0xPQ0FMVkVSU0lPTgorIGVsc2UgIyBLRVJORUxSRUxFQVNFCisgCisgIyBUaGlzIHBhcnQgb2YgdGhlIE1ha2VmaWxlIGlzIHVzZWQgd2hlbiB0aGUgJ21ha2UnIGNvbW1hbmQgaXMgcnVubmVkIGluIHRoZQorLS0gCisyLjEuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy1tb2R1bGVzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLW1vZHVsZXNfZ2l0LmJiCmluZGV4IDJlYjFhNTEuLjcwMTQ1NDEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLW1vZHVsZXNfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLW1vZHVsZXNfZ2l0LmJiCkBAIC04LDEyICs4LDEzIEBACiAKIGluaGVyaXQgbW9kdWxlCiAKLVNSQ1JFViA9ICI0NWUwZWJkOTFmOTk1Y2M3M2MyYjBkNWM2MGNmOWQxMmU4YzgzOGJmIgotUFYgPSAiMi43LjErZ2l0JHtTUkNQVn0iCitTUkNSRVYgPSAiNmU0ZmM2ZjM2ZDY4ZmIzYzhkNDAxMTNmODY3MGViNmU5YzhmZmQ3NiIKK1BWID0gIjIuOC4wK2dpdCR7U1JDUFZ9IgogCiBDT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NHxpLjg2fHBvd2VycGN8YWFyY2g2NHxtaXBzfG5pb3MyfGFybSkuKi1saW51eCcKIAotU1JDX1VSSSA9ICJnaXQ6Ly9naXQubHR0bmcub3JnL2x0dG5nLW1vZHVsZXMuZ2l0O2JyYW5jaD1zdGFibGUtMi43IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXQubHR0bmcub3JnL2x0dG5nLW1vZHVsZXMuZ2l0O2JyYW5jaD1zdGFibGUtMi44IFwKKyAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLURvLW5vdC1mYWlsLWlmLUNPTkZJR19UUkFDRVBPSU5UUy1pcy1ub3QtZW4ucGF0Y2giCiAKIGV4cG9ydCBJTlNUQUxMX01PRF9ESVI9Imtlcm5lbC9sdHRuZy1tb2R1bGVzIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy8wMDAxLUZpeC1lcnJvci5oLWNvbW1vbi1lcnJvci5oLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHMvMDAwMS1GaXgtZXJyb3IuaC1jb21tb24tZXJyb3IuaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzhhOWIyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHMvMDAwMS1GaXgtZXJyb3IuaC1jb21tb24tZXJyb3IuaC5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIDY3MTJkYjYxN2ZlOTE1NWVhMjM2ZjY4NDBjMmJkMThkYmVjNGM4NzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaWNoYWVsIEplYW5zb24gPG1qZWFuc29uQGVmZmljaW9zLmNvbT4KK0RhdGU6IFdlZCwgMTUgSnVuIDIwMTYgMTc6MTg6MDMgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4OiBlcnJvci5oIC0+IGNvbW1vbi9lcnJvci5oCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogTWljaGFlbCBKZWFuc29uIDxtamVhbnNvbkBlZmZpY2lvcy5jb20+CitTaWduZWQtb2ZmLWJ5OiBKw6lyw6ltaWUgR2FsYXJuZWF1IDxqZXJlbWllLmdhbGFybmVhdUBlZmZpY2lvcy5jb20+CitTaWduZWQtb2ZmLWJ5OiBQZXRlciBMaXUgPHBldGVyLngubGl1QGV4dGVybmFsLmF0bGFzY29wY28uY29tPgorLS0tCisgc3JjL2Jpbi9sdHRuZy1zZXNzaW9uZC9hZ2VudC5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9sdHRuZy1zZXNzaW9uZC9hZ2VudC5jIGIvc3JjL2Jpbi9sdHRuZy1zZXNzaW9uZC9hZ2VudC5jCitpbmRleCA3Y2JiYmRlLi4zMTBhN2U4IDEwMDY0NAorLS0tIGEvc3JjL2Jpbi9sdHRuZy1zZXNzaW9uZC9hZ2VudC5jCisrKysgYi9zcmMvYmluL2x0dG5nLXNlc3Npb25kL2FnZW50LmMKK0BAIC0yOSw3ICsyOSw3IEBACisgI2luY2x1ZGUgImFnZW50LmgiCisgI2luY2x1ZGUgInVzdC1hcHAuaCIKKyAjaW5jbHVkZSAidXRpbHMuaCIKKy0jaW5jbHVkZSAiZXJyb3IuaCIKKysjaW5jbHVkZSAiY29tbW9uL2Vycm9yLmgiCisgCisgI2RlZmluZSBBR0VOVF9SRVRfQ09ERV9JTkRFWChjb2RlKSAoY29kZSAtIEFHRU5UX1JFVF9DT0RFX1NVQ0NFU1MpCisgCistLSAKKzEuOS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzL1JldmVydC1CdWlsZC1sb29rLWZvci1weXRob24tMy4wLXdoZW4tYnVpbGRpbmctcHl0aG8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy9SZXZlcnQtQnVpbGQtbG9vay1mb3ItcHl0aG9uLTMuMC13aGVuLWJ1aWxkaW5nLXB5dGhvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDVjMDRjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzL1JldmVydC1CdWlsZC1sb29rLWZvci1weXRob24tMy4wLXdoZW4tYnVpbGRpbmctcHl0aG8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1Gcm9tOiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgotRGF0ZTogRnJpLCA0IERlYyAyMDE1IDE2OjExOjQxICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFJldmVydCAiQnVpbGQ6IGxvb2sgZm9yIHB5dGhvbiA+PSAzLjAgd2hlbiBidWlsZGluZyBweXRob24gYmluZGluZ3MiCi1Pcmdhbml6YXRpb246IE8uUy4gU3lzdGVtcyBTb2Z0d2FyZSBMVERBLgotCi1UaGlzIHJldmVydHMgY29tbWl0IDIyNzcwM2EyY2VhZGEzYzEwNGVkZDU2NzU2ZDQ4NDU1Y2E0YzI3MWEuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgotLS0tCi0gY29uZmlndXJlLmFjIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA0ZGVlNGI0Li42NjA4YmNkIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0zMzksNyArMzM5LDcgQEAgQU1fQ09ORElUSU9OQUwoW1BZVEhPTl9CSU5ESU5HXSwgW3Rlc3QgIngke2VuYWJsZV9weXRob25fYmluZGluZzoteWVzfSIgPSB4eWVzXSkKLSAKLSBpZiB0ZXN0ICJ4JHtlbmFibGVfcHl0aG9uX2JpbmRpbmc6LXllc30iID0geHllczsgdGhlbgotICAgQVhfUEtHX1NXSUcoJHN3aWdfdmVyc2lvbiwgW10sIFsgQUNfTVNHX0VSUk9SKFtTV0lHICRzd2lnX3ZlcnNpb24gb3IgbmV3ZXIgaXMgbmVlZGVkXSkgXSkKLS0gIEFNX1BBVEhfUFlUSE9OKFszLjBdKQotKyAgQU1fUEFUSF9QWVRIT04KLSAKLSAgIEFDX0FSR19WQVIoW1BZVEhPTl9JTkNMVURFXSwgW0luY2x1ZGUgZmxhZ3MgZm9yIHB5dGhvbiwgYnlwYXNzaW5nIHB5dGhvbi1jb25maWddKQotICAgQUNfQVJHX1ZBUihbUFlUSE9OX0NPTkZJR10sIFtQYXRoIHRvIHB5dGhvbi1jb25maWddKQotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy9ydW4tcHRlc3QgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy9ydW4tcHRlc3QKaW5kZXggZTc1ODgxNS4uNjIzMDA2MyAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHMvcnVuLXB0ZXN0CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzL3J1bi1wdGVzdApAQCAtMSw0ICsxLDUgQEAKICMhL2Jpbi9zaAotCi1tYWtlIC1DIHRlc3RzIGluc3RhbGxjaGVjawotCisjIFdpdGhvdXQgLS1pZ25vcmUtZXhpdCwgdGhlIHRhcCBoYXJuZXNzIGNhdXNlcyBhbnkgRkFJTHMgd2l0aGluIGEKKyMgdGVzdCBwbGFuIHRvIHJhaXNlIEVSUk9SczsgdGhpcyBpcyBqdXN0IG5vaXNlLgorbWFrZWFyZ3M9IkxPR19EUklWRVJfRkxBR1M9LS1pZ25vcmUtZXhpdCIKK21ha2UgLXQgYWxsID4vZGV2L251bGwgMj4mMSAmJiBleGVjIG1ha2UgLXMgJG1ha2VhcmdzIGNoZWNrIDI+L2Rldi9udWxsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy9ydW50ZXN0LTIuNC4wLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHMvcnVudGVzdC0yLjQuMC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTU4YmNlNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy9ydW50ZXN0LTIuNC4wLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDU4NGY1OWIuLmMyYmNhYmQgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC0xMiwzICsxMiw5IEBAIGRpc3RfZG9jX0RBVEEgPSBMSUNFTlNFIFwKLSBkaXN0X25vaW5zdF9EQVRBID0gQ29kaW5nU3R5bGUKLSAKLSBFWFRSQV9ESVNUID0gZXh0cmFzL2x0dG5nLWJhc2hfY29tcGxldGlvbiBncGwtMi4wLnR4dCBsZ3BsLTIuMS50eHQKLSsKLStpbnN0YWxsLXB0ZXN0OgotKwljcCAtciAkKHNyY2RpcikvdGVzdHMgJChERVNURElSKQotKwlmb3IgbSBpbiAkJChmaW5kICQoREVTVERJUikvdGVzdHMgLW5hbWUgTWFrZWZpbGUpOyBkbyBcCi0rICAgICAgICAgIHNlZCAtaSAtZSAnc3xeTWFrZWZpbGU6fF9NYWtlZmlsZTp8JyAkJG07IFwKLSsgICAgICAgIGRvbmUKLWRpZmYgLS1naXQgYS90ZXN0cy9ydW4uc2ggYi90ZXN0cy9ydW4uc2gKLWluZGV4IGM2YzUwZmQuLjY0NTUzNTkgMTAwNzU1Ci0tLS0gYS90ZXN0cy9ydW4uc2gKLSsrKyBiL3Rlc3RzL3J1bi5zaAotQEAgLTE5LDQgKzE5LDcgQEAKLSAKLSBbIC16ICIkMSIgXSAmJiBlY2hvICJFcnJvcjogTm8gdGVzdGxpc3QuIFBsZWFzZSBzcGVjaWZ5IGEgdGVzdGxpc3QgdG8gcnVuLiIgJiYgZXhpdCAxCi0gCi0tcHJvdmUgLS1tZXJnZSAtLWV4ZWMgJycgLSA8ICQxCi0rcHJvdmUgLS1tZXJnZSAtdiAtLWV4ZWMgJycgLSA8ICQxIHwgc2VkIFwKLSsgIC1lICdzfF5vayBcKC4qXCl8UEFTUzogXDF8JyBcCi0rICAtZSAnc3xebm90IG9rIFwoLipcKXxGQUlMOiBcMXwnIFwKLSsgIHwgZWdyZXAgLWggJ1BBU1N8RkFJTCcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzL3N0b3AtdXNpbmctU0lHVU5VU0VELnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHMvc3RvcC11c2luZy1TSUdVTlVTRUQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkNGY3ZDEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHMvc3RvcC11c2luZy1TSUdVTlVTRUQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1Gcm9tIDFmNTQxODFjMmRmMWZiOTJjMzMyM2E2ZGJmODI3M2ZiNjZiODgzYjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/Sj1DMz1BOXI9QzM9QTltaWU9MjBHYWxhcm5lYXU/PQotIDxqZXJlbWllLmdhbGFybmVhdUBlZmZpY2lvcy5jb20+Ci1EYXRlOiBTYXQsIDE3IE9jdCAyMDE1IDE5OjQxOjQ3IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFBvcnQ6IERvbid0IHVzZSBTSUdVTlVTRUQgd2hpY2ggaXMgbm90IGRlZmluZWQgb24gU29sYXJpcwotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotT3JnYW5pemF0aW9uOiBPLlMuIFN5c3RlbXMgU29mdHdhcmUgTFREQS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbMi44LjBdCi0KLVNpZ25lZC1vZmYtYnk6IErDqXLDqW1pZSBHYWxhcm5lYXUgPGplcmVtaWUuZ2FsYXJuZWF1QGVmZmljaW9zLmNvbT4KLS0tLQotIHNyYy9jb21tb24vcnVuYXMuYyB8IDE4ICsrKysrLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi9ydW5hcy5jIGIvc3JjL2NvbW1vbi9ydW5hcy5jCi1pbmRleCA1N2Y3MzgyLi4wODI1NDcwIDEwMDY0NAotLS0tIGEvc3JjL2NvbW1vbi9ydW5hcy5jCi0rKysgYi9zcmMvY29tbW9uL3J1bmFzLmMKLUBAIC01MzAsMjEgKzUzMCwxMyBAQCBpbnQgcnVuX2FzX3JtZGlyX3JlY3Vyc2l2ZShjb25zdCBjaGFyICpwYXRoLCB1aWRfdCB1aWQsIGdpZF90IGdpZCkKLSBzdGF0aWMKLSBpbnQgcmVzZXRfc2lnaGFuZGxlcih2b2lkKQotIHsKLS0JaW50IHNpZywgcmV0ID0gMDsKLSsJaW50IHNpZzsKLSAKLS0JZm9yIChzaWcgPSBTSUdIVVA7IHNpZyA8PSBTSUdVTlVTRUQ7IHNpZysrKSB7Ci0tCQkvKiBTa2lwIHVuYmxvY2thYmxlIHNpZ25hbHMuICovCi0tCQlpZiAoc2lnID09IFNJR0tJTEwgfHwgc2lnID09IFNJR1NUT1ApIHsKLS0JCQljb250aW51ZTsKLS0JCX0KLS0JCWlmIChzaWduYWwoc2lnLCBTSUdfREZMKSA9PSBTSUdfRVJSKSB7Ci0tCQkJUEVSUk9SKCJyZXNldCBzaWduYWwgJWQiLCBzaWcpOwotLQkJCXJldCA9IC0xOwotLQkJCWdvdG8gZW5kOwotLQkJfQotKwlEQkcoIlJlc2V0dGluZyBydW5fYXMgd29ya2VyIHNpZ25hbCBoYW5kbGVycyB0byBkZWZhdWx0Iik7Ci0rCWZvciAoc2lnID0gMTsgc2lnIDw9IDMxOyBzaWcrKykgewotKwkJKHZvaWQpIHNpZ25hbChzaWcsIFNJR19ERkwpOwotIAl9Ci0tZW5kOgotLQlyZXR1cm4gcmV0OwotKwlyZXR1cm4gMDsKLSB9Ci0gCi0gc3RhdGljCi0tLSAKLTIuNi4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzX2dpdC5iYgppbmRleCA4YmQwOTg5Li5iZmM2NTdiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29sc19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHNfZ2l0LmJiCkBAIC05LDQwICs5LDQxIEBACiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ncGwtMi4wLnR4dDttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGdwbC0yLjEudHh0O21kNT0wZjBkNzE1MDBlNmE1N2ZkMjRkODI1ZjMzMjQyYjljYSIKIAotREVQRU5EUyA9ICJsaWJ1cmN1IHBvcHQgbGlieG1sMiIKK0RFUEVORFMgPSAibGlidXJjdSBwb3B0IGxpYnhtbDIgdXRpbC1saW51eCIKIFJERVBFTkRTXyR7UE59ID0gImxpYmdjYyIKLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIHBlcmwgYmFzaCIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIHBlcmwgYmFzaCBnYXdrICR7UE59IGJhYmVsdHJhY2UgcHJvY3BzIgorIyBiYWJlbHN0YXRzLnBsIHdhbnRzIGdldG9wdC1sb25nCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAicGVybC1tb2R1bGUtZ2V0b3B0LWxvbmciCiAKLVNSQ1JFViA9ICJhOTBmMmMxZTEwYjc1OTc4MjY1M2E4MTgxNTYyNWU5ZDFiYmI3NWNhIgotUFYgPSAiMi43LjErZ2l0JHtTUkNQVn0iCitTUkNSRVYgPSAiZDExZTBkYmEwZGY5MDI0Yjg2MTNjNTFlMTY3YTM3OWI5MWU4YjIwYiIKK1BWID0gIjIuOC4xK2dpdCR7U1JDUFZ9IgogCi1QWVRIT05fT1BUSU9OID0gImFtX2N2X3B5dGhvbl9weWV4ZWNkaXI9JyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0vc2l0ZS1wYWNrYWdlcycgXAotICAgICAgICAgICAgICAgICBhbV9jdl9weXRob25fcHl0aG9uZGlyPScke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059L3NpdGUtcGFja2FnZXMnIFwKLSAgICAgICAgICAgICAgICAgUFlUSE9OX0lOQ0xVREU9Jy1JJHtTVEFHSU5HX0lOQ0RJUn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059JyBcCitQWVRIT05fT1BUSU9OID0gImFtX2N2X3B5dGhvbl9weWV4ZWNkaXI9JyR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9JyBcCisgICAgICAgICAgICAgICAgIGFtX2N2X3B5dGhvbl9weXRob25kaXI9JyR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9JyBcCisgICAgICAgICAgICAgICAgIFBZVEhPTl9JTkNMVURFPSctSSR7U1RBR0lOR19JTkNESVJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfSR7UFlUSE9OX0FCSX0nIFwKICIKIFBBQ0tBR0VDT05GSUcgPz89ICJsdHRuZy11c3QiCi1QQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLS1lbmFibGUtcHl0aG9uLWJpbmRpbmdzICR7UFlUSE9OX09QVElPTn0sLHB5dGhvbiBzd2lnLW5hdGl2ZSIKLVBBQ0tBR0VDT05GSUdbbHR0bmctdXN0XSA9ICItLWVuYWJsZS1sdHRuZy11c3QsIC0tZGlzYWJsZS1sdHRuZy11c3QsIGx0dG5nLXVzdCIKK1BBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICItLWVuYWJsZS1weXRob24tYmluZGluZ3MgJHtQWVRIT05fT1BUSU9OfSwscHl0aG9uMyBzd2lnLW5hdGl2ZSIKK1BBQ0tBR0VDT05GSUdbbHR0bmctdXN0XSA9ICItLXdpdGgtbHR0bmctdXN0LCAtLXdpdGhvdXQtbHR0bmctdXN0LCBsdHRuZy11c3QiCiBQQUNLQUdFQ09ORklHW2ttb2RdID0gIi0tZW5hYmxlLWttb2QsIC0tZGlzYWJsZS1rbW9kLCBrbW9kIgorUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtbWFuLXBhZ2VzLCAtLWRpc2FibGUtbWFuLXBhZ2VzLCBhc2NpaWRvYy1uYXRpdmUiCiBQQUNLQUdFQ09ORklHX3JlbW92ZV9saWJjLW11c2wgPSAibHR0bmctdXN0IgogCi1TUkNfVVJJID0gImdpdDovL2dpdC5sdHRuZy5vcmcvbHR0bmctdG9vbHMuZ2l0O2JyYW5jaD1zdGFibGUtMi43IFwKLSAgICAgICAgICAgZmlsZTovL1JldmVydC1CdWlsZC1sb29rLWZvci1weXRob24tMy4wLXdoZW4tYnVpbGRpbmctcHl0aG8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc3RvcC11c2luZy1TSUdVTlVTRUQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVudGVzdC0yLjQuMC5wYXRjaCBcCitTUkNfVVJJID0gImdpdDovL2dpdC5sdHRuZy5vcmcvbHR0bmctdG9vbHMuZ2l0O2JyYW5jaD1zdGFibGUtMi44IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWVycm9yLmgtY29tbW9uLWVycm9yLmgucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcHRlc3QgcGtnY29uZmlnIHVzZXJhZGQKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwdGVzdCBwa2djb25maWcgdXNlcmFkZCBweXRob24zLWRpcgogCiBVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgogR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAidHJhY2luZyIKIAogRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9sdHRuZy9saWJleGVjLyogJHtkYXRhZGlyfS94bWwvbHR0bmcgXAotICAgICAgICAgICAgICAgICR7bGliZGlyfS9weXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0vc2l0ZS1wYWNrYWdlcy8qIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059L3NpdGUtcGFja2FnZXMvKi5hIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059L3NpdGUtcGFja2FnZXMvKi5sYSIKKyAgICAgICAgICAgICAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgorRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLmEiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoubGEiCiAKICMgU2luY2UgZmlsZXMgYXJlIGluc3RhbGxlZCBpbnRvICR7bGliZGlyfS9sdHRuZy9saWJleGVjIHdlIG1hdGNoIAogIyB0aGUgbGliZXhlYyBpbnNhbmUgdGVzdCBzbyBza2lwIGl0LgpAQCAtNTIsMzEgKzUzLDY0IEBACiAKIGRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKIAkjIERlbGV0ZSBhIHNoaXBwZWQgbTQgZmlsZSB0aGF0IG92ZXJyaWRlcyBvdXIgcGF0Y2hlZCBvbmUKLQlybSAtZiAke1N9L2NvbmZpZy9saWJ4bWwubTQKKwlybSAtZiAke1N9L200L2xpYnhtbC5tNAogfQogCiBkb19pbnN0YWxsX3B0ZXN0ICgpIHsKLQljaG1vZCAreCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy91dGlscy91dGlscy5zaAotCWZvciBpIGluIGBmaW5kICR7RH0ke1BURVNUX1BBVEh9IC1wZXJtIC91K3ggLXR5cGUgZmA7IGRvCi0JCXNlZCAtZSAiczpcJFRFU1RESVIuKi9zcmMvYmluL2x0dG5nL1wkTFRUTkdfQklOOlwkTFRUTkdfQklOOmciIFwKLQkJICAtZSAiczpcJFRFU1RESVIvLi4vc3JjL2Jpbi9sdHRuZy1zZXNzaW9uZC9cJFNFU1NJT05EX0JJTjpcJFNFU1NJT05EX0JJTjpnIiBcCi0JCSAgLWUgInM6XCRESVIvLi4vc3JjL2Jpbi9sdHRuZy1zZXNzaW9uZC9cJFNFU1NJT05EX0JJTjpcJFNFU1NJT05EX0JJTjpnIiBcCi0JCSAgLWUgInM6XCRURVNURElSLy4uL3NyYy9iaW4vbHR0bmctY29uc3VtZXJkLzoke2xpYmRpcn0vbHR0bmcvbGliZXhlYy86ZyIgXAotCQkgIC1lICJzOlwkRElSLy4uL3NyYy9iaW4vbHR0bmctY29uc3VtZXJkLzoke2xpYmRpcn0vbHR0bmcvbGliZXhlYy86ZyIgXAotCQkgIC1lICJzOlwkVEVTVERJUi8uLi9zcmMvYmluL2x0dG5nLXJlbGF5ZC9cJFJFTEFZRF9CSU46XCRSRUxBWURfQklOOmciIFwKLQkJICAtZSAiczpcJERJUi8uLi9zcmMvYmluL2x0dG5nLXNlc3Npb25kL2x0dG5nLXNlc3Npb25kOlwkU0VTU0lPTkRfQklOOmciIFwKLQkJICAtZSAiczpcJERJUi8uLi9zcmMvYmluL2x0dG5nLXJlbGF5ZC9cJFJFTEFZRF9CSU46XCRSRUxBWURfQklOOmciIFwKLQkJICAtZSAiczpcJERJUi8uLi9iaW4vbHR0bmctcmVsYXlkL1wkUkVMQVlEX0JJTjpcJFJFTEFZRF9CSU46ZyIgXAotCQkgIC1pICRpCisJbWtkaXIgLXAgJHtEfSR7UFRFU1RfUEFUSH0KKworCWNwIC1hIC1UICR7Qn0gJHtEfSR7UFRFU1RfUEFUSH0KKworCSMgUHJldmVudCBhdHRlbXB0cyB0byB1cGRhdGUgTWFrZWZpbGVzIGR1cmluZyB0ZXN0IHJ1bnMsIGFuZAorCSMgc2lsZW5jZSAiTWFraW5nIGNoZWNrIGluICRTVUJESVIiIG1lc3NhZ2VzLgorCWZpbmQgJHtEfSR7UFRFU1RfUEFUSH0gLW5hbWUgTWFrZWZpbGUgLXR5cGUgZiAtZXhlYyBcCisJCXNlZCAtaSAtZSAncyFeTWFrZWZpbGU6IV9NYWtlZmlsZTohJyBcCisJCS1lICcvZWNobyAiTWFraW5nICQkdGFyZ2V0IGluICQkc3ViZGlyIjsgXFwvZCcge30gKworCisJIyBQcmV2ZW50IGF0dGVtcHRzIHRvIHVwZGF0ZSB2ZXJzaW9uLmggZHVyaW5nIHRlc3QgcnVucy4KKwlzZWQgLWkgLWUgJy9eXC5QSE9OWTogdmVyc2lvblwuaCQvZCcgJHtEfSR7UFRFU1RfUEFUSH0vaW5jbHVkZS9NYWtlZmlsZQorCisJIyBTaWxlbmNlICJNYWtpbmcgY2hlY2sgaW4gJFNVQkRJUiIgbWVzc2FnZXMuCisJZmluZCAke0R9JHtQVEVTVF9QQVRIfSAtbmFtZSBNYWtlZmlsZSAtdHlwZSBmIC1leGVjIFwKKwkJc2VkIC1pIC1lICcvZWNobyAiTWFraW5nICQkdGFyZ2V0IGluICQkc3ViZGlyIjsgXFwvZCcge30gKworCisJIyBTdWJzdGl0dXRlIGxpbmtzIHRvIGluc3RhbGxlZCBiaW5hcmllcy4KKwlmb3IgcHJvZyBpbiBsdHRuZyBsdHRuZy1yZWxheWQgbHR0bmctc2Vzc2lvbmQgbHR0bmctY29uc3VtZXJkIDsgZG8KKwkJb3JpZz0iJHtEfSR7UFRFU1RfUEFUSH0vc3JjL2Jpbi8ke3Byb2d9LyR7cHJvZ30iCisJCXJtICIkb3JpZyIKKwkJY2FzZSAiJHByb2ciIGluCisJCQlsdHRuZy1jb25zdW1lcmQpCisJCQkJbG4gLXMgIiR7bGliZGlyfS9sdHRuZy9saWJleGVjLyRwcm9nIiAiJG9yaWciCisJCQkJOzsKKwkJCSopCisJCQkJbG4gLXMgIiR7YmluZGlyfS8kcHJvZyIgIiRvcmlnIgorCQkJCTs7CisJCWVzYWMKIAlkb25lCiAKLQkjIFVwZGF0ZSBsaWJkaXIgcmVmZXJlbmNlcyBpbiBjb3BpZWQgLmxhIGZpbGVzCi0JZm9yIGkgaW4gYGZpbmQgJHtEfSR7UFRFU1RfUEFUSH0gLXR5cGUgZiAtbmFtZSAqLmxhYDsgZG8KLQkJc2VkIC1pIC1lICdzIyR7U30vdGVzdHMvIyR7U1RBR0lOR19ESVJ9JHtQVEVTVF9QQVRIfSNnJyAkaQorCSMgUmVtb3ZlIGxpYnRvb2wgYXJ0aWZhY3RzLgorCWZpbmQgJHtEfSR7UFRFU1RfUEFUSH0gXCggLW5hbWUgJyoubFthb10nIC1vIC1uYW1lICcqLmxhaScgXCkgLWRlbGV0ZQorCisJIyBSZW1vdmUgb2JqZWN0IGZpbGVzIGFuZCBhcmNoaXZlcy4KKwlmaW5kICR7RH0ke1BURVNUX1BBVEh9IC1uYW1lICcqLltvYV0nIC10eXBlIGYgLWRlbGV0ZQorCisJIyBSZW1vdmUgTWFrZWZpbGUuYW0gYW5kIE1ha2VmaWxlLmluLgorCWZpbmQgJHtEfSR7UFRFU1RfUEFUSH0gLW5hbWUgJ01ha2VmaWxlLionIC10eXBlIGYgLWRlbGV0ZQorCisJIyBSZW1vdmUgYXV0b200dGUuY2FjaGUuCisJcm0gLXJmICR7RH0ke1BURVNUX1BBVEh9L2F1dG9tNHRlLmNhY2hlCisKKwkjIFJlcGxhY2UgbGlidG9vbCB3cmFwcGVyIHNjcmlwdHMgKHdoaWNoIHdvbid0IHdvcmsgb24gdGhlCisJIyB0YXJnZXQpIHdpdGggdGhlaXIgY29ycmVzcG9uZGluZyBiaW5hcmllcy4KKwlmb3IgcHJvZyBpbiB1bml0L2luaV9jb25maWcvaW5pX2NvbmZpZyBcCisJCXJlZ3Jlc3Npb24vdG9vbHMvbGl2ZS9saXZlX3Rlc3QgXAorCQlyZWdyZXNzaW9uL3Rvb2xzL2hlYWx0aC9oZWFsdGhfY2hlY2sgOyBkbworCQliYXNlbmFtZT0ke3Byb2cjIyovfQorCQlsZGlyPSR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyR7cHJvZyUvKn0KKwkJbXYgLWYgJHtsZGlyfS8ubGlicy8ke2Jhc2VuYW1lfSAke2xkaXJ9CiAJZG9uZQogCi0Jc2VkIC1lICJzOnNyYy9iaW46YmluOmciIC1lICJzOmx0LTo6ZyIgXAotCS1pICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3V0aWxzL3V0aWxzLnNoCi0Jc2VkIC1lICJzOmluaV9jb25maWc6XC5saWJzXC9pbmlfY29uZmlnOiIgXAotCS1pICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3VuaXQvaW5pX2NvbmZpZy90ZXN0X2luaV9jb25maWcKKwkjIGNoZWNrcGF0Y2gucGwgaXMgdW5uZWVkZWQgb24gdGFyZ2V0IGFuZCBjYXVzZXMgZmlsZS1yZGVwcyBRQQorCSMgd2FybmluZ3MuCisJcm0gLWYgJHtEfSR7UFRFU1RfUEFUSH0vZXh0cmFzL2NoZWNrcGF0Y2gucGwKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXVzdC9sdHRuZy11c3QtYWRkLXN1cHBvcnQtZm9yLWFhcmNoNjRfYmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy11c3QvbHR0bmctdXN0LWFkZC1zdXBwb3J0LWZvci1hYXJjaDY0X2JlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YjM3YTRhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXVzdC9sdHRuZy11c3QtYWRkLXN1cHBvcnQtZm9yLWFhcmNoNjRfYmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1sdHRuZy11c3Q6IGFkZCBzdXBwb3J0IGZvciBhYXJjaDY0X2JlCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBUdWRvciBGbG9yZWEgPHR1ZG9yLmZsb3JlYUBlbmVhLmNvbT4KLQotZGlmZiAtLXJ1TiBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotLS0tIGEvY29uZmlndXJlLmFjCTIwMTYtMDItMTggMTQ6NTQ6NTQuNjUxNzEzNjQ3ICswMTAwCi0rKysgYi9jb25maWd1cmUuYWMJMjAxNi0wMi0xOCAxNDo1NjoxMS4wNTc4NjUyOTcgKzAxMDAKLUBAIC0yNDAsNiArMjQwLDcgQEAKLSAJczM5MHgpIE5PX1VOQUxJR05FRF9BQ0NFU1M9MSA7OwotICAgICAgICAgYXJtKikgTk9fVU5BTElHTkVEX0FDQ0VTUz0xIDs7Ci0gCWFhcmNoNjQpIE5PX1VOQUxJR05FRF9BQ0NFU1M9MSA7OwotKyAgICAgICAgYWFyY2g2NF9iZSkgTk9fVU5BTElHTkVEX0FDQ0VTUz0xIDs7Ci0gCW1pcHMqKSBOT19VTkFMSUdORURfQUNDRVNTPTEgOzsKLSAJdGlsZSopIE5PX1VOQUxJR05FRF9BQ0NFU1M9MSA7OwotIAkqKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdXN0L2x0dG5nLXVzdC1kb2MtZXhhbXBsZXMtZGlzYWJsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXVzdC9sdHRuZy11c3QtZG9jLWV4YW1wbGVzLWRpc2FibGUucGF0Y2gKaW5kZXggYjY4YTk4OS4uY2FmMGI4YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdXN0L2x0dG5nLXVzdC1kb2MtZXhhbXBsZXMtZGlzYWJsZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy11c3QvbHR0bmctdXN0LWRvYy1leGFtcGxlcy1kaXNhYmxlLnBhdGNoCkBAIC0xMSw3ICsxMSw3IEBACiAtLS0gYS9kb2MvTWFrZWZpbGUuYW0KICsrKyBiL2RvYy9NYWtlZmlsZS5hbQogQEAgLTEsNCArMSw0IEBACi0tU1VCRElSUyA9IC4gZXhhbXBsZXMKKy1TVUJESVJTID0gLiBtYW4gZXhhbXBsZXMKICtTVUJESVJTID0gLgogIAogIGRpc3RfbWFuX01BTlMgPSBtYW4vbHR0bmctZ2VuLXRwLjEgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdXN0X2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXVzdF9naXQuYmIKaW5kZXggMTVkOTI1ZC4uYmFmZjcxZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdXN0X2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy11c3RfZ2l0LmJiCkBAIC0xMSwyMiArMTEsMzAgQEAKIGluaGVyaXQgYXV0b3Rvb2xzIGxpYl9wYWNrYWdlCiAKIERFUEVORFMgPSAibGlidXJjdSB1dGlsLWxpbnV4IgotUkRFUEVORFNfJHtQTn0tYmluID0gInB5dGhvbi1jb3JlIgorUkRFUEVORFNfJHtQTn0tYmluID0gInB5dGhvbjMtY29yZSIKIAogIyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgYWZ0ZXIgcmVuYW1lCiBSUFJPVklERVNfJHtQTn0gPSAibHR0bmcyLXVzdCIKIFJSRVBMQUNFU18ke1BOfSA9ICJsdHRuZzItdXN0IgogUkNPTkZMSUNUU18ke1BOfSA9ICJsdHRuZzItdXN0IgogCi1TUkNSRVYgPSAiZjg5YzFhM2NmMmIwNmE0OTcwYjkxNTRjMDBmZjY0MDk4NzBhZWZiNSIKK1NSQ1JFViA9ICI1MTRhODdmM2I2NDE4MWUzODQzOTk5MzVhNTcwOGE4Zjg1YjBjYzgzIgogUEUgPSAiMiIKLVBWID0gIjIuNy4xK2dpdCR7U1JDUFZ9IgorUFYgPSAiMi44LjErZ2l0JHtTUkNQVn0iCiAKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmx0dG5nLm9yZy9sdHRuZy11c3QuZ2l0O2JyYW5jaD1zdGFibGUtMi43IFwKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmx0dG5nLm9yZy9sdHRuZy11c3QuZ2l0O2JyYW5jaD1zdGFibGUtMi44IFwKICAgICAgICAgICAgZmlsZTovL2x0dG5nLXVzdC1kb2MtZXhhbXBsZXMtZGlzYWJsZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9sdHRuZy11c3QtYWRkLXN1cHBvcnQtZm9yLWFhcmNoNjRfYmUucGF0Y2ggXAogICAgICAgICAgICIKIAorRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtbWFuLXBhZ2VzIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAgICAgIyBQYXRjaCBweXRob24gdG9vbHMgdG8gdXNlIFB5dGhvbiAzOyB0aGV5IHNob3VsZCBiZSBzb3VyY2UgY29tcGF0aWJsZSwgYnV0CisgICAgICAgICMgc3RpbGwgcmVmZXIgdG8gUHl0aG9uIDIgaW4gdGhlIHNoZWJhbmcKKyAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qcHl0aG9uLiosIyEke2JpbmRpcn0vcHl0aG9uMywnICR7RH0ke2JpbmRpcn0vbHR0bmctZ2VuLXRwCit9CisKKwogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUuaW5jCmluZGV4IGNmM2FkNDMuLjk2ZWY0M2QgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS5pbmMKQEAgLTI0LDcgKzI0LDkgQEAKICAgICAgICAgICAgZmlsZTovL29wcm9maWxlLWNyb3NzLWNvbXBpbGUtdGVzdHMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKICAgICAgICAgICAgZmlsZTovL3Jvb3QtaG9tZS1kaXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtcm1iLWRlZmluaXRpb24tZm9yLU5JT1MyLWFyY2hpdGVjdHVyZS5wYXRjaCIKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLXJtYi1kZWZpbml0aW9uLWZvci1OSU9TMi1hcmNoaXRlY3R1cmUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtRlRCRlMtcHJvYmxlbS13aXRoLUdDQy02LnBhdGNoIFwKKyIKIAogU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vbXVzbC5wYXRjaCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvMDAwMS1GaXgtRlRCRlMtcHJvYmxlbS13aXRoLUdDQy02LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvMDAwMS1GaXgtRlRCRlMtcHJvYmxlbS13aXRoLUdDQy02LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzNzJmZDUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS8wMDAxLUZpeC1GVEJGUy1wcm9ibGVtLXdpdGgtR0NDLTYucGF0Y2gKQEAgLTAsMCArMSw1MSBAQAorRnJvbSAzOWQ0ZDQ2YTBiZDUwNGFjNzA4ZmZlNzJkZjg3YmY3NGNkMTJhZDMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogV2lsbGlhbSBDb2hlbiA8d2NvaGVuQHJlZGhhdC5jb20+CitEYXRlOiBGcmksIDUgRmViIDIwMTYgMTc6MzA6MTkgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IEZUQkZTIHByb2JsZW0gd2l0aCBHQ0MtNgorCitHQ0MtNiBpcyBwaWNraWVyIGFib3V0IHNvbWUgb2YgdGhlIHR5cGUgY29udmVyc2lvbnMgY2F1c2luZyB0aGUgRmVkb3JhCisyNCBtYXNzIHJlYnVpbGQgdGhlIGJ1aWxkIG9mIG9wcm9maWxlIGZhaWxlZCB3aXRoOgorCittYWtlWzNdOiBFbnRlcmluZyBkaXJlY3RvcnkgJy9idWlsZGRpci9idWlsZC9CVUlMRC9vcHJvZmlsZS0xLjEuMC9saWJ1dGlsKysnCitnKysgLURIQVZFX0NPTkZJR19IIC1JLiAtSS4uICAtSSAuLi9saWJ1dGlsIC1JIC4uL2xpYm9wIC1JIC4uL2xpYnBwICAgLVcgLVdhbGwgLWZuby1jb21tb24gLWZ0ZW1wbGF0ZS1kZXB0aC01MCAtTzIgLWcgLXBpcGUgLVdhbGwgLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHkgLVdwLC1EX0ZPUlRJRllfU09VUkNFPTIgLWZleGNlcHRpb25zIC1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZyAtLXBhcmFtPXNzcC1idWZmZXItc2l6ZT00IC1ncmVjb3JkLWdjYy1zd2l0Y2hlcyAtc3BlY3M9L3Vzci9saWIvcnBtL3JlZGhhdC9yZWRoYXQtaGFyZGVuZWQtY2MxIC1tMzIgLW1hcmNoPWk2ODYgLW10dW5lPWF0b20gLWZhc3luY2hyb25vdXMtdW53aW5kLXRhYmxlcyAtYyAtbyBvcF9iZmQubyBvcF9iZmQuY3BwCitvcF9iZmQuY3BwOiBJbiBtZW1iZXIgZnVuY3Rpb24gJ3ZvaWQgb3BfYmZkOjpnZXRfc3ltYm9sX3JhbmdlKHN5bWJvbF9pbmRleF90LCBsb25nIGxvbmcgdW5zaWduZWQgaW50JiwgbG9uZyBsb25nIHVuc2lnbmVkIGludCYpIGNvbnN0JzoKK29wX2JmZC5jcHA6NTM4OjQ3OiBlcnJvcjogY2Fubm90IGNvbnZlcnQgJ3N0ZDo6b3N0cmVhbSB7YWthIHN0ZDo6YmFzaWNfb3N0cmVhbTxjaGFyPn0nIHRvICdjb25zdCBib29sJyBpbiBpbml0aWFsaXphdGlvbgorICBib29sIGNvbnN0IHZlcmJvc2UgPSBjdmVyYiA8PCAodmJmZCAmIHZsZXZlbDEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitvcF9iZmQuY3BwOjU0Njo3OiBlcnJvcjogaW4gYXJndW1lbnQgdG8gdW5hcnkgIQorICBpZiAoIXZlcmJvc2UpCisgICAgICAgXn5+fn5+fgorCitBdm9pZCB0aGUgaW50ZXJtZWRpYXRlIGJvb2wgdHlwZSB0byBtYWtlIEdDQy02IGhhcHB5LgorCitTaWduZWQtb2ZmLWJ5OiBXaWxsaWFtIENvaGVuIDx3Y29oZW5AcmVkaGF0LmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCisgbGlidXRpbCsrL29wX2JmZC5jcHAgfCA0ICstLS0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJ1dGlsKysvb3BfYmZkLmNwcCBiL2xpYnV0aWwrKy9vcF9iZmQuY3BwCitpbmRleCAzODljOTIwLi5mMmViNDJiIDEwMDY0NAorLS0tIGEvbGlidXRpbCsrL29wX2JmZC5jcHAKKysrKyBiL2xpYnV0aWwrKy9vcF9iZmQuY3BwCitAQCAtNTM1LDE1ICs1MzUsMTMgQEAgdm9pZCBvcF9iZmQ6OmdldF9zeW1ib2xfcmFuZ2Uoc3ltYm9sX2luZGV4X3Qgc3ltX2lkeCwKKyB7CisgCW9wX2JmZF9zeW1ib2wgY29uc3QgJiBzeW0gPSBzeW1zW3N5bV9pZHhdOworIAorLQlib29sIGNvbnN0IHZlcmJvc2UgPSBjdmVyYiA8PCAodmJmZCAmIHZsZXZlbDEpOworLQorIAlpZiAoYW5vbl9vYmopCisgCQlzdGFydCA9IHN5bS52bWEoKTsKKyAJZWxzZQorIAkJc3RhcnQgPSBzeW0uZmlsZXBvcygpOworIAllbmQgPSBzdGFydCArIHN5bS5zaXplKCk7CisgCistCWlmICghdmVyYm9zZSkKKysJaWYgKCEoY3ZlcmIgPDwgKHZiZmQgJiB2bGV2ZWwxKSkpCisgCQlyZXR1cm47CisgCisgCWlvX3N0YXRlIHN0YXRlKGN2ZXJiIDw8ICh2YmZkICYgdmxldmVsMSkpOworLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZXVpLXNlcnZlci9pbml0IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGV1aS1zZXJ2ZXIvaW5pdApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMjU0NGVhNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZXVpLXNlcnZlci9pbml0CisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotIyEvYmluL3NoCi0jIyMgQkVHSU4gSU5JVCBJTkZPCi0jIFByb3ZpZGVzOiAgICAgICAgICBvcHJvZmlsZS1zZXJ2ZXIKLSMgUmVxdWlyZWQtU3RhcnQ6ICAgICRuZXR3b3JrCi0jIFJlcXVpcmVkLVN0b3A6ICAgICAkbmV0d29yawotIyBEZWZhdWx0LVN0YXJ0OiAgICAgMiAzIDQgNQotIyBEZWZhdWx0LVN0b3A6ICAgICAgMCAxIDYKLSMgU2hvcnQtRGVzY3JpcHRpb246IE9Qcm9maWxlVUkgc2VydmVyCi0jIERlc2NyaXB0aW9uOiAgICAgICAKLSMjIyBFTkQgSU5JVCBJTkZPCi0KLS4gL2V0Yy9pbml0LmQvZnVuY3Rpb25zCi0KLWNhc2UgIiQxIiBpbgotICBzdGFydCkKLSAgICAgICAgZWNobyAiU3RhcnRpbmcgT1Byb2ZpbGVVSSBzZXJ2ZXIiCi0JLiAvZXRjL3Byb2ZpbGUKLQkvdXNyL2Jpbi9vcHJvZmlsZS1zZXJ2ZXIgJgotICA7OwotCi0gIHN0b3ApCi0gICAgICAgIGVjaG8gIlN0b3BwaW5nIE9Qcm9maWxlVUkgc2VydmVyIgotICAgICAgICBraWxscHJvYyBvcHJvZmlsZS1zZXJ2ZXIKLSAgOzsKLQotICByZXN0YXJ0KQotCSQwIHN0b3AKLSAgICAgICAgc2xlZXAgMQotICAgICAgICAkMCBzdGFydAotICA7OwotCi0gICopCi0gICAgICAgIGVjaG8gInVzYWdlOiAkMCB7IHN0YXJ0IHwgc3RvcCB8IHJlc3RhcnQgfSIKLSAgOzsKLWVzYWMKLQotZXhpdCAwCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZXVpLXNlcnZlci9vcHJvZmlsZXVpLXNlcnZlci5zZXJ2aWNlIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGV1aS1zZXJ2ZXIvb3Byb2ZpbGV1aS1zZXJ2ZXIuc2VydmljZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWEyY2JlNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZXVpLXNlcnZlci9vcHJvZmlsZXVpLXNlcnZlci5zZXJ2aWNlCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1bVW5pdF0KLURlc2NyaXB0aW9uPU9Qcm9maWxlVUkgU2VydmVyCi1BZnRlcj1uZXR3b3JrLnRhcmdldAotCi1bU2VydmljZV0KLUV4ZWNTdGFydD0vYmluL3NoIC1jICIuIEBTWVNDT05GRElSQC9wcm9maWxlOyBAQklORElSQC9vcHJvZmlsZS1zZXJ2ZXIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZXVpLXNlcnZlcl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZXVpLXNlcnZlcl9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjMzQ3N2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGV1aS1zZXJ2ZXJfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotcmVxdWlyZSBvcHJvZmlsZXVpLmluYwotCi1TUkNSRVYgPSAiMzg5ZTE4NzVhZjQ3MjFkNTJjN2U2NWNmOWNmZmZiNjliMGVkNmE1OSIKLVBWID0gIjAuMCtnaXQke1NSQ1BWfSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9vcHJvZmlsZXVpIFwKLSAgICAgICAgICAgZmlsZTovL2luaXQgXAotICAgICAgICAgICBmaWxlOi8vb3Byb2ZpbGV1aS1zZXJ2ZXIuc2VydmljZSAiCi0KLURFUEVORFMgKz0gImludGx0b29sLW5hdGl2ZSBnZXR0ZXh0LW5hdGl2ZSIKLQotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtY2xpZW50IC0tZW5hYmxlLXNlcnZlciIKLQotUkRFUEVORFNfJHtQTn0gPSAib3Byb2ZpbGUgYXZhaGktZGFlbW9uIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL29wcm9maWxldWktc2VydmVyCi0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vb3Byb2ZpbGV1aS1zZXJ2ZXIuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KLQlzZWQgLWkgLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAotCQktZSAncyxAQklORElSQCwke2JpbmRpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3Byb2ZpbGV1aS1zZXJ2ZXIuc2VydmljZQotfQotCi1pbmhlcml0IHVwZGF0ZS1yYy5kIHN5c3RlbWQKLQotSU5JVFNDUklQVF9OQU1FID0gIm9wcm9maWxldWktc2VydmVyIgotSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgOTkgNSAyIC4gc3RvcCAyMCAwIDEgNiAuIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAib3Byb2ZpbGV1aS1zZXJ2ZXIuc2VydmljZSIKLVNZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxldWkuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGV1aS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmY2YwMTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGV1aS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1TVU1NQVJZID0gIlVzZXIgSW50ZXJmYWNlIGZvciB0aGUgU3lzdGVtLVdpZGUgUHJvZmlsZXIiCi1ERVNDUklQVElPTiA9ICJVc2VyIGludGVyZmFjZSBmb3IgdGhlIE9Qcm9maWxlIHRvb2wiCi1IT01FUEFHRSA9ICJodHRwOi8vbGFicy5vLWhhbmQuY29tL29wcm9maWxldWkvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy8iCi0KLVNFQ1RJT04gPSAieDExIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgYXZhaGkgaW50bHRvb2wtbmF0aXZlIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLWF2YWhpIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZXVpX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxldWlfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NmYzZDhlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxldWlfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotcmVxdWlyZSBvcHJvZmlsZXVpLmluYwotCi1ERVBFTkRTICs9ICJndGsrIGxpYmdsYWRlIGxpYnhtbDIgYXZhaGktdWkgZ2NvbmYgZ2V0dGV4dC1uYXRpdmUiCi0KLWluaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi1BTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIiR7R1RLMkRJU1RST0ZFQVRVUkVTfSIKLQotU1JDUkVWID0gIjM4OWUxODc1YWY0NzIxZDUyYzdlNjVjZjljZmZmYjY5YjBlZDZhNTkiCi1QViA9ICIwLjArZ2l0JHtTUkNQVn0iCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvb3Byb2ZpbGV1aSIKLQotRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1jbGllbnQgLS1kaXNhYmxlLXNlcnZlciIKLQotUEFDS0FHRVMgPSsgIm9wcm9maWxldWktdmlld2VyIgotCi1GSUxFU19vcHJvZmlsZXVpLXZpZXdlciA9ICIke2JpbmRpcn0vb3BhcmNoY29udiAke2JpbmRpcn0vb3Byb2ZpbGUtdmlld2VyICR7ZGF0YWRpcn0vYXBwbGljYXRpb25zLyAke2RhdGFkaXJ9L29wcm9maWxldWkvICR7ZGF0YWRpcn0vaWNvbnMiCi1SREVQRU5EU19vcHJvZmlsZXVpLXZpZXdlciA9ICJvcHJvZmlsZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3BlcmYvcGVyZi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3BlcmYvcGVyZi5iYgppbmRleCAzZDZmZmIzLi40NzEwMjNkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wZXJmL3BlcmYuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcGVyZi9wZXJmLmJiCkBAIC0zMCw2ICszMCw4IEBACiAgICAgJHtTQ1JJUFRJTkdfREVQRU5EU30gXAogICAgICR7TElCVU5XSU5EX0RFUEVORFN9IFwKICAgICBiaXNvbiBmbGV4IHh6IFwKKyAgICB4bWx0by1uYXRpdmUgXAorICAgIGFzY2lpZG9jLW5hdGl2ZSBcCiAiCiAKIGRvX2NvbmZpZ3VyZVtkZXBlbmRzXSArPSAidmlydHVhbC9rZXJuZWw6ZG9fc2hhcmVkX3dvcmtkaXIiCkBAIC00MCwxMCArNDIsNiBAQAogCiAjIG5lZWRlZCBmb3IgYnVpbGRpbmcgdGhlIHRvb2xzL3BlcmYgUHl0aG9uIGJpbmRpbmdzCiBpbmhlcml0IHB5dGhvbi1kaXIKLWV4cG9ydCBTVEFHSU5HX0lOQ0RJUgotZXhwb3J0IFNUQUdJTkdfTElCRElSCi1leHBvcnQgQlVJTERfU1lTCi1leHBvcnQgSE9TVF9TWVMKIGV4cG9ydCBQWVRIT05fU0lURVBBQ0tBR0VTX0RJUgogCiAja2VybmVsIDMuMSsgc3VwcG9ydHMgV0VSUk9SIHRvIGRpc2FibGUgd2FybmluZ3MgYXMgZXJyb3JzCkBAIC04MSw2ICs3OSw3IEBACiAgICAgQVJDSD0ke0FSQ0h9IFwKICAgICBDQz0iJHtDQ30iIFwKICAgICBBUj0iJHtBUn0iIFwKKyAgICBMRD0iJHtMRH0iIFwKICAgICBFWFRSQV9DRkxBR1M9Ii1sZHciIFwKICAgICBwZXJmZXhlY2Rpcj0ke2xpYmV4ZWNkaXJ9IFwKICAgICBOT19HVEsyPTEgJHtUVUlfREVGSU5FU30gTk9fRFdBUkY9MSAke0xJQlVOV0lORF9ERUZJTkVTfSBcCkBAIC05NCwxNCArOTMsMTIgQEAKICAgICAnc2hhcmVkaXI9JHtkYXRhZGlyfScgXAogICAgICdzeXNjb25mZGlyPSR7c3lzY29uZmRpcn0nIFwKICAgICAncGVyZmV4ZWNkaXI9JHtsaWJleGVjZGlyfS9wZXJmLWNvcmUnIFwKLSAgICBcCiAgICAgJ0VUQ19QRVJGQ09ORklHPSR7QG9zLnBhdGgucmVscGF0aChzeXNjb25mZGlyLCBwcmVmaXgpfScgXAogICAgICdzaGFyZWRpcj0ke0Bvcy5wYXRoLnJlbHBhdGgoZGF0YWRpciwgcHJlZml4KX0nIFwKICAgICAnbWFuZGlyPSR7QG9zLnBhdGgucmVscGF0aChtYW5kaXIsIHByZWZpeCl9JyBcCiAgICAgJ2luZm9kaXI9JHtAb3MucGF0aC5yZWxwYXRoKGluZm9kaXIsIHByZWZpeCl9JyBcCiAiCiAKLQogZG9fY29tcGlsZSgpIHsKIAkjIExpbnV4IGtlcm5lbCBidWlsZCBzeXN0ZW0gaXMgZXhwZWN0ZWQgdG8gZG8gdGhlIHJpZ2h0IHRoaW5nCiAJdW5zZXQgQ0ZMQUdTCkBAIC0xMzYsMTEgKzEzMywyNCBAQAogICAgICMgd2l0aCBlYWNoIG90aGVyIGlmIGl0cyBpbiB0aGUgc2hhcmVkIHNvdXJjZSBkaXJlY3RvcnkKICAgICAjCiAgICAgaWYgWyAtZSAiJHtTfS90b29scy9wZXJmL2NvbmZpZy9NYWtlZmlsZSIgXTsgdGhlbgorICAgICAgICBwZXJmY29uZmlnPSIke1N9L3Rvb2xzL3BlcmYvY29uZmlnL01ha2VmaWxlIgorICAgIGZpCisgICAgaWYgWyAtZSAiJHtTfS90b29scy9wZXJmL01ha2VmaWxlLmNvbmZpZyIgXTsgdGhlbgorICAgICAgICBwZXJmY29uZmlnPSIke1N9L3Rvb2xzL3BlcmYvTWFrZWZpbGUuY29uZmlnIgorICAgIGZpCisgICAgaWYgWyAtbiAiJHtwZXJmY29uZmlnfSIgXTsgdGhlbgogICAgICAgICAjIE1hdGNoICQocHJlZml4KS8kKGxpYikgYW5kICQocHJlZml4KS9saWIKICAgICAgICAgc2VkIC1pIC1lICdzLF5saWJkaXIgPSBcKCQocHJlZml4KS8uKmxpYlwpLGxpYmRpciA/PSBcMSwnIFwKICAgICAgICAgICAgICAgIC1lICdzLF5wZXJmZXhlY2RpciA9IFwoLipcKSxwZXJmZXhlY2RpciA/PSBcMSwnIFwKICAgICAgICAgICAgICAgIC1lICdzLFwgLmNvbmZpZy1kZXRlY3RlZCwgJChPVVRQVVQpL2NvbmZpZy1kZXRlY3RlZCxnJyBcCi0gICAgICAgICAgICAke1N9L3Rvb2xzL3BlcmYvY29uZmlnL01ha2VmaWxlCisgICAgICAgICAgICAke3BlcmZjb25maWd9CisgICAgZmkKKyAgICAjIFRoZSBtYW4gcGFnZXMgaW5zdGFsbGF0aW9uIGlzICIkKElOU1RBTEwpIC1kIC1tIDc1NSAkKERFU1RESVIpJChtYW4xZGlyKSIKKyAgICAjIGluICR7U30vdG9vbHMvcGVyZi9Eb2N1bWVudGF0aW9uL01ha2VmaWxlLCBpZiB0aGUgbWFuZGlyIHNldCB0byAnPz0nLCBpdAorICAgICMgd2lsbCB1c2UgdGhlIHJlbGF0aXZlIHBhdGggJ3NoYXJlL21hbicsIGluIHRoZSB3YXkgaXQgd2lsbCByZXN1bHRpbmcgaW4KKyAgICAjIGluY29ycmVjdCBpbnN0YWxsYXRpb24gZm9yIG1hbiBwYWdlcy4KKyAgICBpZiBbIC1lICIke1N9L3Rvb2xzL3BlcmYvRG9jdW1lbnRhdGlvbi9NYWtlZmlsZSIgXTsgdGhlbgorCXNlZCAtaSAncyxebWFuZGlyPz0sbWFuZGlyOj0sJyAke1N9L3Rvb2xzL3BlcmYvRG9jdW1lbnRhdGlvbi9NYWtlZmlsZQogICAgIGZpCiAgICAgaWYgWyAtZSAiJHtTfS90b29scy9wZXJmL01ha2VmaWxlLnBlcmYiIF07IHRoZW4KICAgICAgICAgc2VkIC1pIC1lICdzLFwgLmNvbmZpZy1kZXRlY3RlZCwgJChPVVRQVVQpL2NvbmZpZy1kZXRlY3RlZCxnJyBcCkBAIC0xNjAsMTAgKzE3MCwxMiBAQAogICAgIGlmIFsgLWUgIiR7U30vdG9vbHMvcGVyZi9NYWtlZmlsZS5wZXJmIiBdOyB0aGVuCiAgICAgICAgIHNlZCAtaSAncyxDQyA9ICQoQ1JPU1NfQ09NUElMRSlnY2MsI0NDLCcgJHtTfS90b29scy9wZXJmL01ha2VmaWxlLnBlcmYKICAgICAgICAgc2VkIC1pICdzLEFSID0gJChDUk9TU19DT01QSUxFKWFyLCNBUiwnICR7U30vdG9vbHMvcGVyZi9NYWtlZmlsZS5wZXJmCisgICAgICAgIHNlZCAtaSAncyxMRCA9ICQoQ1JPU1NfQ09NUElMRSlsZCwjTEQsJyAke1N9L3Rvb2xzL3BlcmYvTWFrZWZpbGUucGVyZgogICAgIGZpCiAgICAgaWYgWyAtZSAiJHtTfS90b29scy9saWIvYXBpL01ha2VmaWxlIiBdOyB0aGVuCiAgICAgICAgIHNlZCAtaSAncyxDQyA9ICQoQ1JPU1NfQ09NUElMRSlnY2MsI0NDLCcgJHtTfS90b29scy9saWIvYXBpL01ha2VmaWxlCiAgICAgICAgIHNlZCAtaSAncyxBUiA9ICQoQ1JPU1NfQ09NUElMRSlhciwjQVIsJyAke1N9L3Rvb2xzL2xpYi9hcGkvTWFrZWZpbGUKKyAgICAgICAgc2VkIC1pICdzLExEID0gJChDUk9TU19DT01QSUxFKWxkLCNMRCwnICR7U30vdG9vbHMvbGliL2FwaS9NYWtlZmlsZQogICAgIGZpCiAgICAgaWYgWyAtZSAiJHtTfS90b29scy9saWIvc3ViY21kL01ha2VmaWxlIiBdOyB0aGVuCiAgICAgICAgIHNlZCAtaSAncyxDQyA9ICQoQ1JPU1NfQ09NUElMRSlnY2MsI0NDLCcgJHtTfS90b29scy9saWIvc3ViY21kL01ha2VmaWxlCkBAIC0yMDEsNiArMjEzLDcgQEAKIFBBQ0tBR0VTID0rICIke1BOfS1hcmNoaXZlICR7UE59LXRlc3RzICR7UE59LXBlcmwgJHtQTn0tcHl0aG9uIgogCiBSREVQRU5EU18ke1BOfSArPSAiZWxmdXRpbHMgYmFzaCIKK1JERVBFTkRTXyR7UE59LWRvYyArPSAibWFuIgogUkRFUEVORFNfJHtQTn0tYXJjaGl2ZSA9KyAiYmFzaCIKIFJERVBFTkRTXyR7UE59LXB5dGhvbiA9KyAiYmFzaCBweXRob24gcHl0aG9uLW1vZHVsZXMiCiBSREVQRU5EU18ke1BOfS1wZXJsID0rICJiYXNoIHBlcmwgcGVybC1tb2R1bGVzIgpAQCAtMjA5LDEwICsyMjIsMTEgQEAKIFJTVUdHRVNUU19TQ1JJUFRJTkcgPSAiJHtAcGVyZl9mZWF0dXJlX2VuYWJsZWQoJ3BlcmYtc2NyaXB0aW5nJywgJyR7UE59LXBlcmwgJHtQTn0tcHl0aG9uJywgJycsZCl9IgogUlNVR0dFU1RTXyR7UE59ICs9ICIke1BOfS1hcmNoaXZlICR7UE59LXRlc3RzICR7UlNVR0dFU1RTX1NDUklQVElOR30iCiAKKyNGSUxFU18ke1BOfSArPSAiJHtsaWJleGVjZGlyfS9wZXJmLWNvcmUgJHtleGVjX3ByZWZpeH0vbGliZXhlYy9wZXJmLWNvcmUgL3Vzci9saWI2NC90cmFjZWV2ZW50ICR7bGliZGlyfS90cmFjZWV2ZW50IgogRklMRVNfJHtQTn0gKz0gIiR7bGliZXhlY2Rpcn0vcGVyZi1jb3JlICR7ZXhlY19wcmVmaXh9L2xpYmV4ZWMvcGVyZi1jb3JlICR7bGliZGlyfS90cmFjZWV2ZW50IgogRklMRVNfJHtQTn0tYXJjaGl2ZSA9ICIke2xpYmRpcn0vcGVyZi9wZXJmLWNvcmUvcGVyZi1hcmNoaXZlIgogRklMRVNfJHtQTn0tdGVzdHMgPSAiJHtsaWJkaXJ9L3BlcmYvcGVyZi1jb3JlL3Rlc3RzICR7bGliZXhlY2Rpcn0vcGVyZi1jb3JlL3Rlc3RzIgotRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7bGliZGlyfS9weXRob24qL3NpdGUtcGFja2FnZXMgJHtsaWJkaXJ9L3BlcmYvcGVyZi1jb3JlL3NjcmlwdHMvcHl0aG9uIgorRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7bGliZGlyfS9wZXJmL3BlcmYtY29yZS9zY3JpcHRzL3B5dGhvbiAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKIEZJTEVTXyR7UE59LXB5dGhvbiArPSAiJHtsaWJleGVjZGlyfS9wZXJmLWNvcmUvc2NyaXB0cy9weXRob24vKiIKIEZJTEVTXyR7UE59LXBlcmwgPSAiJHtsaWJkaXJ9L3BlcmYvcGVyZi1jb3JlL3NjcmlwdHMvcGVybCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLUF2b2lkLWJ1aWxkaW5nLWRvY3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL2ZpbGVzLzAwMDEtQXZvaWQtYnVpbGRpbmctZG9jcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDJmMzU0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLUF2b2lkLWJ1aWxkaW5nLWRvY3MucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAorRnJvbSAyN2RmNTIxYzY4ZTdjOGI1YjA1MGRhYjE1ZjQwYWExNWZkMDM2MjNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK0RhdGU6IFdlZCwgNCBNYXkgMjAxNiAxNDo1ODoyNCArMDMwMAorU3ViamVjdDogW1BBVENIXSBBdm9pZCBidWlsZGluZyBkb2NzCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQorU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KKy0tLQorIE1ha2VmaWxlLmFtIHwgMiArLQorIG00L3llbHAubTQgIHwgNiAtLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggYjkxOWEzZi4uM2EzODUxZCAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTEsNCArMSw0IEBACistU1VCRElSUyA9IGRhZW1vbiBkYXRhIGhlbHAgbGliIHBvIHNyYyB0b29scyB0ZXN0cworK1NVQkRJUlMgPSBkYWVtb24gZGF0YSBsaWIgcG8gc3JjIHRvb2xzIHRlc3RzCisgCisgRVhUUkFfRElTVCA9IEFVVEhPUlMgdGFwLXRlc3QgQ09QWUlORy5ncGwtMgorIAorZGlmZiAtLWdpdCBhL200L3llbHAubTQgYi9tNC95ZWxwLm00CitpbmRleCA1ZGI4NDdmLi4xYjZlZGU0IDEwMDY0NAorLS0tIGEvbTQveWVscC5tNAorKysrIGIvbTQveWVscC5tNAorQEAgLTI3LDEyICsyNyw2IEBAIEFDX0FSR19XSVRIKFtoZWxwLWRpcl0sCisgSEVMUF9ESVI9IiR3aXRoX2hlbHBfZGlyIgorIEFDX1NVQlNUKEhFTFBfRElSKQorIAorLUFDX0FSR19WQVIoW0lUU1RPT0xdLCBbUGF0aCB0byB0aGUgYGl0c3Rvb2xgIGNvbW1hbmRdKQorLUFDX0NIRUNLX1BST0coW0lUU1RPT0xdLCBbaXRzdG9vbF0sIFtpdHN0b29sXSkKKy1pZiB0ZXN0IHgiJElUU1RPT0wiID0geDsgdGhlbgorLSAgQUNfTVNHX0VSUk9SKFtpdHN0b29sIG5vdCBmb3VuZF0pCistZmkKKy0KKyBBQ19BUkdfVkFSKFtYTUxMSU5UXSwgW1BhdGggdG8gdGhlIGB4bWxsaW50YCBjb21tYW5kXSkKKyBBQ19DSEVDS19QUk9HKFtYTUxMSU5UXSwgW3htbGxpbnRdLCBbeG1sbGludF0pCisgaWYgdGVzdCB4IiRYTUxMSU5UIiA9IHg7IHRoZW4KKy0tIAorMi4xLjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLURpc2FibGUtY2hlY2stZm9yLXBvbGtpdC1mb3ItVUkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL2ZpbGVzLzAwMDEtRGlzYWJsZS1jaGVjay1mb3ItcG9sa2l0LWZvci1VSS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDg1MjMyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLURpc2FibGUtY2hlY2stZm9yLXBvbGtpdC1mb3ItVUkucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSA3NjVkNTc4MTQ1ZTMxZGRjOTQ5NWFkZmFiODAzN2FkZTMzYzZhOWNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK0RhdGU6IFdlZCwgNCBNYXkgMjAxNiAxMDo1OTozNiArMDMwMAorU3ViamVjdDogW1BBVENIXSBEaXNhYmxlIGNoZWNrIGZvciBwb2xraXQgZm9yIFVJCisKK1RoZSBjaGVjayBpcyBub3QgdGVjaG5pY2FsbHkgcmVxdWlyZWQ6IHN5c3Byb2YganVzdCBuZWVkcwordG8gYmUgYWJsZSB0byBhY2Nlc3Mgc3lzdGVtIHBlcmYgY291bnRlcnMgYXQgcnVudGltZS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggODU1OTU5Ny4uZWNmOTNhZCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTMxLDggKzEzMSw4IEBAIEFTX0lGKFt0ZXN0ICIkZW5hYmxlX2d0ayIgPSBhdXRvXSxbCisgCUFTX0lGKFt0ZXN0ICIkaGF2ZV9ndGsiID0gInllcyIgJiYgdGVzdCAiJGhhdmVfcG9sa2l0IiA9ICJ5ZXMiXSxbZW5hYmxlX2d0az15ZXNdLFtlbmFibGVfZ3RrPW5vXSkKKyBdKQorIEFTX0lGKFt0ZXN0ICIkZW5hYmxlX2d0ayIgPSAieWVzIl0sWworLQlBU19JRihbdGVzdCAiJGhhdmVfZ3RrIiA9ICJ5ZXMiICYmIHRlc3QgIiRoYXZlX3BvbGtpdCIgPSAieWVzIl0sW10sWworLQkJQUNfTVNHX0VSUk9SKFstLWVuYWJsZS1ndGsgcmVxdWlyZXMgZ3RrKy0zLjAgPj0gZ3RrX3JlcXVpcmVkX3ZlcnNpb24gYW5kIHBvbGtpdC1nb2JqZWN0LTFdKQorKwlBU19JRihbdGVzdCAiJGhhdmVfZ3RrIiA9ICJ5ZXMiXSxbXSxbCisrCQlBQ19NU0dfRVJST1IoWy0tZW5hYmxlLWd0ayByZXF1aXJlcyBndGsrLTMuMCA+PSBndGtfcmVxdWlyZWRfdmVyc2lvbl0pCisgCV0pCisgXSkKKyBBTV9DT05ESVRJT05BTChFTkFCTEVfR1RLLCB0ZXN0ICIkZW5hYmxlX2d0ayIgPSAieWVzIikKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLUZvcndhcmQtcG9ydC1taXBzLWFybS1tZW1vcnktYmFycmllci1wYXRjaGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLUZvcndhcmQtcG9ydC1taXBzLWFybS1tZW1vcnktYmFycmllci1wYXRjaGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyZTgwNGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL2ZpbGVzLzAwMDEtRm9yd2FyZC1wb3J0LW1pcHMtYXJtLW1lbW9yeS1iYXJyaWVyLXBhdGNoZXMucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorRnJvbSBhMmQzODVlNTA0MzIzNjQxYjExMjc4MjE4MzNjNjFlNzczMDFjOTBiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK0RhdGU6IFNhdCwgMTEgSnVuIDIwMTYgMjI6NDU6MzcgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gRm9yd2FyZCBwb3J0IG1pcHMgJiBhcm0gbWVtb3J5IGJhcnJpZXIgcGF0Y2hlcworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CistLS0KKyBsaWIvdXRpbC91dGlsLmggfCAxNSArKysrKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbGliL3V0aWwvdXRpbC5oIGIvbGliL3V0aWwvdXRpbC5oCitpbmRleCA1OTE3MjJkLi4wNzY4MDU2IDEwMDY0NAorLS0tIGEvbGliL3V0aWwvdXRpbC5oCisrKysgYi9saWIvdXRpbC91dGlsLmgKK0BAIC0yOSw0ICsyOSwxOSBAQAorICNkZWZpbmUgcmVhZF9iYXJyaWVyKCkgICAgICAgICAgIGFzbSB2b2xhdGlsZSgiIiA6OjogIm1lbW9yeSIpCisgI2VuZGlmCisgCisrI2lmZGVmIF9fYXJtX18KKysvKgorKyAqIFVzZSB0aGUgX19rdXNlcl9tZW1vcnlfYmFycmllciBoZWxwZXIgaW4gdGhlIENQVSBoZWxwZXIgcGFnZS4gU2VlCisrICogYXJjaC9hcm0va2VybmVsL2VudHJ5LWFybXYuUyBpbiB0aGUga2VybmVsIHNvdXJjZSBmb3IgZGV0YWlscy4KKysgKi8KKysjZGVmaW5lIHJlYWRfYmFycmllcigpICAgICAgICAgKCh2b2lkKCopKHZvaWQpKTB4ZmZmZjBmYTApKCkKKysjZW5kaWYKKysKKysjaWZkZWYgX19taXBzX18KKysjZGVmaW5lIHJlYWRfYmFycmllcigpICAgICAgICAgYXNtIHZvbGF0aWxlKCIuc2V0ICAgbWlwczJcblx0IiBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3luY1xuXHQiIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIuc2V0ICAgbWlwczAiIDo6OiAibWVtb3J5IikKKysjZW5kaWYKKysKKysKKyAjZW5kaWYgLyogU1BfVVRJTF9IICovCistLSAKKzIuMS40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2YvZmlsZXMvMDAwMS1jYWxsZ3JhcGgtVXNlLVU2NF9UT19QT0lOVEVSLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLWNhbGxncmFwaC1Vc2UtVTY0X1RPX1BPSU5URVIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWMxMzg0YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2YvZmlsZXMvMDAwMS1jYWxsZ3JhcGgtVXNlLVU2NF9UT19QT0lOVEVSLnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK0Zyb20gMDU4MTZlNmY5Y2Q2NWIyNjI0YmIwNGRlNjVmZGY2MTAzMWM3MDE3ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitEYXRlOiBGcmksIDEwIEp1biAyMDE2IDE0OjAxOjU0ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIGNhbGxncmFwaDogVXNlIFU2NF9UT19QT0lOVEVSCisKK1RoaXMgZml4ZXMgYSAiY2FzdCB0byBwb2ludGVyIGZyb20gaW50ZWdlciBvZiBkaWZmZXJlbnQgc2l6ZSIgb24gaTU4Ni4KKworU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgbGliL3NwLWNhbGxncmFwaC12aWV3LmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWIvc3AtY2FsbGdyYXBoLXZpZXcuYyBiL2xpYi9zcC1jYWxsZ3JhcGgtdmlldy5jCitpbmRleCAwMmNjMTdiLi41ODMxNWIwIDEwMDY0NAorLS0tIGEvbGliL3NwLWNhbGxncmFwaC12aWV3LmMKKysrKyBiL2xpYi9zcC1jYWxsZ3JhcGgtdmlldy5jCitAQCAtMTM1LDcgKzEzNSw3IEBAIGJ1aWxkX2Z1bmN0aW9uc19zdG9yZSAoU3RhY2tOb2RlICpub2RlLAorIAorICAgZ3RrX2xpc3Rfc3RvcmVfYXBwZW5kIChzdGF0ZS0+c3RvcmUsICZpdGVyKTsKKyAgIGd0a19saXN0X3N0b3JlX3NldCAoc3RhdGUtPnN0b3JlLCAmaXRlciwKKy0gICAgICAgICAgICAgICAgICAgICAgQ09MVU1OX05BTUUsIChjb25zdCBnY2hhciAqKW5vZGUtPmRhdGEsCisrICAgICAgICAgICAgICAgICAgICAgIENPTFVNTl9OQU1FLCBVNjRfVE9fUE9JTlRFUihub2RlLT5kYXRhKSwKKyAgICAgICAgICAgICAgICAgICAgICAgQ09MVU1OX1NFTEYsIDEwMC4wICogc2l6ZSAvIHN0YXRlLT5wcm9maWxlX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgIENPTFVNTl9UT1RBTCwgMTAwLjAgKiB0b3RhbCAvIHN0YXRlLT5wcm9maWxlX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgIENPTFVNTl9QT0lOVEVSLCBub2RlLAorLS0gCisyLjEuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL2ZpbGVzLzAwMDEtY29uZmlndXJlLUFkZC1vcHRpb24tdG8tZW5hYmxlLWRpc2FibGUtcG9sa2l0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLWNvbmZpZ3VyZS1BZGQtb3B0aW9uLXRvLWVuYWJsZS1kaXNhYmxlLXBvbGtpdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNThkOTk3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLWNvbmZpZ3VyZS1BZGQtb3B0aW9uLXRvLWVuYWJsZS1kaXNhYmxlLXBvbGtpdC5wYXRjaApAQCAtMCwwICsxLDQxIEBACitGcm9tIDJiNDAwNWQ3MmQzMzkzOTMzYTc5MTRiZTEwMmVhNjU1MDVjNTM2Y2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiTWF4aW4gQi4gSm9obiIgPG1heGluLmpvaG5AaW50ZWwuY29tPgorRGF0ZTogVGh1LCAyMSBKdWwgMjAxNiAxMTo1MzozMSArMDMwMAorU3ViamVjdDogW1BBVENIXSBjb25maWd1cmU6IEFkZCBvcHRpb24gdG8gZW5hYmxlL2Rpc2FibGUgcG9sa2l0CisKK0NoYW5nZXMgdGhlIGNvbmZpZ3VyZSBiZWhhdmlvdXIgZnJvbSBhdXRvZGV0ZWN0aW5nIHRoZSBwb2xraXQgYnkgZGVmYXVsdAordG8gaGF2aW5nIGFuIG9wdGlvbiB0byBkaXNhYmxlIGl0IGV4cGxpY2l0bHkKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgOCArKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggMjI0NmQ1YS4uM2QzZmUwZiAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTA0LDEwICsxMDQsMTggQEAgUEtHX0NIRUNLX01PRFVMRVMoR1RLLAorICAgICAgICAgICAgICAgICAgIFtndGsrLTMuMCA+PSBndGtfcmVxdWlyZWRfdmVyc2lvbl0sCisgICAgICAgICAgICAgICAgICAgW2hhdmVfZ3RrPXllc10sCisgICAgICAgICAgICAgICAgICAgW2hhdmVfZ3RrPW5vXSkKKytBQ19BUkdfRU5BQkxFKFtwb2xraXRdLAorKyAgICAgICAgICAgICAgICAgICBBU19IRUxQX1NUUklORyhbLS1kaXNhYmxlLXBvbGtpdF0sIFtEbyBub3QgdXNlIFBvbGtpdF0pLAorKyAgICAgICAgICAgICAgICAgICBbZW5hYmxlX3BvbGtpdD0iJGVuYWJsZXZhbCJdLCBbZW5hYmxlX3BvbGtpdD0ieWVzIl0pCisrCisrQVNfSUYoW3Rlc3QgIngkZW5hYmxlX3BvbGtpdCIgPSAieHllcyJdLCBbCisgUEtHX0NIRUNLX01PRFVMRVMoUE9MS0lULAorICAgICAgICAgICAgICAgICAgIFtwb2xraXQtZ29iamVjdC0xXSwKKyAgICAgICAgICAgICAgICAgICBbaGF2ZV9wb2xraXQ9eWVzXSwKKyAgICAgICAgICAgICAgICAgICBbaGF2ZV9wb2xraXQ9bm9dKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKytBTV9DT05ESVRJT05BTChbSEFWRV9QT0xLSVRdLCBbdGVzdCAieCRlbmFibGVfcG9sa2l0IiA9ICJ4eWVzIl0pCisrCisgUEtHX0NIRUNLX01PRFVMRVMoU1lTVEVNRCwKKyAgICAgICAgICAgICAgICAgICBbbGlic3lzdGVtZCA+PSBzeXN0ZW1kX3JlcXVpcmVkX3ZlcnNpb25dLAorICAgICAgICAgICAgICAgICAgIFtoYXZlX3N5c3RlbWQ9eWVzXSwKKy0tIAorMi40LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy9kZWZpbmUtTlRfR05VX0JVSUxEX0lELnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy9kZWZpbmUtTlRfR05VX0JVSUxEX0lELnBhdGNoCmluZGV4IGRjYzJjYmUuLmY3NWRkYWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2YvZmlsZXMvZGVmaW5lLU5UX0dOVV9CVUlMRF9JRC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL2ZpbGVzL2RlZmluZS1OVF9HTlVfQlVJTERfSUQucGF0Y2gKQEAgLTcsOCArNyw4IEBACiAKIEluZGV4OiBnaXQvZWxmcGFyc2VyLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9lbGZwYXJzZXIuaAkyMDExLTA3LTE2IDE4OjU3OjQxLjAwMDAwMDAwMCAtMDcwMAotKysrIGdpdC9lbGZwYXJzZXIuaAkyMDExLTA3LTE2IDIwOjI4OjU0LjczMzgyOTg5NSAtMDcwMAorLS0tIGdpdC5vcmlnL2xpYi91dGlsL2VsZnBhcnNlci5oCTIwMTEtMDctMTYgMTg6NTc6NDEuMDAwMDAwMDAwIC0wNzAwCisrKysgZ2l0L2xpYi91dGlsL2VsZnBhcnNlci5oCTIwMTEtMDctMTYgMjA6Mjg6NTQuNzMzODI5ODk1IC0wNzAwCiBAQCAtMTcsNiArMTcsMTAgQEAKICAgKi8KICAjaW5jbHVkZSA8Z2xpYi5oPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy9ndWktYXJndW1lbnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL2ZpbGVzL2d1aS1hcmd1bWVudC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDJjMDUzZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL2ZpbGVzL2d1aS1hcmd1bWVudC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUFkZCB0aGUgYWJpbGl0eSB0byBleHBsaWNpdGx5IGVuYWJsZS9kaXNhYmxlIEdVSSBzdXBwb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotLS0tIGdpdC5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIGdpdC9jb25maWd1cmUuYWMKLUBAIC02MiwxMiArNjIsMjQgQEAgS01JQ1JPPWB1bmFtZSAtciB8IGN1dCAtZCIuIiAtZiAzIHwgY3V0Ci0gIyBQa2djb25maWcgZGVwZW5kZW5jaWVzCi0gCi0gY29yZV9kZXA9ImdsaWItMi4wID49IDIuNi4wIgotLWd1aV9kZXA9Imd0aystMi4wID4gMi42LjAgZ2RrLXBpeGJ1Zi0yLjAgcGFuZ29mdDIgbGliZ2xhZGUtMi4wIgotIAotIFBLR19DSEVDS19NT0RVTEVTKENPUkVfREVQLCAkY29yZV9kZXAsIFtdLCBBQ19NU0dfRVJST1IoW3N5c3Byb2YgZGVwZW5kZW5jaWVzIG5vdCBzYXRpc2ZpZWRdKSkKLSAKLS1idWlsZF9ndWk9eWVzCi0tUEtHX0NIRUNLX01PRFVMRVMoR1VJX0RFUCwgJGd1aV9kZXAsIFtdLCBidWlsZF9ndWk9bm8pCi0rZ3VpX2RlcD0iZ3RrKy0yLjAgPiAyLjYuMCBnZGstcGl4YnVmLTIuMCBwYW5nb2Z0MiBsaWJnbGFkZS0yLjAiCi0rCi0rQUNfQVJHX0VOQUJMRShbZ3VpXSwKLSsgIFtBU19IRUxQX1NUUklORyhbLS1kaXNhYmxlLWd1aV0sCi0rICAgIFtEaXNhYmxlIEdVSSBmdW5jdGlvbmFsaXR5IChyZXF1aXJlcyBndGsrLCBnZGstcGl4YnVmLCBwYW5nb2Z0MiwgbGliZ2xhZGUpIEA8OkBkZWZhdWx0PWF1dG9AOj5AXSldLAotKyAgW10sCi0rICBbZW5hYmxlX2d1aT1hdXRvXSkKLSsKLStidWlsZF9ndWk9bm8KLStBU19JRihbdGVzdCAieCRlbmFibGVfZ3VpIiAhPSB4bm9dLAotKyAgW1BLR19DSEVDS19NT0RVTEVTKEdVSV9ERVAsICRndWlfZGVwLCBidWlsZF9ndWk9eWVzLAotKyAgICBbaWYgdGVzdCAieCRlbmFibGVfZ3VpIiAhPSB4YXV0bzsgdGhlbgotKyAgICAgICBBQ19NU0dfRkFJTFVSRSgKLSsgICAgICAgICBbLS1lbmFibGUtZ3VpIHdhcyBnaXZlbiwgYnV0IGd1aSBkZXBlbmRlbmNpZXMgd2VyZSBub3Qgc2F0aXNmaWVkXSkKLSsgICAgIGZpXSldKQotIAotIEFNX0NPTkRJVElPTkFMKFtCVUlMRF9HVUldLCBbdGVzdCAiJGJ1aWxkX2d1aSIgPSB5ZXNdKQotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy9ybWItYXJtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy9ybWItYXJtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTNhYzY0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2YvZmlsZXMvcm1iLWFybS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUluZGV4OiBnaXQvdXRpbC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvdXRpbC5oCTIwMTAtMTItMDcgMjI6NDE6NTcuMTU2MjQzMDAxIC0wNjAwCi0rKysgZ2l0L3V0aWwuaAkyMDEwLTEyLTA3IDIyOjQzOjQ3LjYxNjI0MzAwMiAtMDYwMAotQEAgLTM3LDQgKzM3LDEzIEBACi0gI2RlZmluZSBjcHVfcmVsYXgoKSAgICAgYXNtIHZvbGF0aWxlKCIiIDo6OiAibWVtb3J5Iik7Ci0gI2VuZGlmCi0gCi0rI2lmZGVmIF9fYXJtX18KLSsvKgotKyAqIFVzZSB0aGUgX19rdXNlcl9tZW1vcnlfYmFycmllciBoZWxwZXIgaW4gdGhlIENQVSBoZWxwZXIgcGFnZS4gU2VlCi0rICogYXJjaC9hcm0va2VybmVsL2VudHJ5LWFybXYuUyBpbiB0aGUga2VybmVsIHNvdXJjZSBmb3IgZGV0YWlscy4KLSsgKi8KLSsjZGVmaW5lIHJtYigpCQkoKHZvaWQoKikodm9pZCkpMHhmZmZmMGZhMCkoKQotKyNkZWZpbmUgY3B1X3JlbGF4KCkJYXNtIHZvbGF0aWxlKCIiOjo6Im1lbW9yeSIpCi0rI2VuZGlmCi0rCi0gI2VuZGlmCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL2ZpbGVzL3JtYi1taXBzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy9ybWItbWlwcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTA1NWI4YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL2ZpbGVzL3JtYi1taXBzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUluZGV4OiBnaXQvdXRpbC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvdXRpbC5oCTIwMTAtMTItMDggMDE6MjI6NDQuNDg2MjQzMDAxIC0wNjAwCi0rKysgZ2l0L3V0aWwuaAkyMDEwLTEyLTA4IDAxOjIzOjI3LjgzNjI0MzAwMSAtMDYwMAotQEAgLTM3LDQgKzM3LDE1IEBACi0gI2RlZmluZSBjcHVfcmVsYXgoKSAgICAgYXNtIHZvbGF0aWxlKCIiIDo6OiAibWVtb3J5Iik7Ci0gI2VuZGlmCi0gCi0rI2lmZGVmIF9fbWlwc19fCi0rI2RlZmluZSBybWIoKQkJYXNtIHZvbGF0aWxlKAkJCQkJXAotKwkJCQkiLnNldAltaXBzMlxuXHQiCQkJXAotKwkJCQkic3luY1xuXHQiCQkJCVwKLSsJCQkJIi5zZXQJbWlwczAiCQkJCVwKLSsJCQkJOiAvKiBubyBvdXRwdXQgKi8JCQlcCi0rCQkJCTogLyogbm8gaW5wdXQgKi8JCQlcCi0rCQkJCTogIm1lbW9yeSIpCi0rI2RlZmluZSBjcHVfcmVsYXgoKQlhc20gdm9sYXRpbGUoIiIgOjo6ICJtZW1vcnkiKQotKyNlbmRpZgotKwotICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9zeXNwcm9mX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2Yvc3lzcHJvZl9naXQuYmIKaW5kZXggODRjNmFhZC4uOGQ4YjYyNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9zeXNwcm9mX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL3N5c3Byb2ZfZ2l0LmJiCkBAIC0xLDMxICsxLDQwIEBACiBTVU1NQVJZID0gIlN5c3RlbS13aWRlIFBlcmZvcm1hbmNlIFByb2ZpbGVyIGZvciBMaW51eCIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKK0xJQ0VOU0UgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3NwLWFwcGxpY2F0aW9uLmM7ZW5kbGluZT0xNzttZDU9NDBlNTU1NzdlZjEyMmM4OGZlMjAwNTJhY2RhNjQ4NzUiCisKK2luaGVyaXQgZ25vbWViYXNlIGdldHRleHQgc3lzdGVtZAogCiBERVBFTkRTID0gImdsaWItMi4wIgogCi1TUkNSRVYgPSAiY2Q0NGVlNjY0NGMzNjQxNTA3ZmI1M2I4YTJhNjkxMzdmMjk3MTIxOSIKLVBWID0gIjEuMi4wK2dpdCR7U1JDUFZ9IgorUyA9ICIke1dPUktESVJ9L2dpdCIKK1NSQ1JFViA9ICI5YzZjZWM5YjQ5NzY2YmY3N2MxNzEzYmM1YTdjNmQ2NTFlNjI4MDY4IgorUFYgPSAiMy4yMC4wK2dpdCR7U1JDUFZ9IgogCiBTUkNfVVJJID0gImdpdDovL2dpdC5nbm9tZS5vcmcvc3lzcHJvZiBcCiAgICAgICAgICAgIGZpbGU6Ly9kZWZpbmUtTlRfR05VX0JVSUxEX0lELnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2d1aS1hcmd1bWVudC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1BZGQtb3B0aW9uLXRvLWVuYWJsZS1kaXNhYmxlLXBvbGtpdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURpc2FibGUtY2hlY2stZm9yLXBvbGtpdC1mb3ItVUkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Bdm9pZC1idWlsZGluZy1kb2NzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY2FsbGdyYXBoLVVzZS1VNjRfVE9fUE9JTlRFUi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZvcndhcmQtcG9ydC1taXBzLWFybS1tZW1vcnktYmFycmllci1wYXRjaGVzLnBhdGNoIFwKICAgICAgICAgICAiCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJkNTZlODQ5MjAzM2I2MGUyNDc2MzQ3MzFlN2Y3NjBiOSIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjRhMzM4YWQ0MWJmZmZhZTg3ZWYyODFmNmU3NWM5NjYwYjNlMGM2NjcxYmY1MjMzYmUwYzNmNTVhNWU1YjFjZTUiCiAKLVNSQ19VUklfYXBwZW5kX2FybSAgPSAiIGZpbGU6Ly9ybWItYXJtLnBhdGNoIgotU1JDX1VSSV9hcHBlbmRfYXJtZWIgID0gIiBmaWxlOi8vcm1iLWFybS5wYXRjaCIKLVNSQ19VUklfYXBwZW5kX21pcHMgPSAiIGZpbGU6Ly9ybWItbWlwcy5wYXRjaCIKLVNSQ19VUklfYXBwZW5kX21pcHM2NCA9ICIgZmlsZTovL3JtYi1taXBzLnBhdGNoIgotU1JDX1VSSV9hcHBlbmRfbWlwczY0bjMyID0gIiBmaWxlOi8vcm1iLW1pcHMucGF0Y2giCitBVVRPVE9PTFNfQVVYRElSID0gIiR7U30vYnVpbGQtYXV4IgogCi1TID0gIiR7V09SS0RJUn0vZ2l0IgorRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLWNvbXBpbGUtd2FybmluZ3MiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdESVNUUk9fRkVBVFVSRVMnLCAnJHtHVEszRElTVFJPRkVBVFVSRVN9JywgJ2d0aycsICcnLCBkKX0iCitQQUNLQUdFQ09ORklHW2d0a10gPSAiLS1lbmFibGUtZ3RrLC0tZGlzYWJsZS1ndGssZ3RrKzMiCitQQUNLQUdFQ09ORklHW3BvbGtpdF0gPSAiLS1lbmFibGUtcG9sa2l0LC0tZGlzYWJsZS1wb2xraXQscG9sa2l0IGRidXMiCiAKLVBBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnRElTVFJPX0ZFQVRVUkVTJywgJyR7R1RLMkRJU1RST0ZFQVRVUkVTfScsICdndWknLCAnJywgZCl9IgotUEFDS0FHRUNPTkZJR1tndWldID0gIi0tZW5hYmxlLWd1aSwtLWRpc2FibGUtZ3VpLGd0aysgZ2RrLXBpeGJ1ZiBwYW5nbyBsaWJnbGFkZSIKK1NPTElCUyA9ICIuc28iCitGSUxFU19TT0xJQlNERVYgPSAiIgorRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vaWNvbnMvIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncG9sa2l0JywgJ3N5c3Byb2YyLnNlcnZpY2UnLCAnJywgZCl9IgogCiAjIFdlIGRvIG5vdCB5ZXQgd29yayBmb3IgYWFyY2g2NC4KLSMKIENPTVBBVElCTEVfSE9TVCA9ICJeKD8hYWFyY2g2NCkuKiIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC11cHJvYmVzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAtdXByb2Jlc19naXQuYmIKaW5kZXggMzY4NmMyZi4uNDY4MjBlZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC11cHJvYmVzX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLXVwcm9iZXNfZ2l0LmJiCkBAIC0xMyw4ICsxMyw2IEBACiAKIEZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3N5c3RlbXRhcC9ydW50aW1lL3Vwcm9iZXMiCiAKLUVYVFJBX09FTUFLRSA9ICIiCi0KICMgQ29tcGlsZSBhbmQgaW5zdGFsbCB0aGUgdXByb2JlcyBrZXJuZWwgbW9kdWxlIG9uIG1hY2hpbmVzIHdpdGggdXRyYWNlCiAjIHN1cHBvcnQuICBOb3RlIHRoYXQgc3RhcHJ1biBleHBlY3RzIGl0IGluIHRoZSBzeXN0ZW10YXAvcnVudGltZSBkaXJlY3RvcnksCiAjIG5vdCBpbiAvbGliL21vZHVsZXMuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwL2RvY3Byb2MtYnVpbGQtZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC9kb2Nwcm9jLWJ1aWxkLWZpeC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzNhODk5NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwL2RvY3Byb2MtYnVpbGQtZml4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBUb20gWmFudXNzaSA8dG9tLnphbnVzc2lAaW50ZWwuY29tPgotCi1JbmRleDogZ2l0L2RvYy9TeXN0ZW1UYXBfVGFwc2V0X1JlZmVyZW5jZS9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2RvYy9TeXN0ZW1UYXBfVGFwc2V0X1JlZmVyZW5jZS9NYWtlZmlsZS5hbQkyMDEyLTA0LTEzIDA4OjQzOjQ2LjI2MzMzOTAwMyAtMDUwMAotKysrIGdpdC9kb2MvU3lzdGVtVGFwX1RhcHNldF9SZWZlcmVuY2UvTWFrZWZpbGUuYW0JMjAxMi0wNC0xMyAwOTozMToyMi40NzAwODM5MTUgLTA1MDAKLUBAIC0yNyw2ICsyNywxMCBAQAotIG5vaW5zdF9QUk9HUkFNUyA9IGRvY3Byb2MKLSBTUkNUUkVFPSQoYWJzX3RvcF9zcmNkaXIpLwotIERPQ1BST0M9JChhYnNfYnVpbGRkaXIpL2RvY3Byb2MKLStkb2Nwcm9jX0xJTksgPSAkKENDX0ZPUl9CVUlMRCkgJChMREZMQUdTX0ZPUl9CVUlMRCkgLW8gJEAKLSsKLStkb2Nwcm9jLm86ICQoc3JjZGlyKS9kb2Nwcm9jLmMKLSsJJChDQ19GT1JfQlVJTEQpIC1jICQoQ0ZMQUdTX0ZPUl9CVUlMRCkgLW8gJEAgJChzcmNkaXIpL2RvY3Byb2MuYwotIAotIGFsbDogJChQREZET0NTKSBzdGFtcC1odG1sZG9jcyBzdGFtcC1tYW5kb2NzCi0gdGFwc2V0cy54bWw6IGRvY3Byb2MgJChzaGVsbCBmaW5kICQoU1JDVFJFRSkvdGFwc2V0IC1uYW1lICcqLnN0cCcpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwL21vbml0b3Itb3B0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC9tb25pdG9yLW9wdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDQzYTc5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC9tb25pdG9yLW9wdGlvbi5wYXRjaApAQCAtMCwwICsxLDI4IEBACitBZGQgYW4gb3B0aW9uIHRvIGV4cGxpY2l0bHkgZGlzYWJsZSB0aGUgbW9uaXRvciAoYW5kIHRoZXJlZm9yZSB0aGUgZGVwZW5kZW5jeSBvbgoranNvbi1jIGFuZCBuY3Vyc2VzKS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBjZDc4MWEyLi5lNTYwNzlhIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC01NzAsMTMgKzU3NCwxNiBAQCBkbmwgU2VlIGlmIHdlIGhhdmUgZW5vdWdoIGxpYnJhcmllcyBhbmQgdG9vbHMgdG8gYnVpbGQgdGhlIHZpcnQgc2VydmVyCisgZmkKKyBBTV9DT05ESVRJT05BTChbQlVJTERfVklSVF0sIFt0ZXN0ICIke2hhdmVfbGlidmlydH0iID09ICJ5ZXMiIC1hICIke2hhdmVfbGlieG1sMn0iID09ICJ5ZXMiIC1hICIkZW5hYmxlX3ZpcnQiICE9ICJubyJdKQorCisrQUNfQVJHX0VOQUJMRShbbW9uaXRvcl0sIEFTX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtbW9uaXRvcl0sW0Rpc2FibGUgbW9uaXRvcl0pKQorK2lmIHRlc3QgIiRlbmFibGVfbW9uaXRvciIgIT0gIm5vIjsgdGhlbgorIGRubCBDaGVjayBmb3IgcHJlc2VuY2Ugb2YganNvbi1jIGFuZCBuY3Vyc2VzIGZvciB1c2UgaW4gbW9uaXRvciBtb2RlCisgUEtHX0NIRUNLX01PRFVMRVMoW2pzb25jXSwgW2pzb24tY10sIFtoYXZlX2pzb25jPXllc10sIFtoYXZlX2pzb25jPW5vXSkKKyBQS0dfQ0hFQ0tfTU9EVUxFUyhbbmN1cnNlc10sIFtuY3Vyc2VzXSwgW2hhdmVfbmN1cnNlcz15ZXNdLCBbaGF2ZV9uY3Vyc2VzPW5vXSkKKy1BTV9DT05ESVRJT05BTChbSEFWRV9NT05JVE9SX0xJQlNdLCBbdGVzdCAiJHtoYXZlX2pzb25jfSIgPT0gInllcyIgLWEgIiR7aGF2ZV9uY3Vyc2VzfSIgPT0gInllcyJdKQorIGlmIHRlc3QgIiR7aGF2ZV9qc29uY30iID09ICJ5ZXMiIC1hICIke2hhdmVfbmN1cnNlc30iID09IHllczsgdGhlbgorICAgQUNfREVGSU5FKFtIQVZFX01PTklUT1JfTElCU10sWzFdLFtEZWZpbmUgdG8gMSBpZiBqc29uLWMgYW5kIG5jdXJzZXMgbGlicmFyaWVzIGFyZSBpbnN0YWxsZWRdKQorIGZpCisrZmkKKytBTV9DT05ESVRJT05BTChbSEFWRV9NT05JVE9SX0xJQlNdLCBbdGVzdCAiJHtoYXZlX2pzb25jfSIgPT0gInllcyIgLWEgIiR7aGF2ZV9uY3Vyc2VzfSIgPT0gInllcyIgLWEgIiRlbmFibGVfbW9uaXRvciIgIT0gIm5vIl0pCisKKyBBQ19DQUNIRV9DSEVDSyhbZm9yIGFzc2VtYmxlciAuc2VjdGlvbiAiPyIgZmxhZ3Mgc3VwcG9ydF0sIHN0YXBfY3Zfc2VjdGlvbnEsIFsKKyBvbGRfQ0ZMQUdTPSIkQ0ZMQUdTIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwX2dpdC5iYgppbmRleCA5NzA2NGI4Li40M2JmNjllIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwX2dpdC5iYgpAQCAtMiwxNyArMiwxNCBAQAogCiByZXF1aXJlIHN5c3RlbXRhcF9naXQuaW5jCiAKLURFUEVORFMgPSAiZWxmdXRpbHMgc3FsaXRlMyBzeXN0ZW10YXAtbmF0aXZlIgotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiZWxmdXRpbHMtbmF0aXZlIHNxbGl0ZTMtbmF0aXZlIGdldHRleHQtbmF0aXZlIgotREVQRU5EU19jbGFzcy1uYXRpdmVzZGsgPSAibmF0aXZlc2RrLWVsZnV0aWxzIG5hdGl2ZXNkay1zcWxpdGUzIG5hdGl2ZXNkay1nZXR0ZXh0IgorREVQRU5EUyA9ICJib29zdCBlbGZ1dGlscyIKIAotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbiBiYXNoIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlICs9ICJweXRob24tbmF0aXZlIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlc2RrICs9ICJweXRob24tbmF0aXZlIgorUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMtY29yZSBiYXNoIgogCiBFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1saWJlbGY9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IC0td2l0aG91dC1ycG0gXAogICAgICAgICAgICAgLS13aXRob3V0LW5zcyAtLXdpdGhvdXQtYXZhaGkgLS13aXRob3V0LWR5bmluc3QgXAogICAgICAgICAgICAgLS1kaXNhYmxlLXNlcnZlciAtLWRpc2FibGUtZ3JhcGhlciAtLWVuYWJsZS1wcm9sb2d1ZXMgXAorICAgICAgICAgICAgLS13aXRoLXB5dGhvbjMgXAogICAgICAgICAgICAgYWNfY3ZfcHJvZ19oYXZlX2phdmFjPW5vIFwKICAgICAgICAgICAgIGFjX2N2X3Byb2dfaGF2ZV9qYXI9bm8gIgogCkBAIC0yMCw4ICsxNywxMCBAQAogCiBFWFRSQV9PRUNPTkYgKz0gIiR7U1RBUF9ET0NTfSAiCiAKLVBBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHID8/PSAic3FsaXRlIG1vbml0b3IiCiBQQUNLQUdFQ09ORklHW2xpYnZpcnRdID0gIi0tZW5hYmxlLWxpYnZpcnQsLS1kaXNhYmxlLWxpYnZpcnQsbGlidmlydCIKK1BBQ0tBR0VDT05GSUdbc3FsaXRlXSA9ICItLWVuYWJsZS1zcWxpdGUsLS1kaXNhYmxlLXNxbGl0ZSxzcWxpdGUzIgorUEFDS0FHRUNPTkZJR1ttb25pdG9yXSA9ICItLWVuYWJsZS1tb25pdG9yLC0tZGlzYWJsZS1tb25pdG9yLG5jdXJzZXMganNvbi1jIgogCiBpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwX2dpdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwX2dpdC5pbmMKaW5kZXggNjU2ZjE1Zi4uMzA0ZWI5OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcF9naXQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmluYwpAQCAtMSwxNCArMSwxNCBAQAogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotU1JDUkVWID0gIjcwMDlmMmY3ODJlNTJkNjEwNWZlNjhkNmVhMmE5ODIwYTEwOTljMDYiCi1QViA9ICIyLjkiCitTUkNSRVYgPSAiNjE2ZWM3YTBiOTE2ZGY3Nzg1ZDkxMWI4MjRjM2RmNmViMDIyYjIxMyIKK1BWID0gIjMuMCIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9zb3VyY2V3YXJlLm9yZy9naXQvc3lzdGVtdGFwLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly9kb2Nwcm9jLWJ1aWxkLWZpeC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9vYnNvbGV0ZV9hdXRvbWFrZV9tYWNyb3MucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vc3lzdGVtX21hcF9sb2NhdGlvbi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtYWxsb3ctdG8tZGlzYWJsZS1saWJ2aXJ0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3gzMl9hYmlfdGltZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9tb25pdG9yLW9wdGlvbi5wYXRjaCBcCiAgICAgICAgICAgIgogCiAjIHN5c3RlbXRhcCBkb2Vzbid0IHN1cHBvcnQgbWlwcwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvMDAwMS10b3BvbG9neS1BZGQtbWlzc2luZy1pbmNsdWRlLXN5cy1zdGF0LmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDAxLXRvcG9sb2d5LUFkZC1taXNzaW5nLWluY2x1ZGUtc3lzLXN0YXQuaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGVhZDBjZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDAxLXRvcG9sb2d5LUFkZC1taXNzaW5nLWluY2x1ZGUtc3lzLXN0YXQuaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUZyb20gM2YxZGJhOWE4MjFiNTNiNDIwMDE2MDVmOWExMjZhOTU4ODA0ODg0ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRha2FzaGkgSXdhaSA8dGl3YWlAc3VzZS5kZT4KLURhdGU6IE1vbiwgOSBOb3YgMjAxNSAxMzozNzoyNiArMDEwMAotU3ViamVjdDogW1BBVENIXSB0b3BvbG9neTogQWRkIG1pc3NpbmcgaW5jbHVkZSBzeXMvc3RhdC5oCi0KLU5lY2Vzc2FyeSBmb3IgcHJvcGVyIGRlZmluaXRpb25zIG9mIFNfSVJVU1IgJiBjby4gT3RoZXJ3aXNlIGl0Ci1yZXN1bHRzIGluIGNvbXBpbGUgZXJyb3JzIHdpdGggb2xkIGdsaWJjIGFuZCB1Y2xpYmM6Ci0gIHBhcnNlci5jOiBJbiBmdW5jdGlvbiAnc25kX3RwbGdfYnVpbGRfZmlsZSc6Ci0gIHBhcnNlci5jOjI2MjogZXJyb3I6ICdTX0lSVVNSJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbikKLSAgcGFyc2VyLmM6MjYyOiBlcnJvcjogKEVhY2ggdW5kZWNsYXJlZCBpZGVudGlmaWVyIGlzIHJlcG9ydGVkIG9ubHkgb25jZQotICBwYXJzZXIuYzoyNjI6IGVycm9yOiBmb3IgZWFjaCBmdW5jdGlvbiBpdCBhcHBlYXJzIGluLikKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBUYWthc2hpIEl3YWkgPHRpd2FpQHN1c2UuZGU+Ci1TaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KLS0tLQotIHNyYy90b3BvbG9neS9wYXJzZXIuYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3RvcG9sb2d5L3BhcnNlci5jIGIvc3JjL3RvcG9sb2d5L3BhcnNlci5jCi1pbmRleCA4MGEwYWUwLi4xOGJiOWM3IDEwMDY0NAotLS0tIGEvc3JjL3RvcG9sb2d5L3BhcnNlci5jCi0rKysgYi9zcmMvdG9wb2xvZ3kvcGFyc2VyLmMKLUBAIC0xNiw2ICsxNiw3IEBACi0gICAgICAgICAgICBMaWFtIEdpcmR3b29kIDxsaWFtLnIuZ2lyZHdvb2RAbGludXguaW50ZWwuY29tPgotICovCi0gCi0rI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0gI2luY2x1ZGUgImxpc3QuaCIKLSAjaW5jbHVkZSAidHBsZ19sb2NhbC5oIgotIAotLS0gCi0yLjQuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi9hdm9pZC1pbmNsdWRpbmctc3lzLXBvbGwuaC1kaXJlY3RseS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliL2F2b2lkLWluY2x1ZGluZy1zeXMtcG9sbC5oLWRpcmVjdGx5LnBhdGNoCmluZGV4IDE2MTYxOWIuLjNkNDQ1ODUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliL2F2b2lkLWluY2x1ZGluZy1zeXMtcG9sbC5oLWRpcmVjdGx5LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliL2F2b2lkLWluY2x1ZGluZy1zeXMtcG9sbC5oLWRpcmVjdGx5LnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA3ZGNmNDY5NjllODVjODgxYzkwMWRmNGI0OTMwOWU5MDkxY2FkMTZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBjMmMxM2NmMGM0Njk4NjJjZDM5YjJhNjk4NjIwMDIzMzFhYjdjOGNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KIERhdGU6IFR1ZSwgOSBGZWIgMjAxNiAxNDowMToxOCAtMDgwMAogU3ViamVjdDogW1BBVENIXSBhdm9pZCBpbmNsdWRpbmcgPHN5cy9wb2xsLmg+IGRpcmVjdGx5CkBAIC0yNCw3ICsyNCw3IEBACiAgMTIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9hc2VydmVyL2FzZXJ2ZXIuYyBiL2FzZXJ2ZXIvYXNlcnZlci5jCi1pbmRleCAxNTc5ZGE3Li5lZjY0MjQ4IDEwMDY0NAoraW5kZXggYWMyMDcwNi4uNDZmNzMxYSAxMDA2NDQKIC0tLSBhL2FzZXJ2ZXIvYXNlcnZlci5jCiArKysgYi9hc2VydmVyL2FzZXJ2ZXIuYwogQEAgLTIwLDcgKzIwLDcgQEAKQEAgLTYyLDcgKzYyLDcgQEAKICAjaW5jbHVkZSA8c3RkYXJnLmg+CiAgI2luY2x1ZGUgPGVuZGlhbi5oPgogZGlmZiAtLWdpdCBhL2luY2x1ZGUvbG9jYWwuaCBiL2luY2x1ZGUvbG9jYWwuaAotaW5kZXggYjQyOWY1ZC4uZTA1ODk4ZiAxMDA2NDQKK2luZGV4IDMxN2YyZTMuLjZhNDNhNDcgMTAwNjQ0CiAtLS0gYS9pbmNsdWRlL2xvY2FsLmgKICsrKyBiL2luY2x1ZGUvbG9jYWwuaAogQEAgLTQ3LDcgKzQ3LDcgQEAKQEAgLTczLDIwICs3MywyMCBAQAogKyNpbmNsdWRlIDxwb2xsLmg+CiAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorICNpZiBkZWZpbmVkKF9fbGludXhfXykKIGRpZmYgLS1naXQgYS9zcmMvY29udHJvbC9jb250cm9sLmMgYi9zcmMvY29udHJvbC9jb250cm9sLmMKLWluZGV4IDRhMjhjZjYuLjA3MWM1ZGIgMTAwNjQ0CitpbmRleCA2YzAwYjhlLi5mZDBjMzAzIDEwMDY0NAogLS0tIGEvc3JjL2NvbnRyb2wvY29udHJvbC5jCiArKysgYi9zcmMvY29udHJvbC9jb250cm9sLmMKLUBAIC00OCw3ICs0OCw3IEBAIGFuZCBJRUM5NTggc3RydWN0dXJlLgorQEAgLTkwLDcgKzkwLDcgQEAgSS9PIG9wZXJhdGlvbnMuCiAgI2luY2x1ZGUgPHN0cmluZy5oPgogICNpbmNsdWRlIDxmY250bC5oPgogICNpbmNsdWRlIDxzaWduYWwuaD4KIC0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KICsjaW5jbHVkZSA8cG9sbC5oPgorICNpbmNsdWRlIDxzdGRib29sLmg+CiAgI2luY2x1ZGUgImNvbnRyb2xfbG9jYWwuaCIKICAKLSAvKioKIGRpZmYgLS1naXQgYS9zcmMvY29udHJvbC9jb250cm9sX3NobS5jIGIvc3JjL2NvbnRyb2wvY29udHJvbF9zaG0uYwogaW5kZXggYmQwN2Q0YS4uOWEyZTI2OCAxMDA2NDQKIC0tLSBhL3NyYy9jb250cm9sL2NvbnRyb2xfc2htLmMKQEAgLTEwMSw3ICsxMDEsNyBAQAogICNpbmNsdWRlIDxzeXMvdWlvLmg+CiAgI2luY2x1ZGUgPHN5cy9tbWFuLmg+CiBkaWZmIC0tZ2l0IGEvc3JjL3BjbS9wY21fZGlyZWN0LmMgYi9zcmMvcGNtL3BjbV9kaXJlY3QuYwotaW5kZXggZmQzODc3Yy4uNTJhYzA5MyAxMDA2NDQKK2luZGV4IGMzOTI1Y2MuLjE4ZjFkZDUgMTAwNjQ0CiAtLS0gYS9zcmMvcGNtL3BjbV9kaXJlY3QuYwogKysrIGIvc3JjL3BjbS9wY21fZGlyZWN0LmMKIEBAIC0zMCw3ICszMCw3IEBACkBAIC0xMTQsNyArMTE0LDcgQEAKICAjaW5jbHVkZSA8c3lzL3NlbS5oPgogICNpbmNsdWRlIDxzeXMvd2FpdC5oPgogZGlmZiAtLWdpdCBhL3NyYy9wY20vcGNtX21tYXAuYyBiL3NyYy9wY20vcGNtX21tYXAuYwotaW5kZXggNWM0ZmJlMS4uMmNmYTdkYiAxMDA2NDQKK2luZGV4IDE5NDgyODkuLjRjZjIyMGEgMTAwNjQ0CiAtLS0gYS9zcmMvcGNtL3BjbV9tbWFwLmMKICsrKyBiL3NyYy9wY20vcGNtX21tYXAuYwogQEAgLTIyLDcgKzIyLDcgQEAKQEAgLTE1Myw3ICsxNTMsNyBAQAogICNpbmNsdWRlIDxzeXMvbW1hbi5oPgogICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CiBkaWZmIC0tZ2l0IGEvc3JjL3NlcS9zZXEuYyBiL3NyYy9zZXEvc2VxLmMKLWluZGV4IDYyMGNhM2YuLjY4MWNlZjEgMTAwNjQ0CitpbmRleCA5Mjc5ODMwLi5kMjAyN2NiIDEwMDY0NAogLS0tIGEvc3JjL3NlcS9zZXEuYwogKysrIGIvc3JjL3NlcS9zZXEuYwogQEAgLTc3Nyw3ICs3NzcsNyBAQCB2b2lkIGV2ZW50X2ZpbHRlcihzbmRfc2VxX3QgKnNlcSwgc25kX3NlcV9ldmVudF90ICpldikKQEAgLTE3OSw1ICsxNzksNSBAQAogICNpbmNsdWRlIDxzeXMvc2htLmg+CiAgI2luY2x1ZGUgImxpc3QuaCIKIC0tIAotMS45LjEKKzIuOC4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWJfMS4xLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3M2RhMjguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWJfMS4xLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1TVU1NQVJZID0gIkFMU0Egc291bmQgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuYWxzYS1wcm9qZWN0Lm9yZyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd0cmFjay5hbHNhLXByb2plY3Qub3JnL2Fsc2EtYnVnL2xvZ2luX3BhZ2UucGhwIgotU0VDVElPTiA9ICJsaWJzL211bHRpbWVkaWEiCi1MSUNFTlNFID0gIkxHUEx2Mi4xICYgR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9N2ZiYzMzODMwOWFjMzhmZWZjZDY0YjA0YmI5MDNlMzQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3NvY2tldC5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjY7bWQ1PTExZmY4OWE4YTdhNGE2OTBhNWM3OGVmZmU4MTU5NTQ1IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLSMgY29uZmlndXJlLmluIHNldHMgLURfX2FybV9fIG9uIHRoZSBjb21tYW5kIGxpbmUgZm9yIGFueSBhcm0gc3lzdGVtCi0jIChub3QganVzdCB0aG9zZSB3aXRoIHRoZSBBUk0gaW5zdHJ1Y3Rpb24gc2V0KSwgdGhpcyBzaG91bGQgYmUgcmVtb3ZlZCwKLSMgKG9yIHJlcGxhY2VkIGJ5IGEgcGVybWl0dGVkICNkZWZpbmUpLgotI0ZJWE1FOiByZW1vdmUgdGhlIGZvbGxvd2luZwotQVJNX0lOU1RSVUNUSU9OX1NFVCA9ICJhcm0iCi0KLVNSQ19VUkkgPSAiZnRwOi8vZnRwLmFsc2EtcHJvamVjdC5vcmcvcHViL2xpYi8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL0NoZWNrLWlmLXdvcmRleHAtZnVuY3Rpb24taXMtc3VwcG9ydGVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2F2b2lkLWluY2x1ZGluZy1zeXMtcG9sbC5oLWRpcmVjdGx5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtdG9wb2xvZ3ktQWRkLW1pc3NpbmctaW5jbHVkZS1zeXMtc3RhdC5oLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI2OTUxNWNhNzNjM2M0YTIxMmVmNDUxNjBkZWE4NDZjMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkZmRlNjVkMTFlODJiNjhmODJlNTYyYWI2MjI4YzFmYjdjNzg4NTQzNDVkM2M1N2UyYzY4YTlkZDNkYWUxZjE1IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotcmVxdWlyZSBhbHNhLWZwdS5pbmMKLUVYVFJBX09FQ09ORiArPSAiJHtAZ2V0X2Fsc2FfZnB1X3NldHRpbmcoYmIsIGQpfSAiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtcHl0aG9uIgotCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAtLXdpdGgtdmVyc2lvbmVkPW5vICIKLQotUEFDS0FHRVMgPSsgImFsc2Etc2VydmVyIGxpYmFzb3VuZCBhbHNhLWNvbmYtYmFzZSBhbHNhLWNvbmYgYWxzYS1kb2MiCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9LyR7QlBOfS9zbWl4ZXIvKi5zbyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9LyR7QlBOfS9zbWl4ZXIvKi5sYSIKLUZJTEVTX2xpYmFzb3VuZCA9ICIke2xpYmRpcn0vbGliYXNvdW5kLnNvLioiCi1GSUxFU19hbHNhLXNlcnZlciA9ICIke2JpbmRpcn0vKiIKLUZJTEVTX2Fsc2EtY29uZiA9ICIke2RhdGFkaXJ9L2Fsc2EvIgotRklMRVNfYWxzYS1jb25mLWJhc2UgPSAiXAotJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZiBcCi0ke2RhdGFkaXJ9L2Fsc2EvY2FyZHMvYWxpYXNlcy5jb25mIFwKLSR7ZGF0YWRpcn0vYWxzYS9wY20vZGVmYXVsdC5jb25mIFwKLSR7ZGF0YWRpcn0vYWxzYS9wY20vZG1peC5jb25mIFwKLSR7ZGF0YWRpcn0vYWxzYS9wY20vZHNub29wLmNvbmYiCi0KLVJERVBFTkRTX2xpYmFzb3VuZCA9ICJhbHNhLWNvbmYtYmFzZSBhbHNhLWNvbmYiCi0jIHVwZ3JhZGUgcGF0aAotUlBST1ZJREVTXyR7UE59LWRldiA9ICJhbHNhLWRldiIKLVJSRVBMQUNFU18ke1BOfS1kZXYgPSAiYWxzYS1kZXYiCi1SQ09ORkxJQ1RTXyR7UE59LWRldiA9ICJhbHNhLWRldiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMS4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWJfMS4xLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTMxM2RhNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMS4yLmJiCkBAIC0wLDAgKzEsNDQgQEAKK1NVTU1BUlkgPSAiQUxTQSBzb3VuZCBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hbHNhLXByb2plY3Qub3JnIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZy9tYWluL2luZGV4LnBocC9CdWdfVHJhY2tpbmciCitTRUNUSU9OID0gImxpYnMvbXVsdGltZWRpYSIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03ZmJjMzM4MzA5YWMzOGZlZmNkNjRiMDRiYjkwM2UzNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvc29ja2V0LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yNjttZDU9MTFmZjg5YThhN2E0YTY5MGE1Yzc4ZWZmZTgxNTk1NDUiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworU1JDX1VSSSA9ICJmdHA6Ly9mdHAuYWxzYS1wcm9qZWN0Lm9yZy9wdWIvbGliLyR7QlB9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vQ2hlY2staWYtd29yZGV4cC1mdW5jdGlvbi1pcy1zdXBwb3J0ZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYXZvaWQtaW5jbHVkaW5nLXN5cy1wb2xsLmgtZGlyZWN0bHkucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjE5NDZlNjQzOGI4MjYyYTdiOGZkYWRhY2QwZTA2YmE3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQzOGRhY2Q5ODkyYjA2YjhiZmYwNDkyM2MzODBiMzhmYjJlMzc5ZWU1NTM4OTM1ZmYzN2U0NWIzOTVkODYxZDYiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCityZXF1aXJlIGFsc2EtZnB1LmluYworRVhUUkFfT0VDT05GICs9ICIke0BnZXRfYWxzYV9mcHVfc2V0dGluZyhiYiwgZCl9ICIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1weXRob24iCisKK0VYVFJBX09FQ09ORl9hcHBlbmRfbGliYy11Y2xpYmMgPSAiIC0td2l0aC12ZXJzaW9uZWQ9bm8gIgorCitQQUNLQUdFUyA9KyAiYWxzYS1zZXJ2ZXIgbGliYXNvdW5kIGFsc2EtY29uZi1iYXNlIGFsc2EtY29uZiBhbHNhLWRvYyIKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vJHtCUE59L3NtaXhlci8qLnNvIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vJHtCUE59L3NtaXhlci8qLmxhIgorRklMRVNfbGliYXNvdW5kID0gIiR7bGliZGlyfS9saWJhc291bmQuc28uKiIKK0ZJTEVTX2Fsc2Etc2VydmVyID0gIiR7YmluZGlyfS8qIgorRklMRVNfYWxzYS1jb25mID0gIiR7ZGF0YWRpcn0vYWxzYS8iCitGSUxFU19hbHNhLWNvbmYtYmFzZSA9ICJcCiske2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mIFwKKyR7ZGF0YWRpcn0vYWxzYS9jYXJkcy9hbGlhc2VzLmNvbmYgXAorJHtkYXRhZGlyfS9hbHNhL3BjbS9kZWZhdWx0LmNvbmYgXAorJHtkYXRhZGlyfS9hbHNhL3BjbS9kbWl4LmNvbmYgXAorJHtkYXRhZGlyfS9hbHNhL3BjbS9kc25vb3AuY29uZiIKKworUkRFUEVORFNfbGliYXNvdW5kID0gImFsc2EtY29uZi1iYXNlIGFsc2EtY29uZiIKKyMgdXBncmFkZSBwYXRoCitSUFJPVklERVNfJHtQTn0tZGV2ID0gImFsc2EtZGV2IgorUlJFUExBQ0VTXyR7UE59LWRldiA9ICJhbHNhLWRldiIKK1JDT05GTElDVFNfJHtQTn0tZGV2ID0gImFsc2EtZGV2IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1wbHVnaW5zLzAwMDEtcHBoLWluY2x1ZGUtY29uZmlnLmgtZnJvbS1yYXRlX3NwZWV4cmF0ZS5jLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1wbHVnaW5zLzAwMDEtcHBoLWluY2x1ZGUtY29uZmlnLmgtZnJvbS1yYXRlX3NwZWV4cmF0ZS5jLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTViNmEyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtcGx1Z2lucy8wMDAxLXBwaC1pbmNsdWRlLWNvbmZpZy5oLWZyb20tcmF0ZV9zcGVleHJhdGUuYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUZyb20gNDM1MDMxNGM5NDE0ODk4MzNhOGJhYTkzMGUxNjUxMmU1NWY3MmExMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4KLURhdGU6IFdlZCwgMjcgSmFuIDIwMTYgMTM6MjI6MzggKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gcHBoOiBpbmNsdWRlIGNvbmZpZy5oIGZyb20gcmF0ZV9zcGVleHJhdGUuYwotCi1GaXhlcyBjb21waWxhdGlvbiBhZ2FpbnN0IGxpYnNwZWV4ZHNwIDEuMnJjMy4KLQotcmF0ZV9zcGVleHJhdGUuYyBpbmNsdWRlcyBzcGVleF9yZXNhbXBsZXIuaCwgd2hpY2ggZGVwZW5kcyBvbiBjb25maWcuaAotYnkgcmVmZXJlbmNpbmcgdGhlIEhBVkVfU1BFRVhfU1BFRVhEU1BfVFlQRVNfSCBtYWNyby4gQUZBSUsgaXQncyBub3QKLWEgZ29vZCBpZGVhIHRvIGluY2x1ZGUgY29uZmlnLmggZnJvbSBoZWFkZXJzIChJIGRvbid0IGtub3cvcmVtZW1iZXIKLXdoeSwgdGhvdWdoKSwgd2hpY2ggaXMgd2h5IEkgaW5jbHVkZSBjb25maWcuaCBmcm9tIHJhdGVfc3BlZXhyYXRlLmMKLWluc3RlYWQgb2Ygc3BlZXhfcmVzYW1wbGVyLmguCi0KLVVwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQgW2V4cGVjdGVkIGluIDEuMS4xXQotCi1TaWduZWQtb2ZmLWJ5OiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+Ci0tLS0KLSBwcGgvcmF0ZV9zcGVleHJhdGUuYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvcHBoL3JhdGVfc3BlZXhyYXRlLmMgYi9wcGgvcmF0ZV9zcGVleHJhdGUuYwotaW5kZXggMGExMzI1Yy4uOGZjNGNlZiAxMDA2NDQKLS0tLSBhL3BwaC9yYXRlX3NwZWV4cmF0ZS5jCi0rKysgYi9wcGgvcmF0ZV9zcGVleHJhdGUuYwotQEAgLTI4LDYgKzI4LDcgQEAKLSAgICBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotIAotKyNpbmNsdWRlICJjb25maWcuaCIKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8YWxzYS9hc291bmRsaWIuaD4KLSAjaW5jbHVkZSA8YWxzYS9wY21fcmF0ZS5oPgotLS0gCi0yLjcuMC5yYzMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1wbHVnaW5zXzEuMS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1wbHVnaW5zXzEuMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZWM2NTc1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtcGx1Z2luc18xLjEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi1TVU1NQVJZID0gIkFMU0EgUGx1Z2lucyIKLUhPTUVQQUdFID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnIgotU0VDVElPTiA9ICJtdWx0aW1lZGlhIgotCi0jIFRoZSBwcmltYXJ5IGxpY2Vuc2Ugb2YgYWxzYS1wbHVnaW5zIGlzIExHUEx2Mi4xLgotIwotIyBtNC9hdHRyaWJ1dGVzLm00IGlzIGxpY2Vuc2VkIHVuZGVyIEdQTHYyKy4gbTQvYXR0cmlidXRlcy5tNCBpcyBwYXJ0IG9mIHRoZQotIyBidWlsZCBzeXN0ZW0sIGFuZCBkb2Vzbid0IGFmZmVjdCB0aGUgbGljZW5zaW5nIG9mIHRoZSBidWlsZCByZXN1bHQuCi0jCi0jIFRoZSBzYW1wbGVyYXRlIHBsdWdpbiBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciBHUEx2MisgdG8gYmUgY29uc2lzdGVudAotIyB3aXRoIHRoZSBsaWJzYW1wbGVyYXRlIGxpY2Vuc2UuIEhvd2V2ZXIsIGlmIHRoZSBsaWNlbnNlZSBoYXMgYSBjb21tZXJjaWFsCi0jIGxpY2Vuc2UgZm9yIGxpYnNhbXBsZXJhdGUsIHRoZSBzYW1wbGVyYXRlIHBsdWdpbiBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMKLSMgb2YgTEdQTHYyLjEgbGlrZSB0aGUgcmVzdCBvZiB0aGUgcGx1Z2lucy4KLUxJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gIlwKLSAgICAgICAgZmlsZTovL0NPUFlJTkc7bWQ1PTdmYmMzMzgzMDlhYzM4ZmVmY2Q2NGIwNGJiOTAzZTM0IFwKLSAgICAgICAgZmlsZTovL0NPUFlJTkcuR1BMO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgIGZpbGU6Ly9tNC9hdHRyaWJ1dGVzLm00O2VuZGxpbmU9MzM7bWQ1PWIyNTk1OGRhNDRjMDIyMzFlMzY0MWYxYmNjZWY1M2ViIFwKLSAgICAgICAgZmlsZTovL3JhdGUvcmF0ZV9zYW1wbGVyYXRlLmM7ZW5kbGluZT0zNTttZDU9ZmQ3N2JjZTg1ZjRhMzM4YzBlOGFiMTg0MzBiNjlmYWUgXAotIgotCi1TUkNfVVJJID0gIlwKLSAgICAgICAgZnRwOi8vZnRwLmFsc2EtcHJvamVjdC5vcmcvcHViL3BsdWdpbnMvJHtCUH0udGFyLmJ6MiBcCi0gICAgICAgIGZpbGU6Ly8wMDAxLXBwaC1pbmNsdWRlLWNvbmZpZy5oLWZyb20tcmF0ZV9zcGVleHJhdGUuYy5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiYjEyM2U0MmVkODgxYjlhZGJjOTllNDA0MGYyNTdjMzkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2I4M2MzMjk5NTNiZWY5OWY1ZmUyNWFlMDRlYzRhNDU1ZmU2NTE0OTM5ZjNiNDVhNTMyMTk2NjY1MmIyYzllZSIKLQotREVQRU5EUyArPSAiYWxzYS1saWIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1QQUNLQUdFQ09ORklHID8/PSAiXAotICAgICAgICBzYW1wbGVyYXRlIFwKLSAgICAgICAgc3BlZXhkc3AgXAotICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3B1bHNlYXVkaW8nLCAncHVsc2VhdWRpbycsICcnLCBkKX0gXAotIgotUEFDS0FHRUNPTkZJR1thdmNvZGVjXSA9ICItLWVuYWJsZS1hdmNvZGVjLC0tZGlzYWJsZS1hdmNvZGVjLGxpYmF2IgotUEFDS0FHRUNPTkZJR1tqYWNrXSA9ICItLWVuYWJsZS1qYWNrLC0tZGlzYWJsZS1qYWNrLGphY2siCi1QQUNLQUdFQ09ORklHW21hZW1vLXBsdWdpbl0gPSAiLS1lbmFibGUtbWFlbW8tcGx1Z2luLC0tZGlzYWJsZS1tYWVtby1wbHVnaW4iCi1QQUNLQUdFQ09ORklHW21hZW1vLXJlc291cmNlLW1hbmFnZXJdID0gIi0tZW5hYmxlLW1hZW1vLXJlc291cmNlLW1hbmFnZXIsLS1kaXNhYmxlLW1hZW1vLXJlc291cmNlLW1hbmFnZXIsZGJ1cyIKLVBBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLS1lbmFibGUtcHVsc2VhdWRpbywtLWRpc2FibGUtcHVsc2VhdWRpbyxwdWxzZWF1ZGlvIgotUEFDS0FHRUNPTkZJR1tzYW1wbGVyYXRlXSA9ICItLWVuYWJsZS1zYW1wbGVyYXRlLC0tZGlzYWJsZS1zYW1wbGVyYXRlLGxpYnNhbXBsZXJhdGUwIgotUEFDS0FHRUNPTkZJR1tzcGVleGRzcF0gPSAiLS13aXRoLXNwZWV4PWxpYiwtLXdpdGgtc3BlZXg9bm8sc3BlZXhkc3AiCi0KLVBBQ0tBR0VTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwdWxzZWF1ZGlvJywgJ2Fsc2EtcGx1Z2lucy1wdWxzZWF1ZGlvLWNvbmYnLCAnJywgZCl9IgotCi1QQUNLQUdFU19EWU5BTUlDID0gIl5saWJhc291bmQtbW9kdWxlLS4qIgotCi0jIFRoZSBhbHNhLXBsdWdpbnMgcGFja2FnZSBkb2Vzbid0IGl0c2VsZiBjb250YWluIGFueXRoaW5nLCBpdCBqdXN0IGRlcGVuZHMgb24KLSMgYWxsIGJ1aWx0IHBsdWdpbnMuCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlybSAke0R9JHtsaWJkaXJ9L2Fsc2EtbGliLyoubGEKLQotCSMgV2UgdXNlIHRoZSBleGFtcGxlIGFzIGlzLCBzbyBqdXN0IGRyb3AgdGhlIC5leGFtcGxlIHN1ZmZpeC4KLQlpZiBbICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwdWxzZWF1ZGlvJywgJ3llcycsICdubycsIGQpfSIgPSAieWVzIiBdOyB0aGVuCi0JCW12ICR7RH0ke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYuZXhhbXBsZSAke0R9JHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mCi0JZmkKLX0KLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQoKSB7Ci0gICAgcGx1Z2luZGlyID0gYmIuZGF0YS5leHBhbmQoJyR7bGliZGlyfS9hbHNhLWxpYi8nLCBkKQotICAgIHBhY2thZ2VzID0gIiAiLmpvaW4oZG9fc3BsaXRfcGFja2FnZXMoZCwgcGx1Z2luZGlyLCAnXmxpYmFzb3VuZF9tb2R1bGVfKC4qKVwuc28kJywgJ2xpYmFzb3VuZC1tb2R1bGUtJXMnLCAnQWxzYSBwbHVnaW4gZm9yICVzJywgZXh0cmFfZGVwZW5kcz0nJykpCi0gICAgZC5zZXRWYXIoIlJERVBFTkRTX2Fsc2EtcGx1Z2lucyIsIHBhY2thZ2VzKQotfQotCi0jIFRoZSByYXRlIHBsdWdpbnMgY3JlYXRlIHNvbWUgc3ltbGlua3MuIEZvciBleGFtcGxlLCB0aGUgc2FtcGxlcmF0ZSBwbHVnaW4KLSMgY3JlYXRlcyB0aGVzZSBsaW5rcyB0byB0aGUgbWFpbiBwbHVnaW4gZmlsZToKLSMKLSMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9iZXN0LnNvCi0jICAgbGliYXNvdW5kX21vZHVsZV9yYXRlX3NhbXBsZXJhdGVfbGluZWFyLnNvCi0jICAgbGliYXNvdW5kX21vZHVsZV9yYXRlX3NhbXBsZXJhdGVfbWVkaXVtLnNvCi0jICAgbGliYXNvdW5kX21vZHVsZV9yYXRlX3NhbXBsZXJhdGVfb3JkZXIuc28KLSMKLSMgVGhlIG90aGVyIHJhdGUgcGx1Z2lucyBjcmVhdGUgc2ltaWxhciBsaW5rcy4gV2UgaGF2ZSB0byBhZGQgdGhlIGxpbmtzIHRvCi0jIEZJTEVTIG1hbnVhbGx5LCBiZWNhdXNlIGRvX3NwbGl0X3BhY2thZ2VzKCkgc2tpcHMgdGhlIGxpbmtzICh3aGljaCBpcyBnb29kLAotIyBiZWNhdXNlIHdlIHdvdWxkbid0IHdhbnQgZG9fc3BsaXRfcGFja2FnZXMoKSB0byBjcmVhdGUgc2VwYXJhdGUgcGFja2FnZXMgZm9yCi0jIHRoZSBzeW1saW5rcykuCi0jCi0jIFRoZSBzeW1saW5rcyBjYXVzZSBRQSBlcnJvcnMsIGJlY2F1c2UgdXN1YWxseSBpdCdzIGEgYnVnIGlmIGEgbm9uCi0jIC1kZXYvLWRiZy8tbmF0aXZlc2RrIHBhY2thZ2UgY29udGFpbnMgbGlua3MgdG8gLnNvIGZpbGVzLCBidXQgaW4gdGhpcyBjYXNlCi0jIHRoZSBlcnJvcnMgYXJlIGZhbHNlIHBvc2l0aXZlcywgc28gd2UgZGlzYWJsZSB0aGUgUUEgY2hlY2tzLgotRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtbGF2Y3JhdGUgKz0gIiR7bGliZGlyfS9hbHNhLWxpYi8qcmF0ZV9sYXZjcmF0ZV8qLnNvIgotRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc2FtcGxlcmF0ZSArPSAiJHtsaWJkaXJ9L2Fsc2EtbGliLypyYXRlX3NhbXBsZXJhdGVfKi5zbyIKLUZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNwZWV4cmF0ZSArPSAiJHtsaWJkaXJ9L2Fsc2EtbGliLypyYXRlX3NwZWV4cmF0ZV8qLnNvIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtbGF2Y3JhdGUgPSAiZGV2LXNvIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc2FtcGxlcmF0ZSA9ICJkZXYtc28iCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zcGVleHJhdGUgPSAiZGV2LXNvIgotCi0jIDUwLXB1bHNlYXVkaW8uY29uZiBkZWZpbmVzIGEgZGV2aWNlIG5hbWVkICJwdWxzZSIgdGhhdCBhcHBsaWNhdGlvbnMgY2FuIHVzZQotIyBpZiB0aGV5IGV4cGxpY2l0bHkgd2FudCB0byB1c2UgdGhlIFB1bHNlQXVkaW8gcGx1Z2luLgotIyA5OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZiBjb25maWd1cmVzIHRoZSAiZGVmYXVsdCIgZGV2aWNlIHRvIHVzZSB0aGUKLSMgUHVsc2VBdWRpbyBwbHVnaW4uCi1GSUxFU18ke1BOfS1wdWxzZWF1ZGlvLWNvbmYgKz0gIlwKLSAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzUwLXB1bHNlYXVkaW8uY29uZiBcCi0gICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC85OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZiBcCi0iCi0KLVJERVBFTkRTXyR7UE59LXB1bHNlYXVkaW8tY29uZiArPSAiXAotICAgICAgICBsaWJhc291bmQtbW9kdWxlLWNvbmYtcHVsc2UgXAotICAgICAgICBsaWJhc291bmQtbW9kdWxlLWN0bC1wdWxzZSBcCi0gICAgICAgIGxpYmFzb3VuZC1tb2R1bGUtcGNtLXB1bHNlIFwKLSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtcGx1Z2luc18xLjEuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtcGx1Z2luc18xLjEuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTVlYTU0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1wbHVnaW5zXzEuMS4xLmJiCkBAIC0wLDAgKzEsMTAzIEBACitTVU1NQVJZID0gIkFMU0EgUGx1Z2lucyIKK0hPTUVQQUdFID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZy9tYWluL2luZGV4LnBocC9CdWdfVHJhY2tpbmciCitTRUNUSU9OID0gIm11bHRpbWVkaWEiCisKKyMgVGhlIHByaW1hcnkgbGljZW5zZSBvZiBhbHNhLXBsdWdpbnMgaXMgTEdQTHYyLjEuCisjCisjIG00L2F0dHJpYnV0ZXMubTQgaXMgbGljZW5zZWQgdW5kZXIgR1BMdjIrLiBtNC9hdHRyaWJ1dGVzLm00IGlzIHBhcnQgb2YgdGhlCisjIGJ1aWxkIHN5c3RlbSwgYW5kIGRvZXNuJ3QgYWZmZWN0IHRoZSBsaWNlbnNpbmcgb2YgdGhlIGJ1aWxkIHJlc3VsdC4KKyMKKyMgVGhlIHNhbXBsZXJhdGUgcGx1Z2luIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIEdQTHYyKyB0byBiZSBjb25zaXN0ZW50CisjIHdpdGggdGhlIGxpYnNhbXBsZXJhdGUgbGljZW5zZS4gSG93ZXZlciwgaWYgdGhlIGxpY2Vuc2VlIGhhcyBhIGNvbW1lcmNpYWwKKyMgbGljZW5zZSBmb3IgbGlic2FtcGxlcmF0ZSwgdGhlIHNhbXBsZXJhdGUgcGx1Z2luIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcworIyBvZiBMR1BMdjIuMSBsaWtlIHRoZSByZXN0IG9mIHRoZSBwbHVnaW5zLgorTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiXAorICAgICAgICBmaWxlOi8vQ09QWUlORzttZDU9N2ZiYzMzODMwOWFjMzhmZWZjZDY0YjA0YmI5MDNlMzQgXAorICAgICAgICBmaWxlOi8vQ09QWUlORy5HUEw7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyAgICAgICAgZmlsZTovL200L2F0dHJpYnV0ZXMubTQ7ZW5kbGluZT0zMzttZDU9YjI1OTU4ZGE0NGMwMjIzMWUzNjQxZjFiY2NlZjUzZWIgXAorICAgICAgICBmaWxlOi8vcmF0ZS9yYXRlX3NhbXBsZXJhdGUuYztlbmRsaW5lPTM1O21kNT1mZDc3YmNlODVmNGEzMzhjMGU4YWIxODQzMGI2OWZhZSBcCisiCisKK1NSQ19VUkkgPSAiZnRwOi8vZnRwLmFsc2EtcHJvamVjdC5vcmcvcHViL3BsdWdpbnMvJHtCUH0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI2OWY5ZjNlMmRlM2M5N2ZjNzFkNDk2ZTkxZTI3MWZlNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZWE0ZDFlMDgyYzM2NTI4YTg5NmEyNTgxZTVlYjYyZDRkYzI2ODMyMzhlMzUzMDUwZDBkNjI0ZTY1ZjkwMWYxIgorCitERVBFTkRTICs9ICJhbHNhLWxpYiIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1BBQ0tBR0VDT05GSUcgPz89ICJcCisgICAgICAgIHNhbXBsZXJhdGUgXAorICAgICAgICBzcGVleGRzcCBcCisgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncHVsc2VhdWRpbycsICdwdWxzZWF1ZGlvJywgJycsIGQpfSBcCisiCitQQUNLQUdFQ09ORklHW2F2Y29kZWNdID0gIi0tZW5hYmxlLWF2Y29kZWMsLS1kaXNhYmxlLWF2Y29kZWMsbGliYXYiCitQQUNLQUdFQ09ORklHW2phY2tdID0gIi0tZW5hYmxlLWphY2ssLS1kaXNhYmxlLWphY2ssamFjayIKK1BBQ0tBR0VDT05GSUdbbWFlbW8tcGx1Z2luXSA9ICItLWVuYWJsZS1tYWVtby1wbHVnaW4sLS1kaXNhYmxlLW1hZW1vLXBsdWdpbiIKK1BBQ0tBR0VDT05GSUdbbWFlbW8tcmVzb3VyY2UtbWFuYWdlcl0gPSAiLS1lbmFibGUtbWFlbW8tcmVzb3VyY2UtbWFuYWdlciwtLWRpc2FibGUtbWFlbW8tcmVzb3VyY2UtbWFuYWdlcixkYnVzIgorUEFDS0FHRUNPTkZJR1twdWxzZWF1ZGlvXSA9ICItLWVuYWJsZS1wdWxzZWF1ZGlvLC0tZGlzYWJsZS1wdWxzZWF1ZGlvLHB1bHNlYXVkaW8iCitQQUNLQUdFQ09ORklHW3NhbXBsZXJhdGVdID0gIi0tZW5hYmxlLXNhbXBsZXJhdGUsLS1kaXNhYmxlLXNhbXBsZXJhdGUsbGlic2FtcGxlcmF0ZTAiCitQQUNLQUdFQ09ORklHW3NwZWV4ZHNwXSA9ICItLXdpdGgtc3BlZXg9bGliLC0td2l0aC1zcGVleD1ubyxzcGVleGRzcCIKKworUEFDS0FHRVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B1bHNlYXVkaW8nLCAnYWxzYS1wbHVnaW5zLXB1bHNlYXVkaW8tY29uZicsICcnLCBkKX0iCisKK1BBQ0tBR0VTX0RZTkFNSUMgPSAiXmxpYmFzb3VuZC1tb2R1bGUtLioiCisKKyMgVGhlIGFsc2EtcGx1Z2lucyBwYWNrYWdlIGRvZXNuJ3QgaXRzZWxmIGNvbnRhaW4gYW55dGhpbmcsIGl0IGp1c3QgZGVwZW5kcyBvbgorIyBhbGwgYnVpbHQgcGx1Z2lucy4KK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCXJtICR7RH0ke2xpYmRpcn0vYWxzYS1saWIvKi5sYQorCisJIyBXZSB1c2UgdGhlIGV4YW1wbGUgYXMgaXMsIHNvIGp1c3QgZHJvcCB0aGUgLmV4YW1wbGUgc3VmZml4LgorCWlmIFsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B1bHNlYXVkaW8nLCAneWVzJywgJ25vJywgZCl9IiA9ICJ5ZXMiIF07IHRoZW4KKwkJbXYgJHtEfSR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC85OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZi5leGFtcGxlICR7RH0ke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYKKwlmaQorfQorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCgpIHsKKyAgICBwbHVnaW5kaXIgPSBiYi5kYXRhLmV4cGFuZCgnJHtsaWJkaXJ9L2Fsc2EtbGliLycsIGQpCisgICAgcGFja2FnZXMgPSAiICIuam9pbihkb19zcGxpdF9wYWNrYWdlcyhkLCBwbHVnaW5kaXIsICdebGliYXNvdW5kX21vZHVsZV8oLiopXC5zbyQnLCAnbGliYXNvdW5kLW1vZHVsZS0lcycsICdBbHNhIHBsdWdpbiBmb3IgJXMnLCBleHRyYV9kZXBlbmRzPScnKSkKKyAgICBkLnNldFZhcigiUkRFUEVORFNfYWxzYS1wbHVnaW5zIiwgcGFja2FnZXMpCit9CisKKyMgVGhlIHJhdGUgcGx1Z2lucyBjcmVhdGUgc29tZSBzeW1saW5rcy4gRm9yIGV4YW1wbGUsIHRoZSBzYW1wbGVyYXRlIHBsdWdpbgorIyBjcmVhdGVzIHRoZXNlIGxpbmtzIHRvIHRoZSBtYWluIHBsdWdpbiBmaWxlOgorIworIyAgIGxpYmFzb3VuZF9tb2R1bGVfcmF0ZV9zYW1wbGVyYXRlX2Jlc3Quc28KKyMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9saW5lYXIuc28KKyMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9tZWRpdW0uc28KKyMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9vcmRlci5zbworIworIyBUaGUgb3RoZXIgcmF0ZSBwbHVnaW5zIGNyZWF0ZSBzaW1pbGFyIGxpbmtzLiBXZSBoYXZlIHRvIGFkZCB0aGUgbGlua3MgdG8KKyMgRklMRVMgbWFudWFsbHksIGJlY2F1c2UgZG9fc3BsaXRfcGFja2FnZXMoKSBza2lwcyB0aGUgbGlua3MgKHdoaWNoIGlzIGdvb2QsCisjIGJlY2F1c2Ugd2Ugd291bGRuJ3Qgd2FudCBkb19zcGxpdF9wYWNrYWdlcygpIHRvIGNyZWF0ZSBzZXBhcmF0ZSBwYWNrYWdlcyBmb3IKKyMgdGhlIHN5bWxpbmtzKS4KKyMKKyMgVGhlIHN5bWxpbmtzIGNhdXNlIFFBIGVycm9ycywgYmVjYXVzZSB1c3VhbGx5IGl0J3MgYSBidWcgaWYgYSBub24KKyMgLWRldi8tZGJnLy1uYXRpdmVzZGsgcGFja2FnZSBjb250YWlucyBsaW5rcyB0byAuc28gZmlsZXMsIGJ1dCBpbiB0aGlzIGNhc2UKKyMgdGhlIGVycm9ycyBhcmUgZmFsc2UgcG9zaXRpdmVzLCBzbyB3ZSBkaXNhYmxlIHRoZSBRQSBjaGVja3MuCitGSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1sYXZjcmF0ZSArPSAiJHtsaWJkaXJ9L2Fsc2EtbGliLypyYXRlX2xhdmNyYXRlXyouc28iCitGSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zYW1wbGVyYXRlICs9ICIke2xpYmRpcn0vYWxzYS1saWIvKnJhdGVfc2FtcGxlcmF0ZV8qLnNvIgorRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc3BlZXhyYXRlICs9ICIke2xpYmRpcn0vYWxzYS1saWIvKnJhdGVfc3BlZXhyYXRlXyouc28iCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1sYXZjcmF0ZSA9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zYW1wbGVyYXRlID0gImRldi1zbyIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNwZWV4cmF0ZSA9ICJkZXYtc28iCisKKyMgNTAtcHVsc2VhdWRpby5jb25mIGRlZmluZXMgYSBkZXZpY2UgbmFtZWQgInB1bHNlIiB0aGF0IGFwcGxpY2F0aW9ucyBjYW4gdXNlCisjIGlmIHRoZXkgZXhwbGljaXRseSB3YW50IHRvIHVzZSB0aGUgUHVsc2VBdWRpbyBwbHVnaW4uCisjIDk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mIGNvbmZpZ3VyZXMgdGhlICJkZWZhdWx0IiBkZXZpY2UgdG8gdXNlIHRoZQorIyBQdWxzZUF1ZGlvIHBsdWdpbi4KK0ZJTEVTXyR7UE59LXB1bHNlYXVkaW8tY29uZiArPSAiXAorICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvNTAtcHVsc2VhdWRpby5jb25mIFwKKyAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mIFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHVsc2VhdWRpby1jb25mICs9ICJcCisgICAgICAgIGxpYmFzb3VuZC1tb2R1bGUtY29uZi1wdWxzZSBcCisgICAgICAgIGxpYmFzb3VuZC1tb2R1bGUtY3RsLXB1bHNlIFwKKyAgICAgICAgbGliYXNvdW5kLW1vZHVsZS1wY20tcHVsc2UgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29scy8wMDAxLUN1czQyOE1pZGktRXhwbGljaXRseS1jYXN0LWNvbnN0YW50LXRvLWNoYXItdHlwZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdG9vbHMvMDAwMS1DdXM0MjhNaWRpLUV4cGxpY2l0bHktY2FzdC1jb25zdGFudC10by1jaGFyLXR5cGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmY5NWNhYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdG9vbHMvMDAwMS1DdXM0MjhNaWRpLUV4cGxpY2l0bHktY2FzdC1jb25zdGFudC10by1jaGFyLXR5cGUucGF0Y2gKQEAgLTAsMCArMSw3NSBAQAorRnJvbSAxY2MwYWE0ZGJkM2M3ZjEyNjc4MDllMGUxY2E1N2Q0NmY0ODAzYmZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMTcgQXByIDIwMTYgMjM6MjU6MTggKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gQ3VzNDI4TWlkaTogRXhwbGljaXRseSBjYXN0IGNvbnN0YW50IHRvIGNoYXIgdHlwZQorCitUaGlzIGlzIGZsYWdnZWQgYnkgZ2NjNgorQ3VzNDI4TWlkaS5jYzo4MzoxOiBlcnJvcjogbmFycm93aW5nIGNvbnZlcnNpb24gb2YgJy0xJyBmcm9tICdpbnQnIHRvICdjaGFyJyBpbnNpZGUgeyB9IFstV25hcnJvd2luZ10KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyB1czQyOGNvbnRyb2wvQ3VzNDI4TWlkaS5jYyB8IDMwICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3VzNDI4Y29udHJvbC9DdXM0MjhNaWRpLmNjIGIvdXM0Mjhjb250cm9sL0N1czQyOE1pZGkuY2MKK2luZGV4IGI5ZTY3ODMuLmJlZjdiYjEgMTAwNjQ0CistLS0gYS91czQyOGNvbnRyb2wvQ3VzNDI4TWlkaS5jYworKysrIGIvdXM0Mjhjb250cm9sL0N1czQyOE1pZGkuY2MKK0BAIC0zMiwyMiArMzIsMjIgQEAgY2hhciBDdXM0MjhNaWRpOjpLbm9iUGFyYW1bXSA9IHsKKyAJMHgyQSwKKyAJMHgyOSwKKyAJMHgyOCwKKy0JLTEsCisrCXN0YXRpY19jYXN0PGNoYXI+KC0xKSwKKyAJMHgxMCwKKyAJMHgxMSwKKyAJMHgxOCwKKyAJMHgxOSwKKyAJMHgxQSwKKy0JLTEsCistCS0xLAorLQktMSwKKy0JLTEsCisrCXN0YXRpY19jYXN0PGNoYXI+KC0xKSwKKysJc3RhdGljX2Nhc3Q8Y2hhcj4oLTEpLAorKwlzdGF0aWNfY2FzdDxjaGFyPigtMSksCisrCXN0YXRpY19jYXN0PGNoYXI+KC0xKSwKKyAJMHgyQywKKyAJMHgyRCwKKyAJMHgyRSwKKyAJMHgyRiwKKy0JLTEsCistCS0xLAorKwlzdGF0aWNfY2FzdDxjaGFyPigtMSksCisrCXN0YXRpY19jYXN0PGNoYXI+KC0xKSwKKyAJMHgyMCwKKyAJMHgyMSwKKyAJMHgyMiwKK0BAIC02NCwxNCArNjQsMTQgQEAgY2hhciBDdXM0MjhNaWRpOjpLbm9iUGFyYW1bXSA9IHsKKyAJNSwKKyAJNiwKKyAJNywKKy0JLTEsCistCS0xLAorLQktMSwKKy0JLTEsCistCS0xLAorLQktMSwKKy0JLTEsCistCS0xLAorKwlzdGF0aWNfY2FzdDxjaGFyPigtMSksCisrCXN0YXRpY19jYXN0PGNoYXI+KC0xKSwKKysJc3RhdGljX2Nhc3Q8Y2hhcj4oLTEpLAorKwlzdGF0aWNfY2FzdDxjaGFyPigtMSksCisrCXN0YXRpY19jYXN0PGNoYXI+KC0xKSwKKysJc3RhdGljX2Nhc3Q8Y2hhcj4oLTEpLAorKwlzdGF0aWNfY2FzdDxjaGFyPigtMSksCisrCXN0YXRpY19jYXN0PGNoYXI+KC0xKSwKKyAJMHgzMCwKKyAJMHgzMSwKKyAJMHgzMiwKKy0tIAorMS45LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29sc18xLjEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdG9vbHNfMS4xLjAuYmIKaW5kZXggOWU2MzNmMS4uOGQ0YTE0NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29sc18xLjEuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvb2xzXzEuMS4wLmJiCkBAIC0xLDYgKzEsNiBAQAogU1VNTUFSWSA9ICJBZHZhbmNlZCB0b29scyBmb3IgY2VydGFpbiBBTFNBIHNvdW5kIGNhcmQgZHJpdmVycyIKIEhPTUVQQUdFID0gImh0dHA6Ly93d3cuYWxzYS1wcm9qZWN0Lm9yZyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd0cmFjay5hbHNhLXByb2plY3Qub3JnL2Fsc2EtYnVnL2xvZ2luX3BhZ2UucGhwIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZy9tYWluL2luZGV4LnBocC9CdWdfVHJhY2tpbmciCiBTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCiBMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyKyIKIERFUEVORFMgPSAiYWxzYS1saWIgbmN1cnNlcyBnbGliLTIuMCIKQEAgLTEwLDExICsxMCwxMSBAQAogCiBTUkNfVVJJID0gImZ0cDovL2Z0cC5hbHNhLXByb2plY3Qub3JnL3B1Yi90b29scy8ke0JQfS50YXIuYnoyIFwKICAgICAgICAgICAgZmlsZTovL2F1dG90b29scy5wYXRjaCBcCi0gICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJycsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbGU6Ly9tYWtlZmlsZV9ub19ndGsucGF0Y2gnLCBkKX0gXAorICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICcnLCAnZmlsZTovL21ha2VmaWxlX25vX2d0ay5wYXRjaCcsIGQpfSBcCiAgICAgICAgICAgIGZpbGU6Ly9naXRjb21waWxlX2hkYWphY2tzZW5zZXRlc3QgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1hczEwazEtTWFrZS1vdXRwdXRfdHJhbV9saW5lLXN0YXRpYy1pbmxpbmUucGF0Y2ggXAotICAgICAgICAgICIKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQ3VzNDI4TWlkaS1FeHBsaWNpdGx5LWNhc3QtY29uc3RhbnQtdG8tY2hhci10eXBlLnBhdGNoIFwKKyAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiYjQ3NmE1YWZhYTNlYTMyMzA4NTU1NTNhZDU5ZDI1OWQiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2QzNDU1OGM1OTBhNTAyOTRiMzY1NzZkMjU3MzE2YTFhYzVjZDk1MWViOGNkN2QzMzBlMDlmOGNjNzU3YWI1MSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMtc2NyaXB0c18xLjEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMtc2NyaXB0c18xLjEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTk4ZjliOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzLXNjcmlwdHNfMS4xLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1yZXF1aXJlIGFsc2EtdXRpbHNfJHtQVn0uYmIKLQotU1VNTUFSWSA9ICJTaGVsbCBzY3JpcHRzIHRoYXQgc2hvdyBoZWxwIGluZm8gYW5kIGNyZWF0ZSBBTFNBIGNvbmZpZ3VyYXRpb24gZmlsZXMiCi1QUk9WSURFUyA9ICJhbHNhLXV0aWxzLWFsc2Fjb25mIgotCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9hbHNhLXV0aWxzOiIKLQotUEFDS0FHRVMgPSAiJHtQTn0iCi1SREVQRU5EU18ke1BOfSArPSAiYmFzaCIKLQotRklMRVNfJHtQTn0gPSAiJHtzYmluZGlyfS9hbHNhY29uZiBcCi0gICAgICAgICAgICAgICAke3NiaW5kaXJ9L2Fsc2EtaW5mby5zaCBcCi0gICAgICAgICAgICAgICIKLQotUyA9ICIke1dPUktESVJ9L2Fsc2EtdXRpbHMtJHtQVn0iCi0KLWRvX2luc3RhbGwoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfQotCWluc3RhbGwgLW0gMDc1NSAke0J9L2Fsc2Fjb25mL2Fsc2Fjb25mICR7RH0ke3NiaW5kaXJ9LwotCWluc3RhbGwgLW0gMDc1NSAke1N9L2Fsc2EtaW5mby9hbHNhLWluZm8uc2ggJHtEfSR7c2JpbmRpcn0vCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzLXNjcmlwdHNfMS4xLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzLXNjcmlwdHNfMS4xLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmVmNzlkOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMtc2NyaXB0c18xLjEuMi5iYgpAQCAtMCwwICsxLDI1IEBACityZXF1aXJlIGFsc2EtdXRpbHNfJHtQVn0uYmIKKworU1VNTUFSWSA9ICJTaGVsbCBzY3JpcHRzIHRoYXQgc2hvdyBoZWxwIGluZm8gYW5kIGNyZWF0ZSBBTFNBIGNvbmZpZ3VyYXRpb24gZmlsZXMiCitQUk9WSURFUyA9ICJhbHNhLXV0aWxzLWFsc2Fjb25mIgorCitGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9hbHNhLXV0aWxzOiIKKworUEFDS0FHRVMgPSAiJHtQTn0iCitSREVQRU5EU18ke1BOfSArPSAiYmFzaCIKKworRklMRVNfJHtQTn0gPSAiJHtzYmluZGlyfS9hbHNhY29uZiBcCisgICAgICAgICAgICAgICAke3NiaW5kaXJ9L2Fsc2EtaW5mby5zaCBcCisgICAgICAgICAgICAgICAke3NiaW5kaXJ9L2Fsc2FiYXQtdGVzdC5zaCBcCisgICAgICAgICAgICAgICIKKworUyA9ICIke1dPUktESVJ9L2Fsc2EtdXRpbHMtJHtQVn0iCisKK2RvX2luc3RhbGwoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfQorCWluc3RhbGwgLW0gMDc1NSAke0J9L2Fsc2Fjb25mL2Fsc2Fjb25mICR7RH0ke3NiaW5kaXJ9LworCWluc3RhbGwgLW0gMDc1NSAke1N9L2Fsc2EtaW5mby9hbHNhLWluZm8uc2ggJHtEfSR7c2JpbmRpcn0vCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYmF0JywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJaW5zdGFsbCAtbSAwNzU1ICR7U30vYmF0L2Fsc2FiYXQtdGVzdC5zaCAke0R9JHtzYmluZGlyfS8KKwlmaQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlscy8wMDAxLWFsc2FiYXQtcmVuYW1lLXRvLWF2b2lkLW5hbWluZy1jb25mbGljdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMvMDAwMS1hbHNhYmF0LXJlbmFtZS10by1hdm9pZC1uYW1pbmctY29uZmxpY3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2ZDdkNGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlscy8wMDAxLWFsc2FiYXQtcmVuYW1lLXRvLWF2b2lkLW5hbWluZy1jb25mbGljdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1MyArMCwwIEBACi1Gcm9tIDI4YzI5ZGVjZTZjNDM0ZTdkM2QwMWU4MDU1NTViYTdkZGY2ZmJhNjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiTHUsIEhhbiIgPGhhbi5sdUBpbnRlbC5jb20+Ci1EYXRlOiBXZWQsIDMgRmViIDIwMTYgMTQ6MjA6MzMgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gYWxzYWJhdDogcmVuYW1lIHRvIGF2b2lkIG5hbWluZyBjb25mbGljdAotCi1hbHNhLXV0aWxzIGFzIHdlbGwgYXMgYmFyZW9zLWJhdCAoYXMgd2VsbCBhIHNvbWUgQmFjdWxhIHBhY2thZ2VzKQotYWxsIGNvbnRhaW4gYSBwcm9ncmFtIGNhbGxlZCAvdXNyL2Jpbi9iYXQsIHdoaWNoIGNhdXNlcyBjb25mbGljdHMgb24KLXZhcmlvdXMgZGlzdHJpYnV0aW9ucyAoImJhc2ljIGF1ZGlvIHRlc3RlciIgdnMgImJhcmVvcyBhZG1pbmlzdHJhdGlvbgotdG9vbCIoImJhY3VsYSBhZG1pbmlzdHJhdGlvbiB0b29sIikpLgotUmVuYW1lIHRvIGF2b2lkIGNvbmZsaWN0LgotCi1TaWduZWQtb2ZmLWJ5OiBMdSwgSGFuIDxoYW4ubHVAaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogVGFrYXNoaSBJd2FpIDx0aXdhaUBzdXNlLmRlPgotCi1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFtleHBlY3RlZCBpbiB2ZXJzaW9uIDEuMS4xXQotCi1TaWduZWQtb2ZmLWJ5OiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+Ci0tLS0KLSBiYXQvTWFrZWZpbGUuYW0gICAgICAgICAgfCAxMCArKysrKy0tLS0tCi0gYmF0L3tiYXQuMSA9PiBhbHNhYmF0LjF9IHwgNDMgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIGJhdC9iYXQuYyAgICAgICAgICAgICAgICB8ICAyICstCi0gMyBmaWxlcyBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMoLSkKLSByZW5hbWUgYmF0L3tiYXQuMSA9PiBhbHNhYmF0LjF9ICg3MiUpCi0KLWRpZmYgLS1naXQgYS9iYXQvTWFrZWZpbGUuYW0gYi9iYXQvTWFrZWZpbGUuYW0KLWluZGV4IDg0MmFlNmIuLjk4NWYwMGMgMTAwNjQ0Ci0tLS0gYS9iYXQvTWFrZWZpbGUuYW0KLSsrKyBiL2JhdC9NYWtlZmlsZS5hbQotQEAgLTEsOSArMSw5IEBACi0tYmluX1BST0dSQU1TID0gYmF0Ci0tbWFuX01BTlMgPSBiYXQuMQotK2Jpbl9QUk9HUkFNUyA9IGFsc2FiYXQKLSttYW5fTUFOUyA9IGFsc2FiYXQuMQotIAotLUVYVFJBX0RJU1QgPSBiYXQuMQotK0VYVFJBX0RJU1QgPSBhbHNhYmF0LjEKLSAKLS1iYXRfU09VUkNFUyA9IFwKLSthbHNhYmF0X1NPVVJDRVMgPSBcCi0gCWJhdC5jIFwKLSAJY29tbW9uLmMgXAotIAlhbmFseXplLmMgXAotQEAgLTIxLDQgKzIxLDQgQEAgbm9pbnN0X0hFQURFUlMgPSBcCi0gQU1fQ1BQRkxBR1MgPSBcCi0gCSAgICAgIC1XYWxsIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlCi0gCi0tYmF0X0xEQUREID0gQEZGVFdfTElCQAotK2Fsc2FiYXRfTERBREQgPSBARkZUV19MSUJACi1kaWZmIC0tZ2l0IGEvYmF0L2JhdC4xIGIvYmF0L2Fsc2FiYXQuMQotc2ltaWxhcml0eSBpbmRleCA3MiUKLXJlbmFtZSBmcm9tIGJhdC9iYXQuMQotcmVuYW1lIHRvIGJhdC9hbHNhYmF0LjEKLWluZGV4IGUwMGZjMjcuLjhkMGI5YzAgMTAwNjQ0Ci0tLS0gYS9iYXQvYmF0LjEKLSsrKyBiL2JhdC9hbHNhYmF0LjEKLUBAIC0xLDIzICsxLDIzIEBACi0tLlRIIEJBVCAxICIyMHRoIE9jdG9iZXIgMjAxNSIKLSsuVEggQUxTQUJBVCAxICIyMHRoIE9jdG9iZXIgMjAxNSIKLSAuU0ggTkFNRQotLWJhdCBcLSBjb21tYW5kXC1saW5lIHNvdW5kIHRlc3RlciBmb3IgQUxTQSBzb3VuZCBjYXJkIGRyaXZlcgotK2Fsc2FiYXQgXC0gY29tbWFuZFwtbGluZSBzb3VuZCB0ZXN0ZXIgZm9yIEFMU0Egc291bmQgY2FyZCBkcml2ZXIKLSAKLSAuU0ggU1lOT1BTSVMKLS1cZkJiYXRcZlAgW1xmSWZsYWdzXGZQXQotK1xmQmFsc2FiYXRcZlAgW1xmSWZsYWdzXGZQXQotIAotIC5TSCBERVNDUklQVElPTgotLVxmQkJBVChCYXNpYyBBdWRpbyBUZXN0ZXIpXGZQIGlzIGEgc2ltcGxlIGNvbW1hbmRcLWxpbmUgdXRpbGl0eSBpbnRlbmRlZAotLXRvIGhlbHAgYXV0b21hdGUgYXVkaW8gZHJpdmVyIGFuZCBzb3VuZCBzZXJ2ZXIgdGVzdGluZyB3aXRoIGxpdHRsZSBodW1hbgotLWludGVyYWN0aW9uLiBCQVQgY2FuIGJlIHVzZWQgdG8gdGVzdCBhdWRpbyBxdWFsaXR5LCBzdHJlc3MgdGVzdCBmZWF0dXJlcwotLWFuZCB0ZXN0IGF1ZGlvIGJlZm9yZSBhbmQgYWZ0ZXIgUE0gc3RhdGUgY2hhbmdlcy4KLStcZkJBTFNBQkFUKEFMU0EgQmFzaWMgQXVkaW8gVGVzdGVyKVxmUCBpcyBhIHNpbXBsZSBjb21tYW5kXC1saW5lIHV0aWxpdHkKLStpbnRlbmRlZCB0byBoZWxwIGF1dG9tYXRlIGF1ZGlvIGRyaXZlciBhbmQgc291bmQgc2VydmVyIHRlc3Rpbmcgd2l0aCBsaXR0bGUKLStodW1hbiBpbnRlcmFjdGlvbi4gQUxTQUJBVCBjYW4gYmUgdXNlZCB0byB0ZXN0IGF1ZGlvIHF1YWxpdHksIHN0cmVzcyB0ZXN0Ci0rZmVhdHVyZXMgYW5kIHRlc3QgYXVkaW8gYmVmb3JlIGFuZCBhZnRlciBQTSBzdGF0ZSBjaGFuZ2VzLgotIAotLUJBVCdzIGRlc2lnbiBpcyByZWxhdGl2ZWx5IHNpbXBsZS4gQkFUIHBsYXlzIGFuIGF1ZGlvIHN0cmVhbSBhbmQgY2FwdHVyZXMKLS10aGUgc2FtZSBzdHJlYW0gaW4gZWl0aGVyIGEgZGlnaXRhbCBvciBhbmFsb2cgbG9vcCBiYWNrLiBJdCB0aGVuIGNvbXBhcmVzCi0tdGhlIGNhcHR1cmVkIHN0cmVhbSB1c2luZyBhIEZGVCB0byB0aGUgb3JpZ2luYWwgdG8gZGV0ZXJtaW5lIGlmIHRoZSB0ZXN0Ci0tY2FzZSBwYXNzZXMgb3IgZmFpbHMuCi0rQUxTQUJBVCdzIGRlc2lnbiBpcyByZWxhdGl2ZWx5IHNpbXBsZS4gQUxTQUJBVCBwbGF5cyBhbiBhdWRpbyBzdHJlYW0gYW5kCi0rY2FwdHVyZXMgdGhlIHNhbWUgc3RyZWFtIGluIGVpdGhlciBhIGRpZ2l0YWwgb3IgYW5hbG9nIGxvb3AgYmFjay4gSXQgdGhlbgotK2NvbXBhcmVzIHRoZSBjYXB0dXJlZCBzdHJlYW0gdXNpbmcgYSBGRlQgdG8gdGhlIG9yaWdpbmFsIHRvIGRldGVybWluZSBpZgotK3RoZSB0ZXN0IGNhc2UgcGFzc2VzIG9yIGZhaWxzLgotIAotLUJBVCBjYW4gZWl0aGVyIHJ1biB3aG9sbHkgb24gdGhlIHRhcmdldCBtYWNoaW5lIGJlaW5nIHRlc3RlZCAoc3RhbmRhbG9uZQotLW1vZGUpIG9yIGNhbiBydW4gYXMgYSBjbGllbnQvc2VydmVyIG1vZGUgd2hlcmUgYnkgYmF0IGNsaWVudCBydW5zIG9uIHRoZQotK0FMU0FCQVQgY2FuIGVpdGhlciBydW4gd2hvbGx5IG9uIHRoZSB0YXJnZXQgbWFjaGluZSBiZWluZyB0ZXN0ZWQgKHN0YW5kYWxvbmUKLSttb2RlKSBvciBjYW4gcnVuIGFzIGEgY2xpZW50L3NlcnZlciBtb2RlIHdoZXJlIGJ5IGFsc2FiYXQgY2xpZW50IHJ1bnMgb24gdGhlCi0gdGFyZ2V0IGFuZCBydW5zIGFzIGEgc2VydmVyIG9uIGEgc2VwYXJhdGUgdGVzdGVyIG1hY2hpbmUuIFRoZSBjbGllbnQvc2VydmVyCi0gbW9kZSBzdGlsbCByZXF1aXJlcyBzb21lIG1hbnVhbCBpbnRlcmFjdGlvbiBmb3Igc3luY2hyb25pemF0aW9uLCBidXQgdGhpcwotIGlzIGFjdGl2ZWx5IGJlaW5nIGRldmVsb3BlZCBmb3IgZnV0dXJlIHJlbGVhc2VzLgotQEAgLTkzLDggKzkzLDggQEAgRnJlcXVlbmNpZXMgd2l0aCBhbXBsaXR1ZGUgbGFyZ2VyIHRoYW4gdGhyZXNob2xkIHdpbGwgYmUgcmVjb2duaXplZCBhcyBhCi0gcGVhaywgYW5kIHRoZSBmcmVxdWVuY3kgd2l0aCBsYXJnZXN0IHBlYWsgdmFsdWUgd2lsbCBiZSByZWNvZ25pemVkIGFzIGEKLSBkZXRlY3RlZCBmcmVxdWVuY3kuCi0gLmJyCi0tQkFUIHRoZW4gY29tcGFyZXMgdGhlIGRldGVjdGVkIGZyZXF1ZW5jeSB0byB0YXJnZXQgZnJlcXVlbmN5LCB0byBkZWNpZGUKLS1pZiB0aGUgZGV0ZWN0aW5nIHBhc3NlcyBvciBmYWlscy4KLStBTFNBQkFUIHRoZW4gY29tcGFyZXMgdGhlIGRldGVjdGVkIGZyZXF1ZW5jeSB0byB0YXJnZXQgZnJlcXVlbmN5LCB0bwotK2RlY2lkZSBpZiB0aGUgZGV0ZWN0aW5nIHBhc3NlcyBvciBmYWlscy4KLSAuYnIKLSBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAzLjAuCi0gLlRQCi1AQCAtMTE3LDE4ICsxMTcsMTkgQEAgVGFyZ2V0IFdBViBmaWxlIHRvIHNhdmUgY2FwdHVyZSB0ZXN0IGNvbnRlbnQuCi0gLlRQCi0gXGZJXC1cLWxvY2FsXGZQCi0gSW50ZXJuYWwgbG9vcGJhY2sgbW9kZS4KLS1QbGF5YmFjaywgY2FwdHVyZSBhbmQgYW5hbHlzaXMgaW50ZXJuYWwgdG8gQkFUIG9ubHkuIFRoaXMgaXMgaW50ZW5kZWQgZm9yCi0tZGV2ZWxvcGVycyB0byB0ZXN0IG5ldyBCQVQgZmVhdHVyZXMgYXMgbm8gYXVkaW8gaXMgcm91dGVkIG91dHNpZGUgb2YgQkFULgotK1BsYXliYWNrLCBjYXB0dXJlIGFuZCBhbmFseXNpcyBpbnRlcm5hbCB0byBBTFNBQkFUIG9ubHkuIFRoaXMgaXMgaW50ZW5kZWQKLStmb3IgZGV2ZWxvcGVycyB0byB0ZXN0IG5ldyBBTFNBQkFUIGZlYXR1cmVzIGFzIG5vIGF1ZGlvIGlzIHJvdXRlZCBvdXRzaWRlCi0rb2YgQUxTQUJBVC4KLSAKLSAuU0ggRVhBTVBMRVMKLSAKLSAuVFAKLS1cZkJiYXQgXC1QIHBsdWdodzowLDAgXC1DIHBsdWdodzowLDAgXC1jIDIgXC1mIFMzMl9MRSBcLUYgMjUwXGZSCi0rXGZCYWxzYWJhdCBcLVAgcGx1Z2h3OjAsMCBcLUMgcGx1Z2h3OjAsMCBcLWMgMiBcLWYgUzMyX0xFIFwtRiAyNTBcZlIKLSBHZW5lcmF0ZSBhbmQgcGxheSBhIHNpbmUgd2F2ZSBvZiAyNTAgSGVydHogd2l0aCAyIGNoYW5uZWwgYW5kIFMzMl9MRSBmb3JtYXQsCi0gYW5kIHRoZW4gY2FwdHVyZSBhbmQgYW5hbHl6ZS4KLSAKLSAuVFAKLS1cZkJiYXQgXC1QIHBsdWdodzowLDAgXC1DIHBsdWdodzowLDAgXC1cLWZpbGUgNTAwSHoud2F2XGZSCi0rXGZCYWxzYWJhdCBcLVAgcGx1Z2h3OjAsMCBcLUMgcGx1Z2h3OjAsMCBcLVwtZmlsZSA1MDBIei53YXZcZlIKLSBQbGF5IHRoZSBSSUZGIFdBViBmaWxlICI1MDBIei53YXYiIHdoaWNoIGNvbnRhaW5zIDUwMCBIZXJ0eiB3YXZlZm9ybSBMUENNCi0gZGF0YSwgYW5kIHRoZW4gY2FwdHVyZSBhbmQgYW5hbHl6ZS4KLSAKLUBAIC0xNTIsNyArMTUzLDcgQEAgQ3VycmVudGx5IG9ubHkgc3VwcG9ydCBSSUZGIFdBViBmb3JtYXQgd2l0aCBQQ00gZGF0YS4gUGxlYXNlIHJlcG9ydCBhbnkgYnVncyB0bwotIHRoZSBhbHNhLWRldmVsIG1haWxpbmcgbGlzdC4KLSAKLSAuU0ggQVVUSE9SCi0tXGZCYmF0XGZQIGlzIGJ5IExpYW0gR2lyZHdvb2QgPGxpYW0uci5naXJkd29vZEBsaW51eC5pbnRlbC5jb20+LCBCZXJuYXJkIEdhdXRpZXIKLS08YmVybmFyZC5nYXV0aWVyQGludGVsLmNvbT4gYW5kIEhhbiBMdSA8aGFuLmx1QGludGVsLmNvbT4uCi0rXGZCYWxzYWJhdFxmUCBpcyBieSBMaWFtIEdpcmR3b29kIDxsaWFtLnIuZ2lyZHdvb2RAbGludXguaW50ZWwuY29tPiwgQmVybmFyZAotK0dhdXRpZXIgPGJlcm5hcmQuZ2F1dGllckBpbnRlbC5jb20+IGFuZCBIYW4gTHUgPGhhbi5sdUBpbnRlbC5jb20+LgotIFRoaXMgZG9jdW1lbnQgaXMgYnkgTGlhbSBHaXJkd29vZCA8bGlhbS5yLmdpcmR3b29kQGxpbnV4LmludGVsLmNvbT4gYW5kIEhhbiBMdQotIDxoYW4ubHVAaW50ZWwuY29tPi4KLWRpZmYgLS1naXQgYS9iYXQvYmF0LmMgYi9iYXQvYmF0LmMKLWluZGV4IDA4NmI5ZmEuLmRkYjYwYjcgMTAwNjQ0Ci0tLS0gYS9iYXQvYmF0LmMKLSsrKyBiL2JhdC9iYXQuYwotQEAgLTI3Miw3ICsyNzIsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2NhcHR1cmUoc3RydWN0IGJhdCAqYmF0KQotIHN0YXRpYyB2b2lkIHVzYWdlKHN0cnVjdCBiYXQgKmJhdCkKLSB7Ci0gCWZwcmludGYoYmF0LT5sb2csCi0tXygiVXNhZ2U6IGJhdCBbLW9wdGlvbnNdLi4uXG4iCi0rXygiVXNhZ2U6IGFsc2FiYXQgWy1vcHRpb25zXS4uLlxuIgotICJcbiIKLSAiICAtaCwgLS1oZWxwICAgICAgICAgICAgIHRoaXMgaGVscFxuIgotICIgIC1EICAgICAgICAgICAgICAgICAgICAgcGNtIGRldmljZSBmb3IgYm90aCBwbGF5YmFjayBhbmQgY2FwdHVyZVxuIgotLS0gCi0yLjcuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzXzEuMS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlsc18xLjEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWY0MDQ4OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzXzEuMS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLVNVTU1BUlkgPSAiQUxTQSBzb3VuZCB1dGlsaXRpZXMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmFsc2EtcHJvamVjdC5vcmciCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVndHJhY2suYWxzYS1wcm9qZWN0Lm9yZy9hbHNhLWJ1Zy9sb2dpbl9wYWdlLnBocCIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYWxzYWN0bC91dGlscy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PWZlOTUyNmIwNTVlMjQ2YjU1NTg4MDlhNWFlMjVjMGI5IgotREVQRU5EUyA9ICJhbHNhLWxpYiBuY3Vyc2VzIGxpYnNhbXBsZXJhdGUwIgotCi1QQUNLQUdFQ09ORklHID8/PSAidWRldiIKLVBBQ0tBR0VDT05GSUdbYmF0XSA9ICItLWVuYWJsZS1iYXQsLS1kaXNhYmxlLWJhdCxmZnR3IgotUEFDS0FHRUNPTkZJR1t1ZGV2XSA9ICItLXdpdGgtdWRldi1ydWxlcy1kaXI9YHBrZy1jb25maWcgLS12YXJpYWJsZT11ZGV2ZGlyIHVkZXZgL3J1bGVzLmQsLHVkZXYiCi1QQUNLQUdFQ09ORklHW3htbHRvXSA9ICItLWVuYWJsZS14bWx0bywgLS1kaXNhYmxlLXhtbHRvLCB4bWx0by1uYXRpdmUgZG9jYm9vay14bWwtZHRkNC1uYXRpdmUgZG9jYm9vay14c2wtc3R5bGVzaGVldHMtbmF0aXZlIgotCi1TUkNfVVJJID0gImZ0cDovL2Z0cC5hbHNhLXByb2plY3Qub3JnL3B1Yi91dGlscy9hbHNhLXV0aWxzLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1hbHNhY3RsLWRvbi10LWxldC1zeXN0ZW1kLXVuaXQtcmVzdG9yZS10aGUtdm9sdW1lLXdoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYWxzYWJhdC1yZW5hbWUtdG8tYXZvaWQtbmFtaW5nLWNvbmZsaWN0LnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiOWQ2MTAyZmJiZDBiNjgwNDBiYjc3MDIzZWQzMGMwYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzYjFjMzEzNWI3NmUxNDUzMmQzZGQyM2ZiMTU3NTlkZGQ3ZGFmOWZmYmMxODNmN2E5YTBhM2E4NjM3NDc0OGYxIgotCi0jIGxhenkgaGFjay4gbmVlZHMgcHJvcGVyIGZpeGluZyBpbiBnZXR0ZXh0Lm00LCBzZWUKLSMgaHR0cDovL2J1Z3Mub3BlbmVtYmVkZGVkLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0OAotIyBwbGVhc2UgY2xvc2UgYnVnIGFuZCByZW1vdmUgdGhpcyBjb21tZW50IHdoZW4gcHJvcGVybHkgZml4ZWQKLSMKLUVYVFJBX09FQ09ORl9hcHBlbmRfbGliYy11Y2xpYmMgPSAiIC0tZGlzYWJsZS1ubHMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnCi0KLSMgVGhpcyBhcmUgYWxsIHBhY2thZ2VzIHRoYXQgd2UgbmVlZCB0byBtYWtlLiBBbHNvLCB0aGUgbm93IGVtcHR5IGFsc2EtdXRpbHMKLSMgaXBrIGRlcGVuZHMgb24gdGhlbS4KLQotQUxTQV9VVElMU19QS0dTID0gIlwKLSAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdiYXQnLCAnYWxzYS11dGlscy1hbHNhYmF0JywgJycsIGQpfSBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhbWl4ZXIgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYXRwbGcgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtbWlkaSBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1hcGxheSBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1hbWl4ZXIgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWNvbm5lY3QgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtaWVjc2V0IFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLXNwZWFrZXJ0ZXN0IFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFzZXFuZXQgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYXNlcWR1bXAgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYWN0bCBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhbG9vcCBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhdWNtIFwKLSAgICAgICAgICAgICIKLQotUEFDS0FHRVMgKz0gIiR7QUxTQV9VVElMU19QS0dTfSIKLVJERVBFTkRTXyR7UE59ICs9ICIke0FMU0FfVVRJTFNfUEtHU30iCi0KLUZJTEVTXyR7UE59ID0gIiIKLUZJTEVTX2Fsc2EtdXRpbHMtYWxzYWJhdCAgICAgPSAiJHtiaW5kaXJ9L2Fsc2FiYXQiCi1GSUxFU19hbHNhLXV0aWxzLWFsc2F0cGxnICAgID0gIiR7YmluZGlyfS9hbHNhdHBsZyIKLUZJTEVTX2Fsc2EtdXRpbHMtYXBsYXkgICAgICAgPSAiJHtiaW5kaXJ9L2FwbGF5ICR7YmluZGlyfS9hcmVjb3JkIgotRklMRVNfYWxzYS11dGlscy1hbWl4ZXIgICAgICA9ICIke2JpbmRpcn0vYW1peGVyIgotRklMRVNfYWxzYS11dGlscy1hbHNhbWl4ZXIgICA9ICIke2JpbmRpcn0vYWxzYW1peGVyIgotRklMRVNfYWxzYS11dGlscy1zcGVha2VydGVzdCA9ICIke2JpbmRpcn0vc3BlYWtlci10ZXN0ICR7ZGF0YWRpcn0vc291bmRzL2Fsc2EvICR7ZGF0YWRpcn0vYWxzYS9zcGVha2VyLXRlc3QvIgotRklMRVNfYWxzYS11dGlscy1taWRpICAgICAgICA9ICIke2JpbmRpcn0vYXBsYXltaWRpICR7YmluZGlyfS9hcmVjb3JkbWlkaSAke2JpbmRpcn0vYW1pZGkiCi1GSUxFU19hbHNhLXV0aWxzLWFjb25uZWN0ICAgID0gIiR7YmluZGlyfS9hY29ubmVjdCIKLUZJTEVTX2Fsc2EtdXRpbHMtYXNlcW5ldCAgICAgPSAiJHtiaW5kaXJ9L2FzZXFuZXQiCi1GSUxFU19hbHNhLXV0aWxzLWllY3NldCAgICAgID0gIiR7YmluZGlyfS9pZWNzZXQiCi1GSUxFU19hbHNhLXV0aWxzLWFsc2FjdGwgICAgID0gIiR7c2JpbmRpcn0vYWxzYWN0bCAqL3VkZXYvcnVsZXMuZCAqLyovdWRldi9ydWxlcy5kICR7c3lzdGVtZF91bml0ZGlyfSAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9hbHNhICR7ZGF0YWRpcn0vYWxzYS9pbml0LyIKLUZJTEVTX2Fsc2EtdXRpbHMtYXNlcWR1bXAgICAgPSAiJHtiaW5kaXJ9L2FzZXFkdW1wIgotRklMRVNfYWxzYS11dGlscy1hbHNhbG9vcCAgICA9ICIke2JpbmRpcn0vYWxzYWxvb3AiCi1GSUxFU19hbHNhLXV0aWxzLWFsc2F1Y20gICAgID0gIiR7YmluZGlyfS9hbHNhdWNtIgotCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYWJhdCAgICAgID0gIkNvbW1hbmQtbGluZSBzb3VuZCB0ZXN0ZXIgZm9yIEFMU0Egc291bmQgY2FyZCBkcml2ZXIiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYXRwbGcgICAgID0gIkNvbnZlcnRzIHRvcG9sb2d5IHRleHQgZmlsZXMgaW50byBiaW5hcnkgZm9ybWF0IGZvciBrZXJuZWwiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYXBsYXkgICAgICAgID0gIlBsYXkgKGFuZCByZWNvcmQpIHNvdW5kIGZpbGVzIHVzaW5nIEFMU0EiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYW1peGVyICAgICAgID0gIkNvbW1hbmQtbGluZSBjb250cm9sIGZvciBBTFNBIG1peGVyIGFuZCBzZXR0aW5ncyIKLVNVTU1BUllfYWxzYS11dGlscy1hbHNhbWl4ZXIgICAgPSAibmN1cnNlcy1iYXNlZCBjb250cm9sIGZvciBBTFNBIG1peGVyIGFuZCBzZXR0aW5ncyIKLVNVTU1BUllfYWxzYS11dGlscy1zcGVha2VydGVzdCAgPSAiQUxTQSBzdXJyb3VuZCBzcGVha2VyIHRlc3QgdXRpbGl0eSIKLVNVTU1BUllfYWxzYS11dGlscy1taWRpICAgICAgICAgPSAiTWlzY2VsbGFuZW91cyBNSURJIHV0aWxpdGllcyBmb3IgQUxTQSIKLVNVTU1BUllfYWxzYS11dGlscy1hY29ubmVjdCAgICAgPSAiQUxTQSBzZXF1ZW5jZXIgY29ubmVjdGlvbiBtYW5hZ2VyIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFzZXFuZXQgICAgICA9ICJOZXR3b3JrIGNsaWVudC9zZXJ2ZXIgZm9yIEFMU0Egc2VxdWVuY2VyIgotU1VNTUFSWV9hbHNhLXV0aWxzLWllY3NldCAgICAgICA9ICJBTFNBIHV0aWxpdHkgZm9yIHNldHRpbmcvc2hvd2luZyBJRUM5NTggKFMvUERJRikgc3RhdHVzIGJpdHMiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYWN0bCAgICAgID0gIlNhdmVzL3Jlc3RvcmVzIEFMU0Etc2V0dGluZ3MgaW4gL2V0Yy9hc291bmQuc3RhdGUiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYXNlcWR1bXAgICAgID0gIlNob3dzIHRoZSBldmVudHMgcmVjZWl2ZWQgYXQgYW4gQUxTQSBzZXF1ZW5jZXIgcG9ydCIKLVNVTU1BUllfYWxzYS11dGlscy1hbHNhbG9vcCAgICAgPSAiQUxTQSBQQ00gbG9vcGJhY2sgdXRpbGl0eSIKLVNVTU1BUllfYWxzYS11dGlscy1hbHNhdWNtICAgICAgPSAiQUxTQSBVc2UgQ2FzZSBNYW5hZ2VyIgotCi1SUkVDT01NRU5EU19hbHNhLXV0aWxzLWFsc2FjdGwgPSAiYWxzYS1zdGF0ZXMiCi0KLUFMTE9XX0VNUFRZX2Fsc2EtdXRpbHMgPSAiMSIKLQotZG9faW5zdGFsbCgpIHsKLQlhdXRvdG9vbHNfZG9faW5zdGFsbAotCi0JIyBXZSBkb24ndCBzaGlwIHRoaXMgaGVyZSBiZWNhdXNlIGl0IHJlcXVpcmVzIGEgZGVwZW5kZW5jeSBvbiBiYXNoLgotCSMgU2VlIGFsc2EtdXRpbHMtc2NyaXB0c18ke1BWfS5iYgotCXJtICR7RH0ke3NiaW5kaXJ9L2Fsc2Fjb25mCi0Jcm0gJHtEfSR7c2JpbmRpcn0vYWxzYS1pbmZvLnNoCi0KLQlpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd1ZGV2JywgJ2ZhbHNlJywgJ3RydWUnLCBkKX07IHRoZW4KLQkgICAjIFRoaXMgaXMgd2hlcmUgYWxzYS11dGlscyB3aWxsIGluc3RhbGwgaXRzIHJ1bGVzIGlmIHdlIGRvbid0IHRlbGwgaXQgYW55dGhpbmcgZWxzZS4KLQkgICBybSAtcmYgJHtEfS9saWIvdWRldgotCSAgIHJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICR7RH0vbGliCi0JZmkKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHNfMS4xLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzXzEuMS4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyMmQ5OTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzXzEuMS4yLmJiCkBAIC0wLDAgKzEsMTA5IEBACitTVU1NQVJZID0gIkFMU0Egc291bmQgdXRpbGl0aWVzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hbHNhLXByb2plY3Qub3JnIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZy9tYWluL2luZGV4LnBocC9CdWdfVHJhY2tpbmciCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2Fsc2FjdGwvdXRpbHMuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIwO21kNT1mZTk1MjZiMDU1ZTI0NmI1NTU4ODA5YTVhZTI1YzBiOSIKK0RFUEVORFMgPSAiYWxzYS1saWIgbmN1cnNlcyBsaWJzYW1wbGVyYXRlMCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInVkZXYiCisKKyMgYWxzYWJhdCBjYW4gYmUgYnVpbHQgYWxzbyB3aXRob3V0IGZmdHcgc3VwcG9ydCAod2l0aCByZWR1Y2VkIGZ1bmN0aW9uYWxpdHkpLgorIyBJdCB3b3VsZCBiZSBiZXR0ZXIgdG8gYWx3YXlzIGVuYWJsZSBhbHNhYmF0LCBidXQgcHJvdmlkZSBhbiBvcHRpb24gZm9yCisjIGVuYWJsaW5nL2Rpc2FibGluZyBmZnR3LiBUaGUgY29uZmlndXJlIHNjcmlwdCBkb2Vzbid0IHN1cHBvcnQgdGhhdCwgaG93ZXZlcgorIyAoYXQgbGVhc3QgaW4gYW55IG9idmlvdXMgd2F5KSwgc28gZm9yIG5vdyB3ZSBvbmx5IHN1cHBvcnQgYWxzYWJhdCB3aXRoIGZmdHcKKyMgb3Igbm8gYWxzYWJhdCBhdCBhbGwuCitQQUNLQUdFQ09ORklHW2JhdF0gPSAiLS1lbmFibGUtYmF0LC0tZGlzYWJsZS1iYXQsZmZ0d2YiCisKK1BBQ0tBR0VDT05GSUdbdWRldl0gPSAiLS13aXRoLXVkZXYtcnVsZXMtZGlyPWBwa2ctY29uZmlnIC0tdmFyaWFibGU9dWRldmRpciB1ZGV2YC9ydWxlcy5kLCx1ZGV2IgorUEFDS0FHRUNPTkZJR1t4bWx0b10gPSAiLS1lbmFibGUteG1sdG8sIC0tZGlzYWJsZS14bWx0bywgeG1sdG8tbmF0aXZlIGRvY2Jvb2steG1sLWR0ZDQtbmF0aXZlIGRvY2Jvb2steHNsLXN0eWxlc2hlZXRzLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJmdHA6Ly9mdHAuYWxzYS1wcm9qZWN0Lm9yZy9wdWIvdXRpbHMvYWxzYS11dGlscy0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYWxzYWN0bC1kb24tdC1sZXQtc3lzdGVtZC11bml0LXJlc3RvcmUtdGhlLXZvbHVtZS13aC5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzhhYzdjNzgxZjgwYzQxYzAyYjQ2NjRkOGNiYWZhODciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2FmNjAzYzA4NzdkMTI1MTU5OWQ2NWI0ZmJjMzcyZTYzYTU0MzcxYjg4OGY1YzI2YzZhODZhYzFkMDUxOTA3MSIKKworIyBsYXp5IGhhY2suIG5lZWRzIHByb3BlciBmaXhpbmcgaW4gZ2V0dGV4dC5tNCwgc2VlCisjIGh0dHA6Ly9idWdzLm9wZW5lbWJlZGRlZC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDgKKyMgcGxlYXNlIGNsb3NlIGJ1ZyBhbmQgcmVtb3ZlIHRoaXMgY29tbWVudCB3aGVuIHByb3Blcmx5IGZpeGVkCisjCitFWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAtLWRpc2FibGUtbmxzIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZworCisjIFRoaXMgYXJlIGFsbCBwYWNrYWdlcyB0aGF0IHdlIG5lZWQgdG8gbWFrZS4gQWxzbywgdGhlIG5vdyBlbXB0eSBhbHNhLXV0aWxzCisjIGlwayBkZXBlbmRzIG9uIHRoZW0uCisKK0FMU0FfVVRJTFNfUEtHUyA9ICJcCisgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYmF0JywgJ2Fsc2EtdXRpbHMtYWxzYWJhdCcsICcnLCBkKX0gXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYW1peGVyIFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2F0cGxnIFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLW1pZGkgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYXBsYXkgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYW1peGVyIFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFjb25uZWN0IFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWllY3NldCBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1zcGVha2VydGVzdCBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hc2VxbmV0IFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFzZXFkdW1wIFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2FjdGwgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYWxvb3AgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYXVjbSBcCisgICAgICAgICAgICAiCisKK1BBQ0tBR0VTICs9ICIke0FMU0FfVVRJTFNfUEtHU30iCitSREVQRU5EU18ke1BOfSArPSAiJHtBTFNBX1VUSUxTX1BLR1N9IgorCitGSUxFU18ke1BOfSA9ICIiCitGSUxFU19hbHNhLXV0aWxzLWFsc2FiYXQgICAgID0gIiR7YmluZGlyfS9hbHNhYmF0IgorRklMRVNfYWxzYS11dGlscy1hbHNhdHBsZyAgICA9ICIke2JpbmRpcn0vYWxzYXRwbGciCitGSUxFU19hbHNhLXV0aWxzLWFwbGF5ICAgICAgID0gIiR7YmluZGlyfS9hcGxheSAke2JpbmRpcn0vYXJlY29yZCIKK0ZJTEVTX2Fsc2EtdXRpbHMtYW1peGVyICAgICAgPSAiJHtiaW5kaXJ9L2FtaXhlciIKK0ZJTEVTX2Fsc2EtdXRpbHMtYWxzYW1peGVyICAgPSAiJHtiaW5kaXJ9L2Fsc2FtaXhlciIKK0ZJTEVTX2Fsc2EtdXRpbHMtc3BlYWtlcnRlc3QgPSAiJHtiaW5kaXJ9L3NwZWFrZXItdGVzdCAke2RhdGFkaXJ9L3NvdW5kcy9hbHNhLyAke2RhdGFkaXJ9L2Fsc2Evc3BlYWtlci10ZXN0LyIKK0ZJTEVTX2Fsc2EtdXRpbHMtbWlkaSAgICAgICAgPSAiJHtiaW5kaXJ9L2FwbGF5bWlkaSAke2JpbmRpcn0vYXJlY29yZG1pZGkgJHtiaW5kaXJ9L2FtaWRpIgorRklMRVNfYWxzYS11dGlscy1hY29ubmVjdCAgICA9ICIke2JpbmRpcn0vYWNvbm5lY3QiCitGSUxFU19hbHNhLXV0aWxzLWFzZXFuZXQgICAgID0gIiR7YmluZGlyfS9hc2VxbmV0IgorRklMRVNfYWxzYS11dGlscy1pZWNzZXQgICAgICA9ICIke2JpbmRpcn0vaWVjc2V0IgorRklMRVNfYWxzYS11dGlscy1hbHNhY3RsICAgICA9ICIke3NiaW5kaXJ9L2Fsc2FjdGwgKi91ZGV2L3J1bGVzLmQgKi8qL3VkZXYvcnVsZXMuZCAke3N5c3RlbWRfdW5pdGRpcn0gJHtsb2NhbHN0YXRlZGlyfS9saWIvYWxzYSAke2RhdGFkaXJ9L2Fsc2EvaW5pdC8iCitGSUxFU19hbHNhLXV0aWxzLWFzZXFkdW1wICAgID0gIiR7YmluZGlyfS9hc2VxZHVtcCIKK0ZJTEVTX2Fsc2EtdXRpbHMtYWxzYWxvb3AgICAgPSAiJHtiaW5kaXJ9L2Fsc2Fsb29wIgorRklMRVNfYWxzYS11dGlscy1hbHNhdWNtICAgICA9ICIke2JpbmRpcn0vYWxzYXVjbSIKKworU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2FiYXQgICAgICA9ICJDb21tYW5kLWxpbmUgc291bmQgdGVzdGVyIGZvciBBTFNBIHNvdW5kIGNhcmQgZHJpdmVyIgorU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2F0cGxnICAgICA9ICJDb252ZXJ0cyB0b3BvbG9neSB0ZXh0IGZpbGVzIGludG8gYmluYXJ5IGZvcm1hdCBmb3Iga2VybmVsIgorU1VNTUFSWV9hbHNhLXV0aWxzLWFwbGF5ICAgICAgICA9ICJQbGF5IChhbmQgcmVjb3JkKSBzb3VuZCBmaWxlcyB1c2luZyBBTFNBIgorU1VNTUFSWV9hbHNhLXV0aWxzLWFtaXhlciAgICAgICA9ICJDb21tYW5kLWxpbmUgY29udHJvbCBmb3IgQUxTQSBtaXhlciBhbmQgc2V0dGluZ3MiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYW1peGVyICAgID0gIm5jdXJzZXMtYmFzZWQgY29udHJvbCBmb3IgQUxTQSBtaXhlciBhbmQgc2V0dGluZ3MiCitTVU1NQVJZX2Fsc2EtdXRpbHMtc3BlYWtlcnRlc3QgID0gIkFMU0Egc3Vycm91bmQgc3BlYWtlciB0ZXN0IHV0aWxpdHkiCitTVU1NQVJZX2Fsc2EtdXRpbHMtbWlkaSAgICAgICAgID0gIk1pc2NlbGxhbmVvdXMgTUlESSB1dGlsaXRpZXMgZm9yIEFMU0EiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWNvbm5lY3QgICAgID0gIkFMU0Egc2VxdWVuY2VyIGNvbm5lY3Rpb24gbWFuYWdlciIKK1NVTU1BUllfYWxzYS11dGlscy1hc2VxbmV0ICAgICAgPSAiTmV0d29yayBjbGllbnQvc2VydmVyIGZvciBBTFNBIHNlcXVlbmNlciIKK1NVTU1BUllfYWxzYS11dGlscy1pZWNzZXQgICAgICAgPSAiQUxTQSB1dGlsaXR5IGZvciBzZXR0aW5nL3Nob3dpbmcgSUVDOTU4IChTL1BESUYpIHN0YXR1cyBiaXRzIgorU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2FjdGwgICAgICA9ICJTYXZlcy9yZXN0b3JlcyBBTFNBLXNldHRpbmdzIGluIC9ldGMvYXNvdW5kLnN0YXRlIgorU1VNTUFSWV9hbHNhLXV0aWxzLWFzZXFkdW1wICAgICA9ICJTaG93cyB0aGUgZXZlbnRzIHJlY2VpdmVkIGF0IGFuIEFMU0Egc2VxdWVuY2VyIHBvcnQiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYWxvb3AgICAgID0gIkFMU0EgUENNIGxvb3BiYWNrIHV0aWxpdHkiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYXVjbSAgICAgID0gIkFMU0EgVXNlIENhc2UgTWFuYWdlciIKKworUlJFQ09NTUVORFNfYWxzYS11dGlscy1hbHNhY3RsID0gImFsc2Etc3RhdGVzIgorCitBTExPV19FTVBUWV9hbHNhLXV0aWxzID0gIjEiCisKK2RvX2luc3RhbGwoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKworCSMgV2UgZG9uJ3Qgc2hpcCB0aGlzIGhlcmUgYmVjYXVzZSBpdCByZXF1aXJlcyBhIGRlcGVuZGVuY3kgb24gYmFzaC4KKwkjIFNlZSBhbHNhLXV0aWxzLXNjcmlwdHNfJHtQVn0uYmIKKwlybSAke0R9JHtzYmluZGlyfS9hbHNhY29uZgorCXJtICR7RH0ke3NiaW5kaXJ9L2Fsc2EtaW5mby5zaAorCXJtIC1mICR7RH0ke3NiaW5kaXJ9L2Fsc2FiYXQtdGVzdC5zaAorCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndWRldicsICdmYWxzZScsICd0cnVlJywgZCl9OyB0aGVuCisJCSMgVGhpcyBpcyB3aGVyZSBhbHNhLXV0aWxzIHdpbGwgaW5zdGFsbCBpdHMgcnVsZXMgaWYgd2UgZG9uJ3QgdGVsbCBpdCBhbnl0aGluZyBlbHNlLgorCQlybSAtcmYgJHtEfS9saWIvdWRldgorCQlybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9L2xpYgorCWZpCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9taXBzNjRfY3B1X2RldGVjdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL21pcHM2NF9jcHVfZGV0ZWN0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5NDI5YWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9taXBzNjRfY3B1X2RldGVjdGlvbi5wYXRjaApAQCAtMCwwICsxLDMyIEBACitJdCB3aWxsIGFkZCAtbWlwczY0cjYgYW5kIC1taXBzNjRyMiB0byBjbWRsaW5lIHdoaWNoIHdpbGwKK2NhdXNlIGNvbmZsaWN0cworCitpbiBPRSB3ZSB1c2VyIG1pcHMzMnIyIGFuZCBtaXBzNjRyMiBmb3IgbWlwcyBhcmNoIHZlcnNpb25zCitzbyB0aGVyZSBpcyBubyBiZW5lZml0IG9mIGRldGVjdGluZyBpdCBhdXRvbWF0aWNhbGx5IGJ5Citwb2tpbmcgYXQgdG9vbHMgZXNwZWNpYWxseSBpbiBjcm9zcyBlbnYKKworRml4ZXMgZXJyb3JzIGxpa2UKKworbGlua2luZyAtbW5hbj0yMDA4IG1vZHVsZSB3aXRoIHByZXZpb3VzIC1tbmFuPWxlZ2FjeSBtb2R1bGVzCitmYWlsZWQgdG8gbWVyZ2UgdGFyZ2V0IHNwZWNpZmljIGRhdGEgb2YgZmlsZQorCistS2hlbQorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1TcGVjaWZpY10KKworSW5kZXg6IGZmbXBlZy0zLjEuMS9jb25maWd1cmUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBmZm1wZWctMy4xLjEub3JpZy9jb25maWd1cmUKKysrKyBmZm1wZWctMy4xLjEvY29uZmlndXJlCitAQCAtNTIyMCwxMiArNTIyMCw5IEBAIGVsaWYgZW5hYmxlZCBtaXBzOyB0aGVuCisgCisgICAgICMgRW5hYmxlIG1pbmltdW0gSVNBIGJhc2VkIG9uIHNlbGVjdGVkIG9wdGlvbnMKKyAgICAgaWYgZW5hYmxlZCBtaXBzNjQ7IHRoZW4KKy0gICAgICAgIGVuYWJsZWQgbWlwczY0cjYgJiYgY2hlY2tfaW5saW5lX2FzbV9mbGFncyBtaXBzNjRyNiAnImRsc2EgJDAsICQwLCAkMCwgMSInICctbWlwczY0cjYnCisgICAgICAgICBlbmFibGVkIG1pcHM2NHIyICYmIGNoZWNrX2lubGluZV9hc21fZmxhZ3MgbWlwczY0cjIgJyJkZXh0ICQwLCAkMCwgMCwgMSInICctbWlwczY0cjInCisgICAgICAgICBkaXNhYmxlZCBtaXBzNjRyNiAmJiBkaXNhYmxlZCBtaXBzNjRyMiAmJiBjaGVja19pbmxpbmVfYXNtX2ZsYWdzIG1pcHM2NHIxICciZGFkZGkgJDAsICQwLCAwIicgJy1taXBzNjQnCisgICAgIGVsc2UKKy0gICAgICAgIGVuYWJsZWQgbWlwczMycjYgJiYgY2hlY2tfaW5saW5lX2FzbV9mbGFncyBtaXBzMzJyNiAnImF1aSAkMCwgJDAsIDAiJyAnLW1pcHMzMnI2JworLSAgICAgICAgZW5hYmxlZCBtaXBzMzJyNSAmJiBjaGVja19pbmxpbmVfYXNtX2ZsYWdzIG1pcHMzMnI1ICciZXJldG5jIicgJy1taXBzMzJyNScKKyAgICAgICAgIGVuYWJsZWQgbWlwczMycjIgJiYgY2hlY2tfaW5saW5lX2FzbV9mbGFncyBtaXBzMzJyMiAnImV4dCAkMCwgJDAsIDAsIDEiJyAnLW1pcHMzMnIyJworICAgICAgICAgZGlzYWJsZWQgbWlwczMycjYgJiYgZGlzYWJsZWQgbWlwczMycjUgJiYgZGlzYWJsZWQgbWlwczMycjIgJiYgY2hlY2tfaW5saW5lX2FzbV9mbGFncyBtaXBzMzJyMSAnImFkZGkgJDAsICQwLCAwIicgJy1taXBzMzInCisgICAgIGZpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZ18zLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZ18zLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkZmJiOWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWdfMy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTM5ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBjb21wbGV0ZSwgY3Jvc3MtcGxhdGZvcm0gc29sdXRpb24gdG8gcmVjb3JkLCBjb252ZXJ0IGFuZCBzdHJlYW0gYXVkaW8gYW5kIHZpZGVvLiIKLURFU0NSSVBUSU9OID0gIkZGbXBlZyBpcyB0aGUgbGVhZGluZyBtdWx0aW1lZGlhIGZyYW1ld29yaywgYWJsZSB0byBkZWNvZGUsIGVuY29kZSwgdHJhbnNjb2RlLCBcCi0gICAgICAgICAgICAgICBtdXgsIGRlbXV4LCBzdHJlYW0sIGZpbHRlciBhbmQgcGxheSBwcmV0dHkgbXVjaCBhbnl0aGluZyB0aGF0IGh1bWFucyBhbmQgbWFjaGluZXMgXAotICAgICAgICAgICAgICAgaGF2ZSBjcmVhdGVkLiBJdCBzdXBwb3J0cyB0aGUgbW9zdCBvYnNjdXJlIGFuY2llbnQgZm9ybWF0cyB1cCB0byB0aGUgY3V0dGluZyBlZGdlLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vd3d3LmZmbXBlZy5vcmcvIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5HUEx2MjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5HUEx2MzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MR1BMdjIuMTttZDU9YmQ3YTQ0MzMyMGFmOGM4MTJlNGMxOGQxYjc5ZGYwMDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MR1BMdjM7bWQ1PWU2YTYwMGZkNWUxZDljYmRlMmQ5ODM2ODAyMzNhZDAyIgotCi1TUkNfVVJJID0gImh0dHBzOi8vd3d3LmZmbXBlZy5vcmcvcmVsZWFzZXMvJHtCUH0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZWY5YjY2MzRiYjdjOTIwZWZjOTQwYjRkNTVhZGY3YjIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTJmMzJjZWU0MWM3NDQzNWY2MDhjMzA3OTNmZDYxNmJkZjUzNDY3YmI1MTMyNzhlMjczZTEzNWE0YzU4ZTQ3MCIKLQotIyBCdWlsZCBmYWlscyB3aGVuIHRodW1iIGlzIGVuYWJsZWQ6IGh0dHBzOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcxNwotQVJNX0lOU1RSVUNUSU9OX1NFVCA9ICJhcm0iCi0KLSMgU2hvdWxkIGJlIEFQSSBjb21wYXRpYmxlIHdpdGggbGliYXYgKHdoaWNoIHdhcyBhIGZvcmsgb2YgZmZtcGVnKQotIyBsaWJwb3N0cHJvYyB3YXMgcHJldmlvdXNseSBwYWNrYWdlZCBmcm9tIGEgc2VwYXJhdGUgcmVjaXBlCi1QUk9WSURFUyA9ICJsaWJhdiBsaWJwb3N0cHJvYyIKLQotREVQRU5EUyA9ICJhbHNhLWxpYiB6bGliIGxpYm9nZyB5YXNtLW5hdGl2ZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJhdmRldmljZSBhdmZpbHRlciBhdmNvZGVjIGF2Zm9ybWF0IHN3cmVzYW1wbGUgc3dzY2FsZSBwb3N0cHJvYyBcCi0gICAgICAgICAgICAgICAgICAgYnpsaWIgZ3BsIGx6bWEgdGhlb3JhIHgyNjQgXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3gxMSB4dicsICcnLCBkKX0iCi0KLSMgbGlicmFyaWVzIHRvIGJ1aWxkIGluIGFkZGl0aW9uIHRvIGF2dXRpbAotUEFDS0FHRUNPTkZJR1thdmRldmljZV0gPSAiLS1lbmFibGUtYXZkZXZpY2UsLS1kaXNhYmxlLWF2ZGV2aWNlIgotUEFDS0FHRUNPTkZJR1thdmZpbHRlcl0gPSAiLS1lbmFibGUtYXZmaWx0ZXIsLS1kaXNhYmxlLWF2ZmlsdGVyIgotUEFDS0FHRUNPTkZJR1thdmNvZGVjXSA9ICItLWVuYWJsZS1hdmNvZGVjLC0tZGlzYWJsZS1hdmNvZGVjIgotUEFDS0FHRUNPTkZJR1thdmZvcm1hdF0gPSAiLS1lbmFibGUtYXZmb3JtYXQsLS1kaXNhYmxlLWF2Zm9ybWF0IgotUEFDS0FHRUNPTkZJR1tzd3Jlc2FtcGxlXSA9ICItLWVuYWJsZS1zd3Jlc2FtcGxlLC0tZGlzYWJsZS1zd3Jlc2FtcGxlIgotUEFDS0FHRUNPTkZJR1tzd3NjYWxlXSA9ICItLWVuYWJsZS1zd3NjYWxlLC0tZGlzYWJsZS1zd3NjYWxlIgotUEFDS0FHRUNPTkZJR1twb3N0cHJvY10gPSAiLS1lbmFibGUtcG9zdHByb2MsLS1kaXNhYmxlLXBvc3Rwcm9jIgotUEFDS0FHRUNPTkZJR1thdnJlc2FtcGxlXSA9ICItLWVuYWJsZS1hdnJlc2FtcGxlLC0tZGlzYWJsZS1hdnJlc2FtcGxlIgotCi0jIGZlYXR1cmVzIHRvIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbYnpsaWJdID0gIi0tZW5hYmxlLWJ6bGliLC0tZGlzYWJsZS1iemxpYixiemlwMiIKLVBBQ0tBR0VDT05GSUdbZmFhY10gPSAiLS1lbmFibGUtbGliZmFhYywtLWRpc2FibGUtbGliZmFhYyxmYWFjIgotUEFDS0FHRUNPTkZJR1tncGxdID0gIi0tZW5hYmxlLWdwbCwtLWRpc2FibGUtZ3BsIgotUEFDS0FHRUNPTkZJR1tnc21dID0gIi0tZW5hYmxlLWxpYmdzbSwtLWRpc2FibGUtbGliZ3NtLGxpYmdzbSIKLVBBQ0tBR0VDT05GSUdbamFja10gPSAiLS1lbmFibGUtaW5kZXY9amFjaywtLWRpc2FibGUtaW5kZXY9amFjayxqYWNrIgotUEFDS0FHRUNPTkZJR1tsaWJ2b3JiaXNdID0gIi0tZW5hYmxlLWxpYnZvcmJpcywtLWRpc2FibGUtbGlidm9yYmlzLGxpYnZvcmJpcyIKLVBBQ0tBR0VDT05GSUdbbHptYV0gPSAiLS1lbmFibGUtbHptYSwtLWRpc2FibGUtbHptYSx4eiIKLVBBQ0tBR0VDT05GSUdbbXAzbGFtZV0gPSAiLS1lbmFibGUtbGlibXAzbGFtZSwtLWRpc2FibGUtbGlibXAzbGFtZSxsYW1lIgotUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLWVuYWJsZS1vcGVuc3NsLC0tZGlzYWJsZS1vcGVuc3NsLG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW3NjaHJvZWRpbmdlcl0gPSAiLS1lbmFibGUtbGlic2Nocm9lZGluZ2VyLC0tZGlzYWJsZS1saWJzY2hyb2VkaW5nZXIsc2Nocm9lZGluZ2VyIgotUEFDS0FHRUNPTkZJR1tzcGVleF0gPSAiLS1lbmFibGUtbGlic3BlZXgsLS1kaXNhYmxlLWxpYnNwZWV4LHNwZWV4IgotUEFDS0FHRUNPTkZJR1t0aGVvcmFdID0gIi0tZW5hYmxlLWxpYnRoZW9yYSwtLWRpc2FibGUtbGlidGhlb3JhLGxpYnRoZW9yYSIKLVBBQ0tBR0VDT05GSUdbdmFhcGldID0gIi0tZW5hYmxlLXZhYXBpLC0tZGlzYWJsZS12YWFwaSxsaWJ2YSIKLVBBQ0tBR0VDT05GSUdbdnB4XSA9ICItLWVuYWJsZS1saWJ2cHgsLS1kaXNhYmxlLWxpYnZweCxsaWJ2cHgiCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUteDExZ3JhYiwtLWRpc2FibGUteDExZ3JhYix2aXJ0dWFsL2xpYngxMSBsaWJ4Zml4ZXMgbGlieGV4dCB4cHJvdG8gdmlydHVhbC9saWJzZGwiCi1QQUNLQUdFQ09ORklHW3gyNjRdID0gIi0tZW5hYmxlLWxpYngyNjQsLS1kaXNhYmxlLWxpYngyNjQseDI2NCIKLVBBQ0tBR0VDT05GSUdbeHZdID0gIi0tZW5hYmxlLW91dGRldj14diwtLWRpc2FibGUtb3V0ZGV2PXh2LGxpYnh2IgotCi0jIENoZWNrIGNvZGVjcyB0aGF0IHJlcXVpcmUgLS1lbmFibGUtbm9uZnJlZQotVVNFX05PTkZSRUUgPSAiJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdQQUNLQUdFQ09ORklHJywgWyAnZmFhYycsICdvcGVuc3NsJyBdLCAneWVzJywgJycsIGQpfSIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1kaXNhYmxlLXN0cmlwcGluZyBcCi0gICAgLS1lbmFibGUtcGljIFwKLSAgICAtLWVuYWJsZS1zaGFyZWQgXAotICAgIC0tZW5hYmxlLXB0aHJlYWRzIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnVVNFX05PTkZSRUUnLCAneWVzJywgJy0tZW5hYmxlLW5vbmZyZWUnLCAnJywgZCl9IFwKLSAgICBcCi0gICAgLS1jcm9zcy1wcmVmaXg9JHtUQVJHRVRfUFJFRklYfSBcCi0gICAgXAotICAgIC0tbGQ9IiR7Q0NMRH0iIFwKLSAgICAtLWFyY2g9JHtUQVJHRVRfQVJDSH0gXAotICAgIC0tdGFyZ2V0LW9zPSJsaW51eCIgXAotICAgIC0tZW5hYmxlLWNyb3NzLWNvbXBpbGUgXAotICAgIC0tZXh0cmEtY2ZsYWdzPSIke1RBUkdFVF9DRkxBR1N9ICR7SE9TVF9DQ19BUkNIfSR7VE9PTENIQUlOX09QVElPTlN9IiBcCi0gICAgLS1leHRyYS1sZGZsYWdzPSIke1RBUkdFVF9MREZMQUdTfSIgXAotICAgIC0tc3lzcm9vdD0iJHtTVEFHSU5HX0RJUl9UQVJHRVR9IiBcCi0gICAgLS1lbmFibGUtaGFyZGNvZGVkLXRhYmxlcyBcCi0gICAgJHtFWFRSQV9GRkNPTkZ9IFwKLSAgICAtLWxpYmRpcj0ke2xpYmRpcn0gXAotICAgIC0tc2hsaWJkaXI9JHtsaWJkaXJ9IFwKLSAgICAtLWRhdGFkaXI9JHtkYXRhZGlyfS9mZm1wZWcgXAotIgotCi1kb19jb25maWd1cmUoKSB7Ci0gICAgJHtTfS9jb25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9Ci19Ci0KLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl5saWIoYXYoY29kZWN8ZGV2aWNlfGZpbHRlcnxmb3JtYXR8dXRpbHxyZXNhbXBsZSl8c3dzY2FsZXxzd3Jlc2FtcGxlfHBvc3Rwcm9jKS4qIgotCi0jIGZmbXBlZyBkaXNhYmxlcyBQSUMgb24gc29tZSBwbGF0Zm9ybXMgKGUuZy4geDg2LTMyKQotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdmNvZGVjID0gInRleHRyZWwiCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2ZGV2aWNlID0gInRleHRyZWwiCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2ZmlsdGVyID0gInRleHRyZWwiCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2Zm9ybWF0ID0gInRleHRyZWwiCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2dXRpbCA9ICJ0ZXh0cmVsIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdnJlc2FtcGxlID0gInRleHRyZWwiCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYnN3c2NhbGUgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGlic3dyZXNhbXBsZSA9ICJ0ZXh0cmVsIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJwb3N0cHJvYyA9ICJ0ZXh0cmVsIgotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCgpIHsKLSAgICBhdl9saWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9JykKLSAgICBhdl9wa2djb25maWcgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L3BrZ2NvbmZpZycpCi0KLSAgICAjIFJ1bnRpbWUgcGFja2FnZQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGF2X2xpYmRpciwgJ15saWIoLiopXC5zb1wuLionLAotICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9wYXR0ZXJuPSdsaWIlcycsCi0gICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249J2xpYmF2ICVzIGxpYnJhcnknLAotICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX2RlcGVuZHM9JycsCi0gICAgICAgICAgICAgICAgICAgICAgcHJlcGVuZD1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgIGFsbG93X2xpbmtzPVRydWUpCi0KLSAgICAjIERldmVsb3BtZW50IHBhY2thZ2VzICgtZGV2LCAtc3RhdGljZGV2KQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGF2X2xpYmRpciwgJ15saWIoLiopXC5zbyQnLAotICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9wYXR0ZXJuPSdsaWIlcy1kZXYnLAotICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPSdsaWJhdiAlcyBkZXZlbG9wbWVudCBwYWNrYWdlJywKLSAgICAgICAgICAgICAgICAgICAgICBleHRyYV9kZXBlbmRzPScke1BOfS1kZXYnLAotICAgICAgICAgICAgICAgICAgICAgIHByZXBlbmQ9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICBhbGxvd19saW5rcz1UcnVlKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGF2X3BrZ2NvbmZpZywgJ15saWIoLiopXC5wYyQnLAotICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9wYXR0ZXJuPSdsaWIlcy1kZXYnLAotICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPSdsaWJhdiAlcyBkZXZlbG9wbWVudCBwYWNrYWdlJywKLSAgICAgICAgICAgICAgICAgICAgICBleHRyYV9kZXBlbmRzPScke1BOfS1kZXYnLAotICAgICAgICAgICAgICAgICAgICAgIHByZXBlbmQ9VHJ1ZSkKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBhdl9saWJkaXIsICdebGliKC4qKVwuYSQnLAotICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9wYXR0ZXJuPSdsaWIlcy1zdGF0aWNkZXYnLAotICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPSdsaWJhdiAlcyBkZXZlbG9wbWVudCBwYWNrYWdlIC0gc3RhdGljIGxpYnJhcnknLAotICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX2RlcGVuZHM9JyR7UE59LWRldicsCi0gICAgICAgICAgICAgICAgICAgICAgcHJlcGVuZD1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgIGFsbG93X2xpbmtzPVRydWUpCi0KLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnXzMuMS4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWdfMy4xLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDUwZjFlZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnXzMuMS4zLmJiCkBAIC0wLDAgKzEsMTQyIEBACitTVU1NQVJZID0gIkEgY29tcGxldGUsIGNyb3NzLXBsYXRmb3JtIHNvbHV0aW9uIHRvIHJlY29yZCwgY29udmVydCBhbmQgc3RyZWFtIGF1ZGlvIGFuZCB2aWRlby4iCitERVNDUklQVElPTiA9ICJGRm1wZWcgaXMgdGhlIGxlYWRpbmcgbXVsdGltZWRpYSBmcmFtZXdvcmssIGFibGUgdG8gZGVjb2RlLCBlbmNvZGUsIHRyYW5zY29kZSwgXAorICAgICAgICAgICAgICAgbXV4LCBkZW11eCwgc3RyZWFtLCBmaWx0ZXIgYW5kIHBsYXkgcHJldHR5IG11Y2ggYW55dGhpbmcgdGhhdCBodW1hbnMgYW5kIG1hY2hpbmVzIFwKKyAgICAgICAgICAgICAgIGhhdmUgY3JlYXRlZC4gSXQgc3VwcG9ydHMgdGhlIG1vc3Qgb2JzY3VyZSBhbmNpZW50IGZvcm1hdHMgdXAgdG8gdGhlIGN1dHRpbmcgZWRnZS4iCitIT01FUEFHRSA9ICJodHRwczovL3d3dy5mZm1wZWcub3JnLyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJHUEx2MisiCitMSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuR1BMdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuR1BMdjM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTHYyLjE7bWQ1PWJkN2E0NDMzMjBhZjhjODEyZTRjMThkMWI3OWRmMDA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTHYzO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiIKKworU1JDX1VSSSA9ICJodHRwczovL3d3dy5mZm1wZWcub3JnL3JlbGVhc2VzLyR7QlB9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9taXBzNjRfY3B1X2RldGVjdGlvbi5wYXRjaCBcCisgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjcyNzY5MzE2YTRiMmI4ODA5YzdmNmQ1YThiNjc2NmY0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImY4NTc1YzA3MWUyYTY0NDM3YWViNzBjOGMwMzBiMzg1Y2RkYmUwYjVjZGUyMGM5YjE4YTZkZWY4NDAxMjg4MjIiCisKKyMgQnVpbGQgZmFpbHMgd2hlbiB0aHVtYiBpcyBlbmFibGVkOiBodHRwczovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MTcKK0FSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgorCisjIFNob3VsZCBiZSBBUEkgY29tcGF0aWJsZSB3aXRoIGxpYmF2ICh3aGljaCB3YXMgYSBmb3JrIG9mIGZmbXBlZykKKyMgbGlicG9zdHByb2Mgd2FzIHByZXZpb3VzbHkgcGFja2FnZWQgZnJvbSBhIHNlcGFyYXRlIHJlY2lwZQorUFJPVklERVMgPSAibGliYXYgbGlicG9zdHByb2MiCisKK0RFUEVORFMgPSAiYWxzYS1saWIgemxpYiBsaWJvZ2cgeWFzbS1uYXRpdmUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitQQUNLQUdFQ09ORklHID8/PSAiYXZkZXZpY2UgYXZmaWx0ZXIgYXZjb2RlYyBhdmZvcm1hdCBzd3Jlc2FtcGxlIHN3c2NhbGUgcG9zdHByb2MgXAorICAgICAgICAgICAgICAgICAgIGJ6bGliIGdwbCBsem1hIHRoZW9yYSB4MjY0IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEgeHYnLCAnJywgZCl9IgorCisjIGxpYnJhcmllcyB0byBidWlsZCBpbiBhZGRpdGlvbiB0byBhdnV0aWwKK1BBQ0tBR0VDT05GSUdbYXZkZXZpY2VdID0gIi0tZW5hYmxlLWF2ZGV2aWNlLC0tZGlzYWJsZS1hdmRldmljZSIKK1BBQ0tBR0VDT05GSUdbYXZmaWx0ZXJdID0gIi0tZW5hYmxlLWF2ZmlsdGVyLC0tZGlzYWJsZS1hdmZpbHRlciIKK1BBQ0tBR0VDT05GSUdbYXZjb2RlY10gPSAiLS1lbmFibGUtYXZjb2RlYywtLWRpc2FibGUtYXZjb2RlYyIKK1BBQ0tBR0VDT05GSUdbYXZmb3JtYXRdID0gIi0tZW5hYmxlLWF2Zm9ybWF0LC0tZGlzYWJsZS1hdmZvcm1hdCIKK1BBQ0tBR0VDT05GSUdbc3dyZXNhbXBsZV0gPSAiLS1lbmFibGUtc3dyZXNhbXBsZSwtLWRpc2FibGUtc3dyZXNhbXBsZSIKK1BBQ0tBR0VDT05GSUdbc3dzY2FsZV0gPSAiLS1lbmFibGUtc3dzY2FsZSwtLWRpc2FibGUtc3dzY2FsZSIKK1BBQ0tBR0VDT05GSUdbcG9zdHByb2NdID0gIi0tZW5hYmxlLXBvc3Rwcm9jLC0tZGlzYWJsZS1wb3N0cHJvYyIKK1BBQ0tBR0VDT05GSUdbYXZyZXNhbXBsZV0gPSAiLS1lbmFibGUtYXZyZXNhbXBsZSwtLWRpc2FibGUtYXZyZXNhbXBsZSIKKworIyBmZWF0dXJlcyB0byBzdXBwb3J0CitQQUNLQUdFQ09ORklHW2J6bGliXSA9ICItLWVuYWJsZS1iemxpYiwtLWRpc2FibGUtYnpsaWIsYnppcDIiCitQQUNLQUdFQ09ORklHW2ZhYWNdID0gIi0tZW5hYmxlLWxpYmZhYWMsLS1kaXNhYmxlLWxpYmZhYWMsZmFhYyIKK1BBQ0tBR0VDT05GSUdbZ3BsXSA9ICItLWVuYWJsZS1ncGwsLS1kaXNhYmxlLWdwbCIKK1BBQ0tBR0VDT05GSUdbZ3NtXSA9ICItLWVuYWJsZS1saWJnc20sLS1kaXNhYmxlLWxpYmdzbSxsaWJnc20iCitQQUNLQUdFQ09ORklHW2phY2tdID0gIi0tZW5hYmxlLWluZGV2PWphY2ssLS1kaXNhYmxlLWluZGV2PWphY2ssamFjayIKK1BBQ0tBR0VDT05GSUdbbGlidm9yYmlzXSA9ICItLWVuYWJsZS1saWJ2b3JiaXMsLS1kaXNhYmxlLWxpYnZvcmJpcyxsaWJ2b3JiaXMiCitQQUNLQUdFQ09ORklHW2x6bWFdID0gIi0tZW5hYmxlLWx6bWEsLS1kaXNhYmxlLWx6bWEseHoiCitQQUNLQUdFQ09ORklHW21wM2xhbWVdID0gIi0tZW5hYmxlLWxpYm1wM2xhbWUsLS1kaXNhYmxlLWxpYm1wM2xhbWUsbGFtZSIKK1BBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS1lbmFibGUtb3BlbnNzbCwtLWRpc2FibGUtb3BlbnNzbCxvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1tzY2hyb2VkaW5nZXJdID0gIi0tZW5hYmxlLWxpYnNjaHJvZWRpbmdlciwtLWRpc2FibGUtbGlic2Nocm9lZGluZ2VyLHNjaHJvZWRpbmdlciIKK1BBQ0tBR0VDT05GSUdbc3BlZXhdID0gIi0tZW5hYmxlLWxpYnNwZWV4LC0tZGlzYWJsZS1saWJzcGVleCxzcGVleCIKK1BBQ0tBR0VDT05GSUdbdGhlb3JhXSA9ICItLWVuYWJsZS1saWJ0aGVvcmEsLS1kaXNhYmxlLWxpYnRoZW9yYSxsaWJ0aGVvcmEiCitQQUNLQUdFQ09ORklHW3ZhYXBpXSA9ICItLWVuYWJsZS12YWFwaSwtLWRpc2FibGUtdmFhcGksbGlidmEiCitQQUNLQUdFQ09ORklHW3ZweF0gPSAiLS1lbmFibGUtbGlidnB4LC0tZGlzYWJsZS1saWJ2cHgsbGlidnB4IgorUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLXgxMWdyYWIsLS1kaXNhYmxlLXgxMWdyYWIsdmlydHVhbC9saWJ4MTEgbGlieGZpeGVzIGxpYnhleHQgeHByb3RvIHZpcnR1YWwvbGlic2RsIgorUEFDS0FHRUNPTkZJR1t4MjY0XSA9ICItLWVuYWJsZS1saWJ4MjY0LC0tZGlzYWJsZS1saWJ4MjY0LHgyNjQiCitQQUNLQUdFQ09ORklHW3h2XSA9ICItLWVuYWJsZS1vdXRkZXY9eHYsLS1kaXNhYmxlLW91dGRldj14dixsaWJ4diIKKworIyBDaGVjayBjb2RlY3MgdGhhdCByZXF1aXJlIC0tZW5hYmxlLW5vbmZyZWUKK1VTRV9OT05GUkVFID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnUEFDS0FHRUNPTkZJRycsIFsgJ2ZhYWMnLCAnb3BlbnNzbCcgXSwgJ3llcycsICcnLCBkKX0iCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0tZGlzYWJsZS1zdHJpcHBpbmcgXAorICAgIC0tZW5hYmxlLXBpYyBcCisgICAgLS1lbmFibGUtc2hhcmVkIFwKKyAgICAtLWVuYWJsZS1wdGhyZWFkcyBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1VTRV9OT05GUkVFJywgJ3llcycsICctLWVuYWJsZS1ub25mcmVlJywgJycsIGQpfSBcCisgICAgXAorICAgIC0tY3Jvc3MtcHJlZml4PSR7VEFSR0VUX1BSRUZJWH0gXAorICAgIFwKKyAgICAtLWxkPSIke0NDTER9IiBcCisgICAgLS1jYz0iJHtDQ30iIFwKKyAgICAtLWN4eD0iJHtDWFh9IiBcCisgICAgLS1hcmNoPSR7VEFSR0VUX0FSQ0h9IFwKKyAgICAtLXRhcmdldC1vcz0ibGludXgiIFwKKyAgICAtLWVuYWJsZS1jcm9zcy1jb21waWxlIFwKKyAgICAtLWV4dHJhLWNmbGFncz0iJHtUQVJHRVRfQ0ZMQUdTfSAke0hPU1RfQ0NfQVJDSH0ke1RPT0xDSEFJTl9PUFRJT05TfSIgXAorICAgIC0tZXh0cmEtbGRmbGFncz0iJHtUQVJHRVRfTERGTEFHU30iIFwKKyAgICAtLXN5c3Jvb3Q9IiR7U1RBR0lOR19ESVJfVEFSR0VUfSIgXAorICAgIC0tZW5hYmxlLWhhcmRjb2RlZC10YWJsZXMgXAorICAgICR7RVhUUkFfRkZDT05GfSBcCisgICAgLS1saWJkaXI9JHtsaWJkaXJ9IFwKKyAgICAtLXNobGliZGlyPSR7bGliZGlyfSBcCisgICAgLS1kYXRhZGlyPSR7ZGF0YWRpcn0vZmZtcGVnIFwKKyIKKworZG9fY29uZmlndXJlKCkgeworICAgICR7U30vY29uZmlndXJlICR7RVhUUkFfT0VDT05GfQorfQorCitQQUNLQUdFU19EWU5BTUlDICs9ICJebGliKGF2KGNvZGVjfGRldmljZXxmaWx0ZXJ8Zm9ybWF0fHV0aWx8cmVzYW1wbGUpfHN3c2NhbGV8c3dyZXNhbXBsZXxwb3N0cHJvYykuKiIKKworIyBmZm1wZWcgZGlzYWJsZXMgUElDIG9uIHNvbWUgcGxhdGZvcm1zIChlLmcuIHg4Ni0zMikKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZjb2RlYyA9ICJ0ZXh0cmVsIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdmRldmljZSA9ICJ0ZXh0cmVsIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdmZpbHRlciA9ICJ0ZXh0cmVsIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdmZvcm1hdCA9ICJ0ZXh0cmVsIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdnV0aWwgPSAidGV4dHJlbCIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZyZXNhbXBsZSA9ICJ0ZXh0cmVsIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJzd3NjYWxlID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYnN3cmVzYW1wbGUgPSAidGV4dHJlbCIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGlicG9zdHByb2MgPSAidGV4dHJlbCIKKworcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQoKSB7CisgICAgYXZfbGliZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfScpCisgICAgYXZfcGtnY29uZmlnID0gZC5leHBhbmQoJyR7bGliZGlyfS9wa2djb25maWcnKQorCisgICAgIyBSdW50aW1lIHBhY2thZ2UKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBhdl9saWJkaXIsICdebGliKC4qKVwuc29cLi4qJywKKyAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfcGF0dGVybj0nbGliJXMnLAorICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPSdsaWJhdiAlcyBsaWJyYXJ5JywKKyAgICAgICAgICAgICAgICAgICAgICBleHRyYV9kZXBlbmRzPScnLAorICAgICAgICAgICAgICAgICAgICAgIHByZXBlbmQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICBhbGxvd19saW5rcz1UcnVlKQorCisgICAgIyBEZXZlbG9wbWVudCBwYWNrYWdlcyAoLWRldiwgLXN0YXRpY2RldikKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBhdl9saWJkaXIsICdebGliKC4qKVwuc28kJywKKyAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfcGF0dGVybj0nbGliJXMtZGV2JywKKyAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj0nbGliYXYgJXMgZGV2ZWxvcG1lbnQgcGFja2FnZScsCisgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfZGVwZW5kcz0nJHtQTn0tZGV2JywKKyAgICAgICAgICAgICAgICAgICAgICBwcmVwZW5kPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgYWxsb3dfbGlua3M9VHJ1ZSkKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBhdl9wa2djb25maWcsICdebGliKC4qKVwucGMkJywKKyAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfcGF0dGVybj0nbGliJXMtZGV2JywKKyAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj0nbGliYXYgJXMgZGV2ZWxvcG1lbnQgcGFja2FnZScsCisgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfZGVwZW5kcz0nJHtQTn0tZGV2JywKKyAgICAgICAgICAgICAgICAgICAgICBwcmVwZW5kPVRydWUpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgYXZfbGliZGlyLCAnXmxpYiguKilcLmEkJywKKyAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfcGF0dGVybj0nbGliJXMtc3RhdGljZGV2JywKKyAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj0nbGliYXYgJXMgZGV2ZWxvcG1lbnQgcGFja2FnZSAtIHN0YXRpYyBsaWJyYXJ5JywKKyAgICAgICAgICAgICAgICAgICAgICBleHRyYV9kZXBlbmRzPScke1BOfS1kZXYnLAorICAgICAgICAgICAgICAgICAgICAgIHByZXBlbmQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICBhbGxvd19saW5rcz1UcnVlKQorCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbGF5ZXIvMDAwMS1ndGstcGxheS1wcm92aWRlLXNpbWlsYXItYmVoYXZpb3VyLWZvci1xdWl0LWFuZC1jbG9zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGxheWVyLzAwMDEtZ3RrLXBsYXktcHJvdmlkZS1zaW1pbGFyLWJlaGF2aW91ci1mb3ItcXVpdC1hbmQtY2xvcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lM2YxYzRmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGxheWVyLzAwMDEtZ3RrLXBsYXktcHJvdmlkZS1zaW1pbGFyLWJlaGF2aW91ci1mb3ItcXVpdC1hbmQtY2xvcy5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIDIyMGMyNjU5YTQ1ZGQzNTQyNzBhNDY1YzQ1MTk3OTcwZGFlNWY1NDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiTWF4aW4gQi4gSm9obiIgPG1heGluLmpvaG5AaW50ZWwuY29tPgorRGF0ZTogRnJpLCA1IEF1ZyAyMDE2IDE3OjUyOjE4ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIGd0ay1wbGF5OiBwcm92aWRlIHNpbWlsYXIgYmVoYXZpb3VyIGZvciBxdWl0IGFuZCBjbG9zZQorCitJbiB4ODYgdGFyZ2V0cywgZ3RrLXBsYXkganVzdCBwYXVzZSByYXRoZXIgdGhhbiBxdWl0dGluZyB0aGUgYXBwbGljYXRpb24KK3doZW4gd2UgY2xpY2sgdGhlIGNsb3NlIGJ1dHRvbiAoZGVsZXRlLWV2ZW50KS4gQ2hhbmdlIHRoZSBjYWxsYmFjayBmdW5jdGlvbgordG8gZ2V0IHNpbWlsYXIgYmVoYXZpb3VyIHdoZW4gd2UgY2xpY2sgb24gIlF1aXQiIG1lbnUgb3B0aW9uLgorCitVcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkCisKK1NpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgorLS0tCisgZ3RrL2d0ay1wbGF5LmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9ndGsvZ3RrLXBsYXkuYyBiL2d0ay9ndGstcGxheS5jCitpbmRleCBhNTIwYmVmLi4xNmFmYzZiIDEwMDY0NAorLS0tIGEvZ3RrL2d0ay1wbGF5LmMKKysrKyBiL2d0ay9ndGstcGxheS5jCitAQCAtMTc3LDcgKzE3Nyw3IEBAIGxvYWRfZnJvbV9idWlsZGVyIChjb25zdCBnY2hhciAqIGZpbGVuYW1lLCBnYm9vbGVhbiByZWdpc3Rlcl9zaWdfaGFuZGxlciwKKyBzdGF0aWMgdm9pZAorIGRlbGV0ZV9ldmVudF9jYiAoR3RrV2lkZ2V0ICogd2lkZ2V0LCBHZGtFdmVudCAqIGV2ZW50LCBHdGtQbGF5ICogcGxheSkKKyB7CistICBnc3RfcGxheWVyX3N0b3AgKHBsYXktPnBsYXllcik7CisrICBndGtfd2lkZ2V0X2Rlc3Ryb3kgKEdUS19XSURHRVQgKHBsYXkpKTsKKyB9CisgCisgc3RhdGljIHZvaWQKKy0tIAorMi40LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGxheWVyL2dzdC1wbGF5ZXIuZGVza3RvcCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsYXllci9nc3QtcGxheWVyLmRlc2t0b3AKaW5kZXggOWZkMjA3Yi4uN2RkZDQ1NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGxheWVyL2dzdC1wbGF5ZXIuZGVza3RvcAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbGF5ZXIvZ3N0LXBsYXllci5kZXNrdG9wCkBAIC0xLDcgKzEsNyBAQAogW0Rlc2t0b3AgRW50cnldCiBOYW1lPU1lZGlhIFBsYXllcgogQ29tbWVudD1CYXNpYyBtZWRpYSBwbGF5ZXIKLUljb249YXVkaW8tcGxheWVyCitJY29uPW11bHRpbWVkaWEtcGxheWVyCiBUcnlFeGVjPWd0ay1wbGF5CiBFeGVjPWd0ay1wbGF5CiBTdGFydHVwTm90aWZ5PXRydWUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsYXllci9ndGsyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGxheWVyL2d0azIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjZDE4YmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGxheWVyL2d0azIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi1BcyB0aGUgcmVzdCBvZiBTYXRvIGlzIEdUSysgMiwgcGF0Y2ggZ3RrLXBsYXkgdG8gdXNlIEdUSysgMi4gIFdoZW4gdGhlIHJlc3Qgb2YKLVNhdG8gaGFzIGJlZW4gcG9ydGVkIHRvIEdUSysgMyB0aGlzIHBhdGNoIGNhbiBiZSBkcm9wcGVkLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggYjhhZjEzYi4uOTBhYjc0YyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNjAsNyArNjAsNyBAQCBBQ19TVUJTVChHTElCX1BSRUZJWCkKLSBHU1RfUFJFRklYPSJgJFBLR19DT05GSUcgLS12YXJpYWJsZT1wcmVmaXggZ3N0cmVhbWVyLTEuMGAiCi0gQUNfU1VCU1QoR1NUX1BSRUZJWCkKLSAKLS1QS0dfQ0hFQ0tfTU9EVUxFUyhHVEssIFtndGsrLTMuMF0sIFtoYXZlX2d0az0ieWVzIl0sIFtoYXZlX2d0az0ibm8iXSkKLStQS0dfQ0hFQ0tfTU9EVUxFUyhHVEssIFtndGsrLTIuMF0sIFtoYXZlX2d0az0ieWVzIl0sIFtoYXZlX2d0az0ibm8iXSkKLSBBTV9DT05ESVRJT05BTChIQVZFX0dUSywgdGVzdCAieCRoYXZlX2d0ayIgIT0gInhubyIpCi0gCi0gR09CSkVDVF9JTlRST1NQRUNUSU9OX0NIRUNLKFsxLjMxLjFdKQotZGlmZiAtLWdpdCBhL2d0ay9ndGstcGxheS5jIGIvZ3RrL2d0ay1wbGF5LmMKLWluZGV4IGYwMTUwNzcuLjk1NGQ2ZmIgMTAwNjQ0Ci0tLS0gYS9ndGsvZ3RrLXBsYXkuYwotKysrIGIvZ3RrL2d0ay1wbGF5LmMKLUBAIC0zNCw2ICszNCw0NiBAQCB0eXBlZGVmIHN0cnVjdAotICAgZ3Vsb25nIHNlZWtiYXJfdmFsdWVfY2hhbmdlZF9zaWduYWxfaWQ7Ci0gfSBHdGtQbGF5OwotIAotKy8qIENvbXBhdCBzdHVicyAqLwotK0d0a1dpZGdldCAqCi0rZ3RrX2JveF9uZXcgKEd0a09yaWVudGF0aW9uIG9yaWVudGF0aW9uLAotKyAgICAgICAgICAgICBnaW50IHNwYWNpbmcpCi0rewotKyAgc3dpdGNoIChvcmllbnRhdGlvbikgewotKyAgY2FzZSBHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTDoKLSsgICAgcmV0dXJuIGd0a19oYm94X25ldyAoRkFMU0UsIHNwYWNpbmcpOwotKyAgY2FzZSBHVEtfT1JJRU5UQVRJT05fVkVSVElDQUw6Ci0rICAgIHJldHVybiBndGtfdmJveF9uZXcgKEZBTFNFLCBzcGFjaW5nKTsKLSsgIH0KLSt9Ci0rCi0rR3RrV2lkZ2V0KgotK2d0a19idXR0b25fbmV3X2Zyb21faWNvbl9uYW1lIChjb25zdCBnY2hhciAqaWNvbl9uYW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHdGtJY29uU2l6ZSAgc2l6ZSkKLSt7Ci0rICBHdGtXaWRnZXQgKmJ1dHRvbjsKLSsgIEd0a1dpZGdldCAqaW1hZ2U7Ci0rCi0rICBpbWFnZSA9IGd0a19pbWFnZV9uZXdfZnJvbV9pY29uX25hbWUgKGljb25fbmFtZSwgc2l6ZSk7Ci0rICBidXR0b24gPSAgZ19vYmplY3RfbmV3IChHVEtfVFlQRV9CVVRUT04sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICJpbWFnZSIsIGltYWdlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSsgIHJldHVybiBidXR0b247Ci0rfQotKwotK0d0a1dpZGdldCAqCi0rZ3RrX3NjYWxlX25ld193aXRoX3JhbmdlIChHdGtPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGdkb3VibGUgbWluLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RvdWJsZSBtYXgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBnZG91YmxlIHN0ZXApCi0rewotKyAgc3dpdGNoIChvcmllbnRhdGlvbikgewotKyAgY2FzZSBHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTDoKLSsgICAgcmV0dXJuIGd0a19oc2NhbGVfbmV3X3dpdGhfcmFuZ2UgKG1pbiwgbWF4LCBzdGVwKTsKLSsgIGNhc2UgR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMOgotKyAgICByZXR1cm4gZ3RrX3ZzY2FsZV9uZXdfd2l0aF9yYW5nZSAobWluLCBtYXgsIHN0ZXApOwotKyAgfQotK30KLSAKLSBzdGF0aWMgdm9pZAotIHNldF90aXRsZSAoR3RrUGxheSAqIHBsYXksIGNvbnN0IGdjaGFyICogdGl0bGUpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbGF5ZXJfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGxheWVyX2dpdC5iYgppbmRleCA4MTI5MTY5Li4yYTRjOWRjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbGF5ZXJfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsYXllcl9naXQuYmIKQEAgLTEsMzkgKzEsMzcgQEAKIFNVTU1BUlkgPSAiR1N0cmVhbWVyIHBsYXliYWNrIGhlbHBlciBsaWJyYXJ5IGFuZCBleGFtcGxlcyIKIExJQ0VOU0UgPSAiTEdQTC0yLjArIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbGliL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0xOTttZDU9MDNhZWNhOWQ4Mjk1ZjgxMTgxNzkwOTA3NWExNWZmNjUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9ndGsvZ3RrLXBsYXkuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIwO21kNT1mOGM3MmRhZTNkMzY4MjNlYzcxNmE5ZWJjYWU1OTNiOSIKIAotREVQRU5EUyA9ICJnbGliLTIuMCBnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBndGsrIgorREVQRU5EUyA9ICJnbGliLTIuMCBnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQgZ3RrKzMiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9zZHJvZWdlL2dzdC1wbGF5ZXIuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovL2ZpbGVjaG9vc2VyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2d0azIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vRml4LXBhdXNlLXBsYXkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQWRkLWVycm9yLXNpZ25hbC1lbWlzc2lvbi1mb3ItbWlzc2luZy1wbHVnaW5zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpbGVjaG9vc2VyLnBhdGNoO2FwcGx5PTAgXAorICAgICAgICAgICBmaWxlOi8vRml4LXBhdXNlLXBsYXkucGF0Y2g7YXBwbHk9MCBcCisgICAgICAgICAgIGZpbGU6Ly9BZGQtZXJyb3Itc2lnbmFsLWVtaXNzaW9uLWZvci1taXNzaW5nLXBsdWdpbnMucGF0Y2g7YXBwbHk9MCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWd0ay1wbGF5LXByb3ZpZGUtc2ltaWxhci1iZWhhdmlvdXItZm9yLXF1aXQtYW5kLWNsb3MucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vZ3N0LXBsYXllci5kZXNrdG9wIgogCi1TUkNSRVYgPSAiNTM4NmM1Yjk4NGQ0MGVmNTQzNDY3M2VkNjIyMDRlNjlhYWY1MjY0NSIKK1NSQ1JFViA9ICJlYTkwZTYzYzEwNjQ1MDNmOWJhNWQ1OWFhNGNhNjA0ZjEzY2E1ZGVmIgorUFYgPSAiMC4wLjErZ2l0JHtTUkNQVn0iCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIGd0ay1kb2MgbGliX3BhY2thZ2UgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjayBnb2JqZWN0LWludHJvc3BlY3Rpb24KK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKIAotQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzJESVNUUk9GRUFUVVJFU30iCitBTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIiR7R1RLM0RJU1RST0ZFQVRVUkVTfSIKIAogZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CiAJdG91Y2ggJHtTfS9DaGFuZ2VMb2cKIH0KIAotRVhUUkFfT0VDT05GICs9ICJhY19jdl9wYXRoX1ZBTEdSSU5EPW5vIGFjX2N2X3BhdGhfR0RCPW5vIgotCiBkb19pbnN0YWxsX2FwcGVuZCgpIHsKIAlpbnN0YWxsIC1tIDA2NDQgLUQgJHtXT1JLRElSfS9nc3QtcGxheWVyLmRlc2t0b3AgJHtEfSR7ZGF0YWRpcn0vYXBwbGljYXRpb25zL2dzdC1wbGF5ZXIuZGVza3RvcAogfQogCi1GSUxFU18ke1BOfS1iaW4gKz0gIiR7ZGF0YWRpcn0vYXBwbGljYXRpb25zLyouZGVza3RvcCIKLQotUkRFUEVORFNfJHtQTn0tYmluID0gImdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UtcGxheWJhY2siCi1SUkVDT01NRU5EU18ke1BOfS1iaW4gPSAiZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS1tZXRhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLW1ldGEgXAotICAgICAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC1tZXRhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygiTElDRU5TRV9GTEFHU19XSElURUxJU1QiLCAiY29tbWVyY2lhbCIsICJnc3RyZWFtZXIxLjAtbGliYXYiLCAiIiwgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygiTElDRU5TRV9GTEFHU19XSElURUxJU1QiLCAiY29tbWVyY2lhbCIsICJnc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5LW1ldGEiLCAiIiwgZCl9IgorUkRFUEVORFNfJHtQTn0gPSAiZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS1wbGF5YmFjayIKK1JSRUNPTU1FTkRTXyR7UE59ID0gImdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UtbWV0YSBcCisgICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLW1ldGEgXAorICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLW1ldGEgXAorICAgICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJMSUNFTlNFX0ZMQUdTX1dISVRFTElTVCIsICJjb21tZXJjaWFsIiwgImdzdHJlYW1lcjEuMC1saWJhdiIsICIiLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkxJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUIiwgImNvbW1lcmNpYWwiLCAiZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseS1tZXRhIiwgIiIsIGQpfSIKK1JQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tYmluIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYuaW5jCmluZGV4IDM2MzEwMWUuLmVhMDExNjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdi5pbmMKQEAgLTcsNyArNyw3IEBACiAKIERFUEVORFMgPSAiZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgemxpYiBiemlwMiB4eiIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgoraW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBndGstZG9jCiAKICMgQ0FVVElPTjogVXNpbmcgdGhlIHN5c3RlbSBsaWJhdiBpcyBub3QgcmVjb21tZW5kZWQuIFNpbmNlIHRoZSBsaWJhdiBBUEkgaXMgY2hhbmdpbmcgYWxsIHRoZSB0aW1lLAogIyBjb21waWxhdGlvbiBlcnJvcnMgKGFuZCBvdGhlciwgbW9yZSBzdWJ0bGUgYnVncykgY2FuIGhhcHBlbi4gSXQgaXMgdXN1YWxseSBiZXR0ZXIgdG8gcmVseSBvbiB0aGUKQEAgLTE4LDYgKzE4LDcgQEAKIFBBQ0tBR0VDT05GSUdbbGliYXZdID0gIi0td2l0aC1zeXN0ZW0tbGliYXYsLGxpYmF2IgogUEFDS0FHRUNPTkZJR1tvcmNdID0gIi0tZW5hYmxlLW9yYywtLWRpc2FibGUtb3JjLG9yYyIKIFBBQ0tBR0VDT05GSUdbeWFzbV0gPSAiLS1lbmFibGUteWFzbSwtLWRpc2FibGUteWFzbSx5YXNtLW5hdGl2ZSIKK1BBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi0tZW5hYmxlLXZhbGdyaW5kLC0tZGlzYWJsZS12YWxncmluZCx2YWxncmluZCIKIAogR1NUUkVBTUVSXzFfMF9ERUJVRyA/PSAiLS1kaXNhYmxlLWRlYnVnIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdl8xLjYuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2XzEuNi4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODcyMzBhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2XzEuNi4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotaW5jbHVkZSBnc3RyZWFtZXIxLjAtbGliYXYuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9leHQvbGliYXYvZ3N0YXYuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTE4O21kNT1hNzUyYzM1MjY3ZDgyNzZmZDljYTNkYjY5OTRmY2E5YyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5HUEx2MjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuR1BMdjM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC1saWJzL2V4dC9saWJhdi9DT1BZSU5HLkxHUEx2Mi4xO21kNT1iZDdhNDQzMzIwYWY4YzgxMmU0YzE4ZDFiNzlkZjAwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5MR1BMdjM7bWQ1PWU2YTYwMGZkNWUxZDljYmRlMmQ5ODM2ODAyMzNhZDAyIgotCi1TUkNfVVJJID0gIiBcCi0gICAgaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1saWJhdi9nc3QtbGliYXYtJHtQVn0udGFyLnh6IFwKLSAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLXlhc20tZm9yLWxpYmF2LXdoZW4tZGlzYWJsZS15YXNtLnBhdGNoIFwKLSAgICBmaWxlOi8vd29ya2Fyb3VuZC10by1idWlsZC1nc3QtbGliYXYtZm9yLWk1ODYtd2l0aC1nY2MucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiY2ZlOWEwNjkxM2Q0ZmQ0MDY3ZTllNDdmNmUwNWZhYzIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODU3YjljMDYwYTAzMzdkZTM4YzZkMjYyMzhjNDczNTI0MzNjMDJlYWJmMjZjMmY4NjBjODU0ZGJjMzViZDRhYiIKLQotUyA9ICIke1dPUktESVJ9L2dzdC1saWJhdi0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2XzEuOC4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXZfMS44LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Q4NjIyMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2XzEuOC4zLmJiCkBAIC0wLDAgKzEsMjAgQEAKK2luY2x1ZGUgZ3N0cmVhbWVyMS4wLWxpYmF2LmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9Njc2MmVkNDQyYjM4MjIzODdhNTFjOTJkOTI4ZWFkMGQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZXh0L2xpYmF2L2dzdGF2Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0xODttZDU9YTc1MmMzNTI2N2Q4Mjc2ZmQ5Y2EzZGI2OTk0ZmNhOWMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuR1BMdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC1saWJzL2V4dC9saWJhdi9DT1BZSU5HLkdQTHYzO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5MR1BMdjIuMTttZDU9YmQ3YTQ0MzMyMGFmOGM4MTJlNGMxOGQxYjc5ZGYwMDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuTEdQTHYzO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiIKKworU1JDX1VSSSA9ICIgXAorICAgIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtbGliYXYvZ3N0LWxpYmF2LSR7UFZ9LnRhci54eiBcCisgICAgZmlsZTovLzAwMDEtRGlzYWJsZS15YXNtLWZvci1saWJhdi13aGVuLWRpc2FibGUteWFzbS5wYXRjaCBcCisgICAgZmlsZTovL3dvcmthcm91bmQtdG8tYnVpbGQtZ3N0LWxpYmF2LWZvci1pNTg2LXdpdGgtZ2NjLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImI1MWE3MzYxNDdiYWNiNDBmODU4MjdhNGUwYWUwZDJjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkwMDZhMDU5OTAwODlmNzE1NWVlMGU4NDgwNDJmNmJiMjRlNTJhYjFkMGE1OWZmOGQxYjVkN2UzMzAwMWE0OTUiCisKK1MgPSAiJHtXT1JLRElSfS9nc3QtbGliYXYtJHtQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdl9naXQuYmIKaW5kZXggZWJjOGE1ZS4uZjQ2MDRhMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXZfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2X2dpdC5iYgpAQCAtMTUsMjAgKzE1LDIwIEBACiAjIGFuZCByZW1vdmUgdGhlIGZmbXBlZyBzb3VyY2VzIGZyb20gU1JDX1VSSSBiZWxvdy4gSG93ZXZlciwgZmlyc3Qgbm90ZSB0aGUKICMgd2FybmluZ3MgaW4gZ3N0cmVhbWVyMS4wLWxpYmF2LmluYwogU1JDX1VSSSA9ICIgXAotICAgIGdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL2dzdHJlYW1lci9nc3QtbGliYXY7bmFtZT1iYXNlIFwKKyAgICBnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0LWxpYmF2O2JyYW5jaD0xLjg7bmFtZT1iYXNlIFwKICAgICBnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvY29tbW9uO2Rlc3RzdWZmaXg9Z2l0L2NvbW1vbjtuYW1lPWNvbW1vbiBcCiAgICAgZ2l0Oi8vc291cmNlLmZmbXBlZy5vcmcvZmZtcGVnO2Rlc3RzdWZmaXg9Z2l0L2dzdC1saWJzL2V4dC9saWJhdjtuYW1lPWZmbXBlZzticmFuY2g9cmVsZWFzZS8zLjAgXAogICAgIGZpbGU6Ly8wMDAxLURpc2FibGUteWFzbS1mb3ItbGliYXYtd2hlbi1kaXNhYmxlLXlhc20ucGF0Y2ggXAogICAgIGZpbGU6Ly93b3JrYXJvdW5kLXRvLWJ1aWxkLWdzdC1saWJhdi1mb3ItaTU4Ni13aXRoLWdjYy5wYXRjaCBcCiAiCiAKLVBWID0gIjEuNy4yK2dpdCR7U1JDUFZ9IgorUFYgPSAiMS44LjIrZ2l0JHtTUkNQVn0iCiAKIFVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPihcZCsoXC5cZCspKykpIgogCi1TUkNSRVZfYmFzZSA9ICI2YzQ4NzhiNmFiYzkxNmI3ZjZmMjViODkyNmM0ODU5MTE5YWNmMWVjIgotU1JDUkVWX2NvbW1vbiA9ICJiNjRmMDNmNjA5MDI0NTYyNDYwOGJlYjVkMmZmZjMzNWUyM2EwMWMwIgotU1JDUkVWX2ZmbXBlZyA9ICJjNDA5ODNhNmY2MzFkMjJmZWRlNzEzZDUzNWJiOWMzMWQ1Yzk3NDBjIgorU1JDUkVWX2Jhc2UgPSAiZjI4NWNmMGZkNzk5Y2MzYjQ2YjVjZWNhYWE0MzlkNWEyYTM4YTliNyIKK1NSQ1JFVl9jb21tb24gPSAiZjM2M2IzMjA1NjU4YTM4ZTg0ZmE3N2YxOWRlZTIxOGNkNDQ0NTI3NSIKK1NSQ1JFVl9mZm1wZWcgPSAiYzY2ZjRkMWFlNjRkZmZhZjQ1NmQwNWNiZGFkZTAyMDU0NDQ2ZjQ5OSIKIFNSQ1JFVl9GT1JNQVQgPSAiYmFzZSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXguaW5jCmluZGV4IDBmZmY2MTIuLjA3ZTViN2QgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LmluYwpAQCAtNywxMSArNywxMCBAQAogCiBERVBFTkRTID0gImdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZCIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IGd0ay1kb2MgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCiAKIGFjcGF0aHMgPSAiLUkgJHtTfS9jb21tb24vbTQgLUkgJHtTfS9tNCIKIAotUFIgPSAicjEiCiAKIEdTVFJFQU1FUl8xXzBfT01YX1RBUkdFVCA/PSAiYmVsbGFnaW8iCiBHU1RSRUFNRVJfMV8wX09NWF9DT1JFX05BTUUgPz0gIiR7bGliZGlyfS9saWJvbXhpbC1iZWxsYWdpby5zby4wIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQuaW5jCmluZGV4IDllMmI5NGUuLjBmZTU1NjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC5pbmMKQEAgLTIxLDcgKzIxLDcgQEAKICAgICAke1BBQ0tBR0VDT05GSUdfR0x9IFwKICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2JsdWV0b290aCcsICdibHVleicsICcnLCBkKX0gXAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnZGlyZWN0ZmInLCAnZGlyZWN0ZmInLCAnJywgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCAnd2F5bGFuZCcsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICd3YXlsYW5kIGVnbCcsICcnLCBkKX0gXAogICAgIGJ6MiBjdXJsIGRhc2ggZHRscyBobHMgbmVvbiByc3ZnIHNiYyBzbW9vdGhzdHJlYW1pbmcgc25kZmlsZSB1dmNoMjY0IHdlYnAgXAogIgogCkBAIC0zMiwxMyArMzIsMTYgQEAKIFBBQ0tBR0VDT05GSUdbZGFzaF0gICAgICAgICAgICA9ICItLWVuYWJsZS1kYXNoLC0tZGlzYWJsZS1kYXNoLGxpYnhtbDIiCiBQQUNLQUdFQ09ORklHW2RpcmVjdGZiXSAgICAgICAgPSAiLS1lbmFibGUtZGlyZWN0ZmIsLS1kaXNhYmxlLWRpcmVjdGZiLGRpcmVjdGZiIgogUEFDS0FHRUNPTkZJR1tkdGxzXSAgICAgICAgICAgID0gIi0tZW5hYmxlLWR0bHMsLS1kaXNhYmxlLWR0bHMsb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbZWdsXSAgICAgICAgICAgICA9ICItLWVuYWJsZS1lZ2wsLS1kaXNhYmxlLWVnbCx2aXJ0dWFsL2VnbCIKIFBBQ0tBR0VDT05GSUdbZmFhY10gICAgICAgICAgICA9ICItLWVuYWJsZS1mYWFjLC0tZGlzYWJsZS1mYWFjLGZhYWMiCiBQQUNLQUdFQ09ORklHW2ZhYWRdICAgICAgICAgICAgPSAiLS1lbmFibGUtZmFhZCwtLWRpc2FibGUtZmFhZCxmYWFkMiIKIFBBQ0tBR0VDT05GSUdbZmxpdGVdICAgICAgICAgICA9ICItLWVuYWJsZS1mbGl0ZSwtLWRpc2FibGUtZmxpdGUsZmxpdGUtYWxzYSIKIFBBQ0tBR0VDT05GSUdbZmx1aWRzeW50aF0gICAgICA9ICItLWVuYWJsZS1mbHVpZHN5bnRoLC0tZGlzYWJsZS1mbHVpZHN5bnRoLGZsdWlkc3ludGgiCiBQQUNLQUdFQ09ORklHW2dsZXMyXSAgICAgICAgICAgPSAiLS1lbmFibGUtZ2xlczIsLS1kaXNhYmxlLWdsZXMyLHZpcnR1YWwvbGliZ2xlczIiCiBQQUNLQUdFQ09ORklHW2d0a10gICAgICAgICAgICAgPSAiLS1lbmFibGUtZ3RrMywtLWRpc2FibGUtZ3RrMyxndGsrMyIKLVBBQ0tBR0VDT05GSUdbaGxzXSAgICAgICAgICAgICA9ICItLWVuYWJsZS1obHMsLS1kaXNhYmxlLWhscyxuZXR0bGUiCisjIGVuc3VyZSBPcGVuU1NMIGlzIHVzZWQgZm9yIEhMUyBBRVMgZGVzY3JpcHRpb24gaW5zdGVhZCBvZiBuZXR0bGUKKyMgKE9wZW5TU0wgaXMgYSBzaGFyZWQgZGVwZW5kZW5jeSB3aXRoIGR0bHMpCitQQUNLQUdFQ09ORklHW2hsc10gICAgICAgICAgICAgPSAiLS1lbmFibGUtaGxzIC0td2l0aC1obHMtY3J5cHRvPW9wZW5zc2wsLS1kaXNhYmxlLWhscyxvcGVuc3NsIgogUEFDS0FHRUNPTkZJR1tsaWJtbXNdICAgICAgICAgID0gIi0tZW5hYmxlLWxpYm1tcywtLWRpc2FibGUtbGlibW1zLGxpYm1tcyIKIFBBQ0tBR0VDT05GSUdbbGlic3NoMl0gICAgICAgICA9ICItLWVuYWJsZS1saWJzc2gyLC0tZGlzYWJsZS1saWJzc2gyLGxpYnNzaDIiCiBQQUNLQUdFQ09ORklHW21vZHBsdWddICAgICAgICAgPSAiLS1lbmFibGUtbW9kcGx1ZywtLWRpc2FibGUtbW9kcGx1ZyxsaWJtb2RwbHVnIgpAQCAtNDYsNyArNDksOSBAQAogUEFDS0FHRUNPTkZJR1tvcGVuYWxdICAgICAgICAgID0gIi0tZW5hYmxlLW9wZW5hbCwtLWRpc2FibGUtb3BlbmFsLG9wZW5hbC1zb2Z0IgogUEFDS0FHRUNPTkZJR1tvcGVuY3ZdICAgICAgICAgID0gIi0tZW5hYmxlLW9wZW5jdiwtLWRpc2FibGUtb3BlbmN2LG9wZW5jdiIKIFBBQ0tBR0VDT05GSUdbb3BlbmdsXSAgICAgICAgICA9ICItLWVuYWJsZS1vcGVuZ2wsLS1kaXNhYmxlLW9wZW5nbCx2aXJ0dWFsL2xpYmdsIGxpYmdsdSIKLVBBQ0tBR0VDT05GSUdbb3B1c10gICAgICAgICAgICA9ICItLWVuYWJsZS1vcHVzLC0tZGlzYWJsZS1vcHVzLGxpYm9wdXMiCisjIHRoZSBvcHVzIGVuY29kZXIvZGVjb2RlciBlbGVtZW50cyBhcmUgbm93IGluIHRoZSAtYmFzZSBwYWNrYWdlLAorIyBidXQgdGhlIG9wdXMgcGFyc2VyIHJlbWFpbnMgaW4gLWJhZAorUEFDS0FHRUNPTkZJR1tvcHVzcGFyc2VdICAgICAgID0gIi0tZW5hYmxlLW9wdXMsLS1kaXNhYmxlLW9wdXMsbGlib3B1cyIKIFBBQ0tBR0VDT05GSUdbcmVzaW5kdmRdICAgICAgICA9ICItLWVuYWJsZS1yZXNpbmR2ZCwtLWRpc2FibGUtcmVzaW5kdmQsbGliZHZkcmVhZCBsaWJkdmRuYXYiCiBQQUNLQUdFQ09ORklHW3JzdmddICAgICAgICAgICAgPSAiLS1lbmFibGUtcnN2ZywtLWRpc2FibGUtcnN2ZyxsaWJyc3ZnIgogUEFDS0FHRUNPTkZJR1tydG1wXSAgICAgICAgICAgID0gIi0tZW5hYmxlLXJ0bXAsLS1kaXNhYmxlLXJ0bXAscnRtcGR1bXAiCkBAIC01OCwxOSArNjMsMTkgQEAKIFBBQ0tBR0VDT05GSUdbdXZjaDI2NF0gICAgICAgICA9ICItLWVuYWJsZS11dmNoMjY0LC0tZGlzYWJsZS11dmNoMjY0LGxpYnVzYjEgbGliZ3VkZXYiCiBQQUNLQUdFQ09ORklHW3ZvYWFjZW5jXSAgICAgICAgPSAiLS1lbmFibGUtdm9hYWNlbmMsLS1kaXNhYmxlLXZvYWFjZW5jLHZvLWFhY2VuYyIKIFBBQ0tBR0VDT05GSUdbdm9hbXJ3YmVuY10gICAgICA9ICItLWVuYWJsZS12b2FtcndiZW5jLC0tZGlzYWJsZS12b2FtcndiZW5jLHZvLWFtcndiZW5jIgotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSAgICAgICAgID0gIi0tZW5hYmxlLXdheWxhbmQgLS1lbmFibGUtZWdsLC0tZGlzYWJsZS13YXlsYW5kIC0tZGlzYWJsZS1lZ2wsd2F5bGFuZCB2aXJ0dWFsL2VnbCIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gICAgICAgICA9ICItLWVuYWJsZS13YXlsYW5kLC0tZGlzYWJsZS13YXlsYW5kLHdheWxhbmQtbmF0aXZlIHdheWxhbmQiCiBQQUNLQUdFQ09ORklHW3dlYnBdICAgICAgICAgICAgPSAiLS1lbmFibGUtd2VicCwtLWRpc2FibGUtd2VicCxsaWJ3ZWJwIgogCiAjIHRoZXNlIHBsdWdpbnMgaGF2ZSBub3QgYmVlbiBwb3J0ZWQgdG8gMS4wICh5ZXQpOgotIyAgIGFwZXhzaW5rIGRjMTM5NCBsdjIgbGluc3lzIG11c2VwYWNrIG5hcyB0aW1pZGl0eSB0ZWxldGV4dGRlYyBzZGwgeHZpZCB3aW5pbmV0Ci0jICAgYWNtIGdzZXR0aW5ncyBzbmRpbyBjZHhhcGFyc2UgZGNjcCBmYWNlb3ZlcmxheSBoZHZwYXJzZSB0dGEgbXZlIG51dmRlbXV4Ci0jICAgcGF0Y2hkZXRlY3QgcmVhbCBzZGkgdmlkZW9tZWFzdXJlIGdzZXR0aW5ncworIyAgIGFwZXhzaW5rIGRjMTM5NCBsdjIgbGluc3lzIG11c2VwYWNrIG5hcyB0aW1pZGl0eSBzZGwgeHZpZCB3aW5pbmV0CisjICAgc25kaW8gY2R4YXBhcnNlIGRjY3AgZmFjZW92ZXJsYXkgaGR2cGFyc2UgdHRhIG12ZSBudXZkZW11eAorIyAgIHBhdGNoZGV0ZWN0IHNkaSB2aWRlb21lYXN1cmUKIAogIyB0aGVzZSBwbHVnaW5zIGhhdmUgbm8gY29ycmVzcG9uZGluZyBsaWJyYXJ5IGluIE9FLWNvcmUgb3IgbWV0YS1vcGVuZW1iZWRkZWQ6Ci0jICAgb3Blbm5pMiB3aW5rcyBkaXJlY3QzZCBkaXJlY3Rzb3VuZCB3aW5zY3JlZW5jYXAKKyMgICBvcGVubmkyIHdpbmtzIGRpcmVjdDNkIGRpcmVjdHNvdW5kIHdpbnNjcmVlbmNhcCBhY20KICMgICBhcHBsZV9tZWRpYSBhbmRyb2lkX21lZGlhIGF2YyBiczJiIGNocm9tYXByaW50IGRhYWxhIGR0cyBnbWUgZ3NtIGthdGUgbGFkc3BhCi0jICAgbGliZGUyNjUgbWltaWMgbXBlZzJlbmMgbXBsZXggb2ZhIG9wZW5oMjY0IG9wZW5zbGVzIHB2ciBzb3VuZHRvdWNoIHNwYW5kc3AKLSMgICBzcGMgdmRwYXUgd2FzYXBpIHgyNjUgemJhcgorIyAgIGxpYmRlMjY1IG1pbWljIG1wZWcyZW5jIG1wbGV4IG52ZW5jIG9mYSBvcGVuaDI2NCBvcGVuc2xlcyBwdnIgc291bmR0b3VjaCBzcGFuZHNwCisjICAgc3BjIHRlbGV0ZXh0ZGVjIHRpbnlhbHNhIHZkcGF1IHZ1bGthbiB3YXNhcGkgeDI2NSB6YmFyCiAKICMgcXQ1IHN1cHBvcnQgaXMgZGlzYWJsZWQsIGJlY2F1c2UgaXQgaXMgbm90IHByZXNlbnQgaW4gT0UgY29yZSwgYW5kIHJlcXVpcmVzIG1vcmUgd29yayB0aGFuCiAjIGp1c3QgYWRkaW5nIGEgcGFja2FnZWNvbmZpZyAoaXQgcmVxdWlyZXMgYWNjZXNzIHRvIG1vYywgdWljLCByY2MsIGFuZCBxbWFrZSBwYXRocykuCkBAIC04MSw2ICs4Niw3IEBACiAgICAgLS1lbmFibGUtZGVja2xpbmsgXAogICAgIC0tZW5hYmxlLWR2YiBcCiAgICAgLS1lbmFibGUtZmJkZXYgXAorICAgIC0tZW5hYmxlLW5ldHNpbSBcCiAgICAgLS1lbmFibGUtc2htIFwKICAgICAtLWVuYWJsZS12Y2QgXAogICAgIC0tZGlzYWJsZS1hY20gXApAQCAtMTA5LDYgKzExNSw3IEBACiAgICAgLS1kaXNhYmxlLW1wbGV4IFwKICAgICAtLWRpc2FibGUtbXVzZXBhY2sgXAogICAgIC0tZGlzYWJsZS1uYXMgXAorICAgIC0tZGlzYWJsZS1udmVuYyBcCiAgICAgLS1kaXNhYmxlLW9mYSBcCiAgICAgLS1kaXNhYmxlLW9wZW5leHIgXAogICAgIC0tZGlzYWJsZS1vcGVuaDI2NCBcCkBAIC0xMjUsNyArMTMyLDkgQEAKICAgICAtLWRpc2FibGUtc3BjIFwKICAgICAtLWRpc2FibGUtdGVsZXRleHRkZWMgXAogICAgIC0tZGlzYWJsZS10aW1pZGl0eSBcCisgICAgLS1kaXNhYmxlLXRpbnlhbHNhIFwKICAgICAtLWRpc2FibGUtdmRwYXUgXAorICAgIC0tZGlzYWJsZS12dWxrYW4gXAogICAgIC0tZGlzYWJsZS13YXNhcGkgXAogICAgIC0tZGlzYWJsZS13aWxkbWlkaSBcCiAgICAgLS1kaXNhYmxlLXdpbmluZXQgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1NYWtlZmlsZS5hbS1kb24tdC1oYXJkY29kZS1saWJ0b29sLW5hbWUtd2hlbi1ydW5uaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1NYWtlZmlsZS5hbS1kb24tdC1oYXJkY29kZS1saWJ0b29sLW5hbWUtd2hlbi1ydW5uaW5nLnBhdGNoCmluZGV4IDE1NGQzNDAuLjMzZWZjNTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDEtTWFrZWZpbGUuYW0tZG9uLXQtaGFyZGNvZGUtbGlidG9vbC1uYW1lLXdoZW4tcnVubmluZy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLU1ha2VmaWxlLmFtLWRvbi10LWhhcmRjb2RlLWxpYnRvb2wtbmFtZS13aGVuLXJ1bm5pbmcucGF0Y2gKQEAgLTE3LDcgKzE3LDcgQEAKIGluZGV4IGY5NjgzNTcuLjdjYzJjN2EgMTAwNjQ0CiAtLS0gYS9nc3QtbGlicy9nc3QvZ2wvTWFrZWZpbGUuYW0KICsrKyBiL2dzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5hbQotQEAgLTE0OSw3ICsxNDksNyBAQCBHc3RHTC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RnbC1AR1NUX0FQSV9WRVJTSU9OQAorQEAgLTE2Nyw3ICsxNjcsNyBAQCBHc3RHTC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RnbC1AR1NUX0FQSV9WRVJTSU9OQAogIAkJLS1saWJyYXJ5PWxpYmdzdGdsLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKICAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1pbmNsdWRlPUdzdEJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXApAQCAtMzAsNyArMzAsNyBAQAogaW5kZXggMDllYjk3Yy4uYjc0Njg4NSAxMDA2NDQKIC0tLSBhL2dzdC1saWJzL2dzdC9pbnNlcnRiaW4vTWFrZWZpbGUuYW0KICsrKyBiL2dzdC1saWJzL2dzdC9pbnNlcnRiaW4vTWFrZWZpbGUuYW0KLUBAIC00Myw3ICs0Myw3IEBAIEdzdEluc2VydEJpbi1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RpbnNlcnRiaW4tQEdTCitAQCAtNDQsNyArNDQsNyBAQCBHc3RJbnNlcnRCaW4tQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0aW5zZXJ0YmluLUBHUwogIAkJLS1saWJyYXJ5PWxpYmdzdGluc2VydGJpbi1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCiAgCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0taW5jbHVkZT1Hc3RCYXNlLUBHU1RfQVBJX1ZFUlNJT05AIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDEtZ2xpbWFnZXNpbmstRG93bnJhbmstdG8tbWFyZ2luYWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLWdsaW1hZ2VzaW5rLURvd25yYW5rLXRvLW1hcmdpbmFsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDg1ZTk1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDEtZ2xpbWFnZXNpbmstRG93bnJhbmstdG8tbWFyZ2luYWwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1Gcm9tIGM2YjM3YTgwODA2ZjkxMjhkZTQ3ZjFjY2MzZjIzNTRmOGQ0MzZiYjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMjQgU2VwIDIwMTUgMTk6NDc6MzIgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gZ2xpbWFnZXNpbms6IERvd25yYW5rIHRvIG1hcmdpbmFsCi0KLU9uIGRlc2t0b3AsIHdoZXJlIHRoZXJlIGlzIGdvb2QgT3BlbkdMLCB4dmltYWdlc2luayB3aWxsIGNvbWUgdXAgZmlyc3QsCi1vbiBvdGhlciBwbGF0Zm9ybXMsIE9wZW5HTCBjYW4ndCBiZSB0cnVzdGVkIGJlY2F1c2UgaXQncyBlaXRoZXIgc29mdHdhcmUgKGxpa2UKLWluIGEgVk0pIG9yIGJyb2tlbiAobGlrZSBvbiBlbWJlZGRlZCkuLCBzbyBsZXQgeGltYWdlc2luayBjb21lIGFib3ZlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1MTY4NF0KLQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSBleHQvZ2wvZ3N0b3BlbmdsLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9leHQvZ2wvZ3N0b3BlbmdsLmMgYi9leHQvZ2wvZ3N0b3BlbmdsLmMKLWluZGV4IGE0YjI1NDAuLjBjY2FhY2QgMTAwNjQ0Ci0tLS0gYS9leHQvZ2wvZ3N0b3BlbmdsLmMKLSsrKyBiL2V4dC9nbC9nc3RvcGVuZ2wuYwotQEAgLTEwMSw3ICsxMDEsNyBAQCBwbHVnaW5faW5pdCAoR3N0UGx1Z2luICogcGx1Z2luKQotICNlbmRpZgotIAotICAgaWYgKCFnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCAiZ2xpbWFnZXNpbmsiLAotLSAgICAgICAgICBHU1RfUkFOS19TRUNPTkRBUlksIGdzdF9nbF9pbWFnZV9zaW5rX2Jpbl9nZXRfdHlwZSAoKSkpIHsKLSsgICAgICAgICAgR1NUX1JBTktfTUFSR0lOQUwsIGdzdF9nbF9pbWFnZV9zaW5rX2Jpbl9nZXRfdHlwZSAoKSkpIHsKLSAgICAgcmV0dXJuIEZBTFNFOwotICAgfQotIAotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAyLWdscGx1Z2luLWVuYWJsZS1nbGRlaW50ZXJsYWNlLW9uLU9wZW5HTC1FUy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDItZ2xwbHVnaW4tZW5hYmxlLWdsZGVpbnRlcmxhY2Utb24tT3BlbkdMLUVTLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjUxZjRlYjQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAyLWdscGx1Z2luLWVuYWJsZS1nbGRlaW50ZXJsYWNlLW9uLU9wZW5HTC1FUy5wYXRjaApAQCAtMCwwICsxLDYzNCBAQAorRnJvbSA4YTBlOTdmN2U2NzIzMDFjYzc2ZTM5NDg1NWU4YzdhMzQ0OGIwMjQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSGFpaHVhIEh1IDxqYXJlZC5odUBueHAuY29tPgorRGF0ZTogRnJpLCA4IEFwciAyMDE2IDE2OjQ3OjE1ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggNC82XSBbZ2xwbHVnaW5dIGVuYWJsZSBnbGRlaW50ZXJsYWNlIG9uIE9wZW5HTCBFUworTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCisxLlBvcnRpbmcgdGhlIGV4aXN0IGRlaW50ZXJsYWNlIHNoYWRlciBhbmQgT3BlbkdMIGNhbGxiYWNrCisgIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBPcGVuR0wgRVMuCisyLkFkZCBhIG91ciBibHVyIHZlcnRpY2FsIHNoYWRlciB0byBnbGRlaW50ZXJsYWNlLgorMy5BZGQgYSBwcm9wZXJ0eSBuYW1lZCDigJxtZXRob2TigJ0gdG8gbGV0IHVzZXIgY2hvb3NlIHdoaWNoCisgIGRlaW50ZXJsYWNlIGZ1bmN0aW9uIHRvIHVzZS4gRGVmYXVsdCB0byBjaG9vc2UgYmx1ciB2ZXJ0aWNhbAorICBtZXRob2QgZm9yIGJldHRlciBwZXJmb3JtYW5jZS4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbMS45LjFdCisKK2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjQ4NzMKKworU2lnbmVkLW9mZi1ieTogSGFpaHVhIEh1IDxqYXJlZC5odUBueHAuY29tPgorLS0tCisgZXh0L2dsL01ha2VmaWxlLmFtICAgICAgICB8ICAgNCArLQorIGV4dC9nbC9nc3RnbGRlaW50ZXJsYWNlLmMgfCAzNDQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQorIGV4dC9nbC9nc3RnbGRlaW50ZXJsYWNlLmggfCAgIDYgKy0KKyBleHQvZ2wvZ3N0b3BlbmdsLmMgICAgICAgIHwgIDEzICstCisgNCBmaWxlcyBjaGFuZ2VkLCAyNzUgaW5zZXJ0aW9ucygrKSwgOTIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9leHQvZ2wvTWFrZWZpbGUuYW0gYi9leHQvZ2wvTWFrZWZpbGUuYW0KK2luZGV4IDVkNTVmNTQuLjQ2NDE5YTcgMTAwNjQ0CistLS0gYS9leHQvZ2wvTWFrZWZpbGUuYW0KKysrKyBiL2V4dC9nbC9NYWtlZmlsZS5hbQorQEAgLTQwLDYgKzQwLDcgQEAgbGliZ3N0b3BlbmdsX2xhX1NPVVJDRVMgPSBcCisgCWdzdGdsZmlsdGVyYXBwLmMgXAorIAlnc3RnbHZpZXdjb252ZXJ0LmMgXAorIAlnc3RnbHN0ZXJlb3NwbGl0LmMgXAorKwlnc3RnbGRlaW50ZXJsYWNlLmMgXAorIAlnc3RnbHN0ZXJlb21peC5jCisgCisgbm9pbnN0X0hFQURFUlMgPSBcCitAQCAtNjMsMjAgKzY0LDE5IEBAIG5vaW5zdF9IRUFERVJTID0gXAorIAlnc3RnbGZpbHRlcmFwcC5oIFwKKyAJZ3N0Z2xzdGVyZW9zcGxpdC5oIFwKKyAJZ3N0Z2xzdGVyZW9taXguaCBcCisrCWdzdGdsZGVpbnRlcmxhY2UuaCBcCisgCWdzdGdsdmlld2NvbnZlcnQuaAorIAorICMgZnVsbCBvcGVuZ2wgcmVxdWlyZWQKKyBpZiBVU0VfT1BFTkdMCisgbGliZ3N0b3BlbmdsX2xhX1NPVVJDRVMgKz0gXAorIAlnc3RnbGZpbHRlcmdsYXNzLmMgXAorLQlnc3RnbGRlaW50ZXJsYWNlLmMgXAorIAlnbHRlc3RzcmMuYyBcCisgCWdzdGdsdGVzdHNyYy5jIFwKKyAJZ3N0Z2xtb3NhaWMuYworIAorIG5vaW5zdF9IRUFERVJTICs9IFwKKyAJZ3N0Z2xmaWx0ZXJnbGFzcy5oIFwKKy0JZ3N0Z2xkZWludGVybGFjZS5oIFwKKyAJZ2x0ZXN0c3JjLmggXAorIAlnc3RnbHRlc3RzcmMuaCBcCisgCWdzdGdsbW9zYWljLmggXAorZGlmZiAtLWdpdCBhL2V4dC9nbC9nc3RnbGRlaW50ZXJsYWNlLmMgYi9leHQvZ2wvZ3N0Z2xkZWludGVybGFjZS5jCitpbmRleCBiZDBlZmYwLi5jMTI1MGRjIDEwMDY0NAorLS0tIGEvZXh0L2dsL2dzdGdsZGVpbnRlcmxhY2UuYworKysrIGIvZXh0L2dsL2dzdGdsZGVpbnRlcmxhY2UuYworQEAgLTQzLDcgKzQzLDggQEAgR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoR1NUX0NBVF9ERUZBVUxUKTsKKyAKKyBlbnVtCisgeworLSAgUFJPUF8wCisrICBQUk9QXzAsCisrICBQUk9QX01FVEhPRAorIH07CisgCisgI2RlZmluZSBERUJVR19JTklUIFwKK0BAIC01NywxNyArNTgsMjMgQEAgc3RhdGljIHZvaWQgZ3N0X2dsX2RlaW50ZXJsYWNlX3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwKKyBzdGF0aWMgdm9pZCBnc3RfZ2xfZGVpbnRlcmxhY2VfZ2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LAorICAgICBndWludCBwcm9wX2lkLCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKKyAKKytzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2dsX2RlaW50ZXJsYWNlX3N0YXJ0IChHc3RCYXNlVHJhbnNmb3JtICogdHJhbnMpOworIHN0YXRpYyBnYm9vbGVhbiBnc3RfZ2xfZGVpbnRlcmxhY2VfcmVzZXQgKEdzdEJhc2VUcmFuc2Zvcm0gKiB0cmFucyk7Cistc3RhdGljIGdib29sZWFuIGdzdF9nbF9kZWludGVybGFjZV9pbml0X3NoYWRlciAoR3N0R0xGaWx0ZXIgKiBmaWx0ZXIpOworK3N0YXRpYyBnYm9vbGVhbiBnc3RfZ2xfZGVpbnRlcmxhY2VfaW5pdF9mYm8gKEdzdEdMRmlsdGVyICogZmlsdGVyKTsKKyBzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2dsX2RlaW50ZXJsYWNlX2ZpbHRlciAoR3N0R0xGaWx0ZXIgKiBmaWx0ZXIsCisgICAgIEdzdEJ1ZmZlciAqIGluYnVmLCBHc3RCdWZmZXIgKiBvdXRidWYpOworIHN0YXRpYyBnYm9vbGVhbiBnc3RfZ2xfZGVpbnRlcmxhY2VfZmlsdGVyX3RleHR1cmUgKEdzdEdMRmlsdGVyICogZmlsdGVyLAorICAgICBndWludCBpbl90ZXgsIGd1aW50IG91dF90ZXgpOworLXN0YXRpYyB2b2lkIGdzdF9nbF9kZWludGVybGFjZV9jYWxsYmFjayAoZ2ludCB3aWR0aCwgZ2ludCBoZWlnaHQsCisrc3RhdGljIHZvaWQgZ3N0X2dsX2RlaW50ZXJsYWNlX3ZmaXJfY2FsbGJhY2sgKGdpbnQgd2lkdGgsIGdpbnQgaGVpZ2h0LAorKyAgICBndWludCB0ZXh0dXJlLCBncG9pbnRlciBzdHVmZik7Cisrc3RhdGljIHZvaWQgZ3N0X2dsX2RlaW50ZXJsYWNlX2dyZWVkeWhfY2FsbGJhY2sgKGdpbnQgd2lkdGgsIGdpbnQgaGVpZ2h0LAorICAgICBndWludCB0ZXh0dXJlLCBncG9pbnRlciBzdHVmZik7CisgCisgLyogKklOREVOVC1PRkYqICovCisgc3RhdGljIGNvbnN0IGdjaGFyICpncmVlZHloX2ZyYWdtZW50X3NvdXJjZSA9CisrICAiI2lmZGVmIEdMX0VTXG4iCisrICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisrICAiI2VuZGlmXG4iCisgICAidW5pZm9ybSBzYW1wbGVyMkQgdGV4O1xuIgorICAgInVuaWZvcm0gc2FtcGxlcjJEIHRleF9wcmV2O1xuIgorICAgInVuaWZvcm0gZmxvYXQgbWF4X2NvbWI7XG4iCitAQCAtNzUsMzUgKzgyLDM1IEBAIHN0YXRpYyBjb25zdCBnY2hhciAqZ3JlZWR5aF9mcmFnbWVudF9zb3VyY2UgPQorICAgInVuaWZvcm0gZmxvYXQgbW90aW9uX3NlbnNlO1xuIgorICAgInVuaWZvcm0gZmxvYXQgd2lkdGg7XG4iCisgICAidW5pZm9ybSBmbG9hdCBoZWlnaHQ7XG4iCisrICAidmFyeWluZyB2ZWMyIHZfdGV4Y29vcmQ7XG4iCisgCisgICAidm9pZCBtYWluICgpIHtcbiIKKy0gICIgIHZlYzIgdGV4Y29vcmQgPSBnbF9UZXhDb29yZFswXS54eTtcbiIKKy0gICIgIGlmIChpbnQobW9kKHRleGNvb3JkLnkgKiBoZWlnaHQsIDIuMCkpID09IDApIHtcbiIKKy0gICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh0ZXh0dXJlMkQodGV4X3ByZXYsIHRleGNvb3JkKS5yZ2IsIDEuMCk7XG4iCisrICAiICBpZiAoaW50KG1vZCh2X3RleGNvb3JkLnkgKiBoZWlnaHQsIDIuMCkpID09IDApIHtcbiIKKysgICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh0ZXh0dXJlMkQodGV4X3ByZXYsIHZfdGV4Y29vcmQpLnJnYiwgMS4wKTtcbiIKKyAgICIgIH0gZWxzZSB7XG4iCisgICAiICAgIHZlYzIgdGV4Y29vcmRfTDFfYTEsIHRleGNvb3JkX0wzX2ExLCB0ZXhjb29yZF9MMSwgdGV4Y29vcmRfTDMsIHRleGNvb3JkX0wxXzEsIHRleGNvb3JkX0wzXzE7XG4iCisgICAiICAgIHZlYzMgTDFfYTEsIEwzX2ExLCBMMSwgTDMsIEwxXzEsIEwzXzE7XG4iCisgCistICAiICAgIHRleGNvb3JkX0wxID0gdmVjMih0ZXhjb29yZC54LCB0ZXhjb29yZC55IC0gMS4wIC8gaGVpZ2h0KTtcbiIKKy0gICIgICAgdGV4Y29vcmRfTDMgPSB2ZWMyKHRleGNvb3JkLngsIHRleGNvb3JkLnkgKyAxLjAgLyBoZWlnaHQpO1xuIgorKyAgIiAgICB0ZXhjb29yZF9MMSA9IHZlYzIodl90ZXhjb29yZC54LCB2X3RleGNvb3JkLnkgLSAxLjAgLyBoZWlnaHQpO1xuIgorKyAgIiAgICB0ZXhjb29yZF9MMyA9IHZlYzIodl90ZXhjb29yZC54LCB2X3RleGNvb3JkLnkgKyAxLjAgLyBoZWlnaHQpO1xuIgorICAgIiAgICBMMSA9IHRleHR1cmUyRCh0ZXhfcHJldiwgdGV4Y29vcmRfTDEpLnJnYjtcbiIKKyAgICIgICAgTDMgPSB0ZXh0dXJlMkQodGV4X3ByZXYsIHRleGNvb3JkX0wzKS5yZ2I7XG4iCistICAiICAgIGlmICh0ZXhjb29yZC54ID09IDEuMCAmJiB0ZXhjb29yZC55ID09IDEuMCkge1xuIgorKyAgIiAgICBpZiAodl90ZXhjb29yZC54ID09IDEuMCAmJiB2X3RleGNvb3JkLnkgPT0gMS4wKSB7XG4iCisgICAiICAgICAgTDFfMSA9IEwxO1xuIgorICAgIiAgICAgIEwzXzEgPSBMMztcbiIKKyAgICIgICAgfSBlbHNlIHtcbiIKKy0gICIgICAgICB0ZXhjb29yZF9MMV8xID0gdmVjMih0ZXhjb29yZC54ICsgMS4wIC8gd2lkdGgsIHRleGNvb3JkLnkgLSAxLjAgLyBoZWlnaHQpO1xuIgorLSAgIiAgICAgIHRleGNvb3JkX0wzXzEgPSB2ZWMyKHRleGNvb3JkLnggKyAxLjAgLyB3aWR0aCwgdGV4Y29vcmQueSArIDEuMCAvIGhlaWdodCk7XG4iCisrICAiICAgICAgdGV4Y29vcmRfTDFfMSA9IHZlYzIodl90ZXhjb29yZC54ICsgMS4wIC8gd2lkdGgsIHZfdGV4Y29vcmQueSAtIDEuMCAvIGhlaWdodCk7XG4iCisrICAiICAgICAgdGV4Y29vcmRfTDNfMSA9IHZlYzIodl90ZXhjb29yZC54ICsgMS4wIC8gd2lkdGgsIHZfdGV4Y29vcmQueSArIDEuMCAvIGhlaWdodCk7XG4iCisgICAiICAgICAgTDFfMSA9IHRleHR1cmUyRCh0ZXhfcHJldiwgdGV4Y29vcmRfTDFfMSkucmdiO1xuIgorICAgIiAgICAgIEwzXzEgPSB0ZXh0dXJlMkQodGV4X3ByZXYsIHRleGNvb3JkX0wzXzEpLnJnYjtcbiIKKyAgICIgICAgfVxuIgorIAorLSAgIiAgICBpZiAoaW50KGNlaWwodGV4Y29vcmQueCArIHRleGNvb3JkLnkpKSA9PSAwKSB7XG4iCisrICAiICAgIGlmIChpbnQoY2VpbCh2X3RleGNvb3JkLnggKyB2X3RleGNvb3JkLnkpKSA9PSAwKSB7XG4iCisgICAiICAgICAgTDFfYTEgPSBMMTtcbiIKKyAgICIgICAgICBMM19hMSA9IEwzO1xuIgorICAgIiAgICB9IGVsc2Uge1xuIgorLSAgIiAgICAgIHRleGNvb3JkX0wxX2ExID0gdmVjMih0ZXhjb29yZC54IC0gMS4wIC8gd2lkdGgsIHRleGNvb3JkLnkgLSAxLjAgLyBoZWlnaHQpO1xuIgorLSAgIiAgICAgIHRleGNvb3JkX0wzX2ExID0gdmVjMih0ZXhjb29yZC54IC0gMS4wIC8gd2lkdGgsIHRleGNvb3JkLnkgKyAxLjAgLyBoZWlnaHQpO1xuIgorKyAgIiAgICAgIHRleGNvb3JkX0wxX2ExID0gdmVjMih2X3RleGNvb3JkLnggLSAxLjAgLyB3aWR0aCwgdl90ZXhjb29yZC55IC0gMS4wIC8gaGVpZ2h0KTtcbiIKKysgICIgICAgICB0ZXhjb29yZF9MM19hMSA9IHZlYzIodl90ZXhjb29yZC54IC0gMS4wIC8gd2lkdGgsIHZfdGV4Y29vcmQueSArIDEuMCAvIGhlaWdodCk7XG4iCisgICAiICAgICAgTDFfYTEgPSB0ZXh0dXJlMkQodGV4X3ByZXYsIHRleGNvb3JkX0wxX2ExKS5yZ2I7XG4iCisgICAiICAgICAgTDNfYTEgPSB0ZXh0dXJlMkQodGV4X3ByZXYsIHRleGNvb3JkX0wzX2ExKS5yZ2I7XG4iCisgICAiICAgIH1cbiIKK0BAIC0xMTMsOCArMTIwLDggQEAgc3RhdGljIGNvbnN0IGdjaGFyICpncmVlZHloX2ZyYWdtZW50X3NvdXJjZSA9CisgICAiICAgIHZlYzMgYXZnXzEgPSAoTDFfMSArIEwzXzEpIC8gMi4wO1xuIgorICAgIiAgICB2ZWMzIGF2Z19zID0gKGF2Z19hMSArIGF2Z18xKSAvIDIuMDtcbiIKKyAgICIgICAgdmVjMyBhdmdfc2MgPSAoYXZnX3MgKyBhdmcpIC8gMi4wO1xuIgorLSAgIiAgICB2ZWMzIEwyID0gdGV4dHVyZTJEKHRleCwgdGV4Y29vcmQpLnJnYjtcbiIKKy0gICIgICAgdmVjMyBMUDIgPSB0ZXh0dXJlMkQodGV4X3ByZXYsIHRleGNvb3JkKS5yZ2I7XG4iCisrICAiICAgIHZlYzMgTDIgPSB0ZXh0dXJlMkQodGV4LCB2X3RleGNvb3JkKS5yZ2I7XG4iCisrICAiICAgIHZlYzMgTFAyID0gdGV4dHVyZTJEKHRleF9wcmV2LCB2X3RleGNvb3JkKS5yZ2I7XG4iCisgICAiICAgIHZlYzMgYmVzdDtcbiIKKyAgICIgICAgaWYgKGFicyhMMi5yIC0gYXZnX3NjLnIpIDwgYWJzKExQMi5yIC0gYXZnX3NjLnIpKSB7XG4iCisgICAiICAgICAgYmVzdC5yID0gTDIucjtcbiIgIiAgICB9IGVsc2Uge1xuIgorQEAgLTE0NCw4ICsxNTEsODcgQEAgc3RhdGljIGNvbnN0IGdjaGFyICpncmVlZHloX2ZyYWdtZW50X3NvdXJjZSA9CisgICAiICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQobGFzdCwgMS4wKTtcbiIKKyAgICIgIH1cbiIKKyAgICJ9XG4iOworKworK2NvbnN0IGdjaGFyICp2ZmlyX2ZyYWdtZW50X3NvdXJjZSA9CisrICAiI2lmZGVmIEdMX0VTXG4iCisrICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisrICAiI2VuZGlmXG4iCisrICAidW5pZm9ybSBzYW1wbGVyMkQgdGV4O1xuIgorKyAgInVuaWZvcm0gZmxvYXQgd2lkdGg7XG4iCisrICAidW5pZm9ybSBmbG9hdCBoZWlnaHQ7XG4iCisrICAidmFyeWluZyB2ZWMyIHZfdGV4Y29vcmQ7XG4iCisrICAidm9pZCBtYWluKClcbiIKKysgICJ7XG4iCisrICAiICB2ZWMyIHRvcGNvb3JkLCBib3Rjb29yZDtcbiIKKysgICIgIHZlYzQgY3VyX2NvbG9yLCB0b3BfY29sb3IsIGJvdF9jb2xvcjtcbiIKKysgICIgIHRvcGNvb3JkLnggPSB2X3RleGNvb3JkLng7XG4iCisrICAiICBib3Rjb29yZC54ID0gdl90ZXhjb29yZC54O1xuIgorKyAgIiAgaWYgKHZfdGV4Y29vcmQueSA9PSAwLjAgfHwgdl90ZXhjb29yZC55ID09IDEuMCkge1xuIgorKyAgIiAgICB0b3Bjb29yZC55ID0gdl90ZXhjb29yZC55IDtcbiIKKysgICIgICAgYm90Y29vcmQueSA9IHZfdGV4Y29vcmQueSA7XG4iCisrICAiICB9XG4iCisrICAiICBlbHNlIHtcbiIKKysgICIgICAgdG9wY29vcmQueSA9IHZfdGV4Y29vcmQueSAtIDEuMC9oZWlnaHQ7XG4iCisrICAiICAgIGJvdGNvb3JkLnkgPSB2X3RleGNvb3JkLnkgKyAxLjAvaGVpZ2h0O1xuIgorKyAgIiAgfVxuIgorKyAgIiAgY3VyX2NvbG9yID0gdGV4dHVyZTJEKHRleCwgdl90ZXhjb29yZCk7XG4iCisrICAiICB0b3BfY29sb3IgPSB0ZXh0dXJlMkQodGV4LCB0b3Bjb29yZCk7XG4iCisrICAiICBib3RfY29sb3IgPSB0ZXh0dXJlMkQodGV4LCBib3Rjb29yZCk7XG4iCisrICAiICBnbF9GcmFnQ29sb3IgPSAwLjUqY3VyX2NvbG9yICsgMC4yNSp0b3BfY29sb3IgKyAwLjI1KmJvdF9jb2xvcjtcbiIKKysgICJ9IjsKKyAvKiAqSU5ERU5ULU9OKiAqLworIAorKy8qIGRvbnQnIGZvcmdldCB0byBlZGl0IHRoZSBmb2xsb3dpbmcgd2hlbiBhIG5ldyBtZXRob2QgaXMgYWRkZWQgKi8KKyt0eXBlZGVmIGVudW0KKyt7CisrICBHU1RfR0xfREVJTlRFUkxBQ0VfVkZJUiwKKysgIEdTVF9HTF9ERUlOVEVSTEFDRV9HUkVFRFlICisrfSBHc3RHTERlaW50ZXJsYWNlTWV0aG9kOworKworK3N0YXRpYyBjb25zdCBHRW51bVZhbHVlICoKKytnc3RfZ2xfZGVpbnRlcmxhY2VfZ2V0X21ldGhvZHMgKHZvaWQpCisreworKyAgc3RhdGljIGNvbnN0IEdFbnVtVmFsdWUgbWV0aG9kX3R5cGVzW10gPSB7CisrICAgIHtHU1RfR0xfREVJTlRFUkxBQ0VfVkZJUiwgIkJsdXIgVmVydGljYWwiLCAidmZpciJ9LAorKyAgICB7R1NUX0dMX0RFSU5URVJMQUNFX0dSRUVEWUgsICJNb3Rpb24gQWRhcHRpdmU6IEFkdmFuY2VkIERldGVjdGlvbiIsCisrICAgICAgICAgICJncmVlZGh5In0sCisrICAgIHswLCBOVUxMLCBOVUxMfQorKyAgfTsKKysgIHJldHVybiBtZXRob2RfdHlwZXM7CisrfQorKworKyNkZWZpbmUgR1NUX1RZUEVfR0xfREVJTlRFUkxBQ0VfTUVUSE9EUyAoZ3N0X2dsX2RlaW50ZXJsYWNlX21ldGhvZF9nZXRfdHlwZSAoKSkKKytzdGF0aWMgR1R5cGUKKytnc3RfZ2xfZGVpbnRlcmxhY2VfbWV0aG9kX2dldF90eXBlICh2b2lkKQorK3sKKysgIHN0YXRpYyBHVHlwZSBnbF9kZWludGVybGFjZV9tZXRob2RfdHlwZSA9IDA7CisrICBpZiAoIWdsX2RlaW50ZXJsYWNlX21ldGhvZF90eXBlKSB7CisrICAgIGdsX2RlaW50ZXJsYWNlX21ldGhvZF90eXBlID0KKysgICAgICAgIGdfZW51bV9yZWdpc3Rlcl9zdGF0aWMgKCJHc3RHTERlaW50ZXJsYWNlTWV0aG9kIiwKKysgICAgICAgIGdzdF9nbF9kZWludGVybGFjZV9nZXRfbWV0aG9kcyAoKSk7CisrICB9CisrICByZXR1cm4gZ2xfZGVpbnRlcmxhY2VfbWV0aG9kX3R5cGU7CisrfQorKworK3N0YXRpYyB2b2lkCisrZ3N0X2dsX2RlaW50ZXJsYWNlX3NldF9tZXRob2QgKEdzdEdMRGVpbnRlcmxhY2UgKiBkZWludGVybGFjZSwKKysgICAgZ3VpbnQgbWV0aG9kX3R5cGVzKQorK3sKKysgIHN3aXRjaCAobWV0aG9kX3R5cGVzKSB7CisrICAgIGNhc2UgR1NUX0dMX0RFSU5URVJMQUNFX1ZGSVI6CisrICAgICAgZGVpbnRlcmxhY2UtPmRlaW50ZXJsYWNlZnVuYyA9IGdzdF9nbF9kZWludGVybGFjZV92ZmlyX2NhbGxiYWNrOworKyAgICAgIGRlaW50ZXJsYWNlLT5jdXJyZW50X21ldGhvZCA9IG1ldGhvZF90eXBlczsKKysgICAgICBicmVhazsKKysgICAgY2FzZSBHU1RfR0xfREVJTlRFUkxBQ0VfR1JFRURZSDoKKysgICAgICBkZWludGVybGFjZS0+ZGVpbnRlcmxhY2VmdW5jID0gZ3N0X2dsX2RlaW50ZXJsYWNlX2dyZWVkeWhfY2FsbGJhY2s7CisrICAgICAgZGVpbnRlcmxhY2UtPmN1cnJlbnRfbWV0aG9kID0gbWV0aG9kX3R5cGVzOworKyAgICAgIGJyZWFrOworKyAgICBkZWZhdWx0OgorKyAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOworKyAgICAgIGJyZWFrOworKyAgfQorK30KKysKKyBzdGF0aWMgdm9pZAorIGdzdF9nbF9kZWludGVybGFjZV9jbGFzc19pbml0IChHc3RHTERlaW50ZXJsYWNlQ2xhc3MgKiBrbGFzcykKKyB7CitAQCAtMTYzLDI1ICsyNDksNjAgQEAgZ3N0X2dsX2RlaW50ZXJsYWNlX2NsYXNzX2luaXQgKEdzdEdMRGVpbnRlcmxhY2VDbGFzcyAqIGtsYXNzKQorICAgICAgICJEZWludGVybGFjaW5nIGJhc2VkIG9uIGZyYWdtZW50IHNoYWRlcnMiLAorICAgICAgICJKdWxpZW4gSXNvcmNlIDxqdWxpZW4uaXNvcmNlQG1haWwuY29tPiIpOworIAorKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKysgICAgICBQUk9QX01FVEhPRCwKKysgICAgICBnX3BhcmFtX3NwZWNfZW51bSAoIm1ldGhvZCIsCisrICAgICAgICAgICJEZWludGVybGFjZSBNZXRob2QiLAorKyAgICAgICAgICAiU2VsZWN0IHdoaWNoIGRlaW50ZXJsYWNlIG1ldGhvZCBhcHBseSB0byBHTCB2aWRlbyB0ZXh0dXJlIiwKKysgICAgICAgICAgR1NUX1RZUEVfR0xfREVJTlRFUkxBQ0VfTUVUSE9EUywKKysgICAgICAgICAgR1NUX0dMX0RFSU5URVJMQUNFX1ZGSVIsIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworKworKyAgR1NUX0JBU0VfVFJBTlNGT1JNX0NMQVNTIChrbGFzcyktPnN0YXJ0ID0gZ3N0X2dsX2RlaW50ZXJsYWNlX3N0YXJ0OworICAgR1NUX0JBU0VfVFJBTlNGT1JNX0NMQVNTIChrbGFzcyktPnN0b3AgPSBnc3RfZ2xfZGVpbnRlcmxhY2VfcmVzZXQ7CisgCisgICBHU1RfR0xfRklMVEVSX0NMQVNTIChrbGFzcyktPmZpbHRlciA9IGdzdF9nbF9kZWludGVybGFjZV9maWx0ZXI7CisgICBHU1RfR0xfRklMVEVSX0NMQVNTIChrbGFzcyktPmZpbHRlcl90ZXh0dXJlID0KKyAgICAgICBnc3RfZ2xfZGVpbnRlcmxhY2VfZmlsdGVyX3RleHR1cmU7CistICBHU1RfR0xfRklMVEVSX0NMQVNTIChrbGFzcyktPmluaXRfZmJvID0gZ3N0X2dsX2RlaW50ZXJsYWNlX2luaXRfc2hhZGVyOworKyAgR1NUX0dMX0ZJTFRFUl9DTEFTUyAoa2xhc3MpLT5pbml0X2ZibyA9IGdzdF9nbF9kZWludGVybGFjZV9pbml0X2ZibzsKKyAKKy0gIEdTVF9HTF9CQVNFX0ZJTFRFUl9DTEFTUyAoa2xhc3MpLT5zdXBwb3J0ZWRfZ2xfYXBpID0gR1NUX0dMX0FQSV9PUEVOR0w7CisrICBHU1RfR0xfQkFTRV9GSUxURVJfQ0xBU1MgKGtsYXNzKS0+c3VwcG9ydGVkX2dsX2FwaSA9CisrICAgICAgR1NUX0dMX0FQSV9PUEVOR0wgfCBHU1RfR0xfQVBJX0dMRVMyIHwgR1NUX0dMX0FQSV9PUEVOR0wzOworIH0KKyAKKyBzdGF0aWMgdm9pZAorIGdzdF9nbF9kZWludGVybGFjZV9pbml0IChHc3RHTERlaW50ZXJsYWNlICogZmlsdGVyKQorIHsKKy0gIGZpbHRlci0+c2hhZGVyID0gTlVMTDsKKysgIGZpbHRlci0+c2hhZGVyc3RhYmxlID0gTlVMTDsKKysgIGZpbHRlci0+ZGVpbnRlcmxhY2VmdW5jID0gZ3N0X2dsX2RlaW50ZXJsYWNlX3ZmaXJfY2FsbGJhY2s7CisrICBmaWx0ZXItPmN1cnJlbnRfbWV0aG9kID0gR1NUX0dMX0RFSU5URVJMQUNFX1ZGSVI7CisgICBmaWx0ZXItPnByZXZfYnVmZmVyID0gTlVMTDsKKyAgIGZpbHRlci0+cHJldl90ZXggPSAwOworIH0KKyAKKyBzdGF0aWMgZ2Jvb2xlYW4KKytnc3RfZ2xfZGVpbnRlcmxhY2Vfc3RhcnQgKEdzdEJhc2VUcmFuc2Zvcm0gKiB0cmFucykKKyt7CisrICBHc3RHTERlaW50ZXJsYWNlICpkZWludGVybGFjZV9maWx0ZXIgPSBHU1RfR0xfREVJTlRFUkxBQ0UgKHRyYW5zKTsKKysKKysgIGRlaW50ZXJsYWNlX2ZpbHRlci0+c2hhZGVyc3RhYmxlID0gZ19oYXNoX3RhYmxlX25ldyAoZ19zdHJfaGFzaCwgZ19zdHJfZXF1YWwpOworKworKyAgcmV0dXJuIEdTVF9CQVNFX1RSQU5TRk9STV9DTEFTUyAocGFyZW50X2NsYXNzKS0+c3RhcnQgKHRyYW5zKTsKKyt9CisrCisrc3RhdGljIHZvaWQKKytnc3RfZ2xfZGVpbnRlcmxhY2VfZ2hhc2hfZnVuY19jbGVhbiAoZ3BvaW50ZXIga2V5LCBncG9pbnRlciB2YWx1ZSwKKysgICAgZ3BvaW50ZXIgZGF0YSkKKyt7CisrICBHc3RHTFNoYWRlciAqc2hhZGVyID0gKEdzdEdMU2hhZGVyICopIHZhbHVlOworKyAgR3N0R0xGaWx0ZXIgKmZpbHRlciA9IChHc3RHTEZpbHRlciAqKSBkYXRhOworKworKyAgLy9ibG9ja2luZyBjYWxsLCB3YWl0IHRoZSBvcGVuZ2wgdGhyZWFkIGhhcyBkZXN0cm95ZWQgdGhlIHNoYWRlcgorKyAgZ3N0X2dsX2NvbnRleHRfZGVsX3NoYWRlciAoR1NUX0dMX0JBU0VfRklMVEVSIChmaWx0ZXIpLT5jb250ZXh0LCBzaGFkZXIpOworKworKyAgdmFsdWUgPSBOVUxMOworK30KKysKKytzdGF0aWMgZ2Jvb2xlYW4KKyBnc3RfZ2xfZGVpbnRlcmxhY2VfcmVzZXQgKEdzdEJhc2VUcmFuc2Zvcm0gKiB0cmFucykKKyB7CisgICBHc3RHTERlaW50ZXJsYWNlICpkZWludGVybGFjZV9maWx0ZXIgPSBHU1RfR0xfREVJTlRFUkxBQ0UgKHRyYW5zKTsKK0BAIC0xODksMTAgKzMxMCwxNyBAQCBnc3RfZ2xfZGVpbnRlcmxhY2VfcmVzZXQgKEdzdEJhc2VUcmFuc2Zvcm0gKiB0cmFucykKKyAgIGdzdF9idWZmZXJfcmVwbGFjZSAoJmRlaW50ZXJsYWNlX2ZpbHRlci0+cHJldl9idWZmZXIsIE5VTEwpOworIAorICAgLy9ibG9ja2luZyBjYWxsLCB3YWl0IHRoZSBvcGVuZ2wgdGhyZWFkIGhhcyBkZXN0cm95ZWQgdGhlIHNoYWRlcgorLSAgaWYgKGRlaW50ZXJsYWNlX2ZpbHRlci0+c2hhZGVyKQorLSAgICBnc3RfZ2xfY29udGV4dF9kZWxfc2hhZGVyIChHU1RfR0xfQkFTRV9GSUxURVIgKHRyYW5zKS0+Y29udGV4dCwKKy0gICAgICAgIGRlaW50ZXJsYWNlX2ZpbHRlci0+c2hhZGVyKTsKKy0gIGRlaW50ZXJsYWNlX2ZpbHRlci0+c2hhZGVyID0gTlVMTDsKKysgIGlmIChkZWludGVybGFjZV9maWx0ZXItPnNoYWRlcnN0YWJsZSkgeworKyAgICAvKiByZWxlYXNlIHNoYWRlcnMgaW4gdGhlIGdsIHRocmVhZCAqLworKyAgICBnX2hhc2hfdGFibGVfZm9yZWFjaCAoZGVpbnRlcmxhY2VfZmlsdGVyLT5zaGFkZXJzdGFibGUsCisrICAgICAgICBnc3RfZ2xfZGVpbnRlcmxhY2VfZ2hhc2hfZnVuY19jbGVhbiwgZGVpbnRlcmxhY2VfZmlsdGVyKTsKKysKKysgICAgLyogY2xlYW4gdGhlIGh0YWJsZSB3aXRob3V0IGNhbGxpbmcgdmFsdWVzIGRlc3RydWN0b3JzCisrICAgICAqIGJlY2F1c2Ugc2hhZGVycyBoYXZlIGJlZW4gcmVsZWFzZWQgaW4gdGhlIGdsdGhyZWFkCisrICAgICAqIHRocm91Z2ggdGhlIGZvcmVhY2ggZnVuYyAqLworKyAgICBnX2hhc2hfdGFibGVfdW5yZWYgKGRlaW50ZXJsYWNlX2ZpbHRlci0+c2hhZGVyc3RhYmxlKTsKKysgICAgZGVpbnRlcmxhY2VfZmlsdGVyLT5zaGFkZXJzdGFibGUgPSBOVUxMOworKyAgfQorIAorICAgcmV0dXJuIEdTVF9CQVNFX1RSQU5TRk9STV9DTEFTUyAocGFyZW50X2NsYXNzKS0+c3RvcCAodHJhbnMpOworIH0KK0BAIC0yMDEsOSArMzI5LDEyIEBAIHN0YXRpYyB2b2lkCisgZ3N0X2dsX2RlaW50ZXJsYWNlX3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKKyAgICAgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKKyB7CistICAvL0dzdEdMRGVpbnRlcmxhY2UgKmZpbHRlciA9IEdTVF9HTF9ERUlOVEVSTEFDRSAob2JqZWN0KTsKKysgIEdzdEdMRGVpbnRlcmxhY2UgKmZpbHRlciA9IEdTVF9HTF9ERUlOVEVSTEFDRSAob2JqZWN0KTsKKyAKKyAgIHN3aXRjaCAocHJvcF9pZCkgeworKyAgICBjYXNlIFBST1BfTUVUSE9EOgorKyAgICAgIGdzdF9nbF9kZWludGVybGFjZV9zZXRfbWV0aG9kIChmaWx0ZXIsIGdfdmFsdWVfZ2V0X2VudW0gKHZhbHVlKSk7CisrICAgICAgYnJlYWs7CisgICAgIGRlZmF1bHQ6CisgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgICBicmVhazsKK0BAIC0yMTQsOSArMzQ1LDEyIEBAIHN0YXRpYyB2b2lkCisgZ3N0X2dsX2RlaW50ZXJsYWNlX2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKKyAgICAgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKKyB7CistICAvL0dzdEdMRGVpbnRlcmxhY2UgKmZpbHRlciA9IEdTVF9HTF9ERUlOVEVSTEFDRSAob2JqZWN0KTsKKysgIEdzdEdMRGVpbnRlcmxhY2UgKmZpbHRlciA9IEdTVF9HTF9ERUlOVEVSTEFDRSAob2JqZWN0KTsKKyAKKyAgIHN3aXRjaCAocHJvcF9pZCkgeworKyAgICBjYXNlIFBST1BfTUVUSE9EOgorKyAgICAgIGdfdmFsdWVfc2V0X2VudW0gKHZhbHVlLCBmaWx0ZXItPmN1cnJlbnRfbWV0aG9kKTsKKysgICAgICBicmVhazsKKyAgICAgZGVmYXVsdDoKKyAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgIGJyZWFrOworQEAgLTIyNCwxMyArMzU4LDkgQEAgZ3N0X2dsX2RlaW50ZXJsYWNlX2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKKyB9CisgCisgc3RhdGljIGdib29sZWFuCistZ3N0X2dsX2RlaW50ZXJsYWNlX2luaXRfc2hhZGVyIChHc3RHTEZpbHRlciAqIGZpbHRlcikKKytnc3RfZ2xfZGVpbnRlcmxhY2VfaW5pdF9mYm8gKEdzdEdMRmlsdGVyICogZmlsdGVyKQorIHsKKy0gIEdzdEdMRGVpbnRlcmxhY2UgKmRlaW50ZXJsYWNlX2ZpbHRlciA9IEdTVF9HTF9ERUlOVEVSTEFDRSAoZmlsdGVyKTsKKy0KKy0gIC8vYmxvY2tpbmcgY2FsbCwgd2FpdCB0aGUgb3BlbmdsIHRocmVhZCBoYXMgY29tcGlsZWQgdGhlIHNoYWRlcgorLSAgcmV0dXJuIGdzdF9nbF9jb250ZXh0X2dlbl9zaGFkZXIgKEdTVF9HTF9CQVNFX0ZJTFRFUiAoZmlsdGVyKS0+Y29udGV4dCwgMCwKKy0gICAgICBncmVlZHloX2ZyYWdtZW50X3NvdXJjZSwgJmRlaW50ZXJsYWNlX2ZpbHRlci0+c2hhZGVyKTsKKysgIHJldHVybiBUUlVFOworIH0KKyAKKyBzdGF0aWMgZ2Jvb2xlYW4KK0BAIC0yNDEsNyArMzcxLDcgQEAgZ3N0X2dsX2RlaW50ZXJsYWNlX2ZpbHRlcl90ZXh0dXJlIChHc3RHTEZpbHRlciAqIGZpbHRlciwgZ3VpbnQgaW5fdGV4LAorIAorICAgLy9ibG9ja2luZyBjYWxsLCB1c2UgYSBGQk8KKyAgIGdzdF9nbF9maWx0ZXJfcmVuZGVyX3RvX3RhcmdldCAoZmlsdGVyLCBUUlVFLCBpbl90ZXgsIG91dF90ZXgsCistICAgICAgZ3N0X2dsX2RlaW50ZXJsYWNlX2NhbGxiYWNrLCBkZWludGVybGFjZV9maWx0ZXIpOworKyAgICAgIGRlaW50ZXJsYWNlX2ZpbHRlci0+ZGVpbnRlcmxhY2VmdW5jLCBkZWludGVybGFjZV9maWx0ZXIpOworIAorICAgcmV0dXJuIFRSVUU7CisgfQorQEAgLTI1OSwzNiArMzg5LDEwNCBAQCBnc3RfZ2xfZGVpbnRlcmxhY2VfZmlsdGVyIChHc3RHTEZpbHRlciAqIGZpbHRlciwgR3N0QnVmZmVyICogaW5idWYsCisgICByZXR1cm4gVFJVRTsKKyB9CisgCistLy9vcGVuZ2wgc2NlbmUsIHBhcmFtczogaW5wdXQgdGV4dHVyZSAobm90IHRoZSBvdXRwdXQgZmlsdGVyLT50ZXh0dXJlKQorK3N0YXRpYyBHc3RHTFNoYWRlciAqCisrZ3N0X2dsX2RlaW50ZXJsYWNlX2dldF9mcmFnbWVudF9zaGFkZXIgKEdzdEdMRmlsdGVyICogZmlsdGVyLAorKyAgICBjb25zdCBnY2hhciAqIHNoYWRlcl9uYW1lLCBjb25zdCBnY2hhciAqIHNoYWRlcl9zb3VyY2UpCisreworKyAgR3N0R0xTaGFkZXIgKnNoYWRlciA9IE5VTEw7CisrICBHc3RHTERlaW50ZXJsYWNlICpkZWludGVybGFjZV9maWx0ZXIgPSBHU1RfR0xfREVJTlRFUkxBQ0UgKGZpbHRlcik7CisrICBHc3RHTENvbnRleHQgKmNvbnRleHQgPSBHU1RfR0xfQkFTRV9GSUxURVIgKGZpbHRlciktPmNvbnRleHQ7CisrCisrICBzaGFkZXIgPSBnX2hhc2hfdGFibGVfbG9va3VwIChkZWludGVybGFjZV9maWx0ZXItPnNoYWRlcnN0YWJsZSwgc2hhZGVyX25hbWUpOworKworKyAgaWYgKCFzaGFkZXIpIHsKKysgICAgR0Vycm9yICplcnJvciA9IE5VTEw7CisrCisrICAgIGlmICghKHNoYWRlciA9IGdzdF9nbF9zaGFkZXJfbmV3X2xpbmtfd2l0aF9zdGFnZXMgKGNvbnRleHQsICZlcnJvciwKKysgICAgICAgICAgICAgICAgZ3N0X2dsc2xfc3RhZ2VfbmV3X2RlZmF1bHRfdmVydGV4IChjb250ZXh0KSwKKysgICAgICAgICAgICAgICAgZ3N0X2dsc2xfc3RhZ2VfbmV3X3dpdGhfc3RyaW5nIChjb250ZXh0LCBHTF9GUkFHTUVOVF9TSEFERVIsCisrICAgICAgICAgICAgICAgICAgICBHU1RfR0xTTF9WRVJTSU9OX05PTkUsCisrICAgICAgICAgICAgICAgICAgICBHU1RfR0xTTF9QUk9GSUxFX0VTIHwgR1NUX0dMU0xfUFJPRklMRV9DT01QQVRJQklMSVRZLAorKyAgICAgICAgICAgICAgICAgICAgc2hhZGVyX3NvdXJjZSksIE5VTEwpKSkgeworKyAgICAgIEdTVF9FTEVNRU5UX0VSUk9SIChkZWludGVybGFjZV9maWx0ZXIsIFJFU09VUkNFLCBOT1RfRk9VTkQsCisrICAgICAgICAgICgiRmFpbGVkIHRvIGluaXRpYWxpemUgJXMgc2hhZGVyIiwgc2hhZGVyX25hbWUpLCAoTlVMTCkpOworKyAgICB9CisrCisrICAgIGZpbHRlci0+ZHJhd19hdHRyX3Bvc2l0aW9uX2xvYyA9CisrICAgICAgICBnc3RfZ2xfc2hhZGVyX2dldF9hdHRyaWJ1dGVfbG9jYXRpb24gKHNoYWRlciwgImFfcG9zaXRpb24iKTsKKysgICAgZmlsdGVyLT5kcmF3X2F0dHJfdGV4dHVyZV9sb2MgPQorKyAgICAgICAgZ3N0X2dsX3NoYWRlcl9nZXRfYXR0cmlidXRlX2xvY2F0aW9uIChzaGFkZXIsICJhX3RleGNvb3JkIik7CisrICB9CisrCisrICBnX2hhc2hfdGFibGVfaW5zZXJ0IChkZWludGVybGFjZV9maWx0ZXItPnNoYWRlcnN0YWJsZSwgKGdjaGFyICopIHNoYWRlcl9uYW1lLAorKyAgICAgIHNoYWRlcik7CisrCisrICByZXR1cm4gc2hhZGVyOworK30KKysKKyBzdGF0aWMgdm9pZAorLWdzdF9nbF9kZWludGVybGFjZV9jYWxsYmFjayAoZ2ludCB3aWR0aCwgZ2ludCBoZWlnaHQsIGd1aW50IHRleHR1cmUsCisrZ3N0X2dsX2RlaW50ZXJsYWNlX3ZmaXJfY2FsbGJhY2sgKGdpbnQgd2lkdGgsIGdpbnQgaGVpZ2h0LCBndWludCB0ZXh0dXJlLAorICAgICBncG9pbnRlciBzdHVmZikKKyB7CistICBHc3RHTERlaW50ZXJsYWNlICpkZWludGVybGFjZV9maWx0ZXIgPSBHU1RfR0xfREVJTlRFUkxBQ0UgKHN0dWZmKTsKKysgIEdzdEdMU2hhZGVyICpzaGFkZXI7CisgICBHc3RHTEZpbHRlciAqZmlsdGVyID0gR1NUX0dMX0ZJTFRFUiAoc3R1ZmYpOworLSAgR3N0R0xGdW5jcyAqZ2wgPSBHU1RfR0xfQkFTRV9GSUxURVIgKGZpbHRlciktPmNvbnRleHQtPmdsX3Z0YWJsZTsKKysgIEdzdEdMRGVpbnRlcmxhY2UgKmRlaW50ZXJsYWNlX2ZpbHRlciA9IEdTVF9HTF9ERUlOVEVSTEFDRSAoZmlsdGVyKTsKKysgIEdzdEdMQ29udGV4dCAqY29udGV4dCA9IEdTVF9HTF9CQVNFX0ZJTFRFUiAoZmlsdGVyKS0+Y29udGV4dDsKKysgIEdzdEdMRnVuY3MgKmdsID0gY29udGV4dC0+Z2xfdnRhYmxlOworKworKyAgc2hhZGVyID0gZ3N0X2dsX2RlaW50ZXJsYWNlX2dldF9mcmFnbWVudF9zaGFkZXIgKGRlaW50ZXJsYWNlX2ZpbHRlciwgInZmaXIiLAorKyAgICAgIHZmaXJfZnJhZ21lbnRfc291cmNlKTsKKysKKysgIGlmICghc2hhZGVyKQorKyAgICByZXR1cm47CisrCisrI2lmIEdTVF9HTF9IQVZFX09QRU5HTAorKyAgaWYgKFVTSU5HX09QRU5HTCAoY29udGV4dCkpIHsKKysgICAgZ2wtPk1hdHJpeE1vZGUgKEdMX1BST0pFQ1RJT04pOworKyAgICBnbC0+TG9hZElkZW50aXR5ICgpOworKyAgfQorKyNlbmRpZgorKworKyAgZ3N0X2dsX3NoYWRlcl91c2UgKHNoYWRlcik7CisrCisrICBnbC0+QWN0aXZlVGV4dHVyZSAoR0xfVEVYVFVSRTApOworKyAgZ2wtPkJpbmRUZXh0dXJlIChHTF9URVhUVVJFXzJELCB0ZXh0dXJlKTsKKysKKysgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWkgKHNoYWRlciwgInRleCIsIDApOworKyAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZiAoc2hhZGVyLCAid2lkdGgiLAorKyAgICAgIEdTVF9WSURFT19JTkZPX1dJRFRIICgmZmlsdGVyLT5vdXRfaW5mbykpOworKyAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZiAoc2hhZGVyLCAiaGVpZ2h0IiwKKysgICAgICBHU1RfVklERU9fSU5GT19IRUlHSFQgKCZmaWx0ZXItPm91dF9pbmZvKSk7CisrCisrICBnc3RfZ2xfZmlsdGVyX2RyYXdfdGV4dHVyZSAoZmlsdGVyLCB0ZXh0dXJlLCB3aWR0aCwgaGVpZ2h0KTsKKyt9CisrCisrc3RhdGljIHZvaWQKKytnc3RfZ2xfZGVpbnRlcmxhY2VfZ3JlZWR5aF9jYWxsYmFjayAoZ2ludCB3aWR0aCwgZ2ludCBoZWlnaHQsIGd1aW50IHRleHR1cmUsCisrICAgIGdwb2ludGVyIHN0dWZmKQorK3sKKysgIEdzdEdMU2hhZGVyICpzaGFkZXI7CisrICBHc3RHTEZpbHRlciAqZmlsdGVyID0gR1NUX0dMX0ZJTFRFUiAoc3R1ZmYpOworKyAgR3N0R0xEZWludGVybGFjZSAqZGVpbnRlcmxhY2VfZmlsdGVyID0gR1NUX0dMX0RFSU5URVJMQUNFIChmaWx0ZXIpOworKyAgR3N0R0xDb250ZXh0ICpjb250ZXh0ID0gR1NUX0dMX0JBU0VfRklMVEVSIChmaWx0ZXIpLT5jb250ZXh0OworKyAgR3N0R0xGdW5jcyAqZ2wgPSBjb250ZXh0LT5nbF92dGFibGU7CisgICBndWludCB0ZW1wOworIAorLSAgR0xmbG9hdCB2ZXJ0c1tdID0geyAtMS4wLCAtMS4wLAorLSAgICAxLjAsIC0xLjAsCistICAgIDEuMCwgMS4wLAorLSAgICAtMS4wLCAxLjAKKy0gIH07CistICBHTGZsb2F0IHRleGNvb3JkczBbXSA9IHsgMC4wZiwgMC4wZiwKKy0gICAgMS4wZiwgMC4wZiwKKy0gICAgMS4wZiwgMS4wZiwKKy0gICAgMC4wZiwgMS4wZgorLSAgfTsKKy0gIEdMZmxvYXQgdGV4Y29vcmRzMVtdID0geyAwLjBmLCAwLjBmLAorLSAgICAxLjBmLCAwLjBmLAorLSAgICAxLjBmLCAxLjBmLAorLSAgICAwLjBmLCAxLjBmCistICB9OworKyAgc2hhZGVyID0KKysgICAgICBnc3RfZ2xfZGVpbnRlcmxhY2VfZ2V0X2ZyYWdtZW50X3NoYWRlciAoZGVpbnRlcmxhY2VfZmlsdGVyLCAiZ3JlZWRoeSIsCisrICAgICAgZ3JlZWR5aF9mcmFnbWVudF9zb3VyY2UpOworIAorLSAgZ2wtPk1hdHJpeE1vZGUgKEdMX1BST0pFQ1RJT04pOworLSAgZ2wtPkxvYWRJZGVudGl0eSAoKTsKKysgIGlmICghc2hhZGVyKQorKyAgICByZXR1cm47CisgCistICBnc3RfZ2xfc2hhZGVyX3VzZSAoZGVpbnRlcmxhY2VfZmlsdGVyLT5zaGFkZXIpOworKyNpZiBHU1RfR0xfSEFWRV9PUEVOR0wKKysgIGlmIChVU0lOR19PUEVOR0wgKGNvbnRleHQpKSB7CisrICAgIGdsLT5NYXRyaXhNb2RlIChHTF9QUk9KRUNUSU9OKTsKKysgICAgZ2wtPkxvYWRJZGVudGl0eSAoKTsKKysgIH0KKysjZW5kaWYKKysKKysgIGdzdF9nbF9zaGFkZXJfdXNlIChzaGFkZXIpOworIAorICAgaWYgKEdfVU5MSUtFTFkgKGRlaW50ZXJsYWNlX2ZpbHRlci0+cHJldl90ZXggPT0gMCkpIHsKKyAgICAgZ3N0X2dsX2NvbnRleHRfZ2VuX3RleHR1cmUgKEdTVF9HTF9CQVNFX0ZJTFRFUiAoZmlsdGVyKS0+Y29udGV4dCwKK0BAIC0yOTgsNDQgKzQ5NiwyNCBAQCBnc3RfZ2xfZGVpbnRlcmxhY2VfY2FsbGJhY2sgKGdpbnQgd2lkdGgsIGdpbnQgaGVpZ2h0LCBndWludCB0ZXh0dXJlLAorICAgICAgICAgR1NUX1ZJREVPX0lORk9fSEVJR0hUICgmZmlsdGVyLT5vdXRfaW5mbykpOworICAgfSBlbHNlIHsKKyAgICAgZ2wtPkFjdGl2ZVRleHR1cmUgKEdMX1RFWFRVUkUxKTsKKy0gICAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xaSAoZGVpbnRlcmxhY2VfZmlsdGVyLT5zaGFkZXIsICJ0ZXhfcHJldiIsIDEpOworKyAgICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFpIChzaGFkZXIsICJ0ZXhfcHJldiIsIDEpOworICAgICBnbC0+QmluZFRleHR1cmUgKEdMX1RFWFRVUkVfMkQsIGRlaW50ZXJsYWNlX2ZpbHRlci0+cHJldl90ZXgpOworICAgfQorIAorICAgZ2wtPkFjdGl2ZVRleHR1cmUgKEdMX1RFWFRVUkUwKTsKKy0gIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWkgKGRlaW50ZXJsYWNlX2ZpbHRlci0+c2hhZGVyLCAidGV4IiwgMCk7CisrICBnbC0+QmluZFRleHR1cmUgKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUpOworIAorLSAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZiAoZGVpbnRlcmxhY2VfZmlsdGVyLT5zaGFkZXIsICJtYXhfY29tYiIsCistICAgICAgNS4wZiAvIDI1NS4wZik7CistICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFmIChkZWludGVybGFjZV9maWx0ZXItPnNoYWRlciwgIm1vdGlvbl90aHJlc2hvbGQiLAorLSAgICAgIDI1LjBmIC8gMjU1LjBmKTsKKy0gIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWYgKGRlaW50ZXJsYWNlX2ZpbHRlci0+c2hhZGVyLCAibW90aW9uX3NlbnNlIiwKKy0gICAgICAzMC4wZiAvIDI1NS4wZik7CisrICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFpIChzaGFkZXIsICJ0ZXgiLCAwKTsKKysgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWYgKHNoYWRlciwgIm1heF9jb21iIiwgNS4wZiAvIDI1NS4wZik7CisrICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFmIChzaGFkZXIsICJtb3Rpb25fdGhyZXNob2xkIiwgMjUuMGYgLyAyNTUuMGYpOworKyAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZiAoc2hhZGVyLCAibW90aW9uX3NlbnNlIiwgMzAuMGYgLyAyNTUuMGYpOworIAorLSAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZiAoZGVpbnRlcmxhY2VfZmlsdGVyLT5zaGFkZXIsICJ3aWR0aCIsCisrICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFmIChzaGFkZXIsICJ3aWR0aCIsCisgICAgICAgR1NUX1ZJREVPX0lORk9fV0lEVEggKCZmaWx0ZXItPm91dF9pbmZvKSk7CistICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFmIChkZWludGVybGFjZV9maWx0ZXItPnNoYWRlciwgImhlaWdodCIsCisrICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFmIChzaGFkZXIsICJoZWlnaHQiLAorICAgICAgIEdTVF9WSURFT19JTkZPX0hFSUdIVCAoJmZpbHRlci0+b3V0X2luZm8pKTsKKyAKKy0gIGdsLT5DbGllbnRBY3RpdmVUZXh0dXJlIChHTF9URVhUVVJFMCk7CistCistICBnbC0+RW5hYmxlQ2xpZW50U3RhdGUgKEdMX1RFWFRVUkVfQ09PUkRfQVJSQVkpOworLSAgZ2wtPkVuYWJsZUNsaWVudFN0YXRlIChHTF9WRVJURVhfQVJSQVkpOworLQorLSAgZ2wtPlZlcnRleFBvaW50ZXIgKDIsIEdMX0ZMT0FULCAwLCAmdmVydHMpOworLSAgZ2wtPlRleENvb3JkUG9pbnRlciAoMiwgR0xfRkxPQVQsIDAsICZ0ZXhjb29yZHMwKTsKKy0KKy0gIGdsLT5DbGllbnRBY3RpdmVUZXh0dXJlIChHTF9URVhUVVJFMSk7CistICBnbC0+RW5hYmxlQ2xpZW50U3RhdGUgKEdMX1RFWFRVUkVfQ09PUkRfQVJSQVkpOworLSAgZ2wtPlRleENvb3JkUG9pbnRlciAoMiwgR0xfRkxPQVQsIDAsICZ0ZXhjb29yZHMxKTsKKy0KKy0gIGdsLT5EcmF3QXJyYXlzIChHTF9UUklBTkdMRV9GQU4sIDAsIDQpOworLQorLSAgZ2wtPkRpc2FibGVDbGllbnRTdGF0ZSAoR0xfVkVSVEVYX0FSUkFZKTsKKy0gIGdsLT5EaXNhYmxlQ2xpZW50U3RhdGUgKEdMX1RFWFRVUkVfQ09PUkRfQVJSQVkpOworLQorLSAgZ2wtPkNsaWVudEFjdGl2ZVRleHR1cmUgKEdMX1RFWFRVUkUwKTsKKy0gIGdsLT5EaXNhYmxlQ2xpZW50U3RhdGUgKEdMX1RFWFRVUkVfQ09PUkRfQVJSQVkpOworKyAgZ3N0X2dsX2ZpbHRlcl9kcmF3X3RleHR1cmUgKGZpbHRlciwgdGV4dHVyZSwgd2lkdGgsIGhlaWdodCk7CisgCisgICBpZiAodGV4dHVyZSA9PSBmaWx0ZXItPmluX3RleF9pZCkgeworICAgICB0ZW1wID0gZmlsdGVyLT5pbl90ZXhfaWQ7CitkaWZmIC0tZ2l0IGEvZXh0L2dsL2dzdGdsZGVpbnRlcmxhY2UuaCBiL2V4dC9nbC9nc3RnbGRlaW50ZXJsYWNlLmgKK2luZGV4IGE4MWEyZTcuLjU4YTljMGMgMTAwNjQ0CistLS0gYS9leHQvZ2wvZ3N0Z2xkZWludGVybGFjZS5oCisrKysgYi9leHQvZ2wvZ3N0Z2xkZWludGVybGFjZS5oCitAQCAtMzgsOSArMzgsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMRGVpbnRlcmxhY2VDbGFzcyBHc3RHTERlaW50ZXJsYWNlQ2xhc3M7Cisgc3RydWN0IF9Hc3RHTERlaW50ZXJsYWNlCisgeworICAgR3N0R0xGaWx0ZXIgIGZpbHRlcjsKKy0gIEdzdEdMU2hhZGVyICAqc2hhZGVyOworKworKyAgR0xDQgkgICAgICAgZGVpbnRlcmxhY2VmdW5jOyAKKysgIEdIYXNoVGFibGUgICAqc2hhZGVyc3RhYmxlOworICAgR3N0QnVmZmVyICAgICpwcmV2X2J1ZmZlcjsKKyAgIGd1aW50ICAgICAgICAgcHJldl90ZXg7CisrCisrICBnaW50CSAgICAgICBjdXJyZW50X21ldGhvZDsKKyB9OworIAorIHN0cnVjdCBfR3N0R0xEZWludGVybGFjZUNsYXNzCitkaWZmIC0tZ2l0IGEvZXh0L2dsL2dzdG9wZW5nbC5jIGIvZXh0L2dsL2dzdG9wZW5nbC5jCitpbmRleCA1MDY3NmM0Li4xMzU4NjJhIDEwMDY0NAorLS0tIGEvZXh0L2dsL2dzdG9wZW5nbC5jCisrKysgYi9leHQvZ2wvZ3N0b3BlbmdsLmMKK0BAIC02Miw2ICs2Miw3IEBACisgI2luY2x1ZGUgImdzdGdsc3RlcmVvc3BsaXQuaCIKKyAjaW5jbHVkZSAiZ3N0Z2xzdGVyZW9taXguaCIKKyAjaW5jbHVkZSAiZ3N0Z2x2aWV3Y29udmVydC5oIgorKyNpbmNsdWRlICJnc3RnbGRlaW50ZXJsYWNlLmgiCisgCisgI2lmIEhBVkVfR1JBUEhFTkUKKyAjaW5jbHVkZSAiZ3N0Z2x0cmFuc2Zvcm1hdGlvbi5oIgorQEAgLTc3LDcgKzc4LDYgQEAKKyAjaW5jbHVkZSAiZ3N0Z2x0ZXN0c3JjLmgiCisgI2luY2x1ZGUgImdzdGdsZmlsdGVyZ2xhc3MuaCIKKyAvKiAjaW5jbHVkZSAiZ3N0Z2xmaWx0ZXJyZWZsZWN0ZWRzY3JlZW4uaCIgKi8KKy0jaW5jbHVkZSAiZ3N0Z2xkZWludGVybGFjZS5oIgorICNpbmNsdWRlICJnc3RnbG1vc2FpYy5oIgorICNpZiBIQVZFX1BORworICNpbmNsdWRlICJnc3RnbGRpZmZlcmVuY2VtYXR0ZS5oIgorQEAgLTIyNiw2ICsyMjYsMTIgQEAgcGx1Z2luX2luaXQgKEdzdFBsdWdpbiAqIHBsdWdpbikKKyAgICAgICAgICAgR1NUX1JBTktfTk9ORSwgR1NUX1RZUEVfR0xfU1RFUkVPX01JWCkpIHsKKyAgICAgcmV0dXJuIEZBTFNFOworICAgfQorKworKyAgaWYgKCFnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCAiZ2xkZWludGVybGFjZSIsCisrICAgICAgICAgIEdTVF9SQU5LX05PTkUsIEdTVF9UWVBFX0dMX0RFSU5URVJMQUNFKSkgeworKyAgICByZXR1cm4gRkFMU0U7CisrICB9CisrCisgI2lmIEhBVkVfSlBFRworICNpZiBIQVZFX1BORworICAgaWYgKCFnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCAiZ2xvdmVybGF5IiwKK0BAIC0yNTAsMTEgKzI1Niw2IEBAIHBsdWdpbl9pbml0IChHc3RQbHVnaW4gKiBwbHVnaW4pCisgICAgIHJldHVybiBGQUxTRTsKKyAgIH0KKyAjZW5kaWYKKy0gIGlmICghZ3N0X2VsZW1lbnRfcmVnaXN0ZXIgKHBsdWdpbiwgImdsZGVpbnRlcmxhY2UiLAorLSAgICAgICAgICBHU1RfUkFOS19OT05FLCBHU1RfVFlQRV9HTF9ERUlOVEVSTEFDRSkpIHsKKy0gICAgcmV0dXJuIEZBTFNFOworLSAgfQorLQorICAgaWYgKCFnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCAiZ2xtb3NhaWMiLAorICAgICAgICAgICBHU1RfUkFOS19OT05FLCBHU1RfVFlQRV9HTF9NT1NBSUMpKSB7CisgICAgIHJldHVybiBGQUxTRTsKKy0tIAorMS45LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMi1nbHBsdWdpbi1nbHdpbmRvdy1maXgtbWVtb3J5LWxlYWstb2YtbmF2aWdhdGlvbi10aHJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMi1nbHBsdWdpbi1nbHdpbmRvdy1maXgtbWVtb3J5LWxlYWstb2YtbmF2aWdhdGlvbi10aHJlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAzNDkxYTE1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDItZ2xwbHVnaW4tZ2x3aW5kb3ctZml4LW1lbW9yeS1sZWFrLW9mLW5hdmlnYXRpb24tdGhyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUZyb20gOTVjZGE3ZmJjZjFhODEyODlkOTMxNWM4MDFjOGUyYjNkODk2ZjRjYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhhaWh1YSBIdSA8YjU1NTk3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOiBNb24sIDMwIE5vdiAyMDE1IDA5OjM2OjA5ICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMi81XSBbZ2xwbHVnaW5dIGdsd2luZG93OiBmaXggbWVtb3J5IGxlYWsgb2YgbmF2aWdhdGlvbgotIHRocmVhZAotCi1XaGVuIGV4aXQgbmF2aWdhdGlvbiB0aHJlYWQsIGNhbGwgZ190aHJlYWRfam9pbigpIHRvIHJlbGVhc2UKLXRoZSByZXNvdXJjZSBob2xkIGJ5IGl0LgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFsxLjcuMV0KLQotYnVnemlsbGEgVVJMOiBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4ODIwCi0KLVNpZ25lZC1vZmYtYnk6IEhhaWh1YSBIdSA8YjU1NTk3QGZyZWVzY2FsZS5jb20+Ci0tLS0KLSBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2x3aW5kb3cuYyB8ICAgIDMgKysrCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsd2luZG93LmMgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2x3aW5kb3cuYwotaW5kZXggNDRiNzRjYS4uNDJlZjI5NiAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbHdpbmRvdy5jCi0rKysgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2x3aW5kb3cuYwotQEAgLTM0Myw2ICszNDMsOSBAQCBnc3RfZ2xfd2luZG93X2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KQotICAgICB3aGlsZSAod2luZG93LT5uYXZfYWxpdmUpIHsKLSAgICAgICBnX2NvbmRfd2FpdCAoJndpbmRvdy0+bmF2X2Rlc3Ryb3lfY29uZCwgJndpbmRvdy0+bmF2X2xvY2spOwotICAgICB9Ci0rICAgIC8qIHJlbGVhc2UgcmVzb3VyY2UgaG9sZCBieSBuYXZpZ2F0aW9uIHRocmVhZCAqLwotKyAgICBnX3RocmVhZF9qb2luKHdpbmRvdy0+cHJpdi0+bmF2aWdhdGlvbl90aHJlYWQpOwotKyAgICB3aW5kb3ctPnByaXYtPm5hdmlnYXRpb25fdGhyZWFkID0gTlVMTDsKLSAgICAgZ19tdXRleF91bmxvY2sgKCZ3aW5kb3ctPm5hdl9sb2NrKTsKLSAgIH0KLSAKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAzLWdsY29sb3Jjb252ZXJ0LWltcGxlbWVudC1tdWx0aXBsZS1yZW5kZXItdGFyZ2V0cy1mb3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAzLWdsY29sb3Jjb252ZXJ0LWltcGxlbWVudC1tdWx0aXBsZS1yZW5kZXItdGFyZ2V0cy1mb3IucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMzFkOGUwNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDMtZ2xjb2xvcmNvbnZlcnQtaW1wbGVtZW50LW11bHRpcGxlLXJlbmRlci10YXJnZXRzLWZvci5wYXRjaApAQCAtMCwwICsxLDI0NCBAQAorRnJvbSAxMjdlNTE3NTY4NDkwZmMxNDcyMTFkOGIyZmI0ZGEwMWNlY2JiZWI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorRGF0ZTogVGh1LCAzMSBNYXIgMjAxNiAxOTo1MDoyOCArMTEwMAorU3ViamVjdDogW1BBVENIIDUvNl0gZ2xjb2xvcmNvbnZlcnQ6IGltcGxlbWVudCBtdWx0aXBsZSByZW5kZXIgdGFyZ2V0cyBmb3IKKyBHTEVTMworCitUaGVyZSBhcmUgbnVtZXJvdXMgc2xpZ2h0IGRpZmZlcmVuY2VzIHJlcXVpcmVkIGJldHdlZW4gRGVza3RvcCBHTCBhbmQgR0xFUzMgZm9yCittdWx0aXBsZSByZW5kZXIgdGFyZ2V0cy4KKworMS4gZ2xfRnJhZ0RhdGEgZG9lc24ndCBleGlzdCBhdCBhbGwgYW5kIG9uZSBpcyByZXF1aXJlZCB0byB1c2UKKyAgICdsYXlvdXQgKGxvY2F0aW9uID0gPykgb3V0IC4uLicgaW5zdGVhZC4KKzIuIGdsX0ZyYWdDb2xvciBkb2Vzbid0IGV4aXN0LCBzYW1lIGFzIDEKKzMuIHRleHR1cmUyRCgpIGhhcyBiZWVuIGRlcHJlY2F0ZWQKKworRm9ydHVuYXRlbHkgbW9zdCBvZiB0aGVzZSBoYXZlIGJlZW4gdGFrZW4gY2FyZSBvZiB3aXRoIEdMMyBhbmQgdGhlIHNoYWRlcgorbWFuZ2xpbmcgYWxyZWFkeSBleGlzdHMgc28ganVzdCBleHBhbmQgdGhlIGNvbmRpdGlvbnMgdGhleSBhcmUgdXNlZCBpbi4gIFRoZQorZ2xfRnJhZ0RhdGEgaXNzdWUgcmVxdWlyZXMgYSBuZXcgbWFuZ2xlIHBhc3MgdGhvdWdoLiAgV2UgYWxzbyB1c2UgdGhpcyBuZXcKK3Bhc3Mgb24gZGVza3RvcCBHTCBmb3IgY29uc2lzdGVuY3kuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgWzEuOS4xXQorCistLS0KKyBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb2xvcmNvbnZlcnQuYyB8IDEyNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgOTkgaW5zZXJ0aW9ucygrKSwgMjYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb2xvcmNvbnZlcnQuYyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGNvbG9yY29udmVydC5jCitpbmRleCA0OTBlYzU0Li5mNDc4ZmFhIDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0LmMKKysrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGNvbG9yY29udmVydC5jCitAQCAtMTgwMiwxMCArMTgwMiwxMSBAQCBfbWFuZ2xlX3NhbXBsZXJfdHlwZSAoY29uc3QgZ2NoYXIgKiBzdHIsIEdzdEdMVGV4dHVyZVRhcmdldCBmcm9tLAorIAorIHN0YXRpYyBnY2hhciAqCisgX21hbmdsZV92YXJ5aW5nX2F0dHJpYnV0ZSAoY29uc3QgZ2NoYXIgKiBzdHIsIGd1aW50IHNoYWRlcl90eXBlLAorLSAgICBHc3RHTEFQSSBnbF9hcGkpCisrICAgIEdzdEdMQVBJIGdsX2FwaSwgZ3VpbnQgZ2xfbWFqb3IsIGd1aW50IGdsX21pbm9yKQorIHsKKy0gIGlmIChnbF9hcGkgJiBHU1RfR0xfQVBJX09QRU5HTDMpIHsKKy0gICAgaWYgKHNoYWRlcl90eXBlID09IEdMX1ZFUlRFWF9TSEFERVIpIHsKKysgIGlmIChzaGFkZXJfdHlwZSA9PSBHTF9WRVJURVhfU0hBREVSKSB7CisrICAgIGlmICgoZ2xfYXBpICYgR1NUX0dMX0FQSV9PUEVOR0wzKSB8fCAoZ2xfYXBpICYgR1NUX0dMX0FQSV9HTEVTMgorKyAgICAgICAgICAgICYmIGdsX21ham9yID49IDMpKSB7CisgICAgICAgZ2NoYXIgKnRtcCwgKnRtcDI7CisgICAgICAgR1JlZ2V4ICpyZWdleDsKKyAKK0BAIC0xODIxLDcgKzE4MjIsMTAgQEAgX21hbmdsZV92YXJ5aW5nX2F0dHJpYnV0ZSAoY29uc3QgZ2NoYXIgKiBzdHIsIGd1aW50IHNoYWRlcl90eXBlLAorIAorICAgICAgIGdfZnJlZSAodG1wKTsKKyAgICAgICByZXR1cm4gdG1wMjsKKy0gICAgfSBlbHNlIGlmIChzaGFkZXJfdHlwZSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpIHsKKysgICAgfQorKyAgfSBlbHNlIGlmIChzaGFkZXJfdHlwZSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpIHsKKysgICAgaWYgKChnbF9hcGkgJiBHU1RfR0xfQVBJX09QRU5HTDMpIHx8IChnbF9hcGkgJiBHU1RfR0xfQVBJX0dMRVMyCisrICAgICAgICAgICAgJiYgZ2xfbWFqb3IgPiAzKSkgeworICAgICAgIGdjaGFyICp0bXA7CisgICAgICAgR1JlZ2V4ICpyZWdleDsKKyAKK0BAIC0xODM3LDI4ICsxODQxLDQ4IEBAIF9tYW5nbGVfdmFyeWluZ19hdHRyaWJ1dGUgKGNvbnN0IGdjaGFyICogc3RyLCBndWludCBzaGFkZXJfdHlwZSwKKyB9CisgCisgc3RhdGljIGdjaGFyICoKKy1fbWFuZ2xlX2ZyYWdfY29sb3IgKGNvbnN0IGdjaGFyICogc3RyKQorK19tYW5nbGVfZnJhZ19jb2xvcl9kYXRhIChjb25zdCBnY2hhciAqIHN0cikKKyB7CisgICBHUmVnZXggKnJlZ2V4OworLSAgZ2NoYXIgKnJldDsKKysgIGdjaGFyICpyZXQsICp0bXA7CisgCisgICByZWdleCA9IGdfcmVnZXhfbmV3ICgiZ2xfRnJhZ0NvbG9yIiwgMCwgMCwgTlVMTCk7CisgICByZXQgPSBnX3JlZ2V4X3JlcGxhY2VfbGl0ZXJhbCAocmVnZXgsIHN0ciwgLTEsIDAsICJmcmFnQ29sb3IiLCAwLCBOVUxMKTsKKyAgIGdfcmVnZXhfdW5yZWYgKHJlZ2V4KTsKKyAKKysgIHRtcCA9IHJldDsKKysgIC8qIHNlYXJjaCBhbmQgcmVwbGFjZSAnZ2xfRnJhZ0RhdGFbTlVNXScgaW50byBmcmFnQ29sb3JfTlVNICovCisrICByZWdleCA9IGdfcmVnZXhfbmV3ICgiZ2xfRnJhZ0RhdGFcXFsoXFxkKylcXF0iLCAwLCAwLCBOVUxMKTsKKysgIHJldCA9IGdfcmVnZXhfcmVwbGFjZSAocmVnZXgsIHRtcCwgLTEsIDAsICJmcmFnQ29sb3JfXFwxIiwgMCwgTlVMTCk7CisrICBnX3JlZ2V4X3VucmVmIChyZWdleCk7CisrICBnX2ZyZWUgKHRtcCk7CisrCisgICByZXR1cm4gcmV0OworIH0KKyAKKyBzdGF0aWMgdm9pZAorLV9tYW5nbGVfdmVyc2lvbl9wcm9maWxlX2Zyb21fZ2xfYXBpIChHc3RHTEFQSSBnbF9hcGksIEdzdEdMU0xWZXJzaW9uICogdmVyc2lvbiwKKy0gICAgR3N0R0xTTFByb2ZpbGUgKiBwcm9maWxlKQorK19tYW5nbGVfdmVyc2lvbl9wcm9maWxlX2Zyb21fZ2xfYXBpIChHc3RHTEFQSSBnbF9hcGksIGdpbnQgZ2xfbWFqb3IsCisrICAgIGdpbnQgZ2xfbWlub3IsIEdzdEdMU0xWZXJzaW9uICogdmVyc2lvbiwgR3N0R0xTTFByb2ZpbGUgKiBwcm9maWxlKQorIHsKKysgICp2ZXJzaW9uID0gR1NUX0dMU0xfVkVSU0lPTl9OT05FOworKyAgKnByb2ZpbGUgPSBHU1RfR0xTTF9QUk9GSUxFX05PTkU7CisrCisgICBpZiAoZ2xfYXBpICYgR1NUX0dMX0FQSV9PUEVOR0wzKSB7CistICAgICp2ZXJzaW9uID0gR1NUX0dMU0xfVkVSU0lPTl8xNTA7CistICAgICpwcm9maWxlID0gR1NUX0dMU0xfUFJPRklMRV9OT05FOworKyAgICBpZiAoZ2xfbWFqb3IgPiAzIHx8IGdsX21pbm9yID49IDMpIHsKKysgICAgICAqdmVyc2lvbiA9IEdTVF9HTFNMX1ZFUlNJT05fMzMwOworKyAgICAgICpwcm9maWxlID0gR1NUX0dMU0xfUFJPRklMRV9DT1JFOworKyAgICB9IGVsc2UgeworKyAgICAgICp2ZXJzaW9uID0gR1NUX0dMU0xfVkVSU0lPTl8xNTA7CisrICAgICAgKnByb2ZpbGUgPSBHU1RfR0xTTF9QUk9GSUxFX05PTkU7CisrICAgIH0KKyAgIH0gZWxzZSBpZiAoZ2xfYXBpICYgR1NUX0dMX0FQSV9HTEVTMikgeworLSAgICAqdmVyc2lvbiA9IEdTVF9HTFNMX1ZFUlNJT05fMTAwOworLSAgICAqcHJvZmlsZSA9IEdTVF9HTFNMX1BST0ZJTEVfRVM7CisrICAgIGlmIChnbF9tYWpvciA+PSAzKSB7CisrICAgICAgKnZlcnNpb24gPSBHU1RfR0xTTF9WRVJTSU9OXzMwMDsKKysgICAgICAqcHJvZmlsZSA9IEdTVF9HTFNMX1BST0ZJTEVfRVM7CisrICAgIH0gZWxzZSBpZiAoZ2xfbWFqb3IgPj0gMikgeworKyAgICAgICp2ZXJzaW9uID0gR1NUX0dMU0xfVkVSU0lPTl8xMDA7CisrICAgICAgKnByb2ZpbGUgPSBHU1RfR0xTTF9QUk9GSUxFX0VTOworKyAgICB9CisgICB9IGVsc2UgaWYgKGdsX2FwaSAmIEdTVF9HTF9BUElfT1BFTkdMKSB7CisgICAgICp2ZXJzaW9uID0gR1NUX0dMU0xfVkVSU0lPTl8xMTA7CisgICAgICpwcm9maWxlID0gR1NUX0dMU0xfUFJPRklMRV9DT01QQVRJQklMSVRZOworQEAgLTE4NjcsMjIgKzE4OTEsMjggQEAgX21hbmdsZV92ZXJzaW9uX3Byb2ZpbGVfZnJvbV9nbF9hcGkgKEdzdEdMQVBJIGdsX2FwaSwgR3N0R0xTTFZlcnNpb24gKiB2ZXJzaW9uLAorIAorIHN0YXRpYyBnY2hhciAqCisgX21hbmdsZV9zaGFkZXIgKGNvbnN0IGdjaGFyICogc3RyLCBndWludCBzaGFkZXJfdHlwZSwgR3N0R0xUZXh0dXJlVGFyZ2V0IGZyb20sCistICAgIEdzdEdMVGV4dHVyZVRhcmdldCB0bywgR3N0R0xBUEkgZ2xfYXBpLCBHc3RHTFNMVmVyc2lvbiAqIHZlcnNpb24sCistICAgIEdzdEdMU0xQcm9maWxlICogcHJvZmlsZSkKKysgICAgR3N0R0xUZXh0dXJlVGFyZ2V0IHRvLCBHc3RHTEFQSSBnbF9hcGksIGdpbnQgZ2xfbWFqb3IsIGdpbnQgZ2xfbWlub3IsCisrICAgIEdzdEdMU0xWZXJzaW9uICogdmVyc2lvbiwgR3N0R0xTTFByb2ZpbGUgKiBwcm9maWxlKQorIHsKKyAgIGdjaGFyICp0bXAsICp0bXAyOworIAorKyAgX21hbmdsZV92ZXJzaW9uX3Byb2ZpbGVfZnJvbV9nbF9hcGkgKGdsX2FwaSwgZ2xfbWFqb3IsIGdsX21pbm9yLCB2ZXJzaW9uLAorKyAgICAgIHByb2ZpbGUpOworICAgdG1wID0gX21hbmdsZV90ZXh0dXJlX2FjY2VzcyAoc3RyLCBmcm9tLCB0bywgZ2xfYXBpKTsKKyAgIHRtcDIgPSBfbWFuZ2xlX3NhbXBsZXJfdHlwZSAodG1wLCBmcm9tLCB0byk7CisgICBnX2ZyZWUgKHRtcCk7CistICB0bXAgPSBfbWFuZ2xlX3ZhcnlpbmdfYXR0cmlidXRlICh0bXAyLCBzaGFkZXJfdHlwZSwgZ2xfYXBpKTsKKysgIHRtcCA9CisrICAgICAgX21hbmdsZV92YXJ5aW5nX2F0dHJpYnV0ZSAodG1wMiwgc2hhZGVyX3R5cGUsIGdsX2FwaSwgZ2xfbWFqb3IsIGdsX21pbm9yKTsKKyAgIGdfZnJlZSAodG1wMik7CistICBpZiAoc2hhZGVyX3R5cGUgPT0gR0xfRlJBR01FTlRfU0hBREVSICYmIGdsX2FwaSAmIEdTVF9HTF9BUElfT1BFTkdMMykgeworLSAgICB0bXAyID0gX21hbmdsZV9mcmFnX2NvbG9yICh0bXApOworLSAgICBnX2ZyZWUgKHRtcCk7CistICAgIHRtcCA9IHRtcDI7CisrICBpZiAoc2hhZGVyX3R5cGUgPT0gR0xfRlJBR01FTlRfU0hBREVSKSB7CisrICAgIGlmICgoKnByb2ZpbGUgPT0gR1NUX0dMU0xfUFJPRklMRV9FUyAmJiAqdmVyc2lvbiA+PSBHU1RfR0xTTF9WRVJTSU9OXzMwMCkKKysgICAgICAgIHx8ICgqcHJvZmlsZSA9PSBHU1RfR0xTTF9QUk9GSUxFX0NPUkUKKysgICAgICAgICAgICAmJiAqdmVyc2lvbiA+PSBHU1RfR0xTTF9WRVJTSU9OXzE1MCkpIHsKKysgICAgICB0bXAyID0gX21hbmdsZV9mcmFnX2NvbG9yX2RhdGEgKHRtcCk7CisrICAgICAgZ19mcmVlICh0bXApOworKyAgICAgIHRtcCA9IHRtcDI7CisrICAgIH0KKyAgIH0KKy0gIF9tYW5nbGVfdmVyc2lvbl9wcm9maWxlX2Zyb21fZ2xfYXBpIChnbF9hcGksIHZlcnNpb24sIHByb2ZpbGUpOworICAgcmV0dXJuIHRtcDsKKyB9CisgCitAQCAtMTg5OSwxNSArMTkyOSwxOCBAQCBfY3JlYXRlX3NoYWRlciAoR3N0R0xDb2xvckNvbnZlcnQgKiBjb252ZXJ0KQorICAgY29uc3QgZ2NoYXIgKnN0cmluZ3NbMl07CisgICBHRXJyb3IgKmVycm9yID0gTlVMTDsKKyAgIEdzdEdMQVBJIGdsX2FwaTsKKysgIGdpbnQgZ2xfbWFqb3IsIGdsX21pbm9yOworICAgaW50IGk7CisgCisgICBnbF9hcGkgPSBnc3RfZ2xfY29udGV4dF9nZXRfZ2xfYXBpIChjb252ZXJ0LT5jb250ZXh0KTsKKysgIGdzdF9nbF9jb250ZXh0X2dldF9nbF92ZXJzaW9uIChjb252ZXJ0LT5jb250ZXh0LCAmZ2xfbWFqb3IsICZnbF9taW5vcik7CisgCisgICByZXQgPSBnc3RfZ2xfc2hhZGVyX25ldyAoY29udmVydC0+Y29udGV4dCk7CisgCisgICB0bXAgPQorICAgICAgIF9tYW5nbGVfc2hhZGVyICh0ZXh0X3ZlcnRleF9zaGFkZXIsIEdMX1ZFUlRFWF9TSEFERVIsIGluZm8tPnRlbXBsLT50YXJnZXQsCistICAgICAgY29udmVydC0+cHJpdi0+ZnJvbV90ZXh0dXJlX3RhcmdldCwgZ2xfYXBpLCAmdmVyc2lvbiwgJnByb2ZpbGUpOworKyAgICAgIGNvbnZlcnQtPnByaXYtPmZyb21fdGV4dHVyZV90YXJnZXQsIGdsX2FwaSwgZ2xfbWFqb3IsIGdsX21pbm9yLCAmdmVyc2lvbiwKKysgICAgICAmcHJvZmlsZSk7CisgCisgICB0bXAxID0gZ3N0X2dsc2xfdmVyc2lvbl9wcm9maWxlX3RvX3N0cmluZyAodmVyc2lvbiwgcHJvZmlsZSk7CisgICB2ZXJzaW9uX3N0ciA9IGdfc3RyZHVwX3ByaW50ZiAoIiN2ZXJzaW9uICVzXG4iLCB0bXAxKTsKK0BAIC0xOTQ1LDkgKzE5NzgsMzcgQEAgX2NyZWF0ZV9zaGFkZXIgKEdzdEdMQ29sb3JDb252ZXJ0ICogY29udmVydCkKKyAgIGlmIChpbmZvLT50ZW1wbC0+dW5pZm9ybXMpCisgICAgIGdfc3RyaW5nX2FwcGVuZCAoc3RyLCBpbmZvLT50ZW1wbC0+dW5pZm9ybXMpOworIAorLSAgaWYgKGdsX2FwaSAmIEdTVF9HTF9BUElfT1BFTkdMMykgeworLSAgICBnX3N0cmluZ19hcHBlbmRfYyAoc3RyLCAnXG4nKTsKKy0gICAgZ19zdHJpbmdfYXBwZW5kIChzdHIsICJvdXQgdmVjNCBmcmFnQ29sb3I7XG4iKTsKKysgIGdfc3RyaW5nX2FwcGVuZF9jIChzdHIsICdcbicpOworKworKyAgLyogR0wgMy4zKyBhbmQgR0wgRVMgMy54ICovCisrICBpZiAoKHByb2ZpbGUgPT0gR1NUX0dMU0xfUFJPRklMRV9DT1JFICYmIHZlcnNpb24gPj0gR1NUX0dMU0xfVkVSU0lPTl8zMzApCisrICAgICAgfHwgKHByb2ZpbGUgPT0gR1NUX0dMU0xfUFJPRklMRV9FUyAmJiB2ZXJzaW9uID49IEdTVF9HTFNMX1ZFUlNJT05fMzAwKSkgeworKyAgICBpZiAoaW5mby0+b3V0X25fdGV4dHVyZXMgPiAxKSB7CisrICAgICAgZ2ludCBpOworKworKyAgICAgIGZvciAoaSA9IDA7IGkgPCBpbmZvLT5vdXRfbl90ZXh0dXJlczsgaSsrKSB7CisrICAgICAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmIChzdHIsCisrICAgICAgICAgICAgImxheW91dChsb2NhdGlvbiA9ICVkKSBvdXQgdmVjNCBmcmFnQ29sb3JfJWQ7XG4iLCBpLCBpKTsKKysgICAgICB9CisrICAgIH0gZWxzZSB7CisrICAgICAgZ19zdHJpbmdfYXBwZW5kIChzdHIsICJsYXlvdXQgKGxvY2F0aW9uID0gMCkgb3V0IHZlYzQgZnJhZ0NvbG9yO1xuIik7CisrICAgIH0KKysgIH0gZWxzZSBpZiAocHJvZmlsZSA9PSBHU1RfR0xTTF9QUk9GSUxFX0NPUkUKKysgICAgICAmJiB2ZXJzaW9uID49IEdTVF9HTFNMX1ZFUlNJT05fMTUwKSB7CisrICAgIC8qIG5vIGxheW91dCBzcGVjaWZpZXJzLCB1c2UgZ2xCaW5kRnJhZ0RhdGFMb2NhdGlvbiBpbnN0ZWFkICovCisrICAgIGlmIChpbmZvLT5vdXRfbl90ZXh0dXJlcyA+IDEpIHsKKysgICAgICBnaW50IGk7CisrCisrICAgICAgZm9yIChpID0gMDsgaSA8IGluZm8tPm91dF9uX3RleHR1cmVzOyBpKyspIHsKKysgICAgICAgIGdjaGFyICp2YXJfbmFtZSA9IGdfc3RyZHVwX3ByaW50ZiAoImZyYWdDb2xvcl8lZCIsIGkpOworKyAgICAgICAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZiAoc3RyLCAib3V0IHZlYzQgJXM7XG4iLCB2YXJfbmFtZSk7CisrICAgICAgICBnc3RfZ2xfc2hhZGVyX2JpbmRfZnJhZ19kYXRhX2xvY2F0aW9uIChyZXQsIGksIHZhcl9uYW1lKTsKKysgICAgICAgIGdfZnJlZSAodmFyX25hbWUpOworKyAgICAgIH0KKysgICAgfSBlbHNlIHsKKysgICAgICBnX3N0cmluZ19hcHBlbmQgKHN0ciwgIm91dCB2ZWM0IGZyYWdDb2xvcjtcbiIpOworKyAgICAgIGdzdF9nbF9zaGFkZXJfYmluZF9mcmFnX2RhdGFfbG9jYXRpb24gKHJldCwgMCwgImZyYWdDb2xvciIpOworKyAgICB9CisgICB9CisgCisgICBmb3IgKGkgPSAwOyBpIDwgTUFYX0ZVTkNUSU9OUzsgaSsrKSB7CitAQCAtMTk1OSw3ICsyMDIwLDE5IEBAIF9jcmVhdGVfc2hhZGVyIChHc3RHTENvbG9yQ29udmVydCAqIGNvbnZlcnQpCisgICAgIGdfc3RyaW5nX2FwcGVuZF9jIChzdHIsICdcbicpOworICAgfQorIAorLSAgZ19zdHJpbmdfYXBwZW5kIChzdHIsICJcbnZhcnlpbmcgdmVjMiB2X3RleGNvb3JkO1xudm9pZCBtYWluICh2b2lkKSB7XG4iKTsKKysgIHsKKysgICAgY29uc3QgZ2NoYXIgKnZhcnlpbmcgPSBOVUxMOworKworKyAgICBpZiAoKHByb2ZpbGUgPT0gR1NUX0dMU0xfUFJPRklMRV9FUyAmJiB2ZXJzaW9uID49IEdTVF9HTFNMX1ZFUlNJT05fMzAwKQorKyAgICAgICAgfHwgKHByb2ZpbGUgPT0gR1NUX0dMU0xfUFJPRklMRV9DT1JFCisrICAgICAgICAgICAgJiYgdmVyc2lvbiA+PSBHU1RfR0xTTF9WRVJTSU9OXzE1MCkpIHsKKysgICAgICB2YXJ5aW5nID0gImluIjsKKysgICAgfSBlbHNlIHsKKysgICAgICB2YXJ5aW5nID0gInZhcnlpbmciOworKyAgICB9CisrICAgIGdfc3RyaW5nX2FwcGVuZF9wcmludGYgKHN0ciwgIlxuJXMgdmVjMiB2X3RleGNvb3JkO1xudm9pZCBtYWluICh2b2lkKSB7XG4iLAorKyAgICAgICAgdmFyeWluZyk7CisrICB9CisgICBpZiAoaW5mby0+ZnJhZ19ib2R5KSB7CisgICAgIGdfc3RyaW5nX2FwcGVuZCAoc3RyLCAidmVjMiB0ZXhjb29yZDtcbiIpOworICAgICBpZiAoY29udmVydC0+cHJpdi0+ZnJvbV90ZXh0dXJlX3RhcmdldCA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFCitAQCAtMTk3NSw3ICsyMDQ4LDcgQEAgX2NyZWF0ZV9zaGFkZXIgKEdzdEdMQ29sb3JDb252ZXJ0ICogY29udmVydCkKKyAgIHRtcCA9IGdfc3RyaW5nX2ZyZWUgKHN0ciwgRkFMU0UpOworICAgaW5mby0+ZnJhZ19wcm9nID0gX21hbmdsZV9zaGFkZXIgKHRtcCwgR0xfRlJBR01FTlRfU0hBREVSLAorICAgICAgIGluZm8tPnRlbXBsLT50YXJnZXQsIGNvbnZlcnQtPnByaXYtPmZyb21fdGV4dHVyZV90YXJnZXQsIGdsX2FwaSwKKy0gICAgICAmdmVyc2lvbiwgJnByb2ZpbGUpOworKyAgICAgIGdsX21ham9yLCBnbF9taW5vciwgJnZlcnNpb24sICZwcm9maWxlKTsKKyAgIGdfZnJlZSAodG1wKTsKKyAKKyAgIHN0cmluZ3NbMV0gPSBpbmZvLT5mcmFnX3Byb2c7CistLSAKKzEuOS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDQtZ2xjb2xvcmNvbnZlcnQtZG9uLXQtdXNlLXRoZS1wcmVkZWZpbmVkLXZhcmlhYmxlLW5hbS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDQtZ2xjb2xvcmNvbnZlcnQtZG9uLXQtdXNlLXRoZS1wcmVkZWZpbmVkLXZhcmlhYmxlLW5hbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5iNzVmNDAyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwNC1nbGNvbG9yY29udmVydC1kb24tdC11c2UtdGhlLXByZWRlZmluZWQtdmFyaWFibGUtbmFtLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gYjA2OTY3MmFjZTJiNzYyZjQwMGNhNmQzMTg1NzFjYmVkZjUxNDFmMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KK0RhdGU6IFRodSwgMzEgTWFyIDIwMTYgMjA6MDA6MzcgKzExMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzNdIGdsY29sb3Jjb252ZXJ0OiBkb24ndCB1c2UgdGhlIHByZWRlZmluZWQgdmFyaWFibGUgbmFtZQorIHNhbXBsZQorCitVc2luZyAnc2FtcGxlJyBhcyBhIHZhcmlhYmxlIG5hbWUgaXMgYW4gZXJyb3IgaW4gR0xFUzMKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbMS45LjFdCistLS0KKyBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb2xvcmNvbnZlcnQuYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb2xvcmNvbnZlcnQuYyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGNvbG9yY29udmVydC5jCitpbmRleCBmNDc4ZmFhLi5jMjM2MjRmIDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0LmMKKysrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGNvbG9yY29udmVydC5jCitAQCAtMjYxLDkgKzI2MSw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2hhZGVyX3RlbXBsIHRlbXBsX1JHQl90b19QTEFOQVJfWVVWID0KKyAgICAgIiAgICBmb3IgKGludCBqID0gMDsgaiA8IGludChjaHJvbWFfc2FtcGxpbmcueSk7IGorKykge1xuIgorICAgICAiICAgICAgaW50IG4gPSAoaSsxKSooaisxKTtcbiIKKyAgICAgIiAgICAgIGRlbHRhLnkgPSBmbG9hdChqKTtcbiIKKy0gICAgIiAgICAgIHZlYzQgc2FtcGxlID0gdGV4dHVyZTJEKHRleCwgKGNocm9tYV9wb3MgKyBkZWx0YSkgLyB1bm5vcm1hbGl6YXRpb24pLiVjJWMlYyVjO1xuIgorKyAgICAiICAgICAgdmVjNCBzID0gdGV4dHVyZTJEKHRleCwgKGNocm9tYV9wb3MgKyBkZWx0YSkgLyB1bm5vcm1hbGl6YXRpb24pLiVjJWMlYyVjO1xuIgorICAgICAgICAgICAgLyogcm9sbGluZyBhdmVyYWdlICovCistICAgICIgICAgICB1dl90ZXhlbCA9IChmbG9hdChuLTEpICogdXZfdGV4ZWwgKyBzYW1wbGUpIC8gZmxvYXQobik7XG4iCisrICAgICIgICAgICB1dl90ZXhlbCA9IChmbG9hdChuLTEpICogdXZfdGV4ZWwgKyBzKSAvIGZsb2F0KG4pO1xuIgorICAgICAiICAgIH1cbiIKKyAgICAgIiAgfVxuIgorICAgICAifVxuIgorLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDA1LWdsc2hhZGVyLWFkZC1nbEJpbmRGcmFnRGF0YUxvY2F0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwNS1nbHNoYWRlci1hZGQtZ2xCaW5kRnJhZ0RhdGFMb2NhdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41N2U5ZDFhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwNS1nbHNoYWRlci1hZGQtZ2xCaW5kRnJhZ0RhdGFMb2NhdGlvbi5wYXRjaApAQCAtMCwwICsxLDc3IEBACitGcm9tIDM4MjIxMDgwMTgxMjI5ZDUyMDUyMmEyMGJjYjE2NjNjYTE5ZjdhZmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CitEYXRlOiBUaHUsIDMxIE1hciAyMDE2IDE5OjI1OjMyICsxMTAwCitTdWJqZWN0OiBbUEFUQ0ggMi8zXSBnbHNoYWRlcjogYWRkIGdsQmluZEZyYWdEYXRhTG9jYXRpb24KKworVGhlcmUgYXJlIHNvbWUgY2FzZXMgd2hlcmUgaXQncyBuZWVkZWQgZm9yIGJpbmRpbmcgaW4vb3V0IHZhcmlhYmxlcyBpbiBzaGFkZXJzLgorZS5nLiBnbHNsIDE1MCAoZ2wgMy4yKSBkb2Vzbid0IHN1cHBvcnQgdGhlICdsYXlvdXQgKGxvY2F0aW9uID0gPyknIHNwZWNpZmllcnMgaW4KK3RoZSBzaGFkZXIgc291cmNlIHNvIHdlIGhhdmUgdG8gYmluZCB0aGVtIG91cnNlbHZlcy4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbMS45LjFdCistLS0KKyBnc3QtbGlicy9nc3QvZ2wvZ2xwcm90b3R5cGVzL3NoYWRlcnMuaCB8IDEwICsrKysrKysrKysKKyBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzaGFkZXIuYyAgICAgICAgICB8IDIwICsrKysrKysrKysrKysrKysrKysrCisgZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2hhZGVyLmggICAgICAgICAgfCAgMSArCisgMyBmaWxlcyBjaGFuZ2VkLCAzMSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ2xwcm90b3R5cGVzL3NoYWRlcnMuaCBiL2dzdC1saWJzL2dzdC9nbC9nbHByb3RvdHlwZXMvc2hhZGVycy5oCitpbmRleCA4MTdlNDc5Li42ZDgyOGRiIDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dscHJvdG90eXBlcy9zaGFkZXJzLmgKKysrKyBiL2dzdC1saWJzL2dzdC9nbC9nbHByb3RvdHlwZXMvc2hhZGVycy5oCitAQCAtMzYyLDMgKzM2MiwxMyBAQCBHU1RfR0xfRVhUX0ZVTkNUSU9OICh2b2lkLCBVbmlmb3JtTWF0cml4M3g0ZnYsCisgR1NUX0dMX0VYVF9GVU5DVElPTiAodm9pZCwgVW5pZm9ybU1hdHJpeDR4M2Z2LAorICAgICAgICAgICAgICAgICAgICAgIChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUpKQorIEdTVF9HTF9FWFRfRU5EICgpCisrCisrR1NUX0dMX0VYVF9CRUdJTiAoYmluZF9mcmFnX2RhdGEsCisrICAgICAgICAgICAgICAgICAgR1NUX0dMX0FQSV9PUEVOR0wgfCBHU1RfR0xfQVBJX09QRU5HTDMsCisrICAgICAgICAgICAgICAgICAgMywgMCwKKysgICAgICAgICAgICAgICAgICAyNTUsIDI1NSwKKysgICAgICAgICAgICAgICAgICAiXDAiLAorKyAgICAgICAgICAgICAgICAgICJcMCIpCisrR1NUX0dMX0VYVF9GVU5DVElPTiAodm9pZCwgQmluZEZyYWdEYXRhTG9jYXRpb24sCisrICAgICAgICAgICAgICAgICAgICAgKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMY2hhciAqIG5hbWUpKQorK0dTVF9HTF9FWFRfRU5EICgpCitkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2hhZGVyLmMgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzaGFkZXIuYworaW5kZXggOWQ5Njc4NC4uOWYwOTIzNiAxMDA2NDQKKy0tLSBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbHNoYWRlci5jCisrKysgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzaGFkZXIuYworQEAgLTEzMDYsMyArMTMwNiwyMyBAQCBnc3RfZ2xfc2hhZGVyX2JpbmRfYXR0cmlidXRlX2xvY2F0aW9uIChHc3RHTFNoYWRlciAqIHNoYWRlciwgR0x1aW50IGluZGV4LAorIAorICAgZ2wtPkJpbmRBdHRyaWJMb2NhdGlvbiAocHJpdi0+cHJvZ3JhbV9oYW5kbGUsIGluZGV4LCBuYW1lKTsKKyB9CisrCisrdm9pZAorK2dzdF9nbF9zaGFkZXJfYmluZF9mcmFnX2RhdGFfbG9jYXRpb24gKEdzdEdMU2hhZGVyICogc2hhZGVyLAorKyAgICBndWludCBpbmRleCwgY29uc3QgZ2NoYXIgKiBuYW1lKQorK3sKKysgIEdzdEdMU2hhZGVyUHJpdmF0ZSAqcHJpdjsKKysgIEdzdEdMRnVuY3MgKmdsOworKworKyAgZ19yZXR1cm5faWZfZmFpbCAoc2hhZGVyICE9IE5VTEwpOworKyAgaWYgKCFfZW5zdXJlX3Byb2dyYW0gKHNoYWRlcikpCisrICAgIGdfcmV0dXJuX2lmX2ZhaWwgKHNoYWRlci0+cHJpdi0+cHJvZ3JhbV9oYW5kbGUpOworKyAgcHJpdiA9IHNoYWRlci0+cHJpdjsKKysgIGdsID0gc2hhZGVyLT5jb250ZXh0LT5nbF92dGFibGU7CisrICBnX3JldHVybl9pZl9mYWlsIChnbC0+QmluZEZyYWdEYXRhTG9jYXRpb24pOworKworKyAgR1NUX1RSQUNFX09CSkVDVCAoc2hhZGVyLCAiYmluZGluZyBwcm9ncmFtICVpIGZyYWcgZGF0YSBcJyVzXCcgbG9jYXRpb24gJWkiLAorKyAgICAgIChpbnQpIHByaXYtPnByb2dyYW1faGFuZGxlLCBuYW1lLCBpbmRleCk7CisrCisrICBnbC0+QmluZEZyYWdEYXRhTG9jYXRpb24gKHByaXYtPnByb2dyYW1faGFuZGxlLCBpbmRleCwgbmFtZSk7CisrfQorZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbHNoYWRlci5oIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2hhZGVyLmgKK2luZGV4IDIxNDEwZTIuLjIyMDBiODkgMTAwNjQ0CistLS0gYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzaGFkZXIuaAorKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2hhZGVyLmgKK0BAIC0xMDQsNiArMTA0LDcgQEAgdm9pZCBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80eDNmdiAoR3N0R0xTaGFkZXIgKnNoYWRlciwgY29uc3QgZ2NoYXIgKm4KKyAKKyBnaW50IGdzdF9nbF9zaGFkZXJfZ2V0X2F0dHJpYnV0ZV9sb2NhdGlvbiAgKEdzdEdMU2hhZGVyICpzaGFkZXIsIGNvbnN0IGdjaGFyICpuYW1lKTsKKyB2b2lkIGdzdF9nbF9zaGFkZXJfYmluZF9hdHRyaWJ1dGVfbG9jYXRpb24gKEdzdEdMU2hhZGVyICogc2hhZGVyLCBndWludCBpbmRleCwgY29uc3QgZ2NoYXIgKiBuYW1lKTsKKyt2b2lkIGdzdF9nbF9zaGFkZXJfYmluZF9mcmFnX2RhdGFfbG9jYXRpb24gKEdzdEdMU2hhZGVyICogc2hhZGVyLCBndWludCBpbmRleCwgY29uc3QgZ2NoYXIgKiBuYW1lKTsKKyAKKyBHX0VORF9ERUNMUworIAorLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDA2LWdsY29sb3Jjb252ZXJ0LUdMRVMzLWRlcHJlY2F0ZXMtdGV4dHVyZTJELWFuZC1pdC1kb2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDA2LWdsY29sb3Jjb252ZXJ0LUdMRVMzLWRlcHJlY2F0ZXMtdGV4dHVyZTJELWFuZC1pdC1kb2UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNzllZjRjOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDYtZ2xjb2xvcmNvbnZlcnQtR0xFUzMtZGVwcmVjYXRlcy10ZXh0dXJlMkQtYW5kLWl0LWRvZS5wYXRjaApAQCAtMCwwICsxLDUxIEBACitGcm9tIDc2NGZkNjlmODQ4MmVjYTlmOTI1Y2VmZTcyZWJhZTA5MGFlNTlkNDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/U2ViYXN0aWFuPTIwRHI9QzM9QjZnZT89IDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorRGF0ZTogVHVlLCAxOSBBcHIgMjAxNiAxOToyNzozMyArMDMwMAorU3ViamVjdDogW1BBVENIIDMvM10gZ2xjb2xvcmNvbnZlcnQ6IEdMRVMzIGRlcHJlY2F0ZXMgdGV4dHVyZTJEKCkgYW5kIGl0IGRvZXMKKyBub3Qgd29yayBhdCBhbGwgaW4gbmV3ZXIgdmVyc2lvbnMgdGhhbiAzLjMKKworVXNlIHRoZSBuZXdlciB0ZXh0dXJlKCkgZnVuY3Rpb24gaW5zdGVhZC4gVGhpcyBmaXhlcyBnbGltYWdlc2luayBhbmQgb3RoZXIKK3RoaW5ncyBvbiB2YXJpb3VzIEFuZHJvaWQgZGV2aWNlcy4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbMS45LjFdCisKK2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjUyNjYKKy0tLQorIGdzdC1saWJzL2dzdC9nbC9nc3RnbGNvbG9yY29udmVydC5jIHwgNyArKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbGNvbG9yY29udmVydC5jIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0LmMKK2luZGV4IGMyMzYyNGYuLmY0NzJkNWQgMTAwNjQ0CistLS0gYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb2xvcmNvbnZlcnQuYworKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0LmMKK0BAIC0xNzE2LDcgKzE3MTYsNyBAQCBfdW5iaW5kX2J1ZmZlciAoR3N0R0xDb2xvckNvbnZlcnQgKiBjb252ZXJ0KQorIAorIHN0YXRpYyBnY2hhciAqCisgX21hbmdsZV90ZXh0dXJlX2FjY2VzcyAoY29uc3QgZ2NoYXIgKiBzdHIsIEdzdEdMVGV4dHVyZVRhcmdldCBmcm9tLAorLSAgICBHc3RHTFRleHR1cmVUYXJnZXQgdG8sIEdzdEdMQVBJIGdsX2FwaSkKKysgICAgR3N0R0xUZXh0dXJlVGFyZ2V0IHRvLCBHc3RHTEFQSSBnbF9hcGksIGd1aW50IGdsX21ham9yLCBndWludCBnbF9taW5vcikKKyB7CisgICBjb25zdCBnY2hhciAqZnJvbV9zdHIgPSBOVUxMLCAqdG9fc3RyID0gTlVMTDsKKyAgIGdjaGFyICpyZXQsICp0bXA7CitAQCAtMTczMCw3ICsxNzMwLDggQEAgX21hbmdsZV90ZXh0dXJlX2FjY2VzcyAoY29uc3QgZ2NoYXIgKiBzdHIsIEdzdEdMVGV4dHVyZVRhcmdldCBmcm9tLAorICAgaWYgKGZyb20gPT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUykKKyAgICAgZnJvbV9zdHIgPSAidGV4dHVyZTJEIjsKKyAKKy0gIGlmIChnbF9hcGkgJiBHU1RfR0xfQVBJX09QRU5HTDMpIHsKKysgIGlmICgoZ2xfYXBpICYgR1NUX0dMX0FQSV9PUEVOR0wzKSB8fCAoZ2xfYXBpICYgR1NUX0dMX0FQSV9HTEVTMgorKyAgICAgICAgICAmJiBnbF9tYWpvciA+PSAzKSkgeworICAgICB0b19zdHIgPSAidGV4dHVyZSI7CisgICB9IGVsc2UgeworICAgICBpZiAodG8gPT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEKQorQEAgLTE4OTgsNyArMTg5OSw3IEBAIF9tYW5nbGVfc2hhZGVyIChjb25zdCBnY2hhciAqIHN0ciwgZ3VpbnQgc2hhZGVyX3R5cGUsIEdzdEdMVGV4dHVyZVRhcmdldCBmcm9tLAorIAorICAgX21hbmdsZV92ZXJzaW9uX3Byb2ZpbGVfZnJvbV9nbF9hcGkgKGdsX2FwaSwgZ2xfbWFqb3IsIGdsX21pbm9yLCB2ZXJzaW9uLAorICAgICAgIHByb2ZpbGUpOworLSAgdG1wID0gX21hbmdsZV90ZXh0dXJlX2FjY2VzcyAoc3RyLCBmcm9tLCB0bywgZ2xfYXBpKTsKKysgIHRtcCA9IF9tYW5nbGVfdGV4dHVyZV9hY2Nlc3MgKHN0ciwgZnJvbSwgdG8sIGdsX2FwaSwgZ2xfbWFqb3IsIGdsX21pbm9yKTsKKyAgIHRtcDIgPSBfbWFuZ2xlX3NhbXBsZXJfdHlwZSAodG1wLCBmcm9tLCB0byk7CisgICBnX2ZyZWUgKHRtcCk7CisgICB0bXAgPQorLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDA4LWdsLWltcGxlbWVudC1Hc3RHTE1lbW9yeUVHTC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDgtZ2wtaW1wbGVtZW50LUdzdEdMTWVtb3J5RUdMLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2NzM4MWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDA4LWdsLWltcGxlbWVudC1Hc3RHTE1lbW9yeUVHTC5wYXRjaApAQCAtMCwwICsxLDQ5NSBAQAorRnJvbSA4MDZiYmU3NWIwYjY5NDdmNTg5YmNlMzk2MGMyOGZlZTUxYjVjNmMyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogR3dhbmcgWW9vbiBId2FuZyA8eW9vbkBpZ2FsaWEuY29tPgorRGF0ZTogVGh1LCAyMSBKYW4gMjAxNiAyMjoxODoxNyArMDkwMAorU3ViamVjdDogW1BBVENIXSBnbDogaW1wbGVtZW50IEdzdEdMTWVtb3J5RUdMCisKK0JlY2F1c2UgY3VycmVudCBHc3RFR0xJbWFnZU1lbW9yeSBkb2VzIG5vdCBpbmhlcml0IEdzdEdMTWVtb3J5LCBHTFVwbG9hZAorYWxsb2NhdGVzIGFkZGl0aW9uYWwgR0xNZW1vcnkgYW5kIHVwbG9hZCB0aGUgZGVjb2RlZCBjb250ZW50cyBmcm9tIHRoZSBkZWNvZGVyCit3aGljaCB1c2VzIEVHTEltYWdlIChlLmcuIGdzdC1vbXggaW4gUlBpKS4KKworVGhpcyB3b3JrIGFkZHMgR3N0R0xNZW1vcnlFR0wgdG8gYXZvaWQgdGhpcyBvdmVyaGVhZC4gRGVjb2RlcnMgYWxsb2NhdGUKK0dzdEdMTWVtb3J5RUdMIGFuZCBkZWNvZGUgaXRzIGNvbnRlbnRzIHRvIHRoZSBFR0xJbWFnZSBvZiBHc3RHTE1lbW9yeUVHTC4gIEFuZAorR0xVcGxvYWQgdXNlcyB0aGlzIG1lbW9yeSB3aXRob3V0IGFsbG9jYXRpb24gb2YgYWRkaXRpb25hbCB0ZXh0dXJlcyBhbmQgYmxpdAorb3BlcmF0aW9ucy4KKworaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MDkxNgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCisgZ3N0LWxpYnMvZ3N0L2dsL2VnbC9NYWtlZmlsZS5hbSAgICAgICAgfCAgIDIgKworIGdzdC1saWJzL2dzdC9nbC9lZ2wvZ3N0Z2xkaXNwbGF5X2VnbC5jIHwgICAyICsKKyBnc3QtbGlicy9nc3QvZ2wvZWdsL2dzdGdsbWVtb3J5ZWdsLmMgICB8IDI0MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBnc3QtbGlicy9nc3QvZ2wvZWdsL2dzdGdsbWVtb3J5ZWdsLmggICB8IDEwOCArKysrKysrKysrKysrKysKKyBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xfZndkLmggICAgICAgICAgICB8ICAgNCArCisgZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZGlzcGxheS5jICAgICAgICAgfCAgIDIgKworIGdzdC1saWJzL2dzdC9nbC9nc3RnbHVwbG9hZC5jICAgICAgICAgIHwgICA4ICsrCisgNyBmaWxlcyBjaGFuZ2VkLCAzNjcgaW5zZXJ0aW9ucygrKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBnc3QtbGlicy9nc3QvZ2wvZWdsL2dzdGdsbWVtb3J5ZWdsLmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgZ3N0LWxpYnMvZ3N0L2dsL2VnbC9nc3RnbG1lbW9yeWVnbC5oCisKK2RpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZWdsL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L2dsL2VnbC9NYWtlZmlsZS5hbQoraW5kZXggYjgwODE3OC4uODc4ZjE2YyAxMDA2NDQKKy0tLSBhL2dzdC1saWJzL2dzdC9nbC9lZ2wvTWFrZWZpbGUuYW0KKysrKyBiL2dzdC1saWJzL2dzdC9nbC9lZ2wvTWFrZWZpbGUuYW0KK0BAIC01LDYgKzUsNyBAQCBub2luc3RfTFRMSUJSQVJJRVMgPSBsaWJnc3RnbC1lZ2wubGEKKyBsaWJnc3RnbF9lZ2xfbGFfU09VUkNFUyA9IFwKKyAJZ3N0Z2xkaXNwbGF5X2VnbC5jIFwKKyAJZ3N0Z2xjb250ZXh0X2VnbC5jIFwKKysJZ3N0Z2xtZW1vcnllZ2wuYyBcCisgCWdzdGVnbGltYWdlbWVtb3J5LmMKKyAKKyBub2luc3RfSEVBREVSUyA9CitAQCAtMTMsNiArMTQsNyBAQCBsaWJnc3RnbF9lZ2xpbmNsdWRlZGlyID0gJChpbmNsdWRlZGlyKS9nc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAvZ3N0L2dsL2VnbAorIGxpYmdzdGdsX2VnbGluY2x1ZGVfSEVBREVSUyA9IFwKKyAJZ3N0Z2xkaXNwbGF5X2VnbC5oIFwKKyAJZ3N0Z2xjb250ZXh0X2VnbC5oIFwKKysJZ3N0Z2xtZW1vcnllZ2wuaCBcCisgCWdzdGVnbGltYWdlbWVtb3J5LmggXAorIAlnc3RlZ2wuaAorIAorZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9lZ2wvZ3N0Z2xkaXNwbGF5X2VnbC5jIGIvZ3N0LWxpYnMvZ3N0L2dsL2VnbC9nc3RnbGRpc3BsYXlfZWdsLmMKK2luZGV4IDlhY2Y0ZjAuLjIwODE2YzIgMTAwNjQ0CistLS0gYS9nc3QtbGlicy9nc3QvZ2wvZWdsL2dzdGdsZGlzcGxheV9lZ2wuYworKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2VnbC9nc3RnbGRpc3BsYXlfZWdsLmMKK0BAIC0yNCw2ICsyNCw3IEBACisgCisgI2luY2x1ZGUgPGdzdC9nbC9lZ2wvZ3N0Z2xkaXNwbGF5X2VnbC5oPgorICNpbmNsdWRlIDxnc3QvZ2wvZWdsL2dzdGVnbGltYWdlbWVtb3J5Lmg+CisrI2luY2x1ZGUgPGdzdC9nbC9lZ2wvZ3N0Z2xtZW1vcnllZ2wuaD4KKyAKKyBHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChnc3RfZ2xfZGlzcGxheV9kZWJ1Zyk7CisgI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgZ3N0X2dsX2Rpc3BsYXlfZGVidWcKK0BAIC01MSw2ICs1Miw3IEBAIGdzdF9nbF9kaXNwbGF5X2VnbF9pbml0IChHc3RHTERpc3BsYXlFR0wgKiBkaXNwbGF5X2VnbCkKKyAgIGRpc3BsYXlfZWdsLT5mb3JlaWduX2Rpc3BsYXkgPSBGQUxTRTsKKyAKKyAgIGdzdF9lZ2xfaW1hZ2VfbWVtb3J5X2luaXQgKCk7CisrICBnc3RfZ2xfbWVtb3J5X2VnbF9pbml0X29uY2UgKCk7CisgfQorIAorIHN0YXRpYyB2b2lkCitkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2VnbC9nc3RnbG1lbW9yeWVnbC5jIGIvZ3N0LWxpYnMvZ3N0L2dsL2VnbC9nc3RnbG1lbW9yeWVnbC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMDNjZjQzMgorLS0tIC9kZXYvbnVsbAorKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2VnbC9nc3RnbG1lbW9yeWVnbC5jCitAQCAtMCwwICsxLDI0MSBAQAorKy8qCisrICogR1N0cmVhbWVyCisrICogQ29weXJpZ2h0IChDKSAyMDEyIENvbGxhYm9yYSBMdGQuCisrICogICBAYXV0aG9yOiBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KKysgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSnVsaWVuIElzb3JjZSA8anVsaWVuLmlzb3JjZUBnbWFpbC5jb20+CisrICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYQorKyAqICAgIEF1dGhvcjogR3dhbmcgWW9vbiBId2FuZyA8eW9vbkBpZ2FsaWEuY29tPgorKyAqCisrICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisrICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisrICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyAqCisrICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAqCisrICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKysgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKyAqLworKworKyNpZmRlZiBIQVZFX0NPTkZJR19ICisrI2luY2x1ZGUgImNvbmZpZy5oIgorKyNlbmRpZgorKworKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysKKysjaW5jbHVkZSA8Z3N0L2dsL2VnbC9nc3RnbG1lbW9yeWVnbC5oPgorKworK3N0YXRpYyBHc3RBbGxvY2F0b3IgKl9nbF9tZW1vcnlfZWdsX2FsbG9jYXRvcjsKKysKKytHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChHU1RfQ0FUX0dMX01FTU9SWSk7CisrI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgR1NUX0NBVF9HTF9NRU1PUlkKKysKKysjZGVmaW5lIHBhcmVudF9jbGFzcyBnc3RfZ2xfbWVtb3J5X2VnbF9hbGxvY2F0b3JfcGFyZW50X2NsYXNzCisrR19ERUZJTkVfVFlQRSAoR3N0R0xNZW1vcnlFR0xBbGxvY2F0b3IsIGdzdF9nbF9tZW1vcnlfZWdsX2FsbG9jYXRvciwKKysgICAgR1NUX1RZUEVfR0xfTUVNT1JZX0FMTE9DQVRPUik7CisrCisrZ2Jvb2xlYW4KKytnc3RfaXNfZ2xfbWVtb3J5X2VnbCAoR3N0TWVtb3J5ICogbWVtKQorK3sKKysgIHJldHVybiBtZW0gIT0gTlVMTCAmJiBtZW0tPmFsbG9jYXRvciAhPSBOVUxMCisrICAgICAgJiYgZ190eXBlX2lzX2EgKEdfT0JKRUNUX1RZUEUgKG1lbS0+YWxsb2NhdG9yKSwKKysgICAgICBHU1RfVFlQRV9HTF9NRU1PUllfRUdMX0FMTE9DQVRPUik7CisrfQorKworK3N0YXRpYyBHc3RHTE1lbW9yeUVHTCAqCisrX2dsX21lbV9nZXRfcGFyZW50IChHc3RHTE1lbW9yeUVHTCAqIGdsX21lbSkKKyt7CisrICBHc3RHTE1lbW9yeUVHTCAqcGFyZW50ID0gKEdzdEdMTWVtb3J5RUdMICopZ2xfbWVtLT5tZW0ubWVtLm1lbS5wYXJlbnQ7CisrICByZXR1cm4gcGFyZW50ID8gcGFyZW50IDogZ2xfbWVtOworK30KKysKKytFR0xJbWFnZUtIUgorK2dzdF9nbF9tZW1vcnlfZWdsX2dldF9pbWFnZSAoR3N0R0xNZW1vcnlFR0wgKiBtZW0pCisreworKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGdzdF9pc19nbF9tZW1vcnlfZWdsIChHU1RfTUVNT1JZX0NBU1QgKG1lbSkpLAorKyAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9OT19JTUFHRV9LSFIpOworKyAgcmV0dXJuIF9nbF9tZW1fZ2V0X3BhcmVudChtZW0pLT5pbWFnZTsKKyt9CisrCisrRUdMRGlzcGxheQorK2dzdF9nbF9tZW1vcnlfZWdsX2dldF9kaXNwbGF5IChHc3RHTE1lbW9yeUVHTCAqIG1lbSkKKyt7CisrICBnX3JldHVybl92YWxfaWZfZmFpbCAoZ3N0X2lzX2dsX21lbW9yeV9lZ2wgKEdTVF9NRU1PUllfQ0FTVCAobWVtKSksIE5VTEwpOworKyAgcmV0dXJuIEdTVF9HTF9DT05URVhUX0VHTChfZ2xfbWVtX2dldF9wYXJlbnQobWVtKSktPmVnbF9kaXNwbGF5OworK30KKysKKytHc3RWaWRlb0dMVGV4dHVyZU9yaWVudGF0aW9uCisrZ3N0X2dsX21lbW9yeV9lZ2xfZ2V0X29yaWVudGF0aW9uIChHc3RHTE1lbW9yeUVHTCAqIG1lbSkKKyt7CisrICBnX3JldHVybl92YWxfaWZfZmFpbCAoZ3N0X2lzX2dsX21lbW9yeV9lZ2wgKEdTVF9NRU1PUllfQ0FTVCAobWVtKSksCisrICAgICAgR1NUX1ZJREVPX0dMX1RFWFRVUkVfT1JJRU5UQVRJT05fWF9OT1JNQUxfWV9OT1JNQUwpOworKworKyAgcmV0dXJuIF9nbF9tZW1fZ2V0X3BhcmVudChtZW0pLT5vcmllbnRhdGlvbjsKKyt9CisrCisrdm9pZAorK2dzdF9nbF9tZW1vcnlfZWdsX3NldF9vcmllbnRhdGlvbiAoR3N0R0xNZW1vcnlFR0wgKiBtZW0sCisrICAgIEdzdFZpZGVvR0xUZXh0dXJlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCisreworKyAgZ19yZXR1cm5faWZfZmFpbCAoZ3N0X2lzX2dsX21lbW9yeV9lZ2wgKEdTVF9NRU1PUllfQ0FTVCAobWVtKSkpOworKworKyAgX2dsX21lbV9nZXRfcGFyZW50KG1lbSktPm9yaWVudGF0aW9uID0gb3JpZW50YXRpb247CisrfQorKworK3N0YXRpYyBHc3RNZW1vcnkgKgorK19nbF9tZW1fYWxsb2MgKEdzdEFsbG9jYXRvciAqIGFsbG9jYXRvciwgZ3NpemUgc2l6ZSwKKysgICAgICAgICAgICAgICBHc3RBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zKQorK3sKKysgIGdfd2FybmluZyAoIlVzZSBnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2NhdG9yX2FsbG9jKCkgdG8gYWxsb2NhdGUgZnJvbSB0aGlzICIKKysgICAgICAiR3N0R0xNZW1vcnlFR0wgYWxsb2NhdG9yIik7CisrCisrICByZXR1cm4gTlVMTDsKKyt9CisrCisrc3RhdGljIHZvaWQKKytfZ2xfbWVtX2Rlc3Ryb3kgKEdzdEdMTWVtb3J5RUdMICogbWVtKQorK3sKKysgIC8qIFNoYXJlZCBtZW1vcnkgc2hvdWxkIG5vdCBkZXN0cm95IGFsbCB0aGUgZGF0YSAqLworKyAgaWYgKCFtZW0tPm1lbS5tZW0ubWVtLnBhcmVudCkgeworKyAgICBHc3RHTENvbnRleHRFR0wgKmNvbnRleHQgPSBHU1RfR0xfQ09OVEVYVF9FR0wobWVtLT5tZW0ubWVtLmNvbnRleHQpOworKyAgICBjb250ZXh0LT5lZ2xEZXN0cm95SW1hZ2UgKGNvbnRleHQtPmVnbF9kaXNwbGF5LCBtZW0tPmltYWdlKTsKKysgIH0KKysKKysgIEdTVF9HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1JfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmRlc3Ryb3kgKChHc3RHTEJhc2VNZW1vcnkKKysgICAgICAgICAgKikgbWVtKTsKKyt9CisrCisrc3RhdGljIHZvaWQKKytfZ2xfbWVtX2luaXQgKEdzdEdMTWVtb3J5RUdMICogbWVtLCBHc3RBbGxvY2F0b3IgKiBhbGxvY2F0b3IsCisrICAgIEdzdE1lbW9yeSAqIHBhcmVudCwgR3N0R0xDb250ZXh0ICogY29udGV4dCwgR3N0R0xUZXh0dXJlVGFyZ2V0IHRhcmdldCwKKysgICAgR3N0QWxsb2NhdGlvblBhcmFtcyAqIHBhcmFtcywgR3N0VmlkZW9JbmZvICogaW5mbywKKysgICAgZ3VpbnQgcGxhbmUsIEdzdFZpZGVvQWxpZ25tZW50ICogdmFsaWduLCBncG9pbnRlciB1c2VyX2RhdGEsCisrICAgIEdEZXN0cm95Tm90aWZ5IG5vdGlmeSkKKyt7CisrICBnc3RfZ2xfbWVtb3J5X2luaXQgKChHc3RHTE1lbW9yeSAqKSBtZW0sIGFsbG9jYXRvciwgcGFyZW50LAorKyAgICAgIGNvbnRleHQsIHRhcmdldCwgcGFyYW1zLCBpbmZvLCBwbGFuZSwgdmFsaWduLCB1c2VyX2RhdGEsIG5vdGlmeSk7CisrfQorKworK3N0YXRpYyBHc3RHTE1lbW9yeUVHTCAqCisrX2dsX21lbV9lZ2xfYWxsb2MgKEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvciAqIGFsbG9jYXRvciwKKysgICAgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgKiBwYXJhbXMpCisreworKyAgZ3VpbnQgYWxsb2NfZmxhZ3MgPSBwYXJhbXMtPnBhcmVudC5hbGxvY19mbGFnczsKKysgIEdzdEdMTWVtb3J5RUdMICptZW07CisrCisrICBnX3JldHVybl92YWxfaWZfZmFpbCAoYWxsb2NfZmxhZ3MgJiBHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19WSURFTywKKysgICAgICBOVUxMKTsKKysgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsICgoYWxsb2NfZmxhZ3MgJgorKyAgICAgIEdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1dSQVBfR1BVX0hBTkRMRSkgPT0gMCwgTlVMTCk7CisrICBnX3JldHVybl92YWxfaWZfZmFpbCAoKGFsbG9jX2ZsYWdzICYKKysgICAgICBHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19XUkFQX1NZU01FTSkgPT0gMCwgTlVMTCk7CisrCisrICBtZW0gPSBnX25ldzAgKEdzdEdMTWVtb3J5RUdMLCAxKTsKKysgIG1lbS0+aW1hZ2UgPSBFR0xfTk9fSU1BR0VfS0hSOworKworKyAgX2dsX21lbV9pbml0IChtZW0sIEdTVF9BTExPQ0FUT1JfQ0FTVCAoYWxsb2NhdG9yKSwgTlVMTCwKKysgICAgICBwYXJhbXMtPnBhcmVudC5jb250ZXh0LCBwYXJhbXMtPnRhcmdldCwgcGFyYW1zLT5wYXJlbnQuYWxsb2NfcGFyYW1zLAorKyAgICAgIHBhcmFtcy0+dl9pbmZvLCBwYXJhbXMtPnBsYW5lLCBwYXJhbXMtPnZhbGlnbiwgcGFyYW1zLT5wYXJlbnQudXNlcl9kYXRhLAorKyAgICAgIHBhcmFtcy0+cGFyZW50Lm5vdGlmeSk7CisrCisrICByZXR1cm4gbWVtOworK30KKysKKytzdGF0aWMgZ2Jvb2xlYW4KKytfZ2xfbWVtX2NyZWF0ZSAoR3N0R0xNZW1vcnlFR0wgKiBnbF9tZW0sIEdFcnJvciAqKiBlcnJvcikKKyt7CisrICBHc3RHTENvbnRleHRFR0wgKmNvbnRleHQgPSBHU1RfR0xfQ09OVEVYVF9FR0wgKGdsX21lbS0+bWVtLm1lbS5jb250ZXh0KTsKKysgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNsYXNzICphbGxvY19jbGFzczsKKysKKysgIGlmICghZ3N0X2dsX2NvbnRleHRfY2hlY2tfZmVhdHVyZSAoR1NUX0dMX0NPTlRFWFQgKGNvbnRleHQpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRUdMX0tIUl9pbWFnZV9iYXNlIikpIHsKKysgICAgZ19zZXRfZXJyb3IgKGVycm9yLCBHU1RfR0xfQ09OVEVYVF9FUlJPUiwgR1NUX0dMX0NPTlRFWFRfRVJST1JfV1JPTkdfQVBJLAorKyAgICAgICAgICAgICAgICAgIkVHTF9LSFJfaW1hZ2VfYmFzZSBpcyBub3Qgc3VwcG9ydGVkIik7CisrICAgIHJldHVybiBGQUxTRTsKKysgIH0KKysKKysgIGFsbG9jX2NsYXNzID0gR1NUX0dMX0JBU0VfTUVNT1JZX0FMTE9DQVRPUl9DTEFTUyAocGFyZW50X2NsYXNzKTsKKysgIGlmICghYWxsb2NfY2xhc3MtPmNyZWF0ZSAoKEdzdEdMQmFzZU1lbW9yeSAqKSBnbF9tZW0sIGVycm9yKSkKKysgICAgcmV0dXJuIEZBTFNFOworKworKyAgZ2xfbWVtLT5pbWFnZSA9IGNvbnRleHQtPmVnbENyZWF0ZUltYWdlIChjb250ZXh0LT5lZ2xfZGlzcGxheSwKKysgICAgICBjb250ZXh0LT5lZ2xfY29udGV4dCwgRUdMX0dMX1RFWFRVUkVfMkRfS0hSLAorKyAgICAgIChFR0xDbGllbnRCdWZmZXIpIEdTSVpFX1RPX1BPSU5URVIgKGdsX21lbS0+bWVtLnRleF9pZCksIE5VTEwpOworKworKyAgR1NUX1RSQUNFICgiR2VuZXJhdGluZyBFR0xJbWFnZSBoYW5kbGU6JXAgZnJvbSBhIHRleHR1cmU6JXUiLAorKyAgICAgICAgICAgICAgZ2xfbWVtLT5pbWFnZSwgZ2xfbWVtLT5tZW0udGV4X2lkKTsKKysKKysgIGlmIChlZ2xHZXRFcnJvciAoKSAhPSBFR0xfU1VDQ0VTUykgeworKyAgICBnX3NldF9lcnJvciAoZXJyb3IsIEdTVF9HTF9DT05URVhUX0VSUk9SLCBHU1RfR0xfQ09OVEVYVF9FUlJPUl9GQUlMRUQsCisrICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGNyZWF0ZSBFR0xJbWFnZSIpOworKyAgICByZXR1cm4gRkFMU0U7CisrICB9CisrCisrICByZXR1cm4gVFJVRTsKKyt9CisrCisrc3RhdGljIEdzdE1lbW9yeSAqCisrX2dsX21lbV9jb3B5IChHc3RHTE1lbW9yeUVHTCAqIHNyYywgZ3NzaXplIG9mZnNldCwgZ3NzaXplIHNpemUpCisreworKyAgR1NUX0NBVF9FUlJPUiAoR1NUX0NBVF9HTF9NRU1PUlksICJHc3RHTE1lbW9yeUVHTCBkb2VzIG5vdCBzdXBwb3J0IGNvcHkiKTsKKysgIHJldHVybiBOVUxMOworK30KKysKKytzdGF0aWMgdm9pZAorK2dzdF9nbF9tZW1vcnlfZWdsX2FsbG9jYXRvcl9jbGFzc19pbml0IChHc3RHTE1lbW9yeUVHTEFsbG9jYXRvckNsYXNzICoga2xhc3MpCisreworKyAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ2xhc3MgKmdsX2Jhc2U7CisrICBHc3RHTE1lbW9yeUFsbG9jYXRvckNsYXNzICpnbF90ZXg7CisrICBHc3RBbGxvY2F0b3JDbGFzcyAqYWxsb2NhdG9yX2NsYXNzOworKworKyAgZ2xfdGV4ID0gKEdzdEdMTWVtb3J5QWxsb2NhdG9yQ2xhc3MgKikga2xhc3M7CisrICBnbF9iYXNlID0gKEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNsYXNzICopIGtsYXNzOworKyAgYWxsb2NhdG9yX2NsYXNzID0gKEdzdEFsbG9jYXRvckNsYXNzICopIGtsYXNzOworKworKyAgZ2xfYmFzZS0+YWxsb2MgPSAoR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQWxsb2NGdW5jdGlvbikgX2dsX21lbV9lZ2xfYWxsb2M7CisrICBnbF9iYXNlLT5jcmVhdGUgPSAoR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ3JlYXRlRnVuY3Rpb24pIF9nbF9tZW1fY3JlYXRlOworKyAgZ2xfYmFzZS0+ZGVzdHJveSA9IChHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JEZXN0cm95RnVuY3Rpb24pIF9nbF9tZW1fZGVzdHJveTsKKysgIGdsX3RleC0+Y29weSA9IChHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDb3B5RnVuY3Rpb24pIF9nbF9tZW1fY29weTsKKysKKysgIGFsbG9jYXRvcl9jbGFzcy0+YWxsb2MgPSBfZ2xfbWVtX2FsbG9jOworK30KKysKKytzdGF0aWMgdm9pZAorK2dzdF9nbF9tZW1vcnlfZWdsX2FsbG9jYXRvcl9pbml0IChHc3RHTE1lbW9yeUVHTEFsbG9jYXRvciAqIGFsbG9jYXRvcikKKyt7CisrICBHc3RBbGxvY2F0b3IgKmFsbG9jID0gR1NUX0FMTE9DQVRPUl9DQVNUIChhbGxvY2F0b3IpOworKworKyAgYWxsb2MtPm1lbV90eXBlID0gR1NUX0dMX01FTU9SWV9FR0xfQUxMT0NBVE9SX05BTUU7CisrCisrICBHU1RfT0JKRUNUX0ZMQUdfU0VUIChhbGxvY2F0b3IsIEdTVF9BTExPQ0FUT1JfRkxBR19DVVNUT01fQUxMT0MpOworK30KKysKKysvKioKKysgKiBnc3RfZ2xfbWVtb3J5X2VnbF9pbml0X29uY2U6CisrICoKKysgKiBJbml0aWFsaXplcyB0aGUgR0wgTWVtb3J5IGFsbG9jYXRvci4gSXQgaXMgc2FmZSB0byBjYWxsIHRoaXMgZnVuY3Rpb24KKysgKiBtdWx0aXBsZSB0aW1lcy4gIFRoaXMgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFueSBvdGhlciBHc3RHTE1lbW9yeUVHTCBvcGVyYXRpb24uCisrICovCisrdm9pZAorK2dzdF9nbF9tZW1vcnlfZWdsX2luaXRfb25jZSAodm9pZCkKKyt7CisrICBzdGF0aWMgdm9sYXRpbGUgZ3NpemUgX2luaXQgPSAwOworKworKyAgaWYgKGdfb25jZV9pbml0X2VudGVyICgmX2luaXQpKSB7CisrICAgIGdzdF9nbF9tZW1vcnlfaW5pdF9vbmNlICgpOworKworKyAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoR1NUX0NBVF9HTF9NRU1PUlksICJnbG1lbW9yeSIsIDAsCisrICAgICAgICAiT3BlbkdMIFRleHR1cmUgd2l0aCBFR0xJbWFnZSBtZW1vcnkiKTsKKysKKysgICAgX2dsX21lbW9yeV9lZ2xfYWxsb2NhdG9yID0gZ19vYmplY3RfbmV3IChHU1RfVFlQRV9HTF9NRU1PUllfRUdMX0FMTE9DQVRPUiwgTlVMTCk7CisrCisrICAgIGdzdF9hbGxvY2F0b3JfcmVnaXN0ZXIgKEdTVF9HTF9NRU1PUllfRUdMX0FMTE9DQVRPUl9OQU1FLAorKyAgICAgICAgZ3N0X29iamVjdF9yZWYgKF9nbF9tZW1vcnlfZWdsX2FsbG9jYXRvcikpOworKyAgICBnX29uY2VfaW5pdF9sZWF2ZSAoJl9pbml0LCAxKTsKKysgIH0KKyt9CitkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2VnbC9nc3RnbG1lbW9yeWVnbC5oIGIvZ3N0LWxpYnMvZ3N0L2dsL2VnbC9nc3RnbG1lbW9yeWVnbC5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNzI1NmQzMworLS0tIC9kZXYvbnVsbAorKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2VnbC9nc3RnbG1lbW9yeWVnbC5oCitAQCAtMCwwICsxLDEwOCBAQAorKy8qCisrICogR1N0cmVhbWVyCisrICogQ29weXJpZ2h0IChDKSAyMDEyIENvbGxhYm9yYSBMdGQuCisrICogICBAYXV0aG9yOiBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KKysgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSnVsaWVuIElzb3JjZSA8anVsaWVuLmlzb3JjZUBnbWFpbC5jb20+CisrICoKKysgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKysgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrICoKKysgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisrICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisrICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisrICovCisrCisrI2lmbmRlZiBfR1NUX0dMX01FTU9SWV9FR0xfSF8KKysjZGVmaW5lIF9HU1RfR0xfTUVNT1JZX0VHTF9IXworKworKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisrI2luY2x1ZGUgPGdzdC9nc3RhbGxvY2F0b3IuaD4KKysjaW5jbHVkZSA8Z3N0L2dzdG1lbW9yeS5oPgorKyNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KKysKKysjaW5jbHVkZSA8Z3N0L2dsL2dsLmg+CisrI2luY2x1ZGUgImdzdGdsY29udGV4dF9lZ2wuaCIKKysKKysjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsbWVtb3J5Lmg+CisrCisrR19CRUdJTl9ERUNMUworKworKyNkZWZpbmUgR1NUX1RZUEVfR0xfTUVNT1JZX0VHTF9BTExPQ0FUT1IgKGdzdF9nbF9tZW1vcnlfZWdsX2FsbG9jYXRvcl9nZXRfdHlwZSgpKQorK0dUeXBlIGdzdF9nbF9tZW1vcnlfZWdsX2FsbG9jYXRvcl9nZXRfdHlwZSh2b2lkKTsKKysKKysjZGVmaW5lIEdTVF9JU19HTF9NRU1PUllfRUdMX0FMTE9DQVRPUihvYmopICAgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUgKChvYmopLCBHU1RfVFlQRV9HTF9NRU1PUllfRUdMX0FMTE9DQVRPUikpCisrI2RlZmluZSBHU1RfSVNfR0xfTUVNT1JZX0VHTF9BTExPQ0FUT1JfQ0xBU1Moa2xhc3MpICAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFICgoa2xhc3MpLCBHU1RfVFlQRV9HTF9NRU1PUllfRUdMX0FMTE9DQVRPUikpCisrI2RlZmluZSBHU1RfR0xfTUVNT1JZX0VHTF9BTExPQ0FUT1JfR0VUX0NMQVNTKG9iaikgICAgICAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MgKChvYmopLCBHU1RfVFlQRV9HTF9NRU1PUllfRUdMX0FMTE9DQVRPUiwgR3N0R0xNZW1vcnlFR0xBbGxvY2F0b3JDbGFzcykpCisrI2RlZmluZSBHU1RfR0xfTUVNT1JZX0VHTF9BTExPQ0FUT1Iob2JqKSAgICAgICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUICgob2JqKSwgR1NUX1RZUEVfR0xfTUVNT1JZX0VHTF9BTExPQ0FUT1IsIEdzdEdMTWVtb3J5RUdMQWxsb2NhdG9yKSkKKysjZGVmaW5lIEdTVF9HTF9NRU1PUllfRUdMX0FMTE9DQVRPUl9DTEFTUyhrbGFzcykgICAgICAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QgKChrbGFzcyksIEdTVF9UWVBFX0dMX01FTU9SWV9FR0xfQUxMT0NBVE9SLCBHc3RHTEFsbG9jYXRvckNsYXNzKSkKKysjZGVmaW5lIEdTVF9HTF9NRU1PUllfRUdMX0FMTE9DQVRPUl9DQVNUKG9iaikgICAgICAgICAgICAoKEdzdEdMTWVtb3J5RUdMQWxsb2NhdG9yICopKG9iaikpCisrCisrdHlwZWRlZiB2b2lkICgqR3N0RUdMSW1hZ2VEZXN0cm95Tm90aWZ5KSAoR3N0R0xDb250ZXh0RUdMICogY29udGV4dCwKKysgICAgZ3BvaW50ZXIgZGF0YSk7CisrCisrdHlwZWRlZiBzdHJ1Y3QgX0dzdEVHTEltYWdlTWVtb3J5IEdzdEVHTEltYWdlTWVtb3J5OworKworKworKy8qKgorKyAqIEdzdEdMTWVtb3J5RUdMOgorKyAqCisrICogUHJpdmF0ZSBpbnN0YW5jZQorKyAqLworK3N0cnVjdCBfR3N0R0xNZW1vcnlFR0wKKyt7CisrICBHc3RHTE1lbW9yeSBtZW07CisrCisrICBFR0xJbWFnZUtIUiBpbWFnZTsKKysgIEdzdFZpZGVvR0xUZXh0dXJlT3JpZW50YXRpb24gb3JpZW50YXRpb247CisrfTsKKysKKysvKioKKysgKiBHU1RfR0xfTUVNT1JZX0VHTF9BTExPQ0FUT1I6CisrICoKKysgKiBUaGUgbmFtZSBvZiB0aGUgR0wgTWVtb3J5IEVHTCBhbGxvY2F0b3IKKysgKi8KKysjZGVmaW5lIEdTVF9HTF9NRU1PUllfRUdMX0FMTE9DQVRPUl9OQU1FICJHTE1lbW9yeUVHTCIKKysKKyt2b2lkICAgICAgICAgIGdzdF9nbF9tZW1vcnlfZWdsX2luaXRfb25jZSAgICAgICAgICAgICAgICh2b2lkKTsKKytnYm9vbGVhbiAgICAgIGdzdF9pc19nbF9tZW1vcnlfZWdsICAgICAgICAgICAgICAgICAgICAgIChHc3RNZW1vcnkgKiBtZW0pOworKworK0VHTEltYWdlS0hSICAgZ3N0X2dsX21lbW9yeV9lZ2xfZ2V0X2ltYWdlICAgICAgICAgICAgICAgKEdzdEdMTWVtb3J5RUdMICogbWVtKTsKKytFR0xEaXNwbGF5ICAgIGdzdF9nbF9tZW1vcnlfZWdsX2dldF9kaXNwbGF5ICAgICAgICAgICAgIChHc3RHTE1lbW9yeUVHTCAqIG1lbSk7CisrCisrR3N0VmlkZW9HTFRleHR1cmVPcmllbnRhdGlvbiBnc3RfZ2xfbWVtb3J5X2VnbF9nZXRfb3JpZW50YXRpb24KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHc3RHTE1lbW9yeUVHTCAqIG1lbSk7CisrCisrdm9pZCAgICAgICAgICBnc3RfZ2xfbWVtb3J5X2VnbF9zZXRfb3JpZW50YXRpb24gICAgICAgICAoR3N0R0xNZW1vcnlFR0wgKiBtZW0sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWaWRlb0dMVGV4dHVyZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKTsKKysKKysvKioKKysgKiBHc3RHTEFsbG9jYXRvcgorKyAqCisrICogT3BhcXVlICNHc3RHTEFsbG9jYXRvciBzdHJ1Y3QKKysgKi8KKytzdHJ1Y3QgX0dzdEdMTWVtb3J5RUdMQWxsb2NhdG9yCisreworKyAgR3N0R0xNZW1vcnlBbGxvY2F0b3IgcGFyZW50OworK307CisrCisrLyoqCisrICogR3N0R0xBbGxvY2F0b3JDbGFzczoKKysgKgorKyAqIFRoZSAjR3N0R0xBbGxvY2F0b3JDbGFzcyBvbmx5IGNvbnRhaW5zIHByaXZhdGUgZGF0YQorKyAqLworK3N0cnVjdCBfR3N0R0xNZW1vcnlFR0xBbGxvY2F0b3JDbGFzcworK3sKKysgIEdzdEdMTWVtb3J5QWxsb2NhdG9yQ2xhc3MgcGFyZW50X2NsYXNzOworK307CisrCisrR19FTkRfREVDTFMKKysKKysjZW5kaWYgLyogX0dTVF9HTF9NRU1PUllfRUdMX0hfICovCitkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsX2Z3ZC5oIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsX2Z3ZC5oCitpbmRleCBmYjY0ZmY2Li43M2UxN2JkIDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsX2Z3ZC5oCisrKysgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xfZndkLmgKK0BAIC01NSw2ICs1NSwxMCBAQCB0eXBlZGVmIHN0cnVjdCBfR3N0R0xNZW1vcnlQQk8gR3N0R0xNZW1vcnlQQk87CisgdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMTWVtb3J5UEJPQWxsb2NhdG9yIEdzdEdMTWVtb3J5UEJPQWxsb2NhdG9yOworIHR5cGVkZWYgc3RydWN0IF9Hc3RHTE1lbW9yeVBCT0FsbG9jYXRvckNsYXNzIEdzdEdMTWVtb3J5UEJPQWxsb2NhdG9yQ2xhc3M7CisgCisrdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMTWVtb3J5RUdMIEdzdEdMTWVtb3J5RUdMOworK3R5cGVkZWYgc3RydWN0IF9Hc3RHTE1lbW9yeUVHTEFsbG9jYXRvciBHc3RHTE1lbW9yeUVHTEFsbG9jYXRvcjsKKyt0eXBlZGVmIHN0cnVjdCBfR3N0R0xNZW1vcnlFR0xBbGxvY2F0b3JDbGFzcyBHc3RHTE1lbW9yeUVHTEFsbG9jYXRvckNsYXNzOworKworIHR5cGVkZWYgc3RydWN0IF9Hc3RHTFNMU3RhZ2UgICAgICAgIEdzdEdMU0xTdGFnZTsKKyB0eXBlZGVmIHN0cnVjdCBfR3N0R0xTTFN0YWdlUHJpdmF0ZSBHc3RHTFNMU3RhZ2VQcml2YXRlOworIHR5cGVkZWYgc3RydWN0IF9Hc3RHTFNMU3RhZ2VDbGFzcyAgIEdzdEdMU0xTdGFnZUNsYXNzOworZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbGRpc3BsYXkuYyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGRpc3BsYXkuYworaW5kZXggNjBkZWM2YS4uMzQ3NzBkMCAxMDA2NDQKKy0tLSBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbGRpc3BsYXkuYworKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZGlzcGxheS5jCitAQCAtNjgsNiArNjgsNyBAQAorICNpZiBHU1RfR0xfSEFWRV9QTEFURk9STV9FR0wKKyAjaW5jbHVkZSA8Z3N0L2dsL2VnbC9nc3RnbGRpc3BsYXlfZWdsLmg+CisgI2luY2x1ZGUgPGdzdC9nbC9lZ2wvZ3N0ZWdsaW1hZ2VtZW1vcnkuaD4KKysjaW5jbHVkZSA8Z3N0L2dsL2VnbC9nc3RnbG1lbW9yeWVnbC5oPgorICNlbmRpZgorIAorIEdTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKGdzdF9jb250ZXh0KTsKK0BAIC0xNDQsNiArMTQ1LDcgQEAgZ3N0X2dsX2Rpc3BsYXlfaW5pdCAoR3N0R0xEaXNwbGF5ICogZGlzcGxheSkKKyAKKyAjaWYgR1NUX0dMX0hBVkVfUExBVEZPUk1fRUdMCisgICBnc3RfZWdsX2ltYWdlX21lbW9yeV9pbml0ICgpOworKyAgZ3N0X2dsX21lbW9yeV9lZ2xfaW5pdF9vbmNlICgpOworICNlbmRpZgorIH0KKyAKK2RpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2x1cGxvYWQuYyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbHVwbG9hZC5jCitpbmRleCAxNmVkNWVhLi43M2E5MDI5IDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXBsb2FkLmMKKysrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbHVwbG9hZC5jCitAQCAtMjksNiArMjksNyBAQAorIAorICNpZiBHU1RfR0xfSEFWRV9QTEFURk9STV9FR0wKKyAjaW5jbHVkZSAiZWdsL2dzdGVnbGltYWdlbWVtb3J5LmgiCisrI2luY2x1ZGUgImVnbC9nc3RnbG1lbW9yeWVnbC5oIgorICNlbmRpZgorIAorICNpZiBHU1RfR0xfSEFWRV9ETUFCVUYKK0BAIC0zMDEsNiArMzAyLDEzIEBAIF9nbF9tZW1vcnlfdXBsb2FkX3Byb3Bvc2VfYWxsb2NhdGlvbiAoZ3BvaW50ZXIgaW1wbCwgR3N0UXVlcnkgKiBkZWNpZGVfcXVlcnksCisgICAgICAgICAgICAgY29udGV4dCkpOworICAgICBnc3RfcXVlcnlfYWRkX2FsbG9jYXRpb25fcGFyYW0gKHF1ZXJ5LCBhbGxvY2F0b3IsICZwYXJhbXMpOworICAgICBnc3Rfb2JqZWN0X3VucmVmIChhbGxvY2F0b3IpOworKworKyNpZiBHU1RfR0xfSEFWRV9QTEFURk9STV9FR0wKKysgICAgYWxsb2NhdG9yID0KKysgICAgICAgIEdTVF9BTExPQ0FUT1IgKGdzdF9hbGxvY2F0b3JfZmluZCAoR1NUX0dMX01FTU9SWV9FR0xfQUxMT0NBVE9SX05BTUUpKTsKKysgICAgZ3N0X3F1ZXJ5X2FkZF9hbGxvY2F0aW9uX3BhcmFtIChxdWVyeSwgYWxsb2NhdG9yLCAmcGFyYW1zKTsKKysgICAgZ3N0X29iamVjdF91bnJlZiAoYWxsb2NhdG9yKTsKKysjZW5kaWYKKyAgIH0KKyAKKyAgIG5fcG9vbHMgPSBnc3RfcXVlcnlfZ2V0X25fYWxsb2NhdGlvbl9wb29scyAocXVlcnkpOworLS0gCisyLjUuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDA5LWdsaW1hZ2VzaW5rLURvd25yYW5rLXRvLW1hcmdpbmFsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwOS1nbGltYWdlc2luay1Eb3ducmFuay10by1tYXJnaW5hbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODFmYjBmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwOS1nbGltYWdlc2luay1Eb3ducmFuay10by1tYXJnaW5hbC5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIGM2YjM3YTgwODA2ZjkxMjhkZTQ3ZjFjY2MzZjIzNTRmOGQ0MzZiYjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjQgU2VwIDIwMTUgMTk6NDc6MzIgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gZ2xpbWFnZXNpbms6IERvd25yYW5rIHRvIG1hcmdpbmFsCisKK09uIGRlc2t0b3AsIHdoZXJlIHRoZXJlIGlzIGdvb2QgT3BlbkdMLCB4dmltYWdlc2luayB3aWxsIGNvbWUgdXAgZmlyc3QsCitvbiBvdGhlciBwbGF0Zm9ybXMsIE9wZW5HTCBjYW4ndCBiZSB0cnVzdGVkIGJlY2F1c2UgaXQncyBlaXRoZXIgc29mdHdhcmUgKGxpa2UKK2luIGEgVk0pIG9yIGJyb2tlbiAobGlrZSBvbiBlbWJlZGRlZCkuLCBzbyBsZXQgeGltYWdlc2luayBjb21lIGFib3ZlLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1MTY4NF0KKworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBleHQvZ2wvZ3N0b3BlbmdsLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9leHQvZ2wvZ3N0b3BlbmdsLmMgYi9leHQvZ2wvZ3N0b3BlbmdsLmMKK2luZGV4IGE0YjI1NDAuLjBjY2FhY2QgMTAwNjQ0CistLS0gYS9leHQvZ2wvZ3N0b3BlbmdsLmMKKysrKyBiL2V4dC9nbC9nc3RvcGVuZ2wuYworQEAgLTExOCw3ICsxMTgsNyBAQCBwbHVnaW5faW5pdCAoR3N0UGx1Z2luICogcGx1Z2luKQorICNlbmRpZgorIAorICAgaWYgKCFnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCAiZ2xpbWFnZXNpbmsiLAorLSAgICAgICAgICBHU1RfUkFOS19TRUNPTkRBUlksIGdzdF9nbF9pbWFnZV9zaW5rX2Jpbl9nZXRfdHlwZSAoKSkpIHsKKysgICAgICAgICAgR1NUX1JBTktfTUFSR0lOQUwsIGdzdF9nbF9pbWFnZV9zaW5rX2Jpbl9nZXRfdHlwZSAoKSkpIHsKKyAgICAgcmV0dXJuIEZBTFNFOworICAgfQorIAorLS0gCisyLjEuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZF8xLjYuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkXzEuNi4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZWI0N2MyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkXzEuNi4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotaW5jbHVkZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTczYTU4NTVhODExOWRlYjAxN2Y1ZjEzY2YzMjcwOTVkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT0yMTY4MmU0ZThmZWE1MjQxM2ZkMjZjNjBhY2I5MDdlNSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QvdHRhL2NyYzMyLmg7YmVnaW5saW5lPTEyO2VuZGxpbmU9Mjk7bWQ1PTI3ZGIyNjljNTc1ZDFlNTMxN2ZmZmNhMmQzM2IzYjUwIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC90dGEvZmlsdGVycy5oO2JlZ2lubGluZT0xMjtlbmRsaW5lPTI5O21kNT04YTA4MjcwNjU2ZjJmOGFkN2JiMzY1NWI4MzEzOGU1YSIKLQotIyBOb3RlOiBUaGUgbXBnMTIzIHBsdWdpbiB3YXMgbW92ZWQgdG8gZ3N0LXBsdWdpbnMtdWdseSBwcmlvciB0byB0aGUgMS43LjIKLSMgcmVsZWFzZSwgc28gdGhpcyBsaW5lIHNob3VsZCBiZSByZW1vdmVkIGR1cmluZyB0aGUgdXBkYXRlIHRvIDEuOC54Ci0jIGh0dHBzOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcvZ3N0cmVhbWVyL2dzdC1wbHVnaW5zLWJhZC9jb21taXQvP2lkPTA4ZDhhZWZjZGFhZjg5ZWNiNmRkNTNlYzFlNGY5NWNkNDJkMDE2NjQKLVBBQ0tBR0VDT05GSUdbbXBnMTIzXSA9ICItLWVuYWJsZS1tcGcxMjMsLS1kaXNhYmxlLW1wZzEyMyxtcGcxMjMiCi0KLSMgTm90ZTogVGhlIGdzZXR0aW5ncyBwbHVnLWluIHdhcyBkcm9wcGVkIHByaW9yIHRvIHRoZSAxLjcuMiByZWxlYXNlLAotIyBzbyB0aGlzIGxpbmUgc2hvdWxkIGJlIHJlbW92ZWQgZHVyaW5nIHRoZSB1cGRhdGUgdG8gMS44LngKLSMgaHR0cHM6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0LXBsdWdpbnMtYmFkL2NvbW1pdC8/aWQ9OTE0MjkxODA4YWQxMDYyMWQ2YTc0MDMxZjNkNDZkNDVlZWY1YTNhMwotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtZ3NldHRpbmdzIgotCi1TUkNfVVJJID0gIiBcCi0gICAgaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLWJhZC9nc3QtcGx1Z2lucy1iYWQtJHtQVn0udGFyLnh6IFwKLSAgICBmaWxlOi8vY29uZmlndXJlLWFsbG93LXRvLWRpc2FibGUtbGlic3NoMi5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtZ2xpbWFnZXNpbmstRG93bnJhbmstdG8tbWFyZ2luYWwucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLWdscGx1Z2luLWdsd2luZG93LWZpeC1tZW1vcnktbGVhay1vZi1uYXZpZ2F0aW9uLXRocmUucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDg1N2FkY2FmZTQxZTRiOWI4ODA1Y2Y4ODMwM2JkNTUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTcxYjI5MTAxZDZhOWM1ZTNmZTk0ZDk5ZDk3N2EyMjdmNThmMGIyZDI5YjZjYTJjN2YyOTIwNTI1NDJiM2E2MSIKLQotUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLWJhZC0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkXzEuOC4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWRfMS44LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA4ZjRkYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkXzEuOC4zLmJiCkBAIC0wLDAgKzEsMjYgQEAKK2luY2x1ZGUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03M2E1ODU1YTgxMTlkZWIwMTdmNWYxM2NmMzI3MDk1ZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MjE2ODJlNGU4ZmVhNTI0MTNmZDI2YzYwYWNiOTA3ZTUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0L3R0YS9jcmMzMi5oO2JlZ2lubGluZT0xMjtlbmRsaW5lPTI5O21kNT0yN2RiMjY5YzU3NWQxZTUzMTdmZmZjYTJkMzNiM2I1MCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QvdHRhL2ZpbHRlcnMuaDtiZWdpbmxpbmU9MTI7ZW5kbGluZT0yOTttZDU9OGEwODI3MDY1NmYyZjhhZDdiYjM2NTViODMxMzhlNWEiCisKK1NSQ19VUkkgPSAiIFwKKyAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtYmFkL2dzdC1wbHVnaW5zLWJhZC0ke1BWfS50YXIueHogXAorICAgIGZpbGU6Ly9jb25maWd1cmUtYWxsb3ctdG8tZGlzYWJsZS1saWJzc2gyLnBhdGNoIFwKKyAgICBmaWxlOi8vZml4LW1heWJlLXVuaW5pdGlhbGl6ZWQtd2FybmluZ3Mtd2hlbi1jb21waWxpbmctd2l0aC1Pcy5wYXRjaCBcCisgICAgZmlsZTovL2F2b2lkLWluY2x1ZGluZy1zeXMtcG9sbC5oLWRpcmVjdGx5LnBhdGNoIFwKKyAgICBmaWxlOi8vZW5zdXJlLXZhbGlkLXNlbnRpbmVscy1mb3ItZ3N0X3N0cnVjdHVyZV9nZXQtZXRjLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1nc3RyZWFtZXItZ2wucGMuaW4tZG9uLXQtYXBwZW5kLUdMX0NGTEFHUy10by1DRkxBR1MucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAyLWdscGx1Z2luLWVuYWJsZS1nbGRlaW50ZXJsYWNlLW9uLU9wZW5HTC1FUy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDMtZ2xjb2xvcmNvbnZlcnQtaW1wbGVtZW50LW11bHRpcGxlLXJlbmRlci10YXJnZXRzLWZvci5wYXRjaCBcCisgICAgZmlsZTovLzAwMDQtZ2xjb2xvcmNvbnZlcnQtZG9uLXQtdXNlLXRoZS1wcmVkZWZpbmVkLXZhcmlhYmxlLW5hbS5wYXRjaCBcCisgICAgZmlsZTovLzAwMDUtZ2xzaGFkZXItYWRkLWdsQmluZEZyYWdEYXRhTG9jYXRpb24ucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDA2LWdsY29sb3Jjb252ZXJ0LUdMRVMzLWRlcHJlY2F0ZXMtdGV4dHVyZTJELWFuZC1pdC1kb2UucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDA4LWdsLWltcGxlbWVudC1Hc3RHTE1lbW9yeUVHTC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDktZ2xpbWFnZXNpbmstRG93bnJhbmstdG8tbWFyZ2luYWwucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjk1NTI4MWE0M2U5OGM1NDY0NTYzZmEwNDllMGEwOTExIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc4OTlmY2IxOGU2YTFhZjI4ODhiMTljOTAyMTNhZjAxOGE1N2Q3NDFjNmU3MmVjNTZiMTMzYmM3M2VjODUwOWIiCisKK1MgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy1iYWQtJHtQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZF9naXQuYmIKaW5kZXggZWY2NTgxYi4uMTM3MDM4MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWRfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkX2dpdC5iYgpAQCAtOCw3ICs4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC90dGEvZmlsdGVycy5oO2JlZ2lubGluZT0xMjtlbmRsaW5lPTI5O21kNT04YTA4MjcwNjU2ZjJmOGFkN2JiMzY1NWI4MzEzOGU1YSIKIAogU1JDX1VSSSA9ICIgXAotICAgIGdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL2dzdHJlYW1lci9nc3QtcGx1Z2lucy1iYWQ7bmFtZT1iYXNlIFwKKyAgICBnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0LXBsdWdpbnMtYmFkO2JyYW5jaD0xLjg7bmFtZT1iYXNlIFwKICAgICBnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvY29tbW9uO2Rlc3RzdWZmaXg9Z2l0L2NvbW1vbjtuYW1lPWNvbW1vbiBcCiAgICAgZmlsZTovL2NvbmZpZ3VyZS1hbGxvdy10by1kaXNhYmxlLWxpYnNzaDIucGF0Y2ggXAogICAgIGZpbGU6Ly9maXgtbWF5YmUtdW5pbml0aWFsaXplZC13YXJuaW5ncy13aGVuLWNvbXBpbGluZy13aXRoLU9zLnBhdGNoIFwKQEAgLTE3LDM2ICsxNywxNiBAQAogICAgIGZpbGU6Ly8wMDAxLWdzdHJlYW1lci1nbC5wYy5pbi1kb24tdC1hcHBlbmQtR0xfQ0ZMQUdTLXRvLUNGTEFHUy5wYXRjaCBcCiAiCiAKLVBWID0gIjEuNy4yK2dpdCR7U1JDUFZ9IgorUFYgPSAiMS44LjIrZ2l0JHtTUkNQVn0iCiAKIFVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPihcZCsoXC5cZCspKykpIgogCi1TUkNSRVZfYmFzZSA9ICI1MGFlNDZjYzBmODgyN2JmOTY2OTIwZDljMjIxZTVjZjg2ZTgxMWJhIgotU1JDUkVWX2NvbW1vbiA9ICJhMjUzOTc0NDg5NDIwNzkwMDI2MjJiZTIzMWU5ZWM0OWI5ODU3NDVhIgorU1JDUkVWX2Jhc2UgPSAiNWU3M2I1YTQ4NDNkOTY3NTI0NmY0ZWZlYzE1ODYyNDQ3NWVkOTU4NiIKK1NSQ1JFVl9jb21tb24gPSAiZjM2M2IzMjA1NjU4YTM4ZTg0ZmE3N2YxOWRlZTIxOGNkNDQ0NTI3NSIKIFNSQ1JFVl9GT1JNQVQgPSAiYmFzZSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAotIyBvdmVyLXJpZGUgdGhlIGRlZmF1bHQgaGxzIFBBQ0tBR0VDT05GSUcgaW4gZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLmluYyB0bwotIyBwYXNzIGFuIGFkZGl0aW9uYWwgLS13aXRoLWhscy1jcnlwdG89WFhYIG9wdGlvbiAobmV3IGluIDEuNy54KSBhbmQgc3dpdGNoIEhMUwotIyBBRVMgZGVjcnlwdGlvbiBmcm9tIG5ldHRsZSB0byBvcGVuc3NsIChpZSBhIHNoYXJlZCBkZXBlbmRlbmN5IHdpdGggZHRscykuCi0jIFRoaXMgc2hvdWxkIG1vdmUgYmFjayB0byB0aGUgY29tbW9uIC5pbmMgb25jZSB0aGUgbWFpbiByZWNpcGUgdXBkYXRlcyB0byAxLjgueAotUEFDS0FHRUNPTkZJR1tobHNdID0gIi0tZW5hYmxlLWhscyAtLXdpdGgtaGxzLWNyeXB0bz1vcGVuc3NsLC0tZGlzYWJsZS1obHMsb3BlbnNzbCIKLQotIyBUaGUgdGlueWFsc2EgcGx1Z2luIHdhcyBhZGRlZCBwcmlvciB0byB0aGUgMS43LjIgcmVsZWFzZQotIyBodHRwczovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL2dzdHJlYW1lci9nc3QtcGx1Z2lucy1iYWQvY29tbWl0Lz9pZD1jOGJkNzRmYTlhODEzOThmNTdkOTc2YzQ3OGQyMDQzZjMwMTg4Njg0Ci1QQUNLQUdFQ09ORklHW3RpbnlhbHNhXSA9ICItLWVuYWJsZS10aW55YWxzYSwtLWRpc2FibGUtdGlueWFsc2EsdGlueWFsc2EiCi0KLSMgVGhlIHZ1bGthbiBiYXNlZCB2aWRlbyBzaW5rIHBsdWdpbiB3YXMgYWRkZWQgcHJpb3IgdG8gdGhlIDEuNy4yIHJlbGVhc2UKLSMgaHR0cHM6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0LXBsdWdpbnMtYmFkL2NvbW1pdC8/aWQ9NWRlNmRkOWY0MDYyOTU2MmFjZjkwZTM1ZTFmYTU4NDY0ZDY2NjE3ZAotUEFDS0FHRUNPTkZJR1t2dWxrYW5dID0gIi0tZW5hYmxlLXZ1bGthbiwtLWRpc2FibGUtdnVsa2FuLGxpYnhjYiIKLQotIyBUaGUgZGVwZW5kZW5jeS1sZXNzIG5ldHNpbSBwbHVnaW4gd2FzIGFkZGVkIHByaW9yIHRvIHRoZSAxLjcuMiByZWxlYXNlCi0jIGh0dHBzOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcvZ3N0cmVhbWVyL2dzdC1wbHVnaW5zLWJhZC9jb21taXQvP2lkPWUzZjllODU0ZjA4ZTgyYmZhYjExMTgyYzVhMmFhNmY5YTBjNzNjZDUKLUVYVFJBX09FQ09ORiArPSAiIFwKLSAgICAtLWVuYWJsZS1uZXRzaW0gXAotIgotCiBkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKIAkke1N9L2F1dG9nZW4uc2ggLS1ub2NvbmZpZ3VyZQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS5pbmMKaW5kZXggNzM4MTQ1OC4uYTA0ZjE1NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UuaW5jCkBAIC0zMSw2ICszMSw3IEBACiBQQUNLQUdFQ09ORklHW2dpby11bml4LTIuMF0gPSAiLS1lbmFibGUtZ2lvX3VuaXhfMl8wLC0tZGlzYWJsZS1naW9fdW5peF8yXzAsZ2xpYi0yLjAiCiBQQUNLQUdFQ09ORklHW2l2b3JiaXNdICAgICAgPSAiLS1lbmFibGUtaXZvcmJpcywtLWRpc2FibGUtaXZvcmJpcyx0cmVtb3IiCiBQQUNLQUdFQ09ORklHW29nZ10gICAgICAgICAgPSAiLS1lbmFibGUtb2dnLC0tZGlzYWJsZS1vZ2csbGlib2dnIgorUEFDS0FHRUNPTkZJR1tvcHVzXSAgICAgICAgID0gIi0tZW5hYmxlLW9wdXMsLS1kaXNhYmxlLW9wdXMsbGlib3B1cyIKIFBBQ0tBR0VDT05GSUdbcGFuZ29dICAgICAgICA9ICItLWVuYWJsZS1wYW5nbywtLWRpc2FibGUtcGFuZ28scGFuZ28iCiBQQUNLQUdFQ09ORklHW3RoZW9yYV0gICAgICAgPSAiLS1lbmFibGUtdGhlb3JhLC0tZGlzYWJsZS10aGVvcmEsbGlidGhlb3JhIgogUEFDS0FHRUNPTkZJR1t2aXN1YWxdICAgICAgID0gIi0tZW5hYmxlLWxpYnZpc3VhbCwtLWRpc2FibGUtbGlidmlzdWFsLGxpYnZpc3VhbCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAxLU1ha2VmaWxlLmFtLWRvbi10LWhhcmRjb2RlLWxpYnRvb2wtbmFtZS13aGVuLXJ1bm5pbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMS1NYWtlZmlsZS5hbS1kb24tdC1oYXJkY29kZS1saWJ0b29sLW5hbWUtd2hlbi1ydW5uaW5nLnBhdGNoCmluZGV4IDc4MWU0ZDguLjA5NGJkYWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAxLU1ha2VmaWxlLmFtLWRvbi10LWhhcmRjb2RlLWxpYnRvb2wtbmFtZS13aGVuLXJ1bm5pbmcucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDEtTWFrZWZpbGUuYW0tZG9uLXQtaGFyZGNvZGUtbGlidG9vbC1uYW1lLXdoZW4tcnVubmluZy5wYXRjaApAQCAtMjQsNyArMjQsNyBAQAogaW5kZXggOTM2MWJmOS4uYmM3ZjUzYSAxMDA2NDQKIC0tLSBhL2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzL01ha2VmaWxlLmFtCiArKysgYi9nc3QtbGlicy9nc3QvYWxsb2NhdG9ycy9NYWtlZmlsZS5hbQotQEAgLTM3LDcgKzM3LDcgQEAgR3N0QWxsb2NhdG9ycy1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RhbGxvY2F0b3JzLUAKK0BAIC0zOCw3ICszOCw3IEBAIEdzdEFsbG9jYXRvcnMtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0YWxsb2NhdG9ycy1ACiAgCQktLWFkZC1pbmNsdWRlLXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKICAJCS0tbGlicmFyeT1saWJnc3RhbGxvY2F0b3JzLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKICAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXApAQCAtMzcsNyArMzcsNyBAQAogaW5kZXggNmQ2ZGU4ZC4uZGNjMmZlMCAxMDA2NDQKIC0tLSBhL2dzdC1saWJzL2dzdC9hcHAvTWFrZWZpbGUuYW0KICsrKyBiL2dzdC1saWJzL2dzdC9hcHAvTWFrZWZpbGUuYW0KLUBAIC01Miw3ICs1Miw3IEBAIEdzdEFwcC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RhcHAtQEdTVF9BUElfVkVSU0lPCitAQCAtNTMsNyArNTMsNyBAQCBHc3RBcHAtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0YXBwLUBHU1RfQVBJX1ZFUlNJTwogIAkJLS1saWJyYXJ5PWxpYmdzdGFwcC1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCiAgCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0taW5jbHVkZT1Hc3RCYXNlLUBHU1RfQVBJX1ZFUlNJT05AIFwKQEAgLTUwLDcgKzUwLDcgQEAKIGluZGV4IDI3NWQyMjIuLjIzNzQxOTYgMTAwNjQ0CiAtLS0gYS9nc3QtbGlicy9nc3QvYXVkaW8vTWFrZWZpbGUuYW0KICsrKyBiL2dzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbQotQEAgLTEwNiw3ICsxMDYsNyBAQCBHc3RBdWRpby1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RhdWRpby1AR1NUX0FQSV9WRQorQEAgLTExNiw3ICsxMTYsNyBAQCBHc3RBdWRpby1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RhdWRpby1AR1NUX0FQSV9WRQogIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLWluY2x1ZGU9R3N0QmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLWluY2x1ZGU9R3N0VGFnLUBHU1RfQVBJX1ZFUlNJT05AIFwKQEAgLTYzLDcgKzYzLDcgQEAKIGluZGV4IDA5YjNkNjguLmY1NDUzNTQgMTAwNjQ0CiAtLS0gYS9nc3QtbGlicy9nc3QvZmZ0L01ha2VmaWxlLmFtCiArKysgYi9nc3QtbGlicy9nc3QvZmZ0L01ha2VmaWxlLmFtCi1AQCAtNjQsNyArNjQsNyBAQCBHc3RGZnQtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0ZmZ0LUBHU1RfQVBJX1ZFUlNJTworQEAgLTY1LDcgKzY1LDcgQEAgR3N0RmZ0LUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdGZmdC1AR1NUX0FQSV9WRVJTSU8KICAJCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAogIAkJLS1saWJyYXJ5PWxpYmdzdGZmdC1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCiAgCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKQEAgLTc2LDcgKzc2LDcgQEAKIGluZGV4IDY0ZDVlYjAuLjkxZGMyMTQgMTAwNjQ0CiAtLS0gYS9nc3QtbGlicy9nc3QvcGJ1dGlscy9NYWtlZmlsZS5hbQogKysrIGIvZ3N0LWxpYnMvZ3N0L3BidXRpbHMvTWFrZWZpbGUuYW0KLUBAIC05NCw3ICs5NCw3IEBAIEdzdFBidXRpbHMtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0cGJ1dGlscy1AR1NUX0FQCitAQCAtOTksNyArOTksNyBAQCBHc3RQYnV0aWxzLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHBidXRpbHMtQEdTVF9BUAogIAkJLS1pbmNsdWRlPUdzdFRhZy1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLWluY2x1ZGU9R3N0VmlkZW8tQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1pbmNsdWRlPUdzdEF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05AIFwKQEAgLTEwMiw3ICsxMDIsNyBAQAogaW5kZXggZmRkMDFjMS4uZjU0NDVjMSAxMDA2NDQKIC0tLSBhL2dzdC1saWJzL2dzdC9ydHAvTWFrZWZpbGUuYW0KICsrKyBiL2dzdC1saWJzL2dzdC9ydHAvTWFrZWZpbGUuYW0KLUBAIC02NCw3ICs2NCw3IEBAIEdzdFJ0cC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RydHAtQEdTVF9BUElfVkVSU0lPCitAQCAtNjUsNyArNjUsNyBAQCBHc3RSdHAtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0cnRwLUBHU1RfQVBJX1ZFUlNJTwogIAkJLS1saWJyYXJ5PWxpYmdzdHJ0cC1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCiAgCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0taW5jbHVkZT1Hc3RCYXNlLUBHU1RfQVBJX1ZFUlNJT05AIFwKQEAgLTExNSw3ICsxMTUsNyBAQAogaW5kZXggZWRlNTcwNi4uOWIwYjI1OCAxMDA2NDQKIC0tLSBhL2dzdC1saWJzL2dzdC9ydHNwL01ha2VmaWxlLmFtCiArKysgYi9nc3QtbGlicy9nc3QvcnRzcC9NYWtlZmlsZS5hbQotQEAgLTcxLDcgKzcxLDcgQEAgR3N0UnRzcC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RydHNwLUBHU1RfQVBJX1ZFUlMKK0BAIC03Miw3ICs3Miw3IEBAIEdzdFJ0c3AtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0cnRzcC1AR1NUX0FQSV9WRVJTCiAgCQktLWluY2x1ZGU9R2lvLTIuMCBcCiAgCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0taW5jbHVkZT1Hc3RTZHAtQEdTVF9BUElfVkVSU0lPTkAgXApAQCAtMTI4LDcgKzEyOCw3IEBACiBpbmRleCBhOTBmMzBiLi4wZTE0OWI4IDEwMDY0NAogLS0tIGEvZ3N0LWxpYnMvZ3N0L3NkcC9NYWtlZmlsZS5hbQogKysrIGIvZ3N0LWxpYnMvZ3N0L3NkcC9NYWtlZmlsZS5hbQotQEAgLTMxLDcgKzMxLDcgQEAgR3N0U2RwLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHNkcC1AR1NUX0FQSV9WRVJTSU8KK0BAIC0zMiw3ICszMiw3IEBAIEdzdFNkcC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RzZHAtQEdTVF9BUElfVkVSU0lPCiAgCQktLWFkZC1pbmNsdWRlLXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKICAJCS0tbGlicmFyeT1saWJnc3RzZHAtQEdTVF9BUElfVkVSU0lPTkAubGEgXAogIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCkBAIC0xNDEsNyArMTQxLDcgQEAKIGluZGV4IGM1MzRhNGQuLmNhZmFmZDMgMTAwNjQ0CiAtLS0gYS9nc3QtbGlicy9nc3QvdGFnL01ha2VmaWxlLmFtCiArKysgYi9nc3QtbGlicy9nc3QvdGFnL01ha2VmaWxlLmFtCi1AQCAtNDQsNyArNDQsNyBAQCBHc3RUYWctQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0dGFnLUBHU1RfQVBJX1ZFUlNJTworQEAgLTQ1LDcgKzQ1LDcgQEAgR3N0VGFnLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHRhZy1AR1NUX0FQSV9WRVJTSU8KICAJCS0tbGlicmFyeT1saWJnc3R0YWctQEdTVF9BUElfVkVSU0lPTkAubGEgXAogIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLWluY2x1ZGU9R3N0QmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCkBAIC0xNTQsNyArMTU0LDcgQEAKIGluZGV4IDVkMzFmYTEuLmFjNjRlYjMgMTAwNjQ0CiAtLS0gYS9nc3QtbGlicy9nc3QvdmlkZW8vTWFrZWZpbGUuYW0KICsrKyBiL2dzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZS5hbQotQEAgLTExMyw3ICsxMTMsNyBAQCBHc3RWaWRlby1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3R2aWRlby1AR1NUX0FQSV9WRQorQEAgLTExNiw3ICsxMTYsNyBAQCBHc3RWaWRlby1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3R2aWRlby1AR1NUX0FQSV9WRQogIAkJLS1saWJyYXJ5PWxpYmdzdHZpZGVvLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKICAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1pbmNsdWRlPUdzdEJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDItTWFrZWZpbGUuYW0tcHJlZml4LWNhbGxzLXRvLXBrZy1jb25maWctd2l0aC1QS0dfQ09ORi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAyLU1ha2VmaWxlLmFtLXByZWZpeC1jYWxscy10by1wa2ctY29uZmlnLXdpdGgtUEtHX0NPTkYucGF0Y2gKaW5kZXggODVmY2FjYi4uMGE4YmM5YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDItTWFrZWZpbGUuYW0tcHJlZml4LWNhbGxzLXRvLXBrZy1jb25maWctd2l0aC1QS0dfQ09ORi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMi1NYWtlZmlsZS5hbS1wcmVmaXgtY2FsbHMtdG8tcGtnLWNvbmZpZy13aXRoLVBLR19DT05GLnBhdGNoCkBAIC0yNCw3ICsyNCw3IEBACiBpbmRleCBiYzdmNTNhLi4wZWY1Zjg2IDEwMDY0NAogLS0tIGEvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0KICsrKyBiL2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzL01ha2VmaWxlLmFtCi1AQCAtMzQsNyArMzQsNyBAQCBHc3RBbGxvY2F0b3JzLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdGFsbG9jYXRvcnMtQAorQEAgLTM1LDcgKzM1LDcgQEAgR3N0QWxsb2NhdG9ycy1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RhbGxvY2F0b3JzLUAKICAJCS0tYy1pbmNsdWRlICJnc3QvYWxsb2NhdG9ycy9hbGxvY2F0b3JzLmgiIFwKICAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCiAgCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCkBAIC0zMyw3ICszMyw3IEBACiAgCQktLWxpYnJhcnk9bGliZ3N0YWxsb2NhdG9ycy1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCiAgCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0tbGlidG9vbD0iJChMSUJUT09MKSIgXAotQEAgLTU4LDcgKzU4LDcgQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQorQEAgLTU5LDcgKzU5LDcgQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKSBcCiAgCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKICAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCkBAIC00Niw3ICs0Niw3IEBACiBpbmRleCBkY2MyZmUwLi5kYzA3NmNiIDEwMDY0NAogLS0tIGEvZ3N0LWxpYnMvZ3N0L2FwcC9NYWtlZmlsZS5hbQogKysrIGIvZ3N0LWxpYnMvZ3N0L2FwcC9NYWtlZmlsZS5hbQotQEAgLTQ3LDggKzQ3LDggQEAgR3N0QXBwLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdGFwcC1AR1NUX0FQSV9WRVJTSU8KK0BAIC00OCw4ICs0OCw4IEBAIEdzdEFwcC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RhcHAtQEdTVF9BUElfVkVSU0lPCiAgCQktLWMtaW5jbHVkZSAiZ3N0L2FwcC9hcHAuaCIgXAogIAkJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKICAJCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKQEAgLTYxLDcgKzYxLDcgQEAKIGluZGV4IDIzNzQxOTYuLjI5NWViNDIgMTAwNjQ0CiAtLS0gYS9nc3QtbGlicy9nc3QvYXVkaW8vTWFrZWZpbGUuYW0KICsrKyBiL2dzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbQotQEAgLTk2LDEyICs5NiwxMiBAQCBHc3RBdWRpby1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RhdWRpby1AR1NUX0FQSV9WRQorQEAgLTEwNiwxMiArMTA2LDEyIEBAIEdzdEF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdGF1ZGlvLUBHU1RfQVBJX1ZFCiAgCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAogIAkJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXAogIAkJLS1jLWluY2x1ZGUgImdzdC9hdWRpby9hdWRpby5oIiBcCkBAIC03OCw3ICs3OCw3IEBACiAgCQktLWxpYnJhcnktcGF0aD0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC90YWcvIiBcCiAgCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0taW5jbHVkZT1Hc3RCYXNlLUBHU1RfQVBJX1ZFUlNJT05AIFwKLUBAIC0xMzAsOCArMTMwLDggQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQorQEAgLTE0MCw4ICsxNDAsOCBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9LnR5cGVsaWIpCiAgCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKICAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCiAgCQktLWluY2x1ZGVkaXI9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdGFnLyIgXApAQCAtOTMsNyArOTMsNyBAQAogaW5kZXggZjU0NTM1NC4uMWJiNjI0MyAxMDA2NDQKIC0tLSBhL2dzdC1saWJzL2dzdC9mZnQvTWFrZWZpbGUuYW0KICsrKyBiL2dzdC1saWJzL2dzdC9mZnQvTWFrZWZpbGUuYW0KLUBAIC02MSw3ICs2MSw3IEBAIEdzdEZmdC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RmZnQtQEdTVF9BUElfVkVSU0lPCitAQCAtNjIsNyArNjIsNyBAQCBHc3RGZnQtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0ZmZ0LUBHU1RfQVBJX1ZFUlNJTwogIAkJLS1jLWluY2x1ZGUgImdzdC9mZnQvZmZ0LmgiIFwKICAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCiAgCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCkBAIC0xMDIsNyArMTAyLDcgQEAKICAJCS0tbGlicmFyeT1saWJnc3RmZnQtQEdTVF9BUElfVkVSU0lPTkAubGEgXAogIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLWxpYnRvb2w9IiQoTElCVE9PTCkiIFwKLUBAIC04NSw3ICs4NSw3IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0udHlwZWxpYikKK0BAIC04Niw3ICs4Niw3IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0udHlwZWxpYikKICAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUikgXAogIAkJLS1pbmNsdWRlZGlyPSQoc3JjZGlyKSBcCiAgCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikgXApAQCAtMTE1LDcgKzExNSw3IEBACiBpbmRleCA5MWRjMjE0Li5kYzhlMWQzIDEwMDY0NAogLS0tIGEvZ3N0LWxpYnMvZ3N0L3BidXRpbHMvTWFrZWZpbGUuYW0KICsrKyBiL2dzdC1saWJzL2dzdC9wYnV0aWxzL01ha2VmaWxlLmFtCi1AQCAtNzksMTQgKzc5LDE0IEBAIEdzdFBidXRpbHMtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0cGJ1dGlscy1AR1NUX0FQCitAQCAtODQsMTQgKzg0LDE0IEBAIEdzdFBidXRpbHMtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0cGJ1dGlscy1AR1NUX0FQCiAgCQktLWMtaW5jbHVkZSAiZ3N0L3BidXRpbHMvcGJ1dGlscy5oIiBcCiAgCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAogIAkJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXApAQCAtMTM0LDcgKzEzNCw3IEBACiAgCQktLWxpYnJhcnktcGF0aD0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC90YWcvIiBcCiAgCQktLWxpYnJhcnktcGF0aD0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC92aWRlby8iIFwKICAJCS0tbGlicmFyeS1wYXRoPSIkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2F1ZGlvLyIgXAotQEAgLTExOSw4ICsxMTksOCBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9LnR5cGVsaWIpCitAQCAtMTI0LDggKzEyNCw4IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0udHlwZWxpYikKICAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUikgXAogIAkJLS1pbmNsdWRlZGlyPSQoc3JjZGlyKSBcCiAgCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikgXApAQCAtMTc1LDcgKzE3NSw3IEBACiBpbmRleCBmNTQ0NWMxLi41MjdjMGI0IDEwMDY0NAogLS0tIGEvZ3N0LWxpYnMvZ3N0L3J0cC9NYWtlZmlsZS5hbQogKysrIGIvZ3N0LWxpYnMvZ3N0L3J0cC9NYWtlZmlsZS5hbQotQEAgLTU5LDggKzU5LDggQEAgR3N0UnRwLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHJ0cC1AR1NUX0FQSV9WRVJTSU8KK0BAIC02MCw4ICs2MCw4IEBAIEdzdFJ0cC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RydHAtQEdTVF9BUElfVkVSU0lPCiAgCQktLWMtaW5jbHVkZSAiZ3N0L3J0cC9ydHAuaCIgXAogIAkJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXAogIAkJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKQEAgLTE4Niw3ICsxODYsNyBAQAogIAkJLS1saWJyYXJ5PWxpYmdzdHJ0cC1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCiAgCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0taW5jbHVkZT1Hc3RCYXNlLUBHU1RfQVBJX1ZFUlNJT05AIFwKLUBAIC04Nyw4ICs4Nyw4IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0udHlwZWxpYikKK0BAIC04OCw4ICs4OCw4IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0udHlwZWxpYikKICAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUikgXAogIAkJLS1pbmNsdWRlZGlyPSQoc3JjZGlyKSBcCiAgCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikgXApAQCAtMjAxLDcgKzIwMSw3IEBACiBpbmRleCA5YjBiMjU4Li40ZjZkOWY4IDEwMDY0NAogLS0tIGEvZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0KICsrKyBiL2dzdC1saWJzL2dzdC9ydHNwL01ha2VmaWxlLmFtCi1AQCAtNjYsNyArNjYsNyBAQCBHc3RSdHNwLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHJ0c3AtQEdTVF9BUElfVkVSUworQEAgLTY3LDcgKzY3LDcgQEAgR3N0UnRzcC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RydHNwLUBHU1RfQVBJX1ZFUlMKICAJCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKICAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCiAgCQktLWFkZC1pbmNsdWRlLXBhdGg9JChidWlsZGRpcikvLi4vc2RwIFwKQEAgLTIxMCw3ICsyMTAsNyBAQAogIAkJLS1saWJyYXJ5PWxpYmdzdHJ0c3AtQEdTVF9BUElfVkVSU0lPTkAubGEgXAogIAkJLS1pbmNsdWRlPUdpby0yLjAgXAogIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCi1AQCAtOTYsNyArOTYsNyBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9LnR5cGVsaWIpCitAQCAtOTcsNyArOTcsNyBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9LnR5cGVsaWIpCiAgCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKICAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCiAgCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikvLi4vc2RwIFwKQEAgLTIyMyw3ICsyMjMsNyBAQAogaW5kZXggMGUxNDliOC4uOWFhMDUxMiAxMDA2NDQKIC0tLSBhL2dzdC1saWJzL2dzdC9zZHAvTWFrZWZpbGUuYW0KICsrKyBiL2dzdC1saWJzL2dzdC9zZHAvTWFrZWZpbGUuYW0KLUBAIC0yOCw3ICsyOCw3IEBAIEdzdFNkcC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RzZHAtQEdTVF9BUElfVkVSU0lPCitAQCAtMjksNyArMjksNyBAQCBHc3RTZHAtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0c2RwLUBHU1RfQVBJX1ZFUlNJTwogIAkJLS13YXJuLWFsbCBcCiAgCQktLWMtaW5jbHVkZSAiZ3N0L3NkcC9zZHAuaCIgXAogIAkJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKQEAgLTIzMiw3ICsyMzIsNyBAQAogIAkJLS1saWJyYXJ5PWxpYmdzdHNkcC1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCiAgCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0tbGlidG9vbD0iJChMSUJUT09MKSIgXAotQEAgLTUyLDcgKzUyLDcgQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQorQEAgLTUzLDcgKzUzLDcgQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKSBcCiAgCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKICAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCkBAIC0yNDUsNyArMjQ1LDcgQEAKIGluZGV4IGNhZmFmZDMuLmJhOTkyNzkgMTAwNjQ0CiAtLS0gYS9nc3QtbGlicy9nc3QvdGFnL01ha2VmaWxlLmFtCiArKysgYi9nc3QtbGlicy9nc3QvdGFnL01ha2VmaWxlLmFtCi1AQCAtMzksOCArMzksOCBAQCBHc3RUYWctQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0dGFnLUBHU1RfQVBJX1ZFUlNJTworQEAgLTQwLDggKzQwLDggQEAgR3N0VGFnLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHRhZy1AR1NUX0FQSV9WRVJTSU8KICAJCS0tYy1pbmNsdWRlICJnc3QvdGFnL3RhZy5oIiBcCiAgCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAogIAkJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXApAQCAtMjU2LDcgKzI1Niw3IEBACiAgCQktLWxpYnJhcnk9bGliZ3N0dGFnLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKICAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1pbmNsdWRlPUdzdEJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAotQEAgLTY3LDggKzY3LDggQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQorQEAgLTY4LDggKzY4LDggQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKSBcCiAgCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKICAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCkBAIC0yNzEsNyArMjcxLDcgQEAKIGluZGV4IGFjNjRlYjMuLjM0MmM4YzYgMTAwNjQ0CiAtLS0gYS9nc3QtbGlicy9nc3QvdmlkZW8vTWFrZWZpbGUuYW0KICsrKyBiL2dzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZS5hbQotQEAgLTEwOCw4ICsxMDgsOCBAQCBHc3RWaWRlby1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3R2aWRlby1AR1NUX0FQSV9WRQorQEAgLTExMSw4ICsxMTEsOCBAQCBHc3RWaWRlby1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3R2aWRlby1AR1NUX0FQSV9WRQogIAkJLS1jLWluY2x1ZGUgImdzdC92aWRlby92aWRlby5oIiBcCiAgCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAogIAkJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXApAQCAtMjgyLDcgKzI4Miw3IEBACiAgCQktLWxpYnJhcnk9bGliZ3N0dmlkZW8tQEdTVF9BUElfVkVSU0lPTkAubGEgXAogIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLWluY2x1ZGU9R3N0QmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCi1AQCAtMTM2LDggKzEzNiw4IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0udHlwZWxpYikKK0BAIC0xMzksOCArMTM5LDggQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKSBcCiAgCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKICAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwNC1ydHNwLWRyb3AtaW5jb3JyZWN0LXJlZmVyZW5jZS10by1nc3RyZWFtZXItc2RwLWluLU1hLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDQtcnRzcC1kcm9wLWluY29ycmVjdC1yZWZlcmVuY2UtdG8tZ3N0cmVhbWVyLXNkcC1pbi1NYS5wYXRjaAppbmRleCA0MmQ5OWMxLi40YWRmNjA1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwNC1ydHNwLWRyb3AtaW5jb3JyZWN0LXJlZmVyZW5jZS10by1nc3RyZWFtZXItc2RwLWluLU1hLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDA0LXJ0c3AtZHJvcC1pbmNvcnJlY3QtcmVmZXJlbmNlLXRvLWdzdHJlYW1lci1zZHAtaW4tTWEucGF0Y2gKQEAgLTE0LDcgKzE0LDcgQEAKIGluZGV4IDRmNmQ5ZjguLjBhZmEzNzAgMTAwNjQ0CiAtLS0gYS9nc3QtbGlicy9nc3QvcnRzcC9NYWtlZmlsZS5hbQogKysrIGIvZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0KLUBAIC03NCw3ICs3NCw2IEBAIEdzdFJ0c3AtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0cnRzcC1AR1NUX0FQSV9WRVJTCitAQCAtNzUsNyArNzUsNiBAQCBHc3RSdHNwLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHJ0c3AtQEdTVF9BUElfVkVSUwogIAkJLS1saWJ0b29sPSIkKExJQlRPT0wpIiBcCiAgCQktLXBrZyBnaW8tMi4wIFwKICAJCS0tcGtnIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwNC1zdWJwYXJzZS1zZXQtbmVlZF9zZWdtZW50LWFmdGVyLXNpbmstcGFkLXJlY2VpdmVkLUdTLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDQtc3VicGFyc2Utc2V0LW5lZWRfc2VnbWVudC1hZnRlci1zaW5rLXBhZC1yZWNlaXZlZC1HUy5wYXRjaAppbmRleCA3ODEzOTE1Li5iOTI0ZTM4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwNC1zdWJwYXJzZS1zZXQtbmVlZF9zZWdtZW50LWFmdGVyLXNpbmstcGFkLXJlY2VpdmVkLUdTLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDA0LXN1YnBhcnNlLXNldC1uZWVkX3NlZ21lbnQtYWZ0ZXItc2luay1wYWQtcmVjZWl2ZWQtR1MucGF0Y2gKQEAgLTUxLDcgKzUxLDcgQEAKICAgICAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoc2VsZiwgInNlZWsgdG8gMCBieXRlcyBmYWlsZWQiKTsKICAgICAgICB9CiAgCi1AQCAtMTYzMiw4ICsxNjMwLDEwIEBAIGdzdF9zdWJfcGFyc2Vfc2lua19ldmVudCAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEV2ZW50ICogZXZlbnQpCitAQCAtMTY0MSw4ICsxNjM5LDEwIEBAIGdzdF9zdWJfcGFyc2Vfc2lua19ldmVudCAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEV2ZW50ICogZXZlbnQpCiAgICAgICAgZ3N0X2V2ZW50X3BhcnNlX3NlZ21lbnQgKGV2ZW50LCAmcyk7CiAgICAgICAgaWYgKHMtPmZvcm1hdCA9PSBHU1RfRk9STUFUX1RJTUUpCiAgICAgICAgICBnc3RfZXZlbnRfY29weV9zZWdtZW50IChldmVudCwgJnNlbGYtPnNlZ21lbnQpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDUtY29udmVydGZyYW1lLVN1cHBvcnQtdmlkZW8tY3JvcC13aGVuLWNvbnZlcnQtZnJhbWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwNS1jb252ZXJ0ZnJhbWUtU3VwcG9ydC12aWRlby1jcm9wLXdoZW4tY29udmVydC1mcmFtZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDk2YTZmNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwNS1jb252ZXJ0ZnJhbWUtU3VwcG9ydC12aWRlby1jcm9wLXdoZW4tY29udmVydC1mcmFtZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0MyArMCwwIEBACi1Gcm9tIDViZTZlZDAwYWFkMDI4ZDljYmI0ZTBjNjNhZjBiZTY5ZDMzNWM3MWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTb25nIEJpbmcgPGIwNjQ5OEBmcmVlc2NhbGUuY29tPgotRGF0ZTogRnJpLCAxMSBEZWMgMjAxNSAyMTo0MjowMCArMDgwMAotU3ViamVjdDogW1BBVENIXSBjb252ZXJ0ZnJhbWU6IFN1cHBvcnQgdmlkZW8gY3JvcCB3aGVuIGNvbnZlcnQgZnJhbWUKLQotR2V0IHRodW1ibmFpbCB3aWxsIHVzZXIgY29udmVydGZyYW1lIHRvIGNvbnZlcnQgdmlkZW8gZnJhbWUgdG8KLWRlc2lyZWQgdmlkZW8gZm9ybWF0IGFuZCBzaXplLiBCdXQgaGF2ZW4ndCBwcm9jZXNzIGNyb3AgbWV0YSBvbgotdGhlIHZpZGVvIGJ1ZmZlci4gQWRkIHN1cHBvcnQgdmlkZW8gY3JvcC4KLQotaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1OTMyOQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFsxLjcuMV0KLQotLS0tCi0gZ3N0LWxpYnMvZ3N0L3ZpZGVvL2NvbnZlcnRmcmFtZS5jIHwgNjUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDU2IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvdmlkZW8vY29udmVydGZyYW1lLmMgYi9nc3QtbGlicy9nc3QvdmlkZW8vY29udmVydGZyYW1lLmMKLWluZGV4IGFhOWMzZDMuLjk0MmE1MWUgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9nc3QvdmlkZW8vY29udmVydGZyYW1lLmMKLSsrKyBiL2dzdC1saWJzL2dzdC92aWRlby9jb252ZXJ0ZnJhbWUuYwotQEAgLTExMCwxMiArMTEwLDIzIEBAIGZhaWw6Ci0gc3RhdGljIEdzdEVsZW1lbnQgKgotIGJ1aWxkX2NvbnZlcnRfZnJhbWVfcGlwZWxpbmUgKEdzdEVsZW1lbnQgKiogc3JjX2VsZW1lbnQsCi0gICAgIEdzdEVsZW1lbnQgKiogc2lua19lbGVtZW50LCBjb25zdCBHc3RDYXBzICogZnJvbV9jYXBzLAotLSAgICBjb25zdCBHc3RDYXBzICogdG9fY2FwcywgR0Vycm9yICoqIGVycikKLSsgICAgR3N0VmlkZW9Dcm9wTWV0YSAqIGNtZXRhLCBjb25zdCBHc3RDYXBzICogdG9fY2FwcywgR0Vycm9yICoqIGVycikKLSB7Ci0tICBHc3RFbGVtZW50ICpzcmMgPSBOVUxMLCAqY3NwID0gTlVMTCwgKnZzY2FsZSA9IE5VTEw7Ci0tICBHc3RFbGVtZW50ICpzaW5rID0gTlVMTCwgKmVuY29kZXIgPSBOVUxMLCAqcGlwZWxpbmU7Ci0rICBHc3RFbGVtZW50ICp2Y3JvcCA9IE5VTEwsICpjc3AgPSBOVUxMLCAqY3NwMiA9IE5VTEwsICp2c2NhbGUgPSBOVUxMOwotKyAgR3N0RWxlbWVudCAqc3JjID0gTlVMTCwgKnNpbmsgPSBOVUxMLCAqZW5jb2RlciA9IE5VTEwsICpwaXBlbGluZTsKLSsgIEdzdFZpZGVvSW5mbyBpbmZvOwotICAgR0Vycm9yICplcnJvciA9IE5VTEw7Ci0gCi0rICBpZiAoY21ldGEpIHsKLSsgICAgaWYgKCFjcmVhdGVfZWxlbWVudCAoInZpZGVvY3JvcCIsICZ2Y3JvcCwgJmVycm9yKSkgewotKyAgICAgIGdfd2FybmluZwotKyAgICAgICAgICAoImJ1aWxkX2NvbnZlcnRfZnJhbWVfcGlwZWxpbmU6IEJ1ZmZlciBoYXMgY3JvcCBtZXRhZGF0YSBidXQgdmlkZW9jcm9wIGVsZW1lbnQgaXMgbm90IGZvdW5kLiBDcm9wcGluZyB3aWxsIGJlIGRpc2FibGVkIik7Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgaWYgKCFjcmVhdGVfZWxlbWVudCAoInZpZGVvY29udmVydCIsICZjc3AyLCAmZXJyb3IpKQotKyAgICAgICAgZ290byBub19lbGVtZW50czsKLSsgICAgfQotKyAgfQotKwotICAgLyogdmlkZW9zY2FsZSBpcyBoZXJlIHRvIGNvcnJlY3QgZm9yIHRoZSBwaXhlbC1hc3BlY3QtcmF0aW8gZm9yIHVzICovCi0gICBHU1RfREVCVUcgKCJjcmVhdGluZyBlbGVtZW50cyIpOwotICAgaWYgKCFjcmVhdGVfZWxlbWVudCAoImFwcHNyYyIsICZzcmMsICZlcnJvcikgfHwKLUBAIC0xMzMsMTUgKzE0NCw0MiBAQCBidWlsZF9jb252ZXJ0X2ZyYW1lX3BpcGVsaW5lIChHc3RFbGVtZW50ICoqIHNyY19lbGVtZW50LAotIAotICAgR1NUX0RFQlVHICgiYWRkaW5nIGVsZW1lbnRzIik7Ci0gICBnc3RfYmluX2FkZF9tYW55IChHU1RfQklOIChwaXBlbGluZSksIHNyYywgY3NwLCB2c2NhbGUsIHNpbmssIE5VTEwpOwotKyAgaWYgKHZjcm9wKQotKyAgICBnc3RfYmluX2FkZF9tYW55IChHU1RfQklOIChwaXBlbGluZSksIHZjcm9wLCBjc3AyLCBOVUxMKTsKLSAKLSAgIC8qIHNldCBjYXBzICovCi0gICBnX29iamVjdF9zZXQgKHNyYywgImNhcHMiLCBmcm9tX2NhcHMsIE5VTEwpOwotKyAgaWYgKHZjcm9wKSB7Ci0rICAgIGdzdF92aWRlb19pbmZvX2Zyb21fY2FwcyAoJmluZm8sIGZyb21fY2Fwcyk7Ci0rICAgIGdfb2JqZWN0X3NldCAodmNyb3AsICJsZWZ0IiwgY21ldGEtPngsIE5VTEwpOwotKyAgICBnX29iamVjdF9zZXQgKHZjcm9wLCAidG9wIiwgY21ldGEtPnksIE5VTEwpOwotKyAgICBnX29iamVjdF9zZXQgKHZjcm9wLCAicmlnaHQiLCBHU1RfVklERU9fSU5GT19XSURUSCAoJmluZm8pIC0gY21ldGEtPndpZHRoLAotKyAgICAgICAgTlVMTCk7Ci0rICAgIGdfb2JqZWN0X3NldCAodmNyb3AsICJib3R0b20iLAotKyAgICAgICAgR1NUX1ZJREVPX0lORk9fSEVJR0hUICgmaW5mbykgLSBjbWV0YS0+aGVpZ2h0LCBOVUxMKTsKLSsgICAgR1NUX0RFQlVHICgiY3JvcCBtZXRhIFt4LHksd2lkdGgsaGVpZ2h0XTogJWQgJWQgJWQgJWQiLCBjbWV0YS0+eCwgY21ldGEtPnksCi0rICAgICAgICBjbWV0YS0+d2lkdGgsIGNtZXRhLT5oZWlnaHQpOwotKyAgfQotICAgZ19vYmplY3Rfc2V0IChzaW5rLCAiY2FwcyIsIHRvX2NhcHMsIE5VTEwpOwotIAotICAgLyogRklYTUU6IGxpbmtpbmcgaXMgc3RpbGwgd2F5IHRvbyBleHBlbnNpdmUsIHByb2ZpbGUgdGhpcyBwcm9wZXJseSAqLwotLSAgR1NUX0RFQlVHICgibGlua2luZyBzcmMtPmNzcCIpOwotLSAgaWYgKCFnc3RfZWxlbWVudF9saW5rX3BhZHMgKHNyYywgInNyYyIsIGNzcCwgInNpbmsiKSkKLS0gICAgZ290byBsaW5rX2ZhaWxlZDsKLSsgIGlmICh2Y3JvcCkgewotKyAgICBHU1RfREVCVUcgKCJsaW5raW5nIHNyYy0+Y3NwMiIpOwotKyAgICBpZiAoIWdzdF9lbGVtZW50X2xpbmtfcGFkcyAoc3JjLCAic3JjIiwgY3NwMiwgInNpbmsiKSkKLSsgICAgICBnb3RvIGxpbmtfZmFpbGVkOwotKwotKyAgICBHU1RfREVCVUcgKCJsaW5raW5nIGNzcDItPnZjcm9wIik7Ci0rICAgIGlmICghZ3N0X2VsZW1lbnRfbGlua19wYWRzIChjc3AyLCAic3JjIiwgdmNyb3AsICJzaW5rIikpCi0rICAgICAgZ290byBsaW5rX2ZhaWxlZDsKLSsKLSsgICAgR1NUX0RFQlVHICgibGlua2luZyB2Y3JvcC0+Y3NwIik7Ci0rICAgIGlmICghZ3N0X2VsZW1lbnRfbGlua19wYWRzICh2Y3JvcCwgInNyYyIsIGNzcCwgInNpbmsiKSkKLSsgICAgICBnb3RvIGxpbmtfZmFpbGVkOwotKyAgfSBlbHNlIHsKLSsgICAgR1NUX0RFQlVHICgibGlua2luZyBzcmMtPmNzcCIpOwotKyAgICBpZiAoIWdzdF9lbGVtZW50X2xpbmtfcGFkcyAoc3JjLCAic3JjIiwgY3NwLCAic2luayIpKQotKyAgICAgIGdvdG8gbGlua19mYWlsZWQ7Ci0rICB9Ci0gCi0gICBHU1RfREVCVUcgKCJsaW5raW5nIGNzcC0+dnNjYWxlIik7Ci0gICBpZiAoIWdzdF9lbGVtZW50X2xpbmtfcGFkc19mdWxsIChjc3AsICJzcmMiLCB2c2NhbGUsICJzaW5rIiwKLUBAIC0xOTMsOCArMjMxLDEyIEBAIG5vX2VsZW1lbnRzOgotICAgewotICAgICBpZiAoc3JjKQotICAgICAgIGdzdF9vYmplY3RfdW5yZWYgKHNyYyk7Ci0rICAgIGlmICh2Y3JvcCkKLSsgICAgICBnc3Rfb2JqZWN0X3VucmVmICh2Y3JvcCk7Ci0gICAgIGlmIChjc3ApCi0gICAgICAgZ3N0X29iamVjdF91bnJlZiAoY3NwKTsKLSsgICAgaWYgKGNzcDIpCi0rICAgICAgZ3N0X29iamVjdF91bnJlZiAoY3NwMik7Ci0gICAgIGlmICh2c2NhbGUpCi0gICAgICAgZ3N0X29iamVjdF91bnJlZiAodnNjYWxlKTsKLSAgICAgaWYgKHNpbmspCi1AQCAtMjA5LDcgKzI1MSwxMSBAQCBub19lbGVtZW50czoKLSBub19waXBlbGluZToKLSAgIHsKLSAgICAgZ3N0X29iamVjdF91bnJlZiAoc3JjKTsKLSsgICAgaWYgKHZjcm9wKQotKyAgICAgIGdzdF9vYmplY3RfdW5yZWYgKHZjcm9wKTsKLSAgICAgZ3N0X29iamVjdF91bnJlZiAoY3NwKTsKLSsgICAgaWYgKGNzcDIpCi0rICAgICAgZ3N0X29iamVjdF91bnJlZiAoY3NwMik7Ci0gICAgIGdzdF9vYmplY3RfdW5yZWYgKHZzY2FsZSk7Ci0gICAgIGdzdF9vYmplY3RfdW5yZWYgKHNpbmspOwotIAotQEAgLTI4Miw3ICszMjgsOCBAQCBnc3RfdmlkZW9fY29udmVydF9zYW1wbGUgKEdzdFNhbXBsZSAqIHNhbXBsZSwgY29uc3QgR3N0Q2FwcyAqIHRvX2NhcHMsCi0gICB9Ci0gCi0gICBwaXBlbGluZSA9Ci0tICAgICAgYnVpbGRfY29udmVydF9mcmFtZV9waXBlbGluZSAoJnNyYywgJnNpbmssIGZyb21fY2FwcywgdG9fY2Fwc19jb3B5LCAmZXJyKTsKLSsgICAgICBidWlsZF9jb252ZXJ0X2ZyYW1lX3BpcGVsaW5lICgmc3JjLCAmc2luaywgZnJvbV9jYXBzLAotKyAgICAgIGdzdF9idWZmZXJfZ2V0X3ZpZGVvX2Nyb3BfbWV0YSAoYnVmKSwgdG9fY2Fwc19jb3B5LCAmZXJyKTsKLSAgIGlmICghcGlwZWxpbmUpCi0gICAgIGdvdG8gbm9fcGlwZWxpbmU7Ci0gCi1AQCAtNjQ2LDggKzY5Myw4IEBAIGdzdF92aWRlb19jb252ZXJ0X3NhbXBsZV9hc3luYyAoR3N0U2FtcGxlICogc2FtcGxlLAotICAgfQotIAotICAgcGlwZWxpbmUgPQotLSAgICAgIGJ1aWxkX2NvbnZlcnRfZnJhbWVfcGlwZWxpbmUgKCZzcmMsICZzaW5rLCBmcm9tX2NhcHMsIHRvX2NhcHNfY29weSwKLS0gICAgICAmZXJyb3IpOwotKyAgICAgIGJ1aWxkX2NvbnZlcnRfZnJhbWVfcGlwZWxpbmUgKCZzcmMsICZzaW5rLCBmcm9tX2NhcHMsCi0rICAgICAgZ3N0X2J1ZmZlcl9nZXRfdmlkZW9fY3JvcF9tZXRhIChidWYpLCB0b19jYXBzX2NvcHksICZlcnJvcik7Ci0gICBpZiAoIXBpcGVsaW5lKQotICAgICBnb3RvIG5vX3BpcGVsaW5lOwotIAotLS0gCi0yLjUuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvZW5jb2RlYmluLU5lZWQtbW9yZS1idWZmZXJzLWluLW91dHB1dC1xdWV1ZS1mb3ItYmV0dC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS9lbmNvZGViaW4tTmVlZC1tb3JlLWJ1ZmZlcnMtaW4tb3V0cHV0LXF1ZXVlLWZvci1iZXR0LnBhdGNoCmluZGV4IDMyNTY3MTcuLjUzNDFlM2MgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS9lbmNvZGViaW4tTmVlZC1tb3JlLWJ1ZmZlcnMtaW4tb3V0cHV0LXF1ZXVlLWZvci1iZXR0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS9lbmNvZGViaW4tTmVlZC1tb3JlLWJ1ZmZlcnMtaW4tb3V0cHV0LXF1ZXVlLWZvci1iZXR0LnBhdGNoCkBAIC0xNyw3ICsxNyw3IEBACiBpbmRleCA2NzI4ZTU4Li4zMmRhYWU0IDEwMDY0NAogLS0tIGEvZ3N0L2VuY29kaW5nL2dzdGVuY29kZWJpbi5jCiArKysgYi9nc3QvZW5jb2RpbmcvZ3N0ZW5jb2RlYmluLmMKLUBAIC0xMTM4LDggKzExMzgsNyBAQCBfY3JlYXRlX3N0cmVhbV9ncm91cCAoR3N0RW5jb2RlQmluICogZWJpbiwgR3N0RW5jb2RpbmdQcm9maWxlICogc3Byb2YsCitAQCAtMTIyOCw4ICsxMjI4LDcgQEAgX2NyZWF0ZV9zdHJlYW1fZ3JvdXAgKEdzdEVuY29kZUJpbiAqIGViaW4sIEdzdEVuY29kaW5nUHJvZmlsZSAqIHNwcm9mLAogICAgICogV2Ugb25seSB1c2UgYSAxYnVmZmVyIGxvbmcgcXVldWUgaGVyZSwgdGhlIGFjdHVhbCBxdWV1ZWluZyB3aWxsIGJlIGRvbmUKICAgICAqIGluIHRoZSBpbnB1dCBxdWV1ZSAqLwogICAgbGFzdCA9IHNncm91cC0+b3V0cXVldWUgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UgKCJxdWV1ZSIsIE5VTEwpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlL2dldC1jYXBzLWZyb20tc3JjLXBhZC13aGVuLXF1ZXJ5LWNhcHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvZ2V0LWNhcHMtZnJvbS1zcmMtcGFkLXdoZW4tcXVlcnktY2Fwcy5wYXRjaAppbmRleCAyODRhYmJlLi5jOGU2Mjg3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvZ2V0LWNhcHMtZnJvbS1zcmMtcGFkLXdoZW4tcXVlcnktY2Fwcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvZ2V0LWNhcHMtZnJvbS1zcmMtcGFkLXdoZW4tcXVlcnktY2Fwcy5wYXRjaApAQCAtMTksNyArMTksNyBAQAogaW5kZXggOWI2YzQ3OC4uYWUyMjk0YQogLS0tIGEvZ3N0LWxpYnMvZ3N0L3RhZy9nc3R0YWdkZW11eC5jCiArKysgYi9nc3QtbGlicy9nc3QvdGFnL2dzdHRhZ2RlbXV4LmMKLUBAIC0xNzA4LDYgKzE3MDgsMTkgQEAgZ3N0X3RhZ19kZW11eF9wYWRfcXVlcnkgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RRdWVyeSAqIHF1ZXJ5KQorQEAgLTE3NjksNiArMTc2OSwxOSBAQCBnc3RfdGFnX2RlbXV4X3BhZF9xdWVyeSAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdFF1ZXJ5ICogcXVlcnkpCiAgICAgICAgfQogICAgICAgIGJyZWFrOwogICAgICB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvbWFrZS1naW9fdW5peF8yXzAtZGVwZW5kZW5jeS1jb25maWd1cmFibGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvbWFrZS1naW9fdW5peF8yXzAtZGVwZW5kZW5jeS1jb25maWd1cmFibGUucGF0Y2gKaW5kZXggMDFlOTQ0ZC4uNDEzZWZmMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlL21ha2UtZ2lvX3VuaXhfMl8wLWRlcGVuZGVuY3ktY29uZmlndXJhYmxlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS9tYWtlLWdpb191bml4XzJfMC1kZXBlbmRlbmN5LWNvbmZpZ3VyYWJsZS5wYXRjaApAQCAtMjUsOCArMjUsOCBAQAogaW5kZXggOWM1MmFlYi4uMjZjYWNkNiAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNzQ3LDkgKzc0NywxNiBAQCBBQ19TVUJTVChGVDJfQ0ZMQUdTKQotIEFDX1NVQlNUKEZUMl9MSUJTKQorQEAgLTc1Miw5ICs3NTIsMTYgQEAgQUNfU1VCU1QoRlQyX0NGTEFHUykKKyBmaSBkbmwgb2YgRVhUIHBsdWdpbnMKICAKICBkbmwgKioqIGdpby11bml4LTIuMCBmb3IgdGVzdHMvY2hlY2svcGlwZWxpbmVzL3RjcC5jICoqKgogK0FDX0FSR19FTkFCTEUoW2dpb191bml4XzJfMF0sCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2VfMS42LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2VfMS42LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyOWRjOTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlXzEuNi4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotaW5jbHVkZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jNTRjZTkzNDU3MjcxNzVmZjY2ZDE3YjY3ZmY1MWY1OCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9Njc2MmVkNDQyYjM4MjIzODdhNTFjOTJkOTI4ZWFkMGQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vY29tbW9uL2NvdmVyYWdlL2NvdmVyYWdlLXJlcG9ydC5wbDtiZWdpbmxpbmU9MjtlbmRsaW5lPTE3O21kNT1hNGUxODMwZmNlMDc4MDI4YzhmMDk3NDE2MTI3MjYwNyIKLQotIyBOb3RlOiBUaGUgZGVwZW5kZW5jeSBvbiBmcmVldHlwZSB3YXMgZHJvcHBlZCBzaG9ydGx5IGFmdGVyIHRoZSAxLjcuMSByZWxlYXNlCi0jIHNvIHRoZXNlIGxpbmVzIHNob3VsZCBiZSByZW1vdmVkIGR1cmluZyB0aGUgdXBkYXRlIHRvIDEuOC54Ci0jIGh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0LXBsdWdpbnMtYmFzZS9jb21taXQvP2lkPTE4MzYxMGMwMzVkZDY5NTVjOWIzNTQwYjk0MGFlYzUwNDc0YWYwMzEKLURFUEVORFMgKz0gImZyZWV0eXBlIgotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtZnJlZXR5cGV0ZXN0IgotCi1TUkNfVVJJID0gIiBcCi0gICAgaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLWJhc2UvZ3N0LXBsdWdpbnMtYmFzZS0ke1BWfS50YXIueHogXAotICAgIGZpbGU6Ly9nZXQtY2Fwcy1mcm9tLXNyYy1wYWQtd2hlbi1xdWVyeS1jYXBzLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMy1zc2FwYXJzZS1lbmhhbmNlLVNTQS10ZXh0LWxpbmVzLXBhcnNpbmcucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA0LXN1YnBhcnNlLXNldC1uZWVkX3NlZ21lbnQtYWZ0ZXItc2luay1wYWQtcmVjZWl2ZWQtR1MucGF0Y2ggXAotICAgIGZpbGU6Ly9lbmNvZGViaW4tTmVlZC1tb3JlLWJ1ZmZlcnMtaW4tb3V0cHV0LXF1ZXVlLWZvci1iZXR0LnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwNS1jb252ZXJ0ZnJhbWUtU3VwcG9ydC12aWRlby1jcm9wLXdoZW4tY29udmVydC1mcmFtZS5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzZGRkZTBhZDU5OGVmNjlmNThkNmEyZTg3ZjhiNDYwZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiNjE1NGY4ZmRiYTQ4NzdlOTVlZmQ5NDYxMGVmMGFkYTRmMDE3MWNkMTJlYjgyOWEzYzNjOTczNDVkOWM3YTc1IgotCi1TID0gIiR7V09SS0RJUn0vZ3N0LXBsdWdpbnMtYmFzZS0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZV8xLjguMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZV8xLjguMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODZiNWFjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlXzEuOC4zLmJiCkBAIC0wLDAgKzEsMTkgQEAKK2luY2x1ZGUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzU0Y2U5MzQ1NzI3MTc1ZmY2NmQxN2I2N2ZmNTFmNTggXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTY3NjJlZDQ0MmIzODIyMzg3YTUxYzkyZDkyOGVhZDBkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2NvbW1vbi9jb3ZlcmFnZS9jb3ZlcmFnZS1yZXBvcnQucGw7YmVnaW5saW5lPTI7ZW5kbGluZT0xNzttZDU9YTRlMTgzMGZjZTA3ODAyOGM4ZjA5NzQxNjEyNzI2MDciCisKK1NSQ19VUkkgPSAiIFwKKyAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtYmFzZS9nc3QtcGx1Z2lucy1iYXNlLSR7UFZ9LnRhci54eiBcCisgICAgZmlsZTovL2dldC1jYXBzLWZyb20tc3JjLXBhZC13aGVuLXF1ZXJ5LWNhcHMucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAzLXNzYXBhcnNlLWVuaGFuY2UtU1NBLXRleHQtbGluZXMtcGFyc2luZy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDQtc3VicGFyc2Utc2V0LW5lZWRfc2VnbWVudC1hZnRlci1zaW5rLXBhZC1yZWNlaXZlZC1HUy5wYXRjaCBcCisgICAgZmlsZTovL2VuY29kZWJpbi1OZWVkLW1vcmUtYnVmZmVycy1pbi1vdXRwdXQtcXVldWUtZm9yLWJldHQucGF0Y2ggXAorICAgIGZpbGU6Ly9tYWtlLWdpb191bml4XzJfMC1kZXBlbmRlbmN5LWNvbmZpZ3VyYWJsZS5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0ZDAzZGQ4MTgyOGVhNmI5OGE0NGM4ZjFhYjdmNDk3NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxMTQ4NzFkNGQ2MzYwNmI0YWY0MjRhODQzM2NkOTIzZTRmZjY2ODk2YjI0NGJiN2FjOTdiOWRhNDdmNzFlNzllIgorCitTID0gIiR7V09SS0RJUn0vZ3N0LXBsdWdpbnMtYmFzZS0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2VfZ2l0LmJiCmluZGV4IDM4YTlmY2MuLjNjMmI1MDQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZV9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlX2dpdC5iYgpAQCAtNywxNyArNywyMSBAQAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vY29tbW9uL2NvdmVyYWdlL2NvdmVyYWdlLXJlcG9ydC5wbDtiZWdpbmxpbmU9MjtlbmRsaW5lPTE3O21kNT1hNGUxODMwZmNlMDc4MDI4YzhmMDk3NDE2MTI3MjYwNyIKIAogU1JDX1VSSSA9ICIgXAotICAgIGdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL2dzdHJlYW1lci9nc3QtcGx1Z2lucy1iYXNlO25hbWU9YmFzZSBcCisgICAgZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvZ3N0cmVhbWVyL2dzdC1wbHVnaW5zLWJhc2U7YnJhbmNoPTEuODtuYW1lPWJhc2UgXAogICAgIGdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL2dzdHJlYW1lci9jb21tb247ZGVzdHN1ZmZpeD1naXQvY29tbW9uO25hbWU9Y29tbW9uIFwKKyAgICBmaWxlOi8vZ2V0LWNhcHMtZnJvbS1zcmMtcGFkLXdoZW4tcXVlcnktY2Fwcy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDMtc3NhcGFyc2UtZW5oYW5jZS1TU0EtdGV4dC1saW5lcy1wYXJzaW5nLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNC1zdWJwYXJzZS1zZXQtbmVlZF9zZWdtZW50LWFmdGVyLXNpbmstcGFkLXJlY2VpdmVkLUdTLnBhdGNoIFwKKyAgICBmaWxlOi8vZW5jb2RlYmluLU5lZWQtbW9yZS1idWZmZXJzLWluLW91dHB1dC1xdWV1ZS1mb3ItYmV0dC5wYXRjaCBcCiAgICAgZmlsZTovL21ha2UtZ2lvX3VuaXhfMl8wLWRlcGVuZGVuY3ktY29uZmlndXJhYmxlLnBhdGNoIFwKICIKIAotUFYgPSAiMS43LjIrZ2l0JHtTUkNQVn0iCitQViA9ICIxLjguMitnaXQke1NSQ1BWfSIKIAogVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+KFxkKyhcLlxkKykrKSkiCiAKLVNSQ1JFVl9iYXNlID0gIjk3ZTEwOGJlYmFhNTg4MjFmNDU2NmE3NGNiZjAxMzVlOTM0MDdjMDEiCi1TUkNSRVZfY29tbW9uID0gImI2NGYwM2Y2MDkwMjQ1NjI0NjA4YmViNWQyZmZmMzM1ZTIzYTAxYzAiCitTUkNSRVZfYmFzZSA9ICI3MGYzNzUwNzczYmY1ZGJhNDA5OGY2ZDcyZDYzYWE2Yzg0ZjFmNTM5IgorU1JDUkVWX2NvbW1vbiA9ICJmMzYzYjMyMDU2NThhMzhlODRmYTc3ZjE5ZGVlMjE4Y2Q0NDQ1Mjc1IgogU1JDUkVWX0ZPUk1BVCA9ICJiYXNlIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC5pbmMKaW5kZXggNDYyMWJmOC4uZjFlMzBhYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QuaW5jCkBAIC0yMywxMiArMjMsMTIgQEAKIFBBQ0tBR0VDT05GSUdbamFja10gICAgICAgPSAiLS1lbmFibGUtamFjaywtLWRpc2FibGUtamFjayxqYWNrIgogUEFDS0FHRUNPTkZJR1tqcGVnXSAgICAgICA9ICItLWVuYWJsZS1qcGVnLC0tZGlzYWJsZS1qcGVnLGpwZWciCiBQQUNLQUdFQ09ORklHW2xpYnBuZ10gICAgID0gIi0tZW5hYmxlLWxpYnBuZywtLWRpc2FibGUtbGlicG5nLGxpYnBuZyIKLVBBQ0tBR0VDT05GSUdbbGlidjRsMl0gICAgPSAiLS13aXRoLWxpYnY0bDIsLS13aXRob3V0LWxpYnY0bDIsbGlidjRsMiIKK1BBQ0tBR0VDT05GSUdbbGlidjRsMl0gICAgPSAiLS13aXRoLWxpYnY0bDIsLS13aXRob3V0LWxpYnY0bDIsdjRsLXV0aWxzIgogUEFDS0FHRUNPTkZJR1twdWxzZWF1ZGlvXSA9ICItLWVuYWJsZS1wdWxzZSwtLWRpc2FibGUtcHVsc2UscHVsc2VhdWRpbyIKIFBBQ0tBR0VDT05GSUdbc291cF0gICAgICAgPSAiLS1lbmFibGUtc291cCwtLWRpc2FibGUtc291cCxsaWJzb3VwLTIuNCIKIFBBQ0tBR0VDT05GSUdbc3BlZXhdICAgICAgPSAiLS1lbmFibGUtc3BlZXgsLS1kaXNhYmxlLXNwZWV4LHNwZWV4IgogUEFDS0FHRUNPTkZJR1t0YWdsaWJdICAgICA9ICItLWVuYWJsZS10YWdsaWIsLS1kaXNhYmxlLXRhZ2xpYix0YWdsaWIiCi1QQUNLQUdFQ09ORklHW3Y0bDJdICAgICAgID0gIi0tZW5hYmxlLWdzdF92NGwyLC0tZGlzYWJsZS1nc3RfdjRsMiIKK1BBQ0tBR0VDT05GSUdbdjRsMl0gICAgICAgPSAiLS1lbmFibGUtZ3N0X3Y0bDIgLS1lbmFibGUtdjRsMi1wcm9iZSwtLWRpc2FibGUtZ3N0X3Y0bDIiCiBQQUNLQUdFQ09ORklHW3ZweF0gICAgICAgID0gIi0tZW5hYmxlLXZweCwtLWRpc2FibGUtdnB4LGxpYnZweCIKIFBBQ0tBR0VDT05GSUdbd2F2cGFja10gICAgPSAiLS1lbmFibGUtd2F2cGFjaywtLWRpc2FibGUtd2F2cGFjayx3YXZwYWNrIgogUEFDS0FHRUNPTkZJR1t4MTFdICAgICAgICA9ICItLWVuYWJsZS14LC0tZGlzYWJsZS14LCR7WDExREVQRU5EU30iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QvMDAwMS1nc3RydHBtcDRncGF5LXNldC1kYWZhdWx0LXZhbHVlLWZvci1NUEVHNC13aXRob3V0LWNvLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLzAwMDEtZ3N0cnRwbXA0Z3BheS1zZXQtZGFmYXVsdC12YWx1ZS1mb3ItTVBFRzQtd2l0aG91dC1jby5wYXRjaApvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CmluZGV4IGQxOTczZDQuLmEyY2JiNzAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLzAwMDEtZ3N0cnRwbXA0Z3BheS1zZXQtZGFmYXVsdC12YWx1ZS1mb3ItTVBFRzQtd2l0aG91dC1jby5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QvMDAwMS1nc3RydHBtcDRncGF5LXNldC1kYWZhdWx0LXZhbHVlLWZvci1NUEVHNC13aXRob3V0LWNvLnBhdGNoCkBAIC0xNyw3ICsxNyw3IEBACiBpbmRleCA3OTEzZDlhLi4xNzQ5ZDM5IDEwMDY0NAogLS0tIGEvZ3N0L3J0cC9nc3RydHBtcDRncGF5LmMKICsrKyBiL2dzdC9ydHAvZ3N0cnRwbXA0Z3BheS5jCi1AQCAtMzkwLDYgKzM5MCw3IEBAIGdzdF9ydHBfbXA0Z19wYXlfc2V0Y2FwcyAoR3N0UlRQQmFzZVBheWxvYWQgKiBwYXlsb2FkLCBHc3RDYXBzICogY2FwcykKK0BAIC0zOTEsNiArMzkxLDcgQEAgZ3N0X3J0cF9tcDRnX3BheV9zZXRjYXBzIChHc3RSVFBCYXNlUGF5bG9hZCAqIHBheWxvYWQsIEdzdENhcHMgKiBjYXBzKQogICAgY29uc3QgR1ZhbHVlICpjb2RlY19kYXRhOwogICAgY29uc3QgZ2NoYXIgKm1lZGlhX3R5cGUgPSBOVUxMOwogICAgZ2Jvb2xlYW4gcmVzOwpAQCAtMjUsNyArMjUsNyBAQAogIAogICAgcnRwbXA0Z3BheSA9IEdTVF9SVFBfTVA0R19QQVkgKHBheWxvYWQpOwogIAotQEAgLTQwMCw3ICs0MDEsNiBAQCBnc3RfcnRwX21wNGdfcGF5X3NldGNhcHMgKEdzdFJUUEJhc2VQYXlsb2FkICogcGF5bG9hZCwgR3N0Q2FwcyAqIGNhcHMpCitAQCAtNDAxLDcgKzQwMiw2IEBAIGdzdF9ydHBfbXA0Z19wYXlfc2V0Y2FwcyAoR3N0UlRQQmFzZVBheWxvYWQgKiBwYXlsb2FkLCBHc3RDYXBzICogY2FwcykKICAgICAgR1NUX0xPR19PQkpFQ1QgKHJ0cG1wNGdwYXksICJnb3QgY29kZWNfZGF0YSIpOwogICAgICBpZiAoR19WQUxVRV9UWVBFIChjb2RlY19kYXRhKSA9PSBHU1RfVFlQRV9CVUZGRVIpIHsKICAgICAgICBHc3RCdWZmZXIgKmJ1ZmZlcjsKQEAgLTMzLDcgKzMzLDcgQEAKICAKICAgICAgICBidWZmZXIgPSBnc3RfdmFsdWVfZ2V0X2J1ZmZlciAoY29kZWNfZGF0YSk7CiAgICAgICAgR1NUX0xPR19PQkpFQ1QgKHJ0cG1wNGdwYXksICJjb25maWd1cmluZyBjb2RlY19kYXRhIik7Ci1AQCAtNDI2LDYgKzQyNiwyMyBAQCBnc3RfcnRwX21wNGdfcGF5X3NldGNhcHMgKEdzdFJUUEJhc2VQYXlsb2FkICogcGF5bG9hZCwgR3N0Q2FwcyAqIGNhcHMpCitAQCAtNDI3LDYgKzQyNywyMyBAQCBnc3RfcnRwX21wNGdfcGF5X3NldGNhcHMgKEdzdFJUUEJhc2VQYXlsb2FkICogcGF5bG9hZCwgR3N0Q2FwcyAqIGNhcHMpCiAgCiAgICAgICAgcnRwbXA0Z3BheS0+Y29uZmlnID0gZ3N0X2J1ZmZlcl9jb3B5IChidWZmZXIpOwogICAgICB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2RfMS42LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2RfMS42LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiNGY0MzYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kXzEuNi4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotaW5jbHVkZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9jb21tb24vY292ZXJhZ2UvY292ZXJhZ2UtcmVwb3J0LnBsO2JlZ2lubGluZT0yO2VuZGxpbmU9MTc7bWQ1PWE0ZTE4MzBmY2UwNzgwMjhjOGYwOTc0MTYxMjcyNjA3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC9yZXBsYXlnYWluL3JnYW5hbHlzaXMuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIzO21kNT1iNjBlYmVmZDViMmY1YThlMGNhYjZiZmVlMzkxYTVmZSIKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy1nb29kL2dzdC1wbHVnaW5zLWdvb2QtJHtQVn0udGFyLnh6IFwKLSAgICBmaWxlOi8vMDAwMS1nc3RydHBtcDRncGF5LXNldC1kYWZhdWx0LXZhbHVlLWZvci1NUEVHNC13aXRob3V0LWNvLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImExOTU4ZGY3YWE0OThiNDI3OTNlMmYyMDQ4NjczODE1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI0YjE5ZGI3MGIyYTgzNDYxZWJkZGZlMjAwMzNkYjQzMmRhZGZkYjVkNGI1NGZmYjFkZmEwZDgzMDEzNGExNzciCi0KLVMgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy1nb29kLSR7UFZ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kXzEuOC4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kXzEuOC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjYzY1NzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2RfMS44LjMuYmIKQEAgLTAsMCArMSwxNyBAQAoraW5jbHVkZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9jb21tb24vY292ZXJhZ2UvY292ZXJhZ2UtcmVwb3J0LnBsO2JlZ2lubGluZT0yO2VuZGxpbmU9MTc7bWQ1PWE0ZTE4MzBmY2UwNzgwMjhjOGYwOTc0MTYxMjcyNjA3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC9yZXBsYXlnYWluL3JnYW5hbHlzaXMuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIzO21kNT1iNjBlYmVmZDViMmY1YThlMGNhYjZiZmVlMzkxYTVmZSIKKworU1JDX1VSSSA9ICIgXAorICAgIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy1nb29kL2dzdC1wbHVnaW5zLWdvb2QtJHtQVn0udGFyLnh6IFwKKyAgICBmaWxlOi8vMDAwMS1nc3RydHBtcDRncGF5LXNldC1kYWZhdWx0LXZhbHVlLWZvci1NUEVHNC13aXRob3V0LWNvLnBhdGNoIFwKKyAgICBmaWxlOi8vYXZvaWQtaW5jbHVkaW5nLXN5cy1wb2xsLmgtZGlyZWN0bHkucGF0Y2ggXAorICAgIGZpbGU6Ly9lbnN1cmUtdmFsaWQtc2VudGluZWwtZm9yLWdzdF9zdHJ1Y3R1cmVfZ2V0LnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjQ3M2ViYjFmMTVjNjdkZTk5ZGRiNmU0ZDAyN2MwODc2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImExZDY1NzliYTIwM2E3NzM0OTI3YzI0YjkwYmY2NTkwZDg0NmM1YTVmY2VjMDFhNDgyMDEwMThjOGFkMjgyN2EiCisKK1MgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy1nb29kLSR7UFZ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZF9naXQuYmIKaW5kZXggOWNhZGM5YS4uOWI3OWFmMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2RfZ2l0LmJiCkBAIC03LDE4ICs3LDE5IEBACiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QvcmVwbGF5Z2Fpbi9yZ2FuYWx5c2lzLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMzttZDU9YjYwZWJlZmQ1YjJmNWE4ZTBjYWI2YmZlZTM5MWE1ZmUiCiAKIFNSQ19VUkkgPSAiIFwKLSAgICBnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0LXBsdWdpbnMtZ29vZDtuYW1lPWJhc2UgXAorICAgIGdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL2dzdHJlYW1lci9nc3QtcGx1Z2lucy1nb29kO2JyYW5jaD0xLjg7bmFtZT1iYXNlIFwKICAgICBnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvY29tbW9uO2Rlc3RzdWZmaXg9Z2l0L2NvbW1vbjtuYW1lPWNvbW1vbiBcCiAgICAgZmlsZTovL2F2b2lkLWluY2x1ZGluZy1zeXMtcG9sbC5oLWRpcmVjdGx5LnBhdGNoIFwKICAgICBmaWxlOi8vZW5zdXJlLXZhbGlkLXNlbnRpbmVsLWZvci1nc3Rfc3RydWN0dXJlX2dldC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtZ3N0cnRwbXA0Z3BheS1zZXQtZGFmYXVsdC12YWx1ZS1mb3ItTVBFRzQtd2l0aG91dC1jby5wYXRjaCBcCiAiCiAKLVBWID0gIjEuNy4yK2dpdCR7U1JDUFZ9IgorUFYgPSAiMS44LjIrZ2l0JHtTUkNQVn0iCiAKIFVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPihcZCsoXC5cZCspKykpIgogCi1TUkNSRVZfYmFzZSA9ICIxYjZmZGNlNjdjMTVkNTk5NTdlMzk1YjE5NTdhYTYyNTMyMjA5MmQ0IgotU1JDUkVWX2NvbW1vbiA9ICJiNjRmMDNmNjA5MDI0NTYyNDYwOGJlYjVkMmZmZjMzNWUyM2EwMWMwIgorU1JDUkVWX2Jhc2UgPSAiOWY3M2I1ODE4Zjk4Y2QwNDVlNzA0OWJiMzEzZGExYzk0MzYzNTEwOSIKK1NSQ1JFVl9jb21tb24gPSAiZjM2M2IzMjA1NjU4YTM4ZTg0ZmE3N2YxOWRlZTIxOGNkNDQ0NTI3NSIKIFNSQ1JFVl9GT1JNQVQgPSAiYmFzZSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHkuaW5jCmluZGV4IGFmZjIyMzAuLjcwOGFkN2EgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5LmluYwpAQCAtOSw3ICs5LDcgQEAKIAogUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCiAgICAgJHtHU1RSRUFNRVJfT1JDfSBcCi0gICAgYTUyZGVjIGxhbWUgbWFkIG1wZWcyZGVjIFwKKyAgICBhNTJkZWMgbGFtZSBtcGcxMjMgbXBlZzJkZWMgXAogIgogCiBQQUNLQUdFQ09ORklHW2E1MmRlY10gICA9ICItLWVuYWJsZS1hNTJkZWMsLS1kaXNhYmxlLWE1MmRlYyxsaWJhNTIiCkBAIC0yMCw2ICsyMCw3IEBACiBQQUNLQUdFQ09ORklHW2xhbWVdICAgICA9ICItLWVuYWJsZS1sYW1lLC0tZGlzYWJsZS1sYW1lLGxhbWUiCiBQQUNLQUdFQ09ORklHW21hZF0gICAgICA9ICItLWVuYWJsZS1tYWQsLS1kaXNhYmxlLW1hZCxsaWJtYWQiCiBQQUNLQUdFQ09ORklHW21wZWcyZGVjXSA9ICItLWVuYWJsZS1tcGVnMmRlYywtLWRpc2FibGUtbXBlZzJkZWMsbXBlZzJkZWMiCitQQUNLQUdFQ09ORklHW21wZzEyM10gICA9ICItLWVuYWJsZS1tcGcxMjMsLS1kaXNhYmxlLW1wZzEyMyxtcGcxMjMiCiBQQUNLQUdFQ09ORklHW3gyNjRdICAgICA9ICItLWVuYWJsZS14MjY0LC0tZGlzYWJsZS14MjY0LHgyNjQiCiAKIEVYVFJBX09FQ09ORiArPSAiIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseV8xLjYuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseV8xLjYuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2VkZmI4MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHlfMS42LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1pbmNsdWRlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHkuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL3hpbmdtdXguYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT00Yzc3MWI4YWYxODg3MjQ4NTVjYjk5Y2FkZDM5MDA2OCIKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy11Z2x5L2dzdC1wbHVnaW5zLXVnbHktJHtQVn0udGFyLnh6IFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImRiZDkyYWZiMzgxNmNiZmE5MGFiMWYxOTcxNDRhMmUyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJmZWNmN2I3Yzc4ODJmOGY2MmYxOTAwMDQ4ZjQwMTNmOThjMjE0ZmIzZDMzMDNkOGQ4MTIyNDViYjQxZmQwNjQiCi0KLVMgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy11Z2x5LSR7UFZ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5XzEuOC4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5XzEuOC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3NDU5MzcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHlfMS44LjMuYmIKQEAgLTAsMCArMSwxMyBAQAoraW5jbHVkZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5LmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZXN0cy9jaGVjay9lbGVtZW50cy94aW5nbXV4LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9NGM3NzFiOGFmMTg4NzI0ODU1Y2I5OWNhZGQzOTAwNjgiCisKK1NSQ19VUkkgPSAiIFwKKyAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtdWdseS9nc3QtcGx1Z2lucy11Z2x5LSR7UFZ9LnRhci54eiBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0ZmM2NmM3NzI1M2IwYWQ1Y2UyMjRiZGE2NTRiMmU3ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2ZmEyNTk5ZmRkMDcyZDMxZmJhZjUwYzM0YWY0MDZlMmJlOTQ0YTAxMGIxZjRlYWI2N2E1ZmUzMmEwMzEwNjkzIgorCitTID0gIiR7V09SS0RJUn0vZ3N0LXBsdWdpbnMtdWdseS0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHlfZ2l0LmJiCmluZGV4IDY5YWZlNGMuLjIyY2NhM2EgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseV9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5X2dpdC5iYgpAQCAtNiwyNCArNiwyMCBAQAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdGVzdHMvY2hlY2svZWxlbWVudHMveGluZ211eC5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjE7bWQ1PTRjNzcxYjhhZjE4ODcyNDg1NWNiOTljYWRkMzkwMDY4IgogCiBTUkNfVVJJID0gIiBcCi0gICAgZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvZ3N0cmVhbWVyL2dzdC1wbHVnaW5zLXVnbHk7bmFtZT1iYXNlIFwKKyAgICBnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0LXBsdWdpbnMtdWdseTticmFuY2g9MS44O25hbWU9YmFzZSBcCiAgICAgZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvZ3N0cmVhbWVyL2NvbW1vbjtkZXN0c3VmZml4PWdpdC9jb21tb247bmFtZT1jb21tb24gXAogIgogCi1QViA9ICIxLjcuMitnaXQke1NSQ1BWfSIKK1BWID0gIjEuOC4yK2dpdCR7U1JDUFZ9IgogCiBVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj4oXGQrKFwuXGQrKSspKSIKIAotU1JDUkVWX2Jhc2UgPSAiOGJkYjY4ZWRiYzYwNWUyMTMxNGI2MDhlN2EzOWJkYmFhYjczMDJiOCIKLVNSQ1JFVl9jb21tb24gPSAiYjY0ZjAzZjYwOTAyNDU2MjQ2MDhiZWI1ZDJmZmYzMzVlMjNhMDFjMCIKK1NSQ1JFVl9iYXNlID0gIjc5ZmU0M2MwMDkyNTQ1NWEzN2ZhYjZmYzQyOGU3ZjA4NjU1YTliYmQiCitTUkNSRVZfY29tbW9uID0gImYzNjNiMzIwNTY1OGEzOGU4NGZhNzdmMTlkZWUyMThjZDQ0NDUyNzUiCiBTUkNSRVZfRk9STUFUID0gImJhc2UiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLSMgVGhlIG1wZzEyMyBwbHVnaW4gd2FzIGFkZGVkIHByaW9yIHRvIHRoZSAxLjcuMiByZWxlYXNlCi0jIGh0dHBzOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcvZ3N0cmVhbWVyL2dzdC1wbHVnaW5zLXVnbHkvY29tbWl0Lz9pZD00M2JkNDViYTk5MWVmMzI0Nzk1N2NhMzdjZGNiNTJmNGI4YzBhY2IxCi1QQUNLQUdFQ09ORklHW21wZzEyM10gPSAiLS1lbmFibGUtbXBnMTIzLC0tZGlzYWJsZS1tcGcxMjMsbXBnMTIzIgotCiBkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKIAkke1N9L2F1dG9nZW4uc2ggLS1ub2NvbmZpZ3VyZQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLmluYwppbmRleCAyZGNlYzUwLi45Y2ZjZWMzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLmluYwpAQCAtNSw3ICs1LDcgQEAKIAogREVQRU5EUyA9ICJnc3RyZWFtZXIxLjAgZ2xpYi0yLjAtbmF0aXZlIgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgoraW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYwogCiBhY3BhdGhzID0gIi1JICR7U30vY29tbW9uL200IC1JICR7U30vbTQiCiAKQEAgLTMzLDggKzMzLDIxIEBACiBkZWxldGVfcGtnX200X2ZpbGUoKSB7CiAJIyBUaGlzIG00IGZpbGUgaXMgb3V0IG9mIGRhdGUgYW5kIGlzIG1pc3NpbmcgUEtHX0NPTkZJR19TWVNST09UX1BBVEggdHdlYWtzIHdoaWNoIHdlIG5lZWQgZm9yIGludHJvc3BlY3Rpb24KIAlybSAiJHtTfS9jb21tb24vbTQvcGtnLm00IiB8fCB0cnVlCisJcm0gLWYgIiR7U30vY29tbW9uL200L2d0ay1kb2MubTQiCiB9CiAKLWRvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gIiBkZWxldGVfcGtnX200X2ZpbGUiCisjIGdzdHJlYW1lciBpcyBub3QgdXNpbmcgc3lzdGVtLXdpZGUgbWFrZWZpbGVzICh3aGljaCB3ZSBwYXRjaCBpbiBndGtkb2MgcmVjaXBlLAorIyBidXQgaXRzIG93biBjdXN0b20gb25lcywgd2hpY2ggd2UgaGF2ZSB0byBwYXRjaCBoZXJlCitwYXRjaF9ndGtfZG9jX21ha2VmaWxlcygpIHsKKyAgICAgICAgIyBQYXRjaCB0aGUgZ3RrLWRvYyBtYWtlZmlsZXMgc28gdGhhdCB0aGUgcWVtdSB3cmFwcGVyIGlzIHVzZWQgdG8gcnVuIHRyYW5zaWVudCBiaW5hcmllcworICAgICAgICAjIGluc3RlYWQgb2YgbGlidG9vbCB3cmFwcGVyIG9yIHJ1bm5pbmcgdGhlbSBkaXJlY3RseQorICAgICAgICAjIEFsc28gc3Vic3RpdHV0ZSBhIGJvZ3VzIHBsdWdpbiBzY2FubmVyLCBhcyB0cnlpbmcgdG8gcnVuIHRoZSByZWFsIG9uZSBpcyBjYXVzaW5nIGlzc3VlcyBkdXJpbmcgYnVpbGQgb24geDg2XzY0LgorICAgICAgICBzZWQgLWkgXAorICAgICAgICAgICAtZSAic3xHVEtET0NfUlVOID0uKnxHVEtET0NfUlVOID0gXCQodG9wX2J1aWxkZGlyKS9ndGtkb2MtcWVtdXdyYXBwZXJ8IiBcCisgICAgICAgICAgIC1lICJzfFwkKEdUS0RPQ19FWFRSQV9FTlZJUk9OTUVOVCl8XCQoR1RLRE9DX0VYVFJBX0VOVklST05NRU5UKSBHU1RfUExVR0lOX1NDQU5ORVJfMV8wPVwkKHRvcF9idWlsZGRpcikvbGlicy9nc3QvaGVscGVycy9nc3QtcGx1Z2luLXNjYW5uZXItZHVtbXl8IiBcCisgICAgICAgICAgICR7U30vY29tbW9uL2d0ay1kb2MqbWFrCit9CisKK2RvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gIiBkZWxldGVfcGtnX200X2ZpbGUgcGF0Y2hfZ3RrX2RvY19tYWtlZmlsZXMiCiAKIFBBQ0tBR0VTX0RZTkFNSUMgPSAiXiR7UE59LS4qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIuaW5jCmluZGV4IGFlNmQzNjQuLjEzYmE0MGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1ydHNwLXNlcnZlci5pbmMKQEAgLTEzLDEyICsxMywyNiBAQAogCiBTID0gIiR7V09SS0RJUn0vJHtQTlJFQUx9LSR7UFZ9IgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgoraW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYworCisjIFN0YXJ0aW5nIHdpdGggMS44LjAgZ3N0LXJ0c3Atc2VydmVyIGluY2x1ZGVzIGRlcGVuZGVuY3ktbGVzcyBwbHVnaW5zIGFzIHdlbGwKK0xJQlYgPSAiMS4wIgorcmVxdWlyZSBnc3QtcGx1Z2lucy1wYWNrYWdlLmluYwogCiBkZWxldGVfcGtnX200X2ZpbGUoKSB7CiAgICAgICAgICMgVGhpcyBtNCBmaWxlIGlzIG91dCBvZiBkYXRlIGFuZCBpcyBtaXNzaW5nIFBLR19DT05GSUdfU1lTUk9PVF9QQVRIIHR3ZWFrcyB3aGljaCB3ZSBuZWVkIGZvciBpbnRyb3NwZWN0aW9uCiAgICAgICAgIHJtICIke1N9L2NvbW1vbi9tNC9wa2cubTQiIHx8IHRydWUKIH0KIAotZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiIGRlbGV0ZV9wa2dfbTRfZmlsZSIKKyMgZ3N0cmVhbWVyIGlzIG5vdCB1c2luZyBzeXN0ZW0td2lkZSBtYWtlZmlsZXMgKHdoaWNoIHdlIHBhdGNoIGluIGd0a2RvYyByZWNpcGUsCisjIGJ1dCBpdHMgb3duIGN1c3RvbSBvbmVzLCB3aGljaCB3ZSBoYXZlIHRvIHBhdGNoIGhlcmUKK3BhdGNoX2d0a19kb2NfbWFrZWZpbGVzKCkgeworICAgICAgICAjIFBhdGNoIHRoZSBndGstZG9jIG1ha2VmaWxlcyBzbyB0aGF0IHRoZSBxZW11IHdyYXBwZXIgaXMgdXNlZCB0byBydW4gdHJhbnNpZW50IGJpbmFyaWVzCisgICAgICAgICMgaW5zdGVhZCBvZiBsaWJ0b29sIHdyYXBwZXIgb3IgcnVubmluZyB0aGVtIGRpcmVjdGx5CisgICAgICAgIHNlZCAtaSBcCisgICAgICAgICAgIC1lICJzfEdUS0RPQ19SVU4gPS4qfEdUS0RPQ19SVU4gPSBcJCh0b3BfYnVpbGRkaXIpL2d0a2RvYy1xZW11d3JhcHBlcnwiIFwKKyAgICAgICAgICAgJHtTfS9jb21tb24vZ3RrLWRvYyptYWsKK30KKworZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiIGRlbGV0ZV9wa2dfbTRfZmlsZSBwYXRjaF9ndGtfZG9jX21ha2VmaWxlcyIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS42LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1ydHNwLXNlcnZlcl8xLjYuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWJkYWU2Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1ydHNwLXNlcnZlcl8xLjYuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotaW5jbHVkZSBnc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTY3NjJlZDQ0MmIzODIyMzg3YTUxYzkyZDkyOGVhZDBkIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYTFjYWZlZmI1ZmMxNGFjNWQ3ZTdkOGNkYmRmYTk2OTQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGY1MWY5ODc5NTU2YzA5NTAyMDNjNzY2YjA5YTFiNjJmMWYyNWIxN2Y5YTdkNTE2ZTAxYjEzZWNmOTNjODg1OCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyXzEuOC4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS44LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTcwNTlkMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyXzEuOC4zLmJiCkBAIC0wLDAgKzEsNiBAQAoraW5jbHVkZSBnc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTY3NjJlZDQ0MmIzODIyMzg3YTUxYzkyZDkyOGVhZDBkIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZTRiMDdiMTBkZDY1YjZjMjZjOWNhNWY3MmU1OTI5N2IiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDEwZjA2ODAwYzFjOTU3ODUxZDEzNTJlNWVjN2E4YmEzY2U2YTg1N2ZlYzFiOGFmYzdkMWE5ZTVmNTMyODhiZiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLmluYwppbmRleCAxMGI0NjY4Li5jYjBiZDgyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAuaW5jCkBAIC04LDcgKzgsNyBAQAogCiBERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBsaWJjYXAgbGlieG1sMiBiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYwogCiAjIFRoaXMgd2F5IGNvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IHdpbGwgY29tZSBmaXJzdAogIyAoaXQgaGFzIGEgY3VzdG9tIElOVFJPU1BFQ1RJT05fSU5JVCBtYWNybywgYW5kIHNvIG11c3QgYmUgdXNlZCBpbnN0ZWFkIG9mIG91ciBjb21tb24gaW50cm9zcGVjdGlvbi5tNCBmaWxlKQpAQCAtMjAsMTYgKzIwLDE2IEBACiAKIFBBQ0tBR0VDT05GSUcgPz89ICIiCiAKLVBBQ0tBR0VDT05GSUdbY2hlY2tdID0gIi0tZW5hYmxlLWNoZWNrLC0tZGlzYWJsZS1jaGVjayIKIFBBQ0tBR0VDT05GSUdbZGVidWddID0gIi0tZW5hYmxlLWRlYnVnLC0tZGlzYWJsZS1kZWJ1ZyIKIFBBQ0tBR0VDT05GSUdbdGVzdHNdID0gIi0tZW5hYmxlLXRlc3RzLC0tZGlzYWJsZS10ZXN0cyIKIFBBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi0tZW5hYmxlLXZhbGdyaW5kLC0tZGlzYWJsZS12YWxncmluZCx2YWxncmluZCwiCitQQUNLQUdFQ09ORklHW2dzdC10cmFjZXItaG9va3NdID0gIi0tZW5hYmxlLWdzdC10cmFjZXItaG9va3MsLS1kaXNhYmxlLWdzdC10cmFjZXItaG9va3MsIgorUEFDS0FHRUNPTkZJR1t0cmFjZS1oaXN0b3JpY10gPSAiLS1lbmFibGUtdHJhY2UsLS1kaXNhYmxlLXRyYWNlLCIKIAogRVhUUkFfT0VDT05GID0gIiBcCiAgICAgLS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcgXAogICAgIC0tZGlzYWJsZS1kb2Nib29rIFwKICAgICAtLWRpc2FibGUtZXhhbXBsZXMgXAotICAgIC0tZGlzYWJsZS1ndGstZG9jIFwKICIKIAogQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2hlYWRlcl92YWxncmluZF92YWxncmluZF9oPW5vIgpAQCAtNDksOSArNDksMjIgQEAKIGRlbGV0ZV9wa2dfbTRfZmlsZSgpIHsKICAgICAgICAgIyBUaGlzIG00IGZpbGUgaXMgb3V0IG9mIGRhdGUgYW5kIGlzIG1pc3NpbmcgUEtHX0NPTkZJR19TWVNST09UX1BBVEggdHdlYWtzIHdoaWNoIHdlIG5lZWQgZm9yIGludHJvc3BlY3Rpb24KICAgICAgICAgcm0gIiR7U30vY29tbW9uL200L3BrZy5tNCIgfHwgdHJ1ZQorICAgICAgICBybSAtZiAiJHtTfS9jb21tb24vbTQvZ3RrLWRvYy5tNCIKIH0KIAotZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiIGRlbGV0ZV9wa2dfbTRfZmlsZSIKKyMgZ3N0cmVhbWVyIGlzIG5vdCB1c2luZyBzeXN0ZW0td2lkZSBtYWtlZmlsZXMgKHdoaWNoIHdlIHBhdGNoIGluIGd0a2RvYyByZWNpcGUsCisjIGJ1dCBpdHMgb3duIGN1c3RvbSBvbmVzLCB3aGljaCB3ZSBoYXZlIHRvIHBhdGNoIGhlcmUKK3BhdGNoX2d0a19kb2NfbWFrZWZpbGVzKCkgeworICAgICAgICAjIFBhdGNoIHRoZSBndGstZG9jIG1ha2VmaWxlcyBzbyB0aGF0IHRoZSBxZW11IHdyYXBwZXIgaXMgdXNlZCB0byBydW4gdHJhbnNpZW50IGJpbmFyaWVzCisgICAgICAgICMgaW5zdGVhZCBvZiBsaWJ0b29sIHdyYXBwZXIgb3IgcnVubmluZyB0aGVtIGRpcmVjdGx5CisgICAgICAgICMgQWxzbyBzdWJzdGl0dXRlIGEgYm9ndXMgcGx1Z2luIHNjYW5uZXIsIGFzIHRyeWluZyB0byBydW4gdGhlIHJlYWwgb25lIGlzIGNhdXNpbmcgaXNzdWVzIGR1cmluZyBidWlsZCBvbiB4ODZfNjQuCisgICAgICAgIHNlZCAtaSBcCisgICAgICAgICAgIC1lICJzfEdUS0RPQ19SVU4gPS4qfEdUS0RPQ19SVU4gPSBcJCh0b3BfYnVpbGRkaXIpL2d0a2RvYy1xZW11d3JhcHBlcnwiIFwKKyAgICAgICAgICAgLWUgInN8XCQoR1RLRE9DX0VYVFJBX0VOVklST05NRU5UKXxcJChHVEtET0NfRVhUUkFfRU5WSVJPTk1FTlQpIEdTVF9QTFVHSU5fU0NBTk5FUl8xXzA9XCQodG9wX2J1aWxkZGlyKS9saWJzL2dzdC9oZWxwZXJzL2dzdC1wbHVnaW4tc2Nhbm5lci1kdW1teXwiIFwKKyAgICAgICAgICAgJHtTfS9jb21tb24vZ3RrLWRvYyptYWsKK30KKworZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiIGRlbGV0ZV9wa2dfbTRfZmlsZSBwYXRjaF9ndGtfZG9jX21ha2VmaWxlcyIKIAogZG9fY29tcGlsZV9wcmVwZW5kKCkgewogICAgICAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0iJHtCfS9nc3QvLmxpYnM6JHtCfS9saWJzL2dzdC9iYXNlLy5saWJzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAvMDAwMS1GaXgtY3Jhc2gtd2l0aC1nc3QtaW5zcGVjdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLzAwMDEtRml4LWNyYXNoLXdpdGgtZ3N0LWluc3BlY3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0ZjVjYzUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAvMDAwMS1GaXgtY3Jhc2gtd2l0aC1nc3QtaW5zcGVjdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gNmIyNmYzZGJmOWJmNTc3ZDcxNTM0YWI3NDEwZGU2NmQwNmU0NmJhMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENhcmxvcyBSYWZhZWwgR2lhbmkgPGR2QHBzZXVkb3Rlcm1pbmFsLm9yZz4KLURhdGU6IFNhdCwgNiBBcHIgMjAxMyAyMzo1MjoxMSArMDIwMAotU3ViamVjdDogW1BBVENIXSBGaXggY3Jhc2ggd2l0aCBnc3QtaW5zcGVjdCBDaHJpcyBMb3JkIDxjaHJpc0BvcGVuZWRoYW5kLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IENhcmxvcyBSYWZhZWwgR2lhbmkgPGR2QHBzZXVkb3Rlcm1pbmFsLm9yZz4KLS0tLQotIHRvb2xzL2dzdC1pbnNwZWN0LmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS90b29scy9nc3QtaW5zcGVjdC5jIGIvdG9vbHMvZ3N0LWluc3BlY3QuYwotaW5kZXggMjNiN2M0NC4uYjc5YjAyZSAxMDA2NDQKLS0tLSBhL3Rvb2xzL2dzdC1pbnNwZWN0LmMKLSsrKyBiL3Rvb2xzL2dzdC1pbnNwZWN0LmMKLUBAIC0xNTU2LDcgKzE1NTYsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotICAgZ19vcHRpb25fY29udGV4dF9hZGRfbWFpbl9lbnRyaWVzIChjdHgsIG9wdGlvbnMsIEdFVFRFWFRfUEFDS0FHRSk7Ci0gICBnX29wdGlvbl9jb250ZXh0X2FkZF9ncm91cCAoY3R4LCBnc3RfaW5pdF9nZXRfb3B0aW9uX2dyb3VwICgpKTsKLSAgIGlmICghZ19vcHRpb25fY29udGV4dF9wYXJzZSAoY3R4LCAmYXJnYywgJmFyZ3YsICZlcnIpKSB7Ci0tICAgIGdfcHJpbnRlcnIgKCJFcnJvciBpbml0aWFsaXppbmc6ICVzXG4iLCBlcnItPm1lc3NhZ2UpOwotKyAgICBnX3ByaW50ZXJyICgiRXJyb3IgaW5pdGlhbGl6aW5nOiAlc1xuIiwgZXJyID8gZXJyLT5tZXNzYWdlIDogIihudWxsKSIpOwotICAgICByZXR1cm4gLTE7Ci0gICB9Ci0gICBnX29wdGlvbl9jb250ZXh0X2ZyZWUgKGN0eCk7Ci0tLSAKLTEuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wXzEuNi4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjBfMS42LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhMWI4M2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjBfMS42LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1pbmNsdWRlIGdzdHJlYW1lcjEuMC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Njc2MmVkNDQyYjM4MjIzODdhNTFjOTJkOTI4ZWFkMGQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0L2dzdC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjE7bWQ1PWUwNTkxMzg0ODEyMDVlZTJjNmZjMWMwNzljMDE2ZDBkIgotCi1TUkNfVVJJID0gIiBcCi0gICAgaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdHJlYW1lci9nc3RyZWFtZXItJHtQVn0udGFyLnh6IFwKLSAgICBmaWxlOi8vMDAwMS1GaXgtY3Jhc2gtd2l0aC1nc3QtaW5zcGVjdC5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiNGNkZWIyYjljYjIwZGQ2YWMwMjJhNGY0MTdlYWUwZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyMmY5NTY4ZDY3Yjg3Y2Y3MDBhMTExZjM4MTE0NGJkMzdjYjkzNzkwYTc3ZTRlMzMxZGIwMWZlODU0YTM3ZjI0IgotCi1TID0gIiR7V09SS0RJUn0vZ3N0cmVhbWVyLSR7UFZ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjBfMS44LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMF8xLjguMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzU2MWViCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjBfMS44LjMuYmIKQEAgLTAsMCArMSwxMyBAQAoraW5jbHVkZSBnc3RyZWFtZXIxLjAuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTY3NjJlZDQ0MmIzODIyMzg3YTUxYzkyZDkyOGVhZDBkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC9nc3QuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT1lMDU5MTM4NDgxMjA1ZWUyYzZmYzFjMDc5YzAxNmQwZCIKKworU1JDX1VSSSA9ICIgXAorICAgIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3RyZWFtZXIvZ3N0cmVhbWVyLSR7UFZ9LnRhci54eiBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlODhkYWQ1NDJkZjlkOTg2ODIyZTk4MjEwNWQyYjUzMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2NmIzNzc2MmQ0ZmRjZDYzYmNlNWEyYmVjNTdlMDU1ZjkyNDIwZTk1MDM3MzYxNjA5OTAwMjc4YzBkYjdjNTNmIgorCitTID0gIiR7V09SS0RJUn0vZ3N0cmVhbWVyLSR7UFZ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjBfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjBfZ2l0LmJiCmluZGV4IDc3MTViYjIuLjYxMTJmMmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMF9naXQuYmIKQEAgLTYsMjUgKzYsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC9nc3QuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT1lMDU5MTM4NDgxMjA1ZWUyYzZmYzFjMDc5YzAxNmQwZCIKIAogU1JDX1VSSSA9ICIgXAotICAgIGdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL2dzdHJlYW1lci9nc3RyZWFtZXI7bmFtZT1iYXNlIFwKKyAgICBnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0cmVhbWVyO2JyYW5jaD0xLjg7bmFtZT1iYXNlIFwKICAgICBnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvY29tbW9uO2Rlc3RzdWZmaXg9Z2l0L2NvbW1vbjtuYW1lPWNvbW1vbiBcCiAiCiAKLVBWID0gIjEuNy4yK2dpdCR7U1JDUFZ9IgorUFYgPSAiMS44LjIrZ2l0JHtTUkNQVn0iCiAKIFVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPihcZCsoXC5cZCspKykpIgogCi1TUkNSRVZfYmFzZSA9ICI5ZTMzYmZhMmM3YTVmNDNkYTJjNDliMGE4MjM1ZmQ0M2NiYTlmZWFmIgotU1JDUkVWX2NvbW1vbiA9ICJiNjRmMDNmNjA5MDI0NTYyNDYwOGJlYjVkMmZmZjMzNWUyM2EwMWMwIgorU1JDUkVWX2Jhc2UgPSAiM2RlOGE0ZjcyOGE3MTk0YTEyYjc4NGVjNDA4NWY2YThlN2Q5YjViZCIKK1NSQ1JFVl9jb21tb24gPSAiZjM2M2IzMjA1NjU4YTM4ZTg0ZmE3N2YxOWRlZTIxOGNkNDQ0NTI3NSIKIFNSQ1JFVl9GT1JNQVQgPSAiYmFzZSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAotIyBUaGUgb3B0aW9uIHRvIGNvbmZpZ3VyZSB0cmFjZXIgaG9va3Mgd2FzIGFkZGVkIHByaW9yIHRvIHRoZSAxLjcuMiByZWxlYXNlCi0jIGh0dHBzOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcvZ3N0cmVhbWVyL2dzdHJlYW1lci9jb21taXQvP2lkPWU1Y2E0NzIzNmU0ZGY0NjgzNzA3ZjBiY2Y5OTE4MWE5MzdkMzU4ZDUKLVBBQ0tBR0VDT05GSUdbZ3N0LXRyYWNlci1ob29rc10gPSAiLS1lbmFibGUtZ3N0LXRyYWNlci1ob29rcywtLWRpc2FibGUtZ3N0LXRyYWNlci1ob29rcywiCi1QQUNLQUdFQ09ORklHW3RyYWNlLWhpc3RvcmljXSA9ICItLWVuYWJsZS10cmFjZSwtLWRpc2FibGUtdHJhY2UsIgotCiBkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKIAkke1N9L2F1dG9nZW4uc2ggLS1ub2NvbmZpZ3VyZQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xhbWUvbGFtZS9sYW1lLTMuOTkuNV9maXhfZm9yX2F1dG9tYWtlLTEuMTIueC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9sYW1lL2xhbWUvbGFtZS0zLjk5LjVfZml4X2Zvcl9hdXRvbWFrZS0xLjEyLngucGF0Y2gKaW5kZXggNTcxYTFkMC4uNTFiYWVmMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xhbWUvbGFtZS9sYW1lLTMuOTkuNV9maXhfZm9yX2F1dG9tYWtlLTEuMTIueC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGFtZS9sYW1lL2xhbWUtMy45OS41X2ZpeF9mb3JfYXV0b21ha2UtMS4xMi54LnBhdGNoCkBAIC00LDcgKzQsNyBAQAogfCBkb2MvbWFuL01ha2VmaWxlLmFtOjM6IGVycm9yOiBhdXRvbWF0aWMgZGUtQU5TSS1maWNhdGlvbiBzdXBwb3J0IGhhcyBiZWVuIHJlbW92ZWQKIHwgYXV0b3JlY29uZjogYXV0b21ha2UgZmFpbGVkIHdpdGggZXhpdCBzdGF0dXM6IDEKIAotU2lnbmVkLU9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+CiAyMDEyLzA3LzEzCiAKIEluZGV4OiBsYW1lLTMuOTkuNS9jb25maWd1cmUuaW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJtYWQvbGlibWFkL2FkZC1wa2djb25maWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlibWFkL2xpYm1hZC9hZGQtcGtnY29uZmlnLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDlkYzhjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJtYWQvbGlibWFkL2FkZC1wa2djb25maWcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi1IZXJlIGlzIGEgcGF0Y2ggZm9yIGFkZGluZyBwa2ctY29uZmlnIHN1cHBvcnQgdG8gbGlibWFkLgotSXQgd291bGQgbWFrZSBsaWZlIGEgYml0IGVhc2llciBmb3IgZGlzdHJvIG1haW50YWluZXJzIGlmIHRoaXMgd2FzIGFwcGxpZWQuCi1JbiBjYXNlIHlvdSBkaWRuJ3Qga25vdywgcGtnLWNvbmZpZyBpcyBhIHRvb2wgZm9yIHByb3ZpZGluZyBMREZMQUdTIGFuZAotQ0ZMQUdTIGZvciBwYWNrYWdlcyB1c2luZyBzaGFyZWQgbGlicmFyaWVzLiBJdCdzIG9uIGZyZWVkZXNrdG9wLm9yZy4KLURlYmlhbiBoYXMgYWxyZWFkeSBiZWVuIGRpc3RyaWJ1dGluZyB0aGUgcGtnLWNvbmZpZyBmaWxlIG1hZC5wYyB3aXRoCi1saWJtYWQgZm9yIHNvbWUgdGltZSwgYW5kIHBlb3BsZSBkZXZlbG9waW5nIG9uIGRlYmlhbiAobm90YWJseSB4bW1zMiAKLWRldmVsb3BlcnMpIGhhdmUgc3RhcnRlZCByZWx5aW5nIG9uIHRoaXMgc3VwcG9ydCBiZWluZyBwcmVzZW50LCBjYXVzaW5nCi1zb21lIGNvbmZ1c2lvbiBmb3IgcGVvcGxlIGluc3RhbGxpbmcgZnJvbSBzb3VyY2UgYW5kIG9uIHNvbWUgQlNEcyB3aGljaAotZG8gbm90IHByb3ZpZGUgbWFkLnBjIChnb29nbGU6IHBrZ2NvbmZpZyBsaWJtYWQpLgotCi1FTUgKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi0tLWgzMWd6WkV0TkxUcU9qbEYKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11cy1hc2NpaQotQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9JnF1b3Q7bGlibWFkLTAuMTUuMWItcGtnY29uZmlnLnBhdGNoJnF1b3Q7Ci0KLWRpZmYgLU5hdXIgbGlibWFkLTAuMTUuMWIub2xkL2NvbmZpZ3VyZS5hYyBsaWJtYWQtMC4xNS4xYi9jb25maWd1cmUuYWMKLS0tLSBsaWJtYWQtMC4xNS4xYi5vbGQvY29uZmlndXJlLmFjCTIwMDQtMDEtMjMgMTA6NDE6MzIuMDAwMDAwMDAwICswMTAwCi0rKysgbGlibWFkLTAuMTUuMWIvY29uZmlndXJlLmFjCTIwMDQtMDgtMDcgMDI6MjU6MjQuNjMzNDYyMTY4ICswMjAwCi1AQCAtNDI5LDUgKzQyOSw1IEBACi0gZG5sIEFDX1NVQlNUKExUTElCT0JKUykKLSAKLSBBQ19DT05GSUdfRklMRVMoW01ha2VmaWxlIG1zdmMrKy9NYWtlZmlsZSAgXAotLQlsaWJtYWQubGlzdF0pCi0rCWxpYm1hZC5saXN0IG1hZC5wY10pCi0gQUNfT1VUUFVUCi1kaWZmIC1OYXVyIGxpYm1hZC0wLjE1LjFiLm9sZC9tYWQucGMuaW4gbGlibWFkLTAuMTUuMWIvbWFkLnBjLmluCi0tLS0gbGlibWFkLTAuMTUuMWIub2xkL21hZC5wYy5pbgkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAotKysrIGxpYm1hZC0wLjE1LjFiL21hZC5wYy5pbgkyMDA0LTA4LTA3IDAyOjA0OjU5LjYxNzY5Mjg3MiArMDIwMAotQEAgLTAsMCArMSwxNCBAQAotKyMgbGlibWFkIHBrZy1jb25maWcgc291cmNlIGZpbGUKLSsKLStwcmVmaXg9QHByZWZpeEAKLStleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACi0rbGliZGlyPUBsaWJkaXJACi0raW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKLSsKLStOYW1lOiBtYWQKLStEZXNjcmlwdGlvbjogTVBFRyBBdWRpbyBEZWNvZGVyCi0rVmVyc2lvbjogQFZFUlNJT05ACi0rUmVxdWlyZXM6Ci0rQ29uZmxpY3RzOgotK0xpYnM6IC1MJHtsaWJkaXJ9IC1sbWFkIC1sbQotK0NmbGFnczogLUkke2luY2x1ZGVkaXJ9Ci1kaWZmIC1OYXVyIGxpYm1hZC0wLjE1LjFiLm9sZC9NYWtlZmlsZS5hbSBsaWJtYWQtMC4xNS4xYi9NYWtlZmlsZS5hbQotLS0tIGxpYm1hZC0wLjE1LjFiLm9sZC9NYWtlZmlsZS5hbQkyMDA0LTAyLTE3IDAzOjAyOjAzLjAwMDAwMDAwMCArMDEwMAotKysrIGxpYm1hZC0wLjE1LjFiL01ha2VmaWxlLmFtCTIwMDQtMDgtMDcgMDI6MDM6MTkuODU5ODU4MzY4ICswMjAwCi1AQCAtMjQsNiArMjQsOSBAQAotIFNVQkRJUlMgPQkJCi0gRElTVF9TVUJESVJTID0JCW1zdmMrKwotIAotK3BrZ2NvbmZpZ2RpciA9CQkkKGxpYmRpcikvcGtnY29uZmlnCi0rcGtnY29uZmlnX0RBVEEgPQltYWQucGMKLSsKLSBsaWJfTFRMSUJSQVJJRVMgPQlsaWJtYWQubGEKLSBpbmNsdWRlX0hFQURFUlMgPQltYWQuaAotIAotQEAgLTM0LDcgKzM3LDggQEAKLSBtaW5pbWFkX0xEQUREID0JCWxpYm1hZC5sYQotIAotIEVYVFJBX0RJU1QgPQkJbWFkLmguc2VkICBcCi0tCQkJQ0hBTkdFUyBDT1BZUklHSFQgQ1JFRElUUyBSRUFETUUgVE9ETyBWRVJTSU9OCi0rCQkJQ0hBTkdFUyBDT1BZUklHSFQgQ1JFRElUUyBSRUFETUUgVE9ETyBWRVJTSU9OIFwKLSsJCQltYWQucGMuaW4KLSAKLSBleHBvcnRlZF9oZWFkZXJzID0JdmVyc2lvbi5oIGZpeGVkLmggYml0LmggdGltZXIuaCBzdHJlYW0uaCBmcmFtZS5oICBcCi0gCQkJc3ludGguaCBkZWNvZGVyLmgKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYm1hZC9saWJtYWQvYXV0b21ha2UtZm9yZWlnbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJtYWQvbGlibWFkL2F1dG9tYWtlLWZvcmVpZ24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlNTQ0MjQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYm1hZC9saWJtYWQvYXV0b21ha2UtZm9yZWlnbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLVBhc3MgZm9yZWlnbiB0byBBTV9JTklUX0FVVE9NQUtFIHNvIGl0IGRvZXNuJ3QgZW5mb3JjZSBHTlUgc3RyaWN0bmVzcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBlNjAyZmQzLi5lMDc1Yjg2IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0yOSArMjkgQEAgQUNfQ09ORklHX1NSQ0RJUihbZGVjb2Rlci5oXSkKLS1BTV9JTklUX0FVVE9NQUtFCi0rQU1fSU5JVF9BVVRPTUFLRShbZm9yZWlnbl0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlibWFkL2xpYm1hZC9maXhfZm9yX21pcHNfd2l0aF9nY2MtNC41LjAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlibWFkL2xpYm1hZC9maXhfZm9yX21pcHNfd2l0aF9nY2MtNC41LjAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxYzdhYTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYm1hZC9saWJtYWQvZml4X2Zvcl9taXBzX3dpdGhfZ2NjLTQuNS4wLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotZ2NjIDQuNCBkaWQgdGhpczogVGhlIE1JUFMgcG9ydCBubyBsb25nZXIgcmVjb2duaXplcyB0aGUgaCAgYXNtIGNvbnN0cmFpbnQuIEl0IHdhcyBuZWNlc3NhcnkgdG8gcmVtb3ZlIHRoaXMgY29uc3RyYWludCBpbiBvcmRlciB0byBhdm9pZCBnZW5lcmF0aW5nIHVucHJlZGljdGFibGUgY29kZSBzZXF1ZW5jZXMuIAotCi1zbyB0aGUgbGlibWFkIGJ1aWxkIHdpdGggZ2NjLTQuNS4wIHdhcyBmYWlsaW5nLgotCi1Gb3VuZCBhIHNvbHV0aW9uIGhlcmU6Ci0KLWh0dHA6Ly91cy5nZW5lcmF0aW9uLW50LmNvbS9hbnN3ZXIvYnVnLTU2ODQxOC1saWJtYWQwLWRldi1tcGczMjEtY29tcGlsYXRpb24tZXJyb3JzLW1pcHMtbWlwc2VsLWFyY2hpdGVjdHVyZXMtaGVscC0xNjkwMzM0NTEuaHRtbAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotMjAxMC8wNy8yOQotTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KLQotSW5kZXg6IGxpYm1hZC0wLjE1LjFiL2ZpeGVkLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJtYWQtMC4xNS4xYi5vcmlnL2ZpeGVkLmgKLSsrKyBsaWJtYWQtMC4xNS4xYi9maXhlZC5oCi1AQCAtMjk3LDYgKzI5NywxNSBAQCBtYWRfZml4ZWRfdCBtYWRfZl9tdWxfaW5saW5lKG1hZF9maXhlZF90Ci0gCi0gLyogLS0tIE1JUFMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotIAotKyMgZWxpZiBkZWZpbmVkKEZQTV9NSVBTKSAmJiAoX19HTlVDX18gPiA0IHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fID49IDQpKQotKyAgICB0eXBlZGVmIHVuc2lnbmVkIGludCB1NjRfZGlfdCBfX2F0dHJpYnV0ZV9fICgobW9kZSAoREkpKSk7Ci0rIyAgIGRlZmluZSBNQURfRl9NTFgoaGksIGxvLCB4LCB5KSBcCi0rICAgIGRvIHsgXAotKyAgICAgICAgdTY0X2RpX3QgX19sbCA9ICh1NjRfZGlfdCkgKHgpICogKHkpOyBcCi0rICAgICAgICBoaSA9IF9fbGwgPj4gMzI7IFwKLSsgICAgICAgIGxvID0gX19sbDsgXAotKyAgICAgfSB3aGlsZSAoMCkKLSsKLSAjIGVsaWYgZGVmaW5lZChGUE1fTUlQUykKLSAKLSAvKgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYm1hZC9saWJtYWQvbm8tZm9yY2UtbWVtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYm1hZC9saWJtYWQvbm8tZm9yY2UtbWVtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNWU2ZDIwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJtYWQvbGlibWFkL25vLWZvcmNlLW1lbS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVRoaXMgb3B0aW9uIG5vIGxvbmdlciBleGlzdHMgaW4gZ2NjIDMuNC4xCi0KLVJQIC0gMTgvMDcvMjAwOAotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLUluZGV4OiBsaWJtYWQtMC4xNS4xYi9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJtYWQtMC4xNS4xYi5vcmlnL2NvbmZpZ3VyZS5hYwkyMDA4LTA3LTE4IDE1OjQ1OjMwLjAwMDAwMDAwMCArMDEwMAotKysrIGxpYm1hZC0wLjE1LjFiL2NvbmZpZ3VyZS5hYwkyMDA4LTA3LTE4IDE1OjQ1OjM3LjAwMDAwMDAwMCArMDEwMAotQEAgLTE0MCw3ICsxNDAsNiBAQAotICAgICBjYXNlICIkb3B0aW1pemUiIGluCi0gCS1PfCItTyAiKikKLSAJICAgIG9wdGltaXplPSItTyIKLS0JICAgIG9wdGltaXplPSIkb3B0aW1pemUgLWZmb3JjZS1tZW0iCi0gCSAgICBvcHRpbWl6ZT0iJG9wdGltaXplIC1mZm9yY2UtYWRkciIKLSAJICAgIDogI3ggb3B0aW1pemU9IiRvcHRpbWl6ZSAtZmlubGluZS1mdW5jdGlvbnMiCi0gCSAgICA6ICMtIG9wdGltaXplPSIkb3B0aW1pemUgLWZzdHJlbmd0aC1yZWR1Y2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlibWFkL2xpYm1hZC9vYnNvbGV0ZV9hdXRvbWFrZV9tYWNyb3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlibWFkL2xpYm1hZC9vYnNvbGV0ZV9hdXRvbWFrZV9tYWNyb3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjODdkMjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYm1hZC9saWJtYWQvb2Jzb2xldGVfYXV0b21ha2VfbWFjcm9zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vc291cmNlZm9yZ2UubmV0L3RyYWNrZXIvP2dyb3VwX2lkPTEyMzQ5JmF0aWQ9MTEyMzQ5XQotCi1TaWduZWQtb2ZmLWJ5OiBNYXJrbyBMaW5kcXZpc3QgPGNhemZpNzRAZ21haWwuY29tPgotZGlmZiAtTnVyZCBsaWJtYWQtMC4xNS4xYi9jb25maWd1cmUuYWMgbGlibWFkLTAuMTUuMWIvY29uZmlndXJlLmFjCi0tLS0gbGlibWFkLTAuMTUuMWIvY29uZmlndXJlLmFjCTIwMDQtMDEtMjMgMTE6NDE6MzIuMDAwMDAwMDAwICswMjAwCi0rKysgbGlibWFkLTAuMTUuMWIvY29uZmlndXJlLmFjCTIwMTMtMDEtMDMgMDg6Mjg6MjMuNzE4NjkzNjk3ICswMjAwCi1AQCAtMjgsNyArMjgsNyBAQAotCi0gQU1fSU5JVF9BVVRPTUFLRQotCi0tQU1fQ09ORklHX0hFQURFUihbY29uZmlnLmhdKQotK0FDX0NPTkZJR19IRUFERVJTKFtjb25maWcuaF0pCi0KLSBkbmwgU3lzdGVtIHR5cGUuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlibWFkL2xpYm1hZF8wLjE1LjFiLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYm1hZC9saWJtYWRfMC4xNS4xYi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQzMWFiZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlibWFkL2xpYm1hZF8wLjE1LjFiLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotU1VNTUFSWSA9ICJNUEVHIEF1ZGlvIERlY29kZXIgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbWFkLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC90cmFja2VyLz9ncm91cF9pZD0xMjM0OSZhdGlkPTExMjM0OSIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotCQkJZmlsZTovL0NPUFlSSUdIVDttZDU9OGU1NWViMTQ4OTRlNzgyYjg0NDg4ZDVhMjM5YmMyM2QgXAotCQkJZmlsZTovL3ZlcnNpb24uaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTg7bWQ1PWFhMDczMTFkZDM5Mjg4ZDQzNDlmMjhlMWRlNTE2NDU0IgotU0VDVElPTiA9ICJsaWJzIgotREVQRU5EUyA9ICJsaWJpZDN0YWciCi1QUiA9ICJyMyIKLQotU1JDX1VSSSA9ICJmdHA6Ly9mdHAubWFycy5vcmcvcHViL21wZWcvbGlibWFkLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9uby1mb3JjZS1tZW0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYWRkLXBrZ2NvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXhfZm9yX21pcHNfd2l0aF9nY2MtNC41LjAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vb2Jzb2xldGVfYXV0b21ha2VfbWFjcm9zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2F1dG9tYWtlLWZvcmVpZ24ucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMWJlNTQzYmMzMGM1NmZiNmJlYTFkN2JmNmE2NGU2NmMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmJmYWMzZWQ2YmZiYzI4MjNkMzc3NWViYjkzMTA4NzM3MWUxNDJiYjBlOWJiMWJlZTUxYTc2YTZlMDA3ODY5MCIgCi0KLVMgPSAiJHtXT1JLRElSfS9saWJtYWQtJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiLWVuYWJsZS1zcGVlZCAtLWVuYWJsZS1zaGFyZWQiCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2FybSA9ICIgLS1lbmFibGUtZnBtPWFybSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotIwlkYW1uIHBpY2t5IGF1dG9tYWtlLi4uCi0JdG91Y2ggTkVXUyBBVVRIT1JTIENoYW5nZUxvZwotfQotCi1BUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJwbmcvbGlicG5nXzEuNi4yMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJwbmcvbGlicG5nXzEuNi4yMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNThjZWYxZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlicG5nL2xpYnBuZ18xLjYuMjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIlBORyBpbWFnZSBmb3JtYXQgZGVjb2RpbmcgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubGlicG5nLm9yZy8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxpYnBuZyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTA2YTFiNmZkZTZkOTMxNzBiYjcyMjAxYzgwMDBiZjNkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3BuZy5oO2VuZGxpbmU9MTEyO21kNT05YThiNWY4M2UxZTgwNDZkZjY3MmRlYWI4N2YyMzViZSIKLURFUEVORFMgPSAiemxpYiIKLQotU1JDX1VSSSA9ICIke0dFTlRPT19NSVJST1J9L2xpYnBuZy0ke1BWfS50YXIueHogXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICIzYmFjYjQ3MjhmNjY5NGE2NGFkOTA1Mjc2OWQ2YTRjZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2YzhmMTg0OWViOTI2NDIxOWJmNWQ3MDM2MDFlNWFiZTkyYTU4NjUxZWNhZTkyN2EwM2QxYTFhYTE1ZWUyMDgzIgotCi1CSU5DT05GSUcgPSAiJHtiaW5kaXJ9L2xpYnBuZy1jb25maWcgJHtiaW5kaXJ9L2xpYnBuZzE2LWNvbmZpZyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnLWRpc2FibGVkIHBrZ2NvbmZpZwotCi0jIFdvcmsgYXJvdW5kIG1pc3Npbmcgc3ltYm9scwotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm5lb24iLCAiLS1lbmFibGUtYXJtLW5lb249b24iLCAiLS1lbmFibGUtYXJtLW5lb249b2ZmIiAsZCl9IgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tdG9vbHMiCi0KLUZJTEVTXyR7UE59LXRvb2xzID0gIiR7YmluZGlyfS9wbmctZml4LWl0eHQgJHtiaW5kaXJ9L3BuZ2ZpeCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnBuZy9saWJwbmdfMS42LjI0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnBuZy9saWJwbmdfMS42LjI0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5MWFiN2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlicG5nL2xpYnBuZ18xLjYuMjQuYmIKQEAgLTAsMCArMSwyNSBAQAorU1VNTUFSWSA9ICJQTkcgaW1hZ2UgZm9ybWF0IGRlY29kaW5nIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpYnBuZy5vcmcvIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMaWJwbmciCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01MDg5MjE0ODMzNTg2YmE0NDQwNDhmZDFkYmJjNzZhNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9wbmcuaDtlbmRsaW5lPTE0OTttZDU9Mzc2ZDhmZjdmNjliN2M0YWQzYTA5ZjQ2NzJjZWM2OTYiCitERVBFTkRTID0gInpsaWIiCisKK1NSQ19VUkkgPSAiJHtHRU5UT09fTUlSUk9SfS9saWJwbmctJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiZmZjZGJkNTQ5ODE0Nzg3ZmE4MDEwYzM3MmUzNWZmMjUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzkzMmRjOWU1ZTQ1ZDU1ZWNlOWQyMDRlOTAxOTZiYmI1ZjJjODI3NDFjY2IwZjdlMTBkMDdkMzY0YTZmZDZkZCIKKworQklOQ09ORklHID0gIiR7YmluZGlyfS9saWJwbmctY29uZmlnICR7YmluZGlyfS9saWJwbmcxNi1jb25maWciCisKK2luaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcKKworIyBXb3JrIGFyb3VuZCBtaXNzaW5nIHN5bWJvbHMKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJuZW9uIiwgIi0tZW5hYmxlLWFybS1uZW9uPW9uIiwgIi0tZW5hYmxlLWFybS1uZW9uPW9mZiIgLGQpfSIKKworUEFDS0FHRVMgPSsgIiR7UE59LXRvb2xzIgorCitGSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vcG5nLWZpeC1pdHh0ICR7YmluZGlyfS9wbmdmaXggJHtiaW5kaXJ9L3BuZ2NwIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlic25kZmlsZS9saWJzbmRmaWxlMV8xLjAuMjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlic25kZmlsZS9saWJzbmRmaWxlMV8xLjAuMjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwNDM1ZDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnNuZGZpbGUvbGlic25kZmlsZTFfMS4wLjI2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotU1VNTUFSWSA9ICJBdWRpbyBmb3JtYXQgQ29udmVyc2lvbiBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5tZWdhLW5lcmQuY29tL2xpYnNuZGZpbGUiCi1BVVRIT1IgPSAiRXJpayBkZSBDYXN0cm8gTG9wbyIKLURFUEVORFMgPSAiZmxhYyBsaWJvZ2cgbGlidm9yYmlzIHNxbGl0ZTMiCi1TRUNUSU9OID0gImxpYnMvbXVsdGltZWRpYSIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5tZWdhLW5lcmQuY29tL2xpYnNuZGZpbGUvZmlsZXMvbGlic25kZmlsZS0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlYzgxMGEwYzYwYzA4NzcyYThhNTU1MjcwNGI2MzM5MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjZDY1MjBlYzc2M2QxYTQ1NTczODg1ZWNiMWY4ZTRlNDI1MDVhYzEyMTgwMjY4NDgyYTQ0YjI4NDg0YTI1MDkyIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lNzdmZTkzMjAyNzM2YjQ3YzA3MDM1OTEwZjQ3OTc0YSIKLQotUyA9ICIke1dPUktESVJ9L2xpYnNuZGZpbGUtJHtQVn0iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2Fsc2EnLCAnYWxzYScsICcnLCBkKX0iCi1QQUNLQUdFQ09ORklHW2Fsc2FdID0gIi0tZW5hYmxlLWFsc2EsLS1kaXNhYmxlLWFsc2EsYWxzYS1saWIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGxpYl9wYWNrYWdlIHBrZ2NvbmZpZwotCi1kb19jb25maWd1cmVfcHJlcGVuZF9hcm0oKSB7Ci0JZXhwb3J0IGFjX2N2X3N5c19sYXJnZWZpbGVfc291cmNlPTEKLQlleHBvcnQgYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHM9NjQKLX0KLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnNuZGZpbGUvbGlic25kZmlsZTFfMS4wLjI3LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnNuZGZpbGUvbGlic25kZmlsZTFfMS4wLjI3LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjNDE3MTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlic25kZmlsZS9saWJzbmRmaWxlMV8xLjAuMjcuYmIKQEAgLTAsMCArMSwyNiBAQAorU1VNTUFSWSA9ICJBdWRpbyBmb3JtYXQgQ29udmVyc2lvbiBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5tZWdhLW5lcmQuY29tL2xpYnNuZGZpbGUiCitBVVRIT1IgPSAiRXJpayBkZSBDYXN0cm8gTG9wbyIKK0RFUEVORFMgPSAiZmxhYyBsaWJvZ2cgbGlidm9yYmlzIHNxbGl0ZTMiCitTRUNUSU9OID0gImxpYnMvbXVsdGltZWRpYSIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5tZWdhLW5lcmQuY29tL2xpYnNuZGZpbGUvZmlsZXMvbGlic25kZmlsZS0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJmZDFkOTdjNjA3N2YwM2I1ZDk4NGQ3OTU2ZmZlZGI3YSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhMzkxOTUyZjI3ZjRhOTJjZWIyYjRjMDY0OTNhYzEwNzg5NmVkNmM3NmJlOWE2MTNhNDczMWYwNzZkMzBmYWMwIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lNzdmZTkzMjAyNzM2YjQ3YzA3MDM1OTEwZjQ3OTc0YSIKKworUyA9ICIke1dPUktESVJ9L2xpYnNuZGZpbGUtJHtQVn0iCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2Fsc2EnLCAnYWxzYScsICcnLCBkKX0iCitQQUNLQUdFQ09ORklHW2Fsc2FdID0gIi0tZW5hYmxlLWFsc2EsLS1kaXNhYmxlLWFsc2EsYWxzYS1saWIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGxpYl9wYWNrYWdlIHBrZ2NvbmZpZworCitkb19jb25maWd1cmVfcHJlcGVuZF9hcm0oKSB7CisJZXhwb3J0IGFjX2N2X3N5c19sYXJnZWZpbGVfc291cmNlPTEKKwlleHBvcnQgYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHM9NjQKK30KKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTUtODY2NV84NjgzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTUtODY2NV84NjgzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5YzUwNTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNS04NjY1Xzg2ODMucGF0Y2gKQEAgLTAsMCArMSwxMzcgQEAKK0Zyb20gZjk0YTI5YTgyMmY1NTI4ZDIzMzQ1OTI3NjBmYmI3OTM4ZjE1ZWI1NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IGVyb3VhdWx0IDxlcm91YXVsdD4KK0RhdGU6IFNhdCwgMjYgRGVjIDIwMTUgMTc6MzI6MDMgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gKiBsaWJ0aWZmL3RpZl9nZXRpbWFnZS5jOiBmaXggb3V0LW9mLWJvdW5kIHJlYWRzIGluCisgVElGRlJHQkFJbWFnZSBpbnRlcmZhY2UgaW4gY2FzZSBvZiB1bnN1cHBvcnRlZCB2YWx1ZXMgb2YKKyBTYW1wbGVzUGVyUGl4ZWwvRXh0cmFTYW1wbGVzIGZvciBMb2dMVVYgLyBDSUVMYWIuIEFkZCBleHBsaWNpdCBjYWxsIHRvCisgVElGRlJHQkFJbWFnZU9LKCkgaW4gVElGRlJHQkFJbWFnZUJlZ2luKCkuIEZpeCBDVkUtMjAxNS04NjY1IHJlcG9ydGVkIGJ5CisgbGltaW5neGluZyBhbmQgQ1ZFLTIwMTUtODY4MyByZXBvcnRlZCBieSB6emYgb2YgQWxpYmFiYS4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQ1ZFOiBDVkUtMjAxNS04NjY1CitDVkU6IENWRS0yMDE1LTg2ODMKK2h0dHBzOi8vZ2l0aHViLmNvbS92YWR6L2xpYnRpZmYvY29tbWl0L2Y5NGEyOWE4MjJmNTUyOGQyMzM0NTkyNzYwZmJiNzkzOGYxNWViNTUKKworU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+CisKKy0tLQorIENoYW5nZUxvZyAgICAgICAgICAgICAgfCAgOCArKysrKysrKworIGxpYnRpZmYvdGlmX2dldGltYWdlLmMgfCAzNSArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMzAgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCisKK0luZGV4OiB0aWZmLTQuMC42L2xpYnRpZmYvdGlmX2dldGltYWdlLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB0aWZmLTQuMC42Lm9yaWcvbGlidGlmZi90aWZfZ2V0aW1hZ2UuYworKysrIHRpZmYtNC4wLjYvbGlidGlmZi90aWZfZ2V0aW1hZ2UuYworQEAgLTE4MiwyMCArMTgyLDIyIEBAIFRJRkZSR0JBSW1hZ2VPSyhUSUZGKiB0aWYsIGNoYXIgZW1zZ1sxMDIKKyAJCQkJICAgICJQbGFuYXJjb25maWd1cmF0aW9uIiwgdGQtPnRkX3BsYW5hcmNvbmZpZyk7CisgCQkJCXJldHVybiAoMCk7CisgCQkJfQorLQkJCWlmKCB0ZC0+dGRfc2FtcGxlc3BlcnBpeGVsICE9IDMgKQorKwkJCWlmKCB0ZC0+dGRfc2FtcGxlc3BlcnBpeGVsICE9IDMgfHwgY29sb3JjaGFubmVscyAhPSAzICkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIHNwcmludGYoZW1zZywKKy0gICAgICAgICAgICAgICAgICAgICAgICAiU29ycnksIGNhbiBub3QgaGFuZGxlIGltYWdlIHdpdGggJXM9JWQiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICJTYW1wbGVzL3BpeGVsIiwgdGQtPnRkX3NhbXBsZXNwZXJwaXhlbCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgIlNvcnJ5LCBjYW4gbm90IGhhbmRsZSBpbWFnZSB3aXRoICVzPSVkLCAlcz0lZCIsCisrICAgICAgICAgICAgICAgICAgICAgICAgIlNhbXBsZXMvcGl4ZWwiLCB0ZC0+dGRfc2FtcGxlc3BlcnBpeGVsLAorKyAgICAgICAgICAgICAgICAgICAgICAgICJjb2xvcmNoYW5uZWxzIiwgY29sb3JjaGFubmVscyk7CisgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgIH0KKyAJCQlicmVhazsKKyAJCWNhc2UgUEhPVE9NRVRSSUNfQ0lFTEFCOgorLSAgICAgICAgICAgIGlmKCB0ZC0+dGRfc2FtcGxlc3BlcnBpeGVsICE9IDMgfHwgdGQtPnRkX2JpdHNwZXJzYW1wbGUgIT0gOCApCisrICAgICAgICAgICAgaWYoIHRkLT50ZF9zYW1wbGVzcGVycGl4ZWwgIT0gMyB8fCBjb2xvcmNoYW5uZWxzICE9IDMgfHwgdGQtPnRkX2JpdHNwZXJzYW1wbGUgIT0gOCApCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBzcHJpbnRmKGVtc2csCistICAgICAgICAgICAgICAgICAgICAgICAgIlNvcnJ5LCBjYW4gbm90IGhhbmRsZSBpbWFnZSB3aXRoICVzPSVkIGFuZCAlcz0lZCIsCisrICAgICAgICAgICAgICAgICAgICAgICAgIlNvcnJ5LCBjYW4gbm90IGhhbmRsZSBpbWFnZSB3aXRoICVzPSVkLCAlcz0lZCBhbmQgJXM9JWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICJTYW1wbGVzL3BpeGVsIiwgdGQtPnRkX3NhbXBsZXNwZXJwaXhlbCwKKysgICAgICAgICAgICAgICAgICAgICAgICAiY29sb3JjaGFubmVscyIsIGNvbG9yY2hhbm5lbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIkJpdHMvc2FtcGxlIiwgdGQtPnRkX2JpdHNwZXJzYW1wbGUpOworICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICB9CitAQCAtMjU1LDYgKzI1Nyw5IEBAIFRJRkZSR0JBSW1hZ2VCZWdpbihUSUZGUkdCQUltYWdlKiBpbWcsIFQKKyAJaW50IGNvbG9yY2hhbm5lbHM7CisgCXVpbnQxNiAqcmVkX29yaWcsICpncmVlbl9vcmlnLCAqYmx1ZV9vcmlnOworIAlpbnQgbl9jb2xvcjsKKysJCisrCWlmKCAhVElGRlJHQkFJbWFnZU9LKHRpZiwgZW1zZykgKQorKwkJcmV0dXJuIDA7CisgCisgCS8qIEluaXRpYWxpemUgdG8gbm9ybWFsIHZhbHVlcyAqLworIAlpbWctPnJvd19vZmZzZXQgPSAwOworQEAgLTI1MDgsMjkgKzI1MTMsMzMgQEAgUGlja0NvbnRpZ0Nhc2UoVElGRlJHQkFJbWFnZSogaW1nKQorIAkJY2FzZSBQSE9UT01FVFJJQ19SR0I6CisgCQkJc3dpdGNoIChpbWctPmJpdHNwZXJzYW1wbGUpIHsKKyAJCQkJY2FzZSA4OgorLQkJCQkJaWYgKGltZy0+YWxwaGEgPT0gRVhUUkFTQU1QTEVfQVNTT0NBTFBIQSkKKysJCQkJCWlmIChpbWctPmFscGhhID09IEVYVFJBU0FNUExFX0FTU09DQUxQSEEgJiYKKysJCQkJCQlpbWctPnNhbXBsZXNwZXJwaXhlbCA+PSA0KQorIAkJCQkJCWltZy0+cHV0LmNvbnRpZyA9IHB1dFJHQkFBY29udGlnOGJpdHRpbGU7CistCQkJCQllbHNlIGlmIChpbWctPmFscGhhID09IEVYVFJBU0FNUExFX1VOQVNTQUxQSEEpCisrCQkJCQllbHNlIGlmIChpbWctPmFscGhhID09IEVYVFJBU0FNUExFX1VOQVNTQUxQSEEgJiYKKysJCQkJCQkJIGltZy0+c2FtcGxlc3BlcnBpeGVsID49IDQpCisgCQkJCQl7CisgCQkJCQkJaWYgKEJ1aWxkTWFwVWFUb0FhKGltZykpCisgCQkJCQkJCWltZy0+cHV0LmNvbnRpZyA9IHB1dFJHQlVBY29udGlnOGJpdHRpbGU7CisgCQkJCQl9CistCQkJCQllbHNlCisrCQkJCQllbHNlIGlmKCBpbWctPnNhbXBsZXNwZXJwaXhlbCA+PSAzICkKKyAJCQkJCQlpbWctPnB1dC5jb250aWcgPSBwdXRSR0Jjb250aWc4Yml0dGlsZTsKKyAJCQkJCWJyZWFrOworIAkJCQljYXNlIDE2OgorLQkJCQkJaWYgKGltZy0+YWxwaGEgPT0gRVhUUkFTQU1QTEVfQVNTT0NBTFBIQSkKKysJCQkJCWlmIChpbWctPmFscGhhID09IEVYVFJBU0FNUExFX0FTU09DQUxQSEEgJiYKKysJCQkJCQlpbWctPnNhbXBsZXNwZXJwaXhlbCA+PTQgKQorIAkJCQkJeworIAkJCQkJCWlmIChCdWlsZE1hcEJpdGRlcHRoMTZUbzgoaW1nKSkKKyAJCQkJCQkJaW1nLT5wdXQuY29udGlnID0gcHV0UkdCQUFjb250aWcxNmJpdHRpbGU7CisgCQkJCQl9CistCQkJCQllbHNlIGlmIChpbWctPmFscGhhID09IEVYVFJBU0FNUExFX1VOQVNTQUxQSEEpCisrCQkJCQllbHNlIGlmIChpbWctPmFscGhhID09IEVYVFJBU0FNUExFX1VOQVNTQUxQSEEgJiYKKysJCQkJCQkJIGltZy0+c2FtcGxlc3BlcnBpeGVsID49NCApCisgCQkJCQl7CisgCQkJCQkJaWYgKEJ1aWxkTWFwQml0ZGVwdGgxNlRvOChpbWcpICYmCisgCQkJCQkJICAgIEJ1aWxkTWFwVWFUb0FhKGltZykpCisgCQkJCQkJCWltZy0+cHV0LmNvbnRpZyA9IHB1dFJHQlVBY29udGlnMTZiaXR0aWxlOworIAkJCQkJfQorLQkJCQkJZWxzZQorKwkJCQkJZWxzZSBpZiggaW1nLT5zYW1wbGVzcGVycGl4ZWwgPj0zICkKKyAJCQkJCXsKKyAJCQkJCQlpZiAoQnVpbGRNYXBCaXRkZXB0aDE2VG84KGltZykpCisgCQkJCQkJCWltZy0+cHV0LmNvbnRpZyA9IHB1dFJHQmNvbnRpZzE2Yml0dGlsZTsKK0BAIC0yNTM5LDcgKzI1NDgsNyBAQCBQaWNrQ29udGlnQ2FzZShUSUZGUkdCQUltYWdlKiBpbWcpCisgCQkJfQorIAkJCWJyZWFrOworIAkJY2FzZSBQSE9UT01FVFJJQ19TRVBBUkFURUQ6CistCQkJaWYgKGJ1aWxkTWFwKGltZykpIHsKKysJCQlpZiAoaW1nLT5zYW1wbGVzcGVycGl4ZWwgPj00ICYmIGJ1aWxkTWFwKGltZykpIHsKKyAJCQkJaWYgKGltZy0+Yml0c3BlcnNhbXBsZSA9PSA4KSB7CisgCQkJCQlpZiAoIWltZy0+TWFwKQorIAkJCQkJCWltZy0+cHV0LmNvbnRpZyA9IHB1dFJHQmNvbnRpZzhiaXRDTVlLdGlsZTsKK0BAIC0yNjM1LDcgKzI2NDQsNyBAQCBQaWNrQ29udGlnQ2FzZShUSUZGUkdCQUltYWdlKiBpbWcpCisgCQkJfQorIAkJCWJyZWFrOworIAkJY2FzZSBQSE9UT01FVFJJQ19DSUVMQUI6CistCQkJaWYgKGJ1aWxkTWFwKGltZykpIHsKKysJCQlpZiAoaW1nLT5zYW1wbGVzcGVycGl4ZWwgPT0gMyAmJiBidWlsZE1hcChpbWcpKSB7CisgCQkJCWlmIChpbWctPmJpdHNwZXJzYW1wbGUgPT0gOCkKKyAJCQkJCWltZy0+cHV0LmNvbnRpZyA9IGluaXRDSUVMYWJDb252ZXJzaW9uKGltZyk7CisgCQkJCWJyZWFrOworSW5kZXg6IHRpZmYtNC4wLjYvQ2hhbmdlTG9nCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gdGlmZi00LjAuNi5vcmlnL0NoYW5nZUxvZworKysrIHRpZmYtNC4wLjYvQ2hhbmdlTG9nCitAQCAtMSwzICsxLDExIEBACisrMjAxNS0xMi0yNiAgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KKysKKysgICAqIGxpYnRpZmYvdGlmX2dldGltYWdlLmM6IGZpeCBvdXQtb2YtYm91bmQgcmVhZHMgaW4gVElGRlJHQkFJbWFnZQorKyAgIGludGVyZmFjZSBpbiBjYXNlIG9mIHVuc3VwcG9ydGVkIHZhbHVlcyBvZiBTYW1wbGVzUGVyUGl4ZWwvRXh0cmFTYW1wbGVzCisrICAgZm9yIExvZ0xVViAvIENJRUxhYi4gQWRkIGV4cGxpY2l0IGNhbGwgdG8gVElGRlJHQkFJbWFnZU9LKCkgaW4KKysgICBUSUZGUkdCQUltYWdlQmVnaW4oKS4gRml4IENWRS0yMDE1LTg2NjUgcmVwb3J0ZWQgYnkgbGltaW5neGluZyBhbmQKKysgICBDVkUtMjAxNS04NjgzIHJlcG9ydGVkIGJ5IHp6ZiBvZiBBbGliYWJhLgorKworIDIwMTUtMDktMTIgIEJvYiBGcmllc2VuaGFobiAgPGJmcmllc2VuQHNpbXBsZS5kYWxsYXMudHgudXM+CisgCisgCSogbGlidGlmZiA0LjAuNiByZWxlYXNlZC4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE1LTg3ODEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNS04NzgxLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4NDZmMGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNS04NzgxLnBhdGNoCkBAIC0wLDAgKzEsMTk1IEBACitGcm9tIGFhYWI1YzNjOWQyYTJjNjk4NGYyM2NjYmM3OTcwMjYxMDQzOWJjNjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBlcm91YXVsdCA8ZXJvdWF1bHQ+CitEYXRlOiBTdW4sIDI3IERlYyAyMDE1IDE2OjI1OjExICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdICogbGlidGlmZi90aWZfbHV2LmM6IGZpeCBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kIHdyaXRlcyBpbgorIGRlY29kZSBmdW5jdGlvbnMgaW4gbm9uIGRlYnVnIGJ1aWxkcyBieSByZXBsYWNpbmcgYXNzZXJ0KClzIGJ5IHJlZ3VsYXIgaWYKKyBjaGVja3MgKGJ1Z3ppbGxhICMyNTIyKS4gRml4IHBvdGVudGlhbCBvdXQtb2YtYm91bmQgcmVhZHMgaW4gY2FzZSBvZiBzaG9ydAorIGlucHV0IGRhdGEuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworaHR0cHM6Ly9naXRodWIuY29tL3ZhZHovbGlidGlmZi9jb21taXQvYWFhYjVjM2M5ZDJhMmM2OTg0ZjIzY2NiYzc5NzAyNjEwNDM5YmM2NQoraGFuZCBhcHBsaWVkIENoYW5nZWxvZyBjaGFuZ2VzCisKK0NWRTogQ1ZFLTIwMTUtODc4MQorCitTaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KKy0tLQorIENoYW5nZUxvZyAgICAgICAgIHwgIDcgKysrKysrKworIGxpYnRpZmYvdGlmX2x1di5jIHwgNTUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgNTEgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCisKK0luZGV4OiB0aWZmLTQuMC40L0NoYW5nZUxvZworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHRpZmYtNC4wLjQub3JpZy9DaGFuZ2VMb2cKKysrKyB0aWZmLTQuMC40L0NoYW5nZUxvZworQEAgLTEsMyArMSwxMCBAQAorKzIwMTUtMTItMjcgIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+CisrCisrCSogbGlidGlmZi90aWZfbHV2LmM6IGZpeCBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kIHdyaXRlcyBpbiBkZWNvZGUKKysJZnVuY3Rpb25zIGluIG5vbiBkZWJ1ZyBidWlsZHMgYnkgcmVwbGFjaW5nIGFzc2VydCgpcyBieSByZWd1bGFyIGlmCisrCWNoZWNrcyAoYnVnemlsbGEgIzI1MjIpLgorKwlGaXggcG90ZW50aWFsIG91dC1vZi1ib3VuZCByZWFkcyBpbiBjYXNlIG9mIHNob3J0IGlucHV0IGRhdGEuCisrCisgMjAxNS0xMi0yNiAgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KKyAKKyAJKiBsaWJ0aWZmL3RpZl9nZXRpbWFnZS5jOiBmaXggb3V0LW9mLWJvdW5kIHJlYWRzIGluIFRJRkZSR0JBSW1hZ2UKK0luZGV4OiB0aWZmLTQuMC40L2xpYnRpZmYvdGlmX2x1di5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gdGlmZi00LjAuNC5vcmlnL2xpYnRpZmYvdGlmX2x1di5jCisrKysgdGlmZi00LjAuNC9saWJ0aWZmL3RpZl9sdXYuYworQEAgLTIwMiw3ICsyMDIsMTEgQEAgTG9nTDE2RGVjb2RlKFRJRkYqIHRpZiwgdWludDgqIG9wLCB0bXNpegorIAlpZiAoc3AtPnVzZXJfZGF0YWZtdCA9PSBTR0lMT0dEQVRBRk1UXzE2QklUKQorIAkJdHAgPSAoaW50MTYqKSBvcDsKKyAJZWxzZSB7CistCQlhc3NlcnQoc3AtPnRidWZsZW4gPj0gbnBpeGVscyk7CisrCQlpZihzcC0+dGJ1ZmxlbiA8IG5waXhlbHMpIHsKKysJCQlUSUZGRXJyb3JFeHQodGlmLT50aWZfY2xpZW50ZGF0YSwgbW9kdWxlLAorKwkJCQkJCSAiVHJhbnNsYXRpb24gYnVmZmVyIHRvbyBzaG9ydCIpOworKwkJCXJldHVybiAoMCk7CisrCQl9CisgCQl0cCA9IChpbnQxNiopIHNwLT50YnVmOworIAl9CisgCV9USUZGbWVtc2V0KCh2b2lkKikgdHAsIDAsIG5waXhlbHMqc2l6ZW9mICh0cFswXSkpOworQEAgLTIxMSw5ICsyMTUsMTEgQEAgTG9nTDE2RGVjb2RlKFRJRkYqIHRpZiwgdWludDgqIG9wLCB0bXNpegorIAljYyA9IHRpZi0+dGlmX3Jhd2NjOworIAkvKiBnZXQgZWFjaCBieXRlIHN0cmluZyAqLworIAlmb3IgKHNoZnQgPSAyKjg7IChzaGZ0IC09IDgpID49IDA7ICkgeworLQkJZm9yIChpID0gMDsgaSA8IG5waXhlbHMgJiYgY2MgPiAwOyApCisrCQlmb3IgKGkgPSAwOyBpIDwgbnBpeGVscyAmJiBjYyA+IDA7ICkgeworIAkJCWlmICgqYnAgPj0gMTI4KSB7CQkvKiBydW4gKi8KKy0JCQkJcmMgPSAqYnArKyArICgyLTEyOCk7ICAgLyogVE9ETzogcG90ZW50aWFsIGlucHV0IGJ1ZmZlciBvdmVycnVuIHdoZW4gZGVjb2RpbmcgY29ycnVwdCBvciB0cnVuY2F0ZWQgZGF0YSAqLworKwkJCQlpZiggY2MgPCAyICkKKysJCQkJCWJyZWFrOworKwkJCQlyYyA9ICpicCsrICsgKDItMTI4KTsKKyAJCQkJYiA9IChpbnQxNikoKmJwKysgPDwgc2hmdCk7CisgCQkJCWNjIC09IDI7CisgCQkJCXdoaWxlIChyYy0tICYmIGkgPCBucGl4ZWxzKQorQEAgLTIyMyw2ICsyMjksNyBAQCBMb2dMMTZEZWNvZGUoVElGRiogdGlmLCB1aW50OCogb3AsIHRtc2l6CisgCQkJCXdoaWxlICgtLWNjICYmIHJjLS0gJiYgaSA8IG5waXhlbHMpCisgCQkJCQl0cFtpKytdIHw9IChpbnQxNikqYnArKyA8PCBzaGZ0OworIAkJCX0KKysJCX0KKyAJCWlmIChpICE9IG5waXhlbHMpIHsKKyAjaWYgZGVmaW5lZChfX1dJTjMyX18pICYmIChkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fTUlOR1czMl9fKSkKKyAJCQlUSUZGRXJyb3JFeHQodGlmLT50aWZfY2xpZW50ZGF0YSwgbW9kdWxlLAorQEAgLTI2OCwxMyArMjc1LDE3IEBAIExvZ0x1dkRlY29kZTI0KFRJRkYqIHRpZiwgdWludDgqIG9wLCB0bXMKKyAJaWYgKHNwLT51c2VyX2RhdGFmbXQgPT0gU0dJTE9HREFUQUZNVF9SQVcpCisgCQl0cCA9ICh1aW50MzIgKilvcDsKKyAJZWxzZSB7CistCQlhc3NlcnQoc3AtPnRidWZsZW4gPj0gbnBpeGVscyk7CisrCQlpZihzcC0+dGJ1ZmxlbiA8IG5waXhlbHMpIHsKKysJCQlUSUZGRXJyb3JFeHQodGlmLT50aWZfY2xpZW50ZGF0YSwgbW9kdWxlLAorKwkJCQkJCSAiVHJhbnNsYXRpb24gYnVmZmVyIHRvbyBzaG9ydCIpOworKwkJCXJldHVybiAoMCk7CisrCQl9CisgCQl0cCA9ICh1aW50MzIgKikgc3AtPnRidWY7CisgCX0KKyAJLyogY29weSB0byBhcnJheSBvZiB1aW50MzIgKi8KKyAJYnAgPSAodW5zaWduZWQgY2hhciopIHRpZi0+dGlmX3Jhd2NwOworIAljYyA9IHRpZi0+dGlmX3Jhd2NjOworLQlmb3IgKGkgPSAwOyBpIDwgbnBpeGVscyAmJiBjYyA+IDA7IGkrKykgeworKwlmb3IgKGkgPSAwOyBpIDwgbnBpeGVscyAmJiBjYyA+PSAzOyBpKyspIHsKKyAJCXRwW2ldID0gYnBbMF0gPDwgMTYgfCBicFsxXSA8PCA4IHwgYnBbMl07CisgCQlicCArPSAzOworIAkJY2MgLT0gMzsKK0BAIC0zMjUsNyArMzM2LDExIEBAIExvZ0x1dkRlY29kZTMyKFRJRkYqIHRpZiwgdWludDgqIG9wLCB0bXMKKyAJaWYgKHNwLT51c2VyX2RhdGFmbXQgPT0gU0dJTE9HREFUQUZNVF9SQVcpCisgCQl0cCA9ICh1aW50MzIqKSBvcDsKKyAJZWxzZSB7CistCQlhc3NlcnQoc3AtPnRidWZsZW4gPj0gbnBpeGVscyk7CisrCQlpZihzcC0+dGJ1ZmxlbiA8IG5waXhlbHMpIHsKKysJCQlUSUZGRXJyb3JFeHQodGlmLT50aWZfY2xpZW50ZGF0YSwgbW9kdWxlLAorKwkJCQkJCSAiVHJhbnNsYXRpb24gYnVmZmVyIHRvbyBzaG9ydCIpOworKwkJCXJldHVybiAoMCk7CisrCQl9CisgCQl0cCA9ICh1aW50MzIqKSBzcC0+dGJ1ZjsKKyAJfQorIAlfVElGRm1lbXNldCgodm9pZCopIHRwLCAwLCBucGl4ZWxzKnNpemVvZiAodHBbMF0pKTsKK0BAIC0zMzQsMTEgKzM0OSwxMyBAQCBMb2dMdXZEZWNvZGUzMihUSUZGKiB0aWYsIHVpbnQ4KiBvcCwgdG1zCisgCWNjID0gdGlmLT50aWZfcmF3Y2M7CisgCS8qIGdldCBlYWNoIGJ5dGUgc3RyaW5nICovCisgCWZvciAoc2hmdCA9IDQqODsgKHNoZnQgLT0gOCkgPj0gMDsgKSB7CistCQlmb3IgKGkgPSAwOyBpIDwgbnBpeGVscyAmJiBjYyA+IDA7ICkKKysJCWZvciAoaSA9IDA7IGkgPCBucGl4ZWxzICYmIGNjID4gMDsgKSB7CisgCQkJaWYgKCpicCA+PSAxMjgpIHsJCS8qIHJ1biAqLworKwkJCQlpZiggY2MgPCAyICkKKysJCQkJCWJyZWFrOworIAkJCQlyYyA9ICpicCsrICsgKDItMTI4KTsKKyAJCQkJYiA9ICh1aW50MzIpKmJwKysgPDwgc2hmdDsKKy0JCQkJY2MgLT0gMjsgICAgICAgICAgICAgICAgLyogVE9ETzogcG90ZW50aWFsIGlucHV0IGJ1ZmZlciBvdmVycnVuIHdoZW4gZGVjb2RpbmcgY29ycnVwdCBvciB0cnVuY2F0ZWQgZGF0YSAqLworKwkJCQljYyAtPSAyOworIAkJCQl3aGlsZSAocmMtLSAmJiBpIDwgbnBpeGVscykKKyAJCQkJCXRwW2krK10gfD0gYjsKKyAJCQl9IGVsc2UgewkJCS8qIG5vbi1ydW4gKi8KK0BAIC0zNDYsNiArMzYzLDcgQEAgTG9nTHV2RGVjb2RlMzIoVElGRiogdGlmLCB1aW50OCogb3AsIHRtcworIAkJCQl3aGlsZSAoLS1jYyAmJiByYy0tICYmIGkgPCBucGl4ZWxzKQorIAkJCQkJdHBbaSsrXSB8PSAodWludDMyKSpicCsrIDw8IHNoZnQ7CisgCQkJfQorKwkJfQorIAkJaWYgKGkgIT0gbnBpeGVscykgeworICNpZiBkZWZpbmVkKF9fV0lOMzJfXykgJiYgKGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19NSU5HVzMyX18pKQorIAkJCVRJRkZFcnJvckV4dCh0aWYtPnRpZl9jbGllbnRkYXRhLCBtb2R1bGUsCitAQCAtNDEzLDYgKzQzMSw3IEBAIExvZ0x1dkRlY29kZVRpbGUoVElGRiogdGlmLCB1aW50OCogYnAsIHQKKyBzdGF0aWMgaW50CisgTG9nTDE2RW5jb2RlKFRJRkYqIHRpZiwgdWludDgqIGJwLCB0bXNpemVfdCBjYywgdWludDE2IHMpCisgeworKwlzdGF0aWMgY29uc3QgY2hhciBtb2R1bGVbXSA9ICJMb2dMMTZFbmNvZGUiOworIAlMb2dMdXZTdGF0ZSogc3AgPSBFbmNvZGVyU3RhdGUodGlmKTsKKyAJaW50IHNoZnQ7CisgCXRtc2l6ZV90IGk7CitAQCAtNDMzLDcgKzQ1MiwxMSBAQCBMb2dMMTZFbmNvZGUoVElGRiogdGlmLCB1aW50OCogYnAsIHRtc2l6CisgCQl0cCA9IChpbnQxNiopIGJwOworIAllbHNlIHsKKyAJCXRwID0gKGludDE2Kikgc3AtPnRidWY7CistCQlhc3NlcnQoc3AtPnRidWZsZW4gPj0gbnBpeGVscyk7CisrCQlpZihzcC0+dGJ1ZmxlbiA8IG5waXhlbHMpIHsKKysJCQlUSUZGRXJyb3JFeHQodGlmLT50aWZfY2xpZW50ZGF0YSwgbW9kdWxlLAorKwkJCQkJCSAiVHJhbnNsYXRpb24gYnVmZmVyIHRvbyBzaG9ydCIpOworKwkJCXJldHVybiAoMCk7CisrCQl9CisgCQkoKnNwLT50ZnVuYykoc3AsIGJwLCBucGl4ZWxzKTsKKyAJfQorIAkvKiBjb21wcmVzcyBlYWNoIGJ5dGUgc3RyaW5nICovCitAQCAtNTA2LDYgKzUyOSw3IEBAIExvZ0wxNkVuY29kZShUSUZGKiB0aWYsIHVpbnQ4KiBicCwgdG1zaXoKKyBzdGF0aWMgaW50CisgTG9nTHV2RW5jb2RlMjQoVElGRiogdGlmLCB1aW50OCogYnAsIHRtc2l6ZV90IGNjLCB1aW50MTYgcykKKyB7CisrCXN0YXRpYyBjb25zdCBjaGFyIG1vZHVsZVtdID0gIkxvZ0x1dkVuY29kZTI0IjsKKyAJTG9nTHV2U3RhdGUqIHNwID0gRW5jb2RlclN0YXRlKHRpZik7CisgCXRtc2l6ZV90IGk7CisgCXRtc2l6ZV90IG5waXhlbHM7CitAQCAtNTIxLDcgKzU0NSwxMSBAQCBMb2dMdXZFbmNvZGUyNChUSUZGKiB0aWYsIHVpbnQ4KiBicCwgdG1zCisgCQl0cCA9ICh1aW50MzIqKSBicDsKKyAJZWxzZSB7CisgCQl0cCA9ICh1aW50MzIqKSBzcC0+dGJ1ZjsKKy0JCWFzc2VydChzcC0+dGJ1ZmxlbiA+PSBucGl4ZWxzKTsKKysJCWlmKHNwLT50YnVmbGVuIDwgbnBpeGVscykgeworKwkJCVRJRkZFcnJvckV4dCh0aWYtPnRpZl9jbGllbnRkYXRhLCBtb2R1bGUsCisrCQkJCQkJICJUcmFuc2xhdGlvbiBidWZmZXIgdG9vIHNob3J0Iik7CisrCQkJcmV0dXJuICgwKTsKKysJCX0KKyAJCSgqc3AtPnRmdW5jKShzcCwgYnAsIG5waXhlbHMpOworIAl9CisgCS8qIHdyaXRlIG91dCBlbmNvZGVkIHBpeGVscyAqLworQEAgLTU1Myw2ICs1ODEsNyBAQCBMb2dMdXZFbmNvZGUyNChUSUZGKiB0aWYsIHVpbnQ4KiBicCwgdG1zCisgc3RhdGljIGludAorIExvZ0x1dkVuY29kZTMyKFRJRkYqIHRpZiwgdWludDgqIGJwLCB0bXNpemVfdCBjYywgdWludDE2IHMpCisgeworKwlzdGF0aWMgY29uc3QgY2hhciBtb2R1bGVbXSA9ICJMb2dMdXZFbmNvZGUzMiI7CisgCUxvZ0x1dlN0YXRlKiBzcCA9IEVuY29kZXJTdGF0ZSh0aWYpOworIAlpbnQgc2hmdDsKKyAJdG1zaXplX3QgaTsKK0BAIC01NzQsNyArNjAzLDExIEBAIExvZ0x1dkVuY29kZTMyKFRJRkYqIHRpZiwgdWludDgqIGJwLCB0bXMKKyAJCXRwID0gKHVpbnQzMiopIGJwOworIAllbHNlIHsKKyAJCXRwID0gKHVpbnQzMiopIHNwLT50YnVmOworLQkJYXNzZXJ0KHNwLT50YnVmbGVuID49IG5waXhlbHMpOworKwkJaWYoc3AtPnRidWZsZW4gPCBucGl4ZWxzKSB7CisrCQkJVElGRkVycm9yRXh0KHRpZi0+dGlmX2NsaWVudGRhdGEsIG1vZHVsZSwKKysJCQkJCQkgIlRyYW5zbGF0aW9uIGJ1ZmZlciB0b28gc2hvcnQiKTsKKysJCQlyZXR1cm4gKDApOworKwkJfQorIAkJKCpzcC0+dGZ1bmMpKHNwLCBicCwgbnBpeGVscyk7CisgCX0KKyAJLyogY29tcHJlc3MgZWFjaCBieXRlIHN0cmluZyAqLwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTUtODc4NC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE1LTg3ODQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGNhZjgwMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE1LTg3ODQucGF0Y2gKQEAgLTAsMCArMSw3MyBAQAorRnJvbSBiMTgwMTJkYWU1NTJmODVkY2M1YzU3ZDNiZjRlOTk3YTE1YjFjYzFjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogZXJvdWF1bHQgPGVyb3VhdWx0PgorRGF0ZTogU3VuLCAyNyBEZWMgMjAxNSAxNjo1NToyMCArMDAwMAorU3ViamVjdDogW1BBVENIXSAqIGxpYnRpZmYvdGlmX25leHQuYzogZml4IHBvdGVudGlhbCBvdXQtb2YtYm91bmQgd3JpdGUgaW4KKyBOZVhURGVjb2RlKCkgdHJpZ2dlcmVkIGJ5IGh0dHA6Ly9sY2FtdHVmLmNvcmVkdW1wLmN4L2FmbC92dWxucy9saWJ0aWZmNS50aWYKKyAoYnVnemlsbGEgIzI1MDgpCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK2h0dHBzOi8vZ2l0aHViLmNvbS92YWR6L2xpYnRpZmYvY29tbWl0L2IxODAxMmRhZTU1MmY4NWRjYzVjNTdkM2JmNGU5OTdhMTViMWNjMWMKK2hhbmQgYXBwbGllZCBDaGFuZ2Vsb2cgY2hhbmdlcworCitDVkU6ICBDVkUtMjAxNS04Nzg0CitTaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KKworLS0tCisgQ2hhbmdlTG9nICAgICAgICAgIHwgIDYgKysrKysrCisgbGlidGlmZi90aWZfbmV4dC5jIHwgMTAgKysrKysrKystLQorIDIgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworSW5kZXg6IHRpZmYtNC4wLjQvQ2hhbmdlTG9nCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gdGlmZi00LjAuNC5vcmlnL0NoYW5nZUxvZworKysrIHRpZmYtNC4wLjQvQ2hhbmdlTG9nCitAQCAtMSw1ICsxLDExIEBACisgMjAxNS0xMi0yNyAgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KKyAKKysJKiBsaWJ0aWZmL3RpZl9uZXh0LmM6IGZpeCBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kIHdyaXRlIGluIE5lWFREZWNvZGUoKQorKwl0cmlnZ2VyZWQgYnkgaHR0cDovL2xjYW10dWYuY29yZWR1bXAuY3gvYWZsL3Z1bG5zL2xpYnRpZmY1LnRpZgorKwkoYnVnemlsbGEgIzI1MDgpCisrCisrMjAxNS0xMi0yNyAgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KKysKKyAJKiBsaWJ0aWZmL3RpZl9sdXYuYzogZml4IHBvdGVudGlhbCBvdXQtb2YtYm91bmQgd3JpdGVzIGluIGRlY29kZQorIAlmdW5jdGlvbnMgaW4gbm9uIGRlYnVnIGJ1aWxkcyBieSByZXBsYWNpbmcgYXNzZXJ0KClzIGJ5IHJlZ3VsYXIgaWYKKyAJY2hlY2tzIChidWd6aWxsYSAjMjUyMikuCitJbmRleDogdGlmZi00LjAuNC9saWJ0aWZmL3RpZl9uZXh0LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB0aWZmLTQuMC40Lm9yaWcvbGlidGlmZi90aWZfbmV4dC5jCisrKysgdGlmZi00LjAuNC9saWJ0aWZmL3RpZl9uZXh0LmMKK0BAIC0zNyw3ICszNyw3IEBACisgCWNhc2UgMDoJb3BbMF0gID0gKHVuc2lnbmVkIGNoYXIpICgodikgPDwgNik7IGJyZWFrOwlcCisgCWNhc2UgMToJb3BbMF0gfD0gKHYpIDw8IDQ7IGJyZWFrOwlcCisgCWNhc2UgMjoJb3BbMF0gfD0gKHYpIDw8IDI7IGJyZWFrOwlcCistCWNhc2UgMzoJKm9wKysgfD0gKHYpOwkgICBicmVhazsJXAorKwljYXNlIDM6CSpvcCsrIHw9ICh2KTsJICAgb3Bfb2Zmc2V0Kys7IGJyZWFrOwlcCisgCX0JCQkJCVwKKyB9CisgCitAQCAtMTA2LDYgKzEwNiw3IEBAIE5lWFREZWNvZGUoVElGRiogdGlmLCB1aW50OCogYnVmLCB0bXNpemUKKyAJCQl1aW50MzIgaW1hZ2V3aWR0aCA9IHRpZi0+dGlmX2Rpci50ZF9pbWFnZXdpZHRoOworICAgICAgICAgICAgIGlmKCBpc1RpbGVkKHRpZikgKQorICAgICAgICAgICAgICAgICBpbWFnZXdpZHRoID0gdGlmLT50aWZfZGlyLnRkX3RpbGV3aWR0aDsKKysgICAgICAgICAgICB0bXNpemVfdCBvcF9vZmZzZXQgPSAwOworIAorIAkJCS8qCisgCQkJICogVGhlIHNjYW5saW5lIGlzIGNvbXBvc2VkIG9mIGEgc2VxdWVuY2Ugb2YgY29uc3RhbnQKK0BAIC0xMjIsMTAgKzEyMywxNSBAQCBOZVhURGVjb2RlKFRJRkYqIHRpZiwgdWludDgqIGJ1ZiwgdG1zaXplCisgCQkJCSAqIGJvdW5kcywgcG90ZW50aWFsbHkgcmVzdWx0aW5nIGluIGEgc2VjdXJpdHkKKyAJCQkJICogaXNzdWUuCisgCQkJCSAqLworLQkJCQl3aGlsZSAobi0tID4gMCAmJiBucGl4ZWxzIDwgaW1hZ2V3aWR0aCkKKysJCQkJd2hpbGUgKG4tLSA+IDAgJiYgbnBpeGVscyA8IGltYWdld2lkdGggJiYgb3Bfb2Zmc2V0IDwgc2NhbmxpbmUpCisgCQkJCQlTRVRQSVhFTChvcCwgZ3JleSk7CisgCQkJCWlmIChucGl4ZWxzID49IGltYWdld2lkdGgpCisgCQkJCQlicmVhazsKKysgICAgICAgICAgICAgICAgaWYgKG9wX29mZnNldCA+PSBzY2FubGluZSApIHsKKysgICAgICAgICAgICAgICAgICAgIFRJRkZFcnJvckV4dCh0aWYtPnRpZl9jbGllbnRkYXRhLCBtb2R1bGUsICJJbnZhbGlkIGRhdGEgZm9yIHNjYW5saW5lICVsZCIsCisrICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpIHRpZi0+dGlmX3Jvdyk7CisrICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDApOworKyAgICAgICAgICAgICAgICB9CisgCQkJCWlmIChjYyA9PSAwKQorIAkJCQkJZ290byBiYWQ7CisgCQkJCW4gPSAqYnArKywgY2MtLTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE2LTMxODYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNi0zMTg2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhMDhhYmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNi0zMTg2LnBhdGNoCkBAIC0wLDAgKzEsMjQgQEAKK0J1ZmZlciBvdmVyZmxvdyBpbiB0aGUgcmVhZGV4dGVuc2lvbiBmdW5jdGlvbiBpbiBnaWYydGlmZi5jCithbGxvd3MgcmVtb3RlIGF0dGFja2VycyB0byBjYXVzZSBhIGRlbmlhbCBvZiBzZXJ2aWNlIHZpYSBhIGNyYWZ0ZWQgR0lGIGZpbGUuCisKK0V4dGVybmFsIFJlZmVyZW5jZXM6CitodHRwczovL3dlYi5udmQubmlzdC5nb3Yvdmlldy92dWxuL2RldGFpbD92dWxuSWQ9Q1ZFLTIwMTYtMzE4NgoraHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD0xMzE5NTAzCisKK0NWRTogQ1ZFLTIwMTYtMzE4NgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCAoUmVkSGF0KQoraHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL2F0dGFjaG1lbnQuY2dpP2lkPTExNDQyMzUmYWN0aW9uPWRpZmYKKworU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kaXJ2ZXIuY29tPgorCistLS0gdGlmZi00LjAuNi90b29scy9naWYydGlmZi5jCTIwMTYtMDQtMDYgMTU6NDM6MDEuNTg2MDQ4MzQxICswMjAwCisrKysgdGlmZi00LjAuNi90b29scy9naWYydGlmZi5jCTIwMTYtMDQtMDYgMTU6NDg6MDUuNTIzMjA3NzEwICswMjAwCitAQCAtMzQ5LDcgKzM0OSw3IEBACisgICAgIGludCBzdGF0dXMgPSAxOworIAorICAgICAodm9pZCkgZ2V0YyhpbmZpbGUpOworLSAgICB3aGlsZSAoKGNvdW50ID0gZ2V0YyhpbmZpbGUpKSAmJiBjb3VudCA8PSAyNTUpCisrICAgIHdoaWxlICgoY291bnQgPSBnZXRjKGluZmlsZSkpICYmIGNvdW50ID49IDAgJiYgY291bnQgPD0gMjU1KQorICAgICAgICAgaWYgKGZyZWFkKGJ1ZiwgMSwgY291bnQsIGluZmlsZSkgIT0gKHNpemVfdCkgY291bnQpIHsKKyAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInNob3J0IHJlYWQgZnJvbSBmaWxlICVzICglcylcbiIsCisgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE2LTUzMjEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNi01MzIxLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzYzY2NTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNi01MzIxLnBhdGNoCkBAIC0wLDAgKzEsNDkgQEAKK0Zyb20gZDk3ODNlNGExNDc2YjY3ODdhNTFjNWFlOWU5YjMxNTY1Mjc1ODlmMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IGVyb3VhdWx0IDxlcm91YXVsdD4KK0RhdGU6IE1vbiwgMTEgSnVsIDIwMTYgMjE6MjY6MDMgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdICogdG9vbHMvdGlmZmNyb3AuYzogQXZvaWQgYWNjZXNzIG91dHNpZGUgb2Ygc3RhY2sKKyBhbGxvY2F0ZWQgYXJyYXkgb24gYSB0aWxlZCBzZXBhcmF0ZSBUSUZGIHdpdGggbW9yZSB0aGFuIDggc2FtcGxlcyBwZXIgcGl4ZWwuCisgUmVwb3J0ZWQgYnkgS2FpeGlhbmcgWmhhbmcgb2YgdGhlIENsb3VkIFNlY3VyaXR5IFRlYW0sIFFpaG9vIDM2MAorIChDVkUtMjAxNi01MzIxLCBidWd6aWxsYSAjMjU1OCkKKworQ1ZFOiBDVkUtMjAxNi01MzIxCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitodHRwczovL2dpdGh1Yi5jb20vdmFkei9saWJ0aWZmL2NvbW1pdC9kOTc4M2U0YTE0NzZiNjc4N2E1MWM1YWU5ZTliMzE1NjUyNzU4OWYwCisKK1NpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZGlydmVyLmNvbT4KKy0tLQorIENoYW5nZUxvZyAgICAgICAgfCA3ICsrKysrKysKKyB0b29scy90aWZmY3JvcC5jIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKK2luZGV4IGU5OGQ1NGQuLjRlMDMwMmYgMTAwNjQ0CistLS0gYS9DaGFuZ2VMb2cKKysrKyBiL0NoYW5nZUxvZworQEAgLTEsMyArMSwxMCBAQAorKzIwMTYtMDctMTEgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KKysKKysJKiB0b29scy90aWZmY3JvcC5jOiBBdm9pZCBhY2Nlc3Mgb3V0c2lkZSBvZiBzdGFjayBhbGxvY2F0ZWQgYXJyYXkKKysJb24gYSB0aWxlZCBzZXBhcmF0ZSBUSUZGIHdpdGggbW9yZSB0aGFuIDggc2FtcGxlcyBwZXIgcGl4ZWwuCisrCVJlcG9ydGVkIGJ5IEthaXhpYW5nIFpoYW5nIG9mIHRoZSBDbG91ZCBTZWN1cml0eSBUZWFtLCBRaWhvbyAzNjAKKysJKENWRS0yMDE2LTUzMjEsIGJ1Z3ppbGxhICMyNTU4KQorKworIDIwMTUtMTItMjcgIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+CisKKwkqIGxpYnRpZmYvdGlmX25leHQuYzogZml4IHBvdGVudGlhbCBvdXQtb2YtYm91bmQgd3JpdGUgaW4gTmVYVERlY29kZSgpCitkaWZmIC0tZ2l0IGEvdG9vbHMvdGlmZmNyb3AuYyBiL3Rvb2xzL3RpZmZjcm9wLmMKK2luZGV4IGQ5NTlhZTMuLjZmYzhmYzEgMTAwNjQ0CistLS0gYS90b29scy90aWZmY3JvcC5jCisrKysgYi90b29scy90aWZmY3JvcC5jCitAQCAtOTg5LDcgKzk4OSw3IEBAIHN0YXRpYyBpbnQgIHJlYWRTZXBhcmF0ZVRpbGVzSW50b0J1ZmZlciAoVElGRiogaW4sIHVpbnQ4ICpvYnVmLAorICAgICBucm93ID0gKHJvdyArIHRsID4gaW1hZ2VsZW5ndGgpID8gaW1hZ2VsZW5ndGggLSByb3cgOiB0bDsKKyAgICAgZm9yIChjb2wgPSAwOyBjb2wgPCBpbWFnZXdpZHRoOyBjb2wgKz0gdHcpCisgICAgICAgeworLSAgICAgIGZvciAocyA9IDA7IHMgPCBzcHA7IHMrKykKKysgICAgICBmb3IgKHMgPSAwOyBzIDwgc3BwICYmIHMgPCBNQVhfU0FNUExFUzsgcysrKQorICAgICAgICAgeyAgLyogUmVhZCBlYWNoIHBsYW5lIG9mIGEgdGlsZSBzZXQgaW50byBzcmNidWZmc1tzXSAqLworIAl0Ynl0ZXMgPSBUSUZGUmVhZFRpbGUoaW4sIHNyY2J1ZmZzW3NdLCBjb2wsIHJvdywgMCwgcyk7CisgICAgICAgICBpZiAodGJ5dGVzIDwgMCAgJiYgIWlnbm9yZSkKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTYtNTMyMy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE2LTUzMjMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDFlYWI5MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE2LTUzMjMucGF0Y2gKQEAgLTAsMCArMSwxMDcgQEAKK0Zyb20gMmY3OTg1NjA5N2Y0MjNlYjMzNzk2YTE1ZmNmNzAwZDJlYTQxYmYzMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IGVyb3VhdWx0IDxlcm91YXVsdD4KK0RhdGU6IE1vbiwgMTEgSnVsIDIwMTYgMjE6Mzg6MzEgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIChDVkUtMjAxNi01MzIxIC8gQ1ZFLTIwMTYtNTMyMyAsIGJ1Z3ppbGxhICMyNTU4IC8gIzI1NTkpCisKK0NWRTogQ1ZFLTIwMTYtNTMyMworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAoraHR0cHM6Ly9naXRodWIuY29tL3ZhZHovbGlidGlmZi9jb21taXQvMmY3OTg1NjA5N2Y0MjNlYjMzNzk2YTE1ZmNmNzAwZDJlYTQxYmYzMQorCitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRpcnZlci5jb20+CistLS0KKyBDaGFuZ2VMb2cgICAgICAgIHwgIDIgKy0KKyB0b29scy90aWZmY3JvcC5jIHwgMTYgKysrKysrKystLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCitpbmRleCA0ZTAzMDJmLi42MmRjMWI1IDEwMDY0NAorLS0tIGEvQ2hhbmdlTG9nCisrKysgYi9DaGFuZ2VMb2cKK0BAIC0zLDcgKzMsNyBAQAorIAkqIHRvb2xzL3RpZmZjcm9wLmM6IEF2b2lkIGFjY2VzcyBvdXRzaWRlIG9mIHN0YWNrIGFsbG9jYXRlZCBhcnJheQorIAlvbiBhIHRpbGVkIHNlcGFyYXRlIFRJRkYgd2l0aCBtb3JlIHRoYW4gOCBzYW1wbGVzIHBlciBwaXhlbC4KKyAJUmVwb3J0ZWQgYnkgS2FpeGlhbmcgWmhhbmcgb2YgdGhlIENsb3VkIFNlY3VyaXR5IFRlYW0sIFFpaG9vIDM2MAorLQkoQ1ZFLTIwMTYtNTMyMSwgYnVnemlsbGEgIzI1NTgpCisrCShDVkUtMjAxNi01MzIxIC8gQ1ZFLTIwMTYtNTMyMyAsIGJ1Z3ppbGxhICMyNTU4IC8gIzI1NTkpCisgCisgMjAxNi0wNy0xMCBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgorIAorZGlmZiAtLWdpdCBhL3Rvb2xzL3RpZmZjcm9wLmMgYi90b29scy90aWZmY3JvcC5jCitpbmRleCA2ZmM4ZmMxLi4yN2FiYzBiIDEwMDY0NAorLS0tIGEvdG9vbHMvdGlmZmNyb3AuYworKysrIGIvdG9vbHMvdGlmZmNyb3AuYworQEAgLTM3MzgsNyArMzczOCw3IEBAIGNvbWJpbmVTZXBhcmF0ZVNhbXBsZXM4Yml0cyAodWludDggKmluW10sIHVpbnQ4ICpvdXQsIHVpbnQzMiBjb2xzLAorIAorICAgICAgIG1hdGNoYml0cyA9IG1hc2tiaXRzIDw8ICg4IC0gc3JjX2JpdCAtIGJwcyk7IAorICAgICAgIC8qIGxvYWQgdXAgbmV4dCBzYW1wbGUgZnJvbSBlYWNoIHBsYW5lICovCistICAgICAgZm9yIChzID0gMDsgcyA8IHNwcDsgcysrKQorKyAgICAgIGZvciAocyA9IDA7IChzIDwgc3BwKSAmJiAocyA8IE1BWF9TQU1QTEVTKTsgcysrKQorICAgICAgICAgeworIAlzcmMgPSBpbltzXSArIHNyY19vZmZzZXQgKyBzcmNfYnl0ZTsKKyAgICAgICAgIGJ1ZmYxID0gKCgqc3JjKSAmIG1hdGNoYml0cykgPDwgKHNyY19iaXQpOworQEAgLTM4MzcsNyArMzgzNyw3IEBAIGNvbWJpbmVTZXBhcmF0ZVNhbXBsZXMxNmJpdHMgKHVpbnQ4ICppbltdLCB1aW50OCAqb3V0LCB1aW50MzIgY29scywKKyAgICAgICBzcmNfYml0ICA9IGJpdF9vZmZzZXQgJSA4OworIAorICAgICAgIG1hdGNoYml0cyA9IG1hc2tiaXRzIDw8ICgxNiAtIHNyY19iaXQgLSBicHMpOyAKKy0gICAgICBmb3IgKHMgPSAwOyBzIDwgc3BwOyBzKyspCisrICAgICAgZm9yIChzID0gMDsgKHMgPCBzcHApICYmIChzIDwgTUFYX1NBTVBMRVMpOyBzKyspCisgICAgICAgICB7CisgCXNyYyA9IGluW3NdICsgc3JjX29mZnNldCArIHNyY19ieXRlOworICAgICAgICAgaWYgKGxpdHRsZV9lbmRpYW4pCitAQCAtMzk0Nyw3ICszOTQ3LDcgQEAgY29tYmluZVNlcGFyYXRlU2FtcGxlczI0Yml0cyAodWludDggKmluW10sIHVpbnQ4ICpvdXQsIHVpbnQzMiBjb2xzLAorICAgICAgIHNyY19iaXQgID0gYml0X29mZnNldCAlIDg7CisgCisgICAgICAgbWF0Y2hiaXRzID0gbWFza2JpdHMgPDwgKDMyIC0gc3JjX2JpdCAtIGJwcyk7IAorLSAgICAgIGZvciAocyA9IDA7IHMgPCBzcHA7IHMrKykKKysgICAgICBmb3IgKHMgPSAwOyAocyA8IHNwcCkgJiYgKHMgPCBNQVhfU0FNUExFUyk7IHMrKykKKyAgICAgICAgIHsKKyAJc3JjID0gaW5bc10gKyBzcmNfb2Zmc2V0ICsgc3JjX2J5dGU7CisgICAgICAgICBpZiAobGl0dGxlX2VuZGlhbikKK0BAIC00MDczLDcgKzQwNzMsNyBAQCBjb21iaW5lU2VwYXJhdGVTYW1wbGVzMzJiaXRzICh1aW50OCAqaW5bXSwgdWludDggKm91dCwgdWludDMyIGNvbHMsCisgICAgICAgc3JjX2JpdCAgPSBiaXRfb2Zmc2V0ICUgODsKKyAKKyAgICAgICBtYXRjaGJpdHMgPSBtYXNrYml0cyA8PCAoNjQgLSBzcmNfYml0IC0gYnBzKTsgCistICAgICAgZm9yIChzID0gMDsgcyA8IHNwcDsgcysrKQorKyAgICAgIGZvciAocyA9IDA7IChzIDwgc3BwKSAmJiAocyA8IE1BWF9TQU1QTEVTKTsgcysrKQorIAl7CisgCXNyYyA9IGluW3NdICsgc3JjX29mZnNldCArIHNyY19ieXRlOworIAlpZiAobGl0dGxlX2VuZGlhbikKK0BAIC00MjYzLDcgKzQyNjMsNyBAQCBjb21iaW5lU2VwYXJhdGVUaWxlU2FtcGxlczhiaXRzICh1aW50OCAqaW5bXSwgdWludDggKm91dCwgdWludDMyIGNvbHMsCisgCisgICAgICAgbWF0Y2hiaXRzID0gbWFza2JpdHMgPDwgKDggLSBzcmNfYml0IC0gYnBzKTsgCisgICAgICAgLyogbG9hZCB1cCBuZXh0IHNhbXBsZSBmcm9tIGVhY2ggcGxhbmUgKi8KKy0gICAgICBmb3IgKHMgPSAwOyBzIDwgc3BwOyBzKyspCisrICAgICAgZm9yIChzID0gMDsgKHMgPCBzcHApICYmIChzIDwgTUFYX1NBTVBMRVMpOyBzKyspCisgICAgICAgICB7CisgCXNyYyA9IGluW3NdICsgc3JjX29mZnNldCArIHNyY19ieXRlOworICAgICAgICAgYnVmZjEgPSAoKCpzcmMpICYgbWF0Y2hiaXRzKSA8PCAoc3JjX2JpdCk7CitAQCAtNDM2Miw3ICs0MzYyLDcgQEAgY29tYmluZVNlcGFyYXRlVGlsZVNhbXBsZXMxNmJpdHMgKHVpbnQ4ICppbltdLCB1aW50OCAqb3V0LCB1aW50MzIgY29scywKKyAgICAgICBzcmNfYml0ICA9IGJpdF9vZmZzZXQgJSA4OworIAorICAgICAgIG1hdGNoYml0cyA9IG1hc2tiaXRzIDw8ICgxNiAtIHNyY19iaXQgLSBicHMpOyAKKy0gICAgICBmb3IgKHMgPSAwOyBzIDwgc3BwOyBzKyspCisrICAgICAgZm9yIChzID0gMDsgKHMgPCBzcHApICYmIChzIDwgTUFYX1NBTVBMRVMpOyBzKyspCisgICAgICAgICB7CisgCXNyYyA9IGluW3NdICsgc3JjX29mZnNldCArIHNyY19ieXRlOworICAgICAgICAgaWYgKGxpdHRsZV9lbmRpYW4pCitAQCAtNDQ3MSw3ICs0NDcxLDcgQEAgY29tYmluZVNlcGFyYXRlVGlsZVNhbXBsZXMyNGJpdHMgKHVpbnQ4ICppbltdLCB1aW50OCAqb3V0LCB1aW50MzIgY29scywKKyAgICAgICBzcmNfYml0ICA9IGJpdF9vZmZzZXQgJSA4OworIAorICAgICAgIG1hdGNoYml0cyA9IG1hc2tiaXRzIDw8ICgzMiAtIHNyY19iaXQgLSBicHMpOyAKKy0gICAgICBmb3IgKHMgPSAwOyBzIDwgc3BwOyBzKyspCisrICAgICAgZm9yIChzID0gMDsgKHMgPCBzcHApICYmIChzIDwgTUFYX1NBTVBMRVMpOyBzKyspCisgICAgICAgICB7CisgCXNyYyA9IGluW3NdICsgc3JjX29mZnNldCArIHNyY19ieXRlOworICAgICAgICAgaWYgKGxpdHRsZV9lbmRpYW4pCitAQCAtNDU5Nyw3ICs0NTk3LDcgQEAgY29tYmluZVNlcGFyYXRlVGlsZVNhbXBsZXMzMmJpdHMgKHVpbnQ4ICppbltdLCB1aW50OCAqb3V0LCB1aW50MzIgY29scywKKyAgICAgICBzcmNfYml0ICA9IGJpdF9vZmZzZXQgJSA4OworIAorICAgICAgIG1hdGNoYml0cyA9IG1hc2tiaXRzIDw8ICg2NCAtIHNyY19iaXQgLSBicHMpOyAKKy0gICAgICBmb3IgKHMgPSAwOyBzIDwgc3BwOyBzKyspCisrICAgICAgZm9yIChzID0gMDsgKHMgPCBzcHApICYmIChzIDwgTUFYX1NBTVBMRVMpOyBzKyspCisgCXsKKyAJc3JjID0gaW5bc10gKyBzcmNfb2Zmc2V0ICsgc3JjX2J5dGU7CisgCWlmIChsaXR0bGVfZW5kaWFuKQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi90aWZmXzQuMC42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvdGlmZl80LjAuNi5iYgppbmRleCBlMmUyNGUwLi44MTQ3YmM0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi90aWZmXzQuMC42LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL3RpZmZfNC4wLjYuYmIKQEAgLTEsMTAgKzEsMTUgQEAKIFNVTU1BUlkgPSAiUHJvdmlkZXMgc3VwcG9ydCBmb3IgdGhlIFRhZyBJbWFnZSBGaWxlIEZvcm1hdCAoVElGRikiCiBMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlSSUdIVDttZDU9MzRkYTNkYjQ2ZmFiNzUwMTk5MmY5NjE1ZDdlMTU4Y2YiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnJlbW90ZXNlbnNpbmcub3JnL2xpYnRpZmYvIgogCi1TUkNfVVJJID0gImZ0cDovL2Z0cC5yZW1vdGVzZW5zaW5nLm9yZy9wdWIvbGlidGlmZi90aWZmLSR7UFZ9LnRhci5neiBcCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5vc2dlby5vcmcvbGlidGlmZi90aWZmLSR7UFZ9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9saWJ0b29sMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNS04NjY1Xzg2ODMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTUtODc4MS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNS04Nzg0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTMxODYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTYtNTMyMS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi01MzIzLnBhdGNoIFwKICAgICAgICAgICAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICJkMWQyZTk0MGRlYTBiNWFkNDM1ZjIxZjAzZDk2ZGQ3MiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGcxMjMvbXBnMTIzXzEuMjMuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGcxMjMvbXBnMTIzXzEuMjMuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZWU0NTdkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL21wZzEyMy9tcGcxMjNfMS4yMy42LmJiCkBAIC0wLDAgKzEsNjMgQEAKK1NVTU1BUlkgPSAiQXVkaW8gZGVjb2RlciBmb3IgTVBFRy0xIExheWVyIDEvMi8zIgorREVTQ1JJUFRJT04gPSAiVGhlIGNvcmUgb2YgbXBnMTIzIGlzIGFuIE1QRUctMSBMYXllciAxLzIvMyBkZWNvZGluZyBsaWJyYXJ5LCB3aGljaCBjYW4gYmUgdXNlZCBieSBvdGhlciBwcm9ncmFtcy4gXAorbXBnMTIzIGFsc28gY29tZXMgd2l0aCBhIGNvbW1hbmQtbGluZSB0b29sIHdoaWNoIGNhbiBwbGF5YmFjayB1c2luZyBBTFNBLCBQdWxzZUF1ZGlvLCBPU1MsIGFuZCBzZXZlcmFsIG90aGVyIEFQSXMsIFwKK2FuZCBhbHNvIGNhbiB3cml0ZSB0aGUgZGVjb2RlZCBhdWRpbyB0byBXQVYuIgorSE9NRVBBR0UgPSAiaHR0cDovL21wZzEyMy5kZS8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcC9tcGcxMjMvYnVncy8iCitTRUNUSU9OID0gIm11bHRpbWVkaWEiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xZTg2NzUzNjM4ZDNjZjI1MTI1MjhiOTkwNzliYzRmMyIKKworU1JDX1VSSSA9ICJodHRwczovL3d3dy5tcGcxMjMuZGUvZG93bmxvYWQvJHtCUH0udGFyLmJ6MiIKKworU1JDX1VSSVttZDVzdW1dID0gImVkMjJhM2U2NjRmMDc2ZmEwNTEzMWEzNDU0ZWY4MTY2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQwNzNkOWM2MGE0Mzg3MmY2ZjVhM2EzMjJmNWVhMjFhYjdmMDg2OWQyZWQyNWU3OWMzZWI4NTIxZmEzYzMyZDQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCisjIFRoZSBvcHRpb25zIHNob3VsZCBiZSBtdXR1YWxseSBleGNsdXNpdmUgZm9yIGNvbmZpZ3VyYXRpb24gc2NyaXB0LgorIyBJZiBib3RoIGFsc2EgYW5kIHB1bHNlYXVkaW8gYXJlIHNwZWNpZmllZCAoYXMgaW4gdGhlIGRlZmF1bHQgZGlzdHJvIGZlYXR1cmVzKQorIyBwdWxzZWF1ZGlvIHRha2VzIHByZWNlZGVuY2UuCitQQUNLQUdFQ09ORklHX0FMU0EgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdhbHNhJywgJ2Fsc2EnLCAnJywgZCl9IgorUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncHVsc2VhdWRpbycsICdwdWxzZWF1ZGlvJywgJyR7UEFDS0FHRUNPTkZJR19BTFNBfScsIGQpfSIKKworUEFDS0FHRUNPTkZJR1thbHNhXSA9ICItLXdpdGgtZGVmYXVsdC1hdWRpbz1hbHNhLCxhbHNhLWxpYiIKK1BBQ0tBR0VDT05GSUdbZXNkXSA9ICIsLGVzb3VuZCIKK1BBQ0tBR0VDT05GSUdbamFja10gPSAiLCxqYWNrIgorUEFDS0FHRUNPTkZJR1tvcGVuYWxdID0gIiwsb3BlbmFsLXNvZnQiCitQQUNLQUdFQ09ORklHW3BvcnRhdWRpb10gPSAiLCxwb3J0YXVkaW8tdjE5IgorUEFDS0FHRUNPTkZJR1twdWxzZWF1ZGlvXSA9ICItLXdpdGgtZGVmYXVsdC1hdWRpbz1wdWxzZSwscHVsc2VhdWRpbyIKK1BBQ0tBR0VDT05GSUdbc2RsXSA9ICIsLGxpYnNkbCIKKworIyBGb2xsb3dpbmcgYXJlIHBvc3NpYmxlIHNvdW5kIG91dHB1dCBtb2R1bGVzOgorIyBhbHNhIGFydHMgY29yZWF1ZGlvIGR1bW15IGVzZCBqYWNrIG5hcyBvcGVuYWwgb3MyIG9zcyBwb3J0YXVkaW8gcHVsc2Ugc2RsIHNuZGlvIHN1biB0aW55YWxzYSB3aW4zMiB3aW4zMl93YXNhcGkKK0FVRElPTU9EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYWxzYScsICdhbHNhJywgJycsIGQpfSIKK0FVRElPTU9EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZXNkJywgJ2VzZCcsICcnLCBkKX0iCitBVURJT01PRFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2phY2snLCAnamFjaycsICcnLCBkKX0iCitBVURJT01PRFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ29wZW5hbCcsICdvcGVuYWwnLCAnJywgZCl9IgorQVVESU9NT0RTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwb3J0YXVkaW8nLCAncG9ydGF1ZGlvJywgJycsIGQpfSIKK0FVRElPTU9EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHVsc2VhdWRpbycsICdwdWxzZScsICcnLCBkKX0iCitBVURJT01PRFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NkbCcsICdzZGwnLCAnJywgZCl9IgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLWVuYWJsZS1zaGFyZWQgXAorICAgIC0td2l0aC1hdWRpbz0nJHtBVURJT01PRFN9JyBcCisgICAgLS13aXRoLW1vZHVsZS1zdWZmaXg9LnNvIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICduZW9uJywgJy0td2l0aC1jcHU9bmVvbicsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2FsdGl2ZWMnLCAnLS13aXRoLWNwdT1hbHRpdmVjJywgJycsIGQpfSBcCisiCisKKyMgVGhlIHg4NiBhc3NlbWJsZXIgb3B0aW1pc2F0aW9ucyBjb250YWlucyB0ZXh0IHJlbG9jYXRpb25zIGFuZCB0aGVyZSBhcmUgbm8KKyMgdXBzdHJlYW0gcGxhbnMgdG8gZml4IHRoZW06IGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcC9tcGcxMjMvYnVncy8xNjgvCitJTlNBTkVfU0tJUF8ke1BOfV9hcHBlbmRfeDg2ID0gIiB0ZXh0cmVsIgorCisjIEZhaWxzIHRvIGJ1aWxkIHdpdGggdGh1bWItMSAocWVtdWFybSkKKyN8IHtzdGFuZGFyZCBpbnB1dH06IEFzc2VtYmxlciBtZXNzYWdlczoKKyN8IHtzdGFuZGFyZCBpbnB1dH06NDc6IEVycm9yOiBzZWxlY3RlZCBwcm9jZXNzb3IgZG9lcyBub3Qgc3VwcG9ydCBUaHVtYiBtb2RlIGBzbXVsbCByNSxyNixyNyxyNCcKKyN8IHtzdGFuZGFyZCBpbnB1dH06NDg6IEVycm9yOiBzaGlmdHMgaW4gQ01QL01PViBpbnN0cnVjdGlvbnMgYXJlIG9ubHkgc3VwcG9ydGVkIGluIHVuaWZpZWQgc3ludGF4IC0tIGBtb3YgcjUscjUsbHNyIzI0JworIy4uLgorI3wgbWFrZVszXTogKioqIFtlcXVhbGl6ZXIubG9dIEVycm9yIDEKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8uaW5jCmluZGV4IDBiMDVjZTQuLjdlNTRhZDQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8uaW5jCkBAIC0zLDExICszLDEyIEBACiBBVVRIT1IgPSAiTGVubmFydCBQb2V0dGVyaW5nIgogU0VDVElPTiA9ICJsaWJzL211bHRpbWVkaWEiCiBMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vR1BMO21kNT00MzI1YWZkMzk2ZmViY2I2NTljMzZiNDk1MzMxMzVkNCBcCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kOWFlMDg5YzhkYzUzMzlmOGFjOWQ4NTYzMDM4YTI5ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9HUEw7bWQ1PTQzMjVhZmQzOTZmZWJjYjY1OWMzNmI0OTUzMzEzNWQ0IFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xHUEw7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9wdWxzZWNvcmUvcmVzYW1wbGVyLmg7YmVnaW5saW5lPTQ7ZW5kbGluZT0yMTttZDU9MDk3OTQwMTJhZTE2OTEyYzAyNzBmMzI4MGNjOGZmODQiCiAKLURFUEVORFMgPSAibGliYXRvbWljLW9wcyBsaWJzbmRmaWxlMSBsaWJ0b29sIgorREVQRU5EUyA9ICJsaWJhdG9taWMtb3BzIGxpYnNuZGZpbGUxIGxpYnRvb2wgaW50bHRvb2wtbmF0aXZlIgogIyBvcHRpb25hbAogREVQRU5EUyArPSAidWRldiBhbHNhLWxpYiBnbGliLTIuMCBnY29uZiIKIERFUEVORFMgKz0gImpzb24tYyBnZGJtIHNwZWV4ZHNwIGxpYnhtbC1wYXJzZXItcGVybC1uYXRpdmUgbGliY2FwIgpAQCAtMzAsNiArMzEsNyBAQAogCQktLXdpdGhvdXQtenNoLWNvbXBsZXRpb24tZGlyIFwKIAkJLS13aXRoLXVkZXYtcnVsZXMtZGlyPWBwa2ctY29uZmlnIC0tdmFyaWFibGU9dWRldmRpciB1ZGV2YC9ydWxlcy5kIFwKICAgICAgICAgICAgICAgICBhY19jdl9oZWFkZXJfdmFsZ3JpbmRfbWVtY2hlY2tfaD1ubyBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXRlc3RzIFwKICIKIAogIyBzb3hyICh0aGUgU29YIFJlc2FtcGxlciBsaWJyYXJ5KSBkb2Vzbid0IHNlZW0gdG8gYmUgY3VycmVudGx5IHBhY2thZ2VkIGluCkBAIC00MSw2ICs0Myw3IEBACiAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneDExJywgJycsIGQpfSBcCiAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICczZycsICdvZm9ubycsICcnLCBkKX0gXAogICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICdzeXN0ZW1kJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgJ2lwdjYnLCAnJywgZCl9IFwKICAgICAgICAgICAgICAgICAgICBkYnVzIFwKICAgICAgICAgICAgICAgICAgICAiCiAKQEAgLTU3LDYgKzYwLDggQEAKICMgYWJsZSB0byB1c2UgcHVsc2VhdWRpbyBhdXRvc3Bhd24gZm9yIHJvb3QgYXMgd2VsbC4KIFBBQ0tBR0VDT05GSUdbYXV0b3NwYXduLWZvci1yb290XSA9ICIsLCwiCiBQQUNLQUdFQ09ORklHW2xpcmNdID0gIi0tZW5hYmxlLWxpcmMsLS1kaXNhYmxlLWxpcmMsbGlyYyIKK1BBQ0tBR0VDT05GSUdbd2VicnRjXSA9ICItLWVuYWJsZS13ZWJydGMtYWVjLC0tZGlzYWJsZS13ZWJydGMtYWVjLHdlYnJ0Yy1hdWRpby1wcm9jZXNzaW5nIgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKIAogRVhUUkFfT0VDT05GX2FwcGVuZF9hcm0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibmVvbiIsICIiLCAiIC0tZW5hYmxlLW5lb24tb3B0PW5vIiwgZCl9IgogRVhUUkFfT0VDT05GX2FwcGVuZF9hcm1lYiA9ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJuZW9uIiwgIiIsICIgLS1lbmFibGUtbmVvbi1vcHQ9bm8iLCBkKX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLzAwMDEtUmV2ZXJ0LW1vZHVsZS1zd2l0Y2gtb24tcG9ydC1hdmFpbGFibGUtUm91dGUtdG8tcHJlZi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vMDAwMS1SZXZlcnQtbW9kdWxlLXN3aXRjaC1vbi1wb3J0LWF2YWlsYWJsZS1Sb3V0ZS10by1wcmVmLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzFlMmZiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vMDAwMS1SZXZlcnQtbW9kdWxlLXN3aXRjaC1vbi1wb3J0LWF2YWlsYWJsZS1Sb3V0ZS10by1wcmVmLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjY4ICswLDAgQEAKLUZyb20gYjhiOWIzZGE5NGEwYzI3MDkwY2ViYTI0M2ZkZjU0ZmI1MThjNTQ4OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4KLURhdGU6IE1vbiwgMSBGZWIgMjAxNiAxNTozNDo1OSArMDIwMAotU3ViamVjdDogW1BBVENIXSBSZXZlcnQgIm1vZHVsZS1zd2l0Y2gtb24tcG9ydC1hdmFpbGFibGU6IFJvdXRlIHRvIHByZWZlcnJlZAotIHByb2ZpbGUiCi0KLVRoaXMgcmV2ZXJ0cyBjb21taXQgZTg3MTAwZDQxZWY2ZDE0ZjhkYzdmODAzNTgyMTkxZDlmOGQ4ZjE4My4KLQotVGhlIHJldmVydGVkIGNvbW1pdCBoYWQgc29tZSB1bndhbnRlZCBjb25zZXF1ZW5jZXM6Ci1odHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD05MzkwMwotaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM5NDYKLQotVGhlIGZpcnN0IHJlZ3Jlc3Npb24gaGFzIGEgZml4IGhlcmU6Ci1odHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvcGF0Y2gvNzIwNTMvCi0KLVRoZSBzZWNvbmQgcmVncmVzc2lvbiwgaG93ZXZlciwgZG9lc24ndCBoYXZlIGEgZml4IHlldC4gVGhlcmVmb3JlLAotaXQncyBiZXN0IHRvIHJldmVydCB0aGUgb2ZmZW5kaW5nIHBhdGNoIGZvciBub3cuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbVXBzdHJlYW0gcGxhbnMgdG8gZml4IHRoZSBpc3N1ZXMKLXByb3Blcmx5Ll0KLQotU2lnbmVkLW9mZi1ieTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgotLS0tCi0gc3JjL21vZHVsZXMvbW9kdWxlLXN3aXRjaC1vbi1wb3J0LWF2YWlsYWJsZS5jIHwgMTcyICsrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDY3IGluc2VydGlvbnMoKyksIDEwNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9tb2R1bGVzL21vZHVsZS1zd2l0Y2gtb24tcG9ydC1hdmFpbGFibGUuYyBiL3NyYy9tb2R1bGVzL21vZHVsZS1zd2l0Y2gtb24tcG9ydC1hdmFpbGFibGUuYwotaW5kZXggNWRkOTc4Ni4uOGRlNjhhMyAxMDA2NDQKLS0tLSBhL3NyYy9tb2R1bGVzL21vZHVsZS1zd2l0Y2gtb24tcG9ydC1hdmFpbGFibGUuYwotKysrIGIvc3JjL21vZHVsZXMvbW9kdWxlLXN3aXRjaC1vbi1wb3J0LWF2YWlsYWJsZS5jCi1AQCAtNzQsMjUgKzc0LDIyIEBAIHN0YXRpYyBib29sIHByb2ZpbGVfZ29vZF9mb3JfaW5wdXQocGFfY2FyZF9wcm9maWxlICpwcm9maWxlKSB7Ci0gc3RhdGljIGludCB0cnlfdG9fc3dpdGNoX3Byb2ZpbGUocGFfZGV2aWNlX3BvcnQgKnBvcnQpIHsKLSAgICAgcGFfY2FyZF9wcm9maWxlICpiZXN0X3Byb2ZpbGUgPSBOVUxMLCAqcHJvZmlsZTsKLSAgICAgdm9pZCAqc3RhdGU7Ci0tICAgIHVuc2lnbmVkIGJlc3RfcHJpbyA9IDA7Ci0gCi0tICAgIHBhX2xvZ19kZWJ1ZygiRmluZGluZyBiZXN0IHByb2ZpbGUgZm9yIHBvcnQgJXMsIHByZWZlcnJlZCA9ICVzIiwKLS0gICAgICAgICAgICAgICAgIHBvcnQtPm5hbWUsIHBhX3N0cm51bGwocG9ydC0+cHJlZmVycmVkX3Byb2ZpbGUpKTsKLSsgICAgcGFfbG9nX2RlYnVnKCJGaW5kaW5nIGJlc3QgcHJvZmlsZSIpOwotIAotICAgICBQQV9IQVNITUFQX0ZPUkVBQ0gocHJvZmlsZSwgcG9ydC0+cHJvZmlsZXMsIHN0YXRlKSB7Ci0gICAgICAgICBib29sIGdvb2QgPSBmYWxzZTsKLS0gICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0tICAgICAgICB1bnNpZ25lZCBwcmlvID0gcHJvZmlsZS0+cHJpb3JpdHk7Ci0rCi0rICAgICAgICBpZiAoYmVzdF9wcm9maWxlICYmIGJlc3RfcHJvZmlsZS0+cHJpb3JpdHkgPj0gcHJvZmlsZS0+cHJpb3JpdHkpCi0rICAgICAgICAgICAgY29udGludWU7Ci0gCi0gICAgICAgICAvKiBXZSBtYWtlIGEgYmVzdCBlZmZvcnQgdG8ga2VlcCBvdGhlciBkaXJlY3Rpb24gdW5jaGFuZ2VkICovCi0gICAgICAgICBzd2l0Y2ggKHBvcnQtPmRpcmVjdGlvbikgewotICAgICAgICAgICAgIGNhc2UgUEFfRElSRUNUSU9OX09VVFBVVDoKLS0gICAgICAgICAgICAgICAgbmFtZSA9IHByb2ZpbGUtPm91dHB1dF9uYW1lOwotICAgICAgICAgICAgICAgICBnb29kID0gcHJvZmlsZV9nb29kX2Zvcl9vdXRwdXQocHJvZmlsZSk7Ci0gICAgICAgICAgICAgICAgIGJyZWFrOwotIAotICAgICAgICAgICAgIGNhc2UgUEFfRElSRUNUSU9OX0lOUFVUOgotLSAgICAgICAgICAgICAgICBuYW1lID0gcHJvZmlsZS0+aW5wdXRfbmFtZTsKLSAgICAgICAgICAgICAgICAgZ29vZCA9IHByb2ZpbGVfZ29vZF9mb3JfaW5wdXQocHJvZmlsZSk7Ci0gICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotQEAgLTEwMCwxNSArOTcsNyBAQCBzdGF0aWMgaW50IHRyeV90b19zd2l0Y2hfcHJvZmlsZShwYV9kZXZpY2VfcG9ydCAqcG9ydCkgewotICAgICAgICAgaWYgKCFnb29kKQotICAgICAgICAgICAgIGNvbnRpbnVlOwotIAotLSAgICAgICAgLyogR2l2ZSBhIGhpZ2ggYm9udXMgaW4gY2FzZSB0aGlzIGlzIHRoZSBwcmVmZXJyZWQgcHJvZmlsZSAqLwotLSAgICAgICAgaWYgKHBvcnQtPnByZWZlcnJlZF9wcm9maWxlICYmIHBhX3N0cmVxKG5hbWUgPyBuYW1lIDogcHJvZmlsZS0+bmFtZSwgcG9ydC0+cHJlZmVycmVkX3Byb2ZpbGUpKQotLSAgICAgICAgICAgIHByaW8gKz0gMTAwMDAwMDsKLS0KLS0gICAgICAgIGlmIChiZXN0X3Byb2ZpbGUgJiYgYmVzdF9wcmlvID49IHByaW8pCi0tICAgICAgICAgICAgY29udGludWU7Ci0tCi0gICAgICAgICBiZXN0X3Byb2ZpbGUgPSBwcm9maWxlOwotLSAgICAgICAgYmVzdF9wcmlvID0gcHJpbzsKLSAgICAgfQotIAotICAgICBpZiAoIWJlc3RfcHJvZmlsZSkgewotQEAgLTEyNCwxMjUgKzExMyw5OCBAQCBzdGF0aWMgaW50IHRyeV90b19zd2l0Y2hfcHJvZmlsZShwYV9kZXZpY2VfcG9ydCAqcG9ydCkgewotICAgICByZXR1cm4gMDsKLSB9Ci0gCi0tc3RydWN0IHBvcnRfcG9pbnRlcnMgewotLSAgICBwYV9kZXZpY2VfcG9ydCAqcG9ydDsKLS0gICAgcGFfc2luayAqc2luazsKLS0gICAgcGFfc291cmNlICpzb3VyY2U7Ci0tICAgIGJvb2wgaXNfcG9zc2libGVfcHJvZmlsZV9hY3RpdmU7Ci0tICAgIGJvb2wgaXNfcHJlZmVycmVkX3Byb2ZpbGVfYWN0aXZlOwotLSAgICBib29sIGlzX3BvcnRfYWN0aXZlOwotLX07Ci0tCi0tc3RhdGljIGNvbnN0IGNoYXIqIHByb2ZpbGVfbmFtZV9mb3JfZGlyKHBhX2NhcmRfcHJvZmlsZSAqY3AsIHBhX2RpcmVjdGlvbl90IGRpcikgewotLSAgICBpZiAoZGlyID09IFBBX0RJUkVDVElPTl9PVVRQVVQgJiYgY3AtPm91dHB1dF9uYW1lKQotLSAgICAgICAgcmV0dXJuIGNwLT5vdXRwdXRfbmFtZTsKLS0gICAgaWYgKGRpciA9PSBQQV9ESVJFQ1RJT05fSU5QVVQgJiYgY3AtPmlucHV0X25hbWUpCi0tICAgICAgICByZXR1cm4gY3AtPmlucHV0X25hbWU7Ci0tICAgIHJldHVybiBjcC0+bmFtZTsKLS19Ci0tCi0tc3RhdGljIHN0cnVjdCBwb3J0X3BvaW50ZXJzIGZpbmRfcG9ydF9wb2ludGVycyhwYV9kZXZpY2VfcG9ydCAqcG9ydCkgewotLSAgICBzdHJ1Y3QgcG9ydF9wb2ludGVycyBwcCA9IHsgLnBvcnQgPSBwb3J0IH07Ci0rc3RhdGljIHZvaWQgZmluZF9zaW5rX2FuZF9zb3VyY2UocGFfY2FyZCAqY2FyZCwgcGFfZGV2aWNlX3BvcnQgKnBvcnQsIHBhX3NpbmsgKipzaSwgcGFfc291cmNlICoqc28pIHsKLSsgICAgcGFfc2luayAqc2luayA9IE5VTEw7Ci0rICAgIHBhX3NvdXJjZSAqc291cmNlID0gTlVMTDsKLSAgICAgdWludDMyX3Qgc3RhdGU7Ci0tICAgIHBhX2NhcmQgKmNhcmQ7Ci0tCi0tICAgIHBhX2Fzc2VydChwb3J0KTsKLS0gICAgcGFfYXNzZXJ0X3NlKGNhcmQgPSBwb3J0LT5jYXJkKTsKLSAKLSAgICAgc3dpdGNoIChwb3J0LT5kaXJlY3Rpb24pIHsKLSAgICAgICAgIGNhc2UgUEFfRElSRUNUSU9OX09VVFBVVDoKLS0gICAgICAgICAgICBQQV9JRFhTRVRfRk9SRUFDSChwcC5zaW5rLCBjYXJkLT5zaW5rcywgc3RhdGUpCi0tICAgICAgICAgICAgICAgIGlmIChwb3J0ID09IHBhX2hhc2htYXBfZ2V0KHBwLnNpbmstPnBvcnRzLCBwb3J0LT5uYW1lKSkKLSsgICAgICAgICAgICBQQV9JRFhTRVRfRk9SRUFDSChzaW5rLCBjYXJkLT5zaW5rcywgc3RhdGUpCi0rICAgICAgICAgICAgICAgIGlmIChwb3J0ID09IHBhX2hhc2htYXBfZ2V0KHNpbmstPnBvcnRzLCBwb3J0LT5uYW1lKSkKLSAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgIGJyZWFrOwotIAotICAgICAgICAgY2FzZSBQQV9ESVJFQ1RJT05fSU5QVVQ6Ci0tICAgICAgICAgICAgUEFfSURYU0VUX0ZPUkVBQ0gocHAuc291cmNlLCBjYXJkLT5zb3VyY2VzLCBzdGF0ZSkKLS0gICAgICAgICAgICAgICAgaWYgKHBvcnQgPT0gcGFfaGFzaG1hcF9nZXQocHAuc291cmNlLT5wb3J0cywgcG9ydC0+bmFtZSkpCi0rICAgICAgICAgICAgUEFfSURYU0VUX0ZPUkVBQ0goc291cmNlLCBjYXJkLT5zb3VyY2VzLCBzdGF0ZSkKLSsgICAgICAgICAgICAgICAgaWYgKHBvcnQgPT0gcGFfaGFzaG1hcF9nZXQoc291cmNlLT5wb3J0cywgcG9ydC0+bmFtZSkpCi0gICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICBicmVhazsKLSAgICAgfQotIAotLSAgICBwcC5pc19wb3NzaWJsZV9wcm9maWxlX2FjdGl2ZSA9Ci0tICAgICAgICBjYXJkLT5hY3RpdmVfcHJvZmlsZSA9PSBwYV9oYXNobWFwX2dldChwb3J0LT5wcm9maWxlcywgY2FyZC0+YWN0aXZlX3Byb2ZpbGUtPm5hbWUpOwotLSAgICBwcC5pc19wcmVmZXJyZWRfcHJvZmlsZV9hY3RpdmUgPSBwcC5pc19wb3NzaWJsZV9wcm9maWxlX2FjdGl2ZSAmJiAoIXBvcnQtPnByZWZlcnJlZF9wcm9maWxlIHx8Ci0tICAgICAgICBwYV9zYWZlX3N0cmVxKHBvcnQtPnByZWZlcnJlZF9wcm9maWxlLCBwcm9maWxlX25hbWVfZm9yX2RpcihjYXJkLT5hY3RpdmVfcHJvZmlsZSwgcG9ydC0+ZGlyZWN0aW9uKSkpOwotLSAgICBwcC5pc19wb3J0X2FjdGl2ZSA9IChwcC5zaW5rICYmIHBwLnNpbmstPmFjdGl2ZV9wb3J0ID09IHBvcnQpIHx8IChwcC5zb3VyY2UgJiYgcHAuc291cmNlLT5hY3RpdmVfcG9ydCA9PSBwb3J0KTsKLS0KLS0gICAgcmV0dXJuIHBwOwotKyAgICAqc2kgPSBzaW5rOwotKyAgICAqc28gPSBzb3VyY2U7Ci0gfQotIAotLS8qIFN3aXRjaGVzIHRvIGEgcG9ydCwgc3dpdGNoaW5nIHByb2ZpbGVzIGlmIG5lY2Vzc2FyeSBvciBwcmVmZXJyZWQgKi8KLS1zdGF0aWMgYm9vbCBzd2l0Y2hfdG9fcG9ydChwYV9kZXZpY2VfcG9ydCAqcG9ydCkgewotLSAgICBzdHJ1Y3QgcG9ydF9wb2ludGVycyBwcCA9IGZpbmRfcG9ydF9wb2ludGVycyhwb3J0KTsKLStzdGF0aWMgcGFfaG9va19yZXN1bHRfdCBwb3J0X2F2YWlsYWJsZV9ob29rX2NhbGxiYWNrKHBhX2NvcmUgKmMsIHBhX2RldmljZV9wb3J0ICpwb3J0LCB2b2lkKiB1c2VyZGF0YSkgewotKyAgICBwYV9jYXJkKiBjYXJkOwotKyAgICBwYV9zaW5rICpzaW5rOwotKyAgICBwYV9zb3VyY2UgKnNvdXJjZTsKLSsgICAgYm9vbCBpc19hY3RpdmVfcHJvZmlsZSwgaXNfYWN0aXZlX3BvcnQ7Ci0gCi0tICAgIGlmIChwcC5pc19wb3J0X2FjdGl2ZSkKLS0gICAgICAgIHJldHVybiB0cnVlOyAvKiBBbHJlYWR5IHNlbGVjdGVkICovCi0rICAgIGlmIChwb3J0LT5hdmFpbGFibGUgPT0gUEFfQVZBSUxBQkxFX1VOS05PV04pCi0rICAgICAgICByZXR1cm4gUEFfSE9PS19PSzsKLSAKLS0gICAgcGFfbG9nX2RlYnVnKCJUcnlpbmcgdG8gc3dpdGNoIHRvIHBvcnQgJXMiLCBwb3J0LT5uYW1lKTsKLS0gICAgaWYgKCFwcC5pc19wcmVmZXJyZWRfcHJvZmlsZV9hY3RpdmUpIHsKLS0gICAgICAgIGlmICh0cnlfdG9fc3dpdGNoX3Byb2ZpbGUocG9ydCkgPCAwKSB7Ci0tICAgICAgICAgICAgaWYgKHBwLmlzX3Bvc3NpYmxlX3Byb2ZpbGVfYWN0aXZlKQotLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0tICAgICAgICB9Ci0tICAgICAgICBlbHNlCi0tICAgICAgICAgICAgLyogTm93IHRoYXQgcHJvZmlsZSBoYXMgY2hhbmdlZCwgb3VyIHNpbmsgYW5kIHNvdXJjZSBwb2ludGVycyBtdXN0IGJlIHVwZGF0ZWQgKi8KLS0gICAgICAgICAgICBwcCA9IGZpbmRfcG9ydF9wb2ludGVycyhwb3J0KTsKLS0gICAgfQotKyAgICBjYXJkID0gcG9ydC0+Y2FyZDsKLSAKLS0gICAgaWYgKHBwLnNvdXJjZSkKLS0gICAgICAgIHBhX3NvdXJjZV9zZXRfcG9ydChwcC5zb3VyY2UsIHBvcnQtPm5hbWUsIGZhbHNlKTsKLS0gICAgaWYgKHBwLnNpbmspCi0tICAgICAgICBwYV9zaW5rX3NldF9wb3J0KHBwLnNpbmssIHBvcnQtPm5hbWUsIGZhbHNlKTsKLS0gICAgcmV0dXJuIHRydWU7Ci0tfQotKyAgICBpZiAoIWNhcmQpIHsKLSsgICAgICAgIHBhX2xvZ193YXJuKCJQb3J0ICVzIGRvZXMgbm90IGhhdmUgYSBjYXJkIiwgcG9ydC0+bmFtZSk7Ci0rICAgICAgICByZXR1cm4gUEFfSE9PS19PSzsKLSsgICAgfQotIAotLS8qIFN3aXRjaGVzIGF3YXkgZnJvbSBhIHBvcnQsIHN3aXRjaGluZyBwcm9maWxlcyBpZiBuZWNlc3Nhcnkgb3IgcHJlZmVycmVkICovCi0tc3RhdGljIGJvb2wgc3dpdGNoX2Zyb21fcG9ydChwYV9kZXZpY2VfcG9ydCAqcG9ydCkgewotLSAgICBzdHJ1Y3QgcG9ydF9wb2ludGVycyBwcCA9IGZpbmRfcG9ydF9wb2ludGVycyhwb3J0KTsKLS0gICAgcGFfZGV2aWNlX3BvcnQgKnAsICpiZXN0X3BvcnQgPSBOVUxMOwotLSAgICB2b2lkICpzdGF0ZTsKLSsgICAgaWYgKHBhX2lkeHNldF9zaXplKGNhcmQtPnNpbmtzKSA9PSAwICYmIHBhX2lkeHNldF9zaXplKGNhcmQtPnNvdXJjZXMpID09IDApCi0rICAgICAgICAvKiBUaGlzIGNhcmQgaXMgbm90IGluaXRpYWxpemVkIHlldC4gV2UnbGwgaGFuZGxlIGl0IGluCi0rICAgICAgICAgICBzaW5rX25ldyAvIHNvdXJjZV9uZXcgY2FsbGJhY2tzIGxhdGVyLiAqLwotKyAgICAgICAgcmV0dXJuIFBBX0hPT0tfT0s7Ci0gCi0tICAgIGlmICghcHAuaXNfcG9ydF9hY3RpdmUpCi0tICAgICAgICByZXR1cm4gdHJ1ZTsgLyogQWxyZWFkeSBkZXNlbGVjdGVkICovCi0rICAgIGZpbmRfc2lua19hbmRfc291cmNlKGNhcmQsIHBvcnQsICZzaW5rLCAmc291cmNlKTsKLSAKLS0gICAgLyogVHJ5IHRvIGZpbmQgYSBnb29kIGVub3VnaCBwb3J0IHRvIHN3aXRjaCB0byAqLwotLSAgICBQQV9IQVNITUFQX0ZPUkVBQ0gocCwgcG9ydC0+Y2FyZC0+cG9ydHMsIHN0YXRlKQotLSAgICAgICAgaWYgKHAtPmRpcmVjdGlvbiA9PSBwb3J0LT5kaXJlY3Rpb24gJiYgcCAhPSBwb3J0ICYmIHAtPmF2YWlsYWJsZSAhPSBQQV9BVkFJTEFCTEVfTk8gJiYKLS0gICAgICAgICAgICghYmVzdF9wb3J0IHx8IGJlc3RfcG9ydC0+cHJpb3JpdHkgPCBwLT5wcmlvcml0eSkpCi0tICAgICAgICAgICBiZXN0X3BvcnQgPSBwOwotKyAgICBpc19hY3RpdmVfcHJvZmlsZSA9IGNhcmQtPmFjdGl2ZV9wcm9maWxlID09IHBhX2hhc2htYXBfZ2V0KHBvcnQtPnByb2ZpbGVzLCBjYXJkLT5hY3RpdmVfcHJvZmlsZS0+bmFtZSk7Ci0rICAgIGlzX2FjdGl2ZV9wb3J0ID0gKHNpbmsgJiYgc2luay0+YWN0aXZlX3BvcnQgPT0gcG9ydCkgfHwgKHNvdXJjZSAmJiBzb3VyY2UtPmFjdGl2ZV9wb3J0ID09IHBvcnQpOwotIAotLSAgICBwYV9sb2dfZGVidWcoIlRyeWluZyB0byBzd2l0Y2ggYXdheSBmcm9tIHBvcnQgJXMsIGZvdW5kICVzIiwgcG9ydC0+bmFtZSwgYmVzdF9wb3J0ID8gYmVzdF9wb3J0LT5uYW1lIDogIm5vIGJldHRlciBvcHRpb24iKTsKLSsgICAgaWYgKHBvcnQtPmF2YWlsYWJsZSA9PSBQQV9BVkFJTEFCTEVfTk8gJiYgIWlzX2FjdGl2ZV9wb3J0KQotKyAgICAgICAgcmV0dXJuIFBBX0hPT0tfT0s7Ci0gCi0tICAgIGlmIChiZXN0X3BvcnQpCi0tICAgICAgICByZXR1cm4gc3dpdGNoX3RvX3BvcnQoYmVzdF9wb3J0KTsKLSsgICAgaWYgKHBvcnQtPmF2YWlsYWJsZSA9PSBQQV9BVkFJTEFCTEVfWUVTKSB7Ci0rICAgICAgICBpZiAoaXNfYWN0aXZlX3BvcnQpCi0rICAgICAgICAgICAgcmV0dXJuIFBBX0hPT0tfT0s7Ci0gCi0tICAgIHJldHVybiBmYWxzZTsKLS19Ci0rICAgICAgICBpZiAoIWlzX2FjdGl2ZV9wcm9maWxlKSB7Ci0rICAgICAgICAgICAgaWYgKHRyeV90b19zd2l0Y2hfcHJvZmlsZShwb3J0KSA8IDApCi0rICAgICAgICAgICAgICAgIHJldHVybiBQQV9IT09LX09LOwotIAotKyAgICAgICAgICAgIHBhX2Fzc2VydChjYXJkLT5hY3RpdmVfcHJvZmlsZSA9PSBwYV9oYXNobWFwX2dldChwb3J0LT5wcm9maWxlcywgY2FyZC0+YWN0aXZlX3Byb2ZpbGUtPm5hbWUpKTsKLSAKLS1zdGF0aWMgcGFfaG9va19yZXN1bHRfdCBwb3J0X2F2YWlsYWJsZV9ob29rX2NhbGxiYWNrKHBhX2NvcmUgKmMsIHBhX2RldmljZV9wb3J0ICpwb3J0LCB2b2lkKiB1c2VyZGF0YSkgewotLSAgICBwYV9hc3NlcnQocG9ydCk7Ci0rICAgICAgICAgICAgLyogTm93IHRoYXQgcHJvZmlsZSBoYXMgY2hhbmdlZCwgb3VyIHNpbmsgYW5kIHNvdXJjZSBwb2ludGVycyBtdXN0IGJlIHVwZGF0ZWQgKi8KLSsgICAgICAgICAgICBmaW5kX3NpbmtfYW5kX3NvdXJjZShjYXJkLCBwb3J0LCAmc2luaywgJnNvdXJjZSk7Ci0rICAgICAgICB9Ci0gCi0tICAgIGlmICghcG9ydC0+Y2FyZCkgewotLSAgICAgICAgcGFfbG9nX3dhcm4oIlBvcnQgJXMgZG9lcyBub3QgaGF2ZSBhIGNhcmQiLCBwb3J0LT5uYW1lKTsKLS0gICAgICAgIHJldHVybiBQQV9IT09LX09LOwotKyAgICAgICAgaWYgKHNvdXJjZSkKLSsgICAgICAgICAgICBwYV9zb3VyY2Vfc2V0X3BvcnQoc291cmNlLCBwb3J0LT5uYW1lLCBmYWxzZSk7Ci0rICAgICAgICBpZiAoc2luaykKLSsgICAgICAgICAgICBwYV9zaW5rX3NldF9wb3J0KHNpbmssIHBvcnQtPm5hbWUsIGZhbHNlKTsKLSAgICAgfQotIAotLSAgICBpZiAocGFfaWR4c2V0X3NpemUocG9ydC0+Y2FyZC0+c2lua3MpID09IDAgJiYgcGFfaWR4c2V0X3NpemUocG9ydC0+Y2FyZC0+c291cmNlcykgPT0gMCkKLS0gICAgICAgIC8qIFRoaXMgY2FyZCBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0LiBXZSdsbCBoYW5kbGUgaXQgaW4KLS0gICAgICAgICAgIHNpbmtfbmV3IC8gc291cmNlX25ldyBjYWxsYmFja3MgbGF0ZXIuICovCi0tICAgICAgICByZXR1cm4gUEFfSE9PS19PSzsKLSsgICAgaWYgKHBvcnQtPmF2YWlsYWJsZSA9PSBQQV9BVkFJTEFCTEVfTk8pIHsKLSsgICAgICAgIGlmIChzaW5rKSB7Ci0rICAgICAgICAgICAgcGFfZGV2aWNlX3BvcnQgKnAyID0gcGFfZGV2aWNlX3BvcnRfZmluZF9iZXN0KHNpbmstPnBvcnRzKTsKLSsKLSsgICAgICAgICAgICBpZiAocDIgJiYgcDItPmF2YWlsYWJsZSAhPSBQQV9BVkFJTEFCTEVfTk8pCi0rICAgICAgICAgICAgICAgIHBhX3Npbmtfc2V0X3BvcnQoc2luaywgcDItPm5hbWUsIGZhbHNlKTsKLSsgICAgICAgICAgICBlbHNlIHsKLSsgICAgICAgICAgICAgICAgLyogTWF5YmUgdHJ5IHRvIHN3aXRjaCB0byBhbm90aGVyIHByb2ZpbGU/ICovCi0rICAgICAgICAgICAgfQotKyAgICAgICAgfQotIAotLSAgICBzd2l0Y2ggKHBvcnQtPmF2YWlsYWJsZSkgewotLSAgICBjYXNlIFBBX0FWQUlMQUJMRV9ZRVM6Ci0tICAgICAgICBzd2l0Y2hfdG9fcG9ydChwb3J0KTsKLS0gICAgICAgIGJyZWFrOwotLSAgICBjYXNlIFBBX0FWQUlMQUJMRV9OTzoKLS0gICAgICAgIHN3aXRjaF9mcm9tX3BvcnQocG9ydCk7Ci0tICAgICAgICBicmVhazsKLS0gICAgZGVmYXVsdDoKLS0gICAgICAgIGJyZWFrOwotKyAgICAgICAgaWYgKHNvdXJjZSkgewotKyAgICAgICAgICAgIHBhX2RldmljZV9wb3J0ICpwMiA9IHBhX2RldmljZV9wb3J0X2ZpbmRfYmVzdChzb3VyY2UtPnBvcnRzKTsKLSsKLSsgICAgICAgICAgICBpZiAocDIgJiYgcDItPmF2YWlsYWJsZSAhPSBQQV9BVkFJTEFCTEVfTk8pCi0rICAgICAgICAgICAgICAgIHBhX3NvdXJjZV9zZXRfcG9ydChzb3VyY2UsIHAyLT5uYW1lLCBmYWxzZSk7Ci0rICAgICAgICAgICAgZWxzZSB7Ci0rICAgICAgICAgICAgICAgIC8qIE1heWJlIHRyeSB0byBzd2l0Y2ggdG8gYW5vdGhlciBwcm9maWxlPyAqLwotKyAgICAgICAgICAgIH0KLSsgICAgICAgIH0KLSAgICAgfQotIAotICAgICByZXR1cm4gUEFfSE9PS19PSzsKLS0tIAotMi43LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby8wMDAxLWFsc2EtYmx1ZXRvb3RoLWZhaWwtaWYtdXNlci1yZXF1ZXN0ZWQtcHJvZmlsZS1kb2Vzbi0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLzAwMDEtYWxzYS1ibHVldG9vdGgtZmFpbC1pZi11c2VyLXJlcXVlc3RlZC1wcm9maWxlLWRvZXNuLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjcyY2ViCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby8wMDAxLWFsc2EtYmx1ZXRvb3RoLWZhaWwtaWYtdXNlci1yZXF1ZXN0ZWQtcHJvZmlsZS1kb2Vzbi0ucGF0Y2gKQEAgLTAsMCArMSw2MSBAQAorRnJvbSA5YzNjZGZjZDE5OGVmOTcyN2VhNTQyZjI4NGFjNmQ4YzFiY2Q3YTNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgorRGF0ZTogRnJpLCAyMyBPY3QgMjAxNSAxMjozNjozNCArMDMwMAorU3ViamVjdDogW1BBVENIIDEvNV0gYWxzYSwgYmx1ZXRvb3RoOiBmYWlsIGlmIHVzZXItcmVxdWVzdGVkIHByb2ZpbGUgZG9lc24ndAorIGV4aXN0CisKK0lmIHdlIGNhbid0IGZ1bGZpbGwgdGhlIHVzZXIgcmVxdWVzdCBmdWxseSwgSSB0aGluayB3ZSBzaG91bGRuJ3QKK2Z1bGZpbGwgaXQgYXQgYWxsLCB0byBtYWtlIGl0IGNsZWFyIHRoYXQgdGhlIHJlcXVlc3RlZCBvcGVyYXRpb24KK2RpZG4ndCBzdWNjZWVkLgorCitVcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFtleHBlY3RlZCBpbiAxMC4wXQorCitTaWduZWQtb2ZmLWJ5OiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+CistLS0KKyBzcmMvbW9kdWxlcy9hbHNhL21vZHVsZS1hbHNhLWNhcmQuYyAgICAgICAgICB8IDExICsrKysrKysrKy0tCisgc3JjL21vZHVsZXMvYmx1ZXRvb3RoL21vZHVsZS1ibHVlejQtZGV2aWNlLmMgfCAgNyArKysrKy0tCisgMiBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL21vZHVsZXMvYWxzYS9tb2R1bGUtYWxzYS1jYXJkLmMgYi9zcmMvbW9kdWxlcy9hbHNhL21vZHVsZS1hbHNhLWNhcmQuYworaW5kZXggZTVjYzRhZS4uZDc2MTY4MyAxMDA2NDQKKy0tLSBhL3NyYy9tb2R1bGVzL2Fsc2EvbW9kdWxlLWFsc2EtY2FyZC5jCisrKysgYi9zcmMvbW9kdWxlcy9hbHNhL21vZHVsZS1hbHNhLWNhcmQuYworQEAgLTc5OSw4ICs3OTksMTUgQEAgaW50IHBhX19pbml0KHBhX21vZHVsZSAqbSkgeworICAgICAgICAgZ290byBmYWlsOworICAgICB9CisgCistICAgIGlmICgocHJvZmlsZSA9IHBhX21vZGFyZ3NfZ2V0X3ZhbHVlKHUtPm1vZGFyZ3MsICJwcm9maWxlIiwgTlVMTCkpKQorLSAgICAgICAgcGFfY2FyZF9uZXdfZGF0YV9zZXRfcHJvZmlsZSgmZGF0YSwgcHJvZmlsZSk7CisrICAgIGlmICgocHJvZmlsZSA9IHBhX21vZGFyZ3NfZ2V0X3ZhbHVlKHUtPm1vZGFyZ3MsICJwcm9maWxlIiwgTlVMTCkpKSB7CisrICAgICAgICBpZiAocGFfaGFzaG1hcF9nZXQoZGF0YS5wcm9maWxlcywgcHJvZmlsZSkpCisrICAgICAgICAgICAgcGFfY2FyZF9uZXdfZGF0YV9zZXRfcHJvZmlsZSgmZGF0YSwgcHJvZmlsZSk7CisrICAgICAgICBlbHNlIHsKKysgICAgICAgICAgICBwYV9sb2coIk5vIHN1Y2ggcHJvZmlsZTogJXMiLCBwcm9maWxlKTsKKysgICAgICAgICAgICBwYV9jYXJkX25ld19kYXRhX2RvbmUoJmRhdGEpOworKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKysgICAgICAgIH0KKysgICAgfQorIAorICAgICB1LT5jYXJkID0gcGFfY2FyZF9uZXcobS0+Y29yZSwgJmRhdGEpOworICAgICBwYV9jYXJkX25ld19kYXRhX2RvbmUoJmRhdGEpOworZGlmZiAtLWdpdCBhL3NyYy9tb2R1bGVzL2JsdWV0b290aC9tb2R1bGUtYmx1ZXo0LWRldmljZS5jIGIvc3JjL21vZHVsZXMvYmx1ZXRvb3RoL21vZHVsZS1ibHVlejQtZGV2aWNlLmMKK2luZGV4IDlhOTIxYTUuLmEyZGU1MjUgMTAwNjQ0CistLS0gYS9zcmMvbW9kdWxlcy9ibHVldG9vdGgvbW9kdWxlLWJsdWV6NC1kZXZpY2UuYworKysrIGIvc3JjL21vZHVsZXMvYmx1ZXRvb3RoL21vZHVsZS1ibHVlejQtZGV2aWNlLmMKK0BAIC0yMzAxLDggKzIzMDEsMTEgQEAgc3RhdGljIGludCBhZGRfY2FyZChzdHJ1Y3QgdXNlcmRhdGEgKnUpIHsKKyAgICAgaWYgKChkZWZhdWx0X3Byb2ZpbGUgPSBwYV9tb2RhcmdzX2dldF92YWx1ZSh1LT5tb2RhcmdzLCAicHJvZmlsZSIsIE5VTEwpKSkgeworICAgICAgICAgaWYgKHBhX2hhc2htYXBfZ2V0KGRhdGEucHJvZmlsZXMsIGRlZmF1bHRfcHJvZmlsZSkpCisgICAgICAgICAgICAgcGFfY2FyZF9uZXdfZGF0YV9zZXRfcHJvZmlsZSgmZGF0YSwgZGVmYXVsdF9wcm9maWxlKTsKKy0gICAgICAgIGVsc2UKKy0gICAgICAgICAgICBwYV9sb2dfd2FybigiUHJvZmlsZSAnJXMnIG5vdCB2YWxpZCBvciBub3Qgc3VwcG9ydGVkIGJ5IGRldmljZS4iLCBkZWZhdWx0X3Byb2ZpbGUpOworKyAgICAgICAgZWxzZSB7CisrICAgICAgICAgICAgcGFfbG9nKCJQcm9maWxlICclcycgbm90IHZhbGlkIG9yIG5vdCBzdXBwb3J0ZWQgYnkgZGV2aWNlLiIsIGRlZmF1bHRfcHJvZmlsZSk7CisrICAgICAgICAgICAgcGFfY2FyZF9uZXdfZGF0YV9kb25lKCZkYXRhKTsKKysgICAgICAgICAgICByZXR1cm4gLTE7CisrICAgICAgICB9CisgICAgIH0KKyAKKyAgICAgdS0+Y2FyZCA9IHBhX2NhcmRfbmV3KHUtPmNvcmUsICZkYXRhKTsKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby8wMDAxLWNhcmQtYWRkLXBhX2NhcmRfcHJvZmlsZS5wb3J0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vMDAwMS1jYXJkLWFkZC1wYV9jYXJkX3Byb2ZpbGUucG9ydHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0Yzk1MTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby8wMDAxLWNhcmQtYWRkLXBhX2NhcmRfcHJvZmlsZS5wb3J0cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxOCArMCwwIEBACi1Gcm9tIGQxYzAyOTcxODY3YmVhMTBhZmNhZmM4MmM5NjU0MTQwMTJjNGQ2YmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+Ci1EYXRlOiBGcmksIDIzIE9jdCAyMDE1IDEyOjIzOjEzICswMzAwCi1TdWJqZWN0OiBbUEFUQ0ggMS80XSBjYXJkOiBhZGQgcGFfY2FyZF9wcm9maWxlLnBvcnRzCi0KLUhhdmluZyBwb3J0cyBhY2Nlc3NpYmxlIGZyb20gcGFfY2FyZF9wcm9maWxlIGFsbG93cyBjaGVja2luZyB3aGV0aGVyIGFsbCBwb3J0cwotb2YgYSBwcm9maWxlIGFyZSB1bmF2YWlsYWJsZSwgYW5kIHRoZXJlZm9yZSBoZWxwcyB3aXRoIG1hbmFnaW5nIHRoZSBwcm9maWxlCi1hdmFpbGFiaWxpdHkgKGltcGxlbWVudGVkIGluIGEgbGF0ZXIgcGF0Y2gpLgotCi1odHRwOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ0OAotCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotCi1SZWJhc2VkIG9uIDguMC4KLQotVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQgW1RoZSBwYXRjaCBzZXQgbmVlZHMgc29tZSB3b3JrIHRvIGJlIGFjY2VwdGVkLgotVGhlIHJldmlldyB0aHJlYWQ6Ci1odHRwOi8vdGhyZWFkLmdtYW5lLm9yZy9nbWFuZS5jb21wLmF1ZGlvLnB1bHNlYXVkaW8uZ2VuZXJhbC8yNDMwMV0KLQotU2lnbmVkLW9mZi1ieTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgotLS0tCi0gc3JjL21vZHVsZXMvYWxzYS9hbHNhLW1peGVyLmMgICAgICAgICAgICAgICAgfCAgNCArKystCi0gc3JjL21vZHVsZXMvYWxzYS9hbHNhLXVjbS5jICAgICAgICAgICAgICAgICAgfCAgMSArCi0gc3JjL21vZHVsZXMvYmx1ZXRvb3RoL21vZHVsZS1ibHVlejQtZGV2aWNlLmMgfCAgNiArKysrKysKLSBzcmMvbW9kdWxlcy9ibHVldG9vdGgvbW9kdWxlLWJsdWV6NS1kZXZpY2UuYyB8ICA2ICsrKysrKwotIHNyYy9wdWxzZWNvcmUvY2FyZC5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTUgKysrKysrKysrKysrKysrCi0gc3JjL3B1bHNlY29yZS9jYXJkLmggICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArKysrCi0gc3JjL3B1bHNlY29yZS9kZXZpY2UtcG9ydC5jICAgICAgICAgICAgICAgICAgfCAgNyArKysrKystCi0gNyBmaWxlcyBjaGFuZ2VkLCA0MSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL21vZHVsZXMvYWxzYS9hbHNhLW1peGVyLmMgYi9zcmMvbW9kdWxlcy9hbHNhL2Fsc2EtbWl4ZXIuYwotaW5kZXggMWZlMmEwMi4uNWI3NmIwNiAxMDA2NDQKLS0tLSBhL3NyYy9tb2R1bGVzL2Fsc2EvYWxzYS1taXhlci5jCi0rKysgYi9zcmMvbW9kdWxlcy9hbHNhL2Fsc2EtbWl4ZXIuYwotQEAgLTQ3ODMsOCArNDc4MywxMCBAQCBzdGF0aWMgcGFfZGV2aWNlX3BvcnQqIGRldmljZV9wb3J0X2Fsc2FfaW5pdChwYV9oYXNobWFwICpwb3J0cywgLyogY2FyZCBwb3J0cyAqLwotICAgICAgICAgcGF0aC0+cG9ydCA9IHA7Ci0gICAgIH0KLSAKLS0gICAgaWYgKGNwKQotKyAgICBpZiAoY3ApIHsKLSAgICAgICAgIHBhX2hhc2htYXBfcHV0KHAtPnByb2ZpbGVzLCBjcC0+bmFtZSwgY3ApOwotKyAgICAgICAgcGFfY2FyZF9wcm9maWxlX2FkZF9wb3J0KGNwLCBwKTsKLSsgICAgfQotIAotICAgICBpZiAoZXh0cmEpIHsKLSAgICAgICAgIHBhX2hhc2htYXBfcHV0KGV4dHJhLCBwLT5uYW1lLCBwKTsKLWRpZmYgLS1naXQgYS9zcmMvbW9kdWxlcy9hbHNhL2Fsc2EtdWNtLmMgYi9zcmMvbW9kdWxlcy9hbHNhL2Fsc2EtdWNtLmMKLWluZGV4IDQyZjMyNDIuLjY4ZmNjMjYgMTAwNjQ0Ci0tLS0gYS9zcmMvbW9kdWxlcy9hbHNhL2Fsc2EtdWNtLmMKLSsrKyBiL3NyYy9tb2R1bGVzL2Fsc2EvYWxzYS11Y20uYwotQEAgLTc5MSw2ICs3OTEsNyBAQCBzdGF0aWMgdm9pZCB1Y21fYWRkX3BvcnRfY29tYmluYXRpb24oCi0gICAgIGlmIChjcCkgewotICAgICAgICAgcGFfbG9nX2RlYnVnKCJBZGRpbmcgcHJvZmlsZSAlcyB0byBwb3J0ICVzLiIsIGNwLT5uYW1lLCBwb3J0LT5uYW1lKTsKLSAgICAgICAgIHBhX2hhc2htYXBfcHV0KHBvcnQtPnByb2ZpbGVzLCBjcC0+bmFtZSwgY3ApOwotKyAgICAgICAgcGFfY2FyZF9wcm9maWxlX2FkZF9wb3J0KGNwLCBwb3J0KTsKLSAgICAgfQotIAotICAgICBpZiAoaGFzaCkgewotZGlmZiAtLWdpdCBhL3NyYy9tb2R1bGVzL2JsdWV0b290aC9tb2R1bGUtYmx1ZXo0LWRldmljZS5jIGIvc3JjL21vZHVsZXMvYmx1ZXRvb3RoL21vZHVsZS1ibHVlejQtZGV2aWNlLmMKLWluZGV4IDlhOTIxYTUuLmFkZWNiMzIgMTAwNjQ0Ci0tLS0gYS9zcmMvbW9kdWxlcy9ibHVldG9vdGgvbW9kdWxlLWJsdWV6NC1kZXZpY2UuYwotKysrIGIvc3JjL21vZHVsZXMvYmx1ZXRvb3RoL21vZHVsZS1ibHVlejQtZGV2aWNlLmMKLUBAIC0yMTgwLDYgKzIxODAsNyBAQCBzdGF0aWMgcGFfY2FyZF9wcm9maWxlICpjcmVhdGVfY2FyZF9wcm9maWxlKHN0cnVjdCB1c2VyZGF0YSAqdSwgY29uc3QgY2hhciAqdXVpZAotICAgICAgICAgcC0+bWF4X3NpbmtfY2hhbm5lbHMgPSAyOwotICAgICAgICAgcC0+bWF4X3NvdXJjZV9jaGFubmVscyA9IDA7Ci0gICAgICAgICBwYV9oYXNobWFwX3B1dChvdXRwdXRfcG9ydC0+cHJvZmlsZXMsIHAtPm5hbWUsIHApOwotKyAgICAgICAgcGFfY2FyZF9wcm9maWxlX2FkZF9wb3J0KHAsIG91dHB1dF9wb3J0KTsKLSAKLSAgICAgICAgIGQgPSBQQV9DQVJEX1BST0ZJTEVfREFUQShwKTsKLSAgICAgICAgICpkID0gUEFfQkxVRVo0X1BST0ZJTEVfQTJEUDsKLUBAIC0yMTkxLDYgKzIxOTIsNyBAQCBzdGF0aWMgcGFfY2FyZF9wcm9maWxlICpjcmVhdGVfY2FyZF9wcm9maWxlKHN0cnVjdCB1c2VyZGF0YSAqdSwgY29uc3QgY2hhciAqdXVpZAotICAgICAgICAgcC0+bWF4X3NpbmtfY2hhbm5lbHMgPSAwOwotICAgICAgICAgcC0+bWF4X3NvdXJjZV9jaGFubmVscyA9IDI7Ci0gICAgICAgICBwYV9oYXNobWFwX3B1dChpbnB1dF9wb3J0LT5wcm9maWxlcywgcC0+bmFtZSwgcCk7Ci0rICAgICAgICBwYV9jYXJkX3Byb2ZpbGVfYWRkX3BvcnQocCwgaW5wdXRfcG9ydCk7Ci0gCi0gICAgICAgICBkID0gUEFfQ0FSRF9QUk9GSUxFX0RBVEEocCk7Ci0gICAgICAgICAqZCA9IFBBX0JMVUVaNF9QUk9GSUxFX0EyRFBfU09VUkNFOwotQEAgLTIyMDMsNiArMjIwNSw4IEBAIHN0YXRpYyBwYV9jYXJkX3Byb2ZpbGUgKmNyZWF0ZV9jYXJkX3Byb2ZpbGUoc3RydWN0IHVzZXJkYXRhICp1LCBjb25zdCBjaGFyICp1dWlkCi0gICAgICAgICBwLT5tYXhfc291cmNlX2NoYW5uZWxzID0gMTsKLSAgICAgICAgIHBhX2hhc2htYXBfcHV0KGlucHV0X3BvcnQtPnByb2ZpbGVzLCBwLT5uYW1lLCBwKTsKLSAgICAgICAgIHBhX2hhc2htYXBfcHV0KG91dHB1dF9wb3J0LT5wcm9maWxlcywgcC0+bmFtZSwgcCk7Ci0rICAgICAgICBwYV9jYXJkX3Byb2ZpbGVfYWRkX3BvcnQocCwgaW5wdXRfcG9ydCk7Ci0rICAgICAgICBwYV9jYXJkX3Byb2ZpbGVfYWRkX3BvcnQocCwgb3V0cHV0X3BvcnQpOwotIAotICAgICAgICAgZCA9IFBBX0NBUkRfUFJPRklMRV9EQVRBKHApOwotICAgICAgICAgKmQgPSBQQV9CTFVFWjRfUFJPRklMRV9IU1A7Ci1AQCAtMjIxNSw2ICsyMjE5LDggQEAgc3RhdGljIHBhX2NhcmRfcHJvZmlsZSAqY3JlYXRlX2NhcmRfcHJvZmlsZShzdHJ1Y3QgdXNlcmRhdGEgKnUsIGNvbnN0IGNoYXIgKnV1aWQKLSAgICAgICAgIHAtPm1heF9zb3VyY2VfY2hhbm5lbHMgPSAxOwotICAgICAgICAgcGFfaGFzaG1hcF9wdXQoaW5wdXRfcG9ydC0+cHJvZmlsZXMsIHAtPm5hbWUsIHApOwotICAgICAgICAgcGFfaGFzaG1hcF9wdXQob3V0cHV0X3BvcnQtPnByb2ZpbGVzLCBwLT5uYW1lLCBwKTsKLSsgICAgICAgIHBhX2NhcmRfcHJvZmlsZV9hZGRfcG9ydChwLCBpbnB1dF9wb3J0KTsKLSsgICAgICAgIHBhX2NhcmRfcHJvZmlsZV9hZGRfcG9ydChwLCBvdXRwdXRfcG9ydCk7Ci0gCi0gICAgICAgICBkID0gUEFfQ0FSRF9QUk9GSUxFX0RBVEEocCk7Ci0gICAgICAgICAqZCA9IFBBX0JMVUVaNF9QUk9GSUxFX0hGR1c7Ci1kaWZmIC0tZ2l0IGEvc3JjL21vZHVsZXMvYmx1ZXRvb3RoL21vZHVsZS1ibHVlejUtZGV2aWNlLmMgYi9zcmMvbW9kdWxlcy9ibHVldG9vdGgvbW9kdWxlLWJsdWV6NS1kZXZpY2UuYwotaW5kZXggODRlNmQ1NS4uYjAxNWM2NyAxMDA2NDQKLS0tLSBhL3NyYy9tb2R1bGVzL2JsdWV0b290aC9tb2R1bGUtYmx1ZXo1LWRldmljZS5jCi0rKysgYi9zcmMvbW9kdWxlcy9ibHVldG9vdGgvbW9kdWxlLWJsdWV6NS1kZXZpY2UuYwotQEAgLTE3OTAsNiArMTc5MCw3IEBAIHN0YXRpYyBwYV9jYXJkX3Byb2ZpbGUgKmNyZWF0ZV9jYXJkX3Byb2ZpbGUoc3RydWN0IHVzZXJkYXRhICp1LCBjb25zdCBjaGFyICp1dWlkCi0gICAgICAgICBjcC0+bWF4X3NpbmtfY2hhbm5lbHMgPSAyOwotICAgICAgICAgY3AtPm1heF9zb3VyY2VfY2hhbm5lbHMgPSAwOwotICAgICAgICAgcGFfaGFzaG1hcF9wdXQob3V0cHV0X3BvcnQtPnByb2ZpbGVzLCBjcC0+bmFtZSwgY3ApOwotKyAgICAgICAgcGFfY2FyZF9wcm9maWxlX2FkZF9wb3J0KGNwLCBvdXRwdXRfcG9ydCk7Ci0gCi0gICAgICAgICBwID0gUEFfQ0FSRF9QUk9GSUxFX0RBVEEoY3ApOwotICAgICAgICAgKnAgPSBQQV9CTFVFVE9PVEhfUFJPRklMRV9BMkRQX1NJTks7Ci1AQCAtMTgwMSw2ICsxODAyLDcgQEAgc3RhdGljIHBhX2NhcmRfcHJvZmlsZSAqY3JlYXRlX2NhcmRfcHJvZmlsZShzdHJ1Y3QgdXNlcmRhdGEgKnUsIGNvbnN0IGNoYXIgKnV1aWQKLSAgICAgICAgIGNwLT5tYXhfc2lua19jaGFubmVscyA9IDA7Ci0gICAgICAgICBjcC0+bWF4X3NvdXJjZV9jaGFubmVscyA9IDI7Ci0gICAgICAgICBwYV9oYXNobWFwX3B1dChpbnB1dF9wb3J0LT5wcm9maWxlcywgY3AtPm5hbWUsIGNwKTsKLSsgICAgICAgIHBhX2NhcmRfcHJvZmlsZV9hZGRfcG9ydChjcCwgaW5wdXRfcG9ydCk7Ci0gCi0gICAgICAgICBwID0gUEFfQ0FSRF9QUk9GSUxFX0RBVEEoY3ApOwotICAgICAgICAgKnAgPSBQQV9CTFVFVE9PVEhfUFJPRklMRV9BMkRQX1NPVVJDRTsKLUBAIC0xODEzLDYgKzE4MTUsOCBAQCBzdGF0aWMgcGFfY2FyZF9wcm9maWxlICpjcmVhdGVfY2FyZF9wcm9maWxlKHN0cnVjdCB1c2VyZGF0YSAqdSwgY29uc3QgY2hhciAqdXVpZAotICAgICAgICAgY3AtPm1heF9zb3VyY2VfY2hhbm5lbHMgPSAxOwotICAgICAgICAgcGFfaGFzaG1hcF9wdXQoaW5wdXRfcG9ydC0+cHJvZmlsZXMsIGNwLT5uYW1lLCBjcCk7Ci0gICAgICAgICBwYV9oYXNobWFwX3B1dChvdXRwdXRfcG9ydC0+cHJvZmlsZXMsIGNwLT5uYW1lLCBjcCk7Ci0rICAgICAgICBwYV9jYXJkX3Byb2ZpbGVfYWRkX3BvcnQoY3AsIGlucHV0X3BvcnQpOwotKyAgICAgICAgcGFfY2FyZF9wcm9maWxlX2FkZF9wb3J0KGNwLCBvdXRwdXRfcG9ydCk7Ci0gCi0gICAgICAgICBwID0gUEFfQ0FSRF9QUk9GSUxFX0RBVEEoY3ApOwotICAgICAgICAgKnAgPSBQQV9CTFVFVE9PVEhfUFJPRklMRV9IRUFEU0VUX0hFQURfVU5JVDsKLUBAIC0xODI1LDYgKzE4MjksOCBAQCBzdGF0aWMgcGFfY2FyZF9wcm9maWxlICpjcmVhdGVfY2FyZF9wcm9maWxlKHN0cnVjdCB1c2VyZGF0YSAqdSwgY29uc3QgY2hhciAqdXVpZAotICAgICAgICAgY3AtPm1heF9zb3VyY2VfY2hhbm5lbHMgPSAxOwotICAgICAgICAgcGFfaGFzaG1hcF9wdXQoaW5wdXRfcG9ydC0+cHJvZmlsZXMsIGNwLT5uYW1lLCBjcCk7Ci0gICAgICAgICBwYV9oYXNobWFwX3B1dChvdXRwdXRfcG9ydC0+cHJvZmlsZXMsIGNwLT5uYW1lLCBjcCk7Ci0rICAgICAgICBwYV9jYXJkX3Byb2ZpbGVfYWRkX3BvcnQoY3AsIGlucHV0X3BvcnQpOwotKyAgICAgICAgcGFfY2FyZF9wcm9maWxlX2FkZF9wb3J0KGNwLCBvdXRwdXRfcG9ydCk7Ci0gCi0gICAgICAgICBwID0gUEFfQ0FSRF9QUk9GSUxFX0RBVEEoY3ApOwotICAgICAgICAgKnAgPSBQQV9CTFVFVE9PVEhfUFJPRklMRV9IRUFEU0VUX0FVRElPX0dBVEVXQVk7Ci1kaWZmIC0tZ2l0IGEvc3JjL3B1bHNlY29yZS9jYXJkLmMgYi9zcmMvcHVsc2Vjb3JlL2NhcmQuYwotaW5kZXggYjZjYmJmNy4uZjkyYWM4NyAxMDA2NDQKLS0tLSBhL3NyYy9wdWxzZWNvcmUvY2FyZC5jCi0rKysgYi9zcmMvcHVsc2Vjb3JlL2NhcmQuYwotQEAgLTQ1LDYgKzQ1LDcgQEAgcGFfY2FyZF9wcm9maWxlICpwYV9jYXJkX3Byb2ZpbGVfbmV3KGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uLAotICAgICBjLT5uYW1lID0gcGFfeHN0cmR1cChuYW1lKTsKLSAgICAgYy0+ZGVzY3JpcHRpb24gPSBwYV94c3RyZHVwKGRlc2NyaXB0aW9uKTsKLSAgICAgYy0+YXZhaWxhYmxlID0gUEFfQVZBSUxBQkxFX1VOS05PV047Ci0rICAgIGMtPnBvcnRzID0gcGFfaGFzaG1hcF9uZXcocGFfaWR4c2V0X3N0cmluZ19oYXNoX2Z1bmMsIHBhX2lkeHNldF9zdHJpbmdfY29tcGFyZV9mdW5jKTsKLSAKLSAgICAgcmV0dXJuIGM7Ci0gfQotQEAgLTUyLDYgKzUzLDE0IEBAIHBhX2NhcmRfcHJvZmlsZSAqcGFfY2FyZF9wcm9maWxlX25ldyhjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpkZXNjcmlwdGlvbiwKLSB2b2lkIHBhX2NhcmRfcHJvZmlsZV9mcmVlKHBhX2NhcmRfcHJvZmlsZSAqYykgewotICAgICBwYV9hc3NlcnQoYyk7Ci0gCi0rICAgIGlmIChjLT5wb3J0cykgewotKyAgICAgICAgcGFfZGV2aWNlX3BvcnQgKnBvcnQ7Ci0rICAgICAgICB2b2lkICpzdGF0ZTsKLSsgICAgICAgIFBBX0hBU0hNQVBfRk9SRUFDSChwb3J0LCBjLT5wb3J0cywgc3RhdGUpCi0rICAgICAgICAgICAgcGFfaGFzaG1hcF9yZW1vdmUgKHBvcnQtPnByb2ZpbGVzLCBjLT5uYW1lKTsKLSsgICAgICAgIHBhX2hhc2htYXBfZnJlZShjLT5wb3J0cyk7Ci0rICAgIH0KLSsKLSAgICAgcGFfeGZyZWUoYy0+aW5wdXRfbmFtZSk7Ci0gICAgIHBhX3hmcmVlKGMtPm91dHB1dF9uYW1lKTsKLSAgICAgcGFfeGZyZWUoYy0+bmFtZSk7Ci1AQCAtNTksNiArNjgsMTIgQEAgdm9pZCBwYV9jYXJkX3Byb2ZpbGVfZnJlZShwYV9jYXJkX3Byb2ZpbGUgKmMpIHsKLSAgICAgcGFfeGZyZWUoYyk7Ci0gfQotIAotK3ZvaWQgcGFfY2FyZF9wcm9maWxlX2FkZF9wb3J0KHBhX2NhcmRfcHJvZmlsZSAqcHJvZmlsZSwgcGFfZGV2aWNlX3BvcnQgKnBvcnQpIHsKLSsgICAgcGFfYXNzZXJ0KHByb2ZpbGUpOwotKwotKyAgICBwYV9oYXNobWFwX3B1dChwcm9maWxlLT5wb3J0cywgcG9ydC0+bmFtZSwgcG9ydCk7Ci0rfQotKwotIHZvaWQgcGFfY2FyZF9wcm9maWxlX3NldF9hdmFpbGFibGUocGFfY2FyZF9wcm9maWxlICpjLCBwYV9hdmFpbGFibGVfdCBhdmFpbGFibGUpIHsKLSAgICAgcGFfY29yZSAqY29yZTsKLSAKLWRpZmYgLS1naXQgYS9zcmMvcHVsc2Vjb3JlL2NhcmQuaCBiL3NyYy9wdWxzZWNvcmUvY2FyZC5oCi1pbmRleCAzMGJmYzBlLi5mZmY5MDU3IDEwMDY0NAotLS0tIGEvc3JjL3B1bHNlY29yZS9jYXJkLmgKLSsrKyBiL3NyYy9wdWxzZWNvcmUvY2FyZC5oCi1AQCAtNTAsNiArNTAsOCBAQCBzdHJ1Y3QgcGFfY2FyZF9wcm9maWxlIHsKLSAgICAgdW5zaWduZWQgcHJpb3JpdHk7Ci0gICAgIHBhX2F2YWlsYWJsZV90IGF2YWlsYWJsZTsgLyogUEFfQVZBSUxBQkxFX1VOS05PV04sIFBBX0FWQUlMQUJMRV9OTyBvciBQQV9BVkFJTEFCTEVfWUVTICovCi0gCi0rICAgIHBhX2hhc2htYXAgKnBvcnRzOyAvKiBwb3J0IG5hbWUgLT4gcGFfZGV2aWNlX3BvcnQgKi8KLSsKLSAgICAgLyogV2UgcHJvYmFibHkgd2FudCB0byBoYXZlIGRpZmZlcmVudCBwcm9wZXJ0aWVzIGxhdGVyIG9uIGhlcmUgKi8KLSAgICAgdW5zaWduZWQgbl9zaW5rczsKLSAgICAgdW5zaWduZWQgbl9zb3VyY2VzOwotQEAgLTEwNyw2ICsxMDksOCBAQCB0eXBlZGVmIHN0cnVjdCBwYV9jYXJkX25ld19kYXRhIHsKLSBwYV9jYXJkX3Byb2ZpbGUgKnBhX2NhcmRfcHJvZmlsZV9uZXcoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqZGVzY3JpcHRpb24sIHNpemVfdCBleHRyYSk7Ci0gdm9pZCBwYV9jYXJkX3Byb2ZpbGVfZnJlZShwYV9jYXJkX3Byb2ZpbGUgKmMpOwotIAotK3ZvaWQgcGFfY2FyZF9wcm9maWxlX2FkZF9wb3J0KHBhX2NhcmRfcHJvZmlsZSAqcHJvZmlsZSwgcGFfZGV2aWNlX3BvcnQgKnBvcnQpOwotKwotIC8qIFRoZSBwcm9maWxlJ3MgYXZhaWxhYmxlIHN0YXR1cyBoYXMgY2hhbmdlZCAqLwotIHZvaWQgcGFfY2FyZF9wcm9maWxlX3NldF9hdmFpbGFibGUocGFfY2FyZF9wcm9maWxlICpjLCBwYV9hdmFpbGFibGVfdCBhdmFpbGFibGUpOwotIAotZGlmZiAtLWdpdCBhL3NyYy9wdWxzZWNvcmUvZGV2aWNlLXBvcnQuYyBiL3NyYy9wdWxzZWNvcmUvZGV2aWNlLXBvcnQuYwotaW5kZXggNTgwN2QzZS4uZDEyZGZiYyAxMDA2NDQKLS0tLSBhL3NyYy9wdWxzZWNvcmUvZGV2aWNlLXBvcnQuYwotKysrIGIvc3JjL3B1bHNlY29yZS9kZXZpY2UtcG9ydC5jCi1AQCAtMTA3LDggKzEwNywxMyBAQCBzdGF0aWMgdm9pZCBkZXZpY2VfcG9ydF9mcmVlKHBhX29iamVjdCAqbykgewotICAgICBpZiAocC0+cHJvcGxpc3QpCi0gICAgICAgICBwYV9wcm9wbGlzdF9mcmVlKHAtPnByb3BsaXN0KTsKLSAKLS0gICAgaWYgKHAtPnByb2ZpbGVzKQotKyAgICBpZiAocC0+cHJvZmlsZXMpIHsKLSsgICAgICAgIHBhX2NhcmRfcHJvZmlsZSAqcHJvZmlsZTsKLSsgICAgICAgIHZvaWQgKnN0YXRlOwotKyAgICAgICAgUEFfSEFTSE1BUF9GT1JFQUNIKHByb2ZpbGUsIHAtPnByb2ZpbGVzLCBzdGF0ZSkKLSsgICAgICAgICAgICBwYV9oYXNobWFwX3JlbW92ZSAocHJvZmlsZS0+cG9ydHMsIHAtPm5hbWUpOwotICAgICAgICAgcGFfaGFzaG1hcF9mcmVlKHAtPnByb2ZpbGVzKTsKLSsgICAgfQotIAotICAgICBwYV94ZnJlZShwLT5wcmVmZXJyZWRfcHJvZmlsZSk7Ci0gICAgIHBhX3hmcmVlKHAtPm5hbWUpOwotLS0gCi0yLjcuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLzAwMDEtY2xpZW50LWNvbmYtQWRkLWFsbG93LWF1dG9zcGF3bi1mb3Itcm9vdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vMDAwMS1jbGllbnQtY29uZi1BZGQtYWxsb3ctYXV0b3NwYXduLWZvci1yb290LnBhdGNoCmluZGV4IGJjMzI3NzUuLjMzZjc3MDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vMDAwMS1jbGllbnQtY29uZi1BZGQtYWxsb3ctYXV0b3NwYXduLWZvci1yb290LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vMDAwMS1jbGllbnQtY29uZi1BZGQtYWxsb3ctYXV0b3NwYXduLWZvci1yb290LnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAxY2I1NjQ3Zjc2ZGM4Y2Q3YmFjYmNlMmE2NGZhYzllNmMyZGMzYjE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBiYWJlYzNhNTBkZDcxMGQyNmI3MmY2YzZkNDNiZDc5YjA0ZTk1NGE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogVGFudSBLYXNraW5lbiA8dGFudS5rYXNraW5lbkBsaW51eC5pbnRlbC5jb20+CiBEYXRlOiBUdWUsIDI4IEFwciAyMDE1IDE0OjMyOjQzICswMzAwCiBTdWJqZWN0OiBbUEFUQ0hdIGNsaWVudC1jb25mOiBBZGQgYWxsb3ctYXV0b3NwYXduLWZvci1yb290CkBAIC0yNCwxMCArMjQsMTAgQEAKICA1IGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL21hbi9wdWxzZS1jbGllbnQuY29uZi41LnhtbC5pbiBiL21hbi9wdWxzZS1jbGllbnQuY29uZi41LnhtbC5pbgotaW5kZXggMTAwMmRiZS4uMDA1ODQ5MCAxMDA2NDQKK2luZGV4IGI4ODg5OGMuLmU3MzdjOTYgMTAwNjQ0CiAtLS0gYS9tYW4vcHVsc2UtY2xpZW50LmNvbmYuNS54bWwuaW4KICsrKyBiL21hbi9wdWxzZS1jbGllbnQuY29uZi41LnhtbC5pbgotQEAgLTcxLDYgKzcxLDE1IEBAIExpY2Vuc2UgYWxvbmcgd2l0aCBQdWxzZUF1ZGlvOyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCitAQCAtODIsNiArODIsMTUgQEAgTGljZW5zZSBhbG9uZyB3aXRoIFB1bHNlQXVkaW87IGlmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KICAgICAgPC9vcHRpb24+CiAgCiAgICAgIDxvcHRpb24+CkBAIC00NCw3ICs0NCw3IEBACiAgICAgICAgcnVuIHdoZW4gYXV0b3NwYXduaW5nLiBEZWZhdWx0cyB0byBhIHBhdGggY29uZmlndXJlZCBhdCBjb21waWxlCiAgICAgICAgdGltZS48L3A+CiBkaWZmIC0tZ2l0IGEvc3JjL3B1bHNlL2NsaWVudC1jb25mLmMgYi9zcmMvcHVsc2UvY2xpZW50LWNvbmYuYwotaW5kZXggODMzMzFmOC4uMDQ3NDU4MyAxMDA2NDQKK2luZGV4IGEzYzk0ODYuLjlmNjhlZTUgMTAwNjQ0CiAtLS0gYS9zcmMvcHVsc2UvY2xpZW50LWNvbmYuYwogKysrIGIvc3JjL3B1bHNlL2NsaWVudC1jb25mLmMKIEBAIC0xMzgsNiArMTM4LDcgQEAgdm9pZCBwYV9jbGllbnRfY29uZl9sb2FkKHBhX2NsaWVudF9jb25mICpjLCBib29sIGxvYWRfZnJvbV94MTEsIGJvb2wgbG9hZF9mcm9tX2UKQEAgLTU2LDEzICs1NiwxMyBAQAogICAgICAgICAgeyAiZGlzYWJsZS1zaG0iLCAgICAgICAgICAgIHBhX2NvbmZpZ19wYXJzZV9ib29sLCAgICAgJmMtPmRpc2FibGVfc2htLCBOVUxMIH0sCiAgICAgICAgICB7ICJlbmFibGUtc2htIiwgICAgICAgICAgICAgcGFfY29uZmlnX3BhcnNlX25vdF9ib29sLCAmYy0+ZGlzYWJsZV9zaG0sIE5VTEwgfSwKIGRpZmYgLS1naXQgYS9zcmMvcHVsc2UvY2xpZW50LWNvbmYuaCBiL3NyYy9wdWxzZS9jbGllbnQtY29uZi5oCi1pbmRleCBlYWM3MDVhLi4xMzEzOTNhIDEwMDY0NAoraW5kZXggNzY5MWVjNy4uMTlkYjdlZCAxMDA2NDQKIC0tLSBhL3NyYy9wdWxzZS9jbGllbnQtY29uZi5oCiArKysgYi9zcmMvcHVsc2UvY2xpZW50LWNvbmYuaAogQEAgLTM4LDYgKzM4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgcGFfY2xpZW50X2NvbmYgewogICAgICBjaGFyICpjb29raWVfZmlsZV9mcm9tX2FwcGxpY2F0aW9uOwogICAgICBjaGFyICpjb29raWVfZmlsZV9mcm9tX2NsaWVudF9jb25mOwotICAgICBib29sIGF1dG9zcGF3biwgZGlzYWJsZV9zaG0sIGF1dG9fY29ubmVjdF9sb2NhbGhvc3QsIGF1dG9fY29ubmVjdF9kaXNwbGF5OworICAgICBib29sIGF1dG9zcGF3biwgZGlzYWJsZV9zaG0sIGRpc2FibGVfbWVtZmQsIGF1dG9fY29ubmVjdF9sb2NhbGhvc3QsIGF1dG9fY29ubmVjdF9kaXNwbGF5OwogKyAgICBib29sIGFsbG93X2F1dG9zcGF3bl9mb3Jfcm9vdDsKICAgICAgc2l6ZV90IHNobV9zaXplOwogIH0gcGFfY2xpZW50X2NvbmY7CkBAIC04MCwxMCArODAsMTAgQEAKICA7IGV4dHJhLWFyZ3VtZW50cyA9IC0tbG9nLXRhcmdldD1zeXNsb2cKICAKIGRpZmYgLS1naXQgYS9zcmMvcHVsc2UvY29udGV4dC5jIGIvc3JjL3B1bHNlL2NvbnRleHQuYwotaW5kZXggNGJjNDQ1Zi4uZDZjM2Y2ZCAxMDA2NDQKK2luZGV4IDY5YmU1ZjQuLmQ2ZTEzZTggMTAwNjQ0CiAtLS0gYS9zcmMvcHVsc2UvY29udGV4dC5jCiArKysgYi9zcmMvcHVsc2UvY29udGV4dC5jCi1AQCAtOTc2LDcgKzk3Niw3IEBAIGludCBwYV9jb250ZXh0X2Nvbm5lY3QoCitAQCAtMTAyNyw3ICsxMDI3LDcgQEAgaW50IHBhX2NvbnRleHRfY29ubmVjdCgKICAgICAgaWYgKCEoZmxhZ3MgJiBQQV9DT05URVhUX05PQVVUT1NQQVdOKSAmJiBjLT5jb25mLT5hdXRvc3Bhd24pIHsKICAKICAjaWZkZWYgSEFWRV9HRVRVSUQKQEAgLTkzLDUgKzkzLDUgQEAKICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIGMtPmRvX2F1dG9zcGF3biA9IHRydWU7CiAtLSAKLTEuOS4zCisyLjguMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLzAwMDItYWxzYS1ibHVldG9vdGgtZmFpbC1pZi11c2VyLXJlcXVlc3RlZC1wcm9maWxlLWRvZXNuLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vMDAwMi1hbHNhLWJsdWV0b290aC1mYWlsLWlmLXVzZXItcmVxdWVzdGVkLXByb2ZpbGUtZG9lc24tLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTM2NTViLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vMDAwMi1hbHNhLWJsdWV0b290aC1mYWlsLWlmLXVzZXItcmVxdWVzdGVkLXByb2ZpbGUtZG9lc24tLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotRnJvbSAzMzllYjE3OWJhYTc4MTAxMTNmNjQ1NmFjY2MwNWIzYTMyYzFjZGJhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgotRGF0ZTogRnJpLCAyMyBPY3QgMjAxNSAxMjozNjozNCArMDMwMAotU3ViamVjdDogW1BBVENIIDIvNF0gYWxzYSwgYmx1ZXRvb3RoOiBmYWlsIGlmIHVzZXItcmVxdWVzdGVkIHByb2ZpbGUgZG9lc24ndAotIGV4aXN0Ci0KLUlmIHdlIGNhbid0IGZ1bGZpbGwgdGhlIHVzZXIgcmVxdWVzdCBmdWxseSwgSSB0aGluayB3ZSBzaG91bGRuJ3QKLWZ1bGZpbGwgaXQgYXQgYWxsLCB0byBtYWtlIGl0IGNsZWFyIHRoYXQgdGhlIHJlcXVlc3RlZCBvcGVyYXRpb24KLWRpZG4ndCBzdWNjZWVkLgotCi1odHRwOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ0OAotCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IERlbmllZCBbVGhlIHBhdGNoIHNldCBuZWVkcyBzb21lIHdvcmsgdG8gYmUgYWNjZXB0ZWQuCi1UaGUgcmV2aWV3IHRocmVhZDoKLWh0dHA6Ly90aHJlYWQuZ21hbmUub3JnL2dtYW5lLmNvbXAuYXVkaW8ucHVsc2VhdWRpby5nZW5lcmFsLzI0MzAxXQotCi1TaWduZWQtb2ZmLWJ5OiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+Ci0tLS0KLSBzcmMvbW9kdWxlcy9hbHNhL21vZHVsZS1hbHNhLWNhcmQuYyAgICAgICAgICB8IDEwICsrKysrKysrLS0KLSBzcmMvbW9kdWxlcy9ibHVldG9vdGgvbW9kdWxlLWJsdWV6NC1kZXZpY2UuYyB8ICA2ICsrKystLQotIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9tb2R1bGVzL2Fsc2EvbW9kdWxlLWFsc2EtY2FyZC5jIGIvc3JjL21vZHVsZXMvYWxzYS9tb2R1bGUtYWxzYS1jYXJkLmMKLWluZGV4IGE3ZmVjMDQuLjMyZjUxN2UgMTAwNjQ0Ci0tLS0gYS9zcmMvbW9kdWxlcy9hbHNhL21vZHVsZS1hbHNhLWNhcmQuYwotKysrIGIvc3JjL21vZHVsZXMvYWxzYS9tb2R1bGUtYWxzYS1jYXJkLmMKLUBAIC03NTQsOCArNzU0LDE0IEBAIGludCBwYV9faW5pdChwYV9tb2R1bGUgKm0pIHsKLSAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgfQotIAotLSAgICBpZiAoKHByb2ZpbGUgPSBwYV9tb2RhcmdzX2dldF92YWx1ZSh1LT5tb2RhcmdzLCAicHJvZmlsZSIsIE5VTEwpKSkKLS0gICAgICAgIHBhX2NhcmRfbmV3X2RhdGFfc2V0X3Byb2ZpbGUoJmRhdGEsIHByb2ZpbGUpOwotKyAgICBpZiAoKHByb2ZpbGUgPSBwYV9tb2RhcmdzX2dldF92YWx1ZSh1LT5tb2RhcmdzLCAicHJvZmlsZSIsIE5VTEwpKSkgewotKyAgICAgICAgaWYgKHBhX2hhc2htYXBfZ2V0KGRhdGEucHJvZmlsZXMsIHByb2ZpbGUpKQotKyAgICAgICAgICAgIHBhX2NhcmRfbmV3X2RhdGFfc2V0X3Byb2ZpbGUoJmRhdGEsIHByb2ZpbGUpOwotKyAgICAgICAgZWxzZSB7Ci0rICAgICAgICAgICAgcGFfbG9nKCJObyBzdWNoIHByb2ZpbGU6ICVzIiwgcHJvZmlsZSk7Ci0rICAgICAgICAgICAgZ290byBmYWlsOwotKyAgICAgICAgfQotKyAgICB9Ci0gCi0gICAgIHUtPmNhcmQgPSBwYV9jYXJkX25ldyhtLT5jb3JlLCAmZGF0YSk7Ci0gICAgIHBhX2NhcmRfbmV3X2RhdGFfZG9uZSgmZGF0YSk7Ci1kaWZmIC0tZ2l0IGEvc3JjL21vZHVsZXMvYmx1ZXRvb3RoL21vZHVsZS1ibHVlejQtZGV2aWNlLmMgYi9zcmMvbW9kdWxlcy9ibHVldG9vdGgvbW9kdWxlLWJsdWV6NC1kZXZpY2UuYwotaW5kZXggYjQwYzZhMC4uOTRlNjk4OCAxMDA2NDQKLS0tLSBhL3NyYy9tb2R1bGVzL2JsdWV0b290aC9tb2R1bGUtYmx1ZXo0LWRldmljZS5jCi0rKysgYi9zcmMvbW9kdWxlcy9ibHVldG9vdGgvbW9kdWxlLWJsdWV6NC1kZXZpY2UuYwotQEAgLTIzMTAsOCArMjMxMCwxMCBAQCBzdGF0aWMgaW50IGFkZF9jYXJkKHN0cnVjdCB1c2VyZGF0YSAqdSkgewotICAgICBpZiAoKGRlZmF1bHRfcHJvZmlsZSA9IHBhX21vZGFyZ3NfZ2V0X3ZhbHVlKHUtPm1vZGFyZ3MsICJwcm9maWxlIiwgTlVMTCkpKSB7Ci0gICAgICAgICBpZiAocGFfaGFzaG1hcF9nZXQoZGF0YS5wcm9maWxlcywgZGVmYXVsdF9wcm9maWxlKSkKLSAgICAgICAgICAgICBwYV9jYXJkX25ld19kYXRhX3NldF9wcm9maWxlKCZkYXRhLCBkZWZhdWx0X3Byb2ZpbGUpOwotLSAgICAgICAgZWxzZQotLSAgICAgICAgICAgIHBhX2xvZ193YXJuKCJQcm9maWxlICclcycgbm90IHZhbGlkIG9yIG5vdCBzdXBwb3J0ZWQgYnkgZGV2aWNlLiIsIGRlZmF1bHRfcHJvZmlsZSk7Ci0rICAgICAgICBlbHNlIHsKLSsgICAgICAgICAgICBwYV9sb2coIlByb2ZpbGUgJyVzJyBub3QgdmFsaWQgb3Igbm90IHN1cHBvcnRlZCBieSBkZXZpY2UuIiwgZGVmYXVsdF9wcm9maWxlKTsKLSsgICAgICAgICAgICByZXR1cm4gLTE7Ci0rICAgICAgICB9Ci0gICAgIH0KLSAKLSAgICAgdS0+Y2FyZCA9IHBhX2NhcmRfbmV3KHUtPmNvcmUsICZkYXRhKTsKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby8wMDAyLWNhcmQtZG9uLXQtYWxsb3ctdGhlLUNBUkRfTkVXLWhvb2stdG8tZmFpbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vMDAwMi1jYXJkLWRvbi10LWFsbG93LXRoZS1DQVJEX05FVy1ob29rLXRvLWZhaWwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBjMjkxZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vMDAwMi1jYXJkLWRvbi10LWFsbG93LXRoZS1DQVJEX05FVy1ob29rLXRvLWZhaWwucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSBkNGU2ZDA3ZmVmMjhkMWJkOGJmYmNlYWI0Y2MxOTZlZjU0YzIzZGQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgorRGF0ZTogVHVlLCA3IEp1biAyMDE2IDE2OjUxOjAwICswMzAwCitTdWJqZWN0OiBbUEFUQ0ggMi81XSBjYXJkOiBkb24ndCBhbGxvdyB0aGUgQ0FSRF9ORVcgaG9vayB0byBmYWlsCisKK1RoZXJlIGlzIGN1cnJlbnRseSBubyB1c2UgZm9yIGFsbG93aW5nIG1vZHVsZXMgdG8gY2FuY2VsIGNhcmQgY3JlYXRpb24sCithbmQgSSBkb24ndCBzZWUgbmVlZCBmb3IgdGhhdCBpbiB0aGUgZnV0dXJlIGVpdGhlci4gTGV0J3Mgc2ltcGxpZnkKK3RoaW5ncyBieSByZW1vdmluZyB0aGUgZmFpbHVyZSBoYW5kbGluZyBjb2RlLgorCitVcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFtleHBlY3RlZCBpbiAxMC4wXQorCitTaWduZWQtb2ZmLWJ5OiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+CistLS0KKyBzcmMvcHVsc2Vjb3JlL2NhcmQuYyB8IDcgKy0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9wdWxzZWNvcmUvY2FyZC5jIGIvc3JjL3B1bHNlY29yZS9jYXJkLmMKK2luZGV4IDQxMDc0NmIuLjBhYzcwYjkgMTAwNjQ0CistLS0gYS9zcmMvcHVsc2Vjb3JlL2NhcmQuYworKysrIGIvc3JjL3B1bHNlY29yZS9jYXJkLmMKK0BAIC0xNDksMTIgKzE0OSw3IEBAIHBhX2NhcmQgKnBhX2NhcmRfbmV3KHBhX2NvcmUgKmNvcmUsIHBhX2NhcmRfbmV3X2RhdGEgKmRhdGEpIHsKKyAgICAgfQorIAorICAgICBwYV9jYXJkX25ld19kYXRhX3NldF9uYW1lKGRhdGEsIG5hbWUpOworLQorLSAgICBpZiAocGFfaG9va19maXJlKCZjb3JlLT5ob29rc1tQQV9DT1JFX0hPT0tfQ0FSRF9ORVddLCBkYXRhKSA8IDApIHsKKy0gICAgICAgIHBhX3hmcmVlKGMpOworLSAgICAgICAgcGFfbmFtZXJlZ191bnJlZ2lzdGVyKGNvcmUsIG5hbWUpOworLSAgICAgICAgcmV0dXJuIE5VTEw7CistICAgIH0KKysgICAgcGFfaG9va19maXJlKCZjb3JlLT5ob29rc1tQQV9DT1JFX0hPT0tfQ0FSRF9ORVddLCBkYXRhKTsKKyAKKyAgICAgYy0+Y29yZSA9IGNvcmU7CisgICAgIGMtPm5hbWUgPSBwYV94c3RyZHVwKGRhdGEtPm5hbWUpOworLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLzAwMDMtY2FyZC1tb3ZlLXByb2ZpbGUtc2VsZWN0aW9uLWFmdGVyLXBhX2NhcmRfbmV3LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby8wMDAzLWNhcmQtbW92ZS1wcm9maWxlLXNlbGVjdGlvbi1hZnRlci1wYV9jYXJkX25ldy5wYXRjaAppbmRleCAwZTc3ODAxLi5lMGY0MjRiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLzAwMDMtY2FyZC1tb3ZlLXByb2ZpbGUtc2VsZWN0aW9uLWFmdGVyLXBhX2NhcmRfbmV3LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vMDAwMy1jYXJkLW1vdmUtcHJvZmlsZS1zZWxlY3Rpb24tYWZ0ZXItcGFfY2FyZF9uZXcucGF0Y2gKQEAgLTEsNjEgKzEsNjIgQEAKLUZyb20gMTNlODVkZDE3NjNlOTlkMjFhNjAzMjM2NzFiOWE1ZGYwOGJkYWU3NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMGI5ODMwOWZkYmNkMzZmYTkyYWI1M2UzM2M1MWI0ODViOTA1ZTI5NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4KIERhdGU6IEZyaSwgMjMgT2N0IDIwMTUgMTI6NTk6NTMgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSCAzLzRdIGNhcmQ6IG1vdmUgcHJvZmlsZSBzZWxlY3Rpb24gYWZ0ZXIgcGFfY2FyZF9uZXcoKQorU3ViamVjdDogW1BBVENIIDMvNV0gY2FyZDogbW92ZSBwcm9maWxlIHNlbGVjdGlvbiBhZnRlciBwYV9jYXJkX25ldygpCiAKIEkgd2FudCBtb2R1bGUtYWxzYS1jYXJkIHRvIHNldCB0aGUgYXZhaWxhYmlsaXR5IG9mIHVuYXZhaWxhYmxlCiBwcm9maWxlcyBiZWZvcmUgdGhlIGluaXRpYWwgY2FyZCBwcm9maWxlIGdldHMgc2VsZWN0ZWQsIHNvIHRoYXQgdGhlCiBzZWxlY3Rpb24gbG9naWMgY2FuIHVzZSBjb3JyZWN0IGF2YWlsYWJpbGl0eSBpbmZvcm1hdGlvbi4KIG1vZHVsZS1hbHNhLWNhcmQgaW5pdGlhbGl6ZXMgdGhlIGphY2sgc3RhdGUgYWZ0ZXIgY2FsbGluZwogcGFfY2FyZF9uZXcoKSwgaG93ZXZlciwgYW5kIHRoZSBwcm9maWxlIHNlbGVjdGlvbiBoYXBwZW5zIGluCi1wYV9jYXJkX25ldygpLiBUaGlzIHBhdGNoIHNvbHZlcyB0aGF0IGJ5IGludHJvZHVjaW5nIHBhX2NhcmRfcHV0KCkgYW5kCi1tb3ZpbmcgdGhlIHByb2ZpbGUgc2VsZWN0aW9uIGNvZGUgdGhlcmUuCitwYV9jYXJkX25ldygpLiBUaGlzIHBhdGNoIHNvbHZlcyB0aGF0IGJ5IG1vdmluZyBwYXJ0cyBvZiBwYV9jYXJkX25ldygpCit0byBwYV9jYXJkX2Nob29zZV9pbml0aWFsX3Byb2ZpbGUoKSBhbmQgcGFfY2FyZF9wdXQoKS4KKworcGFfY2FyZF9jaG9vc2VfaW5pdGlhbF9wcm9maWxlKCkgYXBwbGllcyB0aGUgcHJvZmlsZSBzZWxlY3Rpb24gcG9saWN5LAorc28gbW9kdWxlLWFsc2EtY2FyZCBjYW4gZmlyc3QgY2FsbCBwYV9jYXJkX25ldygpLCB0aGVuIGluaXRpYWxpemUgdGhlCitqYWNrIHN0YXRlLCBhbmQgdGhlbiBjYWxsIHBhX2NhcmRfY2hvb3NlX2luaXRpYWxfcHJvZmlsZSgpLiBBZnRlciB0aGF0Cittb2R1bGUtYWxzYS1jYXJkIGNhbiBzdGlsbCBvdmVycmlkZSB0aGUgcHJvZmlsZSBzZWxlY3Rpb24gcG9saWN5LCBpbgorY2FzZSBtb2R1bGUtYWxzYS1jYXJkIHdhcyBsb2FkZWQgd2l0aCB0aGUgInByb2ZpbGUiIGFyZ3VtZW50LiBGaW5hbGx5LAorcGFfY2FyZF9wdXQoKSBmaW5hbGl6ZXMgdGhlIGNhcmQgY3JlYXRpb24uCiAKIEFuIGFsdGVybmF0aXZlIHNvbHV0aW9uIHdvdWxkIGhhdmUgYmVlbiB0byBtb3ZlIHRoZSBqYWNrCiBpbml0aWFsaXphdGlvbiB0byBoYXBwZW4gYmVmb3JlIHBhX2NhcmRfbmV3KCkgYW5kIHVzZSBwYV9jYXJkX25ld19kYXRhCiBpbnN0ZWFkIG9mIHBhX2NhcmQgaW4gdGhlIGphY2sgaW5pdGlhbGl6YXRpb24gY29kZSwgYnV0IEkgZGlzbGlrZWQKIHRoYXQgaWRlYSAoSSB3YW50IHRvIGdldCByaWQgb2YgdGhlICJuZXcgZGF0YSIgcGF0dGVybiBldmVudHVhbGx5KS4KIAotVGhlIENBUkRfTkVXIGhvb2sgaXMgdXNlZCB3aGVuIGFwcGx5aW5nIHRoZSBpbml0aWFsIHByb2ZpbGUgcG9saWN5LCBzbwotdGhhdCB3YXMgbW92ZWQgdG8gcGFfY2FyZF9wdXQoKS4gVGhhdCByZXF1aXJlZCBjaGFuZ2luZyB0aGUgaG9vayBkYXRhCi1mcm9tIHBhX2NhcmRfbmV3X2RhdGEgdG8gcGFfY2FyZC4gbW9kdWxlLWNhcmQtcmVzdG9yZSBub3cgdXNlcwotcGFfY2FyZF9zZXRfcHJvZmlsZSgpIGluc3RlYWQgb2YgcGFfY2FyZF9uZXdfZGF0YV9zZXRfcHJvZmlsZSgpLiBUaGF0Ci1yZXF1aXJlZCBhZGRpbmcgYSBzdGF0ZSB2YXJpYWJsZSB0byBwYV9jYXJkLCBiZWNhdXNlCi1wYV9jYXJkX3NldF9wcm9maWxlKCkgbmVlZHMgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBzZXR0aW5nIHRoZSBpbml0aWFsCi1wcm9maWxlIGFuZCBzZXR0aW5nIHRoZSBwcm9maWxlIGluIG90aGVyIHNpdHVhdGlvbnMuCi0KIFRoZSBvcmRlciBpbiB3aGljaCB0aGUgaW5pdGlhbCBwcm9maWxlIHBvbGljeSBpcyBhcHBsaWVkIGlzIHJldmVyc2VkCiBpbiB0aGlzIHBhdGNoLiBQcmV2aW91c2x5IHRoZSBmaXJzdCBvbmUgdG8gc2V0IGl0IHdvbiwgbm93IHRoZSBsYXN0CiBvbmUgdG8gc2V0IGl0IHdpbnMuIEkgdGhpbmsgdGhpcyBpcyBiZXR0ZXIsIGJlY2F1c2UgaWYgeW91IGhhdmUgTgogcGFydGllcyB0aGF0IHdhbnQgdG8gc2V0IHRoZSBwcm9maWxlLCB3ZSBhdm9pZCBjaGVja2luZyBOIHRpbWVzCiB3aGV0aGVyIHNvbWVvbmUgZWxzZSBoYXMgYWxyZWFkeSBzZXQgdGhlIHByb2ZpbGUuCiAKLWh0dHA6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD04NDQ4Ci0KLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci0KLVJlYmFzZWQgb24gOC4wLgotCi1VcHN0cmVhbS1TdGF0dXM6IERlbmllZCBbVGhlIHBhdGNoIHNldCBuZWVkcyBzb21lIHdvcmsgdG8gYmUgYWNjZXB0ZWQuCi1UaGUgcmV2aWV3IHRocmVhZDoKLWh0dHA6Ly90aHJlYWQuZ21hbmUub3JnL2dtYW5lLmNvbXAuYXVkaW8ucHVsc2VhdWRpby5nZW5lcmFsLzI0MzAxXQorVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZCBbZXhwZWN0ZWQgaW4gMTAuMF0KIAogU2lnbmVkLW9mZi1ieTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgogLS0tCi0gc3JjL21vZHVsZXMvYWxzYS9tb2R1bGUtYWxzYS1jYXJkLmMgICAgICAgICAgfCAxOSArKystLS0tCi0gc3JjL21vZHVsZXMvYmx1ZXRvb3RoL21vZHVsZS1ibHVlejQtZGV2aWNlLmMgfCAxOCArKystLS0tCi0gc3JjL21vZHVsZXMvYmx1ZXRvb3RoL21vZHVsZS1ibHVlejUtZGV2aWNlLmMgfCAgMSArCi0gc3JjL21vZHVsZXMvbWFjb3N4L21vZHVsZS1jb3JlYXVkaW8tZGV2aWNlLmMgfCAgMSArCi0gc3JjL21vZHVsZXMvbW9kdWxlLWNhcmQtcmVzdG9yZS5jICAgICAgICAgICAgfCAyNCArKysrKy0tLS0KLSBzcmMvcHVsc2Vjb3JlL2NhcmQuYyAgICAgICAgICAgICAgICAgICAgICAgICB8IDgxICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KLSBzcmMvcHVsc2Vjb3JlL2NhcmQuaCAgICAgICAgICAgICAgICAgICAgICAgICB8ICA3ICsrKwotIDcgZmlsZXMgY2hhbmdlZCwgODYgaW5zZXJ0aW9ucygrKSwgNjUgZGVsZXRpb25zKC0pCisgc3JjL21vZHVsZXMvYWxzYS9tb2R1bGUtYWxzYS1jYXJkLmMgICAgICAgICAgfCAzMiArKysrKy0tLS0KKyBzcmMvbW9kdWxlcy9ibHVldG9vdGgvbW9kdWxlLWJsdWV6NC1kZXZpY2UuYyB8IDMxICsrKysrLS0tLQorIHNyYy9tb2R1bGVzL2JsdWV0b290aC9tb2R1bGUtYmx1ZXo1LWRldmljZS5jIHwgIDIgKworIHNyYy9tb2R1bGVzL21hY29zeC9tb2R1bGUtY29yZWF1ZGlvLWRldmljZS5jIHwgIDIgKworIHNyYy9tb2R1bGVzL21vZHVsZS1jYXJkLXJlc3RvcmUuYyAgICAgICAgICAgIHwgMzYgKysrKysrKy0tLQorIHNyYy9wdWxzZWNvcmUvY2FyZC5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgOTkgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQorIHNyYy9wdWxzZWNvcmUvY2FyZC5oICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDkgKysrCisgc3JjL3B1bHNlY29yZS9jb3JlLmggICAgICAgICAgICAgICAgICAgICAgICAgfCAgMSArCisgOCBmaWxlcyBjaGFuZ2VkLCAxNDMgaW5zZXJ0aW9ucygrKSwgNjkgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9zcmMvbW9kdWxlcy9hbHNhL21vZHVsZS1hbHNhLWNhcmQuYyBiL3NyYy9tb2R1bGVzL2Fsc2EvbW9kdWxlLWFsc2EtY2FyZC5jCi1pbmRleCA5ZThjZGUyLi5mZTI0MGYwIDEwMDY0NAoraW5kZXggZDc2MTY4My4uMTk3NjIzMCAxMDA2NDQKIC0tLSBhL3NyYy9tb2R1bGVzL2Fsc2EvbW9kdWxlLWFsc2EtY2FyZC5jCiArKysgYi9zcmMvbW9kdWxlcy9hbHNhL21vZHVsZS1hbHNhLWNhcmQuYwotQEAgLTc3MCwxNSArNzcwLDYgQEAgaW50IHBhX19pbml0KHBhX21vZHVsZSAqbSkgeworQEAgLTY3MSw3ICs2NzEsNyBAQCBpbnQgcGFfX2luaXQocGFfbW9kdWxlICptKSB7CisgICAgIHN0cnVjdCB1c2VyZGF0YSAqdTsKKyAgICAgcGFfcmVzZXJ2ZV93cmFwcGVyICpyZXNlcnZlID0gTlVMTDsKKyAgICAgY29uc3QgY2hhciAqZGVzY3JpcHRpb247CistICAgIGNvbnN0IGNoYXIgKnByb2ZpbGUgPSBOVUxMOworKyAgICBjb25zdCBjaGFyICpwcm9maWxlX3N0ciA9IE5VTEw7CisgICAgIGNoYXIgKmZuID0gTlVMTDsKKyAgICAgYm9vbCBuYW1lcmVnX2ZhaWwgPSBmYWxzZTsKKyAKK0BAIC03OTksMTYgKzc5OSw2IEBAIGludCBwYV9faW5pdChwYV9tb2R1bGUgKm0pIHsKICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgfQogIApAQCAtNjQsNiArNjUsNyBAQAogLSAgICAgICAgICAgIHBhX2NhcmRfbmV3X2RhdGFfc2V0X3Byb2ZpbGUoJmRhdGEsIHByb2ZpbGUpOwogLSAgICAgICAgZWxzZSB7CiAtICAgICAgICAgICAgcGFfbG9nKCJObyBzdWNoIHByb2ZpbGU6ICVzIiwgcHJvZmlsZSk7CistICAgICAgICAgICAgcGFfY2FyZF9uZXdfZGF0YV9kb25lKCZkYXRhKTsKIC0gICAgICAgICAgICBnb3RvIGZhaWw7CiAtICAgICAgICB9CiAtICAgIH0KQEAgLTcxLDI4ICs3Myw0NyBAQAogICAgICB1LT5jYXJkID0gcGFfY2FyZF9uZXcobS0+Y29yZSwgJmRhdGEpOwogICAgICBwYV9jYXJkX25ld19kYXRhX2RvbmUoJmRhdGEpOwogIAotQEAgLTc4OSw2ICs3ODAsMTYgQEAgaW50IHBhX19pbml0KHBhX21vZHVsZSAqbSkgewotICAgICB1LT5jYXJkLT5zZXRfcHJvZmlsZSA9IGNhcmRfc2V0X3Byb2ZpbGU7CitAQCAtODIyLDYgKzgxMiwyNiBAQCBpbnQgcGFfX2luaXQocGFfbW9kdWxlICptKSB7CisgICAgICAgICAgICAgKHBhX2hvb2tfY2JfdCkgY2FyZF9zdXNwZW5kX2NoYW5nZWQsIHUpOwogIAogICAgICBpbml0X2phY2tzKHUpOwotKyAgICBwYV9jYXJkX3B1dCh1LT5jYXJkKTsKICsKLSsgICAgaWYgKChwcm9maWxlID0gcGFfbW9kYXJnc19nZXRfdmFsdWUodS0+bW9kYXJncywgInByb2ZpbGUiLCBOVUxMKSkpIHsKLSsgICAgICAgIHUtPmNhcmQtPmFjdGl2ZV9wcm9maWxlID0gcGFfaGFzaG1hcF9nZXQodS0+Y2FyZC0+cHJvZmlsZXMsIHByb2ZpbGUpOwotKyAgICAgICAgaWYgKCF1LT5jYXJkLT5hY3RpdmVfcHJvZmlsZSkgewotKyAgICAgICAgICAgIHBhX2xvZygiTm8gc3VjaCBwcm9maWxlOiAlcyIsIHByb2ZpbGUpOworKyAgICBwYV9jYXJkX2Nob29zZV9pbml0aWFsX3Byb2ZpbGUodS0+Y2FyZCk7CisrCisrICAgIC8qIElmIHRoZSAicHJvZmlsZSIgbW9kYXJnIGlzIGdpdmVuLCB3ZSBoYXZlIHRvIG92ZXJyaWRlIHdoYXRldmVyIHRoZSB1c3VhbAorKyAgICAgKiBwb2xpY3kgY2hvc2UgaW4gcGFfY2FyZF9jaG9vc2VfaW5pdGlhbF9wcm9maWxlKCkuICovCisrICAgIHByb2ZpbGVfc3RyID0gcGFfbW9kYXJnc19nZXRfdmFsdWUodS0+bW9kYXJncywgInByb2ZpbGUiLCBOVUxMKTsKKysgICAgaWYgKHByb2ZpbGVfc3RyKSB7CisrICAgICAgICBwYV9jYXJkX3Byb2ZpbGUgKnByb2ZpbGU7CisrCisrICAgICAgICBwcm9maWxlID0gcGFfaGFzaG1hcF9nZXQodS0+Y2FyZC0+cHJvZmlsZXMsIHByb2ZpbGVfc3RyKTsKKysgICAgICAgIGlmICghcHJvZmlsZSkgeworKyAgICAgICAgICAgIHBhX2xvZygiTm8gc3VjaCBwcm9maWxlOiAlcyIsIHByb2ZpbGVfc3RyKTsKICsgICAgICAgICAgICBnb3RvIGZhaWw7CiArICAgICAgICB9CisrCisrICAgICAgICBwYV9jYXJkX3NldF9wcm9maWxlKHUtPmNhcmQsIHByb2ZpbGUsIGZhbHNlKTsKICsgICAgfQogKworKyAgICBwYV9jYXJkX3B1dCh1LT5jYXJkKTsKKysKICAgICAgaW5pdF9wcm9maWxlKHUpOwogICAgICBpbml0X2VsZF9jdGxzKHUpOwogIAogZGlmZiAtLWdpdCBhL3NyYy9tb2R1bGVzL2JsdWV0b290aC9tb2R1bGUtYmx1ZXo0LWRldmljZS5jIGIvc3JjL21vZHVsZXMvYmx1ZXRvb3RoL21vZHVsZS1ibHVlejQtZGV2aWNlLmMKLWluZGV4IGRkMTgyMTcuLjVkMGQzZGIgMTAwNjQ0CitpbmRleCBhMmRlNTI1Li4xM2ZiN2FiIDEwMDY0NAogLS0tIGEvc3JjL21vZHVsZXMvYmx1ZXRvb3RoL21vZHVsZS1ibHVlejQtZGV2aWNlLmMKICsrKyBiL3NyYy9tb2R1bGVzL2JsdWV0b290aC9tb2R1bGUtYmx1ZXo0LWRldmljZS5jCi1AQCAtMjMwNCwxNSArMjMwNCw2IEBAIHN0YXRpYyBpbnQgYWRkX2NhcmQoc3RydWN0IHVzZXJkYXRhICp1KSB7CitAQCAtMjIzOCw3ICsyMjM4LDcgQEAgc3RhdGljIGludCBhZGRfY2FyZChzdHJ1Y3QgdXNlcmRhdGEgKnUpIHsKKyAgICAgcGFfYmx1ZXo0X3Byb2ZpbGVfdCAqZDsKKyAgICAgcGFfYmx1ZXo0X2Zvcm1fZmFjdG9yX3QgZmY7CisgICAgIGNoYXIgKm47CistICAgIGNvbnN0IGNoYXIgKmRlZmF1bHRfcHJvZmlsZTsKKysgICAgY29uc3QgY2hhciAqcHJvZmlsZV9zdHI7CisgICAgIGNvbnN0IHBhX2JsdWV6NF9kZXZpY2UgKmRldmljZTsKKyAgICAgY29uc3QgcGFfYmx1ZXo0X3V1aWQgKnV1aWQ7CisgCitAQCAtMjI5OCwxNiArMjI5OCw2IEBAIHN0YXRpYyBpbnQgYWRkX2NhcmQoc3RydWN0IHVzZXJkYXRhICp1KSB7CiAgICAgICpkID0gUEFfQkxVRVo0X1BST0ZJTEVfT0ZGOwogICAgICBwYV9oYXNobWFwX3B1dChkYXRhLnByb2ZpbGVzLCBwLT5uYW1lLCBwKTsKICAKQEAgLTEwMSw2ICsxMjIsNyBAQAogLSAgICAgICAgICAgIHBhX2NhcmRfbmV3X2RhdGFfc2V0X3Byb2ZpbGUoJmRhdGEsIGRlZmF1bHRfcHJvZmlsZSk7CiAtICAgICAgICBlbHNlIHsKIC0gICAgICAgICAgICBwYV9sb2coIlByb2ZpbGUgJyVzJyBub3QgdmFsaWQgb3Igbm90IHN1cHBvcnRlZCBieSBkZXZpY2UuIiwgZGVmYXVsdF9wcm9maWxlKTsKKy0gICAgICAgICAgICBwYV9jYXJkX25ld19kYXRhX2RvbmUoJmRhdGEpOwogLSAgICAgICAgICAgIHJldHVybiAtMTsKIC0gICAgICAgIH0KIC0gICAgfQpAQCAtMTA4LDEyNyArMTMwLDEyNiBAQAogICAgICB1LT5jYXJkID0gcGFfY2FyZF9uZXcodS0+Y29yZSwgJmRhdGEpOwogICAgICBwYV9jYXJkX25ld19kYXRhX2RvbmUoJmRhdGEpOwogIAotQEAgLTIzMjMsNiArMjMxNCwxNSBAQCBzdGF0aWMgaW50IGFkZF9jYXJkKHN0cnVjdCB1c2VyZGF0YSAqdSkgewotIAorQEAgLTIzMTksNiArMjMwOSwyNSBAQCBzdGF0aWMgaW50IGFkZF9jYXJkKHN0cnVjdCB1c2VyZGF0YSAqdSkgewogICAgICB1LT5jYXJkLT51c2VyZGF0YSA9IHU7CiAgICAgIHUtPmNhcmQtPnNldF9wcm9maWxlID0gY2FyZF9zZXRfcHJvZmlsZTsKLSsgICAgcGFfY2FyZF9wdXQodS0+Y2FyZCk7CisgCisrICAgIHBhX2NhcmRfY2hvb3NlX2luaXRpYWxfcHJvZmlsZSh1LT5jYXJkKTsKICsKLSsgICAgaWYgKChkZWZhdWx0X3Byb2ZpbGUgPSBwYV9tb2RhcmdzX2dldF92YWx1ZSh1LT5tb2RhcmdzLCAicHJvZmlsZSIsIE5VTEwpKSkgewotKyAgICAgICAgdS0+Y2FyZC0+YWN0aXZlX3Byb2ZpbGUgPSBwYV9oYXNobWFwX2dldCh1LT5jYXJkLT5wcm9maWxlcywgZGVmYXVsdF9wcm9maWxlKTsKLSsgICAgICAgIGlmICghdS0+Y2FyZC0+YWN0aXZlX3Byb2ZpbGUpIHsKLSsgICAgICAgICAgICBwYV9sb2coIlByb2ZpbGUgJyVzJyBub3QgdmFsaWQgb3Igbm90IHN1cHBvcnRlZCBieSBkZXZpY2UuIiwgZGVmYXVsdF9wcm9maWxlKTsKKysgICAgLyogSWYgdGhlICJwcm9maWxlIiBtb2RhcmcgaXMgZ2l2ZW4sIHdlIGhhdmUgdG8gb3ZlcnJpZGUgd2hhdGV2ZXIgdGhlIHVzdWFsCisrICAgICAqIHBvbGljeSBjaG9zZSBpbiBwYV9jYXJkX2Nob29zZV9pbml0aWFsX3Byb2ZpbGUoKS4gKi8KKysgICAgcHJvZmlsZV9zdHIgPSBwYV9tb2RhcmdzX2dldF92YWx1ZSh1LT5tb2RhcmdzLCAicHJvZmlsZSIsIE5VTEwpOworKyAgICBpZiAocHJvZmlsZV9zdHIpIHsKKysgICAgICAgIHBhX2NhcmRfcHJvZmlsZSAqcHJvZmlsZTsKKysKKysgICAgICAgIHByb2ZpbGUgPSBwYV9oYXNobWFwX2dldCh1LT5jYXJkLT5wcm9maWxlcywgcHJvZmlsZV9zdHIpOworKyAgICAgICAgaWYgKCFwcm9maWxlKSB7CisrICAgICAgICAgICAgcGFfbG9nKCJObyBzdWNoIHByb2ZpbGU6ICVzIiwgcHJvZmlsZV9zdHIpOwogKyAgICAgICAgICAgIHJldHVybiAtMTsKICsgICAgICAgIH0KKysKKysgICAgICAgIHBhX2NhcmRfc2V0X3Byb2ZpbGUodS0+Y2FyZCwgcHJvZmlsZSwgZmFsc2UpOwogKyAgICB9Ci0gCisrCisrICAgIHBhX2NhcmRfcHV0KHUtPmNhcmQpOworKwogICAgICBkID0gUEFfQ0FSRF9QUk9GSUxFX0RBVEEodS0+Y2FyZC0+YWN0aXZlX3Byb2ZpbGUpOwogIAorICAgICBpZiAoKmQgIT0gUEFfQkxVRVo0X1BST0ZJTEVfT0ZGICYmICghZGV2aWNlLT50cmFuc3BvcnRzWypkXSB8fAogZGlmZiAtLWdpdCBhL3NyYy9tb2R1bGVzL2JsdWV0b290aC9tb2R1bGUtYmx1ZXo1LWRldmljZS5jIGIvc3JjL21vZHVsZXMvYmx1ZXRvb3RoL21vZHVsZS1ibHVlejUtZGV2aWNlLmMKLWluZGV4IGIwMTVjNjcuLjdiOTBhMzEgMTAwNjQ0CitpbmRleCA4NGU2ZDU1Li40OThkMGUxIDEwMDY0NAogLS0tIGEvc3JjL21vZHVsZXMvYmx1ZXRvb3RoL21vZHVsZS1ibHVlejUtZGV2aWNlLmMKICsrKyBiL3NyYy9tb2R1bGVzL2JsdWV0b290aC9tb2R1bGUtYmx1ZXo1LWRldmljZS5jCi1AQCAtMTk1OSw2ICsxOTU5LDcgQEAgc3RhdGljIGludCBhZGRfY2FyZChzdHJ1Y3QgdXNlcmRhdGEgKnUpIHsKK0BAIC0xOTUzLDYgKzE5NTMsOCBAQCBzdGF0aWMgaW50IGFkZF9jYXJkKHN0cnVjdCB1c2VyZGF0YSAqdSkgewogIAogICAgICB1LT5jYXJkLT51c2VyZGF0YSA9IHU7CiAgICAgIHUtPmNhcmQtPnNldF9wcm9maWxlID0gc2V0X3Byb2ZpbGVfY2I7CisrICAgIHBhX2NhcmRfY2hvb3NlX2luaXRpYWxfcHJvZmlsZSh1LT5jYXJkKTsKICsgICAgcGFfY2FyZF9wdXQodS0+Y2FyZCk7CiAgCiAgICAgIHAgPSBQQV9DQVJEX1BST0ZJTEVfREFUQSh1LT5jYXJkLT5hY3RpdmVfcHJvZmlsZSk7CiAgICAgIHUtPnByb2ZpbGUgPSAqcDsKIGRpZmYgLS1naXQgYS9zcmMvbW9kdWxlcy9tYWNvc3gvbW9kdWxlLWNvcmVhdWRpby1kZXZpY2UuYyBiL3NyYy9tb2R1bGVzL21hY29zeC9tb2R1bGUtY29yZWF1ZGlvLWRldmljZS5jCi1pbmRleCAwYzkyZDQyLi43MTkwZWU5IDEwMDY0NAoraW5kZXggNmM5ZTU1ZC4uZDkxYzY1NiAxMDA2NDQKIC0tLSBhL3NyYy9tb2R1bGVzL21hY29zeC9tb2R1bGUtY29yZWF1ZGlvLWRldmljZS5jCiArKysgYi9zcmMvbW9kdWxlcy9tYWNvc3gvbW9kdWxlLWNvcmVhdWRpby1kZXZpY2UuYwotQEAgLTgwNyw2ICs4MDcsNyBAQCBpbnQgcGFfX2luaXQocGFfbW9kdWxlICptKSB7CitAQCAtODIxLDYgKzgyMSw4IEBAIGludCBwYV9faW5pdChwYV9tb2R1bGUgKm0pIHsKICAgICAgcGFfY2FyZF9uZXdfZGF0YV9kb25lKCZjYXJkX25ld19kYXRhKTsKICAgICAgdS0+Y2FyZC0+dXNlcmRhdGEgPSB1OwogICAgICB1LT5jYXJkLT5zZXRfcHJvZmlsZSA9IGNhcmRfc2V0X3Byb2ZpbGU7CisrICAgIHBhX2NhcmRfY2hvb3NlX2luaXRpYWxfcHJvZmlsZSh1LT5jYXJkKTsKICsgICAgcGFfY2FyZF9wdXQodS0+Y2FyZCk7CiAgCiAgICAgIHUtPnJ0cG9sbCA9IHBhX3J0cG9sbF9uZXcoKTsKICAgICAgcGFfdGhyZWFkX21xX2luaXQoJnUtPnRocmVhZF9tcSwgbS0+Y29yZS0+bWFpbmxvb3AsIHUtPnJ0cG9sbCk7CiBkaWZmIC0tZ2l0IGEvc3JjL21vZHVsZXMvbW9kdWxlLWNhcmQtcmVzdG9yZS5jIGIvc3JjL21vZHVsZXMvbW9kdWxlLWNhcmQtcmVzdG9yZS5jCi1pbmRleCBmOTA2ODQzLi5kY2U2Njc0IDEwMDY0NAoraW5kZXggNzU0NWFhNS4uNzE4YTBkZCAxMDA2NDQKIC0tLSBhL3NyYy9tb2R1bGVzL21vZHVsZS1jYXJkLXJlc3RvcmUuYwogKysrIGIvc3JjL21vZHVsZXMvbW9kdWxlLWNhcmQtcmVzdG9yZS5jCi1AQCAtNTE1LDM0ICs1MTUsMzggQEAgc3RhdGljIHBhX2hvb2tfcmVzdWx0X3QgcG9ydF9vZmZzZXRfY2hhbmdlX2NhbGxiYWNrKHBhX2NvcmUgKmMsIHBhX2RldmljZV9wb3J0ICoKLSAgICAgcmV0dXJuIFBBX0hPT0tfT0s7Ci0gfQotIAotLXN0YXRpYyBwYV9ob29rX3Jlc3VsdF90IGNhcmRfbmV3X2hvb2tfY2FsbGJhY2socGFfY29yZSAqYywgcGFfY2FyZF9uZXdfZGF0YSAqbmV3X2RhdGEsIHN0cnVjdCB1c2VyZGF0YSAqdSkgewotK3N0YXRpYyBwYV9ob29rX3Jlc3VsdF90IGNhcmRfbmV3X2hvb2tfY2FsbGJhY2socGFfY29yZSAqYywgcGFfY2FyZCAqY2FyZCwgc3RydWN0IHVzZXJkYXRhICp1KSB7Ci0gICAgIHN0cnVjdCBlbnRyeSAqZTsKLSAgICAgdm9pZCAqc3RhdGU7Ci0gICAgIHBhX2RldmljZV9wb3J0ICpwOwotICAgICBzdHJ1Y3QgcG9ydF9pbmZvICpwX2luZm87Ci0gCi0tICAgIHBhX2Fzc2VydChuZXdfZGF0YSk7Ci0rICAgIHBhX2Fzc2VydChjKTsKLSsgICAgcGFfYXNzZXJ0KGNhcmQpOwotKyAgICBwYV9hc3NlcnQodSk7Ci0gCi0tICAgIGlmICghKGUgPSBlbnRyeV9yZWFkKHUsIG5ld19kYXRhLT5uYW1lKSkpCi0rICAgIGlmICghKGUgPSBlbnRyeV9yZWFkKHUsIGNhcmQtPm5hbWUpKSkKK0BAIC01NTEsMTYgKzU1MSw2IEBAIHN0YXRpYyBwYV9ob29rX3Jlc3VsdF90IGNhcmRfbmV3X2hvb2tfY2FsbGJhY2socGFfY29yZSAqYywgcGFfY2FyZF9uZXdfZGF0YSAqbmV3CisgICAgIGlmICghKGUgPSBlbnRyeV9yZWFkKHUsIG5ld19kYXRhLT5uYW1lKSkpCiAgICAgICAgICByZXR1cm4gUEFfSE9PS19PSzsKICAKLSAgICAgaWYgKGUtPnByb2ZpbGVbMF0pIHsKKy0gICAgaWYgKGUtPnByb2ZpbGVbMF0pIHsKIC0gICAgICAgIGlmICghbmV3X2RhdGEtPmFjdGl2ZV9wcm9maWxlKSB7CiAtICAgICAgICAgICAgcGFfY2FyZF9uZXdfZGF0YV9zZXRfcHJvZmlsZShuZXdfZGF0YSwgZS0+cHJvZmlsZSk7CiAtICAgICAgICAgICAgcGFfbG9nX2luZm8oIlJlc3RvcmVkIHByb2ZpbGUgJyVzJyBmb3IgY2FyZCAlcy4iLCBuZXdfZGF0YS0+YWN0aXZlX3Byb2ZpbGUsIG5ld19kYXRhLT5uYW1lKTsKIC0gICAgICAgICAgICBuZXdfZGF0YS0+c2F2ZV9wcm9maWxlID0gdHJ1ZTsKLSsgICAgICAgIHBhX2NhcmRfcHJvZmlsZSAqcHJvZmlsZTsKLSAKLSsgICAgICAgIHByb2ZpbGUgPSBwYV9oYXNobWFwX2dldChjYXJkLT5wcm9maWxlcywgZS0+cHJvZmlsZSk7Ci0rICAgICAgICBpZiAocHJvZmlsZSkgewotKyAgICAgICAgICAgIHBhX2NhcmRfc2V0X3Byb2ZpbGUoY2FyZCwgcHJvZmlsZSwgdHJ1ZSk7Ci0rICAgICAgICAgICAgcGFfbG9nX2luZm8oIlJlc3RvcmVkIHByb2ZpbGUgJyVzJyBmb3IgY2FyZCAlcy4iLCBjYXJkLT5hY3RpdmVfcHJvZmlsZS0+bmFtZSwgY2FyZC0+bmFtZSk7Ci0gICAgICAgICB9IGVsc2UKKy0KKy0gICAgICAgIH0gZWxzZQogLSAgICAgICAgICAgIHBhX2xvZ19kZWJ1ZygiTm90IHJlc3RvcmluZyBwcm9maWxlIGZvciBjYXJkICVzLCBiZWNhdXNlIGFscmVhZHkgc2V0LiIsIG5ld19kYXRhLT5uYW1lKTsKLSsgICAgICAgICAgICBwYV9sb2dfZGVidWcoIlRyaWVkIHRvIHJlc3RvcmUgcHJvZmlsZSAlcyBmb3IgY2FyZCAlcywgYnV0IHRoZSBjYXJkIGRvZXNuJ3QgaGF2ZSBzdWNoIHByb2ZpbGUuIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgZS0+cHJvZmlsZSwgY2FyZC0+bmFtZSk7Ci0gICAgIH0KLSAKKy0gICAgfQorLQogICAgICAvKiBBbHdheXMgcmVzdG9yZSB0aGUgbGF0ZW5jeSBvZmZzZXRzIGJlY2F1c2UgdGhlaXIKICAgICAgICogaW5pdGlhbCB2YWx1ZSBpcyBhbHdheXMgMCAqLwogIAotLSAgICBwYV9sb2dfaW5mbygiUmVzdG9yaW5nIHBvcnQgbGF0ZW5jeSBvZmZzZXRzIGZvciBjYXJkICVzLiIsIG5ld19kYXRhLT5uYW1lKTsKLSsgICAgcGFfbG9nX2luZm8oIlJlc3RvcmluZyBwb3J0IGxhdGVuY3kgb2Zmc2V0cyBmb3IgY2FyZCAlcy4iLCBjYXJkLT5uYW1lKTsKK0BAIC01OTAsNiArNTgwLDMwIEBAIHN0YXRpYyBwYV9ob29rX3Jlc3VsdF90IGNhcmRfbmV3X2hvb2tfY2FsbGJhY2socGFfY29yZSAqYywgcGFfY2FyZF9uZXdfZGF0YSAqbmV3CisgICAgIHJldHVybiBQQV9IT09LX09LOworIH0KICAKLSAgICAgUEFfSEFTSE1BUF9GT1JFQUNIKHBfaW5mbywgZS0+cG9ydHMsIHN0YXRlKQotLSAgICAgICAgaWYgKChwID0gcGFfaGFzaG1hcF9nZXQobmV3X2RhdGEtPnBvcnRzLCBwX2luZm8tPm5hbWUpKSkgewotKyAgICAgICAgaWYgKChwID0gcGFfaGFzaG1hcF9nZXQoY2FyZC0+cG9ydHMsIHBfaW5mby0+bmFtZSkpKSB7Ci0gICAgICAgICAgICAgcC0+bGF0ZW5jeV9vZmZzZXQgPSBwX2luZm8tPm9mZnNldDsKLSAgICAgICAgICAgICBpZiAoIXAtPnByZWZlcnJlZF9wcm9maWxlICYmIHBfaW5mby0+cHJvZmlsZSkKLSAgICAgICAgICAgICAgICAgcGFfZGV2aWNlX3BvcnRfc2V0X3ByZWZlcnJlZF9wcm9maWxlKHAsIHBfaW5mby0+cHJvZmlsZSk7Cisrc3RhdGljIHBhX2hvb2tfcmVzdWx0X3QgY2FyZF9jaG9vc2VfaW5pdGlhbF9wcm9maWxlX2NhbGxiYWNrKHBhX2NvcmUgKmNvcmUsIHBhX2NhcmQgKmNhcmQsIHN0cnVjdCB1c2VyZGF0YSAqdSkgeworKyAgICBzdHJ1Y3QgZW50cnkgKmU7CisrCisrICAgIGlmICghKGUgPSBlbnRyeV9yZWFkKHUsIGNhcmQtPm5hbWUpKSkKKysgICAgICAgIHJldHVybiBQQV9IT09LX09LOworKworKyAgICBpZiAoZS0+cHJvZmlsZVswXSkgeworKyAgICAgICAgcGFfY2FyZF9wcm9maWxlICpwcm9maWxlOworKworKyAgICAgICAgcHJvZmlsZSA9IHBhX2hhc2htYXBfZ2V0KGNhcmQtPnByb2ZpbGVzLCBlLT5wcm9maWxlKTsKKysgICAgICAgIGlmIChwcm9maWxlKSB7CisrICAgICAgICAgICAgcGFfbG9nX2luZm8oIlJlc3RvcmluZyBwcm9maWxlICclcycgZm9yIGNhcmQgJXMuIiwgY2FyZC0+YWN0aXZlX3Byb2ZpbGUtPm5hbWUsIGNhcmQtPm5hbWUpOworKyAgICAgICAgICAgIHBhX2NhcmRfc2V0X3Byb2ZpbGUoY2FyZCwgcHJvZmlsZSwgdHJ1ZSk7CisrICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgIHBhX2xvZ19kZWJ1ZygiVHJpZWQgdG8gcmVzdG9yZSBwcm9maWxlICVzIGZvciBjYXJkICVzLCBidXQgdGhlIGNhcmQgZG9lc24ndCBoYXZlIHN1Y2ggcHJvZmlsZS4iLAorKyAgICAgICAgICAgICAgICAgICAgICAgICBlLT5wcm9maWxlLCBjYXJkLT5uYW1lKTsKKysgICAgICAgIH0KKysgICAgfQorKworKyAgICBlbnRyeV9mcmVlKGUpOworKworKyAgICByZXR1cm4gUEFfSE9PS19PSzsKKyt9CisrCisgc3RhdGljIHBhX2hvb2tfcmVzdWx0X3QgY2FyZF9wcmVmZXJyZWRfcG9ydF9jaGFuZ2VkX2NhbGxiYWNrKHBhX2NvcmUgKmNvcmUsIHBhX2NhcmRfcHJlZmVycmVkX3BvcnRfY2hhbmdlZF9ob29rX2RhdGEgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB1c2VyZGF0YSAqdSkgeworICAgICBzdHJ1Y3QgZW50cnkgKmU7CitAQCAtNjM0LDYgKzY0OCw4IEBAIGludCBwYV9faW5pdChwYV9tb2R1bGUqbSkgeworICAgICB1LT5tb2R1bGUgPSBtOworIAorICAgICBwYV9tb2R1bGVfaG9va19jb25uZWN0KG0sICZtLT5jb3JlLT5ob29rc1tQQV9DT1JFX0hPT0tfQ0FSRF9ORVddLCBQQV9IT09LX0VBUkxZLCAocGFfaG9va19jYl90KSBjYXJkX25ld19ob29rX2NhbGxiYWNrLCB1KTsKKysgICAgcGFfbW9kdWxlX2hvb2tfY29ubmVjdChtLCAmbS0+Y29yZS0+aG9va3NbUEFfQ09SRV9IT09LX0NBUkRfQ0hPT1NFX0lOSVRJQUxfUFJPRklMRV0sIFBBX0hPT0tfTk9STUFMLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYV9ob29rX2NiX3QpIGNhcmRfY2hvb3NlX2luaXRpYWxfcHJvZmlsZV9jYWxsYmFjaywgdSk7CisgICAgIHBhX21vZHVsZV9ob29rX2Nvbm5lY3QobSwgJm0tPmNvcmUtPmhvb2tzW1BBX0NPUkVfSE9PS19DQVJEX1BVVF0sIFBBX0hPT0tfTk9STUFMLCAocGFfaG9va19jYl90KSBjYXJkX3B1dF9ob29rX2NhbGxiYWNrLCB1KTsKKyAgICAgcGFfbW9kdWxlX2hvb2tfY29ubmVjdChtLCAmbS0+Y29yZS0+aG9va3NbUEFfQ09SRV9IT09LX0NBUkRfUFJFRkVSUkVEX1BPUlRfQ0hBTkdFRF0sIFBBX0hPT0tfTk9STUFMLCAocGFfaG9va19jYl90KSBjYXJkX3ByZWZlcnJlZF9wb3J0X2NoYW5nZWRfY2FsbGJhY2ssIHUpOworICAgICBwYV9tb2R1bGVfaG9va19jb25uZWN0KG0sICZtLT5jb3JlLT5ob29rc1tQQV9DT1JFX0hPT0tfQ0FSRF9QUk9GSUxFX0NIQU5HRURdLCBQQV9IT09LX05PUk1BTCwgKHBhX2hvb2tfY2JfdCkgY2FyZF9wcm9maWxlX2NoYW5nZWRfY2FsbGJhY2ssIHUpOwogZGlmZiAtLWdpdCBhL3NyYy9wdWxzZWNvcmUvY2FyZC5jIGIvc3JjL3B1bHNlY29yZS9jYXJkLmMKLWluZGV4IGY5MmFjODcuLjFhNmU3MDUgMTAwNjQ0CitpbmRleCAwYWM3MGI5Li5hMGMzZDkzIDEwMDY0NAogLS0tIGEvc3JjL3B1bHNlY29yZS9jYXJkLmMKICsrKyBiL3NyYy9wdWxzZWNvcmUvY2FyZC5jCi1AQCAtMTQ4LDYgKzE0OCw3IEBAIHBhX2NhcmQgKnBhX2NhcmRfbmV3KHBhX2NvcmUgKmNvcmUsIHBhX2NhcmRfbmV3X2RhdGEgKmRhdGEpIHsKLSAgICAgcGFfYXNzZXJ0KCFwYV9oYXNobWFwX2lzZW1wdHkoZGF0YS0+cHJvZmlsZXMpKTsKLSAKLSAgICAgYyA9IHBhX3huZXcwKHBhX2NhcmQsIDEpOwotKyAgICBjLT5zdGF0ZSA9IFBBX0NBUkRfU1RBVEVfSU5JVDsKLSAKLSAgICAgaWYgKCEobmFtZSA9IHBhX25hbWVyZWdfcmVnaXN0ZXIoY29yZSwgZGF0YS0+bmFtZSwgUEFfTkFNRVJFR19DQVJELCBjLCBkYXRhLT5uYW1lcmVnX2ZhaWwpKSkgewotICAgICAgICAgcGFfeGZyZWUoYyk7Ci1AQCAtMTU2LDEyICsxNTcsNiBAQCBwYV9jYXJkICpwYV9jYXJkX25ldyhwYV9jb3JlICpjb3JlLCBwYV9jYXJkX25ld19kYXRhICpkYXRhKSB7Ci0gCi0gICAgIHBhX2NhcmRfbmV3X2RhdGFfc2V0X25hbWUoZGF0YSwgbmFtZSk7Ci0gCi0tICAgIGlmIChwYV9ob29rX2ZpcmUoJmNvcmUtPmhvb2tzW1BBX0NPUkVfSE9PS19DQVJEX05FV10sIGRhdGEpIDwgMCkgewotLSAgICAgICAgcGFfeGZyZWUoYyk7Ci0tICAgICAgICBwYV9uYW1lcmVnX3VucmVnaXN0ZXIoY29yZSwgbmFtZSk7Ci0tICAgICAgICByZXR1cm4gTlVMTDsKLS0gICAgfQotLQotICAgICBjLT5jb3JlID0gY29yZTsKLSAgICAgYy0+bmFtZSA9IHBhX3hzdHJkdXAoZGF0YS0+bmFtZSk7Ci0gICAgIGMtPnByb3BsaXN0ID0gcGFfcHJvcGxpc3RfY29weShkYXRhLT5wcm9wbGlzdCk7Ci1AQCAtMTg0LDM4ICsxNzksNDMgQEAgcGFfY2FyZCAqcGFfY2FyZF9uZXcocGFfY29yZSAqY29yZSwgcGFfY2FyZF9uZXdfZGF0YSAqZGF0YSkgewotICAgICBQQV9IQVNITUFQX0ZPUkVBQ0gocG9ydCwgYy0+cG9ydHMsIHN0YXRlKQotICAgICAgICAgcG9ydC0+Y2FyZCA9IGM7CitAQCAtMTc2LDM4ICsxNzYsNTYgQEAgcGFfY2FyZCAqcGFfY2FyZF9uZXcocGFfY29yZSAqY29yZSwgcGFfY2FyZF9uZXdfZGF0YSAqZGF0YSkgeworICAgICBjLT5wcmVmZXJyZWRfaW5wdXRfcG9ydCA9IGRhdGEtPnByZWZlcnJlZF9pbnB1dF9wb3J0OworICAgICBjLT5wcmVmZXJyZWRfb3V0cHV0X3BvcnQgPSBkYXRhLT5wcmVmZXJyZWRfb3V0cHV0X3BvcnQ7CiAgCiAtICAgIGlmIChkYXRhLT5hY3RpdmVfcHJvZmlsZSkKIC0gICAgICAgIGlmICgoYy0+YWN0aXZlX3Byb2ZpbGUgPSBwYV9oYXNobWFwX2dldChjLT5wcm9maWxlcywgZGF0YS0+YWN0aXZlX3Byb2ZpbGUpKSkKQEAgLTI1Miw1MCArMjczLDg1IEBACiAtICAgICAgICAgICAgUEFfSEFTSE1BUF9GT1JFQUNIKHByb2ZpbGUsIGMtPnByb2ZpbGVzLCBzdGF0ZSkKIC0gICAgICAgICAgICAgICAgaWYgKCFjLT5hY3RpdmVfcHJvZmlsZSB8fCBwcm9maWxlLT5wcmlvcml0eSA+IGMtPmFjdGl2ZV9wcm9maWxlLT5wcmlvcml0eSkKIC0gICAgICAgICAgICAgICAgICAgIGMtPmFjdGl2ZV9wcm9maWxlID0gcHJvZmlsZTsKLS0gICAgICAgIH0KLS0gICAgICAgIHBhX2Fzc2VydChjLT5hY3RpdmVfcHJvZmlsZSk7Ci0rdm9pZCBwYV9jYXJkX3B1dChwYV9jYXJkICpjYXJkKSB7Cisrdm9pZCBwYV9jYXJkX2Nob29zZV9pbml0aWFsX3Byb2ZpbGUocGFfY2FyZCAqY2FyZCkgewogKyAgICBwYV9jYXJkX3Byb2ZpbGUgKnByb2ZpbGU7CiArICAgIHZvaWQgKnN0YXRlOworKyAgICBwYV9jYXJkX3Byb2ZpbGUgKmJlc3QgPSBOVUxMOwogKwogKyAgICBwYV9hc3NlcnQoY2FyZCk7CiArCisrICAgIC8qIEJ5IGRlZmF1bHQsIHBpY2sgdGhlIGhpZ2hlc3QgcHJpb3JpdHkgcHJvZmlsZSB0aGF0IGlzIG5vdCB1bmF2YWlsYWJsZSwKKysgICAgICogb3IgaWYgYWxsIHByb2ZpbGVzIGFyZSB1bmF2YWlsYWJsZSwgcGljayB0aGUgcHJvZmlsZSB3aXRoIHRoZSBoaWdoZXN0CisrICAgICAqIHByaW9yaXR5IHJlZ2FyZGxlc3Mgb2YgaXRzIGF2YWlsYWJpbGl0eS4gKi8KKysKICsgICAgUEFfSEFTSE1BUF9GT1JFQUNIKHByb2ZpbGUsIGNhcmQtPnByb2ZpbGVzLCBzdGF0ZSkgewogKyAgICAgICAgaWYgKHByb2ZpbGUtPmF2YWlsYWJsZSA9PSBQQV9BVkFJTEFCTEVfTk8pCiArICAgICAgICAgICAgY29udGludWU7CiArCi0rICAgICAgICBpZiAoIWNhcmQtPmFjdGl2ZV9wcm9maWxlIHx8IHByb2ZpbGUtPnByaW9yaXR5ID4gY2FyZC0+YWN0aXZlX3Byb2ZpbGUtPnByaW9yaXR5KQotKyAgICAgICAgICAgIGNhcmQtPmFjdGl2ZV9wcm9maWxlID0gcHJvZmlsZTsKKysgICAgICAgIGlmICghYmVzdCB8fCBwcm9maWxlLT5wcmlvcml0eSA+IGJlc3QtPnByaW9yaXR5KQorKyAgICAgICAgICAgIGJlc3QgPSBwcm9maWxlOworKyAgICB9CisrCisrICAgIGlmICghYmVzdCkgeworKyAgICAgICAgUEFfSEFTSE1BUF9GT1JFQUNIKHByb2ZpbGUsIGNhcmQtPnByb2ZpbGVzLCBzdGF0ZSkgeworKyAgICAgICAgICAgIGlmICghYmVzdCB8fCBwcm9maWxlLT5wcmlvcml0eSA+IGJlc3QtPnByaW9yaXR5KQorKyAgICAgICAgICAgICAgICBiZXN0ID0gcHJvZmlsZTsKKyAgICAgICAgIH0KKy0gICAgICAgIHBhX2Fzc2VydChjLT5hY3RpdmVfcHJvZmlsZSk7CiAgICAgIH0KKysgICAgcGFfYXNzZXJ0KGJlc3QpOwogIAogLSAgICBwYV9kZXZpY2VfaW5pdF9kZXNjcmlwdGlvbihjLT5wcm9wbGlzdCwgYyk7CiAtICAgIHBhX2RldmljZV9pbml0X2ljb24oYy0+cHJvcGxpc3QsIHRydWUpOwogLSAgICBwYV9kZXZpY2VfaW5pdF9pbnRlbmRlZF9yb2xlcyhjLT5wcm9wbGlzdCk7Ci0rICAgIC8qIElmIGFsbCBwcm9maWxlcyBhcmUgdW5hdmFpbGFibGUsIHRoZW4gd2Ugc3RpbGwgbmVlZCB0byBwaWNrIG9uZSAqLwotKyAgICBpZiAoIWNhcmQtPmFjdGl2ZV9wcm9maWxlKSB7Ci0rICAgICAgICBQQV9IQVNITUFQX0ZPUkVBQ0gocHJvZmlsZSwgY2FyZC0+cHJvZmlsZXMsIHN0YXRlKQotKyAgICAgICAgICAgIGlmICghY2FyZC0+YWN0aXZlX3Byb2ZpbGUgfHwgcHJvZmlsZS0+cHJpb3JpdHkgPiBjYXJkLT5hY3RpdmVfcHJvZmlsZS0+cHJpb3JpdHkpCi0rICAgICAgICAgICAgICAgIGNhcmQtPmFjdGl2ZV9wcm9maWxlID0gcHJvZmlsZTsKLSsgICAgfQotKyAgICBwYV9hc3NlcnQoY2FyZC0+YWN0aXZlX3Byb2ZpbGUpOworKyAgICBjYXJkLT5hY3RpdmVfcHJvZmlsZSA9IGJlc3Q7CisrICAgIGNhcmQtPnNhdmVfcHJvZmlsZSA9IGZhbHNlOwogIAogLSAgICBwYV9hc3NlcnRfc2UocGFfaWR4c2V0X3B1dChjb3JlLT5jYXJkcywgYywgJmMtPmluZGV4KSA+PSAwKTsKLSsgICAgcGFfaG9va19maXJlKCZjYXJkLT5jb3JlLT5ob29rc1tQQV9DT1JFX0hPT0tfQ0FSRF9ORVddLCBjYXJkKTsKKysgICAgLyogTGV0IHBvbGljeSBtb2R1bGVzIG92ZXJyaWRlIHRoZSBkZWZhdWx0LiAqLworKyAgICBwYV9ob29rX2ZpcmUoJmNhcmQtPmNvcmUtPmhvb2tzW1BBX0NPUkVfSE9PS19DQVJEX0NIT09TRV9JTklUSUFMX1BST0ZJTEVdLCBjYXJkKTsKKyt9CiAgCiAtICAgIHBhX2xvZ19pbmZvKCJDcmVhdGVkICV1IFwiJXNcIiIsIGMtPmluZGV4LCBjLT5uYW1lKTsKIC0gICAgcGFfc3Vic2NyaXB0aW9uX3Bvc3QoY29yZSwgUEFfU1VCU0NSSVBUSU9OX0VWRU5UX0NBUkR8UEFfU1VCU0NSSVBUSU9OX0VWRU5UX05FVywgYy0+aW5kZXgpOwotKyAgICBwYV9hc3NlcnRfc2UocGFfaWR4c2V0X3B1dChjYXJkLT5jb3JlLT5jYXJkcywgY2FyZCwgJmNhcmQtPmluZGV4KSA+PSAwKTsKLSsgICAgY2FyZC0+c3RhdGUgPSBQQV9DQVJEX1NUQVRFX0xJTktFRDsKKyt2b2lkIHBhX2NhcmRfcHV0KHBhX2NhcmQgKmNhcmQpIHsKKysgICAgcGFfYXNzZXJ0KGNhcmQpOwogIAogLSAgICBwYV9ob29rX2ZpcmUoJmNvcmUtPmhvb2tzW1BBX0NPUkVfSE9PS19DQVJEX1BVVF0sIGMpOwogLSAgICByZXR1cm4gYzsKKysgICAgcGFfYXNzZXJ0X3NlKHBhX2lkeHNldF9wdXQoY2FyZC0+Y29yZS0+Y2FyZHMsIGNhcmQsICZjYXJkLT5pbmRleCkgPj0gMCk7CisrICAgIGNhcmQtPmxpbmtlZCA9IHRydWU7CisrCiArICAgIHBhX2xvZ19pbmZvKCJDcmVhdGVkICV1IFwiJXNcIiIsIGNhcmQtPmluZGV4LCBjYXJkLT5uYW1lKTsKICsgICAgcGFfaG9va19maXJlKCZjYXJkLT5jb3JlLT5ob29rc1tQQV9DT1JFX0hPT0tfQ0FSRF9QVVRdLCBjYXJkKTsKICsgICAgcGFfc3Vic2NyaXB0aW9uX3Bvc3QoY2FyZC0+Y29yZSwgUEFfU1VCU0NSSVBUSU9OX0VWRU5UX0NBUkR8UEFfU1VCU0NSSVBUSU9OX0VWRU5UX05FVywgY2FyZC0+aW5kZXgpOwogIH0KICAKICB2b2lkIHBhX2NhcmRfZnJlZShwYV9jYXJkICpjKSB7Ci1AQCAtMzA2LDIwICszMDYsMjcgQEAgaW50IHBhX2NhcmRfc2V0X3Byb2ZpbGUocGFfY2FyZCAqYywgcGFfY2FyZF9wcm9maWxlICpwcm9maWxlLCBib29sIHNhdmUpIHsKK0BAIC0yMTgsMTUgKzIzNiwxNSBAQCB2b2lkIHBhX2NhcmRfZnJlZShwYV9jYXJkICpjKSB7CisgCisgICAgIGNvcmUgPSBjLT5jb3JlOworIAorLSAgICBwYV9ob29rX2ZpcmUoJmNvcmUtPmhvb2tzW1BBX0NPUkVfSE9PS19DQVJEX1VOTElOS10sIGMpOworLQorLSAgICBwYV9uYW1lcmVnX3VucmVnaXN0ZXIoY29yZSwgYy0+bmFtZSk7CistCistICAgIHBhX2lkeHNldF9yZW1vdmVfYnlfZGF0YShjLT5jb3JlLT5jYXJkcywgYywgTlVMTCk7CisrICAgIGlmIChjLT5saW5rZWQpIHsKKysgICAgICAgIHBhX2hvb2tfZmlyZSgmY29yZS0+aG9va3NbUEFfQ09SRV9IT09LX0NBUkRfVU5MSU5LXSwgYyk7CisgCistICAgIHBhX2xvZ19pbmZvKCJGcmVlZCAldSBcIiVzXCIiLCBjLT5pbmRleCwgYy0+bmFtZSk7CisrICAgICAgICBwYV9pZHhzZXRfcmVtb3ZlX2J5X2RhdGEoYy0+Y29yZS0+Y2FyZHMsIGMsIE5VTEwpOworKyAgICAgICAgcGFfbG9nX2luZm8oIkZyZWVkICV1IFwiJXNcIiIsIGMtPmluZGV4LCBjLT5uYW1lKTsKKysgICAgICAgIHBhX3N1YnNjcmlwdGlvbl9wb3N0KGMtPmNvcmUsIFBBX1NVQlNDUklQVElPTl9FVkVOVF9DQVJEfFBBX1NVQlNDUklQVElPTl9FVkVOVF9SRU1PVkUsIGMtPmluZGV4KTsKKysgICAgfQorIAorLSAgICBwYV9zdWJzY3JpcHRpb25fcG9zdChjLT5jb3JlLCBQQV9TVUJTQ1JJUFRJT05fRVZFTlRfQ0FSRHxQQV9TVUJTQ1JJUFRJT05fRVZFTlRfUkVNT1ZFLCBjLT5pbmRleCk7CisrICAgIHBhX25hbWVyZWdfdW5yZWdpc3Rlcihjb3JlLCBjLT5uYW1lKTsKKyAKKyAgICAgcGFfYXNzZXJ0KHBhX2lkeHNldF9pc2VtcHR5KGMtPnNpbmtzKSk7CisgICAgIHBhX2lkeHNldF9mcmVlKGMtPnNpbmtzLCBOVUxMKTsKK0BAIC0yOTgsMjAgKzMxNiwyNyBAQCBpbnQgcGFfY2FyZF9zZXRfcHJvZmlsZShwYV9jYXJkICpjLCBwYV9jYXJkX3Byb2ZpbGUgKnByb2ZpbGUsIGJvb2wgc2F2ZSkgewogICAgICAgICAgcmV0dXJuIDA7CiAgICAgIH0KICAKQEAgLTMwNyw3ICszNjMsNyBAQAogKyAgICAgKiBiZSBwcm9iYWJseSBnb29kIHRvIGNoYW5nZSB0aGlzIHNvIHRoYXQgYWxzbyB0aGUgaW5pdGlhbCBwcm9maWxlIGNhbiBiZQogKyAgICAgKiBzZXQgdXAgaW4gc2V0X3Byb2ZpbGUoKSwgYnV0IGlmIHNldF9wcm9maWxlKCkgZmFpbHMsIHRoYXQgd291bGQgbmVlZAogKyAgICAgKiBzb21lIGJldHRlciBoYW5kbGluZyB0aGFuIHdoYXQgd2UgZG8gaGVyZSBjdXJyZW50bHkuICovCi0rICAgIGlmIChjLT5zdGF0ZSAhPSBQQV9DQVJEX1NUQVRFX0lOSVQgJiYgKHIgPSBjLT5zZXRfcHJvZmlsZShjLCBwcm9maWxlKSkgPCAwKQorKyAgICBpZiAoYy0+bGlua2VkICYmIChyID0gYy0+c2V0X3Byb2ZpbGUoYywgcHJvZmlsZSkpIDwgMCkKICAgICAgICAgIHJldHVybiByOwogIAogLSAgICBwYV9zdWJzY3JpcHRpb25fcG9zdChjLT5jb3JlLCBQQV9TVUJTQ1JJUFRJT05fRVZFTlRfQ0FSRHxQQV9TVUJTQ1JJUFRJT05fRVZFTlRfQ0hBTkdFLCBjLT5pbmRleCk7CkBAIC0zMjEsNyArMzc3LDcgQEAKICAgICAgICAgIHVwZGF0ZV9wb3J0X3ByZWZlcnJlZF9wcm9maWxlKGMpOwogIAogLSAgICBwYV9ob29rX2ZpcmUoJmMtPmNvcmUtPmhvb2tzW1BBX0NPUkVfSE9PS19DQVJEX1BST0ZJTEVfQ0hBTkdFRF0sIGMpOwotKyAgICBpZiAoYy0+c3RhdGUgIT0gUEFfQ0FSRF9TVEFURV9JTklUKSB7CisrICAgIGlmIChjLT5saW5rZWQpIHsKICsgICAgICAgIHBhX2xvZ19pbmZvKCJDaGFuZ2VkIHByb2ZpbGUgb2YgY2FyZCAldSBcIiVzXCIgdG8gJXMiLCBjLT5pbmRleCwgYy0+bmFtZSwgcHJvZmlsZS0+bmFtZSk7CiArICAgICAgICBwYV9ob29rX2ZpcmUoJmMtPmNvcmUtPmhvb2tzW1BBX0NPUkVfSE9PS19DQVJEX1BST0ZJTEVfQ0hBTkdFRF0sIGMpOwogKyAgICAgICAgcGFfc3Vic2NyaXB0aW9uX3Bvc3QoYy0+Y29yZSwgUEFfU1VCU0NSSVBUSU9OX0VWRU5UX0NBUkR8UEFfU1VCU0NSSVBUSU9OX0VWRU5UX0NIQU5HRSwgYy0+aW5kZXgpOwpAQCAtMzMwLDM3ICszODYsNDQgQEAKICAgICAgcmV0dXJuIDA7CiAgfQogZGlmZiAtLWdpdCBhL3NyYy9wdWxzZWNvcmUvY2FyZC5oIGIvc3JjL3B1bHNlY29yZS9jYXJkLmgKLWluZGV4IGZmZjkwNTcuLmE5NDQzMDEgMTAwNjQ0CitpbmRleCBkNDk3MGUzLi5mZDFmZTBhIDEwMDY0NAogLS0tIGEvc3JjL3B1bHNlY29yZS9jYXJkLmgKICsrKyBiL3NyYy9wdWxzZWNvcmUvY2FyZC5oCi1AQCAtMzQsNiArMzQsMTEgQEAgdHlwZWRlZiBlbnVtIHBhX2F2YWlsYWJsZSB7Ci0gICAgIFBBX0FWQUlMQUJMRV9ZRVMgPSAyLAotIH0gcGFfYXZhaWxhYmxlX3Q7CitAQCAtODYsNiArODYsOCBAQCBzdHJ1Y3QgcGFfY2FyZCB7CiAgCi0rdHlwZWRlZiBlbnVtIHBhX2NhcmRfc3RhdGUgewotKyAgICBQQV9DQVJEX1NUQVRFX0lOSVQsCi0rICAgIFBBX0NBUkRfU1RBVEVfTElOS0VELAotK30gcGFfY2FyZF9zdGF0ZV90OworICAgICBwYV9zdXNwZW5kX2NhdXNlX3Qgc3VzcGVuZF9jYXVzZTsKKyAKKysgICAgYm9vbCBsaW5rZWQ7CiArCi0gc3RydWN0IHBhX2NhcmRfcHJvZmlsZSB7Ci0gICAgIHBhX2NhcmQgKmNhcmQ7Ci0gICAgIGNoYXIgKm5hbWU7Ci1AQCAtNjYsNiArNzEsNyBAQCBzdHJ1Y3QgcGFfY2FyZF9wcm9maWxlIHsKKyAgICAgdm9pZCAqdXNlcmRhdGE7CiAgCi0gc3RydWN0IHBhX2NhcmQgewotICAgICB1aW50MzJfdCBpbmRleDsKLSsgICAgcGFfY2FyZF9zdGF0ZV90IHN0YXRlOwotICAgICBwYV9jb3JlICpjb3JlOwotIAotICAgICBjaGFyICpuYW1lOwotQEAgLTEyMCw2ICsxMjYsNyBAQCB2b2lkIHBhX2NhcmRfbmV3X2RhdGFfc2V0X3Byb2ZpbGUocGFfY2FyZF9uZXdfZGF0YSAqZGF0YSwgY29uc3QgY2hhciAqcHJvZmlsZSk7CisgICAgIGludCAoKnNldF9wcm9maWxlKShwYV9jYXJkICpjLCBwYV9jYXJkX3Byb2ZpbGUgKnByb2ZpbGUpOworQEAgLTEyOCw2ICsxMzAsMTMgQEAgdm9pZCBwYV9jYXJkX25ld19kYXRhX3NldF9wcmVmZXJyZWRfcG9ydChwYV9jYXJkX25ld19kYXRhICpkYXRhLCBwYV9kaXJlY3Rpb25fdAogIHZvaWQgcGFfY2FyZF9uZXdfZGF0YV9kb25lKHBhX2NhcmRfbmV3X2RhdGEgKmRhdGEpOwogIAogIHBhX2NhcmQgKnBhX2NhcmRfbmV3KHBhX2NvcmUgKmMsIHBhX2NhcmRfbmV3X2RhdGEgKmRhdGEpOworKworKy8qIFNlbGVjdCB0aGUgaW5pdGlhbCBjYXJkIHByb2ZpbGUgYWNjb3JkaW5nIHRvIHRoZSBjb25maWd1cmVkIHBvbGljaWVzLiBUaGlzCisrICogbXVzdCBiZSBjYWxsZWQgYmV0d2VlbiBwYV9jYXJkX25ldygpIGFuZCBwYV9jYXJkX3B1dCgpLCBhZnRlciB0aGUgcG9ydCBhbmQKKysgKiBwcm9maWxlIGF2YWlsYWJsaXRpZXMgaGF2ZSBiZWVuIGluaXRpYWxpemVkLiAqLworK3ZvaWQgcGFfY2FyZF9jaG9vc2VfaW5pdGlhbF9wcm9maWxlKHBhX2NhcmQgKmNhcmQpOworKwogK3ZvaWQgcGFfY2FyZF9wdXQocGFfY2FyZCAqYyk7CiAgdm9pZCBwYV9jYXJkX2ZyZWUocGFfY2FyZCAqYyk7CiAgCiAgdm9pZCBwYV9jYXJkX2FkZF9wcm9maWxlKHBhX2NhcmQgKmMsIHBhX2NhcmRfcHJvZmlsZSAqcHJvZmlsZSk7CitkaWZmIC0tZ2l0IGEvc3JjL3B1bHNlY29yZS9jb3JlLmggYi9zcmMvcHVsc2Vjb3JlL2NvcmUuaAoraW5kZXggMDBkN2YyZi4uODAyMTExYiAxMDA2NDQKKy0tLSBhL3NyYy9wdWxzZWNvcmUvY29yZS5oCisrKysgYi9zcmMvcHVsc2Vjb3JlL2NvcmUuaAorQEAgLTExOCw2ICsxMTgsNyBAQCB0eXBlZGVmIGVudW0gcGFfY29yZV9ob29rIHsKKyAgICAgUEFfQ09SRV9IT09LX0NMSUVOVF9QUk9QTElTVF9DSEFOR0VELAorICAgICBQQV9DT1JFX0hPT0tfQ0xJRU5UX1NFTkRfRVZFTlQsCisgICAgIFBBX0NPUkVfSE9PS19DQVJEX05FVywKKysgICAgUEFfQ09SRV9IT09LX0NBUkRfQ0hPT1NFX0lOSVRJQUxfUFJPRklMRSwKKyAgICAgUEFfQ09SRV9IT09LX0NBUkRfUFVULAorICAgICBQQV9DT1JFX0hPT0tfQ0FSRF9VTkxJTkssCisgICAgIFBBX0NPUkVfSE9PS19DQVJEX1BSRUZFUlJFRF9QT1JUX0NIQU5HRUQsCiAtLSAKLTIuNy4wCisyLjguMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLzAwMDQtYWxzYS1zZXQtYXZhaWxhYmlsaXR5LWZvci1zb21lLXVuYXZhaWxhYmxlLXByb2ZpbGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby8wMDA0LWFsc2Etc2V0LWF2YWlsYWJpbGl0eS1mb3Itc29tZS11bmF2YWlsYWJsZS1wcm9maWxlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTBlZmE3MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLzAwMDQtYWxzYS1zZXQtYXZhaWxhYmlsaXR5LWZvci1zb21lLXVuYXZhaWxhYmxlLXByb2ZpbGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotRnJvbSA2OTBkNTY3ZTI5OGY2Njg3YjYxYzgyNjYwYjA1MWRmNWIyNTQ4MmVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgotRGF0ZTogRnJpLCAyMyBPY3QgMjAxNSAxMzozNzoxMSArMDMwMAotU3ViamVjdDogW1BBVENIIDQvNF0gYWxzYTogc2V0IGF2YWlsYWJpbGl0eSBmb3IgKHNvbWUpIHVuYXZhaWxhYmxlIHByb2ZpbGVzCi0KLVRoZSBhbHNhIGNhcmQgaGFzbid0IHNvIGZhciBzZXQgYW55IGF2YWlsYWJpbGl0eSBmb3IgcHJvZmlsZXMuIFRoYXQKLWNhdXNlZCBhbiBpc3N1ZSB3aXRoIHNvbWUgSERNSSBoYXJkd2FyZTogdGhlIHNvdW5kIGNhcmQgaGFzIHR3byBIRE1JCi1vdXRwdXRzLCBidXQgb25seSB0aGUgc2Vjb25kIG9mIHRoZW0gaXMgYWN0dWFsbHkgdXNhYmxlLiBUaGUKLXVuYXZhaWxhYmxlIHBvcnQgaXMgbWFya2VkIGFzIHVuYXZhaWxhYmxlIGFuZCB0aGUgYXZhaWxhYmxlIHBvcnQgaXMKLW1hcmtlZCBhcyBhdmFpbGFibGUsIGJ1dCB0aGlzIGluZm9ybWF0aW9uIGlzbid0IHByb3BhZ2F0ZWQgdG8gdGhlCi1wcm9maWxlIGF2YWlsYWJpbGl0eS4gV2l0aG91dCBwcm9maWxlIGF2YWlsYWJpbGl0eSBpbmZvcm1hdGlvbiwgdGhlCi1pbml0aWFsIHByb2ZpbGUgcG9saWN5IHBpY2tzIHRoZSB1bmF2YWlsYWJsZSBvbmUsIHNpbmNlIGl0IGhhcyBhCi1oaWdoZXIgcHJpb3JpdHkgdmFsdWUuCi0KLVRoaXMgcGF0Y2ggYWRkcyBzaW1wbGUgbG9naWMgZm9yIG1hcmtpbmcgc29tZSBwcm9maWxlcyB1bmF2YWlsYWJsZToKLWlmIHRoZSBwcm9maWxlIG9ubHkgY29udGFpbnMgdW5hdmFpbGFibGUgcG9ydHMsIHRoZSBwcm9maWxlIGlzCi11bmF2YWlsYWJsZSB0b28uIFRoaXMgY2FuIGJlIGltcHJvdmVkIGluIHRoZSBmdXR1cmUgc28gdGhhdCBpZiBhCi1wcm9maWxlIGNvbnRhaW5zIHNpbmtzIG9yIHNvdXJjZXMgdGhhdCBvbmx5IGNvbnRhaW4gdW5hdmFpbGFibGUgcG9ydHMsCi10aGUgcHJvZmlsZSBzaG91bGQgYmUgbWFya2VkIGFzIHVuYXZhaWxhYmxlLiBJbXBsZW1lbnRpbmcgdGhhdAotcmVxdWlyZXMgYWRkaW5nIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNpbmtzIGFuZCBzb3VyY2VzIHRvCi1wYV9jYXJkX3Byb2ZpbGUsIGhvd2V2ZXIuCi0KLUJ1Z0xpbms6IGh0dHBzOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ0OAotCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotCi1SZWJhc2VkIG9uIDguMC4KLQotVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQgW1RoZSBwYXRjaCBzZXQgbmVlZHMgc29tZSB3b3JrIHRvIGJlIGFjY2VwdGVkLgotVGhlIHJldmlldyB0aHJlYWQ6Ci1odHRwOi8vdGhyZWFkLmdtYW5lLm9yZy9nbWFuZS5jb21wLmF1ZGlvLnB1bHNlYXVkaW8uZ2VuZXJhbC8yNDMwMV0KLQotU2lnbmVkLW9mZi1ieTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgotLS0tCi0gc3JjL21vZHVsZXMvYWxzYS9tb2R1bGUtYWxzYS1jYXJkLmMgfCAyNSArKysrKysrKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy9tb2R1bGVzL2Fsc2EvbW9kdWxlLWFsc2EtY2FyZC5jIGIvc3JjL21vZHVsZXMvYWxzYS9tb2R1bGUtYWxzYS1jYXJkLmMKLWluZGV4IGZlMjQwZjAuLmJkYmRjMTIgMTAwNjQ0Ci0tLS0gYS9zcmMvbW9kdWxlcy9hbHNhL21vZHVsZS1hbHNhLWNhcmQuYwotKysrIGIvc3JjL21vZHVsZXMvYWxzYS9tb2R1bGUtYWxzYS1jYXJkLmMKLUBAIC0zNjYsNiArMzY2LDggQEAgc3RhdGljIGludCByZXBvcnRfamFja19zdGF0ZShzbmRfbWl4ZXJfZWxlbV90ICptZWxlbSwgdW5zaWduZWQgaW50IG1hc2spIHsKLSAgICAgdm9pZCAqc3RhdGU7Ci0gICAgIHBhX2Fsc2FfamFjayAqamFjazsKLSAgICAgc3RydWN0IHRlbXBfcG9ydF9hdmFpbCAqdHAsICp0cG9ydHM7Ci0rICAgIHBhX2RldmljZV9wb3J0ICpwb3J0OwotKyAgICBwYV9jYXJkX3Byb2ZpbGUgKnByb2ZpbGU7Ci0gCi0gICAgIHBhX2Fzc2VydCh1KTsKLSAKLUBAIC00MTIsNiArNDE0LDI5IEBAIHN0YXRpYyBpbnQgcmVwb3J0X2phY2tfc3RhdGUoc25kX21peGVyX2VsZW1fdCAqbWVsZW0sIHVuc2lnbmVkIGludCBtYXNrKSB7Ci0gICAgICAgICAgICBwYV9kZXZpY2VfcG9ydF9zZXRfYXZhaWxhYmxlKHRwLT5wb3J0LCB0cC0+YXZhaWwpOwotIAotICAgICBwYV94ZnJlZSh0cG9ydHMpOwotKwotKyAgICAvKiBVcGRhdGUgcHJvZmlsZSBhdmFpbGFiaWxpdGllcy4gVGhlIGxvZ2ljIGNvdWxkIGJlIGltcHJvdmVkOyBmb3Igbm93IHdlCi0rICAgICAqIG9ubHkgc2V0IG9idmlvdXNseSB1bmF2YWlsYWJsZSBwcm9maWxlcyAodGhvc2UgdGhhdCBjb250YWluIG9ubHkKLSsgICAgICogdW5hdmFpbGFibGUgcG9ydHMpIHRvIFBBX0FWQUlMQUJMRV9OTyBhbmQgYWxsIG90aGVycyB0bwotKyAgICAgKiBQQV9BVkFJTEFCTEVfVU5LTk9XTi4gKi8KLSsgICAgUEFfSEFTSE1BUF9GT1JFQUNIKHByb2ZpbGUsIHUtPmNhcmQtPnByb2ZpbGVzLCBzdGF0ZSkgewotKyAgICAgICAgdm9pZCAqc3RhdGUyOwotKyAgICAgICAgcGFfYXZhaWxhYmxlX3QgYXZhaWxhYmxlID0gUEFfQVZBSUxBQkxFX05POwotKwotKyAgICAgICAgLyogRG9uJ3QgdG91Y2ggdGhlICJvZmYiIHByb2ZpbGUuICovCi0rICAgICAgICBpZiAocGFfaGFzaG1hcF9zaXplKHByb2ZpbGUtPnBvcnRzKSA9PSAwKQotKyAgICAgICAgICAgIGNvbnRpbnVlOwotKwotKyAgICAgICAgUEFfSEFTSE1BUF9GT1JFQUNIKHBvcnQsIHByb2ZpbGUtPnBvcnRzLCBzdGF0ZTIpIHsKLSsgICAgICAgICAgICBpZiAocG9ydC0+YXZhaWxhYmxlICE9IFBBX0FWQUlMQUJMRV9OTykgewotKyAgICAgICAgICAgICAgICBhdmFpbGFibGUgPSBQQV9BVkFJTEFCTEVfVU5LTk9XTjsKLSsgICAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgfQotKwotKyAgICAgICAgcGFfY2FyZF9wcm9maWxlX3NldF9hdmFpbGFibGUocHJvZmlsZSwgYXZhaWxhYmxlKTsKLSsgICAgfQotKwotICAgICByZXR1cm4gMDsKLSB9Ci0gCi0tLSAKLTIuNy4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vMDAwNC1jYXJkLXJlbW92ZS1wYV9jYXJkX25ld19kYXRhLmFjdGl2ZV9wcm9maWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby8wMDA0LWNhcmQtcmVtb3ZlLXBhX2NhcmRfbmV3X2RhdGEuYWN0aXZlX3Byb2ZpbGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDgwZjJjZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vMDAwNC1jYXJkLXJlbW92ZS1wYV9jYXJkX25ld19kYXRhLmFjdGl2ZV9wcm9maWxlLnBhdGNoCkBAIC0wLDAgKzEsNzIgQEAKK0Zyb20gMzc1YmM1NmZkM2Q2NmY0MGE5NjUwMjI0ZTViZmVhNDAwMjQ5NGFkZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4KK0RhdGU6IEZyaSwgMjMgT2N0IDIwMTUgMTM6NTA6MzUgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSCA0LzVdIGNhcmQ6IHJlbW92ZSBwYV9jYXJkX25ld19kYXRhLmFjdGl2ZV9wcm9maWxlCisKK0l0J3Mgbm90IGJlaW5nIHVzZWQgYW55IG1vcmUuCisKK1Vwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQgW2V4cGVjdGVkIGluIDEwLjBdCisKK1NpZ25lZC1vZmYtYnk6IFRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4KKy0tLQorIHNyYy9wdWxzZWNvcmUvY2FyZC5jIHwgOCAtLS0tLS0tLQorIHNyYy9wdWxzZWNvcmUvY2FyZC5oIHwgNSAtLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMTMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvcHVsc2Vjb3JlL2NhcmQuYyBiL3NyYy9wdWxzZWNvcmUvY2FyZC5jCitpbmRleCBhMGMzZDkzLi5iYzViNzViIDEwMDY0NAorLS0tIGEvc3JjL3B1bHNlY29yZS9jYXJkLmMKKysrKyBiL3NyYy9wdWxzZWNvcmUvY2FyZC5jCitAQCAtOTYsMTMgKzk2LDYgQEAgdm9pZCBwYV9jYXJkX25ld19kYXRhX3NldF9uYW1lKHBhX2NhcmRfbmV3X2RhdGEgKmRhdGEsIGNvbnN0IGNoYXIgKm5hbWUpIHsKKyAgICAgZGF0YS0+bmFtZSA9IHBhX3hzdHJkdXAobmFtZSk7CisgfQorIAorLXZvaWQgcGFfY2FyZF9uZXdfZGF0YV9zZXRfcHJvZmlsZShwYV9jYXJkX25ld19kYXRhICpkYXRhLCBjb25zdCBjaGFyICpwcm9maWxlKSB7CistICAgIHBhX2Fzc2VydChkYXRhKTsKKy0KKy0gICAgcGFfeGZyZWUoZGF0YS0+YWN0aXZlX3Byb2ZpbGUpOworLSAgICBkYXRhLT5hY3RpdmVfcHJvZmlsZSA9IHBhX3hzdHJkdXAocHJvZmlsZSk7CistfQorLQorIHZvaWQgcGFfY2FyZF9uZXdfZGF0YV9zZXRfcHJlZmVycmVkX3BvcnQocGFfY2FyZF9uZXdfZGF0YSAqZGF0YSwgcGFfZGlyZWN0aW9uX3QgZGlyZWN0aW9uLCBwYV9kZXZpY2VfcG9ydCAqcG9ydCkgeworICAgICBwYV9hc3NlcnQoZGF0YSk7CisgCitAQCAtMTI1LDcgKzExOCw2IEBAIHZvaWQgcGFfY2FyZF9uZXdfZGF0YV9kb25lKHBhX2NhcmRfbmV3X2RhdGEgKmRhdGEpIHsKKyAgICAgICAgIHBhX2hhc2htYXBfZnJlZShkYXRhLT5wb3J0cyk7CisgCisgICAgIHBhX3hmcmVlKGRhdGEtPm5hbWUpOworLSAgICBwYV94ZnJlZShkYXRhLT5hY3RpdmVfcHJvZmlsZSk7CisgfQorIAorIHBhX2NhcmQgKnBhX2NhcmRfbmV3KHBhX2NvcmUgKmNvcmUsIHBhX2NhcmRfbmV3X2RhdGEgKmRhdGEpIHsKK2RpZmYgLS1naXQgYS9zcmMvcHVsc2Vjb3JlL2NhcmQuaCBiL3NyYy9wdWxzZWNvcmUvY2FyZC5oCitpbmRleCBmZDFmZTBhLi41Njk5NDc1IDEwMDY0NAorLS0tIGEvc3JjL3B1bHNlY29yZS9jYXJkLmgKKysrKyBiL3NyYy9wdWxzZWNvcmUvY2FyZC5oCitAQCAtMTAxLDE1ICsxMDEsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgcGFfY2FyZF9uZXdfZGF0YSB7CisgICAgIHBhX21vZHVsZSAqbW9kdWxlOworIAorICAgICBwYV9oYXNobWFwICpwcm9maWxlczsKKy0gICAgY2hhciAqYWN0aXZlX3Byb2ZpbGU7CistCisgICAgIHBhX2hhc2htYXAgKnBvcnRzOworICAgICBwYV9kZXZpY2VfcG9ydCAqcHJlZmVycmVkX2lucHV0X3BvcnQ7CisgICAgIHBhX2RldmljZV9wb3J0ICpwcmVmZXJyZWRfb3V0cHV0X3BvcnQ7CisgCisgICAgIGJvb2wgbmFtZXJlZ19mYWlsOjE7CistCistICAgIGJvb2wgc2F2ZV9wcm9maWxlOjE7CisgfSBwYV9jYXJkX25ld19kYXRhOworIAorIHR5cGVkZWYgc3RydWN0IHsKK0BAIC0xMjUsNyArMTIxLDYgQEAgdm9pZCBwYV9jYXJkX3Byb2ZpbGVfc2V0X2F2YWlsYWJsZShwYV9jYXJkX3Byb2ZpbGUgKmMsIHBhX2F2YWlsYWJsZV90IGF2YWlsYWJsZSkKKyAKKyBwYV9jYXJkX25ld19kYXRhICpwYV9jYXJkX25ld19kYXRhX2luaXQocGFfY2FyZF9uZXdfZGF0YSAqZGF0YSk7Cisgdm9pZCBwYV9jYXJkX25ld19kYXRhX3NldF9uYW1lKHBhX2NhcmRfbmV3X2RhdGEgKmRhdGEsIGNvbnN0IGNoYXIgKm5hbWUpOworLXZvaWQgcGFfY2FyZF9uZXdfZGF0YV9zZXRfcHJvZmlsZShwYV9jYXJkX25ld19kYXRhICpkYXRhLCBjb25zdCBjaGFyICpwcm9maWxlKTsKKyB2b2lkIHBhX2NhcmRfbmV3X2RhdGFfc2V0X3ByZWZlcnJlZF9wb3J0KHBhX2NhcmRfbmV3X2RhdGEgKmRhdGEsIHBhX2RpcmVjdGlvbl90IGRpcmVjdGlvbiwgcGFfZGV2aWNlX3BvcnQgKnBvcnQpOworIHZvaWQgcGFfY2FyZF9uZXdfZGF0YV9kb25lKHBhX2NhcmRfbmV3X2RhdGEgKmRhdGEpOworIAorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLzAwMDUtYWxzYS1zZXQtYXZhaWxhYmlsaXR5LWZvci1zb21lLXVuYXZhaWxhYmxlLXByb2ZpbGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby8wMDA1LWFsc2Etc2V0LWF2YWlsYWJpbGl0eS1mb3Itc29tZS11bmF2YWlsYWJsZS1wcm9maWxlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTYzZDJjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby8wMDA1LWFsc2Etc2V0LWF2YWlsYWJpbGl0eS1mb3Itc29tZS11bmF2YWlsYWJsZS1wcm9maWxlcy5wYXRjaApAQCAtMCwwICsxLDc5IEBACitGcm9tIGFlNmEwMWJhMjA0YjQ4MGJkYTZhNWI0NDMxYmUzZDIyZTUzYTcwMDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+CitEYXRlOiBGcmksIDIzIE9jdCAyMDE1IDEzOjM3OjExICswMzAwCitTdWJqZWN0OiBbUEFUQ0ggNS81XSBhbHNhOiBzZXQgYXZhaWxhYmlsaXR5IGZvciAoc29tZSkgdW5hdmFpbGFibGUgcHJvZmlsZXMKKworVGhlIGFsc2EgY2FyZCBoYXNuJ3Qgc28gZmFyIHNldCBhbnkgYXZhaWxhYmlsaXR5IGZvciBwcm9maWxlcy4gVGhhdAorY2F1c2VkIGFuIGlzc3VlIHdpdGggc29tZSBIRE1JIGhhcmR3YXJlOiB0aGUgc291bmQgY2FyZCBoYXMgdHdvIEhETUkKK291dHB1dHMsIGJ1dCBvbmx5IHRoZSBzZWNvbmQgb2YgdGhlbSBpcyBhY3R1YWxseSB1c2FibGUuIFRoZQordW5hdmFpbGFibGUgcG9ydCBpcyBtYXJrZWQgYXMgdW5hdmFpbGFibGUgYW5kIHRoZSBhdmFpbGFibGUgcG9ydCBpcworbWFya2VkIGFzIGF2YWlsYWJsZSwgYnV0IHRoaXMgaW5mb3JtYXRpb24gaXNuJ3QgcHJvcGFnYXRlZCB0byB0aGUKK3Byb2ZpbGUgYXZhaWxhYmlsaXR5LiBXaXRob3V0IHByb2ZpbGUgYXZhaWxhYmlsaXR5IGluZm9ybWF0aW9uLCB0aGUKK2luaXRpYWwgcHJvZmlsZSBwb2xpY3kgcGlja3MgdGhlIHVuYXZhaWxhYmxlIG9uZSwgc2luY2UgaXQgaGFzIGEKK2hpZ2hlciBwcmlvcml0eSB2YWx1ZS4KKworVGhpcyBwYXRjaCBhZGRzIHNpbXBsZSBsb2dpYyBmb3IgbWFya2luZyBzb21lIHByb2ZpbGVzIHVuYXZhaWxhYmxlOgoraWYgdGhlIHByb2ZpbGUgb25seSBjb250YWlucyB1bmF2YWlsYWJsZSBwb3J0cywgdGhlIHByb2ZpbGUgaXMKK3VuYXZhaWxhYmxlIHRvby4gVGhpcyBjYW4gYmUgaW1wcm92ZWQgaW4gdGhlIGZ1dHVyZSBzbyB0aGF0IGlmIGEKK3Byb2ZpbGUgY29udGFpbnMgc2lua3Mgb3Igc291cmNlcyB0aGF0IG9ubHkgY29udGFpbiB1bmF2YWlsYWJsZSBwb3J0cywKK3RoZSBwcm9maWxlIHNob3VsZCBiZSBtYXJrZWQgYXMgdW5hdmFpbGFibGUuIEltcGxlbWVudGluZyB0aGF0CityZXF1aXJlcyBhZGRpbmcgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2lua3MgYW5kIHNvdXJjZXMgdG8KK3BhX2NhcmRfcHJvZmlsZSwgaG93ZXZlci4KKworQnVnTGluazogaHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD04NDQ4CisKK1Vwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQgW2V4cGVjdGVkIGluIDEwLjBdCisKK1NpZ25lZC1vZmYtYnk6IFRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4KKy0tLQorIHNyYy9tb2R1bGVzL2Fsc2EvbW9kdWxlLWFsc2EtY2FyZC5jIHwgMjcgKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9tb2R1bGVzL2Fsc2EvbW9kdWxlLWFsc2EtY2FyZC5jIGIvc3JjL21vZHVsZXMvYWxzYS9tb2R1bGUtYWxzYS1jYXJkLmMKK2luZGV4IDE5NzYyMzAuLjMyM2UwOGEgMTAwNjQ0CistLS0gYS9zcmMvbW9kdWxlcy9hbHNhL21vZHVsZS1hbHNhLWNhcmQuYworKysrIGIvc3JjL21vZHVsZXMvYWxzYS9tb2R1bGUtYWxzYS1jYXJkLmMKK0BAIC0zNjYsNiArMzY2LDcgQEAgc3RhdGljIGludCByZXBvcnRfamFja19zdGF0ZShzbmRfbWl4ZXJfZWxlbV90ICptZWxlbSwgdW5zaWduZWQgaW50IG1hc2spIHsKKyAgICAgdm9pZCAqc3RhdGU7CisgICAgIHBhX2Fsc2FfamFjayAqamFjazsKKyAgICAgc3RydWN0IHRlbXBfcG9ydF9hdmFpbCAqdHAsICp0cG9ydHM7CisrICAgIHBhX2NhcmRfcHJvZmlsZSAqcHJvZmlsZTsKKyAKKyAgICAgcGFfYXNzZXJ0KHUpOworIAorQEAgLTQyNiw2ICs0MjcsMzIgQEAgc3RhdGljIGludCByZXBvcnRfamFja19zdGF0ZShzbmRfbWl4ZXJfZWxlbV90ICptZWxlbSwgdW5zaWduZWQgaW50IG1hc2spIHsKKyAgICAgICAgIGlmICh0cC0+YXZhaWwgPT0gUEFfQVZBSUxBQkxFX05PKQorICAgICAgICAgICAgcGFfZGV2aWNlX3BvcnRfc2V0X2F2YWlsYWJsZSh0cC0+cG9ydCwgdHAtPmF2YWlsKTsKKyAKKysgICAgLyogVXBkYXRlIHByb2ZpbGUgYXZhaWxhYmlsaXRpZXMuIFRoZSBsb2dpYyBjb3VsZCBiZSBpbXByb3ZlZDsgZm9yIG5vdyB3ZQorKyAgICAgKiBvbmx5IHNldCBvYnZpb3VzbHkgdW5hdmFpbGFibGUgcHJvZmlsZXMgKHRob3NlIHRoYXQgY29udGFpbiBvbmx5CisrICAgICAqIHVuYXZhaWxhYmxlIHBvcnRzKSB0byBQQV9BVkFJTEFCTEVfTk8gYW5kIGFsbCBvdGhlcnMgdG8KKysgICAgICogUEFfQVZBSUxBQkxFX1VOS05PV04uICovCisrICAgIFBBX0hBU0hNQVBfRk9SRUFDSChwcm9maWxlLCB1LT5jYXJkLT5wcm9maWxlcywgc3RhdGUpIHsKKysgICAgICAgIHBhX2RldmljZV9wb3J0ICpwb3J0OworKyAgICAgICAgdm9pZCAqc3RhdGUyOworKyAgICAgICAgcGFfYXZhaWxhYmxlX3QgYXZhaWxhYmxlID0gUEFfQVZBSUxBQkxFX05POworKworKyAgICAgICAgLyogRG9uJ3QgdG91Y2ggdGhlICJvZmYiIHByb2ZpbGUuICovCisrICAgICAgICBpZiAocHJvZmlsZS0+bl9zb3VyY2VzID09IDAgJiYgcHJvZmlsZS0+bl9zaW5rcyA9PSAwKQorKyAgICAgICAgICAgIGNvbnRpbnVlOworKworKyAgICAgICAgUEFfSEFTSE1BUF9GT1JFQUNIKHBvcnQsIHUtPmNhcmQtPnBvcnRzLCBzdGF0ZTIpIHsKKysgICAgICAgICAgICBpZiAoIXBhX2hhc2htYXBfZ2V0KHBvcnQtPnByb2ZpbGVzLCBwcm9maWxlLT5uYW1lKSkKKysgICAgICAgICAgICAgICAgY29udGludWU7CisrCisrICAgICAgICAgICAgaWYgKHBvcnQtPmF2YWlsYWJsZSAhPSBQQV9BVkFJTEFCTEVfTk8pIHsKKysgICAgICAgICAgICAgICAgYXZhaWxhYmxlID0gUEFfQVZBSUxBQkxFX1VOS05PV047CisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysKKysgICAgICAgIHBhX2NhcmRfcHJvZmlsZV9zZXRfYXZhaWxhYmxlKHByb2ZpbGUsIGF2YWlsYWJsZSk7CisrICAgIH0KKysKKyAgICAgcGFfeGZyZWUodHBvcnRzKTsKKyAgICAgcmV0dXJuIDA7CisgfQorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvXzguMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW9fOC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDFiYThmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW9fOC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotcmVxdWlyZSBwdWxzZWF1ZGlvLmluYwotCi1TUkNfVVJJID0gImh0dHA6Ly9mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvcHVsc2VhdWRpby9yZWxlYXNlcy8ke0JQfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1wYWRzcC1NYWtlLWl0LWNvbXBpbGUtb24tbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNsaWVudC1jb25mLUFkZC1hbGxvdy1hdXRvc3Bhd24tZm9yLXJvb3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdm9sYXRpbGVzLjA0X3B1bHNlIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY2FyZC1hZGQtcGFfY2FyZF9wcm9maWxlLnBvcnRzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItYWxzYS1ibHVldG9vdGgtZmFpbC1pZi11c2VyLXJlcXVlc3RlZC1wcm9maWxlLWRvZXNuLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLWNhcmQtbW92ZS1wcm9maWxlLXNlbGVjdGlvbi1hZnRlci1wYV9jYXJkX25ldy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LWFsc2Etc2V0LWF2YWlsYWJpbGl0eS1mb3Itc29tZS11bmF2YWlsYWJsZS1wcm9maWxlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVJldmVydC1tb2R1bGUtc3dpdGNoLW9uLXBvcnQtYXZhaWxhYmxlLVJvdXRlLXRvLXByZWYucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjg2Nzg0NDJiYTBiYjRiNGMzM2FjNmY2MjU0Mjk2MmRmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY5MGVlZmUyODYzMzQ2NmNmZDFhYjlkODVlYmZhOTM3NmY2YjYyMmRlZWM2YmZlZTUwOTFhYzk3MzdjZDE5ODkiCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICBta2RpciAtcCAke1N9L2xpYmx0ZGwKLSAgICBjcCAke1NUQUdJTkdfTElCRElSfS9saWJsdGRsKiAke1N9L2xpYmx0ZGwKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW9fOS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpb185LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDBmNTQ0MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW9fOS4wLmJiCkBAIC0wLDAgKzEsMTkgQEAKK3JlcXVpcmUgcHVsc2VhdWRpby5pbmMKKworU1JDX1VSSSA9ICJodHRwOi8vZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL3B1bHNlYXVkaW8vcmVsZWFzZXMvJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcGFkc3AtTWFrZS1pdC1jb21waWxlLW9uLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jbGllbnQtY29uZi1BZGQtYWxsb3ctYXV0b3NwYXduLWZvci1yb290LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYWxzYS1ibHVldG9vdGgtZmFpbC1pZi11c2VyLXJlcXVlc3RlZC1wcm9maWxlLWRvZXNuLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNhcmQtZG9uLXQtYWxsb3ctdGhlLUNBUkRfTkVXLWhvb2stdG8tZmFpbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLWNhcmQtbW92ZS1wcm9maWxlLXNlbGVjdGlvbi1hZnRlci1wYV9jYXJkX25ldy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LWNhcmQtcmVtb3ZlLXBhX2NhcmRfbmV3X2RhdGEuYWN0aXZlX3Byb2ZpbGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1hbHNhLXNldC1hdmFpbGFiaWxpdHktZm9yLXNvbWUtdW5hdmFpbGFibGUtcHJvZmlsZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdm9sYXRpbGVzLjA0X3B1bHNlIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkYTcxNjI1NDFiM2E5YmMyMDU3NmRiZDBkN2QxNDg5YSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjM2QzZDY2YjgyN2YxOGZiZTkwM2ZlM2RmNjQ3MDEzZjA5ZmMxZTIxOTFjMDM1YmUxZWUyZDgyYTllNDA0Njg2IgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgbWtkaXIgLXAgJHtTfS9saWJsdGRsCisgICAgY3AgJHtTVEFHSU5HX0xJQkRJUn0vbGlibHRkbCogJHtTfS9saWJsdGRsCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvd2VicC9saWJ3ZWJwXzAuNS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnAvbGlid2VicF8wLjUuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzg5YWRhYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvd2VicC9saWJ3ZWJwXzAuNS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotU1VNTUFSWSA9ICJXZWJQIGlzIGFuIGltYWdlIGZvcm1hdCBkZXNpZ25lZCBmb3IgdGhlIFdlYiIKLURFU0NSSVBUSU9OID0gIldlYlAgaXMgYSBtZXRob2Qgb2YgbG9zc3kgYW5kIGxvc3NsZXNzIGNvbXByZXNzaW9uIHRoYXQgY2FuIGJlIFwKLSAgICAgICAgICAgICAgIHVzZWQgb24gYSBsYXJnZSB2YXJpZXR5IG9mIHBob3RvZ3JhcGhpYywgdHJhbnNsdWNlbnQgYW5kIFwKLSAgICAgICAgICAgICAgIGdyYXBoaWNhbCBpbWFnZXMgZm91bmQgb24gdGhlIHdlYi4gVGhlIGRlZ3JlZSBvZiBsb3NzeSBcCi0gICAgICAgICAgICAgICBjb21wcmVzc2lvbiBpcyBhZGp1c3RhYmxlIHNvIGEgdXNlciBjYW4gY2hvb3NlIHRoZSB0cmFkZS1vZmYgXAotICAgICAgICAgICAgICAgYmV0d2VlbiBmaWxlIHNpemUgYW5kIGltYWdlIHF1YWxpdHkuIFdlYlAgdHlwaWNhbGx5IGFjaGlldmVzIFwKLSAgICAgICAgICAgICAgIGFuIGF2ZXJhZ2Ugb2YgMzAlIG1vcmUgY29tcHJlc3Npb24gdGhhbiBKUEVHIGFuZCBKUEVHIDIwMDAsIFwKLSAgICAgICAgICAgICAgIHdpdGhvdXQgbG9zcyBvZiBpbWFnZSBxdWFsaXR5LiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3NwZWVkL3dlYnAvIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTZlOGRlZTkzMmMyNmYyZGFiNTAzYWJmNzBjOTZkOGJiIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL1BBVEVOVFM7bWQ1PWM2OTI2ZDBjYjA3ZDI5NmY4ODZhYjZlMGNjNWE4NWI3IgotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMud2VibXByb2plY3Qub3JnL3JlbGVhc2VzL3dlYnAvJHtCUH0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gImJhODFlYjliZjIzZTNjNjlhMmY1Y2M4ZGNkYjU5MzhmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVjZDNiYjdiNjIzYWZmMWY0ZTcwYmQ2MTFkYzhkYmFiYmY3Njg4ZmQ1ZWIyMjViMzJlMDJlMDllMzdkZmIyNzQiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLndlYm1wcm9qZWN0Lm9yZy9yZWxlYXNlcy93ZWJwL2luZGV4Lmh0bWwiCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZGlzYWJsZS1leHBlcmltZW50YWwgXAotICAgIC0tZGlzYWJsZS13aWMgXAotICAgIC0tZW5hYmxlLWxpYndlYnBtdXggXAotICAgIC0tZW5hYmxlLWxpYndlYnBkZW11eCBcCi0gICAgLS1lbmFibGUtdGhyZWFkaW5nIFwKLSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLQotIyBsaWJ3ZWJwZGVjb2RlciBpcyBhIHN1YnNldCBvZiBsaWJ3ZWJwLCBkb24ndCBidWlsZCBpdCB1bmxlc3MgcmVxdWVzdGVkCi1QQUNLQUdFQ09ORklHW2RlY29kZXJdID0gIi0tZW5hYmxlLWxpYndlYnBkZWNvZGVyLC0tZGlzYWJsZS1saWJ3ZWJwZGVjb2RlciIKLQotIyBBcHBseSBmb3IgZXhhbXBsZXMgcHJvZ3JhbXM6IGN3ZWJwIGFuZCBkd2VicAotUEFDS0FHRUNPTkZJR1tnaWZdID0gIi0tZW5hYmxlLWdpZiwtLWRpc2FibGUtZ2lmLGdpZmxpYiIKLVBBQ0tBR0VDT05GSUdbanBlZ10gPSAiLS1lbmFibGUtanBlZywtLWRpc2FibGUtanBlZyxqcGVnIgotUEFDS0FHRUNPTkZJR1twbmddID0gIi0tZW5hYmxlLXBuZywtLWRpc2FibGUtcG5nLCxsaWJwbmciCi1QQUNLQUdFQ09ORklHW3RpZmZdID0gIi0tZW5hYmxlLXRpZmYsLS1kaXNhYmxlLXRpZmYsdGlmZiIKLQotIyBBcHBseSBvbmx5IGZvciBleGFtcGxlIHByb2dyYW0gdndlYnAKLVBBQ0tBR0VDT05GSUdbZ2xdID0gIi0tZW5hYmxlLWdsLC0tZGlzYWJsZS1nbCxtZXNhLWdsdXQiCi0KLVBBQ0tBR0VTID0rICIke1BOfS1naWYyd2VicCIKLQotREVTQ1JJUFRJT05fJHtQTn0tZ2lmMndlYnAgPSAiU2ltcGxlIHRvb2wgdG8gY29udmVydCBhbmltYXRlZCBHSUZzIHRvIFdlYlAiCi1GSUxFU18ke1BOfS1naWYyd2VicCA9ICIke2JpbmRpcn0vZ2lmMndlYnAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvd2VicC9saWJ3ZWJwXzAuNS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnAvbGlid2VicF8wLjUuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODgyZGI3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnAvbGlid2VicF8wLjUuMS5iYgpAQCAtMCwwICsxLDU0IEBACitTVU1NQVJZID0gIldlYlAgaXMgYW4gaW1hZ2UgZm9ybWF0IGRlc2lnbmVkIGZvciB0aGUgV2ViIgorREVTQ1JJUFRJT04gPSAiV2ViUCBpcyBhIG1ldGhvZCBvZiBsb3NzeSBhbmQgbG9zc2xlc3MgY29tcHJlc3Npb24gdGhhdCBjYW4gYmUgXAorICAgICAgICAgICAgICAgdXNlZCBvbiBhIGxhcmdlIHZhcmlldHkgb2YgcGhvdG9ncmFwaGljLCB0cmFuc2x1Y2VudCBhbmQgXAorICAgICAgICAgICAgICAgZ3JhcGhpY2FsIGltYWdlcyBmb3VuZCBvbiB0aGUgd2ViLiBUaGUgZGVncmVlIG9mIGxvc3N5IFwKKyAgICAgICAgICAgICAgIGNvbXByZXNzaW9uIGlzIGFkanVzdGFibGUgc28gYSB1c2VyIGNhbiBjaG9vc2UgdGhlIHRyYWRlLW9mZiBcCisgICAgICAgICAgICAgICBiZXR3ZWVuIGZpbGUgc2l6ZSBhbmQgaW1hZ2UgcXVhbGl0eS4gV2ViUCB0eXBpY2FsbHkgYWNoaWV2ZXMgXAorICAgICAgICAgICAgICAgYW4gYXZlcmFnZSBvZiAzMCUgbW9yZSBjb21wcmVzc2lvbiB0aGFuIEpQRUcgYW5kIEpQRUcgMjAwMCwgXAorICAgICAgICAgICAgICAgd2l0aG91dCBsb3NzIG9mIGltYWdlIHF1YWxpdHkuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vc3BlZWQvd2VicC8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NmU4ZGVlOTMyYzI2ZjJkYWI1MDNhYmY3MGM5NmQ4YmIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vUEFURU5UUzttZDU9YzY5MjZkMGNiMDdkMjk2Zjg4NmFiNmUwY2M1YTg1YjciCisKK1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy53ZWJtcHJvamVjdC5vcmcvcmVsZWFzZXMvd2VicC8ke0JQfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiM2Q3ZGI5MmViYmE1YjRmNjc5NDEzZDI1YzYwNDA4ODEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmFkNjZjNmZjZDYwYTAyM2RlMjBiNjg1NmIwM2RhOGM3ZDM0NzI2OWQ3NmIxZmQ5YzMyODdlOGI1ZTg4MTNkZiIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMud2VibXByb2plY3Qub3JnL3JlbGVhc2VzL3dlYnAvaW5kZXguaHRtbCIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1kaXNhYmxlLWV4cGVyaW1lbnRhbCBcCisgICAgLS1kaXNhYmxlLXdpYyBcCisgICAgLS1lbmFibGUtbGlid2VicG11eCBcCisgICAgLS1lbmFibGUtbGlid2VicGRlbXV4IFwKKyAgICAtLWVuYWJsZS10aHJlYWRpbmcgXAorIgorIyBEbyBub3QgdHJ1c3QgY29uZmlndXJlIHRvIGRldGVybWluZSBpZiBuZW9uIGlzIGF2YWlsYWJsZS4KKyMKK0VYVFJBX09FQ09ORl9hcHBlbmRfYXJtID0gIiBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCJuZW9uIiwiLS1lbmFibGUtbmVvbiIsIi0tZGlzYWJsZS1uZW9uIixkKX0gXAorIgorCitpbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZQorCitQQUNLQUdFQ09ORklHID8/PSAiIgorCisjIGxpYndlYnBkZWNvZGVyIGlzIGEgc3Vic2V0IG9mIGxpYndlYnAsIGRvbid0IGJ1aWxkIGl0IHVubGVzcyByZXF1ZXN0ZWQKK1BBQ0tBR0VDT05GSUdbZGVjb2Rlcl0gPSAiLS1lbmFibGUtbGlid2VicGRlY29kZXIsLS1kaXNhYmxlLWxpYndlYnBkZWNvZGVyIgorCisjIEFwcGx5IGZvciBleGFtcGxlcyBwcm9ncmFtczogY3dlYnAgYW5kIGR3ZWJwCitQQUNLQUdFQ09ORklHW2dpZl0gPSAiLS1lbmFibGUtZ2lmLC0tZGlzYWJsZS1naWYsZ2lmbGliIgorUEFDS0FHRUNPTkZJR1tqcGVnXSA9ICItLWVuYWJsZS1qcGVnLC0tZGlzYWJsZS1qcGVnLGpwZWciCitQQUNLQUdFQ09ORklHW3BuZ10gPSAiLS1lbmFibGUtcG5nLC0tZGlzYWJsZS1wbmcsLGxpYnBuZyIKK1BBQ0tBR0VDT05GSUdbdGlmZl0gPSAiLS1lbmFibGUtdGlmZiwtLWRpc2FibGUtdGlmZix0aWZmIgorCisjIEFwcGx5IG9ubHkgZm9yIGV4YW1wbGUgcHJvZ3JhbSB2d2VicAorUEFDS0FHRUNPTkZJR1tnbF0gPSAiLS1lbmFibGUtZ2wsLS1kaXNhYmxlLWdsLG1lc2EtZ2x1dCIKKworUEFDS0FHRVMgPSsgIiR7UE59LWdpZjJ3ZWJwIgorCitERVNDUklQVElPTl8ke1BOfS1naWYyd2VicCA9ICJTaW1wbGUgdG9vbCB0byBjb252ZXJ0IGFuaW1hdGVkIEdJRnMgdG8gV2ViUCIKK0ZJTEVTXyR7UE59LWdpZjJ3ZWJwID0gIiR7YmluZGlyfS9naWYyd2VicCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS94MjY0L3gyNjRfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3gyNjQveDI2NF9naXQuYmIKaW5kZXggMGE2OTkwOS4uMzkzMzEwZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3gyNjQveDI2NF9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3gyNjQveDI2NF9naXQuYmIKQEAgLTQyLDE0ICs0MiwxMiBAQAogICAgIC4vY29uZmlndXJlICR7RVhUUkFfT0VDT05GfQogfQogCi0jIEdldCByaWQgb2YgLWUKLUVYVFJBX09FTUFLRSA9ICIiCiBBUyA9ICIke1RBUkdFVF9QUkVGSVh9Z2NjIgogCiBkb19pbnN0YWxsKCkgewogICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KIH0KIAotIyBQSUMgY2FuJ3QgYmUgZW5hYmxlZCBmb3IgMzItYml0IHg4NgotSU5TQU5FX1NLSVBfJHtQTn1fYXBwZW5kX3g4NiA9ICIgdGV4dHJlbCIKKyMgUElDIGNhbid0IGJlIGVuYWJsZWQgZm9yIGZldyBCU1AncworSU5TQU5FX1NLSVBfJHtQTn1fYXBwZW5kID0gIiB0ZXh0cmVsIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXJ0L2ltYWdlcy9jb3JlLWltYWdlLXJ0LXNkay5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvaW1hZ2VzL2NvcmUtaW1hZ2UtcnQtc2RrLmJiCmluZGV4IGRiN2Q1ODEuLjdkZGY2NzEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvaW1hZ2VzL2NvcmUtaW1hZ2UtcnQtc2RrLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvaW1hZ2VzL2NvcmUtaW1hZ2UtcnQtc2RrLmJiCkBAIC0xLDUgKzEsMTMgQEAKIHJlcXVpcmUgcmVjaXBlcy1jb3JlL2ltYWdlcy9jb3JlLWltYWdlLW1pbmltYWwuYmIKIAorIyBTa2lwIHByb2Nlc3Npbmcgb2YgdGhpcyByZWNpcGUgaWYgbGludXgteW9jdG8tcnQgaXMgbm90IGV4cGxpY2l0bHkgc3BlY2lmaWVkIGFzIHRoZQorIyBQUkVGRVJSRURfUFJPVklERVIgZm9yIHZpcnR1YWwva2VybmVsLiBUaGlzIGF2b2lkcyBlcnJvcnMgd2hlbiB0cnlpbmcKKyMgdG8gYnVpbGQgbXVsdGlwbGUgdmlydHVhbC9rZXJuZWwgcHJvdmlkZXJzLgorcHl0aG9uICgpIHsKKyAgICBpZiBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIiwgVHJ1ZSkgIT0gImxpbnV4LXlvY3RvLXJ0IjoKKyAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIlNldCBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgdG8gbGludXgteW9jdG8tcnQgdG8gZW5hYmxlIGl0IikKK30KKwogREVTQ1JJUFRJT04gPSAiU21hbGwgaW1hZ2UgY2FwYWJsZSBvZiBib290aW5nIGEgZGV2aWNlIHdpdGggYSB0ZXN0IHN1aXRlIGFuZCBcCiB0b29scyBmb3IgcmVhbC10aW1lIHVzZS4gSXQgaW5jbHVkZXMgdGhlIGZ1bGwgbWV0YS10b29sY2hhaW4sIGRldmVsb3BtZW50IFwKIGhlYWRlcnMgYW5kIGxpYnJhcmllcyB0byBmb3JtIGEgc3RhbmRhbG9uZSBTREsuIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ydC9pbWFnZXMvY29yZS1pbWFnZS1ydC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvaW1hZ2VzL2NvcmUtaW1hZ2UtcnQuYmIKaW5kZXggY2FiNmY4Yi4uOWM4NmYyNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ydC9pbWFnZXMvY29yZS1pbWFnZS1ydC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXJ0L2ltYWdlcy9jb3JlLWltYWdlLXJ0LmJiCkBAIC0xLDUgKzEsMTMgQEAKIHJlcXVpcmUgcmVjaXBlcy1jb3JlL2ltYWdlcy9jb3JlLWltYWdlLW1pbmltYWwuYmIKIAorIyBTa2lwIHByb2Nlc3Npbmcgb2YgdGhpcyByZWNpcGUgaWYgbGludXgteW9jdG8tcnQgaXMgbm90IGV4cGxpY2l0bHkgc3BlY2lmaWVkIGFzIHRoZQorIyBQUkVGRVJSRURfUFJPVklERVIgZm9yIHZpcnR1YWwva2VybmVsLiBUaGlzIGF2b2lkcyBlcnJvcnMgd2hlbiB0cnlpbmcKKyMgdG8gYnVpbGQgbXVsdGlwbGUgdmlydHVhbC9rZXJuZWwgcHJvdmlkZXJzLgorcHl0aG9uICgpIHsKKyAgICBpZiBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIiwgVHJ1ZSkgIT0gImxpbnV4LXlvY3RvLXJ0IjoKKyAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIlNldCBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgdG8gbGludXgteW9jdG8tcnQgdG8gZW5hYmxlIGl0IikKK30KKwogREVTQ1JJUFRJT04gPSAiQSBzbWFsbCBpbWFnZSBqdXN0IGNhcGFibGUgb2YgYWxsb3dpbmcgYSBkZXZpY2UgdG8gYm9vdCBwbHVzIGEgXAogcmVhbC10aW1lIHRlc3Qgc3VpdGUgYW5kIHRvb2xzIGFwcHJvcHJpYXRlIGZvciByZWFsLXRpbWUgdXNlLiIKIERFUEVORFMgPSAibGludXgteW9jdG8tcnQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL2ZpbGVzLzAwMDEtTWFrZWZpbGUtU2V0LUNDLUFSLXZhcmlhYmxlLW9ubHktaWYtaXQtZG9lc24tdC1oYXZlLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvZmlsZXMvMDAwMS1NYWtlZmlsZS1TZXQtQ0MtQVItdmFyaWFibGUtb25seS1pZi1pdC1kb2Vzbi10LWhhdmUtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMGZjYzdkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvZmlsZXMvMDAwMS1NYWtlZmlsZS1TZXQtQ0MtQVItdmFyaWFibGUtb25seS1pZi1pdC1kb2Vzbi10LWhhdmUtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRnJvbSA5NjQwZGRlNDI0MWUxMzE0YjhlOGVhMzViMGM4ZGFiMGIzMGFlNTFmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFN1biwgMyBKYW4gMjAxNiAxMDo1MDo1NiAtMDgwMAotU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZTogU2V0IENDL0FSIHZhcmlhYmxlIG9ubHkgaWYgaXQgZG9lc24ndCBoYXZlIGEgdmFsdWUKLQotVGhpcyBoZWxwcyBpdCBjb21waWxlIHdpdGggY2xhbmcgb3IgYW55IG90aGVyIGNvbXBpbGVycyBiZXNpZGVzIGdjYwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi0gTWFrZWZpbGUgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggMWU0YjdkMS4uMmMyZDM5NiAxMDA2NDQKLS0tLSBhL01ha2VmaWxlCi0rKysgYi9NYWtlZmlsZQotQEAgLTEsNiArMSw2IEBACi0gVkVSU0lPTiA9IDAuOTYKLS1DQz0kKENST1NTX0NPTVBJTEUpZ2NjCi0tQVI9JChDUk9TU19DT01QSUxFKWFyCi0rQ0M/PSQoQ1JPU1NfQ09NUElMRSlnY2MKLStBUj89JChDUk9TU19DT01QSUxFKWFyCi0gCi0gT0JKRElSID0gYmxkCi0gCi0tLSAKLTIuNi40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvZmlsZXMvcnRfYm1hcmsucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL2ZpbGVzL3J0X2JtYXJrLnB5CmluZGV4IGUyMjgwZTQuLjA4MGE2NTUgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvZmlsZXMvcnRfYm1hcmsucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9maWxlcy9ydF9ibWFyay5weQpAQCAtMSw0ICsxLDQgQEAKLSMhL3Vzci9iaW4vcHl0aG9uCisjIS91c3IvYmluL2VudiBweXRob24zCiAjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQogCiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiAgICAgQlNELTMtQ2xhdXNlCkBAIC0xMDYsOCArMTA2LDggQEAKIAogZGVmIGxvZygqbXNnKToKICAgICAgICAgdG1wID0gIiIuam9pbihtYXAoc3RyLCBtc2cpKSAjICdtYXAoc3RyLCAuLi4nIGFsbG93cyBudW1iZXJzCi0gICAgICAgIGZvciBsaW5lIGluIHRtcC5zcGxpdCgiXG4iKToKLSAgICAgICAgICAgICAgICBwcmludCAiIyIsIGxpbmUKKyAgICAgICAgZm9yIGxpbmUgaW4gdG1wLnNwbGl0bGluZXMoKToKKyAgICAgICAgICAgICAgICBwcmludCgiIyIsIGxpbmUpCiAKICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIExpa2UgbG9nKCksIGJ1dCB3aXRoIGEgdGltZXN0YW1wIGFkZGVkCkBAIC0yNjUsNyArMjY1LDcgQEAKICAgICAgICAiLWQiLCBzdHIoaW50ZXJ2YWxfZGVsdGEpLAogICAgICAgICItbCIsIHN0cihsb29wX2NvdW50KQogICAgICAgICkKLXJleCA9IHJlLmNvbXBpbGUoIkM6XHMqKFxkKykuKk1pbjpccyooXGQrKS4qQXZnOlxzKihcZCspLipNYXg6XHMqKFxkKykiKQorcmV4ID0gcmUuY29tcGlsZShiIkM6XHMqKFxkKykuKk1pbjpccyooXGQrKS4qQXZnOlxzKihcZCspLipNYXg6XHMqKFxkKykiKQogCiBkZWYgcnVuX2N5Y2xpY3Rlc3Rfb25jZSgpOgogICAgICAgICByZXMgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQpCkBAIC0yODMsNyArMjgzLDcgQEAKICAgICAgICAgYXZnX3N1bSA9IDAKICAgICAgICAgYXZnX2NudCA9IDAKIAotICAgICAgICBmb3IgbGluZSBpbiByZXMuc3BsaXQoIlxuIik6CisgICAgICAgIGZvciBsaW5lIGluIHJlcy5zcGxpdGxpbmVzKCk6CiAgICAgICAgICAgICAgICAgbSA9IHJleC5zZWFyY2gobGluZSkKICAgICAgICAgICAgICAgICBpZiBtIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgbWlubGlzdC5hcHBlbmQoaW50KG0uZ3JvdXAoMikpKQpAQCAtMzI0LDcgKzMyNCw3IEBACiAgICAgICAgIHQgPSB0aW1lLnRpbWUoKQogICAgICAgICBtYXhfbGlzdCA9IFtdCiAKLSAgICAgICAgZm9yIGkgaW4geHJhbmdlKDAsIHN1aXRlX3NpemUpOgorICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBzdWl0ZV9zaXplKToKICAgICAgICAgICAgICAgICB0bXBfbWluLCB0bXBfYXZnLCB0bXBfbWF4ID0gcnVuX2N5Y2xpY3Rlc3Rfb25jZSgpCiAKICAgICAgICAgICAgICAgICBtc2cgPSAiJTJkLyUyZDoiICUgKGkrMSwgc3VpdGVfc2l6ZSkKQEAgLTM3NiwxMSArMzc2LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBsb2coKQogICAgICAgICAgICAgICAgICAgICAgICAgbG9nKCJQQVNTIikKIAotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50IHRjX25hbWUobmFtZSksICJbTWluL3VzLEF2Zy91cyxNYXgvdXNdOiIsCi0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCAiJWQsJS4xZiwlZCIgJSAoYm1fbWluLGJtX2F2ZywgYm1fbWF4KQotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgIlBBU1M6IiwgdGNfbmFtZShuYW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KHRjX25hbWUobmFtZSksICJbTWluL3VzLEF2Zy91cyxNYXgvdXNdOiIsKQorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiVkLCUuMWYsJWQiICUgKGJtX21pbixibV9hdmcsIGJtX21heCkpCisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiUEFTUzoiLCB0Y19uYW1lKG5hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoKQogCiAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZygpCkBAIC0zOTEsOSArMzkxLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZygiV0Q6ICIsIG9zLmdldGN3ZCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgbG9nKCkKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZygiRkFJTCIpCi0gICAgICAgICAgICAgICAgICAgICAgICBwcmludAotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgIkZBSUw6IiwgdGNfbmFtZShuYW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJGQUlMOiIsIHRjX25hbWUobmFtZSkpCisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgpCiAKICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvZmlsZXMvcnVuLXB0ZXN0IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9maWxlcy9ydW4tcHRlc3QKaW5kZXggOGU2ZDNlMy4uYjdjNWUyOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9maWxlcy9ydW4tcHRlc3QKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9maWxlcy9ydW4tcHRlc3QKQEAgLTEsMyArMSwzIEBACiAjIS9iaW4vc2gKIAotcHl0aG9uIC4vcnRfYm1hcmsucHkKK3B5dGhvbjMgLi9ydF9ibWFyay5weQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9od2xhdGRldGVjdF8wLjk2LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9od2xhdGRldGVjdF8wLjk2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NjIwNjllLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvaHdsYXRkZXRlY3RfMC45Ni5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVNVTU1BUlkgPSAiSGFyZHdhcmUgbGF0ZW5jeSBkZXRlY3RvciIKLURFU0NSSVBUSU9OID0gIlB5dGhvbiB1dGlsaXR5IGZvciBjb250cm9sbGluZyB0aGUga2VybmVsIGhhcmR3YXJlIGxhdGVuY3kgZGV0ZWN0aW9uIG1vZHVsZSAoaHdsYXRfZGV0ZWN0b3Iua28pLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vcnQud2lraS5rZXJuZWwub3JnL2luZGV4LnBocC9DeWNsaWN0ZXN0IgotU0VDVElPTiA9ICJ0ZXN0cyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLQotcmVxdWlyZSBydC10ZXN0cy5pbmMKLQotRVhUUkFfT0VNQUtFICs9ICJQWUxJQj0ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059L2Rpc3QtcGFja2FnZXMiCi0KLWRvX2NvbXBpbGUoKSB7Ci0Jb2VfcnVubWFrZSBod2xhdGRldGVjdAotfQotCi1kb19pbnN0YWxsKCkgewotICAgICAgICBvZV9ydW5tYWtlIGluc3RhbGxfaHdsYXRkZXRlY3QgREVTVERJUj0ke0R9IFNCSU5ESVI9JHtzYmluZGlyfSBcCi0JICAgICAgICAgICBNQU5ESVI9JHttYW5kaXJ9IElOQ0xVREVESVI9JHtpbmNsdWRlZGlyfQotfQotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfS9kaXN0LXBhY2thZ2VzL2h3bGF0ZGV0ZWN0LnB5IgotUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uIHB5dGhvbi1zdWJwcm9jZXNzIHB5dGhvbi10ZXh0dXRpbHMiCi1SUkVDT01NRU5EU18ke1BOfSA9ICJrZXJuZWwtbW9kdWxlLWh3bGF0LWRldGVjdG9yIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9od2xhdGRldGVjdF8yLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL2h3bGF0ZGV0ZWN0XzIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTJiMmRkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9od2xhdGRldGVjdF8yLjAuYmIKQEAgLTAsMCArMSwyNiBAQAorU1VNTUFSWSA9ICJIYXJkd2FyZSBsYXRlbmN5IGRldGVjdG9yIgorREVTQ1JJUFRJT04gPSAiUHl0aG9uIHV0aWxpdHkgZm9yIGNvbnRyb2xsaW5nIHRoZSBrZXJuZWwgaGFyZHdhcmUgbGF0ZW5jeSBkZXRlY3Rpb24gbW9kdWxlIChod2xhdF9kZXRlY3Rvci5rbykuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9ydC53aWtpLmtlcm5lbC5vcmcvaW5kZXgucGhwL0N5Y2xpY3Rlc3QiCitTRUNUSU9OID0gInRlc3RzIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorCityZXF1aXJlIHJ0LXRlc3RzLmluYworaW5oZXJpdCBweXRob24zLWRpcgorCitFWFRSQV9PRU1BS0UgKz0gIlBZTElCPSR7bGliZGlyfS9weXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0vZGlzdC1wYWNrYWdlcyIKKworZG9fY29tcGlsZSgpIHsKKwlvZV9ydW5tYWtlIGh3bGF0ZGV0ZWN0Cit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgICAgIG9lX3J1bm1ha2UgaW5zdGFsbF9od2xhdGRldGVjdCBERVNURElSPSR7RH0gU0JJTkRJUj0ke3NiaW5kaXJ9IFwKKwkgICAgICAgICAgIE1BTkRJUj0ke21hbmRpcn0gSU5DTFVERURJUj0ke2luY2x1ZGVkaXJ9CisKKyAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qcHl0aG9uLiosIyEke2JpbmRpcn0vcHl0aG9uMywnICR7RH0ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059L2Rpc3QtcGFja2FnZXMvaHdsYXRkZXRlY3QucHkKK30KKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0vZGlzdC1wYWNrYWdlcy9od2xhdGRldGVjdC5weSIKK1JERVBFTkRTXyR7UE59ID0gInB5dGhvbjMgcHl0aG9uMy1zdWJwcm9jZXNzIHB5dGhvbjMtdGV4dHV0aWxzIgorUlJFQ09NTUVORFNfJHtQTn0gPSAia2VybmVsLW1vZHVsZS1od2xhdC1kZXRlY3RvciIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvcnQtdGVzdHMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9ydC10ZXN0cy5pbmMKaW5kZXggNzZmOWIzYS4uZDgzMjgyOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9ydC10ZXN0cy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9ydC10ZXN0cy5pbmMKQEAgLTEsMTMgKzEsOSBAQAogIyBWZXJzaW9uIHYwLjk2Ci1QViA9ICIwLjk2IgotU1JDUkVWID0gIjI0ZjhjMDE3NWUwNGJhYjc4ZTc1NTU2OThlMzRkNzAwMmIwMWM4N2YiCitTUkNSRVYgPSAiZTFiMTUzN2EyMGIzNWFmNzVhNDliZjU1ZGNmNzAyOTZmOGE2MjQ2NyIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL3V0aWxzL3J0LXRlc3RzL3J0LXRlc3RzLmdpdCIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAotIyBuZWVkIHRvIGFwcGVuZCBydC10ZXN0cycgZGVmYXVsdCBDRkxBR1MgdG8gb3VycwotQ0ZMQUdTICs9ICItSSR7U30vc3JjL2luY2x1ZGUgLURfR05VX1NPVVJDRSAtV2FsbCAtV25vLW5vbm51bGwiCi0KICMgY2FsbGluZyAndW5hbWUgLW0nIGlzIGJyb2tlbiBvbiBjcm9zc2J1aWxkcwogRVhUUkFfT0VNQUtFID0gIk5VTUE9MCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvcnQtdGVzdHNfMC45Ni5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvcnQtdGVzdHNfMC45Ni5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmY5NmZlYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL3J0LXRlc3RzXzAuOTYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1TVU1NQVJZID0gIlJlYWwtVGltZSBwcmVlbXB0aW9uIHRlc3RjYXNlcyIKLUhPTUVQQUdFID0gImh0dHBzOi8vcnQud2lraS5rZXJuZWwub3JnL2luZGV4LnBocC9DeWNsaWN0ZXN0IgotU0VDVElPTiA9ICJ0ZXN0cyIKLURFUEVORFMgPSAibGludXgtbGliYy1oZWFkZXJzIHZpcnR1YWwvbGliYyIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvY3ljbGljdGVzdC9jeWNsaWN0ZXN0LmM7YmVnaW5saW5lPTc7ZW5kbGluZT05O21kNT1lNzY4YjhkYTQ0NTU1ZmU2M2Y2NWU1YzQ5Nzg0NGNiNSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvcGlfdGVzdHMvcGlfc3RyZXNzLmM7YmVnaW5saW5lPTY7ZW5kbGluZT0xOTttZDU9YmQ0MjZhNjM0YTQzZWM2MTJlOWZiZjEyNWRmY2M5NDkiCi0KLXJlcXVpcmUgcnQtdGVzdHMuaW5jCi1pbmhlcml0IHB0ZXN0Ci0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLU1ha2VmaWxlLVNldC1DQy1BUi12YXJpYWJsZS1vbmx5LWlmLWl0LWRvZXNuLXQtaGF2ZS0ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgICBmaWxlOi8vcnRfYm1hcmsucHkgXAotICAgICAgICAgICAiCi0jIERvIG5vdCBpbnN0YWxsIGh3bGF0ZGV0ZWN0Ci1FWFRSQV9PRU1BS0UgKz0gIlBZTElCPScnIENST1NTX0NPTVBJTEU9JHtUQVJHRVRfUFJFRklYfSIKLQotQ0ZMQUdTX3ByZXBlbmQgPSAiJHtIT1NUX0NDX0FSQ0h9JHtUT09MQ0hBSU5fT1BUSU9OU30iCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0gU0JJTkRJUj0ke3NiaW5kaXJ9IE1BTkRJUj0ke21hbmRpcn0gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5DTFVERURJUj0ke2luY2x1ZGVkaXJ9Ci19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0gICAgICAgIGNwICR7V09SS0RJUn0vcnRfYm1hcmsucHkgJHtEfSR7UFRFU1RfUEFUSH0KLX0KLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBzdHJlc3MgcHl0aG9uIHB5dGhvbi1zdWJwcm9jZXNzIHB5dGhvbi1tdWx0aXByb2Nlc3NpbmcgcHl0aG9uLWRhdGV0aW1lIHB5dGhvbi1yZSBweXRob24tbGFuZyIKLQotRklMRVNfJHtQTn0gKz0gIiR7cHJlZml4fS9zcmMvYmFja2ZpcmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL3J0LXRlc3RzXzIuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvcnQtdGVzdHNfMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzMzZjNTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL3J0LXRlc3RzXzIuMC5iYgpAQCAtMCwwICsxLDMxIEBACitTVU1NQVJZID0gIlJlYWwtVGltZSBwcmVlbXB0aW9uIHRlc3RjYXNlcyIKK0hPTUVQQUdFID0gImh0dHBzOi8vcnQud2lraS5rZXJuZWwub3JnL2luZGV4LnBocC9DeWNsaWN0ZXN0IgorU0VDVElPTiA9ICJ0ZXN0cyIKK0RFUEVORFMgPSAibGludXgtbGliYy1oZWFkZXJzIHZpcnR1YWwvbGliYyIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvY3ljbGljdGVzdC9jeWNsaWN0ZXN0LmM7YmVnaW5saW5lPTc7ZW5kbGluZT05O21kNT1lNzY4YjhkYTQ0NTU1ZmU2M2Y2NWU1YzQ5Nzg0NGNiNSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvcGlfdGVzdHMvcGlfc3RyZXNzLmM7YmVnaW5saW5lPTY7ZW5kbGluZT0xOTttZDU9YmQ0MjZhNjM0YTQzZWM2MTJlOWZiZjEyNWRmY2M5NDkiCisKK3JlcXVpcmUgcnQtdGVzdHMuaW5jCitpbmhlcml0IHB0ZXN0CisKK1NSQ19VUkkgKz0gIiBcCisgICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgIGZpbGU6Ly9ydF9ibWFyay5weSBcCisgICAgICAgICAgICIKKyMgRG8gbm90IGluc3RhbGwgaHdsYXRkZXRlY3QKK0VYVFJBX09FTUFLRSArPSAiUFlMSUI9JyciCisKK2RvX2luc3RhbGwoKSB7CisgICAgICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0gU0JJTkRJUj0ke3NiaW5kaXJ9IE1BTkRJUj0ke21hbmRpcn0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5DTFVERURJUj0ke2luY2x1ZGVkaXJ9Cit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisgICAgICAgIGNwICR7V09SS0RJUn0vcnRfYm1hcmsucHkgJHtEfSR7UFRFU1RfUEFUSH0KK30KKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBzdHJlc3MgcHl0aG9uMyBweXRob24zLXN1YnByb2Nlc3MgcHl0aG9uMy1tdWx0aXByb2Nlc3NpbmcgcHl0aG9uMy1kYXRldGltZSBweXRob24zLXJlIHB5dGhvbjMtbGFuZyBweXRob24zLW1pc2MiCisKK0ZJTEVTXyR7UE59ICs9ICIke3ByZWZpeH0vc3JjL2JhY2tmaXJlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2d0ay1lbmdpbmVzL2d0ay1zYXRvLWVuZ2luZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vZ3RrLWVuZ2luZXMvZ3RrLXNhdG8tZW5naW5lLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTM1MzhlZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vZ3RrLWVuZ2luZXMvZ3RrLXNhdG8tZW5naW5lLmluYworKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVNVTU1BUlkgPSAiU2F0byB0aGVtZSBlbmdpbmUgZm9yIEdUSysiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm8taGFuZC5jb20iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnLyIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSAmIExHUEx2MisiCi0KLVNFQ1RJT04gPSAieDExL2Jhc2UiCi1ERVBFTkRTID0gImd0aysiCi1SREVQRU5EU19ndGstdGhlbWUtc2F0byA9ICJndGstc2F0by1lbmdpbmUiCi0KLWluaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi1BTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIiR7R1RLMkRJU1RST0ZFQVRVUkVTfSIKLQotUEFDS0FHRVMgKz0gImd0ay10aGVtZS1zYXRvIgotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2d0ay0yLjAvKi9lbmdpbmVzLyouc28gIgotRklMRVNfJHtQTn0tZGV2ID0gIiR7bGliZGlyfS9ndGstMi4wLyovZW5naW5lcy8qLmxhIgotRklMRVNfZ3RrLXRoZW1lLXNhdG8gPSAiJHtkYXRhZGlyfS9pY29ucyAke2RhdGFkaXJ9L3RoZW1lcyIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZwotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLQlmb3IgaSBpbiBgbHMgZ3RrLWNvbW1vbmA7IGRvCi0JCWxuIC1zZiAuLi9ndGstY29tbW9uLyRpIGd0azItZW5naW5lLyRpCi0JZG9uZQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2d0ay1lbmdpbmVzL2d0ay1zYXRvLWVuZ2luZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vZ3RrLWVuZ2luZXMvZ3RrLXNhdG8tZW5naW5lX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGE0ZDk4YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vZ3RrLWVuZ2luZXMvZ3RrLXNhdG8tZW5naW5lX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLXJlcXVpcmUgZ3RrLXNhdG8tZW5naW5lLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3NhdG8tdXRpbHMuaDtlbmRsaW5lPTI0O21kNT03MDhmMjhjZmU3ZmUwMjhkNDk3YWFmNDM4OWI4MGI2MiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvc2F0by1tYWluLmM7ZW5kbGluZT0yNDttZDU9YjVlNWRkZGViY2E1NzAyNzViZWNiNTFiNTI2ZTRjNWEiCi0KLVNSQ1JFViA9ICI0NzQwYWQ4ZDUzYWJhNDM2OGNlM2UwM2IwNmNmZGM2OWViODZkY2RjIgotUFYgPSAiMC4zLjMrZ2l0JHtTUkNQVn0iCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvJHtCUE59IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1FWFRSQV9PRUNPTkYgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdNQUNISU5FX0ZFQVRVUkVTJywgJ3F2Z2EnLCAnLS13aXRoLW1vZGU9cXZnYScsICcnLGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9sM2FmcGFkL2wzYWZwYWRfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2wzYWZwYWQvbDNhZnBhZF9naXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2NmZGEyNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9sM2FmcGFkL2wzYWZwYWRfZ2l0LmJiCkBAIC0wLDAgKzEsMjUgQEAKK1NVTU1BUlkgPSAiU2ltcGxlIEdUSysgVGV4dCBFZGl0b3IiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vc3RldmVuaG9uZXltYW4vbDNhZnBhZCIKKworIyBOb3RlIHRoYXQgQ09QWUlORyBzZWVtcyB0byBtaXN0YWtlbmx5IGNvbnRhaW4gTEdQTHYyLjEuCisjIFRoZSBzb3VyY2UgY29kZSBpcyBtYXJrZWQgR1BMdjIrIGFuZCBDT1BZSU5HIHVzZWQgdG8gY29udGFpbgorIyB0aGF0IGFzIHdlbGwuCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9sM2FmcGFkLmg7ZW5kbGluZT0yMDttZDU9ODg0OGZkNjQ1Y2Q0NTExNWQ4Y2I0N2NhNWM0MmE1MGUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3V0aWxzLmM7ZW5kbGluZT0yMDttZDU9YWU0NzkyZjY5ZDNiYjdiN2JhOTFkNTgyYmE5YjFhMDUiCisKK0RFUEVORFMgPSAiZ3RrKzMgaW50bHRvb2wtbmF0aXZlIGdldHRleHQtbmF0aXZlIgorCitQViA9ICIwLjguMTguMS4xMStnaXQke1NSQ1BWfSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9zdGV2ZW5ob25leW1hbi9sM2FmcGFkLmdpdCIKK1NSQ1JFViA9IjNjZGNjZGM5NTA1NjQzZTUwZjgyMDgxNzFkOWVlZTVkZTExYTQyZmYiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzNESVNUUk9GRUFUVVJFU30iCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZW1hY3MgLS1kaXNhYmxlLXByaW50IgorRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vaWNvbnMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vbGVhZnBhZC9maWxlcy9sZWFmcGFkLmRlc2t0b3AgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vbGVhZnBhZC9maWxlcy9sZWFmcGFkLmRlc2t0b3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3ZTJkNWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2xlYWZwYWQvZmlsZXMvbGVhZnBhZC5kZXNrdG9wCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotW0Rlc2t0b3AgRW50cnldCi1OYW1lPU5vdGVzCi1FeGVjPS91c3IvYmluL2xlYWZwYWQKLUNvbW1lbnQ9VGV4dCBFZGl0b3IKLUljb249YWNjZXNzb3JpZXMtdGV4dC1lZGl0b3IKLVRlcm1pbmFsPWZhbHNlCi1UeXBlPUFwcGxpY2F0aW9uCi1DYXRlZ29yaWVzPUdUSztVdGlsaXR5O1RleHRFZGl0b3I7Ci1YLU1CLVNpbmdsZUluc3RhbmNlPXRydWUKLVN0YXJ0dXBOb3RpZnk9dHJ1ZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2xlYWZwYWQvZmlsZXMvb3dsLW1lbnUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vbGVhZnBhZC9maWxlcy9vd2wtbWVudS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmViZjc0YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vbGVhZnBhZC9maWxlcy9vd2wtbWVudS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW5hYmxlIGZlYXR1cmVdCi0KLS0tLSB0bXAvc3JjL21lbnUuYy5vcmlnCTIwMDctMDQtMjMgMTI6MDg6NDEuMDAwMDAwMDAwICswMTAwCi0rKysgdG1wL3NyYy9tZW51LmMJMjAwNy0wNC0yMyAxMjowODo0MS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xNTIsNyArMTUyLDcgQEAKLSAJfQotIAkKLSAJYWNjZWxfZ3JvdXAgPSBndGtfYWNjZWxfZ3JvdXBfbmV3KCk7Ci0tCWlmYWN0b3J5ID0gZ3RrX2l0ZW1fZmFjdG9yeV9uZXcoR1RLX1RZUEVfTUVOVV9CQVIsICI8bWFpbj4iLCBhY2NlbF9ncm91cCk7Ci0rCWlmYWN0b3J5ID0gZ3RrX2l0ZW1fZmFjdG9yeV9uZXcoR1RLX1RZUEVfTUVOVSwgIjxtYWluPiIsIGFjY2VsX2dyb3VwKTsKLSAJZ3RrX2l0ZW1fZmFjdG9yeV9zZXRfdHJhbnNsYXRlX2Z1bmMoaWZhY3RvcnksIG1lbnVfdHJhbnNsYXRlLCBOVUxMLCBOVUxMKTsKLSAJZ3RrX2l0ZW1fZmFjdG9yeV9jcmVhdGVfaXRlbXMoaWZhY3RvcnksIG5tZW51X2l0ZW1zLCBtZW51X2l0ZW1zLCBOVUxMKTsKLSAJZ3RrX3dpbmRvd19hZGRfYWNjZWxfZ3JvdXAoR1RLX1dJTkRPVyh3aW5kb3cpLCBhY2NlbF9ncm91cCk7Ci0KLS0tLSB0bXAvc3JjL3dpbmRvdy5jLm9yaWcJMjAwNy0wNC0yMyAxMjoxNDowNy4wMDAwMDAwMDAgKzAxMDAKLSsrKyB0bXAvc3JjL3dpbmRvdy5jCTIwMDctMDQtMjMgMTI6MTQ6MDcuMDAwMDAwMDAwICswMTAwCi1AQCAtMTgsNiArMTgsOCBAQAotICAqLwotIAotICNpbmNsdWRlICJsZWFmcGFkLmgiCi0rI2luY2x1ZGUgPGxpYm93bC9vd2x3aW5kb3dtZW51Lmg+Ci0rCi0gLyoKLSBzdGF0aWMgdm9pZCBjYl9zY3JvbGxfZXZlbnQoR3RrQWRqdXN0bWVudCAqYWRqLCBHdGtXaWRnZXQgKnZpZXcpCi0gewotQEAgLTUyLDcgKzU0LDYgQEAKLSAJZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUih3aW5kb3cpLCB2Ym94KTsKLSAJCi0gCW1lbnViYXIgPSBjcmVhdGVfbWVudV9iYXIod2luZG93KTsKLS0JZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIG1lbnViYXIsIEZBTFNFLCBGQUxTRSwgMCk7Ci0gCQotIAlzdyA9IGd0a19zY3JvbGxlZF93aW5kb3dfbmV3KE5VTEwsIE5VTEwpOwotIAlndGtfc2Nyb2xsZWRfd2luZG93X3NldF9wb2xpY3koR1RLX1NDUk9MTEVEX1dJTkRPVyhzdyksCi0KLS0tLSB0bXAvc3JjL21haW4uYy5vcmlnCTIwMDctMDQtMjMgMTI6MTU6MDMuMDAwMDAwMDAwICswMTAwCi0rKysgdG1wL3NyYy9tYWluLmMJMjAwNy0wNC0yMyAxMjoxNTowMy4wMDAwMDAwMDAgKzAxMDAKLUBAIC0yNDQsNiArMjQ0LDcgQEAKLSAJQ29uZiAqY29uZjsKLSAJR3RrSXRlbUZhY3RvcnkgKmlmYWN0b3J5OwotIAlnY2hhciAqc3RkaW5fZGF0YSA9IE5VTEw7Ci0rCUd0a1dpZGdldCAqbWVudTsKLSAJCi0gCWJpbmR0ZXh0ZG9tYWluKFBBQ0tBR0UsIExPQ0FMRURJUik7Ci0gCWJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0KFBBQ0tBR0UsICJVVEYtOCIpOwotQEAgLTI5Myw3ICsyOTQsMTAgQEAKLSAJCWNvbmYtPmF1dG9pbmRlbnQpOwotIAkKLSAJZ3RrX3dpZGdldF9zaG93X2FsbChwdWItPm13LT53aW5kb3cpOwotKwlvd2xfc2V0X3dpbmRvd19tZW51IChHVEtfV0lORE9XKHB1Yi0+bXctPndpbmRvdyksCi0rCQkJICAgICBHVEtfTUVOVShwdWItPm13LT5tZW51YmFyKSk7Ci0rCQotIAlnX2ZyZWUoY29uZi0+Zm9udG5hbWUpOwotIAlnX2ZyZWUoY29uZik7Ci0gCQotCi0tLS0gdG1wL3NyYy9NYWtlZmlsZS5hbS5vcmlnCTIwMDctMDQtMjMgMTI6MTc6NTQuMDAwMDAwMDAwICswMTAwCi0rKysgdG1wL3NyYy9NYWtlZmlsZS5hbQkyMDA3LTA0LTIzIDEyOjE3OjU0LjAwMDAwMDAwMCArMDEwMAotQEAgLTI3LDQgKzI3LDQgQEAKLSAJaTE4bi5oCi0gCi0gbGVhZnBhZF9DRkxBR1MgID0gJChHVEtfQ0ZMQUdTKSAkKEdOT01FUFJJTlRfQ0ZMQUdTKQotLWxlYWZwYWRfTERBREQgICA9ICQoR1RLX0xJQlMpICQoSU5UTExJQlMpICQoR05PTUVQUklOVF9MSUJTKQotK2xlYWZwYWRfTERBREQgICA9ICQoR1RLX0xJQlMpICQoSU5UTExJQlMpICQoR05PTUVQUklOVF9MSUJTKSAtbG93bApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2xlYWZwYWQvbGVhZnBhZF8wLjguMTguMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9sZWFmcGFkL2xlYWZwYWRfMC44LjE4LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5M2I4OWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2xlYWZwYWQvbGVhZnBhZF8wLjguMTguMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVNVTU1BUlkgPSAiU2ltcGxlIEdUSysgVGV4dCBFZGl0b3IiCi1IT01FUEFHRSA9ICJodHRwOi8vdGFyb3QuZnJlZXNoZWxsLm9yZy9sZWFmcGFkLyIKLQotTElDRU5TRSA9ICJHUEx2MiAmIEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9sZWFmcGFkLmg7ZW5kbGluZT0yMDttZDU9ZDNkNmE4OWY1ZTYxZThiMTNiZGVhNTM3NTExYmExZmEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3V0aWxzLmM7ZW5kbGluZT0yMDttZDU9MGQyY2M2NTg0YmEzMjAyNDQ4YmIyNzRmNjI3Mzk1NzEiCi0KLURFUEVORFMgPSAiZ3RrKyBpbnRsdG9vbC1uYXRpdmUgbGlib3dsIGdldHRleHQtbmF0aXZlIgotIyBUaGUgbGlib3dsIHJlcXVpcmVzIHgxMSBpbiBESVNUUk9fRkVBVFVSRVMKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLVNSQ19VUkkgPSAiJHtTQVZBTk5BSF9OT05HTlVfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCi0JICAgZmlsZTovL2xlYWZwYWQuZGVza3RvcCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjI1NGE3MmZjNjc1MDVlM2FhNTI4ODRjNzI5Y2Q3Yjk3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk1OWQyMmFlMDdmMjI4MDNiYzY2ZmY0MGQzNzNhODU0NTMyYTZlNDczMjY4MGJmOGE5NmEzZmJjYjlmODBhMmMiCi1QUiA9ICJyMiIKLQotU1JDX1VSSV9hcHBlbmRfcG9reSA9ICIgZmlsZTovL293bC1tZW51LnBhdGNoO2FwcGx5PXllcyAiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotRVhUUkFfT0VDT05GID0gIiAtLWVuYWJsZS1jaG9vc2VyIC0tZGlzYWJsZS1lbWFjcyAtLWRpc2FibGUtcHJpbnQiCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7ZGF0YWRpcn0KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7ZGF0YWRpcn0vYXBwbGljYXRpb25zCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2xlYWZwYWQuZGVza3RvcCAke0R9LyR7ZGF0YWRpcn0vYXBwbGljYXRpb25zCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucy9sZWFmcGFkLmRlc2t0b3AiCi0KLVBBQ0tBR0VTICs9ICJsZWFmcGFkLXN0b2NrLWljb25zIgotRklMRVNfbGVhZnBhZC1zdG9jay1pY29ucyA9ICIke2RhdGFkaXJ9L2ljb25zL2hpY29sb3IvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2xpYm93bC9saWJvd2xfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2xpYm93bC9saWJvd2xfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Y2M0N2RiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9saWJvd2wvbGlib3dsX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVNVTU1BUlkgPSAiT3BlbmVkSGFuZCBXaWRnZXQgTGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuby1oYW5kLmNvbSIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvIgotCi1MSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYm93bC9vd2xwYW5lZC5oO2VuZGxpbmU9MjA7bWQ1PTdmZWY4NDRjNGNjMDFiMTA1NDFhN2FiNmFiNTk3MWFmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYm93bC9vd2x0cmVlbW9kZWxzbGljZS5oO2VuZGxpbmU9MjA7bWQ1PWE1NDIxZjJjZGFlOGRlYmU1ZTRjNDhjMDlhMDJiZWI5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYm93bC9vd2xjb2xvdXJzd2F0Y2guaDtlbmRsaW5lPTI0O21kNT0wNjNjNDE1YzU4NzE5ZDUzNjk5MGNhOGY2MDZiNTczMCIKLQotU0VDVElPTiA9ICJsaWJzIgotREVQRU5EUyA9ICJndGsrIgotU1JDUkVWID0gIjZlYmM4YWM4Zjg1NzUyNzhkZDQwYTUzNWNhZGVmYTI2Mzc0ZTQ0YjEiCi1QViA9ICIwLjErZ2l0JHtTUkNQVn0iCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvJHtCUE59IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0KLSMgUmVxdWlyZXMgZ2RrL2dka3guaCB3aGljaCBpcyBwcm92aWRlZCBieSBndGsgd2hlbiB4MTEgaW4gRElTVFJPX0ZFQVRVUkVTCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL21hdGNoYm94LWNvbmZpZy1ndGsvZmlsZXMvbm8taGFuZGVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL21hdGNoYm94LWNvbmZpZy1ndGsvZmlsZXMvbm8taGFuZGVkLnBhdGNoCmluZGV4IDgyNTY5NDkuLjFjYjE4NGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1jb25maWctZ3RrL2ZpbGVzL25vLWhhbmRlZC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtY29uZmlnLWd0ay9maWxlcy9uby1oYW5kZWQucGF0Y2gKQEAgLTEsMTAgKzEsMTMgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KKy0tLQorIGFwcGVhcmFuY2UvbWItYXBwZWFyYW5jZS5jIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQogCi1JbmRleDogYXBwZWFyYW5jZS9tYi1hcHBlYXJhbmNlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhcHBlYXJhbmNlL21iLWFwcGVhcmFuY2UuYwkocmV2aXNpb24gMTYxNCkKLSsrKyBhcHBlYXJhbmNlL21iLWFwcGVhcmFuY2UuYwkod29ya2luZyBjb3B5KQotQEAgLTMwMCwxMSArMzAwLDEzIEBACitkaWZmIC0tZ2l0IGEvYXBwZWFyYW5jZS9tYi1hcHBlYXJhbmNlLmMgYi9hcHBlYXJhbmNlL21iLWFwcGVhcmFuY2UuYworaW5kZXggNmFmODM3Ni4uNzFmZDU3YiAxMDA2NDQKKy0tLSBhL2FwcGVhcmFuY2UvbWItYXBwZWFyYW5jZS5jCisrKysgYi9hcHBlYXJhbmNlL21iLWFwcGVhcmFuY2UuYworQEAgLTMxNywxMSArMzE3LDEzIEBAIG9uX2djb25mX3ZhbHVlX2NoYW5nZWQgKEdDb25mQ2xpZW50KiBjbGllbnQsIGNvbnN0IGdjaGFyKiBrZXksIEdDb25mVmFsdWUqIHZhbHVlCiAgICAgIGd0a19mb250X2J1dHRvbl9zZXRfZm9udF9uYW1lIChHVEtfRk9OVF9CVVRUT04gKGZvbnRfYnV0dG9uKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdjb25mX3ZhbHVlX2dldF9zdHJpbmcgKHZhbHVlKSk7CiAgICB9IGVsc2UgaWYgKHN0cmNtcCAoa2V5LCBIQU5ERURfS0VZKSA9PSAwKSB7CkBAIC0xOCwxOCArMjEsMTkgQEAKICAgIH0KICB9CiAgCi1AQCAtMzk1LDEyICszOTcsMTMgQEAKLSAgIGd0a19jb250YWluZXJfYWRkIChHVEtfQ09OVEFJTkVSIChhbGlnbiksIGZvbnRfYnV0dG9uKTsKK0BAIC00MDgsMTAgKzQxMCwxMiBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKICAKICAgIC8qIExlZnQvUmlnaHQgSGFuZGVkICovCi0tICAKKyAgIAogKyNpZiAwCi0gICBmcmFtZSA9IG5ld19mcmFtZSAoXygiT3JpZW50YXRpb24iKSwgJmFsaWduKTsKLSAgIGd0a19ib3hfcGFja19zdGFydCAoR1RLX0JPWCAoYm94KSwgZnJhbWUsIFRSVUUsIFRSVUUsIDApOwogICAgaGFuZGVkX2NoZWNrID0gZ3RrX2NoZWNrX2J1dHRvbl9uZXdfd2l0aF9tbmVtb25pYyAoXygiX0xlZnQtaGFuZGVkIikpOworICAgZnJhbWUgPSBuZXdfZnJhbWUgKF8oIk9yaWVudGF0aW9uIiksaGFuZGVkX2NoZWNrKTsKKyAgIGd0a19ib3hfcGFja19zdGFydCAoR1RLX0JPWCAoYm94KSwgZnJhbWUsIFRSVUUsIFRSVUUsIDApOwogICAgZ19zaWduYWxfY29ubmVjdCAoaGFuZGVkX2NoZWNrLCAidG9nZ2xlZCIsIEdfQ0FMTEJBQ0sgKG9uX2hhbmRlZF9zZXQpLCBOVUxMKTsKLSAgIGd0a19jb250YWluZXJfYWRkIChHVEtfQ09OVEFJTkVSIChhbGlnbiksIGhhbmRlZF9jaGVjayk7CiArI2VuZGlmCiAgCiAgICBnY29uZl9jbGllbnRfYWRkX2RpciAoZ2NvbmYsIElOVEVSRkFDRV9ESVIsIEdDT05GX0NMSUVOVF9QUkVMT0FEX09ORUxFVkVMLCBOVUxMKTsKICAgIGdfc2lnbmFsX2Nvbm5lY3QgKGdjb25mLCAidmFsdWUtY2hhbmdlZCIsIEdfQ0FMTEJBQ0sgKG9uX2djb25mX3ZhbHVlX2NoYW5nZWQpLCBOVUxMKTsKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL21hdGNoYm94LWNvbmZpZy1ndGsvbWF0Y2hib3gtY29uZmlnLWd0a18wLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtY29uZmlnLWd0ay9tYXRjaGJveC1jb25maWctZ3RrXzAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTkzYTk0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL21hdGNoYm94LWNvbmZpZy1ndGsvbWF0Y2hib3gtY29uZmlnLWd0a18wLjIuYmIKQEAgLTAsMCArMSwyMyBAQAorU1VNTUFSWSA9ICJNYXRjaGJveCBHVEsrIHRoZW1lIGNvbmZpZ3VyYXRpb24gYXBwbGljYXRpb24iCitIT01FUEFHRSA9ICJodHRwOi8vbWF0Y2hib3gtcHJvamVjdC5vcmciCitCVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnLyIKKworTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hcHBlYXJhbmNlL21iLWFwcGVhcmFuY2UuYztlbmRsaW5lPTI1O21kNT1lYTkyMzMzY2Y4YTY4MDI2MzlkNjJkODc0YzExNGEyOCIKKworREVQRU5EUyA9ICJnY29uZiBndGsrMyIKK1JERVBFTkRTXyR7UE59ID0gInNldHRpbmdzLWRhZW1vbiIKKworIyBTUkNSRVYgdGFnZ2VkIDAuMgorU1JDUkVWID0gImVmMjE5MmNlOThkOTM3NGZmZGFkNWY3ODU0NGMzZjhmMzUzYzE2YWEiCitTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnLyR7QlBOfSBcCisgICAgICAgICAgIGZpbGU6Ly9uby1oYW5kZWQucGF0Y2giCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj4oXGQrKFwuXGQrKSspKSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCisjIFRoZSBzZXR0aW5ncy1kYWVtb24gcmVxdWlyZXMgeDExIGluIERJU1RST19GRUFUVVJFUworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1jb25maWctZ3RrL21hdGNoYm94LWNvbmZpZy1ndGtfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL21hdGNoYm94LWNvbmZpZy1ndGsvbWF0Y2hib3gtY29uZmlnLWd0a19naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmNzNhNGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL21hdGNoYm94LWNvbmZpZy1ndGsvbWF0Y2hib3gtY29uZmlnLWd0a19naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1TVU1NQVJZID0gIk1hdGNoYm94IEdUSysgdGhlbWUgY29uZmlndXJhdGlvbiBhcHBsaWNhdGlvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly9tYXRjaGJveC1wcm9qZWN0Lm9yZyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvIgotCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2FwcGVhcmFuY2UvbWItYXBwZWFyYW5jZS5jO2VuZGxpbmU9MjU7bWQ1PWVhOTIzMzNjZjhhNjgwMjYzOWQ2MmQ4NzRjMTE0YTI4IgotCi1ERVBFTkRTID0gImdjb25mIGd0aysiCi1SREVQRU5EU18ke1BOfSA9ICJzZXR0aW5ncy1kYWVtb24iCi0KLVNSQ1JFViA9ICIzZWQ3NGRmYjdjNTdiZTA4OGE1YWIzNmU0NDZjMGNjZGU5ZmExMDI4IgotUFYgPSAiMC4wK2dpdCR7U1JDUFZ9IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnLyR7QlBOfSBcCi0gICAgICAgIGZpbGU6Ly9uby1oYW5kZWQucGF0Y2g7c3RyaXBsZXZlbD0wIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0KLSMgVGhlIHNldHRpbmdzLWRhZW1vbiByZXF1aXJlcyB4MTEgaW4gRElTVFJPX0ZFQVRVUkVTCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL21hdGNoYm94LWRlc2t0b3Atc2F0by9tYXRjaGJveC1kZXNrdG9wLXNhdG9fZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL21hdGNoYm94LWRlc2t0b3Atc2F0by9tYXRjaGJveC1kZXNrdG9wLXNhdG9fZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTc5Y2JiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1kZXNrdG9wLXNhdG8vbWF0Y2hib3gtZGVza3RvcC1zYXRvX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVNVTU1BUlkgPSAiTWF0Y2hib3ggZGVza3RvcCBmb2xkZXJzIGZvciB0aGUgU2F0byBlbnZpcm9ubWVudCIKLUhPTUVQQUdFID0gImh0dHA6Ly9tYXRjaGJveC1wcm9qZWN0Lm9yZyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIiCi0KLVNFQ1RJT04gPSAieDExIgotREVQRU5EUyA9ICIiCi1SQ09ORkxJQ1RTXyR7UE59ID0gIm1hdGNoYm94LWNvbW1vbiIKLQotU1JDUkVWID0gIjgxMGIwYjA4ZWI3OWU0Njg1MjAyZGEyZWMzNDdiOTkwYmI0NjdlMDciCi1QViA9ICIwLjErZ2l0JHtTUkNQVn0iCi1QUiA9ICJyMSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy8ke0JQTn0iCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1kZXNrdG9wL2ZpbGVzLzAwMDEtRG8tbm90aGluZy1vbi1kZWxldGUtZXZlbnQtd2hlbi1ub3QtU1RBTkRBTE9ORS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1kZXNrdG9wL2ZpbGVzLzAwMDEtRG8tbm90aGluZy1vbi1kZWxldGUtZXZlbnQtd2hlbi1ub3QtU1RBTkRBTE9ORS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDYzOTdkYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtZGVza3RvcC9maWxlcy8wMDAxLURvLW5vdGhpbmctb24tZGVsZXRlLWV2ZW50LXdoZW4tbm90LVNUQU5EQUxPTkUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi1Gcm9tIDVmZTM3ZWYzODUwMGY4NThhMjJlY2RmOWJmNjliZjA2ZTIxM2JmNjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogVHVlLCAyMiBNYXIgMjAxNiAxMjo0MTozNSArMDIwMAotU3ViamVjdDogW1BBVENIXSBEbyBub3RoaW5nIG9uIGRlbGV0ZS1ldmVudCB3aGVuIG5vdCBTVEFOREFMT05FCi0KLVRoaXMgcHJldmVudHMgYW4gb3Bwb3J0dW5pc3RpYyBhbHQtRjQgZnJvbSBjbG9zaW5nIHRoZSBkZXNrdG9wLgotCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0tLS0KLSBzcmMvZGVza3RvcC5jIHwgMTIgKysrKysrKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9kZXNrdG9wLmMgYi9zcmMvZGVza3RvcC5jCi1pbmRleCBkNGZjMmZiLi45NGI0ZGRmIDEwMDY0NAotLS0tIGEvc3JjL2Rlc2t0b3AuYwotKysrIGIvc3JjL2Rlc2t0b3AuYwotQEAgLTEyMiw2ICsxMjIsMTUgQEAgbG9hZF9pdGVtcyAoVGFrdU1lbnUgKm1lbnUpCi0gCi0gfQotIAotKyNpZm5kZWYgU1RBTkRBTE9ORQotK3N0YXRpYyBnYm9vbGVhbgotK2RlbGV0ZV9ldmVudF9jYiAoR3RrV2lkZ2V0ICp3aWRnZXQsIEdka0V2ZW50ICpldmVudCwgZ3BvaW50ZXIgdXNlcl9kYXRhKQotK3sKLSsgIC8qIHByZXZlbnQgZGVmYXVsdCBoYW5kbGVyIGZyb20gZGVzdHJveWluZyB0aGUgd2luZG93ICovCi0rICByZXR1cm4gVFJVRTsKLSt9Ci0rI2VuZGlmCi0rCi0gc3RhdGljIHZvaWQKLSB3b3JrYXJlYV9jaGFuZ2VkIChpbnQgeCwgaW50IHksIGludCB3LCBpbnQgaCkKLSB7Ci1AQCAtMTQ0LDExICsxNTMsMTEgQEAgY3JlYXRlX2Rlc2t0b3AgKHZvaWQpCi0gICBndGtfaWNvbl9zaXplX3JlZ2lzdGVyICgidGFrdS1pY29uIiwgNjQsIDY0KTsKLSAKLSAgIHdpbmRvdyA9IGd0a193aW5kb3dfbmV3IChHVEtfV0lORE9XX1RPUExFVkVMKTsKLS0gIGdfc2lnbmFsX2Nvbm5lY3QgKHdpbmRvdywgImRlbGV0ZS1ldmVudCIsIEdfQ0FMTEJBQ0sgKGd0a19tYWluX3F1aXQpLCBOVUxMKTsKLSAgIGd0a193aWRnZXRfc2V0X25hbWUgKHdpbmRvdywgIlRha3VXaW5kb3ciKTsKLSAgIGd0a193aW5kb3dfc2V0X3RpdGxlIChHVEtfV0lORE9XICh3aW5kb3cpLCBfKCJEZXNrdG9wIikpOwotIAotICNpZm5kZWYgU1RBTkRBTE9ORQotKyAgZ19zaWduYWxfY29ubmVjdCAod2luZG93LCAiZGVsZXRlLWV2ZW50IiwgR19DQUxMQkFDSyAoZGVsZXRlX2V2ZW50X2NiKSwgTlVMTCk7Ci0gICBndGtfd2luZG93X3NldF90eXBlX2hpbnQgKEdUS19XSU5ET1cgKHdpbmRvdyksIEdES19XSU5ET1dfVFlQRV9ISU5UX0RFU0tUT1ApOwotICAgZ3RrX3dpbmRvd19zZXRfc2tpcF90YXNrYmFyX2hpbnQgKEdUS19XSU5ET1cgKHdpbmRvdyksIFRSVUUpOwotIAotQEAgLTE1Niw2ICsxNjUsNyBAQCBjcmVhdGVfZGVza3RvcCAodm9pZCkKLSAgIHNjcmVlbl93ID0gZ2RrX3NjcmVlbl9nZXRfd2lkdGggKHNjcmVlbik7Ci0gICBzY3JlZW5faCA9IGdka19zY3JlZW5fZ2V0X2hlaWdodCAoc2NyZWVuKTsKLSAjZWxzZQotKyAgZ19zaWduYWxfY29ubmVjdCAod2luZG93LCAiZGVsZXRlLWV2ZW50IiwgR19DQUxMQkFDSyAoZ3RrX21haW5fcXVpdCksIE5VTEwpOwotICAgc2NyZWVuX3cgPSA2NDA7Ci0gICBzY3JlZW5faCA9IDQ4MDsKLSAjZW5kaWYKLS0tIAotMi43LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL21hdGNoYm94LWRlc2t0b3AvZmlsZXMvdmZvbGRlcnMvQWxsLmRpcmVjdG9yeSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1kZXNrdG9wL2ZpbGVzL3Zmb2xkZXJzL0FsbC5kaXJlY3RvcnkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGZhNDFlMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1kZXNrdG9wL2ZpbGVzL3Zmb2xkZXJzL0FsbC5kaXJlY3RvcnkKQEAgLTAsMCArMSw1IEBACitbRGVza3RvcCBFbnRyeV0KK05hbWU9QWxsCitJY29uPW1iZm9sZGVyLnBuZworVHlwZT1EaXJlY3RvcnkKK01hdGNoPW1ldGEtYWxsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtZGVza3RvcC9maWxlcy92Zm9sZGVycy9BcHBsaWNhdGlvbnMuZGlyZWN0b3J5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL21hdGNoYm94LWRlc2t0b3AvZmlsZXMvdmZvbGRlcnMvQXBwbGljYXRpb25zLmRpcmVjdG9yeQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hN2UzNTAxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL21hdGNoYm94LWRlc2t0b3AvZmlsZXMvdmZvbGRlcnMvQXBwbGljYXRpb25zLmRpcmVjdG9yeQpAQCAtMCwwICsxLDYgQEAKK1tEZXNrdG9wIEVudHJ5XQorTmFtZT1BcHBsaWNhdGlvbnMKK0NvbW1lbnQ9QXBwbGljYXRpb25zCitJY29uPWdub21lLWFwcGxpY2F0aW9ucy5wbmcKK1R5cGU9RGlyZWN0b3J5CitNYXRjaD1BdWRpb1ZpZGVvO0F1ZGlvO1ZpZGVvO0dyYXBoaWNzO05ldHdvcms7T2ZmaWNlO1V0aWxpdHk7U3lzdGVtO0RldmVsb3BtZW50O21ldGEtZmFsbGJhY2s7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtZGVza3RvcC9maWxlcy92Zm9sZGVycy9HYW1lcy5kaXJlY3RvcnkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtZGVza3RvcC9maWxlcy92Zm9sZGVycy9HYW1lcy5kaXJlY3RvcnkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWIwOTI4YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1kZXNrdG9wL2ZpbGVzL3Zmb2xkZXJzL0dhbWVzLmRpcmVjdG9yeQpAQCAtMCwwICsxLDkgQEAKK1tEZXNrdG9wIEVudHJ5XQorTmFtZT1HYW1lcworTmFtZVtkZV09U3BpZWxlCitDb21tZW50PUdhbWVzIG9mIGFsbCBraW5kCitDb21tZW50W2RlXT1TcGllbGUgYWxsZXIgQXJ0CitJY29uPW1iZm9sZGVyLnBuZworVHlwZT1EaXJlY3RvcnkKK01hdGNoPUdhbWUKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL21hdGNoYm94LWRlc2t0b3AvZmlsZXMvdmZvbGRlcnMvUm9vdC5vcmRlciBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1kZXNrdG9wL2ZpbGVzL3Zmb2xkZXJzL1Jvb3Qub3JkZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDFhODZkMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1kZXNrdG9wL2ZpbGVzL3Zmb2xkZXJzL1Jvb3Qub3JkZXIKQEAgLTAsMCArMSw0IEBACitBcHBsaWNhdGlvbnMKK0dhbWVzCitTZXR0aW5ncworQWxsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtZGVza3RvcC9maWxlcy92Zm9sZGVycy9TZXR0aW5ncy5kaXJlY3RvcnkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtZGVza3RvcC9maWxlcy92Zm9sZGVycy9TZXR0aW5ncy5kaXJlY3RvcnkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWRkZTM2NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1kZXNrdG9wL2ZpbGVzL3Zmb2xkZXJzL1NldHRpbmdzLmRpcmVjdG9yeQpAQCAtMCwwICsxLDggQEAKK1tEZXNrdG9wIEVudHJ5XQorTmFtZT1TZXR0aW5ncworTmFtZVtkZV09RWluc3RlbGx1bmdlbgorQ29tbWVudD1TZXR0aW5ncyBmb3IgeW91ciBoYW5kaGVsZCBjb21wdXRlcgorQ29tbWVudFtkZV09RWluc3RlbGx1bmdlbiBmw7xyIElocmVuIEhhbmRoZWxkLUNvbXB1dGVyCitJY29uPW1iZm9sZGVyLnBuZworVHlwZT1EaXJlY3RvcnkKK01hdGNoPVNldHRpbmdzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtZGVza3RvcC9tYXRjaGJveC1kZXNrdG9wXzIuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1kZXNrdG9wL21hdGNoYm94LWRlc2t0b3BfMi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5YTJmMjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtZGVza3RvcC9tYXRjaGJveC1kZXNrdG9wXzIuMS5iYgpAQCAtMCwwICsxLDMzIEBACitTVU1NQVJZID0gIk1hdGNoYm94IFdpbmRvdyBNYW5hZ2VyIERlc2t0b3AiCitIT01FUEFHRSA9ICJodHRwOi8vbWF0Y2hib3gtcHJvamVjdC5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy8iCisKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9kZXNrdG9wLmM7ZW5kbGluZT0yMDttZDU9MzZjOWJmMjk1ZTYwMDdmMzQyMzA5NWY0MDVhZjVhMmQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL21haW4uYztlbmRsaW5lPTE5O21kNT0yMDQ0MjQ0Zjk3YTE5NWMyNWI3ZGM2MDJhYzdlOWEwMCIKKworREVQRU5EUyA9ICJndGsrMyBzdGFydHVwLW5vdGlmaWNhdGlvbiBkYnVzIgorU0VDVElPTiA9ICJ4MTEvd20iCisKKyMgU1JDUkVWIHRhZ2dlZCAyLjEKK1NSQ1JFViA9ICJjODQ3MzUxOWEwZjM3NDg4YjhiM2U4MzllMjc1YjAwMGNkZGUwYjgwIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy8ke0JQTn0tMiBcCisgICAgICAgICAgIGZpbGU6Ly92Zm9sZGVycy8qIFwKKyAgICAgICAgICAgIgorCitFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc3RhcnR1cC1ub3RpZmljYXRpb24gLS13aXRoLWRidXMiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworIyBUaGUgc3RhcnR1cC1ub3RpZmljYXRpb24gcmVxdWlyZXMgeDExIGluIERJU1RST19GRUFUVVJFUworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9tYXRjaGJveC92Zm9sZGVycy8KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS92Zm9sZGVycy8qICR7RH0ke2RhdGFkaXJ9L21hdGNoYm94L3Zmb2xkZXJzLworfQorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9tYXRjaGJveC92Zm9sZGVycy8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtZGVza3RvcC9tYXRjaGJveC1kZXNrdG9wX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1kZXNrdG9wL21hdGNoYm94LWRlc2t0b3BfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYmU4YzExLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1kZXNrdG9wL21hdGNoYm94LWRlc2t0b3BfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotU1VNTUFSWSA9ICJNYXRjaGJveCBXaW5kb3cgTWFuYWdlciBEZXNrdG9wIgotSE9NRVBBR0UgPSAiaHR0cDovL21hdGNoYm94LXByb2plY3Qub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvIgotCi1MSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJ0YWt1L2VnZ3NlcXVlbmNlLmg7ZW5kbGluZT0yMDttZDU9YjkxZjY4Zjc2NDJhMTQ1OWZhMWY0YzlkZjk0YThmMTUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2Rlc2t0b3AuYztlbmRsaW5lPTIwO21kNT0zNmM5YmYyOTVlNjAwN2YzNDIzMDk1ZjQwNWFmNWEyZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbWFpbi5jO2VuZGxpbmU9MTk7bWQ1PTIwNDQyNDRmOTdhMTk1YzI1YjdkYzYwMmFjN2U5YTAwIgotCi1ERVBFTkRTID0gImd0aysgc3RhcnR1cC1ub3RpZmljYXRpb24gZGJ1cyIKLVNFQ1RJT04gPSAieDExL3dtIgotU1JDUkVWID0gIjcxZTNlNmUwNDI3MWU5ZDVhMTRmMWMyMzFlZjEwMGM3ZjMyMDEzNGQiCi1QViA9ICIyLjArZ2l0JHtTUkNQVn0iCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvJHtCUE59LTIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3RoaW5nLW9uLWRlbGV0ZS1ldmVudC13aGVuLW5vdC1TVEFOREFMT05FLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc3RhcnR1cC1ub3RpZmljYXRpb24gLS13aXRoLWRidXMiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotIyBUaGUgc3RhcnR1cC1ub3RpZmljYXRpb24gcmVxdWlyZXMgeDExIGluIERJU1RST19GRUFUVVJFUwotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1rZXlib2FyZC9tYXRjaGJveC1rZXlib2FyZF8wLjEuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1rZXlib2FyZC9tYXRjaGJveC1rZXlib2FyZF8wLjEuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjVmMTM0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL21hdGNoYm94LWtleWJvYXJkL21hdGNoYm94LWtleWJvYXJkXzAuMS4xLmJiCkBAIC0wLDAgKzEsNTkgQEAKK1NVTU1BUlkgPSAiTWF0Y2hib3ggdmlydHVhbCBrZXlib2FyZCBmb3IgWDExIgorSE9NRVBBR0UgPSAiaHR0cDovL21hdGNoYm94LXByb2plY3Qub3JnIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy8iCitTRUNUSU9OID0gIngxMSIKKworTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9tYXRjaGJveC1rZXlib2FyZC5oO2VuZGxpbmU9MTc7bWQ1PTlkNjU4NmM2OWU0YTkyNmYzY2IwYjQ0MjVmMjRiYTNjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2FwcGxldC9hcHBsZXQuYztlbmRsaW5lPTE4O21kNT00YTBmNzIxNzI0NzQ2YjE0ZDk1YjUxZGRkNDJiOTVlNyIKKworREVQRU5EUyA9ICJsaWJmYWtla2V5IGV4cGF0IGxpYnhmdCIKKworI1NSQ1JFViBmb3IgMC4xLjEKK1NSQ1JFViA9ICI2MzBkODkwNjhkYzBhMWU5MTk5MzA2ZDQwNWNiMzJmODkyZGZhNGQzIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy8ke0JQTn07YnJhbmNoPW1hdGNoYm94LWtleWJvYXJkLTAtMSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRlc2t0b3AtZmlsZS1IaWRlLXRoZS1rZXlib2FyZC1mcm9tLWFwcC1saXN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzgwbWF0Y2hib3hrZXlib2FyZC5zaCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgZ3RrLWltbW9kdWxlcy1jYWNoZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworIyBUaGUgbGlieGZ0LCBsaWJmYWtla2V5IGFuZCBtYXRjaGJveC1wYW5lbC0yIHJlcXVpcmVzIHgxMSBpbiBESVNUUk9fRkVBVFVSRVMKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtY2Fpcm8iCisKK1BBQ0tBR0VDT05GSUcgPz89ICJndGszLWltIGFwcGxldCIKK1BBQ0tBR0VDT05GSUdbYXBwbGV0XSA9ICItLWVuYWJsZS1hcHBsZXQsLS1kaXNhYmxlLWFwcGxldCxtYXRjaGJveC1wYW5lbC0yIgorUEFDS0FHRUNPTkZJR1tndGsyLWltXSA9ICItLWVuYWJsZS1ndGstaW0sLS1kaXNhYmxlLWd0ay1pbSxndGsrIgorUEFDS0FHRUNPTkZJR1tndGszLWltXSA9ICItLWVuYWJsZS1ndGszLWltLC0tZGlzYWJsZS1ndGszLWltLGd0ayszIgorCitQQUNLQUdFUyArPSAiJHtQTn0taW0gJHtQTn0tYXBwbGV0IgorCitGSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vIFwKKwkgICAgICAgJHtzeXNjb25mZGlyfSBcCisJICAgICAgICR7ZGF0YWRpcn0vYXBwbGljYXRpb25zIFwKKwkgICAgICAgJHtkYXRhZGlyfS9waXhtYXBzIFwKKwkgICAgICAgJHtkYXRhZGlyfS9tYXRjaGJveC1rZXlib2FyZCIKKworRklMRVNfJHtQTn0taW0gPSAiJHtsaWJkaXJ9L2d0ay0yLjAvKi9pbW1vZHVsZXMvKi5zbyBcCisgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZ3RrLTMuMC8qL2ltbW9kdWxlcy8qLnNvIgorCitGSUxFU18ke1BOfS1hcHBsZXQgPSAiJHtsaWJkaXJ9L21hdGNoYm94LXBhbmVsLyouc28iCisKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCWluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L1gxMS9Yc2Vzc2lvbi5kLworCWluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vODBtYXRjaGJveGtleWJvYXJkLnNoICR7RH0vJHtzeXNjb25mZGlyfS9YMTEvWHNlc3Npb24uZC8KKworCXJtIC1mICR7RH0ke2xpYmRpcn0vZ3RrLTIuMC8qL2ltbW9kdWxlcy8qLmxhCisJcm0gLWYgJHtEfSR7bGliZGlyfS9ndGstMy4wLyovaW1tb2R1bGVzLyoubGEKKwlybSAtZiAke0R9JHtsaWJkaXJ9L21hdGNoYm94LXBhbmVsLyoubGEKK30KKworR1RLSU1NT0RVTEVTX1BBQ0tBR0VTID0gIiR7UE59LWltIgorCitSREVQRU5EU18ke1BOfSA9ICJmb3JtZmFjdG9yIGRidXMtd2FpdCIKK1JSRUNPTU1FTkRTXyR7UE59ID0gIiR7UE59LWFwcGxldCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1rZXlib2FyZC9tYXRjaGJveC1rZXlib2FyZF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gta2V5Ym9hcmQvbWF0Y2hib3gta2V5Ym9hcmRfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYmExOTcwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1rZXlib2FyZC9tYXRjaGJveC1rZXlib2FyZF9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1TVU1NQVJZID0gIk1hdGNoYm94IHZpcnR1YWwga2V5Ym9hcmQgZm9yIFgxMSIKLUhPTUVQQUdFID0gImh0dHA6Ly9tYXRjaGJveC1wcm9qZWN0Lm9yZyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvIgotU0VDVElPTiA9ICJ4MTEiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbWF0Y2hib3gta2V5Ym9hcmQuaDtlbmRsaW5lPTE3O21kNT05ZDY1ODZjNjllNGE5MjZmM2NiMGI0NDI1ZjI0YmEzYyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hcHBsZXQvYXBwbGV0LmM7ZW5kbGluZT0xODttZDU9NGEwZjcyMTcyNDc0NmIxNGQ5NWI1MWRkZDQyYjk1ZTciCi0KLURFUEVORFMgPSAibGliZmFrZWtleSBleHBhdCBsaWJ4ZnQgZ3RrKyBtYXRjaGJveC1wYW5lbC0yIgotCi1TUkNSRVYgPSAiZWJjMzMwZWFjOGI5ZDM4ZTlhZWY5ZjAxZTcyNDFjOTA0YmQwMTA3MyIKLVBWID0gIjAuMCtnaXQke1NSQ1BWfSIKLVBSID0gInI0IgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnLyR7QlBOfTticmFuY2g9bWF0Y2hib3gta2V5Ym9hcmQtMC0xIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZGVza3RvcC1maWxlLUhpZGUtdGhlLWtleWJvYXJkLWZyb20tYXBwLWxpc3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vODBtYXRjaGJveGtleWJvYXJkLnNoIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBndGstaW1tb2R1bGVzLWNhY2hlIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi0jIFRoZSBsaWJ4ZnQsIGxpYmZha2VrZXkgYW5kIG1hdGNoYm94LXBhbmVsLTIgcmVxdWlyZXMgeDExIGluIERJU1RST19GRUFUVVJFUwotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1jYWlybyAtLWVuYWJsZS1ndGstaW0gLS1lbmFibGUtYXBwbGV0IgotCi1QQUNLQUdFUyArPSAiJHtQTn0taW0gJHtQTn0tYXBwbGV0IgotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vIFwKLQkgICAgICAgJHtzeXNjb25mZGlyfSBcCi0JICAgICAgICR7ZGF0YWRpcn0vYXBwbGljYXRpb25zIFwKLQkgICAgICAgJHtkYXRhZGlyfS9waXhtYXBzIFwKLQkgICAgICAgJHtkYXRhZGlyfS9tYXRjaGJveC1rZXlib2FyZCIKLQotRklMRVNfJHtQTn0taW0gPSAiJHtsaWJkaXJ9L2d0ay0yLjAvKi9pbW1vZHVsZXMvKi5zbyIKLQotRklMRVNfJHtQTn0tYXBwbGV0ID0gIiR7bGliZGlyfS9tYXRjaGJveC1wYW5lbC8qLnNvIgotCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9YMTEvWHNlc3Npb24uZC8KLQlpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9LzgwbWF0Y2hib3hrZXlib2FyZC5zaCAke0R9LyR7c3lzY29uZmRpcn0vWDExL1hzZXNzaW9uLmQvCi0KLQlybSAtZiAke0R9JHtsaWJkaXJ9L2d0ay0yLjAvKi9pbW1vZHVsZXMvKi5sYQotCXJtIC1mICR7RH0ke2xpYmRpcn0vbWF0Y2hib3gtcGFuZWwvKi5sYQotfQotCi1HVEtJTU1PRFVMRVNfUEFDS0FHRVMgPSAiJHtQTn0taW0iCi0KLVJERVBFTkRTXyR7UE59ID0gImZvcm1mYWN0b3IgZGJ1cy13YWl0IgotUlJFQ09NTUVORFNfJHtQTn0gPSAiJHtQTn0tYXBwbGV0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL21hdGNoYm94LXBhbmVsLTIvZmlsZXMvMDAwMS1hcHBsZXRzLXN5c3RyYXktQWxsb3ctaWNvbnMtdG8tYmUtc21hbGxlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1wYW5lbC0yL2ZpbGVzLzAwMDEtYXBwbGV0cy1zeXN0cmF5LUFsbG93LWljb25zLXRvLWJlLXNtYWxsZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDEzZGQzZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1wYW5lbC0yL2ZpbGVzLzAwMDEtYXBwbGV0cy1zeXN0cmF5LUFsbG93LWljb25zLXRvLWJlLXNtYWxsZXIucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSBmODNhOTE3OTY5NmIyZDA2MGVlNDg2MDczM2RhZmJmMzhiYmQ0Yjg3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK0RhdGU6IFdlZCwgMjggU2VwIDIwMTYgMTU6MDU6NDEgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gYXBwbGV0cy9zeXN0cmF5OiBBbGxvdyBpY29ucyB0byBiZSBzbWFsbGVyCisKK0Rvbid0IGV4cGFuZC9maWxsIHRoZSBzeXN0cmF5IGl0ZW1zLCBhbGlnbiB0aGVtIGluIHRoZSBjZW50ZXIgb2YgdGhlCitzeXN0cmF5IHBhbmVsLiBUaGlzIG1ha2VzIHN1cmUgdGhlIGljb25zIGFyZSBkcmF3biBhdCB0aGUgc2l6ZSB0aGV5CitleHBlY3QuCisKK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorLS0tCisgYXBwbGV0cy9zeXN0cmF5L3N5c3RyYXkuYyB8IDUgKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYXBwbGV0cy9zeXN0cmF5L3N5c3RyYXkuYyBiL2FwcGxldHMvc3lzdHJheS9zeXN0cmF5LmMKK2luZGV4IDM5Njk4YTguLjk0YTU3NTMgMTAwNjQ0CistLS0gYS9hcHBsZXRzL3N5c3RyYXkvc3lzdHJheS5jCisrKysgYi9hcHBsZXRzL3N5c3RyYXkvc3lzdHJheS5jCitAQCAtMjksOCArMjksOSBAQCBvbl9yZWFsaXplIChHdGtXaWRnZXQgKndpZGdldCwgZ3BvaW50ZXIgdXNlcl9kYXRhKQorICAgdHJheSA9IChHdGtXaWRnZXQgKiluYV90cmF5X25ld19mb3Jfc2NyZWVuIChzY3JlZW4sIG9yaWVudGF0aW9uKTsKKyAKKyAgIGd0a193aWRnZXRfc2hvdyAodHJheSk7CistCistICBndGtfY29udGFpbmVyX2FkZCAoR1RLX0NPTlRBSU5FUiAod2lkZ2V0KSwgdHJheSk7CisrICBndGtfd2lkZ2V0X3NldF92YWxpZ24gKHRyYXksIEdUS19BTElHTl9DRU5URVIpOworKyAgZ3RrX3dpZGdldF9zZXRfaGFsaWduICh0cmF5LCBHVEtfQUxJR05fQ0VOVEVSKTsKKysgIGd0a19ib3hfcGFja19zdGFydCAoR1RLX0JPWCAod2lkZ2V0KSwgdHJheSwgRkFMU0UsIEZBTFNFLCAwKTsKKyB9CisgCisgR19NT0RVTEVfRVhQT1JUIEd0a1dpZGdldCAqCistLSAKKzIuMS40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1wYW5lbC0yL2ZpbGVzLzAwMDEtc2hvd2Rlc2t0b3AtTWFrZS1zdXJlLWFjdGl2ZS1zdGF0ZS1pcy1pbml0aWFsaXplZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1wYW5lbC0yL2ZpbGVzLzAwMDEtc2hvd2Rlc2t0b3AtTWFrZS1zdXJlLWFjdGl2ZS1zdGF0ZS1pcy1pbml0aWFsaXplZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2JhYjZkMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtcGFuZWwtMi9maWxlcy8wMDAxLXNob3dkZXNrdG9wLU1ha2Utc3VyZS1hY3RpdmUtc3RhdGUtaXMtaW5pdGlhbGl6ZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1Gcm9tIGEwYjVmY2EwNGRhMjA4OTkwZjNjNDBlNjVkYmIwNDVkYTRjZGIzNWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogU3VuLCAyMCBNYXIgMjAxNiAxMzoyNDozNyArMDIwMAotU3ViamVjdDogW1BBVENIXSBzaG93ZGVza3RvcDogTWFrZSBzdXJlIGFjdGl2ZSBzdGF0ZSBpcyBpbml0aWFsaXplZAotCi1UaGVyZSBhcmUgY2FzZXMgKGluIHFlbXUgYXQgbGVhc3QpIHdoZXJlIHNldF9hY3RpdmUoKQotaXMgbmV2ZXIgY2FsbGVkIG9uIHN0YXJ0dXAuIE1ha2Ugc3VyZSB3ZSBpbml0aWFsaXplIHRoZSBhY3RpdmUKLXN0YXRlIHNvIHRoZSBpY29uIGdldHMgbG9hZGVkIGFuZCB0aGUgYXBwbGV0IGlzIG5vdCBjb25mdXNlZAotYWJvdXQgdGhlIGN1cnJlbnQgc3RhdGUuCi0KLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLS0tLQotIGFwcGxldHMvc2hvd2Rlc2t0b3Avc2hvd2Rlc2t0b3AuYyB8IDEwICsrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvYXBwbGV0cy9zaG93ZGVza3RvcC9zaG93ZGVza3RvcC5jIGIvYXBwbGV0cy9zaG93ZGVza3RvcC9zaG93ZGVza3RvcC5jCi1pbmRleCA2MWRkNWMyLi4zM2MxM2UxIDEwMDY0NAotLS0tIGEvYXBwbGV0cy9zaG93ZGVza3RvcC9zaG93ZGVza3RvcC5jCi0rKysgYi9hcHBsZXRzL3Nob3dkZXNrdG9wL3Nob3dkZXNrdG9wLmMKLUBAIC0xODEsNiArMTgxLDEyIEBAIGJ1dHRvbl9jbGlja2VkX2NiIChHdGtCdXR0b24gICAgICAgICAqYnV0dG9uLAotIAkgICAgICAgICAgICAmeGV2KTsKLSB9Ci0gCi0rc3RhdGljIHZvaWQKLStyZWFsaXplX2NiIChHdGtXaWRnZXQgKmJ1dHRvbiwgU2hvd0Rlc2t0b3BBcHBsZXQgKmFwcGxldCkKLSt7Ci0rICAgICAgICBzeW5jX2FwcGxldCAoYXBwbGV0KTsKLSt9Ci0rCi0gR19NT0RVTEVfRVhQT1JUIEd0a1dpZGdldCAqCi0gbWJfcGFuZWxfYXBwbGV0X2NyZWF0ZSAoY29uc3QgY2hhciAgICAqaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgR3RrT3JpZW50YXRpb24gb3JpZW50YXRpb24pCi1AQCAtMjE2LDYgKzIyMiwxMCBAQCBtYl9wYW5lbF9hcHBsZXRfY3JlYXRlIChjb25zdCBjaGFyICAgICppZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJjbGlja2VkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKGJ1dHRvbl9jbGlja2VkX2NiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxldCk7Ci0rICAgICAgICBnX3NpZ25hbF9jb25uZWN0IChidXR0b24sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAicmVhbGl6ZSIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLIChyZWFsaXplX2NiKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxldCk7Ci0gCi0gICAgICAgICBnX29iamVjdF93ZWFrX3JlZiAoR19PQkpFQ1QgKGJ1dHRvbiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdXZWFrTm90aWZ5KSBzaG93X2Rlc2t0b3BfYXBwbGV0X2ZyZWUsCi0tLSAKLTIuNy4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1wYW5lbC0yL2ZpbGVzL3NpbGVuY2Utd2FybmluZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtcGFuZWwtMi9maWxlcy9zaWxlbmNlLXdhcm5pbmdzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWJhOWEwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1wYW5lbC0yL2ZpbGVzL3NpbGVuY2Utd2FybmluZ3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi1Eb24ndCB3YXJuIGlmIHRoZSBtYWNoaW5lIGRvZXNuJ3QgYWN0dWFsbHkgaGF2ZSBhIGJhdHRlcnksIG9yIGlmIHRoZSBhcHBsZXRzCi1zdHJpbmcgY29udGFpbnMgY29uc2VjdXRpdmUgc2VwYXJhdG9ycy4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotZGlmZiAtLWdpdCBhL2FwcGxldHMvYmF0dGVyeS9iYXR0ZXJ5LWFjcGkuYyBiL2FwcGxldHMvYmF0dGVyeS9iYXR0ZXJ5LWFjcGkuYwotaW5kZXggNjUxNWNiMC4uYzQ0ZGQxMiAxMDA2NDQKLS0tLSBhL2FwcGxldHMvYmF0dGVyeS9iYXR0ZXJ5LWFjcGkuYwotKysrIGIvYXBwbGV0cy9iYXR0ZXJ5L2JhdHRlcnktYWNwaS5jCi1AQCAtMTQsOCArMTQsNiBAQCBpbnQgYmF0dF9zdGF0ZSwgYWNfc3RhdGU7Ci0gaW50IHBtX3N1cHBvcnQodm9pZCkKLSB7Ci0gCWlmKGNoZWNrX2FjcGlfc3VwcG9ydCgpID09IE5PVF9TVVBQT1JURUQpewotLQkJZ193YXJuaW5nKCJObyBBQ1BJIHN1cHBvcnRcbiIpOwotLQotIAkJcmV0dXJuIDA7Ci0gCX0KLSAKLUBAIC0zMiw4ICszMCw5IEBAIGNvbnN0IGNoYXIqIHBtX2JhdHRlcnlfaWNvbih2b2lkKQotIAljb25zdCBjaGFyICppY29uOwotIAliYXR0ZXJ5X3QgKmJpbmZvOwotIAotKyAgICAgICAgLyogTm8gYmF0dGVyeSBhdmFpbGFibGUgKG5vdCBwcmVzZW50LCBkaXNhYmxlZCwgb3Igc29tZXRoaW5nCi0rICAgICAgICAgICBlbHNlLiBTaWxlbnRseSBkbyBub3RoaW5nLiAqLwotIAlpZiAoYmF0dF9zdGF0ZSAhPSBTVUNDRVNTKSB7Ci0tCQlnX3dhcm5pbmcoIkNvdWxkbnQgaW5pdGlhbGl6ZSBBQ1BJIGJhdHRlcnlcbiIpOwotIAkJcmV0dXJuIE5VTEw7Ci0gCX0KLSAKLWRpZmYgLS1naXQgYS9hcHBsZXRzL2JhdHRlcnkvYmF0dGVyeS1hcG0uYyBiL2FwcGxldHMvYmF0dGVyeS9iYXR0ZXJ5LWFwbS5jCi1pbmRleCA1NDY3NDM4Li4yZjM5Y2I2IDEwMDY0NAotLS0tIGEvYXBwbGV0cy9iYXR0ZXJ5L2JhdHRlcnktYXBtLmMKLSsrKyBiL2FwcGxldHMvYmF0dGVyeS9iYXR0ZXJ5LWFwbS5jCi1AQCAtMTAsOCArMTAsNiBAQAotIGludCBwbV9zdXBwb3J0KHZvaWQpCi0gewotIAlpZiAoMSA9PSBhcG1fZXhpc3RzICgpKSB7Ci0tICAgICAgICAgICAgICAgIGdfd2FybmluZyAoIk5vIEFQTSBzdXBwb3J0Iik7Ci0tCi0gICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgfQotIAotZGlmZiAtLWdpdCBhL21hdGNoYm94LXBhbmVsL21iLXBhbmVsLmMgYi9tYXRjaGJveC1wYW5lbC9tYi1wYW5lbC5jCi1pbmRleCAyZDhjYWZkLi44MjhhMzZkIDEwMDY0NAotLS0tIGEvbWF0Y2hib3gtcGFuZWwvbWItcGFuZWwuYwotKysrIGIvbWF0Y2hib3gtcGFuZWwvbWItcGFuZWwuYwotQEAgLTExMCwxMCArMTEwLDE1IEBAIGxvYWRfYXBwbGV0cyAoY29uc3QgY2hhciAgICAqYXBwbGV0c19kZXNjLAotICAgICAgICAgYXBwbGV0cyA9IGdfc3Ryc3BsaXQgKGFwcGxldHNfZGVzYywgIiwiLCAtMSk7Ci0gCi0gICAgICAgICBmb3IgKGkgPSAwOyBhcHBsZXRzW2ldOyBpKyspIHsKLSsgICAgICAgICAgICAgICAgY2hhciAqczsKLSAgICAgICAgICAgICAgICAgY2hhciAqKmJpdHM7Ci0gICAgICAgICAgICAgICAgIEd0a1dpZGdldCAqYXBwbGV0OwotIAotLSAgICAgICAgICAgICAgICBiaXRzID0gZ19zdHJzcGxpdCAoYXBwbGV0c1tpXSwgIjoiLCAyKTsKLSsgICAgICAgICAgICAgICAgcyA9IGFwcGxldHNbaV07Ci0rICAgICAgICAgICAgICAgIGlmIChzID09IE5VTEwgfHwgc1swXSA9PSAnXDAnKQotKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotKwotKyAgICAgICAgICAgICAgICBiaXRzID0gZ19zdHJzcGxpdCAocywgIjoiLCAyKTsKLSAKLSAgICAgICAgICAgICAgICAgYXBwbGV0ID0gbG9hZF9hcHBsZXQgKGJpdHNbMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRzWzFdLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL21hdGNoYm94LXBhbmVsLTIvbWF0Y2hib3gtcGFuZWwtMl8yLjExLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL21hdGNoYm94LXBhbmVsLTIvbWF0Y2hib3gtcGFuZWwtMl8yLjExLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzOGU3ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtcGFuZWwtMi9tYXRjaGJveC1wYW5lbC0yXzIuMTEuYmIKQEAgLTAsMCArMSw0MCBAQAorU1VNTUFSWSA9ICJTaW1wbGUgR1RLKyBiYXNlZCBwYW5lbCBmb3IgaGFuZGhlbGQgZGV2aWNlcyIKK0hPTUVQQUdFID0gImh0dHA6Ly9tYXRjaGJveC1wcm9qZWN0Lm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvIgorCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL21hdGNoYm94LXBhbmVsL21iLXBhbmVsLmg7ZW5kbGluZT0xMDttZDU9MGI3ZGIyOGY0YjY4NjNmYjg1M2QwNDY3ZTU5MDAxOWEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXBwbGV0cy9zdGFydHVwL3N0YXJ0dXAuYztlbmRsaW5lPTIyO21kNT03Y2JjZWE2MGI2NjdmNjA5NDk1MjIyZmFmM2UwNzkxNyIKKworREVQRU5EUyA9ICJnbm9tZS1jb21tb24gZ3RrKzMgc3RhcnR1cC1ub3RpZmljYXRpb24gZGJ1cyBkYnVzLWdsaWIgZGJ1cy1nbGliLW5hdGl2ZSIKK0RFUEVORFMgKz0gIiAke0BiYi51dGlscy5jb250YWlucygiTUFDSElORV9GRUFUVVJFUyIsICJhY3BpIiwgImxpYmFjcGkiLCAiIixkKX0iCitERVBFTkRTICs9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIk1BQ0hJTkVfRkVBVFVSRVMiLCAiYXBtIiwgImFwbWQiLCAiIixkKX0iCisKKyMgVGhlIHN0YXJ0dXAtbm90aWZpY2F0aW9uIHJlcXVpcmVzIHgxMSBpbiBESVNUUk9fRkVBVFVSRVMKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKKyMgU1JDUkVWIHRhZ2dlZCAyLjExCitTUkNSRVYgPSAiODUwZDVmZmZkZTdkYmZiMzIwMTU5MTY1MjRkODgwMTRjYzJjZmIzMCIKKworUlBST1ZJREVTXyR7UE59ID0gIm1hdGNoYm94LXBhbmVsIgorUlJFUExBQ0VTXyR7UE59ID0gIm1hdGNoYm94LXBhbmVsIgorUkNPTkZMSUNUU18ke1BOfSA9ICJtYXRjaGJveC1wYW5lbCIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy8ke0JQTn0gXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1hcHBsZXRzLXN5c3RyYXktQWxsb3ctaWNvbnMtdG8tYmUtc21hbGxlci5wYXRjaCBcCisgICAgICAgICAgICIKKworRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXN0YXJ0dXAtbm90aWZpY2F0aW9uIC0tZW5hYmxlLWRidXMiCitFWFRSQV9PRUNPTkYgKz0gIiAke0BiYi51dGlscy5jb250YWlucygiTUFDSElORV9GRUFUVVJFUyIsICJhY3BpIiwgIi0td2l0aC1iYXR0ZXJ5PWFjcGkiLCAiIixkKX0iCitFWFRSQV9PRUNPTkYgKz0gIiAke0BiYi51dGlscy5jb250YWlucygiTUFDSElORV9GRUFUVVJFUyIsICJhcG0iLCAiLS13aXRoLWJhdHRlcnk9YXBtIiwgIiIsZCl9IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L21hdGNoYm94LXBhbmVsLyouc28gXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vbWF0Y2hib3gtcGFuZWwvYnJpZ2h0bmVzcy8qLnBuZyBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9tYXRjaGJveC1wYW5lbC9zdGFydHVwLyoucG5nIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2ljb25zLyIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L21hdGNoYm94LXBhbmVsLyoubGEiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1wYW5lbC0yL21hdGNoYm94LXBhbmVsLTJfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL21hdGNoYm94LXBhbmVsLTIvbWF0Y2hib3gtcGFuZWwtMl9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4YzNhZTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL21hdGNoYm94LXBhbmVsLTIvbWF0Y2hib3gtcGFuZWwtMl9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1TVU1NQVJZID0gIlNpbXBsZSBHVEsrIGJhc2VkIHBhbmVsIGZvciBoYW5kaGVsZCBkZXZpY2VzIgotSE9NRVBBR0UgPSAiaHR0cDovL21hdGNoYm94LXByb2plY3Qub3JnIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy8iCi0KLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbWF0Y2hib3gtcGFuZWwvbWItcGFuZWwuaDtlbmRsaW5lPTEwO21kNT0wYjdkYjI4ZjRiNjg2M2ZiODUzZDA0NjdlNTkwMDE5YSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hcHBsZXRzL3N0YXJ0dXAvc3RhcnR1cC5jO2VuZGxpbmU9MjI7bWQ1PWIwYTY0ZmJlZjMwOTdkNzlmODI2NGU2OTA3YTk4ZjAzIgotCi1ERVBFTkRTID0gImdub21lLWNvbW1vbiBndGsrIHN0YXJ0dXAtbm90aWZpY2F0aW9uIGRidXMgZGJ1cy1nbGliIgotREVQRU5EUyArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJNQUNISU5FX0ZFQVRVUkVTIiwgImFjcGkiLCAibGliYWNwaSIsICIiLGQpfSIKLURFUEVORFMgKz0gIiAke0BiYi51dGlscy5jb250YWlucygiTUFDSElORV9GRUFUVVJFUyIsICJhcG0iLCAiYXBtZCIsICIiLGQpfSIKLQotIyBUaGUgc3RhcnR1cC1ub3RpZmljYXRpb24gcmVxdWlyZXMgeDExIGluIERJU1RST19GRUFUVVJFUwotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotU1JDUkVWID0gIjI2YTNhNjdiNDFjNTBlMGFlMTYzZDhmZTg2Y2NmN2EwZjBhNjcxYWUiCi1QViA9ICIyLjArZ2l0JHtTUkNQVn0iCi0KLVJQUk9WSURFU18ke1BOfSA9ICJtYXRjaGJveC1wYW5lbCIKLVJSRVBMQUNFU18ke1BOfSA9ICJtYXRjaGJveC1wYW5lbCIKLVJDT05GTElDVFNfJHtQTn0gPSAibWF0Y2hib3gtcGFuZWwiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvJHtCUE59IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtc2hvd2Rlc2t0b3AtTWFrZS1zdXJlLWFjdGl2ZS1zdGF0ZS1pcy1pbml0aWFsaXplZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zaWxlbmNlLXdhcm5pbmdzLnBhdGNoIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc3RhcnR1cC1ub3RpZmljYXRpb24gLS1lbmFibGUtZGJ1cyIKLUVYVFJBX09FQ09ORiArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJNQUNISU5FX0ZFQVRVUkVTIiwgImFjcGkiLCAiLS13aXRoLWJhdHRlcnk9YWNwaSIsICIiLGQpfSIKLUVYVFJBX09FQ09ORiArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJNQUNISU5FX0ZFQVRVUkVTIiwgImFwbSIsICItLXdpdGgtYmF0dGVyeT1hcG0iLCAiIixkKX0iCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vbWF0Y2hib3gtcGFuZWwvKi5zbyBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9tYXRjaGJveC1wYW5lbC9icmlnaHRuZXNzLyoucG5nIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L21hdGNoYm94LXBhbmVsL3N0YXJ0dXAvKi5wbmcgIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vbWF0Y2hib3gtcGFuZWwvKi5sYSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjawpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL21hdGNoYm94LXNhdG8vbWF0Y2hib3gtc2Vzc2lvbi1zYXRvL2luZGV4LnRoZW1lIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL21hdGNoYm94LXNhdG8vbWF0Y2hib3gtc2Vzc2lvbi1zYXRvL2luZGV4LnRoZW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5MjYwY2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtc2F0by9tYXRjaGJveC1zZXNzaW9uLXNhdG8vaW5kZXgudGhlbWUKQEAgLTAsMCArMSw3IEBACitbWC1HTk9NRS1NZXRhdGhlbWVdCitFbmNvZGluZz1VVEYtOAorVHlwZT1YLUdOT01FLU1ldGF0aGVtZQorTmFtZT1TYXRvCitHdGtUaGVtZT1BZHdhaXRhCitJY29uVGhlbWU9U2F0bworTWF0Y2hib3hUaGVtZT1TYXRvCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtc2F0by9tYXRjaGJveC1zZXNzaW9uLXNhdG8vc2Vzc2lvbiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1zYXRvL21hdGNoYm94LXNlc3Npb24tc2F0by9zZXNzaW9uCmluZGV4IDQyY2U0ODMuLmY2MzEzYmQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1zYXRvL21hdGNoYm94LXNlc3Npb24tc2F0by9zZXNzaW9uCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1zYXRvL21hdGNoYm94LXNlc3Npb24tc2F0by9zZXNzaW9uCkBAIC0xNCwxMSArMTQsNiBAQAogICAgIEtFWUJPQVJEX0FQUExFVD0ia2V5Ym9hcmQiCiBmaQogCi0jIFRlbGwgR1RLKzMgd2UgcmVhbGx5IHdhbnQgc2VydmVyIHNpZGUgZGVjb3JhdGlvbnMsIGV2ZW4gd2l0aAotIyBHdGtIZWFkZXJCYXIgdXNpbmcgYXBwbGljYXRpb25zOiBXaXRob3V0IHRoYXQgbWItcGFuZWwgd2lsbCByZW5kZXIKLSMgb24gdG9wIG9mIHRoZSBjbGllbnQgc2lkZSBkZWNvcmF0aW9ucy4KLWV4cG9ydCBHVEtfQ1NEPTAKLQogbWF0Y2hib3gtZGVza3RvcCAmCiAKICMgTGluZXMgY29udGFpbmluZyBmZWF0dXJlLVtmb29dIGFyZSByZW1vdmVkIGF0IGJ1aWxkIHRpbWUgaWYgdGhlIG1hY2hpbmUKQEAgLTI4LDYgKzIzLDYgQEAKIEVORF9BUFBMRVRTPWNsb2NrLGJhdHRlcnksJEtFWUJPQVJEX0FQUExFVCxzeXN0cmF5LHN0YXJ0dXAtbm90aWZ5LG5vdGlmeQogRU5EX0FQUExFVFM9b3Blbm1va28tcGFuZWwtZ3NtLCRFTkRfQVBQTEVUUyAjIGZlYXR1cmUtcGhvbmUKIAotbWF0Y2hib3gtcGFuZWwgLS10aXRsZWJhciAtLXN0YXJ0LWFwcGxldHMgJFNUQVJUX0FQUExFVFMgLS1lbmQtYXBwbGV0cyAkRU5EX0FQUExFVFMgJgorbWF0Y2hib3gtcGFuZWwgLS1zdGFydC1hcHBsZXRzICRTVEFSVF9BUFBMRVRTIC0tZW5kLWFwcGxldHMgJEVORF9BUFBMRVRTICYKIAotZXhlYyBtYXRjaGJveC13aW5kb3ctbWFuYWdlciAtdGhlbWUgU2F0byAtdXNlX2Rlc2t0b3BfbW9kZSBkZWNvcmF0ZWQgLXVzZV9jdXJzb3IgJFNIT1dDVVJTT1IgJEAKK2V4ZWMgbWF0Y2hib3gtd2luZG93LW1hbmFnZXIgLXRoZW1lIFNhdG8gLXVzZV9jdXJzb3IgJFNIT1dDVVJTT1IgJEAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1zYXRvL21hdGNoYm94LXNlc3Npb24tc2F0b18wLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtc2F0by9tYXRjaGJveC1zZXNzaW9uLXNhdG9fMC4xLmJiCmluZGV4IDc2ZGUxOGEuLjQyYzc0MmYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1zYXRvL21hdGNoYm94LXNlc3Npb24tc2F0b18wLjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL21hdGNoYm94LXNhdG8vbWF0Y2hib3gtc2Vzc2lvbi1zYXRvXzAuMS5iYgpAQCAtNyw3ICs3LDcgQEAKIAogU0VDVElPTiA9ICJ4MTEiCiBERVBFTkRTID0gImdjb25mLW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59ID0gImZvcm1mYWN0b3IgZ3RrLXNhdG8tZW5naW5lIG1hdGNoYm94LXRoZW1lLXNhdG8gZ3RrLXRoZW1lLXNhdG8gbWF0Y2hib3gtcGFuZWwtMiBtYXRjaGJveC1kZXNrdG9wLXNhdG8gbWF0Y2hib3gtc2Vzc2lvbiBnY29uZiIKK1JERVBFTkRTXyR7UE59ID0gImZvcm1mYWN0b3IgbWF0Y2hib3gtdGhlbWUtc2F0byBtYXRjaGJveC1wYW5lbC0yIG1hdGNoYm94LWRlc2t0b3AgbWF0Y2hib3gtc2Vzc2lvbiBnY29uZiIKIFBSID0gInIzMCIKIAogIyBUaGlzIHBhY2thZ2UgaXMgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGJlY2F1c2UgdGhlIHNlc3Npb24gc2NyaXB0IGlzIG1vZGlmaWVkCkBAIC0xOSw5ICsxOSwxMiBAQAogIyBUaGUgbWF0Y2hib3gtdGhlbWUtc2F0byByZXF1aXJlcyB4MTEgaW4gRElTVFJPX0ZFQVRVUkVTCiBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCi1TUkNfVVJJID0gImZpbGU6Ly9zZXNzaW9uIgorU1JDX1VSSSA9ICJmaWxlOi8vc2Vzc2lvbiBcCisgICAgICAgICAgIGZpbGU6Ly9pbmRleC50aGVtZSIKIFMgPSAiJHtXT1JLRElSfSIKIAorRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vdGhlbWVzL1NhdG8vaW5kZXgudGhlbWUiCisKIGRvX2luc3RhbGwoKSB7CiAJIyBUaGlzIGlzIHRoZSBzZXQgb2YgbWFjaGluZSBmZWF0dXJlcyB0aGF0IHRoZSBzY3JpcHQgaGFzIG1hcmtlcnMgZm9yCiAJRkVBVFVSRVM9InBob25lIgpAQCAtMzQsNiArMzcsNyBAQAogCQlmaQogCWRvbmUKIAorCWluc3RhbGwgLUQgJHtTfS9pbmRleC50aGVtZSAke0R9LyR7ZGF0YWRpcn0vdGhlbWVzL1NhdG8vaW5kZXgudGhlbWUKIAlpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9tYXRjaGJveAogCXNlZCAtZiAiJFNDUklQVCIgJHtTfS9zZXNzaW9uID4gJHtEfS8ke3N5c2NvbmZkaXJ9L21hdGNoYm94L3Nlc3Npb24KICAgICAgICAgY2htb2QgK3ggJHtEfS8ke3N5c2NvbmZkaXJ9L21hdGNoYm94L3Nlc3Npb24KQEAgLTQ0LDcgKzQ4LDggQEAKIAkJI3R5cGUsIG5hbWUsIHZhbHVlCiAJCWdjb25mdG9vbC0yIC0tY29uZmlnLXNvdXJjZT14bWw6OiREJHtzeXNjb25mZGlyfS9nY29uZi9nY29uZi54bWwuZGVmYXVsdHMgLS1kaXJlY3QgLS10eXBlICQxIC0tc2V0IC9kZXNrdG9wL3Bva3kvaW50ZXJmYWNlLyQyICIkMyIKIAl9Ci0Jc2V0X3ZhbHVlIHN0cmluZyB0aGVtZSBTYXRvCisJc2V0X3ZhbHVlIHN0cmluZyB0aGVtZSBBZHdhaXRhCisJc2V0X3ZhbHVlIHN0cmluZyBtYXRjaGJveF90aGVtZSBTYXRvCiAJc2V0X3ZhbHVlIHN0cmluZyBpY29uX3RoZW1lIFNhdG8KIAlzZXRfdmFsdWUgYm9vbCB0b3VjaHNjcmVlbiB0cnVlCiAJc2V0X3ZhbHVlIHN0cmluZyBmb250X25hbWUgIlNhbnMgOSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC10ZXJtaW5hbC9tYXRjaGJveC10ZXJtaW5hbF8wLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtdGVybWluYWwvbWF0Y2hib3gtdGVybWluYWxfMC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0ODgxOTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtdGVybWluYWwvbWF0Y2hib3gtdGVybWluYWxfMC4xLmJiCkBAIC0wLDAgKzEsMjEgQEAKK1NVTU1BUlkgPSAiTGlnaHR3ZWlnaHQgR1RLKyB0ZXJtaW5hbCBhcHBsaWNhdGlvbiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubWF0Y2hib3gtcHJvamVjdC5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy8iCisKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbWFpbi5jO2VuZGxpbmU9MjA7bWQ1PTk2ZTM5MTc2ZDllMzU1NjM5YTBiOGIxYzdhODQwODIwIgorCitERVBFTkRTID0gImd0ayszIHZ0ZSIKK1NFQ1RJT04gPSAieDExL3V0aWxzIgorCisjU1JDUkVWIHRhZ2dlZCAwLjEKK1NSQ1JFViA9ICIzYWQzNTdkYjIzMDI3NjBiOGE4ODE3YjVmNDQ3OGRkODc0Nzk0NDJmIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy8ke0JQTn0iCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj4oXGQrKFwuXGQrKSspKSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCitBTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIiR7R1RLM0RJU1RST0ZFQVRVUkVTfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC10ZXJtaW5hbC9tYXRjaGJveC10ZXJtaW5hbF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtdGVybWluYWwvbWF0Y2hib3gtdGVybWluYWxfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOGNiZDU3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC10ZXJtaW5hbC9tYXRjaGJveC10ZXJtaW5hbF9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1TVU1NQVJZID0gIkxpZ2h0d2VpZ2h0IEdUSysgdGVybWluYWwgYXBwbGljYXRpb24iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1hdGNoYm94LXByb2plY3Qub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvIgotCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL21haW4uYztlbmRsaW5lPTIwO21kNT05NmUzOTE3NmQ5ZTM1NTYzOWEwYjhiMWM3YTg0MDgyMCIKLQotREVQRU5EUyA9ICJndGsrIHZ0ZSIKLVNFQ1RJT04gPSAieDExL3V0aWxzIgotU1JDUkVWID0gIjQ1MmJjYTI1MzQ5MmE5N2E1ODdmNDQwMjg5YjlhYjI3ZDIxNzM1M2UiCi1QViA9ICIwLjArZ2l0JHtTUkNQVn0iCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvJHtCUE59IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0KLUFOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAiJHtHVEsyRElTVFJPRkVBVFVSRVN9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL21hdGNoYm94LXRoZW1lLXNhdG8vbWF0Y2hib3gtdGhlbWUtc2F0b18wLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtdGhlbWUtc2F0by9tYXRjaGJveC10aGVtZS1zYXRvXzAuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjY3ODZkZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtdGhlbWUtc2F0by9tYXRjaGJveC10aGVtZS1zYXRvXzAuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotcmVxdWlyZSBtYXRjaGJveC10aGVtZS1zYXRvLmluYwotCi1QUiA9ICJyMSIKLQotU1JDX1VSSSA9ICJodHRwOi8vcG9reWxpbnV4Lm9yZy9yZWxlYXNlcy9zYXRvL21hdGNoYm94LXRoZW1lLXNhdG8tMC4xLnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjcyYWUyNzJlZjc4MDMxNDFhM2RjYjY5ZTY3MGNmZjk3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjViNTlmOTY0NmVkYmZiOTA3YTMwOTMzMmRiM2JkNmZhNzA4MGRjMWZlMjRkZjU0OTQ4MGNmYWU3ZDk3NGEzZmIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtdGhlbWUtc2F0by9tYXRjaGJveC10aGVtZS1zYXRvXzAuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC10aGVtZS1zYXRvL21hdGNoYm94LXRoZW1lLXNhdG9fMC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhMDQzZDMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtdGhlbWUtc2F0by9tYXRjaGJveC10aGVtZS1zYXRvXzAuMi5iYgpAQCAtMCwwICsxLDggQEAKK3JlcXVpcmUgbWF0Y2hib3gtdGhlbWUtc2F0by5pbmMKKworIyBTUkNSRVYgdGFnZ2VkIDAuMgorU1JDUkVWID0gImRmMDg1YmE5Y2RhZWFmMjk1Njg5MGIwZTI5ZDdlYTE3NzliZjZjNzgiCitTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL21hdGNoYm94LXNhdG8iCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj4oXGQrKFwuXGQrKSspKSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC10aGVtZS1zYXRvL21hdGNoYm94LXRoZW1lLXNhdG9fZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL21hdGNoYm94LXRoZW1lLXNhdG8vbWF0Y2hib3gtdGhlbWUtc2F0b19naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkMzU2OWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL21hdGNoYm94LXRoZW1lLXNhdG8vbWF0Y2hib3gtdGhlbWUtc2F0b19naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1yZXF1aXJlIG1hdGNoYm94LXRoZW1lLXNhdG8uaW5jCi0KLVNSQ1JFViA9ICJmNzJjZjRlZDdkNzFhZDllNDdiMGYyZDNkYmM1OTNiYzJmM2U3NmY4IgotUFYgPSAiMC4yK2dpdCR7U1JDUFZ9IgotCi1ERUZBVUxUX1BSRUZFUkVOQ0UgPSAiLTEiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbWF0Y2hib3gtc2F0byIKLQotRVhUUkFfT0VDT05GICs9ICIke0BiYi51dGlscy5jb250YWlucygnTUFDSElORV9GRUFUVVJFUycsICdxdmdhJywgJy0td2l0aC1tb2RlPXF2Z2EnLCAnJyxkKX0iCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS14MTEtc2F0by5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXgxMS1zYXRvLmJiCmluZGV4IDhiYTQ5MjMuLjZmYjFiNjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXgxMS1zYXRvLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXgxMS1zYXRvLmJiCkBAIC0zLDcgKzMsNiBAQAogIwogCiBTVU1NQVJZID0gIlNhdG8gZGVza3RvcCIKLUxJQ0VOU0UgPSAiTUlUIgogUFIgPSAicjMzIgogCiBQQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgpAQCAtMzEsOSArMzAsOCBAQAogICAgIG1hdGNoYm94LWtleWJvYXJkLWltIFwKICAgICBtYXRjaGJveC1jb25maWctZ3RrIFwKICAgICB4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lIFwKLSAgICBzYXRvLWljb24tdGhlbWUgXAorICAgIGFkd2FpdGEtaWNvbi10aGVtZSBcCiAgICAgc2V0dGluZ3MtZGFlbW9uIFwKLSAgICBndGstc2F0by1lbmdpbmUgXAogICAgIHNodXRkb3duLWRlc2t0b3AgXAogICAgIGxpYnNkbCBcCiAgICAgJHtORVRXT1JLX01BTkFHRVJ9IFwKQEAgLTQ4LDggKzQ2LDggQEAKIAogU1VNTUFSWV8ke1BOfS1hcHBzID0gIlNhdG8gZGVza3RvcCAtIGFwcGxpY2F0aW9ucyIKIFJERVBFTkRTXyR7UE59LWFwcHMgPSAiXAotICAgIGxlYWZwYWQgXAotICAgIGdzdC1wbGF5ZXItYmluIFwKKyAgICBsM2FmcGFkIFwKKyAgICBnc3QtcGxheWVyIFwKICAgICBtYXRjaGJveC10ZXJtaW5hbCBcCiAgICAgc2F0by1zY3JlZW5zaG90IFwKICAgICAke0ZJTEVNQU5BR0VSfSBcCkBAIC01OCw1ICs1Niw1IEBACiAKIFNVTU1BUllfJHtQTn0tZ2FtZXMgPSAiU2F0byBkZXNrdG9wIC0gZ2FtZXMiCiBSREVQRU5EU18ke1BOfS1nYW1lcyA9ICJcCi0gICAgb2gtcHV6emxlcyBcCisgICAgcHV6emxlcyBcCiAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BjbWFuZm0vcGNtYW5mbV8xLjIuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wY21hbmZtL3BjbWFuZm1fMS4yLjQuYmIKaW5kZXggYTZiMGFhYy4uYTZiZjIxMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BjbWFuZm0vcGNtYW5mbV8xLjIuNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vcGNtYW5mbS9wY21hbmZtXzEuMi40LmJiCkBAIC03LDggKzcsNyBAQAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2dzZWFsLWd0ay1jb21wYXQuaDtlbmRsaW5lPTIxO21kNT00NjkyMmM4NjkxZjU4ZDEyNGY5NDIwZmUxNjE0OWNlMiIKIAogU0VDVElPTiA9ICJ4MTEiCi1ERVBFTkRTID0gImd0aysgc3RhcnR1cC1ub3RpZmljYXRpb24gbGliZm0gaW50bHRvb2wtbmF0aXZlIGdldHRleHQtbmF0aXZlIgotREVQRU5EU19hcHBlbmRfcG9reSA9ICIgbGlib3dsIgorREVQRU5EUyA9ICJndGsrMyBzdGFydHVwLW5vdGlmaWNhdGlvbiBsaWJmbSBpbnRsdG9vbC1uYXRpdmUgZ2V0dGV4dC1uYXRpdmUiCiAKIAogQ09NUEFUSUJMRV9IT1NUID0gJyh4ODZfNjQuKnxpLjg2Lip8YWFyY2g2NC4qfGFybS4qfG1pcHMuKnxwb3dlcnBjLip8c2guKiktKGxpbnV4fGZyZWVic2QuKiknCkBAIC0zMCw2ICsyOSw4IEBACiAjIFRoZSBzdGFydHVwLW5vdGlmaWNhdGlvbiByZXF1aXJlcyB4MTEgaW4gRElTVFJPX0ZFQVRVUkVTCiBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLWd0az0zIgorCiBkb19pbnN0YWxsX2FwcGVuZCAoKSB7CiAJaW5zdGFsbCAtZCAke0R9LyR7ZGF0YWRpcn0KIAlpbnN0YWxsIC1kICR7RH0vJHtkYXRhZGlyfS9waXhtYXBzLwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvZmlsZXMvb2gtcHV6emxlcy1vd2wtbWVudS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL2ZpbGVzL29oLXB1enpsZXMtb3dsLW1lbnUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlMmMzYWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvZmlsZXMvb2gtcHV6emxlcy1vd2wtbWVudS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIwMyArMCwwIEBACi1UaGlzIHBhdGNoIGVuYWJsZSBvd2wgbWVudSwgd2hpY2ggaXMgaGlkZGVuIGluIHRoZSB0aXRsZSBiYXIgdG8gc2F2ZSBzcGFjZSBvbgotc21hbGwgc2NyZWVuLiBJdCBoYXMgbm90IGJlZW4gdXNlZCBmb3IgYSBsb25nIHRpbWUsIHJlYmFzZSBuZWVkZWQuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW5hYmxlIGZlYXR1cmVdCi0KLUluZGV4OiBzcmMvZ3RrLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBzcmMvZ3RrLmMJKHJldmlzaW9uIDIyKQotKysrIHNyYy9ndGsuYwkod29ya2luZyBjb3B5KQotQEAgLTI4LDYgKzI4LDggQEAKLSAjaW5jbHVkZSA8Z2RrL2dka3guaD4KLSAjaW5jbHVkZSA8Z2RrLXBpeGJ1Zi9nZGstcGl4YnVmLmg+Ci0gCi0rI2luY2x1ZGUgPGxpYm93bC9vd2x3aW5kb3dtZW51Lmg+Ci0rCi0gI2luY2x1ZGUgPGxpYnJzdmcvcnN2Zy5oPgotIAotICNpbmNsdWRlIDxYMTEvWGxpYi5oPgotQEAgLTEyMzcsNiArMTIzOSw3IEBACi0gICAgIH0KLSB9Ci0gCi0rI2lmIDAKLSBzdGF0aWMgdm9pZAotIGFkZF93aWRnZXQgKEd0a1VJTWFuYWdlciAqbWVyZ2UsCi0gCSAgICBHdGtXaWRnZXQgKndpZGdldCwKLUBAIC0xMjQ3LDEwICsxMjUwLDExIEBACi0gICAgIGd0a19ib3hfcGFja19zdGFydCAoYm94LCB3aWRnZXQsIEZBTFNFLCBGQUxTRSwgMCk7Ci0gCi0gICAgIHRvcGxldmVsID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwgKEdUS19XSURHRVQgKGJveCkpOwotLSAgICBndGtfd2lkZ2V0X3Nob3dfYWxsICh0b3BsZXZlbCk7Ci0gfQotKyNlbmRpZgotIAotIHN0YXRpYyBHdGtBY3Rpb25FbnRyeSB0b3BsZXZlbF9hY3Rpb25zW10gPSB7Ci0rICAgIHsgIlRvcCIsIE5VTEwsICIiIH0sCi0gICAgIHsgIkdhbWUiLCBOVUxMLCBOXygiR2FtZSIpIH0sCi0gICAgIHsgIlNldHRpbmdzIiwgTlVMTCwgTl8oIlNldHRpbmdzIikgfSwKLSAgICAgeyAiSGVscCIsIE5VTEwsIE5fKCJIZWxwIikgfSwKLUBAIC0xMzAzLDExICsxMzA3LDEzIEBACi0gCQkJZnJvbnRlbmQgKmZlKQotIHsKLSAgICAgR1N0cmluZyAqeG1sOwotKyAgICBHRXJyb3IgKmVycm9yID0gTlVMTDsKLSAgICAgZ2Jvb2xlYW4gcHJlc2V0cyA9IEZBTFNFOwotICAgICBHU0xpc3QgKnJhZGlvX2dyb3VwID0gTlVMTDsKLSAgICAgaW50IGk7Ci0gCi0tICAgIHhtbCA9IGdfc3RyaW5nX25ldyAoIjx1aT48bWVudWJhcj48cGxhY2Vob2xkZXIgbmFtZT1cIlR5cGVQbGFjZWhvbGRlclwiPiIKLSsgICAgeG1sID0gZ19zdHJpbmdfbmV3ICgiPHVpPjxtZW51YmFyPjxtZW51IG5hbWU9XCJUb3BNZW51XCIgYWN0aW9uPVwiVG9wXCI+IgotKwkJCSI8cGxhY2Vob2xkZXIgbmFtZT1cIlR5cGVQbGFjZWhvbGRlclwiPiIKLSAJCQkiPG1lbnUgbmFtZT1cIlNldHRpbmdzTWVudVwiIGFjdGlvbj1cIlNldHRpbmdzXCI+Iik7Ci0gCi0gICAgIGZvciAoaSA9IDA7IGkgPCBtaWRlbmRfbnVtX3ByZXNldHMoZmUtPm1lKTsgaSsrKSB7Ci1AQCAtMTM1OSw4ICsxMzY1LDE0IEBACi0gCQkJICI8bWVudWl0ZW0gbmFtZT1cIkN1c3RvbU1lbnVcIiBhY3Rpb249XCJDdXN0b21cIi8+Iik7Ci0gICAgIH0KLSAgICAgCi0tICAgIGdfc3RyaW5nX2FwcGVuZCAoeG1sLCAiPC9tZW51PjwvcGxhY2Vob2xkZXI+PC9tZW51YmFyPjwvdWk+Iik7Ci0tICAgIGd0a191aV9tYW5hZ2VyX2FkZF91aV9mcm9tX3N0cmluZyAobWVyZ2UsIHhtbC0+c3RyLCAtMSwgTlVMTCk7Ci0rICAgIGdfc3RyaW5nX2FwcGVuZCAoeG1sLCAiPC9tZW51PjwvcGxhY2Vob2xkZXI+PC9tZW51PjwvbWVudWJhcj48L3VpPiIpOwotKwotKyAgICBndGtfdWlfbWFuYWdlcl9hZGRfdWlfZnJvbV9zdHJpbmcgKG1lcmdlLCB4bWwtPnN0ciwgLTEsICZlcnJvcik7Ci0rICAgIGlmIChlcnJvciAhPSBOVUxMKSB7Ci0rCWdfd2FybmluZyAoIkVycm9yIGFkZGluZyBjdXN0b206ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOwotKwlnX2Vycm9yX2ZyZWUgKGVycm9yKTsKLSsgICAgfQotKwotICAgICBnX3N0cmluZ19mcmVlICh4bWwsIFRSVUUpOwotIH0KLSAKLUBAIC0xNDM0LDYgKzE0NDYsNyBAQAotIG5ld193aW5kb3coY2hhciAqYXJnLCBjaGFyICoqZXJyb3IpCi0gewotICAgICBmcm9udGVuZCAqZmU7Ci0rICAgIEdFcnJvciAqZXJyID0gTlVMTDsKLSAgICAgR3RrQm94ICp2Ym94OwotICAgICBHdGtVSU1hbmFnZXIgKm1lcmdlOwotICAgICBHdGtBY3Rpb25Hcm91cCAqYWN0aW9uczsKLUBAIC0xNDk2LDggKzE1MDksNiBAQAotICAgICBndGtfd2luZG93X2FkZF9hY2NlbF9ncm91cChHVEtfV0lORE9XKGZlLT53aW5kb3cpLCBmZS0+YWNjZWxncm91cCk7Ci0gCi0gICAgIG1lcmdlID0gZ3RrX3VpX21hbmFnZXJfbmV3ICgpOwotLSAgICBnX3NpZ25hbF9jb25uZWN0IChHX09CSkVDVCAobWVyZ2UpLCAiYWRkX3dpZGdldCIsCi0tCQkgICAgICBHX0NBTExCQUNLIChhZGRfd2lkZ2V0KSwgdmJveCk7Ci0gCi0gICAgIGFjdGlvbnMgPSBndGtfYWN0aW9uX2dyb3VwX25ldyAoIlB1enpsZUFjdGlvbnMiKTsKLSAgICAgZ3RrX2FjdGlvbl9ncm91cF9hZGRfYWN0aW9ucyAoYWN0aW9ucywgdG9wbGV2ZWxfYWN0aW9ucywKLUBAIC0xNTA5LDIyICsxNTIwLDM5IEBACi0gCi0gICAgIGd0a191aV9tYW5hZ2VyX2luc2VydF9hY3Rpb25fZ3JvdXAgKG1lcmdlLCBhY3Rpb25zLCAwKTsKLSAgICAgCi0tICAgIGd0a191aV9tYW5hZ2VyX2FkZF91aV9mcm9tX2ZpbGUgKG1lcmdlLCBEQVRBRElSICIvb2gtcHV6emxlcy91aS9tZW51LnhtbCIsIE5VTEwpOwotKyAgICBndGtfdWlfbWFuYWdlcl9hZGRfdWlfZnJvbV9maWxlIChtZXJnZSwgREFUQURJUiAiL29oLXB1enpsZXMvdWkvbWVudS54bWwiLCAKLSsJCQkJICAgICAmZXJyKTsKLSsgICAgaWYgKGVyciAhPSBOVUxMKSB7Ci0rCWdfd2FybmluZyAoIkVycm9yIG1ha2luZyBVSTogJXMiLCBlcnItPm1lc3NhZ2UpOwotKwlnX2Vycm9yX2ZyZWUgKGVycik7Ci0rCWVyciA9IE5VTEw7Ci0rICAgIH0KLSAKLSAgICAgaWYgKHRoZWdhbWUuY2FuX3NvbHZlKSB7Ci0tCSAgICBjaGFyICpzdHIgPSAiPHVpPjxtZW51YmFyPjxtZW51IG5hbWU9XCJHYW1lTWVudVwiIGFjdGlvbj1cIkdhbWVcIj4iCi0rCWNoYXIgKnN0ciA9ICI8dWk+PG1lbnViYXI+PG1lbnUgbmFtZT1cIlRvcE1lbnVcIiBhY3Rpb249XCJUb3BcIj4iCi0rCSAgICAiPG1lbnUgbmFtZT1cIkdhbWVNZW51XCIgYWN0aW9uPVwiR2FtZVwiPiIKLSAJICAgICI8cGxhY2Vob2xkZXIgbmFtZT1cIlNvbHZlUGxhY2Vob2xkZXJcIj4iCi0gCSAgICAiPHNlcGFyYXRvciBuYW1lPVwiU29sdmVTZXBcIi8+IgotIAkgICAgIjxtZW51aXRlbSBuYW1lPVwiU29sdmVNZW51XCIgYWN0aW9uPVwiU29sdmVcIi8+IgotLQkgICAgIjwvcGxhY2Vob2xkZXI+PC9tZW51PjwvbWVudWJhcj48L3VpPiI7Ci0rCSAgICAiPC9wbGFjZWhvbGRlcj48L21lbnU+PC9tZW51PjwvbWVudWJhcj48L3VpPiI7Ci0gCi0tCWd0a191aV9tYW5hZ2VyX2FkZF91aV9mcm9tX3N0cmluZyAobWVyZ2UsIHN0ciwgLTEsIE5VTEwpOwotKwlndGtfdWlfbWFuYWdlcl9hZGRfdWlfZnJvbV9zdHJpbmcgKG1lcmdlLCBzdHIsIC0xLCAmZXJyKTsKLSsJaWYgKGVyciAhPSBOVUxMKSB7Ci0rCSAgICBnX3dhcm5pbmcgKCJFcnJvciBhZGRpbmcgc29sdmUuICVzIiwgZXJyLT5tZXNzYWdlKTsKLSsJICAgIGdfZXJyb3JfZnJlZSAoZXJyKTsKLSsJfQotICAgICB9Ci0gCi0gICAgIGlmICgobiA9IG1pZGVuZF9udW1fcHJlc2V0cyhmZS0+bWUpKSA+IDAgfHwgdGhlZ2FtZS5jYW5fY29uZmlndXJlKSB7Ci0gCWdlbmVyYXRlX3NldHRpbmdzX21lbnUgKG1lcmdlLCBhY3Rpb25zLCBmZSk7Ci0gICAgIH0KLSAKLSsgICAgLyogRG8gdGhpcyBzbyB0aGF0IHRoZSBtZW51IGlzIHBhY2tlZCBub3cgaW5zdGVhZCBvZiBpbiB0aGUgaWRsZSBsb29wICovCi0rICAgIGd0a191aV9tYW5hZ2VyX2Vuc3VyZV91cGRhdGUgKG1lcmdlKTsKLSsKLSsgICAgb3dsX3NldF93aW5kb3dfbWVudV9pdGVtIChHVEtfV0lORE9XIChmZS0+d2luZG93KSwKLSsJCQkgICAgICBHVEtfTUVOVV9JVEVNIChndGtfdWlfbWFuYWdlcl9nZXRfd2lkZ2V0IChtZXJnZSwgIi9tZW51YmFyL1RvcE1lbnUiKSkpOwotKyAgICAKLSAgICAgc2V0dXBfY29sb3VycyAoZmUpOwotICAgICBzZXR1cF9waXhidWZzIChmZSk7Ci0gCi1AQCAtMTU3Miw3ICsxNjAwLDcgQEAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEdES19CVVRUT05fUkVMRUFTRV9NQVNLIHwKLSAJCQkgIEdES19CVVRUT05fTU9USU9OX01BU0spOwotIAotLSAgICAvKiBUaGUgd2luZG93IGlzIHNob3duIG9uY2UgdGhlIG1lbnViYXIgaGFzIGJlZW4gYWRkZWQgKi8KLSsgICAgZ3RrX3dpZGdldF9zaG93X2FsbCAoZmUtPndpbmRvdyk7Ci0gICAgIHJldHVybiBmZTsKLSB9Ci0gCi1JbmRleDogc3JjL21lbnUueG1sCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc3JjL21lbnUueG1sCShyZXZpc2lvbiAyMikKLSsrKyBzcmMvbWVudS54bWwJKHdvcmtpbmcgY29weSkKLUBAIC0xLDI2ICsxLDI1IEBACi0gPHVpPgotIDxtZW51YmFyPgotLTxtZW51IG5hbWU9IkdhbWVNZW51IiBhY3Rpb249IkdhbWUiPgotLQk8bWVudWl0ZW0gbmFtZT0iTmV3TWVudSIgYWN0aW9uPSJOZXciLz4KLS0JPG1lbnVpdGVtIG5hbWU9IlJlc3RhcnRNZW51IiBhY3Rpb249IlJlc3RhcnQiLz4KLS08IS0tCTxtZW51aXRlbSBuYW1lPSJTcGVjaWZpY01lbnUiIGFjdGlvbj0iU3BlY2lmaWMiLz4gLS0+Ci0tCTxtZW51aXRlbSBuYW1lPSJSYW5kb21NZW51IiBhY3Rpb249IlJhbmRvbSIvPgotLQk8c2VwYXJhdG9yIG5hbWU9IkdhbWVTZXAxIi8+Ci0tCTxtZW51aXRlbSBuYW1lPSJMb2FkTWVudSIgYWN0aW9uPSJMb2FkIi8+Ci0tCTxtZW51aXRlbSBuYW1lPSJTYXZlTWVudSIgYWN0aW9uPSJTYXZlIi8+Ci0tCTxzZXBhcmF0b3IgbmFtZT0iR2FtZVNlcDIiLz4KLS0JPG1lbnVpdGVtIG5hbWU9IlVuZG9NZW51IiBhY3Rpb249IlVuZG8iLz4KLS0JPG1lbnVpdGVtIG5hbWU9IlJlZG9NZW51IiBhY3Rpb249IlJlZG8iLz4KLS0JPHBsYWNlaG9sZGVyIG5hbWU9IkNvcHlQbGFjZWhvbGRlciIvPgotLQk8cGxhY2Vob2xkZXIgbmFtZT0iU29sdmVQbGFjZWhvbGRlciIvPgotLQk8c2VwYXJhdG9yIG5hbWU9IkdhbWVTZXAzIi8+Ci0tCTxtZW51aXRlbSBuYW1lPSJRdWl0TWVudSIgYWN0aW9uPSJRdWl0Ii8+Ci0tPC9tZW51PgotKzxtZW51IG5hbWU9IlRvcE1lbnUiIGFjdGlvbj0iVG9wIj4KLSsJPG1lbnUgbmFtZT0iR2FtZU1lbnUiIGFjdGlvbj0iR2FtZSI+Ci0rCQk8bWVudWl0ZW0gbmFtZT0iTmV3TWVudSIgYWN0aW9uPSJOZXciLz4KLSsJCTxtZW51aXRlbSBuYW1lPSJSZXN0YXJ0TWVudSIgYWN0aW9uPSJSZXN0YXJ0Ii8+Ci0rCTwhLS0JPG1lbnVpdGVtIG5hbWU9IlNwZWNpZmljTWVudSIgYWN0aW9uPSJTcGVjaWZpYyIvPiAtLT4KLSsJCTxtZW51aXRlbSBuYW1lPSJSYW5kb21NZW51IiBhY3Rpb249IlJhbmRvbSIvPgotKwkJPHNlcGFyYXRvciBuYW1lPSJHYW1lU2VwMSIvPgotKwkJPG1lbnVpdGVtIG5hbWU9IkxvYWRNZW51IiBhY3Rpb249IkxvYWQiLz4KLSsJCTxtZW51aXRlbSBuYW1lPSJTYXZlTWVudSIgYWN0aW9uPSJTYXZlIi8+Ci0rCQk8c2VwYXJhdG9yIG5hbWU9IkdhbWVTZXAyIi8+Ci0rCQk8bWVudWl0ZW0gbmFtZT0iVW5kb01lbnUiIGFjdGlvbj0iVW5kbyIvPgotKwkJPG1lbnVpdGVtIG5hbWU9IlJlZG9NZW51IiBhY3Rpb249IlJlZG8iLz4KLSsJCTxwbGFjZWhvbGRlciBuYW1lPSJDb3B5UGxhY2Vob2xkZXIiLz4KLSsJCTxwbGFjZWhvbGRlciBuYW1lPSJTb2x2ZVBsYWNlaG9sZGVyIi8+Ci0rCTwvbWVudT4KLSAKLS08cGxhY2Vob2xkZXIgbmFtZT0iVHlwZVBsYWNlaG9sZGVyIi8+Ci0tCi0tPG1lbnUgbmFtZT0iSGVscE1lbnUiIGFjdGlvbj0iSGVscCI+Ci0rCTxwbGFjZWhvbGRlciBuYW1lPSJUeXBlUGxhY2Vob2xkZXIiLz4KLSAJPG1lbnVpdGVtIG5hbWU9IkFib3V0TWVudSIgYWN0aW9uPSJBYm91dCIvPgotKwk8bWVudWl0ZW0gbmFtZT0iUXVpdE1lbnUiIGFjdGlvbj0iUXVpdCIvPgotKwotIDwvbWVudT4KLSA8L21lbnViYXI+Ci0gPC91aT4KLUluZGV4OiBzcmMvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBzcmMvTWFrZWZpbGUuYW0JKHJldmlzaW9uIDIyKQotKysrIHNyYy9NYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQotQEAgLTEwLDcgKzEwLDcgQEAKLSAJbGlnaHR1cCBsb29weSBtYXAgbWluZXMgbmV0IG5ldHNsaWRlIHBhdHRlcm4gcGVncyByZWN0IHNhbWVnYW1lIFwKLSAJc2l4dGVlbiBzbGFudCBzb2xvIHRlbnRzIHR3aWRkbGUgdW50YW5nbGUKLSAKLS1saWJwdXp6bGVzX2xhX0xJQkFERCA9ICQoUFVaWkxFU19MSUJTKQotK2xpYnB1enpsZXNfbGFfTElCQUREID0gJChQVVpaTEVTX0xJQlMpIC1sb3dsCi0gbGlicHV6emxlc19sYV9TT1VSQ0VTID0gY29tYmkuYyBcCi0gCQkJY29uZmlndXJhdGlvbi5jIFwKLSAJCQlkcmF3aW5nLmMgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvb2gtcHV6emxlc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9vaC1wdXp6bGVzX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGZhNjhhNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9vaC1wdXp6bGVzX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLVNVTU1BUlkgPSAiUG9ydGFibGUgUHV6emxlIENvbGxlY3Rpb24iCi1IT01FUEFHRSA9ICJodHRwOi8vby1oYW5kLmNvbS8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnLyIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT1mNTZlYzY3NzJkZDFjN2MzNjcwNjdiYmVhOGVhMTY3NSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvdHJlZTIzNC5oO2VuZGxpbmU9Mjg7bWQ1PWExODhlNmQyNTA0MzBjYTA5NGE1NGE4MmY0ODQ3MmE3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy90cmVlMjM0LmM7ZW5kbGluZT0yODttZDU9YjRmZWIxOTc2ZmVlYmY4ZjEzNzkwOTNlZDUyZjI5NDUiCi0KLVNFQ1RJT04gPSAieDExIgotREVQRU5EUyA9ICJndGsrIGdjb25mIGludGx0b29sLW5hdGl2ZSBsaWJyc3ZnIGdldHRleHQtbmF0aXZlIgotCi0jIGxpYm93bCByZXF1aXJlcyB4MTEgaW4gRElTVFJPX0ZFQVRVUkVTCi1ERVBFTkRTX2FwcGVuZF9wb2t5ID0gIiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICdsaWJvd2wnLCAnJywgZCl9IgotCi0jIFJlcXVpcmVzIGdkay9nZGt4Lmggd2hpY2ggaXMgcHJvdmlkZWQgYnkgZ3RrIHdoZW4geDExIGluIERJU1RST19GRUFUVVJFUwotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotU1JDUkVWID0gIjkyZjFhMjBlNGI3MmVlZDdhMzViMDA5ODRkOTc5M2I1MWRjMmZiM2IiCi1QViA9ICIwLjIrZ2l0JHtTUkNQVn0iCi1QUiA9ICJyMTAiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvJHtCUE59IgotU1JDX1VSSV9hcHBlbmRfcG9reSA9ICIgZmlsZTovL29oLXB1enpsZXMtb3dsLW1lbnUucGF0Y2g7c3RyaXBsZXZlbD0wICIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi1iaW5kaXIgPSAiL3Vzci9nYW1lcyIKLQotRVhUUkFfT0VNQUtFICs9ICJHQ09ORl9ESVNBQkxFX01BS0VGSUxFX1NDSEVNQV9JTlNUQUxMPTEiCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0vJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMvCi0KLSAgICBjZCAke0R9LyR7cHJlZml4fS9nYW1lcwotICAgIGZvciBwcm9nIGluICo7IGRvCi0JaWYgWyAteCAkcHJvZyBdOyB0aGVuCi0gICAgICAgICAgICAjIENvbnZlcnQgcHJvZyB0byBUaXRsZSBDYXNlCi0gICAgICAgICAgICB0aXRsZT0kKGVjaG8gJHByb2cgfCBzZWQgJ3MvXCheXHwgXCkuL1xVJi9nJykKLQkgICAgZWNobyAibWFraW5nICR7RH0vJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMvJHByb2cuZGVza3RvcCIKLQkgICAgY2F0IDw8U1RPUCA+ICR7RH0vJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMvJHByb2cuZGVza3RvcAotW0Rlc2t0b3AgRW50cnldCi1OYW1lPSR0aXRsZQotRXhlYz0ke3ByZWZpeH0vZ2FtZXMvJHByb2cKLUljb249YXBwbGljYXRpb25zLWdhbWVzCi1UZXJtaW5hbD1mYWxzZQotVHlwZT1BcHBsaWNhdGlvbgotQ2F0ZWdvcmllcz1HYW1lOwotU3RhcnR1cE5vdGlmeT10cnVlCi1YLU1CLVNpbmdsZUluc3RhbmNlPXRydWUKLUNvbW1lbnQ9UGxheSAkdGl0bGUuCi1TVE9QCi0gICAgICAgIGZpCi0gICAgZG9uZQotfQotCi1QQUNLQUdFUyArPSAiJHtQTn0tZXh0cmEiCi1SREVQRU5EU18ke1BOfS1leHRyYSArPSAib2gtcHV6emxlcyIKLQotRklMRVNfJHtQTn0gPSAiL3Vzci9zaGFyZS9waXhtYXBzIC91c3Ivc2hhcmUvb2gtcHV6emxlcy8iCi1GSUxFU18ke1BOfS1leHRyYSA9ICIvdXNyL2dhbWVzLyAvdXNyL3NoYXJlL2FwcGxpY2F0aW9ucyAvZXRjL2djb25mL3NjaGVtYXMiCi0KLXB5dGhvbiBfX2Fub255bW91cyAoKSB7Ci0gICAgdmFyID0gYmIuZGF0YS5leHBhbmQoIkZJTEVTXyR7UE59IiwgZCwgMSkKLSAgICBkYXRhID0gZC5nZXRWYXIodmFyLCBUcnVlKQotICAgIGZvciBuYW1lIGluICgiYnJpZGdlcyIsICJmaWZ0ZWVuIiwgImluZXJ0aWEiLCAibWFwIiwgInNhbWVnYW1lIiwgInNsYW50Iik6Ci0gICAgICAgIGRhdGEgPSBkYXRhICsgIiAvdXNyL2dhbWVzLyVzIiAlIG5hbWUKLSAgICAgICAgZGF0YSA9IGRhdGEgKyAiIC91c3Ivc2hhcmUvYXBwbGljYXRpb25zLyVzLmRlc2t0b3AiICUgbmFtZQotICAgICAgICBkYXRhID0gZGF0YSArICIgL2V0Yy9nY29uZi9zY2hlbWFzLyVzLnNjaGVtYXMiICUgbmFtZQotICAgIGQuc2V0VmFyKHZhciwgZGF0YSkKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL3B1enpsZXNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvcHV6emxlc19naXQuYmIKaW5kZXggMzQ2ZjQzYi4uMjBiOTg4OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvcHV6emxlc19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvcHV6emxlc19naXQuYmIKQEAgLTIxLDQ1ICsyMSw1NCBAQAogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHBrZ2NvbmZpZworaW5oZXJpdCBhdXRvdG9vbHMgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHBrZ2NvbmZpZwogCi1QQUNLQUdFQ09ORklHID8/PSAiZ3RrMiIKK0NGTEFHU19hcHBlbmQgPSAiIC1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJndGszIgogUEFDS0FHRUNPTkZJR1tndGsyXSA9ICItLXdpdGgtZ3RrPTIsLGd0ayssIgogUEFDS0FHRUNPTkZJR1tndGszXSA9ICItLXdpdGgtZ3RrPTMsLGd0ayszLCIKIAotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotICAgIC4vbWtmaWxlcy5wbAorUEFDS0FHRVMgKz0gIiR7UE59LWV4dHJhIgorRklMRVNfJHtQTn0gPSAiIgorRklMRVNfJHtQTn0tZXh0cmEgPSAiJHtwcmVmaXh9L2JpbiAke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucyIKKworcHl0aG9uIF9fYW5vbnltb3VzICgpIHsKKyAgICB2YXIgPSBkLmV4cGFuZCgiRklMRVNfJHtQTn0iKQorICAgIGRhdGEgPSBkLmdldFZhcih2YXIsIEZhbHNlKQorICAgIGZvciBuYW1lIGluICgiYnJpZGdlcyIsICJmaWZ0ZWVuIiwgImluZXJ0aWEiLCAibWFwIiwgInNhbWVnYW1lIiwgInNsYW50Iik6CisgICAgICAgIGRhdGEgPSBkYXRhICsgIiAke2JpbmRpcn0vJXMiICUgbmFtZQorICAgICAgICBkYXRhID0gZGF0YSArICIgJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMvJXMuZGVza3RvcCIgJSBuYW1lCisgICAgZC5zZXRWYXIodmFyLCBkYXRhKQogfQogCi1GSUxFU18ke1BOfSA9ICIke3ByZWZpeH0vYmluLyogJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMvKiIKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKyAgICBjZCAke1N9CisgICAgLi9ta2ZpbGVzLnBsCisgICAgY2QgJHtCfQorfQogCi1kb19pbnN0YWxsICgpIHsKLSAgICBybSAtcmYgJHtEfS8qCi0gICAgZXhwb3J0IHByZWZpeD0ke0R9Ci0gICAgZXhwb3J0IERFU1RESVI9JHtEfQotICAgIGluc3RhbGwgLWQgJHtEfS8ke3ByZWZpeH0vYmluLwotICAgIG9lX3J1bm1ha2UgaW5zdGFsbAotCi0KLSAgICBpbnN0YWxsIC1kICR7RH0vJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMvCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgIyBuZXQgY29uZmxpY3RzIHdpdGggU2FtYmEsIHNvIHJlbmFtZSBpdAorICAgIG12ICR7RH0ke2JpbmRpcn0vbmV0ICR7RH0ke2JpbmRpcn0vcHV6emxlcy1uZXQKIAogICAgICMgQ3JlYXRlIGRlc2t0b3Agc2hvcnRjdXRzCisgICAgaW5zdGFsbCAtZCAke0R9LyR7ZGF0YWRpcn0vYXBwbGljYXRpb25zLwogICAgIGNkICR7RH0vJHtwcmVmaXh9L2JpbgogICAgIGZvciBwcm9nIGluICo7IGRvCiAJaWYgWyAteCAkcHJvZyBdOyB0aGVuCiAgICAgICAgICAgICAjIENvbnZlcnQgcHJvZyB0byBUaXRsZSBDYXNlCi0gICAgICAgICAgICB0aXRsZT0kKGVjaG8gJHByb2cgfCBzZWQgJ3MvXCheXHwgXCkuL1xVJi9nJykKKyAgICAgICAgICAgIHRpdGxlPSQoZWNobyAkcHJvZyB8IHNlZCAncy9wdXp6bGVzLS8vJyB8IHNlZCAncy9cKF5cfCBcKS4vXFUmL2cnKQogCSAgICBlY2hvICJtYWtpbmcgJHtEfS8ke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucy8kcHJvZy5kZXNrdG9wIgogCSAgICBjYXQgPDxTVE9QID4gJHtEfS8ke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucy8kcHJvZy5kZXNrdG9wCiBbRGVza3RvcCBFbnRyeV0KIE5hbWU9JHRpdGxlCi1FeGVjPSR7cHJlZml4fS9iaW4vJHByb2cKK0V4ZWM9JHtiaW5kaXJ9LyRwcm9nCiBJY29uPWFwcGxpY2F0aW9ucy1nYW1lcwogVGVybWluYWw9ZmFsc2UKIFR5cGU9QXBwbGljYXRpb24KIENhdGVnb3JpZXM9R2FtZTsKIFN0YXJ0dXBOb3RpZnk9dHJ1ZQotWC1NQi1TaW5nbGVJbnN0YW5jZT10cnVlCiBTVE9QCiAgICAgICAgIGZpCiAgICAgZG9uZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3NhdG8taWNvbi10aGVtZS9zYXRvLWljb24tdGhlbWUvMDAwMS1Jbmhlcml0LXRoZS1HTk9NRS1pY29uLXRoZW1lLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3NhdG8taWNvbi10aGVtZS9zYXRvLWljb24tdGhlbWUvMDAwMS1Jbmhlcml0LXRoZS1HTk9NRS1pY29uLXRoZW1lLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzE3NmVlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9zYXRvLWljb24tdGhlbWUvc2F0by1pY29uLXRoZW1lLzAwMDEtSW5oZXJpdC10aGUtR05PTUUtaWNvbi10aGVtZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gYjlmMDI5ODkzMTBhM2M5MjA1ODlmMWFhNjQ2YmNiZjE2YjI1NzJhMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci1EYXRlOiBXZWQsIDEzIEp1biAyMDEyIDExOjA3OjMzICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEluaGVyaXQgdGhlIEdOT01FIGljb24gdGhlbWUKLQotSWYgdGhlIEdOT01FIGljb24gdGhlbWUgaXNuJ3QgaW5zdGFsbGVkIHRoaXMgaXMgYSBuby1vcCwgYnV0IGlmIGl0IGlzIHRoZW4KLXlvdSdsbCBnZXQgZmFsbGJhY2sgZnJvbSBTYXRvIHRvIEdOT01FIGZvciBpY29ucyB0aGF0IGFyZSBub3QgaW4gU2F0by4KLQotQXMgYXBwbGljYXRpb25zIHRoYXQgdXNlIHRoZSBmdWxsIEdOT01FIGljb24gdGhlbWUgZGVwZW5kIG9uIGdub21lLWljb24tdGhlbWUsCi10aGlzIGp1c3Qgd29ya3MuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLS0tLQotIGluZGV4LnRoZW1lIHwgICAgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9pbmRleC50aGVtZSBiL2luZGV4LnRoZW1lCi1pbmRleCBjNGIwM2E3Li42ODhmYmJmIDEwMDY0NAotLS0tIGEvaW5kZXgudGhlbWUKLSsrKyBiL2luZGV4LnRoZW1lCi1AQCAtMSw2ICsxLDcgQEAKLSBbSWNvbiBUaGVtZV0KLSBOYW1lPVNhdG8KLSBDb21tZW50PVNhdG8gaWNvbiB0aGVtZQotK0luaGVyaXRzPUFkd2FpdGEKLSAKLSBEaXJlY3Rvcmllcz0xNngxNi9hcHBzLDE2eDE2L3N0YXR1cywxNngxNi9zdG9jaywxNngxNi9wbGFjZXMsMTZ4MTYvbWltZXR5cGVzLDE2eDE2L2RldmljZXMsMTZ4MTYvYWN0aW9ucywyMngyMi9hcHBzLDIyeDIyL3N0YXR1cywyMngyMi9zdG9jaywyMngyMi9wbGFjZXMsMjJ4MjIvbWltZXR5cGVzLDIyeDIyL2RldmljZXMsMjJ4MjIvYWN0aW9ucywzMngzMi9hcHBzLDMyeDMyL3N0YXR1cywzMngzMi9zdG9jaywzMngzMi9wbGFjZXMsMzJ4MzIvbWltZXR5cGVzLDMyeDMyL2RldmljZXMsMzJ4MzIvYWN0aW9ucyw0OHg0OC9hcHBzLDQ4eDQ4L3N0YXR1cyw0OHg0OC9zdG9jayw0OHg0OC9wbGFjZXMsNDh4NDgvbWltZXR5cGVzLDQ4eDQ4L2RldmljZXMsNDh4NDgvYWN0aW9ucyw2NHg2NC9hcHBzLDY0eDY0L3N0YXR1cyw2NHg2NC9zdG9jayw2NHg2NC9wbGFjZXMsNjR4NjQvbWltZXR5cGVzLDY0eDY0L2RldmljZXMsNjR4NjQvYWN0aW9ucywKLSAKLS0tIAotMS43LjEwCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9zYXRvLWljb24tdGhlbWUvc2F0by1pY29uLXRoZW1lXzAuNC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3NhdG8taWNvbi10aGVtZS9zYXRvLWljb24tdGhlbWVfMC40LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlZDczNWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3NhdG8taWNvbi10aGVtZS9zYXRvLWljb24tdGhlbWVfMC40LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1TVU1NQVJZID0gIlNhdG8gaWNvbiB0aGVtZSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuby1oYW5kLmNvbSIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvIgotCi1MSUNFTlNFID0gIkNDLUJZLVNBLTMuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU2YTgzMGJiZTZlNDY5N2ZlNmNiYmFlMDFiYjdjMmIyIgotU0VDVElPTiA9ICJ4MTEiCi0KLVBSID0gInI2IgotCi1ERVBFTkRTID0gImljb24tbmFtaW5nLXV0aWxzLW5hdGl2ZSBsaWJ4bWwtc2ltcGxlLXBlcmwtbmF0aXZlIgotCi1TUkNfVVJJID0gImh0dHA6Ly9wb2t5bGludXgub3JnL3JlbGVhc2VzL3NhdG8vJHtCUE59LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUluaGVyaXQtdGhlLUdOT01FLWljb24tdGhlbWUucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4NmE4NDdmMzEyOGE0M2E5Y2YyM2I3MDI5YTY1NmY1MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwYjBhMjgwN2E2YTk2OTE4YWM3OTlhODYwOTRlYzNlOGUyYzg5MmJlMGZkNjc5YTQyMzJjMmE3N2YyZjYxNzMyIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgYWxsYXJjaCBndGstaWNvbi1jYWNoZSBwZXJsbmF0aXZlCi0KLSMgVGhlIGNvbmZpZ3VyZSBzY3JpcHQgdXNlcyBwa2ctY29uZmlnIHRvIGZpbmQgbmF0aXZlIGJpbmFyaWVzIHRvIGV4ZWN1dGUsIHNvCi0jIHRlbGwgaXQgdG8gdXNlIG91ciBwa2ctY29uZmlnLW5hdGl2ZSB3cmFwcGVyLgotZXhwb3J0IFBLR19DT05GSUcgPSAicGtnLWNvbmZpZy1uYXRpdmUiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2ljb25zL1NhdG8iCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCWZpbmQgJHtEfSR7ZGF0YWRpcn0vaWNvbnMvU2F0by8gLW1heGRlcHRoIDEgLXR5cGUgZCAtZXhlYyBsbiAtcyBwcmVmZXJlbmNlcy1zeXN0ZW0ucG5nIHt9L2FwcHMvcHJlZmVyZW5jZXMtZGVza3RvcC5wbmcgXDsKLQlmaW5kICR7RH0ke2RhdGFkaXJ9L2ljb25zL1NhdG8vIC1tYXhkZXB0aCAxIC10eXBlIGQgLWV4ZWMgbG4gLXMgZmlsZS1tYW5hZ2VyLnBuZyB7fS9hcHBzL3N5c3RlbS1maWxlLW1hbmFnZXIucG5nIFw7Ci0JZmluZCAke0R9JHtkYXRhZGlyfS9pY29ucy9TYXRvLyAtbWF4ZGVwdGggMSAtdHlwZSBkIC1leGVjIGxuIC1zIC4uL2FwcHMvdGVybWluYWwucG5nIHt9L3BsYWNlcy9jb21wdXRlci5wbmcgXDsKLX0KLQotIyBFeHBsaWN0bHkgc2V0dGluZyAiU2F0byIgYXMgdGhlIGRlZmF1bHQgaWNvbiB0aGVtZSB0byBhdm9pZCBmbGlja2VyaW5nIGZyb20KLSMgdGhlIGRlc2t0b3AgYW5kIHNldHRpbmdzIGRhZW1vbiByYWNpbmcuICBUaGlzIHNob3VsZG4ndCBiZSBkb25lIGhlcmUgYnV0IGluIHRoZSBzYXRvIGltYWdlCi1wa2dfcG9zdGluc3RfJHtQTn0gKCkgewotICAgIG1rZGlyIC1wICREL2V0Yy9ndGstMi4wCi0KLSAgICBncmVwIC1zIC1xIC1lIF5ndGstaWNvbi10aGVtZS1uYW1lLipcIlNhdG9cIiAkRC9ldGMvZ3RrLTIuMC9ndGtyYyB8fCBcCi0gICAgICAgIGVjaG8gJ2d0ay1pY29uLXRoZW1lLW5hbWUgPSAiU2F0byInID4+ICREL2V0Yy9ndGstMi4wL2d0a3JjCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vc2F0by1zY3JlZW5zaG90L3NhdG8tc2NyZWVuc2hvdF8wLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vc2F0by1zY3JlZW5zaG90L3NhdG8tc2NyZWVuc2hvdF8wLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjMzMDVhZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9zYXRvLXNjcmVlbnNob3Qvc2F0by1zY3JlZW5zaG90XzAuMy5iYgpAQCAtMCwwICsxLDI4IEBACitTVU1NQVJZID0gIlVsdHJhLXNpbXBsZSBzY3JlZW4gY2FwdHVyZSB1dGlsaXR5LCBhaW1lZCBhdCBoYW5kaGVsZCBkZXZpY2VzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vLWhhbmQuY29tIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy8iCisKK0xJQ0VOU0UgPSAiR1BMdjIgJiBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9tYWluLmM7ZW5kbGluZT05O21kNT0wMjNlMTRkNjQwNGQwYTk2MWViOTdjYmQwMTFmYzE0MSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zY3JlZW5zaG90LXVpLmg7ZW5kbGluZT05O21kNT02MzhkOWZmYTgzZTkzMjVhMzZkZjIyNDE2NmVkNmFkMCIKKworREVQRU5EUyA9ICJtYXRjaGJveC1wYW5lbC0yIGd0ayszIgorCisjIFNSQ1JFViB0YWdnZWQgMC4zCitTUkNSRVYgPSAiOTI1MGZhNWEwMTJkODRmZjQ1OTg0ZThjNDM0NWVlNzYzNTIyNzc1NiIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvc2NyZWVuc2hvdCIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPihcZCsoXC5cZCspKykpIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vbWF0Y2hib3gtcGFuZWwvKi5zbyIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCXJtICR7RH0ke2xpYmRpcn0vbWF0Y2hib3gtcGFuZWwvKi5sYQorfQorCisjIFRoZSBtYXRjaGJveC1wYW5lbC0yIHJlcXVpcmVzIHgxMSBpbiBESVNUUk9fRkVBVFVSRVMKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vc2F0by1zY3JlZW5zaG90L3NhdG8tc2NyZWVuc2hvdF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vc2F0by1zY3JlZW5zaG90L3NhdG8tc2NyZWVuc2hvdF9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiMmI2NWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3NhdG8tc2NyZWVuc2hvdC9zYXRvLXNjcmVlbnNob3RfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotU1VNTUFSWSA9ICJVbHRyYS1zaW1wbGUgc2NyZWVuIGNhcHR1cmUgdXRpbGl0eSwgYWltZWQgYXQgaGFuZGhlbGQgZGV2aWNlcyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuby1oYW5kLmNvbSIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvIgotCi1MSUNFTlNFID0gIkdQTHYyICYgR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbWFpbi5jO2VuZGxpbmU9OTttZDU9MDIzZTE0ZDY0MDRkMGE5NjFlYjk3Y2JkMDExZmMxNDEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc2NyZWVuc2hvdC11aS5oO2VuZGxpbmU9OTttZDU9NjM4ZDlmZmE4M2U5MzI1YTM2ZGYyMjQxNjZlZDZhZDAiCi0KLURFUEVORFMgPSAibWF0Y2hib3gtcGFuZWwtMiIKLVNSQ1JFViA9ICIzYTk2ODhlOGEwMWI2M2E3OGY0MDJiNGU3YzBiOGIwMDVmY2RmYTI5IgotUFYgPSAiMC4xK2dpdCR7U1JDUFZ9IgotUFIgPSAicjIiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvc2NyZWVuc2hvdCIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L21hdGNoYm94LXBhbmVsLyouc28iCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlybSAke0R9JHtsaWJkaXJ9L21hdGNoYm94LXBhbmVsLyoubGEKLX0KLQotIyBUaGUgbWF0Y2hib3gtcGFuZWwtMiByZXF1aXJlcyB4MTEgaW4gRElTVFJPX0ZFQVRVUkVTCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3NldHRpbmdzLWRhZW1vbi9maWxlcy9kc29fbGlua2luZ19jaGFuZ2VfYnVpbGRfZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3NldHRpbmdzLWRhZW1vbi9maWxlcy9kc29fbGlua2luZ19jaGFuZ2VfYnVpbGRfZml4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OTQzNzQ0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9zZXR0aW5ncy1kYWVtb24vZmlsZXMvZHNvX2xpbmtpbmdfY2hhbmdlX2J1aWxkX2ZpeC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotYWZ0ZXIgZ2NjIGxpbmtpbmcgaGFzIGNoYW5nZWQsIGFsbCB0aGUgbGlicmFyaWVzIG11c3QgYmUgZXhwbGljaXRlbHkgc3BlY2lmaWVkIHRvIGZvciBsaW5raW5nLiAKLVRoaXMgcGF0Y2ggYXZvaWRzIHRoaXMgbGlua2luZyBlcnJvcjoKLQotfCBtYWtlICBhbGwtYW1eTQotfCBtYWtlWzFdOiBFbnRlcmluZyBkaXJlY3RvcnkgYC9kaXNrMC9wb2t5YnVpbGQvYnVpbGQxL3RtcC93b3JrL2k1ODYtcG9reS1saW51eC9zZXR0aW5ncy1kYWVtb24tMC4wK3N2bnIyMDU5LXIzL3NldHRpbmdzLWRhZW1vbideTQotfCBjY2FjaGUgaTU4Ni1wb2t5LWxpbnV4LWdjYyAtbWFyY2g9aTU4NiAtLXN5c3Jvb3Q9L2Rpc2swL3Bva3lidWlsZC9idWlsZDEvdG1wL3N5c3Jvb3RzL2k1ODYtcG9reS1saW51eCAtV2FsbCAtZmV4cGVuc2l2ZS1vcHRpbWl6YXRpb25zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1mcmVuYW1lLXJlZ2lzdGVycyAtTzIgLWdnZGIgLWZlbGltaW5hdGUtdW51c2VkLWRlYnVnLXR5cGVzICAtV2wsLU8xIC1XbCwtLWhhc2gtc3R5bGU9Z251IC1XbCwtLWFzLW5lZWRlZCAtbyBzZXR0aW5ncy1kYWVtb24gc2V0dGluZ3NfZGFlbW9uLXhzZXR0aW5ncy1jb21tb24ubyBzZXR0aW5nc19kYWVtb24teHNldHRpbmdzLW1hbmFnZXIubyBzZXR0aW5nc19kYWVtb24tc2V0dGluZ3MtZGFlbW9uLm8gLXB0aHJlYWQgLWxnY29uZi0yIC1sZGJ1cy1nbGliLTEgLWxkYnVzLTEgLWxwdGhyZWFkIC1sZ2RrLXgxMS0yLjAgLWxnZGtfcGl4YnVmLTIuMCAtbHBhbmdvY2Fpcm8tMS4wIC1scGFuZ28tMS4wIC1sY2Fpcm8gLWxnb2JqZWN0LTIuMCAtbGdtb2R1bGUtMi4wIC1sZ3RocmVhZC0yLjAgLWxydCAtbGdsaWItMi4wXk0KLXwgL2Rpc2swL3Bva3lidWlsZC9idWlsZDEvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliZXhlYy9pNTg2LXBva3ktbGludXgvZ2NjL2k1ODYtcG9reS1saW51eC80LjUuMS9sZDogKl5BOiBpbnZhbGlkIERTTyBmb3Igc3ltYm9sIGBYQ3JlYXRlU2ltcGxlV2luZG93JyBkZWZpbml0aW9uXk0KLXwgL2Rpc2swL3Bva3lidWlsZC9idWlsZDEvdG1wL3N5c3Jvb3RzL2k1ODYtcG9reS1saW51eC91c3IvbGliL2xpYlgxMS5zby42OiBjb3VsZCBub3QgcmVhZCBzeW1ib2xzOiBCYWQgdmFsdWVeTQotfCBjb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1c15NCi18IG1ha2VbMV06ICoqKiBbc2V0dGluZ3MtZGFlbW9uXSBFcnJvciAxXk0KLXwgbWFrZVsxXTogTGVhdmluZyBkaXJlY3RvcnkgYC9kaXNrMC9wb2t5YnVpbGQvYnVpbGQxL3RtcC93b3JrL2k1ODYtcG9reS1saW51eC9zZXR0aW5ncy1kYWVtb24tMC4wK3N2bnIyMDU5LXIzL3NldHRpbmdzLWRhZW1vbideTQotfCBtYWtlOiAqKiogW2FsbF0gRXJyb3IgMl5NCi0KLU5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+Ci1EYXRlOiAyMDExLzAxLzExCi0KLUluZGV4OiBzZXR0aW5ncy1kYWVtb24vY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc2V0dGluZ3MtZGFlbW9uLm9yaWcvY29uZmlndXJlLmFjCi0rKysgc2V0dGluZ3MtZGFlbW9uL2NvbmZpZ3VyZS5hYwotQEAgLTE0LDcgKzE0LDcgQEAgQUNfUFJPR19DQwotIAotIAotIGRubCBUT0RPOiBtYWtlIGdjb25mIG9wdGlvbmFsCi0tUEtHX0NIRUNLX01PRFVMRVMoQVBQLCBbZ2NvbmYtMi4wIGdkay14MTEtMi4wXSkKLStQS0dfQ0hFQ0tfTU9EVUxFUyhBUFAsIFtnY29uZi0yLjAgZ2RrLXgxMS0yLjAgeDExXSkKLSAKLSAKLSBBQ19TVUJTVChBUFBfQ0ZMQUdTKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3NldHRpbmdzLWRhZW1vbi9zZXR0aW5ncy1kYWVtb25fMC4wLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vc2V0dGluZ3MtZGFlbW9uL3NldHRpbmdzLWRhZW1vbl8wLjAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZWFlY2NhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3NldHRpbmdzLWRhZW1vbi9zZXR0aW5ncy1kYWVtb25fMC4wLjIuYmIKQEAgLTAsMCArMSwzMCBAQAorU1VNTUFSWSA9ICJQcm92aWRlcyBhIGJyaWRnZSBiZXR3ZWVuIGdjb25mIGFuZCB4c2V0dGluZ3MiCitIT01FUEFHRSA9ICJodHRwOi8vc3ZuLm8taGFuZC5jb20vdmlldy9tYXRjaGJveC90cnVuay9zZXR0aW5ncy1kYWVtb24vIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy8iCitMSUNFTlNFID0gIk1JVC1zdHlsZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3hzZXR0aW5ncy1tYW5hZ2VyLmg7ZW5kbGluZT0yMjttZDU9N2NmYWM5ZDJkNGRjMzY5NGNjN2ViNjA1Y2YzMmE2OWIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8veHNldHRpbmdzLWNvbW1vbi5oO2VuZGxpbmU9MjI7bWQ1PTdjZmFjOWQyZDRkYzM2OTRjYzdlYjYwNWNmMzJhNjliIgorREVQRU5EUyA9ICJnY29uZiBnbGliLTIuMCBndGsrMyIKK1NFQ1RJT04gPSAieDExIgorCisjIFNSQ1JFViB0YWdnZWQgMC4wLjIKK1NSQ1JFViA9ICJiMmU1ZGE1MDJmOGM1ZmY3NWU5ZTZkYTc3MTM3MmVmOGU0MGZkOWEyIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy94c2V0dGluZ3MtZGFlbW9uIFwKKyAgICAgICAgICAgZmlsZTovL2FkZHNvdW5ka2V5cy5wYXRjaDthcHBseT15ZXMgXAorICAgICAgICAgICBmaWxlOi8vNzBzZXR0aW5ncy1kYWVtb24uc2ggXAorICAgICAgICAgICAiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj4oXGQrKFwuXGQrKSspKSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdjb25mIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCitGSUxFU18ke1BOfSA9IAkiJHtiaW5kaXJ9LyogJHtzeXNjb25mZGlyfSIKKworIyBSZXF1aXJlcyBnZGsteDExLTIuMCB3aGljaCBpcyBwcm92aWRlZCBieSBndGsgd2hlbiB4MTEgaW4gRElTVFJPX0ZFQVRVUkVTCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vWDExL1hzZXNzaW9uLmQKKwlpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9Lzcwc2V0dGluZ3MtZGFlbW9uLnNoICR7RH0vJHtzeXNjb25mZGlyfS9YMTEvWHNlc3Npb24uZC8KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9zZXR0aW5ncy1kYWVtb24vc2V0dGluZ3MtZGFlbW9uX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9zZXR0aW5ncy1kYWVtb24vc2V0dGluZ3MtZGFlbW9uX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzA2MTU1My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vc2V0dGluZ3MtZGFlbW9uL3NldHRpbmdzLWRhZW1vbl9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1TVU1NQVJZID0gIlByb3ZpZGVzIGEgYnJpZGdlIGJldHdlZW4gZ2NvbmYgYW5kIHhzZXR0aW5ncyIKLUhPTUVQQUdFID0gImh0dHA6Ly9zdm4uby1oYW5kLmNvbS92aWV3L21hdGNoYm94L3RydW5rL3NldHRpbmdzLWRhZW1vbi8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnLyIKLUxJQ0VOU0UgPSAiTUlULXN0eWxlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8veHNldHRpbmdzLW1hbmFnZXIuaDtlbmRsaW5lPTIyO21kNT03Y2ZhYzlkMmQ0ZGMzNjk0Y2M3ZWI2MDVjZjMyYTY5YiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly94c2V0dGluZ3MtY29tbW9uLmg7ZW5kbGluZT0yMjttZDU9N2NmYWM5ZDJkNGRjMzY5NGNjN2ViNjA1Y2YzMmE2OWIiCi1ERVBFTkRTID0gImdjb25mIGdsaWItMi4wIGd0aysiCi1TRUNUSU9OID0gIngxMSIKLVNSQ1JFViA9ICI5YTk5NTI4YjAyMjU1NDUwZGI4MTE3NmFiZDliYmNjMWRhYjlhNGMxIgotUFYgPSAiMC4wK2dpdCR7U1JDUFZ9IgotCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveHNldHRpbmdzLWRhZW1vbiBcCi0gICAgICAgICAgIGZpbGU6Ly9hZGRzb3VuZGtleXMucGF0Y2g7YXBwbHk9eWVzIFwKLSAgICAgICAgICAgZmlsZTovLzcwc2V0dGluZ3MtZGFlbW9uLnNoIFwKLSAgICAgICAgICAgZmlsZTovL2Rzb19saW5raW5nX2NoYW5nZV9idWlsZF9maXgucGF0Y2giCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnY29uZiBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotRklMRVNfJHtQTn0gPSAJIiR7YmluZGlyfS8qICR7c3lzY29uZmRpcn0iCi0KLSMgUmVxdWlyZXMgZ2RrLXgxMS0yLjAgd2hpY2ggaXMgcHJvdmlkZWQgYnkgZ3RrIHdoZW4geDExIGluIERJU1RST19GRUFUVVJFUwotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCWluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L1gxMS9Yc2Vzc2lvbi5kCi0JaW5zdGFsbCAtbSA3NTUgJHtXT1JLRElSfS83MHNldHRpbmdzLWRhZW1vbi5zaCAke0R9LyR7c3lzY29uZmRpcn0vWDExL1hzZXNzaW9uLmQvCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L2ZpbGVzLzAwMDEtRml4LXJhY3ktcGFyYWxsZWwtYnVpbGQtb2YtV2ViS2l0Mi00LjAuZ2lyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC9maWxlcy8wMDAxLUZpeC1yYWN5LXBhcmFsbGVsLWJ1aWxkLW9mLVdlYktpdDItNC4wLmdpci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTVmZTRmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC9maWxlcy8wMDAxLUZpeC1yYWN5LXBhcmFsbGVsLWJ1aWxkLW9mLVdlYktpdDItNC4wLmdpci5wYXRjaApAQCAtMCwwICsxLDQ4IEBACitGcm9tIDU3NjBkMzQ2YjQyODA3YjU5NmY0NzljODFmN2E2YjQyZWIzNjA2NWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMjkgQXVnIDIwMTYgMTY6Mzg6MTEgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IHJhY3kgcGFyYWxsZWwgYnVpbGQgb2YgV2ViS2l0Mi00LjAuZ2lyCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSB8IDkgKysrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKK2luZGV4IGFkYWEwMTAuLmYxOGNmOGEgMTAwNjQ0CistLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQorKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKK0BAIC05MDYsOCArOTA2LDkgQEAgZW5kaWYgKCkKKyBzdHJpbmcoUkVHRVggTUFUQ0hBTEwgIi1MW14gXSoiCisgICAgIElOVFJPU1BFQ1RJT05fQURESVRJT05BTF9MSU5LRVJfRkxBR1MgIiR7Q01BS0VfU0hBUkVEX0xJTktFUl9GTEFHU30iKQorIAorLWFkZF9jdXN0b21fY29tbWFuZCgKKy0gICAgT1VUUFVUICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi0ke1dFQktJVEdUS19BUElfVkVSU0lPTn0uZ2lyCisrIyBUaGlzIGlzIGEgdGFyZ2V0IGFuZCBub3QgYSBjb21tYW5kIGJlY2F1c2UgaXQncyB1c2VkIHRvIGJ1aWxkIGFub3RoZXIgLmdpcgorKyMgYW5kIGEgLnR5cGVsaWIsIHdoaWNoIHdvdWxkIHRyaWdnZXIgdHdvIHJhY3kgcGFyYWxsZWwgYnVpbGRzIHdoZW4gdXNpbmcgY29tbWFuZAorK2FkZF9jdXN0b21fdGFyZ2V0KFdlYktpdDItJHtXRUJLSVRHVEtfQVBJX1ZFUlNJT059LWdpcgorICAgICBERVBFTkRTIFdlYktpdDIKKyAgICAgREVQRU5EUyAke0NNQUtFX0JJTkFSWV9ESVJ9L0phdmFTY3JpcHRDb3JlLSR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfS5naXIKKyAgICAgQ09NTUFORCBDQz0ke0NNQUtFX0NfQ09NUElMRVJ9IENGTEFHUz0tV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zXCAke0NNQUtFX0NfRkxBR1N9IExERkxBR1M9CitAQCAtOTUwLDcgKzk1MSw3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKKyBhZGRfY3VzdG9tX2NvbW1hbmQoCisgICAgIE9VVFBVVCAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDJXZWJFeHRlbnNpb24tJHtXRUJLSVRHVEtfQVBJX1ZFUlNJT059LmdpcgorICAgICBERVBFTkRTICR7Q01BS0VfQklOQVJZX0RJUn0vSmF2YVNjcmlwdENvcmUtJHtXRUJLSVRHVEtfQVBJX1ZFUlNJT059LmdpcgorLSAgICBERVBFTkRTICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi0ke1dFQktJVEdUS19BUElfVkVSU0lPTn0uZ2lyCisrICAgIERFUEVORFMgV2ViS2l0Mi0ke1dFQktJVEdUS19BUElfVkVSU0lPTn0tZ2lyCisgICAgIENPTU1BTkQgQ0M9JHtDTUFLRV9DX0NPTVBJTEVSfSBDRkxBR1M9LVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9uc1wgJHtDTUFLRV9DX0ZMQUdTfQorICAgICAgICAgTERGTEFHUz0iJHtJTlRST1NQRUNUSU9OX0FERElUSU9OQUxfTERGTEFHU30iCisgICAgICAgICAke0xPQURFUl9MSUJSQVJZX1BBVEhfVkFSfT0iJHtJTlRST1NQRUNUSU9OX0FERElUSU9OQUxfTElCUkFSWV9QQVRIfSIKK0BAIC0xMDA0LDcgKzEwMDUsNyBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCisgCisgYWRkX2N1c3RvbV9jb21tYW5kKAorICAgICBPVVRQVVQgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyLSR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfS50eXBlbGliCistICAgIERFUEVORFMgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyLSR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfS5naXIKKysgICAgREVQRU5EUyBXZWJLaXQyLSR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfS1naXIKKyAgICAgQ09NTUFORCAke0lOVFJPU1BFQ1RJT05fQ09NUElMRVJ9IC0taW5jbHVkZWRpcj0ke0NNQUtFX0JJTkFSWV9ESVJ9ICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi0ke1dFQktJVEdUS19BUElfVkVSU0lPTn0uZ2lyIC1vICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi0ke1dFQktJVEdUS19BUElfVkVSU0lPTn0udHlwZWxpYgorICkKKyAKKy0tIAorMi45LjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC9maWxlcy8wMDAxLU9wdGlvbnNHVEsuY21ha2UtZHJvcC10aGUtaGFyZGNvZGVkLWludHJvc3BlY3Rpb24tZ3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L2ZpbGVzLzAwMDEtT3B0aW9uc0dUSy5jbWFrZS1kcm9wLXRoZS1oYXJkY29kZWQtaW50cm9zcGVjdGlvbi1ndC5wYXRjaAppbmRleCAzZDAwNGRiLi45M2E2OWMwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L2ZpbGVzLzAwMDEtT3B0aW9uc0dUSy5jbWFrZS1kcm9wLXRoZS1oYXJkY29kZWQtaW50cm9zcGVjdGlvbi1ndC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L2ZpbGVzLzAwMDEtT3B0aW9uc0dUSy5jbWFrZS1kcm9wLXRoZS1oYXJkY29kZWQtaW50cm9zcGVjdGlvbi1ndC5wYXRjaApAQCAtMTMsMTEgKzEzLDExIEBACiAgU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UgfCA2IC0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCA2IGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQotaW5kZXggZTVmMWY1Yi4uNDY5ODAzNiAxMDA2NDQKLS0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCi0rKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQotQEAgLTQ0MywxMiArNDQzLDYgQEAgaWYgKFVTRV9MSUJIWVBIRU4pCitJbmRleDogd2Via2l0Z3RrLTIuMTIuMS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHdlYmtpdGd0ay0yLjEyLjEub3JpZy9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQorKysrIHdlYmtpdGd0ay0yLjEyLjEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKK0BAIC00MjQsMTIgKzQyNCw2IEBAIGlmIChVU0VfTElCSFlQSEVOKQogICAgICBlbmRpZiAoKQogIGVuZGlmICgpCiAgCkBAIC0yNyw5ICsyNyw2IEBACiAtICAgIHNldChFTkFCTEVfSU5UUk9TUEVDVElPTiBPRkYpCiAtZW5kaWYgKCkKIC0KLSBzZXQoREVSSVZFRF9TT1VSQ0VTX0dPQkpFQ1RfRE9NX0JJTkRJTkdTX0RJUiAke0RFUklWRURfU09VUkNFU19ESVJ9L3dlYmtpdGRvbSkKLSBzZXQoREVSSVZFRF9TT1VSQ0VTX1dFQktJVEdUS19ESVIgJHtERVJJVkVEX1NPVVJDRVNfRElSfS93ZWJraXRndGspCi0gc2V0KERFUklWRURfU09VUkNFU19XRUJLSVRHVEtfQVBJX0RJUiAke0RFUklWRURfU09VUkNFU19XRUJLSVRHVEtfRElSfS93ZWJraXQpCi0tLSAKLTIuNy4wCi0KKyAjIE92ZXJyaWRlIHRoZSBjYWNoZWQgdmFyaWFibGUsIGd0ay1kb2MgZG9lcyBub3QgcmVhbGx5IHdvcmsgd2hlbiBidWlsZGluZyBvbiBNYWMuCisgaWYgKEFQUExFKQorICAgICBzZXQoRU5BQkxFX0dUS0RPQyBPRkYpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L2ZpbGVzLzAwMDEtVHdlYWstZ3RrZG9jLXNldHRpbmdzLXNvLXRoYXQtZ3RrZG9jLWdlbmVyYXRpb24td29yay5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvZmlsZXMvMDAwMS1Ud2Vhay1ndGtkb2Mtc2V0dGluZ3Mtc28tdGhhdC1ndGtkb2MtZ2VuZXJhdGlvbi13b3JrLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4NmRkMjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L2ZpbGVzLzAwMDEtVHdlYWstZ3RrZG9jLXNldHRpbmdzLXNvLXRoYXQtZ3RrZG9jLWdlbmVyYXRpb24td29yay5wYXRjaApAQCAtMCwwICsxLDQ5IEBACitGcm9tIDRlZWVhZWM3NzVlMTkwY2YzZjU4ODVkN2M2NzE3YWNlYmQwMjAxYTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTEgQXVnIDIwMTYgMTc6MTM6NTEgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gVHdlYWsgZ3RrZG9jIHNldHRpbmdzIHNvIHRoYXQgZ3RrZG9jIGdlbmVyYXRpb24gd29ya3MgdW5kZXIKKyBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCisKK1RoaXMgcmVxdWlyZXMgc2V0dGluZyBhIGZldyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgc28gdGhhdCB0aGUgdHJhbnNpZW50CitiaW5hcnkgaXMgYnVpbGQgYW5kIGxpbmtlZCBjb3JyZWN0bHksIGFuZCBkaXNhYmxpbmcgdGhlIHR3ZWFrcyB0byBSVU4KK3ZhcmlhYmxlIGZyb20gZ3RrZG9jLnB5IHNjcmlwdCBzbyB0aGF0IG91ciBxZW11IHdyYXBwZXIgaXMgdGFrZW4gaW50byB1c2UuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Utc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIFNvdXJjZS9QbGF0Zm9ybUdUSy5jbWFrZSB8IDIgKy0KKyBUb29scy9ndGsvZ3RrZG9jLnB5ICAgICAgfCA0ICsrLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9QbGF0Zm9ybUdUSy5jbWFrZQoraW5kZXggYWY0ZDJlMy4uYjdiOTNjNyAxMDA2NDQKKy0tLSBhL1NvdXJjZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysrIGIvU291cmNlL1BsYXRmb3JtR1RLLmNtYWtlCitAQCAtMjUsNyArMjUsNyBAQCBtYWNybyhBRERfR1RLRE9DX0dFTkVSQVRPUiBfc3RhbXBfbmFtZSBfZXh0cmFfYXJncykKKyAgICAgYWRkX2N1c3RvbV9jb21tYW5kKAorICAgICAgICAgT1VUUFVUICIke0NNQUtFX0JJTkFSWV9ESVJ9LyR7X3N0YW1wX25hbWV9IgorICAgICAgICAgREVQRU5EUyAke0RvY3VtZW50YXRpb25EZXBlbmRlbmNpZXN9CistICAgICAgICBDT01NQU5EIENDPSR7Q01BS0VfQ19DT01QSUxFUn0gQ0ZMQUdTPSR7Q01BS0VfQ19GTEFHU30gJHtDTUFLRV9TT1VSQ0VfRElSfS9Ub29scy9ndGsvZ2VuZXJhdGUtZ3RrZG9jICR7X2V4dHJhX2FyZ3N9CisrICAgICAgICBDT01NQU5EIENDPSR7Q01BS0VfQ19DT01QSUxFUn0gQ0ZMQUdTPSR7Q01BS0VfQ19GTEFHU30gTEQ9JHtDTUFLRV9DX0NPTVBJTEVSfSBMREZMQUdTPSR7Q01BS0VfQ19MSU5LX0ZMQUdTfSBSVU49JHtDTUFLRV9CSU5BUllfRElSfS9ndGtkb2MtcWVtdXdyYXBwZXIgR0lSX0VYVFJBX0xJQlNfUEFUSD0ke0NNQUtFX0JJTkFSWV9ESVJ9L2xpYiAke0NNQUtFX1NPVVJDRV9ESVJ9L1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MgJHtfZXh0cmFfYXJnc30KKyAgICAgICAgIENPTU1BTkQgdG91Y2ggJHtfc3RhbXBfbmFtZX0KKyAgICAgICAgIFdPUktJTkdfRElSRUNUT1JZICIke0NNQUtFX0JJTkFSWV9ESVJ9IgorICAgICApCitkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2d0a2RvYy5weSBiL1Rvb2xzL2d0ay9ndGtkb2MucHkKK2luZGV4IDRjODIzN2IuLmMwMjA1ZjAgMTAwNjQ0CistLS0gYS9Ub29scy9ndGsvZ3RrZG9jLnB5CisrKysgYi9Ub29scy9ndGsvZ3RrZG9jLnB5CitAQCAtMzE4LDkgKzMxOCw5IEBAIGNsYXNzIEdUS0RvYyhvYmplY3QpOgorICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbF9sZGZsYWdzID0gJyVzICVzJyAlIChhZGRpdGlvbmFsX2xkZmxhZ3MsIGFyZykKKyAgICAgICAgICAgICBsZGZsYWdzID0gJyAiLUwlcyIgJXMgJyAlIChzZWxmLmxpYnJhcnlfcGF0aCwgYWRkaXRpb25hbF9sZGZsYWdzKSArIGxkZmxhZ3MKKyAgICAgICAgICAgICBjdXJyZW50X2xkX2xpYnJhcnlfcGF0aCA9IGVudi5nZXQoJ0xEX0xJQlJBUllfUEFUSCcpCistICAgICAgICAgICAgaWYgY3VycmVudF9sZF9saWJyYXJ5X3BhdGg6CisrICAgICAgICAgICAgaWYgY3VycmVudF9sZF9saWJyYXJ5X3BhdGggYW5kICdSVU4nIG5vdCBpbiBlbnY6CisgICAgICAgICAgICAgICAgIGVudlsnUlVOJ10gPSAnTERfTElCUkFSWV9QQVRIPSIlczolcyIgJyAlIChzZWxmLmxpYnJhcnlfcGF0aCwgY3VycmVudF9sZF9saWJyYXJ5X3BhdGgpCistICAgICAgICAgICAgZWxzZToKKysgICAgICAgICAgICBlbGlmICdSVU4nIG5vdCBpbiBlbnY6CisgICAgICAgICAgICAgICAgIGVudlsnUlVOJ10gPSAnTERfTElCUkFSWV9QQVRIPSIlcyIgJyAlIHNlbGYubGlicmFyeV9wYXRoCisgCisgICAgICAgICBpZiBsZGZsYWdzOgorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L2ZpbGVzLzAwMDEtV2ViS2l0TWFjcm9zLUFwcGVuZC10by1JLWFuZC1ub3QtdG8taXN5c3RlbS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvZmlsZXMvMDAwMS1XZWJLaXRNYWNyb3MtQXBwZW5kLXRvLUktYW5kLW5vdC10by1pc3lzdGVtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1YjNjOWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L2ZpbGVzLzAwMDEtV2ViS2l0TWFjcm9zLUFwcGVuZC10by1JLWFuZC1ub3QtdG8taXN5c3RlbS5wYXRjaApAQCAtMCwwICsxLDIyMyBAQAorRnJvbSA1M2EwMDA1ODE4NGNkNzEwYzZmNDM3NWY0ZGFhYjQ5ZDdlODg1YTMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMTcgQXByIDIwMTYgMTI6MzU6NDEgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gV2ViS2l0TWFjcm9zOiBBcHBlbmQgdG8gLUkgYW5kIG5vdCB0byAtaXN5c3RlbQorCitnY2MtNiBoYXMgbm93IGludHJvZHVjZWQgc3RkbGliLmggaW4gbGlic3RkYysrIGZvciBiZXR0ZXIKK2NvbXBsaWFuY2UgYW5kIGl0cyBpbmNsdWRpbmcgdGhlIEMgbGlicmFyeSBzdGRsaWIuaCB1c2luZworaW5jbHVkZV9uZXh0IHdoaWNoIGlzIHNlbnNpdGl2ZSB0byBvcmRlciBvZiBzeXN0ZW0gaGVhZGVyCitpbmNsdWRlIHBhdGhzLiBJdHMgaW5mYWN0IGJldHRlciB0byBub3QgdGlua2VyIHdpdGggdGhlCitzeXN0ZW0gaGVhZGVyIGluY2x1ZGUgcGF0aHMgYXQgYWxsLiBTaW5jZSBhZGRpbmcgL3Vzci9pbmNsdWRlCit0byAtc3lzdGVtIGlzIHJlZHVuZGFudCBhbmQgY29tcGlsZXIga25vd3MgYWJvdXQgaXQgbW9yZW92ZXIKK25vdyB3aXRoIGdjYzYgaXQgaW50ZXJmZXJlcyB3aXRoIGNvbXBpbGVyJ3MgZnVuY3Rpb25pbmcKK2FuZCBlbmRzIHVwIHdpdGggY29tcGlsZSBlcnJvcnMgZS5nLgorCisvdXNyL2luY2x1ZGUvYysrLzYuMC4wL2NzdGRsaWI6NzU6MjU6IGZhdGFsIGVycm9yOiBzdGRsaWIuaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIFNvdXJjZS9jbWFrZS9XZWJLaXRNYWNyb3MuY21ha2UgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK0luZGV4OiB3ZWJraXRndGstMi4xMi4xL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHdlYmtpdGd0ay0yLjEyLjEub3JpZy9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrKyB3ZWJraXRndGstMi4xMi4xL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorQEAgLTEzMTEsNyArMTMxMSw3IEBAIGFkZF9zdWJkaXJlY3Rvcnkoc2hlbGwpCisgCisgV0VCS0lUX1dSQVBfU09VUkNFTElTVCgke0phdmFTY3JpcHRDb3JlX1NPVVJDRVN9KQorIGluY2x1ZGVfZGlyZWN0b3JpZXMoJHtKYXZhU2NyaXB0Q29yZV9JTkNMVURFX0RJUkVDVE9SSUVTfSkKKy1pbmNsdWRlX2RpcmVjdG9yaWVzKFNZU1RFTSAke0phdmFTY3JpcHRDb3JlX1NZU1RFTV9JTkNMVURFX0RJUkVDVE9SSUVTfSkKKytpbmNsdWRlX2RpcmVjdG9yaWVzKCR7SmF2YVNjcmlwdENvcmVfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVN9KQorIGFkZF9saWJyYXJ5KEphdmFTY3JpcHRDb3JlICR7SmF2YVNjcmlwdENvcmVfTElCUkFSWV9UWVBFfSAke0phdmFTY3JpcHRDb3JlX0hFQURFUlN9ICR7SmF2YVNjcmlwdENvcmVfU09VUkNFU30pCisgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKEphdmFTY3JpcHRDb3JlICR7SmF2YVNjcmlwdENvcmVfTElCUkFSSUVTfSkKKyBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoSmF2YVNjcmlwdENvcmUgUFJPUEVSVElFUyBDT01QSUxFX0RFRklOSVRJT05TICJCVUlMRElOR19KYXZhU2NyaXB0Q29yZSIpCitJbmRleDogd2Via2l0Z3RrLTIuMTIuMS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHdlYmtpdGd0ay0yLjEyLjEub3JpZy9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysrIHdlYmtpdGd0ay0yLjEyLjEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKK0BAIC0yODYsNyArMjg2LDcgQEAgV0VCS0lUX0lOQ0xVREVfQ09ORklHX0ZJTEVTX0lGX0VYSVNUUygpCisgCisgV0VCS0lUX1dSQVBfU09VUkNFTElTVCgke1dURl9TT1VSQ0VTfSkKKyBpbmNsdWRlX2RpcmVjdG9yaWVzKCR7V1RGX0lOQ0xVREVfRElSRUNUT1JJRVN9KQorLWluY2x1ZGVfZGlyZWN0b3JpZXMoU1lTVEVNICR7V1RGX1NZU1RFTV9JTkNMVURFX0RJUkVDVE9SSUVTfSkKKytpbmNsdWRlX2RpcmVjdG9yaWVzKCR7V1RGX1NZU1RFTV9JTkNMVURFX0RJUkVDVE9SSUVTfSkKKyBhZGRfbGlicmFyeShXVEYgJHtXVEZfTElCUkFSWV9UWVBFfSAke1dURl9IRUFERVJTfSAke1dURl9TT1VSQ0VTfSkKKyB0YXJnZXRfbGlua19saWJyYXJpZXMoV1RGICR7V1RGX0xJQlJBUklFU30pCisgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKFdURiBQUk9QRVJUSUVTIENPTVBJTEVfREVGSU5JVElPTlMgIkJVSUxESU5HX1dURiIpCitJbmRleDogd2Via2l0Z3RrLTIuMTIuMS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHdlYmtpdGd0ay0yLjEyLjEub3JpZy9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysrIHdlYmtpdGd0ay0yLjEyLjEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKK0BAIC0zNzQ4LDcgKzM3NDgsNyBAQCBXRUJLSVRfV1JBUF9TT1VSQ0VMSVNUKCR7V2ViQ29yZV9JRExfRklMCisgV0VCS0lUX1dSQVBfU09VUkNFTElTVCgke1dlYkNvcmVUZXN0U3VwcG9ydF9JRExfRklMRVN9ICR7V2ViQ29yZVRlc3RTdXBwb3J0X1NPVVJDRVN9KQorIAorIGluY2x1ZGVfZGlyZWN0b3JpZXMoJHtXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVN9ICR7V2ViQ29yZVRlc3RTdXBwb3J0X0lOQ0xVREVfRElSRUNUT1JJRVN9KQorLWluY2x1ZGVfZGlyZWN0b3JpZXMoU1lTVEVNICR7V2ViQ29yZV9TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFU30pCisraW5jbHVkZV9kaXJlY3Rvcmllcygke1dlYkNvcmVfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVN9KQorIAorIGlmIChNU1ZDKQorICAgICBBRERfUFJFQ09NUElMRURfSEVBREVSKCJXZWJDb3JlUHJlZml4LmgiICJXZWJDb3JlUHJlZml4LmNwcCIgV2ViQ29yZV9TT1VSQ0VTKQorSW5kZXg6IHdlYmtpdGd0ay0yLjEyLjEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHdlYmtpdGd0ay0yLjEyLjEub3JpZy9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CisrKysgd2Via2l0Z3RrLTIuMTIuMS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CitAQCAtMjgsNyArMjgsNyBAQCBzZXQoV2ViS2l0X0xJQlJBUklFUworIFdFQktJVF9JTkNMVURFX0NPTkZJR19GSUxFU19JRl9FWElTVFMoKQorIAorIGluY2x1ZGVfZGlyZWN0b3JpZXMoJHtXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFU30pCistaW5jbHVkZV9kaXJlY3RvcmllcyhTWVNURU0gJHtXZWJLaXRfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVN9KQorK2luY2x1ZGVfZGlyZWN0b3JpZXMoJHtXZWJLaXRfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVN9KQorIAorIGlmIChNU1ZDKQorICAgICBBRERfUFJFQ09NUElMRURfSEVBREVSKCJXZWJLaXRQcmVmaXguaCIgIndpbi9XZWJLaXRQcmVmaXguY3BwIiBXZWJLaXRfU09VUkNFUykKK0luZGV4OiB3ZWJraXRndGstMi4xMi4xL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gd2Via2l0Z3RrLTIuMTIuMS5vcmlnL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CisrKysgd2Via2l0Z3RrLTIuMTIuMS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAorQEAgLTc1Niw3ICs3NTYsNyBAQCBXRUJLSVRfSU5DTFVERV9DT05GSUdfRklMRVNfSUZfRVhJU1RTKCkKKyBHRU5FUkFURV9XRUJLSVQyX01FU1NBR0VfU09VUkNFUyhXZWJLaXQyX0RFUklWRURfU09VUkNFUyAiJHtXZWJLaXQyX01FU1NBR0VTX0lOX0ZJTEVTfSIpCisgCisgaW5jbHVkZV9kaXJlY3Rvcmllcygke1dlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFU30pCistaW5jbHVkZV9kaXJlY3RvcmllcyhTWVNURU0gJHtXZWJLaXQyX1NZU1RFTV9JTkNMVURFX0RJUkVDVE9SSUVTfSkKKytpbmNsdWRlX2RpcmVjdG9yaWVzKCR7V2ViS2l0Ml9TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFU30pCisgYWRkX2xpYnJhcnkoV2ViS2l0MiAke1dlYktpdDJfTElCUkFSWV9UWVBFfSAke1dlYktpdDJfU09VUkNFU30gJHtXZWJLaXQyX0RFUklWRURfU09VUkNFU30pCisgCisgYWRkX2RlcGVuZGVuY2llcyhXZWJLaXQyIFdlYkNvcmUgJHtXRUJLSVQyX0VYVFJBX0RFUEVOREVOQ0lFU30pCitJbmRleDogd2Via2l0Z3RrLTIuMTIuMS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4vQ01ha2VMaXN0cy50eHQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB3ZWJraXRndGstMi4xMi4xLm9yaWcvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0luL0NNYWtlTGlzdHMudHh0CisrKysgd2Via2l0Z3RrLTIuMTIuMS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4vQ01ha2VMaXN0cy50eHQKK0BAIC00Miw3ICs0Miw3IEBAIHNldChXZWJLaXRUZXN0TmV0c2NhcGVQbHVnaW5fU1lTVEVNX0lOQ0wKKyApCisgCisgaW5jbHVkZV9kaXJlY3Rvcmllcygke1dlYktpdFRlc3ROZXRzY2FwZVBsdWdpbl9JTkNMVURFX0RJUkVDVE9SSUVTfSkKKy1pbmNsdWRlX2RpcmVjdG9yaWVzKFNZU1RFTSAke1dlYktpdFRlc3ROZXRzY2FwZVBsdWdpbl9TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFU30pCisraW5jbHVkZV9kaXJlY3Rvcmllcygke1dlYktpdFRlc3ROZXRzY2FwZVBsdWdpbl9TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFU30pCisgCisgc2V0KFdlYktpdFRlc3ROZXRzY2FwZVBsdWdpbl9MSUJSQVJJRVMKKyAgICAgJHtYMTFfTElCUkFSSUVTfQorSW5kZXg6IHdlYmtpdGd0ay0yLjEyLjEvVG9vbHMvSW1hZ2VEaWZmL0NNYWtlTGlzdHMudHh0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gd2Via2l0Z3RrLTIuMTIuMS5vcmlnL1Rvb2xzL0ltYWdlRGlmZi9DTWFrZUxpc3RzLnR4dAorKysrIHdlYmtpdGd0ay0yLjEyLjEvVG9vbHMvSW1hZ2VEaWZmL0NNYWtlTGlzdHMudHh0CitAQCAtMTQsNyArMTQsNyBAQCBzZXQoSU1BR0VfRElGRl9MSUJSQVJJRVMKKyBXRUJLSVRfSU5DTFVERV9DT05GSUdfRklMRVNfSUZfRVhJU1RTKCkKKyAKKyBpbmNsdWRlX2RpcmVjdG9yaWVzKCR7SU1BR0VfRElGRl9JTkNMVURFX0RJUkVDVE9SSUVTfSkKKy1pbmNsdWRlX2RpcmVjdG9yaWVzKFNZU1RFTSAke0lNQUdFX0RJRkZfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVN9KQorK2luY2x1ZGVfZGlyZWN0b3JpZXMoJHtJTUFHRV9ESUZGX1NZU1RFTV9JTkNMVURFX0RJUkVDVE9SSUVTfSkKKyBhZGRfZXhlY3V0YWJsZShJbWFnZURpZmYgJHtJTUFHRV9ESUZGX1NPVVJDRVN9KQorIHRhcmdldF9saW5rX2xpYnJhcmllcyhJbWFnZURpZmYgJHtJTUFHRV9ESUZGX0xJQlJBUklFU30pCisgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKEltYWdlRGlmZiBQUk9QRVJUSUVTIEZPTERFUiAiVG9vbHMiKQorSW5kZXg6IHdlYmtpdGd0ay0yLjEyLjEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0NNYWtlTGlzdHMudHh0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gd2Via2l0Z3RrLTIuMTIuMS5vcmlnL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9DTWFrZUxpc3RzLnR4dAorKysrIHdlYmtpdGd0ay0yLjEyLjEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0NNYWtlTGlzdHMudHh0CitAQCAtNTUsNyArNTUsNyBAQCBlbmRpZiAoKQorIGFkZF9kZWZpbml0aW9ucygtREdES19WRVJTSU9OX01JTl9SRVFVSVJFRD1HREtfVkVSU0lPTl8zXzYpCisgCisgaW5jbHVkZV9kaXJlY3Rvcmllcygke01pbmlCcm93c2VyX0lOQ0xVREVfRElSRUNUT1JJRVN9KQorLWluY2x1ZGVfZGlyZWN0b3JpZXMoU1lTVEVNICR7TWluaUJyb3dzZXJfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVN9KQorK2luY2x1ZGVfZGlyZWN0b3JpZXMoJHtNaW5pQnJvd3Nlcl9TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFU30pCisgYWRkX2V4ZWN1dGFibGUoTWluaUJyb3dzZXIgJHtNaW5pQnJvd3Nlcl9TT1VSQ0VTfSkKKyB0YXJnZXRfbGlua19saWJyYXJpZXMoTWluaUJyb3dzZXIgJHtNaW5pQnJvd3Nlcl9MSUJSQVJJRVN9KQorIHNldF90YXJnZXRfcHJvcGVydGllcyhNaW5pQnJvd3NlciBQUk9QRVJUSUVTIEZPTERFUiAiVG9vbHMiKQorSW5kZXg6IHdlYmtpdGd0ay0yLjEyLjEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHdlYmtpdGd0ay0yLjEyLjEub3JpZy9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0CisrKysgd2Via2l0Z3RrLTIuMTIuMS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0CitAQCAtMTE1LDcgKzExNSw3IEBAIEdFTkVSQVRFX0JJTkRJTkdTKFdlYktpdFRlc3RSdW5uZXJfU09VUkMKKyBXRUJLSVRfSU5DTFVERV9DT05GSUdfRklMRVNfSUZfRVhJU1RTKCkKKyAKKyBpbmNsdWRlX2RpcmVjdG9yaWVzKCR7V2ViS2l0VGVzdFJ1bm5lcl9JTkNMVURFX0RJUkVDVE9SSUVTfSkKKy1pbmNsdWRlX2RpcmVjdG9yaWVzKFNZU1RFTSAke1dlYktpdFRlc3RSdW5uZXJfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVN9KQorK2luY2x1ZGVfZGlyZWN0b3JpZXMoJHtXZWJLaXRUZXN0UnVubmVyX1NZU1RFTV9JTkNMVURFX0RJUkVDVE9SSUVTfSkKKyAKKyBhZGRfbGlicmFyeShUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGUgU0hBUkVEICR7V2ViS2l0VGVzdFJ1bm5lckluamVjdGVkQnVuZGxlX1NPVVJDRVN9KQorIHRhcmdldF9saW5rX2xpYnJhcmllcyhUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGUgJHtXZWJLaXRUZXN0UnVubmVyX0xJQlJBUklFU30pCitJbmRleDogd2Via2l0Z3RrLTIuMTIuMS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHdlYmtpdGd0ay0yLjEyLjEub3JpZy9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysrIHdlYmtpdGd0ay0yLjEyLjEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKK0BAIC0zMjQsNyArMzI0LDcgQEAgaWYgKEVOQUJMRV9QTFVHSU5fUFJPQ0VTU19HVEsyKQorICAgICAgICAgJHtHVEsyX0lOQ0xVREVfRElSU30KKyAgICAgICAgICR7R0RLMl9JTkNMVURFX0RJUlN9CisgICAgICkKKy0gICAgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoV2ViQ29yZVBsYXRmb3JtR1RLMiBTWVNURU0gUFJJVkFURQorKyAgICB0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcyhXZWJDb3JlUGxhdGZvcm1HVEsyIFBSSVZBVEUKKyAgICAgICAgICR7V2ViQ29yZV9TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFU30KKyAgICAgKQorICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoV2ViQ29yZVBsYXRmb3JtR1RLMgorQEAgLTM2Niw3ICszNjYsNyBAQCBXRUJLSVRfU0VUX0VYVFJBX0NPTVBJTEVSX0ZMQUdTKFdlYkNvcmVQCisgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoV2ViQ29yZVBsYXRmb3JtR1RLIFBSSVZBVEUKKyAgICAgJHtXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVN9CisgKQorLXRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKFdlYkNvcmVQbGF0Zm9ybUdUSyBTWVNURU0gUFJJVkFURQorK3RhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKFdlYkNvcmVQbGF0Zm9ybUdUSyBQUklWQVRFCisgICAgICR7V2ViQ29yZV9TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFU30KKyAgICAgJHtHVEtfSU5DTFVERV9ESVJTfQorICAgICAke0dES19JTkNMVURFX0RJUlN9CitAQCAtMzg0LDcgKzM4NCw3IEBAIGluY2x1ZGVfZGlyZWN0b3JpZXMoCisgICAgICIke0RFUklWRURfU09VUkNFU19HT0JKRUNUX0RPTV9CSU5ESU5HU19ESVJ9IgorICkKKyAKKy1pbmNsdWRlX2RpcmVjdG9yaWVzKFNZU1RFTQorK2luY2x1ZGVfZGlyZWN0b3JpZXMoCisgICAgICR7V2ViQ29yZV9TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFU30KKyApCisgCitJbmRleDogd2Via2l0Z3RrLTIuMTIuMS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gd2Via2l0Z3RrLTIuMTIuMS5vcmlnL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UKKysrKyB3ZWJraXRndGstMi4xMi4xL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UKK0BAIC0yMCw3ICsyMCw3IEBAIGluY2x1ZGVfZGlyZWN0b3JpZXMoCisgICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrCisgKQorIAorLWluY2x1ZGVfZGlyZWN0b3JpZXMoU1lTVEVNCisraW5jbHVkZV9kaXJlY3RvcmllcygKKyAgICAgJHtHREszX0lOQ0xVREVfRElSU30KKyAgICAgJHtHTElCX0lOQ0xVREVfRElSU30KKyAgICAgJHtHVEszX0lOQ0xVREVfRElSU30KK0luZGV4OiB3ZWJraXRndGstMi4xMi4xL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9DTWFrZUxpc3RzLnR4dAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHdlYmtpdGd0ay0yLjEyLjEub3JpZy9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQKKysrKyB3ZWJraXRndGstMi4xMi4xL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9DTWFrZUxpc3RzLnR4dAorQEAgLTIzLDcgKzIzLDcgQEAgaW5jbHVkZV9kaXJlY3RvcmllcygKKyAgICAgJHtUT09MU19ESVJ9L1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsKKyApCisgCistaW5jbHVkZV9kaXJlY3RvcmllcyhTWVNURU0KKytpbmNsdWRlX2RpcmVjdG9yaWVzKAorICAgICAke0FUU1BJX0lOQ0xVREVfRElSU30KKyAgICAgJHtHTElCX0lOQ0xVREVfRElSU30KKyAgICAgJHtHU1RSRUFNRVJfSU5DTFVERV9ESVJTfQorSW5kZXg6IHdlYmtpdGd0ay0yLjEyLjEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB3ZWJraXRndGstMi4xMi4xLm9yaWcvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKKysrKyB3ZWJraXRndGstMi4xMi4xL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCitAQCAtODE2LDcgKzgxNiw3IEBAIGlmIChFTkFCTEVfUExVR0lOX1BST0NFU1NfR1RLMikKKyAgICAgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoV2ViS2l0UGx1Z2luUHJvY2VzczIgUFJJVkFURQorICAgICAgICAgJHtXZWJLaXQyQ29tbW9uSW5jbHVkZURpcmVjdG9yaWVzfQorICAgICApCistICAgIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKFdlYktpdFBsdWdpblByb2Nlc3MyIFNZU1RFTSBQUklWQVRFCisrICAgIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKFdlYktpdFBsdWdpblByb2Nlc3MyIFBSSVZBVEUKKyAgICAgICAgICAke1dlYktpdDJDb21tb25TeXN0ZW1JbmNsdWRlRGlyZWN0b3JpZXN9CisgICAgICAgICAgJHtHVEsyX0lOQ0xVREVfRElSU30KKyAgICAgICAgICAke0dESzJfSU5DTFVERV9ESVJTfQorSW5kZXg6IHdlYmtpdGd0ay0yLjEyLjEvU291cmNlL0phdmFTY3JpcHRDb3JlL3NoZWxsL0NNYWtlTGlzdHMudHh0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gd2Via2l0Z3RrLTIuMTIuMS5vcmlnL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9zaGVsbC9DTWFrZUxpc3RzLnR4dAorKysrIHdlYmtpdGd0ay0yLjEyLjEvU291cmNlL0phdmFTY3JpcHRDb3JlL3NoZWxsL0NNYWtlTGlzdHMudHh0CitAQCAtMjAsNyArMjAsNyBAQCBXRUJLSVRfSU5DTFVERV9DT05GSUdfRklMRVNfSUZfRVhJU1RTKCkKKyAKKyBXRUJLSVRfV1JBUF9TT1VSQ0VMSVNUKCR7SlNDX1NPVVJDRVN9KQorIGluY2x1ZGVfZGlyZWN0b3JpZXMoLi8gJHtKYXZhU2NyaXB0Q29yZV9JTkNMVURFX0RJUkVDVE9SSUVTfSkKKy1pbmNsdWRlX2RpcmVjdG9yaWVzKFNZU1RFTSAke0phdmFTY3JpcHRDb3JlX1NZU1RFTV9JTkNMVURFX0RJUkVDVE9SSUVTfSkKKytpbmNsdWRlX2RpcmVjdG9yaWVzKCR7SmF2YVNjcmlwdENvcmVfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVN9KQorIGFkZF9leGVjdXRhYmxlKGpzYyAke0pTQ19TT1VSQ0VTfSkKKyB0YXJnZXRfbGlua19saWJyYXJpZXMoanNjICR7SlNDX0xJQlJBUklFU30pCisgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKGpzYyBQUk9QRVJUSUVTIEZPTERFUiAiSmF2YVNjcmlwdENvcmUiKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC9maWxlcy8wMDAxLVdoZW4tYnVpbGRpbmctaW50cm9zcGVjdGlvbi1maWxlcy1hZGQtQ01BS0VfQ19GTEFHUy0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L2ZpbGVzLzAwMDEtV2hlbi1idWlsZGluZy1pbnRyb3NwZWN0aW9uLWZpbGVzLWFkZC1DTUFLRV9DX0ZMQUdTLS5wYXRjaAppbmRleCA0NGI0M2NkLi4zZjcxMjk3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L2ZpbGVzLzAwMDEtV2hlbi1idWlsZGluZy1pbnRyb3NwZWN0aW9uLWZpbGVzLWFkZC1DTUFLRV9DX0ZMQUdTLS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L2ZpbGVzLzAwMDEtV2hlbi1idWlsZGluZy1pbnRyb3NwZWN0aW9uLWZpbGVzLWFkZC1DTUFLRV9DX0ZMQUdTLS5wYXRjaApAQCAtMTMsMjggKzEzLDI1IEBACiAgU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UgfCA0ICsrLS0KICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQotaW5kZXggNzA2ZjFlOC4uMTRhMWMzYiAxMDA2NDQKLS0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCi0rKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQotQEAgLTg4NCw3ICs4ODQsNyBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCitJbmRleDogd2Via2l0Z3RrLTIuMTIuMS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHdlYmtpdGd0ay0yLjEyLjEub3JpZy9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQorKysrIHdlYmtpdGd0ay0yLjEyLjEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKK0BAIC05MTAsNyArOTEwLDcgQEAgYWRkX2N1c3RvbV9jb21tYW5kKAogICAgICBPVVRQVVQgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyLSR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfS5naXIKICAgICAgREVQRU5EUyBXZWJLaXQyCiAgICAgIERFUEVORFMgJHtDTUFLRV9CSU5BUllfRElSfS9KYXZhU2NyaXB0Q29yZS0ke1dFQktJVEdUS19BUElfVkVSU0lPTn0uZ2lyCiAtICAgIENPTU1BTkQgQ0M9JHtDTUFLRV9DX0NPTVBJTEVSfSBDRkxBR1M9LVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyBMREZMQUdTPQogKyAgICBDT01NQU5EIENDPSR7Q01BS0VfQ19DT01QSUxFUn0gQ0ZMQUdTPS1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnNcICR7Q01BS0VfQ19GTEFHU30gTERGTEFHUz0KLSAgICAgICAgIExEX0xJQlJBUllfUEFUSD0iJHtJTlRST1NQRUNUSU9OX0FERElUSU9OQUxfTElCUkFSWV9QQVRIfSIKKyAgICAgICAgICR7TE9BREVSX0xJQlJBUllfUEFUSF9WQVJ9PSIke0lOVFJPU1BFQ1RJT05fQURESVRJT05BTF9MSUJSQVJZX1BBVEh9IgogICAgICAgICAgJHtJTlRST1NQRUNUSU9OX1NDQU5ORVJ9CiAgICAgICAgICAtLXF1aWV0Ci1AQCAtOTMwLDcgKzkzMCw3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKK0BAIC05NTEsNyArOTUxLDcgQEAgYWRkX2N1c3RvbV9jb21tYW5kKAogICAgICBPVVRQVVQgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyV2ViRXh0ZW5zaW9uLSR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfS5naXIKICAgICAgREVQRU5EUyAke0NNQUtFX0JJTkFSWV9ESVJ9L0phdmFTY3JpcHRDb3JlLSR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfS5naXIKICAgICAgREVQRU5EUyAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDItJHtXRUJLSVRHVEtfQVBJX1ZFUlNJT059LmdpcgogLSAgICBDT01NQU5EIENDPSR7Q01BS0VfQ19DT01QSUxFUn0gQ0ZMQUdTPS1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMKICsgICAgQ09NTUFORCBDQz0ke0NNQUtFX0NfQ09NUElMRVJ9IENGTEFHUz0tV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zXCAke0NNQUtFX0NfRkxBR1N9CiAgICAgICAgICBMREZMQUdTPSIke0lOVFJPU1BFQ1RJT05fQURESVRJT05BTF9MREZMQUdTfSIKLSAgICAgICAgIExEX0xJQlJBUllfUEFUSD0iJHtJTlRST1NQRUNUSU9OX0FERElUSU9OQUxfTElCUkFSWV9QQVRIfSIKKyAgICAgICAgICR7TE9BREVSX0xJQlJBUllfUEFUSF9WQVJ9PSIke0lOVFJPU1BFQ1RJT05fQURESVRJT05BTF9MSUJSQVJZX1BBVEh9IgogICAgICAgICAgJHtJTlRST1NQRUNUSU9OX1NDQU5ORVJ9Ci0tLSAKLTIuNi40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvZmlsZXMvbXVzbC1maXhlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvZmlsZXMvbXVzbC1maXhlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZmRkNTZmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC9maWxlcy9tdXNsLWZpeGVzLnBhdGNoCkBAIC0wLDAgKzEsNDggQEAKK1JlcGxhY2UgX19HTElCQ19fIHdpdGggX19saW51eF9fIHNpbmNlIG11c2wgYWxzbyBzdXBwb3J0cyBpdAorc28gY2hlY2tpbmcgX19saW51eF9fIGlzIG1vcmUgYWNjb21vZGF0aW5nCisKK1NlZSBodHRwOi8vZ2l0LmFscGluZWxpbnV4Lm9yZy9jZ2l0L2Fwb3J0cy90cmVlL2NvbW11bml0eS93ZWJraXQyZ3RrL211c2wtZml4ZXMucGF0Y2g/aWQ9MjE5NDM1ZDg2ZDdlOGZhYzk0NzQzNDRhNzQzMWM2MmJkMjUyNTE4NAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK0luZGV4OiB3ZWJraXRndGstMi4xMi4xL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB3ZWJraXRndGstMi4xMi4xLm9yaWcvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcAorKysrIHdlYmtpdGd0ay0yLjEyLjEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcAorQEAgLTU2Niw3ICs1NjYsNyBAQCB2b2lkKiBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdpc3RlcnM6CisgI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisgI2VuZGlmCisgCistI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIEVOQUJMRShKSVQpCisrI2VsaWYgZGVmaW5lZChfX2xpbnV4X18pICYmIEVOQUJMRShKSVQpCisgCisgI2lmIENQVShYODYpCisgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19FU1BdKTsKK0BAIC02NjUsNyArNjY1LDcgQEAgdm9pZCogTWFjaGluZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0ZXJzOgorICNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQorICNlbmRpZgorIAorLSNlbGlmIGRlZmluZWQoX19HTElCQ19fKQorKyNlbGlmIGRlZmluZWQoX19saW51eF9fKSAvLyBnbGliYyBhbmQgbXVzbAorIAorIC8vIFRoZSBmb2xsb3dpbmcgc2VxdWVuY2UgZGVwZW5kcyBvbiBnbGliYydzIHN5cy91Y29udGV4dC5oLgorICNpZiBDUFUoWDg2KQorQEAgLTc0Nyw3ICs3NDcsNyBAQCB2b2lkKiBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdpc3RlcnM6CisgI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisgI2VuZGlmCisgCistI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pCisrI2VsaWYgZGVmaW5lZChfX2xpbnV4X18pIC8vIGdsaWJjIGFuZCBtdXNsCisgCisgLy8gVGhlIGZvbGxvd2luZyBzZXF1ZW5jZSBkZXBlbmRzIG9uIGdsaWJjJ3Mgc3lzL3Vjb250ZXh0LmguCisgI2lmIENQVShYODYpCitAQCAtODM4LDcgKzgzOCw3IEBAIHZvaWQqIE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczoKKyAjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyAjZW5kaWYKKyAKKy0jZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKKysjZWxpZiBkZWZpbmVkKF9fbGludXhfXykgLy8gZ2xpYmMgYW5kIG11c2wKKyAKKyAvLyBUaGUgZm9sbG93aW5nIHNlcXVlbmNlIGRlcGVuZHMgb24gZ2xpYmMncyBzeXMvdWNvbnRleHQuaC4KKyAjaWYgQ1BVKFg4NikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvZmlsZXMvcHBjLW11c2wtZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC9maWxlcy9wcGMtbXVzbC1maXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY1OGU0OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvZmlsZXMvcHBjLW11c2wtZml4LnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK3Vjb250ZXh0IHN0cnVjdHVyZSBpcyBkaWZmZXJlbnQgYmV0d2VlbiBtdXNsIGFuZCBnbGliYyBmb3IgcHBjCit0aGVyZWZvcmUgaXRzIG5vdCBlbm91Z2gganVzdCB0byBjaGVjayBmb3IgYXJjaCBhbG9uZSwgd2UgYWxzbworbmVlZCB0byBjaGVjayBmb3IgbGliYyB0eXBlLgorCitGaXhlcyBlcnJvcnMgbGlrZQorCitTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwOjkwOjY1OiBlcnJvcjogJ3N0cnVjdCBtY29udGV4dF90JyBoYXMgbm8gbWVtYmVyIG5hbWVkICd1Y19yZWdzJzsgZGlkIHlvdSBtZWFuICdncmVncyc/CisgICAgIHRocmVhZC0+c3VzcGVuZGVkTWFjaGluZUNvbnRleHQgPSAqdXNlckNvbnRleHQtPnVjX21jb250ZXh0LnVjX3JlZ3M7CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitJbmRleDogd2Via2l0Z3RrLTIuMTIuMy9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gd2Via2l0Z3RrLTIuMTIuMy5vcmlnL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAKKysrKyB3ZWJraXRndGstMi4xMi4zL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAKK0BAIC04Niw3ICs4Niw3IEBAIHN0YXRpYyB2b2lkIHB0aHJlYWRTaWduYWxIYW5kbGVyU3VzcGVuZFIKKyAgICAgfQorIAorICAgICB1Y29udGV4dF90KiB1c2VyQ29udGV4dCA9IHN0YXRpY19jYXN0PHVjb250ZXh0X3QqPih1Y29udGV4dCk7CistI2lmIENQVShQUEMpCisrI2lmIENQVShQUEMpICYmIGRlZmluZWQoX19HTElCQ19fKQorICAgICB0aHJlYWQtPnN1c3BlbmRlZE1hY2hpbmVDb250ZXh0ID0gKnVzZXJDb250ZXh0LT51Y19tY29udGV4dC51Y19yZWdzOworICNlbHNlCisgICAgIHRocmVhZC0+c3VzcGVuZGVkTWFjaGluZUNvbnRleHQgPSB1c2VyQ29udGV4dC0+dWNfbWNvbnRleHQ7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLUVuYWJsZS1iYWNrdHJhY2Utb24tbGludXgtd2hlbi11c2luZy1nbGliYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtRW5hYmxlLWJhY2t0cmFjZS1vbi1saW51eC13aGVuLXVzaW5nLWdsaWJjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkN2U0ZWY2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtRW5hYmxlLWJhY2t0cmFjZS1vbi1saW51eC13aGVuLXVzaW5nLWdsaWJjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotRnJvbSAwYjY4YWQyMDZkMmQ5MGRmNzhkOTFjYWQ0ZGExOTE1MjA4NDAxNGNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTYgU2VwIDIwMTUgMDU6MTU6MDQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gRW5hYmxlIGJhY2t0cmFjZSBvbiBsaW51eCB3aGVuIHVzaW5nIGdsaWJjCi0KLVdlIGRvbnQgaGF2ZSBiYWNrdHJhY2UoKSBpbXBsZW1lbnRlZCBvbiBub24tZ2xpYmMgbGliYydzIG9uIGxpbnV4Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQKLQotIFNvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwIGIvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5jcHAKLWluZGV4IDE5MWQ1M2YuLmE0ZDg2YjUgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmNwcAotKysrIGIvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5jcHAKLUBAIC02OCw3ICs2OCw3IEBACi0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNlbmRpZgotIAotLSNpZiBPUyhEQVJXSU4pIHx8IChPUyhMSU5VWCkgJiYgIWRlZmluZWQoX19VQ0xJQkNfXykpCi0rI2lmIE9TKERBUldJTikgfHwgKE9TKExJTlVYKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX19VQ0xJQkNfXykpCi0gI2luY2x1ZGUgPGN4eGFiaS5oPgotICNpbmNsdWRlIDxkbGZjbi5oPgotICNpbmNsdWRlIDxleGVjaW5mby5oPgotQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lkIFdURlJlcG9ydEFyZ3VtZW50QXNzZXJ0aW9uRmFpbHVyZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZgotIAotIHZvaWQgV1RGR2V0QmFja3RyYWNlKHZvaWQqKiBzdGFjaywgaW50KiBzaXplKQotIHsKLS0jaWYgT1MoREFSV0lOKSB8fCAoT1MoTElOVVgpICYmICFkZWZpbmVkKF9fVUNMSUJDX18pKQotKyNpZiBPUyhEQVJXSU4pIHx8IChPUyhMSU5VWCkgJiYgZGVmaW5lZChfX0dMSUJDX18pICYmICFkZWZpbmVkKF9fVUNMSUJDX18pKQotICAgICAqc2l6ZSA9IGJhY2t0cmFjZShzdGFjaywgKnNpemUpOwotICNlbGlmIE9TKFdJTkRPV1MpCi0gICAgIC8vIFRoZSBDYXB0dXJlU3RhY2tCYWNrVHJhY2UgZnVuY3Rpb24gaXMgYXZhaWxhYmxlIGluIFhQLCBidXQgaXQgaXMgbm90IGRlZmluZWQKLS0tIAotMi41LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1GaXgtYnVpbGQtd2l0aC1ub24tZ2xpYmMtbGlicmFyaWVzLW9uLWxpbnV4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1GaXgtYnVpbGQtd2l0aC1ub24tZ2xpYmMtbGlicmFyaWVzLW9uLWxpbnV4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3N2ViZjM3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtRml4LWJ1aWxkLXdpdGgtbm9uLWdsaWJjLWxpYnJhcmllcy1vbi1saW51eC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLUZyb20gMzBlMmVmMzAyYTMyOTg1MGJhNTVjN2M0NThjOThjYmYzOTYxODZlYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDMxIERlYyAyMDE1IDIxOjQ3OjM0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCB3aXRoIG5vbi1nbGliYyBsaWJyYXJpZXMgb24gbGludXgKLQotcXVhbGlmeSBpc25hbigpIGNhbGxzIHdpdGggc3RkIG5hbWVzcGFjZQotbWFsbG9jX3RyaW0gaXMgZ2xpYmMgc3BlY2lmaWMgQVBJIHNvIGd1YXJkIGl0IHdpdGggX19HTElCQ19fCi1sZXQgY3R5cGUgYmUgdXNlZCBvbiBub24tZ2xpYmMgKCBtdXNsICkgQyBsaWJyYXJ5Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQKLQotIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwICAgICAgICAgICAgICAgICAgICB8IDIgKy0KLSBTb3VyY2UvV1RGL3d0Zi9EaXNhbGxvd0NUeXBlLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCi0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGludXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTGludXguY3BwIHwgMiArKwotIDMgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAotaW5kZXggZmU4MzBiNC4uYzQ5YWFkZSAxMDA2NDQKLS0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCi0rKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAotQEAgLTYxMCw3ICs2MTAsNyBAQCBib29sIE9wdGlvbjo6b3BlcmF0b3I9PShjb25zdCBPcHRpb24mIG90aGVyKSBjb25zdAotICAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OnVuc2lnbmVkVHlwZToKLSAgICAgICAgIHJldHVybiBtX2VudHJ5LnVuc2lnbmVkVmFsID09IG90aGVyLm1fZW50cnkudW5zaWduZWRWYWw7Ci0gICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6ZG91YmxlVHlwZToKLS0gICAgICAgIHJldHVybiAobV9lbnRyeS5kb3VibGVWYWwgPT0gb3RoZXIubV9lbnRyeS5kb3VibGVWYWwpIHx8IChpc25hbihtX2VudHJ5LmRvdWJsZVZhbCkgJiYgaXNuYW4ob3RoZXIubV9lbnRyeS5kb3VibGVWYWwpKTsKLSsgICAgICAgIHJldHVybiAobV9lbnRyeS5kb3VibGVWYWwgPT0gb3RoZXIubV9lbnRyeS5kb3VibGVWYWwpIHx8IChzdGQ6OmlzbmFuKG1fZW50cnkuZG91YmxlVmFsKSAmJiBzdGQ6OmlzbmFuKG90aGVyLm1fZW50cnkuZG91YmxlVmFsKSk7Ci0gICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6aW50MzJUeXBlOgotICAgICAgICAgcmV0dXJuIG1fZW50cnkuaW50MzJWYWwgPT0gb3RoZXIubV9lbnRyeS5pbnQzMlZhbDsKLSAgICAgY2FzZSBPcHRpb25zOjpUeXBlOjpvcHRpb25SYW5nZVR5cGU6Ci1kaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRGlzYWxsb3dDVHlwZS5oIGIvU291cmNlL1dURi93dGYvRGlzYWxsb3dDVHlwZS5oCi1pbmRleCBkODVlNzY3Li5kYzZiY2FiIDEwMDY0NAotLS0tIGEvU291cmNlL1dURi93dGYvRGlzYWxsb3dDVHlwZS5oCi0rKysgYi9Tb3VyY2UvV1RGL3d0Zi9EaXNhbGxvd0NUeXBlLmgKLUBAIC00MCw3ICs0MCw3IEBACi0gLy8gYXJlIHVzZWQgZnJvbSB3eCBoZWFkZXJzLiBPbiBHVEsrIGZvciBNYWMgbWFueSBHVEsrIGZpbGVzIGluY2x1ZGUgPGxpYmludGwuaD4KLSAvLyBvciA8Z2xpYi9naTE4bi1saWIuaD4sIHdoaWNoIGluIHR1cm4gaW5jbHVkZSA8eGxvY2FsZS9fY3R5cGUuaD4gd2hpY2ggdXNlcwotIC8vIGlzYWNpaSgpLiAKLS0jaWYgIShPUyhEQVJXSU4pICYmIFBMQVRGT1JNKEdUSykpICYmICFQTEFURk9STShFRkwpICYmICFkZWZpbmVkKF9MSUJDUFBfVkVSU0lPTikKLSsjaWYgIShPUyhEQVJXSU4pICYmIFBMQVRGT1JNKEdUSykpICYmICFQTEFURk9STShFRkwpICYmICFkZWZpbmVkKF9MSUJDUFBfVkVSU0lPTikgJiYgZGVmaW5lZChfX0dMSUJDX18pCi0gCi0gI2luY2x1ZGUgPGN0eXBlLmg+Ci0gCi1kaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGludXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTGludXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGludXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTGludXguY3BwCi1pbmRleCBlYTYxOTA5Li4xNDk1NjQyIDEwMDY0NAotLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGludXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTGludXguY3BwCi0rKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saW51eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51eC5jcHAKLUBAIC0yMDIsNyArMjAyLDkgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlc3BvbmRUb01lbW9yeVByZXNzdXJlKENyaXRpY2FsIGNyaXRpY2FsLCBTeW5jaHJvbm8KLSB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cGxhdGZvcm1SZWxlYXNlTWVtb3J5KENyaXRpY2FsKQotIHsKLSAgICAgUmVsaWVmTG9nZ2VyIGxvZygiUnVuIG1hbGxvY190cmltIik7Ci0rI2lmZGVmIF9fR0xJQkNfXwotICAgICBtYWxsb2NfdHJpbSgwKTsKLSsjZW5kaWYKLSB9Ci0gCi0gdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6cGxhdGZvcm1Mb2coKQotLS0gCi0yLjYuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay9jbGFuZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrL2NsYW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTI2NzEzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrL2NsYW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotQ2xhbmcncyBidWlsdGluIGZvciBjbGVhcl9jYWNoZSBhY2NlcHRzIGNoYXIqIGFuZCBlcnJvcnMgb3V0IHdoZW4gdXNpbmcgdm9pZCosCi11c2luZyBjaGFyKiB3b3JrIG9uIGJvdGggZ2NjIGFuZCBjbGFuZyBzaW5jZSBjaGFyKiBpcyBhdXRvLWNvbnZlcnRlZCB0byB2b2lkKiBpbiBnY2MgY2FzZQotCi1Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmg6Mjg1NzozMzogZXJyb3I6IGNhbm5vdCBpbml0aWFsaXplIGEgcGFyYW1ldGVyIG9mIHR5cGUgJ2NoYXIgKicgd2l0aCBhbiBydmFsdWUgb2YgdHlwZSAndm9pZCAqJwotICAgICAgICBfX2J1aWx0aW5fX19jbGVhcl9jYWNoZShyZWludGVycHJldF9jYXN0PHZvaWQqPihiZWdpbiksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGVuZCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KLTEgZXJyb3IgZ2VuZXJhdGVkLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkCi0KLUluZGV4OiB3ZWJraXRndGstMi44LjUvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gd2Via2l0Z3RrLTIuOC41Lm9yaWcvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oCi0rKysgd2Via2l0Z3RrLTIuOC41L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaAotQEAgLTI4NTQsNyArMjg1NCw3IEBAIHB1YmxpYzoKLSAjaWYgT1MoTElOVVgpICYmIENPTVBJTEVSKEdDQykKLSAgICAgc3RhdGljIGlubGluZSB2b2lkIGxpbnV4UGFnZUZsdXNoKHVpbnRwdHJfdCBiZWdpbiwgdWludHB0cl90IGVuZCkKLSAgICAgewotLSAgICAgICAgX19idWlsdGluX19fY2xlYXJfY2FjaGUocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oYmVnaW4pLCByZWludGVycHJldF9jYXN0PHZvaWQqPihlbmQpKTsKLSsgICAgICAgIF9fYnVpbHRpbl9fX2NsZWFyX2NhY2hlKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJlZ2luKSwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZW5kKSk7Ci0gICAgIH0KLSAjZW5kaWYKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrXzIuMTAuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrXzIuMTAuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGViNmI5Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0a18yLjEwLjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi1TVU1NQVJZID0gIldlYktpdCB3ZWIgcmVuZGVyaW5nIGVuZ2luZSBmb3IgdGhlIEdUSysgcGxhdGZvcm0iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LndlYmtpdGd0ay5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVncy53ZWJraXQub3JnLyIKLQotTElDRU5TRSA9ICJCU0QgJiBMR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vU291cmNlL0phdmFTY3JpcHRDb3JlL0NPUFlJTkcuTElCO21kNT1kMGM2ZDYzOTdhNWQ4NDI4NmRkYTc1OGRhNTdiZDY5MSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9Tb3VyY2UvV2ViS2l0L0xJQ0VOU0U7bWQ1PTQ2NDZmOTAwODJjNDBiY2YyOThjMjg1ZjhiYWIwYjEyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL1NvdXJjZS9XZWJDb3JlL0xJQ0VOU0UtQVBQTEU7bWQ1PTQ2NDZmOTAwODJjNDBiY2YyOThjMjg1ZjhiYWIwYjEyIFwKLQkJICAgIGZpbGU6Ly9Tb3VyY2UvV2ViQ29yZS9MSUNFTlNFLUxHUEwtMjttZDU9MzYzNTdmZmRlMmI2NGFlMTc3YjI0OTQ0NDViNzlkMjEgXAotCQkgICAgZmlsZTovL1NvdXJjZS9XZWJDb3JlL0xJQ0VOU0UtTEdQTC0yLjE7bWQ1PWE3NzhhMzNlZjMzOGFiYmFmOGI4YTdjMzZiNmVlYzgwIFwKLQkJICAgIgotCi1TUkNfVVJJID0gIlwKLSAgaHR0cDovL3d3dy53ZWJraXRndGsub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAotICBmaWxlOi8vY2xhbmcucGF0Y2ggXAotICBmaWxlOi8vMDAwMS1FbmFibGUtYmFja3RyYWNlLW9uLWxpbnV4LXdoZW4tdXNpbmctZ2xpYmMucGF0Y2ggXAotICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2l0aC1ub24tZ2xpYmMtbGlicmFyaWVzLW9uLWxpbnV4LnBhdGNoIFwKLSAgZmlsZTovLzAwMDEtRmluZEdPYmplY3RJbnRyb3NwZWN0aW9uLmNtYWtlLXByZWZpeC12YXJpYWJsZXMtb2J0YS5wYXRjaCBcCi0gIGZpbGU6Ly8wMDAxLVdoZW4tYnVpbGRpbmctaW50cm9zcGVjdGlvbi1maWxlcy1hZGQtQ01BS0VfQ19GTEFHUy0ucGF0Y2ggXAotICBmaWxlOi8vMDAwMS1PcHRpb25zR1RLLmNtYWtlLWRyb3AtdGhlLWhhcmRjb2RlZC1pbnRyb3NwZWN0aW9uLWd0LnBhdGNoIFwKLSAgIgotU1JDX1VSSVttZDVzdW1dID0gIjg0ODMyYjlkODMyOTQxM2I0ZjFkODdkZjVmN2U4ZWZlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk5MGQ2MmM4MmVkNmRlZGUzMWE2ZmYwYTgyZDg0N2YxNmI4MTI4NDJmZjNlMTA5M2QxNzExMzYyNzY1Mjg2NGUiCi0KLWluaGVyaXQgY21ha2UgbGliX3BhY2thZ2UgcGtnY29uZmlnIHBlcmxuYXRpdmUgcHl0aG9ubmF0aXZlIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLSMgZGVwZW5kcyBvbiBsaWJ4dAotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotREVQRU5EUyA9ICJ6bGliIGxpYnNvdXAtMi40IGN1cmwgbGlieG1sMiBjYWlybyBsaWJ4c2x0IGxpYnh0IGxpYmlkbiBnbnV0bHMgXAotICAgICAgICAgICBndGsrMyBnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBmbGV4LW5hdGl2ZSBncGVyZi1uYXRpdmUgc3FsaXRlMyBcCi0JICAgcGFuZ28gaWN1IGJpc29uLW5hdGl2ZSBnbm9tZS1jb21tb24gZ2F3ayBpbnRsdG9vbC1uYXRpdmUgbGlid2VicCBcCi0JICAgYXRrIHVkZXYgaGFyZmJ1enoganBlZyBsaWJwbmcgcHVsc2VhdWRpbyBsaWJyc3ZnIGxpYnRoZW9yYSBsaWJ2b3JiaXMgbGlieGNvbXBvc2l0ZSBsaWJ4dHN0IFwKLQkgICBydWJ5LW5hdGl2ZSBsaWJub3RpZnkgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkIFwKLSAgICAgICAgICAiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYXNlX2NvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3gxMScsICd3YXlsYW5kJyAsZCl9IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYXNlX2NvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsJywgJ3dlYmdsJywgJycgLGQpfSBcCi0gICAgICAgICAgICAgICAgICAgZW5jaGFudCBcCi0gICAgICAgICAgICAgICAgICAgZ3RrMiBcCi0gICAgICAgICAgICAgICAgICAgbGlic2VjcmV0IFwKLSAgICAgICAgICAgICAgICAgICIKLQotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItREVOQUJMRV9XQVlMQU5EX1RBUkdFVD1PTiwtREVOQUJMRV9XQVlMQU5EX1RBUkdFVD1PRkYsd2F5bGFuZCIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItREVOQUJMRV9YMTFfVEFSR0VUPU9OLC1ERU5BQkxFX1gxMV9UQVJHRVQ9T0ZGLHZpcnR1YWwvbGlieDExIgotUEFDS0FHRUNPTkZJR1tnZW9jbHVlXSA9ICItREVOQUJMRV9HRU9MT0NBVElPTj1PTiwtREVOQUJMRV9HRU9MT0NBVElPTj1PRkYsZ2VvY2x1ZSIKLVBBQ0tBR0VDT05GSUdbZW5jaGFudF0gPSAiLURFTkFCTEVfU1BFTExDSEVDSz1PTiwtREVOQUJMRV9TUEVMTENIRUNLPU9GRixlbmNoYW50IgotUEFDS0FHRUNPTkZJR1tndGsyXSA9ICItREVOQUJMRV9QTFVHSU5fUFJPQ0VTU19HVEsyPU9OLC1ERU5BQkxFX1BMVUdJTl9QUk9DRVNTX0dUSzI9T0ZGLGd0aysiCi1QQUNLQUdFQ09ORklHW2dsZXMyXSA9ICItREVOQUJMRV9HTEVTMj1PTiwtREVOQUJMRV9HTEVTMj1PRkYsdmlydHVhbC9saWJnbGVzMiIKLVBBQ0tBR0VDT05GSUdbd2ViZ2xdID0gIi1ERU5BQkxFX1dFQkdMPU9OLC1ERU5BQkxFX1dFQkdMPU9GRix2aXJ0dWFsL2xpYmdsIgotUEFDS0FHRUNPTkZJR1tsaWJzZWNyZXRdID0gIi1ERU5BQkxFX0NSRURFTlRJQUxfU1RPUkFHRT1PTiwtREVOQUJMRV9DUkVERU5USUFMX1NUT1JBR0U9T0ZGLGxpYnNlY3JldCIKLVBBQ0tBR0VDT05GSUdbbGliaHlwaGVuXSA9ICItRFVTRV9MSUJIWVBIRU49T04sLURVU0VfTElCSFlQSEVOPU9GRixsaWJoeXBoZW4iCi0KLUVYVFJBX09FQ01BS0UgPSAiIFwKLQkJLURQT1JUPUdUSyBcCi0JCS1EQ01BS0VfQlVJTERfVFlQRT1SZWxlYXNlIFwKLQkJJHtAYmIudXRpbHMuY29udGFpbnMoJ0dJX0RBVEFfRU5BQkxFRCcsICdUcnVlJywgJy1ERU5BQkxFX0lOVFJPU1BFQ1RJT049T04nLCAnLURFTkFCTEVfSU5UUk9TUEVDVElPTj1PRkYnLCBkKX0gXAotCQktREVOQUJMRV9HVEtET0M9T0ZGIFwKLQkJLURFTkFCTEVfTUlOSUJST1dTRVI9T04gXAotCQkiCi0KLSMgSmF2YXNjcmlwdCBKSVQgaXMgbm90IHN1cHBvcnRlZCBvbiBwb3dlcnBjCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9wb3dlcnBjID0gIiAtREVOQUJMRV9KSVQ9T0ZGICIKLUVYVFJBX09FQ01BS0VfYXBwZW5kX3Bvd2VycGM2NCA9ICIgLURFTkFCTEVfSklUPU9GRiAiCi0KLSMgQVJNIEpJVCBjb2RlIGRvZXMgbm90IGJ1aWxkIG9uIEFSTXY1LzYgYW55bW9yZSwgYXBwYXJlbnRseSB0aGV5IHRlc3Qgb25seSBvbiB2NyBvbndhcmRzCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9hcm12NSA9ICIgLURFTkFCTEVfSklUPU9GRiAiCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9hcm12NiA9ICIgLURFTkFCTEVfSklUPU9GRiAiCi0KLSMgYmludXRpbHMgMi4yNS4xIGhhcyBhIGJ1ZyBvbiBhYXJjaDY0OgotIyBodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xODQzMAotRVhUUkFfT0VDTUFLRV9hcHBlbmRfYWFyY2g2NCA9ICIgLURVU0VfTERfR09MRD1PRkYgIgotCi0jIEpJVCBub3Qgc3VwcG9ydGVkIG9uIE1JUFMgZWl0aGVyCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9taXBzID0gIiAtREVOQUJMRV9KSVQ9T0ZGICIKLUVYVFJBX09FQ01BS0VfYXBwZW5kX21pcHM2NCA9ICIgLURFTkFCTEVfSklUPU9GRiAiCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vd2Via2l0Mmd0ay00LjAvaW5qZWN0ZWQtYnVuZGxlL2xpYndlYmtpdDJndGtpbmplY3RlZGJ1bmRsZS5zbyIKLQotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjAzNzAvCi1BUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKLQotIyBJbnZhbGlkIGRhdGEgbWVtb3J5IGFjY2VzczogMHgwMDAwMDAwMAotIyAuLi4KLSMgcWVtdTogdW5jYXVnaHQgdGFyZ2V0IHNpZ25hbCAxMSAoU2VnbWVudGF0aW9uIGZhdWx0KSAtIGNvcmUgZHVtcGVkCi0jIFNlZ21lbnRhdGlvbiBmYXVsdAotRVhUUkFfT0VDTUFLRV9hcHBlbmRfcG93ZXJwYyA9ICIgLURFTkFCTEVfSU5UUk9TUEVDVElPTj1PRkYgIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0a18yLjEyLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0a18yLjEyLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQxZDBlMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrXzIuMTIuNS5iYgpAQCAtMCwwICsxLDEwOCBAQAorU1VNTUFSWSA9ICJXZWJLaXQgd2ViIHJlbmRlcmluZyBlbmdpbmUgZm9yIHRoZSBHVEsrIHBsYXRmb3JtIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy53ZWJraXRndGsub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy8iCisKK0xJQ0VOU0UgPSAiQlNEICYgTEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DT1BZSU5HLkxJQjttZDU9ZDBjNmQ2Mzk3YTVkODQyODZkZGE3NThkYTU3YmQ2OTEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vU291cmNlL1dlYktpdC9MSUNFTlNFO21kNT00NjQ2ZjkwMDgyYzQwYmNmMjk4YzI4NWY4YmFiMGIxMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9Tb3VyY2UvV2ViQ29yZS9MSUNFTlNFLUFQUExFO21kNT00NjQ2ZjkwMDgyYzQwYmNmMjk4YzI4NWY4YmFiMGIxMiBcCisJCSAgICBmaWxlOi8vU291cmNlL1dlYkNvcmUvTElDRU5TRS1MR1BMLTI7bWQ1PTM2MzU3ZmZkZTJiNjRhZTE3N2IyNDk0NDQ1Yjc5ZDIxIFwKKwkJICAgIGZpbGU6Ly9Tb3VyY2UvV2ViQ29yZS9MSUNFTlNFLUxHUEwtMi4xO21kNT1hNzc4YTMzZWYzMzhhYmJhZjhiOGE3YzM2YjZlZWM4MCBcCisJCSAgICIKKworU1JDX1VSSSA9ICJcCisgIGh0dHA6Ly93d3cud2Via2l0Z3RrLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgZmlsZTovLzAwMDEtRmluZEdPYmplY3RJbnRyb3NwZWN0aW9uLmNtYWtlLXByZWZpeC12YXJpYWJsZXMtb2J0YS5wYXRjaCBcCisgIGZpbGU6Ly8wMDAxLVdoZW4tYnVpbGRpbmctaW50cm9zcGVjdGlvbi1maWxlcy1hZGQtQ01BS0VfQ19GTEFHUy0ucGF0Y2ggXAorICBmaWxlOi8vMDAwMS1PcHRpb25zR1RLLmNtYWtlLWRyb3AtdGhlLWhhcmRjb2RlZC1pbnRyb3NwZWN0aW9uLWd0LnBhdGNoIFwKKyAgZmlsZTovLzAwMDEtV2ViS2l0TWFjcm9zLUFwcGVuZC10by1JLWFuZC1ub3QtdG8taXN5c3RlbS5wYXRjaCBcCisgIGZpbGU6Ly9tdXNsLWZpeGVzLnBhdGNoIFwKKyAgZmlsZTovL3BwYy1tdXNsLWZpeC5wYXRjaCBcCisgIGZpbGU6Ly8wMDAxLUZpeC1yYWN5LXBhcmFsbGVsLWJ1aWxkLW9mLVdlYktpdDItNC4wLmdpci5wYXRjaCBcCisgIGZpbGU6Ly8wMDAxLVR3ZWFrLWd0a2RvYy1zZXR0aW5ncy1zby10aGF0LWd0a2RvYy1nZW5lcmF0aW9uLXdvcmsucGF0Y2ggXAorICAiCitTUkNfVVJJW21kNXN1bV0gPSAiN2E5ZWEwMGVjMTk1NDg4ZGI5MGZkZWIyZDE3NGRkYWYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmIxNDc4NTRiODY0YTVmMTE1ZmFkYjk3YjJiNjIwMGIyZjY5NmRiMDE1MjE2YTM0ZTcyOThkMTFjODhiMWM0MCIKKworaW5oZXJpdCBjbWFrZSBsaWJfcGFja2FnZSBwa2djb25maWcgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHBlcmxuYXRpdmUgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBndGstZG9jCisKKyMgV2UgY2Fubm90IGluaGVyaXQgcHl0aG9ubmF0aXZlIGJlY2F1c2UgdGhhdCB3b3VsZCBjb25mbGljdCB3aXRoIGluaGVyaXRpbmcgcHl0aG9uM25hdGl2ZQorIyAod2hpY2ggaXMgZG9uZSBieSBnb2JqZWN0LWludHJvc3BlY3Rpb24pLiBCdXQgd2Via2l0IG9ubHkgbmVlZHMgdGhlIHBhdGggdG8gbmF0aXZlIFB5dGhvbiAyLnggYmluYXJ5CisjIHNvIHdlIHNpbXBseSBzZXQgaXQgZXhwbGljaXRseSBoZXJlLgorRVhUUkFOQVRJVkVQQVRIICs9ICJweXRob24tbmF0aXZlIgorCisjIGRlcGVuZHMgb24gbGlieHQKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK0RFUEVORFMgPSAiemxpYiBsaWJzb3VwLTIuNCBjdXJsIGxpYnhtbDIgY2Fpcm8gbGlieHNsdCBsaWJ4dCBsaWJpZG4gZ251dGxzIFwKKyAgICAgICAgICAgZ3RrKzMgZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgZmxleC1uYXRpdmUgZ3BlcmYtbmF0aXZlIHNxbGl0ZTMgXAorCSAgIHBhbmdvIGljdSBiaXNvbi1uYXRpdmUgZ2F3ayBpbnRsdG9vbC1uYXRpdmUgbGlid2VicCBcCisJICAgYXRrIHVkZXYgaGFyZmJ1enoganBlZyBsaWJwbmcgcHVsc2VhdWRpbyBsaWJyc3ZnIGxpYnRoZW9yYSBsaWJ2b3JiaXMgbGlieGNvbXBvc2l0ZSBsaWJ4dHN0IFwKKwkgICBydWJ5LW5hdGl2ZSBsaWJub3RpZnkgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkIFwKKyAgICAgICAgICAiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEnLCAnd2F5bGFuZCcgLGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCAnd2ViZ2wnLCAnJyAsZCl9IFwKKyAgICAgICAgICAgICAgICAgICBlbmNoYW50IFwKKyAgICAgICAgICAgICAgICAgICBsaWJzZWNyZXQgXAorICAgICAgICAgICAgICAgICAgIgorCitQQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi1ERU5BQkxFX1dBWUxBTkRfVEFSR0VUPU9OLC1ERU5BQkxFX1dBWUxBTkRfVEFSR0VUPU9GRix3YXlsYW5kIgorUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1ERU5BQkxFX1gxMV9UQVJHRVQ9T04sLURFTkFCTEVfWDExX1RBUkdFVD1PRkYsdmlydHVhbC9saWJ4MTEiCitQQUNLQUdFQ09ORklHW2dlb2NsdWVdID0gIi1ERU5BQkxFX0dFT0xPQ0FUSU9OPU9OLC1ERU5BQkxFX0dFT0xPQ0FUSU9OPU9GRixnZW9jbHVlIgorUEFDS0FHRUNPTkZJR1tlbmNoYW50XSA9ICItREVOQUJMRV9TUEVMTENIRUNLPU9OLC1ERU5BQkxFX1NQRUxMQ0hFQ0s9T0ZGLGVuY2hhbnQiCitQQUNLQUdFQ09ORklHW2d0azJdID0gIi1ERU5BQkxFX1BMVUdJTl9QUk9DRVNTX0dUSzI9T04sLURFTkFCTEVfUExVR0lOX1BST0NFU1NfR1RLMj1PRkYsZ3RrKyIKK1BBQ0tBR0VDT05GSUdbZ2xlczJdID0gIi1ERU5BQkxFX0dMRVMyPU9OLC1ERU5BQkxFX0dMRVMyPU9GRix2aXJ0dWFsL2xpYmdsZXMyIgorUEFDS0FHRUNPTkZJR1t3ZWJnbF0gPSAiLURFTkFCTEVfV0VCR0w9T04sLURFTkFCTEVfV0VCR0w9T0ZGLHZpcnR1YWwvbGliZ2wiCitQQUNLQUdFQ09ORklHW2xpYnNlY3JldF0gPSAiLURFTkFCTEVfQ1JFREVOVElBTF9TVE9SQUdFPU9OLC1ERU5BQkxFX0NSRURFTlRJQUxfU1RPUkFHRT1PRkYsbGlic2VjcmV0IgorUEFDS0FHRUNPTkZJR1tsaWJoeXBoZW5dID0gIi1EVVNFX0xJQkhZUEhFTj1PTiwtRFVTRV9MSUJIWVBIRU49T0ZGLGxpYmh5cGhlbiIKKworRVhUUkFfT0VDTUFLRSA9ICIgXAorCQktRFBPUlQ9R1RLIFwKKwkJLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UgXAorCQkke0BiYi51dGlscy5jb250YWlucygnR0lfREFUQV9FTkFCTEVEJywgJ1RydWUnLCAnLURFTkFCTEVfSU5UUk9TUEVDVElPTj1PTicsICctREVOQUJMRV9JTlRST1NQRUNUSU9OPU9GRicsIGQpfSBcCisJCSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHVEtET0NfRU5BQkxFRCcsICdUcnVlJywgJy1ERU5BQkxFX0dUS0RPQz1PTicsICctREVOQUJMRV9HVEtET0M9T0ZGJywgZCl9IFwKKwkJLURFTkFCTEVfTUlOSUJST1dTRVI9T04gXAorCQkiCisKKyMgSmF2YXNjcmlwdCBKSVQgaXMgbm90IHN1cHBvcnRlZCBvbiBwb3dlcnBjCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9wb3dlcnBjID0gIiAtREVOQUJMRV9KSVQ9T0ZGICIKK0VYVFJBX09FQ01BS0VfYXBwZW5kX3Bvd2VycGM2NCA9ICIgLURFTkFCTEVfSklUPU9GRiAiCisKKyMgQVJNIEpJVCBjb2RlIGRvZXMgbm90IGJ1aWxkIG9uIEFSTXY0LzUvNiBhbnltb3JlCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9hcm12NSA9ICIgLURFTkFCTEVfSklUPU9GRiAiCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9hcm12NiA9ICIgLURFTkFCTEVfSklUPU9GRiAiCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9hcm12NCA9ICIgLURFTkFCTEVfSklUPU9GRiAiCisKKyMgYmludXRpbHMgMi4yNS4xIGhhcyBhIGJ1ZyBvbiBhYXJjaDY0OgorIyBodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xODQzMAorRVhUUkFfT0VDTUFLRV9hcHBlbmRfYWFyY2g2NCA9ICIgLURVU0VfTERfR09MRD1PRkYgIgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfbWlwcyA9ICIgLURVU0VfTERfR09MRD1PRkYgIgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfbWlwczY0ID0gIiAtRFVTRV9MRF9HT0xEPU9GRiAiCitFWFRSQV9PRUNNQUtFX2FwcGVuZF90b29sY2hhaW4tY2xhbmcgPSAiIC1EVVNFX0xEX0dPTEQ9T0ZGICIKKworIyBKSVQgbm90IHN1cHBvcnRlZCBvbiBNSVBTIGVpdGhlcgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfbWlwcyA9ICIgLURFTkFCTEVfSklUPU9GRiAiCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9taXBzNjQgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgorCitTRUNVUklUWV9DRkxBR1NfcmVtb3ZlX2FhcmNoNjQgPSAiLWZwaWUiCitTRUNVUklUWV9DRkxBR1NfYXBwZW5kX2FhcmNoNjQgPSAiIC1mUElFIgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3dlYmtpdDJndGstNC4wL2luamVjdGVkLWJ1bmRsZS9saWJ3ZWJraXQyZ3RraW5qZWN0ZWRidW5kbGUuc28iCisKKyMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzIwMzcwLworQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjYgPSAiYXJtIgorCisjIGh0dHBzOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ3NAorIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5ODgwCisjIEpTQyBKSVQgY2FuIGJ1aWxkIG9uIEFSTXY3IHdpdGggLW1hcm0sIGJ1dCBkb2Vzbid0IHdvcmsgb24gcnVudGltZS4KKyMgVXBzdHJlYW0gb25seSB0ZXN0cyByZWd1bGFybHkgdGhlIEpTQyBKSVQgb24gQVJNdjcgd2l0aCBUaHVtYjIgKC1tdGh1bWIpLgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12N2EgPSAidGh1bWIiCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY3ciA9ICJ0aHVtYiIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjd2ZSA9ICJ0aHVtYiIKKworIyBXZWJLaXQyLTQuMDogLi4vLi4vbGliZ3BnLWVycm9yLTEuMjEvc3JjL3Bvc2l4LWxvY2suYzoxMTk6IGdldF9sb2NrX29iamVjdDogQXNzZXJ0aW9uIGAhInNpemVvZiBsb2NrIG9iaiInIGZhaWxlZC4KKyMgcWVtdTogdW5jYXVnaHQgdGFyZ2V0IHNpZ25hbCA2IChBYm9ydGVkKSAtIGNvcmUgZHVtcGVkCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9taXBzNjQgPSAiIC1ERU5BQkxFX0lOVFJPU1BFQ1RJT049T0ZGIC1ERU5BQkxFX0dUS0RPQz1PRkYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwcl8xLjUuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByXzEuNS4yLmJiCmluZGV4IGRiMTUzMDUuLjMwMmM5MzUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByXzEuNS4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByXzEuNS4yLmJiCkBAIC0zOCw2ICszOCw5IEBACiAjIHg4Nl82NC1saW51eC1saWJ0b29sOiAgIGVycm9yOiBzcGVjaWZ5IGEgdGFnIHdpdGggJy0tdGFnJwogQ0NBQ0hFID0gIiIKIAorUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsICdpcHY2JywgJycsIGQpfSIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCisKIGRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewogCSMgQXZvaWQgYWJzb2x1dGUgcGF0aHMgZm9yIGdyZXAgc2luY2UgaXQgY2F1c2VzIGZhaWx1cmVzCiAJIyB3aGVuIHVzaW5nIHNzdGF0ZSBiZXR3ZWVuIGRpZmZlcmVudCBob3N0cyB3aXRoIGRpZmZlcmVudApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2FyZ3Atc3RhbmRhbG9uZS9hcmdwLXN0YW5kYWxvbmVfMS4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2FyZ3Atc3RhbmRhbG9uZS9hcmdwLXN0YW5kYWxvbmVfMS4zLmJiCmluZGV4IGQ2MWM4YmUuLmJkMGNmZGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcmdwLXN0YW5kYWxvbmUvYXJncC1zdGFuZGFsb25lXzEuMy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXJncC1zdGFuZGFsb25lL2FyZ3Atc3RhbmRhbG9uZV8xLjMuYmIKQEAgLTEsNyArMSw3IEBACiAjIENvcHlyaWdodCAoQykgMjAxNSBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCBmb3IgdGhlIHRlcm1zKQogCi1ERVNDUklQVElPTiA9ICJHbGliYyBoaWVyYXJjaGljYWwgYXJndW1lbnQgcGFyc2luZyBzdGFuZGFsb25lIGxpYnJhcnkiCitTVU1NQVJZID0gIkdsaWJjIGhpZXJhcmNoaWNhbCBhcmd1bWVudCBwYXJzaW5nIHN0YW5kYWxvbmUgbGlicmFyeSIKIEhPTUVQQUdFID0gImh0dHA6Ly93d3cubHlzYXRvci5saXUuc2Uvfm5pc3NlL21pc2MvIgogTElDRU5TRSA9ICJMR1BMLTIuMSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2FyZ3AuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTIwO21kNT0wMDhiN2U1M2RlYTZmOWUxZDlmZGVmMGQ5Y2YzMTg0YSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1hdGtfMi4xOC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWF0a18yLjE4LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4YTkzZjMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWF0a18yLjE4LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1TVU1NQVJZID0gIkFULVNQSSAyIFRvb2xraXQgQnJpZGdlIgotTElDRU5TRSA9ICJMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lOWYyODhiYTk4MmQ2MDUxOGYzNzViNTg5ODI4Mzg4NiIKLQotTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vJHtNQUpfVkVSfS8ke0JQTn0tJHtQVn0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gImQ3MDQwYTU1ZGY5NzU4NjVhYjBkNzRhNGIzMjVhZmI1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImM0YjE1ZjkzODZkMzRkNDY0ZGRhZDVmNmNjODU2Njk3NDJjMDE2ZGY4NzE0MWNlZWU5MzUxMzI0NTk3OWMxMmQiCi0KLURFUEVORFMgPSAiZGJ1cyBnbGliLTIuMCBhdGsgYXQtc3BpMi1jb3JlIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi0jIFRoZSBhdC1zcGkyLWNvcmUgcmVxdWlyZXMgeDExIGluIERJU1RST19GRUFUVVJFUwotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWdub21lICR7UE59LWd0azIiCi0KLUZJTEVTXyR7UE59LWdub21lID0gIiR7bGliZGlyfS9nbm9tZS1zZXR0aW5ncy1kYWVtb24tMy4wL2d0ay1tb2R1bGVzIgotRklMRVNfJHtQTn0tZ3RrMiA9ICIke2xpYmRpcn0vZ3RrLTIuMC9tb2R1bGVzL2xpYmF0ay1icmlkZ2UuKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1hdGtfMi4yMC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWF0a18yLjIwLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQxMjBiNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1hdGtfMi4yMC4xLmJiCkBAIC0wLDAgKzEsMjEgQEAKK1NVTU1BUlkgPSAiQVQtU1BJIDIgVG9vbGtpdCBCcmlkZ2UiCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWU5ZjI4OGJhOTgyZDYwNTE4ZjM3NWI1ODk4MjgzODg2IgorCitNQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCisKK1NSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8ke01BSl9WRVJ9LyR7QlBOfS0ke1BWfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiMjMzMDliNmY4ZTE2MjM4NzFhY2U2MzQ3ZmI3MzRkY2UiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjM1OGE3OTRlOTE4ZThmNDdjZTBjNzM3MGVlZThmYzhhNjIwN2ZmMWFmZTk3NmVjOWZmNTQ3YTAzMjc3YmY4ZSIKKworREVQRU5EUyA9ICJkYnVzIGdsaWItMi4wIGF0ayBhdC1zcGkyLWNvcmUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKKyMgVGhlIGF0LXNwaTItY29yZSByZXF1aXJlcyB4MTEgaW4gRElTVFJPX0ZFQVRVUkVTCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tZ25vbWUgJHtQTn0tZ3RrMiIKKworRklMRVNfJHtQTn0tZ25vbWUgPSAiJHtsaWJkaXJ9L2dub21lLXNldHRpbmdzLWRhZW1vbi0zLjAvZ3RrLW1vZHVsZXMiCitGSUxFU18ke1BOfS1ndGsyID0gIiR7bGliZGlyfS9ndGstMi4wL21vZHVsZXMvbGliYXRrLWJyaWRnZS4qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmUvMDAwMS1idWlsZC1BZGQtd2l0aC1zeXN0ZW1kdXNlcnVuaXRkaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZS8wMDAxLWJ1aWxkLUFkZC13aXRoLXN5c3RlbWR1c2VydW5pdGRpci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTAzZWFhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmUvMDAwMS1idWlsZC1BZGQtd2l0aC1zeXN0ZW1kdXNlcnVuaXRkaXIucGF0Y2gKQEAgLTAsMCArMSw0OSBAQAorRnJvbSAyZjQ3Yzk3NWViZTUyYjY5MTZhNDVhZGUwMjNhZTNiYWMyMWJiMGUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK0RhdGU6IFR1ZSwgMjEgSnVuIDIwMTYgMTY6MDA6MDIgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gYnVpbGQ6IEFkZCAtLXdpdGgtc3lzdGVtZHVzZXJ1bml0ZGlyCisKK0RlZmF1bHQgdG8gInBrZy1jb25maWcgLS12YXJpYWJsZT1zeXN0ZW1kdXNlcnVuaXRkaXIgc3lzdGVtZCIgYnV0CithbGxvdyBvdmVycmlkaW5nIHRoZSB2YWx1ZS4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03Njc5MTFdCitTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorLS0tCisgYnVzL01ha2VmaWxlLmFtIHwgMiArLQorIGNvbmZpZ3VyZS5hYyAgICB8IDcgKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9idXMvTWFrZWZpbGUuYW0gYi9idXMvTWFrZWZpbGUuYW0KK2luZGV4IGIxODllMDIuLjUyZmJiMGIgMTAwNjQ0CistLS0gYS9idXMvTWFrZWZpbGUuYW0KKysrKyBiL2J1cy9NYWtlZmlsZS5hbQorQEAgLTI2LDcgKzI2LDcgQEAgZGJ1c3NlcnZpY2VfREFUQSA9IG9yZy5hMTF5LkJ1cy5zZXJ2aWNlCisgb3JnLmExMXkuQnVzLnNlcnZpY2U6IG9yZy5hMTF5LkJ1cy5zZXJ2aWNlLmluCisgCXNlZCAtZSAkKHN1YnN0aXR1dGlvbnMpICQ8ID4gJEAudG1wICYmIG12ICRALnRtcCAkQAorIAorLXN5c3RlbWRfdXNlcmRpciA9ICQocHJlZml4KS9saWIvc3lzdGVtZC91c2VyCisrc3lzdGVtZF91c2VyZGlyID0gJChzeXN0ZW1kdXNlcnVuaXRkaXIpCisgc3lzdGVtZF91c2VyX0RBVEEgPSBhdC1zcGktZGJ1cy1idXMuc2VydmljZQorIGF0LXNwaS1kYnVzLWJ1cy5zZXJ2aWNlOiBhdC1zcGktZGJ1cy1idXMuc2VydmljZS5pbiBNYWtlZmlsZQorIAlzZWQgLWUgJChzdWJzdGl0dXRpb25zKSAkPCA+ICRALnRtcCAmJiBtdiAkQC50bXAgJEAKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGY5MDYxYzIuLjJiOGVlZWQgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTE4Myw2ICsxODMsMTMgQEAgZWxzZQorIGZpCisgQUNfU1VCU1QoREJVU19TRVJWSUNFU19ESVIpCisgCisrQUNfQVJHX1dJVEgoW3N5c3RlbWR1c2VydW5pdGRpcl0sCisrICAgICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1zeXN0ZW1kdXNlcnVuaXRkaXI9RElSXSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBbRGlyZWN0b3J5IGZvciBzeXN0ZW1kIHNlcnZpY2UgZmlsZXNdKSwKKysgICAgICAgICAgICBbXSwKKysgICAgICAgICAgICBbd2l0aF9zeXN0ZW1kdXNlcnVuaXRkaXI9JCgkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXN5c3RlbWR1c2VydW5pdGRpciBzeXN0ZW1kKV0pCisrQUNfU1VCU1QoW3N5c3RlbWR1c2VydW5pdGRpcl0sIFskd2l0aF9zeXN0ZW1kdXNlcnVuaXRkaXJdKQorKworIEFDX1BBVEhfUFJPRyhHTElCX01LRU5VTVMsIGdsaWItbWtlbnVtcykKKyAKKyBHT0JKRUNUX0lOVFJPU1BFQ1RJT05fQ0hFQ0soWzAuOS42XSkKKy0tIAorMi4xLjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmVfMi4xOC4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmVfMi4xOC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlY2VkNTk3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlXzIuMTguMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVNVTU1BUlkgPSAiQXNzaXN0aXZlIFRlY2hub2xvZ3kgU2VydmljZSBQcm92aWRlciBJbnRlcmZhY2UgKGRidXMgY29yZSkiCi1MSUNFTlNFID0gIkxHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWU5ZjI4OGJhOTgyZDYwNTE4ZjM3NWI1ODk4MjgzODg2IgotCi1NQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCi0KLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8ke01BSl9WRVJ9LyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1ubHMubTQtVGFrZS1pdC1mcm9tLWdldHRleHQtMC4xNS5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZmMxODgwMWU1NmY2Y2U2OTE0MTI2ZjgzN2Q0MmY1NTYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWRhMjZhZGQ5NDE1NWY5N2QwZjYwMWEyMGNiN2EwZTNmZDNiYTE1ODhjMzUyMGI3Mjg4MzE2NDk0MDI3ZDYyOSIKLQotREVQRU5EUyA9ICJkYnVzIGdsaWItMi4wIHZpcnR1YWwvbGlieDExIGxpYnhpIGxpYnh0c3QgaW50bHRvb2wtbmF0aXZlIGdldHRleHQtbmF0aXZlIgotCi1pbmhlcml0IGF1dG90b29scyBndGstZG9jIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgotIyBkZXBlbmRzIG9uIHZpcnR1YWwvbGlieDExCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXhldmllIC0td2l0aC1kYnVzLWRhZW1vbmRpcj0ke2JpbmRpcn0iCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcy8qLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL2FjY2Vzc2liaWxpdHktc2VydmljZXMvKi5zZXJ2aWNlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmVfMi4yMC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmVfMi4yMC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5OTI0M2EKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZV8yLjIwLjIuYmIKQEAgLTAsMCArMSwyOSBAQAorU1VNTUFSWSA9ICJBc3Npc3RpdmUgVGVjaG5vbG9neSBTZXJ2aWNlIFByb3ZpZGVyIEludGVyZmFjZSAoZGJ1cyBjb3JlKSIKK0xJQ0VOU0UgPSAiTEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTlmMjg4YmE5ODJkNjA1MThmMzc1YjU4OTgyODM4ODYiCisKK01BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW5scy5tNC1UYWtlLWl0LWZyb20tZ2V0dGV4dC0wLjE1LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGQtQWRkLXdpdGgtc3lzdGVtZHVzZXJ1bml0ZGlyLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJmNmY2MzAzZGEyZTcyMzE3Zjg4MTcwM2Y0MGJmMGM2MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4OGE0ZGU5ZDQzMTM5ZjEzY2NhNTMxYjQ3YjkwMWJjMWI1NmUwYWIwNmJhODk5MTI2NjQ0YWJkNGFjMTZhMTQzIgorCitERVBFTkRTID0gImRidXMgZ2xpYi0yLjAgdmlydHVhbC9saWJ4MTEgbGlieGkgbGlieHRzdCBpbnRsdG9vbC1uYXRpdmUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGd0ay1kb2MgZ2V0dGV4dCBzeXN0ZW1kIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgorIyBkZXBlbmRzIG9uIHZpcnR1YWwvbGlieDExCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXhldmllIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtc3lzdGVtZHVzZXJ1bml0ZGlyPSR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtZGJ1cy1kYWVtb25kaXI9JHtiaW5kaXJ9IgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMvKi5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9hY2Nlc3NpYmlsaXR5LXNlcnZpY2VzLyouc2VydmljZSBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kZWZhdWx0cy9hdC1zcGkyIFwKKyAgICAgICAgICAgICAgICAke3N5c3RlbWRfdXNlcl91bml0ZGlyfS9hdC1zcGktZGJ1cy1idXMuc2VydmljZcKgXAorICAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXRrXzIuMTguMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXRrXzIuMTguMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2MwZTgyZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0a18yLjE4LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1TVU1NQVJZID0gIkFjY2Vzc2liaWxpdHkgdG9vbGtpdCBmb3IgR05PTUUiCi1IT01FUEFHRSA9ICJodHRwOi8vbGl2ZS5nbm9tZS5vcmcvR0FQLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotU0VDVElPTiA9ICJ4MTEvbGlicyIKLQotTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2JmNTAwMDJhZWZkMDAyZjQ5ZTdiYjg1NDA2M2Y3ZTcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXRrL2F0a3V0aWwuYztlbmRsaW5lPTE4O21kNT02ZmQzMWNkMmZkYzliMzBmNjE5Y2E4ZDgxOWJjMTJkMyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdGsvYXRrLmg7ZW5kbGluZT0xODttZDU9ZmNkNzcxMDE4N2UwZWFlNDg1ZTM1NmMzMGQxYjBjM2IiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAiCi0KLWluaGVyaXQgZ25vbWViYXNlIGd0ay1kb2MgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJmZDM2NzhmMzUwMDRiNGM5MmUzZGEzOTM1Njk5NjA1NCIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImNlNmM0OGQ3N2JmOTUxMDgzMDI5ZDVhMzk2ZGQ1NTJkODM2ZmZmM2MxNzE1ZDNhNzAyMmU5MTdlNDZkMGM5MmIiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWdsaWJ0ZXN0IFwKLSAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXRrXzIuMjAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXRrXzIuMjAuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDIyMzU0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGtfMi4yMC4wLmJiCkBAIC0wLDAgKzEsMjEgQEAKK1NVTU1BUlkgPSAiQWNjZXNzaWJpbGl0eSB0b29sa2l0IGZvciBHTk9NRSIKK0hPTUVQQUdFID0gImh0dHA6Ly9saXZlLmdub21lLm9yZy9HQVAvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCitTRUNUSU9OID0gIngxMS9saWJzIgorCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdGsvYXRrdXRpbC5jO2VuZGxpbmU9MTg7bWQ1PTZmZDMxY2QyZmRjOWIzMGY2MTljYThkODE5YmMxMmQzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F0ay9hdGsuaDtlbmRsaW5lPTE4O21kNT1mY2Q3NzEwMTg3ZTBlYWU0ODVlMzU2YzMwZDFiMGMzYiIKKworREVQRU5EUyA9ICJnbGliLTIuMCIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyBnZXR0ZXh0IHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNTE4N2IwOTcyZjRkMzkwNWYyODU1NDBiMzEzOTVlMjAiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI0OTNhNTBmNmM0YTAyNWY1ODhkMzgwYTU1MWVjMjc3ZTA3MGIyOGE4MmU2M2VmOGUzYzA2YjNlZTdjMTIzOGYwIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1nbGlidGVzdCBcCisgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsLmluYwppbmRleCAxOThmYjRmLi4zN2EwMjE4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC5pbmMKQEAgLTE0LDYgKzE0LDcgQEAKICAgICAgICAgICAgZmlsZTovL2FjbC1maXgtdGhlLW9yZGVyLW9mLWV4cGVjdGVkLW91dHB1dC1vZi1nZXRmYWNsLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3Rlc3QtZml4LWluc3VmZmljaWVudC1xdW90aW5nLW9mLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3Rlc3QtZml4dXBzLW9uLVNFTGludXgtbWFjaGluZXMtZm9yLXJvb3QtdGVzdGNhc2VzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3Rlc3QtZml4LWRpcmVjdG9yeS1wZXJtaXNzaW9ucy5wYXRjaCBcCiAiCiAKIHJlcXVpcmUgZWEtYWNsLmluYwpAQCAtMzMsNyArMzQsNyBAQAogaW5oZXJpdCBwdGVzdAogCiBkb19pbnN0YWxsX3B0ZXN0KCkgewotCXRhciAtY2YgLSB0ZXN0LyAtLWV4Y2x1ZGUgbmZzIHwgKCBjZCAke0R9JHtQVEVTVF9QQVRIfSAmJiB0YXIgLXhmIC0gKQorCXRhciAtYyAtLWV4Y2x1ZGU9bmZzIHRlc3QvIHwgKCBjZCAke0R9JHtQVEVTVF9QQVRIfSAmJiB0YXIgLXhmIC0gKQogCW1rZGlyICR7RH0ke1BURVNUX1BBVEh9L2luY2x1ZGUKIAljcCAke1N9L2luY2x1ZGUvYnVpbGRkZWZzICR7U30vaW5jbHVkZS9idWlsZG1hY3JvcyAke1N9L2luY2x1ZGUvYnVpbGRydWxlcyAke0R9JHtQVEVTVF9QQVRIfS9pbmNsdWRlLwogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsL3J1bi1wdGVzdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC9ydW4tcHRlc3QKaW5kZXggM2IzMWNjOS4uYTU2OTQ2ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsL3J1bi1wdGVzdAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvcnVuLXB0ZXN0CkBAIC0xLDcgKzEsNjQgQEAKICMhL2Jpbi9zaAorIworI1RoaXMgc2NyaXB0IGlzIHVzZWQgdG8gcnVuIGFjbCB0ZXN0IHN1aXRlcwogCi1ncGFzc3dkIC1hIGRhZW1vbiBiaW4KLW1ha2UgLUMgdGVzdCAtayB0ZXN0cyByb290LXRlc3RzIHxzZWQgXAotIC1lICdzfF5cWy4qXF0gXCguKlwpIC0tIG9rJHxQQVNTOiBcMXwnIFwKLSAtZSAnc3xeXFsuKlxdIFwoLipcKSAtLSBmYWlsZWR8RkFJTDogXDF8JwotZ3Bhc3N3ZCAtZCBkYWVtb24gYmluCisjdW1hc2sgMDc3CisKK0VYVDNfSU1BR0U9ZXh0My5pbWcKK0VYVDNfTU9VTlRfUE9JTlQ9L21udC9leHQzCisKK3RyYXAgJ3JtIC1mICR7RVhUM19JTUFHRX0nIEVYSVQKKworZGQgaWY9L2Rldi96ZXJvIG9mPSR7RVhUM19JTUFHRX0gYnM9MU0gY291bnQ9MQoraWYgWyAiJD8iIC1lcSAwIF07IHRoZW4KKwllY2hvICJQQVNTOiBkdW1wIGV4dDMuaW1nIgorZWxzZQorCWVjaG8gIkZBSUw6IGR1bXAgZXh0My5pbWciCisJZXhpdCAxCitmaQorCitta2ZzLmV4dDMgLUYgJHtFWFQzX0lNQUdFfQoraWYgWyAiJD8iIC1lcSAwIF07IHRoZW4KKwllY2hvICJQQVNTOiBta2ZzLmV4dDMgLUYgZXh0My5pbWciCitlbHNlCisJZWNobyAiRkFJTDogbWtmcy5leHQzIC1GIGV4dDMuaW1nIgorCWV4aXQgMQorZmkKKworaWYgWyAtZCAkRVhUM19NT1VOVF9QT0lOVCBdOyB0aGVuCisJZWNobyAibW91bnQgcG9pbnQgZXhpc3QiCitlbHNlCisJbWtkaXIgLXAgJEVYVDNfTU9VTlRfUE9JTlQKK2ZpCisKKworbW91bnQgLW8gbG9vcCxydyxhY2wgICR7RVhUM19JTUFHRX0gJEVYVDNfTU9VTlRfUE9JTlQKK2lmIFsgIiQ/IiAtZXEgMCBdOyB0aGVuCisJZWNobyAiUEFTUzogbW91bnQgZXh0My5pbWciCitlbHNlCisJZWNobyAiRkFJTDogbW91bnQgZXh0My5pbWciCisJZXhpdCAxCitmaQorCitjcCAtcmYgLi90ZXN0LyAkRVhUM19NT1VOVF9QT0lOVAorCitjZCAkRVhUM19NT1VOVF9QT0lOVC90ZXN0LworCitpZglzZWQgLWUgJ3MhXmJpbjp4OjI6JCFiaW46eDoyOmRhZW1vbiEnIDwgL2V0Yy9ncm91cCA+IGd0bXAKK3RoZW4JaWYJY3AgL2V0Yy9ncm91cCBncm91cC5vcmlnOworCXRoZW4JY3AgZ3RtcCAvZXRjL2dyb3VwCisJCW1ha2UgIC1rIHRlc3RzIHJvb3QtdGVzdHMgfCBzZWQgXAorCQkJLWUgJ3N8XlxbLipcXSBcKC4qXCkgLS0gb2skfFBBU1M6IFwxfCcgXAorCSAgCQktZSAnc3xeXFsuKlxdIFwoLipcKSAtLSBmYWlsZWR8RkFJTDogXDF8JworCQljcCBncm91cC5vcmlnIC9ldGMvZ3JvdXAKKwllbHNlCWVjaG8gIkZBSUw6IGNvdWxkbid0IHNhdmUgb3JpZ2luYWwgZ3JvdXAgZmlsZS4iCisJCWV4aXQgMQorCWZpCitlbHNlCWVjaG8gIkZBSUw6IGNvdWxkbid0IGNyZWF0ZSBtb2RpZmllZCBncm91cCBmaWxlLiIKKwlleGl0IDEKK2ZpCisKK2NkIC0KK3Vtb3VudCAkRVhUM19NT1VOVF9QT0lOVAorcm0gLXJmICRFWFQzX01PVU5UX1BPSU5UCitybSAkRVhUM19JTUFHRQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsL3Rlc3QtZml4LWRpcmVjdG9yeS1wZXJtaXNzaW9ucy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC90ZXN0LWZpeC1kaXJlY3RvcnktcGVybWlzc2lvbnMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Q0NTEwYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC90ZXN0LWZpeC1kaXJlY3RvcnktcGVybWlzc2lvbnMucGF0Y2gKQEAgLTAsMCArMSwyNCBAQAorY29tbWl0IGM0NWJhZTg0ODE3YTcwZmVmNmMyYjY2MWEwN2E0OTJhMGQyM2FlODUKK0F1dGhvcjogUGV0ZXIgU2VlYmFjaCA8cGV0ZXIuc2VlYmFjaEB3aW5kcml2ZXIuY29tPgorRGF0ZTogICBXZWQgTWF5IDExIDE1OjE2OjA2IDIwMTYgLTA1MDAKKworICAgIEZpeCBwZXJtaXNzaW9ucyBvbiB0ZW1wb3JhcnkgZGlyZWN0b3J5CisKKyAgICBUaGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSdzIHBlcm1pc3Npb25zIGhhdmUgdG8gYWxsb3cgb3RoZXIgdXNlcnMgdG8KKyAgICB2aWV3IHRoZSBkaXJlY3RvcnkuIEEgZGVmYXVsdCB1bWFzayBvZiAwMjIgaXMgY29tbW9uLCBidXQgbm90IG1hbmRhdG9yeSwKKyAgICBhbmQgc2VjdXJlIHN5c3RlbXMgbWF5IGhhdmUgbW9yZSByZXN0cmljdGl2ZSBkZWZhdWx0cy4KKworICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFNlZWJhY2ggPHBldGVyLnNlZWJhY2hAd2luZHJpdmVyLmNvbT4KKworZGlmZiAtLWdpdCBhL3Rlc3Qvcm9vdC9wZXJtaXNzaW9ucy50ZXN0IGIvdGVzdC9yb290L3Blcm1pc3Npb25zLnRlc3QKK2luZGV4IDQyNjE1ZjUuLjA5OGI1MmEgMTAwNjQ0CistLS0gYS90ZXN0L3Jvb3QvcGVybWlzc2lvbnMudGVzdAorKysrIGIvdGVzdC9yb290L3Blcm1pc3Npb25zLnRlc3QKK0BAIC0xNiw2ICsxNiw3IEBAIENyeSBpbW1lZGlhdGVseSBpZiB3ZSBhcmUgbm90IHJ1bm5pbmcgYXMgcm9vdC4KKyBGaXJzdCwgc2V0IHVwIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSBhbmQgY3JlYXRlIGEgcmVndWxhciBmaWxlIHdpdGgKKyBkZWZpbmVkIHBlcm1pc3Npb25zLgorIAorKwkkIHVtYXNrIDAyMgorIAkkIG1rZGlyIGQKKyAJJCBjZCBkCisgCSQgdW1hc2sgMDI3CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHIuaW5jCmluZGV4IDY4NjA5NzguLmU4YjVkMDUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHIuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHIuaW5jCkBAIC0yLDcgKzIsNyBAQAogSE9NRVBBR0UgPSAiaHR0cDovL3NhdmFubmFoLm5vbmdudS5vcmcvcHJvamVjdHMvYXR0ci8iCiBTRUNUSU9OID0gImxpYnMiCiAKLURFUEVORFMgPSAibmN1cnNlcyB2aXJ0dWFsL2xpYmludGwiCitERVBFTkRTID0gInZpcnR1YWwvbGliaW50bCIKIAogTElDRU5TRSA9ICJMR1BMdjIuMSsgJiBHUEx2MisiCiBMSUNFTlNFXyR7UE59ID0gIkdQTHYyKyIKQEAgLTI2LDcgKzI2LDcgQEAKIGluaGVyaXQgcHRlc3QKIAogZG9faW5zdGFsbF9wdGVzdCgpIHsKLQl0YXIgLWNmIC0gdGVzdC8gLS1leGNsdWRlIGV4dCB8ICggY2QgJHtEfSR7UFRFU1RfUEFUSH0gJiYgdGFyIC14ZiAtICkKKwl0YXIgLWMgLS1leGNsdWRlPWV4dCB0ZXN0LyB8ICggY2QgJHtEfSR7UFRFU1RfUEFUSH0gJiYgdGFyIC14ZiAtICkKIAlta2RpciAke0R9JHtQVEVTVF9QQVRIfS9pbmNsdWRlCiAJZm9yIGkgaW4gYnVpbGRkZWZzIGJ1aWxkbWFjcm9zIGJ1aWxkcnVsZXM7IFwKIAkgIGRvIGNwICR7U30vaW5jbHVkZS8kaSAke0R9JHtQVEVTVF9QQVRIfS9pbmNsdWRlLzsgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYXR0cl8yLjQuNDcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyXzIuNC40Ny5iYgppbmRleCA0NGVlZTM5Li41NTZjOGU0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyXzIuNC40Ny5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyXzIuNC40Ny5iYgpAQCAtMiw5ICsyLDkgQEAKIAogIyBjb25maWd1cmUuYWMgd2FzIG1pc3NpbmcgZnJvbSB0aGUgcmVsZWFzZSB0YXJiYWxsLiBUaGlzIHNob3VsZCBiZSBmaXhlZCBpbgogIyBmdXR1cmUgcmVsZWFzZXMgb2YgYXR0ciwgcmVtb3ZlIHRoaXMgd2hlbiB1cGRhdGluZyB0aGUgcmVjaXBlLgotU1JDX1VSSV9hcHBlbmQgKz0gImZpbGU6Ly9hdHRyLU1pc3NpbmctY29uZmlndXJlLmFjLnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9udC11c2UtZGVjbC1tYWNyb3MucGF0Y2ggXAotICAgICAgICAgICAgICAgICAgIgorU1JDX1VSSSArPSAiZmlsZTovL2F0dHItTWlzc2luZy1jb25maWd1cmUuYWMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2RvbnQtdXNlLWRlY2wtbWFjcm9zLnBhdGNoIFwKKyAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiODRmNThkZWMwMGI2MGYyZGM4ZmQxYzk3MDkyOTFjYzciCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjU3NzJmNjUzYWM1YjJlM2NlZWI4OWRmNTBlNDY4ODg5MWUyMWY3MjNjNDYwNjM2NTQ4OTcxNjUyYWYwYTg1OSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iYXNoLWNvbXBsZXRpb24vYmFzaC1jb21wbGV0aW9uXzIuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iYXNoLWNvbXBsZXRpb24vYmFzaC1jb21wbGV0aW9uXzIuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGIyNTdkMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmFzaC1jb21wbGV0aW9uL2Jhc2gtY29tcGxldGlvbl8yLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1TVU1NQVJZID0gIlByb2dyYW1tYWJsZSBDb21wbGV0aW9uIGZvciBCYXNoIDQiCi1IT01FUEFHRSA9ICJodHRwOi8vYmFzaC1jb21wbGV0aW9uLmFsaW90aC5kZWJpYW4ub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9hbGlvdGguZGViaWFuLm9yZy9wcm9qZWN0cy9iYXNoLWNvbXBsZXRpb24vIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi0KLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLQotU1JDX1VSST0iaHR0cDovL2Jhc2gtY29tcGxldGlvbi5hbGlvdGguZGViaWFuLm9yZy9maWxlcy8ke0JQTn0tJHtQVn0udGFyLmJ6MiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjRlMmE5ZjExYTQwNDJhMzhlZTc5ZGRjZDA0OGU4YjllIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJiNjA2ODA0YTdkNWY4MjMzODBhODgyZTBmN2I2YzhhMzdiMGU3NjhlNzJjM2Q0MTA3YzUxZmJlOGE0NmFlNGYiCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJiYXNoLWNvbXBsZXRpb24tKD9QPHB2ZXI+KD8hMjAwOCkuKylcLnRhciIKLQotUEFSQUxMRUxfTUFLRSA9ICIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCSMgY29tcGF0ZGlyCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9iYXNoX2NvbXBsZXRpb24uZC8KLQllY2hvICcuICR7ZGF0YWRpcn0vJHtCUE59L2Jhc2hfY29tcGxldGlvbicgPiR7RH0ke3N5c2NvbmZkaXJ9L2Jhc2hfY29tcGxldGlvbgotCi0JIyBEZWxldGUgZmlsZXMgYWxyZWFkeSBwcm92aWRlZCBieSB1dGlsLWxpbnV4Ci0JbG9jYWwgaQotCWZvciBpIGluIGNhbCBkbWVzZyBlamVjdCBoZXhkdW1wIGh3Y2xvY2sgaW9uaWNlIGxvb2sgcmVuaWNlIHJ0Y3dha2Ugc3U7IGRvCi0JCXJtICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS9jb21wbGV0aW9ucy8kaQotCWRvbmUKLQotCSMgRGVsZXRlIGZpbGVzIGZvciBuZXR3b3JrbWFuYWdlcgotCXJtICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS9jb21wbGV0aW9ucy9ubWNsaQotfQotCi1SREVQRU5EU18ke1BOfSA9ICJiYXNoIgotCi0jIFNvbWUgcmVjaXBlcyBhcmUgcHJvdmlkaW5nICR7UE59LWJhc2gtY29tcGxldGlvbiBwYWNrYWdlcwotUEFDS0FHRVMgPSsgIiR7UE59LWV4dHJhIgotRklMRVNfJHtQTn0tZXh0cmEgPSAiJHtkYXRhZGlyfS8ke0JQTn0vY29tcGxldGlvbnMvIFwKLSAgICAke2RhdGFkaXJ9LyR7QlBOfS9oZWxwZXJzLyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmFzaC1jb21wbGV0aW9uL2Jhc2gtY29tcGxldGlvbl8yLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmFzaC1jb21wbGV0aW9uL2Jhc2gtY29tcGxldGlvbl8yLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI3MTlmMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iYXNoLWNvbXBsZXRpb24vYmFzaC1jb21wbGV0aW9uXzIuNC5iYgpAQCAtMCwwICsxLDQyIEBACitTVU1NQVJZID0gIlByb2dyYW1tYWJsZSBDb21wbGV0aW9uIGZvciBCYXNoIDQiCitIT01FUEFHRSA9ICJodHRwOi8vYmFzaC1jb21wbGV0aW9uLmFsaW90aC5kZWJpYW4ub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9hbGlvdGguZGViaWFuLm9yZy9wcm9qZWN0cy9iYXNoLWNvbXBsZXRpb24vIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCisKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vc2NvcC9iYXNoLWNvbXBsZXRpb24vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUE59LSR7UFZ9LnRhci54eiIKKworU1JDX1VSSVttZDVzdW1dID0gIjFlYTk0ODY0ZmIyYjI0NDZmYmJkZjgyZjEwYmQyNWRmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImMwZjc2YjUyMDJmZWM5ZWY4ZmZiYTgyZjU2MDUwMjVjYTAwM2YyN2NmZDdhODUxMTVmODM4YmE1MTM2ODkwZjYiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJiYXNoLWNvbXBsZXRpb24tKD9QPHB2ZXI+KD8hMjAwOCkuKylcLnRhciIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vc2NvcC9iYXNoLWNvbXBsZXRpb24vcmVsZWFzZXMiCisKK1BBUkFMTEVMX01BS0UgPSAiIgorCitpbmhlcml0IGF1dG90b29scworCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIGNvbXBhdGRpcgorCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vYmFzaF9jb21wbGV0aW9uLmQvCisJZWNobyAnLiAke2RhdGFkaXJ9LyR7QlBOfS9iYXNoX2NvbXBsZXRpb24nID4ke0R9JHtzeXNjb25mZGlyfS9iYXNoX2NvbXBsZXRpb24KKworCSMgRGVsZXRlIGZpbGVzIGFscmVhZHkgcHJvdmlkZWQgYnkgdXRpbC1saW51eAorCWxvY2FsIGkKKwlmb3IgaSBpbiBtb3VudCB1bW91bnQ7IGRvCisJCXJtICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS9jb21wbGV0aW9ucy8kaQorCWRvbmUKK30KKworUkRFUEVORFNfJHtQTn0gPSAiYmFzaCIKKworIyBTb21lIHJlY2lwZXMgYXJlIHByb3ZpZGluZyAke1BOfS1iYXNoLWNvbXBsZXRpb24gcGFja2FnZXMKK1BBQ0tBR0VTID0rICIke1BOfS1leHRyYSIKK0ZJTEVTXyR7UE59LWV4dHJhID0gIiR7ZGF0YWRpcn0vJHtCUE59L2NvbXBsZXRpb25zLyBcCisgICAgJHtkYXRhZGlyfS8ke0JQTn0vaGVscGVycy8iCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS9jbWFrZSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmR3Z2MvYmR3Z2MvMDAwMS1maXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jkd2djL2Jkd2djLzAwMDEtZml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWI5MDdmYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmR3Z2MvYmR3Z2MvMDAwMS1maXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSA4MjlhODllN2Y1Nzg1MjM5YTkzODRlM2FmZDQ2YzkwMGY5ZDc2YWRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMzEgQXVnIDIwMTUgMTk6NTU6MzIgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gZml4IGJ1aWxkIHdpdGggbXVzbAotCi1zaWduYWwuaCBhbHJlYWR5IGluY2x1ZGVzIGJpdHMvc2lnY29udGV4dC5oCi1Eb2N1bWVudGF0aW9uIHNlZW1zIHRvIGluZGljYXRlIHRoYXQgaWYgeW91IG5lZWQgdGhlIGRlZmluaXRpb25zIGluCi1zaWdjb250ZXh0LmgsIHlvdSBhcmUgc3VwcG9zZWQgdG8gaW5jbHVkZSBzaWduYWwuaCBhbmQgbm90IHNpZ2NvbnRleHQuaC4KLQotYSBnb29kIGZpeCBzaG91bGQgYmUgdG8gcmVtb3ZlIGdsaWJjCi1zcGVjaWZpYyB1bmRlcnN0YW5kaW5nLCBpbiB0aG9zZSBpZmRlZidzCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gb3NfZGVwLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9vc19kZXAuYyBiL29zX2RlcC5jCi1pbmRleCAwOGM1MDFkLi41Y2I3ODczIDEwMDY0NAotLS0tIGEvb3NfZGVwLmMKLSsrKyBiL29zX2RlcC5jCi1AQCAtNDEsNyArNDEsNyBAQAotICMgICBlbHNlIC8qIF9fR0xJQkNfXyA8IDIgKi8KLSAgICAgICAvKiBsaWJjNSBkb2Vzbid0IGhhdmUgPHNpZ2NvbnRleHQuaD46IGdvIGRpcmVjdGx5IHdpdGggdGhlIGtlcm5lbCAgICovCi0gICAgICAgLyogb25lLiAgQ2hlY2sgTElOVVhfVkVSU0lPTl9DT0RFIHRvIHNlZSB3aGljaCB3ZSBzaG91bGQgcmVmZXJlbmNlLiAqLwotLSMgICAgIGluY2x1ZGUgPGFzbS9zaWdjb250ZXh0Lmg+Ci0rIyAgICAgaW5jbHVkZSA8c2lnbmFsLmg+Ci0gIyAgIGVuZGlmIC8qIF9fR0xJQkNfXyA8IDIgKi8KLSAjIGVuZGlmCi0gI2VuZGlmIC8qIExJTlVYICYmICFQT1dFUlBDICovCi0tLSAKLTIuNS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iZHdnYy9iZHdnYy8wMDAyLUFsdGVyYS1OSU9TMi1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jkd2djL2Jkd2djLzAwMDItQWx0ZXJhLU5JT1MyLXN1cHBvcnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3M2M1NDAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jkd2djL2Jkd2djLzAwMDItQWx0ZXJhLU5JT1MyLXN1cHBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi1Gcm9tIDI1NzFkZjBlMzBiNDk3NmQ3YTEyZGJjNmZiZWM0ZjFjNDAyNzkyNGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJlayBWYXN1dCA8bWFyZXhAZGVueC5kZT4KLURhdGU6IFRodSwgMjggSmFuIDIwMTYgMDQ6MTM6MTMgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gQWx0ZXJhIE5JT1MyIHN1cHBvcnQKLQotQWRkIHNpbXBsZSBuaW9zMiBjb25maWd1cmF0aW9uIHN1cHBvcnQuCi0KLSogaW5jbHVkZS9wcml2YXRlL2djY29uZmlnLmggKE5JT1MyKTogTmV3IG1hY3JvLgotKiBpbmNsdWRlL3ByaXZhdGUvZ2Njb25maWcuaCAobWFjaF90eXBlX2tub3duLCBDUFBfV09SRFNaLCBNQUNIX1RZUEUsCi1PU19UWVBFLCBEWU5BTUlDX0xPQURJTkcsIF9lbmQsIF9fZGF0YV9zdGFydCwgREFUQVNUQVJULCBEQVRBRU5ELAotQUxJR05NRU5ULCBIQkxLU0laRSwgSEJMS1NJWkUsIExJTlVYX1NUQUNLQk9UVE9NLCBOT19HRVRDT05URVhUKToKLURlZmluZSBmb3IgTklPUzIuCi0KLVNpZ25lZC1vZmYtYnk6IE1hcmVrIFZhc3V0IDxtYXJleEBkZW54LmRlPgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbIGh0dHBzOi8vZ2l0aHViLmNvbS9pdm1haS9iZHdnYy5naXQgMjU3MWRmMGUzMGI0OTc2ZDdhMTJkYmM2ZmJlYzRmMWM0MDI3OTI0ZCBdCi0tLS0KLSBpbmNsdWRlL3ByaXZhdGUvZ2Njb25maWcuaCB8IDI0ICsrKysrKysrKysrKysrKysrKysrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCAyMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9pbmNsdWRlL3ByaXZhdGUvZ2Njb25maWcuaCBiL2luY2x1ZGUvcHJpdmF0ZS9nY2NvbmZpZy5oCi1pbmRleCBjNDY3YzI2Li45MmQ0NzI3IDEwMDY0NAotLS0tIGEvaW5jbHVkZS9wcml2YXRlL2djY29uZmlnLmgKLSsrKyBiL2luY2x1ZGUvcHJpdmF0ZS9nY2NvbmZpZy5oCi1AQCAtMTgxLDYgKzE4MSwxMCBAQAotICMgICAgZW5kaWYKLSAjICAgIGRlZmluZSBtYWNoX3R5cGVfa25vd24KLSAjIGVuZGlmCi0rIyBpZiBkZWZpbmVkKF9fTklPUzJfXykgfHwgZGVmaW5lZChfX05JT1MyKSB8fCBkZWZpbmVkKF9fbmlvczJfXykKLSsjICAgZGVmaW5lIE5JT1MyIC8qIEFsdGVyYSBOSU9TMiAqLwotKyMgICBkZWZpbmUgbWFjaF90eXBlX2tub3duCi0rIyBlbmRpZgotICMgaWYgZGVmaW5lZChER1VYKSAmJiAoZGVmaW5lZChpMzg2KSB8fCBkZWZpbmVkKF9faTM4Nl9fKSkKLSAjICAgIGRlZmluZSBJMzg2Ci0gIyAgICBpZm5kZWYgX1VTSU5HX0RHVVgKLUBAIC0xNjU4LDYgKzE2NjIsMjQgQEAKLSAjICAgZW5kaWYKLSAjIGVuZGlmCi0gCi0rIyBpZmRlZiBOSU9TMgotKyMgIGRlZmluZSBDUFBfV09SRFNaIDMyCi0rIyAgZGVmaW5lIE1BQ0hfVFlQRSAiTklPUzIiCi0rIyAgaWZkZWYgTElOVVgKLSsjICAgIGRlZmluZSBPU19UWVBFICJMSU5VWCIKLSsjICAgIGRlZmluZSBEWU5BTUlDX0xPQURJTkcKLSsgICAgIGV4dGVybiBpbnQgX2VuZFtdOwotKyAgICAgZXh0ZXJuIGludCBfX2RhdGFfc3RhcnRbXTsKLSsjICAgIGRlZmluZSBEQVRBU1RBUlQgKChwdHJfdCkoX19kYXRhX3N0YXJ0KSkKLSsjICAgIGRlZmluZSBEQVRBRU5EICgocHRyX3QpKF9lbmQpKQotKyMgICAgZGVmaW5lIEFMSUdOTUVOVCA0Ci0rIyAgICBpZm5kZWYgSEJMS1NJWkUKLSsjICAgICAgZGVmaW5lIEhCTEtTSVpFIDQwOTYKLSsjICAgIGVuZGlmCi0rIyAgICBkZWZpbmUgTElOVVhfU1RBQ0tCT1RUT00KLSsjICBlbmRpZiAvKiBMaW51eCAqLwotKyMgZW5kaWYKLSsKLSAjIGlmZGVmIEhQX1BBCi0gIyAgIGRlZmluZSBNQUNIX1RZUEUgIkhQX1BBIgotICMgICBpZmRlZiBfX0xQNjRfXwotQEAgLTI2MjIsNiArMjY0NCw3IEBACi0gI2lmICgoZGVmaW5lZChVTklYX0xJS0UpICYmIChkZWZpbmVkKERBUldJTikgfHwgZGVmaW5lZChIVVJEKSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBkZWZpbmVkKE9QRU5CU0QpIHx8IGRlZmluZWQoQVJNMzIpIFwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGRlZmluZWQoTUlQUykgfHwgZGVmaW5lZChBVlIzMikpKSBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBkZWZpbmVkKE1JUFMpIHx8IGRlZmluZWQoQVZSMzIpIFwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGRlZmluZWQoTklPUzIpKSkgXAotICAgICAgfHwgKGRlZmluZWQoTElOVVgpICYmIChkZWZpbmVkKFNQQVJDKSB8fCBkZWZpbmVkKE02OEspKSkgXAotICAgICAgfHwgKChkZWZpbmVkKFJURU1TKSB8fCBkZWZpbmVkKFBMQVRGT1JNX0FORFJPSUQpKSAmJiBkZWZpbmVkKEkzODYpKSkgXAotICAgICAmJiAhZGVmaW5lZChOT19HRVRDT05URVhUKQotLS0gCi0yLjcuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmR3Z2MvYmR3Z2MvbXVzbF9oZWFkZXJfZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jkd2djL2Jkd2djL211c2xfaGVhZGVyX2ZpeC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTE4NDk2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jkd2djL2Jkd2djL211c2xfaGVhZGVyX2ZpeC5wYXRjaApAQCAtMCwwICsxLDI3IEBACitBZGQgbWlzc2luZyBoZWFkZXIgdG8gYXZvaWQ6CisKK3wgMTQ3MjY1OTYxMC4wMTYzNTU6IC4uL2dpdC9wdGhyZWFkX3N0b3Bfd29ybGQuYzogSW4gZnVuY3Rpb24gJ0dDX2JyaWVmX2FzeW5jX3NpZ25hbF9zYWZlX3NsZWVwJzoKK3wgMTQ3MjY1OTYxMC4wNTQwMjUyOiAuLi9naXQvcHRocmVhZF9zdG9wX3dvcmxkLmM6Mzk3OjIyOiBlcnJvcjogc3RvcmFnZSBzaXplIG9mICd0dicgaXNuJ3Qga25vd24KK3wgMTQ3MjY1OTYxMC4wNTQwMjUyOiAgICAgICAgc3RydWN0IHRpbWV2YWwgdHY7Cit8IDE0NzI2NTk2MTAuMDU0MDI1MjogICAgICAgICAgICAgICAgICAgICAgIF5+Cit8IDE0NzI2NTk2MTAuMDU0MDk5OiAuLi9naXQvcHRocmVhZF9zdG9wX3dvcmxkLmM6Mzk3OjIyOiB3YXJuaW5nOiB1bnVzZWQgdmFyaWFibGUgJ3R2JyBbLVd1bnVzZWQtdmFyaWFibGVdCit8IDE0NzI2NTk2MTAuMDU0MDk5OiAgICAgICAgc3RydWN0IHRpbWV2YWwgdHY7Cit8IDE0NzI2NTk2MTAuMDU0MDk5OiAgICAgICAgICAgICAgICAgICAgICAgXn4KK3wgMTQ3MjY1OTYxMC4wNTQwOTk6IE1ha2VmaWxlOjE1MzA6IHJlY2lwZSBmb3IgdGFyZ2V0ICdwdGhyZWFkX3N0b3Bfd29ybGQubG8nIGZhaWxlZAorCitpbiBtdXNsIGJ1aWxkcy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK0luZGV4OiBnaXQvcHRocmVhZF9zdG9wX3dvcmxkLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9wdGhyZWFkX3N0b3Bfd29ybGQuYworKysrIGdpdC9wdGhyZWFkX3N0b3Bfd29ybGQuYworQEAgLTQ1LDYgKzQ1LDcgQEAKKyAjaW5jbHVkZSA8c2VtYXBob3JlLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorKyNpbmNsdWRlIDxzeXMvdGltZS5oPgorICNpbmNsdWRlICJhdG9taWNfb3BzLmgiCisgCisgLyogSXQncyBzYWZlIHRvIGNhbGwgb3JpZ2luYWwgcHRocmVhZF9zaWdtYXNrKCkgaGVyZS4gICAqLwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jkd2djL2Jkd2djXzcuNC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jkd2djL2Jkd2djXzcuNC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDRkYWIzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iZHdnYy9iZHdnY183LjQuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLVNVTU1BUlkgPSAiQSBnYXJiYWdlIGNvbGxlY3RvciBmb3IgQyBhbmQgQysrIgotCi1ERVNDUklQVElPTiA9ICJUaGUgQm9laG0tRGVtZXJzLVdlaXNlciBjb25zZXJ2YXRpdmUgZ2FyYmFnZSBjb2xsZWN0b3IgY2FuIGJlXAotIHVzZWQgYXMgYSBnYXJiYWdlIGNvbGxlY3RpbmcgcmVwbGFjZW1lbnQgZm9yIEMgbWFsbG9jIG9yIEMrKyBuZXcuIEl0IGFsbG93c1wKLSB5b3UgdG8gYWxsb2NhdGUgbWVtb3J5IGJhc2ljYWxseSBhcyB5b3Ugbm9ybWFsbHkgd291bGQsIHdpdGhvdXQgZXhwbGljaXRseVwKLSBkZWFsbG9jYXRpbmcgbWVtb3J5IHRoYXQgaXMgbm8gbG9uZ2VyIHVzZWZ1bC4gVGhlIGNvbGxlY3RvciBhdXRvbWF0aWNhbGx5XAotIHJlY3ljbGVzIG1lbW9yeSB3aGVuIGl0IGRldGVybWluZXMgdGhhdCBpdCBjYW4gbm8gbG9uZ2VyIGJlIG90aGVyd2lzZVwKLSBhY2Nlc3NlZC5cCi0gIFRoZSBjb2xsZWN0b3IgaXMgYWxzbyB1c2VkIGJ5IGEgbnVtYmVyIG9mIHByb2dyYW1taW5nIGxhbmd1YWdlXAotIGltcGxlbWVudGF0aW9ucyB0aGF0IGVpdGhlciB1c2UgQyBhcyBpbnRlcm1lZGlhdGUgY29kZSwgd2FudCB0byBmYWNpbGl0YXRlXAotIGVhc2llciBpbnRlcm9wZXJhdGlvbiB3aXRoIEMgbGlicmFyaWVzLCBvciBqdXN0IHByZWZlciB0aGUgc2ltcGxlIGNvbGxlY3RvclwKLSBpbnRlcmZhY2UuXAotICBBbHRlcm5hdGl2ZWx5LCB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgbWF5IGJlIHVzZWQgYXMgYSBsZWFrIGRldGVjdG9yIGZvciBDXAotIG9yIEMrKyBwcm9ncmFtcywgdGhvdWdoIHRoYXQgaXMgbm90IGl0cyBwcmltYXJ5IGdvYWwuXAotICBFbXBpcmljYWxseSwgdGhpcyBjb2xsZWN0b3Igd29ya3Mgd2l0aCBtb3N0IHVubW9kaWZpZWQgQyBwcm9ncmFtcywgc2ltcGx5XAotIGJ5IHJlcGxhY2luZyBtYWxsb2Mgd2l0aCBHQ19tYWxsb2MgY2FsbHMsIHJlcGxhY2luZyByZWFsbG9jIHdpdGggR0NfcmVhbGxvY1wKLSBjYWxscywgYW5kIHJlbW92aW5nIGZyZWUgY2FsbHMuIgotCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lmhib2VobS5pbmZvL2djLyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRS5RVUlDSzttZDU9NTVmNTA4OGY5MGE5ODJmZWQ3YWY5YTQ4OTcwNDdlZjciCi0KLVNSQ1JFViA9ICJlMzFjZGMyODhmZmJlZTViZjI1Zjk0OGUxOWRlYjVhN2NlODQ2OTcxIgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2l2bWFpL2Jkd2djLmdpdDticmFuY2g9cmVsZWFzZS03XzQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWFkZC1jaGVjay1mb3ItTk9fR0VUQ09OVEVYVC1kZWZpbml0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItQWx0ZXJhLU5JT1MyLXN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICIKLQotRklMRVNfJHtQTn0tZG9jID0gIiR7ZGF0YWRpcn0iCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLUFSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotIyBieSBkZWZhdWx0IHVzZSBleHRlcm5hbCBsaWJhdG9taWMtb3BzCi1QQUNLQUdFQ09ORklHID8/PSAibGliYXRvbWljLW9wcyIKLVBBQ0tBR0VDT05GSUdbbGliYXRvbWljLW9wc10gPSAiLS13aXRoLWxpYmF0b21pYy1vcHM9eWVzLC0td2l0aC1saWJhdG9taWMtb3BzPW5vLGxpYmF0b21pYy1vcHMiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iZHdnYy9iZHdnY183LjYuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iZHdnYy9iZHdnY183LjYuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kY2I2OGYwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jkd2djL2Jkd2djXzcuNi4wLmJiCkBAIC0wLDAgKzEsNDIgQEAKK1NVTU1BUlkgPSAiQSBnYXJiYWdlIGNvbGxlY3RvciBmb3IgQyBhbmQgQysrIgorCitERVNDUklQVElPTiA9ICJUaGUgQm9laG0tRGVtZXJzLVdlaXNlciBjb25zZXJ2YXRpdmUgZ2FyYmFnZSBjb2xsZWN0b3IgY2FuIGJlXAorIHVzZWQgYXMgYSBnYXJiYWdlIGNvbGxlY3RpbmcgcmVwbGFjZW1lbnQgZm9yIEMgbWFsbG9jIG9yIEMrKyBuZXcuIEl0IGFsbG93c1wKKyB5b3UgdG8gYWxsb2NhdGUgbWVtb3J5IGJhc2ljYWxseSBhcyB5b3Ugbm9ybWFsbHkgd291bGQsIHdpdGhvdXQgZXhwbGljaXRseVwKKyBkZWFsbG9jYXRpbmcgbWVtb3J5IHRoYXQgaXMgbm8gbG9uZ2VyIHVzZWZ1bC4gVGhlIGNvbGxlY3RvciBhdXRvbWF0aWNhbGx5XAorIHJlY3ljbGVzIG1lbW9yeSB3aGVuIGl0IGRldGVybWluZXMgdGhhdCBpdCBjYW4gbm8gbG9uZ2VyIGJlIG90aGVyd2lzZVwKKyBhY2Nlc3NlZC5cCisgIFRoZSBjb2xsZWN0b3IgaXMgYWxzbyB1c2VkIGJ5IGEgbnVtYmVyIG9mIHByb2dyYW1taW5nIGxhbmd1YWdlXAorIGltcGxlbWVudGF0aW9ucyB0aGF0IGVpdGhlciB1c2UgQyBhcyBpbnRlcm1lZGlhdGUgY29kZSwgd2FudCB0byBmYWNpbGl0YXRlXAorIGVhc2llciBpbnRlcm9wZXJhdGlvbiB3aXRoIEMgbGlicmFyaWVzLCBvciBqdXN0IHByZWZlciB0aGUgc2ltcGxlIGNvbGxlY3RvclwKKyBpbnRlcmZhY2UuXAorICBBbHRlcm5hdGl2ZWx5LCB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgbWF5IGJlIHVzZWQgYXMgYSBsZWFrIGRldGVjdG9yIGZvciBDXAorIG9yIEMrKyBwcm9ncmFtcywgdGhvdWdoIHRoYXQgaXMgbm90IGl0cyBwcmltYXJ5IGdvYWwuXAorICBFbXBpcmljYWxseSwgdGhpcyBjb2xsZWN0b3Igd29ya3Mgd2l0aCBtb3N0IHVubW9kaWZpZWQgQyBwcm9ncmFtcywgc2ltcGx5XAorIGJ5IHJlcGxhY2luZyBtYWxsb2Mgd2l0aCBHQ19tYWxsb2MgY2FsbHMsIHJlcGxhY2luZyByZWFsbG9jIHdpdGggR0NfcmVhbGxvY1wKKyBjYWxscywgYW5kIHJlbW92aW5nIGZyZWUgY2FsbHMuIgorCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lmhib2VobS5pbmZvL2djLyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRS5RVUlDSzttZDU9NGY4MWYyNGVjNjk3MjZjMzEyNDg3YzJhYzc0MGU5ZTMiCisKK1NSQ1JFViA9ICI4YWMxZDg0YTQwZWI3YTQzMWZlYzFiODA5N2UzZjI0YjQ4ZmIyM2ZhIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2l2bWFpL2Jkd2djLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1hZGQtY2hlY2stZm9yLU5PX0dFVENPTlRFWFQtZGVmaW5pdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9tdXNsX2hlYWRlcl9maXgucGF0Y2ggXAorICAgICAgICAgICIKKworRklMRVNfJHtQTn0tZG9jID0gIiR7ZGF0YWRpcn0iCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0FSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworIyBieSBkZWZhdWx0IHVzZSBleHRlcm5hbCBsaWJhdG9taWMtb3BzCitQQUNLQUdFQ09ORklHID8/PSAibGliYXRvbWljLW9wcyIKK1BBQ0tBR0VDT05GSUdbbGliYXRvbWljLW9wc10gPSAiLS13aXRoLWxpYmF0b21pYy1vcHM9eWVzLC0td2l0aC1saWJhdG9taWMtb3BzPW5vLGxpYmF0b21pYy1vcHMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ibWFwLXRvb2xzL2JtYXAtdG9vbHNfMy4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2JtYXAtdG9vbHMvYm1hcC10b29sc18zLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTEwZjVmZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ibWFwLXRvb2xzL2JtYXAtdG9vbHNfMy4yLmJiCkBAIC0wLDAgKzEsMjQgQEAKK1NVTU1BUlkgPSAiVG9vbHMgdG8gZ2VuZXJhdGUgYmxvY2sgbWFwIChBS0EgYm1hcCkgYW5kIGZsYXNoIGltYWdlcyB1c2luZyBibWFwIgorREVTQ1JJUFRJT04gPSAiQm1hcC10b29scyAtIHRvb2xzIHRvIGdlbmVyYXRlIGJsb2NrIG1hcCAoQUtBIGJtYXApIGFuZCBmbGFzaCBpbWFnZXMgdXNpbmcgXAorYm1hcC4gQm1hcHRvb2wgaXMgYSBnZW5lcmljIHRvb2wgZm9yIGNyZWF0aW5nIHRoZSBibG9jayBtYXAgKGJtYXApIGZvciBhIGZpbGUsIFwKK2FuZCBjb3B5aW5nIGZpbGVzIHVzaW5nIHRoZSBibG9jayBtYXAuIFRoZSBpZGVhIGlzIHRoYXQgbGFyZ2UgZmlsZSBjb250YWluaW5nIFwKK3VudXNlZCBibG9ja3MsIGxpa2UgcmF3IHN5c3RlbSBpbWFnZSBmaWxlcywgY2FuIGJlIGNvcGllZCBvciBmbGFzaGVkIGEgbG90IFwKK2Zhc3RlciB3aXRoIGJtYXB0b29sIHRoYW4gd2l0aCB0cmFkaXRpb25hbCB0b29scyBsaWtlICJkZCIgb3IgImNwIi4iCitIT01FUEFHRSA9ICJodHRwOi8vZ2l0LmluZnJhZGVhZC5vcmcvdXNlcnMvZGVkZWtpbmQvYm1hcC10b29scy5naXQiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKK1NSQ19VUkkgPSAiZnRwOi8vZnRwLmluZnJhZGVhZC5vcmcvcHViLyR7QlBOfS8ke0JQTn0tJHtQVn0udGd6IgorU1JDX1VSSVttZDVzdW1dID0gIjkyY2RhZDFjYjRkZmEwY2NhNzE3NmM4ZTIyNzUyNjE2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImNjNmM3ZjdkYzBhMzdlMmEzMmRlYjEyNzMwOGUyNGU2YzRiODBiZmI1NGYzODAzYzMwOGVmYWIwMmJmMmQ0MzQiCisKK1JERVBFTkRTXyR7UE59ID0gInB5dGhvbi1jb3JlIHB5dGhvbi1jb21wcmVzc2lvbiIKKworaW5oZXJpdCBzZXR1cHRvb2xzCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisgICAgc2VkIC1pIC1lICdzfF4jIS4qL3Vzci9iaW4vZW52IHB5dGhvbnwjISAvdXNyL2Jpbi9lbnYgbmF0aXZlcHl0aG9ufCcgJHtEfSR7YmluZGlyfS9ibWFwdG9vbAorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2JqYW0tbmF0aXZlXzEuNjAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9iamFtLW5hdGl2ZV8xLjYxLjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9iamFtLW5hdGl2ZV8xLjYwLjAuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9iamFtLW5hdGl2ZV8xLjYxLjAuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjYwLjAuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LTEuNjAuMC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzODY5M2UuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LTEuNjAuMC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi0jIFRoZSBCb29zdCB3ZWIgc2l0ZSBwcm92aWRlcyBmcmVlIHBlZXItcmV2aWV3ZWQgcG9ydGFibGUKLSMgQysrIHNvdXJjZSBsaWJyYXJpZXMuIFRoZSBlbXBoYXNpcyBpcyBvbiBsaWJyYXJpZXMgd2hpY2gKLSMgd29yayB3ZWxsIHdpdGggdGhlIEMrKyBTdGFuZGFyZCBMaWJyYXJ5LiBUaGUgbGlicmFyaWVzIGFyZQotIyBpbnRlbmRlZCB0byBiZSB3aWRlbHkgdXNlZnVsLCBhbmQgYXJlIGluIHJlZ3VsYXIgdXNlIGJ5Ci0jIHRob3VzYW5kcyBvZiBwcm9ncmFtbWVycyBhY3Jvc3MgYSBicm9hZCBzcGVjdHJ1bSBvZiBhcHBsaWNhdGlvbnMuCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmJvb3N0Lm9yZy8iCi1MSUNFTlNFID0gIkJTTC0xLjAgJiBNSVQgJiBQeXRob24tMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRV8xXzAudHh0O21kNT1lNDIyNGNjYWVjYjE0ZDk0MmM3MWQzMWJlZjIwZDc4YyIKLQotQk9PU1RfVkVSID0gIiR7QCJfIi5qb2luKGQuZ2V0VmFyKCJQViIsMSkuc3BsaXQoIi4iKSl9IgotQk9PU1RfTUFKID0gIiR7QCJfIi5qb2luKGQuZ2V0VmFyKCJQViIsMSkuc3BsaXQoIi4iKVswOjJdKX0iCi1CT09TVF9QID0gImJvb3N0XyR7Qk9PU1RfVkVSfSIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vYm9vc3QvJHtCT09TVF9QfS50YXIuYnoyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNjVhODQwZTFhMGIxM2E1NThmZjE5ZWViMmM0ZjBjYmUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjg2YWZmZmY5ODlhYzI0ODhmNzlhOTdiOTQ3OWVmYjlmMmFiYWUwMzViNWVkNGQ4MjI2ZGU2ODU3OTMzZmQzYiIKLQotUyA9ICIke1dPUktESVJ9LyR7Qk9PU1RfUH0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QtMS42MS4wLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjYxLjAuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkOWQ4YTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QtMS42MS4wLmluYwpAQCAtMCwwICsxLDE5IEBACisjIFRoZSBCb29zdCB3ZWIgc2l0ZSBwcm92aWRlcyBmcmVlIHBlZXItcmV2aWV3ZWQgcG9ydGFibGUKKyMgQysrIHNvdXJjZSBsaWJyYXJpZXMuIFRoZSBlbXBoYXNpcyBpcyBvbiBsaWJyYXJpZXMgd2hpY2gKKyMgd29yayB3ZWxsIHdpdGggdGhlIEMrKyBTdGFuZGFyZCBMaWJyYXJ5LiBUaGUgbGlicmFyaWVzIGFyZQorIyBpbnRlbmRlZCB0byBiZSB3aWRlbHkgdXNlZnVsLCBhbmQgYXJlIGluIHJlZ3VsYXIgdXNlIGJ5CisjIHRob3VzYW5kcyBvZiBwcm9ncmFtbWVycyBhY3Jvc3MgYSBicm9hZCBzcGVjdHJ1bSBvZiBhcHBsaWNhdGlvbnMuCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmJvb3N0Lm9yZy8iCitMSUNFTlNFID0gIkJTTC0xLjAgJiBNSVQgJiBQeXRob24tMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRV8xXzAudHh0O21kNT1lNDIyNGNjYWVjYjE0ZDk0MmM3MWQzMWJlZjIwZDc4YyIKKworQk9PU1RfVkVSID0gIiR7QCJfIi5qb2luKGQuZ2V0VmFyKCJQViIsIFRydWUpLnNwbGl0KCIuIikpfSIKK0JPT1NUX01BSiA9ICIke0AiXyIuam9pbihkLmdldFZhcigiUFYiLCBUcnVlKS5zcGxpdCgiLiIpWzA6Ml0pfSIKK0JPT1NUX1AgPSAiYm9vc3RfJHtCT09TVF9WRVJ9IgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9ib29zdC8ke0JPT1NUX1B9LnRhci5iejIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2MDk1ODc2MzQxOTU2ZjY1ZjlkMzU5MzljY2VhMWE5ZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhNTQ3YmQwNmMyZmQ5YTcxYmExZDE2OWQ5Y2YwMzM5ZGE3ZWJmNDc1Mzg0OWE4ZjdkNmZkYjhmZWVlOTliNjQwIgorCitTID0gIiR7V09SS0RJUn0vJHtCT09TVF9QfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QuaW5jCmluZGV4IDk4MjQ0NmMuLmVmMTY1MzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LmluYwpAQCAtOCwxMSArOCwxNCBAQAogQk9PU1RfTElCUyA9ICJcCiAJYXRvbWljIFwKIAljaHJvbm8gXAorCWNvbnRhaW5lciBcCiAJZGF0ZV90aW1lIFwKKwlleGNlcHRpb24gXAogCWZpbGVzeXN0ZW0gXAogCWdyYXBoIFwKIAlpb3N0cmVhbXMgXAogCWxvZyBcCisJbWF0aCBcCiAJcHJvZ3JhbV9vcHRpb25zIFwKIAlyYW5kb20gXAogCXJlZ2V4IFwKQEAgLTIyLDEyICsyNSwzMCBAQAogCXRpbWVyIFwKIAl0ZXN0IFwKIAl0aHJlYWQgXAorCXdhdmUgXAogCSIKIAotIyBvcHRpb25hbCBib29zdC1weXRob24gbGlicmFyeQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKKyMgb25seSBzdXBwb3J0ZWQgYnkgeDg2IGFuZCBwb3dlcnBjCitCT09TVF9MSUJTX2FwcGVuZF94ODYgPSAiIGNvbnRleHQgY29yb3V0aW5lIgorQk9PU1RfTElCU19hcHBlbmRfeDg2LTY0ID0gIiBjb250ZXh0IGNvcm91dGluZSIKK0JPT1NUX0xJQlNfYXBwZW5kX3Bvd2VycGMgPSAiIGNvbnRleHQgY29yb3V0aW5lIgorIyBuZWVkIGNvbnNpc3RlbnQgc2V0dGluZ3MgZm9yIG5hdGl2ZSBidWlsZHMgKHg4NiBvdmVycmlkZSBub3QgYXBwbGllZCBmb3IgbmF0aXZlKQorQk9PU1RfTElCU19yZW1vdmVfY2xhc3MtbmF0aXZlID0gIiBjb250ZXh0IGNvcm91dGluZSIKKworIyBvcHRpb25hbCBsaWJyYXJpZXMKK1BBQ0tBR0VDT05GSUcgPz89ICJsb2NhbGUiCitQQUNLQUdFQ09ORklHW2xvY2FsZV0gPSAiLCxpY3UiCitQQUNLQUdFQ09ORklHW2dyYXBoX3BhcmFsbGVsXSA9ICIsLCxib29zdC1tcGkgbXBpY2giCitQQUNLQUdFQ09ORklHW21waV0gPSAiLCxtcGljaCIKIFBBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICIsLHB5dGhvbiBweXRob24zIgotQk9PU1RfTElCUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgJ3B5dGhvbiBweXRob24zJywgJycsIGQpfSIKKworQk9PU1RfTElCUyArPSAiXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2xvY2FsZScsICdsb2NhbGUnLCAnJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncmFwaF9wYXJhbGxlbCcsICdncmFwaF9wYXJhbGxlbCBtcGknLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbXBpJywgJ21waScsICcnLCBkKSwgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24nLCAncHl0aG9uIHB5dGhvbjMnLCAnJywgZCl9IFwKKyIKKwogaW5oZXJpdCBweXRob24tZGlyCiBQWVRIT05fUk9PVCA9ICIke1NUQUdJTkdfRElSX0hPU1R9LyR7cHJlZml4fSIKIApAQCAtNTQsNiArNzUsMTAgQEAKIH0KIAogIyBPdmVycmlkZSB0aGUgY29udGVudHMgb2Ygc3BlY2lmaWMgcGFja2FnZXMKK0ZJTEVTXyR7UE59LWdyYXBoID0gIiR7bGliZGlyfS9saWJib29zdF9ncmFwaC5zby4qIgorRklMRVNfJHtQTn0tZ3JhcGhfcGFyYWxsZWwgPSAiJHtsaWJkaXJ9L2xpYmJvb3N0X2dyYXBoX3BhcmFsbGVsLnNvLioiCitGSUxFU18ke1BOfS1sb2NhbGUgPSAiJHtsaWJkaXJ9L2xpYmJvb3N0X2xvY2FsZS5zby4qIgorRklMRVNfJHtQTn0tbXBpID0gIiR7bGliZGlyfS9tcGkuc28gJHtsaWJkaXJ9L2xpYmJvb3N0X21waSouc28uKiIKIEZJTEVTX2Jvb3N0LXNlcmlhbGl6YXRpb24gPSAiJHtsaWJkaXJ9L2xpYmJvb3N0X3NlcmlhbGl6YXRpb24qLnNvLiogXAogCSR7bGliZGlyfS9saWJib29zdF93c2VyaWFsaXphdGlvbiouc28uKiIKIEZJTEVTX2Jvb3N0LXRlc3QgPSAiJHtsaWJkaXJ9L2xpYmJvb3N0X3ByZ19leGVjX21vbml0b3IqLnNvLiogXApAQCAtMTQyLDcgKzE2Nyw3IEBACiBCT09TVF9QQVJBTExFTF9NQUtFID0gIiR7QGdldF9ib29zdF9wYXJhbGxlbF9tYWtlKGQpfSIKIEJKQU1fT1BUUyAgICA9ICcke0JPT1NUX1BBUkFMTEVMX01BS0V9IC1kKzIgLXEgXAogCQkke0JKQU1fVE9PTFN9IFwKLQkJLXNCT09TVF9CVUlMRF9VU0VSX0NPTkZJRz0ke1N9L3Rvb2xzL2J1aWxkL2V4YW1wbGUvdXNlci1jb25maWcuamFtIFwKKwkJLXNCT09TVF9CVUlMRF9VU0VSX0NPTkZJRz0ke1dPUktESVJ9L3VzZXItY29uZmlnLmphbSBcCiAJCS0tYnVpbGQtZGlyPSR7U30vJHtUQVJHRVRfU1lTfSBcCiAJCS0tZGlzYWJsZS1pY3UgXAogCQkke0JKQU1fRVhUUkF9JwpAQCAtMTUwLDI1ICsxNzUsMjYgQEAKICMgTmF0aXZlIGNvbXBpbGF0aW9uIG9mIGJ6aXAyIGlzbid0IHdvcmtpbmcKIEJKQU1fT1BUU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gJyAtc05PX0JaSVAyPTEnCiAKLWRvX2Jvb3N0Y29uZmlnKCkgewotCWNwIC1mIGJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9saW51eC5ocHAgYm9vc3QvY29uZmlnL3BsYXRmb3JtL2xpbnV4LWdudWVhYmkuaHBwCitkb19jb25maWd1cmUoKSB7CisJY3AgLWYgJHtTfS9ib29zdC9jb25maWcvcGxhdGZvcm0vbGludXguaHBwICR7U30vYm9vc3QvY29uZmlnL3BsYXRmb3JtL2xpbnV4LWdudWVhYmkuaHBwCiAKIAkjIEQyMTk0OkZpeGluZyB0aGUgZmFpbHVyZSBvZiAiZXJyb3I6IGR1cGxpY2F0ZSBpbml0aWFsaXphdGlvbiBvZiBnY2Mgd2l0aCB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnMiIGR1cmluZyBjb21waWxhdGlvbi4KLQlzZWQgLWkgIi9edXNpbmcgZ2NjIDogNC4zLjEvZCIgJHtTfS90b29scy9idWlsZC9leGFtcGxlL3VzZXItY29uZmlnLmphbQotCXNlZCAtaSAiL151c2luZyBweXRob24gOiAke1BZVEhPTl9CQVNFVkVSU0lPTn0iL2QgJHtTfS90b29scy9idWlsZC9leGFtcGxlL3VzZXItY29uZmlnLmphbQotCWVjaG8gJ3VzaW5nIGdjYyA6IDQuMy4xIDogJHtDWFh9IDogPGNmbGFncz4iJHtDRkxBR1N9IiA8Y3h4ZmxhZ3M+IiR7Q1hYRkxBR1N9IiA8bGlua2ZsYWdzPiIke0xERkxBR1N9IiA7JyA+PiAke1N9L3Rvb2xzL2J1aWxkL2V4YW1wbGUvdXNlci1jb25maWcuamFtCi0JZWNobyAidXNpbmcgcHl0aG9uIDogJHtQWVRIT05fQkFTRVZFUlNJT059IDogOiAke1NUQUdJTkdfSU5DRElSfS9weXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0gOyIgPj4gJHtTfS90b29scy9idWlsZC9leGFtcGxlL3VzZXItY29uZmlnLmphbQotCWVjaG8gInVzaW5nIHB5dGhvbiA6IDMuNSA6IDogJHtTVEFHSU5HX0lOQ0RJUn0vcHl0aG9uMy41bSA7IiA+PiAke1N9L3Rvb2xzL2J1aWxkL2V4YW1wbGUvdXNlci1jb25maWcuamFtCisJcm0gLWYgJHtXT1JLRElSfS91c2VyLWNvbmZpZy5qYW0KKwllY2hvICd1c2luZyBnY2MgOiA0LjMuMSA6ICR7Q1hYfSA6IDxjZmxhZ3M+IiR7Q0ZMQUdTfSIgPGN4eGZsYWdzPiIke0NYWEZMQUdTfSIgPGxpbmtmbGFncz4iJHtMREZMQUdTfSIgOycgPj4gJHtXT1JLRElSfS91c2VyLWNvbmZpZy5qYW0KKwllY2hvICJ1c2luZyBweXRob24gOiAke1BZVEhPTl9CQVNFVkVSU0lPTn0gOiA6ICR7U1RBR0lOR19JTkNESVJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfSA7IiA+PiAke1dPUktESVJ9L3VzZXItY29uZmlnLmphbQorCWVjaG8gInVzaW5nIHB5dGhvbiA6IDMuNSA6IDogJHtTVEFHSU5HX0lOQ0RJUn0vcHl0aG9uMy41bSA7IiA+PiAke1dPUktESVJ9L3VzZXItY29uZmlnLmphbQorCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0JPT1NUX0xJQlMnLCAnbXBpJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJZWNobyAidXNpbmcgbXBpIDogOiA8ZmluZC1zaGFyZWQtbGlicmFyeT5tcGkgOyIgPj4gJHtXT1JLRElSfS91c2VyLWNvbmZpZy5qYW0KKwlmaQogCiAJQ0M9IiR7QlVJTERfQ0N9IiBDRkxBR1M9IiR7QlVJTERfQ0ZMQUdTfSIgLi9ib290c3RyYXAuc2ggLS13aXRoLWJqYW09YmphbSAtLXdpdGgtdG9vbHNldD1nY2MgLS13aXRoLXB5dGhvbi1yb290PSR7UFlUSE9OX1JPT1R9Ci0Jc2VkIC1pICcvXnVzaW5nIHB5dGhvbi9kJyBwcm9qZWN0LWNvbmZpZy5qYW0KKwlzZWQgLWkgJy9edXNpbmcgcHl0aG9uL2QnICR7U30vcHJvamVjdC1jb25maWcuamFtCiB9CiAKLWRvX2Jvb3N0Y29uZmlnW2RpcnNdID0gIiR7U30iCi1hZGR0YXNrIGRvX2Jvb3N0Y29uZmlnIGFmdGVyIGRvX3BhdGNoIGJlZm9yZSBkb19jb25maWd1cmUKLQogZG9fY29tcGlsZSgpIHsKIAlzZXQgLWV4CisJcm0gLXJmICR7U30vJHtUQVJHRVRfU1lTfQogCWJqYW0gJHtCSkFNX09QVFN9IC0tcHJlZml4PSR7cHJlZml4fSBcCiAJCS0tZXhlYy1wcmVmaXg9JHtleGVjX3ByZWZpeH0gXAogCQktLWxpYmRpcj0ke2xpYmRpcn0gXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LzAwMDEtRG8tbm90LXF1YWxpZnktZmVudi5oLW5hbWVzLXRoYXQtbWlnaHQtYmUtbWFjcm9zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LzAwMDEtRG8tbm90LXF1YWxpZnktZmVudi5oLW5hbWVzLXRoYXQtbWlnaHQtYmUtbWFjcm9zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjdlNzFmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAxLURvLW5vdC1xdWFsaWZ5LWZlbnYuaC1uYW1lcy10aGF0LW1pZ2h0LWJlLW1hY3Jvcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLUZyb20gZjUwZTdiYzlmZWQzMjNjNTcwNWMwZWQ5OTJjMDNlODBlZWVjMWRkNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEpvbmF0aGFuIFdha2VseSA8andha2VseUByZWRoYXQuY29tPgotRGF0ZTogTW9uLCAxNCBTZXAgMjAxNSAxNTowNToyNCArMDEwMAotU3ViamVjdDogW1BBVENIXSBEbyBub3QgcXVhbGlmeSA8ZmVudi5oPiBuYW1lcyB0aGF0IG1pZ2h0IGJlIG1hY3Jvcy4KLQotVGhlIHBhdGNoIHdhcyBpbXBvcnRlZCBmcm9tIHRoZSBib29zdC10ZXN0IGdpdCByZXBvc2l0b3J5Ci0oaHR0cHM6Ly9naXRodWIuY29tL2Jvb3N0b3JnL3Rlc3QpIGFzIG9mIGNvbW1pdCBpZAotZjUwZTdiYzlmZWQzMjNjNTcwNWMwZWQ5OTJjMDNlODBlZWVjMWRkNi4KLSAgCi1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFtjb21taXQgZjUwZTdiYzlmZWQgaW4gZGV2ZWxvcCBicmFuY2hdCi0KLVNpZ25lZC1vZmYtYnk6IEx1a2FzIEJ1bHdhaG4gPGx1a2FzLmJ1bHdhaG5Ab3NzLmJtdy1jYXJpdC5kZT4KLS0tLQotIGluY2x1ZGUvYm9vc3QvdGVzdC9pbXBsL2V4ZWN1dGlvbl9tb25pdG9yLmlwcCB8IDggKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9ib29zdC90ZXN0L2ltcGwvZXhlY3V0aW9uX21vbml0b3IuaXBwIGIvaW5jbHVkZS9ib29zdC90ZXN0L2ltcGwvZXhlY3V0aW9uX21vbml0b3IuaXBwCi1pbmRleCBiM2U4NzNlLi5hN2JkY2UyIDEwMDY0NAotLS0tIGEvaW5jbHVkZS9ib29zdC90ZXN0L2ltcGwvZXhlY3V0aW9uX21vbml0b3IuaXBwCi0rKysgYi9pbmNsdWRlL2Jvb3N0L3Rlc3QvaW1wbC9leGVjdXRpb25fbW9uaXRvci5pcHAKLUBAIC0xMzgwLDggKzEzODAsOCBAQCBlbmFibGUoIHVuc2lnbmVkIG1hc2sgKQotIAotICAgICByZXR1cm4gfm9sZF9jdyAmIEJPT1NUX0ZQRV9BTEw7Ci0gI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIGRlZmluZWQoX19VU0VfR05VKSAmJiAhZGVmaW5lZChCT09TVF9DTEFORykgJiYgIWRlZmluZWQoQk9PU1RfTk9fRkVOVl9IKQotLSAgICA6OmZlY2xlYXJleGNlcHQoQk9PU1RfRlBFX0FMTCk7Ci0tICAgIGludCByZXMgPSA6OmZlZW5hYmxlZXhjZXB0KCBtYXNrICk7Ci0rICAgIGZlY2xlYXJleGNlcHQoQk9PU1RfRlBFX0FMTCk7Ci0rICAgIGludCByZXMgPSBmZWVuYWJsZWV4Y2VwdCggbWFzayApOwotICAgICByZXR1cm4gcmVzID09IC0xID8gKHVuc2lnbmVkKUJPT1NUX0ZQRV9JTlYgOiAodW5zaWduZWQpcmVzOwotICNlbHNlCi0gICAgIC8qIE5vdCBJbXBsZW1lbnRlZCAgKi8KLUBAIC0xNDE3LDggKzE0MTcsOCBAQCBkaXNhYmxlKCB1bnNpZ25lZCBtYXNrICkKLSAKLSAgICAgcmV0dXJuIH5vbGRfY3cgJiBCT09TVF9GUEVfQUxMOwotICNlbGlmIGRlZmluZWQoX19HTElCQ19fKSAmJiBkZWZpbmVkKF9fVVNFX0dOVSkgJiYgIWRlZmluZWQoQk9PU1RfQ0xBTkcpICYmICFkZWZpbmVkKEJPT1NUX05PX0ZFTlZfSCkKLS0gICAgOjpmZWNsZWFyZXhjZXB0KEJPT1NUX0ZQRV9BTEwpOwotLSAgICBpbnQgcmVzID0gOjpmZWRpc2FibGVleGNlcHQoIG1hc2sgKTsKLSsgICAgZmVjbGVhcmV4Y2VwdChCT09TVF9GUEVfQUxMKTsKLSsgICAgaW50IHJlcyA9IGZlZGlzYWJsZWV4Y2VwdCggbWFzayApOwotICAgICByZXR1cm4gcmVzID09IC0xID8gKHVuc2lnbmVkKUJPT1NUX0ZQRV9JTlYgOiAodW5zaWduZWQpcmVzOwotICNlbHNlCi0gICAgIC8qIE5vdCBJbXBsZW1lbnRlZCAqLwotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMS1ib29zdC1hc2lvLWRldGFpbC1zb2NrZXRfdHlwZXMuaHBwLWZpeC1wb2xsLmgtaW5jbHVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LzAwMDEtYm9vc3QtYXNpby1kZXRhaWwtc29ja2V0X3R5cGVzLmhwcC1maXgtcG9sbC5oLWluY2x1ZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTg1YWFjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LzAwMDEtYm9vc3QtYXNpby1kZXRhaWwtc29ja2V0X3R5cGVzLmhwcC1maXgtcG9sbC5oLWluY2x1ZC5wYXRjaApAQCAtMCwwICsxLDQ5IEBACitGcm9tIDQwMTkyMzAxMTMwZGNkOTEzYWE2ZDljYjlkYmE5ZTVmOGRiZDlkMTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcj1DMz1BOT0yMERyYXN6aWs/PSA8YWRyYXN6aWtAdHljb2ludC5jb20+CitEYXRlOiBXZWQsIDI0IEF1ZyAyMDE2IDIxOjAxOjQzICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMS80XSB1c2UgUE9TSVggcG9sbC5oIGluc3RlYWQgb2Ygc3lzL3BvbGwuaAorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitQT1NJWCBzcGVjaWZpZXMgdGhhdCA8cG9sbC5oPiBpcyB0aGUgY29ycmVjdCBoZWFkZXIgdG8KK2luY2x1ZGUgZm9yIHBvbGwoKQorICBodHRwOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvMDA5Njk1Mzk5L2Z1bmN0aW9ucy9wb2xsLmh0bWwKK3doZXJlYXMgPHN5cy9wb2xsLmg+IGlzIG9ubHkgbmVlZGVkIGZvciBhbmNpZW50IGdsaWJjICg8Mi4zKSwKK3NvIGxldCdzIGZvbGxvdyBQT1NJWCBpbnN0ZWFkLgorCitBcyBhIHNpZGUtZWZmZWN0LCB0aGlzIHNpbGVuY2VzIGEgd2FybmluZyB3aGVuIGNvbXBpbGluZworYWdhaW5zdCB0aGUgbXVzbCBDLWxpYnJhcnk6CisKK0luIGZpbGUgaW5jbHVkZWQgZnJvbSAuL2Jvb3N0L2FzaW8vZGV0YWlsL3NvY2tldF90eXBlcy5ocHA6NjE6MCwKKyAgICAgICAgICAgICAgICAgZnJvbSAuL2Jvb3N0L2FzaW8vaXAvYWRkcmVzc192NC5ocHA6MjEsCisgICAgICAgICAgICAgICAgIGZyb20gLi9ib29zdC9hc2lvL2lwL2FkZHJlc3MuaHBwOjIxLAorICAgICAgICAgICAgICAgICBmcm9tIGxpYnMvbG9nL3NyYy9pbml0X2Zyb21fc2V0dGluZ3MuY3BwOjY1OgorPHN5c3Jvb3Q+L3Vzci9pbmNsdWRlL3N5cy9wb2xsLmg6MToyOiB3YXJuaW5nOiAjd2FybmluZyByZWRpcmVjdGluZyBpbmNvcnJlY3QgI2luY2x1ZGUgPHN5cy9wb2xsLmg+IHRvIDxwb2xsLmg+IFstV2NwcF0KKyAjd2FybmluZyByZWRpcmVjdGluZyBpbmNvcnJlY3QgI2luY2x1ZGUgPHN5cy9wb2xsLmg+IHRvIDxwb2xsLmg+CisgIF5+fn5+fn4KKworZXRjLgorCitTaWduZWQtb2ZmLWJ5OiBBbmRyw6kgRHJhc3ppayA8YWRyYXN6aWtAdHljb2ludC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIGh0dHBzOi8vc3ZuLmJvb3N0Lm9yZy90cmFjL2Jvb3N0L3RpY2tldC8xMjQxOQorIGJvb3N0L2FzaW8vZGV0YWlsL3NvY2tldF90eXBlcy5ocHAgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9ib29zdC9hc2lvL2RldGFpbC9zb2NrZXRfdHlwZXMuaHBwIGIvYm9vc3QvYXNpby9kZXRhaWwvc29ja2V0X3R5cGVzLmhwcAoraW5kZXggZThjNzEwOS4uN2U2NWQzYyAxMDA2NDQKKy0tLSBhL2Jvb3N0L2FzaW8vZGV0YWlsL3NvY2tldF90eXBlcy5ocHAKKysrKyBiL2Jvb3N0L2FzaW8vZGV0YWlsL3NvY2tldF90eXBlcy5ocHAKK0BAIC01OCw3ICs1OCw3IEBACisgI2Vsc2UKKyAjIGluY2x1ZGUgPHN5cy9pb2N0bC5oPgorICMgaWYgIWRlZmluZWQoX19TWU1CSUFOMzJfXykKKy0jICBpbmNsdWRlIDxzeXMvcG9sbC5oPgorKyMgIGluY2x1ZGUgPHBvbGwuaD4KKyAjIGVuZGlmCisgIyBpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjIGluY2x1ZGUgPHN5cy9zdGF0Lmg+CistLSAKKzIuOS4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAyLWJvb3N0LXRlc3QtZXhlY3V0aW9uX21vbml0b3IuaHBwLWZpeC1taXBzLXNvZnQtZmxvYXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMi1ib29zdC10ZXN0LWV4ZWN1dGlvbl9tb25pdG9yLmhwcC1maXgtbWlwcy1zb2Z0LWZsb2F0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2OWM5ODcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMi1ib29zdC10ZXN0LWV4ZWN1dGlvbl9tb25pdG9yLmhwcC1maXgtbWlwcy1zb2Z0LWZsb2F0LnBhdGNoCkBAIC0wLDAgKzEsMTQ1IEBACitGcm9tIDVjMzQ5YTFjMzkxYzljZTE3MWExYzgwZjUxNjRmYWU3NjRmMjdkYmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcj1DMz1BOT0yMERyYXN6aWs/PSA8YWRyYXN6aWtAdHljb2ludC5jb20+CitEYXRlOiBXZWQsIDI0IEF1ZyAyMDE2IDIwOjU4OjU5ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMi80XSBib29zdC90ZXN0L2V4ZWN1dGlvbl9tb25pdG9yLmhwcDogZml4IG1pcHMgc29mdCBmbG9hdAorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitnY2MuY29tcGlsZS5jKysgPGJ1aWxkZGlyPi9ib29zdC9iaW4udjIvbGlicy90ZXN0L2J1aWxkL2djYy00LjMuMS9yZWxlYXNlL3RocmVhZGluZy1tdWx0aS9leGVjdXRpb25fbW9uaXRvci5vCisKKyAgICAibWlwc2VsLXBva3ktbGludXgtbXVzbC1nKysiICItbWVsIiAiLW1hYmk9MzIiICItbXNvZnQtZmxvYXQiICItbWFyY2g9bWlwczMycjIiICItbWlwczE2IiAiLW1pbnRlcmxpbmstY29tcHJlc3NlZCIgIi1tdHVuZT0yNGtlYyIgIi1tZHNwIiAiLVdsLC1PMSIgIi1XbCwtLWFzLW5lZWRlZCIgIi1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZyIgIi1XbCwteixyZWxybywteixub3ciICItLXN5c3Jvb3Q9PHN5c3Jvb3Q+IiAgLWZ0ZW1wbGF0ZS1kZXB0aC0xMjggLU8yIC1waXBlIC1nIC1mZWxpbWluYXRlLXVudXNlZC1kZWJ1Zy10eXBlcyAtZmRlYnVnLXByZWZpeC1tYXA9PHNyY2Rpcj49L3Vzci9zcmMvZGVidWcvYm9vc3QvMS42MS4wLXIwIC1mZGVidWctcHJlZml4LW1hcD08c3lzcm9vdF9ob3N0Pj0gLWZkZWJ1Zy1wcmVmaXgtbWFwPTxzeXNyb290Pj0gLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nIC1waWUgLWZwaWUgLURfRk9SVElGWV9TT1VSQ0U9MiAtV2Zvcm1hdCAtV2Zvcm1hdC1zZWN1cml0eSAtV2Vycm9yPWZvcm1hdC1zZWN1cml0eSAtZnZpc2liaWxpdHktaW5saW5lcy1oaWRkZW4gLU8zIC1maW5saW5lLWZ1bmN0aW9ucyAtV25vLWlubGluZSAtV2FsbCAtcGVkYW50aWMgLXB0aHJlYWQgLWZQSUMgLVduby12YXJpYWRpYy1tYWNyb3MgLURCT09TVF9BTExfTk9fTElCPTEgLURCT09TVF9DSFJPTk9fRFlOX0xJTks9MSAtREJPT1NUX1NZU1RFTV9EWU5fTElOSz0xIC1EQk9PU1RfU1lTVEVNX05PX0RFUFJFQ0FURUQgLURCT09TVF9URVNUX0RZTl9MSU5LPTEgLURCT09TVF9USU1FUl9EWU5fTElOSz0xIC1ETkRFQlVHICAtSSIuIiAtYyAtbyAiPGJ1aWxkZGlyPi9ib29zdC9iaW4udjIvbGlicy90ZXN0L2J1aWxkL2djYy00LjMuMS9yZWxlYXNlL3RocmVhZGluZy1tdWx0aS9leGVjdXRpb25fbW9uaXRvci5vIiAibGlicy90ZXN0L3NyYy9leGVjdXRpb25fbW9uaXRvci5jcHAiCisKK0luIGZpbGUgaW5jbHVkZWQgZnJvbSAuL2Jvb3N0L3Rlc3QvaW1wbC9leGVjdXRpb25fbW9uaXRvci5pcHA6MzE6MCwKKyAgICAgICAgICAgICAgICAgZnJvbSBsaWJzL3Rlc3Qvc3JjL2V4ZWN1dGlvbl9tb25pdG9yLmNwcDoxNjoKKy4vYm9vc3QvdGVzdC9leGVjdXRpb25fbW9uaXRvci5ocHA6NDkxOjI3OiBlcnJvcjogJ0ZFX0RJVkJZWkVSTycgd2FzIG5vdCBkZWNsYXJlZCBpbiB0aGlzIHNjb3BlCisgICAgIEJPT1NUX0ZQRV9ESVZCWVpFUk8gPSBGRV9ESVZCWVpFUk8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn5+fn4KKy4vYm9vc3QvdGVzdC9leGVjdXRpb25fbW9uaXRvci5ocHA6NDkyOjI3OiBlcnJvcjogJ0ZFX0lORVhBQ1QnIHdhcyBub3QgZGVjbGFyZWQgaW4gdGhpcyBzY29wZQorICAgICBCT09TVF9GUEVfSU5FWEFDVCAgID0gRkVfSU5FWEFDVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fn4KKy4vYm9vc3QvdGVzdC9leGVjdXRpb25fbW9uaXRvci5ocHA6NDkzOjI3OiBlcnJvcjogJ0ZFX0lOVkFMSUQnIHdhcyBub3QgZGVjbGFyZWQgaW4gdGhpcyBzY29wZQorICAgICBCT09TVF9GUEVfSU5WQUxJRCAgID0gRkVfSU5WQUxJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fn4KKy4vYm9vc3QvdGVzdC9leGVjdXRpb25fbW9uaXRvci5ocHA6NDk0OjI3OiBlcnJvcjogJ0ZFX09WRVJGTE9XJyB3YXMgbm90IGRlY2xhcmVkIGluIHRoaXMgc2NvcGUKKyAgICAgQk9PU1RfRlBFX09WRVJGTE9XICA9IEZFX09WRVJGTE9XLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+fn4KKy4vYm9vc3QvdGVzdC9leGVjdXRpb25fbW9uaXRvci5ocHA6NDk1OjI3OiBlcnJvcjogJ0ZFX1VOREVSRkxPVycgd2FzIG5vdCBkZWNsYXJlZCBpbiB0aGlzIHNjb3BlCisgICAgIEJPT1NUX0ZQRV9VTkRFUkZMT1cgPSBGRV9VTkRFUkZMT1csCisgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn5+fn4KKworVGhlIHJlYXNvbiBpcyB0aGF0IHNvbWUgKG5vdGFibHkgRlBVLWxlc3MpIGFyY2hpdGVjdHVyZXMsCitpbmNsdWRpbmcgbWlwcyotbmYsIGRvbid0IGRlZmluZS9pbXBsZW1lbnQgc29tZSBvZiB0aGUKK2Zsb2F0aW5nIHBvaW50IGNvbnN0YW50cywgZXZlbiB0aG91Z2ggZmVudi5oIGlzCithdmFpbGFibGUuCisKK1RoZSBrZXkgcG9pbnQgaXM6CisgIEEgZnVsbHkgc3RhbmRhcmRzIGNvbmZvcm1pbmcgZmVudi5oIGRvZXMgbm90IGhhdmUgdG8KKyAgZGVmaW5lIGFueSBGRV8qIG1hY3JvcywgYW5kIGlmIGl0IGRvZXMgZGVmaW5lIHRoZW0sCisgIHRoZW4gaXQgZGVmaW5lcyBtYWNyb3Mgb25seSBmb3IgdGhlIEZQIGV4Y2VwdGlvbnMgaXQKKyAgYWN0dWFsbHkgc3VwcG9ydHMuCisKK1NvIGNvcnJlY3QgdXNhZ2UgcmVxdWlyZXMgYSB0cmlwbGUgY2hlY2s6CisxKSBDaGVjayBCT09TVF9OT19GRU5WX0ggdG8gc2VlIGlmIHRoZSBoZWFkZXIgaXMgc3VwcG9ydGVkLgorMikgSW5jbHVkZSB0aGUgaGVhZGVyIGFuZCB0aGVuIGNoZWNrIEZFX0FMTF9FWENFUFQgdG8gc2VlCisgICBpZiBhbnkgRlAgZXhjZXB0aW9ucyBhcmUgc3VwcG9ydGVkLgorMykgQmVmb3JlIHVzaW5nIHRoZSBpbmRpdmlkdWFsIEZFXyogbWFjcm9zLCB5b3UgbmVlZCB0bworICAgY2hlY2sgZm9yIHRoZWlyIGV4aXN0ZW5jZSB0b28gYXMgbm90IGFsbCBtYXkgYmUKKyAgIHN1cHBvcnRlZC4KKworaHR0cHM6Ly9zdm4uYm9vc3Qub3JnL3RyYWMvYm9vc3QvdGlja2V0LzExNzU2CisKK090aGVyIHByb2plY3RzIGhhdmUgc2ltaWxhciBpc3N1ZXMsIGUuZy4gcGl4bWFuLCBhbmQKK2FwcGx5IHNpbWlsYXIgd29yay1hcm91bmRzOgorICBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZlcy9waXhtYW4vMjAxNC1GZWJydWFyeS8wMDMxNzIuaHRtbAorCitBcmNoaXRlY3R1cmVzIGFyZSBub3RhYmx5IGFsc28gYWxsb3dlZCB0byBkZWZpbmUgRkVfQUxMX0VYQ0VQVCB0byAwIQorS2VlcGluZyB0aGlzIGluIG1pbmQsIGFuZCBrbm93aW5nIHRoYXQgdGhlIGNvbXBpbGVyIHdpbGwgZWxpbWluYXRlCitjb2RlIHRoYXQgY2FuJ3QgYmUgZXhlY3V0ZWQsIHdlIGNhbiBjaGFuZ2UgQk9PU1RfRlBFX0FMTCB0byBiZSAwIGZvcgordGhlIGNhc2Ugb2YgY29tcGlsaW5nIHVzaW5nIENsYW5nIGFuZC9vciBmZW52LmggYmVpbmcgdW5hdmFpbGFibGUKK2FzIHdlbGwsIHdoaWNoIGFsbG93cyBzaW1wbGlmaWNhdGlvbiBvZiB0aGUgI2lmZGVmJ3MgaW4KK2V4ZWN1dGlvbl9tb25pdG9yLmlwcCBhIGJpdC4KKworU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGFkcmFzemlrQHR5Y29pbnQuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBodHRwczovL3N2bi5ib29zdC5vcmcvdHJhYy9ib29zdC90aWNrZXQvMTE3NTYKKyBib29zdC90ZXN0L2V4ZWN1dGlvbl9tb25pdG9yLmhwcCAgICAgIHwgMjYgKysrKysrKysrKysrKysrKysrKysrKysrKy0KKyBib29zdC90ZXN0L2ltcGwvZXhlY3V0aW9uX21vbml0b3IuaXBwIHwgMTAgKysrKysrKystLQorIDIgZmlsZXMgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2Jvb3N0L3Rlc3QvZXhlY3V0aW9uX21vbml0b3IuaHBwIGIvYm9vc3QvdGVzdC9leGVjdXRpb25fbW9uaXRvci5ocHAKK2luZGV4IDBlZWU0OTcuLjQ0ZmU1OWQgMTAwNjQ0CistLS0gYS9ib29zdC90ZXN0L2V4ZWN1dGlvbl9tb25pdG9yLmhwcAorKysrIGIvYm9vc3QvdGVzdC9leGVjdXRpb25fbW9uaXRvci5ocHAKK0BAIC00ODYsMTUgKzQ4NiwzOSBAQCBlbnVtIG1hc2tzIHsKKyAgICAgQk9PU1RfRlBFX0FMTCAgICAgICA9IE1DV19FTSwKKyAjZWxpZiBkZWZpbmVkKEJPT1NUX05PX0ZFTlZfSCkgfHwgZGVmaW5lZChCT09TVF9DTEFORykgXAorICAgICB8fCBkZWZpbmVkKF9fQVJNX1BDUykKKy0gICAgQk9PU1RfRlBFX0FMTCAgICAgICA9IDEsCisrICAgIEJPT1NUX0ZQRV9BTEwgICAgICAgPSAwLAorICNlbHNlCisrI2lmIGRlZmluZWQoRkVfRElWQllaRVJPKQorICAgICBCT09TVF9GUEVfRElWQllaRVJPID0gRkVfRElWQllaRVJPLAorKyNlbHNlCisrICAgIEJPT1NUX0ZQRV9ESVZCWVpFUk8gPSAwLAorKyNlbmRpZgorKyNpZiBkZWZpbmVkKEZFX0lORVhBQ1QpCisgICAgIEJPT1NUX0ZQRV9JTkVYQUNUICAgPSBGRV9JTkVYQUNULAorKyNlbHNlCisrICAgIEJPT1NUX0ZQRV9JTkVYQUNUICAgPSAwLAorKyNlbmRpZgorKyNpZiBkZWZpbmVkKEZFX0lOVkFMSUQpCisgICAgIEJPT1NUX0ZQRV9JTlZBTElEICAgPSBGRV9JTlZBTElELAorKyNlbHNlCisrICAgIEJPT1NUX0ZQRV9JTlZBTElEICAgPSAwLAorKyNlbmRpZgorKyNpZiBkZWZpbmVkKEZFX09WRVJGTE9XKQorICAgICBCT09TVF9GUEVfT1ZFUkZMT1cgID0gRkVfT1ZFUkZMT1csCisrI2Vsc2UKKysgICAgQk9PU1RfRlBFX09WRVJGTE9XICA9IDAsCisrI2VuZGlmCisrI2lmIGRlZmluZWQoRkVfVU5ERVJGTE9XKQorICAgICBCT09TVF9GUEVfVU5ERVJGTE9XID0gRkVfVU5ERVJGTE9XLAorKyNlbHNlCisrICAgIEJPT1NUX0ZQRV9VTkRFUkZMT1cgPSAwLAorKyNlbmRpZgorIAorKyNpZiBkZWZpbmVkKEZFX0FMTF9FWENFUFQpCisgICAgIEJPT1NUX0ZQRV9BTEwgICAgICAgPSBGRV9BTExfRVhDRVBULAorKyNlbHNlCisrICAgIEJPT1NUX0ZQRV9BTEwgICAgICAgPSAwLAorKyNlbmRpZgorICNlbmRpZgorICAgICBCT09TVF9GUEVfSU5WICAgICAgID0gQk9PU1RfRlBFX0FMTCsxCisgfTsKK2RpZmYgLS1naXQgYS9ib29zdC90ZXN0L2ltcGwvZXhlY3V0aW9uX21vbml0b3IuaXBwIGIvYm9vc3QvdGVzdC9pbXBsL2V4ZWN1dGlvbl9tb25pdG9yLmlwcAoraW5kZXggZjdmYzhlYS4uZDEwODhiOSAxMDA2NDQKKy0tLSBhL2Jvb3N0L3Rlc3QvaW1wbC9leGVjdXRpb25fbW9uaXRvci5pcHAKKysrKyBiL2Jvb3N0L3Rlc3QvaW1wbC9leGVjdXRpb25fbW9uaXRvci5pcHAKK0BAIC0xMzgxLDcgKzEzODEsMTAgQEAgZW5hYmxlKCB1bnNpZ25lZCBtYXNrICkKKyAjZW5kaWYKKyAKKyAgICAgcmV0dXJuIH5vbGRfY3cgJiBCT09TVF9GUEVfQUxMOworLSNlbGlmIGRlZmluZWQoX19HTElCQ19fKSAmJiBkZWZpbmVkKF9fVVNFX0dOVSkgJiYgIWRlZmluZWQoQk9PU1RfQ0xBTkcpICYmICFkZWZpbmVkKEJPT1NUX05PX0ZFTlZfSCkKKysjZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgZGVmaW5lZChfX1VTRV9HTlUpCisrICAgIGlmIChCT09TVF9GUEVfQUxMID09IDApCisrICAgICAgICAvKiBOb3QgSW1wbGVtZW50ZWQgKi8KKysgICAgICAgIHJldHVybiAwOworICAgICBmZWNsZWFyZXhjZXB0KEJPT1NUX0ZQRV9BTEwpOworICAgICBpbnQgcmVzID0gZmVlbmFibGVleGNlcHQoIG1hc2sgKTsKKyAgICAgcmV0dXJuIHJlcyA9PSAtMSA/ICh1bnNpZ25lZClCT09TVF9GUEVfSU5WIDogKHVuc2lnbmVkKXJlczsKK0BAIC0xNDE4LDcgKzE0MjEsMTAgQEAgZGlzYWJsZSggdW5zaWduZWQgbWFzayApCisgI2VuZGlmCisgCisgICAgIHJldHVybiB+b2xkX2N3ICYgQk9PU1RfRlBFX0FMTDsKKy0jZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgZGVmaW5lZChfX1VTRV9HTlUpICYmICFkZWZpbmVkKEJPT1NUX0NMQU5HKSAmJiAhZGVmaW5lZChCT09TVF9OT19GRU5WX0gpCisrI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIGRlZmluZWQoX19VU0VfR05VKQorKyAgICBpZiAoQk9PU1RfRlBFX0FMTCA9PSAwKQorKyAgICAgICAgLyogTm90IEltcGxlbWVudGVkICovCisrICAgICAgICByZXR1cm4gQk9PU1RfRlBFX0lOVjsKKyAgICAgZmVjbGVhcmV4Y2VwdChCT09TVF9GUEVfQUxMKTsKKyAgICAgaW50IHJlcyA9IGZlZGlzYWJsZWV4Y2VwdCggbWFzayApOworICAgICByZXR1cm4gcmVzID09IC0xID8gKHVuc2lnbmVkKUJPT1NUX0ZQRV9JTlYgOiAodW5zaWduZWQpcmVzOworLS0gCisyLjkuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMy1zbWFydF9wdHItbWlwcy1hc3NlbWJseS1kb2Vzbi10LWNvbXBpbGUtaW4tbWlwczE2ZS1tLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LzAwMDMtc21hcnRfcHRyLW1pcHMtYXNzZW1ibHktZG9lc24tdC1jb21waWxlLWluLW1pcHMxNmUtbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjQ4ZDBkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LzAwMDMtc21hcnRfcHRyLW1pcHMtYXNzZW1ibHktZG9lc24tdC1jb21waWxlLWluLW1pcHMxNmUtbS5wYXRjaApAQCAtMCwwICsxLDYwIEBACitGcm9tIDRmMTlkNzJjYTk0NDE4NDMxZTA2OGNmZDRmZmI5NmVkOWIyODlmNmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcj1DMz1BOT0yMERyYXN6aWs/PSA8YWRyYXN6aWtAdHljb2ludC5jb20+CitEYXRlOiBXZWQsIDI0IEF1ZyAyMDE2IDE3OjM0OjU5ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMy80XSBzbWFydF9wdHI6IG1pcHMgYXNzZW1ibHkgZG9lc24ndCBjb21waWxlIGluIG1pcHMxNmUgbW9kZQorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitnY2MuY29tcGlsZS5jKysgPGJ1aWxkZGlyPi9ib29zdC9iaW4udjIvbGlicy9kYXRlX3RpbWUvYnVpbGQvZ2NjLTQuMy4xL3JlbGVhc2UvdGhyZWFkaW5nLW11bHRpL2dyZWdvcmlhbi9ncmVnX21vbnRoLm8KKworICAgICJtaXBzZWwtcG9reS1saW51eC1tdXNsLWcrKyIgIi1tZWwiICItbWFiaT0zMiIgIi1tc29mdC1mbG9hdCIgIi1tYXJjaD1taXBzMzJyMiIgIi1taXBzMTYiICItbWludGVybGluay1jb21wcmVzc2VkIiAiLW10dW5lPTI0a2VjIiAiLW1kc3AiICItV2wsLU8xIiAiLVdsLC0tYXMtbmVlZGVkIiAiLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nIiAiLVdsLC16LHJlbHJvLC16LG5vdyIgIi0tc3lzcm9vdD08c3lzcm9vdD4iICAtZnRlbXBsYXRlLWRlcHRoLTEyOCAtTzIgLXBpcGUgLWcgLWZlbGltaW5hdGUtdW51c2VkLWRlYnVnLXR5cGVzIC1mZGVidWctcHJlZml4LW1hcD08c3JjZGlyPj0vdXNyL3NyYy9kZWJ1Zy9ib29zdC8xLjYxLjAtcjAgLWZkZWJ1Zy1wcmVmaXgtbWFwPTxzeXNyb290X2hvc3Q+PSAtZmRlYnVnLXByZWZpeC1tYXA9PHN5c3Jvb3Q+PSAtZnN0YWNrLXByb3RlY3Rvci1zdHJvbmcgLXBpZSAtZnBpZSAtRF9GT1JUSUZZX1NPVVJDRT0yIC1XZm9ybWF0IC1XZm9ybWF0LXNlY3VyaXR5IC1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5IC1mdmlzaWJpbGl0eS1pbmxpbmVzLWhpZGRlbiAtTzMgLWZpbmxpbmUtZnVuY3Rpb25zIC1Xbm8taW5saW5lIC1XYWxsIC1wdGhyZWFkIC1mUElDICAtREJPT1NUX0FMTF9EWU5fTElOSz0xIC1EQk9PU1RfQUxMX05PX0xJQj0xIC1EREFURV9USU1FX0lOTElORSAtRE5ERUJVRyAgLUkiLiIgLWMgLW8gIjxidWlsZGRpcj4vYm9vc3QvYmluLnYyL2xpYnMvZGF0ZV90aW1lL2J1aWxkL2djYy00LjMuMS9yZWxlYXNlL3RocmVhZGluZy1tdWx0aS9ncmVnb3JpYW4vZ3JlZ19tb250aC5vIiAibGlicy9kYXRlX3RpbWUvc3JjL2dyZWdvcmlhbi9ncmVnX21vbnRoLmNwcCIKKwore3N0YW5kYXJkIGlucHV0fTogQXNzZW1ibGVyIG1lc3NhZ2VzOgore3N0YW5kYXJkIGlucHV0fToxNzYwMzogV2FybmluZzogdGhlIGBkc3AnIGV4dGVuc2lvbiByZXF1aXJlcyBNSVBTMzIgcmV2aXNpb24gMiBvciBncmVhdGVyCit7c3RhbmRhcmQgaW5wdXR9OjE3NjA0OiBFcnJvcjogdW5yZWNvZ25pemVkIG9wY29kZSBgbGwgJDMsNCgkMTYpJwore3N0YW5kYXJkIGlucHV0fToxNzYwNjogRXJyb3I6IHVucmVjb2duaXplZCBvcGNvZGUgYHNjICQyLDQoJDE2KScKK3tzdGFuZGFyZCBpbnB1dH06MTc3MzQ6IEVycm9yOiB1bnJlY29nbml6ZWQgb3Bjb2RlIGBsbCAkMyw4KCQxNiknCit7c3RhbmRhcmQgaW5wdXR9OjE3NzM2OiBFcnJvcjogdW5yZWNvZ25pemVkIG9wY29kZSBgc2MgJDIsOCgkMTYpJwore3N0YW5kYXJkIGlucHV0fToxODA4NDogRXJyb3I6IHVucmVjb2duaXplZCBvcGNvZGUgYGxsICQzLDQoJDQpJwore3N0YW5kYXJkIGlucHV0fToxODA4NjogRXJyb3I6IHVucmVjb2duaXplZCBvcGNvZGUgYHNjICQyLDQoJDQpJwore3N0YW5kYXJkIGlucHV0fToxODMxODogRXJyb3I6IHVucmVjb2duaXplZCBvcGNvZGUgYGxsICQzLDgoJDQpJwore3N0YW5kYXJkIGlucHV0fToxODMyMDogRXJyb3I6IHVucmVjb2duaXplZCBvcGNvZGUgYHNjICQyLDgoJDQpJwore3N0YW5kYXJkIGlucHV0fToxOTkyMTogRXJyb3I6IHVucmVjb2duaXplZCBvcGNvZGUgYGxsICQzLDQoJDIpJwore3N0YW5kYXJkIGlucHV0fToxOTkyMzogRXJyb3I6IHVucmVjb2duaXplZCBvcGNvZGUgYHNjICQzLDQoJDIpJwore3N0YW5kYXJkIGlucHV0fToyMDE5OTogRXJyb3I6IHVucmVjb2duaXplZCBvcGNvZGUgYGxsICQ0LDQoJDE2KScKK3tzdGFuZGFyZCBpbnB1dH06MjAyMDE6IEVycm9yOiB1bnJlY29nbml6ZWQgb3Bjb2RlIGBzYyAkMiw0KCQxNiknCit7c3RhbmRhcmQgaW5wdXR9OjIzMzkyOiBFcnJvcjogdW5yZWNvZ25pemVkIG9wY29kZSBgbGwgJDQsOCgkMTYpJwore3N0YW5kYXJkIGlucHV0fToyMzM5NDogRXJyb3I6IHVucmVjb2duaXplZCBvcGNvZGUgYHNjICQyLDgoJDE2KScKKy4uLmZhaWxlZCB1cGRhdGluZyAxIHRhcmdldC4uLgorCitib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2NfbWlwcy5ocHAKK2NvbnRhaW5zIGhhbmQtd3JpdHRlbiBNSVBTIGFzc2VtYmx5LCB3aGljaCBpcyBub3QgY29tcGF0aWJsZQord2l0aCB0aGUgTUlQUzE2ZSBpbnN0cnVjdGlvbiBzZXQuCisKK0J5IG5vdCB1c2luZyB0aGlzIGZpbGUgaW4gTUlQUzE2ZSBtb2RlLCB3ZSBmYWxsYmFjayB0byB1c2luZworZysrIDQuMSsgX19zeW5jIGludHJpbnNpY3MgKF9fc3luY19mZXRjaF9hbmRfYWRkKCkgYW5kCitfX3N5bmNfdmFsX2NvbXBhcmVfYW5kX3N3YXAoKSkgd2hpY2ggYXJlIHdvcmtpbmcgZmluZS4KKworU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGFkcmFzemlrQHR5Y29pbnQuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IGh0dHBzOi8vc3ZuLmJvb3N0Lm9yZy90cmFjL2Jvb3N0L3RpY2tldC8xMjQxOAorIGJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlLmhwcCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2Jvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlLmhwcCBiL2Jvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlLmhwcAoraW5kZXggMGFkZGYwNy4uMDk5NWNhOCAxMDA2NDQKKy0tLSBhL2Jvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlLmhwcAorKysrIGIvYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2UuaHBwCitAQCAtNjUsNyArNjUsNyBAQAorICNlbGlmIGRlZmluZWQoIF9fR05VQ19fICkgJiYgKCBkZWZpbmVkKCBfX3Bvd2VycGNfXyApIHx8IGRlZmluZWQoIF9fcHBjX18gKSB8fCBkZWZpbmVkKCBfX3BwYyApICkgJiYgIWRlZmluZWQoX19QQVRIU0NBTEVfXykgJiYgIWRlZmluZWQoIF9BSVggKQorICMgaW5jbHVkZSA8Ym9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfZ2NjX3BwYy5ocHA+CisgCistI2VsaWYgZGVmaW5lZCggX19HTlVDX18gKSAmJiAoIGRlZmluZWQoIF9fbWlwc19fICkgfHwgZGVmaW5lZCggX21pcHMgKSApICYmICFkZWZpbmVkKF9fUEFUSFNDQUxFX18pCisrI2VsaWYgZGVmaW5lZCggX19HTlVDX18gKSAmJiAoIGRlZmluZWQoIF9fbWlwc19fICkgfHwgZGVmaW5lZCggX21pcHMgKSApICYmICFkZWZpbmVkKF9fUEFUSFNDQUxFX18pICYmICFkZWZpbmVkKCBfX21pcHMxNiApCisgIyBpbmNsdWRlIDxib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2NfbWlwcy5ocHA+CisgCisgI2VsaWYgZGVmaW5lZCggQk9PU1RfU1BfSEFTX1NZTkMgKQorLS0gCisyLjkuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwNC1Vc2UtYXRvbWljLWJ5LWRlZmF1bHQtd2hlbi1CT09TVF9OT19DWFgxMV9IRFJfQVRPTUlDLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LzAwMDQtVXNlLWF0b21pYy1ieS1kZWZhdWx0LXdoZW4tQk9PU1RfTk9fQ1hYMTFfSERSX0FUT01JQy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjc4MjZiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LzAwMDQtVXNlLWF0b21pYy1ieS1kZWZhdWx0LXdoZW4tQk9PU1RfTk9fQ1hYMTFfSERSX0FUT01JQy5wYXRjaApAQCAtMCwwICsxLDU5IEBACitGcm9tIGMyMzRjYzU1N2Y2MDcyOWUwNzFkNmRhNTk3NDdjMWE5Mjg5NTU1YzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQZXRlciBEaW1vdiA8cGRpbW92QHBkaW1vdi5jb20+CitEYXRlOiBTdW4sIDI4IEF1ZyAyMDE2IDIxOjI4OjIxICswMzAwCitTdWJqZWN0OiBbUEFUQ0ggNC80XSBVc2UgPGF0b21pYz4gYnkgZGVmYXVsdCB3aGVuIEJPT1NUX05PX0NYWDExX0hEUl9BVE9NSUMgaXMKKyBub3QgZGVmaW5lZAorCistLS0KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ib29zdG9yZy9zbWFydF9wdHIvY29tbWl0LzIwZmVkY2ZmMmNhMzE0MzUwM2VjNGU4NzZkNDc3NDVhYjBlYzdiMGNdCitTaWduZWQtb2ZmLWJ5OiBBbmRyw6kgRHJhc3ppayA8Z2l0QGFuZHJlZC5uZXQ+CisgYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnQuaHBwICAgIHwgMyArKysKKyBib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZS5ocHAgfCAzICsrKworIGJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2suaHBwICAgICAgICB8IDMgKysrCisgMyBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2Jvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50LmhwcCBiL2Jvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50LmhwcAoraW5kZXggOGFlZmQ0NC4uNmU0ZjcxYSAxMDA2NDQKKy0tLSBhL2Jvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50LmhwcAorKysrIGIvYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnQuaHBwCitAQCAtNzMsNiArNzMsOSBAQAorICNlbGlmIGRlZmluZWQoIEJPT1NUX0RJU0FCTEVfVEhSRUFEUyApICYmICFkZWZpbmVkKCBCT09TVF9TUF9FTkFCTEVfVEhSRUFEUyApICYmICFkZWZpbmVkKCBCT09TVF9ESVNBQkxFX1dJTjMyICkKKyAjIGluY2x1ZGUgPGJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50X250LmhwcD4KKyAKKysjZWxpZiAhZGVmaW5lZCggQk9PU1RfTk9fQ1hYMTFfSERSX0FUT01JQyApCisrIyBpbmNsdWRlIDxib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudF9zdGRfYXRvbWljLmhwcD4KKysKKyAjZWxpZiBkZWZpbmVkKCBfX0dOVUNfXyApICYmICggZGVmaW5lZCggX19pMzg2X18gKSB8fCBkZWZpbmVkKCBfX3g4Nl82NF9fICkgKSAmJiAhZGVmaW5lZCggX19QQVRIU0NBTEVfXyApCisgIyBpbmNsdWRlIDxib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudF9nY2NfeDg2LmhwcD4KKyAKK2RpZmYgLS1naXQgYS9ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZS5ocHAgYi9ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZS5ocHAKK2luZGV4IDA5OTVjYTguLjgzZWRlMjMgMTAwNjQ0CistLS0gYS9ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZS5ocHAKKysrKyBiL2Jvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlLmhwcAorQEAgLTQ0LDYgKzQ0LDkgQEAKKyAjZWxpZiBkZWZpbmVkKCBCT09TVF9TUF9IQVNfQ0xBTkdfQzExX0FUT01JQ1MgKQorICMgaW5jbHVkZSA8Ym9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfY2xhbmcuaHBwPgorIAorKyNlbGlmICFkZWZpbmVkKCBCT09TVF9OT19DWFgxMV9IRFJfQVRPTUlDICkKKysjIGluY2x1ZGUgPGJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX3N0ZF9hdG9taWMuaHBwPgorKworICNlbGlmIGRlZmluZWQoIF9fU05DX18gKQorICMgaW5jbHVkZSA8Ym9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2Vfc25jX3BzMy5ocHA+CisgCitkaWZmIC0tZ2l0IGEvYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9jay5ocHAgYi9ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrLmhwcAoraW5kZXggMTlmOTNkNy4uMGI2MThkZiAxMDA2NDQKKy0tLSBhL2Jvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2suaHBwCisrKysgYi9ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrLmhwcAorQEAgLTQzLDYgKzQzLDkgQEAKKyAjZWxpZiBkZWZpbmVkKCBCT09TVF9TUF9VU0VfUFRIUkVBRFMgKQorICMgIGluY2x1ZGUgPGJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2tfcHQuaHBwPgorIAorKyNlbGlmICFkZWZpbmVkKCBCT09TVF9OT19DWFgxMV9IRFJfQVRPTUlDICkKKysjICBpbmNsdWRlIDxib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX3N0ZF9hdG9taWMuaHBwPgorKworICNlbGlmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoIF9fYXJtX18gKSAmJiAhZGVmaW5lZCggX190aHVtYl9fICkKKyAjICBpbmNsdWRlIDxib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX2djY19hcm0uaHBwPgorIAorLS0gCisyLjkuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvYm9vc3QtQ1ZFLTIwMTItMjY3Ny5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC9ib29zdC1DVkUtMjAxMi0yNjc3LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxNzYxN2EKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvYm9vc3QtQ1ZFLTIwMTItMjY3Ny5wYXRjaApAQCAtMCwwICsxLDExMiBAQAorUmVmZXJlbmNlCisKK2h0dHBzOi8vc3ZuLmJvb3N0Lm9yZy90cmFjL2Jvb3N0L2NoYW5nZXNldC83ODMyNgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitDVkU6IENWRS0yMDEyLTI2NzcKK1NpZ25lZC1vZmYtYnk6IFl1ZSBUYW8gPHl1ZS50YW9Ad2luZHJpdmVyLmNvbT4KKworZGlmZiAtLWdpdCBhL2Jvb3N0L3Bvb2wvcG9vbC5ocHAub2xkIGIvYm9vc3QvcG9vbC9wb29sLmhwcAoraW5kZXggYzQ3YjExZi4uNDE3YTFlMCAxMDA2NDQKKy0tLSBhL2Jvb3N0L3Bvb2wvcG9vbC5ocHAub2xkCisrKysgYi9ib29zdC9wb29sL3Bvb2wuaHBwCitAQCAtMjYsNiArMjYsOCBAQAorIAorICNpbmNsdWRlIDxib29zdC9wb29sL3Bvb2xmd2QuaHBwPgorIAorKy8vIHN0ZDo6bnVtZXJpY19saW1pdHMKKysjaW5jbHVkZSA8Ym9vc3QvbGltaXRzLmhwcD4KKyAvLyBib29zdDo6aW50ZWdlcjo6c3RhdGljX2xjbQorICNpbmNsdWRlIDxib29zdC9pbnRlZ2VyL2NvbW1vbl9mYWN0b3JfY3QuaHBwPgorIC8vIGJvb3N0OjpzaW1wbGVfc2VncmVnYXRlZF9zdG9yYWdlCitAQCAtMzU1LDYgKzM1NywxNSBAQCBjbGFzcyBwb29sOiBwcm90ZWN0ZWQgc2ltcGxlX3NlZ3JlZ2F0ZWRfc3RvcmFnZSA8IHR5cGVuYW1lIFVzZXJBbGxvY2F0b3I6OnNpemVfdAorICAgICAgIHJldHVybiBzOworICAgICB9CisgCisrICAgIHNpemVfdHlwZSBtYXhfY2h1bmtzKCkgY29uc3QKKysgICAgeyAvLyEgQ2FsY3VsYXRlZCBtYXhpbXVtIG51bWJlciBvZiBtZW1vcnkgY2h1bmtzIHRoYXQgY2FuIGJlIGFsbG9jYXRlZCBpbiBhIHNpbmdsZSBjYWxsIGJ5IHRoaXMgUG9vbC4KKysgICAgICBzaXplX3R5cGUgcGFydGl0aW9uX3NpemUgPSBhbGxvY19zaXplKCk7CisrICAgICAgc2l6ZV90eXBlIFBPRF9zaXplID0gaW50ZWdlcjo6c3RhdGljX2xjbTxzaXplb2Yoc2l6ZV90eXBlKSwgc2l6ZW9mKHZvaWQgKik+Ojp2YWx1ZSArIHNpemVvZihzaXplX3R5cGUpOworKyAgICAgIHNpemVfdHlwZSBtYXhfY2h1bmtzID0gKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90eXBlPjo6bWF4KCkgLSBQT0Rfc2l6ZSkgLyBhbGxvY19zaXplKCk7CisrCisrICAgICAgcmV0dXJuIG1heF9jaHVua3M7CisrICAgIH0KKysKKyAgICAgc3RhdGljIHZvaWQgKiAmIG5leHRvZih2b2lkICogY29uc3QgcHRyKQorICAgICB7IC8vISBccmV0dXJucyBQb2ludGVyIGRlcmVmZXJlbmNlZC4KKyAgICAgICAvLyEgKFByb3ZpZGVkIGFuZCB1c2VkIGZvciB0aGUgc2FrZSBvZiBjb2RlIHJlYWRhYmlsaXR5IDopCitAQCAtMzc1LDYgKzM4Niw4IEBAIGNsYXNzIHBvb2w6IHByb3RlY3RlZCBzaW1wbGVfc2VncmVnYXRlZF9zdG9yYWdlIDwgdHlwZW5hbWUgVXNlckFsbG9jYXRvcjo6c2l6ZV90CisgICAgICAgLy8hICAgdGhlIGZpcnN0IHRpbWUgdGhhdCBvYmplY3QgbmVlZHMgdG8gYWxsb2NhdGUgc3lzdGVtIG1lbW9yeS4KKyAgICAgICAvLyEgICBUaGUgZGVmYXVsdCBpcyAzMi4gVGhpcyBwYXJhbWV0ZXIgbWF5IG5vdCBiZSAwLgorICAgICAgIC8vISBccGFyYW0gbm1heF9zaXplIGlzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaHVua3MgdG8gYWxsb2NhdGUgaW4gb25lIGJsb2NrLgorKyAgICAgIHNldF9uZXh0X3NpemUobm5leHRfc2l6ZSk7CisrICAgICAgc2V0X21heF9zaXplKG5tYXhfc2l6ZSk7CisgICAgIH0KKyAKKyAgICAgfnBvb2woKQorQEAgLTM5OCw4ICs0MTEsOCBAQCBjbGFzcyBwb29sOiBwcm90ZWN0ZWQgc2ltcGxlX3NlZ3JlZ2F0ZWRfc3RvcmFnZSA8IHR5cGVuYW1lIFVzZXJBbGxvY2F0b3I6OnNpemVfdAorICAgICB9CisgICAgIHZvaWQgc2V0X25leHRfc2l6ZShjb25zdCBzaXplX3R5cGUgbm5leHRfc2l6ZSkKKyAgICAgeyAvLyEgU2V0IG51bWJlciBvZiBjaHVua3MgdG8gcmVxdWVzdCBmcm9tIHRoZSBzeXN0ZW0gdGhlIG5leHQgdGltZSB0aGF0IG9iamVjdCBuZWVkcyB0byBhbGxvY2F0ZSBzeXN0ZW0gbWVtb3J5LiBUaGlzIHZhbHVlIHNob3VsZCBuZXZlciBiZSBzZXQgdG8gMC4KKy0gICAgICAvLyEgXHJldHVybnMgbm5leHRfc2l6ZS4KKy0gICAgICBuZXh0X3NpemUgPSBzdGFydF9zaXplID0gbm5leHRfc2l6ZTsKKysgICAgICBCT09TVF9VU0lOR19TVERfTUlOKCk7CisrICAgICAgbmV4dF9zaXplID0gc3RhcnRfc2l6ZSA9IG1pbiBCT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTihubmV4dF9zaXplLCBtYXhfY2h1bmtzKCkpOworICAgICB9CisgICAgIHNpemVfdHlwZSBnZXRfbWF4X3NpemUoKSBjb25zdAorICAgICB7IC8vISBccmV0dXJucyBtYXhfc2l6ZS4KK0BAIC00MDcsNyArNDIwLDggQEAgY2xhc3MgcG9vbDogcHJvdGVjdGVkIHNpbXBsZV9zZWdyZWdhdGVkX3N0b3JhZ2UgPCB0eXBlbmFtZSBVc2VyQWxsb2NhdG9yOjpzaXplX3QKKyAgICAgfQorICAgICB2b2lkIHNldF9tYXhfc2l6ZShjb25zdCBzaXplX3R5cGUgbm1heF9zaXplKQorICAgICB7IC8vISBTZXQgbWF4X3NpemUuCistICAgICAgbWF4X3NpemUgPSBubWF4X3NpemU7CisrICAgICAgQk9PU1RfVVNJTkdfU1REX01JTigpOworKyAgICAgIG1heF9zaXplID0gbWluIEJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OKG5tYXhfc2l6ZSwgbWF4X2NodW5rcygpKTsKKyAgICAgfQorICAgICBzaXplX3R5cGUgZ2V0X3JlcXVlc3RlZF9zaXplKCkgY29uc3QKKyAgICAgeyAvLyEgICBccmV0dXJucyB0aGUgcmVxdWVzdGVkIHNpemUgcGFzc2VkIGludG8gdGhlIGNvbnN0cnVjdG9yLgorQEAgLTcwOCw5ICs3MjIsOSBAQCB2b2lkICogcG9vbDxVc2VyQWxsb2NhdG9yPjo6bWFsbG9jX25lZWRfcmVzaXplKCkKKyAKKyAgIEJPT1NUX1VTSU5HX1NURF9NSU4oKTsKKyAgIGlmKCFtYXhfc2l6ZSkKKy0gICAgbmV4dF9zaXplIDw8PSAxOworKyAgICBzZXRfbmV4dF9zaXplKG5leHRfc2l6ZSA8PCAxKTsKKyAgIGVsc2UgaWYoIG5leHRfc2l6ZSpwYXJ0aXRpb25fc2l6ZS9yZXF1ZXN0ZWRfc2l6ZSA8IG1heF9zaXplKQorLSAgICBuZXh0X3NpemUgPSBtaW4gQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04obmV4dF9zaXplIDw8IDEsIG1heF9zaXplKnJlcXVlc3RlZF9zaXplLyBwYXJ0aXRpb25fc2l6ZSk7CisrICAgIHNldF9uZXh0X3NpemUobWluIEJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OKG5leHRfc2l6ZSA8PCAxLCBtYXhfc2l6ZSAqIHJlcXVlc3RlZF9zaXplIC8gcGFydGl0aW9uX3NpemUpKTsKKyAKKyAgIC8vICBpbml0aWFsaXplIGl0LAorICAgc3RvcmUoKS5hZGRfYmxvY2sobm9kZS5iZWdpbigpLCBub2RlLmVsZW1lbnRfc2l6ZSgpLCBwYXJ0aXRpb25fc2l6ZSk7CitAQCAtNzQ4LDkgKzc2Miw5IEBAIHZvaWQgKiBwb29sPFVzZXJBbGxvY2F0b3I+OjpvcmRlcmVkX21hbGxvY19uZWVkX3Jlc2l6ZSgpCisgCisgICBCT09TVF9VU0lOR19TVERfTUlOKCk7CisgICBpZighbWF4X3NpemUpCistICAgIG5leHRfc2l6ZSA8PD0gMTsKKysgICAgc2V0X25leHRfc2l6ZShuZXh0X3NpemUgPDwgMSk7CisgICBlbHNlIGlmKCBuZXh0X3NpemUqcGFydGl0aW9uX3NpemUvcmVxdWVzdGVkX3NpemUgPCBtYXhfc2l6ZSkKKy0gICAgbmV4dF9zaXplID0gbWluIEJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OKG5leHRfc2l6ZSA8PCAxLCBtYXhfc2l6ZSpyZXF1ZXN0ZWRfc2l6ZS8gcGFydGl0aW9uX3NpemUpOworKyAgICBzZXRfbmV4dF9zaXplKG1pbiBCT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTihuZXh0X3NpemUgPDwgMSwgbWF4X3NpemUgKiByZXF1ZXN0ZWRfc2l6ZSAvIHBhcnRpdGlvbl9zaXplKSk7CisgCisgICAvLyAgaW5pdGlhbGl6ZSBpdCwKKyAgIC8vICAod2UgY2FuIHVzZSAiYWRkX2Jsb2NrIiBoZXJlIGJlY2F1c2Ugd2Uga25vdyB0aGF0CitAQCAtNzkyLDYgKzgwNiw4IEBAIHZvaWQgKiBwb29sPFVzZXJBbGxvY2F0b3I+OjpvcmRlcmVkX21hbGxvYyhjb25zdCBzaXplX3R5cGUgbikKKyB7IC8vISBHZXRzIGFkZHJlc3Mgb2YgYSBjaHVuayBuLCBhbGxvY2F0aW5nIG5ldyBtZW1vcnkgaWYgbm90IGFscmVhZHkgYXZhaWxhYmxlLgorICAgLy8hIFxyZXR1cm5zIEFkZHJlc3Mgb2YgY2h1bmsgbiBpZiBhbGxvY2F0ZWQgb2suCisgICAvLyEgXHJldHVybnMgMCBpZiBub3QgZW5vdWdoIG1lbW9yeSBmb3IgbiBjaHVua3MuCisrICBpZiAobiA+IG1heF9jaHVua3MoKSkKKysgICAgcmV0dXJuIDA7CisgCisgICBjb25zdCBzaXplX3R5cGUgcGFydGl0aW9uX3NpemUgPSBhbGxvY19zaXplKCk7CisgICBjb25zdCBzaXplX3R5cGUgdG90YWxfcmVxX3NpemUgPSBuICogcmVxdWVzdGVkX3NpemU7CitAQCAtODQwLDkgKzg1Niw5IEBAIHZvaWQgKiBwb29sPFVzZXJBbGxvY2F0b3I+OjpvcmRlcmVkX21hbGxvYyhjb25zdCBzaXplX3R5cGUgbikKKyAKKyAgIEJPT1NUX1VTSU5HX1NURF9NSU4oKTsKKyAgIGlmKCFtYXhfc2l6ZSkKKy0gICAgbmV4dF9zaXplIDw8PSAxOworKyAgICBzZXRfbmV4dF9zaXplKG5leHRfc2l6ZSA8PCAxKTsKKyAgIGVsc2UgaWYoIG5leHRfc2l6ZSpwYXJ0aXRpb25fc2l6ZS9yZXF1ZXN0ZWRfc2l6ZSA8IG1heF9zaXplKQorLSAgICBuZXh0X3NpemUgPSBtaW4gQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04obmV4dF9zaXplIDw8IDEsIG1heF9zaXplKnJlcXVlc3RlZF9zaXplLyBwYXJ0aXRpb25fc2l6ZSk7CisrICAgIHNldF9uZXh0X3NpemUobWluIEJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OKG5leHRfc2l6ZSA8PCAxLCBtYXhfc2l6ZSAqIHJlcXVlc3RlZF9zaXplIC8gcGFydGl0aW9uX3NpemUpKTsKKyAKKyAgIC8vICBpbnNlcnQgaXQgaW50byB0aGUgbGlzdCwKKyAgIC8vICAgaGFuZGxlIGJvcmRlciBjYXNlLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0L2Jvb3N0LW1hdGgtZGlzYWJsZS1wY2gtZm9yLWdjYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC9ib29zdC1tYXRoLWRpc2FibGUtcGNoLWZvci1nY2MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTk1YmExNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC9ib29zdC1tYXRoLWRpc2FibGUtcGNoLWZvci1nY2MucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSBjYWJmY2JhMWZmNzUxMWZmZDZiOTFjYTI0NDI4OGQ0NGY1ODVhYWQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgMjMgU2VwIDIwMTYgMDE6MDQ6NTAgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gYm9vc3QtbWF0aDogZGlzYWJsZSBwY2ggZm9yIGdjYworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgWypdCisKKyogSXQncyBhIHdvcmsgYXJvdW5kIGZvciBhIGRlZmVjdCB3aGVuIGJ1aWxkIGluIHBhcmFsbGVsOgoraHR0cHM6Ly9zdm4uYm9vc3Qub3JnL3RyYWMvYm9vc3QvdGlja2V0LzEyNDc3CisKK1NpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWJzL21hdGgvYnVpbGQvSmFtZmlsZS52MiB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpYnMvbWF0aC9idWlsZC9KYW1maWxlLnYyIGIvbGlicy9tYXRoL2J1aWxkL0phbWZpbGUudjIKK2luZGV4IGUxOWZiMmUuLjgyNDcyYTcgMTAwNjQ0CistLS0gYS9saWJzL21hdGgvYnVpbGQvSmFtZmlsZS52MgorKysrIGIvbGlicy9tYXRoL2J1aWxkL0phbWZpbGUudjIKK0BAIC0xMyw3ICsxMyw3IEBAIHByb2plY3QKKyAgICAgICAjPHRvb2xzZXQ+aW50ZWwtbGludXg6PHBjaD5vZmYKKyAgICAgICA8dG9vbHNldD5pbnRlbC1kYXJ3aW46PHBjaD5vZmYKKyAgICAgICA8dG9vbHNldD5tc3ZjLTcuMTo8cGNoPm9mZgorLSAgICAgIDx0b29sc2V0PmdjYyw8dGFyZ2V0LW9zPndpbmRvd3M6PHBjaD5vZmYKKysgICAgICA8dG9vbHNldD5nY2M6PHBjaD5vZmYKKyAgICAgICAjPHRvb2xzZXQ+Z2NjOjxjeHhmbGFncz4tZnZpc2liaWxpdHk9aGlkZGVuCisgICAgICAgPHRvb2xzZXQ+aW50ZWwtbGludXg6PGN4eGZsYWdzPi1mdmlzaWJpbGl0eT1oaWRkZW4KKyAgICAgICAjPHRvb2xzZXQ+c3VuOjxjeHhmbGFncz4teGxkc2NvcGU9aGlkZGVuCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdF8xLjYwLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3RfMS42MC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDgyNGM4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdF8xLjYwLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLWluY2x1ZGUgYm9vc3QtJHtQVn0uaW5jCi1pbmNsdWRlIGJvb3N0LmluYwotCi1TUkNfVVJJICs9ICJcCi0gICAgZmlsZTovL2FybS1pbnRyaW5zaWNzLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1Eby1ub3QtcXVhbGlmeS1mZW52LmgtbmFtZXMtdGhhdC1taWdodC1iZS1tYWNyb3MucGF0Y2g7c3RyaXBsZXZlbD0yIFwKLSAgICBmaWxlOi8vY29uc2lkZXItaGFyZGZwLnBhdGNoIFwKLSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdF8xLjYxLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3RfMS42MS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZTM4NzAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3RfMS42MS4wLmJiCkBAIC0wLDAgKzEsMTMgQEAKK2luY2x1ZGUgYm9vc3QtJHtQVn0uaW5jCitpbmNsdWRlIGJvb3N0LmluYworCitTUkNfVVJJICs9ICJcCisgICAgZmlsZTovL2FybS1pbnRyaW5zaWNzLnBhdGNoIFwKKyAgICBmaWxlOi8vY29uc2lkZXItaGFyZGZwLnBhdGNoIFwKKyAgICBmaWxlOi8vYm9vc3QtQ1ZFLTIwMTItMjY3Ny5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtYm9vc3QtYXNpby1kZXRhaWwtc29ja2V0X3R5cGVzLmhwcC1maXgtcG9sbC5oLWluY2x1ZC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDItYm9vc3QtdGVzdC1leGVjdXRpb25fbW9uaXRvci5ocHAtZml4LW1pcHMtc29mdC1mbG9hdC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDMtc21hcnRfcHRyLW1pcHMtYXNzZW1ibHktZG9lc24tdC1jb21waWxlLWluLW1pcHMxNmUtbS5wYXRjaCBcCisgICAgZmlsZTovLzAwMDQtVXNlLWF0b21pYy1ieS1kZWZhdWx0LXdoZW4tQk9PU1RfTk9fQ1hYMTFfSERSX0FUT01JQy5wYXRjaCBcCisgICAgZmlsZTovL2Jvb3N0LW1hdGgtZGlzYWJsZS1wY2gtZm9yLWdjYy5wYXRjaCBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY2EtY2VydGlmaWNhdGVzL2NhLWNlcnRpZmljYXRlcy8wMDAxLXVwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMtZG9uLXQtdXNlLURlYmlhbmlzbXMtaW4tcnVuLXAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY2EtY2VydGlmaWNhdGVzL2NhLWNlcnRpZmljYXRlcy8wMDAxLXVwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMtZG9uLXQtdXNlLURlYmlhbmlzbXMtaW4tcnVuLXAucGF0Y2gKaW5kZXggNGI0YjI4Ny4uNGE4YWU1ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2NhLWNlcnRpZmljYXRlcy9jYS1jZXJ0aWZpY2F0ZXMvMDAwMS11cGRhdGUtY2EtY2VydGlmaWNhdGVzLWRvbi10LXVzZS1EZWJpYW5pc21zLWluLXJ1bi1wLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jYS1jZXJ0aWZpY2F0ZXMvY2EtY2VydGlmaWNhdGVzLzAwMDEtdXBkYXRlLWNhLWNlcnRpZmljYXRlcy1kb24tdC11c2UtRGViaWFuaXNtcy1pbi1ydW4tcC5wYXRjaApAQCAtNiw5ICs2LDEzIEBACiAKIHwgUnVubmluZyBob29rcyBpbiBbLi4uXS9yb290ZnMvZXRjL2NhLWNlcnRpZmljYXRlcy91cGRhdGUuZC4uLgogfCBbLi4uXS91c3Ivc2Jpbi91cGRhdGUtY2EtY2VydGlmaWNhdGVzOiBsaW5lIDE5NDogTm90OiBjb21tYW5kIG5vdCBmb3VuZAorfCBbLi4uXS91c3Ivc2Jpbi91cGRhdGUtY2EtY2VydGlmaWNhdGVzOiBsaW5lIDIzMDogTm90IGEgZGlyZWN0b3J5OiAtLTogY29tbWFuZCBub3QgZm91bmQKK3wgRTogTm90IGEgZGlyZWN0b3J5OiAtLSBleGl0ZWQgd2l0aCBjb2RlIDEyNy4KKwogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKIFNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBNYWNpZWogQm9yemVja2kgPG1hY2llai5ib3J6ZWNraUBybmRpdHkuY29tPgogLS0tCiAgc2Jpbi91cGRhdGUtY2EtY2VydGlmaWNhdGVzIHwgNCArLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAzIGRlbGV0aW9ucygtKQpAQCAtMjQsNyArMjgsNyBAQAogLSAgVkVSQk9TRV9BUkc9CiAtICBbICIkdmVyYm9zZSIgPSAwIF0gfHwgVkVSQk9TRV9BUkc9Ii0tdmVyYm9zZSIKIC0gIGV2YWwgcnVuLXBhcnRzICIkVkVSQk9TRV9BUkciIC0tdGVzdCAtLSAiJEhPT0tTRElSIiB8IHdoaWxlIHJlYWQgaG9vawotKyAgZXZhbCBydW4tcGFydHMgLS10ZXN0IC0tICIkSE9PS1NESVIiIHwgd2hpbGUgcmVhZCBob29rCisrICBldmFsIHJ1bi1wYXJ0cyAtLXRlc3QgIiRIT09LU0RJUiIgfCB3aGlsZSByZWFkIGhvb2sKICAgIGRvCiAgICAgICggY2F0ICIkQURERUQiCiAgICAgICAgY2F0ICIkUkVNT1ZFRCIgKSB8ICIkaG9vayIgfHwgZWNobyAiRTogJGhvb2sgZXhpdGVkIHdpdGggY29kZSAkPy4iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY2EtY2VydGlmaWNhdGVzL2NhLWNlcnRpZmljYXRlcy8wMDAxLXVwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMtcmVtb3ZlLWMtcmVoYXNoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2NhLWNlcnRpZmljYXRlcy9jYS1jZXJ0aWZpY2F0ZXMvMDAwMS11cGRhdGUtY2EtY2VydGlmaWNhdGVzLXJlbW92ZS1jLXJlaGFzaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmYwMjcyMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY2EtY2VydGlmaWNhdGVzL2NhLWNlcnRpZmljYXRlcy8wMDAxLXVwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMtcmVtb3ZlLWMtcmVoYXNoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUZyb20gMTExZTkwNWZlOTMxZGExYTM4MDBhY2NmYzY3NWNjMDFjOGVlMDgwYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFVsZiBTYW11ZWxzc29uIDx1bGZAZW1hZ2lpLmNvbT4KLURhdGU6IFR1ZSwgMjggRmViIDIwMTIgMDY6NDI6NTggKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gdXBkYXRlLWNhLWNlcnRpZmljYXRlczogcmVtb3ZlIGMgcmVoYXNoCi0KLVVwZGF0ZWQgZWFybGllciBwYXRjaCB0byBhcHBseSBjbGVhbiBvbiAyMDEyLTAyLTEyCi1TaWduZWQtb2ZmLWJ5OiBVbGYgU2FtdWVsc3NvbiA8dWxmQGVtYWdpaS5jb20+Ci0tLS0KLSBzYmluL3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMgfCAgIDIwICsrKysrKysrKystLS0tLS0tLS0tCi0gMSBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NiaW4vdXBkYXRlLWNhLWNlcnRpZmljYXRlcyBiL3NiaW4vdXBkYXRlLWNhLWNlcnRpZmljYXRlcwotaW5kZXggNTM3NTk1MC4uYzU2N2UzZCAxMDA3NTUKLS0tLSBhL3NiaW4vdXBkYXRlLWNhLWNlcnRpZmljYXRlcwotKysrIGIvc2Jpbi91cGRhdGUtY2EtY2VydGlmaWNhdGVzCi1AQCAtMTMyLDE2ICsxMzIsMTYgQEAgcm0gLWYgIiRDRVJUQlVORExFIgotIEFEREVEX0NOVD0kKHdjIC1sIDwgIiRBRERFRCIpCi0gUkVNT1ZFRF9DTlQ9JCh3YyAtbCA8ICIkUkVNT1ZFRCIpCi0KLS1pZiBbICIkQURERURfQ05UIiAtZ3QgMCBdIHx8IFsgIiRSRU1PVkVEX0NOVCIgLWd0IDAgXQotLXRoZW4KLS0gICMgb25seSBydW4gaWYgc2V0IG9mIGZpbGVzIGhhcyBjaGFuZ2VkCi0tICBpZiBbICIkdmVyYm9zZSIgPSAwIF0KLS0gIHRoZW4KLS0gICAgY19yZWhhc2ggLiA+IC9kZXYvbnVsbAotLSAgZWxzZQotLSAgICBjX3JlaGFzaCAuCi0tICBmaQotLWZpCi0rI2lmIFsgIiRBRERFRF9DTlQiIC1ndCAwIF0gfHwgWyAiJFJFTU9WRURfQ05UIiAtZ3QgMCBdCi0rI3RoZW4KLSsjICAjIG9ubHkgcnVuIGlmIHNldCBvZiBmaWxlcyBoYXMgY2hhbmdlZAotKyMgIGlmIFsgIiR2ZXJib3NlIiA9IDAgXQotKyMgIHRoZW4KLSsjICAgIGNfcmVoYXNoIC4gPiAvZGV2L251bGwKLSsjICBlbHNlCi0rIyAgICBjX3JlaGFzaCAuCi0rIyAgZmkKLSsjZmkKLQotIGNobW9kIDA2NDQgIiRURU1QQlVORExFIgotIG12IC1mICIkVEVNUEJVTkRMRSIgIiRDRVJUQlVORExFIgotLS0KLTEuNy40LjEKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jYS1jZXJ0aWZpY2F0ZXMvY2EtY2VydGlmaWNhdGVzXzIwMTYwMTA0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2NhLWNlcnRpZmljYXRlcy9jYS1jZXJ0aWZpY2F0ZXNfMjAxNjAxMDQuYmIKaW5kZXggZTBmMTkzOS4uMWJlYTA2NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2NhLWNlcnRpZmljYXRlcy9jYS1jZXJ0aWZpY2F0ZXNfMjAxNjAxMDQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2NhLWNlcnRpZmljYXRlcy9jYS1jZXJ0aWZpY2F0ZXNfMjAxNjAxMDQuYmIKQEAgLTksMTIgKzksMTIgQEAKIAogIyBUaGlzIGlzIG5lZWRlZCB0byBlbnN1cmUgd2UgY2FuIHJ1biB0aGUgcG9zdGluc3QgYXQgaW1hZ2UgY3JlYXRpb24gdGltZQogREVQRU5EUyA9ICJjYS1jZXJ0aWZpY2F0ZXMtbmF0aXZlIgotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiIgorREVQRU5EU19jbGFzcy1uYXRpdmUgPSAib3BlbnNzbC1uYXRpdmUiCitERVBFTkRTX2NsYXNzLW5hdGl2ZXNkayA9ICJjYS1jZXJ0aWZpY2F0ZXMtbmF0aXZlIG9wZW5zc2wtbmF0aXZlIgogCiBTUkNSRVYgPSAiZjU0NzE1NzAyYzVjMDU4MWM5NDYxZjc4ZmQ4NGUyYzhkMmVjMjQzYyIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9hbm9uc2NtLmRlYmlhbi5vcmcvY29sbGFiLW1haW50L2NhLWNlcnRpZmljYXRlcy5naXQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS11cGRhdGUtY2EtY2VydGlmaWNhdGVzLXJlbW92ZS1jLXJlaGFzaC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAyLXVwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMtdXNlLVNZU1JPT1QucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS11cGRhdGUtY2EtY2VydGlmaWNhdGVzLWRvbi10LXVzZS1EZWJpYW5pc21zLWluLXJ1bi1wLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMtc3VwcG9ydC1Ub3lib3gucGF0Y2ggXApAQCAtNzcsNCArNzcsNiBAQAogICAgIFNZU1JPT1Q9IiR7RH0ke2Jhc2VfcHJlZml4fSIgJHtEfSR7c2JpbmRpcn0vdXBkYXRlLWNhLWNlcnRpZmljYXRlcwogfQogCitSREVQRU5EU18ke1BOfSArPSAib3BlbnNzbCIKKwogQkJDTEFTU0VYVEVORCArPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jb25zb2xla2l0L2NvbnNvbGVraXRfMC40LjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY29uc29sZWtpdC9jb25zb2xla2l0XzAuNC42LmJiCmluZGV4IDI5NzRlMzYuLmNlYWMwZmUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jb25zb2xla2l0L2NvbnNvbGVraXRfMC40LjYuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2NvbnNvbGVraXQvY29uc29sZWtpdF8wLjQuNi5iYgpAQCAtMzAsNyArMzAsNyBAQAogUEFDS0FHRUNPTkZJR1twb2xpY3lraXRdID0gIi0td2l0aC1wb2xraXQsLS13aXRob3V0LXBvbGtpdCxwb2xraXQiCiBQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLywtLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9IgogCi1GSUxFU18ke1BOfSArPSAiJHtsb2NhbHN0YXRlZGlyfS9sb2cvQ29uc29sZUtpdCAke2V4ZWNfcHJlZml4fS9saWIvQ29uc29sZUtpdCBcCitGSUxFU18ke1BOfSArPSAiJHtleGVjX3ByZWZpeH0vbGliL0NvbnNvbGVLaXQgXAogICAgICAgICAgICAgICAgICR7bGliZGlyfS9Db25zb2xlS2l0ICAke3N5c3RlbWRfdW5pdGRpcn0gJHtiYXNlX2xpYmRpcn0gXAogICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xICR7ZGF0YWRpcn0vUG9saWN5S2l0ICR7ZGF0YWRpcn0vcG9sa2l0KiIKIApAQCAtNDUsNiArNDUsNiBAQAogCQkJPiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL2NvbnNvbGVraXQuY29uZgogCWZpCiAKLQkjIFJlbW92ZSAvdmFyL3J1biBmcm9tIHBhY2thZ2UgYXMgY29uc29sZS1raXQtZGFlbW9uIHdpbGwgcG9wdWxhdGUgaXQgb24gc3RhcnR1cAotCXJtIC1mciAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuIgorCSMgUmVtb3ZlIC92YXIvIGRpcmVjdG9yaWVzIGFzIHRoZSBkYWVtb24gY3JlYXRlcyB0aGVtIGFzIHJlcXVpcmVkCisJcm0gLXJmICR7RH0ke2xvY2Fsc3RhdGVkaXJ9CiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsLzAwMDEtcmVwbGFjZS1rcmI1LWNvbmZpZy13aXRoLXBrZy1jb25maWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsLzAwMDEtcmVwbGFjZS1rcmI1LWNvbmZpZy13aXRoLXBrZy1jb25maWcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRlNWQ5OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvMDAwMS1yZXBsYWNlLWtyYjUtY29uZmlnLXdpdGgtcGtnLWNvbmZpZy5wYXRjaApAQCAtMCwwICsxLDQzIEBACitbUEFUQ0hdIHJlcGxhY2Uga3JiNS1jb25maWcgd2l0aCBwa2ctY29uZmlnCisKK1Vwc3RyZWFtLVN0YXR1czogIFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgNiArKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBlOTliMzAzLi5kYzkzZjM5IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xMTk2LDcgKzExOTYsNyBAQCBBQ19BUkdfV0lUSChnc3NhcGksCisgICBmaQorIF0pCisgCistOiAke0tSQjVDT05GSUc6PSIkR1NTQVBJX1JPT1QvYmluL2tyYjUtY29uZmlnIn0KKytLUkI1Q09ORklHPWB3aGljaCBwa2ctY29uZmlnYAorIAorIHNhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKKyBBQ19NU0dfQ0hFQ0tJTkcoW2lmIEdTUy1BUEkgc3VwcG9ydCBpcyByZXF1ZXN0ZWRdKQorQEAgLTEyMDcsNyArMTIwNyw3IEBAIGlmIHRlc3QgeCIkd2FudF9nc3MiID0geHllczsgdGhlbgorICAgICAgaWYgdGVzdCAtbiAiJGhvc3RfYWxpYXMiIC1hIC1mICIkR1NTQVBJX1JPT1QvYmluLyRob3N0X2FsaWFzLWtyYjUtY29uZmlnIjsgdGhlbgorICAgICAgICAgR1NTQVBJX0lOQ1M9YCRHU1NBUElfUk9PVC9iaW4vJGhvc3RfYWxpYXMta3JiNS1jb25maWcgLS1jZmxhZ3MgZ3NzYXBpYAorICAgICAgZWxpZiB0ZXN0IC1mICIkS1JCNUNPTkZJRyI7IHRoZW4KKy0gICAgICAgIEdTU0FQSV9JTkNTPWAkS1JCNUNPTkZJRyAtLWNmbGFncyBnc3NhcGlgCisrICAgICAgICBHU1NBUElfSU5DUz1gJEtSQjVDT05GSUcgLS1jZmxhZ3MgbWl0LWtyYjUtZ3NzYXBpYAorICAgICAgZWxpZiB0ZXN0ICIkR1NTQVBJX1JPT1QiICE9ICJ5ZXMiOyB0aGVuCisgICAgICAgICBHU1NBUElfSU5DUz0iLUkkR1NTQVBJX1JPT1QvaW5jbHVkZSIKKyAgICAgIGZpCitAQCAtMTMwMCw3ICsxMzAwLDcgQEAgaWYgdGVzdCB4IiR3YW50X2dzcyIgPSB4eWVzOyB0aGVuCisgICAgICAgICBlbGlmIHRlc3QgLWYgIiRLUkI1Q09ORklHIjsgdGhlbgorICAgICAgICAgICAgZG5sIGtyYjUtY29uZmlnIGRvZXNuJ3QgaGF2ZSAtLWxpYnMtb25seS1MIG9yIHNpbWlsYXIsIHB1dCBldmVyeXRoaW5nCisgICAgICAgICAgICBkbmwgaW50byBMSUJTCistICAgICAgICAgICBnc3NfbGlicz1gJEtSQjVDT05GSUcgLS1saWJzIGdzc2FwaWAKKysgICAgICAgICAgIGdzc19saWJzPWAkS1JCNUNPTkZJRyAtLWxpYnMgbWl0LWtyYjUtZ3NzYXBpYAorICAgICAgICAgICAgTElCUz0iJGdzc19saWJzICRMSUJTIgorICAgICAgICAgZWxzZQorICAgICAgICAgICAgY2FzZSAkaG9zdCBpbgorLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsXzcuNDcuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmxfNy40Ny4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjE3M2Q4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmxfNy40Ny4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotU1VNTUFSWSA9ICJDb21tYW5kIGxpbmUgdG9vbCBhbmQgbGlicmFyeSBmb3IgY2xpZW50LXNpZGUgVVJMIHRyYW5zZmVycyIKLUhPTUVQQUdFID0gImh0dHA6Ly9jdXJsLmhheHguc2UvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGlzdC5jZ2k/bGlzdD1jdXJsLXRyYWNrZXIiCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORztiZWdpbmxpbmU9ODttZDU9M2EzNDk0MmY0YWUzZmJmMWEzMDMxNjA3MTRlNjY0YWMiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2N1cmwuaGF4eC5zZS9kb3dubG9hZC9jdXJsLSR7UFZ9LnRhci5iejIiCi0KLSMgY3VybCBsaWtlcyB0byBzZXQgLWcwIGluIENGTEFHUywgc28gd2Ugc3RvcCBpdAotIyBmcm9tIG11Y2tpbmcgYXJvdW5kIHdpdGggZGVidWcgb3B0aW9ucwotIwotU1JDX1VSSSArPSAiIGZpbGU6Ly9jb25maWd1cmVfYWMucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5ZWEzMTIzNDQ5NDM5YmJkOTYwY2QyNWNmOTg3OTZmYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkZGM2NDNhYjkzODJlMjRiYmU0NzQ3ZDQzZGYxODlhMGE2Y2UzOGZjYjMzZGYwNDFiOWNiMGIzY2Q0N2FlOThmIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgYmluY29uZmlnIG11bHRpbGliX2hlYWRlcgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJpcHY2IiwgImlwdjYiLCAiIiwgZCl9IGdudXRscyBwcm94eSB6bGliIgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiaXB2NiBwcm94eSBzc2wgemxpYiIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID0gImlwdjYgcHJveHkgc3NsIHpsaWIiCi0KLVBBQ0tBR0VDT05GSUdbZGljdF0gPSAiLS1lbmFibGUtZGljdCwtLWRpc2FibGUtZGljdCwiCi1QQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLWdudXRscywtLXdpdGhvdXQtZ251dGxzLGdudXRscyIKLVBBQ0tBR0VDT05GSUdbZ29waGVyXSA9ICItLWVuYWJsZS1nb3BoZXIsLS1kaXNhYmxlLWdvcGhlciwiCi1QQUNLQUdFQ09ORklHW2ltYXBdID0gIi0tZW5hYmxlLWltYXAsLS1kaXNhYmxlLWltYXAsIgotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKLVBBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS1lbmFibGUtbGRhcCwtLWRpc2FibGUtbGRhcCwiCi1QQUNLQUdFQ09ORklHW2xkYXBzXSA9ICItLWVuYWJsZS1sZGFwcywtLWRpc2FibGUtbGRhcHMsIgotUEFDS0FHRUNPTkZJR1tsaWJpZG5dID0gIi0td2l0aC1saWJpZG4sLS13aXRob3V0LWxpYmlkbixsaWJpZG4iCi1QQUNLQUdFQ09ORklHW2xpYnNzaDJdID0gIi0td2l0aC1saWJzc2gyLC0td2l0aG91dC1saWJzc2gyLGxpYnNzaDIiCi1QQUNLQUdFQ09ORklHW3BvcDNdID0gIi0tZW5hYmxlLXBvcDMsLS1kaXNhYmxlLXBvcDMsIgotUEFDS0FHRUNPTkZJR1twcm94eV0gPSAiLS1lbmFibGUtcHJveHksLS1kaXNhYmxlLXByb3h5LCIKLVBBQ0tBR0VDT05GSUdbcnRtcGR1bXBdID0gIi0td2l0aC1saWJydG1wLC0td2l0aG91dC1saWJydG1wLHJ0bXBkdW1wIgotUEFDS0FHRUNPTkZJR1tydHNwXSA9ICItLWVuYWJsZS1ydHNwLC0tZGlzYWJsZS1ydHNwLCIKLVBBQ0tBR0VDT05GSUdbc21iXSA9ICItLWVuYWJsZS1zbWIsLS1kaXNhYmxlLXNtYiwiCi1QQUNLQUdFQ09ORklHW3NtdHBdID0gIi0tZW5hYmxlLXNtdHAsLS1kaXNhYmxlLXNtdHAsIgotUEFDS0FHRUNPTkZJR1tzc2xdID0gIi0td2l0aC1zc2wgLS13aXRoLXJhbmRvbT0vZGV2L3VyYW5kb20sLS13aXRob3V0LXNzbCxvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1t0ZWxuZXRdID0gIi0tZW5hYmxlLXRlbG5ldCwtLWRpc2FibGUtdGVsbmV0LCIKLVBBQ0tBR0VDT05GSUdbdGZ0cF0gPSAiLS1lbmFibGUtdGZ0cCwtLWRpc2FibGUtdGZ0cCwiCi1QQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliPSR7U1RBR0lOR19MSUJESVJ9Ly4uLywtLXdpdGhvdXQtemxpYix6bGliIgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLWVuYWJsZS1jcnlwdG8tYXV0aCBcCi0gICAgLS13aXRoLWNhLWJ1bmRsZT0ke3N5c2NvbmZkaXJ9L3NzbC9jZXJ0cy9jYS1jZXJ0aWZpY2F0ZXMuY3J0IFwKLSAgICAtLXdpdGhvdXQtbGlibWV0YWxpbmsgXAotICAgIC0td2l0aG91dC1saWJwc2wgXAotICAgIC0td2l0aG91dC1uZ2h0dHAyIFwKLSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0Jb2VfbXVsdGlsaWJfaGVhZGVyIGN1cmwvY3VybGJ1aWxkLmgKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotCSMgY2xlYW51cCBidWlsZHBhdGhzIGZyb20gY3VybC1jb25maWcKLQlzZWQgLWkgLWUgJ3MsJHtTVEFHSU5HX0RJUl9IT1NUfSwsZycgJHtEfSR7YmluZGlyfS9jdXJsLWNvbmZpZwotfQotCi1QQUNLQUdFUyA9KyAibGliJHtCUE59IgotCi1GSUxFU19saWIke0JQTn0gPSAiJHtsaWJkaXJ9L2xpYiouc28uKiIKLVJSRUNPTU1FTkRTX2xpYiR7QlBOfSArPSAiY2EtY2VydGlmaWNhdGVzIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS96c2giCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmxfNy41MC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybF83LjUwLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTIxNDE5YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmxfNy41MC4xLmJiCkBAIC0wLDAgKzEsNzEgQEAKK1NVTU1BUlkgPSAiQ29tbWFuZCBsaW5lIHRvb2wgYW5kIGxpYnJhcnkgZm9yIGNsaWVudC1zaWRlIFVSTCB0cmFuc2ZlcnMiCitIT01FUEFHRSA9ICJodHRwOi8vY3VybC5oYXh4LnNlLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpc3QuY2dpP2xpc3Q9Y3VybC10cmFja2VyIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7YmVnaW5saW5lPTg7bWQ1PTNhMzQ5NDJmNGFlM2ZiZjFhMzAzMTYwNzE0ZTY2NGFjIgorCitTUkNfVVJJID0gImh0dHA6Ly9jdXJsLmhheHguc2UvZG93bmxvYWQvY3VybC0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcmVwbGFjZS1rcmI1LWNvbmZpZy13aXRoLXBrZy1jb25maWcucGF0Y2ggXAorIgorCisjIGN1cmwgbGlrZXMgdG8gc2V0IC1nMCBpbiBDRkxBR1MsIHNvIHdlIHN0b3AgaXQKKyMgZnJvbSBtdWNraW5nIGFyb3VuZCB3aXRoIGRlYnVnIG9wdGlvbnMKKyMKK1NSQ19VUkkgKz0gIiBmaWxlOi8vY29uZmlndXJlX2FjLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMDE1ZjZhMDIxN2NhNmYyYzU0NDJjYTQwNjQ3NjkyMGIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2MxMmM1ZjU0Y2NhYTFkNDBhYmM2NWQ2NzIxMDdkY2M3NWQzZTFmY2IzOGMyNjc0ODQzMzQyODAwOTZlNTE1NiIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZyBtdWx0aWxpYl9oZWFkZXIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAiaXB2NiIsICJpcHY2IiwgIiIsIGQpfSBnbnV0bHMgcHJveHkgemxpYiIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gImlwdjYgcHJveHkgc3NsIHpsaWIiCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZXNkayA9ICJpcHY2IHByb3h5IHNzbCB6bGliIgorCitQQUNLQUdFQ09ORklHW2RpY3RdID0gIi0tZW5hYmxlLWRpY3QsLS1kaXNhYmxlLWRpY3QsIgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0td2l0aC1nbnV0bHMsLS13aXRob3V0LWdudXRscyxnbnV0bHMiCitQQUNLQUdFQ09ORklHW2dvcGhlcl0gPSAiLS1lbmFibGUtZ29waGVyLC0tZGlzYWJsZS1nb3BoZXIsIgorUEFDS0FHRUNPTkZJR1tpbWFwXSA9ICItLWVuYWJsZS1pbWFwLC0tZGlzYWJsZS1pbWFwLCIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCitQQUNLQUdFQ09ORklHW2xkYXBdID0gIi0tZW5hYmxlLWxkYXAsLS1kaXNhYmxlLWxkYXAsIgorUEFDS0FHRUNPTkZJR1tsZGFwc10gPSAiLS1lbmFibGUtbGRhcHMsLS1kaXNhYmxlLWxkYXBzLCIKK1BBQ0tBR0VDT05GSUdbbGliaWRuXSA9ICItLXdpdGgtbGliaWRuLC0td2l0aG91dC1saWJpZG4sbGliaWRuIgorUEFDS0FHRUNPTkZJR1tsaWJzc2gyXSA9ICItLXdpdGgtbGlic3NoMiwtLXdpdGhvdXQtbGlic3NoMixsaWJzc2gyIgorUEFDS0FHRUNPTkZJR1twb3AzXSA9ICItLWVuYWJsZS1wb3AzLC0tZGlzYWJsZS1wb3AzLCIKK1BBQ0tBR0VDT05GSUdbcHJveHldID0gIi0tZW5hYmxlLXByb3h5LC0tZGlzYWJsZS1wcm94eSwiCitQQUNLQUdFQ09ORklHW3J0bXBkdW1wXSA9ICItLXdpdGgtbGlicnRtcCwtLXdpdGhvdXQtbGlicnRtcCxydG1wZHVtcCIKK1BBQ0tBR0VDT05GSUdbcnRzcF0gPSAiLS1lbmFibGUtcnRzcCwtLWRpc2FibGUtcnRzcCwiCitQQUNLQUdFQ09ORklHW3NtYl0gPSAiLS1lbmFibGUtc21iLC0tZGlzYWJsZS1zbWIsIgorUEFDS0FHRUNPTkZJR1tzbXRwXSA9ICItLWVuYWJsZS1zbXRwLC0tZGlzYWJsZS1zbXRwLCIKK1BBQ0tBR0VDT05GSUdbc3NsXSA9ICItLXdpdGgtc3NsIC0td2l0aC1yYW5kb209L2Rldi91cmFuZG9tLC0td2l0aG91dC1zc2wsb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbdGVsbmV0XSA9ICItLWVuYWJsZS10ZWxuZXQsLS1kaXNhYmxlLXRlbG5ldCwiCitQQUNLQUdFQ09ORklHW3RmdHBdID0gIi0tZW5hYmxlLXRmdHAsLS1kaXNhYmxlLXRmdHAsIgorUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYj0ke1NUQUdJTkdfTElCRElSfS8uLi8sLS13aXRob3V0LXpsaWIsemxpYiIKK1BBQ0tBR0VDT05GSUdba3JiNV0gPSAiLS13aXRoLWdzc2FwaSwtLXdpdGhvdXQtZ3NzYXBpLGtyYjUiCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0tZW5hYmxlLWNyeXB0by1hdXRoIFwKKyAgICAtLXdpdGgtY2EtYnVuZGxlPSR7c3lzY29uZmRpcn0vc3NsL2NlcnRzL2NhLWNlcnRpZmljYXRlcy5jcnQgXAorICAgIC0td2l0aG91dC1saWJtZXRhbGluayBcCisgICAgLS13aXRob3V0LWxpYnBzbCBcCisgICAgLS13aXRob3V0LW5naHR0cDIgXAorIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlvZV9tdWx0aWxpYl9oZWFkZXIgY3VybC9jdXJsYnVpbGQuaAorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CisJIyBjbGVhbnVwIGJ1aWxkcGF0aHMgZnJvbSBjdXJsLWNvbmZpZworCXNlZCAtaSAtZSAncywke1NUQUdJTkdfRElSX0hPU1R9LCxnJyAke0R9JHtiaW5kaXJ9L2N1cmwtY29uZmlnCit9CisKK1BBQ0tBR0VTID0rICJsaWIke0JQTn0iCisKK0ZJTEVTX2xpYiR7QlBOfSA9ICIke2xpYmRpcn0vbGliKi5zby4qIgorUlJFQ09NTUVORFNfbGliJHtCUE59ICs9ICJjYS1jZXJ0aWZpY2F0ZXMiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3pzaCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiL01ha2VmaWxlLWxldC1saWJkYi02LjAubGEtZGVwZW5kLW9zX21hcC5sLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiL01ha2VmaWxlLWxldC1saWJkYi02LjAubGEtZGVwZW5kLW9zX21hcC5sLnBhdGNoCmluZGV4IGQ0YzZiYjguLjY4YTIxMzEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kYi9kYi9NYWtlZmlsZS1sZXQtbGliZGItNi4wLmxhLWRlcGVuZC1vc19tYXAubC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGIvTWFrZWZpbGUtbGV0LWxpYmRiLTYuMC5sYS1kZXBlbmQtb3NfbWFwLmwucGF0Y2gKQEAgLTE0LDEwICsxNCwxMCBAQAogIGRpc3QvTWFrZWZpbGUuaW4gfCAgICAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9kaXN0L01ha2VmaWxlLmluIGIvZGlzdC9NYWtlZmlsZS5pbgotaW5kZXggMGE0MjM3NS4uZDllMDViOSAxMDA2NDQKLS0tLSBhL2Rpc3QvTWFrZWZpbGUuaW4KLSsrKyBiL2Rpc3QvTWFrZWZpbGUuaW4KK0luZGV4OiBkYi02LjAuMzAvZGlzdC9NYWtlZmlsZS5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGRiLTYuMC4zMC5vcmlnL2Rpc3QvTWFrZWZpbGUuaW4KKysrKyBkYi02LjAuMzAvZGlzdC9NYWtlZmlsZS5pbgogQEAgLTg2Myw3ICs4NjMsNyBAQCAkKGxpYmRiX3ZlcnNpb24pOiAkKENfT0JKUykKICAJJChMTikgLXMgJChsaWJkYl92ZXJzaW9uKSAkKGxpYmRiKQogIApAQCAtMjcsNiArMjcsMyBAQAogIAkkKFNPTElOSykgJChTT0ZMQUdTKSAkKExERkxBR1MpIC1vICRAICQoQ19PQkpTKSBcCiAgCQkkKExJQkNTT19MSUJTKQogIAkkKFJNKSAkKGxpYmRiKQotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kYi9kYi9NYWtlZmlsZS1sZXQtbGlic29fdGFyZ2V0LWRlcGVuZC1vbi1idF9yZWMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGIvTWFrZWZpbGUtbGV0LWxpYnNvX3RhcmdldC1kZXBlbmQtb24tYnRfcmVjLnBhdGNoCmluZGV4IDMyOWJmZjUuLjg2ODA0MDggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kYi9kYi9NYWtlZmlsZS1sZXQtbGlic29fdGFyZ2V0LWRlcGVuZC1vbi1idF9yZWMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiL01ha2VmaWxlLWxldC1saWJzb190YXJnZXQtZGVwZW5kLW9uLWJ0X3JlYy5wYXRjaApAQCAtMTUsMTAgKzE1LDEwIEBACiAgTWFrZWZpbGUuaW4gfCAgICAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCi1pbmRleCBlNDUxZjcwLi4wYTQyMzc1IDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuaW4KLSsrKyBiL01ha2VmaWxlLmluCitJbmRleDogZGItNi4wLjMwL2Rpc3QvTWFrZWZpbGUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBkYi02LjAuMzAub3JpZy9kaXN0L01ha2VmaWxlLmluCisrKysgZGItNi4wLjMwL2Rpc3QvTWFrZWZpbGUuaW4KIEBAIC04NjMsNyArODYzLDcgQEAgJChsaWJkYl92ZXJzaW9uKTogJChDX09CSlMpCiAgCSQoTE4pIC1zICQobGliZGJfdmVyc2lvbikgJChsaWJkYikKICAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kYi9kYi9hcm0tdGh1bWItbXV0ZXhfZGI1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiL2FybS10aHVtYi1tdXRleF9kYjUucGF0Y2gKaW5kZXggMzRlOGRiOC4uNmE4ZWFkYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiL2FybS10aHVtYi1tdXRleF9kYjUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiL2FybS10aHVtYi1tdXRleF9kYjUucGF0Y2gKQEAgLTEwLDkgKzEwLDExIEBACiAKIEF1dGhvcjogamJvd2xlckBuc2x1Mi1saW51eC5vcmcKIAotLS0tIGRiLTUuMS4xOS9zcmMvZGJpbmMvbXV0ZXhfaW50Lmgub3JpZwkyMDExLTAxLTA1IDE5OjIxOjQyLjE4MTgwNTM2NiAtMDYwMAotKysrIGRiLTUuMS4xOS9zcmMvZGJpbmMvbXV0ZXhfaW50LmgJMjAxMS0wMS0wNSAxOToyNDo1My4xNDE4NTMxMTcgLTA2MDAKLUBAIC00NzQsNiArNDc0LDI1IEBACitJbmRleDogZGItNi4wLjMwL3NyYy9kYmluYy9tdXRleF9pbnQuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGRiLTYuMC4zMC5vcmlnL3NyYy9kYmluYy9tdXRleF9pbnQuaAorKysrIGRiLTYuMC4zMC9zcmMvZGJpbmMvbXV0ZXhfaW50LmgKK0BAIC00NzQsNiArNDc0LDI1IEBAIHR5cGVkZWYgdW5zaWduZWQgY2hhciB0c2xfdDsKICAKICAjaWZkZWYgTE9BRF9BQ1RVQUxfTVVURVhfQ09ERQogIC8qIGdjYy9hcm06IDAgaXMgY2xlYXIsIDEgaXMgc2V0LiAqLwpAQCAtMzgsNyArNDAsNyBAQAogICNkZWZpbmUJTVVURVhfU0VUKHRzbCkgKHsJCQkJCQlcCiAgCWludCBfX3I7CQkJCQkJCVwKICAJX19hc21fXyB2b2xhdGlsZSgJCQkJCQlcCi1AQCAtNDg0LDYgKzUwMyw3IEBACitAQCAtNDg0LDYgKzUwMyw3IEBAIHR5cGVkZWYgdW5zaWduZWQgY2hhciB0c2xfdDsKICAJICAgICk7CQkJCQkJCQlcCiAgCV9fciAmIDE7CQkJCQkJCVwKICB9KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiL2ZpeC1wYXJhbGxlbC1idWlsZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kYi9kYi9maXgtcGFyYWxsZWwtYnVpbGQucGF0Y2gKaW5kZXggMmM3ZjFlMS4uMjc2MzJlMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiL2ZpeC1wYXJhbGxlbC1idWlsZC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGIvZml4LXBhcmFsbGVsLWJ1aWxkLnBhdGNoCkBAIC02LDkgKzYsMTEgQEAKIAogU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgogCi0tLS0gZGlzdC5vcmlnL01ha2VmaWxlLmluCTIwMTItMDUtMTEgMTk6NTc6NDguMDAwMDAwMDAwICswMjAwCi0rKysgZGlzdC9NYWtlZmlsZS5pbgkyMDEzLTEwLTMxIDE4OjE3OjExLjg3NTUzMjUyMiArMDEwMAotQEAgLTEwMzQsNyArMTAzNCw3IEBACitJbmRleDogZGItNi4wLjMwL2Rpc3QvTWFrZWZpbGUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBkYi02LjAuMzAub3JpZy9kaXN0L01ha2VmaWxlLmluCisrKysgZGItNi4wLjMwL2Rpc3QvTWFrZWZpbGUuaW4KK0BAIC0xMDQxLDcgKzEwNDEsNyBAQCBkYl9yZWNvdmVyOiBkYl9yZWNvdmVyQG9AIHV0aWxfc2lnQG9AICQoCiAgCSAgICBkYl9yZWNvdmVyQG9AIHV0aWxfc2lnQG9AICQoREVGX0xJQikgJChMSUJTKQogIAkkKFBPU1RMSU5LKSAkQAogIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiXzUuMy4yOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kYi9kYl81LjMuMjguYmIKaW5kZXggYzcyNGYwNC4uMGI1MWExZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiXzUuMy4yOC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGJfNS4zLjI4LmJiCkBAIC0xNSwxNSArMTUsMTcgQEAKIFZJUlRVQUxfTkFNRSA/PSAidmlydHVhbC9kYiIKIFJDT05GTElDVFNfJHtQTn0gPSAiZGIzIgogCitQUiA9ICJyMSIKKwogU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQub3JhY2xlLmNvbS9iZXJrZWxleS1kYi9kYi0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJICs9ICJmaWxlOi8vYXJtLXRodW1iLW11dGV4X2RiNS5wYXRjaDtwYXRjaGRpcj0uLiBcCitTUkNfVVJJICs9ICJmaWxlOi8vYXJtLXRodW1iLW11dGV4X2RiNS5wYXRjaCBcCiAgICAgICAgICAgICBmaWxlOi8vZml4LXBhcmFsbGVsLWJ1aWxkLnBhdGNoIFwKICAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiYjk5NDU0NTY0ZDViNDQ3OTc1MDU2NzAzMWQ2NmZlMjQiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTBhOTkyZDc0MDcwOTg5MmU4MWY5ZDkzZjA2ZGFmMzA1Y2Y3M2ZiODFiNTQ1YWZlNzI0NzgwNDMxNzJjMzYyOCIKIAotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vLi4vTElDRU5TRTttZDU9ZWQxMTU4ZTMxNDM3ZjRmODdjZGQ0YWIyYjg2MTM5NTUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lZDExNThlMzE0MzdmNGY4N2NkZDRhYjJiODYxMzk1NSIKIAogaW5oZXJpdCBhdXRvdG9vbHMKIApAQCAtMzYsMTQgKzM4LDYgQEAKICMgdG8gc2VsZWN0IHRoZSBjb3JyZWN0IGRiIGluIHRoZSBidWlsZCAoZGlzdHJvKSAuY29uZgogUFJPVklERVMgKz0gIiR7VklSVFVBTF9OQU1FfSIKIAotIyBiaXRiYWtlIGlzbid0IHF1aXRlIGNsZXZlciBlbm91Z2ggdG8gZGVhbCB3aXRoIHNsZWVweWNhdCwKLSMgdGhlIGRpc3RyaWJ1dGlvbiBzaXRzIGluIHRoZSBleHBlY3RlZCBkaXJlY3RvcnksIGJ1dCBhbGwKLSMgdGhlIGJ1aWxkcyBtdXN0IG9jY3VyIGZyb20gYSBzdWItZGlyZWN0b3J5LiAgVGhlIGZvbGxvd2luZwotIyBwZXJzdWFkZXMgYml0YmFrZSB0byBnbyB0byB0aGUgcmlnaHQgcGxhY2UKLVMgPSAiJHtXT1JLRElSfS9kYi0ke1BWfS9kaXN0IgotQiA9ICIke1dPUktESVJ9L2RiLSR7UFZ9L2J1aWxkX3VuaXgiCi1TUERYX1MgPSAiJHtXT1JLRElSfS9kYi0ke1BWfSIKLQogIyBUaGUgZXhlY3V0YWJsZXMgZ28gaW4gYSBzZXBhcmF0ZSBwYWNrYWdlIC0gdHlwaWNhbGx5IHRoZXJlCiAjIGlzIG5vIG5lZWQgdG8gaW5zdGFsbCB0aGVzZSB1bmxlc3MgZG9pbmcgcmVhbCBkYXRhYmFzZQogIyBtYW5hZ2VtZW50IG9uIHRoZSBzeXN0ZW0uCkBAIC03NSwyMSArNjksMjMgQEAKIE1VVEVYID0gIiIKIE1VVEVYX2FybSA9ICIke0FSTV9NVVRFWH0iCiBNVVRFWF9hcm1lYiA9ICIke0FSTV9NVVRFWH0iCi1FWFRSQV9PRUNPTkYgKz0gIiR7TVVURVh9IgotRVhUUkFfT0VNQUtFX2NsYXNzLXRhcmdldCA9ICJMSUJUT09MPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9LyR7SE9TVF9TWVN9LWxpYnRvb2wiCitFWFRSQV9PRUNPTkYgKz0gIiR7TVVURVh9IFNUUklQPXRydWUiCitFWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgTElCVE9PTD0ke1NUQUdJTkdfQklORElSX0NST1NTfS8ke0hPU1RfU1lTfS1saWJ0b29sIgorCitBVVRPVE9PTFNfU0NSSVBUX1BBVEggPSAiJHtTfS9kaXN0IgogCiAjIENhbmNlbCB0aGUgc2l0ZSBzdHVmZiAtIGl0J3Mgc2V0IGZvciBkYjMgYW5kIGRlc3Ryb3lzIHRoZQogIyBjb25maWd1cmUuCiBDT05GSUdfU0lURSA9ICIiCiBkb19jb25maWd1cmUoKSB7Ci0JZ251LWNvbmZpZ2l6ZSAtLWZvcmNlICR7U30KLQlleHBvcnQgU1RSSVA9InRydWUiCisgICAgY2QgJHtCfQorCWdudS1jb25maWdpemUgLS1mb3JjZSAke0FVVE9UT09MU19TQ1JJUFRfUEFUSH0KIAlvZV9ydW5jb25mCiB9CiAKIGRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLQlzZWQgLWkgLWUgJ3N8aGFyZGNvZGVfaW50b19saWJzPXllc3xoYXJkY29kZV9pbnRvX2xpYnM9bm98JyBcCi0JCSR7Qn0vbGlidG9vbAorICAgICMgU3RvcCBsaWJ0b29sIGFkZGluZyBSUEFUSHMKKyAgICBzZWQgLWkgLWUgJ3N8aGFyZGNvZGVfaW50b19saWJzPXllc3xoYXJkY29kZV9pbnRvX2xpYnM9bm98JyAke0J9L2xpYnRvb2wKIH0KIAogZG9faW5zdGFsbF9hcHBlbmQoKSB7CkBAIC0xMTQsNCArMTEwLDMgQEAKIElOU0FORV9TS0lQXyR7UE59LWN4eCA9ICJkZXYtc28iCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiXzYuMC4zMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kYi9kYl82LjAuMzAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwYTQ2OWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiXzYuMC4zMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyNCArMCwwIEBACi0jIFZlcnNpb24gNiBvZiB0aGUgQmVya2VsZXkgREIgZnJvbSBPcmFjbGUgKGZvcm1lcmx5IFNsZWVweWNhdCkKLSMKLSMgQXQgcHJlc2VudCB0aGlzIHBhY2thZ2Ugb25seSBpbnN0YWxscyB0aGUgREIgY29kZQotIyBpdHNlbGYgKHNoYXJlZCBsaWJyYXJpZXMsIC5hIGluIHRoZSBkZXYgcGFja2FnZSksCi0jIGRvY3VtZW50YXRpb24gYW5kIGhlYWRlcnMuCi0jCi0jIFRoZSBoZWFkZXJzIGhhdmUgdGhlIHNhbWUgbmFtZXMgYXMgdGhvc2UgYXMgdjMKLSMgb2YgdGhlIERCLCBvbmx5IG9uZSB2ZXJzaW9uIGNhbiBiZSB1c2VkICpmb3IgZGV2KgotIyBhdCBvbmNlIC0gREIzIGFuZCBEQjYgY2FuIGJvdGggYmUgaW5zdGFsbGVkIG9uIHRoZQotIyBzYW1lIHN5c3RlbSBhdCB0aGUgc2FtZSB0aW1lIGlmIHJlYWxseSBuZWNlc3NhcnkuCi1TRUNUSU9OID0gImxpYnMiCi1TVU1NQVJZID0gIkJlcmtlbGV5IERhdGFiYXNlIHY2IgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcmFjbGUuY29tL3RlY2huZXR3b3JrL2RhdGFiYXNlL2RhdGFiYXNlLXRlY2hub2xvZ2llcy9iZXJrZWxleWRiL292ZXJ2aWV3L2luZGV4Lmh0bWwiCi1MSUNFTlNFID0gIkFHUEwtMy4wIgotVklSVFVBTF9OQU1FID89ICJ2aXJ0dWFsL2RiIgotUkNPTkZMSUNUU18ke1BOfSA9ICJkYjMiCi0KLSMgTm90ZSwgd2hlbiB1cGdyYWRlZCB0byA2LjEueCwgYSBwYXRjaCBpbiBSUE0gd2lsbCBuZWVkIHRvIGJlIHJlbW92ZWQgdG8gYWN0aXZhdGUgZGIgNi4xIHN1cHBvcnQuCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLm9yYWNsZS5jb20vYmVya2VsZXktZGIvZGItJHtQVn0udGFyLmd6IgotU1JDX1VSSSArPSAiZmlsZTovL2FybS10aHVtYi1tdXRleF9kYjUucGF0Y2g7cGF0Y2hkaXI9Li4gXAotICAgICAgICAgICAgZmlsZTovL2ZpeC1wYXJhbGxlbC1idWlsZC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUtbGV0LWxpYnNvX3RhcmdldC1kZXBlbmQtb24tYnRfcmVjLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS1sZXQtbGliZGItNi4wLmxhLWRlcGVuZC1vc19tYXAubC5wYXRjaDtwYXRjaGRpcj0uLiBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImFkMjhlYjg2YWQzMjAzYjU0MjI4NDRkYjE3OWM1ODViIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYwOGU0YjFjZjM5MGU5YmY1NGMwZWYwMGM1YmQ5Y2E3NmQzNmUyMjYxYjlmNGQzM2Q1NDUxNmYzZjZhMjBmZDIiCi0KLSMgRXhjbHVkZSBOQyB2ZXJzaW9ucyB3aGljaCBsYWNrIEFFUyBlbmNyeXB0aW9uCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJkYi0oP1A8cHZlcj5cZCtcLlxkKyhcLlxkKyk/KS50YXIiCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5vcmFjbGUuY29tL3RlY2huZXR3b3JrL3Byb2R1Y3RzL2JlcmtlbGV5ZGIvZG93bmxvYWRzL2luZGV4LTA4Mjk0NC5odG1sIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8uLi9MSUNFTlNFO21kNT0xZWM4YjBiMTdjYzMxNTEzZmUzNWFiMTA3MTZmODQ5MCIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotIyBQdXQgdmlydHVhbC9kYiBpbiBhbnkgYXBwcm9wcmlhdGUgcHJvdmlkZXIgb2YgYQotIyByZWxhdGlvbmFsIGRhdGFiYXNlLCB1c2UgaXQgYXMgYSBkZXBlbmRlbmN5IGluCi0jIHBsYWNlIG9mIGEgc3BlY2lmaWMgZGIgYW5kIHVzZToKLSMKLSMgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvZGIKLSMKLSMgdG8gc2VsZWN0IHRoZSBjb3JyZWN0IGRiIGluIHRoZSBidWlsZCAoZGlzdHJvKSAuY29uZgotUFJPVklERVMgKz0gIiR7VklSVFVBTF9OQU1FfSIKLQotIyBiaXRiYWtlIGlzbid0IHF1aXRlIGNsZXZlciBlbm91Z2ggdG8gZGVhbCB3aXRoIHNsZWVweWNhdCwKLSMgdGhlIGRpc3RyaWJ1dGlvbiBzaXRzIGluIHRoZSBleHBlY3RlZCBkaXJlY3RvcnksIGJ1dCBhbGwKLSMgdGhlIGJ1aWxkcyBtdXN0IG9jY3VyIGZyb20gYSBzdWItZGlyZWN0b3J5LiAgVGhlIGZvbGxvd2luZwotIyBwZXJzdWFkZXMgYml0YmFrZSB0byBnbyB0byB0aGUgcmlnaHQgcGxhY2UKLVMgPSAiJHtXT1JLRElSfS9kYi0ke1BWfS9kaXN0IgotQiA9ICIke1dPUktESVJ9L2RiLSR7UFZ9L2J1aWxkX3VuaXgiCi1TUERYX1MgPSAiJHtXT1JLRElSfS9kYi0ke1BWfSIKLQotIyBUaGUgZXhlY3V0YWJsZXMgZ28gaW4gYSBzZXBhcmF0ZSBwYWNrYWdlIC0gdHlwaWNhbGx5IHRoZXJlCi0jIGlzIG5vIG5lZWQgdG8gaW5zdGFsbCB0aGVzZSB1bmxlc3MgZG9pbmcgcmVhbCBkYXRhYmFzZQotIyBtYW5hZ2VtZW50IG9uIHRoZSBzeXN0ZW0uCi1pbmhlcml0IGxpYl9wYWNrYWdlCi0KLVBBQ0tBR0VTID0rICIke1BOfS1jeHgiCi1GSUxFU18ke1BOfS1jeHggPSAiJHtsaWJkaXJ9LypjeHgqc28iCi0KLQotIyBUaGUgZGV2IHBhY2thZ2UgaGFzIHRoZSAuc28gbGluayAoYXMgaW4gZGIzKSBhbmQgdGhlIC5hJ3MgLQotIyBpdCBpcyB0aGVyZWZvcmUgaW5jb21wYXRpYmxlIChjYW5ub3QgYmUgaW5zdGFsbGVkIGF0IHRoZQotIyBzYW1lIHRpbWUpIGFzIHRoZSBkYjMgcGFja2FnZQotIyBzb3J0IG91dCB0aGUgLnNvIHNpbmNlIHRoZXkgZG8gdmVyc2lvbiBwcmlvciB0byB0aGUgLnNvCi1TT0xJQlMgPSAiLTYqLnNvIgotRklMRVNfU09MSUJTREVWID0gIiR7bGliZGlyfS9saWJkYi5zbyAke2xpYmRpcn0vbGliZGJfY3h4LnNvIgotCi0jY29uZmlndXJhdGlvbiAtIHNldCBpbiBsb2NhbC5jb25mIHRvIG92ZXJyaWRlCi0jIEFsbCB0aGUgLS1kaXNhYmxlLSogb3B0aW9ucyByZXBsYWNlIC0tZW5hYmxlLXNtYWxsYnVpbGQsIHdoaWNoIGJyZWFrcyBhIGJ1bmNoIG9mIHN0dWZmIChlZy4gcG9zdGZpeCkKLURCNl9DT05GSUcgPz0gIi0tZW5hYmxlLW9fZGlyZWN0IC0tZGlzYWJsZS1jcnlwdG9ncmFwaHkgLS1kaXNhYmxlLXF1ZXVlIC0tZGlzYWJsZS1yZXBsaWNhdGlvbiAtLWRpc2FibGUtdmVyaWZ5IC0tZGlzYWJsZS1jb21wYXQxODUgLS1kaXNhYmxlLXNxbCIKLQotRVhUUkFfT0VDT05GID0gIiR7REI2X0NPTkZJR30gLS1lbmFibGUtc2hhcmVkIC0tZW5hYmxlLWN4eCAtLXdpdGgtc3lzcm9vdCIKLQotIyBPdmVycmlkZSB0aGUgTVVURVggc2V0dGluZyBoZXJlLCB0aGUgUE9TSVggbGlicmFyeSBpcwotIyB0aGUgZGVmYXVsdCAtICJQT1NJWC9wdGhyZWFkcy9saWJyYXJ5Ii4KLSMgRG9uJ3QgaWdub3JlIHRoZSBuaWNlIFNXUCBpbnN0cnVjdGlvbiBvbiB0aGUgQVJNOgotIyBUaGVzZSBlbmFibGUgdGhlIEFSTSBhc3NlbWJsZXIgbXV0ZXggY29kZQotQVJNX01VVEVYID0gIi0td2l0aC1tdXRleD1BUk0vZ2NjLWFzc2VtYmx5IgotTVVURVggPSAiIgotTVVURVhfYXJtID0gIiR7QVJNX01VVEVYfSIKLU1VVEVYX2FybWViID0gIiR7QVJNX01VVEVYfSIKLUVYVFJBX09FQ09ORiArPSAiJHtNVVRFWH0iCi1FWFRSQV9PRU1BS0VfY2xhc3MtdGFyZ2V0ID0gIkxJQlRPT0w9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vJHtIT1NUX1NZU30tbGlidG9vbCIKLQotIyBDYW5jZWwgdGhlIHNpdGUgc3R1ZmYgLSBpdCdzIHNldCBmb3IgZGIzIGFuZCBkZXN0cm95cyB0aGUKLSMgY29uZmlndXJlLgotQ09ORklHX1NJVEUgPSAiIgotZG9fY29uZmlndXJlKCkgewotCWdudS1jb25maWdpemUgLS1mb3JjZSAke1N9Ci0JZXhwb3J0IFNUUklQPSJ0cnVlIgotCW9lX3J1bmNvbmYKLX0KLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotCXNlZCAtaSAtZSAnc3xoYXJkY29kZV9pbnRvX2xpYnM9eWVzfGhhcmRjb2RlX2ludG9fbGlicz1ub3wnIFwKLQkJJHtCfS9saWJ0b29sCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCW1rZGlyIC1wICR7RH0vJHtpbmNsdWRlZGlyfS9kYjYwCi0JbXYgJHtEfS8ke2luY2x1ZGVkaXJ9L2RiLmggJHtEfS8ke2luY2x1ZGVkaXJ9L2RiNjAvLgotCW12ICR7RH0vJHtpbmNsdWRlZGlyfS9kYl9jeHguaCAke0R9LyR7aW5jbHVkZWRpcn0vZGI2MC8uCi0JbG4gLXMgZGI2MC9kYi5oICR7RH0vJHtpbmNsdWRlZGlyfS9kYi5oCi0JbG4gLXMgZGI2MC9kYl9jeHguaCAke0R9LyR7aW5jbHVkZWRpcn0vZGJfY3h4LmgKLQotCSMgVGhlIGRvY3MgZW5kIHVwIGluIC91c3IvZG9jcyAtIG5vdCByaWdodC4KLQlpZiB0ZXN0IC1kICIke0R9LyR7cHJlZml4fS9kb2NzIgotCXRoZW4KLQkJbWtkaXIgLXAgIiR7RH0vJHtkYXRhZGlyfSIKLQkJdGVzdCAhIC1kICIke0R9LyR7ZG9jZGlyfSIgfHwgcm0gLXJmICIke0R9LyR7ZG9jZGlyfSIKLQkJbXYgIiR7RH0vJHtwcmVmaXh9L2RvY3MiICIke0R9LyR7ZG9jZGlyfSIKLQlmaQotCi0JY2hvd24gLVIgcm9vdDpyb290ICR7RH0KLX0KLQotSU5TQU5FX1NLSVBfJHtQTn0gPSAiZGV2LXNvIgotSU5TQU5FX1NLSVBfJHtQTn0tY3h4ID0gImRldi1zbyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGJfNi4wLjM1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiXzYuMC4zNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmFmYmU4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiXzYuMC4zNS5iYgpAQCAtMCwwICsxLDEyMiBAQAorIyBWZXJzaW9uIDYgb2YgdGhlIEJlcmtlbGV5IERCIGZyb20gT3JhY2xlIChmb3JtZXJseSBTbGVlcHljYXQpCisjCisjIEF0IHByZXNlbnQgdGhpcyBwYWNrYWdlIG9ubHkgaW5zdGFsbHMgdGhlIERCIGNvZGUKKyMgaXRzZWxmIChzaGFyZWQgbGlicmFyaWVzLCAuYSBpbiB0aGUgZGV2IHBhY2thZ2UpLAorIyBkb2N1bWVudGF0aW9uIGFuZCBoZWFkZXJzLgorIworIyBUaGUgaGVhZGVycyBoYXZlIHRoZSBzYW1lIG5hbWVzIGFzIHRob3NlIGFzIHYzCisjIG9mIHRoZSBEQiwgb25seSBvbmUgdmVyc2lvbiBjYW4gYmUgdXNlZCAqZm9yIGRldioKKyMgYXQgb25jZSAtIERCMyBhbmQgREI2IGNhbiBib3RoIGJlIGluc3RhbGxlZCBvbiB0aGUKKyMgc2FtZSBzeXN0ZW0gYXQgdGhlIHNhbWUgdGltZSBpZiByZWFsbHkgbmVjZXNzYXJ5LgorU0VDVElPTiA9ICJsaWJzIgorU1VNTUFSWSA9ICJCZXJrZWxleSBEYXRhYmFzZSB2NiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cub3JhY2xlLmNvbS90ZWNobmV0d29yay9kYXRhYmFzZS9kYXRhYmFzZS10ZWNobm9sb2dpZXMvYmVya2VsZXlkYi9vdmVydmlldy9pbmRleC5odG1sIgorTElDRU5TRSA9ICJBR1BMLTMuMCIKK1ZJUlRVQUxfTkFNRSA/PSAidmlydHVhbC9kYiIKK1JDT05GTElDVFNfJHtQTn0gPSAiZGIzIgorCitQUiA9ICJyMSIKKworIyBOb3RlLCB3aGVuIHVwZ3JhZGVkIHRvIDYuMS54LCBhIHBhdGNoIGluIFJQTSB3aWxsIG5lZWQgdG8gYmUgcmVtb3ZlZCB0byBhY3RpdmF0ZSBkYiA2LjEgc3VwcG9ydC4KK1NSQ19VUkkgPSAiaHR0cDovL2Rpc3RmaWxlcy5nZW50b28ub3JnL2Rpc3RmaWxlcy9kYi0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vYXJtLXRodW1iLW11dGV4X2RiNS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtcGFyYWxsZWwtYnVpbGQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUtbGV0LWxpYnNvX3RhcmdldC1kZXBlbmQtb24tYnRfcmVjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLWxldC1saWJkYi02LjAubGEtZGVwZW5kLW9zX21hcC5sLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYzY1YTRkM2U5MzBhMTE2YWJhYWY2OWVkZmM2OTdmMjUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjQ0MjFhZmZhOGFlNDM2ZmU0MjdhZTRmNWYyZDE2MzRkYTgzZDNkNTVhNWFkNjM1NGE5OGVlZWRiODI1ZGU1NSIKKworIyBFeGNsdWRlIE5DIHZlcnNpb25zIHdoaWNoIGxhY2sgQUVTIGVuY3J5cHRpb24KK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImRiLSg/UDxwdmVyPlxkK1wuXGQrKFwuXGQrKT8pLnRhciIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vd3d3Lm9yYWNsZS5jb20vdGVjaG5ldHdvcmsvcHJvZHVjdHMvYmVya2VsZXlkYi9kb3dubG9hZHMvaW5kZXgtMDgyOTQ0Lmh0bWwiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTFlYzhiMGIxN2NjMzE1MTNmZTM1YWIxMDcxNmY4NDkwIgorCisjIFB1dCB2aXJ0dWFsL2RiIGluIGFueSBhcHByb3ByaWF0ZSBwcm92aWRlciBvZiBhCisjIHJlbGF0aW9uYWwgZGF0YWJhc2UsIHVzZSBpdCBhcyBhIGRlcGVuZGVuY3kgaW4KKyMgcGxhY2Ugb2YgYSBzcGVjaWZpYyBkYiBhbmQgdXNlOgorIworIyBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9kYgorIworIyB0byBzZWxlY3QgdGhlIGNvcnJlY3QgZGIgaW4gdGhlIGJ1aWxkIChkaXN0cm8pIC5jb25mCitQUk9WSURFUyArPSAiJHtWSVJUVUFMX05BTUV9IgorCitpbmhlcml0IGF1dG90b29scworCisjIFRoZSBleGVjdXRhYmxlcyBnbyBpbiBhIHNlcGFyYXRlIHBhY2thZ2UgLSB0eXBpY2FsbHkgdGhlcmUKKyMgaXMgbm8gbmVlZCB0byBpbnN0YWxsIHRoZXNlIHVubGVzcyBkb2luZyByZWFsIGRhdGFiYXNlCisjIG1hbmFnZW1lbnQgb24gdGhlIHN5c3RlbS4KK2luaGVyaXQgbGliX3BhY2thZ2UKKworUEFDS0FHRVMgPSsgIiR7UE59LWN4eCIKK0ZJTEVTXyR7UE59LWN4eCA9ICIke2xpYmRpcn0vKmN4eCpzbyIKKworIyBUaGUgZGV2IHBhY2thZ2UgaGFzIHRoZSAuc28gbGluayAoYXMgaW4gZGIzKSBhbmQgdGhlIC5hJ3MgLQorIyBpdCBpcyB0aGVyZWZvcmUgaW5jb21wYXRpYmxlIChjYW5ub3QgYmUgaW5zdGFsbGVkIGF0IHRoZQorIyBzYW1lIHRpbWUpIGFzIHRoZSBkYjMgcGFja2FnZQorIyBzb3J0IG91dCB0aGUgLnNvIHNpbmNlIHRoZXkgZG8gdmVyc2lvbiBwcmlvciB0byB0aGUgLnNvCitTT0xJQlMgPSAiLTYqLnNvIgorRklMRVNfU09MSUJTREVWID0gIiR7bGliZGlyfS9saWJkYi5zbyAke2xpYmRpcn0vbGliZGJfY3h4LnNvIgorCisjY29uZmlndXJhdGlvbiAtIHNldCBpbiBsb2NhbC5jb25mIHRvIG92ZXJyaWRlCisjIEFsbCB0aGUgLS1kaXNhYmxlLSogb3B0aW9ucyByZXBsYWNlIC0tZW5hYmxlLXNtYWxsYnVpbGQsIHdoaWNoIGJyZWFrcyBhIGJ1bmNoIG9mIHN0dWZmIChlZy4gcG9zdGZpeCkKK0RCNl9DT05GSUcgPz0gIi0tZW5hYmxlLW9fZGlyZWN0IC0tZGlzYWJsZS1jcnlwdG9ncmFwaHkgLS1kaXNhYmxlLXF1ZXVlIC0tZGlzYWJsZS1yZXBsaWNhdGlvbiAtLWRpc2FibGUtdmVyaWZ5IC0tZGlzYWJsZS1jb21wYXQxODUgLS1kaXNhYmxlLXNxbCIKKworRVhUUkFfT0VDT05GID0gIiR7REI2X0NPTkZJR30gLS1lbmFibGUtc2hhcmVkIC0tZW5hYmxlLWN4eCAtLXdpdGgtc3lzcm9vdCIKKworIyBDYW5jZWwgdGhlIHNpdGUgc3R1ZmYgLSBpdCdzIHNldCBmb3IgZGIzIGFuZCBkZXN0cm95cyB0aGUgY29uZmlndXJlLgorQ09ORklHX1NJVEUgPSAiIgorCitBVVRPVE9PTFNfU0NSSVBUX1BBVEggPSAiJHtTfS9kaXN0IgorCitkb19jb25maWd1cmUoKSB7CisJY2QgJHtCfQorCWdudS1jb25maWdpemUgLS1mb3JjZSAke0FVVE9UT09MU19TQ1JJUFRfUEFUSH0KKwlvZV9ydW5jb25mCit9CisKKyMgT3ZlcnJpZGUgdGhlIE1VVEVYIHNldHRpbmcgaGVyZSwgdGhlIFBPU0lYIGxpYnJhcnkgaXMKKyMgdGhlIGRlZmF1bHQgLSAiUE9TSVgvcHRocmVhZHMvbGlicmFyeSIuCisjIERvbid0IGlnbm9yZSB0aGUgbmljZSBTV1AgaW5zdHJ1Y3Rpb24gb24gdGhlIEFSTToKKyMgVGhlc2UgZW5hYmxlIHRoZSBBUk0gYXNzZW1ibGVyIG11dGV4IGNvZGUKK0FSTV9NVVRFWCA9ICItLXdpdGgtbXV0ZXg9QVJNL2djYy1hc3NlbWJseSIKK01VVEVYID0gIiIKK01VVEVYX2FybSA9ICIke0FSTV9NVVRFWH0iCitNVVRFWF9hcm1lYiA9ICIke0FSTV9NVVRFWH0iCitFWFRSQV9PRUNPTkYgKz0gIiR7TVVURVh9IgorRVhUUkFfT0VNQUtFX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIExJQlRPT0w9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vJHtIT1NUX1NZU30tbGlidG9vbCIKK0VYVFJBX09FTUFLRSArPSAiU1RSSVA9dHJ1ZSIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworCSMgU3RvcCBsaWJ0b29sIGFkZGluZyBSUEFUSHMKKwlzZWQgLWkgLWUgJ3N8aGFyZGNvZGVfaW50b19saWJzPXllc3xoYXJkY29kZV9pbnRvX2xpYnM9bm98JyAke0J9L2xpYnRvb2wKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJbWtkaXIgLXAgJHtEfS8ke2luY2x1ZGVkaXJ9L2RiNjAKKwltdiAke0R9LyR7aW5jbHVkZWRpcn0vZGIuaCAke0R9LyR7aW5jbHVkZWRpcn0vZGI2MC8uCisJbXYgJHtEfS8ke2luY2x1ZGVkaXJ9L2RiX2N4eC5oICR7RH0vJHtpbmNsdWRlZGlyfS9kYjYwLy4KKwlsbiAtcyBkYjYwL2RiLmggJHtEfS8ke2luY2x1ZGVkaXJ9L2RiLmgKKwlsbiAtcyBkYjYwL2RiX2N4eC5oICR7RH0vJHtpbmNsdWRlZGlyfS9kYl9jeHguaAorCisJIyBUaGUgZG9jcyBlbmQgdXAgaW4gL3Vzci9kb2NzIC0gbm90IHJpZ2h0LgorCWlmIHRlc3QgLWQgIiR7RH0vJHtwcmVmaXh9L2RvY3MiCisJdGhlbgorCQlta2RpciAtcCAiJHtEfS8ke2RhdGFkaXJ9IgorCQl0ZXN0ICEgLWQgIiR7RH0vJHtkb2NkaXJ9IiB8fCBybSAtcmYgIiR7RH0vJHtkb2NkaXJ9IgorCQltdiAiJHtEfS8ke3ByZWZpeH0vZG9jcyIgIiR7RH0vJHtkb2NkaXJ9IgorCWZpCisKKwljaG93biAtUiByb290OnJvb3QgJHtEfQorfQorCisjIGxpYmRiIGlzbid0IHZlcnNpb25lZCBpbiB0aGUgdHlwaWNhbCBtYW5uZXIgKGxpYmRiLTYuMC5zbyBpcyB0aGUgZnVsbCBsaWJyYXJ5CisjIG5hbWUpIHNvIHNraXAgdGhlc2UgY2hlY2tzLgorSU5TQU5FX1NLSVBfJHtQTn0gPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtQTn0tY3h4ID0gImRldi1zbyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitSRUNJUEVfTk9fVVBEQVRFX1JFQVNPTiA9ICJsYXRlc3QgZGIgZG9lcyBub3Qgd29yayB3aXRoIFJQTS01LnggZHVlIHRvIGNoYW5nZXMgaW4gbG9ja2luZyBzZW1hbnRpY3MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGViaWFudXRpbHMvZGViaWFudXRpbHNfNC43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RlYmlhbnV0aWxzL2RlYmlhbnV0aWxzXzQuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmExZDViZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGViaWFudXRpbHMvZGViaWFudXRpbHNfNC43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotU1VNTUFSWSA9ICJNaXNjZWxsYW5lb3VzIHV0aWxpdGllcyBzcGVjaWZpYyB0byBEZWJpYW4iCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIkdQTHYyICYgU01BSUxfR1BMIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZGViaWFuL2NvcHlyaWdodDttZDU9ZjAxYTUyMDNkNTA1MTJmYzQ4MzBiNDMzMmI2OTZhOWYiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3NuYXBzaG90LmRlYmlhbi5vcmcvYXJjaGl2ZS9kZWJpYW4vMjAxNjAyMDRUMDQwNTAxWi9wb29sL21haW4vZC8ke0JQTn0vJHtCUE59XyR7UFZ9LnRhci54eiIKLSMgdGhlIHBhY2thZ2UgaXMgdGFrZW4gZnJvbSBzbmFwc2hvdHMuZGViaWFuLm9yZzsgdGhhdCBzb3VyY2UgaXMgc3RhdGljIGFuZCBnb2VzIHN0YWxlCi0jIHNvIHdlIGNoZWNrIHRoZSBsYXRlc3QgdXBzdHJlYW0gZnJvbSBhIGRpcmVjdG9yeSB0aGF0IGRvZXMgZ2V0IHVwZGF0ZWQKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vZC8ke0JQTn0vIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMDAxODZmNTI3YjM1ZTJjZWNkNGRiNTkzYzZkNTEyZDAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTI2OWNhY2Q0MGY1MmYyZmE1ZDU2MzYzNTc3MTRhNDllODUzODQ1OWMxNmQ3Nzc3MmVmYWEyMzcxMWZlNTNkOSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBzZWQgLWkgLWUgJ3M6dGVtcGZpbGUuMSB3aGljaC4xOndoaWNoLjE6ZycgJHtTfS9NYWtlZmlsZS5hbQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpZiBbICIke2Jhc2VfYmluZGlyfSIgIT0gIiR7YmluZGlyfSIgXTsgdGhlbgotICAgICAgICAjIERlYmlhbiBwbGFjZXMgc29tZSB1dGlscyBpbnRvICR7YmFzZV9iaW5kaXJ9IGFzIGRvZXMgYnVzeWJveAotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQotICAgICAgICBmb3IgYXBwIGluIHJ1bi1wYXJ0cyB0ZW1wZmlsZTsgZG8KLSAgICAgICAgICAgIG12ICR7RH0ke2JpbmRpcn0vJGFwcCAke0R9JHtiYXNlX2JpbmRpcn0vJGFwcAotICAgICAgICBkb25lCi0gICAgZmkKLX0KLQotIyBOb3RlIHRoYXQgd2UgcGFja2FnZSB0aGUgdXBkYXRlLWFsdGVybmF0aXZlcyBuYW1lLgotIwotUEFDS0FHRVMgPSsgIiR7UE59LXJ1bi1wYXJ0cyIKLUZJTEVTXyR7UE59LXJ1bi1wYXJ0cyA9ICIke2Jhc2VfYmluZGlyfS9ydW4tcGFydHMuZGViaWFudXRpbHMiCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke1BOfS1ydW4tcGFydHMiCi0KLQotQUxURVJOQVRJVkVfUFJJT1JJVFk9IjMwIgotQUxURVJOQVRJVkVfJHtQTn0gPSAiYWRkLXNoZWxsIGluc3RhbGxrZXJuZWwgcmVtb3ZlLXNoZWxsIHNhdmVsb2cgdGVtcGZpbGUgd2hpY2giCi1BTFRFUk5BVElWRV8ke1BOfS1ydW4tcGFydHMgPSAicnVuLXBhcnRzIgotCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbYWRkLXNoZWxsXT0iJHtzYmluZGlyfS9hZGQtc2hlbGwiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbaW5zdGFsbGtlcm5lbF09IiR7c2JpbmRpcn0vaW5zdGFsbGtlcm5lbCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtyZW1vdmUtc2hlbGxdPSIke3NiaW5kaXJ9L3JlbW92ZS1zaGVsbCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtydW4tcGFydHNdPSIke2Jhc2VfYmluZGlyfS9ydW4tcGFydHMiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbc2F2ZWxvZ109IiR7YmluZGlyfS9zYXZlbG9nIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3RlbXBmaWxlXT0iJHtiYXNlX2JpbmRpcn0vdGVtcGZpbGUiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbd2hpY2hdPSIke2JpbmRpcn0vd2hpY2giCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGViaWFudXRpbHMvZGViaWFudXRpbHNfNC44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RlYmlhbnV0aWxzL2RlYmlhbnV0aWxzXzQuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTY5ZmQzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RlYmlhbnV0aWxzL2RlYmlhbnV0aWxzXzQuOC5iYgpAQCAtMCwwICsxLDQ4IEBACitTVU1NQVJZID0gIk1pc2NlbGxhbmVvdXMgdXRpbGl0aWVzIHNwZWNpZmljIHRvIERlYmlhbiIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBTTUFJTF9HUEwiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kZWJpYW4vY29weXJpZ2h0O21kNT1mMDFhNTIwM2Q1MDUxMmZjNDgzMGI0MzMyYjY5NmE5ZiIKKworU1JDX1VSSSA9ICJodHRwOi8vc25hcHNob3QuZGViaWFuLm9yZy9hcmNoaXZlL2RlYmlhbi8yMDE2MDYyOVQyMjQ0MDhaL3Bvb2wvbWFpbi9kLyR7QlBOfS8ke0JQTn1fJHtQVn0udGFyLnh6IgorIyB0aGUgcGFja2FnZSBpcyB0YWtlbiBmcm9tIHNuYXBzaG90cy5kZWJpYW4ub3JnOyB0aGF0IHNvdXJjZSBpcyBzdGF0aWMgYW5kIGdvZXMgc3RhbGUKKyMgc28gd2UgY2hlY2sgdGhlIGxhdGVzdCB1cHN0cmVhbSBmcm9tIGEgZGlyZWN0b3J5IHRoYXQgZG9lcyBnZXQgdXBkYXRlZAorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9kLyR7QlBOfS8iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2NmEzN2U1ZmYxN2JlNDMxMzE5YmQwYjQzZTlhNDZiNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhZmE5NWJiZTZiNmZkM2VmM2MwYzgzOGIyZDcyMzJmMDlmYWJlZmY1OTNjYTRiNTU4M2NmZmE2NzQ4NTY3ZWUyIgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgIHNlZCAtaSAtZSAnczp0ZW1wZmlsZS4xIHdoaWNoLjE6d2hpY2guMTpnJyAke1N9L01ha2VmaWxlLmFtCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGlmIFsgIiR7YmFzZV9iaW5kaXJ9IiAhPSAiJHtiaW5kaXJ9IiBdOyB0aGVuCisgICAgICAgICMgRGViaWFuIHBsYWNlcyBzb21lIHV0aWxzIGludG8gJHtiYXNlX2JpbmRpcn0gYXMgZG9lcyBidXN5Ym94CisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9CisgICAgICAgIGZvciBhcHAgaW4gcnVuLXBhcnRzIHRlbXBmaWxlOyBkbworICAgICAgICAgICAgbXYgJHtEfSR7YmluZGlyfS8kYXBwICR7RH0ke2Jhc2VfYmluZGlyfS8kYXBwCisgICAgICAgIGRvbmUKKyAgICBmaQorfQorCisjIE5vdGUgdGhhdCB3ZSBwYWNrYWdlIHRoZSB1cGRhdGUtYWx0ZXJuYXRpdmVzIG5hbWUuCisjCitQQUNLQUdFUyA9KyAiJHtQTn0tcnVuLXBhcnRzIgorRklMRVNfJHtQTn0tcnVuLXBhcnRzID0gIiR7YmFzZV9iaW5kaXJ9L3J1bi1wYXJ0cy5kZWJpYW51dGlscyIKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LXJ1bi1wYXJ0cyIKKworCitBTFRFUk5BVElWRV9QUklPUklUWT0iMzAiCitBTFRFUk5BVElWRV8ke1BOfSA9ICJhZGQtc2hlbGwgaW5zdGFsbGtlcm5lbCByZW1vdmUtc2hlbGwgc2F2ZWxvZyB0ZW1wZmlsZSB3aGljaCIKK0FMVEVSTkFUSVZFXyR7UE59LXJ1bi1wYXJ0cyA9ICJydW4tcGFydHMiCisKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVthZGQtc2hlbGxdPSIke3NiaW5kaXJ9L2FkZC1zaGVsbCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtpbnN0YWxsa2VybmVsXT0iJHtzYmluZGlyfS9pbnN0YWxsa2VybmVsIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3JlbW92ZS1zaGVsbF09IiR7c2JpbmRpcn0vcmVtb3ZlLXNoZWxsIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3J1bi1wYXJ0c109IiR7YmFzZV9iaW5kaXJ9L3J1bi1wYXJ0cyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtzYXZlbG9nXT0iJHtiaW5kaXJ9L3NhdmVsb2ciCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdGVtcGZpbGVdPSIke2Jhc2VfYmluZGlyfS90ZW1wZmlsZSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt3aGljaF09IiR7YmluZGlyfS93aGljaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9lbmNoYW50L2VuY2hhbnRfMS42LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZW5jaGFudC9lbmNoYW50XzEuNi4wLmJiCmluZGV4IDk3YTQ3NjEuLjQ0ZWIyZTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9lbmNoYW50L2VuY2hhbnRfMS42LjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2VuY2hhbnQvZW5jaGFudF8xLjYuMC5iYgpAQCAtNyw3ICs3LDcgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTElCO21kNT1kZmNiYWJmOTEzMWRjOWE5NWZlYmVmNjc1M2EyOTU4YiBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZW5jaGFudC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9Mjk7bWQ1PThkODgxY2FhMWQzNzUyMzU2N2UxZDhmNzI2Njc1YTE4IgogCi1ERVBFTkRTID0gImFzcGVsbCBnbGliLTIuMCIKK0RFUEVORFMgPSAiZ2xpYi0yLjAiCiAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwogCkBAIC0xOCwxNSArMTgsMTcgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICJkZTExMDExYWZmODAxZGM2MTA0MjgyODA0MWZiNTljNyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIyZmFjOWU3YmU3ZTk0MjRiMmM1NTcwZDhhZmZlNTY4ZGIzOWY3NTcyYzEwZWQ0OGQ0ZTEzY2RkZjAzZjcwOTdmIgogCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLWFzcGVsbC1wcmVmaXg9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSBcCi0JCS0tZW5hYmxlLWFzcGVsbCBicl9jdl9iaW5yZWxvYz1ubyBcCi0JCSIKK1BBQ0tBR0VDT05GSUcgPz89ICJhc3BlbGwiCitQQUNLQUdFQ09ORklHW2FzcGVsbF0gID0gIiAtLXdpdGgtYXNwZWxsLXByZWZpeD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9ICAtLWVuYWJsZS1hc3BlbGwsICAtLWRpc2FibGUtYXNwZWxsLCAgYXNwZWxsLCAgYXNwZWxsIgorUEFDS0FHRUNPTkZJR1tpc3BlbGxdICA9ICIgLS13aXRoLWlzcGVsbC1wcmVmaXg9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSAgLS1lbmFibGUtaXNwZWxsLCAgLS1kaXNhYmxlLWlzcGVsbCwgIGlzcGVsbCwgIGlzcGVsbCIKK1BBQ0tBR0VDT05GSUdbdXNwZWxsXSAgPSAiIC0td2l0aC11c3BlbGwtcHJlZml4PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0gIC0tZW5hYmxlLXVzcGVsbCwgIC0tZGlzYWJsZS11c3BlbGwsICB1c3BlbGwsICB1c3BlbGwiCitQQUNLQUdFQ09ORklHW2hzcGVsbF0gID0gIiAtLXdpdGgtaHNwZWxsLXByZWZpeD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9ICAtLWVuYWJsZS1oc3BlbGwsICAtLWRpc2FibGUtaHNwZWxsLCAgaHNwZWxsLCAgaHNwZWxsIgorUEFDS0FHRUNPTkZJR1tteXNwZWxsXSA9ICItLXdpdGgtbXlzcGVsbC1wcmVmaXg9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSAtLWVuYWJsZS1teXNwZWxsLCAtLWRpc2FibGUtbXlzcGVsbCwgbXlzcGVsbCwgbXlzcGVsbCIKKworRVhUUkFfT0VDT05GID0gImJyX2N2X2JpbnJlbG9jPW5vIgogCiBleHBvcnQgQ1hYRkxBR1MgKz0gIiAtTCR7U1RBR0lOR19MSUJESVJ9IC1sc3RkYysrICIKIAogRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9ICR7bGliZGlyfS8qJHtTT0xJQlN9ICR7ZGF0YWRpcn0vJHtCUE59ICR7bGliZGlyfS8ke0JQTn0vKi5zbyIKIEZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9LyR7QlBOfS8qe1NPTElCU0RFVn0gJHtsaWJkaXJ9LyR7QlBOfS8qLmxhIgogRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vJHtCUE59LyouYSIKLQotUkRFUEVORFNfJHtQTn0gKz0gImFzcGVsbCIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dkYm0vZ2RibV8xLjExLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dkYm0vZ2RibV8xLjExLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGY4YzViLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nZGJtL2dkYm1fMS4xMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLVNVTU1BUlkgPSAiS2V5L3ZhbHVlIGRhdGFiYXNlIGxpYnJhcnkgd2l0aCBleHRlbnNpYmxlIGhhc2hpbmciCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ2RibS8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjQxZGExYjlmZTQyZTY0MmNiYjJjMjRkNWUwYzRkMjQiCi0KLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2dkYm0vZ2RibS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL3B0ZXN0LnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3MmM4MzI2ODBjZjA5OTljYWVkYmU1YjI2NWM4YzFiZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZDkxMmY0NGYwNWQwYjE1YTRhNWQ5NmE3NmY4NTJlOTA1ZDA1MWJiODgwMjJmY2RmZDk4YjQzYmUwOTNlM2MzIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gbGliX3BhY2thZ2UgcHRlc3QKLQotIyBOZWVkZWQgZm9yIGRibSBweXRob24gbW9kdWxlCi1FWFRSQV9PRUNPTkYgPSAiLWVuYWJsZS1saWJnZGJtLWNvbXBhdCIKLQotIyBTdG9wIHByZXNlbmNlIG9mIGRibS9uYmRtIG9uIHRoZSBob3N0IGNvbnRhbWluYXRpbmcgYnVpbGRzCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfbGliX25kYm1fbWFpbj1ubyBhY19jdl9saWJfZGJtX21haW49bm8iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgICMgQ3JlYXRlIGEgc3ltbGluayB0byBuZGJtLmggYW5kIGdkYm0uaCBpbiBpbmNsdWRlL2dkYm0gdG8gbGV0IG90aGVyIHBhY2thZ2VzIHRvIGZpbmQKLSAgICAjIHRoZXNlIGhlYWRlcnMKLSAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9L2dkYm0KLSAgICBsbiAtc2YgLi4vbmRibS5oICR7RH0vJHtpbmNsdWRlZGlyfS9nZGJtL25kYm0uaAotICAgIGxuIC1zZiAuLi9nZGJtLmggJHtEfS8ke2luY2x1ZGVkaXJ9L2dkYm0vZ2RibS5oCi19Ci0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJkaWZmdXRpbHMiCi0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0gICAgb2VfcnVubWFrZSAtQyB0ZXN0cyBidWlsZHRlc3RzCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS1jb21wYXQgXAotICAgICAgICAgICAgIgotRklMRVNfJHtQTn0tY29tcGF0ID0gIiR7bGliZGlyfS9saWJnZGJtX2NvbXBhdCR7U09MSUJTfSBcCi0gICAgICAgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ2RibS9nZGJtXzEuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ2RibS9nZGJtXzEuMTIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzM4MDA3MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nZGJtL2dkYm1fMS4xMi5iYgpAQCAtMCwwICsxLDQzIEBACitTVU1NQVJZID0gIktleS92YWx1ZSBkYXRhYmFzZSBsaWJyYXJ5IHdpdGggZXh0ZW5zaWJsZSBoYXNoaW5nIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2dkYm0vIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTI0MWRhMWI5ZmU0MmU2NDJjYmIyYzI0ZDVlMGM0ZDI0IgorCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9nZGJtL2dkYm0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9wdGVzdC5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOWNlOTZmZjRjOTllNzQyOTVlYTE5MDQwOTMxYzhmYjkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDk3YjIxNjZlZTg2N2ZkNmNhNWMwMjJlZmVlODA3MDJkNmYzMGRkNjZhZjBlMDNlZDA5MjI4NWMzYWY5YmNlYSIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIGxpYl9wYWNrYWdlIHB0ZXN0CisKKyMgTmVlZGVkIGZvciBkYm0gcHl0aG9uIG1vZHVsZQorRVhUUkFfT0VDT05GID0gIi1lbmFibGUtbGliZ2RibS1jb21wYXQiCisKKyMgU3RvcCBwcmVzZW5jZSBvZiBkYm0vbmJkbSBvbiB0aGUgaG9zdCBjb250YW1pbmF0aW5nIGJ1aWxkcworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2xpYl9uZGJtX21haW49bm8gYWNfY3ZfbGliX2RibV9tYWluPW5vIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICAjIENyZWF0ZSBhIHN5bWxpbmsgdG8gbmRibS5oIGFuZCBnZGJtLmggaW4gaW5jbHVkZS9nZGJtIHRvIGxldCBvdGhlciBwYWNrYWdlcyB0byBmaW5kCisgICAgIyB0aGVzZSBoZWFkZXJzCisgICAgaW5zdGFsbCAtZCAke0R9JHtpbmNsdWRlZGlyfS9nZGJtCisgICAgbG4gLXNmIC4uL25kYm0uaCAke0R9LyR7aW5jbHVkZWRpcn0vZ2RibS9uZGJtLmgKKyAgICBsbiAtc2YgLi4vZ2RibS5oICR7RH0vJHtpbmNsdWRlZGlyfS9nZGJtL2dkYm0uaAorfQorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiZGlmZnV0aWxzIgorCitkb19jb21waWxlX3B0ZXN0KCkgeworICAgIG9lX3J1bm1ha2UgLUMgdGVzdHMgYnVpbGR0ZXN0cworfQorCitQQUNLQUdFUyA9KyAiJHtQTn0tY29tcGF0IFwKKyAgICAgICAgICAgICIKK0ZJTEVTXyR7UE59LWNvbXBhdCA9ICIke2xpYmRpcn0vbGliZ2RibV9jb21wYXQke1NPTElCU30gXAorICAgICAgICAgICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAtNC4yLjEvZ21wX2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wLTQuMi4xL2dtcF9maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2gKaW5kZXggNjNhZWQwNS4uMjZmZDhlZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAtNC4yLjEvZ21wX2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC00LjIuMS9nbXBfZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoCkBAIC01LDcgKzUsNyBAQAogfCBjb25maWd1cmUuaW46MjI0MDogZXJyb3I6IGF1dG9tYXRpYyBkZS1BTlNJLWZpY2F0aW9uIHN1cHBvcnQgaGFzIGJlZW4gcmVtb3ZlZAogfCBNYWtlZmlsZS5hbToyODogZXJyb3I6IGF1dG9tYXRpYyBkZS1BTlNJLWZpY2F0aW9uIHN1cHBvcnQgaGFzIGJlZW4gcmVtb3ZlZAogCi1TaWduZWQtT2ZmLUJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KIDIwMTIvMDUvMDIKIAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMC8wMDAxLUFwcGVuZC10aGUtdXNlci1wcm92aWRlZC1mbGFncy10by10aGUtYXV0by1kZXRlY3RlZC0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMS8wMDAxLUFwcGVuZC10aGUtdXNlci1wcm92aWRlZC1mbGFncy10by10aGUtYXV0by1kZXRlY3RlZC0ucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wLTYuMS4wLzAwMDEtQXBwZW5kLXRoZS11c2VyLXByb3ZpZGVkLWZsYWdzLXRvLXRoZS1hdXRvLWRldGVjdGVkLS5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAtNi4xLjEvMDAwMS1BcHBlbmQtdGhlLXVzZXItcHJvdmlkZWQtZmxhZ3MtdG8tdGhlLWF1dG8tZGV0ZWN0ZWQtLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMS8wMDAxLWNvbmZpdXJlLmFjLUJlbGlldmUtdGhlLWNmbGFncy1mcm9tLWVudmlyb25tZW50LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAtNi4xLjEvMDAwMS1jb25maXVyZS5hYy1CZWxpZXZlLXRoZS1jZmxhZ3MtZnJvbS1lbnZpcm9ubWVudC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjUzNjc2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAtNi4xLjEvMDAwMS1jb25maXVyZS5hYy1CZWxpZXZlLXRoZS1jZmxhZ3MtZnJvbS1lbnZpcm9ubWVudC5wYXRjaApAQCAtMCwwICsxLDUyIEBACitGcm9tIGFlMWE0YzM3NDE3YTNiYmJmOGVhMWNhYjE5ODk4MmIwY2FkNDdlMjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAxMiBBdWcgMjAxNiAxNzowODoxMyArMDAwMAorU3ViamVjdDogW1BBVENIXSBjb25maXVyZS5hYzogQmVsaWV2ZSB0aGUgY2ZsYWdzIGZyb20gZW52aXJvbm1lbnQKKworSW4gc29tZSB0b29sY2hhaW5zIGUuZy4gT3BlbkVtYmVkZGVkIC1tYXJjaCBvcHRpb25zCithcmUgcGFzc2VkIG9uIGNvbXBpbGVyIGNtZGxpbmUsIGl0IGRvZXMgbm90IHVzZQordGhlIGV4cGVjdGVkIHRhcmdldCB0cmlwbGV0cyB0byBtYWtlIHRoZXNlIGRlY2lzaW9uCitkdXJpbmcgY29uZmlndXJlLgorCitTZWNvbmRseSwgZG9udCBzZXQgYXJtdjQgZm9yIG1hcmNoIHdoZW4gbm8gc2VsZWN0aW9uCitpcyBtYWRlLCBzaW5jZSBpdCBpcyBwYXNzZWQgZnJvbSBjbWRsaW5lCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZVtPRS1TcGVjaWZpY10KKworIGNvbmZpZ3VyZS5hYyB8IDExIC0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDExIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA4NTdlYTNiLi4zNTllOTE5IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC02MDcsMTUgKzYwNyw2IEBAIGNhc2UgJGhvc3QgaW4KKyAgICAgR01QX0lOQ0xVREVfTVBOKGFybS9hcm0tZGVmcy5tNCkKKyAgICAgQ0FMTElOR19DT05WRU5USU9OU19PQkpTPSdhcm0zMmNhbGwubG8gYXJtMzJjaGVjay5sbycKKyAKKy0gICAgIyBUaGlzIGlzIG5lZWRlZCBmb3IgY2xhbmcsIHdoaWNoIGlzIG5vdCBjb250ZW50IHdpdGggZmxhZ3MgbGlrZSAtbWZwdT1uZW9uCistICAgICMgYWxvbmUuCistICAgIGNhc2UgJGhvc3QgaW4KKy0gICAgICAqLSotKmVhYmkpCistICAgICAgICBnY2NfY2ZsYWdzX2ZwbW9kZT0iLW1mbG9hdC1hYmk9c29mdGZwIiA7OworLSAgICAgICotKi0qZWFiaWhmKQorLSAgICAgICAgZ2NjX2NmbGFnc19mcG1vZGU9Ii1tZmxvYXQtYWJpPWhhcmQiIDs7CistICAgIGVzYWMKKy0KKyAgICAgIyBGSVhNRTogV2UgbWFrZSBtYW5kYXRvcnkgY29tcGlsZXIgb3B0aW9ucyBvcHRpb25hbCBoZXJlLiAgV2Ugc2hvdWxkCisgICAgICMgZWl0aGVyIGVuZm9yY2UgdGhlbSwgb3Igb3JnYW5pc2UgdG8gc3RyaXAgcGF0aHMgYXMgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgIyBvcHRpb25zIGZhaWwuCitAQCAtNjg2LDggKzY3Nyw2IEBAIGNhc2UgJGhvc3QgaW4KKyAJOzsKKyAgICAgICAqKQorIAlwYXRoPSJhcm0iCistCWdjY19jZmxhZ3NfYXJjaD0iLW1hcmNoPWFybXY0IgorLQlHTVBfREVGSU5FX1JBVyhbImRlZmluZSg8Tk9USFVNQj4sMSkiXSkKKyAJOzsKKyAgICAgZXNhYworICAgICA7OworLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMC9hbWQ2NC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wLTYuMS4xL2FtZDY0LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMC9hbWQ2NC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAtNi4xLjEvYW1kNjQucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wLTYuMS4wL3VzZS1pbmNsdWRlZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAtNi4xLjEvdXNlLWluY2x1ZGVkaXIucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wLTYuMS4wL3VzZS1pbmNsdWRlZGlyLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMS91c2UtaW5jbHVkZWRpci5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXBfNi4xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcF82LjEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGU4MjdmNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcF82LjEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLXJlcXVpcmUgZ21wLmluYwotCi1MSUNFTlNFID0gIkdQTHYyKyB8IExHUEx2MysiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MRVNTRVJ2MzttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjYgXAotICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSIKLQotUkVWSVNJT04gPSAiIgotU1JDX1VSSSA9ICJodHRwczovL2dtcGxpYi5vcmcvZG93bmxvYWQvJHtCUE59LyR7QlB9JHtSRVZJU0lPTn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9hbWQ2NC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly91c2UtaW5jbHVkZWRpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUFwcGVuZC10aGUtdXNlci1wcm92aWRlZC1mbGFncy10by10aGUtYXV0by1kZXRlY3RlZC0ucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4NmVlNmU1NGViZmM0YTkwYjY0M2E2NWU0MDJjNDA0OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0OTg0NDlhOTk0ZWZlYmE1Mjc4ODVjMTA0MDU5OTM0Mjc5OTVkM2Y4NmI4NzY4ZDhjZGY4ZDlkZDdjNmI3M2U4IgotCi1hY3BhdGhzID0gIiIKLQotRVhUUkFfT0VDT05GICs9ICIgLS1lbmFibGUtY3h4PWRldGVjdCIKLQotUEFDS0FHRVMgPSsgImxpYmdtcHh4IgotRklMRVNfbGliZ21weHggPSAiJHtsaWJkaXJ9L2xpYmdtcHh4JHtTT0xJQlN9IgotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0gICAgICAgIHNlZCAtaSAic3wtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfXx8ZyIgJHtEfSR7aW5jbHVkZWRpcn0vZ21wLmgKLX0KLQotU1NUQVRFX1NDQU5fRklMRVMgKz0gImdtcC5oIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcF82LjEuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wXzYuMS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwM2MzZWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcF82LjEuMS5iYgpAQCAtMCwwICsxLDM4IEBACityZXF1aXJlIGdtcC5pbmMKKworTElDRU5TRSA9ICJHUEx2MisgfCBMR1BMdjMrIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEVTU0VSdjM7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IFwKKyAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlOR3YyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisiCisKK1JFVklTSU9OID0gIiIKK1NSQ19VUkkgPSAiaHR0cHM6Ly9nbXBsaWIub3JnL2Rvd25sb2FkLyR7QlBOfS8ke0JQfSR7UkVWSVNJT059LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vYW1kNjQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdXNlLWluY2x1ZGVkaXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BcHBlbmQtdGhlLXVzZXItcHJvdmlkZWQtZmxhZ3MtdG8tdGhlLWF1dG8tZGV0ZWN0ZWQtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZml1cmUuYWMtQmVsaWV2ZS10aGUtY2ZsYWdzLWZyb20tZW52aXJvbm1lbnQucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0YzE3NWY4NmUxMWViMzJkOGJmOTg3MmNhM2E4ZTExZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhODEwOTg2NWYyODkzZjEzNzNiMGE4ZWQ1ZmY3NDI5ZGU4ZGI2OTZmYzQ1MWIxMDM2YmQ3YmRmOTViYmVmZmQ2IgorCithY3BhdGhzID0gIiIKKworRVhUUkFfT0VDT05GICs9ICIgLS1lbmFibGUtY3h4PWRldGVjdCIKKworUEFDS0FHRVMgPSsgImxpYmdtcHh4IgorRklMRVNfbGliZ21weHggPSAiJHtsaWJkaXJ9L2xpYmdtcHh4JHtTT0xJQlN9IgorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CisgICAgICAgIHNlZCAtaSAic3wtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfXx8ZyIgJHtEfSR7aW5jbHVkZWRpcn0vZ21wLmgKK30KKworU1NUQVRFX1NDQU5fRklMRVMgKz0gImdtcC5oIgorCisjIERvZXNuJ3QgY29tcGlsZSBpbiBNSVBTMTZlIG1vZGUgZHVlIHRvIHVzZSBvZiBoYW5kLXdyaXR0ZW4KKyMgYXNzZW1ibHkKK01JUFNfSU5TVFJVQ1RJT05fU0VUID0gIm1pcHMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZ18xLjQuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZ18xLjQuNy5iYgppbmRleCBiNGNjYmZlLi42Y2NmZmQ1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGdfMS40LjcuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnXzEuNC43LmJiCkBAIC05LDcgKzksNyBAQAogCiBQUiA9ICJyOSIKIAotU1JDX1VSSSA9ICJmdHA6Ly9mdHAuZ251cGcub3JnL2djcnlwdC9nbnVwZy9nbnVwZy0ke1BWfS50YXIuYnoyIFwKK1NSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9L2dudXBnL2dudXBnLSR7UFZ9LnRhci5iejIgXAogICAgICAgICAgICBmaWxlOi8vbG9uZy1sb25nLXRodW1iLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9taXBzX2djYzQuNC5wYXRjaCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGdfMi4xLjExLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnXzIuMS4xMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGUyMTg5Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGdfMi4xLjExLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotU1VNTUFSWSA9ICJHTlUgUHJpdmFjeSBHdWFyZCAtIGVuY3J5cHRpb24gYW5kIHNpZ25pbmcgdG9vbHMgKDIueCkiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy8iCi1MSUNFTlNFID0gIkdQTHYzICYgTEdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjI3ZGVmZTFlOTZjMmUxZWNkNGUwYzliZTg5Njc5NDkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IgotCi1ERVBFTkRTID0gIm5wdGggbGliYXNzdWFuIGxpYmtzYmEgemxpYiBiemlwMiByZWFkbGluZSBsaWJnY3J5cHQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBwa2djb25maWcKLQotU1JDX1VSSSA9ICJmdHA6Ly9mdHAuZ251cGcub3JnL2djcnlwdC8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vcGtnY29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3VzZS1wa2djb25maWctaW5zdGVhZC1vZi1ucHRoLWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXJtbmdyLXVzZXMtbGliZ3BnLWVycm9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2F1dG9nZW4uc2gtZml4LWZpbmQtdmVyc2lvbi1mb3ItYmV0YS1jaGVja2luZy5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODczMzAyYzQ3NWM0YzkwYmFkYjY3ZGFhYzkwZWJkNWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjdiMGZiMmM4YzVkNDdkN2VjOTE2ZDRhMTA5N2MwZGRjYjk0YTEyYmIxYzBhYzQyNGFkODZiMWVlMzE2YjYxYSIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1sZGFwIFwKLQkJLS1kaXNhYmxlLWNjaWQtZHJpdmVyIFwKLQkJLS13aXRoLXpsaWI9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAotCQktLXdpdGgtYnppcDI9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAotICAgICAgICAgICAgICAgIC0td2l0aC1yZWFkbGluZT0ke1NUQUdJTkdfTElCRElSfS8uLiBcCi0gICAgICAgICAgICAgICAiCi1SUkVDT01NRU5EU18ke1BOfSA9ICJwaW5lbnRyeSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCSMgRWxzZSB0aGVzZSBjb3VsZCBiZSB1c2VkIGluIHByZWZlcm5jZSB0byB0aG9zZSBpbiBhY2xvY2FsLWNvcHkKLQlybSAtZiAke1N9L200L2dwZy1lcnJvci5tNAotCXJtIC1mICR7U30vbTQvbGliYXNzdWFuLm00Ci0Jcm0gLWYgJHtTfS9tNC9rc2JhLm00Ci0Jcm0gLWYgJHtTfS9tNC9saWJnY3J5cHQubTQKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JbG4gLXNmIGdwZzIgJHtEfSR7YmluZGlyfS9ncGcKLQlsbiAtc2YgZ3BndjIgJHtEfSR7YmluZGlyfS9ncGd2Ci19Ci0KLVJERVBFTkRTXyR7UE59ID0gImdudXRscyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbc3FsaXRlM10gPSAiLS1lbmFibGUtc3FsaXRlLCAtLWRpc2FibGUtc3FsaXRlLCBzcWxpdGUzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnXzIuMS4xNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZ18yLjEuMTQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWVhOWI5NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZ18yLjEuMTQuYmIKQEAgLTAsMCArMSw0NiBAQAorU1VNTUFSWSA9ICJHTlUgUHJpdmFjeSBHdWFyZCAtIGVuY3J5cHRpb24gYW5kIHNpZ25pbmcgdG9vbHMgKDIueCkiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy8iCitMSUNFTlNFID0gIkdQTHYzICYgTEdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjI3ZGVmZTFlOTZjMmUxZWNkNGUwYzliZTg5Njc5NDkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IgorCitERVBFTkRTID0gIm5wdGggbGliYXNzdWFuIGxpYmtzYmEgemxpYiBiemlwMiByZWFkbGluZSBsaWJnY3J5cHQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBwa2djb25maWcKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCitTUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vcGtnY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3VzZS1wa2djb25maWctaW5zdGVhZC1vZi1ucHRoLWNvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kaXJtbmdyLXVzZXMtbGliZ3BnLWVycm9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2F1dG9nZW4uc2gtZml4LWZpbmQtdmVyc2lvbi1mb3ItYmV0YS1jaGVja2luZy5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDZjZjBhNDJmZmFkNmMyNjE1Y2FmZDYzMzU4MGIyZGUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTQ1MGRlZTk2OTNiNmExMmJmMGMzNzRkYWU3N2I2NmMzMGY2OWZmOGYzNWZjOTI2NmFiOGRkNzY5OThlYmE0MiIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1sZGFwIFwKKwkJLS1kaXNhYmxlLWNjaWQtZHJpdmVyIFwKKwkJLS13aXRoLXpsaWI9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAorCQktLXdpdGgtYnppcDI9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAorICAgICAgICAgICAgICAgIC0td2l0aC1yZWFkbGluZT0ke1NUQUdJTkdfTElCRElSfS8uLiBcCisgICAgICAgICAgICAgICAiCitSUkVDT01NRU5EU18ke1BOfSA9ICJwaW5lbnRyeSIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCSMgRWxzZSB0aGVzZSBjb3VsZCBiZSB1c2VkIGluIHByZWZlcm5jZSB0byB0aG9zZSBpbiBhY2xvY2FsLWNvcHkKKwlybSAtZiAke1N9L200L2dwZy1lcnJvci5tNAorCXJtIC1mICR7U30vbTQvbGliYXNzdWFuLm00CisJcm0gLWYgJHtTfS9tNC9rc2JhLm00CisJcm0gLWYgJHtTfS9tNC9saWJnY3J5cHQubTQKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJbG4gLXNmIGdwZzIgJHtEfSR7YmluZGlyfS9ncGcKKwlsbiAtc2YgZ3BndjIgJHtEfSR7YmluZGlyfS9ncGd2Cit9CisKK1JERVBFTkRTXyR7UE59ID0gImdudXRscyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbc3FsaXRlM10gPSAiLS1lbmFibGUtc3FsaXRlLCAtLWRpc2FibGUtc3FsaXRlLCBzcWxpdGUzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMuaW5jCmluZGV4IGU3YzkxZWIuLjUxYjlkMmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy5pbmMKQEAgLTgsOCArOCw5IEBACiBMSUNFTlNFXyR7UE59LWJpbiA9ICJHUEx2MysiCiBMSUNFTlNFXyR7UE59LW9wZW5zc2wgPSAiR1BMdjMrIgogCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03MTM5MWM4ZTBjMWNmZTY4MDc3ZTdmY2UzYjU4NjI4MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2MvQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jL0NPUFlJTkcuTEVTU0VSO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyIKIAogREVQRU5EUyA9ICJuZXR0bGUgZ21wIHZpcnR1YWwvbGliaWNvbnYiCiBERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGFyZ3Atc3RhbmRhbG9uZSIKQEAgLTE4LDExICsxOSwxMCBAQAogCiBTUkNfVVJJID0gImZ0cDovL2Z0cC5nbnV0bHMub3JnL2djcnlwdC9nbnV0bHMvdiR7U0hSVF9WRVJ9L2dudXRscy0ke1BWfS50YXIueHoiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gYmluY29uZmlnIHBrZ2NvbmZpZyBnZXR0ZXh0IGxpYl9wYWNrYWdlCitpbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIGJpbmNvbmZpZyBwa2djb25maWcgZ2V0dGV4dCBsaWJfcGFja2FnZSBndGstZG9jCiAKIFBBQ0tBR0VDT05GSUcgPz89ICJsaWJpZG4gemxpYiIKIAotUEFDS0FHRUNPTkZJR1tkb2NzXSA9ICItLWVuYWJsZS1kb2MsLS1kaXNhYmxlLWRvYyIKIFBBQ0tBR0VDT05GSUdbbGliaWRuXSA9ICItLXdpdGgtaWRuLC0td2l0aG91dC1pZG4sbGliaWRuIgogUEFDS0FHRUNPTkZJR1tsaWJ0YXNuMV0gPSAiLS13aXRoLWluY2x1ZGVkLWxpYnRhc24xPW5vLC0td2l0aC1pbmNsdWRlZC1saWJ0YXNuMSxsaWJ0YXNuMSIKIFBBQ0tBR0VDT05GSUdbcDExLWtpdF0gPSAiLS13aXRoLXAxMS1raXQsLS13aXRob3V0LXAxMS1raXQscDExLWtpdCIKQEAgLTMwLDcgKzMwLDcgQEAKIFBBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWIsLS13aXRob3V0LXpsaWIsemxpYiIKIAogRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1kaXNhYmxlLWNyeXdyYXAgXAorICAgIC0tZW5hYmxlLWRvYyBcCiAgICAgLS1kaXNhYmxlLWxpYmRhbmUgXAogICAgIC0tZGlzYWJsZS1ndWlsZSBcCiAgICAgLS1kaXNhYmxlLXJwYXRoIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzLzAwMDEtVXNlLWNvcnJlY3QtaW5jbHVkZS1kaXItd2l0aC1taW5pdGFzbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzLzAwMDEtVXNlLWNvcnJlY3QtaW5jbHVkZS1kaXItd2l0aC1taW5pdGFzbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kN2RkN2NmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMvMDAwMS1Vc2UtY29ycmVjdC1pbmNsdWRlLWRpci13aXRoLW1pbml0YXNuLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gMjY1MWIwODQ3N2Y0MmRkN2EwNWVhN2Q2ZGY0MTBmYjJjNDZkZTRmYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitEYXRlOiBXZWQsIDMxIEF1ZyAyMDE2IDExOjA0OjA2ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIFVzZSBjb3JyZWN0IGluY2x1ZGUgZGlyIHdpdGggbWluaXRhc24KK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworVGhpcyBhbGxvd3MgY29tcGlsaW5nwqBjZXJ0dG9vbC1jZmcgd2l0aG91dCBsaWJ0YXNuIGhlYWRlcnMuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGxhYi5jb20vZ251dGxzL2dudXRscy9tZXJnZV9yZXF1ZXN0cy81NF0KK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CistLS0KKyBzcmMvTWFrZWZpbGUuYW0gfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQoraW5kZXggMTgyZjNhNS4uY2Y2NTM4OCAxMDA2NDQKKy0tLSBhL3NyYy9NYWtlZmlsZS5hbQorKysrIGIvc3JjL01ha2VmaWxlLmFtCitAQCAtMTQ2LDYgKzE0Niw3IEBAIGxpYmNtZF9jbGlfZGVidWdfbGFfU09VUkNFUyA9IGNsaS1kZWJ1Zy1hcmdzLmRlZiBjbGktZGVidWctYXJncy5jIGNsaS1kZWJ1Zy1hcmdzCisgQ09NTU9OX0xJQlMgPSAkKExJQk9QVFMpICQoTFRMSUJJTlRMKQorIGlmIEVOQUJMRV9NSU5JVEFTTjEKKyBDT01NT05fTElCUyArPSAuLi9saWIvbWluaXRhc24xL2xpYm1pbml0YXNuMS5sYSAuLi9nbC9saWJnbnUubGEgCisrQU1fQ1BQRkxBR1MgKz0gLUkkKHRvcF9zcmNkaXIpL2xpYi9taW5pdGFzbjEKKyBlbHNlCisgQ09NTU9OX0xJQlMgKz0gJChMSUJUQVNOMV9MSUJTKQorIGVuZGlmCistLSAKKzIuOS4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzL0NWRS0yMDE2LTc0NDQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy9DVkUtMjAxNi03NDQ0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxNWJlNWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy9DVkUtMjAxNi03NDQ0LnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK0NWRTogQ1ZFLTIwMTYtNzQ0NAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KKworVXBzdHJlYW0gY29tbWl0IGZvbGxvd3M6CisKKworRnJvbSA5NjQ2MzJmMzdkZmRmYjkxNGViYzVlNDlkYjRmYTI5YWYzNWIxZGU5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTmlrb3MgTWF2cm9naWFubm9wb3Vsb3MgPG5tYXZAZ251dGxzLm9yZz4KK0RhdGU6IFNhdCwgMjcgQXVnIDIwMTYgMTc6MDA6MjIgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gb2NzcDogY29ycmVjdGVkIHRoZSBjb21wYXJpc29uIG9mIHRoZSBzZXJpYWwgc2l6ZSBpbiBPQ1NQIHJlc3BvbnNlCisKK1ByZXZpb3VzbHkgdGhlIE9DU1AgY2VydGlmaWNhdGUgY2hlY2sgd291bGRuJ3QgdmVyaWZ5IHRoZSBzZXJpYWwgbGVuZ3RoCithbmQgY291bGQgc3VjY2VlZCBpbiBjYXNlcyBpdCBzaG91bGRuJ3QuCisKK1JlcG9ydGVkIGJ5IFN0ZWZhbiBCdWVobGVyLgorLS0tCisgbGliL3g1MDkvb2NzcC5jIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAwIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliL3g1MDkvb2NzcC5jIGIvbGliL3g1MDkvb2NzcC5jCitpbmRleCA5MmRiOWI2Li44MTgxZjJlIDEwMDY0NAorLS0tIGEvbGliL3g1MDkvb2NzcC5jCisrKysgYi9saWIveDUwOS9vY3NwLmMKK0BAIC0xMzE4LDYgKzEzMTgsNyBAQCBnbnV0bHNfb2NzcF9yZXNwX2NoZWNrX2NydChnbnV0bHNfb2NzcF9yZXNwX3QgcmVzcCwKKyAJCWdudXRsc19hc3NlcnQoKTsKKyAJCWdvdG8gY2xlYW51cDsKKyAJfQorKwljc2VyaWFsLnNpemUgPSB0OworIAorIAlpZiAocnNlcmlhbC5zaXplICE9IGNzZXJpYWwuc2l6ZQorIAkgICAgfHwgbWVtY21wKGNzZXJpYWwuZGF0YSwgcnNlcmlhbC5kYXRhLCByc2VyaWFsLnNpemUpICE9IDApIHsKKy0tCitsaWJnaXQyIDAuMjQuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRsc18zLjQuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzXzMuNC45LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjUyZjZmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzXzMuNC45LmJiCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1yZXF1aXJlIGdudXRscy5pbmMKLQotU1JDX1VSSSArPSAiZmlsZTovL2NvcnJlY3RfcnBsX2dldHRpbWVvZmRheV9zaWduYXR1cmUucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWZpeC1zZWQtY29tbWFuZC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vdXNlLXBrZy1jb25maWctdG8tbG9jYXRlLXpsaWIucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiMWIzYjZkNTVkMGUyYjZkMDFhNTRmNTMxMjlmMWRhOWIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDg1OTRmYWRiYTMzZDQ1MGY3OTZlYzY5NTI2Y2YyYmNlNmZmOWJjM2RjOTBmYmQ3YmYzOGRjMzYwMWY1N2MzZiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzXzMuNS4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHNfMy41LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjJkYmIwNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzXzMuNS4zLmJiCkBAIC0wLDAgKzEsMTMgQEAKK3JlcXVpcmUgZ251dGxzLmluYworCitTUkNfVVJJICs9ICJmaWxlOi8vY29ycmVjdF9ycGxfZ2V0dGltZW9mZGF5X3NpZ25hdHVyZS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtZml4LXNlZC1jb21tYW5kLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly91c2UtcGtnLWNvbmZpZy10by1sb2NhdGUtemxpYi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtY29ycmVjdC1pbmNsdWRlLWRpci13aXRoLW1pbml0YXNuLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi03NDQ0LnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjZjMmM3ZjQwZGRmNTI5MzNlZTNjYTQ3NGNiOGNiNjNjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkyYzRiYzk5OWExMGExYjk1Mjk5ZWJlZmFlZWE4MzMzZjE5ZDhhOThkOTU3YTM1YjVlYWU3NDg4MWJkYjFmZWYiCisKKyMgeDg2IC50ZXh0IHJlbG9jYXRpb25zIHNob3VsZCBiZSBmaXhlZCBmcm9tIDMuNS41IG9ud2FyZHMKK0lOU0FORV9TS0lQXyR7UE59X2FwcGVuZF94ODYgPSAiIHRleHRyZWwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xLzAwMDEtY29uZmlndXJlLWRvbi10LWFkZC1XZXJyb3ItdG8tYnVpbGQtZmxhZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xLzAwMDEtY29uZmlndXJlLWRvbi10LWFkZC1XZXJyb3ItdG8tYnVpbGQtZmxhZ3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWU2NDM5NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvbGlidGFzbjEvMDAwMS1jb25maWd1cmUtZG9uLXQtYWRkLVdlcnJvci10by1idWlsZC1mbGFncy5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIDkwOGU5ZmE0YzExNzJmMDllMGU0NTQyMGE0MDNkYzI1ZWQwYTQ2NmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBOaWtvcyBNYXZyb2dpYW5ub3BvdWxvcyA8bm1hdkByZWRoYXQuY29tPgorRGF0ZTogVHVlLCAyNiBKdWwgMjAxNiAwODo0NTozMyArMDIwMAorU3ViamVjdDogW1BBVENIIDEvNF0gY29uZmlndXJlOiBkb24ndCBhZGQgLVdlcnJvciB0byBidWlsZCBmbGFncworCistLS0KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKKyBjb25maWd1cmUuYWMgfCAyIC0tCisgMSBmaWxlIGNoYW5nZWQsIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDdhMTRlMDQuLjA2NmY1ZmUgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTcwLDggKzcwLDYgQEAgQUNfQVJHX0VOQUJMRShbZ2NjLXdhcm5pbmdzXSwKKyApCisgCisgaWYgdGVzdCAiJGdsX2djY193YXJuaW5ncyIgPSB5ZXM7IHRoZW4KKy0gIGdsX1dBUk5fQUREKFstV2Vycm9yXSwgW1dFUlJPUl9DRkxBR1NdKQorLQorICAgbnc9IiRudyAtV3N5c3RlbS1oZWFkZXJzIiAgICAgICAgICMgRG9uJ3QgbGV0IHN5c3RlbSBoZWFkZXJzIHRyaWdnZXIgd2FybmluZ3MKKyAgIG53PSIkbncgLVdjKystY29tcGF0IiAgICAgICAgICAgICAjIFdlIGRvbid0IGNhcmUgc3Ryb25nbHkgYWJvdXQgQysrIGNvbXBpbGVycworICAgbnc9IiRudyAtV3RyYWRpdGlvbmFsIiAgICAgICAgICAgICMgV2FybnMgb24gI2VsaWYgd2hpY2ggd2UgdXNlIG9mdGVuCistLSAKKzEuOS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvbGlidGFzbjEvMDAwMi1BU04ueS1jb3JyZWN0ZWQtY29tcGlsZXItd2FybmluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvbGlidGFzbjEvMDAwMi1BU04ueS1jb3JyZWN0ZWQtY29tcGlsZXItd2FybmluZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDM2NDIyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMS8wMDAyLUFTTi55LWNvcnJlY3RlZC1jb21waWxlci13YXJuaW5nLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gMzU0MmMwMTYxOGZjZGU4M2IyOTY0MGVhMmM2MGJmZDI2MjlhZTBiNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE5pa29zIE1hdnJvZ2lhbm5vcG91bG9zIDxubWF2QHJlZGhhdC5jb20+CitEYXRlOiBUdWUsIDI2IEp1bCAyMDE2IDA4OjQ3OjQ5ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMi80XSBBU04ueTogY29ycmVjdGVkIGNvbXBpbGVyIHdhcm5pbmcKKworLS0tCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCisgbGliL0FTTjEueSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpYi9BU04xLnkgYi9saWIvQVNOMS55CitpbmRleCA3MzE0MTVkLi42ZGI2MzhmIDEwMDY0NAorLS0tIGEvbGliL0FTTjEueQorKysrIGIvbGliL0FTTjEueQorQEAgLTYyMSw3ICs2MjEsNyBAQCBfYXNuMV9jcmVhdGVfZXJyb3JEZXNjcmlwdGlvbiAoaW50IGVycm9yLCBjaGFyICplcnJvcl9kZXNjKQorICAgICBjYXNlIEFTTjFfTkFNRV9UT09fTE9ORzoKKyAgICAgICBzbnByaW50ZiAoZXJyb3JfZGVzYywgQVNOMV9NQVhfRVJST1JfREVTQ1JJUFRJT05fU0laRSwKKyAgICAgICAgICAgICAgICAgIiVzOiV1OiBuYW1lIHRvbyBsb25nIChtb3JlIHRoYW4gJXUgY2hhcmFjdGVycykiLCBmaWxlX25hbWUsCistICAgICAgICAgICAgICAgIGxpbmVfbnVtYmVyLCBBU04xX01BWF9OQU1FX1NJWkUpOworKyAgICAgICAgICAgICAgICBsaW5lX251bWJlciwgKHVuc2lnbmVkKUFTTjFfTUFYX05BTUVfU0laRSk7CisgICAgICAgYnJlYWs7CisgICAgIGNhc2UgQVNOMV9JREVOVElGSUVSX05PVF9GT1VORDoKKyAgICAgICBzbnByaW50ZiAoZXJyb3JfZGVzYywgQVNOMV9NQVhfRVJST1JfREVTQ1JJUFRJT05fU0laRSwKKy0tIAorMS45LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMS8wMDAzLXBhcnNlcl9hdXgtY29ycmVjdGVkLXBvdGVudGlhbC1udWxsLXBvaW50ZXItZGVyZWZlcmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xLzAwMDMtcGFyc2VyX2F1eC1jb3JyZWN0ZWQtcG90ZW50aWFsLW51bGwtcG9pbnRlci1kZXJlZmVyZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDIwMTQzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMS8wMDAzLXBhcnNlcl9hdXgtY29ycmVjdGVkLXBvdGVudGlhbC1udWxsLXBvaW50ZXItZGVyZWZlcmUucGF0Y2gKQEAgLTAsMCArMSw3MyBAQAorRnJvbSBjODkwM2FhMjdkYzlkZTFkOWVmZWVkOWQxZjc4OTRmMTAxOTU0OGY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTmlrb3MgTWF2cm9naWFubm9wb3Vsb3MgPG5tYXZAcmVkaGF0LmNvbT4KK0RhdGU6IFR1ZSwgMjYgSnVsIDIwMTYgMDg6NDk6MTUgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAzLzRdIHBhcnNlcl9hdXg6IGNvcnJlY3RlZCBwb3RlbnRpYWwgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlcworCistLS0KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKKyBsaWIvcGFyc2VyX2F1eC5jIHwgMTIgKysrKysrLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYi9wYXJzZXJfYXV4LmMgYi9saWIvcGFyc2VyX2F1eC5jCitpbmRleCAyMjg1YjIwLi4xMmVlMTZmIDEwMDY0NAorLS0tIGEvbGliL3BhcnNlcl9hdXguYworKysrIGIvbGliL3BhcnNlcl9hdXguYworQEAgLTYzNyw3ICs2MzcsNyBAQCBfYXNuMV9jaGFuZ2VfaW50ZWdlcl92YWx1ZSAoYXNuMV9ub2RlIG5vZGUpCisgCQkgICAgICBwID0gTlVMTDsKKyAJCSAgICAgIGJyZWFrOworIAkJICAgIH0KKy0JCSAgaWYgKHAtPnJpZ2h0KQorKwkJICBpZiAocCAmJiBwLT5yaWdodCkKKyAJCSAgICB7CisgCQkgICAgICBwID0gcC0+cmlnaHQ7CisgCQkgICAgICBicmVhazsKK0BAIC03NTMsNyArNzUzLDcgQEAgX2FzbjFfZXhwYW5kX29iamVjdF9pZCAoYXNuMV9ub2RlIG5vZGUpCisgCisgICAgICAgaWYgKG1vdmUgPT0gUklHSFQpCisgCXsKKy0JICBpZiAocC0+cmlnaHQpCisrCSAgaWYgKHAgJiYgcC0+cmlnaHQpCisgCSAgICBwID0gcC0+cmlnaHQ7CisgCSAgZWxzZQorIAkgICAgbW92ZSA9IFVQOworQEAgLTgyOCw3ICs4MjgsNyBAQCBfYXNuMV9leHBhbmRfb2JqZWN0X2lkIChhc24xX25vZGUgbm9kZSkKKyAKKyAgICAgICBpZiAobW92ZSA9PSBSSUdIVCkKKyAJeworLQkgIGlmIChwLT5yaWdodCkKKysJICBpZiAocCAmJiBwLT5yaWdodCkKKyAJICAgIHAgPSBwLT5yaWdodDsKKyAJICBlbHNlCisgCSAgICBtb3ZlID0gVVA7CitAQCAtODk4LDcgKzg5OCw3IEBAIF9hc24xX3R5cGVfc2V0X2NvbmZpZyAoYXNuMV9ub2RlIG5vZGUpCisgCisgICAgICAgaWYgKG1vdmUgPT0gUklHSFQpCisgCXsKKy0JICBpZiAocC0+cmlnaHQpCisrCSAgaWYgKHAgJiYgcC0+cmlnaHQpCisgCSAgICBwID0gcC0+cmlnaHQ7CisgCSAgZWxzZQorIAkgICAgbW92ZSA9IFVQOworQEAgLTEwMDcsNyArMTAwNyw3IEBAIF9hc24xX2NoZWNrX2lkZW50aWZpZXIgKGFzbjFfbm9kZSBub2RlKQorIAkJICBwID0gTlVMTDsKKyAJCSAgYnJlYWs7CisgCQl9CistCSAgICAgIGlmIChwLT5yaWdodCkKKysJICAgICAgaWYgKHAgJiYgcC0+cmlnaHQpCisgCQl7CisgCQkgIHAgPSBwLT5yaWdodDsKKyAJCSAgYnJlYWs7CitAQCAtMTA2Nyw3ICsxMDY3LDcgQEAgX2FzbjFfc2V0X2RlZmF1bHRfdGFnIChhc24xX25vZGUgbm9kZSkKKyAJCSAgcCA9IE5VTEw7CisgCQkgIGJyZWFrOworIAkJfQorLQkgICAgICBpZiAocC0+cmlnaHQpCisrCSAgICAgIGlmIChwICYmIHAtPnJpZ2h0KQorIAkJeworIAkJICBwID0gcC0+cmlnaHQ7CisgCQkgIGJyZWFrOworLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xLzAwMDQtdG9vbHMtZWxpbWluYXRlZC1jb21waWxlci13YXJuaW5ncy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvbGlidGFzbjEvMDAwNC10b29scy1lbGltaW5hdGVkLWNvbXBpbGVyLXdhcm5pbmdzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiZGEwZTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xLzAwMDQtdG9vbHMtZWxpbWluYXRlZC1jb21waWxlci13YXJuaW5ncy5wYXRjaApAQCAtMCwwICsxLDU2IEBACitGcm9tIGQ2NDdiYjJmYTFiZDI4OGE2YWMwMmMxODMxOGYzY2JhMmEzNGMzYTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBOaWtvcyBNYXZyb2dpYW5ub3BvdWxvcyA8bm1hdkByZWRoYXQuY29tPgorRGF0ZTogVHVlLCAyNiBKdWwgMjAxNiAwODo1MDoyNCArMDIwMAorU3ViamVjdDogW1BBVENIIDQvNF0gdG9vbHM6IGVsaW1pbmF0ZWQgY29tcGlsZXIgd2FybmluZ3MKKworLS0tCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCisgc3JjL2FzbjFDb2RpbmcuYyAgIHwgMiArLQorIHNyYy9hc24xRGVjb2RpbmcuYyB8IDIgKy0KKyBzcmMvYXNuMVBhcnNlci5jICAgfCAyICstCisgMyBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvYXNuMUNvZGluZy5jIGIvc3JjL2FzbjFDb2RpbmcuYworaW5kZXggZDRkZjU5My4uYjUxNmJmZSAxMDA2NDQKKy0tLSBhL3NyYy9hc24xQ29kaW5nLmMKKysrKyBiL3NyYy9hc24xQ29kaW5nLmMKK0BAIC0xODgsNyArMTg4LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJZGVmYXVsdDoKKyAJICBmcHJpbnRmIChzdGRlcnIsCisgCQkgICAiYXNuMUNvZGluZzogPz8gZ2V0b3B0IHJldHVybmVkIGNoYXJhY3RlciBjb2RlIE94JXggPz9cbiIsCistCQkgICBvcHRpb25fcmVzdWx0KTsKKysJCSAgICh1bnNpZ25lZClvcHRpb25fcmVzdWx0KTsKKyAJfQorICAgICB9CisgCitkaWZmIC0tZ2l0IGEvc3JjL2FzbjFEZWNvZGluZy5jIGIvc3JjL2FzbjFEZWNvZGluZy5jCitpbmRleCAwNzg5NjNlLi4yMGY5MWFjIDEwMDY0NAorLS0tIGEvc3JjL2FzbjFEZWNvZGluZy5jCisrKysgYi9zcmMvYXNuMURlY29kaW5nLmMKK0BAIC0xMzEsNyArMTMxLDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJZGVmYXVsdDoKKyAJICBmcHJpbnRmIChzdGRlcnIsCisgCQkgICAiYXNuMURlY29kaW5nOiA/PyBnZXRvcHQgcmV0dXJuZWQgY2hhcmFjdGVyIGNvZGUgT3gleCA/P1xuIiwKKy0JCSAgIG9wdGlvbl9yZXN1bHQpOworKwkJICAgKHVuc2lnbmVkKW9wdGlvbl9yZXN1bHQpOworIAl9CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9zcmMvYXNuMVBhcnNlci5jIGIvc3JjL2FzbjFQYXJzZXIuYworaW5kZXggN2EzYWU2Ny4uNDc1YmZjOSAxMDA2NDQKKy0tLSBhL3NyYy9hc24xUGFyc2VyLmMKKysrKyBiL3NyYy9hc24xUGFyc2VyLmMKK0BAIC0xMzksNyArMTM5LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJZGVmYXVsdDoKKyAJICBmcHJpbnRmIChzdGRlcnIsCisgCQkgICAiYXNuMVBhcnNlcjogPz8gZ2V0b3B0IHJldHVybmVkIGNoYXJhY3RlciBjb2RlIE94JXggPz9cbiIsCistCQkgICBvcHRpb25fcmVzdWx0KTsKKysJCSAgICh1bnNpZ25lZClvcHRpb25fcmVzdWx0KTsKKyAJfQorIAorICAgICB9CistLSAKKzEuOS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvbGlidGFzbjFfNC43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMV80LjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmMDg1NjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMV80LjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgZm9yIEFTTi4xIGFuZCBERVIgbWFuaXB1bGF0aW9uIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYnRhc24xLyIKLQotTElDRU5TRSA9ICJHUEx2MysgJiBMR1BMdjIuMSsiCi1MSUNFTlNFXyR7UE59LWJpbiA9ICJHUEx2MysiCi1MSUNFTlNFXyR7UE59ID0gIkxHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9SRUFETUU7ZW5kbGluZT04O21kNT1jMzgwM2EzZThjYTVhYjVlYjFlNTkxMmZhYTQwNTM1MSIKLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2xpYnRhc24xL2xpYnRhc24xLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9kb250LWRlcGVuZC1vbi1oZWxwMm1hbi5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjEyZDEwY2E0YWUwYTNiOTVmN2FhMDZhMDc2ZGEzOWVjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImE0MDc4MGRjOTNmYzZkODE5MTcwMjQwZThlY2UyNTM1MjA1OGE4NWZkMWQyMzQ3Y2UwZjE0MzY2N2Q4ZjExYzkiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gYmluY29uZmlnIGxpYl9wYWNrYWdlCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMV80LjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xXzQuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOGZmOWVhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMV80LjkuYmIKQEAgLTAsMCArMSwyNCBAQAorU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciBBU04uMSBhbmQgREVSIG1hbmlwdWxhdGlvbiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJ0YXNuMS8iCisKK0xJQ0VOU0UgPSAiR1BMdjMrICYgTEdQTHYyLjErIgorTElDRU5TRV8ke1BOfS1iaW4gPSAiR1BMdjMrIgorTElDRU5TRV8ke1BOfSA9ICJMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vUkVBRE1FO2VuZGxpbmU9ODttZDU9YzM4MDNhM2U4Y2E1YWI1ZWIxZTU5MTJmYWE0MDUzNTEiCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9saWJ0YXNuMS9saWJ0YXNuMS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtZG9uLXQtYWRkLVdlcnJvci10by1idWlsZC1mbGFncy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLUFTTi55LWNvcnJlY3RlZC1jb21waWxlci13YXJuaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtcGFyc2VyX2F1eC1jb3JyZWN0ZWQtcG90ZW50aWFsLW51bGwtcG9pbnRlci1kZXJlZmVyZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LXRvb2xzLWVsaW1pbmF0ZWQtY29tcGlsZXItd2FybmluZ3MucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzMDE4ZDBmNDY2YTMyYjY2ZGRlNDFiYjEyMmU2Y2FiNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0ZjZmN2E4ZmQ2OTFhYzJiODMwN2M4Y2EzNjViYWQ3MTFkYjYwN2Q0YWQ1OTY2ZjY5MzhhOWQyZWNkNjVjOTIwIgorCitpbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIGJpbmNvbmZpZyBsaWJfcGFja2FnZSBndGstZG9jCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lXzEuNi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lXzEuNi4wLmJiCmluZGV4IDg2ZWRhMjMuLmEyZDA1ODcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZV8xLjYuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWVfMS42LjAuYmIKQEAgLTksNyArOSw4IEBACiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZ3BnbWUuaC5pbjtlbmRsaW5lPTIzO21kNT01MDI3ZWVjOTNhOTk2MjcyYTlhMGE2YTg2Y2YzNTc3NSBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZW5naW5lLmg7ZW5kbGluZT0yMjttZDU9NGI2ZDhiYTMxM2Q5YjU2NGNjNGQ0Y2ZiMTY0MGFmOWQiCiAKLVNSQ19VUkkgPSAiZnRwOi8vZnRwLmdudXBnLm9yZy9nY3J5cHQvZ3BnbWUvJHtCUH0udGFyLmJ6MiBcCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKK1NSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9L2dwZ21lLyR7QlB9LnRhci5iejIgXAogICAgICAgICAgICBmaWxlOi8vZ3BnbWUucGMgXAogICAgICAgICAgICBmaWxlOi8vcGtnY29uZmlnLnBhdGNoIFwKICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS9pY3UtcmVsZWFzZS01Ni0xLWZsYWdwYXJzZXItZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UvaWN1LXJlbGVhc2UtNTYtMS1mbGFncGFyc2VyLWZpeC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTUxOWQ4NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS9pY3UtcmVsZWFzZS01Ni0xLWZsYWdwYXJzZXItZml4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotaWN1OiBUaWNrZXQgIzExOTU5OiBwa2dkYXRhIGRpZXMgd2hlbiBjb21waWxlZCB3aXRoIGxvdHMnbydmbGFncwotCi1TZWU6IGh0dHA6Ly9idWdzLmljdS1wcm9qZWN0Lm9yZy90cmFjL3RpY2tldC8xMTk1OQotCi1UaGUgcGF0Y2ggYXZvaWRzIHByZW1hdHVyZSBmYWlsdXJlIHdoaWNoIHJlc3VsdHMgaW4gYSBzZWdmYXVsdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBvZiByMzgwODEKLVNpZ25lZC1vZmYtYnk6IE1pa2UgQ3Jvd2UgPG1hY0BtY3Jvd2UuY29tPgotCi1JbmRleDogc291cmNlL3Rvb2xzL3Rvb2x1dGlsL2ZsYWdwYXJzZXIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHNvdXJjZS90b29scy90b29sdXRpbC9mbGFncGFyc2VyLmMJKHJldmlzaW9uIDM4MDQ2KQotKysrIHNvdXJjZS90b29scy90b29sdXRpbC9mbGFncGFyc2VyLmMJKHdvcmtpbmcgY29weSkKLUBAIC05Niw4ICs5Niw4IEBACi0gICAgIHVwcnZfZnJlZShidWZmZXIpOwotIAotICAgICBUX0ZpbGVTdHJlYW1fY2xvc2UoZik7Ci0tICAgIAotLSAgICBpZiAoVV9GQUlMVVJFKCpzdGF0dXMpKSB7Ci0rCi0rICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykgJiYgKnN0YXR1cyAhPSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUikgewotICAgICAgICAgcmV0dXJuIC0xOwotICAgICB9Ci0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdV81Ni4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3VfNTYuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGIwZGUxMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdV81Ni4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotcmVxdWlyZSBpY3UuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL2xpY2Vuc2UuaHRtbDttZDU9NjRlZmY0YWFkZmY0ZDEwNGQ2ZDQzN2M0ZmRlMGU2ZDciCi0KLWRlZiBpY3VfZG93bmxvYWRfdmVyc2lvbihkKToKLSAgICBwdnNwbGl0ID0gZC5nZXRWYXIoJ1BWJywgVHJ1ZSkuc3BsaXQoJy4nKQotICAgIHJldHVybiBwdnNwbGl0WzBdICsgIl8iICsgcHZzcGxpdFsxXQotCi1JQ1VfUFYgPSAiJHtAaWN1X2Rvd25sb2FkX3ZlcnNpb24oZCl9IgotCi0jIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8yMDQ4Ni8KLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCi0KLUJBU0VfU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuaWN1LXByb2plY3Qub3JnL2ZpbGVzL2ljdTRjLyR7UFZ9L2ljdTRjLSR7SUNVX1BWfS1zcmMudGd6IgotU1JDX1VSSSA9ICIke0JBU0VfU1JDX1VSSX0gXAotICAgICAgICAgICBmaWxlOi8vaWN1LXBrZ2RhdGEtbGFyZ2UtY21kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1pbnN0YWxsLW1hbngucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vaWN1LXJlbGVhc2UtNTYtMS1mbGFncGFyc2VyLWZpeC5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLUxERkxBR1NJQ1VEVC1mb3ItTGludXgucGF0Y2ggXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJjNGEyZDcxZmY1NmFlYzVlYmZhYjJhM2YwNTliZTk5ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzYTY0ZTkxMDVjNzM0ZGNmNjMxYzBiM2VkNjA0MDQ1MzFiY2U2YzBmNWE2NGJmZTFhNjQwMmE0Y2MyMzE0ODE2IgotCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykvIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5pY3UtcHJvamVjdC5vcmcvZmlsZXMvaWN1NGMvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3VfNTcuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1XzU3LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTBjMmI4MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1XzU3LjEuYmIKQEAgLTAsMCArMSwyOCBAQAorcmVxdWlyZSBpY3UuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL0xJQ0VOU0U7bWQ1PTc4N2QzYjM3ODY3NDQ1YzFjZGQ2ZjYxNjdiZDBlMzQ3IgorCitkZWYgaWN1X2Rvd25sb2FkX3ZlcnNpb24oZCk6CisgICAgcHZzcGxpdCA9IGQuZ2V0VmFyKCdQVicsIFRydWUpLnNwbGl0KCcuJykKKyAgICByZXR1cm4gcHZzcGxpdFswXSArICJfIiArIHB2c3BsaXRbMV0KKworSUNVX1BWID0gIiR7QGljdV9kb3dubG9hZF92ZXJzaW9uKGQpfSIKKworIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjA0ODYvCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgorCitCQVNFX1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLmljdS1wcm9qZWN0Lm9yZy9maWxlcy9pY3U0Yy8ke1BWfS9pY3U0Yy0ke0lDVV9QVn0tc3JjLnRneiIKK1NSQ19VUkkgPSAiJHtCQVNFX1NSQ19VUkl9IFwKKyAgICAgICAgICAgZmlsZTovL2ljdS1wa2dkYXRhLWxhcmdlLWNtZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtaW5zdGFsbC1tYW54LnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICJcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURpc2FibGUtTERGTEFHU0lDVURULWZvci1MaW51eC5wYXRjaCBcCisgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjk3NjczNDgwNjAyNmE0ZWY4YmRkMTc5MzdjODg5OGI5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImZmOGM2N2NiNjU5NDliMWU3ODA4ZjIzNTlmMmI4MGY3MjI2OTcwNDhlOTBlN2NmYzM4MmVjMWZlMjI5ZTk1ODEiCisKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKS8iCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLmljdS1wcm9qZWN0Lm9yZy9maWxlcy9pY3U0Yy8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaXNvLWNvZGVzL2lzby1jb2Rlc18zLjY1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2lzby1jb2Rlcy9pc28tY29kZXNfMy42NS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGI3OGRjNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaXNvLWNvZGVzL2lzby1jb2Rlc18zLjY1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotU1VNTUFSWSA9ICJJU08gbGFuZ3VhZ2UsIHRlcnJpdG9yeSwgY3VycmVuY3ksIHNjcmlwdCBjb2RlcyBhbmQgdGhlaXIgdHJhbnNsYXRpb25zIgotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWZiYzA5MzkwMTg1N2ZjZDExOGYwNjVmOTAwOTgyYzI0IgotCi1TUkNfVVJJID0gImh0dHBzOi8vcGtnLWlzb2NvZGVzLmFsaW90aC5kZWJpYW4ub3JnL2Rvd25sb2Fkcy9pc28tY29kZXMtJHtQVn0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gIjg5MGEwOGQ0Zjk2Mjc0OGUwYTA3NThhOGFhNDcxODk2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgzNGRlNTE5M2M4NDg5ZWVkZWFmNjUwOTQ1N2E5YjEzNDc2NzAyMzg2YWUxZjNlZDRmMzkxYTM0OWQ2MzAzMjAiCi0KLSMgaW5oZXJpdCBnZXR0ZXh0IGNhbm5vdCBiZSB1c2VkLCBiZWNhdXNlIGl0IGFkZHMgZ2V0dGV4dC1uYXRpdmUgdG8gQkFTRURFUEVORFMgd2hpY2gKLSMgYXJlIGluaGliaXRlZCBieSBhbGxhcmNoCi1ERVBFTkRTID0gImdldHRleHQtbmF0aXZlIgotCi1pbmhlcml0IGFsbGFyY2ggYXV0b3Rvb2xzCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3htbC8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaXNvLWNvZGVzL2lzby1jb2Rlc18zLjcwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2lzby1jb2Rlcy9pc28tY29kZXNfMy43MC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZWRkOGI3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2lzby1jb2Rlcy9pc28tY29kZXNfMy43MC5iYgpAQCAtMCwwICsxLDE1IEBACitTVU1NQVJZID0gIklTTyBsYW5ndWFnZSwgdGVycml0b3J5LCBjdXJyZW5jeSwgc2NyaXB0IGNvZGVzIGFuZCB0aGVpciB0cmFuc2xhdGlvbnMiCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9wa2ctaXNvY29kZXMuYWxpb3RoLmRlYmlhbi5vcmcvZG93bmxvYWRzL2lzby1jb2Rlcy0ke1BWfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiYzYxZjhmMDJlZWNmOTc4ZDM3MTBmZjU5NGU0M2NhN2UiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDFlMmZiYWVjMmVkNTdlNzY3Yjk0ZjE3NWQwZGNkMzFiNjI3YWViMjNiNzVjZDYwNDYwNWE2ZmI2MTA5ZDYxZiIKKworIyBpbmhlcml0IGdldHRleHQgY2Fubm90IGJlIHVzZWQsIGJlY2F1c2UgaXQgYWRkcyBnZXR0ZXh0LW5hdGl2ZSB0byBCQVNFREVQRU5EUyB3aGljaAorIyBhcmUgaW5oaWJpdGVkIGJ5IGFsbGFyY2gKK0RFUEVORFMgPSAiZ2V0dGV4dC1uYXRpdmUiCisKK2luaGVyaXQgYWxsYXJjaCBhdXRvdG9vbHMKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0veG1sLyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhc3N1YW4vbGliYXNzdWFuXzIuNC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmFzc3Vhbi9saWJhc3N1YW5fMi40LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzNzZkNjMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmFzc3Vhbi9saWJhc3N1YW5fMi40LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1TVU1NQVJZID0gIklQQyBsaWJyYXJ5IHVzZWQgYnkgR251UEcgYW5kIEdQR01FIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvcmVsYXRlZF9zb2Z0d2FyZS9saWJhc3N1YW4vIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZzEwY29kZS5jb20vZ251cGcvaW5kZXgiCi0KLUxJQ0VOU0UgPSAiR1BMdjMrICYgTEdQTHYyLjErIgotTElDRU5TRV8ke1BOfSA9ICJMR1BMdjIuMSsiCi1MSUNFTlNFXyR7UE59LWRvYyA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mMjdkZWZlMWU5NmMyZTFlY2Q0ZTBjOWJlODk2Nzk0OSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2Fzc3Vhbi5jO2VuZGxpbmU9MjA7bWQ1PTBmNDY1NTQ0MTgzNDA1MDU1ZWMxNzk4NjlmYzViNWJhIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9hc3N1YW4tZGVmcy5oO2VuZGxpbmU9MjA7bWQ1PTIwY2Q1NTUzNTI2MGNhMTc3OWVkYWU1YzdiODBiMjFlIgotCi1ERVBFTkRTID0gImxpYmdwZy1lcnJvciIKLQotU1JDX1VSSSA9ICJmdHA6Ly9mdHAuZ251cGcub3JnL2djcnlwdC9saWJhc3N1YW4vbGliYXNzdWFuLSR7UFZ9LnRhci5iejIgXAotCSAgIGZpbGU6Ly9saWJhc3N1YW4tYWRkLXBrZ2NvbmZpZy1zdXBwb3J0LnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzAxNTE5OTVjMjMzMGFlMTI2MWMwYTdjYTM0Y2Y0NzgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmIwNmRjODEzODBiNzRiZjFiNjRkNTg0OWJlNWMwNDA5YTMzNmYzYjRjNDVmMjBhYzY4OGU4NmQxYjViY2IyMCIKLQotQklOQ09ORklHID0gIiR7YmluZGlyfS9saWJhc3N1YW4tY29uZmlnIgotCi1pbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCSMgRWxzZSB0aGVzZSBjb3VsZCBiZSB1c2VkIGluIHByZWZlcmVuY2UgdG8gdGhvc2UgaW4gYWNsb2NhbC1jb3B5Ci0Jcm0gLWYgJHtTfS9tNC8qLm00Ci19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmFzc3Vhbi9saWJhc3N1YW5fMi40LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXNzdWFuL2xpYmFzc3Vhbl8yLjQuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjM5MTZkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmFzc3Vhbi9saWJhc3N1YW5fMi40LjMuYmIKQEAgLTAsMCArMSwzMSBAQAorU1VNTUFSWSA9ICJJUEMgbGlicmFyeSB1c2VkIGJ5IEdudVBHIGFuZCBHUEdNRSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251cGcub3JnL3JlbGF0ZWRfc29mdHdhcmUvbGliYXNzdWFuLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmcxMGNvZGUuY29tL2dudXBnL2luZGV4IgorCitMSUNFTlNFID0gIkdQTHYzKyAmIExHUEx2Mi4xKyIKK0xJQ0VOU0VfJHtQTn0gPSAiTEdQTHYyLjErIgorTElDRU5TRV8ke1BOfS1kb2MgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjI3ZGVmZTFlOTZjMmUxZWNkNGUwYzliZTg5Njc5NDkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9hc3N1YW4uYztlbmRsaW5lPTIwO21kNT0wZjQ2NTU0NDE4MzQwNTA1NWVjMTc5ODY5ZmM1YjViYSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvYXNzdWFuLWRlZnMuaDtlbmRsaW5lPTIwO21kNT0yMGNkNTU1MzUyNjBjYTE3NzllZGFlNWM3YjgwYjIxZSIKKworREVQRU5EUyA9ICJsaWJncGctZXJyb3IiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dudXBnLm9yZy9kb3dubG9hZC9pbmRleC5odG1sIgorU1JDX1VSSSA9ICIke0dOVVBHX01JUlJPUn0vbGliYXNzdWFuL2xpYmFzc3Vhbi0ke1BWfS50YXIuYnoyIFwKKwkgICBmaWxlOi8vbGliYXNzdWFuLWFkZC1wa2djb25maWctc3VwcG9ydC5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gIjhlMDFhN2M3MmQzZTVkMTU0NDgxMjMwNjY4ZTZlYjVhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIyODQzYTNiZGIyNTZmNTliZTQ5ODQyYWJmMjRkYTc2NzAwMzU0MjkzYTA2NmQ4MmFkZTgxMzRiYjVhYTJiNzEiCisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vbGliYXNzdWFuLWNvbmZpZyIKKworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwkjIEVsc2UgdGhlc2UgY291bGQgYmUgdXNlZCBpbiBwcmVmZXJlbmNlIHRvIHRob3NlIGluIGFjbG9jYWwtY29weQorCXJtIC1mICR7U30vbTQvKi5tNAorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhdG9taWMtb3BzL2xpYmF0b21pYy1vcHNfNy40LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXRvbWljLW9wcy9saWJhdG9taWMtb3BzXzcuNC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZGI3MGQ4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhdG9taWMtb3BzL2xpYmF0b21pYy1vcHNfNy40LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1TVU1NQVJZID0gIkEgbGlicmFyeSBmb3IgYXRvbWljIGludGVnZXIgb3BlcmF0aW9ucyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pdm1haS9saWJhdG9taWNfb3BzLyIKLVNFQ1RJT04gPSAib3B0aW9uYWwiCi1QUk9WSURFUyArPSAibGliYXRvbWljcy1vcHMiCi1MSUNFTlNFID0gIkdQTHYyICYgTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jL0xJQ0VOU0lORy50eHQ7bWQ1PWUwMGRkNWM4YWMwM2ExNGM1YWU1MjI1YTQ1MjVmYTJkIFwKLQkJICAgIgotCi1TUkNfVVJJID0gIlwKLQlodHRwOi8vd3d3Lml2bWFpc29mdC5jb20vX2Jpbi9hdG9taWNfb3BzL2xpYmF0b21pY19vcHMtJHtQVn0udGFyLmd6IFwKLQlmaWxlOi8vMDAwMS1BZGQtaW5pdGlhbC1uaW9zMi1hcmNoaXRlY3R1cmUtc3VwcG9ydC5wYXRjaCBcCi0JIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMWQ2NTM4NjA0YjMxNGQyZmNjZGY4NjkxNWU1YzA4NTciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDRmYTYxNWY2Mjk5MjU0N2JjYmRhNTYyMjYwZTI4YjUwNGJjNGMwNmUyZjk4NWYyNjdmM2FkZTMwMzA0YjVkZCIKLQotUyA9ICIke1dPUktESVJ9L2xpYmF0b21pY19vcHMtJHtQVn0iCi0KLUFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCi0KLUFSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JIyB0aG9zZSBjb250YWluIG9ubHkgZG9jcywgbm90IG5lY2Vzc2FyeSBmb3Igbm93LgotCWluc3RhbGwgLW0gMDc1NSAtZCAke0R9JHtkb2NkaXJ9Ci0JbXYgJHtEfSR7ZGF0YWRpcn0vbGliYXRvbWljX29wcyAke0R9JHtkb2NkaXJ9LyR7QlBOfQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXRvbWljLW9wcy9saWJhdG9taWMtb3BzXzcuNC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmF0b21pYy1vcHMvbGliYXRvbWljLW9wc183LjQuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzBjMWI4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmF0b21pYy1vcHMvbGliYXRvbWljLW9wc183LjQuNC5iYgpAQCAtMCwwICsxLDMyIEBACitTVU1NQVJZID0gIkEgbGlicmFyeSBmb3IgYXRvbWljIGludGVnZXIgb3BlcmF0aW9ucyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pdm1haS9saWJhdG9taWNfb3BzLyIKK1NFQ1RJT04gPSAib3B0aW9uYWwiCitQUk9WSURFUyArPSAibGliYXRvbWljcy1vcHMiCitMSUNFTlNFID0gIkdQTHYyICYgTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jL0xJQ0VOU0lORy50eHQ7bWQ1PWUwMGRkNWM4YWMwM2ExNGM1YWU1MjI1YTQ1MjVmYTJkIFwKKwkJICAgIgorCitTUkNfVVJJID0gIlwKKwlodHRwOi8vd3d3Lml2bWFpc29mdC5jb20vX2Jpbi9hdG9taWNfb3BzL2xpYmF0b21pY19vcHMtJHtQVn0udGFyLmd6IFwKKwlmaWxlOi8vMDAwMS1BZGQtaW5pdGlhbC1uaW9zMi1hcmNoaXRlY3R1cmUtc3VwcG9ydC5wYXRjaCBcCisJIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDI2ZDgwNGJhYWUxMmMzNzI5NjdhNmQxODNlMjVhZjIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmYyMTBhNjAwZGQxYmVjYmY3OTM2ZGQyOTE0Y2Y1ZjVkMzM1NjA0NjkwNDg0OGRjZmQyN2QwYzhiMTJiNmY4ZiIKKworUyA9ICIke1dPUktESVJ9L2xpYmF0b21pY19vcHMtJHtQVn0iCisKK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCisKK0FSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyB0aG9zZSBjb250YWluIG9ubHkgZG9jcywgbm90IG5lY2Vzc2FyeSBmb3Igbm93LgorCWluc3RhbGwgLW0gMDc1NSAtZCAke0R9JHtkb2NkaXJ9CisJbXYgJHtEfSR7ZGF0YWRpcn0vbGliYXRvbWljX29wcyAke0R9JHtkb2NkaXJ9LyR7QlBOfQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZF8wLjguMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkXzAuOC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMzM1Mzg2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkXzAuOC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTMgS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLSMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKLQotU1VNTUFSWSA9ICJMaWJyYXJ5IG9mIHV0aWxpdHkgZnVuY3Rpb25zIGZyb20gQlNEIHN5c3RlbXMiCi1ERVNDUklQVElPTiA9ICJUaGlzIGxpYnJhcnkgcHJvdmlkZXMgdXNlZnVsIGZ1bmN0aW9ucyBjb21tb25seSBmb3VuZCBvbiBCU0Qgc3lzdGVtcywgXAotICAgICAgICAgICAgICAgYW5kIGxhY2tpbmcgb24gb3RoZXJzIGxpa2UgR05VIHN5c3RlbXMsIHRodXMgbWFraW5nIGl0IGVhc2llciB0byBwb3J0IFwKLSAgICAgICAgICAgICAgIHByb2plY3RzIHdpdGggc3Ryb25nIEJTRCBvcmlnaW5zLCB3aXRob3V0IG5lZWRpbmcgdG8gZW1iZWQgdGhlIHNhbWUgXAotICAgICAgICAgICAgICAgY29kZSBvdmVyIGFuZCBvdmVyIGFnYWluIG9uIGVhY2ggcHJvamVjdC4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9saWJic2QuZnJlZWRlc2t0b3Aub3JnL3dpa2kvIgotIyBUaGVyZSBzZWVtcyB0byBiZSBtb3JlIGxpY2Vuc2VzIHVzZWQgaW4gdGhlIGNvZGUsIEkgZG9uJ3QgdGhpbmsgd2Ugd2FudCB0byBsaXN0IHRoZW0gYWxsIGhlcmUsIGNvbXBsZXRlIGxpc3Q6Ci0jIE9FIEAgfi9wcm9qZWN0cy9saWJic2QgJCBncmVwIF5MaWNlbnNlOiBDT1BZSU5HICB8IHNvcnQKLSMgTGljZW5zZTogQlNELTItY2xhdXNlCi0jIExpY2Vuc2U6IEJTRC0yLWNsYXVzZQotIyBMaWNlbnNlOiBCU0QtMi1jbGF1c2UtTmV0QlNECi0jIExpY2Vuc2U6IEJTRC0yLWNsYXVzZS1hdXRob3IKLSMgTGljZW5zZTogQlNELTItY2xhdXNlLXZlcmJhdGltCi0jIExpY2Vuc2U6IEJTRC0zLWNsYXVzZQotIyBMaWNlbnNlOiBCU0QtMy1jbGF1c2UKLSMgTGljZW5zZTogQlNELTMtY2xhdXNlCi0jIExpY2Vuc2U6IEJTRC0zLWNsYXVzZS1QZXRlci1XZW1tCi0jIExpY2Vuc2U6IEJTRC0zLWNsYXVzZS1SZWdlbnRzCi0jIExpY2Vuc2U6IEJTRC00LWNsYXVzZS1DaHJpc3RvcGhlci1HLURlbWV0cmlvdQotIyBMaWNlbnNlOiBCU0QtNC1jbGF1c2UtTmllbHMtUHJvdm9zCi0jIExpY2Vuc2U6IEJTRC01LWNsYXVzZS1QZXRlci1XZW1tCi0jIExpY2Vuc2U6IEJlZXJ3YXJlCi0jIExpY2Vuc2U6IEV4cGF0Ci0jIExpY2Vuc2U6IElTQwotIyBMaWNlbnNlOiBJU0MtT3JpZ2luYWwKLSMgTGljZW5zZTogcHVibGljLWRvbWFpbgotIyBMaWNlbnNlOiBwdWJsaWMtZG9tYWluLUNvbGluLVBsdW1iCi1MSUNFTlNFID0gIkJTRC00LUNsYXVzZSAmIElTQyAmIFBEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTQ1ZWMwNWEyMTdkOGY4NzlmMjljZmM1ZjgzMDg0YmUiCi1TRUNUSU9OID0gImxpYnMiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vbGliYnNkLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImNkZWUyNTJjY2ZmOTc4YjUwYWQyMzM2Mjc4YzUwNmM5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImIyZjY0NGNhZTk0YTZlMmZlMTA5NDQ5YzIwYWQ3OWEwZjZlZTRmYWVjMjIwNWIwN2VlZmEwMDIwNTY1ZTI1MGEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2RfMC44LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZF8wLjguMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MjEyMWVmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2RfMC44LjMuYmIKQEAgLTAsMCArMSw0MyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTMgS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKKworU1VNTUFSWSA9ICJMaWJyYXJ5IG9mIHV0aWxpdHkgZnVuY3Rpb25zIGZyb20gQlNEIHN5c3RlbXMiCitERVNDUklQVElPTiA9ICJUaGlzIGxpYnJhcnkgcHJvdmlkZXMgdXNlZnVsIGZ1bmN0aW9ucyBjb21tb25seSBmb3VuZCBvbiBCU0Qgc3lzdGVtcywgXAorICAgICAgICAgICAgICAgYW5kIGxhY2tpbmcgb24gb3RoZXJzIGxpa2UgR05VIHN5c3RlbXMsIHRodXMgbWFraW5nIGl0IGVhc2llciB0byBwb3J0IFwKKyAgICAgICAgICAgICAgIHByb2plY3RzIHdpdGggc3Ryb25nIEJTRCBvcmlnaW5zLCB3aXRob3V0IG5lZWRpbmcgdG8gZW1iZWQgdGhlIHNhbWUgXAorICAgICAgICAgICAgICAgY29kZSBvdmVyIGFuZCBvdmVyIGFnYWluIG9uIGVhY2ggcHJvamVjdC4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly9saWJic2QuZnJlZWRlc2t0b3Aub3JnL3dpa2kvIgorIyBUaGVyZSBzZWVtcyB0byBiZSBtb3JlIGxpY2Vuc2VzIHVzZWQgaW4gdGhlIGNvZGUsIEkgZG9uJ3QgdGhpbmsgd2Ugd2FudCB0byBsaXN0IHRoZW0gYWxsIGhlcmUsIGNvbXBsZXRlIGxpc3Q6CisjIE9FIEAgfi9wcm9qZWN0cy9saWJic2QgJCBncmVwIF5MaWNlbnNlOiBDT1BZSU5HICB8IHNvcnQKKyMgTGljZW5zZTogQlNELTItY2xhdXNlCisjIExpY2Vuc2U6IEJTRC0yLWNsYXVzZQorIyBMaWNlbnNlOiBCU0QtMi1jbGF1c2UtTmV0QlNECisjIExpY2Vuc2U6IEJTRC0yLWNsYXVzZS1hdXRob3IKKyMgTGljZW5zZTogQlNELTItY2xhdXNlLXZlcmJhdGltCisjIExpY2Vuc2U6IEJTRC0zLWNsYXVzZQorIyBMaWNlbnNlOiBCU0QtMy1jbGF1c2UKKyMgTGljZW5zZTogQlNELTMtY2xhdXNlCisjIExpY2Vuc2U6IEJTRC0zLWNsYXVzZS1QZXRlci1XZW1tCisjIExpY2Vuc2U6IEJTRC0zLWNsYXVzZS1SZWdlbnRzCisjIExpY2Vuc2U6IEJTRC00LWNsYXVzZS1DaHJpc3RvcGhlci1HLURlbWV0cmlvdQorIyBMaWNlbnNlOiBCU0QtNC1jbGF1c2UtTmllbHMtUHJvdm9zCisjIExpY2Vuc2U6IEJTRC01LWNsYXVzZS1QZXRlci1XZW1tCisjIExpY2Vuc2U6IEJlZXJ3YXJlCisjIExpY2Vuc2U6IEV4cGF0CisjIExpY2Vuc2U6IElTQworIyBMaWNlbnNlOiBJU0MtT3JpZ2luYWwKKyMgTGljZW5zZTogcHVibGljLWRvbWFpbgorIyBMaWNlbnNlOiBwdWJsaWMtZG9tYWluLUNvbGluLVBsdW1iCitMSUNFTlNFID0gIkJTRC00LUNsYXVzZSAmIElTQyAmIFBEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MGI5Yzg5ZDg2MTkxNWI4NjY1NWI5NmU1ZTMyZmEyYWEiCitTRUNUSU9OID0gImxpYnMiCisKK1NSQ19VUkkgPSAiIFwKKyAgICBodHRwOi8vbGliYnNkLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImU5MzVjMWJiNmNjOThhNGE0M2NiMWRhMjI3OTU0OTNhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkzNGI2MzRmNGRmZDg2NWI2NDgyNjUwYjhmNTIyYzcwYWU2NWM0NjM1MjlkZThiZTkwN2I1M2M4OWMzYTM0YTgiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC1uZy9saWJjYXAtbmdfMC43LjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwLW5nL2xpYmNhcC1uZ18wLjcuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTcxNTQ2Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwLW5nL2xpYmNhcC1uZ18wLjcuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLVNVTU1BUlkgPSAiQW4gYWx0ZXJuYXRlIHBvc2l4IGNhcGFiaWxpdGllcyBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiVGhlIGxpYmNhcC1uZyBsaWJyYXJ5IGlzIGludGVuZGVkIHRvIG1ha2UgcHJvZ3JhbW1pbmcgXAotd2l0aCBQT1NJWCBjYXBhYmlsaXRpZXMgbXVjaCBlYXNpZXIgdGhhbiB0aGUgdHJhZGl0aW9uYWwgbGliY2FwIGxpYnJhcnkuIgotSE9NRVBBR0UgPSAiaHR0cDovL2ZyZWVjb2RlLmNvbS9wcm9qZWN0cy9saWJjYXAtbmciCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLQkJICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9ZTNlZGEwMWQ5ODE1ZjhkMjRhYWUyZGJkODliNjhiMDYiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3Blb3BsZS5yZWRoYXQuY29tL3NncnViYi9saWJjYXAtbmcvbGliY2FwLW5nLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9weXRob24ucGF0Y2giCi0KLWluaGVyaXQgbGliX3BhY2thZ2UgYXV0b3Rvb2xzIHB5dGhvbm5hdGl2ZQotCi1TUkNfVVJJW21kNXN1bV0gPSAiM2Q3ZDEyNmIyOWUyODY5YTAyNTdjMTdjOGIwZDliMmUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjE1NTQ5Y2UzOWIzMzNmNmI3OGJhZWUwYzBiNGVmMThiYzcyNmM2YmYxY2NhMTIzZGZkODlkZDk2M2Y2ZDA2YiIKLQotREVQRU5EUyArPSAic3dpZy1uYXRpdmUgcHl0aG9uIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0td2l0aG91dC1weXRob24zIgotCi1FWFRSQV9PRU1BS0UgKz0gIlBZTElCVkVSPSdweXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0nIFBZSU5DPScke1NUQUdJTkdfSU5DRElSfS8ke1BZTElCVkVSfSciCi0KLVBBQ0tBR0VTICs9ICIke1BOfS1weXRob24iCi0KLUZJTEVTXyR7UE59LXB5dGhvbiA9ICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JIyBNb3ZpbmcgbGliY2FwLW5nIHRvIGJhc2VfbGliZGlyCi0JaWYgWyAhICR7RH0ke2xpYmRpcn0gLWVmICR7RH0ke2Jhc2VfbGliZGlyfSBdOyB0aGVuCi0JCW1rZGlyIC1wICR7RH0vJHtiYXNlX2xpYmRpcn0vCi0JCW12IC1mICR7RH0ke2xpYmRpcn0vbGliY2FwLW5nLnNvLiogJHtEfSR7YmFzZV9saWJkaXJ9LwotCQlyZWxwYXRoPSR7QG9zLnBhdGgucmVscGF0aCgiJHtiYXNlX2xpYmRpcn0iLCAiJHtsaWJkaXJ9Iil9Ci0JCWxuIC1zZiAke3JlbHBhdGh9L2xpYmNhcC1uZy5zby4wLjAuMCAke0R9JHtsaWJkaXJ9L2xpYmNhcC1uZy5zbwotCWZpCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwLW5nL2xpYmNhcC1uZ18wLjcuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAtbmcvbGliY2FwLW5nXzAuNy44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1ODMxOTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwLW5nL2xpYmNhcC1uZ18wLjcuOC5iYgpAQCAtMCwwICsxLDM3IEBACitTVU1NQVJZID0gIkFuIGFsdGVybmF0ZSBwb3NpeCBjYXBhYmlsaXRpZXMgbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIlRoZSBsaWJjYXAtbmcgbGlicmFyeSBpcyBpbnRlbmRlZCB0byBtYWtlIHByb2dyYW1taW5nIFwKK3dpdGggUE9TSVggY2FwYWJpbGl0aWVzIG11Y2ggZWFzaWVyIHRoYW4gdGhlIHRyYWRpdGlvbmFsIGxpYmNhcCBsaWJyYXJ5LiIKK0hPTUVQQUdFID0gImh0dHA6Ly9mcmVlY29kZS5jb20vcHJvamVjdHMvbGliY2FwLW5nIgorU0VDVElPTiA9ICJiYXNlIgorTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisJCSAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PWUzZWRhMDFkOTgxNWY4ZDI0YWFlMmRiZDg5YjY4YjA2IgorCitTUkNfVVJJID0gImh0dHA6Ly9wZW9wbGUucmVkaGF0LmNvbS9zZ3J1YmIvbGliY2FwLW5nL2xpYmNhcC1uZy0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcHl0aG9uLnBhdGNoIgorCitpbmhlcml0IGxpYl9wYWNrYWdlIGF1dG90b29scyBweXRob24zbmF0aXZlCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwZGVjZTk2NjQ0YmQ3OTgwMjBlMTcwZmJmNzY2MzgwMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjMjFhZjk5NzQ0NWNkNDEwN2E1NWQzODZmOTU1YzVlYTZmNmU5NmVhZDY5M2U5MTUxMjc3YzBhYjVmOTdkMDVmIgorCitERVBFTkRTICs9ICJzd2lnLW5hdGl2ZSBweXRob24zIgorCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1weXRob24gLS13aXRoLXB5dGhvbjMiCitFWFRSQV9PRU1BS0UgKz0gIlBZTElCVkVSPSdweXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0ke1BZVEhPTl9BQkl9JyBQWUlOQz0nJHtTVEFHSU5HX0lOQ0RJUn0vJHtQWUxJQlZFUn0nIgorCitQQUNLQUdFUyArPSAiJHtQTn0tcHl0aG9uIgorCitGSUxFU18ke1BOfS1weXRob24gPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgTW92aW5nIGxpYmNhcC1uZyB0byBiYXNlX2xpYmRpcgorCWlmIFsgISAke0R9JHtsaWJkaXJ9IC1lZiAke0R9JHtiYXNlX2xpYmRpcn0gXTsgdGhlbgorCQlta2RpciAtcCAke0R9LyR7YmFzZV9saWJkaXJ9LworCQltdiAtZiAke0R9JHtsaWJkaXJ9L2xpYmNhcC1uZy5zby4qICR7RH0ke2Jhc2VfbGliZGlyfS8KKwkJcmVscGF0aD0ke0Bvcy5wYXRoLnJlbHBhdGgoIiR7YmFzZV9saWJkaXJ9IiwgIiR7bGliZGlyfSIpfQorCQlsbiAtc2YgJHtyZWxwYXRofS9saWJjYXAtbmcuc28uMC4wLjAgJHtEfSR7bGliZGlyfS9saWJjYXAtbmcuc28KKwlmaQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC9maWxlcy8wMDAxLWVuc3VyZS10aGUtWEFUVFJfTkFNRV9DQVBTLWlzLWRlZmluZWQtd2hlbi1pdC1pcy11c2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwL2ZpbGVzLzAwMDEtZW5zdXJlLXRoZS1YQVRUUl9OQU1FX0NBUFMtaXMtZGVmaW5lZC13aGVuLWl0LWlzLXVzZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWM3NzFhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC9maWxlcy8wMDAxLWVuc3VyZS10aGUtWEFUVFJfTkFNRV9DQVBTLWlzLWRlZmluZWQtd2hlbi1pdC1pcy11c2UucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRW5zdXJlIHRoZSBYQVRUUl9OQU1FX0NBUFMgaXMgZGVmaW5lZCB3aGVuIGl0IGlzIHVzZWQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1ZGU19DQVBfVTMyIGNhbiBub3QgZW5zdXJlIHRoYXQgWEFUVFJfTkFNRV9DQVBTIGlzIGRlZmluZWQsIGFuZCBmYWlsZWQgdG8gYnVpbGQKK2xpYmNhcC1uYXRpdmUgaW4gb2xkIHJlbGVhc2UsIGxpa2UgQ2VudE9TIHJlbGVhc2UgNi43IChGaW5hbCksIHdpdGggdGhlIGJsb3cKK2Vycm9yOgorICAgICBjYXBfZmlsZS5jOiBJbiBmdW5jdGlvbiDigJhjYXBfZ2V0X2Zk4oCZOgorICAgICBjYXBfZmlsZS5jOjE5OTogZXJyb3I6IOKAmFhBVFRSX05BTUVfQ0FQU+KAmSB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbikKKyAgICAgY2FwX2ZpbGUuYzoxOTk6IGVycm9yOiAoRWFjaCB1bmRlY2xhcmVkIGlkZW50aWZpZXIgaXMgcmVwb3J0ZWQgb25seSBvbmNlCisKK1NpZ25lZC1vZmYtYnk6IFJveSBMaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYmNhcC9jYXBfZmlsZS5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliY2FwL2NhcF9maWxlLmMgYi9saWJjYXAvY2FwX2ZpbGUuYworaW5kZXggNDA3NTZlYS4uZTI3Y2E4MCAxMDA2NDQKKy0tLSBhL2xpYmNhcC9jYXBfZmlsZS5jCisrKysgYi9saWJjYXAvY2FwX2ZpbGUuYworQEAgLTI1LDcgKzI1LDcgQEAgZXh0ZXJuIGludCBmcmVtb3ZleGF0dHIoaW50LCBjb25zdCBjaGFyICopOworIAorICNpbmNsdWRlICJsaWJjYXAuaCIKKyAKKy0jaWZkZWYgVkZTX0NBUF9VMzIKKysjaWYgZGVmaW5lZCAoVkZTX0NBUF9VMzIpICYmIGRlZmluZWQgKFhBVFRSX05BTUVfQ0FQUykKKyAKKyAjaWYgVkZTX0NBUF9VMzIgIT0gX19DQVBfQkxLUworICMgZXJyb3IgVkZTIHJlcHJlc2VudGF0aW9uIG9mIGNhcGFiaWxpdGllcyBpcyBub3QgdGhlIHNhbWUgc2l6ZSBhcyBrZXJuZWwKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC9saWJjYXBfMi4yNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAvbGliY2FwXzIuMjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3MDEwMTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC9saWJjYXBfMi4yNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLVNVTU1BUlkgPSAiTGlicmFyeSBmb3IgZ2V0dGluZy9zZXR0aW5nIFBPU0lYLjFlIGNhcGFiaWxpdGllcyIKLUhPTUVQQUdFID0gImh0dHA6Ly9zaXRlcy5nb29nbGUuY29tL3NpdGUvZnVsbHljYXBhYmxlLyIKLQotIyBubyBzcGVjaWZpYyBHUEwgdmVyc2lvbiByZXF1aXJlZAotTElDRU5TRSA9ICJCU0QgfCBHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xpY2Vuc2U7bWQ1PTNmODRmZDZmMjlkNDUzYTU2NTE0Y2I3ZTRlYWQyNWYxIgotCi1ERVBFTkRTID0gImhvc3RwZXJsLXJ1bnRpbWUtbmF0aXZlIgotCi1TUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvbGlicy9zZWN1cml0eS9saW51eC1wcml2cy8ke0JQTn0yLyR7QlBOfS0ke1BWfS50YXIueHoiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkNDNhYjlmNjgwNDM1YTdmZmYzNWI0YWNlOGQ0NWI4MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjZWU0NTY4Zjc4ZGM4NTFkNzI2ZmM5M2YyNWY0ZWQ5MWNjMjIzYjFmZTgyNTlkYWE0YTc3MTU4ZDE3NGU2YzY1IgotCi1pbmhlcml0IGxpYl9wYWNrYWdlCi0KLSMgZG8gTk9UIHBhc3MgdGFyZ2V0IGNmbGFncyB0byBob3N0IGNvbXBpbGF0aW9ucwotIwotZG9fY29uZmlndXJlKCkgewotCSMgbGliY2FwIHVzZXMgOj0gZm9yIGNvbXBpbGVycywgZm9ydHVuYXRlbHksIGl0IGdpdmVzIHVzIGEgaGludAotCSMgb24gd2hhdCBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCA/PQotCXNlZCAtZSAncyw6PSw/PSxnJyAtaSBNYWtlLlJ1bGVzCi0Jc2VkIC1lICdzLF5CVUlMRF9DRkxBR1MgPz0gJCguKkNGTEFHUyksQlVJTERfQ0ZMQUdTIDo9ICQoQlVJTERfQ0ZMQUdTKSwnIC1pIE1ha2UuUnVsZXMKLQotCSMgZGlzYWJsZSBncGVyZiBkZXRlY3Rpb24KLQlzZWQgLWUgJy9zaGVsbCBncGVyZi9jaWZlcSAoLHllcyknIC1pIGxpYmNhcC9NYWtlZmlsZQotfQotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtJywgJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4YXR0cicsICdhdHRyJywgJycsIGQpfSIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID8/PSAiIgotCi1QQUNLQUdFQ09ORklHW2F0dHJdID0gIkxJQkFUVFI9eWVzLExJQkFUVFI9bm8sYXR0ciIKLVBBQ0tBR0VDT05GSUdbcGFtXSA9ICJQQU1fQ0FQPXllcyxQQU1fQ0FQPW5vLGxpYnBhbSIKLQotRVhUUkFfT0VNQUtFID0gIiBcCi0gIElOREVOVD0gIFwKLSAgbGliPSR7QG9zLnBhdGguYmFzZW5hbWUoJyR7bGliZGlyfScpfSBcCi0gIFJBSVNFX1NFVEZDQVA9bm8gXAotICBEWU5BTUlDPXllcyBcCi0iCi0KLUVYVFJBX09FTUFLRV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBTWVNURU1fSEVBREVSUz0ke1NUQUdJTkdfSU5DRElSfSIKLQotIyB0aGVzZSBhcmUgcHJlc2VudCBpbiB0aGUgbGliY2FwIGRlZmF1bHRzLCBzbyBpbmNsdWRlIGluIG91ciBDRkxBR1MgdG9vCi1DRkxBR1MgKz0gIi1EX0xBUkdFRklMRTY0X1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IgotCi1kb19jb21waWxlKCkgewotCW9lX3J1bm1ha2UgJHtFWFRSQV9PRUNPTkZ9Ci19Ci0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSBpbnN0YWxsIFwKLQkJJHtFWFRSQV9PRUNPTkZ9IFwKLQkJREVTVERJUj0iJHtEfSIgXAotCQlwcmVmaXg9IiR7cHJlZml4fSIgXAotCQlTQklORElSPSIke0R9JHtzYmluZGlyfSIKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JIyBNb3ZlIHRoZSBsaWJyYXJ5IHRvIGJhc2VfbGliZGlyCi0JaW5zdGFsbCAtZCAke0R9JHtiYXNlX2xpYmRpcn0KLQlpZiBbICEgJHtEfSR7bGliZGlyfSAtZWYgJHtEfSR7YmFzZV9saWJkaXJ9IF07IHRoZW4KLQkJbXYgJHtEfSR7bGliZGlyfS9saWJjYXAqICR7RH0ke2Jhc2VfbGliZGlyfQotICAgICAgICAgICAgICAgIGlmIFsgLWQgJHtEfSR7bGliZGlyfS9zZWN1cml0eSBdOyB0aGVuCi0JCQltdiAke0R9JHtsaWJkaXJ9L3NlY3VyaXR5ICR7RH0ke2Jhc2VfbGliZGlyfQotCQlmaQotCWZpCi19Ci0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtiYXNlX2xpYmRpcn0vKi5zbyIKLQotIyBwYW0gZmlsZXMKLUZJTEVTXyR7UE59ICs9ICIke2Jhc2VfbGliZGlyfS9zZWN1cml0eS8qLnNvIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwL2xpYmNhcF8yLjI1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC9saWJjYXBfMi4yNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Y2VkNGJlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC9saWJjYXBfMi4yNS5iYgpAQCAtMCwwICsxLDc3IEBACitTVU1NQVJZID0gIkxpYnJhcnkgZm9yIGdldHRpbmcvc2V0dGluZyBQT1NJWC4xZSBjYXBhYmlsaXRpZXMiCitIT01FUEFHRSA9ICJodHRwOi8vc2l0ZXMuZ29vZ2xlLmNvbS9zaXRlL2Z1bGx5Y2FwYWJsZS8iCisKKyMgbm8gc3BlY2lmaWMgR1BMIHZlcnNpb24gcmVxdWlyZWQKK0xJQ0VOU0UgPSAiQlNEIHwgR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MaWNlbnNlO21kNT0zZjg0ZmQ2ZjI5ZDQ1M2E1NjUxNGNiN2U0ZWFkMjVmMSIKKworREVQRU5EUyA9ICJob3N0cGVybC1ydW50aW1lLW5hdGl2ZSIKKworU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L2xpYnMvc2VjdXJpdHkvbGludXgtcHJpdnMvJHtCUE59Mi8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZW5zdXJlLXRoZS1YQVRUUl9OQU1FX0NBUFMtaXMtZGVmaW5lZC13aGVuLWl0LWlzLXVzZS5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiNjY2NmI4MzllNWQ0NmMyYWQzM2ZjOGFhMmNlYjVmNzciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjkzYzhhYzUxZTk4M2VlNjc4MjA1NTcxZWYyNzI0MzlkODNhZmU2MmRkOGU0MjRlYTE0YWQ5NzkwYmMzNTE2MiIKKworaW5oZXJpdCBsaWJfcGFja2FnZQorCisjIGRvIE5PVCBwYXNzIHRhcmdldCBjZmxhZ3MgdG8gaG9zdCBjb21waWxhdGlvbnMKKyMKK2RvX2NvbmZpZ3VyZSgpIHsKKwkjIGxpYmNhcCB1c2VzIDo9IGZvciBjb21waWxlcnMsIGZvcnR1bmF0ZWx5LCBpdCBnaXZlcyB1cyBhIGhpbnQKKwkjIG9uIHdoYXQgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggPz0KKwlzZWQgLWUgJ3MsOj0sPz0sZycgLWkgTWFrZS5SdWxlcworCXNlZCAtZSAncyxeQlVJTERfQ0ZMQUdTID89ICQoLipDRkxBR1MpLEJVSUxEX0NGTEFHUyA6PSAkKEJVSUxEX0NGTEFHUyksJyAtaSBNYWtlLlJ1bGVzCisKKwkjIGRpc2FibGUgZ3BlcmYgZGV0ZWN0aW9uCisJc2VkIC1lICcvc2hlbGwgZ3BlcmYvY2lmZXEgKCx5ZXMpJyAtaSBsaWJjYXAvTWFrZWZpbGUKK30KKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3BhbScsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneGF0dHInLCAnYXR0cicsICcnLCBkKX0iCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA/Pz0gIiIKKworUEFDS0FHRUNPTkZJR1thdHRyXSA9ICJMSUJBVFRSPXllcyxMSUJBVFRSPW5vLGF0dHIiCitQQUNLQUdFQ09ORklHW3BhbV0gPSAiUEFNX0NBUD15ZXMsUEFNX0NBUD1ubyxsaWJwYW0iCisKK0VYVFJBX09FTUFLRSA9ICIgXAorICBJTkRFTlQ9ICBcCisgIGxpYj0ke0Bvcy5wYXRoLmJhc2VuYW1lKCcke2xpYmRpcn0nKX0gXAorICBSQUlTRV9TRVRGQ0FQPW5vIFwKKyAgRFlOQU1JQz15ZXMgXAorIgorCitFWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgU1lTVEVNX0hFQURFUlM9JHtTVEFHSU5HX0lOQ0RJUn0iCisKKyMgdGhlc2UgYXJlIHByZXNlbnQgaW4gdGhlIGxpYmNhcCBkZWZhdWx0cywgc28gaW5jbHVkZSBpbiBvdXIgQ0ZMQUdTIHRvbworQ0ZMQUdTICs9ICItRF9MQVJHRUZJTEU2NF9TT1VSQ0UgLURfRklMRV9PRkZTRVRfQklUUz02NCIKKworZG9fY29tcGlsZSgpIHsKKwlvZV9ydW5tYWtlICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30KK30KKworZG9faW5zdGFsbCgpIHsKKwlvZV9ydW5tYWtlIGluc3RhbGwgXAorCQkke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IFwKKwkJREVTVERJUj0iJHtEfSIgXAorCQlwcmVmaXg9IiR7cHJlZml4fSIgXAorCQlTQklORElSPSIke3NiaW5kaXJ9IgorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIE1vdmUgdGhlIGxpYnJhcnkgdG8gYmFzZV9saWJkaXIKKwlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfbGliZGlyfQorCWlmIFsgISAke0R9JHtsaWJkaXJ9IC1lZiAke0R9JHtiYXNlX2xpYmRpcn0gXTsgdGhlbgorCQltdiAke0R9JHtsaWJkaXJ9L2xpYmNhcCogJHtEfSR7YmFzZV9saWJkaXJ9CisgICAgICAgICAgICAgICAgaWYgWyAtZCAke0R9JHtsaWJkaXJ9L3NlY3VyaXR5IF07IHRoZW4KKwkJCW12ICR7RH0ke2xpYmRpcn0vc2VjdXJpdHkgJHtEfSR7YmFzZV9saWJkaXJ9CisJCWZpCisJZmkKK30KKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2Jhc2VfbGliZGlyfS8qLnNvIgorCisjIHBhbSBmaWxlcworRklMRVNfJHtQTn0gKz0gIiR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5Lyouc28iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmRldi9saWJldmRldl8xLjQuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmRldi9saWJldmRldl8xLjQuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzgxNjNlMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZkZXYvbGliZXZkZXZfMS40LjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1TVU1NQVJZID0gIldyYXBwZXIgbGlicmFyeSBmb3IgZXZkZXYgZGV2aWNlcyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvbGliZXZkZXYvIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIk1JVC1YIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzVhYWUwZDM4ZmVlYTZmZGE5N2NhMzgxY2I5MTMyZWIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliZXZkZXYvbGliZXZkZXYuaDtlbmRsaW5lPTIxO21kNT03ZmY0ZjBiNTExMzI1MmMyZjFhODI4ZTBiYmFkOThkMSIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS9saWJldmRldi8ke0JQfS50YXIueHoiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5YjNmMjViZDhmYjBmOGVmYTQ5NDRkMzQ2NjhkZGRjMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3YjJhZTFhMGM3ZjlmN2E5NjE5OGRkYzhmZDE2N2YwOTBmMjMzZDZjYmQ4MTY4Yjg0N2U0Zjk2ODQ0NTEzMmQzIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmRldi9saWJldmRldl8xLjUuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmRldi9saWJldmRldl8xLjUuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzZlMWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuNS4yLmJiCkBAIC0wLDAgKzEsMTQgQEAKK1NVTU1BUlkgPSAiV3JhcHBlciBsaWJyYXJ5IGZvciBldmRldiBkZXZpY2VzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9saWJldmRldi8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiTUlULVgiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NWFhZTBkMzhmZWVhNmZkYTk3Y2EzODFjYjkxMzJlYiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJldmRldi9saWJldmRldi5oO2VuZGxpbmU9MjE7bWQ1PTdmZjRmMGI1MTEzMjUyYzJmMWE4MjhlMGJiYWQ5OGQxIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL2xpYmV2ZGV2LyR7QlB9LnRhci54eiIKKworU1JDX1VSSVttZDVzdW1dID0gIjk2YWQ2ZWRiNWNlNWM0NDI4ZjFiMTgzY2MxODBmZjhjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVlZTIxNjM2NTZhNjFmNTcwM2NiNWMwOGEwNWM5NDcxZmZiN2I2NDBiZmJlMmM1NTE5NGVhNTBkOTA4ZjYyOWIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50L3J1bi1wdGVzdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmVudC9saWJldmVudC9ydW4tcHRlc3QKaW5kZXggZDUyMTY4OC4uMDI0MTg1MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50L3J1bi1wdGVzdAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZlbnQvbGliZXZlbnQvcnVuLXB0ZXN0CkBAIC00LDcgKzQsNyBAQAogZm9yIHRlc3QgaW4gLi90ZXN0LyoKIGRvCiAJJHRlc3QKLQlpZiBbICQ/IC1lcSAwIF0KKwlpZiBbICQ/IC1uZSAwIF0KIAl0aGVuCiAJCWZhaWw9MQogCWZpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaS8wMDAxLW1pcHMtZml4LU1JUFMtc29mdGZsb2F0LWJ1aWxkLWlzc3VlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1taXBzLWZpeC1NSVBTLXNvZnRmbG9hdC1idWlsZC1pc3N1ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MWM5ZWIzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1taXBzLWZpeC1NSVBTLXNvZnRmbG9hdC1idWlsZC1pc3N1ZS5wYXRjaApAQCAtMCwwICsxLDE3NyBAQAorRnJvbSA2NTVlODJjOTJkNWMzODc1YWVlMDQzMjJmMTk5M2Q2YjA3NzRhN2JmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogWW91c29uZyBaaG91IDx5c3pob3U0dGVjaEBnbWFpbC5jb20+CitEYXRlOiBNb24sIDE1IEF1ZyAyMDE2IDE1OjAwOjEzICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIG1pcHM6IGZpeCBNSVBTIHNvZnRmbG9hdCBidWlsZCBpc3N1ZQorCitUaGUgcGF0Y2ggZm9yIG8zMi5TIGlzIHRha2VuIGZyb20gT3BlbldydCBwYWNrYWdlcyByZXBvIDNhN2E0YmYgImxpYmZmaToKK2ZpeCBNSVBTIHNvZnRmbG9hdCBidWlsZCBpc3N1ZSB3aXRoIGN1cnJlbnQgYmludXRpbHMiCisKK1NpZ25lZC1vZmYtYnk6IEZlbGl4IEZpZXRrYXUgPG5iZEBvcGVud3J0Lm9yZz4KK1NpZ25lZC1vZmYtYnk6IFlvdXNvbmcgWmhvdSA8eXN6aG91NHRlY2hAZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vbGliZmZpL2xpYmZmaS9jb21taXQvMmRlZDJhNGY0OTQxNjVjOTMyOTNhZmMxNGFiMGJlMTI0M2NmOGM0OV0KKyBzcmMvbWlwcy9uMzIuUyB8IDE3ICsrKysrKysrKysrKysrKysrCisgc3JjL21pcHMvbzMyLlMgfCAxNyArKysrKysrKysrKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMzQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL21pcHMvbjMyLlMgYi9zcmMvbWlwcy9uMzIuUworaW5kZXggYzY5ODVkMy4uOGYyNTk5NCAxMDA2NDQKKy0tLSBhL3NyYy9taXBzL24zMi5TCisrKysgYi9zcmMvbWlwcy9uMzIuUworQEAgLTEwNyw2ICsxMDcsMTYgQEAgbG9hZHJlZ3M6CisgCisgCVJFR19MCXQ2LCAzKkZGSV9TSVpFT0ZfQVJHKCRmcCkgICMgbG9hZCB0aGUgZmxhZ3Mgd29yZCBpbnRvIHQ2LgorIAorKyNpZmRlZiBfX21pcHNfc29mdF9mbG9hdAorKwlSRUdfTAlhMCwgMCpGRklfU0laRU9GX0FSRyh0OSkKKysJUkVHX0wJYTEsIDEqRkZJX1NJWkVPRl9BUkcodDkpCisrCVJFR19MCWEyLCAyKkZGSV9TSVpFT0ZfQVJHKHQ5KQorKwlSRUdfTAlhMywgMypGRklfU0laRU9GX0FSRyh0OSkKKysJUkVHX0wJYTQsIDQqRkZJX1NJWkVPRl9BUkcodDkpCisrCVJFR19MCWE1LCA1KkZGSV9TSVpFT0ZfQVJHKHQ5KQorKwlSRUdfTAlhNiwgNipGRklfU0laRU9GX0FSRyh0OSkKKysJUkVHX0wJYTcsIDcqRkZJX1NJWkVPRl9BUkcodDkpCisrI2Vsc2UKKyAJYW5kCXQ0LCB0NiwgKCgxPDxGRklfRkxBR19CSVRTKS0xKQorIAlSRUdfTAlhMCwgMCpGRklfU0laRU9GX0FSRyh0OSkKKyAJYmVxegl0NCwgYXJnMV9uZXh0CitAQCAtMTkzLDYgKzIwMyw3IEBAIGFyZzdfbmV4dDoKKyBhcmc4X2RvdWJsZXA6CQorICAJbC5kCSRmMTksIDcqRkZJX1NJWkVPRl9BUkcodDkpCQorIGFyZzhfbmV4dDoJCisrI2VuZGlmCisgCisgY2FsbGl0OgkJCisgCSMgTG9hZCB0aGUgZnVuY3Rpb24gcG9pbnRlcgorQEAgLTIxNCw2ICsyMjUsNyBAQCByZXRpbnQ6CisgCWIJZXBpbG9ndWUKKyAKKyByZXRmbG9hdDoKKysjaWZuZGVmIF9fbWlwc19zb2Z0X2Zsb2F0CisgCWJuZSAgICAgdDYsIEZGSV9UWVBFX0ZMT0FULCByZXRkb3VibGUKKyAJamFsCXQ5CisgCVJFR19MCXQ0LCA0KkZGSV9TSVpFT0ZfQVJHKCRmcCkKK0BAIC0yNzIsNiArMjg0LDcgQEAgcmV0c3RydWN0X2ZfZDoKKyAJcy5zCSRmMCwgMCh0NCkKKyAJcy5kCSRmMiwgOCh0NCkKKyAJYgllcGlsb2d1ZQorKyNlbmRpZgorIAorIHJldHN0cnVjdF9kX3NvZnQ6CisgCWJuZQl0NiwgRkZJX1RZUEVfU1RSVUNUX0RfU09GVCwgcmV0c3RydWN0X2Zfc29mdAorQEAgLTQyOSw2ICs0NDIsNyBAQCBmZmlfY2xvc3VyZV9OMzI6CisgCVJFR19TCWE2LCBBNl9PRkYyKCRzcCkKKyAJUkVHX1MJYTcsIEE3X09GRjIoJHNwKQorIAorKyNpZm5kZWYgX19taXBzX3NvZnRfZmxvYXQKKyAJIyBTdG9yZSBhbGwgcG9zc2libGUgZmxvYXQvZG91YmxlIHJlZ2lzdGVycy4KKyAJcy5kCSRmMTIsIEYxMl9PRkYyKCRzcCkKKyAJcy5kCSRmMTMsIEYxM19PRkYyKCRzcCkKK0BAIC00MzgsNiArNDUyLDcgQEAgZmZpX2Nsb3N1cmVfTjMyOgorIAlzLmQJJGYxNywgRjE3X09GRjIoJHNwKQorIAlzLmQJJGYxOCwgRjE4X09GRjIoJHNwKQorIAlzLmQJJGYxOSwgRjE5X09GRjIoJHNwKQorKyNlbmRpZgorIAorIAkjIENhbGwgZmZpX2Nsb3N1cmVfbWlwc19pbm5lcl9OMzIgdG8gZG8gdGhlIHJlYWwgd29yay4KKyAJTEEJdDksIGZmaV9jbG9zdXJlX21pcHNfaW5uZXJfTjMyCitAQCAtNDU4LDYgKzQ3Myw3IEBAIGNsc19yZXRpbnQ6CisgCWIJY2xzX2VwaWxvZ3VlCisgCisgY2xzX3JldGZsb2F0OgorKyNpZm5kZWYgX19taXBzX3NvZnRfZmxvYXQKKyAJYm5lICAgICB2MCwgRkZJX1RZUEVfRkxPQVQsIGNsc19yZXRkb3VibGUKKyAJbC5zCSRmMCwgVjBfT0ZGMigkc3ApCisgCWIJY2xzX2VwaWxvZ3VlCitAQCAtNTAwLDYgKzUxNiw3IEBAIGNsc19yZXRzdHJ1Y3RfZl9kOgorIAlsLnMJJGYwLCBWMF9PRkYyKCRzcCkKKyAJbC5kCSRmMiwgVjFfT0ZGMigkc3ApCisgCWIJY2xzX2VwaWxvZ3VlCisrI2VuZGlmCisgCQorIGNsc19yZXRzdHJ1Y3Rfc21hbGwyOgkKKyAJUkVHX0wJdjAsIFYwX09GRjIoJHNwKQorZGlmZiAtLWdpdCBhL3NyYy9taXBzL28zMi5TIGIvc3JjL21pcHMvbzMyLlMKK2luZGV4IGViMjc5ODEuLjQyOWRkMGEgMTAwNjQ0CistLS0gYS9zcmMvbWlwcy9vMzIuUworKysrIGIvc3JjL21pcHMvbzMyLlMKK0BAIC04MiwxMyArODIsMTYgQEAgc2l4dGVlbjoKKyAJCQorIAlBRERVCSRzcCwgNCAqIEZGSV9TSVpFT0ZfQVJHCQkjIGFkanVzdCAkc3AgdG8gbmV3IGFyZ3MKKyAKKysjaWZuZGVmIF9fbWlwc19zb2Z0X2Zsb2F0CisgCWJuZXoJdDAsIHBhc3NfZAkJCSMgbWFrZSBpdCBxdWljayBmb3IgaW50CisrI2VuZGlmCisgCVJFR19MCWEwLCAwKkZGSV9TSVpFT0ZfQVJHKCRzcCkJIyBqdXN0IGdvIGFoZWFkIGFuZCBsb2FkIHRoZQorIAlSRUdfTAlhMSwgMSpGRklfU0laRU9GX0FSRygkc3ApCSMgZm91ciByZWdzLgorIAlSRUdfTAlhMiwgMipGRklfU0laRU9GX0FSRygkc3ApCisgCVJFR19MCWEzLCAzKkZGSV9TSVpFT0ZfQVJHKCRzcCkKKyAJYgljYWxsX2l0CisgCisrI2lmbmRlZiBfX21pcHNfc29mdF9mbG9hdAorIHBhc3NfZDoKKyAJYm5lCXQwLCBGRklfQVJHU19ELCBwYXNzX2YKKyAJbC5kCSRmMTIsIDAqRkZJX1NJWkVPRl9BUkcoJHNwKQkjIGxvYWQgJGZwIHJlZ3MgZnJvbSBhcmdzCitAQCAtMTMwLDYgKzEzMyw3IEBAIHBhc3NfZl9kOgorICAjCWJuZQl0MCwgRkZJX0FSR1NfRl9ELCBjYWxsX2l0CisgCWwucwkkZjEyLCAwKkZGSV9TSVpFT0ZfQVJHKCRzcCkJIyBsb2FkICRmcCByZWdzIGZyb20gYXJncworIAlsLmQJJGYxNCwgMipGRklfU0laRU9GX0FSRygkc3ApCSMgcGFzc2luZyBkb3VibGUgYW5kIGZsb2F0CisrI2VuZGlmCisgCisgY2FsbF9pdDoJCisgCSMgTG9hZCB0aGUgZnVuY3Rpb24gcG9pbnRlcgorQEAgLTE1OCwxNCArMTYyLDIzIEBAIHJldGZsb2F0OgorIAlibmUgICAgIHQyLCBGRklfVFlQRV9GTE9BVCwgcmV0ZG91YmxlCisgCWphbHIJdDkKKyAJUkVHX0wJdDAsIFNJWkVPRl9GUkFNRSArIDQqRkZJX1NJWkVPRl9BUkcoJGZwKQorKyNpZm5kZWYgX19taXBzX3NvZnRfZmxvYXQKKyAJcy5zCSRmMCwgMCh0MCkKKysjZWxzZQorKwlSRUdfUwl2MCwgMCh0MCkKKysjZW5kaWYKKyAJYgllcGlsb2d1ZQorIAorIHJldGRvdWJsZToJCisgCWJuZQl0MiwgRkZJX1RZUEVfRE9VQkxFLCBub3JldHZhbAorIAlqYWxyCXQ5CisgCVJFR19MCXQwLCBTSVpFT0ZfRlJBTUUgKyA0KkZGSV9TSVpFT0ZfQVJHKCRmcCkKKysjaWZuZGVmIF9fbWlwc19zb2Z0X2Zsb2F0CisgCXMuZAkkZjAsIDAodDApCisrI2Vsc2UKKysJUkVHX1MJdjEsIDQodDApCisrCVJFR19TCXYwLCAwKHQwKQorKyNlbmRpZgorIAliCWVwaWxvZ3VlCisgCQorIG5vcmV0dmFsOgkKK0BAIC0yNjEsOSArMjc0LDExIEBAICRMQ0ZJNzoKKyAJbGkJJDEzLCAxCQkjIEZGSV9PMzIKKyAJYm5lCSQxNiwgJDEzLCAxZgkjIFNraXAgZnAgc2F2ZSBpZiBGRklfTzMyX1NPRlRfRkxPQVQKKyAJCisrI2lmbmRlZiBfX21pcHNfc29mdF9mbG9hdAorIAkjIFN0b3JlIGFsbCBwb3NzaWJsZSBmbG9hdC9kb3VibGUgcmVnaXN0ZXJzLgorIAlzLmQJJGYxMiwgRkFfMF8wX09GRjIoJGZwKQorIAlzLmQJJGYxNCwgRkFfMV8wX09GRjIoJGZwKQorKyNlbmRpZgorIDE6CQorIAkjIENhbGwgZmZpX2Nsb3N1cmVfbWlwc19pbm5lcl9PMzIgdG8gZG8gdGhlIHdvcmsuCisgCWxhCXQ5LCBmZmlfY2xvc3VyZV9taXBzX2lubmVyX08zMgorQEAgLTI4MSw2ICsyOTYsNyBAQCAkTENGSTc6CisgCWxpCSQxMywgMQkJIyBGRklfTzMyCisgCWJuZQkkMTYsICQxMywgMWYJIyBTa2lwIGZwIHJlc3RvcmUgaWYgRkZJX08zMl9TT0ZUX0ZMT0FUCisgCisrI2lmbmRlZiBfX21pcHNfc29mdF9mbG9hdAorIAlsaQkkOSwgRkZJX1RZUEVfRkxPQVQKKyAJbC5zCSRmMCwgVjBfT0ZGMigkZnApCisgCWJlcQkkOCwgJDksIGNsb3N1cmVfZG9uZQorQEAgLTI4OCw2ICszMDQsNyBAQCAkTENGSTc6CisgCWxpCSQ5LCBGRklfVFlQRV9ET1VCTEUKKyAJbC5kCSRmMCwgVjBfT0ZGMigkZnApCisgCWJlcQkkOCwgJDksIGNsb3N1cmVfZG9uZQorKyNlbmRpZgorIDE6CQorIAlSRUdfTAkkMywgVjFfT0ZGMigkZnApCisgCVJFR19MCSQyLCBWMF9PRkYyKCRmcCkKKy0tIAorMi45LjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmlfMy4yLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaV8zLjIuMS5iYgppbmRleCA3MmUyNWZiLi40M2VlZThlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaV8zLjIuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaV8zLjIuMS5iYgpAQCAtMTIsNiArMTIsNyBAQAogU1JDX1VSSSA9ICJmdHA6Ly9zb3VyY2V3YXJlLm9yZy9wdWIvbGliZmZpLyR7QlB9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9ub3Qtd2luMzIucGF0Y2ggXAogCSAgIGZpbGU6Ly8wMDAxLW1pcHMtVXNlLWNvbXBpbGVyLWludGVybmFsLWRlZmluZS1mb3ItbGludXgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1taXBzLWZpeC1NSVBTLXNvZnRmbG9hdC1idWlsZC1pc3N1ZS5wYXRjaCBcCiAJICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiODNiODk1ODc2MDdlM2ViNjVjNzBkMzYxZjEzYmFiNDMiCkBAIC0yMyw0ICsyNCw4IEBACiAKIEZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2xpYmZmaS0ke1BWfSIKIAorIyBEb2Vzbid0IGNvbXBpbGUgaW4gTUlQUzE2ZSBtb2RlIGR1ZSB0byB1c2Ugb2YgaGFuZC13cml0dGVuCisjIGFzc2VtYmx5CitNSVBTX0lOU1RSVUNUSU9OX1NFVCA9ICJtaXBzIgorCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm1fMS4yLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm1fMS4yLjQuYmIKaW5kZXggODY2YjExYS4uMjIxOGY5YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtXzEuMi40LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmbS9saWJmbV8xLjIuNC5iYgpAQCAtOSw3ICs5LDcgQEAKIAogCiBTRUNUSU9OID0gIngxMS9saWJzIgotREVQRU5EUyA9ICJnbGliLTIuMCBwYW5nbyBndGsrIG1lbnUtY2FjaGUgaW50bHRvb2wtbmF0aXZlIGxpYmV4aWYgbGliZm0tZXh0cmEgZ2V0dGV4dC1uYXRpdmUiCitERVBFTkRTID0gImdsaWItMi4wIHBhbmdvIGd0ayszIG1lbnUtY2FjaGUgaW50bHRvb2wtbmF0aXZlIGxpYmV4aWYgbGliZm0tZXh0cmEgZ2V0dGV4dC1uYXRpdmUiCiAKIFNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3BjbWFuZm0vbGliZm0tJHtQVn0udGFyLnh6IgogCkBAIC0xNyw3ICsxNyw5IEBACiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzgwNGY2ZjI4Y2IzZDFiYzhmZmIzMTUxYWI3ZmYwYzA2M2IyN2M1ZjliMDZjNjgyZWI5MDNlMDFjZjI1NTAyZiIKIAogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGd0ay1kb2MgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi1BTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIiR7R1RLMkRJU1RST0ZFQVRVUkVTfSIKK0FOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAiJHtHVEszRElTVFJPRkVBVFVSRVN9IgorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLWd0az0zIgogCiBkb19jb25maWd1cmVbZGlyc10gPSsgIiR7U30vbTQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvYWRkLXBrZ2NvbmZpZy1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy9hZGQtcGtnY29uZmlnLXN1cHBvcnQucGF0Y2gKaW5kZXggNjdkZGZjNi4uNjk1ODlmNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy9hZGQtcGtnY29uZmlnLXN1cHBvcnQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy9hZGQtcGtnY29uZmlnLXN1cHBvcnQucGF0Y2gKQEAgLTQsNjEgKzQsMzIgQEAKIAogUlAgMjAxNC81LzIyCiAKLUluZGV4OiBsaWJnY3J5cHQtMS4yLjQvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGliZ2NyeXB0LTEuMi40Lm9yaWcvY29uZmlndXJlLmFjCTIwMDgtMDMtMTkgMjI6MTQ6NTAuMDAwMDAwMDAwICswMDAwCi0rKysgbGliZ2NyeXB0LTEuMi40L2NvbmZpZ3VyZS5hYwkyMDA4LTAzLTE5IDIyOjE0OjU4LjAwMDAwMDAwMCArMDAwMAotQEAgLTgwNyw2ICs4MDcsNyBAQAorUmViYXNlIHRvIDEuNy4wCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBjb25maWd1cmUuYWMgICAgICAgIHwgIDEgKworIHNyYy9saWJnY3J5cHQubTQgICAgfCA3MSArKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHNyYy9saWJnY3J5cHQucGMuaW4gfCAzMyArKysrKysrKysrKysrKysrKysrKysrKysrCisgMyBmaWxlcyBjaGFuZ2VkLCAzOCBpbnNlcnRpb25zKCspLCA2NyBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2xpYmdjcnlwdC5wYy5pbgorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBmNjgzZTIxLi41NjZlMWM4IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0yMzE0LDYgKzIzMTQsNyBAQCByYW5kb20vTWFrZWZpbGUKICBkb2MvTWFrZWZpbGUKICBzcmMvTWFrZWZpbGUKICBzcmMvZ2NyeXB0LmgKICtzcmMvbGliZ2NyeXB0LnBjCiAgc3JjL2xpYmdjcnlwdC1jb25maWcKKyBzcmMvdmVyc2lvbmluZm8ucmMKICB0ZXN0cy9NYWtlZmlsZQotIHczMi1kbGwvTWFrZWZpbGUKLUluZGV4OiBsaWJnY3J5cHQtMS4yLjQvc3JjL2xpYmdjcnlwdC5wYy5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGxpYmdjcnlwdC0xLjIuNC9zcmMvbGliZ2NyeXB0LnBjLmluCTIwMDgtMDMtMTkgMjI6MTQ6NTguMDAwMDAwMDAwICswMDAwCi1AQCAtMCwwICsxLDMzIEBACi0rIyBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGF1dG9jb25mIHRvIHByb2R1Y2UgYSBwa2ctY29uZmlnIG1ldGFkYXRhIGZpbGUuCi0rIyBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi0rIyBBdXRob3I6IFNpbW9uIEpvc2Vmc3NvbgotKyMKLSsjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRoZSBhdXRob3IgZ2l2ZXMKLSsjIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAotKyMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCi0rIwotKyMgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAotKyMgV0lUSE9VVCBBTlkgV0FSUkFOVFksIHRvIHRoZSBleHRlbnQgcGVybWl0dGVkIGJ5IGxhdzsgd2l0aG91dCBldmVuIHRoZQotKyMgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCi0rCi0rcHJlZml4PUBwcmVmaXhACi0rZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAotK2xpYmRpcj1AbGliZGlyQAotK2luY2x1ZGVkaXI9QGluY2x1ZGVkaXJACi0rCi0rIyBBUEkgaW5mbwotK2FwaV92ZXJzaW9uPUBMSUJHQ1JZUFRfQ09ORklHX0FQSV9WRVJTSU9OQAotK2hvc3Q9QExJQkdDUllQVF9DT05GSUdfSE9TVEAKLSsKLSsjIE1pc2MgaW5mb3JtYXRpb24uCi0rc3ltbWV0cmljX2NpcGhlcnM9QExJQkdDUllQVF9DSVBIRVJTQAotK2FzeW1tZXRyaWNfY2lwaGVycz1ATElCR0NSWVBUX1BVQktFWV9DSVBIRVJTQAotK2RpZ2VzdHM9QExJQkdDUllQVF9ESUdFU1RTQAotKwotK05hbWU6IGxpYmdjcnlwdAotK0Rlc2NyaXB0aW9uOiBHTlUgY3J5cHRvIGxpYnJhcnkKLStVUkw6IGh0dHA6Ly93d3cuZ251cGcub3JnCi0rVmVyc2lvbjogQFZFUlNJT05ACi0rTGliczogLUwke2xpYmRpcn0gLWxnY3J5cHQKLStMaWJzLnByaXZhdGU6IC1MJHtsaWJkaXJ9IC1sZ3BnLWVycm9yCi0rQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0gCi1JbmRleDogbGliZ2NyeXB0LTEuNi4xL3NyYy9saWJnY3J5cHQubTQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJnY3J5cHQtMS42LjEub3JpZy9zcmMvbGliZ2NyeXB0Lm00CTIwMTMtMTItMTYgMTc6NDQ6MzIuMDAwMDAwMDAwICswMDAwCi0rKysgbGliZ2NyeXB0LTEuNi4xL3NyYy9saWJnY3J5cHQubTQJMjAxNC0wNS0xMyAyMToyNTozNy40NzgzODk4MzMgKzAwMDAKLUBAIC0yMiwxNyArMjIsNyBAQAorZGlmZiAtLWdpdCBhL3NyYy9saWJnY3J5cHQubTQgYi9zcmMvbGliZ2NyeXB0Lm00CitpbmRleCBjNjdjZmVjLi40ZWE1ZjJjIDEwMDY0NAorLS0tIGEvc3JjL2xpYmdjcnlwdC5tNAorKysrIGIvc3JjL2xpYmdjcnlwdC5tNAorQEAgLTI5LDMwICsyOSw2IEBAIGRubCBpcyBhZGRlZCB0byB0aGUgZ3BnX2NvbmZpZ19zY3JpcHRfd2FybiB2YXJpYWJsZS4KICBkbmwKICBBQ19ERUZVTihbQU1fUEFUSF9MSUJHQ1JZUFRdLAogIFsgQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKQpAQCAtNjYsMTcgKzM3LDMwIEBACiAtICAgICAgICAgICAgQUNfSEVMUF9TVFJJTkcoWy0td2l0aC1saWJnY3J5cHQtcHJlZml4PVBGWF0sCiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ByZWZpeCB3aGVyZSBMSUJHQ1JZUFQgaXMgaW5zdGFsbGVkIChvcHRpb25hbCldKSwKIC0gICAgIGxpYmdjcnlwdF9jb25maWdfcHJlZml4PSIkd2l0aHZhbCIsIGxpYmdjcnlwdF9jb25maWdfcHJlZml4PSIiKQotLSAgaWYgdGVzdCB4JGxpYmdjcnlwdF9jb25maWdfcHJlZml4ICE9IHggOyB0aGVuCi0tICAgICBpZiB0ZXN0IHgke0xJQkdDUllQVF9DT05GSUcrc2V0fSAhPSB4c2V0IDsgdGhlbgotLSAgICAgICAgTElCR0NSWVBUX0NPTkZJRz0kbGliZ2NyeXB0X2NvbmZpZ19wcmVmaXgvYmluL2xpYmdjcnlwdC1jb25maWcKKy0gIGlmIHRlc3QgeCIke0xJQkdDUllQVF9DT05GSUd9IiA9IHggOyB0aGVuCistICAgICBpZiB0ZXN0IHgiJHtsaWJnY3J5cHRfY29uZmlnX3ByZWZpeH0iICE9IHggOyB0aGVuCistICAgICAgICBMSUJHQ1JZUFRfQ09ORklHPSIke2xpYmdjcnlwdF9jb25maWdfcHJlZml4fS9iaW4vbGliZ2NyeXB0LWNvbmZpZyIKKy0gICAgIGVsc2UKKy0gICAgICAgY2FzZSAiJHtTWVNST09UfSIgaW4KKy0gICAgICAgICAvKikKKy0gICAgICAgICAgIGlmIHRlc3QgLXggIiR7U1lTUk9PVH0vYmluL2xpYmdjcnlwdC1jb25maWciIDsgdGhlbgorLSAgICAgICAgICAgICBMSUJHQ1JZUFRfQ09ORklHPSIke1NZU1JPT1R9L2Jpbi9saWJnY3J5cHQtY29uZmlnIgorLSAgICAgICAgICAgZmkKKy0gICAgICAgICAgIDs7CistICAgICAgICAgJycpCistICAgICAgICAgICA7OworLSAgICAgICAgICAqKQorLSAgICAgICAgICAgQUNfTVNHX1dBUk4oW0lnbm9yaW5nIFwkU1lTUk9PVCBhcyBpdCBpcyBub3QgYW4gYWJzb2x1dGUgcGF0aC5dKQorLSAgICAgICAgICAgOzsKKy0gICAgICAgZXNhYwogLSAgICAgZmkKIC0gIGZpCi0gCi0tICBBQ19QQVRIX1RPT0woTElCR0NSWVBUX0NPTkZJRywgbGliZ2NyeXB0LWNvbmZpZywgbm8pCistCistICBBQ19QQVRIX1BST0coTElCR0NSWVBUX0NPTkZJRywgbGliZ2NyeXB0LWNvbmZpZywgbm8pCiAgICB0bXA9aWZlbHNlKFskMV0sICwxOjEuMi4wLCQxKQogICAgaWYgZWNobyAiJHRtcCIgfCBncmVwICc6JyA+L2Rldi9udWxsIDI+L2Rldi9udWxsIDsgdGhlbgogICAgICAgcmVxX2xpYmdjcnlwdF9hcGk9YGVjaG8gIiR0bXAiICAgICB8IHNlZCAncy9cKC4qXCk6XCguKlwpL1wxLydgCi1AQCAtNDIsNDggKzMyLDEzIEBACitAQCAtNjIsNDggKzM4LDEzIEBAIEFDX0RFRlVOKFtBTV9QQVRIX0xJQkdDUllQVF0sCiAgICAgICBtaW5fbGliZ2NyeXB0X3ZlcnNpb249IiR0bXAiCiAgICBmaQogIApAQCAtMTI4LDcgKzExMiw3IEBACiAgICAgICAgICBpZiB0ZXN0ICIkdG1wIiAtZ3QgMCA7IHRoZW4KICAgICAgICAgICAgIEFDX01TR19DSEVDS0lORyhbTElCR0NSWVBUIEFQSSB2ZXJzaW9uXSkKICAgICAgICAgICAgIGlmIHRlc3QgIiRyZXFfbGliZ2NyeXB0X2FwaSIgLWVxICIkdG1wIiA7IHRoZW4KLUBAIC05NiwxMCArNTEsOCBAQAorQEAgLTExNiwxMCArNTcsOCBAQCBBQ19ERUZVTihbQU1fUEFUSF9MSUJHQ1JZUFRdLAogICAgICAgZmkKICAgIGZpCiAgICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgpAQCAtMTQwLDcgKzEyNCw3IEBACiAgICAgIGlmIHRlc3QgeCIkbGliZ2NyeXB0X2NvbmZpZ19ob3N0IiAhPSB4bm9uZSA7IHRoZW4KICAgICAgICBpZiB0ZXN0IHgiJGxpYmdjcnlwdF9jb25maWdfaG9zdCIgIT0geCIkaG9zdCIgOyB0aGVuCiAgICBBQ19NU0dfV0FSTihbWwotQEAgLTExMyw4ICs2Niw2IEBACitAQCAtMTM0LDggKzczLDYgQEAgQUNfREVGVU4oW0FNX1BBVEhfTElCR0NSWVBUXSwKICAgICAgICBmaQogICAgICBmaQogICAgZWxzZQpAQCAtMTQ5LDMgKzEzMyw0NSBAQAogICAgICBpZmVsc2UoWyQzXSwgLCA6LCBbJDNdKQogICAgZmkKICAgIEFDX1NVQlNUKExJQkdDUllQVF9DRkxBR1MpCitkaWZmIC0tZ2l0IGEvc3JjL2xpYmdjcnlwdC5wYy5pbiBiL3NyYy9saWJnY3J5cHQucGMuaW4KK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4yZmM4ZjUzCistLS0gL2Rldi9udWxsCisrKysgYi9zcmMvbGliZ2NyeXB0LnBjLmluCitAQCAtMCwwICsxLDMzIEBACisrIyBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGF1dG9jb25mIHRvIHByb2R1Y2UgYSBwa2ctY29uZmlnIG1ldGFkYXRhIGZpbGUuCisrIyBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisrIyBBdXRob3I6IFNpbW9uIEpvc2Vmc3NvbgorKyMKKysjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRoZSBhdXRob3IgZ2l2ZXMKKysjIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAorKyMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisrIworKyMgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorKyMgV0lUSE9VVCBBTlkgV0FSUkFOVFksIHRvIHRoZSBleHRlbnQgcGVybWl0dGVkIGJ5IGxhdzsgd2l0aG91dCBldmVuIHRoZQorKyMgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCisrCisrcHJlZml4PUBwcmVmaXhACisrZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorK2xpYmRpcj1AbGliZGlyQAorK2luY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisrCisrIyBBUEkgaW5mbworK2FwaV92ZXJzaW9uPUBMSUJHQ1JZUFRfQ09ORklHX0FQSV9WRVJTSU9OQAorK2hvc3Q9QExJQkdDUllQVF9DT05GSUdfSE9TVEAKKysKKysjIE1pc2MgaW5mb3JtYXRpb24uCisrc3ltbWV0cmljX2NpcGhlcnM9QExJQkdDUllQVF9DSVBIRVJTQAorK2FzeW1tZXRyaWNfY2lwaGVycz1ATElCR0NSWVBUX1BVQktFWV9DSVBIRVJTQAorK2RpZ2VzdHM9QExJQkdDUllQVF9ESUdFU1RTQAorKworK05hbWU6IGxpYmdjcnlwdAorK0Rlc2NyaXB0aW9uOiBHTlUgY3J5cHRvIGxpYnJhcnkKKytVUkw6IGh0dHA6Ly93d3cuZ251cGcub3JnCisrVmVyc2lvbjogQFZFUlNJT05ACisrTGliczogLUwke2xpYmRpcn0gLWxnY3J5cHQKKytMaWJzLnByaXZhdGU6IC1MJHtsaWJkaXJ9IC1sZ3BnLWVycm9yCisrQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0gCistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvZml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tcHRocmVhZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvZml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tcHRocmVhZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lN2RlOGJhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy9maXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1wdGhyZWFkLnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gY2MwZTJiNDAzZDMzODkyOTYzNTEzYTNiYTk4ZTRhZTVhMDVhNGQzYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFN1biwgMTIgSnVuIDIwMTYgMDQ6NDQ6MjkgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gdGVzdHMvTWFrZWZpbGUuYW06IGZpeCB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBwdGhyZWFkX2NyZWF0ZScKKworQWRkIG1pc3NpbmcgJy1scHRocmVhZCcgdG8gQ0ZMQUdTCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyB0ZXN0cy9NYWtlZmlsZS5hbSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KK2luZGV4IGQ0NjJmMzAuLmJlZjZkZDcgMTAwNjQ0CistLS0gYS90ZXN0cy9NYWtlZmlsZS5hbQorKysrIGIvdGVzdHMvTWFrZWZpbGUuYW0KK0BAIC02Miw0ICs2Miw0IEBAIEVYVFJBX0RJU1QgPSBSRUFETUUgcnNhLTE2ay5rZXkgY2F2c190ZXN0cy5zaCBjYXZzX2RyaXZlci5wbCBcCisgCisgTERBREQgPSAkKHN0YW5kYXJkX2xkYWRkKSAkKEdQR19FUlJPUl9MSUJTKQorIHRfbG9ja19MREFERCA9ICQoc3RhbmRhcmRfbGRhZGQpICQoR1BHX0VSUk9SX01UX0xJQlMpCistdF9sb2NrX0NGTEFHUyA9ICQoR1BHX0VSUk9SX01UX0NGTEFHUykKKyt0X2xvY2tfQ0ZMQUdTID0gJChHUEdfRVJST1JfTVRfQ0ZMQUdTKSAtbHB0aHJlYWQKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9saWJnY3J5cHQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9saWJnY3J5cHQuaW5jCmluZGV4IDU0NzgyNTMuLjE1ODA1Y2QgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvbGliZ2NyeXB0LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2xpYmdjcnlwdC5pbmMKQEAgLTE0LDEwICsxNCwxMiBAQAogCiBERVBFTkRTID0gImxpYmdwZy1lcnJvciBsaWJjYXAiCiAKLVNSQ19VUkkgPSAiZnRwOi8vZnRwLmdudXBnLm9yZy9nY3J5cHQvbGliZ2NyeXB0L2xpYmdjcnlwdC0ke1BWfS50YXIuZ3ogXAorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCitTUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS9saWJnY3J5cHQvbGliZ2NyeXB0LSR7UFZ9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9hZGQtcGtnY29uZmlnLXN1cHBvcnQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vbGliZ2NyeXB0LWZpeC1idWlsZGluZy1lcnJvci13aXRoLU8yLWluLXN5c3Jvb3QtcGF0aC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgtSUNFLWZhaWx1cmUtb24tbWlwcy13aXRoLW9wdGlvbi1PLWFuZC1nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLXB0aHJlYWQucGF0Y2ggXAogIgogCiBCSU5DT05GSUcgPSAiJHtiaW5kaXJ9L2xpYmdjcnlwdC1jb25maWciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2xpYmdjcnlwdF8xLjYuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvbGliZ2NyeXB0XzEuNi41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTdhMjNmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvbGliZ2NyeXB0XzEuNi41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1yZXF1aXJlIGxpYmdjcnlwdC5pbmMKLQotU1JDX1VSSVttZDVzdW1dID0gImYyNGZjYjY4NDkzMmQ0YjVlZDg1ZjJmMDVjYjFkOWY4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIwMmJmMTA5Y2NmMmQ2MTQ1NjVjODQ5ZjNlNTY4N2I5NGNkZTk3MjE2N2IzNTI2MWUwOTQyNTIzNjc2MjdiYzYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2xpYmdjcnlwdF8xLjcuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvbGliZ2NyeXB0XzEuNy4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkZDdjNTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2xpYmdjcnlwdF8xLjcuMy5iYgpAQCAtMCwwICsxLDQgQEAKK3JlcXVpcmUgbGliZ2NyeXB0LmluYworCitTUkNfVVJJW21kNXN1bV0gPSAiYmI1YjAwY2I3MGIxMjE1ODMzODU3ZmQ2OTAwODBmYmIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzk4NDcwY2Y2YTc4MWYyYWY0YmRmZGE3MTBhZDM5ZjBmNTRiNTA0NGU4YzQzYjg3OGQ0MDA1NzM3ZDZjMjEzZiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yLzAwMDEtbGliZ3BnLWVycm9yLUFkZC1uaW9zMi1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3IvMDAwMS1saWJncGctZXJyb3ItQWRkLW5pb3MyLXN1cHBvcnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhYjFjMTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3IvMDAwMS1saWJncGctZXJyb3ItQWRkLW5pb3MyLXN1cHBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1Gcm9tIGIyYWY2NTJmNDM5OTFlNGNlNjI5NzkxN2RhNTQyYTllYjUxMzU5MzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJlayBWYXN1dCA8bWFyZXhAZGVueC5kZT4KLURhdGU6IFRodSwgMTcgU2VwIDIwMTUgMDM6Mjg6MDYgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gbGliZ3BnLWVycm9yOiBBZGQgbmlvczIgc3VwcG9ydAotCi1BZGQgY29uZmlndXJhdGlvbiBmb3IgdGhlIE5JT1MyIHByb2Nlc3Nvci4KLQotU2lnbmVkLW9mZi1ieTogTWFyZWsgVmFzdXQgPG1hcmV4QGRlbnguZGU+Ci1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotLS0tCi0gc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIubmlvczItdW5rbm93bi1saW51eC1nbnUuaCB8IDIzICsrKysrKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIubmlvczItdW5rbm93bi1saW51eC1nbnUuaAotCi1kaWZmIC0tZ2l0IGEvc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIubmlvczItdW5rbm93bi1saW51eC1nbnUuaCBiL3NyYy9zeXNjZmcvbG9jay1vYmotcHViLm5pb3MyLXVua25vd24tbGludXgtZ251LmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4zYTI0NTcxCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zcmMvc3lzY2ZnL2xvY2stb2JqLXB1Yi5uaW9zMi11bmtub3duLWxpbnV4LWdudS5oCi1AQCAtMCwwICsxLDIzIEBACi0rIyMgbG9jay1vYmotcHViLm5pb3MyLXVua25vd24tbGludXgtZ251LmgKLSsjIyBGaWxlIGNyZWF0ZWQgYnkgZ2VuLXBvc2l4LWxvY2stb2JqIC0gRE8gTk9UIEVESVQKLSsjIyBUbyBiZSBpbmNsdWRlZCBieSBta2hlYWRlciBpbnRvIGdwZy1lcnJvci5oCi0rCi0rdHlwZWRlZiBzdHJ1Y3QKLSt7Ci0rICBsb25nIF92ZXJzOwotKyAgdW5pb24gewotKyAgICB2b2xhdGlsZSBjaGFyIF9wcml2WzI0XTsKLSsgICAgbG9uZyBfeF9hbGlnbjsKLSsgICAgbG9uZyAqX3hwX2FsaWduOwotKyAgfSB1OwotK30gZ3BncnRfbG9ja190OwotKwotKyNkZWZpbmUgR1BHUlRfTE9DS19JTklUSUFMSVpFUiB7MSx7ezAsMCwwLDAsMCwwLDAsMCwgXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsMCwwLDAsMCwwLDAsMCwgXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsMCwwLDAsMCwwLDAsMH19fQotKyMjCi0rIyMgTG9jYWwgVmFyaWFibGVzOgotKyMjIG1vZGU6IGMKLSsjIyBidWZmZXItcmVhZC1vbmx5OiB0Ci0rIyMgRW5kOgotKyMjCi0tLSAKLTIuNS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yXzEuMjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvcl8xLjIxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZGQxNjAyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yXzEuMjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1TVU1NQVJZID0gIlNtYWxsIGxpYnJhcnkgdGhhdCBkZWZpbmVzIGNvbW1vbiBlcnJvciB2YWx1ZXMgZm9yIGFsbCBHbnVQRyBjb21wb25lbnRzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvcmVsYXRlZF9zb2Z0d2FyZS9saWJncGctZXJyb3IvIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZzEwY29kZS5jb20vZ251cGcvaW5kZXgiCi0KLUxJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9ncGctZXJyb3IuaC5pbjtlbmRsaW5lPTIzO21kNT05M2QzMTU1YWYxNDFhZTNiMzY5YTVkMDljYTlkNjIzNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvaW5pdC5jO2VuZGxpbmU9MjA7bWQ1PThmNWE5YjU5NjM0ZjRhZWJjZDBlYzlkM2ViZDUzYmZlIgotCi0KLVNFQ1RJT04gPSAibGlicyIKLQotU1JDX1VSSSA9ICJmdHA6Ly9mdHAuZ251cGcub3JnL2djcnlwdC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vcGtnY29uZmlnLnBhdGNoIFwKLQkgICBmaWxlOi8vMDAwMS1saWJncGctZXJyb3ItQWRkLW5pb3MyLXN1cHBvcnQucGF0Y2ggXAotCSAgIgotU1JDX1VSSVttZDVzdW1dID0gImFiMGI1YWJhNmQwYTE4NWI0MWQwN2JkYTgwNGZkOGIyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImI3ZGJkYjNjYWQ2M2E3NDBlOWYwYzYzMmExZGEzMmQ0YWZkYjY5NGVjODZjODYyNWM5OGVhMDY5MTcxM2I4NGQiCi0KLUJJTkNPTkZJRyA9ICIke2JpbmRpcn0vZ3BnLWVycm9yLWNvbmZpZyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnLWRpc2FibGVkIHBrZ2NvbmZpZyBnZXR0ZXh0Ci1DUFBGTEFHUyArPSAiLVAiCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0JVEFSR0VUX0ZJTEU9bGludXgtZ251Ci0JaWYgWyAke1RBUkdFVF9PU30gIT0gImxpbnV4IiBdOyB0aGVuCi0JCVRBUkdFVF9GSUxFPSR7VEFSR0VUX09TfQotCWZpCi0KLQljYXNlICR7VEFSR0VUX0FSQ0h9IGluCi0JICBhYXJjaDY0X2JlKSBUVVBMRT1hYXJjaDY0LXVua25vd24tbGludXgtZ251IDs7Ci0JICBhcm0pCSAgICAgIFRVUExFPWFybS11bmtub3duLWxpbnV4LWdudWVhYmkgOzsKLQkgIGFybWViKSAgICAgIFRVUExFPWFybS11bmtub3duLWxpbnV4LWdudWVhYmkgOzsKLQkgIGk1ODZ8aTY4NikgIFRVUExFPWk2ODYtcGMtbGludXgtZ251IDs7Ci0JICBtaXBzNjRlbCkgICBUVVBMRT1taXBzZWwtdW5rbm93bi1saW51eC1nbnUgOzsKLQkgIG1pcHM2NCkgICAgIFRVUExFPW1pcHMtdW5rbm93bi1saW51eC1nbnUgOzsKLQkgIHg4Nl82NCkgICAgIFRVUExFPXg4Nl82NC1wYy1saW51eC1nbnUgOzsKLQkgICopICAgICAgICAgIFRVUExFPSR7VEFSR0VUX0FSQ0h9LXVua25vd24tbGludXgtZ251IDs7IAotCWVzYWMKLQotCWNwICR7U30vc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIuJFRVUExFLmggXAotCSAgJHtTfS9zcmMvc3lzY2ZnL2xvY2stb2JqLXB1Yi4kVEFSR0VUX0ZJTEUuaAotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIHdlIGRvbid0IGhhdmUgY29tbW9uIGxpc3AgaW4gT0UKLQlybSAtcmYgIiR7RH0ke2RhdGFkaXJ9L2NvbW1vbi1saXNwLyIKLX0KLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vZ3BnLWVycm9yIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yXzEuMjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvcl8xLjI0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0YTg4MmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvcl8xLjI0LmJiCkBAIC0wLDAgKzEsNTMgQEAKK1NVTU1BUlkgPSAiU21hbGwgbGlicmFyeSB0aGF0IGRlZmluZXMgY29tbW9uIGVycm9yIHZhbHVlcyBmb3IgYWxsIEdudVBHIGNvbXBvbmVudHMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy9yZWxhdGVkX3NvZnR3YXJlL2xpYmdwZy1lcnJvci8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5nMTBjb2RlLmNvbS9nbnVwZy9pbmRleCIKKworTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2dwZy1lcnJvci5oLmluO2VuZGxpbmU9MjM7bWQ1PWNmNTYyZjYwYjlkYmE3ZGYyMGQ2ZWUzZjk3ZWExZDVhIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9pbml0LmM7ZW5kbGluZT0yMDttZDU9ODcyYjIzODlmZTliYWU3ZmZiODBkMmI5MTIyNWFmYmMiCisKKworU0VDVElPTiA9ICJsaWJzIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKK1NSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3ItJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9wa2djb25maWcucGF0Y2ggXAorCSAgIgorU1JDX1VSSVttZDVzdW1dID0gImZlYjQyMTk4YzBhYWYzYjI4ZWFiZThmNDFhMzRiOTgzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkyNjhlMWNjNDg3ZGU1ZTZlNDQ2MGZjYTYxMmEwNmU0ZjM4MzA3MmFjNDNhZTkwNjAzZTVlNDY3ODNkM2U1NDAiCisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vZ3BnLWVycm9yLWNvbmZpZyIKKworaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnLWRpc2FibGVkIHBrZ2NvbmZpZyBnZXR0ZXh0CitDUFBGTEFHUyArPSAiLVAiCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisJVEFSR0VUX0ZJTEU9bGludXgtZ251CisJaWYgWyAke1RBUkdFVF9PU30gIT0gImxpbnV4IiBdOyB0aGVuCisJCVRBUkdFVF9GSUxFPSR7VEFSR0VUX09TfQorCWZpCisKKwljYXNlICR7VEFSR0VUX0FSQ0h9IGluCisJICBhYXJjaDY0X2JlKSBUVVBMRT1hYXJjaDY0LXVua25vd24tbGludXgtZ251IDs7CisJICBhcm0pCSAgICAgIFRVUExFPWFybS11bmtub3duLWxpbnV4LWdudWVhYmkgOzsKKwkgIGFybWViKSAgICAgIFRVUExFPWFybS11bmtub3duLWxpbnV4LWdudWVhYmkgOzsKKwkgIGk1ODZ8aTY4NikgIFRVUExFPWk2ODYtcGMtbGludXgtZ251IDs7CisJICBtaXBzKmVsKSAgICBUVVBMRT1taXBzZWwtdW5rbm93bi1saW51eC1nbnUgOzsKKwkgIG1pcHMqKSAgICAgIFRVUExFPW1pcHMtdW5rbm93bi1saW51eC1nbnUgOzsKKwkgIHg4Nl82NCkgICAgIFRVUExFPXg4Nl82NC1wYy1saW51eC1nbnUgOzsKKwkgICopICAgICAgICAgIFRVUExFPSR7VEFSR0VUX0FSQ0h9LXVua25vd24tbGludXgtZ251IDs7IAorCWVzYWMKKworCWNwICR7U30vc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIuJFRVUExFLmggXAorCSAgJHtTfS9zcmMvc3lzY2ZnL2xvY2stb2JqLXB1Yi4kVEFSR0VUX0ZJTEUuaAorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIHdlIGRvbid0IGhhdmUgY29tbW9uIGxpc3AgaW4gT0UKKwlybSAtcmYgIiR7RH0ke2RhdGFkaXJ9L2NvbW1vbi1saXNwLyIKK30KKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vZ3BnLWVycm9yIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJpY2FsL2xpYmljYWwvMDAwMS1DTWFrZUxpc3RzLnR4dC1saWJpY2FsLnBjLmluLWZpeC1pY3VsaWJzLXJlbW92ZS1mdWxsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljYWwvbGliaWNhbC8wMDAxLUNNYWtlTGlzdHMudHh0LWxpYmljYWwucGMuaW4tZml4LWljdWxpYnMtcmVtb3ZlLWZ1bGwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmRiNzVmNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJpY2FsL2xpYmljYWwvMDAwMS1DTWFrZUxpc3RzLnR4dC1saWJpY2FsLnBjLmluLWZpeC1pY3VsaWJzLXJlbW92ZS1mdWxsLnBhdGNoCkBAIC0wLDAgKzEsNDQgQEAKK0Zyb20gMWE0MTA2OWMwZGMwNTRlNTljZDc2ZmMzZDhjZjdjYzJhNzhiNWU4ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsbGVuIFdpbnRlciA8YWxsZW4ud2ludGVyQGtkYWIuY29tPgorRGF0ZTogU2F0LCAzIFNlcCAyMDE2IDE2OjU2OjI5IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIENNYWtlTGlzdHMudHh0LCBsaWJpY2FsLnBjLmluIC0gZml4IGljdWxpYnMgKHJlbW92ZSBmdWxsIHBhdGgpIElTU1VFOiAyMjcKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KKy0tLS0KK2RpZmYgLU5hdXIgbGliaWNhbC0yLjAuMC1vcmlnL0NNYWtlTGlzdHMudHh0IGxpYmljYWwtMi4wLjAvQ01ha2VMaXN0cy50eHQKKy0tLSBsaWJpY2FsLTIuMC4wLW9yaWcvQ01ha2VMaXN0cy50eHQJMjAxNi0wOS0wOCAxODowNTowNi4xNjYwNDkzNDUgKzAzMDAKKysrKyBsaWJpY2FsLTIuMC4wL0NNYWtlTGlzdHMudHh0CTIwMTYtMDktMDggMTg6MDU6NDUuMjAxNTYxMzM0ICswMzAwCitAQCAtMTI4LDYgKzEyOCw3IEBACisgIyAgUlNDQUxFIGluZm8gYXQgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzUyOQorIGZpbmRfcGFja2FnZShJQ1UpCisgaWYoSUNVX0ZPVU5EKQorKyAgc2V0KElDVVVDX0xJQlMgIi1saWN1dWMiKSAjZm9yIGxpYmljYWwucGMKKyAgIHNldChIQVZFX0xJQklDVSAxKQorICAgaWYoSUNVX01BSk9SX1ZFUlNJT04gVkVSU0lPTl9HUkVBVEVSIDUwKQorICAgICBzZXQoSEFWRV9JQ1VfREFOR0kgVFJVRSkKK0BAIC0xMzcsNiArMTM4LDcgQEAKKyBlbmRpZigpCisgaWYoSUNVX0kxOE5fRk9VTkQpCisgICBzZXQoSEFWRV9MSUJJQ1VfSTE4TiAxKQorKyAgc2V0KElDVUkxOE5fTElCUyAiLWxpY3VpMThuIikgI2ZvciBsaWJpY2FsLnBjCisgZW5kaWYoKQorIAorICMgTVNWQyBzcGVjaWZpYyBkZWZpbml0aW9ucworZGlmZiAtTmF1ciBsaWJpY2FsLTIuMC4wLW9yaWcvbGliaWNhbC5wYy5pbiBsaWJpY2FsLTIuMC4wL2xpYmljYWwucGMuaW4KKy0tLSBsaWJpY2FsLTIuMC4wLW9yaWcvbGliaWNhbC5wYy5pbgkyMDE1LTEyLTI4IDIzOjQ0OjUzLjAwMDAwMDAwMCArMDIwMAorKysrIGxpYmljYWwtMi4wLjAvbGliaWNhbC5wYy5pbgkyMDE2LTA5LTA4IDE4OjA5OjEyLjk5MTk2MzU5NyArMDMwMAorQEAgLTMsMTAgKzMsMTAgQEAKKyBsaWJkaXI9QGxpYmRpckAKKyBpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAorIHRocmVhZHNsaWI9QFBUSFJFQURfTElCU0AKKy1pY3VsaWI9QElDVV9MSUJSQVJJRVNAIEBJQ1VfSTE4Tl9MSUJSQVJJRVNACisraWN1bGlicz1ASUNVVUNfTElCU0AgQElDVUkxOE5fTElCU0AKKyAKKyBOYW1lOiBsaWJpY2FsCisgRGVzY3JpcHRpb246IEFuIGltcGxlbWVudGF0aW9uIG9mIGJhc2ljIGlDQUwgcHJvdG9jb2xzCisgVmVyc2lvbjogQFZFUlNJT05ACistTGliczogLUwke2xpYmRpcn0gLWxpY2FsIC1saWNhbHNzIC1saWNhbHZjYWwgJHt0aHJlYWRzbGlifSAke2ljdWxpYn0KKytMaWJzOiAtTCR7bGliZGlyfSAtbGljYWwgLWxpY2Fsc3MgLWxpY2FsdmNhbCAke3RocmVhZHNsaWJ9ICR7aWN1bGlic30KKyBDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljYWwvbGliaWNhbF8yLjAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJpY2FsL2xpYmljYWxfMi4wLjAuYmIKaW5kZXggMTA0MmU2Zi4uZDRmZTg2OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljYWwvbGliaWNhbF8yLjAuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaWNhbC9saWJpY2FsXzIuMC4wLmJiCkBAIC04LDYgKzgsNyBAQAogCiBTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS8ke0JQfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vUmVtb3ZlLWNtYWtlLWNoZWNrLWZvci1QZXJsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQ01ha2VMaXN0cy50eHQtbGliaWNhbC5wYy5pbi1maXgtaWN1bGlicy1yZW1vdmUtZnVsbC5wYXRjaCBcCiAgICAgICAgICAgICIKIERFUEVORFMgPSAiaWN1IgogCkBAIC0xNSwxMyArMTYsNiBAQAogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY1NGMxMWY3NTljMTkyMzdiZTM5ZjZhZDQwMWQ5MTdlNWEwNWYzNmYxNzM2Mzg1ZWQ5NThlNjBjZjIxNDU2ZGEiCiBVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYmljYWwvbGliaWNhbC9yZWxlYXNlcyIKIAotaW5oZXJpdCBjbWFrZQoraW5oZXJpdCBjbWFrZSBwa2djb25maWcKIAogRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY21ha2UvKiIKLQotIwotIyBUdXJuIHNwZWNpZmljIGxpYnJhcnkgcGF0aHMgaW4gdGhlIHBrZ2NvbmZpZyBmaWxlIGludG8gc3RhbmRhcmQgbGlicmFyeSBlbnRyaWVzCi0jCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0Jc2VkIC1pIC1lICJzIyR7U1RBR0lOR19MSUJESVJ9L2xpYlwoW2EtejAtOV0qXClcLnNvIy1sXDEjZyIgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbGliaWNhbC5wYwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmtzYmEvbGlia3NiYV8xLjMuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJrc2JhL2xpYmtzYmFfMS4zLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjMjExNjQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmtzYmEvbGlia3NiYV8xLjMuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVNVTU1BUlkgPSAiRWFzeSBBUEkgdG8gY3JlYXRlIGFuZCBwYXJzZSBYLjUwOSBhbmQgQ01TIHJlbGF0ZWQgb2JqZWN0cyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251cGcub3JnL3JlbGF0ZWRfc29mdHdhcmUvbGlia3NiYS8iCi1MSUNFTlNFID0gIkdQTHYyKyB8IExHUEx2MysgfCBHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mZDU0MWQ4M2Y3NWQwMzhjNGUwNjE3YjY3MmVkOGJkYSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkdQTHYyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkdQTHYzO21kNT0yZjMxYjI2NmQzNDQwZGQ3ZWU1MGY5MmNmNjdkOGU2YyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEx2MzttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIgXAotICAgICAgICAgICAgICAgICAgICIKLQotREVQRU5EUyA9ICJsaWJncGctZXJyb3IiCi0KLUJJTkNPTkZJRyA9ICIke2JpbmRpcn0va3NiYS1jb25maWciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcgdGV4aW5mbwotCi1TUkNfVVJJID0gImZ0cDovL2Z0cC5nbnVwZy5vcmcvZ2NyeXB0LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9rc2JhLWFkZC1wa2djb25maWctc3VwcG9ydC5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gImE1ZGQzYzU3ZmNhMjU0OTM1ZjVjZjhkYjI2ZTM5MDY1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBjN2Y1ZmZlMzRkMDQxNGY2OTUxZDk4ODBhNDZmY2MyOTg1YzQ4N2Y3YzM2MzY5YjlmMTFhZDQxMTMxYzc3ODYiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQkjIEVsc2UgdGhlc2UgY291bGQgYmUgdXNlZCBpbiBwcmVmZXJlbmNlIHRvIHRob3NlIGluIGFjbG9jYWwtY29weQotCXJtIC1mICR7U30vbTQvZ3BnLWVycm9yLm00Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlia3NiYS9saWJrc2JhXzEuMy40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmtzYmEvbGlia3NiYV8xLjMuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjgyNTVjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmtzYmEvbGlia3NiYV8xLjMuNC5iYgpAQCAtMCwwICsxLDI2IEBACitTVU1NQVJZID0gIkVhc3kgQVBJIHRvIGNyZWF0ZSBhbmQgcGFyc2UgWC41MDkgYW5kIENNUyByZWxhdGVkIG9iamVjdHMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy9yZWxhdGVkX3NvZnR3YXJlL2xpYmtzYmEvIgorTElDRU5TRSA9ICJHUEx2MisgfCBMR1BMdjMrIHwgR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmQ1NDFkODNmNzVkMDM4YzRlMDYxN2I2NzJlZDhiZGEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5HUEx2MjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5HUEx2MzttZDU9MmYzMWIyNjZkMzQ0MGRkN2VlNTBmOTJjZjY3ZDhlNmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MR1BMdjM7bWQ1PWU2YTYwMGZkNWUxZDljYmRlMmQ5ODM2ODAyMzNhZDAyIFwKKyAgICAgICAgICAgICAgICAgICAiCisKK0RFUEVORFMgPSAibGliZ3BnLWVycm9yIgorCitCSU5DT05GSUcgPSAiJHtiaW5kaXJ9L2tzYmEtY29uZmlnIgorCitpbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnIHRleGluZm8KKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCitTUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8va3NiYS1hZGQtcGtnY29uZmlnLXN1cHBvcnQucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyYmZjM2Q2OTA1M2RiN2I2OTgzYjU2Mjc3MDYwMzNmNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmNmMyODgzY2ViZWM1NjA4NjkyZDg3MzA4NDNkODdmMjM3YzA5NjRkOTIzYmJlN2FhODljMDVmMjA1NThhZDRmIgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJIyBFbHNlIHRoZXNlIGNvdWxkIGJlIHVzZWQgaW4gcHJlZmVyZW5jZSB0byB0aG9zZSBpbiBhY2xvY2FsLWNvcHkKKwlybSAtZiAke1N9L200L2dwZy1lcnJvci5tNAorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm5sL2xpYm5sLzAwMDEtbGliLWFkZC11dGlsaXR5LWZ1bmN0aW9uLW5sX3N0cmVycm9yX2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlibmwvbGlibmwvMDAwMS1saWItYWRkLXV0aWxpdHktZnVuY3Rpb24tbmxfc3RyZXJyb3JfbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzM0MDI4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm5sL2xpYm5sLzAwMDEtbGliLWFkZC11dGlsaXR5LWZ1bmN0aW9uLW5sX3N0cmVycm9yX2wucGF0Y2gKQEAgLTAsMCArMSwxNDYgQEAKK0Zyb20gNjgzZjI3ZmJiNjhjYTIwMjhhN2IzNDY4ZjE3MTY0ZDQ4NGRmMjc1OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9BbmRyPUMzPUE5PTIwRHJhc3ppaz89IDxhZHJhc3ppa0B0eWNvaW50LmNvbT4KK0RhdGU6IFRodSwgMjUgQXVnIDIwMTYgMTM6MTQ6NTkgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzNdIGxpYjogYWRkIHV0aWxpdHkgZnVuY3Rpb24gbmxfc3RyZXJyb3JfbCgpCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK2xpYm5sIGN1cnJlbnRseSB1c2VzIHN0cmVycm9yX3IoKSB0aHJvdWdob3V0LCBidXQgdGhpcyBpcworcHJvYmxlbWF0aWMgYmVjYXVzZSB0aGVyZSBpcyBhIG5vbi1zdGFuZGFyZCBHTlUgdmVyc2lvbgoraW1wbGVtZW50ZWQgaW4gZ2xpYmMsIGFuZCB0aGUgc3RhbmRhcmQgUE9TSVggdmVyc2lvbiwgd2hpY2gKK2RpZmZlciBpbiBzaWduYXR1cmUuIFdoZW4gdXNpbmcgZ2xpYmMsIG9uZSBjYW4gY2hvb3NlCitiZXR3ZWVuIHRoZSB0d28gdmVyc2lvbnMgdXNpbmcgZmVhdHVyZSB0ZXN0IG1hY3JvcworX0dOVV9TT1VSQ0UgYW5kIF9QT1NJWF9DX1NPVVJDRS4KKworR2l2ZW4gbGlibmwgaXMgYnVpbHQgdXNpbmcgdGhlIGZvcm1lciwgd2UgYWx3YXlzIGdldCB0aGUKK2dsaWJjIHNwZWNpYWwgdmVyc2lvbiwgYW5kIGFsbCBjb2RlIHNvIGZhciBoYXMgYmVlbiB3cml0dGVuCitmb3IgdGhhdCBub24tc3RhbmRhcmQgdmVyc2lvbi4KKworT3RoZXIgQyBsaWJyYXJpZXMgbGlrZSBtdXNsIG9uIHRoZSBvdGhlciBoYW5kIG9ubHkgdHJ5Cit0byBiZSBwb3NpeCBjb21wbGlhbnQsIGFuZCBvbmx5IGV2ZXIgcHJvdmlkZSB0aGUgcG9zaXgKK3ZlcnNpb24gb2Ygc3RyZXJyb3JfcigpLCB3aGljaCBoYXMgYSBkaWZmZXJlbnQgc2lnbmF0dXJlLgorCitUaGUgYWx0ZXJuYXRpdmUgaXMgdG8gdXNlIHN0cmVycm9yX2woKSByYXRoZXIgdGhhbgorc3RyZXJyb3JfcigpIGh0dHA6Ly9hdXN0aW5ncm91cGJ1Z3MubmV0L3ZpZXcucGhwP2lkPTY1NQorLSB0aGlzIHdpbGwgYXZvaWQgdGhlIG5vbi1jb25maXJtaW5nIHZlcnNpb25zIGlzc3VlCistIHN0cmVycm9yX2woKSBpcyBub3cgcmVjb21tZW5kZWQgYnkgUE9TSVggdG8gcmVwbGFjZQorICBzdHJlcnJvcl9yKCkgdXNhZ2UKKworU28gcmF0aGVyIHRoYW4gY2hhbmdpbmcgYWxsIHVzZXMgb2Ygc3RyZXJyb3JfcigpIHRvIGJlIGluCitsaW5lIHdpdGggcG9zaXgsIHdlIGFyZSBnb2luZyB0byBzd2l0Y2ggdG8gdGhlIHJlY29tbWVuZGVkCitpbnRlcmZhY2Ugc3RyZXJyb3JfbCgpLgorCitTaW5jZSBzdHJlcnJvcl9sKCkgaXMgc2xpZ2h0bHkgbW9yZSBkaWZmaWN1bHkgdG8gdXNlLCB3ZQorYWRkIGEgbGl0dGxlIChwcml2YXRlKSB3cmFwcGVyIHRoYXQgd2UgY2FuIHVzZSBmcm9tIGFsbAorY3VycmVudCBjYWxsc2l0ZXMgb2Ygc3RyZXJyb3JfcigpLgorCitTaWduZWQtb2ZmLWJ5OiBBbmRyw6kgRHJhc3ppayA8YWRyYXN6aWtAdHljb2ludC5jb20+CitSZXZpZXdlZC1ieTogU3RlcGhhbmUgQXlvdHRlIDxzYXlvdHRlQHR5Y29pbnQuY29tPgorU2lnbmVkLW9mZi1ieTogVGhvbWFzIEhhbGxlciA8dGhhbGxlckByZWRoYXQuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IGh0dHBzOi8vZ2l0aHViLmNvbS90aG9tMzExL2xpYm5sL2NvbW1pdC82ODNmMjdmYmI2OGNhMjAyOGE3YjM0NjhmMTcxNjRkNDg0ZGYyNzU5CisgaW5jbHVkZS9NYWtlZmlsZS5hbSAgICAgICAgICAgICB8ICAxICsKKyBpbmNsdWRlL25ldGxpbmstcHJpdmF0ZS91dGlscy5oIHwgMTcgKysrKysrKysrKysrKysrKysKKyBsaWIvdXRpbHMuYyAgICAgICAgICAgICAgICAgICAgIHwgMjQgKysrKysrKysrKysrKysrKysrKysrKysrCisgbGlibmwtMy5zeW0gICAgICAgICAgICAgICAgICAgICB8ICA1ICsrKysrCisgNCBmaWxlcyBjaGFuZ2VkLCA0NyBpbnNlcnRpb25zKCspCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbmV0bGluay1wcml2YXRlL3V0aWxzLmgKKworZGlmZiAtLWdpdCBhL2luY2x1ZGUvTWFrZWZpbGUuYW0gYi9pbmNsdWRlL01ha2VmaWxlLmFtCitpbmRleCA4MDRlOTg0Li5mOGI5NzdhIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9NYWtlZmlsZS5hbQorKysrIGIvaW5jbHVkZS9NYWtlZmlsZS5hbQorQEAgLTE2Niw2ICsxNjYsNyBAQCBub2luc3RfSEVBREVSUyA9IFwKKyAJbmV0bGluay1wcml2YXRlL3NvY2tldC5oIFwKKyAJbmV0bGluay1wcml2YXRlL3RjLmggXAorIAluZXRsaW5rLXByaXZhdGUvdHlwZXMuaCBcCisrCW5ldGxpbmstcHJpdmF0ZS91dGlscy5oIFwKKyAJbmV0bGluay1wcml2YXRlL2NhY2hlLWFwaS5oIFwKKyAJbmV0bGluay1wcml2YXRlL29iamVjdC1hcGkuaCBcCisgCW5ldGxpbmstcHJpdmF0ZS9yb3V0ZS9saW5rL2FwaS5oIFwKK2RpZmYgLS1naXQgYS9pbmNsdWRlL25ldGxpbmstcHJpdmF0ZS91dGlscy5oIGIvaW5jbHVkZS9uZXRsaW5rLXByaXZhdGUvdXRpbHMuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjc3YWFkYjMKKy0tLSAvZGV2L251bGwKKysrKyBiL2luY2x1ZGUvbmV0bGluay1wcml2YXRlL3V0aWxzLmgKK0BAIC0wLDAgKzEsMTcgQEAKKysvKgorKyAqIG5ldGxpbmstcHJpdmF0ZS91dGlscy5oCUxvY2FsIFV0aWxpdHkgRnVuY3Rpb25zCisrICoKKysgKglUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICoJbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAqCUxpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gdmVyc2lvbiAyLjEKKysgKglvZiB0aGUgTGljZW5zZS4KKysgKgorKyAqIENvcHlyaWdodCAoYykgMjAwMy0yMDEyIFRob21hcyBHcmFmIDx0Z3JhZkBzdXVnLmNoPgorKyAqLworKworKyNpZm5kZWYgTkVUTElOS19VVElMU19QUklWX0hfCisrI2RlZmluZSBORVRMSU5LX1VUSUxTX1BSSVZfSF8KKysKKytleHRlcm4gY29uc3QgY2hhciAqCW5sX3N0cmVycm9yX2woaW50IGVycik7CisrCisrI2VuZGlmCitkaWZmIC0tZ2l0IGEvbGliL3V0aWxzLmMgYi9saWIvdXRpbHMuYworaW5kZXggNjFjM2Q5NS4uYzFjMWI3MiAxMDA2NDQKKy0tLSBhL2xpYi91dGlscy5jCisrKysgYi9saWIvdXRpbHMuYworQEAgLTI1LDEwICsyNSwxMiBAQAorICAqLworIAorICNpbmNsdWRlIDxuZXRsaW5rLXByaXZhdGUvbmV0bGluay5oPgorKyNpbmNsdWRlIDxuZXRsaW5rLXByaXZhdGUvdXRpbHMuaD4KKyAjaW5jbHVkZSA8bmV0bGluay9uZXRsaW5rLmg+CisgI2luY2x1ZGUgPG5ldGxpbmsvdXRpbHMuaD4KKyAjaW5jbHVkZSA8bGludXgvc29ja2V0Lmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPiAvKiBleGl0KCkgKi8KKysjaW5jbHVkZSA8bG9jYWxlLmg+CisgCisgLyoqCisgICogR2xvYmFsIHZhcmlhYmxlIGluZGljYXRpbmcgdGhlIGRlc2lyZWQgbGV2ZWwgb2YgZGVidWdnaW5nIG91dHB1dC4KK0BAIC0xMTgsNiArMTIwLDI4IEBAIGludCBfX25sX3JlYWRfbnVtX3N0cl9maWxlKGNvbnN0IGNoYXIgKnBhdGgsIGludCAoKmNiKShsb25nLCBjb25zdCBjaGFyICopKQorIAorIAlyZXR1cm4gMDsKKyB9CisrCisrY29uc3QgY2hhciAqbmxfc3RyZXJyb3JfbChpbnQgZXJyKQorK3sKKysJaW50IGVycm5vX3NhdmUgPSBlcnJubzsKKysJbG9jYWxlX3QgbG9jID0gbmV3bG9jYWxlKExDX01FU1NBR0VTX01BU0ssICIiLCAobG9jYWxlX3QpMCk7CisrCWNvbnN0IGNoYXIgKmJ1ZjsKKysKKysJaWYgKGxvYyA9PSAobG9jYWxlX3QpMCkgeworKwkJaWYgKGVycm5vID09IEVOT0VOVCkKKysJCQlsb2MgPSBuZXdsb2NhbGUoTENfTUVTU0FHRVNfTUFTSywKKysJCQkJCSJQT1NJWCIsIChsb2NhbGVfdCkwKTsKKysJfQorKwlpZiAobG9jICE9IChsb2NhbGVfdCkwKSB7CisrCQlidWYgPSBzdHJlcnJvcl9sKGVyciwgbG9jKTsKKysJCWZyZWVsb2NhbGUobG9jKTsKKysJfSBlbHNlIHsKKysJCWJ1ZiA9ICJuZXdsb2NhbGUoKSBmYWlsZWQiOworKwl9CisrCisrCWVycm5vID0gZXJybm9fc2F2ZTsKKysJcmV0dXJuIGJ1ZjsKKyt9CisgLyoqIEBlbmRjb25kICovCisgCisgLyoqCitkaWZmIC0tZ2l0IGEvbGlibmwtMy5zeW0gYi9saWJubC0zLnN5bQoraW5kZXggNGUwOWJkZC4uOTExOWU2NiAxMDA2NDQKKy0tLSBhL2xpYm5sLTMuc3ltCisrKysgYi9saWJubC0zLnN5bQorQEAgLTM1MSwzICszNTEsOCBAQCBsaWJubF8zXzJfMjggeworIGdsb2JhbDoKKyAJbmxfb2JqZWN0X2RpZmY2NDsKKyB9IGxpYm5sXzNfMl8yNzsKKysKKytsaWJubF8zXzJfMjkgeworK2dsb2JhbDoKKysJbmxfc3RyZXJyb3JfbDsKKyt9IGxpYm5sXzNfMl8yODsKKy0tIAorMi45LjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm5sL2xpYm5sLzAwMDItbGliLXN3aXRjaC10by11c2luZy1zdHJlcnJvcl9sLWluc3RlYWQtb2Ytc3RyZXJyb3Jfci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJubC9saWJubC8wMDAyLWxpYi1zd2l0Y2gtdG8tdXNpbmctc3RyZXJyb3JfbC1pbnN0ZWFkLW9mLXN0cmVycm9yX3IucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjM0N2VjMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJubC9saWJubC8wMDAyLWxpYi1zd2l0Y2gtdG8tdXNpbmctc3RyZXJyb3JfbC1pbnN0ZWFkLW9mLXN0cmVycm9yX3IucGF0Y2gKQEAgLTAsMCArMSw0MDMgQEAKK0Zyb20gYzE5NDhlYzI5YjhkY2RjNThkMmQ5MjcwMGMzMjVhYmRlYWIxMTFhNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9BbmRyPUMzPUE5PTIwRHJhc3ppaz89IDxhZHJhc3ppa0B0eWNvaW50LmNvbT4KK0RhdGU6IFRodSwgMjUgQXVnIDIwMTYgMTM6MTU6MDAgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzNdIGxpYjogc3dpdGNoIHRvIHVzaW5nIHN0cmVycm9yX2woKSBpbnN0ZWFkIG9mIHN0cmVycm9yX3IoKQorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitnbGliYyBwcm92aWRlcyB0d28gdmVyc2lvbnMgb2Ygc3RyZXJyb3JfcigpLCB3aGljaAorY2FuIGJlIGNob3NlbiBiZXR3ZWVuIHVzaW5nIGZlYXR1cmUgdGVzdCBtYWNyb3MKK19HTlVfU09VUkNFIGFuZCBfUE9TSVhfQ19TT1VSQ0UuIGxpYm5sIGlzIGJ1aWx0IHVzaW5nCit0aGUgZm9ybWVyLCBoZW5jZSB3ZSBnZXQgdGhlIGdsaWJjIHNwZWNpYWwgdmVyc2lvbiwKK2FuZCBhbGwgY29kZSBzbyBmYXIgaGFzIGJlZW4gd3JpdHRlbiBmb3IgdGhpcy4KKworT3RoZXIgQyBsaWJyYXJpZXMgbGlrZSBtdXNsIG9uIHRoZSBvdGhlciBoYW5kIG9ubHkgdHJ5Cit0byBiZSBwb3NpeCBjb21wbGlhbnQsIGFuZCBvbmx5IGV2ZXIgcHJvdmlkZSB0aGUgcG9zaXgKK3ZlcnNpb24gb2Ygc3RyZXJyb3JfcigpLCB3aGljaCBoYXMgYSBkaWZmZXJlbnQgc2lnbmF0dXJlLgorCitVc2VzIGluIGxpYm5sIGhlbmNlIGdlbmVyYWxseSBjYXVzZSBwcmludGYoKSBvZiBhbiAqaW50Kgord2l0aCBhICpzdHJpbmcgZm9ybWF0KiBzcGVjaWZpZXIgZm9yIHRoYXQgcmVhc29uLgorCitBZGRpdGlvbmFsbHksIHN0cmVycm9yX3IoKSBoYXMgYmVlbiBkZXByZWNhdGVkOgorICBodHRwOi8vYXVzdGluZ3JvdXBidWdzLm5ldC92aWV3LnBocD9pZD02NTUKKworU3dpdGNoIHRvIHVzaW5nIHN0cmVycm9yX2woKSAodmlhIG91ciB3cmFwcGVyIGp1c3QKK2ludHJvZHVjZWQpLgorCitTaWduZWQtb2ZmLWJ5OiBBbmRyw6kgRHJhc3ppayA8YWRyYXN6aWtAdHljb2ludC5jb20+CitSZXZpZXdlZC1ieTogU3RlcGhhbmUgQXlvdHRlIDxzYXlvdHRlQHR5Y29pbnQuY29tPgorU2lnbmVkLW9mZi1ieTogVGhvbWFzIEhhbGxlciA8dGhhbGxlckByZWRoYXQuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IGh0dHBzOi8vZ2l0aHViLmNvbS90aG9tMzExL2xpYm5sL2NvbW1pdC9jMTk0OGVjMjliOGRjZGM1OGQyZDkyNzAwYzMyNWFiZGVhYjExMWE2CisgbGliL2NhY2hlX21uZ3IuYyAgICAgICAgfCAgNSArKy0tLQorIGxpYi9maWJfbG9va3VwL2xvb2t1cC5jIHwgIDMgKystCisgbGliL2hhbmRsZXJzLmMgICAgICAgICAgfCAgNCArKy0tCisgbGliL21zZy5jICAgICAgICAgICAgICAgfCAgNCArKy0tCisgbGliL25sLmMgICAgICAgICAgICAgICAgfCAyNiArKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQorIGxpYi9yb3V0ZS9yb3V0ZV9vYmouYyAgIHwgIDMgKystCisgbGliL3NvY2tldC5jICAgICAgICAgICAgfCAzMyArKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyA3IGZpbGVzIGNoYW5nZWQsIDMwIGluc2VydGlvbnMoKyksIDQ4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliL2NhY2hlX21uZ3IuYyBiL2xpYi9jYWNoZV9tbmdyLmMKK2luZGV4IGI5ZWIzNDUuLjFmMjNlYjEgMTAwNjQ0CistLS0gYS9saWIvY2FjaGVfbW5nci5jCisrKysgYi9saWIvY2FjaGVfbW5nci5jCitAQCAtMzMsNiArMzMsNyBAQAorICAqLworIAorICNpbmNsdWRlIDxuZXRsaW5rLXByaXZhdGUvbmV0bGluay5oPgorKyNpbmNsdWRlIDxuZXRsaW5rLXByaXZhdGUvdXRpbHMuaD4KKyAjaW5jbHVkZSA8bmV0bGluay9uZXRsaW5rLmg+CisgI2luY2x1ZGUgPG5ldGxpbmsvY2FjaGUuaD4KKyAjaW5jbHVkZSA8bmV0bGluay91dGlscy5oPgorQEAgLTM5MiwxMCArMzkzLDggQEAgaW50IG5sX2NhY2hlX21uZ3JfcG9sbChzdHJ1Y3QgbmxfY2FjaGVfbW5nciAqbW5nciwgaW50IHRpbWVvdXQpCisgCXJldCA9IHBvbGwoJmZkcywgMSwgdGltZW91dCk7CisgCU5MX0RCRygzLCAiQ2FjaGUgbWFuYWdlciAlcCwgcG9sbCgpIHJldHVybmVkICVkXG4iLCBtbmdyLCByZXQpOworIAlpZiAocmV0IDwgMCkgeworLQkJY2hhciBidWZbNjRdOworLQorIAkJTkxfREJHKDQsICJubF9jYWNoZV9tbmdyX3BvbGwoJXApOiBwb2xsKCkgZmFpbGVkIHdpdGggJWQgKCVzKVxuIiwKKy0JCQltbmdyLCBlcnJubywgc3RyZXJyb3JfcihlcnJubywgYnVmLCBzaXplb2YoYnVmKSkpOworKwkJCW1uZ3IsIGVycm5vLCBubF9zdHJlcnJvcl9sKGVycm5vKSk7CisgCQlyZXR1cm4gLW5sX3N5c2VycjJubGVycihlcnJubyk7CisgCX0KKyAKK2RpZmYgLS1naXQgYS9saWIvZmliX2xvb2t1cC9sb29rdXAuYyBiL2xpYi9maWJfbG9va3VwL2xvb2t1cC5jCitpbmRleCA0M2I2MTI2Li5lZmM4NjJiIDEwMDY0NAorLS0tIGEvbGliL2ZpYl9sb29rdXAvbG9va3VwLmMKKysrKyBiL2xpYi9maWJfbG9va3VwL2xvb2t1cC5jCitAQCAtMTcsNiArMTcsNyBAQAorICAqLworIAorICNpbmNsdWRlIDxuZXRsaW5rLXByaXZhdGUvbmV0bGluay5oPgorKyNpbmNsdWRlIDxuZXRsaW5rLXByaXZhdGUvdXRpbHMuaD4KKyAjaW5jbHVkZSA8bmV0bGluay9uZXRsaW5rLmg+CisgI2luY2x1ZGUgPG5ldGxpbmsvYXR0ci5oPgorICNpbmNsdWRlIDxuZXRsaW5rL3V0aWxzLmg+CitAQCAtMTMzLDcgKzEzNCw3IEBAIHN0YXRpYyB2b2lkIHJlc3VsdF9kdW1wX2xpbmUoc3RydWN0IG5sX29iamVjdCAqb2JqLCBzdHJ1Y3QgbmxfZHVtcF9wYXJhbXMgKnApCisgCQkgICAgIG5sX3J0bnR5cGUyc3RyKHJlcy0+ZnJfdHlwZSwgYnVmLCBzaXplb2YoYnVmKSkpOworIAlubF9kdW1wKHAsICJzY29wZSAlcyBlcnJvciAlcyAoJWQpXG4iLAorIAkJcnRubF9zY29wZTJzdHIocmVzLT5mcl9zY29wZSwgYnVmLCBzaXplb2YoYnVmKSksCistCQlzdHJlcnJvcl9yKC1yZXMtPmZyX2Vycm9yLCBidWYsIHNpemVvZihidWYpKSwgcmVzLT5mcl9lcnJvcik7CisrCQlubF9zdHJlcnJvcl9sKC1yZXMtPmZyX2Vycm9yKSwgcmVzLT5mcl9lcnJvcik7CisgfQorIAorIHN0YXRpYyB2b2lkIHJlc3VsdF9kdW1wX2RldGFpbHMoc3RydWN0IG5sX29iamVjdCAqb2JqLCBzdHJ1Y3QgbmxfZHVtcF9wYXJhbXMgKnApCitkaWZmIC0tZ2l0IGEvbGliL2hhbmRsZXJzLmMgYi9saWIvaGFuZGxlcnMuYworaW5kZXggOTdhMGQ5Yy4uNGE0OGI5OSAxMDA2NDQKKy0tLSBhL2xpYi9oYW5kbGVycy5jCisrKysgYi9saWIvaGFuZGxlcnMuYworQEAgLTI2LDYgKzI2LDcgQEAKKyAgKi8KKyAKKyAjaW5jbHVkZSA8bmV0bGluay1wcml2YXRlL25ldGxpbmsuaD4KKysjaW5jbHVkZSA8bmV0bGluay1wcml2YXRlL3V0aWxzLmg+CisgI2luY2x1ZGUgPG5ldGxpbmsvbmV0bGluay5oPgorICNpbmNsdWRlIDxuZXRsaW5rL3V0aWxzLmg+CisgI2luY2x1ZGUgPG5ldGxpbmsvbXNnLmg+CitAQCAtNzksMTAgKzgwLDkgQEAgc3RhdGljIGludCBubF9lcnJvcl9oYW5kbGVyX3ZlcmJvc2Uoc3RydWN0IHNvY2thZGRyX25sICp3aG8sCisgCQkJCSAgICBzdHJ1Y3Qgbmxtc2dlcnIgKmUsIHZvaWQgKmFyZykKKyB7CisgCUZJTEUgKm9mZCA9IGFyZyA/IGFyZyA6IHN0ZGVycjsKKy0JY2hhciBidWZbMjU2XTsKKyAKKyAJZnByaW50ZihvZmQsICItLSBFcnJvciByZWNlaXZlZDogJXNcbi0tIE9yaWdpbmFsIG1lc3NhZ2U6ICIsCistCQlzdHJlcnJvcl9yKC1lLT5lcnJvciwgYnVmLCBzaXplb2YoYnVmKSkpOworKwkJbmxfc3RyZXJyb3JfbCgtZS0+ZXJyb3IpKTsKKyAJcHJpbnRfaGVhZGVyX2NvbnRlbnQob2ZkLCAmZS0+bXNnKTsKKyAJZnByaW50ZihvZmQsICJcbiIpOworIAorZGlmZiAtLWdpdCBhL2xpYi9tc2cuYyBiL2xpYi9tc2cuYworaW5kZXggZThhN2U5OS4uOWFmM2YzYSAxMDA2NDQKKy0tLSBhL2xpYi9tc2cuYworKysrIGIvbGliL21zZy5jCitAQCAtMjcsNiArMjcsNyBAQAorICAqLworIAorICNpbmNsdWRlIDxuZXRsaW5rLXByaXZhdGUvbmV0bGluay5oPgorKyNpbmNsdWRlIDxuZXRsaW5rLXByaXZhdGUvdXRpbHMuaD4KKyAjaW5jbHVkZSA8bmV0bGluay9uZXRsaW5rLmg+CisgI2luY2x1ZGUgPG5ldGxpbmsvdXRpbHMuaD4KKyAjaW5jbHVkZSA8bmV0bGluay9jYWNoZS5oPgorQEAgLTkxMywxMSArOTE0LDEwIEBAIHN0YXRpYyB2b2lkIGR1bXBfZXJyb3JfbXNnKHN0cnVjdCBubF9tc2cgKm1zZywgRklMRSAqb2ZkKQorIAlmcHJpbnRmKG9mZCwgIiAgW0VSUk9STVNHXSAlenUgb2N0ZXRzXG4iLCBzaXplb2YoKmVycikpOworIAorIAlpZiAobmxtc2dfbGVuKGhkcikgPj0gc2l6ZW9mKCplcnIpKSB7CistCQljaGFyIGJ1ZlsyNTZdOworIAkJc3RydWN0IG5sX21zZyAqZXJybXNnOworIAorIAkJZnByaW50ZihvZmQsICIgICAgLmVycm9yID0gJWQgXCIlc1wiXG4iLCBlcnItPmVycm9yLAorLQkJCXN0cmVycm9yX3IoLWVyci0+ZXJyb3IsIGJ1Ziwgc2l6ZW9mKGJ1ZikpKTsKKysJCQlubF9zdHJlcnJvcl9sKC1lcnItPmVycm9yKSk7CisgCQlmcHJpbnRmKG9mZCwgIiAgW09SSUdJTkFMIE1FU1NBR0VdICV6dSBvY3RldHNcbiIsIHNpemVvZigqaGRyKSk7CisgCisgCQllcnJtc2cgPSBubG1zZ19pbmhlcml0KCZlcnItPm1zZyk7CitkaWZmIC0tZ2l0IGEvbGliL25sLmMgYi9saWIvbmwuYworaW5kZXggMTIzZjY1Ny4uYTQ1YzNlYSAxMDA2NDQKKy0tLSBhL2xpYi9ubC5jCisrKysgYi9saWIvbmwuYworQEAgLTI3LDYgKzI3LDcgQEAKKyAKKyAjaW5jbHVkZSA8bmV0bGluay1wcml2YXRlL25ldGxpbmsuaD4KKyAjaW5jbHVkZSA8bmV0bGluay1wcml2YXRlL3NvY2tldC5oPgorKyNpbmNsdWRlIDxuZXRsaW5rLXByaXZhdGUvdXRpbHMuaD4KKyAjaW5jbHVkZSA8bmV0bGluay9uZXRsaW5rLmg+CisgI2luY2x1ZGUgPG5ldGxpbmsvdXRpbHMuaD4KKyAjaW5jbHVkZSA8bmV0bGluay9oYW5kbGVycy5oPgorQEAgLTEwNSw3ICsxMDYsNiBAQCBpbnQgbmxfY29ubmVjdChzdHJ1Y3Qgbmxfc29jayAqc2ssIGludCBwcm90b2NvbCkKKyAJaW50IGVycnN2OworIAlzb2NrbGVuX3QgYWRkcmxlbjsKKyAJc3RydWN0IHNvY2thZGRyX25sIGxvY2FsID0geyAwIH07CistCWNoYXIgYnVmWzY0XTsKKyAJaW50IHRyeV9iaW5kID0gMTsKKyAKKyAjaWZkZWYgU09DS19DTE9FWEVDCitAQCAtMTE5LDcgKzExOSw3IEBAIGludCBubF9jb25uZWN0KHN0cnVjdCBubF9zb2NrICpzaywgaW50IHByb3RvY29sKQorIAlpZiAoc2stPnNfZmQgPCAwKSB7CisgCQllcnJzdiA9IGVycm5vOworIAkJTkxfREJHKDQsICJubF9jb25uZWN0KCVwKTogc29ja2V0KCkgZmFpbGVkIHdpdGggJWQgKCVzKVxuIiwgc2ssIGVycnN2LAorLQkJCXN0cmVycm9yX3IoZXJyc3YsIGJ1Ziwgc2l6ZW9mKGJ1ZikpKTsKKysJCQlubF9zdHJlcnJvcl9sKGVycnN2KSk7CisgCQllcnIgPSAtbmxfc3lzZXJyMm5sZXJyKGVycnN2KTsKKyAJCWdvdG8gZXJyb3V0OworIAl9CitAQCAtMTU4LDcgKzE1OCw3IEBAIGludCBubF9jb25uZWN0KHN0cnVjdCBubF9zb2NrICpzaywgaW50IHByb3RvY29sKQorIAkJCQlfbmxfc29ja2V0X3VzZWRfcG9ydHNfc2V0KHVzZWRfcG9ydHMsIHBvcnQpOworIAkJCX0gZWxzZSB7CisgCQkJCU5MX0RCRyg0LCAibmxfY29ubmVjdCglcCk6IGJpbmQoKSBmb3IgcG9ydCAldSBmYWlsZWQgd2l0aCAlZCAoJXMpXG4iLAorLQkJCQkJc2ssICh1bnNpZ25lZCkgcG9ydCwgZXJyc3YsIHN0cmVycm9yX3IoZXJyc3YsIGJ1Ziwgc2l6ZW9mKGJ1ZikpKTsKKysJCQkJCXNrLCAodW5zaWduZWQpIHBvcnQsIGVycnN2LCBubF9zdHJlcnJvcl9sKGVycnN2KSk7CisgCQkJCV9ubF9zb2NrZXRfdXNlZF9wb3J0c19yZWxlYXNlX2FsbCh1c2VkX3BvcnRzKTsKKyAJCQkJZXJyID0gLW5sX3N5c2VycjJubGVycihlcnJzdik7CisgCQkJCWdvdG8gZXJyb3V0OworQEAgLTE3Miw3ICsxNzIsNyBAQCBpbnQgbmxfY29ubmVjdChzdHJ1Y3Qgbmxfc29jayAqc2ssIGludCBwcm90b2NvbCkKKyAJCWlmIChlcnIgIT0gMCkgeworIAkJCWVycnN2ID0gZXJybm87CisgCQkJTkxfREJHKDQsICJubF9jb25uZWN0KCVwKTogYmluZCgpIGZhaWxlZCB3aXRoICVkICglcylcbiIsCistCQkJCXNrLCBlcnJzdiwgc3RyZXJyb3JfcihlcnJzdiwgYnVmLCBzaXplb2YoYnVmKSkpOworKwkJCQlzaywgZXJyc3YsIG5sX3N0cmVycm9yX2woZXJyc3YpKTsKKyAJCQllcnIgPSAtbmxfc3lzZXJyMm5sZXJyKGVycnN2KTsKKyAJCQlnb3RvIGVycm91dDsKKyAJCX0KK0BAIC0xODMsNyArMTgzLDcgQEAgaW50IG5sX2Nvbm5lY3Qoc3RydWN0IG5sX3NvY2sgKnNrLCBpbnQgcHJvdG9jb2wpCisgCQkJICAmYWRkcmxlbik7CisgCWlmIChlcnIgPCAwKSB7CisgCQlOTF9EQkcoNCwgIm5sX2Nvbm5lY3QoJXApOiBnZXRzb2NrbmFtZSgpIGZhaWxlZCB3aXRoICVkICglcylcbiIsCistCQkJc2ssIGVycm5vLCBzdHJlcnJvcl9yKGVycm5vLCBidWYsIHNpemVvZihidWYpKSk7CisrCQkJc2ssIGVycm5vLCBubF9zdHJlcnJvcl9sKGVycm5vKSk7CisgCQllcnIgPSAtbmxfc3lzZXJyMm5sZXJyKGVycm5vKTsKKyAJCWdvdG8gZXJyb3V0OworIAl9CitAQCAtMjgwLDEwICsyODAsOCBAQCBpbnQgbmxfc2VuZHRvKHN0cnVjdCBubF9zb2NrICpzaywgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSkKKyAJcmV0ID0gc2VuZHRvKHNrLT5zX2ZkLCBidWYsIHNpemUsIDAsIChzdHJ1Y3Qgc29ja2FkZHIgKikKKyAJCSAgICAgJnNrLT5zX3BlZXIsIHNpemVvZihzay0+c19wZWVyKSk7CisgCWlmIChyZXQgPCAwKSB7CistCQljaGFyIGVycmJ1Zls2NF07CistCisgCQlOTF9EQkcoNCwgIm5sX3NlbmR0byglcCk6IHNlbmR0bygpIGZhaWxlZCB3aXRoICVkICglcylcbiIsCistCQkJc2ssIGVycm5vLCBzdHJlcnJvcl9yKGVycm5vLCBlcnJidWYsIHNpemVvZihlcnJidWYpKSk7CisrCQkJc2ssIGVycm5vLCBubF9zdHJlcnJvcl9sKGVycm5vKSk7CisgCQlyZXR1cm4gLW5sX3N5c2VycjJubGVycihlcnJubyk7CisgCX0KKyAKK0BAIC0zNDMsMTAgKzM0MSw4IEBAIGludCBubF9zZW5kbXNnKHN0cnVjdCBubF9zb2NrICpzaywgc3RydWN0IG5sX21zZyAqbXNnLCBzdHJ1Y3QgbXNnaGRyICpoZHIpCisgCisgCXJldCA9IHNlbmRtc2coc2stPnNfZmQsIGhkciwgMCk7CisgCWlmIChyZXQgPCAwKSB7CistCQljaGFyIGVycmJ1Zls2NF07CistCisgCQlOTF9EQkcoNCwgIm5sX3NlbmRtc2coJXApOiBzZW5kbXNnKCkgZmFpbGVkIHdpdGggJWQgKCVzKVxuIiwKKy0JCQlzaywgZXJybm8sIHN0cmVycm9yX3IoZXJybm8sIGVycmJ1Ziwgc2l6ZW9mKGVycmJ1ZikpKTsKKysJCQlzaywgZXJybm8sIG5sX3N0cmVycm9yX2woZXJybm8pKTsKKyAJCXJldHVybiAtbmxfc3lzZXJyMm5sZXJyKGVycm5vKTsKKyAJfQorIAorQEAgLTcwNiwxNSArNzAyLDEzIEBAIHJldHJ5OgorIAkJZ290byBhYm9ydDsKKyAJfQorIAlpZiAobiA8IDApIHsKKy0JCWNoYXIgZXJyYnVmWzY0XTsKKy0KKyAJCWlmIChlcnJubyA9PSBFSU5UUikgeworIAkJCU5MX0RCRygzLCAicmVjdm1zZygpIHJldHVybmVkIEVJTlRSLCByZXRyeWluZ1xuIik7CisgCQkJZ290byByZXRyeTsKKyAJCX0KKyAKKyAJCU5MX0RCRyg0LCAibmxfc2VuZG1zZyglcCk6IG5sX3JlY3YoKSBmYWlsZWQgd2l0aCAlZCAoJXMpXG4iLAorLQkJCXNrLCBlcnJubywgc3RyZXJyb3JfcihlcnJubywgZXJyYnVmLCBzaXplb2YoZXJyYnVmKSkpOworKwkJCXNrLCBlcnJubywgbmxfc3RyZXJyb3JfbChlcnJubykpOworIAkJcmV0dmFsID0gLW5sX3N5c2VycjJubGVycihlcnJubyk7CisgCQlnb3RvIGFib3J0OworIAl9CitAQCAtOTgwLDEwICs5NzQsOCBAQCBjb250aW51ZV9yZWFkaW5nOgorIAkJCQkJZ290byBvdXQ7CisgCQkJCX0KKyAJCQl9IGVsc2UgaWYgKGUtPmVycm9yKSB7CistCQkJCWNoYXIgYnVmWzY0XTsKKy0KKyAJCQkJTkxfREJHKDQsICJyZWN2bXNncyglcCk6IFJUTkVUTElOSyByZXNwb25kZWQgd2l0aCAlZCAoJXMpXG4iLAorLQkJCQkJc2ssIC1lLT5lcnJvciwgc3RyZXJyb3JfcigtZS0+ZXJyb3IsIGJ1Ziwgc2l6ZW9mKGJ1ZikpKTsKKysJCQkJCXNrLCAtZS0+ZXJyb3IsIG5sX3N0cmVycm9yX2woLWUtPmVycm9yKSk7CisgCisgCQkJCS8qIEVycm9yIG1lc3NhZ2UgcmVwb3J0ZWQgYmFjayBmcm9tIGtlcm5lbC4gKi8KKyAJCQkJaWYgKGNiLT5jYl9lcnIpIHsKK2RpZmYgLS1naXQgYS9saWIvcm91dGUvcm91dGVfb2JqLmMgYi9saWIvcm91dGUvcm91dGVfb2JqLmMKK2luZGV4IDczNDdlZDIuLjIxYjY3YjEgMTAwNjQ0CistLS0gYS9saWIvcm91dGUvcm91dGVfb2JqLmMKKysrKyBiL2xpYi9yb3V0ZS9yb3V0ZV9vYmouYworQEAgLTMxLDYgKzMxLDcgQEAKKyAgKi8KKyAKKyAjaW5jbHVkZSA8bmV0bGluay1wcml2YXRlL25ldGxpbmsuaD4KKysjaW5jbHVkZSA8bmV0bGluay1wcml2YXRlL3V0aWxzLmg+CisgI2luY2x1ZGUgPG5ldGxpbmsvbmV0bGluay5oPgorICNpbmNsdWRlIDxuZXRsaW5rL2NhY2hlLmg+CisgI2luY2x1ZGUgPG5ldGxpbmsvdXRpbHMuaD4KK0BAIC0yNTksNyArMjYwLDcgQEAgc3RhdGljIHZvaWQgcm91dGVfZHVtcF9kZXRhaWxzKHN0cnVjdCBubF9vYmplY3QgKmEsIHN0cnVjdCBubF9kdW1wX3BhcmFtcyAqcCkKKyAJaWYgKChyLT5jZV9tYXNrICYgUk9VVEVfQVRUUl9DQUNIRUlORk8pICYmIHItPnJ0X2NhY2hlaW5mby5ydGNpX2Vycm9yKSB7CisgCQlubF9kdW1wX2xpbmUocCwgIiAgICBjYWNoZWluZm8gZXJyb3IgJWQgKCVzKVxuIiwKKyAJCQlyLT5ydF9jYWNoZWluZm8ucnRjaV9lcnJvciwKKy0JCQlzdHJlcnJvcl9yKC1yLT5ydF9jYWNoZWluZm8ucnRjaV9lcnJvciwgYnVmLCBzaXplb2YoYnVmKSkpOworKwkJCW5sX3N0cmVycm9yX2woLXItPnJ0X2NhY2hlaW5mby5ydGNpX2Vycm9yKSk7CisgCX0KKyAKKyAJaWYgKHItPmNlX21hc2sgJiBST1VURV9BVFRSX01FVFJJQ1MpIHsKK2RpZmYgLS1naXQgYS9saWIvc29ja2V0LmMgYi9saWIvc29ja2V0LmMKK2luZGV4IDk3YjJmNjkuLjU1MTUzYjQgMTAwNjQ0CistLS0gYS9saWIvc29ja2V0LmMKKysrKyBiL2xpYi9zb2NrZXQuYworQEAgLTMzLDYgKzMzLDcgQEAKKyAKKyAjaW5jbHVkZSA8bmV0bGluay1wcml2YXRlL25ldGxpbmsuaD4KKyAjaW5jbHVkZSA8bmV0bGluay1wcml2YXRlL3NvY2tldC5oPgorKyNpbmNsdWRlIDxuZXRsaW5rLXByaXZhdGUvdXRpbHMuaD4KKyAjaW5jbHVkZSA8bmV0bGluay9uZXRsaW5rLmg+CisgI2luY2x1ZGUgPG5ldGxpbmsvdXRpbHMuaD4KKyAjaW5jbHVkZSA8bmV0bGluay9oYW5kbGVycy5oPgorQEAgLTQ0OSwxMSArNDUwLDkgQEAgaW50IG5sX3NvY2tldF9hZGRfbWVtYmVyc2hpcHMoc3RydWN0IG5sX3NvY2sgKnNrLCBpbnQgZ3JvdXAsIC4uLikKKyAJCWVyciA9IHNldHNvY2tvcHQoc2stPnNfZmQsIFNPTF9ORVRMSU5LLCBORVRMSU5LX0FERF9NRU1CRVJTSElQLAorIAkJCQkJCSAmZ3JvdXAsIHNpemVvZihncm91cCkpOworIAkJaWYgKGVyciA8IDApIHsKKy0JCQljaGFyIGJ1Zls2NF07CistCisgCQkJdmFfZW5kKGFwKTsKKyAJCQlOTF9EQkcoNCwgIm5sX3NvY2tldF9hZGRfbWVtYmVyc2hpcHMoJXApOiBzZXRzb2Nrb3B0KCkgZmFpbGVkIHdpdGggJWQgKCVzKVxuIiwKKy0JCQkJc2ssIGVycm5vLCBzdHJlcnJvcl9yKGVycm5vLCBidWYsIHNpemVvZihidWYpKSk7CisrCQkJCXNrLCBlcnJubywgbmxfc3RyZXJyb3JfbChlcnJubykpOworIAkJCXJldHVybiAtbmxfc3lzZXJyMm5sZXJyKGVycm5vKTsKKyAJCX0KKyAKK0BAIC01MDEsMTEgKzUwMCw5IEBAIGludCBubF9zb2NrZXRfZHJvcF9tZW1iZXJzaGlwcyhzdHJ1Y3Qgbmxfc29jayAqc2ssIGludCBncm91cCwgLi4uKQorIAkJZXJyID0gc2V0c29ja29wdChzay0+c19mZCwgU09MX05FVExJTkssIE5FVExJTktfRFJPUF9NRU1CRVJTSElQLAorIAkJCQkJCSAmZ3JvdXAsIHNpemVvZihncm91cCkpOworIAkJaWYgKGVyciA8IDApIHsKKy0JCQljaGFyIGJ1Zls2NF07CistCisgCQkJdmFfZW5kKGFwKTsKKyAJCQlOTF9EQkcoNCwgIm5sX3NvY2tldF9kcm9wX21lbWJlcnNoaXBzKCVwKTogc2V0c29ja29wdCgpIGZhaWxlZCB3aXRoICVkICglcylcbiIsCistCQkJCXNrLCBlcnJubywgc3RyZXJyb3JfcihlcnJubywgYnVmLCBzaXplb2YoYnVmKSkpOworKwkJCQlzaywgZXJybm8sIG5sX3N0cmVycm9yX2woZXJybm8pKTsKKyAJCQlyZXR1cm4gLW5sX3N5c2VycjJubGVycihlcnJubyk7CisgCQl9CisgCitAQCAtNjE5LDcgKzYxNiw2IEBAIGludCBubF9zb2NrZXRfc2V0X2ZkKHN0cnVjdCBubF9zb2NrICpzaywgaW50IHByb3RvY29sLCBpbnQgZmQpCisgeworIAlpbnQgZXJyID0gMDsKKyAJc29ja2xlbl90IGFkZHJsZW47CistCWNoYXIgYnVmWzY0XTsKKyAJc3RydWN0IHNvY2thZGRyX25sIGxvY2FsID0geyAwIH07CisgCWludCBzb190eXBlID0gLTEsIHNvX3Byb3RvY29sID0gLTE7CisgCitAQCAtNjMzLDcgKzYyOSw3IEBAIGludCBubF9zb2NrZXRfc2V0X2ZkKHN0cnVjdCBubF9zb2NrICpzaywgaW50IHByb3RvY29sLCBpbnQgZmQpCisgCSAgICAgICAgICAgICAgICAgICZhZGRybGVuKTsKKyAJaWYgKGVyciA8IDApIHsKKyAJCU5MX0RCRyg0LCAibmxfc29ja2V0X3NldF9mZCglcCwlZCk6IGdldHNvY2tuYW1lKCkgZmFpbGVkIHdpdGggJWQgKCVzKVxuIiwKKy0JCSAgICAgICBzaywgZmQsIGVycm5vLCBzdHJlcnJvcl9yKGVycm5vLCBidWYsIHNpemVvZihidWYpKSk7CisrCQkgICAgICAgc2ssIGZkLCBlcnJubywgbmxfc3RyZXJyb3JfbChlcnJubykpOworIAkJcmV0dXJuIC1ubF9zeXNlcnIybmxlcnIoZXJybm8pOworIAl9CisgCWlmIChhZGRybGVuICE9IHNpemVvZihsb2NhbCkpCitAQCAtNjQ4LDcgKzY0NCw3IEBAIGludCBubF9zb2NrZXRfc2V0X2ZkKHN0cnVjdCBubF9zb2NrICpzaywgaW50IHByb3RvY29sLCBpbnQgZmQpCisgCWVyciA9IGdldHNvY2tvcHQoZmQsIFNPTF9TT0NLRVQsIFNPX1RZUEUsICZzb190eXBlLCAmYWRkcmxlbik7CisgCWlmIChlcnIgPCAwKSB7CisgCQlOTF9EQkcoNCwgIm5sX3NvY2tldF9zZXRfZmQoJXAsJWQpOiBnZXRzb2Nrb3B0KCkgZm9yIFNPX1RZUEUgZmFpbGVkIHdpdGggJWQgKCVzKVxuIiwKKy0JCSAgICAgICBzaywgZmQsIGVycm5vLCBzdHJlcnJvcl9yKGVycm5vLCBidWYsIHNpemVvZihidWYpKSk7CisrCQkgICAgICAgc2ssIGZkLCBlcnJubywgbmxfc3RyZXJyb3JfbChlcnJubykpOworIAkJcmV0dXJuIC1ubF9zeXNlcnIybmxlcnIoZXJybm8pOworIAl9CisgCWlmIChhZGRybGVuICE9IHNpemVvZihzb190eXBlKSkKK0BAIC02NjYsNyArNjYyLDcgQEAgaW50IG5sX3NvY2tldF9zZXRfZmQoc3RydWN0IG5sX3NvY2sgKnNrLCBpbnQgcHJvdG9jb2wsIGludCBmZCkKKyAJCWlmIChlcnJubyA9PSBFTk9QUk9UT09QVCkKKyAJCQlnb3RvIG5vX3NvX3Byb3RvY29sOworIAkJTkxfREJHKDQsICJubF9zb2NrZXRfc2V0X2ZkKCVwLCVkKTogZ2V0c29ja29wdCgpIGZvciBTT19QUk9UT0NPTCBmYWlsZWQgd2l0aCAlZCAoJXMpXG4iLAorLQkJICAgICAgIHNrLCBmZCwgZXJybm8sIHN0cmVycm9yX3IoZXJybm8sIGJ1Ziwgc2l6ZW9mKGJ1ZikpKTsKKysJCSAgICAgICBzaywgZmQsIGVycm5vLCBubF9zdHJlcnJvcl9sKGVycm5vKSk7CisgCQlyZXR1cm4gLW5sX3N5c2VycjJubGVycihlcnJubyk7CisgCX0KKyAJaWYgKGFkZHJsZW4gIT0gc2l6ZW9mKHNvX3Byb3RvY29sKSkKK0BAIC03MDksMTAgKzcwNSw4IEBAIGludCBubF9zb2NrZXRfc2V0X25vbmJsb2NraW5nKGNvbnN0IHN0cnVjdCBubF9zb2NrICpzaykKKyAJCXJldHVybiAtTkxFX0JBRF9TT0NLOworIAorIAlpZiAoZmNudGwoc2stPnNfZmQsIEZfU0VURkwsIE9fTk9OQkxPQ0spIDwgMCkgeworLQkJY2hhciBidWZbNjRdOworLQorIAkJTkxfREJHKDQsICJubF9zb2NrZXRfc2V0X25vbmJsb2NraW5nKCVwKTogZmNudGwoKSBmYWlsZWQgd2l0aCAlZCAoJXMpXG4iLAorLQkJCXNrLCBlcnJubywgc3RyZXJyb3JfcihlcnJubywgYnVmLCBzaXplb2YoYnVmKSkpOworKwkJCXNrLCBlcnJubywgbmxfc3RyZXJyb3JfbChlcnJubykpOworIAkJcmV0dXJuIC1ubF9zeXNlcnIybmxlcnIoZXJybm8pOworIAl9CisgCitAQCAtODEzLDcgKzgwNyw2IEBAIGludCBubF9zb2NrZXRfbW9kaWZ5X2Vycl9jYihzdHJ1Y3Qgbmxfc29jayAqc2ssIGVudW0gbmxfY2Jfa2luZCBraW5kLAorIGludCBubF9zb2NrZXRfc2V0X2J1ZmZlcl9zaXplKHN0cnVjdCBubF9zb2NrICpzaywgaW50IHJ4YnVmLCBpbnQgdHhidWYpCisgeworIAlpbnQgZXJyOworLQljaGFyIGJ1Zls2NF07CisgCisgCWlmIChyeGJ1ZiA8PSAwKQorIAkJcnhidWYgPSAzMjc2ODsKK0BAIC04MjgsNyArODIxLDcgQEAgaW50IG5sX3NvY2tldF9zZXRfYnVmZmVyX3NpemUoc3RydWN0IG5sX3NvY2sgKnNrLCBpbnQgcnhidWYsIGludCB0eGJ1ZikKKyAJCQkgJnR4YnVmLCBzaXplb2YodHhidWYpKTsKKyAJaWYgKGVyciA8IDApIHsKKyAJCU5MX0RCRyg0LCAibmxfc29ja2V0X3NldF9idWZmZXJfc2l6ZSglcCk6IHNldHNvY2tvcHQoKSBmYWlsZWQgd2l0aCAlZCAoJXMpXG4iLAorLQkJCXNrLCBlcnJubywgc3RyZXJyb3JfcihlcnJubywgYnVmLCBzaXplb2YoYnVmKSkpOworKwkJCXNrLCBlcnJubywgbmxfc3RyZXJyb3JfbChlcnJubykpOworIAkJcmV0dXJuIC1ubF9zeXNlcnIybmxlcnIoZXJybm8pOworIAl9CisgCitAQCAtODM2LDcgKzgyOSw3IEBAIGludCBubF9zb2NrZXRfc2V0X2J1ZmZlcl9zaXplKHN0cnVjdCBubF9zb2NrICpzaywgaW50IHJ4YnVmLCBpbnQgdHhidWYpCisgCQkJICZyeGJ1Ziwgc2l6ZW9mKHJ4YnVmKSk7CisgCWlmIChlcnIgPCAwKSB7CisgCQlOTF9EQkcoNCwgIm5sX3NvY2tldF9zZXRfYnVmZmVyX3NpemUoJXApOiBzZXRzb2Nrb3B0KCkgZmFpbGVkIHdpdGggJWQgKCVzKVxuIiwKKy0JCQlzaywgZXJybm8sIHN0cmVycm9yX3IoZXJybm8sIGJ1Ziwgc2l6ZW9mKGJ1ZikpKTsKKysJCQlzaywgZXJybm8sIG5sX3N0cmVycm9yX2woZXJybm8pKTsKKyAJCXJldHVybiAtbmxfc3lzZXJyMm5sZXJyKGVycm5vKTsKKyAJfQorIAorQEAgLTg5MCwxMCArODgzLDggQEAgaW50IG5sX3NvY2tldF9zZXRfcGFzc2NyZWQoc3RydWN0IG5sX3NvY2sgKnNrLCBpbnQgc3RhdGUpCisgCWVyciA9IHNldHNvY2tvcHQoc2stPnNfZmQsIFNPTF9TT0NLRVQsIFNPX1BBU1NDUkVELAorIAkJCSAmc3RhdGUsIHNpemVvZihzdGF0ZSkpOworIAlpZiAoZXJyIDwgMCkgeworLQkJY2hhciBidWZbNjRdOworLQorIAkJTkxfREJHKDQsICJubF9zb2NrZXRfc2V0X3Bhc3NjcmVkKCVwKTogc2V0c29ja29wdCgpIGZhaWxlZCB3aXRoICVkICglcylcbiIsCistCQkJc2ssIGVycm5vLCBzdHJlcnJvcl9yKGVycm5vLCBidWYsIHNpemVvZihidWYpKSk7CisrCQkJc2ssIGVycm5vLCBubF9zdHJlcnJvcl9sKGVycm5vKSk7CisgCQlyZXR1cm4gLW5sX3N5c2VycjJubGVycihlcnJubyk7CisgCX0KKyAKK0BAIC05MjIsMTAgKzkxMyw4IEBAIGludCBubF9zb2NrZXRfcmVjdl9wa3RpbmZvKHN0cnVjdCBubF9zb2NrICpzaywgaW50IHN0YXRlKQorIAllcnIgPSBzZXRzb2Nrb3B0KHNrLT5zX2ZkLCBTT0xfTkVUTElOSywgTkVUTElOS19QS1RJTkZPLAorIAkJCSAmc3RhdGUsIHNpemVvZihzdGF0ZSkpOworIAlpZiAoZXJyIDwgMCkgeworLQkJY2hhciBidWZbNjRdOworLQorIAkJTkxfREJHKDQsICJubF9zb2NrZXRfcmVjdl9wa3RpbmZvKCVwKTogc2V0c29ja29wdCgpIGZhaWxlZCB3aXRoICVkICglcylcbiIsCistCQkJc2ssIGVycm5vLCBzdHJlcnJvcl9yKGVycm5vLCBidWYsIHNpemVvZihidWYpKSk7CisrCQkJc2ssIGVycm5vLCBubF9zdHJlcnJvcl9sKGVycm5vKSk7CisgCQlyZXR1cm4gLW5sX3N5c2VycjJubGVycihlcnJubyk7CisgCX0KKyAKKy0tIAorMi45LjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm5sL2xpYm5sLzAwMDMtc3JjLXN3aXRjaC10by11c2luZy1zdHJlcnJvcl9sLWluc3RlYWQtb2Ytc3RyZXJyb3Jfci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJubC9saWJubC8wMDAzLXNyYy1zd2l0Y2gtdG8tdXNpbmctc3RyZXJyb3JfbC1pbnN0ZWFkLW9mLXN0cmVycm9yX3IucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTBmNWE3OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJubC9saWJubC8wMDAzLXNyYy1zd2l0Y2gtdG8tdXNpbmctc3RyZXJyb3JfbC1pbnN0ZWFkLW9mLXN0cmVycm9yX3IucGF0Y2gKQEAgLTAsMCArMSw4MiBAQAorRnJvbSA2YzJkMTExMTc3ZTkxMTg0MDczYzQ0ZjgzZDRhNjE4MmFhYmEwNmQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0FuZHI9QzM9QTk9MjBEcmFzemlrPz0gPGFkcmFzemlrQHR5Y29pbnQuY29tPgorRGF0ZTogVGh1LCAyNSBBdWcgMjAxNiAxMzoxNTowMSArMDEwMAorU3ViamVjdDogW1BBVENIIDMvM10gc3JjOiBzd2l0Y2ggdG8gdXNpbmcgc3RyZXJyb3JfbCgpIGluc3RlYWQgb2Ygc3RyZXJyb3JfcigpCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK2dsaWJjIHByb3ZpZGVzIHR3byB2ZXJzaW9ucyBvZiBzdHJlcnJvcl9yKCksIHdoaWNoCitjYW4gYmUgY2hvc2VuIGJldHdlZW4gdXNpbmcgZmVhdHVyZSB0ZXN0IG1hY3JvcworX0dOVV9TT1VSQ0UgYW5kIF9QT1NJWF9DX1NPVVJDRS4gbGlibmwgaXMgYnVpbHQgdXNpbmcKK3RoZSBmb3JtZXIsIGhlbmNlIHdlIGdldCB0aGUgZ2xpYmMgc3BlY2lhbCB2ZXJzaW9uLAorYW5kIGFsbCBjb2RlIHNvIGZhciBoYXMgYmVlbiB3cml0dGVuIGZvciB0aGlzLgorCitPdGhlciBDIGxpYnJhcmllcyBsaWtlIG11c2wgb24gdGhlIG90aGVyIGhhbmQgb25seSB0cnkKK3RvIGJlIHBvc2l4IGNvbXBsaWFudCwgYW5kIG9ubHkgZXZlciBwcm92aWRlIHRoZSBwb3NpeAordmVyc2lvbiBvZiBzdHJlcnJvcl9yKCksIHdoaWNoIGhhcyBhIGRpZmZlcmVudCBzaWduYXR1cmUuCisKK1VzZXMgaW4gbGlibmwgaGVuY2UgZ2VuZXJhbGx5IGNhdXNlIHByaW50ZigpIG9mIGFuICppbnQqCit3aXRoIGEgKnN0cmluZyBmb3JtYXQqIHNwZWNpZmllciBmb3IgdGhhdCByZWFzb24uCisKK0FkZGl0aW9uYWxseSwgc3RyZXJyb3JfcigpIGhhcyBiZWVuIGRlcHJlY2F0ZWQ6CisgIGh0dHA6Ly9hdXN0aW5ncm91cGJ1Z3MubmV0L3ZpZXcucGhwP2lkPTY1NQorCitTd2l0Y2ggdG8gdXNpbmcgc3RyZXJyb3JfbCgpLgorCitTaWduZWQtb2ZmLWJ5OiBBbmRyw6kgRHJhc3ppayA8YWRyYXN6aWtAdHljb2ludC5jb20+CitSZXZpZXdlZC1ieTogU3RlcGhhbmUgQXlvdHRlIDxzYXlvdHRlQHR5Y29pbnQuY29tPgorU2lnbmVkLW9mZi1ieTogVGhvbWFzIEhhbGxlciA8dGhhbGxlckByZWRoYXQuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IGh0dHBzOi8vZ2l0aHViLmNvbS90aG9tMzExL2xpYm5sL2NvbW1pdC82YzJkMTExMTc3ZTkxMTg0MDczYzQ0ZjgzZDRhNjE4MmFhYmEwNmQ3Cisgc3JjL2xpYi91dGlscy5jIHwgMjAgKysrKysrKysrKysrKysrKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9saWIvdXRpbHMuYyBiL3NyYy9saWIvdXRpbHMuYworaW5kZXggNDY3YWFlZC4uNTg3OGYyNyAxMDA2NDQKKy0tLSBhL3NyYy9saWIvdXRpbHMuYworKysrIGIvc3JjL2xpYi91dGlscy5jCitAQCAtMjIsNiArMjIsNyBAQAorICAqLworIAorICNpbmNsdWRlIDxuZXRsaW5rL2NsaS91dGlscy5oPgorKyNpbmNsdWRlIDxsb2NhbGUuaD4KKyAKKyAvKioKKyAgKiBQYXJzZSBhIHRleHQgYmFzZWQgMzIgYml0IHVuc2lnbmVkIGludGVnZXIgYXJndW1lbnQKK0BAIC03MCw3ICs3MSw2IEBAIHZvaWQgbmxfY2xpX3ByaW50X3ZlcnNpb24odm9pZCkKKyB2b2lkIG5sX2NsaV9mYXRhbChpbnQgZXJyLCBjb25zdCBjaGFyICpmbXQsIC4uLikKKyB7CisgCXZhX2xpc3QgYXA7CistCWNoYXIgYnVmWzI1Nl07CisgCisgCWZwcmludGYoc3RkZXJyLCAiRXJyb3I6ICIpOworIAorQEAgLTc5LDggKzc5LDIyIEBAIHZvaWQgbmxfY2xpX2ZhdGFsKGludCBlcnIsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQorIAkJdmZwcmludGYoc3RkZXJyLCBmbXQsIGFwKTsKKyAJCXZhX2VuZChhcCk7CisgCQlmcHJpbnRmKHN0ZGVyciwgIlxuIik7CistCX0gZWxzZQorLQkJZnByaW50ZihzdGRlcnIsICIlc1xuIiwgc3RyZXJyb3JfcihlcnIsIGJ1Ziwgc2l6ZW9mKGJ1ZikpKTsKKysJfSBlbHNlIHsKKysJCWNoYXIgKmJ1ZjsKKysJCWxvY2FsZV90IGxvYyA9IG5ld2xvY2FsZShMQ19NRVNTQUdFU19NQVNLLCAiIiwgKGxvY2FsZV90KTApOworKwkJaWYgKGxvYyA9PSAobG9jYWxlX3QpMCkgeworKwkJCWlmIChlcnJubyA9PSBFTk9FTlQpCisrCQkJCWxvYyA9IG5ld2xvY2FsZShMQ19NRVNTQUdFU19NQVNLLAorKwkJCQkJCSJQT1NJWCIsIChsb2NhbGVfdCkwKTsKKysJCQlpZiAobG9jID09IChsb2NhbGVfdCkwKQorKwkJCQlidWYgPSAibmV3bG9jYWxlKCkgZmFpbGVkIjsKKysJCX0KKysJCWlmIChsb2MgIT0gKGxvY2FsZV90KTApCisrCQkJYnVmID0gc3RyZXJyb3JfbChlcnIsIGxvYyk7CisrCQlmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBidWYpOworKwkJaWYgKGxvYyAhPSAobG9jYWxlX3QpMCkKKysJCQlmcmVlbG9jYWxlKGxvYyk7CisrCX0KKyAKKyAJZXhpdChhYnMoZXJyKSk7CisgfQorLS0gCisyLjkuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlibmwvbGlibmxfMy4yLjI1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm5sL2xpYm5sXzMuMi4yNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FiZTg0MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlibmwvbGlibmxfMy4yLjI1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGxpYnJhcnkgZm9yIGFwcGxpY2F0aW9ucyBkZWFsaW5nIHdpdGggbmV0bGluayBzb2NrZXRzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5pbmZyYWRlYWQub3JnL350Z3IvbGlibmwvIgotU0VDVElPTiA9ICJsaWJzL25ldHdvcmsiCi0KLVBFID0gIjEiCi1QUiA9ICJyMSIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgotCi1ERVBFTkRTID0gImZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmluZnJhZGVhZC5vcmcvfnRnci8ke0JQTn0vZmlsZXMvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1wa3Rsb2Nfc3ludGF4X2gtcmFjZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtcGMtZmlsZS5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMDNmNzRkMGNkNTAzN2NhZGM4Y2RmYTMxM2JiZDE5NWMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGJlYjc1OTA2NzQ5NTdiOTMxZGU2YjdmODFjNTMwYjg1ZGM3YzFhZDhmYmRhMDE1Mzk4YmMxZThkMWNlOGVjNSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWJubC0zLnNvLiogXAotICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYm5sLnNvLiogXAotICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfSIKLVJSRVBMQUNFU18ke1BOfSA9ICJsaWJubDIiCi1SQ09ORkxJQ1RTXyR7UE59ID0gImxpYm5sMiIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2xpYm5sL2NsaS8qLyouYSIKLQotUEFDS0FHRVMgKz0gIiR7UE59LWNsaSAke1BOfS1yb3V0ZSAke1BOfS1uZiAke1BOfS1nZW5sICR7UE59LWlkaWFnIgotRklMRVNfJHtQTn0tY2xpICAgPSAiJHtsaWJkaXJ9L2xpYm5sLWNsaS0zLnNvLiogXAotICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYm5sL2NsaS8qLyouc28gXAotICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYm5sL2NsaS8qLyoubGEgXAotICAgICAgICAgICAgICAgICAgICAgJHtzYmluZGlyfS9ubC0qIgotRklMRVNfJHtQTn0tcm91dGUgPSAiJHtsaWJkaXJ9L2xpYm5sLXJvdXRlLTMuc28uKiIKLUZJTEVTXyR7UE59LWlkaWFnID0gIiR7bGliZGlyfS9saWJubC1pZGlhZy0zLnNvLioiCi1GSUxFU18ke1BOfS1uZiAgICA9ICIke2xpYmRpcn0vbGlibmwtbmYtMy5zby4qIgotRklMRVNfJHtQTn0tZ2VubCAgPSAiJHtsaWJkaXJ9L2xpYm5sLWdlbmwtMy5zby4qIFwKLSAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJubC1nZW5sLnNvLiogXAotICAgICAgICAgICAgICAgICAgICAgJHtzYmluZGlyfS9nZW5sLWN0cmwtbGlzdCIKLVJSRVBMQUNFU18ke1BOfS1nZW5sID0gImxpYm5sLWdlbmwyIGxpYm5sLWdlbmwtMy0yMDAiCi1SQ09ORkxJQ1RTXyR7UE59LWdlbmwgPSAibGlibmwtZ2VubDIgbGlibmwtZ2VubC0zLTIwMCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJubC9saWJubF8zLjIuMjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlibmwvbGlibmxfMy4yLjI4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2OTgyZjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlibmwvbGlibmxfMy4yLjI4LmJiCkBAIC0wLDAgKzEsNDggQEAKK1NVTU1BUlkgPSAiQSBsaWJyYXJ5IGZvciBhcHBsaWNhdGlvbnMgZGVhbGluZyB3aXRoIG5ldGxpbmsgc29ja2V0cyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuaW5mcmFkZWFkLm9yZy9+dGdyL2xpYm5sLyIKK1NFQ1RJT04gPSAibGlicy9uZXR3b3JrIgorCitQRSA9ICIxIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCisKK0RFUEVORFMgPSAiZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS90aG9tMzExLyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke0JQTn0ke0BkLmdldFZhcignUFYnLCBUcnVlKS5yZXBsYWNlKCcuJywnXycpfS8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vZml4LXBrdGxvY19zeW50YXhfaC1yYWNlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1wYy1maWxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbGliLWFkZC11dGlsaXR5LWZ1bmN0aW9uLW5sX3N0cmVycm9yX2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1saWItc3dpdGNoLXRvLXVzaW5nLXN0cmVycm9yX2wtaW5zdGVhZC1vZi1zdHJlcnJvcl9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtc3JjLXN3aXRjaC10by11c2luZy1zdHJlcnJvcl9sLWluc3RlYWQtb2Ytc3RyZXJyb3Jfci5wYXRjaCBcCisiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3Rob20zMTEvJHtCUE59L3JlbGVhc2VzIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYmFiMTJkYjFlYjk0YTQyMTI5ZjcxMmE0NGJlOTFhNjciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2Q2MDg5OTJjNjU2ZThmNmUzYWI2YzEzOTFiMTYyYTVhNTFjNDkzMzZiOTIxOWY3ZjM5MGU2MWZjNTQzN2M0MSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0ZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWJubC0zLnNvLiogXAorICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYm5sLnNvLiogXAorICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfSIKK1JSRVBMQUNFU18ke1BOfSA9ICJsaWJubDIiCitSQ09ORkxJQ1RTXyR7UE59ID0gImxpYm5sMiIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2xpYm5sL2NsaS8qLyoubGEiCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9saWJubC9jbGkvKi8qLmEiCisKK1BBQ0tBR0VTICs9ICIke1BOfS1jbGkgJHtQTn0tZ2VubCAke1BOfS1pZGlhZyAke1BOfS1uZiAke1BOfS1yb3V0ZSAke1BOfS14ZnJtIgorRklMRVNfJHtQTn0tY2xpICAgPSAiJHtsaWJkaXJ9L2xpYm5sLWNsaS0zLnNvLiogXAorICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYm5sL2NsaS8qLyouc28gXAorICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2dlbmwtY3RybC1saXN0IFwKKyAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9pZGlhZy1zb2NrZXQtZGV0YWlscyBcCisgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vbmYtKiBcCisgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vbmwtKiIKK0ZJTEVTXyR7UE59LWdlbmwgID0gIiR7bGliZGlyfS9saWJubC1nZW5sLTMuc28uKiBcCisgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlibmwtZ2VubC5zby4qIgorRklMRVNfJHtQTn0taWRpYWcgPSAiJHtsaWJkaXJ9L2xpYm5sLWlkaWFnLTMuc28uKiIKK0ZJTEVTXyR7UE59LW5mICAgID0gIiR7bGliZGlyfS9saWJubC1uZi0zLnNvLioiCitGSUxFU18ke1BOfS1yb3V0ZSA9ICIke2xpYmRpcn0vbGlibmwtcm91dGUtMy5zby4qIgorRklMRVNfJHtQTn0teGZybSAgPSAiJHtsaWJkaXJ9L2xpYm5sLXhmcm0tMy5zby4qIgorUlJFUExBQ0VTXyR7UE59LWdlbmwgPSAibGlibmwtZ2VubDIiCitSQ09ORkxJQ1RTXyR7UE59LWdlbmwgPSAibGlibmwtZ2VubDIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlXzguMzguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlXzguMzguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4NGMyZmUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZV84LjM4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiVGhlIFBDUkUgbGlicmFyeSBpcyBhIHNldCBvZiBmdW5jdGlvbnMgdGhhdCBpbXBsZW1lbnQgcmVndWxhciBcCi1leHByZXNzaW9uIHBhdHRlcm4gbWF0Y2hpbmcgdXNpbmcgdGhlIHNhbWUgc3ludGF4IGFuZCBzZW1hbnRpY3MgYXMgUGVybCA1LiBQQ1JFIFwKLWhhcyBpdHMgb3duIG5hdGl2ZSBBUEksIGFzIHdlbGwgYXMgYSBzZXQgb2Ygd3JhcHBlciBmdW5jdGlvbnMgdGhhdCBjb3JyZXNwb25kIFwKLXRvIHRoZSBQT1NJWCByZWd1bGFyIGV4cHJlc3Npb24gQVBJLiIKLVNVTU1BUlkgPSAiUGVybCBDb21wYXRpYmxlIFJlZ3VsYXIgRXhwcmVzc2lvbnMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnBjcmUub3JnIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9N2U0OTM3ODE0YWVlMTQ3NThjMWM5NWI1OWM4MGM0NGQiCi1TUkNfVVJJID0gImZ0cDovL2Z0cC5jc3guY2FtLmFjLnVrL3B1Yi9zb2Z0d2FyZS9wcm9ncmFtbWluZy9wY3JlL3BjcmUtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9wY3JlLWNyb3NzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1wY3JlLW5hbWUtY29sbGlzaW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZSBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwMGFhYmJmZTU2ZDVhNDhiMjcwZjk5OWI1MDhjNWFkMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiOWUwMmQzNmUyMzAyNGQ2YzAyYTJlNWIyNTIwNGIzYTRmYTZhZGU0M2UwYTVmODY5ZjI1NGY0OTUzNTA3OWRmIgotCi1TID0gIiR7V09SS0RJUn0vcGNyZS0ke1BWfSIKLQotUFJPVklERVMgKz0gInBjcmUiCi1ERVBFTkRTICs9ICJiemlwMiB6bGliIgotCi1QQUNLQUdFQ09ORklHID8/PSAicGNyZTggdW5pY29kZS1wcm9wZXJ0aWVzIgotCi1QQUNLQUdFQ09ORklHW3BjcmU4XSA9ICItLWVuYWJsZS1wY3JlOCwtLWRpc2FibGUtcGNyZTgiCi1QQUNLQUdFQ09ORklHW3BjcmUxNl0gPSAiLS1lbmFibGUtcGNyZTE2LC0tZGlzYWJsZS1wY3JlMTYiCi1QQUNLQUdFQ09ORklHW3BjcmUzMl0gPSAiLS1lbmFibGUtcGNyZTMyLC0tZGlzYWJsZS1wY3JlMzIiCi1QQUNLQUdFQ09ORklHW3BjcmV0ZXN0LXJlYWRsaW5lXSA9ICItLWVuYWJsZS1wY3JldGVzdC1saWJyZWFkbGluZSwtLWRpc2FibGUtcGNyZXRlc3QtbGlicmVhZGxpbmUscmVhZGxpbmUsIgotUEFDS0FHRUNPTkZJR1t1bmljb2RlLXByb3BlcnRpZXNdID0gIi0tZW5hYmxlLXVuaWNvZGUtcHJvcGVydGllcywtLWRpc2FibGUtdW5pY29kZS1wcm9wZXJ0aWVzIgotCi1CSU5DT05GSUcgPSAiJHtiaW5kaXJ9L3BjcmUtY29uZmlnIgotCi1pbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQgcHRlc3QKLQotRVhUUkFfT0VDT05GID0gIlwKLSAgICAtLWVuYWJsZS1uZXdsaW5lLWlzLWxmIFwKLSAgICAtLWVuYWJsZS1yZWJ1aWxkLWNoYXJ0YWJsZXMgXAotICAgIC0tZW5hYmxlLXV0ZiBcCi0gICAgLS13aXRoLWxpbmstc2l6ZT0yIFwKLSAgICAtLXdpdGgtbWF0Y2gtbGltaXQ9MTAwMDAwMDAgXAotIgotCi0jIFNldCBMSU5LX1NJWkUgaW4gQlVJTERfQ0ZMQUdTIGdpdmVuIHRoYXQgdGhlIGF1dG90b29scyBiYmNsYXNzIHVzZSBpdCB0bwotIyBzZXQgQ0ZMQUdTX0ZPUl9CVUlMRCwgcmVxdWlyZWQgZm9yIHRoZSBsaWJwY3JlIGJ1aWxkLgotQlVJTERfQ0ZMQUdTID0rICItRExJTktfU0laRT0yIC1JJHtCfSIKLUNGTEFHUyArPSAiLURfUkVFTlRSQU5UIgotQ1hYRkxBR1NfYXBwZW5kX3Bvd2VycGMgPSAiIC1sc3RkYysrIgotCi1QQUNLQUdFUyA9KyAibGlicGNyZWNwcCBsaWJwY3JlcG9zaXggcGNyZWdyZXAgcGNyZWdyZXAtZG9jIHBjcmV0ZXN0IHBjcmV0ZXN0LWRvYyIKLQotU1VNTUFSWV9saWJwY3JlY3BwID0gIiR7U1VNTUFSWX0gLSBDKysgd3JhcHBlciBmdW5jdGlvbnMiCi1TVU1NQVJZX2xpYnBjcmVwb3NpeCA9ICIke1NVTU1BUll9IC0gQyB3cmFwcGVyIGZ1bmN0aW9ucyBiYXNlZCBvbiB0aGUgUE9TSVggcmVnZXggQVBJIgotU1VNTUFSWV9wY3JlZ3JlcCA9ICJncmVwIHV0aWxpdHkgdGhhdCB1c2VzIHBlcmwgNSBjb21wYXRpYmxlIHJlZ2V4ZXMiCi1TVU1NQVJZX3BjcmVncmVwLWRvYyA9ICJncmVwIHV0aWxpdHkgdGhhdCB1c2VzIHBlcmwgNSBjb21wYXRpYmxlIHJlZ2V4ZXMgLSBkb2NzIgotU1VNTUFSWV9wY3JldGVzdCA9ICJwcm9ncmFtIGZvciB0ZXN0aW5nIFBlcmwtY29tYXRpYmxlIHJlZ3VsYXIgZXhwcmVzc2lvbnMiCi1TVU1NQVJZX3BjcmV0ZXN0LWRvYyA9ICJwcm9ncmFtIGZvciB0ZXN0aW5nIFBlcmwtY29tYXRpYmxlIHJlZ3VsYXIgZXhwcmVzc2lvbnMgLSBkb2NzIgotCi1GSUxFU19saWJwY3JlY3BwID0gIiR7bGliZGlyfS9saWJwY3JlY3BwLnNvLioiCi1GSUxFU19saWJwY3JlcG9zaXggPSAiJHtsaWJkaXJ9L2xpYnBjcmVwb3NpeC5zby4qIgotRklMRVNfcGNyZWdyZXAgPSAiJHtiaW5kaXJ9L3BjcmVncmVwIgotRklMRVNfcGNyZWdyZXAtZG9jID0gIiR7bWFuZGlyfS9tYW4xL3BjcmVncmVwLjEiCi1GSUxFU19wY3JldGVzdCA9ICIke2JpbmRpcn0vcGNyZXRlc3QiCi1GSUxFU19wY3JldGVzdC1kb2MgPSAiJHttYW5kaXJ9L21hbjEvcGNyZXRlc3QuMSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCXQ9JHtEfSR7UFRFU1RfUEFUSH0KLQljcCAke1dPUktESVJ9L01ha2VmaWxlICR0Ci0JY3AgLXIgJHtTfS90ZXN0ZGF0YSAkdAotCWZvciBpIGluIHBjcmVfc3RyaW5ncGllY2VfdW5pdHRlc3QgcGNyZWdyZXAgcGNyZXRlc3Q7IFwKLQkgIGRvIGNwICR7Qn0vLmxpYnMvJGkgJHQ7IFwKLQlkb25lCi0JZm9yIGkgaW4gUnVuVGVzdCBSdW5HcmVwVGVzdCB0ZXN0LWRyaXZlcjsgXAotCSAgZG8gY3AgJHtTfS8kaSAkdDsgXAotCWRvbmUKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmVfOC4zOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmVfOC4zOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDQ2NjhiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZV84LjM5LmJiCkBAIC0wLDAgKzEsODEgQEAKK0RFU0NSSVBUSU9OID0gIlRoZSBQQ1JFIGxpYnJhcnkgaXMgYSBzZXQgb2YgZnVuY3Rpb25zIHRoYXQgaW1wbGVtZW50IHJlZ3VsYXIgXAorZXhwcmVzc2lvbiBwYXR0ZXJuIG1hdGNoaW5nIHVzaW5nIHRoZSBzYW1lIHN5bnRheCBhbmQgc2VtYW50aWNzIGFzIFBlcmwgNS4gUENSRSBcCitoYXMgaXRzIG93biBuYXRpdmUgQVBJLCBhcyB3ZWxsIGFzIGEgc2V0IG9mIHdyYXBwZXIgZnVuY3Rpb25zIHRoYXQgY29ycmVzcG9uZCBcCit0byB0aGUgUE9TSVggcmVndWxhciBleHByZXNzaW9uIEFQSS4iCitTVU1NQVJZID0gIlBlcmwgQ29tcGF0aWJsZSBSZWd1bGFyIEV4cHJlc3Npb25zIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5wY3JlLm9yZyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PWI4MjIxY2JmNDNjNTU4N2Y5MGNjZjIyOGYxMTg1Y2MyIgorU1JDX1VSSSA9ICJmdHA6Ly9mdHAuY3N4LmNhbS5hYy51ay9wdWIvc29mdHdhcmUvcHJvZ3JhbW1pbmcvcGNyZS9wY3JlLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vcGNyZS1jcm9zcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtcGNyZS1uYW1lLWNvbGxpc2lvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUgXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZTNmY2E3NjUwYTA1NTZhMjY0NzgyMTY3OWQ4MWY1ODUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjg1ODA5OWY4MjQ4MzAzMWVlMDIwOTI3MTE2ODllNzI0NTU4NmFkYTQ5ZTUzNGEwNmU2NzhiOGVhOTU0OWU4YiIKKworUyA9ICIke1dPUktESVJ9L3BjcmUtJHtQVn0iCisKK1BST1ZJREVTICs9ICJwY3JlIgorREVQRU5EUyArPSAiYnppcDIgemxpYiIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInBjcmU4IHVuaWNvZGUtcHJvcGVydGllcyIKKworUEFDS0FHRUNPTkZJR1twY3JlOF0gPSAiLS1lbmFibGUtcGNyZTgsLS1kaXNhYmxlLXBjcmU4IgorUEFDS0FHRUNPTkZJR1twY3JlMTZdID0gIi0tZW5hYmxlLXBjcmUxNiwtLWRpc2FibGUtcGNyZTE2IgorUEFDS0FHRUNPTkZJR1twY3JlMzJdID0gIi0tZW5hYmxlLXBjcmUzMiwtLWRpc2FibGUtcGNyZTMyIgorUEFDS0FHRUNPTkZJR1twY3JldGVzdC1yZWFkbGluZV0gPSAiLS1lbmFibGUtcGNyZXRlc3QtbGlicmVhZGxpbmUsLS1kaXNhYmxlLXBjcmV0ZXN0LWxpYnJlYWRsaW5lLHJlYWRsaW5lLCIKK1BBQ0tBR0VDT05GSUdbdW5pY29kZS1wcm9wZXJ0aWVzXSA9ICItLWVuYWJsZS11bmljb2RlLXByb3BlcnRpZXMsLS1kaXNhYmxlLXVuaWNvZGUtcHJvcGVydGllcyIKKworQklOQ09ORklHID0gIiR7YmluZGlyfS9wY3JlLWNvbmZpZyIKKworaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnLWRpc2FibGVkIHB0ZXN0CisKK0VYVFJBX09FQ09ORiA9ICJcCisgICAgLS1lbmFibGUtbmV3bGluZS1pcy1sZiBcCisgICAgLS1lbmFibGUtcmVidWlsZC1jaGFydGFibGVzIFwKKyAgICAtLWVuYWJsZS11dGYgXAorICAgIC0td2l0aC1saW5rLXNpemU9MiBcCisgICAgLS13aXRoLW1hdGNoLWxpbWl0PTEwMDAwMDAwIFwKKyIKKworIyBTZXQgTElOS19TSVpFIGluIEJVSUxEX0NGTEFHUyBnaXZlbiB0aGF0IHRoZSBhdXRvdG9vbHMgYmJjbGFzcyB1c2UgaXQgdG8KKyMgc2V0IENGTEFHU19GT1JfQlVJTEQsIHJlcXVpcmVkIGZvciB0aGUgbGlicGNyZSBidWlsZC4KK0JVSUxEX0NGTEFHUyA9KyAiLURMSU5LX1NJWkU9MiAtSSR7Qn0iCitDRkxBR1MgKz0gIi1EX1JFRU5UUkFOVCIKK0NYWEZMQUdTX2FwcGVuZF9wb3dlcnBjID0gIiAtbHN0ZGMrKyIKKworZXhwb3J0IENDTERfRk9SX0JVSUxEID0iJHtCVUlMRF9DQ0xEfSIKKworUEFDS0FHRVMgPSsgImxpYnBjcmVjcHAgbGlicGNyZXBvc2l4IHBjcmVncmVwIHBjcmVncmVwLWRvYyBwY3JldGVzdCBwY3JldGVzdC1kb2MiCisKK1NVTU1BUllfbGlicGNyZWNwcCA9ICIke1NVTU1BUll9IC0gQysrIHdyYXBwZXIgZnVuY3Rpb25zIgorU1VNTUFSWV9saWJwY3JlcG9zaXggPSAiJHtTVU1NQVJZfSAtIEMgd3JhcHBlciBmdW5jdGlvbnMgYmFzZWQgb24gdGhlIFBPU0lYIHJlZ2V4IEFQSSIKK1NVTU1BUllfcGNyZWdyZXAgPSAiZ3JlcCB1dGlsaXR5IHRoYXQgdXNlcyBwZXJsIDUgY29tcGF0aWJsZSByZWdleGVzIgorU1VNTUFSWV9wY3JlZ3JlcC1kb2MgPSAiZ3JlcCB1dGlsaXR5IHRoYXQgdXNlcyBwZXJsIDUgY29tcGF0aWJsZSByZWdleGVzIC0gZG9jcyIKK1NVTU1BUllfcGNyZXRlc3QgPSAicHJvZ3JhbSBmb3IgdGVzdGluZyBQZXJsLWNvbWF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIgorU1VNTUFSWV9wY3JldGVzdC1kb2MgPSAicHJvZ3JhbSBmb3IgdGVzdGluZyBQZXJsLWNvbWF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIC0gZG9jcyIKKworRklMRVNfbGlicGNyZWNwcCA9ICIke2xpYmRpcn0vbGlicGNyZWNwcC5zby4qIgorRklMRVNfbGlicGNyZXBvc2l4ID0gIiR7bGliZGlyfS9saWJwY3JlcG9zaXguc28uKiIKK0ZJTEVTX3BjcmVncmVwID0gIiR7YmluZGlyfS9wY3JlZ3JlcCIKK0ZJTEVTX3BjcmVncmVwLWRvYyA9ICIke21hbmRpcn0vbWFuMS9wY3JlZ3JlcC4xIgorRklMRVNfcGNyZXRlc3QgPSAiJHtiaW5kaXJ9L3BjcmV0ZXN0IgorRklMRVNfcGNyZXRlc3QtZG9jID0gIiR7bWFuZGlyfS9tYW4xL3BjcmV0ZXN0LjEiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwl0PSR7RH0ke1BURVNUX1BBVEh9CisJY3AgJHtXT1JLRElSfS9NYWtlZmlsZSAkdAorCWNwIC1yICR7U30vdGVzdGRhdGEgJHQKKwlmb3IgaSBpbiBwY3JlX3N0cmluZ3BpZWNlX3VuaXR0ZXN0IHBjcmVncmVwIHBjcmV0ZXN0OyBcCisJICBkbyBjcCAke0J9Ly5saWJzLyRpICR0OyBcCisJZG9uZQorCWZvciBpIGluIFJ1blRlc3QgUnVuR3JlcFRlc3QgdGVzdC1kcml2ZXI7IFwKKwkgIGRvIGNwICR7U30vJGkgJHQ7IFwKKwlkb25lCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicHJveHkvbGlicHJveHkvMDAwMS10ZXN0LUluY2x1ZGUtc3lzLXNlbGVjdC5oLWZvci1zZWxlY3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicHJveHkvbGlicHJveHkvMDAwMS10ZXN0LUluY2x1ZGUtc3lzLXNlbGVjdC5oLWZvci1zZWxlY3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhZTUyZjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnByb3h5L2xpYnByb3h5LzAwMDEtdGVzdC1JbmNsdWRlLXN5cy1zZWxlY3QuaC1mb3Itc2VsZWN0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotRnJvbSBmNWYyYzIyODllYjM1ZWI4MDRjMWMzNWU0NmNhNDFiNThlNGNhZTAxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgNiBBcHIgMjAxNSAxNDoxMzo0OSAtMDcwMAotU3ViamVjdDogW1BBVENIXSB0ZXN0OiBJbmNsdWRlIDxzeXMvc2VsZWN0Lmg+IGZvciBzZWxlY3QoKQotCi1BcyBwZXIgcG9zaXggd2UgbmVlZCB0byBpbmNsdWRlIHRoaXMgZmlsZSBvdGhlcndpc2Ugd2UgZW5kIHVwIHdpdGggZXJyb3JzIGxpa2UKLQotL2hvbWUva3Jhai93b3JrL2JsZWVkaW5nL29wZW5lbWJlZGRlZC1jb3JlL2J1aWxkL3RtcC1tdXNsL3dvcmsvbWlwczMycjItb2UtbGludXgtbXVzbC9saWJwcm94eS8wLjQuMTEtcjAvbGlicHJveHktMC40LjExL2xpYnByb3h5L3Rlc3QvZ2V0LXBhYy10ZXN0LmNwcDogSW4gbWVtYmVyIGZ1bmN0aW9uICdib29sIFRlc3RTZXJ2ZXI6Omxvb3AoKSc6Ci0vaG9tZS9rcmFqL3dvcmsvYmxlZWRpbmcvb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLW11c2wvd29yay9taXBzMzJyMi1vZS1saW51eC1tdXNsL2xpYnByb3h5LzAuNC4xMS1yMC9saWJwcm94eS0wLjQuMTEvbGlicHJveHkvdGVzdC9nZXQtcGFjLXRlc3QuY3BwOjgwOjQ6IGVycm9yOiAnZmRfc2V0JyB3YXMgbm90IGRlY2xhcmVkIGluIHRoaXMgc2NvcGUKLSAgICBmZF9zZXQgZmRzOwotICAgIF4KLS9ob21lL2tyYWovd29yay9ibGVlZGluZy9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtbXVzbC93b3JrL21pcHMzMnIyLW9lLWxpbnV4LW11c2wvbGlicHJveHkvMC40LjExLXIwL2xpYnByb3h5LTAuNC4xMS9saWJwcm94eS90ZXN0L2dldC1wYWMtdGVzdC5jcHA6ODk6MTQ6IGVycm9yOiAnZmRzJyB3YXMgbm90IGRlY2xhcmVkIGluIHRoaXMgc2NvcGUKLSAgICBGRF9aRVJPICgmZmRzKTsKLTxKSVJBIFRJQ0tFVCAjMT4sIDxKSVJBIFRJQ0tFVCAjMj4sIDxKSVJBIFRJQ0tFVCAjbj4gOiA8b25lIGxpbmUgc3VtbWFyeSBvZiBjaGFuZ2U+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbGlicHJveHkvdGVzdC9nZXQtcGFjLXRlc3QuY3BwIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9saWJwcm94eS90ZXN0L2dldC1wYWMtdGVzdC5jcHAgYi9saWJwcm94eS90ZXN0L2dldC1wYWMtdGVzdC5jcHAKLWluZGV4IGE2MWZjNGIuLmJkYTQ2NDYgMTAwNjQ0Ci0tLS0gYS9saWJwcm94eS90ZXN0L2dldC1wYWMtdGVzdC5jcHAKLSsrKyBiL2xpYnByb3h5L3Rlc3QvZ2V0LXBhYy10ZXN0LmNwcAotQEAgLTMsNiArMyw3IEBACi0gI2luY2x1ZGUgPHNzdHJlYW0+Ci0gI2luY2x1ZGUgPHN0cmluZz4KLSAKLSsjaW5jbHVkZSA8c3lzL3NlbGVjdC5oPgotICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0gI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSAjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+Ci0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwcm94eS9saWJwcm94eV8wLjQuMTEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicHJveHkvbGlicHJveHlfMC40LjExLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Y2M5MGJiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwcm94eS9saWJwcm94eV8wLjQuMTEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgcHJvdmlkaW5nIGF1dG9tYXRpYyBwcm94eSBjb25maWd1cmF0aW9uIG1hbmFnZW1lbnQiCi1IT01FUEFHRSA9ICJodHRwOi8vY29kZS5nb29nbGUuY29tL3AvbGlicHJveHkvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vY29kZS5nb29nbGUuY29tL3AvbGlicHJveHkvaXNzdWVzL2xpc3QiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3V0aWxzL3Byb3h5LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0xODttZDU9NTUxNTJhMTAwNmQ3ZGFmYmVmMzJiYWY5YzMwYTk5YzAiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAiCi0KLVNSQ19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL2xpYnAvJHtCUE59LyR7QlBOfV8ke1BWfS5vcmlnLnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3QtSW5jbHVkZS1zeXMtc2VsZWN0LmgtZm9yLXNlbGVjdC5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiM2NkMWFlMmE0YWJlY2Y0NGIzZjI0ZDY2MzlkMmNkODQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGMzZjMzZGU1NDE2MzcxOGY4MmIzZTdjNDk2YTdkZTk3Zjg4NjI1Nzg0MTRiOGVjYWFkM2NiZmU0ODIxODY0YiIKLQotaW5oZXJpdCBjbWFrZSBwa2djb25maWcKLQotUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnZ25vbWUnLCAnJywgZCl9IGdub21lMyIKLVBBQ0tBR0VDT05GSUdbZ25vbWVdID0gIi1EV0lUSF9HTk9NRT15ZXMsLURXSVRIX0dOT01FPW5vLGdjb25mIgotUEFDS0FHRUNPTkZJR1tnbm9tZTNdID0gIi1EV0lUSF9HTk9NRTM9eWVzLC1EV0lUSF9HTk9NRTM9bm8iCi0KLUVYVFJBX09FQ01BS0UgKz0gIiBcCi0gICAgLURXSVRIX0tERTQ9bm8gXAotICAgIC1EV0lUSF9NT1pKUz1ubyBcCi0gICAgLURXSVRIX05NPW5vIFwKLSAgICAtRFdJVEhfUEVSTD1ubyBcCi0gICAgLURXSVRIX1BZVEhPTj1ubyBcCi0gICAgLURXSVRIX1dFQktJVD1ubyBcCi0gICAgLURMSUJfSU5TVEFMTF9ESVI9JHtsaWJkaXJ9IFwKLSAgICAtRExJQkVYRUNfSU5TVEFMTF9ESVI9JHtsaWJleGVjZGlyfSBcCi0iCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vJHtCUE59LyR7UFZ9L21vZHVsZXMiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7ZGF0YWRpcn0vY21ha2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicHJveHkvbGlicHJveHlfMC40LjEzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnByb3h5L2xpYnByb3h5XzAuNC4xMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTQwZTIyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnByb3h5L2xpYnByb3h5XzAuNC4xMy5iYgpAQCAtMCwwICsxLDM2IEBACitTVU1NQVJZID0gIkxpYnJhcnkgcHJvdmlkaW5nIGF1dG9tYXRpYyBwcm94eSBjb25maWd1cmF0aW9uIG1hbmFnZW1lbnQiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGlicHJveHkvbGlicHJveHkiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJwcm94eS9saWJwcm94eS9pc3N1ZXMiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3V0aWxzL3Byb3h5LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0xODttZDU9NTUxNTJhMTAwNmQ3ZGFmYmVmMzJiYWY5YzMwYTk5YzAiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS8ke0JQTn0vYXJjaGl2ZS8ke1BWfS50YXIuZ3oiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGlicHJveHkvbGlicHJveHkvcmVsZWFzZXMiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkZTI5M2JiMzExZjE4NWEyZmZhMzQ5MjcwMGE2OTRjMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkNjEwYmMwZWY4MWExOGJhNDE4ZDc1OWM1ZjRmODdiZjcxMDIyMjlhOTE1M2ZiMzk3ZDdkNDkwOTg3MzMwZmZkIgorCitpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZworCitQQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICdnbm9tZScsICcnLCBkKX0gZ25vbWUzIgorUEFDS0FHRUNPTkZJR1tnbm9tZV0gPSAiLURXSVRIX0dOT01FPXllcywtRFdJVEhfR05PTUU9bm8sZ2NvbmYiCitQQUNLQUdFQ09ORklHW2dub21lM10gPSAiLURXSVRIX0dOT01FMz15ZXMsLURXSVRIX0dOT01FMz1ubyIKKworRVhUUkFfT0VDTUFLRSArPSAiIFwKKyAgICAtRFdJVEhfS0RFND1ubyBcCisgICAgLURXSVRIX01PWkpTPW5vIFwKKyAgICAtRFdJVEhfTk09bm8gXAorICAgIC1EV0lUSF9QRVJMPW5vIFwKKyAgICAtRFdJVEhfUFlUSE9OPW5vIFwKKyAgICAtRFdJVEhfV0VCS0lUPW5vIFwKKyAgICAtRExJQl9JTlNUQUxMX0RJUj0ke2xpYmRpcn0gXAorICAgIC1ETElCRVhFQ19JTlNUQUxMX0RJUj0ke2xpYmV4ZWNkaXJ9IFwKKyIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8ke0JQTn0vJHtQVn0vbW9kdWxlcyIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS9jbWFrZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJzb3VwL2xpYnNvdXAtMi40XzIuNTIuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJzb3VwL2xpYnNvdXAtMi40XzIuNTIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjZlM2RiMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlic291cC9saWJzb3VwLTIuNF8yLjUyLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1TVU1NQVJZID0gIkFuIEhUVFAgbGlicmFyeSBpbXBsZW1lbnRhdGlvbiBpbiBDIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdub21lLm9yZy9Qcm9qZWN0cy9saWJzb3VwIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCi1TRUNUSU9OID0gIngxMS9nbm9tZS9saWJzIgotTElDRU5TRSA9ICJMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiIKLQotREVQRU5EUyA9ICJnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgbGlieG1sMiBzcWxpdGUzIGludGx0b29sLW5hdGl2ZSIKLQotU0hSVF9WRVIgPSAiJHtAZC5nZXRWYXIoJ1BWJywgVHJ1ZSkuc3BsaXQoJy4nKVswXX0uJHtAZC5nZXRWYXIoJ1BWJywgVHJ1ZSkuc3BsaXQoJy4nKVsxXX0iCi0KLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9L2xpYnNvdXAvJHtTSFJUX1ZFUn0vbGlic291cC0ke1BWfS50YXIueHoiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlNDc1N2QwOTAxMmVkOTM4MjJiMWVlNDE0MzVmZWMyNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkYjU1NjI4YjVjN2Q5NTI5NDViYjcxYjIzNjQ2OTA1N2M4ZGZiOGRlYTBjMjcxNTEzNTc5YzYyNzNjMjA5M2RjIgotCi1TID0gIiR7V09SS0RJUn0vbGlic291cC0ke1BWfSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgotCi0jIGxpYnNvdXAtZ25vbWUgaXMgZW50aXJlbHkgZGVwcmVjYXRlZCBhbmQganVzdCBzdHVicyBpbiAyLjQyIG9ud2FyZHMuIERpc2FibGUgYnkgZGVmYXVsdC4KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2dub21lXSA9ICItLXdpdGgtZ25vbWUsLS13aXRob3V0LWdub21lIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXZhbGEiCi0KLSMgV2hlbiBidWlsdCB3aXRob3V0IGdub21lIHN1cHBvcnQsIGxpYnNvdXAtMi40IHdpbGwgY29udGFpbiBvbmx5IG9uZSBzaGFyZWQgbGliCi0jIGFuZCB3aWxsIHRoZXJlZm9yZSBiZWNvbWUgc3ViamVjdCB0byByZW5hbWluZyBieSBkZWJpYW4uYmJjbGFzcy4gUHJldmVudAotIyByZW5hbWluZyBpbiBvcmRlciB0byBrZWVwIHRoZSBwYWNrYWdlIG5hbWUgY29uc2lzdGVudCByZWdhcmRsZXNzIG9mIHdoZXRoZXIKLSMgZ25vbWUgc3VwcG9ydCBpcyBlbmFibGVkIG9yIGRpc2FibGVkLgotREVCSUFOX05PQVVUT05BTUVfJHtQTn0gPSAiMSIKLQotIyBnbGliLW5ldHdvcmtpbmcgaXMgbmVlZGVkIGZvciBTU0wsIHByb3hpZXMsIGV0Yy4KLVJSRUNPTU1FTkRTXyR7UE59ID0gImdsaWItbmV0d29ya2luZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJzb3VwL2xpYnNvdXAtMi40XzIuNTQuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJzb3VwL2xpYnNvdXAtMi40XzIuNTQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTNhOWZkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjRfMi41NC4xLmJiCkBAIC0wLDAgKzEsMzUgQEAKK1NVTU1BUlkgPSAiQW4gSFRUUCBsaWJyYXJ5IGltcGxlbWVudGF0aW9uIGluIEMiCitIT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ25vbWUub3JnL1Byb2plY3RzL2xpYnNvdXAiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKK1NFQ1RJT04gPSAieDExL2dub21lL2xpYnMiCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIgorCitERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBsaWJ4bWwyIHNxbGl0ZTMgaW50bHRvb2wtbmF0aXZlIgorCitTSFJUX1ZFUiA9ICIke0BkLmdldFZhcignUFYnLCBUcnVlKS5zcGxpdCgnLicpWzBdfS4ke0BkLmdldFZhcignUFYnLCBUcnVlKS5zcGxpdCgnLicpWzFdfSIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vbGlic291cC8ke1NIUlRfVkVSfS9saWJzb3VwLSR7UFZ9LnRhci54eiIKKworU1JDX1VSSVttZDVzdW1dID0gIjczYjFmYjc3NGRlMTZjMjliMzgwZjg3MDE2ZjlmOWRkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ3YjQyYzIzMjAzNDczNGQ2NmU1ZjA5MzAyNTg0M2E1ZDhjYzRiMjM1N2MwMTEwODVhMmZkMDRlZjAyZGQ2MzMiCisKK1MgPSAiJHtXT1JLRElSfS9saWJzb3VwLSR7UFZ9IgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MKKworIyBsaWJzb3VwLWdub21lIGlzIGVudGlyZWx5IGRlcHJlY2F0ZWQgYW5kIGp1c3Qgc3R1YnMgaW4gMi40MiBvbndhcmRzLiBEaXNhYmxlIGJ5IGRlZmF1bHQuCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tnbm9tZV0gPSAiLS13aXRoLWdub21lLC0td2l0aG91dC1nbm9tZSIKK1BBQ0tBR0VDT05GSUdbZ3NzYXBpXSA9ICItLXdpdGgtZ3NzYXBpLC0td2l0aG91dC1nc3NhcGksa3JiNSIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS12YWxhIgorCisjIFdoZW4gYnVpbHQgd2l0aG91dCBnbm9tZSBzdXBwb3J0LCBsaWJzb3VwLTIuNCB3aWxsIGNvbnRhaW4gb25seSBvbmUgc2hhcmVkIGxpYgorIyBhbmQgd2lsbCB0aGVyZWZvcmUgYmVjb21lIHN1YmplY3QgdG8gcmVuYW1pbmcgYnkgZGViaWFuLmJiY2xhc3MuIFByZXZlbnQKKyMgcmVuYW1pbmcgaW4gb3JkZXIgdG8ga2VlcCB0aGUgcGFja2FnZSBuYW1lIGNvbnNpc3RlbnQgcmVnYXJkbGVzcyBvZiB3aGV0aGVyCisjIGdub21lIHN1cHBvcnQgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4KK0RFQklBTl9OT0FVVE9OQU1FXyR7UE59ID0gIjEiCisKKyMgZ2xpYi1uZXR3b3JraW5nIGlzIG5lZWRlZCBmb3IgU1NMLCBwcm94aWVzLCBldGMuCitSUkVDT01NRU5EU18ke1BOfSA9ICJnbGliLW5ldHdvcmtpbmciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC0xLjEvMDAwMS1GaXgtYnVpbGQtb24tbWlwcy1tdXNsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQtMS4xLzAwMDEtRml4LWJ1aWxkLW9uLW1pcHMtbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQyNmZjYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC0xLjEvMDAwMS1GaXgtYnVpbGQtb24tbWlwcy1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotRnJvbSBlNjIzYzc3MDM5NDVhNWViNmM5YTMwNTg2ZWM1ZTIzYjJmNzM5NmY2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjMgTWFyIDIwMTYgMDY6MDg6NTkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIG9uIG1pcHMvbXVzbAotCi1EbyBub3QgaW5jbHVkZSBlbmRpYW4uaCBvbiBtdXNsIGl0IGluY2x1ZGVzCi1mdXJ0aGVyIGhlYWRlcnMgd2hpY2ggY2FuIG5vdCBiZSBjb21waWxlZCBpbiBfX0FTU0VNQkxFUl9fCi0gbW9kZQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIHNyYy9jb3JlZHVtcC9fVUNEX2ludGVybmFsLmggfCAzNCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gc3JjL21pcHMvZ2V0Y29udGV4dC5TICAgICAgICB8ICAzICstLQotIDIgZmlsZXMgY2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jb3JlZHVtcC9fVUNEX2ludGVybmFsLmggYi9zcmMvY29yZWR1bXAvX1VDRF9pbnRlcm5hbC5oCi1pbmRleCAzYzk1YTJhLi44MGFjYzE1IDEwMDY0NAotLS0tIGEvc3JjL2NvcmVkdW1wL19VQ0RfaW50ZXJuYWwuaAotKysrIGIvc3JjL2NvcmVkdW1wL19VQ0RfaW50ZXJuYWwuaAotQEAgLTM0LDYgKzM0LDcgQEAgV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAqLwotICNpZmRlZiBIQVZFX1NZU19QUk9DRlNfSAotICNpbmNsdWRlIDxzeXMvcHJvY2ZzLmg+IC8qIHN0cnVjdCBlbGZfcHJzdGF0dXMgKi8KLSAjZW5kaWYKLSsjaW5jbHVkZSA8c3lzL3JlZy5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8bGltaXRzLmg+Ci1AQCAtNDQsNiArNDUsMzkgQEAgV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAqLwotIAotICNpbmNsdWRlICJsaWJ1bndpbmRfaS5oIgotIAotKyNpZm5kZWYgX19HTElCQ19fCi0rI2RlZmluZSBFRl9SRUcwCQkJNgotKyNkZWZpbmUgRUZfUkVHMQkJCTcKLSsjZGVmaW5lIEVGX1JFRzIJCQk4Ci0rI2RlZmluZSBFRl9SRUczCQkJOQotKyNkZWZpbmUgRUZfUkVHNAkJCTEwCi0rI2RlZmluZSBFRl9SRUc1CQkJMTEKLSsjZGVmaW5lIEVGX1JFRzYJCQkxMgotKyNkZWZpbmUgRUZfUkVHNwkJCTEzCi0rI2RlZmluZSBFRl9SRUc4CQkJMTQKLSsjZGVmaW5lIEVGX1JFRzkJCQkxNQotKyNkZWZpbmUgRUZfUkVHMTAJCTE2Ci0rI2RlZmluZSBFRl9SRUcxMQkJMTcKLSsjZGVmaW5lIEVGX1JFRzEyCQkxOAotKyNkZWZpbmUgRUZfUkVHMTMJCTE5Ci0rI2RlZmluZSBFRl9SRUcxNAkJMjAKLSsjZGVmaW5lIEVGX1JFRzE1CQkyMQotKyNkZWZpbmUgRUZfUkVHMTYJCTIyCi0rI2RlZmluZSBFRl9SRUcxNwkJMjMKLSsjZGVmaW5lIEVGX1JFRzE4CQkyNAotKyNkZWZpbmUgRUZfUkVHMTkJCTI1Ci0rI2RlZmluZSBFRl9SRUcyMAkJMjYKLSsjZGVmaW5lIEVGX1JFRzIxCQkyNwotKyNkZWZpbmUgRUZfUkVHMjIJCTI4Ci0rI2RlZmluZSBFRl9SRUcyMwkJMjkKLSsjZGVmaW5lIEVGX1JFRzI0CQkzMAotKyNkZWZpbmUgRUZfUkVHMjUJCTMxCi0rI2RlZmluZSBFRl9SRUcyOAkJMzQKLSsjZGVmaW5lIEVGX1JFRzI5CQkzNQotKyNkZWZpbmUgRUZfUkVHMzAJCTM2Ci0rI2RlZmluZSBFRl9SRUczMQkJMzcKLSsjZW5kaWYKLSsKLSAKLSAjaWYgU0laRU9GX09GRl9UID09IDQKLSB0eXBlZGVmIHVpbnQzMl90IHVvZmZfdDsKLWRpZmYgLS1naXQgYS9zcmMvbWlwcy9nZXRjb250ZXh0LlMgYi9zcmMvbWlwcy9nZXRjb250ZXh0LlMKLWluZGV4IGQxZGJkNTcuLmRlOWI2ODEgMTAwNjQ0Ci0tLS0gYS9zcmMvbWlwcy9nZXRjb250ZXh0LlMKLSsrKyBiL3NyYy9taXBzL2dldGNvbnRleHQuUwotQEAgLTI0LDEyICsyNCwxMSBAQCBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04KLSBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICovCi0gCi0gI2luY2x1ZGUgIm9mZnNldHMuaCIKLS0jaW5jbHVkZSA8ZW5kaWFuLmg+Ci0gCi0gCS50ZXh0Ci0gCi0gI2lmIF9NSVBTX1NJTSA9PSBfQUJJTzMyCi0tIyBpZiBfX0JZVEVfT1JERVIgPT0gX19CSUdfRU5ESUFOCi0rIyBpZiBfX0JZVEVfT1JERVJfXyA9PSBfX09SREVSX0JJR19FTkRJQU5fXwotICMgIGRlZmluZSBPRkZTRVQgNAotICMgZWxzZQotICMgIGRlZmluZSBPRkZTRVQgMAotLS0gCi0xLjguMy4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kLTEuMS8wMDAxLUludmFsaWQtZHdhcmYtb3Bjb2Rlcy1jYW4tY2F1c2UtcmVmZXJlbmNlcy1iZXlvbmQtdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC0xLjEvMDAwMS1JbnZhbGlkLWR3YXJmLW9wY29kZXMtY2FuLWNhdXNlLXJlZmVyZW5jZXMtYmV5b25kLXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZjk3MmY4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kLTEuMS8wMDAxLUludmFsaWQtZHdhcmYtb3Bjb2Rlcy1jYW4tY2F1c2UtcmVmZXJlbmNlcy1iZXlvbmQtdGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIDM5NmI2YzdhYjczN2UyYmZmMjQ0ZDY0MDYwMWM0MzZhMjYyNjBjYTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBcnVuIFNoYXJtYSA8YXJ1bkBzaGFybWEtaG9tZS5uZXQ+Ci1EYXRlOiBGcmksIDE5IEp1biAyMDE1IDE5OjQ3OjIyIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIEludmFsaWQgZHdhcmYgb3Bjb2RlcyBjYW4gY2F1c2UgcmVmZXJlbmNlcyBiZXlvbmQgdGhlIGVuZCBvZgotIHRoZSBhcnJheS4KLQotVXBzdHJlYW0tU3RhdHVzOiBiYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBMaSBaaG91IDxsaS56aG91QHdpbmRyaXZlci5jb20+Ci0tLS0KLSBpbmNsdWRlL2R3YXJmX2kuaCB8ICAgIDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHdhcmZfaS5oIGIvaW5jbHVkZS9kd2FyZl9pLmgKLWluZGV4IDFlNjIzMWUuLjRhMDJhN2QgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2R3YXJmX2kuaAotKysrIGIvaW5jbHVkZS9kd2FyZl9pLmgKLUBAIC0yMCw3ICsyMCw3IEBACi0gZXh0ZXJuIGNvbnN0IHVpbnQ4X3QgZHdhcmZfdG9fdW53X3JlZ251bV9tYXBbRFdBUkZfUkVHTlVNX01BUF9MRU5HVEhdOwotIC8qIFJFRyBpcyBldmFsdWF0ZWQgbXVsdGlwbGUgdGltZXM7IGl0IGJldHRlciBiZSBzaWRlLWVmZmVjdHMgZnJlZSEgICovCi0gIyBkZWZpbmUgZHdhcmZfdG9fdW53X3JlZ251bShyZWcpCQkJCQkgIFwKLS0gICgoKHJlZykgPD0gRFdBUkZfUkVHTlVNX01BUF9MRU5HVEgpID8gZHdhcmZfdG9fdW53X3JlZ251bV9tYXBbcmVnXSA6IDApCi0rICAoKChyZWcpIDwgRFdBUkZfUkVHTlVNX01BUF9MRU5HVEgpID8gZHdhcmZfdG9fdW53X3JlZ251bV9tYXBbcmVnXSA6IDApCi0gI2VuZGlmCi0gCi0gI2lmZGVmIFVOV19MT0NBTF9PTkxZCi0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQtMS4xLzAwMDEtZGlzYWJsZS10ZXN0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kLTEuMS8wMDAxLWRpc2FibGUtdGVzdHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczMDlmZmQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQtMS4xLzAwMDEtZGlzYWJsZS10ZXN0cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gYjA3NDM1YTkwYmQ2MzZlZTcxOGUyMjM4ZmI0NmM3NGE2ZGQ1ZTA2OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDIyIE1hciAyMDE2IDE2OjQxOjEzICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGRpc2FibGUgdGVzdHMKLQotVGVzdHMgdXNlIGdldGNvbnRleHQoKSBBUEkgd2hpY2ggaXMKLW5vdCB0aGVyZSBvbiBtdXNsCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbTVVTTC1vbmx5XQotCi0gTWFrZWZpbGUuYW0gfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCBlMjRmZTFlLi4xNTM4MGU0IDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtMzksNyArMzksNyBAQCBlbmRpZgotIAotIG5vZGlzdF9pbmNsdWRlX0hFQURFUlMgPSBpbmNsdWRlL2xpYnVud2luZC1jb21tb24uaAotIAotLVNVQkRJUlMgPSBzcmMgdGVzdHMgZG9jCi0rU1VCRElSUyA9IHNyYyBkb2MKLSAKLSBub2luc3RfSEVBREVSUyA9IGluY2x1ZGUvZHdhcmYuaCBpbmNsdWRlL2R3YXJmX2kuaCBpbmNsdWRlL2R3YXJmLWVoLmgJXAotIAlpbmNsdWRlL2NvbXBpbGVyLmggaW5jbHVkZS9saWJ1bndpbmRfaS5oIGluY2x1ZGUvbWVtcG9vbC5oCVwKLS0tIAotMS44LjMuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC0xLjEvQUFyY2g2NC1wb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQtMS4xL0FBcmNoNjQtcG9ydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjI4ZWMzMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC0xLjEvQUFyY2g2NC1wb3J0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjUyOSArMCwwIEBACi1Gcm9tIGFjNmMwYTY1MzU5NzVmMWRjMmRhNmU0ZTI3NjY2MTRiYWFjMmExNGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBZdmFuIFJvdXggPHl2YW4ucm91eEBsaW5hcm8ub3JnPgotRGF0ZTogU2F0LCAxMSBNYXkgMjAxMyAwOToxODoyMyAtMDYwMAotU3ViamVjdDogW1BBVENIXSBBQXJjaDY0IHBvcnQuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotLS0tCi0gTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNiAKLSBSRUFETUUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxIAotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDYgCi0gaW5jbHVkZS9saWJ1bndpbmQtYWFyY2g2NC5oICAgICAgICAgIHwgIDE4NyArKysrKysrKysrKysrKysrKysrKysrCi0gaW5jbHVkZS9saWJ1bndpbmQuaC5pbiAgICAgICAgICAgICAgIHwgICAgNCAKLSBpbmNsdWRlL3RkZXAtYWFyY2g2NC9kd2FyZi1jb25maWcuaCAgfCAgIDUyICsrKysrKwotIGluY2x1ZGUvdGRlcC1hYXJjaDY0L2ptcGJ1Zi5oICAgICAgICB8ICAgMzMgKysrCi0gaW5jbHVkZS90ZGVwLWFhcmNoNjQvbGlidW53aW5kX2kuaCAgIHwgIDI5NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGluY2x1ZGUvdGRlcC9kd2FyZi1jb25maWcuaCAgICAgICAgICB8ICAgIDQgCi0gaW5jbHVkZS90ZGVwL2ptcGJ1Zi5oICAgICAgICAgICAgICAgIHwgICAgMiAKLSBpbmNsdWRlL3RkZXAvbGlidW53aW5kX2kuaC5pbiAgICAgICAgfCAgICA0IAotIHNyYy9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICB8ICAgMzkgKysrKwotIHNyYy9hYXJjaDY0L0djcmVhdGVfYWRkcl9zcGFjZS5jICAgICB8ICAgNjAgKysrKysrKwotIHNyYy9hYXJjaDY0L0dnZXRfcHJvY19pbmZvLmMgICAgICAgICB8ICAgMzkgKysrKwotIHNyYy9hYXJjaDY0L0dnZXRfc2F2ZV9sb2MuYyAgICAgICAgICB8ICAxMDAgKysrKysrKysrKysKLSBzcmMvYWFyY2g2NC9HZ2xvYmFsLmMgICAgICAgICAgICAgICAgfCAgIDU3ICsrKysrKwotIHNyYy9hYXJjaDY0L0dpbml0LmMgICAgICAgICAgICAgICAgICB8ICAxODcgKysrKysrKysrKysrKysrKysrKysrKwotIHNyYy9hYXJjaDY0L0dpbml0X2xvY2FsLmMgICAgICAgICAgICB8ICAgNTUgKysrKysrCi0gc3JjL2FhcmNoNjQvR2luaXRfcmVtb3RlLmMgICAgICAgICAgIHwgICA0NSArKysrKwotIHNyYy9hYXJjaDY0L0dpc19zaWduYWxfZnJhbWUuYyAgICAgICB8ICAgNjQgKysrKysrKwotIHNyYy9hYXJjaDY0L0dyZWdzLmMgICAgICAgICAgICAgICAgICB8ICAxMTMgKysrKysrKysrKysrKwotIHNyYy9hYXJjaDY0L0dyZXN1bWUuYyAgICAgICAgICAgICAgICB8ICAxNzcgKysrKysrKysrKysrKysrKysrKysrCi0gc3JjL2FhcmNoNjQvR3N0ZXAuYyAgICAgICAgICAgICAgICAgIHwgIDEyOSArKysrKysrKysrKysrKysKLSBzcmMvYWFyY2g2NC9MY3JlYXRlX2FkZHJfc3BhY2UuYyAgICAgfCAgICA1IAotIHNyYy9hYXJjaDY0L0xnZXRfcHJvY19pbmZvLmMgICAgICAgICB8ICAgIDUgCi0gc3JjL2FhcmNoNjQvTGdldF9zYXZlX2xvYy5jICAgICAgICAgIHwgICAgNSAKLSBzcmMvYWFyY2g2NC9MZ2xvYmFsLmMgICAgICAgICAgICAgICAgfCAgICA1IAotIHNyYy9hYXJjaDY0L0xpbml0LmMgICAgICAgICAgICAgICAgICB8ICAgIDUgCi0gc3JjL2FhcmNoNjQvTGluaXRfbG9jYWwuYyAgICAgICAgICAgIHwgICAgNSAKLSBzcmMvYWFyY2g2NC9MaW5pdF9yZW1vdGUuYyAgICAgICAgICAgfCAgICA1IAotIHNyYy9hYXJjaDY0L0xpc19zaWduYWxfZnJhbWUuYyAgICAgICB8ICAgIDUgCi0gc3JjL2FhcmNoNjQvTHJlZ3MuYyAgICAgICAgICAgICAgICAgIHwgICAgNSAKLSBzcmMvYWFyY2g2NC9McmVzdW1lLmMgICAgICAgICAgICAgICAgfCAgICA1IAotIHNyYy9hYXJjaDY0L0xzdGVwLmMgICAgICAgICAgICAgICAgICB8ICAgIDUgCi0gc3JjL2FhcmNoNjQvZ2VuLW9mZnNldHMuYyAgICAgICAgICAgIHwgICA2OCArKysrKysrKwotIHNyYy9hYXJjaDY0L2luaXQuaCAgICAgICAgICAgICAgICAgICB8ICAxMjcgKysrKysrKysrKysrKysrCi0gc3JjL2FhcmNoNjQvaXNfZnByZWcuYyAgICAgICAgICAgICAgIHwgICAzMiArKysKLSBzcmMvYWFyY2g2NC9vZmZzZXRzLmggICAgICAgICAgICAgICAgfCAgIDQ5ICsrKysrCi0gc3JjL2FhcmNoNjQvcmVnbmFtZS5jICAgICAgICAgICAgICAgIHwgIDEwNiArKysrKysrKysrKysKLSBzcmMvYWFyY2g2NC9zaWdsb25nam1wLlMgICAgICAgICAgICAgfCAgIDEyICsKLSBzcmMvYWFyY2g2NC91bndpbmRfaS5oICAgICAgICAgICAgICAgfCAgIDQzICsrKysrCi0gc3JjL2NvcmVkdW1wL19VQ0RfYWNjZXNzX3JlZ19saW51eC5jIHwgICAgNSAKLSBzcmMvcHRyYWNlL19VUFRfcmVnX29mZnNldC5jICAgICAgICAgfCAgIDM2ICsrKysKLSA0MyBmaWxlcyBjaGFuZ2VkLCAyMTg0IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbGlidW53aW5kLWFhcmNoNjQuaAotIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3RkZXAtYWFyY2g2NC9kd2FyZi1jb25maWcuaAotIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3RkZXAtYWFyY2g2NC9qbXBidWYuaAotIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3RkZXAtYWFyY2g2NC9saWJ1bndpbmRfaS5oCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9hYXJjaDY0L0djcmVhdGVfYWRkcl9zcGFjZS5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9hYXJjaDY0L0dnZXRfcHJvY19pbmZvLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2FhcmNoNjQvR2dldF9zYXZlX2xvYy5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9hYXJjaDY0L0dnbG9iYWwuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYWFyY2g2NC9HaW5pdC5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9hYXJjaDY0L0dpbml0X2xvY2FsLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2FhcmNoNjQvR2luaXRfcmVtb3RlLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2FhcmNoNjQvR2lzX3NpZ25hbF9mcmFtZS5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9hYXJjaDY0L0dyZWdzLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2FhcmNoNjQvR3Jlc3VtZS5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9hYXJjaDY0L0dzdGVwLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2FhcmNoNjQvTGNyZWF0ZV9hZGRyX3NwYWNlLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2FhcmNoNjQvTGdldF9wcm9jX2luZm8uYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYWFyY2g2NC9MZ2V0X3NhdmVfbG9jLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2FhcmNoNjQvTGdsb2JhbC5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9hYXJjaDY0L0xpbml0LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2FhcmNoNjQvTGluaXRfbG9jYWwuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYWFyY2g2NC9MaW5pdF9yZW1vdGUuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYWFyY2g2NC9MaXNfc2lnbmFsX2ZyYW1lLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2FhcmNoNjQvTHJlZ3MuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYWFyY2g2NC9McmVzdW1lLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2FhcmNoNjQvTHN0ZXAuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYWFyY2g2NC9nZW4tb2Zmc2V0cy5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9hYXJjaDY0L2luaXQuaAotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYWFyY2g2NC9pc19mcHJlZy5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9hYXJjaDY0L29mZnNldHMuaAotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYWFyY2g2NC9yZWduYW1lLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2FhcmNoNjQvc2lnbG9uZ2ptcC5TCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9hYXJjaDY0L3Vud2luZF9pLmgKLQotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtMiw2ICsyLDkgQEAgaW5jbHVkZV9IRUFERVJTID0gaW5jbHVkZS9saWJ1bndpbmQtZHluYQotICAgICBpbmNsdWRlL2xpYnVud2luZC1wdHJhY2UuaCBcCi0gICAgIGluY2x1ZGUvbGlidW53aW5kLWNvcmVkdW1wLmgKLSAKLStpZiBBUkNIX0FBUkNINjQKLStpbmNsdWRlX0hFQURFUlMgKz0gaW5jbHVkZS9saWJ1bndpbmQtYWFyY2g2NC5oCi0rZW5kaWYKLSBpZiBBUkNIX0FSTQotIGluY2x1ZGVfSEVBREVSUyArPSBpbmNsdWRlL2xpYnVud2luZC1hcm0uaAotIGVuZGlmCi1AQCAtNDEsNiArNDQsOSBAQCBTVUJESVJTID0gc3JjIHRlc3RzIGRvYwotIG5vaW5zdF9IRUFERVJTID0gaW5jbHVkZS9kd2FyZi5oIGluY2x1ZGUvZHdhcmZfaS5oIGluY2x1ZGUvZHdhcmYtZWguaAlcCi0gCWluY2x1ZGUvY29tcGlsZXIuaCBpbmNsdWRlL2xpYnVud2luZF9pLmggaW5jbHVkZS9tZW1wb29sLmgJXAotIAlpbmNsdWRlL3JlbW90ZS5oCQkJCQkJXAotKwlpbmNsdWRlL3RkZXAtYWFyY2g2NC9kd2FyZi1jb25maWcuaAkJCQlcCi0rCWluY2x1ZGUvdGRlcC1hYXJjaDY0L2ptcGJ1Zi5oCQkJCQlcCi0rCWluY2x1ZGUvdGRlcC1hYXJjaDY0L2xpYnVud2luZF9pLmgJCQkJXAotIAlpbmNsdWRlL3RkZXAtYXJtL2R3YXJmLWNvbmZpZy5oCWluY2x1ZGUvdGRlcC1hcm0vZXhfdGFibGVzLmgJXAotIAlpbmNsdWRlL3RkZXAtYXJtL2ptcGJ1Zi5oIGluY2x1ZGUvdGRlcC1hcm0vbGlidW53aW5kX2kuaAlcCi0gCWluY2x1ZGUvdGRlcC1pYTY0L2ptcGJ1Zi5oIGluY2x1ZGUvdGRlcC1pYTY0L3JzZS5oIAkJXAotLS0tIGEvUkVBRE1FCi0rKysgYi9SRUFETUUKLUBAIC05LDYgKzksNyBAQCBzZXZlcmFsIGFyY2hpdGVjdHVyZS9vcGVyYXRpbmctc3lzdGVtIGNvCi0gIExpbnV4L0lBLTY0OglGdWxseSB0ZXN0ZWQgYW5kIHN1cHBvcnRlZC4KLSAgTGludXgvUEFSSVNDOglXb3JrcyB3ZWxsLCBidXQgQyBsaWJyYXJ5IG1pc3NpbmcgdW53aW5kLWluZm8uCi0gIEhQLVVYL0lBLTY0OglNb3N0bHkgd29ya3MgYnV0IGtub3duIHRvIGhhdmUgc29tZSBzZXJpb3VzIGxpbWl0YXRpb25zLgotKyBMaW51eC9BQXJjaDY0OglOZXdseSBhZGRlZC4KLSAgTGludXgvUFBDNjQ6CU5ld2x5IGFkZGVkLgotICBMaW51eC9TdXBlckg6CU5ld2x5IGFkZGVkLgotICBGcmVlQlNEL2kzODY6CU5ld2x5IGFkZGVkLgotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xMDQsNyArMTA0LDcgQEAgU0VUX0FSQ0goWyR0YXJnZXRfY3B1XSxbdGFyZ2V0X2FyY2hdKQotIAotIEFDX0FSR19FTkFCTEUoY29yZWR1bXAsCi0gCUFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1jb3JlZHVtcF0sW2J1aWxkaW5nIGxpYnVud2luZC1jb3JlZHVtcCBsaWJyYXJ5XSksLAotLSAgICAgICAgW0FTX0NBU0UoWyRob3N0X2FyY2hdLCBbYXJtKnxtaXBzKnxzaCp8eDg2Kl0sIFtlbmFibGVfY29yZWR1bXA9eWVzXSwgW2VuYWJsZV9jb3JlZHVtcD1ub10pXQotKyAgICAgICAgW0FTX0NBU0UoWyRob3N0X2FyY2hdLCBbYWFyY2g2NCp8YXJtKnxtaXBzKnxzaCp8eDg2Kl0sIFtlbmFibGVfY29yZWR1bXA9eWVzXSwgW2VuYWJsZV9jb3JlZHVtcD1ub10pXQotICkKLSAKLSBBQ19NU0dfQ0hFQ0tJTkcoW2lmIHdlIHNob3VsZCBidWlsZCBsaWJ1bndpbmQtY29yZWR1bXBdKQotQEAgLTEyMSw2ICsxMjEsNyBAQCBBQ19NU0dfUkVTVUxUKFskdGFyZ2V0X29zXSkKLSAKLSBBTV9DT05ESVRJT05BTChCVUlMRF9DT1JFRFVNUCwgdGVzdCB4JGVuYWJsZV9jb3JlZHVtcCA9IHh5ZXMpCi0gQU1fQ09ORElUSU9OQUwoUkVNT1RFX09OTFksIHRlc3QgeCR0YXJnZXRfYXJjaCAhPSB4JGhvc3RfYXJjaCkKLStBTV9DT05ESVRJT05BTChBUkNIX0FBUkNINjQsIHRlc3QgeCR0YXJnZXRfYXJjaCA9IHhhYXJjaDY0KQotIEFNX0NPTkRJVElPTkFMKEFSQ0hfQVJNLCB0ZXN0IHgkdGFyZ2V0X2FyY2ggPSB4YXJtKQotIEFNX0NPTkRJVElPTkFMKEFSQ0hfSUE2NCwgdGVzdCB4JHRhcmdldF9hcmNoID0geGlhNjQpCi0gQU1fQ09ORElUSU9OQUwoQVJDSF9IUFBBLCB0ZXN0IHgkdGFyZ2V0X2FyY2ggPSB4aHBwYSkKLUBAIC0xMzcsNyArMTM4LDcgQEAgQU1fQ09ORElUSU9OQUwoT1NfRlJFRUJTRCwgZXhwciB4JHRhcmdldAotIEFDX01TR19DSEVDS0lORyhbZm9yIEVMRiBoZWxwZXIgd2lkdGhdKQotIGNhc2UgIiR7dGFyZ2V0X2FyY2h9IiBpbgotIChhcm18aHBwYXxwcGMzMnx4ODZ8c2gpIHVzZV9lbGYzMj15ZXM7IEFDX01TR19SRVNVTFQoWzMyXSk7OwotLShpYTY0fHBwYzY0fHg4Nl82NCkgICAgdXNlX2VsZjY0PXllczsgQUNfTVNHX1JFU1VMVChbNjRdKTs7Ci0rKGFhcmNoNjR8aWE2NHxwcGM2NHx4ODZfNjQpICAgIHVzZV9lbGY2ND15ZXM7IEFDX01TR19SRVNVTFQoWzY0XSk7OwotIChtaXBzKSAgICAgICAgICAgICAgICAgdXNlX2VsZnh4PXllczsgQUNfTVNHX1JFU1VMVChbeHhdKTs7Ci0gKikgICAgICAgICAgICAgICAgICAgICBBQ19NU0dfRVJST1IoW1Vua25vd24gRUxGIHRhcmdldDogJHt0YXJnZXRfYXJjaH1dKQotIGVzYWMKLUBAIC0xODYsNiArMTg3LDcgQEAgQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWN4eC1leGNlcHRpb25zXQotICMgQysrIGV4Y2VwdGlvbiBoYW5kbGluZyBkb2Vzbid0IHdvcmsgdG9vIHdlbGwgb24geDg2Ci0gY2FzZSAkdGFyZ2V0X2FyY2ggaW4KLSAgIHg4NiopIGVuYWJsZV9jeHhfZXhjZXB0aW9ucz1ubzs7Ci0rICBhYXJjaDY0KikgZW5hYmxlX2N4eF9leGNlcHRpb25zPW5vOzsKLSAgIGFybSopIGVuYWJsZV9jeHhfZXhjZXB0aW9ucz1ubzs7Ci0gICBtaXBzKikgZW5hYmxlX2N4eF9leGNlcHRpb25zPW5vOzsKLSAgICopIGVuYWJsZV9jeHhfZXhjZXB0aW9ucz15ZXM7OwotLS0tIC9kZXYvbnVsbAotKysrIGIvaW5jbHVkZS9saWJ1bndpbmQtYWFyY2g2NC5oCi1AQCAtMCwwICsxLDE4NyBAQAotKy8qIGxpYnVud2luZCAtIGEgcGxhdGZvcm0taW5kZXBlbmRlbnQgdW53aW5kIGxpYnJhcnkKLSsgICBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwNCBIZXdsZXR0LVBhY2thcmQgQ28KLSsJQ29udHJpYnV0ZWQgYnkgRGF2aWQgTW9zYmVyZ2VyLVRhbmcgPGRhdmlkbUBocGwuaHAuY29tPgotKyAgIENvcHlyaWdodCAoQykgMjAxMyBMaW5hcm8gTGltaXRlZAotKwotK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIGxpYnVud2luZC4KLSsKLStQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKLSthIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKLSsiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi0rd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAotK2Rpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwotK3Blcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwotK3RoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSsKLStUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQotK2luY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotKwotK1RIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAotK0VYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgotK01FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECi0rTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRQotK0xJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04KLStPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04KLStXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICovCi0rCi0rI2lmbmRlZiBMSUJVTldJTkRfSAotKyNkZWZpbmUgTElCVU5XSU5EX0gKLSsKLSsjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykgfHwgZGVmaW5lZChjX3BsdXNwbHVzKQotK2V4dGVybiAiQyIgewotKyNlbmRpZgotKwotKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgotKyNpbmNsdWRlIDxzdGRkZWYuaD4KLSsjaW5jbHVkZSA8dWNvbnRleHQuaD4KLSsKLSsjZGVmaW5lIFVOV19UQVJHRVQJYWFyY2g2NAotKyNkZWZpbmUgVU5XX1RBUkdFVF9BQVJDSDY0CTEKLSsKLSsjZGVmaW5lIF9VX1RERVBfUVBfVFJVRQkwCS8qIHNlZSBsaWJ1bndpbmQtZHluYW1pYy5oICAqLwotKwotKy8qIFRoaXMgbmVlZHMgdG8gYmUgYmlnIGVub3VnaCB0byBhY2NvbW1vZGF0ZSAic3RydWN0IGN1cnNvciIsIHdoaWxlCi0rICAgbGVhdmluZyBzb21lIHNsYWNrIGZvciBmdXR1cmUgZXhwYW5zaW9uLiAgQ2hhbmdpbmcgdGhpcyB2YWx1ZSB3aWxsCi0rICAgcmVxdWlyZSByZWNvbXBpbGluZyBhbGwgdXNlcnMgb2YgdGhpcyBsaWJyYXJ5LiAgU3RhY2sgYWxsb2NhdGlvbiBpcwotKyAgIHJlbGF0aXZlbHkgY2hlYXAgYW5kIHVud2luZC1zdGF0ZSBjb3B5aW5nIGlzIHJlbGF0aXZlbHkgcmFyZSwgc28gd2UKLSsgICB3YW50IHRvIGVyciBvbiBtYWtpbmcgaXQgcmF0aGVyIHRvbyBiaWcgdGhhbiB0b28gc21hbGwuICAqLwotKwotKyNkZWZpbmUgVU5XX1RERVBfQ1VSU09SX0xFTgk0MDk2Ci0rCi0rdHlwZWRlZiB1aW50NjRfdCB1bndfd29yZF90OwotK3R5cGVkZWYgaW50NjRfdCB1bndfc3dvcmRfdDsKLSsKLSt0eXBlZGVmIGxvbmcgZG91YmxlIHVud190ZGVwX2ZwcmVnX3Q7Ci0rCi0rdHlwZWRlZiBzdHJ1Y3QKLSsgIHsKLSsgICAgLyogbm8gYWFyY2g2NC1zcGVjaWZpYyBhdXhpbGlhcnkgcHJvYy1pbmZvICovCi0rICB9Ci0rdW53X3RkZXBfcHJvY19pbmZvX3Q7Ci0rCi0rdHlwZWRlZiBlbnVtCi0rICB7Ci0rICAgIC8qIDY0LWJpdCBnZW5lcmFsIHJlZ2lzdGVycy4gICovCi0rICAgIFVOV19BQVJDSDY0X1gwLAotKyAgICBVTldfQUFSQ0g2NF9YMSwKLSsgICAgVU5XX0FBUkNINjRfWDIsCi0rICAgIFVOV19BQVJDSDY0X1gzLAotKyAgICBVTldfQUFSQ0g2NF9YNCwKLSsgICAgVU5XX0FBUkNINjRfWDUsCi0rICAgIFVOV19BQVJDSDY0X1g2LAotKyAgICBVTldfQUFSQ0g2NF9YNywKLSsgICAgVU5XX0FBUkNINjRfWDgsCi0rCi0rICAgIC8qIFRlbXBvcmFyeSByZWdpc3RlcnMuICAqLwotKyAgICBVTldfQUFSQ0g2NF9YOSwKLSsgICAgVU5XX0FBUkNINjRfWDEwLAotKyAgICBVTldfQUFSQ0g2NF9YMTEsCi0rICAgIFVOV19BQVJDSDY0X1gxMiwKLSsgICAgVU5XX0FBUkNINjRfWDEzLAotKyAgICBVTldfQUFSQ0g2NF9YMTQsCi0rICAgIFVOV19BQVJDSDY0X1gxNSwKLSsKLSsgICAgLyogSW50cmEtcHJvY2VkdXJlLWNhbGwgdGVtcG9yYXJ5IHJlZ2lzdGVycy4gICovCi0rICAgIFVOV19BQVJDSDY0X1gxNiwKLSsgICAgVU5XX0FBUkNINjRfWDE3LAotKwotKyAgICAvKiBDYWxsZWUtc2F2ZWQgcmVnaXN0ZXJzLiAgKi8KLSsgICAgVU5XX0FBUkNINjRfWDE4LAotKyAgICBVTldfQUFSQ0g2NF9YMTksCi0rICAgIFVOV19BQVJDSDY0X1gyMCwKLSsgICAgVU5XX0FBUkNINjRfWDIxLAotKyAgICBVTldfQUFSQ0g2NF9YMjIsCi0rICAgIFVOV19BQVJDSDY0X1gyMywKLSsgICAgVU5XX0FBUkNINjRfWDI0LAotKyAgICBVTldfQUFSQ0g2NF9YMjUsCi0rICAgIFVOV19BQVJDSDY0X1gyNiwKLSsgICAgVU5XX0FBUkNINjRfWDI3LAotKyAgICBVTldfQUFSQ0g2NF9YMjgsCi0rCi0rICAgIC8qIDY0LWJpdCBmcmFtZSBwb2ludGVyLiAgKi8KLSsgICAgVU5XX0FBUkNINjRfWDI5LAotKwotKyAgICAvKiA2NC1iaXQgbGluayByZWdpc3Rlci4gICovCi0rICAgIFVOV19BQVJDSDY0X1gzMCwKLSsKLSsgICAgLyogNjQtYml0IHN0YWNrIHBvaW50ZXIuICAqLwotKyAgICBVTldfQUFSQ0g2NF9TUCA9ICAzMSwKLSsgICAgVU5XX0FBUkNINjRfUEMsCi0rICAgIFVOV19BQVJDSDY0X1BTVEFURSwKLSsKLSsgICAgLyogMTI4LWJpdCBGUC9BZHZhbmNlZCBTSU1EIHJlZ2lzdGVycy4gICovCi0rICAgIFVOV19BQVJDSDY0X1YwID0gNjQsCi0rICAgIFVOV19BQVJDSDY0X1YxLAotKyAgICBVTldfQUFSQ0g2NF9WMiwKLSsgICAgVU5XX0FBUkNINjRfVjMsCi0rICAgIFVOV19BQVJDSDY0X1Y0LAotKyAgICBVTldfQUFSQ0g2NF9WNSwKLSsgICAgVU5XX0FBUkNINjRfVjYsCi0rICAgIFVOV19BQVJDSDY0X1Y3LAotKyAgICBVTldfQUFSQ0g2NF9WOCwKLSsgICAgVU5XX0FBUkNINjRfVjksCi0rICAgIFVOV19BQVJDSDY0X1YxMCwKLSsgICAgVU5XX0FBUkNINjRfVjExLAotKyAgICBVTldfQUFSQ0g2NF9WMTIsCi0rICAgIFVOV19BQVJDSDY0X1YxMywKLSsgICAgVU5XX0FBUkNINjRfVjE0LAotKyAgICBVTldfQUFSQ0g2NF9WMTUsCi0rICAgIFVOV19BQVJDSDY0X1YxNiwKLSsgICAgVU5XX0FBUkNINjRfVjE3LAotKyAgICBVTldfQUFSQ0g2NF9WMTgsCi0rICAgIFVOV19BQVJDSDY0X1YxOSwKLSsgICAgVU5XX0FBUkNINjRfVjIwLAotKyAgICBVTldfQUFSQ0g2NF9WMjEsCi0rICAgIFVOV19BQVJDSDY0X1YyMiwKLSsgICAgVU5XX0FBUkNINjRfVjIzLAotKyAgICBVTldfQUFSQ0g2NF9WMjQsCi0rICAgIFVOV19BQVJDSDY0X1YyNSwKLSsgICAgVU5XX0FBUkNINjRfVjI2LAotKyAgICBVTldfQUFSQ0g2NF9WMjcsCi0rICAgIFVOV19BQVJDSDY0X1YyOCwKLSsgICAgVU5XX0FBUkNINjRfVjI5LAotKyAgICBVTldfQUFSQ0g2NF9WMzAsCi0rICAgIFVOV19BQVJDSDY0X1YzMSwKLSsKLSsgICAgVU5XX0FBUkNINjRfRlBTUiwKLSsgICAgVU5XX0FBUkNINjRfRlBDUiwKLSsKLSsgICAgLyogRm9yIEFBcmNoNjQsIHRoZSBDRkEgaXMgdGhlIHZhbHVlIG9mIFNQICh4MzEpIGF0IHRoZSBjYWxsIHNpdGUgb2YgdGhlCi0rICAgICAgIHByZXZpb3VzIGZyYW1lLiAgKi8KLSsgICAgVU5XX0FBUkNINjRfQ0ZBID0gVU5XX0FBUkNINjRfU1AsCi0rCi0rICAgIFVOV19UREVQX0xBU1RfUkVHID0gVU5XX0FBUkNINjRfRlBDUiwKLSsKLSsgICAgVU5XX1RERVBfSVAgPSBVTldfQUFSQ0g2NF9YMzAsCi0rICAgIFVOV19UREVQX1NQID0gVU5XX0FBUkNINjRfU1AsCi0rICAgIFVOV19UREVQX0VIID0gVU5XX0FBUkNINjRfWDAsCi0rCi0rICB9Ci0rYWFyY2g2NF9yZWdudW1fdDsKLSsKLSsvKiBVc2UgUjAgdGhyb3VnaCBSMyB0byBwYXNzIGV4Y2VwdGlvbiBoYW5kbGluZyBpbmZvcm1hdGlvbi4gICovCi0rI2RlZmluZSBVTldfVERFUF9OVU1fRUhfUkVHUwk0Ci0rCi0rdHlwZWRlZiBzdHJ1Y3QgdW53X3RkZXBfc2F2ZV9sb2MKLSsgIHsKLSsgICAgLyogQWRkaXRpb25hbCB0YXJnZXQtZGVwZW5kZW50IGluZm8gb24gYSBzYXZlIGxvY2F0aW9uLiAgKi8KLSsgIH0KLSt1bndfdGRlcF9zYXZlX2xvY190OwotKwotKwotKy8qIE9uIEFBcmNoNjQsIHdlIGNhbiBkaXJlY3RseSB1c2UgdWNvbnRleHRfdCBhcyB0aGUgdW53aW5kIGNvbnRleHQuICAqLwotK3R5cGVkZWYgdWNvbnRleHRfdCB1bndfdGRlcF9jb250ZXh0X3Q7Ci0rCi0rI2luY2x1ZGUgImxpYnVud2luZC1jb21tb24uaCIKLSsjaW5jbHVkZSAibGlidW53aW5kLWR5bmFtaWMuaCIKLSsKLSsjZGVmaW5lIHVud190ZGVwX2dldGNvbnRleHQodWMpICAgICAgICAgKGdldGNvbnRleHQgKHVjKSwgMCkKLSsjZGVmaW5lIHVud190ZGVwX2lzX2ZwcmVnCQlVTldfQVJDSF9PQkooaXNfZnByZWcpCi0rCi0rZXh0ZXJuIGludCB1bndfdGRlcF9pc19mcHJlZyAoaW50KTsKLSsKLSsjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykgfHwgZGVmaW5lZChjX3BsdXNwbHVzKQotK30KLSsjZW5kaWYKLSsKLSsjZW5kaWYgLyogTElCVU5XSU5EX0ggKi8KLS0tLSBhL2luY2x1ZGUvbGlidW53aW5kLmguaW4KLSsrKyBiL2luY2x1ZGUvbGlidW53aW5kLmguaW4KLUBAIC0zLDcgKzMsOSBAQAotIAotICNpZm5kZWYgVU5XX1JFTU9URV9PTkxZCi0gCi0tI2lmIGRlZmluZWQgX19hcm1fXwotKyNpZiBkZWZpbmVkIF9fYWFyY2g2NF9fCi0rI2luY2x1ZGUgImxpYnVud2luZC1hYXJjaDY0LmgiCi0rI2VsaWYgZGVmaW5lZCBfX2FybV9fCi0gIyBpbmNsdWRlICJsaWJ1bndpbmQtYXJtLmgiCi0gI2VsaWYgZGVmaW5lZCBfX2hwcGFfXwotICMgaW5jbHVkZSAibGlidW53aW5kLWhwcGEuaCIKLS0tLSAvZGV2L251bGwKLSsrKyBiL2luY2x1ZGUvdGRlcC1hYXJjaDY0L2R3YXJmLWNvbmZpZy5oCi1AQCAtMCwwICsxLDUyIEBACi0rLyogbGlidW53aW5kIC0gYSBwbGF0Zm9ybS1pbmRlcGVuZGVudCB1bndpbmQgbGlicmFyeQotKyAgIENvcHlyaWdodCAoQykgMjAwOCBDb2RlU291cmNlcnkKLSsgICBDb3B5cmlnaHQgKEMpIDIwMTIgVG9tbWkgUmFudGFsYSA8dHQucmFudGFsYUBnbWFpbC5jb20+Ci0rICAgQ29weXJpZ2h0IChDKSAyMDEzIExpbmFybyBMaW1pdGVkCi0rCi0rVGhpcyBmaWxlIGlzIHBhcnQgb2YgbGlidW53aW5kLgotKwotK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwotK2EgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQotKyJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKLSt3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCi0rZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCi0rcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCi0rdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotKwotK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCi0raW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0rCi0rVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCi0rRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi0rTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKLStOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFCi0rTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTgotK09GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgotK1dJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgKi8KLSsKLSsjaWZuZGVmIGR3YXJmX2NvbmZpZ19oCi0rI2RlZmluZSBkd2FyZl9jb25maWdfaAotKwotKy8qIFRoaXMgbWF0Y2hlcyB0aGUgdmFsdWUgdWRlcyBieSBHQ0MgKHNlZQotKyAgIGdjYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0Lmg6RFdBUkZfRlJBTUVfUkVHSVNURVJTLiAgKi8KLSsjZGVmaW5lIERXQVJGX05VTV9QUkVTRVJWRURfUkVHUwk5NwotKwotKy8qIFJldHVybiBUUlVFIGlmIHRoZSBBRERSX1NQQUNFIHVzZXMgYmlnLWVuZGlhbiBieXRlLW9yZGVyLiAgKi8KLSsjZGVmaW5lIGR3YXJmX2lzX2JpZ19lbmRpYW4oYWRkcl9zcGFjZSkJMAotKwotKyNkZWZpbmUgZHdhcmZfdG9fdW53X3JlZ251bShyZWcpICgoKHJlZykgPD0gVU5XX0FBUkNINjRfVjMxKSA/IChyZWcpIDogMCkKLSsKLSsvKiBDb252ZXJ0IGEgcG9pbnRlciB0byBhIGR3YXJmX2N1cnNvciBzdHJ1Y3R1cmUgdG8gYSBwb2ludGVyIHRvCi0rICAgdW53X2N1cnNvcl90LiAgKi8KLSsjZGVmaW5lIGR3YXJmX3RvX2N1cnNvcihjKQkoKHVud19jdXJzb3JfdCAqKSAoYykpCi0rCi0rdHlwZWRlZiBzdHJ1Y3QgZHdhcmZfbG9jCi0rICB7Ci0rICAgIHVud193b3JkX3QgdmFsOwotKyNpZm5kZWYgVU5XX0xPQ0FMX09OTFkKLSsgICAgdW53X3dvcmRfdCB0eXBlOwkJLyogc2VlIERXQVJGX0xPQ19UWVBFXyogbWFjcm9zLiAgKi8KLSsjZW5kaWYKLSsgIH0KLStkd2FyZl9sb2NfdDsKLSsKLSsjZW5kaWYgLyogZHdhcmZfY29uZmlnX2ggKi8KLS0tLSAvZGV2L251bGwKLSsrKyBiL2luY2x1ZGUvdGRlcC1hYXJjaDY0L2ptcGJ1Zi5oCi1AQCAtMCwwICsxLDMzIEBACi0rLyogbGlidW53aW5kIC0gYSBwbGF0Zm9ybS1pbmRlcGVuZGVudCB1bndpbmQgbGlicmFyeQotKyAgIENvcHlyaWdodCAoQykgMjAwOCBDb2RlU291cmNlcnkKLSsgICBDb3B5cmlnaHQgKEMpIDIwMTMgTGluYXJvIExpbWl0ZWQKLSsKLStUaGlzIGZpbGUgaXMgcGFydCBvZiBsaWJ1bndpbmQuCi0rCi0rUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCi0rYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCi0rIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwotK3dpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKLStkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KLStwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KLSt0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0rCi0rVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKLStpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLSsKLStUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKLStFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLStNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAotK05PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUKLStMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OCi0rT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OCi0rV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAqLwotKwotKy8qIFVzZSBnbGliYydzIGp1bXAtYnVmZmVyIGluZGljZXM7IE5QVEwgcGVla3MgYXQgU1A6ICovCi0rCi0rLyogRklYTUUgZm9yIEFBcmNoNjQgICovCi0rCi0rI2RlZmluZSBKQl9TUAkJMTMKLSsjZGVmaW5lIEpCX1JQCQkxNAotKyNkZWZpbmUgSkJfTUFTS19TQVZFRAkxNQotKyNkZWZpbmUgSkJfTUFTSwkJMTYKLS0tLSAvZGV2L251bGwKLSsrKyBiL2luY2x1ZGUvdGRlcC1hYXJjaDY0L2xpYnVud2luZF9pLmgKLUBAIC0wLDAgKzEsMjk0IEBACi0rLyogbGlidW53aW5kIC0gYSBwbGF0Zm9ybS1pbmRlcGVuZGVudCB1bndpbmQgbGlicmFyeQotKyAgIENvcHlyaWdodCAoQykgMjAwMS0yMDA1IEhld2xldHQtUGFja2FyZCBDbwotKwlDb250cmlidXRlZCBieSBEYXZpZCBNb3NiZXJnZXItVGFuZyA8ZGF2aWRtQGhwbC5ocC5jb20+Ci0rICAgQ29weXJpZ2h0IChDKSAyMDEzIExpbmFybyBMaW1pdGVkCi0rCi0rVGhpcyBmaWxlIGlzIHBhcnQgb2YgbGlidW53aW5kLgotKwotK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwotK2EgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQotKyJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKLSt3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCi0rZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCi0rcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCi0rdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotKwotK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCi0raW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0rCi0rVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCi0rRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi0rTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKLStOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFCi0rTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTgotK09GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgotK1dJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgKi8KLSsKLSsjaWZuZGVmIEFBUkNINjRfTElCVU5XSU5EX0lfSAotKyNkZWZpbmUgQUFSQ0g2NF9MSUJVTldJTkRfSV9ICi0rCi0rLyogVGFyZ2V0LWRlcGVuZGVudCBkZWZpbml0aW9ucyB0aGF0IGFyZSBpbnRlcm5hbCB0byBsaWJ1bndpbmQgYnV0IG5lZWQKLSsgICB0byBiZSBzaGFyZWQgd2l0aCB0YXJnZXQtaW5kZXBlbmRlbnQgY29kZS4gICovCi0rCi0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxsaWJ1bndpbmQuaD4KLSsKLSsjaW5jbHVkZSAiZWxmNjQuaCIKLSsjaW5jbHVkZSAibWVtcG9vbC5oIgotKyNpbmNsdWRlICJkd2FyZi5oIgotKwotK3R5cGVkZWYgc3RydWN0Ci0rICB7Ci0rICAgIC8qIG5vIGFhcmNoNjQtc3BlY2lmaWMgZmFzdCB0cmFjZSAqLwotKyAgfQotK3Vud190ZGVwX2ZyYW1lX3Q7Ci0rCi0rI2lmZGVmIFVOV19MT0NBTF9PTkxZCi0rCi0rdHlwZWRlZiB1bndfd29yZF90IGFhcmNoNjRfbG9jX3Q7Ci0rCi0rI2Vsc2UgLyogIVVOV19MT0NBTF9PTkxZICovCi0rCi0rdHlwZWRlZiBzdHJ1Y3QgYWFyY2g2NF9sb2MKLSsgIHsKLSsgICAgdW53X3dvcmRfdCB3MCwgdzE7Ci0rICB9Ci0rYWFyY2g2NF9sb2NfdDsKLSsKLSsjZW5kaWYgLyogIVVOV19MT0NBTF9PTkxZICovCi0rCi0rc3RydWN0IHVud19hZGRyX3NwYWNlCi0rICB7Ci0rICAgIHN0cnVjdCB1bndfYWNjZXNzb3JzIGFjYzsKLSsgICAgaW50IGJpZ19lbmRpYW47Ci0rICAgIHVud19jYWNoaW5nX3BvbGljeV90IGNhY2hpbmdfcG9saWN5OwotKyNpZmRlZiBIQVZFX0FUT01JQ19PUFNfSAotKyAgICBBT190IGNhY2hlX2dlbmVyYXRpb247Ci0rI2Vsc2UKLSsgICAgdWludDMyX3QgY2FjaGVfZ2VuZXJhdGlvbjsKLSsjZW5kaWYKLSsgICAgdW53X3dvcmRfdCBkeW5fZ2VuZXJhdGlvbjsgICAgICAgICAgLyogc2VlIGR5bi1jb21tb24uaCAqLwotKyAgICB1bndfd29yZF90IGR5bl9pbmZvX2xpc3RfYWRkcjsJLyogKGNhY2hlZCkgZHluX2luZm9fbGlzdF9hZGRyICovCi0rICAgIHN0cnVjdCBkd2FyZl9yc19jYWNoZSBnbG9iYWxfY2FjaGU7Ci0rICAgIHN0cnVjdCB1bndfZGVidWdfZnJhbWVfbGlzdCAqZGVidWdfZnJhbWVzOwotKyAgIH07Ci0rCi0rc3RydWN0IGN1cnNvcgotKyAgewotKyAgICBzdHJ1Y3QgZHdhcmZfY3Vyc29yIGR3YXJmOyAgICAgICAgICAvKiBtdXN0IGJlIGZpcnN0ICovCi0rICAgIGVudW0KLSsgICAgICB7Ci0rICAgICAgICBBQVJDSDY0X1NDRl9OT05FLAotKyAgICAgICAgQUFSQ0g2NF9TQ0ZfTElOVVhfUlRfU0lHRlJBTUUsCi0rICAgICAgfQotKyAgICBzaWdjb250ZXh0X2Zvcm1hdDsKLSsgICAgdW53X3dvcmRfdCBzaWdjb250ZXh0X2FkZHI7Ci0rICAgIHVud193b3JkX3Qgc2lnY29udGV4dF9zcDsKLSsgICAgdW53X3dvcmRfdCBzaWdjb250ZXh0X3BjOwotKyAgfTsKLSsKLSsjZGVmaW5lIERXQVJGX0dFVF9MT0MobCkgICAgICAgICgobCkudmFsKQotKwotKyNpZmRlZiBVTldfTE9DQUxfT05MWQotKyMgZGVmaW5lIERXQVJGX05VTExfTE9DICAgICAgICAgRFdBUkZfTE9DICgwLCAwKQotKyMgZGVmaW5lIERXQVJGX0lTX05VTExfTE9DKGwpICAgKERXQVJGX0dFVF9MT0MgKGwpID09IDApCi0rIyBkZWZpbmUgRFdBUkZfTE9DKHIsIHQpICAgICAgICAoKGR3YXJmX2xvY190KSB7IC52YWwgPSAocikgfSkKLSsjIGRlZmluZSBEV0FSRl9JU19SRUdfTE9DKGwpICAgIDAKLSsjIGRlZmluZSBEV0FSRl9SRUdfTE9DKGMscikgICAgIChEV0FSRl9MT0MoKHVud193b3JkX3QpICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZGVwX3VjX2FkZHIoKGMpLT5hc19hcmcsIChyKSksIDApKQotKyMgZGVmaW5lIERXQVJGX01FTV9MT0MoYyxtKSAgICAgRFdBUkZfTE9DICgobSksIDApCi0rIyBkZWZpbmUgRFdBUkZfRlBSRUdfTE9DKGMscikgICAoRFdBUkZfTE9DKCh1bndfd29yZF90KSAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGRlcF91Y19hZGRyKChjKS0+YXNfYXJnLCAocikpLCAwKSkKLSsKLStzdGF0aWMgaW5saW5lIGludAotK2R3YXJmX2dldGZwIChzdHJ1Y3QgZHdhcmZfY3Vyc29yICpjLCBkd2FyZl9sb2NfdCBsb2MsIHVud19mcHJlZ190ICp2YWwpCi0rewotKyAgaWYgKCFEV0FSRl9HRVRfTE9DIChsb2MpKQotKyAgICByZXR1cm4gLTE7Ci0rICAqdmFsID0gKih1bndfZnByZWdfdCAqKSBEV0FSRl9HRVRfTE9DIChsb2MpOwotKyAgcmV0dXJuIDA7Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgaW50Ci0rZHdhcmZfcHV0ZnAgKHN0cnVjdCBkd2FyZl9jdXJzb3IgKmMsIGR3YXJmX2xvY190IGxvYywgdW53X2ZwcmVnX3QgdmFsKQotK3sKLSsgIGlmICghRFdBUkZfR0VUX0xPQyAobG9jKSkKLSsgICAgcmV0dXJuIC0xOwotKyAgKih1bndfZnByZWdfdCAqKSBEV0FSRl9HRVRfTE9DIChsb2MpID0gdmFsOwotKyAgcmV0dXJuIDA7Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgaW50Ci0rZHdhcmZfZ2V0IChzdHJ1Y3QgZHdhcmZfY3Vyc29yICpjLCBkd2FyZl9sb2NfdCBsb2MsIHVud193b3JkX3QgKnZhbCkKLSt7Ci0rICBpZiAoIURXQVJGX0dFVF9MT0MgKGxvYykpCi0rICAgIHJldHVybiAtMTsKLSsgICp2YWwgPSAqKHVud193b3JkX3QgKikgRFdBUkZfR0VUX0xPQyAobG9jKTsKLSsgIHJldHVybiAwOwotK30KLSsKLStzdGF0aWMgaW5saW5lIGludAotK2R3YXJmX3B1dCAoc3RydWN0IGR3YXJmX2N1cnNvciAqYywgZHdhcmZfbG9jX3QgbG9jLCB1bndfd29yZF90IHZhbCkKLSt7Ci0rICBpZiAoIURXQVJGX0dFVF9MT0MgKGxvYykpCi0rICAgIHJldHVybiAtMTsKLSsgICoodW53X3dvcmRfdCAqKSBEV0FSRl9HRVRfTE9DIChsb2MpID0gdmFsOwotKyAgcmV0dXJuIDA7Ci0rfQotKwotKyNlbHNlIC8qICFVTldfTE9DQUxfT05MWSAqLwotKyMgZGVmaW5lIERXQVJGX0xPQ19UWVBFX0ZQICAgICAgKDEgPDwgMCkKLSsjIGRlZmluZSBEV0FSRl9MT0NfVFlQRV9SRUcgICAgICgxIDw8IDEpCi0rIyBkZWZpbmUgRFdBUkZfTlVMTF9MT0MgICAgICAgICBEV0FSRl9MT0MgKDAsIDApCi0rIyBkZWZpbmUgRFdBUkZfSVNfTlVMTF9MT0MobCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAoeyBkd2FyZl9sb2NfdCBfbCA9IChsKTsgX2wudmFsID09IDAgJiYgX2wudHlwZSA9PSAwOyB9KQotKyMgZGVmaW5lIERXQVJGX0xPQyhyLCB0KSAgICAgICAgKChkd2FyZl9sb2NfdCkgeyAudmFsID0gKHIpLCAudHlwZSA9ICh0KSB9KQotKyMgZGVmaW5lIERXQVJGX0lTX1JFR19MT0MobCkgICAgKCgobCkudHlwZSAmIERXQVJGX0xPQ19UWVBFX1JFRykgIT0gMCkKLSsjIGRlZmluZSBEV0FSRl9JU19GUF9MT0MobCkgICAgICgoKGwpLnR5cGUgJiBEV0FSRl9MT0NfVFlQRV9GUCkgIT0gMCkKLSsjIGRlZmluZSBEV0FSRl9SRUdfTE9DKGMscikgICAgIERXQVJGX0xPQygociksIERXQVJGX0xPQ19UWVBFX1JFRykKLSsjIGRlZmluZSBEV0FSRl9NRU1fTE9DKGMsbSkgICAgIERXQVJGX0xPQyAoKG0pLCAwKQotKyMgZGVmaW5lIERXQVJGX0ZQUkVHX0xPQyhjLHIpICAgRFdBUkZfTE9DKChyKSwgKERXQVJGX0xPQ19UWVBFX1JFRyAgICAgIFwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERXQVJGX0xPQ19UWVBFX0ZQKSkKLSsKLStzdGF0aWMgaW5saW5lIGludAotK2R3YXJmX2dldGZwIChzdHJ1Y3QgZHdhcmZfY3Vyc29yICpjLCBkd2FyZl9sb2NfdCBsb2MsIHVud19mcHJlZ190ICp2YWwpCi0rewotKyAgY2hhciAqdmFscCA9IChjaGFyICopICZ2YWw7Ci0rICB1bndfd29yZF90IGFkZHI7Ci0rICBpbnQgcmV0OwotKwotKyAgaWYgKERXQVJGX0lTX05VTExfTE9DIChsb2MpKQotKyAgICByZXR1cm4gLVVOV19FQkFEUkVHOwotKwotKyAgaWYgKERXQVJGX0lTX1JFR19MT0MgKGxvYykpCi0rICAgIHJldHVybiAoKmMtPmFzLT5hY2MuYWNjZXNzX2ZwcmVnKSAoYy0+YXMsIERXQVJGX0dFVF9MT0MgKGxvYyksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLCAwLCBjLT5hc19hcmcpOwotKwotKyAgYWRkciA9IERXQVJGX0dFVF9MT0MgKGxvYyk7Ci0rICBpZiAoKHJldCA9ICgqYy0+YXMtPmFjYy5hY2Nlc3NfbWVtKSAoYy0+YXMsIGFkZHIgKyAwLCAodW53X3dvcmRfdCAqKSB2YWxwLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIGMtPmFzX2FyZykpIDwgMCkKLSsgICAgcmV0dXJuIHJldDsKLSsKLSsgIHJldHVybiAoKmMtPmFzLT5hY2MuYWNjZXNzX21lbSkgKGMtPmFzLCBhZGRyICsgNCwgKHVud193b3JkX3QgKikgdmFscCArIDEsIDAsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLT5hc19hcmcpOwotK30KLSsKLStzdGF0aWMgaW5saW5lIGludAotK2R3YXJmX3B1dGZwIChzdHJ1Y3QgZHdhcmZfY3Vyc29yICpjLCBkd2FyZl9sb2NfdCBsb2MsIHVud19mcHJlZ190IHZhbCkKLSt7Ci0rICBjaGFyICp2YWxwID0gKGNoYXIgKikgJnZhbDsKLSsgIHVud193b3JkX3QgYWRkcjsKLSsgIGludCByZXQ7Ci0rCi0rICBpZiAoRFdBUkZfSVNfTlVMTF9MT0MgKGxvYykpCi0rICAgIHJldHVybiAtVU5XX0VCQURSRUc7Ci0rCi0rICBpZiAoRFdBUkZfSVNfUkVHX0xPQyAobG9jKSkKLSsgICAgcmV0dXJuICgqYy0+YXMtPmFjYy5hY2Nlc3NfZnByZWcpIChjLT5hcywgRFdBUkZfR0VUX0xPQyAobG9jKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmFsLCAxLCBjLT5hc19hcmcpOwotKwotKyAgYWRkciA9IERXQVJGX0dFVF9MT0MgKGxvYyk7Ci0rICBpZiAoKHJldCA9ICgqYy0+YXMtPmFjYy5hY2Nlc3NfbWVtKSAoYy0+YXMsIGFkZHIgKyAwLCAodW53X3dvcmRfdCAqKSB2YWxwLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIGMtPmFzX2FyZykpIDwgMCkKLSsgICAgcmV0dXJuIHJldDsKLSsKLSsgIHJldHVybiAoKmMtPmFzLT5hY2MuYWNjZXNzX21lbSkgKGMtPmFzLCBhZGRyICsgNCwgKHVud193b3JkX3QgKikgdmFscCArIDEsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCBjLT5hc19hcmcpOwotK30KLSsKLStzdGF0aWMgaW5saW5lIGludAotK2R3YXJmX2dldCAoc3RydWN0IGR3YXJmX2N1cnNvciAqYywgZHdhcmZfbG9jX3QgbG9jLCB1bndfd29yZF90ICp2YWwpCi0rewotKyAgaWYgKERXQVJGX0lTX05VTExfTE9DIChsb2MpKQotKyAgICByZXR1cm4gLVVOV19FQkFEUkVHOwotKwotKyAgLyogSWYgYSBjb2RlLWdlbmVyYXRvciB3ZXJlIHRvIHNhdmUgYSB2YWx1ZSBvZiB0eXBlIHVud193b3JkX3QgaW4gYQotKyAgICAgZmxvYXRpbmctcG9pbnQgcmVnaXN0ZXIsIHdlIHdvdWxkIGhhdmUgdG8gc3VwcG9ydCB0aGlzIGNhc2UuICBJCi0rICAgICBzdXBwb3NlIGl0IGNvdWxkIGhhcHBlbiB3aXRoIE1NWCByZWdpc3RlcnMsIGJ1dCBkb2VzIGl0IHJlYWxseQotKyAgICAgaGFwcGVuPyAgKi8KLSsgIGFzc2VydCAoIURXQVJGX0lTX0ZQX0xPQyAobG9jKSk7Ci0rCi0rICBpZiAoRFdBUkZfSVNfUkVHX0xPQyAobG9jKSkKLSsgICAgcmV0dXJuICgqYy0+YXMtPmFjYy5hY2Nlc3NfcmVnKSAoYy0+YXMsIERXQVJGX0dFVF9MT0MgKGxvYyksIHZhbCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgYy0+YXNfYXJnKTsKLSsgIGVsc2UKLSsgICAgcmV0dXJuICgqYy0+YXMtPmFjYy5hY2Nlc3NfbWVtKSAoYy0+YXMsIERXQVJGX0dFVF9MT0MgKGxvYyksIHZhbCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgYy0+YXNfYXJnKTsKLSt9Ci0rCi0rc3RhdGljIGlubGluZSBpbnQKLStkd2FyZl9wdXQgKHN0cnVjdCBkd2FyZl9jdXJzb3IgKmMsIGR3YXJmX2xvY190IGxvYywgdW53X3dvcmRfdCB2YWwpCi0rewotKyAgaWYgKERXQVJGX0lTX05VTExfTE9DIChsb2MpKQotKyAgICByZXR1cm4gLVVOV19FQkFEUkVHOwotKwotKyAgLyogSWYgYSBjb2RlLWdlbmVyYXRvciB3ZXJlIHRvIHNhdmUgYSB2YWx1ZSBvZiB0eXBlIHVud193b3JkX3QgaW4gYQotKyAgICAgZmxvYXRpbmctcG9pbnQgcmVnaXN0ZXIsIHdlIHdvdWxkIGhhdmUgdG8gc3VwcG9ydCB0aGlzIGNhc2UuICBJCi0rICAgICBzdXBwb3NlIGl0IGNvdWxkIGhhcHBlbiB3aXRoIE1NWCByZWdpc3RlcnMsIGJ1dCBkb2VzIGl0IHJlYWxseQotKyAgICAgaGFwcGVuPyAgKi8KLSsgIGFzc2VydCAoIURXQVJGX0lTX0ZQX0xPQyAobG9jKSk7Ci0rCi0rICBpZiAoRFdBUkZfSVNfUkVHX0xPQyAobG9jKSkKLSsgICAgcmV0dXJuICgqYy0+YXMtPmFjYy5hY2Nlc3NfcmVnKSAoYy0+YXMsIERXQVJGX0dFVF9MT0MgKGxvYyksICZ2YWwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIGMtPmFzX2FyZyk7Ci0rICBlbHNlCi0rICAgIHJldHVybiAoKmMtPmFzLT5hY2MuYWNjZXNzX21lbSkgKGMtPmFzLCBEV0FSRl9HRVRfTE9DIChsb2MpLCAmdmFsLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCBjLT5hc19hcmcpOwotK30KLSsKLSsjZW5kaWYgLyogIVVOV19MT0NBTF9PTkxZICovCi0rCi0rCi0rCi0rI2RlZmluZSB0ZGVwX2dldGNvbnRleHRfdHJhY2UgICAgICAgICAgIHVud19nZXRjb250ZXh0Ci0rI2RlZmluZSB0ZGVwX2luaXRfZG9uZQkJCVVOV19PQkooaW5pdF9kb25lKQotKyNkZWZpbmUgdGRlcF9pbml0CQkJVU5XX09CSihpbml0KQotKy8qIFBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgVU5XX0lORk9fRk9STUFUX1RBQkxFIG5lZWQgdG8gZGVmaW5lCi0rICAgdGRlcF9zZWFyY2hfdW53aW5kX3RhYmxlLiAgKi8KLSsjZGVmaW5lIHRkZXBfc2VhcmNoX3Vud2luZF90YWJsZQlkd2FyZl9zZWFyY2hfdW53aW5kX3RhYmxlCi0rI2RlZmluZSB0ZGVwX2ZpbmRfdW53aW5kX3RhYmxlCSAgICAgICAgZHdhcmZfZmluZF91bndpbmRfdGFibGUKLSsjZGVmaW5lIHRkZXBfdWNfYWRkcgkJCVVOV19PQkoodWNfYWRkcikKLSsjZGVmaW5lIHRkZXBfZ2V0X2VsZl9pbWFnZQkJVU5XX0FSQ0hfT0JKKGdldF9lbGZfaW1hZ2UpCi0rI2RlZmluZSB0ZGVwX2FjY2Vzc19yZWcJCQlVTldfT0JKKGFjY2Vzc19yZWcpCi0rI2RlZmluZSB0ZGVwX2FjY2Vzc19mcHJlZwkJVU5XX09CSihhY2Nlc3NfZnByZWcpCi0rI2RlZmluZSB0ZGVwX2ZldGNoX2ZyYW1lKGMsaXAsbikJZG8ge30gd2hpbGUoMCkKLSsjZGVmaW5lIHRkZXBfY2FjaGVfZnJhbWUoYyxycykJCWRvIHt9IHdoaWxlKDApCi0rI2RlZmluZSB0ZGVwX3JldXNlX2ZyYW1lKGMscnMpCQlkbyB7fSB3aGlsZSgwKQotKyNkZWZpbmUgdGRlcF9zdGFzaF9mcmFtZShjLHJzKQkJZG8ge30gd2hpbGUoMCkKLSsjZGVmaW5lIHRkZXBfdHJhY2UoY3VyLGFkZHIsbikJCSgtVU5XX0VOT0lORk8pCi0rCi0rI2lmZGVmIFVOV19MT0NBTF9PTkxZCi0rIyBkZWZpbmUgdGRlcF9maW5kX3Byb2NfaW5mbyhjLGlwLG4pICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgIGR3YXJmX2ZpbmRfcHJvY19pbmZvKChjKS0+YXMsIChpcCksICYoYyktPnBpLCAobiksICAgICAgXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjKS0+YXNfYXJnKQotKyMgZGVmaW5lIHRkZXBfcHV0X3Vud2luZF9pbmZvKGFzLHBpLGFyZykgICAgICAgICAgICAgICAgXAotKyAgICAgICAgZHdhcmZfcHV0X3Vud2luZF9pbmZvKChhcyksIChwaSksIChhcmcpKQotKyNlbHNlCi0rIyBkZWZpbmUgdGRlcF9maW5kX3Byb2NfaW5mbyhjLGlwLG4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgKCooYyktPmFzLT5hY2MuZmluZF9wcm9jX2luZm8pKChjKS0+YXMsIChpcCksICYoYyktPnBpLCAobiksICAgIFwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYyktPmFzX2FyZykKLSsjIGRlZmluZSB0ZGVwX3B1dF91bndpbmRfaW5mbyhhcyxwaSxhcmcpICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICgqKGFzKS0+YWNjLnB1dF91bndpbmRfaW5mbykoKGFzKSwgKHBpKSwgKGFyZykpCi0rI2VuZGlmCi0rCi0rI2RlZmluZSB0ZGVwX2dldF9hcyhjKSAgICAgICAgICAgICAgICAgICgoYyktPmR3YXJmLmFzKQotKyNkZWZpbmUgdGRlcF9nZXRfYXNfYXJnKGMpICAgICAgICAgICAgICAoKGMpLT5kd2FyZi5hc19hcmcpCi0rI2RlZmluZSB0ZGVwX2dldF9pcChjKSAgICAgICAgICAgICAgICAgICgoYyktPmR3YXJmLmlwKQotKyNkZWZpbmUgdGRlcF9iaWdfZW5kaWFuKGFzKSAgICAgICAgICAgICAoKGFzKS0+YmlnX2VuZGlhbikKLSsKLStleHRlcm4gaW50IHRkZXBfaW5pdF9kb25lOwotKwotK2V4dGVybiB2b2lkIHRkZXBfaW5pdCAodm9pZCk7Ci0rZXh0ZXJuIGludCB0ZGVwX3NlYXJjaF91bndpbmRfdGFibGUgKHVud19hZGRyX3NwYWNlX3QgYXMsIHVud193b3JkX3QgaXAsCi0rCQkJCSAgICAgdW53X2R5bl9pbmZvX3QgKmRpLCB1bndfcHJvY19pbmZvX3QgKnBpLAotKwkJCQkgICAgIGludCBuZWVkX3Vud2luZF9pbmZvLCB2b2lkICphcmcpOwotK2V4dGVybiB2b2lkICp0ZGVwX3VjX2FkZHIgKHVud190ZGVwX2NvbnRleHRfdCAqdWMsIGludCByZWcpOwotK2V4dGVybiBpbnQgdGRlcF9nZXRfZWxmX2ltYWdlIChzdHJ1Y3QgZWxmX2ltYWdlICplaSwgcGlkX3QgcGlkLCB1bndfd29yZF90IGlwLAotKwkJCSAgICAgICB1bnNpZ25lZCBsb25nICpzZWdiYXNlLCB1bnNpZ25lZCBsb25nICptYXBvZmYsCi0rCQkJICAgICAgIGNoYXIgKnBhdGgsIHNpemVfdCBwYXRobGVuKTsKLStleHRlcm4gaW50IHRkZXBfYWNjZXNzX3JlZyAoc3RydWN0IGN1cnNvciAqYywgdW53X3JlZ251bV90IHJlZywKLSsJCQkgICAgdW53X3dvcmRfdCAqdmFscCwgaW50IHdyaXRlKTsKLStleHRlcm4gaW50IHRkZXBfYWNjZXNzX2ZwcmVnIChzdHJ1Y3QgY3Vyc29yICpjLCB1bndfcmVnbnVtX3QgcmVnLAotKwkJCSAgICAgIHVud19mcHJlZ190ICp2YWxwLCBpbnQgd3JpdGUpOwotKwotKyNlbmRpZiAvKiBBQVJDSDY0X0xJQlVOV0lORF9JX0ggKi8KLS0tLSBhL2luY2x1ZGUvdGRlcC9kd2FyZi1jb25maWcuaAotKysrIGIvaW5jbHVkZS90ZGVwL2R3YXJmLWNvbmZpZy5oCi1AQCAtMSw3ICsxLDkgQEAKLSAvKiBQcm92aWRlIGEgcmVhbCBmaWxlIC0gbm90IGEgc3ltbGluayAtIGFzIGl0IHdvdWxkIGNhdXNlIG11bHRpYXJjaCBjb25mbGljdHMKLSAgICB3aGVuIG11bHRpcGxlIGRpZmZlcmVudCBhcmNoIHJlbGVhc2VzIGFyZSBpbnN0YWxsZWQgc2ltdWx0YW5lb3VzbHkuICAqLwotIAotLSNpZiBkZWZpbmVkIF9fYXJtX18KLSsjaWYgZGVmaW5lZCBfX2FhcmNoNjRfXwotKyMgaW5jbHVkZSAidGRlcC1hYXJjaDY0L2R3YXJmLWNvbmZpZy5oIgotKyNlbGlmIGRlZmluZWQgX19hcm1fXwotICMgaW5jbHVkZSAidGRlcC1hcm0vZHdhcmYtY29uZmlnLmgiCi0gI2VsaWYgZGVmaW5lZCBfX2hwcGFfXwotICMgaW5jbHVkZSAidGRlcC1ocHBhL2R3YXJmLWNvbmZpZy5oIgotLS0tIGEvaW5jbHVkZS90ZGVwL2ptcGJ1Zi5oCi0rKysgYi9pbmNsdWRlL3RkZXAvam1wYnVmLmgKLUBAIC0zLDYgKzMsOCBAQAotIAotICNpZm5kZWYgVU5XX1JFTU9URV9PTkxZCi0gCi0rI2lmIGRlZmluZWQgX19hYXJjaDY0X18KLSsjIGluY2x1ZGUgInRkZXAtYWFyY2g2NC9qbXBidWYuaCIKLSAjaWYgZGVmaW5lZCBfX2FybV9fCi0gIyBpbmNsdWRlICJ0ZGVwLWFybS9qbXBidWYuaCIKLSAjZWxpZiBkZWZpbmVkIF9faHBwYV9fCi0tLS0gYS9pbmNsdWRlL3RkZXAvbGlidW53aW5kX2kuaC5pbgotKysrIGIvaW5jbHVkZS90ZGVwL2xpYnVud2luZF9pLmguaW4KLUBAIC0zLDcgKzMsOSBAQAotIAotICNpZm5kZWYgVU5XX1JFTU9URV9PTkxZCi0gCi0tI2lmIGRlZmluZWQgX19hcm1fXwotKyNpZiBkZWZpbmVkIF9fYWFyY2g2NF9fCi0rIyBpbmNsdWRlICJ0ZGVwLWFhcmNoNjQvbGlidW53aW5kX2kuaCIKLSsjZWxpZiBkZWZpbmVkIF9fYXJtX18KLSAjIGluY2x1ZGUgInRkZXAtYXJtL2xpYnVud2luZF9pLmgiCi0gI2VsaWYgZGVmaW5lZCBfX2hwcGFfXwotICMgaW5jbHVkZSAidGRlcC1ocHBhL2xpYnVud2luZF9pLmgiCi0tLS0gYS9zcmMvTWFrZWZpbGUuYW0KLSsrKyBiL3NyYy9NYWtlZmlsZS5hbQotQEAgLTE3MCw2ICsxNzAsMjggQEAgbGlidW53aW5kX2VsZnh4X2xhX1NPVVJDRVMgPSBlbGZ4eC5jCi0gbm9pbnN0X0xUTElCUkFSSUVTICs9ICQoTElCVU5XSU5EX0VMRikKLSBsaWJ1bndpbmRfbGFfTElCQUREICs9ICQoTElCVU5XSU5EX0VMRikKLSAKLSsjIFRoZSBsaXN0IG9mIGZpbGVzIHRoYXQgZ28gaW50byBsaWJ1bndpbmQgYW5kIGxpYnVud2luZC1hYXJjaDY0OgotK25vaW5zdF9IRUFERVJTICs9IGFhcmNoNjQvaW5pdC5oIGFhcmNoNjQvb2Zmc2V0cy5oIGFhcmNoNjQvdW53aW5kX2kuaAotK2xpYnVud2luZF9sYV9TT1VSQ0VTX2FhcmNoNjRfY29tbW9uID0gJChsaWJ1bndpbmRfbGFfU09VUkNFU19jb21tb24pCSAgICBcCi0rCWFhcmNoNjQvaXNfZnByZWcuYyBhYXJjaDY0L3JlZ25hbWUuYwotKwotKyMgVGhlIGxpc3Qgb2YgZmlsZXMgdGhhdCBnbyBpbnRvIGxpYnVud2luZDoKLStsaWJ1bndpbmRfbGFfU09VUkNFU19hYXJjaDY0ID0gJChsaWJ1bndpbmRfbGFfU09VUkNFU19hYXJjaDY0X2NvbW1vbikJICAgIFwKLSsJJChsaWJ1bndpbmRfbGFfU09VUkNFU19sb2NhbCkJCQkJCSAgICBcCi0rCWFhcmNoNjQvTGNyZWF0ZV9hZGRyX3NwYWNlLmMgYWFyY2g2NC9MZ2V0X3Byb2NfaW5mby5jIAkJICAgIFwKLSsJYWFyY2g2NC9MZ2V0X3NhdmVfbG9jLmMgYWFyY2g2NC9MZ2xvYmFsLmMgYWFyY2g2NC9MaW5pdC5jCSAgICBcCi0rCWFhcmNoNjQvTGluaXRfbG9jYWwuYyBhYXJjaDY0L0xpbml0X3JlbW90ZS5jIAkJCSAgICBcCi0rCWFhcmNoNjQvTGlzX3NpZ25hbF9mcmFtZS5jIGFhcmNoNjQvTHJlZ3MuYyBhYXJjaDY0L0xyZXN1bWUuYyAJICAgIFwKLSsJYWFyY2g2NC9Mc3RlcC5jCi0rCi0rbGlidW53aW5kX2FhcmNoNjRfbGFfU09VUkNFU19hYXJjaDY0ID0gJChsaWJ1bndpbmRfbGFfU09VUkNFU19hYXJjaDY0X2NvbW1vbikgXAotKwkkKGxpYnVud2luZF9sYV9TT1VSQ0VTX2dlbmVyaWMpCQkJCQkgICAgICBcCi0rCWFhcmNoNjQvR2NyZWF0ZV9hZGRyX3NwYWNlLmMgYWFyY2g2NC9HZ2V0X3Byb2NfaW5mby5jIAkJICAgICAgXAotKwlhYXJjaDY0L0dnZXRfc2F2ZV9sb2MuYyBhYXJjaDY0L0dnbG9iYWwuYyBhYXJjaDY0L0dpbml0LmMgCSAgICAgIFwKLSsJYWFyY2g2NC9HaW5pdF9sb2NhbC5jIGFhcmNoNjQvR2luaXRfcmVtb3RlLmMJCQkgICAgICBcCi0rCWFhcmNoNjQvR2lzX3NpZ25hbF9mcmFtZS5jIGFhcmNoNjQvR3JlZ3MuYyBhYXJjaDY0L0dyZXN1bWUuYwkgICAgICBcCi0rCWFhcmNoNjQvR3N0ZXAuYwotKwotICMgVGhlIGxpc3Qgb2YgZmlsZXMgdGhhdCBnbyBpbnRvIGxpYnVud2luZCBhbmQgbGlidW53aW5kLWFybToKLSBub2luc3RfSEVBREVSUyArPSBhcm0vaW5pdC5oIGFybS9vZmZzZXRzLmggYXJtL3Vud2luZF9pLmgKLSBsaWJ1bndpbmRfbGFfU09VUkNFU19hcm1fY29tbW9uID0gJChsaWJ1bndpbmRfbGFfU09VUkNFU19jb21tb24pCSAgICBcCi1AQCAtNDE4LDYgKzQ0MCwxOCBAQCBpZiBPU19GUkVFQlNECi0gIGxpYnVud2luZF9jb3JlZHVtcF9sYV9TT1VSQ0VTICs9IGNvcmVkdW1wL19VQ0RfYWNjZXNzX3JlZ19mcmVlYnNkLmMKLSBlbmRpZgotIAotK2lmIEFSQ0hfQUFSQ0g2NAotKyBsaWJfTFRMSUJSQVJJRVMgKz0gbGlidW53aW5kLWFhcmNoNjQubGEKLSsgbGlidW53aW5kX2xhX1NPVVJDRVMgPSAkKGxpYnVud2luZF9sYV9TT1VSQ0VTX2FhcmNoNjQpCi0rIGxpYnVud2luZF9hYXJjaDY0X2xhX1NPVVJDRVMgPSAkKGxpYnVud2luZF9hYXJjaDY0X2xhX1NPVVJDRVNfYWFyY2g2NCkKLSsgbGlidW53aW5kX2FhcmNoNjRfbGFfTERGTEFHUyA9ICQoQ09NTU9OX1NPX0xERkxBR1MpIC12ZXJzaW9uLWluZm8gJChTT1ZFUlNJT04pCi0rIGxpYnVud2luZF9hYXJjaDY0X2xhX0xJQkFERCA9IGxpYnVud2luZC1kd2FyZi1nZW5lcmljLmxhCi0rIGxpYnVud2luZF9hYXJjaDY0X2xhX0xJQkFERCArPSBsaWJ1bndpbmQtZWxmNjQubGEKLStpZiAhUkVNT1RFX09OTFkKLSsgbGlidW53aW5kX2FhcmNoNjRfbGFfTElCQUREICs9IGxpYnVud2luZC5sYSAtbGMKLStlbmRpZgotKyBsaWJ1bndpbmRfc2V0am1wX2xhX1NPVVJDRVMgKz0gYWFyY2g2NC9zaWdsb25nam1wLlMKLStlbHNlCi0gaWYgQVJDSF9BUk0KLSAgbGliX0xUTElCUkFSSUVTICs9IGxpYnVud2luZC1hcm0ubGEKLSAgbGlidW53aW5kX2xhX1NPVVJDRVMgPSAkKGxpYnVud2luZF9sYV9TT1VSQ0VTX2FybSkKLUBAIC01NDUsNiArNTc5LDcgQEAgZW5kaWYgIyBBUkNIX01JUFMKLSBlbmRpZiAjIEFSQ0hfSFBQQQotIGVuZGlmICMgQVJDSF9JQTY0Ci0gZW5kaWYgIyBBUkNIX0FSTQotK2VuZGlmICMgQVJDSF9BQVJDSDY0Ci0gCi0gIyBsaWJ1bndpbmQtc2V0am1wIGRlcGVuZHMgb24gbGlidW53aW5kLSQoYXJjaCkuIFRoZXJlZm9yZSBtdXN0IGJlIGFkZGVkCi0gIyBhdCB0aGUgZW5kLgotQEAgLTU2Nyw3ICs2MDIsOCBAQCBBTV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlIC1JCi0gQU1fQ0NBU0ZMQUdTID0gJChBTV9DUFBGTEFHUykKLSBub2luc3RfSEVBREVSUyArPSB1bndpbmQvdW53aW5kLWludGVybmFsLmgKLSAKLS1FWFRSQV9ESVNUID0JJChsaWJ1bndpbmRfbGFfU09VUkNFU19hcm0pCQkJXAotK0VYVFJBX0RJU1QgPQkkKGxpYnVud2luZF9sYV9TT1VSQ0VTX2FhcmNoNjQpCQkJXAotKwkJJChsaWJ1bndpbmRfbGFfU09VUkNFU19hcm0pCQkJXAotIAkJJChsaWJ1bndpbmRfbGFfU09VUkNFU19ocHBhKQkJCVwKLSAJCSQobGlidW53aW5kX2xhX1NPVVJDRVNfaWE2NCkJCQlcCi0gCQkkKGxpYnVud2luZF9sYV9TT1VSQ0VTX21pcHMpCQkJXAotQEAgLTU3OSw2ICs2MTUsNyBAQCBFWFRSQV9ESVNUID0JJChsaWJ1bndpbmRfbGFfU09VUkNFU19hcm0pCi0gCQkkKGxpYnVud2luZF9sYV9TT1VSQ0VTX2NvbW1vbikJCQlcCi0gCQkkKGxpYnVud2luZF9sYV9TT1VSQ0VTX2xvY2FsKQkJCVwKLSAJCSQobGlidW53aW5kX2xhX1NPVVJDRVNfZ2VuZXJpYykJCQlcCi0rCQkkKGxpYnVud2luZF9hYXJjaDY0X2xhX1NPVVJDRVNfYWFyY2g2NCkJCVwKLSAJCSQobGlidW53aW5kX2FybV9sYV9TT1VSQ0VTX2FybSkJCQlcCi0gCQkkKGxpYnVud2luZF9ocHBhX2xhX1NPVVJDRVNfaHBwYSkJCVwKLSAJCSQobGlidW53aW5kX2lhNjRfbGFfU09VUkNFU19pYTY0KQkJXAotLS0tIC9kZXYvbnVsbAotKysrIGIvc3JjL2FhcmNoNjQvR2NyZWF0ZV9hZGRyX3NwYWNlLmMKLUBAIC0wLDAgKzEsNjAgQEAKLSsvKiBsaWJ1bndpbmQgLSBhIHBsYXRmb3JtLWluZGVwZW5kZW50IHVud2luZCBsaWJyYXJ5Ci0rICAgQ29weXJpZ2h0IChDKSAyMDEyIFRvbW1pIFJhbnRhbGEgPHR0LnJhbnRhbGFAZ21haWwuY29tPgotKyAgIENvcHlyaWdodCAoQykgMjAxMyBMaW5hcm8gTGltaXRlZAotKwotK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIGxpYnVud2luZC4KLSsKLStQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKLSthIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKLSsiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi0rd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAotK2Rpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwotK3Blcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwotK3RoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSsKLStUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQotK2luY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotKwotK1RIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAotK0VYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgotK01FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECi0rTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRQotK0xJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04KLStPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04KLStXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICovCi0rCi0rI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsKLSsjaW5jbHVkZSAidW53aW5kX2kuaCIKLSsKLStQUk9URUNURUQgdW53X2FkZHJfc3BhY2VfdAotK3Vud19jcmVhdGVfYWRkcl9zcGFjZSAodW53X2FjY2Vzc29yc190ICphLCBpbnQgYnl0ZV9vcmRlcikKLSt7Ci0rI2lmZGVmIFVOV19MT0NBTF9PTkxZCi0rICByZXR1cm4gTlVMTDsKLSsjZWxzZQotKyAgdW53X2FkZHJfc3BhY2VfdCBhczsKLSsKLSsgIC8qIEFBcmNoNjQgc3VwcG9ydHMgbGl0dGxlLWVuZGlhbiBhbmQgYmlnLWVuZGlhbi4gKi8KLSsgIGlmIChieXRlX29yZGVyICE9IDAgJiYgYnl0ZV9vcmRlciAhPSBfX0xJVFRMRV9FTkRJQU4KLSsgICAgICAmJiBieXRlX29yZGVyICE9IF9fQklHX0VORElBTikKLSsgICAgcmV0dXJuIE5VTEw7Ci0rCi0rICBhcyA9IG1hbGxvYyAoc2l6ZW9mICgqYXMpKTsKLSsgIGlmICghYXMpCi0rICAgIHJldHVybiBOVUxMOwotKwotKyAgbWVtc2V0IChhcywgMCwgc2l6ZW9mICgqYXMpKTsKLSsKLSsgIGFzLT5hY2MgPSAqYTsKLSsKLSsgIC8qIERlZmF1bHQgdG8gbGl0dGxlLWVuZGlhbiBmb3IgQUFyY2g2NC4gKi8KLSsgIGlmIChieXRlX29yZGVyID09IDAgfHwgYnl0ZV9vcmRlciA9PSBfX0xJVFRMRV9FTkRJQU4pCi0rICAgIGFzLT5iaWdfZW5kaWFuID0gMDsKLSsgIGVsc2UKLSsgICAgYXMtPmJpZ19lbmRpYW4gPSAxOwotKwotKyAgcmV0dXJuIGFzOwotKyNlbmRpZgotK30KLS0tLSAvZGV2L251bGwKLSsrKyBiL3NyYy9hYXJjaDY0L0dnZXRfcHJvY19pbmZvLmMKLUBAIC0wLDAgKzEsMzkgQEAKLSsvKiBsaWJ1bndpbmQgLSBhIHBsYXRmb3JtLWluZGVwZW5kZW50IHVud2luZCBsaWJyYXJ5Ci0rICAgQ29weXJpZ2h0IChDKSAyMDA4IENvZGVTb3VyY2VyeQotKwotK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIGxpYnVud2luZC4KLSsKLStQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKLSthIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKLSsiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi0rd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAotK2Rpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwotK3Blcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwotK3RoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSsKLStUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQotK2luY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotKwotK1RIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAotK0VYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgotK01FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECi0rTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRQotK0xJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04KLStPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04KLStXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICovCi0rCi0rI2luY2x1ZGUgInVud2luZF9pLmgiCi0rCi0rUFJPVEVDVEVEIGludAotK3Vud19nZXRfcHJvY19pbmZvICh1bndfY3Vyc29yX3QgKmN1cnNvciwgdW53X3Byb2NfaW5mb190ICpwaSkKLSt7Ci0rICBzdHJ1Y3QgY3Vyc29yICpjID0gKHN0cnVjdCBjdXJzb3IgKikgY3Vyc29yOwotKyAgaW50IHJldDsKLSsKLSsgIHJldCA9IGR3YXJmX21ha2VfcHJvY19pbmZvICgmYy0+ZHdhcmYpOwotKyAgaWYgKHJldCA8IDApCi0rICAgIHJldHVybiByZXQ7Ci0rCi0rICAqcGkgPSBjLT5kd2FyZi5waTsKLSsgIHJldHVybiAwOwotK30KLS0tLSAvZGV2L251bGwKLSsrKyBiL3NyYy9hYXJjaDY0L0dnZXRfc2F2ZV9sb2MuYwotQEAgLTAsMCArMSwxMDAgQEAKLSsvKiBsaWJ1bndpbmQgLSBhIHBsYXRmb3JtLWluZGVwZW5kZW50IHVud2luZCBsaWJyYXJ5Ci0rICAgQ29weXJpZ2h0IChDKSAyMDA4IENvZGVTb3VyY2VyeQotKyAgIENvcHlyaWdodCAoQykgMjAxMiBUb21taSBSYW50YWxhIDx0dC5yYW50YWxhQGdtYWlsLmNvbT4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTMgTGluYXJvIExpbWl0ZWQKLSsKLStUaGlzIGZpbGUgaXMgcGFydCBvZiBsaWJ1bndpbmQuCi0rCi0rUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCi0rYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCi0rIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwotK3dpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKLStkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KLStwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KLSt0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0rCi0rVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKLStpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLSsKLStUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKLStFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLStNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAotK05PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUKLStMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OCi0rT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OCi0rV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAqLwotKwotKyNpbmNsdWRlICJ1bndpbmRfaS5oIgotKwotK1BST1RFQ1RFRCBpbnQKLSt1bndfZ2V0X3NhdmVfbG9jICh1bndfY3Vyc29yX3QgKmN1cnNvciwgaW50IHJlZywgdW53X3NhdmVfbG9jX3QgKnNsb2MpCi0rewotKyAgc3RydWN0IGN1cnNvciAqYyA9IChzdHJ1Y3QgY3Vyc29yICopIGN1cnNvcjsKLSsgIGR3YXJmX2xvY190IGxvYzsKLSsKLSsgIHN3aXRjaCAocmVnKQotKyAgICB7Ci0rICAgIGNhc2UgVU5XX0FBUkNINjRfWDA6Ci0rICAgIGNhc2UgVU5XX0FBUkNINjRfWDE6Ci0rICAgIGNhc2UgVU5XX0FBUkNINjRfWDI6Ci0rICAgIGNhc2UgVU5XX0FBUkNINjRfWDM6Ci0rICAgIGNhc2UgVU5XX0FBUkNINjRfWDQ6Ci0rICAgIGNhc2UgVU5XX0FBUkNINjRfWDU6Ci0rICAgIGNhc2UgVU5XX0FBUkNINjRfWDY6Ci0rICAgIGNhc2UgVU5XX0FBUkNINjRfWDc6Ci0rICAgIGNhc2UgVU5XX0FBUkNINjRfWDg6Ci0rICAgIGNhc2UgVU5XX0FBUkNINjRfWDk6Ci0rICAgIGNhc2UgVU5XX0FBUkNINjRfWDEwOgotKyAgICBjYXNlIFVOV19BQVJDSDY0X1gxMToKLSsgICAgY2FzZSBVTldfQUFSQ0g2NF9YMTI6Ci0rICAgIGNhc2UgVU5XX0FBUkNINjRfWDEzOgotKyAgICBjYXNlIFVOV19BQVJDSDY0X1gxNDoKLSsgICAgY2FzZSBVTldfQUFSQ0g2NF9YMTU6Ci0rICAgIGNhc2UgVU5XX0FBUkNINjRfWDE2OgotKyAgICBjYXNlIFVOV19BQVJDSDY0X1gxNzoKLSsgICAgY2FzZSBVTldfQUFSQ0g2NF9YMTg6Ci0rICAgIGNhc2UgVU5XX0FBUkNINjRfWDE5OgotKyAgICBjYXNlIFVOV19BQVJDSDY0X1gyMDoKLSsgICAgY2FzZSBVTldfQUFSQ0g2NF9YMjE6Ci0rICAgIGNhc2UgVU5XX0FBUkNINjRfWDIyOgotKyAgICBjYXNlIFVOV19BQVJDSDY0X1gyMzoKLSsgICAgY2FzZSBVTldfQUFSQ0g2NF9YMjQ6Ci0rICAgIGNhc2UgVU5XX0FBUkNINjRfWDI1OgotKyAgICBjYXNlIFVOV19BQVJDSDY0X1gyNjoKLSsgICAgY2FzZSBVTldfQUFSQ0g2NF9YMjc6Ci0rICAgIGNhc2UgVU5XX0FBUkNINjRfWDI4OgotKyAgICBjYXNlIFVOV19BQVJDSDY0X1gyOToKLSsgICAgY2FzZSBVTldfQUFSQ0g2NF9YMzA6Ci0rICAgIGNhc2UgVU5XX0FBUkNINjRfU1A6Ci0rICAgIGNhc2UgVU5XX0FBUkNINjRfUEM6Ci0rICAgIGNhc2UgVU5XX0FBUkNINjRfUFNUQVRFOgotKyAgICAgIGxvYyA9IGMtPmR3YXJmLmxvY1tyZWddOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBkZWZhdWx0OgotKyAgICAgIGxvYyA9IERXQVJGX05VTExfTE9DOwkvKiBkZWZhdWx0IHRvICJub3Qgc2F2ZWQiICovCi0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSsKLSsgIG1lbXNldCAoc2xvYywgMCwgc2l6ZW9mICgqc2xvYykpOwotKwotKyAgaWYgKERXQVJGX0lTX05VTExfTE9DIChsb2MpKQotKyAgICB7Ci0rICAgICAgc2xvYy0+dHlwZSA9IFVOV19TTFRfTk9ORTsKLSsgICAgICByZXR1cm4gMDsKLSsgICAgfQotKwotKyNpZiAhZGVmaW5lZChVTldfTE9DQUxfT05MWSkKLSsgIGlmIChEV0FSRl9JU19SRUdfTE9DIChsb2MpKQotKyAgICB7Ci0rICAgICAgc2xvYy0+dHlwZSA9IFVOV19TTFRfUkVHOwotKyAgICAgIHNsb2MtPnUucmVnbnVtID0gRFdBUkZfR0VUX0xPQyAobG9jKTsKLSsgICAgfQotKyAgZWxzZQotKyNlbmRpZgotKyAgICB7Ci0rICAgICAgc2xvYy0+dHlwZSA9IFVOV19TTFRfTUVNT1JZOwotKyAgICAgIHNsb2MtPnUuYWRkciA9IERXQVJGX0dFVF9MT0MgKGxvYyk7Ci0rICAgIH0KLSsgIHJldHVybiAwOwotK30KLS0tLSAvZGV2L251bGwKLSsrKyBiL3NyYy9hYXJjaDY0L0dnbG9iYWwuYwotQEAgLTAsMCArMSw1NyBAQAotKy8qIGxpYnVud2luZCAtIGEgcGxhdGZvcm0taW5kZXBlbmRlbnQgdW53aW5kIGxpYnJhcnkKLSsgICBDb3B5cmlnaHQgKEMpIDIwMDggQ29kZVNvdXJjZXJ5Ci0rICAgQ29weXJpZ2h0IChDKSAyMDEyIFRvbW1pIFJhbnRhbGEgPHR0LnJhbnRhbGFAZ21haWwuY29tPgotKyAgIENvcHlyaWdodCAoQykgMjAxMyBMaW5hcm8gTGltaXRlZAotKwotK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIGxpYnVud2luZC4KLSsKLStQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKLSthIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKLSsiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi0rd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAotK2Rpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwotK3Blcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwotK3RoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSsKLStUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQotK2luY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotKwotK1RIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAotK0VYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgotK01FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECi0rTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRQotK0xJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04KLStPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04KLStXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICovCi0rCi0rI2luY2x1ZGUgInVud2luZF9pLmgiCi0rI2luY2x1ZGUgImR3YXJmX2kuaCIKLSsKLStISURERU4gZGVmaW5lX2xvY2sgKGFhcmNoNjRfbG9jayk7Ci0rSElEREVOIGludCB0ZGVwX2luaXRfZG9uZTsKLSsKLStISURERU4gdm9pZAotK3RkZXBfaW5pdCAodm9pZCkKLSt7Ci0rICBpbnRybWFza190IHNhdmVkX21hc2s7Ci0rCi0rICBzaWdmaWxsc2V0ICgmdW53aV9mdWxsX21hc2spOwotKwotKyAgbG9ja19hY3F1aXJlICgmYWFyY2g2NF9sb2NrLCBzYXZlZF9tYXNrKTsKLSsgIHsKLSsgICAgaWYgKHRkZXBfaW5pdF9kb25lKQotKyAgICAgIC8qIGFub3RoZXIgdGhyZWFkIGVsc2UgYmVhdCB1cyB0byBpdC4uLiAqLwotKyAgICAgIGdvdG8gb3V0OwotKwotKyAgICBtaV9pbml0ICgpOwotKwotKyAgICBkd2FyZl9pbml0ICgpOwotKwotKyNpZm5kZWYgVU5XX1JFTU9URV9PTkxZCi0rICAgIGFhcmNoNjRfbG9jYWxfYWRkcl9zcGFjZV9pbml0ICgpOwotKyNlbmRpZgotKyAgICB0ZGVwX2luaXRfZG9uZSA9IDE7CS8qIHNpZ25hbCB0aGF0IHdlJ3JlIGluaXRpYWxpemVkLi4uICovCi0rICB9Ci0rIG91dDoKLSsgIGxvY2tfcmVsZWFzZSAoJmFhcmNoNjRfbG9jaywgc2F2ZWRfbWFzayk7Ci0rfQotLS0tIC9kZXYvbnVsbAotKysrIGIvc3JjL2FhcmNoNjQvR2luaXQuYwotQEAgLTAsMCArMSwxODcgQEAKLSsvKiBsaWJ1bndpbmQgLSBhIHBsYXRmb3JtLWluZGVwZW5kZW50IHVud2luZCBsaWJyYXJ5Ci0rICAgQ29weXJpZ2h0IChDKSAyMDA4IENvZGVTb3VyY2VyeQotKyAgIENvcHlyaWdodCAoQykgMjAxMiBUb21taSBSYW50YWxhIDx0dC5yYW50YWxhQGdtYWlsLmNvbT4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTMgTGluYXJvIExpbWl0ZWQKLSsKLStUaGlzIGZpbGUgaXMgcGFydCBvZiBsaWJ1bndpbmQuCi0rCi0rUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCi0rYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCi0rIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwotK3dpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKLStkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KLStwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KLSt0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0rCi0rVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKLStpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLSsKLStUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKLStFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLStNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAotK05PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUKLStMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OCi0rT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OCi0rV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAqLwotKwotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rCi0rI2luY2x1ZGUgInVud2luZF9pLmgiCi0rCi0rI2lmZGVmIFVOV19SRU1PVEVfT05MWQotKwotKy8qIHVud19sb2NhbF9hZGRyX3NwYWNlIGlzIGEgTlVMTCBwb2ludGVyIGluIHRoaXMgY2FzZS4gICovCi0rUFJPVEVDVEVEIHVud19hZGRyX3NwYWNlX3QgdW53X2xvY2FsX2FkZHJfc3BhY2U7Ci0rCi0rI2Vsc2UgLyogIVVOV19SRU1PVEVfT05MWSAqLwotKwotK3N0YXRpYyBzdHJ1Y3QgdW53X2FkZHJfc3BhY2UgbG9jYWxfYWRkcl9zcGFjZTsKLSsKLStQUk9URUNURUQgdW53X2FkZHJfc3BhY2VfdCB1bndfbG9jYWxfYWRkcl9zcGFjZSA9ICZsb2NhbF9hZGRyX3NwYWNlOwotKwotK3N0YXRpYyBpbmxpbmUgdm9pZCAqCi0rdWNfYWRkciAodWNvbnRleHRfdCAqdWMsIGludCByZWcpCi0rewotKyAgaWYgKHJlZyA+PSBVTldfQUFSQ0g2NF9YMCAmJiByZWcgPD0gVU5XX0FBUkNINjRfVjMxKQotKyAgICByZXR1cm4gJnVjLT51Y19tY29udGV4dC5yZWdzW3JlZ107Ci0rICBlbHNlCi0rICAgIHJldHVybiBOVUxMOwotK30KLSsKLSsjIGlmZGVmIFVOV19MT0NBTF9PTkxZCi0rCi0rSElEREVOIHZvaWQgKgotK3RkZXBfdWNfYWRkciAodWNvbnRleHRfdCAqdWMsIGludCByZWcpCi0rewotKyAgcmV0dXJuIHVjX2FkZHIgKHVjLCByZWcpOwotK30KLSsKLSsjIGVuZGlmIC8qIFVOV19MT0NBTF9PTkxZICovCi0rCi0rSElEREVOIHVud19keW5faW5mb19saXN0X3QgX1VfZHluX2luZm9fbGlzdDsKLSsKLSsvKiBYWFggZml4IG1lOiB0aGVyZSBpcyBjdXJyZW50bHkgbm8gd2F5IHRvIGxvY2F0ZSB0aGUgZHluLWluZm8gbGlzdAotKyAgICAgICBieSBhIHJlbW90ZSB1bndpbmRlci4gIE9uIGlhNjQsIHRoaXMgaXMgZG9uZSB2aWEgYSBzcGVjaWFsCi0rICAgICAgIHVud2luZC10YWJsZSBlbnRyeS4gIFBlcmhhcHMgc29tZXRoaW5nIHNpbWlsYXIgY2FuIGJlIGRvbmUgd2l0aAotKyAgICAgICBEV0FSRjIgdW53aW5kIGluZm8uICAqLwotKwotK3N0YXRpYyB2b2lkCi0rcHV0X3Vud2luZF9pbmZvICh1bndfYWRkcl9zcGFjZV90IGFzLCB1bndfcHJvY19pbmZvX3QgKnByb2NfaW5mbywgdm9pZCAqYXJnKQotK3sKLSsgIC8qIGl0J3MgYSBuby1vcCAqLwotK30KLSsKLStzdGF0aWMgaW50Ci0rZ2V0X2R5bl9pbmZvX2xpc3RfYWRkciAodW53X2FkZHJfc3BhY2VfdCBhcywgdW53X3dvcmRfdCAqZHluX2luZm9fbGlzdF9hZGRyLAotKwkJCXZvaWQgKmFyZykKLSt7Ci0rICAqZHluX2luZm9fbGlzdF9hZGRyID0gKHVud193b3JkX3QpICZfVV9keW5faW5mb19saXN0OwotKyAgcmV0dXJuIDA7Ci0rfQotKwotK3N0YXRpYyBpbnQKLSthY2Nlc3NfbWVtICh1bndfYWRkcl9zcGFjZV90IGFzLCB1bndfd29yZF90IGFkZHIsIHVud193b3JkX3QgKnZhbCwgaW50IHdyaXRlLAotKwkgICAgdm9pZCAqYXJnKQotK3sKLSsgIGlmICh3cml0ZSkKLSsgICAgewotKyAgICAgIERlYnVnICgxNiwgIm1lbVslbHhdIDwtICVseFxuIiwgYWRkciwgKnZhbCk7Ci0rICAgICAgKih1bndfd29yZF90ICopIGFkZHIgPSAqdmFsOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICAqdmFsID0gKih1bndfd29yZF90ICopIGFkZHI7Ci0rICAgICAgRGVidWcgKDE2LCAibWVtWyVseF0gLT4gJWx4XG4iLCBhZGRyLCAqdmFsKTsKLSsgICAgfQotKyAgcmV0dXJuIDA7Ci0rfQotKwotK3N0YXRpYyBpbnQKLSthY2Nlc3NfcmVnICh1bndfYWRkcl9zcGFjZV90IGFzLCB1bndfcmVnbnVtX3QgcmVnLCB1bndfd29yZF90ICp2YWwsIGludCB3cml0ZSwKLSsJICAgIHZvaWQgKmFyZykKLSt7Ci0rICB1bndfd29yZF90ICphZGRyOwotKyAgdWNvbnRleHRfdCAqdWMgPSBhcmc7Ci0rCi0rICBpZiAodW53X2lzX2ZwcmVnIChyZWcpKQotKyAgICBnb3RvIGJhZHJlZzsKLSsKLSsgIGlmICghKGFkZHIgPSB1Y19hZGRyICh1YywgcmVnKSkpCi0rICAgIGdvdG8gYmFkcmVnOwotKwotKyAgaWYgKHdyaXRlKQotKyAgICB7Ci0rICAgICAgKih1bndfd29yZF90ICopIGFkZHIgPSAqdmFsOwotKyAgICAgIERlYnVnICgxMiwgIiVzIDwtICVseFxuIiwgdW53X3JlZ25hbWUgKHJlZyksICp2YWwpOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICAqdmFsID0gKih1bndfd29yZF90ICopIGFkZHI7Ci0rICAgICAgRGVidWcgKDEyLCAiJXMgLT4gJWx4XG4iLCB1bndfcmVnbmFtZSAocmVnKSwgKnZhbCk7Ci0rICAgIH0KLSsgIHJldHVybiAwOwotKwotKyBiYWRyZWc6Ci0rICBEZWJ1ZyAoMSwgImJhZCByZWdpc3RlciBudW1iZXIgJXVcbiIsIHJlZyk7Ci0rICByZXR1cm4gLVVOV19FQkFEUkVHOwotK30KLSsKLStzdGF0aWMgaW50Ci0rYWNjZXNzX2ZwcmVnICh1bndfYWRkcl9zcGFjZV90IGFzLCB1bndfcmVnbnVtX3QgcmVnLCB1bndfZnByZWdfdCAqdmFsLAotKwkgICAgICBpbnQgd3JpdGUsIHZvaWQgKmFyZykKLSt7Ci0rICB1Y29udGV4dF90ICp1YyA9IGFyZzsKLSsgIHVud19mcHJlZ190ICphZGRyOwotKwotKyAgaWYgKCF1bndfaXNfZnByZWcgKHJlZykpCi0rICAgIGdvdG8gYmFkcmVnOwotKwotKyAgaWYgKCEoYWRkciA9IHVjX2FkZHIgKHVjLCByZWcpKSkKLSsgICAgZ290byBiYWRyZWc7Ci0rCi0rICBpZiAod3JpdGUpCi0rICAgIHsKLSsgICAgICBEZWJ1ZyAoMTIsICIlcyA8LSAlMDhseC4lMDhseC4lMDhseFxuIiwgdW53X3JlZ25hbWUgKHJlZyksCi0rCSAgICAgKChsb25nICopdmFsKVswXSwgKChsb25nICopdmFsKVsxXSwgKChsb25nICopdmFsKVsyXSk7Ci0rICAgICAgKih1bndfZnByZWdfdCAqKSBhZGRyID0gKnZhbDsKLSsgICAgfQotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgKnZhbCA9ICoodW53X2ZwcmVnX3QgKikgYWRkcjsKLSsgICAgICBEZWJ1ZyAoMTIsICIlcyAtPiAlMDhseC4lMDhseC4lMDhseFxuIiwgdW53X3JlZ25hbWUgKHJlZyksCi0rCSAgICAgKChsb25nICopdmFsKVswXSwgKChsb25nICopdmFsKVsxXSwgKChsb25nICopdmFsKVsyXSk7Ci0rICAgIH0KLSsgIHJldHVybiAwOwotKwotKyBiYWRyZWc6Ci0rICBEZWJ1ZyAoMSwgImJhZCByZWdpc3RlciBudW1iZXIgJXVcbiIsIHJlZyk7Ci0rICAvKiBhdHRlbXB0IHRvIGFjY2VzcyBhIG5vbi1wcmVzZXJ2ZWQgcmVnaXN0ZXIgKi8KLSsgIHJldHVybiAtVU5XX0VCQURSRUc7Ci0rfQotKwotK3N0YXRpYyBpbnQKLStnZXRfc3RhdGljX3Byb2NfbmFtZSAodW53X2FkZHJfc3BhY2VfdCBhcywgdW53X3dvcmRfdCBpcCwKLSsJCSAgICAgIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1Zl9sZW4sIHVud193b3JkX3QgKm9mZnAsCi0rCQkgICAgICB2b2lkICphcmcpCi0rewotKyAgcmV0dXJuIF9VZWxmNjRfZ2V0X3Byb2NfbmFtZSAoYXMsIGdldHBpZCAoKSwgaXAsIGJ1ZiwgYnVmX2xlbiwgb2ZmcCk7Ci0rfQotKwotK0hJRERFTiB2b2lkCi0rYWFyY2g2NF9sb2NhbF9hZGRyX3NwYWNlX2luaXQgKHZvaWQpCi0rewotKyAgbWVtc2V0ICgmbG9jYWxfYWRkcl9zcGFjZSwgMCwgc2l6ZW9mIChsb2NhbF9hZGRyX3NwYWNlKSk7Ci0rICBsb2NhbF9hZGRyX3NwYWNlLmNhY2hpbmdfcG9saWN5ID0gVU5XX0NBQ0hFX0dMT0JBTDsKLSsgIGxvY2FsX2FkZHJfc3BhY2UuYWNjLmZpbmRfcHJvY19pbmZvID0gZHdhcmZfZmluZF9wcm9jX2luZm87Ci0rICBsb2NhbF9hZGRyX3NwYWNlLmFjYy5wdXRfdW53aW5kX2luZm8gPSBwdXRfdW53aW5kX2luZm87Ci0rICBsb2NhbF9hZGRyX3NwYWNlLmFjYy5nZXRfZHluX2luZm9fbGlzdF9hZGRyID0gZ2V0X2R5bl9pbmZvX2xpc3RfYWRkcjsKLSsgIGxvY2FsX2FkZHJfc3BhY2UuYWNjLmFjY2Vzc19tZW0gPSBhY2Nlc3NfbWVtOwotKyAgbG9jYWxfYWRkcl9zcGFjZS5hY2MuYWNjZXNzX3JlZyA9IGFjY2Vzc19yZWc7Ci0rICBsb2NhbF9hZGRyX3NwYWNlLmFjYy5hY2Nlc3NfZnByZWcgPSBhY2Nlc3NfZnByZWc7Ci0rICBsb2NhbF9hZGRyX3NwYWNlLmFjYy5yZXN1bWUgPSBhYXJjaDY0X2xvY2FsX3Jlc3VtZTsKLSsgIGxvY2FsX2FkZHJfc3BhY2UuYWNjLmdldF9wcm9jX25hbWUgPSBnZXRfc3RhdGljX3Byb2NfbmFtZTsKLSsgIHVud19mbHVzaF9jYWNoZSAoJmxvY2FsX2FkZHJfc3BhY2UsIDAsIDApOwotK30KLSsKLSsjZW5kaWYgLyogIVVOV19SRU1PVEVfT05MWSAqLwotLS0tIC9kZXYvbnVsbAotKysrIGIvc3JjL2FhcmNoNjQvR2luaXRfbG9jYWwuYwotQEAgLTAsMCArMSw1NSBAQAotKy8qIGxpYnVud2luZCAtIGEgcGxhdGZvcm0taW5kZXBlbmRlbnQgdW53aW5kIGxpYnJhcnkKLSsgICBDb3B5cmlnaHQgKEMpIDIwMDggQ29kZVNvdXJjZXJ5Ci0rICAgQ29weXJpZ2h0IChDKSAyMDExLTIwMTMgTGluYXJvIExpbWl0ZWQKLSsKLStUaGlzIGZpbGUgaXMgcGFydCBvZiBsaWJ1bndpbmQuCi0rCi0rUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCi0rYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCi0rIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwotK3dpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKLStkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KLStwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KLSt0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0rCi0rVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKLStpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLSsKLStUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKLStFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLStNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAotK05PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUKLStMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OCi0rT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OCi0rV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAqLwotKwotKyNpbmNsdWRlICJ1bndpbmRfaS5oIgotKyNpbmNsdWRlICJpbml0LmgiCi0rCi0rI2lmZGVmIFVOV19SRU1PVEVfT05MWQotKwotK1BST1RFQ1RFRCBpbnQKLSt1bndfaW5pdF9sb2NhbCAodW53X2N1cnNvcl90ICpjdXJzb3IsIHVud19jb250ZXh0X3QgKnVjKQotK3sKLSsgIHJldHVybiAtVU5XX0VJTlZBTDsKLSt9Ci0rCi0rI2Vsc2UgLyogIVVOV19SRU1PVEVfT05MWSAqLwotKwotK1BST1RFQ1RFRCBpbnQKLSt1bndfaW5pdF9sb2NhbCAodW53X2N1cnNvcl90ICpjdXJzb3IsIHVud19jb250ZXh0X3QgKnVjKQotK3sKLSsgIHN0cnVjdCBjdXJzb3IgKmMgPSAoc3RydWN0IGN1cnNvciAqKSBjdXJzb3I7Ci0rCi0rICBpZiAoIXRkZXBfaW5pdF9kb25lKQotKyAgICB0ZGVwX2luaXQgKCk7Ci0rCi0rICBEZWJ1ZyAoMSwgIihjdXJzb3I9JXApXG4iLCBjKTsKLSsKLSsgIGMtPmR3YXJmLmFzID0gdW53X2xvY2FsX2FkZHJfc3BhY2U7Ci0rICBjLT5kd2FyZi5hc19hcmcgPSB1YzsKLSsKLSsgIHJldHVybiBjb21tb25faW5pdCAoYywgMSk7Ci0rfQotKwotKyNlbmRpZiAvKiAhVU5XX1JFTU9URV9PTkxZICovCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zcmMvYWFyY2g2NC9HaW5pdF9yZW1vdGUuYwotQEAgLTAsMCArMSw0NSBAQAotKy8qIGxpYnVud2luZCAtIGEgcGxhdGZvcm0taW5kZXBlbmRlbnQgdW53aW5kIGxpYnJhcnkKLSsgICBDb3B5cmlnaHQgKEMpIDIwMDggQ29kZVNvdXJjZXJ5Ci0rCi0rVGhpcyBmaWxlIGlzIHBhcnQgb2YgbGlidW53aW5kLgotKwotK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwotK2EgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQotKyJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKLSt3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCi0rZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCi0rcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCi0rdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotKwotK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCi0raW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0rCi0rVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCi0rRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi0rTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKLStOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFCi0rTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTgotK09GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgotK1dJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgKi8KLSsKLSsjaW5jbHVkZSAiaW5pdC5oIgotKyNpbmNsdWRlICJ1bndpbmRfaS5oIgotKwotK1BST1RFQ1RFRCBpbnQKLSt1bndfaW5pdF9yZW1vdGUgKHVud19jdXJzb3JfdCAqY3Vyc29yLCB1bndfYWRkcl9zcGFjZV90IGFzLCB2b2lkICphc19hcmcpCi0rewotKyNpZmRlZiBVTldfTE9DQUxfT05MWQotKyAgcmV0dXJuIC1VTldfRUlOVkFMOwotKyNlbHNlIC8qICFVTldfTE9DQUxfT05MWSAqLwotKyAgc3RydWN0IGN1cnNvciAqYyA9IChzdHJ1Y3QgY3Vyc29yICopIGN1cnNvcjsKLSsKLSsgIGlmICghdGRlcF9pbml0X2RvbmUpCi0rICAgIHRkZXBfaW5pdCAoKTsKLSsKLSsgIERlYnVnICgxLCAiKGN1cnNvcj0lcClcbiIsIGMpOwotKwotKyAgYy0+ZHdhcmYuYXMgPSBhczsKLSsgIGMtPmR3YXJmLmFzX2FyZyA9IGFzX2FyZzsKLSsgIHJldHVybiBjb21tb25faW5pdCAoYywgMCk7Ci0rI2VuZGlmIC8qICFVTldfTE9DQUxfT05MWSAqLwotK30KLS0tLSAvZGV2L251bGwKLSsrKyBiL3NyYy9hYXJjaDY0L0dpc19zaWduYWxfZnJhbWUuYwotQEAgLTAsMCArMSw2NCBAQAotKy8qIGxpYnVud2luZCAtIGEgcGxhdGZvcm0taW5kZXBlbmRlbnQgdW53aW5kIGxpYnJhcnkKLSsgICBDb3B5cmlnaHQgKEMpIDIwMTIgVG9tbWkgUmFudGFsYSA8dHQucmFudGFsYUBnbWFpbC5jb20+Ci0rICAgQ29weXJpZ2h0IChDKSAyMDEzIExpbmFybyBMaW1pdGVkCi0rCi0rVGhpcyBmaWxlIGlzIHBhcnQgb2YgbGlidW53aW5kLgotKwotK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwotK2EgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQotKyJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKLSt3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCi0rZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCi0rcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCi0rdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotKwotK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCi0raW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0rCi0rVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCi0rRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi0rTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKLStOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFCi0rTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTgotK09GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgotK1dJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgKi8KLSsKLSsjaW5jbHVkZSAidW53aW5kX2kuaCIKLSsKLSsvKiBUaGUgcmVzdG9yZXIgc3R1YiB3aWxsIGFsd2F5cyBoYXZlIHRoZSBmb3JtOgotKwotKyAgIGQyODAxMTY4ICAgICAgICBtb3Z6ICAgIHg4LCAjMHg4YgotKyAgIGQ0MDAwMDAxICAgICAgICBzdmMgICAgICMweDAKLSsqLwotKwotK1BST1RFQ1RFRCBpbnQKLSt1bndfaXNfc2lnbmFsX2ZyYW1lICh1bndfY3Vyc29yX3QgKmN1cnNvcikKLSt7Ci0rI2lmZGVmIF9fbGludXhfXwotKyAgc3RydWN0IGN1cnNvciAqYyA9IChzdHJ1Y3QgY3Vyc29yICopIGN1cnNvcjsKLSsgIHVud193b3JkX3QgdzAsIGlwOwotKyAgdW53X2FkZHJfc3BhY2VfdCBhczsKLSsgIHVud19hY2Nlc3NvcnNfdCAqYTsKLSsgIHZvaWQgKmFyZzsKLSsgIGludCByZXQ7Ci0rCi0rICBhcyA9IGMtPmR3YXJmLmFzOwotKyAgYSA9IHVud19nZXRfYWNjZXNzb3JzIChhcyk7Ci0rICBhcmcgPSBjLT5kd2FyZi5hc19hcmc7Ci0rCi0rICBpcCA9IGMtPmR3YXJmLmlwOwotKwotKyAgcmV0ID0gKCphLT5hY2Nlc3NfbWVtKSAoYXMsIGlwLCAmdzAsIDAsIGFyZyk7Ci0rICBpZiAocmV0IDwgMCkKLSsgICAgcmV0dXJuIHJldDsKLSsKLSsgIC8qIEZJWE1FOiBkaXN0aW5ndWlzaCAzMmJpdCBpbnNuIHZzIDY0Yml0IHJlZ2lzdGVycy4gICovCi0rICBpZiAodzAgIT0gMHhkNDAwMDAwMWQyODAxMTY4KQotKyAgICByZXR1cm4gMDsKLSsKLSsgIHJldHVybiAxOwotKwotKyNlbHNlCi0rICByZXR1cm4gLVVOV19FTk9JTkZPOwotKyNlbmRpZgotK30KLS0tLSAvZGV2L251bGwKLSsrKyBiL3NyYy9hYXJjaDY0L0dyZWdzLmMKLUBAIC0wLDAgKzEsMTEzIEBACi0rLyogbGlidW53aW5kIC0gYSBwbGF0Zm9ybS1pbmRlcGVuZGVudCB1bndpbmQgbGlicmFyeQotKyAgIENvcHlyaWdodCAoQykgMjAwOCBDb2RlU291cmNlcnkKLSsgICBDb3B5cmlnaHQgKEMpIDIwMTIgVG9tbWkgUmFudGFsYSA8dHQucmFudGFsYUBnbWFpbC5jb20+Ci0rICAgQ29weXJpZ2h0IChDKSAyMDEzIExpbmFybyBMaW1pdGVkCi0rCi0rVGhpcyBmaWxlIGlzIHBhcnQgb2YgbGlidW53aW5kLgotKwotK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwotK2EgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQotKyJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKLSt3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCi0rZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCi0rcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCi0rdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotKwotK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCi0raW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0rCi0rVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCi0rRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi0rTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKLStOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFCi0rTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTgotK09GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgotK1dJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgKi8KLSsKLSsjaW5jbHVkZSAidW53aW5kX2kuaCIKLSsKLStISURERU4gaW50Ci0rdGRlcF9hY2Nlc3NfcmVnIChzdHJ1Y3QgY3Vyc29yICpjLCB1bndfcmVnbnVtX3QgcmVnLCB1bndfd29yZF90ICp2YWxwLAotKwkJIGludCB3cml0ZSkKLSt7Ci0rICBkd2FyZl9sb2NfdCBsb2MgPSBEV0FSRl9OVUxMX0xPQzsKLSsgIHVuc2lnbmVkIGludCBtYXNrOwotKwotKyAgc3dpdGNoIChyZWcpCi0rICAgIHsKLSsgICAgY2FzZSBVTldfQUFSQ0g2NF9YMDoKLSsgICAgY2FzZSBVTldfQUFSQ0g2NF9YMToKLSsgICAgY2FzZSBVTldfQUFSQ0g2NF9YMjoKLSsgICAgY2FzZSBVTldfQUFSQ0g2NF9YMzoKLSsgICAgICBtYXNrID0gMSA8PCByZWc7Ci0rICAgICAgaWYgKHdyaXRlKQotKyAgICAgICAgewotKyAgICAgICAgICBjLT5kd2FyZi5laF9hcmdzW3JlZ10gPSAqdmFscDsKLSsgICAgICAgICAgYy0+ZHdhcmYuZWhfdmFsaWRfbWFzayB8PSBtYXNrOwotKyAgICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgIH0KLSsgICAgICBlbHNlIGlmICgoYy0+ZHdhcmYuZWhfdmFsaWRfbWFzayAmIG1hc2spICE9IDApCi0rICAgICAgICB7Ci0rICAgICAgICAgICp2YWxwID0gYy0+ZHdhcmYuZWhfYXJnc1tyZWddOwotKyAgICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgIH0KLSsgICAgICBlbHNlCi0rICAgICAgICBsb2MgPSBjLT5kd2FyZi5sb2NbcmVnXTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBVTldfQUFSQ0g2NF9YNDoKLSsgICAgY2FzZSBVTldfQUFSQ0g2NF9YNToKLSsgICAgY2FzZSBVTldfQUFSQ0g2NF9YNjoKLSsgICAgY2FzZSBVTldfQUFSQ0g2NF9YNzoKLSsgICAgY2FzZSBVTldfQUFSQ0g2NF9YODoKLSsgICAgY2FzZSBVTldfQUFSQ0g2NF9YOToKLSsgICAgY2FzZSBVTldfQUFSQ0g2NF9YMTA6Ci0rICAgIGNhc2UgVU5XX0FBUkNINjRfWDExOgotKyAgICBjYXNlIFVOV19BQVJDSDY0X1gxMjoKLSsgICAgY2FzZSBVTldfQUFSQ0g2NF9YMTM6Ci0rICAgIGNhc2UgVU5XX0FBUkNINjRfWDE0OgotKyAgICBjYXNlIFVOV19BQVJDSDY0X1gxNToKLSsgICAgY2FzZSBVTldfQUFSQ0g2NF9YMTY6Ci0rICAgIGNhc2UgVU5XX0FBUkNINjRfWDE3OgotKyAgICBjYXNlIFVOV19BQVJDSDY0X1gxODoKLSsgICAgY2FzZSBVTldfQUFSQ0g2NF9YMTk6Ci0rICAgIGNhc2UgVU5XX0FBUkNINjRfWDIwOgotKyAgICBjYXNlIFVOV19BQVJDSDY0X1gyMToKLSsgICAgY2FzZSBVTldfQUFSQ0g2NF9YMjI6Ci0rICAgIGNhc2UgVU5XX0FBUkNINjRfWDIzOgotKyAgICBjYXNlIFVOV19BQVJDSDY0X1gyNDoKLSsgICAgY2FzZSBVTldfQUFSQ0g2NF9YMjU6Ci0rICAgIGNhc2UgVU5XX0FBUkNINjRfWDI2OgotKyAgICBjYXNlIFVOV19BQVJDSDY0X1gyNzoKLSsgICAgY2FzZSBVTldfQUFSQ0g2NF9YMjg6Ci0rICAgIGNhc2UgVU5XX0FBUkNINjRfWDI5OgotKyAgICBjYXNlIFVOV19BQVJDSDY0X1gzMDoKLSsgICAgY2FzZSBVTldfQUFSQ0g2NF9QQzoKLSsgICAgY2FzZSBVTldfQUFSQ0g2NF9QU1RBVEU6Ci0rICAgICAgbG9jID0gYy0+ZHdhcmYubG9jW3JlZ107Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgVU5XX0FBUkNINjRfU1A6Ci0rICAgICAgaWYgKHdyaXRlKQotKyAgICAgICAgcmV0dXJuIC1VTldfRVJFQURPTkxZUkVHOwotKyAgICAgICp2YWxwID0gYy0+ZHdhcmYuY2ZhOwotKyAgICAgIHJldHVybiAwOwotKwotKyAgICBkZWZhdWx0OgotKyAgICAgIERlYnVnICgxLCAiYmFkIHJlZ2lzdGVyIG51bWJlciAldVxuIiwgcmVnKTsKLSsgICAgICByZXR1cm4gLVVOV19FQkFEUkVHOwotKyAgICB9Ci0rCi0rICBpZiAod3JpdGUpCi0rICAgIHJldHVybiBkd2FyZl9wdXQgKCZjLT5kd2FyZiwgbG9jLCAqdmFscCk7Ci0rICBlbHNlCi0rICAgIHJldHVybiBkd2FyZl9nZXQgKCZjLT5kd2FyZiwgbG9jLCB2YWxwKTsKLSt9Ci0rCi0rSElEREVOIGludAotK3RkZXBfYWNjZXNzX2ZwcmVnIChzdHJ1Y3QgY3Vyc29yICpjLCB1bndfcmVnbnVtX3QgcmVnLCB1bndfZnByZWdfdCAqdmFscCwKLSsJCSAgIGludCB3cml0ZSkKLSt7Ci0rICBEZWJ1ZyAoMSwgImJhZCByZWdpc3RlciBudW1iZXIgJXVcbiIsIHJlZyk7Ci0rICByZXR1cm4gLVVOV19FQkFEUkVHOwotK30KLS0tLSAvZGV2L251bGwKLSsrKyBiL3NyYy9hYXJjaDY0L0dyZXN1bWUuYwotQEAgLTAsMCArMSwxNzcgQEAKLSsvKiBsaWJ1bndpbmQgLSBhIHBsYXRmb3JtLWluZGVwZW5kZW50IHVud2luZCBsaWJyYXJ5Ci0rICAgQ29weXJpZ2h0IChDKSAyMDA4IENvZGVTb3VyY2VyeQotKyAgIENvcHlyaWdodCAoQykgMjAxMS0yMDEzIExpbmFybyBMaW1pdGVkCi0rICAgQ29weXJpZ2h0IChDKSAyMDEyIFRvbW1pIFJhbnRhbGEgPHR0LnJhbnRhbGFAZ21haWwuY29tPgotKwotK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIGxpYnVud2luZC4KLSsKLStQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKLSthIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKLSsiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi0rd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAotK2Rpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwotK3Blcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwotK3RoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSsKLStUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQotK2luY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotKwotK1RIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAotK0VYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgotK01FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECi0rTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRQotK0xJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04KLStPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04KLStXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICovCi0rCi0rI2luY2x1ZGUgInVud2luZF9pLmgiCi0rI2luY2x1ZGUgIm9mZnNldHMuaCIKLSsKLSsjaWZuZGVmIFVOV19SRU1PVEVfT05MWQotKwotK0hJRERFTiBpbmxpbmUgaW50Ci0rYWFyY2g2NF9sb2NhbF9yZXN1bWUgKHVud19hZGRyX3NwYWNlX3QgYXMsIHVud19jdXJzb3JfdCAqY3Vyc29yLCB2b2lkICphcmcpCi0rewotKyNpZmRlZiBfX2xpbnV4X18KLSsgIHN0cnVjdCBjdXJzb3IgKmMgPSAoc3RydWN0IGN1cnNvciAqKSBjdXJzb3I7Ci0rICB1bndfdGRlcF9jb250ZXh0X3QgKnVjID0gYy0+ZHdhcmYuYXNfYXJnOwotKwotKyAgaWYgKGMtPnNpZ2NvbnRleHRfZm9ybWF0ID09IEFBUkNINjRfU0NGX05PTkUpCi0rICAgIHsKLSsgICAgICAvKiBTaW5jZSB0aGVyZSBhcmUgbm8gc2lnbmFscyBpbnZvbHZlZCBoZXJlIHdlIHJlc3RvcmUgdGhlIG5vbiBzY3JhdGNoCi0rCSByZWdpc3RlcnMgb25seS4gICovCi0rICAgICAgdW5zaWduZWQgbG9uZyByZWdzWzExXTsKLSsgICAgICByZWdzWzBdID0gdWMtPnVjX21jb250ZXh0LnJlZ3NbMTldOwotKyAgICAgIHJlZ3NbMV0gPSB1Yy0+dWNfbWNvbnRleHQucmVnc1syMF07Ci0rICAgICAgcmVnc1syXSA9IHVjLT51Y19tY29udGV4dC5yZWdzWzIxXTsKLSsgICAgICByZWdzWzNdID0gdWMtPnVjX21jb250ZXh0LnJlZ3NbMjJdOwotKyAgICAgIHJlZ3NbNF0gPSB1Yy0+dWNfbWNvbnRleHQucmVnc1syM107Ci0rICAgICAgcmVnc1s1XSA9IHVjLT51Y19tY29udGV4dC5yZWdzWzI0XTsKLSsgICAgICByZWdzWzZdID0gdWMtPnVjX21jb250ZXh0LnJlZ3NbMjVdOwotKyAgICAgIHJlZ3NbN10gPSB1Yy0+dWNfbWNvbnRleHQucmVnc1syNl07Ci0rICAgICAgcmVnc1s4XSA9IHVjLT51Y19tY29udGV4dC5yZWdzWzI3XTsKLSsgICAgICByZWdzWzldID0gdWMtPnVjX21jb250ZXh0LnJlZ3NbMjhdOwotKyAgICAgIHJlZ3NbMTBdID0gdWMtPnVjX21jb250ZXh0LnJlZ3NbMzBdOyAvKiBMUiAqLwotKyAgICAgIHVuc2lnbmVkIGxvbmcgc3AgPSB1Yy0+dWNfbWNvbnRleHQuc3A7Ci0rCi0rICAgICAgc3RydWN0IHJlZ3Nfb3ZlcmxheSB7Ci0rICAgICAgICBjaGFyIHhbc2l6ZW9mKHJlZ3MpXTsKLSsgICAgICB9OwotKwotKyAgICAgIGFzbSB2b2xhdGlsZSAoCi0rICAgICAgICAibGRwIHgxOSwgeDIwLCBbJTBdXG4iCi0rICAgICAgICAibGRwIHgyMSwgeDIyLCBbJTAsMTZdXG4iCi0rICAgICAgICAibGRwIHgyMywgeDI0LCBbJTAsMzJdXG4iCi0rICAgICAgICAibGRwIHgyNSwgeDI2LCBbJTAsNDhdXG4iCi0rICAgICAgICAibGRwIHgyNywgeDI4LCBbJTAsNjRdXG4iCi0rICAgICAgICAibGRyIHgzMCwgWyUwLDgwXVxuIgotKyAgICAgICAgIm1vdiBzcCwgJTFcbiIKLSsgICAgICAgICJyZXQgXG4iCi0rICAgICAgICA6Ci0rICAgICAgICA6ICJyIiAocmVncyksCi0rICAgICAgICAgICJyIiAoc3ApLAotKyAgICAgICAgICAibSIgKCooc3RydWN0IHJlZ3Nfb3ZlcmxheSAqKXJlZ3MpCi0rICAgICAgKTsKLSsgICAgfQotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgc3RydWN0IHNpZ2NvbnRleHQgKnNjID0gKHN0cnVjdCBzaWdjb250ZXh0ICopIGMtPnNpZ2NvbnRleHRfYWRkcjsKLSsKLSsgICAgICBpZiAoYy0+ZHdhcmYuZWhfdmFsaWRfbWFzayAmIDB4MSkgc2MtPnJlZ3NbMF0gPSBjLT5kd2FyZi5laF9hcmdzWzBdOwotKyAgICAgIGlmIChjLT5kd2FyZi5laF92YWxpZF9tYXNrICYgMHgyKSBzYy0+cmVnc1sxXSA9IGMtPmR3YXJmLmVoX2FyZ3NbMV07Ci0rICAgICAgaWYgKGMtPmR3YXJmLmVoX3ZhbGlkX21hc2sgJiAweDQpIHNjLT5yZWdzWzJdID0gYy0+ZHdhcmYuZWhfYXJnc1syXTsKLSsgICAgICBpZiAoYy0+ZHdhcmYuZWhfdmFsaWRfbWFzayAmIDB4OCkgc2MtPnJlZ3NbM10gPSBjLT5kd2FyZi5laF9hcmdzWzNdOwotKwotKyAgICAgIHNjLT5yZWdzWzRdID0gdWMtPnVjX21jb250ZXh0LnJlZ3NbNF07Ci0rICAgICAgc2MtPnJlZ3NbNV0gPSB1Yy0+dWNfbWNvbnRleHQucmVnc1s1XTsKLSsgICAgICBzYy0+cmVnc1s2XSA9IHVjLT51Y19tY29udGV4dC5yZWdzWzZdOwotKyAgICAgIHNjLT5yZWdzWzddID0gdWMtPnVjX21jb250ZXh0LnJlZ3NbN107Ci0rICAgICAgc2MtPnJlZ3NbOF0gPSB1Yy0+dWNfbWNvbnRleHQucmVnc1s4XTsKLSsgICAgICBzYy0+cmVnc1s5XSA9IHVjLT51Y19tY29udGV4dC5yZWdzWzldOwotKyAgICAgIHNjLT5yZWdzWzEwXSA9IHVjLT51Y19tY29udGV4dC5yZWdzWzEwXTsKLSsgICAgICBzYy0+cmVnc1sxMV0gPSB1Yy0+dWNfbWNvbnRleHQucmVnc1sxMV07Ci0rICAgICAgc2MtPnJlZ3NbMTJdID0gdWMtPnVjX21jb250ZXh0LnJlZ3NbMTJdOwotKyAgICAgIHNjLT5yZWdzWzEzXSA9IHVjLT51Y19tY29udGV4dC5yZWdzWzEzXTsKLSsgICAgICBzYy0+cmVnc1sxNF0gPSB1Yy0+dWNfbWNvbnRleHQucmVnc1sxNF07Ci0rICAgICAgc2MtPnJlZ3NbMTVdID0gdWMtPnVjX21jb250ZXh0LnJlZ3NbMTVdOwotKyAgICAgIHNjLT5yZWdzWzE2XSA9IHVjLT51Y19tY29udGV4dC5yZWdzWzE2XTsKLSsgICAgICBzYy0+cmVnc1sxN10gPSB1Yy0+dWNfbWNvbnRleHQucmVnc1sxN107Ci0rICAgICAgc2MtPnJlZ3NbMThdID0gdWMtPnVjX21jb250ZXh0LnJlZ3NbMThdOwotKyAgICAgIHNjLT5yZWdzWzE5XSA9IHVjLT51Y19tY29udGV4dC5yZWdzWzE5XTsKLSsgICAgICBzYy0+cmVnc1syMF0gPSB1Yy0+dWNfbWNvbnRleHQucmVnc1syMF07Ci0rICAgICAgc2MtPnJlZ3NbMjFdID0gdWMtPnVjX21jb250ZXh0LnJlZ3NbMjFdOwotKyAgICAgIHNjLT5yZWdzWzIyXSA9IHVjLT51Y19tY29udGV4dC5yZWdzWzIyXTsKLSsgICAgICBzYy0+cmVnc1syM10gPSB1Yy0+dWNfbWNvbnRleHQucmVnc1syM107Ci0rICAgICAgc2MtPnJlZ3NbMjRdID0gdWMtPnVjX21jb250ZXh0LnJlZ3NbMjRdOwotKyAgICAgIHNjLT5yZWdzWzI1XSA9IHVjLT51Y19tY29udGV4dC5yZWdzWzI1XTsKLSsgICAgICBzYy0+cmVnc1syNl0gPSB1Yy0+dWNfbWNvbnRleHQucmVnc1syNl07Ci0rICAgICAgc2MtPnJlZ3NbMjddID0gdWMtPnVjX21jb250ZXh0LnJlZ3NbMjddOwotKyAgICAgIHNjLT5yZWdzWzI4XSA9IHVjLT51Y19tY29udGV4dC5yZWdzWzI4XTsKLSsgICAgICBzYy0+cmVnc1syOV0gPSB1Yy0+dWNfbWNvbnRleHQucmVnc1syOV07Ci0rICAgICAgc2MtPnJlZ3NbMzBdID0gdWMtPnVjX21jb250ZXh0LnJlZ3NbMzBdOwotKyAgICAgIHNjLT5zcCA9IHVjLT51Y19tY29udGV4dC5zcDsKLSsgICAgICBzYy0+cGMgPSB1Yy0+dWNfbWNvbnRleHQucGM7Ci0rICAgICAgc2MtPnBzdGF0ZSA9IHVjLT51Y19tY29udGV4dC5wc3RhdGU7Ci0rCi0rICAgICAgYXNtIHZvbGF0aWxlICgKLSsgICAgICAgICJtb3Ygc3AsICUwXG4iCi0rICAgICAgICAicmV0ICUxXG4iCi0rICAgICAgICA6IDogInIiIChjLT5zaWdjb250ZXh0X3NwKSwgInIiIChjLT5zaWdjb250ZXh0X3BjKQotKyAgICAgICk7Ci0rICAgfQotKyAgdW5yZWFjaGFibGUoKTsKLSsjZWxzZQotKyAgcHJpbnRmICgiJXM6IGltcGxlbWVudCBtZVxuIiwgX19GVU5DVElPTl9fKTsKLSsjZW5kaWYKLSsgIHJldHVybiAtVU5XX0VJTlZBTDsKLSt9Ci0rCi0rI2VuZGlmIC8qICFVTldfUkVNT1RFX09OTFkgKi8KLSsKLStzdGF0aWMgaW5saW5lIHZvaWQKLStlc3RhYmxpc2hfbWFjaGluZV9zdGF0ZSAoc3RydWN0IGN1cnNvciAqYykKLSt7Ci0rICB1bndfYWRkcl9zcGFjZV90IGFzID0gYy0+ZHdhcmYuYXM7Ci0rICB2b2lkICphcmcgPSBjLT5kd2FyZi5hc19hcmc7Ci0rICB1bndfZnByZWdfdCBmcHZhbDsKLSsgIHVud193b3JkX3QgdmFsOwotKyAgaW50IHJlZzsKLSsKLSsgIERlYnVnICg4LCAiY29weWluZyBvdXQgY3Vyc29yIHN0YXRlXG4iKTsKLSsKLSsgIGZvciAocmVnID0gMDsgcmVnIDw9IFVOV19BQVJDSDY0X1BTVEFURTsgKytyZWcpCi0rICAgIHsKLSsgICAgICBEZWJ1ZyAoMTYsICJjb3B5aW5nICVzICVkXG4iLCB1bndfcmVnbmFtZSAocmVnKSwgcmVnKTsKLSsgICAgICBpZiAodW53X2lzX2ZwcmVnIChyZWcpKQotKwl7Ci0rCSAgaWYgKHRkZXBfYWNjZXNzX2ZwcmVnIChjLCByZWcsICZmcHZhbCwgMCkgPj0gMCkKLSsJICAgIGFzLT5hY2MuYWNjZXNzX2ZwcmVnIChhcywgcmVnLCAmZnB2YWwsIDEsIGFyZyk7Ci0rCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICBpZiAodGRlcF9hY2Nlc3NfcmVnIChjLCByZWcsICZ2YWwsIDApID49IDApCi0rCSAgICBhcy0+YWNjLmFjY2Vzc19yZWcgKGFzLCByZWcsICZ2YWwsIDEsIGFyZyk7Ci0rCX0KLSsgICAgfQotK30KLSsKLStQUk9URUNURUQgaW50Ci0rdW53X3Jlc3VtZSAodW53X2N1cnNvcl90ICpjdXJzb3IpCi0rewotKyAgc3RydWN0IGN1cnNvciAqYyA9IChzdHJ1Y3QgY3Vyc29yICopIGN1cnNvcjsKLSsKLSsgIERlYnVnICgxLCAiKGN1cnNvcj0lcClcbiIsIGMpOwotKwotKyAgaWYgKCFjLT5kd2FyZi5pcCkKLSsgICAgewotKyAgICAgIC8qIFRoaXMgY2FuIGhhcHBlbiBlYXNpbHkgd2hlbiB0aGUgZnJhbWUtY2hhaW4gZ2V0cyB0cnVuY2F0ZWQKLSsJIGR1ZSB0byBiYWQgb3IgbWlzc2luZyB1bndpbmQtaW5mby4gICovCi0rICAgICAgRGVidWcgKDEsICJyZWZ1c2luZyB0byByZXN1bWUgZXhlY3V0aW9uIGF0IGFkZHJlc3MgMFxuIik7Ci0rICAgICAgcmV0dXJuIC1VTldfRUlOVkFMOwotKyAgICB9Ci0rCi0rICBlc3RhYmxpc2hfbWFjaGluZV9zdGF0ZSAoYyk7Ci0rCi0rICByZXR1cm4gKCpjLT5kd2FyZi5hcy0+YWNjLnJlc3VtZSkgKGMtPmR3YXJmLmFzLCAodW53X2N1cnNvcl90ICopIGMsCi0rCQkJCSAgICAgYy0+ZHdhcmYuYXNfYXJnKTsKLSt9Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9zcmMvYWFyY2g2NC9Hc3RlcC5jCi1AQCAtMCwwICsxLDEyOSBAQAotKy8qIGxpYnVud2luZCAtIGEgcGxhdGZvcm0taW5kZXBlbmRlbnQgdW53aW5kIGxpYnJhcnkKLSsgICBDb3B5cmlnaHQgKEMpIDIwMDggQ29kZVNvdXJjZXJ5Ci0rICAgQ29weXJpZ2h0IChDKSAyMDExLTIwMTMgTGluYXJvIExpbWl0ZWQKLSsgICBDb3B5cmlnaHQgKEMpIDIwMTIgVG9tbWkgUmFudGFsYSA8dHQucmFudGFsYUBnbWFpbC5jb20+Ci0rCi0rVGhpcyBmaWxlIGlzIHBhcnQgb2YgbGlidW53aW5kLgotKwotK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwotK2EgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQotKyJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKLSt3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCi0rZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCi0rcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCi0rdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotKwotK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCi0raW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0rCi0rVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCi0rRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi0rTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKLStOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFCi0rTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTgotK09GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgotK1dJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgKi8KLSsKLSsjaW5jbHVkZSAidW53aW5kX2kuaCIKLSsjaW5jbHVkZSAib2Zmc2V0cy5oIgotKwotK1BST1RFQ1RFRCBpbnQKLSt1bndfaGFuZGxlX3NpZ25hbF9mcmFtZSAodW53X2N1cnNvcl90ICpjdXJzb3IpCi0rewotKyAgc3RydWN0IGN1cnNvciAqYyA9IChzdHJ1Y3QgY3Vyc29yICopIGN1cnNvcjsKLSsgIGludCByZXQ7Ci0rICB1bndfd29yZF90IHNjX2FkZHIsIHNwLCBzcF9hZGRyID0gYy0+ZHdhcmYuY2ZhOwotKyAgc3RydWN0IGR3YXJmX2xvYyBzcF9sb2MgPSBEV0FSRl9MT0MgKHNwX2FkZHIsIDApOwotKwotKyAgaWYgKChyZXQgPSBkd2FyZl9nZXQgKCZjLT5kd2FyZiwgc3BfbG9jLCAmc3ApKSA8IDApCi0rICAgIHJldHVybiAtVU5XX0VVTlNQRUM7Ci0rCi0rICByZXQgPSB1bndfaXNfc2lnbmFsX2ZyYW1lIChjdXJzb3IpOwotKyAgRGVidWcoMSwgInVud19pc19zaWduYWxfZnJhbWUoKT0lZFxuIiwgcmV0KTsKLSsKLSsgIC8qIFNhdmUgdGhlIFNQIGFuZCBQQyB0byBiZSBhYmxlIHRvIHJldHVybiBleGVjdXRpb24gYXQgdGhpcyBwb2ludAotKyAgICAgbGF0ZXIgaW4gdGltZSAodW53X3Jlc3VtZSkuICAqLwotKyAgYy0+c2lnY29udGV4dF9zcCA9IGMtPmR3YXJmLmNmYTsKLSsgIGMtPnNpZ2NvbnRleHRfcGMgPSBjLT5kd2FyZi5pcDsKLSsKLSsgIGlmIChyZXQpCi0rICAgIHsKLSsgICAgICBjLT5zaWdjb250ZXh0X2Zvcm1hdCA9IEFBUkNINjRfU0NGX0xJTlVYX1JUX1NJR0ZSQU1FOwotKyAgICAgIHNjX2FkZHIgPSBzcF9hZGRyICsgc2l6ZW9mIChzaWdpbmZvX3QpICsgTElOVVhfVUNfTUNPTlRFWFRfT0ZGOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHJldHVybiAtVU5XX0VVTlNQRUM7Ci0rCi0rICBjLT5zaWdjb250ZXh0X2FkZHIgPSBzY19hZGRyOwotKwotKyAgLyogVXBkYXRlIHRoZSBkd2FyZiBjdXJzb3IuCi0rICAgICBTZXQgdGhlIGxvY2F0aW9uIG9mIHRoZSByZWdpc3RlcnMgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYWRkcmVzc2VzIG9mIHRoZQotKyAgICAgdWNfbWNvbnRleHQgLyBzaWdjb250ZXh0IHN0cnVjdHVyZSBjb250ZW50cy4gICovCi0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfWDBdICA9IERXQVJGX0xPQyAoc2NfYWRkciArIExJTlVYX1NDX1gwX09GRiwgMCk7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfWDFdICA9IERXQVJGX0xPQyAoc2NfYWRkciArIExJTlVYX1NDX1gxX09GRiwgMCk7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfWDJdICA9IERXQVJGX0xPQyAoc2NfYWRkciArIExJTlVYX1NDX1gyX09GRiwgMCk7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfWDNdICA9IERXQVJGX0xPQyAoc2NfYWRkciArIExJTlVYX1NDX1gzX09GRiwgMCk7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfWDRdICA9IERXQVJGX0xPQyAoc2NfYWRkciArIExJTlVYX1NDX1g0X09GRiwgMCk7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfWDVdICA9IERXQVJGX0xPQyAoc2NfYWRkciArIExJTlVYX1NDX1g1X09GRiwgMCk7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfWDZdICA9IERXQVJGX0xPQyAoc2NfYWRkciArIExJTlVYX1NDX1g2X09GRiwgMCk7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfWDddICA9IERXQVJGX0xPQyAoc2NfYWRkciArIExJTlVYX1NDX1g3X09GRiwgMCk7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfWDhdICA9IERXQVJGX0xPQyAoc2NfYWRkciArIExJTlVYX1NDX1g4X09GRiwgMCk7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfWDldICA9IERXQVJGX0xPQyAoc2NfYWRkciArIExJTlVYX1NDX1g5X09GRiwgMCk7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfWDEwXSA9IERXQVJGX0xPQyAoc2NfYWRkciArIExJTlVYX1NDX1gxMF9PRkYsIDApOwotKyAgYy0+ZHdhcmYubG9jW1VOV19BQVJDSDY0X1gxMV0gPSBEV0FSRl9MT0MgKHNjX2FkZHIgKyBMSU5VWF9TQ19YMTFfT0ZGLCAwKTsKLSsgIGMtPmR3YXJmLmxvY1tVTldfQUFSQ0g2NF9YMTJdID0gRFdBUkZfTE9DIChzY19hZGRyICsgTElOVVhfU0NfWDEyX09GRiwgMCk7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfWDEzXSA9IERXQVJGX0xPQyAoc2NfYWRkciArIExJTlVYX1NDX1gxM19PRkYsIDApOwotKyAgYy0+ZHdhcmYubG9jW1VOV19BQVJDSDY0X1gxNF0gPSBEV0FSRl9MT0MgKHNjX2FkZHIgKyBMSU5VWF9TQ19YMTRfT0ZGLCAwKTsKLSsgIGMtPmR3YXJmLmxvY1tVTldfQUFSQ0g2NF9YMTVdID0gRFdBUkZfTE9DIChzY19hZGRyICsgTElOVVhfU0NfWDE1X09GRiwgMCk7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfWDE2XSA9IERXQVJGX0xPQyAoc2NfYWRkciArIExJTlVYX1NDX1gxNl9PRkYsIDApOwotKyAgYy0+ZHdhcmYubG9jW1VOV19BQVJDSDY0X1gxN10gPSBEV0FSRl9MT0MgKHNjX2FkZHIgKyBMSU5VWF9TQ19YMTdfT0ZGLCAwKTsKLSsgIGMtPmR3YXJmLmxvY1tVTldfQUFSQ0g2NF9YMThdID0gRFdBUkZfTE9DIChzY19hZGRyICsgTElOVVhfU0NfWDE4X09GRiwgMCk7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfWDE5XSA9IERXQVJGX0xPQyAoc2NfYWRkciArIExJTlVYX1NDX1gxOV9PRkYsIDApOwotKyAgYy0+ZHdhcmYubG9jW1VOV19BQVJDSDY0X1gyMF0gPSBEV0FSRl9MT0MgKHNjX2FkZHIgKyBMSU5VWF9TQ19YMjBfT0ZGLCAwKTsKLSsgIGMtPmR3YXJmLmxvY1tVTldfQUFSQ0g2NF9YMjFdID0gRFdBUkZfTE9DIChzY19hZGRyICsgTElOVVhfU0NfWDIxX09GRiwgMCk7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfWDIyXSA9IERXQVJGX0xPQyAoc2NfYWRkciArIExJTlVYX1NDX1gyMl9PRkYsIDApOwotKyAgYy0+ZHdhcmYubG9jW1VOV19BQVJDSDY0X1gyM10gPSBEV0FSRl9MT0MgKHNjX2FkZHIgKyBMSU5VWF9TQ19YMjNfT0ZGLCAwKTsKLSsgIGMtPmR3YXJmLmxvY1tVTldfQUFSQ0g2NF9YMjRdID0gRFdBUkZfTE9DIChzY19hZGRyICsgTElOVVhfU0NfWDI0X09GRiwgMCk7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfWDI1XSA9IERXQVJGX0xPQyAoc2NfYWRkciArIExJTlVYX1NDX1gyNV9PRkYsIDApOwotKyAgYy0+ZHdhcmYubG9jW1VOV19BQVJDSDY0X1gyNl0gPSBEV0FSRl9MT0MgKHNjX2FkZHIgKyBMSU5VWF9TQ19YMjZfT0ZGLCAwKTsKLSsgIGMtPmR3YXJmLmxvY1tVTldfQUFSQ0g2NF9YMjddID0gRFdBUkZfTE9DIChzY19hZGRyICsgTElOVVhfU0NfWDI3X09GRiwgMCk7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfWDI4XSA9IERXQVJGX0xPQyAoc2NfYWRkciArIExJTlVYX1NDX1gyOF9PRkYsIDApOwotKyAgYy0+ZHdhcmYubG9jW1VOV19BQVJDSDY0X1gyOV0gPSBEV0FSRl9MT0MgKHNjX2FkZHIgKyBMSU5VWF9TQ19YMjlfT0ZGLCAwKTsKLSsgIGMtPmR3YXJmLmxvY1tVTldfQUFSQ0g2NF9YMzBdID0gRFdBUkZfTE9DIChzY19hZGRyICsgTElOVVhfU0NfWDMwX09GRiwgMCk7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfU1BdICA9IERXQVJGX0xPQyAoc2NfYWRkciArIExJTlVYX1NDX1NQX09GRiwgMCk7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfUENdICA9IERXQVJGX0xPQyAoc2NfYWRkciArIExJTlVYX1NDX1BDX09GRiwgMCk7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfUFNUQVRFXSAgPSBEV0FSRl9MT0MgKHNjX2FkZHIgKyBMSU5VWF9TQ19QU1RBVEVfT0ZGLCAwKTsKLSsKLSsgIC8qIFNldCBTUC9DRkEgYW5kIFBDL0lQLiAgKi8KLSsgIGR3YXJmX2dldCAoJmMtPmR3YXJmLCBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfU1BdLCAmYy0+ZHdhcmYuY2ZhKTsKLSsgIGR3YXJmX2dldCAoJmMtPmR3YXJmLCBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfUENdLCAmYy0+ZHdhcmYuaXApOwotKwotKyAgYy0+ZHdhcmYucGlfdmFsaWQgPSAwOwotKwotKyAgcmV0dXJuIDE7Ci0rfQotKwotK1BST1RFQ1RFRCBpbnQKLSt1bndfc3RlcCAodW53X2N1cnNvcl90ICpjdXJzb3IpCi0rewotKyAgc3RydWN0IGN1cnNvciAqYyA9IChzdHJ1Y3QgY3Vyc29yICopIGN1cnNvcjsKLSsgIGludCByZXQ7Ci0rCi0rICBEZWJ1ZyAoMSwgIihjdXJzb3I9JXAsIGlwPTB4JTAxNmx4LCBjZmE9MHglMDE2bHgpKVxuIiwKLSsJIGMsIGMtPmR3YXJmLmlwLCBjLT5kd2FyZi5jZmEpOwotKwotKyAgLyogQ2hlY2sgaWYgdGhpcyBpcyBhIHNpZ25hbCBmcmFtZS4gKi8KLSsgIGlmICh1bndfaXNfc2lnbmFsX2ZyYW1lIChjdXJzb3IpKQotKyAgICByZXR1cm4gdW53X2hhbmRsZV9zaWduYWxfZnJhbWUgKGN1cnNvcik7Ci0rCi0rICByZXQgPSBkd2FyZl9zdGVwICgmYy0+ZHdhcmYpOwotKyAgRGVidWcoMSwgImR3YXJmX3N0ZXAoKT0lZFxuIiwgcmV0KTsKLSsKLSsgIGlmICh1bmxpa2VseSAocmV0ID09IC1VTldfRVNUT1BVTldJTkQpKQotKyAgICByZXR1cm4gcmV0OwotKwotKyAgaWYgKHVubGlrZWx5IChyZXQgPCAwKSkKLSsgICAgcmV0dXJuIDA7Ci0rCi0rICByZXR1cm4gKGMtPmR3YXJmLmlwID09IDApID8gMCA6IDE7Ci0rfQotLS0tIC9kZXYvbnVsbAotKysrIGIvc3JjL2FhcmNoNjQvTGNyZWF0ZV9hZGRyX3NwYWNlLmMKLUBAIC0wLDAgKzEsNSBAQAotKyNkZWZpbmUgVU5XX0xPQ0FMX09OTFkKLSsjaW5jbHVkZSA8bGlidW53aW5kLmg+Ci0rI2lmIGRlZmluZWQoVU5XX0xPQ0FMX09OTFkpICYmICFkZWZpbmVkKFVOV19SRU1PVEVfT05MWSkKLSsjaW5jbHVkZSAiR2NyZWF0ZV9hZGRyX3NwYWNlLmMiCi0rI2VuZGlmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zcmMvYWFyY2g2NC9MZ2V0X3Byb2NfaW5mby5jCi1AQCAtMCwwICsxLDUgQEAKLSsjZGVmaW5lIFVOV19MT0NBTF9PTkxZCi0rI2luY2x1ZGUgPGxpYnVud2luZC5oPgotKyNpZiBkZWZpbmVkKFVOV19MT0NBTF9PTkxZKSAmJiAhZGVmaW5lZChVTldfUkVNT1RFX09OTFkpCi0rI2luY2x1ZGUgIkdnZXRfcHJvY19pbmZvLmMiCi0rI2VuZGlmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zcmMvYWFyY2g2NC9MZ2V0X3NhdmVfbG9jLmMKLUBAIC0wLDAgKzEsNSBAQAotKyNkZWZpbmUgVU5XX0xPQ0FMX09OTFkKLSsjaW5jbHVkZSA8bGlidW53aW5kLmg+Ci0rI2lmIGRlZmluZWQoVU5XX0xPQ0FMX09OTFkpICYmICFkZWZpbmVkKFVOV19SRU1PVEVfT05MWSkKLSsjaW5jbHVkZSAiR2dldF9zYXZlX2xvYy5jIgotKyNlbmRpZgotLS0tIC9kZXYvbnVsbAotKysrIGIvc3JjL2FhcmNoNjQvTGdsb2JhbC5jCi1AQCAtMCwwICsxLDUgQEAKLSsjZGVmaW5lIFVOV19MT0NBTF9PTkxZCi0rI2luY2x1ZGUgPGxpYnVud2luZC5oPgotKyNpZiBkZWZpbmVkKFVOV19MT0NBTF9PTkxZKSAmJiAhZGVmaW5lZChVTldfUkVNT1RFX09OTFkpCi0rI2luY2x1ZGUgIkdnbG9iYWwuYyIKLSsjZW5kaWYKLS0tLSAvZGV2L251bGwKLSsrKyBiL3NyYy9hYXJjaDY0L0xpbml0LmMKLUBAIC0wLDAgKzEsNSBAQAotKyNkZWZpbmUgVU5XX0xPQ0FMX09OTFkKLSsjaW5jbHVkZSA8bGlidW53aW5kLmg+Ci0rI2lmIGRlZmluZWQoVU5XX0xPQ0FMX09OTFkpICYmICFkZWZpbmVkKFVOV19SRU1PVEVfT05MWSkKLSsjaW5jbHVkZSAiR2luaXQuYyIKLSsjZW5kaWYKLS0tLSAvZGV2L251bGwKLSsrKyBiL3NyYy9hYXJjaDY0L0xpbml0X2xvY2FsLmMKLUBAIC0wLDAgKzEsNSBAQAotKyNkZWZpbmUgVU5XX0xPQ0FMX09OTFkKLSsjaW5jbHVkZSA8bGlidW53aW5kLmg+Ci0rI2lmIGRlZmluZWQoVU5XX0xPQ0FMX09OTFkpICYmICFkZWZpbmVkKFVOV19SRU1PVEVfT05MWSkKLSsjaW5jbHVkZSAiR2luaXRfbG9jYWwuYyIKLSsjZW5kaWYKLS0tLSAvZGV2L251bGwKLSsrKyBiL3NyYy9hYXJjaDY0L0xpbml0X3JlbW90ZS5jCi1AQCAtMCwwICsxLDUgQEAKLSsjZGVmaW5lIFVOV19MT0NBTF9PTkxZCi0rI2luY2x1ZGUgPGxpYnVud2luZC5oPgotKyNpZiBkZWZpbmVkKFVOV19MT0NBTF9PTkxZKSAmJiAhZGVmaW5lZChVTldfUkVNT1RFX09OTFkpCi0rI2luY2x1ZGUgIkdpbml0X3JlbW90ZS5jIgotKyNlbmRpZgotLS0tIC9kZXYvbnVsbAotKysrIGIvc3JjL2FhcmNoNjQvTGlzX3NpZ25hbF9mcmFtZS5jCi1AQCAtMCwwICsxLDUgQEAKLSsjZGVmaW5lIFVOV19MT0NBTF9PTkxZCi0rI2luY2x1ZGUgPGxpYnVud2luZC5oPgotKyNpZiBkZWZpbmVkKFVOV19MT0NBTF9PTkxZKSAmJiAhZGVmaW5lZChVTldfUkVNT1RFX09OTFkpCi0rI2luY2x1ZGUgIkdpc19zaWduYWxfZnJhbWUuYyIKLSsjZW5kaWYKLS0tLSAvZGV2L251bGwKLSsrKyBiL3NyYy9hYXJjaDY0L0xyZWdzLmMKLUBAIC0wLDAgKzEsNSBAQAotKyNkZWZpbmUgVU5XX0xPQ0FMX09OTFkKLSsjaW5jbHVkZSA8bGlidW53aW5kLmg+Ci0rI2lmIGRlZmluZWQoVU5XX0xPQ0FMX09OTFkpICYmICFkZWZpbmVkKFVOV19SRU1PVEVfT05MWSkKLSsjaW5jbHVkZSAiR3JlZ3MuYyIKLSsjZW5kaWYKLS0tLSAvZGV2L251bGwKLSsrKyBiL3NyYy9hYXJjaDY0L0xyZXN1bWUuYwotQEAgLTAsMCArMSw1IEBACi0rI2RlZmluZSBVTldfTE9DQUxfT05MWQotKyNpbmNsdWRlIDxsaWJ1bndpbmQuaD4KLSsjaWYgZGVmaW5lZChVTldfTE9DQUxfT05MWSkgJiYgIWRlZmluZWQoVU5XX1JFTU9URV9PTkxZKQotKyNpbmNsdWRlICJHcmVzdW1lLmMiCi0rI2VuZGlmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zcmMvYWFyY2g2NC9Mc3RlcC5jCi1AQCAtMCwwICsxLDUgQEAKLSsjZGVmaW5lIFVOV19MT0NBTF9PTkxZCi0rI2luY2x1ZGUgPGxpYnVud2luZC5oPgotKyNpZiBkZWZpbmVkKFVOV19MT0NBTF9PTkxZKSAmJiAhZGVmaW5lZChVTldfUkVNT1RFX09OTFkpCi0rI2luY2x1ZGUgIkdzdGVwLmMiCi0rI2VuZGlmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zcmMvYWFyY2g2NC9nZW4tb2Zmc2V0cy5jCi1AQCAtMCwwICsxLDY4IEBACi0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPHN0ZGRlZi5oPgotKyNpbmNsdWRlIDx1Y29udGV4dC5oPgotKyNpbmNsdWRlIDxhc20vc2lnY29udGV4dC5oPgotKwotKyNkZWZpbmUgVUMoTixYKSBcCi0rICBwcmludGYgKCIjZGVmaW5lIExJTlVYX1VDXyIgTiAiX09GRlx0MHglWFxuIiwgb2Zmc2V0b2YgKHVjb250ZXh0X3QsIFgpKQotKwotKyNkZWZpbmUgU0MoTixYKSBcCi0rICBwcmludGYgKCIjZGVmaW5lIExJTlVYX1NDXyIgTiAiX09GRlx0MHglWFxuIiwgb2Zmc2V0b2YgKHN0cnVjdCBzaWdjb250ZXh0LCBYKSkKLSsKLStpbnQKLSttYWluICh2b2lkKQotK3sKLSsgIHByaW50ZiAoCi0rIi8qIExpbnV4LXNwZWNpZmljIGRlZmluaXRpb25zOiAqL1xuXG4iCi0rCi0rIi8qIERlZmluZSB2YXJpb3VzIHN0cnVjdHVyZSBvZmZzZXRzIHRvIHNpbXBsaWZ5IGNyb3NzLWNvbXBpbGF0aW9uLiAgKi9cblxuIgotKwotKyIvKiBPZmZzZXRzIGZvciBBQXJjaDY0IExpbnV4IFwidWNvbnRleHRfdFwiOiAgKi9cblxuIik7Ci0rCi0rICBVQyAoIkZMQUdTIiwgdWNfZmxhZ3MpOwotKyAgVUMgKCJMSU5LIiwgdWNfbGluayk7Ci0rICBVQyAoIlNUQUNLIiwgdWNfc3RhY2spOwotKyAgVUMgKCJNQ09OVEVYVCIsIHVjX21jb250ZXh0KTsKLSsgIFVDICgiU0lHTUFTSyIsIHVjX3NpZ21hc2spOwotKwotKyAgcHJpbnRmICgiXG4vKiBPZmZzZXRzIGZvciBBQXJjaDY0IExpbnV4IFwic3RydWN0IHNpZ2NvbnRleHRcIjogICovXG5cbiIpOwotKwotKyAgU0MgKCJSMCIsICByZWdzWzBdKTsKLSsgIFNDICgiUjEiLCAgcmVnc1sxXSk7Ci0rICBTQyAoIlIyIiwgIHJlZ3NbMl0pOwotKyAgU0MgKCJSMyIsICByZWdzWzNdKTsKLSsgIFNDICgiUjQiLCAgcmVnc1s0XSk7Ci0rICBTQyAoIlI1IiwgIHJlZ3NbNV0pOwotKyAgU0MgKCJSNiIsICByZWdzWzZdKTsKLSsgIFNDICgiUjciLCAgcmVnc1s3XSk7Ci0rICBTQyAoIlI4IiwgIHJlZ3NbOF0pOwotKyAgU0MgKCJSOSIsICByZWdzWzldKTsKLSsgIFNDICgiUjEwIiwgcmVnc1sxMF0pOwotKyAgU0MgKCJSMTEiLCByZWdzWzExXSk7Ci0rICBTQyAoIlIxMiIsIHJlZ3NbMTJdKTsKLSsgIFNDICgiUjEzIiwgcmVnc1sxM10pOwotKyAgU0MgKCJSMTQiLCByZWdzWzE0XSk7Ci0rICBTQyAoIlIxNSIsIHJlZ3NbMTVdKTsKLSsgIFNDICgiUjE2IiwgcmVnc1sxNl0pOwotKyAgU0MgKCJSMTciLCByZWdzWzE3XSk7Ci0rICBTQyAoIlIxOCIsIHJlZ3NbMThdKTsKLSsgIFNDICgiUjE5IiwgcmVnc1sxOV0pOwotKyAgU0MgKCJSMjAiLCByZWdzWzIwXSk7Ci0rICBTQyAoIlIyMSIsIHJlZ3NbMjFdKTsKLSsgIFNDICgiUjIyIiwgcmVnc1syMl0pOwotKyAgU0MgKCJSMjMiLCByZWdzWzIzXSk7Ci0rICBTQyAoIlIyNCIsIHJlZ3NbMjRdKTsKLSsgIFNDICgiUjI1IiwgcmVnc1syNV0pOwotKyAgU0MgKCJSMjYiLCByZWdzWzI2XSk7Ci0rICBTQyAoIlIyNyIsIHJlZ3NbMjddKTsKLSsgIFNDICgiUjI4IiwgcmVnc1syOF0pOwotKyAgU0MgKCJSMjkiLCByZWdzWzI5XSk7Ci0rICBTQyAoIlIzMCIsIHJlZ3NbMzBdKTsKLSsgIFNDICgiUjMxIiwgcmVnc1szMV0pOwotKwotKyAgU0MgKCJQQyIsIHBjKTsKLSsgIFNDICgiU1AiLCBzcCk7Ci0rICBTQyAoIkZhdWx0IiwgZmF1bHRfYWRkcmVzcyk7Ci0rICBTQyAoInN0YXRlIiwgcHN0YXRlKTsKLSsgIHJldHVybiAwOwotK30KLS0tLSAvZGV2L251bGwKLSsrKyBiL3NyYy9hYXJjaDY0L2luaXQuaAotQEAgLTAsMCArMSwxMjcgQEAKLSsvKiBsaWJ1bndpbmQgLSBhIHBsYXRmb3JtLWluZGVwZW5kZW50IHVud2luZCBsaWJyYXJ5Ci0rICAgQ29weXJpZ2h0IChDKSAyMDEyIFRvbW1pIFJhbnRhbGEgPHR0LnJhbnRhbGFAZ21haWwuY29tPgotKyAgIENvcHlyaWdodCAoQykgMjAxMyBMaW5hcm8gTGltaXRlZAotKwotK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIGxpYnVud2luZC4KLSsKLStQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKLSthIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKLSsiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi0rd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAotK2Rpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwotK3Blcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwotK3RoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSsKLStUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQotK2luY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotKwotK1RIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAotK0VYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgotK01FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECi0rTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRQotK0xJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04KLStPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04KLStXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICovCi0rCi0rI2luY2x1ZGUgInVud2luZF9pLmgiCi0rCi0rc3RhdGljIGlubGluZSBpbnQKLStjb21tb25faW5pdCAoc3RydWN0IGN1cnNvciAqYywgdW5zaWduZWQgdXNlX3ByZXZfaW5zdHIpCi0rewotKyAgaW50IHJldCwgaTsKLSsKLSsgIGMtPmR3YXJmLmxvY1tVTldfQUFSQ0g2NF9YMF0gID0gRFdBUkZfUkVHX0xPQyAoJmMtPmR3YXJmLCBVTldfQUFSQ0g2NF9YMCk7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfWDFdICA9IERXQVJGX1JFR19MT0MgKCZjLT5kd2FyZiwgVU5XX0FBUkNINjRfWDEpOwotKyAgYy0+ZHdhcmYubG9jW1VOV19BQVJDSDY0X1gyXSAgPSBEV0FSRl9SRUdfTE9DICgmYy0+ZHdhcmYsIFVOV19BQVJDSDY0X1gyKTsKLSsgIGMtPmR3YXJmLmxvY1tVTldfQUFSQ0g2NF9YM10gID0gRFdBUkZfUkVHX0xPQyAoJmMtPmR3YXJmLCBVTldfQUFSQ0g2NF9YMyk7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfWDRdICA9IERXQVJGX1JFR19MT0MgKCZjLT5kd2FyZiwgVU5XX0FBUkNINjRfWDQpOwotKyAgYy0+ZHdhcmYubG9jW1VOV19BQVJDSDY0X1g1XSAgPSBEV0FSRl9SRUdfTE9DICgmYy0+ZHdhcmYsIFVOV19BQVJDSDY0X1g1KTsKLSsgIGMtPmR3YXJmLmxvY1tVTldfQUFSQ0g2NF9YNl0gID0gRFdBUkZfUkVHX0xPQyAoJmMtPmR3YXJmLCBVTldfQUFSQ0g2NF9YNik7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfWDddICA9IERXQVJGX1JFR19MT0MgKCZjLT5kd2FyZiwgVU5XX0FBUkNINjRfWDcpOwotKyAgYy0+ZHdhcmYubG9jW1VOV19BQVJDSDY0X1g4XSAgPSBEV0FSRl9SRUdfTE9DICgmYy0+ZHdhcmYsIFVOV19BQVJDSDY0X1g4KTsKLSsgIGMtPmR3YXJmLmxvY1tVTldfQUFSQ0g2NF9YOV0gID0gRFdBUkZfUkVHX0xPQyAoJmMtPmR3YXJmLCBVTldfQUFSQ0g2NF9YOSk7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfWDEwXSA9IERXQVJGX1JFR19MT0MgKCZjLT5kd2FyZiwgVU5XX0FBUkNINjRfWDEwKTsKLSsgIGMtPmR3YXJmLmxvY1tVTldfQUFSQ0g2NF9YMTFdID0gRFdBUkZfUkVHX0xPQyAoJmMtPmR3YXJmLCBVTldfQUFSQ0g2NF9YMTEpOwotKyAgYy0+ZHdhcmYubG9jW1VOV19BQVJDSDY0X1gxMl0gPSBEV0FSRl9SRUdfTE9DICgmYy0+ZHdhcmYsIFVOV19BQVJDSDY0X1gxMik7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfWDEzXSA9IERXQVJGX1JFR19MT0MgKCZjLT5kd2FyZiwgVU5XX0FBUkNINjRfWDEzKTsKLSsgIGMtPmR3YXJmLmxvY1tVTldfQUFSQ0g2NF9YMTRdID0gRFdBUkZfUkVHX0xPQyAoJmMtPmR3YXJmLCBVTldfQUFSQ0g2NF9YMTQpOwotKyAgYy0+ZHdhcmYubG9jW1VOV19BQVJDSDY0X1gxNV0gPSBEV0FSRl9SRUdfTE9DICgmYy0+ZHdhcmYsIFVOV19BQVJDSDY0X1gxNSk7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfWDE2XSA9IERXQVJGX1JFR19MT0MgKCZjLT5kd2FyZiwgVU5XX0FBUkNINjRfWDE2KTsKLSsgIGMtPmR3YXJmLmxvY1tVTldfQUFSQ0g2NF9YMTddID0gRFdBUkZfUkVHX0xPQyAoJmMtPmR3YXJmLCBVTldfQUFSQ0g2NF9YMTcpOwotKyAgYy0+ZHdhcmYubG9jW1VOV19BQVJDSDY0X1gxOF0gPSBEV0FSRl9SRUdfTE9DICgmYy0+ZHdhcmYsIFVOV19BQVJDSDY0X1gxOCk7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfWDE5XSA9IERXQVJGX1JFR19MT0MgKCZjLT5kd2FyZiwgVU5XX0FBUkNINjRfWDE5KTsKLSsgIGMtPmR3YXJmLmxvY1tVTldfQUFSQ0g2NF9YMjBdID0gRFdBUkZfUkVHX0xPQyAoJmMtPmR3YXJmLCBVTldfQUFSQ0g2NF9YMjApOwotKyAgYy0+ZHdhcmYubG9jW1VOV19BQVJDSDY0X1gyMV0gPSBEV0FSRl9SRUdfTE9DICgmYy0+ZHdhcmYsIFVOV19BQVJDSDY0X1gyMSk7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfWDIyXSA9IERXQVJGX1JFR19MT0MgKCZjLT5kd2FyZiwgVU5XX0FBUkNINjRfWDIyKTsKLSsgIGMtPmR3YXJmLmxvY1tVTldfQUFSQ0g2NF9YMjNdID0gRFdBUkZfUkVHX0xPQyAoJmMtPmR3YXJmLCBVTldfQUFSQ0g2NF9YMjMpOwotKyAgYy0+ZHdhcmYubG9jW1VOV19BQVJDSDY0X1gyNF0gPSBEV0FSRl9SRUdfTE9DICgmYy0+ZHdhcmYsIFVOV19BQVJDSDY0X1gyNCk7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfWDI1XSA9IERXQVJGX1JFR19MT0MgKCZjLT5kd2FyZiwgVU5XX0FBUkNINjRfWDI1KTsKLSsgIGMtPmR3YXJmLmxvY1tVTldfQUFSQ0g2NF9YMjZdID0gRFdBUkZfUkVHX0xPQyAoJmMtPmR3YXJmLCBVTldfQUFSQ0g2NF9YMjYpOwotKyAgYy0+ZHdhcmYubG9jW1VOV19BQVJDSDY0X1gyN10gPSBEV0FSRl9SRUdfTE9DICgmYy0+ZHdhcmYsIFVOV19BQVJDSDY0X1gyNyk7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfWDI4XSA9IERXQVJGX1JFR19MT0MgKCZjLT5kd2FyZiwgVU5XX0FBUkNINjRfWDI4KTsKLSsgIGMtPmR3YXJmLmxvY1tVTldfQUFSQ0g2NF9YMjldID0gRFdBUkZfUkVHX0xPQyAoJmMtPmR3YXJmLCBVTldfQUFSQ0g2NF9YMjkpOwotKyAgYy0+ZHdhcmYubG9jW1VOV19BQVJDSDY0X1gzMF0gPSBEV0FSRl9SRUdfTE9DICgmYy0+ZHdhcmYsIFVOV19BQVJDSDY0X1gzMCk7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfU1BdICA9IERXQVJGX1JFR19MT0MgKCZjLT5kd2FyZiwgVU5XX0FBUkNINjRfU1ApOwotKyAgYy0+ZHdhcmYubG9jW1VOV19BQVJDSDY0X1BDXSAgPSBEV0FSRl9SRUdfTE9DICgmYy0+ZHdhcmYsIFVOV19BQVJDSDY0X1BDKTsKLSsgIGMtPmR3YXJmLmxvY1tVTldfQUFSQ0g2NF9QU1RBVEVdID0gRFdBUkZfUkVHX0xPQyAoJmMtPmR3YXJmLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVTldfQUFSQ0g2NF9QU1RBVEUpOwotKyAgYy0+ZHdhcmYubG9jW1VOV19BQVJDSDY0X1YwXSAgPSBEV0FSRl9SRUdfTE9DICgmYy0+ZHdhcmYsIFVOV19BQVJDSDY0X1YwKTsKLSsgIGMtPmR3YXJmLmxvY1tVTldfQUFSQ0g2NF9WMV0gID0gRFdBUkZfUkVHX0xPQyAoJmMtPmR3YXJmLCBVTldfQUFSQ0g2NF9WMSk7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfVjJdICA9IERXQVJGX1JFR19MT0MgKCZjLT5kd2FyZiwgVU5XX0FBUkNINjRfVjIpOwotKyAgYy0+ZHdhcmYubG9jW1VOV19BQVJDSDY0X1YzXSAgPSBEV0FSRl9SRUdfTE9DICgmYy0+ZHdhcmYsIFVOV19BQVJDSDY0X1YzKTsKLSsgIGMtPmR3YXJmLmxvY1tVTldfQUFSQ0g2NF9WNF0gID0gRFdBUkZfUkVHX0xPQyAoJmMtPmR3YXJmLCBVTldfQUFSQ0g2NF9WNCk7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfVjVdICA9IERXQVJGX1JFR19MT0MgKCZjLT5kd2FyZiwgVU5XX0FBUkNINjRfVjUpOwotKyAgYy0+ZHdhcmYubG9jW1VOV19BQVJDSDY0X1Y2XSAgPSBEV0FSRl9SRUdfTE9DICgmYy0+ZHdhcmYsIFVOV19BQVJDSDY0X1Y2KTsKLSsgIGMtPmR3YXJmLmxvY1tVTldfQUFSQ0g2NF9WN10gID0gRFdBUkZfUkVHX0xPQyAoJmMtPmR3YXJmLCBVTldfQUFSQ0g2NF9WNyk7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfVjhdICA9IERXQVJGX1JFR19MT0MgKCZjLT5kd2FyZiwgVU5XX0FBUkNINjRfVjgpOwotKyAgYy0+ZHdhcmYubG9jW1VOV19BQVJDSDY0X1Y5XSAgPSBEV0FSRl9SRUdfTE9DICgmYy0+ZHdhcmYsIFVOV19BQVJDSDY0X1Y5KTsKLSsgIGMtPmR3YXJmLmxvY1tVTldfQUFSQ0g2NF9WMTBdID0gRFdBUkZfUkVHX0xPQyAoJmMtPmR3YXJmLCBVTldfQUFSQ0g2NF9WMTApOwotKyAgYy0+ZHdhcmYubG9jW1VOV19BQVJDSDY0X1YxMV0gPSBEV0FSRl9SRUdfTE9DICgmYy0+ZHdhcmYsIFVOV19BQVJDSDY0X1YxMSk7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfVjEyXSA9IERXQVJGX1JFR19MT0MgKCZjLT5kd2FyZiwgVU5XX0FBUkNINjRfVjEyKTsKLSsgIGMtPmR3YXJmLmxvY1tVTldfQUFSQ0g2NF9WMTNdID0gRFdBUkZfUkVHX0xPQyAoJmMtPmR3YXJmLCBVTldfQUFSQ0g2NF9WMTMpOwotKyAgYy0+ZHdhcmYubG9jW1VOV19BQVJDSDY0X1YxNF0gPSBEV0FSRl9SRUdfTE9DICgmYy0+ZHdhcmYsIFVOV19BQVJDSDY0X1YxNCk7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfVjE1XSA9IERXQVJGX1JFR19MT0MgKCZjLT5kd2FyZiwgVU5XX0FBUkNINjRfVjE1KTsKLSsgIGMtPmR3YXJmLmxvY1tVTldfQUFSQ0g2NF9WMTZdID0gRFdBUkZfUkVHX0xPQyAoJmMtPmR3YXJmLCBVTldfQUFSQ0g2NF9WMTYpOwotKyAgYy0+ZHdhcmYubG9jW1VOV19BQVJDSDY0X1YxN10gPSBEV0FSRl9SRUdfTE9DICgmYy0+ZHdhcmYsIFVOV19BQVJDSDY0X1YxNyk7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfVjE4XSA9IERXQVJGX1JFR19MT0MgKCZjLT5kd2FyZiwgVU5XX0FBUkNINjRfVjE4KTsKLSsgIGMtPmR3YXJmLmxvY1tVTldfQUFSQ0g2NF9WMTldID0gRFdBUkZfUkVHX0xPQyAoJmMtPmR3YXJmLCBVTldfQUFSQ0g2NF9WMTkpOwotKyAgYy0+ZHdhcmYubG9jW1VOV19BQVJDSDY0X1YyMF0gPSBEV0FSRl9SRUdfTE9DICgmYy0+ZHdhcmYsIFVOV19BQVJDSDY0X1YyMCk7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfVjIxXSA9IERXQVJGX1JFR19MT0MgKCZjLT5kd2FyZiwgVU5XX0FBUkNINjRfVjIxKTsKLSsgIGMtPmR3YXJmLmxvY1tVTldfQUFSQ0g2NF9WMjJdID0gRFdBUkZfUkVHX0xPQyAoJmMtPmR3YXJmLCBVTldfQUFSQ0g2NF9WMjIpOwotKyAgYy0+ZHdhcmYubG9jW1VOV19BQVJDSDY0X1YyM10gPSBEV0FSRl9SRUdfTE9DICgmYy0+ZHdhcmYsIFVOV19BQVJDSDY0X1YyMyk7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfVjI0XSA9IERXQVJGX1JFR19MT0MgKCZjLT5kd2FyZiwgVU5XX0FBUkNINjRfVjI0KTsKLSsgIGMtPmR3YXJmLmxvY1tVTldfQUFSQ0g2NF9WMjVdID0gRFdBUkZfUkVHX0xPQyAoJmMtPmR3YXJmLCBVTldfQUFSQ0g2NF9WMjUpOwotKyAgYy0+ZHdhcmYubG9jW1VOV19BQVJDSDY0X1YyNl0gPSBEV0FSRl9SRUdfTE9DICgmYy0+ZHdhcmYsIFVOV19BQVJDSDY0X1YyNik7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfVjI3XSA9IERXQVJGX1JFR19MT0MgKCZjLT5kd2FyZiwgVU5XX0FBUkNINjRfVjI3KTsKLSsgIGMtPmR3YXJmLmxvY1tVTldfQUFSQ0g2NF9WMjhdID0gRFdBUkZfUkVHX0xPQyAoJmMtPmR3YXJmLCBVTldfQUFSQ0g2NF9WMjgpOwotKyAgYy0+ZHdhcmYubG9jW1VOV19BQVJDSDY0X1YyOV0gPSBEV0FSRl9SRUdfTE9DICgmYy0+ZHdhcmYsIFVOV19BQVJDSDY0X1YyOSk7Ci0rICBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfVjMwXSA9IERXQVJGX1JFR19MT0MgKCZjLT5kd2FyZiwgVU5XX0FBUkNINjRfVjMwKTsKLSsgIGMtPmR3YXJmLmxvY1tVTldfQUFSQ0g2NF9WMzFdID0gRFdBUkZfUkVHX0xPQyAoJmMtPmR3YXJmLCBVTldfQUFSQ0g2NF9WMzEpOwotKwotKyAgZm9yIChpID0gVU5XX0FBUkNINjRfUFNUQVRFICsgMTsgaSA8IFVOV19BQVJDSDY0X1YwOyArK2kpCi0rICAgIGMtPmR3YXJmLmxvY1tpXSA9IERXQVJGX05VTExfTE9DOwotKwotKyAgcmV0ID0gZHdhcmZfZ2V0ICgmYy0+ZHdhcmYsIGMtPmR3YXJmLmxvY1tVTldfQUFSQ0g2NF9QQ10sICZjLT5kd2FyZi5pcCk7Ci0rICBpZiAocmV0IDwgMCkKLSsgICAgcmV0dXJuIHJldDsKLSsKLSsgIHJldCA9IGR3YXJmX2dldCAoJmMtPmR3YXJmLCBjLT5kd2FyZi5sb2NbVU5XX0FBUkNINjRfU1BdLCAmYy0+ZHdhcmYuY2ZhKTsKLSsgIGlmIChyZXQgPCAwKQotKyAgICByZXR1cm4gcmV0OwotKwotKyAgYy0+c2lnY29udGV4dF9mb3JtYXQgPSBBQVJDSDY0X1NDRl9OT05FOwotKyAgYy0+c2lnY29udGV4dF9hZGRyID0gMDsKLSsgIGMtPnNpZ2NvbnRleHRfc3AgPSAwOwotKyAgYy0+c2lnY29udGV4dF9wYyA9IDA7Ci0rCi0rICBjLT5kd2FyZi5hcmdzX3NpemUgPSAwOwotKyAgYy0+ZHdhcmYucmV0X2FkZHJfY29sdW1uID0gMDsKLSsgIGMtPmR3YXJmLnN0YXNoX2ZyYW1lcyA9IDA7Ci0rICBjLT5kd2FyZi51c2VfcHJldl9pbnN0ciA9IHVzZV9wcmV2X2luc3RyOwotKyAgYy0+ZHdhcmYucGlfdmFsaWQgPSAwOwotKyAgYy0+ZHdhcmYucGlfaXNfZHluYW1pYyA9IDA7Ci0rICBjLT5kd2FyZi5oaW50ID0gMDsKLSsgIGMtPmR3YXJmLnByZXZfcnMgPSAwOwotKwotKyAgcmV0dXJuIDA7Ci0rfQotLS0tIC9kZXYvbnVsbAotKysrIGIvc3JjL2FhcmNoNjQvaXNfZnByZWcuYwotQEAgLTAsMCArMSwzMiBAQAotKy8qIGxpYnVud2luZCAtIGEgcGxhdGZvcm0taW5kZXBlbmRlbnQgdW53aW5kIGxpYnJhcnkKLSsgICBDb3B5cmlnaHQgKEMpIDIwMDggQ29kZVNvdXJjZXJ5Ci0rICAgQ29weXJpZ2h0IChDKSAyMDEzIExpbmFybyBMaW1pdGVkCi0rCi0rVGhpcyBmaWxlIGlzIHBhcnQgb2YgbGlidW53aW5kLgotKwotK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwotK2EgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQotKyJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKLSt3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCi0rZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCi0rcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCi0rdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotKwotK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCi0raW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0rCi0rVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCi0rRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi0rTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKLStOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFCi0rTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTgotK09GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgotK1dJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgKi8KLSsKLSsjaW5jbHVkZSAibGlidW53aW5kX2kuaCIKLSsKLStQUk9URUNURUQgaW50Ci0rdW53X2lzX2ZwcmVnIChpbnQgcmVnbnVtKQotK3sKLSsgIHJldHVybiAocmVnbnVtID49IFVOV19BQVJDSDY0X1YwICYmIHJlZ251bSA8PSBVTldfQUFSQ0g2NF9WMzEpOwotK30KLS0tLSAvZGV2L251bGwKLSsrKyBiL3NyYy9hYXJjaDY0L29mZnNldHMuaAotQEAgLTAsMCArMSw0OSBAQAotKy8qIExpbnV4LXNwZWNpZmljIGRlZmluaXRpb25zOiAqLwotKwotKy8qIERlZmluZSB2YXJpb3VzIHN0cnVjdHVyZSBvZmZzZXRzIHRvIHNpbXBsaWZ5IGNyb3NzLWNvbXBpbGF0aW9uLiAgKi8KLSsKLSsvKiBPZmZzZXRzIGZvciBBQXJjaDY0IExpbnV4ICJ1Y29udGV4dF90IjogICovCi0rCi0rI2RlZmluZSBMSU5VWF9VQ19GTEFHU19PRkYJMHgwCi0rI2RlZmluZSBMSU5VWF9VQ19MSU5LX09GRgkweDgKLSsjZGVmaW5lIExJTlVYX1VDX1NUQUNLX09GRgkweDEwCi0rI2RlZmluZSBMSU5VWF9VQ19TSUdNQVNLX09GRgkweDI4Ci0rI2RlZmluZSBMSU5VWF9VQ19NQ09OVEVYVF9PRkYJMHhiMAotKwotKy8qIE9mZnNldHMgZm9yIEFBcmNoNjQgTGludXggInN0cnVjdCBzaWdjb250ZXh0IjogICovCi0rCi0rI2RlZmluZSBMSU5VWF9TQ19GQVVMVEFERFJFU1NfT0ZGCTB4MDAKLSsjZGVmaW5lIExJTlVYX1NDX1gwX09GRgkJMHgwMDgKLSsjZGVmaW5lIExJTlVYX1NDX1gxX09GRgkJMHgwMTAKLSsjZGVmaW5lIExJTlVYX1NDX1gyX09GRgkJMHgwMTgKLSsjZGVmaW5lIExJTlVYX1NDX1gzX09GRgkJMHgwMjAKLSsjZGVmaW5lIExJTlVYX1NDX1g0X09GRgkJMHgwMjgKLSsjZGVmaW5lIExJTlVYX1NDX1g1X09GRgkJMHgwMzAKLSsjZGVmaW5lIExJTlVYX1NDX1g2X09GRgkJMHgwMzgKLSsjZGVmaW5lIExJTlVYX1NDX1g3X09GRgkJMHgwNDAKLSsjZGVmaW5lIExJTlVYX1NDX1g4X09GRgkJMHgwNDgKLSsjZGVmaW5lIExJTlVYX1NDX1g5X09GRgkJMHgwNTAKLSsjZGVmaW5lIExJTlVYX1NDX1gxMF9PRkYJMHgwNTgKLSsjZGVmaW5lIExJTlVYX1NDX1gxMV9PRkYJMHgwNjAKLSsjZGVmaW5lIExJTlVYX1NDX1gxMl9PRkYJMHgwNjgKLSsjZGVmaW5lIExJTlVYX1NDX1gxM19PRkYJMHgwNzAKLSsjZGVmaW5lIExJTlVYX1NDX1gxNF9PRkYJMHgwNzgKLSsjZGVmaW5lIExJTlVYX1NDX1gxNV9PRkYJMHgwODAKLSsjZGVmaW5lIExJTlVYX1NDX1gxNl9PRkYJMHgwODgKLSsjZGVmaW5lIExJTlVYX1NDX1gxN19PRkYJMHgwOTAKLSsjZGVmaW5lIExJTlVYX1NDX1gxOF9PRkYJMHgwOTgKLSsjZGVmaW5lIExJTlVYX1NDX1gxOV9PRkYJMHgwYTAKLSsjZGVmaW5lIExJTlVYX1NDX1gyMF9PRkYJMHgwYTgKLSsjZGVmaW5lIExJTlVYX1NDX1gyMV9PRkYJMHgwYjAKLSsjZGVmaW5lIExJTlVYX1NDX1gyMl9PRkYJMHgwYjgKLSsjZGVmaW5lIExJTlVYX1NDX1gyM19PRkYJMHgwYzAKLSsjZGVmaW5lIExJTlVYX1NDX1gyNF9PRkYJMHgwYzgKLSsjZGVmaW5lIExJTlVYX1NDX1gyNV9PRkYJMHgwZDAKLSsjZGVmaW5lIExJTlVYX1NDX1gyNl9PRkYJMHgwZDgKLSsjZGVmaW5lIExJTlVYX1NDX1gyN19PRkYJMHgwZTAKLSsjZGVmaW5lIExJTlVYX1NDX1gyOF9PRkYJMHgwZTgKLSsjZGVmaW5lIExJTlVYX1NDX1gyOV9PRkYJMHgwZjAKLSsjZGVmaW5lIExJTlVYX1NDX1gzMF9PRkYJMHgwZjgKLSsjZGVmaW5lIExJTlVYX1NDX1NQX09GRgkJMHgxMDAKLSsjZGVmaW5lIExJTlVYX1NDX1BDX09GRgkJMHgxMDgKLSsjZGVmaW5lIExJTlVYX1NDX1BTVEFURV9PRkYJMHgxMTAKLS0tLSAvZGV2L251bGwKLSsrKyBiL3NyYy9hYXJjaDY0L3JlZ25hbWUuYwotQEAgLTAsMCArMSwxMDYgQEAKLSsvKiBsaWJ1bndpbmQgLSBhIHBsYXRmb3JtLWluZGVwZW5kZW50IHVud2luZCBsaWJyYXJ5Ci0rICAgQ29weXJpZ2h0IChDKSAyMDEyIFRvbW1pIFJhbnRhbGEgPHR0LnJhbnRhbGFAZ21haWwuY29tPgotKyAgIENvcHlyaWdodCAoQykgMjAxMyBMaW5hcm8gTGltaXRlZAotKwotK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIGxpYnVud2luZC4KLSsKLStQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKLSthIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKLSsiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi0rd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAotK2Rpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwotK3Blcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwotK3RoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSsKLStUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQotK2luY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotKwotK1RIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAotK0VYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgotK01FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECi0rTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRQotK0xJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04KLStPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04KLStXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICovCi0rCi0rI2luY2x1ZGUgInVud2luZF9pLmgiCi0rCi0rc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHJlZ25hbWVbXSA9Ci0rICB7Ci0rICAgIFtVTldfQUFSQ0g2NF9YMF0gPSAieDAiLAotKyAgICBbVU5XX0FBUkNINjRfWDFdID0gIngxIiwKLSsgICAgW1VOV19BQVJDSDY0X1gyXSA9ICJ4MiIsCi0rICAgIFtVTldfQUFSQ0g2NF9YM10gPSAieDMiLAotKyAgICBbVU5XX0FBUkNINjRfWDRdID0gIng0IiwKLSsgICAgW1VOV19BQVJDSDY0X1g1XSA9ICJ4NSIsCi0rICAgIFtVTldfQUFSQ0g2NF9YNl0gPSAieDYiLAotKyAgICBbVU5XX0FBUkNINjRfWDddID0gIng3IiwKLSsgICAgW1VOV19BQVJDSDY0X1g4XSA9ICJ4OCIsCi0rICAgIFtVTldfQUFSQ0g2NF9YOV0gPSAieDkiLAotKyAgICBbVU5XX0FBUkNINjRfWDEwXSA9ICJ4MTAiLAotKyAgICBbVU5XX0FBUkNINjRfWDExXSA9ICJ4MTEiLAotKyAgICBbVU5XX0FBUkNINjRfWDEyXSA9ICJ4MTIiLAotKyAgICBbVU5XX0FBUkNINjRfWDEzXSA9ICJ4MTMiLAotKyAgICBbVU5XX0FBUkNINjRfWDE0XSA9ICJ4MTQiLAotKyAgICBbVU5XX0FBUkNINjRfWDE1XSA9ICJ4MTUiLAotKyAgICBbVU5XX0FBUkNINjRfWDE2XSA9ICJpcDAiLAotKyAgICBbVU5XX0FBUkNINjRfWDE3XSA9ICJpcDEiLAotKyAgICBbVU5XX0FBUkNINjRfWDE4XSA9ICJ4MTgiLAotKyAgICBbVU5XX0FBUkNINjRfWDE5XSA9ICJ4MTkiLAotKyAgICBbVU5XX0FBUkNINjRfWDIwXSA9ICJ4MjAiLAotKyAgICBbVU5XX0FBUkNINjRfWDIxXSA9ICJ4MjEiLAotKyAgICBbVU5XX0FBUkNINjRfWDIyXSA9ICJ4MjIiLAotKyAgICBbVU5XX0FBUkNINjRfWDIzXSA9ICJ4MjMiLAotKyAgICBbVU5XX0FBUkNINjRfWDI0XSA9ICJ4MjQiLAotKyAgICBbVU5XX0FBUkNINjRfWDI1XSA9ICJ4MjUiLAotKyAgICBbVU5XX0FBUkNINjRfWDI2XSA9ICJ4MjYiLAotKyAgICBbVU5XX0FBUkNINjRfWDI3XSA9ICJ4MjciLAotKyAgICBbVU5XX0FBUkNINjRfWDI4XSA9ICJ4MjgiLAotKyAgICBbVU5XX0FBUkNINjRfWDI5XSA9ICJmcCIsCi0rICAgIFtVTldfQUFSQ0g2NF9YMzBdID0gImxyIiwKLSsgICAgW1VOV19BQVJDSDY0X1NQXSA9ICJzcCIsCi0rICAgIFtVTldfQUFSQ0g2NF9QQ10gPSAicGMiLAotKyAgICBbVU5XX0FBUkNINjRfVjBdID0gInYwIiwKLSsgICAgW1VOV19BQVJDSDY0X1YxXSA9ICJ2MSIsCi0rICAgIFtVTldfQUFSQ0g2NF9WMl0gPSAidjIiLAotKyAgICBbVU5XX0FBUkNINjRfVjNdID0gInYzIiwKLSsgICAgW1VOV19BQVJDSDY0X1Y0XSA9ICJ2NCIsCi0rICAgIFtVTldfQUFSQ0g2NF9WNV0gPSAidjUiLAotKyAgICBbVU5XX0FBUkNINjRfVjZdID0gInY2IiwKLSsgICAgW1VOV19BQVJDSDY0X1Y3XSA9ICJ2NyIsCi0rICAgIFtVTldfQUFSQ0g2NF9WOF0gPSAidjgiLAotKyAgICBbVU5XX0FBUkNINjRfVjldID0gInY5IiwKLSsgICAgW1VOV19BQVJDSDY0X1YxMF0gPSAidjEwIiwKLSsgICAgW1VOV19BQVJDSDY0X1YxMV0gPSAidjExIiwKLSsgICAgW1VOV19BQVJDSDY0X1YxMl0gPSAidjEyIiwKLSsgICAgW1VOV19BQVJDSDY0X1YxM10gPSAidjEzIiwKLSsgICAgW1VOV19BQVJDSDY0X1YxNF0gPSAidjE0IiwKLSsgICAgW1VOV19BQVJDSDY0X1YxNV0gPSAidjE1IiwKLSsgICAgW1VOV19BQVJDSDY0X1YxNl0gPSAidjE2IiwKLSsgICAgW1VOV19BQVJDSDY0X1YxN10gPSAidjE3IiwKLSsgICAgW1VOV19BQVJDSDY0X1YxOF0gPSAidjE4IiwKLSsgICAgW1VOV19BQVJDSDY0X1YxOV0gPSAidjE5IiwKLSsgICAgW1VOV19BQVJDSDY0X1YyMF0gPSAidjIwIiwKLSsgICAgW1VOV19BQVJDSDY0X1YyMV0gPSAidjIxIiwKLSsgICAgW1VOV19BQVJDSDY0X1YyMl0gPSAidjIyIiwKLSsgICAgW1VOV19BQVJDSDY0X1YyM10gPSAidjIzIiwKLSsgICAgW1VOV19BQVJDSDY0X1YyNF0gPSAidjI0IiwKLSsgICAgW1VOV19BQVJDSDY0X1YyNV0gPSAidjI1IiwKLSsgICAgW1VOV19BQVJDSDY0X1YyNl0gPSAidjI2IiwKLSsgICAgW1VOV19BQVJDSDY0X1YyN10gPSAidjI3IiwKLSsgICAgW1VOV19BQVJDSDY0X1YyOF0gPSAidjI4IiwKLSsgICAgW1VOV19BQVJDSDY0X1YyOV0gPSAidjI5IiwKLSsgICAgW1VOV19BQVJDSDY0X1YzMF0gPSAidjMwIiwKLSsgICAgW1VOV19BQVJDSDY0X1YzMV0gPSAidjMxIiwKLSsgICAgW1VOV19BQVJDSDY0X0ZQU1JdID0gImZwc3IiLAotKyAgICBbVU5XX0FBUkNINjRfRlBDUl0gPSAiZnBjciIsCi0rICB9OwotKwotK1BST1RFQ1RFRCBjb25zdCBjaGFyICoKLSt1bndfcmVnbmFtZSAodW53X3JlZ251bV90IHJlZykKLSt7Ci0rICBpZiAocmVnIDwgKHVud19yZWdudW1fdCkgQVJSQVlfU0laRSAocmVnbmFtZSkgJiYgcmVnbmFtZVtyZWddICE9IE5VTEwpCi0rICAgIHJldHVybiByZWduYW1lW3JlZ107Ci0rICBlbHNlCi0rICAgIHJldHVybiAiPz8/IjsKLSt9Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9zcmMvYWFyY2g2NC9zaWdsb25nam1wLlMKLUBAIC0wLDAgKzEsMTIgQEAKLSsJLyogRHVtbXkgaW1wbGVtZW50YXRpb24gZm9yIG5vdy4gICovCi0rCi0rCS5nbG9iYWwgX1VJX3NpZ2xvbmdqbXBfY29udAotKwkuZ2xvYmFsIF9VSV9sb25nam1wX2NvbnQKLSsKLStfVUlfc2lnbG9uZ2ptcF9jb250OgotK19VSV9sb25nam1wX2NvbnQ6Ci0rCXJldAotKyNpZmRlZiBfX2xpbnV4X18KLSsgLyogV2UgZG8gbm90IG5lZWQgZXhlY3V0YWJsZSBzdGFjay4gICovCi0rIC5zZWN0aW9uICAubm90ZS5HTlUtc3RhY2ssIiIsJXByb2diaXRzCi0rI2VuZGlmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zcmMvYWFyY2g2NC91bndpbmRfaS5oCi1AQCAtMCwwICsxLDQzIEBACi0rLyogbGlidW53aW5kIC0gYSBwbGF0Zm9ybS1pbmRlcGVuZGVudCB1bndpbmQgbGlicmFyeQotKyAgIENvcHlyaWdodCAoQykgMjAwOCBDb2RlU291cmNlcnkKLSsgICBDb3B5cmlnaHQgKEMpIDIwMTMgTGluYXJvIExpbWl0ZWQKLSsKLStUaGlzIGZpbGUgaXMgcGFydCBvZiBsaWJ1bndpbmQuCi0rCi0rUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCi0rYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCi0rIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwotK3dpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKLStkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KLStwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KLSt0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0rCi0rVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKLStpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLSsKLStUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKLStFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLStNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAotK05PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUKLStMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OCi0rT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OCi0rV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAqLwotKwotKyNpZm5kZWYgdW53aW5kX2lfaAotKyNkZWZpbmUgdW53aW5kX2lfaAotKwotKyNpbmNsdWRlIDxzdGRpbnQuaD4KLSsKLSsjaW5jbHVkZSA8bGlidW53aW5kLWFhcmNoNjQuaD4KLSsKLSsjaW5jbHVkZSAibGlidW53aW5kX2kuaCIKLSsKLSsjZGVmaW5lIGFhcmNoNjRfbG9jawkJCVVOV19PQkoobG9jaykKLSsjZGVmaW5lIGFhcmNoNjRfbG9jYWxfcmVzdW1lCQlVTldfT0JKKGxvY2FsX3Jlc3VtZSkKLSsjZGVmaW5lIGFhcmNoNjRfbG9jYWxfYWRkcl9zcGFjZV9pbml0CVVOV19PQkoobG9jYWxfYWRkcl9zcGFjZV9pbml0KQotKwotK2V4dGVybiB2b2lkIGFhcmNoNjRfbG9jYWxfYWRkcl9zcGFjZV9pbml0ICh2b2lkKTsKLStleHRlcm4gaW50IGFhcmNoNjRfbG9jYWxfcmVzdW1lICh1bndfYWRkcl9zcGFjZV90IGFzLCB1bndfY3Vyc29yX3QgKmN1cnNvciwKLSsJCQkgICAgIHZvaWQgKmFyZyk7Ci0rCi0rI2VuZGlmIC8qIHVud2luZF9pX2ggKi8KLS0tLSBhL3NyYy9jb3JlZHVtcC9fVUNEX2FjY2Vzc19yZWdfbGludXguYwotKysrIGIvc3JjL2NvcmVkdW1wL19VQ0RfYWNjZXNzX3JlZ19saW51eC5jCi1AQCAtMzksNyArMzksMTAgQEAgX1VDRF9hY2Nlc3NfcmVnICh1bndfYWRkcl9zcGFjZV90IGFzLAotICAgICAgIHJldHVybiAtVU5XX0VJTlZBTDsKLSAgICAgfQotIAotLSNpZiBkZWZpbmVkKFVOV19UQVJHRVRfQVJNKQotKyNpZiBkZWZpbmVkKFVOV19UQVJHRVRfQUFSQ0g2NCkKLSsgIGlmIChyZWdudW0gPCAwIHx8IHJlZ251bSA+PSBVTldfQUFSQ0g2NF9GUENSKQotKyAgICBnb3RvIGJhZHJlZzsKLSsjZWxpZiBkZWZpbmVkKFVOV19UQVJHRVRfQVJNKQotICAgaWYgKHJlZ251bSA8IDAgfHwgcmVnbnVtID49IDE2KQotICAgICBnb3RvIGJhZHJlZzsKLSAjZWxpZiBkZWZpbmVkKFVOV19UQVJHRVRfU0gpCi0tLS0gYS9zcmMvcHRyYWNlL19VUFRfcmVnX29mZnNldC5jCi0rKysgYi9zcmMvcHRyYWNlL19VUFRfcmVnX29mZnNldC5jCi1AQCAtMSw2ICsxLDcgQEAKLSAvKiBsaWJ1bndpbmQgLSBhIHBsYXRmb3JtLWluZGVwZW5kZW50IHVud2luZCBsaWJyYXJ5Ci0gICAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMDQgSGV3bGV0dC1QYWNrYXJkIENvCi0gCUNvbnRyaWJ1dGVkIGJ5IERhdmlkIE1vc2Jlcmdlci1UYW5nIDxkYXZpZG1AaHBsLmhwLmNvbT4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTMgTGluYXJvIExpbWl0ZWQKLSAKLSBUaGlzIGZpbGUgaXMgcGFydCBvZiBsaWJ1bndpbmQuCi0gCi1AQCAtNTAxLDYgKzUwMiw0MSBAQCBjb25zdCBpbnQgX1VQVF9yZWdfb2Zmc2V0W1VOV19SRUdfTEFTVCArCi0gICAgIFtVTldfQVJNX1IxNV0gICAgICA9IDB4M2MsCi0gI2VsaWYgZGVmaW5lZChVTldfVEFSR0VUX01JUFMpCi0gI2VsaWYgZGVmaW5lZChVTldfVEFSR0VUX1NIKQotKyNlbGlmIGRlZmluZWQoVU5XX1RBUkdFVF9BQVJDSDY0KQotKyAgICBbVU5XX0FBUkNINjRfWDBdICAgICAgID0gMHgwMCwKLSsgICAgW1VOV19BQVJDSDY0X1gxXSAgICAgICA9IDB4MDgsCi0rICAgIFtVTldfQUFSQ0g2NF9YMl0gICAgICAgPSAweDEwLAotKyAgICBbVU5XX0FBUkNINjRfWDNdICAgICAgID0gMHgxOCwKLSsgICAgW1VOV19BQVJDSDY0X1g0XSAgICAgICA9IDB4MjAsCi0rICAgIFtVTldfQUFSQ0g2NF9YNV0gICAgICAgPSAweDI4LAotKyAgICBbVU5XX0FBUkNINjRfWDZdICAgICAgID0gMHgzMCwKLSsgICAgW1VOV19BQVJDSDY0X1g3XSAgICAgICA9IDB4MzgsCi0rICAgIFtVTldfQUFSQ0g2NF9YOF0gICAgICAgPSAweDQwLAotKyAgICBbVU5XX0FBUkNINjRfWDldICAgICAgID0gMHg0OCwKLSsgICAgW1VOV19BQVJDSDY0X1gxMF0gICAgICA9IDB4NTAsCi0rICAgIFtVTldfQUFSQ0g2NF9YMTFdICAgICAgPSAweDU4LAotKyAgICBbVU5XX0FBUkNINjRfWDEyXSAgICAgID0gMHg2MCwKLSsgICAgW1VOV19BQVJDSDY0X1gxM10gICAgICA9IDB4NjgsCi0rICAgIFtVTldfQUFSQ0g2NF9YMTRdICAgICAgPSAweDcwLAotKyAgICBbVU5XX0FBUkNINjRfWDE1XSAgICAgID0gMHg3OCwKLSsgICAgW1VOV19BQVJDSDY0X1gxNl0gICAgICA9IDB4ODAsCi0rICAgIFtVTldfQUFSQ0g2NF9YMTddICAgICAgPSAweDg4LAotKyAgICBbVU5XX0FBUkNINjRfWDE4XSAgICAgID0gMHg5MCwKLSsgICAgW1VOV19BQVJDSDY0X1gxOV0gICAgICA9IDB4OTgsCi0rICAgIFtVTldfQUFSQ0g2NF9YMjBdICAgICAgPSAweGEwLAotKyAgICBbVU5XX0FBUkNINjRfWDIxXSAgICAgID0gMHhhOCwKLSsgICAgW1VOV19BQVJDSDY0X1gyMl0gICAgICA9IDB4YjAsCi0rICAgIFtVTldfQUFSQ0g2NF9YMjNdICAgICAgPSAweGI4LAotKyAgICBbVU5XX0FBUkNINjRfWDI0XSAgICAgID0gMHhjMCwKLSsgICAgW1VOV19BQVJDSDY0X1gyNV0gICAgICA9IDB4YzgsCi0rICAgIFtVTldfQUFSQ0g2NF9YMjZdICAgICAgPSAweGQwLAotKyAgICBbVU5XX0FBUkNINjRfWDI3XSAgICAgID0gMHhkOCwKLSsgICAgW1VOV19BQVJDSDY0X1gyOF0gICAgICA9IDB4ZTAsCi0rICAgIFtVTldfQUFSQ0g2NF9YMjldICAgICAgPSAweGU4LAotKyAgICBbVU5XX0FBUkNINjRfWDMwXSAgICAgID0gMHhmMCwKLSsgICAgW1VOV19BQVJDSDY0X1NQXSAgICAgICA9IDB4ZjgsCi0rICAgIFtVTldfQUFSQ0g2NF9QQ10gICAgICAgPSAweDEwMCwKLSsgICAgW1VOV19BQVJDSDY0X1BTVEFURV0gICA9IDB4MTA4Ci0gI2Vsc2UKLSAjIGVycm9yIEZpeCBtZS4KLSAjZW5kaWYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kLTEuMS9GaXgtdGVzdC1jYXNlLWxpbmstZmFpbHVyZS1vbi1Qb3dlclBDLXN5c3RlbXMtd2l0aC1BbHRpdmVjLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQtMS4xL0ZpeC10ZXN0LWNhc2UtbGluay1mYWlsdXJlLW9uLVBvd2VyUEMtc3lzdGVtcy13aXRoLUFsdGl2ZWMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjMGY1YzEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQtMS4xL0ZpeC10ZXN0LWNhc2UtbGluay1mYWlsdXJlLW9uLVBvd2VyUEMtc3lzdGVtcy13aXRoLUFsdGl2ZWMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1GaXggdGVzdCBjYXNlIGxpbmsgZmFpbHVyZSBvbiBQb3dlclBDIHN5c3RlbXMgd2l0aCBBbHRpdmVjCi0KLVVwc3RyZWFtLVN0YXR1czpiYWNrcG9ydAotCi1PbiBzeXN0ZW1zIHdoZXJlIHRoZSBzeXN0ZW0gY29tcGlsZXIgc3VwcG9ydHMgQWx0aXZlYyBieSBkZWZhdWx0LAotdGhlIGxpYnVud2luZCBNYWtlZmlsZSB3aWxsIGF0dGVtcHQgdG8gYnVpbGQgYW4gZXh0cmEgdGVzdCBjYXNlCi1wcGM2NC10ZXN0LWFsdGl2ZWMuICBVbmZvcnR1bmF0ZWx5LCB0aGUgbGluayBzdGVwIHdpbGwgZmFpbCBzaW5jZQotdGhlIE1ha2VmaWxlIGRvZXMgbm90IGFjdHVhbGx5IGxpbmsgYWdhaW5zdCB0aGUgbGlidW53aW5kIGxpYnJhcnkuCi0KLUZpeGVkIGJ5IGFkZGluZyB0aGUgYXBwcm9wcmlhdGUgTERBREQgbWFjcm8uCi0KLVNpZ25lZC1vZmYtYnk6IFVscmljaCBXZWlnYW5kIDxhZGRyZXNzQGhpZGRlbj4KLS0tLQotIHRlc3RzL01ha2VmaWxlLmFtIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5hbSBiL3Rlc3RzL01ha2VmaWxlLmFtCi1pbmRleCAwZTMwNTM2Li45Yzc2NjI4IDEwMDY0NAotLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0KLSsrKyBiL3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtMjAxLDMgKzIwMSw0IEBAIExpYTY0X3Rlc3RfcmJzX0xEQUREID0gJChMSUJVTldJTkRfbG9jYWwpCi0gTGlhNjRfdGVzdF9yZWFkb25seV9MREFERCA9ICQoTElCVU5XSU5EX2xvY2FsKQotIGlhNjRfdGVzdF9keW4xX0xEQUREID0gJChMSUJVTldJTkQpCi0gaWE2NF90ZXN0X3NpZ19MREFERCA9ICQoTElCVU5XSU5EKQotK3BwYzY0X3Rlc3RfYWx0aXZlY19MREFERCA9ICQoTElCVU5XSU5EKQotLS0gCi0xLjguNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC0xLjEvTGluay1saWJ1bndpbmQtdG8tbGliZ2NjX3MtcmF0aGVyLXRoYW4tbGliZ2NjLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQtMS4xL0xpbmstbGlidW53aW5kLXRvLWxpYmdjY19zLXJhdGhlci10aGFuLWxpYmdjYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGU1NWM5MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC0xLjEvTGluay1saWJ1bndpbmQtdG8tbGliZ2NjX3MtcmF0aGVyLXRoYW4tbGliZ2NjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSA1MDhjYTE3YTdiZTAxZDFjYzk2MGQ5YTA3ZDBhZjQ1MTM5NDhmYjhkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KLURhdGU6IEZyaSwgMjcgSnVuIDIwMTQgMDg6NDA6MzMgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gTGluayBsaWJ1bndpbmQgdG8gbGliZ2NjX3MgcmF0aGVyIHRoYW4gbGliZ2NjCi0KLUZvciBzb21lIGFyY2hpdGVjdHVyZXMsIC1sZ2NjIGFuZCAtbGdjY19zIGFyZSBub3QgZXF1aXZhbGVudC4gT24gQVJNIGZvcgotZXhhbXBsZSwgbGliZ2NjX3Muc28uMSBjb250YWlucyBzb21lIHN5bWJvbHMgbmVlZGVkIGJ5IGxpYnVud2luZCB3aGljaAotYXJlIG5vdCBwcmVzZW50IGluIGxpYmdjYy4KLQotVGhpcyBjYXVzZXMgdGhlIGZvbGxvd2luZyBsaW5rIGVycm9yIHdoZW4gYnVpbGRpbmcgdGhlIFguT3JnIFggc2VydmVyCi13aXRoIGxpYnVud2luZCBzdXBwb3J0OgotCi0JICBDQ0xEICAgICBYb3JnCi0JL3Vzci9saWIvbGlidW53aW5kLnNvOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX2FlYWJpX3Vud2luZF9jcHBfcHIwJwotCS91c3IvbGliL2xpYnVud2luZC5zbzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX19hZWFiaV91bndpbmRfY3BwX3ByMScKLQotTGlua2luZyBhZ2FpbnN0IGxpYmdjY19zIGV4cGxpY2l0bHkgc29sdmVzIHRoaXMgcHJvYmxlbS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBUaGllcnJ5IFJlZGluZyA8dHJlZGluZ0BudmlkaWEuY29tPgotU2lnbmVkLW9mZi1ieTogSm9uYXRoYW4gTGl1IDxuZXQxNDdAZ21haWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBjZmZlMTliLi4zYmViNWYyIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0yNTgsNyArMjU4LDcgQEAgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbW11dLCBbWyNpZm5kZWYgX19JTlRFTF9DT01QSUxFUgotIAotIGlmIHRlc3QgeCRHQ0MgPSB4eWVzIC1hIHgkaW50ZWxfY29tcGlsZXIgIT0geHllczsgdGhlbgotICAgQ0ZMQUdTPSIke0NGTEFHU30gLWZleGNlcHRpb25zIC1XYWxsIC1Xc2lnbi1jb21wYXJlIgotLSAgTElCQ1JUUz0iLWxnY2MiCi0rICBMSUJDUlRTPSItbGdjY19zIgotIGZpCi0gQUNfTVNHX1JFU1VMVChbJGludGVsX2NvbXBpbGVyXSkKLSAKLS0tIAotMi4zLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQtMS4xL1N1cHBvcnQtYnVpbGRpbmctd2l0aC1vbGRlci1jb21waWxlcnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC0xLjEvU3VwcG9ydC1idWlsZGluZy13aXRoLW9sZGVyLWNvbXBpbGVycy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjY4YjcwMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC0xLjEvU3VwcG9ydC1idWlsZGluZy13aXRoLW9sZGVyLWNvbXBpbGVycy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLUZyb20gMTBiMDY0ZmZlOTAyZDVhZjMxYmI0OWJkOGU0ZjAzYzU0NWY4ZDQ2MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KLURhdGU6IFR1ZSwgMTMgTm92IDIwMTIgMTE6MTk6NDcgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gU3VwcG9ydCBidWlsZGluZyB3aXRoIG9sZGVyIGNvbXBpbGVycy4KLQotQWRkIGEgY2hlY2sgZm9yIF9fYnVpbHRpbl91bnJlYWNoYWJsZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBjb25maWd1cmUuYWMgICAgICAgICAgfCAgIDExICsrKysrKysrKysrCi0gaW5jbHVkZS9saWJ1bndpbmRfaS5oIHwgICAgNiArKysrKysKLSBzcmMvYXJtL0dyZXN1bWUuYyAgICAgfCAgICAyICstCi0gc3JjL3NoL0dyZXN1bWUuYyAgICAgIHwgICAgMiArLQotIDQgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0yODUsNiArMjg1LDE3IEBAIGlmIHRlc3QgeCRoYXZlX19idWlsdGluX19fY2xlYXJfY2FjaGUgPQotIGZpCi0gQUNfTVNHX1JFU1VMVChbJGhhdmVfX2J1aWx0aW5fX19jbGVhcl9jYWNoZV0pCi0gCi0rQUNfTVNHX0NIRUNLSU5HKFtmb3IgX19idWlsdGluX3VucmVhY2hhYmxlXSkKLStBQ19MSU5LX0lGRUxTRSgKLSsgIFtBQ19MQU5HX1BST0dSQU0oW1tdXSwgW1tfX2J1aWx0aW5fdW5yZWFjaGFibGUoKV1dKV0sCi0rICBbaGF2ZV9fYnVpbHRpbl91bnJlYWNoYWJsZT15ZXNdLAotKyAgW2hhdmVfX2J1aWx0aW5fdW5yZWFjaGFibGU9bm9dKQotK2lmIHRlc3QgeCRoYXZlX19idWlsdGluX3VucmVhY2hhYmxlID0geHllczsgdGhlbgotKyAgQUNfREVGSU5FKFtIQVZFX19CVUlMVElOX1VOUkVBQ0hBQkxFXSwgWzFdLAotKyAgICAgICAgICAgIFtEZWZpbmVkIGlmIF9fYnVpbHRpbl91bnJlYWNoYWJsZSgpIGlzIGF2YWlsYWJsZV0pCi0rZmkKLStBQ19NU0dfUkVTVUxUKFskaGF2ZV9fYnVpbHRpbl91bnJlYWNoYWJsZV0pCi0rCi0gQUNfTVNHX0NIRUNLSU5HKFtmb3IgX19zeW5jIGF0b21pY3NdKQotIEFDX0xJTktfSUZFTFNFKAotICAgW0FDX0xBTkdfUFJPR1JBTShbW11dLCBbWwotLS0tIGEvaW5jbHVkZS9saWJ1bndpbmRfaS5oCi0rKysgYi9pbmNsdWRlL2xpYnVud2luZF9pLmgKLUBAIC03Miw2ICs3MiwxMiBAQCBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFCi0gIyBlbmRpZgotICNlbmRpZgotIAotKyNpZiBkZWZpbmVkKEhBVkVfX0JVSUxUSU5fVU5SRUFDSEFCTEUpCi0rIyBkZWZpbmUgdW5yZWFjaGFibGUoKSBfX2J1aWx0aW5fdW5yZWFjaGFibGUoKQotKyNlbHNlCi0rIyBkZWZpbmUgdW5yZWFjaGFibGUoKSBkbyB7IH0gd2hpbGUgKDEpCi0rI2VuZGlmCi0rCi0gI2lmZGVmIERFQlVHCi0gIyBkZWZpbmUgVU5XX0RFQlVHCTEKLSAjZWxzZQotLS0tIGEvc3JjL2FybS9HcmVzdW1lLmMKLSsrKyBiL3NyYy9hcm0vR3Jlc3VtZS5jCi1AQCAtOTYsNyArOTYsNyBAQCBhcm1fbG9jYWxfcmVzdW1lICh1bndfYWRkcl9zcGFjZV90IGFzLCB1Ci0gCTogOiAiciIgKGMtPnNpZ2NvbnRleHRfc3ApLCAiciIgKGMtPnNpZ2NvbnRleHRfcGMpCi0gICAgICAgKTsKLSAgICB9Ci0tICBfX2J1aWx0aW5fdW5yZWFjaGFibGUoKTsKLSsgIHVucmVhY2hhYmxlKCk7Ci0gI2Vsc2UKLSAgIHByaW50ZiAoIiVzOiBpbXBsZW1lbnQgbWVcbiIsIF9fRlVOQ1RJT05fXyk7Ci0gI2VuZGlmCi0tLS0gYS9zcmMvc2gvR3Jlc3VtZS5jCi0rKysgYi9zcmMvc2gvR3Jlc3VtZS5jCi1AQCAtMTA5LDcgKzEwOSw3IEBAIHNoX2xvY2FsX3Jlc3VtZSAodW53X2FkZHJfc3BhY2VfdCBhcywgdW4KLSAJICAiciIgKGMtPnNpZ2NvbnRleHRfcGMpCi0gICAgICAgKTsKLSAgICB9Ci0tICBfX2J1aWx0aW5fdW5yZWFjaGFibGUoKTsKLSsgIHVucmVhY2hhYmxlKCk7Ci0gI2VuZGlmCi0gICByZXR1cm4gLVVOV19FSU5WQUw7Ci0gfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQuaW5jCmluZGV4IDFjMzQyZDMuLmU0YWU4ZGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC5pbmMKQEAgLTE4LDE1ICsxOCw2IEBACiBBVE9NSUNPUFNfYXJtdjQgPSAiLURBT19VU0VfUFRIUkVBRF9ERUZTPTEiCiBBVE9NSUNPUFMgPz0gIiIKIAotTERGTEFHU19hcHBlbmRfeDg2ID0gIiAtZnVzZS1sZD1nb2xkIgotTERGTEFHU19hcHBlbmRfeDg2LTY0ID0gIiAtZnVzZS1sZD1nb2xkIgotCi1MREZMQUdTX2FwcGVuZF9hcm0gPSAiIC1mdXNlLWxkPWdvbGQiCi1MREZMQUdTX2FwcGVuZF9hYXJjaDY0ID0gIiAtZnVzZS1sZD1nb2xkIgotCi1MREZMQUdTX2FwcGVuZF9wb3dlcnBjID0gIiAtZnVzZS1sZD1nb2xkIC1tYnNzLXBsdCIKLUxERkxBR1NfYXBwZW5kX3Bvd2VycGM2NCA9ICIgLWZ1c2UtbGQ9Z29sZCAtbWJzcy1wbHQiCi0KIFNFQ1VSSVRZX0xERkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLWxzc3Bfbm9uc2hhcmVkIC1sc3NwIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kLzAwMDEtRml4LWJ1aWxkLW9uLW1pcHMtbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kLzAwMDEtRml4LWJ1aWxkLW9uLW1pcHMtbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmNjMjUyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQvMDAwMS1GaXgtYnVpbGQtb24tbWlwcy1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsODEgQEAKK0Zyb20gZTYyM2M3NzAzOTQ1YTVlYjZjOWEzMDU4NmVjNWUyM2IyZjczOTZmNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDIzIE1hciAyMDE2IDA2OjA4OjU5ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCBvbiBtaXBzL211c2wKKworRG8gbm90IGluY2x1ZGUgZW5kaWFuLmggb24gbXVzbCBpdCBpbmNsdWRlcworZnVydGhlciBoZWFkZXJzIHdoaWNoIGNhbiBub3QgYmUgY29tcGlsZWQgaW4gX19BU1NFTUJMRVJfXworIG1vZGUKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBzcmMvY29yZWR1bXAvX1VDRF9pbnRlcm5hbC5oIHwgMzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIHNyYy9taXBzL2dldGNvbnRleHQuUyAgICAgICAgfCAgMyArLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDM1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK0luZGV4OiBnaXQvc3JjL2NvcmVkdW1wL19VQ0RfaW50ZXJuYWwuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3NyYy9jb3JlZHVtcC9fVUNEX2ludGVybmFsLmgKKysrKyBnaXQvc3JjL2NvcmVkdW1wL19VQ0RfaW50ZXJuYWwuaAorQEAgLTQ0LDYgKzQ0LDQxIEBAIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREUKKyAKKyAjaW5jbHVkZSAibGlidW53aW5kX2kuaCIKKyAKKysjaWZuZGVmIF9fR0xJQkNfXworKyNpbmNsdWRlIDxzeXMvcmVnLmg+CisrCisrI2RlZmluZSBFRl9SRUcwCQkJNgorKyNkZWZpbmUgRUZfUkVHMQkJCTcKKysjZGVmaW5lIEVGX1JFRzIJCQk4CisrI2RlZmluZSBFRl9SRUczCQkJOQorKyNkZWZpbmUgRUZfUkVHNAkJCTEwCisrI2RlZmluZSBFRl9SRUc1CQkJMTEKKysjZGVmaW5lIEVGX1JFRzYJCQkxMgorKyNkZWZpbmUgRUZfUkVHNwkJCTEzCisrI2RlZmluZSBFRl9SRUc4CQkJMTQKKysjZGVmaW5lIEVGX1JFRzkJCQkxNQorKyNkZWZpbmUgRUZfUkVHMTAJCTE2CisrI2RlZmluZSBFRl9SRUcxMQkJMTcKKysjZGVmaW5lIEVGX1JFRzEyCQkxOAorKyNkZWZpbmUgRUZfUkVHMTMJCTE5CisrI2RlZmluZSBFRl9SRUcxNAkJMjAKKysjZGVmaW5lIEVGX1JFRzE1CQkyMQorKyNkZWZpbmUgRUZfUkVHMTYJCTIyCisrI2RlZmluZSBFRl9SRUcxNwkJMjMKKysjZGVmaW5lIEVGX1JFRzE4CQkyNAorKyNkZWZpbmUgRUZfUkVHMTkJCTI1CisrI2RlZmluZSBFRl9SRUcyMAkJMjYKKysjZGVmaW5lIEVGX1JFRzIxCQkyNworKyNkZWZpbmUgRUZfUkVHMjIJCTI4CisrI2RlZmluZSBFRl9SRUcyMwkJMjkKKysjZGVmaW5lIEVGX1JFRzI0CQkzMAorKyNkZWZpbmUgRUZfUkVHMjUJCTMxCisrI2RlZmluZSBFRl9SRUcyOAkJMzQKKysjZGVmaW5lIEVGX1JFRzI5CQkzNQorKyNkZWZpbmUgRUZfUkVHMzAJCTM2CisrI2RlZmluZSBFRl9SRUczMQkJMzcKKysjZW5kaWYKKysKKyAKKyAjaWYgU0laRU9GX09GRl9UID09IDQKKyB0eXBlZGVmIHVpbnQzMl90IHVvZmZfdDsKK0luZGV4OiBnaXQvc3JjL21pcHMvZ2V0Y29udGV4dC5TCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvc3JjL21pcHMvZ2V0Y29udGV4dC5TCisrKysgZ2l0L3NyYy9taXBzL2dldGNvbnRleHQuUworQEAgLTI0LDEyICsyNCwxMSBAQCBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICovCisgCisgI2luY2x1ZGUgIm9mZnNldHMuaCIKKy0jaW5jbHVkZSA8ZW5kaWFuLmg+CisgCisgCS50ZXh0CisgCisgI2lmIF9NSVBTX1NJTSA9PSBfQUJJTzMyCistIyBpZiBfX0JZVEVfT1JERVIgPT0gX19CSUdfRU5ESUFOCisrIyBpZiBfX0JZVEVfT1JERVJfXyA9PSBfX09SREVSX0JJR19FTkRJQU5fXworICMgIGRlZmluZSBPRkZTRVQgNAorICMgZWxzZQorICMgIGRlZmluZSBPRkZTRVQgMApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQvMDAwMS1hZGQta25vYnMtdG8tZGlzYWJsZS1lbmFibGUtdGVzdHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC8wMDAxLWFkZC1rbm9icy10by1kaXNhYmxlLWVuYWJsZS10ZXN0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzNhNWJiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQvMDAwMS1hZGQta25vYnMtdG8tZGlzYWJsZS1lbmFibGUtdGVzdHMucGF0Y2gKQEAgLTAsMCArMSw2OSBAQAorRnJvbSA0NTllNDcxZmNjMzNkMzAwZjdiYmNkYWYzZTBkYzMzOGQ5ZGMxNWI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMzAgQXByIDIwMTYgMTY6NTY6MzQgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gYWRkIGtub2JzIHRvIGRpc2FibGUvZW5hYmxlIHRlc3RzCisKK1NvbWUgdGVzdHMgZG8gbm90IGNvbXBpbGUgb24gbXVzbCBsaWJjCitpbiBnZW5lcmFsIGl0cyBnb29kIHRvIGhhdmUgc3VjaCBhIGtub2IKK3NpbmNlIG5vdCBhbGwgYnVpbGRzIG1heSB3YW50IHRvIGVuYWJsZQordGVzdHMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZS5hbSAgfCAgNiArKysrKy0KKyBjb25maWd1cmUuYWMgfCAxMiArKysrKysrKysrLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCA2YTNlZDllLi4wYzI5YjNlIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtNDIsNyArNDIsMTEgQEAgZW5kaWYKKyAKKyBub2Rpc3RfaW5jbHVkZV9IRUFERVJTID0gaW5jbHVkZS9saWJ1bndpbmQtY29tbW9uLmgKKyAKKy1TVUJESVJTID0gc3JjIHRlc3RzCisrU1VCRElSUyA9IHNyYworKworK2lmIENPTkZJR19URVNUUworK1NVQkRJUlMgKz0gdGVzdHMKKytlbmRpZgorIAorIGlmIENPTkZJR19ET0NTCisgU1VCRElSUyArPSBkb2MKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDg1ZDc4ZjguLmQzNjIzODcgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTEyOSw2ICsxMjksMTAgQEAgQUNfQVJHX0VOQUJMRShkb2N1bWVudGF0aW9uLAorIAlBU19IRUxQX1NUUklORyhbLS1kaXNhYmxlLWRvY3VtZW50YXRpb25dLFtEaXNhYmxlIGdlbmVyYXRpbmcgdGhlIG1hbiBwYWdlc10pLCwKKyAJW2VuYWJsZV9kb2N1bWVudGF0aW9uPXllc10pCisgCisrQUNfQVJHX0VOQUJMRSh0ZXN0cywKKysJQVNfSEVMUF9TVFJJTkcoWy0tZGlzYWJsZS10ZXN0c10sW0Rpc2FibGUgYnVpbGRpbmcgdGVzdHNdKSwsCisrCVtlbmFibGVfdGVzdHM9eWVzXSkKKysKKyBBQ19NU0dfQ0hFQ0tJTkcoW2lmIHdlIHNob3VsZCBidWlsZCBsaWJ1bndpbmQtc2V0am1wXSkKKyBBQ19NU0dfUkVTVUxUKFskZW5hYmxlX3NldGptcF0pCisgCitAQCAtMzk1LDkgKzM5OSwxMyBAQCBBTV9DT05ESVRJT05BTChbQ09ORklHX0RPQ1NdLCBbdGVzdCB4JGVuYWJsZV9kb2N1bWVudGF0aW9uID0geHllc10pCisgaWYgdGVzdCAieCRlbmFibGVfZG9jdW1lbnRhdGlvbiIgPSAieHllcyI7IHRoZW4KKyAgIEFDX0NPTkZJR19GSUxFUyhkb2MvTWFrZWZpbGUgZG9jL2NvbW1vbi50ZXgpCisgZmkKKytBTV9DT05ESVRJT05BTChbQ09ORklHX1RFU1RTXSwgW3Rlc3QgeCRlbmFibGVfdGVzdHMgPSB4eWVzXSkKKytpZiB0ZXN0ICJ4JGVuYWJsZV90ZXN0cyIgPSAieHllcyI7IHRoZW4KKysgIEFDX0NPTkZJR19GSUxFUyh0ZXN0cy9NYWtlZmlsZSB0ZXN0cy9jaGVjay1uYW1lc3BhY2Uuc2gpCisrZmkKKysKKyAKKy1BQ19DT05GSUdfRklMRVMoTWFrZWZpbGUgc3JjL01ha2VmaWxlIHRlc3RzL01ha2VmaWxlIHRlc3RzL2NoZWNrLW5hbWVzcGFjZS5zaAorLQkJaW5jbHVkZS9saWJ1bndpbmQtY29tbW9uLmgKKytBQ19DT05GSUdfRklMRVMoTWFrZWZpbGUgc3JjL01ha2VmaWxlIGluY2x1ZGUvbGlidW53aW5kLWNvbW1vbi5oCisgICAgICAgICAgICAgICAgIGluY2x1ZGUvbGlidW53aW5kLmggaW5jbHVkZS90ZGVwL2xpYnVud2luZF9pLmgpCisgQUNfQ09ORklHX0ZJTEVTKHNyYy91bndpbmQvbGlidW53aW5kLnBjIHNyYy9jb3JlZHVtcC9saWJ1bndpbmQtY29yZWR1bXAucGMKKyAgICAgICAgICAgICAgICAgc3JjL3B0cmFjZS9saWJ1bndpbmQtcHRyYWNlLnBjIHNyYy9zZXRqbXAvbGlidW53aW5kLXNldGptcC5wYworLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kLTEuMS8wMDAxLWJhY2t0cmFjZS1Vc2Utb25seS13aXRoLWdsaWJjLWFuZC11Y2xpYmMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC8wMDAxLWJhY2t0cmFjZS1Vc2Utb25seS13aXRoLWdsaWJjLWFuZC11Y2xpYmMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kLTEuMS8wMDAxLWJhY2t0cmFjZS1Vc2Utb25seS13aXRoLWdsaWJjLWFuZC11Y2xpYmMucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kLzAwMDEtYmFja3RyYWNlLVVzZS1vbmx5LXdpdGgtZ2xpYmMtYW5kLXVjbGliYy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQvMDAwMS1wcGMzMi1Db25zaWRlci11Y29udGV4dC1taXNtYXRjaGVzLWJldHdlZW4tZ2xpYmMtYW5kLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQvMDAwMS1wcGMzMi1Db25zaWRlci11Y29udGV4dC1taXNtYXRjaGVzLWJldHdlZW4tZ2xpYmMtYW5kLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhMDY0MWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC8wMDAxLXBwYzMyLUNvbnNpZGVyLXVjb250ZXh0LW1pc21hdGNoZXMtYmV0d2Vlbi1nbGliYy1hbmQucGF0Y2gKQEAgLTAsMCArMSwyNDggQEAKK0Zyb20gZTBlZWE1M2M3N2ZjZTg1MzdjNThhMDcyYjY4NDA0MzUwNzk4N2JjYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDkgSnVsIDIwMTYgMDE6MDc6NTMgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gcHBjMzI6IENvbnNpZGVyIHVjb250ZXh0IG1pc21hdGNoZXMgYmV0d2VlbiBnbGliYyBhbmQgbXVzbAorCitUaGlzIGhlbHBzIGluIHBvcnRpbmcgbGlidW53aW5kIG9udG8gbXVzbCBiYXNlZCBzeXN0ZW1zCitwdHJhY2UuaCBjaGFuZ2UgaXMgcmVxdWlyZWQgYWdhaW4gYW4gZXJyb3IgdGhhdCBzdXJmYWNlcword2l0aCBtdXNsCisKKy9tbnQvb2Uvb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLW11c2wvc3lzcm9vdHMvcWVtdXBwYy91c3IvaW5jbHVkZS9hc20vcHRyYWNlLmg6MzE6ODogZXJyb3I6IHJlZGVmaW5pdGlvbiBvZiAnc3RydWN0IHB0X3JlZ3MnCisgc3RydWN0IHB0X3JlZ3MgeworICAgICAgICBefn5+fn5+CitJbiBmaWxlIGluY2x1ZGVkIGZyb20gL21udC9vZS9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtbXVzbC9zeXNyb290cy9xZW11cHBjL3Vzci9pbmNsdWRlL3N5cy91c2VyLmg6MTE6MCwKKyAgICAgICAgICAgICAgICAgZnJvbSAvbW50L29lL29wZW5lbWJlZGRlZC1jb3JlL2J1aWxkL3RtcC1tdXNsL3N5c3Jvb3RzL3FlbXVwcGMvdXNyL2luY2x1ZGUvc3lzL3Byb2Nmcy5oOjksCisgICAgICAgICAgICAgICAgIGZyb20gLi4vLi4vZ2l0L3NyYy9wdHJhY2UvX1VQVF9pbnRlcm5hbC5oOjQwLAorICAgICAgICAgICAgICAgICBmcm9tIC4uLy4uL2dpdC9zcmMvcHRyYWNlL19VUFRfcmVnX29mZnNldC5jOjI3OgorL21udC9vZS9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtbXVzbC9zeXNyb290cy9xZW11cHBjL3Vzci9pbmNsdWRlL2JpdHMvdXNlci5oOjE6ODogbm90ZTogb3JpZ2luYWxseSBkZWZpbmVkIGhlcmUKKyBzdHJ1Y3QgcHRfcmVncyB7CisgICAgICAgIF5+fn5+fn4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBzcmMvcHBjMzIvR2luaXQuYyAgICAgICAgICAgIHwgICA2ICstCisgc3JjL3BwYzMyL3Vjb250ZXh0X2kuaCAgICAgICB8IDE1OCArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgc3JjL3B0cmFjZS9fVVBUX3JlZ19vZmZzZXQuYyB8ICAgNyArKworIDMgZmlsZXMgY2hhbmdlZCwgOTIgaW5zZXJ0aW9ucygrKSwgNzkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvcHBjMzIvR2luaXQuYyBiL3NyYy9wcGMzMi9HaW5pdC5jCitpbmRleCBmMmU2ZTgyLi42MTdhYWExIDEwMDY0NAorLS0tIGEvc3JjL3BwYzMyL0dpbml0LmMKKysrKyBiL3NyYy9wcGMzMi9HaW5pdC5jCitAQCAtNDgsMTIgKzQ4LDEyIEBAIHVjX2FkZHIgKHVjb250ZXh0X3QgKnVjLCBpbnQgcmVnKQorICAgdm9pZCAqYWRkcjsKKyAKKyAgIGlmICgodW5zaWduZWQpIChyZWcgLSBVTldfUFBDMzJfUjApIDwgMzIpCistICAgIGFkZHIgPSAmdWMtPnVjX21jb250ZXh0LnVjX3JlZ3MtPmdyZWdzW3JlZyAtIFVOV19QUEMzMl9SMF07CisrICAgIGFkZHIgPSAmdWMtPkdFVF9VQ19SRUdTLT5ncmVnc1tyZWcgLSBVTldfUFBDMzJfUjBdOworIAorICAgZWxzZQorICAgaWYgKCAoKHVuc2lnbmVkKSAocmVnIC0gVU5XX1BQQzMyX0YwKSA8IDMyKSAmJgorICAgICAgICAoKHVuc2lnbmVkKSAocmVnIC0gVU5XX1BQQzMyX0YwKSA+PSAwKSApCistICAgIGFkZHIgPSAmdWMtPnVjX21jb250ZXh0LnVjX3JlZ3MtPmZwcmVncy5mcHJlZ3NbcmVnIC0gVU5XX1BQQzMyX0YwXTsKKysgICAgYWRkciA9ICZ1Yy0+R0VUX1VDX1JFR1MtPmZwcmVncy5mcHJlZ3NbcmVnIC0gVU5XX1BQQzMyX0YwXTsKKyAKKyAgIGVsc2UKKyAgICAgeworQEAgLTc2LDcgKzc2LDcgQEAgdWNfYWRkciAodWNvbnRleHRfdCAqdWMsIGludCByZWcpCisgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgIH0KKy0gICAgICBhZGRyID0gJnVjLT51Y19tY29udGV4dC51Y19yZWdzLT5ncmVnc1tncmVnc19pZHhdOworKyAgICAgIGFkZHIgPSAmdWMtPkdFVF9VQ19SRUdTLT5ncmVnc1tncmVnc19pZHhdOworICAgICB9CisgICByZXR1cm4gYWRkcjsKKyB9CitkaWZmIC0tZ2l0IGEvc3JjL3BwYzMyL3Vjb250ZXh0X2kuaCBiL3NyYy9wcGMzMi91Y29udGV4dF9pLmgKK2luZGV4IGM2YmE4MDYuLmI3OWYxNWMgMTAwNjQ0CistLS0gYS9zcmMvcHBjMzIvdWNvbnRleHRfaS5oCisrKysgYi9zcmMvcHBjMzIvdWNvbnRleHRfaS5oCitAQCAtNDYsODMgKzQ2LDg5IEBAIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgKi8KKyAgICB2YXJpb3VzIHN0cnVjdHVyZSBtZW1iZXJzLiAqLworIHN0YXRpYyB1Y29udGV4dF90IGRteV9jdHh0IFVOVVNFRDsKKyAKKy0jZGVmaW5lIFVDX01DT05URVhUX0dSRUdTX1IwICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5ncmVnc1swXSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfR1JFR1NfUjEgKCh2b2lkICopJmRteV9jdHh0LnVjX21jb250ZXh0LnVjX3JlZ3MtPmdyZWdzWzFdIC0gKHZvaWQgKikmZG15X2N0eHQpCistI2RlZmluZSBVQ19NQ09OVEVYVF9HUkVHU19SMiAoKHZvaWQgKikmZG15X2N0eHQudWNfbWNvbnRleHQudWNfcmVncy0+Z3JlZ3NbMl0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKy0jZGVmaW5lIFVDX01DT05URVhUX0dSRUdTX1IzICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5ncmVnc1szXSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfR1JFR1NfUjQgKCh2b2lkICopJmRteV9jdHh0LnVjX21jb250ZXh0LnVjX3JlZ3MtPmdyZWdzWzRdIC0gKHZvaWQgKikmZG15X2N0eHQpCistI2RlZmluZSBVQ19NQ09OVEVYVF9HUkVHU19SNSAoKHZvaWQgKikmZG15X2N0eHQudWNfbWNvbnRleHQudWNfcmVncy0+Z3JlZ3NbNV0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKy0jZGVmaW5lIFVDX01DT05URVhUX0dSRUdTX1I2ICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5ncmVnc1s2XSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfR1JFR1NfUjcgKCh2b2lkICopJmRteV9jdHh0LnVjX21jb250ZXh0LnVjX3JlZ3MtPmdyZWdzWzddIC0gKHZvaWQgKikmZG15X2N0eHQpCistI2RlZmluZSBVQ19NQ09OVEVYVF9HUkVHU19SOCAoKHZvaWQgKikmZG15X2N0eHQudWNfbWNvbnRleHQudWNfcmVncy0+Z3JlZ3NbOF0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKy0jZGVmaW5lIFVDX01DT05URVhUX0dSRUdTX1I5ICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5ncmVnc1s5XSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfR1JFR1NfUjEwICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5ncmVnc1sxMF0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKy0jZGVmaW5lIFVDX01DT05URVhUX0dSRUdTX1IxMSAoKHZvaWQgKikmZG15X2N0eHQudWNfbWNvbnRleHQudWNfcmVncy0+Z3JlZ3NbMTFdIC0gKHZvaWQgKikmZG15X2N0eHQpCistI2RlZmluZSBVQ19NQ09OVEVYVF9HUkVHU19SMTIgKCh2b2lkICopJmRteV9jdHh0LnVjX21jb250ZXh0LnVjX3JlZ3MtPmdyZWdzWzEyXSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfR1JFR1NfUjEzICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5ncmVnc1sxM10gLSAodm9pZCAqKSZkbXlfY3R4dCkKKy0jZGVmaW5lIFVDX01DT05URVhUX0dSRUdTX1IxNCAoKHZvaWQgKikmZG15X2N0eHQudWNfbWNvbnRleHQudWNfcmVncy0+Z3JlZ3NbMTRdIC0gKHZvaWQgKikmZG15X2N0eHQpCistI2RlZmluZSBVQ19NQ09OVEVYVF9HUkVHU19SMTUgKCh2b2lkICopJmRteV9jdHh0LnVjX21jb250ZXh0LnVjX3JlZ3MtPmdyZWdzWzE1XSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfR1JFR1NfUjE2ICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5ncmVnc1sxNl0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKy0jZGVmaW5lIFVDX01DT05URVhUX0dSRUdTX1IxNyAoKHZvaWQgKikmZG15X2N0eHQudWNfbWNvbnRleHQudWNfcmVncy0+Z3JlZ3NbMTddIC0gKHZvaWQgKikmZG15X2N0eHQpCistI2RlZmluZSBVQ19NQ09OVEVYVF9HUkVHU19SMTggKCh2b2lkICopJmRteV9jdHh0LnVjX21jb250ZXh0LnVjX3JlZ3MtPmdyZWdzWzE4XSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfR1JFR1NfUjE5ICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5ncmVnc1sxOV0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKy0jZGVmaW5lIFVDX01DT05URVhUX0dSRUdTX1IyMCAoKHZvaWQgKikmZG15X2N0eHQudWNfbWNvbnRleHQudWNfcmVncy0+Z3JlZ3NbMjBdIC0gKHZvaWQgKikmZG15X2N0eHQpCistI2RlZmluZSBVQ19NQ09OVEVYVF9HUkVHU19SMjEgKCh2b2lkICopJmRteV9jdHh0LnVjX21jb250ZXh0LnVjX3JlZ3MtPmdyZWdzWzIxXSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfR1JFR1NfUjIyICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5ncmVnc1syMl0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKy0jZGVmaW5lIFVDX01DT05URVhUX0dSRUdTX1IyMyAoKHZvaWQgKikmZG15X2N0eHQudWNfbWNvbnRleHQudWNfcmVncy0+Z3JlZ3NbMjNdIC0gKHZvaWQgKikmZG15X2N0eHQpCistI2RlZmluZSBVQ19NQ09OVEVYVF9HUkVHU19SMjQgKCh2b2lkICopJmRteV9jdHh0LnVjX21jb250ZXh0LnVjX3JlZ3MtPmdyZWdzWzI0XSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfR1JFR1NfUjI1ICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5ncmVnc1syNV0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKy0jZGVmaW5lIFVDX01DT05URVhUX0dSRUdTX1IyNiAoKHZvaWQgKikmZG15X2N0eHQudWNfbWNvbnRleHQudWNfcmVncy0+Z3JlZ3NbMjZdIC0gKHZvaWQgKikmZG15X2N0eHQpCistI2RlZmluZSBVQ19NQ09OVEVYVF9HUkVHU19SMjcgKCh2b2lkICopJmRteV9jdHh0LnVjX21jb250ZXh0LnVjX3JlZ3MtPmdyZWdzWzI3XSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfR1JFR1NfUjI4ICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5ncmVnc1syOF0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKy0jZGVmaW5lIFVDX01DT05URVhUX0dSRUdTX1IyOSAoKHZvaWQgKikmZG15X2N0eHQudWNfbWNvbnRleHQudWNfcmVncy0+Z3JlZ3NbMjldIC0gKHZvaWQgKikmZG15X2N0eHQpCistI2RlZmluZSBVQ19NQ09OVEVYVF9HUkVHU19SMzAgKCh2b2lkICopJmRteV9jdHh0LnVjX21jb250ZXh0LnVjX3JlZ3MtPmdyZWdzWzMwXSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfR1JFR1NfUjMxICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5ncmVnc1szMV0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKysjaWZkZWYgX19HTElCQ19fCisrI2RlZmluZSBHRVRfVUNfUkVHUyB1Y19tY29udGV4dC51Y19yZWdzCisrI2Vsc2UKKysjZGVmaW5lIEdFVF9VQ19SRUdTIHVjX3JlZ3MKKysjZW5kaWYKKysKKysjZGVmaW5lIFVDX01DT05URVhUX0dSRUdTX1IwICgodm9pZCAqKSZkbXlfY3R4dC5HRVRfVUNfUkVHUy0+Z3JlZ3NbMF0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKysjZGVmaW5lIFVDX01DT05URVhUX0dSRUdTX1IxICgodm9pZCAqKSZkbXlfY3R4dC5HRVRfVUNfUkVHUy0+Z3JlZ3NbMV0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKysjZGVmaW5lIFVDX01DT05URVhUX0dSRUdTX1IyICgodm9pZCAqKSZkbXlfY3R4dC5HRVRfVUNfUkVHUy0+Z3JlZ3NbMl0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKysjZGVmaW5lIFVDX01DT05URVhUX0dSRUdTX1IzICgodm9pZCAqKSZkbXlfY3R4dC5HRVRfVUNfUkVHUy0+Z3JlZ3NbM10gLSAodm9pZCAqKSZkbXlfY3R4dCkKKysjZGVmaW5lIFVDX01DT05URVhUX0dSRUdTX1I0ICgodm9pZCAqKSZkbXlfY3R4dC5HRVRfVUNfUkVHUy0+Z3JlZ3NbNF0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKysjZGVmaW5lIFVDX01DT05URVhUX0dSRUdTX1I1ICgodm9pZCAqKSZkbXlfY3R4dC5HRVRfVUNfUkVHUy0+Z3JlZ3NbNV0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKysjZGVmaW5lIFVDX01DT05URVhUX0dSRUdTX1I2ICgodm9pZCAqKSZkbXlfY3R4dC5HRVRfVUNfUkVHUy0+Z3JlZ3NbNl0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKysjZGVmaW5lIFVDX01DT05URVhUX0dSRUdTX1I3ICgodm9pZCAqKSZkbXlfY3R4dC5HRVRfVUNfUkVHUy0+Z3JlZ3NbN10gLSAodm9pZCAqKSZkbXlfY3R4dCkKKysjZGVmaW5lIFVDX01DT05URVhUX0dSRUdTX1I4ICgodm9pZCAqKSZkbXlfY3R4dC5HRVRfVUNfUkVHUy0+Z3JlZ3NbOF0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKysjZGVmaW5lIFVDX01DT05URVhUX0dSRUdTX1I5ICgodm9pZCAqKSZkbXlfY3R4dC5HRVRfVUNfUkVHUy0+Z3JlZ3NbOV0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKysjZGVmaW5lIFVDX01DT05URVhUX0dSRUdTX1IxMCAoKHZvaWQgKikmZG15X2N0eHQuR0VUX1VDX1JFR1MtPmdyZWdzWzEwXSAtICh2b2lkICopJmRteV9jdHh0KQorKyNkZWZpbmUgVUNfTUNPTlRFWFRfR1JFR1NfUjExICgodm9pZCAqKSZkbXlfY3R4dC5HRVRfVUNfUkVHUy0+Z3JlZ3NbMTFdIC0gKHZvaWQgKikmZG15X2N0eHQpCisrI2RlZmluZSBVQ19NQ09OVEVYVF9HUkVHU19SMTIgKCh2b2lkICopJmRteV9jdHh0LkdFVF9VQ19SRUdTLT5ncmVnc1sxMl0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKysjZGVmaW5lIFVDX01DT05URVhUX0dSRUdTX1IxMyAoKHZvaWQgKikmZG15X2N0eHQuR0VUX1VDX1JFR1MtPmdyZWdzWzEzXSAtICh2b2lkICopJmRteV9jdHh0KQorKyNkZWZpbmUgVUNfTUNPTlRFWFRfR1JFR1NfUjE0ICgodm9pZCAqKSZkbXlfY3R4dC5HRVRfVUNfUkVHUy0+Z3JlZ3NbMTRdIC0gKHZvaWQgKikmZG15X2N0eHQpCisrI2RlZmluZSBVQ19NQ09OVEVYVF9HUkVHU19SMTUgKCh2b2lkICopJmRteV9jdHh0LkdFVF9VQ19SRUdTLT5ncmVnc1sxNV0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKysjZGVmaW5lIFVDX01DT05URVhUX0dSRUdTX1IxNiAoKHZvaWQgKikmZG15X2N0eHQuR0VUX1VDX1JFR1MtPmdyZWdzWzE2XSAtICh2b2lkICopJmRteV9jdHh0KQorKyNkZWZpbmUgVUNfTUNPTlRFWFRfR1JFR1NfUjE3ICgodm9pZCAqKSZkbXlfY3R4dC5HRVRfVUNfUkVHUy0+Z3JlZ3NbMTddIC0gKHZvaWQgKikmZG15X2N0eHQpCisrI2RlZmluZSBVQ19NQ09OVEVYVF9HUkVHU19SMTggKCh2b2lkICopJmRteV9jdHh0LkdFVF9VQ19SRUdTLT5ncmVnc1sxOF0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKysjZGVmaW5lIFVDX01DT05URVhUX0dSRUdTX1IxOSAoKHZvaWQgKikmZG15X2N0eHQuR0VUX1VDX1JFR1MtPmdyZWdzWzE5XSAtICh2b2lkICopJmRteV9jdHh0KQorKyNkZWZpbmUgVUNfTUNPTlRFWFRfR1JFR1NfUjIwICgodm9pZCAqKSZkbXlfY3R4dC5HRVRfVUNfUkVHUy0+Z3JlZ3NbMjBdIC0gKHZvaWQgKikmZG15X2N0eHQpCisrI2RlZmluZSBVQ19NQ09OVEVYVF9HUkVHU19SMjEgKCh2b2lkICopJmRteV9jdHh0LkdFVF9VQ19SRUdTLT5ncmVnc1syMV0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKysjZGVmaW5lIFVDX01DT05URVhUX0dSRUdTX1IyMiAoKHZvaWQgKikmZG15X2N0eHQuR0VUX1VDX1JFR1MtPmdyZWdzWzIyXSAtICh2b2lkICopJmRteV9jdHh0KQorKyNkZWZpbmUgVUNfTUNPTlRFWFRfR1JFR1NfUjIzICgodm9pZCAqKSZkbXlfY3R4dC5HRVRfVUNfUkVHUy0+Z3JlZ3NbMjNdIC0gKHZvaWQgKikmZG15X2N0eHQpCisrI2RlZmluZSBVQ19NQ09OVEVYVF9HUkVHU19SMjQgKCh2b2lkICopJmRteV9jdHh0LkdFVF9VQ19SRUdTLT5ncmVnc1syNF0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKysjZGVmaW5lIFVDX01DT05URVhUX0dSRUdTX1IyNSAoKHZvaWQgKikmZG15X2N0eHQuR0VUX1VDX1JFR1MtPmdyZWdzWzI1XSAtICh2b2lkICopJmRteV9jdHh0KQorKyNkZWZpbmUgVUNfTUNPTlRFWFRfR1JFR1NfUjI2ICgodm9pZCAqKSZkbXlfY3R4dC5HRVRfVUNfUkVHUy0+Z3JlZ3NbMjZdIC0gKHZvaWQgKikmZG15X2N0eHQpCisrI2RlZmluZSBVQ19NQ09OVEVYVF9HUkVHU19SMjcgKCh2b2lkICopJmRteV9jdHh0LkdFVF9VQ19SRUdTLT5ncmVnc1syN10gLSAodm9pZCAqKSZkbXlfY3R4dCkKKysjZGVmaW5lIFVDX01DT05URVhUX0dSRUdTX1IyOCAoKHZvaWQgKikmZG15X2N0eHQuR0VUX1VDX1JFR1MtPmdyZWdzWzI4XSAtICh2b2lkICopJmRteV9jdHh0KQorKyNkZWZpbmUgVUNfTUNPTlRFWFRfR1JFR1NfUjI5ICgodm9pZCAqKSZkbXlfY3R4dC5HRVRfVUNfUkVHUy0+Z3JlZ3NbMjldIC0gKHZvaWQgKikmZG15X2N0eHQpCisrI2RlZmluZSBVQ19NQ09OVEVYVF9HUkVHU19SMzAgKCh2b2lkICopJmRteV9jdHh0LkdFVF9VQ19SRUdTLT5ncmVnc1szMF0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKysjZGVmaW5lIFVDX01DT05URVhUX0dSRUdTX1IzMSAoKHZvaWQgKikmZG15X2N0eHQuR0VUX1VDX1JFR1MtPmdyZWdzWzMxXSAtICh2b2lkICopJmRteV9jdHh0KQorIAorLSNkZWZpbmUgVUNfTUNPTlRFWFRfR1JFR1NfTVNSICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5ncmVnc1tNU1JfSURYXSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfR1JFR1NfT1JJR19HUFIzICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5ncmVnc1tPUklHX0dQUjNfSURYXSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfR1JFR1NfQ1RSICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5ncmVnc1tDVFJfSURYXSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfR1JFR1NfTElOSyAoKHZvaWQgKikmZG15X2N0eHQudWNfbWNvbnRleHQudWNfcmVncy0+Z3JlZ3NbTElOS19JRFhdIC0gKHZvaWQgKikmZG15X2N0eHQpCistI2RlZmluZSBVQ19NQ09OVEVYVF9HUkVHU19YRVIgKCh2b2lkICopJmRteV9jdHh0LnVjX21jb250ZXh0LnVjX3JlZ3MtPmdyZWdzW1hFUl9JRFhdIC0gKHZvaWQgKikmZG15X2N0eHQpCistI2RlZmluZSBVQ19NQ09OVEVYVF9HUkVHU19DQ1IgKCh2b2lkICopJmRteV9jdHh0LnVjX21jb250ZXh0LnVjX3JlZ3MtPmdyZWdzW0NDUl9JRFhdIC0gKHZvaWQgKikmZG15X2N0eHQpCistI2RlZmluZSBVQ19NQ09OVEVYVF9HUkVHU19TT0ZURSAoKHZvaWQgKikmZG15X2N0eHQudWNfbWNvbnRleHQudWNfcmVncy0+Z3JlZ3NbU09GVEVfSURYXSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfR1JFR1NfVFJBUCAoKHZvaWQgKikmZG15X2N0eHQudWNfbWNvbnRleHQudWNfcmVncy0+Z3JlZ3NbVFJBUF9JRFhdIC0gKHZvaWQgKikmZG15X2N0eHQpCistI2RlZmluZSBVQ19NQ09OVEVYVF9HUkVHU19EQVIgKCh2b2lkICopJmRteV9jdHh0LnVjX21jb250ZXh0LnVjX3JlZ3MtPmdyZWdzW0RBUl9JRFhdIC0gKHZvaWQgKikmZG15X2N0eHQpCistI2RlZmluZSBVQ19NQ09OVEVYVF9HUkVHU19EU0lTUiAoKHZvaWQgKikmZG15X2N0eHQudWNfbWNvbnRleHQudWNfcmVncy0+Z3JlZ3NbRFNJU1JfSURYXSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfR1JFR1NfUkVTVUxUICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5ncmVnc1tSRVNVTFRfSURYXSAtICh2b2lkICopJmRteV9jdHh0KQorKyNkZWZpbmUgVUNfTUNPTlRFWFRfR1JFR1NfTVNSICgodm9pZCAqKSZkbXlfY3R4dC5HRVRfVUNfUkVHUy0+Z3JlZ3NbTVNSX0lEWF0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKysjZGVmaW5lIFVDX01DT05URVhUX0dSRUdTX09SSUdfR1BSMyAoKHZvaWQgKikmZG15X2N0eHQuR0VUX1VDX1JFR1MtPmdyZWdzW09SSUdfR1BSM19JRFhdIC0gKHZvaWQgKikmZG15X2N0eHQpCisrI2RlZmluZSBVQ19NQ09OVEVYVF9HUkVHU19DVFIgKCh2b2lkICopJmRteV9jdHh0LkdFVF9VQ19SRUdTLT5ncmVnc1tDVFJfSURYXSAtICh2b2lkICopJmRteV9jdHh0KQorKyNkZWZpbmUgVUNfTUNPTlRFWFRfR1JFR1NfTElOSyAoKHZvaWQgKikmZG15X2N0eHQuR0VUX1VDX1JFR1MtPmdyZWdzW0xJTktfSURYXSAtICh2b2lkICopJmRteV9jdHh0KQorKyNkZWZpbmUgVUNfTUNPTlRFWFRfR1JFR1NfWEVSICgodm9pZCAqKSZkbXlfY3R4dC5HRVRfVUNfUkVHUy0+Z3JlZ3NbWEVSX0lEWF0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKysjZGVmaW5lIFVDX01DT05URVhUX0dSRUdTX0NDUiAoKHZvaWQgKikmZG15X2N0eHQuR0VUX1VDX1JFR1MtPmdyZWdzW0NDUl9JRFhdIC0gKHZvaWQgKikmZG15X2N0eHQpCisrI2RlZmluZSBVQ19NQ09OVEVYVF9HUkVHU19TT0ZURSAoKHZvaWQgKikmZG15X2N0eHQuR0VUX1VDX1JFR1MtPmdyZWdzW1NPRlRFX0lEWF0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKysjZGVmaW5lIFVDX01DT05URVhUX0dSRUdTX1RSQVAgKCh2b2lkICopJmRteV9jdHh0LkdFVF9VQ19SRUdTLT5ncmVnc1tUUkFQX0lEWF0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKysjZGVmaW5lIFVDX01DT05URVhUX0dSRUdTX0RBUiAoKHZvaWQgKikmZG15X2N0eHQuR0VUX1VDX1JFR1MtPmdyZWdzW0RBUl9JRFhdIC0gKHZvaWQgKikmZG15X2N0eHQpCisrI2RlZmluZSBVQ19NQ09OVEVYVF9HUkVHU19EU0lTUiAoKHZvaWQgKikmZG15X2N0eHQuR0VUX1VDX1JFR1MtPmdyZWdzW0RTSVNSX0lEWF0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKysjZGVmaW5lIFVDX01DT05URVhUX0dSRUdTX1JFU1VMVCAoKHZvaWQgKikmZG15X2N0eHQuR0VUX1VDX1JFR1MtPmdyZWdzW1JFU1VMVF9JRFhdIC0gKHZvaWQgKikmZG15X2N0eHQpCisgCistI2RlZmluZSBVQ19NQ09OVEVYVF9GUkVHU19SMCAoKHZvaWQgKikmZG15X2N0eHQudWNfbWNvbnRleHQudWNfcmVncy0+ZnByZWdzLmZwcmVnc1swXSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfRlJFR1NfUjEgKCh2b2lkICopJmRteV9jdHh0LnVjX21jb250ZXh0LnVjX3JlZ3MtPmZwcmVncy5mcHJlZ3NbMV0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKy0jZGVmaW5lIFVDX01DT05URVhUX0ZSRUdTX1IyICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5mcHJlZ3MuZnByZWdzWzJdIC0gKHZvaWQgKikmZG15X2N0eHQpCistI2RlZmluZSBVQ19NQ09OVEVYVF9GUkVHU19SMyAoKHZvaWQgKikmZG15X2N0eHQudWNfbWNvbnRleHQudWNfcmVncy0+ZnByZWdzLmZwcmVnc1szXSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfRlJFR1NfUjQgKCh2b2lkICopJmRteV9jdHh0LnVjX21jb250ZXh0LnVjX3JlZ3MtPmZwcmVncy5mcHJlZ3NbNF0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKy0jZGVmaW5lIFVDX01DT05URVhUX0ZSRUdTX1I1ICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5mcHJlZ3MuZnByZWdzWzVdIC0gKHZvaWQgKikmZG15X2N0eHQpCistI2RlZmluZSBVQ19NQ09OVEVYVF9GUkVHU19SNiAoKHZvaWQgKikmZG15X2N0eHQudWNfbWNvbnRleHQudWNfcmVncy0+ZnByZWdzLmZwcmVnc1s2XSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfRlJFR1NfUjcgKCh2b2lkICopJmRteV9jdHh0LnVjX21jb250ZXh0LnVjX3JlZ3MtPmZwcmVncy5mcHJlZ3NbN10gLSAodm9pZCAqKSZkbXlfY3R4dCkKKy0jZGVmaW5lIFVDX01DT05URVhUX0ZSRUdTX1I4ICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5mcHJlZ3MuZnByZWdzWzhdIC0gKHZvaWQgKikmZG15X2N0eHQpCistI2RlZmluZSBVQ19NQ09OVEVYVF9GUkVHU19SOSAoKHZvaWQgKikmZG15X2N0eHQudWNfbWNvbnRleHQudWNfcmVncy0+ZnByZWdzLmZwcmVnc1s5XSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfRlJFR1NfUjEwICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5mcHJlZ3MuZnByZWdzWzEwXSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfRlJFR1NfUjExICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5mcHJlZ3MuZnByZWdzWzExXSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfRlJFR1NfUjEyICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5mcHJlZ3MuZnByZWdzWzEyXSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfRlJFR1NfUjEzICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5mcHJlZ3MuZnByZWdzWzEzXSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfRlJFR1NfUjE0ICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5mcHJlZ3MuZnByZWdzWzE0XSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfRlJFR1NfUjE1ICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5mcHJlZ3MuZnByZWdzWzE1XSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfRlJFR1NfUjE2ICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5mcHJlZ3MuZnByZWdzWzE2XSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfRlJFR1NfUjE3ICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5mcHJlZ3MuZnByZWdzWzE3XSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfRlJFR1NfUjE4ICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5mcHJlZ3MuZnByZWdzWzE4XSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfRlJFR1NfUjE5ICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5mcHJlZ3MuZnByZWdzWzE5XSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfRlJFR1NfUjIwICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5mcHJlZ3MuZnByZWdzWzIwXSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfRlJFR1NfUjIxICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5mcHJlZ3MuZnByZWdzWzIxXSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfRlJFR1NfUjIyICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5mcHJlZ3MuZnByZWdzWzIyXSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfRlJFR1NfUjIzICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5mcHJlZ3MuZnByZWdzWzIzXSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfRlJFR1NfUjI0ICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5mcHJlZ3MuZnByZWdzWzI0XSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfRlJFR1NfUjI1ICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5mcHJlZ3MuZnByZWdzWzI1XSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfRlJFR1NfUjI2ICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5mcHJlZ3MuZnByZWdzWzI2XSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfRlJFR1NfUjI3ICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5mcHJlZ3MuZnByZWdzWzI3XSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfRlJFR1NfUjI4ICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5mcHJlZ3MuZnByZWdzWzI4XSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfRlJFR1NfUjI5ICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5mcHJlZ3MuZnByZWdzWzI5XSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfRlJFR1NfUjMwICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5mcHJlZ3MuZnByZWdzWzMwXSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfRlJFR1NfUjMxICgodm9pZCAqKSZkbXlfY3R4dC51Y19tY29udGV4dC51Y19yZWdzLT5mcHJlZ3MuZnByZWdzWzMxXSAtICh2b2lkICopJmRteV9jdHh0KQorLSNkZWZpbmUgVUNfTUNPTlRFWFRfRlJFR1NfRlBTQ1IgKCh2b2lkICopJmRteV9jdHh0LnVjX21jb250ZXh0LnVjX3JlZ3MtPmZwcmVncy5mcHJlZ3NbMzJdIC0gKHZvaWQgKikmZG15X2N0eHQpCisrI2RlZmluZSBVQ19NQ09OVEVYVF9GUkVHU19SMCAoKHZvaWQgKikmZG15X2N0eHQuR0VUX1VDX1JFR1MtPmZwcmVncy5mcHJlZ3NbMF0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKysjZGVmaW5lIFVDX01DT05URVhUX0ZSRUdTX1IxICgodm9pZCAqKSZkbXlfY3R4dC5HRVRfVUNfUkVHUy0+ZnByZWdzLmZwcmVnc1sxXSAtICh2b2lkICopJmRteV9jdHh0KQorKyNkZWZpbmUgVUNfTUNPTlRFWFRfRlJFR1NfUjIgKCh2b2lkICopJmRteV9jdHh0LkdFVF9VQ19SRUdTLT5mcHJlZ3MuZnByZWdzWzJdIC0gKHZvaWQgKikmZG15X2N0eHQpCisrI2RlZmluZSBVQ19NQ09OVEVYVF9GUkVHU19SMyAoKHZvaWQgKikmZG15X2N0eHQuR0VUX1VDX1JFR1MtPmZwcmVncy5mcHJlZ3NbM10gLSAodm9pZCAqKSZkbXlfY3R4dCkKKysjZGVmaW5lIFVDX01DT05URVhUX0ZSRUdTX1I0ICgodm9pZCAqKSZkbXlfY3R4dC5HRVRfVUNfUkVHUy0+ZnByZWdzLmZwcmVnc1s0XSAtICh2b2lkICopJmRteV9jdHh0KQorKyNkZWZpbmUgVUNfTUNPTlRFWFRfRlJFR1NfUjUgKCh2b2lkICopJmRteV9jdHh0LkdFVF9VQ19SRUdTLT5mcHJlZ3MuZnByZWdzWzVdIC0gKHZvaWQgKikmZG15X2N0eHQpCisrI2RlZmluZSBVQ19NQ09OVEVYVF9GUkVHU19SNiAoKHZvaWQgKikmZG15X2N0eHQuR0VUX1VDX1JFR1MtPmZwcmVncy5mcHJlZ3NbNl0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKysjZGVmaW5lIFVDX01DT05URVhUX0ZSRUdTX1I3ICgodm9pZCAqKSZkbXlfY3R4dC5HRVRfVUNfUkVHUy0+ZnByZWdzLmZwcmVnc1s3XSAtICh2b2lkICopJmRteV9jdHh0KQorKyNkZWZpbmUgVUNfTUNPTlRFWFRfRlJFR1NfUjggKCh2b2lkICopJmRteV9jdHh0LkdFVF9VQ19SRUdTLT5mcHJlZ3MuZnByZWdzWzhdIC0gKHZvaWQgKikmZG15X2N0eHQpCisrI2RlZmluZSBVQ19NQ09OVEVYVF9GUkVHU19SOSAoKHZvaWQgKikmZG15X2N0eHQuR0VUX1VDX1JFR1MtPmZwcmVncy5mcHJlZ3NbOV0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKysjZGVmaW5lIFVDX01DT05URVhUX0ZSRUdTX1IxMCAoKHZvaWQgKikmZG15X2N0eHQuR0VUX1VDX1JFR1MtPmZwcmVncy5mcHJlZ3NbMTBdIC0gKHZvaWQgKikmZG15X2N0eHQpCisrI2RlZmluZSBVQ19NQ09OVEVYVF9GUkVHU19SMTEgKCh2b2lkICopJmRteV9jdHh0LkdFVF9VQ19SRUdTLT5mcHJlZ3MuZnByZWdzWzExXSAtICh2b2lkICopJmRteV9jdHh0KQorKyNkZWZpbmUgVUNfTUNPTlRFWFRfRlJFR1NfUjEyICgodm9pZCAqKSZkbXlfY3R4dC5HRVRfVUNfUkVHUy0+ZnByZWdzLmZwcmVnc1sxMl0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKysjZGVmaW5lIFVDX01DT05URVhUX0ZSRUdTX1IxMyAoKHZvaWQgKikmZG15X2N0eHQuR0VUX1VDX1JFR1MtPmZwcmVncy5mcHJlZ3NbMTNdIC0gKHZvaWQgKikmZG15X2N0eHQpCisrI2RlZmluZSBVQ19NQ09OVEVYVF9GUkVHU19SMTQgKCh2b2lkICopJmRteV9jdHh0LkdFVF9VQ19SRUdTLT5mcHJlZ3MuZnByZWdzWzE0XSAtICh2b2lkICopJmRteV9jdHh0KQorKyNkZWZpbmUgVUNfTUNPTlRFWFRfRlJFR1NfUjE1ICgodm9pZCAqKSZkbXlfY3R4dC5HRVRfVUNfUkVHUy0+ZnByZWdzLmZwcmVnc1sxNV0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKysjZGVmaW5lIFVDX01DT05URVhUX0ZSRUdTX1IxNiAoKHZvaWQgKikmZG15X2N0eHQuR0VUX1VDX1JFR1MtPmZwcmVncy5mcHJlZ3NbMTZdIC0gKHZvaWQgKikmZG15X2N0eHQpCisrI2RlZmluZSBVQ19NQ09OVEVYVF9GUkVHU19SMTcgKCh2b2lkICopJmRteV9jdHh0LkdFVF9VQ19SRUdTLT5mcHJlZ3MuZnByZWdzWzE3XSAtICh2b2lkICopJmRteV9jdHh0KQorKyNkZWZpbmUgVUNfTUNPTlRFWFRfRlJFR1NfUjE4ICgodm9pZCAqKSZkbXlfY3R4dC5HRVRfVUNfUkVHUy0+ZnByZWdzLmZwcmVnc1sxOF0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKysjZGVmaW5lIFVDX01DT05URVhUX0ZSRUdTX1IxOSAoKHZvaWQgKikmZG15X2N0eHQuR0VUX1VDX1JFR1MtPmZwcmVncy5mcHJlZ3NbMTldIC0gKHZvaWQgKikmZG15X2N0eHQpCisrI2RlZmluZSBVQ19NQ09OVEVYVF9GUkVHU19SMjAgKCh2b2lkICopJmRteV9jdHh0LkdFVF9VQ19SRUdTLT5mcHJlZ3MuZnByZWdzWzIwXSAtICh2b2lkICopJmRteV9jdHh0KQorKyNkZWZpbmUgVUNfTUNPTlRFWFRfRlJFR1NfUjIxICgodm9pZCAqKSZkbXlfY3R4dC5HRVRfVUNfUkVHUy0+ZnByZWdzLmZwcmVnc1syMV0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKysjZGVmaW5lIFVDX01DT05URVhUX0ZSRUdTX1IyMiAoKHZvaWQgKikmZG15X2N0eHQuR0VUX1VDX1JFR1MtPmZwcmVncy5mcHJlZ3NbMjJdIC0gKHZvaWQgKikmZG15X2N0eHQpCisrI2RlZmluZSBVQ19NQ09OVEVYVF9GUkVHU19SMjMgKCh2b2lkICopJmRteV9jdHh0LkdFVF9VQ19SRUdTLT5mcHJlZ3MuZnByZWdzWzIzXSAtICh2b2lkICopJmRteV9jdHh0KQorKyNkZWZpbmUgVUNfTUNPTlRFWFRfRlJFR1NfUjI0ICgodm9pZCAqKSZkbXlfY3R4dC5HRVRfVUNfUkVHUy0+ZnByZWdzLmZwcmVnc1syNF0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKysjZGVmaW5lIFVDX01DT05URVhUX0ZSRUdTX1IyNSAoKHZvaWQgKikmZG15X2N0eHQuR0VUX1VDX1JFR1MtPmZwcmVncy5mcHJlZ3NbMjVdIC0gKHZvaWQgKikmZG15X2N0eHQpCisrI2RlZmluZSBVQ19NQ09OVEVYVF9GUkVHU19SMjYgKCh2b2lkICopJmRteV9jdHh0LkdFVF9VQ19SRUdTLT5mcHJlZ3MuZnByZWdzWzI2XSAtICh2b2lkICopJmRteV9jdHh0KQorKyNkZWZpbmUgVUNfTUNPTlRFWFRfRlJFR1NfUjI3ICgodm9pZCAqKSZkbXlfY3R4dC5HRVRfVUNfUkVHUy0+ZnByZWdzLmZwcmVnc1syN10gLSAodm9pZCAqKSZkbXlfY3R4dCkKKysjZGVmaW5lIFVDX01DT05URVhUX0ZSRUdTX1IyOCAoKHZvaWQgKikmZG15X2N0eHQuR0VUX1VDX1JFR1MtPmZwcmVncy5mcHJlZ3NbMjhdIC0gKHZvaWQgKikmZG15X2N0eHQpCisrI2RlZmluZSBVQ19NQ09OVEVYVF9GUkVHU19SMjkgKCh2b2lkICopJmRteV9jdHh0LkdFVF9VQ19SRUdTLT5mcHJlZ3MuZnByZWdzWzI5XSAtICh2b2lkICopJmRteV9jdHh0KQorKyNkZWZpbmUgVUNfTUNPTlRFWFRfRlJFR1NfUjMwICgodm9pZCAqKSZkbXlfY3R4dC5HRVRfVUNfUkVHUy0+ZnByZWdzLmZwcmVnc1szMF0gLSAodm9pZCAqKSZkbXlfY3R4dCkKKysjZGVmaW5lIFVDX01DT05URVhUX0ZSRUdTX1IzMSAoKHZvaWQgKikmZG15X2N0eHQuR0VUX1VDX1JFR1MtPmZwcmVncy5mcHJlZ3NbMzFdIC0gKHZvaWQgKikmZG15X2N0eHQpCisrI2RlZmluZSBVQ19NQ09OVEVYVF9GUkVHU19GUFNDUiAoKHZvaWQgKikmZG15X2N0eHQuR0VUX1VDX1JFR1MtPmZwcmVncy5mcHJlZ3NbMzJdIC0gKHZvaWQgKikmZG15X2N0eHQpCisgCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvc3JjL3B0cmFjZS9fVVBUX3JlZ19vZmZzZXQuYyBiL3NyYy9wdHJhY2UvX1VQVF9yZWdfb2Zmc2V0LmMKK2luZGV4IDY4NDYxYTIuLmZjYzQzZjcgMTAwNjQ0CistLS0gYS9zcmMvcHRyYWNlL19VUFRfcmVnX29mZnNldC5jCisrKysgYi9zcmMvcHRyYWNlL19VUFRfcmVnX29mZnNldC5jCitAQCAtMjcsNiArMjcsMTMgQEAgV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAqLworICNpbmNsdWRlICJfVVBUX2ludGVybmFsLmgiCisgCisgI2luY2x1ZGUgPHN0ZGRlZi5oPgorKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCisrIyBkZWZpbmUgcHRfcmVncyB1YXBpX3B0X3JlZ3MKKysjZW5kaWYKKysjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgorKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCisrIyB1bmRlZiBwdF9yZWdzCisrI2VuZGlmCisgCisgI2lmZGVmIEhBVkVfQVNNX1BUUkFDRV9PRkZTRVRTX0gKKyAjIGluY2x1ZGUgPGFzbS9wdHJhY2Vfb2Zmc2V0cy5oPgorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kLTEuMS8wMDAxLXg4Ni1TdHViLW91dC14ODZfbG9jYWxfcmVzdW1lLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQvMDAwMS14ODYtU3R1Yi1vdXQteDg2X2xvY2FsX3Jlc3VtZS5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQtMS4xLzAwMDEteDg2LVN0dWItb3V0LXg4Nl9sb2NhbF9yZXN1bWUucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kLzAwMDEteDg2LVN0dWItb3V0LXg4Nl9sb2NhbF9yZXN1bWUucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kLTEuMS9BZGQtQU9fUkVRVUlSRV9DQVMtdG8tZml4LWJ1aWxkLW9uLUFSTS12Ni5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kL0FkZC1BT19SRVFVSVJFX0NBUy10by1maXgtYnVpbGQtb24tQVJNLXY2LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC0xLjEvQWRkLUFPX1JFUVVJUkVfQ0FTLXRvLWZpeC1idWlsZC1vbi1BUk0tdjYucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kL0FkZC1BT19SRVFVSVJFX0NBUy10by1maXgtYnVpbGQtb24tQVJNLXY2LnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC9tdXNsLWhlYWRlci1jb25mbGljdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kL211c2wtaGVhZGVyLWNvbmZsaWN0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5ZjYzZmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC9tdXNsLWhlYWRlci1jb25mbGljdC5wYXRjaApAQCAtMCwwICsxLDM3IEBACitJZiB5b3U6CisKK1RDTElCQz1tdXNsIGJpdGJha2UgdW53aW5kCitUQ0xJQkM9bXVzbCBiaXRiYWtlIGdjYy1ydW50aW1lIC1jIGNsZWFuc3N0YXRlCitUQ0xJQkM9bXVzbCBiaXRiYWtlIGdjYy1ydW50aW1lCisKK3lvdSB3aWxsIHNlZSBsaWJzdGRjKysgZmFpbCB0byBidWlsZCBkdWUgdG8gZmluZGluZyBsaWJ1bndpbmQncyBoZWFkZXIgZmlsZS4KKworS2hlbTogIldoZW4gd2UgYnVpbGQgYW55IG9mIGdjYyBjb21wb25lbnRzIHRoZXkgZXhwZWN0IHRvIHVzZSBpbnRlcm5hbCB2ZXJzaW9uIAorYW5kIHRoYXQgd29ya3Mgd2l0aCBnbGliYyBiYXNlZCBnY2Mgc2luY2UgdGhlIHNlYXJjaCBoZWFkZXJzIGZpcnN0IGxvb2sgaW50byBnY2MgCitoZWFkZXJzLCBob3dldmVyIHdpdGggbXVzbCB0aGUgZ2NjIGhlYWRlcnMgYXJlIHNlYXJjaGVkIGFmdGVyIHRoZSBzdGFuZGFyZCAKK2hlYWRlcnMgKCB3aGljaCBpcyBieSBkZXNpZ24gdGhlIHJpZ2h0IHRoaW5nICkuIgorCitUaGlzIHBhdGNoIGhhY2tzIGFyb3VuZCB0aGUgaXNzdWUgYnkgbG9va2luZyBmb3IgYSBkZWZpbmUgdXNlZCBkdXJpbmcgZ2NjLXJ1bnRpbWUncyAKK2J1aWxkIGFuZCBza2lwcGluZyB0byB0aGUgaW50ZXJuYWwgaGVhZGVyIGluIHRoYXQgY2FzZS4KKworW1lPQ1RPICMxMDEyOV0KKworUlAgMjAxNi84LzE4CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbcmVhbGx5IG5lZWQgdG8gZml4IGdjY10KKworSW5kZXg6IGdpdC9pbmNsdWRlL3Vud2luZC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvaW5jbHVkZS91bndpbmQuaAorKysrIGdpdC9pbmNsdWRlL3Vud2luZC5oCitAQCAtMjMsNiArMjMsMTAgQEAgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTAorIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgorIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgKi8KKyAKKysjaWZkZWYgX0dMSUJDWFhfU0hBUkVECisrI2luY2x1ZGVfbmV4dCA8dW53aW5kLmg+CisrI2VuZGlmCisrCisgI2lmbmRlZiBfVU5XSU5EX0gKKyAjZGVmaW5lIF9VTldJTkRfSAorIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmRfMS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmRfMS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZmY4NDA5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kXzEuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLXJlcXVpcmUgbGlidW53aW5kLmluYwotCi1TUkNfVVJJID0gIiR7U0FWQU5OQUhfTk9OR05VX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vU3VwcG9ydC1idWlsZGluZy13aXRoLW9sZGVyLWNvbXBpbGVycy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9BQXJjaDY0LXBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vRml4LXRlc3QtY2FzZS1saW5rLWZhaWx1cmUtb24tUG93ZXJQQy1zeXN0ZW1zLXdpdGgtQWx0aXZlYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9MaW5rLWxpYnVud2luZC10by1saWJnY2Nfcy1yYXRoZXItdGhhbi1saWJnY2MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1JbnZhbGlkLWR3YXJmLW9wY29kZXMtY2FuLWNhdXNlLXJlZmVyZW5jZXMtYmV5b25kLXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0FkZC1BT19SRVFVSVJFX0NBUy10by1maXgtYnVpbGQtb24tQVJNLXY2LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYmFja3RyYWNlLVVzZS1vbmx5LXdpdGgtZ2xpYmMtYW5kLXVjbGliYy5wYXRjaCBcCi0iCi1TUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiXAotICAgICAgICAgICBmaWxlOi8vMDAwMS14ODYtU3R1Yi1vdXQteDg2X2xvY2FsX3Jlc3VtZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWRpc2FibGUtdGVzdHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtb24tbWlwcy1tdXNsLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJmYjRlYTJmNmZiYmU0NWJmMDMyY2QzNmU1ODY4ODNjZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5ZGZlMGZjYWUyYTg2NmRlOWQzOTQyYzY2OTk1ZTRiNDYwMjMwNDQ2ODg3ZGJkYWIzMDJkNDFhOGFlZThkMDlhIgotCi0jIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8yMDQ4Ny8KLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZF9naXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI0OTQzMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kX2dpdC5iYgpAQCAtMCwwICsxLDI5IEBACityZXF1aXJlIGxpYnVud2luZC5pbmMKKworUFYgPSAiMS4xK2dpdCR7U1JDUFZ9IgorCitTUkNSRVYgPSAiYmM4Njk4ZmQ3ZWQxM2E2MjlhOGVjM2NiMmE4OWJkNzRmOWQ4YjVjMCIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQuc3YuZ251Lm9yZy9saWJ1bndpbmQuZ2l0IFwKKyAgICAgICAgICAgZmlsZTovL0FkZC1BT19SRVFVSVJFX0NBUy10by1maXgtYnVpbGQtb24tQVJNLXY2LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYmFja3RyYWNlLVVzZS1vbmx5LXdpdGgtZ2xpYmMtYW5kLXVjbGliYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXg4Ni1TdHViLW91dC14ODZfbG9jYWxfcmVzdW1lLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLW9uLW1pcHMtbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWFkZC1rbm9icy10by1kaXNhYmxlLWVuYWJsZS10ZXN0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBwYzMyLUNvbnNpZGVyLXVjb250ZXh0LW1pc21hdGNoZXMtYmV0d2Vlbi1nbGliYy1hbmQucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovL211c2wtaGVhZGVyLWNvbmZsaWN0LnBhdGNoIgorRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIC0tZGlzYWJsZS1kb2N1bWVudGF0aW9uIC0tZGlzYWJsZS10ZXN0cyAiCisKKyMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzIwNDg3LworQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKKworIyBzZWUgaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTk5ODcKK1NFQ1VSSVRZX0NGTEFHU19yZW1vdmVfYWFyY2g2NCA9ICItZnBpZSIKK1NFQ1VSSVRZX0NGTEFHU19hcHBlbmRfYWFyY2g2NCA9ICIgLWZQSUUiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0xERkxBR1MgKz0gIi1XbCwteixyZWxybywteixub3cgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsZC1pcy1nb2xkJywgJyAtZnVzZS1sZD1iZmQgJywgJycsIGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2xpYnVyY3VfMC45LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidXJjdS9saWJ1cmN1XzAuOS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYWRjMzJmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2xpYnVyY3VfMC45LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1TVU1NQVJZID0gIlVzZXJzcGFjZSBSQ1UgKHJlYWQtY29weS11cGRhdGUpIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vbHR0bmcub3JnL3VyY3UiCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9sdHRuZy5vcmcvcHJvamVjdC9pc3N1ZXMiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjErICYgTUlULXN0eWxlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZTU0OGQyODczNzI4OWQ3NWE4ZjFlMDFiYTJmZDc4MjUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdXJjdS5oO2JlZ2lubGluZT00O2VuZGxpbmU9MzI7bWQ1PTRkZTBkNjhkM2E5OTc2NDM3MTUwMzZkMjIwOWFlMWQ5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3VyY3UvdWF0b21pYy94ODYuaDtiZWdpbmxpbmU9NDtlbmRsaW5lPTIxO21kNT01OGU1MGJiZDhhMmYwNzNiYjU1MDBlNjU1NGFmMGQwYiIKLQotU1JDX1VSSSA9ICIgXAotCWh0dHA6Ly9sdHRuZy5vcmcvZmlsZXMvdXJjdS91c2Vyc3BhY2UtcmN1LSR7UFZ9LnRhci5iejIgXAotCWZpbGU6Ly8wMDAxLVN1cHBvcnQtZm9yLU5JT1MyLWFyY2hpdGVjdHVyZS5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly8wMDAyLVN1cHBvcnQtZm9yLWFhcmNoNjRfYmUucGF0Y2ggXAotCSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjEyNGVhZWVhMDY4NjMyNzFjMGJkZjJhMGNjMWQ4ZTRiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImY4ZDI3OGU5ZDk1YmVjOTdjOWJhOTU0ZmM0YzNmYjU4NDkzNmJjMDAxMDcxM2E4ZmUzNThiOTE2YmFmZDg3MTUiCi0KLVMgPSAiJHtXT1JLRElSfS91c2Vyc3BhY2UtcmN1LSR7UFZ9IgotQ0ZMQUdTX2FwcGVuZF9saWJjLXVjbGliYyA9ICIgLURfR05VX1NPVVJDRSIKLWluaGVyaXQgYXV0b3Rvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidXJjdS9saWJ1cmN1XzAuOS4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVyY3UvbGlidXJjdV8wLjkuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yM2ZiOGM0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVyY3UvbGlidXJjdV8wLjkuMi5iYgpAQCAtMCwwICsxLDIxIEBACitTVU1NQVJZID0gIlVzZXJzcGFjZSBSQ1UgKHJlYWQtY29weS11cGRhdGUpIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vbHR0bmcub3JnL3VyY3UiCitCVUdUUkFDS0VSID0gImh0dHA6Ly9sdHRuZy5vcmcvcHJvamVjdC9pc3N1ZXMiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjErICYgTUlULXN0eWxlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZTU0OGQyODczNzI4OWQ3NWE4ZjFlMDFiYTJmZDc4MjUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdXJjdS5oO2JlZ2lubGluZT00O2VuZGxpbmU9MzI7bWQ1PTRkZTBkNjhkM2E5OTc2NDM3MTUwMzZkMjIwOWFlMWQ5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3VyY3UvdWF0b21pYy94ODYuaDtiZWdpbmxpbmU9NDtlbmRsaW5lPTIxO21kNT01OGU1MGJiZDhhMmYwNzNiYjU1MDBlNjU1NGFmMGQwYiIKKworU1JDX1VSSSA9ICIgXAorCWh0dHA6Ly9sdHRuZy5vcmcvZmlsZXMvdXJjdS91c2Vyc3BhY2UtcmN1LSR7UFZ9LnRhci5iejIgXAorCWZpbGU6Ly8wMDAxLVN1cHBvcnQtZm9yLU5JT1MyLWFyY2hpdGVjdHVyZS5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly8wMDAyLVN1cHBvcnQtZm9yLWFhcmNoNjRfYmUucGF0Y2ggXAorCSIKKworU1JDX1VSSVttZDVzdW1dID0gIjQ5Zjg2ZTY4YzFlMmY0MWQzMDMzODFhMjcxYjc5MWQxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhmN2ZhMzEzYjFlMGEzZjc0MmNlYTI0Y2U2M2EzOWMwZWZlNjNlNjE1YTc2OWUyOTYxZTU1YmQyNjYzZWNhYTMiCisKK1MgPSAiJHtXT1JLRElSfS91c2Vyc3BhY2UtcmN1LSR7UFZ9IgorQ0ZMQUdTX2FwcGVuZF9saWJjLXVjbGliYyA9ICIgLURfR05VX1NPVVJDRSIKK2luaGVyaXQgYXV0b3Rvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0LzAwMDEtVXNlLXBrZy1jb25maWctdG8tZmluZC1nY3J5cHQtYW5kLWxpYnhtbDIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0LzAwMDEtVXNlLXBrZy1jb25maWctdG8tZmluZC1nY3J5cHQtYW5kLWxpYnhtbDIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE4NjcwNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHQvMDAwMS1Vc2UtcGtnLWNvbmZpZy10by1maW5kLWdjcnlwdC1hbmQtbGlieG1sMi5wYXRjaApAQCAtMCwwICsxLDEzMCBAQAorRnJvbSBlZDcxYWM5NTQ4YTJiYjZlY2QyZGM1YWQ4ODBjNjA0OTc1Zjg3MmIwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDIgSnVuIDIwMTYgMTQ6MjA6MDQgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gVXNlIHBrZy1jb25maWcgdG8gZmluZCBnY3J5cHQgYW5kIGxpYnhtbDIuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbbGlieG1sMiBpcyB1cHN0cmVhbWFibGVdCisKK1JQIDIwMTQvNS8yMgorCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5pbiB8IDcwICsrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCA1OCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgoraW5kZXggOGJkZjQ1YS4uMGIyYjMxMiAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5pbgorKysrIGIvY29uZmlndXJlLmluCitAQCAtMzc3LDYgKzM3Nyw4IEBAIEFDX1NVQlNUKHB5dGhvbmRpcikKKyBBQ19TVUJTVChQWVRIT05fU1VCRElSKQorIEFDX1NVQlNUKFBZVEhPTl9MSUJTKQorIAorK1BLR19QUk9HX1BLR19DT05GSUcKKysKKyBBQ19BUkdfV0lUSChjcnlwdG8sIFsgIC0td2l0aC1jcnlwdG8gICAgICAgICAgIEFkZCBjcnlwdG8gc3VwcG9ydCB0byBleHNsdCAob24pXSkKKyBXSVRIX0NSWVBUTz0wCisgQ1JZUFRPX1RFU1RESVI9CitAQCAtMzk0LDI3ICszOTYsMTQgQEAgY2FzZSAkaG9zdCBpbgorICAgICBDUllQVE9fVEVTVERJUj1jcnlwdG8KKyAgICAgOzsKKyAgICopCistICAgIEFDX1BBVEhfVE9PTChMSUJHQ1JZUFRfQ09ORklHLCBsaWJnY3J5cHQtY29uZmlnLCBubykKKy0gICAgaWYgdGVzdCAiJExJQkdDUllQVF9DT05GSUciICE9ICJubyIgOyB0aGVuCistICAgICAgTElCR0NSWVBUX1ZFUlNJT049YCRMSUJHQ1JZUFRfQ09ORklHIC0tdmVyc2lvbmAKKy0gICAgICBpZiB0ZXN0IFZFUlNJT05fVE9fTlVNQkVSKGVjaG8gJExJQkdDUllQVF9WRVJTSU9OKSAtbHQgVkVSU0lPTl9UT19OVU1CRVIoZWNobyAiMS4xLjQyIikKKy0gICAgICB0aGVuCistICAgICAgICBMSUJHQ1JZUFRfQ0ZMQUdTPSIiCistICAgICAgICBMSUJHQ1JZUFRfTElCUz0iIgorLSAgICAgICAgZWNobyAnZ2NyeXB0IGxpYnJhcnkgdmVyc2lvbiA8IDEuMS40MiAtIENyeXB0byBleHRlbnNpb25zIHdpbGwgbm90IGJlIGF2YWlsYWJsZS4nCistICAgICAgZWxzZQorLSAgICAgICAgTElCR0NSWVBUX0NGTEFHUz1gJExJQkdDUllQVF9DT05GSUcgJGxpYmdjcnlwdF9jb25maWdfYXJncyAtLWNmbGFnc2AKKy0gICAgICAgIExJQkdDUllQVF9MSUJTPWAkTElCR0NSWVBUX0NPTkZJRyAkbGliZ2NyeXB0X2NvbmZpZ19hcmdzIC0tbGlic2AKKy0gICAgICAgIEFDX0RFRklORShIQVZFX0dDUllQVCwgMSwgW0RlZmluZSBpZiBnY3J5cHQgbGlicmFyeSBpcyBhdmFpbGFibGUuXSkKKy0gICAgICAgIGVjaG8gJ0NyeXB0byBleHRlbnNpb25zIHdpbGwgYmUgYXZhaWxhYmxlLicKKysgICAgUEtHX0NIRUNLX01PRFVMRVMoTElCR0NSWVBULCBbbGliZ2NyeXB0ID49IDEuMS40Ml0sIFsKKysgICAgICAgICAgQUNfREVGSU5FKEhBVkVfR0NSWVBULCAxLCBbRGVmaW5lIGlmIGdjcnlwdCBsaWJyYXJ5IGlzIGF2YWlsYWJsZS5dKQorKyAgICAgICAgICBlY2hvICdDcnlwdG8gZXh0ZW5zaW9ucyB3aWxsIGJlIGF2YWlsYWJsZS4nCisgICAgICAgICBXSVRIX0NSWVBUTz0xCisgICAgICAgICBDUllQVE9fVEVTVERJUj1jcnlwdG8KKy0gICAgICBmaQorLSAgICBlbHNlCistICAgICAgTElCR0NSWVBUX0NGTEFHUz0iIgorLSAgICAgIExJQkdDUllQVF9MSUJTPSIiCistICAgICAgZWNobyAnQ3J5cHRvIGV4dGVuc2lvbnMgd2lsbCBub3QgYmUgYXZhaWxhYmxlLiBJbnN0YWxsIGxpYmdjcnlwdCBhbmQgcmVjb25maWd1cmUgdG8gbWFrZSBhdmFpbGFibGUuJworLSAgICBmaQorKyAgICAgICBdLCBbCisrICAgICAgICAgIGVjaG8gJ0NyeXB0byBleHRlbnNpb25zIHdpbGwgbm90IGJlIGF2YWlsYWJsZS4gSW5zdGFsbCBsaWJnY3J5cHQgPj0gMS4xLjQyIGFuZCByZWNvbmZpZ3VyZSB0byBtYWtlIGF2YWlsYWJsZS4nCisrICAgICAgICBdKQorIGVzYWMKKyBmaQorIEFDX1NVQlNUKFdJVEhfQ1JZUFRPKQorQEAgLTQ3NiwyNCArNDY1LDggQEAgZG5sIG9yaWdpbmFsIHdvcmsgLSBNYXRoaWV1IExhY2FnZSAzMC8wMy8yMDAwCisgZG5sIHNvbWUgdHdlYWtpbmcgLSBEYXZpZCBIw6RyZGVtYW4gMzAvMTAvMjAwMQorIGRubAorIAorLUxJQlhNTF9DT05GSUdfUFJFRklYPSIiCisgTElCWE1MX1NSQz0iIgorIAorLUFDX0FSR19XSVRIKGxpYnhtbC1wcmVmaXgsCistICAgICAgICBbICAtLXdpdGgtbGlieG1sLXByZWZpeD1bUEZYXQkJU3BlY2lmeSBsb2NhdGlvbiBvZiBsaWJ4bWwgY29uZmlnXSwKKy0JTElCWE1MX0NPTkZJR19QUkVGSVg9JHdpdGh2YWwKKy0pCistICAgICAgICAKKy1BQ19BUkdfV0lUSChsaWJ4bWwtaW5jbHVkZS1wcmVmaXgsCistICAgICAgICBbICAtLXdpdGgtbGlieG1sLWluY2x1ZGUtcHJlZml4PVtQRlhdCVNwZWNpZnkgbG9jYXRpb24gb2YgbGlieG1sIGhlYWRlcnNdLAorLSAgICAgICAgTElCWE1MX0NGTEFHUz0iLUkkd2l0aHZhbCIKKy0pCistCistQUNfQVJHX1dJVEgobGlieG1sLWxpYnMtcHJlZml4LAorLSAgICAgICAgWyAgLS13aXRoLWxpYnhtbC1saWJzLXByZWZpeD1bUEZYXQlTcGVjaWZ5IGxvY2F0aW9uIG9mIGxpYnhtbCBsaWJzXSwKKy0gICAgICAgIExJQlhNTF9MSUJTPSItTCR3aXRodmFsIgorLSkKKy0KKyBBQ19BUkdfV0lUSChsaWJ4bWwtc3JjLAorIAlbICAtLXdpdGgtbGlieG1sLXNyYz1bRElSXSAgICAgICAgICAgICAgRm9yIGxpYnhtbCB0aGF0cyBub3QgaW5zdGFsbGVkIHlldCAoc2V0cyBhbGwgdGhyZWUgYWJvdmUpXSwKKyAJTElCWE1MX1NSQz0iJHdpdGh2YWwiCitAQCAtNTU2LDI4ICs1MjksOSBAQCB0aGVuCisgCWZpCisgZmkKKyAKKy1kbmwKKy1kbmwgbWFrZSBzdXJlIHhtbDItY29uZmlnIGlzIGV4ZWN1dGFibGUsCistZG5sIHRlc3QgdmVyc2lvbiBhbmQgaW5pdCBvdXIgdmFyaWFibGVzCistZG5sCistCistaWYgJHtYTUxfQ09ORklHfSAtLWxpYnMgcHJpbnQgPiAvZGV2L251bGwgMj4mMQorLXRoZW4KKy0JWE1MVkVSUz1gJFhNTF9DT05GSUcgLS12ZXJzaW9uYAorLQlpZiB0ZXN0IFZFUlNJT05fVE9fTlVNQkVSKGVjaG8gJFhNTFZFUlMpIC1nZSBWRVJTSU9OX1RPX05VTUJFUihlY2hvICRMSUJYTUxfUkVRVUlSRURfVkVSU0lPTikKKy0JdGhlbgorLQkJQUNfTVNHX1JFU1VMVCgkWE1MVkVSUyBmb3VuZCkKKy0JZWxzZQorLQkJQUNfTVNHX0VSUk9SKFZlcnNpb24gJFhNTFZFUlMgZm91bmQuIFlvdSBuZWVkIGF0IGxlYXN0IGxpYnhtbDIgJExJQlhNTF9SRVFVSVJFRF9WRVJTSU9OIGZvciB0aGlzIHZlcnNpb24gb2YgbGlieHNsdCkKKy0JZmkKKy0JTElCWE1MX0xJQlM9IiRMSUJYTUxfTElCUyBgJFhNTF9DT05GSUcgLS1saWJzYCIKKy0JaWYgdGVzdCAieCRMSUJYTUxfU1JDIiA9ICJ4IjsgdGhlbgorLQkJTElCWE1MX0NGTEFHUz0iJExJQlhNTF9DRkxBR1MgYCRYTUxfQ09ORklHIC0tY2ZsYWdzYCIKKy0JZmkKKy1lbHNlCistCUFDX01TR19FUlJPUihbQ291bGQgbm90IGZpbmQgbGlieG1sMiBhbnl3aGVyZSwgY2hlY2sgZnRwOi8veG1sc29mdC5vcmcvLl0pCistZmkKKy0KKytQS0dfQ0hFQ0tfTU9EVUxFUyhMSUJYTUwsIFtsaWJ4bWwtMi4wID49ICRMSUJYTUxfUkVRVUlSRURfVkVSU0lPTl0sLAorKyAgICBbQUNfTVNHX0VSUk9SKFtDb3VsZCBub3QgZmluZCBsaWJ4bWwtMi4wID49ICRMSUJYTUxfUkVRVUlSRURfVkVSU0lPTiBhbnl3aGVyZSwgY2hlY2sgZnRwOi8veG1sc29mdC5vcmcvLl0pXQorKykKKyAKKyBBQ19TVUJTVChDRkxBR1MpCisgQUNfU1VCU1QoQ1BQRkxBR1MpCitAQCAtNjAyLDcgKzU1Niw3IEBAIGZpCisgCisgaWYgdGVzdCAiJHdpdGhfcGx1Z2lucyIgPSAieWVzIiA7IHRoZW4KKyAgIEFDX01TR19DSEVDS0lORyhbbGlieG1sMiBtb2R1bGUgc3VwcG9ydF0pCistICBXSVRIX01PRFVMRVM9ImAkWE1MX0NPTkZJRyAtLW1vZHVsZXNgIgorKyAgV0lUSF9NT0RVTEVTPSJgJFBLR19DT05GSUcgLS12YXJpYWJsZT1tb2R1bGVzIGxpYnhtbC0yLjBgIgorICAgaWYgdGVzdCAiJHtXSVRIX01PRFVMRVN9IiA9ICIxIjsgdGhlbgorICAgICBBQ19NU0dfUkVTVUxUKHllcykKKyAgIGVsc2UKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdC9DVkUtMjAxNS03OTk1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdC9DVkUtMjAxNS03OTk1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDExM2VmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHQvQ1ZFLTIwMTUtNzk5NS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZyb20gN2NhMTlkZjg5MmNhMjJkOTMxNGU5NWQ1OWNlMmFiZGVmZjQ2YjYxNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERhbmllbCBWZWlsbGFyZCA8dmVpbGxhcmRAcmVkaGF0LmNvbT4KLURhdGU6IFRodSwgMjkgT2N0IDIwMTUgMTk6MzM6MjMgKzA4MDAKLVN1YmplY3Q6IEZpeCBmb3IgdHlwZSBjb25mdXNpb24gaW4gcHJlcHJvY2Vzc2luZyBhdHRyaWJ1dGVzCi0KLUNWRS0yMDE1LTc5OTUgaHR0cDovL3d3dy5vcGVud2FsbC5jb20vbGlzdHMvb3NzLXNlY3VyaXR5LzIwMTUvMTAvMjcvMTAKLVdlIG5lZWQgdG8gY2hlY2sgdGhhdCB0aGUgcGFyZW50IG5vZGUgaXMgYW4gZWxlbWVudCBiZWZvcmUgZGVyZWZlcmVuY2luZwotaXRzIG5hbWVzcGFjZQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE1LTc5OTUKLQotaHR0cHM6Ly9naXQuZ25vbWUub3JnL2Jyb3dzZS9saWJ4c2x0L2NvbW1pdC8/aWQ9N2NhMTlkZjg5MmNhMjJkOTMxNGU5NWQ1OWNlMmFiZGVmZjQ2YjYxNwotCi1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gbGlieHNsdC9wcmVwcm9jLmMgfCAzICsrLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IGxpYnhzbHQtMS4xLjI4L2xpYnhzbHQvcHJlcHJvYy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGlieHNsdC0xLjEuMjgub3JpZy9saWJ4c2x0L3ByZXByb2MuYwotKysrIGxpYnhzbHQtMS4xLjI4L2xpYnhzbHQvcHJlcHJvYy5jCi1AQCAtMjI0NSw3ICsyMjQ1LDggQEAgeHNsdFN0eWxlUHJlQ29tcHV0ZSh4c2x0U3R5bGVzaGVldFB0ciBzdAotIAl9IGVsc2UgaWYgKElTX1hTTFRfTkFNRShpbnN0LCAiYXR0cmlidXRlIikpIHsKLSAJICAgIHhtbE5vZGVQdHIgcGFyZW50ID0gaW5zdC0+cGFyZW50OwotIAotLQkgICAgaWYgKChwYXJlbnQgPT0gTlVMTCkgfHwgKHBhcmVudC0+bnMgPT0gTlVMTCkgfHwKLSsJICAgIGlmICgocGFyZW50ID09IE5VTEwpIHx8Ci0rCSAgICAgICAgKHBhcmVudC0+dHlwZSAhPSBYTUxfRUxFTUVOVF9OT0RFKSB8fCAocGFyZW50LT5ucyA9PSBOVUxMKSB8fAotIAkJKChwYXJlbnQtPm5zICE9IGluc3QtPm5zKSAmJgotIAkJICgheG1sU3RyRXF1YWwocGFyZW50LT5ucy0+aHJlZiwgaW5zdC0+bnMtPmhyZWYpKSkgfHwKLSAJCSgheG1sU3RyRXF1YWwocGFyZW50LT5uYW1lLCBCQURfQ0FTVCAiYXR0cmlidXRlLXNldCIpKSkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdC9wa2djb25maWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0L3BrZ2NvbmZpZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODlkMTRjOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0L3BrZ2NvbmZpZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExOCArMCwwIEBACi1Vc2UgcGtnLWNvbmZpZyB0byBmaW5kIGdjcnlwdCBhbmQgbGlieG1sMi4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtsaWJ4bWwyIGlzIHVwc3RyZWFtYWJsZV0KLQotUlAgMjAxNC81LzIyCi0KLUluZGV4OiBsaWJ4c2x0LTEuMS4yOC9jb25maWd1cmUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJ4c2x0LTEuMS4yOC5vcmlnL2NvbmZpZ3VyZS5pbgkyMDE0LTA1LTEzIDE2OjQ2OjAyLjI3ODQ3NDk2NyArMDAwMAotKysrIGxpYnhzbHQtMS4xLjI4L2NvbmZpZ3VyZS5pbgkyMDE0LTA1LTEzIDE2OjUzOjU2LjUxMDQ3MjU2MSArMDAwMAotQEAgLTM3Niw2ICszNzYsOCBAQAotIEFDX1NVQlNUKFBZVEhPTl9TVUJESVIpCi0gQUNfU1VCU1QoUFlUSE9OX0xJQlMpCi0gCi0rUEtHX1BST0dfUEtHX0NPTkZJRwotKwotIEFDX0FSR19XSVRIKGNyeXB0bywgWyAgLS13aXRoLWNyeXB0byAgICAgICAgICAgQWRkIGNyeXB0byBzdXBwb3J0IHRvIGV4c2x0IChvbildKQotIFdJVEhfQ1JZUFRPPTAKLSBpZiB0ZXN0ICIkd2l0aF9jcnlwdG8iID0gIm5vIiA7IHRoZW4KLUBAIC0zOTEsMjYgKzM5MywxMyBAQAotICAgICBXSVRIX0NSWVBUTz0xCi0gICAgIDs7Ci0gICAqKQotLSAgICBBQ19QQVRIX1BST0coTElCR0NSWVBUX0NPTkZJRywgbGliZ2NyeXB0LWNvbmZpZywgbm8pCi0tICAgIGlmIHRlc3QgIiRMSUJHQ1JZUFRfQ09ORklHIiAhPSAibm8iIDsgdGhlbgotLSAgICAgIExJQkdDUllQVF9WRVJTSU9OPWAkTElCR0NSWVBUX0NPTkZJRyAtLXZlcnNpb25gCi0tICAgICAgaWYgdGVzdCBWRVJTSU9OX1RPX05VTUJFUihlY2hvICRMSUJHQ1JZUFRfVkVSU0lPTikgLWx0IFZFUlNJT05fVE9fTlVNQkVSKGVjaG8gIjEuMS40MiIpCi0tICAgICAgdGhlbgotLSAgICAgICAgTElCR0NSWVBUX0NGTEFHUz0iIgotLSAgICAgICAgTElCR0NSWVBUX0xJQlM9IiIKLS0gICAgICAgIGVjaG8gJ2djcnlwdCBsaWJyYXJ5IHZlcnNpb24gPCAxLjEuNDIgLSBDcnlwdG8gZXh0ZW5zaW9ucyB3aWxsIG5vdCBiZSBhdmFpbGFibGUuJwotLSAgICAgIGVsc2UKLS0gICAgICAgIExJQkdDUllQVF9DRkxBR1M9YCRMSUJHQ1JZUFRfQ09ORklHICRsaWJnY3J5cHRfY29uZmlnX2FyZ3MgLS1jZmxhZ3NgCi0tICAgICAgICBMSUJHQ1JZUFRfTElCUz1gJExJQkdDUllQVF9DT05GSUcgJGxpYmdjcnlwdF9jb25maWdfYXJncyAtLWxpYnNgCi0tICAgICAgICBBQ19ERUZJTkUoSEFWRV9HQ1JZUFQsIDEsIFtEZWZpbmUgaWYgZ2NyeXB0IGxpYnJhcnkgaXMgYXZhaWxhYmxlLl0pCi0tICAgICAgICBlY2hvICdDcnlwdG8gZXh0ZW5zaW9ucyB3aWxsIGJlIGF2YWlsYWJsZS4nCi0rICAgIFBLR19DSEVDS19NT0RVTEVTKExJQkdDUllQVCwgW2xpYmdjcnlwdCA+PSAxLjEuNDJdLCBbCi0rICAgICAgICAgIEFDX0RFRklORShIQVZFX0dDUllQVCwgMSwgW0RlZmluZSBpZiBnY3J5cHQgbGlicmFyeSBpcyBhdmFpbGFibGUuXSkKLSsgICAgICAgICAgZWNobyAnQ3J5cHRvIGV4dGVuc2lvbnMgd2lsbCBiZSBhdmFpbGFibGUuJwotIAkJV0lUSF9DUllQVE89MQotLSAgICAgIGZpCi0tICAgIGVsc2UKLS0gICAgICBMSUJHQ1JZUFRfQ0ZMQUdTPSIiCi0tICAgICAgTElCR0NSWVBUX0xJQlM9IiIKLS0gICAgICBlY2hvICdDcnlwdG8gZXh0ZW5zaW9ucyB3aWxsIG5vdCBiZSBhdmFpbGFibGUuIEluc3RhbGwgbGliZ2NyeXB0IGFuZCByZWNvbmZpZ3VyZSB0byBtYWtlIGF2YWlsYWJsZS4nCi0tICAgIGZpCi0rCV0sIFsKLSsgICAgICAgICAgZWNobyAnQ3J5cHRvIGV4dGVuc2lvbnMgd2lsbCBub3QgYmUgYXZhaWxhYmxlLiBJbnN0YWxsIGxpYmdjcnlwdCA+PSAxLjEuNDIgYW5kIHJlY29uZmlndXJlIHRvIG1ha2UgYXZhaWxhYmxlLicKLSsgICAgICAgIF0pCi0gZXNhYwotIGZpCi0gQUNfU1VCU1QoV0lUSF9DUllQVE8pCi1AQCAtNDcxLDI0ICs0NjAsOCBAQAotIGRubCBzb21lIHR3ZWFraW5nIC0gRGF2aWQgSMOkcmRlbWFuIDMwLzEwLzIwMDEKLSBkbmwKLSAKLS1MSUJYTUxfQ09ORklHX1BSRUZJWD0iIgotIExJQlhNTF9TUkM9IiIKLSAKLS1BQ19BUkdfV0lUSChsaWJ4bWwtcHJlZml4LAotLSAgICAgICAgWyAgLS13aXRoLWxpYnhtbC1wcmVmaXg9W1BGWF0JCVNwZWNpZnkgbG9jYXRpb24gb2YgbGlieG1sIGNvbmZpZ10sCi0tCUxJQlhNTF9DT05GSUdfUFJFRklYPSR3aXRodmFsCi0tKQotLSAgICAgICAgCi0tQUNfQVJHX1dJVEgobGlieG1sLWluY2x1ZGUtcHJlZml4LAotLSAgICAgICAgWyAgLS13aXRoLWxpYnhtbC1pbmNsdWRlLXByZWZpeD1bUEZYXQlTcGVjaWZ5IGxvY2F0aW9uIG9mIGxpYnhtbCBoZWFkZXJzXSwKLS0gICAgICAgIExJQlhNTF9DRkxBR1M9Ii1JJHdpdGh2YWwiCi0tKQotLQotLUFDX0FSR19XSVRIKGxpYnhtbC1saWJzLXByZWZpeCwKLS0gICAgICAgIFsgIC0td2l0aC1saWJ4bWwtbGlicy1wcmVmaXg9W1BGWF0JU3BlY2lmeSBsb2NhdGlvbiBvZiBsaWJ4bWwgbGlic10sCi0tICAgICAgICBMSUJYTUxfTElCUz0iLUwkd2l0aHZhbCIKLS0pCi0tCi0gQUNfQVJHX1dJVEgobGlieG1sLXNyYywKLSAJWyAgLS13aXRoLWxpYnhtbC1zcmM9W0RJUl0gICAgICAgICAgICAgIEZvciBsaWJ4bWwgdGhhdHMgbm90IGluc3RhbGxlZCB5ZXQgKHNldHMgYWxsIHRocmVlIGFib3ZlKV0sCi0gCUxJQlhNTF9TUkM9IiR3aXRodmFsIgotQEAgLTU1MSwyOCArNTI0LDkgQEAKLSAJZmkKLSBmaQotIAotLWRubAotLWRubCBtYWtlIHN1cmUgeG1sMi1jb25maWcgaXMgZXhlY3V0YWJsZSwKLS1kbmwgdGVzdCB2ZXJzaW9uIGFuZCBpbml0IG91ciB2YXJpYWJsZXMKLS1kbmwKLS0KLS1pZiAke1hNTF9DT05GSUd9IC0tbGlicyBwcmludCA+IC9kZXYvbnVsbCAyPiYxCi0tdGhlbgotLQlYTUxWRVJTPWAkWE1MX0NPTkZJRyAtLXZlcnNpb25gCi0tCWlmIHRlc3QgVkVSU0lPTl9UT19OVU1CRVIoZWNobyAkWE1MVkVSUykgLWdlIFZFUlNJT05fVE9fTlVNQkVSKGVjaG8gJExJQlhNTF9SRVFVSVJFRF9WRVJTSU9OKQotLQl0aGVuCi0tCQlBQ19NU0dfUkVTVUxUKCRYTUxWRVJTIGZvdW5kKQotLQllbHNlCi0tCQlBQ19NU0dfRVJST1IoVmVyc2lvbiAkWE1MVkVSUyBmb3VuZC4gWW91IG5lZWQgYXQgbGVhc3QgbGlieG1sMiAkTElCWE1MX1JFUVVJUkVEX1ZFUlNJT04gZm9yIHRoaXMgdmVyc2lvbiBvZiBsaWJ4c2x0KQotLQlmaQotLQlMSUJYTUxfTElCUz0iJExJQlhNTF9MSUJTIGAkWE1MX0NPTkZJRyAtLWxpYnNgIgotLQlpZiB0ZXN0ICJ4JExJQlhNTF9TUkMiID0gIngiOyB0aGVuCi0tCQlMSUJYTUxfQ0ZMQUdTPSIkTElCWE1MX0NGTEFHUyBgJFhNTF9DT05GSUcgLS1jZmxhZ3NgIgotLQlmaQotLWVsc2UKLS0JQUNfTVNHX0VSUk9SKFtDb3VsZCBub3QgZmluZCBsaWJ4bWwyIGFueXdoZXJlLCBjaGVjayBmdHA6Ly94bWxzb2Z0Lm9yZy8uXSkKLS1maQotLQotK1BLR19DSEVDS19NT0RVTEVTKExJQlhNTCwgW2xpYnhtbC0yLjAgPj0gJExJQlhNTF9SRVFVSVJFRF9WRVJTSU9OXSwsCi0rICAgIFtBQ19NU0dfRVJST1IoW0NvdWxkIG5vdCBmaW5kIGxpYnhtbC0yLjAgPj0gJExJQlhNTF9SRVFVSVJFRF9WRVJTSU9OIGFueXdoZXJlLCBjaGVjayBmdHA6Ly94bWxzb2Z0Lm9yZy8uXSldCi0rKQotIAotIEFDX1NVQlNUKENGTEFHUykKLSBBQ19TVUJTVChDUFBGTEFHUykKLUBAIC01OTcsNyArNTUxLDcgQEAKLSAKLSBpZiB0ZXN0ICIkd2l0aF9wbHVnaW5zIiA9ICJ5ZXMiIDsgdGhlbgotICAgQUNfTVNHX0NIRUNLSU5HKFtsaWJ4bWwyIG1vZHVsZSBzdXBwb3J0XSkKLS0gIFdJVEhfTU9EVUxFUz0iYCRYTUxfQ09ORklHIC0tbW9kdWxlc2AiCi0rICBXSVRIX01PRFVMRVM9ImAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPW1vZHVsZXMgbGlieG1sLTIuMGAiCi0gICBpZiB0ZXN0ICIke1dJVEhfTU9EVUxFU30iID0gIjEiOyB0aGVuCi0gICAgIEFDX01TR19SRVNVTFQoeWVzKQotICAgZWxzZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdF8xLjEuMjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0XzEuMS4yOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjNhYzU5OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0XzEuMS4yOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLVNVTU1BUlkgPSAiR05PTUUgWFNMVCBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL3htbHNvZnQub3JnL1hTTFQvIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ29weXJpZ2h0O21kNT0wY2Q5YTA3YWZiZWIyNDAyNmM5YjAzYWVjZmViYTQ1OCIKLQotU0VDVElPTiA9ICJsaWJzIgotREVQRU5EUyA9ICJsaWJ4bWwyIgotCi1TUkNfVVJJID0gImZ0cDovL3htbHNvZnQub3JnL2xpYnhzbHQvbGlieHNsdC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vcGtnY29uZmlnX2ZpeC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9wa2djb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTUtNzk5NS5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjk2NjdiZjZmOTMxMGI5NTcyNTRmZGNmNjU5NjYwMGI3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVmYzcxNTFhNTdiODljMDNkN2I4MjVkZjVhMGZhZTBhOGQ1ZjA1Njc0YzBlN2NmMjkzN2VjZWM0ZDU0YTAyOGMiCi0KLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gImxpYnhzbHQtKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCi0KLVMgPSAiJHtXT1JLRElSfS9saWJ4c2x0LSR7UFZ9IgotCi1CSU5DT05GSUcgPSAiJHtiaW5kaXJ9L3hzbHQtY29uZmlnIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgYmluY29uZmlnLWRpc2FibGVkIGxpYl9wYWNrYWdlCi0KLSMgV2UgZG9uJ3QgREVQRU5EIG9uIGJpbnV0aWxzIGZvciBhbnNpZGVjbC5oIHNvIGVuc3VyZSB3ZSBkb24ndCB1c2UgdGhlIGhlYWRlcgotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCXNlZCAtaSAtZSAncy9hbnNpZGVjbC5oLy8nICR7U30vY29uZmlndXJlLmluCi0KLQkjIFRoZSB0aW1lc3RhbXBzIGluIHRoZSAxLjEuMjggdGFyYmFsbCBhcmUgbWVzc2VkIHVwIGNhdXNpbmcgdGhpcyBmaWxlIHRvCi0JIyBhcHBlYXIgb3V0IG9mIGRhdGUuICBUb3VjaCBpdCBzbyB0aGF0IHdlIGRvbid0IHRyeSB0byByZWdlbmVyYXRlIGl0LgotCXRvdWNoICR7U30vZG9jL3hzbHRwcm9jLjEKLX0KLQotRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC1weXRob24gLS13aXRob3V0LWRlYnVnIC0td2l0aG91dC1tZW0tZGVidWcgLS13aXRob3V0LWNyeXB0byIKLSMgb2xkZXIgdmVyc2lvbnMgb2YgdGhpcyByZWNpcGUgaGFkICR7UE59LXV0aWxzCi1SUFJPVklERVNfJHtQTn0tYmluICs9ICIke1BOfS11dGlscyIKLVJDT05GTElDVFNfJHtQTn0tYmluICs9ICIke1BOfS11dGlscyIKLVJSRVBMQUNFU18ke1BOfS1iaW4gKz0gIiR7UE59LXV0aWxzIgotCi0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7Ci0gICAgY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0veHNsdHByb2MgWE1MX0NBVEFMT0dfRklMRVM9JHtzeXNjb25mZGlyfS94bWwvY2F0YWxvZy54bWwKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9saWJ4c2x0LXBsdWdpbnMiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS94c2x0Q29uZi5zaCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdF8xLjEuMjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0XzEuMS4yOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTc0N2U2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdF8xLjEuMjkuYmIKQEAgLTAsMCArMSw1MCBAQAorU1VNTUFSWSA9ICJHTk9NRSBYU0xUIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8veG1sc29mdC5vcmcvWFNMVC8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9Db3B5cmlnaHQ7bWQ1PTBjZDlhMDdhZmJlYjI0MDI2YzliMDNhZWNmZWJhNDU4IgorCitTRUNUSU9OID0gImxpYnMiCitERVBFTkRTID0gImxpYnhtbDIiCisKK1NSQ19VUkkgPSAiZnRwOi8veG1sc29mdC5vcmcvbGlieHNsdC9saWJ4c2x0LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9wa2djb25maWdfZml4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXBrZy1jb25maWctdG8tZmluZC1nY3J5cHQtYW5kLWxpYnhtbDIucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhMTI5ZDNjNDRjMDIyZGUzYjlkY2Y2ZDZmMjg4ZDcyZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiNTk3NmUzODU3ODM3ZTc2MTdiMjlmMjI0OWViYjVlZWFjMzRlMjQ5MjA4ZDMxZjFmYmY3YTZiYTdhNDA5MGNlIgorCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJsaWJ4c2x0LSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgorCitTID0gIiR7V09SS0RJUn0vbGlieHNsdC0ke1BWfSIKKworQklOQ09ORklHID0gIiR7YmluZGlyfS94c2x0LWNvbmZpZyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZy1kaXNhYmxlZCBsaWJfcGFja2FnZQorCisjIFdlIGRvbid0IERFUEVORCBvbiBiaW51dGlscyBmb3IgYW5zaWRlY2wuaCBzbyBlbnN1cmUgd2UgZG9uJ3QgdXNlIHRoZSBoZWFkZXIKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwlzZWQgLWkgLWUgJ3MvYW5zaWRlY2wuaC8vJyAke1N9L2NvbmZpZ3VyZS5pbgorCisJIyBUaGUgdGltZXN0YW1wcyBpbiB0aGUgMS4xLjI4IHRhcmJhbGwgYXJlIG1lc3NlZCB1cCBjYXVzaW5nIHRoaXMgZmlsZSB0bworCSMgYXBwZWFyIG91dCBvZiBkYXRlLiAgVG91Y2ggaXQgc28gdGhhdCB3ZSBkb24ndCB0cnkgdG8gcmVnZW5lcmF0ZSBpdC4KKwl0b3VjaCAke1N9L2RvYy94c2x0cHJvYy4xCit9CisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGhvdXQtcHl0aG9uIC0td2l0aG91dC1kZWJ1ZyAtLXdpdGhvdXQtbWVtLWRlYnVnIC0td2l0aG91dC1jcnlwdG8iCisjIG9sZGVyIHZlcnNpb25zIG9mIHRoaXMgcmVjaXBlIGhhZCAke1BOfS11dGlscworUlBST1ZJREVTXyR7UE59LWJpbiArPSAiJHtQTn0tdXRpbHMiCitSQ09ORkxJQ1RTXyR7UE59LWJpbiArPSAiJHtQTn0tdXRpbHMiCitSUkVQTEFDRVNfJHtQTn0tYmluICs9ICIke1BOfS11dGlscyIKKworCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUgKCkgeworICAgIGNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L3hzbHRwcm9jIFhNTF9DQVRBTE9HX0ZJTEVTPSR7c3lzY29uZmRpcn0veG1sL2NhdGFsb2cueG1sCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vbGlieHNsdC1wbHVnaW5zIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0veHNsdENvbmYuc2giCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ5YW1sL2ZpbGVzL2xpYnlhbWwtQ1ZFLTIwMTQtOTEzMC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ5YW1sL2ZpbGVzL2xpYnlhbWwtQ1ZFLTIwMTQtOTEzMC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjFmYTdlNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieWFtbC9maWxlcy9saWJ5YW1sLUNWRS0yMDE0LTkxMzAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0jIEhHIGNoYW5nZXNldCBwYXRjaAotIyBVc2VyIEtpcmlsbCBTaW1vbm92IDx4aUByZXNvbHZlbnQubmV0PgotIyBEYXRlIDE0MTcxOTczMTIgMjE2MDAKLSMgTm9kZSBJRCAyYjkxNTY3NTY0MjNlOTY3Y2ZkMDlhNjFkMTI1ZDg4M2ZjYTZmNGYyCi0jIFBhcmVudCAgMDUzZjUzYTM4MWZmNmFkYmJjOTNhMzFhYjdmZGVlMDZhMTZjOGEzMwotUmVtb3ZlZCBpbnZhbGlkIHNpbXBsZSBrZXkgYXNzZXJ0aW9uICh0aGFuayB0byBKb25hdGhhbiBHcmF5KS4KLQotVGhlIHBhdGNoIGNvbWVzIGZyb20gCi0KLWh0dHBzOi8vYml0YnVja2V0Lm9yZy94aS9saWJ5YW1sL2NvbW1pdHMvMmI5MTU2NzU2NDIzZTk2N2NmZDA5YTYxZDEyNWQ4ODNmY2E2ZjRmMgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE0LTkxMzAKLQotU2lnbmVkLW9mZi1ieTogWXVlIFRhbyA8eXVlLnRhb0B3aW5kcml2ZXIuY29tPgotCi1kaWZmIC1yIDA1M2Y1M2EzODFmZiAtciAyYjkxNTY3NTY0MjMgc3JjL3NjYW5uZXIuYwotLS0tIGEvc3JjL3NjYW5uZXIuYwlXZWQgTWFyIDI2IDEzOjU1OjU0IDIwMTQgLTA1MDAKLSsrKyBiL3NyYy9zY2FubmVyLmMJRnJpIE5vdiAyOCAxMTo1NToxMiAyMDE0IC0wNjAwCi1AQCAtMTEwNiwxMyArMTEwNiw2IEBACi0gICAgICAgICAgICAgJiYgcGFyc2VyLT5pbmRlbnQgPT0gKHB0cmRpZmZfdClwYXJzZXItPm1hcmsuY29sdW1uKTsKLSAKLSAgICAgLyoKLS0gICAgICogQSBzaW1wbGUga2V5IGlzIHJlcXVpcmVkIG9ubHkgd2hlbiBpdCBpcyB0aGUgZmlyc3QgdG9rZW4gaW4gdGhlIGN1cnJlbnQKLS0gICAgICogbGluZS4gIFRoZXJlZm9yZSBpdCBpcyBhbHdheXMgYWxsb3dlZC4gIEJ1dCB3ZSBhZGQgYSBjaGVjayBhbnl3YXkuCi0tICAgICAqLwotLQotLSAgICBhc3NlcnQocGFyc2VyLT5zaW1wbGVfa2V5X2FsbG93ZWQgfHwgIXJlcXVpcmVkKTsgICAgLyogSW1wb3NzaWJsZS4gKi8KLS0KLS0gICAgLyoKLSAgICAgICogSWYgdGhlIGN1cnJlbnQgcG9zaXRpb24gbWF5IHN0YXJ0IGEgc2ltcGxlIGtleSwgc2F2ZSBpdC4KLSAgICAgICovCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieWFtbC9saWJ5YW1sXzAuMS42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnlhbWwvbGlieWFtbF8wLjEuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjAxNTU3Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieWFtbC9saWJ5YW1sXzAuMS42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJZQU1MIGlzIGEgWUFNTCAxLjEgcGFyc2VyIGFuZCBlbWl0dGVyIHdyaXR0ZW4gaW4gQy4iCi1ERVNDUklQVElPTiA9ICJMaWJZQU1MIGlzIGEgQyBsaWJyYXJ5IGZvciBwYXJzaW5nIGFuZCBlbWl0dGluZyBkYXRhIGluIFlBTUwgMS4xLCBcCi1hIGh1bWFuLXJlYWRhYmxlIGRhdGEgc2VyaWFsaXphdGlvbiBmb3JtYXQuICIKLUhPTUVQQUdFID0gImh0dHA6Ly9weXlhbWwub3JnL3dpa2kvTGliWUFNTCIKLVNFQ1RJT04gPSAibGlicy9kZXZlbCIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02MDE1ZjA4ODc1OWIxMGUwYmMyYmY2NDg5OGQ0YWUxNyIKLQotU1JDX1VSSSA9ICJodHRwOi8vcHl5YW1sLm9yZy9kb3dubG9hZC9saWJ5YW1sL3lhbWwtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2xpYnlhbWwtQ1ZFLTIwMTQtOTEzMC5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNWZlMDBjZGExOGNhNWRhZWI0Mzc2MmI4MGMzOGUwNmUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2RhNjk3MWI0YmQwOGE5ODZkZDJhNjEzNTNiYzQyMjM2MmJkMGVkY2M2N2Q3ZWJhYWM2OGM5NWY3NDE4Mjc0OSIKLQotUyA9ICIke1dPUktESVJ9L3lhbWwtJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnlhbWwvbGlieWFtbF8wLjEuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ5YW1sL2xpYnlhbWxfMC4xLjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWM0MjJlZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ5YW1sL2xpYnlhbWxfMC4xLjcuYmIKQEAgLTAsMCArMSwyMCBAQAorU1VNTUFSWSA9ICJMaWJZQU1MIGlzIGEgWUFNTCAxLjEgcGFyc2VyIGFuZCBlbWl0dGVyIHdyaXR0ZW4gaW4gQy4iCitERVNDUklQVElPTiA9ICJMaWJZQU1MIGlzIGEgQyBsaWJyYXJ5IGZvciBwYXJzaW5nIGFuZCBlbWl0dGluZyBkYXRhIGluIFlBTUwgMS4xLCBcCithIGh1bWFuLXJlYWRhYmxlIGRhdGEgc2VyaWFsaXphdGlvbiBmb3JtYXQuICIKK0hPTUVQQUdFID0gImh0dHA6Ly9weXlhbWwub3JnL3dpa2kvTGliWUFNTCIKK1NFQ1RJT04gPSAibGlicy9kZXZlbCIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02MDE1ZjA4ODc1OWIxMGUwYmMyYmY2NDg5OGQ0YWUxNyIKKworU1JDX1VSSSA9ICJodHRwOi8vcHl5YW1sLm9yZy9kb3dubG9hZC9saWJ5YW1sL3lhbWwtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxYWJmNDViZDNhOTYzNzRmYTU1Y2E2M2IzMmY5ZjJmOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4MDg4ZTQ1NzI2NGE5OGJhNDUxYTkwYjg2NjFmY2I0ZjlkNmY0NzhmNzI2NWQ0ODMyMmExOTZjZWMyNDgwNzI5IgorCitTID0gIiR7V09SS0RJUn0veWFtbC0ke1BWfSIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbHpvL2x6by9ydW4tcHRlc3QgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbHpvL2x6by9ydW4tcHRlc3QKaW5kZXggMmVhNzc0NS4uNmFjYjg5ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6by9sem8vcnVuLXB0ZXN0CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sem8vbHpvL3J1bi1wdGVzdApAQCAtMSw4ICsxLDMzIEBACiAjIS9iaW4vc2gKIAogLi9sem90ZXN0IC1tYXZhaWwgLW4xMCAtcSAvZXRjL3NlcnZpY2VzCitpZiBbICQ/IC1lcSAwIF07IHRoZW4KKyAgZWNobyAnUEFTUzogbHpvdGVzdCcKK2Vsc2UKKyAgZWNobyAnRkFJTDogbHpvdGVzdCcKK2ZpCiBMWk9URVNUPS4vbHpvdGVzdCAvYmluL3NoIC1lICIuL2NoZWNrLnNoIiAiL2V0YyIKIC4vYWxpZ24KK2lmIFsgJD8gLWVxIDAgXTsgdGhlbgorICBlY2hvICdQQVNTOiBhbGlnbicKK2Vsc2UKKyAgZWNobyAnRkFJTDogYWxpZ24nCitmaQogLi9jaGtzdW0KK2lmIFsgJD8gLWVxIDAgXTsgdGhlbgorICBlY2hvICdQQVNTOiBjaGtzdW0nCitlbHNlCisgIGVjaG8gJ0ZBSUw6IGNoa3N1bScKK2ZpCiAuL3NpbXBsZQoraWYgWyAkPyAtZXEgMCBdOyB0aGVuCisgIGVjaG8gJ1BBU1M6IHNpbXBsZScKK2Vsc2UKKyAgZWNobyAnRkFJTDogc2ltcGxlJworZmkKIC4vdGVzdG1pbmkKK2lmIFsgJD8gLWVxIDAgXTsgdGhlbgorICBlY2hvICdQQVNTOiB0ZXN0bWluaScKK2Vsc2UKKyAgZWNobyAnRkFJTDogdGVzdG1pbmknCitmaQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6b3AvbHpvcC9sem9wLTEuMDMtZ2NjNi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sem9wL2x6b3AvbHpvcC0xLjAzLWdjYzYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJiMzM5NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sem9wL2x6b3AvbHpvcC0xLjAzLWdjYzYucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorZ2NjLTYgaGFzIGFkZGl0aW9uYWwgZXJyb3JzIGUuZy4KKworLi90ZXN0LmM6MToxMjogZXJyb3I6IHZhcmlhYmx5IG1vZGlmaWVkICdfX2FjY19jdGEnIGF0IGZpbGUgc2NvcGUKKyBleHRlcm4gaW50IF9fYWNjX2N0YVsxLTIqISgoMWwgPDwgKDgqOCAtMSkpIDwgMCldOworICAgICAgICAgICAgXn5+fn5+fn5+CisKK1RoaXMgaXMgcmlnaHRseSBwb2ludGVkIG91dCBzaW5jZSB0aGF0IGluZGV4IGlzIHVuZGVmaW5lZAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKy0tLSBhL3NyYy9taW5pYWNjLmgub3JpZwkyMDE2LTAyLTEwIDE2OjA5OjIzLjI0NzMxNTg2NiArMDEwMAorKysrIGEvc3JjL21pbmlhY2MuaAkyMDE2LTAyLTEwIDE2OjEyOjE0Ljk3MzI5NzA1NCArMDEwMAorQEAgLTQ0NjksMTIgKzQ0NjksMTIgQEAKKyAjaWYgZGVmaW5lZChfX01TRE9TX18pICYmIGRlZmluZWQoX19UVVJCT0NfXykgJiYgKF9fVFVSQk9DX18gPCAweDAxNTApCisgI2VsaWYgMSAmJiAoQUNDX0NDX1NVTlBST0MpICYmICFkZWZpbmVkKEFDQ0NIS19DRkdfUEVEQU5USUMpCisgI2Vsc2UKKy0gICAgQUNDQ0hLX0FTU0VSVCgoMSAgIDw8ICg4KlNJWkVPRl9JTlQtMSkpIDwgMCkKKysgICAgQUNDQ0hLX0FTU0VSVCgoaW50KSgxdSAgIDw8ICg4KlNJWkVPRl9JTlQtMSkpIDwgMCkKKyAjZW5kaWYKKyAgICAgQUNDQ0hLX0FTU0VSVCgoMXUgIDw8ICg4KlNJWkVPRl9JTlQtMSkpID4gMCkKKyAjaWYgMSAmJiAoQUNDX0NDX1NVTlBST0MpICYmICFkZWZpbmVkKEFDQ0NIS19DRkdfUEVEQU5USUMpCisgI2Vsc2UKKy0gICAgQUNDQ0hLX0FTU0VSVCgoMWwgIDw8ICg4KlNJWkVPRl9MT05HLTEpKSA8IDApCisrICAgIEFDQ0NIS19BU1NFUlQoKGxvbmcpKDF1bCAgPDwgKDgqU0laRU9GX0xPTkctMSkpIDwgMCkKKyAjZW5kaWYKKyAgICAgQUNDQ0hLX0FTU0VSVCgoMXVsIDw8ICg4KlNJWkVPRl9MT05HLTEpKSA+IDApCisgI2lmIGRlZmluZWQoYWNjX2ludDE2ZV90KQorQEAgLTQ3MDMsNyArNDcwMyw3IEBACisgI2VsaWYgMSAmJiAoQUNDX0NDX0xDQyB8fCBBQ0NfQ0NfTENDV0lOMzIpICYmICFkZWZpbmVkKEFDQ0NIS19DRkdfUEVEQU5USUMpCisgI2VsaWYgMSAmJiAoQUNDX0NDX1NVTlBST0MpICYmICFkZWZpbmVkKEFDQ0NIS19DRkdfUEVEQU5USUMpCisgI2VsaWYgIShBQ0NfQlJPS0VOX0lOVEVHUkFMX1BST01PVElPTikgJiYgKFNJWkVPRl9JTlQgPiAxKQorLSAgICBBQ0NDSEtfQVNTRVJUKCAoKCh1bnNpZ25lZCBjaGFyKTEyOCkgPDwgKGludCkoOCpzaXplb2YoaW50KS04KSkgPCAwKQorKyAgICBBQ0NDSEtfQVNTRVJUKCAoaW50KSgodW5zaWduZWQgaW50KSgodW5zaWduZWQgY2hhcikxMjgpIDw8IChpbnQpKDgqc2l6ZW9mKGludCktOCkpIDwgMCkKKyAjZW5kaWYKKyAjaWYgKEFDQ19DQ19CT1JMQU5EQyAmJiAoX19CT1JMQU5EQ19fID49IDB4MDUzMCkgJiYgKF9fQk9STEFORENfXyA8IDB4MDU2MCkpCisgIyAgcHJhZ21hIG9wdGlvbiBwb3AKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sem9wL2x6b3BfMS4wMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sem9wL2x6b3BfMS4wMy5iYgppbmRleCAwN2Q2Mjg5Li42NDllNzI0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbHpvcC9sem9wXzEuMDMuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6b3AvbHpvcF8xLjAzLmJiCkBAIC0xNSwxNSArMTUsMTUgQEAKICAgICAgICAgICAgZmlsZTovL2FjaW5jbHVkZS5tNCBcCiAgICAgICAgICAgIGZpbGU6Ly94MzJfYWJpX21pbmlhY2NfaC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXVzZS1zdGF0aWMtaW5saW5lcy1hcy10aGUtZXh0ZXJuYWwtaW5saW5lLWRlZmluaXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbHpvcC0xLjAzLWdjYzYucGF0Y2ggXAogICAgICAgICAgICIKIFNSQ19VUklbbWQ1c3VtXSA9ICIwMDZjNWUyN2ZiNzhjZGQxNGE2MjhmZGZhNWFhMTkwNSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJjMTQyNWI4Yzc3ZDQ5ZjVhNjc5ZDVhMTI2YzkwZWE2YWQ5OTU4NWE1NWUzMzVhNjEzY2FlNTllOTA5ZGJiMmM5IgogCiBpbmhlcml0IGF1dG90b29scwogCi1kb19jb25maWd1cmUgKCkgewotICAgIGxuIC1zZiAgLi4vYWNpbmNsdWRlLm00ICR7U30vYWNpbmNsdWRlLm00Ci0gICAgYXV0b3Rvb2xzX2RvX2NvbmZpZ3VyZQorZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworICAgIGluc3RhbGwgLURtIDA2NDQgJHtXT1JLRElSfS9hY2luY2x1ZGUubTQgJHtTfS9hY2luY2x1ZGUubTQKIH0KIAogQkJDTEFTU0VYVEVORCArPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9tcGZyL21wZnItMy4xLjMvbG9uZy1sb25nLXRodW1iLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L21wZnIvbXBmci9sb25nLWxvbmctdGh1bWIucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9tcGZyL21wZnItMy4xLjMvbG9uZy1sb25nLXRodW1iLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbXBmci9tcGZyL2xvbmctbG9uZy10aHVtYi5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L21wZnIvbXBmcl8zLjEuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9tcGZyL21wZnJfMy4xLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlOGEyMzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L21wZnIvbXBmcl8zLjEuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLXJlcXVpcmUgbXBmci5pbmMKLQotTElDRU5TRSA9ICJHUEx2MyAmIExHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLQkJICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjYiCi1ERVBFTkRTID0gImdtcCIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm1wZnIub3JnL21wZnItJHtQVn0vbXBmci0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vbG9uZy1sb25nLXRodW1iLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNjk2OTM5OGNkMmZiYzU2YTZhZjU3MGI1MjczYzU2YTkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjgzNWEwOGJkOTkyYzgyNTc2NDE3OTFlOWE2YTJiMzViMDIzMzZjOGRlMjZkMGE4NTc3OTUzNzQ3ZTUxNGExNiIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly93d3cubXBmci5vcmcvbXBmci1jdXJyZW50LyIKLQotUyA9ICIke1dPUktESVJ9L21wZnItJHtQVn0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9tcGZyL21wZnJfMy4xLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbXBmci9tcGZyXzMuMS40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzMGE4NjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbXBmci9tcGZyXzMuMS40LmJiCkBAIC0wLDAgKzEsMTggQEAKK3JlcXVpcmUgbXBmci5pbmMKKworTElDRU5TRSA9ICJHUEx2MyAmIExHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKwkJICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjYiCitERVBFTkRTID0gImdtcCIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm1wZnIub3JnL21wZnItJHtQVn0vbXBmci0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vbG9uZy1sb25nLXRodW1iLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjA2NGIyYzE4MTg1MDM4ZTQwNGE0MDFiODMwZDU5YmU4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc2MTQxM2IxNmQ3NDljNTNlMmJmZDJiMWRmYWEzYjAyN2IwZTc5M2U0MDRiOTBiNWZiYWVlZjYwYWY2NTE3ZjUiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vd3d3Lm1wZnIub3JnL21wZnItY3VycmVudC8iCisKK1MgPSAiJHtXT1JLRElSfS9tcGZyLSR7UFZ9IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL25ldHRsZV8yLjcuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlXzIuNy4xLmJiCmluZGV4IGQ0ZGYwYTMuLmFlOGUzMTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlXzIuNy4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlXzIuNy4xLmJiCkBAIC0xLDYgKzEsNiBAQAogcmVxdWlyZSBuZXR0bGUuaW5jCiAKLUxJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MiIKK0xJQ0VOU0UgPSAiTEdQTHYyLjErICYgR1BMdjIiCiBMSUNFTlNFXyR7UE59ID0gIkxHUEx2Mi4xKyIKIAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ucHRoL25wdGhfMS4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25wdGgvbnB0aF8xLjIuYmIKaW5kZXggMWIzOTYyZS4uNjZhYTM0NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25wdGgvbnB0aF8xLjIuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25wdGgvbnB0aF8xLjIuYmIKQEAgLTYsNyArNiw4IEBACiAgICAgZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlXAogICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjZcCiAgICAgIgotU1JDX1VSSSA9ICJmdHA6Ly9mdHAuZ251cGcub3JnL2djcnlwdC9ucHRoL25wdGgtJHtQVn0udGFyLmJ6MiBcCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKK1NSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9L25wdGgvbnB0aC0ke1BWfS50YXIuYnoyIFwKICAgICAgICAgICAgZmlsZTovL3BrZ2NvbmZpZy5wYXRjaCBcCiAgICAgICAgICAgIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByXzQuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByXzQuMTIuYmIKaW5kZXggMTY4MzQxYi4uZmE2ZDUyMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwcl80LjEyLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHJfNC4xMi5iYgpAQCAtMTQ3LDYgKzE0Nyw5IEBACiAKIGluaGVyaXQgYXV0b3Rvb2xzCiAKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCAnaXB2NicsICcnLCBkKX0iCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgorCiBkb19jb21waWxlX3ByZXBlbmQoKSB7CiAJb2VfcnVubWFrZSBDUk9TU19DT01QSUxFPTEgQ0ZMQUdTPSItRFhQX1VOSVgiIExERkxBR1M9IiIgQ0M9Z2NjIC1DIGNvbmZpZyBleHBvcnQKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzLzAwMDEtRml4LWJ1aWxkLWZhaWx1cmUtb24tb3BlbnN1c2UtMTMuMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzLzAwMDEtRml4LWJ1aWxkLWZhaWx1cmUtb24tb3BlbnN1c2UtMTMuMS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2IzYWQwMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy8wMDAxLUZpeC1idWlsZC1mYWlsdXJlLW9uLW9wZW5zdXNlLTEzLjEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1Gcm9tIDg3NThjNmE0NTA4YTVjYTAxNTA1YThkNjlhMjY5YzkxMmNlMTBiZWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMTggSmFuIDIwMTYgMTg6MjY6MTYgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIGZhaWx1cmUgb24gb3BlbnN1c2UgMTMuMQotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2djYyA0Ljggc3BlY2lmaWMgaXNzdWVdCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLS0tLQotIG5zcy9jbWQvbW9kdXRpbC9pbnN0YWxsLWRzLmggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9uc3MvY21kL21vZHV0aWwvaW5zdGFsbC1kcy5oIGIvbnNzL2NtZC9tb2R1dGlsL2luc3RhbGwtZHMuaAotaW5kZXggM2EzYWZiMy4uNDMzZWZlMCAxMDA2NDQKLS0tLSBhL25zcy9jbWQvbW9kdXRpbC9pbnN0YWxsLWRzLmgKLSsrKyBiL25zcy9jbWQvbW9kdXRpbC9pbnN0YWxsLWRzLmgKLUBAIC0yNDMsNyArMjQzLDcgQEAgc3RydWN0IFBrMTFJbnN0YWxsX0luZm9fc3RyIHsKLSBQazExSW5zdGFsbF9JbmZvKgotIFBrMTFJbnN0YWxsX0luZm9fbmV3KCk7Ci0gdm9pZAotLVBrMTFJbnN0YWxsX0luZm9faW5pdCgpOwotK1BrMTFJbnN0YWxsX0luZm9faW5pdChQazExSW5zdGFsbF9JbmZvKiBfdGhpcyk7Ci0gdm9pZAotIFBrMTFJbnN0YWxsX0luZm9fZGVsZXRlKFBrMTFJbnN0YWxsX0luZm8qIF90aGlzKTsKLSAvKi8vIFJldHVybnMgTlVMTCBmb3Igc3VjY2VzcywgZXJyb3IgbWVzc2FnZSBpZiBwYXJzZSBlcnJvci4qLwotLS0gCi0xLjguNC41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL2Rpc2FibGUtV3ZhcmFyZ3Mtd2l0aC1jbGFuZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL2Rpc2FibGUtV3ZhcmFyZ3Mtd2l0aC1jbGFuZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NmIxYjYwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvZGlzYWJsZS1XdmFyYXJncy13aXRoLWNsYW5nLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK2NsYW5nIDMuOSBhZGQgdGhpcyB3YXJuaW5nIHRvIHJpZ2h0bHkgZmxhZyB1bmRlZmluZWQKK2JlaGF2aW9yLCB3ZSByZWxlZ2F0ZSB0aGlzIHRvIGJlIGp1c3QgYSB3YXJuaW5nIGluc3RlYWQKK29mIGVycm9yIGFuZCBrZWVwIHRoZSBiZWhhdmlvciBhcyBpdCB3YXMuIFJpZ2h0IGZpeCB3b3VsZAorYmUgdG8gbm90IHBhc3MgZW51bSB0byB0aGUgZnVuY3Rpb24gd2l0aCB2YXJpYWRpYyBhcmd1bWVudHMKK2FzIGxhc3QgbmFtZWQgYXJndW1lbnQKKworRml4ZXMgZXJyb3JzIGxpa2UKK29jc3AuYzoyMjIwOjIyOiBlcnJvcjogcGFzc2luZyBhbiBvYmplY3QgdGhhdCB1bmRlcmdvZXMgZGVmYXVsdCBhcmd1bWVudCBwcm9tb3Rpb24gdG8gJ3ZhX3N0YXJ0JyBoYXMgdW5kZWZpbmVkIGJlaGF2aW9yIFstV2Vycm9yLC1XdmFyYXJnc10KKyAgICAgICAgdmFfc3RhcnQoYXAsIHJlc3BvbnNlVHlwZTApOworICAgICAgICAgICAgICAgICAgICAgXgorb2NzcC5jOjIyMDA6NDM6IG5vdGU6IHBhcmFtZXRlciBvZiB0eXBlICdTRUNPaWRUYWcnIGlzIGRlY2xhcmVkIGhlcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VDT2lkVGFnIHJlc3BvbnNlVHlwZTAsIC4uLikKKworc2VlCitodHRwczovL3d3dy5zZWN1cmVjb2RpbmcuY2VydC5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L2NwbHVzcGx1cy9FWFA1OC1DUFAuK1Bhc3MrYW4rb2JqZWN0K29mK3RoZStjb3JyZWN0K3R5cGUrdG8rdmFfc3RhcnQKK2ZvciBtb3JlIGRldGFpbHMKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitJbmRleDogbnNzLTMuMjQvbnNzL2NvcmVjb25mL1dlcnJvci5taworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG5zcy0zLjI0Lm9yaWcvbnNzL2NvcmVjb25mL1dlcnJvci5taworKysrIG5zcy0zLjI0L25zcy9jb3JlY29uZi9XZXJyb3IubWsKK0BAIC01NCw3ICs1NCw3IEBAIGlmbmRlZiBXQVJOSU5HX0NGTEFHUworICAgICBpZmRlZiBDQ19JU19DTEFORworICAgICAgICMgLVF1bnVzZWQtYXJndW1lbnRzIDogY2xhbmcgb2JqZWN0cyB0byBhcmd1bWVudHMgdGhhdCBpdCBkb2Vzbid0IHVuZGVyc3RhbmQKKyAgICAgICAjICAgIGFuZCBmaXhpbmcgdGhpcyB3b3VsZCByZXF1aXJlIHJlYXJjaGl0ZWN0dXJlCistICAgICAgV0FSTklOR19DRkxBR1MgKz0gLVF1bnVzZWQtYXJndW1lbnRzCisrICAgICAgV0FSTklOR19DRkxBR1MgKz0gLVF1bnVzZWQtYXJndW1lbnRzIC1Xbm8tZXJyb3I9dmFyYXJncworICAgICAgICMgLVduby1wYXJlbnRoZXNlcy1lcXVhbGl0eSA6IGJlY2F1c2UgY2xhbmcgd2FybnMgYWJvdXQgbWFjcm8gZXhwYW5zaW9ucworICAgICAgIFdBUk5JTkdfQ0ZMQUdTICs9ICQoY2FsbCBkaXNhYmxlX3dhcm5pbmcscGFyZW50aGVzZXMtZXF1YWxpdHkpCisgICAgICAgaWZkZWYgQlVJTERfT1BUCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9uc3MtZml4LW5zaW5zdGFsbC1idWlsZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy1maXgtbnNpbnN0YWxsLWJ1aWxkLnBhdGNoCmluZGV4IDg2NmRlMDcuLjE4MWM2OWEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy1maXgtbnNpbnN0YWxsLWJ1aWxkLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy1maXgtbnNpbnN0YWxsLWJ1aWxkLnBhdGNoCkBAIC0xNiwxMSArMTYsMTEgQEAKIAogU2lnbmVkLW9mZi1ieTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLWRpZmYgLS1naXQgYS9uc3MvY29yZWNvbmYvbnNpbnN0YWxsL01ha2VmaWxlIGIvbnNzL2NvcmVjb25mL25zaW5zdGFsbC9NYWtlZmlsZQotaW5kZXggMTg1MGJjYi4uNWFlZTg0ZiAxMDA2NDQKLS0tLSBhL25zcy9jb3JlY29uZi9uc2luc3RhbGwvTWFrZWZpbGUKLSsrKyBiL25zcy9jb3JlY29uZi9uc2luc3RhbGwvTWFrZWZpbGUKLUBAIC0xOCw2ICsxOCwxMiBAQCBJTlRFUk5BTF9UT09MUyAgPSAxCitJbmRleDogbnNzLTMuMjQvbnNzL2NvcmVjb25mL25zaW5zdGFsbC9NYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG5zcy0zLjI0Lm9yaWcvbnNzL2NvcmVjb25mL25zaW5zdGFsbC9NYWtlZmlsZQorKysrIG5zcy0zLjI0L25zcy9jb3JlY29uZi9uc2luc3RhbGwvTWFrZWZpbGUKK0BAIC0xOCw2ICsxOCwxMyBAQCBJTlRFUk5BTF9UT09MUyAgPSAxCiAgCiAgaW5jbHVkZSAkKERFUFRIKS9jb3JlY29uZi9jb25maWcubWsKICAKQEAgLTI5LDYgKzI5LDcgQEAKICsjIHRvIGNsZWFuIHRoZSAnLW02NCcgZnJvbSBBUkNIRkxBRyBhbmQgTERGTEFHUy4KICtBUkNIRkxBRyA9CiArTERGTEFHUyA9CisrQ0ZMQUdTID0KICsKICBpZmVxICgsJChmaWx0ZXItb3V0IE9TMiBXSU4lLCQoT1NfVEFSR0VUKSkpCiAgUFJPR1JBTQkJPQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvcHFnLmMtVUxMX2FkZGVuZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL3BxZy5jLVVMTF9hZGRlbmQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNhYWFlYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL3BxZy5jLVVMTF9hZGRlbmQucGF0Y2gKQEAgLTAsMCArMSwyMyBAQAorbnNzIGRvZXMgbm90IGJ1aWxkIG9uIG1pcHMgd2l0aCBjbGFuZyBiZWNhdXNlIHdyb25nIHR5cGVzIGFyZSB1c2VkPworCitwcWcuYzozMzk6MTY6IGVycm9yOiBjb21wYXJpc29uIG9mIGNvbnN0YW50IDE4NDQ2NzQ0MDczNzA5NTUxNjE1IHdpdGggZXhwcmVzc2lvbiBvZiB0eXBlICd1bnNpZ25lZCBsb25nJyBpcyBhbHdheXMgdHJ1ZSBbLVdlcnJvciwtV3RhdXRvbG9naWNhbC1jb25zdGFudC1vdXQtb2YtcmFuZ2UtY29tcGFyZV0KKyAgICAgaWYgKGFkZGVuZCA8IE1QX0RJR0lUX01BWCkgeworICAgICAgIH5+fn5+fiBeIH5+fn5+fn5+fn5+fgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitJbmRleDogbnNzLTMuMjQvbnNzL2xpYi9mcmVlYmwvcHFnLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBuc3MtMy4yNC5vcmlnL25zcy9saWIvZnJlZWJsL3BxZy5jCisrKysgbnNzLTMuMjQvbnNzL2xpYi9mcmVlYmwvcHFnLmMKK0BAIC0zMjIsOCArMzIyLDggQEAgZ2VuZXJhdGVfaF9jYW5kaWRhdGUoU0VDSXRlbSAqaGl0LCBtcF9pbgorIAorIHN0YXRpYyBTRUNTdGF0dXMKKyBhZGRUb1NlZWQoY29uc3QgU0VDSXRlbSAqIHNlZWQsCistICAgICAgICAgIHVuc2lnbmVkIGxvbmcgICBhZGRlbmQsCistICAgICAgICAgIGludCAgICAgICAgICAgICBzZWVkbGVuLCAvKiBnIGluIDE4Ni0xICovCisrICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyAgYWRkZW5kLAorKyAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgIHNlZWRsZW4sIC8qIGcgaW4gMTg2LTEgKi8KKyAgICAgICAgICAgU0VDSXRlbSAqIHNlZWRvdXQpCisgeworICAgICBtcF9pbnQgcywgc3VtLCBtb2R1bHVzLCB0bXA7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zc18zLjIxLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3NfMy4yMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDJlMjQxMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zc18zLjIxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjQwICswLDAgQEAKLVNVTU1BUlkgPSAiTW96aWxsYSdzIFNTTCBhbmQgVExTIGltcGxlbWVudGF0aW9uIgotREVTQ1JJUFRJT04gPSAiTmV0d29yayBTZWN1cml0eSBTZXJ2aWNlcyAoTlNTKSBpcyBhIHNldCBvZiBsaWJyYXJpZXMgXAotZGVzaWduZWQgdG8gc3VwcG9ydCBjcm9zcy1wbGF0Zm9ybSBkZXZlbG9wbWVudCBvZiBcCi1zZWN1cml0eS1lbmFibGVkIGNsaWVudCBhbmQgc2VydmVyIGFwcGxpY2F0aW9ucy4gXAotQXBwbGljYXRpb25zIGJ1aWx0IHdpdGggTlNTIGNhbiBzdXBwb3J0IFNTTCB2MiBhbmQgdjMsIFwKLVRMUywgUEtDUyA1LCBQS0NTIDcsIFBLQ1MgMTEsIFBLQ1MgMTIsIFMvTUlNRSwgWC41MDkgXAotdjMgY2VydGlmaWNhdGVzLCBhbmQgb3RoZXIgc2VjdXJpdHkgc3RhbmRhcmRzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvc2VjdXJpdHkvcGtpL25zcy8iCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiTVBMLTIuMCB8IChNUEwtMi4wICYgR1BMLTIuMCspIHwgKE1QTC0yLjAgJiBMR1BMLTIuMSspIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9uc3MvQ09QWUlORzttZDU9M2IxZTg4ZTFiOWMwYjVhNGIyODgxZDQ2Y2NlMDZhMTggXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbnNzL2xpYi9mcmVlYmwvbXBpL2RvYy9MSUNFTlNFO21kNT00OTFmMTU4ZDA5ZDk0ODQ2NmFmY2U4NWQ2ZjFmZTE4ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9uc3MvbGliL2ZyZWVibC9tcGkvZG9jL0xJQ0VOU0UtTVBMO21kNT01ZDQyNWM4ZjMxNTdkYmYyMTJkYjJlYzUzZDllNTEzMiIKLQotU1JDX1VSSSA9ICJcCi0gICAgaHR0cDovL2Z0cC5tb3ppbGxhLm9yZy9wdWIvbW96aWxsYS5vcmcvc2VjdXJpdHkvbnNzL3JlbGVhc2VzL05TU18zXzIxX1JUTS9zcmMvJHtCUH0udGFyLmd6IFwKLSAgICBmaWxlOi8vbnNzLWZpeC1zdXBwb3J0LWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCi0gICAgZmlsZTovL25zcy1uby1ycGF0aC1mb3ItY3Jvc3MtY29tcGlsaW5nLnBhdGNoIFwKLSAgICBmaWxlOi8vbnNzLWZpeC1pbmNvcnJlY3Qtc2hlYmFuZy1vZi1wZXJsLnBhdGNoIFwKLSAgICBmaWxlOi8vbnNzLWZpeC1uc2luc3RhbGwtYnVpbGQucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC1mYWlsdXJlLW9uLW9wZW5zdXNlLTEzLjEucGF0Y2ggXAotICAgIGZpbGU6Ly9uc3MucGMuaW4gXAotICAgIGZpbGU6Ly9zaWdubGlicy5zaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzYzhiMmVkODgwZGQzYThkODZjOWUwMTUxYWZlNmViYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzZjdhNWIwMjdkN2NkZDVjMGU0ZmY3NTQ0ZGEzM2ZkYzZmNTZjMmY4YzI3ZmZmMDI5MzhmZDRhNmZiZTg3MjM5IgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9Nb3ppbGxhL1Byb2plY3RzL05TUy9OU1NfUmVsZWFzZXMiCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJOU1NfKD9QPHB2ZXI+LispX3JlbGVhc2Vfbm90ZXMiCi0KLWluaGVyaXQgc2l0ZWluZm8KLQotREVQRU5EUyA9ICJzcWxpdGUzIG5zcHIgemxpYiBuc3MtbmF0aXZlIgotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAic3FsaXRlMy1uYXRpdmUgbnNwci1uYXRpdmUgemxpYi1uYXRpdmUiCi1SREVQRU5EU18ke1BOfS1zbWltZSA9ICJwZXJsIgotCi1URCA9ICIke1N9L3RlbnRhdGl2ZS1kaXN0IgotVERTID0gIiR7U30vdGVudGF0aXZlLWRpc3Qtc3RhZ2luZyIKLQotVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kX2xpYmMtbXVzbCAoKSB7Ci0gICAgc2VkIC1pIC1lICcvLURIQVZFX1NZU19DREVGU19IL2QnICR7U30vbnNzL2xpYi9kYm0vY29uZmlnL2NvbmZpZy5tawotfQotCi1kb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgewotICAgIGV4cG9ydCBOU1BSX0lOQ0xVREVfRElSPSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfQotICAgIGV4cG9ydCBOU1BSX0xJQl9ESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9Ci19Ci0KLWRvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0gICAgZXhwb3J0IExERkxBR1M9IiIKLX0KLQotZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLSAgICAjIE5lZWQgdG8gc2V0IFJQQVRIIHNvIHRoYXQgY2hycGF0aCB3aWxsIGRvIGl0cyBqb2IgY29ycmVjdGx5Ci0gICAgUlBBVEg9Ii1XbCwtcnBhdGgtbGluaywke1NUQUdJTkdfTElCRElSX05BVElWRX0gLVdsLC1ycGF0aC1saW5rLCR7U1RBR0lOR19CQVNFX0xJQkRJUl9OQVRJVkV9IC1XbCwtcnBhdGgsJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9IC1XbCwtcnBhdGgsJHtTVEFHSU5HX0JBU0VfTElCRElSX05BVElWRX0iCi19Ci0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgZXhwb3J0IENST1NTX0NPTVBJTEU9MQotICAgIGV4cG9ydCBOQVRJVkVfQ0M9ImdjYyIKLSAgICBleHBvcnQgQlVJTERfT1BUPTEKLQotICAgIGV4cG9ydCBGUkVFQkxfTk9fREVQRU5EPTEKLSAgICBleHBvcnQgRlJFRUJMX0xPV0hBU0g9MQotCi0gICAgZXhwb3J0IExJQkRJUj0ke2xpYmRpcn0KLSAgICBleHBvcnQgTU9aSUxMQV9DTElFTlQ9MQotICAgIGV4cG9ydCBOU19VU0VfR0NDPTEKLSAgICBleHBvcnQgTlNTX1VTRV9TWVNURU1fU1FMSVRFPTEKLSAgICBleHBvcnQgTlNTX0VOQUJMRV9FQ0M9MQotCi0gICAgZXhwb3J0IE9TX1JFTEVBU0U9My40Ci0gICAgZXhwb3J0IE9TX1RBUkdFVD1MaW51eAotICAgIGV4cG9ydCBPU19BUkNIPUxpbnV4Ci0KLSAgICBpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYyIgXTsgdGhlbgotICAgICAgICBPU19URVNUPXBwYwotICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGM2NCIgXTsgdGhlbgotICAgICAgICBPU19URVNUPXBwYzY0Ci0gICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAibWlwcyIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzZWwiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwczY0IiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHM2NGVsIiBdOyB0aGVuCi0gICAgICAgIE9TX1RFU1Q9bWlwcwotICAgIGVsc2UKLSAgICAgICAgT1NfVEVTVD0iJHtUQVJHRVRfQVJDSH0iCi0gICAgZmkKLQotICAgIGlmIFsgIiR7U0lURUlORk9fQklUU30iID0gIjY0IiBdOyB0aGVuCi0gICAgICAgIGV4cG9ydCBVU0VfNjQ9MQotICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIng4Nl82NCIgLWEgIiR7U0lURUlORk9fQklUU30iID0gIjMyIiBdOyB0aGVuCi0gICAgICAgIGV4cG9ydCBVU0VfWDMyPTEKLSAgICBmaQotCi0gICAgZXhwb3J0IE5TU19ESVNBQkxFX0dURVNUUz0xCi0KLSAgICAjIFdlIGNhbiBtb2RpZnkgQ0MgaW4gdGhlIGVudmlyb25tZW50LCBidXQgaWYgd2Ugc2V0IGl0IHZpYSBhbgotICAgICMgYXJndW1lbnQgdG8gbWFrZSwgbnNpbnN0YWxsLCBhIGhvc3QgcHJvZ3JhbSwgd2lsbCBhbHNvIGJ1aWxkIHdpdGggaXQhCi0gICAgIwotICAgIGV4cG9ydCBDQz0iJHtDQ30gLWciCi0gICAgbWFrZSAtQyAuL25zcyBDQ0M9IiR7Q1hYfSAtZyIgXAotICAgICAgICBPU19URVNUPSR7T1NfVEVTVH0gXAotICAgICAgICBSUEFUSD0iJHtSUEFUSH0iCi19Ci0KLQotZG9faW5zdGFsbF9wcmVwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKLSAgICBleHBvcnQgTERGTEFHUz0iIgotfQotCi1kb19pbnN0YWxsKCkgewotICAgIGV4cG9ydCBDUk9TU19DT01QSUxFPTEKLSAgICBleHBvcnQgTkFUSVZFX0NDPSJnY2MiCi0gICAgZXhwb3J0IEJVSUxEX09QVD0xCi0KLSAgICBleHBvcnQgRlJFRUJMX05PX0RFUEVORD0xCi0KLSAgICBleHBvcnQgTElCRElSPSR7bGliZGlyfQotICAgIGV4cG9ydCBNT1pJTExBX0NMSUVOVD0xCi0gICAgZXhwb3J0IE5TX1VTRV9HQ0M9MQotICAgIGV4cG9ydCBOU1NfVVNFX1NZU1RFTV9TUUxJVEU9MQotICAgIGV4cG9ydCBOU1NfRU5BQkxFX0VDQz0xCi0KLSAgICBleHBvcnQgT1NfUkVMRUFTRT0zLjQKLSAgICBleHBvcnQgT1NfVEFSR0VUPUxpbnV4Ci0gICAgZXhwb3J0IE9TX0FSQ0g9TGludXgKLQotICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjIiBdOyB0aGVuCi0gICAgICAgIE9TX1RFU1Q9cHBjCi0gICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYzY0IiBdOyB0aGVuCi0gICAgICAgIE9TX1RFU1Q9cHBjNjQKLSAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzIiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHNlbCIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzNjQiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwczY0ZWwiIF07IHRoZW4KLSAgICAgICAgT1NfVEVTVD1taXBzCi0gICAgZWxzZQotICAgICAgICBPU19URVNUPSIke1RBUkdFVF9BUkNIfSIKLSAgICBmaQotICAgIGlmIFsgIiR7U0lURUlORk9fQklUU30iID0gIjY0IiBdOyB0aGVuCi0gICAgICAgIGV4cG9ydCBVU0VfNjQ9MQotICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIng4Nl82NCIgLWEgIiR7U0lURUlORk9fQklUU30iID0gIjMyIiBdOyB0aGVuCi0gICAgICAgIGV4cG9ydCBVU0VfWDMyPTEKLSAgICBmaQotCi0gICAgZXhwb3J0IE5TU19ESVNBQkxFX0dURVNUUz0xCi0KLSAgICBtYWtlIC1DIC4vbnNzIFwKLSAgICAgICAgQ0NDPSIke0NYWH0iIFwKLSAgICAgICAgT1NfVEVTVD0ke09TX1RFU1R9IFwKLSAgICAgICAgU09VUkNFX0xJQl9ESVI9IiR7VER9LyR7bGliZGlyfSIgXAotICAgICAgICBTT1VSQ0VfQklOX0RJUj0iJHtURH0vJHtiaW5kaXJ9IiBcCi0gICAgICAgIGluc3RhbGwKLQotICAgIGluc3RhbGwgLWQgJHtEfS8ke2xpYmRpcn0vCi0gICAgZm9yIGZpbGUgaW4gJHtTfS9kaXN0LyouT0JKL2xpYi8qLnNvOyBkbwotICAgICAgICBlY2hvICJJbnN0YWxsaW5nIGBiYXNlbmFtZSAkZmlsZWAuLi4iCi0gICAgICAgIGNwICRmaWxlICAke0R9LyR7bGliZGlyfS8KLSAgICBkb25lCi0KLSAgICBmb3Igc2hhcmVkX2xpYiBpbiAke1REfS8ke2xpYmRpcn0vKi5zby4qOyBkbwotICAgICAgICBpZiBbIC1mICRzaGFyZWRfbGliIF07IHRoZW4KLSAgICAgICAgICAgIGNwICRzaGFyZWRfbGliICR7RH0vJHtsaWJkaXJ9Ci0gICAgICAgICAgICBsbiAtc2YgJChiYXNlbmFtZSAkc2hhcmVkX2xpYikgJHtEfS8ke2xpYmRpcn0vJChiYXNlbmFtZSAkc2hhcmVkX2xpYiAuMW9lKQotICAgICAgICBmaQotICAgIGRvbmUKLSAgICBmb3Igc2hhcmVkX2xpYiBpbiAke1REfS8ke2xpYmRpcn0vKi5zbzsgZG8KLSAgICAgICAgaWYgWyAtZiAkc2hhcmVkX2xpYiAtYSAhIC1lICR7RH0vJHtsaWJkaXJ9LyRzaGFyZWRfbGliIF07IHRoZW4KLSAgICAgICAgICAgIGNwICRzaGFyZWRfbGliICR7RH0vJHtsaWJkaXJ9Ci0gICAgICAgIGZpCi0gICAgZG9uZQotCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7aW5jbHVkZWRpcn0vbnNzMwotICAgIGluc3RhbGwgLW0gNjQ0IC10ICR7RH0vJHtpbmNsdWRlZGlyfS9uc3MzIGRpc3QvcHVibGljL25zcy8qCi0KLSAgICBpbnN0YWxsIC1kICR7RH0vJHtiaW5kaXJ9Ci0gICAgZm9yIGJpbmFyeSBpbiAke1REfS8ke2JpbmRpcn0vKjsgZG8KLSAgICAgICAgaW5zdGFsbCAtbSA3NTUgLXQgJHtEfS8ke2JpbmRpcn0gJGJpbmFyeQotICAgIGRvbmUKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgIyBDcmVhdGUgZW1wdHkgLmNoayBmaWxlcyBmb3IgdGhlIE5TUyBsaWJyYXJpZXMgYXQgYnVpbGQgdGltZS4gVGhleSBjb3VsZAotICAgICMgYmUgcmVnZW5lcmF0ZWQgYXQgdGFyZ2V0J3MgYm9vdCB0aW1lLgotICAgIGZvciBmaWxlIGluIGxpYnNvZnRva24zLmNoayBsaWJmcmVlYmwzLmNoayBsaWJuc3NkYm0zLmNoazsgZG8KLSAgICAgICAgdG91Y2ggJHtEfS8ke2xpYmRpcn0vJGZpbGUKLSAgICAgICAgY2htb2QgNzU1ICR7RH0vJHtsaWJkaXJ9LyRmaWxlCi0gICAgZG9uZQotICAgIGluc3RhbGwgLUQgLW0gNzU1ICR7V09SS0RJUn0vc2lnbmxpYnMuc2ggJHtEfS8ke2JpbmRpcn0vc2lnbmxpYnMuc2gKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wa2djb25maWcvCi0gICAgc2VkICdzLyVOU1NfVkVSU0lPTiUvJHtQVn0vJyAke1dPUktESVJ9L25zcy5wYy5pbiB8IHNlZCAncy8lTlNQUl9WRVJTSU9OJS80LjkuMi8nID4gJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCi0gICAgc2VkIC1pIHM6T0VQUkVGSVg6JHtwcmVmaXh9OmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCi0gICAgc2VkIC1pIHM6T0VFWEVDUFJFRklYOiR7ZXhlY19wcmVmaXh9OmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCi0gICAgc2VkIC1pIHM6T0VMSUJESVI6JHtsaWJkaXJ9OmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCi0gICAgc2VkIC1pIHM6T0VJTkNESVI6JHtpbmNsdWRlZGlyfS9uc3MzOmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICAjIENyZWF0ZSBhIGJsYW5rIGNlcnRpZmljYXRlCi0gICAgbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vcGtpL25zc2RiLwotICAgIHRvdWNoIC4vZW1wdHlfcGFzc3dvcmQKLSAgICBjZXJ0dXRpbCAtTiAtZCAke0R9JHtzeXNjb25mZGlyfS9wa2kvbnNzZGIvIC1mIC4vZW1wdHlfcGFzc3dvcmQKLSAgICBjaG1vZCA2NDQgJHtEfSR7c3lzY29uZmRpcn0vcGtpL25zc2RiLyouZGIKLSAgICBybSAuL2VtcHR5X3Bhc3N3b3JkCi19Ci0KLXBrZ19wb3N0aW5zdF8ke1BOfSAoKSB7Ci0gICAgaWYgWyAtbiAiJEQiIF07IHRoZW4KLSAgICAgICAgZm9yIEkgaW4gJEQvJHtsaWJkaXJ9L2xpYiouY2hrOyBkbwotICAgICAgICAgICAgRE49YGRpcm5hbWUgJElgCi0gICAgICAgICAgICBCTj1gYmFzZW5hbWUgJEkgLmNoa2AKLSAgICAgICAgICAgIEZOPSRETi8kQk4uc28KLSAgICAgICAgICAgIHNobGlic2lnbiAtaSAkRk4KLQkgICAgaWYgWyAkPyAtbmUgMCBdOyB0aGVuCi0JICAgICAgIGV4aXQgMQotCSAgICBmaQotICAgICAgICBkb25lCi0gICAgICAgIGV4aXQgMAotICAgIGZpCi0gICAgc2lnbmxpYnMuc2gKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LXNtaW1lIgotRklMRVNfJHtQTn0tc21pbWUgPSAiXAotICAgICR7YmluZGlyfS9zbWltZSBcCi0iCi1GSUxFU18ke1BOfSA9ICJcCi0gICAgJHtzeXNjb25mZGlyfSBcCi0gICAgJHtiaW5kaXJ9IFwKLSAgICAke2xpYmRpcn0vbGliKi5jaGsgXAotICAgICR7bGliZGlyfS9saWIqLnNvIFwKLSAgICAiCi1GSUxFU18ke1BOfS1kZXYgPSAiXAotICAgICR7bGliZGlyfS9uc3MgXAotICAgICR7bGliZGlyfS9wa2djb25maWcvKiBcCi0gICAgJHtpbmNsdWRlZGlyfS8qIFwKLSAgICAiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3NfMy4yNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzXzMuMjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZmMDllYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzXzMuMjUuYmIKQEAgLTAsMCArMSwyNDIgQEAKK1NVTU1BUlkgPSAiTW96aWxsYSdzIFNTTCBhbmQgVExTIGltcGxlbWVudGF0aW9uIgorREVTQ1JJUFRJT04gPSAiTmV0d29yayBTZWN1cml0eSBTZXJ2aWNlcyAoTlNTKSBpcyBhIHNldCBvZiBsaWJyYXJpZXMgXAorZGVzaWduZWQgdG8gc3VwcG9ydCBjcm9zcy1wbGF0Zm9ybSBkZXZlbG9wbWVudCBvZiBcCitzZWN1cml0eS1lbmFibGVkIGNsaWVudCBhbmQgc2VydmVyIGFwcGxpY2F0aW9ucy4gXAorQXBwbGljYXRpb25zIGJ1aWx0IHdpdGggTlNTIGNhbiBzdXBwb3J0IFNTTCB2MiBhbmQgdjMsIFwKK1RMUywgUEtDUyA1LCBQS0NTIDcsIFBLQ1MgMTEsIFBLQ1MgMTIsIFMvTUlNRSwgWC41MDkgXAordjMgY2VydGlmaWNhdGVzLCBhbmQgb3RoZXIgc2VjdXJpdHkgc3RhbmRhcmRzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvc2VjdXJpdHkvcGtpL25zcy8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiTVBMLTIuMCB8IChNUEwtMi4wICYgR1BMLTIuMCspIHwgKE1QTC0yLjAgJiBMR1BMLTIuMSspIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9uc3MvQ09QWUlORzttZDU9M2IxZTg4ZTFiOWMwYjVhNGIyODgxZDQ2Y2NlMDZhMTggXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbnNzL2xpYi9mcmVlYmwvbXBpL2RvYy9MSUNFTlNFO21kNT00OTFmMTU4ZDA5ZDk0ODQ2NmFmY2U4NWQ2ZjFmZTE4ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9uc3MvbGliL2ZyZWVibC9tcGkvZG9jL0xJQ0VOU0UtTVBMO21kNT01ZDQyNWM4ZjMxNTdkYmYyMTJkYjJlYzUzZDllNTEzMiIKKworU1JDX1VSSSA9ICJcCisgICAgaHR0cDovL2Z0cC5tb3ppbGxhLm9yZy9wdWIvbW96aWxsYS5vcmcvc2VjdXJpdHkvbnNzL3JlbGVhc2VzL05TU18zXzI1X1JUTS9zcmMvJHtCUH0udGFyLmd6IFwKKyAgICBmaWxlOi8vbnNzLWZpeC1zdXBwb3J0LWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCisgICAgZmlsZTovL25zcy1uby1ycGF0aC1mb3ItY3Jvc3MtY29tcGlsaW5nLnBhdGNoIFwKKyAgICBmaWxlOi8vbnNzLWZpeC1pbmNvcnJlY3Qtc2hlYmFuZy1vZi1wZXJsLnBhdGNoIFwKKyAgICBmaWxlOi8vbnNzLWZpeC1uc2luc3RhbGwtYnVpbGQucGF0Y2ggXAorICAgIGZpbGU6Ly9kaXNhYmxlLVd2YXJhcmdzLXdpdGgtY2xhbmcucGF0Y2ggXAorICAgIGZpbGU6Ly9wcWcuYy1VTExfYWRkZW5kLnBhdGNoIFwKKyAgICBmaWxlOi8vbnNzLnBjLmluIFwKKyAgICBmaWxlOi8vc2lnbmxpYnMuc2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjIzMTY5YzQwNmFkYzhhYzM2NzJkMzRiZjllYTI0MzNkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVkMWFkNDc1ZGExOWQwYzAzM2E3MTYzNTBkYzVmOGE3NDc5OTlkM2ViYTVhYzA3ZWUwMzY4YzViYWQ2ZTIzNTkiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL01vemlsbGEvUHJvamVjdHMvTlNTL05TU19SZWxlYXNlcyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIk5TU18oP1A8cHZlcj4uKylfcmVsZWFzZV9ub3RlcyIKKworaW5oZXJpdCBzaXRlaW5mbworCitERVBFTkRTID0gInNxbGl0ZTMgbnNwciB6bGliIG5zcy1uYXRpdmUiCitERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJzcWxpdGUzLW5hdGl2ZSBuc3ByLW5hdGl2ZSB6bGliLW5hdGl2ZSIKK1JERVBFTkRTXyR7UE59LXNtaW1lID0gInBlcmwiCisKK1REID0gIiR7U30vdGVudGF0aXZlLWRpc3QiCitURFMgPSAiJHtTfS90ZW50YXRpdmUtZGlzdC1zdGFnaW5nIgorCitUQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKKworZG9fY29uZmlndXJlX3ByZXBlbmRfbGliYy1tdXNsICgpIHsKKyAgICBzZWQgLWkgLWUgJy8tREhBVkVfU1lTX0NERUZTX0gvZCcgJHtTfS9uc3MvbGliL2RibS9jb25maWcvY29uZmlnLm1rCit9CisKK2RvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisgICAgZXhwb3J0IE5TUFJfSU5DTFVERV9ESVI9JHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9CisgICAgZXhwb3J0IE5TUFJfTElCX0RJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0KKyAgICBleHBvcnQgTlNTX0VOQUJMRV9XRVJST1I9MAorfQorCitkb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworICAgIGV4cG9ydCBMREZMQUdTPSIiCit9CisKK2RvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisgICAgIyBOZWVkIHRvIHNldCBSUEFUSCBzbyB0aGF0IGNocnBhdGggd2lsbCBkbyBpdHMgam9iIGNvcnJlY3RseQorICAgIFJQQVRIPSItV2wsLXJwYXRoLWxpbmssJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9IC1XbCwtcnBhdGgtbGluaywke1NUQUdJTkdfQkFTRV9MSUJESVJfTkFUSVZFfSAtV2wsLXJwYXRoLCR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSAtV2wsLXJwYXRoLCR7U1RBR0lOR19CQVNFX0xJQkRJUl9OQVRJVkV9IgorfQorCitkb19jb21waWxlKCkgeworICAgIGV4cG9ydCBDUk9TU19DT01QSUxFPTEKKyAgICBleHBvcnQgTkFUSVZFX0NDPSJnY2MiCisgICAgZXhwb3J0IE5BVElWRV9GTEFHUz0iJHtIT1NUX0NGTEFHU30iCisgICAgZXhwb3J0IEJVSUxEX09QVD0xCisKKyAgICBleHBvcnQgRlJFRUJMX05PX0RFUEVORD0xCisgICAgZXhwb3J0IEZSRUVCTF9MT1dIQVNIPTEKKworICAgIGV4cG9ydCBMSUJESVI9JHtsaWJkaXJ9CisgICAgZXhwb3J0IE1PWklMTEFfQ0xJRU5UPTEKKyAgICBleHBvcnQgTlNfVVNFX0dDQz0xCisgICAgZXhwb3J0IE5TU19VU0VfU1lTVEVNX1NRTElURT0xCisgICAgZXhwb3J0IE5TU19FTkFCTEVfRUNDPTEKKworICAgIGV4cG9ydCBPU19SRUxFQVNFPTMuNAorICAgIGV4cG9ydCBPU19UQVJHRVQ9TGludXgKKyAgICBleHBvcnQgT1NfQVJDSD1MaW51eAorCisgICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGMiIF07IHRoZW4KKyAgICAgICAgT1NfVEVTVD1wcGMKKyAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjNjQiIF07IHRoZW4KKyAgICAgICAgT1NfVEVTVD1wcGM2NAorICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHMiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwc2VsIiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHM2NCIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzNjRlbCIgXTsgdGhlbgorICAgICAgICBPU19URVNUPW1pcHMKKyAgICBlbHNlCisgICAgICAgIE9TX1RFU1Q9IiR7VEFSR0VUX0FSQ0h9IgorICAgIGZpCisKKyAgICBpZiBbICIke1NJVEVJTkZPX0JJVFN9IiA9ICI2NCIgXTsgdGhlbgorICAgICAgICBleHBvcnQgVVNFXzY0PTEKKyAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJ4ODZfNjQiIC1hICIke1NJVEVJTkZPX0JJVFN9IiA9ICIzMiIgXTsgdGhlbgorICAgICAgICBleHBvcnQgVVNFX1gzMj0xCisgICAgZmkKKworICAgIGV4cG9ydCBOU1NfRElTQUJMRV9HVEVTVFM9MQorCisgICAgIyBXZSBjYW4gbW9kaWZ5IENDIGluIHRoZSBlbnZpcm9ubWVudCwgYnV0IGlmIHdlIHNldCBpdCB2aWEgYW4KKyAgICAjIGFyZ3VtZW50IHRvIG1ha2UsIG5zaW5zdGFsbCwgYSBob3N0IHByb2dyYW0sIHdpbGwgYWxzbyBidWlsZCB3aXRoIGl0IQorICAgICMKKyAgICBleHBvcnQgQ0M9IiR7Q0N9IC1nIgorICAgIG1ha2UgLUMgLi9uc3MgQ0NDPSIke0NYWH0gLWciIFwKKyAgICAgICAgT1NfVEVTVD0ke09TX1RFU1R9IFwKKyAgICAgICAgUlBBVEg9IiR7UlBBVEh9IgorfQorCisKK2RvX2luc3RhbGxfcHJlcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7CisgICAgZXhwb3J0IExERkxBR1M9IiIKK30KKworZG9faW5zdGFsbCgpIHsKKyAgICBleHBvcnQgQ1JPU1NfQ09NUElMRT0xCisgICAgZXhwb3J0IE5BVElWRV9DQz0iZ2NjIgorICAgIGV4cG9ydCBCVUlMRF9PUFQ9MQorCisgICAgZXhwb3J0IEZSRUVCTF9OT19ERVBFTkQ9MQorCisgICAgZXhwb3J0IExJQkRJUj0ke2xpYmRpcn0KKyAgICBleHBvcnQgTU9aSUxMQV9DTElFTlQ9MQorICAgIGV4cG9ydCBOU19VU0VfR0NDPTEKKyAgICBleHBvcnQgTlNTX1VTRV9TWVNURU1fU1FMSVRFPTEKKyAgICBleHBvcnQgTlNTX0VOQUJMRV9FQ0M9MQorCisgICAgZXhwb3J0IE9TX1JFTEVBU0U9My40CisgICAgZXhwb3J0IE9TX1RBUkdFVD1MaW51eAorICAgIGV4cG9ydCBPU19BUkNIPUxpbnV4CisKKyAgICBpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYyIgXTsgdGhlbgorICAgICAgICBPU19URVNUPXBwYworICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGM2NCIgXTsgdGhlbgorICAgICAgICBPU19URVNUPXBwYzY0CisgICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAibWlwcyIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzZWwiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwczY0IiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHM2NGVsIiBdOyB0aGVuCisgICAgICAgIE9TX1RFU1Q9bWlwcworICAgIGVsc2UKKyAgICAgICAgT1NfVEVTVD0iJHtUQVJHRVRfQVJDSH0iCisgICAgZmkKKyAgICBpZiBbICIke1NJVEVJTkZPX0JJVFN9IiA9ICI2NCIgXTsgdGhlbgorICAgICAgICBleHBvcnQgVVNFXzY0PTEKKyAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJ4ODZfNjQiIC1hICIke1NJVEVJTkZPX0JJVFN9IiA9ICIzMiIgXTsgdGhlbgorICAgICAgICBleHBvcnQgVVNFX1gzMj0xCisgICAgZmkKKworICAgIGV4cG9ydCBOU1NfRElTQUJMRV9HVEVTVFM9MQorCisgICAgbWFrZSAtQyAuL25zcyBcCisgICAgICAgIENDQz0iJHtDWFh9IiBcCisgICAgICAgIE9TX1RFU1Q9JHtPU19URVNUfSBcCisgICAgICAgIFNPVVJDRV9MSUJfRElSPSIke1REfS8ke2xpYmRpcn0iIFwKKyAgICAgICAgU09VUkNFX0JJTl9ESVI9IiR7VER9LyR7YmluZGlyfSIgXAorICAgICAgICBpbnN0YWxsCisKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtsaWJkaXJ9LworICAgIGZvciBmaWxlIGluICR7U30vZGlzdC8qLk9CSi9saWIvKi5zbzsgZG8KKyAgICAgICAgZWNobyAiSW5zdGFsbGluZyBgYmFzZW5hbWUgJGZpbGVgLi4uIgorICAgICAgICBjcCAkZmlsZSAgJHtEfS8ke2xpYmRpcn0vCisgICAgZG9uZQorCisgICAgZm9yIHNoYXJlZF9saWIgaW4gJHtURH0vJHtsaWJkaXJ9Lyouc28uKjsgZG8KKyAgICAgICAgaWYgWyAtZiAkc2hhcmVkX2xpYiBdOyB0aGVuCisgICAgICAgICAgICBjcCAkc2hhcmVkX2xpYiAke0R9LyR7bGliZGlyfQorICAgICAgICAgICAgbG4gLXNmICQoYmFzZW5hbWUgJHNoYXJlZF9saWIpICR7RH0vJHtsaWJkaXJ9LyQoYmFzZW5hbWUgJHNoYXJlZF9saWIgLjFvZSkKKyAgICAgICAgZmkKKyAgICBkb25lCisgICAgZm9yIHNoYXJlZF9saWIgaW4gJHtURH0vJHtsaWJkaXJ9Lyouc287IGRvCisgICAgICAgIGlmIFsgLWYgJHNoYXJlZF9saWIgLWEgISAtZSAke0R9LyR7bGliZGlyfS8kc2hhcmVkX2xpYiBdOyB0aGVuCisgICAgICAgICAgICBjcCAkc2hhcmVkX2xpYiAke0R9LyR7bGliZGlyfQorICAgICAgICBmaQorICAgIGRvbmUKKworICAgIGluc3RhbGwgLWQgJHtEfS8ke2luY2x1ZGVkaXJ9L25zczMKKyAgICBpbnN0YWxsIC1tIDY0NCAtdCAke0R9LyR7aW5jbHVkZWRpcn0vbnNzMyBkaXN0L3B1YmxpYy9uc3MvKgorCisgICAgaW5zdGFsbCAtZCAke0R9LyR7YmluZGlyfQorICAgIGZvciBiaW5hcnkgaW4gJHtURH0vJHtiaW5kaXJ9Lyo7IGRvCisgICAgICAgIGluc3RhbGwgLW0gNzU1IC10ICR7RH0vJHtiaW5kaXJ9ICRiaW5hcnkKKyAgICBkb25lCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICMgQ3JlYXRlIGVtcHR5IC5jaGsgZmlsZXMgZm9yIHRoZSBOU1MgbGlicmFyaWVzIGF0IGJ1aWxkIHRpbWUuIFRoZXkgY291bGQKKyAgICAjIGJlIHJlZ2VuZXJhdGVkIGF0IHRhcmdldCdzIGJvb3QgdGltZS4KKyAgICBmb3IgZmlsZSBpbiBsaWJzb2Z0b2tuMy5jaGsgbGliZnJlZWJsMy5jaGsgbGlibnNzZGJtMy5jaGs7IGRvCisgICAgICAgIHRvdWNoICR7RH0vJHtsaWJkaXJ9LyRmaWxlCisgICAgICAgIGNobW9kIDc1NSAke0R9LyR7bGliZGlyfS8kZmlsZQorICAgIGRvbmUKKyAgICBpbnN0YWxsIC1EIC1tIDc1NSAke1dPUktESVJ9L3NpZ25saWJzLnNoICR7RH0vJHtiaW5kaXJ9L3NpZ25saWJzLnNoCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnLworICAgIHNlZCAncy8lTlNTX1ZFUlNJT04lLyR7UFZ9LycgJHtXT1JLRElSfS9uc3MucGMuaW4gfCBzZWQgJ3MvJU5TUFJfVkVSU0lPTiUvNC45LjIvJyA+ICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcy5wYworICAgIHNlZCAtaSBzOk9FUFJFRklYOiR7cHJlZml4fTpnICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcy5wYworICAgIHNlZCAtaSBzOk9FRVhFQ1BSRUZJWDoke2V4ZWNfcHJlZml4fTpnICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcy5wYworICAgIHNlZCAtaSBzOk9FTElCRElSOiR7bGliZGlyfTpnICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcy5wYworICAgIHNlZCAtaSBzOk9FSU5DRElSOiR7aW5jbHVkZWRpcn0vbnNzMzpnICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcy5wYworfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CisgICAgIyBDcmVhdGUgYSBibGFuayBjZXJ0aWZpY2F0ZQorICAgIG1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L3BraS9uc3NkYi8KKyAgICB0b3VjaCAuL2VtcHR5X3Bhc3N3b3JkCisgICAgY2VydHV0aWwgLU4gLWQgJHtEfSR7c3lzY29uZmRpcn0vcGtpL25zc2RiLyAtZiAuL2VtcHR5X3Bhc3N3b3JkCisgICAgY2htb2QgNjQ0ICR7RH0ke3N5c2NvbmZkaXJ9L3BraS9uc3NkYi8qLmRiCisgICAgcm0gLi9lbXB0eV9wYXNzd29yZAorfQorCitwa2dfcG9zdGluc3RfJHtQTn0gKCkgeworICAgIGlmIFsgLW4gIiREIiBdOyB0aGVuCisgICAgICAgIGZvciBJIGluICRELyR7bGliZGlyfS9saWIqLmNoazsgZG8KKyAgICAgICAgICAgIEROPWBkaXJuYW1lICRJYAorICAgICAgICAgICAgQk49YGJhc2VuYW1lICRJIC5jaGtgCisgICAgICAgICAgICBGTj0kRE4vJEJOLnNvCisgICAgICAgICAgICBzaGxpYnNpZ24gLWkgJEZOCisJICAgIGlmIFsgJD8gLW5lIDAgXTsgdGhlbgorCSAgICAgICBleGl0IDEKKwkgICAgZmkKKyAgICAgICAgZG9uZQorICAgICAgICBleGl0IDAKKyAgICBmaQorICAgIHNpZ25saWJzLnNoCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1zbWltZSIKK0ZJTEVTXyR7UE59LXNtaW1lID0gIlwKKyAgICAke2JpbmRpcn0vc21pbWUgXAorIgorRklMRVNfJHtQTn0gPSAiXAorICAgICR7c3lzY29uZmRpcn0gXAorICAgICR7YmluZGlyfSBcCisgICAgJHtsaWJkaXJ9L2xpYiouY2hrIFwKKyAgICAke2xpYmRpcn0vbGliKi5zbyBcCisgICAgIgorRklMRVNfJHtQTn0tZGV2ID0gIlwKKyAgICAke2xpYmRpcn0vbnNzIFwKKyAgICAke2xpYmRpcn0vcGtnY29uZmlnLyogXAorICAgICR7aW5jbHVkZWRpcn0vKiBcCisgICAgIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9wMTEta2l0L3AxMS1raXRfMC4yMi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3AxMS1raXQvcDExLWtpdF8wLjIyLjEuYmIKaW5kZXggYTRlZmZmMS4uMzhmYTA5YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3AxMS1raXQvcDExLWtpdF8wLjIyLjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3AxMS1raXQvcDExLWtpdF8wLjIyLjEuYmIKQEAgLTIsNyArMiw3IEBACiBMSUNFTlNFID0gIkJTRCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTAyOTMzODg3ZjYwOTgwN2ZiYjU3YWE0MjM3ZDE0YTUwIgogCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBndGstZG9jCiAKIERFUEVORFMgPSAibGlidGFzbjEgbGliZmZpIgogCkBAIC0xMiw2ICsxMiwyNiBAQAogCiBFWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LXRydXN0LXBhdGhzIgogCisjIFRoaXMgcmVjaXBlIGRvZXMgbm90IHVzZSB0aGUgc3RhbmRhcmQgZ3RrLWRvYyBtNCBtYWNyb3MsIGFuZCBzbyB0aGUgLi9jb25maWd1cmUgZmxhZ3MKKyMgdGhhdCBjb250cm9sIGd0ay1kb2MgYnVpbGQgYXJlIG5vbi1zdGFuZGFyZAorRVhUUkFfT0VDT05GX3ByZXBlbmRfY2xhc3MtdGFyZ2V0ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHVEtET0NfRU5BQkxFRCcsICdUcnVlJywgJy0tZW5hYmxlLWRvYyAtLWVuYWJsZS1kb2MtaHRtbCAtLWRpc2FibGUtZG9jLXBkZicsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWRpc2FibGUtZG9jJywgZCl9ICIKKworIyBXaGVuIGJ1aWxkaW5nIG5hdGl2ZSByZWNpcGVzLCBkaXNhYmxlIGd0a2RvYywgYXMgaXQgaXMgbm90IG5lY2Vzc2FyeSwKKyMgcHVsbHMgaW4gYWRkaXRpb25hbCBkZXBlbmRlbmNpZXMsIGFuZCBtYWtlcyBidWlsZCB0aW1lcyBsb25nZXIKK0VYVFJBX09FQ09ORl9wcmVwZW5kX2NsYXNzLW5hdGl2ZSA9ICItLWRpc2FibGUtZG9jICIKK0VYVFJBX09FQ09ORl9wcmVwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICItLWRpc2FibGUtZG9jICIKKworVU5LTk9XTl9DT05GSUdVUkVfV0hJVEVMSVNUX2FwcGVuZCA9ICIgLS1lbmFibGUtZ3RrLWRvYy1odG1sIC0tZGlzYWJsZS1ndGstZG9jLXBkZiAtLWVuYWJsZS1ndGstZG9jIC0tZGlzYWJsZS1ndGstZG9jIgorCisjIHAxMS1raXQgcmVsaWVzIG9uIHRoZXNlIHR3byBiZWluZyBjb3BpZWQgZnJvbSBzb3VyY2UgdHJlZQorIyBpbnN0ZWFkIG9mIGJlaW5nIHJlZ2VuZXJhdGVkIGJ5IGd0a2RvYy1zY2FuLCBidXQgZG9lc24ndCBzZXR1cAorIyBkZXBlbmRlbmNpZXMgY29ycmVjdGx5IHdoZW4gdGhlcmUgaXMgYSBwYXJhbGxlbCBidWlsZC4gTGV0J3MgcHJlLWNvcHkKKyMgdGhlbSBpbnN0ZWFkLgorZG9fY29tcGlsZV9wcmVwZW5kICgpIHsKKyAgICAgICAgY3AgJHtTfS9kb2MvbWFudWFsL3AxMS1raXQtb3ZlcnJpZGVzLnR4dCAke1N9L2RvYy9tYW51YWwvcDExLWtpdC1zZWN0aW9ucy50eHQgJHtCfS9kb2MvbWFudWFsLworfQorCiBGSUxFU18ke1BOfSArPSAiIFwKICAgICAke2xpYmRpcn0vcDExLWtpdC1wcm94eS5zbyBcCiAgICAgJHtsaWJkaXJ9L3BrY3MxMS8qLnNvIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9waW5lbnRyeS9waW5lbnRyeV8wLjkuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9waW5lbnRyeS9waW5lbnRyeV8wLjkuMi5iYgppbmRleCBkNmI3MTMwLi5kMzE1YTk5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcGluZW50cnkvcGluZW50cnlfMC45LjIuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3BpbmVudHJ5L3BpbmVudHJ5XzAuOS4yLmJiCkBAIC0xMiw3ICsxMiw4IEBACiAKIERFUEVORFMgPSAiZ2V0dGV4dC1uYXRpdmUiCiAKLVNSQ19VUkkgPSAiZnRwOi8vZnRwLmdudXBnLm9yZy9nY3J5cHQvJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuYnoyIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCitTUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICJmNTFkNDU0ZjkyMTExMWI1MTU2YTIyOTFjYmY3MDI3OCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJmZDhiYzE1OTJjZWIyMmJiNDkyYjA3Y2IyOWIxYjE0MGJiODgyYzg1OWU2NTAzYjk3NDI1NGMwYTRiNDEzNGQxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3BvcHQvcG9wdC9wb3B0X2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9wb3B0L3BvcHQvcG9wdF9maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2gKaW5kZXggOTFiY2E5Ni4uN2Q3NGFhZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3BvcHQvcG9wdC9wb3B0X2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcG9wdC9wb3B0L3BvcHRfZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoCkBAIC00LDcgKzQsNyBAQAogCiB8IGNvbmZpZ3VyZS5hYzo0OTogZXJyb3I6IGF1dG9tYXRpYyBkZS1BTlNJLWZpY2F0aW9uIHN1cHBvcnQgaGFzIGJlZW4gcmVtb3ZlZAogCi1TaWduZWQtT2ZmLUJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KIDIwMTIvMDUvMDIKIAogSW5kZXg6IHBvcHQtMS4xNi9jb25maWd1cmUuYWMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9wb3B0L3BvcHRfMS4xNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9wb3B0L3BvcHRfMS4xNi5iYgppbmRleCBjYjEzYTgxLi40NzgyODhmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcG9wdC9wb3B0XzEuMTYuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3BvcHQvcG9wdF8xLjE2LmJiCkBAIC02LDYgKzYsOCBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Y2IwNjEzYzMwYWYyYTgyNDliOGRjYzY3ZDNlZGIwNmQiCiBQUiA9ICJyMyIKIAorREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYmljb252IgorCiBTUkNfVVJJID0gImh0dHA6Ly9ycG01Lm9yZy9maWxlcy9wb3B0L3BvcHQtJHtQVn0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovL3BrZ2NvbmZpZ19maXgucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vcG9wdF9maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2ggXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3B0ZXN0LXJ1bm5lci9wdGVzdC1ydW5uZXJfMi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3B0ZXN0LXJ1bm5lci9wdGVzdC1ydW5uZXJfMi4wLmJiCmluZGV4IDcwODFhZmIuLjlkNDU1MTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9wdGVzdC1ydW5uZXIvcHRlc3QtcnVubmVyXzIuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcHRlc3QtcnVubmVyL3B0ZXN0LXJ1bm5lcl8yLjAuYmIKQEAgLTcsOCArNyw4IEBACiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCiAKLVNSQ1JFViA9ICI4YmZkZjk0NmU3ODRmNGQ1NzU3YmViZWUxZmJjNGI0YTNkN2E5NWM0IgotUFYgPSAiMi4wK2dpdCR7U1JDUFZ9IgorU1JDUkVWID0gImUyYWE0MjU2NzQ1Mzc3Yjc4NGM4NjkxZjU0NjA0MWI1OWY2ZTA0NmIiCitQViA9ICIyLjAuMStnaXQke1NSQ1BWfSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wdGVzdC1ydW5uZXIyIgogUyA9ICIke1dPUktESVJ9L2dpdCIKQEAgLTIyLDUgKzIyLDUgQEAKIH0KIAogZG9faW5zdGFsbCAoKSB7Ci0JaW5zdGFsbCAtRCAtbSAwNzU1ICR7V09SS0RJUn0vZ2l0L3B0ZXN0LXJ1bm5lciAke0R9JHtiaW5kaXJ9L3B0ZXN0LXJ1bm5lcgorCWluc3RhbGwgLUQgLW0gMDc1NSAke1N9L3B0ZXN0LXJ1bm5lciAke0R9JHtiaW5kaXJ9L3B0ZXN0LXJ1bm5lcgogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NlcmYvc2VyZl8xLjMuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zZXJmL3NlcmZfMS4zLjguYmIKaW5kZXggYjUwNTlkNS4uYzQ5OGQ5MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NlcmYvc2VyZl8xLjMuOC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2VyZi9zZXJmXzEuMy44LmJiCkBAIC0xLDExICsxLDEzIEBACiBTVU1NQVJZID0gIkhpZ2gtUGVyZm9ybWFuY2UgQXN5bmNocm9ub3VzIEhUVFAgQ2xpZW50IExpYnJhcnkiCi1TUkNfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9zLyR7QlBOfS8ke0JQTn1fJHtQVn0ub3JpZy50YXIuZ3ogXAorU1JDX1VSSSA9ICJodHRwOi8vc25hcHNob3QuZGViaWFuLm9yZy9hcmNoaXZlL2RlYmlhbi8yMDE2MDcyOFQwNDM0NDNaL3Bvb2wvbWFpbi9zLyR7QlBOfS8ke0JQTn1fJHtQVn0ub3JpZy50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vbm9ycGF0aC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9lbnYucGF0Y2giCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICI3MTNiZWFmMDVkN2YzMzI5ZGUxMjFlMjE4ZTJmY2I5MyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI3NzEzNGNkNTAxMDY2NGNhMDIzNTg1YmNlNTA5NzhiZDQwMDU5MDZlZDI4MGZmODg5ZjU5MWY4NmRmN2M1OWU0IgogCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL3Mvc2VyZi8iCisKIExJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTg2ZDNmM2E5NWMzMjRjOTQ3OWJkODk4Njk2OGY0MzI3IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc291cmNlLWhpZ2hsaWdodC9maWxlcy8wMDAxLXNvdXJjZS1oaWdobGlnaHQucGMuaW4tZG8tbm90LWFkZC1Cb29zdC1zLWxpYnJhcmllcy0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc291cmNlLWhpZ2hsaWdodC9maWxlcy8wMDAxLXNvdXJjZS1oaWdobGlnaHQucGMuaW4tZG8tbm90LWFkZC1Cb29zdC1zLWxpYnJhcmllcy0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjBhYTVkMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zb3VyY2UtaGlnaGxpZ2h0L2ZpbGVzLzAwMDEtc291cmNlLWhpZ2hsaWdodC5wYy5pbi1kby1ub3QtYWRkLUJvb3N0LXMtbGlicmFyaWVzLS5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIDlhYTAxZmQ1ZjlkOGIyYjk4YzM0Njg0ZGM4ZjY4MTE1NzUwZWY0MWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMTIgSnVsIDIwMTYgMTc6MTU6MTMgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gc291cmNlLWhpZ2hsaWdodC5wYy5pbjogZG8gbm90IGFkZCBCb29zdCdzIGxpYnJhcmllcyBhbmQKKyBpbmNsdWRlcworCitUaGlzIGJyZWFrcyB3aGVuIGNvbXBpbGluZyBpbiBzeXNyb290czsgYSBwcm9wZXIgd2F5IGlzIHRvIHVzZSBEZXBlbmRzCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBzb3VyY2UtaGlnaGxpZ2h0LnBjLmluIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NvdXJjZS1oaWdobGlnaHQucGMuaW4gYi9zb3VyY2UtaGlnaGxpZ2h0LnBjLmluCitpbmRleCA3OWFiNjNlLi42NDExNGE3IDEwMDY0NAorLS0tIGEvc291cmNlLWhpZ2hsaWdodC5wYy5pbgorKysrIGIvc291cmNlLWhpZ2hsaWdodC5wYy5pbgorQEAgLTcsNiArNyw2IEBAIE5hbWU6IGxpYnNvdXJjZS1oaWdobGlnaHQKKyBEZXNjcmlwdGlvbjogR05VIFNvdXJjZS1oaWdobGlnaHQgbGlicmFyeS4KKyBVUkw6IGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9zcmMtaGlnaGxpdGUvCisgVmVyc2lvbjogQFZFUlNJT05ACistTGliczogLUwke2xpYmRpcn0gLWxzb3VyY2UtaGlnaGxpZ2h0IEBCT09TVF9MREZMQUdTQCBAQk9PU1RfUkVHRVhfTElCQAorLUNmbGFnczogLUkke2luY2x1ZGVkaXJ9IEBCT09TVF9DUFBGTEFHU0AKKytMaWJzOiAtTCR7bGliZGlyfSAtbHNvdXJjZS1oaWdobGlnaHQKKytDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfQorIAorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc291cmNlLWhpZ2hsaWdodC9zb3VyY2UtaGlnaGxpZ2h0XzMuMS44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NvdXJjZS1oaWdobGlnaHQvc291cmNlLWhpZ2hsaWdodF8zLjEuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTkyM2U0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NvdXJjZS1oaWdobGlnaHQvc291cmNlLWhpZ2hsaWdodF8zLjEuOC5iYgpAQCAtMCwwICsxLDI4IEBACitTVU1NQVJZID0gIlN5bnRheCBoaWdobGlnaHQgdXRpbGl0eSIKK0RFU0NSSVBUSU9OID0gIlNvdXJjZS1oaWdobGlnaHQgY29udmVydHMgc291cmNlIGNvZGUgdG8gZm9ybWF0dGVkIHRleHQgd2l0aCBzeW50YXggaGlnaGxpZ2h0aW5nLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvc3JjLWhpZ2hsaXRlLyIKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mZjk1YmZlMDE5ZmVhZjkyZjUyNGI3M2RkNzllNzZlYiIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L3NyYy1oaWdobGl0ZS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc291cmNlLWhpZ2hsaWdodC5wYy5pbi1kby1ub3QtYWRkLUJvb3N0LXMtbGlicmFyaWVzLS5wYXRjaCIKK1NSQ19VUklbbWQ1c3VtXSA9ICIzMjQzNDcwNzA2ZWY1ZmVmZGMzZTQzYjUzMDZhNGU0MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwMTMzNmE3ZWExZDFjY2MzNzQyMDFmN2I4MWZmYTk0ZDBhZWNiMzNhZmM3ZDY5MDNlYmY5ZmJmMzNhNTVhZGEzIgorCitpbmhlcml0IGF1dG90b29scworCitERVBFTkRTX2FwcGVuZCA9ICIgYm9vc3QiCisKK0RFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgc291cmNlLWhpZ2hsaWdodC1uYXRpdmUiCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtYm9vc3Q9eWVzIC0td2l0aC1ib29zdC1saWJkaXI9JHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtsaWJkaXJ9IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworIyBzb3VyY2UtaGlnaGxpZ2h0IGlzIHVzaW5nIGl0cyBvd24gYmluYXJ5IGZyb20gdGhlIGJ1aWxkIHRyZWUgdG8gbWFrZSBkb2N1bWVudGF0aW9uCisjIGxldCdzIHN1YnN0aXR1dGUgdGhlIG5hdGl2ZSBiaW5hcnkgaW5zdGVhZAorZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKKyAgICAgICAgc2VkIC1pIC1lICdzLF5TUkNISUxJVEVFWEUgPSAkKHRvcF9idWlsZGRpcikuKixTUkNISUxJVEVFWEUgPSBzb3VyY2UtaGlnaGxpZ2h0LCcgJHtTfS9kb2MvTWFrZWZpbGUuYW0KK30KKworUkRFUEVORFNfc291cmNlLWhpZ2hsaWdodCArPSAiYmFzaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvZmlsZXMvMDAwMS1yZXZlcnQtYWQ2MDFjNzk2Mi10aGF0LWJyaW5ncy0yLWluY3JlYXNlLW9mLWJ1aWxkLXRpLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9maWxlcy8wMDAxLXJldmVydC1hZDYwMWM3OTYyLXRoYXQtYnJpbmdzLTItaW5jcmVhc2Utb2YtYnVpbGQtdGkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY1NDBiMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvZmlsZXMvMDAwMS1yZXZlcnQtYWQ2MDFjNzk2Mi10aGF0LWJyaW5ncy0yLWluY3JlYXNlLW9mLWJ1aWxkLXRpLnBhdGNoCkBAIC0wLDAgKzEsNTYgQEAKK0Zyb20gNGIyODZiNDQxZThlZmE5YTM0ZWIwZGI4MjI3NzQ4ZWJmZmQ5MWMzNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEppYW54dW4gWmhhbmcgPGppYW54dW4uemhhbmdAbGludXguaW50ZWwuY29tPgorRGF0ZTogVGh1LCAxMyBPY3QgMjAxNiAwOToyNDoyMSAtMDcwMAorU3ViamVjdDogW1BBVENIXSByZXZlcnQgYWQ2MDFjNzk2MiB0aGF0IGJyaW5ncyAyJSBpbmNyZWFzZSBvZiBidWlsZCB0aW1lLgorCitUaGUgY29tbWVudCBvZiB0aGUgY2hhbmdlIGluIHNxbGl0ZSBmb3NzaWwgcHJvamVjdCBpczoKKyJGb3IgaW4tbWVtb3J5IGRhdGFiYXNlcywgaXQgZG9lcyBub3QgbWF0dGVyIGlmIHBjYWNoZQorZW50cmllcyBhcmUgbWFya2VkICJjbGVhbiIgb3IgIndyaXRhYmxlIi4iCisKK1Vwc3RyZWFtIFN0YXR1czogSW5hcHByb3ByaWF0ZQorCitTaWduZWQtb2ZmLWJ5OiBKaWFueHVuIFpoYW5nIDxqaWFueHVuLnpoYW5nQGxpbnV4LmludGVsLmNvbT4KKy0tLQorIHNxbGl0ZTMuYyB8IDEyICsrKy0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcWxpdGUzLmMgYi9zcWxpdGUzLmMKK2luZGV4IGNjZGRmZTYuLmVjYWU1NTAgMTAwNjQ0CistLS0gYS9zcWxpdGUzLmMKKysrKyBiL3NxbGl0ZTMuYworQEAgLTEzMTQ2LDcgKzEzMTQ2LDcgQEAgc3RydWN0IFBnSGRyIHsKKyAgIHNxbGl0ZTNfcGNhY2hlX3BhZ2UgKnBQYWdlOyAgICAvKiBQY2FjaGUgb2JqZWN0IHBhZ2UgaGFuZGxlICovCisgICB2b2lkICpwRGF0YTsgICAgICAgICAgICAgICAgICAgLyogUGFnZSBkYXRhICovCisgICB2b2lkICpwRXh0cmE7ICAgICAgICAgICAgICAgICAgLyogRXh0cmEgY29udGVudCAqLworLSAgUGdIZHIgKnBEaXJ0eTsgICAgICAgICAgICAgICAgIC8qIFRyYW5zaWVudCBsaXN0IG9mIGRpcnR5IHNvcnRlZCBieSBwZ25vICovCisrICBQZ0hkciAqcERpcnR5OyAgICAgICAgICAgICAgICAgLyogVHJhbnNpZW50IGxpc3Qgb2YgZGlydHkgcGFnZXMgKi8KKyAgIFBhZ2VyICpwUGFnZXI7ICAgICAgICAgICAgICAgICAvKiBUaGUgcGFnZXIgdGhpcyBwYWdlIGlzIHBhcnQgb2YgKi8KKyAgIFBnbm8gcGdubzsgICAgICAgICAgICAgICAgICAgICAvKiBQYWdlIG51bWJlciBmb3IgdGhpcyBwYWdlICovCisgI2lmZGVmIFNRTElURV9DSEVDS19QQUdFUworQEAgLTQzNTA0LDEzICs0MzUwNCw3IEBAIGJpdHZlY19lbmQ6CisgLyogI2luY2x1ZGUgInNxbGl0ZUludC5oIiAqLworIAorIC8qCistKiogQSBjb21wbGV0ZSBwYWdlIGNhY2hlIGlzIGFuIGluc3RhbmNlIG9mIHRoaXMgc3RydWN0dXJlLiAgRXZlcnkKKy0qKiBlbnRyeSBpbiB0aGUgY2FjaGUgaG9sZHMgYSBzaW5nbGUgcGFnZSBvZiB0aGUgZGF0YWJhc2UgZmlsZS4gIFRoZQorLSoqIGJ0cmVlIGxheWVyIG9ubHkgb3BlcmF0ZXMgb24gdGhlIGNhY2hlZCBjb3B5IG9mIHRoZSBkYXRhYmFzZSBwYWdlcy4KKy0qKgorLSoqIEEgcGFnZSBjYWNoZSBlbnRyeSBpcyAiY2xlYW4iIGlmIGl0IGV4YWN0bHkgbWF0Y2hlcyB3aGF0IGlzIGN1cnJlbnRseQorLSoqIG9uIGRpc2suICBBIHBhZ2UgaXMgImRpcnR5IiBpZiBpdCBoYXMgYmVlbiBtb2RpZmllZCBhbmQgbmVlZHMgdG8gYmUKKy0qKiBwZXJzaXN0ZWQgdG8gZGlzay4KKysqKiBBIGNvbXBsZXRlIHBhZ2UgY2FjaGUgaXMgYW4gaW5zdGFuY2Ugb2YgdGhpcyBzdHJ1Y3R1cmUuCisgKioKKyAqKiBwRGlydHksIHBEaXJ0eVRhaWwsIHBTeW5jZWQ6CisgKiogICBBbGwgZGlydHkgcGFnZXMgYXJlIGxpbmtlZCBpbnRvIHRoZSBkb3VibHkgbGlua2VkIGxpc3QgdXNpbmcKK0BAIC00ODMxNCw3ICs0ODMwOCw3IEBAIHN0YXRpYyBpbnQgcGFnZXJfZW5kX3RyYW5zYWN0aW9uKFBhZ2VyICpwUGFnZXIsIGludCBoYXNNYXN0ZXIsIGludCBiQ29tbWl0KXsKKyAgIHBQYWdlci0+cEluSm91cm5hbCA9IDA7CisgICBwUGFnZXItPm5SZWMgPSAwOworICAgaWYoIHJjPT1TUUxJVEVfT0sgKXsKKy0gICAgaWYoIHBhZ2VyRmx1c2hPbkNvbW1pdChwUGFnZXIsIGJDb21taXQpICl7CisrICAgIGlmKCBNRU1EQiB8fCBwYWdlckZsdXNoT25Db21taXQocFBhZ2VyLCBiQ29tbWl0KSApeworICAgICAgIHNxbGl0ZTNQY2FjaGVDbGVhbkFsbChwUGFnZXItPnBQQ2FjaGUpOworICAgICB9ZWxzZXsKKyAgICAgICBzcWxpdGUzUGNhY2hlQ2xlYXJXcml0YWJsZShwUGFnZXItPnBQQ2FjaGUpOworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTMvZml4LWRpc2FibGUtc3RhdGljLXNoZWxsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUzL2ZpeC1kaXNhYmxlLXN0YXRpYy1zaGVsbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmYzOWFlMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTMvZml4LWRpc2FibGUtc3RhdGljLXNoZWxsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotRnJvbSBlZGU1ZGI4M2UzOGNjOGFkOGM5YmUyOTFjZDg5ODVmN2FkOTlmMjkxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMTYgRmViIDIwMTYgMTQ6MDA6MDAgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gZml4IC0tZGlzYWJsZS1zdGF0aWMtc2hlbGwKLQotVXBzdHJlYW0gc3FsaXRlIHNlZW1zIHRvIGJlIG1vdmluZyBmdXJ0aGVyIGFuZCBmdXJ0aGVyIGF3YXkgZnJvbQotYWxsb3dpbmcgdGhlIHNxbGl0ZTMgY29tbWFuZCBsaW5lIHRvb2wgdG8gYmUgZHluYW1pY2FsbHkgbGlua2VkIHdpdGgKLXNxbGl0ZS4KLQotVGhlIC0tZGlzYWJsZS1zdGF0aWMtc2hlbGwgY29uZmlndXJlIG9wdGlvbiBhZGRlZCBpbiAzLjEwLjAgbm8gbG9uZ2VyCi1oYXMgYW55IGVmZmVjdCBpbiAzLjExLjAuIEZvciBub3cgcGF0Y2ggdGhpbmdzIHVwIGFuZCBtYWtlIGl0IHdvcmsuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgotLS0tCi0gTWFrZWZpbGUuYW0gIHwgMTMgKysrKysrKysrKystLQotIGNvbmZpZ3VyZS5hYyB8ICAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggMGUwOWNmYy4uNjA4YzBmZCAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmFtCi0rKysgYi9NYWtlZmlsZS5hbQotQEAgLTYsOSArNiwxOCBAQCBsaWJzcWxpdGUzX2xhX1NPVVJDRVMgPSBzcWxpdGUzLmMKLSBsaWJzcWxpdGUzX2xhX0xERkxBR1MgPSAtbm8tdW5kZWZpbmVkIC12ZXJzaW9uLWluZm8gODo2OjgKLSAKLSBiaW5fUFJPR1JBTVMgPSBzcWxpdGUzCi0tc3FsaXRlM19TT1VSQ0VTID0gc2hlbGwuYyBzcWxpdGUzLmMgc3FsaXRlMy5oCi0tc3FsaXRlM19MREFERCA9IEBSRUFETElORV9MSUJTQAotK3NxbGl0ZTNfU09VUkNFUyA9IHNoZWxsLmMgc3FsaXRlMy5oCi0rRVhUUkFfc3FsaXRlM19TT1VSQ0VTID0gc3FsaXRlMy5jCi0rc3FsaXRlM19MREFERCA9IEBFWFRSQV9TSEVMTF9PQkpAIEBSRUFETElORV9MSUJTQAotIHNxbGl0ZTNfREVQRU5ERU5DSUVTID0gQEVYVFJBX1NIRUxMX09CSkAKLSsKLSsjIFdhcm5pbmc6IEFkZGluZyBTUUxJVEVfRU5BQkxFX0VYUExBSU5fQ09NTUVOVFMgdG8gc3FsaXRlM19DRkxBR1MgZG9lc24ndAotKyMgYWN0dWFsbHkgaGF2ZSBhbnkgZWZmZWN0IGlmIHdlIGxpbmsgdGhlIHNxbGl0ZTMgY29tbWFuZCBsaW5lIHRvb2wgd2l0aCB0aGUKLSsjIGxpYnNxbGl0ZTMuc28gc2hhcmVkIGxpYnJhcnkgKHdoaWNoIHdpbGwgY29udGFpbiBhIHZlcnNpb24gb2Ygc3FsaXRlMy5jCi0rIyBjb21waWxlZCB3aXRoIHRoZSBkZWZhdWx0IEFNX0NGTEFHUyBhYm92ZSkuIElmIFNRTElURV9FTkFCTEVfRVhQTEFJTl9DT01NRU5UUwotKyMgZGVidWcgaXMgcmVxdWlyZWQsIHRoZW4gc3FsaXRlMyBtdXN0IG5vdCBiZSBjb25maWd1cmVkIHdpdGgKLSsjIC0tZGlzYWJsZS1zdGF0aWMtc2hlbGwKLSsKLSBzcWxpdGUzX0NGTEFHUyA9ICQoQU1fQ0ZMQUdTKSAtRFNRTElURV9FTkFCTEVfRVhQTEFJTl9DT01NRU5UUwotIAotIGluY2x1ZGVfSEVBREVSUyA9IHNxbGl0ZTMuaCBzcWxpdGUzZXh0LmgKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDhlN2ZkNjkuLmFkYTU1OWUgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTEzMCw3ICsxMzAsNyBAQCBBQ19BUkdfRU5BQkxFKHN0YXRpYy1zaGVsbCwgW0FTX0hFTFBfU1RSSU5HKAotICAgW3N0YXRpY2FsbHkgbGluayBsaWJzcWxpdGUzIGludG8gc2hlbGwgdG9vbCBbZGVmYXVsdD15ZXNdXSldLCAKLSAgIFtdLCBbZW5hYmxlX3N0YXRpY19zaGVsbD15ZXNdKQotIGlmIHRlc3QgeCIkZW5hYmxlX3N0YXRpY19zaGVsbCIgPT0gInh5ZXMiOyB0aGVuCi0tICBFWFRSQV9TSEVMTF9PQko9c3FsaXRlMy4kT0JKRVhUCi0rICBFWFRSQV9TSEVMTF9PQko9c3FsaXRlMy1zcWxpdGUzLiRPQkpFWFQKLSBlbHNlCi0gICBFWFRSQV9TSEVMTF9PQko9bGlic3FsaXRlMy5sYQotIGZpCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvc3FsaXRlM18zLjExLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTNfMy4xMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OTJkMjBjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvc3FsaXRlM18zLjExLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1yZXF1aXJlIHNxbGl0ZTMuaW5jCi0KLUxJQ0VOU0UgPSAiUEQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcWxpdGUzLmg7ZW5kbGluZT0xMTttZDU9NjVmMGE1N2NhNjkyODcxMGI0MThjMDk0YjM1NzBiYjAiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5zcWxpdGUub3JnLzIwMTYvc3FsaXRlLWF1dG9jb25mLSR7U1FMSVRFX1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vZml4LWRpc2FibGUtc3RhdGljLXNoZWxsLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImE2Y2RjM2UwYTZlNTA4N2Q2MjAwMzdhZTBjNDg3MjBkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUwOGQ0ZGNiY2Y3YTcxODFlOTVjNzE3YTFkYzRhZTNjMDg4MGIzZDU5M2JlMGM0YjQwYWJiNmMzYTBlMjAxZmIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTNfMy4xNC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUzXzMuMTQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzhmYTQwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUzXzMuMTQuMS5iYgpAQCAtMCwwICsxLDEyIEBACityZXF1aXJlIHNxbGl0ZTMuaW5jCisKK0xJQ0VOU0UgPSAiUEQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcWxpdGUzLmg7ZW5kbGluZT0xMTttZDU9NjVmMGE1N2NhNjkyODcxMGI0MThjMDk0YjM1NzBiYjAiCisKK1NSQ19VUkkgPSAiXAorICBodHRwOi8vd3d3LnNxbGl0ZS5vcmcvMjAxNi9zcWxpdGUtYXV0b2NvbmYtJHtTUUxJVEVfUFZ9LnRhci5neiBcCisgIGZpbGU6Ly8wMDAxLXJldmVydC1hZDYwMWM3OTYyLXRoYXQtYnJpbmdzLTItaW5jcmVhc2Utb2YtYnVpbGQtdGkucGF0Y2ggXAorICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzNjM0YTkwYTNmNDk1NDE0NjJiY2FlZDM0NzRiMjY4NCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiYzcxODI0NzY5MDAwMTdiZWNiODE1NjVlY2VhNzc3NWQ0NmFiNzQ3YTk3MjgxYWE2MTBmNGY0NTg4MWM0N2E2IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3VzZXItY3JlYXRpb24veHVzZXItYWNjb3VudF8wLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdXNlci1jcmVhdGlvbi94dXNlci1hY2NvdW50XzAuMS5iYgppbmRleCAxM2JhNjc3Li44MTgxN2QxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdXNlci1jcmVhdGlvbi94dXNlci1hY2NvdW50XzAuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdXNlci1jcmVhdGlvbi94dXNlci1hY2NvdW50XzAuMS5iYgpAQCAtMjEsNyArMjEsNiBAQAogRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9kYnVzLTEvc3lzdGVtLmQvc3lzdGVtLXh1c2VyLmNvbmYiCiAKIFVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCi1HUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSBzaHV0ZG93biIKIFVTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1jcmVhdGUtaG9tZSBcCiAgICAgICAgICAgICAgICAgICAgICAgIC0tZ3JvdXBzIHZpZGVvLHR0eSxhdWRpbyxpbnB1dCxzaHV0ZG93bixkaXNrIFwKICAgICAgICAgICAgICAgICAgICAgICAgLS11c2VyLWdyb3VwIHh1c2VyIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGUtMC4yOC4yL2N2ZS0yMDEyLTI3MzgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdnRlL3Z0ZS0wLjI4LjIvY3ZlLTIwMTItMjczOC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWI5OTgwMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdnRlL3Z0ZS0wLjI4LjIvY3ZlLTIwMTItMjczOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDEyLTI3MzgKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLUZyb20gZTUyNGIwYjNiZDhmYWQ4NDRmZmE3MzkyN2MxOTk1NDViODkyY2RiZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENocmlzdGlhbiBQZXJzY2ggPGNocGVAZ25vbWUub3JnPgotRGF0ZTogU2F0LCAxOSBNYXkgMjAxMiAxOTozNjowOSArMDIwMAotU3ViamVjdDogW1BBVENIIDEvMl0gZW11bGF0aW9uOiBMaW1pdCBpbnRlZ2VyIGFyZ3VtZW50cyB0byA2NTUzNQotCi1UbyBndWFyZCBhZ2FpbnN0IG1hbGljaW91cyBzZXF1ZW5jZXMgY29udGFpbmluZyBleGNlc3NpdmVseSBiaWcgbnVtYmVycywKLWxpbWl0IGFsbCBwYXJzZWQgbnVtYmVycyB0byAxNiBiaXQgcmFuZ2UuIERvaW5nIHRoaXMgaGVyZSBpbiB0aGUgcGFyc2luZwotcm91dGluZSBpcyBhIGNhdGNoLWFsbCBndWFyZDsgdGhpcyBkb2Vzbid0IHByZWNsdWRlIGVuZm9yY2luZwotbW9yZSBzdHJpbmdlbnQgbGltaXRzIGluIHRoZSBoYW5kbGVycyB0aGVtc2VsdmVzLgotCi1odHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njc2MDkwCi0tLS0KLSBzcmMvdGFibGUuYyAgfCAyICstCi0gc3JjL3Z0ZXNlcS5jIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3RhYmxlLmMgYi9zcmMvdGFibGUuYwotaW5kZXggMTQwZThjOC4uODVjZjYzMSAxMDA2NDQKLS0tLSBhL3NyYy90YWJsZS5jCi0rKysgYi9zcmMvdGFibGUuYwotQEAgLTU1MCw3ICs1NTAsNyBAQCBfdnRlX3RhYmxlX2V4dHJhY3RfbnVtYmVycyhHVmFsdWVBcnJheSAqKmFycmF5LAotIAkJaWYgKEdfVU5MSUtFTFkgKCphcnJheSA9PSBOVUxMKSkgewotIAkJCSphcnJheSA9IGdfdmFsdWVfYXJyYXlfbmV3KDEpOwotIAkJfQotLQkJZ192YWx1ZV9zZXRfbG9uZygmdmFsdWUsIHRvdGFsKTsKLSsJCWdfdmFsdWVfc2V0X2xvbmcoJnZhbHVlLCBDTEFNUCAodG90YWwsIDAsIEdfTUFYVVNIT1JUKSk7Ci0gCQlnX3ZhbHVlX2FycmF5X2FwcGVuZCgqYXJyYXksICZ2YWx1ZSk7Ci0gCX0gd2hpbGUgKGkrKyA8IGFyZ2luZm8tPmxlbmd0aCk7Ci0gCWdfdmFsdWVfdW5zZXQoJnZhbHVlKTsKLWRpZmYgLS1naXQgYS9zcmMvdnRlc2VxLmMgYi9zcmMvdnRlc2VxLmMKLWluZGV4IDdlZjRjOGMuLjEwOTkxZGIgMTAwNjQ0Ci0tLS0gYS9zcmMvdnRlc2VxLmMKLSsrKyBiL3NyYy92dGVzZXEuYwotQEAgLTU1Nyw3ICs1NTcsNyBAQCB2dGVfc2VxdWVuY2VfaGFuZGxlcl9tdWx0aXBsZShWdGVUZXJtaW5hbCAqdGVybWluYWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1ZhbHVlQXJyYXkgKnBhcmFtcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWdGVUZXJtaW5hbFNlcXVlbmNlSGFuZGxlciBoYW5kbGVyKQotIHsKLS0gICAgICAgIHZ0ZV9zZXF1ZW5jZV9oYW5kbGVyX211bHRpcGxlX2xpbWl0ZWQodGVybWluYWwsIHBhcmFtcywgaGFuZGxlciwgR19NQVhMT05HKTsKLSsgICAgICAgIHZ0ZV9zZXF1ZW5jZV9oYW5kbGVyX211bHRpcGxlX2xpbWl0ZWQodGVybWluYWwsIHBhcmFtcywgaGFuZGxlciwgR19NQVhVU0hPUlQpOwotIH0KLSAKLSBzdGF0aWMgdm9pZAotLS0gCi0yLjQuOSAoQXBwbGUgR2l0LTYwKQotCi0KLUZyb20gY2YxYWQ0NTNhOGRlZjg3M2M0OWNmNmQ4ODE2MjU5MzQwMmYzMmJiMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENocmlzdGlhbiBQZXJzY2ggPGNocGVAZ25vbWUub3JnPgotRGF0ZTogU2F0LCAxOSBNYXkgMjAxMiAyMDowNDoxMiArMDIwMAotU3ViamVjdDogW1BBVENIIDIvMl0gZW11bGF0aW9uOiBMaW1pdCByZXBldGl0aW9ucwotCi1Eb24ndCBhbGxvdyBtYWxpY2lvdXMgc2VxdWVuY2VzIHRvIGNhdXNlIGV4Y2Vzc2l2ZSByZXBldGl0aW9ucy4KLQotaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTY3NjA5MAotLS0tCi0gc3JjL3Z0ZXNlcS5jIHwgMjUgKysrKysrKysrKysrKysrKysrLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3Z0ZXNlcS5jIGIvc3JjL3Z0ZXNlcS5jCi1pbmRleCAxMDk5MWRiLi4yMDk1MjJmIDEwMDY0NAotLS0tIGEvc3JjL3Z0ZXNlcS5jCi0rKysgYi9zcmMvdnRlc2VxLmMKLUBAIC0xMzkyLDcgKzEzOTIsNyBAQCB2dGVfc2VxdWVuY2VfaGFuZGxlcl9kYyAoVnRlVGVybWluYWwgKnRlcm1pbmFsLCBHVmFsdWVBcnJheSAqcGFyYW1zKQotIHN0YXRpYyB2b2lkCi0gdnRlX3NlcXVlbmNlX2hhbmRsZXJfREMgKFZ0ZVRlcm1pbmFsICp0ZXJtaW5hbCwgR1ZhbHVlQXJyYXkgKnBhcmFtcykKLSB7Ci0tCXZ0ZV9zZXF1ZW5jZV9oYW5kbGVyX211bHRpcGxlKHRlcm1pbmFsLCBwYXJhbXMsIHZ0ZV9zZXF1ZW5jZV9oYW5kbGVyX2RjKTsKLSsJdnRlX3NlcXVlbmNlX2hhbmRsZXJfbXVsdGlwbGVfcih0ZXJtaW5hbCwgcGFyYW1zLCB2dGVfc2VxdWVuY2VfaGFuZGxlcl9kYyk7Ci0gfQotIAotIC8qIERlbGV0ZSBhIGxpbmUgYXQgdGhlIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uLiAqLwotQEAgLTE3ODUsNyArMTc4NSw3IEBAIHZ0ZV9zZXF1ZW5jZV9oYW5kbGVyX3JldmVyc2VfaW5kZXggKFZ0ZVRlcm1pbmFsICp0ZXJtaW5hbCwgR1ZhbHVlQXJyYXkgKnBhcmFtcykKLSBzdGF0aWMgdm9pZAotIHZ0ZV9zZXF1ZW5jZV9oYW5kbGVyX1JJIChWdGVUZXJtaW5hbCAqdGVybWluYWwsIEdWYWx1ZUFycmF5ICpwYXJhbXMpCi0gewotLQl2dGVfc2VxdWVuY2VfaGFuZGxlcl9tdWx0aXBsZSh0ZXJtaW5hbCwgcGFyYW1zLCB2dGVfc2VxdWVuY2VfaGFuZGxlcl9uZCk7Ci0rCXZ0ZV9zZXF1ZW5jZV9oYW5kbGVyX211bHRpcGxlX3IodGVybWluYWwsIHBhcmFtcywgdnRlX3NlcXVlbmNlX2hhbmRsZXJfbmQpOwotIH0KLSAKLSAvKiBTYXZlIGN1cnNvciAocG9zaXRpb24pLiAqLwotQEAgLTI3NzcsOCArMjc3Nyw3IEBAIHZ0ZV9zZXF1ZW5jZV9oYW5kbGVyX2luc2VydF9saW5lcyAoVnRlVGVybWluYWwgKnRlcm1pbmFsLCBHVmFsdWVBcnJheSAqcGFyYW1zKQotIHsKLSAJR1ZhbHVlICp2YWx1ZTsKLSAJVnRlU2NyZWVuICpzY3JlZW47Ci0tCWxvbmcgcGFyYW0sIGVuZCwgcm93OwotLQlpbnQgaTsKLSsJbG9uZyBwYXJhbSwgZW5kLCByb3csIGksIGxpbWl0OwotIAlzY3JlZW4gPSB0ZXJtaW5hbC0+cHZ0LT5zY3JlZW47Ci0gCS8qIFRoZSBkZWZhdWx0IGlzIG9uZS4gKi8KLSAJcGFyYW0gPSAxOwotQEAgLTI3OTYsNyArMjc5NSwxMyBAQCB2dGVfc2VxdWVuY2VfaGFuZGxlcl9pbnNlcnRfbGluZXMgKFZ0ZVRlcm1pbmFsICp0ZXJtaW5hbCwgR1ZhbHVlQXJyYXkgKnBhcmFtcykKLSAJfSBlbHNlIHsKLSAJCWVuZCA9IHNjcmVlbi0+aW5zZXJ0X2RlbHRhICsgdGVybWluYWwtPnJvd19jb3VudCAtIDE7Ci0gCX0KLS0JLyogSW5zZXJ0IHRoZSBuZXcgbGluZXMgYXQgdGhlIGN1cnNvci4gKi8KLSsKLSsJLyogT25seSBhbGxvdyB0byBpbnNlcnQgYXMgbWFueSBsaW5lcyBhcyB0aGVyZSBhcmUgYmV0d2VlbiB0aGlzIHJvdwotKyAgICAgICAgICogYW5kIHRoZSBlbmQgb2YgdGhlIHNjcm9sbGluZyByZWdpb24uIFNlZSBidWcgIzY3NjA5MC4KLSsgICAgICAgICAqLwotKyAgICAgICAgbGltaXQgPSBlbmQgLSByb3cgKyAxOwotKyAgICAgICAgcGFyYW0gPSBNSU4gKHBhcmFtLCBsaW1pdCk7Ci0rCi0gCWZvciAoaSA9IDA7IGkgPCBwYXJhbTsgaSsrKSB7Ci0gCQkvKiBDbGVhciBhIGxpbmUgb2ZmIHRoZSBlbmQgb2YgdGhlIHJlZ2lvbiBhbmQgYWRkIG9uZSB0byB0aGUKLSAJCSAqIHRvcCBvZiB0aGUgcmVnaW9uLiAqLwotQEAgLTI4MTcsOCArMjgyMiw3IEBAIHZ0ZV9zZXF1ZW5jZV9oYW5kbGVyX2RlbGV0ZV9saW5lcyAoVnRlVGVybWluYWwgKnRlcm1pbmFsLCBHVmFsdWVBcnJheSAqcGFyYW1zKQotIHsKLSAJR1ZhbHVlICp2YWx1ZTsKLSAJVnRlU2NyZWVuICpzY3JlZW47Ci0tCWxvbmcgcGFyYW0sIGVuZCwgcm93OwotLQlpbnQgaTsKLSsJbG9uZyBwYXJhbSwgZW5kLCByb3csIGksIGxpbWl0OwotIAotIAlzY3JlZW4gPSB0ZXJtaW5hbC0+cHZ0LT5zY3JlZW47Ci0gCS8qIFRoZSBkZWZhdWx0IGlzIG9uZS4gKi8KLUBAIC0yODM3LDYgKzI4NDEsMTMgQEAgdnRlX3NlcXVlbmNlX2hhbmRsZXJfZGVsZXRlX2xpbmVzIChWdGVUZXJtaW5hbCAqdGVybWluYWwsIEdWYWx1ZUFycmF5ICpwYXJhbXMpCi0gCX0gZWxzZSB7Ci0gCQllbmQgPSBzY3JlZW4tPmluc2VydF9kZWx0YSArIHRlcm1pbmFsLT5yb3dfY291bnQgLSAxOwotIAl9Ci0rCi0rICAgICAgICAvKiBPbmx5IGFsbG93IHRvIGRlbGV0ZSBhcyBtYW55IGxpbmVzIGFzIHRoZXJlIGFyZSBiZXR3ZWVuIHRoaXMgcm93Ci0rICAgICAgICAgKiBhbmQgdGhlIGVuZCBvZiB0aGUgc2Nyb2xsaW5nIHJlZ2lvbi4gU2VlIGJ1ZyAjNjc2MDkwLgotKyAgICAgICAgICovCi0rICAgICAgICBsaW1pdCA9IGVuZCAtIHJvdyArIDE7Ci0rICAgICAgICBwYXJhbSA9IE1JTiAocGFyYW0sIGxpbWl0KTsKLSsKLSAJLyogQ2xlYXIgdGhlbSBmcm9tIGJlbG93IHRoZSBjdXJyZW50IGN1cnNvci4gKi8KLSAJZm9yIChpID0gMDsgaSA8IHBhcmFtOyBpKyspIHsKLSAJCS8qIEluc2VydCBhIGxpbmUgYXQgdGhlIGVuZCBvZiB0aGUgcmVnaW9uIGFuZCByZW1vdmUgb25lIGZyb20KLS0tIAotMi40LjkgKEFwcGxlIEdpdC02MCkKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGUtMC4yOC4yL29ic29sZXRlX2F1dG9tYWtlX21hY3Jvcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92dGUvdnRlLTAuMjguMi9vYnNvbGV0ZV9hdXRvbWFrZV9tYWNyb3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3NjNkMzcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGUtMC4yOC4yL29ic29sZXRlX2F1dG9tYWtlX21hY3Jvcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkxNTQ1XQotCi1TaWduZWQtb2ZmLWJ5OiBNYXJrbyBMaW5kcXZpc3QgPGNhemZpNzRAZ21haWwuY29tPgotZGlmZiAtTnVyZCB2dGUtMC4yOC4yL2dub21lLXB0eS1oZWxwZXIvY29uZmlndXJlLmluIHZ0ZS0wLjI4LjIvZ25vbWUtcHR5LWhlbHBlci9jb25maWd1cmUuaW4KLS0tLSB2dGUtMC4yOC4yL2dub21lLXB0eS1oZWxwZXIvY29uZmlndXJlLmluCTIwMTAtMDctMTUgMjA6MDg6NDQuMDAwMDAwMDAwICswMzAwCi0rKysgdnRlLTAuMjguMi9nbm9tZS1wdHktaGVscGVyL2NvbmZpZ3VyZS5pbgkyMDEzLTAxLTExIDE0OjUwOjM0Ljk3MTAyNzQ0MCArMDIwMAotQEAgLTgsNyArOCw2IEBACi0gQUNfSVNDX1BPU0lYCi0gQUNfUFJPR19DQwotIEFDX1NURENfSEVBREVSUwotLUFNX1BST0dfQ0NfU1REQwotCi0gaWYgdGVzdCAteiAiJGVuYWJsZV9tYWludGFpbmVyX21vZGUiOyB0aGVuCi0gICBlbmFibGVfbWFpbnRhaW5lcl9tb2RlPXllcwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGUuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGUuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTY1Y2MyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92dGUvdnRlLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVNVTU1BUlkgPSAiVmlydHVhbCB0ZXJtaW5hbCBlbXVsYXRvciBHVEsrIHdpZGdldCBsaWJyYXJ5IgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9idWdsaXN0LmNnaT9wcm9kdWN0PXZ0ZSIKLUxJQ0VOU0UgPSAiTEdQTHYyLjAiCi1ERVBFTkRTID0gIiBnbGliLTIuMCBndGsrIGludGx0b29sLW5hdGl2ZSBuY3Vyc2VzIgotUkRFUEVORFNfbGlidnRlID0gInZ0ZS10ZXJtY2FwIgotCi1pbmhlcml0IGdub21lIGd0ay1kb2MgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KLUFOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAiJHtHVEsyRElTVFJPRkVBVFVSRVN9IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXB5dGhvbiIKLQotUEFDS0FHRVMgPSsgImxpYnZ0ZSB2dGUtdGVybWNhcCIKLUZJTEVTX2xpYnZ0ZSA9ICIke2xpYmRpcn0vKi5zby4qICR7bGliZXhlY2Rpcn0vZ25vbWUtcHR5LWhlbHBlciIKLUZJTEVTX3Z0ZS10ZXJtY2FwID0gIiR7ZGF0YWRpcn0vdnRlL3Rlcm1jYXAtMC4wIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdnRlL3Z0ZS8wMDAxLUFkZC1tNC12YXBpZ2VuLm00LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGUvMDAwMS1BZGQtbTQtdmFwaWdlbi5tNC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYzU2MzBlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGUvMDAwMS1BZGQtbTQtdmFwaWdlbi5tNC5wYXRjaApAQCAtMCwwICsxLDExOSBAQAorRnJvbSAwOGNhMWM0OGIyNWMzMzJiNzViYmEyYTZiNWQ3NTdkYTAwNmU5NTViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK0RhdGU6IEZyaSwgNyBPY3QgMjAxNiAxNjoyNzo1NyArMDMwMAorU3ViamVjdDogW1BBVENIXSBBZGQgbTQvdmFwaWdlbi5tNAorCitCdWlsZGluZyB3aXRob3V0IHZhbGEgd2lsbCBmYWlsIGlmIHdlIGRvbid0IGhhdmUgYSB2YXBpZ2VuLm00LgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CistLS0KKyBtNC92YXBpZ2VuLm00IHwgOTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgOTYgaW5zZXJ0aW9ucygrKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBtNC92YXBpZ2VuLm00CisKK2RpZmYgLS1naXQgYS9tNC92YXBpZ2VuLm00IGIvbTQvdmFwaWdlbi5tNAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmYyZGYxMmYKKy0tLSAvZGV2L251bGwKKysrKyBiL200L3ZhcGlnZW4ubTQKK0BAIC0wLDAgKzEsOTYgQEAKKytkbmwgdmFwaWdlbi5tNAorK2RubAorK2RubCBDb3B5cmlnaHQgMjAxMiBFdmFuIE5lbWVyc29uCisrZG5sCisrZG5sIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKytkbmwgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworK2RubCBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKytkbmwgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrZG5sCisrZG5sIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorK2RubCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorK2RubCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorK2RubCBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorK2RubAorK2RubCBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrZG5sIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKytkbmwgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxICBVU0EKKysKKysjIFZBUElHRU5fQ0hFQ0soW1ZFUlNJT05dLCBbQVBJX1ZFUlNJT05dLCBbRk9VTkQtSU5UUk9TUEVDVElPTl0sIFtERUZBVUxUXSkKKysjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrIyBDaGVjayB2YXBpZ2VuIGV4aXN0ZW5jZSBhbmQgdmVyc2lvbgorKyMKKysjIFNlZSBodHRwOi8vbGl2ZS5nbm9tZS5vcmcvVmFsYS9VcHN0cmVhbUd1aWRlIGZvciBkZXRhaWxlZCBkb2N1bWVudGF0aW9uCisrQUNfREVGVU4oW1ZBUElHRU5fQ0hFQ0tdLAorK1sKKysgIEFDX0JFRk9SRShbR09CSkVDVF9JTlRST1NQRUNUSU9OX0NIRUNLXSxbJDBdKQorKyAgQUNfQkVGT1JFKFtHT0JKRUNUX0lOVFJPU1BFQ1RJT05fUkVRVUlSRV0sWyQwXSkKKysKKysgIEFDX0FSR19FTkFCTEUoW3ZhbGFdLAorKyAgICBbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXZhbGFbPUA8OkBuby9hdXRvL3llc0A6PkBdXSxbYnVpbGQgVmFsYSBiaW5kaW5ncyBAPDpAZGVmYXVsdD1daWZlbHNlKCQ0LCxhdXRvLCQ0KVtAOj5AXSldLCxbCisrICAgICAgQVNfSUYoW3Rlc3QgIngkNCIgPSAieCJdLCBbCisrICAgICAgICAgIGVuYWJsZV92YWxhPWF1dG8KKysgICAgICAgIF0sIFsKKysgICAgICAgICAgZW5hYmxlX3ZhbGE9JDQKKysgICAgICAgIF0pCisrICAgIF0pCisrCisrICBBU19DQVNFKFskZW5hYmxlX3ZhbGFdLCBbbm9dLCBbZW5hYmxlX3ZhbGE9bm9dLAorKyAgICAgIFt5ZXNdLCBbCisrICAgICAgICBBU19JRihbdGVzdCAieCQzIiAhPSAieHllcyIgLWEgIngkZm91bmRfaW50cm9zcGVjdGlvbiIgIT0gInh5ZXMiXSwgWworKyAgICAgICAgICAgIEFDX01TR19FUlJPUihbVmFsYSBiaW5kaW5ncyByZXF1aXJlIEdPYmplY3QgSW50cm9zcGVjdGlvbl0pCisrICAgICAgICAgIF0pCisrICAgICAgXSwgW2F1dG9dLCBbCisrICAgICAgICBBU19JRihbdGVzdCAieCQzIiAhPSAieHllcyIgLWEgIngkZm91bmRfaW50cm9zcGVjdGlvbiIgIT0gInh5ZXMiXSwgWworKyAgICAgICAgICAgIGVuYWJsZV92YWxhPW5vCisrICAgICAgICAgIF0pCisrICAgICAgXSwgWworKyAgICAgICAgQUNfTVNHX0VSUk9SKFtJbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byAtLWVuYWJsZS12YWxhLCBzaG91bGQgYmUgb25lIG9mIEA8OkBuby9hdXRvL3llc0A6PkBdKQorKyAgICAgIF0pCisrCisrICBBU19JRihbdGVzdCAieCQyIiA9ICJ4Il0sIFsKKysgICAgICB2YXBpZ2VuX3BrZ19uYW1lPXZhcGlnZW4KKysgICAgXSwgWworKyAgICAgIHZhcGlnZW5fcGtnX25hbWU9dmFwaWdlbi0kMgorKyAgICBdKQorKyAgQVNfSUYoW3Rlc3QgIngkMSIgPSAieCJdLCBbCisrICAgICAgdmFwaWdlbl9wa2c9IiR2YXBpZ2VuX3BrZ19uYW1lIgorKyAgICBdLCBbCisrICAgICAgdmFwaWdlbl9wa2c9IiR2YXBpZ2VuX3BrZ19uYW1lID49ICQxIgorKyAgICBdKQorKworKyAgUEtHX1BST0dfUEtHX0NPTkZJRworKworKyAgUEtHX0NIRUNLX0VYSVNUUyhbJHZhcGlnZW5fcGtnXSwgWworKyAgICAgIEFTX0lGKFt0ZXN0ICIkZW5hYmxlX3ZhbGEiID0gImF1dG8iXSwgWworKyAgICAgICAgICBlbmFibGVfdmFsYT15ZXMKKysgICAgICAgIF0pCisrICAgIF0sIFsKKysgICAgICBBU19DQVNFKFskZW5hYmxlX3ZhbGFdLCBbeWVzXSwgWworKyAgICAgICAgICBBQ19NU0dfRVJST1IoWyR2YXBpZ2VuX3BrZyBub3QgZm91bmRdKQorKyAgICAgICAgXSwgW2F1dG9dLCBbCisrICAgICAgICAgIGVuYWJsZV92YWxhPW5vCisrICAgICAgICBdKQorKyAgICBdKQorKworKyAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgdmFsYV0pCisrCisrICBBU19DQVNFKFskZW5hYmxlX3ZhbGFdLAorKyAgICBbeWVzXSwgWworKyAgICAgIFZBUElHRU49YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9dmFwaWdlbiB2YXBpZ2VuYAorKyAgICAgIFZBUElHRU5fTUFLRUZJTEU9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9ZGF0YWRpciB2YXBpZ2VuYC92YWxhL01ha2VmaWxlLnZhcGlnZW4KKysgICAgICBBU19JRihbdGVzdCAieCQyIiA9ICJ4Il0sIFsKKysgICAgICAgICAgVkFQSUdFTl9WQVBJRElSPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXZhcGlkaXIgdmFwaWdlbmAKKysgICAgICAgIF0sIFsKKysgICAgICAgICAgVkFQSUdFTl9WQVBJRElSPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXZhcGlkaXJfdmVyc2lvbmVkIHZhcGlnZW5gCisrICAgICAgICBdKQorKyAgICBdKQorKworKyAgQUNfTVNHX1JFU1VMVChbJGVuYWJsZV92YWxhXSkKKysKKysgIEFDX1NVQlNUKFtWQVBJR0VOXSkKKysgIEFDX1NVQlNUKFtWQVBJR0VOX1ZBUElESVJdKQorKyAgQUNfU1VCU1QoW1ZBUElHRU5fTUFLRUZJTEVdKQorKworKyAgQU1fQ09ORElUSU9OQUwoRU5BQkxFX1ZBUElHRU4sIHRlc3QgIngkZW5hYmxlX3ZhbGEiID0gInh5ZXMiKQorK10pCistLSAKKzIuMS40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92dGUvdnRlLzAwMDEtRG9uLXQtZW5hYmxlLXN0YWNrLXByb3RlY3Rpb24tYnktZGVmYXVsdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92dGUvdnRlLzAwMDEtRG9uLXQtZW5hYmxlLXN0YWNrLXByb3RlY3Rpb24tYnktZGVmYXVsdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2ZjNTU5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGUvMDAwMS1Eb24tdC1lbmFibGUtc3RhY2stcHJvdGVjdGlvbi1ieS1kZWZhdWx0LnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK0Zyb20gYjBhNTc5ZDgzZTM1NTU0NWI2NDc0MmM5OTdmZThiMWQ1OGJmNDIwNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitEYXRlOiBNb24sIDEzIEp1biAyMDE2IDExOjA1OjAwICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIERvbid0IGVuYWJsZSBzdGFjay1wcm90ZWN0aW9uIGJ5IGRlZmF1bHQKKworVGhlc2UgYXJlIHNldCBieSBzZWN1cml0eV9mbGFncy5pbmMuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCAyIC0tCisgMSBmaWxlIGNoYW5nZWQsIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDA2OGQwNzIuLmQ1ODBmODQgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTEzOCw4ICsxMzgsNiBAQCBtNF9kZWZpbmUoW2NvbXBpbGVyX2ZsYWdzX2NvbW1vbl0sWyBkbmwKKyAgIC1mbm8tY29tbW9uIGRubAorICAgLWZkaWFnbm9zdGljcy1zaG93LW9wdGlvbiBkbmwKKyAgIC1mbm8tc3RyaWN0LWFsaWFzaW5nIGRubAorLSAgLWZzdGFjay1wcm90ZWN0b3IgZG5sCistICAtZnN0YWNrLXByb3RlY3Rvci1zdHJvbmcgZG5sCisgICAtZm5vLXNlbWFudGljLWludGVycG9zaXRpb24gZG5sCisgICAtV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIGRubAorIF0pCistLSAKKzIuMS40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92dGUvdnRlXzAuMjguMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92dGUvdnRlXzAuMjguMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzQwODdjYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdnRlL3Z0ZV8wLjI4LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1yZXF1aXJlIHZ0ZS5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2JmNTAwMDJhZWZkMDAyZjQ5ZTdiYjg1NDA2M2Y3ZTciCi0KLVBSID0gInI2IgotCi1TUkNfVVJJICs9ICJmaWxlOi8vb2Jzb2xldGVfYXV0b21ha2VfbWFjcm9zLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9jdmUtMjAxMi0yNzM4LnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1DRkxBR1MgKz0gIi1EX0dOVV9TT1VSQ0UiCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjQ5N2YyNmU0NTczMDg2NDllNmVjZTMyYjNiYjE0MmZmIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiODZjZjBiODFhYTAyM2ZhOTNlZDQxNTY1M2Q1MWM5Njc2N2YyMGIyZDczMzRjODkzY2FiYTcxZTQyNjU0YjBhZSIKLQotUkVDSVBFX05PX1VQREFURV9SRUFTT04gPSAibWF0Y2hib3gtdGVybWluYWwgbmVlZHMgdG8gYmUgcG9ydGVkIG92ZXIgdG8gbmV3IHZ0ZSBmaXJzdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92dGUvdnRlXzAuNDQuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92dGUvdnRlXzAuNDQuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGI2NzFlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGVfMC40NC4yLmJiCkBAIC0wLDAgKzEsNDMgQEAKK1NVTU1BUlkgPSAiVmlydHVhbCB0ZXJtaW5hbCBlbXVsYXRvciBHVEsrIHdpZGdldCBsaWJyYXJ5IgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9idWdsaXN0LmNnaT9wcm9kdWN0PXZ0ZSIKK0xJQ0VOU0UgPSAiTEdQTHYyLjErIgorREVQRU5EUyA9ICJnbGliLTIuMCBndGsrMyBpbnRsdG9vbC1uYXRpdmUiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorCitpbmhlcml0IGdub21lYmFzZSBndGstZG9jIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKKyMgdmFwaWdlbi5tNCBpcyByZXF1aXJlZCB3aGVuIHZhbGEgaXMgbm90IHByZXNlbnQgKGJ1dCB0aGUgb25lIGZyb20gdmFsYSBzaG91bGQgYmUgdXNlZCBub3JtYWxseSkKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLURvbi10LWVuYWJsZS1zdGFjay1wcm90ZWN0aW9uLWJ5LWRlZmF1bHQucGF0Y2ggXAorICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndmFsYScsICcnLCAnZmlsZTovLzAwMDEtQWRkLW00LXZhcGlnZW4ubTQucGF0Y2gnLCBkKSB9IFwKKyAgICAgICAgICAgICIKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImVjYThmOGE5ZDlmOWJiOGU5ZDU5MmQwYWNmZWVjMDE1IgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiYTFlYTU5NDgxNGJiMTM2YTNhOWE2Yzc2NTZiNDYyNDA1NzFmNmExOTg4MjVjMTExMTAwN2ZlOTkxOTRiMDk0OSIKKworQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzNESVNUUk9GRUFUVVJFU30iCisKKyMgSW5zdGVhZCBvZiAiaW5oZXJpdCB2YWxhIiB3ZSBkbyB0aGUgcmVsZXZhbnQgc2V0dGluZ3MgaGVyZSBzbyB3ZSBjYW4KKyMgc2V0IERFUEVORFMgYmFzZWQgb24gUEFDS0FHRUNPTkZJRy4KKworIyBPdXIgcGF0Y2hlZCB2ZXJzaW9uIG9mIFZhbGEgbG9va3MgaW4gU1RBR0lOR19EQVRBRElSIGZvciAudmFwaSBmaWxlcworZXhwb3J0IFNUQUdJTkdfREFUQURJUgorIyBVcHN0cmVhbSBWYWxhID49IDAuMTEgbG9va3MgaW4gWERHX0RBVEFfRElSUyBmb3IgLnZhcGkgZmlsZXMKK2V4cG9ydCBYREdfREFUQV9ESVJTID0gIiR7U1RBR0lOR19EQVRBRElSfSIKKworIyBQYWNrYWdlIGFkZGl0aW9uYWwgZmlsZXMKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS92YWxhL3ZhcGkvKiIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbdmFsYV0gPSAiLS1lbmFibGUtdmFsYSwtLWRpc2FibGUtdmFsYSx2YWxhLW5hdGl2ZSB2YWxhIgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0td2l0aC1nbnV0bHMsLS13aXRob3V0LWdudXRscyxnbnV0bHMiCisKK0NGTEFHUyArPSAiLURfR05VX1NPVVJDRSIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS10ZXN0LWFwcGxpY2F0aW9uIgorCisjIGxpYnRvb2wgYWRkcyAiLW5vc3RkbGliIiB3aGVuIGcrKyBpcyB1c2VkLiBUaGlzIGJyZWFrcyBQSUUgYnVpbGRzLgorIyBVc2UgbGlidG9vbC1jcm9zcyAod2hpY2ggaGFzIGEgaGFjayB0byBwcmV2ZW50IHRoYXQpIGluc3RlYWQuCitFWFRSQV9PRU1BS0VfY2xhc3MtdGFyZ2V0ID0gIkxJQlRPT0w9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vJHtIT1NUX1NZU30tbGlidG9vbCIKKworUEFDS0FHRVMgPSsgImxpYnZ0ZSIKK0ZJTEVTX2xpYnZ0ZSA9ICIke2xpYmRpcn0vKi5zby4qICR7bGliZGlyfS9naXJlcG9zaXRvcnktMS4wLyoiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2FybS1jb21tb24gYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2FybS1jb21tb24KaW5kZXggYTNjOTc5Zi4uMTk4Yzk4YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9hcm0tY29tbW9uCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvYXJtLWNvbW1vbgpAQCAtMTEzLDcgKzExMyw2IEBACiByc3luY19jdl9IQVZFX1VOU0lHTkVEX0NIQVI9JHtyc3luY19jdl9IQVZFX1VOU0lHTkVEX0NIQVI9bm99CiByc3luY19jdl9IQVZFX0JST0tFTl9SRUFERElSPSR7cnN5bmNfY3ZfSEFWRV9CUk9LRU5fUkVBRERJUj1ub30KIHJzeW5jX2N2X0hBVkVfR0VUVElNRU9GREFZX1RaPSR7cnN5bmNfY3ZfSEFWRV9HRVRUSU1FT0ZEQVlfVFo9eWVzfQotcnN5bmNfY3ZfSEFWRV9DOTlfVlNOUFJJTlRGPSR7cnN5bmNfY3ZfSEFWRV9DOTlfVlNOUFJJTlRGPXllc30KIHJzeW5jX2N2X0hBVkVfU0VDVVJFX01LU1RFTVA9JHtyc3luY19jdl9IQVZFX1NFQ1VSRV9NS1NURU1QPXllc30KIHJzeW5jX2N2X1JFUExBQ0VfSU5FVF9OVE9BPSR7cnN5bmNfY3ZfUkVQTEFDRV9JTkVUX05UT0E9bm99CiByc3luY19jdl9SRVBMQUNFX0lORVRfQVRPTj0ke3JzeW5jX2N2X1JFUExBQ0VfSU5FVF9BVE9OPW5vfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9jb21tb24tbGludXggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2NvbW1vbi1saW51eAppbmRleCAwYTc1MmE0Li4yOTU4NzE2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2NvbW1vbi1saW51eAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2NvbW1vbi1saW51eApAQCAtNjEsMyArNjEsNiBAQAogCiAjIGFwYWNoZQogYWNfY3Zfb19ub25ibG9ja19pbmhlcml0ZWQ9JHthY19jdl9vX25vbmJsb2NrX2luaGVyaXRlZD1ub30KKworIyByc3luYworcnN5bmNfY3ZfSEFWRV9DOTlfVlNOUFJJTlRGPSR7cnN5bmNfY3ZfSEFWRV9DOTlfVlNOUFJJTlRGPXllc30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvaXg4Ni1jb21tb24gYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2l4ODYtY29tbW9uCmluZGV4IDIzYjhlOGIuLmY0Y2YwYjggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvaXg4Ni1jb21tb24KKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9peDg2LWNvbW1vbgpAQCAtMTU0LDcgKzE1NCw2IEBACiByc3luY19jdl9IQVZFX1VOU0lHTkVEX0NIQVI9JHtyc3luY19jdl9IQVZFX1VOU0lHTkVEX0NIQVI9bm99CiByc3luY19jdl9IQVZFX0JST0tFTl9SRUFERElSPSR7cnN5bmNfY3ZfSEFWRV9CUk9LRU5fUkVBRERJUj1ub30KIHJzeW5jX2N2X0hBVkVfR0VUVElNRU9GREFZX1RaPSR7cnN5bmNfY3ZfSEFWRV9HRVRUSU1FT0ZEQVlfVFo9eWVzfQotcnN5bmNfY3ZfSEFWRV9DOTlfVlNOUFJJTlRGPSR7cnN5bmNfY3ZfSEFWRV9DOTlfVlNOUFJJTlRGPXllc30KIHJzeW5jX2N2X0hBVkVfU0VDVVJFX01LU1RFTVA9JHtyc3luY19jdl9IQVZFX1NFQ1VSRV9NS1NURU1QPXllc30KIHJzeW5jX2N2X1JFUExBQ0VfSU5FVF9OVE9BPSR7cnN5bmNfY3ZfUkVQTEFDRV9JTkVUX05UT0E9bm99CiByc3luY19jdl9SRVBMQUNFX0lORVRfQVRPTj0ke3JzeW5jX2N2X1JFUExBQ0VfSU5FVF9BVE9OPW5vfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9taXBzNjRlbC1saW51eCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvbWlwczY0ZWwtbGludXgKaW5kZXggOGI2MWViMC4uNjgwMTcxZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9taXBzNjRlbC1saW51eAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL21pcHM2NGVsLWxpbnV4CkBAIC0zNSw2ICszNSw3IEBACiBhY19jdl9hbGlnbm9mX2d1aW50MzI9NAogYWNfY3ZfYWxpZ25vZl9ndWludDY0PTgKIGFjX2N2X2FsaWdub2ZfdW5zaWduZWRfbG9uZz04CithY19jdl9zaXplb2Zfc3NpemVfdD04CiAKICMgbGlicGNhcAogYWNfY3ZfbGludXhfdmVycz0ke2FjX2N2X2xpbnV4X3ZlcnM9Mn0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvbWlwc2lzYTMycjYtbGludXggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL21pcHNpc2EzMnI2LWxpbnV4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyYTU0ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL21pcHNpc2EzMnI2LWxpbnV4CkBAIC0wLDAgKzEsNzkgQEAKKyMgZ2VuZXJhbAorYWNfY3ZfZnVuY19zZXR2YnVmX3JldmVyc2VkPSR7YWNfY3ZfZnVuY19zZXR2YnVmX3JldmVyc2VkPW5vfQorCisjIGJhc2gKK2FjX2N2X2NfbG9uZ19kb3VibGU9JHthY19jdl9jX2xvbmdfZG91YmxlPW5vfQorYmFzaF9jdl9mdW5jX3NpZ3NldGptcD0ke2Jhc2hfY3ZfZnVuY19zaWdzZXRqbXA9cHJlc2VudH0KKworIyBvcGVuc3NoCithY19jdl9oYXZlX2FjY3JpZ2h0c19pbl9tc2doZHI9JHthY19jdl9oYXZlX2FjY3JpZ2h0c19pbl9tc2doZHI9bm99CithY19jdl9oYXZlX2Jyb2tlbl9zbnByaW50Zj0ke2FjX2N2X2hhdmVfYnJva2VuX3NucHJpbnRmPW5vfQorYWNfY3ZfaGF2ZV9jb250cm9sX2luX21zZ2hkcj0ke2FjX2N2X2hhdmVfY29udHJvbF9pbl9tc2doZHI9eWVzfQorYWNfY3ZfaGF2ZV9vcGVucHR5X2N0dHlfYnVnPSR7YWNfY3ZfaGF2ZV9vcGVucHR5X2N0dHlfYnVnPW5vfQorYWNfY3ZfaGF2ZV9zcGFjZV9kX25hbWVfaW5fc3RydWN0X2RpcmVudD0ke2FjX2N2X2hhdmVfc3BhY2VfZF9uYW1lX2luX3N0cnVjdF9kaXJlbnQ9eWVzfQorCisjIGZnZXQKK2NvbXBhdF9jdl9mdW5jX3NucHJpbnRmX3dvcmtzPSR7Y29tcGF0X2N2X2Z1bmNfc25wcmludGZfd29ya3M9eWVzfQorCisjIGdsaWIKK2dsaWJfY3ZfX192YV9jb3B5PSR7Z2xpYl9jdl9fX3ZhX2NvcHk9eWVzfQorZ2xpYl9jdl9oYXNfX2lubGluZT0ke2dsaWJfY3ZfaGFzX19pbmxpbmU9eWVzfQorZ2xpYl9jdl9oYXNfX2lubGluZV9fPSR7Z2xpYl9jdl9oYXNfX2lubGluZV9fPXllc30KK2dsaWJfY3ZfaGFzaW5saW5lPSR7Z2xpYl9jdl9oYXNpbmxpbmU9eWVzfQorZ2xpYl9jdl9sb25nX2xvbmdfZm9ybWF0PSR7Z2xpYl9jdl9sb25nX2xvbmdfZm9ybWF0PWxsfQorZ2xpYl9jdl9ydGxkZ2xvYmFsX2Jyb2tlbj0ke2dsaWJfY3ZfcnRsZGdsb2JhbF9icm9rZW49bm99CitnbGliX2N2X3NhbmVfcmVhbGxvYz0ke2dsaWJfY3Zfc2FuZV9yZWFsbG9jPXllc30KK2dsaWJfY3Zfc2l6ZW9mX2dtdXRleD0ke2dsaWJfY3Zfc2l6ZW9mX2dtdXRleD0yNH0KK2dsaWJfY3Zfc2l6ZW9mX3N5c3RlbV90aHJlYWQ9JHtnbGliX2N2X3NpemVvZl9zeXN0ZW1fdGhyZWFkPTR9CitnbGliX2N2X3N0YWNrX2dyb3dzPSR7Z2xpYl9jdl9zdGFja19ncm93cz1ub30KK2dsaWJfY3ZfdXNjb3JlPSR7Z2xpYl9jdl91c2NvcmU9bm99CisKKyMgZ2xpYi0yLjAKK2dsaWJfY3Zfc3RhY2tfZ3Jvd3M9JHtnbGliX2N2X3N0YWNrX2dyb3dzPW5vfQordXRpbHNfY3Zfc3lzX29wZW5fbWF4PSR7dXRpbHNfY3Zfc3lzX29wZW5fbWF4PTEwMTV9CitnbGliX2N2X3VzZV9waWRfc3Vycm9nYXRlPSR7Z2xpYl9jdl91c2VfcGlkX3N1cnJvZ2F0ZT15ZXN9CisKKyMgbGlicGNhcAorYWNfY3ZfbGludXhfdmVycz0ke2FjX2N2X2xpbnV4X3ZlcnM9Mn0KKworIyBzdGFydHVwLW5vdGlmaWNhdGlvbgorbGZfY3Zfc2FuZV9yZWFsbG9jPSR7bGZfY3Zfc2FuZV9yZWFsbG9jPXllc30KKworIyBsaWJpZGwKK2xpYklETF9jdl9sb25nX2xvbmdfZm9ybWF0PSR7bGliSURMX2N2X2xvbmdfbG9uZ19mb3JtYXQ9bGx9CisKKyMgbmNmdHAKK3dpX2N2X3N0cnVjdF90aW1ldmFsX3R2X3NlYz0ke3dpX2N2X3N0cnVjdF90aW1ldmFsX3R2X3NlYz1sb25nfQord2lfY3Zfc3RydWN0X3RpbWV2YWxfdHZfdXNlYz0ke3dpX2N2X3N0cnVjdF90aW1ldmFsX3R2X3VzZWM9bG9uZ30KKworIyBkYgorZGJfY3ZfYWxpZ25fdD0ke2RiX2N2X2FsaWduX3Q9J3Vuc2lnbmVkIGxvbmcgbG9uZyd9CitkYl9jdl9hbGlnbnBfdD0ke2RiX2N2X2FsaWducF90PSd1bnNpZ25lZCBsb25nJ30KK2RiX2N2X2ZjbnRsX2Zfc2V0ZmQ9JHtkYl9jdl9mY250bF9mX3NldGZkPXllc30KK2RiX2N2X3NwcmludGZfY291bnQ9JHtkYl9jdl9zcHJpbnRmX2NvdW50PXllc30KKworIyBycmR0b29sCityZF9jdl9pZWVlX3dvcmtzPSR7cmRfY3ZfaWVlZV93b3Jrcz15ZXN9CisjIGFjX2N2X3BhdGhfUEVSTD0ke2FjX2N2X3BhdGhfUEVSTD1ub30KKworIyBnZXR0ZXh0CithbV9jdl9mdW5jX3dvcmtpbmdfZ2V0bGluZT0ke2FtX2N2X2Z1bmNfd29ya2luZ19nZXRsaW5lPXllc30KKworIyBzYW1iYQorc2FtYmFfY3ZfSEFWRV9HRVRUSU1FT0ZEQVlfVFo9JHtzYW1iYV9jdl9IQVZFX0dFVFRJTUVPRkRBWV9UWj15ZXN9CisKKyMgdmltCithY19jdl9zaXplb2ZfaW50PSR7YWNfY3Zfc2l6ZW9mX2ludD00fQorCisjIGludGVyY29tCithY19jdl9mdW5jX2ZubWF0Y2hfd29ya3M9JHthY19jdl9mdW5jX2ZubWF0Y2hfd29ya3M9eWVzfQorCisjIGxtYmVuY2gKK2FjX2N2X3VpbnQ9JHthY19jdl91bml0PXllc30KKworIyBELUJVUworYWNfY3ZfZnVuY19wb3NpeF9nZXRwd25hbV9yPSR7YWNfY3ZfZnVuY19wb3NpeF9nZXRwd25hbV9yPXllc30KKworIyBldm9sdXRpb24tZGF0YS1zZXJ2ZXIKK2FjX2N2X2xpYmljb252X3V0Zjg9JHthY19jdl9saWJpY29udl91dGY4PXllc30KKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9taXBzaXNhMzJyNmVsLWxpbnV4IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9taXBzaXNhMzJyNmVsLWxpbnV4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5NmIxYmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL21pcHNpc2EzMnI2ZWwtbGludXgKQEAgLTAsMCArMSw3OSBAQAorIyBnZW5lcmFsCithY19jdl9mdW5jX3NldHZidWZfcmV2ZXJzZWQ9JHthY19jdl9mdW5jX3NldHZidWZfcmV2ZXJzZWQ9bm99CisKKyMgYmFzaAorYWNfY3ZfY19sb25nX2RvdWJsZT0ke2FjX2N2X2NfbG9uZ19kb3VibGU9bm99CitiYXNoX2N2X2Z1bmNfc2lnc2V0am1wPSR7YmFzaF9jdl9mdW5jX3NpZ3NldGptcD1wcmVzZW50fQorCisjIG9wZW5zc2gKK2FjX2N2X2hhdmVfYWNjcmlnaHRzX2luX21zZ2hkcj0ke2FjX2N2X2hhdmVfYWNjcmlnaHRzX2luX21zZ2hkcj1ub30KK2FjX2N2X2hhdmVfYnJva2VuX3NucHJpbnRmPSR7YWNfY3ZfaGF2ZV9icm9rZW5fc25wcmludGY9bm99CithY19jdl9oYXZlX2NvbnRyb2xfaW5fbXNnaGRyPSR7YWNfY3ZfaGF2ZV9jb250cm9sX2luX21zZ2hkcj15ZXN9CithY19jdl9oYXZlX29wZW5wdHlfY3R0eV9idWc9JHthY19jdl9oYXZlX29wZW5wdHlfY3R0eV9idWc9bm99CithY19jdl9oYXZlX3NwYWNlX2RfbmFtZV9pbl9zdHJ1Y3RfZGlyZW50PSR7YWNfY3ZfaGF2ZV9zcGFjZV9kX25hbWVfaW5fc3RydWN0X2RpcmVudD15ZXN9CisKKyMgZmdldAorY29tcGF0X2N2X2Z1bmNfc25wcmludGZfd29ya3M9JHtjb21wYXRfY3ZfZnVuY19zbnByaW50Zl93b3Jrcz15ZXN9CisKKyMgZ2xpYgorZ2xpYl9jdl9fX3ZhX2NvcHk9JHtnbGliX2N2X19fdmFfY29weT15ZXN9CitnbGliX2N2X2hhc19faW5saW5lPSR7Z2xpYl9jdl9oYXNfX2lubGluZT15ZXN9CitnbGliX2N2X2hhc19faW5saW5lX189JHtnbGliX2N2X2hhc19faW5saW5lX189eWVzfQorZ2xpYl9jdl9oYXNpbmxpbmU9JHtnbGliX2N2X2hhc2lubGluZT15ZXN9CitnbGliX2N2X2xvbmdfbG9uZ19mb3JtYXQ9JHtnbGliX2N2X2xvbmdfbG9uZ19mb3JtYXQ9bGx9CitnbGliX2N2X3J0bGRnbG9iYWxfYnJva2VuPSR7Z2xpYl9jdl9ydGxkZ2xvYmFsX2Jyb2tlbj1ub30KK2dsaWJfY3Zfc2FuZV9yZWFsbG9jPSR7Z2xpYl9jdl9zYW5lX3JlYWxsb2M9eWVzfQorZ2xpYl9jdl9zaXplb2ZfZ211dGV4PSR7Z2xpYl9jdl9zaXplb2ZfZ211dGV4PTI0fQorZ2xpYl9jdl9zaXplb2Zfc3lzdGVtX3RocmVhZD0ke2dsaWJfY3Zfc2l6ZW9mX3N5c3RlbV90aHJlYWQ9NH0KK2dsaWJfY3Zfc3RhY2tfZ3Jvd3M9JHtnbGliX2N2X3N0YWNrX2dyb3dzPW5vfQorZ2xpYl9jdl91c2NvcmU9JHtnbGliX2N2X3VzY29yZT1ub30KKworIyBnbGliLTIuMAorZ2xpYl9jdl9zdGFja19ncm93cz0ke2dsaWJfY3Zfc3RhY2tfZ3Jvd3M9bm99Cit1dGlsc19jdl9zeXNfb3Blbl9tYXg9JHt1dGlsc19jdl9zeXNfb3Blbl9tYXg9MTAxNX0KK2dsaWJfY3ZfdXNlX3BpZF9zdXJyb2dhdGU9JHtnbGliX2N2X3VzZV9waWRfc3Vycm9nYXRlPXllc30KKworIyBsaWJwY2FwCithY19jdl9saW51eF92ZXJzPSR7YWNfY3ZfbGludXhfdmVycz0yfQorCisjIHN0YXJ0dXAtbm90aWZpY2F0aW9uCitsZl9jdl9zYW5lX3JlYWxsb2M9JHtsZl9jdl9zYW5lX3JlYWxsb2M9eWVzfQorCisjIGxpYmlkbAorbGliSURMX2N2X2xvbmdfbG9uZ19mb3JtYXQ9JHtsaWJJRExfY3ZfbG9uZ19sb25nX2Zvcm1hdD1sbH0KKworIyBuY2Z0cAord2lfY3Zfc3RydWN0X3RpbWV2YWxfdHZfc2VjPSR7d2lfY3Zfc3RydWN0X3RpbWV2YWxfdHZfc2VjPWxvbmd9Cit3aV9jdl9zdHJ1Y3RfdGltZXZhbF90dl91c2VjPSR7d2lfY3Zfc3RydWN0X3RpbWV2YWxfdHZfdXNlYz1sb25nfQord2lfY3ZfdW5peF9kb21haW5fc29ja2V0cz0ke3dpX2N2X3VuaXhfZG9tYWluX3NvY2tldHM9eWVzfQorCisjIGRiCitkYl9jdl9hbGlnbl90PSR7ZGJfY3ZfYWxpZ25fdD0ndW5zaWduZWQgbG9uZyBsb25nJ30KK2RiX2N2X2FsaWducF90PSR7ZGJfY3ZfYWxpZ25wX3Q9J3Vuc2lnbmVkIGxvbmcnfQorZGJfY3ZfZmNudGxfZl9zZXRmZD0ke2RiX2N2X2ZjbnRsX2Zfc2V0ZmQ9eWVzfQorZGJfY3Zfc3ByaW50Zl9jb3VudD0ke2RiX2N2X3NwcmludGZfY291bnQ9eWVzfQorCisjIHJyZHRvb2wKK3JkX2N2X2llZWVfd29ya3M9JHtyZF9jdl9pZWVlX3dvcmtzPXllc30KKyMgYWNfY3ZfcGF0aF9QRVJMPSR7YWNfY3ZfcGF0aF9QRVJMPW5vfQorCisjIGdldHRleHQKK2FtX2N2X2Z1bmNfd29ya2luZ19nZXRsaW5lPSR7YW1fY3ZfZnVuY193b3JraW5nX2dldGxpbmU9eWVzfQorCisjIHNhbWJhCitzYW1iYV9jdl9IQVZFX0dFVFRJTUVPRkRBWV9UWj0ke3NhbWJhX2N2X0hBVkVfR0VUVElNRU9GREFZX1RaPXllc30KKworIyB2aW0KK2FjX2N2X3NpemVvZl9pbnQ9JHthY19jdl9zaXplb2ZfaW50PTR9CisKKyMgaW50ZXJjb20KK2FjX2N2X2Z1bmNfZm5tYXRjaF93b3Jrcz0ke2FjX2N2X2Z1bmNfZm5tYXRjaF93b3Jrcz15ZXN9CisKKyNsbWJlbmNoCithY19jdl91aW50PSR7YWNfY3ZfdW5pdD15ZXN9CisKKyMgRC1CVVMKK2FjX2N2X2Z1bmNfcG9zaXhfZ2V0cHduYW1fcj0ke2FjX2N2X2Z1bmNfcG9zaXhfZ2V0cHduYW1fcj15ZXN9CisKKyMgZXZvbHV0aW9uLWRhdGEtc2VydmVyCithY19jdl9saWJpY29udl91dGY4PSR7YWNfY3ZfbGliaWNvbnZfdXRmOD15ZXN9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL21pcHNpc2E2NHI2LWxpbnV4IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9taXBzaXNhNjRyNi1saW51eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDBmYmJlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9taXBzaXNhNjRyNi1saW51eApAQCAtMCwwICsxLDgzIEBACisjIGdlbmVyYWwKK2FjX2N2X2Z1bmNfc2V0dmJ1Zl9yZXZlcnNlZD0ke2FjX2N2X2Z1bmNfc2V0dmJ1Zl9yZXZlcnNlZD1ub30KKworIyBiYXNoCithY19jdl9jX2xvbmdfZG91YmxlPSR7YWNfY3ZfY19sb25nX2RvdWJsZT1ub30KK2Jhc2hfY3ZfZnVuY19zaWdzZXRqbXA9JHtiYXNoX2N2X2Z1bmNfc2lnc2V0am1wPXByZXNlbnR9CisKKyMgb3BlbnNzaAorYWNfY3ZfaGF2ZV9hY2NyaWdodHNfaW5fbXNnaGRyPSR7YWNfY3ZfaGF2ZV9hY2NyaWdodHNfaW5fbXNnaGRyPW5vfQorYWNfY3ZfaGF2ZV9icm9rZW5fc25wcmludGY9JHthY19jdl9oYXZlX2Jyb2tlbl9zbnByaW50Zj1ub30KK2FjX2N2X2hhdmVfY29udHJvbF9pbl9tc2doZHI9JHthY19jdl9oYXZlX2NvbnRyb2xfaW5fbXNnaGRyPXllc30KK2FjX2N2X2hhdmVfb3BlbnB0eV9jdHR5X2J1Zz0ke2FjX2N2X2hhdmVfb3BlbnB0eV9jdHR5X2J1Zz1ub30KK2FjX2N2X2hhdmVfc3BhY2VfZF9uYW1lX2luX3N0cnVjdF9kaXJlbnQ9JHthY19jdl9oYXZlX3NwYWNlX2RfbmFtZV9pbl9zdHJ1Y3RfZGlyZW50PXllc30KKworIyBmZ2V0Citjb21wYXRfY3ZfZnVuY19zbnByaW50Zl93b3Jrcz0ke2NvbXBhdF9jdl9mdW5jX3NucHJpbnRmX3dvcmtzPXllc30KKworIyBnbGliCitnbGliX2N2X19fdmFfY29weT0ke2dsaWJfY3ZfX192YV9jb3B5PXllc30KK2dsaWJfY3ZfaGFzX19pbmxpbmU9JHtnbGliX2N2X2hhc19faW5saW5lPXllc30KK2dsaWJfY3ZfaGFzX19pbmxpbmVfXz0ke2dsaWJfY3ZfaGFzX19pbmxpbmVfXz15ZXN9CitnbGliX2N2X2hhc2lubGluZT0ke2dsaWJfY3ZfaGFzaW5saW5lPXllc30KK2dsaWJfY3ZfbG9uZ19sb25nX2Zvcm1hdD0ke2dsaWJfY3ZfbG9uZ19sb25nX2Zvcm1hdD1sbH0KK2dsaWJfY3ZfcnRsZGdsb2JhbF9icm9rZW49JHtnbGliX2N2X3J0bGRnbG9iYWxfYnJva2VuPW5vfQorZ2xpYl9jdl9zYW5lX3JlYWxsb2M9JHtnbGliX2N2X3NhbmVfcmVhbGxvYz15ZXN9CitnbGliX2N2X3NpemVvZl9nbXV0ZXg9JHtnbGliX2N2X3NpemVvZl9nbXV0ZXg9MjR9CitnbGliX2N2X3NpemVvZl9zeXN0ZW1fdGhyZWFkPSR7Z2xpYl9jdl9zaXplb2Zfc3lzdGVtX3RocmVhZD00fQorZ2xpYl9jdl9zdGFja19ncm93cz0ke2dsaWJfY3Zfc3RhY2tfZ3Jvd3M9bm99CitnbGliX2N2X3VzY29yZT0ke2dsaWJfY3ZfdXNjb3JlPW5vfQorCisjIGdsaWItMi4wCitnbGliX2N2X3N0YWNrX2dyb3dzPSR7Z2xpYl9jdl9zdGFja19ncm93cz1ub30KK3V0aWxzX2N2X3N5c19vcGVuX21heD0ke3V0aWxzX2N2X3N5c19vcGVuX21heD0xMDE1fQorZ2xpYl9jdl91c2VfcGlkX3N1cnJvZ2F0ZT0ke2dsaWJfY3ZfdXNlX3BpZF9zdXJyb2dhdGU9eWVzfQorYWNfY3ZfYWxpZ25vZl9ndWludDMyPTQKK2FjX2N2X2FsaWdub2ZfZ3VpbnQ2ND04CithY19jdl9hbGlnbm9mX3Vuc2lnbmVkX2xvbmc9OAorYWNfY3Zfc2l6ZW9mX3NzaXplX3Q9OAorCisjIGxpYnBjYXAKK2FjX2N2X2xpbnV4X3ZlcnM9JHthY19jdl9saW51eF92ZXJzPTJ9CisKKyMgc3RhcnR1cC1ub3RpZmljYXRpb24KK2xmX2N2X3NhbmVfcmVhbGxvYz0ke2xmX2N2X3NhbmVfcmVhbGxvYz15ZXN9CisKKyMgbGliaWRsCitsaWJJRExfY3ZfbG9uZ19sb25nX2Zvcm1hdD0ke2xpYklETF9jdl9sb25nX2xvbmdfZm9ybWF0PWxsfQorCisjIG5jZnRwCit3aV9jdl9zdHJ1Y3RfdGltZXZhbF90dl9zZWM9JHt3aV9jdl9zdHJ1Y3RfdGltZXZhbF90dl9zZWM9bG9uZ30KK3dpX2N2X3N0cnVjdF90aW1ldmFsX3R2X3VzZWM9JHt3aV9jdl9zdHJ1Y3RfdGltZXZhbF90dl91c2VjPWxvbmd9CisKKyMgZGIKK2RiX2N2X2FsaWduX3Q9JHtkYl9jdl9hbGlnbl90PSd1bnNpZ25lZCBsb25nIGxvbmcnfQorZGJfY3ZfYWxpZ25wX3Q9JHtkYl9jdl9hbGlnbnBfdD0ndW5zaWduZWQgbG9uZyd9CitkYl9jdl9mY250bF9mX3NldGZkPSR7ZGJfY3ZfZmNudGxfZl9zZXRmZD15ZXN9CitkYl9jdl9zcHJpbnRmX2NvdW50PSR7ZGJfY3Zfc3ByaW50Zl9jb3VudD15ZXN9CisKKyMgcnJkdG9vbAorcmRfY3ZfaWVlZV93b3Jrcz0ke3JkX2N2X2llZWVfd29ya3M9eWVzfQorIyBhY19jdl9wYXRoX1BFUkw9JHthY19jdl9wYXRoX1BFUkw9bm99CisKKyMgZ2V0dGV4dAorYW1fY3ZfZnVuY193b3JraW5nX2dldGxpbmU9JHthbV9jdl9mdW5jX3dvcmtpbmdfZ2V0bGluZT15ZXN9CisKKyMgc2FtYmEKK3NhbWJhX2N2X0hBVkVfR0VUVElNRU9GREFZX1RaPSR7c2FtYmFfY3ZfSEFWRV9HRVRUSU1FT0ZEQVlfVFo9eWVzfQorCisjIHZpbQorYWNfY3Zfc2l6ZW9mX2ludD0ke2FjX2N2X3NpemVvZl9pbnQ9NH0KKworIyBpbnRlcmNvbQorYWNfY3ZfZnVuY19mbm1hdGNoX3dvcmtzPSR7YWNfY3ZfZnVuY19mbm1hdGNoX3dvcmtzPXllc30KKworIyBsbWJlbmNoCithY19jdl91aW50PSR7YWNfY3ZfdW5pdD15ZXN9CisKKyMgRC1CVVMKK2FjX2N2X2Z1bmNfcG9zaXhfZ2V0cHduYW1fcj0ke2FjX2N2X2Z1bmNfcG9zaXhfZ2V0cHduYW1fcj15ZXN9CisKKyMgZWRzLWRidXMKK2FjX2N2X2xpYmljb252X3V0Zjg9JHthY19jdl9saWJpY29udl91dGY4PXllc30KKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9taXBzaXNhNjRyNmVsLWxpbnV4IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9taXBzaXNhNjRyNmVsLWxpbnV4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4MDE3MWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL21pcHNpc2E2NHI2ZWwtbGludXgKQEAgLTAsMCArMSw4MyBAQAorIyBnZW5lcmFsCithY19jdl9mdW5jX3NldHZidWZfcmV2ZXJzZWQ9JHthY19jdl9mdW5jX3NldHZidWZfcmV2ZXJzZWQ9bm99CisKKyMgYmFzaAorYWNfY3ZfY19sb25nX2RvdWJsZT0ke2FjX2N2X2NfbG9uZ19kb3VibGU9bm99CitiYXNoX2N2X2Z1bmNfc2lnc2V0am1wPSR7YmFzaF9jdl9mdW5jX3NpZ3NldGptcD1wcmVzZW50fQorCisjIG9wZW5zc2gKK2FjX2N2X2hhdmVfYWNjcmlnaHRzX2luX21zZ2hkcj0ke2FjX2N2X2hhdmVfYWNjcmlnaHRzX2luX21zZ2hkcj1ub30KK2FjX2N2X2hhdmVfYnJva2VuX3NucHJpbnRmPSR7YWNfY3ZfaGF2ZV9icm9rZW5fc25wcmludGY9bm99CithY19jdl9oYXZlX2NvbnRyb2xfaW5fbXNnaGRyPSR7YWNfY3ZfaGF2ZV9jb250cm9sX2luX21zZ2hkcj15ZXN9CithY19jdl9oYXZlX29wZW5wdHlfY3R0eV9idWc9JHthY19jdl9oYXZlX29wZW5wdHlfY3R0eV9idWc9bm99CithY19jdl9oYXZlX3NwYWNlX2RfbmFtZV9pbl9zdHJ1Y3RfZGlyZW50PSR7YWNfY3ZfaGF2ZV9zcGFjZV9kX25hbWVfaW5fc3RydWN0X2RpcmVudD15ZXN9CisKKyMgZmdldAorY29tcGF0X2N2X2Z1bmNfc25wcmludGZfd29ya3M9JHtjb21wYXRfY3ZfZnVuY19zbnByaW50Zl93b3Jrcz15ZXN9CisKKyMgZ2xpYgorZ2xpYl9jdl9fX3ZhX2NvcHk9JHtnbGliX2N2X19fdmFfY29weT15ZXN9CitnbGliX2N2X2hhc19faW5saW5lPSR7Z2xpYl9jdl9oYXNfX2lubGluZT15ZXN9CitnbGliX2N2X2hhc19faW5saW5lX189JHtnbGliX2N2X2hhc19faW5saW5lX189eWVzfQorZ2xpYl9jdl9oYXNpbmxpbmU9JHtnbGliX2N2X2hhc2lubGluZT15ZXN9CitnbGliX2N2X2xvbmdfbG9uZ19mb3JtYXQ9JHtnbGliX2N2X2xvbmdfbG9uZ19mb3JtYXQ9bGx9CitnbGliX2N2X3J0bGRnbG9iYWxfYnJva2VuPSR7Z2xpYl9jdl9ydGxkZ2xvYmFsX2Jyb2tlbj1ub30KK2dsaWJfY3Zfc2FuZV9yZWFsbG9jPSR7Z2xpYl9jdl9zYW5lX3JlYWxsb2M9eWVzfQorZ2xpYl9jdl9zaXplb2ZfZ211dGV4PSR7Z2xpYl9jdl9zaXplb2ZfZ211dGV4PTI0fQorZ2xpYl9jdl9zaXplb2Zfc3lzdGVtX3RocmVhZD0ke2dsaWJfY3Zfc2l6ZW9mX3N5c3RlbV90aHJlYWQ9NH0KK2dsaWJfY3Zfc3RhY2tfZ3Jvd3M9JHtnbGliX2N2X3N0YWNrX2dyb3dzPW5vfQorZ2xpYl9jdl91c2NvcmU9JHtnbGliX2N2X3VzY29yZT1ub30KKworIyBnbGliLTIuMAorZ2xpYl9jdl9zdGFja19ncm93cz0ke2dsaWJfY3Zfc3RhY2tfZ3Jvd3M9bm99Cit1dGlsc19jdl9zeXNfb3Blbl9tYXg9JHt1dGlsc19jdl9zeXNfb3Blbl9tYXg9MTAxNX0KK2dsaWJfY3ZfdXNlX3BpZF9zdXJyb2dhdGU9JHtnbGliX2N2X3VzZV9waWRfc3Vycm9nYXRlPXllc30KK2FjX2N2X2FsaWdub2ZfZ3VpbnQzMj00CithY19jdl9hbGlnbm9mX2d1aW50NjQ9OAorYWNfY3ZfYWxpZ25vZl91bnNpZ25lZF9sb25nPTgKK2FjX2N2X3NpemVvZl9zc2l6ZV90PTgKKworIyBsaWJwY2FwCithY19jdl9saW51eF92ZXJzPSR7YWNfY3ZfbGludXhfdmVycz0yfQorCisjIHN0YXJ0dXAtbm90aWZpY2F0aW9uCitsZl9jdl9zYW5lX3JlYWxsb2M9JHtsZl9jdl9zYW5lX3JlYWxsb2M9eWVzfQorCisjIGxpYmlkbAorbGliSURMX2N2X2xvbmdfbG9uZ19mb3JtYXQ9JHtsaWJJRExfY3ZfbG9uZ19sb25nX2Zvcm1hdD1sbH0KKworIyBuY2Z0cAord2lfY3Zfc3RydWN0X3RpbWV2YWxfdHZfc2VjPSR7d2lfY3Zfc3RydWN0X3RpbWV2YWxfdHZfc2VjPWxvbmd9Cit3aV9jdl9zdHJ1Y3RfdGltZXZhbF90dl91c2VjPSR7d2lfY3Zfc3RydWN0X3RpbWV2YWxfdHZfdXNlYz1sb25nfQord2lfY3ZfdW5peF9kb21haW5fc29ja2V0cz0ke3dpX2N2X3VuaXhfZG9tYWluX3NvY2tldHM9eWVzfQorCisjIGRiCitkYl9jdl9hbGlnbl90PSR7ZGJfY3ZfYWxpZ25fdD0ndW5zaWduZWQgbG9uZyBsb25nJ30KK2RiX2N2X2FsaWducF90PSR7ZGJfY3ZfYWxpZ25wX3Q9J3Vuc2lnbmVkIGxvbmcnfQorZGJfY3ZfZmNudGxfZl9zZXRmZD0ke2RiX2N2X2ZjbnRsX2Zfc2V0ZmQ9eWVzfQorZGJfY3Zfc3ByaW50Zl9jb3VudD0ke2RiX2N2X3NwcmludGZfY291bnQ9eWVzfQorCisjIHJyZHRvb2wKK3JkX2N2X2llZWVfd29ya3M9JHtyZF9jdl9pZWVlX3dvcmtzPXllc30KKyMgYWNfY3ZfcGF0aF9QRVJMPSR7YWNfY3ZfcGF0aF9QRVJMPW5vfQorCisjIGdldHRleHQKK2FtX2N2X2Z1bmNfd29ya2luZ19nZXRsaW5lPSR7YW1fY3ZfZnVuY193b3JraW5nX2dldGxpbmU9eWVzfQorCisjIHNhbWJhCitzYW1iYV9jdl9IQVZFX0dFVFRJTUVPRkRBWV9UWj0ke3NhbWJhX2N2X0hBVkVfR0VUVElNRU9GREFZX1RaPXllc30KKworIyB2aW0KK2FjX2N2X3NpemVvZl9pbnQ9JHthY19jdl9zaXplb2ZfaW50PTR9CisKKyMgaW50ZXJjb20KK2FjX2N2X2Z1bmNfZm5tYXRjaF93b3Jrcz0ke2FjX2N2X2Z1bmNfZm5tYXRjaF93b3Jrcz15ZXN9CisKKyNsbWJlbmNoCithY19jdl91aW50PSR7YWNfY3ZfdW5pdD15ZXN9CisKKyMgRC1CVVMKK2FjX2N2X2Z1bmNfcG9zaXhfZ2V0cHduYW1fcj0ke2FjX2N2X2Z1bmNfcG9zaXhfZ2V0cHduYW1fcj15ZXN9CisKKyMgZWRzLWRidXMKK2FjX2N2X2xpYmljb252X3V0Zjg9JHthY19jdl9saWJpY29udl91dGY4PXllc30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvbmlvczItbGludXggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL25pb3MyLWxpbnV4CmluZGV4IDk1YzA5ZDMuLjJmNGU1NzAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvbmlvczItbGludXgKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9uaW9zMi1saW51eApAQCAtMTcxLDcgKzE3MSw2IEBACiByc3luY19jdl9IQVZFX1VOU0lHTkVEX0NIQVI9JHtyc3luY19jdl9IQVZFX1VOU0lHTkVEX0NIQVI9bm99CiByc3luY19jdl9IQVZFX0JST0tFTl9SRUFERElSPSR7cnN5bmNfY3ZfSEFWRV9CUk9LRU5fUkVBRERJUj1ub30KIHJzeW5jX2N2X0hBVkVfR0VUVElNRU9GREFZX1RaPSR7cnN5bmNfY3ZfSEFWRV9HRVRUSU1FT0ZEQVlfVFo9eWVzfQotcnN5bmNfY3ZfSEFWRV9DOTlfVlNOUFJJTlRGPSR7cnN5bmNfY3ZfSEFWRV9DOTlfVlNOUFJJTlRGPXllc30KIHJzeW5jX2N2X0hBVkVfU0VDVVJFX01LU1RFTVA9JHtyc3luY19jdl9IQVZFX1NFQ1VSRV9NS1NURU1QPXllc30KIHJzeW5jX2N2X1JFUExBQ0VfSU5FVF9OVE9BPSR7cnN5bmNfY3ZfUkVQTEFDRV9JTkVUX05UT0E9bm99CiByc3luY19jdl9SRVBMQUNFX0lORVRfQVRPTj0ke3JzeW5jX2N2X1JFUExBQ0VfSU5FVF9BVE9OPW5vfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9zaC1jb21tb24gYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL3NoLWNvbW1vbgppbmRleCA1Y2JmMzZhLi5mYzRkNmFkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL3NoLWNvbW1vbgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL3NoLWNvbW1vbgpAQCAtMjE2LDcgKzIxNiw2IEBACiByc3luY19jdl9IQVZFX1VOU0lHTkVEX0NIQVI9JHtyc3luY19jdl9IQVZFX1VOU0lHTkVEX0NIQVI9bm99CiByc3luY19jdl9IQVZFX0JST0tFTl9SRUFERElSPSR7cnN5bmNfY3ZfSEFWRV9CUk9LRU5fUkVBRERJUj1ub30KIHJzeW5jX2N2X0hBVkVfR0VUVElNRU9GREFZX1RaPSR7cnN5bmNfY3ZfSEFWRV9HRVRUSU1FT0ZEQVlfVFo9eWVzfQotcnN5bmNfY3ZfSEFWRV9DOTlfVlNOUFJJTlRGPSR7cnN5bmNfY3ZfSEFWRV9DOTlfVlNOUFJJTlRGPXllc30KIHJzeW5jX2N2X0hBVkVfU0VDVVJFX01LU1RFTVA9JHtyc3luY19jdl9IQVZFX1NFQ1VSRV9NS1NURU1QPXllc30KIHJzeW5jX2N2X1JFUExBQ0VfSU5FVF9OVE9BPSR7cnN5bmNfY3ZfUkVQTEFDRV9JTkVUX05UT0E9bm99CiByc3luY19jdl9SRVBMQUNFX0lORVRfQVRPTj0ke3JzeW5jX2N2X1JFUExBQ0VfSU5FVF9BVE9OPW5vfQo=