LyoKICogUmVnZWRpdCByZXNvdXJjZXMKICoKICogQ29weXJpZ2h0IDIwMDIgUm9iZXJ0IERpY2tlbnNvbgogKiBDb3B5cmlnaHQgMjAwMyBWaW5jZW50IELpcm9uCiAqIENvcHlyaWdodCAyMDA1LTIwMDcgSm9uYXRoYW4gRXJuc3QKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKTEFOR1VBR0UgTEFOR19GUkVOQ0gsIFNVQkxBTkdfTkVVVFJBTAoKLyoKICogTWVudQogKi8KCklEUl9SRUdFRElUX01FTlUgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogICAgUE9QVVAgIiZSZWdpc3RyZXMiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImSW1wb3J0ZXIgdW4gZmljaGllciBkZSByZWdpc3RyZXMuLi4iLCAgICBJRF9SRUdJU1RSWV9JTVBPUlRSRUdJU1RSWUZJTEUKICAgICAgICBNRU5VSVRFTSAiJkV4cG9ydGVyIHVuIGZpY2hpZXIgZGUgcmVnaXN0cmVzLi4uIiwgICAgSURfUkVHSVNUUllfRVhQT1JUUkVHSVNUUllGSUxFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZDb25uZWN0ZXIg4CBkZXMgcmVnaXN0cmVzIHZpYSBsZSBy6XNlYXUuLi4iLCBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAiJkTpY29ubmVjdGVyIGRlIHJlZ2lzdHJlcyBy6XNlYXUuLi4iLCBJRF9SRUdJU1RSWV9ESVNDT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiSW0mcHJpbWVyXHRDdHJsK1AiLCAgICAgICAgICAgICAgSURfUkVHSVNUUllfUFJJTlQsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImUXVpdHRlciIsICAgICAgICAgICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9FWElUCiAgICBFTkQKICAgIFBPUFVQICLJJmRpdGlvbiIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZNb2RpZmllciIsICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRlkKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBQT1BVUCAiJk5vdXZlbGxlIgogICAgICAgIEJFR0lOCiAgICAgICAgICAgIE1FTlVJVEVNICImQ2zpIiwgICAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19LRVkKICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICAgIE1FTlVJVEVNICJWYWxldXIgYyZoYe5uZSIsICAgICAgICAgICAgICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIlZhbGV1ciAmYmluYWlyZSIsICAgICAgICAgICAgICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIlZhbGV1ciAmbW90IGRvdWJsZSIsICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIlZhbGV1ciBjaGHubmUgJm11bHRpcGxlIiwgICAgICAgICBJRF9FRElUX05FV19NVUxUSV9TVFJJTkdWQUxVRQogICAgICAgIEVORAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImU3VwcHJpbWVyXHRTdXBwciIsICAgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCiAgICAgICAgTUVOVUlURU0gIlJlbiZvbW1lclx0RjIiLCAgICAgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZDb3BpZXIgbGUgbm9tIGRlIGxhIGNs6SIsICAgICAgICAgICAgICBJRF9FRElUX0NPUFlLRVlOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZSZWNoZXJjaGVyLi4uXHRDdHJsK0YiLCAgICAgICAgICAgICAgSURfRURJVF9GSU5ELCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAiUmVjaGVyY2hlciBsZSBzJnVpdmFudFx0RjMiLCAgICAgICAgICBJRF9FRElUX0ZJTkRORVhULCBHUkFZRUQKICAgIEVORAogICAgUE9QVVAgIiZBZmZpY2hhZ2UiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImQmFycmUgZCfpdGF0IiwgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1RBVFVTQkFSCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZT6XBhcmF0ZXVyIiwgICAgICAgICAgICAgICAgICAgICAgSURfVklFV19TUExJVAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImUmFmcmHuY2hpclx0RjUiLCAgICAgICAgICAgICAgICBJRF9WSUVXX1JFRlJFU0gKICAgIEVORAogICAgUE9QVVAgIiZTaWduZXRzIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkFqb3V0ZXIgYXV4IHNpZ25ldHMiLCAgICAgICAgICBJRF9GQVZPUklURVNfQUREVE9GQVZPUklURVMKICAgICAgICBNRU5VSVRFTSAiJlN1cHByaW1lciBkZXMgc2lnbmV0cyIsICAgICAgICBJRF9GQVZPUklURVNfUkVNT1ZFRkFWT1JJVEUKICAgIEVORAogICAgUE9QVVAgIkFpZCZlIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJlNvbW1haXJlXHRGMSIsICAgICAgICAgICAgICAgIElEX0hFTFBfSEVMUFRPUElDUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgICBNRU5VSVRFTSAiwCAmcHJvcG9zIGRlIGwn6WRpdGV1ciBkZSByZWdpc3RyZXMiLCAgICAgIElEX0hFTFBfQUJPVVQKICAgIEVORApFTkQKCklEUl9QT1BVUF9NRU5VUyBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgUE9QVVAgIiIKICBCRUdJTgoJTUVOVUlURU0gIiZNb2RpZmllciIsICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRlkKCU1FTlVJVEVNICJNb2RpZmllciBkb25u6WVzIGJpbmFpcmVzIiwgICAgICAgICAgSURfRURJVF9NT0RJRllfQklOCglNRU5VSVRFTSBTRVBBUkFUT1IKCU1FTlVJVEVNICImU3VwcHJpbWVyXHREZWwiLCAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQoJTUVOVUlURU0gIlJlbiZvbW1lciIsICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICBFTkQKICBQT1BVUCAiIgogIEJFR0lOCiAgICAgICAgUE9QVVAgIiZOb3V2ZWxsZSIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAiJkNs6SIsICAgICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfS0VZCiAgICAgICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgICAgICBNRU5VSVRFTSAiVmFsZXVyIGMmaGHubmUiLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICJWYWxldXIgJmJpbmFpcmUiLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICJWYWxldXIgJm1vdCBkb3VibGUiLCAgICAgICAgICAgICAgICBJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICJWYWxldXIgY2hh7m5lICZtdWx0aXBsZSIsICAgICAgICAgSURfRURJVF9ORVdfTVVMVElfU1RSSU5HVkFMVUUKICAgICAgICBFTkQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlN1cHByaW1lclx0RGVsIiwgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiUmVuJm9tbWVyXHRGMiIsICAgICAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkNvcGllciBsZSBub20gZGUgbGEgY2zpIiwgICAgICAgICAgICAgIElEX0VESVRfQ09QWUtFWU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlJlY2hlcmNoZXJcdEN0cmwrRiIsICAgICAgICAgICAgICAgSURfRURJVF9GSU5ELCBHUkFZRUQKICBFTkQKRU5ECgoKLyoKICogRGlhbG9nCiAqLwoKSUREX0VYUE9SVF9URU1QTEFURSBESUFMT0cgRElTQ0FSREFCTEUgIDUwLCA1MCwgMjc4LCA1NApTVFlMRSBEU18zRExPT0sgfCBEU19DT05UUk9MIHwgV1NfQ0hJTEQgfCBXU19WSVNJQkxFIHwgV1NfQ0xJUFNJQkxJTkdTIHwKICAgIFdTX0JPUkRFUgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAiJkV4cG9ydGVyIGxlIHJlZ2lzdHJlIiwgSURDX0VYUE9SVF9CQVNFLCA2LCA2LCAyNjYsIDQyLCBXU19HUk9VUAogICAgQVVUT1JBRElPQlVUVE9OICImVG91dCIsIElEQ19FWFBPUlRfQUxMLCAxMiwgMTUsIDI0NCwgMTIKICAgIEFVVE9SQURJT0JVVFRPTiAiJlPpbGVjdGlvbm5lciB1bmUgYnJhbmNoZaA6IiwgSURDX0VYUE9SVF9TRUxFQ1RFRCwgMTIsIDMwLCA3MCwgMTIKICAgIEVESVRURVhUIElEQ19FWFBPUlRfUEFUSCwgODIsIDMwLCAxODQsIDEyCkVORAoKSUREX0ZJTkQgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgODUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlJlY2hlcmNoZSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJSZWNoZXJjaGVyoDoiLElEQ19TVEFUSUMsNSw3LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNDAsNSwxMjUsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTAogICAgTFRFWFQgICAgICAgICAgICJSZWdhcmRlciBkYW5zoDoiLElEQ19TVEFUSUMsNSwgMjIsIDExOSwgOAogICAgQ0hFQ0tCT1ggICAgICAgICJDbOlzIiwgSURDX0ZJTkRfS0VZUywgNSwgMzQsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IFdTX0dST1VQIHwgQlNfQVVUT0NIRUNLQk9YCiAgICBDSEVDS0JPWCAgICAgICAgIlZhbGV1cnMiLCBJRENfRklORF9WQUxVRVMsIDUsIDQ2LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBCU19BVVRPQ0hFQ0tCT1gKICAgIENIRUNLQk9YICAgICAgICAiRG9ubullcyIsIElEQ19GSU5EX0NPTlRFTlQsIDUsIDU4LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBCU19BVVRPQ0hFQ0tCT1gKICAgIENIRUNLQk9YICAgICAgICAiTW90IGVudGllciBzZXVsZW1lbnQiLCBJRENfRklORF9XSE9MRSwgNSwgNzAsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IEJTX0FVVE9DSEVDS0JPWAogICAgREVGUFVTSEJVVFRPTiAgICJTdWl2YW50IixJRE9LLDE3NSw1LDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIkZlcm1lciIsSURDQU5DRUwsMTc1LDIyLDMwLDExLCBXU19HUk9VUApFTkQKCklERF9BRERGQVZPUklURSBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA1NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiQWpvdXRlciBhdXggc2lnbmV0cyIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJOb20gZHUgc2lnbmV0oDoiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsNDAsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAiQW5udWxlciIsSURDQU5DRUwsMTc1LDQwLDMwLDExLCBXU19HUk9VUApFTkQKCklERF9ERUxGQVZPUklURSBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA5MApTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiU3VwcHJpbWVyIGxlcyBzaWduZXRzIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIlPpbGVjdGlvbm5leiB1biBvdSBwbHVzaWV1cnMgc2lnbmV0c6A6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgTElTVEJPWCAgICAgICAgIElEQ19OQU1FX0xJU1QsNSwxNSwyMDAsNTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBMQlNfU09SVCB8IExCU19OT0lOVEVHUkFMSEVJR0hUIHwgV1NfVlNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsNzMsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAiQW5udWxlciIsSURDQU5DRUwsMTc1LDczLDMwLDExLCBXU19HUk9VUApFTkQKCklERF9FRElUX1NUUklORyBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA3NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiTW9kaWZpY2F0aW9uIGRlIGxhIGNoYe5uZSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJOb20gZGUgbGEgdmFsZXVyoDoiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICJEb25u6WVzIGRlIGxhIHZhbGV1cqA6IixJRENfU1RBVElDLDUsMzAsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw2MCwzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICJBbm51bGVyIixJRENBTkNFTCwxNzUsNjAsMzAsMTEsV1NfR1JPVVAKRU5ECgpJRERfRURJVF9EV09SRCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCAxMDAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IERTX05PSURMRU1TRyB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIk1vZGlmaWNhdGlvbiBkZSBsYSB2YWxldXIgRFdPUkQiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiTm9tIGRlIGxhIHZhbGV1cqA6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiRG9ubullcyBkZSB2YWxldXKgOiIsSURDX1NUQVRJQyw1LDMwLDkwLDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDkwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBHUk9VUEJPWCAgICAgICAgIkJhc2UiLCBJRENfRFdPUkRfQkFTRSwgMTIwLCAzMCwgODUsIDM3LCBCU19HUk9VUEJPWAogICAgQVVUT1JBRElPQlVUVE9OICJIZXhhZOljaW1hbGUiLCBJRENfRFdPUkRfSEVYLCAxMzAsIDQwLCA2MCwgMTAsIFdTX1RBQlNUT1AKICAgIEFVVE9SQURJT0JVVFRPTiAiROljaW1hbGUiLCBJRENfRFdPUkRfREVDLCAxMzAsIDUyLCA2MCwgMTAsIFdTX1RBQlNUT1AKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDgwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIkFubnVsZXIiLElEQ0FOQ0VMLDE3NSw4MCwzMCwxMSxXU19HUk9VUApFTkQKCklERF9FRElUX0JJTkFSWSBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCAxMDAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IERTX05PSURMRU1TRyB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIk1vZGlmaWNhdGlvbiBkZSBsYSB2YWxldXIgYmluYWlyZSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJOb20gZGUgbGEgdmFsZXVyoDoiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiRG9ubullcyBkZSBsYSB2YWxldXKgOiIsSURDX1NUQVRJQyw1LDMwLDkwLDgKICAgIENPTlRST0wgICAgICAgICAiIixJRENfVkFMVUVfREFUQSwiSGV4RWRpdCIsV1NfVEFCU1RPUCw0LDQwLDE2MCw0MAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsODAsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAiQW5udWxlciIsSURDQU5DRUwsMTc1LDgwLDMwLDExLFdTX0dST1VQCkVORAoKSUREX0VESVRfTVVMVElfU1RSSU5HIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDE3NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRWRpdCBNdWx0aSBTdHJpbmciCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiTm9tIGRlIGxhIHZhbGV1cqA6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEx8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIkRvbm7pZXMgZGUgbGEgdmFsZXVyoDoiLElEQ19TVEFUSUMsNSwzMCwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsMjAwLDExMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IFdTX0hTQ1JPTEwgfCBXU19WU0NST0xMIHwgRVNfTVVMVElMSU5FIHwgRVNfV0FOVFJFVFVSTgogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsMTYwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgIkFubnVsZXIiLElEQ0FOQ0VMLDE3NSwxNjAsMzAsMTEsV1NfR1JPVVAKRU5ECgovKgogKiBTdHJpbmcgVGFibGUKICovCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0xJU1RfQ09MVU1OX05BTUUgICAgIk5vbSIKICAgIElEU19MSVNUX0NPTFVNTl9UWVBFICAgICJUeXBlIgogICAgSURTX0xJU1RfQ09MVU1OX0RBVEEgICAgIlZhbGV1ciIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0FQUF9USVRMRSAgICAgICAgICAgIslkaXRldXIgZGUgcmVnaXN0cmVzIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9SRUdJU1RSWV9NRU5VICAgICAgICAiQ29udGllbnQgZGVzIGNvbW1hbmRlcyBwb3VyIHRyYXZhaWxsZXIgc3VyIGxlcyByZWdpc3RyZXMgZGUgbWFuaehyZSBnbG9iYWxlIgogICAgSURfRURJVF9NRU5VICAgICAgICAgICAgIkNvbnRpZW50IGRlcyBjb21tYW5kZXMgcG91ciDpZGl0ZXIgZGVzIHZhbGV1cnMgb3UgZGVzIGNs6XMiCiAgICBJRF9WSUVXX01FTlUgICAgICAgICAgICAiQ29udGllbnQgZGVzIGNvbW1hbmRlcyBwb3VyIHBlcnNvbm5hbGlzZXIgbGEgZmVu6nRyZSBkZXMgcmVnaXN0cmVzIgogICAgSURfRkFWT1JJVEVTX01FTlUgICAgICAgIkNvbnRpZW50IGRlcyBjb21tYW5kZXMgcG91ciBhY2PpZGVyIGF1eCBjbOlzIGZy6XF1ZW1tZW50IHV0aWxpc+llcyIKICAgIElEX0hFTFBfTUVOVSAgICAgICAgICAgICJDb250aWVudCBkZXMgY29tbWFuZGVzIHBvdXIgYWZmaWNoZXIgZGUgbCdhaWRlIGV0IGRlIGwnaW5mb3JtYXRpb24g4CBwcm9wb3MgZGUgbCfpZGl0ZXVyIGRlIHJlZ2lzdHJlcyIKICAgIElEX0VESVRfTkVXX01FTlUgICAgICAgICJDb250aWVudCBkZXMgY29tbWFuZGVzIHBvdXIgY3LpZXIgZGUgbm91dmVsbGVzIGNs6XMgb3UgdmFsZXVycyIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfRURJVF9NT0RJRlkgICAgICAgICAgIk1vZGlmaWUgbGVzIGRvbm7pZXMgZCd1bmUgdmFsZXVyIgogICAgSURfRURJVF9ORVdfS0VZICAgICAgICAgIkFqb3V0ZSB1bmUgbm91dmVsbGUgY2zpIgogICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUgIkFqb3V0ZSB1bmUgbm91dmVsbGUgdmFsZXVyIGNoYe5uZSIKICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFICJBam91dGUgdW5lIG5vdXZlbGxlIHZhbGV1ciBiaW5haXJlIgogICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRSAgIkFqb3V0ZSB1bmUgbm91dmVsbGUgdmFsZXVyIG1vdCBkb3VibGUiCiAgICBJRF9FRElUX05FV19NVUxUSV9TVFJJTkdWQUxVRSAiQWpvdXRlIHVuZSBub3V2ZWxsZSB2YWxldXIgY2hh7m5lIG11bHRpcGxlIgogICAgSURfUkVHSVNUUllfSU1QT1JUUkVHSVNUUllGSUxFICJJbXBvcnRlIHVuIGZpY2hpZXIgdGV4dGUgZGFucyBsZXMgcmVnaXN0cmVzIgogICAgSURfUkVHSVNUUllfRVhQT1JUUkVHSVNUUllGSUxFCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwb3J0ZSB0b3V0IG91IHVuZSBwYXJ0aWUgZGVzIHJlZ2lzdHJlcyBkYW5zIHVuIGZpY2hpZXIgdGV4dGUiCiAgICBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29ubmVjdGUgYXV4IHJlZ2lzdHJlcyBkJ3VuIG9yZGluYXRldXIgZGlzdGFudCIKICAgIElEX1JFR0lTVFJZX0RJU0NPTk5FQ1RORVRXT1JLUkVHSVNUUlkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJE6WNvbm5lY3RlIGRlcyByZWdpc3RyZXMgZCd1biBvcmRpbmF0ZXVyIGRpc3RhbnQiCiAgICBJRF9SRUdJU1RSWV9QUklOVCAgICAgICAiSW1wcmltZSB0b3V0IG91IHVuZSBwYXJ0aWUgZGVzIHJlZ2lzdHJlcyIKLyogICAgSURfSEVMUF9IRUxQVE9QSUNTICAgICAgIk91dnJlIGwnYWlkZSBkZSBsJ+lkaXRldXIgZGUgcmVnaXN0cmVzIiAqLwogICAgSURfSEVMUF9BQk9VVCAgICAgICAgICAgIkFmZmljaGUgZGUgbCdpbmZvcm1hdGlvbiBzdXIgbGUgcHJvZ3JhbW1lLCBsZSBudW3pcm8gZGUgdmVyc2lvbiBldCBsZSBjb3B5cmlnaHQiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX1JFR0lTVFJZX0VYSVQgICAgICAgICJRdWl0dGUgbCfpZGl0ZXVyIGRlIHJlZ2lzdHJlcyIKICAgIElEX0ZBVk9SSVRFU19BRERUT0ZBVk9SSVRFUyAiQWpvdXRlIGRlcyBjbOlzIOAgbGEgbGlzdGUgZGVzIHNpZ25ldHMiCiAgICBJRF9GQVZPUklURVNfUkVNT1ZFRkFWT1JJVEUgIlJldGlyZSBkZXMgY2zpcyBkZSBsYSBsaXN0ZSBkZXMgc2lnbmV0cyIKICAgIElEX1ZJRVdfU1RBVFVTQkFSICAgICAgICJNb250cmUgb3UgY2FjaGUgbGEgYmFycmUgZCfpdGF0IgogICAgSURfVklFV19TUExJVCAgICAgICAgICAgIkNoYW5nZSBsYSBwb3NpdGlvbiBkZSBsYSBz6XBhcmF0aW9uIGVudHJlIGxlcyBkZXV4IHBhbm5lYXV4IgogICAgSURfVklFV19SRUZSRVNIICAgICAgICAgIlJhZnJh7mNoaXQgbGEgZmVu6nRyZSIKICAgIElEX0VESVRfREVMRVRFICAgICAgICAgICJTdXBwcmltZSBsYSBz6WxlY3Rpb24iCiAgICBJRF9FRElUX1JFTkFNRSAgICAgICAgICAiUmVub21tZSBsYSBz6WxlY3Rpb24iCiAgICBJRF9FRElUX0NPUFlLRVlOQU1FICAgICAiQ29waWUgbGUgbm9tIGRlIGxhIGNs6SBz6WxlY3Rpb25u6WUgdmVycyBsZSBwcmVzc2UtcGFwaWVyIgogICAgSURfRURJVF9GSU5EICAgICAgICAgICAgIlJlY2hlcmNoZSBkdSB0ZXh0ZSBkYW5zIHVuZSBjbOksIHVuZSB2YWxldXIgb3UgZGVzIGRvbm7pZXMiCiAgICBJRF9FRElUX0ZJTkRORVhUICAgICAgICAiUmVjaGVyY2hlIGwnb2NjdXJlbmNlIHN1aXZhbnRlIGR1IHRleHRlIGRlIGxhIGRlcm5p6HJlIHJlY2hlcmNoZSIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0VSUk9SCQkgICAgIkVycmV1ciIKICAgIElEU19CQURfS0VZCQkgICAgIk5lIHBldXQgcGFzIHF1ZXN0aW9ubmVyIGxhIGNs6SAnJXMnIgogICAgSURTX0JBRF9WQUxVRSAgICAgICAgICAgIk5lIHBldXQgcGFzIHF1ZXN0aW9ubmVyIGxhIHZhbGV1ciAnJXMnIgogICAgSURTX1VOU1VQUE9SVEVEX1RZUEUgICAgIk5lIHBldXQgcGFzIOlkaXRlciBkZXMgY2zpcyBkZSBjZSB0eXBlICglbGQpIgogICAgSURTX1RPT19CSUdfVkFMVUUgICAgICAgIkxhIHZhbGV1ciBlc3QgdHJvcCBncmFuZGUgKCVsZCkiCiAgICBJRFNfREVMRVRFX0JPWF9USVRMRSAgICAiQ29uZmlybWV6IGwnZWZmYWNlbWVudCBkZSB2YWxldXIiCiAgICBJRFNfREVMRVRFX0JPWF9URVhUICAgICAiynRlcyB2b3VzIHP7ciB2b3VzIHZvdWxleiBzdXBwcmltZXIgbGEgdmFsZXVyICclcyc/IgogICAgSURTX05FV0tFWSAgICAgICAgICAgICAgIk5vdXZlbGxlIENs6SAjJWQiCiAgICBJRFNfTkVXVkFMVUUgICAgICAgICAgICAiTm91dmVsbGUgVmFsZXVyICMlZCIKICAgIElEU19OT1RGT1VORCAgICAgICAgICAgICJPY2N1cmVuY2UgZGUgJyVzJyBub24gdHJvdXbpZSIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0ZJTEVESUFMT0dfSU1QT1JUX1RJVExFICAgIkltcG9ydGVyIHVuIGZpY2hpZXIgZGUgcmVnaXN0cmUiCiAgICBJRFNfRklMRURJQUxPR19FWFBPUlRfVElUTEUgICAiRXhwb3J0ZXIgdW4gZmljaGllciBkZSByZWdpc3RyZSIKICAgIElEU19GSUxFRElBTE9HX0ZJTFRFUiAgICAgICAgICJGaWNoaWVycyBkZSByZWdpc3RyZXNcMCoucmVnXDBGaWNoaWVycyBkZSByZWdpc3RyZXMgV2luOXgvTlQ0IChSRUdFRElUNClcMCoucmVnXDBUb3VzIGxlcyBmaWNoaWVycyAoKi4qKVwwKi4qXDBcMCIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX1JFR0lTVFJZX1JPT1RfTkFNRSAgICAgICAgICAgIlBvc3RlIGRlIHRyYXZhaWwiCiAgICBJRFNfUkVHSVNUUllfREVGQVVMVF9WQUxVRSAgICAgICAiKHBhciBk6WZhdXQpIgogICAgSURTX1JFR0lTVFJZX1ZBTFVFX05PVF9TRVQgICAgICAgIih2YWxldXIgbm9uIGTpZmluaWUpIgogICAgSURTX1JFR0lTVFJZX1ZBTFVFX0NBTlRfRElTUExBWSAgIihpbXBvc3NpYmxlIGQnYWZmaWNoZXIgbGEgdmFsZXVyKSIKICAgIElEU19SRUdJU1RSWV9VTktOT1dOX1RZUEUgICAgICAgICIoJWQgaW5jb25udSkiCkVORAoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLyoKICogVEVYVElOQ0xVREUKICovCgoxIFRFWFRJTkNMVURFIERJU0NBUkRBQkxFCkJFR0lOCiAgICAicmVzb3VyY2UuaFwwIgpFTkQKCgoKLyoKICogU3RyaW5nIFRhYmxlCiAqLwoKLyoKICpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQogKkJFR0lOCiAqICAgIElEX0hFTFBfSEVMUFRPUElDUyAgICAgICJPdXZyZSBsJ2FpZGUgZGUgbCfpZGl0ZXVyIGRlIHJlZ2lzdHJlcy4iCiAqICAgIElEX0hFTFBfQUJPVVQgICAgICAgICAgICJBZmZpY2hlIGRlIGwnaW5mb3JtYXRpb24gc3VyIGxlIHByb2dyYW1tZSwgbGUgbnVt6XJvIGRlIHZlcnNpb24gZXQgbGUgY29weXJpZ2h0LiIKICpFTkQKICovCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCg==