From: Martin Bosslet Date: 2010-12-12T01:08:44+09:00 Subject: [ruby-core:33677] [Ruby 1.9-Bug#4030] ext/openssl OpenSSL::ASN1::decode / to_der --mimepart_4d03a1f3aaa57_ec3b6be5082b2 Content-Type: text/plain Content-Transfer-Encoding: Quoted-printable Content-Disposition: inline Issue #4030 has been updated by Martin Bosslet. File asn1_inf_length_2.diff added I changed the code to feature the 0 argument initialize! ---------------------------------------- http://redmine.ruby-lang.org/issues/show/4030 ---------------------------------------- http://redmine.ruby-lang.org --mimepart_4d03a1f3aaa57_ec3b6be5082b2 Content-Type: text/x-patch; name=asn1_inf_length_2.diff Content-Transfer-Encoding: Base64 Content-Disposition: attachment; filename=asn1_inf_length_2.diff ClByb3BlcnR5IGNoYW5nZXMgb246IHJ1YnkvZXh0L29wZW5zc2wKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpNb2RpZmllZDogc3ZuOmlnbm9yZQogICAtIEdO VW1ha2VmaWxlCk1ha2VmaWxlCmRlcApleHRjb25mLmgKbWttZi5sb2cKb3Bl bnNzbC5hCmNvbmZ0ZXN0LmRTWU0KCiAgICsgR05VbWFrZWZpbGUKTWFrZWZp bGUKZGVwCmV4dGNvbmYuaApta21mLmxvZwpvcGVuc3NsLmEKY29uZnRlc3Qu ZFNZTQpvcGVuc3NsLnNvCgoKSW5kZXg6IHJ1YnkvZXh0L29wZW5zc2wvb3Nz bF9hc24xLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcnVieS9leHQv b3BlbnNzbC9vc3NsX2FzbjEuYwkocmV2aXNpb24gMjk5NjUpCisrKyBydWJ5 L2V4dC9vcGVuc3NsL29zc2xfYXNuMS5jCSh3b3JraW5nIGNvcHkpCkBAIC0x OSw2ICsxOSw4IEBACiB9OwogI2VuZGlmCiAKK3N0YXRpYyBWQUxVRSBqb2lu X2RlcihWQUxVRSBlbnVtZXJhYmxlKTsKKwogLyoKICAqIERBVEUgY29udmVy c2lvbgogICovCkBAIC0xNTYsMTUgKzE1OCwxNyBAQAogLyoKICAqIEFTTjEg bW9kdWxlCiAgKi8KLSNkZWZpbmUgb3NzbF9hc24xX2dldF92YWx1ZShvKSAg ICAgICByYl9hdHRyX2dldCgobykscmJfaW50ZXJuKCJAdmFsdWUiKSkKLSNk ZWZpbmUgb3NzbF9hc24xX2dldF90YWcobykgICAgICAgICByYl9hdHRyX2dl dCgobykscmJfaW50ZXJuKCJAdGFnIikpCi0jZGVmaW5lIG9zc2xfYXNuMV9n ZXRfdGFnZ2luZyhvKSAgICAgcmJfYXR0cl9nZXQoKG8pLHJiX2ludGVybigi QHRhZ2dpbmciKSkKLSNkZWZpbmUgb3NzbF9hc24xX2dldF90YWdfY2xhc3Mo bykgICByYl9hdHRyX2dldCgobykscmJfaW50ZXJuKCJAdGFnX2NsYXNzIikp CisjZGVmaW5lIG9zc2xfYXNuMV9nZXRfdmFsdWUobykgICAgICAgICAgIHJi X2F0dHJfZ2V0KChvKSxyYl9pbnRlcm4oIkB2YWx1ZSIpKQorI2RlZmluZSBv c3NsX2FzbjFfZ2V0X3RhZyhvKSAgICAgICAgICAgICByYl9hdHRyX2dldCgo bykscmJfaW50ZXJuKCJAdGFnIikpCisjZGVmaW5lIG9zc2xfYXNuMV9nZXRf dGFnZ2luZyhvKSAgICAgICAgIHJiX2F0dHJfZ2V0KChvKSxyYl9pbnRlcm4o IkB0YWdnaW5nIikpCisjZGVmaW5lIG9zc2xfYXNuMV9nZXRfdGFnX2NsYXNz KG8pICAgICAgIHJiX2F0dHJfZ2V0KChvKSxyYl9pbnRlcm4oIkB0YWdfY2xh c3MiKSkKKyNkZWZpbmUgb3NzbF9hc24xX2dldF9pbmZpbml0ZV9sZW5ndGgo bykgcmJfYXR0cl9nZXQoKG8pLHJiX2ludGVybigiQGluZmluaXRlX2xlbmd0 aCIpKQogCi0jZGVmaW5lIG9zc2xfYXNuMV9zZXRfdmFsdWUobyx2KSAgICAg cmJfaXZfc2V0KChvKSwiQHZhbHVlIiwodikpCi0jZGVmaW5lIG9zc2xfYXNu MV9zZXRfdGFnKG8sdikgICAgICAgcmJfaXZfc2V0KChvKSwiQHRhZyIsKHYp KQotI2RlZmluZSBvc3NsX2FzbjFfc2V0X3RhZ2dpbmcobyx2KSAgIHJiX2l2 X3NldCgobyksIkB0YWdnaW5nIiwodikpCi0jZGVmaW5lIG9zc2xfYXNuMV9z ZXRfdGFnX2NsYXNzKG8sdikgcmJfaXZfc2V0KChvKSwiQHRhZ19jbGFzcyIs KHYpKQorI2RlZmluZSBvc3NsX2FzbjFfc2V0X3ZhbHVlKG8sdikgICAgICAg ICAgIHJiX2l2X3NldCgobyksIkB2YWx1ZSIsKHYpKQorI2RlZmluZSBvc3Ns X2FzbjFfc2V0X3RhZyhvLHYpICAgICAgICAgICAgIHJiX2l2X3NldCgobyks IkB0YWciLCh2KSkKKyNkZWZpbmUgb3NzbF9hc24xX3NldF90YWdnaW5nKG8s dikgICAgICAgICByYl9pdl9zZXQoKG8pLCJAdGFnZ2luZyIsKHYpKQorI2Rl ZmluZSBvc3NsX2FzbjFfc2V0X3RhZ19jbGFzcyhvLHYpICAgICAgIHJiX2l2 X3NldCgobyksIkB0YWdfY2xhc3MiLCh2KSkKKyNkZWZpbmUgb3NzbF9hc24x X3NldF9pbmZpbml0ZV9sZW5ndGgobyx2KSByYl9pdl9zZXQoKG8pLCJAaW5m aW5pdGVfbGVuZ3RoIiwodikpCiAKIFZBTFVFIG1BU04xOwogVkFMVUUgZUFT TjFFcnJvcjsKQEAgLTE3Myw2ICsxNzcsNyBAQAogVkFMVUUgY0FTTjFQcmlt aXRpdmU7CiBWQUxVRSBjQVNOMUNvbnN0cnVjdGl2ZTsKIAorVkFMVUUgY0FT TjFFbmRPZkNvbnRlbnQ7CiBWQUxVRSBjQVNOMUJvb2xlYW47ICAgICAgICAg ICAgICAgICAgICAgICAgICAgLyogQk9PTEVBTiAgICAgICAgICAgKi8KIFZB TFVFIGNBU04xSW50ZWdlciwgY0FTTjFFbnVtZXJhdGVkOyAgICAgICAgICAv KiBJTlRFR0VSICAgICAgICAgICAqLwogVkFMVUUgY0FTTjFCaXRTdHJpbmc7 ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEJJVCBTVFJJTkcgICAgICAg ICovCkBAIC00NDksNyArNDU0LDcgQEAKIH0gb3NzbF9hc24xX2luZm9fdDsK IAogc3RhdGljIG9zc2xfYXNuMV9pbmZvX3Qgb3NzbF9hc24xX2luZm9bXSA9 IHsKLSAgICB7ICJFT0MiLCAgICAgICAgICAgICAgIE5VTEwsICAgICAgICAg ICAgICAgICAgfSwgIC8qICAwICovCisgICAgeyAiRU9DIiwgICAgICAgICAg ICAgICAmY0FTTjFFbmRPZkNvbnRlbnQsICAgIH0sICAvKiAgMCAqLwogICAg IHsgIkJPT0xFQU4iLCAgICAgICAgICAgJmNBU04xQm9vbGVhbiwgICAgICAg ICB9LCAgLyogIDEgKi8KICAgICB7ICJJTlRFR0VSIiwgICAgICAgICAgICZj QVNOMUludGVnZXIsICAgICAgICAgfSwgIC8qICAyICovCiAgICAgeyAiQklU X1NUUklORyIsICAgICAgICAmY0FTTjFCaXRTdHJpbmcsICAgICAgIH0sICAv KiAgMyAqLwpAQCAtNjYwLDYgKzY2NSw3IEBACiAgICAgb3NzbF9hc24xX3Nl dF90YWcoc2VsZiwgdGFnKTsKICAgICBvc3NsX2FzbjFfc2V0X3ZhbHVlKHNl bGYsIHZhbHVlKTsKICAgICBvc3NsX2FzbjFfc2V0X3RhZ19jbGFzcyhzZWxm LCB0YWdfY2xhc3MpOworICAgIG9zc2xfYXNuMV9zZXRfaW5maW5pdGVfbGVu Z3RoKHNlbGYsIFFmYWxzZSk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAg LTY4NCw4ICs2OTAsOCBAQAogc3RhdGljIFZBTFVFCiBvc3NsX2FzbjFkYXRh X3RvX2RlcihWQUxVRSBzZWxmKQogewotICAgIFZBTFVFIHZhbHVlLCBkZXI7 Ci0gICAgaW50IHRhZywgdGFnX2NsYXNzLCBpc19jb25zID0gMDsKKyAgICBW QUxVRSB2YWx1ZSwgZGVyLCBpbmZfbGVuZ3RoOworICAgIGludCB0YWcsIHRh Z19jbGFzcywgaXNfY29ucyA9IDAsIHRtcF9jb25zID0gMTsKICAgICBsb25n IGxlbmd0aDsKICAgICB1bnNpZ25lZCBjaGFyICpwOwogCkBAIC02OTgsNyAr NzA0LDEyIEBACiAKICAgICB0YWcgPSBvc3NsX2FzbjFfdGFnKHNlbGYpOwog ICAgIHRhZ19jbGFzcyA9IG9zc2xfYXNuMV90YWdfY2xhc3Moc2VsZik7Ci0g ICAgaWYoKGxlbmd0aCA9IEFTTjFfb2JqZWN0X3NpemUoMSwgUlNUUklOR19M RU4odmFsdWUpLCB0YWcpKSA8PSAwKQorICAgIGluZl9sZW5ndGggPSBvc3Ns X2FzbjFfZ2V0X2luZmluaXRlX2xlbmd0aChzZWxmKTsKKyAgICBpZiAoaW5m X2xlbmd0aCA9PSBRdHJ1ZSkgeworICAgICAgICBpc19jb25zID0gMjsKKyAg ICAgICAgdG1wX2NvbnMgPSAyOworICAgIH0KKyAgICBpZigobGVuZ3RoID0g QVNOMV9vYmplY3Rfc2l6ZSh0bXBfY29ucywgUlNUUklOR19MRU4odmFsdWUp LCB0YWcpKSA8PSAwKQogCW9zc2xfcmFpc2UoZUFTTjFFcnJvciwgTlVMTCk7 CiAgICAgZGVyID0gcmJfc3RyX25ldygwLCBsZW5ndGgpOwogICAgIHAgPSAo dW5zaWduZWQgY2hhciAqKVJTVFJJTkdfUFRSKGRlcik7CkBAIC03MTcsNyAr NzI4LDcgQEAKICAgICB1bnNpZ25lZCBjaGFyICpzdGFydCwgKnA7CiAgICAg Y29uc3QgdW5zaWduZWQgY2hhciAqcDA7CiAgICAgbG9uZyBsZW4sIG9mZiA9 ICpvZmZzZXQ7Ci0gICAgaW50IGhsZW4sIHRhZywgdGMsIGo7CisgICAgaW50 IGhsZW4sIHRhZywgdGMsIGosIGluZmluaXRlID0gMDsKICAgICBWQUxVRSBh cnksIGFzbjFkYXRhLCB2YWx1ZSwgdGFnX2NsYXNzOwogCiAgICAgYXJ5ID0g cmJfYXJ5X25ldygpOwpAQCAtNzUyLDggKzc2Myw4IEBACiAJZWxzZQogCSAg ICB0YWdfY2xhc3MgPSBzVU5JVkVSU0FMOwogCWlmKGogJiBWX0FTTjFfQ09O U1RSVUNURUQpewotCSAgICAvKiBUT0RPOiBpZiBqID09IDB4MjEgaXQgaXMg aW5kZWZpbml0ZSBsZW5ndGggb2JqZWN0LiAqLwogCSAgICBpZigoaiA9PSAw eDIxKSAmJiAobGVuID09IDApKXsKKyAgICAgICAgICAgICAgICBpbmZpbml0 ZSA9IDE7CiAJCWxvbmcgbGFzdG9mZiA9IG9mZjsKIAkJdmFsdWUgPSBvc3Ns X2FzbjFfZGVjb2RlMCgmcCwgbGVuZ3RoLCAmb2ZmLCBkZXB0aCsxLCAwLCB5 aWVsZCk7CiAJCWxlbiA9IG9mZiAtIGxhc3RvZmY7CkBAIC03OTgsMTUgKzgw OSwzOSBAQAogCQkgICAgYnJlYWs7CiAJCX0KIAkgICAgfQotCSAgICBhc24x ZGF0YSA9IHJiX2Z1bmNhbGwoa2xhc3MsIHJiX2ludGVybigibmV3IiksIDEs IHZhbHVlKTsKKyAgICAgICAgICAgIGlmIChpbmZpbml0ZSAmJiAhKHRhZyA9 PSBWX0FTTjFfU0VRVUVOQ0UgfHwgdGFnID09IFZfQVNOMV9TRVQpKXsKKyAg ICAgICAgICAgICAgICBhc24xZGF0YSA9IHJiX2Z1bmNhbGwoY0FTTjFDb25z dHJ1Y3RpdmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJiX2ludGVybigibmV3IiksCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBJTlQyTlVNKHRhZyksCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFFuaWwsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIElEMlNZTSh0YWdfY2xhc3MpKTsKKyAg ICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2V7CisgICAgICAgICAgICAg ICAgaWYgKHRhZyA9PSBWX0FTTjFfRU9DKXsKKyAgICAgICAgICAgICAgICAg ICAgYXNuMWRhdGEgPSByYl9mdW5jYWxsKGNBU04xRW5kT2ZDb250ZW50LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmJf aW50ZXJuKCJuZXciKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgICAgICBlbHNleworICAgICAgICAgICAgICAgICAgICBhc24xZGF0YSA9 IHJiX2Z1bmNhbGwoa2xhc3MsIHJiX2ludGVybigibmV3IiksIDEsIHZhbHVl KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAJICAgIGlm KHRhZyA9PSBWX0FTTjFfQklUX1NUUklORyl7CiAJCXJiX2l2X3NldChhc24x ZGF0YSwgIkB1bnVzZWRfYml0cyIsIExPTkcyTlVNKGZsYWcpKTsKIAkgICAg fQogCX0KIAllbHNlewotCSAgICBhc24xZGF0YSA9IHJiX2Z1bmNhbGwoY0FT TjFEYXRhLCByYl9pbnRlcm4oIm5ldyIpLCAzLAorICAgICAgICAgICAgYXNu MWRhdGEgPSByYl9mdW5jYWxsKGNBU04xRGF0YSwgcmJfaW50ZXJuKCJuZXci KSwgMywKIAkJCQkgIHZhbHVlLCBJTlQyTlVNKHRhZyksIElEMlNZTSh0YWdf Y2xhc3MpKTsKLQl9CisgICAgICAgIH0KKworICAgICAgICBpZiAoaW5maW5p dGUpCisgICAgICAgICAgICBvc3NsX2FzbjFfc2V0X2luZmluaXRlX2xlbmd0 aChhc24xZGF0YSwgUXRydWUpOworICAgICAgICBlbHNlCisgICAgICAgICAg ICBvc3NsX2FzbjFfc2V0X2luZmluaXRlX2xlbmd0aChhc24xZGF0YSwgUWZh bHNlKTsKKyAgICAgICAgCiAJcmJfYXJ5X3B1c2goYXJ5LCBhc24xZGF0YSk7 CiAJbGVuZ3RoIC09IGxlbjsKICAgICAgICAgaWYob25jZSkgYnJlYWs7CkBA IC04OTQsMTAgKzkyOSwyNiBAQAogICAgIG9zc2xfYXNuMV9zZXRfdmFsdWUo c2VsZiwgdmFsdWUpOwogICAgIG9zc2xfYXNuMV9zZXRfdGFnZ2luZyhzZWxm LCB0YWdnaW5nKTsKICAgICBvc3NsX2FzbjFfc2V0X3RhZ19jbGFzcyhzZWxm LCB0YWdfY2xhc3MpOworICAgIG9zc2xfYXNuMV9zZXRfaW5maW5pdGVfbGVu Z3RoKHNlbGYsIFFmYWxzZSk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KIAor c3RhdGljIFZBTFVFCitvc3NsX2FzbjFlb2NfaW5pdGlhbGl6ZShWQUxVRSBz ZWxmKSB7CisgICAgVkFMVUUgdGFnLCB0YWdnaW5nLCB0YWdfY2xhc3MsIHZh bHVlOworICAgIHRhZyA9IElOVDJOVU0ob3NzbF9hc24xX2RlZmF1bHRfdGFn KHNlbGYpKTsKKyAgICB0YWdnaW5nID0gUW5pbDsKKyAgICB0YWdfY2xhc3Mg PSBJRDJTWU0oc1VOSVZFUlNBTCk7CisgICAgdmFsdWUgPSByYl9zdHJfbmV3 KCIiLCAwKTsKKyAgICBvc3NsX2FzbjFfc2V0X3RhZyhzZWxmLCB0YWcpOwor ICAgIG9zc2xfYXNuMV9zZXRfdmFsdWUoc2VsZiwgdmFsdWUpOworICAgIG9z c2xfYXNuMV9zZXRfdGFnZ2luZyhzZWxmLCB0YWdnaW5nKTsKKyAgICBvc3Ns X2FzbjFfc2V0X3RhZ19jbGFzcyhzZWxmLCB0YWdfY2xhc3MpOworICAgIG9z c2xfYXNuMV9zZXRfaW5maW5pdGVfbGVuZ3RoKHNlbGYsIFFmYWxzZSk7Cisg ICAgcmV0dXJuIHNlbGY7Cit9CisKIHN0YXRpYyBpbnQKIG9zc2xfaTJkX0FT TjFfVFlQRShBU04xX1RZUEUgKmEsIHVuc2lnbmVkIGNoYXIgKipwcCkKIHsK QEAgLTk2MiwyOSArMTAxMyw2NCBAQAogc3RhdGljIFZBTFVFCiBvc3NsX2Fz bjFjb25zX3RvX2RlcihWQUxVRSBzZWxmKQogewotICAgIGludCB0YWcsIHRu LCB0YywgZXhwbGljaXQ7CisgICAgaW50IHRhZywgdG4sIHRjLCBleHBsaWNp dCwgY29uc3RydWN0ZWQgPSAxOworICAgIGludCBmb3VuZF9wcmltID0gMDsK ICAgICBsb25nIHNlcV9sZW4sIGxlbmd0aDsKICAgICB1bnNpZ25lZCBjaGFy ICpwOwotICAgIFZBTFVFIHZhbHVlLCBzdHI7CisgICAgVkFMVUUgdmFsdWUs IHN0ciwgaW5mX2xlbmd0aCwgYXJ5LCBleGFtcGxlOwogCi0gICAgdGFnID0g b3NzbF9hc24xX2RlZmF1bHRfdGFnKHNlbGYpOwogICAgIHRuID0gTlVNMklO VChvc3NsX2FzbjFfZ2V0X3RhZyhzZWxmKSk7CiAgICAgdGMgPSBvc3NsX2Fz bjFfdGFnX2NsYXNzKHNlbGYpOworICAgIGluZl9sZW5ndGggPSBvc3NsX2Fz bjFfZ2V0X2luZmluaXRlX2xlbmd0aChzZWxmKTsKKyAgICBpZiAoaW5mX2xl bmd0aCA9PSBRdHJ1ZSkgeworICAgICAgICBjb25zdHJ1Y3RlZCA9IDI7Cisg ICAgICAgIGlmIChDTEFTU19PRihzZWxmKSA9PSBjQVNOMVNlcXVlbmNlIHx8 CisgICAgICAgICAgICBDTEFTU19PRihzZWxmKSA9PSBjQVNOMVNldCkgewor ICAgICAgICAgICAgdGFnID0gb3NzbF9hc24xX2RlZmF1bHRfdGFnKHNlbGYp OworICAgICAgICB9CisgICAgICAgIGVsc2UgeyAvKkJJVF9TVFJJTkcgT1Ig T0NURVRfU1RSSU5HKi8KKyAgICAgICAgICAgIGFyeSA9IG9zc2xfYXNuMV9n ZXRfdmFsdWUoc2VsZik7CisgICAgICAgICAgICAvKiBSZWN1cnNpdmVseSBk ZXNjZW5kIHVudGlsIGEgcHJpbWl0aXZlIHZhbHVlIGlzIGZvdW5kLgorICAg ICAgICAgICAgICAgVGhlIG92ZXJhbGwgdmFsdWUgb2YgdGhlIGVudGlyZSBj b25zdHJ1Y3RlZCBlbmNvZGluZworICAgICAgICAgICAgICAgaXMgb2YgdGhl IHR5cGUgb2YgdGhlIGZpcnN0IHByaW1pdGl2ZSBlbmNvZGluZyB0byBiZQor ICAgICAgICAgICAgICAgZm91bmQuICovCisgICAgICAgICAgICB3aGlsZSAo IWZvdW5kX3ByaW0peworICAgICAgICAgICAgICAgIGV4YW1wbGUgPSByYl9h cnlfZW50cnkoYXJ5LCAwKTsKKyAgICAgICAgICAgICAgICBpZiAocmJfb2Jq X2lzX2tpbmRfb2YoZXhhbXBsZSwgY0FTTjFQcmltaXRpdmUpKXsKKyAgICAg ICAgICAgICAgICAgICAgZm91bmRfcHJpbSA9IDE7CisgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg ICAgICAvKiBleGFtcGxlIGlzIGFub3RoZXIgQVNOMUNvbnN0cnVjdGl2ZSAq LworICAgICAgICAgICAgICAgICAgICBpZiAoIXJiX29ial9pc19raW5kX29m KGV4YW1wbGUsIGNBU04xQ29uc3RydWN0aXZlKSl7CisgICAgICAgICAgICAg ICAgICAgICAgICBvc3NsX3JhaXNlKGVBU04xRXJyb3IsICJpbnZhbGlkIGNv bnN0cnVjdGVkIGVuY29kaW5nIik7CisgICAgICAgICAgICAgICAgICAgICAg ICByZXR1cm4gUW5pbDsgLyogZHVtbXkgKi8KKyAgICAgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgICAgICBhcnkgPSBvc3NsX2FzbjFfZ2V0 X3ZhbHVlKGV4YW1wbGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgIH0KKyAgICAgICAgICAgIHRhZyA9IG9zc2xfYXNuMV9kZWZhdWx0X3Rh ZyhleGFtcGxlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAg ICAgICAgdGFnID0gb3NzbF9hc24xX2RlZmF1bHRfdGFnKHNlbGYpOworICAg IH0KICAgICBleHBsaWNpdCA9IG9zc2xfYXNuMV9pc19leHBsaWNpdChzZWxm KTsKICAgICB2YWx1ZSA9IGpvaW5fZGVyKG9zc2xfYXNuMV9nZXRfdmFsdWUo c2VsZikpOwogCi0gICAgc2VxX2xlbiA9IEFTTjFfb2JqZWN0X3NpemUoMSwg UlNUUklOR19MRU4odmFsdWUpLCB0YWcpOwotICAgIGxlbmd0aCA9IEFTTjFf b2JqZWN0X3NpemUoMSwgc2VxX2xlbiwgdG4pOworICAgIHNlcV9sZW4gPSBB U04xX29iamVjdF9zaXplKGNvbnN0cnVjdGVkLCBSU1RSSU5HX0xFTih2YWx1 ZSksIHRhZyk7CisgICAgbGVuZ3RoID0gQVNOMV9vYmplY3Rfc2l6ZShjb25z dHJ1Y3RlZCwgc2VxX2xlbiwgdG4pOwogICAgIHN0ciA9IHJiX3N0cl9uZXco MCwgbGVuZ3RoKTsKICAgICBwID0gKHVuc2lnbmVkIGNoYXIgKilSU1RSSU5H X1BUUihzdHIpOwogICAgIGlmKHRjID09IFZfQVNOMV9VTklWRVJTQUwpCi0J QVNOMV9wdXRfb2JqZWN0KCZwLCAxLCBSU1RSSU5HX0xFTih2YWx1ZSksIHRu LCB0Yyk7CisgICAgCUFTTjFfcHV0X29iamVjdCgmcCwgY29uc3RydWN0ZWQs IFJTVFJJTkdfTEVOKHZhbHVlKSwgdG4sIHRjKTsKICAgICBlbHNlewogCWlm KGV4cGxpY2l0KXsKLQkgICAgQVNOMV9wdXRfb2JqZWN0KCZwLCAxLCBzZXFf bGVuLCB0biwgdGMpOwotCSAgICBBU04xX3B1dF9vYmplY3QoJnAsIDEsIFJT VFJJTkdfTEVOKHZhbHVlKSwgdGFnLCBWX0FTTjFfVU5JVkVSU0FMKTsKKyAg ICAJICAgIEFTTjFfcHV0X29iamVjdCgmcCwgY29uc3RydWN0ZWQsIHNlcV9s ZW4sIHRuLCB0Yyk7CisJICAgIEFTTjFfcHV0X29iamVjdCgmcCwgY29uc3Ry dWN0ZWQsIFJTVFJJTkdfTEVOKHZhbHVlKSwgdGFnLCBWX0FTTjFfVU5JVkVS U0FMKTsKIAl9Ci0JZWxzZSBBU04xX3B1dF9vYmplY3QoJnAsIDEsIFJTVFJJ TkdfTEVOKHZhbHVlKSwgdG4sIHRjKTsKKyAgICAgICAgZWxzZXsKKyAgICAg ICAgICAgIEFTTjFfcHV0X29iamVjdCgmcCwgY29uc3RydWN0ZWQsIFJTVFJJ TkdfTEVOKHZhbHVlKSwgdG4sIHRjKTsKKyAgICAgICAgfQogICAgIH0KICAg ICBtZW1jcHkocCwgUlNUUklOR19QVFIodmFsdWUpLCBSU1RSSU5HX0xFTih2 YWx1ZSkpOwogICAgIHAgKz0gUlNUUklOR19MRU4odmFsdWUpOwpAQCAtMTA4 MCw2ICsxMTY2LDcgQEAKIE9TU0xfQVNOMV9JTVBMX0ZBQ1RPUllfTUVUSE9E KEdlbmVyYWxpemVkVGltZSkKIE9TU0xfQVNOMV9JTVBMX0ZBQ1RPUllfTUVU SE9EKFNlcXVlbmNlKQogT1NTTF9BU04xX0lNUExfRkFDVE9SWV9NRVRIT0Qo U2V0KQorT1NTTF9BU04xX0lNUExfRkFDVE9SWV9NRVRIT0QoRW5kT2ZDb250 ZW50KQogCiB2b2lkCiBJbml0X29zc2xfYXNuMSgpCkBAIC0xMTE1LDExICsx MjAyLDEzIEBACiAgICAgcmJfYXR0cihjQVNOMURhdGEsIHJiX2ludGVybigi dmFsdWUiKSwgMSwgMSwgMCk7CiAgICAgcmJfYXR0cihjQVNOMURhdGEsIHJi X2ludGVybigidGFnIiksIDEsIDEsIDApOwogICAgIHJiX2F0dHIoY0FTTjFE YXRhLCByYl9pbnRlcm4oInRhZ19jbGFzcyIpLCAxLCAxLCAwKTsKKyAgICBy Yl9hdHRyKGNBU04xRGF0YSwgcmJfaW50ZXJuKCJpbmZpbml0ZV9sZW5ndGgi KSwgMSwgMSwgMCk7CiAgICAgcmJfZGVmaW5lX21ldGhvZChjQVNOMURhdGEs ICJpbml0aWFsaXplIiwgb3NzbF9hc24xZGF0YV9pbml0aWFsaXplLCAzKTsK ICAgICByYl9kZWZpbmVfbWV0aG9kKGNBU04xRGF0YSwgInRvX2RlciIsIG9z c2xfYXNuMWRhdGFfdG9fZGVyLCAwKTsKIAogICAgIGNBU04xUHJpbWl0aXZl ID0gcmJfZGVmaW5lX2NsYXNzX3VuZGVyKG1BU04xLCAiUHJpbWl0aXZlIiwg Y0FTTjFEYXRhKTsKICAgICByYl9hdHRyKGNBU04xUHJpbWl0aXZlLCByYl9p bnRlcm4oInRhZ2dpbmciKSwgMSwgMSwgUXRydWUpOworICAgIHJiX3VuZGVm X21ldGhvZChjQVNOMVByaW1pdGl2ZSwgImluZmluaXRlX2xlbmd0aD0iKTsK ICAgICByYl9kZWZpbmVfbWV0aG9kKGNBU04xUHJpbWl0aXZlLCAiaW5pdGlh bGl6ZSIsIG9zc2xfYXNuMV9pbml0aWFsaXplLCAtMSk7CiAgICAgcmJfZGVm aW5lX21ldGhvZChjQVNOMVByaW1pdGl2ZSwgInRvX2RlciIsIG9zc2xfYXNu MXByaW1fdG9fZGVyLCAwKTsKIApAQCAtMTE2MCw2ICsxMjQ5LDggQEAKICAg ICBPU1NMX0FTTjFfREVGSU5FX0NMQVNTKFNlcXVlbmNlLCBDb25zdHJ1Y3Rp dmUpOwogICAgIE9TU0xfQVNOMV9ERUZJTkVfQ0xBU1MoU2V0LCBDb25zdHJ1 Y3RpdmUpOwogCisgICAgT1NTTF9BU04xX0RFRklORV9DTEFTUyhFbmRPZkNv bnRlbnQsIERhdGEpOworCiAgICAgcmJfZGVmaW5lX3NpbmdsZXRvbl9tZXRo b2QoY0FTTjFPYmplY3RJZCwgInJlZ2lzdGVyIiwgb3NzbF9hc24xb2JqX3Nf cmVnaXN0ZXIsIDMpOwogICAgIHJiX2RlZmluZV9tZXRob2QoY0FTTjFPYmpl Y3RJZCwgInNuIiwgb3NzbF9hc24xb2JqX2dldF9zbiwgMCk7CiAgICAgcmJf ZGVmaW5lX21ldGhvZChjQVNOMU9iamVjdElkLCAibG4iLCBvc3NsX2FzbjFv YmpfZ2V0X2xuLCAwKTsKQEAgLTExNjcsNCArMTI1OCw2IEBACiAgICAgcmJf ZGVmaW5lX2FsaWFzKGNBU04xT2JqZWN0SWQsICJzaG9ydF9uYW1lIiwgInNu Iik7CiAgICAgcmJfZGVmaW5lX2FsaWFzKGNBU04xT2JqZWN0SWQsICJsb25n X25hbWUiLCAibG4iKTsKICAgICByYl9hdHRyKGNBU04xQml0U3RyaW5nLCBy Yl9pbnRlcm4oInVudXNlZF9iaXRzIiksIDEsIDEsIDApOworCisgICAgcmJf ZGVmaW5lX21ldGhvZChjQVNOMUVuZE9mQ29udGVudCwgImluaXRpYWxpemUi LCBvc3NsX2FzbjFlb2NfaW5pdGlhbGl6ZSwgMCk7CiB9CkluZGV4OiBydWJ5 L3Rlc3Qvb3BlbnNzbC90ZXN0X2FzbjEucmIKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gcnVieS90ZXN0L29wZW5zc2wvdGVzdF9hc24xLnJiCShyZXZp c2lvbiAyOTk2NSkKKysrIHJ1YnkvdGVzdC9vcGVuc3NsL3Rlc3RfYXNuMS5y Ygkod29ya2luZyBjb3B5KQpAQCAtMjA4LDQgKzIwOCwyMzEgQEAKICAgICAg IGFzc2VydF9lcXVhbCh2LCBPcGVuU1NMOjpBU04xLmRlY29kZSh0eXBlLm5l dyh2KS50b19kZXIpLnZhbHVlKQogICAgIGVuZAogICBlbmQKKworICBkZWYg dGVzdF9wcmltaXRpdmVfY2Fubm90X3NldF9pbmZpbml0ZV9sZW5ndGgKKyAg ICBiZWdpbgorICAgICAgcHJpbSA9IE9wZW5TU0w6OkFTTjE6OkludGVnZXIu bmV3KDUwKQorICAgICAgYXNzZXJ0X2VxdWFsKGZhbHNlLCBwcmltLmluZmlu aXRlX2xlbmd0aCkKKyAgICAgIHByaW0uaW5maW5pdGVfbGVuZ3RoID0gdHJ1 ZQorICAgICAgZmx1bmsoJ0NvdWxkIHNldCBpbmZpbml0ZSBsZW5ndGggb24g cHJpbWl0aXZlIHZhbHVlJykKKyAgICByZXNjdWUgTm9NZXRob2RFcnJvciA9 PiBlCisgICAgICAjb2sKKyAgICBlbmQKKyAgZW5kCisKKyAgZGVmIHRlc3Rf c2VxX2luZmluaXRlX2xlbmd0aAorICAgIGJlZ2luCisgICAgICBjb250ZW50 ID0gWyBPcGVuU1NMOjpBU04xOjpOdWxsLm5ldyhuaWwpLAorICAgICAgICAg ICAgICAgICAgT3BlblNTTDo6QVNOMTo6RW5kT2ZDb250ZW50Lm5ldyBdCisg ICAgICBjb25zID0gT3BlblNTTDo6QVNOMTo6U2VxdWVuY2UubmV3KGNvbnRl bnQpCisgICAgICBjb25zLmluZmluaXRlX2xlbmd0aCA9IHRydWUKKyAgICAg IGV4cGVjdGVkID0gJXd7IDMwIDgwIDA1IDAwIDAwIDAwIH0KKyAgICAgIHJh dyA9IFtleHBlY3RlZC5qb2luKCcnKV0ucGFjaygnSConKQorICAgICAgYXNz ZXJ0X2VxdWFsKHJhdywgY29ucy50b19kZXIpCisgICAgICBhc3NlcnRfZXF1 YWwocmF3LCBPcGVuU1NMOjpBU04xLmRlY29kZShyYXcpLnRvX2RlcikKKyAg ICBlbmQKKyAgZW5kCisKKyAgZGVmIHRlc3Rfc2V0X2luZmluaXRlX2xlbmd0 aAorICAgIGJlZ2luCisgICAgICBjb250ZW50ID0gWyBPcGVuU1NMOjpBU04x OjpOdWxsLm5ldyhuaWwpLAorICAgICAgICAgICAgICAgICAgT3BlblNTTDo6 QVNOMTo6RW5kT2ZDb250ZW50Lm5ldygpIF0KKyAgICAgIGNvbnMgPSBPcGVu U1NMOjpBU04xOjpTZXQubmV3KGNvbnRlbnQpCisgICAgICBjb25zLmluZmlu aXRlX2xlbmd0aCA9IHRydWUKKyAgICAgIGV4cGVjdGVkID0gJXd7IDMxIDgw IDA1IDAwIDAwIDAwIH0KKyAgICAgIHJhdyA9IFtleHBlY3RlZC5qb2luKCcn KV0ucGFjaygnSConKQorICAgICAgYXNzZXJ0X2VxdWFsKHJhdywgY29ucy50 b19kZXIpCisgICAgICBhc3NlcnRfZXF1YWwocmF3LCBPcGVuU1NMOjpBU04x LmRlY29kZShyYXcpLnRvX2RlcikKKyAgICBlbmQKKyAgZW5kCisKKyAgZGVm IHRlc3Rfb2N0ZXRfc3RyaW5nX2luZmluaXRlX2xlbmd0aAorICAgIGJlZ2lu CisgICAgICBvY3RldHMgPSBbIE9wZW5TU0w6OkFTTjE6Ok9jdGV0U3RyaW5n Lm5ldygnYWFhJyksCisgICAgICAgICAgICAgICAgIE9wZW5TU0w6OkFTTjE6 OkVuZE9mQ29udGVudC5uZXcoKSBdCisgICAgICBjb25zID0gT3BlblNTTDo6 QVNOMTo6Q29uc3RydWN0aXZlLm5ldygKKyAgICAgICAgb2N0ZXRzLAorICAg ICAgICBPcGVuU1NMOjpBU04xOjpPQ1RFVF9TVFJJTkcsCisgICAgICAgIG5p bCwKKyAgICAgICAgOlVOSVZFUlNBTCkKKyAgICAgIGNvbnMuaW5maW5pdGVf bGVuZ3RoID0gdHJ1ZQorICAgICAgZXhwZWN0ZWQgPSAld3sgMjQgODAgMDQg MDMgNjEgNjEgNjEgMDAgMDAgfQorICAgICAgcmF3ID0gW2V4cGVjdGVkLmpv aW4oJycpXS5wYWNrKCdIKicpCisgICAgICBhc3NlcnRfZXF1YWwocmF3LCBj b25zLnRvX2RlcikKKyAgICAgIGFzc2VydF9lcXVhbChyYXcsIE9wZW5TU0w6 OkFTTjEuZGVjb2RlKHJhdykudG9fZGVyKQorICAgIGVuZAorICBlbmQKKwor ICBkZWYgdGVzdF9wcmltX2V4cGxpY2l0X3RhZ2dpbmcKKyAgICBiZWdpbgor ICAgICAgb2N0X3N0ciA9IE9wZW5TU0w6OkFTTjE6Ok9jdGV0U3RyaW5nLm5l dygiYSIsIDAsIDpFWFBMSUNJVCkKKyAgICAgIGV4cGVjdGVkID0gJXd7IEEw IDAzIDA0IDAxIDYxIH0KKyAgICAgIHJhdyA9IFtleHBlY3RlZC5qb2luKCcn KV0ucGFjaygnSConKQorICAgICAgYXNzZXJ0X2VxdWFsKHJhdywgb2N0X3N0 ci50b19kZXIpCisgICAgICBhc3NlcnRfZXF1YWwocmF3LCBPcGVuU1NMOjpB U04xLmRlY29kZShyYXcpLnRvX2RlcikKKyAgICBlbmQKKyAgZW5kCisKKyAg ZGVmIHRlc3RfcHJpbV9leHBsaWNpdF90YWdnaW5nX3RhZ19jbGFzcworICAg IGJlZ2luCisgICAgICBvY3Rfc3RyID0gT3BlblNTTDo6QVNOMTo6T2N0ZXRT dHJpbmcubmV3KCJhIiwgMCwgOkVYUExJQ0lUKQorICAgICAgb2N0X3N0cjIg PSBPcGVuU1NMOjpBU04xOjpPY3RldFN0cmluZy5uZXcoCisgICAgICAgICJh IiwKKyAgICAgICAgMCwKKyAgICAgICAgOkVYUExJQ0lULAorICAgICAgICA6 Q09OVEVYVF9TUEVDSUZJQykKKyAgICAgIGFzc2VydF9lcXVhbChvY3Rfc3Ry LnRvX2Rlciwgb2N0X3N0cjIudG9fZGVyKQorICAgIGVuZAorICBlbmQKKwor ICBkZWYgdGVzdF9wcmltX2ltcGxpY2l0X3RhZ2dpbmcKKyAgICBiZWdpbgor ICAgICAgaW50ID0gT3BlblNTTDo6QVNOMTo6SW50ZWdlci5uZXcoMSwgMCwg OklNUExJQ0lUKQorICAgICAgZXhwZWN0ZWQgPSAld3sgODAgMDEgMDEgfQor ICAgICAgcmF3ID0gW2V4cGVjdGVkLmpvaW4oJycpXS5wYWNrKCdIKicpCisg ICAgICBhc3NlcnRfZXF1YWwocmF3LCBpbnQudG9fZGVyKQorICAgICAgYXNz ZXJ0X2VxdWFsKHJhdywgT3BlblNTTDo6QVNOMS5kZWNvZGUocmF3KS50b19k ZXIpCisgICAgZW5kCisgIGVuZAorCisgIGRlZiB0ZXN0X3ByaW1faW1wbGlj aXRfdGFnZ2luZ190YWdfY2xhc3MKKyAgICBiZWdpbgorICAgICAgaW50ID0g T3BlblNTTDo6QVNOMTo6SW50ZWdlci5uZXcoMSwgMCwgOklNUExJQ0lUKQor ICAgICAgaW50MiA9IE9wZW5TU0w6OkFTTjE6OkludGVnZXIubmV3KDEsIDAs IDpJTVBMSUNJVCwgOkNPTlRFWFRfU1BFQ0lGSUMpOworICAgICAgYXNzZXJ0 X2VxdWFsKGludC50b19kZXIsIGludDIudG9fZGVyKQorICAgIGVuZAorICBl bmQKKworICBkZWYgdGVzdF9jb25zX2V4cGxpY2l0X3RhZ2dpbmcKKyAgICBi ZWdpbgorICAgICAgY29udGVudCA9IFsgT3BlblNTTDo6QVNOMTo6UHJpbnRh YmxlU3RyaW5nLm5ldygnYWJjJykgXQorICAgICAgc2VxID0gT3BlblNTTDo6 QVNOMTo6U2VxdWVuY2UubmV3KGNvbnRlbnQsIDIsIDpFWFBMSUNJVCkKKyAg ICAgIGV4cGVjdGVkID0gJXd7IEEyIDA3IDMwIDA1IDEzIDAzIDYxIDYyIDYz IH0KKyAgICAgIHJhdyA9IFtleHBlY3RlZC5qb2luKCcnKV0ucGFjaygnSCon KQorICAgICAgYXNzZXJ0X2VxdWFsKHJhdywgc2VxLnRvX2RlcikKKyAgICAg IGFzc2VydF9lcXVhbChyYXcsIE9wZW5TU0w6OkFTTjEuZGVjb2RlKHJhdyku dG9fZGVyKQorICAgIGVuZAorICBlbmQKKworICBkZWYgdGVzdF9jb25zX2V4 cGxpY2l0X3RhZ2dpbmdfaW5mX2xlbmd0aAorICAgIGJlZ2luCisgICAgICBj b250ZW50ID0gWyBPcGVuU1NMOjpBU04xOjpQcmludGFibGVTdHJpbmcubmV3 KCdhYmMnKSAsCisgICAgICAgICAgICAgICAgICBPcGVuU1NMOjpBU04xOjpF bmRPZkNvbnRlbnQubmV3KCkgXQorICAgICAgc2VxID0gT3BlblNTTDo6QVNO MTo6U2VxdWVuY2UubmV3KGNvbnRlbnQsIDIsIDpFWFBMSUNJVCkKKyAgICAg IHNlcS5pbmZpbml0ZV9sZW5ndGggPSB0cnVlCisgICAgICBleHBlY3RlZCA9 ICV3eyBBMiA4MCAzMCA4MCAxMyAwMyA2MSA2MiA2MyAwMCAwMCB9CisgICAg ICByYXcgPSBbZXhwZWN0ZWQuam9pbignJyldLnBhY2soJ0gqJykKKyAgICAg IGFzc2VydF9lcXVhbChyYXcsIHNlcS50b19kZXIpCisgICAgICBhc3NlcnRf ZXF1YWwocmF3LCBPcGVuU1NMOjpBU04xLmRlY29kZShyYXcpLnRvX2RlcikK KyAgICBlbmQKKyAgZW5kCisKKyAgZGVmIHRlc3RfY29uc19pbXBsaWNpdF90 YWdnaW5nCisgICAgYmVnaW4KKyAgICAgIGNvbnRlbnQgPSBbIE9wZW5TU0w6 OkFTTjE6Ok51bGwubmV3KG5pbCkgXQorICAgICAgc2VxID0gT3BlblNTTDo6 QVNOMTo6U2VxdWVuY2UubmV3KGNvbnRlbnQsIDEsIDpJTVBMSUNJVCkKKyAg ICAgIGV4cGVjdGVkID0gJXd7IEExIDAyIDA1IDAwIH0KKyAgICAgIHJhdyA9 IFtleHBlY3RlZC5qb2luKCcnKV0ucGFjaygnSConKQorICAgICAgYXNzZXJ0 X2VxdWFsKHJhdywgc2VxLnRvX2RlcikKKyAgICAgIGFzc2VydF9lcXVhbChy YXcsIE9wZW5TU0w6OkFTTjEuZGVjb2RlKHJhdykudG9fZGVyKQorICAgIGVu ZAorICBlbmQKKworICBkZWYgdGVzdF9jb25zX2ltcGxpY2l0X3RhZ2dpbmdf aW5mX2xlbmd0aAorICAgIGJlZ2luCisgICAgICBjb250ZW50ID0gWyBPcGVu U1NMOjpBU04xOjpOdWxsLm5ldyhuaWwpLAorICAgICAgICAgICAgICAgICAg T3BlblNTTDo6QVNOMTo6RW5kT2ZDb250ZW50Lm5ldygpIF0KKyAgICAgIHNl cSA9IE9wZW5TU0w6OkFTTjE6OlNlcXVlbmNlLm5ldyhjb250ZW50LCAxLCA6 SU1QTElDSVQpCisgICAgICBzZXEuaW5maW5pdGVfbGVuZ3RoID0gdHJ1ZQor ICAgICAgZXhwZWN0ZWQgPSAld3sgQTEgODAgMDUgMDAgMDAgMDAgfQorICAg ICAgcmF3ID0gW2V4cGVjdGVkLmpvaW4oJycpXS5wYWNrKCdIKicpCisgICAg ICBhc3NlcnRfZXF1YWwocmF3LCBzZXEudG9fZGVyKQorICAgICAgYXNzZXJ0 X2VxdWFsKHJhdywgT3BlblNTTDo6QVNOMS5kZWNvZGUocmF3KS50b19kZXIp CisgICAgZW5kCisgIGVuZAorCisgIGRlZiB0ZXN0X29jdGV0X3N0cmluZ19p bmZpbml0ZV9sZW5ndGhfZXhwbGljaXRfdGFnZ2luZworICAgIGJlZ2luCisg ICAgICBvY3RldHMgPSBbIE9wZW5TU0w6OkFTTjE6Ok9jdGV0U3RyaW5nLm5l dygnYWFhJyksCisgICAgICAgICAgICAgICAgIE9wZW5TU0w6OkFTTjE6OkVu ZE9mQ29udGVudC5uZXcoKSBdCisgICAgICBjb25zID0gT3BlblNTTDo6QVNO MTo6Q29uc3RydWN0aXZlLm5ldygKKyAgICAgICAgb2N0ZXRzLAorICAgICAg ICAxLAorICAgICAgICA6RVhQTElDSVQpCisgICAgICBjb25zLmluZmluaXRl X2xlbmd0aCA9IHRydWUKKyAgICAgIGV4cGVjdGVkID0gJXd7IEExIDgwIDI0 IDgwIDA0IDAzIDYxIDYxIDYxIDAwIDAwIH0KKyAgICAgIHJhdyA9IFtleHBl Y3RlZC5qb2luKCcnKV0ucGFjaygnSConKQorICAgICAgYXNzZXJ0X2VxdWFs KHJhdywgY29ucy50b19kZXIpCisgICAgICBhc3NlcnRfZXF1YWwocmF3LCBP cGVuU1NMOjpBU04xLmRlY29kZShyYXcpLnRvX2RlcikKKyAgICBlbmQKKyAg ZW5kCisKKyAgZGVmIHRlc3Rfb2N0ZXRfc3RyaW5nX2luZmluaXRlX2xlbmd0 aF9pbXBsaWNpdF90YWdnaW5nCisgICAgYmVnaW4KKyAgICAgIG9jdGV0cyA9 IFsgT3BlblNTTDo6QVNOMTo6T2N0ZXRTdHJpbmcubmV3KCdhYWEnKSwKKyAg ICAgICAgICAgICAgICAgT3BlblNTTDo6QVNOMTo6RW5kT2ZDb250ZW50Lm5l dygpIF0KKyAgICAgIGNvbnMgPSBPcGVuU1NMOjpBU04xOjpDb25zdHJ1Y3Rp dmUubmV3KAorICAgICAgICBvY3RldHMsCisgICAgICAgIDAsCisgICAgICAg IDpJTVBMSUNJVCkKKyAgICAgIGNvbnMuaW5maW5pdGVfbGVuZ3RoID0gdHJ1 ZQorICAgICAgZXhwZWN0ZWQgPSAld3sgQTAgODAgMDQgMDMgNjEgNjEgNjEg MDAgMDAgfQorICAgICAgcmF3ID0gW2V4cGVjdGVkLmpvaW4oJycpXS5wYWNr KCdIKicpCisgICAgICBhc3NlcnRfZXF1YWwocmF3LCBjb25zLnRvX2RlcikK KyAgICAgIGFzc2VydF9lcXVhbChyYXcsIE9wZW5TU0w6OkFTTjEuZGVjb2Rl KHJhdykudG9fZGVyKQorICAgIGVuZAorICBlbmQKKworICBkZWYgdGVzdF9y ZWN1cnNpdmVfb2N0ZXRfc3RyaW5nX2luZmluaXRlX2xlbmd0aAorICAgIGJl Z2luCisgICAgICBvY3RldHNfc3ViMSA9IFsgT3BlblNTTDo6QVNOMTo6T2N0 ZXRTdHJpbmcubmV3KCJceDAxIiksCisgICAgICAgICAgICAgICAgICAgICAg T3BlblNTTDo6QVNOMTo6RW5kT2ZDb250ZW50Lm5ldygpIF0KKyAgICAgIG9j dGV0c19zdWIyID0gWyBPcGVuU1NMOjpBU04xOjpPY3RldFN0cmluZy5uZXco Ilx4MDIiKSwKKyAgICAgICAgICAgICAgICAgICAgICBPcGVuU1NMOjpBU04x OjpFbmRPZkNvbnRlbnQubmV3KCkgXQorICAgICAgY29udGFpbmVyMSA9IE9w ZW5TU0w6OkFTTjE6OkNvbnN0cnVjdGl2ZS5uZXcoCisgICAgICAgIG9jdGV0 c19zdWIxLAorICAgICAgICBPcGVuU1NMOjpBU04xOjpPQ1RFVF9TVFJJTkcs CisgICAgICAgIG5pbCwKKyAgICAgICAgOlVOSVZFUlNBTCkKKyAgICAgIGNv bnRhaW5lcjEuaW5maW5pdGVfbGVuZ3RoID0gdHJ1ZQorICAgICAgY29udGFp bmVyMiA9IE9wZW5TU0w6OkFTTjE6OkNvbnN0cnVjdGl2ZS5uZXcoCisgICAg ICAgIG9jdGV0c19zdWIyLAorICAgICAgICBPcGVuU1NMOjpBU04xOjpPQ1RF VF9TVFJJTkcsCisgICAgICAgIG5pbCwKKyAgICAgICAgOlVOSVZFUlNBTCkK KyAgICAgIGNvbnRhaW5lcjIuaW5maW5pdGVfbGVuZ3RoID0gdHJ1ZQorICAg ICAgb2N0ZXRzMyA9IE9wZW5TU0w6OkFTTjE6Ok9jdGV0U3RyaW5nLm5ldygi XHgwMyIpCisKKyAgICAgIG9jdGV0cyA9IFsgY29udGFpbmVyMSwgY29udGFp bmVyMiwgb2N0ZXRzMywKKyAgICAgICAgICAgICAgICAgT3BlblNTTDo6QVNO MTo6RW5kT2ZDb250ZW50Lm5ldygpIF0KKyAgICAgIGNvbnMgPSBPcGVuU1NM OjpBU04xOjpDb25zdHJ1Y3RpdmUubmV3KAorICAgICAgICBvY3RldHMsCisg ICAgICAgIE9wZW5TU0w6OkFTTjE6Ok9DVEVUX1NUUklORywKKyAgICAgICAg bmlsLAorICAgICAgICA6VU5JVkVSU0FMKQorICAgICAgY29ucy5pbmZpbml0 ZV9sZW5ndGggPSB0cnVlCisgICAgICBleHBlY3RlZCA9ICV3eyAyNCA4MCAy NCA4MCAwNCAwMSAwMSAwMCAwMCAyNCA4MCAwNCAwMSAwMiAwMCAwMCAwNCAw MSAwMyAwMCAwMCB9CisgICAgICByYXcgPSBbZXhwZWN0ZWQuam9pbignJyld LnBhY2soJ0gqJykKKyAgICAgIGFzc2VydF9lcXVhbChyYXcsIGNvbnMudG9f ZGVyKQorICAgICAgYXNzZXJ0X2VxdWFsKHJhdywgT3BlblNTTDo6QVNOMS5k ZWNvZGUocmF3KS50b19kZXIpCisgICAgZW5kCisgIGVuZAorCisgIGRlZiB0 ZXN0X2JpdF9zdHJpbmdfaW5maW5pdGVfbGVuZ3RoCisgICAgYmVnaW4KKyAg ICAgIGNvbnRlbnQgPSBbIE9wZW5TU0w6OkFTTjE6OkJpdFN0cmluZy5uZXco Ilx4MDEiKSwKKyAgICAgICAgICAgICAgICAgIE9wZW5TU0w6OkFTTjE6OkVu ZE9mQ29udGVudC5uZXcoKSBdCisgICAgICBjb25zID0gT3BlblNTTDo6QVNO MTo6Q29uc3RydWN0aXZlLm5ldygKKyAgICAgICAgY29udGVudCwKKyAgICAg ICAgT3BlblNTTDo6QVNOMTo6QklUX1NUUklORywKKyAgICAgICAgbmlsLAor ICAgICAgICA6VU5JVkVSU0FMKQorICAgICAgY29ucy5pbmZpbml0ZV9sZW5n dGggPSB0cnVlCisgICAgICBleHBlY3RlZCA9ICV3eyAyMyA4MCAwMyAwMiAw MCAwMSAwMCAwMCB9CisgICAgICByYXcgPSBbZXhwZWN0ZWQuam9pbignJyld LnBhY2soJ0gqJykKKyAgICAgIGFzc2VydF9lcXVhbChyYXcsIGNvbnMudG9f ZGVyKQorICAgICAgYXNzZXJ0X2VxdWFsKHJhdywgT3BlblNTTDo6QVNOMS5k ZWNvZGUocmF3KS50b19kZXIpCisgICAgZW5kCisgIGVuZAorICAKIGVuZCBp ZiBkZWZpbmVkPyhPcGVuU1NMKQo= --mimepart_4d03a1f3aaa57_ec3b6be5082b2--