LyoKICogSGVscCBWaWV3ZXIKICoKICogQ29weXJpZ2h0IDE5OTYgVWxyaWNoIFNjaG1pZAogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICovCgpNQUlOX01FTlUgTUVOVSBMQU5HVUFHRSBMQU5HX1NMT1ZBSywgU1VCTEFOR19ERUZBVUxUCnsKIFBPUFVQICImU/pib3IiIHsKICAgTUVOVUlURU0gIiZPdHZvcmmdLi4uIiwgMHgxMDEKICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgIE1FTlVJVEVNICImVGxh6GmdIiwgMHgxMDQKICAgTUVOVUlURU0gIiZOYXN0YXZlbmllIHRsYehlLi4uIiwgMHgxMDYKICAgTUVOVUlURU0gIlUma29u6GmdIiwgMHgxMDgKIH0KIFBPUFVQICImVXByYXZpnSIgewogICBNRU5VSVRFTSAiS29w7SZyb3ZhnS4uLiIsIDB4MTBhCiAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICBNRU5VSVRFTSAiJlNrb21lbnRvdmGdLi4uIiwgMHgxMGMKIH0KIFBPUFVQICImWuFsb55rYSIgewogICBNRU5VSVRFTSAiJkRlZmlub3ZhnS4uLiIsIDB4MTBlCiB9CiBQT1BVUCAiJlBvbW9jIiB7CiAgIE1FTlVJVEVNICJQb21vYyAmbmEgcG9tb2NpIiwgMHgxMTAKICAgTUVOVUlURU0gIlaeZHkgbmEgJnZyY2h1IiwgMHgxMTEKICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgIE1FTlVJVEVNICImSW5mby4uLiIsIDB4MTEzCiNpZmRlZiBXSU5FTElCCiAgIE1FTlVJVEVNICJPJiBXSU5FIiwgMHgxMTQKI2VuZGlmCiB9Cn0KCi8qIFN0cmluZ3MgKi8KU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUgTEFOR1VBR0UgTEFOR19TTE9WQUssIFNVQkxBTkdfREVGQVVMVAp7CldJTkVfSEVMUCwgICAgICAgICAgICAgIldJTkUgUG9tb2MiCldIRVJST1IsICAgICAgICAgICAgICAgIkNIWUJBIgpXQVJOSU5HLCAgICAgICAgICAgICAgICJWQVJPVkFOSUUiCklORk8sICAgICAgICAgICAgICAgICAgIkluZm9ybeFjaWUiCk5PVF9JTVBMRU1FTlRFRCwgICAgICAgIk5laW1wbGVtZW50b3ZhbukiCkhMUEZJTEVfRVJST1JfcywgICAgICAgIkNoeWJhIHBv6GFzIOjtdGFuaWEgc/pib3J1IGAlcyciCkNPTlRFTlRTLCAgICAgICAgICAgICAgIiZPYnNhaCIKU0VBUkNILCAgICAgICAgICAgICAgICAiJki+YWRhnSIKQkFDSywgICAgICAgICAgICAgICAgICAiJlNw5J0iCkhJU1RPUlksICAgICAgICAgICAgICAgIiZIaXN083JpYSIKQUxMX0ZJTEVTLCAgICAgICAgICAgICAiVppldGt5IHP6Ym9yeSAoKi4qKSIKSEVMUF9GSUxFU19ITFAsICAgICAgICAiU/pib3J5IHBvbW9jaSAoKi5obHApIgp9Cg==