LyoKICogQ29weXJpZ2h0IDIwMDIgUm9rIE1hbmRlbGpjIDxyb2subWFuZGVsamNAZ2ltYi5vcmc+CiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKgogKiBUT0RPOgogKgl0cmFuc2xhdGUgZm9sbG93aW5nIHN0cmluZ3M6CiAqCQlNSURJRVJSX05PTUFQCiAqCQlNSURJRVJSX05PREVWSUNFCiAqCQlNSURJRVJSX0lOVkFMSURTRVRVUAogKgkJTUNJRVJSX0VYVEVOU0lPTl9OT1RfRk9VTkQKICoJCU1DSUVSUl9TRVFfTk9NSURJUFJFU0VOVAogKgkJTUNJRVJSX1NFUV9QT1JUX01JU0NFUlJPUgogKgkJTUNJRVJSX1NFUV9QT1JUVU5TUEVDSUZJRUQKICoJCU1DSUVSUl9TRVFfVElNRVIKICovCgpTVFJJTkdUQUJMRSBMQU5HVUFHRSBMQU5HX1NMT1ZFTklBTiwgU1VCTEFOR19ERUZBVUxUCkJFR0lOCgovKiBNTVNZUyBlcnJvcnMgKi8KTU1TWVNFUlJfTk9FUlJPUiwgCQkiTmF2ZWRlbmkgdWtheiBqZSBiaWwgaXp2ZWRlbi4iCk1NU1lTRVJSX0VSUk9SLCAJCSJOYXZlZGVuaSB1a2F6IGplIGJpbCBpenZlZGVuLiIKTU1TWVNFUlJfQkFEREVWSUNFSUQsIAkJIlVwb3JhYmxqZW5hIGlkZW50aWZpa2FjaWpza2Egb3puYWthIG5hcHJhdmUgamUgenVuYWogZG9wdXN0bmVnYSBvYnNlZ2EgemEgdmG5IHNpc3RlbS4iCk1NU1lTRVJSX05PVEVOQUJMRUQsIAkJIkdvbmlsbmlrIG5pIGJpbCBvbW9nb+hlbi4iCk1NU1lTRVJSX0FMTE9DQVRFRCwgCQkiTmF2ZWRlbmEgbmFwcmF2YSBqZSC+ZSB2IHVwb3JhYmkuIFBv6GFrYWp0ZSwgZGEgYm8gc3BldCBwcm9zdGEsIGluIHBvc2t1c2l0ZSB6bm92YS4iCk1NU1lTRVJSX0lOVkFMSEFORExFLCAJCSJOYXZlZGVuYSBrb2RhIHphIGRvc3RvcCBkbyBuYXByYXZlIG5pIHZlbGphdm5hLiIKTU1TWVNFUlJfTk9EUklWRVIsIAkJIk5vYmVuIGdvbmlsbmlrIG5pIG5hbWW56GVuICFcbiIKTU1TWVNFUlJfTk9NRU0sIAkJIlphIHRvIG9wcmF2aWxvIG5pIG5hIHZvbGpvIGRvdm9saiBwb21uaWxuaWthLiBLb27oYWp0ZSBlbmVnYSBhbGkgdmXoIHByb2dyYW1vdiBpbiBwb3NrdXNpdGUgem5vdmEuIgpNTVNZU0VSUl9OT1RTVVBQT1JURUQsIAkJIlRhIGZ1bmtjaWphIG5pIHBvZHBydGEuIMhlIL5lbGl0ZSB1Z290b3ZpdGksIGthdGVyZSBmdW5rY2lqZSBwb2RwaXJhIGdvbmlsbmlrLCB1cG9yYWJpdGUgbW++bm9zdCC7RnVua2NpamWrLiIKTU1TWVNFUlJfQkFERVJSTlVNLCAJCSJOYXZlZGVuYSBqZSBiaWxhILl0ZXZpbGthIG5hcGFrZSwga2kgdiBzaXN0ZW11IG5pIGRlZmluaXJhbmEuIgpNTVNZU0VSUl9JTlZBTEZMQUcsIAkJIlNpc3RlbXNrYSBmdW5rY2lqYSBqZSBwcmVqZWxhIG5ldmVsamF2bm8gemFzdGF2aWNvLiIKTU1TWVNFUlJfSU5WQUxQQVJBTSwgCQkiU2lzdGVtc2thIGZ1bmtjaWphIGplIHByZWplbGEgbmV2ZWxqYXZlbiBwYXJhbWV0ZXIuIgoKLyogV0FWRSBlcnJvcnMgKi8KV0FWRVJSX0JBREZPUk1BVCwgCQkiTmF2ZWRlbmEgb2JsaWthIHphcGlzYSBuaSBwb2RwcnRhIGFsaSBwYSBqZSBuaSBtb2dv6GUgcHJldmVzdGkuIMhlIL5lbGl0ZSB1Z290b3ZpdGksIGthdGVyZSBvYmxpa2Ugc28gcG9kcHJ0ZSwgdXBvcmFiaXRlIG1vvm5vc3Qgu0Z1bmtjaWplqy4iCldBVkVSUl9TVElMTFBMQVlJTkcsIAkJIlByZWR2YWphbmplILllIHRyYWphLiBQb25hc3Rhdml0ZSBuYXByYXZvIGFsaSBwYSBwb+hha2FqdGUgZG8ga29uY2EgcHJlZHZhamFuamEuIgpXQVZFUlJfVU5QUkVQQVJFRCwgCQkiR2xhdmEgcG9kYXRrb3YgdnJzdGUgd2F2ZSBuaSBiaWxhIHByaXByYXZsamVuYS4gUHJpcHJhdml0ZSBnbGF2bywgdGFrbyBkYSB1cG9yYWJpdGUgZnVua2Npam8gu1ByaXByYXZpqyAoUHJlcGFyZSksIGluIHBvc2t1c2l0ZSB6bm92YS4iCldBVkVSUl9TWU5DLCAJCQkiQnJleiB6YXN0YXZpY2UgV0FWRV9BTExPV1NZTkMgbmkgbW9nb+hlIG9kcHJldGkgbmFwcmF2ZS4gVXBvcmFiaXRlIGpvIGluIHBvc2t1c2l0ZSB6bm92YS4iCgovKiBNSURJIGVycm9ycyAqLwpNSURJRVJSX1VOUFJFUEFSRUQsIAkJIk1JREkgZ2xhdmEgbmkgYmlsYSBwcmlwcmF2bGplbmEuIFByaXByYXZpdGUgZ2xhdm8sIHRha28gZGEgdXBvcmFiaXRlIGZ1bmtjaWpvILtQcmlwcmF2aasgKFByZXBhcmUpLCBpbiBwb3NrdXNpdGUgem5vdmEuIgpNSURJRVJSX1NUSUxMUExBWUlORywgCQkiUHJlZHZhamFuamUguWUgdHJhamEuIFBvbmFzdGF2aXRlIG5hcHJhdm8gYWxpIHBhIHBv6GFrYWp0ZSBkbyBrb25jYSBwcmVkdmFqYW5qYS4iCk1JRElFUlJfTk9NQVAsIAkJCSJBIE1JREkgbWFwIHdhcyBub3QgZm91bmQuIFRoZXJlIG1heSBiZSBhIHByb2JsZW0gd2l0aCB0aGUgZHJpdmVyLCBvciB0aGUgTUlESU1BUC5DRkcgZmlsZSBtYXkgYmUgY29ycnVwdCBvciBtaXNzaW5nLiIKTUlESUVSUl9OT1RSRUFEWSwgCQkiUHJlayB2cmF0IHBvdGVrYSBwcmVub3MgcG9kYXRrb3YgZG8gbmFwcmF2ZS4gUG/oYWthanRlLCBkYSBzZSBwcmVub3Mga29u6GEgaW4gcG9za3VzaXRlIHpub3ZhLiIKTUlESUVSUl9OT0RFVklDRSwgCQkiVGhlIGN1cnJlbnQgTUlESSBNYXBwZXIgc2V0dXAgcmVmZXJzIHRvIGEgTUlESSBkZXZpY2UgdGhhdCBpcyBub3QgaW5zdGFsbGVkIG9uIHRoZSBzeXN0ZW0uIFVzZSBNSURJIE1hcHBlciB0byBlZGl0IHRoZSBzZXR1cC4iCk1JRElFUlJfSU5WQUxJRFNFVFVQLCAJCSJUaGUgY3VycmVudCBNSURJIHNldHVwIGlzIGRhbWFnZWQuIENvcHkgdGhlIG9yaWdpbmFsIE1JRElNQVAuQ0ZHIGZpbGUgdG8gdGhlIFdpbmRvd3MgU1lTVEVNIGRpcmVjdG9yeSwgYW5kIHRoZW4gdHJ5IGFnYWluLiIKCi8qIE1DSSBlcnJvcnMgKi8KTUNJRVJSX0lOVkFMSURfREVWSUNFX0lELCAJIk5ldmVsamF2bmEgaWRlbnRpZmlrYWNpanNrYSBvem5ha2EgTUNJIG5hcHJhdmUuIFVwb3JhYml0ZSBvem5ha28sIGtpIGpvIHZybmUgb2RwaXJhbmplIE1DSSBuYXByYXZlLiIKTUNJRVJSX1VOUkVDT0dOSVpFRF9LRVlXT1JELCAJIk5hdmVkZW4gcGFyYW1ldGVyIHVrYXphIG5pIGRlZmluaXJhbiB2IG5hYm9ydSBNQ0kgdWthem92LiIKTUNJRVJSX1VOUkVDT0dOSVpFRF9DT01NQU5ELAkiTmF2ZWRlbiB1a2F6IG5pIHZlbGphdmVuIE1DSSB1a2F6LiIKTUNJRVJSX0hBUkRXQVJFLCAJCSJTIHByZWRzdGF2bm9zdG5vIG5hcHJhdm8gc28gdGW+YXZlLiBQcmV2ZXJpdGUsIGFsaSBuYXByYXZhIGRlbHVqZSBwcmF2aWxubyBhbGkgcGEgc2UgcG9zdmV0dWp0ZSB6IGl6ZGVsb3ZhbGNlbS4iCk1DSUVSUl9JTlZBTElEX0RFVklDRV9OQU1FLCAJIlRvIG5pIHJlZ2lzdHJpcmFuYSBNQ0kgbmFwcmF2YS4iCk1DSUVSUl9PVVRfT0ZfTUVNT1JZLCAJCSJaYSB0byBvcHJhdmlsbyBuaSBuYSB2b2xqbyBkb3ZvbGogcG9tbmlsbmlrYS4gXG5Lb27oYWp0ZSBlbmVnYSBhbGkgdmXoIHByb2dyYW1vdiBpbiBwb3NrdXNpdGUgem5vdmEuIgpNQ0lFUlJfREVWSUNFX09QRU4sIAkJIlRhIHByb2dyYW0gvmUgdXBvcmFibGphIHRhIHZ6ZGV2ZWsuIE5hbWVzdG8gaW1lbmEgbmFwcmF2ZSB1cG9yYWJpdGUguWUgbmV1cG9yYWJsamVuICB2emRldmVrLiIKTUNJRVJSX0NBTk5PVF9MT0FEX0RSSVZFUiwgCSJOYXByYXZlIG5pIGJpbG8gbW9nb+hlIG5hbG++aXRpLiBQcmV2ZXJpdGUsIGFsaSBqZSBnb25pbG5payBwcmF2aWxubyBuYW1luehlbi4iCk1DSUVSUl9NSVNTSU5HX0NPTU1BTkRfU1RSSU5HLCAJIlVrYXpuaSBuaXogamUgcHJhemVuLiIKTUNJRVJSX1BBUkFNX09WRVJGTE9XLCAJCSJJemhvZG5pIG5peiBqZSBiaWwgcHJldmVsaWssIGRhIGJpIGdhIGJpbG8gbW9nb+hlIHNocmFuaXRpIHYgcG92cmF0bmkgbWVkcG9tbmlsbmlrLiBQb3Zl6GFqdGUgbWVkcG9tbmlsbmlrLiIKTUNJRVJSX01JU1NJTkdfU1RSSU5HX0FSR1VNRU5ULCAiTmF2ZWRlbmkgdWtheiB6YWh0ZXZhIHBhcmFtZXRlciAobml6IHpuYWtvdikuIFZuZXNpdGUgZ2EuIgpNQ0lFUlJfQkFEX0lOVEVHRVIsIAkJIlZuZXNlbm8gY2VsbyC5dGV2aWxvIHphIHRhIHVrYXogbmkgdmVsamF2bm8uIFZuZXNpdGUguXRldmlsby4iCk1DSUVSUl9QQVJTRVJfSU5URVJOQUwsIAkiR29uaWxuaWsgemEgbmFwcmF2byBqZSB2cm5pbCBuZXZlbGphdm5vIHZyc3RvIHZyZWRub3N0aS4gT2QgaXpkZWxvdmFsY2EgbmFwcmF2ZSBwb3NrdXNpdGUgZG9iaXRpIG5vdiBnb25pbG5pay4iCk1DSUVSUl9EUklWRVJfSU5URVJOQUwsIAkiWiBnb25pbG5pa29tIHphIG5hcHJhdm8gc28gdGW+YXZlLiBPZCBpemRlbG92YWxjYSBuYXByYXZlIHBvc2t1c2l0ZSBkb2JpdGkgbm92IGdvbmlsbmlrLiIKTUNJRVJSX01JU1NJTkdfUEFSQU1FVEVSLCAJIlYgbmF2ZWRlbmVtIHVrYXp1IG1hbmprYSBwYXJhbWV0ZXIuIFZuZXNpdGUgZ2EuIgpNQ0lFUlJfVU5TVVBQT1JURURfRlVOQ1RJT04sIAkiTUNJIG5hcHJhdmEsIGtpIGpvIHVwb3JhYmxqYXRlLCBuZSBwb2RwaXJhIG5hdmVkZW5lZ2EgdWthemEuIgpNQ0lFUlJfRklMRV9OT1RfRk9VTkQsIAkJIk5hdmVkZW5lIGRhdG90ZWtlIG5pIG1vZ2/oZSBuYWp0aS4gUHJldmVyaXRlLCBhbGkgc3RlIHByYXZpbG5vIHZuZXNsaSBpbWUgaW4gcG90IGRvIGRhdG90ZWtlLiIKTUNJRVJSX0RFVklDRV9OT1RfUkVBRFksIAkiR29uaWxuaWsgemEgbmFwcmF2byBuaSBwcmlwcmF2bGplbi4gTWFsbyBwb+hha2FqdGUgaW4gbmF0byBwb3NrdXNpdGUgem5vdmEuIgpNQ0lFUlJfSU5URVJOQUwsIAkJIlByaSBpbmljaWFsaXphY2lqaSBNQ0kgbmFwcmF2ZSBqZSBwcmm5bG8gZG8gdGW+YXYuIFpub3ZhIHphvmVuaXRlIFdpbmRvd3MuIgpNQ0lFUlJfRFJJVkVSLCAJCQkiWmFyYWRpIG5hcGFrZSwgem5h6GlsbmUgemEgZ29uaWxuaWssIGplIGJpbCBnb25pbG5payB6YXBydC4gUG9ub3ZpdGUgdWthei4iCk1DSUVSUl9DQU5OT1RfVVNFX0FMTCwgCQkiViB0ZW0gdWthenUgdXBvcmFiaXRlIGltZSB0b+hubyBkb2xv6GVuZSBuYXByYXZlLiIKTUNJRVJSX01VTFRJUExFLCAJCSJWIHZl6CBuYXByYXZhaCBqZSBwcmm5bG8gZG8gbmFwYWsuIExv6GVubyB2bmVzaXRlIHZzYWsgdWtheiBpbiB2c2FrbyBuYXByYXZvLiBUYWtvIGJvc3RlIGxhaGtvIHVnb3RvdmlsaSwga2F0ZXJlIG5hcHJhdmUgcG92enJv6GFqbyBuYXBha2UuIgpNQ0lFUlJfRVhURU5TSU9OX05PVF9GT1VORCwgCSJDYW5ub3QgZGV0ZXJtaW5lIHRoZSBkZXZpY2UgdHlwZSBmcm9tIHRoZSBnaXZlbiBmaWxlbmFtZSBleHRlbnNpb24uIgpNQ0lFUlJfT1VUT0ZSQU5HRSwgCQkiUGFyYW1ldGVyIGplIHp1bmFqIGRvdm9samVuZWdhIG9ic2VnYSB6YSBuYXZlZGVuIHVrYXouIgpNQ0lFUlJfRkxBR1NfTk9UX0NPTVBBVElCTEUsIAkiTmF2ZWRlbmloIHBhcmFtZXRyb3YgbmUgc21ldGUgdXBvcmFiaXRpIGhrcmF0aS4iCk1DSUVSUl9GSUxFX05PVF9TQVZFRCwgCQkiTmF2ZWRlbmUgZGF0b3Rla2UgbmkgbW9nb+hlIHNocmFuaXRpLiBQcmV2ZXJpdGUsIGFsaSBqZSBuYSBkaXNrdSBkb3ZvbGogcHJvc3RvcmEgb3ouIGFsaSBqZSB2YbkgcmHodW5hbG5payC5ZSBwb3ZlemFuIHogb21yZb5qZW0uIgpNQ0lFUlJfREVWSUNFX1RZUEVfUkVRVUlSRUQsIAkiTmF2ZWRlbmUgbmFwcmF2ZSBuaSBtb2dv6GUgbmFqdGkuIFByZXZlcml0ZSwgYWxpIGplIG5hcHJhdmEgbmFtZbnoZW5hIG96LiBhbGkgamUgYmlsbyBuamVubyBpbWUgcHJhdmlsbm8gbmF2ZWRlbm8uIgpNQ0lFUlJfREVWSUNFX0xPQ0tFRCwgCQkiUG90ZWthIHphcGlyYW5qZSBuYXZlZGVuZSBuYXByYXZlLiBNYWxvIHBv6GFrYWp0ZSBpbiBwb3NrdXNpdGUgem5vdmEuIgpNQ0lFUlJfRFVQTElDQVRFX0FMSUFTLCAJIlRhIHByb2dyYW0gvmUgdXBvcmFibGphIG5hdmVkZW5pIHZ6ZGV2ZWsuIFVwb3JhYml0ZSC5ZSBuZXVwb3JhYmxqZW4gdnpkZXZlay4iCk1DSUVSUl9CQURfQ09OU1RBTlQsIAkJIlVwb3JhYmxqZW5hIGtvbnN0YW50YSB2IHRlbSB1a2F6dSBuaSB2ZWxqYXZuYS4iCk1DSUVSUl9NVVNUX1VTRV9TSEFSRUFCTEUsIAkiR29uaWxuaWsgbmFwcmF2ZSBqZSC+ZSB2IHVwb3JhYmkuIMhlIGdhIL5lbGl0ZSBkYXRpIHYgc2t1cG5vIHJhYm8sIHogdnNha2ltIHVrYXpvbSC7b3BlbqsgdXBvcmFiaXRlIHBhcmFtZXRlciC7c2hhcmVhYmxlqy4iCk1DSUVSUl9NSVNTSU5HX0RFVklDRV9OQU1FLCAJIk5hdmVkZW5pIHVrYXogemFodGV2YSB2emRldmVrLCBkYXRvdGVrbywgZ29uaWxuaWsgYWxpIGltZSBuYXByYXZlLiBWbmVzaXRlIHVzdHJlem5vIGltZS4iCk1DSUVSUl9CQURfVElNRV9GT1JNQVQsIAkiTmF2ZWRlbmEgdnJlZG5vc3QgemEgb2JsaWtvIHphcGlzYSDoYXNhIG5pIHZlbGphdm5hLiBWZWxqYXZuZSBvYmxpa2UgcG9puehpdGUgdiBkb2t1bWVudGFjaWppIE1DSSBuYXByYXZlLiIKTUNJRVJSX05PX0NMT1NJTkdfUVVPVEUsIAkiViB2cmVkbm9zdGkgemEgcGFyYW1ldGVyIG1hbmprYSB6YWtsanXobmkgZHZvam5pIG5hcmVrb3Zhai4gVm5lc2l0ZSBnYS4iCk1DSUVSUl9EVVBMSUNBVEVfRkxBR1MsIAkiUGFyYW1ldGVyIGFsaSB2cmVkbm9zdCBzdGUgbmF2ZWRsaSBkdmFrcmF0LiBOYXZlZGl0ZSBnYSBzYW1vIGVua3JhdC4iCk1DSUVSUl9JTlZBTElEX0ZJTEUsIAkJIlRlIGRhdG90ZWtlIG5lIG1vcmV0ZSBwcmVkdmFqYXRpIHogbmF2ZWRlbm8gTUNJIG5hcHJhdm8uIERhdG90ZWthIGplIG1vcmRhIHBvuWtvZG92YW5hIGFsaSBwYSBpbWEgbmFwYehubyBvYmxpa28gemFwaXNhLiIKTUNJRVJSX05VTExfUEFSQU1FVEVSX0JMT0NLLCAJIk1DSSBuYXByYXZpIGplIGJpbCBwcmVkYW4gu251bGwgcGFyYW1ldGVyIGJsb2Nrqy4iCk1DSUVSUl9VTk5BTUVEX1JFU09VUkNFLCAJIkRhdG90ZWtlIGJyZXogaW1lbmEgbmkgbW9nb+hlIHNocmFuaXRpLiBWbmVzaXRlIGltZS4iCk1DSUVSUl9ORVdfUkVRVUlSRVNfQUxJQVMsIAkiS28gdXBvcmFibGphdGUgcGFyYW1ldGVyILtuZXerLCBtb3JhdGUgbmF2ZXN0aSB2emRldmVrLiIKTUNJRVJSX05PVElGWV9PTl9BVVRPX09QRU4sIAkiWmFzdGF2aWNlILtub3RpZnmrIG5pIG1vZ2/oZSB1cG9yYWJpdGkgcHJpIG5hcHJhdmFoLCBraSBzZSBzYW1vZGVqbm8gb2RwaXJham8uIgpNQ0lFUlJfTk9fRUxFTUVOVF9BTExPV0VELCAJIlYgcG92ZXphdmkgeiBuYXZlZGVubyBuYXByYXZvIG5lIG1vcmV0ZSB1cG9yYWJpdGkgaW1lbmEgZGF0b3Rla2UuIgpNQ0lFUlJfTk9OQVBQTElDQUJMRV9GVU5DVElPTiwgCSJVa2F6b3YgdiBuYXZlZGVuZW0gemFwb3JlZGp1IG5pIG1vZ2/oZSBpenZlc3RpLiBTcHJlbWVuaXRlIHphcG9yZWRqZSBpbiBwb3NrdXNpdGUgem5vdmEuIgpNQ0lFUlJfSUxMRUdBTF9GT1JfQVVUT19PUEVOLCAJIlVrYXphIG5pIG1vZ2/oZSBpenZlc3RpIHYgcG92ZXphdmkgeiBuYXByYXZvLCBraSBzZSBzYW1vZGVqbm8gb2RwcmUuIFBv6GFrYWp0ZSwgZGEgc2UgbmFwcmF2YSB6YXByZSwgaW4gcG9za3VzaXRlIHpub3ZhLiIKTUNJRVJSX0ZJTEVOQU1FX1JFUVVJUkVELCAJIkltZSBkYXRvdGVrZSBuaSB2ZWxqYXZuby4iCk1DSUVSUl9FWFRSQV9DSEFSQUNURVJTLCAJIlphIG5pem9tIHpuYWtvdiwga2kgamUgb2JkYW4geiBuYXJla292YWppLCBuaSBtb2dv6GUgemFwaXNhdGkgZG9kYXRuaWggem5ha292LiIKTUNJRVJSX0RFVklDRV9OT1RfSU5TVEFMTEVELCAJIk5hcHJhdmEgbmkgbmFtZbnoZW5hLiDIZSC+ZWxpdGUgbmFtZXN0aXRpIG5vdiBnb25pbG5paywgbmEgbmFkem9ybmkgcGxvuehpIGR2b2tsaWtuaXRlIGlrb25vILtEb2RhamFuamUgc3Ryb2puZSBvcHJlbWWrLiIKTUNJRVJSX0dFVF9DRCwgCQkJIkRvc3RvcCBkbyBuYXZlZGVuZSBkYXRvdGVrZSBhbGkgTUNJIG5hcHJhdmUgbmkgbW9nb+guIFphbWVuamFqdGUgaW1lbmlrIGFsaSBwYSB6bm92YSB6Yb5lbml0ZSByYeh1bmFsbmlrLiIKTUNJRVJSX1NFVF9DRCwgCQkJIkRvc3RvcCBkbyBuYXZlZGVuZSBkYXRvdGVrZSBhbGkgTUNJIG5hcHJhdmUgbmkgbW9nb+gsIGtlciBwcm9ncmFtIG5lIG1vcmUgemFtZW5qYXRpIGltZW5pa2EuIgpNQ0lFUlJfU0VUX0RSSVZFLCAJCSJEb3N0b3AgZG8gbmF2ZWRlbmUgZGF0b3Rla2UgYWxpIE1DSSBuYXByYXZlIG5pIG1vZ2/oLCBrZXIgcHJvZ3JhbSBuZSBtb3JlIHphbWVuamF0aSBwb2dvbmEuIgpNQ0lFUlJfREVWSUNFX0xFTkdUSCwgCQkiTmF2ZWRpdGUgaW1lIHphIG5hcHJhdm8gYWxpIGdvbmlsbmlrLCBraSBqZSBrcmFquWUgb2QgNzkgem5ha292LiIKTUNJRVJSX0RFVklDRV9PUkRfTEVOR1RILCAJIk5hdmVkaXRlIGltZSB6YSBuYXByYXZvIGFsaSBnb25pbG5paywga2kgamUga3JharllIG9kIDY5IHpuYWtvdi4iCk1DSUVSUl9OT19JTlRFR0VSLCAJCSJOYXZlZGVuaSB1a2F6IHphaHRldmEguXRldmls6G5pIHBhcmFtZXRlciAobnByLiC7cGxheSB0byAxMKspLiBWbmVzaXRlIGdhLiIKTUNJRVJSX1dBVkVfT1VUUFVUU0lOVVNFLCAJIlZzZSBuYXByYXZlLCBraSBsYWhrbyBwcmVkdmFqYWpvIGRhdG90ZWtlIHYgb2JsaWtpIHdhdmUsIHNvIHYgdXBvcmFiaS4gUG9za3VzaXRlIHpub3ZhLCBrbyBibyBrYXRlcmEgb2QgbmppaCBuYSB2b2xqby4iCk1DSUVSUl9XQVZFX1NFVE9VVFBVVElOVVNFLCAJIlRyZW51dG5hIHdhdmUgbmFwcmF2YSBqZSB2IHVwb3JhYmkuIFBv6GFrYWp0ZSwgZGEgYm8gcHJvc3RhLCBpbiBwb3NrdXNpdGUgem5vdmEuIgpNQ0lFUlJfV0FWRV9JTlBVVFNJTlVTRSwgCSJWc2UgbmFwcmF2ZSwga2kgbGFoa28gc25lbWFqbyBkYXRvdGVrZSB2IG9ibGlraSB3YXZlLCBzbyB2IHVwb3JhYmkuIFBvc2t1c2l0ZSB6bm92YSwga28gYm8ga2F0ZXJhIG9kIG5qaWggbmEgdm9sam8uIgpNQ0lFUlJfV0FWRV9TRVRJTlBVVElOVVNFLCAJIlRyZW51dG5hIHdhdmUgbmFwcmF2YSBqZSB2IHVwb3JhYmkuIFBv6GFrYWp0ZSwgZGEgYm8gcHJvc3RhLCBpbiBwb3NrdXNpdGUgem5vdmEuIgpNQ0lFUlJfV0FWRV9PVVRQVVRVTlNQRUNJRklFRCwJIlByZWR2YWphbG5hIG5hcHJhdmEgamUgdiB1cG9yYWJpLiBQb3NrdXNpdGUgem5vdmEsIGtvIGJvIHByZWR2YWphbmplIGtvbuhhbm8uIgpNQ0lFUlJfV0FWRV9JTlBVVFVOU1BFQ0lGSUVELCAJIlNuZW1hbG5hIG5hcHJhdmEgamUgdiB1cG9yYWJpLiBQb3NrdXNpdGUgem5vdmEsIGtvIGJvIHNuZW1hbmplIGtvbuhhbm8uIgpNQ0lFUlJfV0FWRV9PVVRQVVRTVU5TVUlUQUJMRSwgCSJOYW1luehlbmEgbmkgbm9iZW5hIG5hcHJhdmEgemEgd2F2ZSwga2kgYmkgbGFoa28gcHJlZHZhamFsYSBkYXRvdGVrZSB2IHRyZW51dG5pIG9ibGlraS4iCk1DSUVSUl9XQVZFX1NFVE9VVFBVVFVOU1VJVEFCTEUsIk5hcHJhdmEgbmUgcHJlcG96bmEgdHJlbnV0bmUgb2JsaWtlIHphcGlzYSBkYXRvdGVrZS4gSXpiZXJpdGUgZHJ1Z28gbmFwcmF2byBpbiBwb3NrdXNpdGUgem5vdmEuIgpNQ0lFUlJfV0FWRV9JTlBVVFNVTlNVSVRBQkxFLCAJIk5hbWW56GVuYSBuaSBub2JlbmEgbmFwcmF2YSB6YSB3YXZlLCBraSBiaSBsYWhrbyBzbmVtYWxhIGRhdG90ZWtlIHYgdHJlbnV0bmkgb2JsaWtpLiIKTUNJRVJSX1dBVkVfU0VUSU5QVVRVTlNVSVRBQkxFLCAiTmFwcmF2YSBuZSBwcmVwb3puYSB0cmVudXRuZSBvYmxpa2UgemFwaXNhIGRhdG90ZWtlLiBJemJlcml0ZSBkcnVnbyBuYXByYXZvIGluIHBvc2t1c2l0ZSB6bm92YS4iCk1DSUVSUl9OT19XSU5ET1csIAkJIk5pIG9rbmEgemEgcHJpa2F6LiIKTUNJRVJSX0NSRUFURVdJTkRPVywgCQkiT2tuYSBuaSBiaWxvIG1vZ2/oZSB1c3R2YXJpdGkgYWxpIHVwb3JhYml0aS4iCk1DSUVSUl9GSUxFX1JFQUQsIAkJIlRlIGRhdG90ZWtlIG5pIG1vZ2/oZSBicmF0aS4gUHJldmVyaXRlLCBhbGkgbmkgYmlsYSBtb3JkYSBpemJyaXNhbmEuIFByZXZlcml0ZSB0dWRpIHN2b2ogZGlzayBpbiBvbXJlvm5lIHBvdmV6YXZlLiIKTUNJRVJSX0ZJTEVfV1JJVEUsIAkJIlYgbmF2ZWRlbm8gZGF0b3Rla28gbmkgbW9nb+hlIHBpc2F0aS4gUHJldmVyaXRlLCBhbGkgamUgbmEgZGlza3UguWUgZG92b2xqIHByb3N0b3JhIG96LiBhbGkgamUgdmG5IHJh6HVuYWxuaWsguWUgcG92ZXphbiB6IG9tcmW+amVtLiIKTUNJRVJSX1NFUV9ESVZfSU5DT01QQVRJQkxFLCAJIkhrcmF0aSBuaSBtb2dv6GUgdXBvcmFiaXRpIG9ibGlrIHphcGlzYSDoYXNhILtzb25nLXBvaW50ZXKrIGluIFNNUFRFLiIKTUNJRVJSX1NFUV9OT01JRElQUkVTRU5ULCAJIlRoZSBzeXN0ZW0gaGFzIG5vIGluc3RhbGxlZCBNSURJIGRldmljZXMuIFVzZSB0aGUgRHJpdmVycyBvcHRpb24gZnJvbSB0aGUgQ29udHJvbCBQYW5lbCB0byBpbnN0YWxsIGEgTUlESSBkcml2ZXIuIgpNQ0lFUlJfU0VRX1BPUlRfSU5VU0UsIAkJIk5hdmVkZW5hIE1JREkgbmFwcmF2YSBqZSC+ZSB2IHVwb3JhYmkuIFBv6GFrYWp0ZSwgZGEgYm8gcHJvc3RhLCBpbiBwb3NrdXNpdGUgem5vdmEuIgpNQ0lFUlJfU0VRX1BPUlRfTUFQTk9ERVZJQ0UsIAkiVGhlIGN1cnJlbnQgTUlESSBNYXBwZXIgc2V0dXAgcmVmZXJzIHRvIGEgTUlESSBkZXZpY2UgdGhhdCBpcyBub3QgaW5zdGFsbGVkIG9uIHRoZSBzeXN0ZW0uIFVzZSB0aGUgTUlESSBNYXBwZXIgb3B0aW9uIGZyb20gdGhlIENvbnRyb2wgUGFuZWwgdG8gZWRpdCB0aGUgc2V0dXAuIgpNQ0lFUlJfU0VRX1BPUlRfTUlTQ0VSUk9SLCAJIkFuIGVycm9yIG9jY3VycmVkIHdpdGggdGhlIHNwZWNpZmllZCBwb3J0LiIKTUNJRVJSX1NFUV9QT1JUX05PTkVYSVNURU5ULCAJIlRhIG5hcHJhdmEgbmkgbmFtZbnoZW5hLiDIZSC+ZWxpdGUgbmFtZXN0aXRpIG5vdiBnb25pbG5paywgbmEgbmFkem9ybmkgcGxvuehpIGR2b2tsaWtuaXRlIGlrb25vILtEb2RhamFuamUgc3Ryb2puZSBvcHJlbWWrLiIKTUNJRVJSX1NFUV9QT1JUVU5TUEVDSUZJRUQsIAkiVGhlIHN5c3RlbSBkb2Vzbm90IGhhdmUgYSBjdXJyZW50IE1JREkgcG9ydCBzcGVjaWZpZWQuIgpNQ0lFUlJfU0VRX1RJTUVSLCAJCSJBbGwgbXVsdGltZWRpYSB0aW1lcnMgYXJlIGJlaW5nIHVzZWQgYnkgb3RoZXIgYXBwbGljYXRpb25zLiBRdWl0IG9uZSBvZiB0aGVzZSBhcHBsaWNhdGlvbnM7IHRoZW4sIHRyeSBhZ2Fpbi4iCgpFTkQK