UEtJWDEgeyB9CkRFRklOSVRJT05TIElNUExJQ0lUIFRBR1MgOjo9CkJFR0lOCmlkLWNlIE9CSkVDVCBJREVOVElGSUVSICA6Oj0gIHtqb2ludC1lIE9QVElPTkFMLAogICAgIGV4cGxpY2l0VGV4dOMgICAgRGlzcGxheVRleHQgT1BUSU9OQUx9Ck5vdGljZVJlZmVyZW5jZSA6Oj0gU0VRVUVOQ0UgewogICAgIG9yZ2FuaXphdGlvbiAgICAgRGlzcGxheVRleHQsCiAgICAgbm90aWNlTnVtYmVycyAgICBTRVFVRU5DRSBPRiBJTlRFR0VSIH0KRGlzcGxheVRleHQgOjo9IENIT0lDRSB7CiAgICAgdmlzaWJsZVN0cmluZyAgICBWaXNpYmxlU3RyaW5nICAoU0laRSAoMS4uMjAwKSksCiAgICAgYm1wU3RyaW5nICAgICAgICBCTVBTdHJpbmcgICAgICAoU0laRSAoMS4uMjAwKSksCiAgICAgdXRmOFN0cmluZyAgICAgICBVVEY4U3RyaW5nICAgICAoU0laRSAoMS4uMjAwKSkgfQppZC1jZS1wb2xpY3lNYXBwaW5ncyBPQkpFQ1QgSURFTlRJRklFUiA6Oj0gIHsgaWQtY2UgMzMgfQpQb2xpY3lNYXBwaW5ncyA6Oj0gU0VRVUVOQ0UgU0laRSAoMS4uTUFYKSBPRiBTRVFVRU5DRSB7CiAgICAgaXNzdWVyRG9tYWluUG9saWN5ICAgICAgQ2VydFBvbGljeUlkLAogICAgIHN1YmplY3REb21haW5Qb2xpY3kgICAgIENlcnRQb2xpY3lJZCB9CkRpcmVjdG9yeVN0cmluZyA6Oj0gQ0hPSUNFIHsKICAgICAgdGVsZXRleFN0cmluZyAgICAgICAgICAgICBUZWxldGV4U3RyaW5nIChTSVpFICgxLi5NQVgpKSwKICAgICAgcHJpbnRhYmxlU3RyaW5nICAgICAgICAgICBQcmludGFibGVTdHJpbmcgKFNJWkUoMS4uTUFYKSksCiAgICAgIHVuaXZlcnNhbFN0cmluZyAgICAgICAgICAgVW5pdmVyc2FsU3RyaW5nIChTSVpFICgxLi5NQVgpKSwKICAgICAgdXRmQk1QU3RyaW5nIChTSVpFKDEuLk1BWCkpLAogICAgICAtLSBJQTVTdHJpbmcgaXMgYUVSICAtLSAoIGlkLXF0LWNwcyB8IGlkLXF0LXVub3RpY2UgKQpDUFN1cmkgOjo9IElBNVN0cmluZwpVc2VyTm90aWNlIDo6PSBTRVFVRU5DRSB7CiAgICAgbm90aWNlUmVmICAgICAgICBOb3RpY2VSZWZlcmVuY2UgT1BUSU9OQUwsCiAgICAgZXhwbGljaXRUZXh0ICAgICBEaXNwbGF5VGV4dCBPUFRJT05BTH0KTm90aWNlUmVmZXJlbmNlIDo6PSBTRVFVRU5DRSB7CiAgICAgb3JnYW5pemF0aW9uICAgICBEaXNwbGF5VGV4dCwKICAgICBub3RpY2VOdW1iZXJzICAgIFNFUVVFTkNFIE9GIElOVEVHRVIgfQpEaXNwbGF5VGV4dCA6Oj0gQ0hPSUNFIHsKICAgICB2aXNpYmxlU3RyaW5nICAgIFZpc2libGVTdHJpbmcgIChTSVpFICgxLi4yMDApKSwKICAgICBibXBTdHJpbmcgICAgICAgIEJNUFN0cmluZyAgICAgIChTSVpFICgxLi4yMDApKSwKICAgICB1dGY4U3RyaW5nICAgICAgIFVURjhTdHJpbmcgICAgIChTSVpFICgxLi4yMDApKSB9CmlkLWNlLXBvbGljeU1hcHBpbmdzIE9CSkVDVCBJREVOVElGSUVSIDo6PSAgeyBpZC1jZSAzMyB9ClBvbGljeU1hcHBpbmdzIDo6PSBTRVFVRU5DRSBTSVpFICgxLi5NQVgpIE9GIFNFUVVFTkNFF3sKICAgICBpc3N1ZXJEb21haW5Qb2xpY3kgICAgICBDZXJ0UG9saWN5SWQsCiAgICAgc3ViamVjdERvbWFpblBvbGljeSAgICAgQ2VydFBvbGljeUlkIH0KRGlyZWN0b3J5U3RyaW5nIDo6PSBDSE9JQ0UgewogICAgICB0ZWxldGV4U3RyaW5nICAgICAgICAgICAgIFRlbGV0ZXhTdHJpbmcgKFNJWkUgKDEuLk1BWCkpLAogICAgICBwcmludGFibGVTdHJpbmcgICAgICAgICAgIFByaW50YWJsZVN0cmluZyAoU0laRSAoMS4uTUFYKSksCiAgICAgIHVuaXZlcnNhbFN0cmluZyAgICAgICAgICAgVW5pdmVyc2FsU3RyaW5nIChTSVpFICgxLi5NQVgpKSwKICAgICAgdXRmOFN0cmluZyAgICAgICAgICAgICAgVVRGOFN0cmluZyAoU0laRSAoMS4uTUFYKSksCiAgICAgIGJtcFN0cmluZyAgICAgICAgICAgICAgIEJNUFN0cmluZyAoU0laRSgxLi5NQVgpKSwKICAgICAgLS0gSUE1U3RyaW5nIGlzIGFkZGVkIGhlcmUgdG8gaGFuZGxlIG9sZCBVSUQgZW5jb2RlZCBhcyBpYTVTdHJpbmcgLS0KICAgICAgLS0gU2VlIHRlc3RzL3VzZXJpZC8gZm9yIG1vcmUgaW5mb3JtYXRpb24uICBJdCBzaG91bGRuJ3QgYmUgaGVyZSwgLS0KICAgICAgLS0gc28gaWYgaXQgY2F1c2VzIHByb2JsZW1zLCBjb25zaWRlcmluZyBkcm9wcGluZyBpdC4gLS0KICAgICAgaWE1U3RyaW5nICAgICAgICAgICAgIGAgSWcKaWQtYXQtY29tbW9uTmFtZSAgICAgICAgQXR0cmlidXRlVHlwZSAgIDo6PSAgICAge2lkLWF0IDN9Clg1MjBDb21tb25OYW1lICA6Oj0gICAgICBEaXJlY3RvcnlTdHJpbmcKaWQtYXQtbG9jYWxpdHlOYW1lICAgICAgQXR0cmlidXRlVHlwZSAgIDo6PSAgICAge2lkLWF0IDd9Clg1MjBMb2NhbGl0eU5hbWUgOjo9IERpcmVjdG9yeVN0cmluZwppZC1hdC1zdGF0ZU9yUHJvdmluY2VOYW1lICAgICAgIEF0dHJpYnV0ZVR5cGUgICA6Oj0gICAgIHtpZC1hdCA4fQpYNTIwU3RhdGVPclByb3Z+IH4gfmluY2VOYW1lICAgICAgICAgOjo9IERpcmVjdG9yeVN0cmluZwppZC1hdC1vcmdhbml6YXRpb25OYW1lICAgICAgICAgIEF0dHJpYnV0ZVR5cGUgICA6Oj0gICAgIHtpZC1hdCAxMH0KWDUyME9yZ2FuaXphdGlvbk5hbWUgOjo9IERpcmVjdG9yeVN0cmluZwppZC1hdC1vcmdhbml6YXRpb25hbFVuaXROYW1lICAgIEF0dHJpYnV0ZVR5cGUgICA6Oj0gICAgIHtpZC1hdCAxMX0KWDUyME9yZ2FuaXphdGlvbmFsVW5pdCZhbWUgOjo9IERpcmVjdG9yeVN0cmluZwppZC1hdC10aXRsZSAgICAgQXR0cmlidXRlVHlwZSAgIDo6PSAgICAge2lkLWF0IDEyfQpYNTIwVGl0bGUgOjo9ICAgRGlyZWN0b3J5U3RyaW5nCmlkLWF0LWRlc2NyaXB0aW9uICAgICBBdHRyaWJ1dGVUeXBlICAgOjo9ICAgICB7aWQtYXQgMTN9Clg1MjBEZXNjcmlwdGlvbiA6Oj0gICBEaXJlY3RvcnlTdHJpbmcKaWQtYXQtZG5RdWFsaWZpZXIgICAgICAgQXR0cmlidXRlVHlwZSAgIDo6PSAgICAge2lkLWF0IDQ2fQpYNTIwZG5RdWFsaWZpZXIgOjo9ICAgICBQcmludGFibGVTdHJpbmcKaWQtYXQtY291bnRyeU5hbWUgICAgICAgQXR0cmlidXRlVHlwZSAgIDo6PSAgICAge2lkLWF0IDZ9Clg1MjBjb3VudHJ5TmFtZSA6Oj0gICAgIFByaW50YWJsZVN0cmluZyAoU0laRSAoMikpIC0tIElTIDMxNjYgY29kZXMKaWQtYXQtc2VyaWFsTnVtYmVyICAgICAgIEF0dHJpYnV0ZVR5cGUgICA6Oj0gICAgIHtpZC1hdCA1fQpYNTIwc2VyaWFsTnVtYmVyIDo6PSAgICAgUHJpbnRhYmxlU3RyaW5nCmlkLWF0LXRlbGVwaG9uZU51bWJlciAgICAgICBBdHRyaWJ1dGVUeXBlICAgOjo9ICAgICB7aWQtYXQgMjB9Clg1MjB0ZWxlcGhvbmVOdW1iZXIgOjo9ICAgRSgxLi5NQVgpKSwKICAgICAgLS0gSUE1U3RyaW5nIGlzIGFFUiAgLS0gKCBpZC1xdC1jcHMgfCBpZC1xdC11bm90aWNlICkKQ1BTdXJJWkUoMS4uTUFYKSksCiAgICAgIC0tIElBNVN0cmluZyBpcyBhRVIgIC0tICggaWQtcXQtY3BzIHwgaWQtcXQtdW5vdGljZSApCkNQU3VyaSA6Oj0gSUE1U3RyaW5nClVzZXJOb3RpY2UgOjo9IFNFUVVFTkNFIHsKICAgICBub3RpY2VSZWYgICAgICAgIE5vdGljZVJlZmVyZW5jZSBPUFRJT05BTCwKICAgICBleHBsaWNpdFRleHQgICAgIERpc3BsYXlUZXh0IE9QVElPTkFMfQpOb3RpY2VSZWZlcmVuY2UgOjo9IFNFUVVFTkNFIHsKICAgICBvcmdhbml6YXRpb24gICAgIERpc3BsYXlUZXh0LAogICAgIG5vdGljZU51bWJlcnMgICAgU0VRVUVOQ0UgT0YgSU5URUdFUiB9CkRpc3BsYXlUZXh0IDo6PSBDSE9JQ0UgewogICAgIHZpc2libGVTdHJpbmcgICAgVmlzaWJsZVN0cmluZyAgKFNJWkUgKDEuLjIwMCkpLAogICAgIGJtcFN0cmluZyAgICAgICAgQk1QU3RyaW5nICAgICAgKFNJWkUgKDEuLjIwMCkpLAogICAgIHV0ZjhTdHJpbmcgICAgICAgVVRGOFN0cmluZyAgICAgKFNJWkUgKDEuLjB9MCApKQoyaWQtY2UtcG9saWN5TWFwcGluZ3MgT0JKRUNUIElERU5USUZJRVIgOjo9ICB7IGlkLWNlIDMzIH0KUG9saWN5TWFwcGluZ3MgOjo9IFNFUVVFTkNFIFNJWkUgKDEuLk1BWCkgT0YgU0VRVUVOQ0UXewogICAgIGlzc3VlckRvbWFpblBvbGljeSAgICAgIENlcnRQb2xpY3lJZCwKICAgICBzdWJqZWN0RG9tYWluUG9saWN5ICAgICBDZXJ0UG9saWN5SWQgfQpEaXJlY3RvcnlTdHJpbmcgOjo9IENIT0lDRSB7CiAgICAgIHRlbGV0ZXhTdHJpbmcgICAgICAgICAgICAgVGVsZXRleFN0cmluZyAoU0laRSAoMS4uTUFYKSksCiAgICAgIHByaW50YWJsZVN0cmluZyAgICAgICAgICAgUHJpbnRhYmxlU3RyaW5nIChTSVpFICgxLi5NQVgpKSwKICAgICAgdW5pdmVyc2FsU3RyaW5nICAgICAgICAgICAgVW5pdmVyc2FsU3RyaW5nIChTSVpFICgxLi5NQVgpKSwKICAgICAgdXRmOFN0cmluZyAgICAgICAgICAgICAgVVRGOFN0cmluZyAoU0laRSAoMS4uTUFYKSksCiAgICAgIGJtcFN0cmluZyAgICAgICAgICAgICAgIEJNUFN0cmluZyAoU0laRSgxLi5NQVgpKSwKICAgICAgLS0gSUE1U3RyaW5nIGlzIGFkZGVkIGhlcmUgdG8gaGFuZGxlIG9sZCBVSUQgZW5jb2RlZCBhcyBpYTVTdHJpbmcgLS0KICAgICAgLS0gU2VlIHRlc3RzL3VzZXJpZC8gZm9yIG1vcmUgaW5mb3JtYXRpb24uICBJdCBzaG91bGRuJ3QgYmUgaGVyZSwgLS0KICAgICAgLS0gc28gaWYgaXQgY2F1c2VzIHByb2JsZW1zLCBjb25zaWRlcmluZyBkcm9wcGluZyBpdC4gLS0KICAgICAgaWE1U3RyaW5nICAgICAgICAgICAgIGAgSWcKaWQtYXQtY29tbW9uTmFtZSAgICAgICAgQXR0cmlidXRlVHlwZSAgIDo6PSAgICAge2lkLWF0IDN9Clg1MjBDb21tb25OYW1lICA6Oj0gICAgICBEaXJlY3RvcnlTdHJpbmcKaWQtYXQtbG9jYWxpdHlOYW1lICAgICAgQXR0ZW5zaW9ucyAgICAgIFszXSAgRVhQTElDSVQgRXh0ZW5zaW9ucyBPUFRJT05BTAogICAgICAgICAgICAgICAgICAgICAgICAgIC0tIElmIHByZXNlbnQsIHZlcnNpb24gc2hhbGwgYmUgdjMgLS0KfQpWZXJzaW9uICA6Oj0gIElOVEVHRVJ+ICB7ICB2MSgwKSwgdjIoMSksIHYzKDIpICB9CkNlcnRpZmljYXRlU2VyaWFsTnVtYmVyICA6Oj0gIElOVEVHRVIKVmFsaWRpdHkgOjo9IFNFUVVFTkNFIA==