ZGlmZiAtLWdpdCBhL2FwL2FwcC9pbmNsdWRlL2NmZ19hcGkuaCBiL2FwL2FwcC9pbmNsdWRlL2NmZ19hcGkuaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44MDIxMzY1Ci0tLSAvZGV2L251bGwKKysrIGIvYXAvYXBwL2luY2x1ZGUvY2ZnX2FwaS5oCkBAIC0wLDAgKzEsMTI5IEBACisvKioKKyogQGZpbGUgY2ZnX2FwaS5oCisqIEBicmllZiBudr3Tv9rNt87EvP4KKyoKKyogQ29weXJpZ2h0IChDKSAyMDE3IFNhbmVjaGlwcyBUZWNobm9sb2d5IENvLiwgTHRkLgorKgorKi8KKworI2lmbmRlZiBfQ0ZHX0FQSV9ICisjZGVmaW5lIF9DRkdfQVBJX0gKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5jbHVkZSBoZWFkZXIgZmlsZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvIGRlZmluaXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlIGRlZmluaXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgR2xvYmFsIHZhcmlhYmxlIGRlY2xhcmF0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgIEdsb2JhbCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioKKyogQGJyaWVmILvxyKHWuLao19a2zrbU06a1xNa1CisqIEBwYXJhbSBuYW1lICAgICDI67LOo6zX1rbOw/sKKyogQHBhcmFtIGJ1ZiAgICAgILP2ss6jrLTmt8XX1rbOttTTpsr9vt21xLu6s+XH+Na41esKKyogQHBhcmFtIGxlbiAgICAgIMjrss6jrLu6s+XH+GJ1ZrOktsgKKyogQHJldHVybiAwo7qzybmmo6wtMaO6yqew3AorKiBAcmV0dmFsIDAgILPJuaYKKyogQHJldHZhbCAtMSDKp7DcCisqIEBub3RlCisqIEB3YXJuaW5nCisqLworaW50IHNjX2NmZ19nZXQoY2hhciAqbmFtZSwgY2hhciAqYnVmLCBpbnQgYnVmTGVuKTsKKworLyoqCisgKiBAYnJpZWYgyejWw9a4tqjX1rbOttTTprXE1rUKKyAqIEBwYXJhbSBuYW1lICAgICAgIMjrss6jrNfWts7D+worICogQHBhcmFtIHZhbHVlICAgICAgyOuyzqOsz+vSqrTmtKK1xMr9vt0KKyAqIEByZXR1cm4gMKO6s8m5pqOsLTGjusqnsNwKKyAqIEByZXR2YWwgMCAgs8m5pgorICogQHJldHZhbCAtMSDKp7DcCisgKiBAbm90ZSAgIGNmZ19zZXS99sno1sO1vcTatOajrLX308NjZmdfc2F2ZbLFu+Gxo7Tmtb3OxLz+o6yyxbvh1tjG9Mn60KcKKyAqIEB3YXJuaW5nICC99tTacGFyYW1ldGVy1tC1xG52ssW74bX0teexo7Tmo6zG5Mv7vdTK086qwdnKsW52CisgKi8KK2ludCBzY19jZmdfc2V0KGNoYXIgKm5hbWUsIGNoYXIgKnZhbHVlKTsKKworLyoqCisgKiBAYnJpZWYgyb6z/da4tqjX1rbOCisgKiBAcGFyYW0gbmFtZSAgICAgyOuyzqOs19a2zsP7CisgKiBAcmV0dXJuIDCjurPJuaajrC0xo7rKp7DcCisgKiBAcmV0dmFsIDAgILPJuaYKKyAqIEByZXR2YWwgLTEgyqew3AorICogQG5vdGUKKyAqIEB3YXJuaW5nCisgKi8KK2ludCBzY19jZmdfdW5zZXQoY2hhciAqbmFtZSk7CisKKy8qKgorICogQGJyaWVmIMflv9XIq7K/19a2zrTmtKLQxc+iCisgKiBAcGFyYW0KKyAqIEByZXR1cm4gMKO6s8m5pqOsLTGjusqnsNwKKyAqIEByZXR2YWwgMCAgs8m5pgorICogQHJldHZhbCAtMSDKp7DcCisgKiBAbm90ZQorICogQHdhcm5pbmcgu9a4tLP2s6fQxc+iyrG199PDCisgKi8KK2ludCBzY19jZmdfcmVzZXQodm9pZCk7CisKKy8qKgorICogQGJyaWVmILTy06HP1Mq+y/nT0MXk1sPP7tDFz6K1vb/Y1sbMqAorICogQHBhcmFtCisgKiBAcmV0dXJuIDCjurPJuaajrC0xo7rKp7DcCisgKiBAcmV0dmFsIDAgILPJuaYKKyAqIEByZXR2YWwgLTEgyqew3AorICogQG5vdGUKKyAqIEB3YXJuaW5nCisgKi8KK2ludCBzY19jZmdfc2hvdyh2b2lkKTsKKworLyoqCisgKiBAYnJpZWYgsaO05sirsr/F5NbDyv2+3bW9zsS8/gorICogQHBhcmFtCisgKiBAcmV0dXJuIDCjurPJuaajrC0xo7rKp7DcCisgKiBAcmV0dmFsIDAgILPJuaYKKyAqIEByZXR2YWwgLTEgyqew3AorICogQG5vdGUgY2ZnX3NhdmW199PDuvOjrMXk1sO1xMr9vt3W2Mb0uvO7ucTcyfrQpworICogQHdhcm5pbmcKKyAqLworaW50IHNjX2NmZ19zYXZlKHZvaWQpOworCisjaWZuZGVmIExJQk5WUkFNX0FQSV9ORVcKK2ludCBjZmdfZ2V0X2l0ZW0oY2hhciAqbmFtZSwgY2hhciAqYnVmLCBpbnQgYnVmTGVuKTsKK2ludCBjZmdfc2V0KGNoYXIgKm5hbWUsIGNoYXIgKnZhbHVlKTsKK2ludCBjZmdfdW5zZXQoY2hhciAqbmFtZSk7CitpbnQgY2ZnX3Jlc2V0KHZvaWQpOworaW50IGNmZ19zaG93KHZvaWQpOworaW50IGNmZ19zYXZlKHZvaWQpOworI2VuZGlmCisKKy8qKgorICogQGJyaWVmIHN5c3Rlbc+1zbO199PDt+LXsL3Tv9oKKyAqIEBwYXJhbSBjbWQgIMjrss4gIMP8we4KKyAqIEByZXR1cm4gMKO6s8m5pqOsLTGjusqnsNwKKyAqIEByZXR2YWwgMCAgs8m5pgorICogQHJldHZhbCAtMSDKp7DcCisgKiBAbm90ZSAKKyAqIEB3YXJuaW5nCisgKi8KK2V4dGVybiBpbnQgenhpY19zeXN0ZW0oY29uc3QgY2hhciAqY21kKTsKKworZXh0ZXJuIGludCB6eGljX3N5c3RlbV9vdXRkYXRhKGNvbnN0IGNoYXIgKmNtZCwgY29uc3QgY2hhciAqb3V0ZmlsZSwgY2hhciAqb3V0X2RhdGEsIGludCBvdXRfbGVuKTsKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICBJbmxpbmUgZnVuY3Rpb24gaW1wbGVtZW50YXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2VuZGlmICAvLyAjaWZuZGVmIF9DRkdfQVBJX0gKKwo=