ZGlmZiAtLWdpdCBhL25ldC9pcmRhL2lycXVldWUuYyBiL25ldC9pcmRhL2lycXVldWUuYwppbmRleCAxZDI2Y2QzLi45MjY2MjMzIDEwMDY0NAotLS0gYS9uZXQvaXJkYS9pcnF1ZXVlLmMKKysrIGIvbmV0L2lyZGEvaXJxdWV1ZS5jCkBAIC0xLDUgKzEsNSBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogICAgICAgICAgICAgICAgCisgKgogICogRmlsZW5hbWU6ICAgICAgaXJxdWV1ZS5jCiAgKiBWZXJzaW9uOiAgICAgICAwLjMKICAqIERlc2NyaXB0aW9uOiAgIEdlbmVyYWwgcXVldWUgaW1wbGVtZW50YXRpb24KQEAgLTEwLDI4ICsxMCwyOCBAQAogICogTW9kaWZpZWQgYnk6ICAgRGFnIEJyYXR0bGkgPGRhZ2JAY3MudWl0Lm5vPgogICogTW9kaWZpZWQgYXQ6ICAgVGh1IEphbiAgNCAxNDoyOToxMCBDRVQgMjAwMQogICogTW9kaWZpZWQgYnk6ICAgTWFyYyBaeW5naWVyIDxtenluZ2llckBmcmVlc3VyZi5mcj4KLSAqIAorICoKICAqICAgICBDb3B5cmlnaHQgKEMpIDE5OTgtMTk5OSwgQWFnZSBLdmFsbmVzIDxhYWdlQGNzLnVpdC5ubz4KLSAqICAgICBDb3B5cmlnaHQgKEMpIDE5OTgsIERhZyBCcmF0dGxpLCAKKyAqICAgICBDb3B5cmlnaHQgKEMpIDE5OTgsIERhZyBCcmF0dGxpLAogICogICAgIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogICAgIFRoaXMgY29kZSBpcyB0YWtlbiBmcm9tIHRoZSBWb3J0ZXggT3BlcmF0aW5nIFN5c3RlbSB3cml0dGVuIGJ5IEFhZ2UKICAqICAgICBLdmFsbmVzLiBBYWdlIGhhcyBhZ3JlZWQgdGhhdCB0aGlzIGNvZGUgY2FuIHVzZSB0aGUgR1BMIGxpY2VuY2UsCiAgKiAgICAgYWx0aG91Z2ggaGUgZG9lcyBub3QgdXNlIHRoYXQgbGljZW5jZSBpbiBoaXMgb3duIGNvZGUuCi0gKiAgICAgCisgKgogICogICAgIFRoaXMgY29weXJpZ2h0IGRvZXMgaG93ZXZlciBfbm90XyBpbmNsdWRlIHRoZSBFTEYgaGFzaCgpIGZ1bmN0aW9uCiAgKiAgICAgd2hpY2ggSSBjdXJyZW50bHkgZG9uJ3Qga25vdyB3aGljaCBsaWNlbmNlIG9yIGNvcHlyaWdodCBpdAogICogICAgIGhhcy4gUGxlYXNlIGluZm9ybSBtZSBpZiB5b3Uga25vdy4KLSAqICAgICAgCi0gKiAgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciAKLSAqICAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyAKLSAqICAgICBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiAKKyAqCisgKiAgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiAgICAgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKICAqICAgICB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqICAKKyAqCiAgKiAgICAgTmVpdGhlciBEYWcgQnJhdHRsaSBub3IgVW5pdmVyc2l0eSBvZiBUcm9tc/ggYWRtaXQgbGlhYmlsaXR5IG5vcgotICogICAgIHByb3ZpZGUgd2FycmFudHkgZm9yIGFueSBvZiB0aGlzIHNvZnR3YXJlLiBUaGlzIG1hdGVyaWFsIGlzIAorICogICAgIHByb3ZpZGUgd2FycmFudHkgZm9yIGFueSBvZiB0aGlzIHNvZnR3YXJlLiBUaGlzIG1hdGVyaWFsIGlzCiAgKiAgICAgcHJvdmlkZWQgIkFTLUlTIiBhbmQgYXQgbm8gY2hhcmdlLgotICogICAgIAorICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyoKQEAgLTIxMyw3ICsyMTMsNyBAQAogewogCV9fdTMyIGggPSAwOwogCV9fdTMyIGc7Ci0JCisKIAl3aGlsZSgqbmFtZSkgewogCQloID0gKGg8PDQpICsgKm5hbWUrKzsKIAkJaWYgKChnID0gKGggJiAweGYwMDAwMDAwKSkpCkBAIC0yMzEsNyArMjMxLDcgQEAKICAqLwogc3RhdGljIHZvaWQgZW5xdWV1ZV9maXJzdChpcmRhX3F1ZXVlX3QgKipxdWV1ZSwgaXJkYV9xdWV1ZV90KiBlbGVtZW50KQogewotCQorCiAJSVJEQV9ERUJVRyggNCwgIiVzKClcbiIsIF9fRlVOQ1RJT05fXyk7CiAKIAkvKgpAQCAtMjQyLDcgKzI0Miw3IEBACiAJCSAqIFF1ZXVlIGlzIGVtcHR5LiAgSW5zZXJ0IG9uZSBlbGVtZW50IGludG8gdGhlIHF1ZXVlLgogCQkgKi8KIAkJZWxlbWVudC0+cV9uZXh0ID0gZWxlbWVudC0+cV9wcmV2ID0gKnF1ZXVlID0gZWxlbWVudDsKLQkJCisKIAl9IGVsc2UgewogCQkvKgogCQkgKiBRdWV1ZSBpcyBub3QgZW1wdHkuICBJbnNlcnQgZWxlbWVudCBpbnRvIGZyb250IG9mIHF1ZXVlLgpAQCAtMjY3LDIwICsyNjcsMjAgQEAKIAlpcmRhX3F1ZXVlX3QgKnJldDsKIAogCUlSREFfREVCVUcoIDQsICJkZXF1ZXVlX2ZpcnN0KClcbiIpOwotCQorCiAJLyoKIAkgKiBTZXQgcmV0dXJuIHZhbHVlCiAJICovCiAJcmV0ID0gICpxdWV1ZTsKLQkKKwogCWlmICggKnF1ZXVlID09IE5VTEwgKSB7CiAJCS8qCiAJCSAqIFF1ZXVlIHdhcyBlbXB0eS4KIAkJICovCiAJfSBlbHNlIGlmICggKCpxdWV1ZSktPnFfbmV4dCA9PSAqcXVldWUgKSB7Ci0JCS8qIAorCQkvKgogCQkgKiAgUXVldWUgb25seSBjb250YWluZWQgYSBzaW5nbGUgZWxlbWVudC4gSXQgd2lsbCBub3cgYmUKLQkJICogIGVtcHR5LiAgCisJCSAqICBlbXB0eS4KIAkJICovCiAJCSpxdWV1ZSA9IE5VTEw7CiAJfSBlbHNlIHsKQEAgLTI5MSw3ICsyOTEsNyBAQAogCQkoKnF1ZXVlKS0+cV9uZXh0LT5xX3ByZXYgPSAoKnF1ZXVlKS0+cV9wcmV2OwogCQkqcXVldWUgPSAoKnF1ZXVlKS0+cV9uZXh0OwogCX0KLQkKKwogCS8qCiAJICogUmV0dXJuIHRoZSByZW1vdmVkIGVudHJ5IChvciBOVUxMIG9mIHF1ZXVlIHdhcyBlbXB0eSkuCiAJICovCkBAIC0zMDYsMjUgKzMwNiwyNSBAQAogc3RhdGljIGlyZGFfcXVldWVfdCAqZGVxdWV1ZV9nZW5lcmFsKGlyZGFfcXVldWVfdCAqKnF1ZXVlLCBpcmRhX3F1ZXVlX3QqIGVsZW1lbnQpCiB7CiAJaXJkYV9xdWV1ZV90ICpyZXQ7Ci0JCisKIAlJUkRBX0RFQlVHKCA0LCAiZGVxdWV1ZV9nZW5lcmFsKClcbiIpOwotCQorCiAJLyoKIAkgKiBTZXQgcmV0dXJuIHZhbHVlCiAJICovCiAJcmV0ID0gICpxdWV1ZTsKLQkJCisKIAlpZiAoICpxdWV1ZSA9PSBOVUxMICkgewogCQkvKgogCQkgKiBRdWV1ZSB3YXMgZW1wdHkuCiAJCSAqLwogCX0gZWxzZSBpZiAoICgqcXVldWUpLT5xX25leHQgPT0gKnF1ZXVlICkgewotCQkvKiAKKwkJLyoKIAkJICogIFF1ZXVlIG9ubHkgY29udGFpbmVkIGEgc2luZ2xlIGVsZW1lbnQuIEl0IHdpbGwgbm93IGJlCi0JCSAqICBlbXB0eS4gIAorCQkgKiAgZW1wdHkuCiAJCSAqLwogCQkqcXVldWUgPSBOVUxMOwotCQkKKwogCX0gZWxzZSB7CiAJCS8qCiAJCSAqICBSZW1vdmUgc3BlY2lmaWMgZWxlbWVudC4KQEAgLTMzNCw3ICszMzQsNyBAQAogCQlpZiAoICgqcXVldWUpID09IGVsZW1lbnQpCiAJCQkoKnF1ZXVlKSA9IGVsZW1lbnQtPnFfbmV4dDsKIAl9Ci0JCisKIAkvKgogCSAqIFJldHVybiB0aGUgcmVtb3ZlZCBlbnRyeSAob3IgTlVMTCBvZiBxdWV1ZSB3YXMgZW1wdHkpLgogCSAqLwpAQCAtMzUyLDcgKzM1Miw3IEBACiBoYXNoYmluX3QgKmhhc2hiaW5fbmV3KGludCB0eXBlKQogewogCWhhc2hiaW5fdCogaGFzaGJpbjsKLQkKKwogCS8qCiAJICogQWxsb2NhdGUgbmV3IGhhc2hiaW4KIAkgKi8KQEAgLTM4MCw4ICszODAsOCBAQAogLyoKICAqIEZ1bmN0aW9uIGhhc2hiaW5fZGVsZXRlIChoYXNoYmluLCBmcmVlX2Z1bmMpCiAgKgotICogICAgRGVzdHJveSBoYXNoYmluLCB0aGUgZnJlZV9mdW5jIGNhbiBiZSBhIHVzZXIgc3VwcGxpZWQgc3BlY2lhbCByb3V0aW5lIAotICogICAgZm9yIGRlYWxsb2NhdGluZyB0aGlzIHN0cnVjdHVyZSBpZiBpdCdzIGNvbXBsZXguIElmIG5vdCB0aGUgdXNlciBjYW4gCisgKiAgICBEZXN0cm95IGhhc2hiaW4sIHRoZSBmcmVlX2Z1bmMgY2FuIGJlIGEgdXNlciBzdXBwbGllZCBzcGVjaWFsIHJvdXRpbmUKKyAqICAgIGZvciBkZWFsbG9jYXRpbmcgdGhpcyBzdHJ1Y3R1cmUgaWYgaXQncyBjb21wbGV4LiBJZiBub3QgdGhlIHVzZXIgY2FuCiAgKiAgICBqdXN0IHN1cHBseSBrZnJlZSwgd2hpY2ggc2hvdWxkIHRha2UgY2FyZSBvZiB0aGUgam9iLgogICovCiBpbnQgaGFzaGJpbl9kZWxldGUoIGhhc2hiaW5fdCogaGFzaGJpbiwgRlJFRV9GVU5DIGZyZWVfZnVuYykKQEAgLTM5Miw3ICszOTIsNyBAQAogCiAJSVJEQV9BU1NFUlQoaGFzaGJpbiAhPSBOVUxMLCByZXR1cm4gLTE7KTsKIAlJUkRBX0FTU0VSVChoYXNoYmluLT5tYWdpYyA9PSBIQl9NQUdJQywgcmV0dXJuIC0xOyk7Ci0JCisKIAkvKiBTeW5jaHJvbml6ZSAqLwogCWlmICggaGFzaGJpbi0+aGJfdHlwZSAmIEhCX0xPQ0sgKSB7CiAJCXNwaW5fbG9ja19pcnFzYXZlKCZoYXNoYmluLT5oYl9zcGlubG9jaywgZmxhZ3MpOwpAQCAtNDA3LDExICs0MDcsMTEgQEAKIAkJd2hpbGUgKHF1ZXVlICkgewogCQkJaWYgKGZyZWVfZnVuYykKIAkJCQkoKmZyZWVfZnVuYykocXVldWUpOwotCQkJcXVldWUgPSBkZXF1ZXVlX2ZpcnN0KCAKKwkJCXF1ZXVlID0gZGVxdWV1ZV9maXJzdCgKIAkJCQkoaXJkYV9xdWV1ZV90KiopICZoYXNoYmluLT5oYl9xdWV1ZVtpXSk7CiAJCX0KIAl9Ci0JCisKIAkvKiBDbGVhbnVwIGxvY2FsIGRhdGEgKi8KIAloYXNoYmluLT5oYl9jdXJyZW50ID0gTlVMTDsKIAloYXNoYmluLT5tYWdpYyA9IH5IQl9NQUdJQzsKQEAgLTQzOCw3ICs0MzgsNyBAQAogICogICAgSW5zZXJ0IGFuIGVudHJ5IGludG8gdGhlIGhhc2hiaW4KICAqCiAgKi8KLXZvaWQgaGFzaGJpbl9pbnNlcnQoaGFzaGJpbl90KiBoYXNoYmluLCBpcmRhX3F1ZXVlX3QqIGVudHJ5LCBsb25nIGhhc2h2LCAKK3ZvaWQgaGFzaGJpbl9pbnNlcnQoaGFzaGJpbl90KiBoYXNoYmluLCBpcmRhX3F1ZXVlX3QqIGVudHJ5LCBsb25nIGhhc2h2LAogCQkgICAgY29uc3QgY2hhciogbmFtZSkKIHsKIAl1bnNpZ25lZCBsb25nIGZsYWdzID0gMDsKQEAgLTQ2MCwxNCArNDYwLDE0IEBACiAJaWYgKCBoYXNoYmluLT5oYl90eXBlICYgSEJfTE9DSyApIHsKIAkJc3Bpbl9sb2NrX2lycXNhdmUoJmhhc2hiaW4tPmhiX3NwaW5sb2NrLCBmbGFncyk7CiAJfSAvKiBEZWZhdWx0IGlzIG5vLWxvY2sgICovCi0JCisKIAkvKgogCSAqIFN0b3JlIG5hbWUgYW5kIGtleQogCSAqLwogCWVudHJ5LT5xX2hhc2ggPSBoYXNodjsKIAlpZiAoIG5hbWUgKQogCQlzdHJsY3B5KCBlbnRyeS0+cV9uYW1lLCBuYW1lLCBzaXplb2YoZW50cnktPnFfbmFtZSkpOwotCQorCiAJLyoKIAkgKiBJbnNlcnQgbmV3IGVudHJ5IGZpcnN0CiAJICovCkBAIC00ODIsNyArNDgyLDcgQEAKIH0KIEVYUE9SVF9TWU1CT0woaGFzaGJpbl9pbnNlcnQpOwogCi0vKiAKKy8qCiAgKiAgRnVuY3Rpb24gaGFzaGJpbl9yZW1vdmVfZmlyc3QgKGhhc2hiaW4pCiAgKgogICogICAgUmVtb3ZlIGZpcnN0IGVudHJ5IG9mIHRoZSBoYXNoYmluCkBAIC01MzcsNyArNTM3LDcgQEAKIH0KIAogCi0vKiAKKy8qCiAgKiAgRnVuY3Rpb24gaGFzaGJpbl9yZW1vdmUgKGhhc2hiaW4sIGhhc2h2LCBuYW1lKQogICoKICAqICAgIFJlbW92ZSBlbnRyeSB3aXRoIHRoZSBnaXZlbiBuYW1lCkBAIC01NjEsNyArNTYxLDcgQEAKIAogCUlSREFfQVNTRVJUKCBoYXNoYmluICE9IE5VTEwsIHJldHVybiBOVUxMOyk7CiAJSVJEQV9BU1NFUlQoIGhhc2hiaW4tPm1hZ2ljID09IEhCX01BR0lDLCByZXR1cm4gTlVMTDspOwotCQorCiAJLyoKIAkgKiBMb2NhdGUgaGFzaGJpbgogCSAqLwpAQCAtNjAxLDcgKzYwMSw3IEBACiAJCQllbnRyeSA9IGVudHJ5LT5xX25leHQ7CiAJCX0gd2hpbGUgKCBlbnRyeSAhPSBoYXNoYmluLT5oYl9xdWV1ZVsgYmluIF0gKTsKIAl9Ci0JCisKIAkvKgogCSAqIElmIGVudHJ5IHdhcyBmb3VuZCwgZGVxdWV1ZSBpdAogCSAqLwpAQCAtNjIyLDE4ICs2MjIsMTggQEAKIAlpZiAoIGhhc2hiaW4tPmhiX3R5cGUgJiBIQl9MT0NLICkgewogCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZoYXNoYmluLT5oYl9zcGlubG9jaywgZmxhZ3MpOwogCX0gLyogRGVmYXVsdCBpcyBuby1sb2NrICAqLwotICAgICAgIAotCQorCisKIAkvKiBSZXR1cm4gKi8KLQlpZiAoIGZvdW5kICkgCisJaWYgKCBmb3VuZCApCiAJCXJldHVybiBlbnRyeTsKIAllbHNlCiAJCXJldHVybiBOVUxMOwotCQorCiB9CiBFWFBPUlRfU1lNQk9MKGhhc2hiaW5fcmVtb3ZlKTsKIAotLyogCisvKgogICogIEZ1bmN0aW9uIGhhc2hiaW5fcmVtb3ZlX3RoaXMgKGhhc2hiaW4sIGVudHJ5KQogICoKICAqICAgIFJlbW92ZSBlbnRyeSB3aXRoIHRoZSBnaXZlbiBuYW1lCkBAIC02NTUsNyArNjU1LDcgQEAKIAlJUkRBX0FTU0VSVCggaGFzaGJpbiAhPSBOVUxMLCByZXR1cm4gTlVMTDspOwogCUlSREFfQVNTRVJUKCBoYXNoYmluLT5tYWdpYyA9PSBIQl9NQUdJQywgcmV0dXJuIE5VTEw7KTsKIAlJUkRBX0FTU0VSVCggZW50cnkgIT0gTlVMTCwgcmV0dXJuIE5VTEw7KTsKLQkKKwogCS8qIFN5bmNocm9uaXplICovCiAJaWYgKCBoYXNoYmluLT5oYl90eXBlICYgSEJfTE9DSyApIHsKIAkJc3Bpbl9sb2NrX2lycXNhdmUoJmhhc2hiaW4tPmhiX3NwaW5sb2NrLCBmbGFncyk7CkBAIC03MjIsNyArNzIyLDcgQEAKIAlpZiAoIG5hbWUgKQogCQloYXNodiA9IGhhc2goIG5hbWUgKTsKIAliaW4gPSBHRVRfSEFTSEJJTiggaGFzaHYgKTsKLQkKKwogCS8qCiAJICogU2VhcmNoIGZvciBlbnRyeQogCSAqLwpAQCAtODI5LDcgKzgyOSw3IEBACiAgKiAgICBjYWxsZWQgYmVmb3JlIGFueSBjYWxscyB0byBoYXNoYmluX2dldF9uZXh0KCkhCiAgKgogICovCi1pcmRhX3F1ZXVlX3QgKmhhc2hiaW5fZ2V0X2ZpcnN0KCBoYXNoYmluX3QqIGhhc2hiaW4pIAoraXJkYV9xdWV1ZV90ICpoYXNoYmluX2dldF9maXJzdCggaGFzaGJpbl90KiBoYXNoYmluKQogewogCWlyZGFfcXVldWVfdCAqZW50cnk7CiAJaW50IGk7CkBAIC04NjAsNyArODYwLDcgQEAKICAqICAgIEdldCBuZXh0IGl0ZW0gaW4gaGFzaGJpbi4gQSBzZXJpZXMgb2YgaGFzaGJpbl9nZXRfbmV4dCgpIGNhbGxzIG11c3QKICAqICAgIGJlIHN0YXJ0ZWQgYnkgYSBjYWxsIHRvIGhhc2hiaW5fZ2V0X2ZpcnN0KCkuIFRoZSBmdW5jdGlvbiByZXR1cm5zCiAgKiAgICBOVUxMIHdoZW4gYWxsIGl0ZW1zIGhhdmUgYmVlbiB0cmF2ZXJzZWQKLSAqIAorICoKICAqIFRoZSBjb250ZXh0IG9mIHRoZSBzZWFyY2ggaXMgc3RvcmVkIHdpdGhpbiB0aGUgaGFzaGJpbiwgc28geW91IG11c3QKICAqIHByb3RlY3QgeW91cnNlbGYgZnJvbSBjb25jdXJyZW50IGVudW1lcmF0aW9ucy4gLSBKZWFuIElJCiAgKi8KQEAgLTg3NiwxMyArODc2LDEzIEBACiAJaWYgKCBoYXNoYmluLT5oYl9jdXJyZW50ID09IE5VTEwpIHsKIAkJSVJEQV9BU1NFUlQoIGhhc2hiaW4tPmhiX2N1cnJlbnQgIT0gTlVMTCwgcmV0dXJuIE5VTEw7KTsKIAkJcmV0dXJuIE5VTEw7Ci0JfQkKKwl9CiAJZW50cnkgPSBoYXNoYmluLT5oYl9jdXJyZW50LT5xX25leHQ7CiAJYmluID0gR0VUX0hBU0hCSU4oIGVudHJ5LT5xX2hhc2gpOwogCi0JLyogIAorCS8qCiAJICogIE1ha2Ugc3VyZSB0aGF0IHdlIGFyZSBub3QgYmFjayBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBxdWV1ZQotCSAqICBhZ2FpbiAKKwkgKiAgYWdhaW4KIAkgKi8KIAlpZiAoIGVudHJ5ICE9IGhhc2hiaW4tPmhiX3F1ZXVlWyBiaW4gXSkgewogCQloYXNoYmluLT5oYl9jdXJyZW50ID0gZW50cnk7CkBAIC04OTUsNyArODk1LDcgQEAKIAkgKi8KIAlpZiAoIGJpbiA+PSBIQVNIQklOX1NJWkUpCiAJCXJldHVybiBOVUxMOwotCQorCiAJLyoKIAkgKiAgTW92ZSB0byBuZXh0IHF1ZXVlIGluIGhhc2hiaW4KIAkgKi8KQEAgLTkwNCw3ICs5MDQsNyBAQAogCQllbnRyeSA9IGhhc2hiaW4tPmhiX3F1ZXVlWyBpXTsKIAkJaWYgKCBlbnRyeSkgewogCQkJaGFzaGJpbi0+aGJfY3VycmVudCA9IGVudHJ5OwotCQkJCisKIAkJCXJldHVybiBlbnRyeTsKIAkJfQogCX0K