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QWRhcHRlcnQGAAAATk9UU0VUdAsAAABOdWxsSGFuZGxlcnQNAAAAU3RyZWFtSGFuZGxlcnQEAAAAV0FSTnQHAAAAV0FSTklOR3QMAAAAYWRkTGV2ZWxOYW1ldAsAAABiYXNpY0NvbmZpZ3QPAAAAY2FwdHVyZVdhcm5pbmdzdAgAAABjcml0aWNhbHQFAAAAZGVidWd0BwAAAGRpc2FibGV0BQAAAGVycm9ydAkAAABleGNlcHRpb250BQAAAGZhdGFsdAwAAABnZXRMZXZlbE5hbWV0CQAAAGdldExvZ2dlcnQOAAAAZ2V0TG9nZ2VyQ2xhc3N0BAAAAGluZm90AwAAAGxvZ3QNAAAAbWFrZUxvZ1JlY29yZHQOAAAAc2V0TG9nZ2VyQ2xhc3N0BAAAAHdhcm50BwAAAHdhcm5pbmdzJgAAAFZpbmF5IFNhamlwIDx2aW5heV9zYWppcEByZWQtZG92ZS5jb20+dAoAAABwcm9kdWN0aW9ucwcAAAAwLjUuMS4ycxAAAAAwNyBGZWJydWFyeSAyMDEwdAYAAABmcm96ZW5zEwAAAGxvZ2dpbmclc19faW5pdF9fJXNp/P///3MEAAAALnB5Y3MEAAAALnB5b3MDAAAALnB5YwAAAAAAAAAAAwAAAEMAAABzKQAAAHkKAHQAAIIBAFduGAABAQF0AQBqAgCDAABkAQAZagMAagQAU1hkAgBTKAMAAABzNQAAAFJldHVybiB0aGUgZnJhbWUgb2JqZWN0IGZvciB0aGUgY2FsbGVyJ3Mgc3RhY2sgZnJhbWUuaQIAAABOKAUAAAB0CQAAAEV4Y2VwdGlvbnQDAAAAc3lzdAgAAABleGNfaW5mb3QIAAAAdGJfZnJhbWV0BgAAAGZfYmFjaygAAAAAKAAAAAAoAAAAAHNYAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvbG9nZ2luZy9fX2luaXRfXy5weXQMAAAAY3VycmVudGZyYW1lSgAAAHMIAAAAAAIDAQoBAwF0CQAAAF9nZXRmcmFtZWMAAAAAAAAAAAIAAABDAAAAcw0AAAB0AABqAQBkAQCDAQBTKAIAAABOaQMAAAAoAgAAAFIoAAAAUi0AAAAoAAAAACgAAAAAKAAAAABzWAAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2xvZ2dpbmcvX19pbml0X18ucHl0CAAAADxsYW1iZGE+UQAAAHMAAAAAaQEAAABpMgAAAGkoAAAAaR4AAABpFAAAAGkKAAAAaQAAAABjAQAAAAEAAAAEAAAAQwAAAHMUAAAAdAAAagEAfAAAZAEAfAAAFoMCAFMoAgAAAHMPAgAACiAgICBSZXR1cm4gdGhlIHRleHR1YWwgcmVwcmVzZW50YXRpb24gb2YgbG9nZ2luZyBsZXZlbCAnbGV2ZWwnLgoKICAgIElmIHRoZSBsZXZlbCBpcyBvbmUgb2YgdGhlIHByZWRlZmluZWQgbGV2ZWxzIChDUklUSUNBTCwgRVJST1IsIFdBUk5JTkcsCiAgICBJTkZPLCBERUJVRykgdGhlbiB5b3UgZ2V0IHRoZSBjb3JyZXNwb25kaW5nIHN0cmluZy4gSWYgeW91IGhhdmUKICAgIGFzc29jaWF0ZWQgbGV2ZWxzIHdpdGggbmFtZXMgdXNpbmcgYWRkTGV2ZWxOYW1lIHRoZW4gdGhlIG5hbWUgeW91IGhhdmUKICAgIGFzc29jaWF0ZWQgd2l0aCAnbGV2ZWwnIGlzIHJldHVybmVkLgoKICAgIElmIGEgbnVtZXJpYyB2YWx1ZSBjb3JyZXNwb25kaW5nIHRvIG9uZSBvZiB0aGUgZGVmaW5lZCBsZXZlbHMgaXMgcGFzc2VkCiAgICBpbiwgdGhlIGNvcnJlc3BvbmRpbmcgc3RyaW5nIHJlcHJlc2VudGF0aW9uIGlzIHJldHVybmVkLgoKICAgIE90aGVyd2lzZSwgdGhlIHN0cmluZyAiTGV2ZWwgJXMiICUgbGV2ZWwgaXMgcmV0dXJuZWQuCiAgICBzCAAAAExldmVsICVzKAIAAAB0CwAAAF9sZXZlbE5hbWVzdAMAAABnZXQoAQAAAHQFAAAAbGV2ZWwoAAAAACgAAAAAc1gAAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9sb2dnaW5nL19faW5pdF9fLnB5UhwAAACZAAAAcwIAAAAADmMCAAAAAgAAAAQAAABDAAAAcy4AAAB0AACDAAABehgAfAEAdAEAfAAAPHwAAHQBAHwBADxXZAEAdAIAgwAAAVhkAQBTKAIAAABzeQAAAAogICAgQXNzb2NpYXRlICdsZXZlbE5hbWUnIHdpdGggJ2xldmVsJy4KCiAgICBUaGlzIGlzIHVzZWQgd2hlbiBjb252ZXJ0aW5nIGxldmVscyB0byB0ZXh0IGR1cmluZyBtZXNzYWdlIGZvcm1hdHRpbmcuCiAgICBOKAMAAAB0DAAAAF9hY3F1aXJlTG9ja1IvAAAAdAwAAABfcmVsZWFzZUxvY2soAgAAAFIxAAAAdAkAAABsZXZlbE5hbWUoAAAAACgAAAAAc1gAAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9sb2dnaW5nL19faW5pdF9fLnB5UhMAAACpAAAAcwoAAAAABgcBAwEKAQ4CYwEAAAACAAAABAAAAEMAAABzcAAAAHQAAHwAAHQBAHQCAGYCAIMCAHIeAHwAAH0BAG5OAHQDAHwAAIMBAHwAAGsCAHJcAHwAAHQEAGsHAHJPAHQFAGQBAHwAABaDAQCCAQBuAAB0BAB8AAAZfQEAbhAAdAYAZAIAfAAAFoMBAIIBAHwBAFMoAwAAAE5zEQAAAFVua25vd24gbGV2ZWw6ICVycyoAAABMZXZlbCBub3QgYW4gaW50ZWdlciBvciBhIHZhbGlkIHN0cmluZzogJXIoBwAAAHQKAAAAaXNpbnN0YW5jZXQDAAAAaW50dAQAAABsb25ndAMAAABzdHJSLwAAAHQKAAAAVmFsdWVFcnJvcnQJAAAAVHlwZUVycm9yKAIAAABSMQAAAHQCAAAAcnYoAAAAACgAAAAAc1gAAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9sb2dnaW5nL19faW5pdF9fLnB5dAsAAABfY2hlY2tMZXZlbLYAAABzEAAAAAABFQEJARIBDAETAQ0CEAFjAAAAAAAAAAABAAAAQwAAAHMXAAAAdAAAchMAdAAAagEAgwAAAW4AAGQBAFMoAgAAAHOAAAAACiAgICBBY3F1aXJlIHRoZSBtb2R1bGUtbGV2ZWwgbG9jayBmb3Igc2VyaWFsaXppbmcgYWNjZXNzIHRvIHNoYXJlZCBkYXRhLgoKICAgIFRoaXMgc2hvdWxkIGJlIHJlbGVhc2VkIHdpdGggX3JlbGVhc2VMb2NrKCkuCiAgICBOKAIAAAB0BQAAAF9sb2NrdAcAAABhY3F1aXJlKAAAAAAoAAAAACgAAAAAc1gAAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9sb2dnaW5nL19faW5pdF9fLnB5UjIAAADSAAAAcwQAAAAABgYBYwAAAAAAAAAAAQAAAEMAAABzFwAAAHQAAHITAHQAAGoBAIMAAAFuAABkAQBTKAIAAABzSwAAAAogICAgUmVsZWFzZSB0aGUgbW9kdWxlLWxldmVsIGxvY2sgYWNxdWlyZWQgYnkgY2FsbGluZyBfYWNxdWlyZUxvY2soKS4KICAgIE4oAgAAAFI9AAAAdAcAAAByZWxlYXNlKAAAAAAoAAAAACgAAAAAc1gAAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9sb2dnaW5nL19faW5pdF9fLnB5UjMAAADbAAAAcwQAAAAABAYBYwAAAAAAAAAAAgAAAEIAAABzLAAAAGUAAFoBAGQAAFoCAGQEAGQBAIQBAFoEAGQCAIQAAFoFAGQDAIQAAFoGAFJTKAUAAABzEQIAAAogICAgQSBMb2dSZWNvcmQgaW5zdGFuY2UgcmVwcmVzZW50cyBhbiBldmVudCBiZWluZyBsb2dnZWQuCgogICAgTG9nUmVjb3JkIGluc3RhbmNlcyBhcmUgY3JlYXRlZCBldmVyeSB0aW1lIHNvbWV0aGluZyBpcyBsb2dnZWQuIFRoZXkKICAgIGNvbnRhaW4gYWxsIHRoZSBpbmZvcm1hdGlvbiBwZXJ0aW5lbnQgdG8gdGhlIGV2ZW50IGJlaW5nIGxvZ2dlZC4gVGhlCiAgICBtYWluIGluZm9ybWF0aW9uIHBhc3NlZCBpbiBpcyBpbiBtc2cgYW5kIGFyZ3MsIHdoaWNoIGFyZSBjb21iaW5lZAogICAgdXNpbmcgc3RyKG1zZykgJSBhcmdzIHRvIGNyZWF0ZSB0aGUgbWVzc2FnZSBmaWVsZCBvZiB0aGUgcmVjb3JkLiBUaGUKICAgIHJlY29yZCBhbHNvIGluY2x1ZGVzIGluZm9ybWF0aW9uIHN1Y2ggYXMgd2hlbiB0aGUgcmVjb3JkIHdhcyBjcmVhdGVkLAogICAgdGhlIHNvdXJjZSBsaW5lIHdoZXJlIHRoZSBsb2dnaW5nIGNhbGwgd2FzIG1hZGUsIGFuZCBhbnkgZXhjZXB0aW9uCiAgICBpbmZvcm1hdGlvbiB0byBiZSBsb2dnZWQuCiAgICBjCQAAAAsAAAAKAAAAQwAAAHMiAgAAdAAAagAAgwAAfQkAfAEAfAAAXwEAfAUAfAAAXwIAfAYAcmAAdAMAfAYAgwEAZAEAawIAcmAAdAQAfAYAZAIAGXQFAIMCAHJgAHwGAGQCABlyYAB8BgBkAgAZfQYAbgAAfAYAfAAAXwYAdAcAfAIAgwEAfAAAXwgAfAIAfAAAXwkAfAMAfAAAXwoAeTUAdAsAagwAag0AfAMAgwEAfAAAXw4AdAsAagwAag8AfAAAag4AgwEAZAIAGXwAAF8QAFduLAAEdBEAdBIAdBMAZgMAawoAcu0AAQEBfAMAfAAAXw4AZAMAfAAAXxAAbgEAWHwHAHwAAF8UAGQIAHwAAF8WAHwEAHwAAF8XAHwIAHwAAF8YAHwJAHwAAF8ZAHwJAHQaAHwJAIMBABhkBAAUfAAAXxsAfAAAahkAdBwAGGQEABR8AABfHQB0HgBydgF0HwBydgF0HwBqIACDAAB8AABfHwB0IQBqIgCDAABqAQB8AABfIwBuEgBkCAB8AABfHwBkCAB8AABfIwB0JABzmgFkCAB8AABfJQBuVABkBQB8AABfJQB0JgBqJwBqKABkBgCDAQB9CgB8CgBkCABrCQBy7gF5FgB8CgBqKQCDAABqAQB8AABfJQBXce4BBHQqAGsKAHLqAQEBAXHuAVhuAAB0KwByFQJ0LAB0CwBkBwCDAgByFQJ0CwBqLQCDAAB8AABfLgBuCQBkCAB8AABfLgBkCABTKAkAAABzSwAAAAogICAgICAgIEluaXRpYWxpemUgYSBsb2dnaW5nIHJlY29yZCB3aXRoIGludGVyZXN0aW5nIGluZm9ybWF0aW9uLgogICAgICAgIGkBAAAAaQAAAABzDgAAAFVua25vd24gbW9kdWxlaegDAAB0CwAAAE1haW5Qcm9jZXNzdA8AAABtdWx0aXByb2Nlc3Npbmd0BgAAAGdldHBpZE4oLwAAAHQEAAAAdGltZXQEAAAAbmFtZXQDAAAAbXNndAMAAABsZW5SNQAAAHQEAAAAZGljdHQEAAAAYXJnc1IcAAAAdAkAAABsZXZlbG5hbWV0BwAAAGxldmVsbm90CAAAAHBhdGhuYW1ldAIAAABvc3QEAAAAcGF0aHQIAAAAYmFzZW5hbWV0CAAAAGZpbGVuYW1ldAgAAABzcGxpdGV4dHQGAAAAbW9kdWxlUjoAAABSOQAAAHQOAAAAQXR0cmlidXRlRXJyb3JSKQAAAHQEAAAATm9uZXQIAAAAZXhjX3RleHR0BgAAAGxpbmVub3QIAAAAZnVuY05hbWV0BwAAAGNyZWF0ZWRSNwAAAHQFAAAAbXNlY3N0CgAAAF9zdGFydFRpbWV0DwAAAHJlbGF0aXZlQ3JlYXRlZHQKAAAAbG9nVGhyZWFkc3QGAAAAdGhyZWFkdAkAAABnZXRfaWRlbnR0CQAAAHRocmVhZGluZ3QOAAAAY3VycmVudF90aHJlYWR0CgAAAHRocmVhZE5hbWV0EgAAAGxvZ011bHRpcHJvY2Vzc2luZ3QLAAAAcHJvY2Vzc05hbWVSKAAAAHQHAAAAbW9kdWxlc1IwAAAAdA8AAABjdXJyZW50X3Byb2Nlc3N0DQAAAFN0YW5kYXJkRXJyb3J0DAAAAGxvZ1Byb2Nlc3Nlc3QHAAAAaGFzYXR0clJCAAAAdAcAAABwcm9jZXNzKAsAAAB0BAAAAHNlbGZSRAAAAFIxAAAAUksAAABSVQAAAFJFAAAAUkgAAABSKQAAAHQEAAAAZnVuY3QCAAAAY3R0AgAAAG1wKAAAAAAoAAAAAHNYAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvbG9nZ2luZy9fX2luaXRfXy5weXQIAAAAX19pbml0X1/yAAAAc04AAAAABQwBCQEJDjUBDQEJAQ8BCQEJAQMBFQEgARYBCQENAQkBCQEJAQkBCQEXARQB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UmVjb3JkIGlzIGNvbnN0cnVjdGVkLiBUaGV5IGFyZQogICAgcmVzcG9uc2libGUgZm9yIGNvbnZlcnRpbmcgYSBMb2dSZWNvcmQgdG8gKHVzdWFsbHkpIGEgc3RyaW5nIHdoaWNoIGNhbgogICAgYmUgaW50ZXJwcmV0ZWQgYnkgZWl0aGVyIGEgaHVtYW4gb3IgYW4gZXh0ZXJuYWwgc3lzdGVtLiBUaGUgYmFzZSBGb3JtYXR0ZXIKICAgIGFsbG93cyBhIGZvcm1hdHRpbmcgc3RyaW5nIHRvIGJlIHNwZWNpZmllZC4gSWYgbm9uZSBpcyBzdXBwbGllZCwgdGhlCiAgICBkZWZhdWx0IHZhbHVlIG9mICIlcyhtZXNzYWdlKVxuIiBpcyB1c2VkLgoKICAgIFRoZSBGb3JtYXR0ZXIgY2FuIGJlIGluaXRpYWxpemVkIHdpdGggYSBmb3JtYXQgc3RyaW5nIHdoaWNoIG1ha2VzIHVzZSBvZgogICAga25vd2xlZGdlIG9mIHRoZSBMb2dSZWNvcmQgYXR0cmlidXRlcyAtIGUuZy4gdGhlIGRlZmF1bHQgdmFsdWUgbWVudGlvbmVkCiAgICBhYm92ZSBtYWtlcyB1c2Ugb2YgdGhlIGZhY3QgdGhhdCB0aGUgdXNlcidzIG1lc3NhZ2UgYW5kIGFyZ3VtZW50cyBhcmUgcHJlLQogICAgZm9ybWF0dGVkIGludG8gYSBMb2dSZWNvcmQncyBtZXNzYWdlIGF0dHJpYnV0ZS4gQ3VycmVudGx5LCB0aGUgdXNlZnVsCiAgICBhdHRyaWJ1dGVzIGluIGEgTG9nUmVjb3JkIGFyZSBkZXNjcmliZWQgYnk6CgogICAgJShuYW1lKXMgICAgICAgICAgICBOYW1lIG9mIHRoZSBsb2dnZXIgKGxvZ2dpbmcgY2hhbm5lbCkKICAgICUobGV2ZWxubylzICAgICAgICAgTnVtZXJpYyBsb2dnaW5nIGxldmVsIGZvciB0aGUgbWVzc2FnZSAoREVCVUcsIElORk8sCiAgICAgICAgICAgICAgICAgICAgICAgIFdBUk5JTkcsIEVSUk9SLCBDUklUSUNBTCkKICAgICUobGV2ZWxuYW1lKXMgICAgICAgVGV4dCBsb2dnaW5nIGxldmVsIGZvciB0aGUgbWVzc2FnZSAoIkRFQlVHIiwgIklORk8iLAogICAgICAgICAgICAgICAgICAgICAgICAiV0FSTklORyIsICJFUlJPUiIsICJDUklUSUNBTCIpCiAgICAlKHBhdGhuYW1lKXMgICAgICAgIEZ1bGwgcGF0aG5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlIHdoZXJlIHRoZSBsb2dnaW5nCiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwgd2FzIGlzc3VlZCAoaWYgYXZhaWxhYmxlKQogICAgJShmaWxlbmFtZSlzICAgICAgICBGaWxlbmFtZSBwb3J0aW9uIG9mIHBhdGhuYW1lCiAgICAlKG1vZHVsZSlzICAgICAgICAgIE1vZHVsZSAobmFtZSBwb3J0aW9uIG9mIGZpbGVuYW1lKQogICAgJShsaW5lbm8pZCAgICAgICAgICBTb3VyY2UgbGluZSBudW1iZXIgd2hlcmUgdGhlIGxvZ2dpbmcgY2FsbCB3YXMgaXNzdWVkCiAgICAgICAgICAgICAgICAgICAgICAgIChpZiBhdmFpbGFibGUpCiAgICAlKGZ1bmNOYW1lKXMgICAgICAgIEZ1bmN0aW9uIG5hbWUKICAgICUoY3JlYXRlZClmICAgICAgICAgVGltZSB3aGVuIHRoZSBMb2dSZWNvcmQgd2FzIGNyZWF0ZWQgKHRpbWUudGltZSgpCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSkKICAgICUoYXNjdGltZSlzICAgICAgICAgVGV4dHVhbCB0aW1lIHdoZW4gdGhlIExvZ1JlY29yZCB3YXMgY3JlYXRlZAogICAgJShtc2VjcylkICAgICAgICAgICBNaWxsaXNlY29uZCBwb3J0aW9uIG9mIHRoZSBjcmVhdGlvbiB0aW1lCiAgICAlKHJlbGF0aXZlQ3JlYXRlZClkIFRpbWUgaW4gbWlsbGlzZWNvbmRzIHdoZW4gdGhlIExvZ1JlY29yZCB3YXMgY3JlYXRlZCwKICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmUgdG8gdGhlIHRpbWUgdGhlIGxvZ2dpbmcgbW9kdWxlIHdhcyBsb2FkZWQKICAgICAgICAgICAgICAgICAgICAgICAgKHR5cGljYWxseSBhdCBhcHBsaWNhdGlvbiBzdGFydHVwIHRpbWUpCiAgICAlKHRocmVhZClkICAgICAgICAgIFRocmVhZCBJRCAoaWYgYXZhaWxhYmxlKQogICAgJSh0aHJlYWROYW1lKXMgICAgICBUaHJlYWQgbmFtZSAoaWYgYXZhaWxhYmxlKQogICAgJShwcm9jZXNzKWQgICAgICAgICBQcm9jZXNzIElEIChpZiBhdmFpbGFibGUpCiAgICAlKG1lc3NhZ2UpcyAgICAgICAgIFRoZSByZXN1bHQgb2YgcmVjb3JkLmdldE1lc3NhZ2UoKSwgY29tcHV0ZWQganVzdCBhcwogICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVjb3JkIGlzIGVtaXR0ZWQKICAgIGMDAAAAAwAAAAIAAABDAAAAcygAAAB8AQByEgB8AQB8AABfAABuCQBkAQB8AABfAAB8AgB8AABfAQBkAgBTKAMAAABzOAEAAAogICAgICAgIEluaXRpYWxpemUgdGhlIGZvcm1hdHRlciB3aXRoIHNwZWNpZmllZCBmb3JtYXQgc3RyaW5ncy4KCiAgICAgICAgSW5pdGlhbGl6ZSB0aGUgZm9ybWF0dGVyIGVpdGhlciB3aXRoIHRoZSBzcGVjaWZpZWQgZm9ybWF0IHN0cmluZywgb3IgYQogICAgICAgIGRlZmF1bHQgYXMgZGVzY3JpYmVkIGFib3ZlLiBBbGxvdyBmb3Igc3BlY2lhbGl6ZWQgZGF0ZSBmb3JtYXR0aW5nIHdpdGgKICAgICAgICB0aGUgb3B0aW9uYWwgZGF0ZWZtdCBhcmd1bWVudCAoaWYgb21pdHRlZCwgeW91IGdldCB0aGUgSVNPODYwMSBmb3JtYXQpLgogICAgICAgIHMLAAAAJShtZXNzYWdlKXNOKAIAAAB0BAAAAF9mbXR0BwAAAGRhdGVmbXQoAwAAAFJpAAAAdAMAAABmbXRSegAAACgAAAAAKAAAAABzWAAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2xvZ2dpbmcvX19pbml0X18ucHlSbQAAAIYBAABzCAAAAAAIBgEMAgkBYwMAAAAGAAAAAwAAAEMAAABzVgAAAHwAAGoAAHwBAGoBAIMBAH0DAHwCAHItAHQCAGoDAHwCAHwDAIMCAH0EAG4lAHQCAGoDAGQBAHwDAIMCAH0FAGQCAHwFAHwBAGoEAGYCABZ9BAB8BABTKAMAAABzDgQAAAogICAgICAgIFJldHVybiB0aGUgY3JlYXRpb24gdGltZSBvZiB0aGUgc3BlY2lmaWVkIExvZ1JlY29yZCBhcyBmb3JtYXR0ZWQgdGV4dC4KCiAgICAgICAgVGhpcyBtZXRob2Qgc2hvdWxkIGJlIGNhbGxlZCBmcm9tIGZvcm1hdCgpIGJ5IGEgZm9ybWF0dGVyIHdoaWNoCiAgICAgICAgd2FudHMgdG8gbWFrZSB1c2Ugb2YgYSBmb3JtYXR0ZWQgdGltZS4gVGhpcyBtZXRob2QgY2FuIGJlIG92ZXJyaWRkZW4KICAgICAgICBpbiBmb3JtYXR0ZXJzIHRvIHByb3ZpZGUgZm9yIGFueSBzcGVjaWZpYyByZXF1aXJlbWVudCwgYnV0IHRoZQogICAgICAgIGJhc2ljIGJlaGF2aW91ciBpcyBhcyBmb2xsb3dzOiBpZiBkYXRlZm10IChhIHN0cmluZykgaXMgc3BlY2lmaWVkLAogICAgICAgIGl0IGlzIHVzZWQgd2l0aCB0aW1lLnN0cmZ0aW1lKCkgdG8gZm9ybWF0IHRoZSBjcmVhdGlvbiB0aW1lIG9mIHRoZQogICAgICAgIHJlY29yZC4gT3RoZXJ3aXNlLCB0aGUgSVNPODYwMSBmb3JtYXQgaXMgdXNlZC4gVGhlIHJlc3VsdGluZwogICAgICAgIHN0cmluZyBpcyByZXR1cm5lZC4gVGhpcyBmdW5jdGlvbiB1c2VzIGEgdXNlci1jb25maWd1cmFibGUgZnVuY3Rpb24KICAgICAgICB0byBjb252ZXJ0IHRoZSBjcmVhdGlvbiB0aW1lIHRvIGEgdHVwbGUuIEJ5IGRlZmF1bHQsIHRpbWUubG9jYWx0aW1lKCkKICAgICAgICBpcyB1c2VkOyB0byBjaGFuZ2UgdGhpcyBmb3IgYSBwYXJ0aWN1bGFyIGZvcm1hdHRlciBpbnN0YW5jZSwgc2V0IHRoZQogICAgICAgICdjb252ZXJ0ZXInIGF0dHJpYnV0ZSB0byBhIGZ1bmN0aW9u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aW5nIGZvcm1hdHRpbmcgb3BlcmF0aW9uIHdoaWNoIHlpZWxkcyB0aGUgcmV0dXJuZWQgc3RyaW5nLgogICAgICAgIEJlZm9yZSBmb3JtYXR0aW5nIHRoZSBkaWN0aW9uYXJ5LCBhIGNvdXBsZSBvZiBwcmVwYXJhdG9yeSBzdGVwcwogICAgICAgIGFyZSBjYXJyaWVkIG91dC4gVGhlIG1lc3NhZ2UgYXR0cmlidXRlIG9mIHRoZSByZWNvcmQgaXMgY29tcHV0ZWQKICAgICAgICB1c2luZyBMb2dSZWNvcmQuZ2V0TWVzc2FnZSgpLiBJZiB0aGUgZm9ybWF0dGluZyBzdHJpbmcgdXNlcyB0aGUKICAgICAgICB0aW1lIChhcyBkZXRlcm1pbmVkIGJ5IGEgY2FsbCB0byB1c2VzVGltZSgpLCBmb3JtYXRUaW1lKCkgaXMKICAgICAgICBjYWxsZWQgdG8gZm9ybWF0IHRoZSBldmVudCB0aW1lLiBJZiB0aGVyZSBpcyBleGNlcHRpb24gaW5mb3JtYXRpb24sCiAgICAgICAgaXQgaXMgZm9ybWF0dGVkIHVzaW5nIGZvcm1hdEV4Y2VwdGlvbigpIGFuZCBhcHBlbmRlZCB0byB0aGUgbWVzc2FnZS4KICAgICAgICBp/////3MBAAAACnQHAAAAcmVwbGFjZSgPAAAAUnIAAAB0BwAAAG1lc3NhZ2VSjAAAAFKBAAAAUnoAAAB0BwAAAGFzY3RpbWVSeQAAAFJ3AAAAUikAAABSVAAAAFKKAAAAUnEAAAB0BgAAAGRlY29kZVIoAAAAdBUAAABnZXRmaWxlc3lzdGVtZW5jb2RpbmcoAwAAAFJpAAAAUn4AAABSfwAAACgAAAAAKAAAAABzWAAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2xvZ2dpbmcvX19pbml0X18ucHl0BgAAAGZvcm1hdMMBAABzIAAAAAANDwEMARsBEAEJAwkBGwEJARABDQEDAREBDQcVAREBTigMAAAAUnMAAABSdAAAAFJ1AAAAUkMAAAB0CQAAAGxvY2FsdGltZVJ8AAAAUlMAAABSbQAAAFKBAAAAUooAAABSjAAAAFKSAAAAKAAAAAAoAAAAACgAAAAAc1gAAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9sb2dnaW5nL19faW5pdF9fLnB5UggAAABaAQAAcw4AAAAGKAYCCQIPDgwaCQ8JBmMAAAAAAAAAAAIAAABCAAAAczUAAABlAABaAQBkAABaAgBkBQBkAQCEAQBaBABkAgCEAABaBQBkAwCEAABaBgBkBACEAABaBwBSUygGAAAAc0IAAAAKICAgIEEgZm9ybWF0dGVyIHN1aXRhYmxlIGZvciBmb3JtYXR0aW5nIGEgbnVtYmVyIG9mIHJlY29yZHMuCiAgICBjAgAAAAIAAAACAAAAQwAAAHMfAAAAfAEAchIAfAEAfAAAXwAAbgkAdAEAfAAAXwAAZAEAUygCAAAAc20AAAAKICAgICAgICBPcHRpb25hbGx5IHNwZWNpZnkgYSBmb3JtYXR0ZXIgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGZvcm1hdCBlYWNoCiAgICAgICAgaW5kaXZpZHVhbCByZWNvcmQuCiAgICAgICAgTigCAAAAdAcAAABsaW5lZm10dBEAAABfZGVmYXVsdEZvcm1hdHRlcigCAAAAUmkAAABSlAAAACgAAAAAKAAAAABzWAAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2xvZ2dpbmcvX19pbml0X18ucHlSbQAAAPIBAABzBgAAAAAFBgEMAmMCAAAAAgAAAAEAAABDAAAAcwQAAABkAQBTKAIAAABzRQAAAAogICAgICAgIFJldHVybiB0aGUgaGVhZGVyIHN0cmluZyBmb3IgdGhlIHNwZWNpZmllZCByZWNvcmRzLgogICAgICAgIFJ2AAAAKAAAAAAoAgAAAFJpAAAAdAcAAAByZWNvcmRzKAAAAAAoAAAAAHNYAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvbG9nZ2luZy9fX2luaXRfXy5weXQMAAAAZm9ybWF0SGVhZGVy/AEAAHMCAAAAAARjAgAAAAIAAAABAAAAQwAAAHMEAAAAZAEAUygCAAAAc0UAAAAKICAgICAgICBSZXR1cm4gdGhlIGZvb3RlciBzdHJpbmcgZm9yIHRoZSBzcGVjaWZpZWQgcmVjb3Jkcy4KICAgICAgICBSdgAAACgAAAAAKAIAAABSaQAAAFKWAAAAKAAAAAAoAAAAAHNYAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvbG9nZ2luZy9fX2luaXRfXy5weXQMAAAAZm9ybWF0Rm9vdGVyAgIAAHMCAAAAAARjAgAAAAQAAAAEAAAAQwAAAHNsAAAAZAEAfQIAdAAAfAEAgwEAZAIAawQAcmgAfAIAfAAAagEAfAEAgwEAF30CAHgkAHwBAERdHAB9AwB8AgB8AABqAgBqAwB8AwCDAQAXfQIAcTIAV3wCAHwAAGoEAHwBAIMBABd9AgBuAAB8AgBTKAMAAABzUQAAAAogICAgICAgIEZvcm1hdCB0aGUgc3BlY2lmaWVkIHJlY29yZHMgYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIGEgc3RyaW5nLgogICAgICAgIFJ2AAAAaQAAAAAoBQAAAFJGAAAAUpcAAABSlAAAAFKSAAAAUpgAAAAoBAAAAFJpAAAAUpYAAABSOwAAAFJ+AAAAKAAAAAAoAAAAAHNYAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvbG9nZ2luZy9fX2luaXRfXy5weVKSAAAACAIAAHMOAAAAAAQGARIBEwENARoBFgFOKAgAAABScwAAAFJ0AAAAUnUAAABSUwAAAFJtAAAAUpcAAABSmAAAAFKSAAAAKAAAAAAoAAAAACgAAAAAc1gAAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9sb2dnaW5nL19faW5pdF9fLnB5UgEAAADuAQAAcwoAAAAGAwYBDAoJBgkGYwAAAAAAAAAAAgAAAEIAAABzIwAAAGUAAFoBAGQAAFoCAGQBAGQCAIQBAFoDAGQDAIQAAFoEAFJTKAQAAABz9gEAAAogICAgRmlsdGVyIGluc3RhbmNlcyBhcmUgdXNlZCB0byBwZXJmb3JtIGFyYml0cmFyeSBmaWx0ZXJpbmcgb2YgTG9nUmVjb3Jkcy4KCiAgICBMb2dnZXJzIGFuZCBIYW5kbGVycyBjYW4gb3B0aW9uYWxseSB1c2UgRmlsdGVyIGluc3RhbmNlcyB0byBmaWx0ZXIKICAgIHJlY29yZHMgYXMgZGVzaXJlZC4gVGhlIGJhc2UgZmlsdGVyIGNsYXNzIG9ubHkgYWxsb3dzIGV2ZW50cyB3aGljaCBhcmUKICAgIGJlbG93IGEgY2VydGFpbiBwb2ludCBpbiB0aGUgbG9nZ2VyIGhpZXJhcmNoeS4gRm9yIGV4YW1wbGUsIGEgZmlsdGVyCiAgICBpbml0aWFsaXplZCB3aXRoICJBLkIiIHdpbGwgYWxsb3cgZXZlbnRzIGxvZ2dlZCBieSBsb2dnZXJzICJBLkIiLAogICAgIkEuQi5DIiwgIkEuQi5DLkQiLCAiQS5CLkQiIGV0Yy4gYnV0IG5vdCAiQS5CQiIsICJCLkEuQiIgZXRjLiBJZgogICAgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgZW1wdHkgc3RyaW5nLCBhbGwgZXZlbnRzIGFyZSBwYXNzZWQuCiAgICBSdgAAAGMCAAAAAgAAAAIAAABDAAAAcxwAAAB8AQB8AABfAAB0AQB8AQCDAQB8AABfAgBkAQBTKAIAAABz5gAAAAogICAgICAgIEluaXRpYWxpemUgYSBmaWx0ZXIuCgogICAgICAgIEluaXRpYWxpemUgd2l0aCB0aGUgbmFtZSBvZiB0aGUgbG9nZ2VyIHdoaWNoLCB0b2dldGhlciB3aXRoIGl0cwogICAgICAgIGNoaWxkcmVuLCB3aWxsIGhhdmUgaXRzIGV2ZW50cyBhbGxvd2VkIHRocm91Z2ggdGhlIGZpbHRlci4gSWYgbm8KICAgICAgICBuYW1lIGlzIHNwZWNpZmllZCwgYWxsb3cgZXZlcnkgZXZlbnQuCiAgICAgICAgTigDAAAAUkQAAABSRgAAAHQEAAAAbmxlbigCAAAAUmkAAABSRAAAACgAAAAAKAAAAABzWAAAAC90bXAvbmRrLVVzZXIvYnVpbGRo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AFMoAwAAAHPHAAAACiAgICBTZXQgdGhlIGNsYXNzIHRvIGJlIHVzZWQgd2hlbiBpbnN0YW50aWF0aW5nIGEgbG9nZ2VyLiBUaGUgY2xhc3Mgc2hvdWxkCiAgICBkZWZpbmUgX19pbml0X18oKSBzdWNoIHRoYXQgb25seSBhIG5hbWUgYXJndW1lbnQgaXMgcmVxdWlyZWQsIGFuZCB0aGUKICAgIF9faW5pdF9fKCkgc2hvdWxkIGNhbGwgTG9nZ2VyLl9faW5pdF9fKCkKICAgIHMoAAAAbG9nZ2VyIG5vdCBkZXJpdmVkIGZyb20gbG9nZ2luZy5Mb2dnZXI6IE4oBQAAAFIMAAAAdAoAAABpc3N1YmNsYXNzUjoAAABScwAAAHQMAAAAX2xvZ2dlckNsYXNzKAEAAAB0BQAAAGtsYXNzKAAAAAAoAAAAAHNYAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvbG9nZ2luZy9fX2luaXRfXy5weVIiAAAAzAMAAHMKAAAAAAYMAQ8BBgETAmMAAAAAAAAAAAEAAABDAAAAcwQAAAB0AABTKAEAAABzQgAAAAogICAgUmV0dXJuIHRoZSBjbGFzcyB0byBiZSB1c2VkIHdoZW4gaW5zdGFudGlhdGluZyBhIGxvZ2dlci4KICAgICgBAAAAUtQAAAAoAAAAACgAAAAAKAAAAABzWAAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2xvZ2dpbmcvX19pbml0X18ucHlSHgAAANkDAABzAgAAAAAFdAcAAABNYW5hZ2VyYwAAAAAAAAAAAQAAAEIAAABzOwAAAGUAAFoBAGQAAFoCAGQBAIQAAFoDAGQCAIQAAFoEAGQDAIQAAFoFAGQEAIQAAFoGAGQFAIQAAFoHAFJTKAYAAABzdAAAAAogICAgVGhlcmUgaXMgW3VuZGVyIG5vcm1hbCBjaXJjdW1zdGFuY2VzXSBqdXN0IG9uZSBNYW5hZ2VyIGluc3RhbmNlLCB3aGljaAogICAgaG9sZHMgdGhlIGhpZXJhcmNoeSBvZiBsb2dnZXJzLgogICAgYwIAAAACAAAAAgAAAEMAAABzMQAAAHwBAHwAAF8AAGQBAHwAAF8BAGQBAHwAAF8CAGkAAHwAAF8DAGQCAHwAAF8FAGQCAFMoAwAAAHNUAAAACiAgICAgICAgSW5pdGlhbGl6ZSB0aGUgbWFuYWdlciB3aXRoIHRoZSByb290IG5vZGUgb2YgdGhlIGxvZ2dlciBoaWVyYXJjaHkuCiAgICAgICAgaQAAAABOKAYAAAB0BAAAAHJvb3RSGAAAAHQXAAAAZW1pdHRlZE5vSGFuZGxlcldhcm5pbmd0CgAAAGxvZ2dlckRpY3RSUwAAAHQLAAAAbG9nZ2VyQ2xhc3MoAgAAAFJpAAAAdAgAAAByb290bm9kZSgAAAAAKAAAAABzWAAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2xvZ2dpbmcvX19pbml0X18ucHlSbQAAAOUDAABzCgAAAAAECQEJAQkBCQFjAgAAAAQAAAAEAAAAQwAAAHMWAQAAZAMAfQIAdAEAfAEAdAIAgwIAcyQAdAMAZAEAgwEAggEAbgAAdAEAfAEAdAQAgwIAckUAfAEAagUAZAIAgwEAfQEAbgAAdAYAgwAAAXq7AHwBAHwAAGoHAGsGAHLOAHwAAGoHAHwBABl9AgB0AQB8AgB0CACDAgByBgF8AgB9AwB8AABqCQBwjAB0CgB8AQCDAQB9AgB8AAB8AgBfCwB8AgB8AABqBwB8AQA8fAAAagwAfAMAfAIAgwIAAXwAAGoNAHwCAIMBAAFxBgFuOAB8AABqCQBw2gB0CgB8AQCDAQB9AgB8AAB8AgBfCwB8AgB8AABqBwB8AQA8fAAAag0AfAIAgwEAAVdkAwB0DgCDAAABWHwCAFMoBAAAAHPhAQAACiAgICAgICAgR2V0IGEgbG9nZ2VyIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lIChjaGFubmVsIG5hbWUpLCBjcmVhdGluZyBpdAogICAgICAgIGlmIGl0IGRvZXNuJ3QgeWV0IGV4aXN0LiBUaGlzIG5hbWUgaXMgYSBkb3Qtc2VwYXJhdGVkIGhpZXJhcmNoaWNhbAogICAgICAgIG5hbWUsIHN1Y2ggYXMgImEiLCAiYS5iIiwgImEuYi5jIiBvciBzaW1pbGFyLgoKICAgICAgICBJZiBhIFBsYWNlSG9sZGVyIGV4aXN0ZWQgZm9yIHRoZSBzcGVjaWZpZWQgbmFtZSBbaS5lLiB0aGUgbG9nZ2VyCiAgICAgICAgZGlkbid0IGV4aXN0IGJ1dCBhIGNoaWxkIG9mIGl0IGRpZF0sIHJlcGxhY2UgaXQgd2l0aCB0aGUgY3JlYXRlZAogICAgICAgIGxvZ2dlciBhbmQgZml4IHVwIHRoZSBwYXJlbnQvY2hpbGQgcmVmZXJlbmNlcyB3aGljaCBwb2ludGVkIHRvIHRoZQogICAgICAgIHBsYWNlaG9sZGVyIHRvIG5vdyBwb2ludCB0byB0aGUgbG9nZ2VyLgogICAgICAgIHMnAAAAQSBsb2dnZXIgbmFtZSBtdXN0IGJlIHN0cmluZyBvciBVbmljb2RlcwUAAAB1dGYtOE4oDwAAAFJTAAAAUjUAAABScAAAAFI6AAAAUsAAAABSwwAAAFIyAAAAUtkAAABS0AAAAFLaAAAAUtQAAAB0BwAAAG1hbmFnZXJ0DgAAAF9maXh1cENoaWxkcmVudA0AAABfZml4dXBQYXJlbnRzUjMAAAAoBAAAAFJpAAAAUkQAAABSOwAAAHQCAAAAcGgoAAAAACgAAAAAc1gAAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9sb2dnaW5nL19faW5pdF9fLnB5Uh0AAADvAwAAcywAAAAACwYBDwEPAQ8BEgEHAQMBDwENAQ8BBgEVAQkBDQEQARMCFQEJAQ0BEQIIAWMCAAAAAgAAAAMAAABDAAAAc0EAAAB8AQB0AABrAwByNAB0AQB8AQB0AACDAgBzNAB0AgBkAQB8AQBqAwAXgwEAggEAcTQAbgAAfAEAfAAAXwQAZAIAUygDAAAAc1kAAAAKICAgICAgICBTZXQgdGhlIGNsYXNzIHRvIGJlIHVzZWQgd2hlbiBpbnN0YW50aWF0aW5nIGEgbG9nZ2VyIHdpdGggdGhpcyBNYW5hZ2VyLgogICAgICAgIHMoAAAAbG9nZ2VyIG5vdCBkZXJpdmVkIGZyb20gbG9nZ2luZy5Mb2dnZXI6IE4oBQAAAFIMAAAAUtMAAABSOgAAAFJzAAAAUtoAAAAoAgAAAFJpAAAAUtUAAAAoAAAAACgAAAAAc1gAAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9sb2dnaW5nL19faW5pdF9fLnB5UiIAAAATBAAAcwoAAAAABAwBDwEGARMBYwIAAAAHAAAABgAAAEMAAABz0QAAAHwBAGoAAH0CAHwCAGoBAGQBAIMBAH0DAGQEAH0EAHiRAHwDAGQCAGsEAHKxAHwEAAxysQB8AgB8AwAgfQUAfAUAfAAAagMAawcAcmMAdAQAfAEAgwEAfAAAagMAfAUAPG4yAHwAAGoDAHwFABl9BgB0BQB8BgB0BgCDAgByiAB8BgB9BABuDQB8BgBqBwB8AQCDAQABfAIAagEAZAEAZAIAfAMAZAMAGIMDAH0DAHEhAFd8BABzxAB8AABqCAB9BABuAAB8BAB8AQBfCQBkBABTKAUAAABzmQAAAAogICAgICAgIEVuc3VyZSB0aGF0IHRoZXJlIGFyZSBlaXRoZXIgbG9nZ2VycyBvciBwbGFjZWhvbGRlcnMgYWxsIHRoZSB3YXkKICAgICAgICBmcm9tIHRoZSBzcGVjaWZpZWQgbG9nZ2VyIHRvIHRoZSByb290IG9mIHRoZSBsb2dnZXIgaGllcmFyY2h5LgogICAgICAgIFKaAAAAaQAAAABpAQAAAE4oCgAAAFJEAAAAdAUAAAByZmluZFJTAAAAUtkAAABS0AAAAFI1AAAAUgwAAABSngAAAFLXAAAAdAYAAABwYXJlbnQoBwAAAFJpAAAAUtIAAABSRAAAAHQBAAAAaVI7AAAAdAYAAABzdWJzdHJ0AwAAAG9iaigAAAAAKAAAAABzWAAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2xvZ2dpbmcvX19pbml0X18ucHlS3gAAAB0EAABzHgAAAAAFCQEPAQYBFgEKAQ8BFgINAQ8BCQMNAR0BBgEMAWMDAAAABgAAAAMAAABDAAAAc2EAAAB8AgBqAAB9AwB0AQB8AwCDAQB9BAB4RQB8AQBqAgBqAwCDAABEXTQAfQUAfAUAagQAagAAfAQAIHwDAGsDAHIlAHwFAGoEAHwCAF8EAHwCAHwFAF8EAHElAHElAFdkAQBTKAIAAABzawAAAAogICAgICAgIEVuc3VyZSB0aGF0IGNoaWxkcmVuIG9mIHRoZSBwbGFjZWhvbGRlciBwaCBhcmUgY29ubmVjdGVkIHRvIHRoZQogICAgICAgIHNwZWNpZmllZCBsb2dnZXIuCiAgICAgICAgTigFAAAAUkQAAABSRgAAAFLRAAAAdAQAAABrZXlzUuEAAAAoBgAAAFJpAAAAUt8AAABS0gAAAFJEAAAAdAcAAABuYW1lbGVudAEAAABjKAAAAAAoAAAAAHNYAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvbG9nZ2luZy9fX2luaXRfXy5weVLdAAAANQQAAHMMAAAAAAUJAQwBFgIWAQwBKAgAAABScwAAAFJ0AAAAUnUAAABSbQAAAFIdAAAAUiIAAABS3gAAAFLdAAAAKAAAAAAoAAAAACgAAAAAc1gAAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9sb2dnaW5nL19faW5pdF9fLnB5UtYAAADgAwAAcwwAAAAGBAYBCQoJJAkKCRhjAAAAAAAAAAADAAAAQgAAAHPUAAAAZQAAWgEAZAAAWgIAZQMAZAEAhAEAWgQAZAIAhAAAWgUAZAMAhAAAWgYAZAQAhAAAWgcAZAUAhAAAWggAZQgAWgkAZAYAhAAAWgoAZAcAhAAAWgsAZAgAhAAAWgwAZQwAWg0AZAkAhAAAWg4AZAoAhAAAWg8AZBQAZBQAZAsAhAIAWhEAZBQAZBQAZAwAhAIAWhIAZA0AhAAAWhMAZA4AhAAAWhQAZA8AhAAAWhUAZBAAhAAAWhYAZBEAhAAAWhcAZBIAhAAAWhgAZBMAhAAAWhkAUlMoFQAAAHNyAwAACiAgICBJbnN0YW5jZXMgb2YgdGhlIExvZ2dlciBjbGFzcyByZXByZXNlbnQgYSBzaW5nbGUgbG9nZ2luZyBjaGFubmVsLiBBCiAgICAibG9nZ2luZyBjaGFubmVsIiBpbmRpY2F0ZXMgYW4gYXJlYSBvZiBhbiBhcHBsaWNhdGlvbi4gRXhhY3RseSBob3cgYW4KICAgICJhcmVhIiBpcyBkZWZpbmVkIGlzIHVwIHRvIHRoZSBhcHBsaWNhdGlvbiBkZXZlbG9wZXIuIFNpbmNlIGFuCiAgICBhcHBsaWNhdGlvbiBjYW4gaGF2ZSBhbnkgbnVtYmVyIG9mIGFyZWFzLCBsb2dnaW5nIGNoYW5uZWxzIGFyZSBpZGVudGlmaWVkCiAgICBieSBhIHVuaXF1ZSBzdHJpbmcuIEFwcGxpY2F0aW9uIGFyZWFzIGNhbiBiZSBuZXN0ZWQgKGUuZy4gYW4gYXJlYQogICAgb2YgImlucHV0IHByb2Nlc3NpbmciIG1pZ2h0IGluY2x1ZGUgc3ViLWFyZWFzICJyZWFkIENTViBmaWxlcyIsICJyZWFkCiAgICBYTFMgZmlsZXMiIGFuZCAicmVhZCBHbnVtZXJpYyBmaWxlcyIpLiBUbyBjYXRlciBmb3IgdGhpcyBuYXR1cmFsIG5lc3RpbmcsCiAgICBjaGFubmVsIG5hbWVzIGFyZSBvcmdhbml6ZWQgaW50byBhIG5hbWVzcGFjZSBoaWVyYXJjaHkgd2hlcmUgbGV2ZWxzIGFyZQogICAgc2VwYXJhdGVkIGJ5IHBlcmlvZHMsIG11Y2ggbGlrZSB0aGUgSmF2YSBvciBQeXRob24gcGFja2FnZSBuYW1lc3BhY2UuIFNvCiAgICBpbiB0aGUgaW5zdGFuY2UgZ2l2ZW4gYWJvdmUsIGNoYW5uZWwgbmFtZXMgbWlnaHQgYmUgImlucHV0IiBmb3IgdGhlIHVwcGVyCiAgICBsZXZlbCwgYW5kICJpbnB1dC5jc3YiLCAiaW5wdXQueGxzIiBhbmQgImlucHV0LmdudSIgZm9yIHRoZSBzdWItbGV2ZWxzLgogICAgVGhlcmUgaXMgbm8gYXJiaXRyYXJ5IGxpbWl0IHRvIHRoZSBkZXB0aCBvZiBuZXN0aW5nLgogICAgYwMAAAADAAAAAgAAAEMAAABzTQAAAHQAAGoBAHwAAIMBAAF8AQB8AABfAgB0AwB8AgCDAQB8AABfBABkAwB8AABfBgBkAQB8AABfBwBnAAB8AABfCABkAgB8AABfCQBkAwBTKAQAAABzSgAAAAogICAgICAg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bG9nZ2VyIGFuZCBhIGRpY3QtbGlrZSBvYmplY3Qgd2hpY2gKICAgICAgICBwcm92aWRlcyBjb250ZXh0dWFsIGluZm9ybWF0aW9uLiBUaGlzIGNvbnN0cnVjdG9yIHNpZ25hdHVyZSBhbGxvd3MKICAgICAgICBlYXN5IHN0YWNraW5nIG9mIExvZ2dlckFkYXB0ZXJzLCBpZiBzbyBkZXNpcmVkLgoKICAgICAgICBZb3UgY2FuIGVmZmVjdGl2ZWx5IHBhc3Mga2V5d29yZCBhcmd1bWVudHMgYXMgc2hvd24gaW4gdGhlCiAgICAgICAgZm9sbG93aW5nIGV4YW1wbGU6CgogICAgICAgIGFkYXB0ZXIgPSBMb2dnZXJBZGFwdGVyKHNvbWVMb2dnZXIsIGRpY3QocDE9djEsIHAyPSJ2MiIpKQogICAgICAgIE4oAgAAAFICAQAAUvkAAAAoAwAAAFJpAAAAUgIBAABS+QAAACgAAAAAKAAAAABzWAAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2xvZ2dpbmcvX19pbml0X18ucHlSbQAAAG0FAABzBAAAAAALCQFjAwAAAAMAAAADAAAAQwAAAHMXAAAAfAAAagAAfAIAZAEAPHwBAHwCAGYCAFMoAgAAAHOiAQAACiAgICAgICAgUHJvY2VzcyB0aGUgbG9nZ2luZyBtZXNzYWdlIGFuZCBrZXl3b3JkIGFyZ3VtZW50cyBwYXNzZWQgaW4gdG8KICAgICAgICBhIGxvZ2dpbmcgY2FsbCB0byBpbnNlcnQgY29udGV4dHVhbCBpbmZvcm1hdGlvbi4gWW91IGNhbiBlaXRoZXIKICAgICAgICBtYW5pcHVsYXRlIHRoZSBtZXNzYWdlIGl0c2VsZiwgdGhlIGtleXdvcmQgYXJncyBvciBib3RoLiBSZXR1cm4KICAgICAgICB0aGUgbWVzc2FnZSBhbmQga3dhcmdzIG1vZGlmaWVkIChvciBub3QpIHRvIHN1aXQgeW91ciBuZWVkcy4KCiAgICAgICAgTm9ybWFsbHksIHlvdSdsbCBvbmx5IG5lZWQgdG8gb3ZlcnJpZGUgdGhpcyBvbmUgbWV0aG9kIGlu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fQMAbhsAfAAAagQAZAUAgwEAfQQAdAYAfAQAgwEAfQMAfAAAagQAZAYAdAcAgwIAfQUAfAAAagQAZAcAZAkAgwIAfQYAdAkAfAUAfAYAgwIAfQcAfAMAagoAfAcAgwEAAXQCAGoLAHwDAIMBAAF8AABqBABkCACDAQB9CAB8CABkCQBrCQBy7gB0AgBqDAB8CACDAQABce4AbgAAV2QJAHQNAIMAAAFYZAkAUygKAAAAc/0FAAAKICAgIERvIGJhc2ljIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBsb2dnaW5nIHN5c3RlbS4KCiAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZyBpZiB0aGUgcm9vdCBsb2dnZXIgYWxyZWFkeSBoYXMgaGFuZGxlcnMKICAgIGNvbmZpZ3VyZWQuIEl0IGlzIGEgY29udmVuaWVuY2UgbWV0aG9kIGludGVuZGVkIGZvciB1c2UgYnkgc2ltcGxlIHNjcmlwdHMKICAgIHRvIGRvIG9uZS1zaG90IGNvbmZpZ3VyYXRpb24gb2YgdGhlIGxvZ2dpbmcgcGFja2FnZS4KCiAgICBUaGUgZGVmYXVsdCBiZWhhdmlvdXIgaXMgdG8gY3JlYXRlIGEgU3RyZWFtSGFuZGxlciB3aGljaCB3cml0ZXMgdG8KICAgIHN5cy5zdGRlcnIsIHNldCBhIGZvcm1hdHRlciB1c2luZyB0aGUgQkFTSUNfRk9STUFUIGZvcm1hdCBzdHJpbmcsIGFuZAogICAgYWRkIHRoZSBoYW5kbGVyIHRvIHRoZSByb290IGxvZ2dlci4KCiAgICBBIG51bWJlciBvZiBvcHRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cyBtYXkgYmUgc3BlY2lmaWVkLCB3aGljaCBjYW4gYWx0ZXIKICAgIHRoZSBkZWZhdWx0IGJlaGF2aW91ci4KCiAgICBmaWxlbmFtZSAgU3BlY2lmaWVzIHRoYXQgYSBGaWxlSGFuZGxlciBiZSBjcmVhdGVkLCB1c2luZyB0aGUgc3BlY2lmaWVkCiAgICAgICAgICAgICAgZmlsZW5hbWUsIHJhdGhlciB0aGFuIGEgU3RyZWFtSGFuZGxlci4KICAgIGZpbGVtb2RlICBTcGVjaWZpZXMgdGhlIG1vZGUgdG8gb3BlbiB0aGUgZmlsZSwgaWYgZmlsZW5hbWUgaXMgc3BlY2lmaWVkCiAgICAgICAgICAgICAgKGlmIGZpbGVtb2RlIGlzIHVuc3BlY2lmaWVkLCBpdCBkZWZhdWx0cyB0byAnYScpLgogICAgZm9ybWF0ICAgIFVzZSB0aGUgc3BlY2lmaWVkIGZvcm1hdCBzdHJpbmcgZm9yIHRoZSBoYW5kbGVyLgogICAgZGF0ZWZtdCAgIFVzZSB0aGUgc3BlY2lmaWVkIGRhdGUvdGltZSBmb3JtYXQuCiAgICBsZXZlbCAgICAgU2V0IHRoZSByb290IGxvZ2dlciBsZXZlbCB0byB0aGUgc3BlY2lmaWVkIGxldmVsLgogICAgc3RyZWFtICAgIFVzZSB0aGUgc3BlY2lmaWVkIHN0cmVhbSB0byBpbml0aWFsaXplIHRoZSBTdHJlYW1IYW5kbGVyLiBOb3RlCiAgICAgICAgICAgICAgdGhhdCB0aGlzIGFyZ3VtZW50IGlzIGluY29tcGF0aWJsZSB3aXRoICdmaWxlbmFtZScgLSBpZiBib3RoCiAgICAgICAgICAgICAgYXJlIHByZXNlbnQsICdzdHJlYW0nIGlzIGlnbm9yZWQuCgogICAgTm90ZSB0aGF0IHlvdSBjb3VsZCBzcGVjaWZ5IGEgc3RyZWFtIGNyZWF0ZWQgdXNpbmcgb3BlbihmaWxlbmFtZSwgbW9kZSkKICAgIHJhdGhlciB0aGFuIHBhc3NpbmcgdGhlIGZpbGVuYW1lIGFuZCBtb2RlIGluLiBIb3dldmVyLCBpdCBzaG91bGQgYmUKICAgIHJlbWVtYmVyZWQgdGhhdCBTdHJlYW1IYW5kbGVyIGRvZXMgbm90IGNsb3NlIGl0cyBzdHJlYW0gKHNpbmNlIGl0IG1heSBiZQogICAgdXNpbmcgc3lzLnN0ZG91dCBvciBzeXMuc3RkZXJyKSwgd2hlcmVhcyBGaWxlSGFuZGxlciBjbG9zZXMgaXRzIHN0cmVhbQogICAgd2hlbiB0aGUgaGFuZGxlciBpcyBjbG9zZWQuCiAgICBpAAAAAFJPAAAAdAgAAABmaWxlbW9kZVLIAAAAUr4AAABSkgAAAFJ6AAAAUjEAAABOKA4AAABSMgAAAFJGAAAAUtcAAABS6QAAAFIwAAAAUgYAAABS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AAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9sb2dnaW5nL19faW5pdF9fLnB5dAgAAABzaHV0ZG93bmMGAABzHgAAAAAHFAMDAQkBBgEDAAMBCgEKAQ4BEwUIAhIBAwEGAWMAAAAAAAAAAAEAAABCAAAAcykAAABlAABaAQBkAABaAgBkAQCEAABaAwBkAgCEAABaBABkAwCEAABaBQBSUygEAAAAc9kBAAAKICAgIFRoaXMgaGFuZGxlciBkb2VzIG5vdGhpbmcuIEl0J3MgaW50ZW5kZWQgdG8gYmUgdXNlZCB0byBhdm9pZCB0aGUKICAgICJObyBoYW5kbGVycyBjb3VsZCBiZSBmb3VuZCBmb3IgbG9nZ2VyIFhYWCIgb25lLW9mZiB3YXJuaW5nLiBUaGlzIGlzCiAgICBpbXBvcnRhbnQgZm9yIGxpYnJhcnkgY29kZSwgd2hpY2ggbWF5IGNvbnRhaW4gY29kZSB0byBsb2cgZXZlbnRzLiBJZiBhIHVzZXIKICAgIG9mIHRoZSBsaWJyYXJ5IGRvZXMgbm90IGNvbmZpZ3VyZSBsb2dnaW5nLCB0aGUgb25lLW9mZiB3YXJuaW5nIG1pZ2h0IGJlCiAgICBwcm9kdWNlZDsgdG8gYXZvaWQgdGhpcywgdGhlIGxpYnJhcnkgZGV2ZWxvcGVyIHNpbXBseSBuZWVkcyB0byBpbnN0YW50aWF0ZQogICAgYSBOdWxsSGFuZGxlciBhbmQgYWRkIGl0IHRvIHRoZSB0b3AtbGV2ZWwgbG9nZ2VyIG9mIHRoZSBsaWJyYXJ5IG1vZHVsZSBvcgogICAgcGFja2FnZS4KICAgIGMCAAAAAgAAAAEAAABDAAAAcwQAAABkAABTKAEAAABOKAAAAAAoAgAAAFJpAAAAUn4AAAAoAAAAACgAAAAAc1gAAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9sb2dnaW5nL19faW5pdF9fLnB5UrUAAACRBgAAcwIAAAAAAWMCAAAAAgAAAAEAAABDAAAAcwQAAABkAABTKAEAAABOKAAAAAAoAgAAAFJpAAAAUn4AAAAoAAAAACgAAAAAc1gAAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9sb2dnaW5nL19faW5pdF9fLnB5UrQAAACUBgAAcwIAAAAAAWMBAAAAAQAAAAIAAABDAAAAcw0AAABkAAB8AABfAQBkAABTKAEAAABOKAIAAABSUwAAAFKxAAAAKAEAAABSaQAAACgAAAAAKAAAAABzWAAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2xvZ2dpbmcvX19pbml0X18ucHlSrAAAAJcGAABzAgAAAAABKAYAAABScwAAAFJ0AAAAUnUAAABStQAAAFK0AAAAUqwAAAAoAAAAACgAAAAAKAAAAABzWAAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2xvZ2dpbmcvX19pbml0X18ucHlSDwAAAIcGAABzCAAAAAYJBgEJAwkDYwYAAAAIAAAABwAAAEMAAABzjgAAAHwEAGQDAGsJAHI3AHQBAGQDAGsJAHKKAHQBAHwAAHwBAHwCAHwDAHwEAHwFAIMGAAFxigBuUwB0AgBqAwB8AAB8AQB8AgB8AwB8BQCDBQB9BgB0BABkAQCDAQB9BwB8BwBqBQBzegB8BwBqBgB0BwCDAACDAQABbgAAfAcAaggAZAIAfAYAgwIAAWQDAFMoBAAAAHOIAQAACiAgICBJbXBsZW1lbnRhdGlvbiBvZiBzaG93d2FybmluZ3Mgd2hpY2ggcmVkaXJlY3RzIHRvIGxvZ2dpbmcsIHdoaWNoIHdpbGwgZmlyc3QKICAgIGNoZWNrIHRvIHNlZSBpZiB0aGUgZmlsZSBwYXJhbWV0ZXIgaXMgTm9uZS4gSWYgYSBmaWxlIGlzIHNwZWNpZmllZCwgaXQgd2lsbAogICAgZGVsZWdhdGUgdG8gdGhlIG9yaWdpbmFsIHdhcm5pbmdzIGltcGxlbWVudGF0aW9uIG9mIHNob3d3YXJuaW5nLiBPdGhlcndpc2UsCiAgICBpdCB3aWxsIGNhbGwgd2FybmluZ3MuZm9ybWF0d2FybmluZyBhbmQgd2lsbCBsb2cgdGhlIHJlc3VsdGluZyBzdHJpbmcgdG8gYQogICAgd2FybmluZ3MgbG9nZ2VyIG5hbWVkICJweS53YXJuaW5ncyIgd2l0aCBsZXZlbCBsb2dnaW5nLldBUk5JTkcuCiAgICBzCwAAAHB5Lndhcm5pbmdzcwIAAAAlc04oCQAAAFJTAAAAdBUAAABfd2FybmluZ3Nfc2hvd3dhcm5pbmd0CAAAAHdhcm5pbmdzdA0AAABmb3JtYXR3YXJuaW5nUh0AAABS6QAAAFL/AAAAUg8AAABSJAAAACgIAAAAUo4AAAB0CAAAAGNhdGVnb3J5Uk8AAABSVQAAAHQEAAAAZmlsZXQEAAAAbGluZVJ/AAAAUgIBAAAoAAAAACgAAAAAc1gAAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9sb2dnaW5nL19faW5pdF9fLnB5dAwAAABfc2hvd3dhcm5pbmeeBgAAcxAAAAAACAwBDAEfAhsBDAEJARMBYwEAAAABAAAAAgAAAEMAAABzTAAAAHwAAHIqAHQAAGQBAGsIAHJIAHQCAGoDAGEAAHQEAHQCAF8DAHFIAG4eAHQAAGQBAGsJAHJIAHQAAHQCAF8DAGQBAGEAAG4AAGQBAFMoAgAAAHO/AAAACiAgICBJZiBjYXB0dXJlIGlzIHRydWUsIHJlZGlyZWN0IGFsbCB3YXJuaW5ncyB0byB0aGUgbG9nZ2luZyBwYWNrYWdlLgogICAgSWYgY2FwdHVyZSBpcyBGYWxzZSwgZW5zdXJlIHRoYXQgd2FybmluZ3MgYXJlIG5vdCByZWRpcmVjdGVkIHRvIGxvZ2dpbmcKICAgIGJ1dCB0byB0aGVpciBvcmlnaW5hbCBkZXN0aW5hdGlvbnMuCiAgICBOKAUAAABSDgEAAFJTAAAAUg8BAAB0CwAAAHNob3d3YXJuaW5nUhQBAAAoAQAAAHQHAAAAY2FwdHVyZSgAAAAAKAAAAABzWAAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2xvZ2dpbmcvX19pbml0X18ucHlSFQAAALAGAABzDgAAAAAHBgEMAQkBDwIMAQkBKGIAAABSdQAAAFIoAAAAUkwAAABSQwAAAFKCAAAAUoQAAABSDwEAAFKmAAAAdAcAAABfX2FsbF9fUskAAAB0CwAAAEltcG9ydEVycm9yUlMAAABSXAAAAFJeAAAAdAoAAABfX2F1dGhvcl9fdAoAAABfX3N0YXR1c19fdAsAAABfX3ZlcnNpb25fX3QIAAAAX19kYXRlX19SwAAAAHQEAAAAVHJ1ZVJvAAAAdAkAAABOYW1lRXJyb3J0BQAAAEZhbHNlUmcAAAB0AwAAAHNlcHQIAAAAX19maWxlX19S8QAAAHQFAAAAbG93ZXJSTQAAAFLvAAAAUiwAAABSWQAAAFK4AAAAUlsAAABSYQAAAFJmAAAAUgIAAABSBQAAAFIEAAAAUhIAAABSEQAAAFIKAAAAUgMAAABSDgAAAFIvAAAAUhwAAABSEwAAAFI8AAAAUrAAAABSPQAAAFIyAAAAUjMAAAB0BgAAAG9iamVjdFILAAAAUiEAAABSCAAAAFKVAAAAUgEAAABSBwAAAFKcAAAAdBMAAABXZWFrVmFsdWVEaWN0aW9uYXJ5Uq4AAABSowAAAFKlAAAAUqkAAABSCQAAAFIQAAAAUgYAAABS0AAAAFLUAAAAUiIAAABSHgAAAFLWAAAAUgwAAABSBwEAAFINAAAAUtcAAABS3AAAAFIAAAAAUhQAAABSHQAAAFIWAAAAUhsAAABSGQAAAFIaAAAAUiQAAABSIwAAAFIfAAAAUhcAAABSIAAAAFIYAAAAUg0BAAB0BgAAAGF0ZXhpdHQIAAAAcmVnaXN0ZXJSDwAAAFIOAQAAUhQBAABSFQAAACgAAAAAKAAAAAAoAAAAAHNYAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvbG9nZ2luZy9fX2luaXRfXy5weXQIAAAAPG1vZHVsZT4YAAAAc+oAAAAGAlQCDwESAQ8BDwEPAQ8BGAIDARABDQEKAgMBDAEQAQ0BCgIGAQYBBgEGBQMBBAEKAQ0BCgYPARoBHAERAgYBEgMJBw8ADA0MBgYFBgUGBQYNBgEGAQYBBgEGAQYBBgEGAgMBBwEHAQcBBwEHAQcBBwEHAQcBBwEHAQcBCgMJEAkNCRcGAQ8CBgIJCQkLFmUJDxaSCQIWKhYlFiwMAQYCCRAJChakFkcWQBYZBgIJDQkHFmYW/wAUFgwGAhZgDAEJARIGBgIJPAwUCQgGAgkICQgJCAYCCQgJCAkICQYMHwwBDQQWFQYCDxI=