YQ0NCgAAAABDGnxjfWAAAOMAAAAAAAAAAAAAAAAAAAAADgAAAEAAAABzggIAAGQAWgBkAVoBZAKgAmUDZQRlAYMCoQFaBWQDZARsBloGZANkBGwHWgdlBmoIZAMZAGQFawJaCWUJcj5lBFoKZQZqC6AMZAahAXKIZANkBGwLWgtlC6ANoQBkBRkAZAMZAFoOZQ6gDGQHoQFycmQIWg9xjmUOoAxkCaEBcoJkCloPcY5kC1oPbgZlBmoLWg9kNGQNZA6EAVoQZDVkD2QQhAFaEWQ2ZBFkEoQBWhJkN2QTZBSEAVoTZDhkFmQXhAFaFGQ5ZBhkGYQBWhVkOmQaZBuEAVoWRwBkHGQdhABkHWUXgwNaGGQeZB+EAFoZZCBkIYQAWhpkImQjhABaG2QkZCWEAFocZQ9kCGsCkAFyiHoQZANkBGwdWh5lGlofVwBuaAQAZSCQAXmGAQABAAEAehRkA2QmbCFtIloiAQBlG1ofVwBuPgQAZSCQAXmAAQABAAEAehBkA2QEbCNaJGUcWh9XAG4YBABlIJABeXoBAAEAAQBlGVofWQBuAjAAWQBuAjAAWQBuAjAAZSVkJ2sCkAJyfmQoWiZkKVonZCpaKGUpZCtlBRYAgwEBAGUpZCyDAQEAZRhlJmUnZC1kLo0DWiplKEQAXRxaK2UpZC9lK2UsZSplK4MCZgIWAIMBAQCQAXHEZSlkMIMBAQBlGGUmZSeDAloqZShEAF0cWitlKWQvZStlLGUqZSuDAmYCFgCDAQEAkAFx+GUpZDGDAQEAZRhlJoMBWiplKEQAXRxaK2UpZC9lK2UsZSplK4MCZgIWAIMBAQCQAnEqZSlkMoMBAQBlGGUmZAxkM40CWiplKEQAXRxaK2UpZC9lK2UsZSplK4MCZgIWAIMBAQCQAnFgZARTACk7enlVdGlsaXRpZXMgZm9yIGRldGVybWluaW5nIGFwcGxpY2F0aW9uLXNwZWNpZmljIGRpcnMuCgpTZWUgPGh0dHA6Ly9naXRodWIuY29tL0FjdGl2ZVN0YXRlL2FwcGRpcnM+IGZvciBkZXRhaWxzIGFuZCB1c2FnZS4KKQPpAQAAAOkEAAAA6QMAAADaAS7pAAAAAE5yAwAAANoEamF2YdoHV2luZG93c9oFd2luMzJaA01hY9oGZGFyd2luWgZsaW51eDJGYwQAAAAAAAAAAAAAAAYAAAAGAAAAQwAAAHPGAAAAdABkAWsCcl58AWQCdQByFHwAfQF8A3IcZANwHmQEfQR0AWoCoAN0BHwEgwGhAX0FfAByrHwBZAV1AXJOdAFqAqAFfAV8AXwAoQN9BXGsdAFqAqAFfAV8AKECfQVuTnQAZAZrAnKGdAFqAqAGZAehAX0FfAByrHQBagKgBXwFfAChAn0FbiZ0AaAHZAh0AWoCoAZkCaEBoQJ9BXwAcqx0AWoCoAV8BXwAoQJ9BXwAcsJ8AnLCdAFqAqAFfAV8AqECfQV8BVMAKQphSgcAAFJldHVybiBmdWxsIHBhdGggdG8gdGhlIHVzZXItc3BlY2lmaWMgZGF0YSBkaXIgZm9yIHRoaXMgYXBwbGljYXRpb24uCgogICAgICAgICJhcHBuYW1lIiBpcyB0aGUgbmFtZSBvZiBhcHBsaWNhdGlvbi4KICAgICAgICAgICAgSWYgTm9uZSwganVzdCB0aGUgc3lzdGVtIGRpcmVjdG9yeSBpcyByZXR1cm5lZC4KICAgICAgICAiYXBwYXV0aG9yIiAob25seSB1c2VkIG9uIFdpbmRvd3MpIGlzIHRoZSBuYW1lIG9mIHRoZQogICAgICAgICAgICBhcHBhdXRob3Igb3IgZGlzdHJpYnV0aW5nIGJvZHkgZm9yIHRoaXMgYXBwbGljYXRpb24uIFR5cGljYWxseQogICAgICAgICAgICBpdCBpcyB0aGUgb3duaW5nIGNvbXBhbnkgbmFtZS4gVGhpcyBmYWxscyBiYWNrIHRvIGFwcG5hbWUuIFlvdSBtYXkKICAgICAgICAgICAgcGFzcyBGYWxzZSB0byBkaXNhYmxlIGl0LgogICAgICAgICJ2ZXJzaW9uIiBpcyBhbiBvcHRpb25hbCB2ZXJzaW9uIHBhdGggZWxlbWVudCB0byBhcHBlbmQgdG8gdGhlCiAgICAgICAgICAgIHBhdGguIFlvdSBtaWdodCB3YW50IHRvIHVzZSB0aGlzIGlmIHlvdSB3YW50IG11bHRpcGxlIHZlcnNpb25zCiAgICAgICAgICAgIG9mIHlvdXIgYXBwIHRvIGJlIGFibGUgdG8gcnVuIGluZGVwZW5kZW50bHkuIElmIHVzZWQsIHRoaXMKICAgICAgICAgICAgd291bGQgdHlwaWNhbGx5IGJlICI8bWFqb3I+LjxtaW5vcj4iLgogICAgICAgICAgICBPbmx5IGFwcGxpZWQgd2hlbiBhcHBuYW1lIGlzIHByZXNlbnQuCiAgICAgICAgInJvYW1pbmciIChib29sZWFuLCBkZWZhdWx0IEZhbHNlKSBjYW4gYmUgc2V0IFRydWUgdG8gdXNlIHRoZSBXaW5kb3dzCiAgICAgICAgICAgIHJvYW1pbmcgYXBwZGF0YSBkaXJlY3RvcnkuIFRoYXQgbWVhbnMgdGhhdCBmb3IgdXNlcnMgb24gYSBXaW5kb3dzCiAgICAgICAgICAgIG5ldHdvcmsgc2V0dXAgZm9yIHJvYW1pbmcgcHJvZmlsZXMsIHRoaXMgdXNlciBkYXRhIHdpbGwgYmUKICAgICAgICAgICAgc3luYydkIG9uIGxvZ2luLiBTZWUKICAgICAgICAgICAgPGh0dHA6Ly90ZWNobmV0Lm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9jYzc2NjQ4OShXUy4xMCkuYXNweD4KICAgICAgICAgICAgZm9yIGEgZGlzY3Vzc2lvbiBvZiBpc3N1ZXMuCgogICAgVHlwaWNhbCB1c2VyIGRhdGEgZGlyZWN0b3JpZXMgYXJlOgogICAgICAgIE1hYyBPUyBYOiAgICAgICAgICAgICAgIH4vTGlicmFyeS9BcHBsaWNhdGlvbiBTdXBwb3J0LzxBcHBOYW1lPgogICAgICAgIFVuaXg6ICAgICAgICAgICAgICAgICAgIH4vLmxvY2FsL3NoYXJlLzxBcHBOYW1lPiAgICAjIG9yIGluICRYREdfREFUQV9IT01FLCBpZiBkZWZpbmVkCiAgICAgICAgV2luIFhQIChub3Qgcm9hbWluZyk6ICAgQzpcRG9jdW1lbnRzIGFuZCBTZXR0aW5nc1w8dXNlcm5hbWU+XEFwcGxpY2F0aW9uIERhdGFcPEFwcEF1dGhvcj5cPEFwcE5hbWU+CiAgICAgICAgV2luIFhQIChyb2FtaW5nKTogICAgICAgQzpcRG9jdW1lbnRzIGFuZCBTZXR0aW5nc1w8dXNlcm5hbWU+XExvY2FsIFNldHRpbmdzXEFwcGxpY2F0aW9uIERhdGFcPEFwcEF1dGhvcj5cPEFwcE5hbWU+CiAgICAgICAgV2luIDcgIChub3Qgcm9hbWluZyk6ICAgQzpcVXNlcnNcPHVzZXJuYW1lPlxBcHBEYXRhXExvY2FsXDxBcHBBdXRob3I+XDxBcHBOYW1lPgogICAgICAgIFdpbiA3ICAocm9hbWluZyk6ICAgICAgIEM6XFVzZXJzXDx1c2VybmFtZT5cQXBwRGF0YVxSb2FtaW5nXDxBcHBBdXRob3I+XDxBcHBOYW1lPgoKICAgIEZvciBVbml4LCB3ZSBmb2xsb3cgdGhlIFhERyBzcGVjIGFuZCBzdXBwb3J0ICRYREdfREFUQV9IT01FLgogICAgVGhhdCBtZWFucywgYnkgZGVmYXVsdCAifi8ubG9jYWwvc2hhcmUvPEFwcE5hbWU+Ii4KICAgIHIIAAAATtoNQ1NJRExfQVBQREFUQdoTQ1NJRExfTE9DQUxfQVBQREFUQUZyCQAAAHoefi9MaWJyYXJ5L0FwcGxpY2F0aW9uIFN1cHBvcnQv2g1YREdfREFUQV9IT01Feg5+Ly5sb2NhbC9zaGFyZakI2gZzeXN0ZW3aAm9z2gRwYXRo2ghub3JtcGF0aNoPX2dldF93aW5fZm9sZGVy2gRqb2lu2gpleHBhbmR1c2Vy2gZnZXRlbnYpBtoHYXBwbmFtZdoJYXBwYXV0aG9y2gd2ZXJzaW9u2gdyb2FtaW5n2gVjb25zdHIQAAAAqQByGwAAAPpaL2hvbWUvaG5pL1RvcG1ldGFsU2UtRFBTL3ZlbnYvbGliL3B5dGhvbjMuOS9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9hcHBkaXJzLnB52g11c2VyX2RhdGFfZGlyLQAAAHMmAAAAACAIAQgBBAEMARABBAEIARICEAEIAQwBBAEQAhQBBAEOAQgBDgFyHQAAAGMEAAAAAAAAAAAAAAAGAAAABwAAAAMAAABzDAEAAHQAZAFrAnJSfAFkAnUAchSIAH0BdAFqAqADdARkA4MBoQF9BIgAcu58AWQEdQFyQnQBagKgBXwEfAGIAKEDfQRx7nQBagKgBXwEiAChAn0Ebpx0AGQFawJyenQBagKgBmQGoQF9BIgAcu50AWoCoAV8BIgAoQJ9BG50dAGgB2QHdAFqCKAFZAhkCWcCoQGhAn0EZApkC4QAfASgCXQBagihAUQAgwF9BYgActB8AnK+dAFqAqAFiAB8AqECiQCHAGYBZAxkC4QIfAVEAIMBfQV8A3LidAFqCKAFfAWhAX0Ebgh8BWQNGQB9BHwEUwCIAJABcgh8ApABcgh0AWoCoAV8BHwCoQJ9BHwEUwApDmFpBgAAUmV0dXJuIGZ1bGwgcGF0aCB0byB0aGUgdXNlci1zaGFyZWQgZGF0YSBkaXIgZm9yIHRoaXMgYXBwbGljYXRpb24uCgogICAgICAgICJhcHBuYW1lIiBpcyB0aGUgbmFtZSBvZiBhcHBsaWNhdGlvbi4KICAgICAgICAgICAgSWYgTm9uZSwganVzdCB0aGUgc3lzdGVtIGRpcmVjdG9yeSBpcyByZXR1cm5lZC4KICAgICAgICAiYXBwYXV0aG9yIiAob25seSB1c2VkIG9uIFdpbmRvd3MpIGlzIHRoZSBuYW1lIG9mIHRoZQogICAgICAgICAgICBhcHBhdXRob3Igb3IgZGlzdHJpYnV0aW5nIGJvZHkgZm9yIHRoaXMgYXBwbGljYXRpb24uIFR5cGljYWxseQogICAgICAgICAgICBpdCBpcyB0aGUgb3duaW5nIGNvbXBhbnkgbmFtZS4gVGhpcyBmYWxscyBiYWNrIHRvIGFwcG5hbWUuIFlvdSBtYXkKICAgICAgICAgICAgcGFzcyBGYWxzZSB0byBkaXNhYmxlIGl0LgogICAgICAgICJ2ZXJzaW9uIiBpcyBhbiBvcHRpb25hbCB2ZXJzaW9uIHBhdGggZWxlbWVudCB0byBhcHBlbmQgdG8gdGhlCiAgICAgICAgICAgIHBhdGguIFlvdSBtaWdodCB3YW50IHRvIHVzZSB0aGlzIGlmIHlvdSB3YW50IG11bHRpcGxlIHZlcnNpb25zCiAgICAgICAgICAgIG9mIHlvdXIgYXBwIHRvIGJlIGFibGUgdG8gcnVuIGluZGVwZW5kZW50bHkuIElmIHVzZWQsIHRoaXMKICAgICAgICAgICAgd291bGQgdHlwaWNhbGx5IGJlICI8bWFqb3I+LjxtaW5vcj4iLgogICAgICAgICAgICBPbmx5IGFwcGxpZWQgd2hlbiBhcHBuYW1lIGlzIHByZXNlbnQuCiAgICAgICAgIm11bHRpcGF0aCIgaXMgYW4gb3B0aW9uYWwgcGFyYW1ldGVyIG9ubHkgYXBwbGljYWJsZSB0byAqbml4CiAgICAgICAgICAgIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBlbnRpcmUgbGlzdCBvZiBkYXRhIGRpcnMgc2hvdWxkIGJlCiAgICAgICAgICAgIHJldHVybmVkLiBCeSBkZWZhdWx0LCB0aGUgZmlyc3QgaXRlbSBmcm9tIFhER19EQVRBX0RJUlMgaXMKICAgICAgICAgICAgcmV0dXJuZWQsIG9yICcvdXNyL2xvY2FsL3NoYXJlLzxBcHBOYW1lPicsCiAgICAgICAgICAgIGlmIFhER19EQVRBX0RJUlMgaXMgbm90IHNldAoKICAgIFR5cGljYWwgc2l0ZSBkYXRhIGRpcmVjdG9yaWVzIGFyZToKICAgICAgICBNYWMgT1MgWDogICAvTGlicmFyeS9BcHBsaWNhdGlvbiBTdXBwb3J0LzxBcHBOYW1lPgogICAgICAgIFVuaXg6ICAgICAgIC91c3IvbG9jYWwvc2hhcmUvPEFwcE5hbWU+IG9yIC91c3Ivc2hhcmUvPEFwcE5hbWU+CiAgICAgICAgV2luIFhQOiAgICAgQzpcRG9jdW1lbnRzIGFuZCBTZXR0aW5nc1xBbGwgVXNlcnNcQXBwbGljYXRpb24gRGF0YVw8QXBwQXV0aG9yPlw8QXBwTmFtZT4KICAgICAgICBWaXN0YTogICAgICAoRmFpbCEgIkM6XFByb2dyYW1EYXRhIiBpcyBhIGhpZGRlbiAqc3lzdGVtKiBkaXJlY3Rvcnkgb24gVmlzdGEuKQogICAgICAgIFdpbiA3OiAgICAgIEM6XFByb2dyYW1EYXRhXDxBcHBBdXRob3I+XDxBcHBOYW1lPiAgICMgSGlkZGVuLCBidXQgd3JpdGVhYmxlIG9uIFdpbiA3LgoKICAgIEZvciBVbml4LCB0aGlzIGlzIHVzaW5nIHRoZSAkWERHX0RBVEFfRElSU1swXSBkZWZhdWx0LgoKICAgIFdBUk5JTkc6IERvIG5vdCB1c2UgdGhpcyBvbiBXaW5kb3dzLiBTZWUgdGhlIFZpc3RhLUZhaWwgbm90ZSBhYm92ZSBmb3Igd2h5LgogICAgcggAAABO2hRDU0lETF9DT01NT05fQVBQREFUQUZyCQAAAHocL0xpYnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydNoNWERHX0RBVEFfRElSU3oQL3Vzci9sb2NhbC9zaGFyZXoKL3Vzci9zaGFyZWMBAAAAAAAAAAAAAAACAAAABwAAAFMAAABzIAAAAGcAfABdGH0BdABqAaACfAGgA3QAagShAaEBkQJxBFMAchsAAACpBXIPAAAAchAAAAByFAAAANoGcnN0cmlw2gNzZXCpAtoCLjDaAXhyGwAAAHIbAAAAchwAAADaCjxsaXN0Y29tcD6VAAAA8wAAAAB6IXNpdGVfZGF0YV9kaXIuPGxvY2Fscz4uPGxpc3Rjb21wPmMBAAAAAAAAAAAAAAACAAAABgAAABMAAABzHAAAAGcAfABdFH0BdABqAaACfAGIAGcCoQGRAnEEUwByGwAAAKkDcg8AAAByIgAAAHITAAAAciMAAACpAXIWAAAAchsAAAByHAAAAHImAAAAmQAAAHInAAAAcgUAAAApCnIOAAAAcg8AAAByEAAAAHIRAAAAchIAAAByEwAAAHIUAAAAchUAAADaB3BhdGhzZXDaBXNwbGl0qQZyFgAAAHIXAAAAchgAAADaCW11bHRpcGF0aHIQAAAA2ghwYXRobGlzdHIbAAAAcikAAAByHAAAANoNc2l0ZV9kYXRhX2RpcmQAAABzNgAAAAAfCAEIAQQBEAEEAQgBEgIQAQgBDAEEARAEBgEO/wQCFgEEAQQBDgESAgQBDgIIAQQCDAEOAXIvAAAAYwQAAAAAAAAAAAAAAAUAAAAGAAAAQwAAAHNYAAAAdABkAXYAchh0AXwAfAFkAnwDgwR9BG4mdAKgA2QDdAJqBKAFZAShAaECfQR8AHI+dAJqBKAGfAR8AKECfQR8AHJUfAJyVHQCagSgBnwEfAKhAn0EfARTACkFYdQFAABSZXR1cm4gZnVsbCBwYXRoIHRvIHRoZSB1c2VyLXNwZWNpZmljIGNvbmZpZyBkaXIgZm9yIHRoaXMgYXBwbGljYXRpb24uCgogICAgICAgICJhcHBuYW1lIiBpcyB0aGUgbmFtZSBvZiBhcHBsaWNhdGlvbi4KICAgICAgICAgICAgSWYgTm9uZSwganVzdCB0aGUgc3lzdGVtIGRpcmVjdG9yeSBpcyByZXR1cm5lZC4KICAgICAgICAiYXBwYXV0aG9yIiAob25seSB1c2VkIG9uIFdpbmRvd3MpIGlzIHRoZSBuYW1lIG9mIHRoZQogICAgICAgICAgICBhcHBhdXRob3Igb3IgZGlzdHJpYnV0aW5nIGJvZHkgZm9yIHRoaXMgYXBwbGljYXRpb24uIFR5cGljYWxseQogICAgICAgICAgICBpdCBpcyB0aGUgb3duaW5nIGNvbXBhbnkgbmFtZS4gVGhpcyBmYWxscyBiYWNrIHRvIGFwcG5hbWUuIFlvdSBtYXkKICAgICAgICAgICAgcGFzcyBGYWxzZSB0byBkaXNhYmxlIGl0LgogICAgICAgICJ2ZXJzaW9uIiBpcyBhbiBvcHRpb25hbCB2ZXJzaW9uIHBhdGggZWxlbWVudCB0byBhcHBlbmQgdG8gdGhlCiAgICAgICAgICAgIHBhdGguIFlvdSBtaWdodCB3YW50IHRvIHVzZSB0aGlzIGlmIHlvdSB3YW50IG11bHRpcGxlIHZlcnNpb25zCiAgICAgICAgICAgIG9mIHlvdXIgYXBwIHRvIGJlIGFibGUgdG8gcnVuIGluZGVwZW5kZW50bHkuIElmIHVzZWQsIHRoaXMKICAgICAgICAgICAgd291bGQgdHlwaWNhbGx5IGJlICI8bWFqb3I+LjxtaW5vcj4iLgogICAgICAgICAgICBPbmx5IGFwcGxpZWQgd2hlbiBhcHBuYW1lIGlzIHByZXNlbnQuCiAgICAgICAgInJvYW1pbmciIChib29sZWFuLCBkZWZhdWx0IEZhbHNlKSBjYW4gYmUgc2V0IFRydWUgdG8gdXNlIHRoZSBXaW5kb3dzCiAgICAgICAgICAgIHJvYW1pbmcgYXBwZGF0YSBkaXJlY3RvcnkuIFRoYXQgbWVhbnMgdGhhdCBmb3IgdXNlcnMgb24gYSBXaW5kb3dzCiAgICAgICAgICAgIG5ldHdvcmsgc2V0dXAgZm9yIHJvYW1pbmcgcHJvZmlsZXMsIHRoaXMgdXNlciBkYXRhIHdpbGwgYmUKICAgICAgICAgICAgc3luYydkIG9uIGxvZ2luLiBTZWUKICAgICAgICAgICAgPGh0dHA6Ly90ZWNobmV0Lm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9jYzc2NjQ4OShXUy4xMCkuYXNweD4KICAgICAgICAgICAgZm9yIGEgZGlzY3Vzc2lvbiBvZiBpc3N1ZXMuCgogICAgVHlwaWNhbCB1c2VyIGNvbmZpZyBkaXJlY3RvcmllcyBhcmU6CiAgICAgICAgTWFjIE9TIFg6ICAgICAgICAgICAgICAgc2FtZSBhcyB1c2VyX2RhdGFfZGlyCiAgICAgICAgVW5peDogICAgICAgICAgICAgICAgICAgfi8uY29uZmlnLzxBcHBOYW1lPiAgICAgIyBvciBpbiAkWERHX0NPTkZJR19IT01FLCBpZiBkZWZpbmVkCiAgICAgICAgV2luICo6ICAgICAgICAgICAgICAgICAgc2FtZSBhcyB1c2VyX2RhdGFfZGlyCgogICAgRm9yIFVuaXgsIHdlIGZvbGxvdyB0aGUgWERHIHNwZWMgYW5kIHN1cHBvcnQgJFhER19DT05GSUdfSE9NRS4KICAgIFRoYXQgbWVhbnMsIGJ5IGRlZmF1bHQgIn4vLmNvbmZpZy88QXBwTmFtZT4iLgogICAgqQJyCAAAAHIJAAAATtoPWERHX0NPTkZJR19IT01Fegl+Ly5jb25maWepB3IOAAAAch0AAAByDwAAAHIVAAAAchAAAAByFAAAAHITAAAAqQVyFgAAAHIXAAAAchgAAAByGQAAAHIQAAAAchsAAAByGwAAAHIcAAAA2g91c2VyX2NvbmZpZ19kaXKmAAAAcxAAAAAAHQgBEAIUAQQBDgEIAQ4BcjQAAABjBAAAAAAAAAAAAAAABgAAAAQAAAADAAAAc5IAAAB0AGQBdgByKnQBiAB8AYMCfQSIAHKOfAJyjnQCagOgBHwEfAKhAn0EbmR0AqAFZAJkA6ECfQRkBGQFhAB8BKAGdAJqB6EBRACDAX0FiABydHwCcmJ0AmoDoASIAHwCoQKJAIcAZgFkBmQFhAh8BUQAgwF9BXwDcoZ0AmoHoAR8BaEBfQRuCHwFZAcZAH0EfARTACkIYQcGAABSZXR1cm4gZnVsbCBwYXRoIHRvIHRoZSB1c2VyLXNoYXJlZCBkYXRhIGRpciBmb3IgdGhpcyBhcHBsaWNhdGlvbi4KCiAgICAgICAgImFwcG5hbWUiIGlzIHRoZSBuYW1lIG9mIGFwcGxpY2F0aW9uLgogICAgICAgICAgICBJZiBOb25lLCBqdXN0IHRoZSBzeXN0ZW0gZGlyZWN0b3J5IGlzIHJldHVybmVkLgogICAgICAgICJhcHBhdXRob3IiIChvbmx5IHVzZWQgb24gV2luZG93cykgaXMgdGhlIG5hbWUgb2YgdGhlCiAgICAgICAgICAgIGFwcGF1dGhvciBvciBkaXN0cmlidXRpbmcgYm9keSBmb3IgdGhpcyBhcHBsaWNhdGlvbi4gVHlwaWNhbGx5CiAgICAgICAgICAgIGl0IGlzIHRoZSBvd25pbmcgY29tcGFueSBuYW1lLiBUaGlzIGZhbGxzIGJhY2sgdG8gYXBwbmFtZS4gWW91IG1heQogICAgICAgICAgICBwYXNzIEZhbHNlIHRvIGRpc2FibGUgaXQuCiAgICAgICAgInZlcnNpb24iIGlzIGFuIG9wdGlvbmFsIHZlcnNpb24gcGF0aCBlbGVtZW50IHRvIGFwcGVuZCB0byB0aGUKICAgICAgICAgICAgcGF0aC4gWW91IG1pZ2h0IHdhbnQgdG8gdXNlIHRoaXMgaWYgeW91IHdhbnQgbXVsdGlwbGUgdmVyc2lvbnMKICAgICAgICAgICAgb2YgeW91ciBhcHAgdG8gYmUgYWJsZSB0byBydW4gaW5kZXBlbmRlbnRseS4gSWYgdXNlZCwgdGhpcwogICAgICAgICAgICB3b3VsZCB0eXBpY2FsbHkgYmUgIjxtYWpvcj4uPG1pbm9yPiIuCiAgICAgICAgICAgIE9ubHkgYXBwbGllZCB3aGVuIGFwcG5hbWUgaXMgcHJlc2VudC4KICAgICAgICAibXVsdGlwYXRoIiBpcyBhbiBvcHRpb25hbCBwYXJhbWV0ZXIgb25seSBhcHBsaWNhYmxlIHRvICpuaXgKICAgICAgICAgICAgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlIGVudGlyZSBsaXN0IG9mIGNvbmZpZyBkaXJzIHNob3VsZCBiZQogICAgICAgICAgICByZXR1cm5lZC4gQnkgZGVmYXVsdCwgdGhlIGZpcnN0IGl0ZW0gZnJvbSBYREdfQ09ORklHX0RJUlMgaXMKICAgICAgICAgICAgcmV0dXJuZWQsIG9yICcvZXRjL3hkZy88QXBwTmFtZT4nLCBpZiBYREdfQ09ORklHX0RJUlMgaXMgbm90IHNldAoKICAgIFR5cGljYWwgc2l0ZSBjb25maWcgZGlyZWN0b3JpZXMgYXJlOgogICAgICAgIE1hYyBPUyBYOiAgIHNhbWUgYXMgc2l0ZV9kYXRhX2RpcgogICAgICAgIFVuaXg6ICAgICAgIC9ldGMveGRnLzxBcHBOYW1lPiBvciAkWERHX0NPTkZJR19ESVJTW2ldLzxBcHBOYW1lPiBmb3IgZWFjaCB2YWx1ZSBpbgogICAgICAgICAgICAgICAgICAgICRYREdfQ09ORklHX0RJUlMKICAgICAgICBXaW4gKjogICAgICBzYW1lIGFzIHNpdGVfZGF0YV9kaXIKICAgICAgICBWaXN0YTogICAgICAoRmFpbCEgIkM6XFByb2dyYW1EYXRhIiBpcyBhIGhpZGRlbiAqc3lzdGVtKiBkaXJlY3Rvcnkgb24gVmlzdGEuKQoKICAgIEZvciBVbml4LCB0aGlzIGlzIHVzaW5nIHRoZSAkWERHX0NPTkZJR19ESVJTWzBdIGRlZmF1bHQsIGlmIG11bHRpcGF0aD1GYWxzZQoKICAgIFdBUk5JTkc6IERvIG5vdCB1c2UgdGhpcyBvbiBXaW5kb3dzLiBTZWUgdGhlIFZpc3RhLUZhaWwgbm90ZSBhYm92ZSBmb3Igd2h5LgogICAgcjAAAADaD1hER19DT05GSUdfRElSU3oIL2V0Yy94ZGdjAQAAAAAAAAAAAAAAAgAAAAcAAABTAAAAcyAAAABnAHwAXRh9AXQAagGgAnwBoAN0AGoEoQGhAZECcQRTAHIbAAAAciAAAAByIwAAAHIbAAAAchsAAAByHAAAAHImAAAA9AAAAHInAAAAeiNzaXRlX2NvbmZpZ19kaXIuPGxvY2Fscz4uPGxpc3Rjb21wPmMBAAAAAAAAAAAAAAACAAAABgAAABMAAABzHAAAAGcAfABdFH0BdABqAaACfAGIAGcCoQGRAnEEUwByGwAAAHIoAAAAciMAAAByKQAAAHIbAAAAchwAAAByJgAAAPgAAAByJwAAAHIFAAAAKQhyDgAAAHIvAAAAcg8AAAByEAAAAHITAAAAchUAAAByKwAAAHIqAAAAciwAAAByGwAAAHIpAAAAchwAAADaD3NpdGVfY29uZmlnX2Rpcs4AAABzHAAAAAAeCAEKAQgBEAQMARYBBAEEAQ4BEgIEAQ4CCAFyNgAAAFRjBAAAAAAAAAAAAAAABQAAAAYAAABDAAAAc8wAAAB0AGQBawJyZHwBZAJ1AHIUfAB9AXQBagKgA3QEZAODAaEBfQR8AHKyfAFkBHUBckJ0AWoCoAV8BHwBfAChA30Ebg50AWoCoAV8BHwAoQJ9BHwDcrJ0AWoCoAV8BGQFoQJ9BG5OdABkBmsCcox0AWoCoAZkB6EBfQR8AHKydAFqAqAFfAR8AKECfQRuJnQBoAdkCHQBagKgBmQJoQGhAn0EfABysnQBagKgBXwEfAChAn0EfAByyHwCcsh0AWoCoAV8BHwCoQJ9BHwEUwApCmEEBwAAUmV0dXJuIGZ1bGwgcGF0aCB0byB0aGUgdXNlci1zcGVjaWZpYyBjYWNoZSBkaXIgZm9yIHRoaXMgYXBwbGljYXRpb24uCgogICAgICAgICJhcHBuYW1lIiBpcyB0aGUgbmFtZSBvZiBhcHBsaWNhdGlvbi4KICAgICAgICAgICAgSWYgTm9uZSwganVzdCB0aGUgc3lzdGVtIGRpcmVjdG9yeSBpcyByZXR1cm5lZC4KICAgICAgICAiYXBwYXV0aG9yIiAob25seSB1c2VkIG9uIFdpbmRvd3MpIGlzIHRoZSBuYW1lIG9mIHRoZQogICAgICAgICAgICBhcHBhdXRob3Igb3IgZGlzdHJpYnV0aW5nIGJvZHkgZm9yIHRoaXMgYXBwbGljYXRpb24uIFR5cGljYWxseQogICAgICAgICAgICBpdCBpcyB0aGUgb3duaW5nIGNvbXBhbnkgbmFtZS4gVGhpcyBmYWxscyBiYWNrIHRvIGFwcG5hbWUuIFlvdSBtYXkKICAgICAgICAgICAgcGFzcyBGYWxzZSB0byBkaXNhYmxlIGl0LgogICAgICAgICJ2ZXJzaW9uIiBpcyBhbiBvcHRpb25hbCB2ZXJzaW9uIHBhdGggZWxlbWVudCB0byBhcHBlbmQgdG8gdGhlCiAgICAgICAgICAgIHBhdGguIFlvdSBtaWdodCB3YW50IHRvIHVzZSB0aGlzIGlmIHlvdSB3YW50IG11bHRpcGxlIHZlcnNpb25zCiAgICAgICAgICAgIG9mIHlvdXIgYXBwIHRvIGJlIGFibGUgdG8gcnVuIGluZGVwZW5kZW50bHkuIElmIHVzZWQsIHRoaXMKICAgICAgICAgICAgd291bGQgdHlwaWNhbGx5IGJlICI8bWFqb3I+LjxtaW5vcj4iLgogICAgICAgICAgICBPbmx5IGFwcGxpZWQgd2hlbiBhcHBuYW1lIGlzIHByZXNlbnQuCiAgICAgICAgIm9waW5pb24iIChib29sZWFuKSBjYW4gYmUgRmFsc2UgdG8gZGlzYWJsZSB0aGUgYXBwZW5kaW5nIG9mCiAgICAgICAgICAgICJDYWNoZSIgdG8gdGhlIGJhc2UgYXBwIGRhdGEgZGlyIGZvciBXaW5kb3dzLiBTZWUKICAgICAgICAgICAgZGlzY3Vzc2lvbiBiZWxvdy4KCiAgICBUeXBpY2FsIHVzZXIgY2FjaGUgZGlyZWN0b3JpZXMgYXJlOgogICAgICAgIE1hYyBPUyBYOiAgIH4vTGlicmFyeS9DYWNoZXMvPEFwcE5hbWU+CiAgICAgICAgVW5peDogICAgICAgfi8uY2FjaGUvPEFwcE5hbWU+IChYREcgZGVmYXVsdCkKICAgICAgICBXaW4gWFA6ICAgICBDOlxEb2N1bWVudHMgYW5kIFNldHRpbmdzXDx1c2VybmFtZT5cTG9jYWwgU2V0dGluZ3NcQXBwbGljYXRpb24gRGF0YVw8QXBwQXV0aG9yPlw8QXBwTmFtZT5cQ2FjaGUKICAgICAgICBWaXN0YTogICAgICBDOlxVc2Vyc1w8dXNlcm5hbWU+XEFwcERhdGFcTG9jYWxcPEFwcEF1dGhvcj5cPEFwcE5hbWU+XENhY2hlCgogICAgT24gV2luZG93cyB0aGUgb25seSBzdWdnZXN0aW9uIGluIHRoZSBNU0ROIGRvY3MgaXMgdGhhdCBsb2NhbCBzZXR0aW5ncyBnbyBpbgogICAgdGhlIGBDU0lETF9MT0NBTF9BUFBEQVRBYCBkaXJlY3RvcnkuIFRoaXMgaXMgaWRlbnRpY2FsIHRvIHRoZSBub24tcm9hbWluZwogICAgYXBwIGRhdGEgZGlyICh0aGUgZGVmYXVsdCByZXR1cm5lZCBieSBgdXNlcl9kYXRhX2RpcmAgYWJvdmUpLiBBcHBzIHR5cGljYWxseQogICAgcHV0IGNhY2hlIGRhdGEgc29tZXdoZXJlICp1bmRlciogdGhlIGdpdmVuIGRpciBoZXJlLiBTb21lIGV4YW1wbGVzOgogICAgICAgIC4uLlxNb3ppbGxhXEZpcmVmb3hcUHJvZmlsZXNcPFByb2ZpbGVOYW1lPlxDYWNoZQogICAgICAgIC4uLlxBY21lXFN1cGVyQXBwXENhY2hlXDEuMAogICAgT1BJTklPTjogVGhpcyBmdW5jdGlvbiBhcHBlbmRzICJDYWNoZSIgdG8gdGhlIGBDU0lETF9MT0NBTF9BUFBEQVRBYCB2YWx1ZS4KICAgIFRoaXMgY2FuIGJlIGRpc2FibGVkIHdpdGggdGhlIGBvcGluaW9uPUZhbHNlYCBvcHRpb24uCiAgICByCAAAAE5yCwAAAEbaBUNhY2hlcgkAAAB6EH4vTGlicmFyeS9DYWNoZXPaDlhER19DQUNIRV9IT01Fegh+Ly5jYWNoZXINAAAAqQVyFgAAAHIXAAAAchgAAADaB29waW5pb25yEAAAAHIbAAAAchsAAAByHAAAANoOdXNlcl9jYWNoZV9kaXIBAQAAcygAAAAAIQgBCAEEARABBAEIARICDgEEARABCAEMAQQBEAIUAQQBDgEIAQ4BcjsAAABjBAAAAAAAAAAAAAAABQAAAAYAAABDAAAAc1gAAAB0AGQBdgByGHQBfAB8AWQCfAODBH0EbiZ0AqADZAN0AmoEoAVkBKEBoQJ9BHwAcj50AmoEoAZ8BHwAoQJ9BHwAclR8AnJUdAJqBKAGfAR8AqECfQR8BFMAKQVhEwYAAFJldHVybiBmdWxsIHBhdGggdG8gdGhlIHVzZXItc3BlY2lmaWMgc3RhdGUgZGlyIGZvciB0aGlzIGFwcGxpY2F0aW9uLgoKICAgICAgICAiYXBwbmFtZSIgaXMgdGhlIG5hbWUgb2YgYXBwbGljYXRpb24uCiAgICAgICAgICAgIElmIE5vbmUsIGp1c3QgdGhlIHN5c3RlbSBkaXJlY3RvcnkgaXMgcmV0dXJuZWQuCiAgICAgICAgImFwcGF1dGhvciIgKG9ubHkgdXNlZCBvbiBXaW5kb3dzKSBpcyB0aGUgbmFtZSBvZiB0aGUKICAgICAgICAgICAgYXBwYXV0aG9yIG9yIGRpc3RyaWJ1dGluZyBib2R5IGZvciB0aGlzIGFwcGxpY2F0aW9uLiBUeXBpY2FsbHkKICAgICAgICAgICAgaXQgaXMgdGhlIG93bmluZyBjb21wYW55IG5hbWUuIFRoaXMgZmFsbHMgYmFjayB0byBhcHBuYW1lLiBZb3UgbWF5CiAgICAgICAgICAgIHBhc3MgRmFsc2UgdG8gZGlzYWJsZSBpdC4KICAgICAgICAidmVyc2lvbiIgaXMgYW4gb3B0aW9uYWwgdmVyc2lvbiBwYXRoIGVsZW1lbnQgdG8gYXBwZW5kIHRvIHRoZQogICAgICAgICAgICBwYXRoLiBZb3UgbWlnaHQgd2FudCB0byB1c2UgdGhpcyBpZiB5b3Ugd2FudCBtdWx0aXBsZSB2ZXJzaW9ucwogICAgICAgICAgICBvZiB5b3VyIGFwcCB0byBiZSBhYmxlIHRvIHJ1biBpbmRlcGVuZGVudGx5LiBJZiB1c2VkLCB0aGlzCiAgICAgICAgICAgIHdvdWxkIHR5cGljYWxseSBiZSAiPG1ham9yPi48bWlub3I+Ii4KICAgICAgICAgICAgT25seSBhcHBsaWVkIHdoZW4gYXBwbmFtZSBpcyBwcmVzZW50LgogICAgICAgICJyb2FtaW5nIiAoYm9vbGVhbiwgZGVmYXVsdCBGYWxzZSkgY2FuIGJlIHNldCBUcnVlIHRvIHVzZSB0aGUgV2luZG93cwogICAgICAgICAgICByb2FtaW5nIGFwcGRhdGEgZGlyZWN0b3J5LiBUaGF0IG1lYW5zIHRoYXQgZm9yIHVzZXJzIG9uIGEgV2luZG93cwogICAgICAgICAgICBuZXR3b3JrIHNldHVwIGZvciByb2FtaW5nIHByb2ZpbGVzLCB0aGlzIHVzZXIgZGF0YSB3aWxsIGJlCiAgICAgICAgICAgIHN5bmMnZCBvbiBsb2dpbi4gU2VlCiAgICAgICAgICAgIDxodHRwOi8vdGVjaG5ldC5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvY2M3NjY0ODkoV1MuMTApLmFzcHg+CiAgICAgICAgICAgIGZvciBhIGRpc2N1c3Npb24gb2YgaXNzdWVzLgoKICAgIFR5cGljYWwgdXNlciBzdGF0ZSBkaXJlY3RvcmllcyBhcmU6CiAgICAgICAgTWFjIE9TIFg6ICBzYW1lIGFzIHVzZXJfZGF0YV9kaXIKICAgICAgICBVbml4OiAgICAgIH4vLmxvY2FsL3N0YXRlLzxBcHBOYW1lPiAgICMgb3IgaW4gJFhER19TVEFURV9IT01FLCBpZiBkZWZpbmVkCiAgICAgICAgV2luICo6ICAgICBzYW1lIGFzIHVzZXJfZGF0YV9kaXIKCiAgICBGb3IgVW5peCwgd2UgZm9sbG93IHRoaXMgRGViaWFuIHByb3Bvc2FsIDxodHRwczovL3dpa2kuZGViaWFuLm9yZy9YREdCYXNlRGlyZWN0b3J5U3BlY2lmaWNhdGlvbiNzdGF0ZT4KICAgIHRvIGV4dGVuZCB0aGUgWERHIHNwZWMgYW5kIHN1cHBvcnQgJFhER19TVEFURV9IT01FLgoKICAgIFRoYXQgbWVhbnMsIGJ5IGRlZmF1bHQgIn4vLmxvY2FsL3N0YXRlLzxBcHBOYW1lPiIuCiAgICByMAAAAE7aDlhER19TVEFURV9IT01Feg5+Ly5sb2NhbC9zdGF0ZXIyAAAAcjMAAAByGwAAAHIbAAAAchwAAADaDnVzZXJfc3RhdGVfZGlyOgEAAHMQAAAAAB8IARACFAEEAQ4BCAEOAXI9AAAAYwQAAAAAAAAAAAAAAAUAAAAFAAAAQwAAAHOIAAAAdABkAWsCciB0AWoCoAN0AWoCoARkAqEBfAChAn0Ebk50AGQDawJyTHQFfAB8AXwCgwN9BGQEfQJ8A3JudAFqAqADfARkBaECfQRuInQGfAB8AXwCgwN9BGQEfQJ8A3JudAFqAqADfARkBqECfQR8AHKEfAJyhHQBagKgA3wEfAKhAn0EfARTACkHYb0GAABSZXR1cm4gZnVsbCBwYXRoIHRvIHRoZSB1c2VyLXNwZWNpZmljIGxvZyBkaXIgZm9yIHRoaXMgYXBwbGljYXRpb24uCgogICAgICAgICJhcHBuYW1lIiBpcyB0aGUgbmFtZSBvZiBhcHBsaWNhdGlvbi4KICAgICAgICAgICAgSWYgTm9uZSwganVzdCB0aGUgc3lzdGVtIGRpcmVjdG9yeSBpcyByZXR1cm5lZC4KICAgICAgICAiYXBwYXV0aG9yIiAob25seSB1c2VkIG9uIFdpbmRvd3MpIGlzIHRoZSBuYW1lIG9mIHRoZQogICAgICAgICAgICBhcHBhdXRob3Igb3IgZGlzdHJpYnV0aW5nIGJvZHkgZm9yIHRoaXMgYXBwbGljYXRpb24uIFR5cGljYWxseQogICAgICAgICAgICBpdCBpcyB0aGUgb3duaW5nIGNvbXBhbnkgbmFtZS4gVGhpcyBmYWxscyBiYWNrIHRvIGFwcG5hbWUuIFlvdSBtYXkKICAgICAgICAgICAgcGFzcyBGYWxzZSB0byBkaXNhYmxlIGl0LgogICAgICAgICJ2ZXJzaW9uIiBpcyBhbiBvcHRpb25hbCB2ZXJzaW9uIHBhdGggZWxlbWVudCB0byBhcHBlbmQgdG8gdGhlCiAgICAgICAgICAgIHBhdGguIFlvdSBtaWdodCB3YW50IHRvIHVzZSB0aGlzIGlmIHlvdSB3YW50IG11bHRpcGxlIHZlcnNpb25zCiAgICAgICAgICAgIG9mIHlvdXIgYXBwIHRvIGJlIGFibGUgdG8gcnVuIGluZGVwZW5kZW50bHkuIElmIHVzZWQsIHRoaXMKICAgICAgICAgICAgd291bGQgdHlwaWNhbGx5IGJlICI8bWFqb3I+LjxtaW5vcj4iLgogICAgICAgICAgICBPbmx5IGFwcGxpZWQgd2hlbiBhcHBuYW1lIGlzIHByZXNlbnQuCiAgICAgICAgIm9waW5pb24iIChib29sZWFuKSBjYW4gYmUgRmFsc2UgdG8gZGlzYWJsZSB0aGUgYXBwZW5kaW5nIG9mCiAgICAgICAgICAgICJMb2dzIiB0byB0aGUgYmFzZSBhcHAgZGF0YSBkaXIgZm9yIFdpbmRvd3MsIGFuZCAibG9nIiB0byB0aGUKICAgICAgICAgICAgYmFzZSBjYWNoZSBkaXIgZm9yIFVuaXguIFNlZSBkaXNjdXNzaW9uIGJlbG93LgoKICAgIFR5cGljYWwgdXNlciBsb2cgZGlyZWN0b3JpZXMgYXJlOgogICAgICAgIE1hYyBPUyBYOiAgIH4vTGlicmFyeS9Mb2dzLzxBcHBOYW1lPgogICAgICAgIFVuaXg6ICAgICAgIH4vLmNhY2hlLzxBcHBOYW1lPi9sb2cgICMgb3IgdW5kZXIgJFhER19DQUNIRV9IT01FIGlmIGRlZmluZWQKICAgICAgICBXaW4gWFA6ICAgICBDOlxEb2N1bWVudHMgYW5kIFNldHRpbmdzXDx1c2VybmFtZT5cTG9jYWwgU2V0dGluZ3NcQXBwbGljYXRpb24gRGF0YVw8QXBwQXV0aG9yPlw8QXBwTmFtZT5cTG9ncwogICAgICAgIFZpc3RhOiAgICAgIEM6XFVzZXJzXDx1c2VybmFtZT5cQXBwRGF0YVxMb2NhbFw8QXBwQXV0aG9yPlw8QXBwTmFtZT5cTG9ncwoKICAgIE9uIFdpbmRvd3MgdGhlIG9ubHkgc3VnZ2VzdGlvbiBpbiB0aGUgTVNETiBkb2NzIGlzIHRoYXQgbG9jYWwgc2V0dGluZ3MKICAgIGdvIGluIHRoZSBgQ1NJRExfTE9DQUxfQVBQREFUQWAgZGlyZWN0b3J5LiAoTm90ZTogSSdtIGludGVyZXN0ZWQgaW4KICAgIGV4YW1wbGVzIG9mIHdoYXQgc29tZSB3aW5kb3dzIGFwcHMgdXNlIGZvciBhIGxvZ3MgZGlyLikKCiAgICBPUElOSU9OOiBUaGlzIGZ1bmN0aW9uIGFwcGVuZHMgIkxvZ3MiIHRvIHRoZSBgQ1NJRExfTE9DQUxfQVBQREFUQWAKICAgIHZhbHVlIGZvciBXaW5kb3dzIGFuZCBhcHBlbmRzICJsb2ciIHRvIHRoZSB1c2VyIGNhY2hlIGRpciBmb3IgVW5peC4KICAgIFRoaXMgY2FuIGJlIGRpc2FibGVkIHdpdGggdGhlIGBvcGluaW9uPUZhbHNlYCBvcHRpb24uCiAgICByCQAAAHoOfi9MaWJyYXJ5L0xvZ3NyCAAAAEbaBExvZ3PaA2xvZykHcg4AAAByDwAAAHIQAAAAchMAAAByFAAAAHIdAAAAcjsAAAByOQAAAHIbAAAAchsAAAByHAAAANoMdXNlcl9sb2dfZGlyZAEAAHMiAAAAACAIAQYBCgEC/gYDCAEMAQQBBAEQAgwBBAEEAQ4BCAEOAXJAAAAAYwAAAAAAAAAAAAAAAAAAAAAFAAAAQAAAAHNuAAAAZQBaAWQAWgJkAVoDZBRkBGQFhAFaBGUFZAZkB4QAgwFaBmUFZAhkCYQAgwFaB2UFZApkC4QAgwFaCGUFZAxkDYQAgwFaCWUFZA5kD4QAgwFaCmUFZBBkEYQAgwFaC2UFZBJkE4QAgwFaDGQCUwApFdoHQXBwRGlyc3oxQ29udmVuaWVuY2Ugd3JhcHBlciBmb3IgZ2V0dGluZyBhcHBsaWNhdGlvbiBkaXJzLk5GYwYAAAAAAAAAAAAAAAYAAAACAAAAQwAAAHMiAAAAfAF8AF8AfAJ8AF8BfAN8AF8CfAR8AF8DfAV8AF8EZABTACkBTikFchYAAAByFwAAAHIYAAAAchkAAAByLQAAACkG2gRzZWxmchYAAAByFwAAAHIYAAAAchkAAAByLQAAAHIbAAAAchsAAAByHAAAANoIX19pbml0X1+ZAQAAcwoAAAAAAgYBBgEGAQYBehBBcHBEaXJzLl9faW5pdF9fYwEAAAAAAAAAAAAAAAEAAAAGAAAAQwAAAHMYAAAAdAB8AGoBfABqAnwAagN8AGoEZAGNBFMAqQJOKQJyGAAAAHIZAAAAKQVyHQAAAHIWAAAAchcAAAByGAAAAHIZAAAAqQFyQgAAAHIbAAAAchsAAAByHAAAAHIdAAAAoQEAAHMGAAAAAAIKAQj/ehVBcHBEaXJzLnVzZXJfZGF0YV9kaXJjAQAAAAAAAAAAAAAAAQAAAAYAAABDAAAAcxgAAAB0AHwAagF8AGoCfABqA3wAagRkAY0EUwCpAk4pAnIYAAAAci0AAAApBXIvAAAAchYAAAByFwAAAHIYAAAAci0AAAByRQAAAHIbAAAAchsAAAByHAAAAHIvAAAApgEAAHMGAAAAAAIKAQj/ehVBcHBEaXJzLnNpdGVfZGF0YV9kaXJjAQAAAAAAAAAAAAAAAQAAAAYAAABDAAAAcxgAAAB0AHwAagF8AGoCfABqA3wAagRkAY0EUwByRAAAACkFcjQAAAByFgAAAHIXAAAAchgAAAByGQAAAHJFAAAAchsAAAByGwAAAHIcAAAAcjQAAACrAQAAcwYAAAAAAgoBCP96F0FwcERpcnMudXNlcl9jb25maWdfZGlyYwEAAAAAAAAAAAAAAAEAAAAGAAAAQwAAAHMYAAAAdAB8AGoBfABqAnwAagN8AGoEZAGNBFMAckYAAAApBXI2AAAAchYAAAByFwAAAHIYAAAAci0AAAByRQAAAHIbAAAAchsAAAByHAAAAHI2AAAAsAEAAHMGAAAAAAIKAQj/ehdBcHBEaXJzLnNpdGVfY29uZmlnX2RpcmMBAAAAAAAAAAAAAAABAAAABQAAAEMAAABzFAAAAHQAfABqAXwAagJ8AGoDZAGNA1MAqQJOqQFyGAAAACkEcjsAAAByFgAAAHIXAAAAchgAAAByRQAAAHIbAAAAchsAAAByHAAAAHI7AAAAtQEAAHMGAAAAAAIKAQT/ehZBcHBEaXJzLnVzZXJfY2FjaGVfZGlyYwEAAAAAAAAAAAAAAAEAAAAFAAAAQwAAAHMUAAAAdAB8AGoBfABqAnwAagNkAY0DUwByRwAAACkEcj0AAAByFgAAAHIXAAAAchgAAAByRQAAAHIbAAAAchsAAAByHAAAAHI9AAAAugEAAHMGAAAAAAIKAQT/ehZBcHBEaXJzLnVzZXJfc3RhdGVfZGlyYwEAAAAAAAAAAAAAAAEAAAAFAAAAQwAAAHMUAAAAdAB8AGoBfABqAnwAagNkAY0DUwByRwAAACkEckAAAAByFgAAAHIXAAAAchgAAAByRQAAAHIbAAAAchsAAAByHAAAAHJAAAAAvwEAAHMGAAAAAAIKAQT/ehRBcHBEaXJzLnVzZXJfbG9nX2RpcikFTk5ORkYpDdoIX19uYW1lX1/aCl9fbW9kdWxlX1/aDF9fcXVhbG5hbWVfX9oHX19kb2NfX3JDAAAA2ghwcm9wZXJ0eXIdAAAAci8AAAByNAAAAHI2AAAAcjsAAAByPQAAAHJAAAAAchsAAAByGwAAAHIbAAAAchwAAAByQQAAAJcBAABzJAAAAAgBBAEAAQD/CggCAQoEAgEKBAIBCgQCAQoEAgEKBAIBCgQCAXJBAAAAYwEAAAAAAAAAAAAAAAYAAAAEAAAAQwAAAHNIAAAAdAByDmQBZAJsAX0BbghkAWQCbAJ9AWQDZARkBWQGnAN8ABkAfQJ8AaADfAFqBGQHoQJ9A3wBoAV8A3wCoQJcAn0EfQV8BFMAKQh6llRoaXMgaXMgYSBmYWxsYmFjayB0ZWNobmlxdWUgYXQgYmVzdC4gSSdtIG5vdCBzdXJlIGlmIHVzaW5nIHRoZQogICAgcmVnaXN0cnkgZm9yIHRoaXMgZ3VhcmFudGVlcyB1cyB0aGUgY29ycmVjdCBhbnN3ZXIgZm9yIGFsbCBDU0lETF8qCiAgICBuYW1lcy4KICAgIHIFAAAATtoHQXBwRGF0YXoOQ29tbW9uIEFwcERhdGF6DUxvY2FsIEFwcERhdGGpA3IKAAAAch4AAAByCwAAAHpAU29mdHdhcmVcTWljcm9zb2Z0XFdpbmRvd3NcQ3VycmVudFZlcnNpb25cRXhwbG9yZXJcU2hlbGwgRm9sZGVycykG2gNQWTPaBndpbnJlZ9oHX3dpbnJlZ9oHT3BlbktledoRSEtFWV9DVVJSRU5UX1VTRVLaDFF1ZXJ5VmFsdWVFeCkG2gpjc2lkbF9uYW1lclIAAADaEXNoZWxsX2ZvbGRlcl9uYW1l2gNrZXnaA2RpctoEdHlwZXIbAAAAchsAAAByHAAAANodX2dldF93aW5fZm9sZGVyX2Zyb21fcmVnaXN0cnnHAQAAcx4AAAAABQQBCgIIAwIBAgEC/QQEAvwEBgQBBAEC/gQEEAFyWwAAAGMBAAAAAAAAAAAAAAAHAAAACAAAAEMAAABzmgAAAGQBZAJsAG0BfQFtAn0CAQB8AqADZAF0BHwBfACDAmQBZAGhBH0Delx0BXwDgwF9A2QDfQR8A0QAXRh9BXQGfAWDAWQEawRyOGQFfQQBAHFScTh8BHKAehZkAWQAbAd9BnwGoAh8A6EBfQNXAG4SBAB0CXl+AQABAAEAWQBuAjAAVwBuEgQAdAp5lAEAAQABAFkAbgIwAHwDUwApBk5yBQAAACkC2ghzaGVsbGNvbtoFc2hlbGxG6f8AAABUKQvaDndpbjMyY29tLnNoZWxsclwAAAByXQAAANoPU0hHZXRGb2xkZXJQYXRo2gdnZXRhdHRy2gd1bmljb2Rl2gNvcmTaCHdpbjMyYXBp2hBHZXRTaG9ydFBhdGhOYW1l2gtJbXBvcnRFcnJvctoMVW5pY29kZUVycm9yKQdyVgAAAHJcAAAAcl0AAAByWQAAANoNaGFzX2hpZ2hfY2hhctoBY3JkAAAAchsAAAByGwAAAHIcAAAA2hxfZ2V0X3dpbl9mb2xkZXJfd2l0aF9weXdpbjMy3wEAAHMkAAAAAAEQARYEAgEIBAQBCAEMAQQBBgEEAQIBCAEOAQwBCgEMAQYBcmoAAABjAQAAAAAAAAAAAAAABwAAAAcAAABDAAAAc4YAAABkAWQAbAB9AWQCZANkBGQFnAN8ABkAfQJ8AaABZAahAX0DfAFqAmoDoARkAHwCZABkAXwDoQUBAGQHfQR8A0QAXRh9BXQFfAWDAWQIawRyQGQJfQQBAHFacUB8BHKAfAGgAWQGoQF9BnwBagJqBqAHfANqCHwGZAahA3KAfAZ9A3wDaghTACkKTnIFAAAA6RoAAADpIwAAAOkcAAAAck8AAABpAAQAAEZyXgAAAFQpCdoGY3R5cGVz2hVjcmVhdGVfdW5pY29kZV9idWZmZXLaBndpbmRsbNoHc2hlbGwzMtoQU0hHZXRGb2xkZXJQYXRoV3JjAAAA2ghrZXJuZWwzMtoRR2V0U2hvcnRQYXRoTmFtZVfaBXZhbHVlKQdyVgAAAHJuAAAA2gtjc2lkbF9jb25zdNoDYnVmcmgAAAByaQAAANoEYnVmMnIbAAAAchsAAAByHAAAANobX2dldF93aW5fZm9sZGVyX3dpdGhfY3R5cGVz+gEAAHMmAAAAAAEIAwIBAgEC/QQEAvwEBgoBFgQEAQgBDAEEAQYBBAEKARQBBAJyeQAAAGMBAAAAAAAAAAAAAAALAAAABwAAAEMAAABz1gAAAGQBZABsAH0BZAFkAmwBbQJ9AgEAZAFkA2wDbQR9AwEAfANqBWoGZAQUAH0EfAGgB2QFfAShAn0FfANqCGoJfQZ8BqAKZAB0C3wDagx8AIMCZAB8A2oMag18BaEFAQB8AmoOoA98BaAQoQChAaARZAahAX0HZAd9CHwHRABdGH0JdBJ8CYMBZAhrBHJ8ZAl9CAEAcZZxfHwIctJ8AaAHZAV8BKECfQV8A2oTagl9CnwKoBR8B3wFfAShA3LSfAJqDqAPfAWgEKEAoQGgEWQGoQF9B3wHUwApCk5yBQAAACkB2gNqbmEpAXIIAAAA6QIAAAByaQAAAPoBAEZyXgAAAFQpFdoFYXJyYXnaB2NvbS5zdW5yegAAANoUY29tLnN1bi5qbmEucGxhdGZvcm1yCAAAANoGV2luRGVm2ghNQVhfUEFUSNoFemVyb3PaB1NoZWxsMzLaCElOU1RBTkNFcmAAAAByYQAAANoGU2hsT2Jq2hJTSEdGUF9UWVBFX0NVUlJFTlTaBk5hdGl2ZdoIdG9TdHJpbmfaCHRvc3RyaW5nciEAAAByYwAAANoIS2VybmVsMzJyZQAAACkLclYAAAByfQAAAHJ6AAAAcggAAADaCGJ1Zl9zaXplcncAAAByXQAAAHJZAAAAcmgAAAByaQAAANoGa2VybmVschsAAAByGwAAAHIcAAAA2hhfZ2V0X3dpbl9mb2xkZXJfd2l0aF9qbmEUAgAAcyYAAAAAAQgBDAEMAgwBDAEIAR4BFgQEAQgBDAEEAQYBBAEMAQgBDgEWAnKNAAAAKQFycAAAANoIX19tYWluX19aBU15QXBwWglNeUNvbXBhbnkpB3IdAAAAcjQAAAByOwAAAHI9AAAAckAAAAByLwAAAHI2AAAAehEtLSBhcHAgZGlycyAlcyAtLXolLS0gYXBwIGRpcnMgKHdpdGggb3B0aW9uYWwgJ3ZlcnNpb24nKXoDMS4wckgAAAB6BiVzOiAlc3opCi0tIGFwcCBkaXJzICh3aXRob3V0IG9wdGlvbmFsICd2ZXJzaW9uJyl6KwotLSBhcHAgZGlycyAod2l0aG91dCBvcHRpb25hbCAnYXBwYXV0aG9yJyl6KAotLSBhcHAgZGlycyAod2l0aCBkaXNhYmxlZCAnYXBwYXV0aG9yJykpAXIXAAAAKQROTk5GKQROTk5GKQROTk5GKQROTk5GKQROTk5UKQROTk5GKQROTk5UKS1yTAAAANoQX192ZXJzaW9uX2luZm9fX3ITAAAA2gNtYXDaA3N0ctoLX192ZXJzaW9uX1/aA3N5c3IPAAAA2gx2ZXJzaW9uX2luZm9yUAAAAHJiAAAA2ghwbGF0Zm9ybdoKc3RhcnRzd2l0aNoIamF2YV92ZXLaB29zX25hbWVyDgAAAHIdAAAAci8AAAByNAAAAHI2AAAAcjsAAAByPQAAAHJAAAAA2gZvYmplY3RyQQAAAHJbAAAAcmoAAAByeQAAAHKNAAAAcl8AAABaCHdpbjMyY29tchIAAAByZgAAAHJuAAAAcnAAAABaC2NvbS5zdW4uam5h2gNjb21ySQAAAHIWAAAAchcAAADaBXByb3Bz2gVwcmludNoEZGlyc9oEcHJvcHJhAAAAchsAAAByGwAAAHIbAAAAchwAAADaCDxtb2R1bGU+BgAAAHN+AAAABAoEARADCAEIAg4CBAEEAgwBCAEQAQoBBgEKAQYFBgIGBAo3CkIKKAozCjkKKgozEDAIGAgbCBoIGgoBAgEIAQgBDgECAQwBCAEOAQIBCAEIAQ4BFgUKAQQBBAIECAwCCAEOAQgBGgIIAQoBCAEaAggBCAEIARoCCAEMAQgB