LyoKICogQ29weXJpZ2h0IDE5OTggSnVlcmdlbiBTY2htaWVkCiAqIENvcHlyaWdodCAyMDAzIE1hcmNlbG8gRHVhcnRlCiAqIENvcHlyaWdodCAyMDA2LTIwMDcgQW3pcmljbyBKb3PpIE1lbG8KICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0VfQlJBWklMSUFOCgpNRU5VXzAwMSBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCglNRU5VSVRFTSAizWNvbmVzICZncmFuZGVzIiwJRkNJRE1fU0hWSUVXX0JJR0lDT04KCU1FTlVJVEVNICLNY29uZXMgJnBlcXVlbm9zIiwJRkNJRE1fU0hWSUVXX1NNQUxMSUNPTgoJTUVOVUlURU0gIiZMaXN0YSIsCQlGQ0lETV9TSFZJRVdfTElTVFZJRVcKCU1FTlVJVEVNICImRGV0YWxoZXMiLAkJRkNJRE1fU0hWSUVXX1JFUE9SVFZJRVcKRU5ECgoKLyoKIHNoZWxsdmlldyBiYWNrZ3JvdW5kIG1lbnUKKi8KTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0VfQlJBWklMSUFOCgpNRU5VXzAwMiBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCglQT1BVUCAiIgoJQkVHSU4KCSAgUE9QVVAgIiZFeGliaXIiCgkgIEJFR0lOCgkgICAgTUVOVUlURU0gIs1jb25lcyAmZ3JhbmRlcyIsCUZDSURNX1NIVklFV19CSUdJQ09OCgkgICAgTUVOVUlURU0gIs1jb25lcyAmcGVxdWVub3MiLAlGQ0lETV9TSFZJRVdfU01BTExJQ09OCgkgICAgTUVOVUlURU0gIiZMaXN0YSIsCQlGQ0lETV9TSFZJRVdfTElTVFZJRVcKCSAgICBNRU5VSVRFTSAiJkRldGFsaGVzIiwJRkNJRE1fU0hWSUVXX1JFUE9SVFZJRVcKCSAgRU5ECgkgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICBQT1BVUCAiTyZyZ2FuaXphciDtY29uZXMiCgkgIEJFR0lOCgkgICAgTUVOVUlURU0gIlBvciAmbm9tZSIsCTB4MzAJLyogY29sdW1uIDAgKi8KCSAgICBNRU5VSVRFTSAiUG9yICZ0aXBvIiwJMHgzMgkvKiBjb2x1bW4gMiAqLwoJICAgIE1FTlVJVEVNICJQb3IgdGEmbWFuaG8iLAkweDMxCS8qIC4uLiAqLwoJICAgIE1FTlVJVEVNICJQb3IgJmRhdGEiLAkweDMzCgkgICAgTUVOVUlURU0gU0VQQVJBVE9SCgkgICAgTUVOVUlURU0gIkF1dG8gb3JnYW5pJnphciIsCUZDSURNX1NIVklFV19BVVRPQVJSQU5HRQoJICBFTkQKCSAgTUVOVUlURU0gIkFsaW4maGFyIO1jb25lcyIsCUZDSURNX1NIVklFV19TTkFQVE9HUklECgkgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICBNRU5VSVRFTSAiJkF0dWFsaXphciIsCQlGQ0lETV9TSFZJRVdfUkVGUkVTSAoJICBNRU5VSVRFTSBTRVBBUkFUT1IKCSAgTUVOVUlURU0gIkNvJmxhciIsCQlGQ0lETV9TSFZJRVdfSU5TRVJUCgkgIE1FTlVJVEVNICJDb2xhciBhJnRhbGhvIiwJRkNJRE1fU0hWSUVXX0lOU0VSVExJTksKCSAgTUVOVUlURU0gU0VQQVJBVE9SCgkgIFBPUFVQICJOb3ZvIgoJICBCRUdJTgoJICAgIE1FTlVJVEVNICImUGFzdGEiLAlGQ0lETV9TSFZJRVdfTkVXRk9MREVSCgkgICAgTUVOVUlURU0gIiZBdGFsaG8iLAlGQ0lETV9TSFZJRVdfTkVXTElOSwoJICAgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICBFTkQKCSAgTUVOVUlURU0gU0VQQVJBVE9SCgkgIE1FTlVJVEVNICJQcm9wcmllZGFkZXMiLAlGQ0lETV9TSFZJRVdfUFJPUEVSVElFUwoJRU5ECkVORAoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0UKCk1FTlVfMDAyIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KCVBPUFVQICIiCglCRUdJTgoJICBQT1BVUCAiJk1vc3RyYXIiCgkgIEJFR0lOCgkgICAgTUVOVUlURU0gIs1jb25lcyAmZ3JhbmRlcyIsCUZDSURNX1NIVklFV19CSUdJQ09OCgkgICAgTUVOVUlURU0gIs1jb25lcyAmcGVxdWVub3MiLAlGQ0lETV9TSFZJRVdfU01BTExJQ09OCgkgICAgTUVOVUlURU0gIiZMaXN0YSIsCQlGQ0lETV9TSFZJRVdfTElTVFZJRVcKCSAgICBNRU5VSVRFTSAiJkRldGFsaGVzIiwJRkNJRE1fU0hWSUVXX1JFUE9SVFZJRVcKCSAgRU5ECgkgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICBQT1BVUCAiTyZyZ2FuaXphciDtY29uZXMiCgkgIEJFR0lOCgkgICAgTUVOVUlURU0gIlBvciAmbm9tZSIsCTB4MzAJLyogY29sdW1uIDAgKi8KCSAgICBNRU5VSVRFTSAiUG9yICZ0aXBvIiwJMHgzMgkvKiBjb2x1bW4gMiAqLwoJICAgIE1FTlVJVEVNICJQb3IgdGEmbWFuaG8iLAkweDMxCS8qIC4uLiAqLwoJICAgIE1FTlVJVEVNICJQb3IgJmRhdGEiLAkweDMzCgkgICAgTUVOVUlURU0gU0VQQVJBVE9SCgkgICAgTUVOVUlURU0gIkF1dG8gb3JnYW5pJnphciIsCUZDSURNX1NIVklFV19BVVRPQVJSQU5HRQoJICBFTkQKCSAgTUVOVUlURU0gIkFsaW4maGFyIO1jb25lcyIsCUZDSURNX1NIVklFV19TTkFQVE9HUklECgkgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICBNRU5VSVRFTSAiJkFjdHVhbGl6YXIiLAkJRkNJRE1fU0hWSUVXX1JFRlJFU0gKCSAgTUVOVUlURU0gU0VQQVJBVE9SCgkgIE1FTlVJVEVNICJDbyZsYXIiLAkJRkNJRE1fU0hWSUVXX0lOU0VSVAoJICBNRU5VSVRFTSAiQ29sYXIgYSZ0YWxobyIsCUZDSURNX1NIVklFV19JTlNFUlRMSU5LCgkgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICBQT1BVUCAiTm92byIKCSAgQkVHSU4KCSAgICBNRU5VSVRFTSAiJlBhc3RhIiwJRkNJRE1fU0hWSUVXX05FV0ZPTERFUgoJICAgIE1FTlVJVEVNICImQXRhbGhvIiwJRkNJRE1fU0hWSUVXX05FV0xJTksKCSAgICBNRU5VSVRFTSBTRVBBUkFUT1IKCSAgRU5ECgkgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICBNRU5VSVRFTSAiUHJvcHJpZWRhZGVzIiwJRkNJRE1fU0hWSUVXX1BST1BFUlRJRVMKCUVORApFTkQKCgovKgogc2hlbGx2aWV3IGl0ZW0gbWVudQoqLwpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRV9CUkFaSUxJQU4KCk1FTlVfU0hWX0ZJTEUgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgoJUE9QVVAgIiIKCUJFR0lOCgkgIE1FTlVJVEVNICImRXhwbG9yYXIiLAkJRkNJRE1fU0hWSUVXX0VYUExPUkUKCSAgTUVOVUlURU0gIkEmYnJpciIsCQlGQ0lETV9TSFZJRVdfT1BFTgoJICBNRU5VSVRFTSBTRVBBUkFUT1IKCSAgTUVOVUlURU0gIkMmb3J0YXIiLAkJRkNJRE1fU0hWSUVXX0NVVAoJICBNRU5VSVRFTSAiJkNvcGlhciIsCQlGQ0lETV9TSFZJRVdfQ09QWQoJICBNRU5VSVRFTSBTRVBBUkFUT1IKCSAgTUVOVUlURU0gIkNyaWFyIGEmdGFsaG8iLAlGQ0lETV9TSFZJRVdfQ1JFQVRFTElOSwoJICBNRU5VSVRFTSAiRSZ4Y2x1aXIiLAkJRkNJRE1fU0hWSUVXX0RFTEVURQoJICBNRU5VSVRFTSAiJlJlbm9tZWFyIiwJCUZDSURNX1NIVklFV19SRU5BTUUKCSAgTUVOVUlURU0gU0VQQVJBVE9SCgkgIE1FTlVJVEVNICImUHJvcHJpZWRhZGVzIiwJRkNJRE1fU0hWSUVXX1BST1BFUlRJRVMKCUVORApFTkQKCgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRV9CUkFaSUxJQU4KClNIQlJTRk9SRk9MREVSX01TR0JPWCBESUFMT0cgTE9BRE9OQ0FMTCBNT1ZFQUJMRSBESVNDQVJEQUJMRSAxNSwgNDAsIDE4OCwgMTkyClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVSB8IERTX01PREFMRlJBTUUgfCBEU19TRVRGT05UIHwgRFNfM0RMT09LCkNBUFRJT04gIlByb2N1cmFyIHBhc3RhIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCnsKIERFRlBVU0hCVVRUT04gIk9LIiwgMSwgODAsIDE3NiwgNTAsIDEyLCBCU19ERUZQVVNIQlVUVE9OIHwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiBQVVNIQlVUVE9OICJDYW5jZWxhciIsIDIsIDEzNCwgMTc2LCA1MCwgMTIsIFdTX0dST1VQIHwgV1NfVEFCU1RPUAogTFRFWFQgIiIsIElERF9USVRMRSwgNCwgNCwgMTgwLCAxMgogTFRFWFQgIiIsIElERF9TVEFUVVMsIDQsIDI1LCAxODAsIDEyCiBDT05UUk9MICIiLCBJRERfVFJFRVZJRVcsICJTeXNUcmVlVmlldzMyIiwKIAlUVlNfSEFTQlVUVE9OUyB8IFRWU19IQVNMSU5FUyB8IFRWU19MSU5FU0FUUk9PVCB8CglXU19CT1JERVIgfCBXU19UQUJTVE9QLAoJNCwgNDAsIDE4MCwgMTIwCn0KCgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRV9CUkFaSUxJQU4KClNIRUxMX0FCT1VUX01TR0JPWCBESUFMT0cgTE9BRE9OQ0FMTCBNT1ZFQUJMRSBESVNDQVJEQUJMRSAxNSwgNDAsIDIxMCwgMTUyClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX1ZJU0lCTEUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJTb2JyZSAlcyIKRk9OVCAxMCwgIk1TIFNoZWxsIERsZyIKewogREVGUFVTSEJVVFRPTiAiT0siLCBJRE9LLCAxNTMsIDEzMywgNTAsIDEyLCBXU19UQUJTVE9QCiBMSVNUQk9YIDk5LCA4LCA2NSwgMTM3LCA4MiwgTEJTX05PVElGWSB8IFdTX1ZTQ1JPTEwgfCBXU19CT1JERVIKIElDT04gIiIsIDEwODgsIDEwLCAxMCwgMTQsIDE2CiBMVEVYVCAiIiwgMTAwLCAzMCwgMTAsIDEzNywgMTAKIExURVhUICIiLCAxMDEsIDMwLCAyMiwgMTM3LCAxMAogTFRFWFQgIldpbmUgZm9pIGRpc3BvbmliaWxpemFkbyBwb3I6IiwgOTgsIDgsIDU1LCAxMzcsIDEwCn0KCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFCgpTSEVMTF9BQk9VVF9NU0dCT1ggRElBTE9HIExPQURPTkNBTEwgTU9WRUFCTEUgRElTQ0FSREFCTEUgMTUsIDQwLCAyMTAsIDE1MgpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19WSVNJQkxFIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiQWNlcmNhIGRvICVzIgpGT05UIDEwLCAiTVMgU2hlbGwgRGxnIgp7CiBERUZQVVNIQlVUVE9OICJPSyIsIElET0ssIDE1MywgMTMzLCA1MCwgMTIsIFdTX1RBQlNUT1AKIExJU1RCT1ggOTksIDgsIDY1LCAxMzcsIDgyLCBMQlNfTk9USUZZIHwgV1NfVlNDUk9MTCB8IFdTX0JPUkRFUgogSUNPTiAiIiwgMTA4OCwgMTAsIDEwLCAxNCwgMTYKIExURVhUICIiLCAxMDAsIDMwLCAxMCwgMTM3LCAxMAogTFRFWFQgIiIsIDEwMSwgMzAsIDIyLCAxMzcsIDEwCiBMVEVYVCAiV2luZSBkaXNwb25pYmlsaXphZG8gcG9yOiIsIDk4LCA4LCA1NSwgMTM3LCAxMAp9CgoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0VfQlJBWklMSUFOCgpTSEVMTF9SVU5fRExHIERJQUxPRyBMT0FET05DQUxMIE1PVkVBQkxFIERJU0NBUkRBQkxFIDAsIDAsIDIyNywgOTUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfVklTSUJMRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIiIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgp7CiBJQ09OICIiLCAxMjI5NywgNywgMTEsIDE4LCAyMCwgV1NfVklTSUJMRQogTFRFWFQgIkRpZ2l0ZSBvIG5vbWUgZG8gcHJvZ3JhbWEsIHBhc3RhLCBkb2N1bWVudG8sIG91IGVuZGVyZedvIEludGVybmV0LCBxdWUgbyBXaW5lIGly4SBhYnLtLWxvIHBhcmEgdm9j6i4iLCAxMjI4OSwgMzYsIDExLCAxODIsIDE4CiBMVEVYVCAiJkFicmlyOiIsIDEyMzA1LCA3LCAzOSwgMjQsIDEwCiBDT05UUk9MICIiLCAxMjI5OCwgIkNPTUJPQk9YIiwgV1NfVEFCU1RPUCB8IFdTX0dST1VQIHwgV1NfVlNDUk9MTCB8IFdTX1ZJU0lCTEUgfCBDQlNfRElTQUJMRU5PU0NST0xMIHwgQ0JTX0FVVE9IU0NST0xMIHwgQ0JTX0RST1BET1dOLCAzNiwgMzcsIDE4MywgMTAwCiBERUZQVVNIQlVUVE9OICJPSyIsIElET0ssIDYyLCA2MywgNTAsIDE0LCBXU19UQUJTVE9QCiBQVVNIQlVUVE9OICJDYW5jZWxhciIsIElEQ0FOQ0VMLCAxMTYsIDYzLCA1MCwgMTQsIFdTX1RBQlNUT1AKIFBVU0hCVVRUT04gIiZQcm9jdXJhci4uLiIsIDEyMjg4LCAxNzAsIDYzLCA1MCwgMTQsIFdTX1RBQlNUT1AKfQoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0UKClNIRUxMX1JVTl9ETEcgRElBTE9HIExPQURPTkNBTEwgTU9WRUFCTEUgRElTQ0FSREFCTEUgMCwgMCwgMjI3LCA5NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19WSVNJQkxFIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCnsKIElDT04gIiIsIDEyMjk3LCA3LCAxMSwgMTgsIDIwLCBXU19WSVNJQkxFCiBMVEVYVCAiRGlnaXRlIG8gbm9tZSBkbyBwcm9ncmFtYSwgcGFzdGEsIGRvY3VtZW50bywgb3UgZW5kZXJl528gSW50ZXJuZXQsIHF1ZSBvIFdpbmUgaXLhIGFicu0tbG8uIiwgMTIyODksIDM2LCAxMSwgMTgyLCAxOAogTFRFWFQgIiZBYnJpcjoiLCAxMjMwNSwgNywgMzksIDI0LCAxMAogQ09OVFJPTCAiIiwgMTIyOTgsICJDT01CT0JPWCIsIFdTX1RBQlNUT1AgfCBXU19HUk9VUCB8IFdTX1ZTQ1JPTEwgfCBXU19WSVNJQkxFIHwgQ0JTX0RJU0FCTEVOT1NDUk9MTCB8IENCU19BVVRPSFNDUk9MTCB8IENCU19EUk9QRE9XTiwgMzYsIDM3LCAxODMsIDEwMAogREVGUFVTSEJVVFRPTiAiT0siLCBJRE9LLCA2MiwgNjMsIDUwLCAxNCwgV1NfVEFCU1RPUAogUFVTSEJVVFRPTiAiQ2FuY2VsYXIiLCBJRENBTkNFTCwgMTE2LCA2MywgNTAsIDE0LCBXU19UQUJTVE9QCiBQVVNIQlVUVE9OICImUHJvY3VyYXIuLi4iLCAxMjI4OCwgMTcwLCA2MywgNTAsIDE0LCBXU19UQUJTVE9QCn0KCgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRV9CUkFaSUxJQU4KClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCnsKICAgICAgICAvKiBjb2x1bW5zIGluIHRoZSBzaGVsbHZpZXcgKi8KCUlEU19TSFZfQ09MVU1OMQkJIkFycXVpdm8iCglJRFNfU0hWX0NPTFVNTjIJCSJUYW1hbmhvIgoJSURTX1NIVl9DT0xVTU4zCQkiVGlwbyIKCUlEU19TSFZfQ09MVU1ONAkJIk1vZGlmaWNhZG8iCglJRFNfU0hWX0NPTFVNTjUJCSJBdHJpYnV0b3MiCglJRFNfU0hWX0NPTFVNTjYJCSJUYW1hbmhvIgoJSURTX1NIVl9DT0xVTU43CQkiRGlzcG9u7XZlbCIKCUlEU19TSFZfQ09MVU1OOAkJIk5vbWUiCglJRFNfU0hWX0NPTFVNTjkJCSJDb21lbnThcmlvcyIKCUlEU19TSFZfQ09MVU1OMTAJIkRvbm8iCglJRFNfU0hWX0NPTFVNTjExCSJHcnVwbyIKCiAgICAgICAgLyogc3BlY2lhbCBmb2xkZXJzICovCglJRFNfREVTS1RPUAkJIsFyZWEgZGUgdHJhYmFsaG8iCglJRFNfTVlDT01QVVRFUgkJIk1ldSBjb21wdXRhZG9yIgoKICAgICAgICAvKiBjb250ZXh0IG1lbnVzICovCglJRFNfVklFV19MQVJHRQkJIs1jb25lcyAmZ3JhbmRlcyIKCUlEU19WSUVXX1NNQUxMCQkizWNvbmVzICZwZXF1ZW5vcyIKCUlEU19WSUVXX0xJU1QJCSImTGlzdGEiCglJRFNfVklFV19ERVRBSUxTCSImRGV0YWxoZXMiCglJRFNfU0VMRUNUCQkiU2VsZWNpb25hciIKCUlEU19PUEVOCQkiQWJyaXIiCgoJSURTX0NSRUFURUZPTERFUl9ERU5JRUQgIk7jbyBwb2RlIGNyaWFyIG5vdmEgcGFzdGE6IFBlcm1pc3PjbyBuZWdhZGEuIgoJSURTX0NSRUFURUZPTERFUl9DQVBUSU9OICJFcnJvIGR1cmFudGUgYSBjcmlh5+NvIGRhIG5vdmEgcGFzdGEiCglJRFNfREVMRVRFSVRFTV9DQVBUSU9OICJDb25maXJtYXIgZXhjbHVz428gZGUgYXJxdWl2byIKCUlEU19ERUxFVEVGT0xERVJfQ0FQVElPTiAiQ29uZmlybWFyIGV4Y2x1c+NvIGRlIHBhc3RhIgoJSURTX0RFTEVURUlURU1fVEVYVCAiVm9j6iB0ZW0gY2VydGV6YSBxdWUgZGVzZWphIGV4Y2x1aXIgJyUxJz8iCglJRFNfREVMRVRFTVVMVElQTEVfVEVYVCAiVm9j6iB0ZW0gY2VydGV6YSBxdWUgZGVzZWphIGV4Y2x1aXIgZXN0ZXMgJTEgaXRlbnM/IgoJSURTX09WRVJXUklURUZJTEVfVEVYVCAiVGhpcyBmb2xkZXIgYWxyZWFkeSBjb250YWlucyBhIGZpbGUgY2FsbGVkICclMScuXG5cbkRvIHlvdSB3YW50IHRvIHJlcGxhY2UgaXQ/IgoJSURTX09WRVJXUklURUZJTEVfQ0FQVElPTiAiQ29uZmlybWFyIHNvYnJlZXNjcmV2ZXIgYXJxdWl2byIKCUlEU19PVkVSV1JJVEVGT0xERVJfVEVYVCAiVGhpcyBmb2xkZXIgYWxyZWFkeSBjb250YWlucyBhIGZvbGRlciBuYW1lZCAnJTEnLlxuXG4iXAoJICAgICJJZiB0aGUgZmlsZXMgaW4gdGhlIGRlc3RpbmF0aW9uIGZvbGRlciBoYXZlIHRoZSBzYW1lIG5hbWVzIGFzIGZpbGVzIGluIHRoZVxuIlwKCSAgICAic2VsZWN0ZWQgZm9sZGVyIHRoZXkgd2lsbCBiZSByZXBsYWNlZC4gRG8geW91IHN0aWxsIHdhbnQgdG8gbW92ZSBvciBjb3B5XG4iXAoJICAgICJ0aGUgZm9sZGVyPyIKCiAgICAgICAgLyogbWVzc2FnZSBib3ggc3RyaW5ncyAqLwoJSURTX1JFU1RBUlRfVElUTEUgICAgICAgIlJlaW5pY2lhciIKCUlEU19SRVNUQVJUX1BST01QVCAgICAgICJWb2PqIHF1ZXIgc2ltdWxhciBhIHJlaW5pY2lhbGl6YefjbyBkbyBXaW5kb3dzPyIKCUlEU19TSFVURE9XTl9USVRMRSAgICAgICJEZXNsaWdhciIKCUlEU19TSFVURE9XTl9QUk9NUFQgICAgICJWb2PqIHF1ZXIgZmluYWxpemFyIGEgc2Vzc+NvIG5vIFdpbmU/IgoKICAgICAgICAvKiBzaGVsbCBmb2xkZXIgcGF0aCBkZWZhdWx0IHZhbHVlcyAqLwoJSURTX1BST0dSQU1TICAgICAgICAgICAgICAgICJNZW51IEluaWNpYXJcXFByb2dyYW1hcyIKCUlEU19QRVJTT05BTCAgICAgICAgICAgICAgICAiTWV1cyBEb2N1bWVudG9zIgoJSURTX0ZBVk9SSVRFUyAgICAgICAgICAgICAgICJGYXZvcml0b3MiCglJRFNfU1RBUlRVUCAgICAgICAgICAgICAgICAgIk1lbnUgSW5pY2lhclxcUHJvZ3JhbWFzXFxJbmljaWFyIgoJSURTX1JFQ0VOVCAgICAgICAgICAgICAgICAgICJSZWNlbnQiCglJRFNfU0VORFRPICAgICAgICAgICAgICAgICAgIlNlbmRUbyIKCUlEU19TVEFSVE1FTlUgICAgICAgICAgICAgICAiTWVudSBJbmljaWFyIgoJSURTX01ZTVVTSUMgICAgICAgICAgICAgICAgICJNaW5oYXMgTfpzaWNhcyIKCUlEU19NWVZJREVPICAgICAgICAgICAgICAgICAiTWV1cyBW7WRlb3MiCglJRFNfREVTS1RPUERJUkVDVE9SWSAgICAgICAgIkRlc2t0b3AiCglJRFNfTkVUSE9PRCAgICAgICAgICAgICAgICAgIk5ldEhvb2QiCglJRFNfVEVNUExBVEVTICAgICAgICAgICAgICAgIlRlbXBsYXRlcyIKCUlEU19BUFBEQVRBICAgICAgICAgICAgICAgICAiQXBwbGljYXRpb24gRGF0YSIKCUlEU19QUklOVEhPT0QgICAgICAgICAgICAgICAiUHJpbnRIb29kIgoJSURTX0xPQ0FMX0FQUERBVEEgICAgICAgICAgICJDb25maWd1cmHn9WVzIGxvY2Fpc1xcRGFkb3MgZGUgYXBsaWNhdGl2b3MiCglJRFNfSU5URVJORVRfQ0FDSEUgICAgICAgICAgIkNvbmZpZ3VyYef1ZXMgbG9jYWlzXFxUZW1wb3JhcnkgSW50ZXJuZXQgRmlsZXMiCglJRFNfQ09PS0lFUyAgICAgICAgICAgICAgICAgIkNvb2tpZXMiCglJRFNfSElTVE9SWSAgICAgICAgICAgICAgICAgIkNvbmZpZ3VyYef1ZXMgbG9jYWlzXFxIaXN083JpY28iCglJRFNfUFJPR1JBTV9GSUxFUyAgICAgICAgICAgIkFycXVpdm9zIGRlIHByb2dyYW1hcyIKCUlEU19NWVBJQ1RVUkVTICAgICAgICAgICAgICAiTWluaGFzIEltYWdlbnMiCglJRFNfUFJPR1JBTV9GSUxFU19DT01NT04gICAgIkFycXVpdm9zIGRlIHByb2dyYW1hc1xcQXJxdWl2b3MgY29tdW5zIgoJSURTX0NPTU1PTl9ET0NVTUVOVFMgICAgICAgICJEb2N1bWVudG9zIgoJSURTX0FETUlOVE9PTFMgICAgICAgICAgICAgICJNZW51IEluaWNpYXJcXFByb2dyYW1hc1xcRmVycmFtZW50YXMgQWRtaW5pc3RyYXRpdmFzIgoJSURTX0NPTU1PTl9NVVNJQyAgICAgICAgICAgICJEb2N1bWVudG9zXFxNaW5oYXMgTfpzaWNhcyIKCUlEU19DT01NT05fUElDVFVSRVMgICAgICAgICAiRG9jdW1lbnRvc1xcTWluaGFzIEltYWdlbnMiCglJRFNfQ09NTU9OX1ZJREVPICAgICAgICAgICAgIkRvY3VtZW50b3NcXE1ldXMgVu1kZW9zIgoJSURTX0NEQlVSTl9BUkVBICAgICAgICAgICAgICJDb25maWd1cmHn9WVzIGxvY2Fpc1xcRGFkb3MgZGUgYXBsaWNhdGl2b3NcXE1pY3Jvc29mdFxcQ0QgQnVybmluZyIKfQoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0UKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCnsKICAgICAgICAvKiBjb2x1bW5zIGluIHRoZSBzaGVsbHZpZXcgKi8KCUlEU19TSFZfQ09MVU1OMQkJIkZpY2hlaXJvIgoJSURTX1NIVl9DT0xVTU4yCQkiVGFtYW5obyIKCUlEU19TSFZfQ09MVU1OMwkJIlRpcG8iCglJRFNfU0hWX0NPTFVNTjQJCSJNb2RpZmljYWRvIgoJSURTX1NIVl9DT0xVTU41CQkiQXRyaWJ1dG9zIgoJSURTX1NIVl9DT0xVTU42CQkiVGFtYW5obyIKCUlEU19TSFZfQ09MVU1ONwkJIkRpc3Bvbu12ZWwiCglJRFNfU0hWX0NPTFVNTjgJCSJOb21lIgoJSURTX1NIVl9DT0xVTU45CQkiQ29tZW504XJpb3MiCglJRFNfU0hWX0NPTFVNTjEwCSJEb25vIgoJSURTX1NIVl9DT0xVTU4xMQkiR3J1cG8iCgogICAgICAgIC8qIHNwZWNpYWwgZm9sZGVycyAqLwoJSURTX0RFU0tUT1AJCSJBbWJpZW50ZSBkZSB0cmFiYWxobyIKCUlEU19NWUNPTVBVVEVSCQkiTyBNZXUgQ29tcHV0YWRvciIKCiAgICAgICAgLyogY29udGV4dCBtZW51cyAqLwoJSURTX1ZJRVdfTEFSR0UJCSLNY29uZXMgJmdyYW5kZXMiCglJRFNfVklFV19TTUFMTAkJIs1jb25lcyAmcGVxdWVub3MiCglJRFNfVklFV19MSVNUCQkiJkxpc3RhIgoJSURTX1ZJRVdfREVUQUlMUwkiJkRldGFsaGVzIgoJSURTX1NFTEVDVAkJIlNlbGVjY2lvbmFyIgoJSURTX09QRU4JCSJBYnJpciIKCglJRFNfQ1JFQVRFRk9MREVSX0RFTklFRCAiTuNvIOkgcG9zc+12ZWwgY3JpYXIgbm92YSBwYXN0YTogUGVybWlzc+NvIG5lZ2FkYS4iCglJRFNfQ1JFQVRFRk9MREVSX0NBUFRJT04gIkVycm8gZHVyYW50ZSBhIGNyaWHn428gZGEgbm92YSBwYXN0YSIKCUlEU19ERUxFVEVJVEVNX0NBUFRJT04gIkNvbmZpcm1hciBleGNsdXPjbyBkbyBmaWNoZWlybyIKCUlEU19ERUxFVEVGT0xERVJfQ0FQVElPTiAiQ29uZmlybWFyIGV4Y2x1c+NvIGRhIHBhc3RhIgoJSURTX0RFTEVURUlURU1fVEVYVCAiVGVtIGNlcnRlemEgcXVlIGRlc2VqYSBleGNsdWlyICclMSc/IgoJSURTX0RFTEVURU1VTFRJUExFX1RFWFQgIlRlbSBjZXJ0ZXphIHF1ZSBkZXNlamEgZXhjbHVpciBlc3RlcyAlMSBpdGVucz8iCglJRFNfT1ZFUldSSVRFRklMRV9URVhUICJTdWJzdGl0dWlyIGZpY2hlaXJvICUxPyIKCUlEU19PVkVSV1JJVEVGSUxFX0NBUFRJT04gIkNvbmZpcm1hciBzdWJzdGl0dWnn428gZGUgZmljaGVpcm8iCgogICAgICAgIC8qIG1lc3NhZ2UgYm94IHN0cmluZ3MgKi8KCUlEU19SRVNUQVJUX1RJVExFICAgICAgICJSZWluaWNpYXIiCglJRFNfUkVTVEFSVF9QUk9NUFQgICAgICAiRGVzZWphIHNpbXVsYXIgYSByZWluaWNpYWxpemHn428gZG8gV2luZG93cz8iCglJRFNfU0hVVERPV05fVElUTEUgICAgICAiRGVzbGlnYXIiCglJRFNfU0hVVERPV05fUFJPTVBUICAgICAiRGVzZWphIGZpbmFsaXphciBlc3RhIHNlc3PjbyBkbyBXaW5lPyIKCiAgICAgICAgLyogc2hlbGwgZm9sZGVyIHBhdGggZGVmYXVsdCB2YWx1ZXMgKi8KCUlEU19QUk9HUkFNUyAgICAgICAgICAgICAgICAiTWVudSBJbmljaWFyXFxQcm9ncmFtYXMiCglJRFNfUEVSU09OQUwgICAgICAgICAgICAgICAgIk9TIE1ldXMgRG9jdW1lbnRvcyIKCUlEU19GQVZPUklURVMgICAgICAgICAgICAgICAiRmF2b3JpdG9zIgoJSURTX1NUQVJUVVAgICAgICAgICAgICAgICAgICJNZW51IEluaWNpYXJcXFByb2dyYW1hc1xcSW5pY2lhciIKCUlEU19SRUNFTlQgICAgICAgICAgICAgICAgICAiUmVjZW50ZXMiCglJRFNfU0VORFRPICAgICAgICAgICAgICAgICAgIkVudmlhciBQYXJhIgoJSURTX1NUQVJUTUVOVSAgICAgICAgICAgICAgICJNZW51IEluaWNpYXIiCglJRFNfTVlNVVNJQyAgICAgICAgICAgICAgICAgIkFzIE1pbmhhcyBN+nNpY2FzIgoJSURTX01ZVklERU8gICAgICAgICAgICAgICAgICJPcyBNZXVzIFbtZGVvcyIKCUlEU19ERVNLVE9QRElSRUNUT1JZICAgICAgICAiQW1iaWVudGUgZGUgVHJhYmFsaG8iCglJRFNfTkVUSE9PRCAgICAgICAgICAgICAgICAgIk5ldEhvb2QiCglJRFNfVEVNUExBVEVTICAgICAgICAgICAgICAgIk1vZGVsb3MiCglJRFNfQVBQREFUQSAgICAgICAgICAgICAgICAgIkFwcGxpY2F0aW9uIERhdGEiCglJRFNfUFJJTlRIT09EICAgICAgICAgICAgICAgIlByaW50SG9vZCIKCUlEU19MT0NBTF9BUFBEQVRBICAgICAgICAgICAiRGVmaW5p5/VlcyBsb2NhaXNcXEFwcGxpY2F0aW9uIERhdGEiCglJRFNfSU5URVJORVRfQ0FDSEUgICAgICAgICAgIkRlZmluaef1ZXMgbG9jYWlzXFxUZW1wb3JhcnkgSW50ZXJuZXQgRmlsZXMiCglJRFNfQ09PS0lFUyAgICAgICAgICAgICAgICAgIkNvb2tpZXMiCglJRFNfSElTVE9SWSAgICAgICAgICAgICAgICAgIkRlZmluaef1ZXMgbG9jYWlzXFxIaXN083JpY28iCglJRFNfUFJPR1JBTV9GSUxFUyAgICAgICAgICAgIlByb2dyYW1hcyIKCUlEU19NWVBJQ1RVUkVTICAgICAgICAgICAgICAiQXMgTWluaGFzIEltYWdlbnMiCglJRFNfUFJPR1JBTV9GSUxFU19DT01NT04gICAgIlByb2dyYW1hc1xcRmljaGVpcm9zIGNvbXVucyIKCUlEU19DT01NT05fRE9DVU1FTlRTICAgICAgICAiT3MgTWV1cyBEb2N1bWVudG9zIgoJSURTX0FETUlOVE9PTFMgICAgICAgICAgICAgICJNZW51IEluaWNpYXJcXFByb2dyYW1hc1xcRmVycmFtZW50YXMgQWRtaW5pc3RyYXRpdmFzIgoJSURTX0NPTU1PTl9NVVNJQyAgICAgICAgICAgICJPcyBNZXVzIERvY3VtZW50b3NcXEFzIE1pbmhhcyBN+nNpY2FzIgoJSURTX0NPTU1PTl9QSUNUVVJFUyAgICAgICAgICJPcyBNZXVzIERvY3VtZW50b3NcXEFzIE1pbmhhcyBJbWFnZW5zIgoJSURTX0NPTU1PTl9WSURFTyAgICAgICAgICAgICJPcyBNZXVzIERvY3VtZW50b3NcXE9zIE1ldXMgVu1kZW9zIgoJSURTX0NEQlVSTl9BUkVBICAgICAgICAgICAgICJEZWZpbmnn9WVzIGxvY2Fpc1xcQXBwbGljYXRpb24gRGF0YVxcTWljcm9zb2Z0XFxDRCBCdXJuaW5nIgp9Cg==