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GwBkHABsagBaagBkGwBkHABsKABaKABlagBqawBlKABqbABlaQAZgwEAAW4AAGQcAFMoiQAAAHPLCQAAClRoaXMgaXMgYSBQeTIuMyBpbXBsZW1lbnRhdGlvbiBvZiBkZWNpbWFsIGZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgYmFzZWQgb24KdGhlIEdlbmVyYWwgRGVjaW1hbCBBcml0aG1ldGljIFNwZWNpZmljYXRpb246CgogICAgaHR0cDovL3NwZWxlb3Ryb3ZlLmNvbS9kZWNpbWFsL2RlY2FyaXRoLmh0bWwKCmFuZCBJRUVFIHN0YW5kYXJkIDg1NC0xOTg3OgoKICAgIHd3dy5jcy5iZXJrZWxleS5lZHUvfmVqci9wcm9qZWN0cy83NTQvcHJpdmF0ZS9kcmFmdHMvODU0LTE5ODcvZGlyLmh0bWwKCkRlY2ltYWwgZmxvYXRpbmcgcG9pbnQgaGFzIGZpbml0ZSBwcmVjaXNpb24gd2l0aCBhcmJpdHJhcmlseSBsYXJnZSBib3VuZHMuCgpUaGUgcHVycG9zZSBvZiB0aGlzIG1vZHVsZSBpcyB0byBzdXBwb3J0IGFyaXRobWV0aWMgdXNpbmcgZmFtaWxpYXIKInNjaG9vbGhvdXNlIiBydWxlcyBhbmQgdG8gYXZvaWQgc29tZSBvZiB0aGUgdHJpY2t5IHJlcHJlc2VudGF0aW9uCmlzc3VlcyBhc3NvY2lhdGVkIHdpdGggYmluYXJ5IGZsb2F0aW5nIHBvaW50LiAgVGhlIHBhY2thZ2UgaXMgZXNwZWNpYWxseQp1c2VmdWwgZm9yIGZpbmFuY2lhbCBhcHBsaWNhdGlvbnMgb3IgZm9yIGNvbnRleHRzIHdoZXJlIHVzZXJzIGhhdmUKZXhwZWN0YXRpb25zIHRoYXQgYXJlIGF0IG9kZHMgd2l0aCBiaW5hcnkgZmxvYXRpbmcgcG9pbnQgKGZvciBpbnN0YW5jZSwKaW4gYmluYXJ5IGZsb2F0aW5nIHBvaW50LCAxLjAwICUgMC4xIGdpdmVzIDAuMDk5OTk5OTk5OTk5OTk5OTUgaW5zdGVhZApvZiB0aGUgZXhwZWN0ZWQgRGVjaW1hbCgnMC4wMCcpIHJldHVybmVkIGJ5IGRlY2ltYWwgZmxvYXRpbmcgcG9pbnQpLgoKSGVyZSBhcmUgc29tZSBleGFtcGxlcyBvZiB1c2luZyB0aGUgZGVjaW1hbCBtb2R1bGU6Cgo+Pj4gZnJvbSBkZWNpbWFsIGltcG9ydCAqCj4+PiBzZXRjb250ZXh0KEV4dGVuZGVkQ29udGV4dCkKPj4+IERlY2ltYWwoMCkKRGVjaW1hbCgnMCcpCj4+PiBEZWNpbWFsKCcxJykKRGVjaW1hbCgnMScpCj4+PiBEZWNpbWFsKCctLjAxMjMnKQpEZWNpbWFsKCctMC4wMTIzJykKPj4+IERlY2ltYWwoMTIzNDU2KQpEZWNpbWFsKCcxMjM0NTYnKQo+Pj4gRGVjaW1hbCgnMTIzLjQ1ZTEyMzQ1Njc4OTAxMjM0NTY3ODkwJykKRGVjaW1hbCgnMS4yMzQ1RSsxMjM0NTY3ODkwMTIzNDU2Nzg5MicpCj4+PiBEZWNpbWFsKCcxLjMzJykgKyBEZWNpbWFsKCcxLjI3JykKRGVjaW1hbCgnMi42MCcpCj4+PiBEZWNpbWFsKCcxMi4zNCcpICsgRGVjaW1hbCgnMy44NycpIC0gRGVjaW1hbCgnMTguNDEnKQpEZWNpbWFsKCctMi4yMCcpCj4+PiBkaWcgPSBEZWNpbWFsKDEpCj4+PiBwcmludCBkaWcgLyBEZWNpbWFsKDMpCjAuMzMzMzMzMzMzCj4+PiBnZXRjb250ZXh0KCkucHJlYyA9IDE4Cj4+PiBwcmludCBkaWcgLyBEZWNpbWFsKDMpCjAuMzMzMzMzMzMzMzMzMzMzMzMzCj4+PiBwcmludCBkaWcuc3FydCgpCjEKPj4+IHByaW50IERlY2ltYWwoMykuc3FydCgpCjEuNzMyMDUwODA3NTY4ODc3MjkKPj4+IHByaW50IERlY2ltYWwoMykgKiogMTIzCjQuODUxOTI3ODA5NzY4OTY0MjdFKzU4Cj4+PiBpbmYgPSBEZWNpbWFsKDEpIC8gRGVjaW1hbCgwKQo+Pj4gcHJpbnQgaW5mCkluZmluaXR5Cj4+PiBuZWdpbmYgPSBEZWNpbWFsKC0xKSAvIERlY2ltYWwoMCkKPj4+IHByaW50IG5lZ2luZgotSW5maW5pdHkKPj4+IHByaW50IG5lZ2luZiArIGluZgpOYU4KPj4+IHByaW50IG5lZ2luZiAqIGluZgotSW5maW5pdHkKPj4+IHByaW50IGRpZyAvIDAKSW5maW5pdHkKPj4+IGdldGNvbnRleHQoKS50cmFwc1tEaXZpc2lvbkJ5WmVyb10gPSAxCj4+PiBwcmludCBkaWcgLyAwClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAuLi4KICAuLi4KICAuLi4KRGl2aXNpb25CeVplcm86IHggLyAwCj4+PiBjID0gQ29udGV4dCgpCj4+PiBjLnRyYXBzW0ludmFsaWRPcGVyYXRpb25dID0gMAo+Pj4gcHJpbnQgYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXQowCj4+PiBjLmRpdmlkZShEZWNpbWFsKDApLCBEZWNpbWFsKDApKQpEZWNpbWFsKCdOYU4nKQo+Pj4gYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IDEKPj4+IHByaW50IGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0KMQo+Pj4gYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSA9IDAKPj4+IHByaW50IGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0KMAo+Pj4gcHJpbnQgYy5kaXZpZGUoRGVjaW1hbCgwKSwgRGVjaW1hbCgwKSkKVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIC4uLgogIC4uLgogIC4uLgpJbnZhbGlkT3BlcmF0aW9uOiAwIC8gMAo+Pj4gcHJpbnQgYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXQoxCj4+PiBjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dID0gMAo+Pj4gYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IDAKPj4+IHByaW50IGMuZGl2aWRlKERlY2ltYWwoMCksIERlY2ltYWwoMCkpCk5hTgo+Pj4gcHJpbnQgYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXQoxCj4+Pgp0BwAAAERlY2ltYWx0BwAAAENvbnRleHR0DgAAAERlZmF1bHRDb250ZXh0dAwAAABCYXNpY0NvbnRleHR0DwAAAEV4dGVuZGVkQ29udGV4dHQQAAAARGVjaW1hbEV4Y2VwdGlvbnQHAAAAQ2xhbXBlZHQQAAAASW52YWxpZE9wZXJhdGlvbnQOAAAARGl2aXNpb25CeVplcm90BwAAAEluZXhhY3R0BwAAAFJvdW5kZWR0CQAAAFN1Ym5vcm1hbHQIAAAAT3ZlcmZsb3d0CQAAAFVuZGVyZmxvd3QKAAAAUk9VTkRfRE9XTnQNAAAAUk9VTkRfSEFMRl9VUHQPAAAAUk9VTkRfSEFMRl9FVkVOdA0AAABST1VORF9DRUlMSU5HdAsAAABST1VORF9GTE9PUnQIAAAAUk9VTkRfVVB0DwAAAFJPVU5EX0hBTEZfRE9XTnQKAAAAUk9VTkRfMDVVUHQKAAAAc2V0Y29udGV4dHQKAAAAZ2V0Y29udGV4dHQMAAAAbG9jYWxjb250ZXh0cwQAAAAxLjcwaf////9OKAEAAAB0CgAAAG5hbWVkdHVwbGV0DAAAAERlY2ltYWxUdXBsZXMUAAAAc2lnbiBkaWdpdHMgZXhwb25lbnRjAAAAAAEAAAABAAAARwAAAHMEAAAAfAAAUygBAAAATigAAAAAKAEAAAB0BAAAAGFyZ3MoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5dAgAAAA8bGFtYmRhPpMAAABzAAAAAGMAAAAAAAAAAAEAAABCAAAAcxcAAABlAABaAQBkAABaAgBkAQCEAABaAwBSUygCAAAAczEDAABCYXNlIGV4Y2VwdGlvbiBjbGFzcy4KCiAgICBVc2VkIGV4Y2VwdGlvbnMgZGVyaXZlIGZyb20gdGhpcy4KICAgIElmIGFuIGV4Y2VwdGlvbiBkZXJpdmVzIGZyb20gYW5vdGhlciBleGNlcHRpb24gYmVzaWRlcyB0aGlzIChzdWNoIGFzCiAgICBVbmRlcmZsb3cgKEluZXhhY3QsIFJvdW5kZWQsIFN1Ym5vcm1hbCkgdGhhdCBpbmRpY2F0ZXMgdGhhdCBpdCBpcyBvbmx5CiAgICBjYWxsZWQgaWYgdGhlIG90aGVycyBhcmUgcHJlc2VudC4gIFRoaXMgaXNuJ3QgYWN0dWFsbHkgdXNlZCBmb3IKICAgIGFueXRoaW5nLCB0aG91Z2guCgogICAgaGFuZGxlICAtLSBDYWxsZWQgd2hlbiBjb250ZXh0Ll9yYWlzZV9lcnJvciBpcyBjYWxsZWQgYW5kIHRoZQogICAgICAgICAgICAgICB0cmFwX2VuYWJsZXIgaXMgbm90IHNldC4gIEZpcnN0IGFyZ3VtZW50IGlzIHNlbGYsIHNlY29uZCBpcyB0aGUKICAgICAgICAgICAgICAgY29udGV4dC4gIE1vcmUgYXJndW1lbnRzIGNhbiBiZSBnaXZlbiwgdGhvc2UgYmVpbmcgYWZ0ZXIKICAgICAgICAgICAgICAgdGhlIGV4cGxhbmF0aW9uIGluIF9yYWlzZV9lcnJvciAoRm9yIGV4YW1wbGUsCiAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKE5ld0Vycm9yLCAnKC14KSEnLCBzZWxmLl9zaWduKSB3b3VsZAogICAgICAgICAgICAgICBjYWxsIE5ld0Vycm9yKCkuaGFuZGxlKGNvbnRleHQsIHNlbGYuX3NpZ24pLikKCiAgICBUbyBkZWZpbmUgYSBuZXcgZXhjZXB0aW9uLCBpdCBzaG91bGQgYmUgc3VmZmljaWVudCB0byBoYXZlIGl0IGRlcml2ZQogICAgZnJvbSBEZWNpbWFsRXhjZXB0aW9uLgogICAgYwIAAAADAAAAAQAAAEcAAABzBAAAAGQAAFMoAQAAAE4oAAAAACgDAAAAdAQAAABzZWxmdAcAAABjb250ZXh0UhsAAAAoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5dAYAAABoYW5kbGW0AAAAcwIAAAAAASgEAAAAdAgAAABfX25hbWVfX3QKAAAAX19tb2R1bGVfX3QHAAAAX19kb2NfX1IfAAAAKAAAAAAoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5UgUAAAChAAAAcwQAAAAGEgYBYwAAAAAAAAAAAQAAAEIAAABzDgAAAGUAAFoBAGQAAFoCAFJTKAEAAABzKQIAAEV4cG9uZW50IG9mIGEgMCBjaGFuZ2VkIHRvIGZpdCBib3VuZHMuCgogICAgVGhpcyBvY2N1cnMgYW5kIHNpZ25hbHMgY2xhbXBlZCBpZiB0aGUgZXhwb25lbnQgb2YgYSByZXN1bHQgaGFzIGJlZW4KICAgIGFsdGVyZWQgaW4gb3JkZXIgdG8gZml0IHRoZSBjb25zdHJhaW50cyBvZiBhIHNwZWNpZmljIGNvbmNyZXRlCiAgICByZXByZXNlbnRhdGlvbi4gIFRoaXMgbWF5IG9jY3VyIHdoZW4gdGhlIGV4cG9uZW50IG9mIGEgemVybyByZXN1bHQgd291bGQKICAgIGJlIG91dHNpZGUgdGhlIGJvdW5kcyBvZiBhIHJlcHJlc2VudGF0aW9uLCBvciB3aGVuIGEgbGFyZ2Ugbm9ybWFsCiAgICBudW1iZXIgd291bGQgaGF2ZSBhbiBlbmNvZGVkIGV4cG9uZW50IHRoYXQgY2Fubm90IGJlIHJlcHJlc2VudGVkLiAgSW4KICAgIHRoaXMgbGF0dGVyIGNhc2UsIHRoZSBleHBvbmVudCBpcyByZWR1Y2VkIHRvIGZpdCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcKICAgIG51bWJlciBvZiB6ZXJvIGRpZ2l0cyBhcmUgYXBwZW5kZWQgdG8gdGhlIGNvZWZmaWNpZW50ICgiZm9sZC1kb3duIikuCiAgICAoAwAAAFIgAAAAUiEAAABSIgAAACgAAAAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVIGAAAAuAAAAHMCAAAABgpjAAAAAAAAAAABAAAAQgAAAHMXAAAAZQAAWgEAZAAAWgIAZAEAhAAAWgMAUlMoAgAAAHMwAgAAQW4gaW52YWxpZCBvcGVyYXRpb24gd2FzIHBlcmZvcm1lZC4KCiAgICBWYXJpb3VzIGJhZCB0aGluZ3MgY2F1c2UgdGhpczoKCiAgICBTb21ldGhpbmcgY3JlYXRlcyBhIHNpZ25hbGluZyBOYU4KICAgIC1JTkYgKyBJTkYKICAgIDAgKiAoKy0pSU5GCiAgICAoKy0pSU5GIC8gKCstKUlORgogICAgeCAlIDAKICAgICgrLSlJTkYgJSB4CiAgICB4Ll9yZXNjYWxlKCBub24taW50ZWdlciApCiAgICBzcXJ0KC14KSAsIHggPiAwCiAgICAwICoqIDAKICAgIHggKiogKG5vbi1pbnRlZ2VyKQogICAgeCAqKiAoKy0pSU5GCiAgICBBbiBvcGVyYW5kIGlzIGludmFsaWQKCiAgICBUaGUgcmVzdWx0IG9mIHRoZSBvcGVyYXRpb24gYWZ0ZXIgdGhlc2UgaXMgYSBxdWlldCBwb3NpdGl2ZSBOYU4sCiAgICBleGNlcHQgd2hlbiB0aGUgY2F1c2UgaXMgYSBzaWduYWxpbmcgTmFOLCBpbiB3aGljaCBjYXNlIHRoZSByZXN1bHQgaXMKICAgIGFsc28gYSBxdWlldCBOYU4sIGJ1dCB3aXRoIHRoZSBvcmlnaW5hbCBzaWduLCBhbmQgYW4gb3B0aW9uYWwKICAgIGRpYWdub3N0aWMgaW5mb3JtYXRpb24uCiAgICBjAgAAAAQAAAAFAAAARwAAAHM6AAAAfAIAcjYAdAAAfAIAZAEAGWoBAHwCAGQBABlqAgBkAgB0AwCDBAB9AwB8AwBqBAB8AQCDAQBTdAUAUygDAAAATmkAAAAAdAEAAABuKAYAAAB0EAAAAF9kZWNfZnJvbV90cmlwbGV0BQAAAF9zaWdudAQAAABfaW50dAQAAABUcnVldAgAAABfZml4X25hbnQEAAAAX05hTigEAAAAUh0AAABSHgAAAFIbAAAAdAMAAABhbnMoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5Uh8AAADbAAAAcwgAAAAAAQYBIwENASgEAAAAUiAAAABSIQAAAFIiAAAAUh8AAAAoAAAAACgAAAAAKAAAAABzTwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHlSBwAAAMQAAABzBAAAAAYWBgF0EAAAAENvbnZlcnNpb25TeW50YXhjAAAAAAAAAAABAAAAQgAAAHMXAAAAZQAAWgEAZAAAWgIAZAEAhAAAWgMAUlMoAgAAAHPdAAAAVHJ5aW5nIHRvIGNvbnZlcnQgYmFkbHkgZm9ybWVkIHN0cmluZy4KCiAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyBpbnZhbGlkLW9wZXJhdGlvbiBpZiBhbiBzdHJpbmcgaXMgYmVpbmcKICAgIGNvbnZlcnRlZCB0byBhIG51bWJlciBhbmQgaXQgZG9lcyBub3QgY29uZm9ybSB0byB0aGUgbnVtZXJpYyBzdHJpbmcKICAgIHN5bnRheC4gIFRoZSByZXN1bHQgaXMgWzAscU5hTl0uCiAgICBjAgAAAAMAAAABAAAARwAAAHMEAAAAdAAAUygBAAAATigBAAAAUikAAAAoAwAAAFIdAAAAUh4AAABSGwAAACgAAAAAKAAAAABzTwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHlSHwAAAOgAAABzAgAAAAABKAQAAABSIAAAAFIhAAAAUiIAAABSHwAAACgAAAAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVIrAAAA4QAAAHMEAAAABgYGAWMAAAAAAAAAAAEAAABCAAAAcxcAAABlAABaAQBkAABaAgBkAQCEAABaAwBSUygCAAAAc7IBAABEaXZpc2lvbiBieSAwLgoKICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIGRpdmlzaW9uLWJ5LXplcm8gaWYgZGl2aXNpb24gb2YgYSBmaW5pdGUgbnVtYmVyCiAgICBieSB6ZXJvIHdhcyBhdHRlbXB0ZWQgKGR1cmluZyBhIGRpdmlkZS1pbnRlZ2VyIG9yIGRpdmlkZSBvcGVyYXRpb24sIG9yIGEKICAgIHBvd2VyIG9wZXJhdGlvbiB3aXRoIG5lZ2F0aXZlIHJpZ2h0LWhhbmQgb3BlcmFuZCksIGFuZCB0aGUgZGl2aWRlbmQgd2FzCiAgICBub3QgemVyby4KCiAgICBUaGUgcmVzdWx0IG9mIHRoZSBvcGVyYXRpb24gaXMgW3NpZ24saW5mXSwgd2hlcmUgc2lnbiBpcyB0aGUgZXhjbHVzaXZlCiAgICBvciBvZiB0aGUgc2lnbnMgb2YgdGhlIG9wZXJhbmRzIGZvciBkaXZpZGUsIG9yIGlzIDEgZm9yIGFuIG9kZCBwb3dlciBvZgogICAgLTAsIGZvciBwb3dlci4KICAgIGMDAAAABAAAAAIAAABHAAAAcwgAAAB0AAB8AgAZUygBAAAATigBAAAAdA8AAABfU2lnbmVkSW5maW5pdHkoBAAAAFIdAAAAUh4AAAB0BAAAAHNpZ25SGwAAACgAAAAAKAAAAABzTwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHlSHwAAAPgAAABzAgAAAAABKAQAAABSIAAAAFIhAAAAUiIAAABSHwAAACgAAAAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVIIAAAA6wAAAHMEAAAABgsGAnQSAAAARGl2aXNpb25JbXBvc3NpYmxlYwAAAAAAAAAAAQAAAEIAAABzFwAAAGUAAFoBAGQAAFoCAGQBAIQAAFoDAFJTKAIAAABz8wAAAENhbm5vdCBwZXJmb3JtIHRoZSBkaXZpc2lvbiBhZGVxdWF0ZWx5LgoKICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIGludmFsaWQtb3BlcmF0aW9uIGlmIHRoZSBpbnRlZ2VyIHJlc3VsdCBvZiBhCiAgICBkaXZpZGUtaW50ZWdlciBvciByZW1haW5kZXIgb3BlcmF0aW9uIGhhZCB0b28gbWFueSBkaWdpdHMgKHdvdWxkIGJlCiAgICBsb25nZXIgdGhhbiBwcmVjaXNpb24pLiAgVGhlIHJlc3VsdCBpcyBbMCxxTmFOXS4KICAgIGMCAAAAAwAAAAEAAABHAAAAcwQAAAB0AABTKAEAAABOKAEAAABSKQAAACgDAAAAUh0AAABSHgAAAFIbAAAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVIfAAAAAwEAAHMCAAAAAAEoBAAAAFIgAAAAUiEAAABSIgAAAFIfAAAAKAAAAAAoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5Ui4AAAD7AAAAcwQAAAAGBgYCdBEAAABEaXZpc2lvblVuZGVmaW5lZGMAAAAAAAAAAAEAAABCAAAAcxcAAABlAABaAQBkAABaAgBkAQCEAABaAwBSUygCAAAAc+4AAABVbmRlZmluZWQgcmVzdWx0IG9mIGRpdmlzaW9uLgoKICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIGludmFsaWQtb3BlcmF0aW9uIGlmIGRpdmlzaW9uIGJ5IHplcm8gd2FzCiAgICBhdHRlbXB0ZWQgKGR1cmluZyBhIGRpdmlkZS1pbnRlZ2VyLCBkaXZpZGUsIG9yIHJlbWFpbmRlciBvcGVyYXRpb24pLCBhbmQKICAgIHRoZSBkaXZpZGVuZCBpcyBhbHNvIHplcm8uICBUaGUgcmVzdWx0IGlzIFswLHFOYU5dLgogICAgYwIAAAADAAAAAQAAAEcAAABzBAAAAHQAAFMoAQAAAE4oAQAAAFIpAAAAKAMAAABSHQAAAFIeAAAAUhsAAAAoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5Uh8AAAAOAQAAcwIAAAAAASgEAAAAUiAAAABSIQAAAFIiAAAAUh8AAAAoAAAAACgAAAAAKAAAAABzTwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHlSLwAAAAYBAABzBAAAAAYGBgJjAAAAAAAAAAABAAAAQgAAAHMOAAAAZQAAWgEAZAAAWgIAUlMoAQAAAHOtAQAASGFkIHRvIHJvdW5kLCBsb3NpbmcgaW5mb3JtYXRpb24uCgogICAgVGhpcyBvY2N1cnMgYW5kIHNpZ25hbHMgaW5leGFjdCB3aGVuZXZlciB0aGUgcmVzdWx0IG9mIGFuIG9wZXJhdGlvbiBpcwogICAgbm90IGV4YWN0ICh0aGF0IGlzLCBpdCBuZWVkZWQgdG8gYmUgcm91bmRlZCBhbmQgYW55IGRpc2NhcmRlZCBkaWdpdHMKICAgIHdlcmUgbm9uLXplcm8pLCBvciBpZiBhbiBvdmVyZmxvdyBvciB1bmRlcmZsb3cgY29uZGl0aW9uIG9jY3Vycy4gIFRoZQogICAgcmVzdWx0IGluIGFsbCBjYXNlcyBpcyB1bmNoYW5nZWQuCgogICAgVGhlIGluZXhhY3Qgc2lnbmFsIG1heSBiZSB0ZXN0ZWQgKG9yIHRyYXBwZWQpIHRvIGRldGVybWluZSBpZiBhIGdpdmVuCiAgICBvcGVyYXRpb24gKG9yIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMpIHdhcyBpbmV4YWN0LgogICAgKAMAAABSIAAAAFIhAAAAUiIAAAAoAAAAACgAAAAAKAAAAABzTwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHlSCQAAABEBAABzAgAAAAYKdA4AAABJbnZhbGlkQ29udGV4dGMAAAAAAAAAAAEAAABCAAAAcxcAAABlAABaAQBkAABaAgBkAQCEAABaAwBSUygCAAAAc+wBAABJbnZhbGlkIGNvbnRleHQuICBVbmtub3duIHJvdW5kaW5nLCBmb3IgZXhhbXBsZS4KCiAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyBpbnZhbGlkLW9wZXJhdGlvbiBpZiBhbiBpbnZhbGlkIGNvbnRleHQgd2FzCiAgICBkZXRlY3RlZCBkdXJpbmcgYW4gb3BlcmF0aW9uLiAgVGhpcyBjYW4gb2NjdXIgaWYgY29udGV4dHMgYXJlIG5vdCBjaGVja2VkCiAgICBvbiBjcmVhdGlvbiBhbmQgZWl0aGVyIHRoZSBwcmVjaXNpb24gZXhjZWVkcyB0aGUgY2FwYWJpbGl0eSBvZiB0aGUKICAgIHVuZGVybHlpbmcgY29uY3JldGUgcmVwcmVzZW50YXRpb24gb3IgYW4gdW5rbm93biBvciB1bnN1cHBvcnRlZCByb3VuZGluZwogICAgd2FzIHNwZWNpZmllZC4gIFRoZXNlIGFzcGVjdHMgb2YgdGhlIGNvbnRleHQgbmVlZCBvbmx5IGJlIGNoZWNrZWQgd2hlbgogICAgdGhlIHZhbHVlcyBhcmUgcmVxdWlyZWQgdG8gYmUgdXNlZC4gIFRoZSByZXN1bHQgaXMgWzAscU5hTl0uCiAgICBjAgAAAAMAAAABAAAARwAAAHMEAAAAdAAAUygBAAAATigBAAAAUikAAAAoAwAAAFIdAAAAUh4AAABSGwAAACgAAAAAKAAAAABzTwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHlSHwAAACgBAABzAgAAAAABKAQAAABSIAAAAFIhAAAAUiIAAABSHwAAACgAAAAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVIwAAAAHQEAAHMEAAAABgkGAmMAAAAAAAAAAAEAAABCAAAAcw4AAABlAABaAQBkAABaAgBSUygBAAAAc9kBAABOdW1iZXIgZ290IHJvdW5kZWQgKG5vdCAgbmVjZXNzYXJpbHkgY2hhbmdlZCBkdXJpbmcgcm91bmRpbmcpLgoKICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIHJvdW5kZWQgd2hlbmV2ZXIgdGhlIHJlc3VsdCBvZiBhbiBvcGVyYXRpb24gaXMKICAgIHJvdW5kZWQgKHRoYXQgaXMsIHNvbWUgemVybyBvciBub24temVybyBkaWdpdHMgd2VyZSBkaXNjYXJkZWQgZnJvbSB0aGUKICAgIGNvZWZmaWNpZW50KSwgb3IgaWYgYW4gb3ZlcmZsb3cgb3IgdW5kZXJmbG93IGNvbmRpdGlvbiBvY2N1cnMuICBUaGUKICAgIHJlc3VsdCBpbiBhbGwgY2FzZXMgaXMgdW5jaGFuZ2VkLgoKICAgIFRoZSByb3VuZGVkIHNpZ25hbCBtYXkgYmUgdGVzdGVkIChvciB0cmFwcGVkKSB0byBkZXRlcm1pbmUgaWYgYSBnaXZlbgogICAgb3BlcmF0aW9uIChvciBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zKSBjYXVzZWQgYSBsb3NzIG9mIHByZWNpc2lvbi4KICAgICgDAAAAUiAAAABSIQAAAFIiAAAAKAAAAAAoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5UgoAAAArAQAAcwIAAAAGCmMAAAAAAAAAAAEAAABCAAAAcw4AAABlAABaAQBkAABaAgBSUygBAAAAc5gBAABFeHBvbmVudCA8IEVtaW4gYmVmb3JlIHJvdW5kaW5nLgoKICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIHN1Ym5vcm1hbCB3aGVuZXZlciB0aGUgcmVzdWx0IG9mIGEgY29udmVyc2lvbiBvcgogICAgb3BlcmF0aW9uIGlzIHN1Ym5vcm1hbCAodGhhdCBpcywgaXRzIGFkanVzdGVkIGV4cG9uZW50IGlzIGxlc3MgdGhhbgogICAgRW1pbiwgYmVmb3JlIGFueSByb3VuZGluZykuICBUaGUgcmVzdWx0IGluIGFsbCBjYXNlcyBpcyB1bmNoYW5nZWQuCgogICAgVGhlIHN1Ym5vcm1hbCBzaWduYWwgbWF5IGJlIHRlc3RlZCAob3IgdHJhcHBlZCkgdG8gZGV0ZXJtaW5lIGlmIGEgZ2l2ZW4KICAgIG9yIG9wZXJhdGlvbiAob3Igc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucykgeWllbGRlZCBhIHN1Ym5vcm1hbCByZXN1bHQuCiAgICAoAwAAAFIgAAAAUiEAAABSIgAAACgAAAAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVILAAAANwEAAHMCAAAABgljAAAAAAAAAAABAAAAQgAAAHMXAAAAZQAAWgEAZAAAWgIAZAEAhAAAWgMAUlMoAgAAAHMaBAAATnVtZXJpY2FsIG92ZXJmbG93LgoKICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIG92ZXJmbG93IGlmIHRoZSBhZGp1c3RlZCBleHBvbmVudCBvZiBhIHJlc3VsdAogICAgKGZyb20gYSBjb252ZXJzaW9uIG9yIGZyb20gYW4gb3BlcmF0aW9uIHRoYXQgaXMgbm90IGFuIGF0dGVtcHQgdG8gZGl2aWRlCiAgICBieSB6ZXJvKSwgYWZ0ZXIgcm91bmRpbmcsIHdvdWxkIGJlIGdyZWF0ZXIgdGhhbiB0aGUgbGFyZ2VzdCB2YWx1ZSB0aGF0CiAgICBjYW4gYmUgaGFuZGxlZCBieSB0aGUgaW1wbGVtZW50YXRpb24gKHRoZSB2YWx1ZSBFbWF4KS4KCiAgICBUaGUgcmVzdWx0IGRlcGVuZHMgb24gdGhlIHJvdW5kaW5nIG1vZGU6CgogICAgRm9yIHJvdW5kLWhhbGYtdXAgYW5kIHJvdW5kLWhhbGYtZXZlbiAoYW5kIGZvciByb3VuZC1oYWxmLWRvd24gYW5kCiAgICByb3VuZC11cCwgaWYgaW1wbGVtZW50ZWQpLCB0aGUgcmVzdWx0IG9mIHRoZSBvcGVyYXRpb24gaXMgW3NpZ24saW5mXSwKICAgIHdoZXJlIHNpZ24gaXMgdGhlIHNpZ24gb2YgdGhlIGludGVybWVkaWF0ZSByZXN1bHQuICBGb3Igcm91bmQtZG93biwgdGhlCiAgICByZXN1bHQgaXMgdGhlIGxhcmdlc3QgZmluaXRlIG51bWJlciB0aGF0IGNhbiBiZSByZXByZXNlbnRlZCBpbiB0aGUKICAgIGN1cnJlbnQgcHJlY2lzaW9uLCB3aXRoIHRoZSBzaWduIG9mIHRoZSBpbnRlcm1lZGlhdGUgcmVzdWx0LiAgRm9yCiAgICByb3VuZC1jZWlsaW5nLCB0aGUgcmVzdWx0IGlzIHRoZSBzYW1lIGFzIGZvciByb3VuZC1kb3duIGlmIHRoZSBzaWduIG9mCiAgICB0aGUgaW50ZXJtZWRpYXRlIHJlc3VsdCBpcyAxLCBvciBpcyBbMCxpbmZdIG90aGVyd2lzZS4gIEZvciByb3VuZC1mbG9vciwKICAgIHRoZSByZXN1bHQgaXMgdGhlIHNhbWUgYXMgZm9yIHJvdW5kLWRvd24gaWYgdGhlIHNpZ24gb2YgdGhlIGludGVybWVkaWF0ZQogICAgcmVzdWx0IGlzIDAsIG9yIGlzIFsxLGluZl0gb3RoZXJ3aXNlLiAgSW4gYWxsIGNhc2VzLCBJbmV4YWN0IGFuZCBSb3VuZGVkCiAgICB3aWxsIGFsc28gYmUgcmFpc2VkLgogICAgYwMAAAAEAAAABQAAAEcAAABztwAAAHwBAGoAAHQBAHQCAHQDAHQEAGYEAGsGAHIjAHQFAHwCABlTfAIAZAEAawIAcmsAfAEAagAAdAYAawIAckYAdAUAfAIAGVN0BwB8AgBkAgB8AQBqCAAUfAEAagkAfAEAaggAGGQDABeDAwBTfAIAZAMAawIAcrMAfAEAagAAdAoAawIAco4AdAUAfAIAGVN0BwB8AgBkAgB8AQBqCAAUfAEAagkAfAEAaggAGGQDABeDAwBTZAAAUygEAAAATmkAAAAAdAEAAAA5aQEAAAAoCwAAAHQIAAAAcm91bmRpbmdSDwAAAFIQAAAAUhQAAABSEwAAAFIsAAAAUhEAAABSJAAAAHQEAAAAcHJlY3QEAAAARW1heFISAAAAKAQAAABSHQAAAFIeAAAAUi0AAABSGwAAACgAAAAAKAAAAABzTwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHlSHwAAAFgBAABzGgAAAAABDAEPAQgBDAEPAQgBEAEVAQwBDwEIARABKAQAAABSIAAAAFIhAAAAUiIAAABSHwAAACgAAAAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVIMAAAAQgEAAHMEAAAABhQGAmMAAAAAAAAAAAEAAABCAAAAcw4AAABlAABaAQBkAABaAgBSUygBAAAAc3gCAABOdW1lcmljYWwgdW5kZXJmbG93IHdpdGggcmVzdWx0IHJvdW5kZWQgdG8gMC4KCiAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyB1bmRlcmZsb3cgaWYgYSByZXN1bHQgaXMgaW5leGFjdCBhbmQgdGhlCiAgICBhZGp1c3RlZCBleHBvbmVudCBvZiB0aGUgcmVzdWx0IHdvdWxkIGJlIHNtYWxsZXIgKG1vcmUgbmVnYXRpdmUpIHRoYW4KICAgIHRoZSBzbWFsbGVzdCB2YWx1ZSB0aGF0IGNhbiBiZSBoYW5kbGVkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiAodGhlIHZhbHVlCiAgICBFbWluKS4gIFRoYXQgaXMsIHRoZSByZXN1bHQgaXMgYm90aCBpbmV4YWN0IGFuZCBzdWJub3JtYWwuCgogICAgVGhlIHJlc3VsdCBhZnRlciBhbiB1bmRlcmZsb3cgd2lsbCBiZSBhIHN1Ym5vcm1hbCBudW1iZXIgcm91bmRlZCwgaWYKICAgIG5lY2Vzc2FyeSwgc28gdGhhdCBpdHMgZXhwb25lbnQgaXMgbm90IGxlc3MgdGhhbiBFdGlueS4gIFRoaXMgbWF5IHJlc3VsdAogICAgaW4gMCB3aXRoIHRoZSBzaWduIG9mIHRoZSBpbnRlcm1lZGlhdGUgcmVzdWx0IGFuZCBhbiBleHBvbmVudCBvZiBFdGlueS4KCiAgICBJbiBhbGwgY2FzZXMsIEluZXhhY3QsIFJvdW5kZWQsIGFuZCBTdWJub3JtYWwgd2lsbCBhbHNvIGJlIHJhaXNlZC4KICAgICgDAAAAUiAAAABSIQAAAFIiAAAAKAAAAAAoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5Ug0AAABoAQAAcwIAAAAGDXQNAAAATW9ja1RocmVhZGluZ2MAAAAAAAAAAAIAAABCAAAAcxQAAABlAABaAQBlAgBkAACEAQBaAwBSUygBAAAAYwIAAAACAAAAAgAAAEMAAABzCwAAAHwBAGoAAHQBABlTKAEAAABOKAIAAAB0BwAAAG1vZHVsZXNSIAAAACgCAAAAUh0AAAB0AwAAAHN5cygAAAAAKAAAAABzTwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVp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AQAAAAIAAABDAAAAcyIAAAB8AABkAQBrCAByGAB0AQCDAAB9AABuAAB0AgB8AACDAQBTKAIAAABzXgQAAFJldHVybiBhIGNvbnRleHQgbWFuYWdlciBmb3IgYSBjb3B5IG9mIHRoZSBzdXBwbGllZCBjb250ZXh0CgogICAgVXNlcyBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgY29udGV4dCBpZiBubyBjb250ZXh0IGlzIHNwZWNpZmllZAogICAgVGhlIHJldHVybmVkIGNvbnRleHQgbWFuYWdlciBjcmVhdGVzIGEgbG9jYWwgZGVjaW1hbCBjb250ZXh0CiAgICBpbiBhIHdpdGggc3RhdGVtZW50OgogICAgICAgIGRlZiBzaW4oeCk6CiAgICAgICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGN0eDoKICAgICAgICAgICAgICAgICBjdHgucHJlYyArPSAyCiAgICAgICAgICAgICAgICAgIyBSZXN0IG9mIHNpbiBjYWxjdWxhdGlvbiBhbGdvcml0aG0KICAgICAgICAgICAgICAgICAjIHVzZXMgYSBwcmVjaXNpb24gMiBncmVhdGVyIHRoYW4gbm9ybWFsCiAgICAgICAgICAgICByZXR1cm4gK3MgICMgQ29udmVydCByZXN1bHQgdG8gbm9ybWFsIHByZWNpc2lvbgoKICAgICAgICAgZGVmIHNpbih4KToKICAgICAgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KEV4dGVuZGVkQ29udGV4dCk6CiAgICAgICAgICAgICAgICAgIyBSZXN0IG9mIHNpbiBjYWxjdWxhdGlvbiBhbGdvcml0aG0KICAgICAgICAgICAgICAgICAjIHVzZXMgdGhlIEV4dGVuZGVkIENvbnRleHQgZnJvbSB0aGUKICAgICAgICAgICAgICAgICAjIEdlbmVyYWwgRGVjaW1hbCBBcml0aG1ldGljIFNwZWNpZmljYXRpb24KICAgICAgICAgICAgIHJldHVybiArcyAgIyBDb252ZXJ0IHJlc3VsdCB0byBub3JtYWwgY29udGV4dAoKICAgID4+PiBzZXRjb250ZXh0KERlZmF1bHRDb250ZXh0KQogICAgPj4+IHByaW50IGdldGNvbnRleHQoKS5wcmVjCiAgICAyOAogICAgPj4+IHdpdGggbG9jYWxjb250ZXh0KCk6CiAgICAuLi4gICAgIGN0eCA9IGdldGNvbnRleHQoKQogICAgLi4uICAgICBjdHgucHJlYyArPSAyCiAgICAuLi4gICAgIHByaW50IGN0eC5wcmVjCiAgICAuLi4KICAgIDMwCiAgICA+Pj4gd2l0aCBsb2NhbGNvbnRleHQoRXh0ZW5kZWRDb250ZXh0KToKICAgIC4uLiAgICAgcHJpbnQgZ2V0Y29udGV4dCgpLnByZWMKICAgIC4uLgogICAgOQogICAgPj4+IHByaW50IGdldGNvbnRleHQoKS5wcmVjCiAgICAyOAogICAgTigDAAAAdAQAAABOb25lUhcAAAB0DwAAAF9Db250ZXh0TWFuYWdlcigBAAAAdAMAAABjdHgoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5UhgAAADQAQAAcwYAAAAAJAwADAFjAAAAAAAAAAARAAAAQgAAAHNyBQAAZQAAWgEAZAAAWgIAZIEAWgMAZAUAZIIAZAYAhAIAWgUAZAcAhAAAWgYAZQcAZQYAgwEAWgYAZAgAhAAAWggAZAkAhAAAWgkAZIIAZIIAZAoAhAIAWgoAZAsAhAAAWgsAZAwAhAAAWgwAZA0AhAAAWg0AZIIAZA4AhAEAWg4AZIIAZA8AhAEAWg8AZIIAZBAAhAEAWhAAZIIAZBEAhAEAWhEAZIIAZBIAhAEAWhIAZIIAZBMAhAEAWhMAZIIAZBQAhAEAWhQAZBUAhAAAWhUAZBYAhAAAWhYAZBcAhAAAWhcAZRgAZIIAZBgAhAIAWhkAZIIAZBkAhAEAWhoAZIIAZBoAhAEAWhsAZIIAZBsAhAEAWhwAZR0AZIIAZBwAhAIAWh4AZIIAZB0AhAEAWh8AZR8AWiAAZIIAZB4AhAEAWiEAZIIAZB8AhAEAWiIAZIIAZCAAhAEAWiMAZSMAWiQAZIIAZCEAhAEAWiUAZCIAhAAAWiYAZIIAZCMAhAEAWicAZSUAWigAZScAWikAZIIAZCQAhAEAWioAZIIAZCUAhAEAWisAZIIAZCYAhAEAWiwAZIIAZCcAhAEAWi0AZIIAZCgAhAEAWi4AZIIAZCkAhAEAWi8AZIIAZCoAhAEAWjAAZCsAhAAAWjEAZCwAhAAAWjIAZTIAWjMAZC0AhAAAWjQAZTUAZTQAgwEAWjQAZC4AhAAAWjYAZTUAZTYAgwEAWjYAZC8AhAAAWjcAZDAAhAAAWjgAZDEAhAAAWjkAZDIAhAAAWjoAZDMAhAAAWjsAZDQAhAAAWjwAZDUAhAAAWj0AZDYAhAAAWj4AZDcAhAAAWj8AZDgAhAAAWkAAZDkAhAAAWkEAZDoAhAAAWkIAZDsAhAAAWkMAZUQAZDwAZTwAZD0AZT0AZD4AZT4AZD8AZT8AZEAAZUAAZEEAZUEAZEIAZUIAZEMAZUMAgwAIWkUAZIIAZEQAhAEAWkYAZIIAZEUAhAEAWkcAZEYAhAAAWkgAZIIAZIIAZEcAhAIAWkkAZIIAZEgAhAEAWkoAZIIAZEkAhAEAWksAZIIAZIIAZR0AZEoAhAMAWkwAZEsAhAAAWk0AZEwAhAAAWk4AZE0AhAAAWk8AZIIAZIIAZE4AhAIAWlAAZIIAZIIAZE8AhAIAWlEAZVEAWlIAZIIAZFAAhAEAWlMAZIIAZFEAhAEAWlQAZIIAZFIAhAEAWlUAZFMAhAAAWlYAZFQAhAAAWlcAZFUAhAAAWlgAZIIAZFYAhAEAWlkAZIIAZFcAhAEAWloAZFgAhAAAWlsAZFkAhAAAWlwAZFoAhAAAWl0AZFsAhAAAWl4AZFwAhAAAWl8AZIIAZF0AhAEAWmAAZF4AhAAAWmEAZF8AhAAAWmIAZGAAhAAAWmMAZGEAhAAAWmQAZIIAZGIAhAEAWmUAZGMAhAAAWmYAZGQAhAAAWmcAZGUAhAAAWmgAZIIAZGYAhAEAWmkAZGcAhAAAWmoAZGgAhAAAWmsAZIIAZGkAhAEAWmwAZGoAhAAAWm0AZIIAZGsAhAEAWm4AZIIAZGwAhAEAWm8AZG0AhAAAWnAAZG4AhAAAWnEAZIIAZG8AhAEAWnIAZIIAZHAAhAEAWnMAZIIAZHEAhAEAWnQAZIIAZHIAhAEAWnUAZIIAZHMAhAEAWnYAZIIAZHQAhAEAWncAZIIAZHUAhAEAWngAZIIAZHYAhAEAWnkAZIIAZHcAhAEAWnoAZIIAZHgAhAEAWnsAZHkAhAAAWnwAZIIAZHoAhAEAWn0AZIIAZHsAhAEAWn4AZIIAZHwAhAEAWn8AZH0AhAAAWoAAZH4AhAAAWoEAZH8AhAAAWoIAZIIAZIIAZIAAhAIAWoMAUlMogwAAAHMsAAAARmxvYXRpbmcgcG9pbnQgY2xhc3MgZm9yIGRlY2ltYWwgYXJpdGhtZXRpYy50BAAAAF9leHBSJgAAAFIlAAAAdAsAAABfaXNfc3BlY2lhbHQBAAAAMGMDAAAACwAAAAkAAABDAAAAc8QEAAB0AABqAQB8AACDAQB9AwB0AgB8AQB0AwCDAgBymgF0BAB8AQBqBQCDAACDAQB9BAB8BABkGABrCAByaAB8AgBkGABrCAByVAB0BwCDAAB9AgBuAAB8AgBqCAB0CQBkAQB8AQAWgwIAU3wEAGoKAGQCAIMBAGQDAGsCAHKJAGQEAHwDAF8LAG4JAGQFAHwDAF8LAHwEAGoKAGQGAIMBAH0FAHwFAGQYAGsJAHIVAXwEAGoKAGQHAIMBAHC/AGQIAH0GAHQMAHwEAGoKAGQJAIMBAHDXAGQKAIMBAH0HAHQNAHQMAHwFAHwGABeDAQCDAQB8AwBfDgB8BwB0DwB8BgCDAQAYfAMAXxAAdBEAfAMAXxIAboEAfAQAagoAZAsAgwEAfQgAfAgAZBgAawkAcnsBdA0AdAwAfAgAcD8BZAoAgwEAgwEAahMAZAoAgwEAfAMAXw4AfAQAagoAZAwAgwEAcm8BZA0AfAMAXxAAcY0BZA4AfAMAXxAAbhIAZAoAfAMAXw4AZA8AfAMAXxAAdBQAfAMAXxIAfAMAU3QCAHwBAHQMAHQVAGYCAIMCAHL7AXwBAGQFAGsFAHLHAWQFAHwDAF8LAG4JAGQEAHwDAF8LAGQFAHwDAF8QAHQNAHQWAHwBAIMBAIMBAHwDAF8OAHQRAHwDAF8SAHwDAFN0AgB8AQB0FwCDAgByPgJ8AQBqEAB8AwBfEAB8AQBqCwB8AwBfCwB8AQBqDgB8AwBfDgB8AQBqEgB8AwBfEgB8AwBTdAIAfAEAdBgAgwIAcooCfAEAahkAfAMAXwsAdA0AfAEAagwAgwEAfAMAXw4AdAwAfAEAahoAgwEAfAMAXxAAdBEAfAMAXxIAfAMAU3QCAHwBAHQbAHQcAGYCAIMCAHJeBHQPAHwBAIMBAGQQAGsDAHLAAnQdAGQRAIMBAIIBAG4AAHQCAHwBAGQFABl0DAB0FQBm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Zm9yIHRoZSBzaWduYWxpbmcgY29tcGFyaXNvbnMKICAgICAgICBjb21wYXJlX3NpZ25hbCwgX19sZV9fLCBfX2x0X18sIF9fZ2VfXywgX19ndF9fLgoKICAgICAgICBTaWduYWwgSW52YWxpZE9wZXJhdGlvbiBpZiBlaXRoZXIgc2VsZiBvciBvdGhlciBpcyBhIChxdWlldAogICAgICAgIG9yIHNpZ25hbGluZykgTmFOLiAgU2lnbmFsaW5nIE5hTnMgdGFrZSBwcmVjZWRlbmNlIG92ZXIgcXVpZXQKICAgICAgICBOYU5zLgoKICAgICAgICBSZXR1cm4gMCBpZiBuZWl0aGVyIG9wZXJhbmQgaXMgYSBOYU4uCgogICAgICAgIHMZAAAAY29tcGFyaXNvbiBpbnZvbHZpbmcgc05hTnMYAAAAY29tcGFyaXNvbiBpbnZvbHZpbmcgTmFOaQAAAABOKAcAAABSQAAAAFIXAAAAUkQAAAB0BwAAAGlzX3NuYW5SVQAAAFIHAAAAdAcAAABpc19xbmFuKAMAAABSHQAAAFJ8AAAAUh4AAAAoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5dBMAAABfY29tcGFyZV9jaGVja19uYW5z+AIAAHMoAAAAAAsMAQwCEgEMAQkBAwEHAQwBCQEDAQcBDAEJAQMBBwEMAQkBAwEKAWMBAAAAAQAAAAMAAABDAAAAcxYAAAB8AABqAABwFQB8AABqAQBkAQBrAwBTKAIAAABzdQAAAFJldHVybiBUcnVlIGlmIHNlbGYgaXMgbm9uemVybzsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KCiAgICAgICAgTmFOcyBhbmQgaW5maW5pdGllcyBhcmUgY29uc2lkZXJlZCBub256ZXJvLgogICAgICAgIFJFAAAAKAIAAABSRAAAAFImAAAAKAEAAABSHQAAACgAAAAAKAAAAABzTwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHl0CwAA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AAAAKAAAAABzTwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHl0BwAAAF9faW50X184BgAAcxIAAAAAAgkBDAEPAQwBEgENAQ8BHAJjAQAAAAEAAAABAAAAQwAAAHMEAAAAfAAAUygBAAAATigAAAAAKAEAAABSHQAAACgAAAAAKAAAAABzTwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHl0BAAAAHJlYWxHBgAAcwIAAAAAAWMBAAAAAQAAAAIAAABDAAAAcwoAAAB0AABkAQCDAQBTKAIAAABOaQAAAAAoAQAAAFIAAAAAKAEAAABSHQAAACgAAAAAKAAAAABzTwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHl0BAAAAGltYWdLBgAAcwIAAAAAAWMBAAAAAQAAAAEAAABDAAAAcwQAAAB8AABTKAEAAABOKAAAAAAoAQAAAFIdAAAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weXQJAAAAY29uanVnYXRlTwYAAHMCAAAAAAFjAQAAAAEAAAADAAAAQwAAAHMQAAAAdAAAdAEAfAAAgwEAgwEAUygBAAAATigCAAAAdAcAAABjb21wbGV4UmQAAAAoAQAAAFIdAAAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weXQLAAAAX19jb21wbGV4X19SBgAAcwIAAAAAAWMBAAAAAQAAAAIAAABDAAAAcxAAAAB0AAB8AABqAQCDAACDAQBTKAEAAABzQwAAAENvbnZlcnRzIHRvIGEgbG9uZy4K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dHMsIGNvbXB1dGUgc2VsZioqb3RoZXIuCgogICAgICAgIFdpdGggdGhyZWUgYXJndW1lbnRzLCBjb21wdXRlIChzZWxmKipvdGhlcikgJSBtb2R1bG8uICBGb3IgdGhlCiAgICAgICAgdGhyZWUgYXJndW1lbnQgZm9ybSwgdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnMgb24gdGhlCiAgICAgICAgYXJndW1lbnRzIGhvbGQ6CgogICAgICAgICAtIGFsbCB0aHJlZSBhcmd1bWVudHMgbXVzdCBiZSBpbnRlZ3JhbAogICAgICAgICAtIG90aGVyIG11c3QgYmUgbm9ubmVnYXRpdmUKICAgICAgICAgLSBlaXRoZXIgc2VsZiBvciBvdGhlciAob3IgYm90aCkgbXVzdCBiZSBub256ZXJvCiAgICAgICAgIC0gbW9kdWxvIG11c3QgYmUgbm9uemVybyBhbmQgbXVzdCBoYXZlIGF0IG1vc3QgcCBkaWdpdHMsCiAgICAgICAgICAgd2hlcmUgcCBpcyB0aGUgY29udGV4dCBwcmVjaXNpb24uCgogICAgICAgIElmIGFueSBvZiB0aGVzZSByZXN0cmljdGlvbnMgaXMgdmlvbGF0ZWQgdGhlIEludmFsaWRPcGVyYXRpb24KICAgICAgICBmbGFnIGlzIHJhaXNlZC4KCiAgICAgICAgVGhlIHJlc3VsdCBvZiBwb3coc2VsZiwgb3RoZXIsIG1vZHVsbykgaXMgaWRlbnRpY2FsIHRvIHRoZQogICAgICAgIHJlc3VsdCB0aGF0IHdvdWxkIGJlIG9idGFpbmVkIGJ5IGNvbXB1dGluZyAoc2VsZioqb3RoZXIpICUKICAgICAgICBtb2R1bG8gd2l0aCB1bmJvdW5kZWQgcHJlY2lzaW9uLCBidXQgaXMgY29tcHV0ZWQgbW9yZQogICAgICAgIGVmZmljaWVudGx5LiAgSXQgaXMgYWx3YXlzIGV4YWN0LgogICAgICAgIHMGAAAAMCAqKiAwaQAAAABpAQAAAHMrAAAAeCAqKiB5IHdpdGggeCBuZWdhdGl2ZSBhbmQgeSBub3QgYW4gaW50ZWdlclJFAAAAUr4AAABpAwAAAGkFAAAAaQoAAABzCgAAAGFib3ZlIEVtYXhOKC0AAABSQAAAAFIEAQAAUo0AAABSjgAAAFIXAAAAUn8AAABSVQAAAFIHAAAAdAQAAABfT25lUiUAAABSmQAAAFL9AAAAUq4AAABSJAAAAFIsAAAAUnoAAABSMwAAAFJHAAAAUkMAAABSCgAAAFIJAAAAUoQAAABSWQAAAHQQAAAAX2xvZzEwX2V4cF9ib3VuZFJYAAAAUlcAAABSNAAAAFLCAAAAUhYBAABSJgAAAFInAAAAUl0AAABSSgAAAFItAAAAdAcAAABfZHBvd2VyUjoAAABSOwAAAHQIAAAAX3NpZ25hbHN0BQAAAHRyYXBzUq8AAAB0BQAAAGZsYWdzUgsAAABSDQAAAFIMAAAAUgYAAAAoGAAAAFIdAAAAUnwAAABS/wAAAFIeAAAAUioAAAB0CwAAAHJlc3VsdF9zaWdudAoAAABtdWx0aXBsaWVyUkoAAAB0CAAAAHNlbGZfYWRqdAUAAABleGFjdHQFAAAAYm91bmRSwgAAAFIIAQAAUgkBAABSCgEAAFILAQAAUgwBAABSDQEAAFIOAQAAdAUAAABleHRyYVLEAAAAUskAAAB0CgAAAG5ld2NvbnRleHR0CQAAAGV4Y2VwdGlvbigAAAAAKAAAAABzTwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHl0BwAAAF9fcG93X19+CAAAc8oAAAAAGAwBEwIMAQwBBAIMAQwDEgEGAQQDBgEGARACBwMGAQ8BDAEMAQwEBgEJAQcCDwMGAQ8BEAILAwwBDwEIAhMFDAEMBQ8BCQEPAQwCDAINARMBDQETAg0BDQENAhkDDAQMARsBEAILBAYBBgcWARsDGwEfBAwBGQEZAwwBGQEMAQwBGwEMAwwBCQEMARMBDAETAQ8BCgQGAQkBIgEmAQQBDgIbDxMDGAEaARcBEwMMAQoBDQERAw8DDQENARAHDQEZARwBDQEXAw8CYwMAAAADAAAABAAAAEMAAABzLwAAAHQAAHwBAIMBAH0BAHwBAHQBAGsIAHIcAHwBAFN8AQBqAgB8AABkAQB8AgCDAQFTKAIAAABzJQAAAFN3YXBzIHNlbGYvb3RoZXIgYW5kIHJldHVybnMgX19wb3dfXy5SHgAAACgDAAAAUo0AAABSjgAAAFIlAQAAKAMAAABSHQAAAFJ8AAAAUh4AAAAoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5dAgAAABfX3Jwb3dfX1YJAABzCAAAAAACDAEMAQQBYwIAAAAHAAAABQAAAEMAAABzBAEAAHwBAGQFAGsIAHIYAHQBAIMAAH0BAG4AAHwAAGoCAHJAAHwAAGoDAGQBAHwBAIMAAX0CAHwCAHJAAHwCAFNuAAB8AABqBAB8AQCDAQB9AwB8AwBqBQCDAAByXwB8AwBTfAMAc3gAdAYAfAMAagcAZAIAZAMAgwMAU3wBAGoIAHwBAGoJAIMAAGcCAHwBAGoKABl9BAB0CwB8AwBqDACDAQB9BQB8AwBqDQB9BgB4OwB8AwBqDAB8BQBkBAAYGWQCAGsCAHLpAHwGAHwEAGsAAHLpAHwGAGQEADd9BgB8BQBkBAA4fQUAca8AV3QGAHwDAGoHAHwDAGoMAHwFACB8BgCDAwBTKAYAAABzPwAAAE5vcm1hbGl6ZS0gc3RyaXAgdHJhaWxpbmcgMHMsIGNoYW5nZSBhbnl0aGluZyBlcXVhbCB0byAwIHRvIDBlMFIeAAAAUkUAAABpAAAAAGkBAAAATigOAAAAUkAAAABSFwAAAFJEAAAAUn8AAABSrwAAAFJ6AAAAUiQAAABSJQAAAFI0AAAAUuUAAABS4gAAAFJYAAAAUiYAAABSQwAAACgHAAAAUh0AAABSHgAAAFIqAAAAdAMAAABkdXBS5wAAAHQDAAAAZW5kUkoAAAAoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5dAkAAABub3JtYWxpemVdCQAAcyQAAAAAAwwBDAIJARIBBgEHAg8BDAEEAgYBEwEcAQ8BCQEmAQoBDgFjBQAAAAcAAAAIAAAAQwAAAHOwAgAAdAAAfAEAZAEAdAEAgwEBfQEAfAMAZAgAawgAcioAdAMAgwAAfQMAbgAAfAIAZAgAawgAckIAfAMAagQAfQIAbgAAfAAAagUAc1QAfAEAagUAcr0AfAAAagYAfAEAfAMAgwIAfQUAfAUAcnAAfAUAU3wBAGoHAIMAAHOIAHwAAGoHAIMAAHK9AHwBAGoHAIMAAHKqAHwAAGoHAIMAAHKqAHQIAHwAAIMBAFN8AwBqCQB0CgBkAgCDAgBTbgAAfAQAcxoBfAAAagsAfAEAagwAfAIAgwIAfQUAfAUAagwAfAAAagwAawQAchYBfAMAagkAdA0AgwEAAXwFAHwAAGsDAHIWAXwDAGoJAHQOAIMBAAFxFgFuAAB8BQBTfAMAag8AgwAAfAEAagwABANrAQBvPQF8AwBqEABrAQBuAgACAXNSAXwDAGoJAHQKAGQDAIMCAFN8AABzfQF0EQB8AABqEgBkBAB8AQBqDACDAwB9BQB8BQBqEwB8AwCDAQBTfAAAahQAgwAAfQYAfAYAfAMAahAAawQAcqgBfAMAagkAdAoAZAUAgwIAU3wGAHwBAGoMABhkBgAXfAMAahUAawQActIBfAMAagkAdAoAZAcAgwIAU3wAAGoLAHwBAGoMAHwCAIMCAH0FAHwFAGoUAIMAAHwDAGoQAGsEAHIMAnwDAGoJAHQKAGQFAIMCAFN0FgB8BQBqFwCDAQB8AwBqFQBrBAByNAJ8AwBqCQB0CgBkBwCDAgBTfAUAcl8CfAUAahQAgwAAfAMAahgAawAAcl8CfAMAagkAdBkAgwEAAW4AAHwFAGoMAHwAAGoMAGsEAHKdAnwFAHwAAGsDAHKNAnwDAGoJAHQOAIMBAAFuAAB8AwBqCQB0DQCDAQABbgAAfAUAahMAfAMAgwEAfQUAfAUAUygJAAAAc4cAAABRdWFudGl6ZSBzZWxmIHNvIGl0cyBleHBvbmVudCBpcyB0aGUgc2FtZSBhcyB0aGF0IG9mIGV4cC4KCiAgICAgICAgU2ltaWxhciB0byBzZWxmLl9yZXNjYWxlKGV4cC5fZXhwKSBidXQgd2l0aCBlcnJvciBjaGVja2luZy4KICAgICAgICBSlQAAAHMVAAAAcXVhbnRpemUgd2l0aCBvbmUgSU5GcykAAAB0YXJnZXQgZXhwb25lbnQgb3V0IG9mIGJvdW5kcyBpbiBxdWFudGl6ZVJFAAAAczkAAABleHBvbmVudCBvZiBxdWFudGl6ZSByZXN1bHQgdG9vIGxhcmdlIGZvciBjdXJyZW50IGNvbnRleHRpAQAAAHM3AAAAcXVhbnRpemUgcmVzdWx0IGhhcyB0b28gbWFueSBkaWdpdHMgZm9yIGN1cnJlbnQgY29udGV4dE4oGgAAAFKNAAAAUicAAABSQAAAAFIXAAAAUjIAAABSRAAAAFJ/AAAAUnoAAABSAAAAAFJVAAAAUgcAAABStgAAAFJDAAAAUgoAAABSCQAAAFLCAAAAUjQAAABSJAAAAFIlAAAAUq8AAABShAAAAFIzAAAAUlgAAABSJgAAAHQEAAAARW1pblILAAAAKAcAAABSHQAAAFJKAAAAUjIAAABSHgAAAHQIAAAAd2F0Y2hleHBSKgAAAFKHAAAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weXQIAAAAcXVhbnRpemV2CQAAc2IAAAAABRICDAEMAQwBDAISARIBBgEEAhgBGAEKAQkBCgMGARUCEgENAQwBEwEEAygBCQEHAgYBGAENAgwBDwEJAQcBGgEJAQcCFQEVAQkBBwEYAQkBBwMbARABEgEMARABEAQPAWMCAAAAAgAAAAYAAABDAAAAc2IAAAB0AAB8AQBkAQB0AQCDAQF9AQB8AABqAgBzJAB8AQBqAgByUgB8AABqAwCDAAByPAB8AQBqAwCDAABwUQB8AABqBACDAABvUQB8AQBqBACDAABTfAAAagUAfAEAagUAawIAUygCAAAAcz0BAABSZXR1cm4gVHJ1ZSBpZiBzZWxmIGFuZCBvdGhlciBoYXZlIHRoZSBzYW1lIGV4cG9uZW50OyBvdGhlcndpc2UKICAgICAgICByZXR1cm4gRmFsc2UuCgogICAgICAgIElmIGVpdGhlciBvcGVyYW5kIGlzIGEgc3BlY2lhbCB2YWx1ZSwgdGhlIGZvbGxvd2luZyBydWxlcyBhcmUgdXNlZDoKICAgICAgICAgICAqIHJldHVybiBUcnVlIGlmIGJvdGggb3BlcmFuZHMgYXJlIGluZmluaXRpZXMKICAgICAgICAgICAqIHJldHVybiBUcnVlIGlmIGJvdGggb3BlcmFuZHMgYXJlIE5hTnMKICAgICAgICAgICAqIG90aGVyd2lzZSwgcmV0dXJuIEZhbHNlLgogICAgICAgIFKVAAAAKAYAAABSjQAAAFInAAAAUkQAAABSlwAAAHQLAAAAaXNfaW5maW5pdGVSQwAAACgCAAAAUh0AAABSfAAAACgAAAAAKAAAAABzTwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHl0DAAAAHNhbWVfcXVhbnR1bb0JAABzCgAAAAAJEgESARgBFgFjAwAAAAcAAAAGAAAAQwAAAHMPAQAAfAAAagAAchMAdAEAfAAAgwEAU3wAAHMsAHQCAHwAAGoDAGQBAHwBAIMDAFN8AABqBAB8AQBrBQByYAB0AgB8AABqAwB8AABqBQBkAQB8AABqBAB8AQAYFBd8AQCDAwBTdAYAfAAAagUAgwEAfAAAagQAF3wBABh9AwB8AwBkAgBrAAByqAB0AgB8AABqAwBkAwB8AQBkBAAYgwMAfQAAZAIAfQMAbgAAfAAAagcAfAIAGX0EAHwEAHwAAHwDAIMCAH0FAHwAAGoFAHwDACBw1ABkAQB9BgB8BQBkBABrAgBy/AB0CAB0CQB8BgCDAQBkBAAXgwEAfQYAbgAAdAIAfAAAagMAfAYAfAEAgwMAUygFAAAAc3MBAABSZXNjYWxlIHNlbGYgc28gdGhhdCB0aGUgZXhwb25lbnQgaXMgZXhwLCBlaXRoZXIgYnkgcGFkZGluZyB3aXRoIHplcm9zCiAgICAgICAgb3IgYnkgdHJ1bmNhdGluZyBkaWdpdHMsIHVzaW5nIHRoZSBnaXZlbiByb3VuZGluZyBtb2RlLgoKICAgICAgICBTcGVjaWFscyBhcmUgcmV0dXJuZWQgd2l0aG91dCBjaGFuZ2UuICBUaGlzIG9wZXJhdGlvbiBpcwogICAgICAgIHF1aWV0OiBpdCByYWlzZXMgbm8gZmxhZ3MsIGFuZCB1c2VzIG5vIGluZm9ybWF0aW9uIGZyb20gdGhlCiAgICAgICAgY29udGV4dC4KCiAgICAgICAgZXhwID0gZXhwIHRvIHNjYWxlIHRvIChhbiBpbnRlZ2VyKQogICAgICAgIHJvdW5kaW5nID0gcm91bmRpbmcgbW9kZQogICAgICAgIFJFAAAAaQAAAABSvgAAAGkBAAAAKAoAAABSRAAAAFIAAAAAUiQAAABSJQAAAFJDAAAAUiYAAABSWAAAAFLmAAAAUlcAAABSRwAAACgHAAAAUh0AAABSSgAAAFIyAAAAUmwAAAB0DQAAAHRoaXNfZnVuY3Rpb25S7AAAAFLEAAAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVK2AAAAzAkAAHMiAAAAAAsJAQoBBgETAg8CCQEcBBoBDAEZAQkBDQEPARMBDAEZAWMDAAAABAAAAAQAAABDAAAAc5QAAAB8AQBkAQBrAQByGwB0AABkAgCDAQCCAQBuAAB8AABqAQBzKwB8AAAMcjUAdAIAfAAAgwEAU3wAAGoDAHwAAGoEAIMAAGQDABd8AQAYfAIAgwIAfQMAfAMAagQAgwAAfAAAagQAgwAAawMAcpAAfAMAagMAfAMAagQAgwAAZAMAF3wBABh8AgCDAgB9AwBuAAB8AwBTKAQAAABzIgEAAFJvdW5kIGEgbm9uemVybywgbm9uc3BlY2lhbCBEZWNpbWFsIHRvIGEgZml4ZWQgbnVtYmVyIG9mCiAgICAgICAgc2lnbmlmaWNhbnQgZmlndXJlcywgdXNpbmcgdGhlIGdpdmVuIHJvdW5kaW5nIG1vZGUuCgogICAgICAgIEluZmluaXRpZXMsIE5hTnMgYW5kIHplcm9zIGFyZSByZXR1cm5lZCB1bmFsdGVyZWQuCgogICAgICAgIFRoaXMgb3BlcmF0aW9uIGlzIHF1aWV0OiBpdCByYWlzZXMgbm8gZmxhZ3MsIGFuZCB1c2VzIG5vCiAgICAgICAgaW5mb3JtYXRpb24gZnJvbSB0aGUgY29udGV4dC4KCiAgICAgICAgaQAAAABzJwAAAGFyZ3VtZW50IHNob3VsZCBiZSBhdCBsZWFzdCAxIGluIF9yb3VuZGkBAAAAKAUAAABSYAAAAFJEAAAAUgAAAABStgAAAFKEAAAAKAQAAABSHQAAAHQGAAAAcGxhY2VzUjIAAABSKgAAACgAAAAAKAAAAABzTwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHl0BgAAAF9yb3VuZO4JAABzEAAAAAAKDAEPARABCgEgBRgBIwFjAwAAAAQAAAAEAAAAQwAAAHPQAAAAfAAAagAAci8AfAAAagEAZAEAfAIAgwABfQMAfAMAciUAfAMAU3QCAHwAAIMBAFN8AABqAwBkAgBrBQBySAB0AgB8AACDAQBTfAAAc2EAdAQAfAAAagUAZAMAZAIAgwMAU3wCAGQEAGsIAHJ5AHQHAIMAAH0CAG4AAHwBAGQEAGsIAHKRAHwCAGoIAH0BAG4AAHwAAGoJAGQCAHwBAIMCAH0DAHwDAHwAAGsDAHK/AHwCAGoKAHQLAIMBAAFuAAB8AgBqCgB0DACDAQABfAMAUygFAAAAc1YBAABSb3VuZHMgdG8gYSBuZWFyYnkgaW50ZWdlci4KCiAgICAgICAgSWYgbm8gcm91bmRpbmcgbW9kZSBpcyBzcGVjaWZpZWQsIHRha2UgdGhlIHJvdW5kaW5nIG1vZGUgZnJvbQogICAgICAgIHRoZSBjb250ZXh0LiAgVGhpcyBtZXRob2QgcmFpc2VzIHRoZSBSb3VuZGVkIGFuZCBJbmV4YWN0IGZsYWdzCiAgICAgICAgd2hlbiBhcHByb3ByaWF0ZS4KCiAgICAgICAgU2VlIGFsc286IHRvX2ludGVncmFsX3ZhbHVlLCB3aGljaCBkb2VzIGV4YWN0bHkgdGhlIHNhbWUgYXMKICAgICAgICB0aGlzIG1ldGhvZCBleGNlcHQgdGhhdCBpdCBkb2Vzbid0IHJhaXNlIEluZXhhY3Qgb3IgUm91bmRlZC4KICAgICAgICBSHgAAAGkAAAAAUkUAAABOKA0AAABSRAAAAFJ/AAAAUgAAAABSQwAAAFIkAAAAUiUAAABSQAAAAFIXAAAAUjIAAABStgAAAFJVAAAAUgkAAABSCgAAACgEAAAAUh0AAABSMgAAAFIeAAAAUioAAAAoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5dBEAAAB0b19pbnRlZ3JhbF9leGFjdAUKAABzJAAAAAAKCQESAQYBBAEKAQ8BCgEGARMBDAEMAQwBDAESAQwBEAENAWMDAAAABAAAAAMAAABDAAAAc4wAAAB8AgBkAwBrCAByGAB0AQCDAAB9AgBuAAB8AQBkAwBrCAByMAB8AgBqAgB9AQBuAAB8AABqAwByXwB8AABqBABkAQB8AgCDAAF9AwB8AwByVQB8AwBTdAUAfAAAgwEAU3wAAGoGAGQCAGsFAHJ4AHQFAHwAAIMBAFN8AABqBwBkAgB8AQCDAgBTZAMAUygEAAAAc0AAAABSb3VuZHMgdG8gdGhlIG5lYXJlc3QgaW50ZWdlciwgd2l0aG91dCByYWlzaW5nIGluZXhhY3QsIHJvdW5kZWQuUh4AAABpAAAAAE4oCAAAAFJAAAAAUhcAAABSMgAAAFJEAAAAUn8AAABSAAAAAFJDAAAAUrYAAAAoBAAAAFIdAAAAUjIAAABSHgAAAFIqAAAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVKaAAAAIgoAAHMYAAAAAAIMAQwBDAEMAQkBEgEGAQQBCgEPAQoCYwIAAAAOAAAABgAAAEMAAABzhQIAAHwBAGQKAGsIAHIYAHQBAIMAAH0BAG4AAHwAAGoCAHJlAHwAAGoDAGQBAHwBAIMAAX0CAHwCAHI9AHwCAFN8AABqBACDAAByZQB8AABqBQBkAgBrAgByZQB0BgB8AACDAQBTbgAAfAAAc5QAdAcAfAAAagUAZAMAfAAAaggAZAQAGoMDAH0CAHwCAGoJAHwBAIMBAFN8AABqBQBkBQBrAgByswB8AQBqCgB0CwBkBgCDAgBTfAEAagwAZAUAF30DAHQNAHwAAIMBAH0EAHwEAGoOAGQFAD99BQB8BABqDgBkBQBAcg0BfAQAag8AZAcAFH0GAHQQAHwAAGoRAIMBAGQFAD9kBQAXfQcAbiAAfAQAag8AfQYAdBAAfAAAahEAgwEAZAUAF2QFAD99BwB8AwB8BwAYfQgAfAgAZAIAawUAcloBfAYAZAgAfAgAEzl9BgB0EgB9CQBuIQB0EwB8BgBkCAB8CAALE4MCAFwCAH0GAH0KAHwKAAx9CQB8BQB8CAA4fQUAZAcAfAMAE30LAHgyAHQSAHLDAXwGAHwLABp9DAB8CwB8DABrAQBysgFQcZIBfAsAfAwAF2QFAD99CwBxkgFXfAkAb9cBfAsAfAsAFHwGAGsCAH0JAHwJAHIZAnwIAGQCAGsFAHL9AXwLAGQHAHwIABMcfQsAbg8AfAsAZAcAfAgACxM5fQsAfAUAfAgAN30FAG4dAHwLAGQJABZkAgBrAgByNgJ8CwBkBQA3fQsAbgAAdAcAZAIAdBQAfAsAgwEAfAUAgwMAfQIAfAEAahUAgwAAfQEAfAEAahYAdBcAgwEAfQ0AfAIAagkAfAEAgwEAfQIAfA0AfAEAXxgAfAIAUygLAAAAcx8AAABSZXR1cm4gdGhlIHNxdWFyZSByb290IG9mIHNlbGYuUh4AAABpAAAAAFJFAAAAaQIAAABpAQAAAHMPAAAAc3FydCgteCksIHggPiAwaQoAAABpZAAAAGkFAAAATigZAAAAUkAAAABSFwAAAFJEAAAAUn8AAABSegAAAFIlAAAAUgAAAABSJAAAAFJDAAAAUq8AAABSVQAAAFIHAAAAUjMAAABSXQAAAFJKAAAAUkcAAABSWAAAAFImAAAAUicAAABSwwAAAFJXAAAAdA0AAABfc2hhbGxvd19jb3B5dA0AAABfc2V0X3JvdW5kaW5nUhAAAABSMgAAACgOAAAAUh0AAABSHgAAAFIqAAAAUjMAAABSngAAAFKlAAAAdAEAAABjdAEAAABsUsUAAABSIAEAAFLGAAAAUiMAAABSygAAAFIyAAAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weXQEAAAAc3FydDUKAABzYAAAAAACDAEMAgkBEgEGAQQCGwENAgYCHAENAg8BEBYNBgwBDQENAQ0BGgIJARcDCgEMAQ4BCQIaAQcBCgMKAQkBCgEMAQQCEgEWAgYCDAIRAg8BDQMQAQ0CGAMMAQ8BDwEJAmMDAAAABwAAAAcAAABDAAAAcxIBAAB0AAB8AQBkAQB0AQCDAQF9AQB8AgBkBQBrCAByKgB0AwCDAAB9AgBuAAB8AABqBABzPAB8AQBqBAByvQB8AABqBQCDAAB9AwB8AQBqBQCDAAB9BAB8AwBzYAB8BAByvQB8BABkAgBrAgByhQB8AwBkAwBrAgByhQB8AABqBgB8AgCDAQBTfAMAZAIAawIAcqoAfAQAZAMAawIAcqoAfAEAagYAfAIAgwEAU3wAAGoHAHwBAHwCAIMCAFNuAAB8AABqCAB8AQCDAQB9BQB8BQBkAwBrAgBy6gB8AABqCQB8AQCDAQB9BQBuAAB8BQBkBABrAgBy/wB8AQB9BgBuBgB8AAB9BgB8BgBqBgB8AgCDAQBTKAYAAABzoAAAAFJldHVybnMgdGhlIGxhcmdlciB2YWx1ZS4KCiAgICAgICAgTGlrZSBtYXgoc2VsZiwgb3RoZXIpIGV4Y2VwdCBpZiBvbmUgaXMgbm90IGEgbnVtYmVyLCByZXR1cm5zCiAgICAgICAgTmFOIChhbmQgc2lnbmFscyBpZiBvbmUgaXMgc05hTikuICBBbHNvIHJvdW5kcy4KICAgICAgICBSlQAAAGkBAAAAaQAAAABp/////04oCgAAAFKNAAAAUicAAABSQAAAAFIXAAAAUkQAAABSeQAAAFKvAAAAUn8AAABSiwAAAHQNAAAAY29tcGFyZV90b3RhbCgHAAAAUh0AAABSfAAAAFIeAAAAdAIAAABzbnQCAAAAb25SNQEAAFIqAAAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVK1AAAAmAoAAHMmAAAAAAYSAgwBDAISAwwBDAEMARgBDQEYAQ0BEwIPAQwJEgIMAQkCBgJjAwAAAAcAAAAHAAAAQwAAAHMSAQAAdAAAfAEAZAEAdAEAgwEBfQEAfAIAZAUAawgAcioAdAMAgwAAfQIAbgAAfAAAagQAczwAfAEAagQAcr0AfAAAagUAgwAAfQMAfAEAagUAgwAAfQQAfAMAc2AAfAQAcr0AfAQAZAIAawIAcoUAfAMAZAMAawIAcoUAfAAAagYAfAIAgwEAU3wDAGQCAGsCAHKqAHwEAGQDAGsCAHKqAHwBAGoGAHwCAIMBAFN8AABqBwB8AQB8AgCDAgBTbgAAfAAAaggAfAEAgwEAfQUAfAUAZAMAawIAcuoAfAAAagkAfAEAgwEAfQUAbgAAfAUAZAQAawIAcv8AfAAAfQYAbgYAfAEAfQYAfAYAagYAfAIAgwEAUygGAAAAc6EAAABSZXR1cm5zIHRoZSBzbWFsbGVyIHZhbHVlLgoKICAgICAgICBMaWtlIG1pbihzZWxmLCBvdGhlcikgZXhjZXB0IGlmIG9uZSBpcyBub3QgYSBudW1iZXIsIHJldHVybnMKICAgICAgICBOYU4gKGFuZCBzaWduYWxzIGlmIG9uZSBpcyBzTmFOKS4gIEFsc28gcm91bmRzLgogICAgICAgIFKVAAAAaQEAAABpAAAAAGn/////TigKAAAAUo0AAABSJwAAAFJAAAAAUhcAAABSRAAAAFJ5AAAAUq8AAABSfwAAAFKLAAAAUjgBAAAoBwAAAFIdAAAAUnwAAABSHgAAAFI5AQAAUjoBAABSNQEAAFIqAAAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVK0AAAAwgoAAHMmAAAAAAYSAgwBDAISAwwBDAEMARgBDQEYAQ0BEwIPAQwBEgIMAQkCBgJjAQAAAAIAAAAEAAAAQwAAAHNEAAAAfAAAagAAcg0AdAEAU3wAAGoCAGQBAGsFAHIgAHQDAFN8AABqBAB8AABqAgAffQEAfAEAZAIAdAUAfAEAgwEAFGsCAFMoAwAAAHMiAAAAUmV0dXJucyB3aGV0aGVyIHNlbGYgaXMgYW4gaW50ZWdlcmkAAAAAUkUAAAAoBgAAAFJEAAAAUlkAAABSQwAAAFInAAAAUiYAAABSWAAAACgCAAAAUh0AAAB0BAAAAHJlc3QoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5UpkAAADkCgAAcwwAAAAAAgkBBAEPAQQBEAFjAQAAAAEAAAAEAAAAQwAAAHMyAAAAfAAADHMWAHwAAGoAAGQBAGsEAHIaAHQBAFN8AABqAgBkAgB8AABqAAAXGWQDAGsGAFMoBAAAAHM6AAAAUmV0dXJucyBUcnVlIGlmIHNlbGYgaXMgZXZlbi4gIEFzc3VtZXMgc2VsZiBpcyBhbiBpbnRlZ2VyLmkAAAAAaf////9S9AAAACgDAAAAUkMAAABSJwAAAFImAAAAKAEAAABSHQAAACgAAAAAKAAAAABzTwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHlS/QAAAO0KAABzBgAAAAACFgEEAWMBAAAAAQAAAAUAAABDAAAAczUAAAB5HAB8AABqAAB0AQB8AABqAgCDAQAXZAEAGFNXbhIABHQDAGsKAHIwAAEBAWQCAFNYZAMAUygEAAAAcyQAAABSZXR1cm4gdGhlIGFkanVzdGVkIGV4cG9uZW50IG9mIHNlbGZpAQAAAGkAAAAATigEAAAAUkMAAABSWAAAAFImAAAAUmYAAAAoAQAAAFIdAAAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVKEAAAA8woAAHMIAAAAAAIDARwCDQFjAgAAAAIAAAABAAAAQwAAAHMEAAAAfAAAUygBAAAAc6sAAABSZXR1cm5zIHRoZSBzYW1lIERlY2ltYWwgb2JqZWN0LgoKICAgICAgICBBcyB3ZSBkbyBub3QgaGF2ZSBkaWZmZXJlbnQgZW5jb2RpbmdzIGZvciB0aGUgc2FtZSBudW1iZXIsIHRoZQogICAgICAgIHJlY2VpdmVkIG9iamVjdCBhbHJlYWR5IGlzIGluIGl0cyBjYW5vbmljYWwgZm9ybS4KICAgICAgICAoAAAAACgCAAAAUh0AAABSHgAAACgAAAAAKAAAAABzTwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHl0CQAAAGNhbm9uaWNhbPsKAABzAgAAAAAGYwMAAAAEAAAABAAAAEMAAABzQQAAAHQAAHwBAGQBAHQBAIMBAX0BAHwAAGoCAHwBAHwCAIMCAH0DAHwDAHIuAHwDAFN8AABqAwB8AQBkAgB8AgCDAQFTKAMAAABztgAAAENvbXBhcmVzIHNlbGYgdG8gdGhlIG90aGVyIG9wZXJhbmQgbnVtZXJpY2FsbHkuCgogICAgICAgIEl0J3MgcHJldHR5IG11Y2ggbGlrZSBjb21wYXJlKCksIGJ1dCBhbGwgTmFOcyBzaWduYWwsIHdpdGggc2lnbmFsaW5nCiAgICAgICAgTmFOcyB0YWtpbmcgcHJlY2VkZW5jZSBvdmVyIHF1aWV0IE5hTnMuCiAgICAgICAgUpUAAABSHgAAACgEAAAAUo0AAABSJwAAAFKCAAAAUpYAAAAoBAAAAFIdAAAAUnwAAABSHgAAAFIqAAAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weXQOAAAAY29tcGFyZV9zaWduYWwDCwAAcwoAAAAABhIBEgEGAQQBYwIAAAAHAAAABQAAAEMAAABz3QEAAHQAAHwBAGQBAHQBAIMBAX0BAHwAAGoCAHIpAHwBAGoCAAxyKQB0AwBTfAAAagIADHJAAHwBAGoCAHJAAHQEAFN8AABqAgB9AgB8AABqBQCDAAB9AwB8AQBqBQCDAAB9BAB8AwBzbQB8BABycwF8AwB8BABrAgBy5wB0BgB8AABqBwCDAQB8AABqBwBmAgB9BQB0BgB8AQBqBwCDAQB8AQBqBwBmAgB9BgB8BQB8BgBrAAByxgB8AgByvwB0BABTdAMAU24AAHwFAHwGAGsEAHLjAHwCAHLcAHQDAFN0BABTbgAAdAgAU3wCAHIwAXwDAGQCAGsCAHL9AHQDAFN8BABkAgBrAgByDQF0BABTfAMAZAMAawIAch0BdAMAU3wEAGQDAGsCAHJwAXQEAFNxcwF8AwBkAgBrAgByQAF0BABTfAQAZAIAawIAclABdAMAU3wDAGQDAGsCAHJgAXQEAFN8BABkAwBrAgBycwF0AwBTbgAAfAAAfAEAawAAcoMBdAMAU3wAAHwBAGsEAHKTAXQEAFN8AABqCQB8AQBqCQBrAABytgF8AgByrwF0BABTdAMAU24AAHwAAGoJAHwBAGoJAGsEAHLZAXwCAHLSAXQDAFN0BABTbgAAdAgAUygEAAAAc/UAAABDb21wYXJlcyBzZWxmIHRvIG90aGVyIHVzaW5nIHRoZSBhYnN0cmFjdCByZXByZXNlbnRhdGlvbnMuCgogICAgICAgIFRoaXMgaXMgbm90IGxpa2UgdGhlIHN0YW5kYXJkIGNvbXBhcmUsIHdoaWNoIHVzZSB0aGVpciBudW1lcmljYWwKICAgICAgICB2YWx1ZS4gTm90ZSB0aGF0IGEgdG90YWwgb3JkZXJpbmcgaXMgZGVmaW5lZCBmb3IgYWxsIHBvc3NpYmxlIGFic3RyYWN0CiAgICAgICAgcmVwcmVzZW50YXRpb25zLgogICAgICAgIFKVAAAAaQEAAABpAgAAACgKAAAAUo0AAABSJwAAAFIlAAAAdAwAAABfTmVnYXRpdmVPbmVSFwEAAFJ5AAAAUlgAAABSJgAAAHQFAAAAX1plcm9SQwAAACgHAAAAUh0AAABSfAAAAFItAAAAdAgAAABzZWxmX25hbnQJAAAAb3RoZXJfbmFudAgAAABzZWxmX2tleXQJAAAAb3RoZXJfa2V5KAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVI4AQAADwsAAHNmAAAAAAcSAxMBBAETAQQBCQMMAQwBDAEMAhgBGAEMAQYBBAIHAQwBBgEEAgcBBAIGAQwBBAEMAQQBDAEEAQwBBwIMAQQBDAEEAQwBBAEMAQcCDAEEAQwBBAISAQYBBAIHARIBBgEEAgcBYwIAAAAEAAAABAAAAEMAAABzNwAAAHQAAHwBAGQBAHQBAIMBAX0BAHwAAGoCAIMAAH0CAHwBAGoCAIMAAH0DAHwCAGoDAHwDAIMBAFMoAgAAAHOWAAAAQ29tcGFyZXMgc2VsZiB0byBvdGhlciB1c2luZyBhYnN0cmFjdCByZXByLiwgaWdub3Jpbmcgc2lnbi4KCiAgICAgICAgTGlrZSBjb21wYXJlX3RvdGFsLCBidXQgd2l0aCBvcGVyYW5kJ3Mgc2lnbiBpZ25vcmVkIGFuZCBhc3N1bWVkIHRvIGJlIDAuCiAgICAgICAgUpUAAAAoBAAAAFKNAAAAUicAAABSrQAAAFI4AQAAKAQAAABSHQAAAFJ8AAAAUtgAAAB0AQAAAG8oAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5dBEAAABjb21wYXJlX3RvdGFsX21hZ1gLAABzCAAAAAAFEgIMAQwBYwEAAAABAAAABQAAAEMAAABzHAAAAHQAAGQBAHwAAGoBAHwAAGoCAHwAAGoDAIMEAFMoAgAAAHMnAAAAUmV0dXJucyBhIGNvcHkgd2l0aCB0aGUgc2lnbiBzZXQgdG8gMC4gaQAAAAAoBAAAAFIkAAAAUiYAAABSQwAAAFJEAAAAKAEAAABSHQAAACgAAAAAKAAAAABzTwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHlSrQAAAGMLAABzAgAAAAACYwEAAAABAAAABQAAAEMAAABzRQAAAHwAAGoAAHIlAHQBAGQBAHwAAGoCAHwAAGoDAHwAAGoEAIMEAFN0AQBkAgB8AABqAgB8AABqAwB8AABqBACDBABTZAMAUygEAAAAcyYAAABSZXR1cm5zIGEgY29weSB3aXRoIHRoZSBzaWduIGludmVydGVkLmkAAAAAaQEAAABOKAUAAABSJQAAAFIkAAAAUiYAAABSQwAAAFJEAAAAKAEAAABSHQAAACgAAAAAKAAAAABzTwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHlSrgAAAGcLAABzBgAAAAACCQEcAmMCAAAAAgAAAAUAAABDAAAAczEAAAB0AAB8AQBkAQB0AQCDAQF9AQB0AgB8AQBqAwB8AABqBAB8AABqBQB8AABqBgCDBABTKAIAAABzJAAAAFJldHVybnMgc2VsZiB3aXRoIHRoZSBzaWduIG9mIG90aGVyLlKVAAAAKAcAAABSjQAAAFInAAAAUiQAAABSJQAAAFImAAAAUkMAAABSRAAAACgCAAAAUh0AAABSfAAAACgAAAAAKAAAAABzTwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHl0CQAAAGNvcHlfc2lnbm4LAABzBgAAAAACEgEPAWMCAAAADAAAAAoAAABDAAAAc5YCAAB8AQBkCwBrCAByGAB0AQCDAAB9AQBuAAB8AABqAgBkAQB8AQCDAAF9AgB8AgByNAB8AgBTfAAAagMAgwAAZAIAawIAckoAdAQAU3wAAHNUAHQFAFN8AABqAwCDAABkAwBrAgBycAB0BgB8AACDAQBTfAEAagcAfQMAfAAAaggAgwAAfQQAfAAAagkAZAQAawIActMAfAQAdAoAdAsAfAEAagwAZAMAF2QFABSDAQCDAQBrBABy0wB0DQBkBABkBgB8AQBqDABkAwAXgwMAfQIAbowBfAAAagkAZAMAawIAcigBfAQAdAoAdAsAfAEAag4AgwAAC2QDABdkBQAUgwEAgwEAawQAcigBdA0AZAQAZAYAfAEAag4AgwAAZAMAGIMDAH0CAG43AXwAAGoJAGQEAGsCAHJqAXwEAHwDAAtrAAByagF0DQBkBABkBgBkBwB8AwBkAwAYFBdkBgAXfAMAC4MDAH0CAG71AHwAAGoJAGQDAGsCAHKsAXwEAHwDAAtkAwAYawAAcqwBdA0AZAQAZAgAfAMAZAMAFxR8AwALZAMAGIMDAH0CAG6zAHQPAHwAAIMBAH0FAHwFAGoQAHwFAGoRAAJ9BgB9BwB8BQBqEgBkAwBrAgBy5AF8BgALfQYAbgAAZAUAfQgAeFoAdBMAckYCdBQAfAYAfAcAfAMAfAgAF4MDAFwCAH0JAH0KAHwJAGQJAGQKAHQKAHQLAHwJAIMBAIMBAHwDABhkAwAYExQWcjkCUG4AAHwIAGQFADd9CABx7QFXdA0AZAQAdAsAfAkAgwEAfAoAgwMAfQIAfAEAahUAgwAAfQEAfAEAahYAdBcAgwEAfQsAfAIAahgAfAEAgwEAfQIAfAsAfAEAXxkAfAIAUygMAAAAcxIAAABSZXR1cm5zIGUgKiogc2VsZi5SHgAAAGn/////aQEAAABpAAAAAGkDAAAAUr4AAABSRQAAAFIxAAAAaQUAAABpCgAAAE4oGgAAAFJAAAAAUhcAAABSfwAAAFJ6AAAAUj8BAABSFwEAAFIAAAAAUjMAAABShAAAAFIlAAAAUlgAAABSVwAAAFI0AAAAUiQAAABSwgAAAFJdAAAAUkcAAABSSgAAAFItAAAAUicAAAB0BQAAAF9kZXhwUjMBAABSNAEAAFIQAAAAUq8AAABSMgAAACgMAAAAUh0AAABSHgAAAFIqAAAAUggBAAB0AwAAAGFkalKeAAAAUjUBAABSpQAAAFIiAQAAUsQAAABSSgAAAFIyAAAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVJKAAAAdAsAAHNKAAAAAAMMAQwDEgEGAQQDEgEEAwYBBAMSAQoGCQEMBzICHAE2Ah8BHAImASACIgMMARMBDwEKBQYBCQEcASYBBAEOAhgEDAEPAQ8BCQJjAQAAAAEAAAABAAAAQwAAAHMEAAAAdAAAUygBAAAAc8MAAABSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIGNhbm9uaWNhbDsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KCiAgICAgICAgQ3VycmVudGx5LCB0aGUgZW5jb2Rpbmcgb2YgYSBEZWNpbWFsIGluc3RhbmNlIGlzIGFsd2F5cwogICAgICAgIGNhbm9uaWNhbCwgc28gdGhpcyBtZXRob2QgcmV0dXJucyBUcnVlIGZvciBhbnkgRGVjaW1hbC4KICAgICAgICAoAQAAAFInAAAAKAEAAABSHQAAACgAAAAAKAAAAABzTwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHl0DAAAAGlzX2Nhbm9uaWNhbL8LAABzAgAAAAAGYwEAAAABAAAAAQAAAEMAAABzCAAAAHwAAGoAAAxTKAEAAABznQAAAFJldHVybiBUcnVlIGlmIHNlbGYgaXMgZmluaXRlOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLgoKICAgICAgICBBIERlY2ltYWwgaW5zdGFuY2UgaXMgY29uc2lkZXJlZCBmaW5pdGUgaWYgaXQgaXMgbmVpdGhlcgogICAgICAgIGluZmluaXRlIG5vciBhIE5hTi4KICAgICAgICAoAQAAAFJEAAAAKAEAAABSHQAAACgAAAAAKAAAAABzTwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHl0CQAAAGlzX2Zpbml0ZccLAABzAgAAAAAGYwEAAAABAAAAAgAAAEMAAABzDQAAAHwAAGoAAGQBAGsCAFMoAgAAAHM4AAAAUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBpbmZpbml0ZTsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS5STgAAACgBAAAAUkMAAAAoAQAAAFIdAAAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVItAQAAzwsAAHMCAAAAAAJjAQAAAAEAAAADAAAAQwAAAHMNAAAAfAAAagAAZAMAawYAUygEAAAAcz4AAABSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIGEgcU5hTiBvciBzTmFOOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLlIjAAAAUk0AAAAoAgAAAFIjAAAAUk0AAAAoAQAAAFJDAAAAKAEAAABSHQAAACgAAAAAKAAAAABzTwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHlSlwAAANMLAABzAgAAAAACYwIAAAACAAAAAwAAAEMAAABzPwAAAHwAAGoAAHMQAHwAAAxyFAB0AQBTfAEAZAEAawgAciwAdAMAgwAAfQEAbgAAfAEAagQAfAAAagUAgwAAawEAUygCAAAAcz8AAABSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIGEgbm9ybWFsIG51bWJlcjsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS5OKAYAAABSRAAAAFJZAAAAUkAAAABSFwAAAFIqAQAAUoQAAAAoAgAAAFIdAAAAUh4AAAAoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5dAkAAABpc19ub3JtYWzXCwAAcwoAAAAAAhABBAEMAQwBYwEAAAABAAAAAgAAAEMAAABzDQAAAHwAAGoAAGQBAGsCAFMoAgAAAHM7AAAAUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBhIHF1aWV0IE5hTjsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS5SIwAAACgBAAAAUkMAAAAoAQAAAFIdAAAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVKBAAAA3wsAAHMCAAAAAAJjAQAAAAEAAAACAAAAQwAAAHMNAAAAfAAAagAAZAEAawIAUygCAAAAczgAAABSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIG5lZ2F0aXZlOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLmkBAAAAKAEAAABSJQAAACgBAAAAUh0AAAAoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5dAkAAABpc19zaWduZWTjCwAAcwIAAAAAAmMBAAAAAQAAAAIAAABDAAAAcw0AAAB8AABqAABkAQBrAgBTKAIAAABzPwAAAFJldHVybiBUcnVlIGlmIHNlbGYgaXMgYSBzaWduYWxpbmcgTmFOOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLlJNAAAAKAEAAABSQwAAACgBAAAAUh0AAAAoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5UoAAAADnCwAAcwIAAAAAAmMCAAAAAgAAAAMAAABDAAAAcz8AAAB8AABqAABzEAB8AAAMchQAdAEAU3wBAGQBAGsIAHIsAHQDAIMAAH0BAG4AAHwAAGoEAIMAAHwBAGoFAGsAAFMoAgAAAHM5AAAAUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBzdWJub3JtYWw7IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuTigGAAAAUkQAAABSWQAAAFJAAAAAUhcAAABShAAAAFIqAQAAKAIAAABSHQAAAFIeAAAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weXQMAAAAaXNfc3Vibm9ybWFs6wsAAHMKAAAAAAIQAQQBDAEMAWMBAAAAAQAAAAMAAABDAAAAcxcAAAB8AABqAAAMbxYAfAAAagEAZAEAawIAUygCAAAAczYAAABSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIGEgemVybzsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS5SRQAAACgCAAAAUkQAAABSJgAAACgBAAAAUh0AAAAoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5dAcAAABpc196ZXJv8wsAAHMCAAAAAAJjAQAAAAcAAAAFAAAAQwAAAHP5AAAAfAAAagAAdAEAfAAAagIAgwEAF2QBABh9AQB8AQBkAQBrBQByQgB0AQB0AwB8AQBkAgAUZAMAGoMBAIMBAGQBABhTfAEAZAQAawEAcm4AdAEAdAMAZAUAfAEAGGQCABRkAwAagwEAgwEAZAEAGFN0BAB8AACDAQB9AgB8AgBqBQB8AgBqBgACfQMAfQQAfAEAZAYAawIActgAdAMAfAMAZAMAfAQACxMYgwEAfQUAdAMAfAMAgwEAfQYAdAEAfAUAgwEAdAEAfAYAgwEAGHwFAHwGAGsAABhTfAQAdAEAdAMAZAMAfAQACxN8AwAYgwEAgwEAF2QBABhTKAcAAABzzAAAAENvbXB1dGUgYSBsb3dlciBib3VuZCBmb3IgdGhlIGFkanVzdGVkIGV4cG9uZW50IG9mIHNlbGYubG4oKS4KICAgICAgICBJbiBvdGhlciB3b3JkcywgY29tcHV0ZSByIHN1Y2ggdGhhdCBzZWxmLmxuKCkgPj0gMTAqKnIuICBBc3N1bWVzCiAgICAgICAgdGhhdCBzZWxmIGlzIGZpbml0ZSBhbmQgcG9zaXRpdmUgYW5kIHRoYXQgc2VsZiAhPSAxLgogICAgICAgIGkBAAAAaRcAAABpCgAAAGn+////af////9pAAAAACgHAAAAUkMAAABSWAAAAFImAAAAUlcAAABSXQAAAFJHAAAAUkoAAAAoBwAAAFIdAAAAUkgBAABSngAAAFI1AQAAUqUAAAB0AwAAAG51bXQDAAAAZGVuKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weXQNAAAAX2xuX2V4cF9ib3VuZPcLAABzGAAAAAAHGgEMAhwBDAIgAQwBEwEMAhUBDAEeAmMCAAAACgAAAAcAAABDAAAAc3oBAAB8AQBkCQBrCAByGAB0AQCDAAB9AQBuAAB8AABqAgBkAQB8AQCDAAF9AgB8AgByNAB8AgBTfAAAcz4AdAMAU3wAAGoEAIMAAGQCAGsCAHJUAHQFAFN8AAB0BgBrAgByZAB0BwBTfAAAaggAZAIAawIAcoMAfAEAagkAdAoAZAMAgwIAU3QLAHwAAIMBAH0DAHwDAGoMAHwDAGoNAAJ9BAB9BQB8AQBqDgB9BgB8BgB8AABqDwCDAAAYZAQAF30HAHhWAHQQAHIXAXQRAHwEAHwFAHwHAIMDAH0IAHwIAGQFAGQGAHQSAHQTAHQUAHwIAIMBAIMBAIMBAHwGABhkAgAYExQWcgoBUG4AAHwHAGQHADd9BwBxwgBXdBUAdAwAfAgAZAgAawAAgwEAdBMAdBQAfAgAgwEAgwEAfAcAC4MDAH0CAHwBAGoWAIMAAH0BAHwBAGoXAHQYAIMBAH0JAHwCAGoZAHwBAIMBAH0CAHwJAHwBAF8aAHwCAFMoCgAAAHMvAAAAUmV0dXJucyB0aGUgbmF0dXJhbCAoYmFzZSBlKSBsb2dhcml0aG0gb2Ygc2VsZi5SHgAAAGkBAAAAcxYAAABsbiBvZiBhIG5lZ2F0aXZlIHZhbHVlaQIAAABpBQAAAGkKAAAAaQMAAABpAAAAAE4oGwAAAFJAAAAAUhcAAABSfwAAAHQRAAAAX05lZ2F0aXZlSW5maW5pdHlSegAAAHQJAAAAX0luZmluaXR5UhcBAABSPwEAAFIlAAAAUlUAAABSBwAAAFJdAAAAUkcAAABSSgAAAFIzAAAAUlEBAABSJwAAAHQFAAAAX2Rsb2dSWAAAAFJXAAAAUlwAAABSJAAAAFIzAQAAUjQBAABSEAAAAFKvAAAAUjIAAAAoCgAAAFIdAAAAUh4AAABSKgAAAFKeAAAAUjUBAABSpQAAAFIIAQAAUjABAABSxAAAAFIyAAAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weXQCAAAAbG4QDAAAczoAAAAAAwwBDAMSAQYBBAMGAQQDEgEEAwwBBAMPAQkBBwMMARMBCQQUAQkBEgIsAQQBDgErAgwBDwEPAQkBYwEAAAAHAAAABAAAAEMAAABzAQEAAHwAAGoAAHQBAHwAAGoCAIMBABdkAQAYfQEAfAEAZAEAawUAcjoAdAEAdAMAfAEAgwEAgwEAZAEAGFN8AQBkAgBrAQByXgB0AQB0AwBkAwB8AQAYgwEAgwEAZAEAGFN0BAB8AACDAQB9AgB8AgBqBQB8AgBqBgACfQMAfQQAfAEAZAQAawIActAAdAMAfAMAZAUAfAQACxMYgwEAfQUAdAMAZAYAfAMAFIMBAH0GAHQBAHwFAIMBAHQBAHwGAIMBABh8BQB8BgBrAAAYZAcAF1N0AwBkBQB8BAALE3wDABiDAQB9BQB0AQB8BQCDAQB8BAAXfAUAZAgAawAAGGQBABhTKAkAAABzzgAAAENvbXB1dGUgYSBsb3dlciBib3VuZCBmb3IgdGhlIGFkanVzdGVkIGV4cG9uZW50IG9mIHNlbGYubG9nMTAoKS4KICAgICAgICBJbiBvdGhlciB3b3JkcywgZmluZCByIHN1Y2ggdGhhdCBzZWxmLmxvZzEwKCkgPj0gMTAqKnIuCiAgICAgICAgQXNzdW1lcyB0aGF0IHNlbGYgaXMgZmluaXRlIGFuZCBwb3NpdGl2ZSBhbmQgdGhhdCBzZWxmICE9IDEuCiAgICAgICAgaQEAAABp/v///2n/////aQAAAABpCgAAAGnnAAAAaQIAAAB0AwAAADIzMSgHAAAAUkMAAABSWAAAAFImAAAAUlcAAABSXQAAAFJHAAAAUkoAAAAoBwAAAFIdAAAAUkgBAABSngAAAFI1AQAAUqUAAABSTwEAAFJQAQAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVIYAQAAQgwAAHMaAAAAAAwaAQwCFAEMAhgBDAETAQwCFQEQASICFQFjAgAAAAoAAAAIAAAAQwAAAHPEAQAAfAEAZAsAawgAchgAdAEAgwAAfQEAbgAAfAAAagIAZAEAfAEAgwABfQIAfAIAcjQAfAIAU3wAAHM+AHQDAFN8AABqBACDAABkAgBrAgByVAB0BQBTfAAAagYAZAIAawIAcnMAfAEAagcAdAgAZAMAgwIAU3wAAGoJAGQEABlkBQBrAgByzQB8AABqCQBkAgAfZAYAdAoAfAAAagkAgwEAZAIAGBRrAgByzQB0CwB8AABqDAB0CgB8AABqCQCDAQAXZAIAGIMBAH0CAG7AAHQNAHwAAIMBAH0DAHwDAGoOAHwDAGoPAAJ9BAB9BQB8AQBqEAB9BgB8BgB8AABqEQCDAAAYZAcAF30HAHhWAHQSAHJhAXQTAHwEAHwFAHwHAIMDAH0IAHwIAGQIAGQJAHQKAHQUAHQVAHwIAIMBAIMBAIMBAHwGABhkAgAYExQWclQBUG4AAHwHAGQKADd9BwBxDAFXdBYAdA4AfAgAZAQAawAAgwEAdBQAdBUAfAgAgwEAgwEAfAcAC4MDAH0CAHwBAGoXAIMAAH0BAHwBAGoYAHQZAIMBAH0JAHwCAGoaAHwBAIMBAH0CAHwJAHwBAF8bAHwCAFMoDAAAAHMmAAAAUmV0dXJucyB0aGUgYmFzZSAxMCBsb2dhcml0aG0gb2Ygc2VsZi5SHgAAAGkBAAAAcxkAAABsb2cxMCBvZiBhIG5lZ2F0aXZlIHZhbHVlaQAAAABSvgAAAFJFAAAAaQIAAABpBQAAAGkKAAAAaQMAAABOKBwAAABSQAAAAFIXAAAAUn8AAABSUgEAAFJ6AAAAUlMBAABSJQAAAFJVAAAAUgcAAABSJgAAAFJYAAAAUgAAAABSQwAAAFJdAAAAUkcAAABSSgAAAFIzAAAAUhgBAABSJwAAAHQHAAAAX2Rsb2cxMFJXAAAAUlwAAABSJAAAAFIzAQAAUjQBAABSEAAAAFKvAAAAUjIAAAAoCgAAAFIdAAAAUh4AAABSKgAAAFKeAAAAUjUBAABSpQAAAFIIAQAAUjABAABSxAAAAFIyAAAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weXQFAAAAbG9nMTBgDAAAczoAAAAAAwwBDAMSAQYBBAMGAQQDEgEEAw8BCQEHAzcCIwMMARMBCQQUAQkBEgIsAQQBDgErAgwBDwEPAQkBYwIAAAADAAAABAAAAEMAAABzfAAAAHwAAGoAAGQBAHwBAIMAAX0CAHwCAHIcAHwCAFN8AQBkBABrCAByNAB0AgCDAAB9AQBuAAB8AABqAwCDAAByRAB0BABTfAAAc10AfAEAagUAdAYAZAIAZAMAgwMAU3QHAHwAAGoIAIMAAIMBAH0CAHwCAGoJAHwBAIMBAFMoBQAAAHNNAQAAIFJldHVybnMgdGhlIGV4cG9uZW50IG9mIHRoZSBtYWduaXR1ZGUgb2Ygc2VsZidzIE1TRC4KCiAgICAgICAgVGhlIHJlc3VsdCBpcyB0aGUgaW50ZWdlciB3aGljaCBpcyB0aGUgZXhwb25lbnQgb2YgdGhlIG1hZ25pdHVkZQogICAgICAgIG9mIHRoZSBtb3N0IHNpZ25pZmljYW50IGRpZ2l0IG9mIHNlbGYgKGFzIHRob3VnaCBpdCB3ZXJlIHRydW5jYXRlZAogICAgICAgIHRvIGEgc2luZ2xlIGRpZ2l0IHdoaWxlIG1haW50YWluaW5nIHRoZSB2YWx1ZSBvZiB0aGF0IGRpZ2l0IGFuZAogICAgICAgIHdpdGhvdXQgbGltaXRpbmcgdGhlIHJlc3VsdGluZyBleHBvbmVudCkuCiAgICAgICAgUh4AAABzBwAAAGxvZ2IoMClpAQAAAE4oCgAAAFJ/AAAAUkAAAABSFwAAAFJ6AAAAUlMBAABSVQAAAFIIAAAAUgAAAABShAAAAFKvAAAAKAMAAABSHQAAAFIeAAAAUioAAAAoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5dAQAAABsb2dikwwAAHMWAAAAAAkSAQYBBAIMAQwDDAEEAwYBEwUSAWMBAAAAAgAAAAQAAABDAAAAc0oAAAB8AABqAABkAQBrAwBzHgB8AABqAQBkAQBrAwByIgB0AgBTeCEAfAAAagMARF0WAH0BAHwBAGQCAGsHAHIsAHQCAFNxLABXdAQAUygDAAAAc9cAAABSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIGEgbG9naWNhbCBvcGVyYW5kLgoKICAgICAgICBGb3IgYmVpbmcgbG9naWNhbCwgaXQgbXVzdCBiZSBhIGZpbml0ZSBudW1iZXIgd2l0aCBhIHNpZ24gb2YgMCwKICAgICAgICBhbiBleHBvbmVudCBvZiAwLCBhbmQgYSBjb2VmZmljaWVudCB3aG9zZSBkaWdpdHMgbXVzdCBhbGwgYmUKICAgICAgICBlaXRoZXIgMCBvciAxLgogICAgICAgIGkAAAAAdAIAAAAwMSgFAAAAUiUAAABSQwAAAFJZAAAAUiYAAABSJwAAACgCAAAAUh0AAAB0AwAAAGRpZygAAAAAKAAAAABzTwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHl0CgAAAF9pc2xvZ2ljYWyxDAAAcwwAAAAABx4BBAEQAQwBCAFjBAAAAAUAAAADAAAAQwAAAHOkAAAAfAEAagAAdAEAfAIAgwEAGH0EAHwEAGQBAGsEAHIwAGQCAHwEABR8AgAXfQIAbh0AfAQAZAEAawAAck0AfAIAfAEAagAACx99AgBuAAB8AQBqAAB0AQB8AwCDAQAYfQQAfAQAZAEAawQAcn0AZAIAfAQAFHwDABd9AwBuHQB8BABkAQBrAABymgB8AwB8AQBqAAALH30DAG4AAHwCAHwDAGYCAFMoAwAAAE5pAAAAAFJFAAAAKAIAAABSMwAAAFJYAAAAKAUAAABSHQAAAFIeAAAAdAMAAABvcGF0AwAAAG9wYnQDAAAAZGlmKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weXQNAAAAX2ZpbGxfbG9naWNhbL8MAABzFgAAAAABEwEMAREBDAERARMBDAERAQwBEQFjAwAAAAgAAAAIAAAAQwAAAHPYAAAAfAIAZAUAawgAchgAdAEAgwAAfQIAbgAAdAIAfAEAZAEAdAMAgwEBfQEAfAAAagQAgwAADHNEAHwBAGoEAIMAAAxyUQB8AgBqBQB0BgCDAQBTfAAAagcAfAIAfAAAaggAfAEAaggAgwMAXAIAfQMAfQQAZAIAagkAZwAAdAoAfAMAfAQAgwIARF0oAFwCAH0FAH0GAHQLAHQMAHwFAIMBAHQMAHwGAIMBAECDAQBeAgBxiACDAQB9BwB0DQBkAwB8BwBqDgBkBACDAQBw0QBkBABkAwCDAwBTKAYAAABzOwAAAEFwcGxpZXMgYW4gJ2FuZCcgb3BlcmF0aW9uIGJldHdlZW4gc2VsZiBhbmQgb3RoZXIncyBkaWdpdHMuUpUAAABSSQAAAGkAAAAAUkUAAABOKA8AAABSQAAAAFIXAAAAUo0AAABSJwAAAFJcAQAAUlUAAABSBwAAAFJgAQAAUiYAAABSYgAAAHQDAAAAemlwUlcAAABSRwAAAFIkAAAAUloAAAAoCAAAAFIdAAAAUnwAAABSHgAAAFJdAQAAUl4BAABSFAEAAHQBAAAAYlJ4AAAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weXQLAAAAbG9naWNhbF9hbmTMDAAAcxAAAAAAAgwBDAISAhoBDQMhA0cBYwIAAAACAAAABQAAAEMAAABzOwAAAHwBAGQDAGsIAHIYAHQBAIMAAH0BAG4AAHwAAGoCAHQDAGQBAGQCAHwBAGoEABRkAQCDAwB8AQCDAgBTKAQAAABzFgAAAEludmVydCBhbGwgaXRzIGRpZ2l0cy5pAAAAAFK+AAAATigFAAAAUkAAAABSFwAAAHQLAAAAbG9naWNhbF94b3JSJAAAAFIzAAAAKAIAAABSHQAAAFIeAAAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weXQOAAAAbG9naWNhbF9pbnZlcnTdDAAAcwgAAAAAAgwBDAEcAWMDAAAACAAAAAgAAABDAAAAc9gAAAB8AgBkBQBrCAByGAB0AQCDAAB9AgBuAAB0AgB8AQBkAQB0AwCDAQF9AQB8AABqBACDAAAMc0QAfAEAagQAgwAADHJRAHwCAGoFAHQGAIMBAFN8AABqBwB8AgB8AABqCAB8AQBqCACDAwBcAgB9AwB9BABkAgBqCQBnAAB0CgB8AwB8BACDAgBEXSgAXAIAfQUAfQYAdAsAdAwAfAUAgwEAdAwAfAYAgwEAQoMBAF4CAHGIAIMBAH0HAHQNAGQDAHwHAGoOAGQEAIMBAHDRAGQEAGQDAIMDAFMoBgAAAHM6AAAAQXBwbGllcyBhbiAnb3InIG9wZXJhdGlvbiBiZXR3ZWVuIHNlbGYgYW5kIG90aGVyJ3MgZGlnaXRzLlKVAAAAUkkAAABpAAAAAFJFAAAATigPAAAAUkAAAABSFwAAAFKNAAAAUicAAABSXAEAAFJVAAAAUgcAAABSYAEAAFImAAAAUmIAAABSYQEAAFJXAAAAUkcAAABSJAAAAFJaAAAAKAgAAABSHQAAAFJ8AAAAUh4AAABSXQEAAFJeAQAAUhQBAABSYgEAAFJ4AAAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weXQKAAAAbG9naWNhbF9vcuQMAABzEAAAAAACDAEMAhICGgENAyEDRwFjAwAAAAgAAAAIAAAAQwAAAHPYAAAAfAIAZAUAawgAchgAdAEAgwAAfQIAbgAAdAIAfAEAZAEAdAMAgwEBfQEAfAAAagQAgwAADHNEAHwBAGoEAIMAAAxyUQB8AgBqBQB0BgCDAQBTfAAAagcAfAIAfAAAaggAfAEAaggAgwMAXAIAfQMAfQQAZAIAagkAZwAAdAoAfAMAfAQAgwIARF0oAFwCAH0FAH0GAHQLAHQMAHwFAIMBAHQMAHwGAIMBAEGDAQBeAgBxiACDAQB9BwB0DQBkAwB8BwBqDgBkBACDAQBw0QBkBABkAwCDAwBTKAYAAABzOwAAAEFwcGxpZXMgYW4gJ3hvcicgb3BlcmF0aW9uIGJldHdlZW4gc2VsZiBhbmQgb3RoZXIncyBkaWdpdHMuUpUAAABSSQAAAGkAAAAAUkUAAABOKA8AAABSQAAAAFIXAAAAUo0AAABSJwAAAFJcAQAAUlUAAABSBwAAAFJgAQAAUiYAAABSYgAAAFJhAQAAUlcAAABSRwAAAFIkAAAAUloAAAAoCAAAAFIdAAAAUnwAAABSHgAAAFJdAQAAUl4BAABSFAEAAFJiAQAAUngAAAAoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5UmQBAAD1DAAAcxAAAAAAAgwBDAISAhoBDQMhA0cBYwMAAAAHAAAABwAAAEMAAABzHgEAAHQAAHwBAGQBAHQBAIMBAX0BAHwCAGQFAGsIAHIqAHQDAIMAAH0CAG4AAHwAAGoEAHM8AHwBAGoEAHK9AHwAAGoFAIMAAH0DAHwBAGoFAIMAAH0EAHwDAHNgAHwEAHK9AHwEAGQCAGsCAHKFAHwDAGQDAGsCAHKFAHwAAGoGAHwCAIMBAFN8AwBkAgBrAgByqgB8BABkAwBrAgByqgB8AQBqBgB8AgCDAQBTfAAAagcAfAEAfAIAgwIAU24AAHwAAGoIAIMAAGoJAHwBAGoIAIMAAIMBAH0FAHwFAGQDAGsCAHL2AHwAAGoKAHwBAIMBAH0FAG4AAHwFAGQEAGsCAHILAXwBAH0GAG4GAHwAAH0GAHwGAGoGAHwCAIMBAFMoBgAAAHM4AAAAQ29tcGFyZXMgdGhlIHZhbHVlcyBudW1lcmljYWxseSB3aXRoIHRoZWlyIHNpZ24gaWdub3JlZC5SlQAAAGkBAAAAaQAAAABp/////04oCwAAAFKNAAAAUicAAABSQAAAAFIXAAAAUkQAAABSeQAAAFKvAAAAUn8AAABSrQAAAFKLAAAAUjgBAAAoBwAAAFIdAAAAUnwAAABSHgAAAFI5AQAAUjoBAABSNQEAAFIqAAAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weXQHAAAAbWF4X21hZwYNAABzJgAAAAACEgIMAQwCEgMMAQwBDAEYAQ0BGAENARMCGwEMARICDAEJAgYCYwMAAAAHAAAABwAAAEMAAABzHgEAAHQAAHwBAGQBAHQBAIMBAX0BAHwCAGQFAGsIAHIqAHQDAIMAAH0CAG4AAHwAAGoEAHM8AHwBAGoEAHK9AHwAAGoFAIMAAH0DAHwBAGoFAIMAAH0EAHwDAHNgAHwEAHK9AHwEAGQCAGsCAHKFAHwDAGQDAGsCAHKFAHwAAGoGAHwCAIMBAFN8AwBkAgBrAgByqgB8BABkAwBrAgByqgB8AQBqBgB8AgCDAQBTfAAAagcAfAEAfAIAgwIAU24AAHwAAGoIAIMAAGoJAHwBAGoIAIMAAIMBAH0FAHwFAGQDAGsCAHL2AHwAAGoKAHwBAIMBAH0FAG4AAHwFAGQEAGsCAHILAXwAAH0GAG4GAHwBAH0GAHwGAGoGAHwCAIMBAFMoBgAAAHM4AAAAQ29tcGFyZXMgdGhlIHZhbHVlcyBudW1lcmljYWxseSB3aXRoIHRoZWlyIHNpZ24gaWdub3JlZC5SlQAAAGkBAAAAaQAAAABp/////04oCwAAAFKNAAAAUicAAABSQAAAAFIXAAAAUkQAAABSeQAAAFKvAAAAUn8AAABSrQAAAFKLAAAAUjgBAAAoBwAAAFIdAAAAUnwAAABSHgAAAFI5AQAAUjoBAABSNQEAAFIqAAAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weXQHAAAAbWluX21hZyQNAABzJgAAAAACEgIMAQwCEgMMAQwBDAEYAQ0BGAENARMCGwEMARICDAEJAgYCYwIAAAAEAAAABgAAAEMAAABz4QAAAHwBAGQHAGsIAHIYAHQBAIMAAH0BAG4AAHwAAGoCAGQBAHwBAIMAAX0CAHwCAHI0AHwCAFN8AABqAwCDAABkAgBrAgBySgB0BABTfAAAagMAgwAAZAMAawIAcnkAdAUAZAQAZAUAfAEAagYAFHwBAGoHAIMAAIMDAFN8AQBqCACDAAB9AQB8AQBqCQB0CgCDAQABfAEAagsAgwAAAXwAAGoMAHwBAIMBAH0DAHwDAHwAAGsDAHK7AHwDAFN8AABqDQB0BQBkBABkBgB8AQBqDgCDAABkAwAYgwMAfAEAgwIAUygIAAAAcz0AAABSZXR1cm5zIHRoZSBsYXJnZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyIHNtYWxsZXIgdGhhbiBpdHNlbGYuUh4AAABp/////2kBAAAAaQAAAABSMQAAAFK+AAAATigPAAAAUkAAAABSFwAAAFJ/AAAAUnoAAABSUgEAAFIkAAAAUjMAAABS5QAAAFI6AAAAUjQBAABSEgAAAHQRAAAAX2lnbm9yZV9hbGxfZmxhZ3NSrwAAAFK8AAAAUsIAAAAoBAAAAFIdAAAAUh4AAABSKgAAAHQIAAAAbmV3X3NlbGYoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5dAoAAABuZXh0X21pbnVzQg0AAHMiAAAAAAIMAQwCEgEGAQQCEgEEARIBHQIMAQ0BCgEPAQwBBAEfAWMCAAAABAAAAAYAAABDAAAAc+EAAAB8AQBkBwBrCAByGAB0AQCDAAB9AQBuAAB8AABqAgBkAQB8AQCDAAF9AgB8AgByNAB8AgBTfAAAagMAgwAAZAIAawIAckoAdAQAU3wAAGoDAIMAAGQDAGsCAHJ5AHQFAGQCAGQEAHwBAGoGABR8AQBqBwCDAACDAwBTfAEAaggAgwAAfQEAfAEAagkAdAoAgwEAAXwBAGoLAIMAAAF8AABqDAB8AQCDAQB9AwB8AwB8AABrAwByuwB8AwBTfAAAag0AdAUAZAUAZAYAfAEAag4AgwAAZAIAGIMDAHwBAIMCAFMoCAAAAHM9AAAAUmV0dXJucyB0aGUgc21hbGxlc3QgcmVwcmVzZW50YWJsZSBudW1iZXIgbGFyZ2VyIHRoYW4gaXRzZWxmLlIeAAAAaQEAAABp/////1IxAAAAaQAAAABSvgAAAE4oDwAAAFJAAAAAUhcAAABSfwAAAFJ6AAAAUlMBAABSJAAAAFIzAAAAUuUAAABSOgAAAFI0AQAAUhEAAABSaQEAAFKvAAAAUrsAAABSwgAAACgEAAAAUh0AAABSHgAAAFIqAAAAUmoBAAAoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5dAkAAABuZXh0X3BsdXNZDQAAcyIAAAAAAgwBDAISAQYBBAISAQQBEgEdAgwBDQEKAQ8BDAEEAR8BYwMAAAAFAAAABAAAAEMAAABzQAEAAHQAAHwBAGQBAHQBAIMBAX0BAHwCAGQFAGsIAHIqAHQDAIMAAH0CAG4AAHwAAGoEAHwBAHwCAIMCAH0DAHwDAHJGAHwDAFN8AABqBQB8AQCDAQB9BAB8BABkAgBrAgBybgB8AABqBgB8AQCDAQBTfAQAZAMAawIAcowAfAAAagcAfAIAgwEAfQMAbg8AfAAAaggAfAIAgwEAfQMAfAMAagkAgwAActoAfAIAagoAdAsAZAQAfAMAagwAgwMAAXwCAGoKAHQNAIMBAAF8AgBqCgB0DgCDAQABbmIAfAMAag8AgwAAfAIAahAAawAAcjwBfAIAagoAdBEAgwEAAXwCAGoKAHQSAIMBAAF8AgBqCgB0DQCDAQABfAIAagoAdA4AgwEAAXwDAHM8AXwCAGoKAHQTAIMBAAFxPAFuAAB8AwBTKAYAAABziwEAAFJldHVybnMgdGhlIG51bWJlciBjbG9zZXN0IHRvIHNlbGYsIGluIHRoZSBkaXJlY3Rpb24gdG93YXJkcyBvdGhlci4KCiAgICAgICAgVGhlIHJlc3VsdCBpcyB0aGUgY2xvc2VzdCByZXByZXNlbnRhYmxlIG51bWJlciB0byBzZWxmCiAgICAgICAgKGV4Y2x1ZGluZyBzZWxmKSB0aGF0IGlzIGluIHRoZSBkaXJlY3Rpb24gdG93YXJkcyBvdGhlciwKICAgICAgICB1bmxlc3MgYm90aCBoYXZlIHRoZSBzYW1lIHZhbHVlLiAgSWYgdGhlIHR3byBvcGVyYW5kcyBhcmUKICAgICAgICBudW1lcmljYWxseSBlcXVhbCwgdGhlbiB0aGUgcmVzdWx0IGlzIGEgY29weSBvZiBzZWxmIHdpdGggdGhlCiAgICAgICAgc2lnbiBzZXQgdG8gYmUgdGhlIHNhbWUgYXMgdGhlIHNpZ24gb2Ygb3RoZXIuCiAgICAgICAgUpUAAABpAAAAAGn/////cyAAAABJbmZpbml0ZSByZXN1bHQgZnJvbSBuZXh0X3Rvd2FyZE4oFAAAAFKNAAAAUicAAABSQAAAAFIXAAAAUn8AAABSiwAAAFJGAQAAUmwBAABSawEAAFJ6AAAAUlUAAABSDAAAAFIlAAAAUgkAAABSCgAAAFKEAAAAUioBAABSDQAAAFILAAAAUgYAAAAoBQAAAFIdAAAAUnwAAABSHgAAAFIqAAAAdAoAAABjb21wYXJpc29uKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weXQLAAAAbmV4dF90b3dhcmRwDQAAczQAAAAACRICDAEMAhIBBgEEAg8BDAENAgwBEgIPAwwBCQEDAQoBDQEQARUBDQENAQ0BDQMGARMCYwIAAAADAAAAAwAAAEMAAABzvwAAAHwAAGoAAIMAAHIQAGQBAFN8AABqAQCDAAByIABkAgBTfAAAagIAgwAAfQIAfAIAZAMAawIAcjwAZAQAU3wCAGQFAGsCAHJMAGQGAFN8AABqAwCDAABybAB8AABqBAByZQBkBwBTZAgAU24AAHwBAGQOAGsIAHKEAHQGAIMAAH0BAG4AAHwAAGoHAGQJAHwBAIMAAXKqAHwAAGoEAHKjAGQKAFNkCwBTbgAAfAAAagQAcrcAZAwAU2QNAFNkDgBTKA8AAABzGwEAAFJldHVybnMgYW4gaW5kaWNhdGlvbiBvZiB0aGUgY2xhc3Mgb2Ygc2VsZi4KCiAgICAgICAgVGhlIGNsYXNzIGlzIG9uZSBvZiB0aGUgZm9sbG93aW5nIHN0cmluZ3M6CiAgICAgICAgICBzTmFOCiAgICAgICAgICBOYU4KICAgICAgICAgIC1JbmZpbml0eQogICAgICAgICAgLU5vcm1hbAogICAgICAgICAgLVN1Ym5vcm1hbAogICAgICAgICAgLVplcm8KICAgICAgICAgICtaZXJvCiAgICAgICAgICArU3Vibm9ybWFsCiAgICAgICAgICArTm9ybWFsCiAgICAgICAgICArSW5maW5pdHkKICAgICAgICBSewAAAFKjAAAAaQEAAABzCQAAACtJbmZpbml0eWn/////cwkAAAAtSW5maW5pdHlzBQAAAC1aZXJvcwUAAAArWmVyb1IeAAAAcwoAAAAtU3Vibm9ybWFscwoAAAArU3Vibm9ybWFscwcAAAAtTm9ybWFscwcAAAArTm9ybWFsTigIAAAAUoAAAABSgQAAAFJ6AAAAUk4BAABSJQAAAFJAAAAAUhcAAABSTQEAACgDAAAAUh0AAABSHgAAAHQDAAAAaW5mKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weXQMAAAAbnVtYmVyX2NsYXNzng0AAHMsAAAAAA8MAQQBDAEEAQwBDAEEAQwBBAEMAQkBBAIHAQwBDAESAQkBBAIHAgkBBAJjAQAAAAEAAAACAAAAQwAAAHMKAAAAdAAAZAEAgwEAUygCAAAAcycAAABKdXN0IHJldHVybnMgMTAsIGFzIHRoaXMgaXMgRGVjaW1hbCwgOilpCgAAACgBAAAAUgAAAAAoAQAAAFIdAAAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weXQFAAAAcmFkaXjIDQAAcwIAAAAAAmMDAAAACAAAAAYAAABDAAAAc0QBAAB8AgBkBABrCAByGAB0AQCDAAB9AgBuAAB0AgB8AQBkAQB0AwCDAQF9AQB8AABqBAB8AQB8AgCDAgB9AwB8AwByRgB8AwBTfAEAagUAZAIAawMAcmIAfAIAagYAdAcAgwEAU3wCAGoIAAt0CQB8AQCDAQAEA2sBAG+GAHwCAGoIAGsBAG4CAAIBc5gAfAIAagYAdAcAgwEAU3wAAGoKAIMAAHKuAHQLAHwAAIMBAFN0CQB8AQCDAQB9BAB8AABqDAB9BQB8AgBqCAB0DQB8BQCDAQAYfQYAfAYAZAIAawQAcvMAZAMAfAYAFHwFABd9BQBuGgB8BgBkAgBrAAByDQF8BQB8BgALH30FAG4AAHwFAHwEAB98BQB8BAAgF30HAHQOAHwAAGoPAHwHAGoQAGQDAIMBAHA6AWQDAHwAAGoFAIMDAFMoBQAAAHM1AAAAUmV0dXJucyBhIHJvdGF0ZWQgY29weSBvZiBzZWxmLCB2YWx1ZS1vZi1vdGhlciB0aW1lcy5SlQAAAGkAAAAAUkUAAABOKBEAAABSQAAAAFIXAAAAUo0AAABSJwAAAFJ/AAAAUkMAAABSVQAAAFIHAAAAUjMAAABSRwAAAFJ6AAAAUgAAAABSJgAAAFJYAAAAUiQAAABSJQAAAFJaAAAAKAgAAABSHQAAAFJ8AAAAUh4AAABSKgAAAHQFAAAAdG9yb3R0BgAAAHJvdGRpZ3QFAAAAdG9wYWR0BwAAAHJvdGF0ZWQoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5dAYAAAByb3RhdGXMDQAAcywAAAAAAgwBDAISAhIBBgEEAg8BDQEpAQ0CDAEKAwwBCQETAQwBEQEMAQ4DEgEJAWMDAAAABwAAAAcAAABDAAAAcwcBAAB8AgBkBQBrCAByGAB0AQCDAAB9AgBuAAB0AgB8AQBkAQB0AwCDAQF9AQB8AABqBAB8AQB8AgCDAgB9AwB8AwByRgB8AwBTfAEAagUAZAIAawMAcmIAfAIAagYAdAcAgwEAU2QDAHwCAGoIAHwCAGoJABcUfQQAZAQAfAIAaggAfAIAagkAFxR9BQB8BAB0CgB8AQCDAQAEA2sBAG+nAHwFAGsBAG4CAAIBc7kAfAIAagYAdAcAgwEAU3wAAGoLAIMAAHLPAHQMAHwAAIMBAFN0DQB8AABqDgB8AABqDwB8AABqBQB0CgB8AQCDAQAXgwMAfQYAfAYAahAAfAIAgwEAfQYAfAYAUygGAAAAcz4AAABSZXR1cm5zIHNlbGYgb3BlcmFuZCBhZnRlciBhZGRpbmcgdGhlIHNlY29uZCB2YWx1ZSB0byBpdHMgZXhwLlKVAAAAaQAAAABp/v///2kCAAAATigRAAAAUkAAAABSFwAAAFKNAAAAUicAAABSfwAAAFJDAAAAUlUAAABSBwAAAFI0AAAAUjMAAABSRwAAAFJ6AAAAUgAAAABSJAAAAFIlAAAAUiYAAABSrwAAACgHAAAAUh0AAABSfAAAAFIeAAAAUioAAAB0BgAAAGxpbWluZnQGAAAAbGltc3VwUnYAAAAoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5dAYAAABzY2FsZWLtDQAAcyIAAAAAAgwBDAISAhIBBgEEAg8BDQEUARQBIgENAgwBCgIlAQ8BYwMAAAAIAAAABgAAAEMAAABzZwEAAHwCAGQEAGsIAHIYAHQBAIMAAH0CAG4AAHQCAHwBAGQBAHQDAIMBAX0BAHwAAGoEAHwBAHwCAIMCAH0DAHwDAHJGAHwDAFN8AQBqBQBkAgBrAwByYgB8AgBqBgB0BwCDAQBTfAIAaggAC3QJAHwBAIMBAAQDawEAb4YAfAIAaggAawEAbgIAAgFzmAB8AgBqBgB0BwCDAQBTfAAAagoAgwAAcq4AdAsAfAAAgwEAU3QJAHwBAIMBAH0EAHwAAGoMAH0FAHwCAGoIAHQNAHwFAIMBABh9BgB8BgBkAgBrBABy8wBkAwB8BgAUfAUAF30FAG4aAHwGAGQCAGsAAHINAXwFAHwGAAsffQUAbgAAfAQAZAIAawAAciYBfAUAfAQAIH0HAG4cAHwFAGQDAHwEABQXfQcAfAcAfAIAaggACx99BwB0DgB8AABqDwB8BwBqEABkAwCDAQBwXQFkAwB8AABqBQCDAwBTKAUAAABzNQAAAFJldHVybnMgYSBzaGlmdGVkIGNvcHkgb2Ygc2VsZiwgdmFsdWUtb2Ytb3RoZXIgdGltZXMuUpUAAABpAAAAAFJFAAAATigRAAAAUkAAAABSFwAAAFKNAAAAUicAAABSfwAAAFJDAAAAUlUAAABSBwAAAFIzAAAAUkcAAABSegAAAFIAAAAAUiYAAABSWAAAAFIkAAAAUiUAAABSWgAAACgIAAAAUh0AAABSfAAAAFIeAAAAUioAAABScgEAAFJzAQAAUnQBAAB0BwAAAHNoaWZ0ZWQoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5UsUAAAAGDgAAczIAAAAAAgwBDAISAhIBBgEEAg8BDQEpAQ0CDAEKAwwBCQETAQwBEQEMAQ4DDAENAg4BDgIJAWMBAAAAAQAAAAMAAABDAAAAcxYAAAB8AABqAAB0AQB8AACDAQBmAQBmAgBTKAEAAABOKAIAAAB0CQAAAF9fY2xhc3NfX1JXAAAAKAEAAABSHQAAACgAAAAAKAAAAABzTwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHl0CgAAAF9fcmVkdWNlX18tDgAAcwIAAAAAAWMBAAAAAQAAAAMAAABDAAAAcykAAAB0AAB8AACDAQB0AQBrCAByFgB8AABTfAAAagIAdAMAfAAAgwEAgwEAUygBAAAATigEAAAAdAQAAAB0eXBlUgAAAABSewEAAFJXAAAAKAEAAABSHQAAACgAAAAAKAAAAABzTwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHl0CAAAAF9fY29weV9fMA4AAHMGAAAAAAESAQQBYwIAAAACAAAAAwAAAEMAAABzKQAAAHQAAHwAAIMBAHQBAGsIAHIWAHwAAFN8AABqAgB0AwB8AACDAQCDAQBTKAEAAABOKAQAAABSfQEAAFIAAAAAUnsBAABSVwAAACgCAAAAUh0AAAB0BAAAAG1lbW8oAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5dAwAAABfX2RlZXBjb3B5X181DgAAcwYAAAAAARIBBAFjBAAAAA4AAAALAAAAQwAAAHP0AgAAfAIAZBAAawgAchgAdAEAgwAAfQIAbgAAdAIAfAEAZAEAfAMAgwEBfQQAfAAAagMAcmcAdAQAfAAAagUAfAQAgwIAfQUAdAYAfAAAagcAgwAAgwEAfQYAdAgAfAUAfAYAfAQAgwMAU3wEAGQCABlkEABrCABykQBkAwBkBABnAgB8AgBqCQAZfAQAZAIAPG4AAHwEAGQCABlkBQBrAgBywwB0CgB8AABqBQB8AABqCwB8AABqDABkBgAXgwMAfQAAbgAAfAIAag0AfQcAfAQAZAcAGX0IAHwIAGQQAGsJAHJuAXwEAGQCABlkCABrBgByCwF8AABqDgB8CABkCQAXfAcAgwIAfQAAcW4BfAQAZAIAGWQKAGsGAHIxAXwAAGoPAHwIAAt8BwCDAgB9AABxbgF8BABkAgAZZAsAawYAcm4BdBAAfAAAagsAgwEAfAgAawQAcm4BfAAAag4AfAgAfAcAgwIAfQAAcW4BbgAAfAAADHKpAXwAAGoMAGQMAGsEAHKpAXwEAGQCABlkCgBrBgByqQF8AABqDwBkDAB8BwCDAgB9AABuAAB8AABqDAB0EAB8AABqCwCDAQAXfQkAfAQAZAIAGWQIAGsGAHL4AXwAAAxy7wF8CABkEABrCQBy7wFkCQB8CAAYfQoAcU4CZAkAfQoAblYAfAQAZAIAGWQKAGsGAHIRAnwJAH0KAG49AHwEAGQCABlkCwBrBgByTgJ8AABqDABkDABrAQByRQJ8CQBkDQBrBAByRQJ8CQB9CgBxTgJkCQB9CgBuAAB8CgBkDABrAABydQJkDgB9CwBkDgB8CgALFHwAAGoLABd9DABuXAB8CgB0EAB8AABqCwCDAQBrBABysQJ8AABqCwBkDgB8CgB0EAB8AABqCwCDAQAYFBd9CwBkDwB9DABuIAB8AABqCwB8CgAgcMECZA4AfQsAfAAAagsAfAoAH30MAHwJAHwKABh9DQB0EQB8AABqBQB8CwB8DAB8DQB8BACDBQBTKBEAAABzfAEAAEZvcm1hdCBhIERlY2ltYWwgaW5zdGFuY2UgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBzcGVjaWZpZXIuCgogICAgICAgIFRoZSBzcGVjaWZpZXIgc2hvdWxkIGJlIGEgc3RhbmRhcmQgZm9ybWF0IHNwZWNpZmllciwgd2l0aCB0aGUKICAgICAgICBmb3JtIGRlc2NyaWJlZCBpbiBQRVAgMzEwMS4gIEZvcm1hdHRpbmcgdHlwZXMgJ2UnLCAnRScsICdmJywKICAgICAgICAnRicsICdnJywgJ0cnLCAnbicgYW5kICclJyBhcmUgc3VwcG9ydGVkLiAgSWYgdGhlIGZvcm1hdHRpbmcKICAgICAgICB0eXBlIGlzIG9taXR0ZWQgaXQgZGVmYXVsdHMgdG8gJ2cnIG9yICdHJywgZGVwZW5kaW5nIG9uIHRoZQogICAgICAgIHZhbHVlIG9mIGNvbnRleHQuY2FwaXRhbHMuCiAgICAgICAgdAsAAABfbG9jYWxlY29udlJ9AQAAdAEAAABndAEAAABHdAEAAAAlaQIAAAB0CQAAAHByZWNpc2lvbnQCAAAAZUVpAQAAAHMDAAAAZkYldAIAAABnR2kAAAAAafr///9SRQAAAFJJAAAATigSAAAAUkAAAABSFwAAAHQXAAAAX3BhcnNlX2Zvcm1hdF9zcGVjaWZpZXJSRAAAAHQMAAAAX2Zvcm1hdF9zaWduUiUAAABSVwAAAFKtAAAAdA0AAABfZm9ybWF0X2FsaWduUqcAAABSJAAAAFImAAAAUkMAAABSMgAAAFIxAQAAUrYAAABSWAAAAHQOAAAAX2Zvcm1hdF9udW1iZXIoDgAAAFIdAAAAdAkAAABzcGVjaWZpZXJSHgAAAFKBAQAAdAQAAABzcGVjUi0AAAB0BAAAAGJvZHlSMgAAAFKFAQAAUqkAAABSqgAAAFJqAAAAUmsAAABSSgAAACgAAAAAKAAAAABzTwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHl0CgAAAF9fZm9ybWF0X188DgAAc1YAAAAADwwBDAISAwkBEgESARADEAEaAxABIgMJAQoBDAEQARkBEAEWASUBGAMmARUDFgEQARMBDQIJARABCQEQARsBCQIJAwwBBgEVARUBHgEJAhMBDQEKBCgEAAAAcwQAAABfZXhwcwQAAABfaW50cwUAAABfc2lnbnMLAAAAX2lzX3NwZWNpYWxOKIQAAABSIAAAAFIhAAAAUiIAAAB0CQAAAF9fc2xvdHNfX1JAAAAAUlAAAABSZQAAAHQLAAAAY2xhc3NtZXRob2RSeQAAAFJ6AAAAUn8AAABSggAAAFKDAAAAUosAAABSjwAAAFKQAAAAUpEAAABSkgAAAFKTAAAAUpQAAABSlgAAAFKfAAAAUqAAAABSoQAAAFJZAAAAUqsAAABSrAAAAFKwAAAAUrEAAABSJwAAAFKzAAAAUrsAAAB0CAAAAF9fcmFkZF9fUrwAAABSvQAAAFLBAAAAdAgAAABfX3JtdWxfX1LIAAAAUswAAABSzQAAAHQHAAAAX19kaXZfX3QIAAAAX19yZGl2X19SzwAAAFLQAAAAUtEAAABS0gAAAFLUAAAAUtUAAABS1gAAAFLZAAAAUtsAAAB0CQAAAF9fdHJ1bmNfX1LcAAAAdAgAAABwcm9wZXJ0eVLdAAAAUt4AAABS4AAAAFLhAAAAUigAAABSrwAAAFLuAAAAUu8AAABS8QAAAFLzAAAAUvUAAABS9gAAAFL3AAAAUvkAAAB0BAAAAGRpY3RS5gAAAFL8AAAAUgQBAABSFgEAAFIlAQAAUiYBAABSKQEAAFIsAQAAUi4BAABStgAAAFIxAQAAUjIBAABSmgAAAHQLAAAAdG9faW50ZWdyYWxSNwEAAFK1AAAAUrQAAABSmQAAAFL9AAAAUoQAAABSPAEAAFI9AQAAUjgBAABSRQEAAFKtAAAAUq4AAABSRgEAAFJKAAAAUkkBAABSSgEAAFItAQAAUpcAAABSSwEAAFKBAAAAUkwBAABSgAAAAFJNAQAAUk4BAABSUQEAAFJVAQAAUhgBAABSWAEAAFJZAQAAUlwBAABSYAEAAFJjAQAAUmUBAABSZgEAAFJkAQAAUmcBAABSaAEAAFJrAQAAUmwBAABSbgEAAFJwAQAAUnEBAABSdgEAAFJ5AQAAUsUAAABSfAEAAFJ+AQAAUoABAABSjwEAACgAAAAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVIAAAAA+gEAAHMOAQAABgEGAgYGD5MJJAwCCQ8JDQ8gCSEJBwlADAgMCAwJDAkMCQwJDBMJNAkHCQUPNAwKDBYMFQ8WDFYGAgwODAgMNwYCDDsJIQwHBgEGAgwkDAcMGwwHDEsMHAwHCQoJDQYCCQIMAgkCDAIJAwkDCQcJDAlmCQcJBAkJCQcJCAkHCQcJBwYBBgEGAQYBBgEGAQYBBgEJAwwsDFQJ7Q/YDAcMGRJHCQ8JIgkXDx0PEQYCDGMMKgwiCQkJBgkIDAgMDAlJCQsJBAkHCQYMSwkICQgJBAkEDAgJBAkECQQMCAkECRkMMgkeDDMMHgkOCQ0MEQwHDBEMEQweDB4MFwwXDC4MKgkEDCEMGQwnCQMJBQkHYwQAAAAFAAAAAgAAAEMAAABzNwAAAHQAAGoBAHQCAIMBAH0EAHwAAHwEAF8DAHwBAHwEAF8EAHwCAHwEAF8FAHwDAHwEAF8GAHwEAFMoAQAAAHO9AAAAQ3JlYXRlIGEgZGVjaW1hbCBpbnN0YW5jZSBkaXJlY3RseSwgd2l0aG91dCBhbnkgdmFsaWRhdGlvbiwKICAgIG5vcm1hbGl6YXRpb24gKGUuZy4gcmVtb3ZhbCBvZiBsZWFkaW5nIHplcm9zKSBvciBhcmd1bWVudAogICAgY29udmVyc2lvbi4KCiAgICBUaGlzIGZ1bmN0aW9uIGlzIGZvciAqaW50ZXJuYWwgdXNlIG9ubHkqLgogICAgKAcAAABSTwAAAFJQAAAAUgAAAABSJQAAAFImAAAAUkMAAABSRAAAACgFAAAAUi0AAAB0CwAAAGNvZWZmaWNpZW50UgIBAAB0BwAAAHNwZWNpYWxSHQAAACgAAAAAKAAAAABzTwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHlSJAAAAIwOAABzDAAAAAAIDwEJAQkBCQEJAlJBAAAAYwAAAAAAAAAAAQAAAEIAAABzKQAAAGUAAFoBAGQAAFoCAGQBAIQAAFoDAGQCAIQAAFoEAGQDAIQAAFoFAFJTKAQAAABzrQAAAENvbnRleHQgbWFuYWdlciBjbGFzcyB0byBzdXBwb3J0IGxvY2FsY29udGV4dCgpLgoKICAgICAgU2V0cyBhIGNvcHkgb2YgdGhlIHN1cHBsaWVkIGNvbnRleHQgaW4gX19lbnRlcl9fKCkgYW5kIHJlc3RvcmVzCiAgICAgIHRoZSBwcmV2aW91cyBkZWNpbWFsIGNvbnRleHQgaW4gX19leGl0X18oKQogICAgYwIAAAACAAAAAgAAAEMAAABzEwAAAHwBAGoAAIMAAHwAAF8BAGQAAFMoAQAAAE4oAgAAAFI6AAAAdAsAAABuZXdfY29udGV4dCgCAAAAUh0AAABSnAEAACgAAAAAKAAAAABzTwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHl0CAAAAF9faW5pdF9fqg4AAHMCAAAAAAFjAQAAAAEAAAACAAAAQwAAAHMgAAAAdAAAgwAAfAAAXwEAdAIAfAAAagMAgwEAAXwAAGoDAFMoAQAAAE4oBAAAAFIXAAAAdA0AAABzYXZlZF9jb250ZXh0UhYAAABSnAEAACgBAAAAUh0AAAAoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5dAkAAABfX2VudGVyX1+sDgAAcwYAAAAAAQwBDQFjBAAAAAQAAAACAAAAQwAAAHMRAAAAdAAAfAAAagEAgwEAAWQAAFMoAQAAAE4oAgAAAFIWAAAAUp4BAAAoBAAAAFIdAAAAdAEAAAB0dAEAAAB2dAIAAAB0YigAAAAAKAAAAABzTwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHl0CAAAAF9fZXhpdF9fsA4AAHMCAAAAAAEoBgAAAFIgAAAAUiEAAABSIgAAAFKdAQAAUp8BAABSowEAACgAAAAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVJBAAAApA4AAHMIAAAABgUGAQkCCQRjAAAAAAAAAAAKAAAAQgAAAHPnAgAAZQAAWgEAZAAAWgIAZE4AZE4AZE4AZE4AZE4AZE4AZE4AZAEAZE4AZAIAhAkAWgQAZAMAhAAAWgUAZAQAhAAAWgYAZAUAhAAAWgcAZAYAhAAAWggAZQgAWgkAZE4AZAcAhAEAWgoAZAgAhAAAWgsAZAkAhAAAWgwAZAoAhAAAWg0AZE4AWg4AZAsAhAAAWg8AZAwAhAAAWhAAZA0AhAAAWhEAZA4AZA8AhAEAWhIAZBAAhAAAWhMAZBEAhAAAWhQAZBIAhAAAWhUAZBMAhAAAWhYAZBQAhAAAWhcAZBUAhAAAWhgAZBYAhAAAWhkAZBcAhAAAWhoAZBgAhAAAWhsAZBkAhAAAWhwAZBoAhAAAWh0AZBsAhAAAWh4AZBwAhAAAWh8AZB0AhAAAWiAAZB4AhAAAWiEAZB8AhAAAWiIAZCAAhAAAWiMAZCEAhAAAWiQAZCIAhAAAWiUAZCMAhAAAWiYAZCQAhAAAWicAZCUAhAAAWigAZCYAhAAAWikAZCcAhAAAWioAZCgAhAAAWisAZCkAhAAAWiwAZCoAhAAAWi0AZCsAhAAAWi4AZCwAhAAAWi8AZC0AhAAAWjAAZC4AhAAAWjEAZC8AhAAAWjIAZDAAhAAAWjMAZDEAhAAAWjQAZDIAhAAAWjUAZDMAhAAAWjYAZDQAhAAAWjcAZDUAhAAAWjgAZDYAhAAAWjkAZDcAhAAAWjoAZDgAhAAAWjsAZDkAhAAAWjwAZDoAhAAAWj0AZDsAhAAAWj4AZDwAhAAAWj8AZD0AhAAAWkAAZD4AhAAAWkEAZE4AZD8AhAEAWkIAZEAAhAAAWkMAZEEAhAAAWkQAZEIAhAAAWkUAZEMAhAAAWkYAZEQAhAAAWkcAZEUAhAAAWkgAZEYAhAAAWkkAZEcAhAAAWkoAZEgAhAAAWksAZEkAhAAAWkwAZEoAhAAAWk0AZEsAhAAAWk4AZEwAhAAAWk8AZE0AhAAAWlAAZVAAWlEAUlMoTwAAAHPfAgAAQ29udGFpbnMgdGhlIGNvbnRleHQgZm9yIGEgRGVjaW1hbCBpbnN0YW5jZS4KCiAgICBDb250YWluczoKICAgIHByZWMgLSBwcmVjaXNpb24gKGZvciB1c2UgaW4gcm91bmRpbmcsIGRpdmlzaW9uLCBzcXVhcmUgcm9vdHMuLikKICAgIHJvdW5kaW5nIC0gcm91bmRpbmcgdHlwZSAoaG93IHlvdSByb3VuZCkKICAgIHRyYXBzIC0gSWYgdHJhcHNbZXhjZXB0aW9uXSA9IDEsIHRoZW4gdGhlIGV4Y2VwdGlvbiBpcwogICAgICAgICAgICAgICAgICAgIHJhaXNlZCB3aGVuIGl0IGlzIGNhdXNlZC4gIE90aGVyd2lzZSwgYSB2YWx1ZSBpcwogICAgICAgICAgICAgICAgICAgIHN1YnN0aXR1dGVkIGluLgogICAgZmxhZ3MgIC0gV2hlbiBhbiBleGNlcHRpb24gaXMgY2F1c2VkLCBmbGFnc1tleGNlcHRpb25dIGlzIHNldC4KICAgICAgICAgICAgIChXaGV0aGVyIG9yIG5vdCB0aGUgdHJhcF9lbmFibGVyIGlzIHNldCkKICAgICAgICAgICAgIFNob3VsZCBiZSByZXNldCBieSB1c2VyIG9mIERlY2ltYWwgaW5zdGFuY2UuCiAgICBFbWluIC0gICBNaW5pbXVtIGV4cG9uZW50CiAgICBFbWF4IC0gICBNYXhpbXVtIGV4cG9uZW50CiAgICBjYXBpdGFscyAtICAgICAgSWYgMSwgMSoxMF4xIGlzIHByaW50ZWQgYXMgMUUrMS4KICAgICAgICAgICAgICAgICAgICBJZiAwLCBwcmludGVkIGFzIDFlMQogICAgX2NsYW1wIC0gSWYgMSwgY2hhbmdlIGV4cG9uZW50cyBpZiB0b28gaGlnaCAoRGVmYXVsdCAwKQogICAgaQAAAABjCgAAAAsAAAAFAAAAAwAAAHOwAQAAeQoAdAAAfQoAV24RAAR0AQBrCgByHQABAQFuAQBYfAEAZAAAawkAcjAAfAEAbgYAfAoAagMAfAAAXwMAfAIAZAAAawkAck4AfAIAbgYAfAoAagQAfAAAXwQAfAUAZAAAawkAcmwAfAUAbgYAfAoAagUAfAAAXwUAfAYAZAAAawkAcooAfAYAbgYAfAoAagYAfAAAXwYAfAcAZAAAawkAcqgAfAcAbgYAfAoAagcAfAAAXwcAfAgAZAAAawkAcsYAfAgAbgYAfAoAaggAfAAAXwgAfAkAZAAAawgAcuoAZwAAfAAAXwkAbgkAfAkAfAAAXwkAiAEAZAAAawgAchQBfAoAagoAagsAgwAAfAAAXwoAbjoAdAwAiAEAdA0AgwIAc0UBdA0AhwEAZgEAZAEAhgAAdA4ARIMBAIMBAHwAAF8KAG4JAIgBAHwAAF8KAIgAAGQAAGsIAHJyAXQNAGoPAHQOAGQCAIMCAHwAAF8QAG46AHQMAIgAAHQNAIMCAHOjAXQNAIcAAGYBAGQDAIYAAHQOAESDAQCDAQB8AABfEABuCQCIAAB8AABfEABkAABTKAQAAABOYwEAAAACAAAABQAAADMAAABzJwAAAHwAAF0dAH0BAHwBAHQAAHwBAIgAAGsGAIMBAGYCAFYBcQMAZAAAUygBAAAATigBAAAAUkcAAAAoAgAAAHQCAAAALjBS2AAAACgBAAAAUhsBAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weXMJAAAAPGdlbmV4cHI+4Q4AAHMCAAAABgBpAAAAAGMBAAAAAgAAAAUAAAAzAAAAcycAAAB8AABdHQB9AQB8AQB0AAB8AQCIAABrBgCDAQBmAgBWAXEDAGQAAFMoAQAAAE4oAQAAAFJHAAAAKAIAAABSpAEAAFLYAAAAKAEAAABSHAEAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5cwkAAAA8Z2VuZXhwcj7oDgAAcwIAAAAGACgRAAAAUgIAAAB0CQAAAE5hbWVFcnJvclJAAAAAUjMAAABSMgAAAFIqAQAAUjQAAABSpwAAAFLiAAAAdA4AAABfaWdub3JlZF9mbGFnc1IbAQAAUjoAAABSUQAAAFKYAQAAUhoBAAB0CAAAAGZyb21rZXlzUhwBAAAoCwAAAFIdAAAAUjMAAABSMgAAAFIbAQAAUhwBAABSKgEAAFI0AAAAUqcAAABS4gAAAFKmAQAAdAIAAABkYygAAAAAKAIAAABSHAEAAFIbAQAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5Up0BAADGDgAAcy4AAAAABwMBCgENAQQCHgEeAR4BHgEeAR4CDAEMAgkCDAEVAQ8BIgIJAgwBGAEPASICYwEAAAAGAAAABAAAAEMAAABzzAAAAGcAAH0BAHwBAGoAAGQBAHQBAHwAAIMBABaDAQABZwAAfAAAagIAagMAgwAARF0bAFwCAH0CAH0DAHwDAHItAHwCAGoEAF4CAHEtAH0EAHwBAGoAAGQCAGQDAGoFAHwEAIMBABdkBAAXgwEAAWcAAHwAAGoGAGoDAIMAAERdGwBcAgB9BQB9AwB8AwByfAB8BQBqBABeAgBxfAB9BAB8AQBqAABkBQBkAwBqBQB8BACDAQAXZAQAF4MBAAFkAwBqBQB8AQCDAQBkBgAXUygHAAAAcxkAAABTaG93IHRoZSBjdXJyZW50IGNvbnRleHQuc2EAAABDb250ZXh0KHByZWM9JShwcmVjKWQsIHJvdW5kaW5nPSUocm91bmRpbmcpcywgRW1pbj0lKEVtaW4pZCwgRW1heD0lKEVtYXgpZCwgY2FwaXRhbHM9JShjYXBpdGFscylkcwcAAABmbGFncz1bcwIAAAAsIHQBAAAAXXMHAAAAdHJhcHM9W3QBAAAAKSgHAAAAUmEAAAB0BAAAAHZhcnNSHAEAAHQFAAAAaXRlbXNSIAAAAFJiAAAAUhsBAAAoBgAAAFIdAAAAUtgAAABSdQAAAFKhAQAAdAUAAABuYW1lc1KgAQAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVKhAAAA7A4AAHMQAAAAAAIGAQkCDgExAR4BMQEeAWMBAAAAAgAAAAQAAABDAAAAcyUAAAB4HgB8AABqAABEXRMAfQEAZAEAfAAAagAAfAEAPHEKAFdkAgBTKAMAAABzFwAAAFJlc2V0IGFsbCBmbGFncyB0byB6ZXJvaQAAAABOKAEAAABSHAEAACgCAAAAUh0AAAB0BAAAAGZsYWcoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5UjsAAAD4DgAAcwQAAAAAAhABYwEAAAACAAAACgAAAEMAAABzQwAAAHQAAHwAAGoBAHwAAGoCAHwAAGoDAHwAAGoEAHwAAGoFAHwAAGoGAHwAAGoHAHwAAGoIAHwAAGoJAIMJAH0BAHwBAFMoAQAAAHMhAAAAUmV0dXJucyBhIHNoYWxsb3cgY29weSBmcm9tIHNlbGYuKAoAAABSAQAAAFIzAAAAUjIAAABSGwEAAFIcAQAAUioBAABSNAAAAFKnAAAAUuIAAABSpgEAACgCAAAAUh0AAAB0AgAAAG5jKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVIzAQAA/Q4AAHMIAAAAAAIVARIBGAFjAQAAAAIAAAAKAAAAQwAAAHNPAAAAdAAAfAAAagEAfAAAagIAfAAAagMAagQAgwAAfAAAagUAagQAgwAAfAAAagYAfAAAagcAfAAAaggAfAAAagkAfAAAagoAgwkAfQEAfAEAUygBAAAAcx4AAABSZXR1cm5zIGEgZGVlcCBjb3B5IGZyb20gc2VsZi4oCwAAAFIBAAAAUjMAAABSMgAAAFIbAQAAUjoAAABSHAEAAFIqAQAAUjQAAABSpwAAAFLiAAAAUqYBAAAoAgAAAFIdAAAAUq8BAAAoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5UjoAAAAEDwAAcwgAAAAAAhsBGAEYAWMDAAAABQAAAAMAAABHAAAAc3EAAAB0AABqAQB8AQB8AQCDAgB9BAB8BAB8AABqAgBrBgByNAB8BACDAABqAwB8AAB8AwCMAQBTZAEAfAAAagQAfAQAPHwAAGoFAHwEABlzYQB8AQCDAABqAwB8AAB8AwCMAQBTfAQAfAIAgwEAggEAZAIAUygDAAAAcyMBAABIYW5kbGVzIGFuIGVycm9yCgogICAgICAgIElmIHRoZSBmbGFnIGlzIGluIF9pZ25vcmVkX2ZsYWdzLCByZXR1cm5zIHRoZSBkZWZhdWx0IHJlc3BvbnNlLgogICAgICAgIE90aGVyd2lzZSwgaXQgc2V0cyB0aGUgZmxhZywgdGhlbiwgaWYgdGhlIGNvcnJlc3BvbmRpbmcKICAgICAgICB0cmFwX2VuYWJsZXIgaXMgc2V0LCBpdCByZXJhaXNlcyB0aGUgZXhjZXB0aW9uLiAgT3RoZXJ3aXNlLCBpdCByZXR1cm5zCiAgICAgICAgdGhlIGRlZmF1bHQgdmFsdWUgYWZ0ZXIgc2V0dGluZyB0aGUgZmxhZy4KICAgICAgICBpAQAAAE4oBgAAAHQOAAAAX2NvbmRpdGlvbl9tYXB0AwAAAGdldFKmAQAAUh8AAABSHAEAAFIbAQAAKAUAAABSHQAAAHQJAAAAY29uZGl0aW9udAsAAABleHBsYW5hdGlvblIbAAAAdAUAAABlcnJvcigAAAAAKAAAAABzTwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHlSVQAAAAwPAABzDgAAAAAIEgEPAhMCDQENAhMEYwEAAAABAAAAAgAAAEMAAABzDQAAAHwAAGoAAHQBAIwAAFMoAQAAAHMkAAAASWdub3JlIGFsbCBmbGFncywgaWYgdGhleSBhcmUgcmFpc2VkKAIAAAB0DQAAAF9pZ25vcmVfZmxhZ3NSGgEAACgBAAAAUh0AAAAoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5UmkBAAAiDwAAcwIAAAAAAmMBAAAAAgAAAAMAAABHAAAAcyAAAAB8AABqAAB0AQB8AQCDAQAXfAAAXwAAdAEAfAEAgwEAUygBAAAAcyQAAABJZ25vcmUgdGhlIGZsYWdzLCBpZiB0aGV5IGFyZSByYWlzZWQoAgAAAFKmAQAAUl4AAAAoAgAAAFIdAAAAUhwBAAAoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5UrUBAAAmDwAAcwQAAAAABBYBYwEAAAADAAAABQAAAEcAAABzUQAAAHwBAHIsAHQAAHwBAGQBABl0AQB0AgBmAgCDAgByLAB8AQBkAQAZfQEAbgAAeB4AfAEARF0WAH0CAHwAAGoDAGoEAHwCAIMBAAFxMwBXZAIAUygDAAAAcysAAABTdG9wIGlnbm9yaW5nIHRoZSBmbGFncywgaWYgdGhleSBhcmUgcmFpc2VkaQAAAABOKAUAAABSUQAAAFJfAAAAUl4AAABSpgEAAHQGAAAAcmVtb3ZlKAMAAABSHQAAAFIcAQAAUq4BAAAoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5dA0AAABfcmVnYXJkX2ZsYWdzLQ8AAHMIAAAAAAIfAQ0BDQFjAQAAAAEAAAADAAAAQwAAAHMYAAAAdAAAfAAAagEAfAAAagIAGGQBABeDAQBTKAIAAABzIQAAAFJldHVybnMgRXRpbnkgKD0gRW1pbiAtIHByZWMgKyAxKWkBAAAAKAMAAABSRwAAAFIqAQAAUjMAAAAoAQAAAFIdAAAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVLCAAAANw8AAHMCAAAAAAJjAQAAAAEAAAADAAAAQwAAAHMYAAAAdAAAfAAAagEAfAAAagIAGGQBABeDAQBTKAIAAABzLAAAAFJldHVybnMgbWF4aW11bSBleHBvbmVudCAoPSBFbWF4IC0gcHJlYyArIDEpaQEAAAAoAwAAAFJHAAAAUjQAAABSMwAAACgBAAAAUh0AAAAoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5UuUAAAA7DwAAcwIAAAAAAmMCAAAAAwAAAAIAAABDAAAAcxYAAAB8AABqAAB9AgB8AQB8AABfAAB8AgBTKAEAAABz0wEAAFNldHMgdGhlIHJvdW5kaW5nIHR5cGUuCgogICAgICAgIFNldHMgdGhlIHJvdW5kaW5nIHR5cGUsIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IChwcmV2aW91cykKICAgICAgICByb3VuZGluZyB0eXBlLiAgT2Z0ZW4gdXNlZCBsaWtlOgoKICAgICAgICBjb250ZXh0ID0gY29udGV4dC5jb3B5KCkKICAgICAgICAjIHNvIHlvdSBkb24ndCBjaGFuZ2UgdGhlIGNhbGxpbmcgY29udGV4dAogICAgICAgICMgaWYgYW4gZXJyb3Igb2NjdXJzIGluIHRoZSBtaWRkbGUuCiAgICAgICAgcm91bmRpbmcgPSBjb250ZXh0Ll9zZXRfcm91bmRpbmcoUk9VTkRfVVApCiAgICAgICAgdmFsID0gc2VsZi5fX3N1Yl9fKG90aGVyLCBjb250ZXh0PWNvbnRleHQpCiAgICAgICAgY29udGV4dC5fc2V0X3JvdW5kaW5nKHJvdW5kaW5nKQoKICAgICAgICBUaGlzIHdpbGwgbWFrZSBpdCByb3VuZCB1cCBmb3IgdGhhdCBvcGVyYXRpb24uCiAgICAgICAgKAEAAABSMgAAACgDAAAAUh0AAABSfQEAAFIyAAAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVI0AQAAPw8AAHMGAAAAAA8JAQkBUkUAAABjAgAAAAMAAAAFAAAAQwAAAHOLAAAAdAAAfAEAdAEAgwIAcjEAfAEAfAEAagIAgwAAawMAcjEAfAAAagMAdAQAZAEAgwIAU3QFAHwBAGQCAHwAAIMBAX0CAHwCAGoGAIMAAHJ+AHQHAHwCAGoIAIMBAHwAAGoJAHwAAGoKABhrBAByfgB8AABqAwB0BABkAwCDAgBTfAIAagsAfAAAgwEAUygEAAAAc5sAAABDcmVhdGVzIGEgbmV3IERlY2ltYWwgaW5zdGFuY2UgYnV0IHVzaW5nIHNlbGYgYXMgY29udGV4dC4KCiAgICAgICAgVGhpcyBtZXRob2QgaW1wbGVtZW50cyB0aGUgdG8tbnVtYmVyIG9wZXJhdGlvbiBvZiB0aGUKICAgICAgICBJQk0gRGVjaW1hbCBzcGVjaWZpY2F0aW9uLnMvAAAAbm8gdHJhaWxpbmcgb3IgbGVhZGluZyB3aGl0ZXNwYWNlIGlzIHBlcm1pdHRlZC5SHgAAAHMfAAAAZGlhZ25vc3RpYyBpbmZvIHRvbyBsb25nIGluIE5hTigMAAAAUlEAAABSUgAAAFJUAAAAUlUAAABSKwAAAFIAAAAAUnkAAABSWAAAAFImAAAAUjMAAABS4gAAAFKvAAAAKAMAAABSHQAAAFJPAQAAUnYAAAAoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5dA4AAABjcmVhdGVfZGVjaW1hbFIPAABzEAAAAAAGIQEJAQcDEgErAQkBBwFjAgAAAAMAAAACAAAAQwAAAHMcAAAAdAAAagEAfAEAgwEAfQIAfAIAagIAfAAAgwEAUygBAAAAc8cBAABDcmVhdGVzIGEgbmV3IERlY2ltYWwgaW5zdGFuY2UgZnJvbSBhIGZsb2F0IGJ1dCByb3VuZGluZyB1c2luZyBzZWxmCiAgICAgICAgYXMgdGhlIGNvbnRleHQuCgogICAgICAgID4+PiBjb250ZXh0ID0gQ29udGV4dChwcmVjPTUsIHJvdW5kaW5nPVJPVU5EX0RPV04pCiAgICAgICAgPj4+IGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCgzLjE0MTU5MjY1MzU4OTc5MzIpCiAgICAgICAgRGVjaW1hbCgnMy4xNDE1JykKICAgICAgICA+Pj4gY29udGV4dCA9IENvbnRleHQocHJlYz01LCB0cmFwcz1bSW5leGFjdF0pCiAgICAgICAgPj4+IGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCgzLjE0MTU5MjY1MzU4OTc5MzIpCiAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgICAgICAuLi4KICAgICAgICBJbmV4YWN0OiBOb25lCgogICAgICAgICgDAAAAUgAAAABSZQAAAFKvAAAAKAMAAABSHQAAAFJ1AAAAUnYAAAAoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5dBkAAABjcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0Yw8AAHMEAAAAAA4PAWMCAAAAAgAAAAQAAABDAAAAcyIAAAB0AAB8AQBkAQB0AQCDAQF9AQB8AQBqAgBkAgB8AACDAAFTKAMAAABzWwIAAFJldHVybnMgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBvcGVyYW5kLgoKICAgICAgICBJZiB0aGUgb3BlcmFuZCBpcyBuZWdhdGl2ZSwgdGhlIHJlc3VsdCBpcyB0aGUgc2FtZSBhcyB1c2luZyB0aGUgbWludXMKICAgICAgICBvcGVyYXRpb24gb24gdGhlIG9wZXJhbmQuICBPdGhlcndpc2UsIHRoZSByZXN1bHQgaXMgdGhlIHNhbWUgYXMgdXNpbmcKICAgICAgICB0aGUgcGx1cyBvcGVyYXRpb24gb24gdGhlIG9wZXJhbmQuCgogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuYWJzKERlY2ltYWwoJzIuMScpKQogICAgICAgIERlY2ltYWwoJzIuMScpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5hYnMoRGVjaW1hbCgnLTEwMCcpKQogICAgICAgIERlY2ltYWwoJzEwMCcpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5hYnMoRGVjaW1hbCgnMTAxLjUnKSkKICAgICAgICBEZWNpbWFsKCcxMDEuNScpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5hYnMoRGVjaW1hbCgnLTEwMS41JykpCiAgICAgICAgRGVjaW1hbCgnMTAxLjUnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuYWJzKC0xKQogICAgICAgIERlY2ltYWwoJzEnKQogICAgICAgIFKVAAAAUh4AAAAoAwAAAFKNAAAAUicAAABSswAAACgCAAAAUh0AAABSFAEAACgAAAAAKAAAAABzTwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHlSXAAAAHUPAABzBAAAAAASEgFjAwAAAAQAAAAEAAAAQwAAAHNOAAAAdAAAfAEAZAEAdAEAgwEBfQEAfAEAagIAfAIAZAIAfAAAgwEBfQMAfAMAdAMAawgAckYAdAQAZAMAfAIAFoMBAIIBAG4EAHwDAFNkBABTKAUAAABzqwEAAFJldHVybiB0aGUgc3VtIG9mIHRoZSB0d28gb3BlcmFuZHMuCgogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuYWRkKERlY2ltYWwoJzEyJyksIERlY2ltYWwoJzcuMDAnKSkKICAgICAgICBEZWNpbWFsKCcxOS4wMCcpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5hZGQoRGVjaW1hbCgnMUUrMicpLCBEZWNpbWFsKCcxLjAxRSs0JykpCiAgICAgICAgRGVjaW1hbCgnMS4wMkUrNCcpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5hZGQoMSwgRGVjaW1hbCgyKSkKICAgICAgICBEZWNpbWFsKCczJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmFkZChEZWNpbWFsKDgpLCA1KQogICAgICAgIERlY2ltYWwoJzEzJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmFkZCg1LCA1KQogICAgICAgIERlY2ltYWwoJzEwJykKICAgICAgICBSlQAAAFIeAAAAcx8AAABVbmFibGUgdG8gY29udmVydCAlcyB0byBEZWNpbWFsTigFAAAAUo0AAABSJwAAAFK7AAAAUo4AAABSZgAAACgEAAAAUh0AAABSFAEAAFJiAQAAUssAAAAoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5dAMAAABhZGSKDwAAcwoAAAAADhIBFQEMARMCYwIAAAACAAAAAwAAAEMAAABzEwAAAHQAAHwBAGoBAHwAAIMBAIMBAFMoAQAAAE4oAgAAAFJXAAAAUq8AAAAoAgAAAFIdAAAAUhQBAAAoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5dAYAAABfYXBwbHmfDwAAcwIAAAAAAWMCAAAAAgAAAAMAAABDAAAAcxAAAAB8AQBqAABkAQB8AACDAAFTKAIAAABz+wAAAFJldHVybnMgdGhlIHNhbWUgRGVjaW1hbCBvYmplY3QuCgogICAgICAgIEFzIHdlIGRvIG5vdCBoYXZlIGRpZmZlcmVudCBlbmNvZGluZ3MgZm9yIHRoZSBzYW1lIG51bWJlciwgdGhlCiAgICAgICAgcmVjZWl2ZWQgb2JqZWN0IGFscmVhZHkgaXMgaW4gaXRzIGNhbm9uaWNhbCBmb3JtLgoKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNhbm9uaWNhbChEZWNpbWFsKCcyLjUwJykpCiAgICAgICAgRGVjaW1hbCgnMi41MCcpCiAgICAgICAgUh4AAAAoAQAAAFI8AQAAKAIAAABSHQAAAFIUAQAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVI8AQAAog8AAHMCAAAAAAljAwAAAAMAAAAEAAAAQwAAAHMlAAAAdAAAfAEAZAEAdAEAgwEBfQEAfAEAagIAfAIAZAIAfAAAgwEBUygDAAAAc4UFAABDb21wYXJlcyB2YWx1ZXMgbnVtZXJpY2FsbHkuCgogICAgICAgIElmIHRoZSBzaWducyBvZiB0aGUgb3BlcmFuZHMgZGlmZmVyLCBhIHZhbHVlIHJlcHJlc2VudGluZyBlYWNoIG9wZXJhbmQKICAgICAgICAoJy0xJyBpZiB0aGUgb3BlcmFuZCBpcyBsZXNzIHRoYW4gemVybywgJzAnIGlmIHRoZSBvcGVyYW5kIGlzIHplcm8gb3IKICAgICAgICBuZWdhdGl2ZSB6ZXJvLCBvciAnMScgaWYgdGhlIG9wZXJhbmQgaXMgZ3JlYXRlciB0aGFuIHplcm8pIGlzIHVzZWQgaW4KICAgICAgICBwbGFjZSBvZiB0aGF0IG9wZXJhbmQgZm9yIHRoZSBjb21wYXJpc29uIGluc3RlYWQgb2YgdGhlIGFjdHVhbAogICAgICAgIG9wZXJhbmQuCgogICAgICAgIFRoZSBjb21wYXJpc29uIGlzIHRoZW4gZWZmZWN0ZWQgYnkgc3VidHJhY3RpbmcgdGhlIHNlY29uZCBvcGVyYW5kIGZyb20KICAgICAgICB0aGUgZmlyc3QgYW5kIHRoZW4gcmV0dXJuaW5nIGEgdmFsdWUgYWNjb3JkaW5nIHRvIHRoZSByZXN1bHQgb2YgdGhlCiAgICAgICAgc3VidHJhY3Rpb246ICctMScgaWYgdGhlIHJlc3VsdCBpcyBsZXNzIHRoYW4gemVybywgJzAnIGlmIHRoZSByZXN1bHQgaXMKICAgICAgICB6ZXJvIG9yIG5lZ2F0aXZlIHplcm8sIG9yICcxJyBpZiB0aGUgcmVzdWx0IGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLgoKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmUoRGVjaW1hbCgnMi4xJyksIERlY2ltYWwoJzMnKSkKICAgICAgICBEZWNpbWFsKCctMScpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlKERlY2ltYWwoJzIuMScpLCBEZWNpbWFsKCcyLjEnKSkKICAgICAgICBEZWNpbWFsKCcwJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmUoRGVjaW1hbCgnMi4xJyksIERlY2ltYWwoJzIuMTAnKSkKICAgICAgICBEZWNpbWFsKCcwJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmUoRGVjaW1hbCgnMycpLCBEZWNpbWFsKCcyLjEnKSkKICAgICAgICBEZWNpbWFsKCcxJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmUoRGVjaW1hbCgnMi4xJyksIERlY2ltYWwoJy0zJykpCiAgICAgICAgRGVjaW1hbCgnMScpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlKERlY2ltYWwoJy0zJyksIERlY2ltYWwoJzIuMScpKQogICAgICAgIERlY2ltYWwoJy0xJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmUoMSwgMikKICAgICAgICBEZWNpbWFsKCctMScpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlKERlY2ltYWwoMSksIDIpCiAgICAgICAgRGVjaW1hbCgnLTEnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZSgxLCBE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YWwgaW5zdGFuY2UgaXMgYWx3YXlzCiAgICAgICAgY2Fub25pY2FsLCBzbyB0aGlzIG1ldGhvZCByZXR1cm5zIFRydWUgZm9yIGFueSBEZWNpbWFsLgoKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2Nhbm9uaWNhbChEZWNpbWFsKCcyLjUwJykpCiAgICAgICAgVHJ1ZQogICAgICAgICgBAAAAUkkBAAAoAgAAAFIdAAAAUhQBAAAoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5UkkBAADYEAAAcwIAAAAACWMCAAAAAgAAAAQAAABDAAAAcxwAAAB0AAB8AQBkAQB0AQCDAQF9AQB8AQBqAgCDAABTKAIAAABzLAIAAFJldHVybiBUcnVlIGlmIHRoZSBvcGVyYW5kIGlzIGZpbml0ZTsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KCiAgICAgICAgQSBEZWNpbWFsIGluc3RhbmNlIGlzIGNvbnNpZGVyZWQgZmluaXRlIGlmIGl0IGlzIG5laXRoZXIKICAgICAgICBpbmZpbml0ZSBub3IgYSBOYU4uCgogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfZmluaXRlKERlY2ltYWwoJzIuNTAnKSkKICAgICAgICBUcnVlCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19maW5pdGUoRGVjaW1hbCgnLTAuMycpKQogICAgICAgIFRydWUKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2Zpbml0ZShEZWNpbWFsKCcwJykpCiAgICAgICAgVHJ1ZQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfZmluaXRlKERlY2ltYWwoJ0luZicpKQogICAgICAgIEZhbHNlCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19maW5pdGUoRGVjaW1hbCgnTmFOJykpCiAgICAgICAgRmFsc2UKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2Zpbml0ZSgxKQogICAg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ZXJ3aXNlIHJldHVybiBGYWxzZS4KCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc196ZXJvKERlY2ltYWwoJzAnKSkKICAgICAgICBUcnVlCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc196ZXJvKERlY2ltYWwoJzIuNTAnKSkKICAgICAgICBGYWxzZQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfemVybyhEZWNpbWFsKCctMEUrMicpKQogICAgICAgIFRydWUKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3plcm8oMSkKICAgICAgICBGYWxzZQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfemVybygwKQogICAgICAgIFRydWUKICAgICAgICBSlQAAACgDAAAAUo0AAABSJwAAAFJOAQAAKAIAAABSHQAAAFIUAQAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVJOAQAAdREAAHMEAAAAAA4SAWMCAAAAAgAAAAQAAABDAAAAcyIAAAB0AAB8AQBkAQB0AQCDAQF9AQB8AQBqAgBkAgB8AACDAAFTKAMAAABz/gEAAFJldHVybnMgdGhlIG5hdHVyYWwgKGJhc2UgZSkgbG9nYXJpdGhtIG9mIHRoZSBvcGVyYW5kLgoKICAgICAgICA+Pj4gYyA9IEV4dGVuZGVkQ29udGV4dC5jb3B5KCkKICAgICAgICA+Pj4gYy5FbWluID0gLTk5OQogICAgICAgID4+PiBjLkVtYXggPSA5OTkKICAgICAgICA+Pj4gYy5sbihEZWNpbWFsKCcwJykpCiAgICAgICAgRGVjaW1hbCgnLUluZmluaXR5JykKICAgICAgICA+Pj4gYy5sbihEZWNpbWFsKCcxLjAwMCcpKQogICAgICAgIERlY2ltYWwoJzAnKQogICAgICAgID4+PiBjLmxuKERlY2ltYWwoJzIuNzE4MjgxODMnKSkKICAgICAgICBEZWNpbWFsKCcxLjAwMDAwMDAwJykKICAgICAgICA+Pj4gYy5sbihE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JyBiZXR3ZWVuIGVhY2ggb3BlcmFuZCdzIGRpZ2l0cy4KCiAgICAgICAgVGhlIG9wZXJhbmRzIG11c3QgYmUgYm90aCBsb2dpY2FsIG51bWJlcnMuCgogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF94b3IoRGVjaW1hbCgnMCcpLCBEZWNpbWFsKCcwJykpCiAgICAgICAgRGVjaW1hbCgnMCcpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX3hvcihEZWNpbWFsKCcwJyksIERlY2ltYWwoJzEnKSkKICAgICAgICBEZWNpbWFsKCcxJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfeG9yKERlY2ltYWwoJzEnKSwgRGVjaW1hbCgnMCcpKQogICAgICAgIERlY2ltYWwoJzEnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF94b3IoRGVjaW1hbCgnMScpLCBEZWNpbWFsKCcxJykpCiAgICAgICAgRGVjaW1hbCgnMCcpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX3hvcihEZWNpbWFsKCcxMTAwJyksIERlY2ltYWwoJzEwMTAnKSkKICAgICAgICBEZWNpbWFsKCcxMTAnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF94b3IoRGVjaW1hbCgnMTExMScpLCBEZWNpbWFsKCcxMCcpKQogICAgICAgIERlY2ltYWwoJzExMDEnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF94b3IoMTEwLCAxMTAxKQogICAgICAgIERlY2ltYWwoJzEwMTEnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF94b3IoRGVjaW1hbCgxMTApLCAxMTAxKQogICAgICAgIERlY2ltYWwoJzEwMTEnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF94b3IoMTEwLCBEZWNpbWFsKDExMDEpKQogICAgICAgIERlY2ltYWwoJzEwMTEnKQogICAgICAgIFKVAAAAUh4AAAAoAwAA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ICAgICAgICBUaGUgY2xhc3MgaXMgb25lIG9mIHRoZSBmb2xsb3dpbmcgc3RyaW5nczoKICAgICAgICAgIC1zTmFOCiAgICAgICAgICAtTmFOCiAgICAgICAgICAtSW5maW5pdHkKICAgICAgICAgIC1Ob3JtYWwKICAgICAgICAgIC1TdWJub3JtYWwKICAgICAgICAgIC1aZXJvCiAgICAgICAgICArWmVybwogICAgICAgICAgK1N1Ym5vcm1hbAogICAgICAgICAgK05vcm1hbAogICAgICAgICAgK0luZmluaXR5CgogICAgICAgID4+PiBjID0gQ29udGV4dChFeHRlbmRlZENvbnRleHQpCiAgICAgICAgPj4+IGMuRW1pbiA9IC05OTkKICAgICAgICA+Pj4gYy5FbWF4ID0gOTk5CiAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJ0luZmluaXR5JykpCiAgICAgICAgJytJbmZpbml0eScKICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnMUUtMTAnKSkKICAgICAgICAnK05vcm1hbCcKICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnMi41MCcpKQogICAgICAgICcrTm9ybWFsJwogICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCcwLjFFLTk5OScpKQogICAgICAgICcrU3Vibm9ybWFsJwogICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCcwJykpCiAgICAgICAgJytaZXJvJwogICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCctMCcpKQogICAgICAgICctWmVybycKICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnLTAuMUUtOTk5JykpCiAgICAgICAgJy1TdWJub3JtYWwnCiAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJy0xRS0xMCcpKQogICAgICAgICctTm9ybWFsJwogICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCctMi41MCcpKQogICAgICAgICctTm9ybWFsJwog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IGJlIG5vbnplcm8KICAgICAgICAgLSBtb2R1bG8gbXVzdCBiZSBub256ZXJvIGFuZCBoYXZlIGF0IG1vc3QgJ3ByZWNpc2lvbicgZGlnaXRzCgogICAgICAgIFRoZSByZXN1bHQgb2YgcG93KGEsIGIsIG1vZHVsbykgaXMgaWRlbnRpY2FsIHRvIHRoZSByZXN1bHQKICAgICAgICB0aGF0IHdvdWxkIGJlIG9idGFpbmVkIGJ5IGNvbXB1dGluZyAoYSoqYikgJSBtb2R1bG8gd2l0aAogICAgICAgIHVuYm91bmRlZCBwcmVjaXNpb24sIGJ1dCBpcyBjb21wdXRlZCBtb3JlIGVmZmljaWVudGx5LiAgSXQgaXMKICAgICAgICBhbHdheXMgZXhhY3QuCgogICAgICAgID4+PiBjID0gRXh0ZW5kZWRDb250ZXh0LmNvcHkoKQogICAgICAgID4+PiBjLkVtaW4gPSAtOTk5CiAgICAgICAgPj4+IGMuRW1heCA9IDk5OQogICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJzInKSwgRGVjaW1hbCgnMycpKQogICAgICAgIERlY2ltYWwoJzgnKQogICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJy0yJyksIERlY2ltYWwoJzMnKSkKICAgICAgICBEZWNpbWFsKCctOCcpCiAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnMicpLCBEZWNpbWFsKCctMycpKQogICAgICAgIERlY2ltYWwoJzAuMTI1JykKICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCcxLjcnKSwgRGVjaW1hbCgnOCcpKQogICAgICAgIERlY2ltYWwoJzY5Ljc1NzU3NDQnKQogICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJzEwJyksIERlY2ltYWwoJzAuMzAxMDI5OTk2JykpCiAgICAgICAgRGVjaW1hbCgnMi4wMDAwMDAwMCcpCiAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnSW5maW5pdHknKSwgRGVjaW1hbCgnLTEnKSkKICAgICAgICBEZWNpbWFsKCcwJykKICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCdJbmZpbml0eScpLCBEZWNpbWFsKCcwJykpCiAgICAgICAgRGVjaW1hbCgnMScpCiAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnSW5maW5pdHknKSwgRGVjaW1hbCgnMScpKQogICAgICAgIERlY2ltYWwoJ0luZmluaXR5JykKICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCctSW5maW5pdHknKSwgRGVjaW1hbCgnLTEnKSkKICAgICAgICBEZWNpbWFsKCctMCcpCiAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnLUluZmluaXR5JyksIERlY2ltYWwoJzAnKSkKICAgICAgICBEZWNpbWFsKCcxJykKICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCctSW5maW5pdHknKSwgRGVjaW1hbCgnMScpKQogICAgICAgIERlY2ltYWwoJy1JbmZpbml0eScpCiAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnLUluZmluaXR5JyksIERlY2ltYWwoJzInKSkKICAgICAgICBEZWNpbWFsKCdJbmZpbml0eScpCiAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnMCcpLCBEZWNpbWFsKCcwJykpCiAgICAgICAgRGVjaW1hbCgnTmFOJykKCiAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnMycpLCBEZWNpbWFsKCc3JyksIERlY2ltYWwoJzE2JykpCiAgICAgICAgRGVjaW1hbCgnMTEnKQogICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJy0zJyksIERlY2ltYWwoJzcnKSwgRGVjaW1hbCgnMTYnKSkKICAgICAgICBEZWNpbWFsKCctMTEnKQogICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJy0zJyksIERlY2ltYWwoJzgnKSwgRGVjaW1hbCgnMTYnKSkKICAgICAgICBEZWNpbWFsKCcxJykKICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCczJyksIERlY2ltYWwoJzcnKSwgRGVjaW1hbCgnLTE2JykpCiAgICAgICAgRGVjaW1hbCgnMTEnKQogICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJzIzRTEyMzQ1JyksIERlY2ltYWwoJzY3RTE4OScpLCBEZWNpbWFsKCcxMjM0NTY3ODknKSkKICAgICAgICBEZWNpbWFsKCcxMTcyOTgzMCcpCiAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnLTAnKSwgRGVjaW1hbCgnMTcnKSwgRGVjaW1hbCgnMTcyOScpKQogICAgICAgIERlY2ltYWwoJy0wJykKICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCctMjMnKSwgRGVjaW1hbCgnMCcpLCBEZWNpbWFsKCc2NTUzNycpKQogICAgICAgIERlY2ltYWwoJzEnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucG93ZXIoNywgNykKICAgICAgICBEZWNpbWFsKCc4MjM1NDMnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucG93ZXIoRGVjaW1hbCg3KSwgNykKICAgICAgICBEZWNpbWFsKCc4MjM1NDMnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucG93ZXIoNywgRGVjaW1hbCg3KSwgMikKICAgICAgICBEZWNpbWFsKCcxJykKICAgICAgICBSlQAAAFIeAAAAcx8AAABVbmFibGUgdG8gY29udmVydCAlcyB0byBEZWNpbWFsTigFAAAAUo0AAABSJwAAAFIlAQAAUo4AAABSZgAAACgFAAAAUh0AAABSFAEAAFJiAQAAUv8AAABSywAAACgAAAAAKAAAAABzTwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHl0BQAAAHBvd2VyZRMAAHMKAAAAAEkSARgBDAETAmMDAAAAAwAAAAQAAABDAAAAcyUAAAB0AAB8AQBkAQB0AQCDAQF9AQB8AQBqAgB8AgBkAgB8AACDAQFTKAMAAABzFQoAAFJldHVybnMgYSB2YWx1ZSBlcXVhbCB0byAnYScgKHJvdW5kZWQpLCBoYXZpbmcgdGhlIGV4cG9uZW50IG9mICdiJy4KCiAgICAgICAgVGhlIGNvZWZmaWNpZW50IG9mIHRoZSByZXN1bHQgaXMgZGVyaXZlZCBmcm9tIHRoYXQgb2YgdGhlIGxlZnQtaGFuZAogICAgICAgIG9wZXJhbmQuICBJdCBtYXkgYmUgcm91bmRlZCB1c2luZyB0aGUgY3VycmVudCByb3VuZGluZyBzZXR0aW5nIChpZiB0aGUKICAgICAgICBleHBvbmVudCBpcyBiZWluZyBpbmNyZWFzZWQpLCBtdWx0aXBsaWVkIGJ5IGEgcG9zaXRpdmUgcG93ZXIgb2YgdGVuIChpZgogICAgICAgIHRoZSBleHBvbmVudCBpcyBiZWluZyBkZWNyZWFzZWQpLCBvciBpcyB1bmNoYW5nZWQgKGlmIHRoZSBleHBvbmVudCBpcwogICAgICAgIGFscmVhZHkgZXF1YWwgdG8gdGhhdCBvZiB0aGUgcmlnaHQtaGFuZCBvcGVyYW5kKS4KCiAgICAgICAgVW5saWtlIG90aGVyIG9wZXJhdGlvbnMsIGlmIHRoZSBsZW5ndGggb2YgdGhlIGNvZWZmaWNpZW50IGFmdGVyIHRoZQogICAgICAgIHF1YW50aXplIG9wZXJhdGlvbiB3b3VsZCBiZSBncmVhdGVyIHRoYW4gcHJlY2lzaW9uIHRoZW4gYW4gSW52YWxpZAogICAgICAgIG9wZXJhdGlvbiBjb25kaXRpb24gaXMgcmFpc2VkLiAgVGhpcyBndWFyYW50ZWVzIHRoYXQsIHVubGVzcyB0aGVyZSBpcwogICAgICAgIGFuIGVycm9yIGNvbmRpdGlvbiwgdGhlIGV4cG9uZW50IG9mIHRoZSByZXN1bHQgb2YgYSBxdWFudGl6ZSBpcyBhbHdheXMKICAgICAgICBlcXVhbCB0byB0aGF0IG9mIHRoZSByaWdodC1oYW5kIG9wZXJhbmQuCgogICAgICAgIEFsc28gdW5saWtlIG90aGVyIG9wZXJhdGlvbnMsIHF1YW50aXplIHdpbGwgbmV2ZXIgcmFpc2UgVW5kZXJmbG93LCBldmVuCiAgICAgICAgaWYgdGhlIHJlc3VsdCBpcyBzdWJub3JtYWwgYW5kIGluZXhhY3QuCgogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMi4xNycpLCBEZWNpbWFsKCcwLjAwMScpKQogICAgICAgIERlY2ltYWwoJzIuMTcwJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJzIuMTcnKSwgRGVjaW1hbCgnMC4wMScpKQogICAgICAgIERlY2ltYWwoJzIuMTcnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMi4xNycpLCBEZWNpbWFsKCcwLjEnKSkKICAgICAgICBEZWNpbWFsKCcyLjInKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMi4xNycpLCBEZWNpbWFsKCcxZSswJykpCiAgICAgICAgRGVjaW1hbCgnMicpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCcyLjE3JyksIERlY2ltYWwoJzFlKzEnKSkKICAgICAgICBEZWNpbWFsKCcwRSsxJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJy1JbmYnKSwgRGVjaW1hbCgnSW5maW5pdHknKSkKICAgICAgICBEZWNpbWFsKCctSW5maW5pdHknKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMicpLCBEZWNpbWFsKCdJbmZpbml0eScpKQogICAgICAgIERlY2ltYWwoJ05hTicpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCctMC4xJyksIERlY2ltYWwoJzEnKSkKICAgICAgICBEZWNpbWFsKCctMCcpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCctMCcpLCBEZWNpbWFsKCcxZSs1JykpCiAgICAgICAgRGVjaW1hbCgnLTBFKzUnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnKzM1MjM2NDUwLjYnKSwgRGVjaW1hbCgnMWUtMicpKQogICAgICAgIERlY2ltYWwoJ05hTicpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCctMzUyMzY0NTAuNicpLCBEZWNpbWFsKCcxZS0yJykpCiAgICAgICAgRGVjaW1hbCgnTmFOJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJzIxNycpLCBEZWNpbWFsKCcxZS0xJykpCiAgICAgICAgRGVjaW1hbCgnMjE3LjAnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMjE3JyksIERlY2ltYWwoJzFlLTAnKSkKICAgICAgICBEZWNpbWFsKCcyMTcnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMjE3JyksIERlY2ltYWwoJzFlKzEnKSkKICAgICAgICBEZWNpbWFsKCcyLjJFKzInKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMjE3JyksIERlY2ltYWwoJzFlKzInKSkKICAgICAgICBEZWNpbWFsKCcyRSsyJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKDEsIDIpCiAgICAgICAgRGVjaW1hbCgnMScpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKDEpLCAyKQogICAgICAgIERlY2ltYWwoJzEnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoMSwgRGVjaW1hbCgyKSkKICAgICAgICBEZWNpbWFsKCcxJykKICAgICAgICBSlQAAAFIeAAAAKAMAAABSjQAAAFInAAAAUiwBAAAoAwAAAFIdAAAAUhQBAABSYgEAACgAAAAAKAAAAABzTwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHlSLAEAALUTAABzBAAAAAA3EgFjAQAAAAEAAAACAAAAQwAAAHMKAAAAdAAAZAEAgwEAUygCAAAAc2sAAABKdXN0IHJldHVybnMgMTAsIGFzIHRoaXMgaXMgRGVjaW1hbCwgOikKCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yYWRpeCgpCiAgICAgICAgRGVjaW1hbCgnMTAnKQogICAgICAgIGkKAAAAKAEAAABSAAAAACgBAAAAUh0AAAAoAAAAACgAAAAAc08AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5UnEBAADvEwAAcwIAAAAABmMDAAAABAAAAAQAAABDAAAAc04AAAB0AAB8AQBkAQB0AQCDAQF9AQB8AQBqAgB8AgBkAgB8AACDAQF9AwB8AwB0AwBrCAByRgB0BABkAwB8AgAWgwEAggEAbgQAfAMAU2QEAFMoBQAAAHMWBQAAUmV0dXJucyB0aGUgcmVtYWluZGVyIGZyb20gaW50ZWdlciBkaXZpc2lvbi4KCiAgICAgICAgVGhlIHJlc3VsdCBpcyB0aGUgcmVzaWR1ZSBvZiB0aGUgZGl2aWRlbmQgYWZ0ZXIgdGhlIG9wZXJhdGlvbiBvZgogICAgICAgIGNhbGN1bGF0aW5nIGludGVnZXIgZGl2aXNpb24gYXMgZGVzY3JpYmVkIGZvciBkaXZpZGUtaW50ZWdlciwgcm91bmRlZAogICAgICAgIHRvIHByZWNpc2lvbiBkaWdpdHMgaWYgbmVjZXNzYXJ5LiAgVGhlIHNpZ24gb2YgdGhlIHJlc3VsdCwgaWYKICAgICAgICBub24temVybywgaXMgdGhlIHNhbWUgYXMgdGhhdCBvZiB0aGUgb3JpZ2luYWwgZGl2aWRlbmQuCgogICAgICAgIFRoaXMgb3BlcmF0aW9uIHdpbGwgZmFpbCB1bmRlciB0aGUgc2FtZSBjb25kaXRpb25zIGFzIGludGVnZXIgZGl2aXNpb24KICAgICAgICAodGhhdCBpcywgaWYgaW50ZWdlciBkaXZpc2lvbiBvbiB0aGUgc2FtZSB0d28gb3BlcmFuZHMgd291bGQgZmFpbCwgdGhlCiAgICAgICAgcmVtYWluZGVyIGNhbm5vdCBiZSBjYWxjdWxhdGVkKS4KCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXIoRGVjaW1hbCgnMi4xJyksIERlY2ltYWwoJzMn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Y29lZmZpY2llbnQgb2YgdGhlIGZpcnN0IG9wZXJhbmQuICBUaGUgbnVtYmVyIG9mIHBsYWNlcyBvZgogICAgICAgIHJvdGF0aW9uIGlzIHRha2VuIGZyb20gdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBzZWNvbmQgb3BlcmFuZCwKICAgICAgICB3aXRoIHRoZSByb3RhdGlvbiBiZWluZyB0byB0aGUgbGVmdCBpZiB0aGUgc2Vjb25kIG9wZXJhbmQgaXMKICAgICAgICBwb3NpdGl2ZSBvciB0byB0aGUgcmlnaHQgb3RoZXJ3aXNlLgoKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJvdGF0ZShEZWNpbWFsKCczNCcpLCBEZWNpbWFsKCc4JykpCiAgICAgICAgRGVjaW1hbCgnNDAwMDAwMDAzJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJvdGF0ZShEZWNpbWFsKCcxMicpLCBEZWNpbWFsKCc5JykpCiAgICAgICAgRGVjaW1hbCgnMTInKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucm90YXRlKERlY2ltYWwoJzEyMzQ1Njc4OScpLCBEZWNpbWFsKCctMicpKQogICAgICAgIERlY2ltYWwoJzg5MTIzNDU2NycpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yb3RhdGUoRGVjaW1hbCgnMTIzNDU2Nzg5JyksIERlY2ltYWwoJzAnKSkKICAgICAgICBEZWNpbWFsKCcxMjM0NTY3ODknKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucm90YXRlKERlY2ltYWwoJzEyMzQ1Njc4OScpLCBEZWNpbWFsKCcrMicpKQogICAgICAgIERlY2ltYWwoJzM0NTY3ODkxMicpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yb3RhdGUoMTMzMzMzMywgMSkKICAgICAgICBEZWNpbWFsKCcxMzMzMzMzMCcpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yb3RhdGUoRGVjaW1hbCgxMzMzMzMzKSwgMSkKICAgICAgICBEZWNpbWFsKCcxMzMzMzMzMCcpCiAgICAgICAgPj4+IEV4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emUoKSBvcGVyYXRpb24gdXNpbmcgdGhlIGdpdmVuIG9wZXJhbmQgYXMgdGhlCiAgICAgICAgbGVmdC1oYW5kLW9wZXJhbmQsIDFFKzAgYXMgdGhlIHJpZ2h0LWhhbmQtb3BlcmFuZCwgYW5kIHRoZSBwcmVjaXNpb24KICAgICAgICBvZiB0aGUgb3BlcmFuZCBhcyB0aGUgcHJlY2lzaW9uIHNldHRpbmc7IEluZXhhY3QgYW5kIFJvdW5kZWQgZmxhZ3MKICAgICAgICBhcmUgYWxsb3dlZCBpbiB0aGlzIG9wZXJhdGlvbi4gIFRoZSByb3VuZGluZyBtb2RlIGlzIHRha2VuIGZyb20gdGhlCiAgICAgICAgY29udGV4dC4KCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF9leGFjdChEZWNpbWFsKCcyLjEnKSkKICAgICAgICBEZWNpbWFsKCcyJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX2V4YWN0KERlY2ltYWwoJzEwMCcpKQogICAgICAgIERlY2ltYWwoJzEwMCcpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF9leGFjdChEZWNpbWFsKCcxMDAuMCcpKQogICAgICAgIERlY2ltYWwoJzEwMCcpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF9leGFjdChEZWNpbWFsKCcxMDEuNScpKQogICAgICAgIERlY2ltYWwoJzEwMicpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF9leGFjdChEZWNpbWFsKCctMTAxLjUnKSkKICAgICAgICBEZWNpbWFsKCctMTAyJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX2V4YWN0KERlY2ltYWwoJzEwRSs1JykpCiAgICAgICAgRGVjaW1hbCgnMS4wRSs2JykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX2V4YWN0KERlY2ltYWwoJzcuODlFKzc3JykpCiAgICAgICAgRGVjaW1hbCgnNy44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b25uZWdhdGl2ZSBpbnRlZ2VyIGdpdmluZyBwcmVjaXNpb24sIG9yIE5vbmUKICAgICAgdHlwZTogb25lIG9mIHRoZSBjaGFyYWN0ZXJzICdlRWZGZ0clJywgb3IgTm9uZQogICAgICB1bmljb2RlOiBib29sZWFuIChhbHdheXMgVHJ1ZSBmb3IgUHl0aG9uIDMueCkKCiAgICBzGgAAAEludmFsaWQgZm9ybWF0IHNwZWNpZmllcjogdAQAAABmaWxsdAUAAABhbGlnbnQHAAAAemVyb3BhZHM3AAAARmlsbCBjaGFyYWN0ZXIgY29uZmxpY3RzIHdpdGggJzAnIGluIGZvcm1hdCBzcGVjaWZpZXI6IHMyAAAAQWxpZ25tZW50IGNvbmZsaWN0cyB3aXRoICcwJyBpbiBmb3JtYXQgc3BlY2lmaWVyOiB0AQAAACB0AQAAAD5SLQAAAFJGAAAAdAwAAABtaW5pbXVtd2lkdGhSRQAAAFKFAQAAaQAAAABSfQEAAFKHAQAAaQEAAABSIwAAAFKCAQAAdA0AAAB0aG91c2FuZHNfc2Vwc0oAAABFeHBsaWNpdCB0aG91c2FuZHMgc2VwYXJhdG9yIGNvbmZsaWN0cyB3aXRoICduJyB0eXBlIGluIGZvcm1hdCBzcGVjaWZpZXI6IHQIAAAAZ3JvdXBpbmd0DQAAAGRlY2ltYWxfcG9pbnRSSQAAAGkDAAAAUqQAAAB0BwAAAHVuaWNvZGVOKAoAAAB0HQAAAF9wYXJzZV9mb3JtYXRfc3BlY2lmaWVyX3JlZ2V4dAUAAABtYXRjaFJAAAAAUmAAAAB0CQAAAGdyb3VwZGljdFJHAAAAdAcAAABfbG9jYWxldAoAAABsb2NhbGVjb252UlEAAABS9QEAACgGAAAAdAsAAABmb3JtYXRfc3BlY1KBAQAAUmkAAAB0CwAAAGZvcm1hdF9kaWN0UuwBAABS7QEAACgAAAAAKAAAAABzTwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHlSiAEAAEQXAABzUAAAAAAUDwEMARMDDAQKAQoBFAEKAQwBBgENAQwBBgEQARAEEAMQAQ0DGgEQARcEEAEgARAEEAIK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c2VwYXJhdG9ycyBpbnRvIGEgZGlnaXQgc3RyaW5nLgoKICAgIHNwZWMgaXMgYSBkaWN0aW9uYXJ5IHdob3NlIGtleXMgc2hvdWxkIGluY2x1ZGUgJ3Rob3VzYW5kc19zZXAnIGFuZAogICAgJ2dyb3VwaW5nJzsgdHlwaWNhbGx5IGl0J3MgdGhlIHJlc3VsdCBvZiBwYXJzaW5nIHRoZSBmb3JtYXQKICAgIHNwZWNpZmllciB1c2luZyBfcGFyc2VfZm9ybWF0X3NwZWNpZmllci4KCiAgICBUaGUgbWluX3dpZHRoIGtleXdvcmQgYXJndW1lbnQgZ2l2ZXMgdGhlIG1pbmltdW0gbGVuZ3RoIG9mIHRoZQogICAgcmVzdWx0LCB3aGljaCB3aWxsIGJlIHBhZGRlZCBvbiB0aGUgbGVmdCB3aXRoIHplcm9zIGlmIG5lY2Vzc2FyeS4KCiAgICBJZiBuZWNlc3NhcnksIHRoZSB6ZXJvIHBhZGRpbmcgYWRkcyBhbiBleHRyYSAnMCcgb24gdGhlIGxlZnQgdG8KICAgIGF2b2lkIGEgbGVhZGluZyB0aG91c2FuZHMgc2VwYXJhdG9yLiAgRm9yIGV4YW1wbGUsIGluc2VydGluZwogICAgY29tbWFzIGV2ZXJ5IHRocmVlIGRpZ2l0cyBpbiAnMTIzNDU2Jywgd2l0aCBtaW5fd2lkdGg9OCwgZ2l2ZXMKICAgICcwLDEyMyw0NTYnLCBldmVuIHRob3VnaCB0aGF0IGhhcyBsZW5ndGggOS4KCiAgICBS8gEAAFLzAQAAaQAAAABzHwAAAGdyb3VwIGxlbmd0aCBzaG91bGQgYmUgcG9zaXRpdmVpAQAAAFJFAAAAKAgAAABSBgIAAFJgAAAAUrQAAABStQAAAFJYAAAAUmEAAABSYgAAAHQIAAAAcmV2ZXJzZWQoBwAAAFJsAAAAUo0BAAB0CQAAAG1pbl93aWR0aHQDAAAAc2VwUvMBAAB0BgAAAGdyb3Vwc1I2AQAAKAAAAAAoAAAAAHNPAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weXQVAAAAX2luc2VydF90aG91c2FuZHNfc2Vw0BcA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