LyoKICogV2luZSBjb21tYW5kIHByb21wdAogKiBOb3J3ZWdpYW4gQm9rbeVsIExhbmd1YWdlIFN1cHBvcnQKICoKICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMDcgQWxleGFuZGVyIE4uIFP4cm5lcyA8YWxleEB0aGVoYW5kb2ZhZ29ueS5jb20+CiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCkxBTkdVQUdFIExBTkdfTk9SV0VHSUFOLCBTVUJMQU5HX05PUldFR0lBTl9CT0tNQUwKClNUUklOR1RBQkxFCnsKICBXQ01EX0FUVFJJQiwgIkhqZWxwIHRpbCBBVFRSSUJcbiIKICBXQ01EX0NBTEwsCiKrQ0FMTCA8c2F0c3Zpc2ZpbG5hdm4+uyBicnVrZXMgaSBlbiBzYXRzdmlzIGZpbCBmb3Ig5SB1dGb4cmUga29tbWFuZG9lclxuXApmcmEgZW4gYW5uZW4gc2F0c3ZpcyBmaWwuIE7lciBkZW4gc2F0c3Zpc2UgZmlsZW4gYXZzbHV0dGVyLCByZXR1cm5lcmVzXG5cCmtvbnRyb2xsZW4gdGlsIGZpbGVuIHNvbSBrYWx0ZSBkZW4uIENBTEwta29tbWFuZG9lbiBrYW4gZ2kgcGFyYW1ldGVyZVxuXAp0aWwgZGVuIGthbHRlIHByb3NlZHlyZW4uXG5cClxuXApFbmRyaW5nZXIgdGlsIHN0YW5kYXJka2F0YWxvZ2VuLCBtaWxq+HZhcmlhYmxlciBldGMuIGdqb3J0IGF2IGRlbiBrYWx0ZVxuXApwcm9zZWR5cmVuIGFydmVzIGF2IHDla2FsbGVyZW4uXG4iCgogIFdDTURfQ0QsICAgICAiSGplbHAgdGlsIENEXG4iCiAgV0NNRF9DSERJUiwgICJIamVscCB0aWwgQ0hESVJcbiIKCiAgV0NNRF9DTFMsICAgICJDTFMgdPhtbWVyIGtvbnNvbGxza2plcm1lblxuIgoKICBXQ01EX0NPUFksICAgIkhqZWxwIHRpbCBDT1BZXG4iCiAgV0NNRF9DVFRZLCAgICJIamVscCB0aWwgQ1RUWVxuIgogIFdDTURfREFURSwgICAiSGplbHAgdGlsIERBVEVcbiIKICBXQ01EX0RFTCwgICAgIkhqZWxwIHRpbCBERUxcbiIKICBXQ01EX0RJUiwgICAgIkhqZWxwIHRpbCBESVJcbiIKCiAgV0NNRF9FQ0hPLAoiq0VDSE8gPHN0cmVuZz4gdmlzZXIgPHN0cmVuZz67IHDlIGRlbiBnamVsZGVuZGUgdGVybWluYWxlbmhldGVuLlxuXApcblwKq0VDSE8gT067IGZvcuVyc2FrZXIgYXQgYWxsZSBrb21tYW5kb2VyIGkgZW4gc2F0c3ZpcyBmaWwgdmlzZXMgcOVcblwKdGVybWluYWxlbmhldGVuIGb4ciBkZSBravhyZXMuXG5cClxuXAqrRUNITyBPRka7IHJldmVyc2VyZXIgZWZmZWt0ZW4gYXYgZW4gdGlkbGlnZXJlIKtFQ0hPIE9OuyAoRUNITyBlciBPRkYgc29tXG5cCnN0YW5kYXJkKS4gq0VDSE8gT0ZGuy1rb21tYW5kb2VuIGthbiBoaW5kcmVzIGZyYSDlIHZpc2VzIHZlZCDlIHBsYXNzZXJlXG5cCmV0IEAtdGVnbiBmb3JhbiBkZW4uXG4iCgogIFdDTURfRVJBU0UsICAiSGplbHAgdGlsIEVSQVNFXG4iCgogIFdDTURfRk9SLAoiRk9SLWtvbW1hbmRvZW4gYnJ1a2VzIHRpbCDlIGtq+HJlIGVuIGtvbW1hbmRvIGZvciBodmVyIGZpbCBpIGV0IHNldHQgZmlsZXIuXG5cClxuXApTeW50YWtzOiBGT1IgJXZhcmlhYmVsIElOIChzZXR0KSBETyBrb21tYW5kb1xuXApcblwKS3JhdmV0IG9tIHRvICUtdGVnbiBu5XIgRk9SIGJydWtlcyBpIGVuIHNhdHN2aXMgZmlsIGZpbm5lcyBpa2tlIGkgV2luZXMgQ01ELlxuIgoKICBXQ01EX0dPVE8sCiJHT1RPLWtvbW1hbmRvZW4gZmx5dHRlciBravhyaW5nZW4gdGlsIGV0IGFubmV0IHN0ZWQgaSBlbiBzYXRzdmlzIGZpbC5cblwKXG5cCk1lcmtlbGFwcGVuIHNvbSBlciBt5WxldCB0aWwgR09UTyBrYW4gduZyZSBvcHB0aWwgMjU1IHRlZ24gbGFuZ3QsXG5cCm1lbiBrYW4gaWtrZSBpbm5laG9sZGUgbWVsbG9tcm9tIChkZXR0ZSBlciBmb3Jza2plbGxpZyBmcmEgYW5kcmVcblwKb3BlcmF0aXZzeXN0ZW1lcikuIEh2aXMgZGV0IGZpbm5lcyB0byBlbGxlciBmbGVyZSBpZGVudGlza2UgbWVya2VsYXBwZXJcblwKaSBlbiBzYXRzdmlzIGZpbCwga2r4cmVzIGFsbHRpZCBkZW4gZvhyc3RlLiDFIHBla2UgR09UTyB0aWwgZW4gaWtrZS1cblwKZWtzaXN0ZXJlbmRlIG1lcmtlbGFwcCBhdmJyeXRlciBravhyaW5nZW4gYXYgZGVuIHNhdHN2aXNlIGZpbGVuLlxuXApcblwKR09UTyBoYXIgaW5nZW4gZWZmZWt0IG7lciBkZW4gYnJ1a2VzIGludGVyYWt0aXZ0LlxuIgoKICBXQ01EX0hFTFAsICAgIkhqZWxwIHRpbCBIRUxQXG4iCgogIFdDTURfSUYsCiJJRiBicnVrZXMgdGlsIOUga2r4cmUgZW4ga29tbWFuZG8gcOUgYmV0aW5nZWxzZXIuXG5cClxuXApCcnVrOglJRiBbTk9UXSBFWElTVCBmaWxuYXZuIGtvbW1hbmRvXG5cCglJRiBbTk9UXSBzdHJlbmcxPT1zdHJlbmcyIGtvbW1hbmRvXG5cCglJRiBbTk9UXSBFUlJPUkxFVkVMIG51bW1lciBrb21tYW5kb1xuXApcblwKSSBrb21tYW5kb2Zvcm0gbnVtbWVyIHRvIG3lIHN0cmVuZzEgb2cgc3RyZW5nMiBvbXNsdXR0ZXMgYXYgZG9ibGVcblwgYW5m+HJzZWxzdGVnbi4gRGV0IHNraWxsZXIgaWtrZSBtZWxsb20gc3RvcmUgb2cgc23lIGJva3N0YXZlci5cbiIKCiAgV0NNRF9MQUJFTCwgICJMQUJFTCBicnVrZXMgZm9yIOUgbmF2Z2kgZXQgc3Rhc2pvbnN2b2x1bS5cblwKXG5cClN5bnRha3M6IExBQkVMIFtzdGFzam9uOl1cblwKS29tbWFuZG9lbiB2aWwgYmUgb20gZGV0IG55ZSB2b2x1bW5hdm5ldCBmb3Igc3Rhc2pvbmVuLlxuXApEdSBrYW4gdmlzZSBlbiBzdGFzam9ucyB2b2x1bW5hdm4gbWVkIFZPTC1rb21tYW5kb2VuLlxuIgoKICBXQ01EX01ELCAgICAgIkhqZWxwIHRpbCBNRFxuIgogIFdDTURfTUtESVIsICAiSGplbHAgdGlsIE1LRElSXG4iCiAgV0NNRF9NT1ZFLAoiTU9WRSBmbHl0dGVyIGVuIGZpbCBlbGxlciBrYXRhbG9nIHRpbCBldCBueXR0IHN0ZWQgaW5uZW5mb3JcblwKZmlsc3lzdGVtZXQuXG5cClxuXApIdmlzIGVsZW1lbnRldCBzb20gZmx5dHRlcyBlciBlbiBrYXRhbG9nLCBmbHl0dGVzIG9nc+UgZmlsZW5lIG9nXG5cCnVuZGVya2F0YWxvZ2VuZSBpIGRlbi5cblwKXG5cCk1PVkUgZmVpbGVyIGh2aXMgZGVuIGdhbWxlIG9nIG55ZSBwbGFzc2VyaW5nZW4gaGFyIGZvcnNramVsbGlnZVxuXApzdGFzam9uc2Jva3N0YXZlci5cbiIKCiAgV0NNRF9QQVRILAoiUEFUSCB2aXNlciBlbGxlciBlbmRyZXIgQ01EcyBz+Gtlc3RpLlxuXApcblwKxSBza3JpdmUgaW5uIFBBVEggdmlzZXIgZGVuIGdqZWxkZW5kZSBQQVRILWlubnN0aWxsaW5nZW4gKGRldHRlIGVyXG5cCmkgYmVneW5uZWxzZW4gdmVyZGllbiBvcHBnaXR0IGkgZmlsZW4gq3dpbmUuY29uZrspLiBFdHRlcmb4bGcgUEFUSC1cblwKa29tbWFuZG9lbiBtZWQgZXQgbnl0dCBuYXZuIGZvciDlIGVuZHJlIGlubnN0aWxsaW5nZW4uXG5cClxuXApEZXQgZXIgb2dz5SBtdWxpZyDlIGVuZHJlIFBBVEggdmVkIOUgYnJ1a2UgbWlsavh2YXJpYWJsZW4gUEFUSCwgZm9yXG5cCmVrc2VtcGVsOlxuXAoJCVBBVEggJVBBVEglO2M6XFx0ZW1wXG4iCgogIFdDTURfUEFVU0UsCiJQQVVTRSB2aXNlciBtZWxkaW5nZW4gJ1RyeWtrIEVudGVyIGZvciDlIGZvcnRzZXR0ZScsIG9nIHZlbnRlciBw5SBhdFxuXCBicnVrZXJlbiB0cnlra2VyIEVudGVyLiBEZXR0ZSBlciBob3ZlZHNha2VsaWcgbnl0dGlnIGkgc2F0c3Zpc2UgZmlsZXIsXG5cCmZvciDlIGxhIGJydWtlcmVuIGxlc2UgdXRkYXRhIGZyYSBlbiB0aWRsaWdlcmUga29tbWFuZG8gZvhyIGRlbiBydWxsZXJcblwKdmVrayBmcmEgc2tqZXJtZW4uLlxuIgoKICBXQ01EX1BST01QVCwKIlBST01QVCBvcHBnaXIga29tbWFuZG9saW5qZS1rbGFydGVnbmV0LlxuXApcblwKU3RyZW5nZW4gc29tIGV0dGVyZvhsZ2VyIFBST01QVC1rb21tYW5kb2VuIChvZyBtZWxsb21yb21tZXQgcmV0dCBldHRlcilcblwKdmlzZXMgdmVkIGJlZ3lubmVsc2VuIGF2IGxpbmplbiBu5XIgdmNtZCB2ZW50ZXIgcOUgaW5uZGF0YS5cblwKXG5cCkb4bGdlbmRlIHRlZ25zdHJlbmdlciBoYXIgZGVuIHNwZXNpZWxsZSBiZXR5ZG5pbmdlbiBzb20gdmlzZXM6XG5cClxuXAokJCAgIERvbGxhci10ZWduICAgICAgICRfICAgTGluamVtYXRpbmcgICAgICAgICAkYiAgIFL4cnRlZ24gc2lnbiAofClcblwKJGQgICBHamVsZGVuZGUgZGF0byAgICAkZSAgIEVzY2FwZSAgICAgICAgICAgICAgJGcgICBTdPhycmUgZW5uLXRlZ25cblwKJGwgICBNaW5kcmUgZW5uLXRlZ24gICAkbiAgIEdqZWxkZW5kZSBzdGFzam9uICAgJHAgICBHamVsZGVuZGUgc3RpXG5cCiRxICAgTGlraGV0c3RlZ24gICAgICAgJHQgICBHamVsZGVuZGUgdGlkICAgICAgICR2ICAgQ01ELXZlcnNqb25cblwKXG5cCk1lcmsgYXQg5SBicnVrZSBQUk9NUFQta29tbWFuZG9lbiB1dGVuIGVuIGtsYXJ0ZWduLXN0cmVuZyB0aWxiYWtlc3RpbGxlclxuXAprbGFydGVnbmV0IHRpbCBzdGFuZGFyZHZlcmRpZW4sIHNvbSBlciBhcmJlaWRza2F0YWxvZ2VuIChpbmtsdWRlcnRcblwKc3Rhc2pvbnNib2tzdGF2ZW4pIGV0dGVyZnVsZ3QgYXYgZXQgc3T4cnJlIGVubi10ZWduICg+KS5cblwKKFNvbSBlbiBrb21tYW5kbyBQUk9NUFQgJHAkZy4pXG5cClxuXApLbGFydGVnbmV0IGthbiBvZ3PlIGVuZHJlcyB2ZWQgZW5kcmUgbWlsavh2YXJpYWJsZW4gUFJPTVBULCBz5VxuXAprb21tYW5kb2VuIKtTRVQgUFJPTVBUPXRla3N0uyBoYXIgc2FtbWUgZWZmZWt0IHNvbSCrUFJPTVBUIHRla3N0uy5cbiIKCiAgV0NNRF9SRU0sCiJFbiBrb21tYW5kb2xpbmplIHNvbSBiZWd5bm5lciBtZWQgUkVNIChldHRlcmZ1bGd0IGF2IGV0IG1lbGxvbXJvbSlcblwKdXRm+HJlciBpbmdlbiBoYW5kbGluZywgb2cga2FuIGRlcmZvciBicnVrZXMgc29tIGtvbW1hbnRhciBpIGVuIHNhdHN2aXNcblwKZmlsLlxuIgoKICBXQ01EX1JFTiwgICAgIkhqZWxwIHRpbCBSRU5cbiIKICBXQ01EX1JFTkFNRSwgIkhqZWxwIHRpbCBSRU5BTUVcbiIKICBXQ01EX1JELCAgICAgIkhqZWxwIHRpbCBSRFxuIgogIFdDTURfUk1ESVIsICAiSGplbHAgdGlsIFJNRElSXG4iCgogIFdDTURfU0VULAoiU0VUIHZpc2VyIGVsbGVyIGVuZHJlciBtaWxq+HZhcmlhYmxlbmUgaSBDTUQuXG5cClxuXApTRVQgdXRlbiBwYXJhbWV0ZXJlIHZpc2VyIGFsbGUgZ2plbGRlbmRlIG1pbGr4dmFyaWFibGVyLlxuXApcblwKU3ludGFrc2VuIGZvciDlIG9wcHJldHRlIGVsbGVyIGVuZHJlIGVuIG1pbGr4dmFyaWFiZWwgZXI6XG5cClxuXAogICAgICBTRVQgPHZhcmlhYmVsPj08dmVyZGk+XG5cClxuXApodm9yIDx2YXJpYWJlbD4gb2cgPHZlcmRpPiBlciB0ZWduc3RyZW5nZXIuIERldCBt5SBpa2tlIHbmcmUgbWVsbG9tcm9tXG5cCmb4ciBsaWtoZXRzdGVnbmV0LCBvZyB2YXJpYWJlbG5hdm5ldCBrYW4gaGVsbGVyIGlra2UgaGEgaW5uZWJ5Z2RlXG5cCm1lbGxvbXJvbS5cblwKXG5cCkkgV2luZSBlciBtaWxq+HZhcmlhYmxlbmUgaSBkZXQgdW5kZXJsaWdnZW5kZSBvcGVyYXRpdnN5c3RlbWV0XG5cIGlua2x1ZGVydCBpIFdpbjMyLW1pbGr4ZXQsIG9nIGRldCBlciBkZXJmb3IgdmFubGlndmlzIG1hbmdlIGZsZXJlXG5cCnZlcmRpZXIgZW5uIGkgZXQgdmFubGlnIFdpbjMyLW1pbGr4LiBW5nIgb3BwbWVya3NvbSBw5SBhdCBkZXQgaWtrZSBn5XJcblwKYW4g5SBlbmRyZSBtaWr4ZXQgaSBkZXQgdW5kZXJsaWdnZW5kZSBvcGVyYXRpdnN5c3RlbWV0IGZyYSBDTUQuXG4iCgogIFdDTURfU0hJRlQsCiJTSElGVCBicnVrZXIgaSBlbiBzYXRzdmlzIGZpbCBmb3Ig5SBmamVybmUgZGVuIGb4cnN0ZSBwYXJhbWV0ZXJlbiBpIGVuXG5cCmxpc3RlLCBz5W5uIGF0IHBhcmFtZXRlciAyIGJsaXIgcGFyYW1ldGVyIDEgb2cgc+UgdmlkZXJlLiBEZXQgaGFyIGluZ2VuXG5cCmVmZmVrdCBodmlzIGRldCBicnVrZXMgZnJhIGtvbW1hbmRvbGluamVuLlxuIgoKICBXQ01EX1RJTUUsICAgIkhqZWxwIHRpbCBUSU1FXG4iCgogIFdDTURfVElUTEUsICAiQW5naXIgdGl0dGVsZW4gZm9yIENNRC12aW5kdWV0LCBzeW50YWtzZW4gZXJcblwKICBUSVRMRSBbc3RyZW5nXVxuIgoKICBXQ01EX1RZUEUsCiKrVFlQRSA8ZmlsbmF2bj67IGtvcGllcmVyIDxmaWxuYXZuPiB0aWwga29uc29sbGVuaGV0ZW4gKGVsbGVyIGV0IGFubmV0XG5cCnN0ZWQgaHZpcyBkZXQgb21kaXJpZ2VyZXMpLiBEZXQga29udHJvbGxlcmVzIGlra2Ugb20gZmlsZW4gZXIgbGVzZWxpZyB0ZWtzdC5cbiIKCiAgV0NNRF9WRVJJRlksCiJWRVJJRlkgYnJ1a2VzIHRpbCDlIGFrdGl2ZXJlLCBkZWFrdGl2ZXJlIGVsbGVyIHRlc3RlIKt2ZXJpZnm7LWZsYWdnZXQuXG5cIEd5bGRpZ2UgbeV0ZXIgZXI6XG5cClxuXApWRVJJRlkgT04JQWt0aXZlcmVyIGZsYWdnZXRcblwKVkVSSUZZIE9GRglEZWFrdGl2ZXJlciBmbGFnZ2V0XG5cClZFUklGWQkJVmlzZXIgT04gaHZpcyBw5SBlbGxlcnIgT0ZGIGh2aXMgYXYuXG5cClxuXAqrVmVyaWZ5uy1mbGFnZ2V0IGhhciBpbmdlbiBmdW5rc2pvbiBpIFdpbmUuXG4iCgogIFdDTURfVkVSLAoiVkVSIHZpc2VyIHZlcnNqb25udW1tZXJldCB0aWwgQ01EXG4iCgogIFdDTURfVk9MLCAgICAiSGplbHAgdGlsIFZPTFxuIgoKICBXQ01EX1BVU0hELCAgIlBVU0hEIDxrYXRhbG9nbmF2bj4gbGFncmVyIGFyYmVpZHNrYXRhbG9nZW4gaSBlbiBzdGFiZWwsIG9nIGVuZHJlciBkZXJldHRlclxuXAphcmJlaWRza2F0YWxvZyB0aWwgZGVuIHNvbSBlciBvcHBnaXR0LlxuIgoKICBXQ01EX1BPUEQsICAgIlBPUEQgZW5kcmVyIGFyYmVpZHNrYXRhbG9nIHRpbCBkZW4gc29tIHNpc3QgYmxlIGJydWt0IG1lZCBQVVNIRC5cbiIKCiAgV0NNRF9NT1JFLCAgICJNT1JFIGxhciBkZWcgYmxhIGdqZW5ub20gaW5uaG9sZGV0IGkgZmlsZXIgZWxsZXIgaW5uZGF0YSBpIHL4ci5cbiIKCiAgV0NNRF9FWElULAoiRVhJVCBhdnNsdXR0ZXIgZ2plbGRlbmRlIGtvbW1hbmRv+Gt0IG9nIHJldHVybmVyZXIgdGlsIG9wZXJhdGl2c3lzdGVtZXRcblwKZWxsZXIgc2thbGxldCBDTUQgYmxlIHN0YXJ0ZXQgZnJhLlxuIgoKICBXQ01EX0FMTEhFTFAsICJJbm5lYnlnZGUga29tbWFuZG9lciBpIENNRDpcblwKQVRUUklCXHRcdFZpc2VyIGVsbGVyIGVuZHJlciBET1MtZmlsYXR0cmlidXR0ZXJcblwKQ0FMTFx0XHRLYWxsIGVuIHNhdHN2aXMgZmlsIGlubmUgaSBlbiBhbm5lblxuXApDRCAoQ0hESVIpXHRCeXR0ZXIgYXJiZWlkc2thdGFsb2dcblwKQ0xTXHRcdFT4bW1lciBrb25zb2xsc2tqZXJtZW5cblwKQ09QWVx0XHRLb3BpZXJlciBmaWxlclxuXApDVFRZXHRcdEVuZHJlciBpbm4vdXQtZW5oZXRcblwKREFURVx0XHRWaXNlciBlbGxlciBlbmRyZXIgc3lzdGVtZGF0b2VuXG5cCkRFTCAoRVJBU0UpXHRTbGV0dGVyIGVuIGVsbGVyIGZsZXJlIGZpbGVyXG5cCkRJUlx0XHRWaXNlciBpbm5ob2xkZXQgaSBlbiBrYXRhbGdvXG5cCkVDSE9cdFx0S29waWVyZXIgdGVrc3QgZGlyZWt0ZSB0aWwga29uc29sbC11dGRhdGFlblxuXApIRUxQXHRcdFZpc2VyIGVuIGtvcnQgaGplbHBlYmVza3JpdmVsc2Ugb20gZXQgZW1uZVxuXApNRCAoTUtESVIpXHRMYWdlciBlbiB1bmRlcmthdGFsb2dcblwKTU9SRVx0XHREaXNwbGF5IG91dHB1dCBpbiBwYWdlc1xuXApNT1ZFXHRcdEZseXR0ZXIgZW4gZWxsZXIgZmxlcmUgZmlsZXIsIGVsbGVyIGVuIGthdGFsb2d0cmVcblwKUEFUSFx0XHRFbmRyZXIgZWxsZXIgdmlzZXIgc/hrZXN0aWVuXG5cClBPUERcdFx0RW5kcmVyIGFyYmVpZHNrYXRhbG9nIHRpbCBkZW4gc2lzdCBsYWdyZXQgbWVkIFBVU0hEXG5cClBST01QVFx0XHRFbmRyZXIga29tbWFuZG8ta2xhcnRlZ25ldFxuXApQVVNIRFx0XHRFbmRyZXIgYXJiZWlkc2thdGFsb2cgb2cgbGFncmVyIGRlbiBnamVsZGVuZGVcblwKUkVOIChSRU5BTUUpXHRHaXIgbnl0dCBuYXZuIHRpbCBlbiBmaWxcblwKUkQgKFJNRElSKVx0U2xldHRlciBlbiB1bmRlcmthdGFsb2dcblwKU0VUXHRcdEFuZ2lyIGVsbGVyIHZpc2VyIG1pbGr4dmFyaWFibGVyXG5cClRJTUVcdFx0QW5naXIgZWxsZXIgdmlzZXIgZ2plbGRlbmRlIHN5c3RlbXRpZFxuXApUSVRMRVx0XHRBbmdpciB2aW5kdXN0aXR0ZWxlbiBmb3IgQ01ELfhrdGVuXG5cClRZUEVcdFx0VmlzZXIgaW5uaG9sZGV0IGkgZW4gZmlsXG5cClZFUlx0XHRWaXNlciBDTURzIHZlcnNqb25udW1tZXJcblwKVk9MXHRcdFZpc2VyIHZvbHVtbmF2bmV0IHRpbCBlbiBzdGFzam9uXG5cCkVYSVRcdFx0QXZzbHV0dGVyIENNRFxuXG5cClNrcml2IKtIRUxQIDxrb21tYW5kbz67IGZvciBtZXIgaW5mb3JtYXNqb24gb20ga29tbWFuZG9lbmUgb3ZlbmZvclxuIgoKICBXQ01EX0NPTkZJUk0sICJFciBkdSBzaWtrZXIiCiAgV0NNRF9ZRVMsICJKIgogIFdDTURfTk8sICJOIgogIFdDTURfTk9BU1NPQywgIk1hbmdsZW5kZSBmaWx0aWxrbnl0bmluZyBmb3IgZXR0ZXJuYXZuZXQgJXNcbiIKICBXQ01EX05PRlRZUEUsICJJbmdlbiDlcG5la29tbWFuZG8gZXIgdGlsa255dHRldCBmaWx0eXBlbmUgJyVzJ1xuIgogIFdDTURfT1ZFUldSSVRFLCAiT3ZlcndyaXRlICVzIgogIFdDTURfTU9SRVNUUiwgIk1lci4uLiIKICBXQ01EX1RSVU5DQVRFRExJTkUsICJMaW5lIGluIEJhdGNoIHByb2Nlc3NpbmcgcG9zc2libHkgdHJ1bmNhdGVkLiBVc2luZzpcbiIKICBXQ01EX05ZSSwgIk5vdCBZZXQgSW1wbGVtZW50ZWRcblxuIgogIFdDTURfTk9BUkcsICJBcmd1bWVudCBtaXNzaW5nXG4iCiAgV0NNRF9TWU5UQVhFUlIsICJTeW50YXggZXJyb3JcbiIKICBXQ01EX0ZJTEVOT1RGT1VORCwgIiVzIDogRmlsZSBOb3QgRm91bmRcbiIKICBXQ01EX05PQ01ESEVMUCwgIk5vIGhlbHAgYXZhaWxhYmxlIGZvciAlc1xuIgogIFdDTURfTk9UQVJHRVQsICJUYXJnZXQgdG8gR09UTyBub3QgZm91bmRcbiIKICBXQ01EX0NVUlJFTlREQVRFLCAiQ3VycmVudCBEYXRlIGlzICVzXG4iCiAgV0NNRF9DVVJSRU5UVElNRSwgIkN1cnJlbnQgVGltZSBpcyAlc1xuIgogIFdDTURfTkVXREFURSwgIkVudGVyIG5ldyBkYXRlOiAiCiAgV0NNRF9ORVdUSU1FLCAiRW50ZXIgbmV3IHRpbWU6ICIKICBXQ01EX01JU1NJTkdFTlYsICJFbnZpcm9ubWVudCB2YXJpYWJsZSAlcyBub3QgZGVmaW5lZFxuIgogIFdDTURfUkVBREZBSUwsICJGYWlsZWQgdG8gb3BlbiAnJXMnXG4iCiAgV0NNRF9DQUxMSU5TQ1JJUFQsICJDYW5ub3QgY2FsbCBiYXRjaCBsYWJlbCBvdXRzaWRlIG9mIGEgYmF0Y2ggc2NyaXB0XG4iCiAgV0NNRF9BTEwsICJBIgogIFdDTURfREVMUFJPTVBULCAiJXMsIERlbGV0ZSIKICBXQ01EX0VDSE9QUk9NUFQsICJFY2hvIGlzICVzXG4iCiAgV0NNRF9WRVJJRllQUk9NUFQsICJWZXJpZnkgaXMgJXNcbiIKICBXQ01EX1ZFUklGWUVSUiwgIlZlcmlmeSBtdXN0IGJlIE9OIG9yIE9GRlxuIjsKICBXQ01EX0FSR0VSUiwgIlBhcmFtZXRlciBlcnJvclxuIgogIFdDTURfVk9MVU1FREVUQUlMLCAiVm9sdW1lIGluIGRyaXZlICVjIGlzICVzXG5Wb2x1bWUgU2VyaWFsIE51bWJlciBpcyAlMDR4LSUwNHhcblxuIgogIFdDTURfVk9MVU1FUFJPTVBULCAiVm9sdW1lIGxhYmVsICgxMSBjaGFyYWN0ZXJzLCBFTlRFUiBmb3Igbm9uZSk/IgogIFdDTURfTk9QQVRILCAiUEFUSCBub3QgZm91bmRcbiIKICBXQ01EX0FOWUtFWSwiUHJlc3MgUmV0dXJuIGtleSB0byBjb250aW51ZTogIgogIFdDTURfQ09OU1RJVExFLCJXaW5lIENvbW1hbmQgUHJvbXB0IgogIFdDTURfVkVSU0lPTiwiQ01EIFZlcnNpb24gJXNcblxuIgogIFdDTURfTU9SRVBST01QVCwgIk1vcmU/ICIKfQo=