LyoKICoJT0xFMk5MUyBsaWJyYXJ5CiAqICAgICAgU3BhbmlzaCAoUGFuYW1hKQogKgogKiBDb3B5cmlnaHQgMTk5OCBNYXJjZWwgQmF1cgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICovCgpMT0NWQUwoTE9DQUxFX0lMQU5HVUFHRSwiMTgwYSIpCkxPQ1ZBTChMT0NBTEVfU0xBTkdVQUdFLCJFc3Bh8W9sIikKTE9DVkFMKExPQ0FMRV9TRU5HTEFOR1VBR0UsIlNwYW5pc2giKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSwiZXNhIikKTE9DVkFMKExPQ0FMRV9TTkFUSVZFTEFOR05BTUUsIkVzcGHxb2wiKQpMT0NWQUwoTE9DQUxFX0lDT1VOVFJZLCAiNTA3IikKTE9DVkFMKExPQ0FMRV9TQ09VTlRSWSwiUGFuYW3hIikKTE9DVkFMKExPQ0FMRV9TRU5HQ09VTlRSWSwiUGFuYW1hIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUsIlBBTiIpCkxPQ1ZBTChMT0NBTEVfU05BVElWRUNUUllOQU1FLCJQYW5hbeEiKQpMT0NWQUwoTE9DQUxFX0lERUZBVUxUTEFOR1VBR0UsIjA0MGEiKQpMT0NWQUwoTE9DQUxFX0lERUZBVUxUQ09VTlRSWSwiMzQiKQpMT0NWQUwoTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UsIjg1MCIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UsIjEyNTIiKQpMT0NWQUwoTE9DQUxFX1NMSVNULCAiLCIpCkxPQ1ZBTChMT0NBTEVfSU1FQVNVUkUsICIwIikKTE9DVkFMKExPQ0FMRV9TREVDSU1BTCwgIi4iKQpMT0NWQUwoTE9DQUxFX1NUSE9VU0FORCwgIiwiKQpMT0NWQUwoTE9DQUxFX1NHUk9VUElORywgIjM7MCIpCkxPQ1ZBTChMT0NBTEVfSURJR0lUUywgIjIiKQpMT0NWQUwoTE9DQUxFX0lMWkVSTywgIjEiKQpMT0NWQUwoTE9DQUxFX0lORUdOVU1CRVIsICIxIikKTE9DVkFMKExPQ0FMRV9TTkFUSVZFRElHSVRTLCAiMDEyMzQ1Njc4OSIpCkxPQ1ZBTChMT0NBTEVfU0NVUlJFTkNZLCJCIikKTE9DVkFMKExPQ0FMRV9TSU5UTFNZTUJPTCwgIlBBQiIpCkxPQ1ZBTChMT0NBTEVfU01PTkRFQ0lNQUxTRVAsICIuIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAsICIsIikKTE9DVkFMKExPQ0FMRV9TTU9OR1JPVVBJTkcsIjM7MCIpCkxPQ1ZBTChMT0NBTEVfSUNVUlJESUdJVFMsICIyIikKTE9DVkFMKExPQ0FMRV9JSU5UTENVUlJESUdJVFMsICIyIikKTE9DVkFMKExPQ0FMRV9JQ1VSUkVOQ1ksICIyIikKTE9DVkFMKExPQ0FMRV9JTkVHQ1VSUiwgIjE0IikKTE9DVkFMKExPQ0FMRV9TREFURSwgIi8iKQpMT0NWQUwoTE9DQUxFX1NUSU1FLCAiOiIpCkxPQ1ZBTChMT0NBTEVfU1NIT1JUREFURSwgIk1NL2RkL3l5IikKTE9DVkFMKExPQ0FMRV9TTE9OR0RBVEUsICJkZGRkLCBkZCcgZGUgJ01NTU0nIGRlICd5eXl5IikKTE9DVkFMKExPQ0FMRV9TVElNRUZPUk1BVCwgImhoOm1tOnNzIHR0IikKTE9DVkFMKExPQ0FMRV9JREFURSwgIjAiKQpMT0NWQUwoTE9DQUxFX0lMREFURSwgIjEiKQpMT0NWQUwoTE9DQUxFX0lUSU1FLCIxIikKTE9DVkFMKExPQ0FMRV9JVElNRU1BUktQT1NOLCAiMCIpCkxPQ1ZBTChMT0NBTEVfSUNFTlRVUlksICIwIikKTE9DVkFMKExPQ0FMRV9JVExaRVJPLCIxIikKTE9DVkFMKExPQ0FMRV9JREFZTFpFUk8sICIxIikKTE9DVkFMKExPQ0FMRV9JTU9OTFpFUk8sICIxIikKTE9DVkFMKExPQ0FMRV9TMTE1OSwgImEubS4iKQpMT0NWQUwoTE9DQUxFX1MyMzU5LCAicC5tLiIpCkxPQ1ZBTChMT0NBTEVfSUNBTEVOREFSVFlQRSwgIjEiKQpMT0NWQUwoTE9DQUxFX0lPUFRJT05BTENBTEVOREFSLCAiMCIpCkxPQ1ZBTChMT0NBTEVfSUZJUlNUREFZT0ZXRUVLLCAiNiIpCkxPQ1ZBTChMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiwgIjAiKQoKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTEsImx1bmVzIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTIsIm1hcnRlcyIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUUzLCJtaelyY29sZXMiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNCwianVldmVzIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTUsInZpZXJuZXMiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNiwic+FiYWRvIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTcsImRvbWluZ28iKQoKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTEsImx1biIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUUyLCJtYXIiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FMywibWnpIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTQsImp1ZSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUU1LCJ2aWUiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiwic+FiIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTcsImRvbSIpCgpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxLCJlbmVybyIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTIsImZlYnJlcm8iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUzLCJtYXJ6byIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTQsImFicmlsIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FNSwibWF5byIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTYsImp1bmlvIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FNywianVsaW8iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU4LCJhZ29zdG8iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU5LCJzZXB0aWVtYnJlIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTAsIm9jdHVicmUiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMSwibm92aWVtYnJlIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTIsImRpY2llbWJyZSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEzLCIiKQoKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSwiZW5lIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiwiZmViIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMywibWFyIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCwiYWJyIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSwibWF5IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiwianVuIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNywianVsIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCwiYWdvIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSwic2VwIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAsIm9jdCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExLCJub3YiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMiwiZGljIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMsIiIpCgpMT0NWQUwoTE9DQUxFX1NQT1NJVElWRVNJR04sICIiKQpMT0NWQUwoTE9DQUxFX1NORUdBVElWRVNJR04sICItIikKTE9DVkFMKExPQ0FMRV9JUE9TU0lHTlBPU04sICIzIikKTE9DVkFMKExPQ0FMRV9JTkVHU0lHTlBPU04sICIwIikKTE9DVkFMKExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMsICIxIikKTE9DVkFMKExPQ0FMRV9JUE9TU0VQQllTUEFDRSwgIjEiKQpMT0NWQUwoTE9DQUxFX0lORUdTWU1QUkVDRURFUywgIjEiKQpMT0NWQUwoTE9DQUxFX0lORUdTRVBCWVNQQUNFLCAiMSIpCkxPQ1ZBTChMT0NBTEVfRk9OVFNJR05BVFVSRSwgIi8iKQpMT0NWQUwoTE9DQUxFX1NJU082MzlMQU5HTkFNRSwiZXMiKQpMT0NWQUwoTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIlBBIikKTE9DVkFMKExPQ0FMRV9JREVGQVVMVEVCQ0RJQ0NPREVQQUdFLCAiMjAyODQiKQpMT0NWQUwoTE9DQUxFX0lQQVBFUlNJWkUsICIxIikKTE9DVkFMKExPQ0FMRV9TRU5HQ1VSUk5BTUUsICJQYW5hbWFuaWFuIEJhbGJvYSIpCkxPQ1ZBTChMT0NBTEVfU05BVElWRUNVUlJOQU1FLCAiQmFsYm9hIikKTE9DVkFMKExPQ0FMRV9TWUVBUk1PTlRILCAiTU1NTScgZGUgJ3l5eXkiKQpMT0NWQUwoTE9DQUxFX1NTT1JUTkFNRSwgIkRlZmF1bHQiKQpMT0NWQUwoTE9DQUxFX0lESUdJVFNVQlNUSVRVVElPTiwgIiIiIikK