ZGlmZiAtLWdpdCBhL2puaS9wanByb2plY3QtYW5kcm9pZC9wam1lZGlhL2luY2x1ZGUvcGptZWRpYS1jb2RlYy9nNzIyMS5oIGIvam5pL3BqcHJvamVjdC1hbmRyb2lkL3BqbWVkaWEvaW5jbHVkZS9wam1lZGlhLWNvZGVjL2c3MjIxLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTk2ZWVlMgotLS0gL2Rldi9udWxsCisrKyBiL2puaS9wanByb2plY3QtYW5kcm9pZC9wam1lZGlhL2luY2x1ZGUvcGptZWRpYS1jb2RlYy9nNzIyMS5oCkBAIC0wLDAgKzEsMTYyIEBACisvKiAkSWQ6IGc3MjIxLmggMzU1MyAyMDExLTA1LTA1IDA2OjE0OjE5WiBuYW5hbmcgJCAqLworLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMSBUZWx1dSBJbmMuIChodHRwOi8vd3d3LnRlbHV1LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA4IEJlbm55IFByaWpvbm8gPGJlbm55QHByaWpvbm8ub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgCisgKi8KKyNpZm5kZWYgX19QSk1FRElBX0NPREVDU19HNzIyMV9IX18KKyNkZWZpbmUgX19QSk1FRElBX0NPREVDU19HNzIyMV9IX18KKworLyoqCisgKiBAZmlsZSBwam1lZGlhLWNvZGVjL2c3MjIxLmgKKyAqIEBicmllZiBHNzIyLjEgY29kZWMuCisgKi8KKworI2luY2x1ZGUgPHBqbWVkaWEtY29kZWMvdHlwZXMuaD4KKworLyoqCisgKiBAZGVmZ3JvdXAgUEpNRURfRzcyMjFfQ09ERUMgRy43MjIuMSBDb2RlYyAoU2lyZW43L1NpcmVuMTQpCisgKiBAaW5ncm91cCBQSk1FRElBX0NPREVDX0NPREVDUworICogQGJyaWVmIEltcGxlbWVudGF0aW9uIG9mIEcuNzIyLjEgY29kZWMKKyAqIEB7CisgKgorICogPGI+Ry43MjIuMSBsaWNlbnNlZCBmcm9tIFBvbHljb22uPC9iPjxiciAvPgorICogPGI+Ry43MjIuMSBBbm5leCBDIGxpY2Vuc2VkIGZyb20gUG9seWNvba48L2I+CisgKgorICogVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBmdW5jdGlvbnMgdG8gaW5pdGlhbGl6ZSBhbmQgcmVnaXN0ZXIgRy43MjIuMSBjb2RlYworICogZmFjdG9yeSB0byB0aGUgY29kZWMgbWFuYWdlci4gQWZ0ZXIgdGhlIGNvZGVjIGZhY3RvcnkgaGFzIGJlZW4gcmVnaXN0ZXJlZCwKKyAqIGFwcGxpY2F0aW9uIGNhbiB1c2UgQHJlZiBQSk1FRElBX0NPREVDIEFQSSB0byBtYW5pcHVsYXRlIHRoZSBjb2RlYy4KKyAqCisgKiBQSk1FRElBIEc3MjIuMSBjb2RlYyBpbXBsZW1lbnRhdGlvbiBpcyBiYXNlZCBvbiBJVFUtVCBSZWNvbW1lbmRhdGlvbiAKKyAqIEcuNzIyLjEgKDA1LzIwMDUpIEMgZml4ZWQgcG9pbnQgaW1wbGVtZW50YXRpb24gaW5jbHVkaW5nIGl0cyBBbm5leCBDLgorICoKKyAqIEcuNzIyLjEgaXMgYSBsb3cgY29tcGxleGl0eSBjb2RlYyB0aGF0IHN1cHBvcnRzIDdrSHogYW5kIDE0a0h6IGF1ZGlvIAorICogYmFuZHdpZHRoIHdvcmtpbmcgYXQgYml0cmF0ZXMgcmFuZ2luZyBmcm9tIDE2a2JwcyB0byA0OGticHMuIEl0IG1heSBiZQorICogdXNlZCB3aXRoIHNwZWVjaCBvciBtdXNpYyBpbnB1dHMuCisgKgorICoKKyAqIFxzZWN0aW9uIGNvZGVjX3NldHRpbmcgQ29kZWMgU2V0dGluZ3MKKyAqCisgKiBcc3Vic2VjdGlvbiBnZW5lcmFsX3NldHRpbmcgR2VuZXJhbCBTZXR0aW5ncworICoKKyAqIEdlbmVyYWwgY29kZWMgc2V0dGluZ3MgZm9yIHRoaXMgY29kZWMgc3VjaCBhcyBWQUQgYW5kIFBMQyBjYW4gYmUgCisgKiBtYW5pcHVsYXRlZCB0aHJvdWdoIHRoZSA8dHQ+c2V0dGluZzwvdHQ+IGZpZWxkIGluICNwam1lZGlhX2NvZGVjX3BhcmFtLiAKKyAqIFBsZWFzZSBzZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgI3BqbWVkaWFfY29kZWNfcGFyYW0gZm9yIG1vcmUgaW5mby4KKyAqCisgKiBcc3Vic2VjdGlvbiBzcGVjaWZpY19zZXR0aW5nIENvZGVjIFNwZWNpZmljIFNldHRpbmdzCisgKgorICogVGhlIGZvbGxvd2luZyBzZXR0aW5ncyBhcmUgYXBwbGljYWJsZSBmb3IgdGhpcyBjb2RlYy4KKyAqCisgKiBcc3Vic3Vic2VjdGlvbiBiaXRyYXRlIEJpdHJhdGUKKyAqCisgKiBUaGUgY29kZWMgaW1wbGVtZW50YXRpb24gc3VwcG9ydHMgc3RhbmRhcmQgYW5kIG5vbi1zdGFuZGFyZCBiaXRyYXRlcy4KKyAqIFVzZSAjcGptZWRpYV9jb2RlY19nNzIyMV9zZXRfbW9kZSgpIHRvIGVuYWJsZSBvciBkaXNhYmxlIHRoZSBiaXRyYXRlcy4KKyAqCisgKiBCeSBkZWZhdWx0LCBvbmx5IHN0YW5kYXJkIGJpdHJhdGVzIGFyZSBlbmFibGVkIHVwb24gaW5pdGlhbGl6YXRpb246CisgKiAtIGZvciA3a0h6IGF1ZGlvIGJhbmR3aWR0aCAoMTZrSHogc2FtcGxpbmcgcmF0ZSk6IDI0a2JwcyBhbmQgMzJrYnBzLAorICogLSBmb3IgMTRrSHogYXVkaW8gYmFuZHdpZHRoICgzMmtIeiBzYW1wbGluZyByYXRlKTogMjRrYnBzLCAzMmticHMsIGFuZAorICogICA0OGticHMuCisgKgorICogVGhlIHVzYWdlIG9mIG5vbi1zdGFuZGFyZCBiaXRyYXRlcyBtdXN0IGZvbGxvdyB0aGVzZSByZXF1aXJlbWVudHM6CisgKiAtIGZvciA3a0h6IGF1ZGlvIGJhbmR3aWR0aCAoMTZrSHogc2FtcGxpbmcgcmF0ZSk6IDE2MDAwIHRvIDMyMDAwIGJwcywgCisgKiAgIG11bHRpcGxpY2F0aW9uIG9mIDQwMAorICogLSBmb3IgMTRrSHogYXVkaW8gYmFuZHdpZHRoICgzMmtIeiBzYW1wbGluZyByYXRlKTogMjQwMDAgdG8gNDgwMDAgYnBzLAorICogICBtdWx0aXBsaWNhdGlvbiBvZiA0MDAKKyAqCisgKiBcbm90ZQorICogQ3VycmVudGx5IG9ubHkgdXAgdG8gdHdvIG5vbi1zdGFuZGFyZCBtb2RlcyBjYW4gYmUgZW5hYmxlZC4KKyAqCisgKiBccmVtYXJrCisgKiBUaGVyZSBpcyBhIGZsYXcgaW4gdGhlIGNvZGVjIG1hbmFnZXIgYXMgY3VycmVudGx5IGl0IGNvdWxkIG5vdAorICogZGlmZmVyZW50aWF0ZSBHLjcyMi4xIGNvZGVjcyBieSBiaXRyYXRlcywgaGVuY2UgaW52b2tpbmcgCisgKiAjcGptZWRpYV9jb2RlY19tZ3Jfc2V0X2RlZmF1bHRfcGFyYW0oKSBtYXkgb25seSBhZmZlY3QgYSBHLjcyMi4xIGNvZGVjCisgKiB3aXRoIHRoZSBoaWdoZXN0IHByaW9yaXR5IChvciBmaXJzdCBpbmRleCBmb3VuZCBpbiBjb2RlYyBlbnVtZXJhdGlvbiAKKyAqIHdoZW4gdGhleSBoYXZlIHNhbWUgcHJpb3JpdHkpIGFuZCBpbnZva2luZworICogI3BqbWVkaWFfY29kZWNfbWdyX3NldF9jb2RlY19wcmlvcml0eSgpIHdpbGwgc2V0IHByaW9yaXR5IG9mIGFsbCBHLjcyMi4xCisgKiBjb2RlY3Mgd2l0aCBzYW1wbGluZyByYXRlIGFzIHNwZWNpZmllZC4KKyAqLworCitQSl9CRUdJTl9ERUNMCisKKy8qKgorICogSW5pdGlhbGl6ZSBhbmQgcmVnaXN0ZXIgRy43MjIuMSBjb2RlYyBmYWN0b3J5IHRvIHBqbWVkaWEgZW5kcG9pbnQuCisgKgorICogQHBhcmFtIGVuZHB0CSAgICBUaGUgcGptZWRpYSBlbmRwb2ludC4KKyAqCisgKiBAcmV0dXJuCSAgICBQSl9TVUNDRVNTIG9uIHN1Y2Nlc3MuCisgKi8KK1BKX0RFQ0wocGpfc3RhdHVzX3QpIHBqbWVkaWFfY29kZWNfZzcyMjFfaW5pdCggcGptZWRpYV9lbmRwdCAqZW5kcHQgKTsKKworCisvKioKKyAqIEVuYWJsZSBhbmQgZGlzYWJsZSBHLjcyMi4xIG1vZGUuIEJ5IGRlZmF1bHQsIHRoZSBzdGFuZGFyZCBtb2RlcyBhcmUgCisgKiBlbmFibGVkIHVwb24gaW5pdGlhbGl6YXRpb24sIGkuZS46CisgKiAtIHNhbXBsaW5nIHJhdGUgMTZrSHosIGJpdHJhdGUgMjRrYnBzIGFuZCAzMmticHMuCisgKiAtIHNhbXBsaW5nIHJhdGUgMzJrSHosIGJpdHJhdGUgMjRrYnBzLCAzMmticHMsIGFuZCA0OGticHMuCisgKiBUaGlzIGZ1bmN0aW9uIGNhbiBhbHNvIGJlIHVzZWQgZm9yIGVuYWJsaW5nIG5vbi1zdGFuZGFyZCBtb2Rlcy4KKyAqIE5vdGUgdGhhdCBjdXJyZW50bHkgb25seSB1cCB0byB0d28gbm9uLXN0YW5kYXJkIG1vZGVzIGNhbiBiZSBlbmFibGVkCisgKiBhdCBvbmUgdGltZS4KKyAqCisgKiBAcGFyYW0gc2FtcGxlX3JhdGUJUENNIHNhbXBsaW5nIHJhdGUsIGluIEh6LCB2YWxpZCB2YWx1ZXMgYXJlIG9ubHkgCisgKgkJCTE2MDAwIGFuZCAzMjAwMC4KKyAqIEBwYXJhbSBiaXRyYXRlCUc3MjIuMSBiaXRyYXRlLCBpbiBicHMsIHRoZSB2YWxpZCB2YWx1ZXMgYXJlCisgKgkJCXN0YW5kYXJkIGFuZCBub24tc3RhbmRhcmQgYml0cmF0ZXMgYXMgZGVzY3JpYmVkIAorICoJCQlhYm92ZS4KKyAqIEBwYXJhbSBlbmFibGVkCVBKX1RSVUUgZm9yIGVuYWJsaW5nIHNwZWNpZmllZCBtb2RlLgorICoKKyAqIEByZXR1cm4JCVBKX1NVQ0NFU1Mgb24gc3VjY2Vzcy4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGptZWRpYV9jb2RlY19nNzIyMV9zZXRfbW9kZSh1bnNpZ25lZCBzYW1wbGVfcmF0ZSwgCisJCQkJCQkgIHVuc2lnbmVkIGJpdHJhdGUsIAorCQkJCQkJICBwal9ib29sX3QgZW5hYmxlZCk7CisKKy8qKgorICogU2V0IHRoZSBHLjcyMi4xIGNvZGVjIGVuY29kZXIgYW5kIGRlY29kZXIgbGV2ZWwgYWRqdXN0bWVudC4gCisgKiBJZiB0aGUgdmFsdWUgaXMgbm9uLXplcm8sIHRoZW4gUENNIGlucHV0IHNhbXBsZXMgdG8gdGhlIGVuY29kZXIgd2lsbCAKKyAqIGJlIHNoaWZ0ZWQgcmlnaHQgYnkgdGhpcyB2YWx1ZSwgYW5kIHNpbWlsYXJseSBQQ00gb3V0cHV0IHNhbXBsZXMgZnJvbQorICogdGhlIGRlY29kZXIgd2lsbCBiZSBzaGlmdGVkIGxlZnQgYnkgdGhpcyB2YWx1ZS4KKyAqCisgKiBcbm90ZQorICogVGhpcyBmdW5jdGlvbiBpcyBhbHNvIGFwcGxpY2FibGUgZm9yIEc3MjIuMSBpbXBsZW1lbnRhdGlvbiB3aXRoIElQUAorICogYmFjay1lbmQuCisgKgorICogRGVmYXVsdCB2YWx1ZSBpcyBQSk1FRElBX0c3MjIxX0RFRkFVTFRfUENNX1NISUZULgorICoKKyAqIEBwYXJhbSB2YWwJCVRoZSB2YWx1ZQorICoKKyAqIEByZXR1cm4JCVBKX1NVQ0NFU1Mgb24gc3VjY2Vzcy4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGptZWRpYV9jb2RlY19nNzIyMV9zZXRfcGNtX3NoaWZ0KGludCB2YWwpOworCisKKworLyoqCisgKiBVbnJlZ2lzdGVyIEcuNzIyLjEgY29kZWNzIGZhY3RvcnkgZnJvbSBwam1lZGlhIGVuZHBvaW50LgorICoKKyAqIEByZXR1cm4JICAgIFBKX1NVQ0NFU1Mgb24gc3VjY2Vzcy4KKyAqLworUEpfREVDTChwal9zdGF0dXNfdCkgcGptZWRpYV9jb2RlY19nNzIyMV9kZWluaXQodm9pZCk7CisKKworUEpfRU5EX0RFQ0wKKworCisvKioKKyAqIEB9CisgKi8KKworI2VuZGlmCS8qIF9fUEpNRURJQV9DT0RFQ1NfRzcyMjFfSF9fICovCisK