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SABk4wCEAABaSQBk5ACEAABaSgBlSQCDAAABZUoAgwAAAWVLAIMAAAFuAABkAwBTKOUAAABznQ0AAApUdXJ0bGUgZ3JhcGhpY3MgaXMgYSBwb3B1bGFyIHdheSBmb3IgaW50cm9kdWNpbmcgcHJvZ3JhbW1pbmcgdG8Ka2lkcy4gSXQgd2FzIHBhcnQgb2YgdGhlIG9yaWdpbmFsIExvZ28gcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgZGV2ZWxvcGVkCmJ5IFdhbGx5IEZldXJ6aWcgYW5kIFNleW1vdXIgUGFwZXJ0IGluIDE5NjYuCgpJbWFnaW5lIGEgcm9ib3RpYyB0dXJ0bGUgc3RhcnRpbmcgYXQgKDAsIDApIGluIHRoZSB4LXkgcGxhbmUuIEFmdGVyIGFuIGBgaW1wb3J0IHR1cnRsZWBgLCBnaXZlIGl0CnRoZSBjb21tYW5kIHR1cnRsZS5mb3J3YXJkKDE1KSwgYW5kIGl0IG1vdmVzIChvbi1zY3JlZW4hKSAxNSBwaXhlbHMgaW4KdGhlIGRpcmVjdGlvbiBpdCBpcyBmYWNpbmcsIGRyYXdpbmcgYSBsaW5lIGFzIGl0IG1vdmVzLiBHaXZlIGl0IHRoZQpjb21tYW5kIHR1cnRsZS5yaWdodCgyNSksIGFuZCBpdCByb3RhdGVzIGluLXBsYWNlIDI1IGRlZ3JlZXMgY2xvY2t3aXNlLgoKQnkgY29tYmluaW5nIHRvZ2V0aGVyIHRoZXNlIGFuZCBzaW1pbGFyIGNvbW1hbmRzLCBpbnRyaWNhdGUgc2hhcGVzIGFuZApwaWN0dXJlcyBjYW4gZWFzaWx5IGJlIGRyYXduLgoKLS0tLS0gdHVydGxlLnB5CgpUaGlzIG1vZHVsZSBpcyBhbiBleHRlbmRlZCByZWltcGxlbWVudGF0aW9uIG9mIHR1cnRsZS5weSBmcm9tIHRoZQpQeXRob24gc3RhbmRhcmQgZGlzdHJpYnV0aW9uIHVwIHRvIFB5dGhvbiAyLjUuIChTZWU6IGh0dHA6Ly93d3cucHl0aG9uLm9yZykKCkl0IHRyaWVzIHRvIGtlZXAgdGhlIG1lcml0cyBvZiB0dXJ0bGUucHkgYW5kIHRvIGJlIChuZWFybHkpIDEwMCUKY29tcGF0aWJsZSB3aXRoIGl0LiBUaGlzIG1lYW5zIGluIHRoZSBmaXJzdCBwbGFjZSB0byBlbmFibGUgdGhlCmxlYXJuaW5nIHByb2dyYW1tZXIgdG8gdXNlIGFsbCB0aGUgY29tbWFuZHMsIGNsYXNzZXMgYW5kIG1ldGhvZHMKaW50ZXJhY3RpdmVseSB3aGVuIHVzaW5nIHRoZSBtb2R1bGUgZnJvbSB3aXRoaW4gSURMRSBydW4gd2l0aAp0aGUgLW4gc3dpdGNoLgoKUm91Z2hseSBpdCBoYXMgdGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhZGRlZDoKCi0gQmV0dGVyIGFuaW1hdGlvbiBvZiB0aGUgdHVydGxlIG1vdmVtZW50cywgZXNwZWNpYWxseSBvZiB0dXJuaW5nIHRoZQogIHR1cnRsZS4gU28gdGhlIHR1cnRsZXMgY2FuIG1vcmUgZWFzaWx5IGJlIHVzZWQgYXMgYSB2aXN1YWwgZmVlZGJhY2sKICBpbnN0cnVtZW50IGJ5IHRoZSAoYmVnaW5uaW5nKSBwcm9ncmFtbWVyLgoKLSBEaWZmZXJlbnQgdHVydGxlIHNoYXBlcywgZ2lmLWltYWdlcyBhcyB0dXJ0bGUgc2hhcGVzLCB1c2VyIGRlZmluZWQKICBhbmQgdXNlciBjb250cm9sbGFibGUgdHVydGxlIHNoYXBlcywgYW1vbmcgdGhlbSBjb21wb3VuZAogIChtdWx0aWNvbG9yZWQpIHNoYXBlcy4gVHVydGxlIHNoYXBlcyBjYW4gYmUgc3RyZXRjaGVkIGFuZCB0aWx0ZWQsIHdoaWNoCiAgbWFrZXMgdHVydGxlcyB2ZXJ5IHZlcnNhdGlsZSBnZW9tZXRyaWNhbCBvYmplY3RzLgoKLSBGaW5lIGNvbnRyb2wgb3ZlciB0dXJ0bGUgbW92ZW1lbnQgYW5kIHNjcmVlbiB1cGRhdGVzIHZpYSBkZWxheSgpLAogIGFuZCBlbmhhbmNlZCB0cmFjZXIoKSBhbmQgc3BlZWQoKSBtZXRob2RzLgoKLSBBbGlhc2VzIGZvciB0aGUgbW9zdCBjb21tb25seSB1c2VkIGNvbW1hbmRzLCBsaWtlIGZkIGZvciBmb3J3YXJkIGV0Yy4sCiAgZm9sbG93aW5nIHRoZSBlYXJseSBMb2dvIHRyYWRpdGlvbnMuIFRoaXMgcmVkdWNlcyB0aGUgYm9yaW5nIHdvcmsgb2YKICB0eXBpbmcgbG9uZyBzZXF1ZW5jZXMgb2YgY29tbWFuZHMsIHdoaWNoIG9mdGVuIG9jY3VyIGluIGEgbmF0dXJhbCB3YXkKICB3aGVuIGtpZHMgdHJ5IHRvIHByb2dyYW0gZmFuY3kgcGljdHVyZXMgb24gdGhlaXIgZmlyc3QgZW5jb3VudGVyIHdpdGgKICB0dXJ0bGUgZ3JhcGhpY3MuCgotIFR1cnRsZXMgbm93IGhhdmUgYW4gdW5kbygpLW1ldGhvZCB3aXRoIGNvbmZpZ3VyYWJsZSB1bmRvLWJ1ZmZlci4KCi0gU29tZSBzaW1wbGUgY29tbWFuZHMvbWV0aG9kcyBmb3IgY3JlYXRpbmcgZXZlbnQgZHJpdmVuIHByb2dyYW1zCiAgKG1vdXNlLSwga2V5LSwgdGltZXItZXZlbnRzKS4gRXNwZWNpYWxseSB1c2VmdWwgZm9yIHByb2dyYW1taW5nIGdhbWVzLgoKLSBBIHNjcm9sbGFibGUgQ2FudmFzIGNsYXNzLiBUaGUgZGVmYXVsdCBzY3JvbGxhYmxlIENhbnZhcyBjYW4gYmUKICBleHRlbmRlZCBpbnRlcmFjdGl2ZWx5IGFzIG5lZWRlZCB3aGlsZSBwbGF5aW5nIGFyb3VuZCB3aXRoIHRoZSB0dXJ0bGUocykuCgotIEEgVHVydGxlU2NyZWVuIGNsYXNzIHdpdGggbWV0aG9kcyBjb250cm9sbGluZyBiYWNrZ3JvdW5kIGNvbG9yIG9yCiAgYmFja2dyb3VuZCBpbWFnZSwgd2luZG93IGFuZCBjYW52YXMgc2l6ZSBhbmQgb3RoZXIgcHJvcGVydGllcyBvZiB0aGUKICBUdXJ0bGVTY3JlZW4uCgotIFRoZXJlIGlzIGEgbWV0aG9kLCBzZXR3b3JsZGNvb3JkaW5hdGVzKCksIHRvIGluc3RhbGwgYSB1c2VyIGRlZmluZWQKICBjb29yZGluYXRlLXN5c3RlbSBmb3IgdGhlIFR1cnRsZVNjcmVlbi4KCi0gVGhlIGltcGxlbWVudGF0aW9uIHVzZXMgYSAyLXZlY3RvciBjbGFzcyBuYW1lZCBWZWMyRCwgZGVyaXZlZCBmcm9tIHR1cGxlLgogIFRoaXMgY2xhc3MgaXMgcHVibGljLCBzbyBpdCBjYW4gYmUgaW1wb3J0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uIHByb2dyYW1tZXIsCiAgd2hpY2ggbWFrZXMgY2VydGFpbiB0eXBlcyBvZiBjb21wdXRhdGlvbnMgdmVyeSBuYXR1cmFsIGFuZCBjb21wYWN0LgoKLSBBcHBlYXJhbmNlIG9mIHRoZSBUdXJ0bGVTY3JlZW4gYW5kIHRoZSBUdXJ0bGVzIGF0IHN0YXJ0dXAvaW1wb3J0IGNhbiBiZQogIGNvbmZpZ3VyZWQgYnkgbWVhbnMgb2YgYSB0dXJ0bGUuY2ZnIGNvbmZpZ3VyYXRpb24gZmlsZS4KICBUaGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIG1pbWljcyB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgb2xkIHR1cnRsZSBtb2R1bGUuCgotIElmIGNvbmZpZ3VyZWQgYXBwcm9wcmlhdGVseSB0aGUgbW9kdWxlIHJlYWRzIGluIGRvY3N0cmluZ3MgZnJvbSBhIGRvY3N0cmluZwogIGRpY3Rpb25hcnkgaW4gc29tZSBkaWZmZXJlbnQgbGFuZ3VhZ2UsIHN1cHBsaWVkIHNlcGFyYXRlbHkgIGFuZCByZXBsYWNlcwogIHRoZSBFbmdsaXNoIG9uZXMgYnkgdGhvc2UgcmVhZCBpbi4gVGhlcmUgaXMgYSB1dGlsaXR5IGZ1bmN0aW9uCiAgd3JpdGVfZG9jc3RyaW5nZGljdCgpIHRvIHdyaXRlIGEgZGljdGlvbmFyeSB3aXRoIHRoZSBvcmlnaW5hbCAoRW5nbGlzaCkKICBkb2NzdHJpbmdzIHRvIGRpc2MsIHNvIGl0IGNhbiBzZXJ2ZSBhcyBhIHRlbXBsYXRlIGZvciB0cmFuc2xhdGlvbnMuCgpCZWhpbmQgdGhlIHNjZW5lcyB0aGVyZSBhcmUgc29tZSBmZWF0dXJlcyBpbmNsdWRlZCB3aXRoIHBvc3NpYmxlCmV4dGVuc2lvbnMgaW4gbWluZC4gVGhlc2Ugd2lsbCBiZSBjb21tZW50ZWQgYW5kIGRvY3VtZW50ZWQgZWxzZXdoZXJlLgoKczUAAAB0dXJ0bGUgMS4wYjEgLSBmb3IgUHl0aG9uIDIuNiAgIC0gIDMwLiA1LiAyMDA4LCAxODowOGn/////TigDAAAAdAYAAABpc2ZpbGV0BQAAAHNwbGl0dAQAAABqb2luKAEAAAB0CAAAAGRlZXBjb3B5KAEAAAB0AQAAACp0DgAAAFNjcm9sbGVkQ2FudmFzdAwAAABUdXJ0bGVTY3JlZW50BgAAAFNjcmVlbnQJAAAAUmF3VHVydGxldAYAAABUdXJ0bGV0BgAAAFJhd1BlbnQDAAAAUGVudAUAAABTaGFwZXQFAAAAVmVjMkR0CAAAAGFkZHNoYXBldAcAAABiZ2NvbG9ydAUAAABiZ3BpY3QDAAAAYnlldAsAAABjbGVhcnNjcmVlbnQJAAAAY29sb3Jtb2RldAUAAABkZWxheXQLAAAAZXhpdG9uY2xpY2t0CQAAAGdldGNhbnZhc3QJAAAAZ2V0c2hhcGVzdAYAAABsaXN0ZW50BAAAAG1vZGV0BQAAAG9ua2V5dA0AAABvbnNjcmVlbmNsaWNrdAcAAABvbnRpbWVydA4AAAByZWdpc3Rlcl9zaGFwZXQLAAAAcmVzZXRzY3JlZW50CgAAAHNjcmVlbnNpemV0BQAAAHNldHVwdBMAAABzZXR3b3JsZGNvb3JkaW5hdGVzdAUAAAB0aXRsZXQGAAAAdHJhY2VydAcAAAB0dXJ0bGVzdAYAAAB1cGRhdGV0DQAAAHdpbmRvd19oZWlnaHR0DAAAAHdpbmRvd193aWR0aHQEAAAAYmFja3QIAAAAYmFja3dhcmR0CgAAAGJlZ2luX2ZpbGx0CgAAAGJlZ2luX3BvbHl0AgAAAGJrdAYAAABjaXJjbGV0BQAAAGNsZWFydAoAAABjbGVhcnN0YW1wdAsAAABjbGVhcnN0YW1wc3QFAAAAY2xvbmV0BQAAAGNvbG9ydAcAAABkZWdyZWVzdAgAAABkaXN0YW5jZXQDAAAAZG90dAQAAABkb3dudAgAAABlbmRfZmlsbHQIAAAAZW5kX3BvbHl0AgAAAGZkdAQAAABmaWxsdAkAAABmaWxsY29sb3J0BwAAAGZvcndhcmR0CAAAAGdldF9wb2x5dAYAAABnZXRwZW50CQAAAGdldHNjcmVlbnQJAAAAZ2V0dHVydGxldAQAAABnb3RvdAcAAABoZWFkaW5ndAoAAABoaWRldHVydGxldAQAAABob21ldAIAAABodHQGAAAAaXNkb3dudAkAAABpc3Zpc2libGV0BAAAAGxlZnR0AgAAAGx0dAcAAABvbmNsaWNrdAYAAABvbmRyYWd0CQAAAG9ucmVsZWFzZXQCAAAAcGR0AwAAAHBlbnQIAAAAcGVuY29sb3J0BwAAAHBlbmRvd250BwAAAHBlbnNpemV0BQAAAHBlbnVwdAMAAABwb3N0CAAAAHBvc2l0aW9udAIAAABwdXQHAAAAcmFkaWFuc3QFAAAAcmlnaHR0BQAAAHJlc2V0dAoAAAByZXNpemVtb2RldAIAAABydHQEAAAAc2V0aHQKAAAAc2V0aGVhZGluZ3QGAAAAc2V0cG9zdAsAAABzZXRwb3NpdGlvbnQMAAAAc2V0dGlsdGFuZ2xldA0AAABzZXR1bmRvYnVmZmVydAQAAABzZXR4dAQAAABzZXR5dAUAAABzaGFwZXQJAAAAc2hhcGVzaXpldAoAAABzaG93dHVydGxldAUAAABzcGVlZHQCAAAAc3R0BQAAAHN0YW1wdAQAAAB0aWx0dAkAAAB0aWx0YW5nbGV0BwAAAHRvd2FyZHN0CgAAAHR1cnRsZXNpemV0BAAAAHVuZG90EQAAAHVuZG9idWZmZXJlbnRyaWVzdAIAAAB1cHQFAAAAd2lkdGh0BQAAAHdyaXRldAQAAAB4Y29ydAQAAAB5Y29ydBMAAAB3cml0ZV9kb2NzdHJpbmdkaWN0dAQAAABkb25ldAgAAABtYWlubG9vcHQEAAAAYWNvc3QEAAAAYXNpbnQEAAAAYXRhbnQFAAAAYXRhbjJ0BAAAAGNlaWx0AwAAAGNvc3QEAAAAY29zaHQBAAAAZXQDAAAAZXhwdAQAAABmYWJzdAUAAABmbG9vcnQEAAAAZm1vZHQFAAAAZnJleHB0BQAAAGh5cG90dAUAAABsZGV4cHQDAAAAbG9ndAUAAABsb2cxMHQEAAAAbW9kZnQCAAAAcGl0AwAAAHBvd3QDAAAAc2ludAQAAABzaW5odAQAAABzcXJ0dAMAAAB0YW50BAAAAHRhbmhnAAAAAAAA4D9nAAAAAAAA6D90BgAAAGhlaWdodGmQAQAAdAkAAABjYW52d2lkdGhpLAEAAHQKAAAAY2FudmhlaWdodHQJAAAAbGVmdHJpZ2h0dAkAAAB0b3Bib3R0b210CAAAAHN0YW5kYXJkZwAAAAAAAPA/aQoAAABp6AMAAHQOAAAAdW5kb2J1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AGkKAAAAdAUAAABhcnJvd2kQAAAAaf7///9pDgAAAGn/////afz///9pBwAAAGn5////aQkAAABp9////2kIAAAAafr///9pBQAAAGkBAAAAafv///9p/f///2n4////aQQAAABpBgAAAGkCAAAAUp0AAABnhetRuB4FI0BnuB6F61G4CEBnrkfhehQuIEBnhetRuB6FF0BnuB6F61G4CMBnhetRuB6FF8BnrkfhehQuIMBnhetRuB4FI8BnAAAAAAAAAIBnAAAAAAAAJMBSLQAAAHQGAAAAc3F1YXJlZxSuR+F6FBfAZ5qZmZmZGSdAdAgAAAB0cmlhbmdsZVKXAAAAUo8BAABSSAEAAFK6AAAAdAUAAABub3BpY1ITAAAAKAIAAABp9v///2kAAAAAKAIAAABpCgAAAGkAAAAAKAIAAABpAAAAAGkKAAAAKAIAAABpAAAAAGkQAAAAKAIAAABp/v///2kOAAAAKAIAAABp/////2kKAAAAKAIAAABp/P///2kHAAAAKAIAAABp+f///2kJAAAAKAIAAABp9////2kIAAAAKAIAAABp+v///2kFAAAAKAIAAABp+f///2kBAAAAKAIAAABp+////2n9////KAIAAABp+P///2n6////KAIAAABp+v///2n4////KAIAAABp/P///2n7////KAIAAABpAAAAAGn5////KAIAAABpBAAAAGn7////KAIAAABpBgAAAGn4////KAIAAABpCAAAAGn6////KAIAAABpBQAAAGn9////KAIAAABpBwAAAGkBAAAAKAIAAABpBgAAAGkFAAAAKAIAAABpCQAAAGkIAAAAKAIAAABpBwAAAGkJAAAAKAIAAABpBAAAAGkHAAAAKAIAAABpAQAAAGkKAAAAKAIAAABpAgAAAGkOAAAAKAIAAABpCgAAAGkAAAAAKAIAAABnhetRuB4FI0BnuB6F61G4CEAoAgAAAGeuR+F6FC4gQGeF61G4HoUXQCgCAAAAZ4XrUbgehRdAZ65H4XoULiBAKAIAAABnuB6F61G4CEBnhetRuB4FI0AoAgAAAGkAAAAAaQoAAAAoAgAAAGe4HoXrUbgIwGeF61G4HgUjQCgCAAAAZ4XrUbgehRfAZ65H4XoULiBAKAIAAABnrkfhehQuIMBnhetRuB6FF0AoAgAAAGeF61G4HgUjwGe4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AAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9saWItdGsvdHVydGxlLnB5UhMAAABnBAAAcwwAAAAADgwBBwEMARIBDAFjAQAAAAIAAAADAAAAQwAAAHMyAAAAeCsAfAAAagAARF0gAH0BAHwBAGoBAHwAAGoCAIMBAAF8AQBqAwCDAAABcQoAV2QBAFMoAgAAAHOuAAAAUmVzZXQgYWxsIFR1cnRsZXMgb24gdGhlIFNjcmVlbiB0byB0aGVpciBpbml0aWFsIHN0YXRlLgoKICAgICAgICBObyBhcmd1bWVudC4KCiAgICAgICAgRXhhbXBsZSAoZm9yIGEgVHVydGxlU2NyZWVuIGluc3RhbmNlIG5hbWVkIHNjcmVlbik6CiAgICAgICAgPj4+IHNjcmVlbi5yZXNldCgpCiAgICAgICAgTigEAAAAUtABAAB0CAAAAF9zZXRtb2RlUscBAABSWAAAACgCAAAAUskAAABSnQAAACgAAAAAKAAAAABzVAAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvbGliLXRrL3R1cnRsZS5weVJYAAAAfAQAAHMGAAAAAAgQARABYwEAAAABAAAAAQAAAEMAAABzBwAAAHwAAGoAAFMoAQAAAHO7AAAAUmV0dXJuIHRoZSBsaXN0IG9mIHR1cnRsZXMgb24gdGhlIHNjcmVlbi4KCiAgICAgICAgRXhhbXBsZSAoZm9yIGEgVHVydGxlU2NyZWVuIGluc3RhbmNlIG5hbWVkIHNjcmVlbik6CiAgICAgICAgPj4+IHNjcmVlbi50dXJ0bGVzKCkKICAgICAgICBbPHR1cnRsZS5UdXJ0bGUgb2JqZWN0IGF0IDB4MDBFMTFGQjA+XQogICAgICAgICgBAAAAUtABAAAoAQAAAFLJAAAAKAAAAAAoAAAAAHNUAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9saWItdGsvdHVydGxlLnB5UiQAAACIBAAAcwIAAAAAB2MB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AGEFAABzDAAAAAARDAEHAQ8BGQEaAWMEAAAABAAAAAQAAABDAAAAcxMAAAB8AABqAAB8AQB8AgB8AwCDAwBTKAEAAABz1wIAAFJlc2l6ZSB0aGUgY2FudmFzIHRoZSB0dXJ0bGVzIGFyZSBkcmF3aW5nIG9uLgoKICAgICAgICBPcHRpb25hbCBhcmd1bWVudHM6CiAgICAgICAgY2FudndpZHRoIC0tIHBvc2l0aXZlIGludGVnZXIsIG5ldyB3aWR0aCBvZiBjYW52YXMgaW4gcGl4ZWxzCiAgICAgICAgY2FudmhlaWdodCAtLSAgcG9zaXRpdmUgaW50ZWdlciwgbmV3IGhlaWdodCBvZiBjYW52YXMgaW4gcGl4ZWxzCiAgICAgICAgYmcgLS0gY29sb3JzdHJpbmcgb3IgY29sb3ItdHVwbGUsIG5ldyBiYWNrZ3JvdW5kY29sb3IKICAgICAgICBJZiBubyBhcmd1bWVudHMgYXJlIGdpdmVuLCByZXR1cm4gY3VycmVudCAoY2FudmFzd2lkdGgsIGNhbnZhc2hlaWdodCkKCiAgICAgICAgRG8gbm90IGFsdGVyIHRoZSBkcmF3aW5nIHdpbmRvdy4gVG8gb2JzZXJ2ZSBoaWRkZW4gcGFydHMgb2YKICAgICAgICB0aGUgY2FudmFzIHVzZSB0aGUgc2Nyb2xsYmFycy4gKENhbiBtYWtlIHZpc2libGUgdGhvc2UgcGFydHMKICAgICAgICBvZiBhIGRyYXdpbmcsIHdoaWNoIHdlcmUgb3V0c2lkZSB0aGUgY2FudmFzIGJlZm9yZSEpCgogICAgICAgIEV4YW1wbGUgKGZvciBhIFR1cnRsZSBpbnN0YW5jZSBuYW1lZCB0dXJ0bGUpOgogICAgICAgID4+PiB0dXJ0bGUuc2NyZWVuc2l6ZSgyMDAwLDE1MDApCiAgICAgICAgPj4+ICMgZS4gZy4gdG8gc2VhcmNoIGZvciBhbiBlcnJvbmVvdXNseSBlc2NhcGVkIHR1cnRsZSA7LSkKICAgICAgICAoAQAAAFKoAQAAKAQAAABSyQAAAFKRAAAAUpIAAABS+gAAACgAAAAAKAAAAABzVAAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2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YWwpIC0tIGFuIGludGVnZXIKCiAgICAgICAgRHJhdyBhIGNpcmNsZSB3aXRoIGdpdmVuIHJhZGl1cy4gVGhlIGNlbnRlciBpcyByYWRpdXMgdW5pdHMgbGVmdAogICAgICAgIG9mIHRoZSB0dXJ0bGU7IGV4dGVudCAtIGFuIGFuZ2xlIC0gZGV0ZXJtaW5lcyB3aGljaCBwYXJ0IG9mIHRoZQogICAgICAgIGNpcmNsZSBpcyBkcmF3bi4gSWYgZXh0ZW50IGlzIG5vdCBnaXZlbiwgZHJhdyB0aGUgZW50aXJlIGNpcmNsZS4KICAgICAgICBJZiBleHRlbnQgaXMgbm90IGEgZnVsbCBjaXJjbGUsIG9uZSBlbmRwb2ludCBvZiB0aGUgYXJjIGlzIHRoZQogICAgICAgIGN1cnJlbnQgcGVuIHBvc2l0aW9uLiBEcmF3IHRoZSBhcmMgaW4gY291bnRlcmNsb2Nrd2lzZSBkaXJlY3Rpb24KICAgICAgICBpZiByYWRpdXMgaXMgcG9zaXRpdmUsIG90aGVyd2lzZSBpbiBjbG9ja3dpc2UgZGlyZWN0aW9uLiBGaW5hbGx5CiAgICAgICAgdGhlIGRpcmVjdGlvbiBvZiB0aGUgdHVydGxlIGlzIGNoYW5nZWQgYnkgdGhlIGFtb3VudCBvZiBleHRlbnQuCgogICAgICAgIEFzIHRoZSBjaXJjbGUgaXMgYXBwcm94aW1hdGVkIGJ5IGFuIGluc2NyaWJlZCByZWd1bGFyIHBvbHlnb24sCiAgICAgICAgc3RlcHMgZGV0ZXJtaW5lcyB0aGUgbnVtYmVyIG9mIHN0ZXBzIHRvIHVzZS4gSWYgbm90IGdpdmVuLAogICAgICAgIGl0IHdpbGwgYmUgY2FsY3VsYXRlZCBhdXRvbWF0aWNhbGx5LiBNYXliZSB1c2VkIHRvIGRyYXcgcmVndWxhcgogICAgICAgIHBvbHlnb25zLgoKICAgICAgICBjYWxsOiBjaXJjbGUocmFkaXVzKSAgICAgICAgICAgICAgICAgICMgZnVsbCBjaXJjbGUKICAgICAgICAtLW9yOiBjaXJjbGUocmFkaXVzLCBleHRlbnQpICAgICAgICAgICMgYXJjCiAgICAgICAgLS1vcjogY2lyY2xlKHJhZGl1cywgZXh0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b3Igc2V0IHRoZSB0dXJ0bGUncyBzcGVlZC4KCiAgICAgICAgT3B0aW9uYWwgYXJndW1lbnQ6CiAgICAgICAgc3BlZWQgLS0gYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2UgMC4uMTAgb3IgYSBzcGVlZHN0cmluZyAoc2VlIGJlbG93KQoKICAgICAgICBTZXQgdGhlIHR1cnRsZSdzIHNwZWVkIHRvIGFuIGludGVnZXIgdmFsdWUgaW4gdGhlIHJhbmdlIDAgLi4gMTAuCiAgICAgICAgSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW46IHJldHVybiBjdXJyZW50IHNwZWVkLgoKICAgICAgICBJZiBpbnB1dCBpcyBhIG51bWJlciBncmVhdGVyIHRoYW4gMTAgb3Igc21hbGxlciB0aGFuIDAuNSwKICAgICAgICBzcGVlZCBpcyBzZXQgdG8gMC4KICAgICAgICBTcGVlZHN0cmluZ3MgIGFyZSBtYXBwZWQgdG8gc3BlZWR2YWx1ZXMgaW4gdGhlIGZvbGxvd2luZyB3YXk6CiAgICAgICAgICAgICdmYXN0ZXN0JyA6ICAwCiAgICAgICAgICAgICdmYXN0JyAgICA6ICAxMAogICAgICAgICAgICAnbm9ybWFsJyAgOiAgNgogICAgICAgICAgICAnc2xvdycgICAgOiAgMwogICAgICAgICAgICAnc2xvd2VzdCcgOiAgMQogICAgICAgIHNwZWVkcyBmcm9tIDEgdG8gMTAgZW5mb3JjZSBpbmNyZWFzaW5nbHkgZmFzdGVyIGFuaW1hdGlvbiBvZgogICAgICAgIGxpbmUgZHJhd2luZyBhbmQgdHVydGxlIHR1cm5pbmcuCgogICAgICAgIEF0dGVudGlvbjoKICAgICAgICBzcGVlZCA9IDAgOiAqbm8qIGFuaW1hdGlvbiB0YWtlcyBwbGFjZS4gZm9yd2FyZC9iYWNrIG1ha2VzIHR1cnRsZSBqdW1wCiAgICAgICAgYW5kIGxpa2V3aXNlIGxlZnQvcmlnaHQgbWFrZSB0aGUgdHVydGxlIHR1cm4gaW5zdGFudGx5LgoKICAgICAgICBFeGFtcGxlIChmb3IgYSBUdXJ0bGUgaW5zdGFuY2UgbmFtZWQgdHVydGxlKToKICAgICAgICA+Pj4g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dHVybiB0aGUgY3VycmVudCBmaWxsY29sb3IgYXMgY29sb3Igc3BlY2lmaWNhdGlvbiBzdHJpbmcsCiAgICAgICAgICAgIHBvc3NpYmx5IGluIGhleC1udW1iZXIgZm9ybWF0IChzZWUgZXhhbXBsZSkuCiAgICAgICAgICAgIE1heSBiZSB1c2VkIGFzIGlucHV0IHRvIGFub3RoZXIgY29sb3IvcGVuY29sb3IvZmlsbGNvbG9yIGNhbGwuCiAgICAgICAgICAtIGZpbGxjb2xvcihjb2xvcnN0cmluZykKICAgICAgICAgICAgcyBpcyBhIFRrIGNvbG9yIHNwZWNpZmljYXRpb24gc3RyaW5nLCBzdWNoIGFzICJyZWQiIG9yICJ5ZWxsb3ciCiAgICAgICAgICAtIGZpbGxjb2xvcigociwgZywgYikpCiAgICAgICAgICAgICphIHR1cGxlKiBvZiByLCBnLCBhbmQgYiwgd2hpY2ggcmVwcmVzZW50LCBhbiBSR0IgY29sb3IsCiAgICAgICAgICAgIGFuZCBlYWNoIG9mIHIsIGcsIGFuZCBiIGFyZSBpbiB0aGUgcmFuZ2UgMC4uY29sb3Jtb2RlLAogICAgICAgICAgICB3aGVyZSBjb2xvcm1vZGUgaXMgZWl0aGVyIDEuMCBvciAyNTUKICAgICAgICAgIC0gZmlsbGNvbG9yKHIsIGcsIGIpCiAgICAgICAgICAgIHIsIGcsIGFuZCBiIHJlcHJlc2VudCBhbiBSR0IgY29sb3IsIGFuZCBlYWNoIG9mIHIsIGcsIGFuZCBiCiAgICAgICAgICAgIGFyZSBpbiB0aGUgcmFuZ2UgMC4uY29sb3Jtb2RlCgogICAgICAgIElmIHR1cnRsZXNoYXBlIGlzIGEgcG9seWdvbiwgdGhlIGludGVyaW9yIG9mIHRoYXQgcG9seWdvbiBpcyBkcmF3bgogICAgICAgIHdpdGggdGhlIG5ld2x5IHNldCBmaWxsY29sb3IuCgogICAgICAgIEV4YW1wbGUgKGZvciBhIFR1cnRsZSBpbnN0YW5jZSBuYW1lZCB0dXJ0bGUpOgogICAgICAgID4+PiB0dXJ0bGUuZmlsbGNvbG9yKCd2aW9sZXQnKQogICAgICAgID4+PiBjb2wgPSB0dXJ0bGUucGVu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IGxpc3RlZCBrZXlzIGFzIGtleXdvcmRzLgoKICAgICAgICBSZXR1cm4gb3Igc2V0IHRoZSBwZW4ncyBhdHRyaWJ1dGVzIGluIGEgJ3Blbi1kaWN0aW9uYXJ5JwogICAgICAgIHdpdGggdGhlIGZvbGxvd2luZyBrZXkvdmFsdWUgcGFpcnM6CiAgICAgICAgICAgInNob3duIiAgICAgIDogICBUcnVlL0ZhbHNlCiAgICAgICAgICAgInBlbmRvd24iICAgIDogICBUcnVlL0ZhbHNlCiAgICAgICAgICAgInBlbmNvbG9yIiAgIDogICBjb2xvci1zdHJpbmcgb3IgY29sb3ItdHVwbGUKICAgICAgICAgICAiZmlsbGNvbG9yIiAgOiAgIGNvbG9yLXN0cmluZyBvciBjb2xvci10dXBsZQogICAgICAgICAgICJwZW5zaXplIiAgICA6ICAgcG9zaXRpdmUgbnVtYmVyCiAgICAgICAgICAgInNwZWVkIiAgICAgIDogICBudW1iZXIgaW4gcmFuZ2UgMC4uMTAKICAgICAgICAgICAicmVzaXplbW9kZSIgOiAgICJhdXRvIiBvciAidXNlciIgb3IgIm5vcmVzaXplIgogICAgICAgICAgICJzdHJldGNoZmFjdG9yIjogKHBvc2l0aXZlIG51bWJlciwgcG9zaXRpdmUgbnVtYmVyKQogICAgICAgICAgICJvdXRsaW5lIiAgICA6ICAgcG9zaXRpdmUgbnVtYmVyCiAgICAgICAgICAgInRpbHQiICAgICAgIDogICBudW1iZXIKCiAgICAgICAgVGhpcyBkaWN0aW9uYXJ5IGNhbiBiZSB1c2VkIGFzIGFyZ3VtZW50IGZvciBhIHN1YnNlcXVlbnQKICAgICAgICBwZW4oKS1jYWxsIHRvIHJlc3RvcmUgdGhlIGZvcm1lciBwZW4tc3RhdGUuIE1vcmVvdmVyIG9uZQogICAgICAgIG9yIG1vcmUgb2YgdGhlc2UgYXR0cmlidXRlcyBjYW4gYmUgcHJvdmlkZWQgYXMga2V5d29yZC1hcmd1bWVudHMuCiAgICAgICAgVGhpcyBjYW4gYmUgdXNlZCB0byBzZXQgc2V2ZXJhbCBwZW4gYXR0cmlidXRlcyBpbiBvbmUgc3RhdGVtZW50LgoKCiAgICAgICAgRXhhbXBsZXMgKGZvciBhIFR1cnRsZSBpbnN0YW5jZSBuYW1lZCB0dXJ0bGUpOgogICAgICAgID4+PiB0dXJ0bGUucGVuKGZpbGxjb2xvcj0iYmxhY2siLCBwZW5jb2xvcj0icmVkIiwgcGVuc2l6ZT0xMCkKICAgICAgICA+Pj4gdHVydGxlLnBlbigpCiAgICAgICAgeydwZW5zaXplJzogMTAsICdzaG93bic6IFRydWUsICdyZXNpemVtb2RlJzogJ2F1dG8nLCAnb3V0bGluZSc6IDEsCiAgICAgICAgJ3BlbmNvbG9yJzogJ3JlZCcsICdwZW5kb3duJzogVHJ1ZSwgJ2ZpbGxjb2xvcic6ICdibGFjaycsCiAgICAgICAgJ3N0cmV0Y2hmYWN0b3InOiAoMSwxKSwgJ3NwZWVkJzogM30KICAgICAgICA+Pj4gcGVuc3RhdGU9dHVydGxlLnBlbigpCiAgICAgICAgPj4+IHR1cnRsZS5jb2xvcigieWVsbG93IiwiIikKICAgICAgICA+Pj4gdHVydGxlLnBlbnVwKCkKICAgICAgICA+Pj4gdHVydGxlLnBlbigpCiAgICAgICAgeydwZW5zaXplJzogMTAsICdzaG93bic6IFRydWUsICdyZXNpemVtb2RlJzogJ2F1dG8nLCAnb3V0bGluZSc6IDEsCiAgICAgICAgJ3BlbmNvbG9yJzogJ3llbGxvdycsICdwZW5kb3duJzogRmFsc2UsICdmaWxsY29sb3InOiAnJywKICAgICAgICAnc3RyZXRjaGZhY3Rvcic6ICgxLDEpLCAnc3BlZWQnOiAzfQogICAgICAgID4+PiBwLnBlbihwZW5zdGF0ZSwgZmlsbGNvbG9yPSJncmVlbiIpCiAgICAgICAgPj4+IHAucGVuKCkKICAgICAgICB7J3BlbnNpemUnOiAxMCwgJ3Nob3duJzogVHJ1ZSwgJ3Jlc2l6ZW1vZGUnOiAnYXV0bycsICdvdXRsaW5lJzogMSwKICAgICAgICAncGVuY29sb3InOiAncmVkJywgJ3BlbmRvd24nOiBUcnVlLCAnZmlsbGNvbG9yJzogJ2dyZWVuJywKICAgICAgICAnc3RyZXRjaGZhY3Rvcic6ICgxLDEpLCAnc3BlZWQnOiAzfQogICAg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ZXRjaF9sZW4gOiBwb3NpdGl2ZSBudW1iZXIKICAgICAgICAgICBvdXRsaW5lICA6IHBvc2l0aXZlIG51bWJlcgoKICAgICAgICBSZXR1cm4gb3Igc2V0IHRoZSBwZW4ncyBhdHRyaWJ1dGVzIHgveS1zdHJldGNoZmFjdG9ycyBhbmQvb3Igb3V0bGluZS4KICAgICAgICBTZXQgcmVzaXplbW9kZSB0byAidXNlciIuCiAgICAgICAgSWYgYW5kIG9ubHkgaWYgcmVzaXplbW9kZSBpcyBzZXQgdG8gInVzZXIiLCB0aGUgdHVydGxlIHdpbGwgYmUgZGlzcGxheWVkCiAgICAgICAgc3RyZXRjaGVkIGFjY29yZGluZyB0byBpdHMgc3RyZXRjaGZhY3RvcnM6CiAgICAgICAgc3RyZXRjaF93aWQgaXMgc3RyZXRjaGZhY3RvciBwZXJwZW5kaWN1bGFyIHRvIG9yaWVudGF0aW9uCiAgICAgICAgc3RyZXRjaF9sZW4gaXMgc3RyZXRjaGZhY3RvciBpbiBkaXJlY3Rpb24gb2YgdHVydGxlcyBvcmllbnRhdGlvbi4KICAgICAgICBvdXRsaW5lIGRldGVybWluZXMgdGhlIHdpZHRoIG9mIHRoZSBzaGFwZXMncyBvdXRsaW5lLgoKICAgICAgICBFeGFtcGxlcyAoZm9yIGEgVHVydGxlIGluc3RhbmNlIG5hbWVkIHR1cnRsZSk6CiAgICAgICAgPj4+IHR1cnRsZS5yZXNpemVtb2RlKCJ1c2VyIikKICAgICAgICA+Pj4gdHVydGxlLnNoYXBlc2l6ZSg1LCA1LCAxMikKICAgICAgICA+Pj4gdHVydGxlLnNoYXBlc2l6ZShvdXRsaW5lPTgpCiAgICAgICAgaQAAAABSWQAAAFIjAgAAUi4CAABSUgEAAE4oBAAAAFKnAAAAUh8CAABSIQIAAFJOAAAAKAUAAABSyQAAAHQLAAAAc3RyZXRjaF93aWR0CwAAAHN0cmV0Y2hfbGVuUlIBAABSLgIAACgAAAAAKAAAAABzVAAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvbGliLXRrL3R1cnRsZS5weVJkAAAA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bnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2xpYi10ay90dXJ0bGUucHlScQAAAMwMAABzEgAAAAATCQETAQ8BIQEGARIBEwEJAWMBAAAAAQAAAAIAAABDAAAAcxwAAAB8AABqAABnAQB8AABfAQB0AgB8AABfAwBkAQBTKAIAAABzDwEAAFN0YXJ0IHJlY29yZGluZyB0aGUgdmVydGljZXMgb2YgYSBwb2x5Z29uLgoKICAgICAgICBObyBhcmd1bWVudC4KCiAgICAgICAgU3RhcnQgcmVjb3JkaW5nIHRoZSB2ZXJ0aWNlcyBvZiBhIHBvbHlnb24uIEN1cnJlbnQgdHVydGxlIHBvc2l0aW9uCiAgICAgICAgaXMgZmlyc3QgcG9pbnQgb2YgcG9seWdvbi4KCiAgICAgICAgRXhhbXBsZSAoZm9yIGEgVHVydGxlIGluc3RhbmNlIG5hbWVkIHR1cnRsZSk6CiAgICAgICAgPj4+IHR1cnRsZS5iZWdpbl9wb2x5KCkKICAgICAgICBOKAQAAABS+gEAAFJAAgAAUqUAAABSQQIAACgBAAAAUskAAAAoAAAAACgAAAAAc1QAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2xpYi10ay90dXJ0bGUucHlSKwAAAOkMAABzBAAAAAALDwFjAQAAAAEAAAACAAAAQwAAAHMNAAAAdAAAfAAAXwEAZAEAUygCAAAAczcBAABTdG9wIHJlY29yZGluZyB0aGUgdmVydGljZXMgb2YgYSBwb2x5Z29uLgoKICAgICAgICBObyBhcmd1bWVudC4KCiAgICAgICAgU3RvcCByZWNvcmRpbmcgdGhlIHZlcnRpY2VzIG9mIGEgcG9seWdvbi4gQ3VycmVudCB0dXJ0bGUgcG9zaXRpb24gaXMKICAgICAgICBsYXN0IHBvaW50IG9mIHBvbHlnb24uIFRoaXMgd2lsbCBiZSBjb25uZWN0ZWQgd2l0aCB0aGUgZmlyc3QgcG9pbnQuCgogICAgICAgIEV4YW1wbGUgKGZvciBhIFR1cnRsZSBpbnN0YW5jZSBuYW1lZCB0dXJ0bGUpOgogICAgICAgID4+PiB0dXJ0bGUuZW5kX3Bv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KAQAAABSyQAAAFKAAQAAUtIBAABShQEAACgAAAAAKAAAAABzVAAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvbGliLXRrL3R1cnRsZS5weVJMAAAAaw0AAHMEAAAAABYfAWMEAAAABAAAAAUAAABDAAAAcyMAAAB8AABqAABqAQB8AABqAgBqAwB8AQB8AgB8AwCDBAABZAEAUygCAAAAc5ICAABCaW5kIGZ1biB0byBtb3VzZS1tb3ZlIGV2ZW50IG9uIHRoaXMgdHVydGxlIG9uIGNhbnZhcy4KCiAgICAgICAgQXJndW1lbnRzOgogICAgICAgIGZ1biAtLSBhIGZ1bmN0aW9uIHdpdGggdHdvIGFyZ3VtZW50cywgdG8gd2hpY2ggd2lsbCBiZSBhc3NpZ25lZAogICAgICAgICAgICAgICB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIGNsaWNrZWQgcG9pbnQgb24gdGhlIGNhbnZhcy4KICAgICAgICBudW0gLS0gbnVtYmVyIG9mIHRoZSBtb3VzZS1idXR0b24gZGVmYXVsdHMgdG8gMSAobGVmdCBtb3VzZSBidXR0b24pLgoKICAgICAgICBFdmVyeSBzZXF1ZW5jZSBvZiBtb3VzZS1tb3ZlLWV2ZW50cyBvbiBhIHR1cnRsZSBpcyBwcmVjZWRlZCBieSBhCiAgICAgICAgbW91c2UtY2xpY2sgZXZlbnQgb24gdGhhdCB0dXJ0bGUuCgogICAgICAgIEV4YW1wbGUgKGZvciBhIFR1cnRsZSBpbnN0YW5jZSBuYW1lZCB0dXJ0bGUpOgogICAgICAgID4+PiB0dXJ0bGUub25kcmFnKHR1cnRsZS5nb3RvKQoKICAgICAgICBTdWJzZXF1ZW50bHkgY2xpY2tpbmcgYW5kIGRyYWdnaW5nIGEgVHVydGxlIHdpbGwgbW92ZSBpdAogICAgICAgIGFjcm9zcyB0aGUgc2NyZWVuIHRoZXJlYnkgcHJvZHVjaW5nIGhhbmRkcmF3aW5ncyAoaWYgcGVuIGlzCiAgICAgICAgZG93bikuCiAgICAgICAgTigEAAAAUp8AAABSiAEAAFKdAAAAUjwCAAAoBAAAAFLJ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