LyoKICogV2luZSBjb21tYW5kIHByb21wdAogKiBTcGFuaXNoIExhbmd1YWdlIFN1cHBvcnQKICoKICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA3IEpvc+kgTWFudWVsIEZlcnJlciBPcnRpegogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgpMQU5HVUFHRSBMQU5HX1NQQU5JU0gsIFNVQkxBTkdfTkVVVFJBTAoKU1RSSU5HVEFCTEUKewogIFdDTURfQVRUUklCLCAiQXl1ZGEgc29icmUgQVRUUklCXG4iCiAgV0NNRF9DQUxMLAoiQ0FMTCA8bm9tYnJlIGRlIGFyY2hpdm8gcG9yIGxvdGVzPiBzZSB1dGlsaXphIGRlbnRybyBkZSB1biBhcmNoaXZvIHBvclxuXApsb3RlcyBwYXJhIGVqZWN1dGFyIGNvbWFuZG9zIGRlc2RlIG90cm8gYXJjaGl2byBwb3IgbG90ZXMuIEN1YW5kbyBlbFxuXAphcmNoaXZvIHBvciBsb3RlcyBleGlzdGUsIGVsIGNvbnRyb2wgcmVncmVzYSBhbCBhcmNoaXZvIHF1ZSBsbyBsbGFt8y4gRWxcblwKY29tYW5kbyBDQUxMIHB1ZWRlIHByb3BvcmNpb25hciBwYXLhbWV0cm9zIHBhcmEgZWwgcHJvY2VkaW1pZW50byBsbGFtYWRvLlxuXApcblwKTG9zIGNhbWJpb3Mgc29icmUgZWwgZGlyZWN0b3JpbyBwb3IgZGVmZWN0bywgdmFyaWFibGVzIGRlIGVudG9ybm8sIGV0Yy5cblwKcmVhbGl6YWRvcyBkZXNkZSBkZW50cm8gZGUgdW4gcHJvY2VkaW1pZW50byBsbGFtYWRvIHNvbiBoZXJlZGFkb3MgcG9yIGVsXG5cCmxsYW1hbnRlLlxuIgoKICBXQ01EX0NELCAgICAgIkF5dWRhIHNvYnJlIENEXG4iCiAgV0NNRF9DSERJUiwgICJBeXVkYSBzb2JyZSBDSERJUlxuIgoKICBXQ01EX0NMUywgICAgIkNMUyBsaW1waWEgbGEgcGFudGFsbGEgZGUgbGEgY29uc29sYVxuIgoKICBXQ01EX0NPUFksICAgIkF5dWRhIHNvYnJlIENPUFlcbiIKICBXQ01EX0NUVFksICAgIkF5dWRhIHNvYnJlIENUVFlcbiIKICBXQ01EX0RBVEUsICAgIkF5dWRhIHNvYnJlIERBVEVcbiIKICBXQ01EX0RFTCwgICAgIkF5dWRhIHNvYnJlIERFTFxuIgogIFdDTURfRElSLCAgICAiQXl1ZGEgc29icmUgRElSXG4iCgogIFdDTURfRUNITywKIkVDSE8gPGNhZGVuYT4gbXVlc3RyYSA8Y2FkZW5hPiBlbiBlbCBkaXNwb3NpdGl2byBkZSB0ZXJtaW5hbCBhY3R1YWwuXG5cClxuXApFQ0hPIE9OIHByb3ZvY2EgcXVlIHRvZG9zIGxvcyBjb21hbmRvcyBzdWJzaWd1aWVudGVzIGVuIHVuIGFyY2hpdm8gcG9yXG5cCmxvdGVzIHNlYW4gbW9zdHJhZG9zIGVuIGVsIHRlcm1pbmFsIGFudGVzIGRlIHNlciBlamVjdXRhZG9zLlxuXApcblwKRUNITyBPRkYgaW52aWVydGUgZWwgZWZlY3RvIGRlIHVuIHByZXZpbyBFQ0hPIE9OIChFQ0hPIGVzIE9GRiBwb3JcblwKZGVmZWN0bykuIEVsIGNvbWFuZG8gRUNITyBPRkYgcHVlZGUgcHJldmVuaXJzZSBkZSBzZXIgbW9zdHJhZG9cblwKcHJlY2VkaeluZG9sbyBwb3IgdW4gc2lnbm8gQC5cbiIKCiAgV0NNRF9FUkFTRSwgICJBeXVkYSBzb2JyZSBFUkFTRVxuIgoKICBXQ01EX0ZPUiwKIkVsIGNvbWFuZG8gRk9SIHNlIHV0aWxpemEgcGFyYSBlamVjdXRhciB1biBjb21hbmRvIHBhcmEgY2FkYSB1bm8gZGVcblwKdW4gY29uanVudG8gZGUgYXJjaGl2b3MuXG5cClxuXApTaW50YXhpczogRk9SICV2YXJpYWJsZSBJTiAoY29uanVudG8pIERPIGNvbWFuZG9cblwKXG5cCkxhIG5lY2VzaWRhZCBkZSBkb2JsYXIgZWwgc2lnbm8gJSBjdWFuZG8gc2UgdXRpbGl6YSBGT1IgZW4gdW4gYXJjaGl2b1xuXApwb3IgbG90ZXMgbm8gZXhpc3RlIGVuIGNtZC5cbiIKCiAgV0NNRF9HT1RPLAoiRWwgY29tYW5kbyBHT1RPIHRyYW5zZmllcmUgbGEgZWplY3VjafNuIGEgb3RybyBtYW5kYXRvIGRlbnRybyBkZSB1blxuXAphcmNoaXZvIHBvciBsb3Rlcy5cblwKXG5cCkxhIGV0aXF1ZXRhIHF1ZSBlcyBlbCBvYmpldGl2byBkZSB1biBjb21hbmRvIEdPVE8gcHVlZGUgc2VyIGRlIGhhc3RhXG5cCjI1NSBjYXJhY3RlcmVzIGRlIGxvbmdpdHVkIHBlcm8gbm8gcHVlZGUgaW5jbHVpciBlc3BhY2lvcyAoZXN0byBlc1xuXApkaWZlcmVudGUgYSBvdHJvcyBzaXN0ZW1hcyBvcGVyYXRpdm9zKS4gU2kgZG9zIG8gbeFzIGV0aXF1ZXRhc1xuXAppZOludGljYXMgZXhpc3RlbiBlbiB1biBhcmNoaXZvIHBvciBsb3RlcywgbGEgcHJpbWVyYSBkZSBlbGxhcyBzZXLhXG5cCnNpZW1wcmUgbGEgcXVlIHNlIGVqZWN1dGFy4S4gRWwgaW50ZW50byBkZSBoYWNlciBHT1RPIGEgdW5hIGV0aXF1ZXRhXG5cCm5vIGV4aXN0ZW50ZSB0ZXJtaW5hIGxhIGVqZWN1Y2nzbiBkZWwgYXJjaGl2byBwb3IgbG90ZXMuXG5cClxuXApHT1RPIG5vIHRpZW5lIGVmZWN0byBjdWFuZG8gc2UgdXNhIGludGVyYWN0aXZhbWVudGUuXG4iCgogIFdDTURfSEVMUCwgICAiQXl1ZGEgc29icmUgSEVMUFxuIgoKICBXQ01EX0lGLAoiSUYgc2UgdXRpbGl6YSBwYXJhIGVqZWN1dGFyIGNvbmRpY2lvbmFsbWVudGUgdW4gY29tYW5kby5cblwKXG5cClNpbnRheGlzOglJRiBbTk9UXSBFWElTVCBub21icmVfYXJjaGl2byBjb21hbmRvXG5cCgkJSUYgW05PVF0gY2FkZW5hMT09Y2FkZW5hMiBjb21hbmRvXG5cCgkJSUYgW05PVF0gRVJST1JMRVZFTCBu+m1lcm8gY29tYW5kb1xuXApcblwKRW4gbGEgc2VndW5kYSBmb3JtYSBkZWwgY29tYW5kbywgY2FkZW5hMSB5IGNhZGVuYTIgZGViZW4gZXN0YXIgZW50cmVcblwKY29taWxsYXMgZG9ibGVzLiBMYSBjb21wYXJhY2nzbiBubyBkaXN0aW5ndWUgbWF5+nNjdWxhcyBkZSBtaW76c2N1bGFzLlxuIgoKICBXQ01EX0xBQkVMLCAgIkxBQkVMIHNlIHV0aWxpemEgcGFyYSBhanVzdGFyIHVuYSBldGlxdWV0YSBkZSB2b2x1bWVuXG5cCiAgZGUgZGlzY28uXG5cClxuXApTaW50YXhpczogTEFCRUwgW3VuaWRhZDpdXG5cCkVsIGNvbWFuZG8gbGUgcGVkaXLhIGxhIG51ZXZhIGV0aXF1ZXRhIGRlIHZvbHVtZW4gcGFyYSBsYSB1bmlkYWQgZGFkYS5cblwKUHVlZGUgdmVyIGxhIGV0aXF1ZXRhIGRlIHZvbHVtZW4gZGVsIGRpc2NvIGNvbiBlbCBjb21hbmRvIFZPTC5cbiIKCiAgV0NNRF9NRCwgICAgICJBeXVkYSBzb2JyZSBNRFxuIgogIFdDTURfTUtESVIsICAiQXl1ZGEgc29icmUgTUtESVJcbiIKICBXQ01EX01PVkUsCiJNT1ZFIHJlYWxvamEgdW4gYXJjaGl2byBvIGRpcmVjdG9yaW8gYSB1biBudWV2byBwdW50byBkZWwgc2lzdGVtYSBkZVxuXAphcmNoaXZvcy5cblwKXG5cClNpIGVsIGVsZW1lbnRvIHNpZW5kbyBtb3ZpZG8gZXMgdW4gZGlyZWN0b3JpbywgZW50b25jZXMgdG9kb3MgbG9zXG5cCmFyY2hpdm9zIHkgc3ViZGlyZWN0b3Jpb3MgcG9yIGRlYmFqbyBkZWwgZWxlbWVudG8gc29uIG1vdmlkb3MgdGFtYmnpbi5cblwKXG5cCk1PVkUgZmFsbGEgc2kgbGEgbG9jYWxpemFjafNuIHZpZWphIHkgbGEgbnVldmEgZXN04W4gZW4gZGlmZXJlbnRlc1xuXApsZXRyYXMgZGUgdW5pZGFkIGRlIERPUy5cbiIKCiAgV0NNRF9QQVRILAoiUEFUSCBtdWVzdHJhIG8gY2FtYmlhIGxhIHJ1dGEgZGUgYvpzcXVlZGEgZGUgY21kLlxuXApcblwKQWwgaW50cm9kdWNpciBQQVRIIHNlIG1vc3RyYXLhIGxhIGNvbmZpZ3VyYWNp824gYWN0dWFsIGRlIFBBVEhcblwKKGluaWNpYWxtZW50ZSBlc3RvIGVzIGVsIHZhbG9yIGRhZG8gZW4gc3UgYXJjaGl2byB3aW5lLmNvbmYpLiBQYXJhXG5cCmNhbWJpYXIgbGEgY29uZmlndXJhY2nzbiBhY29tcGHxZSBhbCBjb21hbmRvIFBBVEggY29uIGVsIG51ZXZvIHZhbG9yLlxuXApcblwKVGFtYmnpbiBlcyBwb3NpYmxlIG1vZGlmaWNhciBlbCBQQVRIIHVzYW5kbyBsYSB2YXJpYWJsZSBkZSBlbnRvcm5vXG5cClBBVEgsIHBvciBlamFtcGxvOlxuXAoJCVBBVEggJVBBVEglO2M6XFx0ZW1wXG4iCgogIFdDTURfUEFVU0UsCiJQQVVTRSBtdWVzdHJhIHVuIG1lbnNhamUgZW4gbGEgcGFudGFsbGEgJ1B1bHNlIGxhIHRlY2xhIFJldHVybiBwYXJhXG5cCmNvbnRpbnVhcicgeSBlc3BlcmEgcXVlIGVsIHVzdWFyaW8gcHVsc2UgbGEgdGVjbGEgUmV0dXJuLiBFc1xuXApwcmluY2lwYWxtZW50ZSD6dGlsIGVuIGFyY2hpdm9zIHBvciBsb3RlcyBwYXJhIHBlcm1pdGlyIGFsIHVzdWFyaW9cblwKbGVlciBsYSBzYWxpZGEgZGUgdW4gY29tYW5kbyBhbnRlcmlvciBhbnRlcyBkZSBxdWUgc2UgZGVzcGxhY2UgZnVlcmFcblwKZGUgbGEgcGFudGFsbGEuXG4iCgogIFdDTURfUFJPTVBULAoiUFJPTVBUIGFqdXN0YSBlbCBwcm9tcHQgZGUgbGEgbO1uZWEgZGUgY29tYW5kb3MuXG5cClxuXApMYSBjYWRlbmEgcXVlIHNpZ3VlIGFsIGNvbWFuZG8gUFJPTVBUICh5IGVsIGVzcGFjaW8gaW5tZWRpYXRhbWVudGVcblwKZGVzcHXpcykgYXBhcmVjZSBhbCBwcmluY2lwaW8gZGUgbGEgbO1uZWEgY3VhbmRvIGNtZCBlc3ThIGVzcGVyYW5kb1xuXApsYSBlbnRyYWRhLlxuXApcblwKTGFzIHNpZ3VpZW50ZXMgY2FkZW5hcyBkZSBjYXJhY3RlcmVzIHRpZW5lbiBlbCBzaWduaWZpY2FkbyBlc3BlY2lhbFxuXApxdWUgc2UgbXVlc3RyYTpcblwKXG5cCiQkICAgIFNpZ25vIGTzbGFyICAgICAgICAgJF8gICAgTnVldmEgbO1uZWEgICAgICAgICAkYiAgICBTaWdubyBkZSB0dWJvICh8KVxuXAokZCAgICBGZWNoYSBhY3R1YWwgICAgICAgICRlICAgIEVzY2FwZSAgICAgICAgICAgICAgJGcgICAgU2lnbm8gPlxuXAokbCAgICBTaWdubyA8ICAgICAgICAgICAgICRuICAgIFVuaWRhZCBhY3R1YWwgICAgICAgJHAgICAgUnV0YSBhY3R1YWxcblwKJHEgICAgU2lnbm8gaWd1YWwgICAgICAgICAkdCAgICBIb3JhIGFjdHVhbCAgICAgICAgICR2ICAgIFZlcnNp824gZGUgY21kXG5cClxuXApO83Rlc2UgcXVlIHNpIHNlIGludHJvZHVjZSBlbCBjb21hbmRvIFBST01QVCBzaW4gdW5hIGNhZGVuYSBkZSBwcm9tcHRcblwKcmVpbmljaWFsaXphIGVsIHByb21wdCBhbCB2YWxvciBwb3IgZGVmZWN0bywgcXVlIGVzIGVsIGRpcmVjdG9yaW9cblwKYWN0dWFsIChxdWUgaW5jbHV5ZSBsYSBsZXRyYSBkZSBsYSB1bmlkYWQgYWN0dWFsKSBzZWd1aWRvIHBvciB1biBzaWdub1xuXAptYXlvciBxdWUgKD4pLlxuXAooY29tbyB1biBjb21hbmRvIFBST01QVCAkcCRnKS5cblwKXG5cCkVsIHByb21wdCBwdWVkZSB0YW1iaeluIHNlciBjYW1iaWFkbyBhbHRlcmFuZG8gbGEgdmFyaWFibGUgZGUgZW50b3Jub1xuXApQUk9NUFQsIHBvciBsbyBxdWUgZWwgY29tYW5kbyAnU0VUIFBST01QVD10ZXh0bycgdGllbmUgZWwgbWlzbW8gZWZlY3RvXG5cCnF1ZSAnUFJPTVBUIHRleHRvJ1xuIgoKICBXQ01EX1JFTSwKIlVuYSBs7W5lYSBkZSBjb21hbmRvcyBxdWUgZW1waWV6YSBwb3IgUkVNIChzZWd1aWRvIGRlIHVuIGVzcGFjaW8pIG5vXG5cCnJlYWxpemEgbmluZ3VuYSBhY2Np824sIHkgcHVlZGUgcG9yIHRhbnRvIHNlciB1dGlsaXphZGEgY29tbyB1blxuXApjb21lbnRhcmlvIGVuIHVuIGFyY2hpdm8gcG9yIGxvdGVzLlxuIgoKICBXQ01EX1JFTiwgICAgIkF5dWRhIHNvYnJlIFJFTlxuIgogIFdDTURfUkVOQU1FLCAiQXl1ZGEgc29icmUgUkVOQU1FXG4iCiAgV0NNRF9SRCwgICAgICJBeXVkYSBzb2JyZSBSRFxuIgogIFdDTURfUk1ESVIsICAiQXl1ZGEgc29icmUgUk1ESVJcbiIKCiAgV0NNRF9TRVQsCiJTRVQgbXVlc3RyYSBvIGNhbWJpYSBsYXMgdmFyaWFibGVzIGRlIGVudG9ybm8gZGUgY21kLlxuXApcblwKU0VUIHNpbiBwYXLhbWV0cm9zIG11ZXN0cmEgdG9kYXMgbGFzIHZhcmlhYmxlcyBkZSBlbnRvcm5vIGFjdHVhbGVzLlxuXApcblwKUGFyYSBjcmVhciBvIG1vZGlmaWNhciB1bmEgdmFyaWFibGUgZGUgZW50b3JubyBsYSBzaW50YXhpcyBlczpcblwKXG5cCiAgICAgIFNFVCA8dmFyaWFibGU+PTx2YWxvcj5cblwKXG5cCmRvbmRlIDx2YXJpYWJsZT4geSA8dmFsb3I+IHNvbiBjYWRlbmFzIGRlIGNhcmFjdGVyZXMuIE5vIGRlYmUgaGFiZXJcblwKZXNwYWNpb3MgYW50ZXMgZGVsIHNpZ25vIGlndWFsLCBuaSBsYSB2YXJpYWJsZSBwdWVkZSBjb250ZW5lciBlc3BhY2lvc1xuXAplbWJlYmlkb3MuXG5cClxuXApCYWpvIFdpbmUsIGVsIGVudG9ybm8gZGVsIHNpc3RlbWEgb3BlcmF0aXZvIHF1ZSBoYXkgcG9yIGRlYmFqbyBzZVxuXAppbmNsdXllIGVuIGVsIGVudG9ybm8gZGUgV2luMzIgcG9yIGxvIHF1ZSwgcG9yIGxvIGdlbmVyYWwsIGhhYnLhIG11Y2hvc1xuXApt4XMgdmFsb3JlcyBxdWUgZW4gdW5hIGltcGxlbWVudGFjafNuIFdpbjMyIG5hdGl2YS4gTvN0ZXNlIHF1ZSBubyBlc1xuXApwb3NpYmxlIGFmZWN0YXIgYWwgZW50b3JubyBkZWwgc2lzdGVtYSBvcGVyYXRpdm8gZGVzZGUgY21kLlxuIgoKICBXQ01EX1NISUZULAoiU0hJRlQgc2UgdXRpbGl6YSBlbiB1biBhcmNoaXZvIHBvciBsb3RlcyBwYXJhIGVsaW1pbmFyIHVuIHBhcuFtZXRyb1xuXApkZSBsYSBjYWJlemEgZGUgbGEgbGlzdGEsIHBvciBsbyBxdWUgZWwgcGFy4W1ldHJvIDIgc2UgY29udmllcnRlIGVuXG5cCmVsIHBhcuFtZXRybyAxIHkgZGVt4XMuIE5vIHRpZW5lIGVmZWN0byBzaSBzZSBsbGFtYSBkZXNkZSBsYSBs7W5lYVxuXApkZSBjb21hbmRvLlxuIgoKICBXQ01EX1RJTUUsICAgIkF5dWRhIHNvYnJlIFRJTUVcbiIKCiAgV0NNRF9USVRMRSwKIkFqdXN0YSBlbCB07XR1bG8gZGUgbGEgdmVudGFuYSBkZSBjbWQsIHNpbnRheGlzIFRJVExFIFtjYWRlbmFdXG4iCgogIFdDTURfVFlQRSwKIlRZUEUgPG5vbWJyZSBkZSBhcmNoaXZvPiBjb3BpYSA8bm9tYnJlIGRlIGFyY2hpdm8+IGFsIGRpc3Bvc2l0aXZvIGRlXG5cCmNvbnNvbGEgKG8gYSBkb25kZSBzZWEgc2kgc2UgcmVkaXJlY2Npb25hKS4gTm8gc2UgcmVhbGl6YSBuaW5ndW5hXG5cCmNvbXByb2JhY2nzbiBkZSBzaSBlbCBhcmNoaXZvIGVzIHRleHRvIGxlZ2libGUuXG4iCgogIFdDTURfVkVSSUZZLAoiVkVSSUZZIHNlIHVzYSBwYXJhIHBvbmVyLCBxdWl0YXIgbyBwcm9iYXIgbGEgZXRpcXVldGEgZGUgdmVyaWZpY2FjafNuLlxuXApMYXMgZm9ybWFzIHbhbGlkYXMgc29uOlxuXApcblwKVkVSSUZZIE9OCVBvbmVyIGxhIGJhbmRlcmFcblwKVkVSSUZZIE9GRglRdWl0YXIgbGEgYmFuZGVyYVxuXApWRVJJRlkJCU11ZXN0cmEgT04gdSBPRkYgY29tbyBjb3JyZXNwb25kYS5cblwKXG5cCkxhIGJhbmRlcmEgZGUgdmVyaWZpY2FjafNuIG5vIHRpZW5lIGZ1bmNpb25hbGlkYWQgZW4gV2luZS5cbiIKCiAgV0NNRF9WRVIsCiJWRVIgbXVlc3RyYSBsYSB2ZXJzafNuIGRlIGNtZCBxdWUgZXN04SBlamVjdXRhbmRvXG4iCgogIFdDTURfVk9MLCAgICAiQXl1ZGEgc29icmUgVk9MXG4iCgogIFdDTURfUFVTSEQsCiJQVVNIRCA8bm9tYnJlIGRlIGRpcmVjdG9yaW8+IGFsbWFjZW5hIGVsIGRpcmVjdG9yaW8gYWN0dWFsIGEgdW5hXG5cCnBpbGEsIHkgbHVlZ28gY2FtYmlhIGVsIGRpcmVjdG9yaW8gYWN0dWFsIGFsIHByb3BvcmNpb25hZG8uXG4iCgogIFdDTURfUE9QRCwgICAiUE9QRCBjYW1iaWEgZWwgZGlyZWN0b3JpbyBhY3R1YWwgYWwg+mx0aW1vIGFsbWFjZW5hZG8gY29uXG5cClBVU0hELlxuIgoKICBXQ01EX01PUkUsICAgIk1PUkUgbXVlc3RyYSBsYSBzYWxpZGEgZGUgYXJjaGl2b3MgbyBlbnRyYWRhIGVudHViYWRhIHBvciBw4WdpbmFzLlxuIgoKICBXQ01EX0VYSVQsCiJFWElUIHRlcm1pbmEgbGEgc2VzafNuIGRlIGNvbWFuZG9zIGFjdHVhbCB5IHJlZ3Jlc2EgYWwgc2lzdGVtYVxuXApvcGVyYXRpdm8gbyBpbnTpcnByZXRlIGRlIGNvbWFuZG9zIGRlc2RlIGVsIHF1ZSBpbnZvY/MgY21kLlxuIgoKICBXQ01EX0FMTEhFTFAsICJMb3MgY29tYW5kb3MgaW50ZXJub3MgZGUgQ01EIHNvbjpcblwKQVRUUklCXHRcdE1vc3RyYXIgbyBjYW1iaWFyIGxvcyBhdHJpYnV0b3MgZGUgYXJjaGl2byBkZSBET1NcblwKQ0FMTFx0XHRJbnZvY2FyIHVuIGFyY2hpdm8gcG9yIGxvdGVzIGRlc2RlIGRlbnRybyBkZSBvdHJvXG5cCkNEIChDSERJUilcdENhbWJpYXIgZWwgZGlyZWN0b3JpbyBwb3IgZGVmZWN0byBhY3R1YWxcblwKQ0xTXHRcdFZhY2lhciBsYSBwYW50YWxsYSBkZSBsYSBjb25zb2xhXG5cCkNPUFlcdFx0Q29waWFyIHVuIGFyY2hpdm9cblwKQ1RUWVx0XHRDYW1iaWFyIGVsIGRpc3Bvc2l0aXZvIGRlIGVudHJhZGEvc2FsaWRhXG5cCkRBVEVcdFx0TW9zdHJhciBvIGNhbWJpYXIgbGEgZmVjaGEgZGVsIHNpc3RlbWFcblwKREVMIChFUkFTRSlcdEVsaW1pbmFyIHVuIGFyY2hpdm8gbyBjb25qdW50byBkZSBhcmNoaXZvc1xuXApESVJcdFx0TGlzdGFyIGVsIGNvbnRlbmlkbyBkZSB1biBkaXJlY3RvcmlvXG5cCkVDSE9cdFx0Q29waWFyIHRleHRvIGRpcmVjdGFtZW50ZSBhIGxhIHNhbGlkYSBkZSBjb25zb2xhXG5cCkhFTFBcdFx0TW9zdHJhciBkZXRhbGxlcyBicmV2ZXMgZGUgYXl1ZGEgc29icmUgdW4gdGVtYVxuXApNRCAoTUtESVIpXHRDcmVhciB1biBzdWJkaXJlY3RvcmlvXG5cCk1PUkVcdFx0TW9zdHJhciBsYSBzYWxpZGEgcG9yIHDhZ2luYXNcblwKTU9WRVx0XHRNb3ZlciB1biBhcmNoaXZvLCBjb25qdW50byBkZSBhcmNoaXZvcyBvIOFyYm9sIGRlIGRpcmVjdG9yaW9cblwKUEFUSFx0XHRBanVzdGFyIG8gY2FtYmlhciBsYSBydXRhIGRlIGL6c3F1ZWRhXG5cClBPUERcdFx0UmVzdGF1cmFyIGVsIGRpcmVjdG9yaW8gYWwg+mx0aW1vIGFsbWFjZW5hZG8gY29uIFBVU0hEXG5cClBST01QVFx0XHRDYW1iaWFyIGVsIHByb21wdCBkZSBjb21hbmRvc1xuXApQVVNIRFx0XHRDYW1iaWFyIGEgdW4gbnVldm8gZGlyZWN0b3JpbywgYWxtYWNlbmFuZG8gZWwgYWN0dWFsXG5cClJFTiAoUkVOQU1FKVx0UmVub21icmFyIHVuIGFyY2hpdm9cblwKUkQgKFJNRElSKVx0RWxpbWluYXIgdW4gc3ViZGlyZWN0b3Jpb1xuXApTRVRcdFx0QWp1c3RhciBvIG1vc3RyYXIgdmFyaWFibGVzIGRlIGVudG9ybm9cblwKVElNRVx0XHRBanVzdGFyIG8gbW9zdHJhciBsYSBob3JhIGFjdHVhbCBkZWwgc2lzdGVtYVxuXApUSVRMRVx0XHRBanVzdGFyIGVsIHTtdHVsbyBkZSBsYSB2ZW50YW5hIHBhcmEgbGEgc2VzafNuIGRlIENNRFxuXApUWVBFXHRcdFRlY2xlYXIgZWwgY29udGVuaWRvIGRlIHVuIGFyY2hpdm8gZGUgdGV4dG9cblwKVkVSXHRcdE1vc3RyYXIgbGEgdmVyc2nzbiBhY3R1YWwgZGUgQ01EXG5cClZPTFx0XHRNb3N0cmFyIGxhIGV0aXF1ZXRhIGRlIHZvbHVtZW4gZGUgdW4gZGlzcG9zaXRpdm8gZGUgZGlzY29cblwKRVhJVFx0XHRDb25jbHVpciBDTURcblxuXApJbnRyb2R1emNhIEhFTFAgPGNvbWFuZG8+IHBhcmEgbeFzIGluZm9ybWFjafNuIHNvYnJlIGN1YWxxdWllcmEgZGUgbG9zIGNvbWFuZG9zXG5kZSBhcnJpYmFcbiIKCiAgV0NNRF9DT05GSVJNLCAiRXN04SBzZWd1cm8iCiAgV0NNRF9ZRVMsICJTIgogIFdDTURfTk8sICJOIgogIFdDTURfTk9BU1NPQywgIkZhbHRhIHVuYSBhc29jaWFjafNuIGRlIGFyY2hpdm8gcGFyYSBsYSBleHRlbnNp824gJXNcbiIKICBXQ01EX05PRlRZUEUsICJOaW5n+m4gY29tYW5kbyBkZSBhcGVydHVyYSBhc29jaWFkbyBjb24gZWwgdGlwbyBkZSBhcmNoaXZvICclcydcbiIKICBXQ01EX09WRVJXUklURSwgIk92ZXJ3cml0ZSAlcyIKICBXQ01EX01PUkVTVFIsICJN4XMuLi4iCiAgV0NNRF9UUlVOQ0FURURMSU5FLCAiTGluZSBpbiBCYXRjaCBwcm9jZXNzaW5nIHBvc3NpYmx5IHRydW5jYXRlZC4gVXNpbmc6XG4iCiAgV0NNRF9OWUksICJOb3QgWWV0IEltcGxlbWVudGVkXG5cbiIKICBXQ01EX05PQVJHLCAiQXJndW1lbnQgbWlzc2luZ1xuIgogIFdDTURfU1lOVEFYRVJSLCAiU3ludGF4IGVycm9yXG4iCiAgV0NNRF9GSUxFTk9URk9VTkQsICIlcyA6IEZpbGUgTm90IEZvdW5kXG4iCiAgV0NNRF9OT0NNREhFTFAsICJObyBoZWxwIGF2YWlsYWJsZSBmb3IgJXNcbiIKICBXQ01EX05PVEFSR0VULCAiVGFyZ2V0IHRvIEdPVE8gbm90IGZvdW5kXG4iCiAgV0NNRF9DVVJSRU5UREFURSwgIkN1cnJlbnQgRGF0ZSBpcyAlc1xuIgogIFdDTURfQ1VSUkVOVFRJTUUsICJDdXJyZW50IFRpbWUgaXMgJXNcbiIKICBXQ01EX05FV0RBVEUsICJFbnRlciBuZXcgZGF0ZTogIgogIFdDTURfTkVXVElNRSwgIkVudGVyIG5ldyB0aW1lOiAiCiAgV0NNRF9NSVNTSU5HRU5WLCAiRW52aXJvbm1lbnQgdmFyaWFibGUgJXMgbm90IGRlZmluZWRcbiIKICBXQ01EX1JFQURGQUlMLCAiRmFpbGVkIHRvIG9wZW4gJyVzJ1xuIgogIFdDTURfQ0FMTElOU0NSSVBULCAiQ2Fubm90IGNhbGwgYmF0Y2ggbGFiZWwgb3V0c2lkZSBvZiBhIGJhdGNoIHNjcmlwdFxuIgogIFdDTURfQUxMLCAiQSIKICBXQ01EX0RFTFBST01QVCwgIiVzLCBEZWxldGUiCiAgV0NNRF9FQ0hPUFJPTVBULCAiRWNobyBpcyAlc1xuIgogIFdDTURfVkVSSUZZUFJPTVBULCAiVmVyaWZ5IGlzICVzXG4iCiAgV0NNRF9WRVJJRllFUlIsICJWZXJpZnkgbXVzdCBiZSBPTiBvciBPRkZcbiI7CiAgV0NNRF9BUkdFUlIsICJQYXJhbWV0ZXIgZXJyb3JcbiIKICBXQ01EX1ZPTFVNRURFVEFJTCwgIlZvbHVtZSBpbiBkcml2ZSAlYyBpcyAlc1xuVm9sdW1lIFNlcmlhbCBOdW1iZXIgaXMgJTA0eC0lMDR4XG5cbiIKICBXQ01EX1ZPTFVNRVBST01QVCwgIlZvbHVtZSBsYWJlbCAoMTEgY2hhcmFjdGVycywgRU5URVIgZm9yIG5vbmUpPyIKICBXQ01EX05PUEFUSCwgIlBBVEggbm90IGZvdW5kXG4iCiAgV0NNRF9BTllLRVksIlByZXNzIFJldHVybiBrZXkgdG8gY29udGludWU6ICIKICBXQ01EX0NPTlNUSVRMRSwiV2luZSBDb21tYW5kIFByb21wdCIKICBXQ01EX1ZFUlNJT04sIkNNRCBWZXJzaW9uICVzXG5cbiIKICBXQ01EX01PUkVQUk9NUFQsICJNb3JlPyAiCn0K