LyoKICogUmVnZWRpdCBCdWxnYXJpYW4gcmVzb3VyY2VzCiAqCiAqIENvcHlyaWdodCAyMDA1IE1pbGtvIEtyYWNob3Vub3YKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI2luY2x1ZGUgInJlc291cmNlLmgiCgpMQU5HVUFHRSBMQU5HX0JVTEdBUklBTiwgU1VCTEFOR19ERUZBVUxUCgovKlNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9GQVZPUklURVNfQUREVE9GQVZPUklURVMgIsTu4eDi/yDq6/737uLlIOr67CDx7+jx+urgIPEg7vLs5fLq6PLlIgogICAgSURfRkFWT1JJVEVTX1JFTU9WRUZBVk9SSVRFICLP8OXs4PXi4CDq6/737uLlIO7yIPHv6PH66uAg8SDu8uzl8uro8uUiCkVORCovCgpJRFJfUkVHRURJVF9NRU5VIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICAgIFBPUFVQICIm0OXj6PHy+vAiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImwuz66u3oIPTg6esg4iDw5ePo8fL68OAuLi4iLCAgICBJRF9SRUdJU1RSWV9JTVBPUlRSRUdJU1RSWUZJTEUKICAgICAgICBNRU5VSVRFTSAiJsjn7eXx6CD04OnrIO7yIPDl4+jx8vrw4C4uLiIsICAgIElEX1JFR0lTVFJZX0VYUE9SVFJFR0lTVFJZRklMRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICIm0eL68OboIPHlIPEg7PDl5u7iIPDl4+jx8vrwLi4uIiwgSURfUkVHSVNUUllfQ09OTkVDVE5FVFdPUktSRUdJU1RSWSwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gIsjnJurr/vfoIOzw5ebu4iDw5ePo8fL68C4uLiIsIElEX1JFR0lTVFJZX0RJU0NPTk5FQ1RORVRXT1JLUkVHSVNUUlksIEdSQVlFRAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImz+X34PJcdEN0cmwrUCIsICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9QUklOVCwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIsjnJvXu5CIsICAgICAgICAgICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9FWElUCiAgICBFTkQKICAgIFBPUFVQICIm0OXk4Ory6PDg7eUiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImz/Du7OXt6CIsICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRlkKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBQT1BVUCAiJs3u4iIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAiJsrr/vciLCAgICAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0tFWQogICAgICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICAgICAgTUVOVUlURU0gIibS5erx8u7i4CDx8u7p7e7x8iIsICAgICAgICAgICAgICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIibE4u7o9+3gIPHy7unt7vHyIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJkRXT1JEIPHy7unt7vHyIiwgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJk11bHRpIFN0cmluZyBWYWx1ZSIsICAgICBJRF9FRElUX05FV19NVUxUSV9TVFJJTkdWQUxVRQogICAgICAgIEVORAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImyOfy8OjpXHREZWwiLCAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQogICAgICAgIE1FTlVJVEVNICLP8OXoJuzl7fPi4OlcdEYyIiwgICAgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIibK7u/o8ODpIOjs5fLuIO3gIOrr/vfgIiwgICAgICAgICAgICAgIElEX0VESVRfQ09QWUtFWU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJtL68PHoXHRDdHJsK0YiLCAgICAgICAgICAgICAgIElEX0VESVRfRklORCwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gIs3g7OXw6CAm8evl5OLg+Vx0RjMiLCAgICAgICAgICAgICAgSURfRURJVF9GSU5ETkVYVCwgR1JBWUVECiAgICBFTkQKICAgIFBPUFVQICImyOfj6+XkIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiy+Xt8uAg7eAgJvH68fLu/+3o5fLuIiwgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1RBVFVTQkFSCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIibQ4Ofk5evo8uXrIiwgICAgICAgICAgICAgICAgICAgICAgSURfVklFV19TUExJVAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImzuHt7uLoXHRGNSIsICAgICAgICAgICAgICAgIElEX1ZJRVdfUkVGUkVTSAogICAgRU5ECiAgICBQT1BVUCAiJs7y7OXy6ugiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImxO7h4OLoIOr67CDu8uzl8uro8uUiLCAgICAgICAgICBJRF9GQVZPUklURVNfQUREVE9GQVZPUklURVMKICAgICAgICBNRU5VSVRFTSAiJs/w5ezg9e3oIO7y7OXy6uAiLCAgICAgICAgICAgSURfRkFWT1JJVEVTX1JFTU9WRUZBVk9SSVRFCiAgICBFTkQKICAgIFBPUFVQICImz+7s7vkiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImz+7s7vnt6CDy5ezoXHRGMSIsICAgICAgICAgICAgSURfSEVMUF9IRUxQVE9QSUNTCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIibO8u3u8e3uIPDl5ODq8u7w4CDt4CDx6PHy5ezt6P8g8OXj6PHy+vAiLCAgICAgIElEX0hFTFBfQUJPVVQKICAgIEVORApFTkQKCklEUl9QT1BVUF9NRU5VUyBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgUE9QVVAgIiIKICBCRUdJTgoJTUVOVUlURU0gIibP8O7s5e3oIiwgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX01PRElGWQoJTUVOVUlURU0gIs/w7uzl7egg5OLu6Pft6PLlIOTg7e3oIiwgICAgICAgICAgSURfRURJVF9NT0RJRllfQklOCglNRU5VSVRFTSBTRVBBUkFUT1IKCU1FTlVJVEVNICImyOfy8OjpXHREZWwiLCAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQoJTUVOVUlURU0gIibP8OXo7OXt8+Lg6SIsICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICBFTkQKICBQT1BVUCAiIgogIEJFR0lOCiAgICAgICAgUE9QVVAgIibN7uIiCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIibK6/73IiwgICAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19LRVkKICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICAgIE1FTlVJVEVNICIm0uXq8fLu4uAg8fLu6e3u8fIiLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImxOLu6Pft4CDx8u7p7e7x8iIsICAgICAgICAgICAgICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZEV09SRCDx8u7p7e7x8iIsICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZNdWx0aSBTdHJpbmcgVmFsdWUiLCAgICAgSURfRURJVF9ORVdfTVVMVElfU1RSSU5HVkFMVUUKICAgICAgICBFTkQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJsjn8vDo6Vx0RGVsIiwgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiJs/w5ejs5e3z4uDpXHRGMiIsICAgICAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRXhwb3J0Li4uIiwgICAgICAgICAgICAgICAgICBJRF9FRElUX0VYUE9SVAogICAgICAgIE1FTlVJVEVNICImyu7v6PDg6SDo7OXy7iDt4CDq6/734CIsICAgICAgICAgICAgICBJRF9FRElUX0NPUFlLRVlOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIibS+vDx6Fx0Q3RybCtGIiwgICAgICAgICAgICAgICBJRF9FRElUX0ZJTkQsIEdSQVlFRAogIEVORApFTkQKCgovKgogKiBEaWFsb2cKICovCgpJRERfRklORCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA4NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAi0vrw8eXt5SIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICLS+vDx6DoiLElEQ19TVEFUSUMsNSw3LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNDAsNSwxMjUsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTAogICAgTFRFWFQgICAgICAgICAgICLS+vDx6CDiOiIsSURDX1NUQVRJQyw1LCAyMiwgMTE5LCA4CiAgICBDSEVDS0JPWCAgICAgICAgIsrr/vfu4uUiLCBJRENfRklORF9LRVlTLCA1LCAzNCwgOTAsIDEwLCBXU19UQUJTVE9QIHwgV1NfR1JPVVAgfCBCU19BVVRPQ0hFQ0tCT1gKICAgIENIRUNLQk9YICAgICAgICAiyOzl7eAg7eAg8fLu6e3u8fLoIiwgSURDX0ZJTkRfVkFMVUVTLCA1LCA0NiwgOTAsIDEwLCBXU19UQUJTVE9QIHwgQlNfQVVUT0NIRUNLQk9YCiAgICBDSEVDS0JPWCAgICAgICAgItH65Prw5uDt6OUg7eAg8fLu6e3u8fLoIiwgSURDX0ZJTkRfQ09OVEVOVCwgNSwgNTgsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IEJTX0FVVE9DSEVDS0JPWAogICAgQ0hFQ0tCT1ggICAgICAgICLS+vDx6CDn4CD25evo/yDt6OciLCBJRENfRklORF9XSE9MRSwgNSwgNzAsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IEJTX0FVVE9DSEVDS0JPWAogICAgREVGUFVTSEJVVFRPTiAgICLS+vDx6CIsSURPSywxNzUsNSwzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICLH4PLi7vDoIixJRENBTkNFTCwxNzUsMjIsMzAsMTEsIFdTX0dST1VQCkVORAoKSUREX0FEREZBVk9SSVRFIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDU1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICLE7uHg4ugg7vLs5fLq4CIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICLI7OU6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDQwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIs7y7OXt6CIsSURDQU5DRUwsMTc1LDQwLDMwLDExLCBXU19HUk9VUApFTkQKCklERF9ERUxGQVZPUklURSBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA5MApTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiz/Dl7OD17egg7vLs5fLq4CIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICLI7OU6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgTElTVEJPWCAgICAgICAgIElEQ19OQU1FX0xJU1QsNSwxNSwyMDAsNTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBMQlNfU09SVCB8IExCU19OT0lOVEVHUkFMSEVJR0hUIHwgV1NfVlNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsNzMsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAizvLs5e3oIixJRENBTkNFTCwxNzUsNzMsMzAsMTEsIFdTX0dST1VQCkVORAoKSUREX0VESVRfU1RSSU5HIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDc1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICLQ5eTg6vLo8ODpIPHo7OLu6+XtIO3o5yIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICLI7OUg7eAg8fLu6e3u8fLy4DoiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAixODt7eg6IixJRENfU1RBVElDLDUsMzAsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw2MCwzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICLO8uzl7egiLElEQ0FOQ0VMLDE3NSw2MCwzMCwxMSxXU19HUk9VUApFTkQKCklERF9FRElUX0RXT1JEIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMjAsIDEwMApTVFlMRSBEU19NT0RBTEZSQU1FIHwgRFNfTk9JRExFTVNHIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAi0OXk4Ory6PDg6SBEV09SRCIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICLI7OUg7eAg8fLu6e3u8fLy4DoiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMTAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAixODt7eg6IixJRENfU1RBVElDLDUsMzAsOTAsOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsOTAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKICAgIEdST1VQQk9YICAgICAgICAizvHt7uLgIiwgSURDX0RXT1JEX0JBU0UsIDEyMCwgMzAsIDk1LCAzNywgQlNfR1JPVVBCT1gKICAgIEFVVE9SQURJT0JVVFRPTiAi2OXx8uDt5eTl8eXy6Pft4CIsIElEQ19EV09SRF9IRVgsIDEzMCwgNDAsIDgwLCAxMCwgV1NfVEFCU1RPUAogICAgQVVUT1JBRElPQlVUVE9OICLE5fHl8uj37eAiLCBJRENfRFdPUkRfREVDLCAxMzAsIDUyLCA3MCwgMTAsIFdTX1RBQlNUT1AKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTUwLDgwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgIs7y7OXt6CIsSURDQU5DRUwsMTg1LDgwLDMwLDExLFdTX0dST1VQCkVORAoKSUREX0VESVRfQklOQVJZIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDEwMApTVFlMRSBEU19NT0RBTEZSQU1FIHwgRFNfTk9JRExFTVNHIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAi0OXk4Ory6PDg6SDk4u7o9+3gIPHy7unt7vHyIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIsjs5SDt4CDx8u7p7e7x8vLgOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICLE4O3t6DoiLElEQ19TVEFUSUMsNSwzMCw5MCw4CiAgICBDT05UUk9MICAgICAgICAgIiIsSURDX1ZBTFVFX0RBVEEsIkhleEVkaXQiLFdTX1RBQlNUT1AsNCw0MCwxNjAsNDAKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDgwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgIs7y7OXt6CIsSURDQU5DRUwsMTc1LDgwLDMwLDExLFdTX0dST1VQCkVORAoKLyoKICogU3RyaW5nIFRhYmxlCiAqLwoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19MSVNUX0NPTFVNTl9OQU1FICAgICLI7OUiCiAgICBJRFNfTElTVF9DT0xVTU5fVFlQRSAgICAi0ujvIgogICAgSURTX0xJU1RfQ09MVU1OX0RBVEEgICAgIsTg7e3oIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfQVBQX1RJVExFICAgICAgICAgICAi0OXk4Ory7vAg7eAg8ejx8uXs7ej/IPDl4+jx8vrwIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9SRUdJU1RSWV9NRU5VICAgICAgICAi0frk+vDm4CDq7uzg7eToIOfgIPPv8ODi6+Xt6OUg7eAg9uXr6P8g8OXj6PHy+vAiCiAgICBJRF9FRElUX01FTlUgICAgICAgICAgICAi0frk+vDm4CDq7uzg7eToIOfgIPDl5ODq8ujw4O3lIO3gIPHy7unt7vHy6CDo6+gg6uv+9+7i5SIKICAgIElEX1ZJRVdfTUVOVSAgICAgICAgICAgICLR+uT68ObgIOru7ODt5Ogg5+Ag7+Xw8e7t4Ovo5+jw4O3lIO3gIOL67fjt6P8g4ujkIO3gIPDl5ODq8u7w4CIKICAgIElEX0ZBVk9SSVRFU19NRU5VICAgICAgICLR+uT68ObgIOru7ODt5Ogg5+Ag5O7x8vrvIOTuIPfl8fLuIOjn7+7r5+Lg7egg6uv+9+7i5SIKICAgIElEX0hFTFBfTUVOVSAgICAgICAgICAgICLR+uT68ObgIOru7ODt5Ogg5+Ag6Ofi6Ori4O3lIO3gIO/u7O75IOfgIPDl5ODq8u7w4CDt4CDw5ePo8fL68OAiCiAgICBJRF9FRElUX05FV19NRU5VICAgICAgICAi0frk+vDm4CDq7uzg7eToIOfgIPH65+Tg4uDt5SDt4CDt7uLoIPHy7unt7vHy6CDo6+gg6uv+9+7i5SIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfRURJVF9NT0RJRlkgICAgICAgICAgIs/w7uzl7f8g5ODt7ejy5SDiIPHy7unt7vHy8uAiCiAgICBJRF9FRElUX05FV19LRVkgICAgICAgICAixO7h4OL/IO3u4iDq6/73IgogICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUgIsTu4eDi/yDt7uLgIPHy7unt7vHyIO7yIPLo7yDx6Ozi7uvl7SDt6OciCiAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRSAixO7h4OL/IO3u4uAg5OLu6Pft4CDx8u7p7e7x8iIKICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUgICLE7uHg4v8g7e7i4CBEV09SRCDx8u7p7e7x8iIKICAgIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRSAiwuz66uLgIPLl6vHy7uIg9ODp6yDiIPHo8fLl7O3o/yDw5ePo8fL68CIKICAgIElEX1JFR0lTVFJZX0VYUE9SVFJFR0lTVFJZRklMRQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIsfg7+jx4uAg9v/r7vLuIOjr6CD34PHyIO7yIPH65Prw5uDt6OXy7iDt4CDx6PHy5ezt6P8g8OXj6PHy+vAg4vriIPLl6vHy7uIg9ODp6yIKICAgIElEX1JFR0lTVFJZX0NPTk5FQ1RORVRXT1JLUkVHSVNUUlkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICLR4vrw5+LgIPHlIPH68SDx6PHy5ezt6P8g8OXj6PHy+vAg7eAg5PDz4yDq7uzv/vL68CIKICAgIElEX1JFR0lTVFJZX0RJU0NPTk5FQ1RORVRXT1JLUkVHSVNUUlkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICLP8OXq8ODy/+LgIOLw+ufq4PLgIPH68SDx6PHy5ezt6P8g8OXj6PHy+vAg7eAg5PDz4yDq7uzv/vL68CIKICAgIElEX1JFR0lTVFJZX1BSSU5UICAgICAgICLQ4Ofv5ffg8uLgIPbl6+j/IOjr6CD34PHyIO7yIPHo8fLl7O3o/yDw5ePo8fL68CIKLyogICAgSURfSEVMUF9IRUxQVE9QSUNTICAgICAgIk9wZW5zIHJlZ2lzdHJ5IGVkaXRvciBoZWxwIiAqLwogICAgSURfSEVMUF9BQk9VVCAgICAgICAgICAgIs/u6uDn4uAg6O307vDs4Pbo/yDn4CDv8O7j8ODs4Cwg4uXw8ej/8uAg6CDg4vLu8PHq6PLlIO/w4OLgIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9SRUdJU1RSWV9FWElUICAgICAgICAiyOfr6OfgIO7yIPDl5ODq8u7w4CDt4CDx6PHy5ezt6P8g8OXj6PHy+vAiCiAgICBJRF9GQVZPUklURVNfQUREVE9GQVZPUklURVMgIsTu4eDi/yDq6/737uLlIOr67CDx7+jx+urgIPEg7vLs5fLq6PLlLi4uIgogICAgSURfRkFWT1JJVEVTX1JFTU9WRUZBVk9SSVRFICLP8OXs4PXi4CDq6/737uLlIO7yIPHv6PH66uAg8SDu8uzl8uro8uUuLi4iCiAgICBJRF9WSUVXX1NUQVRVU0JBUiAgICAgICAiz+7q4Ofi4CDo6+gg8erw6OLgIOvl7fLg8uAg7eAg8frx8u7/7ejl8u4iCiAgICBJRF9WSUVXX1NQTElUICAgICAgICAgICAiz/Du7OXt/yDs5fHy7u/u6+7m5e3o5fLuIO3gIPDg5+Tl6+jy5ev/IOzl5uTzIOTi5fLlIO/u6+7i6O3oIO3gIPDl5ODq8u7w4CIKICAgIElEX1ZJRVdfUkVGUkVTSCAgICAgICAgICLO4e3u4v/i4CDx+uT68Obg7ejl8u4g7eAg7/Du5+7w5fbgIgogICAgSURfRURJVF9ERUxFVEUgICAgICAgICAgIsjn8vDo4uAg6Ofh8ODt7vLuIgogICAgSURfRURJVF9SRU5BTUUgICAgICAgICAgIs/w5ejs5e3z4uAg6Ofh8ODt7vLuIgogICAgSURfRURJVF9DT1BZS0VZTkFNRSAgICAgIsru7+jw4CDo7OXy7iDt4CDo5+Hw4O3o/yDq6/73IOIg8ejx8uXs7ej/IOHz9OXwIgogICAgSURfRURJVF9GSU5EICAgICAgICAgICAgItL68PHoIOfgIPLl6vHy7uIg7ejnIOIg6uv+9+7i5fLlLCDx8u7p7e7x8ujy5SDoIOTg7e3o8uUiCiAgICBJRF9FRElUX0ZJTkRORVhUICAgICAgICAi0vrw8egg8evl5OLg+e7y7iDs//Hy7iwg7eAg6u7l8u4g8eUg8fDl+eAg8uXq8fLgIO7yIO/w5eTo+O3u8u4g8vrw8eXt5SIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0VSUk9SCQkgICAgIsPw5fjq4CIKICAgIElEU19CQURfS0VZCQkgICAgIsfg/+Lq4PLgIOfgIOrr/vcgJyVzJyDt5fPx7+X47eAiCiAgICBJRFNfQkFEX1ZBTFVFICAgICAgICAgICAix+D/4urg8uAg5+Ag8fLu6e3u8fIgJyVzJyDt5fPx7+X47eAiCiAgICBJRFNfVU5TVVBQT1JURURfVFlQRSAgICAizeUg7O7m5SDk4CDw5eTg6vLo8ODy5SDq6/737uLlIO7yIPLu5+gg8ujvICgldSkiCiAgICBJRFNfVE9PX0JJR19WQUxVRSAgICAgICAi0fLu6e3u8fLy4CDlIO/w5erg6+Xt7iDj7uv/7OAgKCV1KSIKICAgIElEU19ERUxFVEVfQk9YX1RJVExFICAgICLP7vLi+vDk5fLlIOjn8vDo4uDt5fLuIO3gIPHy7unt7vHy8uAiCiAgICBJRFNfREVMRVRFX0JPWF9URVhUICAgICAizeDo8fLo7eAg6+gg6PHq4PLlIOTgIOjn8vDo5fLlIPHy7unt7vHy8uAgJyVzJz8iCiAgICBJRFNfREVMRVRFX0JPWF9URVhUX01VTFRJUExFICJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoZXNlIHZhbHVlcz8iCiAgICBJRFNfTkVXS0VZICAgICAgICAgICAgICAize7iIOrr/vcgIyVkIgogICAgSURTX05FV1ZBTFVFICAgICAgICAgICAgIs3u4uAg8fLu6e3u8fIgIyVkIgogICAgSURTX05PVEZPVU5EICAgICAgICAgICAgIlNlYXJjaCBzdHJpbmcgJyVzJyBub3QgZm91bmQiCkVORAoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLyoKICogVEVYVElOQ0xVREUKICovCgoxIFRFWFRJTkNMVURFIERJU0NBUkRBQkxFCkJFR0lOCiAgICAicmVzb3VyY2UuaFwwIgpFTkQKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K