CQkJCUl2eSAKCQkJCS0gVGhlIGFnaWxlIG9wZW4gc291cmNlIGRlcGVuZGVuY3kgbWFuYWdlcgoJCQkJLSBodHRwOi8vaW5jdWJhdG9yLmFwYWNoZS5vcmcvaXZ5CgkJCQk9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoJCQkJCmZvciBkZXRhaWxlZCB2aWV3IG9mIGVhY2ggaXNzdWUsIHBsZWFzZSBjb25zdWx0IGh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9JVlkKCiBDb21taXR0ZXJzCiAJTWFhcnRlZW4gQ29lbmUKIAlYYXZpZXIgSGFuaW4KIAlHaWxsZXMgU2Nva2FydAogCiBDb250cmlidXRvcnMKIAlJbmdvIEFkbGVyCglTdGVwaGFuZSBCYWlsbGllegoJS2FybCBCYXVtCglNaWtrZWwgQmplcmcKCUplZmZyZXkgQmxhdHRtYW4KCU1hdHRoaWV1IEJyb3VpbGxhcmQKCUtyaXN0aWFuIENpYnVsc2tpcwoJU2NvdHQgR29sZHN0ZWluCglQaWVycmUgSORnbmVzdHJhbmQKCVBldGVyIEhheWVzCglNYXR0IEluZ2VyCglBbmRlcnMgSmFubXlyCglDaHJpc3RlciBKb25zc29uCglNYXR0aGlhcyBLaWxpYW4KCUdyZWdvcnkgS2lzbGluZwoJVGF0IExldW5nCglDb3N0aW4gTGVhdQoJQW50b2luZSBMZXZ5LUxhbWJlcnQKCVdpbGxpYW0gTHl2ZXJzCglKYW4gTWF0ZXJuZQoJU3RlcGhlbiBOZXNiaXR0CglKb3NodWEgTmljaG9scwoJQmVybmFyZCBOaXNldAoJR2xlbiBNYXJjaGVzYW5pCglNYXRoaWFzIE11bGxlcgoJUGV0ZXIgT3hlbmhhbQoJRW1tYW51ZWwgUGVsbGVyZWF1CglSb3NoYW4gUHVubm9vc2UKCURhbW9uIFJhbmQKCUNocmlzdGlhbiBSaWVnZQoJSmVhbi1CYXB0aXN0ZSBRdWVub3QKCUFuZHJlYXMgU2FobGJhY2gKCUpvaG4gU2hpZWxkcwoJSm9oYW4gU3R1eXRzCglUamVlcmQgVmVyaGFnZW4KCUpvaG4gV2lsbGlhbXMKCUphcm9zbGF3IFd5cHljaG93c2tpCgogICB2ZXJzaW9uIGluIFNWTgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgogICAyLjAuMC1hbHBoYTItaW5jdWJhdGluZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gTkVXOiBBZGQgY2xlYW5jYWNoZSB0YXNrIChJVlktNTY1KQotIE5FVzogQSBjaGVja3N0eWxlIHJlcG9ydCBpcyBnZW5lcmF0ZWQgKElWWS00ODMpICh0aGFua3MgdG8gSmFuIE1hdGVybmUpCi0gTkVXOiBIaWRlIHByaXZhdGUgb3Igc3BlY2lmaWMgY29uZiB3aGVuIHB1Ymxpc2hpbmcgKElWWS03NykKCi0gSU1QUk9WRU1FTlQ6IEZpbGUgYnVmZmVyIGluY3JlYXNlZCB0byA2NEtCIChJVlktNTUxKQotIElNUFJPVkVNRU5UOiBFeHBvc2UgZGVmYXVsdCBjYWNoZSBsb2NhdGlvbiBhcyBhbiBhbnQgcHJvcGVydHkgKElWWS01NjMpCi0gSU1QUk9WRU1FTlQ6IEV4cG9zZSBJdnkgdmFyaWFibGVzIGFzIEFudCBQcm9wZXJ0aWVzIChJVlktNTY0KQotIElNUFJPVkVNRU5UOiBDaGFuZ2UgZGVmYXVsdCBjYWNoZSBsb2NhdGlvbiAoSVZZLTUzMCkKLSBJTVBST1ZFTUVOVDogVXBncmFkZWQgVkZTIGRlcGVuZGVuY3kgdG8gMS4wIGFuZCByZW1vdmVkIGRlcGVuZGVuY3kgb24gVkZTLXNhbmRib3ggKElWWS00OTgpCi0gSU1QUk9WRU1FTlQ6IFVzZSBtYXZlbjIgcmVwb3NpdG9yeSB0byBkb3dubG9hZCBkZXBlbmRlbmNpZXMKLSBJTVBST1ZFTUVOVDogQWxsb3cgIm1haW4iIHBhcmFtZXRlcnMgdG8gYmUgcGFzc2VkIGRpcmVjdGx5IChpbnN0ZWFkIG9mIHVzaW5nIC1hcmdzIGZsYWcpIChJVlktNDgwKSAodGhhbmtzIHRvIEFyY2hpZSBDb2JicykKLSBJTVBST1ZFTUVOVDogUmVtb3ZlIEBhdXRob3IgdGFncyAodGhhbmtzIHRvIFN0ZXBoYW5lIEJhaWxsaWV6KQotIElNUFJPVkVNRU5UOiBSZW1vdmUgdXNlIG9mIGRlcHJlY2F0ZWQgZWxlbWVudHMgaW4gaXZ5c2V0dGluZ3MueG1sIChJVlktNTA1KSAod2l0aCBjb250cmlidXRpb24gZnJvbSBKYW4gTWF0ZXJuZSkKLSBJTVBST1ZFTUVOVDogQnVpbGRsaXN0IG9ubHlkaXJlY3RkZXAgYXR0cmlidXRlIChJVlktNDczIGFuZCBJVlktNTA0KSAod2l0aCBjb250cmlidXRpb24gZnJvbSBNaWtrZWwgQmplcmcpCi0gSU1QUk9WRU1FTlQ6IENvZGUgLyBYTUwgUG9saXNoZWQgKElWWS01NTQpICh3aXRoIGNvbnRyaWJ1dGlvbiBmcm9tIFRqZWVyZCBWZXJoYWdlbikKLSBJTVBST1ZFTUVOVDogSmF2YWRvYyBpbXByb3ZlbWVudHMgKElWWS01NDQpICh3aXRoIGNvbnRyaWJ1dGlvbiBmcm9tIFRqZWVyZCBWZXJoYWdlbikKLSBJTVBST1ZFTUVOVDogVW5pdCB0ZXN0IGltcHJvdmVtZW50cyAoSVZZLTU0NSkgKHRoYW5rcyB0byBUamVlcmQgVmVyaGFnZW4pCi0gSU1QUk9WRU1FTlQ6IERlcGVuZGVudCBqYXJzIG1pc3NpbmcgaW4gaXZ5IGJpbmFyaWVzIChJVlktNDgxKQoKLSBGSVg6IEFudCB0YXJnZXQgImNsZWFuIiBvbiBJdnkgbXVsdGktcHJvamVjdCB0dXRvcmlhbCBwb2ludHMgdG8gd3JvbmcgY2FjaGUgZGlyZWN0b3J5LiAoSVZZLTU0OCkKLSBGSVg6IFZhcmlhYmxlcyBub3QgcmVwbGFjZWQgZHVyaW5nIGRlbGl2ZXIgKElWWS01MjApICh0aGFua3MgdG8gSm9obiBXaWxsaWFtcykKLSBGSVg6IFhtbE1vZHVsZURlc2NyaXB0b3JXcml0ZXIgZG9lcyBub3QgcHJvZHVjZSBtYXRjaGVyIGF0dHJpYnV0ZSBvbiBpbmNsdWRlIGFuZCBleGNsdWRlIHJ1bGVzIChJVlktNTU2KQotIEZJWDogcG9tLmdyb3VwSWQgaXMgbm90IHJlY29nbml6ZWQgaW4gbWF2ZW4gMiBwb20gcGFyc2VyIChJVlktNTUwKQotIEZJWDogRXZpY3RlZCBtb2R1bGVzIHJlcG9ydCBkZXBlbmRzIG9uIHRoZSBvcmRlciBvZiB0aGUgZGVwZW5kZW5jaWVzIChJVlktNTI2KQotIEZJWDogSXZ5IGRvZXMgbm90IHdvcmsgb24gVHVya2lzaCBtYWNoaW5lcyAoSVZZLTY1KQotIEZJWDogSXZ5IGRvZXMgbm90IGhhbmRsZSBtdWx0aXBsZSB2ZXJzaW9uIGRlcGVuZGVuY2llcyBpbiBtYXZlbjIgcG9tcyBjb3JyZWN0bHkgKElWWS00OTQpCi0gRklYOiBwb20gcGFyc2VyIGRvZXNuJ3QgbmVjZXNzYXJpbHkgcHJvY2Vzc2VzIGFsbCBpbXBvcnRhbnQgaW5mb3JtYXRpb24gKElWWS01MjQpCi0gRklYOiA8aW5mbz4gZWxlbWVudCBvZiBJdnkgZmlsZSBpbiBjYWNoZSBpcyBub3QgdXBkYXRlZCB3aGVuIHVzaW5nIG5hbWVzcGFjZXMgKElWWS01MTYpCi0gRklYOiBSZXRyaWV2ZSBBbnQgdGFzayBpZ25vcmVzIHJlc29sdmVJZCBhdHRyaWJ1dGUgKElWWS01MjIpICh0aGFua3MgdG8gU2NvdHQgR29sZHN0ZWluKQotIEZJWDogVGhlIGRlcHJlY2F0ZWQgImtlZXAiIGF0dHJpYnV0ZSBvbiBwb3N0IHJlc29sdmUgdGFza3MgY2F1c2VzIGFuIGVycm9yIChJVlktNTE3KQotIEZJWDogU29tZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMgbm90IHJldHJpZXZlZCAoSVZZLTQwMCkKLSBGSVg6ICR7dmVyc2lvbn0gcHJvcGVydHkgbm90IHJlY29nbml6ZWQgaW4gcG9tcyAoSVZZLTUxMikKLSBGSVg6IEJ1ZyBvbiBoYW5kbGluZyBkZXBlbmRlbmN5IGFydGlmYWN0cyB3aGVuIGEgbW9kdWxlIGNvbmZpZ3VyYXRpb24gaXMgc3BlY2lmaWVkIChJVlktNTA3KQotIEZJWDogQ29uZmlndXJlIGZhaWxzIHdoZW4gaGF2aW5nIGh0dHBjbGllbnQgaW4gY2xhc3NwYXRoIHdpdGhvdXQgY29tbW9ucy1sb2dnaW5nIChJVlktNTAyKQotIEZJWDogcGFja2FnaW5nIGRhdGEgbm90IHBhcnNlZCBpbiBtYXZlbiAyIHBvbSAoSVZZLTUwMCkgKHRoYW5rcyB0byBKZWZmcmV5IEJsYXR0bWFuKQotIEZJWDogaW5zdGFsbCBhbnQgdGFzazogcmVxdWlyZXMgZGVmYXVsdCByZXNvbHZlciBpbiBpdnkgc2V0dGluZ3MgKElWWS00NzcpCi0gRklYOiBBbnQgcHJvamVjdCByZWZlcmVuY2UgbG9zdCBmcm9tIGNvbnRleHQgb24gbXVsdGlwbGUgYW50IGNhbGxzIGluIHNpbmdsZSB0aHJlYWQgKElWWS00OTcpICh0aGFua3MgdG8gSmFyb3NsYXcgV3lweWNob3dza2kpCi0gRklYOiBFT0wgaW4gdGhlIGRvYyBwYWdlcyAoSVZZLTQ3MCkKLSBGSVg6IENhY2hlIGlzIHN0b3JpbmcgQXJ0aWZhY3RPcmlnaW4gcHJvcGVydGllcyB3aXRoIG5vIGd1YXJhbnRlZSBvZiB1bmljaXR5IGFuZCB0eXBlcyB0ZWxlc2NvcGUgZHVyaW5nIHJlc29sdmUuIChJVlktNDMwKSAodGhhbmtzIHRvIFN0ZXBoYW5lIEJhaWxsaWV6KQotIEZJWDogaXZ5Omluc3RhbGwgYW50IHRhc2sgZG9lcyBub3QgZmFpbCBvbiBlcnJvciAoSVZZLTQ3NSkgKHRoYW5rcyB0byBKZWZmcmV5IEJsYXR0bWFuKQotIEZJWDogQ3JlZGVudGlhbHMgYXJlIHNob3duIGluIGJ1aWxkIGxvZyBldmVuIGlmIGRlYnVnIGlzIG5vdCBlbmFibGVkIChJVlktNDg2KSAodGhhbmtzIHRvIEdpbGxlcyBTY29rYXJ0KQotIEZJWDogUG9zdC1SZXNvbHZlIHRhc2sgc2hvdWxkbid0IHNldCB0aGUgJ3Jlc29sdmVpZCcgKElWWS00ODkpCi0gRklYOiBidWlsZCBmYWlscyB3aXRob3V0IGVtbWEgY29kZSBjb3ZlcmFnZSBKQVJzIHByZXNlbnQgKElWWS00NzgpCi0gRklYOiBidWlsZGxpc3QgYnJva2VuIC0gcmVncmVzc2lvbiBpbiAyLjAuMC1hbHBoYTEtaW5jdWJhdGluZyAoSVZZLTQ5MykKLSBGSVg6IENpcmN1bGFyIGRlcGVuZGVuY3kgc3RhcnRlZ3kgaW4gYnVpbGRsaXN0IChJVlktNTA5KQotIEZJWDogaXZ5IHNob3VsZCBzdG9wIHRlbGxpbmcgbWUgb2ZmIHR3aWNlIGZvciBpdnljb25mLnhtbCBmaWxlcyAoSVZZLTUxMykKLSBGSVg6IEFsbG93IHJlbGF0aXZlIHBhdGggaW4gaXZ5LnhtbCBmaWxlcyAoSVZZLTM0NykKCgogICAyLjAuMC1hbHBoYTEtaW5jdWJhdGluZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gTkVXOiBkZWZpbmUgYXJ0aWZhY3RzIG5vdCBkZWNsYXJlZCBieSB0aGUgZGVwZW5kZW5jeSBtb2R1bGUgZGVzY3JpcHRvciAoSVZZLTQxOSkKLSBORVc6IE1vZHVsZSB3aWRlIGV4Y2x1ZGUgKElWWS00MzEpCi0gTkVXOiBUaGUgZGVmYXVsdCBwdWJsaWMgcmVzb2x2ZXIgdXNlZCBpcyBub3cgaWJpYmxpbyB3aXRoIG0yIGNvbXBhdGlibGUgbW9kZSAoSVZZLTQ2MykKCi0gSU1QUk9WRTogT1NHSWZ5IGl2eSBhcnRpZmFjdHMgKElWWS00NjQpICh0aGFua3MgdG8gQ29zdGluIExlYXUpCi0gSU1QUk9WRTogTGV0IHVzZXIgc3BlY2lmeSBJdnkgZmlsZSB3aGVuIHVzaW5nIGEgcG9zdC1yZXNvbHZlIHRhc2sgKElWWS00NTUpCi0gSU1QUk9WRTogSXZ5QXJ0aWZhY3RQcm9wZXJ0eSBhbmQgSXZ5QXJ0aWZhY3RSZXBvcnQgdGFza3Mgc2hvdWxkIGJlIGEgcG9zdCByZXNvbHZlIHRhc2sgKElWWS00NTIpCi0gSU1QUk9WRTogUmVuYW1lIGl2eSBjb25maWd1cmF0aW9uIGluIHNldHRpbmdzIHRvIHJlbW92ZSBhbWJpZ3VpdHkgb24gY29uZmlndXJhdGlvbiBtZWFuaW5nIChJVlktNDM4KQotIElNUFJPVkU6IFBsZWFzZSB0eXBlZGVmIENhY2hlUmVzb2x2ZXIgYXMgImNhY2hlIiBmb3IgdXMgKElWWS0zNTkpCi0gSU1QUk9WRTogaXZ5OnJldHJpZXZlIHNob3VsZCBiZSBhYmxlIHRvIGNyZWF0ZSBzeW1saW5rcyAoSVZZLTM1MykgKHRoYW5rcyB0byBKb2huIFdpbGxpYW1zKQotIElNUFJPVkU6IEFiaWxpdHkgdG8gaGF2ZSBtdWx0aXBsZSByb290cyBpbiB0aGUgPGl2eTpidWlsZGZpbGVsaXN0PiB0YXNrIChJVlktMzQwKSAodGhhbmtzIHRvIE1hdHQgSW5nZXIpCi0gSU1QUk9WRTogUmVmYWN0b3JpbmcgLyBkb2N1bWVudGF0aW9uIC8gdGVzdCBvZiBtYXRjaGVyIHBhY2thZ2UgKElWWS0zNzUpICh0aGFua3MgdG8gU3RlcGhhbmUgQmFpbGxpZXopCi0gSU1QUk9WRTogQWRkIGEgdW5pdCB0ZXN0IHRvIHZlcmlmeSB0aGF0IGxhdGVzdC5pbnRlZ3JhdGlvbiBhY2NlcHRzIHJlbGVhc2VkIG1vZHVsZXMgKElWWS0zOTQpICh0aGFua3MgdG8gR2lsbGVzIFNjb2thcnQpCi0gSU1QUk9WRTogTmV3ICJtb2R1bGVzIGluIHVzZSIgc2VjdGlvbiBpbiBjb25zb2xlIHJlcG9ydCBhdCB0aGUgZW5kIG9mIHJlc29sdmUgKElWWS0zNzMpICh0aGFua3MgdG8gSm9obiBXaWxpYW1zKQotIElNUFJPVkU6IEdlbmVyYXRlZCBYTUwgcmVwb3J0cyBub3cgY29udGFpbnMgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVzb2x2ZWQgbW9kdWxlIChJVlktNDQ2KQoKLSBGSVg6IGl2eS1yZXRyaWV2ZSBmYWlsdXJlIHdoZW4gZXhwbGljaXQgYWJzb2x1dGUgJ2l2eS5kZXAuZmlsZScgcGF0aCBzcGVjaWZpZWQgKElWWS0zOTYpCi0gRklYOiBJdnlQb3N0UmVzb2x2ZSBUYXNrIGRvZXNuJ3QgcmV1c2UgSXZ5IGZpbGUgb2YgcHJldmlvdXMgcmVzb2x2ZSAoSVZZLTQ1OCkKLSBGSVg6IEl2eSBzdGFuZGFsb25lIGlzIHBhc3NpbmcgbnVsbCBhcmdzIHRvIG1haW4gbWV0aG9kIHdoZW4gaW52b2tpbmcgd2l0aCBubyBhcmdzIChJVlktNDU3KQotIEZJWDogSW52YWxpZCBlcnJvciByZXBvcnQgd2l0aCBtMmNvbXBhdGlibGUgcmVzb2x2ZXIgKElWWS00NTYpCi0gRklYOiBJdnlQb3N0UmVzb2x2ZSBUYXNrIGRvZXNuJ3QgdXNlIHNwZWNpZmllZCBjYWNoZSBmb3IgdGhlIHJlc29sdmUgKElWWS00NTMpCi0gRklYOiBYbWxNb2R1bGVEZXNjcmlwdG9yV3JpdGVyVGVzdCBub3Qgd29ya2luZyB3aXRoIEphdmEgNiAoSVZZLTM3NCkKLSBGSVg6IENvbmZsaWN0IG1hbmFnZXJzIGlnbm9yZWQsIHdoZW4gYXNzaWduZWQgdG8gbW9kdWxlcyBpbiBJdnkgY29uZmlndXJhdGlvbiAoc2V0dGluZywgaXZ5Y29uZi54bWwpIChJVlktNDQ4KQotIEZJWDogSXZ5IHNob3VsZCBmYWlsIGlmICc7JyBoYXMgYmVlbiB1c2VkIGluIHB1YmxpY2F0aW9ucy9hcnRpZmFjdC9AY29uZiBvZiBpdnkueG1sIChJVlktNDQxKQotIEZJWDogSXZ5IHNob3VsZCBmYWlsIHdoZXJlIGRlcGVuZGVuY3kgdXNlcyB1bmRlZmluZWQgY29uZmlndXJhdGlvbiAoSVZZLTQ0MikKLSBGSVg6IER5bmFtaWMgcmV2aXNpb24gbm90IGNhbGN1bGF0ZWQgcHJvcGVybHkgd2hlbiB1c2luZyBtdWx0aXBsZSBkaXJlY3RvcmllcyAoSVZZLTQyNykKLSBGSVg6IExhdGVzdFJldmlzaW9uU3RyYXRlZ3kuc29ydCgpIGRvZXNuJ3Qgc29ydCBhcyBzcGVjaWZpZWQgKElWWS00MzUpCi0gRklYOiBzZXR0aW5nIG0yY29tcGF0aWJsZSBvbiBpYmlibGlvIHJlc29sdmVyIG92ZXJ3cml0ZSByb290IGFuZCBwYXR0ZXJuIHNldHRpbmdzIChJVlktNDM3KQotIEZJWDogaXZ5LnJldmlzaW9uIHByb3BlcnR5IG5vdCBzZXQgY29ycmVjdGx5IGZvciBzZWNvbmQgcmVzb2x2ZSAoSVZZLTQyOSkKLSBGSVg6IE5QRSB3aGVuIG5vIG9yZ2FuaXNhdGlvbiBvciBubyBuYW1lIGlzIHByb3ZpZGVkIGluIG1vZHVsZSBlbGVtZW50IG9mIGl2eWNvbmYgKElWWS00MjIpCi0gRklYOiBGaWxlVXRpbCNjb3B5KEZpbGUgc3JjLCBGaWxlIGRlc3QsIENvcHlQcm9ncmVzc0xpc3RlbmVyIGwsIGJvb2xlYW4gb3ZlcndyaXRlKSAoSVZZLTQyMCkKLSBGSVg6IEludmFsaWQgcG9tIHBhcnNpbmcgd2hlbiB2ZXJzaW9uIGlzIG9ubHkgZGVjbGFyZWQgaW4gcGFyZW50IChJVlktNDM2KQotIEZJWDogJHtwcm9qZWN0Lmdyb3VwSWR9IGFuZCAke3Byb2plY3QudmVyc2lvbn0gbm90IHByb2Nlc3NlZCBjb3JyZWN0bHkgaW4gcG9tcyAoSVZZLTQyNSkKLSBGSVg6IEluY29ycmVjdCBwb20gcGFyc2luZyB3aXRoIHByb2ZpbGUgKElWWS00MjMpCi0gRklYOiBJdnkgZG9lc24ndCByZWNvZ25pemUgbWF2ZW4yIGNsYXNzaWZpZXJzIChJVlktNDE4KQotIEZJWDogUG9tTW9kdWxlRGVzY3JpcHRvclBhcnNlciBmYWlscyB3aXRoIG5lc3RlZCBwcm9maWxlIGRlcGVuZGVuY3kgKElWWS0zOTIpICh0aGFua3MgdG8gV2lsbGlhbSBMeXZlcnMpCi0gRklYOiBTdGF0aWMgcmV2aXNpb24gcmVwbGFjZW1lbnQgaXMgbm90IHdvcmtpbmcgd2hlbiBkZWxpdmVyaW5nIGFuIGFydGlmYWN0IHdpdGggYSBkZXBlbmRlbmN5IGhhdmluZyBleHRyYSBhdHRyaWJ1dGVzIChJVlktNDE1KQotIEZJWDogU3RhdGljIHJldmlzaW9uIHJlcGxhY2VtZW50IGlzIG5vdCB3b3JraW5nIHdoZW4gZGVsaXZlcmluZyBhbiBhcnRpZmFjdCB3aXRoIGEgZGVwZW5kZW5jeSBvbiBhIGJyYW5jaCAoSVZZLTQwNCkKLSBGSVg6IGxhdGVzdC10aW1lIGNvbmZsaWN0IG1hbmFnZXIgbm90IHdvcmtpbmcgcHJvcGVybHkgKElWWS00MDcpCi0gRklYOiBMYXRlc3RSZXZpc2lvblN0cmF0ZWd5IGRvIG5vdCBjb25zaWRlciBhbGwgZHluYW1pYyByZXZpc2lvbnMgcHJvcGVybHkgKElWWS0zODMpICh0aGFua3MgdG8gSm9obiBXaWxsaWFtcyBmb3IgdGhlIHVuaXQgdGVzdCkKLSBGSVg6IElPRXhjZXB0aW9uIGR1cmluZyBwdWJsaXNoIGNhdXNlcyBOdWxsUG9pbnRlckV4Y2VwdGlvbiAoSVZZLTM3MSkKLSBGSVg6IENvbW1lbnRzIGluIGl2eS54bWwgZHVwbGljYXRlZCAoSVZZLTMzNikgKHRoYW5rcyB0byBHaWxsZXMgU2Nva2FydCkKLSBGSVg6IEl2eSBmYWlsdXJlIHdoZW4gdGhlIGl2eS54bWwgZmlsZSBjb250YWlucyBub24gVVMtQVNDSUkgY2hhcmFjdGVycyAoSVZZLTM0NikgKHRoYW5rcyB0byBHaWxsZXMgU2Nva2FydCkKLSBGSVg6IFVybHJlc29sdmVyIGlzIG5vdCBwb3NzaWJsZSB0byB1c2UgZHluYW1pYyByZXZpc2lvbnMgb24gbm9uc3RhbmRhcmQgcmVwb3NpdG9yeSBzdHJ1Y3R1cmUgKElWWS0zNTApICh0aGFua3MgdG8gUGllcnJlIEjkZ25lc3RyYW5kKQoKCiAgIHZlcnNpb24gMS40LjEgLSAyMDA2LTExLTA5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSBJTVBST1ZFOiBhYmlsaXR5IHRvIHJlYnVpbGQgYWxsIGRlcGVuZGVudCBwcm9qZWN0cyBmcm9tIGEgbGVhZiAoSVZZLTEwMSkKLSBJTVBST1ZFOiBBcnRpZmFjdCBwYXR0ZXJuIGxpc3QgYXR0cmlidXRlIGZvciB0aGUgaXZ5OnB1Ymxpc2ggKElWWS0xMTMpCi0gSU1QUk9WRTogTWVhc3VyZSBjb2RlIGNvdmVyYWdlIChJVlktMzIzKQotIElNUFJPVkU6IGFkZCByZWxlYXNlIHRhcmdldCB0byBidWlsZCBmaWxlIChJVlktMzM5KQotIElNUFJPVkU6IEFkZCBhICdjb25mJyBwYXJhbWV0ZXIgdG8gdGhlIGl2eSAncHVibGlzaCcgYW50IHRhc2sgKElWWS0zMjIpICh0aGFua3MgdG8gRW1tYW51ZWwgUGVsbGVyZWF1KQoKLSBGSVg6IHJldHJpZXZlIGZhaWxzIHdoZW4gcmVzb2x2ZSBpcyBkb25lIHdpdGggdXNlT3JpZ2luIHNldCB0byB0cnVlIChJVlktMzA0KQotIEZJWDogSVZZIGNvbXBsYWlucyBhYm91dCBub24tZXhpc3RlbnQgcmVwb3J0cyBpbiB0aGUgY2FjaGUgZGlyZWN0b3J5IChJVlktMzE1KQotIEZJWDogVHlwbyBpbiBmYWlsdXJlcHJvcGVydHkgYXR0cmlidXRlIG9mIEFudCByZXNvbHZlIHRhc2sgKElWWS0zMjcpICh0aGFua3MgdG8gSmVhbi1CYXB0aXN0ZSBRdWVub3QpCi0gRklYOiBpdnk6cmVzb2x2ZSB1c2VPcmlnaW4gZmFpbHMgdG8gYmVoYXZlIGNvcnJlY3RseSAoSVZZLTMzMikKLSBGSVg6IENoYWluVmVyc2lvbk1hdGNoZXIgZG9lc24ndCBoYW5kbGUgSXZ5QXdhcmUgY2hpbGRyZW4gdmVyc2lvbiBtYXRjaGVycyAoSVZZLTMzMSkKLSBGSVg6IGxhdGVzdC48c3RhdHVzPiBkb2VzIG5vdCB3b3JrIHByb3Blcmx5IHdoZW4gbm8gbWF0Y2hpbmcgcmV2aXNpb24gZXhpc3QgKElWWS0zMTgpCi0gRklYOiBhdHRyaWJ1dGUgbmFtZSBpbiBtYWNyb2RlZiBpcyBub3QgaGFuZGxlZCBhcyBleHBlY3RlZCAoSVZZLTMxOSkKLSBGSVg6IGNvbmZtYXBwaW5nb3ZlcnJpZGUgZG9lc24ndCB3b3JrIGZvciBjb25maWd1cmF0aW9ucyBleHRlbmRpbmcgZnJvbSAiKihwdWJsaWMpIiAoSVZZLTMyNikKCgogICB2ZXJzaW9uIDEuNCAtIDIwMDYtMTAtMDkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpWZXJzaW9uIDEuNC1SQzIgaGFzIGJlZW4gcHJvbW90ZWQgdG8gMS40IG9uIDIwMDYtMTAtMDksIHdpdGggZG9jdW1lbnRhdGlvbiB1cGRhdGUuCgpLbm93biBidWdzIGFuZCBsaW1pdGF0aW9uczoKLSByZWZlcmVuY2VzIGluIHJlc29sdmVycyBhcmUgbm90IHJlc29sdmVkICdpbi10aW1lJyB3aXRoIG1hY3JvZGVmIChJVlktMzE5KQotIGxhdGVzdC48c3RhdHVzPiBkb2VzIG5vdCB3b3JrIHByb3Blcmx5IHdoZW4gbm8gbWF0Y2hpbmcgcmV2aXNpb24gZXhpc3QgKElWWS0zMTgpCi0gSVZZIGNvbXBsYWlucyBhYm91dCBub24tZXhpc3RlbnQgcmVwb3J0cyBpbiB0aGUgY2FjaGUgZGlyZWN0b3J5IChJVlktMzE1KQotIHJldHJpZXZlIGZhaWxzIHdoZW4gcmVzb2x2ZSBpcyBkb25lIHdpdGggdXNlT3JpZ2luIHNldCB0byB0cnVlIChJVlktMzA0KQoKCiAgIHZlcnNpb24gMS40LVJDMiAtIDIwMDYtMDktMjcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotIEZJWDogbTJjb21wYXRpYmxlIGZsYWcgaXMgaWdub3JlZCBmb3IgZGlzcGxheSBvZiBmYWlsZWQgYXJ0aWZhY3Qgc2VhcmNoZXMgKElWWS0zMDMpCi0gRklYOiBBbnRDYWxsVHJpZ2dlclRlc3QgYW5kIEFudEJ1aWxkVHJpZ2dlclRlc3QgZmFpbCB3aGVuIHJ1biBmcm9tIGl2eSBidWlsZC54bWwgKElWWS0zMTApCi0gRklYOiBDbGFzc2xvYWRlciBwcm9ibGVtIHdpdGggYW50IChJVlktMzExKQotIEZJWDogTWFrZSByZXNvbHZlIG92ZXJ2aWV3IG1vcmUgY29tcGFjdCAoSVZZLTI5OSkKLSBGSVg6IENvdWxkIG5vdCB3cml0ZSB0byAidG1wOi8vL3dlYmRhdl90bXAuYzEiIGJlY2F1c2UgaXQgaXMgcmVhZC1vbmx5IChJVlktMzEyKQoKICAgdmVyc2lvbiAxLjQtUkMxIC0gMjAwNi0wOS0xNwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSW5jb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgdmVyc2lvbnM6Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoqIHVzYWdlOgogIC0gbm8ga25vd24gbWFqb3IgaW5jb21wYXRpYmxpdHkKICAtIGJ1aWxkIGxpc3QgdGFzayBub3cgcmVxdWlyZXMgYSBjb25maWd1cmVkIGl2eSBpbnN0YW5jZSAoY29uZmlndXJlIHdpbGwgYXV0b21hdGljYWxseSBiZSBjYWxsZWQgaWYgeW91IGRvbid0IGNhbGwgaXQgZXhwbGljaXRseSkKICAtIHB1Ymxpc2ggbm93IHJlcXVpcmVzIHRoZSBwdWJsaXNoZWQgaXZ5IGZpbGUgdG8gaGF2ZSB0aGUgcHVibGlzaGVkIHJldmlzaW9uIChhdXRvbWF0aWMgaWYgeW91IHVzZSBkZWxpdmVyKQogIAoqIEFQSToKICAtIE51bWVyb3VzIEFQSSBjaGFuZ2VzIGVzcGVjaWFsbHkgaW4gdGhlIEJhc2ljUmVzb2x2ZXIgY2xhc3MgYW5kIHN1YmNsYXNzZXMgZHVlIHRvIHRoZSBpbnRyb2R1Y3Rpb24gb2YgVmVyc2lvbk1hdGNoZXIsIAogIAl0aGlzIG1heSBicmVhayBzb21lIGN1c3RvbSBkZXBlbmRlbmN5IHJlc29sdmVycyBvciBvdGhlciB0b29scyBvciBwbHVnaW5zIGRlcGVuZGluZyBkaXJlY3RseSBvbiBJdnkgQVBJCgpDaGFuZ2VzOgotLS0tLS0tLQoqIHRoYW5rcyB0byBKYXlhc29mdDoKICAtIE5FVzogaXZ5IHJlcG9ydCBnZW5lcmF0ZSBmdWxsIGdyYXBoIGZyb20gYXV0b21hdGVkIGJ1aWxkIChJVlktMTU1KQogIC0gTkVXOiBzdXBwb3J0IGZvciBidWlsZCBudW1iZXIgY2FsY3VsYXRpb24gKElWWS0yNzYpCiAgLSBORVc6IGZpbmQgbW9kdWxlcyBpbiByZXBvc2l0b3J5IChJVlktMjc1KQogIC0gTkVXOiBleHBsaWNpdGx5IHNwZWNpZnkgYXJ0aWZhY3QgZG93bmxvYWQgVVJMIChJVlktMjcxKQogIC0gTkVXOiBpbnRyb2R1Y2UgYnJhbmNoIG1hbmFnZW1lbnQgKElWWS0yNjkpCiAgLSBORVc6IHJlc29sdmUgZGVwZW5kZW5jaWVzIGRpcmVjdGx5IHdpdGhvdXQgdXNpbmcgYW4gaXZ5IGZpbGUgKElWWS0yNjgpCiAgLSBORVc6IGFiaWxpdHkgdG8gaW52b2tlIGFueSBidWlsZCBzY3JpcHRzIGZvciBkZXBlbmRlbmNpZXMgKElWWS02OCkKICAtIE5FVzogc3VwcG9ydCBzZnRwIHJlcG9zaXRvcnkgKElWWS0yNjcpCiAgLSBORVc6IHBsdWdnYWJsZSB2ZXJzaW9uIG1hdGNoZXIgKElWWS0yMTkpCiAgLSBORVc6IHN1cHBvcnQgZm9yIHZlcnNpb24gcmFuZ2VzIChJVlktMjk1KQogIC0gTkVXOiBkZXBlbmRlbmN5IGJhc2VkIG9uIGRlcGVuZGVuY3kgc3RhdHVzIChJVlktNDcpCiAgLSBORVc6IGFkZCBwb3NzaWJpbGl0eSB0byBkZWZpbmUgZXh0cmEgYXR0cmlidXRlcyBpbiBpdnkgZmlsZXMgKElWWS0yMTcpCiAgLSBORVc6IG9wdGlvbiB0byBvbWl0IHNwZWNpZmljIGNvbmZzIGFuZCBhbGxvdyB0aGUgcmVzdCAoSVZZLTY2KQogIC0gTkVXOiB1c2UgY3VzdG9tIGNsYXNzbG9hZGVyIGZvciBwbHVnaW5zIChJVlktMjIwKQogIC0gTkVXOiBhZGRpbmcgdG8gU1BFQ0lBTF9NRUFOSU5HUyBpbiBMYXRlc3RSZXZpc2lvblN0cmF0ZWd5IChJVlktMTIxKQogIC0gTkVXOiBBbGxvdyB1c2Ugb2Ygc3lzdGVtIHByb3BlcnRpZXMgaW4gaXZ5Y29uZi54bWwgKElWWS0yMjgpCgogIC0gSU1QUk9WRTogYWxsb3cgdG8gdXNlIGZpbGUtc3lzdGVtIHJlcG9zaXRvcnkgZGlyZWN0bHkgd2l0aG91dCBjYWNoZSAoSVZZLTIxMSkKICAtIElNUFJPVkU6IGRlbGl2ZXIgdGFzayB1c2UgYSBkZWZhdWx0IHZhbHVlIGZvciByZXZpc2lvbiAoSVZZLTI1MikKICAtIElNUFJPVkU6IGJldHRlciBkb2N1bWVudGF0aW9uIGRpc3RyaWJ1dGlvbiAoSVZZLTI3NCkgLSBpbiBwcm9ncmVzcwogIC0gSU1QUk9WRTogZGVmaW5lIGNvbmZsaWN0IG1hbmFnZXIgcGVyIG9yZ2FuaXNhdGlvbi9tb2R1bGUgaW4gaXZ5Y29uZiAoSVZZLTI3MCkKICAtIElNUFJPVkU6IHRyYW5zaXRpdmUgcGFyYW1ldGVyIGluIHJlc29sdmUgKElWWS0yMSkKICAtIElNUFJPVkU6IGFkZCBzeW5jaW5nIGZlYXR1cmUgaW4gcmV0cmlldmUgKElWWS0zMykKICAtIElNUFJPVkU6IHVzZSBvZiBtZDUgYW5kL29yIHNoYTEgZmlsZXMgdG8gY2hlY2sgZG93bmxvYWRzIChJVlktMjcpCiAgLSBJTVBST1ZFOiBwb3NzaWJsZSB0byB1c2UgbTJjb21wYXRpYmxlIHdpdGhvdXQgYXV0b21hdGljYWxseSB1c2luZyBQT01zIGFzIHdlbGwgKElWWS0yNjMpCiAgLSBJTVBST1ZFOiBzdXBwb3J0IGZvciBjaXJjdWxhciBkZXBlbmRlbmNpZXMgKElWWS0yMDIpCiAgLSBJTVBST1ZFOiBtYWtlIHN0YXR1cyBsaXN0IGNvbmZpZ3VyYWJsZSAoSVZZLTI0MikKICAtIElNUFJPVkU6IHVzZSBvbmx5IGl2eSBwYXR0ZXJucyBmb3IgbGlzdGluZyByZXZpc2lvbnMgd2hlbiBtb2R1bGUgZGVzY2lwdG9yIGlzIHJlcXVpcmVkIChhbGxvd25vbWQgPSBmYWxzZSkgKElWWS0xNjYpCiAgLSBJTVBST1ZFOiBpbXBsZW1lbnQgc3RyaWN0IGhhbHRvbmZhaWx1cmUgaWYgaXZ5LnhtbCBpcyBub3QgZm91bmQgKElWWS0xMTApCiAgLSBJTVBST1ZFOiBhcnRpZmFjdCdzICJuYW1lIiBhdHRyaWJ1dGUgY291bGQgYmUgb21pdHRlZCAoSVZZLTIzMSkKICAtIElNUFJPVkU6IGl2eSBzdGFuZGFsb25lIG5vdyByZXR1cm4gZXJyb3Igc3RhdHVzIChJVlktMTUyKQogIC0gSU1QUk9WRTogbG9nIG1lc3NhZ2VzIGRvIG5vdCBkaXNwbGF5IG1vc3Qgc3BlY2ZpYyByZXNvbHZlciBuYW1lIChJVlktMTcwKQogIC0gSU1QUk9WRTogcHJpbnRzIFVSTCBiZWZvcmUgZG93bmxvYWRpbmcgaW4gdmVyYm9zZSBtb2RlIChJVlktMjU3KQogIC0gSU1QUk9WRTogaW5jb3JyZWN0IHZhbHVlIGluIHN0YXR1cyBhdHRyaWJ1dGUgY2F1c2VzIHNpbGVudCBmYWlsdXJlIChJVlktMjU5KQogIC0gSU1QUk9WRTogc3Vwb3J0IGVtcHR5IGRlcGVuZGVuY2llcyB0YWcgaW4gYW4gaXZ5IGZpbGUgKElWWS0yODEpCiAgLSBJTVBST1ZFOiBpc29sYXRlIGRlcGVuZGVuY3kgcmVzb2x1dGlvbiBmcm9tIGFydGlmYWN0IGRvd25sb2FkaW5nIChJVlktMjU0KQogIC0gSU1QUk9WRTogUGFzcyBhcnRpZmFjdCB0byByZXBvc2l0b3J5IHdoZW4gY2FsbGluZyAicHV0IiAoSVZZLTE5MikKICAtIElNUFJPVkU6IERvIG5vdCBwdWJsaXNoIGl2eSBmaWxlIHdpdGggYmFkIHJldmlzaW9uLCBhbmQgYWxsb3cgdG8gZm9yY2UgdGhlIGRlbGl2ZXIgd2hlbiBjYWxsaW5nIHB1Ymxpc2ggdGFzayAoSVZZLTI0NSkKCiAgLSBGSVg6IFByb2JsZW0gd2l0aCBtdWx0aXBsZSBhcnRpZmFjdCBpbmNsdWRlcyBpbiB0cmFuc2l0aXZlIGRlcGVuZGVuY2llcyAoSVZZLTI4MykKICAtIEZJWDogRW5kbGVzcyByZWN1cnNpb24gaW4gcmVwb3J0IChJVlktMjg0KQogIC0gRklYOiBodHRwIHVybCBsaXN0ZXIgZG9lc24ndCB3b3JrIHdoZW4gbGluayB0ZXh0IGhhcyBzcGFjZXMgKElWWS0yODIpCiAgLSBGSVg6IEluY29ycmVjdCBhbnQgbG9nIGxldmVsIChJVlktMjc5KQogIC0gRklYOiBXcm9uZyByZXNvbHV0aW9uIG9mIGRlcGVuZGVuY2llcyBpZiBhcnRpZmFjdHMgc3BlY2lmaWVkIGV4cGxpY2l0bHkgKElWWS0yNjEpCiAgLSBGSVg6IE11bHRpcGxlIHZlcnNpb25zIG9mIGRlcGVuZGVuY2llcyBhcHBlYXJpbmcgaW4gcmV0cmlldmUgKElWWS0yNjQpCiAgLSBGSVg6IFRvbyBtYW55IGZhbHNlIENpcmN1bGFyRGVwZW5kZW5jeUV4Y2VwdGlvbiBlcnJvcnMgdGhyb3duIChJVlktMjMwKQogIC0gRklYOiBDaXJjdWxhckRlcGVuZGVuY3lFeGNlcHRpb24gbm90IGFsd2F5cyB0aHJvd24gKElWWS0xODQpCiAgLSBGSVg6IE51bGxQb2ludGVyIGluIEJhc2ljUmVzb2x2ZXIgKElWWS0yNTgpCiAgLSBGSVg6IEJhZCBkaWFnbm9zdGljcyBtZXNzYWdlIHdoZW4gbm8gc3BhY2UgbGVmdCAoSVZZLTI1MCkKICAtIEZJWDogTWF2ZW4yIFBPTSBzdXBwb3J0IGNhbiBmaW5kIGdyb3VwSWQgZnJvbSAicGFyZW50IiBlbGVtZW50IChJVlktMjYyKQogIC0gRklYOiBQYXJlbnQgdmVyc2lvbiBpcyBleHBlY3RlZCB0byBiZSBlcXVhbCB0byB0aGUgbW9kdWxlIHZlcnNpb24gaW4gUE9NIChJVlktMjQxKQogIC0gRklYOiBwcm9ibGVtIHdpdGggY2FjaGUgYW5kIHJldHVybkZpcnN0IChJVlktMjA3KQogIC0gRklYOiBtb2R1bGVzIHNwbGl0dGVkIGFjcm9zcyBhIGNoYWluIGFyZSBub3QgaGFuZGxlZCBjb3JyZWN0bHkgKElWWS0yMDYpCiAgLSBGSVg6IHByb2JsZW0gd2l0aCBjb25mIGV4dGVuc2lvbiBhbmQgbGF0ZXN0IHJldmlzaW9ucyAoSVZZLTI0MCkKICAtIEZJWDogVGhlIGNsZWFuLWNhY2hlIHRhcmdldCBpbiAvc3JjL2V4YW1wbGUvaGVsbG8taXZ5L2J1aWxkLnhtbCBmaWxlIHJlZmVycyB0byAke3VzZXIuaG9tZX0vLml2eS1jYWNoZSBpbnN0ZWFkIG9mICR7dXNlci5ob21lfS8uaXZ5L2NhY2hlLyAoSVZZLTI2NSkKCiogdGhhbmtzIHRvIEl2eSBDb21tdW5pdHk6CiAgLSBORVc6IFNTSCBSZXNvbHZlciBhZGRlZCBhbmQgYWxpZ25lZCB3aXRoIFNGVFAgcmVzb2x2ZXIgKElWWS0yNzMpICh0aGFua3MgdG8gQW5kcmVhcyBTYWhsYmFjaCkKICAtIE5FVzogYWJpbGl0eSB0byB0dXJuIG9mZiB0cmFuc2l0aXZpdHkgYXQgY29uZmlndXJhdGlvbiBsZXZlbCAoSVZZLTEwMykgKHRoYW5rcyB0byBLYXJsIEJhdW0gYW5kIE1hYXJ0ZW4gQ29lbmUpCiAgLSBORVc6IGEgY29uZmxpY3QgbWFuYWdlciB0aGF0IGlzIGFibGUgdG8gYWxsb3cgaW1wbGVtZW50YXRpb24gY2hhbmdlcyBidXQgbm90IGFwaSBjaGFuZ2VzICgxLjIueCAtIE9LKSwgKDEueC54IC0gTm90IE9LKSAoSVZZLTIyMykgKHRoYW5rcyB0byBBbmRlcnMgSmFubXlyKQogIC0gTkVXOiBlbmhhbmNlIHN0YW5kYWxvbmUgbW9kZSB0byBleGVjdXRlIGphdmEgcHJvZ3JhbSBieSBjcmVhdGluZyBjbGFzc2xvYWRlciBvZiBkZXBlbmRhbnQgamFycyBmcm9tIGNhY2hlIChJVlktMjEwKSAodGhhbmtzIHRvIFBldGVyIEhheWVzKQogIC0gTkVXOiBhZGRpdGlvbiBvZiBWZnMgUmVzb2x2ZXIgd2hpY2ggdXNlcyBDb21tb25zLVZmcyB0byByZXNvbHZlIGZpbGVzIChJVlktMTI4KSAodGhhbmtzIHRvIEdsZW4gTWFyY2hlc2FuaSwgTWF0dCBJbmdlciBhbmQgU3RlcGhlbiBOZXNiaXR0KQoKICAtIElNUFJPVkU6IHVzZSBnbG9iYWwgcHJvcGVydGllcyBpbiB0aGUgcmVjdXJzaXZlIGRlbGl2ZXJ5IChJVlktMjIyKSAod2l0aCB0aGUgY29udHJpYnV0aW9uIG9mIFJvc2hhbiBQdW5ub29zZSkKICAtIElNUFJPVkU6IGJldHRlciBoYW5kbGluZyBvZiBhdXRoZW50aWNhdGlvbiAodGhhbmtzIHRvIENocmlzdGlhbiBSaWVnZSkKCiAgLSBGSVg6IEFudCBsb2cgbWVzc3NhZ2VzIG5vdCBlbWJlZGRlZCBpbiB0YXNrIGxvZyAoSVZZLTI4MCkgKHRoYW5rcyB0byBHaWxsZXMgU2Nva2FydCkKICAtIEZJWDogSXZ5IGZhaWxzIHdoZW4gZG93bmxvYWRpbmcgZnJvbSBhIHNlcnZlciB0aGF0IHN1cHBvcnRzIE5UTE0gYXV0aGVudGljYXRpb24gKElWWS0yMTMpICh0aGFua3MgdG8gRGFtb24gUmFuZCkKICAtIEZJWDogRGVsaXZlcmVkIEl2eSBmaWxlcyB3aXRoIGluY29tcGxldGUgbGFzdCBsaW5lLiAoSVZZLTEyNSkgKHRoYW5rcyB0byBNYXR0aGlhcyBLaWxpYW4pCiAgLSBGSVg6IHRoZSB2ZnMgcmVzb2x2ZXIgc2hvdWxkIG5vdCBsb2cgcGFzc3dvcmRzIChJVlktMjkyKSAodGhhbmtzIHRvIEFudG9pbmUgTGV2eS1MYW1iZXJ0KQoKKiB0aGFua3MgdG8gTWFhcnRlbiBDb2VuZToKICAtIE5FVzogYWRkIGZhaWx1cmVwcm9wZXJ0eSBwYXJhbWV0ZXIgdG8gdGhlIHJlc29sdmUgdGFzayAoSVZZLTI4NSkKICAtIE5FVzogQWRkIHR5cGUgZmlsdGVyaW5nIHRvIHJldHJpZXZlIHRhc2sgKElWWS0yNjApCiAgLSBORVc6IEFkZCBzZWxlY3RvcnMgdG8gdGhlIGNvbmZpZ3VyYXRpb24gbWFwcGluZyAoSVZZLTI1MykKICAtIE5FVzogQWRkIEFudCB0YXNrIHRvIHJldHJpZXZlIGluZm9ybWF0aW9uIGZyb20gYW4gSXZ5IGZpbGUgd2l0aG91dCBkb2luZyBhIHJlc29sdmUgKElWWS0yNTUpCiAgLSBORVc6IGFkZCBvcHRpb24gdG8gY2FjaGVwYXRoIHRhc2sgdG8gY3JlYXRlIGEgcGF0aCB3aXRoIGxvY2FsIGFydGlmYWN0IHBhdGhzIChJVlktMjIxKQogIC0gTkVXOiBhbGxvdyBleHRlbmRpbmcgY29uZmlndXJhdGlvbnMgdG8gb3ZlcnJpZGUgdGhlIG1hcHBpbmcgb2YgdGhlaXIgc3VwZXIgY29uZmlndXJhdGlvbnMgKElWWS0yMTgpCgogIC0gSU1QUk9WRTogUmV0YWluIGFydGlmYWN0IGZpbGVuYW1lcyBhbG9uZyB0aGUgcHVibGlzaC9yZXNvbHZlL3JldHJpZXZlIHByb2Nlc3MgKElWWS01NCkKICAtIElNUFJPVkU6IHJlcG9ydCBBbnQtdGFzayBkb2Vzbid0IHByb2Nlc3MgdGhlIHJlcG9ydHMgaW4gYmF0Y2ggKElWWS0yNDcpCiAgLSBJTVBST1ZFOiBtYWtlIFJlcG9ydE91dHB1dHRlciBwbHVnZ2FibGUgYW5kIGN1c3RvbWl6YWJsZSAoSVZZLTIwNSkKICAtIElNUFJPVkU6IGFkZCB3aWxkY2FyZCBzdXBwb3J0IGZvciBleHRlbmRpbmcgY29uZmlndXJhdGlvbnMgKElWWS0yMzUpCiAgLSBJTVBST1ZFOiBhZGQgc3VwcG9ydCBmb3IgeHNsdCBwYXJhbWV0ZXJzIGluIHRoZSByZXBvcnQgdGFzayAoSVZZLTIyNykKICAtIElNUFJPVkU6IGNvbW1lbnRzIG5vdyBhcmVuJ3QgbG9zdCB3aGVuIGRlbGl2ZXJpbmcgaXZ5IGZpbGVzIChJVlktMjI2KQogIC0gSU1QUk9WRTogYWRkIHNvcnQgb2YgJ2ZhbGxiYWNrJy1tYXBwaW5nIHRvIHRoZSBkZWZhdWx0Y29uZm1hcHBpbmcgYXR0cmlidXRlIChJVlktMjE1KQogIC0gSU1QUk9WRTogYXJ0aWZhY3Qgb3JpZ2luIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGUgZGVmYXVsdCByZXBvcnQgKElWWS0yNTEpCgogIC0gRklYOiBWRlMgUmVzb2x2ZSBmYWlscyB3aGVuIHRyeWluZyB0byByZXNvbHZlIGEgKyB2ZXJzaW9uIChJVlktMjM3KQogIC0gRklYOiByZXBvcnQgQW50LXRhc2sgZG9lc24ndCB1c2Ugb3V0cHV0cGF0dGVybiBmb3IgZ2VuZXJhdGluZyBncmFwaG1sIHJlcG9ydHMgKElWWS0yNDYpCiAgLSBGSVg6IHJlcG9ydCBBbnQtdGFzayBkb2Vzbid0IGNhbGwgaW5pdCgpIG9uIHRoZSBpbnRlcm5hbCBYU0xUUHJvY2VzcyAoSVZZLTI0OCkKICAtIEZJWDogdmFsdWUgb2YgY29uZm1hcHBpbmdvdmVycmlkZSBmcm9tIGltcG9ydGVkIGNvbmZpZ3VyYXRpb25zIGlzIGxvc3Qgd2hlbiB3cml0aW5nIEl2eSBmaWxlIChJVlktMjM5KQogIC0gRklYOiBpbmNsdWRpbmcgY29uZmlndXJhdGlvbnMgZG9lc24ndCBpbXBvcnQgdGhlIGNvbmZtYXBwaW5nb3ZlcnJpZGUgc2V0dGluZyAoSVZZLTIzOCkKICAtIEZJWDogTnVsbFBvaW50ZXJFeGNlcHRpb24gd2hlbiB0aGUgY3JlYXRpb24gb2YgSXZ5IGZpbGUgaW4gY2FjaGUgZmFpbHMgKElWWS0yMzQpCiAgLSBGSVg6IEl2eSBmaWxlIGNvbnRhaW5pbmcgMiBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgdGhlIHNhbWUgbW9kdWxlIGlzIG5vdCBkZWxpdmVyZCBjb3JyZWN0bHkgKElWWS0yMjkpCiAgLSBGSVg6IE1vZHVsZVJldmlzaW9uSWQgZW5jb2RlL2RlY29kZSBkb2Vzbid0IHdvcmsgaWYgcmV2aXNpb24gaXMgZW1wdHkgKElWWS0yMzMpCiAgLSBGSVg6IGNhY2hlcGF0aCB0YXNrIHNob3VsZCBwcmVzZXJ2ZSB0aGUgb3JkZXIgb2YgdGhlIGRlcGVuZGVuY2llcyAoSVZZLTIyNSkKICAtIEZJWDogc3BlY2lmeWluZyBhIGRlZmF1bHRjb25mbWFwcGluZyBhZGRzIGRlcGVuZGVuY2llcyBvZiBlYWNoIHVubGlzdGVkIGNvbmZpZ3VyYXRpb24gKElWWS0yMTQpCgoqIHRoYW5rcyB0byBKb2hhbiBTdHV5dHM6CiAgLSBORVc6IGFsd2F5cyB1cGRhdGUgYXJ0aWZhY3RzIHdoZW4gcmV2aXNpb24gbWF0Y2hlcyBhIHJlZ2V4IHBhdHRlcm4gKElWWS0xODkpCiAgLSBORVc6IHByb3ZpZGUgQW50IHRhc2sgZm9yIGdlbmVyYXRpbmcgcmVwb3J0IGFib3V0IGFydGlmYWN0cyBkZXBlbmRlZCB1cG9uIChJVlktMTk0KQoKICAtIElNUFJPVkU6IGNoYW5nZSBkZWZhdWx0IGNhY2hlIGFydGlmYWN0IHBhdHRlcm4gdG8gaGFuZGxlIG1pc3NpbmcgZXh0ZW5zaW9uIChJVlktMTk2KQoKKiB0aGFua3MgdG8gS2FybCBCYXVtOgogIC0gTkVXOiAidGhpcyIgc3ltYm9sIGZvciBjb25maWd1cmF0aW9uIG1hcHBpbmdzIChJVlktMTgzKQoKICAtIElNUFJPVkU6IHBlcmZvcm1hbmNlcyBpbXByb3ZlZCAoSVZZLTE4NykKCiAgIHZlcnNpb24gMS4zLjEgLSAyMDA2LTAzLTMwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSBGSVg6IHJldHJpZXZhbCBvZiBtdWx0aXBsZSBhcnRpZmFjdHMgaW4gZGlmZmVyZW50IGNvbmZpZ3VyYXRpb25zIGRvZXMgbm90IHdvcmsgYXMgZXhwZWN0ZWQgKElWWS0xODgpCi0gRklYOiBjb25maWd1cmF0aW9uIGh0dHAgdXJsIGluY2x1ZGUgZG9lc24ndCB3b3JrIHdpdGggY29tbW9ucyBodHRwIGNsaWVudCAoSVZZLTIwMykKLSBGSVg6IHByb2JsZW0gd2l0aCBjb25mbGljdCByZXNvbHV0aW9uIGluIHRyYW5zaXRpdmUgZGVwZW5kZW5jaWVzIChJVlktMTk5KQotIEZJWDogcGIgd2l0aCBmb3JjZSB3aGVuIGl0IGNvbWVzIGFmdGVyIGEgY29uZmxpY3Qgd2hpY2ggaGFzIGFscmVhZHkgYmVlbiBzb2x2ZWQgKElWWS0xOTMpCi0gRklYOiBQT00gZmlsZXMgdGhhdCByZWZlcmVuY2UgdG8gdGhlIHBhcmVudCBhcnRpZmFjdCBkb3dubG9hZCBmYWlscyAoSVZZLTE5NSkgKHRoYW5rcyB0byBUYXQgTGV1bmcpCi0gRklYOiBNMiBjb21wYXRpYmlsaXR5IGRvZXMgbm90IHRha2UgaW50byBhY2NvdW50IHRoZSAuIHJlcGxhY2VtZW50IGZvciBwdWJsaXNoaW5nIGFydGlmYWN0cyAoSVZZLTE5MSkgKHRoYW5rcyB0byBQZXRlciBIYXllcykKLSBGSVg6IGFydGlmYWN0cHJvcGVydHkgZG9lcyBub3Qgc2V0IHRoZSBbY29uZl0gdG9rZW4gaW4gdGhlIHBhdHRlcm4gdG8gdGhlIGNvcnJlY3QgdmFsdWUuIEl0IGlzIGFsd2F5cyBzZXQgdG8gJ2RlZmF1bHQnLiAoSVZZLTEyMykgKHRoYW5rcyB0byBQZXRlciBPeGVuaGFtKQoKICAgdmVyc2lvbiAxLjMgLSAyMDA2LTAzLTE3Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhpcyB2ZXJzaW9uIGlzIHRoZSBzYW1lIGFzIDEuMy1SQzMgcHJvbW90ZWQgdG8gcmVsZWFzZSBzdGF0dXMuCkZvciBrbm93biBidWdzIGFuZCBsaW1pdGF0aW9ucywgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly9qaXJhLmpheWFzb2Z0Lm9yZy8KCiAgIHZlcnNpb24gMS4zLVJDMyAtIDIwMDYtMDMtMDYKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotIElNUFJPVkU6IFJldHJpZXZlIHRhc2sgbm93IGFsc28gb3B0aW9uYWxseSBkbyBpdnkgZmlsZSBkb3dubG9hZHMgKElWWS0xNjcpICh3aXRoIHRoZSBjb250cmlidXRpb24gb2YgQ29zdGluIExlYXUpCgotIEZJWDogaXZ5IHZhcmlhYmxlIHN1YnN0aXR1dGlvbiBpbiBpdnkgZmlsZXMgKElWWS0xODYpCi0gRklYOiBmb3JjZSBhdHRyaWJ1dGUgaXMgbm90IHRyZWF0ZWQgYXMgaXQgc2hvdWxkIGluIHNvbWUgY2FzZXMgKElWWS0xODIpCi0gRklYOiBwcm9ibGVtIHJlYWRpbmcgJ2ludmFsaWQnIFBPTXMgKElWWS0xNTMpCi0gRklYOiBjcnlwdGljIE5QRSBkdWUgdG8gc3BlbGxpbmcgZXJyb3IgaW4gaXZ5LnhtbCAoSVZZLTE3NykKLSBGSVg6IGNvbmZsaWN0cyB3aXRoIGR5bmFtaWMgcmV2aXNpb25zIG5vdCByZXNvbHZlZCBwcm9wZXJseSAoSVZZLTE4MSkKLSBGSVg6IGluY29ycmVjdCBjb25maWd1cmF0aW9uIGRlZmluaXRpb24gZ2l2ZXMgbWlzbGVhZGluZyBOdWxsUG9pbnRlckV4Y2VwdGlvbiAoSVZZLTE3NSkKLSBGSVg6IHRocm93IGFuIGVycm9yIHdoZW4gdXNpbmcgYSBub24tZXhpc3RpbmcgY29uZmxpY3QgbWFuYWdlciBhcyBkZWZhdWx0IChJVlktMTc5KSAodGhhbmtzIHRvIE1hYXJ0ZW4gQ29lbmUpCi0gRklYOiBldmljdGlvbiBwcm9ibGVtIHdpdGggZGlmZmVyZW50IGNvbmZsaWN0cyBpbiBtdWx0aXBsZSBjb25mcyAoSVZZLTE3MykKCiAgIHZlcnNpb24gMS4zLVJDMiAtIDIwMDYtMDItMTUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotIElNUFJPVkU6IGl2eSBub3cgc3VwcG9ydHMgJHtwb20udmVyc2lvbn0gaW4gcG9tcyAoSVZZLTE3NCkKLSBJTVBST1ZFOiBhZGRzIHRoZSBwb3NzaWJpbGl0eSB0byBkaXNhYmxlIGNvbmNpc3RlbmN5IGNoZWNrIChJVlktMTYzKQotIElNUFJPVkU6IGFkZCBwb3NzaWJpbGl0eSB0byBjaG9vc2UgbWF0Y2hlciBvbiBpbmNsdWRlIGV4Y2x1ZGUgYW5kIGNvbmZsaWN0IG1hbmFnZXIgcnVsZXMgaW4gaXZ5IGZpbGVzLCBhbmQgb24gcmVzb2x2ZXIgcGVyIG1vZHVsZSBpbiBpdnljb25mIChJVlktMTYxKQotIElNUFJPVkU6IGFkZCByZWdleHAgbWFuYWdlbWVudCBpbiB0aGUgaW5zdGFsbCBhbnQgdGFzayAoSVZZLTE1NCkKCi0gRklYOiBodHRjbGllbnQgaXMgbm90IHJlZ2lzdGVyZWQgZm9yIGh0dHBzIHVybHMgKElWWS0xNzEpCi0gRklYOiBwb3N0IHJlc29sdmUgdGFza3MgbGlrZSByZXRyaWV2ZSBvciBjYWNoZXBhdGggc2hvdWxkIGJlIGFibGUgdG8gcnVuIGZyb20gY2FjaGUgaW5mb3JtYXRpb24gKElWWS0xNjkpCi0gRklYOiByZXNvbHZlIGZhaWxzIHdpdGhvdXQgYXBwcm9wcmlhdGUgbWVzc2FnZSB3aGVuIGNhY2hlIGlzIGVtcHR5IGFuZCBhIG1vZHVsZSBpbiB0aGUgcmVwb3NpdG9yeSBoYXMgbm8gcmV2aXNpb24gKElWWS0xNjUpCi0gRklYOiByZXNvbHZlIHByb2JsZW0gd2l0aCBjb25maWd1cmF0aW9uIGluaGVyaXRhbmNlIChJVlktMTY0KQotIEZJWDogc29tZSBmaWxlcyBpbiBjYWNoZSBkZXRlY3RlZCBieSBub3QgdXNlZCBieSBJdnkgZm9yIHN1YnNlcXVlbnQgcmV0cmlldmVzIChJVlktMTU5KQotIEZJWDogSFRNTCByZXBvcnQgc2hvdWxkbid0IGRpc3BsYXkgdGhlIGRlcGVuZGVuY2llcyBvZiBldmljdGVkIG1vZHVsZXMgKElWWS0xNTgpICh0aGFua3MgdG8gTWFhcnRlbiBDb2VuZSkKLSBGSVg6IGJ1ZyB3aGVuIGFuIG9yZ2FuaXNhdGlvbiBvciBtb2R1bGUgb3IgcmV2aXNpb24gY29udGFpbnMgYSBzcGFjZSAoSVZZLTE1NykKLSBGSVg6IGNvcy1ub25hbWJpZyB3YXJuaW5ncyAoSVZZLTE1NikKCiAgIHZlcnNpb24gMS4zLVJDMSAtIDIwMDYtMDEtMjUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLT4gY29tcGF0aWJsaXR5IHdpdGggcHJldmlvdXMgdmVyc2lvbjoKLSB0aGUgZGVmYXVsdCBwbGFjZSBmb3IgdGhlIGNhY2hlIGhhcyBjaGFuZ2VkLCBpdCBpcyBub3cgaW4ge1VTRVJfSE9NRX0vLml2eS9jYWNoZSwgaW5zdGVhZCBvZiB7VVNFUl9IT01FfS8uaXZ5LWNhY2hlCiAgcGxlYXNlIG1vdmUgdGhpcyBkaXJlY3RvcnkgaWYgeW91IHdhbnQgdG8gYXZvaWQgdW5uZWNlc3NhcnkgZG93bmxvYWRzCi0gbW9kdWxlcyBhcmUgbm93IGxvZ2dlZCBhcyB0aGV5IGFyZSBmb3VuZCwgc2V0IGl2eS5sb2cubW9kdWxlLndoZW4uZm91bmQgdmFyaWFibGUgdG8gZmFsc2UgdG8gYXZvaWQgdGhpcwoKLSBORVc6IG5hbWVzcGFjZSBzeXN0ZW06IGEgcmVzb2x2ZXIgY2FuIGJlIGRlY2xhcmVkIHRvIGJlbG9uZyB0byBhIG5hbWVzcGFjZSwgd2hpY2ggaXRzZWxmCiAgICAgICBzcGVjaWZ5IHRoZSB0cmFuc2Zvcm1hdGlvbiB0byBhcHBseSB0byBjb252ZXJ0IGl0IGZyb20gYW5kIHRvIHN5c3RlbSBuYW1lc3BhY2UgKElWWS0xNDcpCi0gTkVXOiBwbHVnZ2FibGUgbW9kdWxlIGRlc2NyaXB0b3IgcGFyc2VycyBsZXQgZGVmaW5lIG5ldyBraW5kIG9mIG1vZHVsZSBkZXNjcmlwdG9yIChJVlktMTQ2KSAodGhhbmtzIHRvIE1hYXJ0ZW4gQ29lbmUpCi0gTkVXOiBhIG5ldyBpbnN0YWxsIHRhc2sgbGV0IGFkZCBtb2R1bGVzIGZvdW5kIGluIGEgcmVwb3NpdG9yeSBpbiBhbm90aGVyIG9uZSwgZXZlbiB0cmFuc2l0aXZlbHkgKElWWS0xNDEpCi0gTkVXOiBtYXZlbjIgcG9tIGNvbXBhdGliaWxpdHk6IG1vc3QgcmVzb2x2ZXJzIGFyZSBub3cgYWJsZSB0byBoYW5kbGUgbTIgcG9tIGFzIHByb2plY3QgbWV0YWRhdGEKICAgICAgIGFuZCB0aGVyZSBpcyBhIG5ldyBjb252ZXJ0cG9tIHRhc2sgYWJsZSB0byBjb252ZXJ0IGEgcG9tIGZpbGUgdG8gYW4gaXZ5IGZpbGUgKElWWS0xNDApCi0gTkVXOiBpbmNsdWRlIGNvbmZpZ3VyYXRpb25zIGZyb20gZXh0ZXJuYWwgZmlsZSAoSVZZLTg4KQotIE5FVzogYSBuZXcgZGVmYXVsdCByZXNvbHZlciB3aGljaCBsZXQgb3ZlcnJpZGUgaXZ5IGZpbGVzIGFuZCBhcnRpZmFjdHMgZm91bmQgb24gcHVibGljIHJlcG9zaXRvcnkKICAgICAgIChpdnlyZXAgLyBpYmlibGlvKSBhbmQgbGV0IHB1Ymxpc2ggbW9kdWxlcyBpbiBhIGxvY2FsIHJlcG9zaXRvcnkgKElWWS0xMzIpCi0gTkVXOiBpdnljb25mIGZpbGUgaW5jbHVzaW9uIGluIGl2eWNvbmYgZmlsZXMgKElWWS05OSkKLSBORVc6IG1hY3JvZGVmIGZlYXR1cmUgaW4gaXZ5Y29uZiBmb3IgZGVmaW5pbmcgbWFjcm8gcmVzb2x2ZXJzIHdpdGggcGFyYW1ldGVycyAoSVZZLTk4KQotIE5FVzogY29uZiBmYWxsYmFjayBtZWNoYW5pc20gKElWWS0xNDUpCi0gTkVXOiBleGNsdXNpb24gbm93IGxldCBleGNsdWRlIHdob2xlIG1vZHVsZXMgKElWWS0xNDQpCi0gTkVXOiBhYmlsaXR5IHRvIHVzZSBhIGRlcGVuZGVuY3kgaW5zdGVhZCBvZiBhbiBpdnkgZmlsZSBpbiBzdGFuZGFsb25lIG1vZGUgKElWWS05NikKLSBORVc6IGFiaWxpdHkgdG8gb3V0cHV0IGEgcGF0aCBvZiBkZXBlbmRlbmNpZXMgaW4gY2FjaGUgZnJvbSB0aGUgc3RhbmRhbG9uZSBtb2RlIChJVlktOTIpCi0gTkVXOiBpdCBpcyBub3cgcG9zc2libGUgdG8gcmVmZXJlbmNlIGV4aXN0aW5nIHJlc29sdmVyIGluIHJlc29sdmVyIGNvbnRhaW5lcnMgKElWWS0zNSkKLSBORVc6IG92ZXJ3cml0ZSBhdHRyaWJ1dGUgaW4gdGhlIHB1Ymxpc2ggdGFzayBub3cgbGV0IGZvcmNlIG92ZXJ3cml0ZSBvZiByZWFkIG9ubHkgZmlsZXMgKElWWS04MykgCi0gTkVXOiBhZGQgYSBjb25mbGljdCBtYW5hZ2VyICgic3RyaWN0IikgbWFraW5nIGJ1aWxkIGZhaWwgd2hlbiBhIGRpYW1vbmQgY29uZmxpY3QgaXMgZm91bmQgKHRoYW5rcyB0byBDaHJpc3RlciBKb25zc29uKSAoSVZZLTExOCkgCgotIElNUFJPVkU6IGdlbmVyYXRlIHhtbCByZXBvcnQgdXNpbmcgaXZ5OnJlcG9ydCB0YXNrIChJVlktMTQzKQotIElNUFJPVkU6IHBvc3NpYmlsaXR5IHRvIGNvbmZpZ3VyZSBpdnkgc28gdGhhdCBzcGVjaWFsIHJldmlzaW9ucyBhcmUgbm90IHF1ZXJpZWQgYXMgZml4ZWQgb25lIGF0IGFsbCAoSVZZLTEzOSkKLSBJTVBST1ZFOiBiZXR0ZXIgdXJsIHF1ZXJ5aW5nIG1hbmFnZW1lbnQgKElWWS0xMzgpICh0aGFua3MgdG8gQmVybmFyZCBOaXNldCkKLSBJTVBST1ZFOiBkbyBub3QgYWRkIHJlc29sdmVyIGluZm8gaW4gaXZ5IGZpbGVzIGluIGNhY2hlIHNvIHRoYXQgdGhleSBjYW4gYmUgc2FmZWx5IHVzZWQgYXMgdXN1YWwgaXZ5IGZpbGVzIGluIGEgcmVwb3NpdG9yeSAoSVZZLTEzNykKLSBJTVBST1ZFOiByZXZpZXcgZGVmYXVsdCBjb25mIG1hcHBpbmcgbWFuYWdlbWVudCAoSVZZLTEzNCkKLSBJTVBST1ZFOiBhZGQgcG9zc2liaWxpdHkgZm9yIGEgY2hhaW4gdG8gYmVoYXZlIGxpa2UgYSBkdWFsIGNoYWluIChJVlktMTMxKQotIElNUFJPVkU6IGFkZCBwb3NzaWJpbGl0eSB0byBhdm9pZCBvdmVyd3JpdGUgb2YgYW4gaXZ5IHZhcmlhYmxlIHdoZW4gc2V0dGluZyB0aGVtIGluIGl2eWNvbmYueG1sIChJVlktMTI3KQotIElNUFJPVkU6IGFiaWxpdHkgdG8gZXhjbHVkZSB0aGUgcm9vdCBwcm9qZWN0IGZyb20gdGhlIGJ1aWxkbGlzdCAodGhhbmtzIHRvIENvbnN0YW50aW5lIFZldG9zaGV2KSAoSVZZLTEyNCkKLSBJTVBST1ZFOiBleGNsdXNpb24gb2YgYXJ0aWZhY3RzIG5vdyB3b3JrcyBvbiB0cmFuc2l0aXZlIGFydGlmYWN0cywgYW5kIGV4Y2x1c2lvbiBjYW4gc3BlY2lmeSBvcmdhbmlzYXRpb24gYW5kL29yIG1vZHVsZSAoSVZZLTExNikKLSBJTVBST1ZFOiBub3cgZHluYW1pYyByZXZpc2lvbnMgcmVwbGFjZW1lbnQgYnkgZGVsaXZlciB0YXNrIGNhbiBiZSB0dXJuZWQgb2ZmIChJVlktMTIwKQotIElNUFJPVkU6IGJldHRlciBwZXJmb3JtYW5jZSB3aXRoIGRlZXAgdHJhbnNpdGl2ZSBkZXBlbmRlbmNpZXMKLSBJTVBST1ZFOiBhbGxvdyBvcHRpb25hbCBwYXJ0cyBpbiB0aGUgcGF0dGVybnMgKElWWS0xMDIpICh0aGFua3MgdG8gTWFhcnRlbiBDb2VuZSkKLSBJTVBST1ZFOiBhYmlsaXR5IHRvIGRlZmluZSB2YXJpYWJsZSBkaXJlY3RseSBpbiBpdnljb25mLnhtbCAoSVZZLTEwMCkKLSBJTVBST1ZFOiBhYmlsaXR5IHRvIHVzZSBubyByZXZpc2lvbiBpbiBwYXR0ZXJuIHdpdGggbGF0ZXN0LmludGVncmF0aW9uIGRlcGVuZGVuY3ksIGFydGlmYWN0cyBiZWluZyB1cGRhdGVkIGFjY29yZGluZyB0byByZXZpc2lvbiBjaGFuZ2UgaW4gaXZ5IGZpbGUgKGlmIGNoZWNrbW9kaWZpZWQgaXMgc2V0IHRvIHRydWUpIChJVlktOTUpCi0gSU1QUk9WRTogYWJpbGl0eSB0byBzcGVjaWZ5IGEgcm9vdCBtb2R1bGUgaW4gYnVpbGRsaXN0IHRvIGZpbHRlciBvdXQgdW5uZWNlc3NhcnkgYnVpbGQgZmlsZXMgKElWWS05MykgKHRoYW5rcyB0byBLcmlzdGlhbiBDaWJ1bHNraXMpCi0gSU1QUk9WRTogaW1wb3J0IHN5c3RlbSBwcm9wZXJ0aWVzIGFzIGl2eSB2YXJpYWJsZXMgaW4gc3RhbmRhbG9uZSBtb2RlCi0gSU1QUk9WRTogc3RyaW5nIGlkZW50aWZ5aW5nIGEgbW9kdWxlIGlzIG5vdyBjbGVhcmx5IGRpZmZlcmVudCBmcm9tIGEgcGF0aAotIElNUFJPVkU6IGJldHRlciBlcnJvciBtZXNzYWdlIHdoZW4gcHVibGlzaCBmYWlscyBkdWUgdG8gcmVhZG9ubHkgZGVzdGluYXRpb24gKElWWS04MykKLSBJTVBST1ZFOiBzb21lIGphdmFkb2MgaW1wcm92ZW1lbnRzIChJVlktMTM2IElWWS0xMjkpICh0aGFua3MgdG8gU3RlcGhlbiBOZXNiaXR0KQoKLSBGSVg6IHByb2JsZW0gcmVzb2x2aW5nIGRlcGVuZGVuY2llcyB3aGVuIDIgbW9kdWxlIHZlcnNpb25zIGhhdmUgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb25zIChJVlktMTUxKQotIEZJWDogcHJvYmxlbSB3aXRoIGluaGVyaXRhbmNlIGJldHdlZW4gcHVibGljIGFuZCBwcml2YXRlIGNvbmYgKElWWS0xNDkpCi0gRklYOiBubyB2YXJpYWJsZSByZXBsYWNlbWVudCBkdXJpbmcgdGhlIGRlbGl2ZXIgc3RlcCAoSVZZLTEzMykKLSBGSVg6IGNvbmZsaWN0IGJhZGx5IHNvbHZlZCBpbiBzb21lIGNvbXBsZXggY2FzZXMgKElWWS0xMzApCi0gRklYOiBtYXBwaW5nIG9uIGNvbmYgKiBub3cgb25seSB0YWtlcyBwdWJsaWMgY29uZmlndXJhdGlvbnMgKElWWS0xMjYpCi0gRklYOiBiYWQgZGVwZW5kZW5jeSBpdnkgZmlsZXMgbm93IGNhdXNlcyBmYWlsdXJlIChJVlktMTEyKQotIEZJWDogc3RhY2sgb3ZlcmZsb3cgZXJyb3IgaW4gY29udHJhZGljdG9yeSBjb25mbGljdCBjYXNlcyAoSVZZLTExNykKLSBGSVg6IHB1Ymxpc2ggbm93IGRvZXNuJ3QgY2FsbCBkZWxpdmVyIHdoZW4gbm90IG5lY2Vzc2FyeSAoSVZZLTExOSkKLSBGSVg6IGNhY2hlZmlsZXNldCB3YXMgcmV0dXJuaW5nIGFsbCBhcnRpZmFjdHMgZm9yIGVtcHR5IGNvbmZpZ3VyYXRpb24gKElWWS0xMDgpCi0gRklYOiB0cmFuc2l0aXZlIGFuZCBjaGFuZ2luZyBhdHRyaWJ1dGUgd2VyZSBub3QgY29waWVkIGluIGl2eSBmaWxlcyBpbiBjYWNoZSAoSVZZLTk0KQotIEZJWDogY2hhaW4gcmVzb2x2ZXIgbm93IHN1cHBvcnQgbGF0ZXN0IHN0cmF0ZWd5IGNvbmZpZ3VyYXRpb24gKElWWS05MCkKLSBGSVg6IHJhaXNlIGEgY2xlYW4gZXJyb3Igd2hlbiBhIGN5Y2xpYyB2YXJpYWJsZSBkZWZpbml0aW9uIGlzIGZvdW5kIChJVlktNzUpCi0gRklYOiBjbGVhbiBhbnQgcHJvamVjdCByZWZlcmVuY2UgYXQgdGhlIGVuZCBvZiB0aGUgYnVpbGQgdG8gaW1wcm92ZSB1c2FiaWxpdHkgaW4gaWRlIGxhdW5jaGluZyBtdWx0aXBsZSBidWlsZHMgaW4gdGhlIHNhbWUgdm0gKGxpa2UgbmV0YmVhbnMpIChJVlktODcgLSBJVlktMTE1KQotIEZJWDogaXZ5IGlzIG5vdyBhYmxlIHRvIHVzZSBzaW1wbGUgaXZ5IGZpbGVzIGluIGNhY2hlIChkb2Vzbid0IG5lZWQgcmVzb2x2ZXIgaW5mbywgdXNlIGRlZmF1bHQgb25lIGlmIG5vIHJlc29sdmVyIGlzIGdpdmVuKSAoSVZZLTg2KQotIEZJWDogcHJpdmF0ZSBjb25mIG5vdCBhY2Nlc3NpYmxlIGZyb20gb3RoZXIgbW9kdWxlcyAoSVZZLTc2KQotIEZJWDogcm9vdCBtb2R1bGUgY29uZmlndXJhdGlvbnMgaXNvbGF0aW9uIGJ1ZyBmaXhlZCAoSVZZLTg0KQotIEZJWDogY2hhbmdlZCB0aGUgcGxhY2Ugd2hlcmUgaXZ5IHN0b3JlcyBtYXN0ZXIgaXZ5IGZpbGVzIGluIGNhY2hlIHRvIG5vdCBvdmVybGFwCiAgICAgICB3aXRoIGRlcGVuZGVuY2llcyBvbmUgKElWWS04NSkKLSBGSVg6IGJ1ZyBpbiBSZXNvdXJjZUhlbHBlciBkaWRuJ3QgbGV0IG92ZXJyaWRlIHJlc291cmNlIGVhc2lseSAoSVZZLTgwKQotIEZJWDogdGhyb3dzIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBleGNlcHRpb24gd2hlbiBhIGNpcmN1bGFyIGRlcGVuZGVuY3kgaXMgZm91bmQgCiAgICAgICBpbnN0ZWFkIG9mIGZhaWxpbmcgc2lsZW50bHkgKElWWS03OSkKCiAgIHZlcnNpb24gMS4yYSAtIDIwMDUtMDktMTQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpOb3RlIDogdmVyc2lvbiAxLjIgcHJldmlvdXNseSBwdWJsaXNoZWQgb24gaXZ5IHNpdGUgd2FzIG5vdCB0aGUgcmVhbCAxLjIgZHVlIHRvIGEgYmFkIHJlbGVhc2Ugb3BlcmF0aW9uCiAgICAgICB2ZXJzaW9uIDEuMmEgc2hvdWxkIHRoZW4gYmUgdXNlZCBpbnN0ZWFkCiAgICAgICAKLSBuZXcgaXZ5LmRlcHMuY2hhbmdlZCBwcm9wZXJ0eSBzZXQgaWYgdGhlcmUgYXJlIGNoYW5nZXMgc2luY2UgbGFzdCByZXNvbHZlIChJVlktNzEpCi0gbmV3IGJ1aWxkbGlzdCB0YXNrOiBjYWxjdWxhdGUgb3JkZXIgb2YgZGVwZW5kZW5jaWVzIG9mIHN1YnByb2plY3RzIGZvciBlYXN5IG11bHRpLXByb2plY3RzIGJ1aWxkcyAoSVZZLTY5KQotIGFjY2VwdCBvcmdhbml6YXRpb24gYXMgdG9rZW4gKElWWS01NSkKLSBhZGRlZCB0eXBlIGZpbHRlcmluZyBtZWNoYW5pc20gb24gcmVzb2x2ZSB0YXNrIChJVlktNDUpCi0gZGV0ZWN0IGFuZCB3YXJuIGFib3V0IHJlc29sdmVyIHVzaW5nIGl2eSBjYWNoZSBhcyByZXBvc2l0b3J5IChJVlktNTMpCi0gbmV3IHRyYW5zaXRpdmUgYXR0cmlidXRlIG9uIGRlcGVuZGVuY3ksIHdoaWNoIGVuYWJsZSB0byBkaXNhYmxlIHRyYW5zaXRpdmUgZGVwZW5kZW5jeQogIG1hbmFnZW1lbnQgb24gYSBwYXJ0aWN1bGFyIGRlcGVuZGVuY3kgKHRoYW5rcyB0byBJbmdvIEFkbGVyKSAoSVZZLTIwKQotIG5ldyAnQCcgaW4gZGVwZW5kZW5jeSBjb25maWd1cmF0aW9uIG1hcHBpbmcgZGVjbGFyYXRpb24sIHVzZWQgdG8gaW5kaWNhdGUgdGhhdCBhIGNvbmZpZ3VyYXRpb24gbWFwcyB0byBpdHNlbGYKICB1c2VmdWwgd2l0aCAqLCAnKi0+QCcgbWVhbmluZyB0aGF0IGFsbCBjb25maWd1cmF0aW9ucyBvZiB0aGUgbW9kdWxlIG1hcHMgdG8gdGhlaXIgZXF1aXZhbGVudCAoc2FtZSBuYW1lKQogIGluIHRoZSBkZXBlbmRlbmN5IChJVlktNTIpCi0gbmV3IGNoYW5naW5nIGF0dHJpYnV0ZSBvbiBkZXBlbmRlbmNpZXMgaW5kaWNhdGUgdGhhdCB0aGUgZGVwZW5kZW5jeSBhcnRpZmFjdHMKICBtYXkgY2hhbmdlIGV2ZW4gd2l0aG91dCByZXZpc2lvbiBjaGFuZ2UsIGJ1dCB3aXRoIG9ubHkgYSBuZXcgaXZ5IGZpbGUgd2l0aCBuZXcgCiAgcHVibGljYXRpb24gZGF0ZQotIG5ldyB1c2VSZW1vdGVDb25maWcgb24gY29uZiB0YWcgaW4gaXZ5Y29uZi54bWwsIHRlbGxzIHRvIHVzZSByZW1vdGUgY29uZmlndXJhdGlvbiBmaWxlCiAgZm9yIHJlcG9zaXRvcnkgY29uZmlnCi0gbmV3IHR5cGUgZmlsdGVyaW5nIGluIGNhY2hlcGF0aCB0YXNrCi0gbmV3IGNhY2hlZmlsZXNldCB0YXNrOiBidWlsZHMgYW4gYW50IGZpbGVzZXQgb2YgYXJ0aWZhY3RzIGluIGNhY2hlCi0gcHVibGlzaCB0YXNrIG5vdyB1c2VzIHNyY2l2eXBhdHRlcm4gZm9yIGl2eSBmaWxlcyBmaW5kaW5nIGFuZCBmb3IgZGVsaXZlcnkKLSBiZXR0ZXIgZGVidWcgYW5kIGVycm9yIG1lc3NhZ2VzIChJVlktNjAgSVZZLTYxKQotIGFkZGVkIGEgamF2YWRvYyB0YXJnZXQgaW4gYW50IGJ1aWxkICh0aGFua3MgdG8gam9zaHVhIG5pY2hvbHMpCi0gRklYOiBtb2R1bGUgZGVzY3JpcHRvcnMgc29ydCB3YXMgZmFpbGluZyBpbiBzb21lIGNhc2UgY2FzZXMgKGZpeCBieSBLYXJsIEJhdW0pCi0gRklYOiBJdnkgY29tcGxhaW5zIGFib3V0IHNjaGVtYSBkaXJlY3RpdmUgKElWWS02NCkKLSBGSVg6ICdudWxsJyBzdGF0dXMgYXR0cmlidXRlIGluIG1vZHVsZSBkZXNjcmlwdG9yIChJVlktNjIpCi0gRklYOiByZXBvcnQgaGVhZGVyIGNvbnRhaW5zIGluY29ycmVjdCBsaW5rIGFmdGVyIHJlc29sdmUgZm9yIG11bHRpcGxlLCBjb21tYS1zZXBhcmF0ZWQgY29uZmlndXJhdGlvbnMgKElWWS01NykKLSBGSVg6IGVycm9yIHJldHJpZXZpbmcgZGVwZW5kZW5jaWVzIHdpdGggYSAnKycgaW4gdGhlaXIgcmV2aXNpb24gaWYgdGhlIGl2eSBmaWxlIGRvZXNuJ3QgZXhpc3QgLSBmaXhlZCBieSBtYWFydGVuIGNvZW5lIChJVlktNTkpCi0gRklYOiB0cnlpbmcgdG8gcmVzb2x2ZSBsYXRlc3Qgd2l0aCBubyByZXZpc2lvbiBpbiBwYXR0ZXJuIGNhdXNlZCBhIFN0YWNrT3ZlcmZsb3dFcnJvciAoSVZZLTU2KQotIEZJWDogbm93IGhhbmRsZSB0cmFuc2l0aXZlIGV2aWN0aW9uIChJVlktNTEpCi0gRklYOiByZXNvbHZlIG5vdyBzdG9yZSByZXNvbHZlZCBmaWxlIGlkIGluIGl2eSB2YXJpYWJsZXMsIHNvIHRoYXQgbXVsdGlwbGUgcmVzb2x2ZSBjYWxscwogIGNhbiBiZSBmb2xsb3dlZCBieSBtdWx0aXBsZSByZXRyaWV2ZSwgZWFjaCByZXRyaWV2ZSB3aWxsIHVzZSB0aGUgbGFzdCByZXNvbHZlIGluZm8gKElWWS00OSkKLSBGSVg6IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiBvbiByZXRyaWV2ZSBkb25lIGZyb20gY29tbWFuZCBsaW5lCi0gRklYOiBjaGVja3MgaXZ5IGZpbGVzIGRhdGEgY29uc2lzdGVuY3kgd2l0aCBhc2tlZCBpbmZvIChvcmcsIG1vZHVsZSBuYW1lIGFuZCByZXZpc2lvbikKLSBGSVg6IHVzZSBBVVRIIGNvbmZpZ3VyYXRpb24gZm9yIGNvbmZpZ3VyYXRpb24gZmlsZQotIElNUFJPVkU6IGFkZGVkIHB1Ymxpc2ggaGFuZGxpbmcgZnJvbSBjb21tYW5kIGxpbmUgKElWWS00OCkgCgogICB2ZXJzaW9uIDEuMSAtIDIwMDUtMDYtMTMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotIHJlbW90ZSBjb25maWd1cmF0aW9uIChpZiBhdmFpbGFibGUpIG9mIGl2eXJlcCBhbmQgaWJpYmxpbyBwYXR0ZXJucyBhbmQgcm9vdHMKLSBuZXcgZGV0YWlsZWQgbWVzc2FnZXMgd2hlbiBpdnkgZmFpbHMgdG8gcmVhY2ggYW4gdXJsICh0aGFua3MgdG8gTmljb2xhcykKLSBuZXcgYXJ0aWZhY3Rwcm9wZXJ0eSB0YXNrLCB3aGljaCBlbmFibGVzIHRvIHNldCBhIHByb3BlcnR5IGZvciBlYWNoIGRlcGVuZGVuY3kgYXJ0aWZhY3RzCiAgcmVzb2x2ZWQgYnkgaXZ5Ci0gbmV3IGRlZmF1bHRjb25mIGF0dHJpYnV0ZSBpbiBpdnkgZmlsZSBkZXBlbmRlbmNpZXMsIHRvIGNoYW5nZSB0aGUgZGVmYXVsdCBjb25mIHRvIHVzZSBpbiB0aGUgZmlsZQogIHdoZW4gbm8gY29uZiBpcyBzcGVjaWZpZWQgZm9yIGEgZGVwZW5kZW5jeQotIGFkZCB0aGUgYWJpbGl0eSB0byBjaGFuZ2UgdGhlIHhzbCBmaWxlIGFuZCByZXBvcnQgbmFtZSBwYXR0ZXJuIHVzZWQgYnkgcmVwb3J0IHRhc2sKLSBodHRwIGxpc3Rpbmcgbm93IGNvbXBhdGlibGUgd2l0aCB0b21jYXQgbGlzdGluZyAodGVzdGVkIHdpdGggNS4wLjI4KQotIHB1YiByZXZpc2lvbiBpbiBkZWxpdmVyIHRhc2sgbm93IGRlZmF1bHRzIHRvIHRpbWVzdGFtcCBpZiBub3QgcHJvdmlkZWQgYnkgYW55IG90aGVyIHdheQotIGRlYnVnIG1lc3NhZ2VzIGltcHJvdmVtZW50cywgd2l0aCBjb25maWd1cmF0aW9uIGR1bXAgYW1vbmcgb3RoZXJzCi0gbmV3IHZhciB0YXNrLCBlbmFibGVzIHRvIHNldCBpdnkgdmFyaWFibGVzIGZyb20gYW50Ci0gbm93IGRlZmF1bHRzIGZvciBpdnlyZXAgYW5kIGliaWJsaW8gcmVzb2x2ZXIgYXJlIGNvbmZpZ3VyYWJsZSBieSB2YXJpYWJsZXMKLSByZWZhY3RvcmluZzogaW50cm9kdWNlIHRoZSBub3Rpb24gb2YgQmFzaWNSZXNvbHZlciwgUmVwb3NpdG9yeSwgUmVzb3VyY2UsIFJlcG9zaXRvcnlSZXNvbHZlciwKICBtYWtpbmcgbXVjaCBlYXNpZXIgdGhlIHRhc2sgb2Ygd3JpdGluZyBiYXNpYyByZXNvbHZlcnMKLSBhZGRlZCBjaGVja21vZGlmaWVkIGF0dHJpYnV0ZSBvbiBhbGwgYmFzaWMgcmVzb2x2ZXJzLCB3aGljaCBkZWZhdWx0cyB0byAke2l2eS5yZXNvbHZlci5kZWZhdWx0LmNoZWNrLm1vZGlmaWVkfQogIFRoaXMgbWFrZXMgaXZ5IGNoZWNrIGxhc3QgbW9kaWZpZWQgZGF0ZSBvZiBpdnkgZmlsZXMgdG8gc2VlIGl0IGl0cyBjYWNoZSBpcyB1cCB0byBkYXRlCi0gYXJ0aWZhY3RzIGRvd25sb2FkIGFyZSBub3cgZmlyc3QgbWFkZSB0byBhIHRlbXAgZmlsZSwgd2hpY2ggaXMgcmVuYW1lZAogIG9ubHkgYXQgdGhlIGVuZCBvZiB0aGUgZG93bmxvYWQuIFRoaXMgcHJldmVudCBpbnRlcnJ1cHRlZCBkb3dubG9hZHMgdG8gYmUKICBjb25zaWRlcmVkIGFzIGZpbmlzaGVkCi0gRklYOiBoYW5kbGUgcHJveHkgY29uZmlndXJhdGlvbiB3aXRoIGh0dHAtY2xpZW50ICh0aGFua3MgdG8gTmljb2xhcykKLSBGSVg6IHJlbW92ZSBkZXBlbmRlbmN5IG9uIGFudCBvdXRzaWRlIG9mIGFudCBpbnRlZ3JhdGlvbiBjbGFzc2VzCi0gRklYOiByZXNvbHZlIHByb2JsZW0gd2hlbiBjb25mbGljdHMgb24gbGF0ZXN0IHJldmlzaW9ucyAKLSBGSVg6IGFsbG93IHVzZSBvZiBhbnkga2luZCBvZiBVUkwgaW4gSXZ5UmVwUmVzb2x2ZXIgKGJvdGggaXZ5cm9vdCBhbmQgYXJ0cm9vdCkgYW5kIElCaWJpYmxpb1Jlc29sdmVyCi0gRklYOiBjaGFpbiByZXNvbHZlciBjYW4gbm93IGJlIHVzZWQgZm9yIGFydGlmYWN0cyBwYXJ0IG9mIGR1YWwgcmVzb2x2ZXIKLSBGSVg6IG5vdyBkZXRlY3RzIGFuZCB3YXJuIGFib3V0IGNpcmN1bGFyIGRlcGVuZGVuY2llcwotIEZJWDogY2FjaGVwYXRoIHRhc2sgbm93IHRha2VzIHBhdGhpZCBhcyBwYXJhbWV0ZXIgaW5zdGVhZCBvZiBpZCwgdG8gcHJldmVudAogIHNwZWNpYWwgaGFuZGxpbmcgZnJvbSBhbnQKLSBGSVg6IGl2eS54c2Q6IHNldCBhcnRpZmFjdCBtaW5PY2N1cnMgdG8gMCBpbiBwdWJsaWNhdGlvbnMKClRoYW5rcyB0byBKb2huIFNoaWVsZHMgZnJvbSBSb2JlcnQgSGFsZiBJbnRlcm5hdGlvbmFsLCBJbmMuOgotIEZJWDogbm8gbW9yZSBpbmZpbml0ZSBsb29wIHdoZW4gYSBjb25mbGljdCBvY2N1cnMgYmV0d2VlbiBhIGxhdGVzdCBzdWJ2ZXJzaW9uIGFuZCBhIGZ1bGx5IHJlc29sdmVkIHJldmlzaW9uCi0gRklYOiBCYXNpY1VSTEhhbmRsZXIgbm93IGNsb3NlcyBpdHMgY29ubmVjdGlvbnMKLSBGSVg6IEFwYWNoZVVSTExpc3RlciBub3cgd29ya3Mgd2l0aCBjYXBpdGFsIGxldHRlciBpbiByZXZpc2lvbnMgYW5kIHRydW5jYXRlZCBuYW1lcwotIG5vdyB1c2Ugb2YgaXZ5IHZhcmlhYmxlcyBpcyBhbGxvd2VkIGluIGl2eSBmaWxlcwotIGFkZGVkIGEgbnVsbCBjaGVjayBpbiBwYXR0ZXJuIGhlbHBlciBzdWJzdGl0dXRlCgogICB2ZXJzaW9uIDEuMCAtIDIwMDUtMDQtMjYKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLjAtcmMzIGhhcyBiZWVuIHByb21vdGVkIHRvIDEuMCBvbiAyMDA1LTA0LTI2CgpLbm93biBidWdzIGFuZCBsaW1pdGF0aW9uczoKLSBjeWNsaWMgZGVwZW5kZW5jaWVzIHJlc3VsdCBpbiBTdGFja092ZXJmbG93RXJyb3IKLSBpbmZpbml0ZSBsb29wIGluIHJhcmUgY2FzZXMgd2hlbiBhIGNvbmZsaWN0IG9jY3VyIGJldHdlZW4gYSBsYXRlc3Qgc3VidmVyc2lvbiBhbmQgYSBmdWxseSByZXNvbHZlZCByZXZpc2lvbgotIHVybCBjb25uZWN0aW9ucyBub3QgY2xvc2VkIHByb3Blcmx5IHdoZW4gbm90IHVzaW5nIGNvbW1vbnMtaHR0cGNsaWVudAotIGxhdGVzdCBkb2VzIG5vdCB3b3JrIHdpdGggaHR0cCB1cmxzIGluIHNvbWUgY2FzZXMsIHdoZW4gdGhlIG5hbWUgb2YgdGhlIGxpbmsgaXMgdHJ1bmNhdGVkIGluIHRoZSB3ZWIgcGFnZQoKICAgdmVyc2lvbiAxLjAtcmMzIC0gMjAwNS0wNC0yMQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gSU1QUk9WRTogYWRkZWQgZGVidWcgbWVzc2FnZXMgb24gdmFyaWFibGVzIHNldHRpbmcKLSBGSVg6IGl2eWNvbmYgbm93IGFibGUgdG8gbG9hZCBhIHByb3BlcnRpZXMgZmlsZSBnaXZlbiBhcyB1cmwKLSBGSVg6IGRlbGl2ZXIgcHViIGRhdGUgbm93IGFjdHVhbGx5IGRlZmF1bHRzIHRvICdub3cnCi0gRklYOiBhbGwgdGFza3MgYXR0cmlidXRlcyBub3cgc3Vic3RpdHV0ZSBpdnkgdmFyaWFibGVzCgogICB2ZXJzaW9uIDEuMC1yYzIgLSAyMDA1LTA0LTE4Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSBJTVBST1ZFOiBpbXByb3ZlZCBtZXNzYWdlczogbW9yZSBkZWJ1ZywgbW9yZSB2ZXJib3NlLCBhbmQgbW9yZSBkZXRhaWxzIG9uIGZhaWx1cmVzCi0gRklYOiBidWcgd2l0aCAnXCcgaW4gcGF0aCBwYXR0ZXJucwotIEZJWDogYnVnIHdpdGggcmVsYXRpdmUgcGF0aHMgcGF0dGVybnMKLSBGSVg6IGNvbmZpZ3VyZSB0YXNrIHRyaWVzIGl2eS5jb25mLmZpbGUgYXMgcmVsYXRpdmUgdG8gYmFzZSBkaXIgYW5kIHRvIGN1cnJlbnQgZGlyCi0gRklYOiBmaWxlIHN5c3RlbSByZXNvbHZlciBwdWJsaXNoZXMgaXZ5IGZpbGVzIHdpdGggaXZ5IHBhdHRlcm4KLSBGSVg6IDAgY29udGVudCBsZW5ndGggY29uc2lkZXJlZCBhcyBub24gZXhpc3RpbmcgKGJlaGF2aW91ciBvZiBqcmUgNS4wIG9uIGxpbnV4KSAKICAgICAgID0+IGVtcHR5IHJlc3NvdXJjZXMgYXJlIG5vdyBjb25zaWRlcmVkIGFzIG5vbiBleGlzdGluZwoKICAgdmVyc2lvbiAxLjAtcmMxIC0gMjAwNS0wNC0xMgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gYWRkIHJlcG9ydCB0YXNrLCB3aGljaCBlbmFibGVzIHRvIGdlbmVyYXRlcyByZXBvcnRzIG9mIGRlcGVuZGVuY2llcywgaW5jbHVkaW5nIGEgZ3JhcGgKICByZWFkeSB0byBiZSBsYXllZCBvdXQgYnkgeUVkCi0gYWRkIGV4Y2x1ZGUgZmVhdHVyZSBpbiBkZXBlbmRlbmN5Ci0gaW5jbHVkZSBleGNsdWRlIGZlYXR1cmUgbm93IGhhbmRsZXMgcmVnZXhwcwotIG5ldyBsYXRlc3Qgc3RyYXRlZ3k6IGxhdGVzdCByZXZpc2lvbiBub3cgdXNlcyBhICJwaHAgdmVyc2lvbl9jb21wYXJlIiBsaWtlIGFsZ29yaXRobSwgd2hlcmVhcwogIGxleGljb2dyYXBoaWMgY29tcGFyaXNvbiBpcyBub3cgYXZhaWxhYmxlIGluIGxhdGVzdCBsZXhpY29ncmFwaGljCi0gZW5oYW5jZSB4bWwgcmVzb2x2ZSByZXBvcnQgZGV0YWlscwotIEZJWDogYmV0dGVyIHNlcGFyYXRpb24gYmV0d2VlbiByb290IGNvbmZpZ3VyYXRpb25zCi0gRklYOiBYbWxNb2R1bGVEZXNjcmlwdG9yVXBkYXRlciBub3cgcHJlc2VydmVzIHhtbCBoZWFkZXIKLSBGSVg6IG1vZHVsZXMgbnVtYmVyIGluIHJlcG9ydCAoZGlzcGxheWVkIGF0IHRoZSBlbmQgb2YgcmVzb2x2ZSkKCiAgIHZlcnNpb24gMC45IC0gMjAwNS0wNC0wNgo9PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSBjbGVhcmx5IGRpZmZlcmVuY2lhdGUgcGF0dGVybiB0b2tlbnMgZnJvbSB2YXJpYWJsZXMsIGJ5IHVzaW5nIGJyYWNrZXRzIGFzIGRlbGltaXRlciBpbiBwYXR0ZXJuIHRva2VucwogID0+IFdBUk5JTkc6IHRoaXMgaW50cm9kdWNlIGNoYW5nZXMgaW4gYWxsIHBhdHRlcm5zIHN5bnRheCwgYW5kIHRodXMgZG9lcyBub3QgcHJvdmlkZSBjb21wYXRpYmlsaXR5CiAgICAgICAgICAgICAgd2l0aCBwcmV2aW91cyB2ZXJzaW9ucwotIENoYWluUmVzb2x2ZXIgYXJlIG5vdyBhYmxlIHRvIHB1Ymxpc2ggKGRlbGVnYXRpbmcgdGhlIGNhbGwgdG8gdGhlIGZpcnN0IHJlc29sdmVyIGluIHRoZSBjaGFpbikKLSBEdWFsUmVzb2x2ZXIgc3ViIHJlc29sdmVycyBhcmUgbm93IHJlZ2lzdGVyZWQgaW4gSXZ5Ci0gbW9yZSBwcmVjaXNlIG1lc3NhZ2Ugb24gZXZpY3Rpb24KLSBhZGQgdmFsaWRhdGUgYXR0cmlidXRlIG9uIG1vc3QgcmVzb2x2ZXJzCi0gaXZ5IGZpbGVzIHZhbGlkYXRpb24gaGFuZGxpbmcgcmV2aWV3Ci0gdXNlIGl2eSB2YXJpYWJsZXMgaW4gYW50IHRhc2tzIHRvIGdldCBkZWZhdWx0IHZhbHVlcyBmb3IgYXR0cmlidXRlcwotIGRvY3VtZW50YXRpb24gdXBkYXRlIGZvciBjb25maWd1cmluZyBpdnkKLSBGSVg6IGRlcGVuZGVuY2llcyBvcmRlciBub3QgdGFrZW4gaW50byBhY2NvdW50IGR1cmluZyByZXNvbHZlCi0gRklYOiBldmljdGluZyBtb2R1bGVzIGFsc28gZXZpY3QgY29uZnMKLSBGSVg6IE5QRSBkdXJpbmcgcmVzb2x2ZSB3aGVuIGEgZGVwZW5kZW5jeSBpdnkgZmlsZSBoYXMgbm8gcHVibGljYXRpb24gZGF0ZQotIEZJWDogY2hlY2sgbnVsbGl0eSBvZiBhcnRpZmFjdCBkb3dubG9hZCByZXBvcnRzCgogICB2ZXJzaW9uIDAuOCAtIDIwMDUtMDMtMzAKPT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gYWRkZWQgdmFsaWRhdGUgYXR0cmlidXRlIG9uIHJlc29sdmUsIHJldHJpZXZlIGFuZCBwdWJsaXNoLCB3aGljaCBhbGxvd3MgdG8gZGlzYWJsZSBpdnkgZmlsZSB2YWxpZGF0aW9uCiAgYWdhaW5zdCBpdnkueHNkICh1c2VmdWwgdG8gcGFyc2UgZnV0dXJlIGNvbXBhdGlibGUgaXZ5IGZpbGVzKQotIGFudCBwcm9wZXJ0aWVzIGFyZSBub3cgYXZhaWxhYmxlIGluIGl2eWNvbmYgZmlsZQotIHVuaWZpZWQgZGVmYXVsdCBwcm9wZXJ0aWVzIGluIGl2eWNvbmYsIHdpdGggYmV0dGVyIGluZGVwZW5kYW5jZSBmcm9tIHVybCBvciBmaWxlCi0gYWRkZWQgZXh0IG9uIGFydGlmYWN0czogdGhpcyBlbmFibGUgdG8gZGlzdGluZ3Vpc2ggYXJ0aWZhY3QgZXh0ZW5zaW9uIGZyb20gYXJ0aWZhY3QKICB0eXBlLCB1dGlsIGluIGNhc2VzIHdoZXJlIGl0IGRpZmZlcnMgKGV4YW1wbGU6ICdzcmMnIHR5cGUgd2l0aCAnemlwJyBleHRlbnNpb24sICdpdnknIHR5cGUgd2l0aCAneG1sJyBleHRlbnNpb24sIC4uLikKLSBhZGRlZCBwdWJsaXNoIGFydGlmYWN0cyBmZWF0dXJlLCB3aGljaCBlbmFibGUgdG8gcHVibGlzaCBkZWNsYXJlZCBhcnRpZmFjdHMgb2YgYSBtb2R1bGUgdG8gYSByZXBvc2l0b3J5CiAgZGVzY3JpYmVkIGJ5IGEgZGVwZW5kZW5jeSByZXNvbHZlci4gSXQgY3VycmVudGx5IHdvcmtzIG9ubHkgd2l0aCBmaWxlc3lzdGVtIHJlc29sdmVyLgotIHVybCByZXNvbHZlciBub3cgaGFuZGxlcyBsYXRlc3Qgd2l0aCBmaWxlIHVybHMgYW5kIGh0dHAgb25lcyAodGVzdGVkIG9ubHkgd2l0aCBhcGFjaGUgc2VydmVyKQotIGFkZGVkIGxhdGVzdCBzdHJhdGVneSBjb25jZXB0OiB0aGUgd2F5IHRvIGRldGVybWluZSB3aGljaCBhcnRpZmFjdCBpcyB0aGUgbGF0ZXN0CiAgaXMgbm93IGNvbmZpZ3VyYWJsZSBvbiByZXNvbHZlcnMgaGFuZGxpbmcgbGF0ZXN0LiAKLSBhZGRlZCBwYXJhbWV0ZXIgb24gY2hhaW4gcmVzb2x2ZXIgdG8gc2F5IGlmIGl0IHNob3VsZCByZXR1cm4gZmlyc3QgZm91bmQgb3IKICB0cnkgdG8gZmluZCB0aGUgbGF0ZXN0IGFtb25nIGFsbCBpZiBhc2tlZAotIGEgbW9kdWxlIGNhbiBub3cgcHVibGlzaCBubyBhcnRpZmFjdCwgdXNlZnVsIGZvciB2aXJ0dWFsIG1vZHVsZXMgY29uc2lzdGluZyBvbmx5CiAgb2YgaW50ZWdyYXRpb24gb2Ygb3RoZXIgbW9kdWxlcwotIGFkZGVkIGNvbmZsaWN0IG1hbmFnZW1lbnQgYXQgcmVzb2x2ZSB0aW1lOiBkdXJpbmcgcmVzb2x2ZSwgbW9kdWxlcyBpbiBjb25mbGljdCBjYW4gYmUgZXZpY3RlZAogIGFuZCB0aHVzIG5vdCBkb3dubG9hZGVkCi0gYWRkZWQgaXZ5cmVwIHJlc29sdmVyLCB1c2luZyBpdnlyZXAgdG8gZmluZCBpdnkgZmlsZXMsIGFuZCBpYmlibGlvIGZvciBhcnRpZmFjdHMKLSB1c2UgaXZ5cmVwIGluc3RlYWQgb2YgaWJpYmxpbyBhcyBkZWZhdWx0IHJlc29sdmVyCi0gYWRkZWQgbW9yZSBpbmZvIGluIGl2eSBmaWxlcyAoZGVzY3JpcHRpb24sIGhvbWVwYWdlLCBpdnkgYXV0aG9ycywgbGljZW5zZSwgcHVibGljIHJlcG9zaXRvcnksIC4uLikKLSBub3cgY2FjaGUgbGF5b3V0IGlzIGNvbmZpZ3VyYWJsZSwgdXNpbmcgY2FjaGVJdnlQYXR0ZXJuIGFuZCBjYWNoZUFydGlmYWN0UGF0dGVybgogIGF0dHJpYnV0ZXMgb24gY29uZiBlbGVtZW50IGluIGl2eWNvbmYueG1sCi0gY2hhbmdlZCBkZWZhdWx0IGNhY2hlIGxheW91dDogYXJ0aWZhY3RzIGFyZSBzZXBhcmF0ZWQgYnkgdHlwZQotIGFkZGVkIGNhY2hlcGF0aCB0YXNrLCB3aGljaCBlbmFibGVzIHRvIGJ1aWxkIGFuIGFudCBwYXRoIG9mIGFydGlmYWN0cyBpbiBjYWNoZSByZXF1aXJlZCBmb3IgYSBjb25mCgogICB2ZXJzaW9uIDAuNyAtIDIwMDUtMDMtMTEKPT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gYWRkZWQgbGF0ZXN0IHN1YiByZXZpc2lvbiBmZWF0dXJlOiB5b3UgY2FuIG5vdyBzZWxlY3QgdGhlIGxhdGVzdCBzdWIgcmV2aXNpb24gb2YgYSBtb2R1bGUKICB1c2luZyBhICsuIEZvciBpbnN0YW5jZSwgIjEuMCsiIHNlbGVjdHMgdGhlIGxhdGVzdCByZXZpc2lvbiBzdGFydGluZyB3aXRoIDEuMC4gKHRoYW5rcyB0byBqb25hcyBmb3IgdGhlIGlkZWEpCi0gaGFsdG9uZmFpbHVyZSBub3cgZGVmYXVsdHMgdG8gdHJ1ZSAoYXMgc3VnZ2VzdGVkIGJ5IEplcm9lbikKLSBzaG9ydGVyIGluZm8gbGluZXMgdG8gYmV0dGVyIHZpZXcgaW1wb3J0YW50IGluZm8gKGFzIHN1Z2dlc3RlZCBieSBKZXJvZW4pCi0gcmV0cmlldmUgbm93IGNoZWNrcyBpZiBmaWxlcyBhcmUgdXAgdG8gZGF0ZSBiZWZvcmUgY29weWluZyB0aGVtIGZyb20gY2FjaGUuIFRoaXMgZmVhdHVyZQogIGNhbiBiZSBkaXNhYmxlZCB1c2luZyB0aGUgY2hlY2tVcFRvRGF0ZSBhdHRyaWJ1dGUgaW4gaXZ5IGNvbmZpZ3VyYXRpb24gZmlsZS4KLSBkbyBub3QgZG93bmxvYWQgZGVwZW5kZW5jaWVzIHdoZW4gbm90IG5lY2Vzc2FyeSBkdXJpbmcgcHVibGljYXRpb24gKGFzIHN1Z2dlc3RlZCBieSBEYW5pZWxlKQotIGJ1ZyBmaXg6IGJldHRlciBoYW5kbGluZyBvZiBwdWJsaXNoIHdpdGhvdXQgcmVjdXJzaXZlIGRlbGl2ZXJ5CgogICB2ZXJzaW9uIDAuNi4xIC0gMjAwNS0wMi0xMQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotIGJ1ZyBmaXg6IGNvbmYgZXh0ZW5kcyBwcm9ibGVtIHdpdGggcHVibGljYXRpb25zCi0gYnVnIGZpeDogdHlwZWRlZiBiYWRseSBoYW5kbGVkIGluIGl2eWNvbmYueG1sCi0gYnVnIGZpeDogZGVmYXVsdCBwcm9wZXJ0aWVzIGxvYWRpbmcgaW4gaXZ5IGNvbmZpZ3VyZSBsb2FkZWQgdXNpbmcgdGFzayBjbGFzc2xvYWRlcgoKICAgdmVyc2lvbiAwLjYgLSAyMDA1LTAyLTAzCj09PT09PT09PT09PT09PT09PT09PT09PT09PQorIGZ1bmN0aW9uYWwKLSBhZGRlZCBoYWx0b25mYWlsdXJlIGF0dHJpYnV0ZSBvbiByZXNvbHZlIGFuZCByZXRyaWV2ZSB0YXNrLCBzbyB0aGF0IGJ1aWxkIGNhbiBiZSBoYWx0IHdoZW4gCiAgcmVzb2x2ZSBvciByZXRyaWV2ZSBmYWlscwotIGFkZGVkIGRlcGVuZGVuY3kgYXJ0aWZhY3RzIGZpbHRlcmluZyBmZWF0dXJlLCBlbmFibGluZyB0byB3b3JrIGJldHRlciB3aXRoIGliaWJsaW8KLSBpYmlibGlvIHJlc29sdmVyIGNhbiBub3cgYmUgY29uZmlndXJlZCB0byB1c2UgYW55IG1hdmVuIGxpa2UgcmVwb3NpdG9yeSwgd2l0aCByb290IGFuZCBwYXR0ZXJuIGF0dHJpYnV0ZXMKLSBhZGRlZCBkb3dubG9hZCBwcm9ncmVzc2lvbiBpbmZvIG9uIHJlc29sdmUKLSBkZWZhdWx0IGNhY2hlIGlzIG5vdyBpbiB1c2VyIGhvbWUgKC5pdnktY2FjaGUgaW4gdXNlciBob21lKSwgc28gdGhhdCBjYWNoZSBpcyBzaGFyZWQKICBieSBkZWZhdWx0IGZvciBhbGwgcHJvamVjdHMgb2YgdGhlIHNhbWUgdXNlcgotIGFkZGVkIHB1YmxpYyBhY2Nlc3MgdG8gbWV0aG9kIGdldERlcGVuZGVuY2llcyguLi4pIGluIEl2eSwgd2hpY2ggcmVzb2x2ZSBkZXBlbmRlbmNpZXMgd2l0aG91dAogIGRvd25sb2FkaW5nIGFydGlmYWN0cwotIGFkZGVkIER1YWxSZXNvbHZlciwgd2hpY2ggYWxsb3dzIHRvIGhhdmUgaXZ5IGZpbGVzIGluIG9uZSBwbGFjZSBhbmQgYXJ0aWZhY3RzIGluIGFub3RoZXIgb25lCgorIG5vbiBmdW5jdGlvbmFsCi0gYWRkZWQgc29tZSB1bml0IHRlc3RzCi0gZGVlcCByZXZpZXcgb2YgaXZ5IGZpbGUgcmVmZXJlbmNlIGRvY3VtZW50YXRpb24KCisgYnVncyBhbmQgcmVmYWN0b3JpbmcKLSBidWcgZml4OiBTaW1wbGVVUkxSZXNvbHZlciBub3QgaGFuZGxpbmcgdGhlIGNhc2Ugd2hlbiB0aGVyZSBpcyBubyBpdnkgZmlsZQotIHJlZmFjdG9yaW5nOiBVUkxSZXNvbHZlciByZW5hbWVkIHRvIEFic3RyYWN0VVJMUmVzb2x2ZXIKLSByZWZhY3RvcmluZzogU2ltcGxlVVJMUmVzb2x2ZXIgcmVuYW1lZCB0byBVUkxSZXNvbHZlcgoKICAgdmVyc2lvbiAwLjUuMSAtIDIwMDUtMDEtMTYKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSBCdWcgRml4OiBOUEUgaW4gcHVibGlzaCB0YXNrIHdoZW4gbm8gZGVsaXZlcnkubGlzdC5maWxlIGlzIHByb3ZpZGVkCi0gZG9jdW1lbnRhdGlvbiB1cGRhdGUKCiAgIHZlcnNpb24gMC41IC0gMjAwNS0wMS0xMgo9PT09PT09PT09PT09PT09PT09PT09PT09PT0KaW5pdGlhbCBwdWJsaWMgdmVyc2lvbgo=