ZGlmZiAtLWdpdCBhL3J1bnRpbWUvYXV0b2xvYWQvbmV0cncudmltIGIvcnVudGltZS9hdXRvbG9hZC9uZXRydy52aW0KaW5kZXggZTA3N2UyNS4uYzc5N2JlYyAxMDA2NDQKLS0tIGEvcnVudGltZS9hdXRvbG9hZC9uZXRydy52aW0KKysrIGIvcnVudGltZS9hdXRvbG9hZC9uZXRydy52aW0KQEAgLTEsOCArMSw4IEBACiAiIG5ldHJ3LnZpbTogSGFuZGxlcyBmaWxlIHRyYW5zZmVyIGFuZCByZW1vdGUgZGlyZWN0b3J5IGxpc3RpbmcgYWNyb3NzIGEgbmV0d29yawogIiAgICAgICAgICAgIEFVVE9MT0FEIFBPUlRJT04KLSIgTGFzdCBDaGFuZ2U6CUF1ZyAxNiwgMjAwNQorIiBMYXN0IENoYW5nZToJQXVnIDE5LCAyMDA1CiAiIE1haW50YWluZXI6CUNoYXJsZXMgRSBDYW1wYmVsbCwgSnIgPGRyY2hpcE5PU1BBTSBhdCBjYW1wYmVsbGZhbWlseSBkb3QgYml6PgotIiBWZXJzaW9uOgk2MworIiBWZXJzaW9uOgk2NQogIiBHZXRMYXRlc3RWaW1TY3JpcHRzOiAxMDc1IDEgOkF1dG9JbnN0YWxsOiBuZXRydy52aW0KICIgQ29weXJpZ2h0OiAgICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwNSBDaGFybGVzIEUuIENhbXBiZWxsLCBKci4ge3t7MQogIiAgICAgICAgICAgICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQgdG8gdXNlIGFuZCBkaXN0cmlidXRlIHRoaXMgY29kZSwKQEAgLTY5MCw4ICs2OTAsNiBAQAogICAgZXhlIGE6cmVhZGNtZC4iICIudjpjbWRhcmcuIiAiLmZuYW1lCiAgICBsZXQgbGluZTEgICAgICAgID0gY3VybGluZSArIDEKICAgIGxldCBsaW5lMiAgICAgICAgPSBsaW5lKCIkIikgLSBsYXN0bGluZSArIDEKLSAgIGxldCBzOm5ldHJ3X2xpbmUgPSBzOm5ldHJ3X2xpbmUgKyAxCi0gICBsZXQgczpuZXRyd19jb2wgID0gMQogICBlbHNlCiAgICAiIG5vdCByZWFkYWJsZQogIiAgIGNhbGwgRHJldCgiTmV0R2V0RmlsZSA6IGZuYW1lPCIuZm5hbWUuIj4gbm90IHJlYWRhYmxlIikKQEAgLTEwMjUsNiArMTAyMyw4IEBACiAgICByZXR1cm4KICAgZW5kaWYKIAorICBjYWxsIHM6TmV0T3B0aW9uU2F2ZSgpCisKICAgIiBzYW5pdHkgY2hlY2sKICAgaWYgZXhpc3RzKCJiOm5ldHJ3X21ldGhvZCIpICYmIGI6bmV0cndfbWV0aG9kID1+ICdbMjM1XScKICIgICBjYWxsIERlY2hvKCJiOm5ldHJ3X21ldGhvZD0iLmI6bmV0cndfbWV0aG9kKQpAQCAtMTAzMyw2ICsxMDMzLDcgQEAKICAgICAgZWNob2hsIEVycm9yIHwgZWNobyAiKioqbmV0cncqKiogdGhpcyBzeXN0ZW0gZG9lc24ndCBzdXBwb3J0IHJlbW90ZSBkaXJlY3RvcnkgbGlzdGluZyB2aWEgZnRwIiB8IGVjaG9obCBOb25lCiAgICAgIGNhbGwgaW5wdXRzYXZlKCl8Y2FsbCBpbnB1dCgiUHJlc3MgPGNyPiB0byBjb250aW51ZSIpfGNhbGwgaW5wdXRyZXN0b3JlKCkKICAgICBlbmRpZgorICAgIGNhbGwgczpOZXRPcHRpb25SZXN0b3JlKCkKICIgICAgY2FsbCBEcmV0KCJOZXRCcm93c2UiKQogICAgIHJldHVybgogICAgZW5kaWYKQEAgLTEwNDIsNiArMTA0Myw3IEBACiAgICAgY2FsbCBpbnB1dHNhdmUoKXxjYWxsIGlucHV0KCJQcmVzcyA8Y3I+IHRvIGNvbnRpbnVlIil8Y2FsbCBpbnB1dHJlc3RvcmUoKQogICAgZW5kaWYKIAorICAgIGNhbGwgczpOZXRPcHRpb25SZXN0b3JlKCkKICIgICBjYWxsIERyZXQoIk5ldEJyb3dzZSIpCiAgICByZXR1cm4KICAgZW5kaWYKQEAgLTEwNjEsNiArMTA2Myw3IEBACiAgICAgZWNob2hsIEVycm9yIHwgZWNobyAiKioqbmV0cncqKiogbmV0cncgZG9lc24ndCB1bmRlcnN0YW5kIHlvdXIgZGlybmFtZTwiLmRpcm5hbWUuIj4iIHwgZWNob2hsIE5vbmUKICAgICBjYWxsIGlucHV0c2F2ZSgpfGNhbGwgaW5wdXQoIlByZXNzIDxjcj4gdG8gY29udGludWUiKXxjYWxsIGlucHV0cmVzdG9yZSgpCiAgICBlbmRpZgorICAgIGNhbGwgczpOZXRPcHRpb25SZXN0b3JlKCkKICIgICBjYWxsIERyZXQoIk5ldEJyb3dzZSA6IGJhZGx5IGZvcm1hdHRlZCBkaXJuYW1lPCIuZGlybmFtZS4iPiIpCiAgICByZXR1cm4KICAgZW5kaWYKQEAgLTExMDksNiArMTExMiw3IEBACiAiICAgY2FsbCBEZWNobygiYXR0ZW1wdCB0cmFuc2ZlciBvZiBzeW1saW5rIGFzIGZpbGUiKQogICAgY2FsbCBzOk5ldEJyb3dzZShzdWJzdGl0dXRlKGRpcm5hbWUsJ0AkJywnJywnZScpKQogICAgcmVkcmF3IQorICAgY2FsbCBzOk5ldE9wdGlvblJlc3RvcmUoKQogIiAgIGNhbGwgRHJldCgiTmV0QnJvd3NlIDogc3ltbGluayIpCiAgICByZXR1cm4KIApAQCAtMTExOSw3ICsxMTIzLDcgQEAKICAgICIgcmVtb3ZlIGFueSBmaWxldHlwZSBpbmRpY2F0b3IgZnJvbSBlbmQgb2YgZGlybmFtZSwgZXhjZXB0IGZvciB0aGUKICAgICIgInRoaXMgaXMgYSBkaXJlY3RvcnkiIGluZGljYXRvciAoLykuICBUaGVyZSBzaG91bGRuJ3QgYmUgb25lIG9mIHRob3NlLAogICAgIiBhbnl3YXkuCi0gICBsZXQgcGF0aD0gc3Vic3RpdHV0ZShwYXRoLCdbKj1AfF0kJywnJywnZScpCisgICBsZXQgcGF0aD0gc3Vic3RpdHV0ZShwYXRoLCdbKj1AfF1cclw9JCcsJycsJ2UnKQogIiAgIGNhbGwgRGVjaG8oIm5ldyBwYXRoPCIucGF0aC4iPiIpCiAKICAgICIgcmVtb3RlLXJlYWQgdGhlIHJlcXVlc3RlZCBmaWxlIGludG8gY3VycmVudCBidWZmZXIKQEAgLTExMzMsNyArMTEzNyw3IEBACiAKICAgICIgc2F2ZSBjZXJ0YWluIHdpbmRvdy1vcmllbnRlZCB2YXJpYWJsZXMgaW50byBidWZmZXItb3JpZW50ZWQgdmFyaWFibGVzCiAgICBjYWxsIHM6QnVmV2luVmFycygpCi0KKyAgIGNhbGwgczpOZXRPcHRpb25SZXN0b3JlKCkKICAgIHNldGxvY2FsIG5vbnUgbm9tb2Qgbm9tYQogCiAiICAgY2FsbCBEcmV0KCJOZXRCcm93c2UgOiBmaWxlPCIuZm5hbWUuIj4iKQpAQCAtMTE1Miw2ICsxMTU2LDcgQEAKICIgICBjYWxsIERlY2hvKCJidWZmZXIgYWxyZWFkeSBleGlzdHMsIHN3aXRjaGluZyB0byBpdCIpCiAgICBleGUgImIgIi5idWZuYW1lbnIKICAgIGlmIGxpbmUoIiQiKSA+PSA1CisgICAgY2FsbCBzOk5ldE9wdGlvblJlc3RvcmUoKQogIiAgICBjYWxsIERyZXQoIk5ldEJyb3dzZSIpCiAgICAgcmV0dXJuCiAgICBlbmRpZgpAQCAtMTE2Niw3ICsxMTcxLDcgQEAKICIgIGNhbGwgRGVjaG8oImV4ZSBmaWxlICIuZXNjYXBlKGJ1Zm5hbWUsczpuZXRyd19jZF9lc2NhcGUpKQogICBleGUgJ2ZpbGUgJy5lc2NhcGUoYnVmbmFtZSxzOm5ldHJ3X2NkX2VzY2FwZSkKICIgIGNhbGwgRGVjaG8oInJlbmFtaW5nIGZpbGUgdG8gYnVmbmFtZTwiLmJ1Zm5hbWUuIj4iKQotICBzZXRsb2NhbCBiaD1oaWRlIG5vYmwgbm9udQorICBzZXRsb2NhbCBiaD1oaWRlIGJ0PW5vZmlsZSBub2JsIG5vbnUKIAogICAiIHNhdmUgY3VycmVudCBkaXJlY3Rvcnkgb24gZGlyZWN0b3J5IGhpc3RvcnkgbGlzdAogICBjYWxsIDxTSUQ+TmV0Qm9va21hcmtEaXIoMyxleHBhbmQoIiUiKSkKQEAgLTEyODEsNyArMTI4Niw2IEBACiAgICAgZXhlICJzaWxlbnQhIGcvIi5nOm5ldHJ3X3NzaF9icm93c2VfcmVqZWN0LiIva2VlcGp1bXBzIGQiCiAgICBlbmRpZgogICBlbmRpZgotICAKIAogICAiIHNldCB1cCBzeW50YXggaGlnaGxpZ2h0aW5nCiAgIGlmIGhhcygic3ludGF4IikKQEAgLTEzNDcsOCArMTM1MSwxMiBAQAogICAgIGVuZGlmCiAgICBlbmRpZgogICBlbmRpZgorCisgICIgY2xlYW51cCBhbnkgd2luZG93cyBtZXNzIGF0IGVuZC1vZi1saW5lCisgIGtlZXBqdW1wcyBzaWxlbnQhICVzL1xyJC8vZQogICBleGUgImtlZXBqdW1wcyAiLnc6bmV0cndfYmFubmVyY250CiAKKyAgY2FsbCBzOk5ldE9wdGlvblJlc3RvcmUoKQogICBzZXRsb2NhbCBub21vZCBub21hIG5vbnUKIAogIiAgY2FsbCBEcmV0KCJOZXRCcm93c2UiKQpAQCAtMTc3Miw2ICsxNzgwLDE2IEBACiAgICBlbmRpZgogICBlbmRpZgogCisgICIgZnRwJ3MgbHMgZG9lc24ndCBzZWVtIHRvIGluY2x1ZGUgLi8gb3IgLi4vCisgIGlmICFzZWFyY2goJ15cLlwvJCcsJ3duJykKKyAgIGV4ZSAna2VlcGp1bXBzICcuY3VybGluZQorICAgaWYgYTpwYXRoICF+ICdeJCcKKyAgICBwdXQgPScuLi8nCisgICBlbmRpZgorICAgcHV0ID0nLi8nCisgICBleGUgJ2tlZXBqdW1wcyAnLmN1cmxpbmUKKyAgZW5kaWYKKwogICAiIHJlc3RvcmUgc2V0dGluZ3MKICAgbGV0ICZmZj0gZmZrZWVwCiAiICBjYWxsIERyZXQoIk5ldEJyb3dzZUZ0cENtZCIpCkBAIC0yMTI4LDIyICsyMTQ2LDE4IEBACiAiICAgY2FsbCBEcmV0KCJEaXJCcm93c2UiKQogICAgcmV0dXJuCiAgIGVuZGlmCisgIGNhbGwgczpOZXRPcHRpb25TYXZlKCkKIAogICBpZiB2OnZlcnNpb24gPCA2MDMKICAgIGlmICFleGlzdHMoImc6bmV0cndfcXVpZXQiKQogICAgIGVjaG9obCBFcnJvciB8IGVjaG8gIioqKm5ldHJ3KioqIHZpbSB2ZXJzaW9uPCIudjp2ZXJzaW9uLiI+IHRvbyBvbGQgZm9yIGJyb3dzaW5nIHdpdGggbmV0cnciIHwgZWNob2hsIE5vbmUKICAgICBjYWxsIGlucHV0c2F2ZSgpfGNhbGwgaW5wdXQoIlByZXNzIDxjcj4gdG8gY29udGludWUiKXxjYWxsIGlucHV0cmVzdG9yZSgpCiAgICBlbmRpZgorICAgY2FsbCBzOk5ldE9wdGlvblJlc3RvcmUoKQogIiAgIGNhbGwgRHJldCgiRGlyQnJvd3NlIDogdmltIHZlcnNpb248Ii52OnZlcnNpb24uIj4gdG9vIG9sZCIpCiAgICByZXR1cm4KICAgZW5kaWYKIAotICAiIHJlY29yZCBhdXRvY2hkaXIgc2V0dGluZyBhbmQgdGhlbiBpbnN1cmUgaXRzIHVuc2V0ICh0bnggdG8gRGF2aWQgRmlzaGJ1cm4pCi0gIGlmIGhhcygibmV0YmVhbnNfaW50ZyIpIHx8IGhhcygic3VuX3dvcmtzaG9wIikKLSAgIGxldCBrZWVwX2F1dG9jaGRpcj0gJmF1dG9jaGRpcgotICAgc2V0IG5vYXV0b2NoZGlyCi0gIGVuZGlmCi0KICAgIiB1c2UgYnVmZmVyLW9yaWVudGVkIFdpblZhcnMgaWYgYnVmZmVyIG9uZXMgZXhpc3QgYnV0IHdpbmRvdyBvbmVzIGRvbid0CiAgIGNhbGwgczpVc2VCdWZXaW5WYXJzKCkKIApAQCAtMjE2Niw3ICsyMTgwLDcgQEAKICAgZW5kaWYKIAogICAiIGdldCBjbGVhcmVkIGJ1ZmZlcgotICBpZiBidWZudW0gPCAwCisgIGlmIGJ1Zm51bSA8IDAgfHwgIWJ1ZmV4aXN0cyhidWZudW0pCiAgICBpZiB2OnZlcnNpb24gPCA3MDAKICAgICBlbmV3IQogICAgZWxzZQpAQCAtMjE4NSw2ICsyMTk5LDcgQEAKICIgICAgICBjYWxsIERlY2hvKCJjaGFuZ2UgZGlyZWN0b3J5OiBjZCAiLmI6bmV0cndfY3VyZGlyKQogICAgICAgZXhlICdjZCAnLmVzY2FwZShiOm5ldHJ3X2N1cmRpcixzOm5ldHJ3X2NkX2VzY2FwZSkKICAgICAgZW5kaWYKKyAgICAgY2FsbCBzOk5ldE9wdGlvblJlc3RvcmUoKQogIiAgICAgY2FsbCBEcmV0KCJEaXJCcm93c2UgOiByZXVzaW5nIGJ1ZmZlciMiLmJ1Zm51bS4iPCIuYTpkaXJuYW1lLiI+IikKICAgICAgcmV0dXJuCiAgICAgZW5kaWYKQEAgLTIyMDEsNiArMjIxNiwxMSBAQAogICBpZiBiOm5ldHJ3X2N1cmRpciA9fiAnWy9cXF0kJwogICAgbGV0IGI6bmV0cndfY3VyZGlyPSBzdWJzdGl0dXRlKGI6bmV0cndfY3VyZGlyLCdbL1xcXSQnLCcnLCdlJykKICAgZW5kaWYKKyAgaWYgYjpuZXRyd19jdXJkaXIgPT0gJycKKyAgICIgdW5kZXIgdW5peCwgd2hlbiB0aGUgcm9vdCBkaXJlY3RvcnkgaXMgZW5jb3VudGVyZWQsIHRoZSByZXN1bHQKKyAgICIgZnJvbSB0aGUgcHJlY2VkaW5nIHN1YnN0aXR1dGUgaXMgYW4gZW1wdHkgc3RyaW5nLgorICAgbGV0IGI6bmV0cndfY3VyZGlyPSAnLycKKyAgZW5kaWYKICIgIGNhbGwgRGVjaG8oImI6bmV0cndfY3VyZGlyPCIuYjpuZXRyd19jdXJkaXIuIj4iKQogCiAgICIgbWFrZSBuZXRydydzIGlkZWEgb2YgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IHZpbSdzIGlmIHRoZSB1c2VyIHdpc2hlcwpAQCAtMjIxNCw2ICsyMjM0LDcgQEAKICAgICBpZiBleGlzdHMoInc6bmV0cndfcHJ2ZGlyIikKICAgICAgbGV0IGI6bmV0cndfY3VyZGlyPSB3Om5ldHJ3X3BydmRpcgogICAgIGVsc2UKKyAgICAgY2FsbCBzOk5ldE9wdGlvblJlc3RvcmUoKQogIiAgICAgY2FsbCBEcmV0KCJEaXJCcm93c2UgOiByZXVzaW5nIGJ1ZmZlciMiLmJ1Zm51bS4iPCIuYTpkaXJuYW1lLiI+IikKICAgICAgcmV0dXJuCiAgICAgZW5kaWYKQEAgLTIyMjMsOCArMjI0NCw4IEBACiAgICIgY2hhbmdlIHRoZSBuYW1lIG9mIHRoZSBidWZmZXIgdG8gcmVmbGVjdCB0aGUgYjpuZXRyd19jdXJkaXIKICAgZXhlICdzaWxlbnQhIGZpbGUgJy5lc2NhcGUoYjpuZXRyd19jdXJkaXIsczpuZXRyd19jZF9lc2NhcGUpCiAKLSAgIiBtYWtlIHRoaXMgYnVmZmVyIG1vZGlmaWFibGUgYW5kIGhpZGRlbgotICBzZXRsb2NhbCBtYSBoaWRkZW4gbm9udSBidD1ub2ZpbGUKKyAgIiBtYWtlIHRoaXMgYnVmZmVyIG5vdC1hLWZpbGUsIG1vZGlmaWFibGUsIG5vdCBsaW5lLW51bWJlcmVkLCBldGMKKyAgc2V0bG9jYWwgYmg9aGlkZSBidD1ub2ZpbGUgbm9ibCBtYSBub251CiAgIGlmIHY6dmVyc2lvbiA8IDcwMAogICAgc2lsZW50ISAlZAogICBlbHNlCkBAIC0yMzY3LDExICsyMzg4LDggQEAKIAogICAiIHNhdmUgY2VydGFpbiB3aW5kb3ctb3JpZW50ZWQgdmFyaWFibGVzIGludG8gYnVmZmVyLW9yaWVudGVkIHZhcmlhYmxlcwogICBjYWxsIHM6QnVmV2luVmFycygpCi0KKyAgY2FsbCBzOk5ldE9wdGlvblJlc3RvcmUoKQogICBzZXRsb2NhbCBub21hIG5vbW9kIG5vbnUgYmg9aGlkZSBub2JsCi0gIGlmIGhhcygibmV0YmVhbnNfaW50ZyIpIHx8IGhhcygic3VuX3dvcmtzaG9wIikKLSAgIGxldCAmYXV0b2NoZGlyPSBrZWVwX2F1dG9jaGRpcgotICBlbmRpZgogCiAiICBjYWxsIERyZXQoIkRpckJyb3dzZSA6IGZpbGU8Ii5leHBhbmQoIiU6cCIpLiI+IGJ1Zm5hbWU8Ii5idWZuYW1lKCIlIikuIj4iKQogZW5kZnVuCkBAIC0yNDcwLDYgKzI0ODgsOSBAQAogICAgIGtlZXBqdW1wcyBwdXQ9cGZpbGUKICAgIGVuZGlmCiAgIGVuZHdoaWxlCisgIAorICAiIGNsZWFudXAgYW55IHdpbmRvd3MgbWVzcyBhdCBlbmQtb2YtbGluZQorICBrZWVwanVtcHMgc2lsZW50ISAlcy9cciQvL2UKICAgc2V0bG9jYWwgdHM9MzIKIAogIiAgY2FsbCBEcmV0KCJMb2NhbEJyb3dzZUxpc3QiKQpAQCAtMzA5MSwyNyArMzExMiw0MiBAQAogCiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIiBOZXRPcHRpb25TYXZlOiBzYXZlIG9wdGlvbnMgYW5kIHNldCB0byAic3RhbmRhcmQiIGZvcm0ge3t7MQotZnVuIXM6TmV0T3B0aW9uU2F2ZSgpCitmdW4hIHM6TmV0T3B0aW9uU2F2ZSgpCiAiICBjYWxsIERmdW5jKCJOZXRPcHRpb25TYXZlKCkiKQorICBpZiAhZXhpc3RzKCJ3Om5ldG9wdGlvbnNhdmUiKQorICAgbGV0IHc6bmV0b3B0aW9uc2F2ZT0gMQorICBlbHNlCisiICAgY2FsbCBEcmV0KCJOZXRPcHRpb25TYXZlIDogbmV0b3B0aW9uc2F2ZT0iLnc6bmV0b3B0aW9uc2F2ZSkKKyAgIHJldHVybgorICBlbmRpZgogCiAgICIgR2V0IFRlbXBvcmFyeSBGaWxlbmFtZQotICBsZXQgczphaWtlZXAJPSAmYWkKLSAgbGV0IHM6Y2lua2VlcAk9ICZjaW4KLSAgbGV0IHM6Y2lub2tlZXAgPSAmY2lubwotICBsZXQgczpjb21rZWVwCT0gJmNvbQotICBsZXQgczpjcG9rZWVwCT0gJmNwbwotICBsZXQgczpkaXJrZWVwCT0gZ2V0Y3dkKCkKLSAgbGV0IHM6Z2RrZWVwCT0gJmdkCi0gIGxldCBzOnR3a2VlcAk9ICZ0dworICBsZXQgdzphaWtlZXAgICA9ICZhaQorICAiIHJlY29yZCBhdXRvY2hkaXIgc2V0dGluZyBhbmQgdGhlbiBpbnN1cmUgaXRzIHVuc2V0ICh0bnggdG8gRGF2aWQgRmlzaGJ1cm4pCisgIGlmIGhhcygibmV0YmVhbnNfaW50ZyIpIHx8IGhhcygic3VuX3dvcmtzaG9wIikKKyAgIGxldCB3OmFjZGtlZXAgPSAmYXV0b2NoZGlyCisgICBzZXQgbm9hdXRvY2hkaXIKKyAgZW5kaWYKKyAgbGV0IHc6Y2lua2VlcCAgPSAmY2luCisgIGxldCB3OmNpbm9rZWVwID0gJmNpbm8KKyAgbGV0IHc6Y29ta2VlcCAgPSAmY29tCisgIGxldCB3OmNwb2tlZXAgID0gJmNwbworICBpZiAhZzpuZXRyd19rZWVwZGlyCisgICBsZXQgdzpkaXJrZWVwID0gZ2V0Y3dkKCkKKyAgZW5kaWYKKyAgbGV0IHc6Z2RrZWVwICAgPSAmZ2QKKyAgbGV0IHc6cmVwa2VlcCAgPSAmcmVwb3J0CisgIGxldCB3OnR3a2VlcCAgID0gJnR3CiAgIHNldGxvY2FsIGNpbm8gPQogICBzZXRsb2NhbCBjb20gID0KICAgc2V0bG9jYWwgY3BvIC09YUEKICAgc2V0bG9jYWwgbm9jaW4gbm9haQogICBzZXRsb2NhbCB0dyAgID0wCisgIHNldGxvY2FsIHJlcG9ydD0xMDAwMAogICBpZiBoYXMoIndpbjMyIikgJiYgIWhhcygid2luOTUiKQotICAgbGV0IHM6c3dma2VlcD0gJnN3ZgorICAgbGV0IHc6c3dma2VlcD0gJnN3ZgogICAgc2V0bG9jYWwgbm9zd2YKLSIgIGNhbGwgRGVjaG8oInNldHRpbmcgczpzd2ZrZWVwIHRvIDwiLiZzd2YuIj4iKQorIiAgY2FsbCBEZWNobygic2V0dGluZyB3OnN3ZmtlZXAgdG8gPCIuJnN3Zi4iPiIpCiAgIGVuZGlmCiAKICIgIGNhbGwgRHJldCgiTmV0T3B0aW9uU2F2ZSIpCkBAIC0zMTIxLDM2ICszMTU3LDUwIEBACiAiIE5ldE9wdGlvblJlc3RvcmU6IHJlc3RvcmUgb3B0aW9ucyB7e3sxCiBmdW4hIHM6TmV0T3B0aW9uUmVzdG9yZSgpCiAiICBjYWxsIERmdW5jKCJOZXRPcHRpb25SZXN0b3JlKCkiKQorICBpZiAhZXhpc3RzKCJ3Om5ldG9wdGlvbnNhdmUiKQorIiAgIGNhbGwgRHJldCgiTmV0T3B0aW9uUmVzdG9yZSA6IG5ldG9wdGlvbnNhdmU9Ii53Om5ldG9wdGlvbnNhdmUpCisgICByZXR1cm4KKyAgZW5kaWYKKyAgdW5sZXQgdzpuZXRvcHRpb25zYXZlCiAgCi0gIGxldCAmYWkJPSBzOmFpa2VlcAotICBsZXQgJmNpbgk9IHM6Y2lua2VlcAotICBsZXQgJmNpbm8JPSBzOmNpbm9rZWVwCi0gIGxldCAmY29tCT0gczpjb21rZWVwCi0gIGxldCAmY3BvCT0gczpjcG9rZWVwCi0gIGV4ZSAibGNkICIuczpkaXJrZWVwCi0gIGxldCAmZ2QJPSBzOmdka2VlcAotICBsZXQgJnR3CT0gczp0d2tlZXAKLSAgaWYgZXhpc3RzKCJzOnN3ZmtlZXAiKQorICBsZXQgJmFpCT0gdzphaWtlZXAKKyAgaWYgaGFzKCJuZXRiZWFuc19pbnRnIikgfHwgaGFzKCJzdW5fd29ya3Nob3AiKQorICAgbGV0ICZhY2QgICAgID0gdzphY2RrZWVwCisgIGVuZGlmCisgIGxldCAmY2luCT0gdzpjaW5rZWVwCisgIGxldCAmY2lubwk9IHc6Y2lub2tlZXAKKyAgbGV0ICZjb20JPSB3OmNvbWtlZXAKKyAgbGV0ICZjcG8JPSB3OmNwb2tlZXAKKyAgaWYgZXhpc3RzKCJ3OmRpcmtlZXAiKQorICAgZXhlICJsY2QgIi53OmRpcmtlZXAKKyAgZW5kaWYKKyAgbGV0ICZnZAk9IHc6Z2RrZWVwCisgIGxldCAmcmVwb3J0ICAgPSB3OnJlcGtlZXAKKyAgbGV0ICZ0dwk9IHc6dHdrZWVwCisgIGlmIGV4aXN0cygidzpzd2ZrZWVwIikKICAgIGlmICZkaXJlY3RvcnkgPT0gIiIKICAgICAiIHVzZXIgaGFzbid0IHNwZWNpZmllZCBhIHN3YXBmaWxlIGRpcmVjdG9yeTsKICAgICAiIG5ldHJ3IHdpbGwgdGVtcG9yYXJpbHkgbWFrZSB0aGUgc3dhcGZpbGUKICAgICAiIGRpcmVjdG9yeSB0aGUgY3VycmVudCBsb2NhbCBvbmUuCiAgICAgbGV0ICZkaXJlY3RvcnkgICA9IGdldGN3ZCgpCi0gICAgc2lsZW50ISBsZXQgJnN3ZiA9IHM6c3dma2VlcAorICAgIHNpbGVudCEgbGV0ICZzd2YgPSB3OnN3ZmtlZXAKICAgICBzZXQgZGlyZWN0b3J5PQogICAgZWxzZQotICAgIGxldCAmc3dmPSBzOnN3ZmtlZXAKKyAgICBsZXQgJnN3Zj0gdzpzd2ZrZWVwCiAgICBlbmRpZgotICAgdW5sZXQgczpzd2ZrZWVwCisgICB1bmxldCB3OnN3ZmtlZXAKICAgZW5kaWYKLSAgdW5sZXQgczphaWtlZXAKLSAgdW5sZXQgczpjaW5rZWVwCi0gIHVubGV0IHM6Y2lub2tlZXAKLSAgdW5sZXQgczpjb21rZWVwCi0gIHVubGV0IHM6Y3Bva2VlcAotICB1bmxldCBzOmdka2VlcAotICB1bmxldCBzOnR3a2VlcAotICB1bmxldCBzOmRpcmtlZXAKKyAgdW5sZXQgdzphaWtlZXAKKyAgdW5sZXQgdzpjaW5rZWVwCisgIHVubGV0IHc6Y2lub2tlZXAKKyAgdW5sZXQgdzpjb21rZWVwCisgIHVubGV0IHc6Y3Bva2VlcAorICB1bmxldCB3Omdka2VlcAorICB1bmxldCB3OnJlcGtlZXAKKyAgdW5sZXQgdzp0d2tlZXAKKyAgaWYgZXhpc3RzKCJ3OmRpcmtlZXAiKQorICAgdW5sZXQgdzpkaXJrZWVwCisgIGVuZGlmCiAgCiAiICBjYWxsIERyZXQoIk5ldE9wdGlvblJlc3RvcmUiKQogZW5kZnVuCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9ldmFsLnR4dCBiL3J1bnRpbWUvZG9jL2V2YWwudHh0CmluZGV4IDYxYTIyZGYuLmMxODk1OTYgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL2V2YWwudHh0CisrKyBiL3J1bnRpbWUvZG9jL2V2YWwudHh0CkBAIC00NjkyLDEwICs0NjkyLDcgQEAKIAlmdW5jdGlvbiBTZXRGaWxlVHlwZVNIKG5hbWUpCiAJICAgIExhc3Qgc2V0IGZyb20gL3Vzci9zaGFyZS92aW0vdmltLTcuMC9maWxldHlwZS52aW0KIDwKLVdoZW4gdGhlIGZ1bmN0aW9uIHdhcyBkZWZpbmVkIGJ5IGhhbmQgdGhlcmUgaXMgbm8gIkxhc3Qgc2V0IiBtZXNzYWdlLiAgV2hlbgotdGhlIGZ1bmN0aW9uIHdhcyBkZWZpbmVkIHdoaWxlIGV4ZWN1dGluZyBhIGZ1bmN0aW9uLCB1c2VyIGNvbW1hbmQgb3IKLWF1dG9jb21tYW5kLCB0aGUgc2NyaXB0IGluIHdoaWNoIGl0IHdhcyBkZWZpbmVkIGlzIHJlcG9ydGVkLgote25vdCBhdmFpbGFibGUgd2hlbiBjb21waWxlZCB3aXRob3V0IHRoZSArZXZhbCBmZWF0dXJlfQorU2VlIHw6dmVyYm9zZS1jbWR8IGZvciBtb3JlIGluZm9ybWF0aW9uLgogCiAgCQkJCQkJCSpFMTI0KiAqRTEyNSoKIDpmdVtuY3Rpb25dWyFdIHtuYW1lfShbYXJndW1lbnRzXSkgW3JhbmdlXSBbYWJvcnRdIFtkaWN0XQpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2Mvb3B0aW9ucy50eHQgYi9ydW50aW1lL2RvYy9vcHRpb25zLnR4dAppbmRleCBkMTVkNDU0Li41NmE5MWI2IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9vcHRpb25zLnR4dAorKysgYi9ydW50aW1lL2RvYy9vcHRpb25zLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpvcHRpb25zLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDUgQXVnIDEyCisqb3B0aW9ucy50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA1IEF1ZyAxOAogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTAkgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC00Mjg0LDYgKzQyODQsNDUgQEAKIAlnZW5lcmF0ZWQgZnJvbSBhIGxpc3Qgb2YgaXRlbXMsIGUuZy4sIHRoZSBCdWZmZXJzIG1lbnUuICBDaGFuZ2luZyB0aGlzCiAJb3B0aW9uIGhhcyBubyBkaXJlY3QgZWZmZWN0LCB0aGUgbWVudSBtdXN0IGJlIHJlZnJlc2hlZCBmaXJzdC4KIAorCQkJCQkJKidta3NwZWxsbWVtJyogKidtc20nKgorJ21rc3BlbGxtZW0nICdtc20nCXN0cmluZwkoZGVmYXVsdCAiNDYwMDAwLDIwMDAsNTAwIikKKwkJCWdsb2JhbAorCQkJe25vdCBpbiBWaX0KKwkJCXtub3QgYXZhaWxhYmxlIHdoZW4gY29tcGlsZWQgd2l0aG91dCB0aGUgfCtzeW50YXh8CisJCQlmZWF0dXJlfQorCVBhcmFtZXRlcnMgZm9yIHw6bWtzcGVsbHwuICBUaGlzIHR1bmVzIHdoZW4gdG8gc3RhcnQgY29tcHJlc3NpbmcgdGhlCisJd29yZCB0cmVlLiAgQ29tcHJlc3Npb24gY2FuIGJlIHNsb3cgd2hlbiB0aGVyZSBhcmUgbWFueSB3b3JkcywgYnV0CisJaXQncyBuZWVkZWQgdG8gYXZvaWQgcnVubmluZyBvdXQgb2YgbWVtb3J5LiAgVGhlIGFtb3VudCBvZiBtZW1vcnkgdXNlZAorCXBlciB3b3JkIGRlcGVuZHMgdmVyeSBtdWNoIG9uIGhvdyBzaW1pbGFyIHRoZSB3b3JkcyBhcmUsIHRoYXQncyB3aHkKKwl0aGlzIHR1bmluZyBpcyBjb21wbGljYXRlZC4KKworCVRoZXJlIGFyZSB0aHJlZSBudW1iZXJzLCBzZXBhcmF0ZWQgYnkgY29tbWFzOgorCQl7c3RhcnR9LHtpbmN9LHthZGRlZH0KKworCUZvciBtb3N0IGxhbmd1YWdlcyB0aGUgdW5jb21wcmVzc2VkIHdvcmQgdHJlZSBmaXRzIGluIG1lbW9yeS4gIHtzdGFydH0KKwlnaXZlcyB0aGUgYW1vdW50IG9mIG1lbW9yeSBpbiBLYnl0ZSB0aGF0IGNhbiBiZSB1c2VkIGJlZm9yZSBhbnkKKwljb21wcmVzc2lvbiBpcyBkb25lLiAgSXQgc2hvdWxkIGJlIGEgYml0IHNtYWxsZXIgdGhhbiB0aGUgYW1vdW50IG9mCisJbWVtb3J5IHRoYXQgaXMgYXZhaWxhYmxlIHRvIFZpbS4KKworCVdoZW4gZ29pbmcgb3ZlciB0aGUge3N0YXJ0fSBsaW1pdCB0aGUge2luY30gbnVtYmVyIHNwZWNpZmllcyB0aGUKKwlhbW91bnQgb2YgbWVtb3J5IGluIEtieXRlIHRoYXQgY2FuIGJlIGFsbG9jYXRlZCBiZWZvcmUgYW5vdGhlcgorCWNvbXByZXNzaW9uIGlzIGRvbmUuICBBIGxvdyBudW1iZXIgbWVhbnMgY29tcHJlc3Npb24gaXMgZG9uZSBhZnRlcgorCWxlc3Mgd29yZHMgYXJlIGFkZGVkLCB3aGljaCBpcyBzbG93LiAgQSBoaWdoIG51bWJlciBtZWFucyBtb3JlIG1lbW9yeQorCXdpbGwgYmUgYWxsb2NhdGVkLgorCisJQWZ0ZXIgZG9pbmcgY29tcHJlc3Npb24sIHthZGRlZH0gdGltZXMgMTAyNCB3b3JkcyBjYW4gYmUgYWRkZWQgYmVmb3JlCisJdGhlIHtpbmN9IGxpbWl0IGlzIGlnbm9yZWQgYW5kIGNvbXByZXNzaW9uIGlzIGRvbmUgd2hlbiBhbnkgZXh0cmEKKwlhbW91bnQgb2YgbWVtb3J5IGlzIG5lZWRlZC4gIEEgbG93IG51bWJlciBtZWFucyB0aGVyZSBpcyBhIHNtYWxsZXIKKwljaGFuY2Ugb2YgaGl0dGluZyB0aGUge2luY30gbGltaXQsIGxlc3MgbWVtb3J5IGlzIHVzZWQgYnV0IGl0J3MKKwlzbG93ZXIuCisKKwlUaGUgbGFuZ3VhZ2VzIGZvciB3aGljaCB0aGVzZSBudW1iZXJzIGFyZSBpbXBvcnRhbnQgYXJlIEl0YWxpYW4gYW5kCisJSHVuZ2FyaWFuLiAgVGhlIGRlZmF1bHQgd29ya3MgZm9yIHdoZW4geW91IGhhdmUgYWJvdXQgNTEyIE1ieXRlLiAgSWYKKwl5b3UgaGF2ZSAxIEdieXRlIHlvdSBjb3VsZCB1c2U6ID4KKwkJOnNldCBta3NwZWxsbWVtPTkwMDAwMCwzMDAwLDgwMAorPAlJZiB5b3UgaGF2ZSBsZXNzIHRoYW4gNTEyIE1ieXRlIHw6bWtzcGVsbHwgbWF5IGZhaWwgZm9yIHNvbWUKKwlsYW5ndWFnZXMsIG5vIG1hdHRlciB3aGF0IHlvdSBzZXQgJ21rc3BlbGxtZW0nIHRvLgorCiAJCQkJICAgKidtb2RlbGluZScqIConbWwnKiAqJ25vbW9kZWxpbmUnKiAqJ25vbWwnKgogJ21vZGVsaW5lJyAnbWwnCQlib29sZWFuCShWaW0gZGVmYXVsdDogb24sIFZpIGRlZmF1bHQ6IG9mZikKIAkJCWxvY2FsIHRvIGJ1ZmZlcgpAQCAtNTY5Niw3ICs1NzM1LDcgQEAKIAkJCWZlYXR1cmV9CiAJUGF0dGVybiB0byBsb2NhdGUgdGhlIGVuZCBvZiBhIHNlbnRlbmNlLiAgVGhlIGZvbGxvd2luZyB3b3JkIHdpbGwgYmUKIAljaGVja2VkIHRvIHN0YXJ0IHdpdGggYSBjYXBpdGFsIGxldHRlci4gIElmIG5vdCB0aGVuIGl0IGlzIGhpZ2hsaWdodGVkCi0Jd2l0aCBTcGVsbENhcCB8aGwtU3BlbGxDYXB8LgorCXdpdGggU3BlbGxDYXAgfGhsLVNwZWxsQ2FwfCAodW5sZXNzIHRoZSB3b3JkIGlzIGFsc28gYmFkbHkgc3BlbGxlZCkuCiAJV2hlbiB0aGlzIGNoZWNrIGlzIG5vdCB3YW50ZWQgbWFrZSB0aGlzIG9wdGlvbiBlbXB0eS4KIAlPbmx5IHVzZWQgd2hlbiAnc3BlbGwnIGlzIHNldC4KIAlCZSBjYXJlZnVsIHdpdGggc3BlY2lhbCBjaGFyYWN0ZXJzLCBzZWUgfG9wdGlvbi1iYWNrc2xhc2h8IGFib3V0CkBAIC01NzQ5LDYgKzU3ODgsNyBAQAogCXJlZ2lvbiBieSBsaXN0aW5nIHRoZW06ICJlbl91cyxlbl9jYSIgc3VwcG9ydHMgYm90aCBVUyBhbmQgQ2FuYWRpYW4KIAlFbmdsaXNoLCBidXQgbm90IHdvcmRzIHNwZWNpZmljIGZvciBBdXN0cmFsaWEsIE5ldyBaZWFsYW5kIG9yIEdyZWF0CiAJQnJpdGFpbi4KKwkJCQkJCQkqRTc1NyoKIAlBcyBhIHNwZWNpYWwgY2FzZSB0aGUgbmFtZSBvZiBhIC5zcGwgZmlsZSBjYW4gYmUgZ2l2ZW4gYXMtaXMuICBUaGUKIAlmaXJzdCAiX3h4IiBpbiB0aGUgbmFtZSBpcyByZW1vdmVkIGFuZCB1c2VkIGFzIHRoZSByZWdpb24gbmFtZQogCShfeHggaXMgYW4gdW5kZXJzY29yZSwgdHdvIGxldHRlcnMgYW5kIGZvbGxvd2VkIGJ5IGEgbm9uLWxldHRlcikuCkBAIC01Nzg5LDYgKzU4MjksMTEgQEAKIAkJCWNoYXJhY3RlciBpbnNlcnRzL2RlbGV0ZXMvc3dhcHMuICBXb3JrcyB3ZWxsIGZvcgogCQkJc2ltcGxlIHR5cGluZyBtaXN0YWtlcy4KIAorCXtudW1iZXJ9CVRoZSBtYXhpbXVtIG51bWJlciBvZiBzdWdnZXN0aW9ucyBsaXN0ZWQgZm9yIHx6P3wuCisJCQlOb3QgdXNlZCBmb3IgfHNwZWxsc3VnZ2VzdCgpfC4gIFRoZSBudW1iZXIgb2YKKwkJCXN1Z2dlc3Rpb25zIGlzIG5ldmVyIG1vcmUgdGhhbiB0aGUgdmFsdWUgb2YgJ2xpbmVzJworCQkJbWludXMgdHdvLgorCiAJZmlsZTp7ZmlsZW5hbWV9IFJlYWQgZmlsZSB7ZmlsZW5hbWV9LCB3aGljaCBtdXN0IGhhdmUgdHdvIGNvbHVtbnMsCiAJCQlzZXBhcmF0ZWQgYnkgYSBzbGFzaC4gIFRoZSBmaXJzdCBjb2x1bW4gY29udGFpbnMgdGhlCiAJCQliYWQgd29yZCwgdGhlIHNlY29uZCBjb2x1bW4gdGhlIHN1Z2dlc3RlZCBnb29kIHdvcmQuCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9wYXR0ZXJuLnR4dCBiL3J1bnRpbWUvZG9jL3BhdHRlcm4udHh0CmluZGV4IDA3OGQ3NTQuLjg0ZTliZjUgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3BhdHRlcm4udHh0CisrKyBiL3J1bnRpbWUvZG9jL3BhdHRlcm4udHh0CkBAIC0xLDQgKzEsNCBAQAotKnBhdHRlcm4udHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA1IEF1ZyAxNAorKnBhdHRlcm4udHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA1IEF1ZyAxOAogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtOTQzLDkgKzk0MywxMCBAQAogCSJcX1teYWJdIiBtYXRjaGVzIHRoZSBlbmQtb2YtbGluZSBhbmQgYW55IGNoYXJhY3RlciBidXQgImEiIGFuZCAiYiIuCiAJVGhpcyBtYWtlcyBpdCBWaSBjb21wYXRpYmxlOiBXaXRob3V0IHRoZSAiXF8iIG9yICJcbiIgdGhlIGNvbGxlY3Rpb24KIAlkb2VzIG5vdCBtYXRjaCBhbiBlbmQtb2YtbGluZS4KLQorCQkJCQkJCQkqRTc2OSoKIAlXaGVuIHRoZSAnXScgaXMgbm90IHRoZXJlIFZpbSB3aWxsIG5vdCBnaXZlIGFuIGVycm9yIG1lc3NhZ2UgYnV0Ci0JYXNzdW1lIG5vIGNvbGxlY3Rpb24gaXMgdXNlZC4gIFVzZWZ1bCB0byBzZWFyY2ggZm9yICdbJy4KKwlhc3N1bWUgbm8gY29sbGVjdGlvbiBpcyB1c2VkLiAgVXNlZnVsIHRvIHNlYXJjaCBmb3IgJ1snLiAgSG93ZXZlciwgeW91CisJZG8gZ2V0IEU3NjkgZm9yIGludGVybmFsIHNlYXJjaGluZy4KIAogCUlmIHRoZSBzZXF1ZW5jZSBiZWdpbnMgd2l0aCAiXiIsIGl0IG1hdGNoZXMgYW55IHNpbmdsZSBjaGFyYWN0ZXIgTk9UCiAJaW4gdGhlIGNvbGxlY3Rpb246ICJbXnh5el0iIG1hdGNoZXMgYW55dGhpbmcgYnV0ICd4JywgJ3knIGFuZCAneicuCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9waV9uZXRydy50eHQgYi9ydW50aW1lL2RvYy9waV9uZXRydy50eHQKaW5kZXggMDA3MTg4My4uNDhlZTg4MCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvcGlfbmV0cncudHh0CisrKyBiL3J1bnRpbWUvZG9jL3BpX25ldHJ3LnR4dApAQCAtMTIxNyw2ICsxMjE3LDExIEBACiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIDEwLiBIaXN0b3J5CQkJCQkJKm5ldHJ3LWhpc3RvcnkqCiAKKwl2NjQ6ICogQnJvd3NlciBmdW5jdGlvbnMgbm93IHVzZSBOZXRPcHRpb25TYXZlL1Jlc3RvcmU7IGluIHBhcnRpY3VsYXIsCisJICAgICAgIG5ldHJ3IG5vdyB3b3JrcyBhcm91bmQgdGhlIHJlcG9ydCBzZXR0aW5nCisJICAgICAqIEJ1Z2ZpeCAtIGJyb3dzaW5nIGEgIi8iIGRpcmVjdG9yeSAoVW5peCkgeWllbGRlZCBidWZmZXJzIAorCSAgICAgICBuYW1lZCAiW1NjcmF0Y2hdIiBpbnN0ZWFkIG9mICIvIgorCSAgICAgKiBCdWdmaXggLSByZW1vdGUgYnJvd3Npbmcgd2l0aCBmdHAgd2FzIG9taXR0aW5nIHRoZSAuLyBhbmQgLi4vCiAJdjYzOiAqIG5ldHJ3IG5vdyB0YWtlcyBhZHZhbnRhZ2Ugb2YgYXV0b2xvYWQgKGFuZCByZXF1aXJlcyA3LjApCiAJICAgICAqIEJ1Z2ZpeCAtIHVzaW5nIHIgKHRvIHJldmVyc2Ugc29ydCkgd29ya2luZyBhZ2FpbgogCXY2MjogKiBCdWdmaXggLSBzcGFjZXMgYWxsb3dlZCBhZ2FpbiBpbiBkaXJlY3RvcnkgbmFtZXMgd2l0aApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2Mvc3BlbGwudHh0IGIvcnVudGltZS9kb2Mvc3BlbGwudHh0CmluZGV4IDkyOWMxMDYuLjJlYzJlYmEgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3NwZWxsLnR4dAorKysgYi9ydW50aW1lL2RvYy9zcGVsbC50eHQKQEAgLTEsNCArMSw0IEBACi0qc3BlbGwudHh0KglGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNSBBdWcgMTYKKypzcGVsbC50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA1IEF1ZyAxOQogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTAkgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC00MzMsOCArNDMzLDEyIEBACiAJCQl8c3BlbGwtYWZmaXgtU0FMfAogCiAJCQlUaGlzIGNvbW1hbmQgdXNlcyBhIGxvdCBvZiBtZW1vcnksIHJlcXVpcmVkIHRvIGZpbmQKLQkJCXRoZSBvcHRpbWFsIHdvcmQgdHJlZSAoUG9saXNoIHJlcXVpcmVzIGEgZmV3IGh1bmRyZWQKLQkJCU1ieXRlKS4gIFRoZSBmaW5hbCByZXN1bHQgd2lsbCBiZSBtdWNoIHNtYWxsZXIuCisJCQl0aGUgb3B0aW1hbCB3b3JkIHRyZWUgKFBvbGlzaCwgSXRhbGlhbiBhbmQgSHVuZ2FyaWFuCisJCQlyZXF1aXJlIHNldmVyYWwgaHVuZHJlZCBNYnl0ZSkuICBUaGUgZmluYWwgcmVzdWx0IHdpbGwKKwkJCWJlIG11Y2ggc21hbGxlciwgYmVjYXVzZSBjb21wcmVzc2lvbiBpcyB1c2VkLiAgVG8KKwkJCWF2b2lkIHJ1bm5pbmcgb3V0IG9mIG1lbW9yeSBjb21wcmVzc2lvbiB3aWxsIGJlIGRvbmUKKwkJCW5vdyBhbmQgdGhlbi4gIFRoaXMgY2FuIGJlIHR1bmVkIHdpdGggdGhlICdta3NwZWxsbWVtJworCQkJb3B0aW9uLgogCiAJCQlBZnRlciB0aGUgc3BlbGwgZmlsZSB3YXMgd3JpdHRlbiBhbmQgaXQgd2FzIGJlaW5nIHVzZWQKIAkJCWluIGEgYnVmZmVyIGl0IHdpbGwgYmUgcmVsb2FkZWQgYXV0b21hdGljYWxseS4KQEAgLTQ1Miw3ICs0NTYsOCBAQAogVmltIHdpbGwgcmVwb3J0IHRoZSBudW1iZXIgb2YgZHVwbGljYXRlIHdvcmRzLiAgVGhpcyBtaWdodCBiZSBhIG1pc3Rha2UgaW4gdGhlCiBsaXN0IG9mIHdvcmRzLiAgQnV0IHNvbWV0aW1lcyBpdCBpcyB1c2VkIHRvIGhhdmUgZGlmZmVyZW50IHByZWZpeGVzIGFuZAogc3VmZml4ZXMgZm9yIHRoZSBzYW1lIGJhc2ljIHdvcmQgdG8gYXZvaWQgdGhlbSBjb21iaW5pbmcgKGUuZy4gQ3plY2ggdXNlcwotdGhpcykuCit0aGlzKS4gIElmIHlvdSB3YW50IFZpbSB0byByZXBvcnQgYWxsIGR1cGxpY2F0ZSB3b3JkcyBzZXQgdGhlICd2ZXJib3NlJworb3B0aW9uLgogCiBTaW5jZSB5b3UgbWlnaHQgd2FudCB0byBjaGFuZ2UgYSBNeXNwZWxsIHdvcmQgbGlzdCBmb3IgdXNlIHdpdGggVmltIHRoZQogZm9sbG93aW5nIHByb2NlZHVyZSBpcyByZWNvbW1lbmRlZDoKQEAgLTQ3Nyw2ICs0ODIsMjUgQEAKIDQuIFJlbmFtZSB4eF9ZWS5uZXcuZGljIHRvIHh4X1lZLm9yaWcuZGljIGFuZCB4eF9ZWS5uZXcuYWZmIHRvIHh4X1lZLm5ldy5hZmYuCiAKIAorU1BFTEwgRklMRSBWRVJTSU9OUwkJCQkJKkU3NzAqICpFNzcxKiAqRTc3MioKKworU3BlbGwgY2hlY2tpbmcgaXMgYSByZWxhdGl2ZWx5IG5ldyBmZWF0dXJlIGluIFZpbSwgdGh1cyBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlCisuc3BsIGZpbGUgZm9ybWF0IHdpbGwgYmUgY2hhbmdlZCB0byBzdXBwb3J0IG1vcmUgbGFuZ3VhZ2VzLiAgVmltIHdpbGwgY2hlY2sKK3RoZSB2YWxpZGl0eSBvZiB0aGUgc3BlbGwgZmlsZSBhbmQgcmVwb3J0IGFueXRoaW5nIHdyb25nLgorCisJRTc3MTogT2xkIHNwZWxsIGZpbGUsIG5lZWRzIHRvIGJlIHVwZGF0ZWQgfgorVGhpcyBzcGVsbCBmaWxlIGlzIG9sZGVyIHRoYW4geW91ciBWaW0uICBZb3UgbmVlZCB0byB1cGRhdGUgdGhlIC5zcGwgZmlsZS4KKworCUU3NzI6IFNwZWxsIGZpbGUgaXMgZm9yIG5ld2VyIHZlcnNpb24gb2YgVmltIH4KK1RoaXMgbWVhbnMgdGhlIHNwZWxsIGZpbGUgd2FzIG1hZGUgZm9yIGEgbGF0ZXIgdmVyc2lvbiBvZiBWaW0uICBZb3UgbmVlZCB0bwordXBkYXRlIFZpbS4KKworCUU3NzA6IFVuc3VwcG9ydGVkIHNlY3Rpb24gaW4gc3BlbGwgZmlsZSB+CitUaGlzIG1lYW5zIHRoZSBzcGVsbCBmaWxlIHdhcyBtYWRlIGZvciBhIGxhdGVyIHZlcnNpb24gb2YgVmltIGFuZCBjb250YWlucyBhCitzZWN0aW9uIHRoYXQgaXMgcmVxdWlyZWQgZm9yIHRoZSBzcGVsbCBmaWxlIHRvIHdvcmsuICBJbiB0aGlzIGNhc2UgaXQncworcHJvYmFibHkgYSBnb29kIGlkZWEgdG8gdXBncmFkZSB5b3VyIFZpbS4KKworCiBTUEVMTCBGSUxFIERVTVAKIAogSWYgZm9yIHNvbWUgcmVhc29uIHlvdSB3YW50IHRvIGNoZWNrIHdoYXQgd29yZHMgYXJlIHN1cHBvcnRlZCBieSB0aGUgY3VycmVudGx5CkBAIC03MzYsNiArNzYwLDcgQEAKIAlTRlggRiAwIGluICAgW15pXW4gICAgICAjIFNwaW9uID4gU3Bpb25pbiAgfgogCVNGWCBGIDAgbmVuICBpbiAgICAgICAgICMgQmF1ZXJpbiA+IEJhdWVyaW5uZW4gfgogCisJCQkJCQkJKnNwZWxsLWFmZml4LXJhcmUqCiBBbiBleHRyYSBpdGVtIGZvciBWaW0gaXMgdGhlICJyYXJlIiBmbGFnLiAgSXQgbXVzdCBjb21lIGFmdGVyIHRoZSBvdGhlcgogZmllbGRzLCBiZWZvcmUgYSBjb21tZW50LiAgV2hlbiB1c2VkIHRoZW4gYWxsIHdvcmRzIHRoYXQgdXNlIHRoZSBhZmZpeCB3aWxsIGJlCiBtYXJrZWQgYXMgcmFyZSB3b3Jkcy4gIEV4YW1wbGU6CkBAIC03NDYsNiArNzcxLDIyIEBACiBIb3dldmVyLCBpZiB0aGUgd29yZCBhbHNvIGFwcGVhcnMgYXMgYSBnb29kIHdvcmQgaW4gYW5vdGhlciB3YXkgaXQgd29uJ3QgYmUKIG1hcmtlZCBhcyByYXJlLgogCisJCQkJCQkJKnNwZWxsLWFmZml4LW5vY29tcCoKK0Fub3RoZXIgZXh0cmEgaXRlbSBmb3IgVmltIGlzIHRoZSAibm9jb21wIiBmbGFnLiAgSXQgbXVzdCBjb21lIGFmdGVyIHRoZSBvdGhlcgorZmllbGRzLCBiZWZvcmUgYSBjb21tZW50LiAgSXQgY2FuIGJlIGVpdGhlciBiZWZvcmUgb3IgYWZ0ZXIgInJhcmUiLiAgV2hlbiB1c2VkCit0aGVuIGFsbCB3b3JkcyB0aGF0IHVzZSB0aGUgYWZmaXggd2lsbCBub3QgYmUgdXNlZCBmb3IgY29tcG91bmQgd29yZHMuCitFeGFtcGxlOgorCWFmZml4IGZpbGU6CisJCUNPTVBPVU5ERkxBRyBjIH4KKwkJU0ZYIGEgWSAyIH4KKwkJU0ZYIGEgMCBzICAgLiB+CisJCVNGWCBhIDAgaXplIC4gbm9jb21wIH4KKwlkaWN0aW9uYXJ5OgorCQl3b3JkL2MgfgorCQl1dGlsL2FjIH4KKworVGhpcyBhbGxvd3MgZm9yICJ3b3JkdXRpbCIgYW5kICJ3b3JkdXRpbHMiIGJ1dCBub3QgIndvcmR1dGlsaXplIi4KKwogCQkJCQkJICAgICpzcGVsbC1hZmZpeC1QRlhQT1NUUE9ORSoKIFdoZW4gYW4gYWZmaXggZmlsZSBoYXMgdmVyeSBtYW55IHByZWZpeGVzIHRoYXQgYXBwbHkgdG8gbWFueSB3b3JkcyBpdCdzIG5vdAogcG9zc2libGUgdG8gYnVpbGQgdGhlIHdob2xlIHdvcmQgbGlzdCBpbiBtZW1vcnkuICBUaGlzIGFwcGxpZXMgdG8gSGVicmV3IChhCkBAIC03NjEsOSArODAyLDYgQEAKIGJ1dCBpbiBsb3dlciBjYXNlLiAgVGh1cyB3aGVuIHRoZSBjaG9wIHN0cmluZyBpcyB1c2VkIHRvIGFsbG93IHRoZSBmb2xsb3dpbmcKIHdvcmQgdG8gc3RhcnQgd2l0aCBhbiB1cHBlciBjYXNlIGxldHRlci4KIAotSXQgaXMgbm90IHBvc3NpYmxlIHRvIHVzZSBQRlhQT1NUUE9ORSB0b2dldGhlciB3aXRoIENPTVBPVU5ERkxBRyBvcgotQ09NUE9VTkRGTEFHUy4KLQogCiBXT1JEUyBXSVRIIEEgU0xBU0gJCQkJCSpzcGVsbC1hZmZpeC1TTEFTSCoKIApAQCAtODE4LDg2ICs4NTYsNzMgQEAKIE9uY2UgYSB3b3JkIGhhcyBiZWVuIG1hcmtlZCBhcyBiYWQgaXQgd29uJ3QgYmUgdW5kb25lIGJ5IGVuY291bnRlcmluZyB0aGUgc2FtZQogd29yZCBhcyBnb29kLgogCisJCQkJCQkJKnNwZWxsLWFmZml4LU5FRURBRkZJWCoKK1RoZSBORUVEQUZGSVggZmxhZyBpcyB1c2VkIHRvIHJlcXVpcmUgdGhhdCBhIHdvcmQgaXMgdXNlZCB3aXRoIGFuIGFmZml4LiAgVGhlCit3b3JkIGl0c2VsZiBpcyBub3QgYSBnb29kIHdvcmQuICBFeGFtcGxlOgorCisJTkVFREFGRklYICsgfgorCiAKIENPTVBPVU5EIFdPUkRTCQkJCQkJKnNwZWxsLWFmZml4LWNvbXBvdW5kKgogCi1BIGNvbXBvdW5kIHdvcmQgaXMgYSBsb25nZXIgd29yZCBtYWRlIGJ5IGNvbmNhdGVuYXRpbmcgd29yZHMuICBUbyBzcGVjaWZ5Ci13aGljaCB3b3JkcyBtYXkgYmUgY29uY2F0ZW5hdGVkIGEgY2hhcmFjdGVyIGlzIHVzZWQuICBUaGlzIGNoYXJhY3RlciBpcyBwdXQgaW4KLXRoZSBsaXN0IG9mIGFmZml4ZXMgYWZ0ZXIgdGhlIHdvcmQuICBXZSB3aWxsIGNhbGwgdGhpcyBjaGFyYWN0ZXIgYSBmbGFnIGhlcmUuCi1PYnZpb3VzbHkgdGhlc2UgZmxhZ3MgbXVzdCBiZSBkaWZmZXJlbnQgZnJvbSBhbnkgYWZmaXggSURzIHVzZWQuCitBIGNvbXBvdW5kIHdvcmQgaXMgYSBsb25nZXIgd29yZCBtYWRlIGJ5IGNvbmNhdGVuYXRpbmcgd29yZHMgdGhhdCBhcHBlYXIgaW4KK3RoZSAuZGljIGZpbGUuICBUbyBzcGVjaWZ5IHdoaWNoIHdvcmRzIG1heSBiZSBjb25jYXRlbmF0ZWQgYSBjaGFyYWN0ZXIgaXMKK3VzZWQuICBUaGlzIGNoYXJhY3RlciBpcyBwdXQgaW4gdGhlIGxpc3Qgb2YgYWZmaXhlcyBhZnRlciB0aGUgd29yZC4gIFdlIHdpbGwKK2NhbGwgdGhpcyBjaGFyYWN0ZXIgYSBmbGFnIGhlcmUuICBPYnZpb3VzbHkgdGhlc2UgZmxhZ3MgbXVzdCBiZSBkaWZmZXJlbnQgZnJvbQorYW55IGFmZml4IElEcyB1c2VkLgogCiAJCQkJCQkJKnNwZWxsLUNPTVBPVU5ERkxBRyoKIFRoZSBNeXNwZWxsIGNvbXBhdGlibGUgbWV0aG9kIHVzZXMgb25lIGZsYWcsIHNwZWNpZmllZCB3aXRoIENPTVBPVU5ERkxBRy4KLUFsbCB3b3JkcyB3aXRoIHRoaXMgZmxhZyBjb21iaW5lIGluIGFueSBvcmRlciBhbmQgd2l0aG91dCBsaW1pdCBpbiBsZW5ndGguCi1UaGlzIG1lYW5zIHRoZXJlIGlzIG5vIGNvbnRyb2wgb3ZlciB3aGljaCB3b3JkIGNvbWVzIGZpcnN0LiAgRXhhbXBsZToKK0FsbCB3b3JkcyB3aXRoIHRoaXMgZmxhZyBjb21iaW5lIGluIGFueSBvcmRlci4gIFRoaXMgbWVhbnMgdGhlcmUgaXMgbm8gY29udHJvbAorb3ZlciB3aGljaCB3b3JkIGNvbWVzIGZpcnN0LiAgRXhhbXBsZToKIAlDT01QT1VOREZMQUcgYyB+CiAKIAkJCQkJCQkqc3BlbGwtQ09NUE9VTkRGTEFHUyoKLVRoZSBtZXRob2QgYWRkZWQgYnkgVmltIGFsbG93cyBzcGVjaWZ5aW5nIHdoaWNoIHdvcmRzIGNhbiBiZSBwcmVwZW5kZWQgdG8KLW90aGVyIHdvcmRzLCBhbmQgd2hpY2ggd29yZHMgY2FuIGJlIGFwcGVuZGVkIHRvIG90aGVyIHdvcmRzLiAgVGhpcyBpcyBhIGxpc3QKLW9mIGNvbW1hIHNlcGFyYXRlZCBpdGVtcy4gIEVhY2ggaXRlbSBtYXkgY29udGFpbiB6ZXJvIG9yIG1vcmUgZGFzaGVzIGFuZCBwbHVzCi1zaWducy4KK0EgbW9yZSBhZHZhbmNlZCBtZXRob2QgdG8gc3BlY2lmeSBob3cgY29tcG91bmQgd29yZHMgY2FuIGJlIGZvcm1lZCB1c2VzCittdWx0aXBsZSBpdGVtcyB3aXRoIG11bHRpcGxlIGZsYWdzLiAgVGhpcyBpcyBub3QgY29tcGF0aWJsZSB3aXRoIE15c3BlbGwgMy4wLgorTGV0J3Mgc3RhcnQgd2l0aCBhbiBleGFtcGxlOgorCUNPTVBPVU5ERkxBR1MgYysgfgorCUNPTVBPVU5ERkxBR1Mgc2UgfgogCi1OT1RFOiBBdCB0aGlzIG1vbWVudCBDT01QT1VOREZMQUdTIGhhcyBub3QgYmVlbiBpbXBsZW1lbnRlZCB5ZXQhCitUaGUgZmlyc3QgbGluZSBkZWZpbmVzIHRoYXQgd29yZHMgd2l0aCB0aGUgImMiIGZsYWcgY2FuIGJlIGNvbmNhdGVuYXRlZCBpbiBhbnkKK29yZGVyLiAgVGhlIHNlY29uZCBsaW5lIGRlZmluZXMgY29tcG91bmQgd29yZHMgdGhhdCBhcmUgbWFkZSBvZiBvbmUgd29yZCB3aXRoCit0aGUgInMiIGZsYWcgYW5kIG9uZSB3b3JkIHdpdGggdGhlICJlIiBmbGFnLiAgV2l0aCB0aGlzIGRpY3Rpb25hcnk6CisJYm9yay9jIH4KKwlvbmlvbi9zIH4KKwlzb3VwL2UgfgogCi1BbiBpdGVtIHdpdGhvdXQgZGFzaGVzIHNwZWNpZmllcyB3b3JkcyB0aGF0IGNvbWJpbmUgaW4gYW55IG9yZGVyIGFuZCBhcyBvZnRlbgotYXMgcG9zc2libGUuICBFeGFtcGxlOgotCUNPTVBPVU5ERkxBR1MgYyxtIH4KLQotVGhpcyBhbGxvd3MgYWxsIHdvcmRzIHdpdGggdGhlICJjIiBmbGFnIHRvIGJlIGNvbWJpbmVkIGFuZCBhbGwgd29yZHMgd2l0aCB0aGUKLSJtIiBmbGFnIHRvIGJlIGNvbWJpbmVkLCBidXQgYSB3b3JkIHdpdGggdGhlICJjIiBmbGFnIGRvZXNuJ3QgY29tYmluZSB3aXRoIGEKLXdvcmQgd2l0aCB0aGUgIm0iIGZsYWcuCi0KLUZsYWdzIHRoYXQgYXJlIHB1dCB0b2dldGhlciwgd2l0aG91dCBhIHNlcGFyYXRpbmcgY29tbWEsIGFyZSBjb25zaWRlcmVkCi1pbnRlcmNoYW5nYWJsZS4gIEV4YW1wbGU6Ci0JQ09NUE9VTkRGTEFHUyBjbSB+Ci0KLVRoaXMgYWxsb3dzIGFsbCB3b3JkcyB3aXRoIHRoZSAiYyIgYW5kL29yICJtIiBmbGFnIHRvIGJlIGNvbWJpbmVkLgotCi1BbiBpdGVtIHdpdGggb25lIGRhc2ggc3BlY2lmaWVzIGZsYWdzIGZvciBhIGxlYWRpbmcgd29yZCBhbmQgZmxhZ3MgZm9yIGEKLXRyYWlsaW5nIHdvcmQuICBUaHVzIG9ubHkgdHdvLXdvcmQgY29tYmluYXRpb25zIGFyZSBtYWRlLiAgRXhhbXBsZToKLQlDT01QT1VOREZMQUdTIGYtZCB+Ci0KLUhlcmUgdGhlICdmJyBmbGFnIGNhbiBiZSB1c2VkIGZvciBmb29kIGFuZCAnZCcgZm9yIGRpc2hlcywgc3VjaCB0aGF0IHlvdSBjYW4KLXVzZSB0aGVzZSB3b3JkcyBpbiB0aGUgZGljdGlvbmFyeToKLQl0b21hdG8vZiB+Ci0Jb25pb24vZn4KLQlzb3VwL2R+Ci0Jc2FsYXQvZH4KLQotV2hpY2ggbWFrZXMgdGhlIHdvcmRzOgotCXRvbWF0bworWW91IGNhbiBtYWtlIHRoZXNlIHdvcmRzOgorCWJvcmsKKwlib3JrYm9yaworCWJvcmtib3JrYm9yaworCShldGMuKQogCW9uaW9uCiAJc291cAotCXNhbGF0Ci0JdG9tYXRvc291cAotCXRvbWF0b3NhbGF0CiAJb25pb25zb3VwCi0Jb25pb25zYWxhdAogCi1Ob3RlIHRoYXQgc29tZXRoaW5nIGxpa2UgInNvdXB0b21hdG8iIGlzIG5vdCBwb3NzaWJsZS4gIEFuZCB0aGF0IGl0J3MgYWN0dWFsbHkKLWVhc2llciB0byBsaXN0IGFsbCB0aGUgd29yZHMgaWYgeW91IGhhdmUgb25seSB0aGlzIGZldy4KK1RoZSBDT01QT1VOREZMQUdTIGl0ZW0gbWF5IGFwcGVhciBtdWx0aXBsZSB0aW1lcy4gIFRoZSBhcmd1bWVudCBpcyBtYWRlIG91dCBvZgorb25lIG9yIG1vcmUgZ3JvdXBzLCB3aGVyZSBlYWNoIGdyb3VwIGNhbiBiZToKKwlvbmUgZmxhZwkJCWUuZy4sIGMKKwlhbHRlcm5hdGUgZmxhZ3MgaW5zaWRlIFtdCWUuZy4sIFthYmNdCitPcHRpb25hbGx5IHRoaXMgbWF5IGJlIGZvbGxvd2VkIGJ5OgorCSoJdGhlIGdyb3VwIGFwcGVhcnMgemVybyBvciBtb3JlIHRpbWVzLCBlLmcuLCBzbSplCisJKwl0aGUgZ3JvdXAgYXBwZWFycyBvbmUgb3IgbW9yZSB0aW1lcywgZS5nLiwgYysKIAotTW9yZSBkYXNoZXMgY2FuIGJlIHVzZWQgdG8gYWxsb3cgbW9yZSB3b3JkcyB0byBjb21iaW5lLiAgRm9yIGV4YW1wbGU6Ci0JQ09NUE9VTkRGTEFHUyBmLWQsZi1mLWQgfgorVGhpcyBpcyBzaW1pbGFyIHRvIHRoZSByZWdleHAgcGF0dGVybiBzeW50YXggKGJ1dCBub3QgdGhlIHNhbWUhKS4gIEEgZmV3CitleGFtcGxlcyB3aXRoIHRoZSBzZXF1ZW5jZSBvZiB3b3JkIGZsYWdzIHRoZXkgcmVxdWlyZToKKyAgICBDT01QT1VOREZMQUdTIHgrCSAgICB4IHh4IHh4eCBldGMuCisgICAgQ09NUE9VTkRGTEFHUyB5egkgICAgeXoKKyAgICBDT01QT1VOREZMQUdTIHgregkgICAgeHogeHh6IHh4eHogZXRjLgorICAgIENPTVBPVU5ERkxBR1MgeXgrCSAgICB5eCB5eHggeXh4eCBldGMuCiAKLVdvdWxkIGFsbG93ICJ0b21hdG9vbmlvbnNvdXAiIChPSywgc28gdGhpcyBpcyBhIGJhZCBleGFtcGxlLCBidXQgeW91IGdldCB0aGUKLWlkZWEpLgotCi1XaGVuIGEgd29yZCBjYW4gYmUgdXNlZCBhbiB1bmRldGVybWluZWQgbnVtYmVyIG9mIHRpbWVzIHVzZSBhIHBsdXMgaW5zdGVhZCBvZgotYSBkYXNoLiAgRXhhbXBsZToKLQlDT01QT1VOREZMQUdTIGYrZCB+Ci0KLVRoZW4geW91IGNhbiBtYWtlIHRhc3R5ICJvbmlvbm9uaW9udG9tYXRvdG9tYXRvc291cCIuCi0KLVRoZSAiKyIgbWF5IGFsc28gYXBwZWFyIGF0IHRoZSBlbmQsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIGxhc3QgZmxhZ3MgY2FuIGJlCi1yZXBlYXRlZCBtYW55IHRpbWVzLiAgRXhhbXBsZToKLQlDT01QT1VOREZMQUdTIGYtZCsgfgotCi1XaGljaCBhbGxvd3MgdGhlIHVzZSBvZiAib25pb25zb3Vwc291cHNvdXBzb3Vwc291cHNvdXAiLgorICAgIENPTVBPVU5ERkxBR1MgW2FiY116ICAgIGF6IGJ6IGN6CisgICAgQ09NUE9VTkRGTEFHUyBbYWJjXSt6ICAgYXogYWF6IGFiYXogYnogYmF6IGJjYnogY3ogY2F6IGNiYXogZXRjLgorICAgIENPTVBPVU5ERkxBR1MgYVt4eXpdKyAgIGF4IGF4eCBheHl6IGF5IGF5eCBheXp6IGF6IGF6eSBhenh5IGV0Yy4KKyAgICBDT01QT1VOREZMQUdTIHNtKmUJICAgIHNlIHNtZSBzbW1lIHNtbW1lIGV0Yy4KKyAgICBDT01QT1VOREZMQUdTIHNbeHl6XSplICBzZSBzeGUgc3h5ZSBzeHl4ZSBzeWUgc3l6ZSBzemUgc3p5ZSBzenl4ZSAgZXRjLgogCiAJCQkJCQkJKnNwZWxsLUNPTVBPVU5ETUlOKgotVGhlIG1pbmltYWwgbGVuZ3RoIG9mIGEgd29yZCB1c2VkIGZvciBjb25jYXRlbmF0aW9uIGlzIHNwZWNpZmllZCB3aXRoCitUaGUgbWluaW1hbCBieXRlIGxlbmd0aCBvZiBhIHdvcmQgdXNlZCBmb3IgY29uY2F0ZW5hdGlvbiBpcyBzcGVjaWZpZWQgd2l0aAogQ09NUE9VTkRNSU4uICBFeGFtcGxlOgogCUNPTVBPVU5ETUlOIDUgfgogCkBAIC05MDUsMzkgKzkzMCw3OSBAQAogbGVhdmUgb3V0IHRoZSBjb21wb3VuZCBmbGFnIGZyb20gc2hvcnQgd29yZHMgaW5zdGVhZCwgdGhpcyBmZWF0dXJlIGlzIHByZXNlbnQKIGZvciBjb21wYXRpYmlsaXR5IHdpdGggTXlzcGVsbC4KIAotCQkJCQkJCSpzcGVsbC1DTVAqCi1OT1RFOiBBdCB0aGlzIG1vbWVudCBDTVAgaGFzIG5vdCBiZWVuIGltcGxlbWVudGVkIHlldCEKKwkJCQkJCQkqc3BlbGwtQ09NUE9VTkRNQVgqCitUaGUgbWF4aW11bSBudW1iZXIgb2Ygd29yZHMgdGhhdCBjYW4gYmUgY29uY2F0ZW5hdGVkIGludG8gYSBjb21wb3VuZCB3b3JkIGlzCitzcGVjaWZpZWQgd2l0aCBDT01QT1VORE1BWC4gIEV4YW1wbGU6CisJQ09NUE9VTkRNQVggMyB+CiAKLVNvbWV0aW1lcyBpdCBpcyBuZWNlc3NhcnkgdG8gY2hhbmdlIGEgd29yZCB3aGVuIGNvbmNhdGVuYXRpbmcgaXQgdG8gYW5vdGhlciwKLWJ5IHJlbW92aW5nIGEgZmV3IGxldHRlcnMsIGluc2VydGluZyBzb21ldGhpbmcgb3IgYm90aC4gIEl0IGNhbiBhbHNvIGJlIHVzZWZ1bAotdG8gcmVzdHJpY3QgY29uY2F0ZW5hdGlvbiB0byB3b3JkcyB0aGF0IG1hdGNoIGEgcGF0dGVybi4gIEZvciB0aGlzIHB1cnBvc2UgQ01QCi1pdGVtcyBjYW4gYmUgdXNlZC4gIFRoZXkgbG9vayBsaWtlIHRoaXM6Ci0JQ01QIHtmbGFnfSB7ZmxhZ3N9IHtzdHJpcH0ge2FkZH0ge2NvbmR9IHtjb25kMn0KK1doZW4gb21pdHRlZCB0aGVyZSBpcyBubyBtYXhpbXVtLiAgSXQgYXBwbGllcyB0byBhbGwgY29tcG91bmQgd29yZHMuCiAKLQl7ZmxhZ30JCXRoZSBmbGFnLCBhcyB1c2VkIGluIENPTVBPVU5ERkxBR1MgZm9yIHRoZSBsZWFkIHdvcmQKLQl7ZmxhZ3N9CQlhY2NlcHRlZCBmbGFncyBmb3IgdGhlIGZvbGxvd2luZyB3b3JkICgnLicgdG8gYWNjZXB0Ci0JCQlhbGwpCi0Je3N0cmlwfQkJdGV4dCB0byByZW1vdmUgZnJvbSB0aGUgZW5kIG9mIHRoZSBsZWFkIHdvcmQgKHplcm8KLQkJCWZvciBubyBzdHJpcHBpbmcpCi0Je2FkZH0JCXRleHQgdG8gaW5zZXJ0IGJldHdlZW4gdGhlIHdvcmRzICh6ZXJvIGZvciBubwotCQkJYWRkaXRpb24pCi0Je2NvbmR9CQljb25kaXRpb24gdG8gbWF0Y2ggYXQgdGhlIGVuZCBvZiB0aGUgbGVhZCB3b3JkCi0Je2NvbmQyfQkJY29uZGl0aW9uIHRvIG1hdGNoIGF0IHRoZSBzdGFydCBvZiB0aGUgZm9sbG93aW5nIHdvcmQKK1RvIHNldCBhIGxpbWl0IGZvciB3b3JkcyB3aXRoIHNwZWNpZmljIGZsYWdzIG1ha2Ugc3VyZSB0aGUgaXRlbXMgaW4KK0NPTVBPVU5ERkxBR1Mgd2hlcmUgdGhleSBhcHBlYXIgZG9uJ3QgYWxsb3cgdG9vIG1hbnkgd29yZHMuCiAKLVRoaXMgaXMgdGhlIHNhbWUgYXMgd2hhdCBpcyB1c2VkIGZvciBTRlggYW5kIFBGWCBpdGVtcywgd2l0aCB0aGUgZXh0cmEge2ZsYWdzfQotYW5kIHtjb25kMn0gZmllbGRzLiAgRXhhbXBsZToKLQlDTVAgZiBtcnQgMCAtIC4gLiB+CisJCQkJCQkJKnNwZWxsLUNPTVBPVU5EU1lMTUFYKgorVGhlIG1heGltdW0gbnVtYmVyIG9mIHN5bGxhYmxlcyB0aGF0IGEgY29tcG91bmQgd29yZCBtYXkgY29udGFpbiBpcyBzcGVjaWZpZWQKK3dpdGggQ09NUE9VTkRTWUxNQVguICBFeGFtcGxlOgorCUNPTVBPVU5EU1lMTUFYIDYgfgogCi1XaGVuIHVzZWQgd2l0aCB0aGUgZm9vZCBhbmQgZGlzaCB3b3JkIGxpc3QgYWJvdmUsIHRoaXMgbWVhbnMgdGhhdCBhIGRhc2ggaXMKLWluc2VydGVkIGFmdGVyIGVhY2ggZm9vZCBpdGVtLiAgVGh1cyB5b3UgZ2V0ICJvbmlvbi1zb3VwIiBhbmQKLSJvbmlvbi10b21hdG8tc2FsYXQiLgorVGhpcyBoYXMgbm8gZWZmZWN0IGlmIHRoZXJlIGlzIG5vIFNZTExBQkxFIGl0ZW0uICBXaXRob3V0IENPTVBPVU5EU1lMTUFYIHRoZXJlCitpcyBubyBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIHN5bGxhYmxlcy4KIAotV2hlbiB0aGVyZSBhcmUgQ01QIGl0ZW1zIGZvciBhIGNvbXBvdW5kIGZsYWcgdGhlIGNvbmNhdGVuYXRpb24gaXMgb25seSBkb25lCi13aGVuIGEgQ01QIGl0ZW0gbWF0Y2hlcy4KKwkJCQkJCQkqc3BlbGwtU1lMTEFCTEUqCitUaGUgU1lMTEFCTEUgaXRlbSBkZWZpbmVzIGNoYXJhY3RlcnMgb3IgY2hhcmFjdGVyIHNlcXVlbmNlcyB0aGF0IGFyZSB1c2VkIHRvCitjb3VudCB0aGUgbnVtYmVyIG9mIHN5bGxhYmxlcyBpbiBhIHdvcmQuICBFeGFtcGxlOgorCVNZTExBQkxFIGHhZelp7W/z9vV1+vz7eS9hYS9hdS9lYS9lZS9laS9pZS9vYS9vZS9vby9vdS91dS91aSB+CiAKLVdoZW4gdGhlcmUgYXJlIG5vIENNUCBpdGVtcyBmb3IgYSBjb21wb3VuZCBmbGFnLCB0aGVuIGFsbCB3b3JkcyB3aWxsIGJlCi1jb25jYXRlbmF0ZWQsIGFzIGlmIHRoZXJlIHdhcyBhbiBpdGVtOgotCUNNUCB7ZmxhZ30gLiAwIDAgLiAuCitCZWZvcmUgdGhlIGZpcnN0IHNsYXNoIGlzIHRoZSBzZXQgb2YgY2hhcmFjdGVycyB0aGF0IGFyZSBjb3VudGVkIGZvciBvbmUKK3N5bGxhYmxlLCBhbHNvIHdoZW4gcmVwZWF0ZWQgYW5kIG1peGVkLCB1bnRpbCB0aGUgbmV4dCBjaGFyYWN0ZXIgdGhhdCBpcyBub3QKK2luIHRoaXMgc2V0LiAgQWZ0ZXIgdGhlIHNsYXNoIGNvbWUgc2VxdWVuY2VzIG9mIGNoYXJhY3RlcnMgdGhhdCBhcmUgY291bnRlZAorZm9yIG9uZSBzeWxsYWJsZS4gIFRoZXNlIGFyZSBwcmVmZXJyZWQgb3ZlciB1c2luZyBjaGFyYWN0ZXJzIGZyb20gdGhlIHNldC4KK1dpdGggdGhlIGV4YW1wbGUgImlkZWVlbiIgaGFzIHRocmVlIHN5bGxhYmxlcywgY291bnRlZCBieSAiaSIsICJlZSIgYW5kICJlIi4KKworT25seSBjYXNlLWZvbGRlZCBsZXR0ZXJzIG5lZWQgdG8gYmUgaW5jbHVkZWQuCisKK0Fib3ZlIGFub3RoZXIgd2F5IHRvIHJlc3RyaWN0IGNvbXBvdW5kaW5nIHdhcyBtZW50aW9uZWQgYWJvdmU6IGFkZGluZyAibm9jb21wIgorYWZ0ZXIgYW4gYWZmaXggY2F1c2VzIGFsbCB3b3JkcyB0aGF0IGFyZSBtYWRlIHdpdGggdGhhdCBhZmZpeCBub3QgYmUgYmUgdXNlZAorZm9yIGNvbXBvdW5kaW5nLiB8c3BlbGwtYWZmaXgtbm9jb21wfAorCis+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PAorTk9URTogVGhlIGZvbGxvd2luZyBoYXMgbm90IGJlZW4gaW1wbGVtZW50ZWQgeWV0LCBiZWNhdXNlIHRoZXJlIGFyZSBubyB3b3JkCitsaXN0cyB0aGF0IHN1cHBvcnQgdGhpcy4KKz4gCQkJCQkJCSpzcGVsbC1DTVAqCis+IFNvbWV0aW1lcyBpdCBpcyBuZWNlc3NhcnkgdG8gY2hhbmdlIGEgd29yZCB3aGVuIGNvbmNhdGVuYXRpbmcgaXQgdG8gYW5vdGhlciwKKz4gYnkgcmVtb3ZpbmcgYSBmZXcgbGV0dGVycywgaW5zZXJ0aW5nIHNvbWV0aGluZyBvciBib3RoLiAgSXQgY2FuIGFsc28gYmUgdXNlZnVsCis+IHRvIHJlc3RyaWN0IGNvbmNhdGVuYXRpb24gdG8gd29yZHMgdGhhdCBtYXRjaCBhIHBhdHRlcm4uICBGb3IgdGhpcyBwdXJwb3NlIENNUAorPiBpdGVtcyBjYW4gYmUgdXNlZC4gIFRoZXkgbG9vayBsaWtlIHRoaXM6Cis+IAlDTVAge2ZsYWd9IHtmbGFnc30ge3N0cmlwfSB7c3RyaXAyfSB7YWRkfSB7Y29uZH0ge2NvbmQyfQorPiAKKz4gCXtmbGFnfQkJdGhlIGZsYWcsIGFzIHVzZWQgaW4gQ09NUE9VTkRGTEFHUyBmb3IgdGhlIGxlYWQgd29yZAorPiAJe2ZsYWdzfQkJYWNjZXB0ZWQgZmxhZ3MgZm9yIHRoZSBmb2xsb3dpbmcgd29yZCAoJy4nIHRvIGFjY2VwdAorPiAJCQlhbGwpCis+IAl7c3RyaXB9CQl0ZXh0IHRvIHJlbW92ZSBmcm9tIHRoZSBlbmQgb2YgdGhlIGxlYWQgd29yZCAoemVybworPiAJCQlmb3Igbm8gc3RyaXBwaW5nKQorPiAJe3N0cmlwMn0JdGV4dCB0byByZW1vdmUgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGZvbGxvd2luZyB3b3JkCis+IAkJCSh6ZXJvIGZvciBubyBzdHJpcHBpbmcpCis+IAl7YWRkfQkJdGV4dCB0byBpbnNlcnQgYmV0d2VlbiB0aGUgd29yZHMgKHplcm8gZm9yIG5vCis+IAkJCWFkZGl0aW9uKQorPiAJe2NvbmR9CQljb25kaXRpb24gdG8gbWF0Y2ggYXQgdGhlIGVuZCBvZiB0aGUgbGVhZCB3b3JkCis+IAl7Y29uZDJ9CQljb25kaXRpb24gdG8gbWF0Y2ggYXQgdGhlIHN0YXJ0IG9mIHRoZSBmb2xsb3dpbmcgd29yZAorPiAKKz4gVGhpcyBpcyB0aGUgc2FtZSBhcyB3aGF0IGlzIHVzZWQgZm9yIFNGWCBhbmQgUEZYIGl0ZW1zLCB3aXRoIHRoZSBleHRyYSB7ZmxhZ3N9Cis+IGFuZCB7Y29uZDJ9IGZpZWxkcy4gIEV4YW1wbGU6Cis+IAlDTVAgZiBtcnQgMCAtIC4gLiB+Cis+IAorPiBXaGVuIHVzZWQgd2l0aCB0aGUgZm9vZCBhbmQgZGlzaCB3b3JkIGxpc3QgYWJvdmUsIHRoaXMgbWVhbnMgdGhhdCBhIGRhc2ggaXMKKz4gaW5zZXJ0ZWQgYWZ0ZXIgZWFjaCBmb29kIGl0ZW0uICBUaHVzIHlvdSBnZXQgIm9uaW9uLXNvdXAiIGFuZAorPiAib25pb24tdG9tYXRvLXNhbGF0Ii4KKz4gCis+IFdoZW4gdGhlcmUgYXJlIENNUCBpdGVtcyBmb3IgYSBjb21wb3VuZCBmbGFnIHRoZSBjb25jYXRlbmF0aW9uIGlzIG9ubHkgZG9uZQorPiB3aGVuIGEgQ01QIGl0ZW0gbWF0Y2hlcy4KKz4gCis+IFdoZW4gdGhlcmUgYXJlIG5vIENNUCBpdGVtcyBmb3IgYSBjb21wb3VuZCBmbGFnLCB0aGVuIGFsbCB3b3JkcyB3aWxsIGJlCis+IGNvbmNhdGVuYXRlZCwgYXMgaWYgdGhlcmUgd2FzIGFuIGl0ZW06Cis+IAlDTVAge2ZsYWd9IC4gMCAwIC4gLgorPgorPj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pjw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDwKIAogCiBSRVBMQUNFTUVOVFMJCQkJCQkqc3BlbGwtYWZmaXgtUkVQKgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2Mvc3ludGF4LnR4dCBiL3J1bnRpbWUvZG9jL3N5bnRheC50eHQKaW5kZXggMDRlNzZkYi4uYTZhMDNmNSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2Mvc3ludGF4LnR4dAorKysgYi9ydW50aW1lL2RvYy9zeW50YXgudHh0CkBAIC0zNjU0LDkgKzM2NTQsOCBAQAogPAlDb21tZW50ICAgICAgICB4eHggdGVybT1ib2xkIGN0ZXJtZmc9NCBndWlmZz1CbHVlIH4KICAgICAgICAgICAgTGFzdCBzZXQgZnJvbSAvaG9tZS9tb29sL3ZpbS92aW03L3J1bnRpbWUvc3ludGF4L3N5bmNvbG9yLnZpbSB+CiAKLUZvciBkZXRhaWxzIGFib3V0IHdoZW4gdGhpcyBtZXNzYWdlIGlzIGdpdmVuIGFuZCB3aGVuIGl0J3MgdmFsaWQgc2VlCi18OnNldC12ZXJib3NlfC4gIFdoZW4gIjpoaSBjbGVhciIgaXMgdXNlZCB0aGVuIHRoZSBzY3JpcHQgd2hlcmUgdGhpcyBjb21tYW5kCi1pcyB1c2VkIHdpbGwgYmUgbWVudGlvbmVkIGZvciB0aGUgZGVmYXVsdCB2YWx1ZXMuCitXaGVuICI6aGkgY2xlYXIiIGlzIHVzZWQgdGhlbiB0aGUgc2NyaXB0IHdoZXJlIHRoaXMgY29tbWFuZCBpcyB1c2VkIHdpbGwgYmUKK21lbnRpb25lZCBmb3IgdGhlIGRlZmF1bHQgdmFsdWVzLiBTZWUgfDp2ZXJib3NlLWNtZHwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAKIAkJCQkJKmhpZ2hsaWdodC1hcmdzKiAqRTQxNiogKkU0MTcqICpFNDIzKgogVGhlcmUgYXJlIHRocmVlIHR5cGVzIG9mIHRlcm1pbmFscyBmb3IgaGlnaGxpZ2h0aW5nOgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdGFncyBiL3J1bnRpbWUvZG9jL3RhZ3MKaW5kZXggMTE4ZTMyNC4uZDk5NjUwOSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdGFncworKysgYi9ydW50aW1lL2RvYy90YWdzCkBAIC0zNjEsNiArMzYxLDcgQEAKICdtZmQnCW9wdGlvbnMudHh0CS8qJ21mZCcqCiAnbWgnCW9wdGlvbnMudHh0CS8qJ21oJyoKICdtaXMnCW9wdGlvbnMudHh0CS8qJ21pcycqCisnbWtzcGVsbG1lbScJb3B0aW9ucy50eHQJLyonbWtzcGVsbG1lbScqCiAnbWwnCW9wdGlvbnMudHh0CS8qJ21sJyoKICdtbHMnCW9wdGlvbnMudHh0CS8qJ21scycqCiAnbW0nCW9wdGlvbnMudHh0CS8qJ21tJyoKQEAgLTM4NSw2ICszODYsNyBAQAogJ21vdXNldGltZScJb3B0aW9ucy50eHQJLyonbW91c2V0aW1lJyoKICdtcCcJb3B0aW9ucy50eHQJLyonbXAnKgogJ21wcycJb3B0aW9ucy50eHQJLyonbXBzJyoKKydtc20nCW9wdGlvbnMudHh0CS8qJ21zbScqCiAnbXpxJwlvcHRpb25zLnR4dAkvKidtenEnKgogJ216cXVhbnR1bScJb3B0aW9ucy50eHQJLyonbXpxdWFudHVtJyoKICduZicJb3B0aW9ucy50eHQJLyonbmYnKgpAQCAtMjU4OSw2ICsyNTkxLDcgQEAKIDp2ZQl2YXJpb3VzLnR4dAkvKjp2ZSoKIDp2ZXJiCXZhcmlvdXMudHh0CS8qOnZlcmIqCiA6dmVyYm9zZQl2YXJpb3VzLnR4dAkvKjp2ZXJib3NlKgorOnZlcmJvc2UtY21kCXZhcmlvdXMudHh0CS8qOnZlcmJvc2UtY21kKgogOnZlcnNpb24JdmFyaW91cy50eHQJLyo6dmVyc2lvbioKIDp2ZXJ0CXdpbmRvd3MudHh0CS8qOnZlcnQqCiA6dmVydGljYWwJd2luZG93cy50eHQJLyo6dmVydGljYWwqCkBAIC0zNzM1LDYgKzM3MzgsNyBAQAogRTc1MwlzcGVsbC50eHQJLypFNzUzKgogRTc1NAlzcGVsbC50eHQJLypFNzU0KgogRTc1NglzcGVsbC50eHQJLypFNzU2KgorRTc1NwlvcHRpb25zLnR4dAkvKkU3NTcqCiBFNzU4CXNwZWxsLnR4dAkvKkU3NTgqCiBFNzU5CXNwZWxsLnR4dAkvKkU3NTkqCiBFNzYJcGF0dGVybi50eHQJLypFNzYqCkBAIC0zNzQ3LDcgKzM3NTEsMTEgQEAKIEU3NjYJZXZhbC50eHQJLypFNzY2KgogRTc2NwlldmFsLnR4dAkvKkU3NjcqCiBFNzY4CW1lc3NhZ2UudHh0CS8qRTc2OCoKK0U3NjkJcGF0dGVybi50eHQJLypFNzY5KgogRTc3CW1lc3NhZ2UudHh0CS8qRTc3KgorRTc3MAlzcGVsbC50eHQJLypFNzcwKgorRTc3MQlzcGVsbC50eHQJLypFNzcxKgorRTc3MglzcGVsbC50eHQJLypFNzcyKgogRTc4CW1vdGlvbi50eHQJLypFNzgqCiBFNzkJbWVzc2FnZS50eHQJLypFNzkqCiBFODAJbWVzc2FnZS50eHQJLypFODAqCkBAIC02Mzg1LDEyICs2MzkzLDE2IEBACiBzcGVsbC1DTVAJc3BlbGwudHh0CS8qc3BlbGwtQ01QKgogc3BlbGwtQ09NUE9VTkRGTEFHCXNwZWxsLnR4dAkvKnNwZWxsLUNPTVBPVU5ERkxBRyoKIHNwZWxsLUNPTVBPVU5ERkxBR1MJc3BlbGwudHh0CS8qc3BlbGwtQ09NUE9VTkRGTEFHUyoKK3NwZWxsLUNPTVBPVU5ETUFYCXNwZWxsLnR4dAkvKnNwZWxsLUNPTVBPVU5ETUFYKgogc3BlbGwtQ09NUE9VTkRNSU4Jc3BlbGwudHh0CS8qc3BlbGwtQ09NUE9VTkRNSU4qCitzcGVsbC1DT01QT1VORFNZTE1BWAlzcGVsbC50eHQJLypzcGVsbC1DT01QT1VORFNZTE1BWCoKK3NwZWxsLVNZTExBQkxFCXNwZWxsLnR4dAkvKnNwZWxsLVNZTExBQkxFKgogc3BlbGwtYWZmaXgtQkFECXNwZWxsLnR4dAkvKnNwZWxsLWFmZml4LUJBRCoKIHNwZWxsLWFmZml4LUZPTAlzcGVsbC50eHQJLypzcGVsbC1hZmZpeC1GT0wqCiBzcGVsbC1hZmZpeC1LRVAJc3BlbGwudHh0CS8qc3BlbGwtYWZmaXgtS0VQKgogc3BlbGwtYWZmaXgtTE9XCXNwZWxsLnR4dAkvKnNwZWxsLWFmZml4LUxPVyoKIHNwZWxsLWFmZml4LU1BUAlzcGVsbC50eHQJLypzcGVsbC1hZmZpeC1NQVAqCitzcGVsbC1hZmZpeC1ORUVEQUZGSVgJc3BlbGwudHh0CS8qc3BlbGwtYWZmaXgtTkVFREFGRklYKgogc3BlbGwtYWZmaXgtUEZYCXNwZWxsLnR4dAkvKnNwZWxsLWFmZml4LVBGWCoKIHNwZWxsLWFmZml4LVBGWFBPU1RQT05FCXNwZWxsLnR4dAkvKnNwZWxsLWFmZml4LVBGWFBPU1RQT05FKgogc3BlbGwtYWZmaXgtUkFSCXNwZWxsLnR4dAkvKnNwZWxsLWFmZml4LVJBUioKQEAgLTY0MDQsNiArNjQxNiw4IEBACiBzcGVsbC1hZmZpeC1jaGFycwlzcGVsbC50eHQJLypzcGVsbC1hZmZpeC1jaGFycyoKIHNwZWxsLWFmZml4LWNvbXBvdW5kCXNwZWxsLnR4dAkvKnNwZWxsLWFmZml4LWNvbXBvdW5kKgogc3BlbGwtYWZmaXgtbWJ5dGUJc3BlbGwudHh0CS8qc3BlbGwtYWZmaXgtbWJ5dGUqCitzcGVsbC1hZmZpeC1ub2NvbXAJc3BlbGwudHh0CS8qc3BlbGwtYWZmaXgtbm9jb21wKgorc3BlbGwtYWZmaXgtcmFyZQlzcGVsbC50eHQJLypzcGVsbC1hZmZpeC1yYXJlKgogc3BlbGwtYWZmaXgtdmltCXNwZWxsLnR4dAkvKnNwZWxsLWFmZml4LXZpbSoKIHNwZWxsLWRpYy1mb3JtYXQJc3BlbGwudHh0CS8qc3BlbGwtZGljLWZvcm1hdCoKIHNwZWxsLWRvdWJsZS1zY29yaW5nCXNwZWxsLnR4dAkvKnNwZWxsLWRvdWJsZS1zY29yaW5nKgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdG9kby50eHQgYi9ydW50aW1lL2RvYy90b2RvLnR4dAppbmRleCAyNDM0OTIzLi4yN2RkOWE3IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy90b2RvLnR4dAorKysgYi9ydW50aW1lL2RvYy90b2RvLnR4dApAQCAtMSw0ICsxLDQgQEAKLSp0b2RvLnR4dCogICAgICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNSBBdWcgMTYKKyp0b2RvLnR4dCogICAgICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNSBBdWcgMTkKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwJICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtMzEsMTIgKzMxLDE5IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLSBLbm93biBidWdzIGFuZCBjdXJyZW50IHdvcmsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogU3BlbGxpbmc6Ci0tIFByZWZlciBTcGVsbEJhZCBvdmVyIFNwZWxsQ2FwIGhpZ2hsaWdodGluZy4KLS0gQWRkIGxpbWl0IGZvciBudW1iZXIgb2Ygc3VnZ2VzdGlvbnMgdG8gJ3NwZWxsc3VnZ2VzdCc/Ci0tIENUUkwtWCBzIGluIEluc2VydCBtb2RlOiBtb3ZlIGN1cnNvciBiYWNrIHRvIGFmdGVyIGJhZGx5IHNwZWxsZWQgd29yZD8KLS0gSW1wbGVtZW50IG11bHRpcGxlIGZsYWdzIGZvciBjb21wb3VuZCB3b3JkcyBhbmQgQ01QIGl0ZW0uCistIFRlc3QgY291bnRpbmcgc3lsbGFibGVzIGFuZCBjb21wYXJpbmcgYWdhaW5zdCB0aGUgbWF4aW11bS4KKy0gVGVzdCBub2NvbXAgZmxhZyBmb3IgYWZmaXhlcy4KKworLSBXaGVuIGxvb2tpbmcgZm9yIGZvbGxvd2luZyBjb21wb3VuZCB3b3JkLCBhbHNvIGRvIHBvc3Rwb25lZCBwcmVmaXhlcy4KKworLSBJbXBsZW1lbnQgbXVsdGlwbGUgZmxhZ3MgZm9yIGNvbXBvdW5kIHdvcmRzIGFuZCBDTVAgaXRlbT8KICAgQXdhaXQgY29tbWVudHMgZnJvbSBvdGhlciBzcGVsbCBjaGVja2luZyBhdXRob3JzLgogCitIZWxwIHRhZ3M6IHNvbWV0aGluZyB0byBtYWtlIGl0IGVhc3kgdG8gZmluZCBoZWxwIGFib3V0IGEgY2VydGFpbiBmaWxldHlwZT8KKyAgICB1c2UgZnQtYy1zeW50YXggZnQtYy1mdHBsdWdpbiBldGMuPworCitNYWMgR1VJOiBwYXN0aW5nIGxpbmVzIHJlc3VsdHMgaW4gXk0gaW5zdGVhZCBvZiBsaW5lIGJyZWFrcy4gKEJlbmphbWluIEVzaGFtKQorCiBNYWMgdW5pY29kZSBwYXRjaCAoRGEgV29vbiBKdW5nKToKIC0gc2VsZWN0aW5nIHByb3BvcnRpb25hbCBmb250IGJyZWFrcyBkaXNwbGF5CiAtIFVURi04IHRleHQgY2F1c2VzIGRpc3BsYXkgcHJvYmxlbXMuICBGb250IHJlcGxhY2VtZW50IGNhdXNlcyB0aGlzLgpAQCAtNDQsNyArNTEsNyBAQAogV2luMzI6IFVzZSB0aGUgZnJlZSBkb3dubG9hZGFibGUgY29tcGlsZXIgNy4xLiAgRmlndXJlIG91dCBob3cgdG8gZG8gZGVidWdnaW5nCiAod2l0aCBBZ2lkZT8pIGFuZCBkZXNjcmliZSBpdC4gKEdlb3JnZSBSZWlsbHkpCiAKLWF1dG9sb2FkOgorQXV0b2xvYWQ6CiAtIEFkZCBhIFZpbSBzY3JpcHQgaW4gJFZJTVJVTlRJTUUvdG9vbHMgdGhhdCB0YWtlcyBhIGZpbGUgd2l0aCBhIGxpc3Qgb2YKICAgc2NyaXB0IG5hbWVzIGFuZCBhIGhlbHAgZmlsZSBhbmQgcHJvZHVjZXMgYSBzY3JpcHQgdGhhdCBjYW4gYmUgc291cmNlZCB0bwogICBpbnN0YWxsIHRoZSBzY3JpcHRzIGluIHRoZSB1c2VyJ3MgZGlyZWN0b3JpZXMuCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy92YXJpb3VzLnR4dCBiL3J1bnRpbWUvZG9jL3ZhcmlvdXMudHh0CmluZGV4IGJjYjg4ZWIuLmQwZWU1OGQgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3ZhcmlvdXMudHh0CisrKyBiL3J1bnRpbWUvZG9jL3ZhcmlvdXMudHh0CkBAIC00ODUsNiArNDg1LDE0IEBACiAJCQlGb3IgbG9nZ2luZyB2ZXJib3NlIG1lc3NhZ2VzIGluIGEgZmlsZSB1c2UgdGhlCiAJCQkndmVyYm9zZWZpbGUnIG9wdGlvbi4KIAorCQkJCQkJCSo6dmVyYm9zZS1jbWQqCitXaGVuICd2ZXJib3NlJyBpcyBub24temVybywgbGlzdGluZyB0aGUgdmFsdWUgb2YgYSBWaW0gb3B0aW9uIG9yIGEga2V5IG1hcCBvcgorYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb3IgYSBjb21tYW5kIG9yIGEgaGlnaGxpZ2h0IGdyb3VwIHdpbGwgYWxzbyBkaXNwbGF5Cit3aGVyZSBpdCB3YXMgbGFzdCBkZWZpbmVkLiAgSWYgaXQgd2FzIGRlZmluZWQgbWFudWFsbHkgdGhlbiB0aGVyZSB3aWxsIGJlIG5vCisiTGFzdCBzZXQiIG1lc3NhZ2UuICBXaGVuIGl0IHdhcyBkZWZpbmVkIHdoaWxlIGV4ZWN1dGluZyBhIGZ1bmN0aW9uLCB1c2VyCitjb21tYW5kIG9yIGF1dG9jb21tYW5kLCB0aGUgc2NyaXB0IGluIHdoaWNoIGl0IHdhcyBkZWZpbmVkIGlzIHJlcG9ydGVkLgore25vdCBhdmFpbGFibGUgd2hlbiBjb21waWxlZCB3aXRob3V0IHRoZSArZXZhbCBmZWF0dXJlfQorCiAJCQkJCQkJKksqCiBLCQkJUnVuIGEgcHJvZ3JhbSB0byBsb29rdXAgdGhlIGtleXdvcmQgdW5kZXIgdGhlCiAJCQljdXJzb3IuICBUaGUgbmFtZSBvZiB0aGUgcHJvZ3JhbSBpcyBnaXZlbiB3aXRoIHRoZQpkaWZmIC0tZ2l0IGEvcnVudGltZS9maWxldHlwZS52aW0gYi9ydW50aW1lL2ZpbGV0eXBlLnZpbQppbmRleCA5NmMwNmU0Li41MTcyMzIyIDEwMDY0NAotLS0gYS9ydW50aW1lL2ZpbGV0eXBlLnZpbQorKysgYi9ydW50aW1lL2ZpbGV0eXBlLnZpbQpAQCAtMSw3ICsxLDcgQEAKICIgVmltIHN1cHBvcnQgZmlsZSB0byBkZXRlY3QgZmlsZSB0eXBlcwogIgogIiBNYWludGFpbmVyOglCcmFtIE1vb2xlbmFhciA8QnJhbUB2aW0ub3JnPgotIiBMYXN0IENoYW5nZToJMjAwNSBBdWcgMTYKKyIgTGFzdCBDaGFuZ2U6CTIwMDUgQXVnIDE3CiAKICIgTGlzdGVuIHZlcnkgY2FyZWZ1bGx5LCBJIHdpbGwgc2F5IHRoaXMgb25seSBvbmNlCiBpZiBleGlzdHMoImRpZF9sb2FkX2ZpbGV0eXBlcyIpCkBAIC04MjMsNyArODIzLDcgQEAKIGF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLm1ncAkJCXNldGYgbWdwCiAKICIgTWFpbCAoZm9yIEVsbSwgdHJuLCBtdXR0LCBybiwgc2xybikKLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCBzbmQuXGRcKywubGV0dGVyLC5sZXR0ZXIuXGRcKywuZm9sbG93dXAsLmFydGljbGUsLmFydGljbGUuXGRcKyxwaWNvLlxkXCssbXV0dC0qLVx3XCssbXV0dFx3XHs2XH0sYWVcZFwrLnR4dCwvdG1wL1NMUk5bMC05QS1aLl1cKywqLmVtbCBzZXRmIG1haWwKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCBzbmQuXGRcKywubGV0dGVyLC5sZXR0ZXIuXGRcKywuZm9sbG93dXAsLmFydGljbGUsLmFydGljbGUuXGRcKyxwaWNvLlxkXCssbXV0dHtuZyx9LSotXHdcKyxtdXR0XHdcezZcfSxhZVxkXCsudHh0LC90bXAvU0xSTlswLTlBLVouXVwrLCouZW1sIHNldGYgbWFpbAogCiAiIE1haWxjYXAgY29uZmlndXJhdGlvbiBmaWxlCiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgLm1haWxjYXAsbWFpbGNhcAkJc2V0ZiBtYWlsY2FwCkBAIC05NTMsOCArOTUzLDggQEAKIGF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLm11c2gJCQlzZXRmIG11c2gKIAogIiBNdXR0IHNldHVwIGZpbGUKLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCBNdXR0cmMJCQlzZXRmIG11dHRyYwotYXUgQnVmTmV3RmlsZSxCdWZSZWFkIC5tdXR0cmMqLCovLm11dHQvbXV0dHJjKgljYWxsIHM6U3RhclNldGYoJ211dHRyYycpCithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgTXV0dHtuZyx9cmMJCQlzZXRmIG11dHRyYworYXUgQnVmTmV3RmlsZSxCdWZSZWFkIC5tdXR0e25nLH1yYyosKi8ubXV0dHtuZyx9L211dHR7bmcsfXJjKgljYWxsIHM6U3RhclNldGYoJ211dHRyYycpCiAKICIgTmFubwogYXUgQnVmTmV3RmlsZSxCdWZSZWFkIC9ldGMvbmFub3JjLC5uYW5vcmMJc2V0ZiBuYW5vcmMKQEAgLTE4MzIsNyArMTgzMiwxMiBAQAogCiBmdW4hIHM6RlR5KCkKICAgbGV0IG4gPSAxCi0gIHdoaWxlIG4gPCAxMCAmJiBuIDwgbGluZSgiJCIpCisgIHdoaWxlIG4gPCAxMDAgJiYgbiA8IGxpbmUoIiQiKQorICAgIGxldCBsaW5lID0gZ2V0bGluZShuKQorICAgIGlmIGxpbmUgPX4gJ15ccyolJworICAgICAgc2V0ZiB5YWNjCisgICAgICByZXR1cm4KKyAgICBlbmRpZgogICAgIGlmIGdldGxpbmUobikgPX4gJ15ccypcKCNcfGNsYXNzXD5cKScgJiYgZ2V0bGluZShuKSAhfiAnXlxzKiNccyppbmNsdWRlJwogICAgICAgc2V0ZiByYWNjCiAgICAgICByZXR1cm4KQEAgLTE5MjQsNyArMTkyOSw3IEBACiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgW3JSXWFrZWZpbGUqCQljYWxsIHM6U3RhclNldGYoJ3J1YnknKQogCiAiIE11dHQgc2V0dXAgZmlsZQotYXUgQnVmTmV3RmlsZSxCdWZSZWFkIG11dHRyYyosTXV0dHJjKgkJY2FsbCBzOlN0YXJTZXRmKCdtdXR0cmMnKQorYXUgQnVmTmV3RmlsZSxCdWZSZWFkIG11dHR7bmcsfXJjKixNdXR0e25nLH1yYyoJCWNhbGwgczpTdGFyU2V0ZignbXV0dHJjJykKIAogIiBOcm9mZiBtYWNyb3MKIGF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCB0bWFjLioJCQljYWxsIHM6U3RhclNldGYoJ25yb2ZmJykKZGlmZiAtLWdpdCBhL3J1bnRpbWUvcGx1Z2luL05ldHJ3UGx1Z2luLnZpbSBiL3J1bnRpbWUvcGx1Z2luL05ldHJ3UGx1Z2luLnZpbQppbmRleCBiMWY1YWJkLi5jYjM5Yjg0IDEwMDY0NAotLS0gYS9ydW50aW1lL3BsdWdpbi9OZXRyd1BsdWdpbi52aW0KKysrIGIvcnVudGltZS9wbHVnaW4vTmV0cndQbHVnaW4udmltCkBAIC0xLDggKzEsOCBAQAogIiBuZXRydy52aW06IEhhbmRsZXMgZmlsZSB0cmFuc2ZlciBhbmQgcmVtb3RlIGRpcmVjdG9yeSBsaXN0aW5nIGFjcm9zcyBhIG5ldHdvcmsKICIgICAgICAgICAgICBQTFVHSU4gUE9SVElPTgotIiBMYXN0IENoYW5nZToJQXVnIDE2LCAyMDA1CisiIExhc3QgQ2hhbmdlOglBdWcgMTcsIDIwMDUKICIgTWFpbnRhaW5lcjoJQ2hhcmxlcyBFIENhbXBiZWxsLCBKciA8ZHJjaGlwTk9TUEFNIGF0IGNhbXBiZWxsZmFtaWx5IGRvdCBiaXo+Ci0iIFZlcnNpb246CTYzCisiIFZlcnNpb246CTY1YQlBU1RSTy1PTkxZCiAiIExpY2Vuc2U6CVZpbSBMaWNlbnNlICAoc2VlIHZpbSdzIDpoZWxwIGxpY2Vuc2UpCiAiIEdldExhdGVzdFZpbVNjcmlwdHM6IDEwNzUgMSA6QXV0b0luc3RhbGw6IG5ldHJ3LnZpbQogIiBDb3B5cmlnaHQ6ICAgIENvcHlyaWdodCAoQykgMTk5OS0yMDA1IENoYXJsZXMgRS4gQ2FtcGJlbGwsIEpyLiB7e3sxCkBAIC0yOCw3ICsyOCw3IEBACiAgZWNob2VyciAiKioqbmV0cncqKiogZG9lc24ndCBzdXBwb3J0IFZpbSB2ZXJzaW9uICIudjp2ZXJzaW9uCiAgZmluaXNoCiBlbmRpZgotbGV0IGc6bG9hZGVkX25ldHJ3ICA9ICJ2NjMiCitsZXQgZzpsb2FkZWRfbmV0cncgID0gInY2NWEiCiBpZiB2OnZlcnNpb24gPCA3MDAKICBsZXQgbG9hZGVkX2V4cGxvcmVyID0gMQogZW5kaWYKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3BlbGwvZW4ubGF0aW4xLnNwbCBiL3J1bnRpbWUvc3BlbGwvZW4ubGF0aW4xLnNwbAppbmRleCA5NWI1MzYzLi42MDM1MDQyIDEwMDY0NAotLS0gYS9ydW50aW1lL3NwZWxsL2VuLmxhdGluMS5zcGwKKysrIGIvcnVudGltZS9zcGVsbC9lbi5sYXRpbjEuc3BsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3ludGF4L2JpYi52aW0gYi9ydW50aW1lL3N5bnRheC9iaWIudmltCmluZGV4IGE5OGYyODEuLjBjZDUzNGQgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3ludGF4L2JpYi52aW0KKysrIGIvcnVudGltZS9zeW50YXgvYmliLnZpbQpAQCAtMiw4ICsyLDcgQEAKICIgTGFuZ3VhZ2U6CUJpYlRlWCAoYmlibGlvZ3JhcGhpYyBkYXRhYmFzZSBmb3JtYXQgZm9yIChMYSlUZVgpCiAiIE1haW50YWluZXI6CUJlcm5kIEZlaWdlIDxCZXJuZC5GZWlnZUBnbXgubmV0PgogIiBGaWxlbmFtZXM6CSouYmliCi0iIExhc3QgQ2hhbmdlOglBcHIgMjYsIDIwMDEKLSIgVVJMOgkJaHR0cDovL2hvbWUudC1vbmxpbmUuZGUvaG9tZS9CZXJuZC5GZWlnZS9iaWIudmltCisiIExhc3QgQ2hhbmdlOglBdWcgMDIsIDIwMDUKIAogIiBUaGFua3MgdG8gdGhvc2Ugd2hvIHBvaW50ZWQgb3V0IHByb2JsZW1zIHdpdGggdGhpcyBmaWxlIG9yIHN1cHBsaWVkIGZpeGVzIQogCkBAIC00Nyw3ICs0Niw3IEBACiBzeW4gbWF0Y2ggYmliVW5lc2NhcGVkU3BlY2lhbCBjb250YWluZWQgL1teXFxdWyUmXS9ocz1zKzEKIHN5biBtYXRjaCBiaWJLZXkgY29udGFpbmVkIC9ccypbXiBcdH09Il1cKywvaHM9cyxoZT1lLTEgbmV4dGdyb3VwPWJpYkZpZWxkCiBzeW4gbWF0Y2ggYmliVmFyaWFibGUgY29udGFpbmVkIC9bXnt9LCIgXHQ9XS8KLXN5biByZWdpb24gYmliQ29tbWVudCBzdGFydD0vXi8gZW5kPS9eXHMqQC9tZT1lLTEgY29udGFpbnM9QGJpYkNvbW1lbnRDb250ZW50cyBuZXh0Z3JvdXA9YmliRW50cnkKK3N5biByZWdpb24gYmliQ29tbWVudCBzdGFydD0vLi8gZW5kPS9eXHMqQC9tZT1lLTEgY29udGFpbnM9QGJpYkNvbW1lbnRDb250ZW50cyBuZXh0Z3JvdXA9YmliRW50cnkKIHN5biByZWdpb24gYmliUXVvdGUgY29udGFpbmVkIHN0YXJ0PS8iLyBlbmQ9LyIvIHNraXA9L1woXFwiXCkvIGNvbnRhaW5zPUBiaWJWYXJDb250ZW50cwogc3luIHJlZ2lvbiBiaWJCcmFjZSBjb250YWluZWQgc3RhcnQ9L3svIGVuZD0vfS8gc2tpcD0vXChcXFt7fV1cKS8gY29udGFpbnM9QGJpYlZhckNvbnRlbnRzCiBzeW4gcmVnaW9uIGJpYlBhcmVuIGNvbnRhaW5lZCBzdGFydD0vKC8gZW5kPS8pLyBza2lwPS9cKFxcWygpXVwpLyBjb250YWlucz1AYmliVmFyQ29udGVudHMKQEAgLTYwLDYgKzU5LDcgQEAKIGVsc2UKICAgc3luIHJlZ2lvbiBiaWJFbnRyeSBzdGFydD0vQFxTXCtbeyhdLyBlbmQ9L15ccypbfSldLyB0cmFuc3BhcmVudCBmb2xkIGNvbnRhaW5zPWJpYlR5cGUsYmliRW50cnlEYXRhIG5leHRncm91cD1iaWJDb21tZW50CiBlbmRpZgorc3luIHJlZ2lvbiBiaWJDb21tZW50MiBzdGFydD0vQENvbW1lbnRbeyhdLyBlbmQ9L15ccypAL21lPWUtMSBjb250YWlucz1AYmliQ29tbWVudENvbnRlbnRzIG5leHRncm91cD1iaWJFbnRyeQogCiAiIFN5bmNocm9uaXphdGlvbgogIiA9PT09PT09PT09PT09PT0KQEAgLTg2LDYgKzg2LDcgQEAKICAgSGlMaW5rIGJpYlZhcmlhYmxlCUNvbnN0YW50CiAgIEhpTGluayBiaWJVbmVzY2FwZWRTcGVjaWFsCUVycm9yCiAgIEhpTGluayBiaWJDb21tZW50CUNvbW1lbnQKKyAgSGlMaW5rIGJpYkNvbW1lbnQyCUNvbW1lbnQKICAgZGVsY29tbWFuZCBIaUxpbmsKIGVuZGlmCiAKZGlmZiAtLWdpdCBhL3NyYy9lZGl0LmMgYi9zcmMvZWRpdC5jCmluZGV4IGZlMTMwZTYuLjk2ZWJlNzEgMTAwNjQ0Ci0tLSBhL3NyYy9lZGl0LmMKKysrIGIvc3JjL2VkaXQuYwpAQCAtMTM2LDYgKzEzNiw3IEBACiBzdGF0aWMgdm9pZCBzdGFydF9hcnJvdyBfX0FSR1MoKHBvc19UICplbmRfaW5zZXJ0X3BvcykpOwogI2lmZGVmIEZFQVRfU1lOX0hMCiBzdGF0aWMgdm9pZCBjaGVja19zcGVsbF9yZWRyYXcgX19BUkdTKCh2b2lkKSk7CitzdGF0aWMgdm9pZCBzcGVsbF9iYWNrX3RvX2JhZHdvcmQgX19BUkdTKCh2b2lkKSk7CiAjZW5kaWYKIHN0YXRpYyB2b2lkIHN0b3BfaW5zZXJ0IF9fQVJHUygocG9zX1QgKmVuZF9pbnNlcnRfcG9zLCBpbnQgZXNjKSk7CiBzdGF0aWMgaW50ICBlY2hlY2tfYWJiciBfX0FSR1MoKGludCkpOwpAQCAtMjM2NSw2ICsyMzY2LDkgQEAKIAkgICAgY2FzZSAncyc6CiAJICAgIGNhc2UgQ3RybF9TOgogCQljdHJsX3hfbW9kZSA9IENUUkxfWF9TUEVMTDsKKyNpZmRlZiBGRUFUX1NZTl9ITAorCQlzcGVsbF9iYWNrX3RvX2JhZHdvcmQoKTsKKyNlbmRpZgogCQlicmVhazsKIAkgICAgY2FzZSBDdHJsX1JTQjoKIAkJY3RybF94X21vZGUgPSBDVFJMX1hfVEFHUzsKQEAgLTM1MzMsNyArMzUzNyw3IEBACiAJewogI2lmZGVmIEZFQVRfU1lOX0hMCiAJICAgIGNvbXBsX2NvbCA9IHNwZWxsX3dvcmRfc3RhcnQoc3RhcnRjb2wpOwotCSAgICBpZiAoY29tcGxfY29sID09IHN0YXJ0Y29sKQorCSAgICBpZiAoY29tcGxfY29sID09IChjb2xucl9UKXN0YXJ0Y29sKQogCQlyZXR1cm4gRkFJTDsKIAkgICAgY29tcGxfbGVuZ3RoID0gKGludCljdXJzX2NvbCAtIGNvbXBsX2NvbDsKIAkgICAgY29tcGxfcGF0dGVybiA9IHZpbV9zdHJuc2F2ZShsaW5lICsgY29tcGxfY29sLCBjb21wbF9sZW5ndGgpOwpAQCAtNDc1OSw3ICs0NzYzLDcgQEAKIAogLyoKICAqIHN0YXJ0X2Fycm93KCkgaXMgY2FsbGVkIHdoZW4gYW4gYXJyb3cga2V5IGlzIHVzZWQgaW4gaW5zZXJ0IG1vZGUuCi0gKiBJdCByZXNlbWJsZXMgaGl0dGluZyB0aGUgPEVTQz4ga2V5LgorICogRm9yIHVuZG8vcmVkbyBpdCByZXNlbWJsZXMgaGl0dGluZyB0aGUgPEVTQz4ga2V5LgogICovCiAgICAgc3RhdGljIHZvaWQKIHN0YXJ0X2Fycm93KGVuZF9pbnNlcnRfcG9zKQpAQCAtNDc5Miw2ICs0Nzk2LDIwIEBACiAJcmVkcmF3V2lubGluZShsbnVtLCBGQUxTRSk7CiAgICAgfQogfQorCisvKgorICogQ2FsbGVkIHdoZW4gc3RhcnRpbmcgQ1RSTF9YX1NQRUxMIG1vZGU6IE1vdmUgYmFja3dhcmRzIHRvIGEgcHJldmlvdXMgYmFkbHkKKyAqIHNwZWxsZWQgd29yZCwgaWYgdGhlcmUgaXMgb25lLgorICovCisgICAgc3RhdGljIHZvaWQKK3NwZWxsX2JhY2tfdG9fYmFkd29yZCgpCit7CisgICAgcG9zX1QJdHBvcyA9IGN1cndpbi0+d19jdXJzb3I7CisKKyAgICBzcGVsbF9tb3ZlX3RvKEJBQ0tXQVJELCBUUlVFLCBUUlVFKTsKKyAgICBpZiAoY3Vyd2luLT53X2N1cnNvci5jb2wgIT0gdHBvcy5jb2wpCisJc3RhcnRfYXJyb3coJnRwb3MpOworfQogI2VuZGlmCiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvZXhfY21kcy5jIGIvc3JjL2V4X2NtZHMuYwppbmRleCA1MjEwNGY0Li41MjliYWY3IDEwMDY0NAotLS0gYS9zcmMvZXhfY21kcy5jCisrKyBiL3NyYy9leF9jbWRzLmMKQEAgLTMwLDcgKzMwLDYgQEAKICNpZmRlZiBGRUFUX0FVVE9DTUQKIHN0YXRpYyB2b2lkIGRlbGJ1Zl9tc2cgX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKICNlbmRpZgotc3RhdGljIGludCBkb19zdWJfbXNnIF9fQVJHUygoaW50IGNvdW50X29ubHkpKTsKIHN0YXRpYyBpbnQKICNpZmRlZiBfX0JPUkxBTkRDX18KICAgICBfUlRMRU5UUllGCkBAIC0zOTQwLDEzICszOTM5LDYgQEAKIHN0YXRpYyBjaGFyX3UJKm9sZF9zdWIgPSBOVUxMOwkvKiBwcmV2aW91cyBzdWJzdGl0dXRlIHBhdHRlcm4gKi8KIHN0YXRpYyBpbnQJZ2xvYmFsX25lZWRfYmVnaW5saW5lOwkvKiBjYWxsIGJlZ2lubGluZSgpIGFmdGVyICI6ZyIgKi8KIAotLyoKLSAqIFdoZW4gIjpnbG9iYWwiIGlzIHVzZWQgdG8gbnVtYmVyIG9mIHN1YnN0aXR1dGlvbnMgYW5kIGNoYW5nZWQgbGluZXMgaXMKLSAqIGFjY3VtdWxhdGVkIHVudGlsIGl0J3MgZmluaXNoZWQuCi0gKi8KLXN0YXRpYyBsb25nCXN1Yl9uc3ViczsJLyogdG90YWwgbnVtYmVyIG9mIHN1YnN0aXR1dGlvbnMgKi8KLXN0YXRpYyBsaW5lbnJfVAlzdWJfbmxpbmVzOwkvKiB0b3RhbCBudW1iZXIgb2YgbGluZXMgY2hhbmdlZCAqLwotCiAvKiBkb19zdWIoKQogICoKICAqIFBlcmZvcm0gYSBzdWJzdGl0dXRpb24gZnJvbSBsaW5lIGVhcC0+bGluZTEgdG8gbGluZSBlYXAtPmxpbmUyIHVzaW5nIHRoZQpAQCAtNDgyOSw3ICs0ODIxLDcgQEAKICAqIENhbiBhbHNvIGJlIHVzZWQgYWZ0ZXIgYSAiOmdsb2JhbCIgY29tbWFuZC4KICAqIFJldHVybiBUUlVFIGlmIGEgbWVzc2FnZSB3YXMgZ2l2ZW4uCiAgKi8KLSAgICBzdGF0aWMgaW50CisgICAgaW50CiBkb19zdWJfbXNnKGNvdW50X29ubHkpCiAgICAgaW50CSAgICBjb3VudF9vbmx5OwkJLyogdXNlZCAnbicgZmxhZyBmb3IgIjpzIiAqLwogewpkaWZmIC0tZ2l0IGEvc3JjL2dsb2JhbHMuaCBiL3NyYy9nbG9iYWxzLmgKaW5kZXggNjBlZmYxZi4uNmJmYzEzZCAxMDA2NDQKLS0tIGEvc3JjL2dsb2JhbHMuaAorKysgYi9zcmMvZ2xvYmFscy5oCkBAIC0xMDU3LDYgKzEwNTcsMTQgQEAKIAogRVhURVJOIGNoYXJfdSBub19saW5lc19tc2dbXQlJTklUKD0gTl8oIi0tTm8gbGluZXMgaW4gYnVmZmVyLS0iKSk7CiAKKy8qCisgKiBXaGVuICI6Z2xvYmFsIiBpcyB1c2VkIHRvIG51bWJlciBvZiBzdWJzdGl0dXRpb25zIGFuZCBjaGFuZ2VkIGxpbmVzIGlzCisgKiBhY2N1bXVsYXRlZCB1bnRpbCBpdCdzIGZpbmlzaGVkLgorICogQWxzbyB1c2VkIGZvciAiOnNwZWxscmVwYWxsIi4KKyAqLworRVhURVJOIGxvbmcJc3ViX25zdWJzOwkvKiB0b3RhbCBudW1iZXIgb2Ygc3Vic3RpdHV0aW9ucyAqLworRVhURVJOIGxpbmVucl9UCXN1Yl9ubGluZXM7CS8qIHRvdGFsIG51bWJlciBvZiBsaW5lcyBjaGFuZ2VkICovCisKIC8qIHRhYmxlIHRvIHN0b3JlIHBhcnNlZCAnd2lsZG1vZGUnICovCiBFWFRFUk4gY2hhcl91CXdpbV9mbGFnc1s0XTsKIApkaWZmIC0tZ2l0IGEvc3JjL29wdGlvbi5jIGIvc3JjL29wdGlvbi5jCmluZGV4IDY3YmNmNWUuLjliMGU2MzYgMTAwNjQ0Ci0tLSBhL3NyYy9vcHRpb24uYworKysgYi9zcmMvb3B0aW9uLmMKQEAgLTE1MDYsNiArMTUwNiwxNSBAQAogICAgIHsibWVzZyIsCSAgICBOVUxMLCAgIFBfQk9PTHxQX1ZJX0RFRiwKIAkJCSAgICAoY2hhcl91ICopTlVMTCwgUFZfTk9ORSwKIAkJCSAgICB7KGNoYXJfdSAqKUZBTFNFLCAoY2hhcl91ICopMEx9fSwKKyAgICB7Im1rc3BlbGxtZW0iLCAgIm1zbSIsICBQX1NUUklOR3xQX1ZJX0RFRnxQX0VYUEFORHxQX1NFQ1VSRSwKKyNpZmRlZiBGRUFUX1NZTl9ITAorCQkJICAgIChjaGFyX3UgKikmcF9tc20sIFBWX05PTkUsCisJCQkgICAgeyhjaGFyX3UgKikiNDYwMDAwLDIwMDAsNTAwIiwgKGNoYXJfdSAqKTBMfQorI2Vsc2UKKwkJCSAgICAoY2hhcl91ICopTlVMTCwgUFZfTk9ORSwKKwkJCSAgICB7KGNoYXJfdSAqKTBMLCAoY2hhcl91ICopMEx9CisjZW5kaWYKKyAgICB9LAogICAgIHsibW9kZWxpbmUiLCAgICAibWwiLCAgIFBfQk9PTHxQX1ZJTSwKIAkJCSAgICAoY2hhcl91ICopJnBfbWwsIFBWX01MLAogCQkJICAgIHsoY2hhcl91ICopRkFMU0UsIChjaGFyX3UgKilUUlVFfX0sCkBAIC00NjIxLDYgKzQ2MzAsNyBAQAogICAgICh2b2lkKW9wdF9zdHJpbmdzX2ZsYWdzKHBfdHR5bSwgcF90dHltX3ZhbHVlcywgJnR0eW1fZmxhZ3MsIEZBTFNFKTsKICNlbmRpZgogI2lmZGVmIEZFQVRfU1lOX0hMCisgICAgKHZvaWQpc3BlbGxfY2hlY2tfbXNtKCk7CiAgICAgKHZvaWQpc3BlbGxfY2hlY2tfc3BzKCk7CiAgICAgKHZvaWQpY29tcGlsZV9jYXBfcHJvZyhjdXJidWYpOwogI2VuZGlmCkBAIC01NzkxLDYgKzU4MDEsMTIgQEAKIAlpZiAoc3BlbGxfY2hlY2tfc3BzKCkgIT0gT0spCiAJICAgIGVycm1zZyA9IGVfaW52YXJnOwogICAgIH0KKyAgICAvKiAnbWtzcGVsbG1lbScgKi8KKyAgICBlbHNlIGlmICh2YXJwID09ICZwX21zbSkKKyAgICB7CisJaWYgKHNwZWxsX2NoZWNrX21zbSgpICE9IE9LKQorCSAgICBlcnJtc2cgPSBlX2ludmFyZzsKKyAgICB9CiAjZW5kaWYKIAogI2lmZGVmIEZFQVRfUVVJQ0tGSVgKZGlmZiAtLWdpdCBhL3NyYy9vcHRpb24uaCBiL3NyYy9vcHRpb24uaAppbmRleCA5YWEyYWFhLi4zY2ZkZDRmIDEwMDY0NAotLS0gYS9zcmMvb3B0aW9uLmgKKysrIGIvc3JjL29wdGlvbi5oCkBAIC01OTQsNiArNTk0LDkgQEAKICNpZmRlZiBGRUFUX01FTlUKIEVYVEVSTiBsb25nCXBfbWlzOwkJLyogJ21lbnVpdGVtcycgKi8KICNlbmRpZgorI2lmZGVmIEZFQVRfU1lOX0hMCitFWFRFUk4gY2hhcl91CSpwX21zbTsJCS8qICdta3NwZWxsbWVtJyAqLworI2VuZGlmCiBFWFRFUk4gbG9uZwlwX21sczsJCS8qICdtb2RlbGluZXMnICovCiBFWFRFUk4gY2hhcl91CSpwX21vdXNlOwkvKiAnbW91c2UnICovCiAjaWZkZWYgRkVBVF9HVUkKZGlmZiAtLWdpdCBhL3NyYy9wcm90by9leF9jbWRzLnBybyBiL3NyYy9wcm90by9leF9jbWRzLnBybwppbmRleCA2NDA0Y2M4Li44N2FmMDNhIDEwMDY0NAotLS0gYS9zcmMvcHJvdG8vZXhfY21kcy5wcm8KKysrIGIvc3JjL3Byb3RvL2V4X2NtZHMucHJvCkBAIC0zNCw2ICszNCw3IEBACiBpbnQgY2hlY2tfcmVzdHJpY3RlZCBfX0FSR1MoKHZvaWQpKTsKIGludCBjaGVja19zZWN1cmUgX19BUkdTKCh2b2lkKSk7CiB2b2lkIGRvX3N1YiBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOworaW50IGRvX3N1Yl9tc2cgX19BUkdTKChpbnQgY291bnRfb25seSkpOwogdm9pZCBleF9nbG9iYWwgX19BUkdTKChleGFyZ19UICplYXApKTsKIHZvaWQgZ2xvYmFsX2V4ZSBfX0FSR1MoKGNoYXJfdSAqY21kKSk7CiBpbnQgcmVhZF92aW1pbmZvX3N1Yl9zdHJpbmcgX19BUkdTKCh2aXJfVCAqdmlycCwgaW50IGZvcmNlKSk7CmRpZmYgLS1naXQgYS9zcmMvcHJvdG8vc3BlbGwucHJvIGIvc3JjL3Byb3RvL3NwZWxsLnBybwppbmRleCAyMTIzNDQwLi40NmFjNTc1IDEwMDY0NAotLS0gYS9zcmMvcHJvdG8vc3BlbGwucHJvCisrKyBiL3NyYy9wcm90by9zcGVsbC5wcm8KQEAgLTExLDYgKzExLDcgQEAKIHZvaWQgc3BlbGxfYWRkX3dvcmQgX19BUkdTKChjaGFyX3UgKndvcmQsIGludCBsZW4sIGludCBiYWQsIGludCBpbmRleCkpOwogdm9pZCBpbml0X3NwZWxsX2NoYXJ0YWIgX19BUkdTKCh2b2lkKSk7CiBpbnQgc3BlbGxfY2hlY2tfc3BzIF9fQVJHUygodm9pZCkpOworaW50IHNwZWxsX2NoZWNrX21zbSBfX0FSR1MoKHZvaWQpKTsKIHZvaWQgc3BlbGxfc3VnZ2VzdCBfX0FSR1MoKHZvaWQpKTsKIHZvaWQgZXhfc3BlbGxyZXBhbGwgX19BUkdTKChleGFyZ19UICplYXApKTsKIHZvaWQgc3BlbGxfc3VnZ2VzdF9saXN0IF9fQVJHUygoZ2FycmF5X1QgKmdhcCwgY2hhcl91ICp3b3JkLCBpbnQgbWF4Y291bnQsIGludCBuZWVkX2NhcCkpOwpkaWZmIC0tZ2l0IGEvc3JjL3ZlcnNpb24uaCBiL3NyYy92ZXJzaW9uLmgKaW5kZXggOTQ3MjZjNi4uN2EzMjg0NSAxMDA2NDQKLS0tIGEvc3JjL3ZlcnNpb24uaAorKysgYi9zcmMvdmVyc2lvbi5oCkBAIC0zNiw1ICszNiw1IEBACiAjZGVmaW5lIFZJTV9WRVJTSU9OX05PRE9UCSJ2aW03MGFhIgogI2RlZmluZSBWSU1fVkVSU0lPTl9TSE9SVAkiNy4wYWEiCiAjZGVmaW5lIFZJTV9WRVJTSU9OX01FRElVTQkiNy4wYWEgQUxQSEEiCi0jZGVmaW5lIFZJTV9WRVJTSU9OX0xPTkcJIlZJTSAtIFZpIElNcHJvdmVkIDcuMGFhIEFMUEhBICgyMDA1IEF1ZyAxNikiCi0jZGVmaW5lIFZJTV9WRVJTSU9OX0xPTkdfREFURQkiVklNIC0gVmkgSU1wcm92ZWQgNy4wYWEgQUxQSEEgKDIwMDUgQXVnIDE2LCBjb21waWxlZCAiCisjZGVmaW5lIFZJTV9WRVJTSU9OX0xPTkcJIlZJTSAtIFZpIElNcHJvdmVkIDcuMGFhIEFMUEhBICgyMDA1IEF1ZyAxOSkiCisjZGVmaW5lIFZJTV9WRVJTSU9OX0xPTkdfREFURQkiVklNIC0gVmkgSU1wcm92ZWQgNy4wYWEgQUxQSEEgKDIwMDUgQXVnIDE5LCBjb21waWxlZCAiCg==