IwojIE1ha2VmaWxlIGZvciBGcmVlVHlwZTIgbGluayBsaWJyYXJ5IHVzaW5nIHBwYy1tb3JwaG9zLWdjYy0yLjk1LjMtYmluLnRnegojIChnY2MgMi45NS4zIGhvc3RlZCBvbiA2OGstQW1pZ2EgcHJvZHVjaW5nIE1vcnBoT1MtUFBDLWJpbmFyaWVzIGZyb20KIyBodHRwOi8vd3d3Lm1vcnBob3MuZGUpCiMKCgojIENvcHlyaWdodCAoQykgMjAwNS0yMDIyIGJ5CiMgV2VybmVyIExlbWJlcmcgYW5kIERldGxlZiBX/HJrbmVyLgojCiMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKIyBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0IGxpY2Vuc2UsCiMgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlIHRoaXMgZmlsZSB5b3UKIyBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdAojIGZ1bGx5LgoKCiMKIyB0byBidWlsZCBmcm9tIHRoZSBidWlsZHMvYW1pZ2EgZGlyZWN0b3J5IGNhbGwKIwojICBtYWtlIGFzc2lnbgojICBtYWtlCiMKIyBZb3VyIHByb2dyYW1zIHNvdXJjZSBjb2RlIHNob3VsZCBzdGFydCB3aXRoIHRoaXMKIyAodW5jb21tZW50IHRoZSBwYXJ0cyB5b3UgZG8gbm90IG5lZWQgdG8ga2VlcCB0aGUgcHJvZ3JhbSBzbWFsbCk6CiMgLS0tODwtLS0KI2RlZmluZSBGVF9VU0VfQVVUT0ZJVCAvLyBhdXRvZml0dGVyCiNkZWZpbmUgRlRfVVNFX1JBU1RFUiAgLy8gbW9ub2Nocm9tZSByYXN0ZXJpemVyCiNkZWZpbmUgRlRfVVNFX1NNT09USCAgLy8gYW50aS1hbGlhc2luZyByYXN0ZXJpemVyCiNkZWZpbmUgRlRfVVNFX1RUICAgICAgLy8gdHJ1ZXR5cGUgZm9udCBkcml2ZXIKI2RlZmluZSBGVF9VU0VfVDEgICAgICAvLyB0eXBlMSBmb250IGRyaXZlcgojZGVmaW5lIEZUX1VTRV9UNDIgICAgIC8vIHR5cGU0MiBmb250IGRyaXZlcgojZGVmaW5lIEZUX1VTRV9UMUNJRCAgIC8vIGNpZC1rZXllZCB0eXBlMSBmb250IGRyaXZlcgojZGVmaW5lIEZUX1VTRV9DRkYgICAgIC8vIG9wZW50eXBlIGZvbnQgZHJpdmVyCiNkZWZpbmUgRlRfVVNFX0JERiAgICAgLy8gYmRmIGJpdG1hcCBmb250IGRyaXZlcgojZGVmaW5lIEZUX1VTRV9QQ0YgICAgIC8vIHBjZiBiaXRtYXAgZm9udCBkcml2ZXIKI2RlZmluZSBGVF9VU0VfUEZSICAgICAvLyBwZnIgZm9udCBkcml2ZXIKI2RlZmluZSBGVF9VU0VfV0lORk5UICAvLyB3aW5kb3dzIC5mbnR8LmZvbiBiaXRtYXAgZm9udCBkcml2ZXIKI2RlZmluZSBGVF9VU0VfT1RWICAgICAvLyBvcGVudHlwZSB2YWxpZGF0b3IKI2RlZmluZSBGVF9VU0VfR1hWICAgICAvLyB0cnVldHlwZSBneCB2YWxpZGF0b3IKI2luY2x1ZGUgIkZUOnNyYy9iYXNlL2Z0aW5pdC5jIgojIC0tLTg8LS0tCiMKIyBsaW5rIHlvdXIgcHJvZ3JhbXMgd2l0aCBsaWJmdDJfcHBjLmEgYW5kIGVpdGhlciBmdHN5c3RlbS5wcGMubyBvciBmdHN5c3RlbXB1cmUucHBjLm8KIyAoYW5kIGVpdGhlciBmdGRlYnVnLnBwYy5vIG9yIGZ0ZGVidWdwdXJlLnBwYy5vIGlmIHlvdSBlbmFibGVkIEZUX0RFQlVHX0xFVkVMX0VSUk9SIG9yCiMgRlRfREVCVUdfTEVWRUxfVFJBQ0UgaW4gaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaCkuCgphbGw6CWxpYmZ0Ml9wcGMuYSBmdHN5c3RlbS5wcGMubyBmdHN5c3RlbXB1cmUucHBjLm8KCmFzc2lnbjoKCWFzc2lnbiBGVDogLy8KCkZUU1JDID0gL0ZUL3NyYwoKQ0MgPSAgICAgcHBjLW1vcnBob3MtZ2NjCkFSID0gICAgIHBwYy1tb3JwaG9zLWFyIHJjClJBTkxJQiA9IHBwYy1tb3JwaG9zLXJhbmxpYgpMRCA9ICAgICBwcGMtbW9ycGhvcy1sZApDRkxBR1MgPSAtREZUMl9CVUlMRF9MSUJSQVJZIC1PMiAtSS9lbXUvZW11bGluY2x1ZGUvaW5jbHVkZWdjYyAtSS9lbXUvaW5jbHVkZSAtSWluY2x1ZGUgLUkkKEZUU1JDKSAtSS9GVC9pbmNsdWRlCgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgYmFzZQojCmZ0YmFzZS5wcGMubzogJChGVFNSQykvYmFzZS9mdGJhc2UuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgpmdGluaXQucHBjLm86ICQoRlRTUkMpL2Jhc2UvZnRpbml0LmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKZnRzeXN0ZW0ucHBjLm86ICQoRlRTUkMpL2Jhc2UvZnRzeXN0ZW0uYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojIHB1cmUgdmVyc2lvbiBmb3IgdXNlIGluIHJ1bi10aW1lIGxpYnJhcnkgZXRjCmZ0c3lzdGVtcHVyZS5wcGMubzogc3JjL2Jhc2UvZnRzeXN0ZW0uYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgpmdGRlYnVnLnBwYy5vOiAkKEZUU1JDKS9iYXNlL2Z0ZGVidWcuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojIHB1cmUgdmVyc2lvbiBmb3IgdXNlIGluIHJ1bi10aW1lIGxpYnJhcnkgZXRjCmZ0ZGVidWdwdXJlLnBwYy5vOiBzcmMvYmFzZS9mdGRlYnVnLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKIwojIEZyZWVUeXBlMiBsaWJyYXJ5IGJhc2UgZXh0ZW5zaW9ucwojCmZ0YmJveC5wcGMubzogJChGVFNSQykvYmFzZS9mdGJib3guYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgpmdGJkZi5wcGMubzogJChGVFNSQykvYmFzZS9mdGJkZi5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCmZ0Yml0bWFwLnBwYy5vOiAkKEZUU1JDKS9iYXNlL2Z0Yml0bWFwLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKZnRjaWQucHBjLm86ICQoRlRTUkMpL2Jhc2UvZnRjaWQuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgpmdGZzdHlwZS5wcGMubzogJChGVFNSQykvYmFzZS9mdGZzdHlwZS5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCmZ0Z2FzcC5wcGMubzogJChGVFNSQykvYmFzZS9mdGdhc3AuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgpmdGdseXBoLnBwYy5vOiAkKEZUU1JDKS9iYXNlL2Z0Z2x5cGguYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgpmdGd4dmFsLnBwYy5vOiAkKEZUU1JDKS9iYXNlL2Z0Z3h2YWwuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgpmdG1tLnBwYy5vOiAkKEZUU1JDKS9iYXNlL2Z0bW0uYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgpmdG90dmFsLnBwYy5vOiAkKEZUU1JDKS9iYXNlL2Z0b3R2YWwuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgpmdHBhdGVudC5wcGMubzogJChGVFNSQykvYmFzZS9mdHBhdGVudC5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCmZ0cGZyLnBwYy5vOiAkKEZUU1JDKS9iYXNlL2Z0cGZyLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKZnRzdHJva2UucHBjLm86ICQoRlRTUkMpL2Jhc2UvZnRzdHJva2UuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgpmdHN5bnRoLnBwYy5vOiAkKEZUU1JDKS9iYXNlL2Z0c3ludGguYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgpmdHR5cGUxLnBwYy5vOiAkKEZUU1JDKS9iYXNlL2Z0dHlwZTEuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgpmdHdpbmZudC5wcGMubzogJChGVFNSQykvYmFzZS9mdHdpbmZudC5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSBhdXRvZml0dGluZyBtb2R1bGUKIwphdXRvZml0LnBwYy5vOiAkKEZUU1JDKS9hdXRvZml0L2F1dG9maXQuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgcG9zdHNjcmlwdCBoaW50aW5nIG1vZHVsZQojCnBzaGludGVyLnBwYy5vOiAkKEZUU1JDKS9wc2hpbnRlci9wc2hpbnRlci5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSBQUyBzdXBwb3J0IG1vZHVsZQojCnBzYXV4LnBwYy5vOiAkKEZUU1JDKS9wc2F1eC9wc2F1eC5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSBQUyBnbHlwaCBuYW1lcyBtb2R1bGUKIwpwc25hbWVzLnBwYy5vOiAkKEZUU1JDKS9wc25hbWVzL3BzbmFtZXMuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgbW9ub2Nocm9tZSByYXN0ZXIgbW9kdWxlCiMKcmFzdGVyLnBwYy5vOiAkKEZUU1JDKS9yYXN0ZXIvcmFzdGVyLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKIwojIEZyZWVUeXBlMiBsaWJyYXJ5IGFudGktYWxpYXNpbmcgcmFzdGVyIG1vZHVsZQojCnNtb290aC5wcGMubzogJChGVFNSQykvc21vb3RoL3Ntb290aC5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSAnc2ZudCcgbW9kdWxlCiMKc2ZudC5wcGMubzogJChGVFNSQykvc2ZudC9zZm50LmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKIwojIEZyZWVUeXBlMiBsaWJyYXJ5IGdseXBoIGFuZCBpbWFnZSBjYWNoaW5nIHN5c3RlbQojCmZ0Y2FjaGUucHBjLm86ICQoRlRTUkMpL2NhY2hlL2Z0Y2FjaGUuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgT3BlblR5cGUgZm9udCBkcml2ZXIKIwpjZmYucHBjLm86ICQoRlRTUkMpL2NmZi9jZmYuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgVHJ1ZVR5cGUgZm9udCBkcml2ZXIKIwp0cnVldHlwZS5wcGMubzogJChGVFNSQykvdHJ1ZXR5cGUvdHJ1ZXR5cGUuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgVHlwZTEgZm9udCBkcml2ZXIKIwp0eXBlMS5wcGMubzogJChGVFNSQykvdHlwZTEvdHlwZTEuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgVHlwZTQyIGZvbnQgZHJpdmVyCiMKdHlwZTQyLnBwYy5vOiAkKEZUU1JDKS90eXBlNDIvdHlwZTQyLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKIwojIEZyZWVUeXBlMiBsaWJyYXJ5IENJRC1rZXllZCBUeXBlMSBmb250IGRyaXZlcgojCnR5cGUxY2lkLnBwYy5vOiAkKEZUU1JDKS9jaWQvdHlwZTFjaWQuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgQkRGIGJpdG1hcCBmb250IGRyaXZlcgojCmJkZi5wcGMubzogJChGVFNSQykvYmRmL2JkZi5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSBQQ0YgYml0bWFwIGZvbnQgZHJpdmVyCiMKcGNmLnBwYy5vOiAkKEZUU1JDKS9wY2YvcGNmLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKIwojIEZyZWVUeXBlMiBsaWJyYXJ5IGd6aXAgc3VwcG9ydCBmb3IgY29tcHJlc3NlZCBQQ0YgYml0bWFwIGZvbnRzCiMKZ3ppcC5wcGMubzogJChGVFNSQykvZ3ppcC9mdGd6aXAuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojIEZyZWVUeXBlMiBsaWJyYXJ5IGJ6aXAyIHN1cHBvcnQgZm9yIGNvbXByZXNzZWQgUENGIGJpdG1hcCBmb250cwojCmJ6aXAyLnBwYy5vOiAkKEZUU1JDKS9iemlwMi9mdGJ6aXAyLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKIwojIEZyZWVUeXBlMiBsaWJyYXJ5IGNvbXByZXNzIHN1cHBvcnQgZm9yIGNvbXByZXNzZWQgUENGIGJpdG1hcCBmb250cwojCmx6dy5wcGMubzogJChGVFNSQykvbHp3L2Z0bHp3LmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKIwojIEZyZWVUeXBlMiBsaWJyYXJ5IFBGUiBmb250IGRyaXZlcgojCnBmci5wcGMubzogJChGVFNSQykvcGZyL3Bmci5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSBXaW5kb3dzIEZOVC9GT04gYml0bWFwIGZvbnQgZHJpdmVyCiMKd2luZm50LnBwYy5vOiAkKEZUU1JDKS93aW5mb250cy93aW5mbnQuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgVHJ1ZVR5cGVHWCBWYWxpZGF0b3IKIwpneHZhbGlkLnBwYy5vOiAkKEZUU1JDKS9neHZhbGlkL2d4dmFsaWQuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgT3BlblR5cGUgdmFsaWRhdG9yCiMKb3R2YWxpZC5wcGMubzogJChGVFNSQykvb3R2YWxpZC9vdHZhbGlkLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKQkFTRVBQQyA9IGZ0YmFzZS5wcGMubyBmdGJib3gucHBjLm8gZnRiZGYucHBjLm8gZnRiaXRtYXAucHBjLm8gZnRjaWQucHBjLm8gXAoJICBvZnRmc3R5cGUucHBjLm8gZnRnYXNwLnBwYy5vIGZ0Z2x5cGgucHBjLm8gICAgICAgICAgICAgICAgICAgICAgIFwKCSAgZnRneHZhbC5wcGMubyBmdG1tLnBwYy5vIGZ0b3R2YWwucHBjLm8gICAgICAgICAgICAgICAgICAgICAgICAgICBcCgkgIGZ0cGF0ZW50LnBwYy5vIGZ0cGZyLnBwYy5vIGZ0c3Ryb2tlLnBwYy5vIGZ0c3ludGgucHBjLm8gICAgICAgICAgXAoJICBmdHR5cGUxLnBwYy5vIGZ0d2luZm50LnBwYy5vCgpERUJVR1BQQyA9IGZ0ZGVidWcucHBjLm8gZnRkZWJ1Z3B1cmUucHBjLm8KCkFGSVRQUEMgPSBhdXRvZml0LnBwYy5vCgpHWFZQUEMgPSBneHZhbGlkLnBwYy5vCgpPVFZQUEMgPSBvdHZhbGlkLnBwYy5vCgpQU1BQQyA9IHBzYXV4LnBwYy5vIHBzbmFtZXMucHBjLm8gcHNoaW50ZXIucHBjLm8KClJBU1RFUlBQQyA9IHJhc3Rlci5wcGMubyBzbW9vdGgucHBjLm8KCkZPTlREUFBDID0gY2ZmLnBwYy5vIHR5cGUxLnBwYy5vIHR5cGU0Mi5wcGMubyB0eXBlMWNpZC5wcGMubyB0cnVldHlwZS5wcGMub1wKCSAgIGJkZi5wcGMubyBwY2YucHBjLm8gcGZyLnBwYy5vIHdpbmZudC5wcGMubwoKbGliZnQyX3BwYy5hOiAgICAkKEJBU0VQUEMpICQoQUZJVFBQQykgJChHWFZQUEMpICQoT1RWUFBDKSAkKFBTUFBDKSAkKFJBU1RFUlBQQykgc2ZudC5wcGMubyBmdGNhY2hlLnBwYy5vICQoRk9OVERQUEMpIGd6aXAucHBjLm8gYnppcDIucHBjLm8gbHp3LnBwYy5vCgkkKEFSKSAkQCAkKEJBU0VQUEMpICQoQUZJVFBQQykgJChHWFZQUEMpICQoT1RWUFBDKSAkKFBTUFBDKSAkKFJBU1RFUlBQQykgc2ZudC5wcGMubyBmdGNhY2hlLnBwYy5vICQoRk9OVERQUEMpIGd6aXAucHBjLm8gYnppcDIucHBjLm8gbHp3LnBwYy5vCgktQCAoJChSQU5MSUIpICRAIHx8IHRydWUpID4vZGV2L251bGwgMj4mMQoKI0xvY2FsIFZhcmlhYmxlczoKI2NvZGluZzogbGF0aW4tMQojRW5kOgo=