V2VkIEp1bCAyOCAyMTozOTozMSBQRFQgMTk5OSBKZWZmIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogZ2NjLTIuOTUgUmVsZWFzZWQuCgpTdW4gSnVsIDI1IDIzOjQwOjUxIFBEVCAxOTk5IEplZmYgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBnY2MtMi45NSBSZWxlYXNlZC4KClNhdCBKdWwgMTcgMjM6NDk6NTkgMTk5OSAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW4gKElOVEVSRkFDRSk6IEJ1bXAgdG8gMy4KCkZyaSBKdWwgIDkgMDE6MjA6MjMgMTk5OSAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW4gKFZFUlNJT04pOiBCdW1wIHRvIDIuMTAuMC4KClR1ZSBKdW4gIDggMDA6MjE6MTEgMTk5OSAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogY29uZmlndXJlLmluICgqLSotZnJlZWJzZDIqKTogQWRkIG1pc3NpbmcgJyonIGF0IGVuZCBvZiBjb25maWd1cmUKCXN0cmluZy4KCjE5OTktMDYtMDUgIEdhYnJpZWwgRG9zIFJlaXMgIDxkb3NyZWlzQGNtbGEuZW5zLWNhY2hhbi5mcj4KCgkqIHN0ZC9zdGRfdmFsYXJyYXkuaDogRG9uJ3QgI2luY2x1ZGUgdW5jb25kaXRpb25hbGx5IDxhbGxvY2EuaD4KCjE5OTktMDYtMDUgIEdhYnJpZWwgRG9zIFJlaXMgIDxkb3NyZWlzQGNtbGEuZW5zLWNhY2hhbi5mcj4KCgkqIHN0ZC9zdGRfdmFsYXJyYXkuaDogTmV3IGZpbGUuCgkgICogc3RkL3NsaWNlLmg6IE5ldyBmaWxlLgoJICAqIHN0ZC9zbGljZV9hcnJheS5oOiBOZXcgZmlsZS4KCSAgKiBzdGQvZ3NsaWNlLmg6IE5ldyBmaWxlLgoJICAqIHN0ZC9nc2xpY2VfYXJyYXkuaDogTmV3IGZpbGUuCgkgICogc3RkL21hc2tfYXJyYXkuaDogTmV3IGZpbGUuCgkgICogc3RkL2luZGlyZWN0X2FycmF5Lmg6IE5ldyBmaWxlLgoJICAqIHN0ZC92YWxhcnJheV9hcnJheS5oOiBOZXcgZmlsZS4KCSAgKiBzdGQvdmFsYXJyYXlfYXJyYXkudGNjOiBOZXcgZmlsZS4KCSAgKiBzdGQvdmFsYXJyYXlfbWV0YS5oOiBOZXcgZmlsZS4KCSAgKiB2YWxhcnJheS5jYzogTmV3IGZpbGUuCgkgICogdmFsYXJyYXk6IE5ldyBmaWxlCgoJICAqIE1ha2VmaWxlLmluIChPQkpTKTogYWRkIHZhbGFycmF5Lm8KCSAgKEhFQURFUlMpOiBhZGQgdmFsYXJyYXkKCSAgKHZhbGFycmF5Lm8pOiBkZWZpbmUgZGVwZW5kZW5jeSBvbiB2YWxhcnJheS5jYwoJICAoaW5zdGFsbCk6IG1ha2UgaXQgcG9zc2libGUgdG8gaW5zdGFsbCB2YWxhcnJheSBmaWxlLgoJCldlZCBKdW4gIDIgMDA6MjE6NTQgMTk5OSAgUm9iZXJ0IExpcGUgIDxyb2JlcnRsaXBlQHVzYS5uZXQ+CgoJKiBzdGQvYmFzdHJpbmcuaCAoY2xhc3MgYmFzaWNfc3RyaW5nOlJlcCk6IEVuY29kZSB4bG9jayBvcGNvZGUKCWFzIC5ieXRlcyBpbnN0ZWFkIG9mIG1uZW1vbmljcy4KCjE5OTktMDUtMjAgIEFuZ2VsYSBNYXJpZSBUaG9tYXMgPGFuZ2VsYUBjeWdudXMuY29tPgoKCSogY29uZmlndXJlLmluOiBUZXN0IGZvciAke2NvbXBpbGVyX25hbWV9LmV4ZSBhcyB3ZWxsLgoKMTk5OS0wNS0xNSAgTWFyayBLZXR0ZW5pcyAgPGtldHRlbmlzQGdudS5vcmc+CgoJKiBjb25maWd1cmUuaW46IEFkZCBzaGFyZWQgbGlicmFyeSBzdXBwb3J0IGZvciB0aGUgSHVyZAoJKCotKi1nbnUqKS4KCSogY29uZmlnL2dudS5tbDogTmV3IGZpbGUuCgoxOTk5LTA1LTEyICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW4gKGNvbXBpbGVyX25hbWUpOiBEb24ndCBkbyB0aGUgc2tpcC10aGlzLWRpciB0aGluZwoJaWYgd2UncmUgcmVjb25maWd1cmluZy4KCjE5OTktMDUtMDcgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgoKCSogc3RkL2Jhc3RyaW5nLmggKGNsYXNzIGJhc2ljX3N0cmluZzo6UmVwKTogTWFrZSByZWxlYXNlIG1lbWJlcgoJZnVuY3Rpb24gdGhyZWFkLXNhZmUgZm9yIGl4ODYgKHg+PTQpIGFuZCBVbHRyYVNQQVJDLgoKCSogc3RsaW5zdC5jYzogTWFrZSBpdCBwb3NzaWJsZSB0byBjb21waWxlIHdpdGggX19VU0VfTUFMTE9DLgoKTW9uIEFwciAyNiAwMjoyNDo0NyAxOTk5ICJMb3JlbiBKLiBSaXR0bGUiIDxyaXR0bGVAc3VwcmEucnNjaC5jb21tLm1vdC5jb20+CgoJKiBjb25maWcvZnJlZWJzZC5tbCAoTElCUyk6IEFkZCBBUkxJTksuCgkqIGNvbmZpZy9vcGVuYnNkLm1sIChMSUJTKTogQWRkIEFSTElOSy4KCkZyaSBBcHIgIDIgMTU6MTI6MTQgMTk5OSAgSC5KLiBMdSAgKGhqbEBnbnUub3JnKQoKCSogbGlic3RkYysrL2NvbmZpZ3VyZS5pbiAoZ3h4X2luY2x1ZGVfZGlyKTogSGFuZGxlIGl0LgoJKiBsaWJzdGRjKysvTWFrZWZpbGUuaW46IExpa2V3aXNlLgoKV2VkIE1hciAyNCAyMjozNjo0NSAxOTk5ICBNdW1pdCBLaGFuICA8a2hhbkB4cmF5bGl0aC53aXNjLmVkdT4KCgkqIGNvbmZpZ3VyZS5pbiAoRVhFRVhUKTogRGVmaW5lLgoJKGNvbXBpbGVyX25hbWUpOiBVc2UuCgpUaHUgTWFyIDExIDAxOjA3OjU1IDE5OTkgIEZyYW56IFNpcmwgPEZyYW56LlNpcmwta2VybmVsQGxhdXRlcmJhY2guY29tPgoKCSogY29uZmlndXJlLmluOiBBZGQgbWgtKnBpYyBoYW5kbGluZyBmb3IgYWxwaGEsIGFybSwgcG93ZXJwYwoKRnJpIE1hciAgNSAwMjoxNjozOSAxOTk5ICBEb3VnIFJhYnNvbiAgPGRmckBmcmVlYnNkLm9yZz4KCgkqIGNvbmZpZ3VyZS5pbjogU3VwcG9ydCBzaGFyZWQgbGlicyBvbiBGcmVlQlNEIDMueCBhbmQgNC54CgkqIGNvbmZpZy9mcmVlYnNkLm1sOiBBIGNvcHkgb2YgY29uZmlnL2xpbnV4Lm1sIHNpbmNlIHRoZXkgYXJlIGJvdGgKCUVMRiBhbmQgYm90aCBoYXZlIGEgc2hhcmVkIGxpYm0uCgoxOTk5LTAyLTI0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW46IEZpeCBJTlNUQUxMRElSIHNlZCBwYXR0ZXJuIGZvciBTb2xhcmlzIHNlZC4KClNhdCBGZWIgMjAgMTM6MTc6MTcgMTk5OSAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogc3RyaW5nLCBzdGQvc3RyYWl0cy5oLCBzdGQvYmFzdHJpbmcuaDogUmV2ZXJ0IHJlY2VudCBjaGFuZ2UuICBOZWVkcwoJc29tZSBsaWJpYmVydHkgc3VwcG9ydCBiZWZvcmUgaXQgY2FuIGJlIHJlLWVuYWJsZWQuCgpUaHUgRmViIDE4IDE5OjUzOjE3IDE5OTkgIE1hcmMgRXNwaWUgPGVzcGllQGN2cy5vcGVuYnNkLm9yZz4KCgkqIGNvbmZpZ3VyZS5pbjogSGFuZGxlIE9wZW5CU0Qgd2l0aCBhbmQgd2l0aG91dCB0aHJlYWRzLgoJKiBjb25maWcvb3BlbmJzZC5tbDogTmV3IGZpbGUuCgkqIGNvbmZpZy9vcGVuYnNkLm10OiBOZXcgZmlsZS4KCjE5OTktMDItMDQgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgoKCSogY29uZmlndXJlLmluOiBSZWNvZ25pemUgLS1lbmFibGUtdGhyZWFkcz1wb3NpeCBmb3IgYWxsCglwbGF0Zm9ybXMuCgkqIGNvbmZpZy9wb3NpeC5tdDogTmV3IGZpbGUuCgoJKiBjb25maWd1cmUuaW46IEFkZCBmcmFnbWVudHMgZm9yIFNvbGFyaXMgZGVmaW5pbmcgbWFjcm8gc3BlY2lmeWluZwoJdGhyZWFkIGxpYnJhcnkgdG8gYmUgdXNlZC4KCSogY29uZmlnL3NvbDJwdGgubXQ6IE5ldyBmaWxlCgkqIGNvbmZpZy9zb2wyc29sdGgubXQ6IE5ldyBmaWxlLgoJKiBzdGwvc3RsX2FsbG9jLmg6IEFkZCBzdXBwb3J0IGZvciBTb2xhcmlzIHRocmVhZCBsaWJyYXJ5LgoJKiBzdGwvc3RsX2NvbmZpZy5oOiBSZWNvZ25pemUgX1NPTFRIUkVBRFMgYW5kIGRlZmluZSBpbnRlcm5hbCBtYWNyb3MKCWFwcHJvcHJpYXRlbHkuCgoxOTk5LTAxLTI4ICBCYXJvbiBSb2JlcnRzICA8YmFyb25Ac2dpLmNvbT4KCgkqIHN0cmluZzogVW5jb21tZW50IHdzdHJpbmcgZGVjbGFyYXRpb24uCgoJKiBzdGQvc3RyYWl0cy5oOiBSZW1vdmUgI2lmIDAvI2VuZGlmIGZyb20gYXJvdW5kCglzdHJ1Y3Qgc3RyaW5nX2NoYXJfdHJhaXRzIDx3Y2hhcl90Pi4KCSNpbmNsdWRlIDxjd2NoYXI+LgoJQWRkIG1pc3NpbmcgZGVmaW5pdGlvbiBmb3Igd2NoYXJfdCBtb3ZlIG1ldGhvZC4KCUFkZCBlbXB0eSgpIG1ldGhvZCBmb3IgdHJhaXQtYmFzZWQgZW1wdHkgc3RyaW5nIHJldHVybi4KCgkqIHN0ZC9iYXN0cmluZy5oIChjX3N0cik6IENoYW5nZSByZXR1cm4gb2YgIiIgdG8gcmV0dXJuIG9mCgl0cmFpdHM6OmVtcHR5KCkgY2FsbCBzbyB0aGF0IHByb3BlciBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQKCWJhc2VkIG9uIHRoZSBjaGFyYWN0ZXIgdHlwZSAoaS5lLiAiIiBvciBMIiIpLgoKMTk5OS0wMi0wNyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKHN0dWZmMik6IFR3ZWFrLgoKMTk5OS0wMi0wNCAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW46IFJlY29nbml6ZSAtLWVuYWJsZS10aHJlYWRzPXBvc2l4IGZvciBhbGwKCXBsYXRmb3Jtcy4KCSogY29uZmlnL3Bvc2l4Lm10OiBOZXcgZmlsZS4KCgkqIGNvbmZpZ3VyZS5pbjogQWRkIGZyYWdtZW50cyBmb3IgU29sYXJpcyBkZWZpbmluZyBtYWNybyBzcGVjaWZ5aW5nCgl0aHJlYWQgbGlicmFyeSB0byBiZSB1c2VkLgoJKiBjb25maWcvc29sMnB0aC5tdDogTmV3IGZpbGUKCSogY29uZmlnL3NvbDJzb2x0aC5tdDogTmV3IGZpbGUuCgkqIHN0bC9zdGxfYWxsb2MuaDogQWRkIHN1cHBvcnQgZm9yIFNvbGFyaXMgdGhyZWFkIGxpYnJhcnkuCgkqIHN0bC9zdGxfY29uZmlnLmg6IFJlY29nbml6ZSBfU09MVEhSRUFEUyBhbmQgZGVmaW5lIGludGVybmFsIG1hY3JvcwoJYXBwcm9wcmlhdGVseS4KClNhdCBKYW4gMzAgMDg6MDU6NDYgMTk5OSBNdW1pdCBLaGFuICA8a2hhbkB4cmF5bGl0aC53aXNjLmVkdT4KCgkqIGNvbmZpZy94ODYtaW50ZXJpeC5tbDogTmV3IGZpbGUuCgkqIGNvbmZpZ3VyZS5pbiAoaVszNDU2XTg2LSotaW50ZXJpeCopOiBBZGQgc2hhcmVkIGxpYnJhcnkgc3VwcG9ydC4KCjE5OTktMDEtMTMgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgoKCSogY29uZmlndXJlLmluOiBUZXN0IGZvciAibG4gLXMiIGFuZCBzZXQgTE5fUyBpbiBnZW5lcmF0ZWQgTWFrZWZpbGUuCgkqIE1ha2VmaWxlLmluOiBVc2UgJChMTl9TKSBpbnN0ZWFkIG9mIGV4cGxpY2l0bHkgbG4gLXMuCgpTdW4gSmFuIDAzIDAzOjE2OjAyIDE5OTkgIFJvYmVydCBMaXBlICA8cm9iZXJ0bGlwZUB1c2EubmV0PgoKCSogY29uZmlndXJlLmluOiAgKCotKi1zeXN2NSwgKi0qLSp1ZGsqKTogIFRyZWF0IGxpa2Ugc3lzdjQuCgpUdWUgRGVjICA4IDAwOjU5OjA5IDE5OTggIE1hcmMgRXNwaWUgPE1hcmMuRXNwaWVAbGlhZmEuanVzc2lldS5mcj4KCgkqIE1ha2VmaWxlLmluOiBCZSBtb3JlIHNlbGVjdGl2ZSBhYm91dCB3aGF0IGZpbGVzIHRvIGluc3RhbGwuCgoxOTk4LTExLTMwICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KCgkqIHN0ZC9iYXN0cmluZy5jYyAob3BlcmF0b3I+Pik6IENvcnJlY3QgY2FzdCBpbiBsYXN0IHBhdGNoLgoJKGdldGxpbmUpOiBMaWtld2lzZS4KCjE5OTgtMTEtMjcgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogTWFrZWZpbGUuaW4gKEhFQURFUlMpOiBJbnN0YWxsIGJpdHNldC4KCjE5OTgtMTEtMjYgIE1hbmZyZWQgSG9sbHN0ZWluICA8bWFuZnJlZEBzLWRpcmVrdG5ldC5kZT4KCgkqIGNvbmZpZ3VyZS5pbiAoY29tcGlsZXJfbmFtZSk6IEFkZCBjaGVjayB0byBkZXRlY3QgaWYgdGhpcwoJbGFuZ3VhZ2UncyBjb21waWxlciBoYXMgYmVlbiBidWlsdC4KCjE5OTgtMTEtMjMgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgoKCSogc3RkL2Jhc3RyaW5nLmNjIChvcGVyYXRvcj4+KTogQ2FzdCBuZXcgY2hhcmFjdGVyIHRvIGNoYXIgYmVmb3JlCglhZGRpbmcgdG8gc3RyaW5nLgoJKGdldGxpbmUpOiBMaWtld2lzZS4KClRodSBTZXAgMTcgMDE6Mjk6NDYgMTk5OCAgSC5KLiBMdSAgKGhqbEBnbnUub3JnKQoKCSogTWFrZWZpbGUuaW4gKCQoQVJMSU5LKSwgJChTSExJTkspKTogRG9uJ3QgcmVseSBvbiAnbG4gLWYnLgoKCSogTWFrZWZpbGUuaW4gKGluc3RhbGwpOiBEb24ndCByZWx5IG9uICdsbiAtZicuCgoxOTk4LTA5LTA5ICBNYW5mcmVkIEhvbGxzdGVpbiAgPG1hbmZyZWRAcy1kaXJla3RuZXQuZGU+CgoJKiBNYWtlZmlsZS5pbiAoaW5zdGFsbCk6IEluaXRpYWxpemUgUkVMSU5TVEFMTERJUiBjb3JyZWN0bHkKCWV2ZW4gZm9yIG11bHRpbGliIGFuZCBjcm9zcyBjb25maWd1cmF0aW9ucy4KCgkqIGNvbmZpZ3VyZS5pbiAoSU5TVEFMTERJUik6IERvbid0IGNoYW5nZSBJTlNUQUxMRElSJ3MgaW5pdAoJdmFsdWUgaWYgLS1lbmFibGUtdmVyc2lvbi1zcGVjaWZpYy1ydW50aW1lLWxpYnMgaGFzIGJlZW4gc3BlY2lmaWVkLgoKV2VkIFNlcCAgMiAyMToxMToxNSAxOTk4ICBILkouIEx1ICAoaGpsQGdudS5vcmcpCgoJKiBNYWtlZmlsZS5pbiAoUkVMSU5TVEFMTERJUik6IE5ldy4gVXNlIGl0IHRvIG1ha2Ugc3ltbGlua3MuCgoJKiBjb25maWd1cmUuaW46IEZpeCBJTlNUQUxMRElSIHJlcGxhY2VtZW50IGZvciBjcm9zcy1jb21waWxlLgoKU3VuIEF1ZyAzMCAyMjoxNzo0MSAxOTk4ICBILkouIEx1ICAoaGpsQGdudS5vcmcpCgoJKiBNYWtlZmlsZS5pbiAoSU5URVJGQUNFKTogTmV3LCBzZXQgdG8gMi4KCShBUkxJQik6IFNldCB0byBsaWJzdGRjKysuYS4kKFZFUlNJT04pCgkoQVJMSU5LLCBNQVJMSU5LKTogTmV3IG1hY3Jvcy4KCShMSUJTKTogQWRkICQoQVJMSU5LKS4KCSgkKEFSTElOSyksIG1hcmxpbmspOiBOZXcgdGFyZ2V0cy4KCShpbnN0YWxsKTogRG9uJ3QgY2hlY2sgJChsaWJzdWJkaXIpLiBIYW5kbGUgdmVyc2lvbmVkIGxpYnJhcmllcy4KCgkqIGNvbmZpZy9saW51eC5tbCAoQVJMSUIsIE1BUkxJTkssIFNITElCLCBNU0hMSU5LKTogTmV3IG1hY3Jvcy4KCShMSUJTKTogQWRkIG1hcmxpbmsgJChBUkxJTkspLgoKCSogY29uZmlnL2FpeC5tbCAoQVJMSUIpOiBTZXQgdG8gbGlic3RkYysrLWFyLmEuJChWRVJTSU9OKQoJKEFSTElOSyk6IE5ldyBtYWNyb3MuCgkoQlVJTERfTElCUyk6IEFkZCAkKEFSTElOSykuCgoJKiBjb25maWcvZGVjLW9zZi5tbCAoTElCUyk6IEFkZCAkKEFSTElOSykuCgkqIGNvbmZpZy9lbGYubWwgKExJQlMpOiBMaWtld2lzZS4KCSogY29uZmlnL2VsZnNobGlibS5tbCAoTElCUyk6IExpa2V3aXNlLgoJKiBjb25maWcvaHB1eC5tbCAoTElCUyk6IExpa2V3aXNlLgoJKiBjb25maWcvaXJpczUubWwgKExJQlMpOiBMaWtld2lzZS4KCSogY29uZmlnL3NvbDJzaG0ubWwgKExJQlMpOiBMaWtld2lzZS4KCSogY29uZmlnL3N1bm9zNC5tbCAoTElCUyk6IExpa2V3aXNlLgoKCSogY29uZmlndXJlLmluOiBVc2UgJHt0b3BzcmNkaXJ9L2NvbmZpZy5pZiB0byBwdXQKCUxJQlNURENYWF9JTlRFUkZBQ0UsIENYWF9JTlRFUkZBQ0UsIExJQkNfSU5URVJGQUNFIGluCgkke3BhY2thZ2VfbWFrZWZpbGVfZnJhZ30uCgoxOTk4LTA4LTI1ICBNYXJ0aW4gdm9uIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogc3RkZXhjZXB0OiBSZW1vdmUgX19IT05PUl9TVEQuCgoxOTk4LTA4LTIzICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogc2luc3QuY2M6IERvbid0IGV4cGxpY2l0bHkgaW5zdGFudGlhdGlvbiBzdHJpbmdfY2hhcl90cmFpdHM8Y2hhcj4uCgkqIGNpbnN0LmNjOiBMaWtld2l3c2UsIGZvciBjb21wbGV4PGZsb2F0PiwgY29tcGxleDxkb3VibGU+LAoJY29tcGxleDxsb25nIGRvdWJsZT4uCgoxOTk4LTA4LTE3ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogc3RkZXhjZXB0OiBQdXQgdGhpbmdzIGluIHRoZSBzdGQgbmFtZXNwYWNlLCBpZiBhcHByb3ByaWF0ZS4KCjE5OTgtMDctMTIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChWRVJTSU9OKTogQnVtcCB0byAyLjkuMC4KCjE5OTgtMDctMTIgIExhcnMgQWxiZXJ0c3NvbiA8bGFsbGVAc2ljcy5zZT4KCgkqIHN0ZC9iYXN0cmluZy5jYyAoZmluZF9sYXN0X29mKTogRml4LgoJKGZpbmRfbGFzdF9ub3Rfb2YpOiBMaWtld2lzZS4KCjE5OTgtMDctMDYgIE1hbmZyZWQgSG9sbHN0ZWluICA8bWFuZnJlZEBzLWRpcmVrdG5ldC5kZT4KCgkqIGNvbmZpZ3VyZS5pbiAoSU5TVEFMTERJUik6IE1ha2Ugc2VkIHBhdHRlcm4gZmFpbHNhZmUuCgoxOTk4LTA3LTA2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KCgkqIHN0ZC9iYXN0cmluZy5oIChjbGFzcyBiYXNpY19zdHJpbmcpOiBDb3JyZWN0IGl0ZXJhdG9yIHJldHVybgoJdmFsdWVzIGluIGluc2VydCBtZW1iZXIgZnVuY3Rpb25zLgoKMTk5OC0wNy0wMiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CgoJKiBzdGQvYmFzdHJpbmcuaCAoY2xhc3MgYmFzaWNfc3RyaW5nKTogUmV0dXJuIGNvcnJlY3QgaXRlcmF0b3JzIGluCgllcmFzZSBtZW1iZXIgZnVuY3Rpb25zLgoKMTk5OC0wNi0yNCAgTWFuZnJlZCBIb2xsc3RlaW4gIDxtYW5mcmVkQHMtZGlyZWt0bmV0LmRlPgoKCSogTWFrZWZpbGUuaW4gKElOU1RBTExESVIpOiBBZGQgY29tbWVudCB0byBkb2N1bWVudCB0aGUgZmFjdCwKCXRoaXMgbWFjcm8gd2lsbCBiZSBwcm9wZXJseSBpbml0aWFsaXplZCBhdCBtYWtlJ3MgcnVudGltZS4KCShpbnN0YWxsKTogQWRkIGluaXRpYWxpemF0aW9uIG9mIElOU1RBTExESVIgZGVwZW5kaW5nIG9uICQobGlic3ViZGlyKQoJYW5kICR7ZW5hYmxlX3ZlcnNpb25fc3BlY2lmaWNfcnVudGltZV9saWJzfTsgdXNlICQke0lOU1RBTExESVJ9IHNoZWxsCgl2YXJpYWJsZSBpbnN0ZWFkIG9mIHRoZSAkKElOU1RBTExESVIpIG1ha2UgbWFjcm8uCgpUdWUgTWFyIDI0IDEwOjEzOjA3IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHN0ZC9iYXN0cmluZy5jYyAoYmFzaWNfc3RyaW5nOjpjb3B5KTogTWFyayBjb25zdCBoZXJlLCB0b28uCgoxOTk4LTAzLTIzIDE1OjU5ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KCgkqIHN0ZC9iYXN0cmluZy5oIChiYXNpY19zdHJpbmc6OmNvcHkpOiBNYXJrIGNvcHkgZnVuY3Rpb24gYXMgY29uc3QuCglSZXBvcnRlZCBieSBTY290dCBTY2h1cnIgPHNjb3R0c0BpbXMuY29tPi4KClRodSBNYXIgIDUgMDk6MjM6MjggMTk5OCAgTWFuZnJlZCBIb2xsc3RlaW4gIDxtYW5mcmVkQHMtZGlyZWt0bmV0LmRlPgoKCSogY29uZmlndXJlLmluOiBNYWtlIGxvY2F0aW5nIGZyYWcgZmlsZXMgZmFpbHNhZmUgZXZlbiBmb3IgdGhlCglzcGVjaWFsIGNhc2UgaWYgY29uZmlndXJpbmcgYW5kIGJ1aWxkaW5nIGluIHNyY2Rpci4KCjE5OTgtMDMtMDQgMTI6MzcgIFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGN5Z251cy5jb20+CgoJKiBjaW5zdC5jYyBbSU5TRVJUXSAob3BlcmF0b3I8PCk6IENvcnJlY3QgdHlwZSBvZiBudW1lcmljIGFyZ3VtZW50LgoKRnJpIEZlYiAgNiAwMTozNjoyMSAxOTk4ICBNYW5mcmVkIEhvbGxzdGVpbiAgPG1hbmZyZWRAcy1kaXJla3RuZXQuZGU+CgoJKiBNYWtlZmlsZS5pbiAocGljbGlzdCk6IENoZWNrIHZhbHVlIG9mIGVuYWJsZV9zaGFyZWQsIG5vdCBQSUNGTEFHLgoJKHN0bXAtc3RyaW5nLCAuLi4pOiBEaXRvLgoJKGJpZ3N0bXAtc3RyaW5nLCAuLi4pOiBEaXRvLgoKU3VuIEZlYiAgMSAxMzozODowNyAxOTk4ICBILkouIEx1ICAoaGpsQGdudS5vcmcpCgoJKiBjb25maWcvbGludXgubXQ6IERvbid0IGRlZmluZSBfUFRIUkVBRFMsIGJ1dCBkZWZpbmUKCV9JT19NVFNBRkVfSU8uCgpXZWQgSmFuIDI4IDEwOjI3OjExIDE5OTggIE1hbmZyZWQgSG9sbHN0ZWluICA8bWFuZnJlZEBzLWRpcmVrdG5ldC5kZT4KCiAgICAgICAgKiB0ZXN0cy9jb25maWd1cmUuaW4sIHRlc3RzdWl0ZS9jb25maWd1cmUuaW46IFVwZGF0ZSB3aXRoIHllc3RlcmRheSdzCgl0b3BsZXZlbCBjb25maWd1cmUuaW4gY2hhbmdlcy4KClR1ZSBKYW4gMjcgMjM6Mjc6MzIgMTk5OCAgTWFuZnJlZCBIb2xsc3RlaW4gIDxtYW5mcmVkQHMtZGlyZWt0bmV0LmRlPgoKCSogY29uZmlndXJlLmluIChwYWNrYWdlX21ha2VmaWxlX3J1bGVzX2ZyYWcpOiBOZXcgdmFyaWFibGUKCXdoaWNoIGlzIHVzZWQgaW4gdGhlIGNhbGwgdG8gY29uZmlnLnNoYXJlZDsgcmVkaXJlY3QgZmlsZSBkZXNjcmlwdG9yIDIKCXRvICR7cGFja2FnZV9tYWtlZmlsZV9ydWxlc19mcmFnfS4KClR1ZSBKYW4gMjcgMTA6MTE6MjcgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKGluc3RhbGwpOiBSZW1vdmUgdGhlIHNoYXJlZCBsaWJyYXJ5IHN5bWxpbmsgZXZlbiBpZgogCXdlIGFyZW4ndCBpbnN0YWxsaW5nIGl0LgoKVHVlIEphbiAyNyAxMDoyOTo0NCAxOTk4ICBILkouIEx1ICAoaGpsQGdudS5vcmcpCgoJKiBjb25maWd1cmUuaW4gKHRvcHNyY2Rpcik6IE5ldy4KCShjb25maWdkaXJzKTogQ2hlY2sgJHt0b3BzcmNkaXJ9L2djYyBpbnN0ZWFkLgoJKGNvbmZpZy1tbC5pbik6IFVzZSAke3RvcHNyY2Rpcn0vY29uZmlnLW1sLmluLgoKCSogdGVzdHMvY29uZmlndXJlLmluICh0b3BzcmNkaXIpOiBOZXcuCgkoY2hlY2spOiBDaGVjayAke3RvcHNyY2Rpcn0vZ2NjIGluc3RlYWQuCgpTdW4gSmFuIDI1IDE0OjAxOjUwIDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHN0ZC9iYXN0cmluZy5oICh1bmlxdWUpOiBXZSBvbmx5IG5lZWQgbGVuZ3RoIGJ5dGVzLgoJKGNfc3RyKTogQXZvaWQgd3JpdGluZyBvdmVyIHJhbmRvbSBtZW1vcnkuCgkjaW5jbHVkZSA8c3RkL2Jhc3RyaW5nLmNjPi4KCUxvc2UgX0dfQUxMT0NfQ09OVFJPTC4KCSogc3RkL2Jhc3RyaW5nLmNjOiBMaWtld2lzZS4KIAkobmlsUmVwKTogQWRkIGluaXRpYWxpemVyIGZvciBzZWxmaXNoLgoJKiBzaW5zdC5jYzogSnVzdCAjaW5jbHVkZSA8c3RyaW5nPi4KClR1ZSBKYW4gMTMgMjE6MjM6MDUgMTk5OCAgSC5KLiBMdSAgKGhqbEBnbnUub3JnKQoKCSogY29uZmlndXJlLmluIChjb25maWdkaXJzKTogSW5jbHVkZSB0ZXN0c3VpdGUgb25seSBpZgoJJHtzcmNkaXJ9Ly4uL2djYyBleGlzdHMuCgoJKiB0ZXN0cy9jb25maWd1cmUuaW4gKGNoZWNrKTogU2V0IHRvICR7Q0hFQ0t9IGlmCgkke3NyY2Rpcn0vLi4vLi4vZ2NjIGRvZXNuJ3QgZXhpc3RzLgoKMTk5OC0wMS0wNSAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogc3RkL2Jhc3RyaW5nLmNjIChiYXNpY19zdHJpbmc6OlJlcDo6b3BlcmF0b3IgZGVsZXRlKTogRG9uJ3QgY2xhaW0KCXRvIHJldHVybiBmcm9tIGRlYWxsb2NhdGUsIHNpbmNlIHRoaXMgaXMgYSB2b2lkIG1ldGhvZC4KClNhdCBKYW4gIDMgMTI6MTU6NDEgMTk5OCBGcmFueiBTaXJsIDxmcmFuei5zaXJsLWtlcm5lbEBsYXV0ZXJiYWNoLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogRmluYWxpemUgc3VwcG9ydCBmb3Ige2FscGhhfHBvd2VycGN9Ki0qLWxpbnV4LWdudWxpYmMxCgpTdW4gRGVjICA3IDAyOjM0OjQwIDE5OTcgIEpvZHkgR29sZGJlcmcJPGpvZHlnQGlkdC5uZXQ+CgoJKiBsaWJzdGRjKysvc3RkL2Jhc3RyaW5nLmggOiBNb3ZlIGNsb3NlciB0byB0aGUgZHJhZnQgc3RhbmRhcmQKCWltcGxlbWVudGF0aW9uIG9mIGJhc2ljX3N0cmluZyBieSBhZGRpbmcgMyBwYXJhbXRlciAnQWxsb2NhdG9yJy4KCU5PVEU6IHRoaXMgc3RpbGwgZGlmZmVycyBmcm9tIHRoZSBzdGFuZGFyZCBpbiBub3Qgb2ZmZXJpbmcgcGVyCglpbnN0YW5jZSBhbGxvY2F0b3JzLgoJKiBsaWJzdGRjKysvc3RkL2Jhc3RyaW5nLmNjIDogTGlrZXdpc2UuCgkqIGxpYnN0ZGMrKy9zdGxpbnN0LmNjIDogSGFuZGxlIHRocmVhZCBzYWZlIGFsbG9jYXRvcnMgaWYgdGhleSBhcmUgdGhlCglkZWZhdWx0LgoKU3VuIERlYyAgNyAwMjozMjoyMCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBpb3Nmd2Q6IE5ldyBoZWFkZXIuCgkqIE1ha2VmaWxlLmluIChIRUFERVJTKTogQWRkIGl0LgoKU3VuIERlYyAgNyAwMjozMjoyMCAxOTk3ICBHcmVnb3J5IEwuIEdhbGxvd2F5IChncmVnZ0Blb2VtbC5ndHJpLmdhdGVjaC5lZHUpCgoJKiBNYWtlZmlsZS5pbiAoSEVBREVSUyk6IE1vZGlmaWVkIGxpc3Qgb2YgaGVhZGVycyB0bwoJaW5zdGFsbCB0byBpbmNsdWRlIGFsbCBvZiBTR0kgU1RMIGhlYWRlcnMgZXNwZWNpYWxseSBoYXNoX3NldCBhbmQKCWhhc2hfbWFwLCBhbmQgYWRkZWQgQU5TSSBDKysgc3R5bGUgd3JhcHBlcnMgZm9yIGZzdHJlYW0sIGlvbWFuaXAsCglpb3N0cmVhbSwgYW5kIHN0cnN0cmVhbS4KCgkqIGZzdHJlYW0sIGlvbWFuaXAsIGlvc3RyZWFtLCBzdHJzdHJlYW06IE5ldyBmb3J3YXJkaW5nIGhlYWRlcnMKCWFkZGVkLgoKVGh1IE5vdiAyNyAwMTozMzo1NSAxOTk3ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbiAoaW5zdGFsbCk6IENoYW5nZSBneHhfaW5jbHVkZWRpciB0byBneHhfaW5jbHVkZV9kaXIuCgpUdWUgTm92IDI1IDIzOjE2OjQ0IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCglMb25kb24gY2hhbmdlcyB0byBzdHJpbmc6CgkqIHN0ZC9iYXN0cmluZy5jYyAoY2hlY2tfcmVhbGxvYyk6IERvbid0IGJlIHNlbGZpc2ggYW55bW9yZS4KCSogc3RkL2Jhc3RyaW5nLmggKG5vbi1jb25zdCBvcGVyYXRvcltdKTogQmUgc2VsZmlzaC4KCShpdGVyYXRvciBmb3JtcyBvZiBpbnNlcnQgYW5kIGVyYXNlKTogU3RheSBzZWxmaXNoLgoKVHVlIE5vdiAyNSAxNDowMzo0MyAxOTk3ICBILkouIEx1ICAoaGpsQGdudS5vcmcpCgoJKiBNYWtlZmlsZS5pbiAoc3RtcC1jb21wbGV4LCBiaWdzdG1wLWNvbXBsZXgpOiBDaGFuZ2VkIHRvCgl4eHh4LWNvbXBseC4KCk1vbiBOb3YgMjQgMTQ6NDE6MzMgMTk5NyAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW46IFVzZSBsbiAtZiAtcywgbm90IGxuIC1zIC1mLgoKRnJpIE5vdiAyMSAxMjo1NjoyNCAxOTk3ICBNYW5mcmVkIEhvbGxzdGVpbiA8bWFuZnJlZEBzLWRpcmVrdG5ldC5kZT4KCgkqIE1ha2VmaWxlLmluIChiaWdzdG1wLWNvbXBsZXgpOiBOYW1lIGNoYW5nZWQgdG8gYmlnc3RtcC1jb21wbHggdG8KCWNvcGUgd2l0aCBmaWxlc3lzdGVtIG5vdCBjYXBhYmxlIHRvIGhhbmRsZSBuYW1lcyBsb25nZXIgdGhhbgoJMTQgY2hhcmFjdGVycy4KClN1biBOb3YgMTYgMjI6NDE6NTUgMTk5NyAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW4gKFNITElCKTogQnVpbGQgd2l0aCBDQyBpbnN0ZWFkIG9mIENYWC4KClN1biBOb3YgIDIgMjM6MzQ6MDkgMTk5NyAgTWFuZnJlZCBIb2xsc3RlaW4gIDxtYW5mcmVkQHMtZGlyZWt0bmV0LmRlPgoKCSogY29uZmlndXJlLmluOiBVc2UgZGVsdGEubXQgZm9yIG02OGstbW90b3JvbGEtc3lzdi4KCSogY29uZmlnL2RlbHRhLm10OiBOZXcgbWFrZWZpbGUgZnJhZ21lbnQuCgpTdW4gTm92ICAyIDEyOjE0OjM3IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChpbnN0YWxsKTogU29tZSBvZiBIRUFERVJTIGNvbWUgZnJvbSB0aGUgc3RsIGRpciBub3cuCgkqIGFsZ29yaXRobSwgZGVxdWUsIGZ1bmN0aW9uYWwsIGl0ZXJhdG9yLCBsaXN0LCBtYXAsIG1lbW9yeSwgbnVtZXJpYywKIAlxdWV1ZSwgc2V0LCBzdGFjaywgdXRpbGl0eSwgdmVjdG9yOiBOb3cgaW4gc3RsIGRpci4KCkZyaSBPY3QgMTAgMDA6NDA6MDAgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogc3RkL2Jhc3RyaW5nLmg6IFVzZSBpYmVnaW4gaW50ZXJuYWxseS4gIFJldHVybiBwYXNzZWQgaXRlcmF0b3IKCWluc3RlYWQgb2YgcmVjYWxjdWxhdGluZyBpdCB3aGVyZSBhcHByb3ByaWF0ZS4KCSogc3RkL2Jhc3RyaW5nLmNjOiBBZGp1c3QgZm9yIGVyYXNlLgoKCUZyb20gWW90YW0gTWVkaW5pOgoJKiBzdGQvYmFzdHJpbmcuaDogUmVwbGFjZSByZW1vdmUgd2l0aCBlcmFzZS4KClRodSBPY3QgIDkgMjM6MjQ6MzYgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogc3RkZXhjZXB0aS5jYyAoX19vdXRfb2ZfcmFuZ2UpOiBOZXcgZm4uCgkoX19sZW5ndGhfZXJyb3IpOiBOZXcgZm4uCgoJKiBzdGQvYmFzdHJpbmcuaCAoT1VUT0ZSQU5HRSk6IEZpeCBsb2dpYy4gIFVzZSB0aHJvd2luZyBmdW5jdGlvbnMuCgkoTEVOR1RIRVJST1IpOiBMaWtld2lzZS4KCVJldmVydCBPY3QgMiBjaGFuZ2VzLgoJKiBzdHJpbmc6IFJldmVydCBPY3QgMiBjaGFuZ2VzLgoKVHVlIE9jdCAgNyAwMDo1MTo1MSAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBzdGQve2YsZCxsZH1jb21wbGV4Lmg6IFJlcGxhY2UgZ3VpZGluZyBmbnMgaWYgbm90IC1hbnNpLgoKVGh1IE9jdCAgMiAwMDowODoxOCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBzdGQvYmFzdHJpbmcuaDogTW92ZSBleGNlcHRpb24gc3R1ZmYgYWZ0ZXIgZGVmaW5pdGlvbiBvZiBzdHJpbmcuCglNb3ZlIHR5cGVkZWYgb2Ygc3RyaW5nIGhlcmUuCgkqIHN0cmluZzogRnJvbSBoZXJlLgoKU2F0IFNlcCAyNyAxNjo0ODowMCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBzdGQvY29tcGxleHQuaDogTG9zZSBpbmplY3Rpb24gZGVjbHMuCgkqIHN0ZC9mY29tcGxleC5oOiBMaWtld2lzZS4KCSogc3RkL2Rjb21wbGV4Lmg6IExpa2V3aXNlLgoJKiBzdGQvbGRjb21wbGV4Lmg6IExpa2V3aXNlLgoKU2F0IFNlcCAyNyAxNjo0NzozNSAxOTk3ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBzdGQvY29tcGxleHQuaDogRGVjbGFyZSB0ZW1wbGF0ZXMgYmVmb3JlIG1ha2luZyB0aGVtCglmcmllbmRzLiAgVXNlIG5ldyBmcmllbmQgPD4gc3ludGF4LgoJKiBzdGQvY29tcGxleHQuY2M6IERvbid0IHJlbHkgb24gZ3VpZGluZyBkZWNsYXJhdGlvbnMuCgkqIHN0ZC9mY29tcGxleC5oOiBVc2UgbmV3IGZyaWVuZCA8PiBzeW50YXguCgkqIHN0ZC9kY29tcGxleC5oOiBMaWtld2lzZS4KCSogc3RkL2xkY29tcGxleC5oOiBMaWtld2lzZS4KClRodSBTZXAgMjUgMTk6NTU6NTYgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogc3RkL2Jhc3RyaW5nLmg6IEVuYWJsZSBleGNlcHRpb25zLgogCShhc3NpZ24sIGFwcGVuZCwgaW5zZXJ0LCByZXBsYWNlKTogSW1wbGVtZW50IG1lbWJlciB0ZW1wbGF0ZSB2ZXJzaW9ucy4KCjE5OTctMDktMTUgMDI6MzcgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgoKCSogY29uZmlnL2xpbnV4Lm10OiBOZXcgZmlsZS4gIE1ha2Ugc3VyZSBfUFRIUkVBRFMgaXMgZGVmaW5lZAoJaWYgbmVjZXNzYXJ5LgoJKiBjb25maWd1cmUuaW46IEZpbmQgbGludXgubXQgZmlsZS4KClRodSBTZXAgMTEgMTU6MDM6MjAgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogc3RkL2Jhc3RyaW5nLmggKGNsYXNzIGJhc2ljX3N0cmluZyk6IEFkZCBnbG9iYWwgc2NvcGUgdG8KCXVzZSBvZiByZXZlcnNlX2l0ZXJhdG9yLgoKVHVlIFNlcCAgOSAxOTo0NzowNyAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBzdGQvYmFzdHJpbmcuaDogQWRqdXN0IHVzZSBvZiByZXZlcnNlX2l0ZXJhdG9yIHRlbXBsYXRlLgoKV2VkIEF1ZyAyNyAwMDowNDozMyAxOTk3ICBBbGV4YW5kcmUgT2xpdmEgIChvbGl2YUBkY2MudW5pY2FtcC5icikKCgkqIE1ha2VmaWxlLmluOiBDcmVhdGUgY29ycmVjdCBtdWx0aXBsZSBsaW5rcyB0bwoJc2hhcmVkIGxpYnN0ZGMrKy4KClR1ZSBBdWcgMjYgMTI6MjQ6MDEgMTk5NyAgSC5KLiBMdSAgKGhqbEBnbnUuYWkubWl0LmVkdSkKCgkqIHRlc3RzdWl0ZS9NYWtlZmlsZS5pbiAoY2hlY2spOiBEb24ndCBkZXBlbmQgb24gc2l0ZS5leHAuCgkoanVzdC1jaGVjayk6IERlcGVuZCBvbiBzaXRlLmV4cC4KCk1vbiBBdWcgMjUgMTQ6MjY6NDUgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKENYWEZMQUdTKTogQWRkIC1XZWZmYysrLgoKU2F0IEF1ZyAyMyAyMToyNTozNyAxOTk3ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBiYXN0cmluZy5oOiBFbmFibGUgcmV2ZXJzZV9pdGVyYXRvciBhbmQgaXRzIGlsay4KCgkqIGJhc3RyaW5nLmg6IFByb3ZpZGUgc3BlY2lhbGl6YXRpb25zIG9mIG1lbWJlciBmdW5jdGlvbiB0ZW1wbGF0ZXMKCWZvciBjb25zdF9pdGVyYXRvci4KCldlZCBKdWwgMzAgMTA6NTk6MDAgMTk5NyAgQmVuamFtaW4gS29zbmlrICA8YmtvekByaGluby5jeWdudXMuY29tPgoKCSogc3RsaW5zdC5jYzogQWRkIGluc3RhbnRpYXRpb24gZmlsZSBmb3IKCV9fZGVmYXVsdF9hbGxvY190ZW1wbGF0ZTxmYWxlLCAwPiBhbmQKCV9fbWFsbG9jX2FsbG9jX3RlbXBsYXRlPDA+CgpTdW4gSnVuICAxIDE3OjAzOjQwIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHN0ZC9iYXN0cmluZy5jYyAoZmluZF9sYXN0X29mKTogQ29ycmVjdCBoYW5kbGluZyBvZiBQT1MuCgkoZmluZF9sYXN0X25vdF9vZik6IExpa2V3aXNlLgoKVGh1IE1heSAgMSAxNzozNzoxMCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoJChTSExJQikpOiBBZGQgJChMSUJDWFhGTEFHUykuCgpXZWQgQXByIDMwIDEyOjA2OjIzIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChJT19ESVIpOiBSZW1vdmUgJChNVUxUSUJVSUxEVE9QKS4KCShMSUJJQkVSVFlfRElSKTogTGlrZXdpc2UuCgkqIGNvbmZpZ3VyZS5pbjogRG9uJ3QgdHVybiBvbiBtdWx0aWxpYiBoZXJlLgoKRnJpIEFwciAyNSAxNjowOToxNSAxOTk3ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIHRlc3RzdWl0ZS9saWJzdGRjKysudGVzdHMvdGVzdC5leHAsIHRlc3RzdWl0ZS9saWIvbGlic3RkYysrLmV4cCwKCSAgdGVzdHN1aXRlL2NvbmZpZ3VyZS5pbiwgdGVzdHN1aXRlL01ha2VmaWxlLmluLAoJICB0ZXN0c3VpdGUvY29uZmlnL2RlZmF1bHQuZXhwLCB0ZXN0c3VpdGUvQ2hhbmdlTG9nOiBOZXcgZmlsZXMuCgoJKiBjb25maWd1cmUuaW46IEFkZCBuZXcgdGVzdHN1aXRlIGRpcmVjdG9yeSB0byBiZSBjb25maWd1cmVkLgoKVHVlIEFwciAyMiAxOTowMzozOSAxOTk3ICBBbGV4YW5kcmUgT2xpdmEgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogTWFrZWZpbGUuaW4gKGluc3RhbGwpOiBGaXggaGFuZGxpbmcgb2YgbXNobGluay4KCkZyaSBBcHIgIDQgMDM6MjU6MTMgMTk5NyAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoSU9fRElSKTogUHJlcGVuZCAkKE1VTFRJQlVJTERUT1ApIHRvCglzdXBwb3J0IG11bHRpbGliIGJ1aWxkLgoJKExJQklCRVJUWV9ESVIpOiBMaWtld2lzZS4KCgkqIGNvbmZpZ3VyZS5pbjogRW5hYmxlIG11bHRpbGliaW5nIGJ5IGRlZmF1bHQuCglVcGRhdGUgbXVsdGlsaWIgdGVtcGxhdGUgdG8gcmVhZCBjb25maWctbWwuaW4uCgpXZWQgTWFyIDEyIDE2OjA5OjM0IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiAoWENYWElOQ0xVREVTKTogQWRkIHRoZSBTVEwgZGlyZWN0b3J5LgoKVGh1IEphbiAyMyAwODowODo0MyAxOTk3ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBzdGRleGNlcHQ6IERlbGV0ZSBkdG9ycyBmb3IgYWxsIG9mIHRoZSBlcnJvciBjbGFzc2VzLCB0byBtYXRjaAoJdGhlaXIgcmVtb3ZhbCBpbiB0aGUgQXByIDE5OTUgV1AuCiAJKGNsYXNzIG92ZXJmbG93X2Vycm9yKTogRGVmaW5lIG1pc3NpbmcgY2xhc3MsIGFkZGVkIGluIE1heSAxOTk2IFdQLgoKTW9uIE5vdiAxOCAxNjo1NzoyNSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoc3R1ZmZbMTJdKTogTW9yZSBydWxlcyBmb3IgbXkgb3duIGV2aWwgcHVycG9zZXMuCgkoQ1hYRkxBR1MsIENGTEFHUyk6IFVzZSAtTyBpbnN0ZWFkIG9mIC1PMyBzbyBkZWJ1Z2dpbmcgd29ya3MuCgpXZWQgT2N0IDE2IDEzOjQ3OjQ1IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pcml4NS5tbDogRG8gbGluayBhZ2FpbnN0IHRoZSBtYXRoIGxpYnJhcnkuCgkqIGNvbmZpZ3VyZS5pbjogU3VwcG9ydCBzaGFyZWQgbGlicyBvbiBJcml4IDYuCgpGcmkgT2N0IDExIDE4OjA2OjA5IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9saW51eC5tbDogTG9zZSB2ZXJzaW9uIG92ZXJyaWRlcy4KCgkqIE1ha2VmaWxlLmluIChNU0hMSU5LKTogRGVmYXVsdHMgdG8gLnNvLjIueAoJKG1zaGxpbmspOiBJbmRpcmVjdCBydWxlIGZvciBtYWtpbmcgaXQuCgpUdWUgU2VwIDI0IDE3OjU4OjMxIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIFJlbW92ZSBuZXcsIHR5cGVpbmZvLCBleGNlcHRpb24sIHN0ZGRlZiouCgkqIE1vdmUgcHVibGljIGhlYWRlcnMgZnJvbSBzdGQvKi5oIHRvICouCgpTdW4gU2VwIDIyIDA1OjM1OjU1IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluOiBSZW1vdmUgbmV3LCBleGNlcHRpb24sIHR5cGVpbmZvIGhhbmRsaW5nLgoJKiBleGNlcHRpb25pLmNjLCBuZXdpLmNjLCB0eXBlaW5mb2kuY2MsIHN0ZC9leGNlcHRpb24uaCwgc3RkL25ldy5oLAoJc3RkL3R5cGVpbmZvLmgsIG5ldy5oOiBSZW1vdmUuCgkqIHR5cGVpbmZvLCBuZXcsIGV4Y2VwdGlvbjogUmVmZXIgdG8gdGhlIGZpbGVzIHdpdGggLmggaW4gZ2NjLgoKRnJpIFNlcCAyMCAxNDozOToxOSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbjogUmVtb3ZlIHJlZmVyZW5jZXMgdG8gc3RsLmxpc3QuCgkqIGNvbmZpZ3VyZS5pbiAoY29uZmlnZGlycyk6IFJlbW92ZSBzdGwuCgpTYXQgU2VwIDE0IDA5OjQyOjA4IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChzdHVmZik6IENvbnZlbmllbmNlIGZvciBtZS4KCgkqIHN0ZC9iYXN0cmluZy5oOiBSZW1vdmUga2x1ZGdlIG9ic29sZXRlZCBieSBuZXcgb3ZlcmxvYWRpbmcgY29kZS4KCkZyaSBTZXAgIDYgMTY6NDM6MjEgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWluZm9pLmNjIChfX2R5bmFtaWNfY2FzdCk6IEZpeCBzdGF0aWNfY2FzdC4KCShfX3J0dGlfc2kpOiBMaWtld2lzZS4KCShkY2FzdCk6IExpa2V3aXNlLgoKVGh1IEF1ZyAyOSAxNzowNjoyMyAxOTk2ICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAdGlrdG9rLmN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW4gKGlbMzQ1XTg2LSotKik6IFJlY29nbml6ZSBpNjg2IGZvciBwZW50aXVtIHByby4KClR1ZSBKdWwgMjMgMTQ6Mjc6NDQgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKGV4Y2VwdGlvbmkubyk6IFVzZSAtZmV4Y2VwdGlvbnMgbm93LgoKTW9uIEp1biAxNyAxMzo1NzoyNCAxOTk2ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAZGVuZWIuY3lnbnVzLmNvbT4KCgkqIHN0ZC9iYXN0cmluZy5oIChjbGFzcyBiYXNpY19zdHJpbmc6OnJlbW92ZSk6ICBBZGQgY2FzdHMuCgoJKiBjb25maWd1cmUuaW46ICBVc2UgRVhUUkFfRElTVENMRUFOIHJhdGhlciB0aGFuIERJU1RDTEVBTi4KCkZyaSBKdW4gIDcgMTQ6MDk6MjAgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWluZm9pLmNjIChCVUlMVElOKTogQWxpZ24gdHlwZWluZm8gb2JqZWN0IGxpa2UgYSBwb2ludGVyLgoKV2VkIE1heSAyOSAxNjo0ODozNSAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBleGNlcHRpb25pLmNjIChfX3Rocm93X2JhZF9leGNlcHRpb24pOiBBZGQuCgkqIHN0ZC9leGNlcHRpb24uaCAoYmFkX2V4Y2VwdGlvbik6IEFkZC4KCSogc3RkL3R5cGVpbmZvLmg6IFJlbW92ZSBsZWZ0b3ZlcnMgb2YgYmFkX2Nhc3Rfb2JqZWN0LgoKTW9uIE1heSAgNiAxNDowNDo0MiAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBzdGQvY29tcGxleHQuaDogcy9GTE9BVC9fRkxUL2cuCgpUaHUgTWF5ICAyIDE3OjI2OjI0IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdGlvbmkuY2MgKHVuY2F1Z2h0X2V4Y2VwdGlvbik6IE5ldyByb3V0aW5lLgoJKiBzdGQvZXhjZXB0aW9uLmg6IERlY2xhcmUgaXQuCgpUaHUgQXByIDI1IDEzOjIwOjU3IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluICh0eXBlaW5mb2kubywgc3RkZXhjZXB0aS5vKTogVXNlIGRlZmF1bHQgcnVsZS4KCldlZCBBcHIgMjQgMTg6Mzg6MjQgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogZXhjZXB0aW9uaS5jYzogQWRkICNwcmFnbWEgaW1wbGVtZW50YXRpb24uCgkqIHN0ZC9leGNlcHRpb24uaDogQWRkICNwcmFnbWEgaW50ZXJmYWNlLiAgTW92ZWQgZXhjZXB0aW9uIGZyb20KCXN0ZGV4Y2VwdC4KCSogc3RkL3N0ZGV4Y2VwdC5oOiBNb3ZlZCBleGNlcHRpb24gdG8gZXhjZXB0aW9uLiAgRml4IGFsbCBjb25zdHJ1Y3RvcgoJYXJndW1lbnRzIHRvIHRha2Ugc3RyaW5ncyB0byBtYXRjaCBBTlNJLiAgTW92ZWQgYmFkX2Nhc3QgYW5kIGJhZF90eXBlaWQKCXRvIHR5cGVpbmZvLgoJKiBzdGQvdHlwZWluZm8uaDogTW92ZWQgYmFkX2Nhc3QgYW5kIGJhZF90eXBlaWQgZnJvbSBzdGRleGNlcHQuCgpXZWQgQXByIDI0IDEwOjQzOjA3IDE5OTYgIERvdWcgRXZhbnMgIDxkamVAYmx1ZXMuY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChuZXdpLm8sY3N0cmluZ2kubyxzdGRkZWZpLm8sY3N0ZGxpYmkubyxjbWF0aGkubyk6IEFkZAoJcnVsZXMgZm9yIFN1bk9TIFZQQVRILgoKRnJpIEFwciAxOSAxNzoyNDo1MSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBWZXJzaW9uIDIuOC4wYjMuCgpXZWQgQXByIDEwIDE0OjM4OjA1IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVpbmZvaS5jYyAoYmFzZV9pbmZvKTogUGFjayB0aGUgbGF0dGVyIHRocmVlIGZpZWxkcyBpbnRvIDMyIGJpdHMuCgpUdWUgQXByICA5IDE1OjQ5OjM4IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVpbmZvaS5jYzogQWRkICdjb25zdCcuCgkoX19jbGFzc190eXBlX2luZm8pOiBOb3cganVzdCBvbmUgcG9pbnRlciB0byBhbiBhcnJheSBvZiBzdHJ1Y3RzLAoJcmF0aGVyIHRoYW4gZm91ciBwb2ludGVycyB0byBhcnJheXMuCgoJKiB0eXBlaW5mb2kuY2MgKF9fdGhyb3dfdHlwZV9tYXRjaF9ydHRpKTogQ2hlY2sgZm9yIGNvbnZlcnNpb24gdG8KCXZvaWQqIGJlZm9yZSBjb252ZXJzaW9uIHRvIGJhc2UqLgoJKGRjYXN0KTogSGFuZGxlIGRvd25jYXN0aW5nIHRvIFgqIGdpdmVuIG90aGVyIFgJc3Vib2JqZWN0cyBpbgoJdGhlIG1vc3QgZGVyaXZlZCB0eXBlLiAgQWNrLgoKTW9uIEFwciAgOCAxNToyMDozMiAxOTk2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW46IFBlcm1pdCAtLWVuYWJsZS1zaGFyZWQgdG8gc3BlY2lmeSBhIGxpc3Qgb2YKCWRpcmVjdG9yaWVzLgoKU3VuIEFwciAgNyAyMjo1MDo1MyAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlaW5mb2kuY2MgKF9fcnR0aV9hcnJheSk6IE5ldyBlbnRyeSBwb2ludC4KClNhdCBBcHIgIDYgMTQ6NDE6MTggMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZXhjZXB0aW9uaS5jYyAoX190aHJvd19iYWRfY2FzdCk6IE5ldyBlbnRyeSBwb2ludCBmb3IgY29tcGlsZXIuCgkqIHR5cGVpbmZvaS5jYzogUmVtb3ZlIF9fYmFkX2Nhc3Rfb2JqZWN0LgoKCSogdHlwZWluZm9pLmNjOiBBZGQgbm9kZXMgZm9yIHVuc2lnbmVkIGJ1aWx0aW5zLgoKRnJpIEFwciAgNSAxODoxNjoyMiAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlaW5mb2kuY2MsIHN0ZC90eXBlaW5mby5oOiBUb3RhbCBvdmVyaGF1bC4gIE1vdmUgbW9zdAogCWV2ZXJ5dGhpbmcgb3V0IG9mIHRoZSBoZWFkZXIsIG1vdmUgbmFtZSBmaWVsZCBpbnRvIHR5cGVfaW5mbywgYWRkCiAJc2luZ2xlLWluaGVyaXRhbmNlIGNhc2UsIHJld3JpdGUgcG9pbnRlciBoYW5kbGluZywgYWRkIG5ldwogCWNvbXBpbGVyIGludGVyZmFjZS4gIENvbXBhcmUgYWRkcmVzc2VzIHRvIGNoZWNrIGZvciBlcXVhbGl0eS4KCldlZCBNYXIgMjcgMTE6NTQ6MDggMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogVmVyc2lvbiAyLjguMGIyLgoKRnJpIE1hciAgOCAxMzo1NjoxOCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBzdGQvW2NzXWluc3QuaDogUmVtb3ZlLgoKVGh1IE1hciAgNyAwNzoyOTowMCAxOTk2ICBMZWUgSXZlcnNvbiAgPGxlZWlAQ2FuYWRhLkFJLlNSSS5DT00+CgoJKiBNYWtlZmlsZS5pbiAoaW5zdGFsbCk6IFJlc3RvcmUgZGVsZXRlZCBjaGRpciB0byBzdGwgc3ViZGlyLgoKVGh1IE1hciAgNyAxNTowMjo1OCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBzdGQvY29tcGxleHQuaDogRml4IF9fYXR0cmlidXRlX18gdXNhZ2UuCgpXZWQgRmViIDI4IDEwOjAwOjI0IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIFZlcnNpb24gMi44LjBiMS4KCk1vbiBGZWIgMjYgMTc6MjY6MjYgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogc3RkL2NzdHJpbmcuaDogTmV3IGFwcHJvYWNoIHRvIGNoYW5naW5nIHNpZ25hdHVyZXMgb2Ygc3RyaW5nCiAJbWFuaXB1bGF0aW9uIGZ1bmN0aW9ucy4gIFN0aWxsIGRpc2FibGVkLgoKVHVlIEZlYiAyMCAxODoyOTozMCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBzdGQvY29tcGxleHQuaCAoX19kb2FwbCwgX19kb2FtaSwgX19kb2FtbCwgX19kb2Fkdik6IEhlbHBlcgogCXRlbXBsYXRlcyB0byBpbXBsZW1lbnQgKz0sIC09LCAqPSBhbmQgLz0sIHJlc3BlY3RpdmVseSwgc2luY2UKIAltZW1iZXIgZnVuY3Rpb24gdGVtcGxhdGVzIGRvIG5vdCBhcHBseSB0byBjbGFzcyBzcGVjaWFsaXphdGlvbnMuCgkqIHN0ZC97ZixkLGxkfWNvbXBsZXguaCwgc3RkL2NvbXBsZXh0LmNjLCBjaW5zdC5jYzogQWRqdXN0LgoKCSogc3RkL2Jhc3RyaW5nLmg6IFRoZSByZXByZXNlbnRhdGlvbiBjbGFzcyBpcyBub3cgYSBuZXN0ZWQgY2xhc3MuCgkqIHN0ZC9iYXN0cmluZy5jYzogQWRkIHRlbXBsYXRlcyBmb3Igc3RhdGljIGRhdGEgbWVtYmVycy4KCSogc2luc3QuY2M6IERvbid0IHByb3ZpZGUgc3BlY2lhbGl6YXRpb25zIGZvciBzdGF0aWMgZGF0YSBtZW1iZXJzLgoJKiBzdGQvc3RyaW5nLmg6IFVzZSBkZWZhdWx0IHRlbXBsYXRlIHBhcmFtZXRlcnMuCgoJKiBNYWtlZmlsZS5pbiAoQ1hYRkxBR1MpOiBSZW1vdmUgLXBlZGFudGljIC1hbnNpLgoJKENGTEFHUyk6IERpdHRvLgoKV2VkIEZlYiAxNCAxNDozOTowNyAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBzdGQvYmFzdHJpbmcuY2MgKGNoZWNrX3JlYWxsb2MpOiBGaXggZm9yIHNpemVvZiAoY2hhclQpID4gMS4KCUZyb20gSm9obiBIaWNraW4gPGhpY2tpbkBibnIuY2E+LgoKV2VkIEphbiAxMCAxMTowNTowNCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBzdGQvYmFzdHJpbmcuaCAoaW5zZXJ0KTogRml4IGl0ZXJhdG9yIGhhbmRsaW5nLgoJRnJvbSBKb2UgQnVjayA8amJ1Y2tAc3lub3BzeXMuY29tPi4KCk1vbiBKYW4gIDggMTE6NDg6MDMgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogc3RkL2Jhc3RyaW5nLmggKG1heF9zaXplKTogRml4IGZvciBzaXplb2YgKGNoYXJUKSA+IDEuCgkqIHN0ZC9iYXN0cmluZy5jYyAocmVwbGFjZSk6IFVzZSBpdC4KCgkqIHN0ZC9iYXN0cmluZy5jYyAocmZpbmQpOiBGaXggZm9yIG4gPiBsZW5ndGggKCkuCgpUdWUgRGVjIDE5IDE1OjEzOjA4IDE5OTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9haXgubWwgKFNIRkxBR1MpOiBBZGQgLVdsLC11bml4LgoKTW9uIERlYyAxOCAxMjo0ODoyNSAxOTk1ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoZXhjZXB0aW9uaS5vKTogQ29tcGlsZSB3aXRoIC1maGFuZGxlLWV4Y2VwdGlvbnMsIHNvCgl3ZSBjYW4gdW53aW5kIHRocm91Z2ggdW5leHBlY3RlZCBvbiBtYWNoaW5lcyB0aGF0IGRvbid0IGhhdmUgYQoJd29ya2luZyBfX3Vud2luZF9mdW5jdGlvbi4KClN1biBEZWMgMTcgMDA6Mjg6MzEgMTk5NSAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW4gKGluc3RhbGwpOiBNYWtlIHN1cmUgc2hhcmVkIGxpYnJhcmllcwoJYXJlIGluc3RhbGxlZCB3aXRoIG1vZGUgNTU1LgoKTW9uIE5vdiAyNyAxNTowMTo1NiAxOTk1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoaW5zdGFsbCk6IE1ha2Ugc2hhcmVkIGxpYnJhcnkgbGlua3MgcmVsYXRpdmUuCgkoaW5zdGFsbCk6IEJyZWFrIHVwIC1zZiBpbnRvIC1zIC1mLgoJKHtNLH1TSExJTkspOiBEaXR0by4KClN1biBOb3YgMjYgMjI6NDg6MDYgMTk5NSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcXVldWU6IEluY2x1ZGUgPHN0YWNrLmg+IGluc3RlYWQgb2YgPHF1ZXVlLmg+LgoKU2F0IE5vdiAyNSAxMTozMzoxMyAxOTk1ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKGluc3RhbGwpOiBGaXggc2V0dGluZyBvZiByb290bWUuCgpUdWUgTm92IDIxIDE0OjIwOjM0IDE5OTUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogQ2hlY2sgJHt3aXRoX2Nyb3NzX2hvc3R9IHJhdGhlciB0aGFuIGNvbXBhcmluZwoJJHtob3N0fSBhbmQgJHt0YXJnZXR9LgoKVHVlIE5vdiAxNCAwMTo1MDo1MiAxOTk1ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKElPX0RJUik6IERlbGV0ZSBNVUxUSVRPUCwgTVVMVElTVUJESVIuCgkoTElCSUJFUlRZX0RJUik6IExpa2V3aXNlLgoJKElOU1RBTExESVIpOiBEZWxldGUgTVVMVElTVUJESVIuCgkqIGNvbmZpZ3VyZS5pbjogRGVsZXRlIGNhbGwgdG8gY2ZnLW1sLWNvbS5pbi4gIENhbGwgY29uZmlnLW1sLmluCglpbnN0ZWFkIG9mIGNmZy1tbC1wb3MuaW4uCgkoWENYWElOQ0xVREVTKTogRGVsZXRlIE1VTFRJVE9QLgoJKiBzdGwvY29uZmlndXJlLmluIChYQ1hYSU5DTFVERVMpOiBEZWxldGUgTVVMVElUT1AuCgkoY29uZmlnLW1sLmluKTogQ2FsbCBpbnN0ZWFkIG9mIGNmZy1tbC1wb3MuaW4uCgpTdW4gTm92IDEyIDE2OjQ0OjI1IDE5OTUgIFBlciBCb3RobmVyICA8Ym90aG5lckBrYWxlc3Npbi5jeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKFZFUlNJT04pOiAgU2V0IHRvIDIuNy4xLgoKVGh1IE5vdiAgOSAxNzozOToyOCAxOTk1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjb25maWcve2FpeCxkZWMtb3NmLGlyaXg1LGxpbnV4LHNvbDJzaG19Lm1sOiBSZW1vdmUgTERMSUJTIGRlZm47CiAJbm8gbG9uZ2VyIG5lZWRlZCBub3cgdGhhdCBtYWtlIGNoZWNrIHNldHMgTERfTElCUkFSWV9QQVRILgoKV2VkIE5vdiAgOCAxOTo0NjozNSAxOTk1ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgogICAgICAgICogc3RkL2Jhc3RyaW5nLmg6IFdyYXAgd2l0aCAjaWZuZGVmLyNkZWZpbmUvI2VuZGlmLgogICAgICAgICogc3RkL2Nhc3NlcnQuaDogTGlrZXdpc2UuCiAgICAgICAgKiBzdGQvY2luc3QuaDogTGlrZXdpc2UuCiAgICAgICAgKiBzdGQvY29tcGxleHQuaDogTGlrZXdpc2UuCiAgICAgICAgKiBzdGQvZGNvbXBsZXguaDogTGlrZXdpc2UuCiAgICAgICAgKiBzdGQvZmNvbXBsZXguaDogTGlrZXdpc2UuCiAgICAgICAgKiBzdGQvbGRjb21wbGV4Lmg6IExpa2V3aXNlLgogICAgICAgICogc3RkL3NpbnN0Lmg6IExpa2V3aXNlLgoKV2VkIE5vdiAgOCAxNjoxNTo0OCAxOTk1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBzdGQvYmFzdHJpbmcuY2MgKGdldGxpbmUpOiBVcGRhdGUgdG8gU2VwdGVtYmVyIDk1IFdQLiAgTm93IHdlCiAJZG9uJ3Qgc2V0IGZhaWxiaXQgd2hlbiByZWFkaW5nIGFuIGVtcHR5IGxpbmUuCgpUdWUgTm92ICA3IDE2OjA5OjA0IDE5OTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHN0ZC9iYXN0cmluZy5jYyAobmV3KTogRml4IGZvciBzaXplb2YgKGNoYXJUKSAhPSAxLgoKU2F0IE5vdiAgNCAxNzozNzoxNiAxOTk1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBzdGQvY29tcGxleHQuY2MgKG9wZXJhdG9yIC8gKEZMT0FULCBjb25zdCBjb21wbGV4PEZMT0FUPiYpKToKIAlSZWltcGxlbWVudCBhbG9uZyB0aGUgbGluZXMgb2YgdGhlIG90aGVyIG9wZXJhdG9yIC8gdGVtcGxhdGVzLgoJRnJvbSBKb2huIEVhdG9uIDxqd2VAYmV2by5jaGUud2lzYy5lZHU+LgoKU2F0IE5vdiAgNCAxMzozMzo1MCAxOTk1ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAa2FsZXNzaW4uY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiAoRElTVENMRUFOKTogIE5ldywgdG8gYWRkIHRhcmdldC1ta2ZyYWcuCgpUdWUgT2N0IDMxIDEzOjU5OjMyIDE5OTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHN0ZC9iYXN0cmluZy5oOiBVc2Ugc2l6ZV90IGZvciB0aGUgcmVmZXJlbmNlIGNvdW50LgoJKiBzdGQvYmFzdHJpbmcuY2MgKGNyZWF0ZSk6IFNldCBzZWxmaXNoLgoJRnJvbSBKb2UgQnVjayAoamJ1Y2tAc3lub3BzeXMuY29tKS4KCk1vbiBPY3QgMzAgMjM6MDk6NDggMTk5NSAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGthbGVzc2luLmN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW46ICBEb24ndCBib3RoZXIgY2hhbmdpbmcgTElCSUJFUlRZIGZvciBjcm9zcywKCW5vdyB0aGF0IHdlIGFyZSB1c2luZyB0YXJnZXQtbGliaWJlcnR5IGluc3RlYWQuCgkqIE1ha2VmaWxlLmluIChMSUJJQkVSVFlfRElSKTogIFNpbXBsaWZ5LgoJKExJQklCRVJUWSk6ICBSZW1vdmUuCgpXZWQgT2N0IDExIDE0OjU2OjQ5IDE5OTUgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9zb2wyc2htLm1sOiBOZXcgZmlsZXMgd2l0aCAtcnBhdGguCgkqIGNvbmZpZ3VyZSAoKi0qLXNvbGFyaXMqKTogVXNlIHNvbDJzaG0ubWwuCgpUaHUgU2VwIDI4IDA5OjI2OjUyIDE5OTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBwaHlkZWF1eC5jeWdudXMuY29tPgoKCSogc3RkL3N0cmFpdHMuaCAoY29tcGFyZSwgY29weSwgbW92ZSwgc2V0KTogRml4IGZvciBub24tY2hhciBjaGFyVCdzLgoJKiBzdGQvYmFzdHJpbmcuaCAoYmFzaWNfc3RyaW5nOjpyZW1vdmUpOiBGaXggZm9yIG5vbi1jaGFyIGNoYXJUJ3MuCgpUdWUgU2VwIDI2IDE1OjIyOjU2IDE5OTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBwaHlkZWF1eC5jeWdudXMuY29tPgoKCSogY29uZmlnL2lyaXg1Lm1sOiBQYXNzIC1ycGF0aCB0byBsaW5rcy4KCkZyaSBTZXAgMTUgMDA6MTc6NDcgMTk5NSAgSmFzb24gTWVycmlsbCAgPGphc29uQHBoeWRlYXV4LmN5Z251cy5jb20+CgoJKiBjb25maWcvbGludXgubWw6IENvbmZvcm0gdG8gTGludXggc2hhcmVkIGxpYnJhcnkgbnVtYmVyaW5nCiAJc2NoZW1lLgoJKiBNYWtlZmlsZS5pbjogRGl0dG8uCgpUdWUgU2VwIDEyIDAwOjI4OjU2IDE5OTUgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIHR5cGVpbmZvaS5jYzogKF9fcG9pbnRlcl90eXBlX2luZm86Ol9fcnR0aV9tYXRjaCk6IE1vdmVkIGZyb20KCXRoZSBoZWFkZXJmaWxlLCBpbmNsdWRlIGFsbCBzb3J0cyBvZiBwb2ludGVyIGNvbnZlcnNpb25zIGZyb20gMTUuMwoJcGFyYSAyLgoJKiBzdGQvdHlwZWluZm8uaCAoX19wb2ludGVyX3R5cGVfaW5mbzo6X19ydHRpX21hdGNoKTogTW92ZWQgZnJvbSBoZXJlLgoKTW9uIFNlcCAxMSAyMzoyNzo1OSAxOTk1ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBzdGQvdHlwZWluZm8uaCAoX19wb2ludGVyX3R5cGVfaW5mbzo6X19ydHRpX21hdGNoKTogV2Ugbm8gbG9uZ2VyCgloYXZlIHRvIGRlcmVmZXJlbmNlIHRoZSBvYmplY3QgcG9pbnRlciwgYXMgdGhlIHBvaW50ZXIgaXMgYWx3YXlzCglwYXNzZWQgZGlyZWN0bHkuCgpNb24gU2VwIDExIDE5OjI5OjUxIDE5OTUgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIHN0ZC90eXBlaW5mby5oIChfX3BvaW50ZXJfdHlwZV9pbmZvOjpfX3J0dGlfbWF0Y2gpOiBEZWZpbmUgc28KCXRoYXQgcG9pbnRlciBjb252ZXJzaW9ucyBjYW4gaGFwcGVuIG9uIGNhdGNoIHR5cGUgbWF0Y2hpbmcuCgkqIHR5cGVpbmZvaS5jYyAoX190aHJvd190eXBlX21hdGNoX3J0dGkpOiBBcnJhbmdlIGZvciBfX3J0dGlfbWF0Y2gKCXRvIGJlIHVzZWQgb24gcG9pbnRlcnMuCgpUdWUgU2VwICA1IDE0OjQ5OjE5IDE5OTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBwaHlkZWF1eC5jeWdudXMuY29tPgoKCSogc3RyaW5nLmg6IFJlbW92ZSBmb3Igbm93LgoKVGh1IEF1ZyAzMSAxNDoxNDowMSAxOTk1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcGh5ZGVhdXguY3lnbnVzLmNvbT4KCgkqIHN0ZC9iYXN0cmluZy5jYyAob3BlcmF0b3I+Pik6IFNpbXBsaWZ5IGFuZCBmaXguCgkocmVzaXplKTogRml4IG9yZGVyIG9mIGFyZ3VtZW50cyB0byBhcHBlbmQuCgkoZ2V0bGluZSk6IFNpbXBsaWZ5IGFuZCBmaXguCgpUaHUgQXVnIDI0IDE3OjQ0OjA5IDE5OTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBwaHlkZWF1eC5jeWdudXMuY29tPgoKCSogc3RkL2NzdGRsaWIuaCAoYWJzKTogUHJvdmlkZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGZvciBwZW9ucwogCXdpdGhvdXQgbGFicy4KClR1ZSBBdWcgMjIgMDg6NDM6MDcgMTk5NSAgSmFzb24gTWVycmlsbCAgPGphc29uQHBoeWRlYXV4LmN5Z251cy5jb20+CgoJKiBzdGQvY3N0ZGxpYi5oOiBDb21tZW50IG91dCBkZWZpbml0aW9uIG9mIGRpdihsb25nLGxvbmcpIGZvciBub3csCiAJc2luY2Ugbm90IGFsbCB0YXJnZXRzIGhhdmUgbGRpdi4KCk1vbiBBdWcgMjEgMTE6NDY6MDMgMTk5NSAgSmFzb24gTWVycmlsbCAgPGphc29uQHBoeWRlYXV4LmN5Z251cy5jb20+CgoJKiBzdGQvY21hdGguaDogV3JhcCBhYnMoZG91YmxlKSB3aXRoICNpZiAhIF9HX01BVEhfSF9JTkxJTkVTLgoKCSogc3RsLmg6IEFkZCwgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBPYmplY3RTcGFjZSBTVEwuCgoJKiBzdGQvY29tcGxleHQuY2MgKG9wZXJhdG9yIC8pOiBVc2UgYWJzIGluc3RlYWQgb2YgZmFicy4KCgkqIHN0ZC9iYXN0cmluZy5oIChyZXBsYWNlKTogVXBkYXRlIHNpbmdsZS1jaGFyYWN0ZXIgcmVwbGFjZSBtZXRob2QKIAlhcyBwZXIgbXkgcHJvcG9zYWwuCgoJKiBzdGQvY21hdGguaDogQWRkIGFicyhmbG9hdCksIGFicyhkb3VibGUpIGFuZCBhYnMobG9uZyBkb3VibGUpLgogIAlBZGQgY29tbWVudGVkLW91dCBkZWNsYXJhdGlvbnMgZm9yIG90aGVyIGZsb2F0IGFuZCBsb25nIGRvdWJsZQogCW1hdGggZnVuY3Rpb25zLgoKCSogc3RkL2NzdGRsaWIuaDogQWRkIGFicyhsb25nKSBhbmQgZGl2KGxvbmcsbG9uZykuCgoJKiBNYWtlZmlsZS5pbiAoaW5zdGFsbCk6IE1ha2Ugc2hhcmVkIGxpYnJhcnkgZXhlY3V0YWJsZSBhbmQKIAlub24td3JpdGFibGUuICBUaWR5LgoJKE9CSlMpOiBBZGQgY3N0ZGxpYmkubyBhbmQgY21hdGhpLm8uCgoJKiBSZW5hbWUgaW1wbGVtZW50YXRpb24gZmlsZXMgdG8gaGF2ZSBkaWZmZXJlbnQgYmFzZW5hbWVzLgoKTW9uIEF1ZyAyMSAwMDo1NzowMyAxOTk1ICBKZWZmcmV5IEEuIExhdyAgPGxhd0BydGwuY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChpbnN0YWxsKTogVXNlICJjZCBzdGwiOyBubyBuZWVkIGZvciAkKHNyY2RpcikKCXByZWZpeCBiZWNhdXNlIHdlJ3JlIGFscmVhZHkgaW4gJChzcmNkaXIpLgoKVHVlIEp1bCAyNSAxODo0MToyOSAxOTk1ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAa2FsZXNzaW4uY3lnbnVzLmNvbT4KCgkqIHN0ZC9zdGRkZWYuaDogIFJlbW92ZSBvYnNvbGV0ZSBkZWZpbml0aW9uIG9mIGVudW0gY2FwYWNpdHkuCgpTYXQgSnVsIDIyIDEzOjM3OjAxIDE5OTUgIERvdWcgRXZhbnMgIDxkamVAY2FudWNrLmN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoSU9fRElSKTogQWRkIG11bHRpbGliIHN1cHBvcnQuCgkoTElCSUJFUlRZLCBMSUJJQkVSVFlfT0JKUywgSU5TVEFMTERJUiwgc3RkbGlzdCk6IExpa2V3aXNlLgoJKGxpYmliZXJ0eS5hLCBpbnN0YWxsKTogTGlrZXdpc2UuCgkqIGNvbmZpZ3VyZS5pbjogTGlrZXdpc2UuCgkoWENYWElOQ0xVREVTKTogTGlrZXdpc2UuCgkqIHN0bC9jb25maWd1cmUuaW46IExpa2V3aXNlLgoJKFhDWFhJTkNMVURFUyk6IExpa2V3aXNlLgoKTW9uIEp1bCAxNyAwOToyOTozMSAxOTk1ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAodHlwZWluZm8ubywgc3RkZXhjZXB0Lm8pOiBQdXQgYW4gZWxzZSBmb3IgdGhlIGlmCglzdG10IGNoZWNraW5nIFBJQ0ZMQUcuCgkoc3RtcC1zdHJpbmcsIGJpZ3N0bXAtc3RyaW5nLCBzdG1wLWNvbXBsZXgsIGJpZ3N0bXAtY29tcGxleCk6IExpa2V3aXNlLgoKV2VkIEp1biAyOCAxNzowNToyOSAxOTk1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcGh5ZGVhdXguY3lnbnVzLmNvbT4KCgkqIHN0ZC8qLmg6IFdyYXAgd2l0aCBleHRlcm4gIkMrKyIuCgoJKiBzdGQvY2lzbzY0Ni5oOiBEb24ndCB3b3JyeSBhYm91dCAjdW5kZWZpbmcgdGhlIGtleXdvcmRzLgoKTW9uIEp1biAyNiAxOTowNTozOCAxOTk1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcGh5ZGVhdXguY3lnbnVzLmNvbT4KCgkqIHN0ZC9iYXN0cmluZy5oIChvcGVyYXRvciE9KTogSWYgdGhleSd2ZSBpbmNsdWRlZCB0aGUgU1RMCiAgICAgICAgZnVuY3Rpb24uaCwgZG9uJ3Qgb3ZlcmxvYWQgdGhlIG9wZXJhdG9yIHRlbXBsYXRlcyB0aGF0IGl0IGRlZmluZXMuCgpGcmkgSnVuIDIzIDE2OjU0OjE3IDE5OTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBwaHlkZWF1eC5jeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKFNITElOSyk6IEZvcmNlIGxpbmsuCgkoaW5zdGFsbCk6IERpdHRvLgoKCSogc3RkL2Jhc3RyaW5nLmggKHRlcm1pbmF0ZSk6IE5ldmVyIHJlYWxsb2NhdGUuCgkoYWxsb2MpOiBObyBsb25nZXIgY29uc3QuCgoJKiBzdGQvYmFzdHJpbmcuY2MgKGNyZWF0ZSk6IEFsd2F5cyBhbGxvY2F0ZSBhbiBleHRyYSBieXRlLgoJKGNoZWNrX3JlYWxsb2MpOiBBbHdheXMgbGVhdmUgcm9vbSBmb3IgYW4gZXh0cmEgYnl0ZS4KCSgqZmluZCopOiBBZGQgbWlzc2luZyAnY29uc3QnLgoKCSogTWFrZWZpbGUuaW4gKFNIQVJMSUIpOiBQcm92aWRlIGEgZGVmYXVsdCB2YWx1ZS4KClR1ZSBKdW4gMjAgMTY6Mjk6NTIgMTk5NSAgSmFzb24gTWVycmlsbCAgPGphc29uQHBoeWRlYXV4LmN5Z251cy5jb20+CgoJKiBzdGQvY3N0cmluZy5oOiBEb24ndCBib3RoZXIgdHdlYWtpbmcgcHJvdG90eXBlcyBmb3Igbm93LiAgV2hlbgogICAgICAgIHdlIGRvLCB3ZSB3aWxsIHVzZSBuZXctc3R5bGUgY2FzdHMuCgpGcmkgSnVuIDE2IDEzOjU3OjUzIDE5OTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBwaHlkZWF1eC5jeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKFZFUlNJT04pOiBVcGRhdGUgdG8gMi43LjAuCgoJKiBjb25maWcvYWl4Lm1sOiBCdWlsZCBib3RoIHNoYXJlZCBhbmQgYXJjaGl2ZSBsaWJyYXJpZXMuCgpXZWQgSnVuIDE0IDIxOjQ0OjIxIDE5OTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBweXRob24uY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiAoZnJhZ3MpOiBVc2UgbGludXgubWwgZm9yIExpbnV4L0VMRi4KCSogY29uZmlnL2xpbnV4Lm1sOiBOZXcgZmlsZS4KCldlZCBKdW4gMTQgMTc6NTY6MjMgMTk5NSAgTmljbGFzIEFuZGVyc3NvbiAgPG5pY2FuQGlkYS5saXUuc2U+CgoJKiBjb25maWd1cmUuaW46IFVzZSB4aWJlcnR5IHdoZW4gYnVpbGRpbmcgY3Jvc3MtY29tcGlsZXIuCgpXZWQgSnVuIDE0IDEyOjU3OjQ3IDE5OTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBwaHlkZWF1eC5jeWdudXMuY29tPgoKCSogc3RkLypjb21wbGV4Kiwgc3RkL2NpbnN0LmgsIGNpbnN0LmNjOiBQYXNzIGJ5IHJlZmVyZW5jZSB0byBjb25zdAogICAgICAgIHJhdGhlciB0aGFuIGJ5IHZhbHVlLgoJKiBzdGQvKmNvbXBsZXgqOiBBZGQgbWVtYmVyIGZ1bmN0aW9ucyByZWFsKCkgYW5kIGltYWcoKS4KClNhdCBKdW4gMTAgMTI6MTQ6MzggMTk5NSAgSmFzb24gTWVycmlsbCAgPGphc29uQHBoeWRlYXV4LmN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoYmlnc3RtcC1zdHJpbmcpOiBDYWxsIG1haW4gc3RyaW5nIG9iamVjdCBjc3RybWFpbi5vCiAgICAgICAgaW5zdGVhZCBvZiBjc3RyaW5nLm8uCgpXZWQgSnVuICA3IDExOjE1OjE1IDE5OTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBwaHlkZWF1eC5jeWdudXMuY29tPgoKCSogc3RkL2NzdHJpbmcuaDogVXNlICNpbmNsdWRlX25leHQgdG8gcGljayB1cCA8c3RyaW5nLmg+LgoKCSogc3RyaW5nLmg6IE5ldyBmaWxlLgoKCSogTWFrZWZpbGUuaW4gKE1PU1RMWUNMRUFOX0pVTkspOiBSZW1vdmUgcGljbGlzdC4KCgkqIGNvbmZpZ3VyZS5pbiAoTU9TVExZQ0xFQU4pOiBSZW1vdmUgc3RhbXAtcGljZGlyLgoKTW9uIEp1biAgNSAxODozNjozOSAxOTk1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcGh5ZGVhdXguY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy8qLm1sOiBCdWlsZCBib3RoIHNoYXJlZCBhbmQgYXJjaGl2ZSBsaWJyYXJpZXMuCgoJKiBjb25maWd1cmUuaW4gKE1PU1RMWUNMRUFOKTogUmVtb3ZlIHBpYy4KCShmcmFncyk6IFVzZSB0b3BsZXZlbCBwaWMgZnJhZ3MuCgoJKiBNYWtlZmlsZS5pbiAocGljbGlzdCk6IE5ldyBydWxlLgoJKFNITElCKTogVXNlIGl0LgoJKHN0bC5saXN0KTogUmVtb3ZlZC4KCSh0eXBlaW5mby5vKTogQWxzbyBidWlsZCBwaWMgdmVyc2lvbi4KCShzdGRleGNlcHQubyk6IERpdHRvLgoJKCpzdG1wLSopOiBEaXR0by4KClR1ZSBNYXkgMzAgMTI6MDE6MTQgMTk5NSAgSmFzb24gTWVycmlsbCAgPGphc29uQHBoeWRlYXV4LmN5Z251cy5jb20+CgoJKiBzdGQve2NvbXBsZXh0LHtmLGQsbGR9Y29tcGxleH0uaDogVG8gZGVjbGFyZSBzcGVjaWFsaXphdGlvbnMsCiAgICAgICAgdXNlIGZyaWVuZCBkZWNsYXJhdGlvbnMgaW4gdGhlIGNsYXNzIGJvZHkuLi4KCSogc3RkL2NpbnN0Lmg6IC4uLnJhdGhlciB0aGFuIG1hY3JvIGhhY2tlcnkuCgoJKiBNYWtlZmlsZS5pbiAoc3RkbGlzdCk6IFJlbmFtZWQgZnJvbSBsaXN0LgoKCSogY3N0ZGFyZzogRG9uJ3QgZGVmaW5lIF9fQ1NUREFSR19fLgoJKiBjb21wbGV4Lmg6IFNpbWlsYXJseS4KClR1ZSBNYXkgIDkgMTk6MzE6MjAgMTk5NSAgSmFzb24gTWVycmlsbCAgPGphc29uQHBoeWRlYXV4LmN5Z251cy5jb20+CgoJKiBzdGQvYmFzdHJpbmcuY2MgKG9wZXJhdG9yPj4pOiBVc2UgYW4gaW50IHRvIHN0b3JlIHRoZSByZXR1cm4gdmFsdWUKICAgICAgICBvZiBzdHJlYW1idWY6OnNidW1wYy4KCShnZXRsaW5lKTogRGl0dG8uCgkqIHN0ZC9iYXN0cmluZy4qIChyZXBsYWNlKTogUmV2ZXJzZSBzaXplX3QgYW5kIGNoYXJUIGFyZ3VtZW50cy4KCgkqIGNvbmZpZ3VyZS5pbiAoZW5hYmxlX3NoYXJlZCk6IFN1cHBvcnQgZW5hYmxlX3NoYXJlZCB1bmRlciBBSVguCgoJKiBNYWtlZmlsZS5pbiAoU0hBUkxJQik6IE5ldyB2YXJpYWJsZSBhbmQgcnVsZSBmb3IgYnVpbGRpbmcgYW4KICAgICAgICBhcmNoaXZlIGxpYnJhcnkgY29udGFpbmluZyBhIHNpbmdsZSBzaGFyZWQgb2JqZWN0IChmb3IgQUlYKS4KCk1vbiBNYXkgIDggMDE6NDM6MTkgMTk5NSAgSmFzb24gTWVycmlsbCAgPGphc29uQHBoeWRlYXV4LmN5Z251cy5jb20+CgoJKiBzdGQvYmFzdHJpbmcuaCAocmVtb3ZlKTogRm9yZ290IG9uZS4KCShlbXB0eSk6IEFuZCB0aGlzLgoJRGlzYWJsZSBjb3B5LW9uLXdyaXRlIGlmIHNvbWVvbmUgdGFrZXMgYW4gaXRlcmF0b3IuCgoJKiBzdGQvYmFzdHJpbmcuY2MgKGdldGxpbmUpOiBBdm9pZCByZXNpemluZyBkb3duIGlmIHVubmVjZXNzYXJ5LgoJKG9wZXJhdG9yPj4pOiBEb24ndCB1c2UgcHJpdmF0ZSBtZXRob2RzLgoKU3VuIE1heSAgNyAwMjozOTo1NiAxOTk1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcGh5ZGVhdXguY3lnbnVzLmNvbT4KCgkqIHN0ZC9iYXN0cmluZy5oIChpbnNlcnQsIHJlcGxhY2UpOiBGaXguCgkqIHN0ZC9iYXN0cmluZy5jYyAoZmluZF8qX29mKTogRml4LgoKRnJpIE1heSAgNSAwMTo0NToxMCAxOTk1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcGh5ZGVhdXguY3lnbnVzLmNvbT4KCgkqIHN0ZC9iYXN0cmluZy5oOiBBZGQgaXRlcmF0b3IgcmVtb3ZlIGZuLiAgUmVtb3ZlIGV2aWwgZGVmYXVsdAogICAgICAgIGFyZ3VtZW50cy4KCgkqIHN0ZC8qY29tcGxleCosIHN0ZC9jaW5zdC5oLCBjaW5zdC5jYzogcy9fX2NvbXBsZXgvY29tcGxleC9nLgogICAgICAgIGNvbXBsZXg8ZmxvYXQ+IGlzIG5vdyBzcGVjaWFsaXplZC4gIExvc2UgXypfY29tcGxleCBpbiBmYXZvciBvZgogICAgICAgICdleHBsaWNpdCcgY29uc3RydWN0b3JzLgoJKiBzdGQvY29tcGxleC5oOiBMb3NlIHR5cGVkZWYgb2YgY29tcGxleC4KCSogc3RkL2Zjb21wbGV4Lmg6IE5ldyBmaWxlLgoJKiBzdGQvY29tcGxleHQuY2MgKG9wZXJhdG9yPDwpOiBBY2NlcHQgbW9yZSBpbnB1dCBmb3Jtcy4KCgkqIHN0ZC9iYXN0cmluZy5oOiBBZGQgaXRlcmF0b3IgaW5zZXJ0IGZucy4KClRodSBNYXkgIDQgMDI6MzA6MDQgMTk5NSAgSmFzb24gTWVycmlsbCAgPGphc29uQHBoeWRlYXV4LmN5Z251cy5jb20+CgoJKiBzdGQvYmFzdHJpbmcuKjogVXBkYXRlIHRvIGN1cnJlbnQgZHJhZnQuCgoJKiBzdGQvYmFzdHJpbmcuKjogUmVvcmdhbml6ZSBzbyB0aGF0IHRoZSBwb2ludGVyIGluIGEgc3RyaW5nCiAgICAgICAgb2JqZWN0IHBvaW50cyB0byB0aGUgZGF0YSByYXRoZXIgdGhhbiB0aGUgYnNyZXAgb2JqZWN0LCBmb3IKICAgICAgICBkZWJ1Z2dpbmcuCgpUdWUgQXByIDI1IDE3OjE1OjA5IDE5OTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBwaHlkZWF1eC5jeWdudXMuY29tPgoKCSogY29uZmlndXJlLmluOiBVcGRhdGUgdG8gc3RheSBpbiBzeW5jIHdpdGggY29uZmlnLnNoYXJlZC4KCk1vbiBBcHIgMjQgMTM6MDg6NDYgMTk5NSAgSmFzb24gTWVycmlsbCAgPGphc29uQHBoeWRlYXV4LmN5Z251cy5jb20+CgoJKiBzdGQvY29tcGxleHQuaDogRGVjbGFyZSBoeXBvdC4gIERlY2xhcmUgYXBwcm9wcmlhdGUgZnVuY3Rpb25zIGNvbnN0LgoKV2VkIEFwciAxMiAxNToyNjoyNSAxOTk1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcGh5ZGVhdXguY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluICh0eXBlaW5mby5vKTogRG9uJ3QgdXNlICQ8LgoJKHN0ZGV4Y2VwdC5vKTogRGl0dG8uCgpTYXQgQXByICA4IDE1OjM1OjAwIDE5OTUgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIHN0ZC90eXBlaW5mby5oOiBNb3ZlIGJhZF9jYXN0LCBiYWRfdHlwZWlkIGFuZCBfX2JhZF9jYXN0X29iamVjdAoJZnJvbSBoZXJlIHRvIHN0ZGV4Y2VwdC4KCSogc3RkL3N0ZGV4Y2VwdC5oOiBEaXR0by4KCSogTWFrZWZpbGUuaW4gKHN0ZGV4Y2VwdC5vKTogQWRkZWQgcnVsZSB0byBidWlsZCB0eXBlaW5mby5vIHdpdGgKCS1mcnR0aSB0byBzdXBwb3J0IG1hdGNoaW5nIG9mIHRocm93biBvYmplY3RzIHdpdGggcnR0aSBpbmZvIGZvcgoJYmFkX2Nhc3QuCgpNb24gQXByICAzIDE4OjEzOjE0IDE5OTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBwaHlkZWF1eC5jeWdudXMuY29tPgoKCSogdHlwZWluZm86IE5ldyBmaWxlLgoKCSogTWFrZWZpbGUuaW4gKEhFQURFUlMpOiBBZGQgdHlwZWluZm8uCgpNb24gQXByICAzIDE1OjA2OjU4IDE5OTUgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluICh0eXBlaW5mby5vKTogQWRkZWQgcnVsZSB0byBidWlsZCB0eXBlaW5mby5vIHdpdGgKCS1mcnR0aSB0byBzdXBwb3J0IG1hdGNoaW5nIG9mIHRocm93biBvYmplY3RzIHdpdGggcnR0aSBpbmZvIGZvcgoJYmFkX2Nhc3QuCgpXZWQgTWFyIDI5IDE1OjU2OjA2IDE5OTUgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIHR5cGVpbmZvLmNjOiAoX190aHJvd190eXBlX21hdGNoX3J0dGkpOiBBZGRlZCB0byBzdXBwb3J0CgltYXRjaGluZyBvZiB0aHJvd24gb2JqZWN0cyB3aXRoIHJ0dGkgaW5mby4KClRodSBNYXIgMjMgMTg6NDI6MzAgMTk5NSAgSmFzb24gTWVycmlsbCAgPGphc29uQGRlbmViLmN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoSEVBREVSUyk6IEFkZCBzdGRleGNlcHQuCgpTdW4gTWFyIDEyIDAxOjI1OjI3IDE5OTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBwaHlkZWF1eC5jeWdudXMuY29tPgoKCSogc3RkL3R5cGVpbmZvLmg6IEFkZCByZXR1cm4gc3RhdGVtZW50cyB0byBkdW1teSBtZXRob2RzLgoKV2VkIE1hciAgOCAxNjowOTo1MCAxOTk1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcGh5ZGVhdXguY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9kZWMtb3NmLm1sOiBVc2UgLXJwYXRoIGZsYWcuCgpGcmkgRmViIDE3IDE4OjE2OjQ2IDE5OTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBwaHlkZWF1eC5jeWdudXMuY29tPgoKCSogc3RkL3R5cGVpbmZvLmg6IEFkZCBjb3B5cmlnaHQgaGVhZGVyLgoKCSogTWFrZWZpbGUuaW4gKENYWEZMQUdTKTogQWRkIGEgYnVuY2ggb2Ygd2FybmluZyBvcHRpb25zIHRvIGtlZXAKICAgICAgICBtZSBob25lc3QuCgpUaHUgRmViIDE2IDAwOjA0OjQ5IDE5OTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBwaHlkZWF1eC5jeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4sIGNvbmZpZy8qLm1sOiBHZW5lcmF0ZSBzaGFyZWQgbGlicmFyeSBvbiBtb3N0IGhvc3RzCglhcyBsaWJzdGRjKysuc28uJChWRVJTSU9OKSwgd2l0aCBhIHN5bWxpbmsgdG8gbGlic3RkYysrLnNvLCBzbyB0aGF0CgltdWx0aXBsZSB2ZXJzaW9ucyBjYW4gY29leGlzdC4KCkZyaSBGZWIgMTAgMDI6NTk6MzkgMTk5NSAgSmFzb24gTWVycmlsbCAgPGphc29uQHBoeWRlYXV4LmN5Z251cy5jb20+CgoJKiBzdGQvZXhjZXB0aW9uLmg6IHtzZXRfLH17dGVybWluYXRlLHVuZXhwZWN0ZWR9IGhhdmUgQysrIGxpbmthZ2UuCgoJKiBNYWtlZmlsZS5pbjogQWxsb3cgc3RyaW5nIGFuZCBjb21wbGV4IHRvIGJlIHNwbGl0IHVwIGVpdGhlciBieQogICAgICAgIGluZGl2aWR1YWwgZnVuY3Rpb24gb3IgaW50byBJL08gYW5kIG5vbi1JL08uICBEZWZhdWx0IHRvIHRoZQogICAgICAgIGxhdHRlci4KCldlZCBGZWIgIDggMDI6Mzk6NDcgMTk5NSAgSmFzb24gTWVycmlsbCAgPGphc29uQHBoeWRlYXV4LmN5Z251cy5jb20+CgoJKiBzdGQvYmFzdHJpbmcuaDogU3RhcnQgdGhpbmtpbmcgYWJvdXQgdGhyb3dpbmcgZXhjZXB0aW9ucy4KCgkqIHR5cGVpbmZvLmNjOiBSZW1vdmUgcHJpdmF0ZSBmdW5jdGlvbnM7IGRlZmluaW5nIHRoZW0gdG8gY2FsbAogICAgICAgIGFib3J0ICgpIGp1c3QgZGVsYXlzIGVycm9ycyB1bnRpbCBydW50aW1lLiAgRGVmaW5lCiAgICAgICAgX19iYWRfY2FzdF9vYmplY3QuCgoJKiBzdGQvZXhjZXB0aW9uLmg6IFN0YW5kYXJkIGV4Y2VwdGlvbnMgYXJlIG5vdyBkZWZpbmVkIGluCiAgICAgICAgc3RkZXhjZXB0LmguICBUaGlzIGhlYWRlciBub3cgY29udGFpbnMgZGVjbGFyYXRpb25zIG9mIHRlcm1pbmF0ZSgpCiAgICAgICAgZXQgYWwuCgkqIGV4Y2VwdGlvbi5jYzogTW92ZSBjb2RlIGZyb20gbGliZysrL3NyYy9leGNlcHQuYyBoZXJlLgoJKiBzdGQvdHlwZWluZm8uaDogRGVmaW5lIFJUVEktcmVsYXRlZCBleGNlcHRpb25zIGhlcmUuCgkqIHN0ZGV4Y2VwdHssLmNjfSxzdGQvc3RkZXhjZXB0Lmg6IE5ldyBmaWxlcy4KCk1vbiBGZWIgIDYgMTg6NTE6MzEgMTk5NSAgSmFzb24gTWVycmlsbCAgPGphc29uQHBoeWRlYXV4LmN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoSEVBREVSUyk6IFJlc3VycmVjdCwgYWRkIG5ldyBTVEwgaGVhZGVyIG5hbWVzLgoJKGluc3RhbGwpOiBJbnN0YWxsIGV4dGVuc2lvbmxlc3MgaGVhZGVycyBhZ2Fpbi4KCSogZXh0ZW5zaW9ubGVzcyBoZWFkZXJzOiBSZXN1cnJlY3QsIGFkZCBuZXcgU1RMIGhlYWRlcnMuCiAgICAgICAgQ3VycmVudGx5IG9ubHkgZm9yd2FyZCB0byBzdGQvd2hhdGV2ZXIgb3Igc3RsL3doYXRldmVyLgoKTW9uIEphbiAzMCAxMzo1MzoyMiAxOTk1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcGh5ZGVhdXguY3lnbnVzLmNvbT4KCgkqIHN0ZC9iYXN0cmluZy5oIChiYXNpY19zdHJpbmcgKGNoYXJULCBzaXplX3QpKTogTWFyayBleHBsaWNpdC4KCgkqIE1ha2VmaWxlLmluIChpbnN0YWxsKTogU2V0IHJvb3RtZSB3aGVuIGluc3RhbGxpbmcgc3RsIGhlYWRlcnMuCglPbmx5IGluc3RhbGwgKi4qIGZyb20gc3RkLgoKV2VkIEphbiAyNSAwMjoyOTozMCAxOTk1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcGh5ZGVhdXguY3lnbnVzLmNvbT4KCgkqIHN0ZC9iYXN0cmluZy5oIChvcGVyYXRvcj0pOiBncmFiIGJlZm9yZSByZWxlYXNpbmcuCgpNb24gSmFuIDIzIDE5OjU0OjAyIDE5OTUgIFJvbmFsZCBGLiBHdWlsbWV0dGUgIDxyZmdAc2VnZmF1bHQudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKGluc3RhbGwpOiBBbHNvIGluc3RhbGwgU1RMIGhlYWRlcnMuCgpNb24gSmFuIDIzIDA0OjA5OjM1IDE5OTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBweXRob24uY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChsaXN0KTogU2V0ICRyb290bWUgYmVmb3JlIGNhbGxpbmcgbWFrZS4KCldlZCBKYW4gMTEgMTk6MjQ6NDcgMTk5NSAgSmFzb24gTWVycmlsbCAgPGphc29uQHBoeWRlYXV4LmN5Z251cy5jb20+CgoJKiB0eXBlaW5mby5jYyAoX19ydHRpX21hdGNoKTogRG9uJ3QgdHJ5IHRvIGRvIHBvaW50ZXIgYXJpdGhtZXRpYwogICAgICAgIHdpdGggYSB2b2lkICouCgoJKiBtb3ZlIGFsbCBoZWFkZXJzIGludG8gc3RkIHN1YmRpcmVjdG9yeSBhbmQgdXBkYXRlIGZpbGVzIGFjY29yZGluZ2x5LgoKVGh1IEphbiAgNSAwMTo1MTo0OSAxOTk1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcGh5ZGVhdXguY3lnbnVzLmNvbT4KCgkqIGJhc3RyaW5nLmNjSSAoYmFzaWNfc3RyaW5nIChzaXplX3QsIGNhcGFjaXR5KSk6IHMvcmVzZXJ2ZS86OnJlc2VydmUvLgoKV2VkIEphbiAgNCAxNzoyNzozMiAxOTk1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcGh5ZGVhdXguY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdGlvbjogcy9zdHJpbmcvX19zdHJpbmcvZy4KCgkqIGNvbmZpZ3VyZS5pbiAoTU9TVExZQ0xFQU4pOiBBZGQgc29fbG9jYXRpb25zLgoKCSogYmFzdHJpbmcuY2NJIChiYXNpY19zdHJpbmcgKHNpemVfdCwgY2FwYWNpdHkpKTogRml4IHRoaW5rby4KCSh2YXJpb3VzIGZpbmQgZnVuY3Rpb25zKTogRGl0dG8uCgpGcmkgRGVjIDMwIDE4OjA0OjAwIDE5OTQgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIHR5cGVpbmZvLmg6IEFkZCBzdXBwb3J0IGZvciB0aGUgYnVpbHQtaW4gdHlwZSBib29sLgoKRnJpIERlYyAzMCAxNDo1NzowMiAxOTk0ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiB0eXBlaW5mby57Y2MsIGh9OiBHdWFyZCBhZ2FpbnN0IG11bHRpcGxlIGluY2x1c2lvbnMsIGFuZCBhZGQgI3AgaS9pLgoKRnJpIERlYyAgMiAxNzo1NjowNSAxOTk0ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBsaWJnKysgMi42LjIgcmVsZWFzZWQuCgoJKiB0eXBlaW5mby57Y2MsIGh9IChfX3J0dGlfbWF0Y2gpOiBDaGFuZ2UgaW50ZXJmYWNlIHRvIGNvbXBpbGVyCiAgICAgICAgZm9yIGR5bmFtaWNfY2FzdGluZyB0byBnZWFyIHVwIGZvciBleGNlcHRpb24gaGFuZGxpbmcncyB1c2Ugb2YKICAgICAgICBydHRpIGZvciBhcmd1bWVudCBtYXRjaGluZy4KClR1ZSBOb3YgMjkgMTY6NDk6MzIgMTk5NCAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGthbGVzc2luLmN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW4gKGNvbmZpZ2RpcnMpOiAgQWRkIHN0bC4KCSogTWFrZWZpbGUuaW46ICBCdWlsZCBzdGwsIGFuZCBtZXJnZSAubyBmaWxlcyBmcm9tIGl0LgoKVGh1IE5vdiAxNyAxNTozMDo1NyAxOTk0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcGh5ZGVhdXguY3lnbnVzLmNvbT4KCgkqIGJhc3RyaW5nLmhJOiBBZGQgaXRlcmF0b3IsIGNvbnN0X2l0ZXJhdG9yLCBiZWdpbigpIGFuZCBlbmQoKSB0bwogICAgICAgIGJhc2ljX3N0cmluZy4KCk1vbiBOb3YgIDcgMTY6NTA6MzMgMTk5NCAgSmFzb24gTWVycmlsbCAgPGphc29uQHBoeWRlYXV4LmN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiwgY29uZmlndXJlLmluLCBjb25maWcvKi5tbCwgdGVzdHMvTWFrZWZpbGUuaW4sCgl0ZXN0cy9jb25maWd1cmUuaW46IFZhcmlvdXMgY2hhbmdlcyB0byBoYW5kbGUgLS1lbmFibGUtc2hhcmVkLgoKRnJpIE5vdiAgNCAxOToxMzozMyAxOTk0ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBleGNlcHRpb257LC5jY306IEFkZGVkIHRvIHN1cHBvcnQgY2F0Y2hpbmcgYmFkX2Nhc3Qncy4KClRodSBOb3YgIDMgMTc6NDI6MTMgMTk5NCAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogdHlwZWluZm8uaCAodHlwZV9pbmZvOjp7bmFtZSwgYmVmb3JlfSk6IEFkZCB0byBtYXRjaCBkcmFmdC4KClRodSBOb3YgIDMgMDA6NTY6MzQgMTk5NCAgSmFzb24gTWVycmlsbCAgKGphc29uQHBoeWRlYXV4LmN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbiAoTElCSUJFUlRZX09CSlMpOiBBZGQgc3RyZXJyb3Iuby4KCk1vbiBPY3QgMzEgMTU6MzM6MDYgMTk5NCAgS3VuZyBIc3UgIChrdW5nQG1leGljYW4uY3lnbnVzLmNvbSkKCgkqIHR5cGVpbmZvLmNjOiBGaXggYSBidWcgaW4gdGhlIGZpbmFsIHJldHVybi4KCSogdHlwZWluZm8uY2M6IEZpeCB0aGUgQU5TSSBoZWFkZXIgdmVyc2lvbiBudW1iZXIuCgkqIHR5cGVpbmZvLmg6IGRpdHRvLgoKRnJpIE9jdCAyOCAxNDoyMzoxMiAxOTk0ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiB0eXBlX2luZm8ue2NjLGh9OiBSZW5hbWUgdG8gdHlwZWluZm8gdG8gYmV0dGVyIG1hdGNoIGN1cnJlbnQgZHJhZnQuCgpXZWQgT2N0IDI2IDExOjEzOjUzIDE5OTQgIEt1bmcgSHN1ICAoa3VuZ0BtZXhpY2FuLmN5Z251cy5jb20pCgoJKiB0eXBlX2luZm8uaDogbmV3IGhlYWRlciBmaWxlIGZvciBydHRpLgoJKiB0eXBlX2luZm8uY2M6IG5ldyBjb2RlIGZpbGUgZm9yIHJ0dGkuCgkqIE1ha2VmaWxlLmluOiBjaGFuZ2UgdG8gaW5jbHVkZSB0eXBlX2luZm8ubyBpbiBsaWJzdGRjKysgZm9yIHJ0dGkuCgpTYXQgT2N0IDE1IDE2OjA5OjUxIDE5OTQgIEphc29uIE1lcnJpbGwgIChqYXNvbkBwaHlkZWF1eC5jeWdudXMuY29tKQoKCSogbGliZysrIDIuNi4xIHJlbGVhc2VkLgoKCSogY2luc3QuaEk6IEFsc28gZGVjbGFyZSBpbnN0YW50aWF0aW9ucyBvZiBvdXQtb2YtbGluZSBmdW5jdGlvbnMuCgpGcmkgT2N0IDE0IDE1OjAwOjA5IDE5OTQgIEphc29uIE1lcnJpbGwgIChqYXNvbkBwaHlkZWF1eC5jeWdudXMuY29tKQoKCSogY29uZmlndXJlLmluIChDWFhJTkNMVURFUyk6IFVzZSB7fSB0byB3cmFwIHZhcmlhYmxlIG5hbWUuCgkqIHRlc3RzL2NvbmZpZ3VyZS5pbiAoQ1hYSU5DTFVERVMpOiBEaXR0by4KCgkqIGNpbnN0LmhJOiBEZWNsYXJlIGluc3RhbnRpYXRpb25zIG9mIHR3by1hcmd1bWVudCBmdW5jdGlvbnMgc28KICAgICAgICBvdmVybG9hZCByZXNvbHV0aW9uIHdpbGwgd29yay4KCSogY29tcGxleHQuaEk6IEFsd2F5cyBpbmNsdWRlIGNpbnN0LmhJLgoKCSogYmFzdHJpbmcuY2NJIChvcGVyYXRvcj4+KTogVHdlYWsuCgpUdWUgT2N0IDExIDE3OjA3OjQ5IDE5OTQgIEphc29uIE1lcnJpbGwgIChqYXNvbkBwaHlkZWF1eC5jeWdudXMuY29tKQoKCSogc3RkZGVmKjogRG8gdGhlICNwcmFnbWEgaS9pIHRoYW5nLgoKCSogYmFzdHJpbmcuaEkgKGJhc2ljX3N0cmluZzo6cHV0X2F0KTogVXNlIG9wZXJhdG9yW10uCgkoYmFzaWNfc3RyaW5nOjp0ZXJtaW5hdGUpOiBEb24ndCBuZWNlc3NhcmlseSBjb3B5IHRoZSByZXAuCgoJKiBiYXN0cmluZy5jY0kgKG9wZXJhdG9yPj4pOiBBdm9pZCBzaHJpbmtpbmcgYW5kIHRoZW4gcmUtZXhwYW5kaW5nCiAgICAgICAgdGhlIHN0cmluZy4KCgkqIGJhc3RyaW5nLipJLCBzaW5zdC5jYzogT25seSBhbGxvdyBhbGxvY2F0aW9uIHBvbGljeSBjb250cm9sIGlmCglfR19BTExPQ19DT05UUk9MIGlzIGRlZmluZWQuCgoJKiBNYWtlZmlsZS5pbiAobGlic3RkYysrLmEpOiBEZXBlbmQgb24gaW9zdHJlYW0ubGlzdCBhbmQgbGliaWJlcnR5LmEuCgkoLi4vbGliaW8vaW9zdHJlYW0ubGlzdCk6IE5ldyBydWxlLgoJKC4uL2xpYmliZXJ0eS9saWJpYmVydHkuYSk6IE5ldyBydWxlLgoJKE9CSlMpOiBBZGQgc3RkZGVmLm8uCgpTYXQgT2N0ICA4IDIzOjU5OjQ1IDE5OTQgIEphc29uIE1lcnJpbGwgKGphc29uQHBoeWRlYXV4LmN5Z251cy5jb20pCgoJKiAqOiBGaXJzdCBjaGVja2luLgo=