LyoKICogV2luZSBjb21tYW5kIHByb21wdAogKiBTcGFuaXNoIExhbmd1YWdlIFN1cHBvcnQKICoKICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA3IEpvc+kgTWFudWVsIEZlcnJlciBPcnRpegogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgpMQU5HVUFHRSBMQU5HX1NQQU5JU0gsIFNVQkxBTkdfTkVVVFJBTAoKU1RSSU5HVEFCTEUKewogIFdDTURfQVRUUklCLCAiQXl1ZGEgc29icmUgQVRUUklCXG4iCiAgV0NNRF9DQUxMLAoiQ0FMTCA8bm9tYnJlIGRlIGFyY2hpdm8gcG9yIGxvdGVzPiBzZSB1dGlsaXphIGRlbnRybyBkZSB1biBhcmNoaXZvIHBvclxuXApsb3RlcyBwYXJhIGVqZWN1dGFyIGNvbWFuZG9zIGRlc2RlIG90cm8gYXJjaGl2byBwb3IgbG90ZXMuIEN1YW5kbyBlbFxuXAphcmNoaXZvIHBvciBsb3RlcyBleGlzdGUsIGVsIGNvbnRyb2wgcmVncmVzYSBhbCBhcmNoaXZvIHF1ZSBsbyBsbGFt8y4gRWxcblwKY29tYW5kbyBDQUxMIHB1ZWRlIHByb3BvcmNpb25hciBwYXLhbWV0cm9zIHBhcmEgZWwgcHJvY2VkaW1pZW50byBsbGFtYWRvLlxuXApcblwKTG9zIGNhbWJpb3Mgc29icmUgZWwgZGlyZWN0b3JpbyBwb3IgZGVmZWN0bywgdmFyaWFibGVzIGRlIGVudG9ybm8sIGV0Yy5cblwKcmVhbGl6YWRvcyBkZXNkZSBkZW50cm8gZGUgdW4gcHJvY2VkaW1pZW50byBsbGFtYWRvIHNvbiBoZXJlZGFkb3MgcG9yIGVsXG5cCmxsYW1hbnRlLlxuIgoKICBXQ01EX0NELCAgICAgIkF5dWRhIHNvYnJlIENEXG4iCiAgV0NNRF9DSERJUiwgICJBeXVkYSBzb2JyZSBDSERJUlxuIgoKICBXQ01EX0NMUywgICAgIkNMUyBsaW1waWEgbGEgcGFudGFsbGEgZGUgbGEgY29uc29sYVxuIgoKICBXQ01EX0NPUFksICAgIkF5dWRhIHNvYnJlIENPUFlcbiIKICBXQ01EX0NUVFksICAgIkF5dWRhIHNvYnJlIENUVFlcbiIKICBXQ01EX0RBVEUsICAgIkF5dWRhIHNvYnJlIERBVEVcbiIKICBXQ01EX0RFTCwgICAgIkF5dWRhIHNvYnJlIERFTFxuIgogIFdDTURfRElSLCAgICAiQXl1ZGEgc29icmUgRElSXG4iCgogIFdDTURfRUNITywKIkVDSE8gPGNhZGVuYT4gbXVlc3RyYSA8Y2FkZW5hPiBlbiBlbCBkaXNwb3NpdGl2byBkZSB0ZXJtaW5hbCBhY3R1YWwuXG5cClxuXApFQ0hPIE9OIHByb3ZvY2EgcXVlIHRvZG9zIGxvcyBjb21hbmRvcyBzdWJzaWd1aWVudGVzIGVuIHVuIGFyY2hpdm8gcG9yXG5cCmxvdGVzIHNlYW4gbW9zdHJhZG9zIGVuIGVsIHRlcm1pbmFsIGFudGVzIGRlIHNlciBlamVjdXRhZG9zLlxuXApcblwKRUNITyBPRkYgaW52aWVydGUgZWwgZWZlY3RvIGRlIHVuIHByZXZpbyBFQ0hPIE9OIChFQ0hPIGVzIE9GRiBwb3JcblwKZGVmZWN0bykuIEVsIGNvbWFuZG8gRUNITyBPRkYgcHVlZGUgcHJldmVuaXJzZSBkZSBzZXIgbW9zdHJhZG9cblwKcHJlY2VkaeluZG9sbyBwb3IgdW4gc2lnbm8gQC5cbiIKCiAgV0NNRF9FUkFTRSwgICJBeXVkYSBzb2JyZSBFUkFTRVxuIgoKICBXQ01EX0ZPUiwKIkVsIGNvbWFuZG8gRk9SIHNlIHV0aWxpemEgcGFyYSBlamVjdXRhciB1biBjb21hbmRvIHBhcmEgY2FkYSB1bm8gZGVcblwKdW4gY29uanVudG8gZGUgYXJjaGl2b3MuXG5cClxuXApTaW50YXhpczogRk9SICV2YXJpYWJsZSBJTiAoY29uanVudG8pIERPIGNvbWFuZG9cblwKXG5cCkxhIG5lY2VzaWRhZCBkZSBkb2JsYXIgZWwgc2lnbm8gJSBjdWFuZG8gc2UgdXRpbGl6YSBGT1IgZW4gdW4gYXJjaGl2b1xuXApwb3IgbG90ZXMgbm8gZXhpc3RlIGVuIGNtZC5cbiIKCiAgV0NNRF9HT1RPLAoiRWwgY29tYW5kbyBHT1RPIHRyYW5zZmllcmUgbGEgZWplY3VjafNuIGEgb3RybyBtYW5kYXRvIGRlbnRybyBkZSB1blxuXAphcmNoaXZvIHBvciBsb3Rlcy5cblwKXG5cCkxhIGV0aXF1ZXRhIHF1ZSBlcyBlbCBvYmpldGl2byBkZSB1biBjb21hbmRvIEdPVE8gcHVlZGUgc2VyIGRlIGhhc3RhXG5cCjI1NSBjYXJhY3RlcmVzIGRlIGxvbmdpdHVkIHBlcm8gbm8gcHVlZGUgaW5jbHVpciBlc3BhY2lvcyAoZXN0byBlc1xuXApkaWZlcmVudGUgYSBvdHJvcyBzaXN0ZW1hcyBvcGVyYXRpdm9zKS4gU2kgZG9zIG8gbeFzIGV0aXF1ZXRhc1xuXAppZOludGljYXMgZXhpc3RlbiBlbiB1biBhcmNoaXZvIHBvciBsb3RlcywgbGEgcHJpbWVyYSBkZSBlbGxhcyBzZXLhXG5cCnNpZW1wcmUgbGEgcXVlIHNlIGVqZWN1dGFy4S4gRWwgaW50ZW50byBkZSBoYWNlciBHT1RPIGEgdW5hIGV0aXF1ZXRhXG5cCm5vIGV4aXN0ZW50ZSB0ZXJtaW5hIGxhIGVqZWN1Y2nzbiBkZWwgYXJjaGl2byBwb3IgbG90ZXMuXG5cClxuXApHT1RPIG5vIHRpZW5lIGVmZWN0byBjdWFuZG8gc2UgdXNhIGludGVyYWN0aXZhbWVudGUuXG4iCgogIFdDTURfSEVMUCwgICAiQXl1ZGEgc29icmUgSEVMUFxuIgoKICBXQ01EX0lGLAoiSUYgc2UgdXRpbGl6YSBwYXJhIGVqZWN1dGFyIGNvbmRpY2lvbmFsbWVudGUgdW4gY29tYW5kby5cblwKXG5cClNpbnRheGlzOglJRiBbTk9UXSBFWElTVCBub21icmVfYXJjaGl2byBjb21hbmRvXG5cCgkJSUYgW05PVF0gY2FkZW5hMT09Y2FkZW5hMiBjb21hbmRvXG5cCgkJSUYgW05PVF0gRVJST1JMRVZFTCBu+m1lcm8gY29tYW5kb1xuXApcblwKRW4gbGEgc2VndW5kYSBmb3JtYSBkZWwgY29tYW5kbywgY2FkZW5hMSB5IGNhZGVuYTIgZGViZW4gZXN0YXIgZW50cmVcblwKY29taWxsYXMgZG9ibGVzLiBMYSBjb21wYXJhY2nzbiBubyBkaXN0aW5ndWUgbWF5+nNjdWxhcyBkZSBtaW76c2N1bGFzLlxuIgoKICBXQ01EX0xBQkVMLCAgIkxBQkVMIHNlIHV0aWxpemEgcGFyYSBhanVzdGFyIHVuYSBldGlxdWV0YSBkZSB2b2x1bWVuXG5cCiAgZGUgZGlzY28uXG5cClxuXApTaW50YXhpczogTEFCRUwgW3VuaWRhZDpdXG5cCkVsIGNvbWFuZG8gbGUgcGVkaXLhIGxhIG51ZXZhIGV0aXF1ZXRhIGRlIHZvbHVtZW4gcGFyYSBsYSB1bmlkYWQgZGFkYS5cblwKUHVlZGUgdmVyIGxhIGV0aXF1ZXRhIGRlIHZvbHVtZW4gZGVsIGRpc2NvIGNvbiBlbCBjb21hbmRvIFZPTC5cbiIKCiAgV0NNRF9NRCwgICAgICJBeXVkYSBzb2JyZSBNRFxuIgogIFdDTURfTUtESVIsICAiQXl1ZGEgc29icmUgTUtESVJcbiIKICBXQ01EX01PVkUsCiJNT1ZFIHJlYWxvamEgdW4gYXJjaGl2byBvIGRpcmVjdG9yaW8gYSB1biBudWV2byBwdW50byBkZWwgc2lzdGVtYSBkZVxuXAphcmNoaXZvcy5cblwKXG5cClNpIGVsIGVsZW1lbnRvIHNpZW5kbyBtb3ZpZG8gZXMgdW4gZGlyZWN0b3JpbywgZW50b25jZXMgdG9kb3MgbG9zXG5cCmFyY2hpdm9zIHkgc3ViZGlyZWN0b3Jpb3MgcG9yIGRlYmFqbyBkZWwgZWxlbWVudG8gc29uIG1vdmlkb3MgdGFtYmnpbi5cblwKXG5cCk1PVkUgZmFsbGEgc2kgbGEgbG9jYWxpemFjafNuIHZpZWphIHkgbGEgbnVldmEgZXN04W4gZW4gZGlmZXJlbnRlc1xuXApsZXRyYXMgZGUgdW5pZGFkIGRlIERPUy5cbiIKCiAgV0NNRF9QQVRILAoiUEFUSCBtdWVzdHJhIG8gY2FtYmlhIGxhIHJ1dGEgZGUgYvpzcXVlZGEgZGUgY21kLlxuXApcblwKQWwgaW50cm9kdWNpciBQQVRIIHNlIG1vc3RyYXLhIGxhIGNvbmZpZ3VyYWNp824gYWN0dWFsIGRlIFBBVEhcblwKKGluaWNpYWxtZW50ZSBlc3RvIGVzIGVsIHZhbG9yIGRhZG8gZW4gc3UgYXJjaGl2byB3aW5lLmNvbmYpLiBQYXJhXG5cCmNhbWJpYXIgbGEgY29uZmlndXJhY2nzbiBhY29tcGHxZSBhbCBjb21hbmRvIFBBVEggY29uIGVsIG51ZXZvIHZhbG9yLlxuXApcblwKVGFtYmnpbiBlcyBwb3NpYmxlIG1vZGlmaWNhciBlbCBQQVRIIHVzYW5kbyBsYSB2YXJpYWJsZSBkZSBlbnRvcm5vXG5cClBBVEgsIHBvciBlamFtcGxvOlxuXAoJCVBBVEggJVBBVEglO2M6XFx0ZW1wIFxuIgoKICBXQ01EX1BBVVNFLAoiUEFVU0UgbXVlc3RyYSB1biBtZW5zYWplIGVuIGxhIHBhbnRhbGxhICdQdWxzZSBsYSB0ZWNsYSBSZXR1cm4gcGFyYVxuXApjb250aW51YXInIHkgZXNwZXJhIHF1ZSBlbCB1c3VhcmlvIHB1bHNlIGxhIHRlY2xhIFJldHVybi4gRXNcblwKcHJpbmNpcGFsbWVudGUg+nRpbCBlbiBhcmNoaXZvcyBwb3IgbG90ZXMgcGFyYSBwZXJtaXRpciBhbCB1c3VhcmlvXG5cCmxlZXIgbGEgc2FsaWRhIGRlIHVuIGNvbWFuZG8gYW50ZXJpb3IgYW50ZXMgZGUgcXVlIHNlIGRlc3BsYWNlIGZ1ZXJhXG5cCmRlIGxhIHBhbnRhbGxhLlxuIgoKICBXQ01EX1BST01QVCwKIlBST01QVCBhanVzdGEgZWwgcHJvbXB0IGRlIGxhIGztbmVhIGRlIGNvbWFuZG9zLlxuXApcblwKTGEgY2FkZW5hIHF1ZSBzaWd1ZSBhbCBjb21hbmRvIFBST01QVCAoeSBlbCBlc3BhY2lvIGlubWVkaWF0YW1lbnRlXG5cCmRlc3B16XMpIGFwYXJlY2UgYWwgcHJpbmNpcGlvIGRlIGxhIGztbmVhIGN1YW5kbyBjbWQgZXN04SBlc3BlcmFuZG9cblwKbGEgZW50cmFkYS5cblwKXG5cCkxhcyBzaWd1aWVudGVzIGNhZGVuYXMgZGUgY2FyYWN0ZXJlcyB0aWVuZW4gZWwgc2lnbmlmaWNhZG8gZXNwZWNpYWxcblwKcXVlIHNlIG11ZXN0cmE6XG5cClxuXAokJCAgICBTaWdubyBk82xhciAgICAgICAgICRfICAgIE51ZXZhIGztbmVhICAgICAgICAgJGIgICAgU2lnbm8gZGUgdHVibyAofClcblwKJGQgICAgRmVjaGEgYWN0dWFsICAgICAgICAkZSAgICBFc2NhcGUgICAgICAgICAgICAgICRnICAgIFNpZ25vID5cblwKJGwgICAgU2lnbm8gPCAgICAgICAgICAgICAkbiAgICBVbmlkYWQgYWN0dWFsICAgICAgICRwICAgIFJ1dGEgYWN0dWFsXG5cCiRxICAgIFNpZ25vIGlndWFsICAgICAgICAgJHQgICAgSG9yYSBhY3R1YWwgICAgICAgICAkdiAgICBWZXJzafNuIGRlIGNtZFxuXApcblwKTvN0ZXNlIHF1ZSBzaSBzZSBpbnRyb2R1Y2UgZWwgY29tYW5kbyBQUk9NUFQgc2luIHVuYSBjYWRlbmEgZGUgcHJvbXB0XG5cCnJlaW5pY2lhbGl6YSBlbCBwcm9tcHQgYWwgdmFsb3IgcG9yIGRlZmVjdG8sIHF1ZSBlcyBlbCBkaXJlY3RvcmlvXG5cCmFjdHVhbCAocXVlIGluY2x1eWUgbGEgbGV0cmEgZGUgbGEgdW5pZGFkIGFjdHVhbCkgc2VndWlkbyBwb3IgdW4gc2lnbm9cblwKbWF5b3IgcXVlICg+KS5cblwKKGNvbW8gdW4gY29tYW5kbyBQUk9NUFQgJHAkZykuXG5cClxuXApFbCBwcm9tcHQgcHVlZGUgdGFtYmnpbiBzZXIgY2FtYmlhZG8gYWx0ZXJhbmRvIGxhIHZhcmlhYmxlIGRlIGVudG9ybm9cblwKUFJPTVBULCBwb3IgbG8gcXVlIGVsIGNvbWFuZG8gJ1NFVCBQUk9NUFQ9dGV4dG8nIHRpZW5lIGVsIG1pc21vIGVmZWN0b1xuXApxdWUgJ1BST01QVCB0ZXh0bydcbiIKCiAgV0NNRF9SRU0sCiJVbmEgbO1uZWEgZGUgY29tYW5kb3MgcXVlIGVtcGllemEgcG9yIFJFTSAoc2VndWlkbyBkZSB1biBlc3BhY2lvKSBub1xuXApyZWFsaXphIG5pbmd1bmEgYWNjafNuLCB5IHB1ZWRlIHBvciB0YW50byBzZXIgdXRpbGl6YWRhIGNvbW8gdW5cblwKY29tZW50YXJpbyBlbiB1biBhcmNoaXZvIHBvciBsb3Rlcy5cbiIKCiAgV0NNRF9SRU4sICAgICJBeXVkYSBzb2JyZSBSRU5cbiIKICBXQ01EX1JFTkFNRSwgIkF5dWRhIHNvYnJlIFJFTkFNRVxuIgogIFdDTURfUkQsICAgICAiQXl1ZGEgc29icmUgUkRcbiIKICBXQ01EX1JNRElSLCAgIkF5dWRhIHNvYnJlIFJNRElSXG4iCgogIFdDTURfU0VULAoiU0VUIG11ZXN0cmEgbyBjYW1iaWEgbGFzIHZhcmlhYmxlcyBkZSBlbnRvcm5vIGRlIGNtZC5cblwKXG5cClNFVCBzaW4gcGFy4W1ldHJvcyBtdWVzdHJhIHRvZGFzIGxhcyB2YXJpYWJsZXMgZGUgZW50b3JubyBhY3R1YWxlcy5cblwKXG5cClBhcmEgY3JlYXIgbyBtb2RpZmljYXIgdW5hIHZhcmlhYmxlIGRlIGVudG9ybm8gbGEgc2ludGF4aXMgZXM6XG5cClxuXAogICAgICBTRVQgPHZhcmlhYmxlPj08dmFsb3I+XG5cClxuXApkb25kZSA8dmFyaWFibGU+IHkgPHZhbG9yPiBzb24gY2FkZW5hcyBkZSBjYXJhY3RlcmVzLiBObyBkZWJlIGhhYmVyXG5cCmVzcGFjaW9zIGFudGVzIGRlbCBzaWdubyBpZ3VhbCwgbmkgbGEgdmFyaWFibGUgcHVlZGUgY29udGVuZXIgZXNwYWNpb3NcblwKZW1iZWJpZG9zLlxuXApcblwKQmFqbyBXaW5lLCBlbCBlbnRvcm5vIGRlbCBzaXN0ZW1hIG9wZXJhdGl2byBxdWUgaGF5IHBvciBkZWJham8gc2VcblwKaW5jbHV5ZSBlbiBlbCBlbnRvcm5vIGRlIFdpbjMyIHBvciBsbyBxdWUsIHBvciBsbyBnZW5lcmFsLCBoYWJy4SBtdWNob3NcblwKbeFzIHZhbG9yZXMgcXVlIGVuIHVuYSBpbXBsZW1lbnRhY2nzbiBXaW4zMiBuYXRpdmEuIE7zdGVzZSBxdWUgbm8gZXNcblwKcG9zaWJsZSBhZmVjdGFyIGFsIGVudG9ybm8gZGVsIHNpc3RlbWEgb3BlcmF0aXZvIGRlc2RlIGNtZC5cbiIKCiAgV0NNRF9TSElGVCwKIlNISUZUIHNlIHV0aWxpemEgZW4gdW4gYXJjaGl2byBwb3IgbG90ZXMgcGFyYSBlbGltaW5hciB1biBwYXLhbWV0cm9cblwKZGUgbGEgY2FiZXphIGRlIGxhIGxpc3RhLCBwb3IgbG8gcXVlIGVsIHBhcuFtZXRybyAyIHNlIGNvbnZpZXJ0ZSBlblxuXAplbCBwYXLhbWV0cm8gMSB5IGRlbeFzLiBObyB0aWVuZSBlZmVjdG8gc2kgc2UgbGxhbWEgZGVzZGUgbGEgbO1uZWFcblwKZGUgY29tYW5kby5cbiIKCiAgV0NNRF9USU1FLCAgICJBeXVkYSBzb2JyZSBUSU1FXG4iCgogIFdDTURfVElUTEUsCiJBanVzdGEgZWwgdO10dWxvIGRlIGxhIHZlbnRhbmEgZGUgY21kLCBzaW50YXhpcyBUSVRMRSBbY2FkZW5hXVxuIgoKICBXQ01EX1RZUEUsCiJUWVBFIDxub21icmUgZGUgYXJjaGl2bz4gY29waWEgPG5vbWJyZSBkZSBhcmNoaXZvPiBhbCBkaXNwb3NpdGl2byBkZVxuXApjb25zb2xhIChvIGEgZG9uZGUgc2VhIHNpIHNlIHJlZGlyZWNjaW9uYSkuIE5vIHNlIHJlYWxpemEgbmluZ3VuYVxuXApjb21wcm9iYWNp824gZGUgc2kgZWwgYXJjaGl2byBlcyB0ZXh0byBsZWdpYmxlLlxuIgoKICBXQ01EX1ZFUklGWSwKIlZFUklGWSBzZSB1c2EgcGFyYSBwb25lciwgcXVpdGFyIG8gcHJvYmFyIGxhIGV0aXF1ZXRhIGRlIHZlcmlmaWNhY2nzbi5cblwKTGFzIGZvcm1hcyB24WxpZGFzIHNvbjpcblwKXG5cClZFUklGWSBPTglQb25lciBsYSBiYW5kZXJhXG5cClZFUklGWSBPRkYJUXVpdGFyIGxhIGJhbmRlcmFcblwKVkVSSUZZCQlNdWVzdHJhIE9OIHUgT0ZGIGNvbW8gY29ycmVzcG9uZGEuXG5cClxuXApMYSBiYW5kZXJhIGRlIHZlcmlmaWNhY2nzbiBubyB0aWVuZSBmdW5jaW9uYWxpZGFkIGVuIFdpbmUuXG4iCgogIFdDTURfVkVSLAoiVkVSIG11ZXN0cmEgbGEgdmVyc2nzbiBkZSBjbWQgcXVlIGVzdOEgZWplY3V0YW5kb1xuIgoKICBXQ01EX1ZPTCwgICAgIkF5dWRhIHNvYnJlIFZPTFxuIgoKICBXQ01EX1BVU0hELAoiUFVTSEQgPG5vbWJyZSBkZSBkaXJlY3RvcmlvPiBhbG1hY2VuYSBlbCBkaXJlY3RvcmlvIGFjdHVhbCBhIHVuYVxuXApwaWxhLCB5IGx1ZWdvIGNhbWJpYSBlbCBkaXJlY3RvcmlvIGFjdHVhbCBhbCBwcm9wb3JjaW9uYWRvLlxuIgoKICBXQ01EX1BPUEQsICAgIlBPUEQgY2FtYmlhIGVsIGRpcmVjdG9yaW8gYWN0dWFsIGFsIPpsdGltbyBhbG1hY2VuYWRvIGNvblxuXApQVVNIRC5cbiIKCiAgV0NNRF9NT1JFLCAgICJNT1JFIG11ZXN0cmEgbGEgc2FsaWRhIGRlIGFyY2hpdm9zIG8gZW50cmFkYSBlbnR1YmFkYSBwb3IgcOFnaW5hcy5cbiIKCiAgV0NNRF9FWElULAoiRVhJVCB0ZXJtaW5hIGxhIHNlc2nzbiBkZSBjb21hbmRvcyBhY3R1YWwgeSByZWdyZXNhIGFsIHNpc3RlbWFcblwKb3BlcmF0aXZvIG8gaW506XJwcmV0ZSBkZSBjb21hbmRvcyBkZXNkZSBlbCBxdWUgaW52b2PzIGNtZC5cbiIKCiAgMTAwMCwgIkxvcyBjb21hbmRvcyBpbnRlcm5vcyBkZSBDTUQgc29uOlxuXApBVFRSSUJcdFx0TW9zdHJhciBvIGNhbWJpYXIgbG9zIGF0cmlidXRvcyBkZSBhcmNoaXZvIGRlIERPU1xuXApDQUxMXHRcdEludm9jYXIgdW4gYXJjaGl2byBwb3IgbG90ZXMgZGVzZGUgZGVudHJvIGRlIG90cm9cblwKQ0QgKENIRElSKVx0Q2FtYmlhciBlbCBkaXJlY3RvcmlvIHBvciBkZWZlY3RvIGFjdHVhbFxuXApDTFNcdFx0VmFjaWFyIGxhIHBhbnRhbGxhIGRlIGxhIGNvbnNvbGFcblwKQ09QWVx0XHRDb3BpYXIgdW4gYXJjaGl2b1xuXApDVFRZXHRcdENhbWJpYXIgZWwgZGlzcG9zaXRpdm8gZGUgZW50cmFkYS9zYWxpZGFcblwKREFURVx0XHRNb3N0cmFyIG8gY2FtYmlhciBsYSBmZWNoYSBkZWwgc2lzdGVtYVxuXApERUwgKEVSQVNFKVx0RWxpbWluYXIgdW4gYXJjaGl2byBvIGNvbmp1bnRvIGRlIGFyY2hpdm9zXG5cCkRJUlx0XHRMaXN0YXIgZWwgY29udGVuaWRvIGRlIHVuIGRpcmVjdG9yaW9cblwKRUNIT1x0XHRDb3BpYXIgdGV4dG8gZGlyZWN0YW1lbnRlIGEgbGEgc2FsaWRhIGRlIGNvbnNvbGFcblwKSEVMUFx0XHRNb3N0cmFyIGRldGFsbGVzIGJyZXZlcyBkZSBheXVkYSBzb2JyZSB1biB0ZW1hXG5cCk1EIChNS0RJUilcdENyZWFyIHVuIHN1YmRpcmVjdG9yaW9cblwKTU9SRVx0XHRNb3N0cmFyIGxhIHNhbGlkYSBwb3IgcOFnaW5hc1xuXApNT1ZFXHRcdE1vdmVyIHVuIGFyY2hpdm8sIGNvbmp1bnRvIGRlIGFyY2hpdm9zIG8g4XJib2wgZGUgZGlyZWN0b3Jpb1xuXApQQVRIXHRcdEFqdXN0YXIgbyBjYW1iaWFyIGxhIHJ1dGEgZGUgYvpzcXVlZGFcblwKUE9QRFx0XHRSZXN0YXVyYXIgZWwgZGlyZWN0b3JpbyBhbCD6bHRpbW8gYWxtYWNlbmFkbyBjb24gUFVTSERcblwKUFJPTVBUXHRcdENhbWJpYXIgZWwgcHJvbXB0IGRlIGNvbWFuZG9zXG5cClBVU0hEXHRcdENhbWJpYXIgYSB1biBudWV2byBkaXJlY3RvcmlvLCBhbG1hY2VuYW5kbyBlbCBhY3R1YWxcblwKUkVOIChSRU5BTUUpXHRSZW5vbWJyYXIgdW4gYXJjaGl2b1xuXApSRCAoUk1ESVIpXHRFbGltaW5hciB1biBzdWJkaXJlY3RvcmlvXG5cClNFVFx0XHRBanVzdGFyIG8gbW9zdHJhciB2YXJpYWJsZXMgZGUgZW50b3Jub1xuXApUSU1FXHRcdEFqdXN0YXIgbyBtb3N0cmFyIGxhIGhvcmEgYWN0dWFsIGRlbCBzaXN0ZW1hXG5cClRJVExFXHRcdEFqdXN0YXIgZWwgdO10dWxvIGRlIGxhIHZlbnRhbmEgcGFyYSBsYSBzZXNp824gZGUgQ01EXG5cClRZUEVcdFx0VGVjbGVhciBlbCBjb250ZW5pZG8gZGUgdW4gYXJjaGl2byBkZSB0ZXh0b1xuXApWRVJcdFx0TW9zdHJhciBsYSB2ZXJzafNuIGFjdHVhbCBkZSBDTURcblwKVk9MXHRcdE1vc3RyYXIgbGEgZXRpcXVldGEgZGUgdm9sdW1lbiBkZSB1biBkaXNwb3NpdGl2byBkZSBkaXNjb1xuXApFWElUXHRcdENvbmNsdWlyIENNRFxuXG5cCkludHJvZHV6Y2EgSEVMUCA8Y29tYW5kbz4gcGFyYSBt4XMgaW5mb3JtYWNp824gc29icmUgY3VhbHF1aWVyYSBkZSBsb3MgY29tYW5kb3NcbmRlIGFycmliYVxuIgoKICBXQ01EX0NPTkZJUk0sICJFc3ThIHNlZ3VybyIKICBXQ01EX1lFUywgIlMiCiAgV0NNRF9OTywgIk4iCiAgV0NNRF9OT0FTU09DLCAiRmFsdGEgdW5hIGFzb2NpYWNp824gZGUgYXJjaGl2byBwYXJhIGxhIGV4dGVuc2nzbiAlc1xuIgogIFdDTURfTk9GVFlQRSwgIk5pbmf6biBjb21hbmRvIGRlIGFwZXJ0dXJhIGFzb2NpYWRvIGNvbiBlbCB0aXBvIGRlIGFyY2hpdm8gJyVzJ1xuIgogIFdDTURfT1ZFUldSSVRFLCAiT3ZlcndyaXRlICVzIgogIFdDTURfTU9SRVNUUiwgIk3hcy4uLiIKICBXQ01EX1RSVU5DQVRFRExJTkUsICJMaW5lIGluIEJhdGNoIHByb2Nlc3NpbmcgcG9zc2libHkgdHJ1bmNhdGVkLiBVc2luZzpcbiIKICBXQ01EX05ZSSwgIk5vdCBZZXQgSW1wbGVtZW50ZWRcblxuIgogIFdDTURfTk9BUkcsICJBcmd1bWVudCBtaXNzaW5nXG4iCiAgV0NNRF9TWU5UQVhFUlIsICJTeW50YXggZXJyb3JcbiIKICBXQ01EX0ZJTEVOT1RGT1VORCwgIiVzIDogRmlsZSBOb3QgRm91bmRcbiIKICBXQ01EX05PQ01ESEVMUCwgIk5vIGhlbHAgYXZhaWxhYmxlIGZvciAlc1xuIgogIFdDTURfTk9UQVJHRVQsICJUYXJnZXQgdG8gR09UTyBub3QgZm91bmRcbiIKICBXQ01EX0NVUlJFTlREQVRFLCAiQ3VycmVudCBEYXRlIGlzICVzXG4iCiAgV0NNRF9DVVJSRU5UVElNRSwgIkN1cnJlbnQgVGltZSBpcyAlc1xuIgogIFdDTURfTkVXREFURSwgIkVudGVyIG5ldyBkYXRlOiAiCiAgV0NNRF9ORVdUSU1FLCAiRW50ZXIgbmV3IHRpbWU6ICIKICBXQ01EX01JU1NJTkdFTlYsICJFbnZpcm9ubWVudCB2YXJpYWJsZSAlcyBub3QgZGVmaW5lZFxuIgogIFdDTURfUkVBREZBSUwsICJGYWlsZWQgdG8gb3BlbiAnJXMnXG4iCiAgV0NNRF9DQUxMSU5TQ1JJUFQsICJDYW5ub3QgY2FsbCBiYXRjaCBsYWJlbCBvdXRzaWRlIG9mIGEgYmF0Y2ggc2NyaXB0XG4iCiAgV0NNRF9BTEwsICJBIgogIFdDTURfREVMUFJPTVBULCAiJXMsIERlbGV0ZSIKICBXQ01EX0VDSE9QUk9NUFQsICJFY2hvIGlzICVzXG4iCiAgV0NNRF9WRVJJRllQUk9NUFQsICJWZXJpZnkgaXMgJXNcbiIKICBXQ01EX1ZFUklGWUVSUiwgIlZlcmlmeSBtdXN0IGJlIE9OIG9yIE9GRlxuIjsKICBXQ01EX0FSR0VSUiwgIlBhcmFtZXRlciBlcnJvclxuIgogIFdDTURfVk9MVU1FREVUQUlMLCAiVm9sdW1lIGluIGRyaXZlICVjIGlzICVzXG5Wb2x1bWUgU2VyaWFsIE51bWJlciBpcyAlMDR4LSUwNHhcblxuIgogIFdDTURfVk9MVU1FUFJPTVBULCAiVm9sdW1lIGxhYmVsICgxMSBjaGFyYWN0ZXJzLCBFTlRFUiBmb3Igbm9uZSk/IgogIFdDTURfTk9QQVRILCAiUEFUSCBub3QgZm91bmRcbiIKICBXQ01EX0FOWUtFWSwiUHJlc3MgUmV0dXJuIGtleSB0byBjb250aW51ZTogIgogIFdDTURfQ09OU1RJVExFLCJXaW5lIENvbW1hbmQgUHJvbXB0IgogIFdDTURfVkVSU0lPTiwiQ01EIFZlcnNpb24gJXNcblxuIgogIFdDTURfTU9SRVBST01QVCwgIk1vcmU/ICIKfQo=