LyoKICogUmVnZWRpdCAoRHV0Y2ggcmVzb3VyY2VzKQogKgogKiBDb3B5cmlnaHQgMjAwMyBIYW5zIExlaWRla2tlcgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICovCgpMQU5HVUFHRSBMQU5HX0RVVENILCBTVUJMQU5HX0RFRkFVTFQKCi8qCiAqIE1lbnUKICovCgpJRENfUkVHRURJVCBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgICBQT1BVUCAiJkJlc3RhbmQiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImQWZzbHVpdGVuIiwgICAgICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9FWElUCiAgICBFTkQKICAgIFBPUFVQICImSGVscCIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZJbmZvIC4uLiIsICAgICAgICAgICAgICAgICAgIElEX0hFTFBfQUJPVVQKICAgIEVORApFTkQKCklEUl9SRUdFRElUX01FTlUgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogICAgUE9QVVAgIiZSZWdpc3RlcmJlc3RhbmQiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICJSZWdpc3RlcmJlc3RhbmQgJmltcG9ydGVyZW4uLi4iLCAgICBJRF9SRUdJU1RSWV9JTVBPUlRSRUdJU1RSWUZJTEUKICAgICAgICBNRU5VSVRFTSAiUmVnaXN0ZXJiZXN0YW5kICZleHBvcnRlcmVuLi4uIiwgICAgSURfUkVHSVNUUllfRVhQT1JUUkVHSVNUUllGSUxFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlZlcmJpbmRpbmcgJm1ha2VuIG1ldCBuZXR3ZXJrcmVnaXN0ZXIuLi4iLCBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAiVmVyYmluZGluZyAmdmVyYnJla2VuIG1ldCBuZXR3ZXJrcmVnaXN0ZXIuLi4iLCBJRF9SRUdJU1RSWV9ESVNDT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiQWYmZHJ1a2tlblx0Q3RybCtQIiwgICAgICAgICAgICAgICAgSURfUkVHSVNUUllfUFJJTlQsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQWZzbHVpdGVuIiwgICAgICAgICAgICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9FWElUCiAgICBFTkQKICAgIFBPUFVQICImQmV3ZXJrZW4iCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImV2lqemlnZW4iLCAgICAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX01PRElGWQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIFBPUFVQICImTmlldXciCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIiZTbGV1dGVsIiwgICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfS0VZCiAgICAgICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgICAgICBNRU5VSVRFTSAiJlRla2VucmVla3N3YWFyZGUiLCAgICAgICAgICAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJkJpbmFpcmUgd2FhcmRlIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJkRXT1JELXdhYXJkZSIsICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgRU5ECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZWZXJ3aWpkZXJlblx0RGVsIiwgICAgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCiAgICAgICAgTUVOVUlURU0gIiZOYWFtIHdpanppZ2VuXHRGMiIgICAgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZTbGV1dGVsbmFhbSBrb3Bp63JlbiIsICAgICAgICAgICAgIElEX0VESVRfQ09QWUtFWU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlpvZWtlblx0Q3RybCtGIiwgICAgICAgICAgICAgICAgICAgSURfRURJVF9GSU5ELCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAiVm9sZ2VuZGUgWm9la2VuXHRGMyIsICAgICAgICAgICAgICAgSURfRURJVF9GSU5ETkVYVCwgR1JBWUVECiAgICBFTkQKICAgIFBPUFVQICJCZWUmbGQiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImU3RhdHVzYmFsayIsICAgICAgICAgICAgICAgICAgICAgICBJRF9WSUVXX1NUQVRVU0JBUgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJTJnBsaXRzZW4iLCAgICAgICAgICAgICAgICAgICAgICAgICBJRF9WSUVXX1NQTElUCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZWZXJuaWV1d2VuXHRGNSIsICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfUkVGUkVTSAogICAgRU5ECiAgICBQT1BVUCAiJkZhdm9yaWV0ZW4iCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImVG9ldm9lZ2VuIGFhbiBmYXZvcmlldGVuIiwgICAgICAgICBJRF9GQVZPUklURVNfQUREVE9GQVZPUklURVMKICAgICAgICBNRU5VSVRFTSAiJlZlcndpamRlcmVuIHVpdCBmYXZvcmlldGVuIiwgICAgICAgSURfRkFWT1JJVEVTX1JFTU9WRUZBVk9SSVRFCiAgICBFTkQKICAgIFBPUFVQICImSGVscCIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZIZWxwLW9uZGVyd2VycGVuIiwgICAgICAgICAgICAgICAgIElEX0hFTFBfSEVMUFRPUElDUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImSW5mbyIsICAgICAgSURfSEVMUF9BQk9VVAogICAgRU5ECkVORAoKSURSX1BPUFVQX01FTlVTIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICBQT1BVUCAiIgogIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZXaWp6aWdlbiIsICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRlkKICAgICAgICBNRU5VSVRFTSAiJkJpbmFpcmUgZGF0YSB3aWp6aWdlbiIsICAgICBJRF9FRElUX01PRElGWV9CSU4KICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlZlcndpamRlcmVuXHREZWwiLCAgICAgICAgICBJRF9FRElUX0RFTEVURQogICAgICAgIE1FTlVJVEVNICImTmFhbSB3aWp6aWdlbiIsICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgRU5ECiAgUE9QVVAgIiIKICBCRUdJTgogICAgICAgIFBPUFVQICImTmlldXciCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIiZTbGV1dGVsIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19LRVkKICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICAgIE1FTlVJVEVNICImVGVrZW5yZWVrc3dhYXJkZSIsICAgICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZCaW5haXJlIHdhYXJkZSIsICAgICAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJkRXT1JEIHdhYXJkZSIsICAgICAgICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUKICAgICAgICBFTkQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlZlcndpamRlcmVuXHREZWwiLCAgICAgICAgICBJRF9FRElUX0RFTEVURQogICAgICAgIE1FTlVJVEVNICImTmFhbSB3aWp6aWdlblx0RjIiLCAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZTbGV1dGVsbmFhbSBrb3Bp63JlbiIsICAgICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImWm9la2VuXHRDdHJsK0YiLCAgICAgICAgICAgIElEX0VESVRfRklORCwgR1JBWUVECiAgRU5ECkVORAoKCi8qCiAqIERpYWxvZwogKi8KCklERF9BQk9VVEJPWCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjMwLCA3NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgRFNfTk9JRExFTVNHIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiSW5mbyIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgSUNPTiAgICAgICAgICAgIElESV9SRUdFRElULElESV9SRUdFRElULDE0LDksMTYsMTYKICAgIExURVhUICAgICAgICAgICAiUmVhY3RPUyByZWdlZGl0IFZlcnNpb24gMS4wIixJRENfU1RBVElDLDQ5LDEwLDExOSw4LAogICAgICAgICAgICAgICAgICAgIFNTX05PUFJFRklYCiAgICBMVEVYVCAgICAgICAgICAgIkNvcHlyaWdodCAoQykgMjAwMiBSZWFjdE9TIFRlYW0iLElEQ19TVEFUSUMsNDksMjAsMTE5LDgKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTk1LDYsMzAsMTEsV1NfR1JPVVAKRU5ECgpJRERfRklORCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA4NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiWm9la2VuIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIlpvZWs6IixJRENfU1RBVElDLDUsNywxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDQwLDUsMTI1LDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwKICAgIExURVhUICAgICAgICAgICAiSW46IixJRENfU1RBVElDLDUsIDIyLCAxMTksIDgKICAgIENIRUNLQk9YICAgICAgICAiU2xldXRlbHMiLCBJRENfRklORF9LRVlTLCA1LCAzNCwgOTAsIDEwLCBXU19UQUJTVE9QIHwgV1NfR1JPVVAgfCBCU19BVVRPQ0hFQ0tCT1gKICAgIENIRUNLQk9YICAgICAgICAiV2FhcmRlbiIsIElEQ19GSU5EX1ZBTFVFUywgNSwgNDYsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IEJTX0FVVE9DSEVDS0JPWAogICAgQ0hFQ0tCT1ggICAgICAgICJHZWdldmVucyIsIElEQ19GSU5EX0NPTlRFTlQsIDUsIDU4LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBCU19BVVRPQ0hFQ0tCT1gKICAgIENIRUNLQk9YICAgICAgICAiSGVsZSB0ZWtlbnJlZWtzIiwgSURDX0ZJTkRfV0hPTEUsIDUsIDcwLCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBCU19BVVRPQ0hFQ0tCT1gKICAgIERFRlBVU0hCVVRUT04gICAiWm9la2VuIixJRE9LLDE3NSw1LDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIlNsdWl0ZW4iLElEQ0FOQ0VMLDE3NSwyMiwzMCwxMSwgV1NfR1JPVVAKRU5ECgpJRERfQURERkFWT1JJVEUgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgNTUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlRvZXZvZWdlbiBhYW4gZmF2b3JpZXRlbiIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJOYWFtOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDEyMCw0MCw0MCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICJBbm51bGVyZW4iLElEQ0FOQ0VMLDE2NSw0MCw0MCwxMSwgV1NfR1JPVVAKRU5ECgpJRERfREVMRkFWT1JJVEUgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgOTAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkZhdm9yaWV0ZW4gdmVyd2lqZGVyZW4iCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiRmF2b3JpZXRlbjoiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBMSVNUQk9YICAgICAgICAgSURDX05BTUVfTElTVCw1LDE1LDIwMCw1MiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IExCU19TT1JUIHwgTEJTX05PSU5URUdSQUxIRUlHSFQgfCBXU19WU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDEyMCw3Myw0MCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICJBbm51bGVyZW4iLElEQ0FOQ0VMLDE2NSw3Myw0MCwxMSwgV1NfR1JPVVAKRU5ECgpJRERfRURJVF9TVFJJTkcgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgNzUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlRla2VucmVla3MgYmV3ZXJrZW4iCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiV2FhcmRlbmFhbToiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiV2FhcmRlZ2VnZXZlbnM6IixJRENfU1RBVElDLDUsMzAsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDEyMCw2MCw0MCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICJBbm51bGVyZW4iLElEQ0FOQ0VMLDE2NSw2MCw0MCwxMSxXU19HUk9VUApFTkQKCklERF9FRElUX0RXT1JEIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDEwMApTVFlMRSBEU19NT0RBTEZSQU1FIHwgRFNfTk9JRExFTVNHIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRFdPUkQgd2FhcmRlIGJld2Vya2VuIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIldhYXJkZW5hYW06IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEx8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIldhYXJkZWdlZ2V2ZW5zOiIsSURDX1NUQVRJQyw1LDMwLDkwLDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDkwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBHUk9VUEJPWCAgICAgICAgIkdyb25kdGFsIiwgSURDX0RXT1JEX0JBU0UsIDEyMCwgMzAsIDg1LCAzNywgQlNfR1JPVVBCT1gKICAgIEFVVE9SQURJT0JVVFRPTiAiSGV4YWRlY2ltYWFsIiwgSURDX0RXT1JEX0hFWCwgMTMwLCA0MCwgNjAsIDEwLCBXU19UQUJTVE9QCiAgICBBVVRPUkFESU9CVVRUT04gIkRlY2ltYWFsIiwgSURDX0RXT1JEX0RFQywgMTMwLCA1MiwgNjAsIDEwLCBXU19UQUJTVE9QCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDEyMCw4MCw0MCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICJBbm51bGVyZW4iLElEQ0FOQ0VMLDE2NSw4MCw0MCwxMSxXU19HUk9VUApFTkQKCklERF9FRElUX0JJTkFSWSBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCAxMDAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IERTX05PSURMRU1TRyB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkJpbmFpcmUgd2FhcmRlIGJld2Vya2VuIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIldhYXJkZW5hYW06IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEx8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIldhYXJkZWdlZ2V2ZW5zOiIsSURDX1NUQVRJQyw1LDMwLDkwLDgKICAgIENPTlRST0wgICAgICAgICAiIixJRENfVkFMVUVfREFUQSwiSGV4RWRpdCIsV1NfVEFCU1RPUCw0LDQwLDE2MCw0MAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxMjAsODAsNDAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAiQW5udWxlcmVuIixJRENBTkNFTCwxNjUsODAsNDAsMTEsV1NfR1JPVVAKRU5ECgovKgogKiBTdHJpbmcgVGFibGUKICovCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0xJU1RfQ09MVU1OX05BTUUgICAgIk5hYW0iCiAgICBJRFNfTElTVF9DT0xVTU5fVFlQRSAgICAiVHlwZSIKICAgIElEU19MSVNUX0NPTFVNTl9EQVRBICAgICJHZWdldmVucyIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0FQUF9USVRMRSAgICAgICAgICAgIlJlZ2lzdGVyLWVkaXRvciIKICAgIElEQ19SRUdFRElUICAgICAgICAgICAgICJSRUdFRElUIgogICAgSURDX1JFR0VESVRfRlJBTUUgICAgICAgIlJFR0VESVRfRlJBTUUiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX1JFR0lTVFJZX01FTlUgICAgICAgICJPcGRyYWNodGVuIHZvb3IgaGV0IHdlcmtlbiBtZXQgaGV0IGdlaGVsZSByZWdpc3RlciIKICAgIElEX0VESVRfTUVOVSAgICAgICAgICAgICJPcGRyYWNodGVuIHZvb3IgaGV0IGJld2Vya2VuIHZhbiB3YWFyZGVuIG9mIHNsZXV0ZWxzIgogICAgSURfVklFV19NRU5VICAgICAgICAgICAgIk9wZHJhY2h0ZW4gdm9vciBoZXQgYWFucGFzc2VuIHZhbiBoZXQgcmVnaXN0ZXJ2ZW5zdGVyIgogICAgSURfRkFWT1JJVEVTX01FTlUgICAgICAgIk9wZHJhY2h0ZW4gdm9vciB0b2VnYW5nIHRvdCB2YWFrIGdlYnJ1aWt0ZSBzbGV1dGVscyIKICAgIElEX0hFTFBfTUVOVSAgICAgICAgICAgICJPcGRyYWNodGVuIHZvb3IgaGV0IHdlZXJnZXZlbiB2YW4gSGVscCBlbiBpbmZvcm1hdGllIG92ZXIgZGUgUmVnaXN0ZXItZWRpdG9yIgogICAgSURfRURJVF9ORVdfTUVOVSAgICAgICAgIk9wZHJhY2h0ZW4gdm9vciBoZXQgbWFrZW4gdmFuIG5pZXV3ZSBzbGV1dGVscyBvZiB3YWFyZGVuIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9FRElUX01PRElGWSAgICAgICAgICAiRGUgZ2VnZXZlbnMgdmFuIGRlIHdhYXJkZSB3aWp6aWdlbiIKICAgIElEX0VESVRfTkVXX0tFWSAgICAgICAgICJFZW4gbmlldXdlIHNsZXV0ZWwgdG9ldm9lZ2VuIgogICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUgIkVlbiBuaWV1d2UgdGVrZW5yZWVrc3dhYXJkZSB0b2V2b2VnZW4iCiAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRSAiRWVuIG5pZXV3ZSBiaW5haXJlIHdhYXJkZSB0b2V2b2VnZW4iCiAgICBJRF9FRElUX05FV19EV09SRFZBTFVFICAiRWVuIG5pZXV3ZSBEV09SRC13YWFyZGUgdG9ldm9lZ2VuIiAKICAgIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRSAiRWVuIHRla3N0YmVzdGFuZCBpbiBoZXQgcmVnaXN0ZXIgaW1wb3J0ZXJlbiIKICAgIElEX1JFR0lTVFJZX0VYUE9SVFJFR0lTVFJZRklMRQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldCByZWdpc3RlciBvZiBlZW4gZ2VkZWVsdGUgZXJ2YW4gbmFhciBlZW4gdGVrc3RiZXN0YW5kIGV4cG9ydGVyZW4iCiAgICBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRWVuIHZlcmJpbmRpbmcgbWFrZW4gbWV0IGhldCByZWdpc3RlciB2YW4gZWVuIGV4dGVybmUgY29tcHV0ZXIiCiAgICBJRF9SRUdJU1RSWV9ESVNDT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGUgdmVyYmluZGluZyBtZXQgaGV0IHJlZ2lzdGVyIHZhbiBlZW4gZXh0ZXJuZSBjb21wdXRlciB2ZXJicmVrZW4iCiAgICBJRF9SRUdJU1RSWV9QUklOVCAgICAgICAiSGV0IHJlZ2lzdGVyIG9mIGVlbiBnZWRlZWx0ZSBlcnZhbiBhZmRydWtrZW4iCiAgICBJRF9IRUxQX0hFTFBUT1BJQ1MgICAgICAiSGVscCB2b29yIGRlIFJlZ2lzdGVyLWVkaXRvciBvcGVuZW4iCiAgICBJRF9IRUxQX0FCT1VUICAgICAgICAgICAiUHJvZ3JhbW1hZ2VnZXZlbnMsIHZlcnNpZW51bW1lciBlbiBjb3B5cmlnaHRnZWdldmVucyB3ZWVyZ2V2ZW4iCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX1JFR0lTVFJZX0VYSVQgICAgICAgICJEZSBSZWdpc3Rlci1lZGl0b3IgYWZzbHVpdGVuIgogICAgSURfRkFWT1JJVEVTX0FERFRPRkFWT1JJVEVTICJTbGV1dGVscyB0b2V2b2VnZW4gYWFuIGRlIGxpanN0IG1ldCBmYXZvcmlldGVuIgogICAgSURfRkFWT1JJVEVTX1JFTU9WRUZBVk9SSVRFICJTbGV1dGVscyB2ZXJ3aWpkZXJlbiB1aXQgZGUgbGlqc3QgbWV0IGZhdm9yaWV0ZW4iCiAgICBJRF9WSUVXX1NUQVRVU0JBUiAgICAgICAiRGUgc3RhdHVzYmFsayB3ZWVyZ2V2ZW4gb2YgdmVyYmVyZ2VuIgogICAgSURfVklFV19TUExJVCAgICAgICAgICAgIkRlIHBvc2l0aWUgdmFuIGRlIHNwbGl0c2luZyB0dXNzZW4gdHdlZSBkZWVsdmVuc3RlcnMgd2lqemlnZW4iCiAgICBJRF9WSUVXX1JFRlJFU0ggICAgICAgICAiSGV0IHZlbnN0ZXIgdmVybmlldXdlbiIKICAgIElEX0VESVRfREVMRVRFICAgICAgICAgICJEZSBzZWxlY3RpZSB2ZXJ3aWpkZXJlbiIKICAgIElEX0VESVRfUkVOQU1FICAgICAgICAgICJEZSBuYWFtIHZhbiBkZSBzZWxlY3RpZSB3aWp6aWdlbiIKICAgIElEX0VESVRfQ09QWUtFWU5BTUUgICAgICJEZSBuYWFtIHZhbiBkZSBnZXNlbGVjdGVlcmRlIHNsZXV0ZWwgbmFhciBoZXQgS2xlbWJvcmQga29waetyZW4iCiAgICBJRF9FRElUX0ZJTkQgICAgICAgICAgICAiRWVuIHRla2VucmVla3Mgem9la2VuIGluIGVlbiBzbGV1dGVsLCBlZW4gd2FhcmRlIG9mIGdlZ2V2ZW5zIgogICAgSURfRURJVF9GSU5ETkVYVCAgICAgICAgIkRlIG9wZ2VnZXZlbiB0ZWtzdCBub2dtYWFscyB6b2VrZW4iCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19FUlJPUiAgICAgICAgICAgICAgICJGb3V0IgogICAgSURTX0JBRF9LRVkgICAgICAgICAgICAgIkthbiBzbGV1dGVsICclcycgbmlldCBvcHZyYWdlbiIKICAgIElEU19CQURfVkFMVUUgICAgICAgICAgICJLYW4gd2FhcmRlICclcycgbmlldCBvcHZyYWdlbiIKICAgIElEU19VTlNVUFBPUlRFRF9UWVBFICAgICJLYW4gZGl0IHR5cGUgc2xldXRlbCAoJWxkKSBuaWV0IGJld2Vya2VuIgogICAgSURTX1RPT19CSUdfVkFMVUUgICAgICAgIldhYXJkZSB0ZSBncm9vdCAoJWxkKSIKICAgIElEU19ERUxFVEVfQk9YX1RJVExFICAgICJXYWFyZGUgdmVyd2lqZGVyZW4gYmV2ZXN0aWdlbiIKICAgIElEU19ERUxFVEVfQk9YX1RFWFQgICAgICJXZWV0IHUgemVrZXIgZGF0IHUgZGUgd2FhcmRlICclcycgd2lsdCB2ZXJ3aWpkZXJlbj8iCiAgICBJRFNfTkVXS0VZICAgICAgICAgICAgICAiTmlldXdlIHNsZXV0ZWwgIyVkIgogICAgSURTX05FV1ZBTFVFICAgICAgICAgICAgIk5pZXV3ZSB3YWFyZGUgIyVkIgogICAgSURTX05PVEZPVU5EICAgICAgICAgICAgIlRla2VucmVla3MgJyVzJyBuaWV0IGdldm9uZGVuIgpFTkQKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgovKgogKiBEaWFsb2cKICovCgpJRERfRElBTE9HMSBESUFMT0cgRElTQ0FSREFCTEUgIDUwLCA1MCwgMjY4LCA5OApTVFlMRSBEU18zRExPT0sgfCBEU19DT05UUk9MIHwgV1NfQ0hJTEQgfCBXU19WSVNJQkxFIHwgV1NfQ0xJUFNJQkxJTkdTIHwKICAgIFdTX0JPUkRFUgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCkVORAoKSUREX0RJQUxPRzIgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAxODcsIDk1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkRpYWxvZyIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxMzAsNyw1MCwxNAogICAgUFVTSEJVVFRPTiAgICAgICJBbm51bGVyZW4iLElEQ0FOQ0VMLDEzMCwyNCw1MCwxNApFTkQKCgovKgogKiBURVhUSU5DTFVERQogKi8KCjEgVEVYVElOQ0xVREUgRElTQ0FSREFCTEUKQkVHSU4KICAgICJyZXNvdXJjZS5oXDAiCkVORAo=