LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBHYWxpY2lhbgogKgogKiBDb3B5cmlnaHQgMjAwMiBBbGV4YW5kcmUgSnVsbGlhcmQgZm9yIENvZGV3ZWF2ZXJzCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKi8KCiNwcmFnbWEgY29kZV9wYWdlKDEyNTIpCgpTVFJJTkdUQUJMRSBMQU5HVUFHRSBMQU5HX0dBTElDSUFOLCBTVUJMQU5HX0RFRkFVTFQKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMDJmXHg4MDAwXHgzODA4XHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAxXHgwMDAwXHgwMDAwXHg0MDAwXHgwMDAzXHgwMDAwXHgwMDAwXHhjNWQ0IgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMCIKICBMT0NBTEVfSUNPVU5UUlkgIjM0IgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUNVUlJFTkNZICIyIgogIExPQ0FMRV9JREFURSAiMSIKICBMT0NBTEVfSURBWUxaRVJPICIxIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiMTI1MiIKICBMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSAiODUwIgogIExPQ0FMRV9JREVGQVVMVENPVU5UUlkgIjM0IgogIExPQ0FMRV9JREVGQVVMVEVCQ0RJQ0NPREVQQUdFICI1MDAiCiAgTE9DQUxFX0lERUZBVUxUTEFOR1VBR0UgIjA0MGEiCiAgTE9DQUxFX0lERUZBVUxUTUFDQ09ERVBBR0UgIjEwMDAwIgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjEiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiMCIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMCIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjA0NTYiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIxIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIxIgogIExPQ0FMRV9JTkVHQ1VSUiAiOCIKICBMT0NBTEVfSU5FR05VTUJFUiAiMSIKICBMT0NBTEVfSU5FR1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lORUdTSUdOUE9TTiAiMSIKICBMT0NBTEVfSU5FR1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUiAiMCIKICBMT0NBTEVfSVBBUEVSU0laRSAiOSIKICBMT0NBTEVfSVBPU1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lQT1NTSUdOUE9TTiAiMSIKICBMT0NBTEVfSVBPU1NZTVBSRUNFREVTICIxIgogIExPQ0FMRV9JVElNRSAiMSIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMCIKICBMT0NBTEVfUzExNTkgImEubS4iCiAgTE9DQUxFX1MyMzU5ICJwLm0uIgogIExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUgIkVTUCIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUxICJsdW5zIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTIgIm1hciIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICJt6XIiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAieG92IgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTUgInZlbiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICJzYWIiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAiZG9tIgogIExPQ0FMRV9TQUJCUkVWTEFOR05BTUUgIkdMQyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEgInhhbiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIgImZlYiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMgIm1hciIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQgImFiciIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIm1haW8iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2ICJ4dfEiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3ICJ4dWxsIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCAiYWdvIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSAic2V0IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAgIm91dCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExICJub3YiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMiAiZGVjIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIlNwYWluIgogIExPQ0FMRV9TQ1VSUkVOQ1kgIoAiCiAgTE9DQUxFX1NEQVRFICIvIgogIExPQ0FMRV9TREFZTkFNRTEgImx1bnMiCiAgTE9DQUxFX1NEQVlOQU1FMiAibWFydGVzIgogIExPQ0FMRV9TREFZTkFNRTMgIm3pcmNvcmVzIgogIExPQ0FMRV9TREFZTkFNRTQgInhvdmVzIgogIExPQ0FMRV9TREFZTkFNRTUgInZlbnJlcyIKICBMT0NBTEVfU0RBWU5BTUU2ICJz4WJhZG8iCiAgTE9DQUxFX1NEQVlOQU1FNyAiZG9taW5nbyIKICBMT0NBTEVfU0RFQ0lNQUwgIiwiCiAgTE9DQUxFX1NFTkdDT1VOVFJZICJTcGFpbiIKICBMT0NBTEVfU0VOR0NVUlJOQU1FICJFdXJvIgogIExPQ0FMRV9TRU5HTEFOR1VBR0UgIkdhbGljaWFuIgogIExPQ0FMRV9TR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU0lOVExTWU1CT0wgIkVVUiIKICBMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSAiRVMiCiAgTE9DQUxFX1NJU082MzlMQU5HTkFNRSAiZ2wiCiAgTE9DQUxFX1NMQU5HVUFHRSAiR2FsaWNpYW4iCiAgTE9DQUxFX1NMSVNUICIsIgogIExPQ0FMRV9TTE9OR0RBVEUgImRkZGQsIGRkJyBkZSAnTU1NTScgZGUgJ3l5eXkiCiAgTE9DQUxFX1NNT05ERUNJTUFMU0VQICIsIgogIExPQ0FMRV9TTU9OR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU01PTlRITkFNRTEgInhhbmVpcm8iCiAgTE9DQUxFX1NNT05USE5BTUUyICJmZWJyZWlybyIKICBMT0NBTEVfU01PTlRITkFNRTMgIm1hcnpvIgogIExPQ0FMRV9TTU9OVEhOQU1FNCAiYWJyaWwiCiAgTE9DQUxFX1NNT05USE5BTUU1ICJtYWlvIgogIExPQ0FMRV9TTU9OVEhOQU1FNiAieHXxbyIKICBMT0NBTEVfU01PTlRITkFNRTcgInh1bGxvIgogIExPQ0FMRV9TTU9OVEhOQU1FOCAiYWdvc3RvIgogIExPQ0FMRV9TTU9OVEhOQU1FOSAic2V0ZW1icm8iCiAgTE9DQUxFX1NNT05USE5BTUUxMCAib3V0dWJybyIKICBMT0NBTEVfU01PTlRITkFNRTExICJub3ZlbWJybyIKICBMT0NBTEVfU01PTlRITkFNRTEyICJkZWNlbWJybyIKICBMT0NBTEVfU01PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NNT05USE9VU0FORFNFUCAiLiIKICBMT0NBTEVfU05BVElWRUNUUllOQU1FICJFc3Bh8WEiCiAgTE9DQUxFX1NOQVRJVkVDVVJSTkFNRSAiZXVybyIKICBMT0NBTEVfU05BVElWRURJR0lUUyAiMDEyMzQ1Njc4OSIKICBMT0NBTEVfU05BVElWRUxBTkdOQU1FICJnYWxlZ28iCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NIT1JUREFURSAiZGQvTU0veXkiCiAgTE9DQUxFX1NTT1JUTkFNRSAiRGVmYXVsdCIKICBMT0NBTEVfU1RIT1VTQU5EICIuIgogIExPQ0FMRV9TVElNRSAiOiIKICBMT0NBTEVfU1RJTUVGT1JNQVQgIkg6bW06c3MiCiAgTE9DQUxFX1NZRUFSTU9OVEggIk1NTU0nZGUgJ3l5eXkiCn0K