LyoKICogUmVnZWRpdCByZXNvdXJjZXMKICoKICogQ29weXJpZ2h0IDIwMDIgUm9iZXJ0IERpY2tlbnNvbgogKiBDb3B5cmlnaHQgMjAwNSBNaWtlIE1jQ29ybWFjawogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgovKiBLb3JlYW4gcmVzb3VyY2VzICovCgpMQU5HVUFHRSBMQU5HX0tPUkVBTiwgU1VCTEFOR19ORVVUUkFMCgovKgogKiBNZW51CiAqLwoKSURDX1JFR0VESVQgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogICAgUE9QVVAgIsbEwM8oJkYpIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAis6Gzu7HiKCZYKSIsICAgICAgICAgICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9FWElUCiAgICBFTkQKICAgIFBPUFVQICK1tb/yuLsoJkgpIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAisPzHz7+pKCZBKSAuLi4iLCAgICAgICAgICAgICAgICAgIElEX0hFTFBfQUJPVVQKICAgIEVORApFTkQKCklEUl9SRUdFRElUX01FTlUgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogICAgUE9QVVAgIre5wfa9usauuK4oJlIpIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAit7nB9r26xq64riDGxMDPILChwa6/wLHiKCZJKS4uLiIsICAgIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRQogICAgICAgIE1FTlVJVEVNICK3ucH2vbrGrriuIMbEwM8gs7u6uLO7seIoJkUpLi4uIiwgICAgSURfUkVHSVNUUllfRVhQT1JUUkVHSVNUUllGSUxFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIrPXxq6/9sWpILe5wfa9usauuK4gv6yw4SgmQykuLi4iLCBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAis9fGrr/2xakgt7nB9r26xq64riC/rLDhILL3seIoJkQpLi4uIiwgSURfUkVHSVNUUllfRElTQ09OTkVDVE5FVFdPUktSRUdJU1RSWSwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIsDOvOIoJlApXHRDdHJsK1AiLCAgICAgICAgICAgICBJRF9SRUdJU1RSWV9QUklOVCwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIrOhs7ux4igmWCkiLCAgICAgICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9FWElUCiAgICBFTkQKICAgIFBPUFVQICLG7cH9KCZFKSIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIrz2waQoJk0pIiwgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX01PRElGWQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIFBPUFVQICK79bfOILi4temx4igmTikiCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIibFsCgmSykiLCAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfS0VZCiAgICAgICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgICAgICBNRU5VSVRFTSAiua7A2rCqKCZTKSIsICAgICAgICAgICAgICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIsDMwfiwqigmQikiLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICJEV09SRCCwqigmRCkiLCAgICAgICAgICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUKICAgICAgICBFTkQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiu+jBpigmRClcdERlbCIsICAgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCiAgICAgICAgTUVOVUlURU0gIsDMuKcgudmy2bHiKCZSKVx0RjIiLCAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAixbAgwMy4pyC6ubvnKCZDKSIsICAgICAgICAgICAgICBJRF9FRElUX0NPUFlLRVlOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIsOjseIoJkYpXHRDdHJsK0YiLCAgICAgICAgICAgICBJRF9FRElUX0ZJTkQsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICK02cC9IMOjseIoJngpXHRGMyIsICAgICAgICAgICAgIElEX0VESVRfRklORE5FWFQsIEdSQVlFRAogICAgRU5ECiAgICBQT1BVUCAiurix4igmVikiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICK788XCIMelseLB2SgmQikiLCAgICAgICAgICAgICAgIElEX1ZJRVdfU1RBVFVTQkFSCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIrOqtKmx4igmTCkiLCAgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1BMSVQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiu/W3ziCw7cSnKCZSKVx0RjUiLCAgICAgICAgICAgICBJRF9WSUVXX1JFRlJFU0gKICAgIEVORAogICAgUE9QVVAgIsHxsNwgw6Ox4igmRikiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICLB8bDcIMOjseIgw9+woSgmQSkiLCAgICAgICAgICAgIElEX0ZBVk9SSVRFU19BRERUT0ZBVk9SSVRFUwogICAgICAgIE1FTlVJVEVNICLB8bDcIMOjseIgwaawxSgmUikiLCAgICAgICAgICAgIElEX0ZBVk9SSVRFU19SRU1PVkVGQVZPUklURQogICAgRU5ECiAgICBQT1BVUCAitbW/8ri7KCZIKSIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIrW1v/K4uyDH17jxKCZIKVx0RjEiLCAgICAgICAgICAgIElEX0hFTFBfSEVMUFRPUElDUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICK3ucH2vbrGrriuIMbtwf2x4iDBpLq4KCZBKSIsICAgICAgSURfSEVMUF9BQk9VVAogICAgRU5ECkVORAoKSURSX1BPUFVQX01FTlVTIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICBQT1BVUCAiIgogIEJFR0lOCglNRU5VSVRFTSAivPbBpCgmTSkiLCAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTU9ESUZZCglNRU5VSVRFTSAiwMzB+LCqILDtxKGx4iIsICAgICAgICAgIElEX0VESVRfTU9ESUZZX0JJTgoJTUVOVUlURU0gU0VQQVJBVE9SCglNRU5VSVRFTSAiu+jBpigmRClcdERlbCIsICAgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCglNRU5VSVRFTSAiwMy4pyC52bLZseIoJlIpIiwgICAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogIEVORAogIFBPUFVQICIiCiAgQkVHSU4KICAgICAgICBQT1BVUCAiu/W3ziC4uLXpseIoJk4pIgogICAgICAgIEJFR0lOCiAgICAgICAgICAgIE1FTlVJVEVNICImxbAoJkspIiwgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0tFWQogICAgICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICAgICAgTUVOVUlURU0gIrmuwNqwqigmUykiLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICLAzMH4sKooJkIpIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiRFdPUkQgsKooJkQpIiwgICAgICAgICAgICBJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgRU5ECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIrvowaYoJkQpXHREZWwiLCAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQogICAgICAgIE1FTlVJVEVNICLAzLinILnZstmx4igmUilcdEYyIiwgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIsWwIMDMuKcgurm75ygmQykiLCAgICAgICAgICAgICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICLDo7HiKCZGKVx0Q3RybCtGIiwgICAgICAgICAgICAgSURfRURJVF9GSU5ELCBHUkFZRUQKICBFTkQKRU5ECgoKLyoKICogRGlhbG9nCiAqLwoKSUREX0FCT1VUQk9YIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMzAsIDc1ClNUWUxFIERTX01PREFMRlJBTUUgfCBEU19OT0lETEVNU0cgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICLBpLq4IgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBJQ09OICAgICAgICAgICAgSURJX1JFR0VESVQsSURJX1JFR0VESVQsMTQsOSwxNiwxNgogICAgTFRFWFQgICAgICAgICAgICJSZWFjdE9TIHJlZ2VkaXQgVmVyc2lvbiAxLjAiLElEQ19TVEFUSUMsNDksMTAsMTE5LDgsCiAgICAgICAgICAgICAgICAgICAgU1NfTk9QUkVGSVgKICAgIExURVhUICAgICAgICAgICAiQ29weXJpZ2h0IChDKSAyMDAyIFJlYWN0T1MgVGVhbSIsSURDX1NUQVRJQyw0OSwyMCwxMTksOAogICAgREVGUFVTSEJVVFRPTiAgICLIrsDOIixJRE9LLDE5NSw2LDMwLDExLFdTX0dST1VQCkVORAoKSUREX0FEREZBVk9SSVRFIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDU1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICLB8bDcIMOjseIgw9+woSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICLAzLinOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAgIsiuwM4iLElET0ssMTQwLDQwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIsPrvNIiLElEQ0FOQ0VMLDE3NSw0MCwzMCwxMSwgV1NfR1JPVVAKRU5ECgpJRERfREVMRkFWT1JJVEUgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgOTAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIsHxsNwgw6Ox4iDBprDFIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIsDMuKc6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgTElTVEJPWCAgICAgICAgIElEQ19OQU1FX0xJU1QsNSwxNSwyMDAsNTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBMQlNfU09SVCB8IExCU19OT0lOVEVHUkFMSEVJR0hUIHwgV1NfVlNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgICLIrsDOIixJRE9LLDE0MCw3MywzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICLD67zSIixJRENBTkNFTCwxNzUsNzMsMzAsMTEsIFdTX0dST1VQCkVORAoKSUREX0VESVRfU1RSSU5HIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDc1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICK5rsDav60gxu3B/SIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICKwqiDAzLinOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICKwqiC1pcDMxc06IixJRENfU1RBVElDLDUsMzAsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAgIsiuwM4iLElET0ssMTQwLDYwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIsPrvNIiLElEQ0FOQ0VMLDE3NSw2MCwzMCwxMSxXU19HUk9VUApFTkQKCklERF9FRElUX0RXT1JEIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDEwMApTVFlMRSBEU19NT0RBTEZSQU1FIHwgRFNfTk9JRExFTVNHIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRFdPUkQgxu3B/SIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICKwqiDAzLinOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICKwqiC1pcDMxc06IixJRENfU1RBVElDLDUsMzAsOTAsOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsOTAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKICAgIEdST1VQQk9YICAgICAgICAitNzApyIsIElEQ19EV09SRF9CQVNFLCAxMjAsIDMwLCA4NSwgMzcsIEJTX0dST1VQQk9YCiAgICBBVVRPUkFESU9CVVRUT04gIjE2IMH4vPYiLCBJRENfRFdPUkRfSEVYLCAxMzAsIDQwLCA2MCwgMTAsIFdTX1RBQlNUT1AKICAgIEFVVE9SQURJT0JVVFRPTiAiMTAgwfi89iIsIElEQ19EV09SRF9ERUMsIDEzMCwgNTIsIDYwLCAxMCwgV1NfVEFCU1RPUAogICAgREVGUFVTSEJVVFRPTiAgICLIrsDOIixJRE9LLDE0MCw4MCwzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICLD67zSIixJRENBTkNFTCwxNzUsODAsMzAsMTEsV1NfR1JPVVAKRU5ECgpJRERfRURJVF9CSU5BUlkgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgMTAwClNUWUxFIERTX01PREFMRlJBTUUgfCBEU19OT0lETEVNU0cgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICLAzMH4ILCqIMbtwf0iCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAisKogwMy4pzoiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAisKogtaXAzMXNOiIsSURDX1NUQVRJQyw1LDMwLDkwLDgKICAgIENPTlRST0wgICAgICAgICAiIixJRENfVkFMVUVfREFUQSwiSGV4RWRpdCIsV1NfVEFCU1RPUCw0LDQwLDE2MCw0MAogICAgREVGUFVTSEJVVFRPTiAgICLIrsDOIixJRE9LLDE0MCw4MCwzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICLD67zSIixJRENBTkNFTCwxNzUsODAsMzAsMTEsV1NfR1JPVVAKRU5ECgpJRERfRklORCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA4NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiw6Ox4iIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICLDo7HiOiIsSURDX1NUQVRJQyw1LDcsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw0MCw1LDEyNSwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCiAgICBMVEVYVCAgICAgICAgICAgIsOjseIgv8m8xzoiLElEQ19TVEFUSUMsNSwgMjIsIDExOSwgOAogICAgQ0hFQ0tCT1ggICAgICAgICLFsCIsIElEQ19GSU5EX0tFWVMsIDUsIDM0LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBXU19HUk9VUCB8IEJTX0FVVE9DSEVDS0JPWAogICAgQ0hFQ0tCT1ggICAgICAgICKwqiDAzLinIiwgSURDX0ZJTkRfVkFMVUVTLCA1LCA0NiwgOTAsIDEwLCBXU19UQUJTVE9QIHwgQlNfQVVUT0NIRUNLQk9YCiAgICBDSEVDS0JPWCAgICAgICAgIrCqILO7v+siLCBJRENfRklORF9DT05URU5ULCA1LCA1OCwgOTAsIDEwLCBXU19UQUJTVE9QIHwgQlNfQVVUT0NIRUNLQk9YCiAgICBDSEVDS0JPWCAgICAgICAgIr/PwPzH0SC03L7uuLggw6Ox4iIsIElEQ19GSU5EX1dIT0xFLCA1LCA3MCwgOTAsIDEwLCBXU19UQUJTVE9QIHwgQlNfQVVUT0NIRUNLQk9YCiAgICBERUZQVVNIQlVUVE9OICAgIsOjseIiLElET0ssMTc1LDUsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAitN2x4iIsSURDQU5DRUwsMTc1LDIyLDMwLDExLCBXU19HUk9VUApFTkQKCklERF9FWFBPUlRfVEVNUExBVEUgRElBTE9HIERJU0NBUkRBQkxFICA1MCwgNTAsIDI3OCwgNTQKU1RZTEUgRFNfM0RMT09LIHwgRFNfQ09OVFJPTCB8IFdTX0NISUxEIHwgV1NfVklTSUJMRSB8IFdTX0NMSVBTSUJMSU5HUyB8CldTX0JPUkRFUgpGT05UIDgsICJNUyBTaGVsbCBEbGciCglCRUdJTgogCQlHUk9VUEJPWCAit7nB9r26xq64riC60revv8Cx4igmRSkiLCBJRENfRVhQT1JUX0JBU0UsIDYsIDYsIDI2NiwgNDIsIFdTX0dST1VQCgkJQVVUT1JBRElPQlVUVE9OICK48LXOKCZBKSIsIElEQ19FWFBPUlRfQUxMLCAxMiwgMTUsIDI0NCwgMTIKCQlBVVRPUkFESU9CVVRUT04gIryxxcO1yCC6zrrQuLgoJlMpOiIsIElEQ19FWFBPUlRfU0VMRUNURUQsIDEyLCAzMCwgNzAsIDEyCgkJRURJVFRFWFQgSURDX0VYUE9SVF9QQVRILCA4MiwgMzAsIDE4NCwgMTIKRU5ECgovKgogKiBTdHJpbmcgVGFibGUKICovCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0xJU1RfQ09MVU1OX05BTUUgICAgIsDMuKciCiAgICBJRFNfTElTVF9DT0xVTU5fVFlQRSAgICAiwb63+SIKICAgIElEU19MSVNUX0NPTFVNTl9EQVRBICAgICK1pcDMxc0iCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19BUFBfVElUTEUgICAgICAgICAgICK3ucH2vbrGrriuIMbtwf2x4iIKICAgIElEQ19SRUdFRElUICAgICAgICAgICAgICJSRUdFRElUIgogICAgSURDX1JFR0VESVRfRlJBTUUgICAgICAgIlJFR0VESVRfRlJBTUUiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX1JFR0lTVFJZX01FTlUgICAgICAgICK48LXnILe5wfa9usauuK4gwNu+9yC47bfJIMb3x9QiCiAgICBJRF9FRElUX01FTlUgICAgICAgICAgICAixbDAxyCwqiDG7cH9ILjtt8kgxvfH1CIKICAgIElEX1ZJRVdfTUVOVSAgICAgICAgICAgICK3ucH2vbrGrriuIMOiILvnv+vA2iDBpMDHx8+0wiC47bfJIMb3x9QiCiAgICBJRF9GQVZPUklURVNfTUVOVSAgICAgICAiwNrB1iC757/rx8+0wiDFsCDBorHZx8+0wiC47bfJIMb3x9QiCiAgICBJRF9IRUxQX01FTlUgICAgICAgICAgICAit7nB9r26xq64riDG7cH9seIgwaS6uL/NILW1v/K4uyC6uL+pwda0wiC47bfJIMb3x9QiCiAgICBJRF9FRElUX05FV19NRU5VICAgICAgICAiu/UgxbCzqiCwqiC4uLXltMIguO23ySDG98fUIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9FRElUX01PRElGWSAgICAgICAgICAisKogtaXAzMW4ILDtxKGx4iIKICAgIElEX0VESVRfTkVXX0tFWSAgICAgICAgICK79SDFsCC09cfPseIiCiAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRSAiu/Ugua7A2iCwqiC09cfPseIiCiAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRSAiu/UgudnAzLPKuK4gsKogtPXHz7HiIgogICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRSAgIrv1ILT1uu0gv/a15SCwqiC09cfPseIiCiAgICBJRF9SRUdJU1RSWV9JTVBPUlRSRUdJU1RSWUZJTEUgIsXYvbrGriDGxMDPwLsgt7nB9r26xq64rr+hILOiv/az1rHiIgogICAgSURfUkVHSVNUUllfRVhQT1JUUkVHSVNUUllGSUxFCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAit7nB9r26xq64rsDHIMD8us6zqiDAz7rOutDAuyDF2L26xq4gxsTAz7fOILO7urizu7HiIgogICAgSURfUkVHSVNUUllfQ09OTkVDVE5FVFdPUktSRUdJU1RSWQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIr/4sN0gxMTHu8XNwMcgt7nB9r26xq64riC/rLDhIgogICAgSURfUkVHSVNUUllfRElTQ09OTkVDVE5FVFdPUktSRUdJU1RSWQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIr/4sN0gxMTHu8XNwMcgt7nB9r26xq64riC/rLDhIMfYwaYiCiAgICBJRF9SRUdJU1RSWV9QUklOVCAgICAgICAit7nB9r26xq64riDA/LrOs6ogus660CDAzrzix8+x4iIKLyogICAgSURfSEVMUF9IRUxQVE9QSUNTICAgICAgIre5wfa9usauuK4gxu3B/bHiILW1v/K4uyC/rbHiIiAqLwogICAgSURfSEVMUF9BQk9VVCAgICAgICAgICAgIseusde4siDBpLq4LLn2wa8sIMD6wNuxxyC6uL+pwdax4iIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfUkVHSVNUUllfRVhJVCAgICAgICAgIre5wfa9usauuK4gxu3B/bHiILOqsKGx4iIKICAgIElEX0ZBVk9SSVRFU19BRERUT0ZBVk9SSVRFUyAiwfGw3CDDo7HiILjxt8+/oSDFsCC09cfPseIiCiAgICBJRF9GQVZPUklURVNfUkVNT1ZFRkFWT1JJVEUgIsHxsNwgw6Ox4iC48bfPv6EgxbAgwfa/7LHiIgogICAgSURfVklFV19TVEFUVVNCQVIgICAgICAgIrvzxcK52SC6uL+pwdawxbOqILz7seKx4iIKICAgIElEX1ZJRVdfU1BMSVQgICAgICAgICAgICK1ziDGssC7ILOqtKm0wiDAp8ShILnZstmx4iIKICAgIElEX1ZJRVdfUkVGUkVTSCAgICAgICAgICLDoiC02b3DIMDQseIiCiAgICBJRF9FRElUX0RFTEVURSAgICAgICAgICAiwMwgvL28xyDB9r/sseIiCiAgICBJRF9FRElUX1JFTkFNRSAgICAgICAgICAiwMwgvL28xyDAzLinudmy2bHiIgogICAgSURfRURJVF9DT1BZS0VZTkFNRSAgICAgIryxxcO1yCDFsMDHIMDMuKfAuyDFrLizuri15b+hILq5u+ciCiAgICBJRF9FRElUX0ZJTkQgICAgICAgICAgICAixbAssKrAzLOqILWlwMzFuL+hvK0gxdi9usauILmuwNq/rSDDo7HiIgogICAgSURfRURJVF9GSU5ETkVYVCAgICAgICAgIsDMwPwgw6Ox4r+hvK0gwfbBpLXIILmuwNq/rbfOILTZvcMgw6Ox4iIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0VSUk9SCQkgICAgIr+ht68iCiAgICBJRFNfQkFEX0tFWQkJICAgICIgxbAgJyVzJ7imIMH6wMfH0iC89iC++L3AtM+02SIKICAgIElEU19CQURfVkFMVUUgICAgICAgICAgICKwqiAnJXMnuKYgwfrAx8fSILz2IL74vcC0z7TZIgogICAgSURTX1VOU1VQUE9SVEVEX1RZUEUgICAgIsDMIMW4wNQgKCVsZCnAxyDFsLimILDtxKUgvPYgvvi9wLTPtNkiCiAgICBJRFNfVE9PX0JJR19WQUxVRSAgICAgICAisKrAzCCzyrmrIMWutM+02SAoJWxkKSIKICAgIElEU19ERUxFVEVfQk9YX1RJVExFICAgICKwqiDB9r/sseIgyK7AziIKICAgIElEU19ERUxFVEVfQk9YX1RFWFQgICAgICK0573FwLogwMwgsKogJyVzJ8C7IMGkuLu3ziDB9r/ssNq9wLTPse4/IgogICAgSURTX05FV0tFWSAgICAgICAgICAgICAgIrv1IMWwICMlZCIKICAgIElEU19ORVdWQUxVRSAgICAgICAgICAgICK79SCwqiAjJWQiCiAgICBJRFNfTk9URk9VTkQgICAgICAgICAgICAiJyVzJ8C7IMOjwLsgvPYgvvi9wLTPtNkiCkVORAoKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgIElEU19GSUxFRElBTE9HX0lNUE9SVF9USVRMRSAgICK3ucDMwfa9usauIMbEwM8gutK3r7/AseIiCiAgIElEU19GSUxFRElBTE9HX0VYUE9SVF9USVRMRSAgICK3ucH2vbrGrriuIMbEwM8gs7u6uLO7seIiCiAgIElEU19GSUxFRElBTE9HX0ZJTFRFUiAgICAgICAgICK3ucH2vbrGrriuIMbEwM9cMCoucmVnXDBXaW45eC9OVDQgt7nB9r26xq64riDGxMDPIChSRUdFRElUNClcMCoucmVnXDC48LXnIMbEwM8gKCouKilcMCouKlwwXDAiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgSURTX1JFR0lTVFJZX1JPT1RfTkFNRSAgICAgICAgICAgIrO7IMTEx7vFzSIKICAgSURTX1JFR0lTVFJZX0RFRkFVTFRfVkFMVUUgICAgICAgIiix4rq7KSIKICAgSURTX1JFR0lTVFJZX1ZBTFVFX05PVF9TRVQgICAgICAgIiiwqsDMIMGkx9jB9sH2IL7KwL0pIgogICBJRFNfUkVHSVNUUllfVkFMVUVfQ0FOVF9ESVNQTEFZICAiKLCqwLsguri/qSDB2bz2IL74wL0pIgogICBJRFNfUkVHSVNUUllfVU5LTk9XTl9UWVBFICAgICAgICAiKL7LILz2IL74tMIgJWQpIgpFTkQKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgoKLyoKICogVEVYVElOQ0xVREUKICovCgoxIFRFWFRJTkNMVURFIERJU0NBUkRBQkxFCkJFR0lOCiAgICAicmVzb3VyY2UuaFwwIgpFTkQKCgoKLyoKICogU3RyaW5nIFRhYmxlCiAqLwoKLyoKICpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQogKkJFR0lOCiAqICAgIElEX0hFTFBfSEVMUFRPUElDUyAgICAgICK3ucH2vbrGrriuIMbtwf2x4iC1tb/yuLsgv62x4i4iCiAqICAgIElEX0hFTFBfQUJPVVQgICAgICAgICAgICLHrrHXuLIgwaS6uCy59sGvLCDA+sDbsccguri/qcHWseIuIgogKkVORAogKi8KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K