MjAwMi0wMy0wOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogVmVyc2lvbiAyLjAuOSBSZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgkqIFJFQURNRTogdXBkYXRpbmcgdGhlIEZUUCBhZGRyZXNzZXMgb2YgdGhlIGRvY3VtZW50YXRpb24KCgkqIEphbWZpbGUuaW4sIEphbWZpbGU6IEFkZGluZyB0aGUgdGVtcGxhdGUgZmlsZSB0aGF0IHdpbGwgYmUgdXNlZCB0bwoJc3VwcG9ydCBsaWJ0b29sIHdpdGggSmFtIG9uIFVuaXggaW4gdGhlIG5lYXIgZnV0dXJlLiBJIGhhdmUgZXhwZXJpbWVudGVkCgl3aXRoIHRoaXMgYW5kIGhhdmVuJ3QgZm91bmQgYSB2YWxpZCBzb2x1dGlvbiBmb3Igbm93IHRob3VnaC4uIDotKAoKMjAwMi0wMy0wOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX1JlYWxsb2MpOiBVc2UgTUVNX1NldCBpbnN0ZWFkIG9mIG1lbXNldC4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYyAodmVyc2lvbl9pbmZvKTogU2V0IHRvIGA5OjA6MycuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoyMDAyLTAzLTA3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMgKGNmZl9nZXRfbmFtZV9pbmRleCk6IEZpeCBjb21waWxlciB3YXJuaW5ncy4KCSogc3JjL2NmZi9jZmZvYmpzIENGRl9TaXplX0dldF9HbG9iYWxzX0Z1bmNzLCBDRkZfU2l6ZV9Jbml0LAoJQ0ZGX0dseXBoU2xvdF9Jbml0KTogRGl0dG8uCgkqIHNyYy9jaWQvY2lkb2Jqcy5jIChDSURfR2x5cGhTbG90X0luaXQsIENJRF9TaXplX0dldF9HbG9iYWxzX0Z1bmNzKToKCURpdHRvLgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX1NpemVfR2V0X0dsb2JhbHNfRnVuY3MsIFQxX0dseXBoU2xvdF9Jbml0KToKCURpdHRvLgoKCSogc3JjL3BzaGludGVyL3BzaGdsb2IuaCAoUFNIX0JsdWVfQWxpZ24pOiBSZXBsYWNlZCB3aXRoIC4uLgoJKFBTSF9CTFVFX0FMSUdOX3tUT1AsQk9UfSk6IE5ldyBkZWZpbmVzLgoJKFBTSF9BbGlnbm1lbnRSZWMpOiBVcGRhdGVkLgoKCSogc3JjL3BzaGludGVyL3BzaG1vZC5jIChwc2hpbnRlcl9pbnRlcmZhY2UpOiBVc2UgYHN0YXRpYyBjb25zdCcuCgoyMDAyLTAzLTA2ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgogICAgICAgICogZG9jcy9DSEFOR0VTOiB1cGRhdGUgdG8gaW5kaWNhdGUgdGhlIG5ldyBGVF9MaWJyYXJ5X1ZlcnNpb24gQVBJCiAgICAgICAgYW5kIHRoZSBzbWFsbCBxdWFsaXR5IGltcHJvdmVtZW50IGluIHRoZSBQb3N0c2NyaXB0IGhpbnRlci4uCgogICAgICAgICogc3JjL3BzaGludGVyL3BzaGdsb2IuYzogZml4ZWQgYSBzbWFsbCBidWcgdGhhdCBjcmVhdGVkIHVuLWV2ZW4KICAgICAgICBzdGVtIHdpZHRocyB3aGVuIGhpbnRpbmcgUG9zdHNjcmlwdCBmb250cy4gQSBzbWFsbCBmaXggd2l0aCBwcmV0dHkKICAgICAgICBpbXBvcnRhbnQgaW1wcm92ZW1lbnRzIGluIHF1YWxpdHkgb2YgUG9zdHNjcmlwdCBoaW50aW5nICEhCgogICAgICAgICogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oLCBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oLAogICAgICAgIHNyYy9iYXNlL2Z0b2Jqcy5jLCBzcmMvYmFzZS9mdGluaXQuYzogYWRkaW5nIHRoZSBuZXcgRlRfTGlicmFyeV9WZXJzaW9uCiAgICAgICAgQVBJIHRvIHJldHVybiB0aGUgbGlicmFyeSdzIGN1cnJlbnQgdmVyc2lvbiBpbiBkeW5hbWljIGxpbmtzLgoKICAgICAgICAqIHNyYy9SRUFETUU6IHVwZGF0aW5nIGZvciAyLjAuOSByZWxlYXNlCgogICAgICAgICogc3JjL3BzaGludGVyL3BzaGFsZ28yLmM6IGNoYW5nZWQgJ3ByaW50X3pvbmUnIHRvICdwc2gyX3ByaW50X3pvbmUnCiAgICAgICAgKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzEuYzogY2hhbmdlZCAncHJpbnRfem9uZScgdG8gJ3BzaDFfcHJpbnRfem9uZScKCiAgICAgICAgKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0ZXJyb3JzLmg6IHNtYWxsIHVwZGF0ZSB0byBwcmV2ZW50IGNvbXBpbGVyCiAgICAgICAgd2FybmluZ3MgcmVnYXJkaW5nIHRoZSByZS1kZWZpbml0aW9uIG9mIEZUX0VSUl9YQ0FUIGFuZCBGVF9FUlJfQ0FUCiAgICAgICAgKHdpdGggV2luMzItTENDKQoKICAgICAgICAqIHNyYy9hdXRvaGludC9haGhpbnQuYywgc3JjL2NhY2hlL2Z0Y2ltYWdlLmM6IHJlbW92ZWQgY29tcGlsZXIKICAgICAgICB3YXJuaW5ncyAod2l0aCBWaXN1YWwgQysrKQoKICAgICAgICAqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfRmFjZV9Jbml0KSwgc3JjL2NpZC9jaWRvYmpzLmMgKENJRF9GYWNlX0luaXQpOgogICAgICAgIGZpeGVkIGFub3RoZXIgYnVnIHJlbGF0ZWQgdG8gdGhlIGFzY2VuZGVyL2Rlc2NlbmRlci90ZXh0IGhlaWdodCBvZgogICAgICAgIFBvc3RzY3JpcHQgZm9udHMuIERhbW4sIHRoaXMgc2hvdWxkIGhhdmUgYmVlbiBmaXhlZCBvbiAyMDAyLTAzLTA0ICEKCjIwMDItMDMtMDYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmggKFBTSF9EaW1lbnNpb25SZWMpOiBzL3N0ZC9zdGR3Ly4KCSogc3JjL3BzaGludGVyL3BzaGdsb2IuYyAocHNoX2dsb2JhbF9zY2FsZV93aWR0aHMsCglwc2hfZGltZW5zaW9uX3NuYXBfd2lkdGgsIHBzaF9nbG9iYWxzX2Rlc3Ryb3ksIHBzaF9nbG9iYWxzX25ldyk6CglEaXR0by4KCjIwMDItMDMtMDUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2FjbG9jYWwubTQsIGJ1aWxkcy91bml4L2x0bWFpbi5zaDogVXBkYXRlIHRvIGxpYnRvb2wKCTEuNC4yLgoJQXBwbHkgYSBzbWFsbCBwYXRjaCBmb3IgQUlYIHRvIG1ha2Ugc2hhcmVkIGxpYnJhcmllcyB3b3JrICh0aGlzCglwYXRjaCBpcyBhbHJlYWR5IGluIHRoZSBDVlMgdmVyc2lvbiBvZiBsaWJ0b29sKS4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZy5zdWIsIGJ1aWxkcy91bml4L2NvbmZpZy5ndWVzczogVXBkYXRlZCB0bwoJcmVjZW50IHZlcnNpb25zLgoKCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjOiBGaXggdHlwbwoJKEFDX0NPTkZJR19GSUxFLT5BQ19DT05GSUdfRklMRVMpLgoKCSogYnVpbGRzL3VuaXgvY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCgkqIGRvY3MvQ0hBTkdFUzogVXBkYXRlZC4KCjIwMDItMDMtMDQgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGRvY3MvQ0hBTkdFUzogU21hbGwgdXBkYXRlLgoKCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChTRk5UX0ZhY2VfSW5pdCksIHNyYy9jaWQvY2lkb2Jqcy5jCgkoQ0lEX0ZhY2VfSW5pdCksIHNyYy9jZmYvY2Zmb2Jqcy5jIChDRkZfRmFjZV9Jbml0KTogUmVtb3ZlZCB0aGUgYnVnCgl0aGF0IHByZXZlbnRlZCBjb3JyZWN0IGJvdW5kaW5nIGJveCB2YWx1ZXMgZnJvbSBiZWluZyByZXR1cm5lZCAtLQoJcHJldmlvdXMgdmFsdWVzIHdlcmUgaW4gMTYuMTYgZml4ZWQgZm9ybWF0LgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvYWRfTmFtZXMpLCBzcmMvc2ZudC9zZm9ianMuYyAoR2V0X05hbWUpLAoJc3JjL3NmbnQvc2Zkcml2ZXIuYyAoZ2V0X3NmbnRfcG9zdHNjcmlwdF9uYW1lKTogRml4ZWQgdGhlIGxvYWRlciBzbwoJdGhhdCBpdCBhY2NlcHRzIGJyb2tlbiBmb250cyBsaWtlICJmb3hqdW1wLnR0ZiIsIHdoaWNoIG1hZGUgRnJlZVR5cGUKCWNyYXNoIHdoZW4gdHJ5aW5nIHRvIGxvYWQgdGhlbS4KCglBbHNvIGltcHJvdmVkIHRoZSBuYW1lIHRhYmxlIHBhcnNlciB0byBiZSBhYmxlIHRvIGxvYWQKCVdpbmRvd3MtZW5jb2RlZCBlbnRyaWVzIGJlZm9yZSBNYWNpbnRvc2ggb3IgVW5pY29kZSBvbmVzLCBzaW5jZSBpdAoJc2VlbXMgc29tZSBmb250cyBkb24ndCBoYXZlIHJlbGlhYmxlIHZhbHVlcyBoZXJlIGFueXdheS4KCgkqIHNyYy9jaWQvY2lkcml2ZXIuYyAoY2lkX2dldF9wb3N0c2NyaXB0X25hbWUpOiBGaXhlZCB0aGUgcm91dGluZQoJdXNlZCB0byByZXR1cm4gYSBDSUQgZm9udCdzIFBvc3RzY3JpcHQgbmFtZSwgaW4gb3JkZXIgdG8gcmVtb3ZlIHRoZQoJbGVhZGluZyAiLyIuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaDogSW50cm9kdWNlZCB0aGUgRlRfVFJBQ0VfVEVTVAoJbWFjcm8gdG8gc2ltcGxpZnkgZGVidWdnaW5nIG91dHB1dCBhIGJpdC4KCjIwMDItMDItMjggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogY2hhbmdlZCBwYXRjaCBsZXZlbCB0byA5LgoJQWRkZWQgdGhlIGRlY2xhcmF0aW9ucyBvZiBGVF9HZXRfRmlyc3RfQ2hhciBhbmQgRlRfR2V0X05leHRfQ2hhci4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jOiBJbXBsZW1lbnRlZCBGVF9HZXRfRmlyc3RfQ2hhciBhbmQKCUZUX0dldF9OZXh0X0NoYXIgdG8gYWxsb3cgY2hhcm1hcCBlbnVtZXJhdGlvbi4KCjIwMDItMDItMjggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIFNUQUJMRSBicmFuY2ggY3JlYXRlZCwgdGhlIEhFQUQgaXMgdXNlZCBmb3IgdGhlIG1ham9yIHJlLWZhY3RvcmluZwoJbmVlZGVkIHRvIGdldCBGcmVlVHlwZSAyLjIgb3V0LgoKMjAwMi0wMi0wOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogVmVyc2lvbiAyLjAuOCByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgkqIGRvY3MvQ0hBTkdFUzogVXBkYXRpbmcgZm9yIDIuMC44LgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBTZXR0aW5nIFBBVENIX0xFVkVMIHRvIDggYW5kCglyZW1vdmluZyBGVF9HZXRfTmV4dF9DaGFyIGZyb20gdGhlIEFQSSAodGVtcG9yYXJpbHkpLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBBZGRpbmcgY29tbWVudHMgdG8gRlRfR2V0X05leHRfQ2hhcjsKCW5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIG1pZ2h0IHRlbXBvcmFyaWx5IGJlIHJlbW92ZWQgZm9yIHRoZSAyLjAuOAoJcmVsZWFzZS4KCjIwMDItMDItMDcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wY2YvcGNmcmVhZC5jIChwY2ZfbG9hZF9mb250KTogUmVtb3ZlZCBpbW1hdHVyZSBzdXBwb3J0IG9mCgl0aGUgQVZFUkFHRV9XSURUSCBwcm9wZXJ0eS4KCjIwMDItMDItMDYgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9zZm50L3Nmb2Jqcy5jIChTRk5UX0xvYWRfRmFjZSk6IFNpbmNlIG1hbnkgZm9udHMgZW1iZWRkZWQgaW4KCVBERiBkb2N1bWVudHMgZG8gbm90IGluY2x1ZGUgJ2NtYXAnLCAncG9zdCcgYW5kICduYW1lJyB0YWJsZXMsIHRoZQoJU0ZOVCBmYWNlIGxvYWRlciBoYXMgYmVlbiBjaGFuZ2VkIHRvIG5vdCBpbW1lZGlhdGVseSByZXBvcnQgYW4KCWVycm9yIGlmIHRoZXNlIGFyZSBub3QgcHJlc2VudC4KCglOb3RlIHRoYXQgdGhlIHNwZWNpZmljYXRpb24gX3JlcXVpcmVzXyB0aGVzZSB0YWJsZXMsIGJ1dCBBZG9iZQoJc2VlbXMgdG8gaWdub3JlIGl0IGNvbXBsZXRlbHkuCgoJKiBzcmMvc2ZudC90dGNtYXAuYzogUmVtb3ZpbmcgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBzcmMvcGNmL3BjZnJlYWQuYyAocGNmX3JlYWRfVE9DKTogVXNlIEZUX1VJbnQuCgkocGNmX3BhcnNlX21ldHJpYywgcGNmX3BhcnNlX2NvbXByZXNzZWRfbWV0cmljKTogUmVtb3ZlZC4gIENvZGUKCWlzIG5vdyBpbiAuLi4KCShwY2ZfZ2V0X21ldHJpYyk6IEhlcmUuCgkocGNmU2Vla1RvVHlwZSk6IFJlbmFtZWQgdG8gLi4uCgkocGNmX3NlZWtfdG9fdGFibGVfdHlwZSk6IFRoaXMuCglVc2UgRlRfSW50LgoJKHBjZkhhc1R5cGUpOiBSZW5hbWVkIHRvIC4uLgoJKHBjZl9oYXNfdGFibGVfdHlwZSk6IFRoaXMuCglVc2UgRlRfSW50LgoJKGZpbmRfcHJvcGVydHkpOiBSZW5hbWVkIHRvIC4uLgoJKHBjZl9maW5kX3Byb3BlcnR5KTogVGhpcy4KCVVzZSBGVF9JbnQuCgkocGNmX2dldF9iaXRtYXBzLCBwY2ZfZ2V0X2VuY29kaW5ncyk6IEhhbmRsZSBpbnZhbGlkIFBDRiBmb250cwoJYmV0dGVyIChkZWxheWluZyBmb3JtYXQgY2hlY2tzIG91dCBvZiBGVF9BY2Nlc3NfRnJhbWUgLi4KCUZUX0ZvcmdldF9GcmFtZSBibG9ja3MgdG8gYXZvaWQgbGVhdmluZyB0aGUgc3RyZWFtIGluIGFuIGluY29ycmVjdAoJc3RhdGUgd2hlbiBlbmNvdW50ZXJpbmcgYW4gaW52YWxpZCBQQ0YgZm9udCkuCgoJKiBzcmMvcGNmL3BjZmRyaXZlci5jIChQQ0ZfRG9uZV9GYWNlKTogUmVuYW1lZCB0byAuLi4KCShQQ0ZfRmFjZV9Eb25lKTogVGhpcy4KCShQQ0ZfSW5pdF9GYWNlKTogUmVuYW1lZCB0byAuLi4KCShQQ0ZfRmFjZV9Jbml0KTogVGhpcy4KCShQQ0ZfR2V0X0NoYXJfSW5kZXgpOiBSZW5hbWVkIHRvIC4uLgoJKFBDRl9DaGFyX0dldF9JbmRleCk6IFRoaXMuCgkoUENGX0dldF9OZXh0X0NoYXIpOiBSZW5hbWVkIHRvIC4uLgoJKFBDRl9DaGFyX0dldF9OZXh0KTogVGhpcy4KCShwY2ZfZHJpdmVyX2NsYXNzKTogVXBkYXRlZC4KCgkqIHNyYy9wY2YvcGNmLmggKFBDRl9Eb25lX0ZhY2UpOiBSZW1vdmVkLgoKMjAwMi0wMi0wNiAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmMgKEZUX0RvbmVfRmFjZSk6IEZpeGVkIHNtYWxsIG1lbW9yeSBsZWFrLgoKCSogc3JjL3BjZi9wY2ZyZWFkLmMgKHBjZl9sb2FkX2ZvbnQpOiBOb3cgaGFuZGxlcyB0aGUgIkFWRVJBR0VfV0lEVEgiCglwcm9wZXJ0eSB0byByZXR1cm4gY29ycmVjdCBjaGFyYWN0ZXIgcGl4ZWwgKHdpZHRoL2hlaWdodCkgcGFpcnMgZm9yCgllbWJlZGRlZCBiaXRtYXBzLgoKMjAwMi0wMi0wNCAgS2VpdGggUGFja2FyZCAgPGtlaXRocEBrZWl0aHAuY29tPgoKCUFkZGluZyB0aGUgZnVuY3Rpb24gYEZUX0dldF9OZXh0X0NoYXInLCBkb2luZyB0aGUgb2J2aW91cyB0aGluZwoJdy5yLnQuIHRoZSBzZWxlY3RlZCBjaGFybWFwLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBBZGQgcHJvdG90eXBlLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZHJpdmVyLmg6IEFkZCBgRlREcml2ZXJfZ2V0TmV4dENoYXInCgl0eXBlZGVmLgoJKEZUX0RyaXZlcl9DbGFzcyk6IFVzZSBpdC4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc25hbWVzLmg6IEFkZCBgUFNfTmV4dF9Vbmljb2RlX0Z1bmMnCgl0eXBlZGVmLgoJKFBTTmFtZXNfSW50ZXJmYWNlKTogVXNlIGl0LgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaDogQWRkIGBUVF9DaGFyTmV4dF9GdW5jJwoJdHlwZWRlZi4KCShUVF9DTWFwVGFibGUpOiBVc2UgaXQuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfR2V0X05leHRfQ2hhcik6IE5ldyBmdW5jdGlvbiwgaW1wbGVtZW50aW5nCgloaWdoLWxldmVsIEFQSS4KCSogc3JjL2NmZi9jZmZkcml2ci5jIChjZmZfZ2V0X25leHRfY2hhcik6IE5ldyBmdW5jdGlvbi4KCShjZmZfZHJpdmVyX2NsYXNzKTogQWRkIGl0LgoJKiBzcmMvY2lkL2NpZHJpdmVyLmMgKENpZF9HZXRfTmV4dF9DaGFyKTogTmV3IGZ1bmN0aW9uLgoJKHQxY2lkX2RyaXZlcl9jbGFzcyk6IEFkZCBpdC4KCSogc3JjL3BjZi9wY2Zkcml2ZXIuYyAoUENGX0dldF9OZXh0X0NoYXIpOiBOZXcgZnVuY3Rpb24uCgkocGNmX2RyaXZlcl9jbGFzcyk6IEFkZCBpdC4KCSogc3JjL3BzbmFtZXMvcHNtb2R1bGUuYyAoUFNfTmV4dF9Vbmljb2RlKTogTmV3IGZ1bmN0aW9uLgoJKHBzbmFtZXNfaW50ZXJmYWNlKTogQWRkIGl0LgoJKiBzcmMvc2ZudC90dGNtYXAuYyAoY29kZV90b19uZXh0MCwgY29kZV90b19uZXh0MiwgY29kZV90b19uZXh0NCwKCWNvZGVfdG9fbmV4dDYsIGNvZGVfdG9fbmV4dF84XzEyLCBjb2RlX3RvX25leHRfMTApOiBOZXcgYXV4aWxpYXJ5CglmdW5jdGlvbnMuCgkoVFRfQ2hhck1hcF9Mb2FkKTogVXNlIHRoZW0uCgkqIHNyYy90cnVldHlwZS90dGRyaXZlci5jIChHZXRfTmV4dF9DaGFyKTogTmV3IGZ1bmN0aW9uLgoJKHR0X2RyaXZlcl9jbGFzcyk6IEFkZCBpdC4KCSogc3JjL3R5cGUxL3QxZHJpdmVyLmMgKEdldF9OZXh0X0NoYXIpOiBOZXcgZnVuY3Rpb24uCgkodDFfZHJpdmVyX2NsYXNzKTogQWRkIGl0LgoJKiBzcmMvd2luZm50L3dpbmZudC5jIChGTlRfR2V0X05leHRfQ2hhcik6IE5ldyBmdW5jdGlvbi4KCSh3aW5mbnRfZHJpdmVyX2NsYXNzKTogQWRkIGl0LgoKCSogc3JjL3BjZi9wY2ZyZWFkLmMgKHBjZl9sb2FkX2ZvbnQpOiBGb3Igbm93LCByZXBvcnQgVW5pY29kZSBmb3IKCVVuaWNvZGUgYW5kIExhdGluIDEgZW5jb2RpbmdzLgoKMjAwMi0wMi0wMiAgS2VpdGggUGFja2FyZCAgPGtlaXRocEBrZWl0aHAuY29tPgoKCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUtY29uZmlnLmluOiBBZGQgbWlzc2luZyBgZmknLgoKCgkqIFZlcnNpb24gMi4wLjcgcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PT09CgoKMjAwMi0wMi0wMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBJbmNyZWFzaW5nIEZSRUVUWVBFX1BBVENIIHRvIDcKCWZvciB0aGUgbmV3IHJlbGVhc2UuCgoyMDAyLTAxLTMxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBSRUFETUUsIFJFQURNRS5VTlgsIGRvY3MvQ0hBTkdFUzogVXBkYXRpbmcgZG9jdW1lbnRhdGlvbiBmb3IgdGhlCgkyLjAuNyByZWxlYXNlLgoKMjAwMi0wMS0zMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogSU5TVEFMTDogTW92ZWQgdG8gLi4uCgkqIGRvY3MvSU5TVEFMTDogSGVyZSB0byBhdm9pZCBjb25mbGljdHMgd2l0aCB0aGUgImluc3RhbGwiIHNjcmlwdCBvbgoJV2luZG93cywgd2hlcmUgdGhlIGZpbGVzeXN0ZW0gZG9lc24ndCBwcmVzZXJ2ZSBjYXNlLgoKMjAwMi0wMS0yOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogY29uZmlndXJlOiBGaXhlZCB0aGUgc2NyaXB0LiAgSXQgcHJldmlvdXNseSBkaWRuJ3QgYWNjZXB0IG1vcmUKCXRoYW4gb25lIGFyZ3VtZW50IGNvcnJlY3RseS4gIEZvciBleGFtcGxlLCB3aGVuIHR5cGluZzoKCgkgIC4vY29uZmlndXJlIC0tZGlzYWJsZS1zaGFyZWQgLS1kaXNhYmxlLW5scwoKCXRoZSAiLS1kaXNhYmxlLW5scyIgd2FzIGluY29ycmVjdGx5IHNlbnQgdG8gdGhlICJtYWtlIiBwcm9ncmFtLgoKMjAwMi0wMS0yOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogUkVBRE1FLlVOWDogRml4IHR5cG8uCgkqIGJ1aWxkcy91bml4L2luc3RhbGwubWsgKHVuaW5zdGFsbCk6IEZpeCBsaWJyYXJ5IG5hbWUgZm9yIGxpYnRvb2wuCgoyMDAyLTAxLTI4ICBGcmFuY2VzY28gWmFwcGEgTmFyZGVsbGkgIDxGcmFuY2VzY28uWmFwcGEuTmFyZGVsbGlAZW5zLmZyPgoKCSogc3JjL3BjZi9wY2Zkcml2ZXIuYyAoUENGX0RvbmVfRmFjZSk6IEZpeCBpbmNvcnJlY3QgZGVzdHJ1Y3Rpb24gb2YKCXRoZSBmYWNlIG9iamVjdCAoZmFjZS0+dG9jLnRhYmxlcywgZmFjZS0+cm9vdC5mYW1pbHlfbmFtZSwKCWZhY2UtPnJvb3QuYXZhaWxhYmxlX3NpemUsIGZhY2UtPmNoYXJzZXRfZW5jb2RpbmcsCglmYWNlLT5jaGFyc2V0X3JlZ2lzdHJ5IGFyZSBub3cgZnJlZWQpLiAgVGhhbmtzIHRvIE5pZWxzIE1vc2VsZXkuCgoyMDAyLTAxLTI4ICBSb2JlcnRvIEFsYW1lZGEgIDxvamFuY2Fub0BnZWVrbWFpbC5kZT4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2VfZW5jb2RpbmcpOiBTZXQgYGxvYWRlci0+bnVtX2NoYXJzJy4KCjIwMDItMDEtMjggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2Vfc3VicnMsIHBhcnNlX2NoYXJzdHJpbmdzKTogVXNlIGNvcHkKCW9mIGBiYXNlJyBzdHJpbmcgZm9yIGRlY3J5cHRpbmcgdG8gbm90IG1vZGlmeSB0aGUgb3JpZ2luYWwgZGF0YS4KCUJhc2VkIG9uIGEgcGF0Y2ggYnkgSmFrdWIgQm9ndXN6IDxxYm9vc2hAcGxkLm9yZy5wbD4uCgoyMDAyLTAxLTI3ICBHaXVsaWFubyBQb2NoaW5pICA8cG9jaGluaUBzaGlueS5pdD4KCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jIChncmF5X3JlbmRlcl9zY2FubGluZSk6IEZpeCBidWcgd2hpY2ggY2F1c2VkCgliYWQgcmVuZGVyaW5nIG9mIHRoaW4gbGluZXMgKGxlc3MgdGhhbiBvbmUgcGl4ZWwgdGhpY2spLgoKMjAwMi0wMS0yNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NmZi9jZmZkcml2ci5jIChjZmZfZ2V0X25hbWVfaW5kZXgpOiBNYWtlIGxhc3QgcGF0Y2ggd29yawoJYWN0dWFsbHkuCgoyMDAyLTAxLTI1ICBNYXJ0aW4gWmluc2VyICA8emluc2VyQGRlY3VzLmRlPgoKCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmMgKGZ0Y19ub2RlX2RvbmUsIGZ0Y19ub2RlX2Rlc3Ryb3kpOiBGaXgKCWNvbXBpbGF0aW9uIHdhcm5pbmdzLgoJKiBzcmMvYmFzZS9kZXNjcmlwLm1tcyAoT0JKUyk6IEFkZCBgZnRtbS5vYmonLgoJKiBzcmMvY2FjaGUvZGVzY3JpcC5tbXMgKGZ0Y2FjaGUub2JqKTogRGVwZW5kZW5jaWVzIGFkZGVkLgoKMjAwMi0wMS0yNSAgV0FORyBZaSAgPHdhbmd5aUBmb3VuZGVyLmNvbS5jbj4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoY2ZmX2dldF9uYW1lX2luZGV4KTogRml4IGRlYWxsb2NhdGlvbiBidWcuCgoyMDAyLTAxLTIxICBBbnRvaW5lIExlY2EgIDxBbnRvaW5lLUZyZWV0eXBlQExlY2EtTWFydGkub3JnPgoKCSogZG9jcy9QQVRFTlRTOiBUeXBvIGZpeGVkICh0aGFua3MgdG8gRGV0bGVmICJIYXdrZXllIiBX/HJrbmVyKSBpbgoJdGhlIFVSTCBmb3IgdGhlIG9ubGluZSByZXNvdXJjZS4KCjIwMDItMDEtMTggIElhbiBCcm93biAgPGlhbi5icm93bkBwcmludHNvZnQuZGU+CgoJKiBidWlsZHMvd2luMzIvZnRkZWJ1Zy5jOiBOZXcgZmlsZS4KCSogYnVpbGRzL3dpbjMyL3Zpc3VhbGMvZnJlZXR5cGUuZHNwOiBVcGRhdGVkLgoKMjAwMi0wMS0xOCAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIGJ1aWxkcy9hbWlnYS9zcmMvYmFzZS9mdHN5c3RlbS5jOiBVcGRhdGVkIGZvciBBbWlnYU9TIDMuOS4KCSogYnVpbGRzL2FtaWdhL1JFQURNRTogVXBkYXRlZC4KCjIwMDItMDEtMTggIElhbiBCcm93biAgPGlhbi5icm93bkBwcmludHNvZnQuZGU+CgoJKiBidWlsZHMvd2luMzIvdmlzdWFsYy9mcmVldHlwZS5kc3A6IFVwZGF0ZWQuCgoyMDAyLTAxLTEzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9mcmVldHlwZTIuYTQ6IFRoZSBzY3JpcHQgd2FzIHN0aWxsIGJ1Z2d5LgoJKiBidWlsZHMvdW5peC9mcmVldHlwZS1jb25maWcuaW46IE1ha2UgaXQgcmVhbGx5IHdvcmsgZm9yIGFueSBpbnN0YWxsCglwcmVmaXguCgoyMDAyLTAxLTEwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9mcmVldHlwZTIuYTQ6IEZpeCBzb21lIHNlcmlvdXMgYnVncy4KCjIwMDItMDEtMDkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYzogQnVpbGQgdG9wLWxldmVsIEphbWZpbGUuCgoyMDAyLTAxLTA5ICBNYXhpbSBTaGVtYW5hcmV2ICA8bWNzZWVtYWdnQHlhaG9vLmNvbT4KCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jIChncmF5X3JlbmRlcl9saW5lKTogU21hbGwgb3B0aW1pemF0aW9uIHRvCgl0aGUgc21vb3RoIGFudGktYWxpYXNlZCByZW5kZXJlciB0aGF0IGRlYWxzIHdpdGggdmVydGljYWwgc2VnbWVudHMuCglUaGlzIHJlc3VsdHMgaW4gYSA1LTclIHNwZWVkdXAgaW4gcmVuZGVyaW5nIHNwZWVkLgoKMjAwMi0wMS0wOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUFkZGVkIHNvbWUgd3JhcHBlciBzY3JpcHRzIHRvIG1ha2UgdGhlIGluc3RhbGxhdGlvbiBtb3JlCglVbml4LWZyaWVuZGx5LgoKCSogY29uZmlndXJlLCBpbnN0YWxsOiBOZXcgZmlsZXMuCgoJKiBJTlNUQUxMLCBSRUFETUUuVU5YOiBVcGRhdGVkIGluc3RhbGxhdGlvbiBkb2N1bWVudGF0aW9uIHRvIHVzZSB0aGUKCW5ldyAnY29uZmlndXJlJyBhbmQgJ2luc3RhbGwnIHNjcmlwdHMuCgoyMDAyLTAxLTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoKCSogVmVyc2lvbiAyLjAuNiByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoJKiBkb2NzL0JVR1MsIGRvY3MvQ0hBTkdFUzogVXBkYXRpbmcgZG9jdW1lbnRhdGlvbiBmb3IgMi4wLjYgcmVsZWFzZS4KCgkqIHNyYy90b29scy9kb2NtYWtlci5weTogRml4ZWQgSFRNTCBxdW90aW5nIGluIHNvdXJjZXMuCgkoaHRtbF9mb3JtYXQpOiBSZXBsYWNlZCB3aXRoIC4uLgoJKGh0bWxfcXVvdGUpOiBOZXcgZnVuY3Rpb24uCgkoaHRtbF9xdW90ZTApOiBOZXcgZnVuY3Rpb24uCgkoRG9jQ29kZTo6ZHVtcF9odG1sOiBTbWFsbCBpbXByb3ZlbWVudC4KCShEb2NQYXJhZ3JhcGg6OmR1bXAsIERvY0Jsb2NrOjpodG1sKTogVXNlIGh0bWxfcXVvdGUwIGFuZCBodG1sX3F1b3RlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaDogU2V0dGluZyBkZWZhdWx0IG9wdGlvbnMgZm9yCglhIHJlbGVhc2UgYnVpbGQgKGRlYnVnZ2luZyBvZmYsIGJ5dGVjb2RlIGludGVycHJldGVyIG9mZikuCgoJKiBzcmMvYmFzZS9mdG9ianMuYywgc3JjL2Jhc2UvZnRvdXRsbi5jLCBzcmMvY2FjaGUvZnRjY21hcC5jLAoJc3JjL2NmZi9jZmZsb2FkLmMsIHNyYy9jZmYvY2Zmb2Jqcy5jLCBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYywKCXNyYy9zZm50L3R0bG9hZC5jLCBzcmMvc2ZudC90dHNiaXQuYzogUmVtb3Zpbmcgc21hbGwgY29tcGlsZXIKCXdhcm5pbmdzIChpbiBwZWRhbnRpYyBjb21waWxhdGlvbiBtb2RlcykuCgoyMDAyLTAxLTA1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2FsaWduX2xpbmtlZF9lZGdlKTogTW9kaWZpZWQgY29tcHV0YXRpb24KCW9mIGF1dG8taGludGVkIHN0ZW0gd2lkdGhzOyB0aGlzIGF2b2lkcyBjb2xvciBmcmluZ2VzIGluCgkiQ2xlYXJUeXBlLWxpa2UiIHJlbmRlcmluZy4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKFRUX0xvYWRfR2x5cGhfSGVhZGVyLAoJVFRfTG9hZF9TaW1wbGVfR2x5cGgsIFRUX0xvYWRfQ29tcG9zaXRlX0dseXBoLCBsb2FkX3RydWV0eXBlX2dseXBoKToKCU1vZGlmaWVkIHRoZSBUcnVlVHlwZSBsb2FkZXIgdG8gbWFrZSBpdCBtb3JlIHBhcmFub2lkOyB0aGlzIGF2b2lkcwoJbmFzdHkgYnVmZmVyIG92ZXJmbG93cyBpbiB0aGUgY2FzZSBvZiBpbnZhbGlkIGdseXBoIGRhdGEgKGFzCgllbmNvdW50ZXJlZCBpbiB0aGUgb3V0cHV0IG9mIHNvbWUgYnVnZ3kgZm9udCBjb252ZXJ0ZXJzKS4KCjIwMDItMDEtMDQgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIFJFQURNRS5VTlg6IEFkZGVkIHNwZWNpYWwgUkVBRE1FIGZpbGUgZm9yIFVuaXggdXNlcnMuCgoJKiBidWlsZHMvdW5peC9mdHN5c3RlbS5jIChGVF9OZXdfU3RyZWFtKTogRml4ZWQgdHlwby4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jOiBBZGRlZCAjaW5jbHVkZSBGVF9PVVRMSU5FX0ggdG8gZ2V0IHJpZAoJb2YgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBzcmMvYmFzZS9mdG91dGxuLmMgKEZUX091dGxpbmVfQ2hlY2spOiBSZW1vdmUgY29tcGlsZXIgd2FybmluZy4KCjIwMDItMDEtMDMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfRmFjZV9Jbml0KTogQWRkIGNhc3QgdG8gYXZvaWQgY29tcGlsZXIKCXdhcm5pbmcuCgoyMDAyLTAxLTAzICBLZWl0aCBQYWNrYXJkICA8a2VpdGhwQGtlaXRocC5jb20+CgoJKiBidWlsZHMvdW5peC9mdHN5c3RlbS5jIChGVF9OZXdfU3RyZWFtKTogQWRkZWQgYSBmaXggdG8gZW5zdXJlIHRoYXQKCWFsbCBGcmVlVHlwZSBpbnB1dCBzdHJlYW1zIGFyZSBjbG9zZWQgaW4gY2hpbGQgcHJvY2Vzc2VzIG9mIGEgImZvcmsiCglvbiBVbml4IHN5c3RlbXMuICBUaGlzIGlzIGltcG9ydGFudCB0byBhdm9pZCAocG90ZW50aWFsKSBhY2Nlc3MKCWNvbnRyb2wgaXNzdWVzLgoKMjAwMi0wMS0wMyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9GYWNlX0luaXQpOiBGaXhlZCBhIGJ1ZyB0aGF0IGNyYXNoZWQgdGhlCglsaWJyYXJ5IHdoZW4gZGVhbGluZyB3aXRoIGNlcnRhaW4gd2VpcmQgZm9udHMgbGlrZSAiU3RhbGluZ3JhZCIsIGluCgkic2Fkbi5wZmIiICh0aGlzIGZvbnQgaGFzIG5vIGZ1bGwgZm9udCBuYW1lIGVudHJ5KS4KCgkqIHNyYy9iYXNlL2Z0b3V0bG4uYywgaW5jbHVkZS9mcmVldHlwZS9mdG91dGxuLmggKEZUX091dGxpbmVfQ2hlY2spOgoJTmV3IGZ1bmN0aW9uIHRvIGNoZWNrIHRoZSBjb25zaXN0ZW5jeSBvZiBvdXRsaW5lIGRhdGEuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfTG9hZF9HbHlwaCk6IFVzZSBgRlRfT3V0bGluZV9DaGVjaycgdG8KCWVuc3VyZSB0aGF0IGxvYWRlZCBnbHlwaHMgYXJlIHZhbGlkLiAgVGhpcyBhbGxvd3MgY2VydGFpbiBmb250cyBsaWtlCgkidHQxMDk1bV8udHRmIiB0byBiZSBsb2FkZWQgZXZlbiB0aG91Z2ggaXQgYXBwZWFycyB0aGV5IGNvbnRhaW4KCXJlYWxseSBmdW5reSBnbHlwaHMuCgoJVGhlcmUgc3RpbGwgaXMgYSBidWcgdGhlcmUsIHRob3VnaC4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOiBGaXggZXJyb3IgY29uZGl0aW9uLgoKMjAwMS0xMi0zMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfbG9hZCk6IEZpeCBhZHZhbmNlIHdpZHRoCgljb21wdXRhdGlvbiBvZiBhdXRvLWhpbnRlZCBnbHlwaHMuICBUaGlzIG5vdGljZWFibHkgaW1wcm92ZXMgdGhlCglzcGFjaW5nIG9mIGxldHRlcnMgaW4gS0RFIGFuZCBHbm9tZS4KCjIwMDEtMTItMjUgIEFudG9pbmUgTGVjYSA8QW50b2luZS1GcmVldHlwZUBMZWNhLU1hcnRpLm9yZz4KCgkqIGJ1aWxkcy9kb3MvZGV0ZWN0Lm1rOiBDb3JyZWN0aW5nIHRoZSBvcmRlciBmb3IgQm9ybGFuZCBjb21waWxlcnM6CgkxNi1iaXQgYmNjIHdhcyBuZXZlciBzZWxlY3RlZCwgYWx3YXlzIG92ZXJyaWRkZW4gYnkgMzItYml0IGJjYzMyLgoKMjAwMS0xMi0yMiAgRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpICA8RnJhbmNlc2NvLlphcHBhLk5hcmRlbGxpQGVucy5mcj4KCgkqIHNyYy9wZmMvcGNmcmVhZC5jIChwY2ZfbG9hZF9mb250KTogSGFuZGxlIHByb3BlcnR5IGBQT0lOVF9TSVpFJwoJYW5kIGZpeCBpbmNvcnJlY3QgY29tcHV0YXRpb24gb2YgYGF2YWlsYWJsZV9zaXplcycuCgoyMDAxLTEyLTIyICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9sb2FkKTogQXV0by1oaW50ZWQgZ2x5cGhzIGhhZCBhbgoJaW5jb3JyZWN0IGdseXBoIGFkdmFuY2UgaW4gdGhlIGNhc2Ugb2YgbW9uby13aWR0aCBmb250cyAobGlrZQoJQ291cmllciwgQW5kYWxlIE1vbm8sIGFuZCBvdGhlcnMpLgoKMjAwMS0xMi0yMiAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIGJ1aWxkcy9hbWlnYS8qOiBBZGFwdGF0aW9ucyB0byBsYXRlc3QgY2hhbmdlcy4KCVN1cHBvcnQgYWRkZWQgZm9yIE1vcnBoT1MuCgoyMDAxLTEyLTIyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvcHNoaW50ZXIvcHNocmVjLmMgKEZUX0NPTVBPTkVOVCk6IFJlZGVmaW5lIHRvIGB0cmFjZV9wc2hyZWMnLgoJKHBzX21hc2tfdGFibGVfbWVyZ2UsIHBzX2hpbnRzX29wZW4sIHBzX2hpbnRzX3N0ZW0sCglwc19oaW50c190MXN0ZW0zLCBwc19oaW50c190Mm1hc2ssIHBzX2hpbnRzX3QyY291bnRlcik6IEZpeAoJRlRfRVJST1IgbWVzc2FnZXMuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMS5jIChGVF9DT01QT05FTlQpOiBEZWZpbmUgYXMKCWB0cmFjZV9wc2hhbGdvMScuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jIChGVF9DT01QT05FTlQpOiBEZWZpbmUgYXMKCWB0cmFjZV9wc2hhbGdvMicuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oIChGVF9UcmFjZSk6IFVwZGF0ZWQuCgoJKiBkb2NzL21vZHVsZXMudHh0OiBOZXcgZmlsZS4KCjIwMDEtMTItMjEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wc2hpbnRlci9wc2hyZWMuYyAocHNfaGludHNfdDJtYXNrLCBwc19oaW50c190MmNvdW50ZXIpOgoJSWdub3JlIGludmFsaWQgImhpbnRtYXNrIiBhbmQgImNudHJtYXNrIiBvcGVyYXRvcnMgKGluc3RlYWQgb2YKCXJldHVybmluZyBhbiBlcnJvcikuICBHbHlwaCAyMDI4IG9mIHRoZSBDRkYgZm9udCAiTVN1bmctTGlnaHQtQWNybyIKCWNvdWxkbid0IGJlIHJlbmRlcmVkIG90aGVyd2lzZSAoaXQgc2VlbXMgaXRzIGNoYXJzdHJpbmcgaXMgYnVnZ3ksCgl0aG91Z2ggdGhpcyByZXF1aXJlcyBtb3JlIGFuYWx5c2lzKS4KCShGVF9DT01QT05FTlQpOiBEZWZpbmUuCgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKENGRl9QYXJzZV9DaGFyU3RyaW5ncyksIHNyYy9wc2F1eC90MWRlY29kZS5jCgkoVDFfRGVjb2Rlcl9QYXJzZV9DaGFyc3RyaW5ncyksIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jICgqKSwgRml4ZWQgYQoJYnVnIHdoZXJlIHRoZSBYIGFuZCBZIGF4aXMgd2hlcmUgaW52ZXJzZWQgaW4gdGhlIHBvc3RzY3JpcHQgaGludGVyLgoJVGhpcyBjYXVzZWQgcHJvYmxlbSB3aGVuIGRpc3BsYXlpbmcgb24gbm9uLXNxdWFyZSBzdXJmYWNlcy4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jOiBzL3ZlcnRpY2FsL2RpbWVuc2lvbi8uCgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5jIChwc2hfZ2xvYmFsc19uZXcpOiBSZXBsYWNlZCBhIGZsb2F0aW5nCglwb2ludCBjb25zdGFudCB3aXRoIGEgZml4ZWQtZmxvYXQgZXF1aXZhbGVudC4gIEZvciBzb21lIHJlYXNvbnMgbm90CglhbGwgY29tcGlsZXJzIGFyZSBjYXBhYmxlIG9mIGRpcmVjdGx5IGNvbXB1dGluZyBhIGZsb2F0aW5nIHBvaW50ZXIKCWNvbnN0YW50IGNhc3RlZCB0byBGVF9GaXhlZCwgYW5kIHdpbGwgbGluayBhIG1hdGggbGlicmFyeSBpbnN0ZWFkLgoKMjAwMS0xMi0yMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmMgKGZ0Y19ub2RlX2Rlc3Ryb3ksIGZ0Y19jYWNoZV9sb29rdXApOiBGaXgKCXRyYWNpbmcgc3RyaW5ncy4KCSogc3JjL2NhY2hlL2Z0Y2NtYXAuYyAoZnRjX2NtYXBfZmFtaWx5X2luaXQpOiBEaXR0by4KCSogc3JjL2NhY2hlL2Z0Y21hbmFnLmMgKGZ0Y19mYW1pbHlfdGFibGVfYWxsb2MsCglmdGNfZmFtaWx5X3RhYmxlX2ZyZWUsIEZUQ19NYW5hZ2VyX0NoZWNrKTogRGl0dG8uCgkqIHNyYy9jYWNoZS9mdGNzYml0cy5jIChmdGNfc2JpdF9ub2RlX2xvYWQpOiBEaXR0by4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9Eb25lX0xpYnJhcnkpOiBSZW1vdmUgY29tcGlsZXIgd2FybmluZy4KCjIwMDEtMTItMjAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglBZGRlZCBQb3N0U2NyaXB0IGhpbnRlciBzdXBwb3J0IHRvIHRoZSBDRkYgYW5kIENJRCBkcml2ZXJzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9jZmZ0eXBlcy5oIChDRkZfRm9udCk6IE5ldyBtZW1iZXIKCWBwc2hpbnRlcicuCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChDRkZfR2V0X1N0YW5kYXJkX0VuY29kaW5nKTogTmV3IGZ1bmN0aW9uLgoJKiBzcmMvY2ZmL2NmZmxvYWQuaDogVXBkYXRlZC4KCSogc3JjL2NmZi9jZmZnbG9hZC5jIChDRkZfSW5pdF9CdWlsZGVyKTogUmVuYW1lZCB0byAuLi4KCShDRkZfQnVpbGRlcl9Jbml0KTogVGhpcy4KCUFkZGVkIG5ldyBhcmd1bWVudCBgaGludGluZycuCgkoQ0ZGX0RvbmVfQnVpbGRlcik6IFJlbmFtZWQgdG8gLi4uCgkoQ0ZGX0J1aWxkZXJfRG9uZSk6IFRoaXMuCgkoQ0ZGX0luaXRfRGVjb2Rlcik6IEFkZGVkIG5ldyBhcmd1bWVudCBgaGludGluZycuCgkoQ0ZGX1BhcnNlX0NoYXJTdHJpbmdzKTogSW1wbGVtZW50IHZzdGVtIHN1cHBvcnQuCgkoQ0ZGX0xvYWRfR2x5cGgpOiBVcGRhdGVkLgoJQWRkIGhpbnRpbmcgc3VwcG9ydC4KCShjZmZfbG9va3VwX2dseXBoX2J5X3N0ZGNoYXJjb2RlKTogVXNlIENGRl9HZXRfU3RhbmRhcmRfRW5jb2RpbmcoKS4KCShjZmZfYXJndW1lbnRfY291bnRzKTogVXBkYXRlZC4KCSogc3JjL2NmZi9jZmZnbG9hZC5oOiBVcGRhdGVkLgoJKiBzcmMvY2ZmL2NmZm9ianMuYzogSW5jbHVkZSBGVF9JTlRFUk5BTF9QT1NUU0NSSVBUX0hJTlRTX0guCgkoQ0ZGX1NpemVfR2V0X0dsb2JhbHNfRnVuY3MsIENGRl9TaXplX0RvbmUsIENGRl9TaXplX0luaXQsCglDRkZfU2l6ZV9SZXNldCwgQ0ZGX0dseXBoU2xvdF9Eb25lLCBDRkZfR0x5cGhTbG90X0luaXQpOiBOZXcKCWZ1bmN0aW9ucy4KCShDRkZfSW5pdF9GYWNlKTogUmVuYW1lZCB0byAuLi4KCShDRkZfRmFjZV9Jbml0KTogVGhpcy4KCUFkZCBoaW50ZXIgc3VwcG9ydC4KCShDRkZfRG9uZV9GYWNlKTogUmVuYW1lZCB0byAuLi4KCShDRkZfRmFjZV9Eb25lKTogVGhpcy4KCShDRkZfSW5pdF9Ecml2ZXIpOiBSZW5hbWVkIHRvIC4uLgoJKENGRl9Ecml2ZXJfSW5pdCk6IFRoaXMuCgkoQ0ZGX0RvbmVfRHJpdmVyKTogUmVuYW1lZCB0byAuLi4KCShDRkZfRHJpdmVyX0RvbmUpOiBUaGlzLgoJKiBzcmMvY2ZmL2NmZm9ianMuaDogVXBkYXRlZC4KCSogc3JjL2NmZi9jZmZkcml2ci5jIChjZmZfZHJpdmVyX2NsYXNzKTogVXBkYXRlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDF0eXBlcy5oIChDSURfRmFjZVJlYyk6IE5ldyBtZW1iZXIKCWBwc2hpbnRlcicuCgkqIHNyYy9jaWQvY2lkZ2xvYWQuYyAoQ0lEX0xvYWRfR2x5cGgpOiBBZGQgaGludGVyIHN1cHBvcnQuCgkqIHNyYy9jaWQvY2lkb2Jqcy5jOiBJbmNsdWRlIEZUX0lOVEVSTkFMX1BPU1RTQ1JJUFRfSElOVFNfSC4KCShDSURfR2x5cGhTbG90X0RvbmUsIENJRF9HbHlwaFNsb3RfSW5pdCwgQ0lEX1NpemVfR2V0X0dsb2JhbHNfRnVuY3MsCglDSURfU2l6ZV9Eb25lLCBDSURfU2l6ZV9Jbml0LCBDSURfU2l6ZV9SZXNldCk6IE5ldyBmdW5jdGlvbnMuCgkoQ0lEX0RvbmVfRmFjZSk6IFJlbmFtZWQgdG8gLi4uCgkoQ0lEX0ZhY2VfRG9uZSk6IFRoaXMuCgkoQ0lEX0luaXRfRmFjZSk6IFJlbmFtZWQgdG8gLi4uCgkoQ0lEX0ZhY2VfSW5pdCk6IFRoaXMuCglBZGQgaGludGluZyBzdXBwb3J0LgoJKENJRF9Jbml0X0RyaXZlcik6IFJlbmFtZWQgdG8gLi4uCgkoQ0lEX0RyaXZlcl9Jbml0KTogVGhpcy4KCShDSURfRG9uZV9Ecml2ZXIpOiBSZW5hbWVkIHRvIC4uLgoJKENJRF9Ecml2ZXJfRG9uZSk6IFRoaXMuCgkqIHNyYy9jaWQvY2lkb2Jqcy5oOiBVcGRhdGVkLgoJKiBzcmMvY2lkcml2ZXIuYzogVXBkYXRlZC4KCgkqIHNyYy9wc2hpbnRlci9wc2hyZWMuYyAodDJfaGludF9zdGVtcyk6IEZpeGVkLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0RvbmVfTGlicmFyeSk6IEZpeGVkIGEgc3R1cGlkIGJ1ZyB0aGF0CgljcmFzaGVkIHRoZSBsaWJyYXJ5IG9uIGV4aXQuCgoJKiBzcmMvdHlwZTEvdDFnbG9hZC5jIChUMV9Mb2FkX0dseXBoKTogRW5hYmxlIGZvbnQgbWF0cml4Cgl0cmFuc2Zvcm1hdGlvbiBvZiBoaW50ZWQgZ2x5cGhzLgoKCSogc3JjL2NpZC9jaWRsb2FkLmMgKGNpZF9yZWFkX3N1YnJzKTogRml4IGVycm9yIGNvbmRpdGlvbi4KCgkqIHNyYy9jaWQvY2lkb2Jqcy5jIChDSURfRmFjZV9Eb25lKTogRml4ZWQgYSBtZW1vcnkgbGVhazsgdGhlIHN1YnJzCglyb3V0aW5lcyB3ZXJlIG5ldmVyIHJlbGVhc2VkIHdoZW4gQ0lEIGZhY2VzIHdlcmUgZGVzdHJveWVkLgoKCSogc3JjL2NmZi9jZmZsb2FkLmgsIHNyYy9jZmYvY2ZmbG9hZC5jLCBzcmMvY2ZmL2NmZmdsb2FkLmM6IFVwZGF0ZWQKCXRvIG1vdmUgdGhlIGRlZmluaXRpb24gb2YgZW5jb2RpbmcgdGFibGVzIGJhY2sgd2l0aGluICJjZmZsb2FkLmMiCglpbnN0ZWFkIG9mIG1ha2luZyB0aGVtIHBhcnQgb2YgYSBzaGFyZWQgaGVhZGVyIChjYXVzaW5nIHByb2JsZW1zIGluCgkibXVsdGkiIGJ1aWxkcykuICBUaGlzIHJldmVydHMgY2hhbmdlIDIwMDEtMDgtMDguCgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQgZm9yIDIuMC42IHJlbGVhc2UuCgkqIGRvY3MvVE9ETzogQWRkZWQgInN0ZW0zIGFuZCBjb3VudGVyIGhpbnRzIHN1cHBvcnQiIHRvIHRoZSBUT0RPCglsaXN0IGZvciB0aGUgUG9zdHNjcmlwdCBoaW50ZXIuCgkqIGRvY3MvQlVHUzogQ2xvc2VkIHRoZSBBVVRPSElOVC1OTy1TQklUUyBidWcuCgoyMDAxLTEyLTE5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y2FjaGUuaDogQWRkZWQgY29tbWVudHMgdG8gaW5kaWNhdGUgdGhhdAoJc29tZSBvZiB0aGUgZXhwb3J0ZWQgZnVuY3Rpb25zIHNob3VsZCBvbmx5IGJlIHVzZWQgYnkgYXBwbGljYXRpb25zCgl0aGF0IG5lZWQgdG8gaW1wbGVtZW50IGN1c3RvbSBjYWNoZSB0eXBlcy4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGN1cl90b19vcmcsIG9yZ190b19jdXIpOiBGaXhlZCBhIG5hc3R5IGJ1ZwoJdGhhdCBwcmV2ZW50ZWQgY29tcG9zaXRlcyBmcm9tIGxvYWRpbmcgY29ycmVjdGx5LCBkdWUgdG8gbWlzc2luZwoJcGFyZW50aGVzZXMgYXJvdW5kIG1hY3JvIHBhcmFtZXRlcnMuCgoJKiBzcmMvc2ZudC9zZm9ianMuYyAoU0ZOVF9Mb2FkX0ZhY2UpOiBNYWtlIHRoZSAicG9zdCIgYW5kICJuYW1lIgoJdGFibGVzIG9wdGlvbmFsIHRvIGxvYWQgUENMIGZvbnRzIHByb3Blcmx5LgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAoVFRfTG9hZF9HbHlwaCksIHNyYy9iYXNlL2Z0b2Jqcy5jCgkoRlRfTG9hZF9HbHlwaCksIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfTE9BRF9TQklUU19PTkxZKToKCSJGaXhlZCIgdGhlIGJ1ZyB0aGF0IHByZXZlbnRlZCBlbWJlZGRlZCBiaXRtYXBzIHRvIGJlIGxvYWRlZCB3aGVuCgl0aGUgYXV0by1oaW50ZXIgaXMgdXNlZC4gIFRoaXMgYWN0dWFsbHkgaXMgYSBoYWNrIGJ1dCB3aWxsIGJlIGVub3VnaAoJdW50aWwgdGhlIGludGVybmFsIHJlLWRlc2lnbiBzY2hlZHVsZWQgZm9yIEZyZWVUeXBlIDIuMS4KCgkqIHNyYy9yYXN0ZXIvZnRyZW5kMS5jIChmdF9yYXN0ZXIxX3JlbmRlcik6IEZpeGVkIGEgbmFzdHkgb3V0bGluZQoJc2hpZnRpbmcgYnVnIGluIHRoZSBtb25vY2hyb21lIHJlbmRlcmVyLgoKCSogUkVBRE1FOiBVcGRhdGVkIHZlcnNpb24gbnVtYmVycyB0byAyLjAuNi4KCjIwMDEtMTItMTcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOiBGaXggdGVzdCBmb3IgaW52YWxpZAoJZ2x5cGggaGVhZGVyLgoKMjAwMS0xMi0xNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRnbHlwaC5jIChGVF9HbHlwaF9Ub19CaXRtYXApOiBSZW1vdmUgY29tcGlsZXIgd2FybmluZy4KCSogaW5jbHVkZS9mcmVldHlwZS9mdGNhY2hlLmggKEZUQ19Ob2RlX1VucmVmKTogUmVtb3ZlZC4gIEl0IGlzCglhbHJlYWR5IGluIGZ0Y21hbmFnLmguCgkqIHNyYy9jYWNoZS9mdGNzYml0cy5jIChmdGNfc2JpdF9ub2RlX2xvYWQpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlCglgZ2ZhbScuCgkqIHNyYy9jYWNoZS9mdGNtYW5hZy5jIChmdGNfZmFtaWx5X3RhYmxlX2FsbG9jLAoJKiBmdGNfZmFtaWx5X3RhYmxlX2ZyZWUpOiBVc2UgRlRfRVhQT1JUX0RFRi4KCSogaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNtYW5hZy5oOiBVcGRhdGVkLgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuYyAoZnRjX25vZGVfZGVzdHJveSk6IFVzZSBGVF9FWFBPUlRfREVGLgoJKiBzcmMvY2FjaGUvZnRjY21hcC5jIChmdGNfY21hcF9ub2RlX2luaXQpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlCglgY2ZhbScuCglSZW1vdmUgY29tcGlsZXIgd2FybmluZy4KCShGVENfQ01hcENhY2hlX0xvb2t1cCk6IFJlbW92ZSBjb21waWxlciB3YXJuaW5ncy4KCShmdGNfY21hcF9mYW1pbHlfaW5pdCk6IERpdHRvLgoJKEZUQ19DTWFwQ2FjaGVfTG9va3VwKTogRGl0dG8uCgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWM6IEluY3JlYXNlIGB2ZXJzaW9uX2luZm8nIHRvIDg6MDoyLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKMjAwMS0xMi0xNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL21hYy9SRUFETUU6IFVwZGF0ZWQuCgoyMDAxLTEyLTE0ICBTY290dCBMb25nICA8c2NvdHRAc3dpZnR2aWV3LmNvbT4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOiBGaXhpbmcgY3Jhc2ggd2hlbgoJZGVhbGluZyB3aXRoIGludmFsaWQgZm9udHMgKGkuZS4gZ2x5cGggc2l6ZSA8IDEwIGJ5dGVzKS4KCjIwMDEtMTItMTQgIFNhbSBMYXRpbmdhIDxzbG91a2VuQGRldm9sdXRpb24uY29tPgoKCSogYnVpbGRzL21hYy9mcmVldHlwZS5tYWtlOiBBIG5ldyBNYWtlZmlsZSB0byBidWlsZCB3aXRoIE1QVyBvbgoJTWFjT1MgY2xhc3NpYy4KCjIwMDEtMTItMTQgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKFRUX0xvYWRfR2x5cGgpLCBzcmMvdHlwZTEvdDFnbG9hZC5jCgkoVDFfTG9hZF9HbHlwaCksIHNyYy9jaWQvY2lkZ2xvYWQuYyAoQ0lEX0xvYWRfR2x5cGgpLAoJc3JjL2NmZi9jZmZnbG9hZC5jIChDRkZfTG9hZF9HbHlwaCk6IEZpeGVkIGEgc2VyaW91cyBidWcgY29tbW9uIHRvCglhbGwgZm9udCBkcml2ZXJzICh0aGUgYWR2YW5jZSB3aWR0aCB3YXMgbmV2ZXIgaGludGVkIHdoZW4gaXQKCXNob3VsZCkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZSRUVUWVBFX1BBVENIKTogTmV3IG1hY3JvLgoJKiBzcmMvYmFzZS9mdGRiZ21lbS5jIChkZWJ1Z19tZW1fZHVtbXkpIFshRlRfREVCVUdfTUVNT1JZXTogRG9uJ3QKCXVzZSBgZXh0ZXJuJyBrZXl3b3JkLgoKMjAwMS0xMi0xMiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3BzaGludC9wc2hnbG9iLmMgKHBzaF9ibHVlc19zY2FsZV96b25lcywgcHNoX2JsdWVzX3NuYXBfc3RlbQoJcHNoX2dsb2JhbHNfbmV3KTogQWRkaW5nIGNvcnJlY3QgQmx1ZVNjYWxlL0JsdWVTaGlmdCBzdXBwb3J0LCBwbHVzCglmYW1pbHkgYmx1ZXMgcHJvY2Vzc2luZy4KCSogc3JjL3BzaGludC9wc2hnbG9iLmggKFBTSF9CbHVlc1JlYyk6IFVwZGF0ZWQuCgoJU3RhcnRlZCBhZGRpbmcgc3VwcG9ydCBmb3IgdGhlIFBvc3RzY3JpcHQgaGludGVyIGluIHRoZSBDRkYgbW9kdWxlLgoKCSogc3JjL2NmZi9jZmZnbG9hZC5jOiBJbmNsdWRlIEZUX0lOVEVSTkFMX1BPU1RTQ1JJUFRfSElOVFNfSC4KCShDRkZfUGFyc2VfQ2hhclN0cmluZ3MpOiBJbXBsZW1lbnQgaXQuCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuaDogVXBkYXRlZC4KCjIwMDEtMTItMTIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlMi5tNDogU29tZSBwb3J0YWJpbGl0eSBmaXhlcy4KCjIwMDEtMTItMTEgIEpvdWsgSmFuc2VuICA8am91a2pAaHJlbS5zdG0udHVkZWxmdC5ubD4KCgkqIHNyYy9iYXNlL2Rlc2NyaXAubW1zIChPQkpTKTogQWRkIGZ0ZGVidWcub2JqLgoKMjAwMS0xMi0xMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvYWRfR2VuZXJpY19IZWFkZXIpOiBUeXBvcy4KCjIwMDEtMTItMTEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlLWNvbmZpZy5pbjogTW9kaWZpZWQgdGhlIHNjcmlwdCB0byBwcmV2ZW50CglwYXNzaW5nICItTC91c3IvbGliIiB0byBnY2MuCgoJKiBkb2NzL0ZUTC5UWFQ6IFNpbXBsZSBmaXggKGNoYW5nZSAiTElDRU5TRS5UWFQiIHRvICJGVEwuVFhUIikuCgoJKiBidWlsZHMvdW5peC9mcmVldHlwZTIubTQ6IE5ldyBmaWxlIGZvciBjaGVja2luZyBjb25maWd1cmUgcGF0aHMuCglXZSBuZWVkIHRvIGluc3RhbGwgaXQgaW4gJChwcmVmaXgpL3NoYXJlL2FjbG9jYWwvZnJlZXR5cGUyLm00IGJ1dCBJCglkaWRuJ3QgbW9kaWZ5IGJ1aWxkcy91bml4L2luc3RhbGwubWsgeWV0LgoKCSogSU5TVEFMTDogVXBkYXRlZCB0aGUgaW5zdHJ1Y3Rpb25zIHRvIGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXMgd2l0aAoJSmFtLiAgVGhleSB3ZXJlIHNpbXBseSB3cm9uZy4KCgkqIHNyYy9iYXNlL2Z0dHJpZ29uLmMgKEZUX0Nvcyk6IEZpeGVkIGEgc21hbGwgYnVnIHRoYXQgY2F1c2VkCglzbGlnaHRseSBpbXByb3BlciByZXN1bHRzIGZvciBgRlRfQ29zJyBhbmQgYEZUX1NpbicgKGV4YW1wbGU6CglGVF9TaW4oMCkgPT0gLTEhKS4KCjIwMDEtMTItMTEgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c3RyZWFtLmggKEdFVF9Mb25nTEUsIEdFVF9VTG9uZ0xFKToKCUZpeGVkIGluY29ycmVjdCBhcmd1bWVudCB0eXBlcy4KCjIwMDEtMTItMTAgIEZyYW5jZXNjbyBaYXBwYSBOYXJkZWxsaSAgPEZyYW5jZXNjby5aYXBwYS5OYXJkZWxsaUBlbnMuZnI+CgoJKiBzcmMvcGNmL3BjZmRyaXZlci5jIChQQ0ZfSW5pdF9GYWNlKTogQWxsb3cgWGZ0IHRvIHVzZSBQQ0YgZm9udHMKCWJ5IHNldHRpbmcgdGhlICJmYWNlLT5tZXRyaWNzLm1heF9hZHZhbmNlIiBjb3JyZWN0bHkuCgoyMDAxLTEyLTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y2NtYXAuaCwgc3JjL2NhY2hlL2Z0Y2NtYXAuYzogQWRkZWQgbmV3CgljaGFybWFwIGNhY2hlLgoJKiBzcmMvY2FjaGUvZnRjYWNoZS5jOiBVcGRhdGVkLgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfaGludF9lZGdlcyk6IHMvVU5VU0VEL0ZUX1VOVVNFRC8uCgoyMDAxLTEyLTA2ICBMZW9uYXJkIFJvc2VudGhvbCAgPGxlb25hcmRyQGxhemVyd2FyZS5jb20+CgoJQWRkZWQgc3VwcG9ydCBmb3IgcmVhZGluZyAuZGZvbnQgZmlsZXMgb24gTWFjIE9TIFguICBBbHNvIGFkZGVkIGEKCW5ldyByb3V0aW5lIHdoaWNoIGxvb2tzIHVwIGEgZ2l2ZW4gZm9udCBieSBuYW1lIGluIHRoZSBNYWMgT1MgYW5kCglyZXR1cm5zIHRoZSBkaXNrIGZpbGUgd2hlcmUgaXQgcmVzaWRlcy4KCgkqIHNyYy9iYXNlL2Z0bWFjLmM6IEluY2x1ZGUgPEZpbGVzLmg+IGFuZCA8VGV4dFV0aWxzLmg+LgoJKGlzX2Rmb250KTogTmV3IGF1eGlsaWFyeSBmdW5jdGlvbi4KCShGVF9OZXdfRmFjZV9Gcm9tX2Rmb250KTogTmV3IGZ1bmN0aW9uLgoJKEZUX0dldEZpbGVfRnJvbV9NYWNfTmFtZSk6IE5ldyBleHBvcnRlZCBmdW5jdGlvbi4KCShGVF9OZXdfRmFjZSk6IFVwZGF0ZWQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRtYWMuaDogVXBkYXRlZC4KCjIwMDEtMTItMDYgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jYWNoZS9KYW1maWxlLCBzcmMvY2FjaGUvcnVsZXMubWs6IFVwZGF0ZWQuCgoyMDAxLTEyLTA2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBJTlNUQUxMOiBTbWFsbCB1cGRhdGUuCgoyMDAxLTEyLTA1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdGdseXBoLmMgKEZUX0dseXBoX1RvX0JpdG1hcCk6IFJlLW9yZGVyZWQgY29kZSBmb3IKCWRlYnVnZ2luZyBwdXJwb3Nlcy4KCUNvbW1lbnQgb3V0IHVzZSBvZiBgb3JpZ2luJy4KCgkqIHNyYy9zbW9vdGgvZnRzbW9vdGguYyAoZnRfc21vb3RoX3JlbmRlcik6IEZpeGVkIGEgbmFzdHkgaGlkZGVuIGJ1ZwoJd2hlcmUgb3V0bGluZSBzaGlmdGluZyB3YXNuJ3QgY29ycmVjdGx5IHVuZG9uZSBhZnRlciBiaXRtYXAKCXJhc3Rlcml6YXRpb24uICBUaGlzIGNyZWF0ZWQgcHJvYmxlbXMgd2l0aCBjZXJ0YWluIGdseXBocyAobGlrZSAnIicKCW9mIGNlcnRhaW4gZm9udHMpIGFuZCB0aGUgY2FjaGUgc3lzdGVtLgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28xLmMgKHBzaDFfaGludF90YWJsZV9pbml0KTogRml4IHR5cG8uCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jIChwc2gyX2hpbnRfdGFibGVfaW5pdCk6IEZpeCB0eXBvLgoJKHBzMl9oaW50c19hcHBseSk6IFNtYWxsIGZpeC4KCjIwMDEtMTItMDUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jIChwc2gyX2hpbnRfdGFibGVfaW5pdCksCglzcmMvcHNoaW50ZXIvcHNoYWxnbzEuYyAocHNoMV9oaW50X3RhYmxlX2luaXQpOiBSZW1vdmVkIGNvbXBpbGVyCgl3YXJuaW5ncy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRjYWNoZS5oLCBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlLyosIHNyYy9jYWNoZS8qOgoJWWV0IGFub3RoZXIgbWFzc2l2ZSByZXdyaXRlIG9mIHRoZSBjYWNoaW5nIHN1Yi1zeXN0ZW0gaW4gb3JkZXIgdG8KCWJvdGggaW5jcmVhc2UgcGVyZm9ybWFuY2UgYW5kIGFsbG93IHNpbXBsZXIgY2FjaGUgc3ViLWNsYXNzaW5nLiAgQXMKCWFuIGV4YW1wbGUsIHRoZSBjb2RlIGZvciB0aGUgaW1hZ2UgYW5kIHNiaXQgY2FjaGVzIGlzIG5vdyBtdWNoCglzaW1wbGVyLgoKCUkgc3RpbGwgbmVlZCB0byB1cGRhdGUgdGhlIGRvY3VtZW50YXRpb24gaW4KCXd3dy9mcmVldHlwZTIvZG9jcy9jYWNoZS5odG1sIHRvIHJlZmxlY3QgdGhlIG5ldyBkZXNpZ24gdGhvdWdoLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaCAoRlRfQ0FDSEVfQ0hBUk1BUF9IKTogTmV3CgltYWNyby4KCShGVF9DQUNIRV9JTlRFUk5BTF9DQUNIRV9IKTogVXBkYXRlZC4KCjIwMDEtMTItMDUgIERhdmlkIEtyYXVzZSAgPGZyZWV0eXBlQGRhdmlka3JhdXNlLmNvbT4KCgkqIGRvY3MvbGljZW5zZS50eHQ6IHMvWCBXaW5kb3dzL1ggV2luZG93IFN5c3RlbS8uCgoyMDAxLTEyLTA0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvcmFzdGVyL2Z0cmFzdGVyLmM6IEZpeCBkZWZpbml0aW9uIGNvbmRpdGlvbiBvZiBNRU1fU2V0KCkuCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jIChNX1kpOiBDaGFuZ2UgdmFsdWUgdG8gMTkyLgoJKiBzcmMvYmFzZS9mdGRiZ21lbS5jIChmdF9tZW1fdGFibGVfZGVzdHJveSk6IEZpeCBwcmludGYoKSBwYXJhbWV0ZXIuCglSZW1vdmUgdW51c2VkIHZhcmlhYmxlLgoJKiBzcmMvY2FjaGUvZnRjaW1hZ2UuYyAoZnRjX2ltYWdlX25vZGVfaW5pdCwKCWZ0Y19pbWFnZV9ub2RlX2NvbXBhcmUpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlcy4KCSogc3JjL2NhY2hlL2Z0Y3NiaXRzLmMgKGZ0Y19zYml0X25vZGVfd2VpZ2h0KTogUmVtb3ZlIHVudXNlZAoJdmFyaWFibGUuCgkqIHNyYy9yYXN0ZXIvZnRyYXN0ZXIuYyAoTUVNX1NldCk6IE1vdmUgZGVmaW5pdGlvbiBkb3duIHRvIGF2b2lkCgljb21waWxlciB3YXJuaW5nLgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9oaW50X2VkZ2VzKTogVXNlIFVOVVNFRCgpIHRvCglhdm9pZCBjb21waWxlciB3YXJuaW5ncy4KCSogc3JjL3BjZi9wY2ZyZWFkLmMgKHRhYmxlTmFtZXMpOiBVc2UgYGNvbnN0Jy4KCShwY2ZfcmVhZF9UT0MpOiBDaGFuZ2UgY291bnRlciBuYW1lIHRvIGF2b2lkIGNvbXBpbGVyIHdhcm5pbmcuCglVc2UgYGNvbnN0Jy4KCSogc3JjL3BzaGludGVyL3BzaHJlYy5jIChwc19oaW50c19jbG9zZSk6IFJlbW92ZSByZWR1bmRhbnQKCWRlY2xhcmF0aW9uLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzEuYyAocHNoMV9oaW50X3RhYmxlX2luaXQpOiBSZW5hbWUgdmFyaWFibGVzCgl0byBhdm9pZCBzaGFkb3dpbmcuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jIChwc2gyX2hpbnRfdGFibGVfYWN0aXZhdGVfbWFzayk6IERpdHRvLgoJKiBzcmMvdHlwZTEvdDFvYmpzLmg6IFJlbW92ZSBkb3VibGUgZGVjbGFyYXRpb25zIG9mIGBUMV9TaXplX0luaXQoKScKCWFuZCBgVDFfU2l6ZV9Eb25lKCknLgoKMjAwMS0xMS0yMCAgQW50b2luZSBMZWNhICA8YW50b2luZWxlY2FAbXVsdGltYW5pYS5jb20+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3R0bmFtZWlkLmg6IEFkZGVkIHNvbWUgbmV3IE1pY3Jvc29mdCBsYW5ndWFnZQoJY29kZXMgYW5kIExDSURzIGFzIGZvdW5kIGluIE1TRE4gKFBhc3Nwb3J0IFNESykuICBBbHNvIGFkZGVkCgljb21tZW50cyBhYm91dCB0aGUgbWVhbmluZyBvZiBiaXQgNTcgb2YgdGhlIGBPUy8yJyB0YWJsZQoJKFRUX1VDUl9TVVJST0dBVEVTKSB3aGljaCAod2l0aCBPcGVuVHlwZSB2LjEuMykgbm93IG1lYW5zICJ0aGVyZSBpcwoJYSBjaGFyYWN0ZXIgYmV5b25kIDB4RkZGRiBpbiB0aGlzIGZvbnQiLiAgVGhhbmtzIHRvIERldGxlZiBX/HJrbmVyCgk8VGV0aVNvZnRAYXBnLmxhaG4uZGU+IGZvciBub3RpY2luZyB0aGlzLgoKMjAwMS0xMS0yMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3BzaGludGVyL3twc2hhbGdvMi5jLCBwc2hhbGdvMS5jfTogRml4ZWQgc3R1cGlkIGJ1ZyBpbiBzb3J0aW5nCglyb3V0aW5lIHRoYXQgY3JlYXRlZCBuYXN0eSBhbGlnbm1lbnQgYXJ0ZWZhY3RzLgoKCSogc3JjL3BzaGludGVyL3BzaHJlYy5jLCB0ZXN0cy9ndmlldy5jOiBEZWJ1Z2dpbmcgdXBkYXRlcy4KCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jOiBEZS1hY3RpdmF0ZWQgZXhwZXJpbWVudGFsIGdhbW1hIHN1cHBvcnQuCglBcHBhcmVudGx5LCBgb3B0aW1hbCcgZ2FtbWEgdGFibGVzIGRlcGVuZCBvbiB0aGUgbW9uaXRvciB0eXBlLAoJcmVzb2x1dGlvbiBhbmQgZ2VuZXJhbCBrYXJtYSwgc28gaXQncyBiZXR0ZXIgdG8gY29tcHV0ZSB0aGVtIG91dHNpZGUKCW9mIHRoZSByYXN0ZXJpemVyIGl0c2VsZi4KCShncmF5X2NvbnZlcnRfZ2x5cGgpOiBVc2UgYHZvbGF0aWxlJyBrZXl3b3JkLgoKMjAwMS0xMC0yOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUFkZGluZyBleHBlcmltZW50YWwgYGdhbW1hJyBzdXBwb3J0LiAgVGhpcyBwcm9kdWNlcyBzbW9vdGhlciBnbHlwaHMKCWF0IHNtYWxsIHNpemVzIGZvciB2ZXJ5IGxpdHRsZSBjb3N0LgoKCSogc3JjL3Ntb290aC9mdGdyYXlzLmMgKGdyYXlzX2luaXRfZ2FtbWEpOiBOZXcgZnVuY3Rpb24uCgkoZ3JheV9yYXN0ZXJfbmV3KTogVXNlIGl0LgoKCVZhcmlvdXMgZml4ZXMgdG8gdGhlIGF1dG8taGludGVyLiAgVGhleSBtZXJlbHkgaW1wcm92ZSB0aGUgb3V0cHV0IG9mCglzYW5zLXNlcmlmIGZvbnRzLiAgTm90ZSB0aGF0IHRoZXJlIGFyZSBzdGlsbCBwcm9ibGVtcyB3aXRoIHNlcmlmZWQKCWZvbnRzIGFuZCBjb21wb3NpdGVzIChhY2NlbnRlZCBjaGFyYWN0ZXJzKS4KCgkqIHNyYy9hdXRvaGludC9haGdseXBoLmMgKGFoX291dGxpbmVfbG9hZCwKCWFoX291dGxpbmVfbGlua19zZWdtZW50cyk6IEltcGxlbWVudCBpdC4KCUZpeCB0eXBvcy4KCShhaF9vdXRsaW5lX3NhdmUsIGFoX291dGxpbmVfY29tcHV0ZV9zZWdtZW50cyk6IEZpeCB0eXBvcy4KCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9hbGlnbl9zZXJpZl9lZGdlKTogTmV3IGFyZ3VtZW50CglgdmVydGljYWwnLiAgSW1wbGVtZW50IGltcHJvdmVtZW50LgoJKGFoX2hpbnRfZWRnZXNfMywgYWhfaGludGVyX2hpbnRfZWRnZXMpOiBJbXBsZW1lbnQgaXQuCglGaXggdHlwb3MuCgkoYWhfaGludGVyX2FsaWduX3N0cm9uZ19wb2ludHMsIGFoX2hpbnRlcl9hbGlnbl93ZWFrX3BvaW50cyk6IEZpeAoJdHlwb3MuCgkoYWhfaGludGVyX2xvYWQpOiBTZXQgYGFoX2RlYnVnX2hpbnRlcicgaWYgREVCVUdfSElOVEVSIGlzIGRlZmluZWQuCgkqIHNyYy9hdXRvaGludC9haG1vZHVsZS5jOiBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgREVCVUdfSElOVEVSIG1hY3JvLgoJKiBzcmMvYXV0b2hpbnQvYWh0eXBlcy5oOiBEaXR0by4KCShBSF9IaW50ZXIpOiBSZW1vdmUgYGRpc2FibGVfaG9yel9lZGdlcycgYW5kIGBkaXNhYmxlX3ZlcnRfZWRnZXMnCgkobWFraW5nIHRoZW0gZ2xvYmFsIGFzIGBhaF9kZWJ1Z19kaXNhYmxlX2hvcnonIGFuZAoJYGFoX2RlYnVnX2Rpc2FibGVfdmVydCcpLgoJRml4IHR5cG9zLgoKCSogdGVzdHMvZ3ZpZXcuYzogVXBkYXRlZCB0aGUgZGVidWdnaW5nIGdseXBoIHZpZXdlciB0byBzaG93IHRoZQoJaGludHMgZ2VuZXJhdGVkIGJ5IHRoZSAiYXV0b2hpbnQiIG1vZHVsZS4KCjIwMDEtMTAtMjcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jYWNoZS9mdGNjaHVuay5jIChmdGNfY2h1bmtfY2FjaGVfbG9va3VwKTogRml4ZWQgYSBidWcgdGhhdAoJY29uc2lkZXJhYmx5IGxvd2VyZWQgdGhlIHBlcmZvcm1hbmNlIG9mIHRoZSBhYnN0cmFjdCBjaHVuayBjYWNoZS4KCjIwMDEtMTAtMjYgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRjYWNoZS5oLCBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlLyouaCwKCXNyYy9jYWNoZS8qLmM6IE1ham9yIHJlLWRlc2lnbiBvZiB0aGUgY2FjaGUgc3ViLXN5c3RlbSB0byBwcm92aWRlCgliZXR0ZXIgcGVyZm9ybWFuY2UgYXMgd2VsbCBhcyBhbiAiQWNxdWlyZSIvIlJlbGVhc2UiIEFQSS4gIFNlZW1zIHRvCgl3b3JrIHdlbGwgaGVyZSwgYnV0IHByb2JhYmx5IG5lZWRzIGEgYml0IG1vcmUgdGVzdGluZy4KCjIwMDEtMTAtMjYgIExlb25hcmQgUm9zZW50aG9sICA8bGVvbmFyZHJAbGF6ZXJ3YXJlLmNvbT4KCgkqIGJ1aWxkcy9tYWMvUkVBRE1FOiBVcGRhdGVkIHRvIHJlZmxlY3QgbXkgdGFraW5nIG92ZXIgdGhlIHByb2plY3QKCWFuZCB0aGF0IGlzIG5vdyBiZWluZyBhY3RpdmVseSBtYWludGFpbmVkLgoKCSogc3JjL2Jhc2UvZnRtYWMuYyAocGFyc2VfZm9uZCk6IEFwcGxpZWQgcGF0Y2hlcyBmcm9tIFBhdWwgTWlsbGVyCgk8cGF1bG1AcHJvZm91bmRlZmZlY3RzLmNvbT4gdG8gc3VwcG9ydCBsb2FkaW5nIGEgZmFjZSBvdGhlciB0aGFuIHRoZQoJZmlyc3QgZnJvbSBhIEZPTkQgcmVzb3VyY2UuCgkoRlRfTmV3X0ZhY2VfRnJvbV9GT05EKTogVXBkYXRlZC4KCjIwMDEtMTAtMjUgIExlb25hcmQgUm9zZW50aG9sICA8bGVvbmFyZHJAbGF6ZXJ3YXJlLmNvbT4KCgkqIGJ1aWxkcy9tYWMvZnRsaWIucHJqOiBVcGRhdGUgb2YgQ29kZVdhcnJpb3IgcHJvamVjdCBmaWxlIGZvciBNYWMKCU9TIGZvciBsYXRlc3QgdmVyc2lvbiAoNykgb2YgQ1dQcm8gYW5kIGZvciByZWNlbnQgY2hhbmdlcyB0byB0aGUgRlQKCXNvdXJjZSB0cmVlLgoKMjAwMS0xMC0yNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaDogVXBkYXRlZCBjb21tZW50cyB0byBleHBsYWluCglwcmVjaXNlbHkgaG93IHRvIHVzZSBwcm9qZWN0LXNwZWNpZmljIG1hY3JvIGRlZmluaXRpb25zIHdpdGhvdXQKCW1vZGlmeWluZyB0aGlzIGZpbGUgbWFudWFsbHkuCgoJKEZUX0NPTkZJR19GT1JDRV9JTlQ2NCk6IERlZmluZS4KCgkoRlRfREVCVUdfTUVNT1JZKTogTmV3IG1hY3JvLgoKMjAwMS0xMC0yNCAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIGJ1aWxkcy91bml4L2Z0c3lzdGVtLmMgKEZUX05ld19NZW1vcnkpOiBBZGRlZCBhIG1pc3NpbmcgYHsnLgoKMjAwMS0xMC0yMyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG1lbW9yeS5oLCBzcmMvYmFzZS9mdGRiZ21lbS5jOgoJSW1wcm92ZW1lbnRzIHRvIHRoZSBtZW1vcnkgZGVidWdnZXIgdG8gcmVwb3J0IG1vcmUgaW5mb3JtYXRpb24gaW4KCWNhc2Ugb2YgZXJyb3JzLiAgQWxzbywgc29tZSBhbGxvY2F0aW9ucyB0aGF0IG9jY3VyZWQgdGhyb3VnaCBSRUFMTE9DCgljb3VsZG4ndCBiZSBwcmV2aW91c2x5IGNhdGNoZWQgY29ycmVjdGx5LgoKCSogc3JjL2F1dG9oaW50L2FoZ2x5cGguYyAoYWhfb3V0bGluZV9jb21wdXRlX3NlZ21lbnRzLAoJYWhfb3V0bGluZV9jb21wdXRlX2VkZ2VzKSwgc3JjL3Jhc3Rlci9mdHJhc3Rlci5jIChmdF9ibGFja19uZXcpLAoJc3JjL3Ntb290aC9mdGdyYXlzLmMgKGdyYXlfcmVuZGVyX3NwYW4sIGdyYXlfcmFzdGVyX25ldyk6IFJlcGxhY2VkCglsaWJlcmFsIHVzZXMgb2YgbWVtc2V0KCkgYnkgdGhlIE1FTV9TZXQoKSBtYWNyby4KCjIwMDEtMTAtMjMgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9yYXN0ZXIvZnRyYXN0ZXIuYyAoVXBkYXRlKTogUmVtb3ZlZCB0byBiZSBpbmxpbmVkIGluIC4uLgoJKFNvcnQpOiBVcGRhdGVkLgoKMjAwMS0xMC0yMiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogYnVpbGRzL3VuaXgvZnRzeXN0ZW0uYyAoRlRfTmV3X01lbW9yeSwgRlRfRG9uZV9NZW1vcnkpLAoJYnVpbGRzL3Ztcy9mdHN5c3RlbS5jIChGVF9OZXdfTWVtb3J5LCBGVF9Eb25lX01lbW9yeSksCglidWlsZHMvYW1pZ2EvZnRzeXN0ZW0uYyAoRlRfTmV3X01lbW9yeSwgRlRfRG9uZV9NZW1vcnkpLAoJc3JjL2Jhc2UvZnRkYmdtZW0uYzogVXBkYXRlZCB0aGUgbWVtb3J5IGRlYnVnZ2VyIGFuZAoJcGxhdGZvcm0tc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zIG9mIGBmdHN5c3RlbScgaW4gb3JkZXIgdG8gYmUgYWJsZQoJdG8gZGVidWcgbWVtb3J5IGFsbG9jYXRpb25zIG9uIFVuaXgsIFZNUyBhbmQgQW1pZ2EgdG9vIQoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmMgKHBzaDJfaGludF90YWJsZV9yZWNvcmRfbWFzayk6IFJlbW92ZWQKCXNvbWUgYm9ndXMgd2FybmluZ3MuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0bWVtb3J5LmgsIHNyYy9iYXNlL2Z0ZGJnbWVtLmM6CglNb2RpZmllZCB0aGUgZGVidWdnaW5nIG1lbW9yeSBtYW5hZ2VyIHRvIHJlcG9ydCB0aGUgbG9jYXRpb24gKHNvdXJjZQoJZmlsZSBuYW1lICsgbGluZSBudW1iZXIpIHdoZXJlIGxlYWtlZCBtZW1vcnkgYmxvY2tzIGFyZSBhbGxvY2F0ZWQgaW4KCXRoZSBzb3VyY2UgZmlsZS4KCgkqIHNyYy9iYXNlL2Z0ZGJnbWVtLmM6IE5ldyBkZWJ1Z2dpbmcgbWVtb3J5IG1hbmFnZXIuICBZb3UgbXVzdAoJZGVmaW5lIHRoZSBGVF9ERUJVR19NRU1PUlkgbWFjcm8gaW4gImZ0b3B0aW9uLmgiIHRvIGVuYWJsZSBpdC4gIEl0Cgl3aWxsIHJlY29yZCBldmVyeSBtZW1vcnkgYmxvY2sgYWxsb2NhdGVkIGFuZCByZXBvcnQgc2ltcGxlIGVycm9ycwoJbGlrZSBtZW1vcnkgbGVha3MgYW5kIGRvdWJsZSBkZWxldGVzLgoKCSogc3JjL2Jhc2UvSmFtZmlsZTogSW5jbHVkZSBmdGRiZ21lbS4KCSogc3JjL2Jhc2UvcnVsZXMubWs6IERpdHRvLgoJKiBzcmMvYmFzZS9mdGJhc2UuYzogSW5jbHVkZSBmdGRiZ21lbS5jLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaDogQWRkZWQgdGhlIEZUX0RFQlVHX01FTU9SWQoJbWFjcm8gZGVmaW5pdGlvbi4KCgkqIHNyYy9iYXNlL2Z0c3lzdGVtLmMgKEZUX05ld19NZW1vcnksIEZUX0RvbmVfTWVtb3J5KTogTW9kaWZpZWQgdGhlCgliYXNlIGNvbXBvbmVudCB0byB1c2UgdGhlIGRlYnVnZ2luZyBtZW1vcnkgbWFuYWdlciB3aGVuIHRoZSBtYWNybwoJRlRfREVCVUdfTUVNT1JZIGlzIGRlZmluZWQuCgoyMDAxLTEwLTIxICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi9jZmZsb2FkLmMgKENGRl9Eb25lX0ZvbnQpOiBGcmVlIHN1YmZvbnRzIGFycmF5IG9ubHkgaWYKCXdlIGFyZSB3b3JraW5nIHdpdGggYSBDSUQga2V5ZWQgQ0ZGIGZvbnQuICBPdGhlcndpc2UsIGEgdmFyaWFibGUKCXRoYXQgd2FzIG5ldmVyIGFsbG9jYXRlZCBtZW1vcnkgbWlnaHQgZnJlZWQuICBUaGlzIGlzIGEgY29ycmVjdGlvbgoJdG8gdGhlIHByZXZpb3VzIHBhdGNoIGZvciBmcmVlaW5nIHN1YmZvbnRzLgoKMjAwMS0xMC0yMSAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChDRkZfRG9uZV9Gb250KTogRnJlZSB0aGUgc3ViZm9udHMgYXJyYXkgdG8KCWF2b2lkIGEgbWVtb3J5IGxlYWsuCgoyMDAxLTEwLTIxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYywgc3JjL3BzaGludGVyL3BzaGFsZ28xLmMsCglzcmMvcHNoaW50ZXIvcHNoZ2xvYi5jOiBSZW1vdmluZyBjb21waWxlciB3YXJuaW5ncyBpbiBwZWRhbnRpYyBtb2RlcwoJKGluIG11bHRpLW9iamVjdCBjb21waWxhdGlvbiBtb2RlLCBtYWlubHkpLgoKMjAwMS0xMC0yMCAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2VfZW5jb2RpbmcpOiBBZGQgYSB0ZXN0IHRvIG1ha2Ugc3VyZQoJdGhhdCBjdXN0b20gZW5jb2RpbmdzIChpLmUuLCBuZWl0aGVyIFN0YW5kYXJkRW5jb2Rpbmcgbm9yCglFeHBlcnRFbmNvZGluZykgYXJlIG5vdCBsb2FkZWQgdHdpY2Ugd2hlbiB0aGUgVHlwZSAxIGZvbnQgaXMKCXN5bnRoZXRpYy4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2VfZm9udF9uYW1lLCBwYXJzZV9zdWJycyk6IEFkZGVkIGEgdGVzdAoJZm9yIHdoZW4gbG9hZGluZyBzeW50aGV0aWMgZm9udHMgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGZvbnQgbmFtZQoJYW5kIHN1YnJvdHVpbmVzIGFyZSBub3QgbG9hZGVkIHR3aWNlLiAgVGhpcyBpcyB0byByZW1vdmUgYSBtZW1vcnkKCWxlYWsgdGhhdCBvY2N1cmVkIGJlY2F1c2UgdGhlIG9yaWdpbmFsIG1lbW9yeSBibG9ja3MgZm9yIHRoZXNlCglvYmplY3RzIHdlcmUgbm90IGRlYWxsb2NhdGVkIHdoZW4gdGhlIG9iamVjdHMgd2VyZSBwYXJzZWQgdGhlCglzZWNvbmQgdGltZS4KCjIwMDEtMTAtMTkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jLCBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5oLAoJc3JjL3BzaGludGVyL3BzaHJlYy5jLCBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYzogR2V0dGluZyByaWQgb2YKCWNvbXBpbGVyIHdhcm5pbmdzLgoKCSogc3JjL3BzaGludGVyL21vZHVsZS5taywgc3JjL3BzaGludGVyL3J1bGVzLm1rOiBBZGRpbmcgY29udHJvbAoJZmlsZXMgdG8gYnVpbGQgdGhlIFBvc3RTY3JpcHQgaGludGVyIHdpdGggdGhlICJvbGQiIGJ1aWxkIHN5c3RlbS4KCjIwMDEtMTAtMTkgIEphY29iIEphbnNlbiAgPGpvdWtqQGhyZW0uc3RtLnR1ZGVsZnQubmw+CgoJKiBkZXNjcmlwLm1tcywgc3JjL3BzaGludGVyL2Rlc2NyaXAubW1zOiBVcGRhdGVzIHRvIHRoZSBWTVMgYnVpbGQKCWZpbGVzLgoKMjAwMS0xMC0xOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3BzbmFtZXMvcHN0YWJsZXMuaCwgc3JjL3Rvb2xzL2dsbmFtZXMucHk6IFJld3JvdGUgdGhlCgkiZ2xuYW1lcy5weSIgc2NyaXB0IHVzZWQgdG8gZ2VuZXJhdGUgdGhlICJwc3RhYmxlcy5oIiBoZWFkZXIgZmlsZS4KCVRoZSBvbGQgb25lIGNvbnRhaW5lZCBhIHNlcmlvdXMgYnVnIHRoYXQgbWFkZSBGcmVlVHlwZSByZXR1cm4KCWluY29ycmVjdCBnbHlwaCBuYW1lcyBmb3IgY2VydGFpbiBnbHlwaHMuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYyAoU2V0X0NoYXJfU2l6ZXMpOiBDaGFuZ2luZyBjb21wdXRhdGlvbiBvZgoJcGl4ZWwgc2l6ZSBmcm9tIGNoYXJhY3RlciBzaXplIHRvIHVzZSByb3VuZGluZy4gIFRoaXMgaXMgYW4KCWV4cGVyaW1lbnQgdG8gc2VlIHdoZXRoZXIgdGhpcyBnaXZlcyB2YWx1ZXMgc2ltaWxhciB0byBXaW5kb3dzIGZvcgoJc2NhbGVkIGFzY2VudC9kZXNjZW50L2V0Yy4KCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9EaXY2NGJ5MzIpOiBDaGFuZ2VkIHRoZSBpbXBsZW1lbnRhdGlvbgoJc2xpZ2h0bHkgc2luY2UgdGhlIG9yaWdpbmFsIGNvZGUgd2FzIG1pcy1jb21waWxlZCBvbiBNYWMgbWFjaGluZXMKCXVzaW5nIHRoZSBNUFcgQyBjb21waWxlci4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9SZWFsbG9jKTogV2hlbiBhIG1lbW9yeSBibG9jayB3YXMgZ3Jvd24KCXRocm91Z2ggRlRfUmVhbGxvYygpLCB0aGUgbmV3IGJ5dGVzIHdlcmUgbm90IHNldCB0byAwLCB3aGljaCBjcmVhdGVkCglzb21lIHN0cmFuZ2UgYnVncyBpbiB0aGUgUG9zdFNjcmlwdCBoaW50ZXIuCgkoZGVzdHJveV9mYWNlKTogRG9uJ3QgZGVhbGxvY2F0ZSB1bmNvbmRpdGlvbmFsbHkuCgoJKiBzcmMvY2lkL2NpZGdsb2FkLmMgKENJRF9Db21wdXRlX01heF9BZHZhbmNlLCBDSURfTG9hZF9HbHlwaCk6CglBZGRpbmcgc3VwcG9ydCB0byBuZXcgUG9zdFNjcmlwdCBoaW50ZXIuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzZ2xvYmFsLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzaGludHMuaCwKCWluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0bW9kdWxlLmgsIHNyYy9wc2hpbnRlci9KYW1maWxlLAoJc3JjL3BzaGludGVyL3BzaGFsZ28uaCwgc3JjL3BzaGludGVyL3BzaGFsZ28xLmgsCglzcmMvcHNoaW50ZXIvcHNoYWxnbzEuYywgc3JjL3BzaGludGVyL3BzaGFsZ28yLmgsCglzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYywgc3JjL3BzaGludGVyL3BzaGdsb2IuaCwKCXNyYy9wc2hpbnRlci9wc2hnbG9iLmMsIHNyYy9wc2hpbnRlci9wc2hpbnRlci5jLAoJc3JjL3BzaGludGVyL3BzaG1vZC5jLCBzcmMvcHNoaW50ZXIvcHNobW9kLmgsIHNyYy9wc2hpbnRlci9wc2hyZWMuYywKCXNyYy9wc2hpbnRlci9wc2hyZWMuaDogQWRkaW5nIG5ldyBQb3N0U2NyaXB0IGhpbnRlciBtb2R1bGUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9pbnRlcm5hbC5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MXR5cGVzLmgsIHNyYy9wc2F1eC9wc29ianMuYywKCXNyYy9wc2F1eC9wc29ianMuaCwgc3JjL3BzYXV4L3QxZGVjb2RlLmgsIHNyYy9wc2F1eC90MWRlY29kZS5jLAoJc3JjL3R5cGUxL3QxZHJpdmVyLmMsIHNyYy90eXBlMS90MWdsb2FkLmMsIHNyYy90eXBlMS90MW9ianMuYywKCXNyYy90eXBlMS90MW9ianMuaDogVXBkYXRlcyB0byB1c2UgdGhlIG5ldyBQb3N0U2NyaXB0IGhpbnRlci4KCgkqIHRlc3RzL0phbWZpbGUsIHRlc3RzL2d2aWV3LmM6IEFkZGluZyBhIG5ldyBnbHlwaCBoaW50aW5nCgl2aWV3ZXIvZGVidWdnZXIgdG8gdGhlIHNvdXJjZSB0cmVlLiAgTm90ZSB0aGF0IHlvdSB3aWxsIF9ub3RfIGJlCglhYmxlIHRvIGNvbXBpbGUgaXQgc2luY2UgaXQgZGVwZW5kcyBvbiBhbiB1bmF2YWlsYWJsZSBncmFwaGljcwoJbGlicmFyeSBuYW1lZCAiTmlydmFuYSIgdG8gcmVuZGVyIHZlY3RvciBpbWFnZXMuCgoyMDAxLTEwLTE3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoKCSogVmVyc2lvbiAyLjAuNSByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmgsIGluY2x1ZGUvaW50ZXJuYWwvZnRvYmpzLmgsCglzcmMvYmFzZS9mdG9ianMuYywgc3JjL3R5cGUxL3QxZHJpdmVyLmM6IEFkZGluZyBhIG5ldyBmdW5jdGlvbiBuYW1lZAoJJ0ZUX0dldF9Qb3N0c2NyaXB0X05hbWUnIHRvIHJldHJpZXZlIHRoZSBQb3N0U2NyaXB0IG5hbWUgb2YgYSBnaXZlbgoJZm9udC4gIFNob3VsZCB3b3JrIHdpdGggYWxsIGZvcm1hdHMgZXhjZXB0IHB1cmUgQ0ZGL0NFRiBmb250cyAodGhpcwoJd2lsbCBiZSBhZGRlZCBzb29uKS4KCgkqIHNyYy9jaWQvY2lkcml2ZXIgKGNpZF9nZXRfcG9zdHNjcmlwdF9uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKENJRF9HZXRfSW50ZXJmYWNlKTogSGFuZGxlIGBwb3N0c2NyaXB0X25hbWUnIGludGVyZmFjZS4KCgkqIHNyYy9zZm50L3NmZHJpdmVyLmMgKGdldF9zZm50X3Bvc3RzY3JpcHRfbmFtZSk6IE5ldyBmdW5jdGlvbi4KCShTRk5UX0dldF9JbnRlcmZhY2UpOiBIYW5kbGUgYHBvc3RzY3JpcHRfbmFtZScgaW50ZXJmYWNlLgoKCSogc3JjL3R5cGUxL3QxZHJpdmVyLmMgKHQxX2dldF9wc19uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKEdldF9JbnRlcmZhY2UpOiBIYW5kbGUgYHBvc3RzY3JpcHRfbmFtZScgaW50ZXJmYWNlLgoKCSogUkVBRE1FLCBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQgZm9yIDIuMC41IHJlbGVhc2UuCgoyMDAxLTEwLTA4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJRml4ZWQgYSBidWcgaW4gYGdsbmFtZXMucHknIHRoYXQgcHJldmVudGVkIGl0IGZyb20gZ2VuZXJhdGluZwoJY29ycmVjdCBnbHlwaCBuYW1lcyB0YWJsZXMuICBUaGlzIHJlc3VsdGVkIGluIHRoZSB1bmF2YWlsYWJpbGl0eSBvZgoJY2VydGFpbiBnbHlwaHMgbGlrZSBgQ2FjdXRlJywgYGNhY3V0ZScgYW5kIGBsc2xhc2gnIGluIFVuaWNvZGUKCWNoYXJtYXBzLCBldmVuIGlmIHRoZXNlIHdlcmUgcHJlc2VudCBpbiB0aGUgZm9udCAoY2F1c2luZyBwcm9ibGVtcwoJZm9yIFBvbGlzaCB1c2VycykuCgoJKiBzcmMvdG9vbHMvZ2xuYW1lcy5weSAobWFjX3N0YW5kYXJkX25hbWVzKTogRml4ZWQuCgkodDFfc3RhbmRhcmRfc3RyaW5ncyk6IFNvbWUgZml4ZXMgYW5kIHJlbmFtZWQgdG8gLi4uCgkoc2lkX3N0YW5kYXJkX25hbWVzKTogVGhpcy4KCSh0MV9leHBlcnRfZW5jb2RpbmcpOiBGaXhlZC4KCSh0aGVfYWRvYmVfZ2x5cGhfbGlzdCk6IFJlbmFtZWQgdG8gLi4uCgkoYWRvYmVfZ2x5cGhfbmFtZXMpOiBUaGlzLgoJKHRoZV9hZG9iZV9nbHlwaHMpOiBSZW5hbWVkIHRvIC4uLgoJKGFkb2JlX2dseXBoX3ZhbHVlcyk6IFRoaXMuCgkoZHVtcF9tYWNfaW5kaWNlcywgZHVtcF9nbHlwaF9saXN0LCBkdW1wX3VuaWNvZGVfdmFsdWVzLCBtYWluKToKCVVwZGF0ZWQuCgkqIHNyYy9wc25hbWVzL3BzdGFibGVzLmg6IFJlZ2VuZXJhdGVkLgoJKiBzcmMvcHNuYW1lcy9wc21vZHVsZS5jIChQU19Vbmljb2RlX1ZhbHVlKTogRml4IG9mZnNldC4KCUZpeCByZXR1cm4gdmFsdWUuCglVc2UgYHNpZF9zdGFuZGFyZF90YWJsZScgYW5kIGBwc19uYW1lc190b191bmljb2RlJyBpbnN0ZWFkIG9mCglgdDFfc3RhbmRhcmRfZ2x5cGhzJyBhbmQgYG5hbWVzX3RvX3VuaWNvZGUnLgoJKFBTX01hY2ludG9zaF9OYW1lKTogVXNlIGBwc19nbHlwaF9uYW1lcycgaW5zdGVhZCBvZgoJYHN0YW5kYXJkX2dseXBoX25hbWVzJy4KCShQU19TdGFuZGFyZF9TdHJpbmdzKTogVXNlIGBzaWRfc3RhbmRhcmRfbmFtZXMnIGluc3RlYWQgb2YKCWB0MV9zdGFuZGFyZF9nbHlwaHMnLgoKCSogZG9jL0JVR1MsIGRvYy9UT0RPOiBOZXcgZG9jdW1lbnRzLgoKMjAwMS0xMC0wNyAgUmljaGFyZCBCYXJiZXIgIDxyaWNoQHNvbHV0aW9udWsuY29tPgoKCSogc3JjL2NhY2hlL2Z0bHJ1LmMgKEZUX0xydV9Mb29rdXBfTm9kZSk6IEZpeGVkIGEgYnVnIHRoYXQgcHJldmVudGVkCgljb3JyZWN0IExSVSBiZWhhdmlvdXIuCgoyMDAxLTEwLTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJc2V0am1wKCkgYW5kIGxvbmdqbXAoKSBhcmUgbm93IHVzZWQgZm9yIHJvbGxiYWNrIChpLmUuIHdoZW4gbWVtb3J5Cglwb29sIG92ZXJmbG93IG9jY3VycykuCgoJRnVuY3Rpb24gbmFtZXMgYXJlIG5vdyBhbGwgdW5pZm9ybWx5IHByZWZpeGVkIHdpdGggYGdyYXlfJy4KCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jOiBJbmNsdWRlIDxzZXRqbXAuaD4uCgkoRXJyUmFzdGVyX01lbW9yeU92ZXJmbG93KTogTmV3IG1hY3JvLgoJKFRBcmVhKTogTmV3IHR5cGUgdG8gc3RvcmUgYXJlYSB2YWx1ZXMgaW4gZWFjaCBjZWxsICh1c2luZyBgaW50JyB3YXMKCXRvbyBzbWFsbCBvbiAxNi1iaXQgc3lzdGVtcykuICA8bGltaXRzLmg+IGlzIGluY2x1ZGVkIHRvIHByb3Blcmx5CglnZXQgdGhlIG5lZWRlZCBkYXRhIHR5cGUuCgkoVENlbGwsIFRSYXN0ZXIpOiBVc2UgaXQuCgkoVFJhc3Rlcik6IE5ldyBlbGVtZW50IGBqdW1wX2J1ZmZlcicuCgkoZ3JheV9jb21wdXRlX2Nib3gpOiBVc2UgYFJBU19BUkcnIGFzIHRoZSBvbmx5IHBhcmFtZXRlciBhbmQgZ2V0Cglgb3V0bGluZScgZnJvbSBpdC4KCShncmF5X3JlY29yZF9jZWxsKTogVXNlIGxvbmdqbXAoKS4KCShncmF5X3NldF9jZWxsKTogVXNlIGdyYXlfcmVjb3JkX2NlbGwoKSBmb3IgZXJyb3IgaGFuZGxpbmcuCgkoZ3JheV9yZW5kZXJfbGluZSwgZ3JheV9yZW5kZXJfY29uaWMsIGdyYXlfcmVuZGVyX2N1YmljKTogU2ltcGxpZnkuCgkoZ3JheV9jb252ZXJ0X2dseXBoX2lubmVyKTogTmV3IGZ1bmN0aW9uLCB1c2luZyBzZXRqbXAoKS4KCShncmF5X2NvbnZlcnRfZ2x5cGgpOiBVc2UgaXQuCgoyMDAxLTEwLTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJUHJvdmlkZSBhIHB1YmxpYyBBUEkgdG8gbWFuYWdlIG11bHRpcGxlIHNpemUgb2JqZWN0cyBmb3IgYSBnaXZlbgoJRlRfRmFjZSBpbiB0aGUgbmV3IGhlYWRlciBmaWxlIGBmdHNpemVzLmgnLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdHNpemVzLmg6IE5ldyBoZWFkZXIgZmlsZSwKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaDogVXNlIGl0LgoJUmVtb3ZlIGRlY2xhcmF0aW9ucyBvZiBGVF9OZXdfU2l6ZSBhbmQgRlRfRG9uZV9TaXplIChtb3ZlZCB0bwoJZnRzaXplcy5oKS4KCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaCAoRlRfU0laRVNfSCk6IE5ldyBtYWNyby4KCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0FjdGl2YXRlX1NpemUpOiBOZXcgZnVuY3Rpb24uCgkqIHNyYy9jYWNoZS9mdGNtYW5hZy5jOiBJbmNsdWRlIGZ0c2l6ZXMuaC4KCShmdGNfbWFuYWdlcl9pbml0X3NpemUsIGZ0Y19tYW5hZ2VyX2ZsdXNoX3NpemUpOiBVc2UKCUZUX0FjdGl2YXRlX1NpemUuCgoyMDAxLTA5LTIwICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogYnVpbGRzL2FtaWdhLyo6IEFkZGVkIHBvcnQgdG8gQW1pZ2Egd2l0aCB0aGUgU0FTL0MgY29tcGlsZXIuCgoyMDAxLTA5LTE1ICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogc3JjL3R5cGUxL3QxYWZtLmMgKFQxX0RvbmVfQUZNKTogRnJlZSBgYWZtJy4KCjIwMDEtMDktMTAgIFlhbyBaaGFuZyAgPHl6aGFuZ0BzaGFyZW1lZGlhLmNvbT4KCgkqIHNyYy9zZm50L3R0Y21hcC5jIChjb2RlX3RvX2luZGV4Mik6IEhhbmRsZSBjb2RlIHZhbHVlcyB3aXRoCgloaS1ieXRlID09IDAgY29ycmVjdGx5LgoKMjAwMS0wOS0xMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL2xpbmstc3RkLm1rICgkKFBST0pFQ1RfTElCUkFSWSkpOiBGaXggdHlwby4KCjIwMDEtMDgtMzAgIE1hcnRpbiBNdXNrZW5zICA8bW11c2tlbnNAYXVyZWxvbi5jb20+CgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2ZvbnRfbWF0cml4KTogQSBuZXcgd2F5IHRvIGNvbXB1dGUgdGhlCgl1bml0cyBwZXIgRU0gd2l0aCBncmVhdGVyIGFjY3VyYWN5IChpbXBvcnRhbnQgZm9yIGVtYmVkZGVkIFQxIGZvbnRzCglpbiBQREYgZG9jdW1lbnRzIHRoYXQgd2VyZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIFRydWVUeXBlCglvbmVzKS4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAoaXNfYWxwaGEpOiBOb3cgc3VwcG9ydHMgIisiIGluIGZvbnQgbmFtZXM7Cgl0aGlzIGlzIHVzZWQgaW4gZW1iZWRkZWQgZm9udHMuCgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKFBTX1RhYmxlX0FkZCk6IEZpeGVkIGEgcmVhbGxvY2F0aW9uIGJ1ZyB0aGF0CglnZW5lcmF0ZWQgYSBkYW5nbGluZyBwb2ludGVyIHJlZmVyZW5jZS4KCjIwMDEtMDgtMzAgIEFudGhvbnkgRmVpayAgPGFmZWlja0Bob3RtYWlsLmNvbT4KCgkqIHNyYy90eXBlMS90MWFmbS5jIChUMV9SZWFkX0FmbSk6IE5vdyBjb3JyZWN0bHkgc2V0cyB0aGUgZmxhZwoJRlRfRkFDRV9GTEFHX0tFUk5JTkcgd2hlbiBhcHByb3ByaWF0ZSBmb3IgVHlwZTEgKyBBRk0gZmlsZXMuCgoyMDAxLTA4LTI1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9hZF9DTWFwKTogRml4IGZyYW1lIGxlbmd0aCBvZgoJYGNtYXBfcmVjX2ZpZWxkcycuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0ZXJyb3JzLmggWyFGVF9DT05GSUdfT1BUSU9OX1VTRV9NT0RVTEVfRVJST1JTXToKCVVuZGVmaW5lIEZUX0VSUl9CQVNFIGJlZm9yZSBkZWZpbmluZyBhZ2Fpbi4KCjIwMDEtMDgtMjIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGludGVycC5oOiBGaXggcHJvdG90eXBlIG9mIFRUX01vdmVfRnVuYy4KCjIwMDEtMDgtMjEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9kb3MvZG9zLWRlZi5tayAoTk9fT1VUUFVUKTogRG9uJ3QgdXNlIGAmPicgYnV0IGA+Jy4KCjIwMDEtMDgtMjEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmg6IENoYW5nZWQgdGhlIGRlZmF1bHQgc2V0dGluZwoJZm9yIEZUX0NPTkZJR19PUFRJT05fVVNFX01PRFVMRV9FUlJPUlMgdG8gdW5kZWZpbmVkLCBzaW5jZSBpdCBicmVha3MKCXNvdXJjZSBjb21wYXRpYmlsaXR5IGluIGEgZmV3IGNhc2VzLiAgVXBkYXRlZCB0aGUgY29tbWVudCB0byBleHBsYWluCgl0aGF0IHRvby4KCjIwMDEtMDgtMTcgIE1hcnRpbiBNdXNrZW5zICA8bW11c2tlbnNAYXVyZWxvbi5jb20+CgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoRlRfTXVsRGl2KTogRml4ZWQgc2VyaW91cyB0eXBvLgoKMjAwMS0wOC0xMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCVVwZGF0aW5nIHRvIE9wZW5UeXBlIDEuMy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHR0eXBlcy5oIChUVF9DTWFwMCwgVFRfQ01hcDIsIFRUX0NNYXA0LAoJVFRfQ01hcDYpOiBBZGRpbmcgZmllbGQgYGxhbmd1YWdlJy4KCShUVF9DTWFwVGFibGUpOiBSZW1vdmluZyBmaWVsZCBgbGFuZ3VhZ2UnLgoJVHlwZSBvZiBgbGVuZ3RoJyBmaWVsZCBjaGFuZ2VkIHRvIEZUX1VMb25nLgoJQWRkaW5nIGZpZWxkcyBmb3IgY21hcHMgZm9ybWF0IDgsIDEwLCBhbmQgMTIuCgkoVFRfQ01hcEdyb3VwKTogTmV3IGF1eGlsaWFyeSBzdHJ1Y3R1cmUuCgkoVFRfQ01hcDhfMTIsIFRUX0NNYXAxMCk6IE5ldyBzdHJ1Y3R1cmVzLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3R0dGFibGVzLmggKFRUX0hvcmlIZWFkZXIsIFRUX1ZlcnRIZWFkZXIpOgoJUmVtb3ZlZCBsYXN0IGVsZW1lbnQgb2YgYFJlc2VydmVkJyBhcnJheS4KCSogaW5jbHVkZS9mcmVldHlwZS90dG5hbWVpZC5oIChUVF9QTEFURk9STV9DVVNUT00sIFRUX01TX0lEX1VDU180LAoJVFRfTkFNRV9JRF9DSURfRklOREZPTlRfTkFNRSk6IE5ldyBtYWNyb3MuCgoJKiBzcmMvc2ZudC90dGNtYXAuYyAoVFRfQ2hhck1hcF9Mb2FkKTogVXBkYXRlZCBsb2FkaW5nIG9mIGBsYW5ndWFnZScKCWZpZWxkIHRvIHRoZSBuZXcgc3RydWN0dXJlcy4KCUZpeGVkIGZyZWVpbmcgb2YgYXJyYXlzIGluIGNhc2Ugb2YgdW5zdWNjZXNzZnVsIGxvYWRzLgoJQWRkZWQgc3VwcG9ydCBmb3IgbG9hZGluZyBmb3JtYXQgOCwgMTAsIGFuZCAxMiBjbWFwcy4KCShUVF9DaGFyTWFwX0ZyZWUpOiBBZGRlZCBzdXBwb3J0IGZvciBmcmVlaW5nIGZvcm1hdCA4LCAxMCwgYW5kIDEyCgljbWFwcy4KCShjb2RlX3RvX2luZGV4NCk6IFNtYWxsIGltcHJvdmVtZW50LgoJKGNvZGVfdG9faW5kZXg2KTogRGl0dG8uCgkoY29kZV90b19pbmRleDhfMTIsIGNvZGVfdG9faW5kZXgxMCk6IE5ldyBmdW5jdGlvbnMuCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb2FkX01ldHJpY3NfSGVhZGVyKTogVXBkYXRlZCB0byBuZXcKCXN0cnVjdHVyZS4KCShUVF9Mb2FkX0NNYXApOiBEaXR0by4KCgkqIHNyYy9zZm50L3Nmb2Jqcy5jICh0dF9lbmNvZGluZ3MpOiBBZGQgTVMgVUNTNCB0YWJsZSAoYmVmb3JlIE1TCglVbmljb2RlKS4KCjIwMDEtMDgtMTEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90eXBlMS90MWRyaXZlci5jICh0MV9nZXRfbmFtZV9pbmRleCk6IEZpeCBjb21waWxlciB3YXJuaW5nLgoKMjAwMS0wOC0wOSAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoZ2V0X2NmZl9nbHlwaF9uYW1lKTogUmVuYW1lZCB0bwoJY2ZmX2dldF9nbHlwaF9uYW1lIGZvciBjb25zaXN0ZW5jeS4KCgkoY2ZmX2dldF9nbHlwaF9pbmRleCk6IE1pbm9yIGRvY3VtZW50YXRpb24gY2hhbmdlLgoKCSogc3JjL3R5cGUxL3QxZHJpdmVyLmMgKHQxX2dldF9uYW1lX2luZGV4KTogTmV3IGZ1bmN0aW9uIHVzZWQgaW4KCUdldF9JbnRlcmZhY2UgYXMgdGhlIGZ1bmN0aW9uIHJldHVybmVkIHdoZW4gdGhlICJuYW1lX2luZGV4IgoJZnVuY3Rpb24gaXMgcmVxdWVzdGVkLgoKCShnZXRfdDFfZ2x5cGhfbmFtZSk6IFJlbmFtZWQgdG8gdDFfZ2V0X2dseXBoX25hbWUgZm9yIGNvbnNpc3RlbmN5LgoKMjAwMS0wOC0wOCAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvY2ZmbG9hZC5jOiBSZW1vdmVkIGRlZmluaXRpb25zIG9mIGNmZl9pc29hZG9iZV9jaGFyc2V0LAoJY2ZmX2V4cGVydF9jaGFyc2V0LCBjZmZfZXhwZXJ0c3Vic2V0X2NoYXJzZXQsIGNmZl9zdGFuZGFyZF9lbmNvZGluZywKCWFuZCBjZmZfZXhwZXJ0X2VuY29kaW5nIGFycmF5cyB0byBjZmZsb2FkLmguCgoJKiBzcmMvY2ZmL2NmZmxvYWQuaDogQWRkZWQgZGVmaW5pdGlvbnMgb2YgY2ZmX2lzb2Fkb2JlX2NoYXJzZXQsCgljZmZfZXhwZXJ0X2NoYXJzZXQsIGNmZl9leHBlcnRzdWJzZXRfY2hhcnNldCwgY2ZmX3N0YW5kYXJkX2VuY29kaW5nLAoJYW5kIGNmZl9leHBlcnRfZW5jb2RpbmcgYXJyYXlzLgoKCSogc3JjL2NmZi9jZmZkcml2ci5jIChjZmZfZ2V0X25hbWVfaW5kZXgpOiBOZXcgZnVuY3Rpb24sIHJldHVybmVkCgl3aGVuIGBjZmZfZ2V0X2ludGVyZmFjZScgaXMgY2FsbGVkIHdpdGggYSByZXF1ZXN0IGZvciB0aGUKCSJuYW1lX2luZGV4IiBmdW5jdGlvbi4KCgkoY2ZmX2dldF9pbnRlcmZhY2UpOiBNb2RpZmllZCBzbyB0aGF0IGl0IHJldHVybnMgdGhlIGZ1bmN0aW9uCglgY2ZmX2dldF9uYW1lX2luZGV4JyB3aGVuIHRoZSAibmFtZV9pbmRleCIgZnVuY3Rpb24gaXMgcmVxdWVzdGVkLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0dldF9OYW1lX0luZGV4KTogTmV3IGZ1bmN0aW9uLCB1c2VkIHRvCglyZXR1cm4gYSBnbHlwaCBpbmRleCBmb3IgYSBnaXZlbiBnbHlwaCBuYW1lIG9ubHkgaWYgdGhlIGRyaXZlcgoJc3VwcG9ydHMgZ2x5cGggbmFtZXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oIChGVF9OYW1lX0luZGV4X1JlcXVlc3Rlcik6CglOZXcgZnVuY3Rpb24gcG9pbnRlciB0eXBlIGRlZmludGlvbiB1c2VkIGluIHRoZSBmdW5jdGlvbgoJRlRfR2V0X05hbWVfSW5kZXguCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX0dldF9OYW1lX0luZGV4KTogQWRkZWQKCWRvY3VtZW50YXRpb24gYW5kIHByb3RvdHlwZS4KCjIwMDEtMDctMjYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9jeWd3aW4vKjogUmVtb3ZlZC4gIFVzZSB0aGUgdW5peCBzdHVmZiBpbnN0ZWFkLgoKMjAwMS0wNy0yNiAgSm91ayBKYW5zZW4gIDxqb3VrakBocmVtLnN0bS50dWRlbGZ0Lm5sPgoKCSogYnVpbGRzL3Ztcy9mdGNvbmZpZy5oIChGVF9DQUxMQkFDS19ERUYpOiBVcGRhdGVkIHRvIGNoYW5nZSBkYXRlZAoJMjAwMS0wNi0yNy4KCjIwMDEtMDctMTcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCAoUFNfVGFibGUpOiBVc2UgRlRfT2Zmc2V0IGZvcgoJYGN1cnNvcicgYW5kIGBjYXBhY2l0eScuCgkqIHNyYy9wc2F1eC9wc29iamMuYyAocmVhbGxvY2F0ZV90MV90YWJsZSk6IFVzZSBGVF9Mb25nIGZvciBzZWNvbmQKCXBhcmFtZXRlci4KCShQU19UYWJsZV9BZGQpOiBVc2UgRlRfT2Zmc2V0IGZvciBgbmV3X3NpemUnLgoKCUFkZCBzdXBwb3J0IGZvciB2ZXJzaW9uIDAuNSBtYXhwIHRhYmxlcy4KCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb2FkX01heFByb2ZpbGUpOiBJbXBsZW1lbnQgaXQuCgkoVFRfTG9hZF9PUzIpOiBJbml0aWFsaXplIHNvbWUgdmFsdWVzLgoKMjAwMS0wNy0xMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRzeW50aC5jOiBJbmNsdWRlIGZ0Y2FsYy5oIHVuY29uZGl0aW9uYWxseS4KCjIwMDEtMDctMDcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMsIHNyYy90cnVldHlwZS90dGludGVycC5jLCBzcmMvcGNmL3BjZnJlYWQ6CglSZW1vdmVkIHBlZGFudGljIGNvbXBpbGVyIHdhcm5pbmdzIHdoZW4gdGhlIGJ5dGVjb2RlIGludGVycHJldGVyIGlzCgljb21waWxlZCBpbi4KCjIwMDEtMDctMDMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2FsaWduX3dlYWtfcG9pbnRzKTogUmVtb3ZlCgl1bnVzZWQgdmFyaWFibGUgYGVkZ2VzJy4KCShhaF9oaW50ZXJfbG9hZCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGVzIGBvbGRfd2lkdGgnIGFuZAoJYG5ld193aWR0aCcuCgkqIHNyYy9jaWQvY2lkbG9hZC5jIChjaWRfZGVjcnlwdCk6IFVzZSBgVScgZm9yIGNvbnN0YW50IChhZ2FpbikuCgkqIHNyYy9wc2F1eC9wc29ianMuYyAoVDFfRGVjcnlwdCk6IERpdHRvLgoJKiBzcmMvdHlwZTEvdDFwYXJzZS5jIChUMV9HZXRfUHJpdmF0ZV9EaWN0KTogRGl0dG8uCgoyMDAxLTA2LTI4ICBEYXZpZCBUdXJuZXIgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvaW50ZXJuYWwvZnRzdHJlYW0uaDogTW9kaWZpZWQgdGhlIGRlZmluaXRpb25zCglvZiB0aGUgRlRfR0VUX1hYWFggYW5kIE5FWFRfWFhYWCBtYWNyb3MgZm9yIDE2LWJpdCBjb3JyZWN0bmVzcy4KCjIwMDEtMDYtMjYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jaWQvY2lkbG9hZC5jLCBzcmMvY2lkL2NpZGxvYWQuaCAoY2lkX2RlY3J5cHQpOiBVc2UgRlRfT2Zmc2V0CglpbnN0ZWFkIG9mIEZUX0ludCBhcyB0eXBlIGZvciBgbGVuZ3RoJyBwYXJhbWV0ZXIuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCAoUFNBdXhfSW50ZXJmYWNlKTogVXBkYXRlZC4KCjIwMDEtMDYtMjcgIFdvbGZnYW5nIERvbXL2c2UgIDxwb3J0aG9zLmRvbXJvZXNlQGhhcnouZGU+CgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMsIHNyYy9wc2F1eC9wc29ianMuaCAoVDFfRGVjcnlwdCk6IFVzZSBGVF9PZmZzZXQKCWluc3RlYWQgb2YgRlRfSW50IGFzIHR5cGUgZm9yIGBsZW5ndGgnIHBhcmFtZXRlci4KCgoJKiBWZXJzaW9uIDIuMC40IHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PQoKCjIwMDEtMDYtMjcgIERhdmlkIFR1cm5lciA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogYnVpbGRzL3VuaXgvZnRjb25maWcuaW46IENoYW5nZWQgdGhlIGRlZmluaXRpb24gb2YgdGhlCglGVF9DQUxMQkFDS19ERUYgbWFjcm8uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0Y29uZmlnLmgsIHNyYy8qLyouYzogQ2hhbmdlZCB0aGUgZGVmaW5pdGlvbiBhbmQKCXVzZSBvZiB0aGUgRlRfQ0FMTEJBQ0tfREVGIG1hY3JvIGluIG9yZGVyIHRvIHN1cHBvcnQgMTYtYml0Cgljb21waWxlcnMuCgoJKiBidWlsZHMvdW5peC9mdGNvbmZpZy5pbjogQ2hhbmdlZCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUKCUZUX0NBTExCQUNLX0RFRiBtYWNyby4KCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb2FkX0tlcm4pOiBUaGUga2VybiB0YWJsZSBsb2FkZXIgbm93IGVuc3VyZXMKCXRoYXQgdGhlIGtlcm5pbmcgdGFibGUgaXMgY29ycmVjdGx5IHNvcnRlZCAoc29tZSBwcm9ibGVtIGZvbnRzIGRvbid0CgloYXZlIGEgY29ycmVjdCBrZXJuIHRhYmxlKS4KCjIwMDEtMDYtMjYgIFdvbGZnYW5nIERvbXL2c2UgIDxwb3J0aG9zLmRvbXJvZXNlQGhhcnouZGU+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c3RyZWFtLmggKEZUX0dFVF9PRkYzX0xFKTogRml4IHR5cG8uCgoyMDAxLTA2LTI0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoZnRfZGl2NjRieTMyKTogRml4ZWQgdGhlIHNvdXJjZSB0byB3b3JrCgljb3JyZWN0bHkgb24gMTYtYml0IHN5c3RlbXMuCgoyMDAxLTA2LTIzICBBbnRob255IEZvayAgPGZva0BkZWJpYW4ub3JnPgoKCSogZGViaWFuLyo6IEFkZGVkIERlYmlhbiBwYWNrYWdlIGJ1aWxkIGRpcmVjdG9yeSBmb3IgMi4wLjQuCgoyMDAxLTA2LTIyICBEYXZpZCBUdXJuZXIgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGRvY3MvUEFURU5UUzogQWRkZWQgcGF0ZW50cyBkaXNjbGFpbWVyLiAgVGhpcyBvbmUgd2FzIG1pc3NpbmchCgoJKiBkb2NzL0NIQU5HRVMsIGRvY3MvdG9kbzogVXBkYXRlZCBmb3IgdGhlIHVwY29taW5nIDIuMC40IHJlbGVhc2UuCgoyMDAxLTA2LTIwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oOiBBZGQgdHdvIG1vcmUgYEwncyB0bwoJY29uc3RhbnRzLgoJQWRkIG1pc3Npbmcgc2VtaWNvbG9ucy4KCgkqIGJ1aWxkcy90b3BsZXZlbC5tazogRG8gc2ltaWxhciBjaGFuZ2UgYXMgZm9yCglidWlsZHMvdW5peC9kZXRlY3QubWsuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX0VOQ19UQUcpOiBOZXcgdmVyc2lvbiB0byBtYWtlIGl0CgllYXNpZXIgdG8gcmVkZWZpbmUuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZS5oIChGVF9JTUFHRV9UQUcpOiBEaXR0by4KCgkqIHNyYy9wY2YvcGNmcmVhZC5jIChwY2ZfZ2V0X2VuY29kaW5ncyk6IEFkZCBjYXN0LgoKMjAwMS0wNi0xOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogYnVpbGRzL3dpbjMyL3Zpc3VhbGMvZnJlZXR5cGUuZHNwLCBidWlsZHMvd2luMzIvdmlzdWFsYy9pbmRleC5odG1sOgoJVXBkYXRlZCB0aGUgVmlzdWFsIEMrKyBwcm9qZWN0IChmb3IgdGhlIDIuMC40IHJlbGVhc2UpLgoKCSogYnVpbGRzL3VuaXgvZGV0ZWN0Lm1rOiBBZGRlZCBydWxlIGZvciBBSVggZGV0ZWN0aW9uICh3aGljaCB1c2VzCgkvdXNyL3NiaW4vaW5pdCBpbnN0ZWFkIG9mIC9zYmluL2luaXQpLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGVycm9ycy5oLCBzcmMvKi8qZXJyKi5oOiBVcGRhdGVkIHNvbWUgb2YgdGhlCgllcnJvciBtYWNyb3MgdG8gc2ltcGxpZnkgaGFuZGxpbmcgb2YgbmV3IGVycm9yIHNjaGVtZS4KCjIwMDEtMDYtMTkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnR0eXBlcy5oIChGVF9FUlJPUl9NT0RVTEUpOiBOZXcgbWFjcm8uCgoyMDAxLTA2LTE5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJUmVtb3ZpbmcgX2xvdHNfIG9mIGNvbXBpbGVyIHdhcm5pbmdzIHdoZW4gdGhlIG1vc3QgcGVkYW50aWMgd2FybmluZwoJbGV2ZWxzIG9mIFZpc3VhbCBDKysgYW5kIEJvcmxhbmQgQysrIGFyZSB1c2VkLiAgVG9vIG1hbnkgZmlsZXMgdG8gYmUKCWxpc3RlZCBoZXJlLCBidXQgRlQyIG5vdyBjb21waWxlcyB3aXRob3V0IHdhcm5pbmdzIHdpdGggVkMrKyBhbmQgdGhlCgkiL1c0IiB3YXJuaW5nIGxldmVsIChsaW50LXN0eWxlKS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfTmV3X01lbW9yeV9GYWNlKTogVXBkYXRlZAoJZG9jdW1lbnRhdGlvbi4KCSogaW5jbHVkZS9mcmVldHlwZS9mdHR5cGVzLmggKEZUX0JPT0wpOiBOZXcgbWFjcm8uCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oOiBBZGQgI3ByYWdtYSBmb3IgVmlzdWFsIEMrKwoJdG8gc3VwcHJlc3Mgd2FybmluZy4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oIChGVF9HRVRfU0hPUlRfe0JFLExFfSwKCUZUX0dFVF9PRkYzX3tCRSxMRX0sIEZUX0dFVF9MT05HX3tCRSxMRX0pOiBOZXcgbWFjcm9zLgoJKE5FWFRfKik6IFVzZSB0aGVtLgoJKiBzcmMvYXV0b2hpbnQvYWhnbG9iYWwuYzogSW5jbHVkZSBGVF9JTlRFUk5BTF9ERUJVR19ILgoJKEZUX05ld19NZW1vcnlfRmFjZSk6IEFkZCBgY29uc3QnIHRvIGZ1bmN0aW9uIGRlY2xhcmF0aW9uLgoKMjAwMS0wNi0xOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCU1pbm9yIGNsZWFudXBzIHRvIHJlbW92ZSBjb21waWxlciB3YXJuaW5ncy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjbWFuYWcuaCAoRlRDX01BWF9CWVRFU19ERUZBVUxUKTogVXNlCglgTCcgZm9yIGNvbnN0YW50LgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oIChGVF9SRU5ERVJfUE9PTF9TSVpFKTogRGl0dG8uCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9NdWxEaXYpOiBVc2UgYEwnIGZvciBjb25zdGFudC4KCSogc3JjL2Jhc2UvZnRnbHlwaC5jIChGVF9HbHlwaF9HZXRfQ0JveCk6IFJlbW92ZSBgZXJyb3InIHZhcmlhYmxlLgoJKiBzcmMvYmFzZS9mdHRyaWdvbi5jIChmdF90cmlnX2FyY3Rhbl90YWJsZSk6IFVzZSBgTCcgZm9yIGNvbnN0YW50cy4KCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0RvbmVfU2l6ZSk6IEZpeCByZXR1cm4gdmFsdWUuCgkoRlRfU2V0X0NoYXJfU2l6ZSwgRlRfU2V0X1BpeGVsX1NpemVzLCBGVF9HZXRfS2VybmluZyk6IFJlbW92ZQoJdW51c2VkIGBtZW1vcnknIHZhcmlhYmxlLgoJKiBzcmMvYXV0b2hpbnQvYWhnbHlwaC5jIChhaF9nZXRfb3JpZW50YXRpb24pOiBVc2UgYEwnIGZvciBjb25zdGFudC4KCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50X2VkZ2VzXzMsCglhaF9oaW50ZXJfYWxpZ25fZWRnZV9wb2ludHMpOiBSZW1vdmUgdW51c2VkIGBiZWZvcmUnIGFuZCBgYWZ0ZXInCgl2YXJpYWJsZXMuCgkoYWhfaGludGVyX2FsaWduX3dlYWtfcG9pbnRzKTogUmVtb3ZlIHVudXNlZCBgZWRnZV9saW1pdCcgdmFyaWFibGUuCgkoYWhfaGludGVyX2xvYWQpOiBSZW1vdmUgdW51c2VkIGBuZXdfYWR2YW5jZScsIGBzdGFydF9jb250b3VyJywKCWFuZCBgbWV0cmljcycgdmFyaWFibGVzLgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoQ0ZGX0xvYWRfRW5jb2RpbmcpOiBSZW1vdmUgZGVhZCBjb2RlIHRvIGF2b2lkCgljb21waWxlciB3YXJuaW5nLgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoQ0ZGX0luaXRfRmFjZSk6IFJlbW92ZSB1bnVzZWQgYGJhc2Vfb2Zmc2V0JwoJdmFyaWFibGUuCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYyAoQ0ZGX1BhcnNlX0NoYXJTdHJpbmdzKTogUmVtb3ZlIHVudXNlZAoJYG91dGxpbmUnIHZhcmlhYmxlLgoJKGNmZl9jb21wdXRlX2JpYXMpOiBVc2UgYFUnIGZvciBjb25zdGFudC4KCSogc3JjL2NpZC9jaWRsb2FkLmMgKGNpZF9kZWNyeXB0KTogRGl0dG8uCgkqIHNyYy9wc2F1eC9wc29ianMuYyAoVDFfRGVjcnlwdCk6IERpdHRvLgoJKiBzcmMvcHNhdXgvdDFkZWNvZGUuYyAoVDFfRGVjb2Rlcl9QYXJzZV9DaGFyU3RyaW5ncyk6IERpdHRvLgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9hZF9LZXJuKTogUmVtb3ZlIHVudXNlZCBgdmVyc2lvbicKCXZhcmlhYmxlLgoJKiBzcmMvc2ZudC90dHNiaXQuYyAoVFRfTG9hZF9TQml0X0ltYWdlKTogUmVtb3ZlIHVudXNlZCBgdG9wJwoJdmFyaWFibGUuCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOiBSZW1vdmUgdW51c2VkCglgbnVtX2NvbnRvdXJzJyBhbmQgYGluc19vZmZzZXQnIHZhcmlhYmxlcy4KCShjb21wdXRlX2dseXBoX21ldHJpY3MpOiBSZW1vdmUgdW51c2VkIGBUb3AnIGFuZCBgeF9zY2FsZScKCXZhcmlhYmxlcy4KCShUVF9Mb2FkX0dseXBoKTogUmVtb3ZlIHVudXNlZCBgbWVtb3J5JyB2YXJpYWJsZS4KCSogc3JjL3Ntb290aC9mdGdyYXlzLmMgKGdyYXlzX3Jhc3Rlcl9yZW5kZXIpOiBVc2UgYEwnIGZvciBjb25zdGFudHMuCgoyMDAxLTA2LTE4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJTWFrZSB0aGUgbmV3IGVycm9yIHNjaGVtZSBzb3VyY2UgY29tcGF0aWJsZSB3aXRoIG9sZGVyIEZUIHZlcnNpb25zCglieSBpbnRyb2R1Y2luZyBhbm90aGVyIGxheWVyLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGVycm9ycy5oIChGVF9FUlJPUkRFRl8sIEZUX05PRVJST1JERUZfKTogTmV3CgltYWNyb3MuCgkoRlRfTk9FUlJPUkRFRik6IFJlbW92ZWQuCgkqIGluY2x1ZGUvKi8qZXJyKi5oOiBVc2UgRlRfRVJST1JERUZfIGFuZCBGVF9OT0VSUk9SREVGXy4KCjIwMDEtMDYtMTYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfRU5DX1RBRyk6IE5ldyBtYWNyby4KCShGVF9FbmNvZGluZ18pOiBVc2UgaXQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZS5oIChGVF9JTUFHRV9UQUcpOiBEZWZpbmUgaXQKCWNvbmRpdGlvbmFsbHkuCgoyMDAxLTA2LTE0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJTW9kaWZpZWQgdGhlIFRydWVUeXBlIGludGVycHJldGVyIHRvIGxldCBpdCB1c2UgdGhlIG5ldwoJdHJpZ29ub21ldHJpYyBmdW5jdGlvbnMgcHJvdmlkZWQgaW4gImZ0dHJpZ29uLmgiLiAgVGhpcyBnZXRzIHJpZCBvZgoJc29tZSBvbGQgNjQtYml0IGNvbXB1dGF0aW9uIHJvdXRpbmVzLCBhcyB3ZWxsIGFzIG1hbnkgd2FybmluZ3Mgd2hlbgoJY29tcGlsaW5nIHRoZSBsaWJyYXJ5IHdpdGggdGhlICJsb25nIGxvbmciIDY0LWJpdCBpbnRlZ2VyIHR5cGUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oOiBVbmRlZmluZQoJRlRfQ09ORklHX09QVElPTl9PTERfQ0FMQ1MuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRjYWxjLmg6IFJlYXJyYW5nZSB1c2Ugb2YKCUZUX0NPTkZJR19PUFRJT05fT0xEX0NBTENTLgoJKiBzcmMvYmFzZS9mdGNhbGMuYzogQWRkIGRlY2xhcmF0aW9uIG9mIEZUX0ludDY0IGlmCglGVF9DT05GSUdfT1BUSU9OX09MRF9DQUxDUyBpc24ndCBkZWZpbmVkLgoJKiBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuYzogVXNlIEZUX1RSSUdPTk9NRVRSWV9ILgoJKE5vcm0pOiBBZGQgYSBzcGVjaWFsIHZlcnNpb24gaWYgRlRfQ09ORklHX09QVElPTl9PTERfQ0FMQ1MgaXNuJ3QKCWRlZmluZWQuCgkoQ3VycmVudF9SYXRpbywgTm9ybWFsaXplKTogU2ltcGxpZnkgY29kZS4KCjIwMDEtMDYtMTEgIE1pa2UgT3dlbnMgIDxNT3dlbnNAYW10ZGF0YXNvdXRoLmNvbT4KCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9NdWxEaXYsIEZUX0RpdkZpeCwgRlRfU3FydDY0KTogUmVtb3ZlCgljb21waWxlciB3YXJuaW5ncy4KCjIwMDEtMDYtMDggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5pbjogUmVuYW1lZCB0byAuLi4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjOiBUaGlzIHRvIG1ha2Ugc3VyZSB0aGF0IGF1dG9jb25mIDIuNTAgaXMKCW5lZWRlZC4KCVJ1biBgYXV0b3VwZGF0ZScgb24gaXQuCglJbmNyZWFzZSBgdmVyc2lvbl9pbmZvJyB0byA3OjA6MS4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCjIwMDEtMDYtMDggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2xvYWRfZ2x5cGgpOiBGaXhlZCBhIGJ1ZyB0aGF0Cgljb3JydXB0ZWQgdHJhbnNmb3JtZWQgZ2x5cGhzIHRoYXQgd2VyZSBhdXRvLWhpbnRlZCAodGhlIHRyYW5zZm9ybQoJd2FzIGFwcGxpZWQgdHdpY2UpLgoKCUZpeGVkIGEgYnVnIHRoYXQgcmV0dXJuZWQgYW4gaW52YWxpZCBsaW5lYXIgd2lkdGggZm9yIGNvbXBvc2l0ZQoJVHJ1ZVR5cGUgZ2x5cGhzLgoKCSogaW5jbHVkZS9pbnRlcm5hbC90dHR5cGVzLmggKFRUX0xvYWRlcl8pOiBUd28gbmV3IGVsZW1lbnRzIGBsaW5lYXInCglhbmQgYGxpbmVhcl9kZWYnLgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChsb2FkX3RydWV0eXBlX2dseXBoLAoJY29tcHV0ZV9nbHlwaF9tZXRyaWNzKTogVXNlIGl0LgoKCSogaW5jbHVkZS9mdHR5cGVzLmggKEZUX0VSUk9SX0JBU0UpOiBOZXcgbWFjcm8uCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9PcGVuX0ZhY2UsIEZUX1JlbmRlcl9HbHlwaF9JbnRlcm5hbCk6IFVzZSBpdAoJdG8gbWFrZSBzb3VyY2UgY29kZSB3b3JrIHdpdGggdGhlIG5ldyBlcnJvciBzY2hlbWUgaW1wbGVtZW50ZWQgYnkKCVdlcm5lci4KCSogc3JjL2Jhc2UvZnRvdXRsbi5jIChGVF9PdXRsaW5lX1JlbmRlcik6IERpdHRvLgoKMjAwMS0wNi0wNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCVVwZGF0aW5nIHRvIGxpYnRvb2wgMS40LjAgYW5kIGF1dG9jb25mIDIuNTAuCgoJKiBidWlsZHMvdW5peC9sdGNvbmZpZzogUmVtb3ZlZC4KCSogYnVpbGRzL3VuaXgvbHRtYWluLnNoLCBidWlsZHMvdW5peC9jb25maWd1cmUuaW4sCglidWlsZHMvdW5peC9hY2xvY2FsLm00OiBVcGRhdGVkLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKMjAwMS0wNi0wNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCUNvbXBsZXRlIHJlZGVzaWduIG9mIGVycm9yIGNvZGVzLiAgUGxlYXNlIGNoZWNrIGZ0bW9kZXJyLmggZm9yIG1vcmUKCWRldGFpbHMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2NmZmVycnMuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHRlcnJvcnMuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDFlcnJvcnMuaDogUmVtb3ZlZC4gIFJlcGxhY2VkIHdpdGggZmlsZXMKCWxvY2FsIHRvIHRoZSBtb2R1bGUuICBBbGwgZXh0cmEgZXJyb3IgY29kZXMgaGF2ZSBiZWVuIG1vdmVkIHRvCglgZnRlcnJvcnMuaCcuCgoJKiBzcmMvc2ZudC90dHBvc3QuaDogTW92ZSBlcnJvciBjb2RlcyB0byBgZnRlcnJvcnMuaCcuCgoJKiBzcmMvYXV0b2hpbnQvYWhlcnJvcnMuaCwgc3JjL2NhY2hlL2Z0Y2Vycm9yLmgsIHNyYy9jZmYvY2ZmZXJycy5oLAoJc3JjL2NpZC9jaWRlcnJzLmgsIHNyYy9wY2YvcGNmZXJyb3IuaCwgc3JjL3BzYXV4L3BzYXV4ZXJyLmgsCglzcmMvcHNuYW1lcy9wc25hbWVyci5oLCBzcmMvcmFzdGVyL3Jhc3RlcnJzLmgsIHNyYy9zZm50L3NmZXJyb3JzLmgsCglzcmMvc21vb3RoL2Z0c21lcnJzLmgsIHNyYy90cnVldHlwZS90dGVycm9ycy5oLAoJc3JjL3R5cGUxL3QxZXJyb3JzLmgsIHNyYy93aW5mb250cy9mbnRlcnJzLmg6IE5ldyBmaWxlcyBkZWZpbmluZyB0aGUKCWVycm9yIG5hbWVzIGZvciB0aGUgbW9kdWxlIGl0IGJlbG9uZ3MgdG8uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0bW9kZXJyLmg6IE5ldyBmaWxlLCBkZWZpbmluZyB0aGUgbW9kdWxlIGVycm9yCglvZmZzZXRzLiAgSXRzIHN0cnVjdHVyZSBpcyBzaW1pbGFyIHRvIGBmdGVycm9ycy5oJy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRlcnJvcnMuaCAoRlRfTk9FUlJPUkRFRik6IE5ldyBtYWNyby4KCShGVF9FUlJPUkRFRik6IFJlZGVmaW5lZCB0byB1c2UgbW9kdWxlIGVycm9yIG9mZnNldHMuCglBbGwgaW50ZXJuYWwgZXJyb3IgY29kZXMgYXJlIG5vdyBwdWJsaWM7IHVudXNlZCBlcnJvciBjb2RlcyBoYXZlCgliZWVuIHJlbW92ZWQsIHNvbWUgYXJlIG5ldy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmggKEZUX01PRFVMRV9FUlJPUlNfSCk6IE5ldwoJbWFjcm8uCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmgKCShGVF9DT05GSUdfT1BUSU9OX1VTRV9NT0RVTEVfRVJST1JTKTogTmV3IG1hY3JvLgoKCUFsbCBvdGhlciBzb3VyY2UgZmlsZXMgaGF2ZSBiZWVuIHVwZGF0ZWQgdG8gdXNlIHRoZSBuZXcgZXJyb3IgY29kZXM7Cglzb21lIGFscmVhZHkgZXhpc3RpbmcgKGludGVybmFsKSBlcnJvciBjb2RlcyBsb2NhbCB0byBhIG1vZHVsZSBoYXZlCgliZWVuIHJlbmFtZWQgdG8gZ2l2ZSB0aGVtIHRoZSBzYW1lIG5hbWUgYXMgaW4gdGhlIGJhc2UgbW9kdWxlLgoKCUFsbCBtYWtlIGZpbGVzIGhhdmUgYmVlbiB1cGRhdGVkIHRvIGluY2x1ZGUgdGhlIGxvY2FsIGVycm9yIGZpbGVzLgoKMjAwMS0wNi0wNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NpZC9jaWR0b2tlbnMuaDogUmVwbGFjZWQgd2l0aC4uLgoJKiBzcmMvY2lkL2NpZHRva2VuLmg6IFRoaXMgZmlsZSBmb3IgOCszIGNvbnNpc3RlbmN5LgoKCSogc3JjL3Jhc3Rlci9mdHJhc3Rlci5jOiBVc2UgbWFjcm9zIGZvciBoZWFkZXIgZmlsZSBuYW1lcy4KCgkqIHNyYy9pbmNsdWRlL2ZyZWV0eXBlL3R0dGFibGVzLmggKFRUX0hvcmlIZWFkZXJfLCBUVF9WZXJ0SGVhZGVyXyk6CglGaXggbGVuZ3RoIG9mIGBSZXNlcnZlZCcgYXJyYXkuICBOb3RlIHRoYXQgdGhpcyBpc24ndCB0aGUgcmVhbCBmaXgKCXNpbmNlIHJlY2VudCBPcGVuVHlwZSBzcGVjcyBoYXZlIGludHJvZHVjZWQgYSBgQ2FyZXRPZmZzZXQnIGZpZWxkCglpbnN0ZWFkIG9mIHRoZSBmaXJzdCByZXNlcnZlZCBieXRlLgoKMjAwMS0wNS0yOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogSU5TVEFMTDogTWlub3IgZml4ZXMuCgoKCSogVmVyc2lvbiAyLjAuMyByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoyMDAxLTA1LTI5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBJTlNUQUxMLCBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQuCgoyMDAxLTA1LTI1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJTW92ZWQgc2V2ZXJhbCBkb2N1bWVudHMgZnJvbSB0aGUgdG9wLWxldmVsIHRvIHRoZSAiZG9jcyIgZGlyZWN0b3J5LgoKCSogc3JjL2Jhc2UvZnRjYWxjLmMgKEZUX0RpdkZpeCk6IFNtYWxsIGZpeCB0byByZXR1cm4gdmFsdWUuCgoyMDAxLTA1LTE2ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChsb2FkX3RydWV0eXBlX2dseXBoKTogRml4ZWQgYSBidWcgaW4gdGhlCgljb21wb3NpdGUgbG9hZGVyLiAgU3BvdHRlZCBieSBLZWl0aCBQYWNrYXJkLgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfR2x5cGhMb2FkZXJfQ2hlY2tfUG9pbnRzLAoJRlRfR2x5cGhMb2FkZXJfQ2hlY2tfU3ViZ2x5cGhzKTogRGl0dG8uCgoyMDAxLTA1LTE0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJRml4ZWQgdGhlIGluY29ycmVjdCBibHVlIHpvbmUgY29tcHV0YXRpb25zLCBhbmQgaW1wcm92ZWQgdGhlCgljb21wb3NpdGUgc3VwcG9ydC4gIE5vdGUgdGhhdCB0aGVzZSBjaGFuZ2VzIHJlc3VsdCBpbiBpbXByb3ZlZAoJcmVuZGVyaW5nLCB3aGlsZSBzb21ldGltZXMgaW50cm9kdWNpbmcgdGhlaXIgb3duIGFydGVmYWN0cy4gIFRoaXMgaXMKCXByb2JhYmx5IHRoZSBsYXN0IGJpZyBjaGFuZ2UgdG8gdGhlIGF1dG9oaW50ZXIgYmVmb3JlIHRoZQoJaW50cm9kdWN0aW9uIG9mIGEgY29tcGxldGUgcmVwbGFjZW1lbnQuCgoJKiBzcmMvYXV0b2hpbnQvYWhnbG9iYWwuYyAoc29ydF92YWx1ZXMpOiBGaXggbG9vcC4KCSogc3JjL2F1dG9oaW50L2FoZ2x5cGguYzogUmVtb3ZlZCBzb21lIG9ic29sZXRlIGNvZGUuCgkoYWhfb3V0bGluZV9jb21wdXRlX2VkZ2VzKTogTW9kaWZ5IGNvZGUgdG8gc2V0IHRoZSBhaF9lZGdlX3JvdW5kCglmbGFnLgoJKGFoX291dGxpbmVfY29tcHV0ZV9ibHVlX2VkZ2VzKTogQWRkIGNvZGUgdG8gY29tcHV0ZSBhY3RpdmUgYmx1ZQoJem9uZXMuCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2dseXBoX2xvYWQpOiBDaGFuZ2UgbG9hZF9mbGFncwoJdmFsdWUuCgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoRlRfRGl2Rml4KTogRml4ZWQgYSBidWcgaW4gdGhlIDY0LWJpdCBjb2RlIHRoYXQKCWNyZWF0ZWQgaW5jb3JyZWN0IHNjYWxlIGZhY3RvcnMhCgkoRlRfUm91bmRfRml4LCBGVF9DZWlsRml4LCBGVF9GbG9vckZpeCk6IE1pbm9yIGltcHJvdmVtZW50cy4KCjIwMDEtMDUtMTIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRiYm94Lmg6IEZUQkJPWF9IIC0+IF9fRlRCQk9YX0hfXy4KCSogaW5jbHVkZS9mcmVldHlwZS9mdHRyaWdvbi5oOiBfX0ZUX1RSSUdPTk9NRVRSWV9IX18gLT4KCV9fRlRUUklHT05fSF9fLgoJSW5jbHVkZSBGVF9GUkVFVFlQRV9ILgoJQmVhdXRpZmllZDsgYWRkZWQgY29weXJpZ2h0LgoJKiBzcmMvYmFzZS9mdHRyaWdvbi5jOiBCZWF1dGlmaWVkOyBhZGRlZCBjb3B5cmlnaHQuCgoyMDAxLTA1LTExICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL2NmZnBhcnNlLmMgKGNmZl9wYXJzZV9mb250X21hdHJpeCksIHNyYy9jaWQvY2lkbG9hZC5jCgkocGFyc2VfZm9udF9tYXRyaXgpLCBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2ZvbnRfbWF0cml4KTogRml4ZWQKCXRoZSBpbmNvcnJlY3QgRU0gc2l6ZSBjb21wdXRhdGlvbi4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnR0cmlnb24uaCwgc3JjL2Jhc2UvZnR0cmlnb24uYzogTmV3IGZpbGVzLAoJYWRkaW5nIHRyaWdvbm9tZXRyaWMgZnVuY3Rpb25zIHRvIHRoZSBjb3JlIEFQSSAodXNpbmcgQ29yZGljCglhbGdvcml0aG1zKS4KCSogc3JjL2Jhc2UvZnRiYXNlLmMsIHNyYy9iYXNlL0phbWZpbGUsIHNyYy9iYXNlL3J1bGVzLm1rOiBVc2UgdGhlbS4KCgkqIGJ1aWxkcy9uZXdsaW5lOiBOZXcgZmlsZS4KCSogYnVpbGRzL3RvcF9sZXZlbC5taywgYnVpbGRzL2RldGVjdC5tazogVXNlIGl0LiAgVGhpcyBmaXhlcwoJcHJvYmxlbXMgd2l0aCBNYWtlIG9uIFdpbmRvd3MgMjAwMCwgYXMgd2VsbCBhcyBwcm9ibGVtcyB3aGVuICJtYWtlCglkaXN0Y2xlYW4iIGlzIGludm9rZWQgb24gYSBub24tVW5peCBwbGF0Zm9ybSB3aGVuIHRoZXJlIGlzIG5vCgkiY29uZmlnLm1rIiBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCgoJKiBidWlsZHMvZnJlZXR5cGUubWs6IEZpeGVkIGEgcHJvYmxlbSB3aXRoIG9iamVjdCBkZWxldGlvbnMgdW5kZXIKCURvcy9XaW5kb3dzL09TLzIgc3lzdGVtcy4KCglBZGRlZCBuZXcgZGlyZWN0b3J5IHRvIGhvbGQgdG9vbHMgYW5kIHRlc3QgcHJvZ3JhbXMuCgoJKiBkb2NzL2RvY21ha2VyLnB5LCBkb2NzL2dsbmFtZXMucHk6IE1vdmVkIHRvLi4uCgkqIHNyYy90b29scy9kb2NtYWtlci5weSwgc3JjL3Rvb2xzL2dsbmFtZXMucHk6IFRoaXMgcGxhY2UuCgkqIHNyYy90b29scy9jb3JkaWMucHk6IE5ldyBmaWxlIHVzZWQgdG8gY29tcHV0ZSBhcmN0YW5nZW50IHRhYmxlCgluZWVkZWQgYnkgZnR0cmlnb24uYy4KCSogc3JjL3Rvb2xzL3Rlc3RfYmJveC5jLCBzcmMvdG9vbHMvdGVzdF90cmlnLmM6IE5ldyB0ZXN0IGZpbGVzLgoKCSogc3JjL3Rvb2xzL2RvY21ha2VyLnB5OiBJbXByb3ZlZCB0aGUgc2NyaXB0IHRvIGFkZCB0aGUgY3VycmVudCBkYXRlCglhdCB0aGUgZm9vdGVyIG9mIGVhY2ggd2ViIHBhZ2UgKHVzZWZ1bCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuCgl2ZXJzaW9ucykuCgoJKiBKYW1maWxlOiBGaXhlZCBpbmNvcnJlY3QgSERSTUFDUk8gYXJndW1lbnQuCgoJKiBUT0RPOiBSZW1vdmVkIHRoZSBjdWJpYyBhcmMgYmJveCBjb21wdXRhdGlvbiBub3RlLCBzaW5jZSBpdCBoYXMgYmVlbgoJZml4ZWQgcmVjZW50bHkuCgkqIHNyYy9iYXNlL2Z0YmJveC5jICh0ZXN0X2N1YmljX3plcm8pOiBSZW5hbWVkIHRvLi4uCgkodGVzdF9jdWJpY19leHRyZW1hKTogVGhpcyBmdW5jdGlvbi4gIFVzZSBgVUwnIGZvciB1bnNpZ25lZCBsb25nCgljb25zdGFudHMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3QxdGFibGVzLmgsIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmg6CglGb3JtYXR0aW5nLgoKMjAwMS0wNS0xMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX09wZW5fRmFjZSk6IEZpeGVkIGEgc21hbGwgbWVtb3J5IGxlYWsKCXdoaWNoIGhhcHBlbmVkIHdoZW4gdHJ5aW5nIHRvIG9wZW4gMC1zaXplIGZvbnQgZmlsZXMhCgoyMDAxLTA1LTA5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0Y2FsYy5oOiBNb3ZlIGRlY2xhcmF0aW9uIG9mCglGVF9TcXJ0Rml4ZWQoKSBvdXQgb2YgYCNpZmRlZiBGVF9MT05HNjQnLgoKMjAwMS0wNS0wOCAgRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpICA8RnJhbmNlc2NvLlphcHBhLk5hcmRlbGxpQGVucy5mcj4KCgkqIHNyYy9wY2Zkcml2ZXIuYyAoUENGX0xvYWRfR2x5cGgpOiBGaXhlZCBpbmNvcnJlY3QgYml0bWFwIHdpZHRoCgljb21wdXRhdGlvbi4KCjIwMDEtMDUtMDggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGRvY3MvZG9jbWFrZXIucHk6IFVwZGF0ZWQgdGhlIERvY01ha2VyIHNjcmlwdCBpbiBvcmRlciB0byBhZGQKCWNvbW1hbmQgbGluZSBvcHRpb25zICgtLW91dHB1dCwtLXByZWZpeCwtLXRpdGxlKSwgZml4IHRoZSBlcnJvbmVvdXMKCWxpbmUgbnVtYmVycyByZXBvcnRlZCBkdXJpbmcgZXJyb3JzIGFuZCB3YXJuaW5ncywgYW5kIG90aGVyCglmb3JtYXR0aW5nIGlzc3Vlcy4KCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9NdWxEaXYsIEZUX011bEZpeCwgRlRfRGl2Rml4KTogVmFyaW91cyB0aW55CglmaXhlcyByZWxhdGVkIHRvIHJvdW5kaW5nIGluIDY0LWJpdHMgcm91dGluZXMgYW5kCglwc2V1ZG8tIm9wdGltaXphdGlvbnMiLgoKMjAwMS0wNC0yNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRiYm94LmMgKEJCb3hfQ3ViaWNfQ2hlY2spOiBGaXhlZCB0aGUgY29lZmZpY2llbnQKCW5vcm1hbGl6YXRpb24gYWxnb3JpdGhtIChpbnZhbGlkIGZpbmFsIGJpdCBwb3NpdGlvbiwgYW5kIGludmFsaWQKCXNoaWZ0IGNvbXB1dGF0aW9uKS4KCjIwMDEtMDQtMjYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZy5ndWVzcywgYnVpbGRzL3VuaXgvY29uZmlnLnN1YjogVXBkYXRlZCB0bwoJbGF0ZXN0IHZlcnNpb25zIGZyb20gZ251Lm9yZy4KCgkqIGJ1aWxkcy9jb21waWxlci9nY2MtZGV2Lm1rOiBBZGQgYC1Xbm8tbG9uZy1sb25nJyBmbGFnLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGNhbGMuaDogRGVmaW5lIEZUX1NxcnRGaXhlZCgpCgl1bmNvZGl0aW9uYWxseS4KCSogc3JjL2Jhc2UvZnRiYm94LmM6IEluY2x1ZGUgRlRfSU5URVJOQUxfQ0FMQ19ILgoJRml4IGNvbXBpbGVyIHdhcm5pbmdzLgoJKiBzcmMvYmFzZS9mdGNhbGMuYzogRml4IChwb3RlbnRpYWwpIGNvbXBpbGVyIHdhcm5pbmdzLgoKMjAwMS0wNC0yNiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRjYWxjLmMgKEZUX1NxcnRGaXhlZCk6IENvcnJlY3RlZC9vcHRpbWl6ZWQgdGhlIDMyLWJpdAoJZml4ZWQtcG9pbnQgc3F1YXJlIHJvb3QgY29tcHV0YXRpb24uICBJdCBpcyBub3cgdXNlZCBldmVuIHdpdGgKCTY0LWJpdHMgaW50ZWdlcnMsIGFzIGl0IGlzIF9tdWNoXyBmYXN0ZXIgdGhhbiBjYWxsaW5nIEZUX1NxcnQ2NCA6LSkKCgkqIHNyYy9iYXNlL2Z0YmJveC5jOiBSZW1vdmVkIGludmFsaWQgIiNpbmNsdWRlIEZUX0JFWklFUl9IIiBsaW5lLgoKMjAwMS0wNC0yNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRiYm94LmMgKEJCb3hfQ3ViaWNfQ2hlY2spOiBSZXdyb3RlIGZ1bmN0aW9uIHRvIHVzZQoJZGlyZWN0IGNvbXB1dGF0aW9ucyB3aXRoIDE2LjE2IHZhbHVlcyBpbnN0ZWFkIG9mIHN1Yi1kaXZpc2lvbnMuICBJdAoJaXMgbm93IHNsb3dlciwgYnV0IHByb3ZlcyBhIHBvaW50IDotKQoKCSogc3JjL3Jhc3Rlci9mdHJhc3Rlci5jLCBzcmMvc21vb3RoL2Z0Z3JheXMuYywgc3JjL2Jhc2UvZnRiYm94LmM6CglGaXhlZCB0aGUgYmV6aWVyIHN0YWNrIGRlcHRocy4KCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9NdWxGaXgpOiBNaW5vciByb3VuZGluZyBmaXguCgoJKiBidWlsZHMvYmVvczogQWRkZWQgQmVPUy1zcGVjaWZpYyBmaWxlcyB0byB0aGUgb2xkIGJ1aWxkIHN5c3RlbQoJKG5vIGNoYW5nZXMgd2VyZSBuZWNlc3NhcnkgdG8gc3VwcG9ydCBCZU9TIGluIHRoZSBKYW1maWxlIHRob3VnaCkuCgoyMDAxLTA0LTIwICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBmdGNvbmZpZy5oLCBmdG9wdGlvbi5oOiBVcGRhdGVkICJmdGNvbmZpZy5oIiB0byBkZXRlY3QgNjQtYml0IGludAoJdHlwZXMgb24gcGxhdGZvcm1zIHdoZXJlIEF1dG9jb25mIGlzIG5vdCBhdmFpbGFibGUpLiAgQWxzbyByZW1vdmVkCglGVENBTENfVVNFX0xPTkdfTE9ORyBhbmQgcmVwbGFjZWQgaXQgd2l0aAoJRlRfQ09ORklHX09QVElPTl9GT1JDRV9JTlQ2NC4KCgkqIGJ1aWxkcy93aW4zMi9mcmVldHlwZS5kc3A6IFVwZGF0ZWQgdGhlIFZpc3VhbCBDKysgcHJvamVjdCBmaWxlLgoJRG9lc24ndCBjcmVhdGUgYSBETEwgeWV0LgoKCSogY2ZmZ2xvYWQuYzogUmVtb3ZlZCBhIGNvbXBpbGF0aW9uIHdhcm5pbmcuCgoyMDAxLTA0LTEwICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogdDFsb2FkLmMgKHBhcnNlX2NoYXJzdHJpbmdzKTogQ2hhbmdlZCBjb2RlIGZvciBwbGFjaW5nIC5ub3RkZWYKCWdseXBoIGludG8gc2xvdCAwIHNvIHRoYXQgd2Ugbm8gbG9uZ2VyIGhhdmUgYSBtZW1vcnkgYWNjZXNzCgl2aW9sYXRpb24uCgoJKiB0MWxvYWQuaDogSW4gc3RydWN0dXJlIFQxX0xvYWRlciwgYWRkZWQgc3dhcF90YWJsZSAob2YgdHlwZQoJUFNfVGFibGUpIHRvIGZhY2lsaXRhdGUgcGxhY2luZyB0aGUgLm5vdGRlZiBnbHlwaCBpbnRvIHNsb3QgMC4KCjIwMDEtMDQtMTAgIEZyYW5jZXNjbyBaYXBwYSBOYXJkZWxsaSAgPGZyYW5jZXNjby56YXBwYS5uYXJkZWxsaUBlbnMuZnI+CgoJKiBzcmMvcGNmL3BjZmRyaXZlci5jIChQQ0ZfR2V0X0NoYXJfSW5kZXgpOiBGaXggcmV0dXJuIHZhbHVlLgoKMjAwMS0wNC0wOSAgTGF1cmVuY2UgV2l0aGVycyAgPGx3aXRoZXJzQGx3aXRoZXJzLmRlbW9uLmNvLnVrPgoKCSogYnVpbGRzL2Rvcy9kZXRlY3QubWs6IEFkZCBzdXBwb3J0IGZvciBiYXNoLgoKMjAwMS0wNC0wNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL29zMi8qLm1rOiBUaGVzZSBmaWxlcyBoYXZlIGJlZW4gZm9yZ290dGVuIHRvIHVwZGF0ZSB0bwoJdGhlIHN0cnVjdHVyZSBvZiBzaW1pbGFyIG1ha2VmaWxlcy4KCSogYnVpbGRzL2Rvcy8qLm1rOiBEaXR0by4KCSogYnVpbGRzL2Fuc2kvKi5tazogRGl0dG8uCgoJKiBidWlsZHMvd2luMzIvd2luMzItZGVmLm1rIChCVUlMRCk6IEZpeCB0eXBvLgoKCSogYnVpbGRzL2NvbXBpbGVyLyoubWsgKENMRUFOX0xJQlJBUlkpOiBEb24ndCB1c2UgTk9fT1VUUFVULgoJVGhpcyBpcyBhbHJlYWR5IHVzZWQgaW4gdGhlIGxpbmtfKi5tayBmaWxlcy4KCjIwMDEtMDQtMDMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy8qL0phbWZpbGU6IFNsaWdodCBjaGFuZ2VzCXRvIG1ha2UgZmlsZXMgbW9yZSBjcnlwdGljLgoKMjAwMS0wNC0wMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogSmFtZmlsZSwgc3JjL0phbWZpbGUsIHNyYy8qL0phbWZpbGU6IEZvcm1hdHRlZC4gIFNsaWdodCBjaGFuZ2VzCgl0byBnaXZlIGZpbGVzIGlkZW50aWNhbCBzdHJ1Y3R1cmUuCgoyMDAxLTA0LTAyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBDSEFOR0VTOiBSZWZvcm1hdHRlZCwgbWlub3IgZml4ZXMuCgkqIFRPRE86IFVwZGF0ZWQuCgkqIFJFQURNRTogRm9ybWF0dGluZy4KCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBGb3JtYXR0aW5nLgoKCSogSmFtZmlsZTogRml4IHR5cG8uCgoJKiBzcmMvY2ZmL2NmZnBhcnNlLmM6IE1vdmUgZXJyb3IgY29kZSAjZGVmaW5lcyB0by4uLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2NmZmVycnMuaDogVGhpcyBmaWxlLgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMsIHNyYy9jZmYvY2Zmb2Jqcy5jLCBzcmMvY2ZmL2NmZmxvYWQuYzogUmVwbGFjZWQKCWBGVF9FcnJfKicgd2l0aCBgQ0ZGX0Vycl8qJy4KCSogc3JjL2NpZC9jaWRwYXJzZS5jOiBSZXBsYWNlZCBgRlRfRXJyXyonIHdpdGggYFQxX0Vycl8qJy4KCSogc3JjL3BzYXV4L3Bzb2Jqcy5jLCBzcmMvcHNhdXgvdDFkZWNvZGUuYzogRGl0dG8uCgkqIHNyYy9zZm50L3Nmb2Jjcy5jLCBzcmMvc2ZudC90dGxvYWQuYzogUmVwbGFjZWQgYEZUX0Vycl8qJyB3aXRoCglgVFRfRXJyXyonLgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jLCBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmM6IERpdHRvLgoJKiBzcmMvdHlwZTEvdDFnbG9hZC5jLCBzcmMvdHlwZTEvdDFsb2FkLmMsIHNyYy90eXBlMS90MW9ianMuYywKCXNyYy90eXBlMS90MXBhcnNlLmM6IFJlcGxhY2VkIGBGVF9FcnJfKicgd2l0aCBgVDFfRXJyXyonLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9jZmZlcnJzLmg6IEFkZAoJYENGRl9FcnJfVW5rbm93bl9GaWxlX0Zvcm1hdCcuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDFlcnJvcnMuaDogQWRkCglgVDFfRXJyX1Vua25vd25fRmlsZV9Gb3JtYXQnLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0ZXJyb3JzLmg6IEFkZAoJYFRUX0Vycl9Vbmtub3duX0ZpbGVfRm9ybWF0Jy4KCgkqIHNyYy9jZmYvY2ZmbG9hZC5oOiBBZGQgYGNmZl8qX2VuY29kaW5nJyBhbmQgYGNmZl8qX2NoYXJzZXQnCglyZWZlcmVuY2VzLgoJKiBzcmMvcHNhdXgvcHNvYmpzLmM6IEluY2x1ZGUgYEZUX0lOVEVSTkFMX1RZUEUxX0VSUk9SU19IJy4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChDRkZfSW5pdF9GYWNlLCBDRkZfRG9uZV9GYWNlKTogVXNlCglGVF9MT0NBTF9ERUYuCgkqIHNyYy9jaWQvY2lkb2Jqcy5jIChDSURfRG9uZV9Ecml2ZXIpOiBEaXR0by4KCSogc3JjL3RydXR5cGUvdHRvYmpzLmMgKFRUX0luaXRfRmFjZSwgVFRfRG9uZV9GYWNlLCBUVF9Jbml0X1NpemUpOgoJRGl0dG8uCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfRG9uZV9Ecml2ZXIpOiBEaXR0by4KCSogc3JjL3BjZi9wY2Zkcml2ZXIuYyAoUENGX0RvbmVfRmFjZSk6IERpdHRvLgoJKiBzcmMvcGNmL3BjZi5oOiBVc2UgRlRfTE9DQUwgZm9yIGBQQ0ZfRG9uZV9GYWNlJy4KCjIwMDEtMDQtMDIgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9hZF9NZXRyaWNzKTogRml4IGFuIGltcHJvcGVyIHBvaW50ZXIKCWRlcmVmZXJlbmNlLiAgU3VibWl0dGVkIGJ5IEhlcmJlcnQgRHVlcnIgPGR1ZXJyQHN1bi5jb20+CgoyMDAxLTAzLTI2ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRjb25maWcuaDogQ2hhbmdlZCBoZXhhZGVjaW1hbAoJY29uc3RhbnRzIHRvIHVzZSBzdWZmaXggVSB0byBhdm9pZCBwcm9ibGVtcyB3aXRoIEhQLVVYJ3MgYzg5Cgljb21waWxlci4gIFN1Ym1pdHRlZCBieSBHLlcuIEx1Y2FzIDxnbHVjYXNAc29uYWx5c3RzLmNvbT4KCjIwMDEtMDMtMjQgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBKYW1ydWxlcywgSmFtZmlsZSwgc3JjL0phbWZpbGUsIHNyYy8qL0phbWZpbGU6IEFkZGluZyBqYW1maWxlcyB0bwoJdGhlIHNvdXJjZSB0cmVlLiAgU2VlIHd3dy5mcmVldHlwZS5vcmcvamFtL2luZGV4Lmh0bWwgZm9yIGRldGFpbHMuCgoKCSogVmVyc2lvbiAyLjAuMiByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoyMDAxLTAzLTIwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvd2luMzIvZGV0ZWt0Lm1rOiBGaXggLlBIT05ZIHRhcmdldCBmb3IgSW50ZWwgY29tcGlsZXIuCgoyMDAxLTAzLTIwICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaCwgaW5jbHVkZS9mcmVldHlwZS9mdHNuYW1lcy5oOgoJUmVuYW1lZCAiZnRuYW1lcy5oIiB0byAiZnRzbmFtZXMuaCIsIGFuZCBGVF9OQU1FU19IIHRvCglGVF9TRk5UX05BTUVTX0guCgoJKiBkb2NzL2RvY21ha2VyLnB5OiBBZGRlZCBnZW5lcmF0aW9uIG9mIElOREVYIGxpbmsgaW4gdGFibGUgb2YKCWNvbnRlbnRzLgoKCSogSU5TVEFMTCwgZG9jcy9CVUlMRDogVXBkYXRlZCBkb2N1bWVudGF0aW9uIHRvIGluZGljYXRlIHRoYXQgdGhlCgljb21waWxhdGlvbiBwcm9jZXNzIGhhcyBjaGFuZ2VkIHNsaWdodGx5IChubyBtb3JlIGBzcmMnIHJlcXVpcmVkIGluCgl0aGUgaW5jbHVkZSBwYXRoKS4KCgkqIGJ1aWxkcy8qLyotZGVmLm1rOiBDaGFuZ2VkIHRoZSBvYmplY3RzIGRpcmVjdG9yeSBmcm9tICJvYmoiIHRvCgkib2JqcyIuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oOiBSZW1vdmVkIG9ic29sZXRlIG1hY3JvcyBsaWtlCglGVF9TT1VSQ0VfRklMRSwgZXRjLiBhbmQgYWRkZWQgY2FjaGUtc3BlY2lmaWMgbWFjcm8gZGVmaW5pdGlvbnMgdGhhdAoJd2VyZSBwcmV2aW91c2x5IGRlZmluZWQgaW4gPGZyZWV0eXBlL2Z0Y2FjaGUuaD4uICBBZGRlZCBjb21tZW50cyB0bwoJYmUgaW5jbHVkZWQgaW4gYSBuZXcgQVBJIFJlZmVyZW5jZSBzZWN0aW9uLgoKCSogc3JjLyovKjogUmVtb3ZlZCB0aGUgdXNlIG9mIEZUX1NPVVJDRV9GSUxFLCBldGMuICBOb3csIGVhY2gKCWNvbXBvbmVudCBuZWVkcyB0byBhZGQgaXRzIG93biBkaXJlY3RvcnkgdG8gdGhlIGluY2x1ZGUgcGF0aCBhdAoJY29tcGlsZSB0aW1lLiAgTW9kaWZpZWQgYWxsICJydWxlcy5tayIgYW5kICJkZXNjcmlwLm1tcyIKCWFjY29yZGluZ2x5LgoKMjAwMS0wMy0yMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmluOiBBZGQgJGZ0X3ZlcnNpb24uCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlLWNvbmZpZy5pbjogVXNlIGl0LgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFVwZGF0ZWQuCgoyMDAxLTAzLTE5ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9mb250X21hdHJpeCk6IEFzc2lnbiB0aGUgdW5pdHMgcGVyIGVtCgl2YWx1ZSBhbiB1bnNpZ25lZCBzaG9ydCB2YWx1ZSwgZmlyc3QgYnkgc2hpZnRpbmcgcmlnaHQgMTYgYml0cywKCXRoZW4gYnkgY2FzdGluZyB0aGUgcmVzdWx0cyB0byBGVF9VU2hvcnQuCgoJKiBzcmMvY2ZmL2NmZnBhcnNlLmMgKGNmZl9wYXJzZV9mb250X2Jib3gpOiBBc3NpZ24gdGhlIHVuaXRzIHBlciBlbQoJdmFsdWUgYW4gdW5zaWduZWQgc2hvcnQgdmFsdWUsIGZpcnN0IGJ5IHNoaWZ0aW5nIHJpZ2h0IDE2IGJpdHMsCgl0aGVuIGJ5IGNhc3RpbmcgdGhlIHJlc3VsdHMgdG8gRlRfVVNob3J0LgoKMjAwMS0wMy0xNyAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jaWQvY2lkb2Jqcy5jLCBzcmMvY2lkL2NpZGxvYWQuYywgc3JjL3BjZi9wY2ZyZWFkLmMsCglzcmMvdHlwZTEvdDFsb2FkLmMsIHNyYy90eXBlMS90MW9ianMuYzogQWRkZWQgYSBmZXcgY2FzdHMgdG8gcmVtb3ZlCgljb21waWxlciB3YXJuaW5ncyBpbiBwZWRhbnRpYyBtb2Rlcy4KCgkqIGluY2x1ZGUvY29uZmlnL2Z0MmJ1aWxkLmgsIGluY2x1ZGUvY29uZmlnL2Z0aGVhZGVyLmg6IFRoZSBmaWxlCgkiZnQyYnVpbGQuaCIgd2FzIHJlbmFtZWQgdG8gImZ0aGVhZGVyLmgiIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIHRoZQoJdG9wLWxldmVsIDxmdDJidWlsZC5oPi4KCgkqIGluY2x1ZGUvY29uZmlnL2Z0aGVhZGVyLmg6IEFkZGVkIG5ldyBzZWN0aW9uIGRlc2NyaWJpbmcgdGhlICNpbmNsdWRlCgltYWNyb3MuCgoyMDAxLTAzLTE3ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi9jZmZwYXJzZS5jIChjZmZfcGFyc2VfZm9udF9iYm94KTogT2J0YWluIHJvdW5kZWQgRlRfRml4ZWQKCXZhbHVlcyBmb3IgdGhlIGJvdW5kaW5nIGJveCBudW1iZXJzLgoKCSogc3JjL2NmZi9jZmZvYmpzLmMgKENGRl9Jbml0X0ZhY2UpOiBXaGVuIHByb2Nlc3NpbmcgYSBDRkYvQ0VGIGZvbnQsCglzZXQgYHJvb3QtPmFzY2VuZGVyJyAoYHJvb3QtPmRlc2NlbmRlcicpIHRvIHRoZSBpbnRlZ2VyIHBhcnQgb2YKCWByb290LT5iYm94LnlNYXgnIChgcm9vdC0+YmJveC55TWluJywgcmVzcGVjdGl2ZWx5KS4KCjIwMDEtMDMtMTYgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMgKGdldF9jZmZfZ2x5cGhfbmFtZSk6ICBOZXcgZnVuY3Rpb24uICBVc2VkIGluCgljZmZfZ2V0X2ludGVyZmFjZSB0byBmYWNpbGl0YXRlIGdldHRpbmcgYSBnbHlwaCBuYW1lIGZvciBnbHlwaCBpbmRleAoJdmlhIEZUX0dldF9HbHlwaF9OYW1lKCkuCgoJKGNmZl9nZXRfaW50ZXJmYWNlKTogQWRkZWQgc3VwcG9ydCBmb3IgZ2V0dGluZyBhIGdseXBoIG5hbWUgdmlhIHRoZQoJImdseXBoX25hbWUiIG1vZHVsZSBpbnRlcmZhY2UuICBVc2VzIHRoZSBuZXcgZnVuY3Rpb24KCWdldF9jZmZfZ2x5cGhfbmFtZSgpLgoJU3VibWl0dGVkIGJ5IFNhbmRlciB2YW4gZGVyIFdhbCA8c3Zkd2FsQHhzNGFsbC5ubD4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChDRkZfSW5pdF9GYWNlKTogTG9naWNhbCBvciB0aGUgZmFjZSBmbGFncyB3aXRoCglGVF9GQUNFX0ZMQUdfR0xZUEhfTkFNRVMgb25seSBpZiBGVF9DT05GSUdfT1BUSU9OX05PX0dMWVBIX05BTUVTIGlzCglub3QgZGVmaW5lZC4gIFRoaXMgaXMgdG8gYWRkIHN1cHBvcnQgZm9yIGdldHRpbmcgYSBnbHlwaCBuYW1lIGZyb20gYQoJZ2x5cGggaW5kZXggdmlhIEZUX0dldF9HbHlwaF9OYW1lKCkuCglTdWJtaXR0ZWQgYnkgU2FuZGVyIHZhbiBkZXIgV2FsIDxzdmR3YWxAeHM0YWxsLm5sPgoKCSogc3JjL2NmZi9jZmZnbG9hZC5jIChDRkZfUGFyc2VfQ2hhclN0cmluZ3MpOiBBZGRlZCBzdXBwb3J0IGZvcgoJZGVwcmVjYXRlZCBvcGVyYXRvciAiZG90c2VjdGlvbiIuCglTdWJtaXR0ZWQgYnkgU2FuZGVyIHZhbiBkZXIgV2FsIDxzdmR3YWxAeHM0YWxsLm5sPgoKMjAwMS0wMy0xMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3BzYXV4L3QxZGVjb2RlLmMgKFQxX0RlY29kZXJfUGFyc2VfQ2hhcnN0cmluZ3MpOiBGaXggZXJyb3IKCW1lc3NhZ2VzLgoKCSogSU5TVEFMTCwgZG9jcy9CVUlMRDogV2UgbmVlZCBHTlUgbWFrZSAzLjc4LjEgb3IgbmV3ZXIuCgoyMDAxLTAzLTEyICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oOiAgQ2hhbmdlZCB0aGUgbGVuSVYgbWVtYmVyIG9mCgl0aGUgVDFfRGVjb2Rlcl8gc3RydWN0IHRvIGJlIGFuIEZUX0ludCBpbnN0ZWFkIG9mIGFuIEZUX1VJbnQuCgoJKiBzcmMvcHNhdXgvdDFkZWNvZGUuYyAoVDFfRGVjb2Rlcl9QYXJzZV9DaGFyc3RyaW5ncyk6ICBBZGp1c3QKCWZvciBsZW5JViBzZWVkIGJ5dGVzIGF0IHRoZSBzdGFydCBvZiBhIGRlY3J5cHRlZCBzdWJyb3V0aW5lLgoKCSogc3JjL2NpZC9jaWRsb2FkLmMgKGNpZF9yZWFkX3N1YnJzKTogRGVjcnlwdCBzdWJyb3V0aW5lcyBvbmx5CglpZiBsZW5JViA+PSAwLgoKCSogc3JjL2NpZC9jaWRnbG9hZC5jIChjaWRfbG9hZF9nbHlwaCk6IERlY3J5cHQgY2hhcnN0cmluZ3Mgb25seQoJaWYgbGVuSVYgPj0gMC4KCjIwMDEtMDMtMTEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIFRPRE86IFVwZGF0ZWQuCgoJKiBzcmMvcGNmL3BjZnJlYWQuYzogUHV0IFJFQURfRmllbGRzKCkgYWx3YXlzIGluIGEgY29uZGl0aW9uYWwgdG8KCWF2b2lkIGNvbXBpbGVyIHdhcm5pbmdzLgoKMjAwMS0wMy0xMCAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIFRPRE86IE5ldyBmaWxlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBBZGRlZCBwcm90b3R5cGVzIGFuZCBub3RlcyBmb3IKCXRocmVlIG5ldyBmdW5jdGlvbnM6IEZUX1JvdW5kRml4LCBGVF9DZWlsRml4LCBhbmQgRlRfRmxvb3JGaXguCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9Sb3VuZEZpeCwgRlRfQ2VpbEZpeCwgRlRfRmxvb3JGaXgpOiBBZGRlZAoJaW1wbGVtZW50YXRpb24gY29kZS4KCgkqIHNyYy9jaWQvY2lkb2Jqcy5jIChDSURfSW5pdF9GYWNlKTogVXNlIGNhbGN1bGF0ZWQgdW5pdHNfcGVyX0VNLAoJYW5kIGlmIHRoYXQgaXMgbm90IGF2YWlsYWJsZSwgZGVmYXVsdCB0byAxMDAwIHVuaXRzIHBlciBFTS4gIENoYW5nZWQKCWFzc2lnbm1lbnQgY29kZSBmb3IgYXNjZW5kZXIgYW5kIGRlc2NlbmRlciB2YWx1ZXMuCgkqIHNyYy9jaWQvY2lkbG9hZC5jIChwYXJzZV9mb250X21hdHJpeCk6IEFkZGVkIHVuaXRzX3Blcl9FTQoJcHJvY2Vzc2luZy4KCShwYXJzZV9mb250X2Jib3gpOiBDaGFuZ2VkIHRvIHVzZSBGVF9GaXhlZCBudW1iZXIgaGFuZGxpbmcuCgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0luaXRfRmFjZSk6IENoYW5nZWQgdGhlIGFzc2lnbm1lbnQgY29kZQoJZm9yIGFzY2VuZGVyLCBkZXNjZW5kZXIsIGFuZCBtYXhfYWR2YW5jZV93aWR0aC4KCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9mb250X2Jib3gpOiBDaGFuZ2VkIHRvIHVzZSBGVF9GaXhlZAoJbnVtYmVyIGhhbmRsaW5nLgoKMjAwMS0wMy0xMCAgSGVucmlrIEdydWJic3Ry9m0gIDxncnViYmFAcm94ZW4uY29tPgoKCSogc3JjLyovKi5jOiBBZGRlZCBtYW55IGNhc3RzIHRvIG1ha2UgY29kZSBtb3JlIDY0Yml0LXNhZmUuCgoyMDAxLTAzLTA3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBJTlNUQUxMLCBkb2NzL0JVSUxEOiBXZSBuZWVkIEdOVSBtYWtlIDMuNzggb3IgbmV3ZXIuCgoyMDAxLTAzLTA3ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9Jbml0X0ZhY2UpOiBNaW5vciBjb3JyZWN0aW9uOiBXZSBtdXN0IHdhaXQKCXVudGlsIHBhcnNlX2ZvbnRfYmJveCBpcyBjaGFuZ2VkIGJlZm9yZSB3ZSB1c2UgbG9naWNhbCBzaGlmdCByaWdodHMKCWluIHRoZSBhc3NpZ25tZW50cyBvZiBgcm9vdC0+YXNjZW5kZXInLCBgcm9vdC0+ZGVzY2VuZGVyJywgYW5kCglgcm9vdC0+bWF4X2FkdmFuY2Vfd2lkdGgnLgoKCShUMV9Eb25lX0ZhY2UpOiBGcmVlIGBjaGFyX25hbWUnIHRhYmxlIHRvIGF2b2lkIGEgbWVtb3J5IGxlYWsuCglTdWJtaXR0ZWQgYnkgU2FuZGVyIHZhbiBkZXIgV2FsIDxzdmR3YWxAeHM0YWxsLm5sPi4KCjIwMDEtMDMtMDUgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKENGRl9Mb2FkX0dseXBoKTogU2V0IGdseXBoIGNvbnRyb2wgZGF0YSB0byB0aGUKCXRoZSBUeXBlIDIgZ2x5cGggY2hhcnN0cmluZyAodXNlZCBieSBjb252ZXJzaW9uIHByb2dyYW1zKS4KCVN1Ym1pdHRlZCBieSBIYSBTaGFvIDxoYXNoYW9AY2hpbmVzZS5jb20+LgoKMjAwMS0wMy0wNCAgQW50b2luZSBMZWNhICA8QW50b2luZS5MZWNhQHJlbmF1bHQuZnI+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3R0bmFtZWlkLmg6IENvcnJlY3QgYSBzdHVwaWQgdHlwbyB3aGljaCBwcmV2ZW50ZWQKCWNvcnJlY3QgY29tcGlsYXRpb24gKFRUX01TX0xBTkdJRF9USUdSSUdOQV9FVEhJT1BJQSBhcHBlYXJlZCB0d2ljZSkuCgoyMDAxLTAzLTA0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWh0eXBlcy5oIChBSF9IaW50ZXIpOiBBZGQgZWxlbWVudHMKCWBkaXNhYmxlX2hvcnpfZWRnZXMnLCBgZGlzYWJsZV92ZXJ0X2VkZ2VzJy4KCSogc3JjL2F1dG9oaW50L2FoaGludC5jCShhaF9oaW50X2VkZ2VzXzMsIGFoX2hpbnRlcl9oaW50X2VkZ2VzKTogVXNlCgl0aGVtIChhbmQgcmVtb3ZlIHN0YXRpYyB2YXJpYWJsZXMgd2l0aCB0aGUgc2FtZSBuYW1lcykuCgkqIHNyYy9wY2YvcGNmdXRpbC5jIChCaXRPcmRlckludmVydCk6IEFkZCBgY29uc3QnLgoJKiBkb2NzL2dsbmFtZXMucHk6IFVwZGF0ZWQgdG8gbGF0ZXN0IHBzdGFibGVzLmggY2hhbmdlcy4KCgkqIGJ1aWxkcy91bml4L2RldGVjdC5tazogQWRkIHRlc3QgZm9yIEh1cmQuCgkqIGJ1aWxkcy9odXJkL2RldGVjdC5tazogUmVtb3ZlZC4KCjIwMDEtMDMtMDQgIFNhbmRlciB2YW4gZGVyIFdhbCAgPHN2ZHdhbEB4czRhbGwubmw+CgoJKiBzcmMvcHNuYW1lcy9wc3RhYmxlcy5oOiBBZGQgbW9yZSBgY29uc3QnLgoJKiBzcmMvcGNmL3BjZnV0aWwuYzogRGl0dG8uCgoyMDAxLTAzLTA0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdGdseXBoLmMgKEZUX0dseXBoX1RvX0JpdG1hcCk6IEZpeGluZyB0eXBvCgkoRlRfR2x5cGhfRG9uZSAtPiBGVF9Eb25lX0dseXBoKS4KCjIwMDEtMDMtMDEgIEFudG9pbmUgTGVjYSAgPEFudG9pbmUuTGVjYUByZW5hdWx0LmZyPgoKCSogaW5jbHVkZS9mcmVldHlwZS90dG5hbWVpZC5oOiBBZGRlZCBzb21lIG5ldyBNaWNyb3NvZnQgbGFuZ3VhZ2UKCWNvZGVzIGFuZCBMQ0lEcyBhcyBmb3VuZCBpbiBPZmZpY2UgWHAuCgoyMDAxLTAyLTI4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogYnVpbGRzL2h1cmQvZGV0ZWN0Lm1rOiBOZXcgZmlsZS4gIEFkZGVkIHN1cHBvcnQgdG8gZGV0ZWN0IHRoZSBHTlUKCUh1cmQgb3BlcmF0aW5nIHN5c3RlbSBhcyBVbml4LWxpa2UuICBGaXggc3VibWl0dGVkIGJ5IEFudGhvbnkgRm9rCgk8Zm9rYUBkZWJpYW4ub3JnPi4KCgkqIHNyYy90eXBlMS90MWdsb2FkLmMgKFQxX0xvYWRfR2x5cGgpOiBTZXQgZ2x5cGggY29udHJvbCBkYXRhIHRvIHRoZQoJdGhlIFR5cGUgMSBnbHlwaCBjaGFyc3RyaW5nICh1c2VkIGJ5IGNvbnZlcnNpb24gcHJvZ3JhbXMpLgoJU3VibWl0dGVkIGJ5IEhhIFNoYW8gPGhhc2hhb0BjaGluZXNlLmNvbT4uCgoyMDAxLTAyLTIyICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRncmF5cy5jIChncmF5c19zd2VlcCk6IFRoZSBmdW5jdGlvbiBkaWRuJ3QgZXhpdAoJaW1tZWRpYXRlbHkgaWYgYG51bV9jZWxscycgd2FzIDAgYXMgaXQgc2hvdWxkLiAgVGhhbmtzIHRvIEJvcmlzIGZvcgoJZmluZGluZyB0aGlzIG91dC4KCgkqIHNyYy9iYXNlL2Z0Z2x5cGguYyAoRlRfR2x5cGhfVG9fQml0bWFwKTogRml4ZWQgbWVtb3J5IGxlYWsgd2hlbgoJYml0bWFwIHJlbmRlcmluZyBmYWlscyAodGhhbmtzIHRvIEdyYWhhbSBBc2hlcikuCgoyMDAxLTAyLTEzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBkb2NzL2RvY21ha2VyLnB5IChEb2NTZWN0aW9uOjphZGRfZWxlbWVudCk6IFVzZQoJYHNlbGYucHJpbnRfZXJyb3IoKScuCgoJKiBidWlsZHMvdW5peC9jb25maWcue2d1ZXNzLHN1Yn06IFVwZGF0ZWQgKGZyb20gZnRwLmdudS5vcmcpLgoKMjAwMS0wMi0xMyAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIGRvY3MvZG9jbWFrZXIucHksIGluY2x1ZGUvZnJlZXR5cGUvKi5oOiBVcGRhdGVkIHRoZSBEb2NNYWtlcgoJc2NyaXB0IHRvIHN1cHBvcnQgY2hhcHRlcnMgYW5kIHNlY3Rpb24gYmxvY2sgb3JkZXJpbmcuICBVcGRhdGVkIHRoZQoJcHVibGljIGhlYWRlciBmaWxlcyBhY2NvcmRpbmdseS4KCgkqIHNyYy9iYXNlL2Z0Z2x5cGguYyAoRlRfR2x5cGhfQ29weSk6IEFkdmFuY2Ugd2lkdGggYW5kIGdseXBoIGZvcm1hdAoJd2VyZSBub3QgY29ycmVjdGx5IGNvcGllZC4KCjIwMDEtMDItMDggIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL2NmZnBhcnNlLmMgKGNmZl9wYXJzZV9mb250X21hdHJpeCk6IFJlbW92ZWQgYW4KCXVubmVjZXNzYXJ5IGZwcmludGYoIHN0ZGVyciwgLi4uICkuCgoyMDAxLTAyLTA3ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9Jbml0X0ZhY2UpOiBBZGRlZCBjb2RlIHRvIGdldCB0aGUKCXVuaXRzX3Blcl9FTSBmcm9tIHRoZSB2YWx1ZSBhc3NpZ25lZCBpbiBwYXJzZV9mb250X21hdHJpeCwgaWYKCWF2YWlsYWJsZS4gIERlZmF1bHQgdG8gMTAwMCBpZiBub3QgYXZhaWxhYmxlLgoKCSogc3JjL2NmZi9jZmZwYXJzZS5jIChjZmZfcGFyc2VfZm9udF9tYXRyaXgpOiBBZGRlZCBsb2dpYyB0byBnZXQKCXRoZSB1bml0c19wZXJfRU0gZnJvbSB0aGUgRm9udE1hdHJpeC4KCgkoY2ZmX3BhcnNlX2ZpeGVkX3Rob3VzYW5kKTogTmV3IGZ1bmN0aW9uLiBHZXRzIGEgcmVhbCBudW1iZXIgZnJvbQoJdGhlIENGRiBmb250LCBidXQgbXVsdGlwbGllcyBieSAxMDAwICh0aGlzIGlzIHRvIGF2b2lkIHJvdW5kaW5nCgllcnJvcnMgd2hlbiBwbGFjaW5nIHRoaXMgcmVhbCBudW1iZXIgaW50byBhIDE2LjE2IGZpeGVkIG51bWJlcikuCgoJKGNmZl9wYXJzZV9yZWFsKTogQWRkZWQgY29kZSBzbyB0aGF0IHRoZSBpbnRlZ2VyIHBhcnQgaXMgbW92ZWQKCWludG8gdGhlIGhpZ2ggc2l4dGVlbiBiaXRzIG9mIHRoZSAxNi4xNiBmaXhlZCBudW1iZXIuCgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoQ0ZGX0luaXRfRmFjZSk6IEFkZGVkIGxvZ2ljIHRvIGdldCB0aGUgdW5pdHMKCXBlciBFTSBmcm9tIHRoZSBDRkYgZGljdGlvbmFyeSwgaWYgYXZhaWxhYmxlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9jZmZ0eXBlcy5oOiBJbiBzdHJ1Y3QgQ0ZGX0ZvbnRfRGljdF8sCglhZGRlZCBhIHVuaXRzX3Blcl9lbSBtZW1iZXIgdG8gZmFjaWxpdGF0ZSBwYXNzaW5nIG9mIHVuaXRzX3Blcl9lbQoJZnJvbSBmdW5jdGlvbiBjZmZfcGFyc2VfZm9udF9tYXRyaXguCgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKGlzX2FscGhhKTogTWFrZSBgLScgYSBsZWdhbCBhbHBoYW51bWVyaWMKCWNoYXJhY3Rlci4gIFRoaXMgaXMgc28gdGhhdCBmb250IG5hbWVzIHdpdGggYC0nIGFyZSBmdWxseSBwYXJzZWQsCglldGMuLi4KCjIwMDEtMDItMDIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wc2F1eC9wc29ianMuYyAoc2hpZnRfZWxlbWVudHMpOiBSZW1vdmUgaWYgY2xhdXNlICh3aGljaCBpcwoJb2Jzb2xldGUgbm93KS4KCgkocmVhbGxvY2F0ZV90MV90YWJsZSwgUFNfVGFibGVfRG9uZSk6IFJlcGxhY2UgUkVBTExPQygpIHdpdGggQUxMT0MoKQoJKyBNRU1fQ29weSgpIHRvIGF2b2lkIGEgbWVtb3J5IGJ1Zy4KCjIwMDEtMDItMDEgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBkb2NzL2RvY21ha2VyLnB5OiBJbXByb3ZlZCB0aGUgaW5kZXggc29ydGluZyByb3V0aW5lIHRvIHBsYWNlCgljYXBpdGFsIGxldHRlcnMgYmVmb3JlIHNtYWxsIG9uZXMuICBBZGRlZCB0aGUgIjxvcmRlcj4iIG1hcmtlciB0bwoJc2VjdGlvbiBibG9ja3MgaW4gb3JkZXIgdG8gZ2l2ZSB0aGUgb3JkZXIgb2YgYmxvY2tzLgoKMjAwMS0wMS0zMCAgQW50b2luZSBMZWNhICA8QW50b2luZS5MZWNhQHJlbmF1bHQuZnI+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3R0bmFtZWlkLmg6IExhdGVzdCB1cGRhdGVzIHRvIE1pY3Jvc29mdCBsYW5ndWFnZQoJSUQgY29kZXMuCgoyMDAxLTAxLTI0ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi90MWxvYWQuYyAocGFyc2VfZm9udF9tYXRyaXgpOiBBZGRlZCBoZXVyaXN0aWMgdG8gZ2V0Cgl1bml0c19wZXJfRU0gZnJvbSB0aGUgZm9udCBtYXRyaXguCgoJKHBhcnNlX2RpY3QpOiBEZWxldGVkIHRlc3QgdG8gc2VlIHdoZXRoZXIgdGhlIEZvbnRJbmZvIGtleXdvcmQgaGFzCgliZWVuIHNlZW4uICBEZWxldGlvbiBvZiB0aGlzIHRlc3QgYWxsb3dzIGZvbnRzIHdpdGhvdXQgRm9udEluZm8KCWRpY3Rpb25hcmllcyB0byBiZSBwYXJzZWQgYnkgdGhlIFR5cGUgMSBkcml2ZXIuCgoJKFQxX09wZW5fRmFjZSk6IERlbGV0ZWQgZW1wdHkgc3Vicm91dGluZXMgYXJyYXkgdGVzdCB0byBtYWtlIHN1cmUKCWZvbnRzIHdpdGggbm8gc3Vicm91dGluZXMgc3RpbGwgYXJlIHBhcnNlZC4KCjIwMDEtMDEtMTcgIEZyYW5jZXNjbyBaYXBwYSBOYXJkZWxsaSAgPGZyYW5jZXNjby56YXBwYS5uYXJkZWxsaUBlbnMuZnI+CgoJKiBzcmMvcGNmcmVhZC5jIChwY2ZfZ2V0X3Byb3BlcnRpZXMsIHBjZl9nZXRfbWV0cmljcywKCXBjZl9nZXRfYml0bWFwcyk6IEZpeCBjb21waWxlciBlcnJvcnMuCgoyMDAxLTAxLTExICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogc3JjL3BjZi9wY2ZyZWFkLmM6IFJlbW92ZWQgc29tZSBjb21waWxhdGlvbiB3YXJuaW5ncyByZWxhdGVkCgl0byBjb21wYXJpc29uIG9mIHNpZ25lZCB2cy4gdW5zaWduZWQgaW50ZWdlcnMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaDogQ2hhbmdlZCB0aGUgZGVidWcgdHJhY2UKCWNvbnN0YW50cyBmcm9tIHRyYWNlX3QyeHh4eCB0byB0cmFjZV9jZmZ4eHh4IHRvIGJlIGFibGUgdG8gY29tcGlsZQoJdGhlIENGRiBkcml2ZXIgaW4gZGVidWcgbW9kZS4KCjIwMDEtMDEtMTEgIE1hdHRoZXcgQ3Jvc2J5ICA8bWNyb3NieUBtYXJ0aG9uLm9yZz4KCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlLWNvbmZpZy5pbjogRml4IHByb2JsZW1zIHdpdGggc2VwYXJhdGUKCS0tcHJlZml4IGFuZCAtLWV4ZWMtcHJlZml4LgoKMjAwMS0wMS0xMSAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIGRvY3MvZG9jbWFrZXIucHk6IEFkZGVkIGNyb3NzLXJlZmVyZW5jZXMgZ2VuZXJhdGlvbiBhcyB3ZWxsIGFzCgltb3JlIHJvYnVzdCBoYW5kbGluZyBvZiBwYXRobmFtZSB3aWxkY2FyZCBtYXRjaGluZy4KCjIwMDEtMDEtMTAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGRvY3MvZG9jbWFrZXIucHk6IE1pbm9yIGltcHJvdmVtZW50cyB0byByZWR1Y2UgdW53YW50ZWQgc3BhY2VzCglhbmQgZW1wdHkgbGluZXMgaW4gb3V0cHV0LgoKMjAwMS0wMS0wOSAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIGRvY3MvZG9jbWFrZXIucHk6IEltcHJvdmVkIHNjcmlwdCB0byBnZW5lcmF0ZSB0YWJsZSBvZiBjb250ZW50cwoJYW5kIGluZGV4IHBhZ2VzLiAgSXQgYWxzbyBzdXBwb3J0cyB3aWxkY2FyZHMgb24gbm9uIFVuaXggc3lzdGVtcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvKi5oLCBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlLyouaDogVXBkYXRlZCBjb21tZW50cwoJdG8gaW5jbHVkZSBzZWN0aW9uIGRlZmluaXRpb25zL2RlbGltaXRhdGlvbnMgZm9yIHRoZSBBUEkgUmVmZXJlbmNlCglnZW5lcmF0b3IuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmg6IE1vdmVkIGRlY2xhcmF0aW9uIG9mCglgRlRfR2VuZXJpY19GaW5hbGl6ZXInIGFuZCB0aGUgYEZUX0dlbmVyaWMnIHN0cnVjdHVyZSB0by4uLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0dHlwZXMuaDogaGVyZS4KCjIwMDEtMDEtMDQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdHRuYW1laWQuaDogVXBkYXRlZCBVbmljb2RlIGNvZGUgcmFuZ2UgY29tbWVudHMuCgoyMDAxLTAxLTAzICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi9ydWxlcy5tazogVXNlIGNmZmdsb2FkLntjLGh9IGluc3RlYWQgb2YgdDJnbG9hZC57YyxofS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvaW50ZXJuYWwuaDogQ2hhbmdlZCB0byB1c2UgY2ZmdHlwZXMuaAoJKGNmZmVycnMuaCkgaW5zdGVhZCBvZiB0MnR5cGVzLmggKHQyZXJyb3JzLmgsIHJlc3BlY3RpdmVseSkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2NmZnR5cGVzLmg6IE1lcmdlZCBpbiBjaGFuZ2VzIGZyb20KCXQydHlwZXMuaCBhbmQgbWFkZSB0aGlzIHRoZSBjYW5vbmljYWwgYHR5cGVzJyBoZWFkZXIgZm9yIHRoZSBDRkYKCWRyaXZlci4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDJ0eXBlcy5oOiBUaGlzIGZpbGUgd2FzIG1lcmdlZCB3aXRoCgljZmZ0eXBlcy5oIGFuZCBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MmVycm9ycy5oOglSZW5hbWVkIHRvIGNmZmVycnMuaC4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jLCBzcmMvY2ZmL2NmZm9ianMuaCwgc3JjL2NmZi9jZmZwYXJzZS5jLAoJc3JjL2NmZi9jZmZkcml2ci5jLCBzcmMvY2ZmL2NmZi5jLCBzcmMvY2ZmL2NmZmxvYWQuYywKCXNyYy9jZmYvY2ZmZ2xvYWQuYywgc3JjL2NmZi9jZmZnbG9hZC5oOiBDaGFuZ2VkIHRvIHVzZQoJY2ZmZ2xvYWQue2MsaH0gaW5zdGVhZCBvZiB0Mmdsb2FkLntjLGh9LiAgQWxsIG9jY3VyZW5jZXMgb2YgdDJfCgkoVDJfKSB3ZXJlIHJlcGxhY2VkIHdpdGggY2ZmXyAoQ0ZGXywgcmVzcGVjdGl2ZWx5KS4KCgkqIHNyYy9jZmYvdDJnbG9hZC5oOiBSZW5hbWVkIGNmZmdsb2FkLmguCgoJKiBzcmMvY2ZmL3QyZ2xvYWQuYzogUmVuYW1lZCBjZmZnbG9hZC5jCgoyMDAwLTAxLTAyICBKb3VrIEphbnNlbiAgPGpvdWtqQGhyZW0uc3RtLnR1ZGVsZnQubmw+CgoJKiBidWlsZHMvdm1zOiBTdXBwb3J0IGZpbGVzIGZvciBWTVMgYXJjaGl0ZWN0dXJlIGFkZGVkLgoJKiBkZXNjcmlwLm1tcywgc3JjLyovZGVzY3JpcC5tbXM6IFZNUyBtYWtlZmlsZXMgYWRkZWQuCgkqIFJFQURNRS5WTVM6IE5ldyBmaWxlLgoKMjAwMC0wMS0wMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogTElDRU5TRS5UWFQ6IEFkZGVkIGluZm8gYWJvdXQgUENGIGRyaXZlciBsaWNlbnNlLgoKMjAwMS0wMS0wMSAgRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpICA8ZnJhbmNlc2NvLnphcHBhLm5hcmRlbGxpQGVucy5mcj4KCgkqIHNyYy9wY2YvKjogTmV3IGRyaXZlciBtb2R1bGUgZm9yIFBDRiBmb250IGZvcm1hdCAodXNlZCBpbgoJWCBXaW5kb3cgU3lzdGVtKS4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmggKEZUX1RyYWNlKTogQWRkZWQgdmFsdWVzIGZvcgoJUENGIGRyaXZlci4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wY2Z0eXBlcy5oOiBOZXcgZmlsZS4KCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRtb2R1bGUuaDogQWRkZWQgUENGIGRyaXZlciBtb2R1bGUuCgoyMDAxLTAxLTAxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvd2luZm9udHMvd2luZm50LmMgKEZOVF9HZXRfQ2hhcl9JbmRleCk6IEZpeCBwYXJhbWV0ZXIgdHlwZS4KCjIwMDAtMTItMzEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9tb2R1bGVzLm1rIChjbGVhbl9tb2R1bGVfbGlzdCk6IEZpeGVkIGRlbGV0aW9uIG9mIG1vZHVsZQoJZmlsZSBpbiBjYXNlIGBtYWtlIG1ha2VfbW9kdWxlX2xpc3QnIGlzIGNhbGxlZCBiZWZvcmUgYG1ha2Ugc2V0dXAnLgoKMjAwMC0xMi0zMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NmZi9jZmZsb2FkLmMgKENGRl9Mb2FkX0NoYXJzZXQpOiBJbXByb3ZlZCBlcnJvciBtZXNzYWdlcy4KCShDRkZfTG9hZF9DaGFyc2V0LCBDRkZfTG9hZF9FbmNvZGluZyk6IFJlbW92ZSB1bm5lY2Vzc2FyeSB2YXJpYWJsZQoJZGVmaW5pdGlvbi4KCjIwMDAtMTItMzAgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QydHlwZXMuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvY2ZmdHlwZXMuaDogQ2hhbmdlZCB0aGUgc3RydWN0dXJlcyBmb3IKCUNGRl9FbmNvZGluZyBhbmQgQ0ZGX0VuY29kaW5nIGZvciB0aGUgbmV3IGltcGxlbWVudGF0aW9ucyBvZiB0aGUKCWNoYXJzZXQgYW5kIGVuY29kaW5nIHBhcnNlcnMgaW4gdGhlIENGRiBkcml2ZXIuCgoJKiBzcmMvY2ZmL3QyZ2xvYWQuYyAodDJfbG9va3VwX2dseXBoX2J5X3N0ZGNoYXJjb2RlLAoJdDJfb3BlcmF0b3Jfc2VhYyk6IEFkZGVkIHRoZXNlIGZ1bmN0aW9ucyBmb3IgdXNlIGluIGltcGxlbWVudGluZyB0aGUKCXNlYWMgZW11bGF0aW9uIHByb3ZpZGVkIGJ5IHRoZSBUeXBlIDIgZW5kY2hhciBvcGVyYXRvci4KCShUMl9QYXJzZV9DaGFyU3RyaW5ncyk6IEFkZGVkIHNlYWMgZW11bGF0aW9uIGZvciB0aGUgZW5kY2hhcgoJb3BlcmF0b3IuCgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoQ0ZGX0xvYWRfRW5jb2RpbmcsIENGRl9Mb2FkX0NoYXJzZXQsCglDRkZfRG9uZV9FbmNvZGluZywgQ0ZGX0RvbmVfQ2hhcnNldCk6IEV4dGVuZGVkIHRvIGxvYWQgYW5kIHBhcnNlIHRoZQoJY2hhcnNldC9lbmNvZGluZyB0YWJsZXMsIGFuZCBmcmVlIHRoZSBtZW1vcnkgdXNlZCBieSB0aGVtIHdoZW4gdGhlCglDRkYgZHJpdmVyIGlzIGZpbmlzaGVkIHdpdGggdGhlbS4gIEFkZGVkIHRhYmxlcwoKCSAgICBjZmZfaXNvYWRvYmVfY2hhcnNldAoJICAgIGNmZl9leHBlcnRfY2hhcnNldAoJICAgIGNmZl9leHBlcnRzdWJzZXRfY2hhcnNldAoJICAgIGNmZl9zdGFuZGFyZF9lbmNvZGluZwoJICAgIGNmZl9leHBlcnRfZW5jb2RpbmcKCglzbyB0aGF0IHRoZSBlbmNvZGluZy9jaGFyc2V0IHBhcnNlciBjYW4gaGFuZGxlIHByZWRlZmluZWQgZW5jb2RpbmdzIGFuZAoJY2hhcnNldHMuCgoyMDAwLTEyLTI0ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi90Mmdsb2FkLmMgKFQyX0xvYWRfR2x5cGgpOiBBZGRlZCBjb2RlCXNvIHRoYXQgdGhlIGZvbnQKCXRyYW5zZm9ybSBpcyBhcHBsaWVkLgoKCSogc3JjL2NmZi9jZmZwYXJzZS5jIChjZmZfcGFyc2VfZm9udF9tYXRyaXgpOiBBZGRlZCBjb2RlIHNvIHRoYXQKCXRoZSBmb250IG1hdHJpeCBudW1iZXJzCWFyZSBzY2FsZWQgYnkgMS8obWF0cml4LT55eSkuICBBbHNvLCB0aGUKCW9mZnNldCB2ZWN0b3Igbm93IGNvbnRhaW5zIGludGVnZXIgdmFsdWVzIGluc3RlYWQgb2YgMTYuMTYgZml4ZWQKCW51bWJlcnMuCgoyMDAwLTEyLTIyICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfbG9hZF9nbHlwaCk6CglSZW1vdmVkIHVubmVjZXNzYXJ5IGNvbW1lbnRzIGFuZCBjb21tZW50ZWQtb3V0IGNvZGUuCgoyMDAwLTEyLTIxICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NpZC9jaWRhZm0uYywgc3JjL2NpZC9jaWRhZm0uaDogcmVtb3ZlZCB1bi1uZWVkZWQgZmlsZXMsCgl3ZSdsbCB3b3JrIG9uIHN1cHBvcnRpbmcgQ0lEIEFGTSBmaWxlcyBsYXRlciBJIGd1ZXNzIDotKQoKMjAwMC0xMi0yMSAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2xvYWQsIGFoX2hpbnRlcl9sb2FkX2dseXBoKToKCUNoYW5nZWQgc28gdGhhdCBmb250cyB3aXRoIGEgbm9uLXN0YW5kYXJkIEZvbnRNYXRyaXggcmVuZGVyCgljb3JyZWN0bHkuICBQcmV2aW91c2x5LCB0aGUgZmlyc3QgZ2x5cGggcmVuZGVyZWQgZnJvbSBzdWNoIGEKCWZvbnQgZGlkIG5vdCBoYXZlIHRoZSB0cmFuZm9ybWF0aW9uIG1hdHJpeCBhcHBsaWVkLgoKMjAwMC0xMi0xNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogKi5tazogQWRkZWQgbG90cyBvZiBgLlBIT05ZJyB0YXJnZXRzLgoKMjAwMC0xMi0xNyAgS2Fyc3RlbiBGbGVpc2NoZXIgIDxrZmxlaXNjMUBmb3JkLmNvbT4KCgkqICoubWs6IEltcGxlbWVudGVkIGBwbGF0Zm9ybScgdGFyZ2V0IHRvIGRpc2FibGUgYXV0by1kZXRlY3Rpb24uCgoyMDAwLTEyLTE0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBkb2NzL2Rlc2lnbi9tb2R1bGVzLmh0bWw6IFJlbW92ZWQuICBDb3ZlcmVkIGJ5IGRlc2lnbi0qLmh0bWwuCgoJKiBJTlNUQUxMOiBBZGRlZCBpbmZvIGFib3V0IG1ha2VwcC4KCjIwMDAtMTItMTQgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJQWRkZWQgc3VwcG9ydCBmb3IgY2xpcHBlZCBkaXJlY3QgcmVuZGVyaW5nIGluIHRoZSBzbW9vdGggcmVuZGVyZXIuCglUaGlzIHNob3VsZCBub3QgYnJlYWsgYmluYXJ5IGNvbXBhdGliaWxpdHkgb2YgZXhpc3RpbmcgYXBwbGljYXRpb25zLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdHR5cGVzLmgsIGluY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZS5oOiBNb3ZlCglkZWZpbml0aW9uIG9mIHRoZSBGVF9CQm94IHN0cnVjdHVyZSBmcm9tIHRoZSBmb3JtZXIgdG8gdGhlIGxhdHRlci4KCSogaW5jbHVkZS9mcmVldHlwZS9mdGltYWdlLmg6IEFkZCBgZnRfcmFzdGVyX2ZsYWdfY2xpcCcgdmFsdWUgdG8KCUZUX1Jhc3Rlcl9GbGFnIGVudW1lcmF0aW9uLgoJQWRkIGBjbGlwX2JveCcgZWxlbWVudCB0byBGVF9SYXN0ZXJfUGFyYW1zIHN0cnVjdHVyZS4KCSogc3JjL3Ntb290aC9mdGdyYXlzLmMgKGdyYXlzX2NvbnZlcnRfZ2x5cGgpOiBJbXBsZW1lbnQgaXQuCgoJKiBJTlNUQUxMOiBVcGRhdGVkIGluc3RhbGxhdGlvbiBpbnN0cnVjdGlvbnMgb24gV2luMzIsIGxpc3RpbmcgdGhlCgluZXcgIm1ha2Ugc2V0dXAgbGlzdCIgdGFyZ2V0IHVzZWQgdG8gbGlzdCBzdXBwb3J0ZWQKCWNvbXBpbGVycy90YXJnZXRzLgoKCSogc3JjL3Jhc3Rlci9mdHJhc3Rlci5jIChmdF9ibGFja19yZW5kZXIpOiBUZXN0IGZvciB1bnN1cHBvcnRlZAoJZGlyZWN0IHJlbmRlcmluZyBiZWZvcmUgdGVzdGluZyBhcmd1bWVudHMuCgoyMDAwLTEyLTEzICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnQyYnVpbGQuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvaW50ZXJuYWwuaDogRml4ZWQgaGVhZGVyIGluY2x1c2lvbiBtYWNyb3MKCXRvIHVzZSBkaXJlY3QgZGVmaW5pdGlvbnMuICBUaGlzIGlzIHRoZSBvbmx5IHdheSB0byBkbyB0aGVzZSB0aGluZ3MKCWluIGEgcG9ydGFibGUgd2F5IDotKCAgVGhlIHJlc3Qgb2YgdGhlIGNvZGUgc2hvdWxkIGZvbGxvdyBzaG9ydGx5Cgl0aG91Z2ggZXZlcnl0aGluZyBjb21waWxlcyBub3cuCgoJKiBidWlsZHMvY29tcGlsZXIvaW50ZWxjLm1rLCBidWlsZHMvY29tcGlsZXIvd2F0Y29tLm1rOiBOZXcgZmlsZXMuCgoJKiBidWlsZHMvd2luMzIvZGV0ZWN0Lm1rOiBBZGRlZCBzdXBwb3J0IGZvciB0aGUgSW50ZWwgQy9DKysKCWNvbXBpbGVyLCBhcyB3ZWxsIGFzIF9wcmVsaW1pbmFyeV8gKHJlYWQ6IGRvZXNuJ3Qgd29yayEpIHN1cHBvcnQgZm9yCglXYXRjb20uICBBbHNvIGFkZGVkIGEgbmV3IHNldHVwIHRhcmdldC4gIFR5cGUgIm1ha2Ugc2V0dXAgbGlzdCIgZm9yCglhIGxpc3Qgb2Ygc3VwcG9ydGVkIGNvbW1hbmQtbGluZSBjb21waWxlcnMgb24gV2luMzIuCgoJKiBzcmMvYmFzZS9mdGRlYnVnLmM6IEFkZGVkIGR1bW15IHN5bWJvbCB0byBhdm9pZCBlbXB0eSBmaWxlIGlmCgljb25kaXRpb25hbHMgYXJlIG9mZi4KCjIwMDAtMTItMTMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2Z0c3lzdGVtLmM6IEZpeGVkIHR5cG9zLiAgRml4ZWQgaW5jbHVzaW9uIG9mIHdyb25nCglmdGNvbmZpZy5oIGZpbGUuCgoyMDAwLTEyLTEyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdDJidWlsZC5oIChGVDJfUk9PVCwgRlQyX0NPTkZJR19ST09UKToKCVJlbW92ZWQuICBBTlNJIEMgZG9lc24ndCAoZXhwbGljaXRseSkgYWxsb3cgbWFjcm8gZXhwYW5zaW9uIGluCglhcmd1bWVudHMgdXNpbmcgYCMjJy4KCShGVDJfUFVCTElDX0ZJTEUsIEZUMl9DT05GSUdfRklMRSwgRlQyX0lOVEVSTkFMX0ZJTEUpOiBVc2UgZGlyZWN0b3J5CgluYW1lcyBkaXJlY3RseS4gIE1ha2UgdGhlbSBjb25maWd1cmFibGUuICBVc2UgYCMjJyB0byBzdHJpcCBsZWFkaW5nCglhbmQgdHJhaWxpbmcgc3BhY2VzIGZyb20gYXJndW1lbnRzLgoKCSogYnVpbGRzL3VuaXgvZnQydW5peC5oOiBBZGFwdGVkLgoKCSogc3JjL2Jhc2UvZnRzeXN0ZW0uYyAoZnRfYWxsb2MsIGZ0X3JlYWxsb2MsIGZ0X2ZyZWUsIGZ0X2lvX3N0cmVhbSwKCWZ0X2Nsb3NlX3N0cmVhbSk6IFVzZSBGVF9DQUxMQkFDS19ERUYuCgoJKiBidWlsZHMvdW5peC9mdHN5c3RlbS5jOiBVc2UgbmV3IGhlYWRlciBzY2hlbWUuCgkoRlRfRG9uZV9NZW1vcnkpOiBVc2UgZnJlZSgpIGZyb20gRlRfTWVtb3J5IHN0cnVjdHVyZS4KCgkqIHNyYy9iYXNlL2Z0aW5pdC5jLCBzcmMvYmFzZS9mdG1hYy5jOiBIZWFkZXIgc2NoZW1lIGZpeGVzLgoKMjAwMC0xMi0xMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnQyYnVpbGQuaCAoRlQyX0NPTkZJR19ST09ULAoJRlQyX1BVQkxJQ19GSUxFLCBGVDJfQ09ORklHX0ZJTEUsIEZUMl9JTlRFUk5BTF9GSUxFLAoJRlRfU09VUkNFX0ZJTEUpOiBVc2UgYCMjJyBvcGVyYXRvciB0byBiZSByZWFsbHkgQU5TSSBDIGNvbXBsaWFudC4KCjIwMDAtMTItMDkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2RldGVjdC5tazogUmVtb3ZlIHVudXNlZCBVU0VfQ0ZMQUdTIHZhcmlhYmxlLgoKMjAwMC0xMi0wOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogKi8qLmg6IENoYW5nZWQgYm9keSBpbmNsdXNpb24gbWFjcm8gbmFtZXMgdG8gc3RhcnQgYW5kIGVuZCB3aXRoCglgX18nICh0aG9zZSB3aGljaCBoYXZlbid0IGNvbnZlcnRlZCB5ZXQpLiAgRml4ZWQgbWlub3IgY29udmVyc2lvbgoJaXNzdWVzLgoKCSogc3JjL3dpbmZvbnRzL3dpbmZudC5jOiBVcGRhdGVkIHRvIG5ldyBoZWFkZXIgaW5jbHVzaW9uIHNjaGVtZS4KCgkqIHNyYy90cnVldHlwZS90dGludGVycC5jOiBSZW1vdmUgdW51c2VkIENBTENfTGVuZ3RoKCkgbWFjcm8uCgoyMDAwLTEyLTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogKi8qLltjaF06IENoYW5nZWQgc291cmNlIGZpbGVzIHRvIGFkaGVyZSB0byB0aGUgbmV3CgloZWFkZXIgaW5jbHVzaW9uIHNjaGVtZS4gIE5vdCBjb21wbGV0ZWx5IHRlc3RlZCBidXQgd29ya3MgZm9yIG5vdwoJaGVyZS4KCgkqIHNyYy9jZmYvdDJkcml2ZXIuYzogUmVuYW1lZCBhbmQgdXBkYXRlZCB0by4uLgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmM6IE5ldyBmaWxlLgoJKiBzcmMvY2ZmL3QyZHJpdmVyLmg6IFJlbmFtZWQgYW5kIHVwZGF0ZWQgdG8uLi4KCSogc3JjL2NmZi9jZmZkcml2ci5oOiBOZXcgZmlsZS4KCSogc3JjL2NmZi90MmxvYWQuYzogUmVuYW1lZCBhbmQgdXBkYXRlZCB0by4uLgoJKiBzcmMvY2ZmL2NmZmxvYWQuYzogTmV3IGZpbGUuCgkqIHNyYy9jZmYvdDJsb2FkLmg6IFJlbmFtZWQgYW5kIHVwZGF0ZWQgdG8uLi4KCSogc3JjL2NmZi9jZmZsb2FkLmg6IE5ldyBmaWxlLgoJKiBzcmMvY2ZmL3Qyb2Jqcy5jOiBSZW5hbWVkIGFuZCB1cGRhdGVkIHRvLi4uCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jOiBOZXcgZmlsZS4KCSogc3JjL2NmZi90Mm9ianMuaDogUmVuYW1lZCBhbmQgdXBkYXRlZCB0by4uLgoJKiBzcmMvY2ZmL2NmZm9ianMuaDogTmV3IGZpbGUuCgkqIHNyYy9jZmYvdDJwYXJzZS5jOiBSZW5hbWVkIGFuZCB1cGRhdGVkIHRvLi4uCgkqIHNyYy9jZmYvY2ZmcGFyc2UuYzogTmV3IGZpbGUuCgkqIHNyYy9jZmYvdDJwYXJzZS5oOiBSZW5hbWVkIGFuZCB1cGRhdGVkIHRvLi4uCgkqIHNyYy9jZmYvY2ZmcGFyc2UuaDogTmV3IGZpbGUuCgkqIHNyYy9jZmYvdDJ0b2tlbnMuaDogUmVuYW1lZCBhbmQgdXBkYXRlZCB0by4uLgoJKiBzcmMvY2ZmL2NmZnRva2VuLmg6IE5ldyBmaWxlLgoKCSogc3JjL2NmZi9jZmYuYywgc3JjL2NmZi9ydWxlcy5tazogVXBkYXRlZC4KCjIwMDAtMTItMDYgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2FjaGUvZnRscnUuYyAoRlRfTHJ1X0RvbmUpOiBGaXhlZCBtZW1vcnkgbGVhay4KCjIwMDAtMTItMDYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9tb2R1bGUubWs6IFJlcGxhY2VkIGB4eHggIycgd2l0aCBgeHh4JChzcGFjZSkuCgkqIGJ1aWxkcy9vczIvZGV0ZWt0Lm1rLCBidWlsZHMvd2luMzIvZGV0ZWt0Lm1rOiBNb3ZlZCBjb21tZW50IHRvCglhdm9pZCB0cmFpbGluZyBzcGFjZXMgaW4gdmFyaWFibGUuCgkqIGJ1aWxkcy9mcmVldHlwZS5tazogVXNlICQoRCkgaW5zdGVhZCBvZiAkRCB0byBtYWtlIHN0YXRlbWVudCBtb3JlCglyZWFkYWJsZS4KCgkqIGRvY3MvZG9jbWFrZXIucHk6IEZvcm1hdHRpbmcuCgoyMDAwLTEyLTA1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogc3JjL3BzYXV4L3BzYXV4bW9kLmM6IEZpeGVkIGEgYnJva2VuIGluY2x1c2lvbiBvZiBjb21wb25lbnQKCWhlYWRlciBmaWxlcyAoYW4gRlRfRkxBVF9DT01QSUxFIHRlc3Qgd2FzIG1pc3NpbmcpLgoKCSogc3JjL2NhY2hlL2Z0Y21hbmFnLmMgKEZUQ19NYW5hZ2VyX0RvbmUpOiBGaXhlZCBhIGJ1ZyB0aGF0IGNhdXNlZAoJYW4gb2NjYXNpb25hbCBjcmFzaCB3aGVuIHRoZSBmdW5jdGlvbiB3YXMgY2FsbGVkIChkdWUgdG8gYSBkYW5nbGluZwoJcG9pbnRlcikuCgoJKiBzcmMvYmFzZS9mdHN5c3RlbS5jIChGVF9Eb25lX01lbW9yeSk6IEZpeGVkIGFuIG9idmlvdXMgYnVnOgoJVGhlIEFOU0kgImZyZWUoKSIgZnVuY3Rpb24gd2FzIGNhbGxlZCBpbnN0ZWFkIG9mICJtZW1vcnktPmZyZWUoKSIuCgoJKiBkb2NzL2RvY21ha2VyLnB5OiBBZGRlZCBzZWN0aW9uIGZpbHRlcmluZywgbXVsdGktcGFnZSBnZW5lcmF0aW9uCgkoaW5kZXggcGFnZSBnZW5lcmF0aW9uIGlzIHN0aWxsIG1pc3NpbmcgdGhvdWdoKS4KCjIwMDAtMTItMDQgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBidWlsZHMvdW5peC9pbnN0YWxsLm1rLCBidWlsZHMvdW5peC9mdDJ1bml4Lmg6IFRoZSBmaWxlICJmdDJ1bml4LmgiCglpcyBub3cgaW5zdGFsbGVkIGFzIDxmdDJidWlsZC5oPiBmb3IgVW5peCBzeXN0ZW1zLiAgTm90ZSB0aGF0IHdlCglzdGlsbCB1c2UgdGhlICJmcmVldHlwZTIvZnJlZXR5cGUiIGluc3RhbGxhdGlvbiBwYXRoIGZvciBub3cuCgoJKiAqLyouW2NoXTogTm93IHVzaW5nIDxmdDJidWlsZC5oPiBhcyB0aGUgZGVmYXVsdCBidWlsZCBhbmQgc2V0dXAKCWNvbmZpZ3VyYXRpb24gZmlsZSBpbiBhbGwgcHVibGljIGhlYWRlcnMuICBJbnRlcm5hbCBzb3VyY2UgZmlsZXMKCXN0aWxsIG5lZWQgc29tZSBjaGFuZ2VzIHRob3VnaC4KCgkqIGJ1aWxkcy9kZXZlbC9mdDJidWlsZC5oLCBidWlsZHMvZGV2ZWwvZnRvcHRpb24uaDogQ3JlYXRlZCBhIG5ldwoJZGlyZWN0b3J5IHRvIGhvbGQgYWxsIGRldmVsb3BtZW50IG9wdGlvbnMgZm9yIGJvdGggdGhlIFVuaXggYW5kCglXaW4zMiBkZXZlbG9wZXIgYnVpbGRzLgoKCSogYnVpbGRzL3dpbjMyL2RldGVjdC5taywgYnVpbGRzL3dpbjMyL3czMi1iY2NkLm1rLAoJYnVpbGRzL3dpbjMyL3czMi1kZXYubWs6IENoYW5nZWQgdGhlIGRldmVsb3BlciBidWlsZCB0YXJnZXRzIHRvCgkiZGV2ZWwtZ2NjIiBhbmQgImRldmVsLWJjYyIgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBkZXZlbG9wIHdpdGggdGhlCglCb3JsYW5kIEMrKyBjb21waWxlci4KCjIwMDAtMTItMDEgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoKCSogVmVyc2lvbiAyLjAuMSByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuaW4sIGJ1aWxkcy91bml4L2NvbmZpZ3VyZSwKCWJ1aWxkcy9jeWd3aW4vY29uZmlndXJlLmluLCBidWlsZHMvY3lnd2luL2NvbmZpZ3VyZTogU2V0dGluZwoJInZlcnNpb25faW5mbyIgdG8gNjoxOjAgZm9yIHRoZSAyLjAuMSByZWxlYXNlLgoKCSogQ0hBTkdFUzogQWRkZWQgYSBzdW1tYXJ5IG9mIGNoYW5nZXMgYmV0d2VlbiAyLjAuMSBhbmQgMi4wLgoKCSogYnVpbGRzL3VuaXgvZnRjb25maWcuaW4sIGJ1aWxkcy9jeWd3aW4vZnRjb25maWcuaW46IENoYW5nZXMKCXRvIGFsbG93IGNvbXBpbGF0aW9uIHVuZGVyIFVuaXggd2l0aCB0aGUgVW5peC1zcGVjaWZpYyBjb25maWcKCWZpbGVzLgoKMjAwMC0xMi0wMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogSU5TVEFMTDogUmV2aXNlZC4KCSogYnVpbGRzL2NvbXBpbGVyL2JjYy1kZXYubWssIGJ1aWxkcy9jb21waWxlci92aXN1YWxhZ2UubWssCglidWlsZHMvY29tcGlsZXIvYmNjLm1rLCBidWlsZHMvd2luMzIvdzMyLWJjYy5taywKCWJ1aWxkcy93aW4zMi93MzItYmNjZC5tazogUmV2aXNlZC4KCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRidWlsZC5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9pbnRlcm5hbC5oOiBSZXZpc2VkLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0aW1hZ2UuaDogVXBkYXRlZCB0byBuZXcgaGVhZGVyIGluY2x1c2lvbiBzY2hlbWUuCgoyMDAwLTExLTMwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdG9wbGV2ZWwubWsgKC5QSE9OWSk6IEFkZGluZyBgZGlzdGNsZWFuJy4KCSogYnVpbGRzL3VuaXgvZGV0ZWN0Lm1rICguUEhPTlkpOiBBZGRpbmcgYGRldmVsJywgYHVuaXgnLCBgbGNjJywKCWBzZXR1cCcuCgoyMDAwLTExLTMwICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub2dyPgoKCSogSU5TVEFMTDogU2xpZ2h0bHkgdXBkYXRlZCB0aGUgcXVpY2sgc3RhcnRlciBkb2N1bWVudGF0aW9uIHRvCglpbmNsdWRlIElERSBjb21waWxhdGlvbiwgcHJldmVudCBhZ2FpbnN0IEJTRCBNYWtlLCBhbmQgc3BlY2lmeSAibWFrZQoJc2V0dXAiIGluc3RlYWQgb2YgYSBzaW5nbGUgIm1ha2UiIGZvciBidWlsZCBjb25maWd1cmF0aW9uLgoKCSogaW5jbHVkZS9jb25maWcvZnRidWlsZC5oLCBpbmNsdWRlL2ludGVybmFsL2ludGVybmFsLmg6IEFkZGVkIG5ldwoJY29uZmlndXJhdGlvbiBmaWxlcyB1c2VkIHRvIGRldGVybWluZSB0aGUgbG9jYXRpb24gb2YgYWxsIHB1YmxpYywKCWNvbmZpZ3VyYXRpb24sIGFuZCBpbnRlcm5hbCBoZWFkZXIgZmlsZXMgZm9yIEZyZWVUeXBlIDIuICBNb2RpZmllZAoJYWxsIGhlYWRlcnMgdW5kZXIgImluY2x1ZGUvZnJlZXR5cGUiIHRvIHJlZmxlY3QgdGhpcyBjaGFuZ2UuICBOb3RlCgl0aGF0IHdlIHN0aWxsIG5lZWQgdG8gY2hhbmdlIHRoZSBsaWJyYXJ5IHNvdXJjZSBmaWxlcyB0aGVtc2VsdmVzCgl0aG91Z2guCgoJKiBidWlsZHMvY29tcGlsZXIvYmNjLm1rLCBidWlsZHMvY29tcGlsZXIvYmNjLWRldi5taywKCWJ1aWxkcy93aW4zMi93MzItYmNjLm1rLCBidWlsZHMvd2luMzIvdzMyLWJjY2QubWssCglidWlsZHMvd2luMzIvZGV0ZWN0Lm1rOiBBZGRlZCBuZXcgZmlsZXMgdG8gc3VwcG9ydCBjb21waWxhdGlvbiB3aXRoCgl0aGUgZnJlZSBCb3JsYW5kIEMrKyBjb21tYW5kLWxpbmUgY29tcGlsZXIuICBNb2RpZmllZCB0aGUgZGV0ZWN0aW9uCglydWxlcyB0byByZWNvZ25pemUgdGhlIG5ldyAiYmNjMzIiIHRhcmdldCBpbiAibWFrZSBzZXR1cCBiY2MzMiIuCgoJKiBzcmMvc2ZudC90dGNtYXAuYywgc3JjL3NmbnQvdHRwb3N0LmMsIHNyYy9zZm50L3R0c2JpdC5jLAoJc3JjL3RydWV0eXBlL3R0b2Jqcy5jLCBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jLAoJc3JjL3RydWV0eXBlL3R0aW50ZXJwLmM6IEZpeGVkIGEgZmV3IGNvbXBhcmlzb25zIHRoYXQgQm9ybGFuZCBDKysKCWRpZG4ndCByZWFsbHkgbGlrZS4gIEJhc2ljYWxseSwgdGhpcyBjb21waWxlciBjb21wbGFpbnMgd2hlbiBGVF9VSW50CglpcyBjb21wYXJlZCB0byBGVF9VU2hvcnQgKGFwcGFyZW50bHksIGl0IHByb21vdGVzIGBVU2hvcnQnIHRvIGBJbnQnCglpbiB0aGVzZSBjYXNlcykuCgoyMDAwLTExLTMwICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogdDJvYmpzLmMgKFQyX0luaXRfRmFjZSk6IEFkZGVkIGNhbGN1bGF0aW9uIG9mIGBmYWNlLT5oZWlnaHQnIGZvcgoJcHVyZSBDRkYgZm9udHMuCgoJKiB0MW9ianMuYyAoVDFfSW5pdF9GYWNlKTogRml4ZWQgY29tcHV0YXRpb24gb2YgYGZhY2UtPmhlaWdodCcuCgoyMDAwLTExLTI5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRiYm94LmMgKEJCb3hfQ29uaWNfQ2hlY2spOiBGaXhlZCBhIHJlYWxseSBzdHVwaWQKCWJ1ZyBpbiB0aGUgZm9ybXVsYSB1c2VkIHRvIGNvbXB1dGUgdGhlIGNvbmljIELpemllciBleHRyZW1hCglvZiBub24tbW9ub3Rvbm91cyBhcmNzLgoKMjAwMC0xMS0yOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRjYWxjLmMgKEZUX1NxcnRGaXhlZCksIHNyYy9iYXNlL2Z0b2Jqcy5jCgkoRlRfU2V0X1JlbmRlcmVyKTogVXNlIEZUX0VYUE9SVF9ERUYuCgkqIHNyYy9jYWNoZS9mdGNpbWFnZS5jIChGVENfSW1hZ2VfQ2FjaGVfTG9va3VwKSwKCXNyYy9jYWNoZS9mdGNtYW5hZy5jIChGVENfTWFuYWdlcl9Eb25lLCBGVENfTWFuYWdlcl9SZXNldCwKCUZUQ19NYW5hZ2VyX0xvb2t1cF9GYWNlLCBGVENfTWFuYWdlcl9Mb29rdXBfU2l6ZSwKCUZUQ19NYW5hZ2VyX1JlZ2lzdGVyX0NhY2hlKSwgc3JjL2NhY2hlL2Z0Y3NiaXRzLmMKCShGVENfU0JpdF9DYWNoZV9Mb29rdXApOiBEaXR0by4KCgkqIHNyYy9pbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y2dseXBoLmggKEZUQ19HbHlwaE5vZGVfSW5pdCksCglzcmMvaW5jbHVkZS9mcmVldHlwZS9mdG1hYy5oIChGVF9OZXdfRmFjZV9Gcm9tX0ZPTkQpOiBVc2UgRlRfRVhQT1JULgoKMjAwMC0xMS0yOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3NmbnQvc2Zkcml2ZXIuYzogSW5jbHVkZSB0dHNiaXQuaCBhbmQgdHRwb3N0Lmggb25seQoJY29uZGl0aW9uYWxseS4KCgkqIHNyYy90cnVldHlwZS90dGRyaXZlci5jIChTZXRfQ2hhcl9TaXplcywgU2V0X1BpeGVsX1NpemVzKTogU2V0Cglgc2l6ZS0+c3RyaWtlX2luZGV4JyBvbmx5IGNvbmRpdGlvbmFsbHkuCgoJKiBzcmMvdHlwZTEvdDFkcml2ZXIuYywgc3JjL3R5cGUxL3Qxb2Jqcy5jOiBJbmNsdWRlIHQxYWZtLmggb25seQoJY29uZGl0aW9uYWxseS4KCgkqIHNyYy93aW5mb250cy93aW5mbnQuaDogTW92ZSBhbGwgdHlwZSBkZWZpbml0aW9ucyB0by4uLgoJKiBzcmMvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mbnR0eXBlcy5oOiBOZXcgZmlsZS4KCSogc3JjL3dpbmZvbnRzL3dpbmZudC5jOiBVc2UgaXQuCgoyMDAwLTExLTI5ICA/Pz8gPz8/ICA8ZGFyaW5AZWF6ZWwuY29tPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmg6IFJlcGxhY2VkIEZUX0NBVCBhbmQgRlRfWENBVAoJd2l0aCBhIGRpcmVjdCBzb2x1dGlvbiAod2hpY2ggYWxzbyBzYXRpZmllcyBwaWNreSBjb21waWxlcnMpLgoKMjAwMC0xMS0yOCAgWUFNQU5PLVVDSEkgSGlkZXRvc2hpICA8bWVyQGRpbi5vci5qcD4KCgkqIHNyYy90cnVldHlwZS90dG9ianMuYyAoVFRfSW5pdF9TaXplKTogRml4ICNpZmRlZidzIHRvIHdvcmsgd2l0aAoJZGlzYWJsZWQgaW50ZXJwcmV0ZXIgYWxzby4KCgkqIHNyYy9iYXNlL2Z0bmFtZXMuYyAoRlRfR2V0X1NmbnRfTmFtZV9Db3VudCk6IEZpeCBpbmNvcnJlY3QKCXBhcmVudGhlc2VzLgoKMjAwMC0xMS0yNiAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvdDJnbG9hZC5jIChUMl9QYXJzZV9DaGFyU3RyaW5ncyk6IEFkZGVkIGxvZ2ljIHRvIGdseXBoCgl3aWR0aCBzZXR0aW5nIGNvZGUgdG8gdGFrZSBpbnRvIGFjY291bnQgZXZlbi9vZGQgYXJndW1lbnQgY291bnRzCglhbmQgZ2x5cGggd2lkdGggb3BlcmFuZCBiZWZvcmUgZW5kY2hhci9obW92ZXRvL3Ztb3ZldG8uCgoyMDAwLTExLTI2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvYW5zaS9hbnNpLm1rOiBGaXggaW5jbHVzaW9uIG9yZGVyIG9mIGZpbGVzLgoKMjAwMC0xMS0yNiAgS2VpdGggUGFja2FyZCAgPGtlaXRocEBrZWl0aHAuY29tPgoKCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9Jbml0X0ZhY2UpOiBDb21wdXRlIHN0eWxlIGZsYWdzLgoKMjAwMC0xMS0yNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL2NvbXBpbGVyL2Fuc2ktY2MubWsgKENMRUFOX0xJQlJBUlkpOiBGaXggcnVsZSBhbmQKCWNvbmRpdGlvbmFsLgoKMjAwMC0xMS0yMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9zdWJycywgcGFyc2VfY2hhcnN0cmluZ3MpOiBVc2UgZGVjcnlwdAoJZnVuY3Rpb24gZnJvbSBQU0F1eCBtb2R1bGUuCgoJKiBzcmMvdHlwZTEvdDFwYXJzZS5jIChUMV9Eb25lX1BhcnNlKTogUmVuYW1lZCB0by4uLgoJKFQxX0ZpbmFsaXplX1BhcnNlcik6IE5ldyBmdW5jdGlvbiAodG8gYXZvaWQgbmFtZSBjbGFzaCB3aXRoIGEKCWZ1bmN0aW9uIGluIHRoZSBQU0F1eCBtb2R1bGUpLgoJKFQxX0RlY3J5cHQpOiBSZW1vdmVkIHNpbmNlIGl0IGlzIGR1cGxpY2F0ZWQgaW4gdGhlIFBTQXV4IG1vZHVsZS4KCShUMV9HZXRfUHJpdmF0ZV9EaWN0KTogQWRkZWQgYHBzYXV4JyBhcyBuZXcgcGFyYW1ldGVyOyB1c2UgZGVjcnlwdAoJZnVuY3Rpb24gZnJvbSBQU0F1eCBtb2R1bGUuCgoJKiBzcmMvdHlwZTEvdDFwYXJzZS5oOiBBZGFwdGVkLgoKMjAwMC0xMS0yMiAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvdDJvYmpzLmMgKFQyX0luaXRfRmFjZSk6IEZvciBwdXJlIENGRiBmb250cywgc2V0Cglgcm9vdC0+bnVtX2ZhY2VzJyB0byBgY2ZmLT5udW1fZmFjZXMnIGFuZCBzZXQgYHVuaXRzX3Blcl9FTScKCXRvIDEwMDAuCgoJKiBzcmMvY2ZmL3QycGFyc2UuYyAocGFyc2VfdDJfcmVhbCk6IEZpeGVkIHJlYWwgbnVtYmVyIHBhcnNpbmcKCWxvb3AuCgoJKiBzcmMvY2ZmL3QybG9hZC5jIChUMl9HZXRfU3RyaW5nKTogQ2FsbGVkIFQyX0dldF9OYW1lIHdpdGggYQoJc2lkIHRoYXQgd2FzIG9mZiBieSBvbmUuCgoyMDAwLTExLTE2ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWh0eXBlcy5oIChBSF9IaW50ZXIpOiBBZGRlZCBuZXcgZmllbGRzIHRvIGNvbnRyb2wKCWF1dG8taGludGluZyBvZiBzeW50aGV0aWMgVHlwZSAxIGZvbnRzLgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfbG9hZCwgYWhfaGludGVyX2xvYWRfZ2x5cGgpOgoJQWRkZWQgYXV0by1oaW50aW5nIHN1cHBvcnQgb2Ygc3ludGhldGljIFR5cGUgMSBmb250cy4KCjIwMDAtMTEtMTIgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9va1VwX1RhYmxlLCBUVF9Mb2FkX0dlbmVyaWNfVGFibGUpOiBDaGFuZ2UKCXRyYWNpbmcgb3V0cHV0LgoKCSogc3JjL3NmbnQvc2ZvYmpzLmMgKFNGTlRfTG9hZF9GYWNlKTogU2V0IGJvb2xlYW4gdmFyaWFibGUKCWBoYXMtb3V0bGluZScgdG8gdHJ1ZSBvbmx5IGlmIHRoZSBmb250IGhhcyBhIGBnbHlmJyBvciBgQ0ZGICcgdGFibGUuCgoyMDAwLTExLTExICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvd2luMzIvdmlzdWFsYy9mcmVldHlwZS5kc3A6IEZpeCByYXN0ZXIxLT5yYXN0ZXIgYW5kCgl0eXBlMXotPnR5cGUxLgoKMjAwMC0xMS0xMSAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlLWNvbmZpZy5pbiwgYnVpbGRzL2N5Z3dpbi9mcmVldHlwZS1jb25maWcuaW46CglBZGRlZCBhIC0tbGlidG9vbCBvcHRpb24uICBXaGVuIGZyZWV0eXBlLWNvbmZpZyAtLWxpYnRvb2wgaXMKCWludm9rZWQsIHRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBsaWJ0b29sIGNvbnZlbmllbmNlIGxpYnJhcnkKCWlzIHJldHVybmVkLgoKMjAwMC0xMS0xMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL2N5Z3dpbi9jeWd3aW4tZGVmLmluOiBTYW1lIGZpeCBhcyBwcmV2aW91cy4KCjIwMDAtMTEtMTAgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBidWlsZHMvdW5peC91bml4LWRlZi5pbjogQWRkCgoJICAgIElOU1RBTExfUFJPR1JBTSA6PSBASU5TVEFMTF9QUk9HUkFNQAoJICAgIElOU1RBTExfU0NSSVBUICA6PSBASU5TVEFMTF9TQ1JJUFRACgoJc28gdGhhdCBpbnN0YWxsYXRpb24gb2YgZnJlZXR5cGUtY29uZmlnIGRvZXMgbm90IGZhaWwuCgoyMDAwLTExLTEwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvY3lnd2luL2ZyZWV0eXBlLWNvbmZpZy5pbiwgYnVpbGRzL3VuaXgvZnJlZXR5cGUtY29uZmlnLmluOgoJTW92ZSB0ZXN0IGRvd24gZm9yIGVtcHR5IC0tZXhlYy1wcmVmaXguCglGaXggLS12ZXJzaW9uLgoKCSogYnVpbGRzL2N5Z3dpbi9pbnN0YWxsLm1rLCBidWlsZHMvdW5peC9pbnN0YWxsLm1rOiBVc2UKCSQoSU5TVEFMTF9TQ1JJUFQpIGZvciBpbnN0YWxsYXRpb24gb2YgZnJlZXR5cGUtY29uZmlnLgoKCSogYnVpbGRzL2N5Z3dpbi9pbnN0YWxsLm1rOiBGaXggY2xlYW4gdGFyZ2V0IG5hbWVzLgoKMjAwMC0xMS0wOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCgkqIFZlcnNpb24gMi4wIHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT0KCgpMb2NhbCBWYXJpYWJsZXM6CnZlcnNpb24tY29udHJvbDogbmV2ZXIKY29kaW5nOiBsYXRpbi0xCkVuZDoK