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IGFueSBgYCctJ2BgIGNoYXJhY3RlcnMgYXJlIHJlcGxhY2VkCiAgICAgICAgd2l0aCBgYCdfJ2BgIG90aGVyIHRoYW4gdGhlIG9uZSBpbiBgYCdkaXN0LWluZm8nYGAgYW5kIHRoZSBvbmUKICAgICAgICBzZXBhcmF0aW5nIHRoZSBuYW1lIGZyb20gdGhlIHZlcnNpb24gbnVtYmVyLgoKICAgICAgICA6cGFyYW1ldGVyIG5hbWU6IGlzIGNvbnZlcnRlZCB0byBhIHN0YW5kYXJkIGRpc3RyaWJ1dGlvbiBuYW1lIGJ5IHJlcGxhY2luZwogICAgICAgICAgICAgICAgICAgICAgICAgYW55IHJ1bnMgb2Ygbm9uLSBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyB3aXRoIGEgc2luZ2xlCiAgICAgICAgICAgICAgICAgICAgICAgICBgYCctJ2BgLgogICAgICAgIDp0eXBlIG5hbWU6IHN0cmluZwogICAgICAgIDpwYXJhbWV0ZXIgdmVyc2lvbjogaXMgY29udmVydGVkIHRvIGEgc3RhbmRhcmQgdmVyc2lvbiBzdHJpbmcuIFNwYWNlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVjb21lIGRvdHMsIGFuZCBhbGwgb3RoZXIgbm9uLWFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXhjZXB0IGRvdHMpIGJlY29tZSBkYXNoZXMsIHdpdGggcnVucyBvZiBtdWx0aXBsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFzaGVzIGNvbmRlbnNlZCB0byBhIHNpbmdsZSBkYXNoLgogICAgICAgIDp0eXBlIHZlcnNpb246IHN0cmluZwogICAgICAgIDpyZXR1cm5zOiBkaXJlY3RvcnkgbmFtZQogICAgICAgIDpydHlwZTogc3RyaW5n+gEt2gFfKQPaB3JlcGxhY2VyUwAAAHJRAAAAKQPaA2Nsc3IfAAAA2gd2ZXJzaW9uciQAAAByJAAAAHIlAAAA2hBkaXN0aW5mb19kaXJuYW1luAAAAHMEAAAAABMMAXohRGlzdHJpYnV0aW9uUGF0aC5kaXN0aW5mb19kaXJu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dGhtLCBpZgogICAgICAgIHNwZWNpZmllZC4KCiAgICAgICAgOnBhcmFtIGRhdGE6IFRoZSBkYXRhIHRvIGJlIGhhc2hlZC4KICAgICAgICA6dHlwZSBkYXRhOiBieXRlcwogICAgICAgIDpwYXJhbSBoYXNoZXI6IFRoZSBuYW1lIG9mIGEgaGFzaCBpbXBsZW1lbnRhdGlvbiwgc3VwcG9ydGVkIGJ5IGhhc2hsaWIsCiAgICAgICAgICAgICAgICAgICAgICAgb3IgYGBOb25lYGAuIEV4YW1wbGVzIG9mIHZhbGlkIHZhbHVlcyBhcmUgYGAnc2hhMSdgYCwKICAgICAgICAgICAgICAgICAgICAgICBgYCdzaGEyMjQnYGAsIGBgJ3NoYTM4NCdgYCwgJ2Bgc2hhMjU2J2BgLCBgYCdtZDUnYGAgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgYGAnc2hhNTEyJ2BgLiBJZiBubyBoYXNoZXIgaXMgc3BlY2lmaWVkLCB0aGUgYGBoYXNoZXJgYAogICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBvZiB0aGUgOmNsYXNzOmBJbnN0YWxsZWREaXN0cmlidXRpb25gIGluc3RhbmNlCiAgICAgICAgICAgICAgICAgICAgICAgaXMgdXNlZC4gSWYgdGhlIGhhc2hlciBpcyBkZXRlcm1pbmVkIHRvIGJlIGBgTm9uZWBgLCBNRDUKICAgICAgICAgICAgICAgICAgICAgICBpcyB1c2VkIGFzIHRoZSBoYXNoaW5nIGFsZ29yaXRobS4KICAgICAgICA6cmV0dXJuczogVGhlIGhhc2ggb2YgdGhlIGRhdGEuIElmIGEgaGFzaGVyIHdhcyBleHBsaWNpdGx5IHNwZWNpZmllZCwKICAgICAgICAgICAgICAgICAgdGhlIHJldHVybmVkIGhhc2ggd2lsbCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBzcGVjaWZpZWQgaGFzaGVyCiAgICAgICAgICAgICAgICAgIGZvbGxvd2VkIGJ5ICc9Jy4KICAgICAgICA6cnR5cGU6IHN0cgogICAgICAgIE5yQAAAAHoDJXM98wEAAAA92gVhc2NpafoEJXMlcykJ2gZoYXNoZXLaB2hhc2hsaWLaA21kNXKUAAAAcosAAADaBmJhc2U2NNoRdXJsc2FmZV9iNjRlbmNvZGXaBnJzdHJpcNoGZGVjb2RlKQVyIwAAANoEZGF0YXKzAAAA2gZwcmVmaXhyiwAAAHIkAAAAciQAAAByJQAAANoIZ2V0X2hhc2j4AQAAcxQAAAAAEwgBBgEIAQYBBgIKAQoBDAEWAXoiQmFzZUluc3RhbGxlZERpc3RyaWJ1dGlvbi5nZXRfaGFzaCkBTikBTikIci4AAAByLwAAAHIwAAAAcjEAAAByswAAAHImAAAAcrwAAADaDV9fY2xhc3NjZWxsX19yJAAAAHIkAAAAcq4AAAByJQAAAHIVAAAA4QEAAHMIAAAACAEEBQQCDg9yFQAAAGMAAAAAAAAAAAAAAAAAAAAABAAAAAAAAABzuAAAAGUAWgFkAFoCZAFaA2QCWgRkJ4cAZgFkBGQFhAlaBWQGZAeEAFoGZAhkCYQAWgdkCmQLhABaCGUJZAxkDYQAgwFaCmQOZA+EAFoLZBBkEYQAWgxkEmQThABaDWQUZBWEAFoOZChkF2QYhAFaD2QZZBqEAFoQZQlkG2QchACDAVoRZClkHWQehAFaEmQfZCCEAFoTZCFkIoQAWhRkI2QkhABaFWQlZCaEAFoWZRdqGFoYhwAEAFoZUwApKnIWAAAAYQsBAAAKICAgIENyZWF0ZWQgd2l0aCB0aGUgKnBhdGgqIG9mIHRoZSBgYC5kaXN0LWluZm9gYCBkaXJlY3RvcnkgcHJvdmlkZWQgdG8gdGhlCiAgICBjb25zdHJ1Y3Rvci4gSXQgcmVhZHMgdGhlIG1ldGFkYXRhIGNvbnRhaW5lZCBpbiBgYHB5ZGlzdC5qc29uYGAgd2hlbiBpdCBpcwogICAgaW5zdGFudGlhdGVkLiwgb3IgdXNlcyBhIHBhc3NlZCBpbiBNZXRhZGF0YSBpbnN0YW5jZSAodXNlZnVsIGZvciB3aGVuCiAgICBkcnktcnVuIG1vZGUgaXMgYmVpbmcgdXNlZCkuCiAgICDaBnNoYTI1Nk5jBAAAAAAAAAAAAAAACgAAAAgAAAADAAAAc34BAABnAHwAXwB0AaACfAGhAQQAfABfA30EfARkAHUAcip0BGQBfAEWAIMBggF8A3JQfANqBXJQfAF8A2oGagd2AHJQfANqBmoHfAEZAGoIfQJuiHwCZAB1AHLYfASgCXQKoQF9BXwFZAB1AHJ0fASgCXQLoQF9BXwFZAB1AHKGfASgCXQMoQF9BXwFZAB1AHKedARkAnQKfAFmAhYAgwGCAXQNoA58BaAPoQChAY8cfQZ0EHwGZANkBI0CfQJXAGQABAAEAIMDAQBuEDEAc84wAAEAAQABAFkAAQB0EXQSfACDAqATfAJ8AXwDoQMBAHwDkAFyBnwDagWQAXIGfANqBqAUfAChAQEAfASgCWQFoQF9BXwFZAB1AXwAXxV0FmoHoBd8AWQGoQJ9B3QWagegGHwHoQGQAXJ6dBl8B2QHgwKPHn0IfAigGqEAoBtkCKEBfQlXAGQABAAEAIMDAQBuEjEAkAFzZjAAAQABAAEAWQABAHwJoByhAHwAXwBkAFMAKQlOehlmaW5kZXIgdW5hdmFpbGFibGUgZm9yICVzehFubyAlcyBmb3VuZCBpbiAlc3JBAAAAckIAAAByGwAAAPoNdG9wX2xldmVsLnR4dNoCcmL6BXV0Zi04KR3aB21vZHVsZXNyBQAAAHJMAAAAcmAAAABydwAAAHI4AAAAcjYAAAByIAAAAHJFAAAAck0AAAByCgAAAHILAAAAcgwAAAByVAAAAHJVAAAAclYAAAByCQAAAHKsAAAAchYAAAByJgAAAHItAAAAcqoAAADaAm9zclMAAADaBmV4aXN0c9oEb3BlbtoEcmVhZHK5AAAA2gpzcGxpdGxpbmVzKQpyIwAAAHIgAAAAckUAAAByRgAAAHJgAAAAcmEAAAByYwAAAHJ7AAAA2gFmcroAAAByrgAAAHIkAAAAciUAAAByJgAAACICAABzOAAAAAABBgEQAQgBDAEWARABCAEKAggBCgIIAQoBCAEGAQL/CAIQASoCFAIOAQwCCgEKAQ4BDgEMAS4Beh5JbnN0YWxsZWREaXN0cmlidXRpb24uX19pbml0X19jAQAAAAAAAAAAAAAAAQAAAAQAAABDAAAAcxQAAABkAXwAagB8AGoBfABqAmYDFgBTACkCTnojPEluc3RhbGxlZERpc3RyaWJ1dGlvbiAlciAlcyBhdCAlcj6pA3IfAAAAcm0AAAByIAAAAHIiAAAAciQAAAByJAAAAHIlAAAAcqQAAABEAgAAcwYAAAAAAQIBDP96Hkluc3RhbGxlZERpc3RyaWJ1dGlvbi5fX3JlcHJfX2MBAAAAAAAAAAAAAAABAAAAAwAAAEMAAABzEAAAAGQBfABqAHwAagFmAhYAUwCpAk56BSVzICVzcpAAAAByIgAAAHIkAAAAciQAAAByJQAAANoHX19zdHJfX0gCAABzAgAAAAABeh1JbnN0YWxsZWREaXN0cmlidXRpb24uX19zdHJfX2MBAAAAAAAAAAAAAAAKAAAACQAAAEMAAABzqgAAAGcAfQF8AKAAZAGhAX0CdAGgAnwCoAOhAKEBj3p9A3QEfANkAo0Bj1B9BHwERABdOn0FZANkBIQAdAV0BnwFgwFkBYMCRACDAX0GfAV8BhcAXAN9B30IfQl8AaAHfAd8CHwJZgOhAQEAcS5XAGQGBAAEAIMDAQBuEDEAc34wAAEAAQABAFkAAQBXAGQGBAAEAIMDAQBuEDEAc5wwAAEAAQABAFkAAQB8AVMAKQdhIgEAAAogICAgICAgIEdldCB0aGUgbGlzdCBvZiBpbnN0YWxsZWQgZmlsZXMgZm9yIHRoZSBkaXN0cmlidXRpb24KICAgICAgICA6cmV0dXJuOiBBIGxpc3Qgb2YgdHVwbGVzIG9mIHBhdGgsIGhhc2ggYW5kIHNpemUuIE5vdGUgdGhhdCBoYXNoIGFuZAogICAgICAgICAgICAgICAgIHNpemUgbWlnaHQgYmUgYGBOb25lYGAgZm9yIHNvbWUgZW50cmllcy4gVGhlIHBhdGggaXMgZXhhY3RseQogICAgICAgICAgICAgICAgIGFzIHN0b3JlZCBpbiB0aGUgZmlsZSAod2hpY2ggaXMgYXMgaW4gUEVQIDM3NikuCiAgICAgICAgchoAAACpAXJjAAAAYwEAAAAAAAAAAAAAAAIAAAADAAAAUwAAAHMQAAAAZwB8AF0IfQFkAJECcQRTAHI6AAAAciQAAAApAtoCLjDaAWlyJAAAAHIkAAAAciUAAADaCjxsaXN0Y29tcD5aAgAA8wAAAAB6Nkluc3RhbGxlZERpc3RyaWJ1dGlvbi5fZ2V0X3JlY29yZHMuPGxvY2Fscz4uPGxpc3Rjb21wPukDAAAATikI2hVnZXRfZGlzdGluZm9fcmVzb3VyY2VyVAAAAHJVAAAAclYAAAByEgAAANoFcmFuZ2XaA2xlbnIqAAAAKQpyIwAAANoHcmVzdWx0c3JhAAAAcmMAAABaDXJlY29yZF9yZWFkZXLaA3Jvd9oHbWlzc2luZ3IgAAAA2ghjaGVja3N1bdoEc2l6ZXIkAAAAciQAAAByJQAAANoMX2dldF9yZWNvcmRzSwIAAHMSAAAAAAcEAQoBEAEMBAgBGAEOBE4BeiJJbnN0YWxsZWREaXN0cmlidXRpb24uX2dldF9yZWNvcmRzYwEAAAAAAAAAAAAAAAMAAAADAAAAQwAAAHMeAAAAaQB9AXwAoAB0AaEBfQJ8AnIafACgAqEAfQF8AVMAKQFhFwEAAAogICAgICAgIFJldHVybiB0aGUgaW5mb3JtYXRpb24gZXhwb3J0ZWQgYnkgdGhpcyBkaXN0cmlidXRpb24uCiAgICAgICAgOnJldHVybjogQSBkaWN0aW9uYXJ5IG9mIGV4cG9ydHMsIG1hcHBpbmcgYW4gZXhwb3J0IGNhdGVnb3J5IHRvIGEgZGljdAogICAgICAgICAgICAgICAgIG9mIDpjbGFzczpgRXhwb3J0RW50cnlgIGluc3RhbmNlcyBkZXNjcmliaW5nIHRoZSBpbmRpdmlkdWFsCiAgICAgICAgICAgICAgICAgZXhwb3J0IGVudHJpZXMsIGFuZCBrZXllZCBieSBuYW1lLgogICAgICAgICkDctIAAADaEEVYUE9SVFNfRklMRU5BTUVyEAAAACkDciMAAABycgAAAHJhAAAAciQAAAByJAAAAHIlAAAAcoMAAABiAgAAcwoAAAAACAQBCgEEAQgBeh1JbnN0YWxsZWREaXN0cmlidXRpb24uZXhwb3J0c2MBAAAAAAAAAAAAAAAEAAAACAAAAEMAAABzTAAAAGkAfQF8AKAAdAGhAX0CfAJySHQCoAN8AqAEoQChAY8YfQN0BXwDgwF9AVcAZAEEAAQAgwMBAG4QMQBzPjAAAQABAAEAWQABAHwBUwApAnr9CiAgICAgICAgUmVhZCBleHBvcnRzIGRhdGEgZnJvbSBhIGZpbGUgaW4gLmluaSBmb3JtYXQuCgogICAgICAgIDpyZXR1cm46IEEgZGljdGlvbmFyeSBvZiBleHBvcnRzLCBtYXBwaW5nIGFuIGV4cG9ydCBjYXRlZ29yeSB0byBhIGxpc3QKICAgICAgICAgICAgICAgICBvZiA6Y2xhc3M6YEV4cG9ydEVudHJ5YCBpbnN0YW5jZXMgZGVzY3JpYmluZyB0aGUgaW5kaXZpZHVhbAogICAgICAgICAgICAgICAgIGV4cG9ydCBlbnRyaWVzLgogICAgICAgIE4pBnLSAAAActsAAAByVAAAAHJVAAAAclYAAAByEAAAACkEciMAAABycgAAAHJhAAAAcmMAAAByJAAAAHIkAAAAciUAAAByEAAAAHACAABzDAAAAAAIBAEKAQQBEAEmAXoiSW5zdGFsbGVkRGlzdHJpYnV0aW9uLnJlYWRfZXhwb3J0c2MCAAAAAAAAAAAAAAAEAAAACAAAAEMAAABzQgAAAHwAoAB0AaEBfQJ0AnwCZAGDAo8afQN0A3wBfAODAgEAVwBkAgQABACDAwEAbhAxAHM0MAABAAEAAQBZAAEAZAJTACkDYRsBAAAKICAgICAgICBXcml0ZSBhIGRpY3Rpb25hcnkgb2YgZXhwb3J0cyB0byBhIGZpbGUgaW4gLmluaSBmb3JtYXQuCiAgICAgICAgOnBhcmFtIGV4cG9ydHM6IEEgZGljdGlvbmFyeSBvZiBleHBvcnRzLCBtYXBwaW5nIGFuIGV4cG9ydCBjYXRlZ29yeSB0bwogICAgICAgICAgICAgICAgICAgICAgICBhIGxpc3Qgb2YgOmNsYXNzOmBFeHBvcnRFbnRyeWAgaW5zdGFuY2VzIGRlc2NyaWJpbmcgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgIGluZGl2aWR1YWwgZXhwb3J0IGVudHJpZXMuCiAgICAgICAg2gF3TikE2hFnZXRfZGlzdGluZm9fZmlsZXLbAAAAcsUAAAByEQAAACkEciMAAABygwAAANoCcmZyyAAAAHIkAAAAciQAAAByJQAAAHIRAAAAfwIAAHMGAAAAAAcKAQwBeiNJbnN0YWxsZWREaXN0cmlidXRpb24ud3JpdGVfZXhwb3J0c2MCAAAAAAAAAAAAAAAHAAAACQAAAEMAAABzrAAAAHwAoABkAaEBfQJ0AaACfAKgA6EAoQGPdH0DdAR8A2QCjQGPSn0EfAREAF00XAJ9BX0GfAV8AWsCcip8BgIAAQBXAAIAZAMEAAQAgwMBAFcAAgBkAwQABACDAwEAUwBxKlcAZAMEAAQAgwMBAG4QMQBzdDAAAQABAAEAWQABAFcAZAMEAAQAgwMBAG4QMQBzkjAAAQABAAEAWQABAHQFZAR8ARYAgwGCAWQDUwApBWFXAQAACiAgICAgICAgTk9URTogVGhpcyBBUEkgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLgoKICAgICAgICBSZXR1cm4gdGhlIGFic29sdXRlIHBhdGggdG8gYSByZXNvdXJjZSBmaWxlIHdpdGggdGhlIGdpdmVuIHJlbGF0aXZlCiAgICAgICAgcGF0aC4KCiAgICAgICAgOnBhcmFtIHJlbGF0aXZlX3BhdGg6IFRoZSBwYXRoLCByZWxhdGl2ZSB0byAuZGlzdC1pbmZvLCBvZiB0aGUgcmVzb3VyY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgaW50ZXJlc3QuCiAgICAgICAgOnJldHVybjogVGhlIGFic29sdXRlIHBhdGggd2hlcmUgdGhlIHJlc291cmNlIGlzIHRvIGJlIGZvdW5kLgogICAgICAgIHIcAAAAcswAAABOejNubyByZXNvdXJjZSBmaWxlIHdpdGggcmVsYXRpdmUgcGF0aCAlciBpcyBpbnN0YWxsZWQpBnLSAAAAclQAAAByVQAAAHJWAAAAchIAAADaCEtleUVycm9yKQdyIwAAAHKBAAAAcmEAAAByYwAAAFoQcmVzb3VyY2VzX3JlYWRlctoIcmVsYXRpdmVaC2Rlc3RpbmF0aW9uciQAAAByJAAAAHIlAAAAcoAAAACKAgAAcxIAAAAACwoBEAEMAQwBCAFiAQQBAv96J0luc3RhbGxlZERpc3RyaWJ1dGlvbi5nZXRfcmVzb3VyY2VfcGF0aGMBAAAAAAAAAAAAAAACAAAAAgAAAGMAAABzGAAAAHwAoAChAEQAXQp9AXwBVgABAHEIZAFTACkCeqoKICAgICAgICBJdGVyYXRlcyBvdmVyIHRoZSBgYFJFQ09SRGBgIGVudHJpZXMgYW5kIHJldHVybnMgYSB0dXBsZQogICAgICAgIGBgKHBhdGgsIGhhc2gsIHNpemUpYGAgZm9yIGVhY2ggbGluZS4KCiAgICAgICAgOnJldHVybnM6IGl0ZXJhdG9yIG9mIChwYXRoLCBoYXNoLCBzaXplKQogICAgICAgIE4pAXLaAAAAKQJyIwAAAHJyAAAAciQAAAByJAAAAHIlAAAA2hRsaXN0X2luc3RhbGxlZF9maWxlc54CAABzBAAAAAAHDAF6Kkluc3RhbGxlZERpc3RyaWJ1dGlvbi5saXN0X2luc3RhbGxlZF9maWxlc0ZjBAAAAAAAAAAAAAAADAAAAAoAAABDAAAAc1IBAAB0AGoBoAJ8AmQBoQJ9AnQAagGgA3wAagGhAX0EfASgBHwCoQF9BXQAagGgAnwEZAGhAn0EfACgBWQCoQF9BnQGoAdkA3wGoQIBAHwDclJkBFMAdAh8BoMBj+J9B3wBRABdon0IdABqAaAJfAihAXN6fAigCmQFoQFyhGQBBAB9CX0KbkhkBnQAagGgC3wIoQEWAH0KdAx8CGQHgwKPHn0LfACgDXwLoA6hAKEBfQlXAGQEBAAEAIMDAQBuEDEAc8IwAAEAAQABAFkAAQB8CKAEfAShAXPkfAVy8nwIoAR8AqEBcvJ0AGoBoA98CHwEoQJ9CHwHoBB8CHwJfApmA6EBAQBxYHwGoAR8BKEBkAFyHnQAagGgD3wGfAShAn0GfAegEHwGZAFkAWYDoQEBAFcAZAQEAAQAgwMBAG4SMQCQAXNEMAABAAEAAQBZAAEAfAZTACkIetYKICAgICAgICBXcml0ZXMgdGhlIGBgUkVDT1JEYGAgZmlsZSwgdXNpbmcgdGhlIGBgcGF0aHNgYCBpdGVyYWJsZSBwYXNzZWQgaW4uIEFueQogICAgICAgIGV4aXN0aW5nIGBgUkVDT1JEYGAgZmlsZSBpcyBzaWxlbnRseSBvdmVyd3JpdHRlbi4KCiAgICAgICAgcHJlZml4IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZW4gdG8gd3JpdGUgYWJzb2x1dGUgcGF0aHMuCiAgICAgICAgckAAAAByGgAAAPoLY3JlYXRpbmcgJXNOqQJ6BC5weWN6BC5weW96AiVkcsAAAAApEXLDAAAAciAAAAByUwAAANoHZGlybmFtZdoKc3RhcnRzd2l0aHLdAAAAclcAAADaBGluZm9yEwAAANoFaXNkaXJyUAAAANoHZ2V0c2l6ZXLFAAAAcrwAAAByxgAAANoHcmVscGF0aNoId3JpdGVyb3cpDHIjAAAA2gVwYXRoc3K7AAAA2gdkcnlfcnVu2gRiYXNlWhFiYXNlX3VuZGVyX3ByZWZpeNoLcmVjb3JkX3BhdGjaBndyaXRlcnIgAAAA2gpoYXNoX3ZhbHVlctkAAADaAmZwciQAAAByJAAAAHIlAAAA2hV3cml0ZV9pbnN0YWxsZWRfZmlsZXOoAgAAczAAAAAABw4BDgEKAQ4BCgEMAQQBBAEKAQgBFgIKAhABDAEsAQ4BCP8CAg4BEgMMAQ4BMAF6K0luc3RhbGxlZERpc3RyaWJ1dGlvbi53cml0ZV9pbnN0YWxsZWRfZmlsZXNjAQAAAAAAAAAAAAAACwAAAAkAAABDAAAAczABAABnAH0BdABqAaACfABqAaEBfQJ8AKADZAGhAX0DfACgBKEARACQAV0EXAN9BH0FfQZ0AGoBoAV8BKEBc0p0AGoBoAZ8AnwEoQJ9BHwEfANrAnJUcSR0AGoBoAd8BKEBc3R8AaAIfARkAmQDZARmBKEBAQBxJHQAagGgCXwEoQFyJHQKdABqAaALfAShAYMBfQd8BnKwfAd8BmsDcrB8AaAIfARkBXwGfAdmBKEBAQBxJHwFciRkBnwFdgByznwFoAxkBmQHoQJkCBkAfQhuBGQJfQh0DXwEZAqDAo88fQl8AKAOfAmgD6EAfAihAn0KfAp8BWsDkAFyCnwBoAh8BGQLfAV8CmYEoQEBAFcAZAkEAAQAgwMBAHEkMQCQAXMgMAABAAEAAQBZAAEAcSR8AVMAKQzhqAEAAAogICAgICAgIENoZWNrcyB0aGF0IHRoZSBoYXNoZXMgYW5kIHNpemVzIG9mIHRoZSBmaWxlcyBpbiBgYFJFQ09SRGBgIGFyZQogICAgICAgIG1hdGNoZWQgYnkgdGhlIGZpbGVzIHRoZW1zZWx2ZXMuIFJldHVybnMgYSAocG9zc2libHkgZW1wdHkpIGxpc3Qgb2YKICAgICAgICBtaXNtYXRjaGVzLiBFYWNoIGVudHJ5IGluIHRoZSBtaXNtYXRjaCBsaXN0IHdpbGwgYmUgYSB0dXBsZSBjb25zaXN0aW5nCiAgICAgICAgb2YgdGhlIHBhdGgsICdleGlzdHMnLCAnc2l6ZScgb3IgJ2hhc2gnIGFjY29yZGluZyB0byB3aGF0IGRpZG4ndCBtYXRjaAogICAgICAgIChleGlzdGVuY2UgaXMgY2hlY2tlZCBmaXJzdCwgdGhlbiBzaXplLCB0aGVuIGhhc2gpLCB0aGUgZXhwZWN0ZWQKICAgICAgICB2YWx1ZSBhbmQgdGhlIGFjdHVhbCB2YWx1ZS4KICAgICAgICByGgAAAHLEAAAAVEZy2QAAAPoBPXIDAAAAcgEAAABOcsAAAAByqAAAACkQcsMAAAByIAAAAHLkAAAAct0AAABy4QAAANoFaXNhYnNyUwAAAHLEAAAAcioAAADaBmlzZmlsZdoDc3RycugAAAByoAAAAHLFAAAAcrwAAAByxgAAACkLciMAAADaCm1pc21hdGNoZXNy7QAAAHLuAAAAciAAAABy8AAAAHLZAAAAWgthY3R1YWxfc2l6ZXKzAAAAcsgAAABaC2FjdHVhbF9oYXNociQAAAByJAAAAHIlAAAA2hVjaGVja19pbnN0YWxsZWRfZmlsZXPLAgAAcy4AAAAACQQBDgEKARQBDAEOAQgBAgEMARQBDAEQAQwBFAEEAQgBEgIEAgwBEAEKATQBeitJbnN0YWxsZWREaXN0cmlidXRpb24uY2hlY2tfaW5zdGFsbGVkX2ZpbGVzYwEAAAAAAAAAAAAAAAgAAAAIAAAAQwAAAHOeAAAAaQB9AXQAagGgAnwAagFkAaECfQJ0AGoBoAN8AqEBcpp0BGoFfAJkAmQDZASNA48cfQN8A6AGoQCgB6EAfQRXAGQFBAAEAIMDAQBuEDEAc1IwAAEAAQABAFkAAQB8BEQAXTh9BXwFoAhkBmQHoQJcAn0GfQd8BmQIawJykHwBoAl8BmcAoQKgCnwHoQEBAHFgfAd8AXwGPABxYHwBUwApCWGgAgAACiAgICAgICAgQSBkaWN0aW9uYXJ5IG9mIHNoYXJlZCBsb2NhdGlvbnMgd2hvc2Uga2V5cyBhcmUgaW4gdGhlIHNldCAncHJlZml4JywKICAgICAgICAncHVyZWxpYicsICdwbGF0bGliJywgJ3NjcmlwdHMnLCAnaGVhZGVycycsICdkYXRhJyBhbmQgJ25hbWVzcGFjZScuCiAgICAgICAgVGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaXMgdGhlIGFic29sdXRlIHBhdGggb2YgdGhhdCBjYXRlZ29yeSBmb3IKICAgICAgICB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIHRha2VzIGludG8gYWNjb3VudCBhbnkgcGF0aHMgc2VsZWN0ZWQgYnkgdGhlCiAgICAgICAgdXNlciBhdCBpbnN0YWxsYXRpb24gdGltZSAoZS5nLiB2aWEgY29tbWFuZC1saW5lIGFyZ3VtZW50cykuIEluIHRoZQogICAgICAgIGNhc2Ugb2YgdGhlICduYW1lc3BhY2UnIGtleSwgdGhpcyB3b3VsZCBiZSBhIGxpc3Qgb2YgYWJzb2x1dGUgcGF0aHMKICAgICAgICBmb3IgdGhlIHJvb3RzIG9mIG5hbWVzcGFjZSBwYWNrYWdlcyBpbiB0aGlzIGRpc3RyaWJ1dGlvbi4KCiAgICAgICAgVGhlIGZpcnN0IHRpbWUgdGhpcyBwcm9wZXJ0eSBpcyBhY2Nlc3NlZCwgdGhlIHJlbGV2YW50IGluZm9ybWF0aW9uIGlzCiAgICAgICAgcmVhZCBmcm9tIHRoZSBTSEFSRUQgZmlsZSBpbiB0aGUgLmRpc3QtaW5mbyBkaXJlY3RvcnkuCiAgICAgICAgch0AAAByYQAAAHLBAAAAqQHaCGVuY29kaW5nTnL0AAAAcgMAAADaCW5hbWVzcGFjZSkLcsMAAAByIAAAAHJTAAAAcvYAAADaBmNvZGVjc3LFAAAAcsYAAAByxwAAAHKgAAAAcigAAAByKgAAACkIciMAAABycgAAANoLc2hhcmVkX3BhdGhyyAAAANoFbGluZXPaBGxpbmVyKQAAAHI9AAAAciQAAAByJAAAAHIlAAAA2hBzaGFyZWRfbG9jYXRpb25z7gIAAHMWAAAAAA4EARABDAESASoBCAEQAQgBFAIKAXomSW5zdGFsbGVkRGlzdHJpYnV0aW9uLnNoYXJlZF9sb2NhdGlvbnNjAwAAAAAAAAAAAAAACQAAAAgAAABDAAAAc8AAAAB0AGoBoAJ8AGoBZAGhAn0DdAOgBGQCfAOhAgEAfAJyJGQDUwBnAH0EZAREAF0ufQV8AXwFGQB9BnQAagGgBXwBfAUZAKEBcix8BKAGZAV8BXwGZgIWAKEBAQBxLHwBoAdkBmQHoQJEAF0SfQd8BKAGZAh8BxYAoQEBAHFodAhqCXwDZAlkCmQLjQOPIH0IfAigCmQMoAJ8BKEBoQEBAFcAZAMEAAQAgwMBAG4QMQBzsjAAAQABAAEAWQABAHwDUwApDWFhAQAACiAgICAgICAgV3JpdGUgc2hhcmVkIGxvY2F0aW9uIGluZm9ybWF0aW9uIHRvIHRoZSBTSEFSRUQgZmlsZSBpbiAuZGlzdC1pbmZvLgogICAgICAgIDpwYXJhbSBwYXRoczogQSBkaWN0aW9uYXJ5IGFzIGRlc2NyaWJlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiBmb3IKICAgICAgICA6bWV0aDpgc2hhcmVkX2xvY2F0aW9uc2AuCiAgICAgICAgOnBhcmFtIGRyeV9ydW46IElmIFRydWUsIHRoZSBhY3Rpb24gaXMgbG9nZ2VkIGJ1dCBubyBmaWxlIGlzIGFjdHVhbGx5CiAgICAgICAgICAgICAgICAgICAgICAgIHdyaXR0ZW4uCiAgICAgICAgOnJldHVybjogVGhlIHBhdGggb2YgdGhlIGZpbGUgd3JpdHRlbiB0by4KICAgICAgICByHQAAAHLiAAAATikFcrsAAADaA2xpYtoHaGVhZGVyc9oHc2NyaXB0c3K6AAAAegUlcz0lc3L8AAAAciQAAAB6DG5hbWVzcGFjZT0lc3LcAAAAcsEAAABy+gAAANoBCikLcsMAAAByIAAAAHJTAAAAclcAAABy5gAAAHLnAAAAcioAAADaA2dldHL9AAAAcsUAAADaBXdyaXRlKQlyIwAAAHLrAAAAcuwAAABy/gAAAHL/AAAAcikAAAByIAAAANoCbnNyyAAAAHIkAAAAciQAAAByJQAAANoWd3JpdGVfc2hhcmVkX2xvY2F0aW9ucwkDAABzHAAAAAAJEAEMAQQBBAEEAQgBCAEQARQBEAEQAhIBLgF6LEluc3RhbGxlZERpc3RyaWJ1dGlvbi53cml0ZV9zaGFyZWRfbG9jYXRpb25zYwIAAAAAAAAAAAAAAAMAAAAEAAAAQwAAAHNGAAAAfAF0AHYBchp0AWQBfAF8AGoCZgIWAIMBggF0A6AEfABqAqEBfQJ8AmQAdQByPHQBZAJ8AGoCFgCDAYIBfAKgBXwBoQFTACkDTvoraW52YWxpZCBwYXRoIGZvciBhIGRpc3QtaW5mbyBmaWxlOiAlciBhdCAlcnodVW5hYmxlIHRvIGdldCBhIGZpbmRlciBmb3IgJXMpBtoKRElTVF9GSUxFU3IEAAAAciAAAAByBQAAAHJMAAAAck0AAAApA3IjAAAAciAAAAByYAAAAHIkAAAAciQAAAByJQAAAHLSAAAAIgMAAHMQAAAAAAEIAQQBCP8GAgwBCAEOAXorSW5zdGFsbGVkRGlzdHJpYnV0aW9uLmdldF9kaXN0aW5mb19yZXNvdXJjZWMCAAAAAAAAAAAAAAADAAAABQAAAEMAAABzfgAAAHwBoAB0AWoCoQFkAWsFclR8AaADdAFqAqEBZAJkA4UCGQBcAn0CfQF8AnwAagSgA3QBagKhAWQEGQBrA3JUdAVkBXwBfABqBnwAagdmAxYAgwGCAXwBdAh2AXJudAVkBnwBfABqBGYCFgCDAYIBdAFqBKAJfABqBHwBoQJTACkHYfsBAAAKICAgICAgICBSZXR1cm5zIGEgcGF0aCBsb2NhdGVkIHVuZGVyIHRoZSBgYC5kaXN0LWluZm9gYCBkaXJlY3RvcnkuIFJldHVybnMgYQogICAgICAgIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHBhdGguCgogICAgICAgIDpwYXJhbWV0ZXIgcGF0aDogYSBgYCcvJ2BgLXNlcGFyYXRlZCBwYXRoIHJlbGF0aXZlIHRvIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgYGAuZGlzdC1pbmZvYGAgZGlyZWN0b3J5IG9yIGFuIGFic29sdXRlIHBhdGg7CiAgICAgICAgICAgICAgICAgICAgICAgICBJZiAqcGF0aCogaXMgYW4gYWJzb2x1dGUgcGF0aCBhbmQgZG9lc24ndCBzdGFydAogICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCB0aGUgYGAuZGlzdC1pbmZvYGAgZGlyZWN0b3J5IHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICBhIDpjbGFzczpgRGlzdGxpYkV4Y2VwdGlvbmAgaXMgcmFpc2VkCiAgICAgICAgOnR5cGUgcGF0aDogc3RyCiAgICAgICAgOnJ0eXBlOiBzdHIKICAgICAgICByAQAAAOn+////Tun/////ejtkaXN0LWluZm8gZmlsZSAlciBkb2VzIG5vdCBiZWxvbmcgdG8gdGhlICVyICVzIGRpc3RyaWJ1dGlvbnIKAQAAKQpyTQAAAHLDAAAA2gNzZXByoAAAAHIgAAAAcgQAAAByHwAAAHJtAAAAcgsBAAByUwAAACkDciMAAAByIAAAAHJuAAAAciQAAAByJAAAAHIlAAAAct0AAAArAwAAcxoAAAAADhACGAEWAQIBAgEM/wL/BAUIAQQBCP8GA3onSW5zdGFsbGVkRGlzdHJpYnV0aW9uLmdldF9kaXN0aW5mb19maWxlYwEAAAAAAAAAAAAAAAUAAAAFAAAAYwAAAHNSAAAAdABqAaACfABqAaEBfQF8AKADoQBEAF02XAN9An0DfQR0AGoBoAR8AqEBczp0AGoBoAV8AXwCoQJ9AnwCoAZ8AGoBoQFyFnwCVgABAHEWZAFTACkCevMKICAgICAgICBJdGVyYXRlcyBvdmVyIHRoZSBgYFJFQ09SRGBgIGVudHJpZXMgYW5kIHJldHVybnMgcGF0aHMgZm9yIGVhY2ggbGluZSBpZgogICAgICAgIHRoZSBwYXRoIGlzIHBvaW50aW5nIHRvIGEgZmlsZSBsb2NhdGVkIGluIHRoZSBgYC5kaXN0LWluZm9gYCBkaXJlY3RvcnkKICAgICAgICBvciBvbmUgb2YgaXRzIHN1YmRpcmVjdG9yaWVzLgoKICAgICAgICA6cmV0dXJuczogaXRlcmF0b3Igb2YgcGF0aHMKICAgICAgICBOKQdywwAAAHIgAAAAcuQAAABy2gAAAHL1AAAAclMAAABy5QAAACkFciMAAABy7QAAAHIgAAAActgAAABy2QAAAHIkAAAAciQAAAByJQAAANoTbGlzdF9kaXN0aW5mb19maWxlc0gDAABzDAAAAAAIDgESAgwBDgEMAXopSW5zdGFsbGVkRGlzdHJpYnV0aW9uLmxpc3RfZGlzdGluZm9fZmlsZXNjAgAAAAAAAAAAAAAAAgAAAAMAAABDAAAAcxYAAAB0AHwBdAGDAm8UfABqAnwBagJrAlMAcjoAAAApA3JnAAAAchYAAAByIAAAAKkCciMAAABypgAAAHIkAAAAciQAAAByJQAAAHKnAAAAWAMAAHMGAAAAAAEKAQr/ehxJbnN0YWxsZWREaXN0cmlidXRpb24uX19lcV9fKQJOTikBRikBRikaci4AAAByLwAAAHIwAAAAcjEAAAByswAAAHImAAAAcqQAAAByywAAAHLaAAAAcg4AAABygwAAAHIQAAAAchEAAABygAAAAHLhAAAAcvIAAABy+QAAAHIBAQAAcgkBAABy0gAAAHLdAAAAcg8BAABypwAAANoGb2JqZWN0cqkAAAByvQAAAHIkAAAAciQAAAByrgAAAHIlAAAAchYAAAAYAgAAcywAAAAIAQQHBAIOIggECAMIFwIBCg0IDwgLCBQICgojCCMCAQoaChkICQgdCBAIBXIWAAAAYwAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAHNqAAAAZQBaAWQAWgJkAVoDZAJaBGkAWgVkFYcAZgFkBGQFhAlaBmQGZAeEAFoHZAhkCYQAWghkCmQLhABaCWQMZA2EAFoKZA5kD4QAWgtkFmQRZBKEAVoMZBNkFIQAWg1lDmoPWg+HAAQAWhBTACkXchcAAABhEQEAAENyZWF0ZWQgd2l0aCB0aGUgKnBhdGgqIG9mIHRoZSBgYC5lZ2ctaW5mb2BgIGRpcmVjdG9yeSBvciBmaWxlIHByb3ZpZGVkCiAgICB0byB0aGUgY29uc3RydWN0b3IuIEl0IHJlYWRzIHRoZSBtZXRhZGF0YSBjb250YWluZWQgaW4gdGhlIGZpbGUgaXRzZWxmLCBvcgogICAgaWYgdGhlIGdpdmVuIHBhdGggaGFwcGVucyB0byBiZSBhIGRpcmVjdG9yeSwgdGhlIG1ldGFkYXRhIGlzIHJlYWQgZnJvbSB0aGUKICAgIGZpbGUgYGBQS0ctSU5GT2BgIHVuZGVyIHRoYXQgZGlyZWN0b3J5LlROYwMAAAAAAAAAAAAAAAUAAAAFAAAAAwAAAHOSAAAAZAFkAoQAfQN8AXwAXwB8AnwAXwF8AnJKfAJqAnJKfAF8AmoDagB2AHJKfAJqA2oAfAEZAGoEfQR8A3wAfARqBXwEagaDAwEAbjB8AKAHfAGhAX0EfAN8AHwEagV8BGoGgwMBAHwCcnp8AmoCcnp8AmoDoAh8AKEBAQB0CXQKfACDAqALfAR8AXwCoQMBAGQAUwApA05jAwAAAAAAAAAAAAAAAwAAAAIAAABTAAAAcxoAAAB8AXwAXwB8AaABoQB8AF8CfAJ8AF8DZABTAHI6AAAAKQRyHwAAAHJxAAAAcikAAABybQAAACkDcpMAAADaAW5yhgAAAHIkAAAAciQAAAByJQAAANoUc2V0X25hbWVfYW5kX3ZlcnNpb25qAwAAcwYAAAAAAQYBCgF6OkVnZ0luZm9EaXN0cmlidXRpb24uX19pbml0X18uPGxvY2Fscz4uc2V0X25hbWVfYW5kX3ZlcnNpb24pDHIgAAAAcq0AAAByOAAAAHI3AAAAckUAAAByHwAAAHJtAAAA2g1fZ2V0X21ldGFkYXRhci0AAAByrAAAAHIXAAAAciYAAAApBXIjAAAAciAAAAByRgAAAHITAQAAckUAAAByrgAAAHIkAAAAciUAAAByJgAAAGkDAABzFgAAAAABCAUGAQYBFgEOARICCgMQAgoBDAF6HEVnZ0luZm9EaXN0cmlidXRpb24uX19pbml0X19jAgAAAAAAAAAAAAAADgAAAAgAAAADAAAAc+QBAABkAH0CZAFkAoQAiQCHAGYBZANkBIQIfQNkAAQAfQR9BXwBoABkBaEBcvR0AWoCoAN8AaEBcoR0AWoCoAR8AWQGoQJ9BnQBagKgBHwGZAehAn0HdAV8B2QIZAmNAn0IdAFqAqAEfAZkCqECfQl0AWoCoAR8BmQLoQJ9BHwDfAmDAX0Cbm50BqAHfAGhAX0KdAh8CqAJZAyhAaAKZA2hAYMBfQt0BXwLZAhkDo0CfQh6LHwKoAlkD6EBfQx8CqAJZBChAaAKZBGhAX0FiAB8DKAKZBGhAYMBfQJXAG4WBAB0C3nwAQABAAEAZAB9AlkAbgIwAG5mfAGgAGQSoQGQAXJOdAFqAqADfAGhAZABckB0AWoCoAR8AWQKoQJ9CXwDfAmDAX0CdAFqAqAEfAFkB6ECfQF0AWoCoAR8AWQLoQJ9BHQFfAFkCGQJjQJ9CG4MdAxkE3wBFgCDAYIBfAKQAXJqfAigDXwCoQEBAHwFZAB1AJABcsZ8BGQAdQGQAXLGdAFqAqAOfAShAZABcsZ0D3wEZBSDAo8efQ18DaAQoQCgCmQRoQF9BVcAZAAEAAQAgwMBAG4SMQCQAXO8MAABAAEAAQBZAAEAfAWQAXPSZwB9BW4IfAWgEaEAfQV8BXwAXxJ8CFMAKRVOYwEAAAAAAAAAAAAAAAYAAAAGAAAAUwAAAHOkAAAAZwB9AXwAoAChAH0CfAJEAF2OfQN8A6ABoQB9A3wDoAJkAaEBcjZ0A6AEZAJ8A6ECAQABAHGgdAV8A4MBfQR8BHNQdAOgBGQDfAOhAgEAcRB8BGoGcmB0A6AEZAShAQEAfARqB3N0fAGgCHwEagmhAQEAcRBkBaAKZAZkB4QAfARqB0QAgwGhAX0FfAGgCGQIfARqCXwFZgIWAKEBAQBxEHwBUwApCXqSQ3JlYXRlIGEgbGlzdCBvZiBkZXBlbmRlbmNpZXMgZnJvbSBhIHJlcXVpcmVzLnR4dCBmaWxlLgoKICAgICAgICAgICAgKmRhdGEqOiB0aGUgY29udGVudHMgb2YgYSBzZXR1cHRvb2xzLXByb2R1Y2VkIHJlcXVpcmVzLnR4dCBmaWxlLgogICAgICAgICAgICD6AVt6LlVuZXhwZWN0ZWQgbGluZTogcXVpdHRpbmcgcmVxdWlyZW1lbnQgc2NhbjogJXJ6I05vdCByZWNvZ25pc2VkIGFzIGEgcmVxdWlyZW1lbnQ6ICVyejRleHRyYSByZXF1aXJlbWVudHMgaW4gcmVxdWlyZXMudHh0IGFyZSBub3Qgc3VwcG9ydGVkegIsIGMBAAAAAAAAAAAAAAACAAAAAwAAAHMAAABzFgAAAHwAXQ59AWQAfAEWAFYAAQBxAmQBUwApAnKyAAAATnIkAAAAKQJyzQAAANoBY3IkAAAAciQAAAByJQAAANoJPGdlbmV4cHI+mAMAAHLQAAAAelFFZ2dJbmZvRGlzdHJpYnV0aW9uLl9nZXRfbWV0YWRhdGEuPGxvY2Fscz4ucGFyc2VfcmVxdWlyZXNfZGF0YS48bG9jYWxzPi48Z2VuZXhwcj5ydAAAACkLcscAAADaBXN0cmlwcuUAAAByVwAAAHJcAAAAcg0AAAByjAAAANoLY29uc3RyYWludHNyKgAAAHIfAAAAclMAAAApBnK6AAAA2gRyZXFzcv8AAAByAAEAAHJhAAAAWgRjb25zciQAAAByJAAAAHIlAAAA2hNwYXJzZV9yZXF1aXJlc19kYXRhgQMAAHMoAAAAAAUEAQgBCAEIAQoBBgEC/wQCBAEIAQQBDAECAQYBCgIGAQ4CFgEWAXo+RWdnSW5mb0Rpc3RyaWJ1dGlvbi5fZ2V0X21ldGFkYXRhLjxsb2NhbHM+LnBhcnNlX3JlcXVpcmVzX2RhdGFjAQAAAAAAAAAAAAAAAwAAAAgAAAATAAAAc1oAAABnAH0Bej50AKABfABkAWQCoQOPHH0CiAB8AqACoQCDAX0BVwBkAwQABACDAwEAbhAxAHM2MAABAAEAAQBZAAEAVwBuEgQAdAN5VAEAAQABAFkAbgIwAHwBUwApBHqSQ3JlYXRlIGEgbGlzdCBvZiBkZXBlbmRlbmNpZXMgZnJvbSBhIHJlcXVpcmVzLnR4dCBmaWxlLgoKICAgICAgICAgICAgKnJlcV9wYXRoKjogdGhlIHBhdGggdG8gYSBzZXR1cHRvb2xzLXByb2R1Y2VkIHJlcXVpcmVzLnR4dCBmaWxlLgogICAgICAgICAgICByYQAAAHLBAAAATikEcv0AAAByxQAAAHLGAAAA2gdJT0Vycm9yKQPaCHJlcV9wYXRochoBAABy8QAAAKkBchsBAAByJAAAAHIlAAAA2hNwYXJzZV9yZXF1aXJlc19wYXRonAMAAHMOAAAAAAYEAQIBEAEuAQwBBgF6PkVnZ0luZm9EaXN0cmlidXRpb24uX2dldF9tZXRhZGF0YS48bG9jYWxzPi5wYXJzZV9yZXF1aXJlc19wYXRockgAAAB6CEVHRy1JTkZPeghQS0ctSU5GT3JBAAAAKQJyIAAAAHJEAAAAegxyZXF1aXJlcy50eHRyvwAAAHoRRUdHLUlORk8vUEtHLUlORk/aBHV0ZjhyQgAAAHoVRUdHLUlORk8vcmVxdWlyZXMudHh0ehZFR0ctSU5GTy90b3BfbGV2ZWwudHh0csEAAAByRwAAAHoscGF0aCBtdXN0IGVuZCB3aXRoIC5lZ2ctaW5mbyBvciAuZWdnLCBnb3QgJXJywAAAACkTclAAAABywwAAAHIgAAAAcucAAAByUwAAAHIJAAAA2gl6aXBpbXBvcnTaC3ppcGltcG9ydGVycgYAAADaCGdldF9kYXRhcrkAAAByHAEAAHIEAAAAWhBhZGRfcmVxdWlyZW1lbnRzcsQAAAByxQAAAHLGAAAAcscAAABywgAAACkOciMAAAByIAAAANoIcmVxdWlyZXNyHwEAAFoHdGxfcGF0aFoHdGxfZGF0YXJ7AAAA2gltZXRhX3BhdGhyRQAAAHIdAQAAWgR6aXBmckMAAAByugAAAHLIAAAAciQAAAByHgEAAHIlAAAAchQBAAB+AwAAc1gAAAAAAQQCCBsMDggBCgEMAQ4BDgEMAQ4BDgEKAwoBAgEO/wQCDAECAQoBEAESAQwBDAEMAQ4BDgEIAQ4BDgEOAgQBAv8GAwYBCgIKARgBDAEuAQYBBgIIAQYBeiFFZ2dJbmZvRGlzdHJpYnV0aW9uLl9nZXRfbWV0YWRhdGFjAQAAAAAAAAAAAAAAAQAAAAQAAABDAAAAcxQAAABkAXwAagB8AGoBfABqAmYDFgBTACkCTnohPEVnZ0luZm9EaXN0cmlidXRpb24gJXIgJXMgYXQgJXI+cskAAAByIgAAAHIkAAAAciQAAAByJQAAAHKkAAAA2AMAAHMGAAAAAAECAQz/ehxFZ2dJbmZvRGlzdHJpYnV0aW9uLl9fcmVwcl9fYwEAAAAAAAAAAAAAAAEAAAADAAAAQwAAAHMQAAAAZAF8AGoAfABqAWYCFgBTAHLKAAAAcpAAAAByIgAAAHIkAAAAciQAAAByJQAAAHLLAAAA3AMAAHMCAAAAAAF6G0VnZ0luZm9EaXN0cmlidXRpb24uX19zdHJfX2MBAAAAAAAAAAAAAAAFAAAABwAAAEMAAABzYAAAAGcAfQF0AGoBoAJ8AGoBZAGhAn0CdABqAaADfAKhAXJcfACgBKEARABdMlwDfQN9BH0EfAN8AmsCcjxxKHQAagGgA3wDoQFzKHwBoAV8A2QCZANkBGYEoQEBAHEofAFTACkFcvMAAAD6E2luc3RhbGxlZC1maWxlcy50eHRyxAAAAFRGKQZywwAAAHIgAAAAclMAAAByxAAAAHLhAAAAcioAAAApBXIjAAAAcvgAAABy7gAAAHIgAAAAcmoAAAByJAAAAHIkAAAAciUAAABy+QAAAN8DAABzEgAAAAAJBAEQAQwBEgEIAQIBDAEUAXopRWdnSW5mb0Rpc3RyaWJ1dGlvbi5jaGVja19pbnN0YWxsZWRfZmlsZXNjAQAAAAAAAAAAAAAACAAAAAgAAABDAAAAc+YAAABkAWQChAB9AWQDZASEAH0CdABqAaACfABqAWQFoQJ9A2cAfQR0AGoBoAN8A6EBcuJ0BGoFfANkBmQHZAiNA4+CfQV8BUQAXWx9BnwGoAahAH0GdABqAaAHdABqAaACfABqAXwGoQKhAX0HdABqAaADfAehAXOOdAigCWQJfAehAgEAfAegCmQKoQFyjnFGdABqAaALfAehAXNGfASgDHwHfAF8B4MBfAJ8B4MBZgOhAQEAcUZXAGQLBAAEAIMDAQBuEDEAc8gwAAEAAQABAFkAAQB8BKAMfANkC2QLZgOhAQEAfARTACkMerUKICAgICAgICBJdGVyYXRlcyBvdmVyIHRoZSBgYGluc3RhbGxlZC1maWxlcy50eHRgYCBlbnRyaWVzIGFuZCByZXR1cm5zIGEgdHVwbGUKICAgICAgICBgYChwYXRoLCBoYXNoLCBzaXplKWBgIGZvciBlYWNoIGxpbmUuCgogICAgICAgIDpyZXR1cm5zOiBhIGxpc3Qgb2YgKHBhdGgsIGhhc2gsIHNpemUpCiAgICAgICAgYwEAAAAAAAAAAAAAAAMAAAAIAAAAUwAAAHM4AAAAdAB8AGQBgwJ9AXoUfAGgAaEAfQJXAHwBoAKhAAEAbgp8AaACoQABADAAdAOgBHwCoQGgBaEAUwApAk5ywAAAACkGcsUAAAByxgAAANoFY2xvc2VytAAAAHK1AAAA2gloZXhkaWdlc3QpA3IgAAAAcsgAAADaB2NvbnRlbnRyJAAAAHIkAAAAciUAAADaBF9tZDX6AwAAcwoAAAAAAQoBAgEKAhQBejZFZ2dJbmZvRGlzdHJpYnV0aW9uLmxpc3RfaW5zdGFsbGVkX2ZpbGVzLjxsb2NhbHM+Ll9tZDVjAQAAAAAAAAAAAAAAAQAAAAMAAABTAAAAcwwAAAB0AKABfAChAWoCUwByOgAAACkDcsMAAADaBHN0YXTaB3N0X3NpemUpAXIgAAAAciQAAAByJAAAAHIlAAAA2gVfc2l6ZQIEAABzAgAAAAABejdFZ2dJbmZvRGlzdHJpYnV0aW9uLmxpc3RfaW5zdGFsbGVkX2ZpbGVzLjxsb2NhbHM+Ll9zaXplciYBAAByYQAAAHLBAAAAcvoAAAB6FU5vbi1leGlzdGVudCBmaWxlOiAlc3LjAAAATikNcsMAAAByIAAAAHJTAAAAcsQAAABy/QAAAHLFAAAAchgBAADaCG5vcm1wYXRoclcAAAByXAAAAHJQAAAAcucAAAByKgAAACkIciMAAAByKgEAAHItAQAAcu4AAABycgAAAHLIAAAAcgABAAByewAAAHIkAAAAciQAAAByJQAAAHLhAAAA8gMAAHMiAAAAAAgICAgDEAEEAQwBEgEIAQgBGAMMAQwBCgECAgwBOAEQAXooRWdnSW5mb0Rpc3RyaWJ1dGlvbi5saXN0X2luc3RhbGxlZF9maWxlc0ZjAgAAAAAAAAAAAAAABwAAAAgAAABjAAAAc64AAAB0AGoBoAJ8AGoBZAGhAn0CdABqAaADfAKhAXKqZAJ9A3QEagV8AmQDZARkBY0Dj2p9BHwERABdVH0FfAWgBqEAfQV8BWQGawJyUGQHfQNxNnwDczZ0AGoBoAd0AGoBoAJ8AGoBfAWhAqEBfQZ8BqAIfABqAaEBcjZ8AXKEfAZWAAEAcTZ8BVYAAQBxNlcAZAgEAAQAgwMBAG4QMQBzoDAAAQABAAEAWQABAGQIUwApCWELAgAACiAgICAgICAgSXRlcmF0ZXMgb3ZlciB0aGUgYGBpbnN0YWxsZWQtZmlsZXMudHh0YGAgZW50cmllcyBhbmQgcmV0dXJucyBwYXRocyBmb3IKICAgICAgICBlYWNoIGxpbmUgaWYgdGhlIHBhdGggaXMgcG9pbnRpbmcgdG8gYSBmaWxlIGxvY2F0ZWQgaW4gdGhlCiAgICAgICAgYGAuZWdnLWluZm9gYCBkaXJlY3Rvcnkgb3Igb25lIG9mIGl0cyBzdWJkaXJlY3Rvcmllcy4KCiAgICAgICAgOnBhcmFtZXRlciBhYnNvbHV0ZTogSWYgKmFic29sdXRlKiBpcyBgYFRydWVgYCwgZWFjaCByZXR1cm5lZCBwYXRoIGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtZWQgaW50byBhIGxvY2FsIGFic29sdXRlIHBhdGguIE90aGVyd2lzZSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICByYXcgdmFsdWUgZnJvbSBgYGluc3RhbGxlZC1maWxlcy50eHRgYCBpcyByZXR1cm5lZC4KICAgICAgICA6dHlwZSBhYnNvbHV0ZTogYm9vbGVhbgogICAgICAgIDpyZXR1cm5zOiBpdGVyYXRvciBvZiBwYXRocwogICAgICAgIHImAQAAVHJhAAAAcsEAAABy+gAAAHoCLi9GTikJcsMAAAByIAAAAHJTAAAAcsQAAABy/QAAAHLFAAAAchgBAAByLgEAAHLlAAAAKQdyIwAAANoIYWJzb2x1dGVy7gAAANoEc2tpcHLIAAAAcgABAAByewAAAHIkAAAAciQAAAByJQAAAHIPAQAAGAQAAHMeAAAAAAwQAQwBBAESAQgBCAEIAQQBAgEEARgBDAEEAQgCeidFZ2dJbmZvRGlzdHJpYnV0aW9uLmxpc3RfZGlzdGluZm9fZmlsZXNjAgAAAAAAAAAAAAAAAgAAAAMAAABDAAAAcxYAAAB0AHwBdAGDAm8UfABqAnwBagJrAlMAcjoAAAApA3JnAAAAchcAAAByIAAAAHIQAQAAciQAAAByJAAAAHIlAAAAcqcAAAA1BAAAcwYAAAAAAQoBCv96GkVnZ0luZm9EaXN0cmlidXRpb24uX19lcV9fKQFOKQFGKRFyLgAAAHIvAAAAcjAAAAByMQAAAHKqAAAAcgEBAAByJgAAAHIUAQAAcqQAAAByywAAAHL5AAAAcuEAAAByDwEAAHKnAAAAchEBAAByqQAAAHK9AAAAciQAAAByJAAAAHKuAAAAciUAAAByFwAAAGADAABzGAAAAAgBBAUEAQQCDhUIWggECAMIEwgmCh0IBXIXAAAAYwAAAAAAAAAAAAAAAAAAAAADAAAAQAAAAHNeAAAAZQBaAWQAWgJkAVoDZAJkA4QAWgRkBGQFhABaBWQXZAdkCIQBWgZkCWQKhABaB2QLZAyEAFoIZBhkDmQPhAFaCWQZZBFkEoQBWgpkE2QUhABaC2QVZBaEAFoMZAZTACka2g9EZXBlbmRlbmN5R3JhcGhh+QIAAAogICAgUmVwcmVzZW50cyBhIGRlcGVuZGVuY3kgZ3JhcGggYmV0d2VlbiBkaXN0cmlidXRpb25zLgoKICAgIFRoZSBkZXBlbmRlbmN5IHJlbGF0aW9uc2hpcHMgYXJlIHN0b3JlZCBpbiBhbiBgYGFkamFjZW5jeV9saXN0YGAgdGhhdCBtYXBzCiAgICBkaXN0cmlidXRpb25zIHRvIGEgbGlzdCBvZiBgYChvdGhlciwgbGFiZWwpYGAgdHVwbGVzIHdoZXJlICBgYG90aGVyYGAKICAgIGlzIGEgZGlzdHJpYnV0aW9uIGFuZCB0aGUgZWRnZSBpcyBsYWJlbGVkIHdpdGggYGBsYWJlbGBgIChpLmUuIHRoZSB2ZXJzaW9uCiAgICBzcGVjaWZpZXIsIGlmIHN1Y2ggd2FzIHByb3ZpZGVkKS4gQWxzbywgZm9yIG1vcmUgZWZmaWNpZW50IHRyYXZlcnNhbCwgZm9yCiAgICBldmVyeSBkaXN0cmlidXRpb24gYGB4YGAsIGEgbGlzdCBvZiBwcmVkZWNlc3NvcnMgaXMga2VwdCBpbgogICAgYGByZXZlcnNlX2xpc3RbeF1gYC4gQW4gZWRnZSBmcm9tIGRpc3RyaWJ1dGlvbiBgYGFgYCB0bwogICAgZGlzdHJpYnV0aW9uIGBgYmBgIG1lYW5zIHRoYXQgYGBhYGAgZGVwZW5kcyBvbiBgYGJgYC4gSWYgYW55IG1pc3NpbmcKICAgIGRlcGVuZGVuY2llcyBhcmUgZm91bmQsIHRoZXkgYXJlIHN0b3JlZCBpbiBgYG1pc3NpbmdgYCwgd2hpY2ggaXMgYQogICAgZGljdGlvbmFyeSB0aGF0IG1hcHMgZGlzdHJpYnV0aW9ucyB0byBhIGxpc3Qgb2YgcmVxdWlyZW1lbnRzIHRoYXQgd2VyZSBub3QKICAgIHByb3ZpZGVkIGJ5IGFueSBvdGhlciBkaXN0cmlidXRpb25zLgogICAgYwEAAAAAAAAAAAAAAAEAAAACAAAAQwAAAHMWAAAAaQB8AF8AaQB8AF8BaQB8AF8CZABTAHI6AAAAKQPaDmFkamFjZW5jeV9saXN02gxyZXZlcnNlX2xpc3Ry1wAAAHIiAAAAciQAAAByJAAAAHIlAAAAciYAAABQBAAAcwYAAAAAAQYBBgF6GERlcGVuZGVuY3lHcmFwaC5fX2luaXRfX2MCAAAAAAAAAAAAAAACAAAAAwAAAEMAAABzGAAAAGcAfABqAHwBPABnAHwAagF8ATwAZAFTACkCes1BZGQgdGhlICpkaXN0cmlidXRpb24qIHRvIHRoZSBncmFwaC4KCiAgICAgICAgOnR5cGUgZGlzdHJpYnV0aW9uOiA6Y2xhc3M6YGRpc3R1dGlsczIuZGF0YWJhc2UuSW5zdGFsbGVkRGlzdHJpYnV0aW9uYAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgOmNsYXNzOmBkaXN0dXRpbHMyLmRhdGFiYXNlLkVnZ0luZm9EaXN0cmlidXRpb25gCiAgICAgICAgTikCcjIBAAByMwEAACkCciMAAADaDGRpc3RyaWJ1dGlvbnIkAAAAciQAAAByJQAAANoQYWRkX2Rpc3RyaWJ1dGlvblUEAABzBAAAAAAGCgF6IERlcGVuZGVuY3lHcmFwaC5hZGRfZGlzdHJpYnV0aW9uTmMEAAAAAAAAAAAAAAAEAAAABAAAAEMAAABzNgAAAHwAagB8ARkAoAF8AnwDZgKhAQEAfAF8AGoCfAIZAHYBcjJ8AGoCfAIZAKABfAGhAQEAZAFTACkCYZoBAABBZGQgYW4gZWRnZSBmcm9tIGRpc3RyaWJ1dGlvbiAqeCogdG8gZGlzdHJpYnV0aW9uICp5KiB3aXRoIHRoZSBnaXZlbgogICAgICAgICpsYWJlbCouCgogICAgICAgIDp0eXBlIHg6IDpjbGFzczpgZGlzdHV0aWxzMi5kYXRhYmFzZS5JbnN0YWxsZWREaXN0cmlidXRpb25gIG9yCiAgICAgICAgICAgICAgICAgOmNsYXNzOmBkaXN0dXRpbHMyLmRhdGFiYXNlLkVnZ0luZm9EaXN0cmlidXRpb25gCiAgICAgICAgOnR5cGUgeTogOmNsYXNzOmBkaXN0dXRpbHMyLmRhdGFiYXNlLkluc3RhbGxlZERpc3RyaWJ1dGlvbmAgb3IKICAgICAgICAgICAgICAgICA6Y2xhc3M6YGRpc3R1dGlsczIuZGF0YWJhc2UuRWdnSW5mb0Rpc3RyaWJ1dGlvbmAKICAgICAgICA6dHlwZSBsYWJlbDogYGBzdHJgYCBvciBgYE5vbmVgYAogICAgICAgIE4pA3IyAQAAcioAAAByMwEAACkEciMAAADaAXjaAXnaBWxhYmVsciQAAAByJAAAAHIlAAAA2ghhZGRfZWRnZV8EAABzBgAAAAAKFAIOAXoYRGVwZW5kZW5jeUdyYXBoLmFkZF9lZGdlYwMAAAAAAAAAAAAAAAMAAAAFAAAAQwAAAHMmAAAAdACgAWQBfAF8AqEDAQB8AGoCoAN8AWcAoQKgBHwCoQEBAGQCUwApA2EOAQAACiAgICAgICAgQWRkIGEgbWlzc2luZyAqcmVxdWlyZW1lbnQqIGZvciB0aGUgZ2l2ZW4gKmRpc3RyaWJ1dGlvbiouCgogICAgICAgIDp0eXBlIGRpc3RyaWJ1dGlvbjogOmNsYXNzOmBkaXN0dXRpbHMyLmRhdGFiYXNlLkluc3RhbGxlZERpc3RyaWJ1dGlvbmAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIDpjbGFzczpgZGlzdHV0aWxzMi5kYXRhYmFzZS5FZ2dJbmZvRGlzdHJpYnV0aW9uYAogICAgICAgIDp0eXBlIHJlcXVpcmVtZW50OiBgYHN0cmBgCiAgICAgICAgeg0lcyBtaXNzaW5nICVyTikFclcAAAByWAAAAHLXAAAAcigAAAByKgAAACkDciMAAAByNAEAAHKfAAAAciQAAAByJAAAAHIlAAAA2gthZGRfbWlzc2luZ24EAABzBAAAAAAIDgF6G0RlcGVuZGVuY3lHcmFwaC5hZGRfbWlzc2luZ2MCAAAAAAAAAAAAAAACAAAAAwAAAEMAAABzEAAAAGQBfAFqAHwBagFmAhYAUwByygAAAHKQAAAAcisAAAByJAAAAHIkAAAAciUAAADaCl9yZXByX2Rpc3R5BAAAcwIAAAAAAXoaRGVwZW5kZW5jeUdyYXBoLl9yZXByX2Rpc3RyAwAAAGMDAAAAAAAAAAAAAAAIAAAABgAAAEMAAABzigAAAHwAoAB8AaEBZwF9A3wAagF8ARkARABdaFwCfQR9BXwAoAB8BKEBfQF8BWQBdQFyPGQCfAF8BWYCFgB9AXwDoAJkA3wCFAB0A3wBgwEXAKEBAQB8AKAEfAR8AmQEFwChAn0GfAagBWQFoQF9B3wDoAZ8B2QEZAGFAhkAoQEBAHEWZAWgB3wDoQFTACkGehZQcmludHMgb25seSBhIHN1YmdyYXBoTnoHJXMgWyVzXXoEICAgIHIDAAAAcgUBAAApCHI7AQAAcjIBAAByKgAAAHL3AAAA2glyZXByX25vZGVyoAAAANoGZXh0ZW5kclMAAAApCHIjAAAAciwAAADaBWxldmVs2gZvdXRwdXRypgAAAHI4AQAAWglzdWJvdXRwdXTaBHN1YnNyJAAAAHIkAAAAciUAAAByPAEAAHwEAABzFAAAAAACDAESAQoBCAEMARYBEAEKARQBehlEZXBlbmRlbmN5R3JhcGgucmVwcl9ub2RlVGMDAAAAAAAAAAAAAAAIAAAACAAAAEMAAABz7AAAAGcAfQN8AaAAZAGhAQEAfABqAaACoQBEAF1oXAJ9BH0FdAN8BYMBZAJrAnI6fAJzOnwDoAR8BKEBAQB8BUQAXUBcAn0GfQd8B2QDdQFyaHwBoABkBHwEagV8BmoFfAdmAxYAoQEBAHE+fAGgAGQFfARqBXwGagVmAhYAoQEBAHE+cRh8AnPedAN8A4MBZAJrBHLefAGgAGQGoQEBAHwBoABkB6EBAQB8AaAAZAihAQEAfANEAF0efQR8AaAAZAl8BGoFFgChAQEAfAGgAGQKoQEBAHG0fAGgAGQLoQEBAHwBoABkC6EBAQBkA1MAKQxhOQEAAFdyaXRlcyBhIERPVCBvdXRwdXQgZm9yIHRoZSBncmFwaCB0byB0aGUgcHJvdmlkZWQgZmlsZSAqZiouCgogICAgICAgIElmICpza2lwX2Rpc2Nvbm5lY3RlZCogaXMgc2V0IHRvIGBgVHJ1ZWBgLCB0aGVuIGFsbCBkaXN0cmlidXRpb25zCiAgICAgICAgdGhhdCBhcmUgbm90IGRlcGVuZGVudCBvbiBhbnkgb3RoZXIgZGlzdHJpYnV0aW9uIGFyZSBza2lwcGVkLgoKICAgICAgICA6dHlwZSBmOiBoYXMgdG8gc3VwcG9ydCBgYGZpbGVgYC1saWtlIG9wZXJhdGlvbnMKICAgICAgICA6dHlwZSBza2lwX2Rpc2Nvbm5lY3RlZDogYGBib29sYGAKICAgICAgICB6F2RpZ3JhcGggZGVwZW5kZW5jaWVzIHsKcgEAAABOehoiJXMiIC0+ICIlcyIgW2xhYmVsPSIlcyJdCnoNIiVzIiAtPiAiJXMiCnoYc3ViZ3JhcGggZGlzY29ubmVjdGVkIHsKehdsYWJlbCA9ICJEaXNjb25uZWN0ZWQiCnoOYmdjb2xvciA9IHJlZAp6BCIlcyJyBQEAAHoCfQopBnIHAQAAcjIBAADaBWl0ZW1zctQAAAByKgAAAHIfAAAAKQhyIwAAAHLIAAAAWhFza2lwX2Rpc2Nvbm5lY3RlZFoMZGlzY29ubmVjdGVkciwAAADaBGFkanNypgAAAHI4AQAAciQAAAByJAAAAHIlAAAA2gZ0b19kb3SJBAAAcygAAAAACQQCCgESARABCgEMAQgBBgEM/wgDGgEQAQoBCgEKAggBEAEMAQoBehZEZXBlbmRlbmN5R3JhcGgudG9fZG90YwEAAAAAAAAAAAAAAAUAAAAFAAAAAwAAAHPCAAAAZwB9AWkAfQJ8AGoAoAGhAEQAXRhcAn0DfQR8BGQBZAGFAhkAfAJ8AzwAcRJnAIkAdAJ8AqABoQCDAWQBZAGFAhkARABdHFwCfQN9BHwEc0SIAKADfAOhAQEAfAJ8Az0AcUSIAHNocbJ8AqABoQBEAF0eXAJ9A30EhwBmAWQCZAOECHwERACDAXwCfAM8AHFwdASgBWQEZAVkA4QAiABEAIMBoQIBAHwBoAaIAKEBAQBxLHwBdAJ8AqAHoQCDAWYCUwApBmFhAQAACiAgICAgICAgUGVyZm9ybSBhIHRvcG9sb2dpY2FsIHNvcnQgb2YgdGhlIGdyYXBoLgogICAgICAgIDpyZXR1cm46IEEgdHVwbGUsIHRoZSBmaXJzdCBlbGVtZW50IG9mIHdoaWNoIGlzIGEgdG9wb2xvZ2ljYWxseSBzb3J0ZWQKICAgICAgICAgICAgICAgICBsaXN0IG9mIGRpc3RyaWJ1dGlvbnMsIGFuZCB0aGUgc2Vjb25kIGVsZW1lbnQgb2Ygd2hpY2ggaXMgYQogICAgICAgICAgICAgICAgIGxpc3Qgb2YgZGlzdHJpYnV0aW9ucyB0aGF0IGNhbm5vdCBiZSBzb3J0ZWQgYmVjYXVzZSB0aGV5IGhhdmUKICAgICAgICAgICAgICAgICBjaXJjdWxhciBkZXBlbmRlbmNpZXMgYW5kIHNvIGZvcm0gYSBjeWNsZS4KICAgICAgICBOYwEAAAAAAAAAAAAAAAMAAAAEAAAAEwAAAHMgAAAAZwB8AF0YXAJ9AX0CfAGIAHYBcgR8AXwCZgKRAnEEUwByJAAAAHIkAAAAKQNyzQAAAHKFAAAAcmEAAACpAVoJdG9fcmVtb3ZlciQAAAByJQAAAHLPAAAAwgQAAHLQAAAAejREZXBlbmRlbmN5R3JhcGgudG9wb2xvZ2ljYWxfc29ydC48bG9jYWxzPi48bGlzdGNvbXA+ehRNb3ZpbmcgdG8gcmVzdWx0OiAlc2MBAAAAAAAAAAAAAAACAAAABQAAAFMAAABzHAAAAGcAfABdFH0BZAB8AWoAfAFqAWYCFgCRAnEEUwApAXJ0AAAAcpAAAAApAnLNAAAAcoUAAAByJAAAAHIkAAAAciUAAAByzwAAAMQEAABy0AAAACkIcjIBAAByQQEAANoEbGlzdHIqAAAAclcAAAByWAAAAHI9AQAA2gRrZXlzKQVyIwAAAHJyAAAA2gVhbGlzdNoBa3KGAAAAciQAAAByRAEAAHIlAAAA2hB0b3BvbG9naWNhbF9zb3J0qQQAAHMkAAAAAAgEAgQBEgESAwQBHAEEAQoBCAEEAgICEAEYAQYBDP8EAgwBeiBEZXBlbmRlbmN5R3JhcGgudG9wb2xvZ2ljYWxfc29ydGMBAAAAAAAAAAAAAAAEAAAABgAAAEMAAABzMgAAAGcAfQF8AGoAoAGhAEQAXRhcAn0CfQN8AaACfACgA3wCoQGhAQEAcQ5kAaAEfAGhAVMAKQJ6G1JlcHJlc2VudGF0aW9uIG9mIHRoZSBncmFwaHIFAQAAKQVyMgEAAHJBAQAAcioAAAByPAEAAHJTAAAAKQRyIwAAAHI/AQAAciwAAAByQgEAAHIkAAAAciQAAAByJQAAAHKkAAAAyAQAAHMIAAAAAAIEARIBEgF6GERlcGVuZGVuY3lHcmFwaC5fX3JlcHJfXykBTikBcgMAAAApAVQpDXIuAAAAci8AAAByMAAAAHIxAAAAciYAAAByNQEAAHI5AQAAcjoBAAByOwEAAHI8AQAAckMBAABySQEAAHKkAAAAciQAAAByJAAAAHIkAAAAciUAAAByMQEAAEAEAABzFAAAAAgBBA8IBQgKCg8ICwgDCg0KIAgfcjEBAAByMgAAAGMCAAAAAAAAAAAAAAAOAAAACwAAAEMAAABzUgEAAHQAfAGDAX0BdAGDAH0CaQB9A3wARABdTH0EfAKgAnwEoQEBAHwEagNEAF02fQV0BHwFgwFcAn0GfQd0BaAGZAF8BnwHfAShBAEAfAOgB3wGZwChAqAIfAd8BGYCoQEBAHEqcRZ8AEQAXeR9BHwEagl8BGoKQgB8BGoLQgB8BGoMQgB9CHwIRABdwn0Jeg58AaANfAmhAX0KVwBuNAQAdA55zgEAAQABAHQFoA9kAnwJoQIBAHwJoBChAGQDGQB9BnwBoA18BqEBfQpZAG4CMAB8CmoRfQZkBH0LfAZ8A3YAkAFyOnwDfAYZAEQAXUxcAn0HfQx6DnwKoBJ8B6EBfQ1XAG4YBAB0DpABeRoBAAEAAQBkBH0NWQBuAjAAfA1y7HwCoBN8BHwMfAmhAwEAZAV9CwEAkAFxOnHsfAtziHwCoBR8BHwJoQIBAHGIcWh8AlMAKQZhNgEAAE1ha2VzIGEgZGVwZW5kZW5jeSBncmFwaCBmcm9tIHRoZSBnaXZlbiBkaXN0cmlidXRpb25zLgoKICAgIDpwYXJhbWV0ZXIgZGlzdHM6IGEgbGlzdCBvZiBkaXN0cmlidXRpb25zCiAgICA6dHlwZSBkaXN0czogbGlzdCBvZiA6Y2xhc3M6YGRpc3R1dGlsczIuZGF0YWJhc2UuSW5zdGFsbGVkRGlzdHJpYnV0aW9uYCBhbmQKICAgICAgICAgICAgICAgICA6Y2xhc3M6YGRpc3R1dGlsczIuZGF0YWJhc2UuRWdnSW5mb0Rpc3RyaWJ1dGlvbmAgaW5zdGFuY2VzCiAgICA6cnR5cGU6IGEgOmNsYXNzOmBEZXBlbmRlbmN5R3JhcGhgIGluc3RhbmNlCiAgICB6G0FkZCB0byBwcm92aWRlZDogJXMsICVzLCAlc3KeAAAAcgEAAABGVCkVcgcAAAByMQEAAHI1AQAAcnUAAAByDwAAAHJXAAAAclgAAAByKAAAAHIqAAAAcpgAAABymgAAAHKbAAAAcp0AAABydgAAAHIIAAAAclwAAAByoAAAAHIpAAAAcnkAAAByOQEAAHI6AQAAKQ7aBWRpc3RzckQAAADaBWdyYXBocnoAAAByLAAAAHJ7AAAAch8AAABybQAAAHIkAQAAcqEAAABydgAAANoHbWF0Y2hlZNoIcHJvdmlkZXJyeQAAAHIkAAAAciQAAAByJQAAANoKbWFrZV9ncmFwaNAEAABzTgAAAAAICAEGAQQDCAEKAgoBDAEQARoDCAEKAQT/AgEE/wQCCAECAQ4BDAIGAQL/BAIMARACBgIEAQoBEAECAQ4BDgEKAgQBDgEEAQgBBAEQAXJOAQAAYwIAAAAAAAAAAAAAAAcAAAAEAAAAQwAAAHN2AAAAfAF8AHYBchZ0AGQBfAFqARYAgwGCAXQCfACDAX0CfAFnAX0DfAJqA3wBGQB9BHwEcmh8BKAEoQB9BXwDoAV8BaEBAQB8AmoDfAUZAEQAXRZ9BnwGfAN2AXJOfASgBXwGoQEBAHFOcS58A6AEZAKhAQEAfANTACkDetpSZWN1cnNpdmVseSBnZW5lcmF0ZSBhIGxpc3Qgb2YgZGlzdHJpYnV0aW9ucyBmcm9tICpkaXN0cyogdGhhdCBhcmUKICAgIGRlcGVuZGVudCBvbiAqZGlzdCouCgogICAgOnBhcmFtIGRpc3RzOiBhIGxpc3Qgb2YgZGlzdHJpYnV0aW9ucwogICAgOnBhcmFtIGRpc3Q6IGEgZGlzdHJpYnV0aW9uLCBtZW1iZXIgb2YgKmRpc3RzKiBmb3Igd2hpY2ggd2UgYXJlIGludGVyZXN0ZWQKICAgIPoxZ2l2ZW4gZGlzdHJpYnV0aW9uICVyIGlzIG5vdCBhIG1lbWJlciBvZiB0aGUgbGlzdHIBAAAAKQZyBAAAAHIfAAAAck4BAAByMwEAANoDcG9wcioAAAApB3JKAQAAciwAAABySwEAANoDZGVw2gR0b2RvcoUAAADaBHN1Y2NyJAAAAHIkAAAAciUAAADaE2dldF9kZXBlbmRlbnRfZGlzdHMGBQAAcx4AAAAABwgBBAEE/wYCCAIGAQoCBAEIAQoBDgEIAQ4CCgFyVAEAAGMCAAAAAAAAAAAAAAAJAAAABAAAAEMAAABzoAAAAHwBfAB2AXIWdABkAXwBagEWAIMBggF0AnwAgwF9AnQDgwB9A3wCagR8ARkAfQR0A2QCZAOEAHwERACDAYMBfQV8BHKcfASgBaEAZAQZAH0GfAOgBnwGoQEBAHwCagR8BhkAfQd8B0QAXTB9CHwIZAQZAH0GfAZ8A3YBcmh8BnwFdgFyaHwFoAZ8BqEBAQB8BKAHfAihAQEAcWhxQHwDUwApBWEHAQAAUmVjdXJzaXZlbHkgZ2VuZXJhdGUgYSBsaXN0IG9mIGRpc3RyaWJ1dGlvbnMgZnJvbSAqZGlzdHMqIHRoYXQgYXJlCiAgICByZXF1aXJlZCBieSAqZGlzdCouCgogICAgOnBhcmFtIGRpc3RzOiBhIGxpc3Qgb2YgZGlzdHJpYnV0aW9ucwogICAgOnBhcmFtIGRpc3Q6IGEgZGlzdHJpYnV0aW9uLCBtZW1iZXIgb2YgKmRpc3RzKiBmb3Igd2hpY2ggd2UgYXJlIGludGVyZXN0ZWQKICAgICAgICAgICAgICAgICBpbiBmaW5kaW5nIHRoZSBkZXBlbmRlbmNpZXMuCiAgICByTwEAAGMBAAAAAAAAAAAAAAACAAAAAwAAAHMAAABzFgAAAHwAXQ59AXwBZAAZAFYAAQBxAmQBUwApAnIBAAAATnIkAAAAKQJyzQAAANoBdHIkAAAAciQAAAByJQAAAHIXAQAALwUAAHLQAAAAeiVnZXRfcmVxdWlyZWRfZGlzdHMuPGxvY2Fscz4uPGdlbmV4cHI+cgEAAAApCHIEAAAAch8AAAByTgEAAHJLAAAAcjIBAAByUAEAAHItAAAAcioAAAApCXJKAQAAciwAAABySwEAAHKhAAAAclIBAAByXwAAAHKFAAAAWglwcmVkX2xpc3TaBHByZWRyJAAAAHIkAAAAciUAAADaEmdldF9yZXF1aXJlZF9kaXN0cyAFAABzJAAAAAAICAEEAQT/BgIIAgYBCgESAgQBDAEKAQoBCAEIARABCgEOAXJXAQAAYwIAAAAAAAAAAAAAAAUAAAAEAAAASwAAAHM4AAAAfAKgAGQBZAKhAn0DdAFmAGkAfAKkAY4BfQR8AHwEXwJ8AXwEXwN8A3AsZAJ8BF8EdAV8BIMBUwApA3pPCiAgICBBIGNvbnZlbmllbmNlIG1ldGhvZCBmb3IgbWFraW5nIGEgZGlzdCBnaXZlbiBqdXN0IGEgbmFtZSBhbmQgdmVyc2lvbi4KICAgINoHc3VtbWFyeXoXUGxhY2Vob2xkZXIgZm9yIHN1bW1hcnkpBnJQAQAAcgkAAAByHwAAAHJtAAAAclgBAAByFAAAACkFch8AAABybQAAANoGa3dhcmdzclgBAABylgAAAHIkAAAAciQAAAByJQAAANoJbWFrZV9kaXN0PQUAAHMMAAAAAAQMAQ4BBgEGAQoBcloBAAApAXIyAAAAKTdyMQAAANoKX19mdXR1cmVfX3ICAAAAcrYAAABy/QAAAHJUAAAAcrQAAADaB2xvZ2dpbmdywwAAAHJSAAAAcjMAAAByIQEAAHJAAAAAcgQAAAByBQAAANoGY29tcGF0cgYAAABybQAAAHIHAAAAcggAAAByRQAAAHIJAAAAcgoAAAByCwAAAHIMAAAA2gR1dGlscg0AAAByDgAAAHIPAAAAchAAAAByEQAAAHISAAAAchMAAADaB19fYWxsX1/aCWdldExvZ2dlcnIuAAAAclcAAABy2wAAAFoRQ09NTUFORFNfRklMRU5BTUVyCwEAAHJRAAAAchEBAAByHgAAAHIYAAAAchQAAAByFQAAAHIWAAAAchcAAAByWQAAAHJaAAAAcjEBAAByTgEAAHJUAQAAclcBAAByWgEAAHIkAAAAciQAAAByJAAAAHIlAAAA2gg8bW9kdWxlPgYAAABzVAAAAAQCDAIIAQgBCAEIAQgBCAEIAQgBCAIQAQwBEAEYAiQECAUKAgQBBAIIAQb/BAMEAxAeEH8AeRB/AB8QNxB/AH8AShB/AF0EAQQDEH8AEQo2CBoIHQ==