CiAgICAgICAgTkVXUyBmaWxlIGZvciBsaWJ4bWwyCgogIE5vdGUgdGhhdCB0aGlzIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gdGhlIG5ld3Mgd2VicGFnZSBhdDoKICAgICAgIGh0dHA6Ly94bWxzb2Z0Lm9yZy9uZXdzLmh0bWwKCgpDVlMgb25seSA6IGNoZWNrIHRoZSBDaGFuZ2Vsb2cgYXQgCmh0dHA6Ly9jdnMuZ25vbWUub3JnL2x4ci9zb3VyY2UvZ25vbWUteG1sL0NoYW5nZUxvZwogZmlsZQpmb3IgYSByZWFsbHkgYWNjdXJhdGUgZGVzY3JpcHRpb246Ckl0ZW1zIG5vdCBmaW5pc2hlZCBhbmQgd29ya2VkIG9uLCBnZXQgaW4gdG91Y2ggd2l0aCB0aGUgbGlzdCBpZiB5b3Ugd2FudAp0byB0ZXN0IHRob3NlICAgLSBNb3JlIHRlc3Rpbmcgb24gUmVsYXhORwogICAtIEZpbmlzaGluZyB1cCBYTUwKICBTY2hlbWFzCgoKMi42LjE6IE9jdCAyOCAyMDAzOgogICAtIE1vc3RseSBidWdmaXhlcyBhZnRlciB0aGUgYmlnIDIuNi4wIGNoYW5nZXMKICAgLSBVbml4IGNvbXBpbGF0aW9uIHBhdGNoZXM6IGxpYnhtbC5tNCAoUGF0cmljayBXZWxjaGUpLCB3YXJuaW5ncyBjbGVhbnVwCiAgICAoV2lsbGlhbSBCcmFjaykKICAgLSBXaW5kb3dzIGNvbXBpbGF0aW9uIHBhdGNoZXMgKEpvYWNoaW0gQmF1Y2gsIFN0ZXBoYW5lIEJpZG91bCwgSWdvcgogICAgWmxhdGtvdmljKQogICAtIHhtbFdyaXRlciBidWdmaXggKEFsZnJlZCBNaWNrYXV0c2NoKQogICAtIGNodmFsaWQuW2NoXTogY291cGxlIG9mIGZpeGVzIGZyb20gU3RlcGhhbmUgQmlkb3VsCiAgIC0gY29udGV4dCByZXNldDogZXJyb3Igc3RhdGUgcmVzZXQsIHB1c2ggcGFyc2VyIHJlc2V0IChHcmFoYW0gQmVuZXR0KQogICAtIGNvbnRleHQgcmV1c2U6IGdlbmVyYXRlIGVycm9ycyBpZiBmaWxlIGlzIG5vdCByZWFkYWJsZQogICAtIGRlZmF1bHRlZCBhdHRyaWJ1dGVzIGZvciBlbGVtZW50IGNvbWluZyBmcm9tIGludGVybmFsIGVudGl0aWVzCiAgICAoU3RlcGhhbmUgQmlkb3VsKQogICAtIFB5dGhvbjogdGFiIGFuZCBzcGFjZXMgbWl4IChXaWxsaWFtIEJyYWNrKQogICAtIEVycm9yIGhhbmRsZXIgY291bGQgY3Jhc2ggaW4gRFREIHZhbGlkYXRpb24gaW4gMi42LjAKICAgLSB4bWxSZWFkZXI6IGRvIG5vdCB1c2UgdGhlIGRvY3VtZW50IG9yIGVsZW1lbnQgX3ByaXZhdGUgZmllbGQKICAgLSB0ZXN0U0FYLmM6IGF2b2lkIGEgcHJvYmxlbSB3aXRoIHNvbWUgUElzIChNYXNzaW1vIE1vcmFyYSkKICAgLSBnZW5lcmFsIGJ1ZyBmaXhlczogbWFuZGF0b3J5IGVuY29kaW5nIGluIHRleHQgZGVjbCwgc2VyaWFsaXppbmcKICAgIERvY3VtZW50IEZyYWdtZW50IG5vZGVzLCB4bWxTZWFyY2hOcyAyLjYuMCBwcm9ibGVtIChLYXNpbWllciBCdWNoY2lrKSwKICAgIFhQYXRoIGVycm9ycyBub3QgcmVwb3J0ZWQsICBzbG93IEhUTUwgcGFyc2luZyBvZiBsYXJnZSBkb2N1bWVudHMuCgoKMi42LjA6IE9jdCAyMCAyMDAzOgogICAtIE1ham9yIHJldmlzaW9uIHJlbGVhc2U6IHNob3VsZCBiZSBBUEkgYW5kIEFCSSBjb21wYXRpYmxlIGJ1dCBnb3QgYSBsb3QKICAgIG9mIGNoYW5nZQogICAtIEluY3JlYXNlZCB0aGUgbGlicmFyeSBtb2R1bGFyaXR5LCBmYXIgbW9yZSBvcHRpb25zIGNhbiBiZSBzdHJpcHBlZCBvdXQsCiAgICBhIC0td2l0aC1taW5pbXVtIGNvbmZpZ3VyYXRpb24gd2lsbCB3ZWlnaHQgYXJvdW5kIDE2MEtCeXRlcwogICAtIFVzZSBwZXIgcGFyc2VyIGFuZCBwZXIgZG9jdW1lbnQgZGljdGlvbm5hcnksIGFsbG9jYXRlIG5hbWVzIGFuZCBzbWFsbAogICAgdGV4dCBub2RlcyBmcm9tIHRoZSBkaWN0aW9ubmFyeQogICAtIFN3aXRjaCB0byBhIFNBWDIgbGlrZSBwYXJzZXIgcmV3cm90ZSBtb3N0IG9mIHRoZSBYTUwgcGFyc2VyIGNvcmUsCiAgICBwcm92aWRlcyBuYW1lc3BhY2UgcmVzb2x1dGlvbiBhbmQgZGVmYXVsdGVkIGF0dHJpYnV0ZXMsIG1pbmltaXplIG1lbW9yeQogICAgYWxsb2NhdGlvbnMgYW5kIGNvcGllcywgbmFtZXNwYWNlIGNoZWNraW5nIGFuZCBzcGVjaWZpYyBlcnJvciBoYW5kbGluZywKICAgIGltbXV0YWJsZSBidWZmZXJzLCBtYWtlIHByZWRlZmluZWQgZW50aXRpZXMgc3RhdGljIHN0cnVjdHVyZXMsIGV0Yy4uLgogICAtIHJld3JvdGUgYWxsIHRoZSBlcnJvciBoYW5kbGluZyBpbiB0aGUgbGlicmFyeSwgYWxsIGVycm9ycyBjYW4gYmUKICAgIGludGVyY2VwdGVkIGF0IGEgc3RydWN0dXJlZCBsZXZlbCwgd2l0aCBwcmVjaXNlIGluZm9ybWF0aW9uCiAgYXZhaWxhYmxlLgogICAtIE5ldyBzaW1wbGVyIGFuZCBtb3JlIGdlbmVyaWMgWE1MIGFuZCBIVE1MIHBhcnNlciBBUElzLCBhbGxvd2luZyB0bwogICAgZWFzaWxseSBtb2RpZnkgdGhlIHBhcnNpbmcgb3B0aW9ucyBhbmQgcmV1c2UgcGFyc2VyIGNvbnRleHQgZm9yIG11bHRpcGxlCiAgICBjb25zZWN1dGl2ZSBkb2N1bWVudHMuCiAgIC0gU2ltaWxhciBuZXcgQVBJcyBmb3IgdGhlIHhtbFJlYWRlciwgZm9yIG9wdGlvbnMgYW5kIHJldXNlLCBwcm92aWRlZCBuZXcKICAgIGZ1bmN0aW9ucyB0byBhY2Nlc3MgY29udGVudCBhcyBjb25zdCBzdHJpbmdzLCB1c2UgdGhlbSBmb3IgUHl0aG9uCiAgYmluZGluZ3MKICAgLSBhICBsb3Qgb2Ygb3RoZXIgc21hbGxlciBBUEkgaW1wcm92ZW1lbnRzOiB4bWxTdHJQcmludGYgKEFsZWtzZXkgU2FuaW4pLAogICAgV2Fsa2VyIGkuZS4gcmVhZGVyIG9uIGEgZG9jdW1lbnQgdHJlZSBiYXNlZCBvbiBBbGZyZWQgTWlja2F1dHNjaCBjb2RlLAogICAgbWFrZSByb29tIGluIG5vZGVzIGZvciBsaW5lIG51bWJlcnMsIHJlZmVyZW5jZSBjb3VudGluZyBhbmQgZnV0dXJlIFBTVkkKICAgIGV4dGVuc2lvbnMsIGdlbmVyYXRpb24gb2YgY2hhcmFjdGVyIHJhbmdlcyB0byBiZSBjaGVja2VkIHdpdGggZmFzdGVyCiAgICBhbGdvcml0aG0gKFdpbGxpYW0pLCAgeG1sUGFyc2VyTWF4RGVwdGggKENydXRjaGVyIER1bm5hdmFudCksIGJ1ZmZlcgogICAgYWNjZXNzCiAgIC0gTmV3IHhtbFdyaXRlciBBUEkgcHJvdmlkZWQgYnkgQWxmcmVkIE1pY2thdXRzY2gKICAgLSBTY2hlbWFzOiBiYXNlNjQgc3VwcG9ydCBieSBBbnRob255IENhcnJpY28KICAgLSBQYXJzZXI8LT5IVFRQIGludGVncmF0aW9uIGZpeCwgcHJvcGVyIHByb2Nlc3Npbmcgb2YgdGhlIE1pbWUtVHlwZQogICAgYW5kIGNoYXJzZXQgaW5mb3JtYXRpb25zIGlmIGF2YWlsYWJsZS4KICAgLSBSZWxheC1ORzogYnVnIGZpeGVzIGluY2x1ZGluZyB0aGUgb25lIHJlcG9ydGVkIGJ5IE1hcnRpam4gRmFhc3NlbiBhbmQKICAgIHplcm9Pck1vcmUsIGJldHRlciBlcnJvciByZXBvcnRpbmcuCiAgIC0gUHl0aG9uIGJpbmRpbmdzIChTdOlwaGFuZSBCaWRvdWwpLCBuZXZlciB1c2Ugc3Rkb3V0IGZvciBlcnJvcnMKICBvdXRwdXQKICAgLSBQb3J0YWJpbGl0eTogYWxsIHRoZSBoZWFkZXJzIGhhdmUgbWFjcm9zIGZvciBleHBvcnQgYW5kIGNhbGxpbmcKICAgIGNvbnZlbnRpb24gZGVmaW5pdGlvbnMgKElnb3IgWmxhdGtvdmljKSwgVk1TIHVwZGF0ZSAoQ3JhaWcgQS4gQmVycnkpLAogICAgV2luZG93czogdGhyZWFkcyAoSmVzc2UgUGVsdG9uKSwgQm9ybGFuZCBjb21waWxlciAoRXJpYyBadXJjaGVyLCAgSWdvciksCiAgICBNaW5ndyAoSWdvciksIHR5cG9zIChNYXJrIFZha29jKSwgIGJldGEgdmVyc2lvbiAoU3RlcGhhbmUgQmlkb3VsKSwKICAgIHdhcm5pbmcgY2xlYW51cHMgb24gQUlYIGFuZCBNSVBTIGNvbXBpbGVycyAoV2lsbGlhbSBCcmFjayksIEJlT1MgKE1hcmNpbgogICAgJ1NoYXJkJyBLb25pY2tpKQogICAtIERvY3VtZW50YXRpb24gZml4ZXMgYW5kIFJFQURNRSAoV2lsbGlhbSBCcmFjayksIHNlYXJjaCBmaXggKFdpbGxpYW0pLAogICAgdHV0b3JpYWwgdXBkYXRlcyAoSm9obiBGbGVjayksIG5hbWVzcGFjZSBkb2NzIChTdGVmYW4gS29zdCkKICAgLSBCdWcgZml4ZXM6IHhtbENsZWFudXBQYXJzZXIgKERhdmUgQmVja2V0dCksIHRocmVhZGluZyB1bmluaXRpYWxpemVkCiAgICBtdXRleGVzLCBIVE1MIGRvY3R5cGUgbG93ZXJjYXNlLCAgU0FYL0lPIChXaWxsaWFtKSwgY29tcHJlc3Npb24gZGV0ZWN0aW9uCiAgICBhbmQgcmVzdG9yZSAoV2lsbGlhbSksIGF0dHJpYnV0ZSBkZWNsYXJhdGlvbiBpbiBEVERzIChXaWxsaWFtKSwgbmFtZXNwYWNlCiAgICBvbiBhdHRyaWJ1dGUgaW4gSFRNTCBvdXRwdXQgKFdpbGxpYW0pLCBpbnB1dCBmaWxlbmFtZSAoUm9iIFJpY2hhcmRzKSwKICAgIG5hbWVzcGFjZSBEVEQgdmFsaWRhdGlvbiwgeG1sUmVwbGFjZU5vZGUgKENocmlzIFJ5bGFuZCksIEkvTyBjYWxsYmFja3MKICAgIChNYXJrdXMgS2VpbSksIENEQVRBIHNlcmlhbGl6YXRpb24gKFNoYXVuIE1jQ2FuY2UpLCB4bWxSZWFkZXIgKFBldGVyCiAgICBEZXJyKSwgaGlnaCBjb2RlcG9pbnQgY2hhcnJlZiBsaWtlICYjeDEwRkZGRjssIGJ1ZmZlciBhY2Nlc3MgaW4gcHVzaAogICAgbW9kZSAoSnVzdGluIEZsZXRjaGVyKSwgVExTIHRocmVhZHMgb24gV2luZG93cyAoSmVzc2UgUGVsdG9uKSwgWFBhdGggYnVnCiAgICAoV2lsbGlhbSksIHhtbENsZWFudXBQYXJzZXIgKE1hcmMgTGl5YW5hZ2UpLCBDREFUQSBvdXRwdXQgKFdpbGxpYW0pLCBIVFRQCiAgICBlcnJvciBoYW5kbGluZy4KICAgLSB4bWxsaW50IG9wdGlvbnM6IC0tZHRkdmFsaWRmcGkgZm9yIFRvYmlhcyBSZWlmLCAtLXNheDEgZm9yIGNvbXBhdAogICAgdGVzdGluZywgIC0tbm9kaWN0IGZvciBidWlsZGluZyB3aXRob3V0IHRyZWUgZGljdGlvbm5hcnksIC0tbm9jZGF0YSB0bwogICAgcmVwbGFjZSBDREFUQSBieSB0ZXh0LCAtLW5zY2xlYW4gdG8gcmVtb3ZlIHN1cnBlcmZsdW91cyAgbmFtZXNwYWNlCiAgICBkZWNsYXJhdGlvbnMKICAgLSBhZGRlZCB4bWwyLWNvbmZpZyAtLWxpYnRvb2wtbGlicyBvcHRpb24gZnJvbSBLZXZpbiBQLiBGbGVtaW5nCiAgIC0gYSBsb3Qgb2YgcHJvZmlsaW5nIGFuZCB0dW5pbmcgb2YgdGhlIGNvZGUsIHNwZWVkdXAgcGF0Y2ggZm9yCiAgICB4bWxTZWFyY2hOcygpIGJ5IEx1Y2EgUGFkb3ZhbmkuIFRoZSB4bWxSZWFkZXIgc2hvdWxkIGRvIGZhciBsZXNzCiAgICBhbGxvY2F0aW9uIGFuZCBpdCBzcGVlZCBzaG91bGQgZ2V0IGNsb3NlciB0byBTQVguIENocmlzIEFuZGVyc29uIHdvcmtlZAogICAgb24gc3BlZWRpbmcgYW5kIGNsZWFuaW5nIHVwIHJlcGV0aXRpdmUgY2hlY2tpbmcgY29kZS4KICAgLSBjbGVhbnVwIG9mICJtYWtlIHRlc3RzIgogICAtIGxpYnhtbC0yLjAtdW5pbnN0YWxsZWQucGMgZnJvbSBNYWxjb2xtIFRyZWRpbm5pY2sKICAgLSBkZWFjdGl2YXRlZCB0aGUgYnJva2VuIGRvY0Jvb2sgU0dNTCBwYXJzZXIgY29kZSBhbmQgcGx1Z2dlZCB0aGUgWE1MCiAgICBwYXJzZXIgaW5zdGVhZC4KCgoyLjUuMTE6IFNlcCA5IDIwMDM6CkEgYnVnZml4IG9ubHkgcmVsZWFzZTogICAtIHJpc2sgb2YgY3Jhc2ggaW4gUmVsYXgtTkcKICAgLSByaXNrIG9mIGNyYXNoIHdoZW4gdXNpbmcgbXVsdGl0aHJlYWRlZCBwcm9ncmFtcwoKCjIuNS4xMDogQXVnIDE1IDIwMDM6CkEgYnVnZml4ZXMgb25seSByZWxlYXNlICAgLSBXaW5kb3dzIE1ha2VmaWxlcyAoV2lsbGlhbSBCcmFjaykKICAgLSBVVEYtMTYgc3VwcG9ydCBmaXhlcyAoTWFyayBJdHpjb3ZpdHopCiAgIC0gTWFrZWZpbGUgYW5kIHBvcnRhYmlsaXR5IChXaWxsaWFtIEJyYWNrKSBhdXRvbWFrZSwgTGludXggYWxwaGEsIE1pbmd3CiAgICBvbiBXaW5kb3dzIChNaWtoYWlsIEdydXNoaW5za2l5KQogICAtIEhUTUwgcGFyc2VyIChPbGl2ZXIgU3RvZW5lYmVyZykKICAgLSBYSW5jbHVkZSBwZXJmb3JtYW5jZSBwcm9ibGVtIHJlcG9ydGVkIGJ5IEtldmluIFJ1c2NvZQogICAtIFhNTCBwYXJzZXIgcGVyZm9ybWFuY2UgcHJvYmxlbSByZXBvcnRlZCBieSBHcmFudCBHb29kYWxlCiAgIC0geG1sU0FYUGFyc2VEVEQoKSBidWcgZml4IGZyb20gTWFsY29sbSBUcmVkaW5uaWNrCiAgIC0gYW5kIGEgY291cGxlIG90aGVyIGNsZWFudXAKCgoyLjUuOTogQXVnIDkgMjAwMzoKICAgLSBidWdmaXhlczogSVB2NiBwb3J0YWJpbGl0eSwgeG1sSGFzTnNQcm9wIChNYXJrdXMgS2VpbSksIFdpbmRvd3MgYnVpbGQKICAgIChXaWxpYW0gQnJha2UsIEplc3NlIFBlbHRvbiwgSWdvciksIFNjaGVtYXMgKFBldGVyIFNvYmlzY2gpLCB0aHJlYWRpbmcKICAgIChSb2IgUmljaGFyZHMpLCBoZXhCaW5hcnkgdHlwZSAoKSwgVVRGLTE2IEJPTSAoRG9kamkgU2VrZXRlbGkpLAogICAgeG1sUmVhZGVyLCBSZWxheC1ORyBzY2hlbWFzIGNvbXBpbGF0aW9uLCBuYW1lc3BhY2UgaGFuZGxpbmcsICBFWFNMVCAoU2VhbgogICAgR3JpZmZpbiksIEhUTUwgcGFyc2luZyBwcm9ibGVtIChXaWxsaWFtIEJyYWNrKSwgRFREIHZhbGlkYXRpb24gZm9yIG1peGVkCiAgICBjb250ZW50ICsgbmFtZXNwYWNlcywgSFRNTCBzZXJpYWxpemF0aW9uLCBsaWJyYXJ5IGluaXRpYWxpemF0aW9uLAogICAgcHJvZ3Jlc3NpdmUgSFRNTCBwYXJzZXIKICAgLSBiZXR0ZXIgaW50ZXJmYWNlcyBmb3IgUmVsYXgtTkcgZXJyb3IgaGFuZGxpbmcgKEpvYWNoaW0gQmF1Y2gsICkKICAgLSBhZGRpbmcgeG1sWEluY2x1ZGVQcm9jZXNzVHJlZSgpIGZvciBYSW5jbHVkJ2luZyBpbiBhIHN1YnRyZWUKICAgLSBkb2MgZml4ZXMgYW5kIGltcHJvdmVtZW50cyAoSm9obiBGbGVjaykKICAgLSBjb25maWd1cmUgZmxhZyBmb3IgLXdpdGgtZmV4Y2VwdGlvbnMgd2hlbiBlbWJlZGRpbmcgaW4gQysrCiAgIC0gY291cGxlIG9mIG5ldyBVVEYtOCBoZWxwZXIgZnVuY3Rpb25zIChXaWxsaWFtIEJyYWNrKQogICAtIGdlbmVyYWwgZW5jb2RpbmcgY2xlYW51cCArIElTTy04ODU5LXggd2l0aG91dCBpY29udiAoUGV0ZXIgSmFjb2JpKQogICAtIHhtbFRleHRSZWFkZXIgY2xlYW51cCArIGVudW0gZm9yIG5vZGUgdHlwZXMgKEJqb3JuIFJlZXNlKQogICAtIGdlbmVyYWwgY29tcGlsYXRpb24vd2FybmluZyBjbGVhbnVwIFNvbGFyaXMvSFAtVVgvLi4uIChXaWxsaWFtCiAgQnJhY2spCgoKMi41Ljg6IEp1bCA2IDIwMDM6CiAgIC0gYnVnZml4ZXM6IFhQYXRoLCBYSW5jbHVkZSwgZmlsZS9VUkkgbWFwcGluZywgVVRGLTE2IHNhdmUgKE1hcmsKICAgIEl0emNvdml0eiksIFVURi04IGNoZWNraW5nLCBVUkkgc2F2aW5nLCBlcnJvciBwcmludGluZyAoV2lsbGlhbSBCcmFjayksCiAgICBQSSByZWxhdGVkIG1lbWxlYWssIGNvbXBpbGF0aW9uIHdpdGhvdXQgc2NoZW1hcyBvciB3aXRob3V0IHhwYXRoIChKb2VyZwogICAgU2NobWl0ei1MaW5uZXdlYmVyL0dhcnJ5IFBlbm5pbmd0b24pLCB4bWxVbmxpbmtOb2RlIHByb2JsZW0gd2l0aCBEVERzLAogICAgcnBtIHByb2JsZW0gb24gLCBpODZfNjQsIHJlbW92ZWQgYSBmZXcgY29tcGlsYXRpb24gcHJvYmxlbXMgZnJvbSAyLjUuNywKICAgIHhtbElPUGFyc2VEVEQsIGFuZCB4bWxTQVhQYXJzZURURCAoTWFsY29sbSBUcmVkaW5uaWNrKQogICAtIHBvcnRhYmlsaXR5OiBESkdQUCAoTXNEb3MpICwgT3BlblZNUyAoQ3JhaWcgQS4gQmVycnkpCiAgIC0gV2lsbGlhbSBCcmFjayBmaXhlZCBtdWx0aXRocmVhZGluZyBsb2NrIHByb2JsZW1zCiAgIC0gSVB2NiBwYXRjaCBmb3IgRlRQIGFuZCBIVFRQIGFjY2Vzc2VzIChBcmNoYW5hIFNoYWgvV2lwcm8pCiAgIC0gV2luZG93cyBmaXhlcyAoSWdvciBabGF0a292aWMsICBFcmljIFp1cmNoZXIpLCB0aHJlYWRpbmcgKFN06XBoYW5lCiAgICBCaWRvdWwpCiAgIC0gQSBmZXcgVzNDIFNjaGVtYXMgU3RydWN0dXJlIGltcHJvdmVtZW50cwogICAtIFczQyBTY2hlbWFzIERhdGF0eXBlIGltcHJvdmVtZW50cyAoQ2hhcmxpZSBCb3plbWFuKQogICAtIFB5dGhvbiBiaW5kaW5ncyBmb3IgdGhyZWFkIGdsb2JhbHMgKFN06XBoYW5lIEJpZG91bCksIGFuZCBtZXRob2QvY2xhc3MKICAgIGdlbmVyYXRvcgogICAtIGFkZGVkIC0tbm9uZXQgb3B0aW9uIHRvIHhtbGxpbnQKICAgLSBkb2N1bWVudGF0aW9uIGltcHJvdmVtZW50cyAoSm9obiBGbGVjaykKCgoyLjUuNzogQXByIDI1IDIwMDM6CiAgIC0gUmVsYXgtTkc6IENvbXBpbGluZyB0byByZWdleHAgYW5kIHN0cmVhbWluZyB2YWxpZGF0aW9uIG9uIHRvcCBvZiB0aGUKICAgIHhtbFJlYWRlciBpbnRlcmZhY2UsIGFkZGVkIHRvIHhtbGxpbnQgLS1zdHJlYW0KICAgLSB4bWxSZWFkZXI6IEV4cGFuZCgpLCBOZXh0KCkgYW5kIERPTSBhY2Nlc3MgZ2x1ZSwgYnVnIGZpeGVzCiAgIC0gU3VwcG9ydCBmb3IgbGFyZ2UgZmlsZXM6IFJHTiB2YWxpZGF0ZWQgYSA0LjVHQiBpbnN0YW5jZQogICAtIFRocmVhZCBzdXBwb3J0IGlzIG5vdyBjb25maWd1cmVkIGluIGJ5IGRlZmF1bHQKICAgLSBGaXhlczogdXBkYXRlIG9mIHRoZSBUcmlvIGNvZGUgKEJqb3JuKSwgV1hTIERhdGUgYW5kIER1cmF0aW9uIGZpeGVzCiAgICAoQ2hhcmxlcyBCb3plbWFuKSwgRFREIGFuZCBuYW1lc3BhY2VzIChCcmVudCBIZW5kcmlja3MpLCBIVE1MIHB1c2ggcGFyc2VyCiAgICBhbmQgemVybyBieXRlcyBoYW5kbGluZywgc29tZSBtaXNzaW5nIFdpbmRvd3MgZmlsZSBwYXRoIGNvbnZlcnNpb25zLAogICAgYmVoYXZpb3VyIG9mIHRoZSBwYXJzZXIgYW5kIHZhbGlkYXRvciBpbiB0aGUgcHJlc2VuY2Ugb2YgIm91dCBvZiBtZW1vcnkiCiAgICBlcnJvciBjb25kaXRpb25zCiAgIC0gZXh0ZW5kZWQgdGhlIEFQSSB0byBiZSBhYmxlIHRvIHBsdWcgYSBnYXJiYWdlIGNvbGxlY3RpbmcgbWVtb3J5CiAgICBhbGxvY2F0b3IsIGFkZGVkIHhtbE1hbGxvY0F0b21pYygpIGFuZCBtb2RpZmllZCB0aGUgYWxsb2NhdGlvbnMKICAgIGFjY29yZGluZ2x5LgogICAtIFBlcmZvcm1hbmNlczogcmVtb3ZlZCBleGNlc3NpdmUgbWFsbG9jKCkgY2FsbHMsIHNwZWVkdXAgb2YgdGhlIHB1c2ggYW5kCiAgICB4bWxSZWFkZXIgaW50ZXJmYWNlcywgcmVtb3ZlZCBleGNlc3NpdmUgdGhyZWFkIGxvY2tpbmcKICAgLSBEb2N1bWVudGF0aW9uOiBtYW4gcGFnZSAoSm9obiBGbGVjayksIHhtbFJlYWRlciBkb2N1bWVudGF0aW9uCiAgIC0gUHl0aG9uOiBhZGRpbmcgYmluZGluZyBmb3IgeG1sQ2F0YWxvZ0FkZExvY2FsIChCcmVudCBNIEhlbmRyaWNrcykKCgoyLjUuNjogQXByIDEgMjAwMzoKICAgLSBGaXhlZCBXM0MgWE1MIFNjaGVtYXMgZGF0YXR5cGUsIHNob3VsZCBiZSBjb21wbGlhbnQgbm93IGV4Y2VwdCBmb3IKICAgIGJpbkhleCBhbmQgYmFzZTY0IHdoaWNoIGFyZSBub3Qgc3VwcG9ydGVkIHlldC4KICAgLSBidWcgZml4ZXM6IG5vbi1BU0NJSSBJRHMsIEhUTUwgb3V0cHV0LCBYSW5jbHVkZSBvbiBsYXJnZSBkb2NzIGFuZAogICAgWEluY2x1ZGUgZW50aXRpZXMgaGFuZGxpbmcsIGVuY29kaW5nIGRldGVjdGlvbiBvbiBleHRlcm5hbCBzdWJzZXRzLCBYTUwKICAgIFNjaGVtYXMgYnVncyBhbmQgbWVtb3J5IGxlYWtzLCBIVE1MIHBhcnNlciAoSmFtZXMgQnVyc2EpCiAgIC0gcG9ydGFiaWxpdHk6IHB5dGhvbi90cmlvIChBbGJlcnQgQ2hpbiksIFN1biBjb21waWxlciB3YXJuaW5ncwogICAtIGRvY3VtZW50YXRpb246IGFkZGVkIC0tcmVsYXhuZyBvcHRpb24gdG8geG1sbGludCBtYW4gcGFnZSAoSm9obikKICAgLSBpbXByb3ZlZCBlcnJvciByZXBvcnRpbmc6IHhtbDpzcGFjZSwgc3RhcnQvZW5kIHRhZyBtaXNtYXRjaGVzLCBSZWxheCBORwogICAgZXJyb3JzCgoKMi41LjU6IE1hciAyNCAyMDAzOgogICAtIExvdCBvZiBmaXhlcyBvbiB0aGUgUmVsYXggTkcgaW1wbGVtZW50YXRpb24uIE1vcmUgdGVzdGluZyBpbmNsdWRpbmcKICAgIERvY0Jvb2sgYW5kIFRFSSBleGFtcGxlcy4KICAgLSBJbmNyZWFzZWQgdGhlIHN1cHBvcnQgZm9yIFczQyBYTUwgU2NoZW1hcyBkYXRhdHlwZQogICAtIFNldmVyYWwgYnVnIGZpeGVzIGluIHRoZSBVUkkgaGFuZGxpbmcgbGF5ZXIKICAgLSBCdWcgZml4ZXM6IEhUTUwgcGFyc2VyLCB4bWxSZWFkZXIsIERURCB2YWxpZGF0aW9uLCBYUGF0aCwgZW5jb2RpbmcKICAgIGNvbnZlcnNpb24sIGxpbmUgY291bnRpbmcgaW4gdGhlIHBhcnNlci4KICAgLSBBZGRlZCBzdXBwb3J0IGZvciAkWE1MTElOVF9JTkRFTlQgZW52aXJvbm1lbnQgdmFyaWFibGUsIEZUUCBkZWxldGUKICAgLSBGaXhlZCB0aGUgUlBNIHNwZWMgZmlsZSBuYW1lCgoKMi41LjQ6IEZlYiAyMCAyMDAzOgogICAtIENvbmZvcm1hbmNlIHRlc3RpbmcgYW5kIGxvdCBvZiBmaXhlcyBvbiBSZWxheCBORyBhbmQgWEluY2x1ZGUKICAgIGltcGxlbWVudGF0aW9uCiAgIC0gSW1wbGVtZW50YXRpb24gb2YgWFBvaW50ZXIgZWxlbWVudCgpIHNjaGVtZQogICAtIEJ1ZyBmaXhlczogWE1MIHBhcnNlciwgWEluY2x1ZGUgZW50aXRpZXMgbWVyZ2UsIHZhbGlkaXR5IGNoZWNraW5nIG9uCiAgICBuYW1lc3BhY2VzLAogICAgMiBzZXJpYWxpemF0aW9uIGJ1Z3MsIG5vZGUgaW5mbyBnZW5lcmF0aW9uIHByb2JsZW1zLCBhIERURCByZWdleHAKICAgIGdlbmVyYXRpb24gcHJvYmxlbS4KICAKICAgLSBQb3J0YWJpbGl0eTogd2luZG93cyB1cGRhdGVzIGFuZCBwYXRoIGNhbm9uaWNhbGl6YXRpb24gKElnb3IpCiAgIC0gQSBmZXcgdHlwbyBmaXhlcyAoS2phcnRhbiBNYXJhYXMpCiAgIC0gUHl0aG9uIGJpbmRpbmdzIGdlbmVyYXRvciBmaXhlcyAoU3RlcGhhbmUgQmlkb3VsKQoKCjIuNS4zOiBGZWIgMTAgMjAwMzoKICAgLSBSZWxheE5HIGFuZCBYTUwgU2NoZW1hcyBkYXRhdHlwZXMgaW1wcm92ZW1lbnRzLCBhbmQgYWRkZWQgYSBmaXJzdAogICAgdmVyc2lvbiBvZiBSZWxheE5HIFB5dGhvbiBiaW5kaW5ncwogICAtIEZpeGVzOiBYTGluayAoU2VhbiBDaGl0dGVuZGVuKSwgWEluY2x1ZGUgKFNlYW4gQ2hpdHRlbmRlbiksIEFQSSBmaXggZm9yCiAgICBzZXJpYWxpemluZyBuYW1lc3BhY2Ugbm9kZXMsIGVuY29kaW5nIGNvbnZlcnNpb24gYnVnLCBYSFRNTDEKICBzZXJpYWxpemF0aW9uCiAgIC0gUG9ydGFiaWxpdHkgZml4ZXM6IFdpbmRvd3MgKElnb3IpLCBBTUQgNjRiaXRzIFJQTSBzcGVjIGZpbGUKCgoyLjUuMjogRmViIDUgMjAwMzoKICAgLSBGaXJzdCBpbXBsZW1lbnRhdGlvbiBvZiBSZWxheE5HLCBhZGRlZCAtLXJlbGF4bmcgZmxhZyB0byB4bWxsaW50CiAgIC0gU2NoZW1hcyBzdXBwb3J0IG5vdyBjb21waWxlZCBpbiBieSBkZWZhdWx0LgogICAtIEJ1ZyBmaXhlczogRFREIHZhbGlkYXRpb24sIG5hbWVzcGFjZSBjaGVja2luZywgWEluY2x1ZGUgYW5kIGVudGl0aWVzLAogICAgZGVsZWdhdGVVUkkgaW4gWE1MIENhdGFsb2dzLCBIVE1MIHBhcnNlciwgWE1MIHJlYWRlciAoU3TpcGhhbmUgQmlkb3VsKSwKICAgIFhQYXRoIHBhcnNlciBhbmQgZXZhbHVhdGlvbiwgIFVURjhUb1VURjggc2VyaWFsaXphdGlvbiwgWE1MIHJlYWRlciBtZW1vcnkKICAgIGNvbnN1bXB0aW9uLCBIVE1MIHBhcnNlciwgSFRNTCBzZXJpYWxpemF0aW9uIGluIHRoZSBwcmVzZW5jZSBvZgogIG5hbWVzcGFjZXMKICAgLSBhZGRlZCBhbiBIVE1MIEFQSSB0byBjaGVjayBlbGVtZW50cyBhbmQgYXR0cmlidXRlcy4KICAgLSBEb2N1bWVudGF0aW9uIGltcHJvdmVtZW50LCBQREYgZm9yIHRoZSB0dXRvcmlhbCAoSm9obiBGbGVjayksIGRvYwogICAgcGF0Y2hlcyAoU3RlZmFuIEtvc3QpCiAgIC0gUG9ydGFiaWxpdHkgZml4ZXM6IE5ldEJTRCAoSnVsaW8gTWVyaW5vKSwgV2luZG93cyAoSWdvciBabGF0a292aWMpCiAgIC0gQWRkZWQgcHl0aG9uIGJpbmRpbmdzIGZvciBYUG9pbnRlciwgY29udGV4dHVhbCBlcnJvciByZXBvcnRpbmcKICAgIChTdOlwaGFuZSBCaWRvdWwpCiAgIC0gVVJJL2ZpbGUgZXNjYXBpbmcgcHJvYmxlbXMgKFN0ZWZhbm8gWmFjY2hpcm9saSkKCgoyLjUuMTogSmFuIDggMjAwMzoKICAgLSBGaXhlcyBhIG1lbW9yeSBsZWFrIGFuZCBjb25maWd1cmF0aW9uL2NvbXBpbGF0aW9uIHByb2JsZW1zIGluIDIuNS4wCiAgIC0gZG9jdW1lbnRhdGlvbiB1cGRhdGVzIChKb2huKQogICAtIGEgY291cGxlIG9mIFhtbFRleHRSZWFkZXIgZml4ZXMKCgoyLjUuMDogSmFuIDYgMjAwMzoKICAgLSBOZXcgWG1sdGV4dFJlYWRlciBpbnRlcmZhY2UgYmFzZWQgb24gQyMKICAgIEFQSSAod2l0aCBoZWxwIG9mIFN06XBoYW5lIEJpZG91bCkKICAgLSBXaW5kb3dzOiBtb3JlIGV4cG9ydHMsIGluY2x1ZGluZyB0aGUgbmV3IEFQSSAoSWdvcikKICAgLSBYSW5jbHVkZSBmYWxsYmFjayBmaXgKICAgLSBQeXRob246IGJpbmRpbmdzIGZvciB0aGUgbmV3IEFQSSwgcGFja2FnaW5nIChTdOlwaGFuZSBCaWRvdWwpLAogICAgZHJ2X2xpYnhtbDIucHkgUHl0aG9uIHhtbC5zYXggZHJpdmVyIChTdOlwaGFuZSBCaWRvdWwpLCBmaXhlcywgc3BlZWR1cAogICAgYW5kIGl0ZXJhdG9ycyBmb3IgUHl0aG9uLTIuMiAoSGFubnUgS3Jvc2luZykKICAgLSBUdXRvcmlhbCBmaXhlcyAoam9obiBGbGVjayBhbmQgTmlyYWogVG9saWEpIHhtbGxpbnQgbWFuIHVwZGF0ZQogIChKb2huKQogICAtIEZpeCBhbiBYTUwgcGFyc2VyIGJ1ZyByYWlzZWQgYnkgVnlhY2hlc2xhdiBQaW5keXVyYQogICAtIEZpeCBmb3IgVk1TIHNlcmlhbGl6YXRpb24gKE5pZ2VsIEhhbGwpIGFuZCBjb25maWcgKENyYWlnIEEuIEJlcnJ5KQogICAtIEVudGl0aWVzIGhhbmRsaW5nIGZpeGVzCiAgIC0gbmV3IEFQSSB0byBvcHRpb25hbGx5IHRyYWNrIG5vZGUgY3JlYXRpb24gYW5kIGRlbGV0aW9uIChMdWthcwogIFNjaHJvZWRlcikKICAgLSBBZGRlZCBkb2N1bWVudGF0aW9uIGZvciB0aGUgWG1sdGV4dFJlYWRlciBpbnRlcmZhY2UgYW5kIHNvbWUgWE1MIGd1aWRlbGluZXMKCgoyLjQuMzA6IERlYyAxMiAyMDAyOgogICAtIDIuNC4yOSBicm9rZSB0aGUgcHl0aG9uIGJpbmRpbmdzLCByZXJlbGVhc2luZwogICAtIEltcHJvdmVtZW50L2ZpeGVzIG9mIHRoZSBYTUwgQVBJIGdlbmVyYXRvciwgYW5kIGNvdXBsZSBvZiBtaW5vciBjb2RlCiAgICBmaXhlcy4KCgoyLjQuMjk6IERlYyAxMSAyMDAyOgogICAtIFdpbmRvd3MgZml4ZXMgKElnb3IpOiBXaW5kb3dzIENFIHBvcnQsIHB0aHJlYWQgbGlua2luZywgcHl0aG9uIGJpbmRpbmdzCiAgICAoU3TpcGhhbmUgQmlkb3VsKSwgTWluZ3cgKE1hZ251cyBIZW5vY2gpLCBhbmQgZXhwb3J0IGxpc3QgdXBkYXRlcwogICAtIEZpeCBmb3IgcHJldiBpbiBweXRob24gYmluZGluZ3MgKEVSREkgR2VyZ28pCiAgIC0gRml4IGZvciBlbnRpdGllcyBoYW5kbGluZyAoTWFyY3VzIENsYXJrZSkKICAgLSBSZWZhY3RvcmVkIHRoZSBYTUwgYW5kIEhUTUwgZHVtcHMgdG8gYSBzaW5nbGUgY29kZSBwYXRoLCBmaXhlZCBYSFRNTDEKICAgIGR1bXAKICAgLSBGaXggZm9yIFVSSSBwYXJzaW5nIHdoZW4gaGFuZGxpbmcgVVJOcyB3aXRoIGZyYWdtZW50IGlkZW50aWZpZXJzCiAgIC0gRml4IGZvciBIVFRQIFVSTCBlc2NhcGluZyBwcm9ibGVtCiAgIC0gYWRkZWQgYW4gVGV4dFhtbFJlYWRlciAoQyMpIGxpa2UgQVBJICh3b3JrIGluIHByb2dyZXNzKQogICAtIFJld3JvdGUgdGhlIEFQSSBpbiBYTUwgZ2VuZXJhdGlvbiBzY3JpcHQsIGluY2x1ZGVzIGEgQyBwYXJzZXIgYW5kIHNhdmVzCiAgICBtb3JlIGluZm9ybWF0aW9ucyBuZWVkZWQgZm9yIEMjIGJpbmRpbmdzCgoKMi40LjI4OiBOb3YgMjIgMjAwMjoKICAgLSBhIGNvdXBsZSBvZiBweXRob24gYmluZGluZyBmaXhlcwogICAtIDIgYnVnIGZpeGVzIGluIHRoZSBYTUwgcHVzaCBwYXJzZXIKICAgLSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsgcmVtb3ZlZCAoTWFydGluIFN0b2lsb3YpCiAgIC0gZml4IHRvIHRoZSBjb25maWd1cmUgc2NyaXB0IGZvciBVbml4IChEaW1pdHJpIFBhcGFkb3BvdWxvcykKICAgLSBhZGRlZCBlbmNvZGluZyBzdXBwb3J0IGZvciBYSW5jbHVkZSBwYXJzZT0idGV4dCIKICAgLSBhdXRvZGV0ZWN0aW9uIG9mIFhIVE1MMSBhbmQgc3BlY2lmaWMgc2VyaWFsaXphdGlvbiBydWxlcyBhZGRlZAogICAtIG5hc3R5IHRocmVhZGluZyBidWcgZml4ZWQgKFdpbGxpYW0gQnJhY2spCgoKMi40LjI3OiBOb3YgMTcgMjAwMjoKICAgLSBmaXhlcyBmb3IgdGhlIFB5dGhvbiBiaW5kaW5ncwogICAtIGEgbnVtYmVyIG9mIGJ1ZyBmaXhlczogU0dNTCBjYXRhbG9ncywgeG1sUGFyc2VCYWxhbmNlZENodW5rTWVtb3J5KCksCiAgICBIVE1MIHBhcnNlciwgIFNjaGVtYXMgKENoYXJsZXMgQm96ZW1hbiksIGRvY3VtZW50IGZyYWdtZW50IHN1cHBvcnQKICAgIChDaHJpc3RpYW4gR2xhaG4pLCB4bWxSZWNvbmNpbGlhdGVOcyAoQnJpYW4gU3RhZmZvcmQpLCBYUG9pbnRlciwKICAgIHhtbEZyZWVOb2RlKCksIHhtbFNBWFBhcnNlTWVtb3J5IChQZXRlciBKb25lcyksIHhtbEdldE5vZGVQYXRoIChQZXRyCiAgICBQYWphcyksIGVudGl0aWVzIHByb2Nlc3NpbmcKICAgLSBhZGRlZCBncmVwIHRvIHhtbGxpbnQgLS1zaGVsbAogICAtIFZNUyB1cGRhdGUgcGF0Y2ggZnJvbSBDcmFpZyBBLiBCZXJyeQogICAtIGNsZWFudXAgb2YgdGhlIFdpbmRvd3MgYnVpbGQgd2l0aCBzdXBwb3J0IGZvciBtb3JlIGNvbXBpbGVycyAoSWdvciksCiAgICBiZXR0ZXIgdGhyZWFkIHN1cHBvcnQgb24gV2luZG93cwogICAtIGNsZWFudXAgb2YgVW5peCBNYWtlZmlsZXMgYW5kIHNwZWMgZmlsZQogICAtIEltcHJvdmVtZW50cyB0byB0aGUgZG9jdW1lbnRhdGlvbiAoSm9obiBGbGVjaykKCgoyLjQuMjY6IE9jdCAxOCAyMDAyOgogICAtIFBhdGNoZXMgZm9yIFdpbmRvd3MgQ0UgcG9ydCwgaW1wcm92ZW1lbnRzIG9uIFdpbmRvd3MgcGF0aHMgaGFuZGxpbmcKICAgLSBGaXhlcyB0byB0aGUgdmFsaWRhdGlvbiAgY29kZSAoRFREIGFuZCBTY2hlbWFzKSwgeG1sTm9kZUdldFBhdGgoKSAsCiAgICBIVE1MIHNlcmlhbGl6YXRpb24sIE5hbWVzcGFjZSBjb21wbGlhbmNlLCAgYW5kIGEgbnVtYmVyIG9mIHNtYWxsCiAgcHJvYmxlbXMKCgoyLjQuMjU6IFNlcCAyNiAyMDAyOgogICAtIEEgbnVtYmVyIG9mIGJ1ZyBmaXhlczogWFBhdGgsIHZhbGlkYXRpb24sIFB5dGhvbiBiaW5kaW5ncywgRE9NIGFuZAogICAgdHJlZSwgeG1sSS9PLCAgSHRtbAogICAtIFNlcmlvdXMgcmV3cml0ZSBvZiBYSW5jbHVkZQogICAtIE1hZGUgWE1MIFNjaGVtYXMgcmVnZXhwIHBhcnQgb2YgdGhlIGRlZmF1bHQgYnVpbGQgYW5kIEFQSXMsIHNtYWxsIGZpeAogICAgYW5kIGltcHJvdmVtZW50IG9mIHRoZSByZWdleHAgY29yZQogICAtIENoYW5nZWQgdGhlIHZhbGlkYXRpb24gY29kZSB0byByZXVzZSBYTUwgU2NoZW1hcyByZWdleHAgQVBJcwogICAtIEJldHRlciBoYW5kbGluZyBvZiBXaW5kb3dzIGZpbGUgcGF0aHMsIGltcHJvdmVtZW50IG9mIE1ha2VmaWxlcyAoSWdvciwKICAgIERhbmllbCBHZWhyaWdlciwgTWFyayBWYWtvYykKICAgLSBJbXByb3ZlZCB0aGUgcHl0aG9uIEkvTyBiaW5kaW5ncywgdGhlIHRlc3RzLCBhZGRlZCByZXNvbHZlciBhbmQgcmVnZXhwCiAgICBBUElzCiAgIC0gTmV3IGxvZ29zIGZyb20gTWFyYyBMaXlhbmFnZQogICAtIFR1dG9yaWFsIGltcHJvdmVtZW50czogSm9obiBGbGVjaywgQ2hyaXN0b3BoZXIgSGFycmlzCiAgIC0gTWFrZWZpbGU6IEZpeGVzIGZvciBBTUQgeDg2XzY0IChNYW5kcmFrZSksIERFU1RESVIgKENocmlzdG9waGUKICBNZXJsZXQpCiAgIC0gcmVtb3ZhbCBvZiBhbGwgc3RkZXJyL3BlcnJvciB1c2UgZm9yIGVycm9yIHJlcG9ydGluZwogICAtIEJldHRlciBlcnJvciByZXBvcnRpbmc6IFhQYXRoIGFuZCBEVEQgdmFsaWRhdGlvbgogICAtIHVwZGF0ZSBvZiB0aGUgdHJpbyBwb3J0YWJpbGl0eSBsYXllciAoQmpvcm4gUmVlc2UpCgoyLjQuMjQ6IEF1ZyAyMiAyMDAyICAgLSBYUGF0aCBmaXhlcyAoV2lsbGlhbSksIHhmOmVzY2FwZS11cmkoKSAoV2VzbGV5IFRlcnBzdHJhKQogICAtIFB5dGhvbiBiaW5kaW5nIGZpeGVzOiBtYWtlZmlsZXMgKFdpbGxpYW0pLCBnZW5lcmF0b3IsIHJwbSBidWlsZCwgeDg2LTY0CiAgICAoZmNyb3phdCkKICAgLSBIVE1MIDxzdHlsZT4gYW5kIGJvb2xlYW4gYXR0cmlidXRlcyBzZXJpYWxpemVyIGZpeGVzCiAgIC0gQzE0TiBpbXByb3ZlbWVudHMgYnkgQWxla3NleQogICAtIGRvYyBjbGVhbnVwczogUmljayBKb25lcwogICAtIFdpbmRvd3MgY29tcGlsZXIgbWFrZWZpbGUgdXBkYXRlczogSWdvciBhbmQgRWxpemFiZXRoIEJhcmhhbQogICAtIFhJbmNsdWRlOiBpbXBsZW1lbnRhdGlvbiBvZiBmYWxsYmFjayBhbmQgeG1sOmJhc2UgZml4dXAgYWRkZWQKCgoyLjQuMjM6IEp1bHkgNiAyMDAyOgogICAtIHBlcmZvcm1hbmNlcyBwYXRjaGVzOiBQZXRlciBKYWNvYmkKICAgLSBjMTRuIGZpeGVzLCB0ZXN0c3VpdGUgYW5kIHBlcmZvcm1hbmNlczogQWxla3NleSBTYW5pbgogICAtIGFkZGVkIHhtbERvY0Zvcm1hdER1bXA6IENoZW1hIENlbG9yaW8KICAgLSBuZXcgdHV0b3JpYWw6IEpvaG4gRmxlY2sKICAgLSBuZXcgaGFzaCBmdW5jdGlvbnMgYW5kIHBlcmZvcm1hbmNlczogU2FuZGVyIFZlc2lrLCBwb3J0YWJpbGl0eSBmaXggZnJvbQogICAgUGV0ZXIgSmFjb2JpCiAgIC0gYSBudW1iZXIgb2YgYnVnIGZpeGVzOiBYUGF0aCAoV2lsbGlhbSBCcmFjaywgUmljaGFyZCBKaW5rcyksIFhNTCBhbmQKICAgIEhUTUwgcGFyc2VycywgSUQgbG9va3VwIGZ1bmN0aW9uCiAgIC0gcmVtb3ZhbCBvZiBhbGwgcmVtYWluaW5nIHNwcmludGY6IEFsZWtzZXkgU2FuaW4KCgoyLjQuMjI6IE1heSAyNyAyMDAyOgogICAtIGEgbnVtYmVyIG9mIGJ1ZyBmaXhlczogY29uZmlndXJlIHNjcmlwdHMsIGJhc2UgaGFuZGxpbmcsIHBhcnNlciwgbWVtb3J5CiAgICB1c2FnZSwgSFRNTCBwYXJzZXIsIFhQYXRoLCBkb2N1bWVudGF0aW9uIChDaHJpc3RpYW4gQ29ybmVsc3NlbiksCiAgICBpbmRlbnRhdGlvbiwgVVJJIHBhcnNpbmcKICAgLSBPcHRpbWl6YXRpb25zIGZvciBYTUxTZWMsIGZpeGluZyBhbmQgbWFraW5nIHB1YmxpYyBzb21lIG9mIHRoZSBuZXR3b3JrCiAgICBwcm90b2NvbCBoYW5kbGVycyAoQWxla3NleSkKICAgLSBwZXJmb3JtYW5jZSBwYXRjaCBmcm9tIEdhcnkgUGVubmluZ3RvbgogICAtIENoYXJsZXMgQm96ZW1hbiBwcm92aWRlZCBkYXRlIGFuZCB0aW1lIHN1cHBvcnQgZm9yIFhNTCBTY2hlbWFzCiAgZGF0YXR5cGVzCgoKMi40LjIxOiBBcHIgMjkgMjAwMjoKVGhpcyByZWxlYXNlIGlzIGJvdGggYSBidWcgZml4IHJlbGVhc2UgYW5kIGFsc28gY29udGFpbnMgdGhlIGVhcmx5IFhNTApTY2hlbWFzIHN0cnVjdHVyZXMgYXQgCmh0dHA6Ly93d3cudzMub3JnL1RSL3htbHNjaGVtYS0xLwogYW5kIGRhdGF0eXBlcyBhdCAKaHR0cDovL3d3dy53My5vcmcvVFIveG1sc2NoZW1hLTIvCiBjb2RlLCBiZXdhcmUsIGFsbAppbnRlcmZhY2VzIGFyZSBsaWtlbHkgdG8gY2hhbmdlLCB0aGVyZSBpcyBodWdlIGhvbGVzLCBpdCBpcyBjbGVhcmx5IGEgd29yayBpbgpwcm9ncmVzcyBhbmQgZG9uJ3QgZXZlbiB0aGluayBvZiBwdXR0aW5nIHRoaXMgY29kZSBpbiBhIHByb2R1Y3Rpb24gc3lzdGVtLAppdCdzIGFjdHVhbGx5IG5vdCBjb21waWxlZCBpbiBieSBkZWZhdWx0LiBUaGUgcmVhbCBmaXhlcyBhcmU6ICAgLSBhIGNvdXBsZSBvZiBidWdzIG9yIGxpbWl0YXRpb25zIGludHJvZHVjZWQgaW4gMi40LjIwCiAgIC0gcGF0Y2hlcyBmb3IgQm9ybGFuZCBDKysgYW5kIE1TQyBieSBJZ29yCiAgIC0gc29tZSBmaXhlcyBvbiBYUGF0aCBzdHJpbmdzIGFuZCBjb25mb3JtYW5jZSBwYXRjaGVzIGJ5IFJpY2hhcmQKICBKaW5rcwogICAtIHBhdGNoIGZyb20gQWxla3NleSBmb3IgdGhlIEV4Y0MxNE4gc3BlY2lmaWNhdGlvbgogICAtIE9TRi8xIGJ1ZyBmaXggYnkgQmpvcm4KCgoyLjQuMjA6IEFwciAxNSAyMDAyOgogICAtIGJ1ZyBmaXhlczogZmlsZSBkZXNjcmlwdG9yIGxlYWssIFhQYXRoLCBIVE1MIG91dHB1dCwgRFREIHZhbGlkYXRpb24KICAgLSBYUGF0aCBjb25mb3JtYW5jZSB0ZXN0aW5nIGJ5IFJpY2hhcmQgSmlua3MKICAgLSBQb3J0YWJpbGl0eSBmaXhlczogU29sYXJpcywgTVBFL2lYLCBXaW5kb3dzLCBPU0YvMSwgcHl0aG9uIGJpbmRpbmdzLAogICAgbGlieG1sLm00CgoKMi40LjE5OiBNYXIgMjUgMjAwMjoKICAgLSBidWcgZml4ZXM6IGhhbGYgYSBkb3plbiBYUGF0aCBidWdzLCBWYWxpZGF0aW9uLCBJU08tTGF0aW4gdG8gVVRGOAogICAgZW5jb2RlcgogICAtIHBvcnRhYmlsaXR5IGZpeGVzIGluIHRoZSBIVFRQIGNvZGUKICAgLSBtZW1vcnkgYWxsb2NhdGlvbiBjaGVja3MgdXNpbmcgdmFsZ3JpbmQsIGFuZCBwcm9maWxpbmcgdGVzdHMKICAgLSByZXZhbXAgb2YgdGhlIFdpbmRvd3MgYnVpbGQgYW5kIE1ha2VmaWxlcwoKCjIuNC4xODogTWFyIDE4IDIwMDI6CiAgIC0gYnVnIGZpeGVzOiB0cmVlLCBTQVgsIGNhbm9uaWNhbGl6YXRpb24sIHZhbGlkYXRpb24sIHBvcnRhYmlsaXR5LAogIFhQYXRoCiAgIC0gcmVtb3ZlZCB0aGUgLS13aXRoLWJ1ZmZlciBvcHRpb24gaXQgd2FzIGJlY29taW5nIHVubWFpbnRhaW5hYmxlCiAgIC0gc2VyaW91cyBjbGVhbnVwIG9mIHRoZSBQeXRob24gbWFrZWZpbGVzCiAgIC0gc3BlZWR1cCBwYXRjaCB0byBYUGF0aCB2ZXJ5IGVmZmVjdGl2ZSBmb3IgRG9jQm9vayBzdHlsZXNoZWV0cwogICAtIEZpeGVzIGZvciBXaW5kb3dzIGJ1aWxkLCBjbGVhbnVwIG9mIHRoZSBkb2N1bWVudGF0aW9uCgoKMi40LjE3OiBNYXIgOCAyMDAyOgogICAtIGEgbG90IG9mIGJ1ZyBmaXhlcywgaW5jbHVkaW5nICJuYW1lc3BhY2Ugbm9kZXMgaGF2ZSBubyBwYXJlbnRzIGluCiAgWFBhdGgiCiAgIC0gZml4ZWQvaW1wcm92ZWQgdGhlIFB5dGhvbiB3cmFwcGVycywgYWRkZWQgbW9yZSBleGFtcGxlcyBhbmQgbW9yZQogICAgcmVncmVzc2lvbiB0ZXN0cywgWFBhdGggZXh0ZW5zaW9uIGZ1bmN0aW9ucyBjYW4gbm93IHJldHVybiBub2RlLXNldHMKICAgLSBhZGRlZCB0aGUgWE1MIENhbm9uaWNhbGl6YXRpb24gc3VwcG9ydCBmcm9tIEFsZWtzZXkgU2FuaW4KCgoyLjQuMTY6IEZlYiAyMCAyMDAyOgogICAtIGEgbG90IG9mIGJ1ZyBmaXhlcywgbW9zdCBvZiB0aGVtIHdlcmUgdHJpZ2dlcmVkIGJ5IHRoZSBYTUwgVGVzdHN1aXRlCiAgICBmcm9tIE9BU0lTIGFuZCBXM0MuIENvbXBsaWFuY2UgaGFzIGJlZW4gc2lnbmlmaWNhbnRseSBpbXByb3ZlZC4KICAgLSBhIGNvdXBsZSBvZiBwb3J0YWJpbGl0eSBmaXhlcyB0b28uCgoKMi40LjE1OiBGZWIgMTEgMjAwMjoKICAgLSBGaXhlZCB0aGUgTWFrZWZpbGVzLCBlc3BlY2lhbGx5IHRoZSBweXRob24gbW9kdWxlIG9uZXMKICAgLSBBIGZldyBidWcgZml4ZXMgYW5kIGNsZWFudXAKICAgLSBJbmNsdWRlcyBjbGVhbnVwCgoKMi40LjE0OiBGZWIgOCAyMDAyOgogICAtIENoYW5nZSBvZiBMaWNlbnNlIHRvIHRoZSBNSVQKICAgIExpY2Vuc2UgYmFzaWNhbGx5IGZvciBpbnRlZ3JhdGlvbiBpbiBYRnJlZTg2IGNvZGViYXNlLCBhbmQgcmVtb3ZpbmcKICAgIGNvbmZ1c2lvbiBhcm91bmQgdGhlIHByZXZpb3VzIGR1YWwtbGljZW5zaW5nCiAgIC0gYWRkZWQgUHl0aG9uIGJpbmRpbmdzLCBiZXRhIHNvZnR3YXJlIGJ1dCBzaG91bGQgYWxyZWFkeSBiZSBxdWl0ZQogICAgY29tcGxldGUKICAgLSBhIGxhcmdlIG51bWJlciBvZiBmaXhlcyBhbmQgY2xlYW51cHMsIGVzcGVjaWFsbHkgZm9yIGFsbCB0cmVlCiAgICBtYW5pcHVsYXRpb25zCiAgIC0gY2xlYW51cCBvZiB0aGUgaGVhZGVycywgZ2VuZXJhdGlvbiBvZiBhIHJlZmVyZW5jZSBBUEkgZGVmaW5pdGlvbiBpbgogIFhNTAoKCjIuNC4xMzogSmFuIDE0IDIwMDI6CiAgIC0gdXBkYXRlIG9mIHRoZSBkb2N1bWVudGF0aW9uOiBKb2huIEZsZWNrIGFuZCBDaGFybGllIEJvemVtYW4KICAgLSBjbGVhbnVwIG9mIHRpbWluZyBjb2RlIGZyb20gSnVzdGluIEZsZXRjaGVyCiAgIC0gZml4ZXMgZm9yIFdpbmRvd3MgYW5kIGluaXRpYWwgdGhyZWFkIHN1cHBvcnQgb24gV2luMzI6IElnb3IgYW5kIFNlcmd1ZWkKICAgIE5hcm9qbnlpCiAgIC0gQ3lnd2luIHBhdGNoIGZyb20gUm9iZXJ0IENvbGxpbnMKICAgLSBhZGRlZCB4bWxTZXRFbnRpdHlSZWZlcmVuY2VGdW5jKCkgZm9yIEtlaXRoIElzZGFsZSB3b3JrIG9uIHhzbGRiZwoKCjIuNC4xMjogRGVjIDcgMjAwMToKICAgLSBhIGZldyBidWcgZml4ZXM6IHRocmVhZCAoR2FyeSBQZW5uaW5ndG9uKSwgeG1sbGludCAoR2VlcnQgS2xvb3N0ZXJtYW4pLAogICAgWE1MIHBhcnNlciAoUm9iaW4gQmVyam9uKSwgWFBvaW50ZXIgKERhbm55IEphbXNoeSksIEkvTyBjbGVhbnVwcwogIChyb2JlcnQpCiAgIC0gRXJpYyBMYXZpZ25lIGNvbnRyaWJ1dGVkIHByb2plY3QgZmlsZXMgZm9yIE1hY09TCiAgIC0gc29tZSBtYWtlZmlsZXMgY2xlYW51cHMKCgoyLjQuMTE6IE5vdiAyNiAyMDAxOgogICAtIGZpeGVkIGEgY291cGxlIG9mIGVycm9ycyBpbiB0aGUgaW5jbHVkZXMsIGZpeGVkIGEgZmV3IGJ1Z3MsIHNvbWUgY29kZQogICAgY2xlYW51cHMKICAgLSB4bWxsaW50IG1hbiBwYWdlcyBpbXByb3ZlbWVudCBieSBIZWlrbyBSdXBwCiAgIC0gdXBkYXRlZCBWTVMgYnVpbGQgaW5zdHJ1Y3Rpb25zIGZyb20gSm9obiBBIEZvdGhlcmluZ2hhbQogICAtIFdpbmRvd3MgTWFrZWZpbGVzIHVwZGF0ZXMgZnJvbSBJZ29yCgoKMi40LjEwOiBOb3YgMTAgMjAwMToKICAgLSBVUkkgZXNjYXBpbmcgZml4IChKb2VsIFlvdW5nKQogICAtIGFkZGVkIHhtbEdldE5vZGVQYXRoKCkgKGZvciBwYXRocyBvciBYUG9pbnRlcnMgZ2VuZXJhdGlvbikKICAgLSBGaXhlcyBuYW1lc3BhY2UgaGFuZGxpbmcgcHJvYmxlbXMgd2hlbiB1c2luZyBEVEQgYW5kIHZhbGlkYXRpb24KICAgLSBpbXByb3ZlbWVudHMgb24geG1sbGludDogTW9ydXMgV2FsdGVyIHBhdGNoZXMgZm9yIC0tZm9ybWF0IGFuZAogICAgLS1lbmNvZGUsIFN0ZWZhbiBLb3N0IGFuZCBIZWlrbyBSdXBwIGltcHJvdmVtZW50cyBvbiB0aGUgLS1zaGVsbAogICAtIGZpeGVzIGZvciB4bWxjYXRhbG9nIGxpbmtpbmcgcG9pbnRlZCBieSBXZWlxaSBHYW8KICAgLSBmaXhlcyB0byB0aGUgSFRNTCBwYXJzZXIKCgoyLjQuOTogTm92IDYgMjAwMToKICAgLSBmaXhlcyBtb3JlIGNhdGFsb2cgYnVncwogICAtIGF2b2lkIGEgY29tcGlsYXRpb24gcHJvYmxlbSwgaW1wcm92ZSB4bWxHZXRMaW5lTm8oKQoKCjIuNC44OiBOb3YgNCAyMDAxOgogICAtIGZpeGVkIFNHTUwgY2F0YWxvZ3MgYnJva2VuIGluIHByZXZpb3VzIHJlbGVhc2UsIHVwZGF0ZWQgeG1sY2F0YWxvZwogIHRvb2wKICAgLSBmaXhlZCBhIGNvbXBpbGUgZXJyb3JzIGFuZCBzb21lIGluY2x1ZGVzIHRyb3VibGVzLgoKCjIuNC43OiBPY3QgMzAgMjAwMToKICAgLSBleHBvcnRlZCBzb21lIGRlYnVnZ2luZyBpbnRlcmZhY2VzCiAgIC0gc2VyaW91cyByZXdyaXRlIG9mIHRoZSBjYXRhbG9nIGNvZGUKICAgLSBpbnRlZ3JhdGVkIEdhcnkgUGVubmluZ3RvbiB0aHJlYWQgc2FmZXR5IHBhdGNoLCBhZGRlZCBjb25maWd1cmUgb3B0aW9uCiAgICBhbmQgcmVncmVzc2lvbiB0ZXN0cwogICAtIHJlbW92ZWQgYW4gSFRNTCBwYXJzZXIgYnVnCiAgIC0gZml4ZWQgYSBjb3VwbGUgb2YgcG90ZW50aWFsbHkgc2VyaW91cyB2YWxpZGF0aW9uIGJ1Z3MKICAgLSBpbnRlZ3JhdGVkIHRoZSBTR01MIERvY0Jvb2sgc3VwcG9ydCBpbiB4bWxsaW50CiAgIC0gY2hhbmdlZCB0aGUgbmFub2Z0cCBhbm9ueW1vdXMgbG9naW4gcGFzc3dkCiAgIC0gc29tZSBJL08gY2xlYW51cCBhbmQgYSBjb3VwbGUgb2YgaW50ZXJmYWNlcyBmb3IgUGVybCB3cmFwcGVyCiAgIC0gZ2VuZXJhbCBidWcgZml4ZXMKICAgLSB1cGRhdGVkIHhtbGxpbnQgbWFuIHBhZ2UgYnkgSm9obiBGbGVjawogICAtIHNvbWUgVk1TIGFuZCBXaW5kb3dzIHVwZGF0ZXMKCgoyLjQuNjogT2N0IDEwIDIwMDE6CiAgIC0gYWRkZWQgYW4gdXBkYXRlZCBtYW4gcGFnZXMgYnkgSm9obiBGbGVjawogICAtIHBvcnRhYmlsaXR5IGFuZCBjb25maWd1cmUgZml4ZXMKICAgLSBhbiBpbmZpbml0ZSBsb29wIG9uIHRoZSBIVE1MIHBhcnNlciB3YXMgcmVtb3ZlZCAoV2lsbGlhbSkKICAgLSBXaW5kb3dzIG1ha2VmaWxlIHBhdGNoZXMgZnJvbSBJZ29yCiAgIC0gZml4ZWQgaGFsZiBhIGRvemVuIGJ1Z3MgcmVwb3J0ZWQgZm9yIGxpYnhtbCBvciBsaWJ4c2x0CiAgIC0gdXBkYXRlZCB4bWxjYXRhbG9nIHRvIGJlIGFibGUgdG8gbW9kaWZ5IFNHTUwgc3VwZXIgY2F0YWxvZ3MKCgoyLjQuNTogU2VwIDE0IDIwMDE6CiAgIC0gUmVtb3ZlIGEgZmV3IGFubm95aW5nIGJ1Z3MgaW4gMi40LjQKICAgLSBmb3JjZXMgdGhlIEhUTUwgc2VyaWFsaXplciB0byBvdXRwdXQgZGVjaW1hbCBjaGFycmVmcyBzaW5jZSBzb21lCiAgICB2ZXJzaW9uIG9mIE5ldHNjYXBlIGNhbid0IGhhbmRsZSBoZXhhZGVjaW1hbCBvbmVzCgoKMS44LjE2OiBTZXAgMTQgMjAwMToKICAgLSBtYWludGVuYW5jZSByZWxlYXNlIG9mIHRoZSBvbGQgbGlieG1sMSBicmFuY2gsIGNvdXBsZSBvZiBidWcgYW5kCiAgICBwb3J0YWJpbGl0eSBmaXhlcwoKCjIuNC40OiBTZXAgMTIgMjAwMToKICAgLSBhZGRlZCAtLWNvbnZlcnQgdG8geG1sY2F0YWxvZywgYnVnIGZpeGVzIGFuZCBjbGVhbnVwcyBvZiBYTUwKICBDYXRhbG9nCiAgIC0gYSBmZXcgYnVnIGZpeGVzIGFuZCBzb21lIHBvcnRhYmlsaXR5IGNoYW5nZXMKICAgLSBzb21lIGRvY3VtZW50YXRpb24gY2xlYW51cHMKCgoyLjQuMzogIEF1ZyAyMyAyMDAxOgogICAtIFhNTCBDYXRhbG9nIHN1cHBvcnQgc2VlIHRoZSBkb2MKICAgLSBOZXcgTmFOL0luZmluaXR5IGZsb2F0aW5nIHBvaW50IGNvZGUKICAgLSBBIGZldyBidWcgZml4ZXMKCgoyLjQuMjogIEF1ZyAxNSAyMDAxOgogICAtIGFkZHMgeG1sTGluZU51bWJlcnNEZWZhdWx0KCkgdG8gY29udHJvbCBsaW5lIG51bWJlciBnZW5lcmF0aW9uCiAgIC0gbG90IG9mIGJ1ZyBmaXhlcwogICAtIHRoZSBNaWNyb3NvZnQgTVNDIHByb2plY3RzIGZpbGVzIHNob3VsZCBub3cgYmUgdXAgdG8gZGF0ZQogICAtIGluaGVyaXRhbmNlIG9mIG5hbWVzcGFjZXMgZnJvbSBEVEQgZGVmYXVsdGVkIGF0dHJpYnV0ZXMKICAgLSBmaXhlcyBhIHNlcmlvdXMgcG90ZW50aWFsIHNlY3VyaXR5IGJ1ZwogICAtIGFkZGVkIGEgLS1mb3JtYXQgb3B0aW9uIHRvIHhtbGxpbnQKCgoyLjQuMTogIEp1bHkgMjQgMjAwMToKICAgLSBwb3NzaWJpbGl0eSB0byBrZWVwIGxpbmUgbnVtYmVycyBpbiB0aGUgdHJlZQogICAtIHNvbWUgY29tcHV0YXRpb24gTmFOIGZpeGVzCiAgIC0gZXh0ZW5zaW9uIG9mIHRoZSBYUGF0aCBBUEkKICAgLSBjbGVhbnVwIGZvciBhbHBoYSBhbmQgaWE2NCB0YXJnZXRzCiAgIC0gcGF0Y2ggdG8gYWxsb3cgc2F2aW5nIHRocm91Z2ggSFRUUCBQVVQgb3IgUE9TVAoKCjIuNC4wOiBKdWx5IDEwIDIwMDE6CiAgIC0gRml4ZWQgYSBmZXcgYnVncyBpbiBYUGF0aCwgdmFsaWRhdGlvbiwgYW5kIHRyZWUgaGFuZGxpbmcuCiAgIC0gRml4ZWQgWE1MIEJhc2UgaW1wbGVtZW50YXRpb24sIGFkZGVkIGEgY291cGxlIG9mIGV4YW1wbGVzIHRvIHRoZQogICAgcmVncmVzc2lvbiB0ZXN0cwogICAtIEEgYml0IG9mIGNsZWFudXAKCgoyLjMuMTQ6IEp1bHkgNSAyMDAxOgogICAtIGZpeGVkIHNvbWUgZW50aXRpZXMgcHJvYmxlbXMgYW5kIHJlZHVjZSBtZW1vcnkgcmVxdWlyZW1lbnQgd2hlbgogICAgc3Vic3RpdHV0aW5nIHRoZW0KICAgLSBsb3RzIG9mIGltcHJvdmVtZW50cyBpbiB0aGUgWFBhdGggcXVlcmllcyBpbnRlcnByZXRlciBjYW4gYmUKICAgIHN1YnN0YW50aWFsbHkgZmFzdGVyCiAgIC0gTWFrZWZpbGVzIGFuZCBjb25maWd1cmUgY2xlYW51cHMKICAgLSBGaXhlcyB0byBYUGF0aCB2YXJpYWJsZSBldmFsLCBhbmQgY29tcGFyZSBvbiBlbXB0eSBub2RlIHNldAogICAtIEhUTUwgdGFnIGNsb3NpbmcgYnVnIGZpeGVkCiAgIC0gRml4ZWQgYW4gVVJJIHJlZmVyZW5jZSBjb21wdXRhdGlvbiBwcm9ibGVtIHdoZW4gdmFsaWRhdGluZwoKCjIuMy4xMzogSnVuZSAyOCAyMDAxOgogICAtIDIuMy4xMiBjb25maWd1cmUuaW4gd2FzIGJyb2tlbiBhcyB3ZWxsIGFzIHRoZSBwdXNoIG1vZGUgWE1MIHBhcnNlcgogICAtIGEgZmV3IG1vcmUgZml4ZXMgZm9yIGNvbXBpbGF0aW9uIG9uIFdpbmRvd3MgTVNDIGJ5IFlvbiBEZXJlawoKCjEuOC4xNDogSnVuZSAyOCAyMDAxOgogICAtIFpiaWduaWV3IENoeWxhIGdhdmUgYSBwYXRjaCB0byB1c2UgdGhlIG9sZCBYTUwgcGFyc2VyIGluIHB1c2ggbW9kZQogICAtIFNtYWxsIE1ha2VmaWxlIGZpeAoKCjIuMy4xMjogSnVuZSAyNiAyMDAxOgogICAtIGxvdHMgb2YgY2xlYW51cAogICAtIGEgY291cGxlIG9mIHZhbGlkYXRpb24gZml4CiAgIC0gZml4ZWQgbGluZSBudW1iZXIgY291bnRpbmcKICAgLSBmaXhlZCBzZXJpb3VzIHByb2JsZW1zIGluIHRoZSBYSW5jbHVkZSBwcm9jZXNzaW5nCiAgIC0gYWRkZWQgc3VwcG9ydCBmb3IgVVRGOCBCT00gYXQgYmVnaW5uaW5nIG9mIGVudGl0aWVzCiAgIC0gZml4ZWQgYSBzdHJhbmdlIGdjYyBvcHRpbWl6ZXIgYnVncyBpbiB4cGF0aCBoYW5kbGluZyBvZiBmbG9hdCwgZ2NjLTMuMAogICAgbWlzY29tcGlsZSB1cmkuYyAoV2lsbGlhbSksIFRob21hcyBMZWl0bmVyIHByb3ZpZGVkIGEgZml4IGZvciB0aGUKICAgIG9wdGltaXplciBvbiBUcnU2NAogICAtIGluY29ycG9yYXRlZCBZb24gRGVyZWsgYW5kIElnb3IgWmxhdGtvdmljICBmaXhlcyBhbmQgaW1wcm92ZW1lbnRzIGZvcgogICAgY29tcGlsYXRpb24gb24gV2luZG93cyBNU0MKICAgLSB1cGRhdGUgb2YgbGlieG1sLWRvYy5lbCAoRmVsaXggTmF0dGVyKQogICAtIGZpeGVkIDIgYnVncyBpbiBVUkkgbm9ybWFsaXphdGlvbiBjb2RlCgoKMi4zLjExOiBKdW5lIDE3IDIwMDE6CiAgIC0gdXBkYXRlcyB0byB0cmlvLCBNYWtlZmlsZXMgYW5kIGNvbmZpZ3VyZSBzaG91bGQgZml4IHNvbWUgcG9ydGFiaWxpdHkKICAgIHByb2JsZW1zIChhbHBoYSkKICAgLSBmaXhlZCBzb21lIEhUTUwgc2VyaWFsaXphdGlvbiBwcm9ibGVtcyAocHJlLCBzY3JpcHQsIGFuZCBibG9jay9pbmxpbmUKICAgIGhhbmRsaW5nKSwgYWRkZWQgZW5jb2RpbmcgYXdhcmUgQVBJcywgY2xlYW51cCBvZiB0aGlzIGNvZGUKICAgLSBhZGRlZCB4bWxIYXNOc1Byb3AoKQogICAtIGltcGxlbWVudGVkIGEgc3BlY2lmaWMgUEkgZm9yIGVuY29kaW5nIHN1cHBvcnQgaW4gdGhlIERvY0Jvb2sgU0dNTAogICAgcGFyc2VyCiAgIC0gc29tZSBYUGF0aCBmaXhlcyAoLUluZmluaXR5LCAvIGFzIGEgZnVuY3Rpb24gcGFyYW1ldGVyIGFuZCBuYW1lc3BhY2VzCiAgICBub2RlIHNlbGVjdGlvbikKICAgLSBmaXhlZCBhIHBlcmZvcm1hbmNlIHByb2JsZW0gYW5kIGFuIGVycm9yIGluIHRoZSB2YWxpZGF0aW9uIGNvZGUKICAgLSBmaXhlZCBYSW5jbHVkZSByb3V0aW5lIHRvIGltcGxlbWVudCB0aGUgcmVjdXJzaXZlIGJlaGF2aW91cgogICAtIGZpeGVkIHhtbEZyZWVOb2RlIHByb2JsZW0gd2hlbiBsaWJ4bWwgaXMgaW5jbHVkZWQgc3RhdGljYWxseSB0d2ljZQogICAtIGFkZGVkIC0tdmVyc2lvbiB0byB4bWxsaW50IGZvciBidWcgcmVwb3J0cwoKCjIuMy4xMDogSnVuZSAxIDIwMDE6CiAgIC0gZml4ZWQgdGhlIFNHTUwgY2F0YWxvZyBzdXBwb3J0CiAgIC0gYSBudW1iZXIgb2YgcmVwb3J0ZWQgYnVncyBnb3QgZml4ZWQsIGluIFhQYXRoLCBpY29udiBkZXRlY3Rpb24sCiAgICBYSW5jbHVkZSBwcm9jZXNzaW5nCiAgIC0gWFBhdGggc3RyaW5nIGZ1bmN0aW9uIHNob3VsZCBub3cgaGFuZGxlIHVuaWNvZGUgY29ycmVjdGx5CgoKMi4zLjk6IE1heSAxOSAyMDAxOgpMb3RzIG9mIGJ1Z2ZpeGVzLCBhbmQgYWRkZWQgYSBiYXNpYyBTR01MIGNhdGFsb2cgc3VwcG9ydDogICAtIEhUTUwgcHVzaCBidWdmaXggIzU0ODkxIGFuZCBhbm90aGVyIHBhdGNoIGZyb20gSm9uYXMgQm9yZ3N0cvZtCiAgIC0gc29tZSBzZXJpb3VzIHNwZWVkIG9wdGltaXphdGlvbiBhZ2FpbgogICAtIHNvbWUgZG9jdW1lbnRhdGlvbiBjbGVhbnVwcwogICAtIHRyeWluZyB0byBnZXQgYmV0dGVyIGxpbmtpbmcgb24gU29sYXJpcyAoLVIpCiAgIC0gWFBhdGggQVBJIGNsZWFudXAgZnJvbSBUaG9tYXMgQnJveWVyCiAgIC0gVmFsaWRhdGlvbiBidWcgZml4ZWQgIzU0NjMxLCBhZGRlZCBhIHBhdGNoIGZyb20gR2FyeSBQZW5uaW5ndG9uLCBmaXhlZAogICAgeG1sVmFsaWRHZXRWYWxpZEVsZW1lbnRzKCkKICAgLSBBZGRlZCBhbiBJTlNUQUxMIGZpbGUKICAgLSBBdHRyaWJ1dGUgcmVtb3ZhbCBhZGRlZCB0byBBUEk6ICM1NDQzMwogICAtIGFkZGVkIGEgYmFzaWMgc3VwcG9ydCBmb3IgU0dNTCBjYXRhbG9ncwogICAtIGZpeGVkIHhtbEtlZXBCbGFua3NEZWZhdWx0KDApIEFQSQogICAtIGJ1Z2ZpeCBpbiB4bWxOb2RlR2V0TGFuZygpCiAgIC0gZml4ZWQgYSBzbWFsbCBjb25maWd1cmUgcG9ydGFiaWxpdHkgcHJvYmxlbQogICAtIGZpeGVkIGFuIGludmVyc2lvbiBvZiBTWVNURU0gYW5kIFBVQkxJQyBpZGVudGlmaWVyIGluIEhUTUwgZG9jdW1lbnQKCgoxLjguMTM6IE1heSAxNCAyMDAxOgogICAtIGJ1Z2ZpeGVzIHJlbGVhc2Ugb2YgdGhlIG9sZCBsaWJ4bWwxIGJyYW5jaCB1c2VkIGJ5IEdub21lCgoKMi4zLjg6IE1heSAzIDIwMDE6CiAgIC0gSW50ZWdyYXRlZCBhbiBTR01MIERvY0Jvb2sgcGFyc2VyIGZvciB0aGUgR25vbWUgcHJvamVjdAogICAtIEZpeGVkIGEgZmV3IHRoaW5ncyBpbiB0aGUgSFRNTCBwYXJzZXIKICAgLSBGaXhlZCBzb21lIFhQYXRoIGJ1Z3MgcmFpc2VkIGJ5IFhTTFQgdXNlLCB0cmllZCB0byBmaXggdGhlIGZsb2F0aW5nCiAgICBwb2ludCBwb3J0YWJpbGl0eSBpc3N1ZQogICAtIFNwZWVkIGltcHJvdmVtZW50ICg4TS9zIGZvciBTQVgsIDNNL3MgZm9yIERPTSwgMS41TS9zIGZvcgogICAgRE9NK3ZhbGlkYXRpb24gdXNpbmcgdGhlIFhNTCBSRUMgYXMgaW5wdXQgYW5kIGEgNzAwTUh6IGNlbGVyb24pLgogICAtIGluY29ycG9yYXRlZCBtb3JlIFdpbmRvd3MgY2xlYW51cAogICAtIGFkZGVkIHhtbFNhdmVGb3JtYXRGaWxlKCkKICAgLSBmaXhlZCBwcm9ibGVtcyBpbiBjb3B5aW5nIG5vZGVzIHdpdGggZW50aXRpZXMgcmVmZXJlbmNlcyAoZ2RvbWUpCiAgIC0gcmVtb3ZlZCBzb21lIHRyb3VibGVzIHN1cnJvdW5kaW5nIHRoZSBuZXcgdmFsaWRhdGlvbiBtb2R1bGUKCgoyLjMuNzogQXByaWwgMjIgMjAwMToKICAgLSBsb3RzIG9mIHNtYWxsIGJ1ZyBmaXhlcywgY29ycmVjdGVkIFhQb2ludGVyCiAgIC0gTm9uIGRldGVybWluaXN0aWMgY29udGVudCBtb2RlbCB2YWxpZGF0aW9uIHN1cHBvcnQKICAgLSBhZGRlZCB4bWxEb2NDb3B5Tm9kZSBmb3IgZ2RvbWUyCiAgIC0gcmV2YW1wZWQgdGhlIHdheSB0aGUgSFRNTCBwYXJzZXIgaGFuZGxlcyBlbmQgb2YgdGFncwogICAtIFhQYXRoOiBjb3JyZWN0aW9ucyBvZiBuYW1lc3BhY2VzIHN1cHBvcnQgYW5kIG51bWJlciBmb3JtYXR0aW5nCiAgIC0gV2luZG93czogSWdvciBabGF0a292aWMgcGF0Y2hlcyBmb3IgTVNDIGNvbXBpbGF0aW9uCiAgIC0gSFRNTCBvdXRwdXQgZml4ZXMgZnJvbSBQIEMgQ2hvdyBhbmQgV2lsbGlhbSBNLiBCcmFjawogICAtIEltcHJvdmVkIHZhbGlkYXRpb24gc3BlZWQgc2Vuc2libGUgZm9yIERvY0Jvb2sKICAgLSBmaXhlZCBhIGJpZyBidWcgd2l0aCBJRCBkZWNsYXJlZCBpbiBleHRlcm5hbCBwYXJzZWQgZW50aXRpZXMKICAgLSBwb3J0YWJpbGl0eSBmaXhlcywgdXBkYXRlIG9mIFRyaW8gZnJvbSBCam9ybiBSZWVzZQoKCjIuMy42OiBBcHJpbCA4IDIwMDE6CiAgIC0gQ29kZSBjbGVhbnVwIHVzaW5nIGV4dHJlbWUgZ2NjIGNvbXBpbGVyIHdhcm5pbmcgb3B0aW9ucywgZm91bmQgYW5kCiAgICBjbGVhcmVkIGhhbGYgYSBkb3plbiBwb3RlbnRpYWwgcHJvYmxlbQogICAtIHRoZSBFYXplbCB0ZWFtIGZvdW5kIGFuIFhNTCBwYXJzZXIgYnVnCiAgIC0gY2xlYW5lZCB1cCB0aGUgdXNlciBvZiBzb21lIG9mIHRoZSBzdHJpbmcgZm9ybWF0dGluZyBmdW5jdGlvbi4gdXNlZCB0aGUKICAgIHRyaW8gbGlicmFyeSBjb2RlIHRvIHByb3ZpZGUgdGhlIG9uZSBuZWVkZWQgd2hlbiB0aGUgcGxhdGZvcm0gaXMgbWlzc2luZwogICAgdGhlbQogICAtIHhwYXRoOiByZW1vdmVkIGEgbWVtb3J5IGxlYWsgYW5kIGZpeGVkIHRoZSBwcmVkaWNhdGUgZXZhbHVhdGlvbgogICAgcHJvYmxlbSwgZXh0ZW5kZWQgdGhlIHRlc3RzdWl0ZSBhbmQgY2xlYW5lZCB1cCB0aGUgcmVzdWx0LiBYUG9pbnRlciBzZWVtcwogICAgYnJva2VuIC4uLgoKCjIuMy41OiBNYXIgMjMgMjAwMToKICAgLSBCaWdnZXN0IGNoYW5nZSBpcyBzZXBhcmF0ZSBwYXJzaW5nIGFuZCBldmFsdWF0aW9uIG9mIFhQYXRoIGV4cHJlc3Npb25zLAogICAgdGhlcmUgaXMgc29tZSBuZXcgQVBJcyBmb3IgdGhpcyB0b28KICAgLSBpbmNsdWRlZCBhIG51bWJlciBvZiBidWcgZml4ZXMoWE1MIHB1c2ggcGFyc2VyLCA1MTg3Niwgbm90YXRpb25zLAogIDUyMjk5KQogICAtIEZpeGVkIHNvbWUgcG9ydGFiaWxpdHkgaXNzdWVzCgoKMi4zLjQ6IE1hciAxMCAyMDAxOgogICAtIEZpeGVkIGJ1Z3MgIzUxODYwIGFuZCAjNTE4NjEKICAgLSBBZGRlZCBhIGdsb2JhbCB2YXJpYWJsZSB4bWxEZWZhdWx0QnVmZmVyU2l6ZSB0byBhbGxvdyBkZWZhdWx0IGJ1ZmZlcgogICAgc2l6ZSB0byBiZSBhcHBsaWNhdGlvbiB0dW5hYmxlLgogICAtIFNvbWUgY2xlYW51cCBpbiB0aGUgdmFsaWRhdGlvbiBjb2RlLCBzdGlsbCBhIGJ1ZyBsZWZ0IGFuZCB0aGlzIHBhcnQKICAgIHNob3VsZCBwcm9iYWJseSBiZSByZXdyaXR0ZW4gdG8gc3VwcG9ydCBhbWJpZ3VvdXMgY29udGVudCBtb2RlbCA6LVwKICAgLSBGaXggYSBjb3VwbGUgb2Ygc2VyaW91cyBidWdzIGludHJvZHVjZWQgb3IgcmFpc2VkIGJ5IGNoYW5nZXMgaW4gMi4zLjMKICAgIHBhcnNlcgogICAtIEZpeGVkIGFub3RoZXIgYnVnIGluIHhtbE5vZGVHZXRDb250ZW50KCkKICAgLSBCam9ybiBmaXhlZCBYUGF0aCBub2RlIGNvbGxlY3Rpb24gYW5kIE51bWJlciBmb3JtYXR0aW5nCiAgIC0gRml4ZWQgYSBsb29wIHJlcG9ydGVkIGluIHRoZSBIVE1MIHBhcnNpbmcKICAgLSBibGFuayBzcGFjZSBhcmUgcmVwb3J0ZWQgZXZlbiBpZiB0aGUgRHRkIGNvbnRlbnQgbW9kZWwgcHJvdmVzIHRoYXQgdGhleQogICAgYXJlIGZvcm1hdHRpbmcgc3BhY2VzLCB0aGlzIGlzIGZvciBYTUwgY29uZm9ybWFuY2UKCgoyLjMuMzogTWFyIDEgMjAwMToKICAgLSBzbWFsbCBjaGFuZ2UgaW4gWFBhdGggZm9yIFhTTFQKICAgLSBkb2N1bWVudGF0aW9uIGNsZWFudXBzCiAgIC0gZml4IGluIHZhbGlkYXRpb24gYnkgR2FyeSBQZW5uaW5ndG9uCiAgIC0gc2VyaW91cyBwYXJzaW5nIHBlcmZvcm1hbmNlcyBpbXByb3ZlbWVudHMKCgoyLjMuMjogRmViIDI0IDIwMDE6CiAgIC0gY2hhc2luZyBYUGF0aCBidWdzLCBmb3VuZCBhIGJ1bmNoLCBjb21wbGV0ZWQgc29tZSBUT0RPCiAgIC0gZml4ZWQgYSBEdGQgcGFyc2luZyBidWcKICAgLSBmaXhlZCBhIGJ1ZyBpbiB4bWxOb2RlR2V0Q29udGVudAogICAtIElEL0lEUkVGIHN1cHBvcnQgcGFydGx5IHJld3JpdHRlbiBieSBHYXJ5IFBlbm5pbmd0b24KCgoyLjMuMTogRmViIDE1IDIwMDE6CiAgIC0gc29tZSBYUGF0aCBhbmQgSFRNTCBidWcgZml4ZXMgZm9yIFhTTFQKICAgLSBzbWFsbCBleHRlbnNpb24gb2YgdGhlIGhhc2ggdGFibGUgaW50ZXJmYWNlcyBmb3IgRE9NIGdkb21lMgogICAgaW1wbGVtZW50YXRpb24KICAgLSBBIGZldyBidWcgZml4ZXMKCgoyLjMuMDogRmViIDggMjAwMSAoMi4yLjEyIHdhcyBvbiAyNSBKYW4gYnV0IEkgZGlkbid0IGtlcHQgdHJhY2spOgogICAtIExvdHMgb2YgWFBhdGggYnVnIGZpeGVzCiAgIC0gQWRkIGEgbW9kZSB3aXRoIER0ZCBsb29rdXAgYnV0IHdpdGhvdXQgdmFsaWRhdGlvbiBlcnJvciByZXBvcnRpbmcgZm9yCiAgICBYU0xUCiAgIC0gQWRkIHN1cHBvcnQgZm9yIHRleHQgbm9kZSB3aXRob3V0IGVzY2FwaW5nIChYU0xUKQogICAtIGJ1ZyBmaXhlcyBmb3IgeG1sQ2hlY2tGaWxlbmFtZQogICAtIHZhbGlkYXRpb24gY29kZSBidWcgZml4ZXMgZnJvbSBHYXJ5IFBlbm5pbmd0b24KICAgLSBQYXRjaCBmcm9tIFBhdWwgRC4gU21pdGggY29ycmVjdGluZyBVUkkgcGF0aCBub3JtYWxpemF0aW9uCiAgIC0gUGF0Y2ggdG8gYWxsb3cgc2ltdWx0YW5lb3VzIGluc3RhbGwgb2YgbGlieG1sLWRldmVsIGFuZAogIGxpYnhtbDItZGV2ZWwKICAgLSB0aGUgZXhhbXBsZSBNYWtlZmlsZSBpcyBub3cgZml4ZWQKICAgLSBhZGRlZCBIVE1MIHRvIHRoZSBSUE0gcGFja2FnZXMKICAgLSB0cmVlIGNvcHlpbmcgYnVnZml4ZXMKICAgLSB1cGRhdGVzIHRvIFdpbmRvd3MgbWFrZWZpbGVzCiAgIC0gb3B0aW1pemF0aW9uIHBhdGNoIGZyb20gQmpvcm4gUmVlc2UKCgoyLjIuMTE6IEphbiA0IDIwMDE6CiAgIC0gYnVuY2ggb2YgYnVnIGZpeGVzIChtZW1vcnkgSS9PLCB4cGF0aCwgZnRwL2h0dHAsIC4uLikKICAgLSBhZGRlZCBodG1sSGFuZGxlT21pdHRlZEVsZW0oKQogICAtIEFwcGxpZWQgQmpvcm4gUmVlc2UncyBJUFY2IGZpcnN0IHBhdGNoCiAgIC0gQXBwbGllZCBQYXVsIEQuIFNtaXRoIHBhdGNoZXMgZm9yIHZhbGlkYXRpb24gb2YgWEluY2x1ZGUgcmVzdWx0cwogICAtIGFkZGVkIFhQb2ludGVyIHhtbG5zKCkgbmV3IHNjaGVtZSBzdXBwb3J0CgoKMi4yLjEwOiBOb3YgMjUgMjAwMDoKICAgLSBGaXggdGhlIFdpbmRvd3MgcHJvYmxlbXMgb2YgMi4yLjgKICAgLSBpbnRlZ3JhdGUgT3BlblZNUyBwYXRjaGVzCiAgIC0gYmV0dGVyIGhhbmRsaW5nIG9mIHNvbWUgbmFzdHkgSFRNTCBpbnB1dAogICAtIEltcHJvdmVkIHRoZSBYUG9pbnRlciBpbXBsZW1lbnRhdGlvbgogICAtIGludGVncmF0ZSBhIG51bWJlciBvZiBwcm92aWRlZCBwYXRjaGVzCgoKMi4yLjk6IE5vdiAyNSAyMDAwOgogICAtIGVycm9uZW91cyByZWxlYXNlIDotKAoKCjIuMi44OiBOb3YgMTMgMjAwMDoKICAgLSBGaXJzdCB2ZXJzaW9uIG9mIFhJbmNsdWRlCiAgICBzdXBwb3J0CiAgIC0gUGF0Y2ggaW4gY29uZGl0aW9uYWwgc2VjdGlvbiBoYW5kbGluZwogICAtIHVwZGF0ZWQgTVMgY29tcGlsZXIgcHJvamVjdAogICAtIGZpeGVkIHNvbWUgWFBhdGggcHJvYmxlbXMKICAgLSBhZGRlZCBhbiBVUkkgZXNjYXBpbmcgZnVuY3Rpb24KICAgLSBzb21lIG90aGVyIGJ1ZyBmaXhlcwoKCjIuMi43OiBPY3QgMzEgMjAwMDoKICAgLSBhZGRlZCBtZXNzYWdlIHJlZGlyZWN0aW9uCiAgIC0gWFBhdGggaW1wcm92ZW1lbnRzICh0aGFua3MgVE9NICEpCiAgIC0geG1sSU9QYXJzZURURCgpIGFkZGVkCiAgIC0gdmFyaW91cyBzbWFsbCBmaXhlcyBpbiB0aGUgSFRNTCwgVVJJLCBIVFRQIGFuZCBYUG9pbnRlciBzdXBwb3J0CiAgIC0gc29tZSBjbGVhbnVwIG9mIHRoZSBNYWtlZmlsZSwgYXV0b2NvbmYgYW5kIHRoZSBkaXN0cmlidXRpb24gY29udGVudAoKCjIuMi42OiBPY3QgMjUgMjAwMDo6CiAgIC0gQWRkZWQgYW4gaGFzaCB0YWJsZSBtb2R1bGUsIG1pZ3JhdGVkIGEgbnVtYmVyIG9mIGludGVybmFsIHN0cnVjdHVyZSB0bwogICAgdGhvc2UKICAgLSBGaXhlZCBhIHBvc3RlcmlvcmkgdmFsaWRhdGlvbiBwcm9ibGVtcwogICAtIEhUVFAgbW9kdWxlIGNsZWFudXBzCiAgIC0gSFRNTCBwYXJzZXIgaW1wcm92ZW1lbnRzICh0YWcgZXJyb3JzLCBzY3JpcHQvc3R5bGUgaGFuZGxpbmcsIGF0dHJpYnV0ZQogICAgbm9ybWFsaXphdGlvbikKICAgLSBjb2FsZXNjaW5nIG9mIGFkamFjZW50IHRleHQgbm9kZXMKICAgLSBjb3VwbGUgb2YgWFBhdGggYnVnIGZpeGVzLCBleHBvcnRlZCB0aGUgaW50ZXJuYWwgQVBJCgoKMi4yLjU6IE9jdCAxNSAyMDAwOjoKICAgLSBYUG9pbnRlciBpbXBsZW1lbnRhdGlvbiBhbmQgdGVzdHN1aXRlCiAgIC0gTG90IG9mIFhQYXRoIGZpeGVzLCBhZGRlZCB2YXJpYWJsZSBhbmQgZnVuY3Rpb25zIHJlZ2lzdHJhdGlvbiwgbW9yZQogICAgdGVzdHMKICAgLSBQb3J0YWJpbGl0eSBmaXhlcywgbG90cyBvZiBlbmhhbmNlbWVudHMgdG93YXJkIGFuIGVhc3kgV2luZG93cyBidWlsZAogICAgYW5kIHJlbGVhc2UKICAgLSBMYXRlIHZhbGlkYXRpb24gZml4ZXMKICAgLSBJbnRlZ3JhdGVkIGEgbG90IG9mIGNvbnRyaWJ1dGVkIHBhdGNoZXMKICAgLSBhZGRlZCBtZW1vcnkgbWFuYWdlbWVudCBkb2NzCiAgIC0gYSBwZXJmb3JtYW5jZSBwcm9ibGVtIHdoZW4gdXNpbmcgbGFyZ2UgYnVmZmVyIHNlZW1zIGZpeGVkCgoKMi4yLjQ6IE9jdCAxIDIwMDA6OgogICAtIG1haW4gWFBhdGggcHJvYmxlbSBmaXhlZAogICAtIEludGVncmF0ZWQgcG9ydGFiaWxpdHkgcGF0Y2hlcyBmb3IgV2luZG93cwogICAtIFNlcmlvdXMgYnVnIGZpeGVzIG9uIHRoZSBVUkkgYW5kIEhUTUwgY29kZQoKCjIuMi4zOiBTZXAgMTcgMjAwMDoKICAgLSBidWcgZml4ZXMKICAgLSBjbGVhbnVwIG9mIGVudGl0eSBoYW5kbGluZyBjb2RlCiAgIC0gb3ZlcmFsbCByZXZpZXcgb2YgYWxsIGxvb3BzIGluIHRoZSBwYXJzZXJzLCBhbGwgc3ByaW50ZiB1c2FnZSBoYXMgYmVlbgogICAgY2hlY2tlZCB0b28KICAgLSBGYXIgYmV0dGVyIGhhbmRsaW5nIG9mIGxhcmdlcyBEdGQuIFZhbGlkYXRpbmcgYWdhaW5zdCBEb2NCb29rIFhNTCBEdGQKICAgIHdvcmtzIHNtb290aGx5IG5vdy4KCgoxLjguMTA6IFNlcCA2IDIwMDA6CiAgIC0gYnVnIGZpeCByZWxlYXNlIGZvciBzb21lIEdub21lIHByb2plY3RzCgoKMi4yLjI6IEF1Z3VzdCAxMiAyMDAwOgogICAtIG1vc3RseSBidWcgZml4ZXMKICAgLSBzdGFydGVkIGFkZGluZyByb3V0aW5lcyB0byBhY2Nlc3MgeG1sIHBhcnNlciBjb250ZXh0IG9wdGlvbnMKCgoyLjIuMTogSnVseSAyMSAyMDAwOgogICAtIGEgcHVyZWx5IGJ1ZyBmaXhlcyByZWxlYXNlCiAgIC0gZml4ZWQgYW4gZW5jb2Rpbmcgc3VwcG9ydCBwcm9ibGVtIHdoZW4gcGFyc2luZyBmcm9tIGEgbWVtb3J5IGJsb2NrCiAgIC0gZml4ZWQgYSBET0NUWVBFIHBhcnNpbmcgcHJvYmxlbQogICAtIHJlbW92ZWQgYSBidWcgaW4gdGhlIGZ1bmN0aW9uIGFsbG93aW5nIHRvIG92ZXJyaWRlIHRoZSBtZW1vcnkKICAgIGFsbG9jYXRpb24gcm91dGluZXMKCgoyLjIuMDogSnVseSAxNCAyMDAwOgogICAtIGFwcGxpZWQgYSBsb3Qgb2YgcG9ydGFiaWxpdHkgZml4ZXMKICAgLSBiZXR0ZXIgZW5jb2Rpbmcgc3VwcG9ydC9jbGVhbnVwIGFuZCBzYXZpbmcgKGNvbnRlbnQgaXMgbm93IGFsd2F5cwogICAgZW5jb2RlZCBpbiBVVEYtOCkKICAgLSB0aGUgSFRNTCBwYXJzZXIgbm93IGNvcnJlY3RseSBoYW5kbGVzIGVuY29kaW5ncwogICAtIGFkZGVkIHhtbEhhc1Byb3AoKQogICAtIGZpeGVkIGEgc2VyaW91cyBwcm9ibGVtIHdpdGggJiMzODsKICAgLSBwcm9wYWdhdGVkIHRoZSBmaXggdG8gRlRQIGNsaWVudAogICAtIGNsZWFudXAsIGJ1Z2ZpeGVzLCBldGMgLi4uCiAgIC0gQWRkZWQgYSBwYWdlIGFib3V0IGxpYnhtbCBJbnRlcm5hdGlvbmFsaXphdGlvbgogICAgc3VwcG9ydAoKCjEuOC45OiAgSnVseSA5IDIwMDA6CiAgIC0gZml4ZWQgdGhlIHNwZWMgdGhlIFJQTXMgc2hvdWxkIGJlIGJldHRlcgogICAtIGZpeGVkIGEgc2VyaW91cyBidWcgaW4gdGhlIEZUUCBpbXBsZW1lbnRhdGlvbiwgcmVsZWFzZWQgMS44LjkgdG8gc29sdmUKICAgIHJwbWZpbmQgdXNlcnMgcHJvYmxlbQoKCjIuMS4xOiBKdWx5IDEgMjAwMDoKICAgLSBmaXhlcyBhIGNvdXBsZSBvZiBidWdzIGluIHRoZSAyLjEuMCBwYWNrYWdpbmcKICAgLSBpbXByb3ZlbWVudHMgb24gdGhlIEhUTUwgcGFyc2VyCgoKMi4xLjAgYW5kIDEuOC44OiBKdW5lIDI5IDIwMDA6CiAgIC0gMS44LjggaXMgbW9zdGx5IGEgY29tbW9kaXR5IHBhY2thZ2UgZm9yIHVwZ3JhZGluZyB0byBsaWJ4bWwyIGFjY29yZGluZwogICAgdG8gbmV3IGluc3RydWN0aW9ucy4gSXQgZml4ZXMgYSBuYXN0eSBwcm9ibGVtCiAgICBhYm91dCAmIzM4OyBjaGFycmVmIHBhcnNpbmcKICAgLSAyLjEuMCBhbHNvIGVhc2UgdGhlIHVwZ3JhZGUgZnJvbSBsaWJ4bWwgdjEgdG8gdGhlIHJlY2VudCB2ZXJzaW9uLiBpdAogICAgYWxzbyBjb250YWlucyBudW1lcm91cyBmaXhlcyBhbmQgZW5oYW5jZW1lbnRzOgogICAgYWRkZWQgeG1sU3RvcFBhcnNlcigpIHRvIHN0b3AgcGFyc2luZwogICAgICBpbXByb3ZlZCBhIGxvdCBwYXJzaW5nIHNwZWVkIHdoZW4gdGhlcmUgaXMgbGFyZ2UgQ0RBVEEgYmxvY3MKICAgICAgaW5jbHVkZXMgWFBhdGggcGF0Y2hlcyBwcm92aWRlZCBieSBQaWNkYXIgVGVjaG5vbG9neQogICAgICB0cmllZCB0byBmaXggYXMgbXVjaCBhcyBwb3NzaWJsZSBEVEQgdmFsaWRhdGlvbiBhbmQgbmFtZXNwYWNlCiAgICAgICAgcmVsYXRlZCBwcm9ibGVtcwogICAgICBvdXRwdXQgdG8gYSBnaXZlbiBlbmNvZGluZyBoYXMgYmVlbiBhZGRlZC90ZXN0ZWQKICAgICAgbG90IG9mIHZhcmlvdXMgZml4ZXMKICAgIAogICAtIGFkZGVkIHhtbFN0b3BQYXJzZXIoKSB0byBzdG9wIHBhcnNpbmcKICAgLSBpbXByb3ZlZCBhIGxvdCBwYXJzaW5nIHNwZWVkIHdoZW4gdGhlcmUgaXMgbGFyZ2UgQ0RBVEEgYmxvY3MKICAgLSBpbmNsdWRlcyBYUGF0aCBwYXRjaGVzIHByb3ZpZGVkIGJ5IFBpY2RhciBUZWNobm9sb2d5CiAgIC0gdHJpZWQgdG8gZml4IGFzIG11Y2ggYXMgcG9zc2libGUgRFREIHZhbGlkYXRpb24gYW5kIG5hbWVzcGFjZQogICAgICAgIHJlbGF0ZWQgcHJvYmxlbXMKICAgLSBvdXRwdXQgdG8gYSBnaXZlbiBlbmNvZGluZyBoYXMgYmVlbiBhZGRlZC90ZXN0ZWQKICAgLSBsb3Qgb2YgdmFyaW91cyBmaXhlcwoKCjIuMC4wOiBBcHIgMTIgMjAwMDoKICAgLSBGaXJzdCBwdWJsaWMgcmVsZWFzZSBvZiBsaWJ4bWwyLiBJZiB5b3UgYXJlIHVzaW5nIGxpYnhtbCwgaXQncyBhIGdvb2QKICAgIGlkZWEgdG8gY2hlY2sgdGhlIDEueCB0byAyLnggdXBncmFkZSBpbnN0cnVjdGlvbnMuIE5PVEU6IHdoaWxlIGluaXRpYWxseQogICAgc2NoZWR1bGVkIGZvciBBcHIgMyB0aGUgcmVsZWFzZSBvY2N1cnJlZCBvbmx5IG9uIEFwciAxMiBkdWUgdG8gbWFzc2l2ZQogICAgd29ya2xvYWQuCiAgIC0gVGhlIGluY2x1ZGUgYXJlIG5vdyBsb2NhdGVkIHVuZGVyICRwcmVmaXgvaW5jbHVkZS9saWJ4bWwgKGluc3RlYWQgb2YKICAgICRwcmVmaXgvaW5jbHVkZS9nbm9tZS14bWwpLCB0aGV5IGFsc28gYXJlIHJlZmVyZW5jZWQgYnkKICAgICNpbmNsdWRlIDxsaWJ4bWwveHh4Lmg+CiAgICBpbnN0ZWFkIG9mCiAgICAjaW5jbHVkZSAieHh4LmgiCiAgCiAgIC0gYSBuZXcgVVJJIG1vZHVsZSBmb3IgcGFyc2luZyBVUklzIGFuZCBmb2xsb3dpbmcgc3RyaWN0bHkgUkZDIDIzOTYKICAgLSB0aGUgbWVtb3J5IGFsbG9jYXRpb24gcm91dGluZXMgdXNlZCBieSBsaWJ4bWwgY2FuIG5vdyBiZSBvdmVybG9hZGVkCiAgICBkeW5hbWljYWxseSBieSB1c2luZyB4bWxNZW1TZXR1cCgpCiAgIC0gVGhlIHByZXZpb3VzbHkgQ1ZTIG9ubHkgdG9vbCB0ZXN0ZXIgaGFzIGJlZW4gcmVuYW1lZAogICAgeG1sbGludCBhbmQgaXMgbm93IGluc3RhbGxlZCBhcyBwYXJ0IG9mIHRoZSBsaWJ4bWwyCiAgICBwYWNrYWdlCiAgIC0gVGhlIEkvTyBpbnRlcmZhY2UgaGFzIGJlZW4gcmV2YW1wZWQuIFRoZXJlIGlzIG5vdyB3YXlzIHRvIHBsdWcgaW4KICAgIHNwZWNpZmljIEkvTyBtb2R1bGVzLCBlaXRoZXIgYXQgdGhlIFVSSSBzY2hlbWUgZGV0ZWN0aW9uIGxldmVsIHVzaW5nCiAgICB4bWxSZWdpc3RlcklucHV0Q2FsbGJhY2tzKCkgIG9yIGJ5IHBhc3NpbmcgSS9PIGZ1bmN0aW9ucyB3aGVuIGNyZWF0aW5nIGEKICAgIHBhcnNlciBjb250ZXh0IHVzaW5nIHhtbENyZWF0ZUlPUGFyc2VyQ3R4dCgpCiAgIC0gdGhlcmUgaXMgYSBDIHByZXByb2Nlc3NvciBtYWNybyBMSUJYTUxfVkVSU0lPTiBwcm92aWRpbmcgdGhlIHZlcnNpb24KICAgIG51bWJlciBvZiB0aGUgbGlieG1sIG1vZHVsZSBpbiB1c2UKICAgLSBhIG51bWJlciBvZiBvcHRpb25hbCBmZWF0dXJlcyBvZiBsaWJ4bWwgY2FuIG5vdyBiZSBleGNsdWRlZCBhdAogICAgY29uZmlndXJlIHRpbWUgKEZUUC9IVFRQL0hUTUwvWFBhdGgvRGVidWcpCgoKMi4wLjBiZXRhOiBNYXIgMTQgMjAwMDoKICAgLSBUaGlzIGlzIGEgZmlyc3QgQmV0YSByZWxlYXNlIG9mIGxpYnhtbCB2ZXJzaW9uIDIKICAgLSBJdCdzIGF2YWlsYWJsZSBvbmx5IGZyb214bWxzb2Z0Lm9yZwogICAgRlRQLCBpdCdzIHBhY2thZ2VkIGFzIGxpYnhtbDItMi4wLjBiZXRhIGFuZCBhdmFpbGFibGUgYXMgdGFyIGFuZAogIFJQTXMKICAgLSBUaGlzIHZlcnNpb24gaXMgbm93IHRoZSBoZWFkIGluIHRoZSBHbm9tZSBDVlMgYmFzZSwgdGhlIG9sZCBvbmUgaXMKICAgIGF2YWlsYWJsZSB1bmRlciB0aGUgdGFnIExJQl9YTUxfMV9YCiAgIC0gVGhpcyBpbmNsdWRlcyBhIHZlcnkgbGFyZ2Ugc2V0IG9mIGNoYW5nZXMuIEZyb20gYSAgcHJvZ3JhbW1hdGljIHBvaW50CiAgICBvZiB2aWV3IGFwcGxpY2F0aW9ucyBzaG91bGQgbm90IGhhdmUgdG8gYmUgbW9kaWZpZWQgdG9vIG11Y2gsIGNoZWNrIHRoZQogICAgdXBncmFkZSBwYWdlCiAgIC0gU29tZSBpbnRlcmZhY2VzIG1heSBjaGFuZ2VzIChlc3BlY2lhbGx5IGEgYml0IGFib3V0IGVuY29kaW5nKS4KICAgLSB0aGUgdXBkYXRlcyBpbmNsdWRlczoKICAgIGZpeCBJMThOIHN1cHBvcnQuIElTTy1MYXRpbi14L1VURi04L1VURi0xNiAobmVhcmx5KSBzZWVtcyBjb3JyZWN0bHkKICAgICAgICBoYW5kbGVkIG5vdwogICAgICBCZXR0ZXIgaGFuZGxpbmcgb2YgZW50aXRpZXMsIGVzcGVjaWFsbHkgd2VsbC1mb3JtZWRuZXNzIGNoZWNraW5nCiAgICAgICAgYW5kIHByb3BlciBQRXJlZiBleHRlbnNpb25zIGluIGV4dGVybmFsIHN1YnNldHMKICAgICAgRFREIGNvbmRpdGlvbmFsIHNlY3Rpb25zCiAgICAgIFZhbGlkYXRpb24gbm93IGNvcnJlY3RseSBoYW5kbGUgZW50aXRpZXMgY29udGVudAogICAgICBjaGFuZ2UKICAgICAgICBzdHJ1Y3R1cmVzIHRvIGFjY29tbW9kYXRlIERPTQogICAgCiAgIC0gZml4IEkxOE4gc3VwcG9ydC4gSVNPLUxhdGluLXgvVVRGLTgvVVRGLTE2IChuZWFybHkpIHNlZW1zIGNvcnJlY3RseQogICAgICAgIGhhbmRsZWQgbm93CiAgIC0gQmV0dGVyIGhhbmRsaW5nIG9mIGVudGl0aWVzLCBlc3BlY2lhbGx5IHdlbGwtZm9ybWVkbmVzcyBjaGVja2luZwogICAgICAgIGFuZCBwcm9wZXIgUEVyZWYgZXh0ZW5zaW9ucyBpbiBleHRlcm5hbCBzdWJzZXRzCiAgIC0gRFREIGNvbmRpdGlvbmFsIHNlY3Rpb25zCiAgIC0gVmFsaWRhdGlvbiBub3cgY29ycmVjdGx5IGhhbmRsZSBlbnRpdGllcyBjb250ZW50CiAgIC0gY2hhbmdlCiAgICAgICAgc3RydWN0dXJlcyB0byBhY2NvbW1vZGF0ZSBET00KICAgLSBTZXJpb3VzIHByb2dyZXNzIHdlcmUgbWFkZSB0b3dhcmQgY29tcGxpYW5jZSwgaGVyZSBhcmUgdGhlIHJlc3VsdCBvZiB0aGUgdGVzdCBhZ2FpbnN0IHRoZQogICAgT0FTSVMgdGVzdHN1aXRlIChleGNlcHQgdGhlIEphcGFuZXNlIHRlc3RzIHNpbmNlIEkgZG9uJ3Qgc3VwcG9ydCB0aGF0CiAgICBlbmNvZGluZyB5ZXQpLiBUaGlzIFVSTCBpcyByZWJ1aWx0IGV2ZXJ5IGNvdXBsZSBvZiBob3VycyB1c2luZyB0aGUgQ1ZTCiAgICBoZWFkIHZlcnNpb24uCgoKMS44Ljc6IE1hciA2IDIwMDA6CiAgIC0gVGhpcyBpcyBhIGJ1ZyBmaXggcmVsZWFzZToKICAgLSBJdCBpcyBwb3NzaWJsZSB0byBkaXNhYmxlIHRoZSBpZ25vcmFibGUgYmxhbmtzIGhldXJpc3RpYyB1c2VkIGJ5CiAgICBsaWJ4bWwtMS54LCBhIG5ldyBmdW5jdGlvbiAgeG1sS2VlcEJsYW5rc0RlZmF1bHQoMCkgd2lsbCBhbGxvdyB0aGlzLiBOb3RlCiAgICB0aGF0IGZvciBhZGhlcmVuY2UgdG8gWE1MIHNwZWMsIHRoaXMgYmVoYXZpb3VyIHdpbGwgYmUgZGlzYWJsZWQgYnkKICAgIGRlZmF1bHQgaW4gMi54IC4gVGhlIHNhbWUgZnVuY3Rpb24gd2lsbCBhbGxvdyB0byBrZWVwIGNvbXBhdGliaWxpdHkgZm9yCiAgICBvbGQgY29kZS4KICAgLSBCbGFua3MgaW4gPGE+ICA8L2E+IGNvbnN0cnVjdHMgYXJlIG5vdCBpZ25vcmVkIGFueW1vcmUsCiAgICBhdm9pZGluZyBoZXVyaXN0aWMgaXMgcmVhbGx5IHRoZSBSaWdodCBXYXkgOi1cCiAgIC0gVGhlIHVuY2hlY2tlZCB1c2Ugb2Ygc25wcmludGYgd2hpY2ggd2FzIGJyZWFraW5nIGxpYnhtbC0xLjguNgogICAgY29tcGlsYXRpb24gb24gc29tZSBwbGF0Zm9ybXMgaGFzIGJlZW4gZml4ZWQKICAgLSBuYW5vZnRwLmMgbmFub2h0dHAuYzogRml4ZWQgJyMnIGFuZCAnPycgc3RyaXBwaW5nIHdoZW4gcHJvY2Vzc2luZwogIFVSSXMKCgoxLjguNjogSmFuIDMxIDIwMDA6CiAgIC0gYWRkZWQgYSBuYW5vRlRQIHRyYW5zcG9ydCBtb2R1bGUsIGRlYnVnZ2VkIHVudGlsIHRoZSBuZXcgdmVyc2lvbiBvZiBycG1maW5kIGNhbiB1c2UKICAgIGl0IHdpdGhvdXQgdHJvdWJsZXMKCgoxLjguNTogSmFuIDIxIDIwMDA6CiAgIC0gYWRkaW5nIEFQSXMgdG8gcGFyc2UgYSB3ZWxsIGJhbGFuY2VkIGNodW5rIG9mIFhNTCAocHJvZHVjdGlvbiBbNDNdIGNvbnRlbnQgb2YgdGhlCiAgICBYTUwgc3BlYykKICAgLSBmaXhlZCBhIGhpZGVvdXMgYnVnIGluIHhtbEdldFByb3AgcG9pbnRlZCBieSBSdW5lLkRqdXJodXVzQGZhc3Qubm8KICAgLSBKb2R5IEdvbGRiZXJnIDxqZ29sZGJlcmdAaG9tZS5jb20+IHByb3ZpZGVkIGFub3RoZXIgcGF0Y2ggdHJ5aW5nCiAgICB0byBzb2x2ZSB0aGUgemxpYiBjaGVja3MgcHJvYmxlbXMKICAgLSBUaGUgY3VycmVudCBzdGF0ZSBpbiBnbm9tZSBDVlMgYmFzZSBpcyBleHBlY3RlZCB0byBzaGlwIGFzIDEuOC41IHdpdGgKICAgIGdudW1lcmljIHNvb24KCgoxLjguNDogSmFuIDEzIDIwMDA6CiAgIC0gYnVnIGZpeGVzLCByZWludHJvZHVjZWQgeG1sTmV3R2xvYmFsTnMoKSwgZml4ZWQgeG1sTmV3TnMoKQogICAtIGFsbCBleGl0KCkgY2FsbCBzaG91bGQgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSBsaWJ4bWwKICAgLSBmaXhlZCBhIHByb2JsZW0gd2l0aCBJTkNMVURFX1dJTlNPQ0sgb24gV0lOMzIgcGxhdGZvcm0KICAgLSBhZGRlZCBuZXdEb2NGcmFnbWVudCgpCgoKMS44LjM6IEphbiA1IDIwMDA6CiAgIC0gYSBQdXNoIGludGVyZmFjZSBmb3IgdGhlIFhNTCBhbmQgSFRNTCBwYXJzZXJzCiAgIC0gYSBzaGVsbC1saWtlIGludGVyZmFjZSB0byB0aGUgZG9jdW1lbnQgdHJlZSAodHJ5IHRlc3RlciAtLXNoZWxsIDotKQogICAtIGxvdHMgb2YgYnVnIGZpeGVzIGFuZCBpbXByb3ZlbWVudCBhZGRlZCBvdmVyIFhNYXMgaG9saWRheXMKICAgLSBmaXhlZCB0aGUgRFREIHBhcnNpbmcgY29kZSB0byB3b3JrIHdpdGggdGhlIHhodG1sIERURAogICAtIGFkZGVkIHhtbFJlbW92ZVByb3AoKSwgeG1sUmVtb3ZlSUQoKSBhbmQgeG1sUmVtb3ZlUmVmKCkKICAgLSBGaXhlZCBidWdzIGluIHhtbE5ld05zKCkKICAgLSBFeHRlcm5hbCBlbnRpdHkgbG9hZGluZyBjb2RlIGhhcyBiZWVuIHJldmFtcGVkLCBub3cgaXQgdXNlcwogICAgeG1sTG9hZEV4dGVybmFsRW50aXR5KCksIHNvbWUgZml4IG9uIGVudGl0aWVzIHByb2Nlc3Npbmcgd2VyZSBhZGRlZAogICAtIGNsZWFuZWQgdXAgV0lOMzIgaW5jbHVkZXMgb2Ygc29ja2V0IHN0dWZmCgoKMS44LjI6IERlYyAyMSAxOTk5OgogICAtIEkgZ290IGFub3RoZXIgcHJvYmxlbSB3aXRoIGluY2x1ZGVzIGFuZCBDKyssIEkgaG9wZSB0aGlzIGlzc3VlIGlzIGZpeGVkCiAgICBmb3IgZ29vZCB0aGlzIHRpbWUKICAgLSBBZGRlZCBhIGZldyB0cmVlIG1vZGlmaWNhdGlvbiBmdW5jdGlvbnM6IHhtbFJlcGxhY2VOb2RlLAogICAgeG1sQWRkUHJldlNpYmxpbmcsIHhtbEFkZE5leHRTaWJsaW5nLCB4bWxOb2RlU2V0TmFtZSBhbmQKICAgIHhtbERvY1NldFJvb3RFbGVtZW50CiAgIC0gVHJpZWQgdG8gaW1wcm92ZSB0aGUgSFRNTCBvdXRwdXQgd2l0aCBoZWxwIGZyb20gQ2hyaXMgTGFoZXkKCgoxLjguMTogRGVjIDE4IDE5OTk6CiAgIC0gdmFyaW91cyBwYXRjaGVzIHRvIGF2b2lkIHRyb3VibGVzIHdoZW4gdXNpbmcgbGlieG1sIHdpdGggQysrIGNvbXBpbGVycwogICAgdGhlICJuYW1lc3BhY2UiIGtleXdvcmQgYW5kIEMgZXNjYXBpbmcgaW4gaW5jbHVkZSBmaWxlcwogICAtIGEgcHJvYmxlbSBpbiBvbmUgb2YgdGhlIGNvcmUgbWFjcm9zIElTX0NIQVIgd2FzIGNvcnJlY3RlZAogICAtIGZpeGVkIGEgYnVnIGludHJvZHVjZWQgaW4gMS44LjAgYnJlYWtpbmcgZGVmYXVsdCBuYW1lc3BhY2UgcHJvY2Vzc2luZywKICAgIGFuZCBtb3JlIHNwZWNpZmljYWxseSB0aGUgRGlhIGFwcGxpY2F0aW9uCiAgIC0gZml4ZWQgYSBwb3N0ZXJpb3JpIHZhbGlkYXRpb24gKHZhbGlkYXRpb24gYWZ0ZXIgcGFyc2luZywgb3IgYnkgdXNpbmcgYQogICAgRHRkIG5vdCBzcGVjaWZpZWQgaW4gdGhlIG9yaWdpbmFsIGRvY3VtZW50KQogICAtIGZpeGVkIGEgYnVnIGluCgoKMS44LjA6IERlYyAxMiAxOTk5OgogICAtIGNsZWFudXAsIGVzcGVjaWFsbHkgbWVtb3J5IHdpc2UKICAgLSB0aGUgcGFyc2VyIHNob3VsZCBiZSBtb3JlIHJlbGlhYmxlLCBlc3BlY2lhbGx5IHRoZSBIVE1MIG9uZSwgaXQgc2hvdWxkCiAgICBub3QgY3Jhc2gsIHdoYXRldmVyIHRoZSBpbnB1dCAhCiAgIC0gSW50ZWdyYXRlZCB2YXJpb3VzIHBhdGNoZXMsIGVzcGVjaWFsbHkgYSBzcGVlZHVwIGltcHJvdmVtZW50IGZvciBsYXJnZQogICAgZGF0YXNldCBmcm9tIENhcmwgTnlnYXJkLAogICAgY29uZmlndXJlIHdpdGggLS13aXRoLWJ1ZmZlcnMgdG8gZW5hYmxlIHRoZW0uCiAgIC0gYXR0cmlidXRlIG5vcm1hbGl6YXRpb24sIG9vcHMgc2hvdWxkIGhhdmUgYmVlbiBhZGRlZCBsb25nIGFnbyAhCiAgIC0gYXR0cmlidXRlcyBkZWZhdWx0ZWQgZnJvbSBEVERzIHNob3VsZCBiZSBhdmFpbGFibGUsIHhtbFNldFByb3AoKSBub3cKICAgIGRvZXMgZW50aXRpZXMgZXNjYXBpbmcgYnkgZGVmYXVsdC4KCgoxLjcuNDogT2N0IDI1IDE5OTk6CiAgIC0gTG90cyBvZiBIVE1MIGltcHJvdmVtZW50CiAgIC0gRml4ZWQgc29tZSBlcnJvcnMgd2hlbiBzYXZpbmcgYm90aCBYTUwgYW5kIEhUTUwKICAgLSBNb3JlIGV4YW1wbGVzLCB0aGUgcmVncmVzc2lvbiB0ZXN0cyBzaG91bGQgbm93IGxvb2sgY2xlYW4KICAgLSBGaXhlZCBhIGJ1ZyB3aXRoIGNvbnRpZ3VvdXMgY2hhcnJlZgoKCjEuNy4zOiBTZXAgMjkgMTk5OToKICAgLSBwb3J0YWJpbGl0eSBwcm9ibGVtcyBmaXhlZAogICAtIHNucHJpbnRmIHdhcyB1c2VkIHVuY29uZGl0aW9uYWxseSwgbGVhZGluZyB0byBsaW5rIHByb2JsZW1zIG9uIHN5c3RlbQogICAgd2VyZSBpdCdzIG5vdCBhdmFpbGFibGUsIGZpeGVkCgoKMS43LjE6IFNlcCAyNCAxOTk5OgogICAtIFRoZSBiYXNpYyB0eXBlIGZvciBzdHJpbmdzIG1hbmlwdWxhdGVkIGJ5IGxpYnhtbCBoYXMgYmVlbiByZW5hbWVkIGluCiAgICAxLjcuMSBmcm9tIENIQVIgdG8geG1sQ2hhci4gVGhlIHJlYXNvbgogICAgaXMgdGhhdCBDSEFSIHdhcyBjb25mbGljdGluZyB3aXRoIGEgcHJlZGVmaW5lZCB0eXBlIG9uIFdpbmRvd3MuIEhvd2V2ZXIKICAgIG9uIG5vbiBXSU4zMiBlbnZpcm9ubWVudCwgY29tcGF0aWJpbGl0eSBpcyBwcm92aWRlZCBieSB0aGUgd2F5IG9mICBhCiAgICAjZGVmaW5lIC4KICAgLSBDaGFuZ2VkIGFub3RoZXIgZXJyb3IgOiB0aGUgdXNlIG9mIGEgc3RydWN0dXJlIGZpZWxkIGNhbGxlZCBlcnJubywgYW5kCiAgICBsZWFkaW5nIHRvIHRyb3VibGVzIG9uIHBsYXRmb3JtcyB3aGVyZSBpdCdzIGEgbWFjcm8KCgoxLjcuMDogU2VwIDIzIDE5OTk6CiAgIC0gQWRkZWQgdGhlIGFiaWxpdHkgdG8gZmV0Y2ggcmVtb3RlIERURCBvciBwYXJzZWQgZW50aXRpZXMsIHNlZSB0aGUgbmFub2h0dHAgbW9kdWxlLgogICAtIEFkZGVkIGFuIGVycm5vIHRvIHJlcG9ydCBlcnJvcnMgYnkgYW5vdGhlciBtZWFuIHRoYW4gYSBzaW1wbGUgcHJpbnRmCiAgICBsaWtlIGNhbGxiYWNrCiAgIC0gRmluaXNoZWQgSUQvSURSRUYgc3VwcG9ydCBhbmQgY2hlY2tpbmcgd2hlbiB2YWxpZGF0aW9uCiAgIC0gU2VyaW91cyBtZW1vcnkgbGVha3MgZml4ZWQgKHRoZXJlIGlzIG5vdyBhIG1lbW9yeSB3cmFwcGVyIG1vZHVsZSkKICAgLSBJbXByb3ZlbWVudCBvZiBYUGF0aAogICAgaW1wbGVtZW50YXRpb24KICAgLSBBZGRlZCBhbiBIVE1MIHBhcnNlciBmcm9udC1lbmQKCkRhbmllbCBWZWlsbGFyZCBhdCAKYnVncy5odG1sCg==