A/MNCi9c/FVjAAAAAAAAAAAJAAAAQAAAAHPOAwAAZAAAWgAAZAEAWgEAZAIAWgIAZAMAZAQAbAMAWgMAZAMAZAQAbAQAWgQAZAMAZAQAbAUAWgUAZAMAZAQAbAYAWgYAZAMAZAQAbAcAWgcAZAMAZAQAbAgAWggAZAMAZAQAbAkAWgkAZAMAZAQAbAoAWgoAZAMAZAQAbAsAWgsAZAMAZAUAbAwAbQ0AWg0AAWQDAGQGAGwOAG0PAFoPAAFkXgBcBABaEABaEQBaEgBaEwBkXwBcAwBaFABaFQBaFgBkYABaFwBkDwCEAABaGABkEACEAABaGQBkEQCEAABaGgBkEgCEAABaGwBkEwCEAABaHABlHQBlBQBkFACDAgByDQFkFQCEAABaHgBuCQBkFgCEAABaHgBlHQBlBQBkFwCDAgByMQFkGACEAABaHwBuCQBkGQCEAABaHwBkGgCEAABaIABkGwCEAABaIQBkHACEAABaIgBkHQCEAABaIwBkHgCEAABaJABkHwCEAABaJQBkIACEAABaJgBkIQCEAABaJwBkIgCEAABaKABkBABkIwCEAQBaKgBlDwBkJABkJQCDAgBaKwBkJgCEAABaLABkJwCEAABaLQBkKACEAABaLgBkKQCEAABaLwBkKgCEAABaMABkKwCEAABaMQBkLACEAABaMgBlDwBkLQBkLgCDAgBaMwBkLwCEAABaNABkMACEAABaNQBkMQCEAABaNgBkBABkMgCEAQBaNwBpAABaOABpAABaOQBkBABkMwCEAQBaOgBkNACEAABaOwBkNQCEAABaPABkNgBlPQBmAQBkNwCEAACDAABZWj4AZDgAZGEAZDkAhAAAgwAAWVo/AGQ6AIQAAFpAAGQ7AIQAAFpBAGQ8AIQAAFpCAGQ9AIQAAFpDAGQ+AGQ/AIQBAFpEAGUPAGRAAGRBAIMCAFpFAGRCAIQAAFpGAGUPAGRDAGREAIMCAFpHAGRFAIQAAFpIAGUPAGRGAGRHAIMCAFpJAGRIAIQAAFpKAGRJAIQAAFpLAGVLAGRKAIQBAFpMAGQEAGQEAGQEAGVNAGRLAIQAAGRMAIQAAGRNAIQAAGVLAGROAIQIAFpOAGVNAGRPAIQAAGRQAIQAAGRRAIQAAGVLAGRSAIQFAFpPAGRTAIQAAFpQAGUPAGRUAGRVAIMCAFpRAGQHAGRWAIQBAFpSAGRXAIQAAFpTAGQHAGRYAIQBAFpUAGQHAGRZAIQBAFpVAGUdAGUDAGRaAIMCAHKmA2UDAGpWAFpXAG4MAGQEAGRbAIQBAFpXAGQHAGRcAIQBAFpYAGQHAGRdAIQBAFpZAGQEAFMoYgAAAHOyBAAAR2V0IHVzZWZ1bCBpbmZvcm1hdGlvbiBmcm9tIGxpdmUgUHl0aG9uIG9iamVjdHMuCgpUaGlzIG1vZHVsZSBlbmNhcHN1bGF0ZXMgdGhlIGludGVyZmFjZSBwcm92aWRlZCBieSB0aGUgaW50ZXJuYWwgc3BlY2lhbAphdHRyaWJ1dGVzIChmdW5jXyosIGNvXyosIGltXyosIHRiXyosIGV0Yy4pIGluIGEgZnJpZW5kbGllciBmYXNoaW9uLgpJdCBhbHNvIHByb3ZpZGVzIHNvbWUgaGVscCBmb3IgZXhhbWluaW5nIHNvdXJjZSBjb2RlIGFuZCBjbGFzcyBsYXlvdXQuCgpIZXJlIGFyZSBzb21lIG9mIHRoZSB1c2VmdWwgZnVuY3Rpb25zIHByb3ZpZGVkIGJ5IHRoaXMgbW9kdWxlOgoKICAgIGlzbW9kdWxlKCksIGlzY2xhc3MoKSwgaXNtZXRob2QoKSwgaXNmdW5jdGlvbigpLCBpc2dlbmVyYXRvcmZ1bmN0aW9uKCksCiAgICAgICAgaXNnZW5lcmF0b3IoKSwgaXN0cmFjZWJhY2soKSwgaXNmcmFtZSgpLCBpc2NvZGUoKSwgaXNidWlsdGluKCksCiAgICAgICAgaXNyb3V0aW5lKCkgLSBjaGVjayBvYmplY3QgdHlwZXMKICAgIGdldG1lbWJlcnMoKSAtIGdldCBtZW1iZXJzIG9mIGFuIG9iamVjdCB0aGF0IHNhdGlzZnkgYSBnaXZlbiBjb25kaXRpb24KCiAgICBnZXRmaWxlKCksIGdldHNvdXJjZWZpbGUoKSwgZ2V0c291cmNlKCkgLSBmaW5kIGFuIG9iamVjdCdzIHNvdXJjZSBjb2RlCiAgICBnZXRkb2MoKSwgZ2V0Y29tbWVudHMoKSAtIGdldCBkb2N1bWVudGF0aW9uIG9uIGFuIG9iamVjdAogICAgZ2V0bW9kdWxlKCkgLSBkZXRlcm1pbmUgdGhlIG1vZHVsZSB0aGF0IGFuIG9iamVjdCBjYW1lIGZyb20KICAgIGdldGNsYXNzdHJlZSgpIC0gYXJyYW5nZSBjbGFzc2VzIHNvIGFzIHRvIHJlcHJlc2VudCB0aGVpciBoaWVyYXJjaHkKCiAgICBnZXRhcmdzcGVjKCksIGdldGFyZ3ZhbHVlcygpLCBnZXRjYWxsYXJncygpIC0gZ2V0IGluZm8gYWJvdXQgZnVuY3Rpb24gYXJndW1lbnRzCiAgICBmb3JtYXRhcmdzcGVjKCksIGZvcm1hdGFyZ3ZhbHVlcygpIC0gZm9ybWF0IGFuIGFyZ3VtZW50IHNwZWMKICAgIGdldG91dGVyZnJhbWVzKCksIGdldGlubmVyZnJhbWVzKCkgLSBnZXQgaW5mbyBhYm91dCBmcmFtZXMKICAgIGN1cnJlbnRmcmFtZSgpIC0gZ2V0IHRoZSBjdXJyZW50IHN0YWNrIGZyYW1lCiAgICBzdGFjaygpLCB0cmFjZSgpIC0gZ2V0IGluZm8gYWJvdXQgZnJhbWVzIG9uIHRoZSBzdGFjayBvciBpbiBhIHRyYWNlYmFjawpzGgAAAEthLVBpbmcgWWVlIDxwaW5nQGxmdy5vcmc+cwoAAAAxIEphbiAyMDAxaf////9OKAEAAAB0CgAAAGF0dHJnZXR0ZXIoAQAAAHQKAAAAbmFtZWR0dXBsZWkBAAAAaQIAAABpBAAAAGkIAAAAaRAAAABpIAAAAGlAAAAAaRQAAABjAQAAAAEAAAADAAAAQwAAAHMQAAAAdAAAfAAAdAEAagIAgwIAUygBAAAAc8EAAABSZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGEgbW9kdWxlLgoKICAgIE1vZHVsZSBvYmplY3RzIHByb3ZpZGUgdGhlc2UgYXR0cmlidXRlczoKICAgICAgICBfX2RvY19fICAgICAgICAgZG9jdW1lbnRhdGlvbiBzdHJpbmcKICAgICAgICBfX2ZpbGVfXyAgICAgICAgZmlsZW5hbWUgKG1pc3NpbmcgZm9yIGJ1aWx0LWluIG1vZHVsZXMpKAMAAAB0CgAAAGlzaW5zdGFuY2V0BQAAAHR5cGVzdAoAAABNb2R1bGVUeXBlKAEAAAB0BgAAAG9iamVjdCgAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvaW5zcGVjdC5weXQIAAAAaXNtb2R1bGUzAAAAcwIAAAAABmMBAAAAAQAAAAQAAABDAAAAcxYAAAB0AAB8AAB0AQB0AgBqAwBmAgCDAgBTKAEAAABzxgAAAFJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSBjbGFzcy4KCiAgICBDbGFzcyBvYmplY3RzIHByb3ZpZGUgdGhlc2UgYXR0cmlidXRlczoKICAgICAgICBfX2RvY19fICAgICAgICAgZG9jdW1lbnRhdGlvbiBzdHJpbmcKICAgICAgICBfX21vZHVsZV9fICAgICAgbmFtZSBvZiBtb2R1bGUgaW4gd2hpY2ggdGhpcyBjbGFzcyB3YXMgZGVmaW5lZCgEAAAAUgIAAAB0BAAAAHR5cGVSAwAAAHQJAAAAQ2xhc3NUeXBlKAEAAABSBQAAACgAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvaW5zcGVjdC5weXQHAAAAaXNjbGFzczsAAABzAgAAAAAGYwEAAAABAAAAAwAAAEMAAABzEAAAAHQAAHwAAHQBAGoCAIMCAFMoAQAAAHOqAQAAUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBpcyBhbiBpbnN0YW5jZSBtZXRob2QuCgogICAgSW5zdGFuY2UgbWV0aG9kIG9iamVjdHMgcHJvdmlkZSB0aGVzZSBhdHRyaWJ1dGVzOgogICAgICAgIF9fZG9jX18gICAgICAgICBkb2N1bWVudGF0aW9uIHN0cmluZwogICAgICAgIF9fbmFtZV9fICAgICAgICBuYW1lIHdpdGggd2hpY2ggdGhpcyBtZXRob2Qgd2FzIGRlZmluZWQKICAgICAgICBpbV9jbGFzcyAgICAgICAgY2xhc3Mgb2JqZWN0IGluIHdoaWNoIHRoaXMgbWV0aG9kIGJlbG9uZ3MKICAgICAgICBpbV9mdW5jICAgICAgICAgZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5pbmcgaW1wbGVtZW50YXRpb24gb2YgbWV0aG9kCiAgICAgICAgaW1fc2VsZiAgICAgICAgIGluc3RhbmNlIHRvIHdoaWNoIHRoaXMgbWV0aG9kIGlzIGJvdW5kLCBvciBOb25lKAMAAABSAgAAAFIDAAAAdAoAAABNZXRob2RUeXBlKAEAAABSBQAAACgAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvaW5zcGVjdC5weXQIAAAAaXNtZXRob2RDAAAAcwIAAAAACWMBAAAAAQAAAAYAAABDAAAAc0QAAAB0AAB8AABkAQCDAgBvQwB0AAB8AABkAgCDAgAMb0MAdAEAfAAAgwEADG9DAHQCAHwAAIMBAAxvQwB0AwB8AACDAQAMUygDAAAAc5UCAABSZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGEgbWV0aG9kIGRlc2NyaXB0b3IuCgogICAgQnV0IG5vdCBpZiBpc21ldGhvZCgpIG9yIGlzY2xhc3MoKSBvciBpc2Z1bmN0aW9uKCkgYXJlIHRydWUuCgogICAgVGhpcyBpcyBuZXcgaW4gUHl0aG9uIDIuMiwgYW5kLCBmb3IgZXhhbXBsZSwgaXMgdHJ1ZSBvZiBpbnQuX19hZGRfXy4KICAgIEFuIG9iamVjdCBwYXNzaW5nIHRoaXMgdGVzdCBoYXMgYSBfX2dldF9fIGF0dHJpYnV0ZSBidXQgbm90IGEgX19zZXRfXwogICAgYXR0cmlidXRlLCBidXQgYmV5b25kIHRoYXQgdGhlIHNldCBvZiBhdHRyaWJ1dGVzIHZhcmllcy4gIF9fbmFtZV9fIGlzCiAgICB1c3VhbGx5IHNlbnNpYmxlLCBhbmQgX19kb2NfXyBvZnRlbiBpcy4KCiAgICBNZXRob2RzIGltcGxlbWVudGVkIHZpYSBkZXNjcmlwdG9ycyB0aGF0IGFsc28gcGFzcyBvbmUgb2YgdGhlIG90aGVyCiAgICB0ZXN0cyByZXR1cm4gZmFsc2UgZnJvbSB0aGUgaXNtZXRob2RkZXNjcmlwdG9yKCkgdGVzdCwgc2ltcGx5IGJlY2F1c2UKICAgIHRoZSBvdGhlciB0ZXN0cyBwcm9taXNlIG1vcmUgLS0geW91IGNhbiwgZS5nLiwgY291bnQgb24gaGF2aW5nIHRoZQogICAgaW1fZnVuYyBhdHRyaWJ1dGUgKGV0Yykgd2hlbiBhbiBvYmplY3QgcGFzc2VzIGlzbWV0aG9kKCkudAcAAABfX2dldF9fdAcAAABfX3NldF9fKAQAAAB0BwAAAGhhc2F0dHJSCwAAAHQKAAAAaXNmdW5jdGlvblIJAAAAKAEAAABSBQAAACgAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvaW5zcGVjdC5weXQSAAAAaXNtZXRob2RkZXNjcmlwdG9yTgAAAHMKAAAAAA4PARABDQENAWMBAAAAAQAAAAQAAABDAAAAcxwAAAB0AAB8AABkAQCDAgBvGwB0AAB8AABkAgCDAgBTKAMAAABzgAEAAFJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSBkYXRhIGRlc2NyaXB0b3IuCgogICAgRGF0YSBkZXNjcmlwdG9ycyBoYXZlIGJvdGggYSBfX2dldF9fIGFuZCBhIF9fc2V0X18gYXR0cmlidXRlLiAgRXhhbXBsZXMgYXJlCiAgICBwcm9wZXJ0aWVzIChkZWZpbmVkIGluIFB5dGhvbikgYW5kIGdldHNldHMgYW5kIG1lbWJlcnMgKGRlZmluZWQgaW4gQykuCiAgICBUeXBpY2FsbHksIGRhdGEgZGVzY3JpcHRvcnMgd2lsbCBhbHNvIGhhdmUgX19uYW1lX18gYW5kIF9fZG9jX18gYXR0cmlidXRlcwogICAgKHByb3BlcnRpZXMsIGdldHNldHMsIGFuZCBtZW1iZXJzIGhhdmUgYm90aCBvZiB0aGVzZSBhdHRyaWJ1dGVzKSwgYnV0IHRoaXMKICAgIGlzIG5vdCBndWFyYW50ZWVkLlINAAAAUgwAAAAoAQAAAFIOAAAAKAEAAABSBQAAACgAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvaW5zcGVjdC5weXQQAAAAaXNkYXRhZGVzY3JpcHRvcmIAAABzAgAAAAAIdBQAAABNZW1iZXJEZXNjcmlwdG9yVHlwZWMBAAAAAQAAAAMAAABDAAAAcxAAAAB0AAB8AAB0AQBqAgCDAgBTKAEAAABzjwAAAFJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSBtZW1iZXIgZGVzY3JpcHRvci4KCiAgICAgICAgTWVtYmVyIGRlc2NyaXB0b3JzIGFyZSBzcGVjaWFsaXplZCBkZXNjcmlwdG9ycyBkZWZpbmVkIGluIGV4dGVuc2lvbgogICAgICAgIG1vZHVsZXMuKAMAAABSAgAAAFIDAAAAUhIAAAAoAQAAAFIFAAAAKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9pbnNwZWN0LnB5dBIAAABpc21lbWJlcmRlc2NyaXB0b3JuAAAAcwIAAAAABWMBAAAAAQAAAAEAAABDAAAAcwQAAAB0AABTKAEAAABzjwAAAFJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSBtZW1iZXIgZGVzY3JpcHRvci4KCiAgICAgICAgTWVtYmVyIGRlc2NyaXB0b3JzIGFyZSBzcGVjaWFsaXplZCBkZXNjcmlwdG9ycyBkZWZpbmVkIGluIGV4dGVuc2lvbgogICAgICAgIG1vZHVsZXMuKAEAAAB0BQAAAEZhbHNlKAEAAABSBQAAACgAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvaW5zcGVjdC5weVITAAAAdgAAAHMCAAAAAAV0FAAAAEdldFNldERlc2NyaXB0b3JUeXBlYwEAAAABAAAAAwAAAEMAAABzEAAAAHQAAHwAAHQBAGoCAIMCAFMoAQAAAHOPAAAAUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBpcyBhIGdldHNldCBkZXNjcmlwdG9yLgoKICAgICAgICBnZXRzZXQgZGVzY3JpcHRvcnMgYXJlIHNwZWNpYWxpemVkIGRlc2NyaXB0b3JzIGRlZmluZWQgaW4gZXh0ZW5zaW9uCiAgICAgICAgbW9kdWxlcy4oAwAAAFICAAAAUgMAAABSFQAAACgBAAAAUgUAAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2luc3BlY3QucHl0EgAAAGlzZ2V0c2V0ZGVzY3JpcHRvcn8AAABzAgAAAAAFYwEAAAABAAAAAQAAAEMAAABzBAAAAHQAAFMoAQAAAHOPAAAAUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBpcyBhIGdldHNldCBkZXNjcmlwdG9yLgoKICAgICAgICBnZXRzZXQgZGVzY3JpcHRvcnMgYXJlIHNwZWNpYWxpemVkIGRlc2NyaXB0b3JzIGRlZmluZWQgaW4gZXh0ZW5zaW9uCiAgICAgICAgbW9kdWxlcy4oAQAAAFIUAAAAKAEAAABSBQAAACgAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvaW5zcGVjdC5weVIWAAAAhwAAAHMCAAAAAAVjAQAAAAEAAAADAAAAQwAAAHMQAAAAdAAAfAAAdAEAagIAgwIAUygBAAAAcwECAABSZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uLgoKICAgIEZ1bmN0aW9uIG9iamVjdHMgcHJvdmlkZSB0aGVzZSBhdHRyaWJ1dGVzOgogICAgICAgIF9fZG9jX18gICAgICAgICBkb2N1bWVudGF0aW9uIHN0cmluZwogICAgICAgIF9fbmFtZV9fICAgICAgICBuYW1lIHdpdGggd2hpY2ggdGhpcyBmdW5jdGlvbiB3YXMgZGVmaW5lZAogICAgICAgIGZ1bmNfY29kZSAgICAgICBjb2RlIG9iamVjdCBjb250YWluaW5nIGNvbXBpbGVkIGZ1bmN0aW9uIGJ5dGVjb2RlCiAgICAgICAgZnVuY19kZWZhdWx0cyAgIHR1cGxlIG9mIGFueSBkZWZhdWx0IHZhbHVlcyBmb3IgYXJndW1lbnRzCiAgICAgICAgZnVuY19kb2MgICAgICAgIChzYW1lIGFzIF9fZG9jX18pCiAgICAgICAgZnVuY19nbG9iYWxzICAgIGdsb2JhbCBuYW1lc3BhY2UgaW4gd2hpY2ggdGhpcyBmdW5jdGlvbiB3YXMgZGVmaW5lZAogICAgICAgIGZ1bmNfbmFtZSAgICAgICAoc2FtZSBhcyBfX25hbWVfXykoAwAAAFICAAAAUgMAAAB0DAAAAEZ1bmN0aW9uVHlwZSgBAAAAUgUAAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2luc3BlY3QucHlSDwAAAI4AAABzAgAAAAALYwEAAAABAAAABQAAAEMAAABzLAAAAHQAAHQBAHwAAIMBAHMbAHQCAHwAAIMBAG8oAHwAAGoDAGoEAHQFAECDAQBTKAEAAABzuAAAAFJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSB1c2VyLWRlZmluZWQgZ2VuZXJhdG9yIGZ1bmN0aW9uLgoKICAgIEdlbmVyYXRvciBmdW5jdGlvbiBvYmplY3RzIHByb3ZpZGVzIHNhbWUgYXR0cmlidXRlcyBhcyBmdW5jdGlvbnMuCgogICAgU2VlIGhlbHAoaXNmdW5jdGlvbikgZm9yIGF0dHJpYnV0ZXMgbGlzdGluZy4oBgAAAHQEAAAAYm9vbFIPAAAAUgsAAAB0CQAAAGZ1bmNfY29kZXQIAAAAY29fZmxhZ3N0DAAAAENPX0dFTkVSQVRPUigBAAAAUgUAAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2luc3BlY3QucHl0EwAAAGlzZ2VuZXJhdG9yZnVuY3Rpb26bAAAAcwQAAAAABhsBYwEAAAABAAAAAwAAAEMAAABzEAAAAHQAAHwAAHQBAGoCAIMCAFMoAQAAAHMgAwAAUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBpcyBhIGdlbmVyYXRvci4KCiAgICBHZW5lcmF0b3Igb2JqZWN0cyBwcm92aWRlIHRoZXNlIGF0dHJpYnV0ZXM6CiAgICAgICAgX19pdGVyX18gICAgICAgIGRlZmluZWQgdG8gc3VwcG9ydCBpbnRlcmF0aW9uIG92ZXIgY29udGFpbmVyCiAgICAgICAgY2xvc2UgICAgICAgICAgIHJhaXNlcyBhIG5ldyBHZW5lcmF0b3JFeGl0IGV4Y2VwdGlvbiBpbnNpZGUgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvciB0byB0ZXJtaW5hdGUgdGhlIGl0ZXJhdGlvbgogICAgICAgIGdpX2NvZGUgICAgICAgICBjb2RlIG9iamVjdAogICAgICAgIGdpX2ZyYW1lICAgICAgICBmcmFtZSBvYmplY3Qgb3IgcG9zc2libHkgTm9uZSBvbmNlIHRoZSBnZW5lcmF0b3IgaGFzCiAgICAgICAgICAgICAgICAgICAgICAgIGJlZW4gZXhoYXVzdGVkCiAgICAgICAgZ2lfcnVubmluZyAgICAgIHNldCB0byAxIHdoZW4gZ2VuZXJhdG9yIGlzIGV4ZWN1dGluZywgMCBvdGhlcndpc2UKICAgICAgICBuZXh0ICAgICAgICAgICAgcmV0dXJuIHRoZSBuZXh0IGl0ZW0gZnJvbSB0aGUgY29udGFpbmVyCiAgICAgICAgc2VuZCAgICAgICAgICAgIHJlc3VtZXMgdGhlIGdlbmVyYXRvciBhbmQgInNlbmRzIiBhIHZhbHVlIHRoYXQgYmVjb21lcwogICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVzdWx0IG9mIHRoZSBjdXJyZW50IHlpZWxkLWV4cHJlc3Npb24KICAgICAgICB0aHJvdyAgICAgICAgICAgdXNlZCB0byByYWlzZSBhbiBleGNlcHRpb24gaW5zaWRlIHRoZSBnZW5lcmF0b3IoAwAAAFICAAAAUgMAAAB0DQAAAEdlbmVyYXRvclR5cGUoAQAAAFIFAAAAKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9pbnNwZWN0LnB5dAsAAABpc2dlbmVyYXRvcqQAAABzAgAAAAAPYwEAAAABAAAAAwAAAEMAAABzEAAAAHQAAHwAAHQBAGoCAIMCAFMoAQAAAHNiAQAAUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBpcyBhIHRyYWNlYmFjay4KCiAgICBUcmFjZWJhY2sgb2JqZWN0cyBwcm92aWRlIHRoZXNlIGF0dHJpYnV0ZXM6CiAgICAgICAgdGJfZnJhbWUgICAgICAgIGZyYW1lIG9iamVjdCBhdCB0aGlzIGxldmVsCiAgICAgICAgdGJfbGFzdGkgICAgICAgIGluZGV4IG9mIGxhc3QgYXR0ZW1wdGVkIGluc3RydWN0aW9uIGluIGJ5dGVjb2RlCiAgICAgICAgdGJfbGluZW5vICAgICAgIGN1cnJlbnQgbGluZSBudW1iZXIgaW4gUHl0aG9uIHNvdXJjZSBjb2RlCiAgICAgICAgdGJfbmV4dCAgICAgICAgIG5leHQgaW5uZXIgdHJhY2ViYWNrIG9iamVjdCAoY2FsbGVkIGJ5IHRoaXMgbGV2ZWwpKAMAAABSAgAAAFIDAAAAdA0AAABUcmFjZWJhY2tUeXBlKAEAAABSBQAAACgAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvaW5zcGVjdC5weXQLAAAAaXN0cmFjZWJhY2u1AAAAcwIAAAAACGMBAAAAAQAAAAMAAABDAAAAcxAAAAB0AAB8AAB0AQBqAgCDAgBTKAEAAABzfAMAAFJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSBmcmFtZSBvYmplY3QuCgogICAgRnJhbWUgb2JqZWN0cyBwcm92aWRlIHRoZXNlIGF0dHJpYnV0ZXM6CiAgICAgICAgZl9iYWNrICAgICAgICAgIG5leHQgb3V0ZXIgZnJhbWUgb2JqZWN0ICh0aGlzIGZyYW1lJ3MgY2FsbGVyKQogICAgICAgIGZfYnVpbHRpbnMgICAgICBidWlsdC1pbiBuYW1lc3BhY2Ugc2VlbiBieSB0aGlzIGZyYW1lCiAgICAgICAgZl9jb2RlICAgICAgICAgIGNvZGUgb2JqZWN0IGJlaW5nIGV4ZWN1dGVkIGluIHRoaXMgZnJhbWUKICAgICAgICBmX2V4Y190cmFjZWJhY2sgdHJhY2ViYWNrIGlmIHJhaXNlZCBpbiB0aGlzIGZyYW1lLCBvciBOb25lCiAgICAgICAgZl9leGNfdHlwZSAgICAgIGV4Y2VwdGlvbiB0eXBlIGlmIHJhaXNlZCBpbiB0aGlzIGZyYW1lLCBvciBOb25lCiAgICAgICAgZl9leGNfdmFsdWUgICAgIGV4Y2VwdGlvbiB2YWx1ZSBpZiByYWlzZWQgaW4gdGhpcyBmcmFtZSwgb3IgTm9uZQogICAgICAgIGZfZ2xvYmFscyAgICAgICBnbG9iYWwgbmFtZXNwYWNlIHNlZW4gYnkgdGhpcyBmcmFtZQogICAgICAgIGZfbGFzdGkgICAgICAgICBpbmRleCBvZiBsYXN0IGF0dGVtcHRlZCBpbnN0cnVjdGlvbiBpbiBieXRlY29kZQogICAgICAgIGZfbGluZW5vICAgICAgICBjdXJyZW50IGxpbmUgbnVtYmVyIGluIFB5dGhvbiBzb3VyY2UgY29kZQogICAgICAgIGZfbG9jYWxzICAgICAgICBsb2NhbCBuYW1lc3BhY2Ugc2VlbiBieSB0aGlzIGZyYW1lCiAgICAgICAgZl9yZXN0cmljdGVkICAgIDAgb3IgMSBpZiBmcmFtZSBpcyBpbiByZXN0cmljdGVkIGV4ZWN1dGlvbiBtb2RlCiAgICAgICAgZl90cmFjZSAgICAgICAgIHRyYWNpbmcgZnVuY3Rpb24gZm9yIHRoaXMgZnJhbWUsIG9yIE5vbmUoAwAAAFICAAAAUgMAAAB0CQAAAEZyYW1lVHlwZSgBAAAAUgUAAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2luc3BlY3QucHl0BwAAAGlzZnJhbWW/AAAAcwIAAAAAEGMBAAAAAQAAAAMAAABDAAAAcxAAAAB0AAB8AAB0AQBqAgCDAgBTKAEAAABzdQMAAFJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSBjb2RlIG9iamVjdC4KCiAgICBDb2RlIG9iamVjdHMgcHJvdmlkZSB0aGVzZSBhdHRyaWJ1dGVzOgogICAgICAgIGNvX2FyZ2NvdW50ICAgICBudW1iZXIgb2YgYXJndW1lbnRzIChub3QgaW5jbHVkaW5nICogb3IgKiogYXJncykKICAgICAgICBjb19jb2RlICAgICAgICAgc3RyaW5nIG9mIHJhdyBjb21waWxlZCBieXRlY29kZQogICAgICAgIGNvX2NvbnN0cyAgICAgICB0dXBsZSBvZiBjb25zdGFudHMgdXNlZCBpbiB0aGUgYnl0ZWNvZGUKICAgICAgICBjb19maWxlbmFtZSAgICAgbmFtZSBvZiBmaWxlIGluIHdoaWNoIHRoaXMgY29kZSBvYmplY3Qgd2FzIGNyZWF0ZWQKICAgICAgICBjb19maXJzdGxpbmVubyAgbnVtYmVyIG9mIGZpcnN0IGxpbmUgaW4gUHl0aG9uIHNvdXJjZSBjb2RlCiAgICAgICAgY29fZmxhZ3MgICAgICAgIGJpdG1hcDogMT1vcHRpbWl6ZWQgfCAyPW5ld2xvY2FscyB8IDQ9KmFyZyB8IDg9KiphcmcKICAgICAgICBjb19sbm90YWIgICAgICAgZW5jb2RlZCBtYXBwaW5nIG9mIGxpbmUgbnVtYmVycyB0byBieXRlY29kZSBpbmRpY2VzCiAgICAgICAgY29fbmFtZSAgICAgICAgIG5hbWUgd2l0aCB3aGljaCB0aGlzIGNvZGUgb2JqZWN0IHdhcyBkZWZpbmVkCiAgICAgICAgY29fbmFtZXMgICAgICAgIHR1cGxlIG9mIG5hbWVzIG9mIGxvY2FsIHZhcmlhYmxlcwogICAgICAgIGNvX25sb2NhbHMgICAgICBudW1iZXIgb2YgbG9jYWwgdmFyaWFibGVzCiAgICAgICAgY29fc3RhY2tzaXplICAgIHZpcnR1YWwgbWFjaGluZSBzdGFjayBzcGFjZSByZXF1aXJlZAogICAgICAgIGNvX3Zhcm5hbWVzICAgICB0dXBsZSBvZiBuYW1lcyBvZiBhcmd1bWVudHMgYW5kIGxvY2FsIHZhcmlhYmxlcygDAAAAUgIAAABSAwAAAHQIAAAAQ29kZVR5cGUoAQAAAFIFAAAAKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9pbnNwZWN0LnB5dAYAAABpc2NvZGXRAAAAcwIAAAAAEGMBAAAAAQAAAAMA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BgB8BAB8BgBqAwBrBgByPwB8BgBqAwB8BAAZfQcAfAYAfQUAUHE/AHE/AFd0BAB8AAB8BACDAgB9BwB0BAB8BwBkAQB8BQCDAwB9BQB0BQB8BwB0BgCDAgByqABkAgB9CABulgB0BQB8BwB0BwCDAgBywABkAwB9CABufgB0BQB8BwB0CACDAgBy2ABkBAB9CABuZgB0CQB8BwCDAQBy7QBkBQB9CABuUQB0CgB8BwCDAQByAgFkBgB9CABuPAB0BAB8AAB8BACDAgB9CQB0CwB8CQCDAQBzKQF0CQB8CQCDAQByMgFkBQB9CABuBgBkBgB9CAB8CQB9BwB8AwBqDAB0DQB8BAB8CAB8BQB8BwCDBACDAQABcSUAV3wDAFMoCAAAAHOBAwAAUmV0dXJuIGxpc3Qgb2YgYXR0cmlidXRlLWRlc2NyaXB0b3IgdHVwbGVzLgoKICAgIEZvciBlYWNoIG5hbWUgaW4gZGlyKGNscyksIHRoZSByZXR1cm4gbGlzdCBjb250YWlucyBhIDQtdHVwbGUKICAgIHdpdGggdGhlc2UgZWxlbWVudHM6CgogICAgICAgIDAuIFRoZSBuYW1lIChhIHN0cmluZykuCgogICAgICAgIDEuIFRoZSBraW5kIG9mIGF0dHJpYnV0ZSB0aGlzIGlzLCBvbmUgb2YgdGhlc2Ugc3RyaW5nczoKICAgICAgICAgICAgICAgJ2NsYXNzIG1ldGhvZCcgICAgY3JlYXRlZCB2aWEgY2xhc3NtZXRob2QoKQogICAgICAgICAgICAgICAnc3RhdGljIG1ldGhvZCcgICBjcmVhdGVkIHZpYSBzdGF0aWNtZXRob2QoKQogICAgICAgICAgICAgICAncHJvcGVydHknICAgICAgICBjcmVhdGVkIHZpYSBwcm9wZXJ0eSgpCiAgICAgICAgICAgICAgICdtZXRob2QnICAgICAgICAgIGFueSBvdGhlciBmbGF2b3Igb2YgbWV0aG9kCiAgICAgICAgICAgICAgICdkYXRhJyAgICAgICAgICAgIG5vdCBhIG1ldGhvZAoKICAgICAgICAyLiBUaGUgY2xhc3Mgd2hpY2ggZGVmaW5lZCB0aGlzIGF0dHJpYnV0ZSAoYSBjbGFzcykuCgogICAgICAgIDMuIFRoZSBvYmplY3QgYXMg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IHRyYWNlYmFjaywgZnJhbWUsCiAgICBvciBjb2RlIG9iamVjdC4gIFRoZSBzb3VyY2UgY29kZSBpcyByZXR1cm5lZCBhcyBhIGxpc3Qgb2YgdGhlIGxpbmVzCiAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSBvYmplY3QgYW5kIHRoZSBsaW5lIG51bWJlciBpbmRpY2F0ZXMgd2hlcmUgaW4gdGhlCiAgICBvcmlnaW5hbCBzb3VyY2UgZmlsZSB0aGUgZmlyc3QgbGluZSBvZiBjb2RlIHdhcyBmb3VuZC4gIEFuIElPRXJyb3IgaXMKICAgIHJhaXNlZCBpZiB0aGUgc291cmNlIGNvZGUgY2Fubm90IGJlIHJldHJpZXZlZC5pAAAAAGkBAAAATigDAAAAUqsAAABSBgAAAFLSAAAAKAMAAABSBQAAAFJjAAAAUqoAAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2luc3BlY3QucHl0DgAAAGdldHNvdXJjZWxpbmVzqgIAAHMIAAAAAAgSAgwACgFjAQAAAAMAAAADAAAAQwAAAHMiAAAAdAAAfAAAgwEAXAIAfQEAfQIAdAEAagIAfAEAZAEAgwIAUygCAAAAcwYBAABSZXR1cm4gdGhlIHRleHQgb2YgdGhlIHNvdXJjZSBjb2RlIGZvciBhbiBvYmplY3QuCgogICAgVGhlIGFyZ3VtZW50IG1heSBiZSBhIG1vZHVsZSwgY2xhc3MsIG1ldGhvZCwgZnVuY3Rpb24sIHRyYWNlYmFjaywgZnJhbWUsCiAgICBvciBjb2RlIG9iamVjdC4gIFRoZSBzb3VyY2UgY29kZSBpcyByZXR1cm5lZCBhcyBhIHNpbmdsZSBzdHJpbmcuICBBbgogICAgSU9FcnJvciBpcyByYWlzZWQgaWYgdGhlIHNvdXJjZSBjb2RlIGNhbm5vdCBiZSByZXRyaWV2ZWQuUqwAAAAoAwAAAFLTAAAAUk8AAABSYgAAACgDAAAAUgUAAABSYwAAAFKqAAAAKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9s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Zm9ybWF0dGluZyBmdW5jdGlvbnMKICAgIHRoYXQgYXJlIGNhbGxlZCB0byB0dXJuIG5hbWVzIGFuZCB2YWx1ZXMgaW50byBzdHJpbmdzLiAgVGhlIG5pbnRoCiAgICBhcmd1bWVudCBpcyBhbiBvcHRpb25hbCBmdW5jdGlvbiB0byBmb3JtYXQgdGhlIHNlcXVlbmNlIG9mIGFyZ3VtZW50cy5S/wAAAHMCAAAALCBSAAEAAE4oBwAAAFJRAAAAdAkAAABlbnVtZXJhdGVSAwEAAFIuAAAAUjsAAABSTwAAAFJiAAAAKA4AAABS7QAAAFL0AAAAUvUAAAB0CAAAAGRlZmF1bHRzdAkAAABmb3JtYXRhcmd0DQAAAGZvcm1hdHZhcmFyZ3N0CwAAAGZvcm1hdHZhcmt3dAsAAABmb3JtYXR2YWx1ZVJiAAAAdAUAAABzcGVjc3QMAAAAZmlyc3RkZWZhdWx0UmcAAAB0AwAAAGFyZ3QEAAAAc3BlYygAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvaW5zcGVjdC5weXQNAAAAZm9ybWF0YXJnc3BlY0wDAABzGgAAAAAMBgEGARkBGQESARIBGwERAQwBFgEMARYBYwEAAAABAAAAAgAAAEMAAABzCAAAAGQBAHwAABdTKAIAAABOUgcBAAAoAAAAACgBAAAAUkMAAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2luc3BlY3QucHlSdQAAAGgDAABzAAAAAGMBAAAAAQAAAAIAAABDAAAAcwgAAABkAQB8AAAXUygCAAAATnMCAAAAKiooAAAAACgBAAAAUkMAAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2luc3BlY3QucHlSdQAAAGkDAABzAAAAAGMBAAAAAQAAAAMAAABDAAAAcw4AAABkAQB0AAB8AACDAQAXUygCAAAATlII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