LyogSGV5LCBFbWFjcywgb3BlbiB0aGlzIGZpbGUgd2l0aCAtKi0gY29kaW5nOiBjcDEyNTAgLSotCiAqCiAqIEhlbHAgVmlld2VyIEN6ZWNoIHJlc291cmNlcwogKgogKiBDb3B5cmlnaHQgMTk5NiBVbHJpY2ggU2NobWlkCiAqIENvcHlyaWdodCAyMDAyIFN5bHZhaW4gUGV0cmVvbGxlCiAqIENvcHlyaWdodCAyMDA0IERhdmlkIEtyZWRiYQogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgovKiBDemVjaCBzdHJpbmdzIGluIENQMTI1MCAqLwoKLyogTWVudSAqLwoKTUFJTl9NRU5VIE1FTlUgTEFOR1VBR0UgTEFOR19DWkVDSCwgU1VCTEFOR19ERUZBVUxUCnsKIFBPUFVQICImU291Ym9yIiB7CiAgTUVOVUlURU0gIiZPdGV2+O10IiwgTU5JRF9GSUxFX09QRU4KICBNRU5VSVRFTSBTRVBBUkFUT1IKICBNRU5VSVRFTSAiJlRpc2siLCBNTklEX0ZJTEVfUFJJTlQKICBNRU5VSVRFTSAiTmEmc3RhdmVu7SB0aXNrdS4uLiIsIE1OSURfRklMRV9TRVRVUAogICBNRU5VSVRFTSBTRVBBUkFUT1IKICBNRU5VSVRFTSAiJktvbmVjIiwgTU5JRF9GSUxFX0VYSVQKIH0KIFBPUFVQICLacHJhdiZ5IiB7CiAgIE1FTlVJVEVNICImS29w7XJvdmF0Li4uIiwgTU5JRF9FRElUX0NPUFlETEcKICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgIE1FTlVJVEVNICJQJm96bmFtZW5hdCBzaS4uLiIsIE1OSURfRURJVF9BTk5PVEFURQogfQogUE9QVVAgIiZa4WxvnmthIiB7CiAgIE1FTlVJVEVNICJQ+GkmZGF0Li4uIiwgTU5JRF9CS01LX0RFRklORQogfQogUE9QVVAgIiZPcHRpb25zIiB7CiAgIFBPUFVQCSJIZWxwIGFsd2F5cyB2aXNpYmxlIgogICBCRUdJTgogICAgIE1FTlVJVEVNICJEZWZhdWx0IiwJTU5JRF9PUFRTX0hFTFBfREVGQVVMVAogICAgIE1FTlVJVEVNICJWaXNpYmxlIiwJTU5JRF9PUFRTX0hFTFBfVklTSUJMRQogICAgIE1FTlVJVEVNICJOb24gdmlzaWJsZSIsCU1OSURfT1BUU19IRUxQX05PTlZJU0lCTEUKICBFTkQKICBNRU5VSVRFTSAiSGlzdG9yeSIsCQlNTklEX09QVFNfSElTVE9SWQogIFBPUFVQICAgICJGb250cyIKICBCRUdJTgogICAgTUVOVUlURU0gIlNtYWxsIiwJCU1OSURfT1BUU19GT05UU19TTUFMTAogICAgTUVOVUlURU0gIk5vcm1hbCIsICAgIAlNTklEX09QVFNfRk9OVFNfTk9STUFMCiAgICBNRU5VSVRFTSAiTGFyZ2UiLCAgICAgCU1OSURfT1BUU19GT05UU19MQVJHRQogIEVORAogIE1FTlVJVEVNICJVc2Ugc3lzdGVtIGNvbG9ycyIsCU1OSURfT1BUU19TWVNURU1fQ09MT1JTCiB9CiBQT1BVUCAiJk7hcG927GRhIiB7CiAgIE1FTlVJVEVNICJO4XAmb3bsZGEgayBu4XBvduxk7CIsIE1OSURfSEVMUF9IRUxQT04KICAgTUVOVUlURU0gIlaeZHkgbmEgJnZyY2h1IiwgTU5JRF9IRUxQX0hFTFBUT1AKICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgIE1FTlVJVEVNICImSW5mb3JtYWNlLi4uIiwgTU5JRF9IRUxQX0FCT1VUCiNpZmRlZiBXSU5FTElCCiAgIE1FTlVJVEVNICJPICZXSU5FIiwgTU5JRF9IRUxQX1dJTkUKI2VuZGlmCiB9Cn0KCi8qIFN0cmluZ3MgKi8KU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUgTEFOR1VBR0UgTEFOR19DWkVDSCwgU1VCTEFOR19ERUZBVUxUCnsKU1RJRF9XSU5FX0hFTFAsIAkiTuFwb3bsZGEgV0lORSIKU1RJRF9XSEVSUk9SLCAJCSJDSFlCQSIKU1RJRF9XQVJOSU5HLCAgCQkiVkFST1bBTs0iClNUSURfSU5GTywgIAkJIkluZm9ybWFjZSIKU1RJRF9OT1RfSU1QTEVNRU5URUQsIAkiTmVu7SBpbXBsZW1lbnRvduFubyIKU1RJRF9ITFBGSUxFX0VSUk9SX3MsIAkiTmVsemUgcPhl6O1zdCBzb3Vib3IgbuFwb3bsZHkgYCVzJyIKU1RJRF9JTkRFWCwgCQkiJk9ic2FoIgpTVElEX0NPTlRFTlRTLAkJIlN1bW1hcnkiClNUSURfQkFDSywgCQkiJlpw7HQiClNUSURfQUxMX0ZJTEVTLCAJIlaaZWNobnkgc291Ym9yeSAoKi4qKSIKU1RJRF9IRUxQX0ZJTEVTX0hMUCwgCSJTb3Vib3J5IG7hcG927GR5ICgqLmhscCkiClNUSURfRklMRV9OT1RfRk9VTkRfcwkiQ2Fubm90IGZpbmQgJyVzJy4gRG8geW91IHdhbnQgdG8gZmluZCB0aGlzIGZpbGUgeW91cnNlbGY/IgpTVElEX05PX1JJQ0hFRElUCSJDYW5ub3QgZmluZCBhIHJpY2hlZGl0IGltcGxlbWVudGF0aW9uLi4uIEFib3J0aW5nIgpTVElEX1BTSF9JTkRFWCwJCSJIZWxwIHRvcGljczogIgp9Cg==