LyoKICogUmVnZWRpdCByZXNvdXJjZXMKICoKICogQ29weXJpZ2h0IDIwMDIgUm9iZXJ0IERpY2tlbnNvbgogKiBDb3B5cmlnaHQgMjAwNSBNaWtlIE1jQ29ybWFjawogKiBDb3B5cmlnaHQgMjAwNyBZdW5Tb25nIEh3YW5nKGh5czU0NUBkcmVhbXdpei5jb20pCgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgovKiBLb3JlYW4gcmVzb3VyY2VzICovCgpMQU5HVUFHRSBMQU5HX0tPUkVBTiwgU1VCTEFOR19ORVVUUkFMCgovKgogKiBNZW51CiAqLwoKSURDX1JFR0VESVQgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogICAgUE9QVVAgIsbEwM8oJkYpIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAis6Gzu7HiKCZYKSIsICAgICAgICAgICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9FWElUCiAgICBFTkQKICAgIFBPUFVQICK1tb/yuLsoJkgpIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAisPzHz7+pKCZBKSAuLi4iLCAgICAgICAgICAgICAgICAgIElEX0hFTFBfQUJPVVQKICAgIEVORApFTkQKCklEUl9SRUdFRElUX01FTlUgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogICAgUE9QVVAgIre5wfa9usauuK4oJlIpIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAit7nB9r26xq64riDGxMDPILChwa6/wLHiKCZJKS4uLiIsICAgIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRQogICAgICAgIE1FTlVJVEVNICK3ucH2vbrGrriuIMbEwM8gs7u6uLO7seIoJkUpLi4uIiwgICAgSURfUkVHSVNUUllfRVhQT1JUUkVHSVNUUllGSUxFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIr/4sN0gt7nB9r26xq64riC/rLDhKCZDKS4uLiIsIElEX1JFR0lTVFJZX0NPTk5FQ1RORVRXT1JLUkVHSVNUUlksIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICK/+LDdILe5wfa9usauuK4gv6yw4SCy97HiKCZEKS4uLiIsIElEX1JFR0lTVFJZX0RJU0NPTk5FQ1RORVRXT1JLUkVHSVNUUlksIEdSQVlFRAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICLAzrziKCZQKVx0Q3RybCtQIiwgICAgICAgICAgICAgSURfUkVHSVNUUllfUFJJTlQsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICKzobO7seIoJlgpIiwgICAgICAgICAgICAgICAgICAgSURfUkVHSVNUUllfRVhJVAogICAgRU5ECiAgICBQT1BVUCAixu3B/SgmRSkiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICK89sGkKCZNKSIsICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRlkKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBQT1BVUCAiu/W3ziC4uLXpseIoJk4pIgogICAgICAgIEJFR0lOCiAgICAgICAgICAgIE1FTlVJVEVNICImxbAoJkspIiwgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0tFWQogICAgICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICAgICAgTUVOVUlURU0gIrmuwNq/rSCwqigmUykiLCAgICAgICAgICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICLAzMH4sKooJkIpIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiRFdPUkQgsKooJkQpIiwgICAgICAgICAgICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAitNnB3yC5rsDav60gsKooJk0pIiwgICAgICAgSURfRURJVF9ORVdfTVVMVElfU1RSSU5HVkFMVUUKICAgICAgICBFTkQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiu+jBpigmRClcdERlbCIsICAgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCiAgICAgICAgTUVOVUlURU0gIsDMuKcgudmy2bHiKCZSKVx0RjIiLCAgICAgICAgICBJRF9FRElUX1JFTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICLFsCDAzLinILq5u+coJkMpIiwgICAgICAgICAgICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICLDo7HiKCZGKVx0Q3RybCtGIiwgICAgICAgICAgICAgSURfRURJVF9GSU5ELCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAitNnAvSDDo7HiKCZ4KVx0RjMiLCAgICAgICAgICAgIElEX0VESVRfRklORE5FWFQsIEdSQVlFRAogICAgRU5ECiAgICBQT1BVUCAiurix4igmVikiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICK788XCIMelseLB2SgmQikiLCAgICAgICAgICAgICAgSURfVklFV19TVEFUVVNCQVIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAis6q0qbHiKCZMKSIsICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1BMSVQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiu/W3ziCw7cSnKCZSKVx0RjUiLCAgICAgICAgICAgIElEX1ZJRVdfUkVGUkVTSAogICAgRU5ECiAgICBQT1BVUCAiwfGw3CDDo7HiKCZGKSIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIsHxsNwgw6Ox4iDD37ChKCZBKSIsICAgICAgICAgICBJRF9GQVZPUklURVNfQUREVE9GQVZPUklURVMKICAgICAgICBNRU5VSVRFTSAiwfGw3CDDo7HiIMGmsMUoJlIpIiwgICAgICAgICAgIElEX0ZBVk9SSVRFU19SRU1PVkVGQVZPUklURQogICAgRU5ECiAgICBQT1BVUCAitbW/8ri7KCZIKSIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIrW1v/K4uyDH17jxKCZIKVx0RjEiLCAgICAgICAgICBJRF9IRUxQX0hFTFBUT1BJQ1MKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAit7nB9r26xq64riDG7cH9seIgwaS6uCgmQSkiLCAgIElEX0hFTFBfQUJPVVQKICAgIEVORApFTkQKCklEUl9QT1BVUF9NRU5VUyBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgUE9QVVAgIiIKICBCRUdJTgoJTUVOVUlURU0gIrz2waQoJk0pIiwgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX01PRElGWQoJTUVOVUlURU0gIsDMwfiwqiCw7cShseIiLCAgICAgICAgICAgICAgICBJRF9FRElUX01PRElGWV9CSU4KCU1FTlVJVEVNIFNFUEFSQVRPUgoJTUVOVUlURU0gIrvowaYoJkQpXHREZWwiLCAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQoJTUVOVUlURU0gIsDMuKcgudmy2bHiKCZSKSIsICAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogIEVORAogIFBPUFVQICIiCiAgQkVHSU4KICAgICAgICBQT1BVUCAiu/W3ziC4uLXpseIoJk4pIgogICAgICAgIEJFR0lOCiAgICAgICAgICAgIE1FTlVJVEVNICImxbAoJkspIiwgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19LRVkKICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICAgIE1FTlVJVEVNICK5rsDav60gsKooJlMpIiwgICAgICAgICAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiwMzB+LCqKCZCKSIsICAgICAgICAgICAgICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIkRXT1JEILCqKCZEKSIsICAgICAgICAgICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIrTZwd8gua7A2r+tILCqKCZNKSIsICAgICAgIElEX0VESVRfTkVXX01VTFRJX1NUUklOR1ZBTFVFCiAgICAgICAgRU5ECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIrvowaYoJkQpXHREZWwiLCAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQogICAgICAgIE1FTlVJVEVNICLAzLinILnZstmx4igmUilcdEYyIiwgICAgICAgICAgSURfRURJVF9SRU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAixbAgwMy4pyC6ubvnKCZDKSIsICAgICAgICAgICAgIElEX0VESVRfQ09QWUtFWU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiw6Ox4igmRilcdEN0cmwrRiIsICAgICAgICAgICAgIElEX0VESVRfRklORCwgR1JBWUVECiAgRU5ECkVORAoKCi8qCiAqIERpYWxvZwogKi8KCklERF9BRERGQVZPUklURSBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA1NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiwfGw3CDDo7HiIMPfsKEiCkZPTlQgOSwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiwMy4pzoiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgICLIrsDOIixJRE9LLDE0MCwzOCwzMCwxMyxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICLD67zSIixJRENBTkNFTCwxNzUsMzgsMzAsMTMsIFdTX0dST1VQCkVORAoKSUREX0RFTEZBVk9SSVRFIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDkwClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICLB8bDcIMOjseIgwaawxSIKRk9OVCA5LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICLAzLinOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIExJU1RCT1ggICAgICAgICBJRENfTkFNRV9MSVNULDUsMTUsMjAwLDUyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgTEJTX1NPUlQgfCBMQlNfTk9JTlRFR1JBTEhFSUdIVCB8IFdTX1ZTQ1JPTEwKICAgIERFRlBVU0hCVVRUT04gICAiyK7AziIsSURPSywxNDAsNzEsMzAsMTQsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAiw+u80iIsSURDQU5DRUwsMTc1LDcxLDMwLDE0LCBXU19HUk9VUApFTkQKCklERF9FRElUX1NUUklORyBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA3NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiua7A2r+tIMbtwf0iCkZPTlQgOSwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAisKogwMy4pzoiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAisKogtaXAzMXNOiIsSURDX1NUQVRJQyw1LDMwLDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX0RBVEEsNSw0MCwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgICLIrsDOIixJRE9LLDE0MCw1OCwzMCwxNCxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICLD67zSIixJRENBTkNFTCwxNzUsNTgsMzAsMTQsV1NfR1JPVVAKRU5ECgpJRERfRURJVF9EV09SRCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCAxMDAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IERTX05PSURMRU1TRyB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkRXT1JEIMbtwf0iCkZPTlQgOSwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAisKogwMy4pzoiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAisKogtaXAzMXNOiIsSURDX1NUQVRJQyw1LDMwLDkwLDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDkwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBHUk9VUEJPWCAgICAgICAgIrTcwKciLCBJRENfRFdPUkRfQkFTRSwgMTIwLCAzMCwgODUsIDM3LCBCU19HUk9VUEJPWAogICAgQVVUT1JBRElPQlVUVE9OICIxNiDB+Lz2IiwgSURDX0RXT1JEX0hFWCwgMTMwLCA0MCwgNjAsIDEwLCBXU19UQUJTVE9QCiAgICBBVVRPUkFESU9CVVRUT04gIjEwIMH4vPYiLCBJRENfRFdPUkRfREVDLCAxMzAsIDUyLCA2MCwgMTAsIFdTX1RBQlNUT1AKICAgIERFRlBVU0hCVVRUT04gICAiyK7AziIsSURPSywxNDAsNzcsMzAsMTQsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAiw+u80iIsSURDQU5DRUwsMTc1LDc3LDMwLDE0LFdTX0dST1VQCkVORAoKSUREX0VESVRfQklOQVJZIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDEwMApTVFlMRSBEU19NT0RBTEZSQU1FIHwgRFNfTk9JRExFTVNHIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiwMzB+CCwqiDG7cH9IgpGT05UIDksICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIrCqIMDMuKc6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEx8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIrCqILWlwMzFzToiLElEQ19TVEFUSUMsNSwzMCw5MCw4CiAgICBDT05UUk9MICAgICAgICAgIiIsSURDX1ZBTFVFX0RBVEEsIkhleEVkaXQiLFdTX1RBQlNUT1AsNCw0MCwxNjAsNDAKICAgIERFRlBVU0hCVVRUT04gICAiyK7AziIsSURPSywxNDAsODEsMzAsMTUsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAiw+u80iIsSURDQU5DRUwsMTc1LDgwLDMwLDE1LFdTX0dST1VQCkVORAoKSUREX0VESVRfTVVMVElfU1RSSU5HIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDE3NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAitNnB3yC5rsDav60gxu3B/SIKRk9OVCA5LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICKwqiDAzLinOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICKwqiC1pcDMxc06IixJRENfU1RBVElDLDUsMzAsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDIwMCwxMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBXU19IU0NST0xMIHwgV1NfVlNDUk9MTCB8IEVTX01VTFRJTElORSB8IEVTX1dBTlRSRVRVUk4KICAgIERFRlBVU0hCVVRUT04gICAiyK7AziIsSURPSywxNDAsMTU4LDMwLDEzLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIsPrvNIiLElEQ0FOQ0VMLDE3NSwxNTgsMzAsMTMsV1NfR1JPVVAKRU5ECgpJRERfRklORCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA4NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiw6Ox4iIKRk9OVCA5LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICLDo7HiOiIsSURDX1NUQVRJQyw1LDcsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw0MCw1LDEyNSwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCiAgICBMVEVYVCAgICAgICAgICAgIsOjseIgv8m8xzoiLElEQ19TVEFUSUMsNSwgMjIsIDExOSwgOAogICAgQ0hFQ0tCT1ggICAgICAgICLFsCIsIElEQ19GSU5EX0tFWVMsIDUsIDM0LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBXU19HUk9VUCB8IEJTX0FVVE9DSEVDS0JPWAogICAgQ0hFQ0tCT1ggICAgICAgICKwqiDAzLinIiwgSURDX0ZJTkRfVkFMVUVTLCA1LCA0NiwgOTAsIDEwLCBXU19UQUJTVE9QIHwgQlNfQVVUT0NIRUNLQk9YCiAgICBDSEVDS0JPWCAgICAgICAgIrCqILO7v+siLCBJRENfRklORF9DT05URU5ULCA1LCA1OCwgOTAsIDEwLCBXU19UQUJTVE9QIHwgQlNfQVVUT0NIRUNLQk9YCiAgICBDSEVDS0JPWCAgICAgICAgIr/PwPzH0SC03L7uuLggw6Ox4iIsIElEQ19GSU5EX1dIT0xFLCA1LCA3MCwgOTAsIDEwLCBXU19UQUJTVE9QIHwgQlNfQVVUT0NIRUNLQk9YCiAgICBERUZQVVNIQlVUVE9OICAgIsOjseIiLElET0ssMTc1LDMsMzAsMTQsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAitN2x4iIsSURDQU5DRUwsMTc1LDIyLDMwLDExLCBXU19HUk9VUApFTkQKCklERF9FWFBPUlRfVEVNUExBVEUgRElBTE9HIERJU0NBUkRBQkxFICA1MCwgNTAsIDI3OCwgNTQKU1RZTEUgRFNfM0RMT09LIHwgRFNfQ09OVFJPTCB8IFdTX0NISUxEIHwgV1NfVklTSUJMRSB8IFdTX0NMSVBTSUJMSU5HUyB8CldTX0JPUkRFUgpGT05UIDksICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIre5wfa9usauuK4gutK3r7/AseIiLCBJRENfRVhQT1JUX0JBU0UsIDYsIDYsIDI2NiwgNDIsIFdTX0dST1VQCiAgICBBVVRPUkFESU9CVVRUT04gIrjwtc4oJkEpIiwgSURDX0VYUE9SVF9BTEwsIDEyLCAxNSwgMjQ0LCAxMgogICAgQVVUT1JBRElPQlVUVE9OICK8scXDtcggus660Li4KCZFKToiLCBJRENfRVhQT1JUX1NFTEVDVEVELCAxMiwgMzAsIDcwLCAxMgogICAgRURJVFRFWFQgICAgICAgIElEQ19FWFBPUlRfUEFUSCwgODIsIDMwLCAxODQsIDEyCkVORAoKLyoKICogU3RyaW5nIFRhYmxlCiAqLwoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19MSVNUX0NPTFVNTl9OQU1FICAgICLAzLinIgogICAgSURTX0xJU1RfQ09MVU1OX1RZUEUgICAgIsG+t/kiCiAgICBJRFNfTElTVF9DT0xVTU5fREFUQSAgICAitaXAzMXNIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfQVBQX1RJVExFICAgICAgICAgICAit7nB9r26xq64riDG7cH9seIiCiAgICBJRENfUkVHRURJVCAgICAgICAgICAgICAiUkVHRURJVCIKICAgIElEQ19SRUdFRElUX0ZSQU1FICAgICAgICJSRUdFRElUX0ZSQU1FIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9SRUdJU1RSWV9NRU5VICAgICAgICAiuPC15yC3ucH2vbrGrriuIMDbvvcguO23ySDG98fUIgogICAgSURfRURJVF9NRU5VICAgICAgICAgICAgIsWwwMcgsKogxu3B/SC47bfJIMb3x9QiCiAgICBJRF9WSUVXX01FTlUgICAgICAgICAgICAit7nB9r26xq64riDDoiC757/rwNogwaTAx8fPtMIguO23ySDG98fUIgogICAgSURfRkFWT1JJVEVTX01FTlUgICAgICAgIsDawdYgu+e/68fPtMIgxbAgwaKx2cfPtMIguO23ySDG98fUIgogICAgSURfSEVMUF9NRU5VICAgICAgICAgICAgIre5wfa9usauuK4gxu3B/bHiIMGkuri/zSC1tb/yuLsguri/qcHWtMIguO23ySDG98fUIgogICAgSURfRURJVF9ORVdfTUVOVSAgICAgICAgIrv1IMWws6ogsKoguLi15bTCILjtt8kgxvfH1CIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfRURJVF9NT0RJRlkgICAgICAgICAgIrCqILWlwMzFuCCw7cShseIiCiAgICBJRF9FRElUX05FV19LRVkgICAgICAgICAiu/UgxbAgtPXHz7HiIgogICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUgIrv1ILmuwNq/rSCwqiC09cfPseIiCiAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRSAiu/UgudnAzLPKuK4gsKogtPXHz7HiIgogICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRSAgIrv1ILT1uu0gv/a15SCwqiC09cfPseIiCiAgICBJRF9FRElUX05FV19NVUxUSV9TVFJJTkdWQUxVRSAiu/UgtNnB3yC5rsDav60gsKogtPXHz7HiIgogICAgSURfUkVHSVNUUllfSU1QT1JUUkVHSVNUUllGSUxFICLF2L26xq4gxsTAz8C7ILe5wfa9usauuK6/oSCzor/2s9ax4iIKICAgIElEX1JFR0lTVFJZX0VYUE9SVFJFR0lTVFJZRklMRQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIre5wfa9usauuK7AxyDA/LrOs6ogwM+6zrrQwLsgxdi9usauIMbEwM+3ziCzu7q4s7ux4iIKICAgIElEX1JFR0lTVFJZX0NPTk5FQ1RORVRXT1JLUkVHSVNUUlkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICK/+LDdIMTEx7vFzcDHILe5wfa9usauuK4gv6yw4SIKICAgIElEX1JFR0lTVFJZX0RJU0NPTk5FQ1RORVRXT1JLUkVHSVNUUlkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICK/+LDdIMTEx7vFzcDHILe5wfa9usauuK4gv6yw4SDH2MGmIgogICAgSURfUkVHSVNUUllfUFJJTlQgICAgICAgIre5wfa9usauuK4gwPy6zrOqILrOutAgwM684sfPseIiCi8qICAgIElEX0hFTFBfSEVMUFRPUElDUyAgICAgICK3ucH2vbrGrriuIMbtwf2x4iC1tb/yuLsgv62x4iIgKi8KICAgIElEX0hFTFBfQUJPVVQgICAgICAgICAgICLHrrHXuLIgwaS6uCy59sGvLCDA+sDbsccguri/qcHWseIiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX1JFR0lTVFJZX0VYSVQgICAgICAgICK3ucH2vbrGrriuIMbtwf2x4iCzqrChseIiCiAgICBJRF9GQVZPUklURVNfQUREVE9GQVZPUklURVMgIsHxsNwgw6Ox4iC48bfPv6EgxbAgtPXHz7HiIgogICAgSURfRkFWT1JJVEVTX1JFTU9WRUZBVk9SSVRFICLB8bDcIMOjseIguPG3z7+hIMWwIMH2v+yx4iIKICAgIElEX1ZJRVdfU1RBVFVTQkFSICAgICAgICK788XCudkguri/qcHWsMWzqiC8+7HiseIiCiAgICBJRF9WSUVXX1NQTElUICAgICAgICAgICAitc4gxrLAuyCzqrSptMIgwKfEoSC52bLZseIiCiAgICBJRF9WSUVXX1JFRlJFU0ggICAgICAgICAiw6IgtNm9wyDA0LHiIgogICAgSURfRURJVF9ERUxFVEUgICAgICAgICAgIsDMILy9vMcgwfa/7LHiIgogICAgSURfRURJVF9SRU5BTUUgICAgICAgICAgIsDMILy9vMcgwMy4p7nZstmx4iIKICAgIElEX0VESVRfQ09QWUtFWU5BTUUgICAgICK8scXDtcggxbDAxyDAzLinwLsgxay4s7q4teW/oSC6ubvnIgogICAgSURfRURJVF9GSU5EICAgICAgICAgICAgIsWwLLCqwMyzqiC1pcDMxbi/obytIMXYvbrGriC5rsDav60gw6Ox4iIKICAgIElEX0VESVRfRklORE5FWFQgICAgICAgICLAzMD8IMOjseK/obytIMH2waS1yCC5rsDav623ziC02b3DIMOjseIiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19FUlJPUgkJICAgICK/obevIgogICAgSURTX0JBRF9LRVkJCSAgICAixbAgJyVzJ7imIMH6wMfH0iC89iC++L3AtM+02SIKICAgIElEU19CQURfVkFMVUUgICAgICAgICAgICKwqiAnJXMnuKYgwfrAx8fSILz2IL74vcC0z7TZIgogICAgSURTX1VOU1VQUE9SVEVEX1RZUEUgICAgIsDMIMW4wNQgKCVsZCnAxyDFsLimILDtxKUgvPYgvvi9wLTPtNkiCiAgICBJRFNfVE9PX0JJR19WQUxVRSAgICAgICAisKrAzCCzyrmrIMWutM+02SAoJWxkKSIKICAgIElEU19ERUxFVEVfQk9YX1RJVExFICAgICKwqiDB9r/sseIgyK7AziIKICAgIElEU19ERUxFVEVfQk9YX1RFWFQgICAgICK0573FwLogwMwgsKogJyVzJ8C7IMGkuLu3ziDB9r/ssNq9wLTPse4/IgogICAgSURTX05FV0tFWSAgICAgICAgICAgICAgIrv1IMWwICMlZCIKICAgIElEU19ORVdWQUxVRSAgICAgICAgICAgICK79SCwqiAjJWQiCiAgICBJRFNfTk9URk9VTkQgICAgICAgICAgICAiJyVzJ8C7IMOjwLsgvPYgvvi9wLTPtNkiCkVORAoKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgIElEU19GSUxFRElBTE9HX0lNUE9SVF9USVRMRSAgICK3ucDMwfa9usauIMbEwM8gutK3r7/AseIiCiAgIElEU19GSUxFRElBTE9HX0VYUE9SVF9USVRMRSAgICK3ucH2vbrGrriuIMbEwM8gs7u6uLO7seIiCiAgIElEU19GSUxFRElBTE9HX0ZJTFRFUiAgICAgICAgICK3ucH2vbrGrriuIMbEwM9cMCoucmVnXDBXaW45eC9OVDQgt7nB9r26xq64riDGxMDPIChSRUdFRElUNClcMCoucmVnXDC48LXnIMbEwM8gKCouKilcMCouKlwwXDAiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgSURTX1JFR0lTVFJZX1JPT1RfTkFNRSAgICAgICAgICAgIrO7IMTEx7vFzSIKICAgSURTX1JFR0lTVFJZX0RFRkFVTFRfVkFMVUUgICAgICAgIiix4rq7KSIKICAgSURTX1JFR0lTVFJZX1ZBTFVFX05PVF9TRVQgICAgICAgIiiwqsDMIMGkx9jB9sH2IL7KwL0pIgogICBJRFNfUkVHSVNUUllfVkFMVUVfQ0FOVF9ESVNQTEFZICAiKLCqwLsguri/qSDB2bz2IL74wL0pIgogICBJRFNfUkVHSVNUUllfVU5LTk9XTl9UWVBFICAgICAgICAiKL7LILz2IL74tMIgJWQpIgpFTkQKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgoKLyoKICogVEVYVElOQ0xVREUKICovCgoxIFRFWFRJTkNMVURFIERJU0NBUkRBQkxFCkJFR0lOCiAgICAicmVzb3VyY2UuaFwwIgpFTkQKCgoKLyoKICogU3RyaW5nIFRhYmxlCiAqLwoKLyoKICpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQogKkJFR0lOCiAqICAgIElEX0hFTFBfSEVMUFRPUElDUyAgICAgICK3ucH2vbrGrriuIMbtwf2x4iC1tb/yuLsgv62x4i4iCiAqICAgIElEX0hFTFBfQUJPVVQgICAgICAgICAgICLHrrHXuLIgwaS6uCy59sGvLCDA+sDbsccguri/qcHWseIuIgogKkVORAogKi8KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K