ICAgICAgICAgICAgICBBcGFjaGUgQ29tbW9ucyBDb21wcmVzcyBSRUxFQVNFIE5PVEVTCgpBcGFjaGUgQ29tbW9ucyBDb21wcmVzcyBzb2Z0d2FyZSBkZWZpbmVzIGFuIEFQSSBmb3Igd29ya2luZyB3aXRoCmNvbXByZXNzaW9uIGFuZCBhcmNoaXZlIGZvcm1hdHMuICBUaGVzZSBpbmNsdWRlOiBiemlwMiwgZ3ppcCwgcGFjazIwMCwKbHptYSwgeHosIFNuYXBweSwgdHJhZGl0aW9uYWwgVW5peCBDb21wcmVzcywgREVGTEFURSwgREVGTEFURTY0LCBMWjQsCkJyb3RsaSwgWnN0YW5kYXJkIGFuZCBhciwgY3BpbywgamFyLCB0YXIsIHppcCwgZHVtcCwgN3osIGFyai4KCk5ldyBmZWF0dXJlczoKbyBVc2UgRmlsZVRpbWUgZm9yIHRpbWUgZmllbGRzIGluIFNldmVuWmlwQXJjaGl2ZUVudHJ5ICMyNTYuCiAgSXNzdWU6IENPTVBSRVNTLTYxNC4gVGhhbmtzIHRvIEFuZHJlIEJyYWl0LCBHYXJ5IEdyZWdvcnkuIApvIEZpeCBjYWxjdWxhdGlvbiB0aGUgb2Zmc2V0IG9mIHRoZSBmaXJzdCBaSVAgY2VudHJhbCBkaXJlY3RvcnkgZW50cnkgIzMzNC4KICBJc3N1ZTogQ09NUFJFU1MtNjIxLiBUaGFua3MgdG8gR2xhdm8uIApvIEFkZCBlbmNyeXB0aW9uIHN1cHBvcnQgZm9yIFNldmVuWiAjMzMyLgogIElzc3VlOiBDT01QUkVTUy02MzMuIFRoYW5rcyB0byBEYW5pZWwgU2FudG9zLCBCcnVubyBQLiBLaW5vc2hpdGEsIEdhcnkgR3JlZ29yeS4gCm8gU3VwcG9ydCBmb3IgZXh0cmEgdGltZSBkYXRhIGluIFppcCBhcmNoaXZlcyAjMzQ1LgogIElzc3VlOiBDT01QUkVTUy02MTMuIFRoYW5rcyB0byBBbmRyZSBCcmFpdCwgR2FyeSBHcmVnb3J5LCBCcnVubyBQLiBLaW5vc2hpdGEuIApvIEFkZCBvcmcuYXBhY2hlLmNvbW1vbnMuY29tcHJlc3MuYXJjaGl2ZXJzLnppcC5EZWZhdWx0QmFja2luZ1N0b3JlU3VwcGxpZXIgdG8gd3JpdGUgdG8gYSBjdXN0b20gZm9sZGVyIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgdGVtcG9yYXJ5IGZvbGRlci4KICBJc3N1ZTogQ09NUFJFU1MtNjIxLiBUaGFua3MgdG8gR2FyeSBHcmVnb3J5LiAKbyBBZGQgY2FwYWJpbGl0eSB0byBjb25maWd1cmUgRGVmbGF0ZXIgc3RyYXRlZ3kgaW4gR3ppcENvbXByZXNzb3JPdXRwdXRTdHJlYW06IEd6aXBQYXJhbWV0ZXJzLnNldERlZmxhdGVTdHJhdGVneShpbnQpLgogIElzc3VlOiBDT01QUkVTUy02MDAuIFRoYW5rcyB0byBHYXJ5IEdyZWdvcnksIFBhc2NhbCBEYXZvdXN0LiAKCkZpeGVkIEJ1Z3M6Cm8gSW1wbGljaXQgbmFycm93aW5nIGNvbnZlcnNpb24gaW4gY29tcG91bmQgYXNzaWdubWVudC4gVGhhbmtzIHRvIENvZGVRTCwgR2FyeSBHcmVnb3J5LiAKbyBBdm9pZCBOUEUgaW4gRmlsZU5hbWVVdGlscy5nZXRCYXNlTmFtZShQYXRoKSBmb3IgcGF0aHMgd2l0aCB6ZXJvIGVsZW1lbnRzIGxpa2Ugcm9vdCBwYXRocy4gVGhhbmtzIHRvIENvZGVRTCwgR2FyeSBHcmVnb3J5LiAKbyBBdm9pZCBOUEUgaW4gRmlsZU5hbWVVdGlscy5nZXRFeHRlbnNpb24oUGF0aCkgZm9yIHBhdGhzIHdpdGggemVybyBlbGVtZW50cyBsaWtlIHJvb3QgcGF0aHMuIFRoYW5rcyB0byBDb2RlUUwsIEdhcnkgR3JlZ29yeS4gCm8gTFpNQTJEZWNvZGVyLmRlY29kZSgpIGxvb3NlcyBvcmlnaW5hbCBleGNlcHRpb24uIFRoYW5rcyB0byBHYXJ5IEdyZWdvcnkuIApvIEV4dHJhY3QgY29uZGl0aW9ucyBhbmQgYXZvaWQgZHVwbGljYXRlIGNvZGUuICMyOTcuIFRoYW5rcyB0byBBcnR1cm8gQmVybmFsLiAKbyBSZW1vdmUgZHVwbGljYXRlIGNvbmRpdGlvbnMuIFVzZSBzd2l0Y2ggaW5zdGVhZC4gIzI5OC4gVGhhbmtzIHRvIEFydHVybyBCZXJuYWwuIApvIFJlcGxhY2UgSlVuaXQgMyBhbmQgNCB3aXRoIEpVbml0IDUgIzM0NCwgIzM0Ni4gVGhhbmtzIHRvIFJvYmluIFNjaGltcGYuIApvIE1ha2UgJ1ppcEZpbGUub2Zmc2V0Q29tcGFyYXRvcicgc3RhdGljICMzNTMuIFRoYW5rcyB0byBHbGF2by4gCm8gVGhlIEd6aXBDb21wcmVzc29yT3V0cHV0U3RyZWFtI3dyaXRlSGVhZGVyKCkgdXNlcyBJU09fODg1OV8xIHRvIHdyaXRlIHRoZSBmaWxlIG5hbWUgYW5kIGNvbW1lbnQuIAogIElmIHRoZSBzdHJpbmdzIGNvbnRhaW5zIG5vbi1JU09fODg1OV8xIGNoYXJhY3RlcnMsIHVua25vd24gY2hhcmFjdGVycyBhcmUgZGlzcGxheWVkIGFmdGVyIGRlY29tcHJlc3Npb24uIAogIFVzZSBwZXJjZW50IGVuY29kaW5nIGZvciBub24gSVNPXzg4NTlfMSBjaGFyYWN0ZXJzLgogIElzc3VlOiBDT01QUkVTUy02MzguIFRoYW5rcyB0byBSYWRhciB3ZW4sIEdhcnkgR3JlZ29yeSwgTWljaGFlbCBPc2lwb3YuIApvIFBvcnQgc29tZSBjb2RlIGZyb20gSU8gdG8gTklPIEFQSXMuIFRoYW5rcyB0byBKb25hdGhhbiBMZWl0c2NodWgsIEdhcnkgR3JlZ29yeS4gCm8gcGFjazIwMDogRml4IEZpbGVCYW5kcyBtaXN1c2luZyBJbnB1dFN0cmVhbSNyZWFkKGJ5dGVbXSkgIzM2MC4gVGhhbmtzIHRvIFVuYSwgR2FyeSBHcmVnb3J5LCBKb2NoZW4gV2llZG1hbm4sIHF1YXRlcm5hcnksIEJydW5vIFAuIEtpbm9zaGl0YS4gCm8gQWRkIFRhckFyY2hpdmVFbnRyeS5nZXRMaW5rRmxhZygpICMzNjUuCiAgSXNzdWU6IENPTVBSRVNTLTY0MS4gVGhhbmtzIHRvIFhlbm9BbWVzcywgR2FyeSBHcmVnb3J5LCBCcnVubyBQLiBLaW5vc2hpdGEuIApvIEludGVnZXIgb3ZlcmZsb3cgQXJpdGhtZXRpY0V4Y2VwdGlvbiBpbiBUYXJBcmNoaXZlT3V0cHV0U3RyZWFtICMzNjguCiAgSXNzdWU6IENPTVBSRVNTLTY0Mi4gVGhhbmtzIHRvIEFudG9uIEtsYXLpbiwgR2FyeSBHcmVnb3J5LiAKbyBvcmcuYXBhY2hlLmNvbW1vbnMuY29tcHJlc3MuYXJjaGl2ZXJzLnppcC5aaXBGaWxlLmZpbmFsaXplKCkgc2hvdWxkIG5vdCB3cml0ZSB0byBzdGQgZXJyLgogIElzc3VlOiBDT01QUkVTUy02NDIuIFRoYW5rcyB0byBEb21pbmlrIFN0YWRsZXIsIFN0ZWZhbiBCb2Rld2lnLCBHYXJ5IEdyZWdvcnkuIAoKQ2hhbmdlczoKbyBCdW1wIG1vY2tpdG8udmVyc2lvbiBmcm9tIDQuOC4wIHRvIDQuMTEuMCAjMzI4LCAjMzMxLCAjMzQwLCAjMzQ4LiBUaGFua3MgdG8gRGVwZW5kYWJvdC4gCm8gQnVtcCBwbWQgZnJvbSA2LjUwLjAgdG8gNi41My4wLiBUaGFua3MgdG8gR2FyeSBHcmVnb3J5LiAKbyBCdW1wIG1lbW9yeWZpbGVzeXN0ZW0gZnJvbSAyLjMuMCB0byAyLjUuMCAjMzMwLCAjMzU5LiBUaGFua3MgdG8gRGVwZW5kYWJvdC4gCm8gQnVtcCBzbGY0ai1hcGkgZnJvbSAyLjAuMyB0byAyLjAuNyAjMzI5LCAjMzMzLCAjMzQxLCAjMzcxLiBUaGFua3MgdG8gRGVwZW5kYWJvdC4gCm8gQnVtcCBqYXBpY21wIGZyb20gMC4xNi4wIHRvIDAuMTcuMS4gVGhhbmtzIHRvIEdhcnkgR3JlZ29yeS4gCm8gQnVtcCBjb21tb25zLXBhcmVudCBmcm9tIDU0IHRvIDU2ICMzMzksICMzNDkuIFRoYW5rcyB0byBEZXBlbmRhYm90LiAKbyBCdW1wIHpzdGQtam5pIGZyb20gMS41LjItNSB0byAxLjUuNC0yICMzNjIsICMzNjQuIFRoYW5rcyB0byBEZXBlbmRhYm90LiAKClJlbW92ZWQ6Cm8gUmVtb3ZlIEJaaXAyQ29tcHJlc3Nvck91dHB1dFN0cmVhbS5maW5hbGl6ZSgpIHdoaWNoIG9ubHkgd3JvdGUgdG8gc3RkIGVyci4gVGhhbmtzIHRvIEdhcnkgR3JlZ29yeS4gCkZvciBjb21wbGV0ZSBpbmZvcm1hdGlvbiBvbiBBcGFjaGUgQ29tbW9ucyBDb21wcmVzcywgaW5jbHVkaW5nIGluc3RydWN0aW9ucwpvbiBob3cgdG8gc3VibWl0IGJ1ZyByZXBvcnRzLCBwYXRjaGVzLCBvciBzdWdnZXN0aW9ucyBmb3IgaW1wcm92ZW1lbnQsCnNlZSB0aGUgQXBhY2hlIENvbW1vbnMgQ29tcHJlc3Mgd2Vic2l0ZToKCmh0dHBzOi8vY29tbW9ucy5hcGFjaGUub3JnL2NvbXByZXNzLwoKT2xkIFJlbGVhc2UgTm90ZXMKPT09PT09PT09PT09PT09PT0KClJlbGVhc2UgMS4yMgotLS0tLS0tLS0tLS0KCk5ldyBmZWF0dXJlczoKbyBNaWdyYXRlIHppcCBwYWNrYWdlIHRvIHVzZSBOSU8gIzIzNi4KICBJc3N1ZTogQ09NUFJFU1MtNjAyLiBUaGFua3MgdG8gUG9zdGVsbmljdSBHZW9yZ2UsIEdhcnkgR3JlZ29yeS4gCm8gQWRkIEFQSyBmaWxlIGV4dGVuc2lvbiBjb25zdGFudHM6IEFyY2hpdmVTdHJlYW1GYWN0b3J5LkFQSywgQVBLTSwgQVBLUywgWEFQSy4gVGhhbmtzIHRvIEdhcnkgR3JlZ29yeS4gCm8gQXJjaGl2ZVN0cmVhbUZhY3RvcnkuY3JlYXRlQXJjaGl2ZUlucHV0U3RyZWFtKFN0cmluZywgSW5wdXRTdHJlYW0sIFN0cmluZykgc3VwcG9ydHMgdGhlICJBUEsiIGZvcm1hdCAoaXQncyBhIEpBUikuIFRoYW5rcyB0byBHYXJ5IEdyZWdvcnkuIApvIEV4cGFuZGVyIGV4YW1wbGUgbm93IGhhcyBOSU8gUGF0aCB2ZXJzaW9ucyBvZiBJTyBGaWxlIEFQSXMuIFRoYW5rcyB0byBHYXJ5IEdyZWdvcnkuIApvIEltcHJvdmUgVEFSIHN1cHBvcnQgZm9yIGZpbGUgdGltZXMgIzI1NC4KICBJc3N1ZTogQ09NUFJFU1MtNjEyLiBUaGFua3MgdG8gQW5kcmUgQnJhaXQsIEdhcnkgR3JlZ29yeS4gCm8gQWRkIFNldmVuWkFyY2hpdmVFbnRyeS5zZXRDb250ZW50TWV0aG9kcyhTZXZlblpNZXRob2RDb25maWd1cmF0aW9uLi4uKS4gVGhhbmtzIHRvIEdhcnkgR3JlZ29yeS4gCgpGaXhlZCBCdWdzOgpvIEZpeCBzb21lIGNvbXBpbGVyIHdhcm5pbmdzIGluIHBhY2syMDAgcGFja2FnZXMuIFRoYW5rcyB0byBHYXJ5IEdyZWdvcnkuIApvIENsb3NlIEZpbGUgaW5wdXQgc3RyZWFtIGFmdGVyIHVucGFja2luZyBpbiBQYWNrMjAwVW5wYWNrZXJBZGFwdGVyLnVucGFjayhGaWxlLCBKYXJPdXRwdXRTdHJlYW0pLiBUaGFua3MgdG8gR2FyeSBHcmVnb3J5LiAKbyBQYWNrMjAwVW5wYWNrZXJBZGFwdGVyLnVucGFjayhJbnB1dFN0cmVhbSwgSmFyT3V0cHV0U3RyZWFtKSBzaG91bGQgbm90IGNsb3NlIGl0cyBnaXZlbiBpbnB1dCBzdHJlYW0uIFRoYW5rcyB0byBHYXJ5IEdyZWdvcnkuIApvIEZpeCBtaW5vciBwcm9ibGVtIGluIGV4YW1wbGVzLgogIElzc3VlOiBDT01QUkVTUy01OTYuIFRoYW5rcyB0byBUYW1hcyBNdWNzLiAKbyBBZGQgYSBsaW1pdCB0byB0aGUgY29weSBidWZmZXIgaW4gSU9VdGlscy5yZWFkUmFuZ2UoKSB0bwogIGF2b2lkIHJlYWRpbmcgbW9yZSBmcm9tIGEgY2hhbm5lbCB0aGFuIGFza2VkIGZvci4KICBHaXRodWIgUHVsbCBSZXF1ZXN0ICMyMTQuCiAgSXNzdWU6IENPTVBSRVNTLTU4NC4gVGhhbmtzIHRvIE1hdHRoaWpzIExhYW4sIFBldGVyIExlZS4gCm8gRG9jdW1lbnRhdGlvbiBuaXRzICMyMTcuIFRoYW5rcyB0byBIZWxkZXIgTWFnYWxo42VzLCBHYXJ5IEdyZWdvcnksIFBldGVyQWxmcmVkTGVlLiAKbyBSZXBsYWNlIHdyYXBwZXIgQ29sbGVjdGlvbnMuc29ydCBpcyB3aXRoIGFuIGluc3RhbmNlIG1ldGhvZCBkaXJlY3RseS4gIzI0NS4gVGhhbmtzIHRvIEFydHVybyBCZXJuYWwuIApvIFJlcGxhY2UgbWFudWFsIGNvbXBhcmlzb25zIHdpdGggQ29tcGFyYXRvci5jb21wYXJpbmdJbnQoKSAjMjQ0LiBUaGFua3MgdG8gQXJ0dXJvIEJlcm5hbC4gCm8gUmVwbGFjZSBtYW51YWwgY29weSBvZiBhcnJheSBjb250ZW50cyB3aXRoIFN5c3RlbS5hcnJheWNvcHkoKSAjMjQ2LiBUaGFua3MgdG8gQXJ0dXJvIEJlcm5hbC4gCm8gRml4IHRocmVhZCBzYWZldHkgaXNzdWVzIHdoZW4gZW5jb2RpbmcgN3ogcGFzc3dvcmQgIzI0OC4gVGhhbmtzIHRvIEdsYXZvLCBCcnVubyBQLiBLaW5vc2hpdGEsIFBldGVyQWxmcmVkTGVlLCBHYXJ5IEdyZWdvcnkuIApvIGJ6aXAyOiBjYWxjdWxhdGUgbWVkaWFuLW9mLTMgb24gdW5zaWduZWQgdmFsdWVzICMyNDIuIFRoYW5rcyB0byBQZXRlciBEZXR0bWFuLiAKbyBVc2UgTWF0aC5taW4gYW5kIE1hdGgubWF4IGNhbGN1bGF0aW9ucy4gIzI0Ny4gVGhhbmtzIHRvIEFydHVybyBCZXJuYWwsIEdhcnkgR3JlZ29yeSwgQnJ1bm8gUC4gS2lub3NoaXRhLiAKbyBFeHBhbmRlciBzaG91bGQgYmUgYWJsZSB0byB3b3JrIGlmIGFuIGVudHJ5J3MgbmFtZSBpcyAiLi8iLgogIElzc3VlOiBDT01QUkVTUy02MDMuIFRoYW5rcyB0byBNYXR0IFNpY2tlci4gCm8gRW5zdXJlIGNvbXBhdGliaWxpdHkgd2l0aCBKYXZhIDggIzI1Mi4KICBJc3N1ZTogQ09NUFJFU1MtNjA0LiBUaGFua3MgdG8gQW5kcmUgQnJhaXQuIApvIFVzZSBTdHJpbmdCdWlsZGVyIGluc3RlYWQgb2YgU3RyaW5nQnVmZmVyLiAjMjg0LiBUaGFua3MgdG8gQXJ0dXJvIEJlcm5hbC4gCm8gSW5saW5lIHZhcmlhYmxlLiBSZW1vdmUgcmVkdW5kYW50IGxvY2FsIHZhcmlhYmxlLiAjMjgzLiBUaGFua3MgdG8gQXJ0dXJvIEJlcm5hbC4gCm8gVXNlIGNvbXBhcmUgbWV0aG9kICMyODUuIFRoYW5rcyB0byBBcnR1cm8gQmVybmFsLiAKbyBSZW1vdmUgVW5uZWNlc3NhcnkgaW50ZXJmYWNlIG1vZGlmaWVycyAjMjgxLiBUaGFua3MgdG8gQXJ0dXJvIEJlcm5hbC4gCm8gQXZvaWQgdXNlIEMtc3R5bGUgYXJyYXkgZGVjbGFyYXRpb24uICMyODIuIFRoYW5rcyB0byBBcnR1cm8gQmVybmFsLiAKbyBDaGVja3N1bVZlcmlmeWluZ0lucHV0U3RyZWFtLnJlYWQoKSBkb2VzIG5vdCBhbHdheXMgdmFsaWRhdGUgY2hlY2tzdW0gYXQgZW5kLW9mLXN0cmVhbS4gVGhhbmtzIHRvIEdhcnkgR3JlZ29yeS4gCm8gRml4IFRhckZpbGVUZXN0ICMyODkuIFRoYW5rcyB0byBNYXR0IEp1bnR1bmVuLiAKbyBVcGRhdGUgV2lraXBlZGlhIGxpbmsgaW4gVGFyVXRpbHMuamF2YTo2MjcuCiAgSXNzdWU6IENPTVBSRVNTLTYyNS4gVGhhbmtzIHRvIE1yQnVtcCwgR2FyeSBHcmVnb3J5LiAKbyBPdXRPZk1lbW9yeUVycm9yIG9uIG1hbGZvcm1lZCBwYWNrMjAwIGlucHV0IChhdHRyaWJ1dGVzKS4KICBJc3N1ZTogQ09NUFJFU1MtNjI2LiBUaGFua3MgdG8gQW5kcmlpIEh1ZHosIEdhcnkgR3JlZ29yeS4gCm8gT3V0T2ZNZW1vcnlFcnJvciBvbiBtYWxmb3JtZWQgcGFjazIwMCBpbnB1dCAob3JnLmFwYWNoZS5jb21tb25zLmNvbXByZXNzLmhhcm1vbnkucGFjazIwMC5OZXdBdHRyaWJ1dGVCYW5kcy5yZWFkTmV4dFVuaW9uQ2FzZSkuCiAgSXNzdWU6IENPTVBSRVNTLTYyOC4gVGhhbmtzIHRvIEFuZHJpaSBIdWR6LCBHYXJ5IEdyZWdvcnkuIApvIE91dE9mTWVtb3J5RXJyb3Igb24gbWFsZm9ybWVkIHVucGFjazIwMCBpbnB1dCAob3JnLmFwYWNoZS5jb21tb25zLmNvbXByZXNzLmhhcm1vbnkudW5wYWNrMjAwLk5ld0F0dHJpYnV0ZUJhbmRzLnJlYWROZXh0VW5pb25DYXNlKS4KICBJc3N1ZTogQ09NUFJFU1MtNjI4LiBUaGFua3MgdG8gR2FyeSBHcmVnb3J5LiAKbyBTb21lIGlucHV0IHN0cmVhbXMgYXJlIG5vdCBjbG9zZWQgaW4gb3JnLmFwYWNoZS5jb21tb25zLmNvbXByZXNzLmhhcm1vbnkucGFjazIwMC5QYWNraW5nVXRpbHMuIFRoYW5rcyB0byBHYXJ5IEdyZWdvcnkuIApvIFBhY2syMDAgY2F1c2VzIGEgJ2FyY2hpdmUuM0UnIGVycm9yIGlmIGl0P3Mgbm90IGluIHRoZSBzeXN0ZW0gY2xhc3MgbG9hZGVyLgogIElzc3VlOiBDT01QUkVTUy02MjcuIFRoYW5rcyB0byBhbmF0YXdhMTIsIEdhcnkgR3JlZ29yeS4gCgpDaGFuZ2VzOgpvIEJ1bXAgYWN0aW9ucy9jYWNoZSBmcm9tIDIuMS42IHRvIDMuMC4xMCAjMjMwLCAjMjU3LCAjMzA1LCAjMzIwLiBUaGFua3MgdG8gRGVwZW5kYWJvdCwgR2FyeSBHcmVnb3J5LiAKbyBCdW1wIGFjdGlvbnMvY2hlY2tvdXQgZnJvbSAyLjMuNCB0byAzLjEuMCAjMjI2LCAjMjI3LCAjMjUxLCAjMzAwLCAjMzIxLiBUaGFua3MgdG8gRGVwZW5kYWJvdCwgR2FyeSBHcmVnb3J5LiAKbyBCdW1wIGFjdGlvbnMvc2V0dXAtamF2YSBmcm9tIDIgdG8gMy41LjEgIzI3OC4gVGhhbmtzIHRvIERlcGVuZGFib3QuIApvIEJ1bXAgZ2l0aHViL2NvZGVxbC1hY3Rpb24gZnJvbSAxIHRvIDIgIzI4Ny4gVGhhbmtzIHRvIERlcGVuZGFib3QuIApvIEJ1bXAgbW9ja2l0by1jb3JlIGZyb20gMy4xMS4xIHRvIDQuNi4xICMyMDksICMyMjQsICMyMzEsICMyMzUsICMyNDMsICMyNTMsICMyODYsICMyOTQuIFRoYW5rcyB0byBEZXBlbmRhYm90LiAKbyBCdW1wIG9yZy5hcGFjaGUuZmVsaXguZnJhbWV3b3JrIGZyb20gNy4wLjAgdG8gNy4wLjEgIzIwOC4gVGhhbmtzIHRvIERlcGVuZGFib3QuIApvIEJ1bXAgbWVtb3J5ZmlsZXN5c3RlbSBmcm9tIDIuMS4wIHRvIDIuMy4wICMyMTIsICMyMzcuIFRoYW5rcyB0byBEZXBlbmRhYm90LiAKbyBCdW1wIHpzdGQtam5pIGZyb20gMS41LjAtMiB0byAxLjUuMi01ICMyMTUsICMyMzMsICMyMzgsICMyNDAsICMyNTAsICMyOTEsICMzMjYuIFRoYW5rcyB0byBEZXBlbmRhYm90LCBHYXJ5IEdyZWdvcnkuIApvIEJ1bXAgUGFjazIwMCBwYWNrYWdlcyBmcm9tIEFTTSAzLjIgdG8gOS4yICMyMTYuIAogIEJyZWFrcyBiaW5hcnkgY29tcGF0aWJpbGl0eSBpbiB0aGUgaW50ZXJuYWxzIG9mIHRoZSBwYWNrMjAwIGltcGxlbWVudGF0aW9uOgogIC0gb3JnLmFwYWNoZS5jb21tb25zLmNvbXByZXNzLmhhcm1vbnkucGFjazIwMC5TZWdtZW50CiAgLSBvcmcuYXBhY2hlLmNvbW1vbnMuY29tcHJlc3MuaGFybW9ueS5wYWNrMjAwLlNlZ21lbnRNZXRob2RWaXNpdG9yCiAgLSBvcmcuYXBhY2hlLmNvbW1vbnMuY29tcHJlc3MuaGFybW9ueS5wYWNrMjAwLlNlZ21lbnRBbm5vdGF0aW9uVmlzaXRvcgogIC0gb3JnLmFwYWNoZS5jb21tb25zLmNvbXByZXNzLmhhcm1vbnkucGFjazIwMC5TZWdtZW50RmllbGRWaXNpdG9yCiAgSXNzdWU6IENPTVBSRVNTLTU4Mi4gVGhhbmtzIHRvIEFsZXggTGFuZGF1LCBTdGVwaGFuLCBHYXJ5IEdyZWdvcnkuIApvIEJ1bXAgYXNtIGZyb20gOS4yIHRvIDkuNCAjMjc5LCAjMzIyLiBUaGFua3MgdG8gRGVwZW5kYWJvdC4gCm8gQnVtcCBtYXZlbi1qYXZhZG9jLXBsdWdpbiBmcm9tIDMuMy4wIHRvIDMuNC4xICMyMjEsICMyNDksICMyODgsICMzMDguIFRoYW5rcyB0byBEZXBlbmRhYm90LiAKbyBCdW1wIG1hdmVuLXBtZC1wbHVnaW4gZnJvbSAzLjE0LjAgdG8gMy4xOS4wICMyOTYsICMzMDksICMzMTEuIFRoYW5rcyB0byBHYXJ5IEdyZWdvcnksIERlcGVuZGFib3QuIApvIEJ1bXAgcG1kIGZyb20gNi40NC4wIHRvIDYuNTAuMC4gVGhhbmtzIHRvIEdhcnkgR3JlZ29yeS4gCm8gQnVtcCBjb21tb25zLmphcGljbXAudmVyc2lvbiBmcm9tIDAuMTUuMyB0byAwLjE2LjAuIFRoYW5rcyB0byBHYXJ5IEdyZWdvcnkuIApvIEJ1bXAgbWF2ZW4tYnVuZGxlLXBsdWdpbiBmcm9tIDUuMS4yIHRvIDUuMS44ICMyMzQsICMyMzksICMyOTAsICMyOTIsICMzMDEsICMzMDQuIFRoYW5rcyB0byBEZXBlbmRhYm90LiAKbyBCdW1wIG9yZy5hcGFjaGUuZmVsaXguZnJhbWV3b3JrIGZyb20gNy4wLjEgdG8gNy4wLjUgIzIzMiwgIzI5NS4gVGhhbmtzIHRvIERlcGVuZGFib3QuIApvIEJ1bXAgc2xmNGotYXBpIGZyb20gMS43LjMwIHRvIDIuMC4zICMyMTMsICMyNDEsICMyNTgsICMzMTAsICMzMTQsICMzMTUsICMzMTguIFRoYW5rcyB0byBEZXBlbmRhYm90LiAKbyBCdW1wIGNvbW1vbnMtcGFyZW50IGZyb20gNTIgdG8gNTQgIzI4MC4gVGhhbmtzIHRvIERlcGVuZGFib3QsIEdhcnkgR3JlZ29yeS4gCm8gQnVtcCBjb21tb25zLmphY29jby52ZXJzaW9uIGZyb20gMC44LjcgdG8gMC44LjguIFRoYW5rcyB0byBHYXJ5IEdyZWdvcnkuIApvIEJ1bXAganVuaXQudmVyc2lvbiBmcm9tIDUuOC4yIHRvIDUuOS4xICMzMDIsICMzMTcuIFRoYW5rcyB0byBEZXBlbmRhYm90LiAKbyBCdW1wIG1vY2tpdG8udmVyc2lvbiBmcm9tIDQuNi4xIHRvIDQuOC4wICMzMDcsICMzMTIuIFRoYW5rcyB0byBEZXBlbmRhYm90LiAKbyBCdW1wIG1hdmVuLXN1cmVmaXJlLXBsdWdpbiBmcm9tIDMuMC4wLU02IHRvIDMuMC4wLU03LiBUaGFua3MgdG8gR2FyeSBHcmVnb3J5LiAKCkZvciBjb21wbGV0ZSBpbmZvcm1hdGlvbiBvbiBBcGFjaGUgQ29tbW9ucyBDb21wcmVzcywgaW5jbHVkaW5nIGluc3RydWN0aW9ucwpvbiBob3cgdG8gc3VibWl0IGJ1ZyByZXBvcnRzLCBwYXRjaGVzLCBvciBzdWdnZXN0aW9ucyBmb3IgaW1wcm92ZW1lbnQsCnNlZSB0aGUgQXBhY2hlIENvbW1vbnMgQ29tcHJlc3Mgd2Vic2l0ZToKCmh0dHBzOi8vY29tbW9ucy5hcGFjaGUub3JnL2NvbXByZXNzLwoKUmVsZWFzZSAxLjIxCi0tLS0tLS0tLS0tLQoKQ29tcHJlc3MgMS4yMSBpcyB0aGUgZmlyc3QgcmVsZWFzZSB0byByZXF1aXJlIEphdmEgOCB0byBidWlsZCBhbmQgcnVuLgoKU2V2ZW5aRmlsZU9wdGlvbnMgaGFzIGEgbmV3IHNldHRpbmcgdGhhdCBuZWVkcyB0byBiZSBlbmFibGVkCmV4cGxpY2l0bHkgaWYgU2V2ZW5aRmlsZSBzaG91bGQgdHJ5IHRvIHJlY292ZXIgYnJva2VuIGFyY2hpdmVzIC0gYQpmZWF0dXJlIGludHJvZHVjZWQgd2l0aCBDb21tb25zIENvbXByZXNzIDEuMTkuIFRoaXMgaXMgYSBicmVha2luZwpjaGFuZ2UgaWYgeW91IHJlbGllZCBvbiB0aGUgcmVjb3ZlcnkgYXR0ZW1wdC4gVGhlIGNoYW5nZSB3YXMgbWFkZSB0bwpkZXRlY3QgYnJva2VuIGFyY2hpdmVzIHNvb25lciwgYW5kIHRvIG1pdGlnYXRlIHRoZSBPT00gZXhwbG9pdC4KClNldmVyYWwgZm9ybWF0cyBub3cgdGhyb3cgSU9FeGNlcHRpb25zIHdoZW4gcmVhZGluZyBicm9rZW4gYXJjaGl2ZXMgb3IKc3RyZWFtcyB0aGF0IHdvdWxkIGhhdmUgY2F1c2VkIGFyYml0cmFyeSBSdW50aW1lRXhjZXB0aW9ucyBpbiBlYXJsaWVyCnZlcnNpb25zIG9mIENvbXByZXNzLgoKTmV3IGZlYXR1cmVzOgpvIEFkZCB3cml0ZVByZWFtYmxlIHRvIFppcEFyY2hpdmVJbnB1dFN0cmVhbS4gVGhpcyBtZXRob2QgY291bGQKICB3cml0ZSByYXcgZGF0YSB0byB6aXAgYXJjaGl2ZSBiZWZvcmUgYW55IGVudHJ5IHdhcyB3cml0dGVuIHRvCiAgdGhlIHppcCBhcmNoaXZlLgogIEZvciBtb3N0IG9mIHRoZSB0aW1lLCB0aGlzIGlzIHVzZWQgdG8gY3JlYXRlIHNlbGYtZXh0cmFjdGluZwogIHppcC4KICBHaXRodWIgUHVsbCBSZXF1ZXN0ICMxMjcuCiAgSXNzdWU6IENPTVBSRVNTLTU1MC4KICBUaGFua3MgdG8gU2NvdHQgRnJlZGVyaWNrLgpvIEFkZGVkIHN1cHBvcnQgZm9yIHJhbmRvbSBhY2Nlc3MgdG8gdGhlIFRBUiBwYWNrYWdlcy4KICBHaXRodWIgUHVsbCBSZXF1ZXN0ICMxMTMuCiAgSXNzdWU6IENPTVBSRVNTLTU0MC4KICBUaGFua3MgdG8gUm9iaW4gU2NoaW1wZi4KbyBBZGRlZCBzdXBwb3J0IGZvciBCdWZmZXJQb29sIGluIFpzdGRDb21wcmVzc29ySW5wdXRTdHJlYW0uCiAgR2l0aHViIFB1bGwgUmVxdWVzdCAjMTY1LgogIElzc3VlOiBDT01QUkVTUy01NjUuCiAgVGhhbmtzIHRvIE1pY2hhZWwgTCBIZXVlci4KbyBDb21tb25zIENvbXByZXNzIGNhbm5vdCBiZSBidWlsdCB3aXRoIEpESzE0IGR1ZSB0byBQYWNrMjAwIHJlbW92YWwuCiAgQWRkIFBhY2syMDAgaW1wbGVtZW50YXRpb24gZnJvbSBBcGFjaGUgSGFybW9ueS4KICBJc3N1ZTogQ09NUFJFU1MtNTA3LgogIFRoYW5rcyB0byBHYXJ5IEdyZWdvcnksIEFwYWNoZSBIYXJtb255LgpvIEFkZCBhIG5ldyBBbHdheXNXaXRoQ29tcGF0aWJpbGl0eSBpbiBaaXA2NE1vZGUsIHRoaXMgaXMgYQogIGNvbXByb21pc2UgZm9yIHNvbWUgbGlicmFyaWVzIGluY2x1ZGluZyA3eiBhbmQgRXhwYW5kLUFyY2hpdmUKICBQb3dlcnNoZWxsIHV0aWxpdHkoYW5kIGxpa2VseSBFeGNlbCkuCgogIEFuZCB3ZSB3aWxsIGVuY29kZSBib3RoIHRoZSBMRkggb2Zmc2V0IGFuZCBEaXNrIE51bWJlciBTdGFydAogIGluIHRoZSBaSVA2NCBFeHRlbmRlZCBJbmZvcm1hdGlvbiBFeHRyYSBGaWVsZCAtIGV2ZW4gaWYgb25seQogIHRoZSBkaXNrIG51bWJlciBuZWVkcyB0byBiZSBlbmNvZGVkLgoKICBHaXRodWIgUHVsbCBSZXF1ZXN0ICMxNjkuCiAgSXNzdWU6IENPTVBSRVNTLTU2NS4KICBUaGFua3MgdG8gRXZnZW5paSBCb3Z5a2luLgpvIGd6aXAgZGVmbGF0ZSBidWZmZXIgc2l6ZSBpcyBub3cgY29uZmlndXJhYmxlLgogIElzc3VlOiBDT01QUkVTUy01NjYuCiAgVGhhbmtzIHRvIEJyZXR0IE9ra2VuLgoKRml4ZWQgQnVnczoKbyBGaXggYnVncyBpbiByYW5kb20gYWNjZXNzIG9mIDd6LiBQcm9ibGVtcyBtYXkgaGFwcGVuCiAgaW4gYSBtaXh0dXJlIHVzZSBvZiByYW5kb20gYWNjZXNzIGFuZCBzZXF1ZW50aWFsIGFjY2VzcwogIG9mIDd6LgogIEdpdGh1YiBQdWxsIFJlcXVlc3QgIzk1LgogIElzc3VlOiBDT01QUkVTUy01MDUuCm8gRml4IGJ1Z3MgaW4gcmFuZG9tIGFjY2VzcyBvZiA3ei4gRXhjZXB0aW9ucyBhcmUgdGhyb3duCiAgd2hlbiByZWFkaW5nIHRoZSBmaXJzdCBlbnRyeSBtdWx0aXBsZSB0aW1lcyBieSByYW5kb20KICBhY2Nlc3MuCiAgSXNzdWU6IENPTVBSRVNTLTUxMC4KbyBBZGQgJy8nIHRvIGRpcmVjdG9yaWVzIHdpdGggbG9uZyBuYW1lIGluIHRhci4gVGhpcyBpcyB0bwogIHJlc29sdmUgdGhlIGFtYmlndW91cyBiZWhhdmlvciBvZiB0aGUgVGFyQXJjaGl2ZUVudHJ5LmdldE5hbWUoKQogIG1ldGhvZCBiZXR3ZWVuIGRpcmVjdG9yeSB3aXRoIHNob3J0IG5hbWUgYW5kIGxvbmcgbmFtZS4KICBJc3N1ZTogQ09NUFJFU1MtNTA5LgogIFRoYW5rcyB0byBQZXRyIFZhc2FrLgpvIFJlbW92ZWQgdGhlIFBvd2VyTW9jayBkZXBlbmRlbmN5LgogIElzc3VlOiBDT01QUkVTUy01MjAuCiAgVGhhbmtzIHRvIFJvYmluIFNjaGltcGYuCm8gQWRkZWQgaW1wcm92ZWQgY2hlY2tzIHRvIGRldGVjdCBjb3JydXB0ZWQgYnppcDIgc3RyZWFtcyBhbmQKICB0aHJvdyB0aGUgZXhwZWN0ZWQgSU9FeGNlcHRpb24gcmF0aGVyIHRoYW4gb2JzY3VyZQogIFJ1bnRpbWVFeGNlcHRpb25zLgogIFNlZSBhbHNvIENPTVBSRVNTLTUxOS4KICBJc3N1ZTogQ09NUFJFU1MtNTE2LgpvIEltcHJvdmVkIHBhcnNpbmcgb2YgWDU0NTVfRXh0ZW5kZWRUaW1lc3RhbXAgWklQIGV4dHJhIGZpZWxkLgogIElzc3VlOiBDT01QUkVTUy01MTcuCm8gWmlwQXJjaGl2ZUlucHV0U3RyZWFtIGFuZCBaaXBGaWxlIHdpbGwgbm93IHRocm93IGFuCiAgSU9FeGNlcHRpb24gcmF0aGVyIHRoYW4gYSBSdW50aW1lRXhjZXB0aW9uIGlmIHRoZSB6aXA2NCBleHRyYQogIGZpZWxkIG9mIGFuIGVudHJ5IGNvdWxkIG5vdCBiZSBwYXJzZWQuCiAgSXNzdWU6IENPTVBSRVNTLTUxOC4KbyBJbXByb3ZlZCBkZXRlY3Rpb24gb2YgY29ycnVwdCBaSVAgYXJjaGl2ZXMgaW4gWmlwQXJjaGl2ZUlucHV0U3RyZWFtLgogIElzc3VlOiBDT01QUkVTUy01MjMuCm8gQWRkZWQgaW1wcm92ZWQgY2hlY2tzIHRvIGRldGVjdCBjb3JydXB0ZWQgZGVmbGF0ZTY0IHN0cmVhbXMgYW5kCiAgdGhyb3cgdGhlIGV4cGVjdGVkIElPRXhjZXB0aW9uIHJhdGhlciB0aGFuIG9ic2N1cmUKICBSdW50aW1lRXhjZXB0aW9ucy4KICBJc3N1ZXM6IENPTVBSRVNTLTUyMSwgQ09NUFJFU1MtNTIyLCBDT01QUkVTUy01MjUsIENPTVBSRVNTLTUyNiwgYW5kIENPTVBSRVNTLTUyNy4KbyBBZGQgdGhlIGFyY2hpdmUgbmFtZSBpbiB0aGUgZXhjZXB0aW9uIGluIHRoZSBjb25zdHJ1Y3RvciBvZgogIFppcEZpbGUgdG8gbWFrZSBpdCBhIG1vcmUgc3BlY2lmaWMgZXhjZXB0aW9uLgogIEdpdGh1YiBQdWxsIFJlcXVlc3QgIzEwMi4KICBJc3N1ZTogQ09NUFJFU1MtNTE1LgogIFRoYW5rcyB0byBpYW4tbGF2YWxsZWUuCm8gVGhyb3cgSU9FeGNlcHRpb24gd2hlbiBpdCBlbmNvdW50ZXJzIGEgbm9uLW51bWJlciB3aGlsZSBwYXJzaW5nIHBheAogIGhlYWRlci4KICBJc3N1ZTogQ09NUFJFU1MtNTMwLgpvIFRocm93IElPRXhjZXB0aW9uIHdoZW4gYSB0YXIgYXJjaGl2ZSBjb250YWlucyBhIFBBWCBoZWFkZXIKICB3aXRob3V0IGFueSBub3JtYWwgZW50cnkgZm9sbG93aW5nIGl0LgogIElzc3VlOiBDT01QUkVTUy01MzEuCm8gQWRkZWQgaW1wcm92ZWQgY2hlY2tzIHRvIGRldGVjdCBjb3JydXB0ZWQgSU1QTE9ERUQgc3RyZWFtcyBhbmQKICB0aHJvdyB0aGUgZXhwZWN0ZWQgSU9FeGNlcHRpb24gcmF0aGVyIHRoYW4gb2JzY3VyZQogIFJ1bnRpbWVFeGNlcHRpb25zLgogIElzc3VlOiBDT01QUkVTUy01MzIuCm8gVGhyb3cgZXhwZWN0ZWQgSU9FeGNlcHRpb24gaW5zdGVhZCBvZiBOdW1iZXJGb3JtYXRFeGNlcHRpb24gaWYKICBpdCBlbmNvdW50ZXJzIG5vbi1udW1iZXJzIHdoZW4gcGFyc2luZyBwYXggaGVhZGVycyBmb3IgdGFyYmFsbC4KCiAgVGhyb3cgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGluc3RlYWQgb2YgUnVudGltZUV4Y2VwdGlvbnMgaWYKICB0aGUgZmlsZSBuYW1lIGlzIGxvbmdlciB0aGFuIDEwMCBieXRlcyB3aXRoIHRoZSBsb25nRmlsZU1vZGUKICBvZiBMT05HRklMRV9FUlJPUiwgYW5kIGFkZHJlc3MgdGhpcyBpbiBqYXZhIGRvY3MuCgogIFRocm93IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpbnN0ZWFkIG9mIFJ1bnRpbWVFeGNlcHRpb25zIGlmCiAgdGhlIGFueSBvZiB0aGUgbnVtZXJpYyB2YWx1ZXMgb2YgYW4gZW50cnkgZXhjZWVkcyB0aGUgbGltaXRzCiAgb2YgYSB0cmFkaXRpb25hbCB0YXIgaGVhZGVyIHdoaWxlIGJpZ051bWJlck1vZGUgaXMKICBCSUdOVU1CRVJfRVJST1IsIGFuZCBhZGRyZXNzIHRoaXMgaW4gamF2YSBkb2NzLgogIElzc3VlOiBDT01QUkVTUy01MjkuCm8gRml4IGZvciB0ZXN0IGZhaWxzIG9uIFdpbmRvd3MuIFRoZSB0ZXN0cyBhcmUgZmFpbGluZyBiZWNhdXNlIHRoZQogIGRlZmF1bHQgY2hhcnNldCBpcyBub3QgVVRGLTguCiAgSXNzdWU6IENPTVBSRVNTLTU0My4KICBUaGFua3MgdG8gd3VsZjIzMzMuCm8gVGFyQXJjaGl2ZUlucHV0U3RyZWFtIGNhbiBub3QgZGV0ZWN0IGEgdHJ1bmNhdGVkIHRhciBpbiBza2lwKCkKICBhbmQgc2tpcFJlY29yZFBhZGRpbmcoKS4KICBJc3N1ZTogQ09NUFJFU1MtNTQ0LgogIFRoYW5rcyB0byBBZGl0eWEgUHJhc2FkLgpvIE1ha2UgdGhlIG1lbW9yeSBhbGxvY2F0aW9uIGluIFNldmVuWkZpbGUucmVhZEZpbGVzSW5mbyBhIGxhenkKICBhbGxvY2F0aW9uIHRvIGF2b2lkIE9PTSB3aGVuIGRlYWxpbmcgc29tZSBnaWFudCA3eiBhcmNoaXZlcy4KICBHaXRodWIgUHVsbCBSZXF1ZXN0ICMxMjAuCgogIEFsc28gYWRkZWQgc2FuaXR5IGNoZWNrcyBiZWZvcmUgZXZlbiB0cnlpbmcgdG8gcGFyc2UgYW4KICBhcmNoaXZlIGFuZCBtYWRlIFNldmVuWkZpbGVPcHRpb25zJyBtYXhNZW1vcnlTaXplSW5LYiBhcHBseSB0bwogIHRoZSBzdG9yZWQgbWV0YWRhdGEgZm9yIGFuIGFyY2hpdmUuCgogIEFuZCBmdXJ0aGVyIGFkZGVkIGFuIG9wdGlvbiB0aGF0IG5lZWRzIHRvIGJlIGVuYWJsZWQgaW4gb3JkZXIKICB0byBtYWtlIFNldmVuWkZpbGUgdHJ5IHRvIHJlY292ZXIgYSBicm9rZW4gYXJjaGl2ZS4gVGhpcyBpcyBhCiAgYmFja3dhcmRzIGluY29tcGF0aWJsZSBjaGFuZ2UuCiAgSXNzdWU6IENPTVBSRVNTLTU0Mi4KICBUaGFua3MgdG8gdGhlb2Jpc3Byb2plY3QuCm8gWmlwQXJjaGl2ZUlucHV0U3RyZWFtIHNob3VsZCB0aHJvdyBhbiBleGNlcHRpb24gaWYgYSBjb3JycHV0ZWQKICB6aXA2NCBleHRyYSBmaWVsZCBpcyBtZXQuCiAgSXNzdWU6IENPTVBSRVNTLTU0Ni4KICBUaGFua3MgdG8gTWFrc2ltIFp1ZXYuCm8gQWRkIGEgbmV3IG1hdmVuIHByb2ZpbGUgaW4gcG9tLnhtbCBmb3IgSkRLMTQrIHRvIGlnbm9yZSB0aGUKICBmYWlsaW5nIHRlc3RzIGFib3V0IFBhY2syMDAuCgogIFRoaXMgaGFzIGxhdGVyIGJlZW4gc3VwZXJzZWVkZWQgYnkgYWRkaW5nIHRoZSBBcGFjaGUgSGFybW9ueQogIGNsYXNzZXMgZm9yIFBhY2syMDAgc3VwcG9ydC4KbyBUaHJvdyBhbiBJT0V4Y2VwdGlvbiB3aGVuIHJlYWRpbmcgdGhlIHppcCBleHRyYSBmaWVsZCBpZiB0aGUKICBsZW5ndGggaXMgdG9vIHNob3J0LgogIElzc3VlOiBDT01QUkVTUy01NDguCiAgVGhhbmtzIHRvIE1ha3NpbSBadWV2LgpvIFRocm93IGFuIGRlY2xhcmVkIElPRXhjZXB0aW9uIGlmIGEgbnVsbCBlbnRyeSBpcyBtZXQgd2hlbgogIHJlYWRpbmcgYSBnbG9iYWwgcGF4IGhlYWRlciBpbnN0ZWFkIG9mIGEgcnVudGltZSBOUEUuCiAgSXNzdWU6IENPTVBSRVNTLTU1NC4KICBUaGFua3MgdG8gTWFrc2ltIFp1ZXYuCm8gWklQIGV4dHJhY3Rpb24gY291bGQgbGVhZCB0byBBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb25zCiAgcmF0aGVyIHRoYW4gdGhlIGV4cGVjdGVkIElPRXhjZXB0aW9uLgogIElzc3VlOiBDT01QUkVTUy01NDUuCiAgVGhhbmtzIHRvIE1ha3NpbSBadWV2LgpvIEFkZCBhc3NlcnRzIGZvciBBcnJheXMuY29weU9mIGluIFgwMDE3X1N0cm9uZ0VuY3J5cHRpb25IZWFkZXIuCiAgSXNzdWU6IENPTVBSRVNTLTU0Ny4KICBUaGFua3MgdG8gTWFrc2ltIFp1ZXYuCm8gRml4IGZvciB0aGUgQ0ZIIHNpZ25hdHVyZSBkZXRlY3QgaW4gWmlwQXJjaGl2ZUlucHV0U3RyZWFtLgogIFRoZSBwcm9ibGVtIGNvdWxkIGJlIHJlcHJvZHVjZWQgYnkgYSB6aXAgYXJjaGl2ZSB3aXRoIERhdGEKICBEZXNjcmlwdG9yIGFuZCBTVE9SRUQsIGFuZCB3aXRob3V0IHRoZSBEYXRhIERlc2NyaXB0b3IKICBzaWduYXR1cmUuCm8gVGhlIGxlbmd0aCB2YWxpZGF0aW9uIGluIFRhckFyY2hpdmVJbnB1dFN0cmVhbS5wYXJzZVBheEhlYWRlcnMKICBzaG91bGQgYWxzbyBjb25zaWRlciB0aGUgaGVhZGVycyB3aXRoIGxlbmd0aCBzbWFsbGVyIHRoYW4gMQogIGFuZCBpZ25vcmUgdGhlc2UgaGVhZGVycy4KICBJc3N1ZTogQ09NUFJFU1MtNTUzLgogIFRoYW5rcyB0byBNYWtzaW0gWnVldi4KbyBGaXggYWNjaWRlbnRhbGx5IGFkZGVkICcvJyB0byBmaWxlIG5hbWVzLgogIFRoaXMgcHJvYmxlbSBpcyBjYXVzZWQgYnkgdGhlIGluY29tcGxldGUgZml4IG9mIENPTVBSRVNTLTUwOS4KICBHaXRodWIgUHVsbCBSZXF1ZXN0ICMxNTEuCiAgSXNzdWU6IENPTVBSRVNTLTU1OC4KICBUaGFua3MgdG8gUm9iaW4gU2NoaW1wZi4KbyBBcyBzcGFyc2UgZW50cmllcyBjYW4gYmUgc3VjY2Vzc2Z1bGx5IHBhcnNlZCBub3csCiAgVGFyQXJjaGl2ZUlucHV0U3RyZWFtLmNhblJlYWRFbnRyeURhdGEgc2hvdWxkIHJldHVybgogIHRydWUgaWYgdGhlIGVudHJ5IGlzIGEgc3BhcnNlIGVudHJ5LgogIEdpdGh1YiBQdWxsIFJlcXVlc3QgIzE1My4KICBJc3N1ZTogQ09NUFJFU1MtNTYwLgogIFRoYW5rcyB0byBSb2JpbiBTY2hpbXBmLgpvIFNwYXJzZUZpbGVzVGVzdCN0ZXN0RXh0cmFjdFBheEdOVSBzaG91bGQgYmUgc2tpcHBlZAogIGlmIHRoZSB2ZXJzaW9uIG9mIEdOVSB0YXIgYmluYXJ5IGlzIDEuMjguCiAgR2l0aHViIFB1bGwgUmVxdWVzdCAjMTUyLgogIElzc3VlOiBDT01QUkVTUy01NTkuCiAgVGhhbmtzIHRvIFJvYmluIFNjaGltcGYuCm8gUmVtb3ZlZCBhbiBlbXB0eSBsb29wIHRoYXQgd2FzIGp1c3Qgd2FybWluZyB0aGUgcGxhbmV0IGZvcgogIGNlcnRhaW4gWklQIGFyY2hpdmVzLgogIEdpdGh1YiBQdWxsIFJlcXVlc3QgIzE3Mi4KICBUaGFua3MgdG8gRmFiaWFuIE1ldW1lcnR6aGVpbS4KbyBNYWRlIHNvbWUgb2YgdGhlIHN0cmVhbSBjbGFzc2VzIHVzZWQgaW50ZXJuYWxseSB0aHJvdwogIElPRXhjZXB0aW9ucyBvbiBpbGxlZ2FsIGFyZ3VtZW50cyByYXRoZXIgdGhhbgogIFJ1bnRpbWVFeGNlcHRpb25zIHRvIG1ha2UgaXQgbW9yZSBsaWtlbHkgdGhhdCBjb3JydXB0IGFyY2hpdmVzCiAgY2F1c2UgZXhwZWN0ZWQgY2hlY2tlZCBleGNlcHRpb25zIHJhdGhlciB0aGFuIFJ1bnRpbUV4Y2VwdGlvbgogIGZvciB2YXJpb3VzIGZvcm1hdHMuCgogIEZpeGVzIGEgc3BlY2lmaWMgY2FzZSBmb3IgWklQIGJ1dCBhZmZlY3RzIG90aGVyIGZvcm1hdHMgYXMKICB3ZWxsLgogIElzc3VlOiBDT01QUkVTUy01NjcuCm8gU2ltcGxpZnkgQXNzZXJ0aW9ucyAjMjA1LgogIFRoYW5rcyB0byBBcnR1cm8gQmVybmFsLgpvIENoZWNrZWQgdGhlIHNpemVzIHJlYWQgZm9yIGFyY2hpdmUgZW50cmllcyBhbmQgcmVqZWN0IGFyY2hpdmVzCiAgYXMgYnJva2VuIHdpdGggbmVnYXRpdmUgZW50cnkgc2l6ZXMuCgogIEZpeGVzIGFuIGluZmluaXRlIGxvb3AgaW4gdGhlIG5ldyBUYXJGaWxlIGNsYXNzIGJ1dCBhZmZlY3RzCiAgc2V2ZXJhbCBmb3JtYXRzLgogIElzc3VlOiBDT01QUkVTUy01NjkuCm8gT1NHaSBkZXRlY3Rpb24gd2FzIGJyb2tlbiBhbmQgc28gd2UgYWx3YXlzIGNhY2hlZCB3aGV0aGVyCiAgeHovYnJvdGxpL3pzdGQvbHptYSBoYXZlIGJlZW4gYXZhaWxhYmxlIGV2ZW4gaW4gT1NHaQogIGVudmlyb25tZW50cy4KICBJc3N1ZTogQ09NUFJFU1MtNTUyLgpvIFNldmVuWkZpbGUuZ2V0RW50cmllcyBub3cgcmV0dXJuIGEgY29weSBvZiBlbnRyaWVzLgogIElzc3VlOiBDT01QUkVTUy01NzEuCm8gSGFuZGxpbmcgb2Ygc3BhcnNlIHRhciBlbnRyaWVzIGhhcyBiZWVuIGhhcmRlbmVkIHRvIGVuc3VyZSBiYWQKICBpbnB1dHMgY2F1c2UgZXhwZWN0ZWQgSU9FeGNlcHRpb25zIHJhdGhlciB0aGFuIFJ1bnRpbWVFeGNlcHRpb25zLgogIElzc3VlOiBDT01QUkVTUy01NzUuCm8gVGhlIHBhcnNlciBmb3IgR05VIHNwYXJzZSB0YXIgaGVhZGVycyBjb3VsZCB0aHJvdyBhCiAgTnVsbFBvaW50ZXJFeGNwZXRpb24gcmF0aGVyIHRoYW4gYW4gSU9FeGNlcHRpb24gaWYgdGhlIGFyY2hpdmUKICBlbmRlZCB3aGlsZSBtb3JlIHNwYXJzZSBoZWFkZXJzIHdlcmUgZXhwZWN0ZWQuCgpDaGFuZ2VzOgpvIE1hZGUgc3VyZSBac3RkQ29tcHJlc3Nvck91dHB1dFN0cmVhbSBubyBsb25nZXIgdXNlZAogIGRlcHJlY2F0ZWQgWnN0T3V0cHV0U3RyZWFtIGNvbnN0cnVjdG9ycy4KICBHaXRodWIgUHVsbCBSZXF1ZXN0ICM5NC4KICBUaGFua3MgdG8gUGV0ZXIgQWxmcmVkIExlZS4KbyBNYWtlIGNvbXByZXNzaW9uIGxldmVsIG9mIFBhcmFsbGVsU2NhdHRlclppcENyZWF0b3IKICBjb25maWd1cmFibGUgdmlhIGEgbmV3IGNvbnN0cnVjdG9yLgogIElzc3VlOiBDT01QUkVTUy01MDQuCm8gTWFkZSBhbiBpbm5lciBjbGFzcyBzdGF0aWMKICBHaXRodWIgUHVsbCBSZXF1ZXN0ICMxMDcuCiAgSXNzdWU6IENPTVBSRVNTLTUzNi4KICBUaGFua3MgdG8gSmluIFh1LgpvIGFkZGVkIGFuIGVhcmx5IGV4aXQgdG8gYSBsb29wIGluIEJaaXAyQ29tcHJlc3Nvck91dHB1dFN0cmVhbQogIEdpdGh1YiBQdWxsIFJlcXVlc3QgIzEwNi4KICBJc3N1ZTogQ09NUFJFU1MtNTM1LgogIFRoYW5rcyB0byBKaW4gWHUuCm8gVXBkYXRlIHRoZSBjbGFzcyBvZiB2YXJpYWJsZSBmaWxlIGluIFRhckFyY2hpdmVFbnRyeSBmcm9tCiAgamF2YS5pby5GaWxlIHRvIGphdmEubmlvLmZpbGUuUGF0aC4gQ29ycmVzcG9uZGluZyBjb25zdHJ1Y3RvcnMKICBhbmQgbWV0aG9kcyBhcmUgYWxzbyBtb2RpZmllZC9hZGRlZC4KCiAgTk9URTogVGhlIHVzZXJOYW1lLCBncm91cE5hbWUsIHVzZXJJRCBhbmQgZ3JvdXBJRCB3aWxsIGFsc28gYmUKICBzZXQgaWYgdGhleSBhcmUgYXZhaWxhYmxlLiBUaGUgdXNlck5hbWUgYW5kIGdyb3VwTmFtZSB3YXMgbm90CiAgc2V0IHByZXZpb3VzbHksIGFuZCB0aGUgcHJldmlvdXMgdmFsdWUgb2YgVXNlcklEOkdyb3VwSUQgd2FzCiAgMDowIGJ5IGRlZmF1bHQuCiAgUGxlYXNlIG5vdGUgdGhpcyBtYXkgY2F1c2UgYSByZXByb2R1Y2liaWxpdHkgcHJvYmxlbS4KCiAgR2l0aHViIFB1bGwgUmVxdWVzdCAjOTcuCiAgSXNzdWU6IENPTVBSRVNTLTQwNC4KICBUaGFua3MgdG8gdGhlb2Jpc3Byb2plY3QuCm8gUmV1c2UgdGhlIHJlY29yZCBidWZmZXIgaW4gVGFyQXJjaGl2ZUlucHV0U3RyZWFtLgogIElzc3VlOiBDT01QUkVTUy01MzkuCiAgVGhhbmtzIHRvIFJvYmluIFNjaGltcGYuCm8gQWRkIFNldmVuWk91dHB1dEZpbGUud3JpdGUoSW5wdXRTdHJlYW0pLgogIFRoYW5rcyB0byBHYXJ5IEdyZWdvcnkuCm8gQWRkIFNldmVuWk91dHB1dEZpbGUud3JpdGUoUGF0aCwgT3Blbk9wdGlvbi4uLikuCiAgVGhhbmtzIHRvIEdhcnkgR3JlZ29yeS4KbyBBZGQgU2V2ZW5aT3V0cHV0RmlsZS5jcmVhdGVBcmNoaXZlRW50cnkoUGF0aCwgU3RyaW5nLCBMaW5rT3B0aW9uLi4uKS4KICBUaGFua3MgdG8gR2FyeSBHcmVnb3J5LgpvIEFkZCBBckFyY2hpdmVPdXRwdXRTdHJlYW0uY3JlYXRlQXJjaGl2ZUVudHJ5KFBhdGgsIFN0cmluZywgTGlua09wdGlvbi4uLikuCiAgVGhhbmtzIHRvIEdhcnkgR3JlZ29yeS4KbyBBZGQgQXJBcmNoaXZlRW50cnkoUGF0aCwgU3RyaW5nLCBMaW5rT3B0aW9uLi4uKS4KICBUaGFua3MgdG8gR2FyeSBHcmVnb3J5LgpvIEFkZCBjdG9yIENwaW9BcmNoaXZlRW50cnkoUGF0aCwgU3RyaW5nLCBMaW5rT3B0aW9uLi4uKS4KICBUaGFua3MgdG8gR2FyeSBHcmVnb3J5LgpvIEFkZCBjdG9yIENwaW9BcmNoaXZlRW50cnkoc2hvcnQsIFBhdGgsIFN0cmluZywgTGlua09wdGlvbi4uLikuCiAgVGhhbmtzIHRvIEdhcnkgR3JlZ29yeS4KbyBBZGQgQ3Bpb0FyY2hpdmVFbnRyeS5zZXRUaW1lKEZpbGVUaW1lKS4KICBUaGFua3MgdG8gR2FyeSBHcmVnb3J5LgpvIEFkZCBUYXJBcmNoaXZlT3V0cHV0U3RyZWFtLmNyZWF0ZUFyY2hpdmVFbnRyeShQYXRoLCBTdHJpbmcsIExpbmtPcHRpb24uLi4pLgogIFRoYW5rcyB0byBHYXJ5IEdyZWdvcnkuCm8gQWRkIGN0b3IgVGFyQXJjaGl2ZUVudHJ5KFBhdGgsIFN0cmluZywgTGlua09wdGlvbi4uLikuCiAgVGhhbmtzIHRvIEdhcnkgR3JlZ29yeS4KbyBBZGQgSU9VdGlscy5FTVBUWV9MSU5LX09QVElPTlMuCiAgVGhhbmtzIHRvIEdhcnkgR3JlZ29yeS4KbyBBZGQgUGF0aCBzdXBwb3J0IHRvIFppcEFyY2hpdmVPdXRwdXRTdHJlYW0gIzEyMy4KICBUaGFua3MgdG8gR2FyeSBHcmVnb3J5LgpvIFNvbWUgbWlub3IgaW1wcm92ZW1lbnRzLgogIEdpdGh1YiBQdWxsIFJlcXVlc3QgIzE1Ny4KICBJc3N1ZTogQ09NUFJFU1MtNTYxLgogIFRoYW5rcyB0byBBcnR1cm8gQmVybmFsLgpvIFVwZGF0ZSBmcm9tIEphdmEgNyB0byA4LgpvIFVwZGF0ZSBHaXRIdWIgYWN0aW9ucy9jaGVja291dCBmcm9tIHYxIHRvIHYyLjMuNCwgIzExNCwgIzEyNCwgIzEzOSwgIzE1MC4KICBUaGFua3MgdG8gRGVwZW5kYWJvdC4KbyBVcGRhdGUgYWN0aW9ucy9zZXR1cC1qYXZhIGZyb20gdjEuNC4wIHRvIHYyLCAjMTI1LCAjMTMzLCAjMTQxLgogIFRoYW5rcyB0byBEZXBlbmRhYm90LCBHYXJ5IEdyZWdvcnkuCm8gVXBkYXRlIGNvbS5naXRodWIubHViZW46enN0ZC1qbmkgZnJvbSAxLjQuNC03IHRvIDEuNS4wLTIsICMxMTgsICMxNTksICMxNzMsICMxNzQsICMyMDMuCiAgVGhhbmtzIHRvIERlcGVuZGFib3QsIEdhcnkgR3JlZ29yeS4KbyBVcGRhdGUgdGVzdHMgc2xmNGotYXBpIGZyb20gMS43LjI2IHRvIDEuNy4zMCAjMTE3LgogIFRoYW5rcyB0byBEZXBlbmRhYm90LgpvIFVwZGF0ZSBtYXZlbi1wbWQtcGx1Z2luIGZyb20gMy4xMi4wIHRvIDMuMTQuMCwgIzExNSwgIzE1NC4KICBUaGFua3MgdG8gRGVwZW5kYWJvdC4KbyBVcGRhdGUgbWF2ZW4tYnVuZGxlLXBsdWdpbiBmcm9tIDMuNS4xIHRvIDUuMS4yICMxMTYsICMxODAuCiAgVGhhbmtzIHRvIERlcGVuZGFib3QuCm8gQnVtcCBtZW1vcnlmaWxlc3lzdGVtIGZyb20gMS4zLjAgdG8gMi4xLjAgIzEzMS4KICBUaGFua3MgdG8gRGVwZW5kYWJvdC4KbyBCdW1wIGFjdGlvbnMvY2FjaGUgZnJvbSB2MiB0byB2Mi4xLjYsICMxNjQsICMyMDAuCiAgVGhhbmtzIHRvIERlcGVuZGFib3QuCm8gQnVtcCBqdW5pdCBmcm9tIDQuMTMgdG8gNC4xMy4yLCAjMTQzLCAjMTY3LgogIFRoYW5rcyB0byBEZXBlbmRhYm90LgpvIEJ1bXAgbW9ja2l0by1jb3JlIGZyb20gMS4xMC4xOSB0byAzLjExLjEsICMxNjEsICMxNzAsICMyMDQuCiAgVGhhbmtzIHRvIERlcGVuZGFib3QuCm8gQnVtcCBjb21tb25zLmphY29jby52ZXJzaW9uIGZyb20gMC44LjUgdG8gMC44LjcgKEphdmEgMTYgYnVpbGRzKS4KICBUaGFua3MgdG8gR2FyeSBHcmVnb3J5LgpvIEJ1bXAgb3JnLmFwYWNoZS5mZWxpeDpvcmcuYXBhY2hlLmZlbGl4LmZyYW1ld29yayBmcm9tIDYuMC4zIHRvIDcuMC4wIChKYXZhIDE2IGJ1aWxkcykuCiAgVGhhbmtzIHRvIEdhcnkgR3JlZ29yeS4KbyBCdW1wIGNvbW1vbnMuamFwaWNtcC52ZXJzaW9uIGZyb20gMC4xNC4zIHRvIDAuMTUuMyAoSmF2YSAxNiBidWlsZHMpLgogIFRoYW5rcyB0byBHYXJ5IEdyZWdvcnkuCm8gQnVtcCBjb21tb25zLmphdmFkb2MudmVyc2lvbiBmcm9tIDMuMi4wIHRvIDMuMy4wLgogIFRoYW5rcyB0byBHYXJ5IEdyZWdvcnkuCm8gVXBkYXRlIGNvbS5naXRodWIubHViZW46enN0ZC1qbmkgZnJvbSAxLjQuOC03IHRvIDEuNC45LTEgIzE3Ni4KICBUaGFua3MgdG8gRGVwZW5kYWJvdC4KbyBVcGRhdGUgb3JnLnR1a2Fhbmk6eHogZnJvbSAxLjggdG8gMS45Cm8gU29tZSBtaW5vciBpbXByb3ZlbWVudHMuCiAgR2l0aHViIFB1bGwgUmVxdWVzdCAjMTkzLgogIElzc3VlOiBDT01QUkVTUy01NzcuCiAgVGhhbmtzIHRvIEFydHVybyBCZXJuYWwuCm8gSmF2YTggaW1wcm92ZW1lbnRzLgogIEdpdGh1YiBQdWxsIFJlcXVlc3QgIzE5NC4KICBJc3N1ZTogQ09NUFJFU1MtNTc4LgogIFRoYW5rcyB0byBBcnR1cm8gQmVybmFsLgpvIFJlbW92ZSByZWR1bmRhbnQgbG9jYWwgdmFyaWFibGUuCiAgR2l0aHViIFB1bGwgUmVxdWVzdCAjMTk1LgogIElzc3VlOiBDT01QUkVTUy01NzkuCiAgVGhhbmtzIHRvIEFydHVybyBCZXJuYWwuCm8gUmVtb3ZlIHJlZHVuZGFudCBvcGVyYXRpb24KICBHaXRodWIgUHVsbCBSZXF1ZXN0ICMxOTYuCiAgSXNzdWU6IENPTVBSRVNTLTU4MC4KICBUaGFua3MgdG8gQXJ0dXJvIEJlcm5hbC4KClJlbGVhc2UgMS4yMAotLS0tLS0tLS0tLS0KCkNvbW1vbnMgQ29tcHJlc3MgMS4yMCBsaWtlIGFueSB2ZXJzaW9uIG9mIENvbW1vbnMgQ29tcHJlc3Mgc2luY2UgMS4zCmNhbiBub3QgYmUgYnVpbHQgZnJvbSBzb3VyY2VzIHVzaW5nIEphdmEgMTQgYXMgSmF2YSAxNCByZW1vdmVzCnN1cHBvcnQgZm9yIHRoZSBQYWNrMjAwIGZvcm1hdC4gV2Ugd2lsbCBhZGRyZXNzIHRoaXMgaXNzdWUgd2l0aCB0aGUKbmV4dCByZWxlYXNlLgoKRml4ZWQgQnVnczoKbyBTZXZlblpGaWxlIGNvdWxkIHRocm93IE51bGxQb2ludGVyRXhjZXB0aW9uIHJhdGhlciB0aGFuCiAgSU9FeGNlcHRpb24gZm9yIGNlcnRhaW4gYXJjaGl2ZXMuIEluIGFkZGl0aW9uIGl0IG5vdyBoYW5kbGVzCiAgY2VydGFpbiBlbXB0eSBhcmNoaXZlcyBtb3JlIGdyYWNlZnVsbHkuCiAgSXNzdWU6IENPTVBSRVNTLTQ5Mi4KbyBEZWZsYXRlNjRDb21wcmVzc29ySW5wdXRTdHJlYW0ucmVhZCB3b3VsZCByZXR1cm4gMCBmb3Igc29tZQogIGlucHV0cyBpbiB2aW9sYXRpb24gb2YgdGhlIElucHV0U3RyZWFtLnJlYWQgY29udHJhY3QuCiAgSXNzdWU6IENPTVBSRVNTLTQ5MS4KbyBTZWVrYWJsZUluTWVtb3J5Qnl0ZUNoYW5uZWwncyB0cnVuY2F0ZSBkaWRuJ3Qgc2V0IHBvc2l0aW9uCiAgYWNjb3JkaW5nIHRvIHRoZSBzcGVjIGluIGFuIGVkZ2UgY2FzZS4KICBJc3N1ZTogQ09NUFJFU1MtNDk5LgpvIEJaaXAyQ29tcHJlc3NvcklucHV0U3RyZWFtIG5vdyBpbmNvcnBvcmF0ZXMgYSBzaW1pbGFyIHBhdGNoIGFzCiAgdGhlIG9uZSB0aGF0IGZpeGVkIENWRS0yMDE5LTEyOTAwIGluIGxpYmJ6aXAyLgoKICBDb21tb25zIENvbXByZXNzIGhhcyBub3QgYmVlbiB2dWxuZXJhYmxlIHRvIHRoaXMgQ1ZFIGFzIGl0CiAgd291bGQgaGF2ZSByZWplY3RlZCBhIGZpbGUgd2l0aCB0b28gbWFueSBzZWxlY3RvcnMuIFdpdGggdGhpcwogIHBhdGNoIENvbW1vbnMgQ29tcHJlc3Mgd2lsbCBiZSBhYmxlIHRvIHJlYWQgY2VydGFpbiBhcmNoaXZlcwogIHRoYXQgd291bGQgaGF2ZSBjYXVzZWQgZXJyb3JzIGluIENvbXByZXNzIDEuMTkuIFRoYW5rcyB0byBKb3NlcGggQWxsZW1hbmRvdS4KCkNoYW5nZXM6Cm8gVXBkYXRlIG9wdGlvbmFsIGxpYnJhcnkgY29tLmdpdGh1Yi5sdWJlbjp6c3RkLWpuaSBmcm9tCiAgMS40LjAtMSB0byAxLjQuNC03LgogIElzc3VlOiBDT01QUkVTUy00OTMuCm8gVXBkYXRlIHRlc3RzIGZyb20gb3JnLmFwYWNoZS5mZWxpeDpvcmcuYXBhY2hlLmZlbGl4LmZyYW1ld29yawogIDYuMC4yIHRvIDYuMC4zLgpvIFNldmVuWkZpbGUgY2FuIG5vdyByZWNvdmVyIGZyb20gYSBjZXJ0YWluIGNvcnJ1cHRpb24gdGhhdAogIHNlZW1zIHRvIGhhcHBlbiBvY2Nhc2lvbmFsbHkgd2hlbiBzcGxpdCBhcmNoaXZlcyBhcmUgY3JlYXRlZC4KICBJc3N1ZTogQ09NUFJFU1MtNDk3LgogIFRoYW5rcyB0byBTdGVmYW4gU2NobG90dC4KbyBBZGRlZCByYW5kb20gYWNjZXNzIHN1cHBvcnQgdG8gU2V2ZW5aRmlsZS4KICBJc3N1ZTogQ09NUFJFU1MtMzQyLgogIFRoYW5rcyB0byBQZXRlciBBbGZyZWQgTGVlLgpvIEFkZGVkIHN1cHBvcnQgZm9yIHNwbGl0IFpJUCBhcmNoaXZlcy4KICBJc3N1ZTogQ09NUFJFU1MtNDc3LgogIFRoYW5rcyB0byBQZXRlciBBbGZyZWQgTGVlLgpvIEFkZGVkIHN1cHBvcnQgZm9yIHJlYWRpbmcgc3BhcnNlIGVudHJpZXMgdG8gdGhlIFRBUiBwYWNrYWdlLgogIElzc3VlOiBDT01QUkVTUy0xMjQuCiAgVGhhbmtzIHRvIFBldGVyIEFsZnJlZCBMZWUuCm8gVXBkYXRlIEpVbml0IGZyb20gNC4xMiB0byA0LjEzLgoKUmVtb3ZlZDoKbyBSZW1vdmVkIHRoZSBleHRyYWN0aW9uIGNvZGUgZnJvbSB0aGUgZXhhbXBsZSBDTEkgY2xhc3MgaW5zaWRlCiAgb2YgdGhlIFNldmVuWiBwYWNrYWdlLiBOb3Qgb25seSBpcyBpdCBzdXBlcnNlZWRlZCBieSB0aGUKICBleGFtcGxlcyBwYWNrYWdlLCBpdHMgaW1wbGVtZW50YXRpb24gd2FzIHZ1bG5lcmFibGUgdG8gdGhlCiAgWmlwU2xpcCBhdHRhY2suCiAgSXNzdWU6IENPTVBSRVNTLTQ5NS4KClJlbGVhc2UgMS4xOQotLS0tLS0tLS0tLS0KClppcEFyY2hpdmVJbnB1dFN0cmVhbSBhbmQgWmlwRmlsZSB3aWxsIG5vIGxvbmdlciB0aHJvdyBhbiBleGNlcHRpb24gaWYKYW4gZXh0cmEgZmllbGQgZ2VuZXJhbGx5IHVuZGVyc3Rvb2QgYnkgQ29tbW9ucyBDb21wcmVzcyBpcyBtYWxmb3JtZWQKYnV0IHJhdGhlciB0dXJuIHRoZW0gaW50byBVbnJlY29nbml6ZWRFeHRyYUZpZWxkIGluc3RhbmNlcy4gIFlvdSBjYW4KaW5mbHVlbmNlIHRoZSB3YXkgZXh0cmEgZmllbGRzIGFyZSBwYXJzZWQgaW4gbW9yZSBkZXRhaWwgYnkgdXNpbmcgdGhlCm5ldyBnZXRFeHRyYUZpZWxkcyhFeHRyYUZpZWxkUGFyc2luZ0JlaGF2aW9yKSBtZXRob2Qgb2YKWmlwQXJjaGl2ZUVudHJ5IG5vdy4KClNvbWUgb2YgdGhlIFpJUCBleHRyYSBmaWVsZHMgcmVsYXRlZCB0byBzdHJvbmcgZW5jcnlwdGlvbiB3aWxsIG5vdwp0aHJvdyBaaXBFeGNlcHRpb25zIHJhdGhlciB0aGFuIEFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbnMgaW4KY2VydGFpbiBjYXNlcyB3aGVuIHVzZWQgZGlyZWN0bHkuIFRoZXJlIGlzIG5vIHByYWN0aWNhbCBkaWZmZXJlbmNlCndoZW4gdGhleSBhcmUgcmVhZCB2aWEgWmlwQXJjaGl2ZUlucHV0U3RyZWFtIG9yIFppcEZpbGUuCgpOZXcgZmVhdHVyZXM6Cm8gSXQgaXMgbm93IHBvc3NpYmxlIHRvIHNraXAgcGFyc2luZyBvZiBsb2NhbCBmaWxlIGhlYWRlcnMgd2hlbgogIHVzaW5nIFppcEZpbGUgd2hpY2ggbWF5IHNwZWVkIHVwIHJlYWRpbmcgdGhlIGFyY2hpdmUgYXQgdGhlCiAgY29zdCBvZiBwb3RlbnRpYWxseSBtaXNzaW5nIGltcG9ydGFudCBpbmZvcm1hdGlvbi4gU2VlIHRoZQogIGphdmFkb2NzIG9mIHRoZSBaaXBGaWxlIGNsYXNzIGZvciBkZXRhaWxzLgogIElzc3VlOiBDT01QUkVTUy00NjYuCm8gVGFyQXJjaGl2ZUlucHV0U3RyZWFtIGhhcyBhIG5ldyBjb25zdHJ1Y3Rvci1hcmcgbGVuaWVudCB0aGF0CiAgY2FuIGJlIHVzZWQgdG8gYWNjZXB0IGNlcnRhaW4gYnJva2VuIGFyY2hpdmVzLgogIElzc3VlOiBDT01QUkVTUy00NjkuCm8gQXJqQXJjaGl2ZUVudHJ5IGFuZCBTZXZlblpBcmNoaXZlRW50cnkgbm93IGltcGxlbWVudCBoYXNoQ29kZQogIGFuZCBlcXVhbHMuCiAgSXNzdWU6IENPTVBSRVNTLTQ3NS4KbyBBZGRlZCBhIE11bHRpUmVhZE9ubHlTZWVrYWJsZUJ5dGVDaGFubmVsIGNsYXNzCiAgdGhhdCBjYW4gYmUgdXNlZCB0byBjb25jYXRlbmF0ZSB0aGUgcGFydHMgb2YgYSBtdWx0aSB2b2x1bWUgN3oKICBhcmNoaXZlIHNvIHRoYXQgU2V2ZW5aRmlsZSBjYW4gcmVhZCB0aGVtLgogIElzc3VlOiBDT01QUkVTUy0yMzEuCiAgVGhhbmtzIHRvIFRpbSBVbmRlcndvb2QuCgpGaXhlZCBCdWdzOgpvIFppcEFyY2hpdmVJbnB1dFN0cmVhbSBjb3VsZCBmb3JnZXQgdGhlIGNvbXByZXNzaW9uIGxldmVsIGhhcwogIGNoYW5nZWQgdW5kZXIgY2VydGFpbiBjaXJjdW1zdGFuY2VzLgpvIEZpeGVkIGFub3RoZXIgcG90ZW50aWFsIHJlc291cmNlIGxlYWsgaW4KICBQYXJhbGxlbFNjYXR0ZXJaaXBDcmVhdG9yI3dyaXRlVG8uCiAgSXNzdWU6IENPTVBSRVNTLTQ3MC4KbyBBckFyY2hpdmVJbnB1dFN0cmVhbSBjb3VsZCB0aGluayBpdCBoYWQgaGl0IEVPRiBwcmVtYXR1cmVseS4KICBHaXRodWIgUHVsbCBSZXF1ZXN0ICM3NC4KICBUaGFua3MgdG8gQWxleCBCZXJ0cmFtLgpvIFRocm93IElPRXhjZXB0aW9uIHJhdGhlciB0aGFuIFJ1bnRpbWVFeGNlcHRpb25zIGZvciBjZXJ0YWluCiAgbWFsZm9ybWVkIExaNCBvciBTbmFwcHkgaW5wdXRzLgogIElzc3VlOiBDT01QUkVTUy00OTAuCm8gWmlwQXJjaGl2ZUlucHV0U3RyZWFtIGZhaWxlZCB0byByZWFkIHN0b3JlZCBlbnRyaWVzIHdpdGggYQogIGRhdGEgZGVzY3JpcHRvciBpZiB0aGUgZGF0YSBkZXNjcmlwdG9yIGRpZG4ndCB1c2UgdGhlCiAgc2lnbmF0dXJlIGludmVudGVkIGJ5IEluZm9aSVAuCiAgSXNzdWU6IENPTVBSRVNTLTQ4Mi4KCkNoYW5nZXM6Cm8gU2V2ZW5aRmlsZSBub3cgcHJvdmlkZXMgYSB3YXkgdG8gY2FwIG1lbW9yeSBjb25zdW1wdGlvbiBmb3IKICBMWk1BKDIpIGNvbXByZXNzZWQgY29udGVudC4KICBHaXRodWIgUHVsbCBSZXF1ZXN0ICM3Ni4KICBJc3N1ZTogQ09NUFJFU1MtNDgxLgogIFRoYW5rcyB0byBSb2JpbiBTY2hpbXBmLgpvIFRoZSBBUkogcGFja2FnZSBoYXMgYmVlbiB1cGRhdGVkIHRvIGNvbnRhaW4gY29uc3RhbnRzIGZvciBtb3JlCiAgcmVjZW50IHNwZWNpZmljYXRpb25zLgogIElzc3VlOiBDT01QUkVTUy00NjQuCiAgVGhhbmtzIHRvIFJvc3Rpc2xhdiBLcmFzbnkuCm8gVXBkYXRlIG9wdGlvbmFsIGxpYnJhcnkgenN0ZC1qbmkgZnJvbSAxLjMuMy0zIHRvIDEuNC4wLTEuCiAgSXNzdWU6IENPTVBSRVNTLTQ4NC4KbyBQYXJhbGxlbFNjYXR0ZXJaaXBDcmVhdG9yIG5vdyB3cml0ZXMgdGhlIGVudHJpZXMgdG8gdGhlCiAgZ2F0aGVyZWQgb3V0cHV0IGluIHRoZSBzYW1lIG9yZGVyIHRoZXkgaGF2ZSBiZWVuIGFkZGVkLgogIEdpdGh1YiBQdWxsIFJlcXVlc3RzICM3OCBhbmQgIzc5LgogIElzc3VlOiBDT01QUkVTUy00ODUuCiAgVGhhbmtzIHRvIEhlcnbDqSBCb3V0ZW15LCBUaWJvciBEaWdhbmEuCm8gVGhlIEV4cGFuZGVyIGFuZCBBcmNoaXZlIGV4YW1wbGUgY2xhc3NlcyBjYW4gbGVhayByZXNvdXJjZXMKICB0aGV5IGhhdmUgd3JhcHBlZCBhcm91bmQgcGFzc2VkIGluIHN0cmVhbXMgb3IgY2hhbm5lbHMuIFRoZQogIG1ldGhvZHMgY29uc3VtaW5nIHN0cmVhbXMgYW5kIGNoYW5uZWxzIGhhdmUgYmVlbiBhZGFwdGVkIHRvCiAgZ2l2ZSB0aGUgY2FsbGluZyBjb2RlIGEgY2hhbmNlIHRvIGRlYWwgd2l0aCB0aG9zZSB3cmFwcGVyCiAgcmVzb3VyY2VzLgogIElzc3VlOiBDT01QUkVTUy00ODYuCm8gWmlwQXJjaGl2ZUlucHV0U3RyZWFtIGFuZCBaaXBGaWxlIG5vIGxvbmdlciBhc3N1bWUgQ29tbW9ucwogIENvbXByZXNzIHdvdWxkIHVuZGVyc3RhbmQgZXh0cmEgZmllbGRzIGJldHRlciB0aGFuIHRoZSB3cml0ZXIKICBvZiB0aGUgYXJjaGl2ZSBhbmQgc2lsZW50bHkgdHVybiBleHRyYSBmaWVsZHMgdGhhdCBDb21tb25zCiAgQ29tcHJlc3Mgc2hvdWxkIHVuZGVyc3RhbmQgaW50byBVbnJlY29nbml6ZWRFeHRyYUZpZWxkcyBpZgogIHBhcnNpbmcgc2FpZCBmaWVsZHMgZmFpbHMuCiAgSXQgaXMgbm93IHBvc3NpYmxlIHRvIHRha2UgbW9yZSBjb250cm9sIG92ZXIgdGhlIGV4dHJhIGZpZWxkCiAgcGFyc2luZyBwcm9jZXNzIHdpdGggYSBuZXcgb3ZlcmxvYWQgb2YKICBaaXBBcmNoaXZlRW50cnkjZ2V0RXh0cmFGaWVsZHMuCiAgSXNzdWU6IENPTVBSRVNTLTQ3OS4KbyBaaXBBcmNoaXZlSW5wdXRTdHJlYW0gd2lsbCBub3cgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIHJlYWRpbmcgYQogIHN0b3JlZCBlbnRyeSB3aXRoIGEgZGF0YSBkZXNjcmlwdG9yIGFuZCB0aGUgZGF0YSBkZXNjcmlwdG9yCiAgZG9lc24ndCBtYXRjaCB3aGF0IGl0IGhhcyBhY3R1YWxseSByZWFkLgoKICBUaGUgbW9zdCBjb21tb24gY2FzZSBmb3IgYSBzaXR1YXRpb24gbGlrZSB0aGlzIGlzIGEgc3RvcmVkIFpJUAogIGFyY2hpdmUgaW5zaWRlIG9mIHRoZSBhcmNoaXZlIFppcEFyY2hpdmVJbnB1dFN0cmVhbSBjdXJyZW50bHkKICByZWFkcy4gSW4gc3VjaCBhIGNhc2UgWmlwQXJjaGl2ZUlucHV0U3RyZWFtIHdvdWxkIGhhcHBpbHkKICBleHRyYWN0IHRoZSBjb250YWluZWQgYXJjaGl2ZSBhbmQgc3RvcCBvbmNlIHRoZSBjZW50cmFsCiAgZGlyZWN0b3J5IG9mIHRoZSBpbm5lciBhcmNoaXZlIGhhcyBiZWVuIGhpdC4gVGhpcyBpcyBhIGNhc2UKICB3aGVyZSBaaXBBcmNoaXZlSW5wdXRTdHJlYW0gc2ltcGx5IGNhbiBub3QgYmUgdXNlZCBhbmQgb25seQogIFppcEZpbGUgaXMgYWJsZSB0byByZWFkIHRoZSBhcmNoaXZlLgoKICBUaGUgb25seSBvdGhlciBleHBsYW5hdGlvbiBpcyBhIGJyb2tlbiBhcmNoaXZlLiBTbyB0aGUKICBleGNlcHRpb24gcHJldmVudHMgdXNlcnMgZnJvbSB0aGlua2luZyB0aGV5IGhhZCBzdWNjZXNzZnVsbHkKICByZWFkIHRoZSBjb250ZW50cyBvZiB0aGUgYXJjaGl2ZS4KICBJc3N1ZTogQ09NUFJFU1MtNDgzLgpvIFRoZSA3emlwIHRvb2xzIHByb3ZpZGUgYSBkZWZhdWx0IG5hbWUgZm9yIGFyY2hpdmUgZW50cmllcwogIHdpdGhvdXQgbmFtZTsgU2V2ZW5aRmlsZSByZXR1cm5zIGEgbnVsbCBuYW1lIGZvciBzdWNoCiAgZW50cmllcy4gQSBuZXcgbWV0aG9kIGdldERlZmF1bHROYW1lIGhhcyBiZWVuIGFkZGVkIHRvIGRlcml2ZQogIHRoZSBzYW1lIG5hbWUgdGhlIDd6aXAgdG9vbHMgd291bGQgdXNlIGFuZCBhbiBvcHRpb24gaGFzIGJlZW4KICBhZGRlZCB0aGF0IHNldHMgU2V2ZW5aQXJjaGl2ZUVudHJ5J3MgbmFtZSB0byB0aGUgZGVmYXVsdCBuYW1lCiAgaWYgaXQgaXMgbm90IGNvbnRhaW5lZCBpbnNpZGUgdGhlIGFyY2hpdmUuCiAgSXNzdWU6IENPTVBSRVNTLTQ3OC4KClJlbGVhc2UgMS4xOAotLS0tLS0tLS0tLS0KClRoaXMgcmVsZWFzZSBjaGFuZ2VzIHRoZSBPU0dpIE1hbmlmZXN0IGVudHJ5IEJ1bmRsZS1TeW1ib2xpY05hbWUgZnJvbQpvcmcuYXBhY2hlLmNvbW1vbnMuY29tcHJlc3MgdG8gb3JnLmFwYWNoZS5jb21tb25zLmNvbW1vbnMtY29tcHJlc3MuCgpOZXcgZmVhdHVyZXM6Cm8gSXQgaXMgbm93IHBvc3NpYmxlIHRvIHNwZWNpZnkgdGhlIGFyZ3VtZW50cyBvZiB6c3RkLWpuaSdzCiAgWnN0ZE91dHB1dFN0cmVhbSBjb25zdHJ1Y3RvcnMgdmlhIENvbW1vbnMgQ29tcHJlc3MgYXMgd2VsbC4KICBJc3N1ZTogQ09NUFJFU1MtNDYwLgogIFRoYW5rcyB0byBDYXJtaSBHcnVzaGtvLgoKRml4ZWQgQnVnczoKbyBUaGUgZXhhbXBsZSBFeHBhbmRlciBjbGFzcyBoYXMgYmVlbiB2dWxuZXJhYmxlIHRvIGEgcGF0aAogIHRyYXZlcnNhbCBpbiB0aGUgZWRnZSBjYXNlIHRoYXQgaGFwcGVucyB3aGVuIHRoZSB0YXJnZXQKICBkaXJlY3RvcnkgaGFzIGEgc2libGluZyBkaXJlY3RvcnkgYW5kIHRoZSBuYW1lIG9mIHRoZSB0YXJnZXQKICBkaXJlY3RvcnkgaXMgYSBwcmVmaXggb2YgdGhlIHNpYmxpbmcgZGlyZWN0b3J5J3MgbmFtZS4KICBUaGFua3MgdG8gRGlkaWVyIExvaXNlYXUuCm8gQ2hhbmdlZCB0aGUgT1NHaSBJbXBvcnQtUGFja2FnZSB0byBhbHNvIG9wdGlvbmFsbHkgaW1wb3J0CiAgamF2YXguY3J5cHRvIHNvIGVuY3J5cHRlZCBhcmNoaXZlcyBjYW4gYmUgcmVhZC4KICBJc3N1ZTogQ09NUFJFU1MtNDU2LgpvIENoYW5nZWQgdmFyaW91cyBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGNsb3NlIG1ldGhvZCB0byBiZXR0ZXIKICBlbnN1cmUgYWxsIGhlbGQgcmVzb3VyY2VzIGdldCBjbG9zZWQgZXZlbiBpZiBleGNlcHRpb25zIGFyZQogIHRocm93biBkdXJpbmcgdGhlIGNsb3NpbmcgdGhlIHN0cmVhbS4KICBJc3N1ZTogQ09NUFJFU1MtNDU3LgpvIFppcEFyY2hpdmVJbnB1dFN0cmVhbSBjYW4gbm93IGRldGVjdCB0aGUgQVBLIFNpZ25pbmcgQmxvY2sKICB1c2VkIGluIHNpZ25lZCBBbmRyb2lkIEFQSyBmaWxlcyBhbmQgdHJlYXRzIGl0IGFzIGFuICJlbmQgb2YKICBhcmNoaXZlIiBtYXJrZXIuCiAgSXNzdWU6IENPTVBSRVNTLTQ1NS4KbyBUaGUgY3BpbyBzdHJlYW1zIGRpZG4ndCBoYW5kbGUgYXJjaGl2ZXMgdXNpbmcgYSBtdWx0aS1ieXRlCiAgZW5jb2RpbmcgcHJvcGVybHkuCiAgSXNzdWU6IENPTVBSRVNTLTQ1OS4KICBUaGFua3MgdG8gSmVucyBSZWltYW5uLgpvIFppcEFyY2hpdmVJbnB1dFN0cmVhbSNyZWFkIHdvdWxkIHNpbGVudGx5IHJldHVybiAtMSBvbiBhCiAgY29ycnVwdGVkIHN0b3JlZCBlbnRyeSBhbmQgZXZlbiByZXR1cm4gPiAwIGFmdGVyIGhpdHRpbmcgdGhlCiAgZW5kIG9mIHRoZSBhcmNoaXZlLgogIElzc3VlOiBDT01QUkVTUy00NjMuCm8gQXJBcmNoaXZlSW5wdXRTdHJlYW0jcmVhZCB3b3VsZCBhbGxvdyB0byByZWFkIGZyb20gdGhlIHN0cmVhbQogIHdpdGhvdXQgb3BlbmluZyBhbiBlbnRyeSBhdCBhbGwuCiAgSXNzdWU6IENPTVBSRVNTLTQ2Mi4KClJlbGVhc2UgMS4xNwotLS0tLS0tLS0tLS0KCk5ldyBmZWF0dXJlczoKbyBBZGRlZCBhIHVuaXQgdGVzdCB0aGF0IGlzIHN1cHBvc2VkIHRvIGZhaWwgaWYgd2UgYnJlYWsgdGhlCiAgT1NHaSBtYW5pZmVzdCBlbnRyaWVzIGFnYWluLgogIElzc3VlOiBDT01QUkVTUy00NDMuCm8gQWRkIGEgbmV3IFNraXBTaGllbGRpbmdJbnB1dFN0cmVhbSBjbGFzcyB0aGF0IGNhbiBiZSB1c2VkIHdpdGgKICBzdHJlYW1zIHRoYXQgdGhyb3cgYW4gSU9FeGNlcHRpb24gd2hlbiBza2lwIGlzIGludm9rZWQuCiAgSXNzdWU6IENPTVBSRVNTLTQ0OS4KbyBOZXcgY29uc3RydWN0b3JzIGhhdmUgYmVlbiBhZGRlZCB0byBTZXZlblpGaWxlIHRoYXQgYWNjZXB0CiAgY2hhcltdcyByYXRoZXIgdGhhbiBieXRlW11zIGluIG9yZGVyIHRvIGF2b2lkIGEgY29tbW9uIGVycm9yCiAgb2YgdXNpbmcgdGhlIHdyb25nIGVuY29kaW5nIHdoZW4gY3JlYXRpbmcgdGhlIGJ5dGVbXS4gIFRoaXMKICBjaGFuZ2UgbWF5IGJyZWFrIHNvdXJjZSBjb21wYXRpYmlsaXR5IGZvciBjbGllbnQgY29kZSB0aGF0CiAgdXNlcyBvbmUgb2YgdGhlIGNvbnN0cnVjdG9ycyBleHBlY3RpbmcgYSBwYXNzd29yZCBhbmQgcGFzc2VzCiAgaW4gbnVsbCBhcyBwYXNzd29yZC4gV2UgcmVjb21tZW5kIHRvIGNoYW5nZSB0aGUgY29kZSB0byB1c2UgYQogIGNvbnN0cnVjdG9yIHdpdGhvdXQgcGFzc3dvcmQgYXJndW1lbnQuCiAgSXNzdWU6IENPTVBSRVNTLTQ1Mi4KCkZpeGVkIEJ1Z3M6Cm8gUmVtb3ZlZCB0aGUgb2JqZW5lc2lzIGRlcGVuZGVuY3kgZnJvbSB0aGUgcG9tIGFzIGl0IGlzIG5vdAogIG5lZWRlZCBhdCBhbGwuCm8gRml4ZWQgcmVzb3VyY2UgbGVhayBpbiBQYXJhbGxlbFNjYXR0ZXJaaXBDcmVhdG9yI3dyaXRlVG8uCiAgSXNzdWU6IENPTVBSRVNTLTQ0Ni4KbyBDZXJ0YWluIGVycm9ycyB3aGVuIHBhcnNpbmcgWklQIGV4dHJhIGZpZWxkcyBpbiBjb3JydXB0CiAgYXJjaGl2ZXMgYXJlIG5vdyB0dXJuZWQgaW50byBaaXBFeGNlcHRpb24sIHRoZXkgdXNlZCB0bwogIG1hbmlmZXN0IGFzIEFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiBiZWZvcmUuCiAgSXNzdWU6IENPTVBSRVNTLTQ0Ny4KbyBJT1V0aWxzLmNvcHkgbm93IHZlcmlmaWVzIHRoZSBidWZmZXIgc2l6ZSBpcyBiaWdnZXIgdGhhbiAwLgogIElzc3VlOiBDT01QUkVTUy00NTEuCm8gWmlwQXJjaGl2ZUlucHV0U3RyZWFtIGZhaWxlZCB0byByZWFkIHNvbWUgZmlsZXMgd2l0aCBzdG9yZWQKICBlbnRyaWVzIHVzaW5nIGEgZGF0YSBkZXNjcmlwdG9yLgogIElzc3VlOiBDT01QUkVTUy00NTQuCgpDaGFuZ2VzOgpvIEZpeGVkIHNvbWUgY29kZSBleGFtcGxlcy4KICBHaXRodWIgUHVsbCBSZXF1ZXN0ICM2My4KICBUaGFua3MgdG8gTWFyY2hlbmtvIFNlcmdleS4KbyBUaGUgc3RyZWFtcyByZXR1cm5lZCBieSBaaXBGaWxlIGFuZCBtb3N0IG90aGVyIGRlY29tcHJlc3NpbmcKICBzdHJlYW1zIG5vdyBwcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBudW1iZXIgb2YgY29tcHJlc3NlZAogIGFuZCB1bmNvbXByZXNzZWQgYnl0ZXMgcmVhZCBzbyBmYXIuIFRoaXMgbWF5IGJlIHVzZWQgdG8gZGV0ZWN0CiAgYSBaaXBCb21iIGlmIHRoZSBjb21wcmVzc2lvbiByYXRpbyBleGNlZWRzIGEgY2VydGFpbgogIHRocmVzaG9sZCwgZm9yIGV4YW1wbGUuCiAgRm9yIFNldmVuWkZpbGUgYSBuZXcgbWV0aG9kIHJldHVybnMgdGhlIHN0YXRpc3RpY3MgZm9yIHRoZQogIGN1cnJlbnQgZW50cnkuCiAgSXNzdWU6IENPTVBSRVNTLTQ0NS4KICBUaGFua3MgdG8gQW5kcmVhcyBCZWVrZXIuCm8gQWRkZWQgYSB3b3JrYXJvdW5kIGZvciBhIGJ1ZyBpbiBBZG9wdE9wZW5KREsgZm9yIFMvMzkwIHRvCiAgQlppcDJDb21wcmVzc29ySW5wdXRTdHJlYW0uCiAgSXNzdWU6IENPTVBSRVNTLTQ1My4KClJlbGVhc2UgMS4xNi4xCi0tLS0tLS0tLS0tLS0tCgpGaXhlZCBCdWc6Cm8gRml4ZWQgdGhlIE9TR2kgbWFuaWZlc3QgZW50cnkgZm9yIGltcG9ydHMgdGhhdCBoYXMgYmVlbiBicm9rZW4KICBpbiAxLjE2LgogIElzc3VlOiBDT01QUkVTUy00NDIuCgpSZWxlYXNlIDEuMTYKLS0tLS0tLS0tLS0tCgpOZXcgZmVhdHVyZXM6Cm8gQWRkIHJlYWQtb25seSBzdXBwb3J0IGZvciBac3RhbmRhcmQgY29tcHJlc3Npb24gYmFzZWQgb24gdGhlCiAgWnN0ZC1qbmkgcHJvamVjdC4KICBJc3N1ZTogQ09NUFJFU1MtNDIzLiBUaGFua3MgdG8gQW5kcmUgRiBkZSBNaXJhbmRhLgpvIEFkZGVkIGF1dG8tZGV0ZWN0aW9uIGZvciBac3RhbmRhcmQgY29tcHJlc3NlZCBzdHJlYW1zLgogIElzc3VlOiBDT01QUkVTUy00MjUuCm8gQWRkZWQgd3JpdGUtc3VwcG9ydCBmb3IgWnN0YW5kYXJkIGNvbXByZXNzaW9uLgogIElzc3VlOiBDT01QUkVTUy00MjYuCm8gQWRkZWQgcmVhZC1vbmx5IERFRkxBVEU2NCBzdXBwb3J0IHRvIFpJUCBhcmNoaXZlcyBhbmQgYXMKICBzdGFuZC1hbG9uZSBDb21wcmVzc29ySW5wdXRTdHJlYW0uCiAgSXNzdWU6IENPTVBSRVNTLTM4MC4gVGhhbmtzIHRvIENocmlzdGlhbiBNYXJxdWV6IEdyYWJpYS4KbyBBZGRlZCByZWFkLW9ubHkgREVGTEFURTY0IHN1cHBvcnQgdG8gN3ogYXJjaGl2ZXMuCiAgSXNzdWU6IENPTVBSRVNTLTQzNy4KCkZpeGVkIEJ1Z3M6Cm8gU3luY2hyb25pemVkIGl0ZXJhdGlvbiBvdmVyIGEgc3luY2hyb25pemVkTGlzdCBpbgogIFBhcmFsbGVsU2NhdHRlclppcENyZWF0b3IuCiAgSXNzdWU6IENPTVBSRVNTLTQzMC4gVGhhbmtzIHRvIEJydW5vIFAuIEtpbm9zaGl0YS4KbyBaaXBGaWxlIGNvdWxkIGdldCBzdHVjayBpbiBhbiBpbmZpbml0ZSBsb29wIHdoZW4gcGFyc2luZyBaSVAKICBhcmNoaXZlcyB3aXRoIGNlcnRhaW4gc3Ryb25nIGVuY3J5cHRpb24gaGVhZGVycy4KICBJc3N1ZTogQ09NUFJFU1MtNDMyLgpvIEFkZGVkIGltcHJvdmVkIGNoZWNrcyB0byBkZXRlY3QgY29ycnVwdGVkIGJ6aXAyIHN0cmVhbXMgYW5kCiAgdGhyb3cgdGhlIGV4cGVjdGVkIElPRXhjZXB0aW9uIHJhdGhlciB0aGFuIG9ic2N1cmUKICBSdW50aW1lRXhjZXB0aW9ucy4KICBJc3N1ZTogQ09NUFJFU1MtNDI0LgoKQ2hhbmdlczoKbyBSZXBsYWNlcyBpbnN0YW5jZW9mIGNoZWNrcyB3aXRoIGEgdHlwZSBtYXJrZXIgaW4gTFo3NyBzdXBwb3J0IGNvZGUuCiAgSXNzdWU6IENPTVBSRVNTLTQzNS4gVGhhbmtzIHRvIEJFTFVHQSBCRUhSLgpvIFVwZGF0ZWQgWFogZm9yIEphdmEgZGVwZW5kZW5jeSB0byAxLjggaW4gb3JkZXIgdG8gcGljayB1cCBidWcgZml4CiAgdG8gTFpNQTJJbnB1dFN0cmVhbSdzIGF2YWlsYWJsZSBtZXRob2QuCm8gWmlwQXJjaGl2ZUVudHJ5IG5vdyBleHBvc2VzIGhvdyB0aGUgbmFtZSBvciBjb21tZW50IGhhdmUgYmVlbgogIGRldGVybWluZWQgd2hlbiB0aGUgZW50cnkgd2FzIHJlYWQuCiAgSXNzdWU6IENPTVBSRVNTLTQyOS4gVGhhbmtzIHRvIERhbWlhbm8gQWxiYW5pLgpvIFppcEZpbGUuZ2V0SW5wdXRTdHJlYW0gd2lsbCBub3cgYWx3YXlzIGJ1ZmZlciB0aGUgc3RyZWFtCiAgaW50ZXJuYWxseSBpbiBvcmRlciB0byBpbXByb3ZlIHJlYWQgcGVyZm9ybWFuY2UuCiAgSXNzdWU6IENPTVBSRVNTLTQzOC4KbyBTcGVlZCBpbXByb3ZlbWVudCBmb3IgREVGTEFURTY0IGRlY29tcHJlc3Npb24uCiAgSXNzdWU6IENPTVBSRVNTLTQ0MC4gVGhhbmtzIHRvIERhd2lkIFdlaXNzLgpvIEFkZGVkIGEgZmV3IGV4dHJhIHNhbml0eSBjaGVja3MgZm9yIHRoZSByYXJlciBjb21wcmVzc2lvbgogIG1ldGhvZHMgdXNlZCBpbiBaSVAgYXJjaGl2ZXMuCiAgSXNzdWU6IENPTVBSRVNTLTQzNi4KbyBTaW1wbGlmaWVkIHRoZSBzcGVjaWFsIGhhbmRsaW5nIGZvciB0aGUgZHVtbXkgYnl0ZSByZXF1aXJlZCBieQogIHpsaWIgd2hlbiB1c2luZyBqYXZhLnV0aWwuemlwLkluZmxhdGVyLgogIElzc3VlOiBDT01QUkVTUy00NDEuCm8gVmFyaW91cyBjb2RlIGNsZWFudXBzLgogIEdpdGh1YiBQdWxsIFJlcXVlc3QgIzYxLiBUaGFua3MgdG8gU2hhaGFiIEtvbmRyaS4KbyBUYXJBcmNoaXZlRW50cnkncyBwcmVzZXJ2ZUxlYWRpbmdTbGFzaGVzIGNvbnN0cnVjdG9yIGFyZ3VtZW50CiAgaGFzIGJlZW4gcmVuYW1lZCBhbmQgY2FuIG5vdyBhbHNvIGJlIHVzZWQgdG8gcHJlc2VydmUgdGhlCiAgZHJpdmUgbGV0dGVyIG9uIFdpbmRvd3MuCgpSZWxlYXNlIDEuMTUKLS0tLS0tLS0tLS0tCgpOZXcgZmVhdHVyZXM6Cm8gQWRkZWQgbWFnaWMgTUFOSUZFU1QgZW50cnkgQXV0b21hdGljLU1vZHVsZS1OYW1lIHNvIHRoZSBtb2R1bGUKICBuYW1lIHdpbGwgYmUgb3JnLmFwYWNoZS5jb21tb25zLmNvbXByZXNzIHdoZW4gdGhlIGphciBpcyB1c2VkCiAgYXMgYW4gYXV0b21hdGljIG1vZHVsZSBpbiBKYXZhOS4KICBJc3N1ZTogQ09NUFJFU1MtMzk3LgpvIEFkZGVkIGEgbmV3IHV0aWxpdHkgY2xhc3MgRml4ZWRMZW5ndGhCbG9ja091dHB1dFN0cmVhbSB0aGF0CiAgY2FuIGJlIHVzZWQgdG8gZW5zdXJlIHdyaXRpbmcgYWx3YXlzIGhhcHBlbnMgaW4gYmxvY2tzIG9mIGEKICBnaXZlbiBzaXplLgogIElzc3VlOiBDT01QUkVTUy00MDUuIFRoYW5rcyB0byBTaW1vbiBTcGVyby4KbyBJdCBpcyBub3cgcG9zc2libGUgdG8gc3BlY2lmeS9yZWFkIGN1c3RvbSBQQVggaGVhZGVycyB3aGVuCiAgd3JpdGluZy9yZWFkaW5nIHRhciBhcmNoaXZlcy4KICBJc3N1ZTogQ09NUFJFU1MtNDAwLiBUaGFua3MgdG8gU2ltb24gU3Blcm8uCgpGaXhlZCBCdWdzOgpvIE1ha2Ugc3VyZSAidmVyc2lvbiBuZWVkZWQgdG8gZXh0cmFjdCIgaW4gbG9jYWwgZmlsZSBoZWFkZXIgYW5kCiAgY2VudHJhbCBkaXJlY3Rvcnkgb2YgYSBaSVAgYXJjaGl2ZSBhZ3JlZSB3aXRoIGVhY2ggb3RoZXIuCiAgQWxzbyBlbnN1cmUgdGhlIHZlcnNpb24gaXMgc2V0IHRvIDIuMCBpZiBERUZMQVRFIGlzIHVzZWQuCiAgSXNzdWU6IENPTVBSRVNTLTM5NC4KbyBEb24ndCB1c2UgYSBkYXRhIGRlc2NyaXB0b3IgaW4gWklQIGFyY2hpdmVzIHdoZW4gY29weWluZyBhIHJhdwogIGVudHJ5IHRoYXQgYWxyZWFkeSBrbm93cyBpdHMgc2l6ZSBhbmQgQ1JDIGluZm9ybWF0aW9uLgogIElzc3VlOiBDT01QUkVTUy0zOTUuCm8gVHJhdmlzIGJ1aWxkIHJlZHVuZGFudGx5IHJlcGVhdHMgY29tcGlsYXRpb24gYW5kIHRlc3RzIHJlZHVuZGFudGx5CiAgR2l0SHViIFB1bGwgUmVxdWVzdCAjNDMuIFRoYW5rcyB0byBTaW1vbiBTcGVyby4KICBJc3N1ZTogQ09NUFJFU1MtNDEzCm8gVGhlIE1BTklGRVNUIG9mIDEuMTQgbGFja3MgYW4gT1NHaSBJbXBvcnQtUGFja2FnZSBmb3IgWFogZm9yCiAgSmF2YS4KICBJc3N1ZTogQ09NUFJFU1MtMzk2LgpvIEJVSUxESU5HLm1kIG5vdyBwYXNzZXMgdGhlIFJBVCBjaGVjay4KICBJc3N1ZTogQ09NUFJFU1MtNDA2LiBUaGFua3MgdG8gU2ltb24gU3Blcm8uCm8gTWFkZSBzdXJlIENoZWNrc3VtQ2FsY3VsYXRpbmdJbnB1dFN0cmVhbSByZWNlaXZlcyB2YWxpZAogIGNoZWNrc3VtIGFuZCBpbnB1dCBzdHJlYW0gaW5zdGFuY2VzIHZpYSB0aGUgY29uc3RydWN0b3IuCiAgSXNzdWU6IENPTVBSRVNTLTQxMi4gVGhhbmtzIHRvIE1pY2hhZWwgSGF1c2VnZ2VyLgpvIFRhckFyY2hpdmVPdXRwdXRTdHJlYW0gbm93IHZlcmlmaWVzIHRoZSBibG9jayBhbmQgcmVjb3JkIHNpemVzCiAgc3BlY2lmaWVkIGF0IGNvbnN0cnVjdGlvbiB0aW1lIGFyZSBjb21wYXRpYmxlIHdpdGggdGhlIHRhcgogIHNwZWNpZmljYXRpb24uIEluIHBhcnRpY3VsYXIgNTEyIGlzIHRoZSBvbmx5IHJlY29yZCBzaXplCiAgYWNjZXB0ZWQgYW5kIHRoZSBibG9jayBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA1MTIuCiAgSXNzdWU6IENPTVBSRVNTLTQwNy4gVGhhbmtzIHRvIFNpbW9uIFNwZXJvLgpvIEZpeGVkIGNsYXNzIG5hbWVzIG9mIENwaW9BcmNoaXZlRW50cnkgYW5kCiAgQ3Bpb0FyY2hpdmVJbnB1dFN0cmVhbSBpbiB2YXJpb3VzIEphdmFkb2NzLgogIElzc3VlOiBDT01QUkVTUy00MTUuCm8gVGhlIGNvZGUgb2YgdGhlIGV4dGVuZGVkIHRpbWVzdGFtcCB6aXAgZXh0cmEgZmllbGQgaW5jb3JyZWN0bHkKICBhc3N1bWVkIHRoZSB0aW1lIHdhcyBzdG9yZWQgYXMgdW5zaWduZWQgMzItYml0IGludCBhbmQgdGh1cwogIGNyZWF0ZWQgaW5jb3JyZWN0IHJlc3VsdHMgZm9yIHllYXJzIGFmdGVyIDIwMzcuCiAgSXNzdWU6IENPTVBSRVNTLTQxNi4gVGhhbmtzIHRvIFNpbW9uIFNwZXJvLgpvIFJlbW92ZWQgWmlwRW5jb2RpbmcgY29kZSB0aGF0IGJlY2FtZSBvYnNvbGV0ZSB3aGVuIHdlIHN0YXJ0ZWQKICB0byByZXF1aXJlIEphdmEgNSBhcyBiYXNlbGluZSBsb25nIGFnby4KICBJc3N1ZTogQ09NUFJFU1MtNDEwLiBUaGFua3MgdG8gU2ltb24gU3Blcm8uCm8gVGhlIHRhciBwYWNrYWdlIHdpbGwgbm8gbG9uZ2VyIHRyeSB0byBwYXJzZSB0aGUgbWFqb3IgYW5kCiAgbWlub3IgZGV2aWNlIG51bWJlcnMgdW5sZXNzIHRoZSBlbnRyeSByZXByZXNlbnRzIGEgY2hhcmFjdGVyCiAgb3IgYmxvY2sgc3BlY2lhbCBmaWxlLgogIElzc3VlOiBDT01QUkVTUy00MTcuCm8gV2hlbiByZWFkaW5nIHRhciBoZWFkZXJzIHdpdGggbmFtZSBmaWVsZHMgY29udGFpbmluZyBlbWJlZGRlZAogIE5VTHMsIHRoZSBuYW1lIHdpbGwgbm93IGJlIHRlcm1pbmF0ZWQgYXQgdGhlIGZpcnN0IE5VTCBieXRlLgogIElzc3VlOiBDT01QUkVTUy00MjEuIFRoYW5rcyB0byBSb2VsIFNwaWxrZXIuCm8gU2ltcGxpZmllZCBUYXJBcmNoaXZlT3V0cHV0U3RyZWFtIGJ5IHJlcGxhY2luZyB0aGUgaW50ZXJuYWwKICBidWZmZXJpbmcgd2l0aCBuZXcgY2xhc3MgRml4ZWRMZW5ndGhCbG9ja091dHB1dFN0cmVhbS4KICBJc3N1ZTogQ09NUFJFU1MtNDA5LgoKUmVsZWFzZSAxLjE0Ci0tLS0tLS0tLS0tLQoKTmV3IGZlYXR1cmVzOgpvIEFkZGVkIHdyaXRlIHN1cHBvcnQgZm9yIFNuYXBweS4KICBJc3N1ZTogQ09NUFJFU1MtMjQ2LgpvIEFkZGVkIHN1cHBvcnQgZm9yIExaNCAoYmxvY2sgYW5kIGZyYW1lIGZvcm1hdCkuCiAgSXNzdWU6IENPTVBSRVNTLTI3MS4KbyBBZGQgc3RhdGljIGRldGVjdChJbnB1dFN0cmVhbSBpbikgdG8gQ29tcHJlc3NvclN0cmVhbUZhY3RvcnkKICBhbmQgQXJjaGl2ZVN0cmVhbUZhY3RvcnkKICBJc3N1ZTogQ09NUFJFU1MtMzg1LgpvIEFkZGVkIGEgd2F5IHRvIGxpbWl0IGFtb3VudCBvZiBtZW1vcnkgWkNvbXByZXNzb3JTdHJlYW0gbWF5CiAgdXNlLgogIElzc3VlOiBDT01QUkVTUy0zODIuIFRoYW5rcyB0byBUaW0gQWxsaXNvbi4KbyBBZGRlZCBhIHdheSB0byBsaW1pdCBhbW91bnQgb2YgbWVtb3J5IFpDb21wcmVzc29yU3RyZWFtIG1heQogIHVzZS4KICBJc3N1ZTogQ09NUFJFU1MtMzg2LiBUaGFua3MgdG8gVGltIEFsbGlzb24uCm8gQWRkZWQgYSB3YXkgdG8gbGltaXQgYW1vdW50IG9mIG1lbW9yeSBMWk1BQ29tcHJlc3NvclN0cmVhbSBhbmQKICBYWkNvbXByZXNzb3JJbnB1dFN0cmVhbSBtYXkgdXNlLgogIElzc3VlOiBDT01QUkVTUy0zODIuIFRoYW5rcyB0byBUaW0gQWxsaXNvbi4KbyBBZGQgQnJvdGxpIGRlY29kZXIgYmFzZWQgb24gdGhlIEdvb2dsZSBCcm90bGkgbGlicmFyeS4KICBJc3N1ZTogQ09NUFJFU1MtMzkyLiBUaGFua3MgdG8gUGhpbGlwcGUgTW91YXdhZC4KbyBaaXBFbnRyeSBub3cgZXhwb3NlcyBpdHMgZGF0YSBvZmZzZXQuCiAgSXNzdWU6IENPTVBSRVNTLTM5MC4gVGhhbmtzIHRvIFpieW5layBWeXNrb3Zza3kuCm8gVXNpbmcgWmlwQXJjaGl2ZUVudHJ5J3Mgc2V0QWxpZ25tZW50IGl0IGlzIG5vdyBwb3NzaWJsZSB0bwogIGVuc3VyZSB0aGUgZGF0YSBvZmZzZXQgb2YgYW4gZW50cnkgc3RhcnRzIGF0IGEgZmlsZSBwb3NpdGlvbgogIHRoYXQgYXQgd29yZCBvciBwYWdlIGJvdW5kYXJpZXMuCiAgQSBuZXcgZXh0cmEgZmllbGQgaGFzIGJlZW4gYWRkZWQgZm9yIHRoaXMgcHVycG9zZS4KICBJc3N1ZTogQ09NUFJFU1MtMzkxLiBUaGFua3MgdG8gWmJ5bmVrIFZ5c2tvdnNreS4KCkZpeGVkIEJ1Z3M6Cm8gU25hcHB5Q29tcHJlc3NvcklucHV0U3RyZWFtIHNsaWRlcyB0aGUgd2luZG93IHRvbyBlYXJseQogIGxlYWRpbmcgdG8gQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9ucyBmb3Igc29tZSBzdHJlYW1zLgogIElzc3VlOiBDT01QUkVTUy0zNzguCm8gWmlwQXJjaGl2ZUVudHJ5I2lzVW5peFN5bWxpbmsgbm93IG9ubHkgcmV0dXJucyB0cnVlIGlmIHRoZQogIGNvcnJlc3BvbmRpbmcgbGluayBmbGFnIGlzIHRoZSBvbmx5IGZpbGUtdHlwZSBmbGFnIHNldC4KICBJc3N1ZTogQ09NUFJFU1MtMzc5LiBUaGFua3MgdG8gR3VpbGxhdW1lIEJvdcOpLgpvIEZpeGVkIGFuIGludGVnZXIgb3ZlcmZsb3cgaW4gQ1BJTydzIENSQyBjYWxjdWxhdGlvbi4KICBQdWxsIFJlcXVlc3QgIzE3LiBUaGFua3MgdG8gRGFuaWVsIENvbGxpbi4KbyBNYWtlIHVuaXQgdGVzdHMgd29yayBvbiBXaW5kb3dzIHBhdGhzIHdpdGggc3BhY2VzIGluIHRoZWlyIG5hbWVzLgogIElzc3VlOiBDT01QUkVTUy0zODcuCm8gSW50ZXJuYWwgbG9jYXRpb24gcG9pbnRlciBpbiBaaXBGaWxlIGNvdWxkIGdldCBpbmNyZW1lbnRlZAogIGV2ZW4gaWYgbm90aGluZyBoYWQgYmVlbiByZWFkLgogIElzc3VlOiBDT01QUkVTUy0zODkuCm8gTFpNQUNvbXByZXNzb3JPdXRwdXRTdHJlYW0jZmx1c2ggd291bGQgdGhyb3cgYW4gZXhjZXB0aW9uCiAgcmF0aGVyIHRoYW4gYmUgdGhlIE5PUCBpdCBwcm9taXNlZCB0byBiZS4KICBJc3N1ZTogQ09NUFJFU1MtMzkzLgoKQ2hhbmdlczoKbyBUaGUgYmxvY2tzaXplIGZvciBGcmFtZWRTbmFwcHlDb21wcmVzc29ySW5wdXRTdHJlYW0gY2FuIG5vdyBiZQogIGNvbmZpZ3VyZWQgYXMgc29tZSBJV0EgZmlsZXMgc2VlbSB0byBiZSB1c2luZyBibG9ja3MgbGFyZ2VyCiAgdGhhbiB0aGUgZGVmYXVsdCAzMmsuCiAgSXNzdWU6IENPTVBSRVNTLTM1OC4KbyBCWmlwMkNvbXByZXNzb3JJbnB1dHN0cmVhbSBub3cgdXNlcyBCaXRJbnB1dFN0cmVhbSBpbnRlcm5hbGx5LgogIFB1bGwgUmVxdWVzdCAjMTMuIFRoYW5rcyB0byBUaG9tYXMgTWV5ZXIuCm8gSW1wcm92ZWQgcGVyZm9ybWFuY2UgZm9yIGNvbmN1cnJlbnQgcmVhZHMgZnJvbSBaaXBGaWxlIHdoZW4KICByZWFkaW5nIGZyb20gYSBmaWxlLgogIElzc3VlOiBDT01QUkVTUy0zODguIFRoYW5rcyB0byBaYnluZWsgVnlza292c2t5LgoKUmVsZWFzZSAxLjEzCi0tLS0tLS0tLS0tLQoKQ29tbW9ucyBDb21wcmVzcyAxLjEzIGlzIHRoZSBmaXJzdCB2ZXJzaW9uIHRvIHJlcXVpcmUgSmF2YSA3IGF0CnJ1bnRpbWUuCgpDaGFuZ2VzIGluIHRoaXMgdmVyc2lvbiBpbmNsdWRlOgoKTmV3IGZlYXR1cmVzOgpvIFNldmVuWkZpbGUsIFNldmVuWk91dHB1dEZpbGUsIFppcEZpbGUgYW5kCiAgWmlwQXJjaGl2ZU91dHB1dFN0cmVhbSBjYW4gbm93IHdvcmsgb24gbm9uLWZpbGUgcmVzb3VyY2VzIGlmCiAgdGhleSBjYW4gYmUgYWNjZXNzZWQgdmlhIFNlZWthYmxlQnl0ZUNoYW5uZWwuCiAgSXNzdWU6IENPTVBSRVNTLTMyNy4KbyBBbGxvdyBjb21wcmVzc29yIGV4dGVuc2lvbnMgdGhyb3VnaCBhIHN0YW5kYXJkIEpSRSBTZXJ2aWNlTG9hZGVyLgogIElzc3VlOiBDT01QUkVTUy0zNjguCm8gQWxsb3cgYXJjaGl2ZSBleHRlbnNpb25zIHRocm91Z2ggYSBzdGFuZGFyZCBKUkUgU2VydmljZUxvYWRlci4KICBJc3N1ZTogQ09NUFJFU1MtMzY5LgpvIEFkZCB3cml0ZSBzdXBwb3J0IGZvciB0aGUgbGVnYWN5IExaTUEgZm9ybWF0LCB0aGlzIHJlcXVpcmVzIFhaCiAgZm9yIEphdmEgMS42LgogIElzc3VlOiBDT01QUkVTUy0zNzMuCm8gQWRkIHdyaXRlIHN1cHBvcnQgZm9yIHRoZSBsZWdhY3kgTFpNQSBzdHJlYW0gdG8gN3osIHRoaXMKICByZXF1aXJlcyBYWiBmb3IgSmF2YSAxLjYuCiAgSXNzdWU6IENPTVBSRVNTLTM3NC4KbyBBbGxvdyB0aGUgY2xpZW50cyBvZiBQYXJhbGxlbFNjYXR0ZXJaaXBDcmVhdG9yIHRvIHByb3ZpZGUKICBaaXBBcmNoaXZlRW50cnlSZXF1ZXN0U3VwcGxpZXIuCiAgSXNzdWU6IENPTVBSRVNTLTM3NS4gVGhhbmtzIHRvIFBsYW1lbiBUb3Rldi4KbyBBZGQgYSB2ZXJzaW9uLWluZGVwZW5kZW50IGxpbmsgdG8gdGhlIEFQSSBkb2NzIG9mIHRoZSBsYXRlc3QKICByZWxlYXNlLgogIElzc3VlOiBDT01QUkVTUy0zNzIuCgpGaXhlZCBCdWdzOgpvIEJpdElucHV0U3RyZWFtIGNvdWxkIHJldHVybiBiYWQgcmVzdWx0cyB3aGVuIG92ZXJmbG93aW5nCiAgaW50ZXJuYWxseSAtIGlmIHR3byBjb25zZWN1dGl2ZSByZWFkcyB0cmllZCB0byByZWFkIG1vcmUgdGhhbgogIDY0IGJpdHMuCiAgSXNzdWU6IENPTVBSRVNTLTM2My4KbyBaaXBBcmNoaXZlSW5wdXRTdHJlYW0uY2xvc2VFbnRyeSBkb2VzIG5vdCBwcm9wZXJseSBhZHZhbmNlIHRvCiAgbmV4dCBlbnRyeSBpZiB0aGVyZSBhcmUganVuayBieXRlcyBhdCBlbmQgb2YgZGF0YSBzZWN0aW9uLgogIElzc3VlOiBDT01QUkVTUy0zNjQuIFRoYW5rcyB0byBNaWtlIE1vbGUuCm8gWmlwQXJjaGl2ZUlucHV0U3RyZWFtIG5vdyB0aHJvd3MgYW4gRXhjZXB0aW9uIGlmIGl0IGVuY291bnRlcnMKICBhIGJyb2tlbiBaSVAgYXJjaGl2ZSByYXRoZXIgdGhhbiBzaWduYWxpbmcgZW5kLW9mLWFyY2hpdmUuCiAgSXNzdWU6IENPTVBSRVNTLTM2Ny4gVGhhbmtzIHRvIE1pa2UgTW9sZS4KbyBTY2F0dGVyWmlwT3V0cHV0U3RyZWFtIGRpZG4ndCBjbG9zZSB0aGUgU3RyZWFtQ29tcHJlc3NvcgogIGNhdXNpbmcgYSBwb3RlbnRpYWwgcmVzb3VyY2UgbGVhay4KICBJc3N1ZTogQ09NUFJFU1MtMzc3LgoKQ2hhbmdlczoKbyBVcGRhdGUgSmF2YSByZXF1aXJlbWVudCBmcm9tIDYgdG8gNy4KICBJc3N1ZTogQ09NUFJFU1MtMzYwLgpvIENsYXJpZmllZCB3aGljaCBUYXJBcmNoaXZlRW50cnkgbWV0aG9kcyBhcmUgdXNlbGVzcyBmb3IKICBlbnRyaWVzIHJlYWQgZnJvbSBhbiBhcmNoaXZlLgogIElzc3VlOiBDT01QUkVTUy0zNjYuCgpSZWxlYXNlIDEuMTIKLS0tLS0tLS0tLS0tCgpDb21tb25zIENvbXByZXNzIDEuMTIgaXMgdGhlIGZpcnN0IHZlcnNpb24gdG8gcmVxdWlyZSBKYXZhIDYgYXQKcnVudGltZS4KClJlbGVhc2UgMS4xMiBjaGFuZ2VzIHRoZSBiZWhhdmlvciBvZiBCWmlwMkNvbXByZXNzb3JPdXRwdXRTdHJlYW0ncwpmaW5hbGl6ZSBtZXRob2Qgc28gdGhhdCBpdCBubyBsb25nZXIgaW52b2tlcyBmaW5pc2guIFRoaXMgaXMgZ29pbmcgdG8KYnJlYWsgY29kZSB0aGF0IHJlbGllZCBvbiB0aGUgZmluYWxpemVyIHRvIGNsZWFuIHVwIGFuIHVuZmluaXNoZWQKc3RyZWFtLiBUaGUgY29kZSB3aWxsIG5lZWQgdG8gYmUgY2hhbmdlZCB0byBjYWxsIGZpbmlzaCBvciBjbG9zZQppdHNlbGYuIE5vdGUgdGhhdCBhIGZpbmFsaXplciBpcyBub3QgZ3VhcmFudGVlZCB0byBydW4sIHNvIHRoZSBmZWF0dXJlCndhcyBub3QgMTAwJSBlZmZlY3RpdmUgaW4gYW55IGNhc2UuCgpOZXcgZmVhdHVyZXM6CgpvIEZyYW1lZFNuYXBweUNvbXByZXNzb3JJbnB1dFN0cmVhbSBub3cgc3VwcG9ydHMgdGhlIGRpYWxlY3Qgb2YKICBTbmFwcHkgdXNlZCBieSB0aGUgSVdBIGZpbGVzIGNvbnRhaW5lZCB3aXRoaW4gdGhlIHppcCBhcmNoaXZlcwogIHVzZWQgaW4gQXBwbGUncyBpV29yayAxMyBmaWxlcy4KICBJc3N1ZTogQ09NUFJFU1MtMzUyLgoKRml4ZWQgQnVnczoKCm8gU2V2ZW5aRmlsZS5yZWFkKCkgdGhyb3dzIGFuIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiBmb3IgZW1wdHkgZW50cmllcy4KICBJc3N1ZTogQ09NUFJFU1MtMzQ4LgpvIFRhckFyY2hpdmVJbnB1dFN0cmVhbSBmYWlsZWQgdG8gcGFyc2UgUEFYIGhlYWRlcnMgdGhhdCBpbmNsdWRlZAogIGJsYW5rIGxpbmVzLgogIElzc3VlOiBDT01QUkVTUy0zNTUuIFRoYW5rcyB0byBKZXJlbXkgR3VzdGllLgpvIFRhckFyY2hpdmVJbnB1dFN0cmVhbSBmYWlsZWQgdG8gcGFyc2UgUEFYIGhlYWRlcnMgd2hvc2UgdGFyIGVudHJ5CiAgbmFtZSBlbmRlZCB3aXRoIGEgc2xhc2guCiAgSXNzdWU6IENPTVBSRVNTLTM1Ni4gVGhhbmtzIHRvIEplcmVteSBHdXN0aWUuCgpDaGFuZ2VzOgpvIFVwZGF0ZSByZXF1aXJlbWVudCBmcm9tIEphdmEgNSB0byA2LgogIElzc3VlOiBDT01QUkVTUy0zNDkuCm8gVGFyQXJjaGl2ZUVudHJ5IHdhc3RlZnVsbHkgYWxsb2NhdGVzIGVtcHR5IGFycmF5cy4KICBJc3N1ZTogQ09NUFJFU1MtMzUwLgpvIEphdmFkb2MgZm9yIEJaaXAyQ29tcHJlc3NvcklucHV0U3RyZWFtKElucHV0U3RyZWFtLCBib29sZWFuKSBzaG91bGQKICByZWZlciB0byBJT0V4LCBub3QgTlBFLgogIElzc3VlOiBDT01QUkVTUy0zNTMuCm8gUHVyZUphdmFDcmMzMkMgaW4gdGhlIHNuYXBweSBwYWNrYWdlIGlzIG5vdyBmaW5hbCBzbyBpdCBpcyBub3cgc2FmZQogIHRvIGNhbGwgYSB2aXJ0dWFsIG1ldGhvZCBpbnNpZGUgdGhlIGNvbnN0cnVjdG9yLgogIElzc3VlOiBDT01QUkVTUy0zNTQuCgpvIFppcEFyY2hpdmVJbnB1dFN0cmVhbSBhbmQgQ3Bpb0FyY2hpdmVJbnB1dFN0cmVhbSBjb3VsZCB0aHJvdwogIGV4Y2VwdGlvbnMgd2hvJ3MgbWVzc2FnZXMgY29udGFpbmVkIHBvdGVudGlhbGx5IGNvcnJ1cHQgZW50cnkgbmFtZXMKICByZWFkIGZyb20gYSBicm9rZW4gYXJjaGl2ZS4gVGhleSB3aWxsIG5vdyBzYW5pdGl6ZSB0aGUgbmFtZXMgYnkKICByZXBsYWNpbmcgdW5wcmludGFibGUgY2hhcmFjdGVycyBhbmQgcmVzdHJpY3RpbmcgdGhlIGxlbmd0aCB0byAyNTUKICBjaGFyYWN0ZXJzLgogIElzc3VlOiBDT01QUkVTUy0zNTEuCm8gQlppcDJDb21wcmVzc29yT3V0cHV0U3RyZWFtIG5vIGxvbmdlciB0cmllcyB0byBmaW5pc2ggdGhlIG91dHB1dAogIHN0cmVhbSBpbiBmaW5hbGl6ZS4gVGhpcyBpcyBhIGJyZWFraW5nIGNoYW5nZSBmb3IgY29kZSB0aGF0IHJlbGllZAogIG9uIHRoZSBmaW5hbGl6ZXIuCiAgSXNzdWU6IENPTVBSRVNTLTM1Ny4KCgpSZWxlYXNlIDEuMTEKLS0tLS0tLS0tLS0tCgpOZXcgZmVhdHVyZXM6Cm8gVGFyQXJjaGl2ZUlucHV0U3RyZWFtIG5vdyBzdXBwb3J0cyByZWFkaW5nIGdsb2JhbCBQQVggaGVhZGVycy4KICBJc3N1ZTogQ09NUFJFU1MtMzQ3LgpvIFRoZSBQQVggaGVhZGVycyBmb3Igc3BhcnNlIGVudHJpZXMgd3JpdHRlbiBieSBzdGFyIGFyZSBub3cKICBhcHBsaWVkLgogIElzc3VlOiBDT01QUkVTUy0zNDYuCm8gR05VIHNwYXJzZSBmaWxlcyB1c2luZyBvbmUgb2YgdGhlIFBBWCBmb3JtYXRzIGFyZSBub3cKICBkZXRlY3RlZCwgYnV0IGNhbm5vdCBiZSBleHRyYWN0ZWQuCiAgSXNzdWU6IENPTVBSRVNTLTM0NS4KbyBOZXcgbWV0aG9kIFNldmVuWkZpbGUuZ2V0RW50cmllcyBjYW4gYmUgdXNlZCB0byBsaXN0IHRoZQogIGNvbnRlbnRzIG9mIGEgN3ogYXJjaGl2ZS4KICBJc3N1ZTogQ09NUFJFU1MtMzQxLgpvIFdoZW4gdXNpbmcgWmlwNjRNb2RlLkFsd2F5cyBhbHNvIHVzZSBaSVA2NCBleHRlbnNpb25zIGluc2lkZQogIHRoZSBjZW50cmFsIGRpcmVjdG9yeS4KICBHaXRIdWIgUHVsbCBSZXF1ZXN0ICMxMCBUaGFua3MgdG8gTWF0dCBIb3ZleS4KbyBaaXBGaWxlLmdldFJhd0lucHV0U3RyZWFtKCkgaXMgbm93IHBhcnQgb2YgdGhlIHB1YmxpYyBBUEkKICBJc3N1ZTogQ09NUFJFU1MtMzIzLgpvIEFsbG93IGJ5dGUtZm9yLWJ5dGUgcmVwbGljYXRpb24gb2YgWmlwIGVudHJpZXMuCiAgR2l0SHViIFB1bGwgUmVxdWVzdCAjNi4gVGhhbmtzIHRvIEphc29uIHZhbiBaeWwuCm8gVGFyQXJjaGl2ZUVudHJ5J3MgcHJlc2VydmVMZWFkaW5nU2xhc2hlcyBpcyBub3cgYSBwcm9wZXJ0eSBhbmQgdXNlZAogIG9uIGxhdGVyIGNhbGxzIHRvIHNldE5hbWUsIHRvby4KICBUaGlzIGJlaGF2aW9yIGlzIGEgYnJlYWtpbmcgY2hhbmdlLgogIElzc3VlOiBDT01QUkVTUy0zMjguCm8gQWRkZWQgcmVhZC1vbmx5IHN1cHBvcnQgZm9yIGJ6aXAyIGNvbXByZXNzaW9uIHVzZWQgaW5zaWRlIG9mCiAgWklQIGFyY2hpdmVzLgogIEdpdEh1YiBQdWxsIFJlcXVlc3QgIzQuIFRoYW5rcyB0byBTw7ZyZW4gR2xpbW0uCgpGaXhlZCBCdWdzOgpvIEFyQXJjaGl2ZUlucHV0U3RyZWFtIGNhbiBub3cgcmVhZCBHTlUgZXh0ZW5kZWQgbmFtZXMgdGhhdCBhcmUKICB0ZXJtaW5hdGVkIHdpdGggYSBOVUwgYnl0ZSByYXRoZXIgdGhhbiBhIGxpbmVmZWVkLgogIElzc3VlOiBDT01QUkVTUy0zNDQuCm8gTmF0aXZlIE1lbW9yeSBMZWFrIGluIFNldmVuei1EZWZsYXRlRGVjb2Rlci4KICBJc3N1ZTogQ09NUFJFU1MtMzQzLiBUaGFua3MgdG8gUmVuZSBQcmVpc3NlbC4KbyBTZXZlblpGaWxlIHdpbGwgbm93IG9ubHkgdHJ5IHRvIGRyYWluIGFuIGVudHJ5J3MgY29udGVudCB3aGVuCiAgbW92aW5nIG9uIHRvIHRoZSBuZXh0IGVudHJ5IGlmIGRhdGEgaXMgcmVhZCBmcm9tIHRoZSBuZXh0CiAgZW50cnkuIFRoaXMgc2hvdWxkIGltcHJvdmUgcGVyZm9ybWFuY2UgZm9yIGFwcGxpY2F0aW9ucyB0aGF0CiAgdHJ5IHRvIHNraXAgb3ZlciBlbnRyaWVzLgogIElzc3VlOiBDT01QUkVTUy0zNDAuIFRoYW5rcyB0byBEYXdpZCBXZWlzcy4KbyBmaWxlIG5hbWVzIG9mIHRhciBhcmNoaXZlcyB1c2luZyB0aGUgeHN0YXIgZm9ybWF0IGFyZSBub3cKICBwYXJzZWQgcHJvcGVybHkuCiAgSXNzdWU6IENPTVBSRVNTLTMzNi4KbyBjaGVja3N1bXMgb2YgdGFycyB0aGF0IHBhZCB0aGUgY2hlY2tzdW0gZmllbGQgdG8gdGhlIGxlZnQgYXJlCiAgbm93IGNhbGN1bGF0ZWQgcHJvcGVybHkuCiAgSXNzdWU6IENPTVBSRVNTLTMzNS4KbyBBckFyY2hpdmVJbnB1dFN0cmVhbSBmYWlsZWQgdG8gcmVhZCBwYXN0IHRoZSBmaXJzdCBlbnRyeSB3aGVuCiAgQlNEIGxvbmcgbmFtZXMgaGF2ZSBiZWVuIHVzZWQuCiAgSXNzdWU6IENPTVBSRVNTLTMzNC4gVGhhbmtzIHRvIEplcmVteSBHdXN0aWUuCm8gQWRkZWQgYnVmZmVyaW5nIGZvciByYW5kb20gYWNjZXNzIHdoaWNoIHNwZWVkcyB1cCA3WiBzdXBwb3J0LgogIElzc3VlOiBDT01QUkVTUy0zMzMuIFRoYW5rcyB0byBEYXdpZCBXZWlzcy4KbyBUaGUgY2hlY2tzdW0gdmFsaWRhdGlvbiBvZiBUYXJhcmNoaXZlRW50cnkgaXMgbm93IGFzIHN0cmljdCBhcwogIHRoZSB2YWxpZGF0aW9uIG9mIEdOVSB0YXIsIHdoaWNoIGVsaW1pbmF0ZXMgYSBmZXcgY2FzZXMgb2YKICBmYWxzZSBwb3NpdGl2ZXMgb2YgQXJjaGl2ZVN0cmVhbUZhY3RvcnkuCiAgVGhpcyBiZWhhdmlvciBpcyBhIGJyZWFraW5nIGNoYW5nZSBzaW5jZSB0aGUgY2hlY2sgaGFzIGJlY29tZQogIG1vcmUgc3RyaWN0IGJ1dCBhbnkgYXJjaGl2ZSB0aGF0IGZhaWxzIHRoZSBjaGVja3N1bSB0ZXN0IG5vdwogIHdvdWxkIGFsc28gZmFpbCBpdCB3aGVuIGV4dHJhY3RlZCB3aXRoIG90aGVyIHRvb2xzIGFuZCBtdXN0IGJlCiAgY29uc2lkZXJlZCBhbiBpbnZhbGlkIGFyY2hpdmUuCiAgSXNzdWU6IENPTVBSRVNTLTMzMS4KbyBTbmFwcHlDb21wcmVzc29ySW5wdXRTdHJlYW0gYW5kCiAgRnJhbWVkU25hcHB5Q29tcHJlc3NvcklucHV0U3RyZWFtIHJldHVybmVkIDAgYXQgdGhlIGVuZCBvZiB0aGUKICBzdHJlYW0gdW5kZXIgY2VydGFpbiBjaXJjdW1zdGFuY2VzLgogIElzc3VlOiBDT01QUkVTUy0zMzIuCm8gQWRqdXN0ZWQgdW5pdCB0ZXN0IHRvIHVwZGF0ZXMgaW4gSmF2YTggYW5kIGxhdGVyIHRoYXQgY2hhbmdlCiAgdGhlIGxvZ2ljIG9mIFppcEVudHJ5I2dldFRpbWUuCiAgSXNzdWU6IENPTVBSRVNTLTMyNi4KbyBUYXJBcmNoaXZlT3V0cHV0U3RyZWFtIHdpbGwgbm93IHJlY29nbml6ZSBHTlUgbG9uZyBuYW1lIGFuZAogIGxpbmsgZW50cmllcyBldmVuIGlmIHRoZSBzcGVjaWFsIGVudHJ5IGhhcyBhIGRpZmZlcmVudCBuYW1lCiAgdGhhbiBHTlUgdGFyIHVzZXMgaXRzZWxmLiAgVGhpcyBzZWVtcyB0byBiZSB0aGUgY2FzZSBmb3IKICBhcmNoaXZlcyBjcmVhdGVkIGJ5IHN0YXIuCiAgSXNzdWU6IENPTVBSRVNTLTMyNC4KbyBBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gd2hlbiBJbmZvWklQIHR5cGUgNzg3NSBleHRyYQogIGZpZWxkcyBhcmUgcmVhZCBmcm9tIHRoZSBjZW50cmFsIGRpcmVjdG9yeS4KICBJc3N1ZTogQ09NUFJFU1MtMzIxLgoKUmVsZWFzZSAxLjEwCi0tLS0tLS0tLS0tLQoKUmVsZWFzZSAxLjEwIG1vdmVzIHRoZSBmb3JtZXIKb3JnLmFwYWNoZS5jb21tb25zLmNvbXByZXNzLmNvbXByZXNzb3JzLnouX2ludGVybmFsXyBwYWNrYWdlIHdoaWNoCmJyZWFrcyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBmb3IgY29kZSB3aGljaCB1c2VkIHRoZSBvbGQgcGFja2FnZS4KClRoaXMgYWxzbyBjaGFuZ2VzIHRoZSBzdXBlcmNsYXNzIG9mIFpDb21wcmVzc29ySW5wdXRTdHJlYW0gd2hpY2ggbWFrZXMKdGhpcyBjbGFzcyBiaW5hcnkgaW5jb21wYXRpYmxlIHdpdGggdGhlIG9uZSBvZiBDb21wcmVzcyAxLjkuICBDb2RlCnRoYXQgZXh0ZW5kcyBaQ29tcHJlc3NvcklucHV0U3RyZWFtIHdpbGwgbmVlZCB0byBiZSByZWNvbXBpbGVkIGluCm9yZGVyIHRvIHdvcmsgd2l0aCBDb21wcmVzcyAxLjEwLgoKTmV3IGZlYXR1cmVzOgpvIENvbXByZXNzb3JTdHJlYW1GYWN0b3J5IGNhbiBub3cgYXV0by1kZXRlY3QgREVGTEFURSBzdHJlYW1zCiAgd2l0aCBaTElCIGhlYWRlci4KICBJc3N1ZTogQ09NUFJFU1MtMzE2LiBUaGFua3MgdG8gTmljayBCdXJjaC4KbyBDb21wcmVzc29yU3RyZWFtRmFjdG9yeSBjYW4gbm93IGF1dG8tZGV0ZWN0IExaTUEgc3RyZWFtcy4KICBJc3N1ZTogQ09NUFJFU1MtMzEzLgpvIEFkZGVkIHN1cHBvcnQgZm9yIHBhcmFsbGVsIGNvbXByZXNzaW9uLiBUaGlzIGxvdy1sZXZlbCBBUEkgYWxsb3dzCiAgYSBjbGllbnQgdG8gYnVpbGQgYSB6aXAvamFyIGZpbGUgYnkgdXNpbmcgdGhlIGNsYXNzCiAgb3JnLmFwYWNoZS5jb21tb25zLmNvbXByZXNzLmFyY2hpdmVycy56aXAuUGFyYWxsZWxTY2F0dGVyWmlwQ3JlYXRvci4KCiAgWmlwIGRvY3VtZW50YXRpb24gdXBkYXRlZCB3aXRoIGZ1cnRoZXIgbm90ZXMgYWJvdXQgcGFyYWxsZWwgZmVhdHVyZXMuCgogIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhc3BlY3RzIG9mIGphciBjcmVhdGlvbiBuZWVkIHRvIGJlCiAgaGFuZGxlZCBieSBjbGllbnQgY29kZSBhbmQgaXMgbm90IHBhcnQgb2YgY29tbW9ucy1jb21wcmVzcyBmb3IgdGhpcwogIHJlbGVhc2UuCiAgSXNzdWU6IENPTVBSRVNTLTI5Ni4gVGhhbmtzIHRvIEtyaXN0aWFuIFJvc2Vudm9sZC4KbyBDdXQgb3ZlcmFsbCBvYmplY3QgaW5zdGFudGlhdGlvbiBpbiBoYWxmIGJ5IGNoYW5naW5nIGZpbGUKICBoZWFkZXIgZ2VuZXJhdGlvbiBhbGdvcml0aG0sIGZvciBhIDEwLTE1IHBlcmNlbnQgcGVyZm9ybWFuY2UKICBpbXByb3ZlbWVudC4KCiAgQWxzbyBleHRyYWN0ZWQgdHdvIHByaXZhdGUgbWV0aG9kcyBjcmVhdGVMb2NhbEZpbGVIZWFkZXIKICBhbmQgY3JlYXRlQ2VudHJhbEZpbGVIZWFkZXIgaW4gWmlwQXJjaGl2ZU91dHB1dFN0cmVhbS4KICBUaGVzZSBtYXkgaGF2ZSBzb21lIGludGVyZXN0aW5nIGFkZGl0aW9uYWwgdXNhZ2VzIGluIHRoZQogIG5lYXIgZnV0dXJlLiBUaGFua3MgdG8gS3Jpc3RpYW4gUm9zZW52b2xkLgpvIE5ldyBtZXRob2RzIGluIFppcEFyY2hpdmVPdXRwdXRTdHJlYW0gYW5kIFppcEZpbGUgYWxsb3dzCiAgZW50cmllcyB0byBiZSBjb3BpZWQgZnJvbSBvbmUgYXJjaGl2ZSB0byBhbm90aGVyIHdpdGhvdXQKICBoYXZpbmcgdG8gcmUtY29tcHJlc3MgdGhlbS4KICBJc3N1ZTogQ09NUFJFU1MtMjk1LiBUaGFua3MgdG8gS3Jpc3RpYW4gUm9zZW52b2xkLgoKRml4ZWQgQnVnczoKbyBUYXJBcmNoaXZlSW5wdXRTdHJlYW0gY2FuIG5vdyByZWFkIGVudHJpZXMgd2l0aCBncm91cCBvcgogIHVzZXIgaWRzID4gMHg4MDAwMDAwMC4KICBJc3N1ZTogQ09NUFJFU1MtMzE0LgpvIFRhckFyY2hpdmVPdXRwdXRTdHJlYW0gY2FuIG5vdyB3cml0ZSBlbnRyaWVzIHdpdGggZ3JvdXAgb3IKICB1c2VyIGlkcyA+IDB4ODAwMDAwMDAuCiAgSXNzdWU6IENPTVBSRVNTLTMxNS4KbyBUYXJBcmNoaXZlRW50cnkncyBjb25zdHJ1Y3RvciB3aXRoIGEgRmlsZSBhbmQgYSBTdHJpbmcgYXJnCiAgZGlkbid0IG5vcm1hbGl6ZSB0aGUgbmFtZS4KICBJc3N1ZTogQ09NUFJFU1MtMzEyLgpvIFppcEVuY29kaW5nSGVscGVyIG5vIGxvbmdlciByZWFkcyBzeXN0ZW0gcHJvcGVydGllcyBkaXJlY3RseQogIHRvIGRldGVybWluZSB0aGUgZGVmYXVsdCBjaGFyc2V0LgogIElzc3VlOiBDT01QUkVTUy0zMDguCm8gQlppcDJDb21wcmVzc29ySW5wdXRTdHJlYW0jcmVhZCB3b3VsZCByZXR1cm4gLTEgd2hlbiBhc2tlZCB0bwogIHJlYWQgMCBieXRlcy4KICBJc3N1ZTogQ09NUFJFU1MtMzA5LgpvIEFyY2hpdmVTdHJlYW1GYWN0b3J5IGZhaWxzIHRvIHBhc3Mgb24gdGhlIGVuY29kaW5nIHdoZW4gY3JlYXRpbmcKICBzb21lIHN0cmVhbXMuCiAgICAqIEFyakFyY2hpdmVJbnB1dFN0cmVhbQogICAgKiBDcGlvQXJjaGl2ZUlucHV0U3RyZWFtCiAgICAqIER1bXBBcmNoaXZlSW5wdXRTdHJlYW0KICAgICogSmFyQXJjaGl2ZUlucHV0U3RyZWFtCiAgICAqIFRhckFyY2hpdmVJbnB1dFN0cmVhbQogICAgKiBKYXJBcmNoaXZlT3V0cHV0U3RyZWFtCiAgSXNzdWU6IENPTVBSRVNTLTMwNi4KbyBSZXN0b3JlIGltbXV0YWJpbGl0eS90aHJlYWQtc2FmZXR5IHRvIEFyY2hpdmVTdHJlYW1GYWN0b3J5LgogIFRoZSBjbGFzcyBpcyBub3cgaW1tdXRhYmxlIHByb3ZpZGVkIHRoYXQgdGhlIG1ldGhvZCBzZXRFbnRyeUVuY29kaW5nCiAgaXMgbm90IHVzZWQuIFRoZSBjbGFzcyBpcyB0aHJlYWQtc2FmZS4KICBJc3N1ZTogQ09NUFJFU1MtMzAyLgpvIFJlc3RvcmUgaW1tdXRhYmlsaXR5L3RocmVhZC1zYWZldHkgdG8gQ29tcHJlc3NvclN0cmVhbUZhY3RvcnkuCiAgVGhlIGNsYXNzIGlzIG5vdyBpbW11dGFibGUgcHJvdmlkZWQgdGhhdCB0aGUgbWV0aG9kCiAgc2V0RGVjb21wcmVzc0NvbmNhdGVuYXRlZCBpcyBub3QgdXNlZC4gIFRoZSBjbGFzcyBpcyB0aHJlYWQtc2FmZS4KICBJc3N1ZTogQ09NUFJFU1MtMzAzLgpvIFppcEZpbGUgbG9ncyBhIHdhcm5pbmcgaW4gaXRzIGZpbmFsaXplciB3aGVuIGl0cyBjb25zdHJ1Y3RvcgogIGhhcyB0aHJvd24gYW4gZXhjZXB0aW9uIHJlYWRpbmcgdGhlIGZpbGUgLSBmb3IgZXhhbXBsZSBpZiB0aGUKICBmaWxlIGRvZXNuJ3QgZXhpc3QuCiAgSXNzdWU6IENPTVBSRVNTLTI5Ny4KbyBJbXByb3ZlZCBlcnJvciBtZXNzYWdlIHdoZW4gdGFyIGVuY291bnRlcnMgYSBncm91cElkIHRoYXQgaXMKICB0b28gYmlnIHRvIHdyaXRlIHdpdGhvdXQgdXNpbmcgdGhlIFNUQVIgb3IgUE9TSVggZm9ybWF0LgogIElzc3VlOiBDT01QUkVTUy0yOTAuIFRoYW5rcyB0byBLcmlzdGlhbiBSb3NlbnZvbGQuCm8gU2V2ZW5aRmlsZSBub3cgdGhyb3dzIHRoZSBzcGVjaWZpYyBQYXNzd29yZFJlcXVpcmVkRXhjZXB0aW9uCiAgd2hlbiBpdCBlbmNvdW50ZXJzIGFuIGVuY3J5cHRlZCBzdHJlYW0gYnV0IG5vIHBhc3N3b3JkIGhhcwogIGJlZW4gc3BlY2lmaWVkLgogIElzc3VlOiBDT01QUkVTUy0yOTguCgpDaGFuZ2VzOgpvIE1vdmVkIHRoZSBwYWNrYWdlCiAgb3JnLmFwYWNoZS5jb21tb25zLmNvbXByZXNzLmNvbXByZXNzb3JzLnouX2ludGVybmFsXyB0bwogIG9yZy5hcGFjaGUuY29tbW9ucy5jb21wcmVzcy5jb21wcmVzc29ycy5sencgYW5kIG1hZGUgaXQgcGFydAogIG9mIHRoZSBBUEkgdGhhdCBpcyBvZmZpY2lhbGx5IHN1cHBvcnRlZC4gIFRoaXMgd2lsbCBicmVhawogIGV4aXN0aW5nIGNvZGUgdGhhdCB1c2VzIHRoZSBvbGQgcGFja2FnZS4gVGhhbmtzIHRvIERhbWphbiBKb3Zhbm92aWMuCgpGb3IgY29tcGxldGUgaW5mb3JtYXRpb24gb24gQXBhY2hlIENvbW1vbnMgQ29tcHJlc3MsIGluY2x1ZGluZyBpbnN0cnVjdGlvbnMKb24gaG93IHRvIHN1Ym1pdCBidWcgcmVwb3J0cywgcGF0Y2hlcywgb3Igc3VnZ2VzdGlvbnMgZm9yIGltcHJvdmVtZW50LApzZWUgdGhlIEFwYWNoZSBDb21tb25zIENvbXByZXNzIHdlYnNpdGU6CgpodHRwczovL2NvbW1vbnMuYXBhY2hlLm9yZy9jb21wcmVzcy8KCgpSZWxlYXNlIDEuOQotLS0tLS0tLS0tLQoKTmV3IGZlYXR1cmVzOgpvIEFkZGVkIHN1cHBvcnQgZm9yIERFRkxBVEUgc3RyZWFtcyB3aXRob3V0IGFueSBnemlwIGZyYW1pbmcuCiAgSXNzdWU6IENPTVBSRVNTLTI2My4KICBUaGFua3MgdG8gTWF0dGhpYXMgU3RldmVucy4KCkZpeGVkIEJ1Z3M6Cm8gV2hlbiByZWFkaW5nIDd6IGZpbGVzIHVua25vd24gZmlsZSBwcm9wZXJ0aWVzIGFuZCBwcm9wZXJ0aWVzIG9mIHR5cGUKICBrRHVtbXkgYXJlIG5vdyBpZ25vcmVkLgogIElzc3VlOiBDT01QUkVTUy0yODcuCm8gRXhwYW5kaW5nIDd6IGFyY2hpdmVzIHVzaW5nIExaTUEgY29tcHJlc3Npb24gY291bGQgY2F1c2UgYW4KICBFT0ZFeGNlcHRpb24uCiAgSXNzdWU6IENPTVBSRVNTLTI4Ni4gCm8gTG9uZy1OYW1lIGFuZCAtbGluayBvciBQQVgtaGVhZGVyIGVudHJpZXMgaW4gVEFSIGFyY2hpdmVzIGFsd2F5cyBoYWQKICB0aGUgY3VycmVudCB0aW1lIGFzIGxhc3QgbW9kZmljYXRpb24gdGltZSwgY3JlYXRpbmcgYXJjaGl2ZXMgdGhhdAogIGFyZSBkaWZmZXJlbnQgYXQgdGhlIGJ5dGUgbGV2ZWwgZWFjaCB0aW1lIGFuIGFyY2hpdmUgd2FzIGJ1aWx0LgogIElzc3VlOiBDT01QUkVTUy0yODkuCiAgVGhhbmtzIHRvIEJvYiBSb2JlcnRzb24uCgpDaGFuZ2VzOgpvIENoZWNraW5nIGZvciBYWiBmb3IgSmF2YSBtYXkgYmUgZXhwZW5zaXZlLiAgVGhlIHJlc3VsdCB3aWxsIG5vdyBiZQogIGNhY2hlZCBvdXRzaWRlIG9mIGFuIE9TR2kgZW52aXJvbm1lbnQuICBZb3UgY2FuIHVzZSB0aGUgbmV3CiAgWFpVdGlscyNzZXRDYWNoZVhaQXZhaWxhYmlsaXR5IHRvIG92ZXJycmlkZSB0aGlzIGRlZmF1bHQgYmVoYXZpb3IuCiAgSXNzdWU6IENPTVBSRVNTLTI4NS4KClJlbGVhc2UgMS44LjEKLS0tLS0tLS0tLS0tLQoKTmV3IGZlYXR1cmVzOgpvIENPTVBSRVNTLTI3MjogIENvbXByZXNzb3JTdHJlYW1GYWN0b3J5IGNhbiBub3cgYXV0by1kZXRlY3QgVW5peCBjb21wcmVzcwogICAgICAgICAgICAgICAgICgiLloiKSBzdHJlYW1zLiAKCkZpeGVkIEJ1Z3M6Cm8gQ09NUFJFU1MtMjcwOiAgVGhlIHNuYXBweSwgYXIgYW5kIHRhciBpbnB1dHN0cmVhbXMgbWlnaHQgZmFpbCB0byByZWFkIGZyb20gYQogICAgICAgICAgICAgICAgIG5vbi1idWZmZXJlZCBzdHJlYW0gaW4gY2VydGFpbiBjYXNlcy4gCm8gQ09NUFJFU1MtMjc3OiAgSU9VdGlscyNza2lwIG1pZ2h0IHNraXAgZmV3ZXIgYnl0ZXMgdGhhbiByZXF1ZXN0ZWQgZXZlbiB0aG91Z2gKICAgICAgICAgICAgICAgICBtb3JlIGNvdWxkIGJlIHJlYWQgZnJvbSB0aGUgc3RyZWFtLiAKbyBDT01QUkVTUy0yNzY6ICBBcmNoaXZlU3RyZWFtcyBub3cgdmFsaWRhdGUgdGhlcmUgaXMgYSBjdXJyZW50IGVudHJ5IGJlZm9yZQogICAgICAgICAgICAgICAgIHJlYWRpbmcgb3Igd3JpdGluZyBlbnRyeSBkYXRhLiAKbyBBcmpBcmNoaXZlSW5wdXRTdHJlYW0jY2FuUmVhZEVudHJ5RGF0YSB0ZXN0ZWQgdGhlIGN1cnJlbnQKICAgICAgICAgICAgICAgICBlbnRyeSBvZiB0aGUgc3RyZWFtIHJhdGhlciB0aGFuIGl0cyBhcmd1bWVudC4gCm8gQ09NUFJFU1MtMjc0OiAgQ2hhbmdlU2V0I2RlbGV0ZSBhbmQgZGVsZXRlRGlyIG5vdyBwcm9wZXJseSBkZWFsIHdpdGggdW5uYW1lZAogICAgICAgICAgICAgICAgIGVudHJpZXMuIApvIENPTVBSRVNTLTI3MzogIEFkZGVkIGEgZmV3IG51bGwgY2hlY2tzIHRvIGltcHJvdmUgcm9idXN0bmVzcy4gCm8gQ09NUFJFU1MtMjc4OiAgVGFyQXJjaGl2ZUlucHV0U3RyZWFtIGZhaWxlZCB0byByZWFkIGFyY2hpdmVzIHdpdGggZW1wdHkKICAgICAgICAgICAgICAgICBnaWQvdWlkIGZpZWxkcy4gCm8gQ09NUFJFU1MtMjc5OiAgVGFyQXJjaGl2ZUlucHV0U3RyZWFtIG5vdyBhZ2FpbiB0aHJvd3MgYW4gZXhjZXB0aW9uIHdoZW4gaXQKICAgICAgICAgICAgICAgICBlbmNvdW50ZXJzIGEgdHJ1bmNhdGVkIGFyY2hpdmUgd2hpbGUgcmVhZGluZyBmcm9tIHRoZSBsYXN0CiAgICAgICAgICAgICAgICAgZW50cnkuIApvIENPTVBSRVNTLTI4MDogIEFkYXB0ZWQgVGFyQXJjaGl2ZUlucHV0U3RyZWFtI3NraXAgdG8gdGhlIG1vZGlmaWVkCiAgICAgICAgICAgICAgICAgSU9VdGlscyNza2lwIG1ldGhvZC4gVGhhbmtzIHRvIEJFTFVHQSBCRUhSLiAKCkNoYW5nZXM6Cm8gVGhlIGRlcGVuZGVuY3kgb24gb3JnLnR1a2Fhbmk6eHogaXMgbm93IG1hcmtlZCBhcyBvcHRpb25hbC4gCgpSZWxlYXNlIDEuOAotLS0tLS0tLS0tLQoKTmV3IGZlYXR1cmVzOgpvIEd6aXBDb21wcmVzc29ySW5wdXRTdHJlYW0gbm93IHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgc2FtZQogIG1ldGFkYXRhIHRoYXQgY2FuIGJlIHByb3ZpZGVkIHZpYSBHemlwUGFyYW1ldGVycyB3aGVuIHdyaXRpbmcKICBhIGd6aXAgc3RyZWFtLgogIElzc3VlOiBDT01QUkVTUy0yNjAuIApvIFNldmVuWk91dHB1dEZpbGUgbm93IHN1cHBvcnRzIGNoYWluaW5nIG11bHRpcGxlCiAgY29tcHJlc3Npb24vZW5jcnlwdGlvbi9maWx0ZXIgbWV0aG9kcyBhbmQgcGFzc2luZyBvcHRpb25zIHRvCiAgdGhlIG1ldGhvZHMuCiAgSXNzdWU6IENPTVBSRVNTLTI2Ni4gCm8gVGhlIChjb21wcmVzc2lvbikgbWV0aG9kKHMpIGNhbiBub3cgYmUgc3BlY2lmaWVkIHBlciBlbnRyeSBpbgogIFNldmVuWk91dHB1dEZpbGUuCiAgSXNzdWU6IENPTVBSRVNTLTI2MS4gCm8gU2V2ZW5aQXJjaGl2ZUVudHJ5ICJrbm93cyIgd2hpY2ggbWV0aG9kKHMpIGhhdmUgYmVlbiB1c2VkIHRvCiAgd3JpdGUgaXQgdG8gdGhlIGFyY2hpdmUuCiAgSXNzdWU6IENPTVBSRVNTLTI1OC4gCm8gVGhlIDd6IHBhY2thZ2Ugbm93IHN1cHBvcnRzIHRoZSBkZWx0YSBmaWx0ZXIgYXMgbWV0aG9kLiAKbyBUaGUgN3ogcGFja2FnZSBub3cgc3VwcG9ydHMgQkNKIGZpbHRlcnMgZm9yIHNldmVyYWwgcGxhdGZvcm1zLgogIFlvdSB3aWxsIG5lZWQgYSB2ZXJzaW9uID49IDEuNSBvZiBYWiBmb3IgSmF2YSB0byByZWFkIGFyY2hpdmVzCiAgdXNpbmcgQkNKLCB0aG91Z2guCiAgSXNzdWU6IENPTVBSRVNTLTI1Ny4gCgpGaXhlZCBCdWdzOgpvIEJaaXAyQ29tcHJlc3NvcklucHV0U3RyZWFtIHJlYWQgZmV3ZXIgYnl0ZXMgdGhhbiBwb3NzaWJsZSBmcm9tCiAgYSB0cnVuY2F0ZWQgc3RyZWFtLgogIElzc3VlOiBDT01QUkVTUy0yNTMuIApvIFNldmVuWkZpbGUgZmFpbGVkIGNsYWltaW5nIHRoZSBkaWN0aW9uYXJ5IHdhcyB0b28gbGFyZ2Ugd2hlbgogIGFyY2hpdmVzIHVzZWQgTFpNQSBjb21wcmVzc2lvbiBmb3IgaGVhZGVycyBhbmQgY29udGVudCBhbmQKICBjZXJ0YWluIG5vbi1kZWZhdWx0IGRpY3Rpb25hcnkgc2l6ZXMuCiAgSXNzdWU6IENPTVBSRVNTLTI1My4gCm8gQ29tcHJlc3NvclN0cmVhbUZhY3RvcnkuY3JlYXRlQ29tcHJlc3NvcklucHV0U3RyZWFtIHdpdGgKICBleHBsaWNpdCBjb21wcmVzc2lvbiBkaWQgbm90IGhvbm9yIGRlY29tcHJlc3NDb25jYXRlbmF0ZWQKICBJc3N1ZTogQ09NUFJFU1MtMjU5LiAKbyBUYXJBcmNoaXZlSW5wdXRTdHJlYW0gd2lsbCBub3cgcmVhZCBhcmNoaXZlcyBjcmVhdGVkIGJ5IHRhcgogIGltcGxlbWVudGF0aW9ucyB0aGF0IGVuY29kZSBiaWcgbnVtYmVycyBieSBub3QgYWRkaW5nIGEKICB0cmFpbGluZyBOVUwuCiAgSXNzdWU6IENPTVBSRVNTLTI2Mi4gCm8gWmlwQXJjaGl2ZUlucHV0U3RyZWFtIHdvdWxkIHJldHVybiBOVUwgYnl0ZXMgZm9yIHRoZSBmaXJzdCA1MTIKICBieXRlcyBvZiBhIFNUT1JFRCBlbnRyeSBpZiBpdCB3YXMgdGhlIHZlcnkgZmlyc3QgZW50cnkgb2YgdGhlCiAgYXJjaGl2ZS4KICBJc3N1ZTogQ09NUFJFU1MtMjY0LiAKbyBXaGVuIHdyaXRpbmcgUEFYL1BPU0lYIGhlYWRlcnMgZm9yIFRBUiBlbnRyaWVzIHdpdGgKICBiYWNrc2xhc2hlcyBvciBjZXJ0YWluIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGluIHRoZWlyIG5hbWUKICBUYXJBcmNoaXZlT3V0cHV0U3RyZWFtIGNvdWxkIGZhaWwuCiAgSXNzdWU6IENPTVBSRVNTLTI2NS4gCm8gQXJjaGl2ZVN0cmVhbUZhY3Rvcnkgbm93IHRocm93cyBhIFN0cmVhbWluZ05vdFN1cHBvcnRlZCAtIGEKICBuZXcgc3ViY2xhc3Mgb2YgQXJjaGl2ZUV4Y2VwdGlvbiAtIGlmIGl0IGlzIGFza2VkIHRvIHJlYWQgZnJvbQogIG9yIHdyaXRlIHRvIGEgc3RyZWFtIGFuZCBDb21tb25zIENvbXByZXNzIGRvZXNuJ3Qgc3VwcG9ydAogIHN0cmVhbWluZyBmb3IgdGhlIGZvcm1hdC4gIFRoaXMgY3VycmVudGx5IG9ubHkgYXBwbGllcyB0byB0aGUKICA3eiBmb3JtYXQuCiAgSXNzdWU6IENPTVBSRVNTLTI2Ny4gCgpSZWxlYXNlIDEuNwotLS0tLS0tLS0tLQoKTmV3IGZlYXR1cmVzOgpvIFJlYWQtT25seSBzdXBwb3J0IGZvciBTbmFwcHkgY29tcHJlc3Npb24uCiAgSXNzdWU6IENPTVBSRVNTLTE0Ny4gVGhhbmtzIHRvIEJFTFVHQSBCRUhSLgpvIFJlYWQtT25seSBzdXBwb3J0IGZvciAuWiBjb21wcmVzc2VkIGZpbGVzLgogIElzc3VlOiBDT01QUkVTUy0yNDMuIFRoYW5rcyB0byBEYW1qYW4gSm92YW5vdmljLgpvIFppcEZpbGUgYW5kIFppcEFyY2hpdmVJbnB1dFN0cmVhbSBub3cgc3VwcG9ydCByZWFkaW5nIGVudHJpZXMKICBjb21wcmVzc2VkIHVzaW5nIHRoZSBTSFJJTktJTkcgbWV0aG9kLiBUaGFua3MgdG8gRGFtamFuIEpvdmFub3ZpYy4KbyBHemlwQ29tcHJlc3Nvck91dHB1dFN0cmVhbSBub3cgc3VwcG9ydHMgc2V0dGluZyB0aGUgY29tcHJlc3Npb24KICBsZXZlbCBhbmQgdGhlIGhlYWRlciBtZXRhZGF0YSAoZmlsZW5hbWUsIGNvbW1lbnQsIG1vZGlmaWNhdGlvbiB0aW1lLAogIG9wZXJhdGluZyBzeXN0ZW0gYW5kIGV4dHJhIGZsYWdzKQogIElzc3VlOiBDT01QUkVTUy0yNTAuIFRoYW5rcyB0byBFbW1hbnVlbCBCb3VyZy4KbyBaaXBGaWxlIGFuZCBaaXBBcmNoaXZlSW5wdXRTdHJlYW0gbm93IHN1cHBvcnQgcmVhZGluZyBlbnRyaWVzCiAgY29tcHJlc3NlZCB1c2luZyB0aGUgSU1QTE9ERSBtZXRob2QuCiAgSXNzdWU6IENPTVBSRVNTLTExNS4gVGhhbmtzIHRvIEVtbWFudWVsIEJvdXJnLgpvIFppcEZpbGUgYW5kIHRoZSA3eiBmaWxlIGNsYXNzZXMgbm93IGltcGxlbWVudCBDbG9zZWFibGUgYW5kIGNhbiBiZQogIHVzZWQgaW4gdHJ5LXdpdGgtcmVzb3VyY2VzIGNvbnN0cnVjdHMuCgpGaXhlZCBCdWdzOgpvIFNldmVuWk91dHB1dEZpbGUjY2xvc2VBcmNoaXZlRW50cnkgdGhyb3dzIGFuIGV4Y2VwdGlvbiB3aGVuIHVzaW5nCiAgTFpNQTIgY29tcHJlc3Npb24gb24gSmF2YTguICBJc3N1ZTogQ09NUFJFU1MtMjQxLgpvIDd6IHJlYWRpbmcgb2YgYmlnIDY0Yml0IHZhbHVlcyBjb3VsZCBiZSB3cm9uZy4KICBJc3N1ZTogQ09NUFJFU1MtMjQ0LiBUaGFua3MgdG8gTmljbyBLcnViZXIuCm8gVGFyQXJjaGl2ZUlucHV0U3RyZWFtIGNvdWxkIGZhaWwgdG8gcmVhZCBhbiBhcmNoaXZlIGNvbXBsZXRlbHkuCiAgSXNzdWU6IENPTVBSRVNTLTI0NS4KbyBUaGUgdGltZS1zZXR0ZXJzIGluIFg1NDU1X0V4dGVuZGVkVGltZXN0YW1wIG5vdyBzZXQgdGhlCiAgY29ycmVzcG9uZGluZyBmbGFncyBleHBsaWNpdGx5IC0gaS5lLiB0aGV5IHNldCB0aGUgYml0IGlmIHRoZSB2YWx1cwogIGlzIG5vdC1udWxsIGFuZCByZXNldCBpdCBvdGhlcndpc2UuICBUaGlzIG1heSBjYXVzZQogIGluY29tcGF0aWJpbGl0aWVzIGlmIHlvdSB1c2Ugc2V0RmxhZ3MgdG8gdW5zZXQgYSBiaXQgYW5kIGxhdGVyIHNldAogIHRoZSB0aW1lIHRvIGEgbm9uLW51bGwgdmFsdWUgLSB0aGUgZmxhZyB3aWxsIG5vdyBiZSBzZXQuCiAgSXNzdWU6IENPTVBSRVNTLTI0Mi4KbyBTZXZlblpPdXRwdXRGaWxlIHdvdWxkIGNyZWF0ZSBpbnZhbGlkIGFyY2hpdmVzIGlmIG1vcmUgdGhhbiBzaXgKICBlbXB0eSBmaWxlcyBvciBkaXJlY3RvcmllcyB3ZXJlIGluY2x1ZGVkLiAgSXNzdWU6IENPTVBSRVNTLTI1Mi4KClJlbGVhc2UgMS42Ci0tLS0tLS0tLS0tCgpWZXJzaW9uIDEuNiBpbnRyb2R1Y2VzIGNoYW5nZXMgdG8gdGhlIGludGVybmFsIEFQSSBvZiB0aGUgdGFyIHBhY2thZ2UgdGhhdCAKYnJlYWsgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgaW4gdGhlIGZvbGxvd2luZyByYXJlIGNhc2VzLiAgVGhpcyB2ZXJzaW9uIApyZW1vdmVzIHRoZSBwYWNrYWdlIHByaXZhdGUgVGFyQnVmZmVyIGNsYXNzIGFsb25nIHdpdGggdGhlIHByb3RlY3RlZCAiYnVmZmVyIiAKbWVtYmVycyBpbiBUYXJBcmNoaXZlSW5wdXRTdHJlYW0gYW5kIFRhckFyY2hpdmVPdXRwdXRTdHJlYW0uICBUaGlzIGNoYW5nZSB3aWxsIApvbmx5IGFmZmVjdCB5b3UgaWYgeW91IGhhdmUgY3JlYXRlZCBhIHN1YmNsYXNzIG9mIG9uZSBvZiB0aGUgc3RyZWFtIGNsYXNzZXMgCmFuZCBhY2Nlc3NlZCB0aGUgYnVmZmVyIG1lbWJlciBvciBkaXJlY3RseSB1c2VkIHRoZSBUYXJCdWZmZXIgY2xhc3MuCgpDaGFuZ2VzIGluIHRoaXMgdmVyc2lvbiBpbmNsdWRlOgoKTmV3IGZlYXR1cmVzOgpvIEFkZGVkIHN1cHBvcnQgZm9yIDd6IGFyY2hpdmVzLiAgTW9zdCBjb21wcmVzc2lvbiBhbGdvcml0aG1zCiAgY2FuIGJlIHJlYWQgYW5kIHdyaXR0ZW4sIExaTUEgYW5kIGVuY3J5cHRpb24gYXJlIG9ubHkKICBzdXBwb3J0ZWQgd2hlbiByZWFkaW5nLiAgSXNzdWU6IENPTVBSRVNTLTU0LiBUaGFua3MgdG8gRGFtamFuIEpvdmFub3ZpYy4gCm8gQWRkZWQgcmVhZC1vbmx5IHN1cHBvcnQgZm9yIEFSSiBhcmNoaXZlcyB0aGF0IGRvbid0IHVzZQogIGNvbXByZXNzaW9uLiAgSXNzdWU6IENPTVBSRVNTLTIyNi4gVGhhbmtzIHRvIERhbWphbiBKb3Zhbm92aWMuIApvIER1bXBBcmNoaXZlSW5wdXRTdHJlYW0gbm93IHN1cHBvcnRzIGFuIGVuY29kaW5nIHBhcmFtZXRlciB0aGF0CiAgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUgZW5jb2Rpbmcgb2YgZmlsZSBuYW1lcy4gCm8gVGhlIENQSU8gc3RyZWFtcyBub3cgc3VwcG9ydCBhbiBlbmNvZGluZyBwYXJhbWV0ZXIgdGhhdCBjYW4gYmUKICB1c2VkIHRvIHNwZWNpZnkgdGhlIGVuY29kaW5nIG9mIGZpbGUgbmFtZXMuIApvIFJlYWQtb25seSBzdXBwb3J0IGZvciBMWk1BIHN0YW5kYWxvbmUgY29tcHJlc3Npb24gaGFzIGJlZW4gYWRkZWQuCiAgSXNzdWU6IENPTVBSRVNTLTExMS4KCkZpeGVkIEJ1Z3M6Cm8gVGFyQnVmZmVyLnRyeVRvQ29uc3VtZVNlY29uZEVPRlJlY29yZCBjb3VsZCB0aHJvdyBhCiAgTnVsbFBvaW50ZXJFeGNlcHRpb24gIElzc3VlOiBDT01QUkVTUy0yMjMuIFRoYW5rcyB0byBKZXJlbXkgR3VzdGllLiAKbyBQYXJzaW5nIG9mIHppcDY0IGV4dHJhIGZpZWxkcyBoYXMgYmVjb21lIG1vcmUgbGVuaWVudCBpbiBvcmRlcgogIHRvIGJlIGFibGUgdG8gcmVhZCBhcmNoaXZlcyBjcmVhdGVkIGJ5IERvdE5ldFppcCBhbmQgbWF5YmUKICBvdGhlciBhcmNoaXZlcnMgYXMgd2VsbC4gIElzc3VlOiBDT01QUkVTUy0yMjguIApvIFRBUiB3aWxsIG5vdyBwcm9wZXJseSByZWFkIHRoZSBuYW1lcyBvZiBzeW1ib2xpYyBsaW5rcyB3aXRoCiAgbG9uZyBuYW1lcyB0aGF0IHVzZSB0aGUgR05VIHZhcmlhbnQgdG8gc3BlY2lmeSB0aGUgbG9uZyBmaWxlCiAgbmFtZS4gIElzc3VlOiBDT01QUkVTUy0yMjkuIFRoYW5rcyB0byBDaHJpc3RvcGggR3lzaW4uIApvIFppcEZpbGUjZ2V0SW5wdXRTdHJlYW0gY291bGQgcmV0dXJuIG51bGwgaWYgdGhlIGFyY2hpdmUKICBjb250YWluZWQgZHVwbGljYXRlIGVudHJpZXMuCiAgVGhlIGNsYXNzIG5vdyBhbHNvIHByb3ZpZGVzIHR3byBuZXcgbWV0aG9kcyB0byBvYnRhaW4gYWxsCiAgZW50cmllcyBvZiBhIGdpdmVuIG5hbWUgcmF0aGVyIHRoYW4ganVzdCB0aGUgZmlyc3Qgb25lLgogIElzc3VlOiBDT01QUkVTUy0yMjcuIApvIENwaW9BcmNoaXZlSW5wdXRTdHJlYW0gZmFpbGVkIHRvIHJlYWQgYXJjaGl2ZXMgY3JlYXRlZCBieQogIFJlZGxpbmUgUlBNLiAgSXNzdWU6IENPTVBSRVNTLTIzNi4gVGhhbmtzIHRvIEFuZHJldyBEdWZmeS4gCm8gVGFyQXJjaGl2ZU91dHB1dFN0cmVhbSBub3cgcHJvcGVybHkgaGFuZGxlcyBsaW5rIG5hbWVzIHRoYXQKICBhcmUgdG9vIGxvbmcgdG8gZml0IGludG8gYSB0cmFkaXRpb25hbCBUQVIgaGVhZGVyLiAgSXNzdWU6CiAgQ09NUFJFU1MtMjM3LiBUaGFua3MgdG8gRW1tYW51ZWwgQm91cmcuCm8gVGhlIGF1dG8tZGV0ZWN0aW5nIGNyZWF0ZSpJbnB1dFN0cmVhbSBtZXRob2RzIG9mIEFyY2hpdmUgYW5kCiAgQ29tcHJlc3NvclN0cmVhbUZhY3RvcnkgY291bGQgZmFpbCB0byBkZXRlY3QgdGhlIGZvcm1hdCBvZgogIGJsb2NraW5nIGlucHV0IHN0cmVhbXMuICBJc3N1ZTogQ09NUFJFU1MtMjM5LiAKCkNoYW5nZXM6Cm8gUmVhZGFiaWx0eSBwYXRjaCB0byBUYXJBcmNoaXZlSW5wdXRTdHJlYW0uICBJc3N1ZToKICBDT01QUkVTUy0yMzIuIFRoYW5rcyB0byBCRUxVR0EgQkVIUi4KbyBQZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMgdG8gVGFyQXJjaGl2ZUlucHV0U3RyZWFtLCBpbgogIHBhcnRpY3VsYXIgdG8gdGhlIHNraXAgbWV0aG9kLiAgSXNzdWU6IENPTVBSRVNTLTIzNC4gVGhhbmtzIHRvCiAgQkVMVUdBIEJFSFIuIAoKUmVsZWFzZSAxLjUKLS0tLS0tLS0tLS0KCk5ldyBmZWF0dXJlczoKCm8gQ29tcHJlc3NvclN0cmVhbUZhY3RvcnkgaGFzIGFuIG9wdGlvbiB0byBjcmVhdGUgZGVjb21wcmVzc2luZwogIHN0cmVhbXMgdGhhdCBkZWNvbXByZXNzIHRoZSBmdWxsIGlucHV0IGZvciBmb3JtYXRzIHRoYXQgc3VwcG9ydAogIG11bHRpcGxlIGNvbmNhdGVuYXRlZCBzdHJlYW1zLgogIElzc3VlOiBDT01QUkVTUy0yMjAuCgpGaXhlZCBCdWdzOgoKbyBUeXBvIGluIENvbXByZXNzb3JTdHJlYW1GYWN0b3J5IEphdmFkb2MKICBJc3N1ZTogQ09NUFJFU1MtMjE4LgogIFRoYW5rcyB0byBHaWxpLgpvIEFyY2hpdmVTdHJlYW1GYWN0b3J5J3MgdGFyIHN0cmVhbSBkZXRlY3Rpb24gY3JlYXRlZCBmYWxzZSBwb3NpdGl2ZXMKICBmb3IgQUlGRiBmaWxlcy4KICBJc3N1ZTogQ09NUFJFU1MtMTkxLgogIFRoYW5rcyB0byBKdWtrYSBaaXR0aW5nLgpvIFhaIGZvciBKYXZhIGRpZG4ndCBwcm92aWRlIGFuIE9TR2kgYnVuZGxlLiAgQ29tcHJlc3MnIGRlcGVuZGVuY3kgb24KICBpdCBoYXMgbm93IGJlZW4gbWFya2VkIG9wdGlvbmFsIHNvIENvbXByZXNzIGl0c2VsZiBjYW4gc3RpbGwgYmUgdXNlZAogIGluIGFuIE9TR2kgY29udGV4dC4KICBJc3N1ZTogQ09NUFJFU1MtMTk5LgogIFRoYW5rcyB0byBKdWtrYSBaaXR0aW5nLgpvIFdoZW4gc3BlY2lmeWluZyB0aGUgZW5jb2RpbmcgZXhwbGljaXRseSBUYXJBcmNoaXZlT3V0cHV0U3RyZWFtIHdvdWxkCiAgd3JpdGUgdW5yZWFkYWJsZSBuYW1lcyBpbiBHTlUgbW9kZSBvciBldmVuIGNhdXNlIGVycm9ycyBpbiBQT1NJWAogIG1vZGUgZm9yIGZpbGUgbmFtZXMgbG9uZ2VyIHRoYW4gNjYgY2hhcmFjdGVycy4KICBJc3N1ZTogQ09NUFJFU1MtMjAwLgogIFRoYW5rcyB0byBDaHJpc3RpYW4gU2NobGljaHRoZXJsZS4KbyBXcml0aW5nIFRBUiBQQVggaGVhZGVycyBmYWlsZWQgaWYgdGhlIGdlbmVyYXRlZCBlbnRyeSBuYW1lIGVuZGVkCiAgd2l0aCBhICIvIi4KICBJc3N1ZTogQ09NUFJFU1MtMjAzLgpvIFppcEFyY2hpdmVJbnB1dFN0cmVhbSBzb21ldGltZXMgZmFpbGVkIHRvIHByb3ZpZGUgaW5wdXQgdG8gdGhlCiAgSW5mbGF0ZXIgd2hlbiBpdCBuZWVkZWQgaXQsIGxlYWRpbmcgdG8gcmVhZHMgcmV0dXJuaW5nIDAuCiAgSXNzdWU6IENPTVBSRVNTLTE4OS4KICBUaGFua3MgdG8gRGFuaWVsIExvd2UuCm8gVGFyQXJjaGl2ZUlucHV0U3RyZWFtIGlnbm9yZWQgdGhlIGVuY29kaW5nIGZvciBHTlUgbG9uZyBuYW1lCiAgZW50cmllcy4KICBJc3N1ZTogQ09NUFJFU1MtMjEyLgpvIFRhckFyY2hpdmVJbnB1dFN0cmVhbSBjb3VsZCBsZWF2ZSB0aGUgc2Vjb25kIEVPRiByZWNvcmQgaW5zaWRlIHRoZQogIHN0cmVhbSBpdCBoYWQganVzdCBmaW5pc2hlZCByZWFkaW5nLgogIElzc3VlOiBDT01QUkVTUy0yMDYuCiAgVGhhbmtzIHRvIFBldGVyIERlIE1hZXllci4KbyBEdW1wQXJjaGl2ZUlucHV0U3RyZWFtIG5vIGxvbmdlciBpbXBsaWNpdGx5IGNsb3NlcyB0aGUgb3JpZ2luYWwKICBpbnB1dCBzdHJlYW0gd2hlbiBpdCByZWFjaGVzIHRoZSBlbmQgb2YgdGhlIGFyY2hpdmUuCm8gWmlwQXJjaGl2ZUlucHV0U3RyZWFtIG5vdyBjb25zdW1lcyB0aGUgcmVtYWluZGVyIG9mIHRoZSBhcmNoaXZlIHdoZW4KICBnZXROZXh0WmlwRW50cnkgcmV0dXJucyBudWxsLgpvIFVuaXQgdGVzdHMgY291bGQgZmFpbCBpZiB0aGUgc291cmNlIHRyZWUgd2FzIGNoZWNrZWQgb3V0IHRvIGEKICBkaXJlY3RvcnkgdHJlZSBjb250YWluaWduIHNwYWNlcy4KICBJc3N1ZTogQ09NUFJFU1MtMjA1LgogIFRoYW5rcyB0byBEYW5pZWwgTG93ZS4KbyBGaXhlZCBhIHBvdGVudGlhbCBBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gd2hlbiByZWFkaW5nIFNUT1JFRAogIGVudHJpZXMgZnJvbSBaaXBBcmNoaXZlSW5wdXRTdHJlYW0uCiAgSXNzdWU6IENPTVBSRVNTLTIxOS4KbyBDb21wcmVzc29yU3RyZWFtRmFjdG9yeSBjYW4gbm93IGJlIHVzZWQgd2l0aG91dCBYWiBmb3IgSmF2YSBiZWluZwogIGF2YWlsYWJsZS4KICBJc3N1ZTogQ09NUFJFU1MtMjIxLgoKQ2hhbmdlczoKCm8gSW1wcm92ZWQgZXhjZXB0aW9uIG1lc3NhZ2UgaWYgYSB6aXAgYXJjaGl2ZSBjYW5ub3QgYmUgcmVhZCBiZWNhdXNlCiAgb2YgYW4gdW5zdXBwb3J0ZWQgY29tcHJlc3Npb24gbWV0aG9kLgogIElzc3VlOiBDT01QUkVTUy0xODguCiAgVGhhbmtzIHRvIEhhcmFsZCBLdWhuLgpvIEFyY2hpdmVTdHJlYW1GYWN0b3J5IGhhcyBhIHNldHRpbmcgZm9yIGZpbGUgbmFtZSBlbmNvZGluZyB0aGF0IHNldHMKICB1cCBlbmNvZGluZyBmb3IgWklQIGFuZCBUQVIgc3RyZWFtcy4KICBJc3N1ZTogQ09NUFJFU1MtMTkyLgogIFRoYW5rcyB0byBKdWtrYSBaaXR0aW5nLgpvIFRhckFyY2hpdmVFbnRyeSBub3cgaGFzIGEgbWV0aG9kIHRvIHZlcmlmeSBpdHMgY2hlY2tzdW0uCiAgSXNzdWU6IENPTVBSRVNTLTE5MS4KICBUaGFua3MgdG8gSnVra2EgWml0dGluZy4KbyBTcGxpdC9zcGFubmVkIFpJUCBhcmNoaXZlcyBhcmUgbm93IHByb3Blcmx5IGRldGVjdGVkIGJ5CiAgQXJjaGl2ZVN0cmVhbUZhY3RvcnkgYnV0IHdpbGwgY2F1c2UgYW4KICBVbnN1cHBvcnRlZFppcEZlYXR1cmVFeGNlcHRpb24gd2hlbiByZWFkLgpvIFppcEFyY2hpdmVJbnB1dFN0cmVhbSBub3cgcmVhZHMgYXJjaGl2ZXMgdGhhdCBzdGFydCB3aXRoIGEgIlBLMDAiCiAgc2lnbmF0dXJlLiAgQXJjaGl2ZXMgd2l0aCB0aGlzIHNpZ25hdHVyZXMgYXJlIGNyZWF0ZWQgd2hlbiB0aGUKICBhcmNoaXZlciB3YXMgd2lsbGluZyB0byBzcGxpdCB0aGUgYXJjaGl2ZSBidXQgaW4gdGhlIGVuZCBvbmx5IG5lZWRlZAogIGEgc2luZ2xlIHNlZ21lbnQgLSBzbyBkaWRuJ3Qgc3BsaXQgYW55dGhpbmcuCiAgSXNzdWU6IENPTVBSRVNTLTIwOC4KbyBUYXJBcmNoaXZlRW50cnkgaGFzIGEgbmV3IGNvbnN0cnVjdG9yIHRoYXQgYWxsb3dzIHNldHRpbmcgbGlua0ZsYWcKICBhbmQgcHJlc2VydmVMZWFkaW5nU2xhc2hlcyBhdCB0aGUgc2FtZSB0aW1lLgogIElzc3VlOiBDT01QUkVTUy0yMDEuCm8gQ2hhbmdlU2V0UGVyZm9ybWVyIGhhcyBhIG5ldyBwZXJmb3JtIG92ZXJsb2FkIHRoYXQgdXNlcyBhIFppcEZpbGUKICBpbnN0YW5jZSBhcyBpbnB1dC4KICBJc3N1ZTogQ09NUFJFU1MtMTU5LgpvIEdhcmJhZ2UgY29sbGVjdGlvbiBwcmVzc3VyZSBoYXMgYmVlbiByZWR1Y2VkIGJ5IHJldXNpbmcgdGVtcG9yYXJ5CiAgYnl0ZSBhcnJheXMgaW4gY2xhc3Nlcy4KICBJc3N1ZTogQ09NUFJFU1MtMTcyLgogIFRoYW5rcyB0byBUaG9tYXMgTWFpci4KbyBDYW4gbm93IGhhbmRsZSB6aXAgZXh0cmEgZmllbGQgMHg1NDU1IC0gRXh0ZW5kZWQgVGltZXN0YW1wLgogIElzc3VlOiBDT01QUkVTUy0yMTAuCiAgVGhhbmtzIHRvIEp1bGl1cyBEYXZpZXMuCm8gaGFuZGxlIHppcCBleHRyYSBmaWVsZCAweDc4NzUgLSBJbmZvIFppcCBOZXcgVW5peCBFeHRyYSBGaWVsZC4KICBJc3N1ZTogQ09NUFJFU1MtMjExLgogIFRoYW5rcyB0byBKdWxpdXMgRGF2aWVzLgpvIFppcFNob3J0LCBaaXBMb25nLCBaaXBFaWdodEJ5dGVJbnRlZ2VyIHNob3VsZCBpbXBsZW1lbnQgU2VyaWFsaXphYmxlCiAgSXNzdWU6IENPTVBSRVNTLTIxMy4KICBUaGFua3MgdG8gSnVsaXVzIERhdmllcy4KbyBiZXR0ZXIgc3VwcG9ydCBmb3IgVW5peCBzeW1saW5rcyBpbiBaaXBGaWxlIGVudHJpZXMuCiAgSXNzdWU6IENPTVBSRVNTLTIxNC4KICBUaGFua3MgdG8gSnVsaXVzIERhdmllcy4KbyBaaXBGaWxlJ3MgaW5pdGlhbGl6YXRpb24gaGFzIGJlZW4gaW1wcm92ZWQgZm9yIG5vbi1aaXA2NCBhcmNoaXZlcy4KICBJc3N1ZTogQ09NUFJFU1MtMjE1LgogIFRoYW5rcyB0byBSb2JpbiBQb3dlci4KbyBVcGRhdGVkIFhaIGZvciBKYXZhIGRlcGVuZGVuY3kgdG8gMS4yIGFzIHRoaXMgdmVyc2lvbiBwcm92aWRlcwogIHByb3BlciBPU0dpIG1hbmlmZXN0IGF0dHJpYnV0ZXMuCgpSZWxlYXNlIDEuNC4xCi0tLS0tLS0tLS0tLS0KClRoaXMgaXMgYSBzZWN1cml0eSBidWdmaXggcmVsZWFzZSwgc2VlCmh0dHBzOi8vY29tbW9ucy5hcGFjaGUub3JnL3Byb3Blci9jb21tb25zLWNvbXByZXNzL3NlY3VyaXR5Lmh0bWwjRml4ZWRfaW5fQXBhY2hlX0NvbW1vbnNfQ29tcHJlc3NfMS40LjEKCkZpeGVkIEJ1Z3M6CgpvIFBvcnRlZCBsaWJiemlwMidzIGZhbGxiYWNrIHNvcnQgYWxnb3JpdGhtIHRvCiAgQlppcDJDb21wcmVzc29yT3V0cHV0U3RyZWFtIHRvIHNwZWVkIHVwIGNvbXByZXNzaW9uIGluIGNlcnRhaW4KICBlZGdlIGNhc2VzLgoKUmVsZWFzZSAxLjQKLS0tLS0tLS0tLS0KCk5ldyBmZWF0dXJlczoKbyBDT01QUkVTUy0xNTY6ICBTdXBwb3J0IGZvciB0aGUgWFogZm9ybWF0IGhhcyBiZWVuIGFkZGVkLiAKCkZpeGVkIEJ1Z3M6Cm8gQ09NUFJFU1MtMTgzOiAgVGhlIHRhciBwYWNrYWdlIG5vdyBhbGxvd3MgdGhlIGVuY29kaW5nIG9mIGZpbGUgbmFtZXMgdG8gYmUKICAgICAgICAgICAgICAgICBzcGVjaWZpZWQgYW5kIGNhbiBvcHRpb25hbGx5IHVzZSBQQVggZXh0ZW5zaW9uIGhlYWRlcnMgdG8KICAgICAgICAgICAgICAgICB3cml0ZSBub24tQVNDSUkgZmlsZSBuYW1lcy4KICAgICAgICAgICAgICAgICBUaGUgc3RyZWFtIGNsYXNzZXMgbm93IHdyaXRlIChvciBleHBlY3QgdG8gcmVhZCkgYXJjaGl2ZXMgdGhhdAogICAgICAgICAgICAgICAgIHVzZSB0aGUgcGxhdGZvcm0ncyBuYXRpdmUgZW5jb2RpbmcgZm9yIGZpbGUgbmFtZXMuICBBcGFjaGUKICAgICAgICAgICAgICAgICBDb21tb25zIENvbXByZXNzIDEuMyB1c2VkIHRvIHN0cmlwIGV2ZXJ5dGhpbmcgYnV0IHRoZSBsb3dlcgogICAgICAgICAgICAgICAgIGVpZ2h0IGJpdHMgb2YgZWFjaCBjaGFyYWN0ZXIgd2hpY2ggZWZmZWN0aXZlbHkgb25seSB3b3JrZWQgZm9yCiAgICAgICAgICAgICAgICAgQVNDSUkgYW5kIElTTy04ODU5LTEgZmlsZSBuYW1lcy4KICAgICAgICAgICAgICAgICBUaGlzIG5ldyBkZWZhdWx0IGJlaGF2aW9yIGlzIGEgYnJlYWtpbmcgY2hhbmdlLiAKbyBDT01QUkVTUy0xODQ6ICBUYXJBcmNoaXZlSW5wdXRTdHJlYW0gZmFpbGVkIHRvIHBhcnNlIFBBWCBoZWFkZXJzIHRoYXQKICAgICAgICAgICAgICAgICBjb250YWluZWQgbm9uLUFTQ0lJIGNoYXJhY3RlcnMuIApvIENPTVBSRVNTLTE3ODogIFRhckFyY2hpdmVJbnB1dFN0cmVhbSB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGluc3RlYWQgb2YgSU9FeGNlcHRpb24gCm8gQ09NUFJFU1MtMTc5OiAgVGFyVXRpbHMuZm9ybWF0TG9uZ09jdGFsT3JCaW5hcnlCeXRlcygpIGFzc3VtZXMgdGhlIGZpZWxkIHdpbGwgYmUgMTIgYnl0ZXMgbG9uZyAKbyBDT01QUkVTUy0xNzU6ICBHTlUgVGFyIHNvbWV0aW1lcyB1c2VzIGJpbmFyeSBlbmNvZGluZyBmb3IgVUlEIGFuZCBHSUQgCm8gQ09NUFJFU1MtMTcxOiAgQXJjaGl2ZVN0cmVhbUZhY3RvcnkuY3JlYXRlQXJjaGl2ZUlucHV0U3RyZWFtIHdvdWxkIGNsYWltCiAgICAgICAgICAgICAgICAgc2hvcnQgdGV4dCBmaWxlcyB3ZXJlIFRBUiBhcmNoaXZlcy4gCm8gQ09NUFJFU1MtMTY0OiAgWmlwRmlsZSBkaWRuJ3Qgd29yayBwcm9wZXJseSBmb3IgYXJjaGl2ZXMgdXNpbmcgdW5pY29kZSBleHRyYQogICAgICAgICAgICAgICAgIGZpZWxkcyByYXRoZXIgdGhhbiBVVEYtOCBmaWxlbmFtZXMgYW5kIHRoZSBFRlMtRmxhZy4gCm8gQ09NUFJFU1MtMTY5OiAgRm9yIGNvcnJ1cHQgYXJjaGl2ZXMgWmlwRmlsZSB3b3VsZCB0aHJvdyBhIFJ1bnRpbWVFeGNlcHRpb24gaW4KICAgICAgICAgICAgICAgICBzb21lIGNhc2VzIGFuZCBhbiBJT0V4Y2VwdGlvbiBpbiBvdGhlcnMuICBJdCB3aWxsIG5vdwogICAgICAgICAgICAgICAgIGNvbnNpc3RlbnRseSB0aHJvdyBhbiBJT0V4Y2VwdGlvbi4gCgpDaGFuZ2VzOgpvIENPTVBSRVNTLTE4MjogIFRoZSB0YXIgcGFja2FnZSBjYW4gbm93IHdyaXRlIGFyY2hpdmVzIHRoYXQgdXNlIHN0YXIvR05VL0JTRAogICAgICAgICAgICAgICAgIGV4dGVuc2lvbnMgb3IgdXNlIHRoZSBQT1NJWC9QQVggdmFyaWFudCB0byBzdG9yZSBudW1lcmljCiAgICAgICAgICAgICAgICAgdmFsdWVzIHRoYXQgZG9uJ3QgZml0IGludG8gdGhlIHRyYWRpdGlvbmFsIGhlYWRlciBmaWVsZHMuIApvIENPTVBSRVNTLTE4MTogIEFkZGVkIGEgd29ya2Fyb3VuZCBmb3IgYSBCdWcgc29tZSB0YXIgaW1wbGVtZW50YXRpb25zIHRoYXQgYWRkCiAgICAgICAgICAgICAgICAgYSBOVUwgYnl0ZSBhcyBmaXJzdCBieXRlIGluIG51bWVyaWMgaGVhZGVyIGZpZWxkcy4gCm8gQ09NUFJFU1MtMTc2OiAgQWRkZWQgYSB3b3JrYXJvdW5kIGZvciBhIEJ1ZyBpbiBXaW5aSVAgd2hpY2ggdXNlcyBiYWNrc2xhc2hlcwogICAgICAgICAgICAgICAgIGFzIHBhdGggc2VwYXJhdG9ycyBpbiBVbmljb2RlIEV4dHJhIEZpZWxkcy4gCm8gQ09NUFJFU1MtMTMxOiAgQXJyYXlPdXRPZkJvdW5kcyB3aGlsZSBkZWNvbXByZXNzaW5nIGJ6Mi4gQWRkZWQgdGVzdCBjYXNlIC0gY29kZSBhbHJlYWR5IHNlZW1zIHRvIGhhdmUgYmVlbiBmaXhlZC4gCm8gQ09NUFJFU1MtMTQ2OiAgQlppcDJDb21wcmVzc29ySW5wdXRTdHJlYW0gbm93IG9wdGlvbmFsbHkgc3VwcG9ydHMgcmVhZGluZyBvZgogICAgICAgICAgICAgICAgIGNvbmNhdGVuYXRlZCAuYnoyIGZpbGVzLiAKbyBDT01QUkVTUy0xNTQ6ICBHWmlwQ29tcHJlc3NvcklucHV0U3RyZWFtIG5vdyBvcHRpb25hbGx5IHN1cHBvcnRzIHJlYWRpbmcgb2YKICAgICAgICAgICAgICAgICBjb25jYXRlbmF0ZWQgLmd6IGZpbGVzLiAKbyBDT01QUkVTUy0xNjogIFRoZSB0YXIgcGFja2FnZSBjYW4gbm93IHJlYWQgYXJjaGl2ZXMgdGhhdCB1c2Ugc3Rhci9HTlUvQlNECiAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucyBmb3IgZmlsZXMgdGhhdCBhcmUgbG9uZ2VyIHRoYW4gOCBHQnl0ZSBhcyB3ZWxsIGFzCiAgICAgICAgICAgICAgICAgYXJjaGl2ZXMgdGhhdCB1c2UgdGhlIFBPU0lYL1BBWCB2YXJpYW50LiAKbyBDT01QUkVTUy0xNjU6ICBUaGUgdGFyIHBhY2thZ2UgY2FuIG5vdyB3cml0ZSBhcmNoaXZlcyB0aGF0IHVzZSBzdGFyL0dOVS9CU0QKICAgICAgICAgICAgICAgICBleHRlbnNpb25zIGZvciBmaWxlcyB0aGF0IGFyZSBsb25nZXIgdGhhbiA4IEdCeXRlIGFzIHdlbGwgYXMKICAgICAgICAgICAgICAgICBhcmNoaXZlcyB0aGF0IHVzZSB0aGUgUE9TSVgvUEFYIHZhcmlhbnQuIApvIENPTVBSRVNTLTE2NjogIFRoZSB0YXIgcGFja2FnZSBjYW4gbm93IHVzZSB0aGUgUE9TSVgvUEFYIHZhcmlhbnQgZm9yIHdyaXRpbmcKICAgICAgICAgICAgICAgICBlbnRyaWVzIHdpdGggbmFtZXMgbG9uZ2VyIHRoYW4gMTAwIGNoYXJhY3RlcnMuIAoKUmVsZWFzZSAxLjMKLS0tLS0tLS0tLS0KCkNvbW1vbnMgQ29tcHJlc3MgMS4zIGlzIHRoZSBmaXJzdCB2ZXJzaW9uIHRvIHJlcXVpcmUgSmF2YTUgYXQgcnVudGltZS4KCkNoYW5nZXMgaW4gdGhpcyB2ZXJzaW9uIGluY2x1ZGU6CgpOZXcgZmVhdHVyZXM6Cm8gU3VwcG9ydCBmb3IgdGhlIFBhY2syMDAgZm9ybWF0IGhhcyBiZWVuIGFkZGVkLiAgSXNzdWU6IENPTVBSRVNTLTE0Mi4gCm8gUmVhZC1vbmx5IHN1cHBvcnQgZm9yIHRoZSBmb3JtYXQgdXNlZCBieSB0aGUgVW5peCBkdW1wKDgpIHRvb2wKICBoYXMgYmVlbiBhZGRlZC4gIElzc3VlOiBDT01QUkVTUy0xMzIuIAoKRml4ZWQgQnVnczoKbyBCWmlwMkNvbXByZXNzb3JJbnB1dFN0cmVhbSdzIGdldEJ5dGVzUmVhZCBtZXRob2QgYWx3YXlzCiAgcmV0dXJuZWQgMC4gCm8gWmlwQXJjaGl2ZUlucHV0U3RyZWFtIGFuZCBaaXBBcmNoaXZlT3V0cHV0U3RyZWFtIGNvdWxkIGxlYWsKICByZXNvdXJjZXMgb24gc29tZSBKREtzLiAgSXNzdWU6IENPTVBSRVNTLTE1Mi4gCm8gVGFyQXJjaGl2ZU91dHB1dFN0cmVhbSdzIGdldEJ5dGVzV3JpdHRlbiBtZXRob2QgZGlkbid0IGNvdW50CiAgY29ycmVjdGx5LiAgSXNzdWU6IENPTVBSRVNTLTE2MC4gCgpDaGFuZ2VzOgpvIFRoZSBaSVAgcGFja2FnZSBub3cgc3VwcG9ydHMgWmlwNjQgZXh0ZW5zaW9ucy4gIElzc3VlOiBDT01QUkVTUy0zNi4gCm8gVGhlIEFSIHBhY2thZ2Ugbm93IHN1cHBvcnRzIHRoZSBCU0QgZGlhbGVjdCBvZiBzdG9yaW5nIGZpbGUKICBuYW1lcyBsb25nZXIgdGhhbiAxNiBjaGFycyAoYm90aCByZWFkaW5nIGFuZCB3cml0aW5nKS4KICBJc3N1ZTogQ09NUFJFU1MtMTQ0LiAKClJlbGVhc2UgMS4yCi0tLS0tLS0tLS0tCgpOZXcgZmVhdHVyZXM6Cm8gQ09NUFJFU1MtMTIzOiAgWmlwQXJjaGl2ZUVudHJ5IGhhcyBhIG5ldyBtZXRob2QgZ2V0UmF3TmFtZSB0aGF0IHByb3ZpZGVzIHRoZQogICAgICAgIG9yaWdpbmFsIGJ5dGVzIHRoYXQgbWFkZSB1cCB0aGUgbmFtZS4gIFRoaXMgbWF5IGFsbG93IHVzZXIKICAgICAgICBjb2RlIHRvIGRldGVjdCB0aGUgZW5jb2RpbmcuIApvIENPTVBSRVNTLTEyMjogIFRhckFyY2hpdmVFbnRyeSBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIGZsYWdzIHRoYXQgZGV0ZXJtaW5lCiAgICAgICAgd2hldGhlciBpdCBpcyBhbiBhcmNoaXZlZCBzeW1ib2xpYyBsaW5rLCBwaXBlIG9yIG90aGVyCiAgICAgICAgInVuY29tbW9uIiBmaWxlIHN5c3RlbSBvYmplY3QuIAoKRml4ZWQgQnVnczoKbyBDT01QUkVTUy0xMjk6ICBaaXBBcmNoaXZlSW5wdXRTdHJlYW0gY291bGQgZmFpbCB3aXRoIGEgIlRydW5jYXRlZCBaSVAiIGVycm9yCiAgICAgICAgbWVzc2FnZSBmb3IgZW50cmllcyBiZXR3ZWVuIDIgR0J5dGUgYW5kIDQgR0J5dGUgaW4gc2l6ZS4gCm8gQ09NUFJFU1MtMTQ1OiAgVGFyQXJjaGl2ZUlucHV0U3RyZWFtIG5vdyBkZXRlY3RzIHNwYXJzZSBlbnRyaWVzIHVzaW5nIHRoZQogICAgICAgIG9sZGdudSBmb3JtYXQgYW5kIHByb3Blcmx5IHJlcG9ydHMgaXQgY2Fubm90IGV4dHJhY3QgdGhlaXIKICAgICAgICBjb250ZW50cy4gCm8gQ09NUFJFU1MtMTMwOiAgVGhlIEphdmFkb2MgZm9yIFppcEFyY2hpdmVJbnB1dFN0cmVhbSNza2lwIG5vdyBtYXRjaGVzIHRoZQogICAgICAgIGltcGxlbWVudGF0aW9uLCB0aGUgY29kZSBoYXMgYmVlbiBtYWRlIG1vcmUgZGVmZW5zaXZlLiAKbyBDT01QUkVTUy0xNDA6ICBBckFyY2hpdmVJbnB1dFN0cmVhbSBmYWlscyBpZiBlbnRyaWVzIGNvbnRhaW4gb25seSBibGFua3MgZm9yCiAgICAgICAgdXNlcklkIG9yIGdyb3VwSWQuIFRoYW5rcyB0byBUcmVqa2F6LiAKbyBDT01QUkVTUy0xMzk6ICBaaXBGaWxlIG1heSBsZWFrIHJlc291cmNlcyBvbiBzb21lIEpES3MuIApvIENPTVBSRVNTLTEyNTogIEJaaXAyQ29tcHJlc3NvcklucHV0U3RyZWFtIHRocm93cyBJT0V4Y2VwdGlvbiBpZgogICAgICAgIHVuZGVybHlpbmcgc3RyZWFtIHJldHVybnMgYXZhaWxhYmxlKCkgPT0gMC4KICAgICAgICBSZW1vdmVkIHRoZSBjaGVjay4gCm8gQ09NUFJFU1MtMTI3OiAgQ2FsbGluZyBjbG9zZSgpIG9uIGlucHV0U3RyZWFtIHJldHVybmVkIGJ5CiAgICAgICAgQ29tcHJlc3NvclN0cmVhbUZhY3RvcnkuY3JlYXRlQ29tcHJlc3NvcklucHV0U3RyZWFtKCkKICAgICAgICBkb2VzIG5vdCBjbG9zZSB0aGUgdW5kZXJseWluZyBpbnB1dCBzdHJlYW0uIApvIENPTVBSRVNTLTExOTogIFRhckFyY2hpdmVPdXRwdXRTdHJlYW0jZmluaXNoIG5vdyB3cml0ZXMgYWxsIGJ1ZmZlcmVkCiAgICAgICAgZGF0YSB0byB0aGUgc3RyZWFtIAoKQ2hhbmdlczoKbyBaaXBGaWxlIG5vdyBpbXBsZW1lbnRzIGZpbmFsaXplIHdoaWNoIGNsb3NlcyB0aGUgdW5kZXJseWluZwogICAgICAgIGZpbGUuIApvIENPTVBSRVNTLTExNzogIENlcnRhaW4gdGFyIGZpbGVzIG5vdCByZWNvZ25pc2VkIGJ5CiAgICAgICAgQXJjaGl2ZVN0cmVhbUZhY3RvcnkuIAoKUmVsZWFzZSAxLjEKLS0tLS0tLS0tLS0KCk5ldyBmZWF0dXJlczoKbyBDT01QUkVTUy0xMDg6ICBDb21tYW5kLWxpbmUgaW50ZXJmYWNlIHRvIGxpc3QgYXJjaGl2ZSBjb250ZW50cy4KICAgICAgIFVzYWdlOiBqYXZhIC1qYXIgY29tbW9ucy1jb21wcmVzcy1uLm0uamFyIGFyY2hpdmUtbmFtZSBbemlwfHRhcnxldGNdIApvIENPTVBSRVNTLTEwOTogIFRhciBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IFBheCBoZWFkZXJzCiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciByZWFkaW5nIHBheCBoZWFkZXJzLgogICAgICAgTm90ZTogZG9lcyBub3Qgc3VwcG9ydCBnbG9iYWwgcGF4IGhlYWRlcnMgCm8gQ09NUFJFU1MtMTAzOiAgWmlwQXJjaGl2ZUlucHV0U3RyZWFtIGNhbiBvcHRpb25hbGx5IGV4dHJhY3QgZGF0YSB0aGF0IHVzZWQKICAgICAgICB0aGUgU1RPUkVEIGNvbXByZXNzaW9uIG1ldGhvZCBhbmQgYSBkYXRhIGRlc2NyaXB0b3IuCiAgICAgICAgRG9pbmcgc28gaW4gYSBzdHJlYW0gaXMgbm90IHNhZmUgaW4gZ2VuZXJhbCwgc28geW91IGhhdmUgdG8KICAgICAgICBleHBsaWNpdGx5IGVuYWJsZSB0aGUgZmVhdHVyZS4gIEJ5IGRlZmF1bHQgdGhlIHN0cmVhbSB3aWxsCiAgICAgICAgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGl0IGVuY291bnRlcnMgc3VjaCBhbiBlbnRyeS4gCm8gQ09NUFJFU1MtOTg6ICBUaGUgWklQIGNsYXNzZXMgd2lsbCB0aHJvdyBzcGVjaWFsaXplZCBleGNlcHRpb25zIGlmIGFueQogICAgICAgIGF0dGVtcHQgaXMgbWFkZSB0byByZWFkIG9yIHdyaXRlIGRhdGEgdGhhdCB1c2VzIHppcCBmZWF0dXJlcwogICAgICAgIG5vdCBzdXBwb3J0ZWQgKHlldCkuIApvIENPTVBSRVNTLTk5OiAgWmlwRmlsZSNnZXRFbnRyaWVzIHJldHVybnMgZW50cmllcyBpbiBhIHByZWRpY3RhYmxlIG9yZGVyIC0KICAgICAgICB0aGUgb3JkZXIgdGhleSBhcHBlYXIgaW5zaWRlIHRoZSBjZW50cmFsIGRpcmVjdG9yeS4KICAgICAgICBBIG5ldyBtZXRob2QgZ2V0RW50cmllc0luUGh5c2ljYWxPcmRlciByZXR1cm5zIGVudHJpZXMgaW4KICAgICAgICBvcmRlciBvZiB0aGUgZW50cnkgZGF0YSwgaS5lLiB0aGUgb3JkZXIgWmlwQXJjaGl2ZUlucHV0U3RyZWFtCiAgICAgICAgd291bGQgc2VlLiAKbyBUaGUgQXJjaGl2ZSpTdHJlYW0gYW5kIFppcEZpbGUgY2xhc3NlcyBub3cgaGF2ZQogICAgICAgIGNhbihSZWFkfFdyaXRlKUVudHJ5RGF0YSBtZXRob2RzIHRoYXQgY2FuIGJlIHVzZWQgdG8gY2hlY2sKICAgICAgICB3aGV0aGVyIGEgZ2l2ZW4gZW50cnkncyBkYXRhIGNhbiBiZSByZWFkL3dyaXR0ZW4uCiAgICAgICAgVGhlIG1ldGhvZCBjdXJyZW50bHkgcmV0dXJucyBmYWxzZSBmb3IgWklQIGFyY2hpdmVzIGlmIGFuCiAgICAgICAgZW50cnkgdXNlcyBhbiB1bnN1cHBvcnRlZCBjb21wcmVzc2lvbiBtZXRob2Qgb3IgZW5jcnlwdGlvbi4gCm8gQ09NUFJFU1MtODk6ICBUaGUgWklQIGNsYXNzZXMgbm93IGRldGVjdCBlbmNyeXB0ZWQgZW50cmllcy4gCm8gQ09NUFJFU1MtOTc6ICBBZGRlZCBhdXRvZGV0ZWN0aW9uIG9mIGNvbXByZXNzaW9uIGZvcm1hdCB0bwogICAgICAgIENvbXByZXNzb3JTdHJlYW1GYWN0b3J5LiAKbyBDT01QUkVTUy05NTogIEltcHJvdmUgRXhjZXB0aW9uTWVzc2FnZXMgaW4gQXJjaGl2ZVN0cmVhbUZhY3RvcnkgVGhhbmtzIHRvIEpvZXJnIEJlbGxtYW5uLiAKbyBBIG5ldyBjb25zdHJ1Y3RvciBvZiBUYXJBcmNoaXZlRW50cnkgY2FuIGNyZWF0ZSBlbnRyaWVzIHdpdGgKICAgICAgICBuYW1lcyB0aGF0IHN0YXJ0IHdpdGggc2xhc2hlcyAtIHRoZSBkZWZhdWx0IGlzIHRvIHN0cmlwCiAgICAgICAgbGVhZGluZyBzbGFzaGVzIGluIG9yZGVyIHRvIGNyZWF0ZSByZWxhdGl2ZSBwYXRoIG5hbWVzLiAKbyBBcmNoaXZlRW50cnkgbm93IGhhcyBhIGdldExhc3RNb2RpZmllZERhdGUgbWV0aG9kLiAKbyBDT01QUkVTUy03ODogIEFkZCBhIEJaaXAyVXRpbHMgY2xhc3MgbW9kZWxsZWQgYWZ0ZXIgR1ppcFV0aWxzIFRoYW5rcyB0byBKdWtrYSBaaXR0aW5nLiAKCkZpeGVkIEJ1Z3M6Cm8gQ09NUFJFU1MtNzI6ICBNb3ZlIGFja25vd2xlZGdlbWVudHMgZnJvbSBOT1RJQ0UgdG8gUkVBRE1FIApvIENPTVBSRVNTLTExMzogIFRhckFyY2hpdmVFbnRyeS5wYXJzZVRhckhlYWRlcigpIGluY2x1ZGVzIHRoZSB0cmFpbGluZyBzcGFjZS9OVUwgd2hlbiBwYXJzaW5nIHRoZSBvY3RhbCBzaXplIApvIENPTVBSRVNTLTExODogIFRhclV0aWxzLnBhcnNlTmFtZSBkb2VzIG5vdCBwcm9wZXJseSBoYW5kbGUgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSByYW5nZSAwLTEyNyAKbyBDT01QUkVTUy0xMDc6ICBBcmNoaXZlU3RyZWFtRmFjdG9yeSBkb2VzIG5vdCByZWNvZ25pc2UgdGFyIGZpbGVzIGNyZWF0ZWQgYnkgQW50IApvIENPTVBSRVNTLTExMDogIFN1cHBvcnQgInVzdGFyIiBwcmVmaXggZmllbGQsIHdoaWNoIGlzIHVzZWQgd2hlbiBmaWxlIHBhdGhzIGFyZSBsb25nZXIKICAgICAgIHRoYW4gMTAwIGNoYXJhY3RlcnMuIApvIENPTVBSRVNTLTEwMDogIFppcEFyY2hpdmVJbnB1dFN0cmVhbSB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBpdCBkZXRlY3RzIGFuCiAgICAgICAgZW50cnkgdGhhdCB1c2VzIGEgZGF0YSBkZXNjcmlwdG9yIGZvciBhIFNUT1JFRCBlbnRyeSBzaW5jZSBpdAogICAgICAgIGNhbm5vdCByZWxpYWJseSBmaW5kIHRoZSBlbmQgb2YgZGF0YSBmb3IgdGhpcyAiY29tcHJlc3Npb24iCiAgICAgICAgbWV0aG9kLiAKbyBDT01QUkVTUy0xMDE6ICBaaXBBcmNoaXZlSW5wdXRTdHJlYW0gc2hvdWxkIG5vdyBwcm9wZXJseSByZWFkIGFyY2hpdmVzIHRoYXQKICAgICAgICB1c2UgZGF0YSBkZXNjcmlwdG9ycyBidXQgd2l0aG91dCB0aGUgInVub2ZmaWNpYWwiIHNpZ25hdHVyZS4gCm8gQ09NUFJFU1MtNzQ6ICBaaXBBcmNoaXZlSW5wdXRTdHJlYW0gZmFpbGVkIHRvIHVwZGF0ZSB0aGUgbnVtYmVyIG9mIGJ5dGVzCiAgICAgICAgcmVhZCBwcm9wZXJseS4gCm8gQXJjaGl2ZUlucHV0U3RyZWFtIGhhcyBhIG5ldyBtZXRob2QgZ2V0Qnl0ZXNSZWFkIHRoYXQgc2hvdWxkCiAgICAgICAgYmUgcHJlZmVycmVkIG92ZXIgZ2V0Q291bnQgc2luY2UgdGhlIGxhdGVyIG1heSB0cnVuY2F0ZSB0aGUKICAgICAgICBudW1iZXIgb2YgYnl0ZXMgcmVhZCBmb3IgYmlnIGFyY2hpdmVzLiAKbyBDT01QUkVTUy04NTogIFRoZSBjcGlvIGFyY2hpdmVzIGNyZWF0ZWQgYnkgQ3Bpb0FyY2hpdmVPdXRwdXRTdHJlYW0gY291bGRuJ3QKICAgICAgICBiZSByZWFkIGJ5IG1hbnkgZXhpc3RpbmcgbmF0aXZlIGltcGxlbWVudGF0aW9ucyBiZWNhdXNlIHRoZQogICAgICAgIGFyY2hpdmVzIGNvbnRhaW5lZCBtdWx0aXBsZSBlbnRyaWVzIHdpdGggdGhlIHNhbWUgaW5vZGUvZGV2aWNlCiAgICAgICAgY29tYmluYXRpb25zIGFuZCB3ZXJlbid0IHBhZGRlZCB0byBhIGJsb2Nrc2l6ZSBvZiA1MTIgYnl0ZXMuIApvIENPTVBSRVNTLTczOiAgWmlwQXJjaGl2ZUVudHJ5LCBaaXBGaWxlIGFuZCBaaXBBcmNoaXZlSW5wdXRTdHJlYW0gYXJlIG5vdwogICAgICAgIG1vcmUgbGVuaWVudCB3aGVuIHBhcnNpbmcgZXh0cmEgZmllbGRzLiAKbyBDT01QUkVTUy04MjogIGNwaW8gaXMgdGVycmlibHkgc2xvdy4KICAgICAgICBEb2N1bWVudGVkIHRoYXQgYnVmZmVyZWQgc3RyZWFtcyBhcmUgbmVlZGVkIGZvciBwZXJmb3JtYW5jZSAKbyBJbXByb3ZlZCBleGNlcHRpb24gbWVzc2FnZSBpZiB0aGUgZXh0cmEgZmllbGQgZGF0YSBpbiBaSVAKICAgICAgICBhcmNoaXZlcyBjYW5ub3QgYmUgcGFyc2VkLiAKbyBDT01QUkVTUy0xNzogIFRhciBmb3JtYXQgdW5zcGVjaWZpZWQgLSBjdXJyZW50IHN1cHBvcnQgZG9jdW1lbnRlZC4gCm8gQ09NUFJFU1MtOTQ6ICBaaXBBcmNoaXZlRW50cnkncyBlcXVhbHMgbWV0aG9kIHdhcyBicm9rZW4gZm9yIGVudHJpZXMgY3JlYXRlZAogICAgICAgIHdpdGggdGhlIFN0cmluZy1hcmcgY29uc3RydWN0b3IuICBUaGlzIGxlYWQgdG8gYnJva2VuIFpJUAogICAgICAgIGFyY2hpdmVzIGlmIHR3byBkaWZmZXJlbnQgZW50cmllcyBoYWQgdGhlIHNhbWUgaGFzaCBjb2RlLiBUaGFua3MgdG8gQW5vbiBEZXZzLiAKbyBDT01QUkVTUy04NzogIFppcEFyY2hpdmVJbnB1dFN0cmVhbSBjb3VsZCByZXBlYXRlZGx5IHJldHVybiAwIG9uIHJlYWQoKSB3aGVuCiAgICAgICAgdGhlIGFyY2hpdmUgd2FzIHRydW5jYXRlZC4gVGhhbmtzIHRvIEFudG9uaSBNeWxrYS4gCm8gQ09NUFJFU1MtODY6ICBUYXIgYXJjaGl2ZSBlbnRyaWVzIGhvbGRpbmcgdGhlIGZpbGUgbmFtZSBmb3IgbmFtZXMgbG9uZ2VyCiAgICAgICAgdGhhbiAxMDAgY2hhcmFjdGVycyBpbiBHTlUgbG9uZ2ZpbGUgbW9kZSBkaWRuJ3QgcHJvcGVybHkKICAgICAgICBzcGVjaWZ5IHRoZXknZCBiZSB1c2luZyB0aGUgIm9sZGdudSIgZXh0ZW5zaW9uLiAKbyBDT01QUkVTUy04MzogIERlbGVnYXRlIGFsbCByZWFkIGFuZCB3cml0ZSBtZXRob2RzIGluIEdaaXAgc3RyZWFtIGluIG9yZGVyIHRvCiAgICAgICAgc3BlZWQgdXAgb3BlcmF0aW9ucy4gCm8gVGhlIGFyIGFuZCBjcGlvIHN0cmVhbXMgbm93IHByb3Blcmx5IHJlYWQgYW5kIHdyaXRlIGxhc3QKICAgICAgICBtb2RpZmllZCB0aW1lcy4gCm8gQ09NUFJFU1MtODE6ICBUYXJPdXRwdXRTdHJlYW0gY2FuIGxlYXZlIGdhcmJhZ2UgYXQgdGhlIGVuZCBvZiB0aGUgYXJjaGl2ZSAKCkNoYW5nZXM6Cm8gQ09NUFJFU1MtMTEyOiAgQXJBcmNoaXZlSW5wdXRTdHJlYW0gZG9lcyBub3QgaGFuZGxlIEdOVSBleHRlbmRlZCBmaWxlbmFtZSByZWNvcmRzICgvLykgCm8gQ09NUFJFU1MtMTA1OiAgRG9jdW1lbnQgdGhhdCB0aGUgbmFtZSBvZiBhbiBaaXBBcmNoaXZlRW50cnkgZGV0ZXJtaW5lcyB3aGV0aGVyCiAgICAgICBhbiBlbnRyeSBpcyBjb25zaWRlcmVkIGEgZGlyZWN0b3J5IG9yIG5vdC4KICAgICAgIElmIHlvdSBkb24ndCB1c2UgdGhlIGNvbnN0cnVjdG9yIHdpdGggdGhlIEZpbGUgYXJndW1lbnQgdGhlIGVudHJ5J3MKICAgICAgICBuYW1lIG11c3QgZW5kIGluIGEgIi8iIGluIG9yZGVyIGZvciB0aGUgZW50cnkgdG8gYmUga25vd24gYXMgYSBkaXJlY3RvcnkuIApvIENPTVBSRVNTLTc5OiAgTW92ZSBET1MvSmF2YSB0aW1lIGNvbnZlcnNpb25zIGludG8gWmlwIHV0aWxpdHkgY2xhc3MuIApvIENPTVBSRVNTLTc1OiAgWmlwQXJjaGl2ZUlucHV0U3RyZWFtIGRvZXMgbm90IHNob3cgbG9jYXRpb24gaW4gZmlsZQogICAgICAgd2hlcmUgYSBwcm9ibGVtIG9jY3VycmVkLiAKCg==