b3NnaS1zdXBwbHljaGFpbiBTYW1wbGUKPT09PT09PT09PT09PT09PT09PT09PT0KClRoZSBUdXNjYW55IE9TR2kgc3VwcGx5IGNoYWluIHNhbXBsZSBzaG93cyB1c2luZyB0aGUgVHVzY2FueSBTQ0EgcnVudGltZSBpbiBhIEoyU0UgZW52aXJvbm1lbnQgZXhlY3V0aW5nIHRoZSBTQ0EgYXN5bmNocm9ub3VzIEFQSSB3aXRoIE9TR2kgYW5kIEphdmEgaW1wbGVtZW50YXRpb24gdHlwZXMuCgpJZiB5b3UganVzdCB3YW50IHRvIHJ1biBpdCB0byBzZWUgd2hhdCBoYXBwZW5zIG9wZW4gYSBjb21tYW5kIHByb21wdCwgbmF2aWdhdGUKdG8gdGhpcyBzYW1wbGUgZGlyZWN0b3J5IGFuZCBkbzoKCmFudCBydW4KCk9SIGlmIHlvdSBkb24ndCBoYXZlIGFudCwgb24gV2luZG93cyBkbwoKSW4gdGhlIGRpcmVjdG9yeSBzYW1wbGVzXG9zZ2ktc3VwcGx5Y2hhaW4gdXNlIHRoZSBKREsgMS41IGphdmEgY29tbWFuZCB0byBydW4gdGhlIGNsYXNzIHN1cHBseWNoYWluLlN1cHBseUNoYWluQ2xpZW50IAoKTGludXg6ICAgamF2YSAtY3AgLi4vLi4vbGliL3R1c2Nhbnktc2NhLW1hbmlmZXN0Lmphcjp0YXJnZXQvc2FtcGxlLW9zZ2ktc3VwcGx5Y2hhaW4uamFyIHN1cHBseWNoYWluLlN1cHBseUNoYWluQ2xpZW50CldpbmRvd3M6IGphdmEgLWNwIC4uXC4uXGxpYlx0dXNjYW55LXNjYS1tYW5pZmVzdC5qYXI7dGFyZ2V0XHNhbXBsZS1vc2dpLXN1cHBseWNoYWluLmphciBzdXBwbHljaGFpbi5TdXBwbHlDaGFpbkNsaWVudAoKUmVzdWx0cwotLS0tLS0tLS0tClRoZSBzYW1wbGUgd2hlbiBydW4gc2hvdWxkIHNpbXBseSBkaXNwbGF5IG9uIHRoZSBzdGFuZGFyZCBvdXRwdXQgc29tZSBzdGFydHVwIG1lc3NhZ2VzIGZvbGxvd2VkIGJ5OgoKV29yayB0aHJlYWQgVGhyZWFkW1RocmVhZC0xLDUsbWFpbl0gLSBPcmRlciwgc3VibWl0dGVkLCBmdWxmaWxsZWQsIHNoaXBwZWQKCgpTYW1wbGUgT3ZlcnZpZXcKLS0tLS0tLS0tLS0tLS0tCgpUaGUgc2FtcGxlIHByb3ZpZGVzIGEgQ3VzdG9tZXIgc2VydmljZSB3aXRoIGEgcHVyY2hhc2VHb29kcyBvcGVyYXRpb24KYW5kIGEgbm90aWZ5U2hpcG1lbnQgb3BlcmF0aW9uIGFubm90YXRlZCB3aXRoIHRoZSBTQ0EgQE9uZVdheSBhbm5vdGF0aW9uLgpUaGUgU3VwcGx5Q2hhaW5DbGllbnQgZXhlcmNpc2VzIHRoaXMgaW50ZXJmYWNlIGJ5IGNhbGxpbmcgdGhlCnB1cmNoYXNlR29vZHMgb3BlcmF0aW9uLiBUaGlzIHJlc3VsdHMgaW4gbWVzc2FnZXMgcGFzc2luZyB0byAKdGhlIFJldGFpbGVyLCBXYXJlaG91c2UsIGFuZCBTaGlwcGVyIGNvbXBvbmVudHMgYW5kIHRoZSByZXN1bHQgcmV0dXJuZWQKdG8gdGhlIEN1c3RvbWVyIHNlcnZpY2Ugb24gYSBzZXBhcmF0ZSBjYWxsYmFjayB0aHJlYWQuIFRoZSBDdXN0b21lcgphbmQgU2hpcHBlciBjb21wb25lbnRzIGFyZSBpbXBsZW1lbnRlZCBhcyBPU0dpIGJ1bmRsZXMgd2hpY2ggdXNlCmltcGxlbWVudGF0aW9uLm9zZ2ksIHdoaWxlIHRoZSBSZXRhaWxlciBhbmQgV2FyZWhvdXNlIGNvbXBvbmVudHMgYXJlCmltcGxlbWVudGVkIHVzaW5nIGltcGxlbWVudGF0aW9uLmphdmEuCgoKc3JjCistLS1tYWluCiAgICArLS0tamF2YQogICAgpiAgICstLS1zdXBwbHljaGFpbgogICAgpiAgICAgICAgICBPU0dpQnVuZGxlSW1wbC5qYXZhCiAgICCmICAgICAgICAgIFN1cHBseUNoYWluQ2xpZW50LmphdmEKICAgIKYgICAgICAgICArLS0tY3VzdG9tZXIKICAgIKYgICAgICAgICAgICAgICAgQ3VzdG9tZXIuamF2YQogICAgpiAgICAgICAgICAgICAgICBKYXZhQ3VzdG9tZXJDb21wb25lbnRJbXBsLmphdmEKICAgIKYgICAgICAgICAgICAgICAgT1NHaUN1c3RvbWVyQ29tcG9uZW50SW1wbC5qYXZhCiAgICCmICAgICAgICAgICAgICAgIE9TR2lDdXN0b21lckltcGwuamF2YQogICAgpiAgICAgICAgICstLS1yZXRhaWxlcgogICAgpiAgICAgICAgICAgICAgICBSZXRhaWxlci5qYXZhCiAgICCmICAgICAgICAgICAgICAgIEphdmFSZXRhaWxlckNvbXBvbmVudEltcGwuamF2YQogICAgpiAgICAgICAgICAgICAgICBPU0dpUmV0YWlsZXJDb21wb25lbnRJbXBsLmphdmEKICAgIKYgICAgICAgICAgICAgICAgT1NHaVJldGFpbGVySW1wbC5qYXZhCiAgICCmICAgICAgICAgKy0tLXNoaXBwZXIKICAgIKYgICAgICAgICAgICAgICAgU2hpcHBlci5qYXZhCiAgICCmICAgICAgICAgICAgICAgIEphdmFTaGlwcGVyQ29tcG9uZW50SW1wbC5qYXZhCiAgICCmICAgICAgICAgICAgICAgIE9TR2lTaGlwcGVyQ29tcG9uZW50SW1wbC5qYXZhCiAgICCmICAgICAgICAgICAgICAgIE9TR2lTaGlwcGVySW1wbC5qYXZhCiAgICCmICAgICAgICAgKy0tLXdhcmVob3VzZQogICAgpiAgICAgICAgICAgICAgIFdhcmVob3VzZS5qYXZhCiAgICCmICAgICAgICAgICAgICAgSmF2YVdhcmVob3VzZUNvbXBvbmVudEltcGwuamF2YQogICAgpiAgICAgICAgICAgICAgIE9TR2lXYXJlaG91c2VDb21wb25lbnRJbXBsLmphdmEKICAgIKYgICAgICAgICAgICAgICBPU0dpV2FyZWhvdXNlSW1wbC5qYXZhCiAgICCmCiAgICArLS0tcmVzb3VyY2VzCiAgICCmICAgKy0tLW9zZ2kKICAgIKYgICAgICAgICAgQ3VzdG9tZXIubWYKICAgIKYgICAgICAgICAgUmV0YWlsZXIubWYKICAgIKYgICAgICAgICAgU2hpcHBlci5tZgogICAgpiAgICAgICAgICBXYXJlaG91c2UubWYKICAgIKYgICAgICAgICstLS1kcwogICAgpiAgICAgICAgICAgICAgIEN1c3RvbWVyLm1mCiAgICCmICAgICAgICAgICAgICAgUmV0YWlsZXIubWYKICAgIKYgICAgICAgICAgICAgICBTaGlwcGVyLm1mCiAgICCmICAgICAgICAgICAgICAgV2FyZWhvdXNlLm1mCiAgICCmICAgICAgICAgICAgICAgQ3VzdG9tZXIueG1sCiAgICCmICAgICAgICAgICAgICAgUmV0YWlsZXIueG1sCiAgICCmICAgICAgICAgICAgICAgU2hpcHBlci54bWwKICAgIKYgICAgICAgICAgICAgICBXYXJlaG91c2UueG1sCiAgICCmICAgICAgQ3VzdG9tZXIuY29tcG9uZW50VHlwZQogICAgpiAgICAgIFJldGFpbGVyLmNvbXBvbmVudFR5cGUKICAgIKYgICAgICBTaGlwcGVyLmNvbXBvbmVudFR5cGUKICAgIKYgICAgICBXYXJlaG91c2UuY29tcG9uZW50VHlwZQogICAgpiAgICAgIHN1cHBseWNoYWluLmNvbXBvc2l0ZQogICAgpi0tICAgIHN1cHBseWNoYWluLmRzLmNvbXBvc2l0ZQogICAKCiAgYnVpbGQueG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gdGhlIEFudCBidWlsZCBmaWxlCiAgcG9tLnhtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gdGhlIE1hdmVuIGJ1aWxkIGZpbGUgICAKClVuZGVyc3RhbmRpbmcgT1NHSSBpbXBsZW1lbnRhdGlvbiBmaWxlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU29tZSBvZiB0aGUgZmlsZXMgaW50cm9kdWNlZCBieSBPU0dJIGltcGxlbWVudGF0aW9uIGFyZSBleHBsYWluZWQgYmVsb3cuCgpPU0cgZmlsZXMgcmVsYXRlZCB0byBjdXN0b21lci4gamF2YSBhcmU6Ck9TR2lDdXN0b21lckNvbXBvbmVudEltcGwuamF2YTogT1NHaSBEZWNsYXJhdGl2ZSBTZXJ2aWNlcyBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgU0NBIEN1c3RvbWVyIGNvbXBvbmVudC4gCk9TR2lDdXN0b21lckltcGwuamF2YTogT1NHaSBQcm9jZWR1cmFsIFNlcnZpY2VzIEltcGxlbWVudGF0aW9uIG9mIHRoZSBTQ0EgQ3VzdG9tZXIgY29tcG9uZW50LiAKCllvdSBub3RpY2UgdGhlIHNhbWUgcGF0dGVybiBmb3Igc2hpcHBlci5qYXZhLCByZXRhaWxlci5qYXZhLCBTdXBwbHlDaGFpbkNsaWVudC5qYXZhLgoKVGhlIHJlc3Qgb2YgT1NHSSByZWxhdGVkIGZpbGVzIGFyZToKT1NHaUJ1bmRsZUltcGwuamF2YTogQ29tbW9uIGNvZGUgZm9yIE9TR2kgUHJvY2VkdXJhbCBTZXJ2aWNlcyBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgU0NBIGNvbXBvbmVudHMKIApyZXNvdXJjZXMvb3NnaS8qLm1mOiBNYW5pZmVzdCBmaWxlcyBmb3IgT1NHaSBidW5kbGVzIGZvciBPU0dpIHByb2NlZHVyYWwgc2VydmljZXMgaW1wbGVtZW50YXRpb24KIApyZXNvdXJjZXMvb3NnaS9kcy8qLm06ZiBNYW5pZmVzdCBmaWxlcyBmb3IgT1NHaSBidW5kbGVzIGZvciBPU0dpIGRlY2xhcmF0aXZlIHNlcnZpY2VzIGltcGxlbWVudGF0aW9uIAoKcmVzb3VyY2VzL29zZ2kvZHMvKi54bWw6IE9TR2kgRGVjbGFyYXRpdmUgc2VydmljZXMgY29tcG9uZW50IHhtbCBmaWxlcwogCnJlc291cmNlcy8qLmNvbXBvbmVudFR5cGU6IENvbXBvbmVudCB0eXBlcyB1c2VkIGJ5IE9TR2kgaW1wbGVtZW50YXRpb24gcHJvdmlkZXIgZm9yIFNDQQogCnJlc291cmNlcy9zdXBwbHljaGFpbi5jb21wb3NpdGU6ICBDb21wb3NpdGUgZmlsZSB1c2luZyBPU0dpIGFuZCBKYXZhIGltcGxlbWVudGF0aW9uIHR5cGVzCiAKcmVzb3VyY2VzL3N1cHBseWNoYWluLmRzLmNvbXBvc2l0ZTogQ29tcG9zaXRlIGZpbGUgdXNpbmcgT1NHaSAoZGVjbGFyYXRpdmUgc2VydmljZXMpIGFuZCBKYXZhIGltcGxlbWVudGF0aW9uIHR5cGVzIAogCkJ1aWxkaW5nIEFuZCBSdW5uaW5nIFRoZSBTYW1wbGUgVXNpbmcgQW50Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmNkIG9zZ2ktc3VwcGx5Y2hhaW4KYW50IGNvbXBpbGUgCmFudCBydW4KCnlvdSBzaG91bGQgc2VlOiAKQnVpbGRmaWxlOiBidWlsZC54bWwKCnJ1bjoKICAgICBbamF2YV0gTWFpbiB0aHJlYWQgVGhyZWFkW21haW4sNSxtYWluXQogICAgIFtqYXZhXSBTdGFydGVkIE9TR2kgYnVuZGxlIHdpdGggYWN0aXZhdG9yIE9TR2lDdXN0b21lckltcGwKICAgICBbamF2YV0gU3RhcnRlZCBPU0dpIGJ1bmRsZSB3aXRoIGFjdGl2YXRvciBPU0dpU2hpcHBlckltcGwKICAgICBbamF2YV0gTWFpbiB0aHJlYWQgc2xlZXBpbmcgLi4uCiAgICAgW2phdmFdIFdvcmsgdGhyZWFkIFRocmVhZFtwb29sLTEtdGhyZWFkLTEsNSxtYWluXSAtIE9yZGVyLCBzdWJtaXR0ZWQsIGZ1bGZpCmxsZWQsIHNoaXBwZWQKICAgICBbamF2YV0gU3RvcCBPU0dpIGJ1bmRsZSB3aXRoIGFjdGl2YXRvciBPU0dpU2hpcHBlckltcGwKICAgICBbamF2YV0gU3RvcCBPU0dpIGJ1bmRsZSB3aXRoIGFjdGl2YXRvciBPU0dpQ3VzdG9tZXJJbXBsCgoKQnVpbGRpbmcgQW5kIFJ1bm5pbmcgVGhlIFNhbXBsZSBVc2luZyBNYXZlbiAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpXaXRoIGVpdGhlciB0aGUgYmluYXJ5IG9yIHNvdXJjZSBkaXN0cmlidXRpb25zIHRoZSBzYW1wbGUgY2FuIGJlIGJ1aWx0IGFuZCBydW4gCnVzaW5nIE1hdmVuIGFzIGZvbGxvd3MuIAoKY2Qgb3NnaS1zdXBwbHljaGFpbgptdm4KCllvdSBzaG91bGQgc2VlIHRoZSBmb2xsb3dpbmcgb3V0cHV0IGZyb20gdGhlIHRlc3QgcGhhc2UuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBUIEUgUyBUIFMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpSdW5uaW5nIHN1cHBseWNoYWluLlN1cHBseUNoYWluQ2xpZW50VGVzdENhc2UKU3RhcnRlZCBPU0dpIGJ1bmRsZSB3aXRoIGFjdGl2YXRvciBPU0dpQ3VzdG9tZXJJbXBsClN0YXJ0ZWQgT1NHaSBidW5kbGUgd2l0aCBhY3RpdmF0b3IgT1NHaVNoaXBwZXJJbXBsClNsZWVwaW5nIC4uLgpXb3JrIHRocmVhZCBUaHJlYWRbcG9vbC0xLXRocmVhZC0xLDUsbWFpbl0gLSBPcmRlciwgc3VibWl0dGVkLCBmdWxmaWxsZWQsIHNoaXBwZQpkClRlc3QgY29tcGxldGUKU3RvcCBPU0dpIGJ1bmRsZSB3aXRoIGFjdGl2YXRvciBPU0dpU2hpcHBlckltcGwKU3RvcCBPU0dpIGJ1bmRsZSB3aXRoIGFjdGl2YXRvciBPU0dpQ3VzdG9tZXJJbXBsClRlc3RzIHJ1bjogMSwgRmFpbHVyZXM6IDAsIEVycm9yczogMCwgU2tpcHBlZDogMCwgVGltZSBlbGFwc2VkOiA3LjA2MiBzZWMKClRoaXMgc2hvd3MgdGhhdCB0aGUgSnVuaXQgdGVzdCBjYXNlcyBoYXZlIHJ1biBzdWNjZXNzZnVsbHkuIAo=