ZGlmZiAtLWdpdCBhL25ldC9pcmRhL2lyc3lzY3RsLmMgYi9uZXQvaXJkYS9pcnN5c2N0bC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiMWM0MTkKLS0tIC9kZXYvbnVsbAorKysgYi9uZXQvaXJkYS9pcnN5c2N0bC5jCkBAIC0wLDAgKzEsMjk3IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAKKyAqIEZpbGVuYW1lOiAgICAgIGlyc3lzY3RsLmMKKyAqIFZlcnNpb246ICAgICAgIDEuMAorICogRGVzY3JpcHRpb246ICAgU3lzY3RsIGludGVyZmFjZSBmb3IgSXJEQQorICogU3RhdHVzOiAgICAgICAgRXhwZXJpbWVudGFsLgorICogQXV0aG9yOiAgICAgICAgRGFnIEJyYXR0bGkgPGRhZ2JAY3MudWl0Lm5vPgorICogQ3JlYXRlZCBhdDogICAgU3VuIE1heSAyNCAyMjoxMjowNiAxOTk4CisgKiBNb2RpZmllZCBhdDogICBGcmkgSnVuICA0IDAyOjUwOjE1IDE5OTkKKyAqIE1vZGlmaWVkIGJ5OiAgIERhZyBCcmF0dGxpIDxkYWdiQGNzLnVpdC5ubz4KKyAqIAorICogICAgIENvcHlyaWdodCAoYykgMTk5NywgMTk5OSBEYWcgQnJhdHRsaSwgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqICAgICBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwMSBKZWFuIFRvdXJyaWxoZXMgPGp0QGhwbC5ocC5jb20+CisgKiAgICAgIAorICogICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgCisgKiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgCisgKiAgICAgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgCisgKiAgICAgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKiAgCisgKiAgICAgTmVpdGhlciBEYWcgQnJhdHRsaSBub3IgVW5pdmVyc2l0eSBvZiBUcm9tc/ggYWRtaXQgbGlhYmlsaXR5IG5vcgorICogICAgIHByb3ZpZGUgd2FycmFudHkgZm9yIGFueSBvZiB0aGlzIHNvZnR3YXJlLiBUaGlzIG1hdGVyaWFsIGlzIAorICogICAgIHByb3ZpZGVkICJBUy1JUyIgYW5kIGF0IG5vIGNoYXJnZS4KKyAqICAgICAKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorI2luY2x1ZGUgPGxpbnV4L21tLmg+CisjaW5jbHVkZSA8bGludXgvY3R5cGUuaD4KKyNpbmNsdWRlIDxsaW51eC9zeXNjdGwuaD4KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisKKyNpbmNsdWRlIDxuZXQvaXJkYS9pcmRhLmg+CQkvKiBpcmRhX2RlYnVnICovCisjaW5jbHVkZSA8bmV0L2lyZGEvaXJpYXNfb2JqZWN0Lmg+CisKKyNkZWZpbmUgTkVUX0lSREEgNDEyIC8qIFJhbmRvbSBudW1iZXIgKi8KK2VudW0geyBESVNDT1ZFUlk9MSwgREVWTkFNRSwgREVCVUcsIEZBU1RfUE9MTCwgRElTQ09WRVJZX1NMT1RTLAorICAgICAgIERJU0NPVkVSWV9USU1FT1VULCBTTE9UX1RJTUVPVVQsIE1BWF9CQVVEX1JBVEUsIE1JTl9UWF9UVVJOX1RJTUUsCisgICAgICAgTUFYX1RYX0RBVEFfU0laRSwgTUFYX1RYX1dJTkRPVywgTUFYX05PUkVQTFlfVElNRSwgV0FSTl9OT1JFUExZX1RJTUUsCisgICAgICAgTEFQX0tFRVBBTElWRV9USU1FIH07CisKK2V4dGVybiBpbnQgIHN5c2N0bF9kaXNjb3Zlcnk7CitleHRlcm4gaW50ICBzeXNjdGxfZGlzY292ZXJ5X3Nsb3RzOworZXh0ZXJuIGludCAgc3lzY3RsX2Rpc2NvdmVyeV90aW1lb3V0OworZXh0ZXJuIGludCAgc3lzY3RsX3Nsb3RfdGltZW91dDsKK2V4dGVybiBpbnQgIHN5c2N0bF9mYXN0X3BvbGxfaW5jcmVhc2U7CitleHRlcm4gY2hhciBzeXNjdGxfZGV2bmFtZVtdOworZXh0ZXJuIGludCAgc3lzY3RsX21heF9iYXVkX3JhdGU7CitleHRlcm4gaW50ICBzeXNjdGxfbWluX3R4X3R1cm5fdGltZTsKK2V4dGVybiBpbnQgIHN5c2N0bF9tYXhfdHhfZGF0YV9zaXplOworZXh0ZXJuIGludCAgc3lzY3RsX21heF90eF93aW5kb3c7CitleHRlcm4gaW50ICBzeXNjdGxfbWF4X25vcmVwbHlfdGltZTsKK2V4dGVybiBpbnQgIHN5c2N0bF93YXJuX25vcmVwbHlfdGltZTsKK2V4dGVybiBpbnQgIHN5c2N0bF9sYXBfa2VlcGFsaXZlX3RpbWU7CisKKy8qIHRoaXMgaXMgbmVlZGVkIGZvciB0aGUgcHJvY19kb2ludHZlY19taW5tYXggLSBKZWFuIElJICovCitzdGF0aWMgaW50IG1heF9kaXNjb3Zlcnlfc2xvdHMgPSAxNjsJCS8qID8/PyAqLworc3RhdGljIGludCBtaW5fZGlzY292ZXJ5X3Nsb3RzID0gMTsKKy8qIElyTEFQIDYuMTMuMiBzYXlzIDI1bXMgdG8gMTArNzBtcyAtIGFsbG93IGhpZ2hlciBzaW5jZSBzb21lIGRldmljZXMKKyAqIHNlZW1zIHRvIHJlcXVpcmUgaXQuIChmcm9tIERhZydzIGNvbW1lbnQpICovCitzdGF0aWMgaW50IG1heF9zbG90X3RpbWVvdXQgPSAxNjA7CitzdGF0aWMgaW50IG1pbl9zbG90X3RpbWVvdXQgPSAyMDsKK3N0YXRpYyBpbnQgbWF4X21heF9iYXVkX3JhdGUgPSAxNjAwMDAwMDsJLyogU2VlIHFvcy5jIC0gSXJMQVAgc3BlYyAqLworc3RhdGljIGludCBtaW5fbWF4X2JhdWRfcmF0ZSA9IDI0MDA7CitzdGF0aWMgaW50IG1heF9taW5fdHhfdHVybl90aW1lID0gMTAwMDA7CS8qIFNlZSBxb3MuYyAtIElyTEFQIHNwZWMgKi8KK3N0YXRpYyBpbnQgbWluX21pbl90eF90dXJuX3RpbWU7CitzdGF0aWMgaW50IG1heF9tYXhfdHhfZGF0YV9zaXplID0gMjA0ODsJCS8qIFNlZSBxb3MuYyAtIElyTEFQIHNwZWMgKi8KK3N0YXRpYyBpbnQgbWluX21heF90eF9kYXRhX3NpemUgPSA2NDsKK3N0YXRpYyBpbnQgbWF4X21heF90eF93aW5kb3cgPSA3OwkJLyogU2VlIHFvcy5jIC0gSXJMQVAgc3BlYyAqLworc3RhdGljIGludCBtaW5fbWF4X3R4X3dpbmRvdyA9IDE7CitzdGF0aWMgaW50IG1heF9tYXhfbm9yZXBseV90aW1lID0gNDA7CQkvKiBTZWUgcW9zLmMgLSBJckxBUCBzcGVjICovCitzdGF0aWMgaW50IG1pbl9tYXhfbm9yZXBseV90aW1lID0gMzsKK3N0YXRpYyBpbnQgbWF4X3dhcm5fbm9yZXBseV90aW1lID0gMzsJCS8qIDNzID09IHN0YW5kYXJkICovCitzdGF0aWMgaW50IG1pbl93YXJuX25vcmVwbHlfdGltZSA9IDE7CQkvKiAxcyA9PSBtaW4gV0RfVElNRVIgKi8KK3N0YXRpYyBpbnQgbWF4X2xhcF9rZWVwYWxpdmVfdGltZSA9IDEwMDAwOwkvKiAxMHMgKi8KK3N0YXRpYyBpbnQgbWluX2xhcF9rZWVwYWxpdmVfdGltZSA9IDEwMDsJLyogMTAwdXMgKi8KKy8qIEZvciBvdGhlciBzeXNjdGwsIEkndmUgbm8gaWRlYSBvZiB0aGUgcmFuZ2UuIE1heWJlIERhZyBjb3VsZCBoZWxwCisgKiB1cyBvbiB0aGF0IC0gSmVhbiBJSSAqLworCitzdGF0aWMgaW50IGRvX2Rldm5hbWUoY3RsX3RhYmxlICp0YWJsZSwgaW50IHdyaXRlLCBzdHJ1Y3QgZmlsZSAqZmlscCwKKwkJICAgICAgdm9pZCBfX3VzZXIgKmJ1ZmZlciwgc2l6ZV90ICpsZW5wLCBsb2ZmX3QgKnBwb3MpCit7CisJaW50IHJldDsKKworCXJldCA9IHByb2NfZG9zdHJpbmcodGFibGUsIHdyaXRlLCBmaWxwLCBidWZmZXIsIGxlbnAsIHBwb3MpOworCWlmIChyZXQgPT0gMCAmJiB3cml0ZSkgeworCQlzdHJ1Y3QgaWFzX3ZhbHVlICp2YWw7CisKKwkJdmFsID0gaXJpYXNfbmV3X3N0cmluZ192YWx1ZShzeXNjdGxfZGV2bmFtZSk7CisJCWlmICh2YWwpCisJCQlpcmlhc19vYmplY3RfY2hhbmdlX2F0dHJpYnV0ZSgiRGV2aWNlIiwgIkRldmljZU5hbWUiLCB2YWwpOworCX0KKwlyZXR1cm4gcmV0OworfQorCisvKiBPbmUgZmlsZSAqLworc3RhdGljIGN0bF90YWJsZSBpcmRhX3RhYmxlW10gPSB7CisJeworCQkuY3RsX25hbWUJPSBESVNDT1ZFUlksCisJCS5wcm9jbmFtZQk9ICJkaXNjb3ZlcnkiLAorCQkuZGF0YQkJPSAmc3lzY3RsX2Rpc2NvdmVyeSwKKwkJLm1heGxlbgkJPSBzaXplb2YoaW50KSwKKwkJLm1vZGUJCT0gMDY0NCwKKwkJLnByb2NfaGFuZGxlcgk9ICZwcm9jX2RvaW50dmVjCisJfSwKKwl7CisJCS5jdGxfbmFtZQk9IERFVk5BTUUsCisJCS5wcm9jbmFtZQk9ICJkZXZuYW1lIiwKKwkJLmRhdGEJCT0gc3lzY3RsX2Rldm5hbWUsCisJCS5tYXhsZW4JCT0gNjUsCisJCS5tb2RlCQk9IDA2NDQsCisJCS5wcm9jX2hhbmRsZXIJPSAmZG9fZGV2bmFtZSwKKwkJLnN0cmF0ZWd5CT0gJnN5c2N0bF9zdHJpbmcKKwl9LAorI2lmZGVmIENPTkZJR19JUkRBX0RFQlVHCisgICAgICAgIHsKKwkJLmN0bF9uYW1lCT0gREVCVUcsCisJCS5wcm9jbmFtZQk9ICJkZWJ1ZyIsCisJCS5kYXRhCQk9ICZpcmRhX2RlYnVnLAorCQkubWF4bGVuCQk9IHNpemVvZihpbnQpLAorCQkubW9kZQkJPSAwNjQ0LAorCQkucHJvY19oYW5kbGVyCT0gJnByb2NfZG9pbnR2ZWMKKwl9LAorI2VuZGlmCisjaWZkZWYgQ09ORklHX0lSREFfRkFTVF9SUgorICAgICAgICB7CisJCS5jdGxfbmFtZQk9IEZBU1RfUE9MTCwKKwkJLnByb2NuYW1lCT0gImZhc3RfcG9sbF9pbmNyZWFzZSIsCisJCS5kYXRhCQk9ICZzeXNjdGxfZmFzdF9wb2xsX2luY3JlYXNlLAorCQkubWF4bGVuCQk9IHNpemVvZihpbnQpLAorCQkubW9kZQkJPSAwNjQ0LAorCQkucHJvY19oYW5kbGVyCT0gJnByb2NfZG9pbnR2ZWMKKwl9LAorI2VuZGlmCisJeworCQkuY3RsX25hbWUJPSBESVNDT1ZFUllfU0xPVFMsCisJCS5wcm9jbmFtZQk9ICJkaXNjb3Zlcnlfc2xvdHMiLAorCQkuZGF0YQkJPSAmc3lzY3RsX2Rpc2NvdmVyeV9zbG90cywKKwkJLm1heGxlbgkJPSBzaXplb2YoaW50KSwKKwkJLm1vZGUJCT0gMDY0NCwKKwkJLnByb2NfaGFuZGxlcgk9ICZwcm9jX2RvaW50dmVjX21pbm1heCwKKwkJLnN0cmF0ZWd5CT0gJnN5c2N0bF9pbnR2ZWMsCisJCS5leHRyYTEJCT0gJm1pbl9kaXNjb3Zlcnlfc2xvdHMsCisJCS5leHRyYTIJCT0gJm1heF9kaXNjb3Zlcnlfc2xvdHMKKwl9LAorCXsKKwkJLmN0bF9uYW1lCT0gRElTQ09WRVJZX1RJTUVPVVQsCisJCS5wcm9jbmFtZQk9ICJkaXNjb3ZlcnlfdGltZW91dCIsCisJCS5kYXRhCQk9ICZzeXNjdGxfZGlzY292ZXJ5X3RpbWVvdXQsCisJCS5tYXhsZW4JCT0gc2l6ZW9mKGludCksCisJCS5tb2RlCQk9IDA2NDQsCisJCS5wcm9jX2hhbmRsZXIJPSAmcHJvY19kb2ludHZlYworCX0sCisJeworCQkuY3RsX25hbWUJPSBTTE9UX1RJTUVPVVQsCisJCS5wcm9jbmFtZQk9ICJzbG90X3RpbWVvdXQiLAorCQkuZGF0YQkJPSAmc3lzY3RsX3Nsb3RfdGltZW91dCwKKwkJLm1heGxlbgkJPSBzaXplb2YoaW50KSwKKwkJLm1vZGUJCT0gMDY0NCwKKwkJLnByb2NfaGFuZGxlcgk9ICZwcm9jX2RvaW50dmVjX21pbm1heCwKKwkJLnN0cmF0ZWd5CT0gJnN5c2N0bF9pbnR2ZWMsCisJCS5leHRyYTEJCT0gJm1pbl9zbG90X3RpbWVvdXQsCisJCS5leHRyYTIJCT0gJm1heF9zbG90X3RpbWVvdXQKKwl9LAorCXsKKwkJLmN0bF9uYW1lCT0gTUFYX0JBVURfUkFURSwKKwkJLnByb2NuYW1lCT0gIm1heF9iYXVkX3JhdGUiLAorCQkuZGF0YQkJPSAmc3lzY3RsX21heF9iYXVkX3JhdGUsCisJCS5tYXhsZW4JCT0gc2l6ZW9mKGludCksCisJCS5tb2RlCQk9IDA2NDQsCisJCS5wcm9jX2hhbmRsZXIJPSAmcHJvY19kb2ludHZlY19taW5tYXgsCisJCS5zdHJhdGVneQk9ICZzeXNjdGxfaW50dmVjLAorCQkuZXh0cmExCQk9ICZtaW5fbWF4X2JhdWRfcmF0ZSwKKwkJLmV4dHJhMgkJPSAmbWF4X21heF9iYXVkX3JhdGUKKwl9LAorCXsKKwkJLmN0bF9uYW1lCT0gTUlOX1RYX1RVUk5fVElNRSwKKwkJLnByb2NuYW1lCT0gIm1pbl90eF90dXJuX3RpbWUiLAorCQkuZGF0YQkJPSAmc3lzY3RsX21pbl90eF90dXJuX3RpbWUsCisJCS5tYXhsZW4JCT0gc2l6ZW9mKGludCksCisJCS5tb2RlCQk9IDA2NDQsCisJCS5wcm9jX2hhbmRsZXIJPSAmcHJvY19kb2ludHZlY19taW5tYXgsCisJCS5zdHJhdGVneQk9ICZzeXNjdGxfaW50dmVjLAorCQkuZXh0cmExCQk9ICZtaW5fbWluX3R4X3R1cm5fdGltZSwKKwkJLmV4dHJhMgkJPSAmbWF4X21pbl90eF90dXJuX3RpbWUKKwl9LAorCXsKKwkJLmN0bF9uYW1lCT0gTUFYX1RYX0RBVEFfU0laRSwKKwkJLnByb2NuYW1lCT0gIm1heF90eF9kYXRhX3NpemUiLAorCQkuZGF0YQkJPSAmc3lzY3RsX21heF90eF9kYXRhX3NpemUsCisJCS5tYXhsZW4JCT0gc2l6ZW9mKGludCksCisJCS5tb2RlCQk9IDA2NDQsCisJCS5wcm9jX2hhbmRsZXIJPSAmcHJvY19kb2ludHZlY19taW5tYXgsCisJCS5zdHJhdGVneQk9ICZzeXNjdGxfaW50dmVjLAorCQkuZXh0cmExCQk9ICZtaW5fbWF4X3R4X2RhdGFfc2l6ZSwKKwkJLmV4dHJhMgkJPSAmbWF4X21heF90eF9kYXRhX3NpemUKKwl9LAorCXsKKwkJLmN0bF9uYW1lCT0gTUFYX1RYX1dJTkRPVywKKwkJLnByb2NuYW1lCT0gIm1heF90eF93aW5kb3ciLAorCQkuZGF0YQkJPSAmc3lzY3RsX21heF90eF93aW5kb3csCisJCS5tYXhsZW4JCT0gc2l6ZW9mKGludCksCisJCS5tb2RlCQk9IDA2NDQsCisJCS5wcm9jX2hhbmRsZXIJPSAmcHJvY19kb2ludHZlY19taW5tYXgsCisJCS5zdHJhdGVneQk9ICZzeXNjdGxfaW50dmVjLAorCQkuZXh0cmExCQk9ICZtaW5fbWF4X3R4X3dpbmRvdywKKwkJLmV4dHJhMgkJPSAmbWF4X21heF90eF93aW5kb3cKKwl9LAorCXsKKwkJLmN0bF9uYW1lCT0gTUFYX05PUkVQTFlfVElNRSwKKwkJLnByb2NuYW1lCT0gIm1heF9ub3JlcGx5X3RpbWUiLAorCQkuZGF0YQkJPSAmc3lzY3RsX21heF9ub3JlcGx5X3RpbWUsCisJCS5tYXhsZW4JCT0gc2l6ZW9mKGludCksCisJCS5tb2RlCQk9IDA2NDQsCisJCS5wcm9jX2hhbmRsZXIJPSAmcHJvY19kb2ludHZlY19taW5tYXgsCisJCS5zdHJhdGVneQk9ICZzeXNjdGxfaW50dmVjLAorCQkuZXh0cmExCQk9ICZtaW5fbWF4X25vcmVwbHlfdGltZSwKKwkJLmV4dHJhMgkJPSAmbWF4X21heF9ub3JlcGx5X3RpbWUKKwl9LAorCXsKKwkJLmN0bF9uYW1lCT0gV0FSTl9OT1JFUExZX1RJTUUsCisJCS5wcm9jbmFtZQk9ICJ3YXJuX25vcmVwbHlfdGltZSIsCisJCS5kYXRhCQk9ICZzeXNjdGxfd2Fybl9ub3JlcGx5X3RpbWUsCisJCS5tYXhsZW4JCT0gc2l6ZW9mKGludCksCisJCS5tb2RlCQk9IDA2NDQsCisJCS5wcm9jX2hhbmRsZXIJPSAmcHJvY19kb2ludHZlY19taW5tYXgsCisJCS5zdHJhdGVneQk9ICZzeXNjdGxfaW50dmVjLAorCQkuZXh0cmExCQk9ICZtaW5fd2Fybl9ub3JlcGx5X3RpbWUsCisJCS5leHRyYTIJCT0gJm1heF93YXJuX25vcmVwbHlfdGltZQorCX0sCisJeworCQkuY3RsX25hbWUJPSBMQVBfS0VFUEFMSVZFX1RJTUUsCisJCS5wcm9jbmFtZQk9ICJsYXBfa2VlcGFsaXZlX3RpbWUiLAorCQkuZGF0YQkJPSAmc3lzY3RsX2xhcF9rZWVwYWxpdmVfdGltZSwKKwkJLm1heGxlbgkJPSBzaXplb2YoaW50KSwKKwkJLm1vZGUJCT0gMDY0NCwKKwkJLnByb2NfaGFuZGxlcgk9ICZwcm9jX2RvaW50dmVjX21pbm1heCwKKwkJLnN0cmF0ZWd5CT0gJnN5c2N0bF9pbnR2ZWMsCisJCS5leHRyYTEJCT0gJm1pbl9sYXBfa2VlcGFsaXZlX3RpbWUsCisJCS5leHRyYTIJCT0gJm1heF9sYXBfa2VlcGFsaXZlX3RpbWUKKwl9LAorCXsgLmN0bF9uYW1lID0gMCB9Cit9OworCisvKiBPbmUgZGlyZWN0b3J5ICovCitzdGF0aWMgY3RsX3RhYmxlIGlyZGFfbmV0X3RhYmxlW10gPSB7CisJeworCQkuY3RsX25hbWUJPSBORVRfSVJEQSwKKwkJLnByb2NuYW1lCT0gImlyZGEiLAorCQkubWF4bGVuCQk9IDAsCisJCS5tb2RlCQk9IDA1NTUsCisJCS5jaGlsZAkJPSBpcmRhX3RhYmxlCisJfSwKKwl7IC5jdGxfbmFtZSA9IDAgfQorfTsKKworLyogVGhlIHBhcmVudCBkaXJlY3RvcnkgKi8KK3N0YXRpYyBjdGxfdGFibGUgaXJkYV9yb290X3RhYmxlW10gPSB7CisJeworCQkuY3RsX25hbWUJPSBDVExfTkVULAorCQkucHJvY25hbWUJPSAibmV0IiwKKwkJLm1heGxlbgkJPSAwLAorCQkubW9kZQkJPSAwNTU1LAorCQkuY2hpbGQJCT0gaXJkYV9uZXRfdGFibGUKKwl9LAorCXsgLmN0bF9uYW1lID0gMCB9Cit9OworCitzdGF0aWMgc3RydWN0IGN0bF90YWJsZV9oZWFkZXIgKmlyZGFfdGFibGVfaGVhZGVyOworCisvKgorICogRnVuY3Rpb24gaXJkYV9zeXNjdGxfcmVnaXN0ZXIgKHZvaWQpCisgKgorICogICAgUmVnaXN0ZXIgb3VyIHN5c2N0bCBpbnRlcmZhY2UKKyAqCisgKi8KK2ludCBfX2luaXQgaXJkYV9zeXNjdGxfcmVnaXN0ZXIodm9pZCkKK3sKKwlpcmRhX3RhYmxlX2hlYWRlciA9IHJlZ2lzdGVyX3N5c2N0bF90YWJsZShpcmRhX3Jvb3RfdGFibGUsIDApOworCWlmICghaXJkYV90YWJsZV9oZWFkZXIpCisJCXJldHVybiAtRU5PTUVNOworCisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBGdW5jdGlvbiBpcmRhX3N5c2N0bF91bnJlZ2lzdGVyICh2b2lkKQorICoKKyAqICAgIFVucmVnaXN0ZXIgb3VyIHN5c2N0bCBpbnRlcmZhY2UKKyAqCisgKi8KK3ZvaWQgX19leGl0IGlyZGFfc3lzY3RsX3VucmVnaXN0ZXIodm9pZCkgCit7CisJdW5yZWdpc3Rlcl9zeXNjdGxfdGFibGUoaXJkYV90YWJsZV9oZWFkZXIpOworfQorCisKKwo=