ZGlmZiAtLWdpdCBhL0ZhYnJpYy9Eb2MvQ09OVFJJQlVUSU5HLm1kIGIvRmFicmljL0RvYy9DT05UUklCVVRJTkcubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmJhYjk2NgotLS0gL2Rldi9udWxsCisrKyBiL0ZhYnJpYy9Eb2MvQ09OVFJJQlVUSU5HLm1kCkBAIC0wLDAgKzEsMTk2IEBACisjIEhvdyBDYW4gSSBDb250cmlidXRlPworCitXZSdyZSBhbHdheXMgd2lsbGluZyB0byBhY2NlcHQgZ29vZCBwdWxsIHJlcXVlc3RzIChQUnMpLiBJbiBjYXNlIHlvdSdyZSBzdHVjayBmb3IgaWRlYXMgb24gd2hlcmUgdG8gc3RhcnQsIGhlcmUgYXJlIHNvbWUgaWRlYXMgdG8gZ2V0IHlvdSBzdGFydGVkLgorCisjIyBBZGQgTWlzc2luZyBUZXN0IENhc2VzCisKK1dlIHdlbGNvbWUgYW55IHBhdGNoIHRoYXQgYWRkcyBhIG1pc3NpbmcgdGVzdCAob3IgaW1wcm92ZXMgYW4gZXhpc3Rpbmcgb25lLCBmb3IgdGhhdCBtYXR0ZXIpLiBJbiB0aGlzIHJlZ2FyZCwgd2hpbGUgdGhleSBtYWtlIGZvciBoZWF2eSByZWFkaW5nLCB0aGUgW09wZW5GbG93IFNwZWNpZmljYXRpb25zXShodHRwczovL3d3dy5vcGVubmV0d29ya2luZy5vcmcvc2RuLXJlc291cmNlcy9vbmYtc3BlY2lmaWNhdGlvbnMvb3BlbmZsb3cpIGFyZSBsaWtlbHkgdGhlIGJlc3QgcGxhY2VzIHRvIHN0YXJ0LiBPbmNlIHlvdSBoYXZlIGFuIGlkZWEgb2YgYSB0ZXN0IHlvdSdkIGxpa2UgdG8gaW1wbGVtZW50IGp1c3QgY2hlY2sgdGhlIFtBZGRpbmcgWW91ciBPd24gVGVzdCBDYXNlc10oI2FkZGluZy1vci1tb2RpZnlpbmctdGVzdHMpIHNlY3Rpb24gYmVsb3cuCisKKyMjIEJ1ZyBGaXhlcworCitIdW1hbnMgd2lsbCBpbmV2aXRhYmx5IHdyaXRlIGJ1Z2d5IHNvZnR3YXJlLiBJZiB5b3Ugc3BvdCBhIGJ1ZyBpbiBlaXRoZXIgYSB0ZXN0IGNhc2VzIG9yIGFub3RoZXIgZWxlbWVudCBvZiB0aGUgZnJhbWV3b3JrIHRoZW4gZWl0aGVyIFtzdWJtaXQgYSBmaXhdKGh0dHBzOi8vZ2l0aHViLmNvbS9mbG9vZGxpZ2h0L29mdGVzdC9wdWxscykgb3IgW2ZpbGUgYSBidWddKGh0dHBzOi8vZ2l0aHViLmNvbS9mbG9vZGxpZ2h0L29mdGVzdC9pc3N1ZXMpLgorCisjIyBBZGQgTmV3IEZlYXR1cmVzCisKK05lZWQgdG8gbW9kaWZ5IE9GVGVzdCB0byBmaXQgYSBwZXJzb25hbCBuZWVkIG9yIGJ1c2luZXNzIHJlcXVpcmVtZW50PyBHcmVhdCEgSWYgeW91IHRoaW5rIGl0J2xsIGJlIHVzZWZ1bCB0byBhbnlvbmUgZWxzZSB0aGVuIHN1Ym1pdCBhIFBSIGZvciByZXZpZXcuCisKKyMjIERvY3VtZW50YXRpb24gJiBPdGhlciBDaGFuZ2VzCisKK1VzaW5nIE9GVGVzdCBpbiBhIHVuaXF1ZSB3YXk/IEZpbmRpbmcgT0ZUZXN0IGRpZmZpY3VsdCB0byBzZXQgdXAgYW5kIHdhbnRpbmcgdG8gaGVscCBvdGhlcnMgYXZvaWQgeW91ciBpc3N1ZXM/IEZpbmRpbmcgeW91cnNlbGYgYW5ub3llZCBieSBhIHR5cG8gaW4gc29tZSBjb2RlL2RvY3VtZW50YXRpb24/IFN1Ym1pdCBhIHB1bGwgcmVxdWVzdCEKKworLS0tCisKKyMgTWFraW5nIENoYW5nZXMKKworIyMgQWRkaW5nIG9yIE1vZGlmeWluZyBUZXN0cworCitPRlRlc3QgaXRzZWxmIHVzZXMgdGhlIGB1bml0dGVzdGAgbGlicmFyeSwgd2hpY2ggaXMgcGFydCBvZiB0aGUgUHl0aG9uIFN0YW5kYXJkIExpYnJhcnkuIFRoaXMgbWVhbnMgdGhlcmUgYXJlIHNvbWUgcmVxdWlyZW1lbnRzIGZvciB0ZXN0cyB3cml0dGVuIGZvciBPRlRlc3Q6CisKKyAqIEVhY2ggbmV3IHRlc3QgY2FzZSBzaG91bGQgYmUgaXRzIG93biBjbGFzcy4KKyAqIEFsbCB0ZXN0cyBtdXN0IGluaGVyaXQgZnJvbSBgdW5pdHRlc3QuVGVzdENhc2VgIG9yIGFuIGV4aXN0aW5nIHRlc3QuIE1vc3QgdGVzdHMgd2lsbCBpbmhlcml0IGZyb20gYG9mdGVzdC5iYXNlX3Rlc3RzLlNpbXBsZURhdGFQbGFuZWAuCisgKiBUZXN0cyBtdXN0IGFsc28gcHJvdmlkZSBhIGBydW5UZXN0YCBmdW5jdGlvbiwgd2hpY2ggd2lsbCBhY3QgYXMgdGhlIG1haW4gcm91dGluZSBmb3IgYWxsIHRlc3QgY2FzZXMuIFRoaXMgaXMgYWxzbyBob3cgT0ZUZXN0IGRpc2NvdmVycyB0ZXN0cy4KKyAqIFRlc3RzIHNob3VsZCB1c2UgdGhlIGB1bml0dGVzdGAgYXNzZXJ0IGNhc2VzLCBkZWZpbmVkIFtoZXJlXShodHRwczovL2RvY3MucHl0aG9uLm9yZy8yL2xpYnJhcnkvdW5pdHRlc3QuaHRtbCNhc3NlcnQtbWV0aG9kcyksIGFzIHRoZXkgcHJvdmlkZSBtb3JlIGluZm9ybWF0aW9uIHRvIHRoZSB1c2VyIGFib3V0IGlzc3VlcyB0aGF0IHN0YW5kYXJkIHRoZSBzdGFuZGFyZCBgYXNzZXJ0YC4KKyAqIFRlc3RzIG1heSBwcm92aWRlIGEgYHNldFVwYCBhbmQvb3IgYHRlYXJEb3duYCBmdW5jdGlvbi4gVGhlc2Ugd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGNhbGxlZCBieSB0aGUgdGVzdCBmcmFtZXdvcmsgYmVmb3JlL2FmdGVyIGNhbGxpbmcgYHJ1blRlc3RgIHJlc3BlY3RpdmVseS4gSWYgb3ZlcnJpZGluZyBhbiBleGlzdGluZyB0ZXN0IGJlIHN1cmUgdG8gY2FsbCB0aGUgc3VwZXIgY2xhc3MnIGBzZXRVcGAgb3IgYHRlYXJEb3duYCBmdW5jdGlvbnMuCisKK1dlIHN1Z2dlc3QgeW91IGxvb2sgYXQgYGJhc2ljLnB5YCBhcyBhIHN0YXJ0aW5nIHBvaW50IGZvciB3cml0aW5nIG5ldyB0ZXN0cy4gSXQncyBhbHNvIHdvcnRoIG5vdGluZyB0aGVzZSBjb252ZW50aW9uczoKKworICogVGhlIGZpcnN0IGxpbmUgb2YgdGhlIGRvYyBzdHJpbmcgZm9yIGEgZmlsZSBhbmQgZm9yIGEgdGVzdCBjbGFzcyBpcyBkaXNwbGF5ZWQgaW4gdGhlIGxpc3QgY29tbWFuZC4gUGxlYXNlIGtlZXAgaXQgY2xlYXIgYW5kIHVuZGVyIDUwIGNoYXJhY3RlcnMuCisKKyMjIyBDb2RpbmcgU3R5bGUKKworT0ZUZXN0IHVzZXMgdGhlIFB5dGhvbiBTdGFuZGFyZCBTdHlsZSBHdWlkZSwgb3IgW1BFUC04XShodHRwOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTAwMDgvKS4gUGxlYXNlIGVuc3VyZSBhbGwgY2hhbmdlcyBhYmlkZSBieSB0aGlzIHN0YW5kYXJkLgorCitJbiBhZGRpdGlvbiwgd2hlbiBhZGRpbmcgbmV3IHRlc3RzLCB0aGUgdGVzdCBmaWxlIG5hbWVzIHNob3VsZCBiZSBsb3dlcmNhc2Ugd2l0aCB1bmRlcnNjb3JlcyBhbmQgc2hvcnQsIG1lYW5pbmdmdWwgbmFtZXMuIFRlc3QgY2FzZSBjbGFzcyBuYW1lcyBzaG91bGQgYmUgQ2FtZWxDYXNlZCBhbmQgdXNlIHNpbWlsYXJseSBzaG9ydCwgbWVhbmluZ2Z1bCBuYW1lcy4KKworIyMgRG9jdW1lbnRhdGlvbgorCitBbnkgYWRkaXRpb25hbCBkb2N1bWVudGF0aW9uIGFkZGVkIHRvIHRoZSByZXBvc2l0b3J5IHNob3VsZCBiZSBpbiBbR2l0SHViLWZsYXZvcmVkIE1hcmtkb3duXShodHRwczovL2hlbHAuZ2l0aHViLmNvbS9hcnRpY2xlcy9naXRodWItZmxhdm9yZWQtbWFya2Rvd24vKS4KKworLS0tCisKKyMgQXJjaGl0ZWN0dXJlCisKK1RoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGlzIGN1cnJlbnRseToKKworICAgIDxvZnRlc3Q+CisgICAgICAgIGAKKyAgICAgICAgfC0tIG9mdAorICAgICAgICB8LS0gZG9jcworICAgICAgICB8LS0gc3JjCisgICAgICAgIHwgICBgLS0gcHl0aG9uCisgICAgICAgIHwgICAgICAgYC0tIG9mdGVzdAorICAgICAgICB8LS0gdGVzdHMKKyAgICAgICAgfCAgIGAtLSB0ZXN0IGNhc2VzIGZvciBPcGVuRmxvdyAxLjAKKyAgICAgICAgfC0tIHRlc3RzLTEueAorICAgICAgICB8ICAgYC0tIHRlc3QgY2FzZXMgZm9yIGEgc3BlY2lmaWMgdmVyc2lvbgorICAgICAgICBgLS0gdG9vbHMKKworIyMgQmFzZSBUZXN0IFR5cGVzCisKK09uY2UgaW5zdGFsbGVkICB0aGUgY29tcG9uZW50cyBvZiBPRlRlc3QgYXJlIGF2YWlsYWJsZSB2aWEgaW1wb3J0IG9mIHN1Ym1vZHVsZXMgb2YgYG9mdGVzdGAuIFR5cGljYWxseSwgbmV3IHRlc3RzIHdpbGwgYmUgd3JpdHRlbiBhcyBzdWJjbGFzc2VzIG9mIG9uZSBvZiB0aGUgdHdvIGZvbGxvd2luZyB0ZXN0czoKKworICogVGhlIGJhc2ljIHByb3RvY29sIHRlc3QsIGBTaW1wbGVQcm90b2NvbGAsIGlzIHVzZWQgZm9yIHRlc3RzIHRoYXQgcmVxdWlyZSBvbmx5IGNvbW11bmljYXRpb24gd2l0aCB0aGUgc3dpdGNoIG92ZXIgdGhlIGNvbnRyb2xsZXIgaW50ZXJmYWNlCisgKiBUaGUgYmFzaWMgZGF0YXBsYW5lIHRlc3QsIGBTaW1wbGVEYXRhUGxhbmVgIGlzIHVzZWQgZm9yIHRlc3RzIHRoYXQgcmVxdWlyZSBib3RoIGNvbW11bmljYXRpb24gd2l0aCB0aGUgc3dpdGNoIGFuZCB0aGUgYWJpbGl0eSB0byBzZW5kL3JlY2VpdmUgcGFja2V0cyB0by9mcm9tIE9wZW5GbG93IHBvcnRzLgorCitTaW1wbGVQcm90b2NvbCBhbmQgU2ltcGxlRGF0YVBsYW5lIGFyZSBkZWZpbmVkIGluIGBvZnRlc3QvYmFzZV90ZXN0cy5weWAuCisKKyMjIyBTaW1wbGUgUHJvdG9jb2wKKworVGhlIGVzc2VudGlhbCBvYmplY3QgcHJvdmlkZWQgYnkgaW5oZXJpdGFuY2UgZnJvbSBgU2ltcGxlUHJvdG9jb2xgIChhbmQgZnJvbSBgU2ltcGxlRGF0YVBsYW5lYCB3aGljaCBpcyBhIHN1YmNsYXNzIG9mIGBTaW1wbGVQcm90b2NvbGApIGlzIGBzZWxmLmNvbnRyb2xsZXJgLiBUaGUgYHNldFVwYCByb3V0aW5lIGVuc3VyZXMgYSBjb25uZWN0aW9uIGhhcyBiZWVuIG1hZGUgdG8gdGhlIFNVVCBwcmlvciB0byByZXR1cm5pbmcuIFRodXMsIGluIGBydW5UZXN0YCB5b3UgY2FuIHNlbmQgbWVzc2FnZXMgYWNyb3NzIHRoZSBjb250cm9sIGludGVyZmFjZSBzaW1wbHkgYnkgaW52b2tpbmcgbWV0aG9kcyBvZiB0aGlzIGNvbnRyb2wgb2JqZWN0LiBUaGVzZSBtYXkgYmUgc2VudCB1bmFja25vd2xlZGdlZCBvciBkb25lIGFzIHRyYW5zYWN0aW9ucyAod2hpY2ggYXJlIGJhc2VkIG9uIHRoZSBYSUQgaW4gdGhlIE9wZW5GbG93IGhlYWRlcik6CisKKyAgICBpbXBvcnQgb2Z0ZXN0LmJhc2VfdGVzdHMgYXMgYmFzZV90ZXN0cworCisgICAgY2xhc3MgTXlUZXN0KGJhc2ljLlNpbXBsZVByb3RvY29sKToKKyAgICAuLi4gIyBJbnNpZGUgeW91ciBydW5UZXN0OgorICAgICAgICBzZWxmLmNvbnRyb2xsZXIubWVzc2FnZV9zZW5kKG1zZykgICAjIFVuYWNrbm93bGVkZ2VkCisgICAgICAgIHNlbGYuY29udHJvbGxlci50cmFuc2FjdChyZXF1ZXN0KSAgICMgVHJhbnNhY3Rpb24gYmFzZWQgb24gWElECisKKyMjIyBTaW1wbGVEYXRhUGxhbmUKKworYFNpbXBsZURhdGFQbGFuZWAgaW5oZXJpdHMgZnJvbSBgU2ltcGxlUHJvdG9jb2xgLCBzbyB5b3UgZ2V0IHRoZSBjb250cm9sbGVyIG9iamVjdCBhcyB3ZWxsIGFzIHRoZSBkYXRhcGxhbmUgb2JqZWN0LCBgc2VsZi5kYXRhcGxhbmVgLgorCitTZW5kaW5nIHBhY2tldHMgaW50byB0aGUgc3dpdGNoIGlzIGRvbmUgd2l0aCB0aGUgYHNlbmRgIG1lbWJlcjoKKworICAgIGltcG9ydCBiYXNpYworCisgICAgY2xhc3MgTXlEUFRlc3QoYmFzaWMuU2ltcGxlRGF0YVBsYW5lKToKKyAgICAuLi4gIyBJbnNpZGUgeW91ciBydW5UZXN0OgorICAgICAgICBwa3QgPSBzaW1wbGVfdGNwX3BhY2tldCgpCisgICAgICAgIHNlbGYuZGF0YXBsYW5lLnNlbmQocG9ydCwgc3RyKHBrdCkpCisKK1BhY2tldHMgY2FuIGJlIHJlY2VpdmVkIGluIHRoZSBmb2xsb3dpbmcgd2F5czoKKworICogTm9uLWJsb2NraW5nIHBvbGw6CisKKyAgICAgICAgKHBvcnQsIHBrdCwgdGltZXN0YW1wKSA9IHNlbGYuZGF0YXBsYW5lLnBvbGwoKQorCisgKiBCbG9ja2luZyBwb2xsOgorCisgICAgICAgIChwb3J0LCBwa3QsIHRpbWVzdGFtcCkgPSBzZWxmLmRhdGFwbGFuZS5wb2xsKHRpbWVvdXQ9MSkKKworICAgIEZvciB0aGUgY2FsbHMgdG8gcG9sbCwgeW91IG1heSBzcGVjaWZ5IGEgcG9ydCBudW1iZXIgaW4gd2hpY2ggY2FzZSBvbmx5IHBhY2tldHMgcmVjZWl2ZWQgb24gdGhhdCBwb3J0IHdpbGwgYmUgcmV0dXJuZWQuCisKKyAgICAgICAgKHBvcnQsIHBrdCwgdGltZXN0YW1wKSA9IHNlbGYuZGF0YXBsYW5lLnBvbGwocG9ydF9udW1iZXI9MiwgdGltZW91dD0xKQorCisgKiBSZWdpc3RlciBhIGhhbmRsZXI6CisKKyAgICAgICAgc2VsZi5kYXRhcGxhbmUucmVnaXN0ZXIoaGFuZGxlcikKKworIyMjIERhdGFQbGFuZU9ubHkKKworT2NjYXNpb25hbGx5LCBpdCBpcyBjb252ZW5pZW50IHRvIGJlIGFibGUgdG8gc2VuZCBhIHBhY2tldCBpbnRvIGEgc3dpdGNoIHdpdGhvdXQgY29ubmVjdGluZyB0byB0aGUgY29udHJvbGxlci4gVGhlIERhdGFQbGFuZU9ubHkgY2xhc3MgaXMgdGhlIHBhcmVudCB0aGF0IGFsbG93cyB5b3UgdG8gZG8gdGhpcy4gSXQgaW5zdGFudGlhdGVzIGEgZGF0YXBsYW5lLCBidXQgbm90IGEgY29udHJvbGxlciBvYmplY3QuIFRoZSBjbGFzc2VzIGBQYWNrZXRPbmx5YCBhbmQgYFBhY2tldE9ubHlUYWdnZWRgIGluaGVyaXQgZnJvbSBgRGF0YVBsYW5lT25seWAgYW5kIHNlbmQgcGFja2V0cyBpbnRvIHRoZSBzd2l0Y2guCisKKyMjIE1lc3NhZ2VzCisKK1RoZSBPcGVuRmxvdyBwcm90b2NvbCBpcyByZXByZXNlbnRlZCBieSBhIGNvbGxlY3Rpb24gb2Ygb2JqZWN0cyBpbnNpZGUgdGhlIGBvZnRlc3QubWVzc2FnZWAgbW9kdWxlLiBJbiBnZW5lcmFsLCBlYWNoIG1lc3NhZ2UgaGFzIGl0cyBvd24gY2xhc3MuIEFsbCBtZXNzYWdlcyBoYXZlIGEgaGVhZGVyIG1lbWJlciBhbmQgZGF0YSBtZW1iZXJzIHNwZWNpZmljIHRvIHRoZSBtZXNzYWdlLiBDZXJ0YWluIHZhcmlhYmxlIGxlbmd0aCBkYXRhIGlzIHRyZWF0ZWQgc3BlY2lhbGx5IGFuZCBpcyBkZXNjcmliZWQgKFRCRCkuCisKK0hlcmUgYXJlIHNvbWUgZXhhbXBsZXM6CisKKyAgICBpbXBvcnQgb2Z0ZXN0Lm1lc3NhZ2UgYXMgbWVzc2FnZQorICAgIC4uLgorICAgIHJlcXVlc3QgPSBtZXNzYWdlLmVjaG9fcmVxdWVzdCgpCisKK2ByZXF1ZXN0YCBpcyBub3cgYW4gYGVjaG9fcmVxdWVzdGAgb2JqZWN0IGFuZCBjYW4gYmUgc2VudCB2aWEgYHNlbGYuY29udHJvbGxlcmAudHJhbnNhY3QgZm9yIGV4YW1wbGUuCisKKyAgICBtc2cgPSBtZXNzYWdlLnBhY2tldF9vdXQoKQorCitgbXNnYCBpcyBub3cgYSBwYWNrZXRfb3V0IG9iamVjdC4gYG1zZy5kYXRhYCBob2xkcyB0aGUgdmFyaWFibGUgbGVuZ3RoIHBhY2tldCBkYXRhLgorCisgICAgbXNnLmRhdGEgPSBzdHIoc29tZV9wYWNrZXRfZGF0YSkKKworVGhpcyBicmluZ3MgdXMgdG8gb25lIG9mIHRoZSBpbXBvcnRhbnQgdmFyaWFibGUgbGVuZ3RoIGRhdGEgbWVtYmVycywgdGhlIGFjdGlvbiBsaXN0LiBFYWNoIGFjdGlvbiB0eXBlIGhhcyBpdHMgb3duIGNsYXNzLiBUaGUgYWN0aW9uIGxpc3QgaXMgYWxzbyBhIGNsYXNzIHdpdGggYW4gYGFkZGAgbWV0aG9kIHdoaWNoIHRha2VzIGFuIGFjdGlvbiBvYmplY3QuCisKKyAgICBpbXBvcnQgb2Z0ZXN0LmFjdGlvbiBhcyBhY3Rpb24KKyAgICAuLi4KKyAgICBhY3QgPSBhY3Rpb24uYWN0aW9uX291dHB1dCgpICAgIyBDcmVhdGUgYSBuZXcgb3V0cHV0IGFjdGlvbiBvYmplY3QKKyAgICBhY3QucG9ydCA9IGVncmVzc19wb3J0ICAgICAgICAgIyBTZXQgdGhlIGFjdGlvbidzIHBhcmFtZXRlcihzKQorICAgIG1zZy5hY3Rpb25zLmFkZChhY3QpICAgICAgICAgICAjIFRoZSBwYWNrZXQgb3V0IG1lc3NhZ2UgaGFzIGFuIGFjdGlvbiBsaXN0IG1lbWJlcgorCitBbm90aGVyIGtleSBkYXRhIGNsYXNzIGlzIHRoZSBtYXRjaCBvYmplY3QuIFRCRDogRmlsbCB0aGlzIG91dC4KKworVEJEOiBBZGQgaW5mb3JtYXRpb24gYWJvdXQgc3RhdHMgb2JqZWN0cy4KKworIyMgUGFja2V0cworCitPRlRlc3QgdXNlcyBbU2NhcHldKGh0dHA6Ly93d3cuc2VjZGV2Lm9yZy9wcm9qZWN0cy9zY2FweS8pIGZvciBtYW5hZ2luZyBwYWNrZXQgZGF0YSwgYWx0aG91Z2ggeW91IG1heSBub3QgbmVlZCB0byB1c2UgaXQgZGlyZWN0bHkuIEluIHRoZSBleGFtcGxlIGJlbG93LCB3ZSB1c2UgdGhlIGZ1bmN0aW9uIGBzaW1wbGVfdGNwX3BhY2tldGAgZnJvbSBgdGVzdHV0aWxzLnB5YCB0byBnZW5lcmF0ZSBhIHBhY2tldC4gVGhlIHRoZSBwYXJzZSBmdW5jdGlvbiBgcGFja2V0X3RvX2Zsb3dfbWF0Y2hgIGlzIGNhbGxlZCB0byBnZW5lcmF0ZSBhIGZsb3cgbWF0Y2ggYmFzZWQgb24gdGhlIHBhY2tldC4KKworICAgIGZyb20gdGVzdHV0aWxzIGltcG9ydCAqCisgICAgaW1wb3J0IG9mdGVzdC5wYXJzZSBhcyBwYXJzZQorICAgIGltcG9ydCBvZnAKKyAgICAuLi4KKyAgICBwa3QgPSBzaW1wbGVfdGNwX3BhY2tldCgpCisgICAgbWF0Y2ggPSBwYXJzZS5wYWNrZXRfdG9fZmxvd19tYXRjaChwa3QpCisgICAgbWF0Y2gud2lsZGNhcmRzICY9IH5vZnAuT0ZQRldfSU5fUE9SVAorCitUaGlzIGludHJvZHVjZXMgdGhlIGxvdyBsZXZlbCBtb2R1bGUgYG9mcGAuIFRoaXMgcHJvdmlkZXMgdGhlIGJhc2UgZGVmaW5pdGlvbnMgZnJvbSB3aGljaCBPcGVuRmxvdyBtZXNzYWdlcyBhcmUgaW5oZXJpdGVkIGFuZCBiYXNpYyBPcGVuRmxvdyBkZWZpbmVzIHN1Y2ggYXMgYE9GUEZXX0lOX1BPUlRgLiBNb3N0IGVudW1zIGRlZmluZWQgaW4gYG9wZW5mbG93LmhgIGFyZSBhdmFpbGFibGUgaW4gdGhpcyBtb2R1bGUuCisKKy0tLQorCisjIFRpcHMgJiBUcmlja3MKKworIyMgTWFraW5nIFlvdXIgVGVzdHMgQ29uZmlndXJhYmxlCisKK0FzIGRlc2NyaWJlZCBpbiB0aGUgW1JFQURNRV0oUkVBRE1FLm1kI3Bhc3NpbmctcGFyYW1ldGVycy10by10ZXN0cyksIHlvdSBjYW4gdGVzdCBmb3IgdGhlc2UgcGFyYW1ldGVycyBieSBpbXBvcnRpbmcgYHRlc3R1dGlscy5weWAgYW5kIHVzaW5nIHRoZSBmdW5jdGlvbjoKKworICAgIG15X2tleTEgPSB0ZXN0dXRpbHMudGVzdF9wYXJhbV9nZXQoc2VsZi5jb25maWcsICdrZXkxJykKKworVGhlIGBjb25maWdgIHBhcmFtZXRlciBpcyB0aGUgZ2xvYmFsIGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlIGNvcGllZCBpbnRvIHRoZSBiYXNlIHRlc3RzIGNhc2VzIChhbmQgdXN1YWxseSBhdmFpbGFibGUgaW4gZWFjaCB0ZXN0IGZpbGUpLiBUaGUgcm91dGluZSByZXR1cm5zIGBOb25lYCBpZiB0aGUga2V5IHdhcyBub3QgYXNzaWduZWQgaW4gdGhlIGNvbW1hbmQgbGluZTsgb3RoZXJ3aXNlIGl0IHJldHVybnMgdGhlIHZhbHVlIGFzc2lnbmVkIChgMTdgIGluIHRoaXMgZXhhbXBsZSkuCisKK05vdGUgdGhhdCBhbnkgdGVzdCBtYXkgbG9vayBhdCB0aGVzZSBwYXJhbWV0ZXJzLCBzbyB1c2Ugc29tZSBjYXJlIGluIGNob29zaW5nIHlvdXIgcGFyYW1ldGVyIGtleXMuCisKKyMjIEFkZGluZyBTdXBwb3J0IGZvciBhIE5ldyBQbGF0Zm9ybQorCitBcyBkZXNjcmliZWQgaW4gdGhlIFtSRUFETUVdKFJFQURNRS5tZCNwbGF0Zm9ybXMpLCBPRlRlc3QgcHJvdmlkZXMgYSBtZXRob2QgZm9yIHNwZWNpZnlpbmcgaG93IHBhY2tldHMgc2hvdWxkIGJlIHNlbnQvcmVjZWl2ZWQgdG8vZnJvbSB0aGUgc3dpdGNoLiBUaGUgImNvbmZpZyBmaWxlcyIgdGhhdCBlbmFibGUgdGhpcyBhcmUga25vd24gYXMgInBsYXRmb3JtcyIuCisKK1lvdSBjYW4gYWRkIHlvdXIgb3duIHBsYXRmb3JtLCBzYXkgYGdwMTA0YCwgYnkgYWRkaW5nIGEgZmlsZSBgZ3AxMDQucHlgIHRvIHRoZQorYHBsYXRmb3Jtc2AgZGlyZWN0b3J5LiBUaGlzIGZpbGUgc2hvdWxkIGRlZmluZSB0aGUgZnVuY3Rpb24gYHBsYXRmb3JtX2NvbmZpZ191cGRhdGVgLiBUaGlzIGNhbiBiZSBlbmFibGVkIHVzaW5nIHRoZSBgLS1wbGF0Zm9ybT1ncDEwNGAgcGFyYW1ldGVyIG9uIHRoZSBjb21tYW5kIGxpbmUuIFlvdSBjYW4gYWxzbyB1c2UgdGhlIGAtLXBsYXRmb3JtLWRpcmAgb3B0aW9uIHRvIGNoYW5nZSB3aGljaCBkaXJlY3RvcnkgaXMgc2VhcmNoZWQuCisKK0lNUE9SVEFOVDogVGhlIGZpbGUgc2hvdWxkIGRlZmluZSBhIGZ1bmN0aW9uIGBwbGF0Zm9ybV9jb25maWdfdXBkYXRlYCB3aGljaCB0YWtlcyBhIGNvbmZpZ3VyYXRpb24gZGljdGlvbmFyeSBhcyBhbiBhcmd1bWVudCBhbmQgdXBkYXRlcyBpdCBmb3IgdGhlIGN1cnJlbnQgcnVuLiBJbiBwYXJ0aWN1bGFyLCBpdCBzaG91bGQgc2V0IHVwIGBjb25maWdbInBvcnRfbWFwIl1gIHdpdGggdGhlIHByb3BlciBtYXAgZnJvbSBPcGVuRmxvdyBwb3J0IG51bWJlcnMgdG8gT3BlbkZsb3cgaW50ZXJmYWNlIG5hbWVzLgorCisjIyBUcm91Ymxlc2hvb3RpbmcKKworTm9ybWFsbHksIGFsbCBkZWJ1ZyBvdXRwdXQgZ29lcyB0byB0aGUgZmlsZSBgb2Z0LmxvZ2AgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LiBZb3UgY2FuIGZvcmNlIHRoZSBvdXRwdXQgdG8gYXBwZWFyIG9uIHRoZSB0ZXJtaW5hbCAoYW5kIHNldCB0aGUgbW9zdCB2ZXJib3NlIGRlYnVnIGxldmVsKSB3aXRoIHRoZXNlIHBhcmFtZXRlcnMgYWRkZWQgdG8gdGhlIG9mdCBjb21tYW5kOgorCisgICAgLS12ZXJib3NlIC0tbG9nLWZpbGU9W3BhdGgvdG8vbG9nZmlsZV0KKworLS0tCmRpZmYgLS1naXQgYS9GYWJyaWMvRG9jL2NvbW1hbmQuc2ggYi9GYWJyaWMvRG9jL2NvbW1hbmQuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMzQzMjM5MgotLS0gL2Rldi9udWxsCisrKyBiL0ZhYnJpYy9Eb2MvY29tbWFuZC5zaApAQCAtMCwwICsxLDE4IEBACisKKyMgQ29weXJpZ2h0IDIwMTctcHJlc2VudCBPcGVuIE5ldHdvcmtpbmcgRm91bmRhdGlvbgorIworIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyMKKyMgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisjIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKworI3N1ZG8gLi9vZnQgLS12ZXJib3NlIC0tZGVmYXVsdC10aW1lb3V0PTYgLWkgMUBldGgxIC1pIDJAZXRoMiAtaSAzQGV0aDMgLS1kaXNhYmxlLWlwdjYgLS1zd2l0Y2gtaXA9MTkyLjE2OC4yLjIgLS1ob3N0PTE5Mi4xNjguMi40IC0tb2YtdmVyc2lvbj0xLjMgLS1wb3J0PTY2MzMgLS10ZXN0LWRpcj1hY2N0b24gLS1sb2ctZGlyPWxvZy1kaXIKK3N1ZG8gLi9vZnQgLS12ZXJib3NlIC0tZGVmYXVsdC10aW1lb3V0PTYgLWkgMUBldGgxIC1pIDJAZXRoMiAtaSAzQGV0aDMgLS1kaXNhYmxlLWlwdjYgLS1zd2l0Y2gtaXA9MTkyLjE2OC4yLjE5NyAtLWhvc3Q9MTkyLjE2OC4yLjQgLS1vZi12ZXJzaW9uPTEuMyAtLXBvcnQ9NjYzMyAtLXRlc3QtZGlyPWFjY3RvblVzZURwY3RsIC0tbG9nLWRpcj1sb2ctZGlyIHBoYXNlMQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0ZhYnJpYy9Eb2MvZG9jcy9EZXRhaWxlZF9UZXN0aW5nX01ldGhvZG9sb2d5LnR4dCBiL0ZhYnJpYy9Eb2MvZG9jcy9EZXRhaWxlZF9UZXN0aW5nX01ldGhvZG9sb2d5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDkyMmNjCi0tLSAvZGV2L251bGwKKysrIGIvRmFicmljL0RvYy9kb2NzL0RldGFpbGVkX1Rlc3RpbmdfTWV0aG9kb2xvZ3kudHh0CkBAIC0wLDAgKzEsMTgyMiBAQAorCQkJCQkJKioqKioqKioqKiogIENvbmZvcm1hbmNlIFRlc3Qtc3VpdGUgICAqKioqKioqKioqKioqKioqCisJCQkJCQlPRi1Td2l0Y2gtMS4wLjAtVGVzdENhc2VzIGRldGFpbGVkIHRlc3RpbmcgbWV0aG9kb2xvZ3kKKworCisKKworCisqKioqICAgICBPcGVuZmxvdyBwcm90b2NvbCBtZXNzYWdlcyAgICAgKioqKgorCisKKworMS4gRmVhdHVyZXMgUmVxdWVzdAorCitUZXN0IERlc2NyaXB0aW9uOiBDaGVjayBmZWF0dXJlcyByZXF1ZXN0IGlzIGltcGxlbWVudGVkCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpdGxlOiBGZWF0dXJlc1JlcXVlc3QKK1BvcnRzOiBJIChDb250cm9sIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBTZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczogCisKK2EpIFNlbmQgT0ZQVF9GRUFUVVJFU19SRVFVRVNUIGZyb20gY29udHJvbGxlci4KK2IpIFZlcmlmeSBPRlBUX0ZFQVRVUkVTX1JFUExZIGlzIHJlY2VpdmVkIHdpdGhvdXQgZXJyb3JzCisKKworCisyLiBDb25maWd1cmF0aW9uIHJlcXVlc3QKKworVGVzdCBEZXNjcmlwdGlvbjogQ2hlY2sgYmFzaWMgZ2V0IGNvbmZpZ3VyYXRpb24gcmVxdWVzdCBpcyBpbXBsZW1lbnRlZAorCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaXRsZTogQ29uZmlndXJhdGlvblJlcXVlc3QKK1BvcnRzOiBJIChDb250cm9sIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBTZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczoKKworYSkgU2VuZCBPRlBUX0dFVF9DT05GSUdfUkVRVUVTVAorYikgVmVyaWZ5IE9GUFRfR0VUX0NPTkZJR19SRVBMWSBpcyByZWNlaXZlZCB3aXRob3V0IGVycm9ycy4KKworCisKKzMuIE1vZGlmeSBTdGF0ZSAoQUREKQorCitUZXN0IERlc2NyaXB0aW9uOiBDaGVjayBiYXNpYyBGbG93IEFERCByZXF1ZXN0IGlzIGltcGxlbWVudGVkCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpdGxlOiBNb2RpZnlTdGF0ZUFkZAorUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIGRhdGFwbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gU2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisKK1Rlc3QgTm90ZXM6CisKK2EpIFNlbmQgT0ZQVF9GTE9XX01PRCwgY29tbWFuZCA9IE9GUEZDX0FERCAKK2IpIFNlbmQgb2ZwX3RhYmxlX3N0YXRzIHJlcXVlc3QgCitjKSBWZXJpZnkgdGhhdCBhY3RpdmVfY291bnQ9MSBpbiB0aGUgcmVwbHkKKworCisKKworNC4gTW9kaWZ5IFN0YXRlIChERUxFVEUpCisKK1Rlc3QgRGVzY3JpcHRpb246IENoZWNrIGJhc2ljIEZsb3cgRGVsZXRlIHJlcXVlc3QgaXMgaW1wbGVtZW50ZWQKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGl0bGU6IE1vZGlmeVN0YXRlRGVsZXRlCitQb3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgZGF0YXBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBTZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczoKKworYSkgU2VuZCBPRlBUX0ZMT1dfTU9ELCBjb21tYW5kID0gT0ZQRkNfQUREIAorYikgU2VuZCBvZnBfdGFibGVfc3RhdHMgcmVxdWVzdAorYykgVmVyaWZ5IHRoYXQgYWN0aXZlX2NvdW50PTEgaW4gdGhlIHJlcGx5CitkKSBTZW5kIE9GUFRfRkxPV19NT0QsIGNvbW1hbmQgPSBPRlBGQ19ERUxFVEUKK2UpIFNlbmQgb2ZwX3RhYmxlX3N0YXRzIHJlcXVlc3QKK2YpICBWZXJpZnkgYWN0aXZlIF9jb3VudD0wIGluIHRoZSByZXBseQorCisKKworNS4gTW9kaWZ5IFN0YXRlIChNT0RJRlkpCisKK1Rlc3QgRGVzY3JpcHRpb246IENoZWNrIGJhc2ljIEZsb3cgTW9kaWZ5IHJlcXVlc3QgaXMgaW1wbGVtZW50ZWQKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGl0bGU6IE1vZGlmeVN0YXRlTW9kaWZ5CitQb3J0czogMyAoMSBDb250cm9sIFBsYW5lIGFuZCAyIERhdGFwbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gU2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisKK1Rlc3QgTm90ZXM6CisKK2EpIFNlbmQgIE9GUFRfRkxPV19NT0QgLCBjb21tYW5kID0gT0ZQRkNfQURELCBhY3Rpb24gQQorYikgU2VuZCBvZnBfdGFibGVfc3RhdHMgcmVxdWVzdCwgVmVyaWZ5ICBhY3RpdmVfY291bnQ9MQorYykgU2VuZCBPRlBUX0ZMT1dfTU9EICwgY29tbWFuZCA9IE9GUEZDX01PRElGWSwgYWN0aW9uIEGSCitkKSBTZW5kIFRlc3QgUGFja2V0ICBtYXRjaGluZyB0aGUgZmxvdworZSkgVmVyaWZ5IHBhY2tldCBpbXBsZW1lbnRzIGFjdGlvbiBBkgorCisKKworNi4gUmVhZCBTdGF0ZQorCitUZXN0IERlc2NyaXB0aW9uOiBDaGVjayBiYXNpYyBSZWFkIFN0YXRlIGlzIGltcGxlbWVudGVkCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpdGxlOiBSZWFkU3RhdGUKK1BvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUsIDIgZGF0YXBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBTZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczoKKworYSkgU2VuZCAgT0ZQVF9GTE9XX01PRCwgY29tbWFuZCA9IE9GUEZDX0FERAorYikgQ3JlYXRlIGEgT0ZQQ19GTE9XX1NUQVRTIG1lc3NhZ2UgYW5kIHNlbmQgaXQKK2MpIFZlcmlmeSBzd2l0Y2ggcmVwbGllcyB3aXRob3V0IGVycm9ycworCisKKworNy4gU2VuZCBwYWNrZXQKKworVGVzdCBEZXNjcmlwdGlvbjogQ2hlY2sgYmFzaWMgU2VuZC1QYWNrZXQgaXMgaW1wbGVtZW50ZWQuIAorCQkgIFNlbmQtUGFja2V0OiBUaGVzZSBhcmUgdXNlZCBieSB0aGUgY29udHJvbGxlciB0byBzZW5kIHBhY2tldHMgb3V0IG9mIGEgc3BlY2lmaWVkIHBvcnQgb24gdGhlIHN3aXRjaC4KKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGl0bGU6ICBTZW5kUGFja2V0CitQb3J0czogNSAoMSBDb250cm9sIFBsYW5lLCA0IERhdGFwbGFuZSkgCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIFNldHVwCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworCitUZXN0IE5vdGVzOgorCithKSBTZW5kIE9GUFRfUEFDS0VUX09VVCBvdXQgbWVzc2FnZSBmcm9tIGNvbnRyb2xsZXIgdG8gc3dpdGNoIGZvciBldmVyeSBkYXRhcGxhbmUgcG9ydC4KK2IpIFZlcmlmeSB0aGUgcGFja2V0IGFwcGVhcnMgb24gdGhlIGVhY2ggZGF0YXBsYW5lIHBvcnQKK2MpIFZlcmlmeSBzZW50IHBhY2tldCBtYXRjaGVzIHRoZSByZWNlaXZlZCBwYWNrZXQKKworCisKKzguIEJhcnJpZXIgUmVxdWVzdCAKKworVGVzdCBEZXNjcmlwdGlvbjogVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGEgYmFzaWMgYmFycmllciByZXF1ZXN0IGRvZXMgbm90IGdlbmVyYXRlIGFuIGVycm9yLgorCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaXRsZTogQmFycmllclJlcXVlc3RSZXBseQorUG9ydHM6IEkgKENvbnRyb2wgUGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIFNldHVwCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworCitUZXN0IE5vdGVzOgorCithKSBTZW5kIE9GUFRfQkFSUklFUl9SRVFVRVNUCitjKSBWZXJpZnkgT0ZQVF9CQVJSSUVSX1JFUExZIGlzIHJlY2VpdmVkIG9uIHRoZSBjb250cm9sIHBsYW5lLgorCisKKworOS4gUGFja2V0IEluCisKK1Rlc3QgRGVzY3JpcHRpb246IENoZWNrIHBhY2tldF9pbiBpcyBpbXBsZW1lbnRlZC4gVGhpcyB0ZXN0IGp1c3QgY2hlY2tzIHRoYXQgbm9uIG1hdGNoZWQgZGF0YXBsYW5lIHBhY2tldHMgCisJCSAgZ2VuZXJhdGUgYSBwYWNrZXRfaW4KKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGl0bGU6IFBhY2tldEluCitQb3J0czogMiAoMSBDb250cm9sIFBsYW5lIGFuZCAxIERhdGFwbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gU2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisKK1Rlc3QgTm90ZXM6CisKK2EpIFNlbmQgYSBwYWNrZXQgdG8gZGF0YXBsYW5lIHBvcnQgLCB3aXRob3V0IGluc2VydGluZyBhIGZsb3cgZW50cnkKK2IpIFZlcmlmeSBhIE9GUFRfUEFDS0VUX0lOIGlzIGdlbmVyYXRlZCBvbiB0aGUgY29udHJvbCBwbGFuZQorCisKKworMTAuIEhlbGxvCisKK1Rlc3QgRGVzY3JpcHRpb246IFRoaXMgdGVzdCBjaGVja3MgZm9yIGJhc2ljIEhlbGxvIG1lc3NhZ2UgZ2VuZXJhdGlvbiB3aXRoIGNvcnJlY3QgdmVyc2lvbiBmaWVsZC4KKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGl0bGU6ICBIZWxsbworUG9ydHM6IDEgKENvbnRyb2wgUGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIFNldHVwCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworCitUZXN0IE5vdGVzOgorCithKSBTZW5kICBPRlBUX0hFTExPIGZyb20gY29udHJvbGxlciB0byBzd2l0Y2gKK2IpIFZlcmlmeSBzd2l0Y2ggYWxzbyBzZW5kcyBPRlBUX0hFTExPIG1lc3NhZ2UgaW4gcmVzcG9uc2UgCitjKSBWZXJpZnkgdmVyc2lvbiBmaWVsZCBpbiB0aGUgaGVsbG8gbWVzc2FnZSBpcyBzZXQgdG8gT3BlbmZsb3cgdmVyc2lvbiAxLjAuMAorCisKKworMTEuIEVjaG8KKworVGVzdCBEZXNjcmlwdGlvbjogVGhpcyB0ZXN0IGNoZWNrcyBmb3IgYmFzaWMgRWNobyBSZXBseSBtZXNzYWdlIGdlbmVyYXRpb24gd2l0aCBjb3JyZWN0IHZlcnNpb24gZmllbGQgd2l0aCAKKwkJICBzYW1lIHRyYW5zYWN0aW9uIGlkLgorCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaXRsZTogIEVjaG9XaXRob3V0Qm9keQorUG9ydHM6IDEgKENvbnRyb2wgUGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworCitUZXN0IE5vdGVzOgorCithKSBTZW5kIE9GUFRfRUNIT19SRVFVRVNUIGZyb20gdGhlIGNvbnRyb2xsZXIgc2lkZS4KK2IpIFZlcmlmeSBzd2l0Y2ggcmVzcG9uZHMgYmFjayB3aXRoIE9GUFRfRUNIT19SRVBMWSB3aXRoIHNhbWUgeGlkLgorYykgVmVyaWZ5IE9wZW5mbG93IHZlcnNpb24gaW4gaGVhZGVyIGlzIHNldCB0byBPcGVuZmxvdyB2ZXJzaW9uIDEuMC4wLgorCisKKworCisKKyoqKiogICAgIERldGFpbGVkIGNvbnRyb2xsZXIgdG8gc3dpdGNoIG1lc3NhZ2VzICAgICAqKioqCisKKworCisxLiBPdmVybGFwIGNoZWNraW5nCisKK1Rlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IGlmIG92ZXJsYXAgY2hlY2sgZmxhZyBpcyBzZXQgaW4gdGhlIGZsb3cgZW50cnkgYW5kIGFuIG92ZXJsYXBwaW5nIGZsb3cgaXMgCisJCSAgaW5zZXJ0ZWQgdGhlbiBhbiBlcnJvciBpcyBnZW5lcmF0ZWQgYW5kIHN3aXRjaCByZWZ1c2VzIGZsb3cgZW50cnkKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGl0bGU6ICBPdmVybGFwQ2hlY2tpbmcKK1BvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBkYXRhcGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworCitUZXN0LU5vdGVzOgorCithKSBHZW5lcmF0ZSBGbG93IEYxLS0+IFdpbGRjYXJkIEFsbCAKK2IpIFNlbmQgb2ZwX3RhYmxlX3N0YXRzIHJlcXVlc3QgLCB2ZXJpZnkgYWN0aXZlX2NvdW50PTEKK2MpIEdlbmVyYXRlIG92ZXJsYXBwaW5nIGZsb3cgRjIgLS0+IFdpbGRjYXJkIEFsbCBFeGNlcHQgSW5ncmVzcyBQb3J0ICggd2l0aCBmbGFnIE9GUEZGX0NIRUNLX09WRVJMQVAgc2V0KQorZCkgVmVyaWZ5IHRoYXQgc3dpdGNoIGdlbmVyYXRlcyBPRlBUX0VSUk9SIG1zZy4gIAorICAgVHlwZTogT0ZQRVRfRkxPV19NT0RfRkFJTEVEIGNvZGUgOiBPRlBGTUZDX09WRVJMQVAgCisKKworCisyLiBObyBvdmVybGFwIGNoZWNraW5nCisKK1Rlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IHdpdGhvdXQgb3ZlcmxhcCBjaGVjayBmbGFnIHNldCwgb3ZlcmxhcHBpbmcgZmxvd3MgY2FuIGJlIGNyZWF0ZWQuCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpdGxlOiAgTm9PdmVybGFwY2hlY2tpbmcKK1BvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUsIDIgRGF0YXBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczoKKworYSkgR2VuZXJhdGUgRmxvdyBGMS0tPiBXaWxkY2FyZCBBbGwuCitiKSBTZW5kIG9mcF90YWJsZV9zdGF0cyByZXF1ZXN0ICwgdmVyaWZ5IGFjdGl2ZV9jb3VudD0xCitlKSBHZW5lcmF0ZSBvdmVybGFwcGluZyBmbG93IEYyIC0tPiBXaWxkY2FyZCBBbGwgRXhjZXB0IEluZ3Jlc3MgUG9ydCAoIHdpdGhvdXQgZmxhZyBPRlBGRl9DSEVDS19PVkVSTEFQIHNldCkKK2MpIFNlbmQgYSBvZnBfdGFibGVfc3RhdHMgcmVxdWVzdCwgdmVyaWZ5IGFjdGl2ZV9jb3VudD0yCisKKworCiszLiBJZGVudGljYWwgZmxvd3MgCisKK1Rlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IGFkZGluZyB0d28gaWRlbnRpY2FsIGZsb3dzIG92ZXJ3cml0ZXMgdGhlIGV4aXN0aW5nIG9uZSBhbmQgY2xlYXJzIGNvdW50ZXJzCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpdGxlOiAgSWRlbnRpY2FsRmxvd3MKK1BvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUpLCAoMiBkYXRhcGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworCitUZXN0IE5vdGVzOgorCithKSBHZW5lcmF0ZSBGbG93IEYxLgorYikgU2VuZCBvZnBfdGFibGVfc3RhdHMgcmVxdWVzdCAsIHZlcmlmeSBhY3RpdmVfY291bnQ9MQorYikgSW5jcmVtZW50IGNvdW50ZXJzIChwYWNrZXRfY291bnQsIGJ5dGVfY291bnQpIGJ5IHNlbmRpbmcgYSBwYWNrZXQgbWF0Y2hpbmcgZmxvdyBGMS4KK0MpIFNlbmQgb2ZwX2Zsb3dfc3RhdHMgcmVxdWVzdC4gVmVyaWZ5IGZsb3cgY291bnRlcnM6IGJ5dGVfY291bnQgYW5kIHBhY2tldF9jb3VudCAKK2MpIENyZWF0ZSBpZGVudGljYWwgZmxvdyBGMgorZCkgU2VuZCBhIG9mcF90YWJsZV9zdGF0cyByZXF1ZXN0LCB2ZXJpZnkgYWN0aXZlX2NvdW50PTEKK2UpIFNlbmQgb2ZwX2Zsb3dfc3RhdHMgcmVxdWVzdC4gVmVyaWZ5IGZsb3cgY291bnRlcnM6IGJ5dGVfY291bnQgYW5kIHBhY2tldF9jb3VudCBhcmUgcmVzZXQKKworCisKKzQuIE5vIHRhYmxlIHRvIGFkZCAoV3JpdHRlbiBpbiBvZnRlc3SXTmVlZCB0byBhZGQgdG8gY29uZm9ybWFuY2UgVGVzdC1TdWl0ZXMpCisKKworCis1LiBOZXZlciB2YWxpZCBwb3J0IChUQkQpCisKKworCisKKzYuIEN1cnJlbnRseSBub3QgZXhpc3RpbmcgcG9ydCBWZXJzaW9uIEEgYW5kIEIgKFRCRCkKKworCisKKworNy4gRW1lcmdlbmN5IGZsb3cgd2l0aCB0aW1lb3V0IHZhbHVlcyAKKworVGVzdCBEZXNjcmlwdGlvbjogVGltZW91dCB2YWx1ZXMgYXJlIG5vdCBhbGxvd2VkIGZvciBlbWVyZ2VuY3kgZmxvd3MKKworVGVzdCBUaXRsZTogRW1lckZsb3dUaW1lb3V0CitUZXN0IG1vZGU6IEF1dG9tYXRlZAorUG9ydHM6IDMgKDEgY29udHJvbCBwbGFuZSwgMiBEYXRhcGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwIAorCisKK1Rlc3QgTm90ZXM6CisKK2EpICBHZW5lcmF0ZSBhIGZsb3cgRiB3aXRoIE9GUEZGX0VNRVJHIHNldCBpbiBmbGFnIGFuZCB0aW1lb3V0IHZhbHVlcyBhc3NpZ25lZC4KK2IpICBWZXJpZnkgc3dpdGNoIGdlbmVyYXRlcyBhbiBPRlBUX0VSUk9SIG1zZywgVHlwZTogT0ZQRVRfRkxPV19NT0RfRkFJTEVELCBDb2RlIE9GUEZNRkNfQkFEX0VNRVJHX1RJTUVPVVQKKworCisKKzguIE1pc3NpbmcgbW9kaWZ5IGFkZHMKKworVGVzdCBEZXNjcmlwdGlvbjogSWYgYSBtb2RpZnkgZG9lcyBub3QgbWF0Y2ggYW4gZXhpc3RpbmcgZmxvdywgdGhlIGZsb3cgZ2V0cyBhZGRlZC4KKworVGl0bGU6IE1pc3NpbmdNb2RpZnlBZGQKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitQb3J0czozICgxIGNvbnRyb2wgcGxhbmUsMiBEYXRhIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogQ29ubmVjdGlvbiBzZXR1cCwgQ2xlYXIgU3dpdGNoIFN0YXRlCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworCitUZXN0IE5vdGVzOgorCithKSBHZW5lcmF0ZSBhIGZsb3ctbW9kICwgY29tbWFuZCBPRlBDX01PRElGWSAoTm90ZTogVGhlcmUgc2hvdWxkIGJlIG5vIGZsb3dzIG1hdGNoaW5nIHRoaXMgZmxvd19tb2QgbW9kaWZ5IGNvbW1hbmQpCitiKSBTZW5kIGEgb2ZwX3RhYmxlX3N0YXRzIHJlcXVlc3QsIHZlcmlmeSBhY3RpdmVfY291bnQ9MQorCisKKworCis5LiBNb2RpZnkgY2hhbmdlcyBhY3Rpb24sIHByZXNlcnZlcyBjb3VudGVycworCitUZXN0IERlc2NyaXB0aW9uOiBBIG1vZGlmaWVkIGZsb3cgcHJlc2VydmVzIGNvdW50ZXJzCisKK1RpdGxlOiBNb2RpZnlBY3Rpb24KK1Rlc3QgbW9kZTogQXV0b21hdGVkCitQb3J0czogNCgxIGNvbnRyb2wgcGxhbmUsIDMgRGF0YXBsYW5lKQorSW5pdGlhbCBTdGF0ZTogQ29ubmVjdGlvbiBzZXR1cCwgQ2xlYXIgU3dpdGNoIFN0YXRlCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworCitUZXN0IE5vdGVzOgorCithKSBDcmVhdGUgYSBmbG93X21vZCBGLTEgd2l0aCBjb21tYW5kIE9GUENfQURELCBhY3Rpb24gQQorYikgU2VuZCBhIHRlc3QgUGFja2V0IG1hdGNoaW5nIHRoZSBmbG93CitjKSBTZW5kIGFuIG9mcF9mbG93X3N0YXRzIHJlcXVlc3QsIHZlcmlmeSBieXRlX2NvdW50IGFuZCBwYWNrZXRfY291bnQKK2UpIENyZWF0ZSBmbG93X21vZCB3aXRoIGNvbW1hbmQgT0ZQQ19NT0RJRlkgLGFjdGlvbiBBkiBhbmQgbW9kaWZ5IGFjdGlvbiBvZiBmbG93IEYtMQorZikgU2VuZCBhIG9mcF9mbG93X3N0YXRzIHJlcXVlc3QsIHZlcmlmeSBmbG93IGNvdW50ZXJzIGFyZSBwcmVzZXJ2ZWQKK2cpIFNlbmQgdGVzdCBwYWNrZXQsIHZlcmlmeSBpdCBpbXBsZW1lbnRzIGFjdGlvbiBBkgorCisKKworMTAuIFN0cmljdCBNb2RpZnkgY2hhbmdlcyBhY3Rpb24sIHByZXNlcnZlcyBjb3VudGVycworCitUZXN0IERlc2NyaXB0aW9uOiBTdHJpY3QgTW9kaWZ5IEZsb3cgYWxzbyBjaGFuZ2VzIGFjdGlvbiBwcmVzZXJ2ZXMgY291bnRlcnMKKworVGl0bGU6IFN0cmljdE1vZGlmeUFjdGlvbgorVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1BvcnRzOiA0KDEgY29udHJvbCBwbGFuZSwgMyBEYXRhcGxhbmUpCitJbml0aWFsIFN0YXRlOiBDb25uZWN0aW9uIHNldHVwLCBDbGVhciBTd2l0Y2ggU3RhdGUKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisKK1Rlc3QgTm90ZXM6CisKK2EpIENyZWF0ZSB0d28gb3ZlcmxhcHBpbmcgZmxvd3M6IEYgLS0+IE1hdGNoIG9uIGFsbCwgZXhjZXB0IG9uZSB3aWxkY2FyZGVkIChzcmMgYWRkcmVzcykuIEFjdGlvbiBBLiBQcmlvcml0eT0xMDAgCisgICBGkiAtLT4gTWF0Y2ggb24gaW5ncmVzc19wb3J0ID0gcG9ydCBbMF0sIHdpbGRjYXJkZWQgcmVzdC4gQWN0aW9uIEEuIFByaW9yaXR5PTEwCitiKSBTZW5kIGEgb2ZwX3RhYmxlX3N0YXRzIHJlcXVlc3QsIHZlcmlmeSBhY3RpdmVfY291bnQ9MgorYykgU2VuZCBQYWNrZXQgKGl0IHdvdWxkIGhhdmUgbWF0Y2hlZCBib3RoIHRoZSBmbG93cywgc2luY2UgdGhleSBhcmUgb3ZlcmxhcHBpbmcgZmxvd3MgYnV0IGl0IHdvdWxkIG1hdGNoIEZsb3ctRjEgYXMgaXQgaGFzIGhpZ2hlciBwcmlvcml0eS4pCitkKSBTZW5kIG9mcF9mbG93X3N0YXRzIHJlcXVlc3QgZm9yIEZsb3ctMSBhbmQgdmVyaWZ5IGNvdW50ZXJzIHBhY2tldF9jb3VudCBhbmQgYnl0ZV9jb3VudCAKK2UpIENyZWF0ZSBmbG93X21vZCAsY29tbWFuZCBPRlBDX1NUUklDVF9NT0RJRlksbWF0Y2ggb24gYWxsIGV4Y2VwdCBzcmMgYWRkcmVzcyAscHJpb3JpdHkgMTAwIGFjdGlvbiBBkgorZikgU2VuZCB0ZXN0IHBhY2tldCAsIHZlcmlmeSBhY3Rpb24gaXMgbW9kaWZpZWQKK2cpIFNlbmQgb2ZwX2Zsb3dfc3RhdHMgcmVxdWVzdCwgdmVyaWZ5IGNvdW50ZXJzIGFyZSBwcmVzZXJ2ZWQuCisKKworCisKKzExLiBEZWxldGUgbm9uIGV4aXN0aW5nIGZsb3cgCisKK1Rlc3QgRGVzY3JpcHRpb246IFJlcXVlc3QgZGVsZXRpb24gb2Ygbm9uLWV4aXN0aW5nIGZsb3cKKworVGl0bGU6IERlbGV0ZU5vbmV4aXN0aW5nRmxvdworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1BvcnRzOiAxKDEgY29udHJvbCBwbGFuZSkKK0luaXRpYWwgU3RhdGU6IENvbm5lY3Rpb24gc2V0dXAsIENsZWFyIFN3aXRjaCBTdGF0ZQorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczoKKworYSkgSXNzdWUgYSBkZWxldGUgY29tbWFuZCwgd2l0aCBubyBmbG93cyBpbnNlcnRlZAorYikgTWFrZSBzdXJlIG5vIGVycm9yIGlzIGdlbmVyYXRlZCBvbiB0aGUgY29udHJvbCBwbGFuZQorCisKKworMTIuIERlbGV0ZSBmbG93cyB3aXRoIGFuZCB3aXRob3V0IHJlbW92ZWQgbWVzc2FnZQorCitUZXN0IERlc2NyaXB0aW9uOiBDaGVjayBkZWxldGlvbiBvZiBmbG93cyBoYXBwZW5zIGFuZCBnZW5lcmF0ZXMgbWVzc2FnZXMgYXMgY29uZmlndXJlZC4gaS5lLiBpZiCRU2VuZCBGbG93IHJlbW92ZWQgbWVzc2FnZZJGbGFnIAorCSAgICAgICAgICBpcyBzZXQgaW4gdGhlIGZsb3cgZW50cnksIHRoZSBmbG93IGRlbGV0aW9uIG9mIHRoYXQgcmVzcGVjdGl2ZSBmbG93IHNob3VsZCBnZW5lcmF0ZSB0aGUgZmxvdyByZW1vdmVkIG1lc3NhZ2UsIAorCQkgIHZpY2UgdmVyc2EgYWxzbyBleGlzdHMgCisKK1Rlc3QgVGl0bGU6IFNlbmRGbG93UmVtCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorUG9ydHM6IDMgKDEgY29udHJvbCBwbGFuZSwgMiBEYXRhcGxhbmUpCitJbml0aWFsIFN0YXRlOiBDb25uZWN0aW9uIHNldHVwLCBEZWZhdWx0IChjbGVhciBzd2l0Y2ggc3RhdGUpCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworCitUZXN0IE5vdGVzOgorCithKSBHZW5lcmF0ZSBhIGZsb3cgRiB3aXRob3V0IE9GUEZGX1NFTkRfRkxPV19SRU0gZmxhZyBzZXQKK2IpIElzc3VlIGEgZGVsZXRlIGNvbW1hbmQgT0ZQRkNfREVMRVRFCitjKSBWZXJpZnkgdGhhdCBPRlBUX0ZMT1dfUkVNT1ZFRCBtZXNzYWdlIGlzIG5vdCBnZW5lcmF0ZWQuCitjKSBHZW5lcmF0ZSBhIGZsb3cgRpIgd2l0aCBPRlBGRl9TRU5EX0ZMT1dfUkVNIGZsYWcgc2V0CitkKSBJc3N1ZSBhIGRlbGV0ZSBjb21tYW5kIE9GUEZDX0RFTEVURQorZSkgVmVyaWZ5IHRoYXQgT0ZQVF9GTE9XX1JFTU9WRUQgbWVzc2FnZSBpcyBnZW5lcmF0ZWQKKworCisKKzEzLiBEZWxldGUgZW1lcmdlbmN5IGZsb3cgCisKK1Rlc3QgRGVzY3JpcHRpb246IERlbGV0ZSBlbWVyZ2VuY3kgZmxvdyBhbmQgdmVyaWZ5IG5vIG1lc3NhZ2UgaXMgZ2VuZXJhdGVkLkFuIGVtZXJnZW5jeSBmbG93IGRlbGV0aW9uIHdpbGwgbm90IGdlbmVyYXRlIAorCQkgIGZsb3ctcmVtb3ZlZCBtZXNzYWdlcyBldmVuIGlmIJFTZW5kIEZsb3cgcmVtb3ZlZCBtZXNzYWdlkiBmbGFnIHdhcyBzZXQgZHVyaW5nIHRoZSBlbWVyZ2VuY3kgZmxvdyBlbnRyeS4KKwkJICAKKworVGl0bGU6IERlbGV0ZUVtZXJGbG93CitUZXN0IG1vZGU6IEF1dG9tYXRlZAorUG9ydHM6IDMgKDEgY29udHJvbCBwbGFuZSwgMiBEYXRhcGxhbmUpCitJbml0aWFsIFN0YXRlOiBDb25uZWN0aW9uIHNldHVwLCBDbGVhciBTd2l0Y2ggU3RhdGUgKGRlZmF1bHQpIAorCisKK1Rlc3QtTm90ZXM6CisKK2EpIEluc2VydCBhIGZsb3cgd2l0aCBPRlBGRl9FTUVSRyBmbGFnIHNldC4KK2IpIERlbGV0ZSB0aGUgYWRkZWQgZmxvdyB3aXRoIE9GUEZGX1NFTkRfRkxPV19SRU0gZmxhZyBzZXQKK2MpIFRlc3Qgc3VjY2Vzc2Z1bCBpZiBubyBmbG93IHJlbW92ZWQgbWVzc2FnZSBpcyBnZW5lcmF0ZWQuCisKKworCisxNC4gRGVsZXRlIGFuZCB2ZXJpZnkgc3RyaWN0IGFuZCBub24tc3RyaWN0IAorCitUZXN0IERlc2NyaXB0aW9uOiBEZWxldGUgYW5kIHZlcmlmeSBzdHJpY3QgYW5kIG5vbi1zdHJpY3QgYmVoYXZpb3JzCisKK1RoaXMgdGVzdCBjb21wYXJlcyB0aGUgYmVoYXZpb3Igb2YgZGVsZXRlIHN0cmljdCBhbmQgbm9uLXN0cmljdC4KK1RpdGxlOiBTdHJpY3RWc05vbnN0cmljdAorVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1BvcnRzOiAzICgxIGNvbnRyb2wgcGxhbmUsIDIgZGF0YXBsYW5lKQorSW5pdGlhbCBTdGF0ZTogQ29ubmVjdGlvbiBzZXR1cCwgQ2xlYXIgU3dpdGNoIFN0YXRlCisKKworVGVzdC1Ob3RlczoKKworYSkgSW5zZXJ0IEZsb3cgRiB3aXRoIGFuIGV4YWN0IG1hdGNoLiAKK2IpIElzc3VlIE5vbi1zdHJpY3QgRGVsZXRlIGNvbW1hbmQsIHZlcmlmeSBGIGdldHMgZGVsZXRlZC4gCitjKSBJbnNlcnQgRiB3aXRoIGFuIGV4YWN0IE1hdGNoIAorZCkgSXNzdWUgU3RyaWN0IERlbGV0ZSBDb21tYW5kLCB2ZXJpZnkgRiBnZXRzIGRlbGV0ZWQuCitlKSBJbnNlcnQgRmxvdyBUIHdpdGggbWF0Y2ggb24gYWxsLCBleGNlcHQgb25lIHdpbGRjYXJkZWQgKHNheSBzcmMgYWRkcmVzcykuICAKK2YpIEluc2VydCBhbm90aGVyIGZsb3cgVCcgd2l0aCBtYXRjaCBvbiBpbmdyZXNzX3BvcnQsIHdpbGRjYXJkZWQgcmVzdC4gIAorZykgSXNzdWUgTm9uLXN0cmljdCBEZWxldGUgKCBtYXRjaCBvbiBpbmdyZXNzX3BvcnQpLiBWZXJpZnkgVCtUJyBnZXRzIGRlbGV0ZWQuIAoraCkgSW5zZXJ0IFQgYW5kIFQnIGFnYWluLiBJc3N1ZSBTdHJpY3QgRGVsZXRlIChtYXRjaCBvbiBpbmdyZXNzIHBvcnQpLCB2ZXJpZnkgb25seSBUJyBnZXRzIGRlbGV0ZWQKK2kpIEluc2VydCBULCBhZGQgUHJpb3JpdHkgUCAoc2F5IDEwMCkgCitqKSBJbnNlcnQgVCcgYWRkIHByaW9yaXR5ICgyMDApLiAKK2spIEluc2VydCBUJyBhZ2FpbiBhZGQgcHJpb3JpdHkgMzAwIC0tPiBUlAorbCkgSXNzdWUgTm9uLVN0cmljdCBEZWxldGUgKG1hdGNoIG9uIGluZ3Jlc3MgcG9ydCkuIFZlcmlmeSBUK1SSK1SSkiBnZXRzIGRlbGV0ZWQuIAorbSkgSW5zZXJ0IFQsIFSSLCBUkpIgYWdhaW4sIElzc3VlIFN0cmljdCBEZWxldGUgKG1hdGNoIG9uIGluZ3Jlc3NfcG9ydCkgd2l0aCBwcmlvcml0eSA9IDIwMC4gVmVyaWZ5IG9ubHkgVJIgZ2V0cyBkZWxldGVkCisKKworCisxNS4gRGVsZXRlIGZsb3dzIHdpdGggY29uc3RyYWludCBvdXRfcG9ydAorCitUZXN0IERlc2NyaXB0aW9uOiBEZWxldGUgZmxvd3MgZmlsdGVyZWQgYnkgYWN0aW9uIG91dHB1dC5ERUxFVEUgYW5kIERFTEVURSBTVFJJQ1QgY29tbWFuZHMgY2FuIGJlIG9wdGlvbmFsbHkgZmlsdGVyZWQgYnkgb3V0cHV0IHBvcnQuCisJCSAgSWYgdGhlIG91dF9wb3J0IGZpZWxkIGNvbnRhaW5zIGEgdmFsdWUgb3RoZXIgdGhhbiBPRlBQX05PTkUsIGl0IGludHJvZHVjZXMgYSBjb25zdHJhaW50IHdoZW4gbWF0Y2hpbmcuIAorCQkgIFRoaXMgY29uc3RyYWludCBpcyB0aGF0IHRoZSBydWxlIG11c3QgY29udGFpbiBhbiBvdXRwdXQgYWN0aW9uIGRpcmVjdGVkIGF0IHRoYXQgcG9ydC4KKworVGl0bGU6IE91dHBvcnQxCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorUG9ydHM6IDMgKDEgY29udHJvbCBwbGFuZSwgMiBEYXRhcGxhbmVzKQorSW5pdGlhbCBTdGF0ZTogQ29ubmVjdGlvbiBzZXR1cCwgQ2xlYXIgU3dpdGNoIFN0YXRlCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworCitUZXN0LU5vdGVzOgorCithKSBJbnNlcnQgYSBmbG93IEYgIHdpdGggb3V0cHV0IGFjdGlvbiA9IHBvcnQgeCAKK2IpIFNlbmQgYSBkZWxldGUgY29tbWFuZCBtYXRjaGluZyBmbG93IEYgLGJ1dCAgb3V0X3BvcnQgPXBvcnQgeQorYykgU2VuZCBhIHRhYmxlX3N0YXRzIHJlcXVlc3QgLCB2ZXJpZnkgbm8gZmxvdyBnZXRzIGRlbGV0ZWQgaS5lLiBhY3RpdmVfY291bnQ9MQorZCkgU2VuZCBhIGRlbGV0ZSBjb21tYW5kIG1hdGNoaW5nIGZsb3cgRiAsb3V0cG9ydCA9IHBvcnQgeAorZSkgU2VuZCBhIHRhYmxlX3N0YXRzIHJlcXVlc3QsIHZlcmlmeSBmbG93IEYgZ2V0cyBkZWxldGVkLgorCisKKworMTYuIEFkZCwgbW9kaWZ5IGZsb3dzIHdpdGggY29uc3RyYWludCBvdXRwdXQKKworVGVzdCBEZXNjcmlwdGlvbjogQWRkLCBtb2RpZnkgZmxvd3Mgd2l0aCBvdXRwb3J0IHNldC4gVGhpcyBmaWVsZCBpcyBpZ25vcmVkIGJ5IEFERCwgTU9ESUZZLCBhbmQgTU9ESUZZIFNUUklDVCBtZXNzYWdlcy4KKworVGl0bGU6IE91dHBvcnQyCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorUG9ydHM6IDQgKDEgY29udHJvbCBwbGFuZSwgMyBEYXRhIHBsYW5lcykKK0luaXRpYWwgU3RhdGU6IENvbm5lY3Rpb24gc2V0dXAsIENsZWFyIFN3aXRjaCBTdGF0ZQorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKK1Rlc3QtTm90ZXM6CisKK2EpIEluc2VydCBhIGZsb3cgRiB3aXRoIGFjdGlvbiBBIChvdXRwdXQgLS0+IHBvcnQgeCkgLCBidXQgb3V0X3BvcnQgZmllbGQgaW4gdGhlIGZsb3cgbW9kIHNldCBhcyBwb3J0IHkKK2IpIFNlbmQgVGFibGVfU3RhdHNfUmVxdWVzdCwgVmVyaWZ5IEZsb3cgZ2V0cyBpbnNlcnRlZC4gKCBGbG93IGFkZCBpZ25vcmVzIG91dF9wb3J0IGZpZWxkKQorYykgTW9kaWZ5IHRoZSBhY3Rpb24gaW4gZmxvdyBGICwgYWN0aW9uIEGSICggb3V0cHV0IC0tPnBvcnQgeiApLCBidXQgb3V0X3BvcnQgZmllbGQgaW4gdGhlIGZsb3cgbW9kIHNldCBhcyBwb3J0IHkKK2QpIFNlbmQgdGVzdCBwYWNrZXQgbWF0Y2hpbmcgdGhlIGZsb3cgRiAKK2UpIFZlcmlmeSBwYWNrZXQgaW1wbGVtZW50cyBhY3Rpb24gQZIgKGZsb3cgbW9kaWZ5IGlnbm9yZXMgb3V0X3BvcnQgZmllbGQpCisKKworCisxNy4gVmVyaWZ5IHRoYXQgaWRsZSB0aW1lb3V0IGlzIGltcGxlbWVudGVkCisKK1Rlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IGlkbGUgdGltZW91dCBpcyBpbXBsZW1lbnRlZAorCitUaXRsZTogSWRsZVRpbWVvdXQKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitQb3J0czogMyAoMSBjb250cm9sIHBsYW5lLCAyIERhdGFwbGFuZXMpCitJbml0aWFsIFN0YXRlOiBDb25uZWN0aW9uIHNldHVwLCBDbGVhciBTd2l0Y2ggU3RhdGUKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisKK1Rlc3QtTm90ZXM6CisKK2EpIEFkZCBhIGZsb3cgd2l0aCBpZGxlIHRpbWVvdXQgc2V0IGFuZCB3aXRoIE9GUFBfU0VORF9GTE9XX1JFTSBiaXQgc2V0CitiKSBWZXJpZnkgZmxvdyByZW1vdmVkIG1lc3NhZ2UgaXMgcmVjZWl2ZWQuCitjKSBWZXJpZnkgZmxvdyByZW1vdmVkIHJlYXNvbiB3YXMgaWRsZV90aW1lb3V0CitkKSBWZXJpZnkgdGhlIGR1cmF0aW9uX3NlYyBmaWVsZCBpcyAxIHNlYyAKKworCisKKzE4LiBWZXJpZnkgdGhhdCBoYXJkIHRpbWVvdXQgaXMgaW1wbGVtZW50ZWQKKworVGVzdCBEZXNjcmlwdGlvbjogVmVyaWZ5IHRoYXQgaGFyZCB0aW1lb3V0IGlzIGltcGxlbWVudGVkCisKK1RpdGxlOiBIYXJkVGltZW91dAorVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1BvcnRzOiAzICgxIGNvbnRyb2wgcGxhbmUsIDIgRGF0YXBsYW5lcykKK0luaXRpYWwgU3RhdGU6IENvbm5lY3Rpb24gc2V0dXAsIENsZWFyIFN3aXRjaCBTdGF0ZSAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisKK1Rlc3QtTm90ZXM6CisKK2EpIEFkZCBhIGZsb3cgd2l0aCBoYXJkIHRpbWVvdXQgPTEgc2V0IGFuZCB3aXRoIE9GUFBfU0VORF9GTE9XX1JFTSBiaXQgc2V0CitiKSBWZXJpZnkgZmxvdyByZW1vdmVkIG1lc3NhZ2UgaXMgcmVjZWl2ZWQuCitjKSBWZXJpZnkgZmxvdyByZW1vdmVkIHJlYXNvbiB3YXMgaGFyZF90aW1lb3V0CitkKSBWZXJpZnkgdGhlIGR1cmF0aW9uX3NlYyBmaWVsZCBpcyAxIHNlYyAKKworCisKKzE5LiBWZXJpZnkgdGhhdCBtZXNzYWdlcyBhcmUgZ2VuZXJhdGVkIGFzIGV4cGVjdGVkCisKK1Rlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IEZsb3cgcmVtb3ZlZCBtZXNzYWdlcyBhcmUgZ2VuZXJhdGVkIGFzIGV4cGVjdGVkCisJICAgICAgICAgIC8qIFNpbmNlIJNmbG93IHJlbW92ZWQgbWVzc2FnZXMgYmVpbmcgZ2VuZXJhdGVkIHdoZW4gZmxhZyBpcyBzZXSUIGlzIGFscmVhZHkgdGVzdGVkIGluIHRoZSBhYm92ZSB0ZXN0cyAKKyAgICAgICAgICAgICAgICAgIFNvIGhlcmUsIHdlIHRlc3QgdGhlIHZpY2UtdmVyc2EgY29uZGl0aW9uLiovCisKK1RpdGxlOiBGbG93VGltZW91dAorVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1BvcnRzOiAzICgxY29udHJvbCBwbGFuZSwgMWRhdGFwbGFuZSkKK0luaXRpYWwgU3RhdGU6IENvbm5lY3Rpb24gc2V0dXAsIENsZWFyIFN3aXRjaCBTdGF0ZSAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisKK1Rlc3QtTm90ZXM6CisKK2EpICBHZW5lcmF0ZSBhbmQgaW5zdGFsbCBhIGZsb3cgd2l0aCBpZGxlX3RpbWVvdXQgPSAxIHNldCBubyBPRlBGRl9TRU5EX0ZMT1dfUkVNIGZsYWcgc2V0LgorYikgIFZlcmlmeSBubyBmbG93IHJlbW92ZWQgbWVzc2FnZSBpcyByZWNlaXZlZC4KK2MpICBTZW5kIHRhYmxlX3N0YXRzX3JlcXVlc3QgbWVzc2FnZSBhbmQgdmVyaWZ5IGFjdGl2ZV9jb3VudD0wIAorCisKKworCisKKyoqKiAgIEFjdGlvbnMgICAqKioKKworCisKKzEuIE5vIEFjdGlvbiBkcm9wcyBwYWNrZXQgCisKK1Rlc3QgRGVzY3JpcHRpb246IElmIG5vIGZvcndhcmQgYWN0aW9ucyBhcmUgcHJlc2VudCwgdGhlIHBhY2tldCBpcyBkcm9wcGVkLiAKKwkJCitSZXF1aXJlZCBBY3Rpb246IERyb3AuIAorQSBmbG93LWVudHJ5IHdpdGggbm8gc3BlY2lmaWVkIGFjdGlvbiBpbmRpY2F0ZXMgdGhhdCBhbGwgbWF0Y2hpbmcgcGFja2V0cyBzaG91bGQgYmUgZHJvcHBlZC4gCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaXRsZTogIE5vQWN0aW9uCitQb3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YXBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczoKKworYSkgU2VuZCBGbG93IG1vZCBtZXNzYWdlIHdpdGhvdXQgYW55IGFjdGlvbiBzcGVjaWZpZWQKK2IpIFNlbmQgTiBwYWNrZXRzIG1hdGNoaW5nIHRoZSBmbG93IAorYykgVmVyaWZ5IHBhY2tldHMgYXJlIG5vdCByZWNlaXZlZCBvbiBhbnkgb2YgdGhlIGRhdGFwbGFuZSBwb3J0cyAKK2QpIFZlcmlmeSBwYWNrZXRzIGFyZSBub3QgZXZlbiBzZW50IHRvIHRoZSBjb250cm9sbGVyCisKKworCisyLiAgR2V0IHN1cHBvcnRlZCBhY3Rpb25zIGZyb20gc3dpdGNoCisKK1Rlc3QgRGVzY3JpcHRpb246IEdldCB0aGUgc3VwcG9ydGVkIGFjdGlvbnMgZnJvbSBzd2l0Y2ggYW5kIG1ha2Ugc2FuaXR5IGNoZWNrcy4KKwkJICAvKldoZW4gY29ubmVjdGluZyB0byB0aGUgY29udHJvbGxlciwgYSBzd2l0Y2ggaW5kaWNhdGUgd2hpY2ggb2YgdGhlIJNPcHRpb25hbCBBY3Rpb25zlCBpdCBzdXBwb3J0cyovCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpdGxlOiAgQW5ub3VuY2VtZW50CitQb3J0czogMSAoQ29udHJvbCBQbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorICAgICAgIAorCitUZXN0IE5vdGVzOiAKKworYSkgU2VuZCBmZWF0dXJlc19yZXF1ZXN0IC4KK2IpIFZlcmlmeSByZXNwb25zZSBpcyBPRlBUX0ZFQVRVUkVTX1JFUExZCitjKSBWZXJpZnkgcmVwbHkgaGFzIHN1cHBvcnRlZCBhY3Rpb24gbGlzdCBzcGVjaWZpZWQKKworCisKKzMuIEZvcndhcmQgQWxsCisKK1Rlc3QgRGVzY3JpcHRpb246IFBhY2tldCBpcyBzZW50IHRvIGFsbCBkYXRhcGxhbmUgcG9ydHMgZXhjZXB0IGluZ3Jlc3MgcG9ydCB3aGVuIG91dHB1dCBhY3Rpb24ucG9ydCA9IE9GUFBfQUxMCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpdGxlOiAgRm9yd2FyZEFsbAorUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisgICAgICAgCitUZXN0IE5vdGVzOiAKKworYSkgSW5zdGFsbCBhIGZsb3cgd2l0aCBvdXRwdXQgYWN0aW9uLnBvcnQgPSBPRlBQX0FMTC4KK2IpIFZlcmlmeSBwYWNrZXRzIGFyZSBmb3J3YXJkZWQgdG8gYWxsIHBvcnRzIGV4Y2VwdCBpbmdyZXNzIHBvcnQuCisKKworCis0LiBGb3J3YXJkIENvbnRyb2xsZXIgCisKK1Rlc3QgRGVzY3JpcHRpb246IFBhY2tldCBpcyBzZW50IHRvIGNvbnRyb2xsZXIgb3V0cHV0LnBvcnQgPSBPRlBQX0NPTlRST0xMRVIKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGl0bGU6ICBGb3J3YXJkQ29udHJvbGxlcgorUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisgICAgICAgCitUZXN0IE5vdGVzOiAKKworYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIGFjdGlvbiBvdXRwdXQgcG9ydCA9IE9GUFBfQ09OVFJPTExFUgorYikgU2VuZCBwYWNrZXRzIG1hdGNoaW5nIHRoZSBmbG93CitjKSBWZXJpZnkgcGFja2V0IHJlY2VpdmVkIG9uIHRoZSBjb250cm9sIHBsYW5lIGFzIGEgcGFja2V0X2luIG1lc3NhZ2UKKworCisKKzUuIEZvcndhcmQgTG9jYWwgKFRCRCCWIFZlcmlmaWNhdGlvbiBvZiBwYWNrZXQgYmVpbmcgcmVjZWl2ZWQgYXQgbG9jYWwgbmV0d29ya2luZyBzdGFjaykKKworVGVzdCBEZXNjcmlwdGlvbjogUGFja2V0IGlzIHNlbnQgdG8gc3dpdGNoknMgbG9jYWwgbmV0d29ya2luZyBzdGFjayBpZiBvdXRwdXQucG9ydCA9IE9GUFBfTE9DQUwKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGl0bGU6ICBGb3J3YXJkTG9jYWwKK1BvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhcGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworICAgICAgIAorVGVzdCBOb3RlczogCisKK2EpIEluc2VydCBhIGZsb3cgd2l0aCBhY3Rpb24gb3V0cHV0IHBvcnQgPSBPRlBQX0xPQ0FMCitiKSBTZW5kIHBhY2tldHMgbWF0Y2hpbmcgdGhlIGZsb3cKK2MpIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgaW4gdGhlIHN3aXRjaJJzIGxvY2FsIG5ldHdvcmtpbmcgc3RhY2suCisKKworCis2LiBGb3J3YXJkIFRhYmxlCisKK1Rlc3QgRGVzY3JpcHRpb246IFBlcmZvcm0gYWN0aW9ucyBpbiBmbG93IHRhYmxlLiBPbmx5IGZvciBwYWNrZXQtb3V0IG1lc3NhZ2VzLgorCQkgIC8qSWYgdGhlIG91dHB1dCBhY3Rpb24ucG9ydCBpbiB0aGUgcGFja2V0b3V0IG1lc3NhZ2UgPSBPRlAuVEFCTEUsIHRoZW4gdGhlIHBhY2tldCBpbXBsZW1lbnRzIHRoZSBhY3Rpb24gCisJCSAgc3BlY2lmaWVkIGluIHRoZSBtYXRjaGluZyBmbG93IG9mIHRoZSBGTE9XLVRBQkxFKi8KKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGl0bGU6ICBGb3J3YXJkVGFibGUKK1BvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhcGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworVGVzdCBOb3RlczogCisKK2EpIEluc2VydCBhIGZsb3cgRiB3aXRoIGFjdGlvbiBvdXRwdXQucG9ydCA9IGVncmVzc19wb3J0CitiKSBTZW5kIGEgT0ZQVF9QQUNLRVRfT1VUIG1lc3NhZ2Ugd2l0aCBvdXQgcG9ydD1PRlBQX1RBQkxFIG1hdGNoaW5nIGZsb3cgRiAKK2MpIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgb24gZWdyZXNzX3BvcnQgKGkuZSBwYWNrZXRvdXQgbWVzc2FnZSBpbXBsZW1lbnRlZCB0aGUgYWN0aW9uIHNwZWNpZmllZCBpbiB0aGUgbWF0Y2hpbmcgZmxvdyBvZiB0aGUgVGFibGUpCisKKworCis3LiBGb3J3YXJkIEluIFBvcnQKKworVGVzdCBEZXNjcmlwdGlvbjogUGFja2V0IGlzIHNlbnQgdG8gaW5wdXQgcG9ydCBpZiBvdXRwdXQucG9ydCA9IE9GUFBfSU5QT1JUCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpdGxlOiAgRm9yd2FyZElucG9ydAorUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCitUZXN0IE5vdGVzOiAKKworYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIGFjdGlvbiBvdXRwdXQgcG9ydCA9IE9GUFBfSU5QT1JUCitiKSBTZW5kIHBhY2tldHMgbWF0Y2hpbmcgdGhlIGZsb3cKK2MpIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgb24gYWxsIGRhdGFwbGFuZSBwb3J0cyBleGNlcHQgZm9yIGlucHV0IHBvcnQKKworCisKKzguIEZvcndhcmQgRmxvb2QKKworVGVzdCBEZXNjcmlwdGlvbjpGbG9vZCB0aGUgcGFja2V0IGFsb25nIHRoZSBtaW5pbXVtIHNwYW5uaW5nIHRyZWUsIG5vdCBpbmNsdWRpbmcgdGhlIGluY29taW5nIGludGVyZmFjZS4gCisJCSBQYWNrZXQgaXMgc2VudCBhbGwgdGhlIGRhdGFwbGFuZSBwb3J0cyBleGNlcHQgdGhlIGlucHV0IHBvcnQgaWYgb3V0cHV0LnBvcnQgPSBPRlBQX0ZMT09ECisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpdGxlOiAgRm9yd2FyZF9GbG9vZAorUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE9wdGlvbmFsCisKK1Rlc3QgTm90ZXM6IAorCithKSBJbnNlcnQgYSBmbG93IHdpdGggYWN0aW9uIG91dHB1dCBwb3J0ID0gT0ZQUF9GTE9PRAorYikgU2VuZCBwYWNrZXRzIG1hdGNoaW5nIHRoZSBmbG93CitjKSBWZXJpZnkgcGFja2V0IHJlY2VpdmVkIG9uIGFsbCBkYXRhcGxhbmUgcG9ydHMgZXhjZXB0IGZvciBpbnB1dCBwb3J0CisKKworCis5LiBNdWx0aXBsZSBQb3J0cyAtLSBUQkQKKworCisKKworMTAuIEZvcndhcmQgRW5xdWV1ZSAtLS0gVEJECisKKworCisKKzExLiBTZXQgVkxBTiBJZAorCitUZXN0IERlc2NyaXB0aW9uOiBBdHRhY2ggVkxBTiBJRCB0byB1bnRhZ2dlZCBwYWNrZXQuCisgICAgICAgICAgICAgICAgICBJZiBubyBWTEFOIGlzIHByZXNlbnQsIGEgbmV3IGhlYWRlciBpcyBhZGRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgVkxBTiBJRCBhbmQgcHJpb3JpdHkgb2YgemVyby4KKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGl0bGU6ICBBZGRWbGFuSWQKK1BvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhcGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBPcHRpb25hbAorCisgICAgICAgCitUZXN0IE5vdGVzOiAKKworYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIGFjdGlvbiA9IE9GUEFUX1NFVF9WTEFOX1ZJRCAsIHZsYW5fdmlkID0geCAKK2IpIFNlbmQgcGFja2V0IChsZW5ndGggPSAxMDAgYnl0ZXMpIG1hdGNoaW5nIHRoZSBmbG93CitiKSAgIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgaGFzIHZsYW4gaWQgYWRkZWQgdG8gaXQuIChJLmUgbGVuZ3RoIG9mIHBhY2tldCB3aXRoIHZpZCBpcyAxMDQgYnl0ZXMsIGRsX3ZsYW5fZW5hYmxlID0gVHJ1ZSwgZGxfdmxhbj0geCwgZGxfdmxhbl9wY3A9MCkgIAorICAgCisKKworMTIuIE1vZGlmeSBWTEFOIElkCisKK1Rlc3QgRGVzY3JpcHRpb246IE1vZGlmaWVzIFZsYW4gVGFnIGZvciBhIHRhZ2dlZCBwYWNrZXQKKwkJICBJZiBhIFZMQU4gaGVhZGVyIGFscmVhZHkgZXhpc3RzLCB0aGUgVkxBTiBJRCBpcyByZXBsYWNlZCB3aXRoIHRoZSBzcGVjaWZpZWQgdmFsdWUKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGl0bGU6ICBNb2RpZnlWbGFuSWQKK1BvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhcGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBPcHRpb25hbAorCisKK1Rlc3QgTm90ZXM6IAorYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIGFjdGlvbiA9IE9GUEFUX1NFVF9WTEFOX1ZJRCAsIHZsYW5fdmlkID0geCAKK2IpICAgU2VuZCBwYWNrZXQgKGxlbmd0aCA9IDEwMCBieXRlcykgbWF0Y2hpbmcgdGhlIGZsb3cKK2MpICAgVmVyaWZ5IHBhY2tldCByZWNlaXZlZCBoYXMgdmxhbiBpZCByZXdyaXR0ZW4uIChJLmUgbGVuZ3RoIG9mIDEwNCBieXRlcywgZGxfdmxhbl9lbmFibGUgPSBUcnVlLCBkbF92bGFuPXgpICAKKworCisKKzEzLiBBZGQgVkxBTiBQcmlvcml0eSB0byBhbiB1bnRhZ2dlZCBwYWNrZXQKKworVGVzdCBEZXNjcmlwdGlvbjogQXR0YWNoIFZMQU4gcHJpb3JpdHkgdG8gYW4gdW50YWdnZWQgcGFja2V0LgorCQkgIFNpbmNlLCBubyBWTEFOIElEIGlzIHByZXNlbnQ7IGEgbmV3IGhlYWRlciBpcyBhZGRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgcHJpb3JpdHkgYW5kIGEgVkxBTiBJRCBvZiB6ZXJvLlwKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGl0bGU6ICBWbGFuUHJpbzEKK1BvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhcGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBPcHRpb25hbAorCisgICAgICAgCitUZXN0IE5vdGVzOiAKKworYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIGFjdGlvbiA9IE9GUEFUX1NFVF9WTEFOX1BDUCAsIGRsX3ZsYW5fcGNwID14CitiKSBTZW5kIHVudGFnZ2VkIHBhY2tldCBtYXRjaGluZyB0aGUgZmxvdyAgCitjKSBWZXJpZnkgcGFja2V0IHJlY2VpdmVkIGhhcyB2bGFuIHByaW9yaXR5IGFkZGVkIHRvIGl0IGFsb25nIHdpdGggYSB2aWQgdmFsdWUgb2YgemVybyBhZGRlZCBieSBkZWZhdWx0ICAgKGRsX3ZsYW5fZW5hYmxlICwgZGxfdmxhbiA9IDAgLCBkbF92bGFuX3BjcCA9eCApCisKKworCisxNC4gUmV3cml0ZSBleGlzdGluZyBWTEFOIHByaW9yaXR5CisKK1Rlc3QgRGVzY3JpcHRpb246IE1vZGlmeSBWTEFOIHByaW9yaXR5IGZvciBhIHRhZ2dlZCBwYWNrZXQuCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpdGxlOiAgVmxhblByaW8yCitQb3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YXBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogT3B0aW9uYWwKKworICAgICAgIAorVGVzdCBOb3RlczogCisKK2EpIEluc2VydCBhIGZsb3cgd2l0aCBhY3Rpb24gPSBPRlBBVF9TRVRfVkxBTl9QQ1AgLCBkbF92bGFuX3BjcCA9bmV3X3ZsYW5fcGNwCitiKSBTZW5kIHRhZ2dlZCBwYWNrZXQgbWF0Y2hpbmcgdGhlIGZsb3cgIChkbF92bGFuID0gb2xkX3ZsYW5faWQgLCBkbF92bGFuX3BjcCA9IG9sZF92bGFuX3BjcCkKK2MpIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgaGFzIHZsYW4gaWQgYWRkZWQgdG8gaXQuIChkbF92bGFuX2VuYWJsZSAsIGRsX3ZsYW4gPSAwICwgZGxfdmxhbl9wY3AgPSBuZXdfdmxhbl9wY3ApCisKKworCisKKzE1LiBNb2RpZnkgTDIgU3JjIEFkZHJlc3MKKworVGVzdCBEZXNjcmlwdGlvbjogTW9kaWZ5IEV0aGVybmV0IFNyYyBBZGRyZXNzIG9mIGEgcGFja2V0CisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpdGxlOiAgTW9kaWZ5TDJTcmMKK1BvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhcGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBPcHRpb25hbAorCisgICAgICAgCitUZXN0IE5vdGVzOiAKKworYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIGFjdGlvbiA9IE9GUEFUX1NFVF9ETF9TUkMgLCBkbF9zcmMgPW5ld19kbF9zcmMKK2IpIFNlbmQgcGFja2V0IG1hdGNoaW5nIHRoZSBmbG93ICAoZGxfZHN0ID0gb2xkX2RsX3NyYyApCitjKSBWZXJpZnkgcGFja2V0IHJlY2VpdmVkIGhhcyBzcmMgYWRkcmVzcyByZXdyaXR0ZW4uIChkbF9zcmM9IG5ld19kbF9zcmMpCisKKworCisxNi4gTW9kaWZ5IEwyIERlc3RpbmF0aW9uIEFkZHJlc3MKKworVGVzdCBEZXNjcmlwdGlvbjogTW9kaWZ5IEV0aGVybmV0IERlc3RpbmF0aW9uIEFkZHJlc3Mgb2YgYSBwYWNrZXQKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGl0bGU6ICBNb2RpZnlMMkRzdAorUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE9wdGlvbmFsCisKKyAgICAgICAKK1Rlc3QgTm90ZXM6IAorCithKSBJbnNlcnQgYSBmbG93IHdpdGggYWN0aW9uID0gT0ZQQVRfU0VUX0RMX0RTVCAsIGRsX2RzdCA9bmV3X2RsX2RzdAorYikgU2VuZCBwYWNrZXQgbWF0Y2hpbmcgdGhlIGZsb3cgIChkbF9kc3QgPSBvbGRfZGxfc3JjICkKK2MpIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgaGFzIGRlc3RpbmF0aW9uIGFkZHJlc3MgcmV3cml0dGVuLiAoZGxfc3JjPSBuZXdfZGxfc3JjKQorCisKKworMTcuIFN0cmlwIFZMQU4gaGVhZGVyIJYgKEluIG9mdGVzdCwgIG5lZWQgdG8gYWRkIGluIGNvbmZvcm1hbmNlIHRlc3Qtc3VpdGUgKQorCisKKworMTguIE1vZGlmeSBMMyBTcmMgQWRkcmVzcworCitUZXN0IERlc2NyaXB0aW9uOiBNb2RpZnkgTmV0d29yayBTcmMgQWRkcmVzcyBvZiBhIHBhY2tldAorCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaXRsZTogIE1vZGlmeUwzU3JjCitQb3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YXBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogT3B0aW9uYWwKKworICAgICAgIAorVGVzdCBOb3RlczogCisKK2EpIEluc2VydCBhIGZsb3cgd2l0aCBhY3Rpb24gPSBPRlBBVF9TRVRfTldfU1JDICwgbndfc3JjID1uZXdfbndfc3JjCitiKSBTZW5kIHBhY2tldCBtYXRjaGluZyB0aGUgZmxvdyAgKG53X3NyYyA9IG9sZF9ud19zcmMgKQorYykgVmVyaWZ5IHBhY2tldCByZWNlaXZlZCBoYXMgbncgYWRkcmVzcyByZXdyaXR0ZW4uIChud19zcmM9IG5ld19ud19zcmMpCisKKworCisxOS4gTW9kaWZ5IEwzIERzdCBBZGRyZXNzCisKK1Rlc3QgRGVzY3JpcHRpb246IE1vZGlmeSBOZXR3b3JrIERzdCBBZGRyZXNzIG9mIGEgcGFja2V0CisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpdGxlOiAgTW9kaWZ5TDNEc3QKK1BvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhcGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBPcHRpb25hbAorCisgICAgICAgCitUZXN0IE5vdGVzOiAKKworYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIGFjdGlvbiA9IE9GUEFUX1NFVF9OV19EU1QgLCBud19kc3QgPW5ld19ud19kc3QKK2IpIFNlbmQgcGFja2V0IG1hdGNoaW5nIHRoZSBmbG93ICAobndfZHN0ID0gb2xkX253X2RzdCApCitjKSBWZXJpZnkgcGFja2V0IHJlY2VpdmVkIGhhcyBudyBkZXN0aW5hdGlvbiBhZGRyZXNzIHJld3JpdHRlbi4gKG53X2RzdD0gbmV3X253X2RzdCkKKworCisKKzIwLiBNb2RpZnkgTDQgU3JjIEFkZHJlc3MKKworVGVzdCBEZXNjcmlwdGlvbjogTW9kaWZ5IFRDUCBTb3VyY2UgUG9ydCBvZiBhIHBhY2tldAorCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaXRsZTogIE1vZGlmeUw0U3JjCitQb3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YXBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogT3B0aW9uYWwKKworICAgICAgIAorVGVzdCBOb3RlczogCisKK2EpIEluc2VydCBhIGZsb3cgd2l0aCBhY3Rpb24gPSBPRlBBVF9TRVRfVFBfU1JDICwgdGNwX3Nwb3J0ID1uZXdfdGNwX3Nwb3J0CitiKSBTZW5kIHBhY2tldCBtYXRjaGluZyB0aGUgZmxvdyAgKHRjcF9zcG9ydCA9IG9sZF90Y3Bfc3BvcnQgKQorYykgVmVyaWZ5IHBhY2tldCByZWNlaXZlZCBoYXMgdGNwIHNvdXJjZSBwb3J0IHJld3JpdHRlbi4gKHRjcF9zcG9ydCA9IG5ld190Y3Bfc3BvcnQpCisKKworMjEuIE1vZGlmeSBMNCBEc3QgQWRkcmVzcworCitUZXN0IERlc2NyaXB0aW9uOiBNb2RpZnkgVENQIERlc3RpbmF0aW9uIFBvcnQgb2YgYSBwYWNrZXQKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGl0bGU6ICBNb2RpZnlMNERzdAorUG9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGFwbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE9wdGlvbmFsCisKKyAgICAgICAKK1Rlc3QgTm90ZXM6IAorCithKSBJbnNlcnQgYSBmbG93IHdpdGggYWN0aW9uID0gT0ZQQVRfU0VUX1RQX0RTVCAsIHRjcF9kcG9ydCA9bmV3X3RjcF9kcG9ydAorYikgU2VuZCBwYWNrZXQgbWF0Y2hpbmcgdGhlIGZsb3cgICh0Y3BfZHBvcnQgPSBvbGRfdGNwX2Rwb3J0ICkKK2MpIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgaGFzIHRjcCBkZXN0aW5hdGlvbiBwb3J0IHJld3JpdHRlbi4gKHRjcF9zcG9ydCA9IG5ld190Y3Bfc3BvcnQpCisKKworCisyMi4gTW9kaWZ5IFRPUworCitUZXN0IERlc2NyaXB0aW9uOiBNb2RpZnkgTmV0d29yayBUeXBlIG9mIHNlcnZpY2UKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGl0bGU6ICBNb2RpZnlUb3MKK1BvcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhcGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBPcHRpb25hbAorCisgICAgICAgCitUZXN0IE5vdGVzOiAKKworYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIGFjdGlvbiA9IE9GUEFUX1NFVF9OV19UT1MsIGlwX3RvcyA9bmV3X2lwX3RvcworYikgU2VuZCBwYWNrZXQgbWF0Y2hpbmcgdGhlIGZsb3cgIChpcF90b3M9IG9sZF9pcF90b3MpCitjKSBWZXJpZnkgcGFja2V0IHJlY2VpdmVkIGhhcyB0Y3AgZGVzdGluYXRpb24gcG9ydCByZXdyaXR0ZW4uIChpcF90b3M9IG5ld19pcF90b3MpCisKKworCisyMy4gT3JkZXIgTm90IHBvc3NpYmxlICAtLSBUQkQKKworCisKKworMjQuIFNlcXVlbnRpYWwgZXhlY3V0aW9uICAtLSBUQkQgCisKKworCisKKworKioqKiAgICAgQ291bnRlcnMgICAgICoqKioKKworCisKKzEuIFJlY2VpdmVkIFBhY2tldHMgcGVyIEZsb3cKKworCitUZXN0IERlc2NyaXB0aW9uOiBWZXJpZnkgdGhhdCBwYWNrZXRfY291bnQgaW4gdGhlIEZsb3dfU3RhdHMgcmVwbHkgaW5jcmVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHBhY2tldHMgaW4gZmxvdyAgCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpbGU6IFBrdFBlckZsb3cKK1BPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczogCisKK2EpIEluc2VydCBhIGZsb3cgLCBtYXRjaCA9IGluZ3Jlc3NfcG9ydAorYikgU2VuZCBOIHBhY2tldCBtYXRjaGluZyB0aGUgZmxvdyAgaS5lIHBhY2tldHMgc2hvdWxkIGJlIHNlbnQgb24gaW5ncmVzc19wb3J0CitjKSBTZW5kIGZsb3dfc3RhdHNfcmVxdWVzdCBmb3IgdGhlIGZsb3cgCitkKSBWZXJpZnkgcGFja2V0X2NvdW50ID0gTiBpbiB0aGUgZmxvd19zdGF0c19yZXBseQorCisKKworMi4gUmVjZWl2ZWQgQnl0ZXMgcGVyIEZsb3cKKworCitUZXN0IERlc2NyaXB0aW9uOiBWZXJpZnkgdGhhdCBieXRlX2NvdW50IGluIHRoZSBGbG93X1N0YXRzIHJlcGx5IGluY3JlbWVudHMgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBieXRlcyBpbiBmbG93ICAKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGlsZTogQnl0UGVyRmxvdworUE9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGEgUGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworCitUZXN0IE5vdGVzOiAKKworYSkgSW5zZXJ0IGEgZmxvdyAsIG1hdGNoID0gaW5ncmVzc19wb3J0CitiKSBTZW5kIE4gcGFja2V0IG1hdGNoaW5nIHRoZSBmbG93ICBpLmUgcGFja2V0cyBzaG91bGQgYmUgc2VudCBvbiBpbmdyZXNzX3BvcnQKK2MpIFNlbmQgZmxvd19zdGF0c19yZXF1ZXN0IGZvciB0aGUgZmxvdyAKK2QpIFZlcmlmeSBieXRlX2NvdW50ID0gTioobm8uIG9mIGJ5dGVzIGluIG9uZSBwYWNrZXQpIGluIHRoZSBmbG93X3N0YXRzX3JlcGx5CisKKworCiszLiBEdXJhdGlvbiBpbiBzZWMgcGVyIEZsb3cKKworCitUZXN0IERlc2NyaXB0aW9uOiBWZXJpZnkgdGhhdCBkdXJhdGlvbl9zZWMgaW4gdGhlIEZsb3dfU3RhdHMgcmVwbHkgaW5jcmVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHRpbWUgdGhhdCBmbG93IHdhcyBhbGl2ZSBpbiBzZWMgCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpbGU6IER1cmF0aW9uUGVyRmxvdworUE9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGEgUGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworCitUZXN0IE5vdGVzOiAKKworYSkgSW5zZXJ0IGEgYW55IGZsb3cgCitiKSBTZW5kIGZsb3dfc3RhdHNfcmVxdWVzdCBmb3IgdGhhdCBmbG93IHBlcmlvZGljYWxseSBhZnRlciBuIHNlYyBpbnRlcnZhbHMgdXB0byB0aW1lb3V0IG9mIHkgCitjKSBWZXJpZnkgZWFjaCBmbG93X3N0YXRzX3JlcGx5IGhhcyBkdXJhdGlvbl9zZWMgZmllbGQgaW5jcmVtZW50aW5nIGFzIG4gLCAybiAsIDNuIC4uIHkgCisKKworCis0LiBEdXJhdGlvbiBpbiBuc2VjIHBlciBmbG93CisKKworVGVzdCBEZXNjcmlwdGlvbjogVmVyaWZ5IHRoYXQgZHVyYXRpb25fbnNlYyBpbiB0aGUgZmxvd19zdGF0cyByZXBsIGluY3JlbWVudHMgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB0aW1lIGZsb3cgaGFzIGJlZW4gYWxpdmUgaW4gbmFub3NlY29uZHMgCitiZXlvbmQgZHVyYXRpb25fc2VjLgorCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaWxlOiBEdXJhdGlvblBlckZsb3cKK1BPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczogCisKK2EpIEluc2VydCBhbnkgZmxvdyAKK2IpIFNlbmQgZmxvd19zdGF0c19yZXF1ZXN0IHBlcmlvZGljYWxseSBhZnRlciBuIHNlYyBpbnRlcnZhbHMgdXB0byB0aW1lb3V0IG9mIHkgCitjKSBWZXJpZnkgZWFjaCBmbG93X3N0YXRzX3JlcGx5IGhhcyBkdXJhdGlvbl9zZWMgZmllbGQgaW5jcmVtZW50aW5nIGFzIG4gLCAybiAsIDNuIC4uIHkgYW5kIHJlYWQgb3V0IGR1cmF0aW9uX25zZWMgZmllbGQgKCBWZXJpZmljYXRpb24gb2YgbnNlYyBmaWVsZCAKK2lzIG91dCBvZiBzY29wZSkKKworCisKKzUuIFJlY2VpdmVkIHBhY2tldHMgcGVyIHBvcnQKKworCitUZXN0IERlc2NyaXB0aW9uOiBWZXJpZnkgdGhhdCByeF9wYWNrZXRzIGluIHRoZSBQb3J0X1N0YXRzIHJlcGx5IGluY3JlbWVudHMgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBwYWNrZXRzIHJlY2lldmVkIG9uIHRoYXQgcG9ydAorCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaWxlOiBSeFBrdFBlclBvcnQKK1BPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczogCisKK2EpIEluc2VydCBhIGZsb3cgd2l0aCBtYXRjaCBvbiBpbmdyZXNzX3BvcnQKK2IpIFNlbmQgTiBwYWNrZXRzIG9uIHRoZSBpbmdyZXNzX3BvcnQgCitjKSBTZW5kIHBvcnRfc3RhdHMgcmVxdWVzdCBmb3IgcG9ydD1pbmdyZXNzX3BvcnQKK2QpIFZlcmlmeSBwb3J0X3N0YXRzX3JlcGx5IGhhcyByeF9wYWNrZXQ9TgorCisKKworCis2LiBUcmFuc21pdHRlZCBwYWNrZXRzIHBlciBwb3J0CisKKworVGVzdCBEZXNjcmlwdGlvbjogVmVyaWZ5IHRoYXQgdHhfcGFja2V0cyBpbiB0aGUgUG9ydF9TdGF0cyByZXBseSBpbmNyZW1lbnRzIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgcGFja2V0cyB0cmFuc21pdHRlZCBmcm9tIGEgcG9ydCAgCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpbGU6IFR4UGt0UGVyUG9ydAorUE9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGEgUGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworCitUZXN0IE5vdGVzOiAKKworYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIG1hdGNoIG9uIGluZ3Jlc3NfcG9ydCwgYWN0aW9uIG91dHB1dCA9IGVncmVzc19wb3J0CitiKSBTZW5kIE4gcGFja2V0cyBvbiB0aGUgaW5ncmVzc19wb3J0CitjKSBTZW5kIHBvcnRfc3RhdHMgcmVxdWVzdCBmb3IgcG9ydD1pbmdyZXNzX3BvcnQKK2QpIFZlcmlmeSBwb3J0X3N0YXRzX3JlcGx5IGhhZCB0eF9wYWNrZXRzPU4gICAKKworCisKKzcuIFJlY2VpdmVkIEJ5dGVzIHBlciBwb3J0CisKKworVGVzdCBEZXNjcmlwdGlvbjogVmVyaWZ5IHRoYXQgcnhfYnl0ZXMgaW4gdGhlIFBvcnRfU3RhdHMgcmVwbHkgaW5jcmVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIGJ5dGVzIHJlY2lldmVkIG9uIGEgcG9ydCAgCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpbGU6IFJ4Qnl0UGVyUG9ydAorUE9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGEgUGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworCitUZXN0IE5vdGVzOiAKKworYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIG1hdGNoIG9uIGluZ3Jlc3NfcG9ydCwgYWN0aW9uIG91dHB1dCA9IGVncmVzc19wb3J0CitiKSBTZW5kIE4gcGFja2V0IG1hdGNoaW5nIHRoZSBmbG93ICAKK2MpIFNlbmQgcG9ydF9zdGF0cyByZXF1ZXN0IGZvciBwb3J0PWluZ3Jlc3NfcG9ydAorZCkgVmVyaWZ5IHBvcnRfc3RhdHNfcmVwbHkgaGFkIHJ4X2J5dGVzPU4qKG5vLiBvZiBieXRlcyBpbiBhIHBhY2tldCkgCisKKworCis4LiBUcmFuc21pdHRlZCBCeXRlcyBwZXIgcG9ydAorCisKK1Rlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IHR4X2J5dGVzIGluIHRoZSBQb3J0X1N0YXRzIHJlcGx5IGluY3JlbWVudHMgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBieXRlcyB0cmFuc21pdHRlZCBmcm9tIGEgcG9ydCAgCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpbGU6IFR4Qnl0UGVyUG9ydAorUE9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGEgUGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworCitUZXN0IE5vdGVzOiAKKworYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIG1hdGNoIG9uIGluZ3Jlc3NfcG9ydCwgYWN0aW9uIG91dHB1dCA9IGVncmVzc19wb3J0CitiKSBTZW5kIE4gcGFja2V0IG1hdGNoaW5nIHRoZSBmbG93ICAKK2MpIFNlbmQgcG9ydF9zdGF0cyByZXF1ZXN0IGZvciBwb3J0PWluZ3Jlc3NfcG9ydAorZCkgVmVyaWZ5IHBvcnRfc3RhdHNfcmVwbHkgaGFkIHR4X2J5dGVzPU4qKG5vLiBvZiBieXRlcyBpbiBhIHBhY2tldCkgCisKKworCis5LiBSZWNpZXZlIERyb3BzIHBlciBwb3J0IChUQkQgLS0tPiBWZXJpZmljYXRpb24gb2YgY291bnRlciBpbmNyZW1lbnRpbmcgY29ycmVjdGx5KQorCisKK1Rlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IHJ4X2Ryb3BwZWQgY291bnRlcnMgaW4gdGhlIFBvcnRfU3RhdHMgcmVwbHkgaW5jcmVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHBhY2tldHMgZHJvcHBlZCBieSBSWCAgCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpbGU6IFJ4RHJvcHMKK1BPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKK1Rlc3QgTm90ZXMgOgorCithKSBTZW5kIHBvcnRfc3RhdHMgcmVxdWVzdCBmb3IgcG9ydD1pbmdyZXNzX3BvcnQKK2IpIFZlcmlmeSBwb3J0X3N0YXRzIHJlcGx5IGhhcyByeF9kcm9wcGVkIGNvdW50CisKKworCisKKworMTAuIFRyYW5zbWl0IERyb3BzIHBlciBwb3J0IChUQkQgLS0tPiBWZXJpZmljYXRpb24gb2YgY291bnRlciBpbmNyZW1lbnRpbmcgY29ycmVjdGx5KQorCisKK1Rlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IHR4X2Ryb3BwZWQgY291bnRlcnMgaW4gdGhlIFBvcnRfU3RhdHMgcmVwbHkgaW5jcmVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHBhY2tldHMgZHJvcHBlZCBieSBUWAorCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaWxlOiBUeERyb3BzCitQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmFkYXRvcnkKKworCithKSBTZW5kIHBvcnRfc3RhdHMgcmVxdWVzdCBmb3IgcG9ydD1pbmdyZXNzX3BvcnQKK2IpIFZlcmlmeSBwb3J0X3N0YXRzIHJlcGx5IGhhcyB0eF9kcm9wcGVkIGNvdW50CisKKworCisKKzExLiBSZWNpZXZlIEVycm9ycyAoVEJEIC0tLT4gVmVyaWZpY2F0aW9uIG9mIGNvdW50ZXIgaW5jcmVtZW50aW5nIGNvcnJlY3RseSkKKworCitUZXN0IERlc2NyaXB0aW9uOiBWZXJpZnkgdGhhdCByeF9lcnJvcnMgY291bnRlcnMgaW4gdGhlIFBvcnRfU3RhdHMgcmVwbHkgaW5jcmVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggbnVtYmVyIG9mIHJlY2lldmVkIGVycm9yICAKKwkJICBUaGlzIGlzIGEgc3VwZXItc2V0IG9mIG1vcmUgc3BlY2lmaWMgcmVjZWl2ZSBlcnJvcnMgYW5kIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHN1bSBvZiBhbGwKKyAgICAgICAgICAgICAgICAgIHJ4XypfZXJyIHZhbHVlcy4KKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGlsZTogUnhFcnJvcnMKK1BPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczogCisKK2EpIFNlbmQgcG9ydF9zdGF0cyByZXF1ZXN0IGZvciBwb3J0PWluZ3Jlc3NfcG9ydAorYikgVmVyaWZ5IHBvcnRfc3RhdHMgcmVwbHkgaGFzIHJ4X2Vycm9ycyBjb3VudAorCisKKworMTIuIFRyYW5zbWl0IEVycm9ycyAoVEJEIC0tLT4gVmVyaWZpY2F0aW9uIG9mIGNvdW50ZXIgaW5jcmVtZW50aW5nIGNvcnJlY3RseSkKKworCitUZXN0IERlc2NyaXB0aW9uOiBWZXJpZnkgdGhhdCB0eF9lcnJvcnMgY291bnRlcnMgaW4gdGhlIFBvcnRfU3RhdHMgcmVwbHkgaW5jcmVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggbnVtYmVyIG9mIHRyYXNtaXQgZXJyb3JzICAKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGlsZTogVHhFcnJvcnMKK1BPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczogCisKK2EpIFNlbmQgcG9ydF9zdGF0cyByZXF1ZXN0IGZvciBwb3J0PWluZ3Jlc3NfcG9ydAorYikgVmVyaWZ5IHBvcnRfc3RhdHMgcmVwbHkgaGFzIHR4X2Vycm9ycyBjb3VudAorCisKKworMTMuIFJlY2lldmUgRnJhbWUgRXJyb3JzIChUQkQgLS0tPiBWZXJpZmljYXRpb24gb2YgY291bnRlciBpbmNyZW1lbnRpbmcgY29ycmVjdGx5KQorCisKK1Rlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IHJ4X2ZybV9lcnIgY291bnRlcnMgaW4gdGhlIFBvcnRfU3RhdHMgcmVwbHkgaW5jcmVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIG51bWJlciBvZiBmcmFtZSBhbGlnbm1lbnQgZXJyb3JzCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaWxlOiBSeEZyYW1lRXJyCitQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisKK1Rlc3QgTm90ZXM6IAorCithKSBTZW5kIHBvcnRfc3RhdHMgcmVxdWVzdCBmb3IgcG9ydD1pbmdyZXNzX3BvcnQKK2IpIFZlcmlmeSBwb3J0X3N0YXRzIHJlcGx5IGhhcyByeF9mcmFtZV9lcnIgY291bnQgCisKKworCisxNC4gUmVjaWV2ZSBPdmVycnVuIEVycm9ycyAoVEJEIC0tLT4gVmVyaWZpY2F0aW9uIG9mIGNvdW50ZXIgaW5jcmVtZW50aW5nIGNvcnJlY3RseSkKKworCitUZXN0IERlc2NyaXB0aW9uOiBWZXJpZnkgdGhhdCByeF9vdmVyX2VyciBjb3VudGVycyBpbiB0aGUgUG9ydF9TdGF0cyByZXBseSBpbmNyZW1lbnRzIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgbnVtYmVyIG9mIHdpdGggUlggb3ZlcnJ1bgorCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaWxlOiBSeE9FcnIKK1BPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczogCisKK2EpIFNlbmQgcG9ydF9zdGF0cyByZXF1ZXN0IGZvciBwb3J0PWluZ3Jlc3NfcG9ydAorYikgVmVyaWZ5IHBvcnRfc3RhdHMgcmVwbHkgaGFzIHJ4X292ZXJfZXJyIGNvdW50IAorCisKKzE1LiBDUkMgRXJyb3JzIChUQkQgLS0tPiBWZXJpZmljYXRpb24gb2YgY291bnRlciBpbmNyZW1lbnRpbmcgY29ycmVjdGx5KQorCisKK1Rlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IHJ4X2NyY19lcnIgY291bnRlcnMgaW4gdGhlIFBvcnRfU3RhdHMgcmVwbHkgaW5jcmVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIG51bWJlciBvZiBjcmMgZXJyb3JzCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpbGU6IFJ4Q3JjRXJyCitQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmFkYXRvcnkKKworCitUZXN0IE5vdGVzOiAKKworYSkgU2VuZCBwb3J0X3N0YXRzIHJlcXVlc3QgZm9yIHBvcnQ9aW5ncmVzc19wb3J0CitiKSBWZXJpZnkgcG9ydF9zdGF0cyByZXBseSBoYXMgcnhfY3JjX2VyciBjb3VudCAKKworCisKKzE2LiBDb2xsaXNpb25zIChUQkQgLS0tPiBWZXJpZmljYXRpb24gb2YgY291bnRlciBpbmNyZW1lbnRpbmcgY29ycmVjdGx5KQorCisKK1Rlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IGNvbGxpc29ucyBjb3VudGVycyBpbiB0aGUgUG9ydF9TdGF0cyByZXBseSBpbmNyZW1lbnRzIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29sbGlzaW9ucyBlbmNvdW50ZXJlZCBieSB0aGUgc3dpdGNoCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpbGU6IENvbGxpc2lvbnMKK1BPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczogCisKK2EpIFNlbmQgcG9ydF9zdGF0cyByZXF1ZXN0IGZvciBwb3J0PWluZ3Jlc3NfcG9ydAorYikgVmVyaWZ5IHBvcnRfc3RhdHMgcmVwbHkgaGFzIGNvbGxpc2lvbnMgY291bnQgCisKKworCisxNy4gQWN0aXZlIEVudHJpZXMgcGVyIFRhYmxlCisKKworVGVzdCBEZXNjcmlwdGlvbjogVmVyaWZ5IHRoYXQgYWN0aXZlX2NvdW50IGluIHRoZSB0YWJsZSBpbmNyZW1lbnRzIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgZmxvd3MgaW5zZXJ0ZWQgaW4gdGhlIHRhYmxlCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpbGU6IEFjdGl2ZUNvdW50CitQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisKK1Rlc3QgTm90ZXM6IAorCithKSBJbnNlcnQgYSBmbG93IAorYikgU2VuZCB0YWJsZV9zdGF0c19yZXF1ZXN0CitjKSBWZXJpZnkgYWN0aXZlX2NvdW50PTEKKworCisKKzE4LiBQYWNrZXQgTG9va3VwIHBlciBUYWJsZQorCisKK1Rlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IGxvb2t1cF9jb3VudCBpbiB0aGUgVGFibGVfU3RhdHMgcmVwbHkgaW5jcmVtZW50cyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIG51bWJlciBvZiBwYWNrZXRzIGxvb2tlZCB1cCBpbiB0YWJsZQorCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaWxlOiBMb29rdXBNYXRjaGVkQ291bnQKK1BPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczogCisKK2EpIEluc2VydCBhIGZsb3cgd2l0aCBtYXRjaCBvbiBpbmdyZXNzX3BvcnQKK2IpIFNlbmQgTiBwYWNrZXRzIG9uIGluZ3Jlc3NfcG9ydCAobWF0Y2hpbmcgdGhlIGZsb3cpCitjKSBTZW5kIE4nIHBhY2tldHMgb24geCBwb3J0IChOb3QgbWF0Y2hpbmcgdGhlIGZsb3cpCitkKSBTZW5kIHRhYmxlX3N0YXRzX3JlcXVlc3QgCitlKSBWZXJpZnkgbG9va3VwX2NvdW50ID0gTitOJyAKKworCisKKzE5LiBQYWNrZXRzIG1hdGNoZWQgcGVyIFRhYmxlCisKK1Rlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IG1hdGNoZWRfY291bnQgaW4gdGhlIFRhYmxlX1N0YXRzIHJlcGx5IGluY3JlbWVudHMgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBudW1iZXIgb2YgcGFja2V0cyBtYXRjaGVkIHdpdGggdGhlIHRhYmxlCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpbGU6IExvb2t1cE1hdGNoZWRDb3VudAorUE9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGEgUGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworCitUZXN0IE5vdGVzOiAKKworYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIG1hdGNoIG9uIGluZ3Jlc3NfcG9ydAorYikgU2VuZCBOIHBhY2tldHMgb24gaW5ncmVzc19wb3J0IChtYXRjaGluZyB0aGUgZmxvdykKK2MpIFNlbmQgTicgcGFja2V0cyBvbiB4IHBvcnQgKE5vdCBtYXRjaGluZyB0aGUgZmxvdykKK2QpIFNlbmQgdGFibGVfc3RhdHNfcmVxdWVzdCAKK2UpIFZlcmlmeSBtYXRjaGVkX2NvdW50ID0gTiAKKworCisKKworMjAuIFRyYW5zbWl0IFBhY2tldHMgcGVyIFF1ZXVlCisKK1Rlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IHR4X3BhY2tldHMgaW4gdGhlIHF1ZXVlX3N0YXRzIHJlcGx5IGluY3JlbWVudHMgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBudW1iZXIgb2YgdHJhbnNtaXR0ZWQgcGFja2V0cworCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaWxlOiBUeFBrdFBlclF1ZXVlCitQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE9wdGlvbmFsCisKKworVGVzdCBOb3RlczogCisKK2EpIFNlbmQgcXVldWVfc3RhdHMgcmVxdWVzdCBmb3IgcG9ydHM9b2ZwLk9GUFBfQUxMIGFuZCBxdWV1ZV9pZHM9b2ZwLk9GUFFfQUxMIChpLmUgYWxsIHBvcnRzIGFuZCBhbGwgcXVldWVzKQorYikgU2VuZCBxdWV1ZV9zdGF0cyByZXF1ZXN0IGZvciBlZ3Jlc3NfcG9ydFswXSBhbmQgcXVldWVfaWRbMF0gYW5kIG5vdGUgdGhlIHR4X3BhY2tldHMgY291bnQgaW4gdGhlIHJlcGx5CitjKSBJbnNlcnQgYSBmbG93IGVudHJ5IHdpdGggZW5xdWV1ZSBhY3Rpb24gLCBwb3J0ID0gZWdyZXNzX3BvcnRbMF0gcXVldWVfaWQ9IHF1ZXVlX2lkWzBdCitkKSBTZW5kIHBhY2tldCBtYXRjaGluZyB0aGUgZmxvdworZSkgU2VuZCBxdWV1ZV9zdGF0cyByZXF1ZXN0IGFnYWluLCB2ZXJpZnkgdHhfcGFja2V0IGNvdW50IGluY3JlbWVudGVkIAorZikgUmVwZWF0IGIgLCBjICwgZCAsIGUgZm9yIGFsbCB0aGUgcXVldWVfaWRzIGNvbmZpZ3VyZWQgZm9yIGVncmVzc19wb3J0WzBdCitoKSBSZXBlYXQgYiAsIGMgLCBkICwgZSAsIGYgZm9yIGFsbCB0aGUgZWdyZXNzX3BvcnRzIGF2YWlsYWJsZQorCisKKworCisyMS4gVHJhbnNtaXQgQnl0ZXMgcGVyIFF1ZXVlCisKK1Rlc3QgRGVzY3JpcHRpb246IFZlcmlmeSB0aGF0IHR4X2J5dGVzIGluIHRoZSBxdWV1ZV9zdGF0cyByZXBseSBpbmNyZW1lbnRzIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgbnVtYmVyIG9mIHRyYW5zbWl0dGVkIGJ5dGVzCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpbGU6IFR4Qnl0UGVyUXVldWUKK1BPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogT3B0aW9uYWwKKworCitUZXN0IE5vdGVzOiAKKworYSkgU2VuZCBxdWV1ZV9zdGF0cyByZXF1ZXN0IGZvciBwb3J0cz1vZnAuT0ZQUF9BTEwgYW5kIHF1ZXVlX2lkcz1vZnAuT0ZQUV9BTEwgKGkuZSBhbGwgcG9ydHMgYW5kIGFsbCBxdWV1ZXMpCitiKSBTZW5kIHF1ZXVlX3N0YXRzIHJlcXVlc3QgZm9yIGVncmVzc19wb3J0WzBdIGFuZCBxdWV1ZV9pZFswXSBhbmQgbm90ZSB0aGUgdHhfYnl0ZXMgY291bnQgaW4gdGhlIHJlcGx5CitjKSBJbnNlcnQgYSBmbG93IGVudHJ5IHdpdGggZW5xdWV1ZSBhY3Rpb24gLCBwb3J0ID0gZWdyZXNzX3BvcnRbMF0gcXVldWVfaWQ9IHF1ZXVlX2lkWzBdCitkKSBTZW5kIHBhY2tldCBtYXRjaGluZyB0aGUgZmxvdworZSkgU2VuZCBxdWV1ZV9zdGF0cyByZXF1ZXN0IGFnYWluLCB2ZXJpZnkgdHhfYnl0ZSBjb3VudCBpbmNyZW1lbnRlZCAKK2YpIFJlcGVhdCBiICwgYyAsIGQgLCBlIGZvciBhbGwgdGhlIHF1ZXVlX2lkcyBjb25maWd1cmVkIGZvciBlZ3Jlc3NfcG9ydFswXQoraCkgUmVwZWF0IGIgLCBjICwgZCAsIGUgLCBmIGZvciBhbGwgdGhlIGVncmVzc19wb3J0cyBhdmFpbGFibGUKKworCisKKzIyLiBUcmFuc21pdCBPdmVycnVuIEVycm9ycyBwZXIgcXVldWUgKFRCRCAtLS0tPiBWZXJpZmljYXRpb24gb2YgdHhfZXJyb3IgY291bnQgYmVpbmcgaW5jcmVtZW50ZWQgY29ycmVjdGx5KSAKKworVGVzdCBEZXNjcmlwdGlvbjogVmVyaWZ5IHRoYXQgdHhfZXJyb3JzIGluIHRoZSBxdWV1ZV9zdGF0cyByZXBseSBpbmNyZW1lbnRzIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgbnVtYmVyIG9mIHBhY2tldHMgZHJvcHBlZCBkdWUgdG8gb3ZlcnJ1bi4KK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpbGU6IFR4RXJyb3JQZXJRdWV1ZQorUE9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGEgUGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBPcHRpb25hbAorCitUZXN0IE5vdGVzOiAKKworCithKSBTZW5kIHF1ZXVlX3N0YXRzIHJlcXVlc3QgZm9yIHBvcnQ9ZWdyZXNzX3BvcnQgYW5kIHF1ZXVlX2lkcz1vZnAuT0ZQUV9BTEwKK0IpIHNlbmQgcXVldWVfc3RhdHMgcmVxdWVzdCBmb3IgZWdyZXNzX3BvcnQgYW5kIHF1ZXVlX2lkWzBdIChpLmUgZmlyc3QgcXVldWUgY29uZmlndXJlZCBmb3IgZWdyZXNzX3BvcnQpCitjKSBWZXJpZnkgcmVwbHkgaGFzIHR4X2Vycm9ycyBjb3VudCAuCitkKSBSZXBlYXIgYiAsIGMgZm9yIHRoZSBhbGwgcXVldWVfaWRzIG9mIGVncmVzc19wb3J0CisKKworCisKKworKioqKiAgICAgRmxvdyBtYXRjaGVzICAgICAqKioqCisKKworCisxLiBBbGwgV2lsZGNhcmQgTWF0Y2gKKworVGVzdCBEZXNjcmlwdGlvbjogQWRkaW5nIGEgRmxvdyB0aGF0IG1hdGNoZXMgYWxsIHRoZSBwb3NzaWJsZSBmaWVsZHMKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGlsZTogQWxsV2lsZGNhcmRNYXRjaAorUE9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGEgUGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworCitUZXN0IE5vdGVzOgorCithKSBJbnNlcnQgYSBmbG93IHdpdGggd2lsZGNhcmQgPSBPRlBGV19BTEwgKHdpbGRjYXJkIGFsbCBmaWVsZHMpLCBhY3Rpb24gb3V0cHV0IHRvIGVncmVzc19wb3J0CitiKSBTZW5kIHBhY2tldHMgd2l0aCBkaWZmZXJlbnQgaGVhZGVyIGZpZWxkcworYykgVmVyaWZ5IGFsbCBwYWNrZXRzIG1hdGNoIHRoZSBmbG93IGFuZCBpbXBsZW1lbnQgdGhlIGFjdGlvbiBzcGVjaWZpZWQuCisKKworMi4gU2luZ2xlIEhlYWRlciBGaWVsZDogSW5ncmVzcyBQb3J0CisKK1Rlc3QgRGVzY3JpcHRpb246IE1hdGNoIG9uIEluZ3Jlc3MgUG9ydCBhbmQgV2lsZGNhcmQgcmVzdCAKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGlsZTogSW5ncmVzc1BvcnQKK1BPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczogCisKK2EpIEluc2VydCBhIGZsb3cgd2l0aCBtYXRjaCA9IGluX3BvcnQgKHNheSBwb3J0IHgpLCBhY3Rpb24gb3V0cHV0IHRvIGVncmVzc19wb3J0CitiKSBTZW5kIHBhY2tldCBvbiBwb3J0IHggCitjKSBWZXJpZnkgcGFja2V0IHdhcyByZWNpZXZlZCBvbiBlZ3Jlc3NfcG9ydAorZCkgU2VuZCBwYWNrZXQgb24gcG9ydCB5CitlKSBWZXJpZnkgUGFja2V0SW4gZXZlbnQgd2FzIHRyaWdnZXJlZCBvbiBjb250cm9sIHBsYW5lCisKKworCiszLiBTaW5nbGUgSGVhZGVyIEZpZWxkOiBFdGhlcm5ldCBTcmMgQWRkcmVzcworCitUZXN0IERlc2NyaXB0aW9uOiBNYXRjaCBvbiBFdGhlcm5ldCBTb3VyY2UgQWRkcmVzcyBhbmQgV2lsZGNhcmQgcmVzdCAKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGlsZTogRXRoZXJuZXRTcmNBZGRyZXNzCitQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisKK1Rlc3QgTm90ZXM6IAorCithKSBJbnNlcnQgYSBmbG93IHdpdGggbWF0Y2ggPSBkbF9zcmMgKHNheSB4KSAsIGFjdGlvbiBvdXRwdXQgdG8gZWdyZXNzX3BvcnQKK2IpIFNlbmQgcGFja2V0IHd0aCBkbF9zcmMgPSB4IAorYykgVmVyaWZ5IHBhY2tldCB3YXMgcmVjaWV2ZWQgb24gZWdyZXNzX3BvcnQKK2QpIFNlbmQgcGFja2V0IHdpdGggZGxfc3JjID0geSAKK2UpIFZlcmlmeSBQYWNrZXRJbiBldmVudCB3YXMgdHJpZ2dlcmVkIG9uIHRoZSBjb250cm9sIHBsYW5lCisKKworCis0LiBTaW5nbGUgSGVhZGVyIEZpZWxkOiBFdGhlcm5ldCBEc3QgQWRkcmVzcworCitUZXN0IERlc2NyaXB0aW9uOiBNYXRjaCBvbiBFdGhlcm5ldCBEZXN0aW5hdGlvbiBBZGRyZXNzIGFuZCBXaWxkY2FyZCByZXN0IAorCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaWxlOiBFdGhlcm5ldERzdEFkZHJlc3MKK1BPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczogCisKK2EpIEluc2VydCBhIGZsb3cgd2l0aCBtYXRjaCA9IGRsX2RzdCAoc2F5IHgpICwgYWN0aW9uIG91dHB1dCB0byBlZ3Jlc3NfcG9ydAorYikgU2VuZCBwYWNrZXQgd3RoIGRsX2RzdCA9IHggIAorYykgVmVyaWZ5IHBhY2tldCB3YXMgcmVjaWV2ZWQgb24gZWdyZXNzX3BvcnQKK2QpIFNlbmQgcGFja2V0IHdpdGggZGxfZHN0ID0geSAKK2UpIFZlcmlmeSBQYWNrZXRJbiBldmVudCB3YXMgdHJpZ2dlcmVkIG9uIHRoZSBjb250cm9sIHBsYW5lCisKKworCis1LiBTaW5nbGUgSGVhZGVyIEZpZWxkOiBFdGhlcm5ldCBUeXBlIAorCitUZXN0IERlc2NyaXB0aW9uOiBNYXRjaCBvbiBFaHRlcm5ldCBUeXBlIGFuZCBXaWxkY2FyZCByZXN0IAorCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaWxlOiBFdGhlcm5ldFR5cGUKK1BPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczogCisKK2EpIEluc2VydCBhIGZsb3cgd2l0aCBtYXRjaCA9IGRsX3R5cGUgKHNheSB4KSAsIGFjdGlvbiBvdXRwdXQgdG8gZWdyZXNzX3BvcnQKK2IpIFNlbmQgcGFja2V0IHd0aCBkbF90eXBlID0geCAgIAorYykgVmVyaWZ5IHBhY2tldCB3YXMgcmVjaWV2ZWQgb24gZWdyZXNzX3BvcnQKK2QpIFNlbmQgcGFja2V0IHdpdGggZGxfdHlwZSA9IHkgCitlKSBWZXJpZnkgUGFja2V0SW4gZXZlbnQgd2FzIHRyaWdnZXJlZCBvbiB0aGUgY29udHJvbCBwbGFuZQorCisKKworCis2LiBTaW5nbGUgSGVhZGVyIEZpZWxkOiBWbGFuIElkCisKK1Rlc3QgRGVzY3JpcHRpb246IE1hdGNoIG9uIEluZ3Jlc3MgUG9ydCBhbmQgV2lsZGNhcmQgcmVzdCAKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGlsZTogVmxhbklkCitQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisKK1Rlc3QgTm90ZXM6IAorCithKSBJbnNlcnQgYSBmbG93IHdpdGggbWF0Y2ggPSBkbF92bGFuIChzYXkgeCkgLCBhY3Rpb24gb3V0cHV0IHRvIGVncmVzc19wb3J0CitiKSBTZW5kIGEgdGFnZ2VkIHBhY2tldCB3aXRoIChkbF92bGFuX2VuYWJsZT1UcnVlLGRsX3ZsYW4gPSB4KSAgCitjKSBWZXJpZnkgcGFja2V0IHdhcyByZWNpZXZlZCBvbiBlZ3Jlc3NfcG9ydAorZCkgU2VuZCBhbm90aGVyIHRhZ2dlZCBwYWNrZXQgd2l0aCAoZGxfdmxhbl9lbmFibGU9VHJ1ZSxkbF92bGFuID0geSApCitlKSBWZXJpZnkgUGFja2V0SW4gZXZlbnQgd2FzIHRyaWdnZXJlZCBvbiB0aGUgY29udHJvbCBwbGFuZQorCisKKworCis3LiBTaW5nbGUgSGVhZGVyIEZpZWxkOiBWbGFuIFBDUAorCitUZXN0IERlc2NyaXB0aW9uOiBNYXRjaCBvbiBWbGFuIElEIFByaW9yaXR5IAorCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaWxlOiBWbGFuUGNwCitQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisKK1Rlc3QgTm90ZXM6IAorCithKSBJbnNlcnQgYSBmbG93IHdpdGggbWF0Y2ggPSBkbF92bGFuX3BjcCAoc2F5IHgpICwgYWN0aW9uIG91dHB1dCB0byBlZ3Jlc3NfcG9ydAorYikgU2VuZCBhIHRhZ2dlZCBwYWNrZXQgd2l0aCAoZGxfdmxhbl9lbmFibGU9VHJ1ZSwgZGxfdmxhbiA9ICogLCBkbF92bGFuX3BjcCA9IHgpICAKK2MpIFZlcmlmeSBwYWNrZXQgd2FzIHJlY2lldmVkIG9uIGVncmVzc19wb3J0CitiKSBTZW5kIGEgdGFnZ2VkIHBhY2tldCB3aXRoIChkbF92bGFuX2VuYWJsZT1UcnVlLCBkbF92bGFuID0gKiAsIGRsX3ZsYW5fcGNwID0geSkgIAorZSkgVmVyaWZ5IFBhY2tldEluIGV2ZW50IHdhcyB0cmlnZ2VyZWQgb24gdGhlIGNvbnRyb2wgcGxhbmUKKworCisKKworCis4LiBTaW5nbGUgSGVhZGVyIEZpZWxkOiBJUCBTcmMgQWRkcmVzcyAtLS0tLS0tLSA+IChUQkQpCisKK1Rlc3QgRGVzY3JpcHRpb246IE1hdGNoIG9uIElQIFNyYyBBZGRyZXNzIGFuZCBXaWxkY2FyZCByZXN0IAorCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaWxlOiBJUFNyY0FkZHJlc3MKK1BPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworCisKKzkuIFNpbmdsZSBIZWFkZXIgRmllbGQ6IElQIERzdCBBZGRyZXNzIC0tLS0tLS0tLS0tPiAoVEJEKQorCitUZXN0IERlc2NyaXB0aW9uOiBNYXRjaCBvbiBJUCBEc3QgQWRkcmVzcyBhbmQgV2lsZGNhcmQgcmVzdCAKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGlsZTogSVBEc3RBZGRyZXNzCitQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisKKworCisKKzEwLiBTaW5nbGUgSGVhZGVyIEZpZWxkOiBJUCBwcm90b2NvbC0tLS0tLS0tLS0tLS0tLT4gKFRCRCkKKworVGVzdCBEZXNjcmlwdGlvbjogTWF0Y2ggb24gSVAgUHJvdG9jb2wgYW5kIFdpbGRjYXJkIHJlc3QgCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpbGU6IElQcHJvdG9jb2wKK1BPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworCisKKworCisxMS4gU2luZ2xlIEhlYWRlciBGaWVsZDogSVAgVG9zIGJpdHMKKworVGVzdCBEZXNjcmlwdGlvbjogTWF0Y2ggb24gSVAgVG9zIGJpdHMgYW5kIFdpbGRjYXJkIHJlc3QgCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpbGU6IElwVG9zCitQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisKK1Rlc3QgTm90ZXM6IAorCithKSBJbnNlcnQgYSBmbG93IHdpdGggbWF0Y2ggPSBud190b3MgKHNheSB4KSAsIGFjdGlvbiBvdXRwdXQgdG8gZWdyZXNzX3BvcnQKK2IpIFNlbmQgYSB0Y3AgcGFja2V0IHdpdGggKG53X3Rvcz14KSAgCitjKSBWZXJpZnkgcGFja2V0IHdhcyByZWNpZXZlZCBvbiBlZ3Jlc3NfcG9ydAorYikgU2VuZCBhIHRjcCBwYWNrZXQgd2l0aCAobndfdG9zID0geSkKK2UpIFZlcmlmeSBQYWNrZXRJbiBldmVudCB3YXMgdHJpZ2dlcmVkIG9uIHRoZSBjb250cm9sIHBsYW5lCisKKworCisxMi4gU2luZ2xlIEhlYWRlciBGaWVsZDogVHJhbnNwb3J0IFNvdXJjZSBQb3J0CisKK1Rlc3QgRGVzY3JpcHRpb246IE1hdGNoIG9uIFRyYW5zcG9ydCBTcmMgUG9ydCBhbmQgV2lsZGNhcmQgcmVzdCAKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGlsZTogVGNwU3JjUG9ydAorUE9ydHM6IDMgKDEgQ29udHJvbCBQbGFuZSAyIERhdGEgUGxhbmUpCitJbml0aWFsIFN0YXRlOiBEZWZhdWx0IChDbGVhciBzd2l0Y2ggc3RhdGUpLCBDb25uZWN0aW9uIHNldHVwCitUZXN0LUZpZWxkOiBNYW5kYXRvcnkKKworCitUZXN0IE5vdGVzOiAKKworYSkgSW5zZXJ0IGEgZmxvdyB3aXRoIG1hdGNoID0gdHBfc3JjIChzYXkgeCkgLCBhY3Rpb24gb3V0cHV0IHRvIGVncmVzc19wb3J0CitiKSBTZW5kIGEgdGNwIHBhY2tldCB3aXRoICh0cF9zcmM9eCkgIAorYykgVmVyaWZ5IHBhY2tldCB3YXMgcmVjaWV2ZWQgb24gZWdyZXNzX3BvcnQKK2IpIFNlbmQgYSB0Y3AgcGFja2V0IHdpdGggdHBfc3JjPSB5KQorZSkgVmVyaWZ5IFBhY2tldEluIGV2ZW50IHdhcyB0cmlnZ2VyZWQgb24gdGhlIGNvbnRyb2wgcGxhbmUKKworCisKKzEzLiBTaW5nbGUgSGVhZGVyIEZpZWxkOiBUcmFuc3BvcnQgRGVzdGluYXRpb24gUG9ydAorCitUZXN0IERlc2NyaXB0aW9uOiBNYXRjaCBvbiBUcmFuc3BvcnQgRHN0IFBvcnQgYW5kIFdpbGRjYXJkIHJlc3QgCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpbGU6IFRjcERzdFBvcnQKK1BPcnRzOiAzICgxIENvbnRyb2wgUGxhbmUgMiBEYXRhIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczogCisKK2EpIEluc2VydCBhIGZsb3cgd2l0aCBtYXRjaCA9IHRwX2RzdCAoc2F5IHgpICwgYWN0aW9uIG91dHB1dCB0byBlZ3Jlc3NfcG9ydAorYikgU2VuZCBhIHRjcCBwYWNrZXQgd2l0aCAodHBfZHN0PXgpICAKK2MpIFZlcmlmeSBwYWNrZXQgd2FzIHJlY2lldmVkIG9uIGVncmVzc19wb3J0CitiKSBTZW5kIGEgdGNwIHBhY2tldCB3aXRoIHRwX2RzdCA9IHkpCitlKSBWZXJpZnkgUGFja2V0SW4gZXZlbnQgd2FzIHRyaWdnZXJlZCBvbiB0aGUgY29udHJvbCBwbGFuZQorCisKKworCisxNC4gTXVsdGlwbGUgSGVhZGVyIEZpZWxkczogTDIKKworCitUZXN0IERlc2NyaXB0aW9uOiBNYXRjaCBvbiBFdGhlcm5ldCBUeXBlLCBFdGhlcm5ldCBTb3VyY2UgQWRkcmVzcywgRXRoZXJuZXQgRGVzdGluYXRpb24gQWRkcmVzcyBhbmQgV2lsZGNhcmQgcmVzdCAKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGlsZTogTXVsdGlwbGVIZWFkZXJGaWVsZEwyCitQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisKK1Rlc3QgTm90ZXM6IAorCithKSBJbnNlcnQgYSBmbG93IHdpdGggbWF0Y2ggPSBkbF90eXBlIChzYXkgeCksIGRsX3NyYyAoc2F5IHkgKSwgZGxfZHN0IChzYXkgeiksIGFjdGlvbiBvdXRwdXQgdG8gZWdyZXNzX3BvcnQKK2IpIFNlbmQgYSBldGggcGFja2V0IHdpdGggZGxfdHlwZSAoc2F5IHgpLCBkbF9zcmMgKHNheSB5ICksIGRsX2RzdCAoc2F5IHopCitjKSBWZXJpZnkgcGFja2V0IHdhcyByZWNpZXZlZCBvbiBlZ3Jlc3NfcG9ydAorYikgU2VuZCBhIGV0aCBwYWNrZXQgd2l0aCBkbF90eXBlIChzYXkgdyksIGRsX3NyYyAoc2F5IHYgKSwgZGxfZHN0IChzYXkgZikKK2UpIFZlcmlmeSBQYWNrZXRJbiBldmVudCB3YXMgdHJpZ2dlcmVkIG9uIHRoZSBjb250cm9sIHBsYW5lCisKKworCisxNS4gTXVsdGlwbGUgSGVhZGVyIEZpZWxkczogTDMgLS0tLS0tPiBUQkQKKworCisKKworMTYuIE11bHRpcGxlIEhlYWRlciBGaWVsZHM6IEw0CisKK1Rlc3QgRGVzY3JpcHRpb246IE1hdGNoIG9uIFRjcCBTb3VyY2UgUG9ydCwgVGNwIERlc3RpbmF0aW9uIFBvcnQKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGlsZTogTXVsdGlwbGVIZWFkZXJGaWVsZEw0CitQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisKK1Rlc3QgTm90ZXM6IAorCithKSBJbnNlcnQgYSBmbG93IHdpdGggbWF0Y2ggPSB0cF9zcmMgKHNheSB4KSwgdHBfZHN0IChzYXkgeSApCitiKSBTZW5kIGEgdGNwIHBhY2tldCB3aXRoIHRwX3NyYyAoc2F5IHgpLCB0cF9kc3QgKHNheSB5ICkJCitjKSBWZXJpZnkgcGFja2V0IHdhcyByZWNpZXZlZCBvbiBlZ3Jlc3NfcG9ydAorYikgU2VuZCBhIGV0aCBwYWNrZXQgd2l0aCB0Y3Bfc3JjIChzYXkgdyksIHRjcF9kc3QgKHNheSB2ICkKK2UpIFZlcmlmeSBQYWNrZXRJbiBldmVudCB3YXMgdHJpZ2dlcmVkIG9uIHRoZSBjb250cm9sIHBsYW5lCisKKworCisxNy4gQWxsIEhlYWRlciBGaWVsZHM6IEV4YWN0IE1hdGNoIGZsb3dzCisKK1Rlc3QgRGVzY3JpcHRpb246IFZlcmlmeSBleGFjdCBmbG93IG1hdGNoZXMgYXJlIHBvc3NpYmxlIAorCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaWxlOiBFeGFjdE1hdGNoCitQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisKK1Rlc3QgTm90ZXM6IAorCithKSBJbnNlcnQgYSBmbG93IHdpdGggZXhhY3QgbWF0Y2gsIGFjdGlvbiBvdXRwdXQgdG8gZWdyZXNzX3BvcnQKK2IpIFNlbmQgcGFja2V0IG1hdGNoaW5nIHRoZSBmbG93ICAKK2MpIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgb24gZWdyZXNzX3BvcnQKK2QpIFNlbmQgYSBub24tbWF0Y2hpbmcgcGFja2V0CitlKSBWZXJpZnkgUGFja2V0SW4gZXZlbnQgZ2V0cyB0cmlnZ2VyZWQKKworCisKKzE4LiBFeGFjdCBNYXRjaCBIaWdoZXN0IFByaW9yaXR5CisKK1Rlc3QgRGVzY3JpcHRpb246IEFuIGV4YWN0IG1hdGNoIGZsb3cgZW50cnkgaGFzIGEgaGlnaGVzdCBwcmlvcml0eSBjb21wYXJlZCB0byBvdGhlciBmbG93IGVudHJpZXMgCisKK1Rlc3QgbW9kZTogQXV0b21hdGVkCitUZXN0IFRpbGU6IEV4YWN0TWF0Y2hIaWdoCitQT3J0czogNCAoMSBDb250cm9sIFBsYW5lIDMgRGF0YSBQbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQorCisKK1Rlc3QgTm90ZXM6IAorCithKSBJbnNlcnQgdHdvIG92ZXJsYXBwaW5nIGZsb3dzOgorCUV4YWN0IE1hdGNoIChwcmlvID0gcCApICAgYWN0aW9uIGVncmVzc19wb3J0CisJV2lsZGFjcmQgQWxsIChwcmlvID0gcCsgKSBhY3Rpb24gZWdyZXNzX3BvcnQyCitiKSBTZW5kIHBhY2tldCBtYXRjaGluZyB0aGUgZmxvd3MKK2MpIFZlcmlmeSBwYWNrZXQgcmVjZWl2ZWQgb24gZWdyZXNzX3BvcnQgCisKKworCisKKzE5LiBXaWxkY2FyZCBNYXRjaCBIaWdoZXN0IFByaW9yaXR5CisKK1Rlc3QgRGVzY3JpcHRpb246IElmIFdpbGRjYXJkIGZsb3cgZW50cmllcyBoYXZlIHByaW9yaXR5IGFzc29jaWF0ZWQgd2l0aCB0aGVtLgorCQkgIEhpZ2hlciBwcmlvcml0eSBXaWxkY2FyZCBmbG93IG92ZXJyaWRlcyB0aGUgbG93ZXIgcHJpcm90eSBXaWxkY2FyZCBmbG93ICAKKworVGVzdCBtb2RlOiBBdXRvbWF0ZWQKK1Rlc3QgVGlsZTogV2lsZGNhcmRNYXRjaEhpZ2gKK1BPcnRzOiA0ICgxIENvbnRyb2wgUGxhbmUgMyBEYXRhIFBsYW5lKQorSW5pdGlhbCBTdGF0ZTogRGVmYXVsdCAoQ2xlYXIgc3dpdGNoIHN0YXRlKSwgQ29ubmVjdGlvbiBzZXR1cAorVGVzdC1GaWVsZDogTWFuZGF0b3J5CisKKworVGVzdCBOb3RlczogCisKK2EpIEluc2VydCB0d28gd2lsZGNhcmRlZCBmbG93cyA6CisJV2lsZGNhcmQgQWxsIEV4Y2VwdCBpbmdyZXNzIChwcmlvID0gcCApICwgYWN0aW9uID0gZWdyZXNzX3BvcnQKKwlXaWxkY2FyZCBBbGwgKHByaW8gPSBwKyApICxhY3Rpb24gPSBlZ3Jlc3NfcG9ydDIKK2IpIFNlbmQgcGFja2V0IG1hdGNoaW5nIHRoZSBmbG93cyAgCitjKSBWZXJpZnkgcGFja2V0IGlzIHJlY2lldmVkIG9uIGVncmVzc19wb3J0MgorCisKKworMjAuIEZyYWdtZW50IFRDUCBTZWdtZW50cyAtLS0tLS0+IFRCRCAKKworVGVzdCBEZXNjcmlwdGlvbjogQ3JlYXRlIGZsb3cgbWF0Y2hpbmcgb24gdGNwIHBvcnQgbnVtYmVyLiBWZXJpZnkgdGhhdCBmcmFnbWVudGVkIHBhY2tldHMgYWx3YXlzIG1hdGNoIHRoYXQgZmxvdyBydWxlLgorCitUZXN0IG1vZGU6IEF1dG9tYXRlZAorVGVzdCBUaWxlOiBGcmFnVGNwU2VnCitQT3J0czogMyAoMSBDb250cm9sIFBsYW5lIDIgRGF0YSBQbGFuZSkKK0luaXRpYWwgU3RhdGU6IERlZmF1bHQgKENsZWFyIHN3aXRjaCBzdGF0ZSksIENvbm5lY3Rpb24gc2V0dXAKK1Rlc3QtRmllbGQ6IE1hbmRhdG9yeQpkaWZmIC0tZ2l0IGEvRmFicmljL0RvYy9kb2NzL0RveHlmaWxlIGIvRmFicmljL0RvYy9kb2NzL0RveHlmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1Y2ZjNjMKLS0tIC9kZXYvbnVsbAorKysgYi9GYWJyaWMvRG9jL2RvY3MvRG94eWZpbGUKQEAgLTAsMCArMSwxNDE3IEBACisjIERveHlmaWxlIDEuNS42CisKKyMgVGhpcyBmaWxlIGRlc2NyaWJlcyB0aGUgc2V0dGluZ3MgdG8gYmUgdXNlZCBieSB0aGUgZG9jdW1lbnRhdGlvbiBzeXN0ZW0KKyMgZG94eWdlbiAod3d3LmRveHlnZW4ub3JnKSBmb3IgYSBwcm9qZWN0CisjCisjIEFsbCB0ZXh0IGFmdGVyIGEgaGFzaCAoIykgaXMgY29uc2lkZXJlZCBhIGNvbW1lbnQgYW5kIHdpbGwgYmUgaWdub3JlZAorIyBUaGUgZm9ybWF0IGlzOgorIyAgICAgICBUQUcgPSB2YWx1ZSBbdmFsdWUsIC4uLl0KKyMgRm9yIGxpc3RzIGl0ZW1zIGNhbiBhbHNvIGJlIGFwcGVuZGVkIHVzaW5nOgorIyAgICAgICBUQUcgKz0gdmFsdWUgW3ZhbHVlLCAuLi5dCisjIFZhbHVlcyB0aGF0IGNvbnRhaW4gc3BhY2VzIHNob3VsZCBiZSBwbGFjZWQgYmV0d2VlbiBxdW90ZXMgKCIgIikKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBQcm9qZWN0IHJlbGF0ZWQgY29uZmlndXJhdGlvbiBvcHRpb25zCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMgVGhpcyB0YWcgc3BlY2lmaWVzIHRoZSBlbmNvZGluZyB1c2VkIGZvciBhbGwgY2hhcmFjdGVycyBpbiB0aGUgY29uZmlnIGZpbGUgCisjIHRoYXQgZm9sbG93LiBUaGUgZGVmYXVsdCBpcyBVVEYtOCB3aGljaCBpcyBhbHNvIHRoZSBlbmNvZGluZyB1c2VkIGZvciBhbGwgCisjIHRleHQgYmVmb3JlIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHRoaXMgdGFnLiBEb3h5Z2VuIHVzZXMgbGliaWNvbnYgKG9yIHRoZSAKKyMgaWNvbnYgYnVpbHQgaW50byBsaWJjKSBmb3IgdGhlIHRyYW5zY29kaW5nLiBTZWUgCisjIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJpY29udiBmb3IgdGhlIGxpc3Qgb2YgcG9zc2libGUgZW5jb2RpbmdzLgorCitET1hZRklMRV9FTkNPRElORyAgICAgID0gVVRGLTgKKworIyBUaGUgUFJPSkVDVF9OQU1FIHRhZyBpcyBhIHNpbmdsZSB3b3JkIChvciBhIHNlcXVlbmNlIG9mIHdvcmRzIHN1cnJvdW5kZWQgCisjIGJ5IHF1b3RlcykgdGhhdCBzaG91bGQgaWRlbnRpZnkgdGhlIHByb2plY3QuCisKK1BST0pFQ1RfTkFNRSAgICAgICAgICAgPSAKKworIyBUaGUgUFJPSkVDVF9OVU1CRVIgdGFnIGNhbiBiZSB1c2VkIHRvIGVudGVyIGEgcHJvamVjdCBvciByZXZpc2lvbiBudW1iZXIuIAorIyBUaGlzIGNvdWxkIGJlIGhhbmR5IGZvciBhcmNoaXZpbmcgdGhlIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uIG9yIAorIyBpZiBzb21lIHZlcnNpb24gY29udHJvbCBzeXN0ZW0gaXMgdXNlZC4KKworUFJPSkVDVF9OVU1CRVIgICAgICAgICA9IAorCisjIFRoZSBPVVRQVVRfRElSRUNUT1JZIHRhZyBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIChyZWxhdGl2ZSBvciBhYnNvbHV0ZSkgCisjIGJhc2UgcGF0aCB3aGVyZSB0aGUgZ2VuZXJhdGVkIGRvY3VtZW50YXRpb24gd2lsbCBiZSBwdXQuIAorIyBJZiBhIHJlbGF0aXZlIHBhdGggaXMgZW50ZXJlZCwgaXQgd2lsbCBiZSByZWxhdGl2ZSB0byB0aGUgbG9jYXRpb24gCisjIHdoZXJlIGRveHlnZW4gd2FzIHN0YXJ0ZWQuIElmIGxlZnQgYmxhbmsgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IHdpbGwgYmUgdXNlZC4KKworT1VUUFVUX0RJUkVDVE9SWSAgICAgICA9IAorCisjIElmIHRoZSBDUkVBVEVfU1VCRElSUyB0YWcgaXMgc2V0IHRvIFlFUywgdGhlbiBkb3h5Z2VuIHdpbGwgY3JlYXRlIAorIyA0MDk2IHN1Yi1kaXJlY3RvcmllcyAoaW4gMiBsZXZlbHMpIHVuZGVyIHRoZSBvdXRwdXQgZGlyZWN0b3J5IG9mIGVhY2ggb3V0cHV0IAorIyBmb3JtYXQgYW5kIHdpbGwgZGlzdHJpYnV0ZSB0aGUgZ2VuZXJhdGVkIGZpbGVzIG92ZXIgdGhlc2UgZGlyZWN0b3JpZXMuIAorIyBFbmFibGluZyB0aGlzIG9wdGlvbiBjYW4gYmUgdXNlZnVsIHdoZW4gZmVlZGluZyBkb3h5Z2VuIGEgaHVnZSBhbW91bnQgb2YgCisjIHNvdXJjZSBmaWxlcywgd2hlcmUgcHV0dGluZyBhbGwgZ2VuZXJhdGVkIGZpbGVzIGluIHRoZSBzYW1lIGRpcmVjdG9yeSB3b3VsZCAKKyMgb3RoZXJ3aXNlIGNhdXNlIHBlcmZvcm1hbmNlIHByb2JsZW1zIGZvciB0aGUgZmlsZSBzeXN0ZW0uCisKK0NSRUFURV9TVUJESVJTICAgICAgICAgPSBOTworCisjIFRoZSBPVVRQVVRfTEFOR1VBR0UgdGFnIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgbGFuZ3VhZ2UgaW4gd2hpY2ggYWxsIAorIyBkb2N1bWVudGF0aW9uIGdlbmVyYXRlZCBieSBkb3h5Z2VuIGlzIHdyaXR0ZW4uIERveHlnZW4gd2lsbCB1c2UgdGhpcyAKKyMgaW5mb3JtYXRpb24gdG8gZ2VuZXJhdGUgYWxsIGNvbnN0YW50IG91dHB1dCBpbiB0aGUgcHJvcGVyIGxhbmd1YWdlLiAKKyMgVGhlIGRlZmF1bHQgbGFuZ3VhZ2UgaXMgRW5nbGlzaCwgb3RoZXIgc3VwcG9ydGVkIGxhbmd1YWdlcyBhcmU6IAorIyBBZnJpa2FhbnMsIEFyYWJpYywgQnJhemlsaWFuLCBDYXRhbGFuLCBDaGluZXNlLCBDaGluZXNlLVRyYWRpdGlvbmFsLCAKKyMgQ3JvYXRpYW4sIEN6ZWNoLCBEYW5pc2gsIER1dGNoLCBGYXJzaSwgRmlubmlzaCwgRnJlbmNoLCBHZXJtYW4sIEdyZWVrLCAKKyMgSHVuZ2FyaWFuLCBJdGFsaWFuLCBKYXBhbmVzZSwgSmFwYW5lc2UtZW4gKEphcGFuZXNlIHdpdGggRW5nbGlzaCBtZXNzYWdlcyksIAorIyBLb3JlYW4sIEtvcmVhbi1lbiwgTGl0aHVhbmlhbiwgTm9yd2VnaWFuLCBNYWNlZG9uaWFuLCBQZXJzaWFuLCBQb2xpc2gsIAorIyBQb3J0dWd1ZXNlLCBSb21hbmlhbiwgUnVzc2lhbiwgU2VyYmlhbiwgU2xvdmFrLCBTbG92ZW5lLCBTcGFuaXNoLCBTd2VkaXNoLCAKKyMgYW5kIFVrcmFpbmlhbi4KKworT1VUUFVUX0xBTkdVQUdFICAgICAgICA9IEVuZ2xpc2gKKworIyBJZiB0aGUgQlJJRUZfTUVNQkVSX0RFU0MgdGFnIGlzIHNldCB0byBZRVMgKHRoZSBkZWZhdWx0KSBEb3h5Z2VuIHdpbGwgCisjIGluY2x1ZGUgYnJpZWYgbWVtYmVyIGRlc2NyaXB0aW9ucyBhZnRlciB0aGUgbWVtYmVycyB0aGF0IGFyZSBsaXN0ZWQgaW4gCisjIHRoZSBmaWxlIGFuZCBjbGFzcyBkb2N1bWVudGF0aW9uIChzaW1pbGFyIHRvIEphdmFEb2MpLiAKKyMgU2V0IHRvIE5PIHRvIGRpc2FibGUgdGhpcy4KKworQlJJRUZfTUVNQkVSX0RFU0MgICAgICA9IFlFUworCisjIElmIHRoZSBSRVBFQVRfQlJJRUYgdGFnIGlzIHNldCB0byBZRVMgKHRoZSBkZWZhdWx0KSBEb3h5Z2VuIHdpbGwgcHJlcGVuZCAKKyMgdGhlIGJyaWVmIGRlc2NyaXB0aW9uIG9mIGEgbWVtYmVyIG9yIGZ1bmN0aW9uIGJlZm9yZSB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uIAorIyBOb3RlOiBpZiBib3RoIEhJREVfVU5ET0NfTUVNQkVSUyBhbmQgQlJJRUZfTUVNQkVSX0RFU0MgYXJlIHNldCB0byBOTywgdGhlIAorIyBicmllZiBkZXNjcmlwdGlvbnMgd2lsbCBiZSBjb21wbGV0ZWx5IHN1cHByZXNzZWQuCisKK1JFUEVBVF9CUklFRiAgICAgICAgICAgPSBZRVMKKworIyBUaGlzIHRhZyBpbXBsZW1lbnRzIGEgcXVhc2ktaW50ZWxsaWdlbnQgYnJpZWYgZGVzY3JpcHRpb24gYWJicmV2aWF0b3IgCisjIHRoYXQgaXMgdXNlZCB0byBmb3JtIHRoZSB0ZXh0IGluIHZhcmlvdXMgbGlzdGluZ3MuIEVhY2ggc3RyaW5nIAorIyBpbiB0aGlzIGxpc3QsIGlmIGZvdW5kIGFzIHRoZSBsZWFkaW5nIHRleHQgb2YgdGhlIGJyaWVmIGRlc2NyaXB0aW9uLCB3aWxsIGJlIAorIyBzdHJpcHBlZCBmcm9tIHRoZSB0ZXh0IGFuZCB0aGUgcmVzdWx0IGFmdGVyIHByb2Nlc3NpbmcgdGhlIHdob2xlIGxpc3QsIGlzIAorIyB1c2VkIGFzIHRoZSBhbm5vdGF0ZWQgdGV4dC4gT3RoZXJ3aXNlLCB0aGUgYnJpZWYgZGVzY3JpcHRpb24gaXMgdXNlZCBhcy1pcy4gCisjIElmIGxlZnQgYmxhbmssIHRoZSBmb2xsb3dpbmcgdmFsdWVzIGFyZSB1c2VkICgiJG5hbWUiIGlzIGF1dG9tYXRpY2FsbHkgCisjIHJlcGxhY2VkIHdpdGggdGhlIG5hbWUgb2YgdGhlIGVudGl0eSk6ICJUaGUgJG5hbWUgY2xhc3MiICJUaGUgJG5hbWUgd2lkZ2V0IiAKKyMgIlRoZSAkbmFtZSBmaWxlIiAiaXMiICJwcm92aWRlcyIgInNwZWNpZmllcyIgImNvbnRhaW5zIiAKKyMgInJlcHJlc2VudHMiICJhIiAiYW4iICJ0aGUiCisKK0FCQlJFVklBVEVfQlJJRUYgICAgICAgPSAKKworIyBJZiB0aGUgQUxXQVlTX0RFVEFJTEVEX1NFQyBhbmQgUkVQRUFUX0JSSUVGIHRhZ3MgYXJlIGJvdGggc2V0IHRvIFlFUyB0aGVuIAorIyBEb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSBkZXRhaWxlZCBzZWN0aW9uIGV2ZW4gaWYgdGhlcmUgaXMgb25seSBhIGJyaWVmIAorIyBkZXNjcmlwdGlvbi4KKworQUxXQVlTX0RFVEFJTEVEX1NFQyAgICA9IE5PCisKKyMgSWYgdGhlIElOTElORV9JTkhFUklURURfTUVNQiB0YWcgaXMgc2V0IHRvIFlFUywgZG94eWdlbiB3aWxsIHNob3cgYWxsIAorIyBpbmhlcml0ZWQgbWVtYmVycyBvZiBhIGNsYXNzIGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoYXQgY2xhc3MgYXMgaWYgdGhvc2UgCisjIG1lbWJlcnMgd2VyZSBvcmRpbmFyeSBjbGFzcyBtZW1iZXJzLiBDb25zdHJ1Y3RvcnMsIGRlc3RydWN0b3JzIGFuZCBhc3NpZ25tZW50IAorIyBvcGVyYXRvcnMgb2YgdGhlIGJhc2UgY2xhc3NlcyB3aWxsIG5vdCBiZSBzaG93bi4KKworSU5MSU5FX0lOSEVSSVRFRF9NRU1CICA9IE5PCisKKyMgSWYgdGhlIEZVTExfUEFUSF9OQU1FUyB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIERveHlnZW4gd2lsbCBwcmVwZW5kIHRoZSBmdWxsIAorIyBwYXRoIGJlZm9yZSBmaWxlcyBuYW1lIGluIHRoZSBmaWxlIGxpc3QgYW5kIGluIHRoZSBoZWFkZXIgZmlsZXMuIElmIHNldCAKKyMgdG8gTk8gdGhlIHNob3J0ZXN0IHBhdGggdGhhdCBtYWtlcyB0aGUgZmlsZSBuYW1lIHVuaXF1ZSB3aWxsIGJlIHVzZWQuCisKK0ZVTExfUEFUSF9OQU1FUyAgICAgICAgPSBZRVMKKworIyBJZiB0aGUgRlVMTF9QQVRIX05BTUVTIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gdGhlIFNUUklQX0ZST01fUEFUSCB0YWcgCisjIGNhbiBiZSB1c2VkIHRvIHN0cmlwIGEgdXNlci1kZWZpbmVkIHBhcnQgb2YgdGhlIHBhdGguIFN0cmlwcGluZyBpcyAKKyMgb25seSBkb25lIGlmIG9uZSBvZiB0aGUgc3BlY2lmaWVkIHN0cmluZ3MgbWF0Y2hlcyB0aGUgbGVmdC1oYW5kIHBhcnQgb2YgCisjIHRoZSBwYXRoLiBUaGUgdGFnIGNhbiBiZSB1c2VkIHRvIHNob3cgcmVsYXRpdmUgcGF0aHMgaW4gdGhlIGZpbGUgbGlzdC4gCisjIElmIGxlZnQgYmxhbmsgdGhlIGRpcmVjdG9yeSBmcm9tIHdoaWNoIGRveHlnZW4gaXMgcnVuIGlzIHVzZWQgYXMgdGhlIAorIyBwYXRoIHRvIHN0cmlwLgorCitTVFJJUF9GUk9NX1BBVEggICAgICAgID0gCisKKyMgVGhlIFNUUklQX0ZST01fSU5DX1BBVEggdGFnIGNhbiBiZSB1c2VkIHRvIHN0cmlwIGEgdXNlci1kZWZpbmVkIHBhcnQgb2YgCisjIHRoZSBwYXRoIG1lbnRpb25lZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiBvZiBhIGNsYXNzLCB3aGljaCB0ZWxscyAKKyMgdGhlIHJlYWRlciB3aGljaCBoZWFkZXIgZmlsZSB0byBpbmNsdWRlIGluIG9yZGVyIHRvIHVzZSBhIGNsYXNzLiAKKyMgSWYgbGVmdCBibGFuayBvbmx5IHRoZSBuYW1lIG9mIHRoZSBoZWFkZXIgZmlsZSBjb250YWluaW5nIHRoZSBjbGFzcyAKKyMgZGVmaW5pdGlvbiBpcyB1c2VkLiBPdGhlcndpc2Ugb25lIHNob3VsZCBzcGVjaWZ5IHRoZSBpbmNsdWRlIHBhdGhzIHRoYXQgCisjIGFyZSBub3JtYWxseSBwYXNzZWQgdG8gdGhlIGNvbXBpbGVyIHVzaW5nIHRoZSAtSSBmbGFnLgorCitTVFJJUF9GUk9NX0lOQ19QQVRIICAgID0gCisKKyMgSWYgdGhlIFNIT1JUX05BTUVTIHRhZyBpcyBzZXQgdG8gWUVTLCBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgbXVjaCBzaG9ydGVyIAorIyAoYnV0IGxlc3MgcmVhZGFibGUpIGZpbGUgbmFtZXMuIFRoaXMgY2FuIGJlIHVzZWZ1bCBpcyB5b3VyIGZpbGUgc3lzdGVtcyAKKyMgZG9lc24ndCBzdXBwb3J0IGxvbmcgbmFtZXMgbGlrZSBvbiBET1MsIE1hYywgb3IgQ0QtUk9NLgorCitTSE9SVF9OQU1FUyAgICAgICAgICAgID0gTk8KKworIyBJZiB0aGUgSkFWQURPQ19BVVRPQlJJRUYgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBEb3h5Z2VuIAorIyB3aWxsIGludGVycHJldCB0aGUgZmlyc3QgbGluZSAodW50aWwgdGhlIGZpcnN0IGRvdCkgb2YgYSBKYXZhRG9jLXN0eWxlIAorIyBjb21tZW50IGFzIHRoZSBicmllZiBkZXNjcmlwdGlvbi4gSWYgc2V0IHRvIE5PLCB0aGUgSmF2YURvYyAKKyMgY29tbWVudHMgd2lsbCBiZWhhdmUganVzdCBsaWtlIHJlZ3VsYXIgUXQtc3R5bGUgY29tbWVudHMgCisjICh0aHVzIHJlcXVpcmluZyBhbiBleHBsaWNpdCBAYnJpZWYgY29tbWFuZCBmb3IgYSBicmllZiBkZXNjcmlwdGlvbi4pCisKK0pBVkFET0NfQVVUT0JSSUVGICAgICAgPSBOTworCisjIElmIHRoZSBRVF9BVVRPQlJJRUYgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBEb3h5Z2VuIHdpbGwgCisjIGludGVycHJldCB0aGUgZmlyc3QgbGluZSAodW50aWwgdGhlIGZpcnN0IGRvdCkgb2YgYSBRdC1zdHlsZSAKKyMgY29tbWVudCBhcyB0aGUgYnJpZWYgZGVzY3JpcHRpb24uIElmIHNldCB0byBOTywgdGhlIGNvbW1lbnRzIAorIyB3aWxsIGJlaGF2ZSBqdXN0IGxpa2UgcmVndWxhciBRdC1zdHlsZSBjb21tZW50cyAodGh1cyByZXF1aXJpbmcgCisjIGFuIGV4cGxpY2l0IFxicmllZiBjb21tYW5kIGZvciBhIGJyaWVmIGRlc2NyaXB0aW9uLikKKworUVRfQVVUT0JSSUVGICAgICAgICAgICA9IE5PCisKKyMgVGhlIE1VTFRJTElORV9DUFBfSVNfQlJJRUYgdGFnIGNhbiBiZSBzZXQgdG8gWUVTIHRvIG1ha2UgRG94eWdlbiAKKyMgdHJlYXQgYSBtdWx0aS1saW5lIEMrKyBzcGVjaWFsIGNvbW1lbnQgYmxvY2sgKGkuZS4gYSBibG9jayBvZiAvLyEgb3IgLy8vIAorIyBjb21tZW50cykgYXMgYSBicmllZiBkZXNjcmlwdGlvbi4gVGhpcyB1c2VkIHRvIGJlIHRoZSBkZWZhdWx0IGJlaGF2aW91ci4gCisjIFRoZSBuZXcgZGVmYXVsdCBpcyB0byB0cmVhdCBhIG11bHRpLWxpbmUgQysrIGNvbW1lbnQgYmxvY2sgYXMgYSBkZXRhaWxlZCAKKyMgZGVzY3JpcHRpb24uIFNldCB0aGlzIHRhZyB0byBZRVMgaWYgeW91IHByZWZlciB0aGUgb2xkIGJlaGF2aW91ciBpbnN0ZWFkLgorCitNVUxUSUxJTkVfQ1BQX0lTX0JSSUVGID0gTk8KKworIyBJZiB0aGUgREVUQUlMU19BVF9UT1AgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBEb3h5Z2VuIAorIyB3aWxsIG91dHB1dCB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24gbmVhciB0aGUgdG9wLCBsaWtlIEphdmFEb2MuCisjIElmIHNldCB0byBOTywgdGhlIGRldGFpbGVkIGRlc2NyaXB0aW9uIGFwcGVhcnMgYWZ0ZXIgdGhlIG1lbWJlciAKKyMgZG9jdW1lbnRhdGlvbi4KKworREVUQUlMU19BVF9UT1AgICAgICAgICA9IE5PCisKKyMgSWYgdGhlIElOSEVSSVRfRE9DUyB0YWcgaXMgc2V0IHRvIFlFUyAodGhlIGRlZmF1bHQpIHRoZW4gYW4gdW5kb2N1bWVudGVkIAorIyBtZW1iZXIgaW5oZXJpdHMgdGhlIGRvY3VtZW50YXRpb24gZnJvbSBhbnkgZG9jdW1lbnRlZCBtZW1iZXIgdGhhdCBpdCAKKyMgcmUtaW1wbGVtZW50cy4KKworSU5IRVJJVF9ET0NTICAgICAgICAgICA9IFlFUworCisjIElmIHRoZSBTRVBBUkFURV9NRU1CRVJfUEFHRVMgdGFnIGlzIHNldCB0byBZRVMsIHRoZW4gZG94eWdlbiB3aWxsIHByb2R1Y2UgCisjIGEgbmV3IHBhZ2UgZm9yIGVhY2ggbWVtYmVyLiBJZiBzZXQgdG8gTk8sIHRoZSBkb2N1bWVudGF0aW9uIG9mIGEgbWVtYmVyIHdpbGwgCisjIGJlIHBhcnQgb2YgdGhlIGZpbGUvY2xhc3MvbmFtZXNwYWNlIHRoYXQgY29udGFpbnMgaXQuCisKK1NFUEFSQVRFX01FTUJFUl9QQUdFUyAgPSBOTworCisjIFRoZSBUQUJfU0laRSB0YWcgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBudW1iZXIgb2Ygc3BhY2VzIGluIGEgdGFiLiAKKyMgRG94eWdlbiB1c2VzIHRoaXMgdmFsdWUgdG8gcmVwbGFjZSB0YWJzIGJ5IHNwYWNlcyBpbiBjb2RlIGZyYWdtZW50cy4KKworVEFCX1NJWkUgICAgICAgICAgICAgICA9IDgKKworIyBUaGlzIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGEgbnVtYmVyIG9mIGFsaWFzZXMgdGhhdCBhY3RzIAorIyBhcyBjb21tYW5kcyBpbiB0aGUgZG9jdW1lbnRhdGlvbi4gQW4gYWxpYXMgaGFzIHRoZSBmb3JtICJuYW1lPXZhbHVlIi4gCisjIEZvciBleGFtcGxlIGFkZGluZyAic2lkZWVmZmVjdD1ccGFyIFNpZGUgRWZmZWN0czpcbiIgd2lsbCBhbGxvdyB5b3UgdG8gCisjIHB1dCB0aGUgY29tbWFuZCBcc2lkZWVmZmVjdCAob3IgQHNpZGVlZmZlY3QpIGluIHRoZSBkb2N1bWVudGF0aW9uLCB3aGljaCAKKyMgd2lsbCByZXN1bHQgaW4gYSB1c2VyLWRlZmluZWQgcGFyYWdyYXBoIHdpdGggaGVhZGluZyAiU2lkZSBFZmZlY3RzOiIuIAorIyBZb3UgY2FuIHB1dCBcbidzIGluIHRoZSB2YWx1ZSBwYXJ0IG9mIGFuIGFsaWFzIHRvIGluc2VydCBuZXdsaW5lcy4KKworQUxJQVNFUyAgICAgICAgICAgICAgICA9IAorCisjIFNldCB0aGUgT1BUSU1JWkVfT1VUUFVUX0ZPUl9DIHRhZyB0byBZRVMgaWYgeW91ciBwcm9qZWN0IGNvbnNpc3RzIG9mIEMgCisjIHNvdXJjZXMgb25seS4gRG94eWdlbiB3aWxsIHRoZW4gZ2VuZXJhdGUgb3V0cHV0IHRoYXQgaXMgbW9yZSB0YWlsb3JlZCBmb3IgQy4gCisjIEZvciBpbnN0YW5jZSwgc29tZSBvZiB0aGUgbmFtZXMgdGhhdCBhcmUgdXNlZCB3aWxsIGJlIGRpZmZlcmVudC4gVGhlIGxpc3QgCisjIG9mIGFsbCBtZW1iZXJzIHdpbGwgYmUgb21pdHRlZCwgZXRjLgorCitPUFRJTUlaRV9PVVRQVVRfRk9SX0MgID0gTk8KKworIyBTZXQgdGhlIE9QVElNSVpFX09VVFBVVF9KQVZBIHRhZyB0byBZRVMgaWYgeW91ciBwcm9qZWN0IGNvbnNpc3RzIG9mIEphdmEgCisjIHNvdXJjZXMgb25seS4gRG94eWdlbiB3aWxsIHRoZW4gZ2VuZXJhdGUgb3V0cHV0IHRoYXQgaXMgbW9yZSB0YWlsb3JlZCBmb3IgCisjIEphdmEuIEZvciBpbnN0YW5jZSwgbmFtZXNwYWNlcyB3aWxsIGJlIHByZXNlbnRlZCBhcyBwYWNrYWdlcywgcXVhbGlmaWVkIAorIyBzY29wZXMgd2lsbCBsb29rIGRpZmZlcmVudCwgZXRjLgorCitPUFRJTUlaRV9PVVRQVVRfSkFWQSAgID0gWUVTCisKKyMgU2V0IHRoZSBPUFRJTUlaRV9GT1JfRk9SVFJBTiB0YWcgdG8gWUVTIGlmIHlvdXIgcHJvamVjdCBjb25zaXN0cyBvZiBGb3J0cmFuIAorIyBzb3VyY2VzIG9ubHkuIERveHlnZW4gd2lsbCB0aGVuIGdlbmVyYXRlIG91dHB1dCB0aGF0IGlzIG1vcmUgdGFpbG9yZWQgZm9yIAorIyBGb3J0cmFuLgorCitPUFRJTUlaRV9GT1JfRk9SVFJBTiAgID0gTk8KKworIyBTZXQgdGhlIE9QVElNSVpFX09VVFBVVF9WSERMIHRhZyB0byBZRVMgaWYgeW91ciBwcm9qZWN0IGNvbnNpc3RzIG9mIFZIREwgCisjIHNvdXJjZXMuIERveHlnZW4gd2lsbCB0aGVuIGdlbmVyYXRlIG91dHB1dCB0aGF0IGlzIHRhaWxvcmVkIGZvciAKKyMgVkhETC4KKworT1BUSU1JWkVfT1VUUFVUX1ZIREwgICA9IE5PCisKKyMgSWYgeW91IHVzZSBTVEwgY2xhc3NlcyAoaS5lLiBzdGQ6OnN0cmluZywgc3RkOjp2ZWN0b3IsIGV0Yy4pIGJ1dCBkbyBub3Qgd2FudCAKKyMgdG8gaW5jbHVkZSAoYSB0YWcgZmlsZSBmb3IpIHRoZSBTVEwgc291cmNlcyBhcyBpbnB1dCwgdGhlbiB5b3Ugc2hvdWxkIAorIyBzZXQgdGhpcyB0YWcgdG8gWUVTIGluIG9yZGVyIHRvIGxldCBkb3h5Z2VuIG1hdGNoIGZ1bmN0aW9ucyBkZWNsYXJhdGlvbnMgYW5kIAorIyBkZWZpbml0aW9ucyB3aG9zZSBhcmd1bWVudHMgY29udGFpbiBTVEwgY2xhc3NlcyAoZS5nLiBmdW5jKHN0ZDo6c3RyaW5nKTsgdi5zLiAKKyMgZnVuYyhzdGQ6OnN0cmluZykge30pLiBUaGlzIGFsc28gbWFrZSB0aGUgaW5oZXJpdGFuY2UgYW5kIGNvbGxhYm9yYXRpb24gCisjIGRpYWdyYW1zIHRoYXQgaW52b2x2ZSBTVEwgY2xhc3NlcyBtb3JlIGNvbXBsZXRlIGFuZCBhY2N1cmF0ZS4KKworQlVJTFRJTl9TVExfU1VQUE9SVCAgICA9IE5PCisKKyMgSWYgeW91IHVzZSBNaWNyb3NvZnQncyBDKysvQ0xJIGxhbmd1YWdlLCB5b3Ugc2hvdWxkIHNldCB0aGlzIG9wdGlvbiB0byBZRVMgdG8KKyMgZW5hYmxlIHBhcnNpbmcgc3VwcG9ydC4KKworQ1BQX0NMSV9TVVBQT1JUICAgICAgICA9IE5PCisKKyMgU2V0IHRoZSBTSVBfU1VQUE9SVCB0YWcgdG8gWUVTIGlmIHlvdXIgcHJvamVjdCBjb25zaXN0cyBvZiBzaXAgc291cmNlcyBvbmx5LiAKKyMgRG94eWdlbiB3aWxsIHBhcnNlIHRoZW0gbGlrZSBub3JtYWwgQysrIGJ1dCB3aWxsIGFzc3VtZSBhbGwgY2xhc3NlcyB1c2UgcHVibGljIAorIyBpbnN0ZWFkIG9mIHByaXZhdGUgaW5oZXJpdGFuY2Ugd2hlbiBubyBleHBsaWNpdCBwcm90ZWN0aW9uIGtleXdvcmQgaXMgcHJlc2VudC4KKworU0lQX1NVUFBPUlQgICAgICAgICAgICA9IE5PCisKKyMgRm9yIE1pY3Jvc29mdCdzIElETCB0aGVyZSBhcmUgcHJvcGdldCBhbmQgcHJvcHB1dCBhdHRyaWJ1dGVzIHRvIGluZGljYXRlIGdldHRlciAKKyMgYW5kIHNldHRlciBtZXRob2RzIGZvciBhIHByb3BlcnR5LiBTZXR0aW5nIHRoaXMgb3B0aW9uIHRvIFlFUyAodGhlIGRlZmF1bHQpIAorIyB3aWxsIG1ha2UgZG94eWdlbiB0byByZXBsYWNlIHRoZSBnZXQgYW5kIHNldCBtZXRob2RzIGJ5IGEgcHJvcGVydHkgaW4gdGhlIAorIyBkb2N1bWVudGF0aW9uLiBUaGlzIHdpbGwgb25seSB3b3JrIGlmIHRoZSBtZXRob2RzIGFyZSBpbmRlZWQgZ2V0dGluZyBvciAKKyMgc2V0dGluZyBhIHNpbXBsZSB0eXBlLiBJZiB0aGlzIGlzIG5vdCB0aGUgY2FzZSwgb3IgeW91IHdhbnQgdG8gc2hvdyB0aGUgCisjIG1ldGhvZHMgYW55d2F5LCB5b3Ugc2hvdWxkIHNldCB0aGlzIG9wdGlvbiB0byBOTy4KKworSURMX1BST1BFUlRZX1NVUFBPUlQgICA9IFlFUworCisjIElmIG1lbWJlciBncm91cGluZyBpcyB1c2VkIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZCB0aGUgRElTVFJJQlVURV9HUk9VUF9ET0MgCisjIHRhZyBpcyBzZXQgdG8gWUVTLCB0aGVuIGRveHlnZW4gd2lsbCByZXVzZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgZmlyc3QgCisjIG1lbWJlciBpbiB0aGUgZ3JvdXAgKGlmIGFueSkgZm9yIHRoZSBvdGhlciBtZW1iZXJzIG9mIHRoZSBncm91cC4gQnkgZGVmYXVsdCAKKyMgYWxsIG1lbWJlcnMgb2YgYSBncm91cCBtdXN0IGJlIGRvY3VtZW50ZWQgZXhwbGljaXRseS4KKworRElTVFJJQlVURV9HUk9VUF9ET0MgICA9IE5PCisKKyMgU2V0IHRoZSBTVUJHUk9VUElORyB0YWcgdG8gWUVTICh0aGUgZGVmYXVsdCkgdG8gYWxsb3cgY2xhc3MgbWVtYmVyIGdyb3VwcyBvZiAKKyMgdGhlIHNhbWUgdHlwZSAoZm9yIGluc3RhbmNlIGEgZ3JvdXAgb2YgcHVibGljIGZ1bmN0aW9ucykgdG8gYmUgcHV0IGFzIGEgCisjIHN1Ymdyb3VwIG9mIHRoYXQgdHlwZSAoZS5nLiB1bmRlciB0aGUgUHVibGljIEZ1bmN0aW9ucyBzZWN0aW9uKS4gU2V0IGl0IHRvIAorIyBOTyB0byBwcmV2ZW50IHN1Ymdyb3VwaW5nLiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGNhbiBiZSBkb25lIHBlciBjbGFzcyB1c2luZyAKKyMgdGhlIFxub3N1Ymdyb3VwaW5nIGNvbW1hbmQuCisKK1NVQkdST1VQSU5HICAgICAgICAgICAgPSBZRVMKKworIyBXaGVuIFRZUEVERUZfSElERVNfU1RSVUNUIGlzIGVuYWJsZWQsIGEgdHlwZWRlZiBvZiBhIHN0cnVjdCwgdW5pb24sIG9yIGVudW0gCisjIGlzIGRvY3VtZW50ZWQgYXMgc3RydWN0LCB1bmlvbiwgb3IgZW51bSB3aXRoIHRoZSBuYW1lIG9mIHRoZSB0eXBlZGVmLiBTbyAKKyMgdHlwZWRlZiBzdHJ1Y3QgVHlwZVMge30gVHlwZVQsIHdpbGwgYXBwZWFyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFzIGEgc3RydWN0IAorIyB3aXRoIG5hbWUgVHlwZVQuIFdoZW4gZGlzYWJsZWQgdGhlIHR5cGVkZWYgd2lsbCBhcHBlYXIgYXMgYSBtZW1iZXIgb2YgYSBmaWxlLCAKKyMgbmFtZXNwYWNlLCBvciBjbGFzcy4gQW5kIHRoZSBzdHJ1Y3Qgd2lsbCBiZSBuYW1lZCBUeXBlUy4gVGhpcyBjYW4gdHlwaWNhbGx5IAorIyBiZSB1c2VmdWwgZm9yIEMgY29kZSBpbiBjYXNlIHRoZSBjb2RpbmcgY29udmVudGlvbiBkaWN0YXRlcyB0aGF0IGFsbCBjb21wb3VuZCAKKyMgdHlwZXMgYXJlIHR5cGVkZWYnZWQgYW5kIG9ubHkgdGhlIHR5cGVkZWYgaXMgcmVmZXJlbmNlZCwgbmV2ZXIgdGhlIHRhZyBuYW1lLgorCitUWVBFREVGX0hJREVTX1NUUlVDVCAgID0gTk8KKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBCdWlsZCByZWxhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIElmIHRoZSBFWFRSQUNUX0FMTCB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIHdpbGwgYXNzdW1lIGFsbCBlbnRpdGllcyBpbiAKKyMgZG9jdW1lbnRhdGlvbiBhcmUgZG9jdW1lbnRlZCwgZXZlbiBpZiBubyBkb2N1bWVudGF0aW9uIHdhcyBhdmFpbGFibGUuIAorIyBQcml2YXRlIGNsYXNzIG1lbWJlcnMgYW5kIHN0YXRpYyBmaWxlIG1lbWJlcnMgd2lsbCBiZSBoaWRkZW4gdW5sZXNzIAorIyB0aGUgRVhUUkFDVF9QUklWQVRFIGFuZCBFWFRSQUNUX1NUQVRJQyB0YWdzIGFyZSBzZXQgdG8gWUVTCisKK0VYVFJBQ1RfQUxMICAgICAgICAgICAgPSBZRVMKKworIyBJZiB0aGUgRVhUUkFDVF9QUklWQVRFIHRhZyBpcyBzZXQgdG8gWUVTIGFsbCBwcml2YXRlIG1lbWJlcnMgb2YgYSBjbGFzcyAKKyMgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbi4KKworRVhUUkFDVF9QUklWQVRFICAgICAgICA9IE5PCisKKyMgSWYgdGhlIEVYVFJBQ1RfU1RBVElDIHRhZyBpcyBzZXQgdG8gWUVTIGFsbCBzdGF0aWMgbWVtYmVycyBvZiBhIGZpbGUgCisjIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIGRvY3VtZW50YXRpb24uCisKK0VYVFJBQ1RfU1RBVElDICAgICAgICAgPSBOTworCisjIElmIHRoZSBFWFRSQUNUX0xPQ0FMX0NMQVNTRVMgdGFnIGlzIHNldCB0byBZRVMgY2xhc3NlcyAoYW5kIHN0cnVjdHMpIAorIyBkZWZpbmVkIGxvY2FsbHkgaW4gc291cmNlIGZpbGVzIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIGRvY3VtZW50YXRpb24uIAorIyBJZiBzZXQgdG8gTk8gb25seSBjbGFzc2VzIGRlZmluZWQgaW4gaGVhZGVyIGZpbGVzIGFyZSBpbmNsdWRlZC4KKworRVhUUkFDVF9MT0NBTF9DTEFTU0VTICA9IFlFUworCisjIFRoaXMgZmxhZyBpcyBvbmx5IHVzZWZ1bCBmb3IgT2JqZWN0aXZlLUMgY29kZS4gV2hlbiBzZXQgdG8gWUVTIGxvY2FsIAorIyBtZXRob2RzLCB3aGljaCBhcmUgZGVmaW5lZCBpbiB0aGUgaW1wbGVtZW50YXRpb24gc2VjdGlvbiBidXQgbm90IGluIAorIyB0aGUgaW50ZXJmYWNlIGFyZSBpbmNsdWRlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbi4gCisjIElmIHNldCB0byBOTyAodGhlIGRlZmF1bHQpIG9ubHkgbWV0aG9kcyBpbiB0aGUgaW50ZXJmYWNlIGFyZSBpbmNsdWRlZC4KKworRVhUUkFDVF9MT0NBTF9NRVRIT0RTICA9IE5PCisKKyMgSWYgdGhpcyBmbGFnIGlzIHNldCB0byBZRVMsIHRoZSBtZW1iZXJzIG9mIGFub255bW91cyBuYW1lc3BhY2VzIHdpbGwgYmUgCisjIGV4dHJhY3RlZCBhbmQgYXBwZWFyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFzIGEgbmFtZXNwYWNlIGNhbGxlZCAKKyMgJ2Fub255bW91c19uYW1lc3BhY2V7ZmlsZX0nLCB3aGVyZSBmaWxlIHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgYmFzZSAKKyMgbmFtZSBvZiB0aGUgZmlsZSB0aGF0IGNvbnRhaW5zIHRoZSBhbm9ueW1vdXMgbmFtZXNwYWNlLiBCeSBkZWZhdWx0IAorIyBhbm9ueW1vdXMgbmFtZXNwYWNlIGFyZSBoaWRkZW4uCisKK0VYVFJBQ1RfQU5PTl9OU1BBQ0VTICAgPSBOTworCisjIElmIHRoZSBISURFX1VORE9DX01FTUJFUlMgdGFnIGlzIHNldCB0byBZRVMsIERveHlnZW4gd2lsbCBoaWRlIGFsbCAKKyMgdW5kb2N1bWVudGVkIG1lbWJlcnMgb2YgZG9jdW1lbnRlZCBjbGFzc2VzLCBmaWxlcyBvciBuYW1lc3BhY2VzLiAKKyMgSWYgc2V0IHRvIE5PICh0aGUgZGVmYXVsdCkgdGhlc2UgbWVtYmVycyB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSAKKyMgdmFyaW91cyBvdmVydmlld3MsIGJ1dCBubyBkb2N1bWVudGF0aW9uIHNlY3Rpb24gaXMgZ2VuZXJhdGVkLiAKKyMgVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBpZiBFWFRSQUNUX0FMTCBpcyBlbmFibGVkLgorCitISURFX1VORE9DX01FTUJFUlMgICAgID0gTk8KKworIyBJZiB0aGUgSElERV9VTkRPQ19DTEFTU0VTIHRhZyBpcyBzZXQgdG8gWUVTLCBEb3h5Z2VuIHdpbGwgaGlkZSBhbGwgCisjIHVuZG9jdW1lbnRlZCBjbGFzc2VzIHRoYXQgYXJlIG5vcm1hbGx5IHZpc2libGUgaW4gdGhlIGNsYXNzIGhpZXJhcmNoeS4gCisjIElmIHNldCB0byBOTyAodGhlIGRlZmF1bHQpIHRoZXNlIGNsYXNzZXMgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgdmFyaW91cyAKKyMgb3ZlcnZpZXdzLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IGlmIEVYVFJBQ1RfQUxMIGlzIGVuYWJsZWQuCisKK0hJREVfVU5ET0NfQ0xBU1NFUyAgICAgPSBOTworCisjIElmIHRoZSBISURFX0ZSSUVORF9DT01QT1VORFMgdGFnIGlzIHNldCB0byBZRVMsIERveHlnZW4gd2lsbCBoaWRlIGFsbCAKKyMgZnJpZW5kIChjbGFzc3xzdHJ1Y3R8dW5pb24pIGRlY2xhcmF0aW9ucy4gCisjIElmIHNldCB0byBOTyAodGhlIGRlZmF1bHQpIHRoZXNlIGRlY2xhcmF0aW9ucyB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSAKKyMgZG9jdW1lbnRhdGlvbi4KKworSElERV9GUklFTkRfQ09NUE9VTkRTICA9IE5PCisKKyMgSWYgdGhlIEhJREVfSU5fQk9EWV9ET0NTIHRhZyBpcyBzZXQgdG8gWUVTLCBEb3h5Z2VuIHdpbGwgaGlkZSBhbnkgCisjIGRvY3VtZW50YXRpb24gYmxvY2tzIGZvdW5kIGluc2lkZSB0aGUgYm9keSBvZiBhIGZ1bmN0aW9uLiAKKyMgSWYgc2V0IHRvIE5PICh0aGUgZGVmYXVsdCkgdGhlc2UgYmxvY2tzIHdpbGwgYmUgYXBwZW5kZWQgdG8gdGhlIAorIyBmdW5jdGlvbidzIGRldGFpbGVkIGRvY3VtZW50YXRpb24gYmxvY2suCisKK0hJREVfSU5fQk9EWV9ET0NTICAgICAgPSBOTworCisjIFRoZSBJTlRFUk5BTF9ET0NTIHRhZyBkZXRlcm1pbmVzIGlmIGRvY3VtZW50YXRpb24gCisjIHRoYXQgaXMgdHlwZWQgYWZ0ZXIgYSBcaW50ZXJuYWwgY29tbWFuZCBpcyBpbmNsdWRlZC4gSWYgdGhlIHRhZyBpcyBzZXQgCisjIHRvIE5PICh0aGUgZGVmYXVsdCkgdGhlbiB0aGUgZG9jdW1lbnRhdGlvbiB3aWxsIGJlIGV4Y2x1ZGVkLiAKKyMgU2V0IGl0IHRvIFlFUyB0byBpbmNsdWRlIHRoZSBpbnRlcm5hbCBkb2N1bWVudGF0aW9uLgorCitJTlRFUk5BTF9ET0NTICAgICAgICAgID0gTk8KKworIyBJZiB0aGUgQ0FTRV9TRU5TRV9OQU1FUyB0YWcgaXMgc2V0IHRvIE5PIHRoZW4gRG94eWdlbiB3aWxsIG9ubHkgZ2VuZXJhdGUgCisjIGZpbGUgbmFtZXMgaW4gbG93ZXItY2FzZSBsZXR0ZXJzLiBJZiBzZXQgdG8gWUVTIHVwcGVyLWNhc2UgbGV0dGVycyBhcmUgYWxzbyAKKyMgYWxsb3dlZC4gVGhpcyBpcyB1c2VmdWwgaWYgeW91IGhhdmUgY2xhc3NlcyBvciBmaWxlcyB3aG9zZSBuYW1lcyBvbmx5IGRpZmZlciAKKyMgaW4gY2FzZSBhbmQgaWYgeW91ciBmaWxlIHN5c3RlbSBzdXBwb3J0cyBjYXNlIHNlbnNpdGl2ZSBmaWxlIG5hbWVzLiBXaW5kb3dzIAorIyBhbmQgTWFjIHVzZXJzIGFyZSBhZHZpc2VkIHRvIHNldCB0aGlzIG9wdGlvbiB0byBOTy4KKworQ0FTRV9TRU5TRV9OQU1FUyAgICAgICA9IFlFUworCisjIElmIHRoZSBISURFX1NDT1BFX05BTUVTIHRhZyBpcyBzZXQgdG8gTk8gKHRoZSBkZWZhdWx0KSB0aGVuIERveHlnZW4gCisjIHdpbGwgc2hvdyBtZW1iZXJzIHdpdGggdGhlaXIgZnVsbCBjbGFzcyBhbmQgbmFtZXNwYWNlIHNjb3BlcyBpbiB0aGUgCisjIGRvY3VtZW50YXRpb24uIElmIHNldCB0byBZRVMgdGhlIHNjb3BlIHdpbGwgYmUgaGlkZGVuLgorCitISURFX1NDT1BFX05BTUVTICAgICAgID0gTk8KKworIyBJZiB0aGUgU0hPV19JTkNMVURFX0ZJTEVTIHRhZyBpcyBzZXQgdG8gWUVTICh0aGUgZGVmYXVsdCkgdGhlbiBEb3h5Z2VuIAorIyB3aWxsIHB1dCBhIGxpc3Qgb2YgdGhlIGZpbGVzIHRoYXQgYXJlIGluY2x1ZGVkIGJ5IGEgZmlsZSBpbiB0aGUgZG9jdW1lbnRhdGlvbiAKKyMgb2YgdGhhdCBmaWxlLgorCitTSE9XX0lOQ0xVREVfRklMRVMgICAgID0gWUVTCisKKyMgSWYgdGhlIElOTElORV9JTkZPIHRhZyBpcyBzZXQgdG8gWUVTICh0aGUgZGVmYXVsdCkgdGhlbiBhIHRhZyBbaW5saW5lXSAKKyMgaXMgaW5zZXJ0ZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gZm9yIGlubGluZSBtZW1iZXJzLgorCitJTkxJTkVfSU5GTyAgICAgICAgICAgID0gWUVTCisKKyMgSWYgdGhlIFNPUlRfTUVNQkVSX0RPQ1MgdGFnIGlzIHNldCB0byBZRVMgKHRoZSBkZWZhdWx0KSB0aGVuIGRveHlnZW4gCisjIHdpbGwgc29ydCB0aGUgKGRldGFpbGVkKSBkb2N1bWVudGF0aW9uIG9mIGZpbGUgYW5kIGNsYXNzIG1lbWJlcnMgCisjIGFscGhhYmV0aWNhbGx5IGJ5IG1lbWJlciBuYW1lLiBJZiBzZXQgdG8gTk8gdGhlIG1lbWJlcnMgd2lsbCBhcHBlYXIgaW4gCisjIGRlY2xhcmF0aW9uIG9yZGVyLgorCitTT1JUX01FTUJFUl9ET0NTICAgICAgID0gWUVTCisKKyMgSWYgdGhlIFNPUlRfQlJJRUZfRE9DUyB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGRveHlnZW4gd2lsbCBzb3J0IHRoZSAKKyMgYnJpZWYgZG9jdW1lbnRhdGlvbiBvZiBmaWxlLCBuYW1lc3BhY2UgYW5kIGNsYXNzIG1lbWJlcnMgYWxwaGFiZXRpY2FsbHkgCisjIGJ5IG1lbWJlciBuYW1lLiBJZiBzZXQgdG8gTk8gKHRoZSBkZWZhdWx0KSB0aGUgbWVtYmVycyB3aWxsIGFwcGVhciBpbiAKKyMgZGVjbGFyYXRpb24gb3JkZXIuCisKK1NPUlRfQlJJRUZfRE9DUyAgICAgICAgPSBOTworCisjIElmIHRoZSBTT1JUX0dST1VQX05BTUVTIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gZG94eWdlbiB3aWxsIHNvcnQgdGhlIAorIyBoaWVyYXJjaHkgb2YgZ3JvdXAgbmFtZXMgaW50byBhbHBoYWJldGljYWwgb3JkZXIuIElmIHNldCB0byBOTyAodGhlIGRlZmF1bHQpIAorIyB0aGUgZ3JvdXAgbmFtZXMgd2lsbCBhcHBlYXIgaW4gdGhlaXIgZGVmaW5lZCBvcmRlci4KKworU09SVF9HUk9VUF9OQU1FUyAgICAgICA9IE5PCisKKyMgSWYgdGhlIFNPUlRfQllfU0NPUEVfTkFNRSB0YWcgaXMgc2V0IHRvIFlFUywgdGhlIGNsYXNzIGxpc3Qgd2lsbCBiZSAKKyMgc29ydGVkIGJ5IGZ1bGx5LXF1YWxpZmllZCBuYW1lcywgaW5jbHVkaW5nIG5hbWVzcGFjZXMuIElmIHNldCB0byAKKyMgTk8gKHRoZSBkZWZhdWx0KSwgdGhlIGNsYXNzIGxpc3Qgd2lsbCBiZSBzb3J0ZWQgb25seSBieSBjbGFzcyBuYW1lLCAKKyMgbm90IGluY2x1ZGluZyB0aGUgbmFtZXNwYWNlIHBhcnQuIAorIyBOb3RlOiBUaGlzIG9wdGlvbiBpcyBub3QgdmVyeSB1c2VmdWwgaWYgSElERV9TQ09QRV9OQU1FUyBpcyBzZXQgdG8gWUVTLgorIyBOb3RlOiBUaGlzIG9wdGlvbiBhcHBsaWVzIG9ubHkgdG8gdGhlIGNsYXNzIGxpc3QsIG5vdCB0byB0aGUgCisjIGFscGhhYmV0aWNhbCBsaXN0LgorCitTT1JUX0JZX1NDT1BFX05BTUUgICAgID0gTk8KKworIyBUaGUgR0VORVJBVEVfVE9ET0xJU1QgdGFnIGNhbiBiZSB1c2VkIHRvIGVuYWJsZSAoWUVTKSBvciAKKyMgZGlzYWJsZSAoTk8pIHRoZSB0b2RvIGxpc3QuIFRoaXMgbGlzdCBpcyBjcmVhdGVkIGJ5IHB1dHRpbmcgXHRvZG8gCisjIGNvbW1hbmRzIGluIHRoZSBkb2N1bWVudGF0aW9uLgorCitHRU5FUkFURV9UT0RPTElTVCAgICAgID0gWUVTCisKKyMgVGhlIEdFTkVSQVRFX1RFU1RMSVNUIHRhZyBjYW4gYmUgdXNlZCB0byBlbmFibGUgKFlFUykgb3IgCisjIGRpc2FibGUgKE5PKSB0aGUgdGVzdCBsaXN0LiBUaGlzIGxpc3QgaXMgY3JlYXRlZCBieSBwdXR0aW5nIFx0ZXN0IAorIyBjb21tYW5kcyBpbiB0aGUgZG9jdW1lbnRhdGlvbi4KKworR0VORVJBVEVfVEVTVExJU1QgICAgICA9IFlFUworCisjIFRoZSBHRU5FUkFURV9CVUdMSVNUIHRhZyBjYW4gYmUgdXNlZCB0byBlbmFibGUgKFlFUykgb3IgCisjIGRpc2FibGUgKE5PKSB0aGUgYnVnIGxpc3QuIFRoaXMgbGlzdCBpcyBjcmVhdGVkIGJ5IHB1dHRpbmcgXGJ1ZyAKKyMgY29tbWFuZHMgaW4gdGhlIGRvY3VtZW50YXRpb24uCisKK0dFTkVSQVRFX0JVR0xJU1QgICAgICAgPSBZRVMKKworIyBUaGUgR0VORVJBVEVfREVQUkVDQVRFRExJU1QgdGFnIGNhbiBiZSB1c2VkIHRvIGVuYWJsZSAoWUVTKSBvciAKKyMgZGlzYWJsZSAoTk8pIHRoZSBkZXByZWNhdGVkIGxpc3QuIFRoaXMgbGlzdCBpcyBjcmVhdGVkIGJ5IHB1dHRpbmcgCisjIFxkZXByZWNhdGVkIGNvbW1hbmRzIGluIHRoZSBkb2N1bWVudGF0aW9uLgorCitHRU5FUkFURV9ERVBSRUNBVEVETElTVD0gWUVTCisKKyMgVGhlIEVOQUJMRURfU0VDVElPTlMgdGFnIGNhbiBiZSB1c2VkIHRvIGVuYWJsZSBjb25kaXRpb25hbCAKKyMgZG9jdW1lbnRhdGlvbiBzZWN0aW9ucywgbWFya2VkIGJ5IFxpZiBzZWN0aW9ubmFtZSAuLi4gXGVuZGlmLgorCitFTkFCTEVEX1NFQ1RJT05TICAgICAgID0gCisKKyMgVGhlIE1BWF9JTklUSUFMSVpFUl9MSU5FUyB0YWcgZGV0ZXJtaW5lcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgbGluZXMgCisjIHRoZSBpbml0aWFsIHZhbHVlIG9mIGEgdmFyaWFibGUgb3IgZGVmaW5lIGNvbnNpc3RzIG9mIGZvciBpdCB0byBhcHBlYXIgaW4gCisjIHRoZSBkb2N1bWVudGF0aW9uLiBJZiB0aGUgaW5pdGlhbGl6ZXIgY29uc2lzdHMgb2YgbW9yZSBsaW5lcyB0aGFuIHNwZWNpZmllZCAKKyMgaGVyZSBpdCB3aWxsIGJlIGhpZGRlbi4gVXNlIGEgdmFsdWUgb2YgMCB0byBoaWRlIGluaXRpYWxpemVycyBjb21wbGV0ZWx5LiAKKyMgVGhlIGFwcGVhcmFuY2Ugb2YgdGhlIGluaXRpYWxpemVyIG9mIGluZGl2aWR1YWwgdmFyaWFibGVzIGFuZCBkZWZpbmVzIGluIHRoZSAKKyMgZG9jdW1lbnRhdGlvbiBjYW4gYmUgY29udHJvbGxlZCB1c2luZyBcc2hvd2luaXRpYWxpemVyIG9yIFxoaWRlaW5pdGlhbGl6ZXIgCisjIGNvbW1hbmQgaW4gdGhlIGRvY3VtZW50YXRpb24gcmVnYXJkbGVzcyBvZiB0aGlzIHNldHRpbmcuCisKK01BWF9JTklUSUFMSVpFUl9MSU5FUyAgPSAzMAorCisjIFNldCB0aGUgU0hPV19VU0VEX0ZJTEVTIHRhZyB0byBOTyB0byBkaXNhYmxlIHRoZSBsaXN0IG9mIGZpbGVzIGdlbmVyYXRlZCAKKyMgYXQgdGhlIGJvdHRvbSBvZiB0aGUgZG9jdW1lbnRhdGlvbiBvZiBjbGFzc2VzIGFuZCBzdHJ1Y3RzLiBJZiBzZXQgdG8gWUVTIHRoZSAKKyMgbGlzdCB3aWxsIG1lbnRpb24gdGhlIGZpbGVzIHRoYXQgd2VyZSB1c2VkIHRvIGdlbmVyYXRlIHRoZSBkb2N1bWVudGF0aW9uLgorCitTSE9XX1VTRURfRklMRVMgICAgICAgID0gWUVTCisKKyMgSWYgdGhlIHNvdXJjZXMgaW4geW91ciBwcm9qZWN0IGFyZSBkaXN0cmlidXRlZCBvdmVyIG11bHRpcGxlIGRpcmVjdG9yaWVzIAorIyB0aGVuIHNldHRpbmcgdGhlIFNIT1dfRElSRUNUT1JJRVMgdGFnIHRvIFlFUyB3aWxsIHNob3cgdGhlIGRpcmVjdG9yeSBoaWVyYXJjaHkgCisjIGluIHRoZSBkb2N1bWVudGF0aW9uLiBUaGUgZGVmYXVsdCBpcyBOTy4KKworU0hPV19ESVJFQ1RPUklFUyAgICAgICA9IE5PCisKKyMgU2V0IHRoZSBTSE9XX0ZJTEVTIHRhZyB0byBOTyB0byBkaXNhYmxlIHRoZSBnZW5lcmF0aW9uIG9mIHRoZSBGaWxlcyBwYWdlLgorIyBUaGlzIHdpbGwgcmVtb3ZlIHRoZSBGaWxlcyBlbnRyeSBmcm9tIHRoZSBRdWljayBJbmRleCBhbmQgZnJvbSB0aGUgCisjIEZvbGRlciBUcmVlIFZpZXcgKGlmIHNwZWNpZmllZCkuIFRoZSBkZWZhdWx0IGlzIFlFUy4KKworU0hPV19GSUxFUyAgICAgICAgICAgICA9IFlFUworCisjIFNldCB0aGUgU0hPV19OQU1FU1BBQ0VTIHRhZyB0byBOTyB0byBkaXNhYmxlIHRoZSBnZW5lcmF0aW9uIG9mIHRoZSAKKyMgTmFtZXNwYWNlcyBwYWdlLiAgVGhpcyB3aWxsIHJlbW92ZSB0aGUgTmFtZXNwYWNlcyBlbnRyeSBmcm9tIHRoZSBRdWljayBJbmRleAorIyBhbmQgZnJvbSB0aGUgRm9sZGVyIFRyZWUgVmlldyAoaWYgc3BlY2lmaWVkKS4gVGhlIGRlZmF1bHQgaXMgWUVTLgorCitTSE9XX05BTUVTUEFDRVMgICAgICAgID0gWUVTCisKKyMgVGhlIEZJTEVfVkVSU0lPTl9GSUxURVIgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSBwcm9ncmFtIG9yIHNjcmlwdCB0aGF0IAorIyBkb3h5Z2VuIHNob3VsZCBpbnZva2UgdG8gZ2V0IHRoZSBjdXJyZW50IHZlcnNpb24gZm9yIGVhY2ggZmlsZSAodHlwaWNhbGx5IGZyb20gCisjIHRoZSB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtKS4gRG94eWdlbiB3aWxsIGludm9rZSB0aGUgcHJvZ3JhbSBieSBleGVjdXRpbmcgKHZpYSAKKyMgcG9wZW4oKSkgdGhlIGNvbW1hbmQgPGNvbW1hbmQ+IDxpbnB1dC1maWxlPiwgd2hlcmUgPGNvbW1hbmQ+IGlzIHRoZSB2YWx1ZSBvZiAKKyMgdGhlIEZJTEVfVkVSU0lPTl9GSUxURVIgdGFnLCBhbmQgPGlucHV0LWZpbGU+IGlzIHRoZSBuYW1lIG9mIGFuIGlucHV0IGZpbGUgCisjIHByb3ZpZGVkIGJ5IGRveHlnZW4uIFdoYXRldmVyIHRoZSBwcm9ncmFtIHdyaXRlcyB0byBzdGFuZGFyZCBvdXRwdXQgCisjIGlzIHVzZWQgYXMgdGhlIGZpbGUgdmVyc2lvbi4gU2VlIHRoZSBtYW51YWwgZm9yIGV4YW1wbGVzLgorCitGSUxFX1ZFUlNJT05fRklMVEVSICAgID0gCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gd2FybmluZyBhbmQgcHJvZ3Jlc3MgbWVzc2FnZXMKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBUaGUgUVVJRVQgdGFnIGNhbiBiZSB1c2VkIHRvIHR1cm4gb24vb2ZmIHRoZSBtZXNzYWdlcyB0aGF0IGFyZSBnZW5lcmF0ZWQgCisjIGJ5IGRveHlnZW4uIFBvc3NpYmxlIHZhbHVlcyBhcmUgWUVTIGFuZCBOTy4gSWYgbGVmdCBibGFuayBOTyBpcyB1c2VkLgorCitRVUlFVCAgICAgICAgICAgICAgICAgID0gTk8KKworIyBUaGUgV0FSTklOR1MgdGFnIGNhbiBiZSB1c2VkIHRvIHR1cm4gb24vb2ZmIHRoZSB3YXJuaW5nIG1lc3NhZ2VzIHRoYXQgYXJlIAorIyBnZW5lcmF0ZWQgYnkgZG94eWdlbi4gUG9zc2libGUgdmFsdWVzIGFyZSBZRVMgYW5kIE5PLiBJZiBsZWZ0IGJsYW5rIAorIyBOTyBpcyB1c2VkLgorCitXQVJOSU5HUyAgICAgICAgICAgICAgID0gWUVTCisKKyMgSWYgV0FSTl9JRl9VTkRPQ1VNRU5URUQgaXMgc2V0IHRvIFlFUywgdGhlbiBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgd2FybmluZ3MgCisjIGZvciB1bmRvY3VtZW50ZWQgbWVtYmVycy4gSWYgRVhUUkFDVF9BTEwgaXMgc2V0IHRvIFlFUyB0aGVuIHRoaXMgZmxhZyB3aWxsIAorIyBhdXRvbWF0aWNhbGx5IGJlIGRpc2FibGVkLgorCitXQVJOX0lGX1VORE9DVU1FTlRFRCAgID0gWUVTCisKKyMgSWYgV0FSTl9JRl9ET0NfRVJST1IgaXMgc2V0IHRvIFlFUywgZG94eWdlbiB3aWxsIGdlbmVyYXRlIHdhcm5pbmdzIGZvciAKKyMgcG90ZW50aWFsIGVycm9ycyBpbiB0aGUgZG9jdW1lbnRhdGlvbiwgc3VjaCBhcyBub3QgZG9jdW1lbnRpbmcgc29tZSAKKyMgcGFyYW1ldGVycyBpbiBhIGRvY3VtZW50ZWQgZnVuY3Rpb24sIG9yIGRvY3VtZW50aW5nIHBhcmFtZXRlcnMgdGhhdCAKKyMgZG9uJ3QgZXhpc3Qgb3IgdXNpbmcgbWFya3VwIGNvbW1hbmRzIHdyb25nbHkuCisKK1dBUk5fSUZfRE9DX0VSUk9SICAgICAgPSBZRVMKKworIyBUaGlzIFdBUk5fTk9fUEFSQU1ET0Mgb3B0aW9uIGNhbiBiZSBhYmxlZCB0byBnZXQgd2FybmluZ3MgZm9yIAorIyBmdW5jdGlvbnMgdGhhdCBhcmUgZG9jdW1lbnRlZCwgYnV0IGhhdmUgbm8gZG9jdW1lbnRhdGlvbiBmb3IgdGhlaXIgcGFyYW1ldGVycyAKKyMgb3IgcmV0dXJuIHZhbHVlLiBJZiBzZXQgdG8gTk8gKHRoZSBkZWZhdWx0KSBkb3h5Z2VuIHdpbGwgb25seSB3YXJuIGFib3V0IAorIyB3cm9uZyBvciBpbmNvbXBsZXRlIHBhcmFtZXRlciBkb2N1bWVudGF0aW9uLCBidXQgbm90IGFib3V0IHRoZSBhYnNlbmNlIG9mIAorIyBkb2N1bWVudGF0aW9uLgorCitXQVJOX05PX1BBUkFNRE9DICAgICAgID0gTk8KKworIyBUaGUgV0FSTl9GT1JNQVQgdGFnIGRldGVybWluZXMgdGhlIGZvcm1hdCBvZiB0aGUgd2FybmluZyBtZXNzYWdlcyB0aGF0IAorIyBkb3h5Z2VuIGNhbiBwcm9kdWNlLiBUaGUgc3RyaW5nIHNob3VsZCBjb250YWluIHRoZSAkZmlsZSwgJGxpbmUsIGFuZCAkdGV4dCAKKyMgdGFncywgd2hpY2ggd2lsbCBiZSByZXBsYWNlZCBieSB0aGUgZmlsZSBhbmQgbGluZSBudW1iZXIgZnJvbSB3aGljaCB0aGUgCisjIHdhcm5pbmcgb3JpZ2luYXRlZCBhbmQgdGhlIHdhcm5pbmcgdGV4dC4gT3B0aW9uYWxseSB0aGUgZm9ybWF0IG1heSBjb250YWluIAorIyAkdmVyc2lvbiwgd2hpY2ggd2lsbCBiZSByZXBsYWNlZCBieSB0aGUgdmVyc2lvbiBvZiB0aGUgZmlsZSAoaWYgaXQgY291bGQgCisjIGJlIG9idGFpbmVkIHZpYSBGSUxFX1ZFUlNJT05fRklMVEVSKQorCitXQVJOX0ZPUk1BVCAgICAgICAgICAgID0gIiRmaWxlOiRsaW5lOiAkdGV4dCIKKworIyBUaGUgV0FSTl9MT0dGSUxFIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGEgZmlsZSB0byB3aGljaCB3YXJuaW5nIAorIyBhbmQgZXJyb3IgbWVzc2FnZXMgc2hvdWxkIGJlIHdyaXR0ZW4uIElmIGxlZnQgYmxhbmsgdGhlIG91dHB1dCBpcyB3cml0dGVuIAorIyB0byBzdGRlcnIuCisKK1dBUk5fTE9HRklMRSAgICAgICAgICAgPSAKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgaW5wdXQgZmlsZXMKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBUaGUgSU5QVVQgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgdGhlIGZpbGVzIGFuZC9vciBkaXJlY3RvcmllcyB0aGF0IGNvbnRhaW4gCisjIGRvY3VtZW50ZWQgc291cmNlIGZpbGVzLiBZb3UgbWF5IGVudGVyIGZpbGUgbmFtZXMgbGlrZSAibXlmaWxlLmNwcCIgb3IgCisjIGRpcmVjdG9yaWVzIGxpa2UgIi91c3Ivc3JjL215cHJvamVjdCIuIFNlcGFyYXRlIHRoZSBmaWxlcyBvciBkaXJlY3RvcmllcyAKKyMgd2l0aCBzcGFjZXMuCisKK0lOUFVUICAgICAgICAgICAgICAgICAgPSAiLi4vc3JjL3B5dGhvbi9vZnRlc3QiICAiLi4vdGVzdHMiCisKKyMgVGhpcyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUgY2hhcmFjdGVyIGVuY29kaW5nIG9mIHRoZSBzb3VyY2UgZmlsZXMgCisjIHRoYXQgZG94eWdlbiBwYXJzZXMuIEludGVybmFsbHkgZG94eWdlbiB1c2VzIHRoZSBVVEYtOCBlbmNvZGluZywgd2hpY2ggaXMgCisjIGFsc28gdGhlIGRlZmF1bHQgaW5wdXQgZW5jb2RpbmcuIERveHlnZW4gdXNlcyBsaWJpY29udiAob3IgdGhlIGljb252IGJ1aWx0IAorIyBpbnRvIGxpYmMpIGZvciB0aGUgdHJhbnNjb2RpbmcuIFNlZSBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGliaWNvbnYgZm9yIAorIyB0aGUgbGlzdCBvZiBwb3NzaWJsZSBlbmNvZGluZ3MuCisKK0lOUFVUX0VOQ09ESU5HICAgICAgICAgPSBVVEYtOAorCisjIElmIHRoZSB2YWx1ZSBvZiB0aGUgSU5QVVQgdGFnIGNvbnRhaW5zIGRpcmVjdG9yaWVzLCB5b3UgY2FuIHVzZSB0aGUgCisjIEZJTEVfUEFUVEVSTlMgdGFnIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgd2lsZGNhcmQgcGF0dGVybiAobGlrZSAqLmNwcCAKKyMgYW5kICouaCkgdG8gZmlsdGVyIG91dCB0aGUgc291cmNlLWZpbGVzIGluIHRoZSBkaXJlY3Rvcmllcy4gSWYgbGVmdCAKKyMgYmxhbmsgdGhlIGZvbGxvd2luZyBwYXR0ZXJucyBhcmUgdGVzdGVkOiAKKyMgKi5jICouY2MgKi5jeHggKi5jcHAgKi5jKysgKi5qYXZhICouaWkgKi5peHggKi5pcHAgKi5pKysgKi5pbmwgKi5oICouaGggKi5oeHggCisjICouaHBwICouaCsrICouaWRsICoub2RsICouY3MgKi5waHAgKi5waHAzICouaW5jICoubSAqLm1tICoucHkgKi5mOTAKKworRklMRV9QQVRURVJOUyAgICAgICAgICA9ICIqLnB5IgorCisjIFRoZSBSRUNVUlNJVkUgdGFnIGNhbiBiZSB1c2VkIHRvIHR1cm4gc3BlY2lmeSB3aGV0aGVyIG9yIG5vdCBzdWJkaXJlY3RvcmllcyAKKyMgc2hvdWxkIGJlIHNlYXJjaGVkIGZvciBpbnB1dCBmaWxlcyBhcyB3ZWxsLiBQb3NzaWJsZSB2YWx1ZXMgYXJlIFlFUyBhbmQgTk8uIAorIyBJZiBsZWZ0IGJsYW5rIE5PIGlzIHVzZWQuCisKK1JFQ1VSU0lWRSAgICAgICAgICAgICAgPSBOTworCisjIFRoZSBFWENMVURFIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGZpbGVzIGFuZC9vciBkaXJlY3RvcmllcyB0aGF0IHNob3VsZCAKKyMgZXhjbHVkZWQgZnJvbSB0aGUgSU5QVVQgc291cmNlIGZpbGVzLiBUaGlzIHdheSB5b3UgY2FuIGVhc2lseSBleGNsdWRlIGEgCisjIHN1YmRpcmVjdG9yeSBmcm9tIGEgZGlyZWN0b3J5IHRyZWUgd2hvc2Ugcm9vdCBpcyBzcGVjaWZpZWQgd2l0aCB0aGUgSU5QVVQgdGFnLgorCitFWENMVURFICAgICAgICAgICAgICAgID0gCisKKyMgVGhlIEVYQ0xVREVfU1lNTElOS1MgdGFnIGNhbiBiZSB1c2VkIHNlbGVjdCB3aGV0aGVyIG9yIG5vdCBmaWxlcyBvciAKKyMgZGlyZWN0b3JpZXMgdGhhdCBhcmUgc3ltYm9saWMgbGlua3MgKGEgVW5peCBmaWxlc3lzdGVtIGZlYXR1cmUpIGFyZSBleGNsdWRlZCAKKyMgZnJvbSB0aGUgaW5wdXQuCisKK0VYQ0xVREVfU1lNTElOS1MgICAgICAgPSBOTworCisjIElmIHRoZSB2YWx1ZSBvZiB0aGUgSU5QVVQgdGFnIGNvbnRhaW5zIGRpcmVjdG9yaWVzLCB5b3UgY2FuIHVzZSB0aGUgCisjIEVYQ0xVREVfUEFUVEVSTlMgdGFnIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgd2lsZGNhcmQgcGF0dGVybnMgdG8gZXhjbHVkZSAKKyMgY2VydGFpbiBmaWxlcyBmcm9tIHRob3NlIGRpcmVjdG9yaWVzLiBOb3RlIHRoYXQgdGhlIHdpbGRjYXJkcyBhcmUgbWF0Y2hlZCAKKyMgYWdhaW5zdCB0aGUgZmlsZSB3aXRoIGFic29sdXRlIHBhdGgsIHNvIHRvIGV4Y2x1ZGUgYWxsIHRlc3QgZGlyZWN0b3JpZXMgCisjIGZvciBleGFtcGxlIHVzZSB0aGUgcGF0dGVybiAqL3Rlc3QvKgorCitFWENMVURFX1BBVFRFUk5TICAgICAgID0gCisKKyMgVGhlIEVYQ0xVREVfU1lNQk9MUyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSBzeW1ib2wgbmFtZXMgCisjIChuYW1lc3BhY2VzLCBjbGFzc2VzLCBmdW5jdGlvbnMsIGV0Yy4pIHRoYXQgc2hvdWxkIGJlIGV4Y2x1ZGVkIGZyb20gdGhlIAorIyBvdXRwdXQuIFRoZSBzeW1ib2wgbmFtZSBjYW4gYmUgYSBmdWxseSBxdWFsaWZpZWQgbmFtZSwgYSB3b3JkLCBvciBpZiB0aGUgCisjIHdpbGRjYXJkICogaXMgdXNlZCwgYSBzdWJzdHJpbmcuIEV4YW1wbGVzOiBBTmFtZXNwYWNlLCBBQ2xhc3MsIAorIyBBQ2xhc3M6OkFOYW1lc3BhY2UsIEFOYW1lc3BhY2U6OipUZXN0CisKK0VYQ0xVREVfU1lNQk9MUyAgICAgICAgPSAKKworIyBUaGUgRVhBTVBMRV9QQVRIIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIGZpbGVzIG9yIAorIyBkaXJlY3RvcmllcyB0aGF0IGNvbnRhaW4gZXhhbXBsZSBjb2RlIGZyYWdtZW50cyB0aGF0IGFyZSBpbmNsdWRlZCAoc2VlIAorIyB0aGUgXGluY2x1ZGUgY29tbWFuZCkuCisKK0VYQU1QTEVfUEFUSCAgICAgICAgICAgPSAKKworIyBJZiB0aGUgdmFsdWUgb2YgdGhlIEVYQU1QTEVfUEFUSCB0YWcgY29udGFpbnMgZGlyZWN0b3JpZXMsIHlvdSBjYW4gdXNlIHRoZSAKKyMgRVhBTVBMRV9QQVRURVJOUyB0YWcgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSB3aWxkY2FyZCBwYXR0ZXJuIChsaWtlICouY3BwIAorIyBhbmQgKi5oKSB0byBmaWx0ZXIgb3V0IHRoZSBzb3VyY2UtZmlsZXMgaW4gdGhlIGRpcmVjdG9yaWVzLiBJZiBsZWZ0IAorIyBibGFuayBhbGwgZmlsZXMgYXJlIGluY2x1ZGVkLgorCitFWEFNUExFX1BBVFRFUk5TICAgICAgID0gCisKKyMgSWYgdGhlIEVYQU1QTEVfUkVDVVJTSVZFIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gc3ViZGlyZWN0b3JpZXMgd2lsbCBiZSAKKyMgc2VhcmNoZWQgZm9yIGlucHV0IGZpbGVzIHRvIGJlIHVzZWQgd2l0aCB0aGUgXGluY2x1ZGUgb3IgXGRvbnRpbmNsdWRlIAorIyBjb21tYW5kcyBpcnJlc3BlY3RpdmUgb2YgdGhlIHZhbHVlIG9mIHRoZSBSRUNVUlNJVkUgdGFnLiAKKyMgUG9zc2libGUgdmFsdWVzIGFyZSBZRVMgYW5kIE5PLiBJZiBsZWZ0IGJsYW5rIE5PIGlzIHVzZWQuCisKK0VYQU1QTEVfUkVDVVJTSVZFICAgICAgPSBOTworCisjIFRoZSBJTUFHRV9QQVRIIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIGZpbGVzIG9yIAorIyBkaXJlY3RvcmllcyB0aGF0IGNvbnRhaW4gaW1hZ2UgdGhhdCBhcmUgaW5jbHVkZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gKHNlZSAKKyMgdGhlIFxpbWFnZSBjb21tYW5kKS4KKworSU1BR0VfUEFUSCAgICAgICAgICAgICA9IAorCisjIFRoZSBJTlBVVF9GSUxURVIgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSBwcm9ncmFtIHRoYXQgZG94eWdlbiBzaG91bGQgCisjIGludm9rZSB0byBmaWx0ZXIgZm9yIGVhY2ggaW5wdXQgZmlsZS4gRG94eWdlbiB3aWxsIGludm9rZSB0aGUgZmlsdGVyIHByb2dyYW0gCisjIGJ5IGV4ZWN1dGluZyAodmlhIHBvcGVuKCkpIHRoZSBjb21tYW5kIDxmaWx0ZXI+IDxpbnB1dC1maWxlPiwgd2hlcmUgPGZpbHRlcj4gCisjIGlzIHRoZSB2YWx1ZSBvZiB0aGUgSU5QVVRfRklMVEVSIHRhZywgYW5kIDxpbnB1dC1maWxlPiBpcyB0aGUgbmFtZSBvZiBhbiAKKyMgaW5wdXQgZmlsZS4gRG94eWdlbiB3aWxsIHRoZW4gdXNlIHRoZSBvdXRwdXQgdGhhdCB0aGUgZmlsdGVyIHByb2dyYW0gd3JpdGVzIAorIyB0byBzdGFuZGFyZCBvdXRwdXQuICBJZiBGSUxURVJfUEFUVEVSTlMgaXMgc3BlY2lmaWVkLCB0aGlzIHRhZyB3aWxsIGJlIAorIyBpZ25vcmVkLgorCitJTlBVVF9GSUxURVIgICAgICAgICAgID0gInB5dGhvbiAvdXNyL2Jpbi9kb3h5cHkucHkiCisKKyMgVGhlIEZJTFRFUl9QQVRURVJOUyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBmaWx0ZXJzIG9uIGEgcGVyIGZpbGUgcGF0dGVybiAKKyMgYmFzaXMuICBEb3h5Z2VuIHdpbGwgY29tcGFyZSB0aGUgZmlsZSBuYW1lIHdpdGggZWFjaCBwYXR0ZXJuIGFuZCBhcHBseSB0aGUgCisjIGZpbHRlciBpZiB0aGVyZSBpcyBhIG1hdGNoLiAgVGhlIGZpbHRlcnMgYXJlIGEgbGlzdCBvZiB0aGUgZm9ybTogCisjIHBhdHRlcm49ZmlsdGVyIChsaWtlICouY3BwPW15X2NwcF9maWx0ZXIpLiBTZWUgSU5QVVRfRklMVEVSIGZvciBmdXJ0aGVyIAorIyBpbmZvIG9uIGhvdyBmaWx0ZXJzIGFyZSB1c2VkLiBJZiBGSUxURVJfUEFUVEVSTlMgaXMgZW1wdHksIElOUFVUX0ZJTFRFUiAKKyMgaXMgYXBwbGllZCB0byBhbGwgZmlsZXMuCisKK0ZJTFRFUl9QQVRURVJOUyAgICAgICAgPSAKKworIyBJZiB0aGUgRklMVEVSX1NPVVJDRV9GSUxFUyB0YWcgaXMgc2V0IHRvIFlFUywgdGhlIGlucHV0IGZpbHRlciAoaWYgc2V0IHVzaW5nIAorIyBJTlBVVF9GSUxURVIpIHdpbGwgYmUgdXNlZCB0byBmaWx0ZXIgdGhlIGlucHV0IGZpbGVzIHdoZW4gcHJvZHVjaW5nIHNvdXJjZSAKKyMgZmlsZXMgdG8gYnJvd3NlIChpLmUuIHdoZW4gU09VUkNFX0JST1dTRVIgaXMgc2V0IHRvIFlFUykuCisKK0ZJTFRFUl9TT1VSQ0VfRklMRVMgICAgPSBZRVMKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBzb3VyY2UgYnJvd3NpbmcKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBJZiB0aGUgU09VUkNFX0JST1dTRVIgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBhIGxpc3Qgb2Ygc291cmNlIGZpbGVzIHdpbGwgCisjIGJlIGdlbmVyYXRlZC4gRG9jdW1lbnRlZCBlbnRpdGllcyB3aWxsIGJlIGNyb3NzLXJlZmVyZW5jZWQgd2l0aCB0aGVzZSBzb3VyY2VzLiAKKyMgTm90ZTogVG8gZ2V0IHJpZCBvZiBhbGwgc291cmNlIGNvZGUgaW4gdGhlIGdlbmVyYXRlZCBvdXRwdXQsIG1ha2Ugc3VyZSBhbHNvIAorIyBWRVJCQVRJTV9IRUFERVJTIGlzIHNldCB0byBOTy4KKworU09VUkNFX0JST1dTRVIgICAgICAgICA9IE5PCisKKyMgU2V0dGluZyB0aGUgSU5MSU5FX1NPVVJDRVMgdGFnIHRvIFlFUyB3aWxsIGluY2x1ZGUgdGhlIGJvZHkgCisjIG9mIGZ1bmN0aW9ucyBhbmQgY2xhc3NlcyBkaXJlY3RseSBpbiB0aGUgZG9jdW1lbnRhdGlvbi4KKworSU5MSU5FX1NPVVJDRVMgICAgICAgICA9IE5PCisKKyMgU2V0dGluZyB0aGUgU1RSSVBfQ09ERV9DT01NRU5UUyB0YWcgdG8gWUVTICh0aGUgZGVmYXVsdCkgd2lsbCBpbnN0cnVjdCAKKyMgZG94eWdlbiB0byBoaWRlIGFueSBzcGVjaWFsIGNvbW1lbnQgYmxvY2tzIGZyb20gZ2VuZXJhdGVkIHNvdXJjZSBjb2RlIAorIyBmcmFnbWVudHMuIE5vcm1hbCBDIGFuZCBDKysgY29tbWVudHMgd2lsbCBhbHdheXMgcmVtYWluIHZpc2libGUuCisKK1NUUklQX0NPREVfQ09NTUVOVFMgICAgPSBZRVMKKworIyBJZiB0aGUgUkVGRVJFTkNFRF9CWV9SRUxBVElPTiB0YWcgaXMgc2V0IHRvIFlFUyAKKyMgdGhlbiBmb3IgZWFjaCBkb2N1bWVudGVkIGZ1bmN0aW9uIGFsbCBkb2N1bWVudGVkIAorIyBmdW5jdGlvbnMgcmVmZXJlbmNpbmcgaXQgd2lsbCBiZSBsaXN0ZWQuCisKK1JFRkVSRU5DRURfQllfUkVMQVRJT04gPSBOTworCisjIElmIHRoZSBSRUZFUkVOQ0VTX1JFTEFUSU9OIHRhZyBpcyBzZXQgdG8gWUVTIAorIyB0aGVuIGZvciBlYWNoIGRvY3VtZW50ZWQgZnVuY3Rpb24gYWxsIGRvY3VtZW50ZWQgZW50aXRpZXMgCisjIGNhbGxlZC91c2VkIGJ5IHRoYXQgZnVuY3Rpb24gd2lsbCBiZSBsaXN0ZWQuCisKK1JFRkVSRU5DRVNfUkVMQVRJT04gICAgPSBOTworCisjIElmIHRoZSBSRUZFUkVOQ0VTX0xJTktfU09VUkNFIHRhZyBpcyBzZXQgdG8gWUVTICh0aGUgZGVmYXVsdCkKKyMgYW5kIFNPVVJDRV9CUk9XU0VSIHRhZyBpcyBzZXQgdG8gWUVTLCB0aGVuIHRoZSBoeXBlcmxpbmtzIGZyb20KKyMgZnVuY3Rpb25zIGluIFJFRkVSRU5DRVNfUkVMQVRJT04gYW5kIFJFRkVSRU5DRURfQllfUkVMQVRJT04gbGlzdHMgd2lsbAorIyBsaW5rIHRvIHRoZSBzb3VyY2UgY29kZS4gIE90aGVyd2lzZSB0aGV5IHdpbGwgbGluayB0byB0aGUgZG9jdW1lbnRzdGlvbi4KKworUkVGRVJFTkNFU19MSU5LX1NPVVJDRSA9IFlFUworCisjIElmIHRoZSBVU0VfSFRBR1MgdGFnIGlzIHNldCB0byBZRVMgdGhlbiB0aGUgcmVmZXJlbmNlcyB0byBzb3VyY2UgY29kZSAKKyMgd2lsbCBwb2ludCB0byB0aGUgSFRNTCBnZW5lcmF0ZWQgYnkgdGhlIGh0YWdzKDEpIHRvb2wgaW5zdGVhZCBvZiBkb3h5Z2VuIAorIyBidWlsdC1pbiBzb3VyY2UgYnJvd3Nlci4gVGhlIGh0YWdzIHRvb2wgaXMgcGFydCBvZiBHTlUncyBnbG9iYWwgc291cmNlIAorIyB0YWdnaW5nIHN5c3RlbSAoc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nbG9iYWwvZ2xvYmFsLmh0bWwpLiBZb3UgCisjIHdpbGwgbmVlZCB2ZXJzaW9uIDQuOC42IG9yIGhpZ2hlci4KKworVVNFX0hUQUdTICAgICAgICAgICAgICA9IE5PCisKKyMgSWYgdGhlIFZFUkJBVElNX0hFQURFUlMgdGFnIGlzIHNldCB0byBZRVMgKHRoZSBkZWZhdWx0KSB0aGVuIERveHlnZW4gCisjIHdpbGwgZ2VuZXJhdGUgYSB2ZXJiYXRpbSBjb3B5IG9mIHRoZSBoZWFkZXIgZmlsZSBmb3IgZWFjaCBjbGFzcyBmb3IgCisjIHdoaWNoIGFuIGluY2x1ZGUgaXMgc3BlY2lmaWVkLiBTZXQgdG8gTk8gdG8gZGlzYWJsZSB0aGlzLgorCitWRVJCQVRJTV9IRUFERVJTICAgICAgID0gWUVTCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIGFscGhhYmV0aWNhbCBjbGFzcyBpbmRleAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIElmIHRoZSBBTFBIQUJFVElDQUxfSU5ERVggdGFnIGlzIHNldCB0byBZRVMsIGFuIGFscGhhYmV0aWNhbCBpbmRleCAKKyMgb2YgYWxsIGNvbXBvdW5kcyB3aWxsIGJlIGdlbmVyYXRlZC4gRW5hYmxlIHRoaXMgaWYgdGhlIHByb2plY3QgCisjIGNvbnRhaW5zIGEgbG90IG9mIGNsYXNzZXMsIHN0cnVjdHMsIHVuaW9ucyBvciBpbnRlcmZhY2VzLgorCitBTFBIQUJFVElDQUxfSU5ERVggICAgID0gTk8KKworIyBJZiB0aGUgYWxwaGFiZXRpY2FsIGluZGV4IGlzIGVuYWJsZWQgKHNlZSBBTFBIQUJFVElDQUxfSU5ERVgpIHRoZW4gCisjIHRoZSBDT0xTX0lOX0FMUEhBX0lOREVYIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBudW1iZXIgb2YgY29sdW1ucyAKKyMgaW4gd2hpY2ggdGhpcyBsaXN0IHdpbGwgYmUgc3BsaXQgKGNhbiBiZSBhIG51bWJlciBpbiB0aGUgcmFuZ2UgWzEuLjIwXSkKKworQ09MU19JTl9BTFBIQV9JTkRFWCAgICA9IDUKKworIyBJbiBjYXNlIGFsbCBjbGFzc2VzIGluIGEgcHJvamVjdCBzdGFydCB3aXRoIGEgY29tbW9uIHByZWZpeCwgYWxsIAorIyBjbGFzc2VzIHdpbGwgYmUgcHV0IHVuZGVyIHRoZSBzYW1lIGhlYWRlciBpbiB0aGUgYWxwaGFiZXRpY2FsIGluZGV4LiAKKyMgVGhlIElHTk9SRV9QUkVGSVggdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgcHJlZml4ZXMgdGhhdCAKKyMgc2hvdWxkIGJlIGlnbm9yZWQgd2hpbGUgZ2VuZXJhdGluZyB0aGUgaW5kZXggaGVhZGVycy4KKworSUdOT1JFX1BSRUZJWCAgICAgICAgICA9IAorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBIVE1MIG91dHB1dAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIElmIHRoZSBHRU5FUkFURV9IVE1MIHRhZyBpcyBzZXQgdG8gWUVTICh0aGUgZGVmYXVsdCkgRG94eWdlbiB3aWxsIAorIyBnZW5lcmF0ZSBIVE1MIG91dHB1dC4KKworR0VORVJBVEVfSFRNTCAgICAgICAgICA9IFlFUworCisjIFRoZSBIVE1MX09VVFBVVCB0YWcgaXMgdXNlZCB0byBzcGVjaWZ5IHdoZXJlIHRoZSBIVE1MIGRvY3Mgd2lsbCBiZSBwdXQuIAorIyBJZiBhIHJlbGF0aXZlIHBhdGggaXMgZW50ZXJlZCB0aGUgdmFsdWUgb2YgT1VUUFVUX0RJUkVDVE9SWSB3aWxsIGJlIAorIyBwdXQgaW4gZnJvbnQgb2YgaXQuIElmIGxlZnQgYmxhbmsgYGh0bWwnIHdpbGwgYmUgdXNlZCBhcyB0aGUgZGVmYXVsdCBwYXRoLgorCitIVE1MX09VVFBVVCAgICAgICAgICAgID0gaHRtbAorCisjIFRoZSBIVE1MX0ZJTEVfRVhURU5TSU9OIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBmaWxlIGV4dGVuc2lvbiBmb3IgCisjIGVhY2ggZ2VuZXJhdGVkIEhUTUwgcGFnZSAoZm9yIGV4YW1wbGU6IC5odG0sLnBocCwuYXNwKS4gSWYgaXQgaXMgbGVmdCBibGFuayAKKyMgZG94eWdlbiB3aWxsIGdlbmVyYXRlIGZpbGVzIHdpdGggLmh0bWwgZXh0ZW5zaW9uLgorCitIVE1MX0ZJTEVfRVhURU5TSU9OICAgID0gLmh0bWwKKworIyBUaGUgSFRNTF9IRUFERVIgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSBwZXJzb25hbCBIVE1MIGhlYWRlciBmb3IgCisjIGVhY2ggZ2VuZXJhdGVkIEhUTUwgcGFnZS4gSWYgaXQgaXMgbGVmdCBibGFuayBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSAKKyMgc3RhbmRhcmQgaGVhZGVyLgorCitIVE1MX0hFQURFUiAgICAgICAgICAgID0gCisKKyMgVGhlIEhUTUxfRk9PVEVSIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGEgcGVyc29uYWwgSFRNTCBmb290ZXIgZm9yIAorIyBlYWNoIGdlbmVyYXRlZCBIVE1MIHBhZ2UuIElmIGl0IGlzIGxlZnQgYmxhbmsgZG94eWdlbiB3aWxsIGdlbmVyYXRlIGEgCisjIHN0YW5kYXJkIGZvb3Rlci4KKworSFRNTF9GT09URVIgICAgICAgICAgICA9IAorCisjIFRoZSBIVE1MX1NUWUxFU0hFRVQgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSB1c2VyLWRlZmluZWQgY2FzY2FkaW5nIAorIyBzdHlsZSBzaGVldCB0aGF0IGlzIHVzZWQgYnkgZWFjaCBIVE1MIHBhZ2UuIEl0IGNhbiBiZSB1c2VkIHRvIAorIyBmaW5lLXR1bmUgdGhlIGxvb2sgb2YgdGhlIEhUTUwgb3V0cHV0LiBJZiB0aGUgdGFnIGlzIGxlZnQgYmxhbmsgZG94eWdlbiAKKyMgd2lsbCBnZW5lcmF0ZSBhIGRlZmF1bHQgc3R5bGUgc2hlZXQuIE5vdGUgdGhhdCBkb3h5Z2VuIHdpbGwgdHJ5IHRvIGNvcHkgCisjIHRoZSBzdHlsZSBzaGVldCBmaWxlIHRvIHRoZSBIVE1MIG91dHB1dCBkaXJlY3RvcnksIHNvIGRvbid0IHB1dCB5b3VyIG93biAKKyMgc3R5bGVzaGVldCBpbiB0aGUgSFRNTCBvdXRwdXQgZGlyZWN0b3J5IGFzIHdlbGwsIG9yIGl0IHdpbGwgYmUgZXJhc2VkIQorCitIVE1MX1NUWUxFU0hFRVQgICAgICAgID0gCisKKyMgSWYgdGhlIEhUTUxfQUxJR05fTUVNQkVSUyB0YWcgaXMgc2V0IHRvIFlFUywgdGhlIG1lbWJlcnMgb2YgY2xhc3NlcywgCisjIGZpbGVzIG9yIG5hbWVzcGFjZXMgd2lsbCBiZSBhbGlnbmVkIGluIEhUTUwgdXNpbmcgdGFibGVzLiBJZiBzZXQgdG8gCisjIE5PIGEgYnVsbGV0IGxpc3Qgd2lsbCBiZSB1c2VkLgorCitIVE1MX0FMSUdOX01FTUJFUlMgICAgID0gWUVTCisKKyMgSWYgdGhlIEdFTkVSQVRFX0hUTUxIRUxQIHRhZyBpcyBzZXQgdG8gWUVTLCBhZGRpdGlvbmFsIGluZGV4IGZpbGVzIAorIyB3aWxsIGJlIGdlbmVyYXRlZCB0aGF0IGNhbiBiZSB1c2VkIGFzIGlucHV0IGZvciB0b29scyBsaWtlIHRoZSAKKyMgTWljcm9zb2Z0IEhUTUwgaGVscCB3b3Jrc2hvcCB0byBnZW5lcmF0ZSBhIGNvbXBpbGVkIEhUTUwgaGVscCBmaWxlICguY2htKSAKKyMgb2YgdGhlIGdlbmVyYXRlZCBIVE1MIGRvY3VtZW50YXRpb24uCisKK0dFTkVSQVRFX0hUTUxIRUxQICAgICAgPSBOTworCisjIElmIHRoZSBHRU5FUkFURV9ET0NTRVQgdGFnIGlzIHNldCB0byBZRVMsIGFkZGl0aW9uYWwgaW5kZXggZmlsZXMgCisjIHdpbGwgYmUgZ2VuZXJhdGVkIHRoYXQgY2FuIGJlIHVzZWQgYXMgaW5wdXQgZm9yIEFwcGxlJ3MgWGNvZGUgMyAKKyMgaW50ZWdyYXRlZCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCwgaW50cm9kdWNlZCB3aXRoIE9TWCAxMC41IChMZW9wYXJkKS4gCisjIFRvIGNyZWF0ZSBhIGRvY3VtZW50YXRpb24gc2V0LCBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSBNYWtlZmlsZSBpbiB0aGUgCisjIEhUTUwgb3V0cHV0IGRpcmVjdG9yeS4gUnVubmluZyBtYWtlIHdpbGwgcHJvZHVjZSB0aGUgZG9jc2V0IGluIHRoYXQgCisjIGRpcmVjdG9yeSBhbmQgcnVubmluZyAibWFrZSBpbnN0YWxsIiB3aWxsIGluc3RhbGwgdGhlIGRvY3NldCBpbiAKKyMgfi9MaWJyYXJ5L0RldmVsb3Blci9TaGFyZWQvRG9jdW1lbnRhdGlvbi9Eb2NTZXRzIHNvIHRoYXQgWGNvZGUgd2lsbCBmaW5kIAorIyBpdCBhdCBzdGFydHVwLgorCitHRU5FUkFURV9ET0NTRVQgICAgICAgID0gTk8KKworIyBXaGVuIEdFTkVSQVRFX0RPQ1NFVCB0YWcgaXMgc2V0IHRvIFlFUywgdGhpcyB0YWcgZGV0ZXJtaW5lcyB0aGUgbmFtZSBvZiB0aGUgCisjIGZlZWQuIEEgZG9jdW1lbnRhdGlvbiBmZWVkIHByb3ZpZGVzIGFuIHVtYnJlbGxhIHVuZGVyIHdoaWNoIG11bHRpcGxlIAorIyBkb2N1bWVudGF0aW9uIHNldHMgZnJvbSBhIHNpbmdsZSBwcm92aWRlciAoc3VjaCBhcyBhIGNvbXBhbnkgb3IgcHJvZHVjdCBzdWl0ZSkgCisjIGNhbiBiZSBncm91cGVkLgorCitET0NTRVRfRkVFRE5BTUUgICAgICAgID0gIkRveHlnZW4gZ2VuZXJhdGVkIGRvY3MiCisKKyMgV2hlbiBHRU5FUkFURV9ET0NTRVQgdGFnIGlzIHNldCB0byBZRVMsIHRoaXMgdGFnIHNwZWNpZmllcyBhIHN0cmluZyB0aGF0IAorIyBzaG91bGQgdW5pcXVlbHkgaWRlbnRpZnkgdGhlIGRvY3VtZW50YXRpb24gc2V0IGJ1bmRsZS4gVGhpcyBzaG91bGQgYmUgYSAKKyMgcmV2ZXJzZSBkb21haW4tbmFtZSBzdHlsZSBzdHJpbmcsIGUuZy4gY29tLm15Y29tcGFueS5NeURvY1NldC4gRG94eWdlbiAKKyMgd2lsbCBhcHBlbmQgLmRvY3NldCB0byB0aGUgbmFtZS4KKworRE9DU0VUX0JVTkRMRV9JRCAgICAgICA9IG9yZy5kb3h5Z2VuLlByb2plY3QKKworIyBJZiB0aGUgSFRNTF9EWU5BTUlDX1NFQ1RJT05TIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gdGhlIGdlbmVyYXRlZCBIVE1MIAorIyBkb2N1bWVudGF0aW9uIHdpbGwgY29udGFpbiBzZWN0aW9ucyB0aGF0IGNhbiBiZSBoaWRkZW4gYW5kIHNob3duIGFmdGVyIHRoZSAKKyMgcGFnZSBoYXMgbG9hZGVkLiBGb3IgdGhpcyB0byB3b3JrIGEgYnJvd3NlciB0aGF0IHN1cHBvcnRzIAorIyBKYXZhU2NyaXB0IGFuZCBESFRNTCBpcyByZXF1aXJlZCAoZm9yIGluc3RhbmNlIE1vemlsbGEgMS4wKywgRmlyZWZveCAKKyMgTmV0c2NhcGUgNi4wKywgSW50ZXJuZXQgZXhwbG9yZXIgNS4wKywgS29ucXVlcm9yLCBvciBTYWZhcmkpLgorCitIVE1MX0RZTkFNSUNfU0VDVElPTlMgID0gTk8KKworIyBJZiB0aGUgR0VORVJBVEVfSFRNTEhFTFAgdGFnIGlzIHNldCB0byBZRVMsIHRoZSBDSE1fRklMRSB0YWcgY2FuIAorIyBiZSB1c2VkIHRvIHNwZWNpZnkgdGhlIGZpbGUgbmFtZSBvZiB0aGUgcmVzdWx0aW5nIC5jaG0gZmlsZS4gWW91IAorIyBjYW4gYWRkIGEgcGF0aCBpbiBmcm9udCBvZiB0aGUgZmlsZSBpZiB0aGUgcmVzdWx0IHNob3VsZCBub3QgYmUgCisjIHdyaXR0ZW4gdG8gdGhlIGh0bWwgb3V0cHV0IGRpcmVjdG9yeS4KKworQ0hNX0ZJTEUgICAgICAgICAgICAgICA9IAorCisjIElmIHRoZSBHRU5FUkFURV9IVE1MSEVMUCB0YWcgaXMgc2V0IHRvIFlFUywgdGhlIEhIQ19MT0NBVElPTiB0YWcgY2FuIAorIyBiZSB1c2VkIHRvIHNwZWNpZnkgdGhlIGxvY2F0aW9uIChhYnNvbHV0ZSBwYXRoIGluY2x1ZGluZyBmaWxlIG5hbWUpIG9mIAorIyB0aGUgSFRNTCBoZWxwIGNvbXBpbGVyIChoaGMuZXhlKS4gSWYgbm9uLWVtcHR5IGRveHlnZW4gd2lsbCB0cnkgdG8gcnVuIAorIyB0aGUgSFRNTCBoZWxwIGNvbXBpbGVyIG9uIHRoZSBnZW5lcmF0ZWQgaW5kZXguaGhwLgorCitISENfTE9DQVRJT04gICAgICAgICAgID0gCisKKyMgSWYgdGhlIEdFTkVSQVRFX0hUTUxIRUxQIHRhZyBpcyBzZXQgdG8gWUVTLCB0aGUgR0VORVJBVEVfQ0hJIGZsYWcgCisjIGNvbnRyb2xzIGlmIGEgc2VwYXJhdGUgLmNoaSBpbmRleCBmaWxlIGlzIGdlbmVyYXRlZCAoWUVTKSBvciB0aGF0IAorIyBpdCBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIG1hc3RlciAuY2htIGZpbGUgKE5PKS4KKworR0VORVJBVEVfQ0hJICAgICAgICAgICA9IE5PCisKKyMgSWYgdGhlIEdFTkVSQVRFX0hUTUxIRUxQIHRhZyBpcyBzZXQgdG8gWUVTLCB0aGUgQ0hNX0lOREVYX0VOQ09ESU5HCisjIGlzIHVzZWQgdG8gZW5jb2RlIEh0bWxIZWxwIGluZGV4IChoaGspLCBjb250ZW50IChoaGMpIGFuZCBwcm9qZWN0IGZpbGUKKyMgY29udGVudC4KKworQ0hNX0lOREVYX0VOQ09ESU5HICAgICA9IAorCisjIElmIHRoZSBHRU5FUkFURV9IVE1MSEVMUCB0YWcgaXMgc2V0IHRvIFlFUywgdGhlIEJJTkFSWV9UT0MgZmxhZyAKKyMgY29udHJvbHMgd2hldGhlciBhIGJpbmFyeSB0YWJsZSBvZiBjb250ZW50cyBpcyBnZW5lcmF0ZWQgKFlFUykgb3IgYSAKKyMgbm9ybWFsIHRhYmxlIG9mIGNvbnRlbnRzIChOTykgaW4gdGhlIC5jaG0gZmlsZS4KKworQklOQVJZX1RPQyAgICAgICAgICAgICA9IE5PCisKKyMgVGhlIFRPQ19FWFBBTkQgZmxhZyBjYW4gYmUgc2V0IHRvIFlFUyB0byBhZGQgZXh0cmEgaXRlbXMgZm9yIGdyb3VwIG1lbWJlcnMgCisjIHRvIHRoZSBjb250ZW50cyBvZiB0aGUgSFRNTCBoZWxwIGRvY3VtZW50YXRpb24gYW5kIHRvIHRoZSB0cmVlIHZpZXcuCisKK1RPQ19FWFBBTkQgICAgICAgICAgICAgPSBOTworCisjIFRoZSBESVNBQkxFX0lOREVYIHRhZyBjYW4gYmUgdXNlZCB0byB0dXJuIG9uL29mZiB0aGUgY29uZGVuc2VkIGluZGV4IGF0IAorIyB0b3Agb2YgZWFjaCBIVE1MIHBhZ2UuIFRoZSB2YWx1ZSBOTyAodGhlIGRlZmF1bHQpIGVuYWJsZXMgdGhlIGluZGV4IGFuZCAKKyMgdGhlIHZhbHVlIFlFUyBkaXNhYmxlcyBpdC4KKworRElTQUJMRV9JTkRFWCAgICAgICAgICA9IE5PCisKKyMgVGhpcyB0YWcgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBudW1iZXIgb2YgZW51bSB2YWx1ZXMgKHJhbmdlIFsxLi4yMF0pIAorIyB0aGF0IGRveHlnZW4gd2lsbCBncm91cCBvbiBvbmUgbGluZSBpbiB0aGUgZ2VuZXJhdGVkIEhUTUwgZG9jdW1lbnRhdGlvbi4KKworRU5VTV9WQUxVRVNfUEVSX0xJTkUgICA9IDQKKworIyBUaGUgR0VORVJBVEVfVFJFRVZJRVcgdGFnIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGV0aGVyIGEgdHJlZS1saWtlIGluZGV4CisjIHN0cnVjdHVyZSBzaG91bGQgYmUgZ2VuZXJhdGVkIHRvIGRpc3BsYXkgaGllcmFyY2hpY2FsIGluZm9ybWF0aW9uLgorIyBJZiB0aGUgdGFnIHZhbHVlIGlzIHNldCB0byBGUkFNRSwgYSBzaWRlIHBhbmVsIHdpbGwgYmUgZ2VuZXJhdGVkCisjIGNvbnRhaW5pbmcgYSB0cmVlLWxpa2UgaW5kZXggc3RydWN0dXJlIChqdXN0IGxpa2UgdGhlIG9uZSB0aGF0IAorIyBpcyBnZW5lcmF0ZWQgZm9yIEhUTUwgSGVscCkuIEZvciB0aGlzIHRvIHdvcmsgYSBicm93c2VyIHRoYXQgc3VwcG9ydHMgCisjIEphdmFTY3JpcHQsIERIVE1MLCBDU1MgYW5kIGZyYW1lcyBpcyByZXF1aXJlZCAoZm9yIGluc3RhbmNlIE1vemlsbGEgMS4wKywgCisjIE5ldHNjYXBlIDYuMCssIEludGVybmV0IGV4cGxvcmVyIDUuMCssIG9yIEtvbnF1ZXJvcikuIFdpbmRvd3MgdXNlcnMgYXJlIAorIyBwcm9iYWJseSBiZXR0ZXIgb2ZmIHVzaW5nIHRoZSBIVE1MIGhlbHAgZmVhdHVyZS4gT3RoZXIgcG9zc2libGUgdmFsdWVzIAorIyBmb3IgdGhpcyB0YWcgYXJlOiBISUVSQVJDSElFUywgd2hpY2ggd2lsbCBnZW5lcmF0ZSB0aGUgR3JvdXBzLCBEaXJlY3RvcmllcywKKyMgYW5kIENsYXNzIEhpZXJlcmFjaHkgcGFnZXMgdXNpbmcgYSB0cmVlIHZpZXcgaW5zdGVhZCBvZiBhbiBvcmRlcmVkIGxpc3Q7CisjIEFMTCwgd2hpY2ggY29tYmluZXMgdGhlIGJlaGF2aW9yIG9mIEZSQU1FIGFuZCBISUVSQVJDSElFUzsgYW5kIE5PTkUsIHdoaWNoCisjIGRpc2FibGVzIHRoaXMgYmVoYXZpb3IgY29tcGxldGVseS4gRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMKKyMgcmVsZWFzZXMgb2YgRG94eWdlbiwgdGhlIHZhbHVlcyBZRVMgYW5kIE5PIGFyZSBlcXVpdmFsZW50IHRvIEZSQU1FIGFuZCBOT05FCisjIHJlc3BlY3RpdmVseS4KKworR0VORVJBVEVfVFJFRVZJRVcgICAgICA9IE5PTkUKKworIyBJZiB0aGUgdHJlZXZpZXcgaXMgZW5hYmxlZCAoc2VlIEdFTkVSQVRFX1RSRUVWSUVXKSB0aGVuIHRoaXMgdGFnIGNhbiBiZSAKKyMgdXNlZCB0byBzZXQgdGhlIGluaXRpYWwgd2lkdGggKGluIHBpeGVscykgb2YgdGhlIGZyYW1lIGluIHdoaWNoIHRoZSB0cmVlIAorIyBpcyBzaG93bi4KKworVFJFRVZJRVdfV0lEVEggICAgICAgICA9IDI1MAorCisjIFVzZSB0aGlzIHRhZyB0byBjaGFuZ2UgdGhlIGZvbnQgc2l6ZSBvZiBMYXRleCBmb3JtdWxhcyBpbmNsdWRlZCAKKyMgYXMgaW1hZ2VzIGluIHRoZSBIVE1MIGRvY3VtZW50YXRpb24uIFRoZSBkZWZhdWx0IGlzIDEwLiBOb3RlIHRoYXQgCisjIHdoZW4geW91IGNoYW5nZSB0aGUgZm9udCBzaXplIGFmdGVyIGEgc3VjY2Vzc2Z1bCBkb3h5Z2VuIHJ1biB5b3UgbmVlZCAKKyMgdG8gbWFudWFsbHkgcmVtb3ZlIGFueSBmb3JtXyoucG5nIGltYWdlcyBmcm9tIHRoZSBIVE1MIG91dHB1dCBkaXJlY3RvcnkgCisjIHRvIGZvcmNlIHRoZW0gdG8gYmUgcmVnZW5lcmF0ZWQuCisKK0ZPUk1VTEFfRk9OVFNJWkUgICAgICAgPSAxMAorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBMYVRlWCBvdXRwdXQKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBJZiB0aGUgR0VORVJBVEVfTEFURVggdGFnIGlzIHNldCB0byBZRVMgKHRoZSBkZWZhdWx0KSBEb3h5Z2VuIHdpbGwgCisjIGdlbmVyYXRlIExhdGV4IG91dHB1dC4KKworR0VORVJBVEVfTEFURVggICAgICAgICA9IE5PCisKKyMgVGhlIExBVEVYX09VVFBVVCB0YWcgaXMgdXNlZCB0byBzcGVjaWZ5IHdoZXJlIHRoZSBMYVRlWCBkb2NzIHdpbGwgYmUgcHV0LiAKKyMgSWYgYSByZWxhdGl2ZSBwYXRoIGlzIGVudGVyZWQgdGhlIHZhbHVlIG9mIE9VVFBVVF9ESVJFQ1RPUlkgd2lsbCBiZSAKKyMgcHV0IGluIGZyb250IG9mIGl0LiBJZiBsZWZ0IGJsYW5rIGBsYXRleCcgd2lsbCBiZSB1c2VkIGFzIHRoZSBkZWZhdWx0IHBhdGguCisKK0xBVEVYX09VVFBVVCAgICAgICAgICAgPSBsYXRleAorCisjIFRoZSBMQVRFWF9DTURfTkFNRSB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUgTGFUZVggY29tbWFuZCBuYW1lIHRvIGJlIAorIyBpbnZva2VkLiBJZiBsZWZ0IGJsYW5rIGBsYXRleCcgd2lsbCBiZSB1c2VkIGFzIHRoZSBkZWZhdWx0IGNvbW1hbmQgbmFtZS4KKworTEFURVhfQ01EX05BTUUgICAgICAgICA9IGxhdGV4CisKKyMgVGhlIE1BS0VJTkRFWF9DTURfTkFNRSB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUgY29tbWFuZCBuYW1lIHRvIAorIyBnZW5lcmF0ZSBpbmRleCBmb3IgTGFUZVguIElmIGxlZnQgYmxhbmsgYG1ha2VpbmRleCcgd2lsbCBiZSB1c2VkIGFzIHRoZSAKKyMgZGVmYXVsdCBjb21tYW5kIG5hbWUuCisKK01BS0VJTkRFWF9DTURfTkFNRSAgICAgPSBtYWtlaW5kZXgKKworIyBJZiB0aGUgQ09NUEFDVF9MQVRFWCB0YWcgaXMgc2V0IHRvIFlFUyBEb3h5Z2VuIGdlbmVyYXRlcyBtb3JlIGNvbXBhY3QgCisjIExhVGVYIGRvY3VtZW50cy4gVGhpcyBtYXkgYmUgdXNlZnVsIGZvciBzbWFsbCBwcm9qZWN0cyBhbmQgbWF5IGhlbHAgdG8gCisjIHNhdmUgc29tZSB0cmVlcyBpbiBnZW5lcmFsLgorCitDT01QQUNUX0xBVEVYICAgICAgICAgID0gTk8KKworIyBUaGUgUEFQRVJfVFlQRSB0YWcgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBwYXBlciB0eXBlIHRoYXQgaXMgdXNlZCAKKyMgYnkgdGhlIHByaW50ZXIuIFBvc3NpYmxlIHZhbHVlcyBhcmU6IGE0LCBhNHdpZGUsIGxldHRlciwgbGVnYWwgYW5kIAorIyBleGVjdXRpdmUuIElmIGxlZnQgYmxhbmsgYTR3aWRlIHdpbGwgYmUgdXNlZC4KKworUEFQRVJfVFlQRSAgICAgICAgICAgICA9IGE0d2lkZQorCisjIFRoZSBFWFRSQV9QQUNLQUdFUyB0YWcgY2FuIGJlIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgbmFtZXMgb2YgTGFUZVggCisjIHBhY2thZ2VzIHRoYXQgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSBMYVRlWCBvdXRwdXQuCisKK0VYVFJBX1BBQ0tBR0VTICAgICAgICAgPSAKKworIyBUaGUgTEFURVhfSEVBREVSIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGEgcGVyc29uYWwgTGFUZVggaGVhZGVyIGZvciAKKyMgdGhlIGdlbmVyYXRlZCBsYXRleCBkb2N1bWVudC4gVGhlIGhlYWRlciBzaG91bGQgY29udGFpbiBldmVyeXRoaW5nIHVudGlsIAorIyB0aGUgZmlyc3QgY2hhcHRlci4gSWYgaXQgaXMgbGVmdCBibGFuayBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSAKKyMgc3RhbmRhcmQgaGVhZGVyLiBOb3RpY2U6IG9ubHkgdXNlIHRoaXMgdGFnIGlmIHlvdSBrbm93IHdoYXQgeW91IGFyZSBkb2luZyEKKworTEFURVhfSEVBREVSICAgICAgICAgICA9IAorCisjIElmIHRoZSBQREZfSFlQRVJMSU5LUyB0YWcgaXMgc2V0IHRvIFlFUywgdGhlIExhVGVYIHRoYXQgaXMgZ2VuZXJhdGVkIAorIyBpcyBwcmVwYXJlZCBmb3IgY29udmVyc2lvbiB0byBwZGYgKHVzaW5nIHBzMnBkZikuIFRoZSBwZGYgZmlsZSB3aWxsIAorIyBjb250YWluIGxpbmtzIChqdXN0IGxpa2UgdGhlIEhUTUwgb3V0cHV0KSBpbnN0ZWFkIG9mIHBhZ2UgcmVmZXJlbmNlcyAKKyMgVGhpcyBtYWtlcyB0aGUgb3V0cHV0IHN1aXRhYmxlIGZvciBvbmxpbmUgYnJvd3NpbmcgdXNpbmcgYSBwZGYgdmlld2VyLgorCitQREZfSFlQRVJMSU5LUyAgICAgICAgID0gWUVTCisKKyMgSWYgdGhlIFVTRV9QREZMQVRFWCB0YWcgaXMgc2V0IHRvIFlFUywgcGRmbGF0ZXggd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgCisjIHBsYWluIGxhdGV4IGluIHRoZSBnZW5lcmF0ZWQgTWFrZWZpbGUuIFNldCB0aGlzIG9wdGlvbiB0byBZRVMgdG8gZ2V0IGEgCisjIGhpZ2hlciBxdWFsaXR5IFBERiBkb2N1bWVudGF0aW9uLgorCitVU0VfUERGTEFURVggICAgICAgICAgID0gWUVTCisKKyMgSWYgdGhlIExBVEVYX0JBVENITU9ERSB0YWcgaXMgc2V0IHRvIFlFUywgZG94eWdlbiB3aWxsIGFkZCB0aGUgXFxiYXRjaG1vZGUuIAorIyBjb21tYW5kIHRvIHRoZSBnZW5lcmF0ZWQgTGFUZVggZmlsZXMuIFRoaXMgd2lsbCBpbnN0cnVjdCBMYVRlWCB0byBrZWVwIAorIyBydW5uaW5nIGlmIGVycm9ycyBvY2N1ciwgaW5zdGVhZCBvZiBhc2tpbmcgdGhlIHVzZXIgZm9yIGhlbHAuIAorIyBUaGlzIG9wdGlvbiBpcyBhbHNvIHVzZWQgd2hlbiBnZW5lcmF0aW5nIGZvcm11bGFzIGluIEhUTUwuCisKK0xBVEVYX0JBVENITU9ERSAgICAgICAgPSBOTworCisjIElmIExBVEVYX0hJREVfSU5ESUNFUyBpcyBzZXQgdG8gWUVTIHRoZW4gZG94eWdlbiB3aWxsIG5vdCAKKyMgaW5jbHVkZSB0aGUgaW5kZXggY2hhcHRlcnMgKHN1Y2ggYXMgRmlsZSBJbmRleCwgQ29tcG91bmQgSW5kZXgsIGV0Yy4pIAorIyBpbiB0aGUgb3V0cHV0LgorCitMQVRFWF9ISURFX0lORElDRVMgICAgID0gTk8KKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgUlRGIG91dHB1dAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIElmIHRoZSBHRU5FUkFURV9SVEYgdGFnIGlzIHNldCB0byBZRVMgRG94eWdlbiB3aWxsIGdlbmVyYXRlIFJURiBvdXRwdXQgCisjIFRoZSBSVEYgb3V0cHV0IGlzIG9wdGltaXplZCBmb3IgV29yZCA5NyBhbmQgbWF5IG5vdCBsb29rIHZlcnkgcHJldHR5IHdpdGggCisjIG90aGVyIFJURiByZWFkZXJzIG9yIGVkaXRvcnMuCisKK0dFTkVSQVRFX1JURiAgICAgICAgICAgPSBOTworCisjIFRoZSBSVEZfT1VUUFVUIHRhZyBpcyB1c2VkIHRvIHNwZWNpZnkgd2hlcmUgdGhlIFJURiBkb2NzIHdpbGwgYmUgcHV0LiAKKyMgSWYgYSByZWxhdGl2ZSBwYXRoIGlzIGVudGVyZWQgdGhlIHZhbHVlIG9mIE9VVFBVVF9ESVJFQ1RPUlkgd2lsbCBiZSAKKyMgcHV0IGluIGZyb250IG9mIGl0LiBJZiBsZWZ0IGJsYW5rIGBydGYnIHdpbGwgYmUgdXNlZCBhcyB0aGUgZGVmYXVsdCBwYXRoLgorCitSVEZfT1VUUFVUICAgICAgICAgICAgID0gcnRmCisKKyMgSWYgdGhlIENPTVBBQ1RfUlRGIHRhZyBpcyBzZXQgdG8gWUVTIERveHlnZW4gZ2VuZXJhdGVzIG1vcmUgY29tcGFjdCAKKyMgUlRGIGRvY3VtZW50cy4gVGhpcyBtYXkgYmUgdXNlZnVsIGZvciBzbWFsbCBwcm9qZWN0cyBhbmQgbWF5IGhlbHAgdG8gCisjIHNhdmUgc29tZSB0cmVlcyBpbiBnZW5lcmFsLgorCitDT01QQUNUX1JURiAgICAgICAgICAgID0gTk8KKworIyBJZiB0aGUgUlRGX0hZUEVSTElOS1MgdGFnIGlzIHNldCB0byBZRVMsIHRoZSBSVEYgdGhhdCBpcyBnZW5lcmF0ZWQgCisjIHdpbGwgY29udGFpbiBoeXBlcmxpbmsgZmllbGRzLiBUaGUgUlRGIGZpbGUgd2lsbCAKKyMgY29udGFpbiBsaW5rcyAoanVzdCBsaWtlIHRoZSBIVE1MIG91dHB1dCkgaW5zdGVhZCBvZiBwYWdlIHJlZmVyZW5jZXMuIAorIyBUaGlzIG1ha2VzIHRoZSBvdXRwdXQgc3VpdGFibGUgZm9yIG9ubGluZSBicm93c2luZyB1c2luZyBXT1JEIG9yIG90aGVyIAorIyBwcm9ncmFtcyB3aGljaCBzdXBwb3J0IHRob3NlIGZpZWxkcy4gCisjIE5vdGU6IHdvcmRwYWQgKHdyaXRlKSBhbmQgb3RoZXJzIGRvIG5vdCBzdXBwb3J0IGxpbmtzLgorCitSVEZfSFlQRVJMSU5LUyAgICAgICAgID0gTk8KKworIyBMb2FkIHN0eWxlc2hlZXQgZGVmaW5pdGlvbnMgZnJvbSBmaWxlLiBTeW50YXggaXMgc2ltaWxhciB0byBkb3h5Z2VuJ3MgCisjIGNvbmZpZyBmaWxlLCBpLmUuIGEgc2VyaWVzIG9mIGFzc2lnbm1lbnRzLiBZb3Ugb25seSBoYXZlIHRvIHByb3ZpZGUgCisjIHJlcGxhY2VtZW50cywgbWlzc2luZyBkZWZpbml0aW9ucyBhcmUgc2V0IHRvIHRoZWlyIGRlZmF1bHQgdmFsdWUuCisKK1JURl9TVFlMRVNIRUVUX0ZJTEUgICAgPSAKKworIyBTZXQgb3B0aW9uYWwgdmFyaWFibGVzIHVzZWQgaW4gdGhlIGdlbmVyYXRpb24gb2YgYW4gcnRmIGRvY3VtZW50LiAKKyMgU3ludGF4IGlzIHNpbWlsYXIgdG8gZG94eWdlbidzIGNvbmZpZyBmaWxlLgorCitSVEZfRVhURU5TSU9OU19GSUxFICAgID0gCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIG1hbiBwYWdlIG91dHB1dAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIElmIHRoZSBHRU5FUkFURV9NQU4gdGFnIGlzIHNldCB0byBZRVMgKHRoZSBkZWZhdWx0KSBEb3h5Z2VuIHdpbGwgCisjIGdlbmVyYXRlIG1hbiBwYWdlcworCitHRU5FUkFURV9NQU4gICAgICAgICAgID0gTk8KKworIyBUaGUgTUFOX09VVFBVVCB0YWcgaXMgdXNlZCB0byBzcGVjaWZ5IHdoZXJlIHRoZSBtYW4gcGFnZXMgd2lsbCBiZSBwdXQuIAorIyBJZiBhIHJlbGF0aXZlIHBhdGggaXMgZW50ZXJlZCB0aGUgdmFsdWUgb2YgT1VUUFVUX0RJUkVDVE9SWSB3aWxsIGJlIAorIyBwdXQgaW4gZnJvbnQgb2YgaXQuIElmIGxlZnQgYmxhbmsgYG1hbicgd2lsbCBiZSB1c2VkIGFzIHRoZSBkZWZhdWx0IHBhdGguCisKK01BTl9PVVRQVVQgICAgICAgICAgICAgPSBtYW4KKworIyBUaGUgTUFOX0VYVEVOU0lPTiB0YWcgZGV0ZXJtaW5lcyB0aGUgZXh0ZW5zaW9uIHRoYXQgaXMgYWRkZWQgdG8gCisjIHRoZSBnZW5lcmF0ZWQgbWFuIHBhZ2VzIChkZWZhdWx0IGlzIHRoZSBzdWJyb3V0aW5lJ3Mgc2VjdGlvbiAuMykKKworTUFOX0VYVEVOU0lPTiAgICAgICAgICA9IC4zCisKKyMgSWYgdGhlIE1BTl9MSU5LUyB0YWcgaXMgc2V0IHRvIFlFUyBhbmQgRG94eWdlbiBnZW5lcmF0ZXMgbWFuIG91dHB1dCwgCisjIHRoZW4gaXQgd2lsbCBnZW5lcmF0ZSBvbmUgYWRkaXRpb25hbCBtYW4gZmlsZSBmb3IgZWFjaCBlbnRpdHkgCisjIGRvY3VtZW50ZWQgaW4gdGhlIHJlYWwgbWFuIHBhZ2UocykuIFRoZXNlIGFkZGl0aW9uYWwgZmlsZXMgCisjIG9ubHkgc291cmNlIHRoZSByZWFsIG1hbiBwYWdlLCBidXQgd2l0aG91dCB0aGVtIHRoZSBtYW4gY29tbWFuZCAKKyMgd291bGQgYmUgdW5hYmxlIHRvIGZpbmQgdGhlIGNvcnJlY3QgcGFnZS4gVGhlIGRlZmF1bHQgaXMgTk8uCisKK01BTl9MSU5LUyAgICAgICAgICAgICAgPSBOTworCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBYTUwgb3V0cHV0CisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMgSWYgdGhlIEdFTkVSQVRFX1hNTCB0YWcgaXMgc2V0IHRvIFlFUyBEb3h5Z2VuIHdpbGwgCisjIGdlbmVyYXRlIGFuIFhNTCBmaWxlIHRoYXQgY2FwdHVyZXMgdGhlIHN0cnVjdHVyZSBvZiAKKyMgdGhlIGNvZGUgaW5jbHVkaW5nIGFsbCBkb2N1bWVudGF0aW9uLgorCitHRU5FUkFURV9YTUwgICAgICAgICAgID0gTk8KKworIyBUaGUgWE1MX09VVFBVVCB0YWcgaXMgdXNlZCB0byBzcGVjaWZ5IHdoZXJlIHRoZSBYTUwgcGFnZXMgd2lsbCBiZSBwdXQuIAorIyBJZiBhIHJlbGF0aXZlIHBhdGggaXMgZW50ZXJlZCB0aGUgdmFsdWUgb2YgT1VUUFVUX0RJUkVDVE9SWSB3aWxsIGJlIAorIyBwdXQgaW4gZnJvbnQgb2YgaXQuIElmIGxlZnQgYmxhbmsgYHhtbCcgd2lsbCBiZSB1c2VkIGFzIHRoZSBkZWZhdWx0IHBhdGguCisKK1hNTF9PVVRQVVQgICAgICAgICAgICAgPSB4bWwKKworIyBUaGUgWE1MX1NDSEVNQSB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhbiBYTUwgc2NoZW1hLCAKKyMgd2hpY2ggY2FuIGJlIHVzZWQgYnkgYSB2YWxpZGF0aW5nIFhNTCBwYXJzZXIgdG8gY2hlY2sgdGhlIAorIyBzeW50YXggb2YgdGhlIFhNTCBmaWxlcy4KKworWE1MX1NDSEVNQSAgICAgICAgICAgICA9IAorCisjIFRoZSBYTUxfRFREIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGFuIFhNTCBEVEQsIAorIyB3aGljaCBjYW4gYmUgdXNlZCBieSBhIHZhbGlkYXRpbmcgWE1MIHBhcnNlciB0byBjaGVjayB0aGUgCisjIHN5bnRheCBvZiB0aGUgWE1MIGZpbGVzLgorCitYTUxfRFREICAgICAgICAgICAgICAgID0gCisKKyMgSWYgdGhlIFhNTF9QUk9HUkFNTElTVElORyB0YWcgaXMgc2V0IHRvIFlFUyBEb3h5Z2VuIHdpbGwgCisjIGR1bXAgdGhlIHByb2dyYW0gbGlzdGluZ3MgKGluY2x1ZGluZyBzeW50YXggaGlnaGxpZ2h0aW5nIAorIyBhbmQgY3Jvc3MtcmVmZXJlbmNpbmcgaW5mb3JtYXRpb24pIHRvIHRoZSBYTUwgb3V0cHV0LiBOb3RlIHRoYXQgCisjIGVuYWJsaW5nIHRoaXMgd2lsbCBzaWduaWZpY2FudGx5IGluY3JlYXNlIHRoZSBzaXplIG9mIHRoZSBYTUwgb3V0cHV0LgorCitYTUxfUFJPR1JBTUxJU1RJTkcgICAgID0gWUVTCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgQXV0b0dlbiBEZWZpbml0aW9ucyBvdXRwdXQKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBJZiB0aGUgR0VORVJBVEVfQVVUT0dFTl9ERUYgdGFnIGlzIHNldCB0byBZRVMgRG94eWdlbiB3aWxsIAorIyBnZW5lcmF0ZSBhbiBBdXRvR2VuIERlZmluaXRpb25zIChzZWUgYXV0b2dlbi5zZi5uZXQpIGZpbGUgCisjIHRoYXQgY2FwdHVyZXMgdGhlIHN0cnVjdHVyZSBvZiB0aGUgY29kZSBpbmNsdWRpbmcgYWxsIAorIyBkb2N1bWVudGF0aW9uLiBOb3RlIHRoYXQgdGhpcyBmZWF0dXJlIGlzIHN0aWxsIGV4cGVyaW1lbnRhbCAKKyMgYW5kIGluY29tcGxldGUgYXQgdGhlIG1vbWVudC4KKworR0VORVJBVEVfQVVUT0dFTl9ERUYgICA9IE5PCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIFBlcmwgbW9kdWxlIG91dHB1dAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIElmIHRoZSBHRU5FUkFURV9QRVJMTU9EIHRhZyBpcyBzZXQgdG8gWUVTIERveHlnZW4gd2lsbCAKKyMgZ2VuZXJhdGUgYSBQZXJsIG1vZHVsZSBmaWxlIHRoYXQgY2FwdHVyZXMgdGhlIHN0cnVjdHVyZSBvZiAKKyMgdGhlIGNvZGUgaW5jbHVkaW5nIGFsbCBkb2N1bWVudGF0aW9uLiBOb3RlIHRoYXQgdGhpcyAKKyMgZmVhdHVyZSBpcyBzdGlsbCBleHBlcmltZW50YWwgYW5kIGluY29tcGxldGUgYXQgdGhlIAorIyBtb21lbnQuCisKK0dFTkVSQVRFX1BFUkxNT0QgICAgICAgPSBOTworCisjIElmIHRoZSBQRVJMTU9EX0xBVEVYIHRhZyBpcyBzZXQgdG8gWUVTIERveHlnZW4gd2lsbCBnZW5lcmF0ZSAKKyMgdGhlIG5lY2Vzc2FyeSBNYWtlZmlsZSBydWxlcywgUGVybCBzY3JpcHRzIGFuZCBMYVRlWCBjb2RlIHRvIGJlIGFibGUgCisjIHRvIGdlbmVyYXRlIFBERiBhbmQgRFZJIG91dHB1dCBmcm9tIHRoZSBQZXJsIG1vZHVsZSBvdXRwdXQuCisKK1BFUkxNT0RfTEFURVggICAgICAgICAgPSBOTworCisjIElmIHRoZSBQRVJMTU9EX1BSRVRUWSB0YWcgaXMgc2V0IHRvIFlFUyB0aGUgUGVybCBtb2R1bGUgb3V0cHV0IHdpbGwgYmUgCisjIG5pY2VseSBmb3JtYXR0ZWQgc28gaXQgY2FuIGJlIHBhcnNlZCBieSBhIGh1bWFuIHJlYWRlci4gIFRoaXMgaXMgdXNlZnVsIAorIyBpZiB5b3Ugd2FudCB0byB1bmRlcnN0YW5kIHdoYXQgaXMgZ29pbmcgb24uICBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgdGhpcyAKKyMgdGFnIGlzIHNldCB0byBOTyB0aGUgc2l6ZSBvZiB0aGUgUGVybCBtb2R1bGUgb3V0cHV0IHdpbGwgYmUgbXVjaCBzbWFsbGVyIAorIyBhbmQgUGVybCB3aWxsIHBhcnNlIGl0IGp1c3QgdGhlIHNhbWUuCisKK1BFUkxNT0RfUFJFVFRZICAgICAgICAgPSBZRVMKKworIyBUaGUgbmFtZXMgb2YgdGhlIG1ha2UgdmFyaWFibGVzIGluIHRoZSBnZW5lcmF0ZWQgZG94eXJ1bGVzLm1ha2UgZmlsZSAKKyMgYXJlIHByZWZpeGVkIHdpdGggdGhlIHN0cmluZyBjb250YWluZWQgaW4gUEVSTE1PRF9NQUtFVkFSX1BSRUZJWC4gCisjIFRoaXMgaXMgdXNlZnVsIHNvIGRpZmZlcmVudCBkb3h5cnVsZXMubWFrZSBmaWxlcyBpbmNsdWRlZCBieSB0aGUgc2FtZSAKKyMgTWFrZWZpbGUgZG9uJ3Qgb3ZlcndyaXRlIGVhY2ggb3RoZXIncyB2YXJpYWJsZXMuCisKK1BFUkxNT0RfTUFLRVZBUl9QUkVGSVggPSAKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgcHJlcHJvY2Vzc29yICAgCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMgSWYgdGhlIEVOQUJMRV9QUkVQUk9DRVNTSU5HIHRhZyBpcyBzZXQgdG8gWUVTICh0aGUgZGVmYXVsdCkgRG94eWdlbiB3aWxsIAorIyBldmFsdWF0ZSBhbGwgQy1wcmVwcm9jZXNzb3IgZGlyZWN0aXZlcyBmb3VuZCBpbiB0aGUgc291cmNlcyBhbmQgaW5jbHVkZSAKKyMgZmlsZXMuCisKK0VOQUJMRV9QUkVQUk9DRVNTSU5HICAgPSBZRVMKKworIyBJZiB0aGUgTUFDUk9fRVhQQU5TSU9OIHRhZyBpcyBzZXQgdG8gWUVTIERveHlnZW4gd2lsbCBleHBhbmQgYWxsIG1hY3JvIAorIyBuYW1lcyBpbiB0aGUgc291cmNlIGNvZGUuIElmIHNldCB0byBOTyAodGhlIGRlZmF1bHQpIG9ubHkgY29uZGl0aW9uYWwgCisjIGNvbXBpbGF0aW9uIHdpbGwgYmUgcGVyZm9ybWVkLiBNYWNybyBleHBhbnNpb24gY2FuIGJlIGRvbmUgaW4gYSBjb250cm9sbGVkIAorIyB3YXkgYnkgc2V0dGluZyBFWFBBTkRfT05MWV9QUkVERUYgdG8gWUVTLgorCitNQUNST19FWFBBTlNJT04gICAgICAgID0gTk8KKworIyBJZiB0aGUgRVhQQU5EX09OTFlfUFJFREVGIGFuZCBNQUNST19FWFBBTlNJT04gdGFncyBhcmUgYm90aCBzZXQgdG8gWUVTIAorIyB0aGVuIHRoZSBtYWNybyBleHBhbnNpb24gaXMgbGltaXRlZCB0byB0aGUgbWFjcm9zIHNwZWNpZmllZCB3aXRoIHRoZSAKKyMgUFJFREVGSU5FRCBhbmQgRVhQQU5EX0FTX0RFRklORUQgdGFncy4KKworRVhQQU5EX09OTFlfUFJFREVGICAgICA9IE5PCisKKyMgSWYgdGhlIFNFQVJDSF9JTkNMVURFUyB0YWcgaXMgc2V0IHRvIFlFUyAodGhlIGRlZmF1bHQpIHRoZSBpbmNsdWRlcyBmaWxlcyAKKyMgaW4gdGhlIElOQ0xVREVfUEFUSCAoc2VlIGJlbG93KSB3aWxsIGJlIHNlYXJjaCBpZiBhICNpbmNsdWRlIGlzIGZvdW5kLgorCitTRUFSQ0hfSU5DTFVERVMgICAgICAgID0gWUVTCisKKyMgVGhlIElOQ0xVREVfUEFUSCB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSBkaXJlY3RvcmllcyB0aGF0IAorIyBjb250YWluIGluY2x1ZGUgZmlsZXMgdGhhdCBhcmUgbm90IGlucHV0IGZpbGVzIGJ1dCBzaG91bGQgYmUgcHJvY2Vzc2VkIGJ5IAorIyB0aGUgcHJlcHJvY2Vzc29yLgorCitJTkNMVURFX1BBVEggICAgICAgICAgID0gCisKKyMgWW91IGNhbiB1c2UgdGhlIElOQ0xVREVfRklMRV9QQVRURVJOUyB0YWcgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSB3aWxkY2FyZCAKKyMgcGF0dGVybnMgKGxpa2UgKi5oIGFuZCAqLmhwcCkgdG8gZmlsdGVyIG91dCB0aGUgaGVhZGVyLWZpbGVzIGluIHRoZSAKKyMgZGlyZWN0b3JpZXMuIElmIGxlZnQgYmxhbmssIHRoZSBwYXR0ZXJucyBzcGVjaWZpZWQgd2l0aCBGSUxFX1BBVFRFUk5TIHdpbGwgCisjIGJlIHVzZWQuCisKK0lOQ0xVREVfRklMRV9QQVRURVJOUyAgPSAKKworIyBUaGUgUFJFREVGSU5FRCB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSBtYWNybyBuYW1lcyB0aGF0IAorIyBhcmUgZGVmaW5lZCBiZWZvcmUgdGhlIHByZXByb2Nlc3NvciBpcyBzdGFydGVkIChzaW1pbGFyIHRvIHRoZSAtRCBvcHRpb24gb2YgCisjIGdjYykuIFRoZSBhcmd1bWVudCBvZiB0aGUgdGFnIGlzIGEgbGlzdCBvZiBtYWNyb3Mgb2YgdGhlIGZvcm06IG5hbWUgCisjIG9yIG5hbWU9ZGVmaW5pdGlvbiAobm8gc3BhY2VzKS4gSWYgdGhlIGRlZmluaXRpb24gYW5kIHRoZSA9IGFyZSAKKyMgb21pdHRlZCA9MSBpcyBhc3N1bWVkLiBUbyBwcmV2ZW50IGEgbWFjcm8gZGVmaW5pdGlvbiBmcm9tIGJlaW5nIAorIyB1bmRlZmluZWQgdmlhICN1bmRlZiBvciByZWN1cnNpdmVseSBleHBhbmRlZCB1c2UgdGhlIDo9IG9wZXJhdG9yIAorIyBpbnN0ZWFkIG9mIHRoZSA9IG9wZXJhdG9yLgorCitQUkVERUZJTkVEICAgICAgICAgICAgID0gCisKKyMgSWYgdGhlIE1BQ1JPX0VYUEFOU0lPTiBhbmQgRVhQQU5EX09OTFlfUFJFREVGIHRhZ3MgYXJlIHNldCB0byBZRVMgdGhlbiAKKyMgdGhpcyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIGxpc3Qgb2YgbWFjcm8gbmFtZXMgdGhhdCBzaG91bGQgYmUgZXhwYW5kZWQuIAorIyBUaGUgbWFjcm8gZGVmaW5pdGlvbiB0aGF0IGlzIGZvdW5kIGluIHRoZSBzb3VyY2VzIHdpbGwgYmUgdXNlZC4gCisjIFVzZSB0aGUgUFJFREVGSU5FRCB0YWcgaWYgeW91IHdhbnQgdG8gdXNlIGEgZGlmZmVyZW50IG1hY3JvIGRlZmluaXRpb24uCisKK0VYUEFORF9BU19ERUZJTkVEICAgICAgPSAKKworIyBJZiB0aGUgU0tJUF9GVU5DVElPTl9NQUNST1MgdGFnIGlzIHNldCB0byBZRVMgKHRoZSBkZWZhdWx0KSB0aGVuIAorIyBkb3h5Z2VuJ3MgcHJlcHJvY2Vzc29yIHdpbGwgcmVtb3ZlIGFsbCBmdW5jdGlvbi1saWtlIG1hY3JvcyB0aGF0IGFyZSBhbG9uZSAKKyMgb24gYSBsaW5lLCBoYXZlIGFuIGFsbCB1cHBlcmNhc2UgbmFtZSwgYW5kIGRvIG5vdCBlbmQgd2l0aCBhIHNlbWljb2xvbi4gU3VjaCAKKyMgZnVuY3Rpb24gbWFjcm9zIGFyZSB0eXBpY2FsbHkgdXNlZCBmb3IgYm9pbGVyLXBsYXRlIGNvZGUsIGFuZCB3aWxsIGNvbmZ1c2UgCisjIHRoZSBwYXJzZXIgaWYgbm90IHJlbW92ZWQuCisKK1NLSVBfRlVOQ1RJT05fTUFDUk9TICAgPSBZRVMKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDb25maWd1cmF0aW9uOjphZGRpdGlvbnMgcmVsYXRlZCB0byBleHRlcm5hbCByZWZlcmVuY2VzICAgCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMgVGhlIFRBR0ZJTEVTIG9wdGlvbiBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIHRhZ2ZpbGVzLiAKKyMgT3B0aW9uYWxseSBhbiBpbml0aWFsIGxvY2F0aW9uIG9mIHRoZSBleHRlcm5hbCBkb2N1bWVudGF0aW9uIAorIyBjYW4gYmUgYWRkZWQgZm9yIGVhY2ggdGFnZmlsZS4gVGhlIGZvcm1hdCBvZiBhIHRhZyBmaWxlIHdpdGhvdXQgCisjIHRoaXMgbG9jYXRpb24gaXMgYXMgZm9sbG93czogCisjICAgVEFHRklMRVMgPSBmaWxlMSBmaWxlMiAuLi4gCisjIEFkZGluZyBsb2NhdGlvbiBmb3IgdGhlIHRhZyBmaWxlcyBpcyBkb25lIGFzIGZvbGxvd3M6IAorIyAgIFRBR0ZJTEVTID0gZmlsZTE9bG9jMSAiZmlsZTIgPSBsb2MyIiAuLi4gCisjIHdoZXJlICJsb2MxIiBhbmQgImxvYzIiIGNhbiBiZSByZWxhdGl2ZSBvciBhYnNvbHV0ZSBwYXRocyBvciAKKyMgVVJMcy4gSWYgYSBsb2NhdGlvbiBpcyBwcmVzZW50IGZvciBlYWNoIHRhZywgdGhlIGluc3RhbGxkb3ggdG9vbCAKKyMgZG9lcyBub3QgaGF2ZSB0byBiZSBydW4gdG8gY29ycmVjdCB0aGUgbGlua3MuCisjIE5vdGUgdGhhdCBlYWNoIHRhZyBmaWxlIG11c3QgaGF2ZSBhIHVuaXF1ZSBuYW1lCisjICh3aGVyZSB0aGUgbmFtZSBkb2VzIE5PVCBpbmNsdWRlIHRoZSBwYXRoKQorIyBJZiBhIHRhZyBmaWxlIGlzIG5vdCBsb2NhdGVkIGluIHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggZG94eWdlbiAKKyMgaXMgcnVuLCB5b3UgbXVzdCBhbHNvIHNwZWNpZnkgdGhlIHBhdGggdG8gdGhlIHRhZ2ZpbGUgaGVyZS4KKworVEFHRklMRVMgICAgICAgICAgICAgICA9IAorCisjIFdoZW4gYSBmaWxlIG5hbWUgaXMgc3BlY2lmaWVkIGFmdGVyIEdFTkVSQVRFX1RBR0ZJTEUsIGRveHlnZW4gd2lsbCBjcmVhdGUgCisjIGEgdGFnIGZpbGUgdGhhdCBpcyBiYXNlZCBvbiB0aGUgaW5wdXQgZmlsZXMgaXQgcmVhZHMuCisKK0dFTkVSQVRFX1RBR0ZJTEUgICAgICAgPSAKKworIyBJZiB0aGUgQUxMRVhURVJOQUxTIHRhZyBpcyBzZXQgdG8gWUVTIGFsbCBleHRlcm5hbCBjbGFzc2VzIHdpbGwgYmUgbGlzdGVkIAorIyBpbiB0aGUgY2xhc3MgaW5kZXguIElmIHNldCB0byBOTyBvbmx5IHRoZSBpbmhlcml0ZWQgZXh0ZXJuYWwgY2xhc3NlcyAKKyMgd2lsbCBiZSBsaXN0ZWQuCisKK0FMTEVYVEVSTkFMUyAgICAgICAgICAgPSBOTworCisjIElmIHRoZSBFWFRFUk5BTF9HUk9VUFMgdGFnIGlzIHNldCB0byBZRVMgYWxsIGV4dGVybmFsIGdyb3VwcyB3aWxsIGJlIGxpc3RlZCAKKyMgaW4gdGhlIG1vZHVsZXMgaW5kZXguIElmIHNldCB0byBOTywgb25seSB0aGUgY3VycmVudCBwcm9qZWN0J3MgZ3JvdXBzIHdpbGwgCisjIGJlIGxpc3RlZC4KKworRVhURVJOQUxfR1JPVVBTICAgICAgICA9IFlFUworCisjIFRoZSBQRVJMX1BBVEggc2hvdWxkIGJlIHRoZSBhYnNvbHV0ZSBwYXRoIGFuZCBuYW1lIG9mIHRoZSBwZXJsIHNjcmlwdCAKKyMgaW50ZXJwcmV0ZXIgKGkuZS4gdGhlIHJlc3VsdCBvZiBgd2hpY2ggcGVybCcpLgorCitQRVJMX1BBVEggICAgICAgICAgICAgID0gL3Vzci9iaW4vcGVybAorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBkb3QgdG9vbCAgIAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIElmIHRoZSBDTEFTU19ESUFHUkFNUyB0YWcgaXMgc2V0IHRvIFlFUyAodGhlIGRlZmF1bHQpIERveHlnZW4gd2lsbCAKKyMgZ2VuZXJhdGUgYSBpbmhlcml0YW5jZSBkaWFncmFtIChpbiBIVE1MLCBSVEYgYW5kIExhVGVYKSBmb3IgY2xhc3NlcyB3aXRoIGJhc2UgCisjIG9yIHN1cGVyIGNsYXNzZXMuIFNldHRpbmcgdGhlIHRhZyB0byBOTyB0dXJucyB0aGUgZGlhZ3JhbXMgb2ZmLiBOb3RlIHRoYXQgCisjIHRoaXMgb3B0aW9uIGlzIHN1cGVyc2VkZWQgYnkgdGhlIEhBVkVfRE9UIG9wdGlvbiBiZWxvdy4gVGhpcyBpcyBvbmx5IGEgCisjIGZhbGxiYWNrLiBJdCBpcyByZWNvbW1lbmRlZCB0byBpbnN0YWxsIGFuZCB1c2UgZG90LCBzaW5jZSBpdCB5aWVsZHMgbW9yZSAKKyMgcG93ZXJmdWwgZ3JhcGhzLgorCitDTEFTU19ESUFHUkFNUyAgICAgICAgID0gWUVTCisKKyMgWW91IGNhbiBkZWZpbmUgbWVzc2FnZSBzZXF1ZW5jZSBjaGFydHMgd2l0aGluIGRveHlnZW4gY29tbWVudHMgdXNpbmcgdGhlIFxtc2MgCisjIGNvbW1hbmQuIERveHlnZW4gd2lsbCB0aGVuIHJ1biB0aGUgbXNjZ2VuIHRvb2wgKHNlZSAKKyMgaHR0cDovL3d3dy5tY3Rlcm5hbi5tZS51ay9tc2NnZW4vKSB0byBwcm9kdWNlIHRoZSBjaGFydCBhbmQgaW5zZXJ0IGl0IGluIHRoZSAKKyMgZG9jdW1lbnRhdGlvbi4gVGhlIE1TQ0dFTl9QQVRIIHRhZyBhbGxvd3MgeW91IHRvIHNwZWNpZnkgdGhlIGRpcmVjdG9yeSB3aGVyZSAKKyMgdGhlIG1zY2dlbiB0b29sIHJlc2lkZXMuIElmIGxlZnQgZW1wdHkgdGhlIHRvb2wgaXMgYXNzdW1lZCB0byBiZSBmb3VuZCBpbiB0aGUgCisjIGRlZmF1bHQgc2VhcmNoIHBhdGguCisKK01TQ0dFTl9QQVRIICAgICAgICAgICAgPSAKKworIyBJZiBzZXQgdG8gWUVTLCB0aGUgaW5oZXJpdGFuY2UgYW5kIGNvbGxhYm9yYXRpb24gZ3JhcGhzIHdpbGwgaGlkZSAKKyMgaW5oZXJpdGFuY2UgYW5kIHVzYWdlIHJlbGF0aW9ucyBpZiB0aGUgdGFyZ2V0IGlzIHVuZG9jdW1lbnRlZCAKKyMgb3IgaXMgbm90IGEgY2xhc3MuCisKK0hJREVfVU5ET0NfUkVMQVRJT05TICAgPSBZRVMKKworIyBJZiB5b3Ugc2V0IHRoZSBIQVZFX0RPVCB0YWcgdG8gWUVTIHRoZW4gZG94eWdlbiB3aWxsIGFzc3VtZSB0aGUgZG90IHRvb2wgaXMgCisjIGF2YWlsYWJsZSBmcm9tIHRoZSBwYXRoLiBUaGlzIHRvb2wgaXMgcGFydCBvZiBHcmFwaHZpeiwgYSBncmFwaCB2aXN1YWxpemF0aW9uIAorIyB0b29sa2l0IGZyb20gQVQmVCBhbmQgTHVjZW50IEJlbGwgTGFicy4gVGhlIG90aGVyIG9wdGlvbnMgaW4gdGhpcyBzZWN0aW9uIAorIyBoYXZlIG5vIGVmZmVjdCBpZiB0aGlzIG9wdGlvbiBpcyBzZXQgdG8gTk8gKHRoZSBkZWZhdWx0KQorCitIQVZFX0RPVCAgICAgICAgICAgICAgID0gTk8KKworIyBCeSBkZWZhdWx0IGRveHlnZW4gd2lsbCB3cml0ZSBhIGZvbnQgY2FsbGVkIEZyZWVTYW5zLnR0ZiB0byB0aGUgb3V0cHV0IAorIyBkaXJlY3RvcnkgYW5kIHJlZmVyZW5jZSBpdCBpbiBhbGwgZG90IGZpbGVzIHRoYXQgZG94eWdlbiBnZW5lcmF0ZXMuIFRoaXMgCisjIGZvbnQgZG9lcyBub3QgaW5jbHVkZSBhbGwgcG9zc2libGUgdW5pY29kZSBjaGFyYWN0ZXJzIGhvd2V2ZXIsIHNvIHdoZW4geW91IG5lZWQgCisjIHRoZXNlIChvciBqdXN0IHdhbnQgYSBkaWZmZXJlbnRseSBsb29raW5nIGZvbnQpIHlvdSBjYW4gc3BlY2lmeSB0aGUgZm9udCBuYW1lIAorIyB1c2luZyBET1RfRk9OVE5BTUUuIFlvdSBuZWVkIG5lZWQgdG8gbWFrZSBzdXJlIGRvdCBpcyBhYmxlIHRvIGZpbmQgdGhlIGZvbnQsIAorIyB3aGljaCBjYW4gYmUgZG9uZSBieSBwdXR0aW5nIGl0IGluIGEgc3RhbmRhcmQgbG9jYXRpb24gb3IgYnkgc2V0dGluZyB0aGUgCisjIERPVEZPTlRQQVRIIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIGJ5IHNldHRpbmcgRE9UX0ZPTlRQQVRIIHRvIHRoZSBkaXJlY3RvcnkgCisjIGNvbnRhaW5pbmcgdGhlIGZvbnQuCisKK0RPVF9GT05UTkFNRSAgICAgICAgICAgPSBGcmVlU2FucworCisjIEJ5IGRlZmF1bHQgZG94eWdlbiB3aWxsIHRlbGwgZG90IHRvIHVzZSB0aGUgb3V0cHV0IGRpcmVjdG9yeSB0byBsb29rIGZvciB0aGUgCisjIEZyZWVTYW5zLnR0ZiBmb250ICh3aGljaCBkb3h5Z2VuIHdpbGwgcHV0IHRoZXJlIGl0c2VsZikuIElmIHlvdSBzcGVjaWZ5IGEgCisjIGRpZmZlcmVudCBmb250IHVzaW5nIERPVF9GT05UTkFNRSB5b3UgY2FuIHNldCB0aGUgcGF0aCB3aGVyZSBkb3QgCisjIGNhbiBmaW5kIGl0IHVzaW5nIHRoaXMgdGFnLgorCitET1RfRk9OVFBBVEggICAgICAgICAgID0gCisKKyMgSWYgdGhlIENMQVNTX0dSQVBIIGFuZCBIQVZFX0RPVCB0YWdzIGFyZSBzZXQgdG8gWUVTIHRoZW4gZG94eWdlbiAKKyMgd2lsbCBnZW5lcmF0ZSBhIGdyYXBoIGZvciBlYWNoIGRvY3VtZW50ZWQgY2xhc3Mgc2hvd2luZyB0aGUgZGlyZWN0IGFuZCAKKyMgaW5kaXJlY3QgaW5oZXJpdGFuY2UgcmVsYXRpb25zLiBTZXR0aW5nIHRoaXMgdGFnIHRvIFlFUyB3aWxsIGZvcmNlIHRoZSAKKyMgdGhlIENMQVNTX0RJQUdSQU1TIHRhZyB0byBOTy4KKworQ0xBU1NfR1JBUEggICAgICAgICAgICA9IFlFUworCisjIElmIHRoZSBDT0xMQUJPUkFUSU9OX0dSQVBIIGFuZCBIQVZFX0RPVCB0YWdzIGFyZSBzZXQgdG8gWUVTIHRoZW4gZG94eWdlbiAKKyMgd2lsbCBnZW5lcmF0ZSBhIGdyYXBoIGZvciBlYWNoIGRvY3VtZW50ZWQgY2xhc3Mgc2hvd2luZyB0aGUgZGlyZWN0IGFuZCAKKyMgaW5kaXJlY3QgaW1wbGVtZW50YXRpb24gZGVwZW5kZW5jaWVzIChpbmhlcml0YW5jZSwgY29udGFpbm1lbnQsIGFuZCAKKyMgY2xhc3MgcmVmZXJlbmNlcyB2YXJpYWJsZXMpIG9mIHRoZSBjbGFzcyB3aXRoIG90aGVyIGRvY3VtZW50ZWQgY2xhc3Nlcy4KKworQ09MTEFCT1JBVElPTl9HUkFQSCAgICA9IFlFUworCisjIElmIHRoZSBHUk9VUF9HUkFQSFMgYW5kIEhBVkVfRE9UIHRhZ3MgYXJlIHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuIAorIyB3aWxsIGdlbmVyYXRlIGEgZ3JhcGggZm9yIGdyb3Vwcywgc2hvd2luZyB0aGUgZGlyZWN0IGdyb3VwcyBkZXBlbmRlbmNpZXMKKworR1JPVVBfR1JBUEhTICAgICAgICAgICA9IFlFUworCisjIElmIHRoZSBVTUxfTE9PSyB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgaW5oZXJpdGFuY2UgYW5kIAorIyBjb2xsYWJvcmF0aW9uIGRpYWdyYW1zIGluIGEgc3R5bGUgc2ltaWxhciB0byB0aGUgT01HJ3MgVW5pZmllZCBNb2RlbGluZyAKKyMgTGFuZ3VhZ2UuCisKK1VNTF9MT09LICAgICAgICAgICAgICAgPSBOTworCisjIElmIHNldCB0byBZRVMsIHRoZSBpbmhlcml0YW5jZSBhbmQgY29sbGFib3JhdGlvbiBncmFwaHMgd2lsbCBzaG93IHRoZSAKKyMgcmVsYXRpb25zIGJldHdlZW4gdGVtcGxhdGVzIGFuZCB0aGVpciBpbnN0YW5jZXMuCisKK1RFTVBMQVRFX1JFTEFUSU9OUyAgICAgPSBOTworCisjIElmIHRoZSBFTkFCTEVfUFJFUFJPQ0VTU0lORywgU0VBUkNIX0lOQ0xVREVTLCBJTkNMVURFX0dSQVBILCBhbmQgSEFWRV9ET1QgCisjIHRhZ3MgYXJlIHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSBncmFwaCBmb3IgZWFjaCBkb2N1bWVudGVkIAorIyBmaWxlIHNob3dpbmcgdGhlIGRpcmVjdCBhbmQgaW5kaXJlY3QgaW5jbHVkZSBkZXBlbmRlbmNpZXMgb2YgdGhlIGZpbGUgd2l0aCAKKyMgb3RoZXIgZG9jdW1lbnRlZCBmaWxlcy4KKworSU5DTFVERV9HUkFQSCAgICAgICAgICA9IFlFUworCisjIElmIHRoZSBFTkFCTEVfUFJFUFJPQ0VTU0lORywgU0VBUkNIX0lOQ0xVREVTLCBJTkNMVURFRF9CWV9HUkFQSCwgYW5kIAorIyBIQVZFX0RPVCB0YWdzIGFyZSBzZXQgdG8gWUVTIHRoZW4gZG94eWdlbiB3aWxsIGdlbmVyYXRlIGEgZ3JhcGggZm9yIGVhY2ggCisjIGRvY3VtZW50ZWQgaGVhZGVyIGZpbGUgc2hvd2luZyB0aGUgZG9jdW1lbnRlZCBmaWxlcyB0aGF0IGRpcmVjdGx5IG9yIAorIyBpbmRpcmVjdGx5IGluY2x1ZGUgdGhpcyBmaWxlLgorCitJTkNMVURFRF9CWV9HUkFQSCAgICAgID0gWUVTCisKKyMgSWYgdGhlIENBTExfR1JBUEggYW5kIEhBVkVfRE9UIG9wdGlvbnMgYXJlIHNldCB0byBZRVMgdGhlbiAKKyMgZG94eWdlbiB3aWxsIGdlbmVyYXRlIGEgY2FsbCBkZXBlbmRlbmN5IGdyYXBoIGZvciBldmVyeSBnbG9iYWwgZnVuY3Rpb24gCisjIG9yIGNsYXNzIG1ldGhvZC4gTm90ZSB0aGF0IGVuYWJsaW5nIHRoaXMgb3B0aW9uIHdpbGwgc2lnbmlmaWNhbnRseSBpbmNyZWFzZSAKKyMgdGhlIHRpbWUgb2YgYSBydW4uIFNvIGluIG1vc3QgY2FzZXMgaXQgd2lsbCBiZSBiZXR0ZXIgdG8gZW5hYmxlIGNhbGwgZ3JhcGhzIAorIyBmb3Igc2VsZWN0ZWQgZnVuY3Rpb25zIG9ubHkgdXNpbmcgdGhlIFxjYWxsZ3JhcGggY29tbWFuZC4KKworQ0FMTF9HUkFQSCAgICAgICAgICAgICA9IE5PCisKKyMgSWYgdGhlIENBTExFUl9HUkFQSCBhbmQgSEFWRV9ET1QgdGFncyBhcmUgc2V0IHRvIFlFUyB0aGVuIAorIyBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSBjYWxsZXIgZGVwZW5kZW5jeSBncmFwaCBmb3IgZXZlcnkgZ2xvYmFsIGZ1bmN0aW9uIAorIyBvciBjbGFzcyBtZXRob2QuIE5vdGUgdGhhdCBlbmFibGluZyB0aGlzIG9wdGlvbiB3aWxsIHNpZ25pZmljYW50bHkgaW5jcmVhc2UgCisjIHRoZSB0aW1lIG9mIGEgcnVuLiBTbyBpbiBtb3N0IGNhc2VzIGl0IHdpbGwgYmUgYmV0dGVyIHRvIGVuYWJsZSBjYWxsZXIgCisjIGdyYXBocyBmb3Igc2VsZWN0ZWQgZnVuY3Rpb25zIG9ubHkgdXNpbmcgdGhlIFxjYWxsZXJncmFwaCBjb21tYW5kLgorCitDQUxMRVJfR1JBUEggICAgICAgICAgID0gTk8KKworIyBJZiB0aGUgR1JBUEhJQ0FMX0hJRVJBUkNIWSBhbmQgSEFWRV9ET1QgdGFncyBhcmUgc2V0IHRvIFlFUyB0aGVuIGRveHlnZW4gCisjIHdpbGwgZ3JhcGhpY2FsIGhpZXJhcmNoeSBvZiBhbGwgY2xhc3NlcyBpbnN0ZWFkIG9mIGEgdGV4dHVhbCBvbmUuCisKK0dSQVBISUNBTF9ISUVSQVJDSFkgICAgPSBZRVMKKworIyBJZiB0aGUgRElSRUNUT1JZX0dSQVBILCBTSE9XX0RJUkVDVE9SSUVTIGFuZCBIQVZFX0RPVCB0YWdzIGFyZSBzZXQgdG8gWUVTIAorIyB0aGVuIGRveHlnZW4gd2lsbCBzaG93IHRoZSBkZXBlbmRlbmNpZXMgYSBkaXJlY3RvcnkgaGFzIG9uIG90aGVyIGRpcmVjdG9yaWVzIAorIyBpbiBhIGdyYXBoaWNhbCB3YXkuIFRoZSBkZXBlbmRlbmN5IHJlbGF0aW9ucyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgI2luY2x1ZGUKKyMgcmVsYXRpb25zIGJldHdlZW4gdGhlIGZpbGVzIGluIHRoZSBkaXJlY3Rvcmllcy4KKworRElSRUNUT1JZX0dSQVBIICAgICAgICA9IFlFUworCisjIFRoZSBET1RfSU1BR0VfRk9STUFUIHRhZyBjYW4gYmUgdXNlZCB0byBzZXQgdGhlIGltYWdlIGZvcm1hdCBvZiB0aGUgaW1hZ2VzIAorIyBnZW5lcmF0ZWQgYnkgZG90LiBQb3NzaWJsZSB2YWx1ZXMgYXJlIHBuZywganBnLCBvciBnaWYKKyMgSWYgbGVmdCBibGFuayBwbmcgd2lsbCBiZSB1c2VkLgorCitET1RfSU1BR0VfRk9STUFUICAgICAgID0gcG5nCisKKyMgVGhlIHRhZyBET1RfUEFUSCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBwYXRoIHdoZXJlIHRoZSBkb3QgdG9vbCBjYW4gYmUgCisjIGZvdW5kLiBJZiBsZWZ0IGJsYW5rLCBpdCBpcyBhc3N1bWVkIHRoZSBkb3QgdG9vbCBjYW4gYmUgZm91bmQgaW4gdGhlIHBhdGguCisKK0RPVF9QQVRIICAgICAgICAgICAgICAgPSAKKworIyBUaGUgRE9URklMRV9ESVJTIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIGRpcmVjdG9yaWVzIHRoYXQgCisjIGNvbnRhaW4gZG90IGZpbGVzIHRoYXQgYXJlIGluY2x1ZGVkIGluIHRoZSBkb2N1bWVudGF0aW9uIChzZWUgdGhlIAorIyBcZG90ZmlsZSBjb21tYW5kKS4KKworRE9URklMRV9ESVJTICAgICAgICAgICA9IAorCisjIFRoZSBET1RfR1JBUEhfTUFYX05PREVTIHRhZyBjYW4gYmUgdXNlZCB0byBzZXQgdGhlIG1heGltdW0gbnVtYmVyIG9mIAorIyBub2RlcyB0aGF0IHdpbGwgYmUgc2hvd24gaW4gdGhlIGdyYXBoLiBJZiB0aGUgbnVtYmVyIG9mIG5vZGVzIGluIGEgZ3JhcGggCisjIGJlY29tZXMgbGFyZ2VyIHRoYW4gdGhpcyB2YWx1ZSwgZG94eWdlbiB3aWxsIHRydW5jYXRlIHRoZSBncmFwaCwgd2hpY2ggaXMgCisjIHZpc3VhbGl6ZWQgYnkgcmVwcmVzZW50aW5nIGEgbm9kZSBhcyBhIHJlZCBib3guIE5vdGUgdGhhdCBkb3h5Z2VuIGlmIHRoZSAKKyMgbnVtYmVyIG9mIGRpcmVjdCBjaGlsZHJlbiBvZiB0aGUgcm9vdCBub2RlIGluIGEgZ3JhcGggaXMgYWxyZWFkeSBsYXJnZXIgdGhhbiAKKyMgRE9UX0dSQVBIX01BWF9OT0RFUyB0aGVuIHRoZSBncmFwaCB3aWxsIG5vdCBiZSBzaG93biBhdCBhbGwuIEFsc28gbm90ZSAKKyMgdGhhdCB0aGUgc2l6ZSBvZiBhIGdyYXBoIGNhbiBiZSBmdXJ0aGVyIHJlc3RyaWN0ZWQgYnkgTUFYX0RPVF9HUkFQSF9ERVBUSC4KKworRE9UX0dSQVBIX01BWF9OT0RFUyAgICA9IDUwCisKKyMgVGhlIE1BWF9ET1RfR1JBUEhfREVQVEggdGFnIGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgbWF4aW11bSBkZXB0aCBvZiB0aGUgCisjIGdyYXBocyBnZW5lcmF0ZWQgYnkgZG90LiBBIGRlcHRoIHZhbHVlIG9mIDMgbWVhbnMgdGhhdCBvbmx5IG5vZGVzIHJlYWNoYWJsZSAKKyMgZnJvbSB0aGUgcm9vdCBieSBmb2xsb3dpbmcgYSBwYXRoIHZpYSBhdCBtb3N0IDMgZWRnZXMgd2lsbCBiZSBzaG93bi4gTm9kZXMgCisjIHRoYXQgbGF5IGZ1cnRoZXIgZnJvbSB0aGUgcm9vdCBub2RlIHdpbGwgYmUgb21pdHRlZC4gTm90ZSB0aGF0IHNldHRpbmcgdGhpcyAKKyMgb3B0aW9uIHRvIDEgb3IgMiBtYXkgZ3JlYXRseSByZWR1Y2UgdGhlIGNvbXB1dGF0aW9uIHRpbWUgbmVlZGVkIGZvciBsYXJnZSAKKyMgY29kZSBiYXNlcy4gQWxzbyBub3RlIHRoYXQgdGhlIHNpemUgb2YgYSBncmFwaCBjYW4gYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IAorIyBET1RfR1JBUEhfTUFYX05PREVTLiBVc2luZyBhIGRlcHRoIG9mIDAgbWVhbnMgbm8gZGVwdGggcmVzdHJpY3Rpb24uCisKK01BWF9ET1RfR1JBUEhfREVQVEggICAgPSAwCisKKyMgU2V0IHRoZSBET1RfVFJBTlNQQVJFTlQgdGFnIHRvIFlFUyB0byBnZW5lcmF0ZSBpbWFnZXMgd2l0aCBhIHRyYW5zcGFyZW50IAorIyBiYWNrZ3JvdW5kLiBUaGlzIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgd2hpY2ggcmVzdWx0cyBpbiBhIHRyYW5zcGFyZW50IAorIyBiYWNrZ3JvdW5kLiBXYXJuaW5nOiBEZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtIHVzZWQsIGVuYWJsaW5nIHRoaXMgb3B0aW9uIAorIyBtYXkgbGVhZCB0byBiYWRseSBhbnRpLWFsaWFzZWQgbGFiZWxzIG9uIHRoZSBlZGdlcyBvZiBhIGdyYXBoIChpLmUuIHRoZXkgCisjIGJlY29tZSBoYXJkIHRvIHJlYWQpLgorCitET1RfVFJBTlNQQVJFTlQgICAgICAgID0gWUVTCisKKyMgU2V0IHRoZSBET1RfTVVMVElfVEFSR0VUUyB0YWcgdG8gWUVTIGFsbG93IGRvdCB0byBnZW5lcmF0ZSBtdWx0aXBsZSBvdXRwdXQgCisjIGZpbGVzIGluIG9uZSBydW4gKGkuZS4gbXVsdGlwbGUgLW8gYW5kIC1UIG9wdGlvbnMgb24gdGhlIGNvbW1hbmQgbGluZSkuIFRoaXMgCisjIG1ha2VzIGRvdCBydW4gZmFzdGVyLCBidXQgc2luY2Ugb25seSBuZXdlciB2ZXJzaW9ucyBvZiBkb3QgKD4xLjguMTApIAorIyBzdXBwb3J0IHRoaXMsIHRoaXMgZmVhdHVyZSBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LgorCitET1RfTVVMVElfVEFSR0VUUyAgICAgID0gTk8KKworIyBJZiB0aGUgR0VORVJBVEVfTEVHRU5EIHRhZyBpcyBzZXQgdG8gWUVTICh0aGUgZGVmYXVsdCkgRG94eWdlbiB3aWxsIAorIyBnZW5lcmF0ZSBhIGxlZ2VuZCBwYWdlIGV4cGxhaW5pbmcgdGhlIG1lYW5pbmcgb2YgdGhlIHZhcmlvdXMgYm94ZXMgYW5kIAorIyBhcnJvd3MgaW4gdGhlIGRvdCBnZW5lcmF0ZWQgZ3JhcGhzLgorCitHRU5FUkFURV9MRUdFTkQgICAgICAgID0gWUVTCisKKyMgSWYgdGhlIERPVF9DTEVBTlVQIHRhZyBpcyBzZXQgdG8gWUVTICh0aGUgZGVmYXVsdCkgRG94eWdlbiB3aWxsIAorIyByZW1vdmUgdGhlIGludGVybWVkaWF0ZSBkb3QgZmlsZXMgdGhhdCBhcmUgdXNlZCB0byBnZW5lcmF0ZSAKKyMgdGhlIHZhcmlvdXMgZ3JhcGhzLgorCitET1RfQ0xFQU5VUCAgICAgICAgICAgID0gWUVTCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ29uZmlndXJhdGlvbjo6YWRkaXRpb25zIHJlbGF0ZWQgdG8gdGhlIHNlYXJjaCBlbmdpbmUgICAKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBUaGUgU0VBUkNIRU5HSU5FIHRhZyBzcGVjaWZpZXMgd2hldGhlciBvciBub3QgYSBzZWFyY2ggZW5naW5lIHNob3VsZCBiZSAKKyMgdXNlZC4gSWYgc2V0IHRvIE5PIHRoZSB2YWx1ZXMgb2YgYWxsIHRhZ3MgYmVsb3cgdGhpcyBvbmUgd2lsbCBiZSBpZ25vcmVkLgorCitTRUFSQ0hFTkdJTkUgICAgICAgICAgID0gTk8KZGlmZiAtLWdpdCBhL0ZhYnJpYy9Eb2MvZG9jcy9mbG93X3F1ZXJ5X3Rlc3RfcGxhbi50eHQgYi9GYWJyaWMvRG9jL2RvY3MvZmxvd19xdWVyeV90ZXN0X3BsYW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyNzQyZGMKLS0tIC9kZXYvbnVsbAorKysgYi9GYWJyaWMvRG9jL2RvY3MvZmxvd19xdWVyeV90ZXN0X3BsYW4udHh0CkBAIC0wLDAgKzEsMzc4IEBACisKKworRFJBRlQgVEVTVCBQTEFOIEZPUiBURVNUSU5HIFRPUC1IQUxGIE9GIE9wZW5GbG93IDEuMCBTV0lUQ0gKKworRHJhZnQgMiAtIDIzIEFwciAyMDEyCisKKworCisxLiAgR0VORVJBTAorPT09PT09PT09PT0KKworMS4xICBUZXN0IHBhcnRpY3VsYXIgaW1wbGVtZW50YXRpb24sIG5vdCBPcGVuRmxvdyBwcm90b2NvbAorCitUaGlzIHRlc3QgcGxhbiBpcyBpbnRlbmRlZCB0byB0ZXN0IHRoZSBmdW5jdGlvbiBvZiB0aG9zZSBmZWF0dXJlcyBvZiBhbiBPRgorYWdlbnQgaW1wbGVtZW50YXRpb24gdGhhdCB3b3VsZCBiZSBwYXJ0aWN1bGFyIHRvIGEgZ2l2ZW4gc3dpdGNoLAoraS5lLiBzZW1hbnRpY3Mgb2YgdmFyaW91cyBPRiBvcGVyYXRpb25zIGFyZSBjb3JyZWN0bHkgaW1wbGVtZW50ZWQgb24gYSBnaXZlbgorc3dpdGNoLgorSXQgaXMgTk9UIGludGVuZGVkIHRvIHRlc3Q6CistIHN5bnRhY3RpYyBmZWF0dWVzLCBzdWNoIGFzIGJhZGx5IGZvcm1lZCBPRiBwcm90b2NvbCBtZXNzYWdlcywgZXRjLiwgbm9yCistIHNlbWFudGljIGZlYXR1cmVzIHRoYXQgd291bGQgYmUgY29tbW9uIHRvIGFsbCBpbXBsZW1lbnRhdGlvbnMsIGUuZy4KKyAgcXVhbGlmeWluZyBvbiBhIFZMQU4gaWQgPiA0MDk1LCBhbiBhY3Rpb24gdG8gc2V0IFZMQU4gUENQIHRvIGEgdmFsdWUgPiA3LAorICBldGMuCisKKworMi4gIEZMT1cgQURECis9PT09PT09PT09PT0KKworMi41ICBGTE9XIEFERCA1CistLS0tLS0tLS0tLS0tLS0KKworT1ZFUlZJRVcKKy0gQWRkIGZsb3dzIHRvIHN3aXRjaCwgcmVhZCBiYWNrIGFuZCB2ZXJpZnkgZmxvdyBjb25maWd1cmF0aW9ucworCitQVVJQT1NFCistIFRlc3QgYWNjZXB0YW5jZSBvZiBmbG93IGFkZHMKKy0gVGVzdCBhYmlsaXR5IG9mIHN3aXRjaCB0byBwcm9jZXNzIGFkZGl0aW9ucyB0byBmbG93IHRhYmxlIGluIHJhbmRvbQorICBwcmlvcml0eSBvcmRlcgorLSBUZXN0IGNvcnJlY3RuZXNzIG9mIGZsb3cgY29uZmlndXJhdGlvbiByZXNwb25zZXMKKworSU5QVVRTCistIE5VTV9GTE9XUzogbnVtYmVyIG9mIGZsb3dzIHRvIGRlZmluZTsgMCA9PiBtYXhpbXVtIG51bWJlciBvZiBmbG93cywgYXMKKyAgZGV0ZXJtaW5lZCBmcm9tIHN3aXRjaCBjYXBhYmlsaXRpZXMKKworUFJPQ0VTUworMS4gRGVsZXRlIGFsbCBmbG93cyBmcm9tIHN3aXRjaAorMi4gR2VuZXJhdGUgTlVNX0ZMT1dTIGRpc3RpbmN0IGZsb3cgY29uZmlndXJhdGlvbnMKKzMuIFNlbmQgTlVNX0ZMT1dTIGZsb3cgYWRkcyB0byBzd2l0Y2gsIGZvciBmbG93cyBnZW5lcmF0ZWQgaW4gc3RlcCAyIGFib3ZlCisgICAtIEZsb3cgbW9kcyB3aXRoIE9GUEZGX1NFTkRfRkxPV19SRU0gPSAwIChkbyBub3Qgc2VuZCByZW1vdmUgbWVzc2FnZSkgYW5kCisgICAgIE9GUEZGX0NIRUNLX09WRVJMQVAgPSAwIChkbyBub3QgY2hlY2sgZm9yIG92ZXJsYXApCis0LiBWZXJpZnkgdGhhdCBubyBPRlBUX0VSUk9SIHJlc3BvbnNlcyB3ZXJlIGdlbmVyYXRlZCBieSBzd2l0Y2gKKzUuIFJldHJpZXZlIGZsb3cgc3RhdHMgZnJvbSBzd2l0Y2gKKzYuIENvbXBhcmUgZmxvdyBjb25maWd1cmF0aW9ucyByZXR1cm5lZCBieSBzd2l0Y2gKKzcuIFRlc3QgUEFTU0VEIGlmZiBhbGwgZmxvd3Mgc2VudCB0byBzd2l0Y2ggaW4gc3RlcCAzIGFib3ZlIGFyZSByZXR1cm5lZCBpbgorICAgc3RlcCA1IGFib3ZlOyBlbHNlIHRlc3QgRkFJTEVECisKK05PVEVTCistIFdpbGwgdXNlIHJhbmRvbWl6ZWQgZmxvdyBjb25maWd1cmF0aW9uLCBpbiBhbiBhdHRlbXB0IHRvIGNvdmVyIGNvbWJpbmF0aW9ucworICBvZiBxdWFsaWZpZXIgd2lsZGNhcmRpbmcsIHF1YWxpZmllciB2YWx1ZXMsIGFjdGlvbnMgYW5kIGFjdGlvbiBwYXJhbWV0ZXJzCisKKworMi41LjEgIEZMT1cgQUREIDUuMQorLS0tLS0tLS0tLS0tLS0tLS0tLQorCitPVkVSVklFVworLSBWZXJpZnkgZmxvdyBjYW5vbmljYWxpemF0aW9uCisKK1BVUlBPU0UKKy0gVGVzdCB0aGF0IHN3aXRjaCBwcm9wZXJseSBjYW5vbmljYWxpemVzIGEgZ2l2ZW4gZmxvdyBkZWZpbml0aW9uCisgIChjYW5vbmljYWxpemF0aW9uIGlzIGRlZmluZWQgYXMgd2lsZGNhcmRpbmcgb3V0IHF1YWxpZmllcnMgd2hlbiBhbnRlY2VkZW50CisgIHF1YWxpZmllcnMgYXJlIG5vdCBzZXQgY29ycmVjdGx5LCBlLmcuIG53X3RvcyBjYW5ub3QgYmUgc3BlY2lmaWVkLCBhbmQgaGVuY2UKKyAgbXVzdCBiZSB3aWxkY2FyZGVkLCBpZiBkbF90eXBlIGlzIG5vdCBzcGVjaWZpZWQgdG8gYmUgMHgwODAwIChJUCkpCisKK0lOUFVUUworTm9uZQorCitQUk9DRVNTCisxLiBEZWxldGUgYWxsIGZsb3dzIGZyb20gc3dpdGNoCisyLiBHZW5lcmF0ZSAxIGZsb3cgZGVmaW5pdGlvbiwgd2hpY2ggaXMgZGlmZmVyZW50IGZyb20gaXRzIGNhbm9uaWNhbGl6YXRpb24KKzMuIFNlbmQgZmxvdyB0byBzd2l0Y2gKKzQuIFJldHJpZXZlIGZsb3cgZnJvbSBzd2l0Y2gKKzUuIENvbXBhcmUgcmV0dXJuZWQgZmxvdyB0byBjYW5vbmljYWwgZm9ybSBvZiBkZWZpbmVkIGZsb3cKKzcuIFRlc3QgUEFTU0VEIGlmZiBmbG93IHJlY2VpdmVkIGluIHN0ZXAgNCBhYm92ZSBpcyBpZGVudGljYWwgdG8gY2Fub25pY2FsCisgICBmb3JtIG9mIGZsb3cgZGVmaW5lZCBpbiBzdGVwIDMgYWJvdmUKKworCisyLjYgIEZMT1cgQUREIDYKKy0tLS0tLS0tLS0tLS0tLQorCitPVkVSVklFVworLSBUZXN0IGZsb3cgdGFibGUgY2FwYWNpdHkKKworUFVSUE9TRQorLSBUZXN0IHN3aXRjaCBjYW4gYWNjZXB0IGFzIG1hbnkgZmxvdyBkZWZpbml0aW9ucyBhcyBpdCBjbGFpbXMKKy0gVGVzdCBnZW5lcmF0aW9uIG9mIE9GUEVUX0ZMT1dfTU9EX0ZBSUxFRC9PRlBGTUZDX0FMTF9UQUJMRVNfRlVMTAorLSBUZXN0IHRoYXQgYXR0ZW1wdGluZyB0byBjcmVhdGUgZmxvd3MgYmV5b25kIGNhcGFjaXR5IGRvZXMgbm90IGNvcnJ1cHQgZmxvdworICB0YWJsZQorCitJTlBVVFMKK05vbmUKKworUFJPQ0VTUworMS4gRGVsZXRlIGFsbCBmbG93cyBmcm9tIHN3aXRjaAorMi4gU2VuZCBPRlBUX0ZFQVRVUkVTX1JFUVVFU1QgdG8gZGV0ZXJtaW5lIHN3aXRjaCBmZWF0dXJlcworMy4gRm9yIGVhY2ggdGFibGUgcmVwb3J0ZWQgYnkgc3RlcCAyIGFib3ZlLCBzZW5kIE9GUFRfU1RBVFNfUkVRVUVTVC8KKyAgIE9GUFNUX1RBQkxFIHRvIGRldGVybWluZSB0YWJsZSBmZWF0dXJlcworNC4gR2VuZXJhdGUgKE4gKyAxKSBkaXN0aW5jdCBmbG93IGNvbmZpZ3VyYXRpb25zLCB3aGVyZSBOIGlzIHRoZSBmbG93IGNhcGFjaXR5CisgICByZXBvcnRlZCBieSB0aGUgc3dpdGNoIGluIHN0ZXBzIDIgYW5kIDMgYWJvdmUKKyAgIC0gRmxvdyB3aWxkY2FyZGluZyBtdXN0IG9iZXkgc3VwcG9ydGVkIHdpbGRjYXJkcywgZm9yIGVhY2ggdGFibGUKKzUuIFNlbmQgKE4gKyAxKSBmbG93IGFkZHMgdG8gc3dpdGNoLCBmb3IgZmxvd3MgZ2VuZXJhdGVkIGluIHN0ZXAgNCBhYm92ZQorICAgLSBGbG93IG1vZHMgd2l0aCBPRlBGRl9TRU5EX0ZMT1dfUkVNID0gMCAoZG8gbm90IHNlbmQgcmVtb3ZlIG1lc3NhZ2UpIGFuZAorICAgICBPRlBGRl9DSEVDS19PVkVSTEFQID0gMCAoZG8gbm90IGNoZWNrIGZvciBvdmVybGFwKQorNi4gVmVyaWZ5IHRoYXQgT0ZQRVRfRkxPV19NT0RfRkFJTEVEL09GUEZNRkNfQUxMX1RBQkxFU19GVUxMIGVycm9yIHJlc3BvbnNlCisgICB3YXMgZ2VuZXJhdGVkIGJ5IHN3aXRjaCwgZm9yIGxhc3QgZmxvdyBtb2Qgc2VudAorNy4gUmV0cmlldmUgZmxvdyBzdGF0cyBmcm9tIHN3aXRjaAorOC4gQ29tcGFyZSBmbG93IGNvbmZpZ3VyYXRpb25zIHJldHVybmVkIGJ5IHN3aXRjaAorOS4gVGVzdCBQQVNTRUQgaWZmOgorICAgLSBlcnJvciBtZXNzYWdlIHJlY2VpdmVkLCBmb3IgY29ycmVjdCBmbG93CisgICAtIGxhc3QgZmxvdyBkZWZpbml0aW9uIHNlbnQgdG8gc3dpdGNoIGlzIG5vdCBpbiBmbG93IHRhYmxlCisgICBlbHNlIHRlc3QgRkFJTEVECisKKworMi43ICBGTE9XIEFERCA3CistLS0tLS0tLS0tLS0tLS0KKworT1ZFUlZJRVcKKy0gVGVzdCBmbG93IHJlZGVmaW5pdGlvbgorCitQVVJQT1NFCistIFZlcmlmeSB0aGF0IHN1Y2Nlc3NpdmUgZmxvdyBhZGRzIHdpdGggc2FtZSBwcmlvcml0eSBhbmQgbWF0Y2ggY3JpdGVyaWEKKyAgb3ZlcndyaXRlIGluIGZsb3cgdGFibGUKKworSU5QVVRTCitOb25lCisKK1BST0NFU1MKKzEuIERlbGV0ZSBhbGwgZmxvd3MgZnJvbSBzd2l0Y2gKKzIuIEdlbmVyYXRlIGZsb3cgZGVmaW5pdGlvbiBGMQorMy4gR2VuZXJhdGUgZmxvdyBkZWZpbml0aW9uIEYyLCB3aXRoIHNhbWUga2V5IChwcmlvcml0eSBhbmQgbWF0Y2gpIGFzIEYxLAorICAgYnV0IHdpdGggZGlmZmVyZW50IGFjdGlvbnMKKzQuIFNlbmQgZmxvdyBhZGRzIGZvciBGMSBhbmQgRjIgdG8gc3dpdGNoCisgICAtIEZsb3cgbW9kcyB3aXRoIE9GUEZGX1NFTkRfRkxPV19SRU0gPSAwIChkbyBub3Qgc2VuZCByZW1vdmUgbWVzc2FnZSkgYW5kCisgICAgIE9GUEZGX0NIRUNLX09WRVJMQVAgPSAwIChkbyBub3QgY2hlY2sgZm9yIG92ZXJsYXApCis1LiBSZXRyaWV2ZSBmbG93IHN0YXRzIGZyb20gc3dpdGNoCis2LiBDb21wYXJlIGZsb3cgY29uZmlndXJhdGlvbnMgcmV0dXJuZWQgYnkgc3dpdGNoCis3LiBUZXN0IFBBU1NFRCBpZmYgMSBmbG93IHJldHVybmVkIGJ5IHN3aXRjaCwgbWF0Y2hpbmcgY29uZmlndXJhdGlvbiBvZiBGMiwKKyAgIGFuZCB3aXRoIGNvdW50ZXJzIGVxdWFsIHRvIDA7IGVsc2UgdGVzdCBGQUlMRUQKKworCisyLjggIEZMT1cgQUREIDgKKy0tLS0tLS0tLS0tLS0tLQorCitPVkVSVklFVworLSBBZGQgb3ZlcmxhcHBpbmcgZmxvd3MgdG8gc3dpdGNoLCB2ZXJpZnkgdGhhdCBvdmVybGFwcGluZyBmbG93cyBhcmUgcmVqZWN0ZWQKKworUFVSUE9TRQorLSBUZXN0IGRldGVjdGlvbiBvZiBvdmVybGFwcGluZyBmbG93cyBieSBzd2l0Y2gKKy0gVGVzdCBnZW5lcmF0aW9uIG9mIE9GUEVUX0ZMT1dfTU9EX0ZBSUxFRC9PRlBGTUZDX09WRVJMQVAgbWVzc2FnZXMKKy0gVGVzdCByZWplY3Rpb24gb2Ygb3ZlcmxhcHBpbmcgZmxvd3MKKy0gVGVzdCBkZWZpbmluZyBvdmVybGFwcGluZyBmbG93cyBkb2VzIG5vdCBjb3JydXB0IGZsb3cgdGFibGUKKworSU5QVVRTCitOb25lCisKK1BST0NFU1MKKzEuIERlbGV0ZSBhbGwgZmxvd3MgZnJvbSBzd2l0Y2gKKzIuIEdlbmVyYXRlIGZsb3cgZGVmaW5pdGlvbiBGMQorMy4gR2VuZXJhdGUgZmxvdyBkZWZpbml0aW9uIEYyLCB3aXRoIGtleSBvdmVybGFwcGluZyBGMSwgYnkgd2lsZGNhcmRpbmcgYQorICAgcXVhbGlmaWVyIHNwZWNpZmllZCBpbiBGMQorNC4gU2VuZCBmbG93IGFkZHMgdG8gc3dpdGNoLCBmb3IgZmxvd3MgZ2VuZXJhdGVkIGluIHN0ZXBzIDIgYW5kIDMgYWJvdmUKKyAgIC0gRmxvdyBtb2RzIHdpdGggT0ZQRkZfU0VORF9GTE9XX1JFTSA9IDAgKGRvIG5vdCBzZW5kIHJlbW92ZSBtZXNzYWdlKSBhbmQKKyAgICAgT0ZQRkZfQ0hFQ0tfT1ZFUkxBUCA9IDEgKGNoZWNrIGZvciBvdmVybGFwKQorNC4gVmVyaWZ5IHRoYXQgT0ZQRVRfRkxPV19NT0RfRkFJTEVEL09GUEZNRkNfT1ZFUkxBUCBlcnJvciByZXNwb25zZSB3YXMKKyAgIGdlbmVyYXRlZCBieSBzd2l0Y2gKKzUuIFJldHJpZXZlIGZsb3cgc3RhdHMgZnJvbSBzd2l0Y2gKKzYuIENvbXBhcmUgZmxvdyBjb25maWd1cmF0aW9ucyByZXR1cm5lZCBieSBzd2l0Y2gKKzcuIFRlc3QgUEFTU0VEIGlmZjoKKyAgIC0gZXJyb3IgbWVzc2FnZSByZWNlaXZlZCwgZm9yIG92ZXJsYXBwaW5nIGZsb3cKKyAgIC0gb3ZlcmxhcHBpbmcgZmxvdyBpcyBub3QgaW4gZmxvdyB0YWJsZQorICAgZWxzZSB0ZXN0IEZBSUxFRAorCisKKzMuICBGTE9XIE1PRElGWQorPT09PT09PT09PT09PT09CisKKzMuMSAgRkxPVyBNT0RJRlkgMQorLS0tLS0tLS0tLS0tLS0tLS0tCisKK09WRVJWSUVXCistIFN0cmljdCBtb2RpZnkgb2Ygc2luZ2xlIGV4aXN0aW5nIGZsb3cKKworUFVSUE9TRQorLSBWZXJpZnkgdGhhdCBzdHJpY3QgZmxvdyBtb2RpZnkgb3BlcmF0ZXMgb25seSBvbiBzcGVjaWZpZWQgZmxvdworLSBWZXJpZnkgdGhhdCBmbG93IGlzIGNvcnJlY3RseSBtb2RpZmllZAorCitJTlBVVFMKKy0gTlVNX0ZMT1dTOiBudW1iZXIgb2YgZmxvd3MgdG8gZGVmaW5lOyAwID0+IG1heGltdW0gbnVtYmVyIG9mIGZsb3dzLAorICBhcyBkZXRlcm1pbmVkIGZyb20gc3dpdGNoIGNhcGFiaWxpdGllcworCitQUk9DRVNTCisxLiBEZWxldGUgYWxsIGZsb3dzIGZyb20gc3dpdGNoCisyLiBHZW5lcmF0ZSBOVU1fRkxPV1MgZGlzdGluY3QgZmxvdyBjb25maWd1cmF0aW9ucworMy4gU2VuZCBOVU1fRkxPV1MgZmxvdyBhZGRzIHRvIHN3aXRjaCwgZm9yIGZsb3dzIGdlbmVyYXRlZCBpbiBzdGVwIDIgYWJvdmUKKyAgIC0gRmxvdyBtb2RzIHdpdGggT0ZQRkZfU0VORF9GTE9XX1JFTSA9IDAgKGRvIG5vdCBzZW5kIHJlbW92ZSBtZXNzYWdlKSBhbmQgCisgICAgIE9GUEZGX0NIRUNLX09WRVJMQVAgPSAwIChkbyBub3QgY2hlY2sgZm9yIG92ZXJsYXApCis0LiBQaWNrIDEgZGVmaW5lZCBmbG93IEYgYXQgcmFuZG9tCis1LiBHZW5lcmF0ZSBuZXcgYWN0aW9uIGxpc3QgZm9yIEYKKzYuIFNlbmQgZmxvdyBtb2RpZnkgZm9yIEYgdG8gc3dpdGNoCis0LiBWZXJpZnkgdGhhdCBubyBPRlBUX0VSUk9SIHJlc3BvbnNlcyB3ZXJlIGdlbmVyYXRlZCBieSBzd2l0Y2gKKzUuIFJldHJpZXZlIGZsb3cgc3RhdHMgZnJvbSBzd2l0Y2gKKzYuIENvbXBhcmUgZmxvdyBjb25maWd1cmF0aW9ucyByZXR1cm5lZCBieSBzd2l0Y2gKKzcuIFRlc3QgUEFTU0VEIGlmZiBhbGwgZmxvd3Mgc2VudCB0byBzd2l0Y2ggaW4gc3RlcCAzIGFuZCA2IGFib3ZlIGFyZQorICAgcmV0dXJuZWQgaW4gc3RlcCA1IGFib3ZlOyBlbHNlIHRlc3QgRkFJTEVECisKKworMy4yICBGTE9XIE1PRElGWSAyCistLS0tLS0tLS0tLS0tLS0tLS0KKworT1ZFUlZJRVcKKy0gTG9vc2UgbW9kaWZ5IG9mIGV4aXN0aW5nIGZsb3dzCisKK1BVUlBPU0UKKy0gVmVyaWZ5IHRoYXQgbG9vc2UgZmxvdyBtb2RpZnkgb3BlcmF0ZXMgb25seSBvbiBtYXRjaGluZyBmbG93cworLSBWZXJpZnkgdGhhdCBtYXRjaGluZyBmbG93cyBhcmUgY29ycmVjdGx5IG1vZGlmaWVkCisKK0lOUFVUUworLSBOVU1fRkxPV1M6IG51bWJlciBvZiBmbG93cyB0byBkZWZpbmU7IDAgPT4gbWF4aW11bSBudW1iZXIgb2YgZmxvd3MsIGFzCisgIGRldGVybWluZWQgZnJvbSBzd2l0Y2ggY2FwYWJpbGl0aWVzCisKK1BST0NFU1MKKzEuIERlbGV0ZSBhbGwgZmxvd3MgZnJvbSBzd2l0Y2gKKzIuIEdlbmVyYXRlIE5VTV9GTE9XUyBkaXN0aW5jdCBmbG93IGNvbmZpZ3VyYXRpb25zCiszLiBTZW5kIE5VTV9GTE9XUyBmbG93IGFkZHMgdG8gc3dpdGNoLCBmb3IgZmxvd3MgZ2VuZXJhdGVkIGluIHN0ZXAgMiBhYm92ZQorICAgLSBGbG93IG1vZHMgd2l0aCBPRlBGRl9TRU5EX0ZMT1dfUkVNID0gMCAoZG8gbm90IHNlbmQgcmVtb3ZlIG1lc3NhZ2UpIGFuZAorICAgICBPRlBGRl9DSEVDS19PVkVSTEFQID0gMCAoZG8gbm90IGNoZWNrIGZvciBvdmVybGFwKQorNC4gUGljayAxIGRlZmluZWQgZmxvdyBGIGF0IHJhbmRvbQorNS4gV2lsZGNhcmQgb3V0IDEgcXVhbGlmaWVyIGluIG1hdGNoIG9mIEYsIGNyZWF0aW5nIEYnLCBzdWNoIHRoYXQgRicgd2lsbAorICAgbWF0Y2ggbW9yZSB0aGFuIDEgZXhpc3RpbmcgZmxvdyBrZXksIGFuZCBjcmVhdGUgbmV3IGFjdGlvbnMgbGlzdCBBJyBmb3IgRicKKzYuIFNlbmQgbG9vc2UgZmxvdyBtb2RpZnkgZm9yIEYnIHRvIHN3aXRjaAorNy4gUmV0cmlldmUgZmxvdyBzdGF0cyBmcm9tIHN3aXRjaAorOC4gQ29tcGFyZSBmbG93IGNvbmZpZ3VyYXRpb25zIHJldHVybmVkIGJ5IHN3aXRjaAorOS4gVGVzdCBQQVNTRUQgaWZmIGFsbCBmbG93cyBzZW50IHRvIHN3aXRjaCBpbiBzdGVwcyAzIGFuZCA2IGFib3ZlLCBhcmUKKyAgIHJldHVybmVkIGluIHN0ZXAgNyBhYm92ZSwgZWFjaCB3aXRoIGNvcnJlY3QgKG9yaWdpbmFsIG9yIG1vZGlmaWVkKSBhY3Rpb24KKyAgIGxpc3Q7CisgICBlbHNlIHRlc3QgRkFJTEVECisKKworMy4zICBGTE9XIE1PRElGWSAzCistLS0tLS0tLS0tLS0tLS0tLS0KKworT1ZFUlZJRVcKKy0gU3RyaWN0IG1vZGlmeSBvZiBub24tZXhpc3RlbnQgZmxvdworCitQUlVQT1NFCistIFZlcmlmeSB0aGF0IHN0cmljdCBtb2RpZnkgb2YgYSBub24tZXhpc3RlbnQgZmxvdyBpcyBlcXVpdmFsZW50IHRvIGEgZmxvdyBhZGQKKworSU5QVVRTCitOb25lCisKK1BST0NFU1MKKzEuIERlbGV0ZSBhbGwgZmxvd3MgZnJvbSBzd2l0Y2gKKzIuIFNlbmQgc3RyaWN0IGZsb3cgbW9kaWZ5IHRvIHN3aXRjaAorMy4gUmV0cmlldmUgZmxvd3MgZnJvbSBzd2l0Y2gKKzQuIFRlc3QgUEFTU0VEIGlmZiBzaW5nbGUgZmxvdyBkZWZpbmVkIGluIHN0ZXAgMiBhYm92ZSBpcyByZXR1cm5lZCBpbiBzdGVwIDMKKyAgIGFib3ZlOyBlbHNlIHRlc3QgRkFJTEVECisKKworMy4zLjEgRkxPVyBNT0RJRlkgM18xCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworT1ZFUlZJRVcKKy0gTm8tb3AgbW9kaWZ5CisKK1BVUlBPU0UKKy0gVmVyaWZ5IHRoYXQgbW9kaWZ5IG9mIGEgZmxvdyB3aXRoIG5ldyBhY3Rpb25zIHNhbWUgYXMgb2xkIG9uZXMgb3BlcmF0ZXMKKyAgY29ycmVjdGx5CisKK1BBUkFNRVRFUlMKK05vbmUKKworUFJPQ0VTUworMS4gRGVsZXRlIGFsbCBmbG93cyBmcm9tIHN3aXRjaAorMi4gU2VuZCBzaW5nbGUgZmxvdyBtb2QsIGFzIHN0cmljdCBtb2RpZnksIHRvIHN3aXRjaAorMy4gVmVyaWZ5IGZsb3cgdGFibGUgaW4gc3dpdGNoCis0LiBTZW5kIHNhbWUgZmxvdyBtb2QsIGFzIHN0cmljdCBtb2RpZnksIHRvIHN3aXRjaAorNS4gVmVyaWZ5IGZsb3cgdGFibGUgaW4gc3dpdGNoCis2LiBUZXN0IFBBU1NFRCBpZmYgZmxvdyBkZWZpbmVkIGluIHN0ZXAgMiBhbmQgNCBhYm92ZSB2ZXJpZmllZDsgZWxzZSBGQUlMRUQKKworCis0LiAgRkxPVyBERUxFVEUKKz09PT09PT09PT09PT09PQorCis0LjEgIEZMT1cgREVMRVRFIDEKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitPVkVSVklFVworLSBTdHJpY3QgZGVsZXRlIG9mIHNpbmdsZSBmbG93cworCitQVVJQT1NFCistIFZlcmlmeSBjb3JyZWN0IG9wZXJhdGlvbiBvZiBzdHJpY3QgZGVsZXRlIG9mIHNpbmdsZSBkZWZpbmVkIGZsb3cKKworSU5QVVRTCistIE5VTV9GTE9XUzogTnVtYmVyIG9mIGZsb3dzIHRvIGRlZmluZTsgMCA9PiBtYXhpbXVtIG51bWJlciBvZiBmbG93cywgYXMKKyAgZGV0ZXJtaW5lZCBmcm8gc3dpdGNoIGNhcGFiaWxpdGllcworCitQUk9DRVNTCisxLiBEZWxldGUgYWxsIGZsb3dzIGZyb20gc3dpdGNoCisyLiBHZW5lcmF0ZSBOVU1fRkxPV1MgZGlzdGluY3QgZmxvdyBjb25maWd1cmF0aW9ucworMy4gU2VuZCBOVU1fRkxPV1MgZmxvdyBhZGRzIHRvIHN3aXRjaCwgZm9yIGZsb3dzIGdlbmVyYXRlZCBpbiBzdGVwIDIgYWJvdmUKKyAgIC0gRmxvdyBtb2RzIHdpdGggT0ZQRkZfU0VORF9GTE9XX1JFTSA9IDAgKGRvIG5vdCBzZW5kIHJlbW92ZSBtZXNzYWdlKSBhbmQKKyAgICAgT0ZQRkZfQ0hFQ0tfT1ZFUkxBUCA9IDAgKGRvIG5vdCBjaGVjayBmb3Igb3ZlcmxhcCkKKzQuIFBpY2sgMSBkZWZpbmVkIGZsb3cgRiBhdCByYW5kb20KKzUuIFNlbmQgc3RyaWN0IGZsb3cgZGVsZXRlIGZvciBGIHRvIHN3aXRjaAorNi4gUmV0cmlldmUgZmxvdyBzdGF0cyBmcm9tIHN3aXRjaAorNy4gQ29tcGFyZSBmbG93IGNvbmZpZ3VyYXRpb25zIHJldHVybmVkIGJ5IHN3aXRjaAorOC4gVGVzdCBQQVNTRUQgaWZmIGFsbCBmbG93cyBzZW50IHRvIHN3aXRjaCBpbiBzdGVwIDMgYWJvdmUsIGxlc3MgZmxvdworICAgcmVtb3ZlZCBpbiBzdGVwIDUgYWJvdmUsIGFyZSByZXR1cm5lZCBpbiBzdGVwIDUgYWJvdmU7IGVsc2UgdGVzdCBGQUlMRUQKKworCis0LjIgIEZMT1cgREVMRVRFIDIKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitPVkVSVklFVworLSBMb29zZSBkZWxldGUgb2YgZmxvd3MKKworUFVSUE9TRQorLSBWZXJpZnkgY29ycmVjdCBvcGVyYXRpb24gb2YgbG9vc2UgZGVsZXRlIG9mIG11bHRpcGxlIGZsb3dzCisKK0lOUFVUUworLSBOVU1fRkxPV1M6IE51bWJlciBvZiBmbG93cyB0byBkZWZpbmU7IDAgPT4gbWF4aW11bSBudW1iZXIgb2YgZmxvd3MsIGFzCisgIGRldGVybWluZWQgZnJvIHN3aXRjaCBjYXBhYmlsaXRpZXMKKworUFJPQ0VTUworMS4gRGVsZXRlIGFsbCBmbG93cyBmcm9tIHN3aXRjaAorMi4gR2VuZXJhdGUgTlVNX0ZMT1dTIGRpc3RpbmN0IGZsb3cgY29uZmlndXJhdGlvbnMKKzMuIFNlbmQgTlVNX0ZMT1dTIGZsb3cgYWRkcyB0byBzd2l0Y2gsIGZvciBmbG93cyBnZW5lcmF0ZWQgaW4gc3RlcCAyIGFib3ZlCisgICAtIEZsb3cgbW9kcyB3aXRoIE9GUEZGX1NFTkRfRkxPV19SRU0gPSAwIChkbyBub3Qgc2VuZCByZW1vdmUgbWVzc2FnZSkgYW5kCisgICAgIE9GUEZGX0NIRUNLX09WRVJMQVAgPSAwIChkbyBub3QgY2hlY2sgZm9yIG92ZXJsYXApCis0LiBQaWNrIDEgZGVmaW5lZCBmbG93IEYgYXQgcmFuZG9tCis1LiBXaWxkY2FyZCBvdXQgMSBxdWFsaWZpZXIgaW4gbWF0Y2ggb2YgRiwgY3JlYXRpbmcgRicsIHN1Y2ggdGhhdCBGJyB3aWxsCisgICBtYXRjaCBtb3JlIHRoYW4gMSBleGlzdGluZyBmbG93IGtleQorNi4gU2VuZCBsb29zZSBmbG93IGRlbGV0ZSBmb3IgRicgdG8gc3dpdGNoCis3LiBSZXRyaWV2ZSBmbG93IHN0YXRzIGZyb20gc3dpdGNoCis4LiBDb21wYXJlIGZsb3cgY29uZmlndXJhdGlvbnMgcmV0dXJuZWQgYnkgc3dpdGNoCis5LiBUZXN0IFBBU1NFRCBpZmYgYWxsIGZsb3dzIHNlbnQgdG8gc3dpdGNoIGluIHN0ZXAgMyBhYm92ZSwgbGVzcyBmbG93cworICAgcmVtb3ZlZCBpbiBzdGVwIDYgYWJvdmUgKGkuZS4gdGhvc2UgdGhhdCBtYXRjaCBGJyksIGFyZSByZXR1cm5lZCBpbiBzdGVwCisgICA1IGFib3ZlOworICAgZWxzZSB0ZXN0IEZBSUxFRAorCisKKzQuNCAgRkxPVyBERUxFVEUgNAorLS0tLS0tLS0tLS0tLS0tLS0tCisKK09WRVJWSUVXCistIEZsb3cgcmVtb3ZlZCBtZXNzYWdlcworCitQVVJQT1NFCistIFZlcmlmeSB0aGF0IHN3aXRjaCBnZW5lcmF0ZXMgT0ZQVF9GTE9XX1JFTU9WRUQvT0ZQUlJfREVMRVRFIHJlc3BvbnNlCisgIG1lc3NhZ2VzIHdoZW4gZGVsZXRpbmcgZmxvd3MgdGhhdCB3ZXJlIGFkZGVkIHdpdGggT0ZQRkZfU0VORF9GTE9XX1JFTSBmbGFnCisKK0lOUFVUUworLSBOVU1fRkxPV1M6IE51bWJlciBvZiBmbG93cyB0byBkZWZpbmU7IDAgPT4gbWF4aW11bSBudW1iZXIgb2YgZmxvd3MsIGFzCisgIGRldGVybWluZWQgZnJvIHN3aXRjaCBjYXBhYmlsaXRpZXMKKworUFJPQ0VTUworMS4gRGVsZXRlIGFsbCBmbG93cyBmcm9tIHN3aXRjaAorMi4gR2VuZXJhdGUgTlVNX0ZMT1dTIGRpc3RpbmN0IGZsb3cgY29uZmlndXJhdGlvbnMKKzMuIFNlbmQgTlVNX0ZMT1dTIGZsb3cgYWRkcyB0byBzd2l0Y2gsIGZvciBmbG93cyBnZW5lcmF0ZWQgaW4gc3RlcCAyIGFib3ZlCisgICAtIEZsb3cgbW9kcyB3aXRoIE9GUEZGX1NFTkRfRkxPV19SRU0gPSAxIChkbyBub3Qgc2VuZCByZW1vdmUgbWVzc2FnZSkgYW5kCisgICAgIE9GUEZGX0NIRUNLX09WRVJMQVAgPSAwIChkbyBub3QgY2hlY2sgZm9yIG92ZXJsYXApCis0LiBQaWNrIDEgZGVmaW5lZCBmbG93IEYgYXQgcmFuZG9tCis1LiBTZW5kIHN0cmljdCBmbG93IGRlbGV0ZSBmb3IgRiB0byBzd2l0Y2gKKzYuIFZlcmlmeSB0aGF0IE9GUFRfRkxPV19SRU1PVkVEL09GUFJSX0RFTEVURSBtZXNzYWdlIGlzIHJlY2VpdmVkIGZyb20gc3dpdGNoCis3LiBSZXRyaWV2ZSBmbG93IHN0YXRzIGZyb20gc3dpdGNoCis4LiBDb21wYXJlIGZsb3cgY29uZmlndXJhdGlvbnMgcmV0dXJuZWQgYnkgc3dpdGNoCis5LiBUZXN0IFBBU1NFRCBpZmYgYWxsIGZsb3dzIHNlbnQgdG8gc3dpdGNoIGluIHN0ZXAgMyBhYm92ZSwgbGVzcyBmbG93CisgICByZW1vdmVkIGluIHN0ZXAgNSBhYm92ZSwgYXJlIHJldHVybmVkIGluIHN0ZXAgNSBhYm92ZTsgZWxzZSB0ZXN0IEZBSUxFRAorCisKZGlmZiAtLWdpdCBhL0ZhYnJpYy9Eb2MvZG9jcy9pbWFnZXMvb2Z0ZXN0X2FyY2gucG5nIGIvRmFicmljL0RvYy9kb2NzL2ltYWdlcy9vZnRlc3RfYXJjaC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc1MmQxYgotLS0gL2Rldi9udWxsCisrKyBiL0ZhYnJpYy9Eb2MvZG9jcy9pbWFnZXMvb2Z0ZXN0X2FyY2gucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIK