LyoqCiAqIEBmaWxlIGZsYWdzX2FwaS5oCiAqIEBicmllZiBmbGFnc7fWx/i907/aCiAqCiAqIENvcHlyaWdodCAoQykgMjAyMyBTYW5lY2hpcHMgVGVjaG5vbG9neSBDby4sIEx0ZC4KICogQGF1dGhvciAKICogQGluZ3JvdXAgCiAqIAogKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwogKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4go6ix2NGho7pHUEx2MiBMaWNlbmNlo6kKICoKICovCgoKI2lmbmRlZiBGTEFHU19BUElfSAojZGVmaW5lIEZMQUdTX0FQSV9ICgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICAgICAgICAgICAgICAgICAgICAgICAgICBJbmNsdWRlIGhlYWRlciBmaWxlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2luY2x1ZGUgInB1Yl9mbGFncy5oIgoKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWNybyBkZWZpbml0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgZGVmaW5pdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgICAgICAgICAgICAgICAgICAgICAgR2xvYmFsIHZhcmlhYmxlIGRlY2xhcmF0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAgICAgICAgICAgICAgICAgICAgICBHbG9iYWwgZnVuY3Rpb24gZGVjbGFyYXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qKgogKiBAYnJpZWYgILP1yry7r2ZsYWdzt9bH+AogKiBAcGFyYW1bb3V0XSAgcF9mbGFnc19pbmZvICBmbGFnc7P1yry7r8r9vt0KICogQHJldHVybiAgMCCz9cq8u6+zybmmLCAtMSCz9cq8u6/Kp7DcCiAqIEBub3RlCiAqLwppbnQgZmxhZ3NfaW5pdCgpOwoKCi8qKgogKiBAYnJpZWYgILvxyKFmbGFnc7fWx/jE2sjdCiAqIEBwYXJhbVtvdXRdICBwX2ZsYWdzX2luZm8gIGZsYWdzt9bH+MTayN0KICogQHJldHVybiAgMCC78cihs8m5piwgLTEgu/HIocqnsNwKICogQG5vdGUKICovCmludCBmbGFnc19nZXQoVF9GTEFHU19JTkZPICpwX2ZsYWdzX2luZm8pOwoKCi8qKgogKiBAYnJpZWYgIMno1sNmbGFnc7fWx/jE2sjdCiAqIEBwYXJhbVtvdXRdICBwX2ZsYWdzX2luZm8gIGZsYWdzt9bH+MTayN0KICogQHJldHVybiAgMCDJ6NbDs8m5piwgLTEgyejWw8qnsNwKICogQG5vdGUKICovCmludCBmbGFnc19zZXQoVF9GTEFHU19JTkZPICpwX2ZsYWdzX2luZm8pOwoKCi8qKgogKiBAYnJpZWYgILvxyKFmbGFnc7fWx/jW0HViaWZz17TMrAogKiBAcGFyYW1bb3V0XSAgc3RhdHVzICB1Ymlmc9e0zKwKICogQHJldHVybiAgMCC78cihs8m5piwgLTEgu/HIocqnsNwKICogQG5vdGUKICovCmludCBmbGFnc19nZXRfdWJpZnNfc3RhdHVzKFRfVUJJRlNfU1RBVFVTICpwX3ViaWZzX3N0YXR1cyk7CgoKLyoqCiAqIEBicmllZiAgyejWw2ZsYWdzt9bH+NbQdWJpZnPXtMysCiAqIEBwYXJhbVtpbl0gIHN0YXR1cyAgdWJpZnPXtMysCiAqIEByZXR1cm4gIDAgyejWw7PJuaYsIC0xIMno1sPKp7DcCiAqIEBub3RlCiAqLwppbnQgZmxhZ3Nfc2V0X3ViaWZzX3N0YXR1cyhUX1VCSUZTX1NUQVRVUyAqcF91Ymlmc19zdGF0dXMpOwoKCi8qKgogKiBAYnJpZWYgILvxyKG1scewz7XNswogKiBAcmV0dXJuICC1scew1MvQ0M+1zbMKICogQG5vdGUKICovCmludCBmbGFnc19nZXRfY3VycmVudF9zeXN0ZW0oKTsKCgojZW5kaWYgLy8gRkxBR1NfQVBJX0gKCg==