<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE module [
  <!ELEMENT module (dtdversion,name,version,description*,help*,about*,requires*,file+)>
  <!ELEMENT dtdversion (#PCDATA)>
  <!ELEMENT name (#PCDATA)>
  <!ELEMENT version (#PCDATA)>
  <!ELEMENT mincmsversion (#PCDATA)>
  <!ELEMENT description (#PCDATA)>
  <!ELEMENT help (#PCDATA)>
  <!ELEMENT about (#PCDATA)>
  <!ELEMENT requires (requiredname,requiredversion)>
  <!ELEMENT requiredname (#PCDATA)>
  <!ELEMENT requiredversion (#PCDATA)>
  <!ELEMENT file (filename,isdir,data)>
  <!ELEMENT filename (#PCDATA)>
  <!ELEMENT isdir (#PCDATA)>
  <!ELEMENT data (#PCDATA)>
]>
<module>
	<dtdversion>1.3</dtdversion>
	<name>CGFEUTwillio2FA</name>
	<version>1.0</version>
    <mincmsversion>2.2.10</mincmsversion>
	<help><![CDATA[PGgzPldoYXQgZG9lcyB0aGlzIGRvPzwvaDM+CjxwPlRoaXMgbW9kdWxlIGlzIGEgY29tcGFuaW9uIG1vZHVsZSB0byBGcm9udEVuZFVzZXJzICh2My4wKykgdGhhdCBwcm92aWRlcyBmb3IgdHdvIGZhY3RvciBhdXRoZW50aWNhdGlvbiAoMkZBKSB2aWEgU01TLiAgVXNlcnMgZW50ZXIgdGhlaXIgbm9ybWFsIHVzZXJuYW1lIGFuZCBwYXNzd29yZCBhbmQgdGhlbiBhcmUgc2VudCBhbiBTTVMgbWVzc2FnZSAodmlhIHR3aWxsaW8pIHdpdGggYSB1bmlxdWUgY29kZS4gIFRoZXkgbXVzdCB0aGVuIGVudGVyIHRoYXQgY29kZSBvbiBhIGZvcm0gdG8gY29uZmlybSB0aGUgbG9naW4uPC9wPgoKPHA+VGhpcyBtb2R1bGUgd29ya3MgYnkgdXNpbmcgdGhlIHZhbHVlIG9mIGEgcHJvcGVydHkgaW4gdGhlIEZFVSBtb2R1bGUgYXMgYW4gU01TIGNhcGFibGUgbnVtYmVyLiAgQWZ0ZXIgdGhlIHVzZXIgZW50ZXJzIHRoZWlyIG5vcm1hbCB1c2VybmFtZSBhbmQgcGFzc3dvcmQgKGFuZCBwb3NzaWJsZSBjYXB0Y2hhKSwgPHN0cm9uZz5BTkQgSUY8L3N0cm9uZz4gYSB2YWx1ZSBpcyBmb3VuZCBmb3IgdGhhdCBwcm9wZXJ0eSBmb3IgdGhlIHVzZXIgdGhhdCBpcyBsb2dnaW5nIGluLCAgYSB0ZXh0IG1lc3NhZ2UgaXMgc2VudCB0byB0aGUgdXNlciB3aXRoIGEgdW5pcXVlIGNvZGUuICBUaGUgdXNlciBtdXN0IGVudGVyIHRoZSBjb2RlIGNvbnRhaW5lZCBpbiB0aGUgdGV4dCBtZXNzYWdlIGludG8gYSBmb3JtIGluIHRoZSBtb2R1bGUuICAgSWYgdGhlIGRldGVjdGVkIG51bWJlciBpcyBmb3Igc29tZSByZWFzb24gaW52YWxpZCBPUiB0aGUgdXNlciBjYW5ub3QgZW50ZXIgdGhlIGNvZGUgY29ycmVjdGx5IHRoZXkgY2Fubm90IGNvbXBsZXRlIHRoZSBsb2dpbiBwcm9jZXNzLjwvcD4KCjxwPkJ5IGRlZmF1bHQgdGhpcyBtb2R1bGUgYWxsb3dzIGZvciBvcHRpb25hbCB0d28gZmFjdG9yIGF1dGhlbnRpY2F0aW9uLiAgdXNlcnMgdGhhdCBoYXZlIGEgdmFsdWUgZm9yIHRoZSBhcHByb3ByaWF0ZSBwcm9wZXJ0eSB1c2UgdHdvIGZhY3RvciBhdXRoZW50aWNhdGlvbi4gIFRvIG1ha2UgdHdvIGZhY3RvciBhdXRoZW50aWNhdGlvbiByZXF1aXJlZCBmb3IgYWxsIHVzZXJzIHlvdSBzaG91bGQgZW5hYmxlIHRoZSA8Y29kZT5jZ3R3aWxsaW8yZmFfcGhvbmVfcmVxdWlyZWQ8L2NvZGU+IGNvbmZpZyBlbnRyeS48L3A+Cgo8cD5UaGlzIG1vZHVsZSBwcm9iYWJseSBzaG91bGQgbm90IGJlIHVuc2VkIGluIGNvbmp1bmN0aW9uIHdpdGggbW9kdWxlcyB0aGF0IHByb3ZpZGUgYWx0ZXJuYXRlIGF1dGhlbnRpY2F0aW9uIG1lY2hhbmlzbXMgc3VjaCBhcyBDR0ZFVVR3aXR0ZXJBdXRoLCBldGMuPC9wPgoKPGgzPkhvdyBkbyBJIFVzZSBpdD88L2gzPgo8dWw+CiAgIDxsaT5JbnN0YWxsIHRoZSBtb2R1bGU8L2xpPgogICA8bGk+RW5zdXJlIHRoYXQgeW91IGhhdmUgYSBwcm9wZXJ0eSBpbiBGRVUgdGhhdCBjYW4gY29udGFpbiBhbiBTTVMgY2FwYWJsZSB0ZWxlcGhvbmUgbnVtYmVyIGZvciB5b3VyIHVzZXJzLiAgVGhpcyBwcm9wZXJ0eSBjYW4gYmUgb2YgdHlwZSB0ZWwgb3Igb2YgdHlwZSB0ZXh0PC9saT4KICAgPGxpPkFzc29jaWF0ZSB0aGUgcHJvcGVydHkgd2l0aCBhdCBsZWFzdCBvbmUgRkVVIHVzZXIgZ3JvdXAuPC9saT4KICAgPGxpPkVuc3VyZSB0aGF0IHNvbWUgdXNlcnMgaGF2ZSB2YWxpZCBTTVMgbnVtYmVycyBhY2NvY2lhdGVkIHdpdGggdGhlaXIgYWNjb3VudC48L2xpPgogICA8bGk+UmV0cmlldmUgYW5kIHNldCB0aGUgYXBwcm9wcmlhdGUgY29uZmlnIGVudHJpZXMgZnJvbSB0d2lsbGlvIGludG8gdGhlIGNvbmZpZy5waHAgZmlsZS48L2xpPgo8L3VsPgoKCjxoMz5Db25maWcgdmFyaWFibGVzPC9oMz4KPHVsPgogICA8bGk+PGNvZGU+dHdpbGxpb19zaWQ8L2NvZGU+IC0gPGVtPihzdHJpbmcgLSByZXF1aXJlZCk8L2VtPgogICAgICAgPHA+VGhlIFNJRCBmcm9tIHlvdXIgdHdpbGxpbyBjb25zb2xlLjwvcD4KICAgPC9saT4KICAgPGxpPjxjb2RlPnR3aWxsaW9fbnVtYmVyPC9jb2RlPiAtIDxlbT4oc3RyaW5nLSByZXF1aXJlZCk8L2VtPgogICAgICAgPHA+VGhlIG51bWJlciB0aGF0IGFsbCBTTVMgbWVzc2FnZXMgY29tZSBmcm9tLiAgWW91IGNhbiByZXRyaWV2ZSB0aGlzIGZyb20gZnJvbSB5b3VyIHR3aWxsaW8gY29uc29sZS48L3A+CiAgIDwvbGk+CiAgIDxsaT48Y29kZT50d2lsbGlvX2F1dGh0b2tlbjwvY29kZT4gLSA8ZW0+KHN0cmluZyAtIHJlcXVpcmVyZCk8L2VtPgogICAgICAgPHA+VGhlIGF1dGhvcml6YXRpb24gdG9rZW4gZnJvbSB5b3VyIHR3aWxsaW8gY29uc29sZS48L3A+CiAgIDwvbGk+CiAgIDxsaT48Y29kZT5jZ3R3aWxsaW8yZmFfZmV1X3Byb3BlcnR5PC9jb2RlPiAtIDxlbT4oc3RyaW5nIC0gb3B0aW9uYWwpPC9lbT4KICAgICAgIDxwPlRoZSBuYW1lIG9mIHRoZSBGRVUgcHJvcGVydHkgdG8gdXNlIGZvciBhbiBTTVMgY2FwYWJsZSBwaG9uZSBudW1iZXIuICBBbnkgdXNlciB0aGF0IGhhcyBhIHZhbHVlIGZvciB0aGlzIHByb3BlcnR5IHdpbGwgaGF2ZSAyRkEgZW5hYmxlZC48L3A+CiAgIDwvbGk+CiAgIDxsaT48Y29kZT5jZ3R3aWxsaW8yZmFfYWxsb3dsb25nZXJtPC9jb2RlPiAtIDxlbT4oYm9vbCAtIG9wdGlvbmFsKTwvZW0+CiAgICAgICA8cD5JbmRpY2F0ZXMsIHRoYXQgd2hlbiB0aGUgdXNlciBpcyBhdXRoZW50aWNhdGVkLCB0aGV5IHNob3VsZCBiZSBhdXRoZW50aWNhdGVkIHdpdGggYSBsb25nIHRlcm0gY29va2llLCBub3QgYSBzZXNzaW9uIGNvb2tpZS48L3A+CiAgIDwvbGk+CiAgIDxsaT48Y29kZT5jZ3R3aWxsaW8yZmFfcGhvbmVfcmVxdWlyZWQ8L2NvZGU+IC0gPGVtPihib29sIC0gb3B0aW9uYWwpPC9lbT4KICAgICAgIDxwPklmIGVuYWJsZWQsIHR3byBmYWN0b3IgYXV0aGVudGljYXRpb24gaXMgcmVxdWlyZWQgZm9yIGFsbCB1c2Vycy48L3A+CiAgIDwvbGk+CjwvdWw+Cgo8aDM+UGFyYW1ldGVyczo8L2gzPgo8dWw+CiAgICA8bGk+dGVtcGxhdGUgLSAoc3RyaW5nKSBkZWZhdWx0PTxjb2RlPm1vZHVsZV9maWxlX3RwbDtDR0ZFVVR3aWxsaW8yRkE7ZGVmYXVsdC50cGw8L2NvZGU+CiAgICAgICAgPHA+U3BlY2lmeSB0aGUgbmFtZSBvZiBhbiBvcHRpb25hbCB0ZW1wbGF0ZSBmaWxlLiAgU21hcnR5IHJlc291cmNlcyBhcmUgdmFsaWQgaGVyZS4KCSAgIElmIHlvdSBkbyBub3Qgc3BlY2lmeSBhIHNtYXJ0eSByZXNvdXJjZSwgYW5kIHRoZSBuYW1lIGVuZHMgd2l0aCAudHBsIHRoZW4gdGhlIHN5c3RlbSB3aWxsIGFzc3VtZSBhIG1vZHVsZSBmaWxlIHRlbXBsYXRlLgoJICAgSWYgbm8gLnRwbCBzdWZmaXggaXMgc3BlY2lmaWVkLCB0aGVuIHRoZSBzeXN0ZW0gd2lsbCBhc3N1bWUgYSB0ZW1wbGF0ZSB3aXRoaW4gZGVzaWduIG1hbmFnZXIuPC9wPgogICAgPC9saT4KPC91bD4KCgo8aDM+SG9va3M8L2gzPgo8dWw+CiAgIDxsaT48Y29kZT5DR0ZFVVR3aWxsaW8yRkE6OkFmdGVyVmVyaWZ5PC9jb2RlPgogICAgICAgPHA+VHJpZ2dlcmVkIGFmdGVyIHRoZSB1c2VyIGhhcyBjb21wbGV0ZWQgdGhlIHZlcmlmaWNhdGlvbiBwcm9jZXNzLjwvcD4KICAgICAgIDxwPlBhcmFtZXRlcnMgKGFzIGFuIGFzc29jaWF0aXZlIGFycmF5KTo8L3A+CiAgICAgICA8dWw+CiAgICAgICAgICA8bGk+dWlkIChpbnQpIC0gVGhlIHVzZXJpZCBhc3NvY2lhdGVkIHdpdGggdGhlIGFjY291bnQuPC9saT4KICAgICAgICAgIDxsaT51c2VybmFtZSAoc3RyaW5nKSAtIFRoZSB1c2VyIGVudGVyZWQgdXNlcm5hbWUuPC9saT4KICAgICAgICAgIDxsaT5waG9uZSAoc3RyaW5nKSAtIFRoZSBkZXRlY3RlZCBTTVMgbnVtYmVyPC9saT4KICAgICAgIDwvdWw+CiAgICAgICA8cD5UbyBnZW5lcmF0ZSBhIHdlbGwgaGFuZGxlZCBlcnJvciwgaGFuZGxlcnMgc2hvdWxkIHRocm93IGFuIGV4Y2VwdGlvbiBkZXJpdmVkIGZyb20gUnVudGltZUV4Y2VwdGlvbi48L3A+CiAgIDwvbGk+CiAgIDxsaT48Y29kZT5DR0ZFVVR3aWxsaW8yRkE6OkF1dGhGYWlsZWQ8L2NvZGU+CiAgICAgICA8cD5UcmlnZ2VyZWQgd2hlbiB0aGUgdXNlciBoYXMgZW50ZXJlZCBhbiBpbnZhbGlkIFNNUyBjb2RlLjwvPgogICAgICAgPHA+UGFyYW1ldGVycyAoYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkpOjwvcD4KICAgICAgIDx1bD4KICAgICAgICAgIDxsaT51aWQgKGludCkgLSBUaGUgdXNlcmlkIGFzc29jaWF0ZWQgd2l0aCB0aGUgYWNjb3VudC48L2xpPgogICAgICAgICAgPGxpPnVzZXJuYW1lIChzdHJpbmcpIC0gVGhlIHVzZXIgZW50ZXJlZCB1c2VybmFtZS48L2xpPgogICAgICAgPC91bD4KICAgPC9saT4KPC91bD4KCjxoMz5Ud2lsbGlvPC9oMz4KPHA+VHdpbGxpbyBpcyBhIHBhaWQgc2VydmljZSwgYW5kIHJlcXVpcmVzIGEgc3Vic2NyaXB0aW9uLiAgIFRoZSBkZXZlbG9wZXIocykgb2YgdGhpcyBtb2R1bGUgYXJlIGluIG5vIHdheSBhc3NvY2lhdGVkIHdpdGggdHdpbGxpby48L3A+Cgo8aDM+U3VwcG9ydDwvaDM+CjxwPlRoZSBtb2R1bGUgYXV0aG9yIGlzIGluIG5vIHdheSBvYmxpZ2F0ZWQgdG8gcHJvdmlkZSBzdXBwb3J0IGZvciB0aGlzIGNvZGUgaW4gYW55IGZhc2hpb24uICBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4KPHVsPgo8bGk+QSBidWcgdHJhY2tpbmcgYW5kIGZlYXR1cmUgcmVxdWVzdCBzeXN0ZW0gaGFzIGJlZW4gY3JlYXRlZCBmb3IgdGhpcyBtb2R1bGUgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9jZ2Jsb2ciPmhlcmU8L2E+LiAgUGxlYXNlIGJlIHZlcmJvc2UgYW5kIGRlc2NyaXB0aXZlIHdoZW4gc3VibWl0dGluZyBidWcgcmVwb3J0cyBhbmQgZmVhdHVyZSByZXF1ZXN0cywgYW5kIGZvciBidWcgcmVwb3J0cyBlbnN1cmUgdGhhdCB5b3UgaGF2ZSBwcm92aWRlZCBzdWZmaWNpZW50IGluZm9ybWF0aW9uIHRvIHJlbGlhYmx5IHJlcHJvZHVjZSB0aGUgaXNzdWUuPC9saT4KPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi4gIFdoZW4gZGVzY3JpYmluZyBhbiBpc3N1ZSBwbGVhc2UgbWFrZSBhbiBlZmZvcnQgdG8gcHJvdmlkZSBhbGwgcmVsYXZhbnQgaW5mb3JtYXRpb24sIGEgdGhvcm91Z2ggZGVzY3JpcHRpb24gb2YgeW91ciBpc3N1ZSwgYW5kIHN0ZXBzIHRvIHJlcHJvZHVjZSBpdCBvciB5b3VyIGRpc2N1c3Npb24gbWF5IGJlIGlnbm9yZWQuPC9saT4KPGxpPlRoZSBhdXRob3IsIGNhbGd1eTEwMDAsIGNhbiBvZnRlbiBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zIj5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+CjxsaT5MYXN0bHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvciBkaXJlY3RseS4gIEhvd2V2ZXIsIHBsZWFzZSB1c2UgdGhpcyBhcyBhIGxhc3QgcmVzb3J0LCBhbmQgZW5zdXJlIHRoYXQgeW91IGhhdmUgZm9sbG93ZWQgYWxsIGFwcGxpY2FibGUgaW5zdHJ1Y3Rpb25zIG9uIHRoZSBmb3JnZSwgaW4gdGhlIGZvcnVtcywgZXRjLjwvbGk+CjwvdWw+Cgo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDE5LCBSb2JlcnQgQ2FtcGJlbGwgPGEgaHJlZj0ibWFpbHRvOmNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmciPiZsdDtjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnJmd0OzwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi48L3A+CjxwPkhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAphcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwpNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4Kc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS48L3A+CjxwPlRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLApidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgpNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCmFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCk9yIHJlYWQgaXQgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5vbmxpbmU8L2E+PC9wPgo8aDM+RGVwZW5kZW5jaWVzPC9oMz48dWw+PGxpPkNHRXh0ZW5zaW9ucyA9Jmd0OyAxLjY0LjI8L2xpPjxsaT5Gcm9udEVuZFVzZXJzID0mZ3Q7IDIuOTk8L2xpPjwvdWw+]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBjYWxndXkxMDAwICZsdDtjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDEuMDxiciAvPg==]]></about>
	<requires>
	  <requiredname>CGExtensions</requiredname>
	  <requiredversion>1.64.2</requiredversion>
	</requires>
	<requires>
	  <requiredname>FrontEndUsers</requiredname>
	  <requiredversion>2.99</requiredversion>
	</requires>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.verify.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVVHdpbGxpbzJGQTsKdXNlIGNnZV9wYXJhbTsKdXNlIGNnZV91dGlsczsKdXNlIENNU01TXEhvb2tNYW5hZ2VyOwoKdHJ5IHsKICAgIC8vIG1ha2Ugc3VyZSB3ZSBhcmUgY29uZmlndXJlZAogICAgJHNldHRpbmdzID0gJHRoaXMtPmdldF9zZXR0aW5ncygpOwogICAgaWYoICEkc2V0dGluZ3MtPmlzX2NvbmZpZ3VyZWQoKSApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJHRoaXMtPkdldE5hbWUoKS4nIGlzIG1pc3Npbmcgc29tZSBjb25maWcgaW5mb3JtYXRpb24nKTsKICAgICRmZXUgPSAkdGhpcy0+R2V0TW9kdWxlSW5zdGFuY2UoTU9EX0ZST05URU5EVVNFUlMpOwogICAgJG1hZ2ljID0gY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsICdtYWdpYycpOwogICAgJHRoZXRlbXBsYXRlID0gY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsICd0ZW1wbGF0ZScsICd2ZXJpZnkudHBsJyk7CiAgICAkZmluYWxfbWVzc2FnZSA9ICRlcnJvciA9ICRzdGF0ZSA9IG51bGw7CgogICAgaWYoICR0aGlzLT5zZXNzaW9uX2dldCgnZmV1X2FmdGVycG9zdCcpID09IDEgKSB7CiAgICAgICAgJHRoaXMtPnNlc3Npb25fY2xlYXIoJ2ZldV9hZnRlcnBvc3QnKTsKICAgICAgICAkZmluYWxfbWVzc2FnZSA9ICR0aGlzLT5MYW5nKCdtc2dfbG9naW5fc3VjY2VzcycpOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJHN0YXRlID0gJHRoaXMtPmF1dGhNYW5hZ2VyKCktPnJldHJpZXZlKCRtYWdpYyk7CiAgICAgICAgaWYoICEkc3RhdGUgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdDYW5ub3QgcmV0cmlldmVkIHN0b3JlZCBhdXRoZGF0YScpOwoKICAgICAgICBpZiggIWVtcHR5KCRfUE9TVCkgKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBpZiggIWNnZV91dGlsczo6dmFsaWRfZm9ybV9jc3JmKCkgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oICR0aGlzLT5MYW5nKCdlcnJfc2VjdXJpdHknKSApOwogICAgICAgICAgICAgICAgLy8gdG9kbzogcmF0ZSBsaW1pdGluZwoKICAgICAgICAgICAgICAgIGlmKCBjZ2VfcGFyYW06OmV4aXN0cygkcGFyYW1zLCAnc3VibWl0JykgKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gZ2V0IHRoZSBzbXMgY29kZSBmcm9tIHRoZSBmb3JtCiAgICAgICAgICAgICAgICAgICAgJHRlc3Rjb2RlID0gY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsICdzbXNjb2RlJyk7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmF1dGhNYW5hZ2VyKCktPnZhbGlkYXRlX2NvZGUoJHN0YXRlLCAkdGVzdGNvZGUpOwogICAgICAgICAgICAgICAgICAgIEhvb2tNYW5hZ2VyOjpkb19ob29rKCdDR0ZFVVR3aWxsaW8yRkE6OkFmdGVyVmVyaWZ5JywgWyAndWlkJz0+JHN0YXRlLT51aWQsICdwaG9uZSc9PiRzdGF0ZS0+cGhvbmVdICk7CgogICAgICAgICAgICAgICAgICAgIC8vIG5vdyBkbyB0aGUgbG9naW4sCiAgICAgICAgICAgICAgICAgICAgJGZldS0+U2V0VXNlckxvZ2dlZGluKCRzdGF0ZS0+dWlkLCAkc3RhdGUtPmxvbmd0ZXJtICYmICRzZXR0aW5ncy0+YWxsb3dfbG9uZ3Rlcm0pIDsKCiAgICAgICAgICAgICAgICAgICAgLy8gd2UgYXJlIGRvbmUKICAgICAgICAgICAgICAgICAgICAvLyByZWRpcmVjdCBhZ2FpbgogICAgICAgICAgICAgICAgICAgICR0aGlzLT5zZXNzaW9uX3B1dCgnZmV1X2FmdGVycG9zdCcsIDEpOwogICAgICAgICAgICAgICAgICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsICd2ZXJpZnknLCAkcmV0dXJuaWQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGNhdGNoKCBcUnVudGltZUV4Y2VwdGlvbiAkZSApIHsKICAgICAgICAgICAgICAgIEhvb2tNYW5hZ2VyOjpkb19ob29rKCdDR0ZFVVR3aWxsaW8yRkE6OkF1dGhGYWlsZWQnLCBbJ3VzZXJuYW1lJz0+JHN0YXRlLT51c2VybmFtZSwgJ3VpZCc9PiR1aWQgXSk7CiAgICAgICAgICAgICAgICAkZXJyb3IgPSAkZS0+R2V0TWVzc2FnZSgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICR0cGwgPSAkdGhpcy0+Q3JlYXRlU21hcnR5VGVtcGxhdGUoJHRoZXRlbXBsYXRlKTsKICAgICR0cGwtPmFzc2lnbignZmluYWxfbWVzc2FnZScsICRmaW5hbF9tZXNzYWdlKTsKICAgICR0cGwtPmFzc2lnbignZXJyb3InLCAkZXJyb3IpOwogICAgJHRwbC0+YXNzaWduKCdkYXRhJywgJHN0YXRlKTsKICAgICR0cGwtPmFzc2lnbignbWFnaWMnLCAkbWFnaWMpOwogICAgJHRwbC0+YXNzaWduKCdwcm9tcHRfdXNlcm5hbWUnLCAgJHRoaXMtPkxhbmcoJ3VzZXJuYW1lJykpOwogICAgJHRwbC0+ZGlzcGxheSgpOwp9CmNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgY2dlX3V0aWxzOjpsb2dfZXhjZXB0aW9uKCRlKTsKICAgIGVjaG8gJHRoaXMtPkRpc3BsYXlFcnJvck1lc3NhZ2UoJGUtPmdldE1lc3NhZ2UoKSk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/CGFEUTwillio2FA.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKdXNlIENHRkVVVHdpbGxpbzJGQVxzZXR0aW5nczsKdXNlIENHRkVVVHdpbGxpbzJGQVxBdXRoTWFuYWdlcjsKdXNlIENHRkVVVHdpbGxpbzJGQVxNZXNzYWdlVHJhbnNwb3J0Owp1c2UgQ0dGRVVUd2lsbGlvMkZBXEF1dGhTdG9yYWdlOwp1c2UgQ0dGRVVUd2lsbGlvMkZBXEF1dGhTdGF0ZTsKdXNlIENNU01TXEhvb2tNYW5hZ2VyOwoKZmluYWwgY2xhc3MgQ0dGRVVUd2lsbGlvMkZBIGV4dGVuZHMgQ0dFeHRlbnNpb25zCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRWZXJzaW9uKCkgeyByZXR1cm4gJzEuMCc7IH0KICAgIHB1YmxpYyBmdW5jdGlvbiBNaW5pbXVtQ01TVmVyc2lvbigpIHsgcmV0dXJuICcyLjIuMTAnOyB9CiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0RGVwZW5kZW5jaWVzKCkgeyByZXR1cm4gWyAnQ0dFeHRlbnNpb25zJz0+JzEuNjQuMicsICdGcm9udEVuZFVzZXJzJz0+JzIuOTknIF07IH0KICAgIHB1YmxpYyBmdW5jdGlvbiBJc1BsdWdpbk1vZHVsZSgpIHsgcmV0dXJuIFRSVUU7IH0KICAgIHB1YmxpYyBmdW5jdGlvbiBIYXNBZG1pbigpIHsgcmV0dXJuIEZBTFNFOyB9CgogICAgcHVibGljIGZ1bmN0aW9uIEluaXRpYWxpemVGcm9udGVuZCgpCiAgICB7CiAgICAgICAgJHRoaXMtPlJlZ2lzdGVyTW9kdWxlUGx1Z2luKCk7CiAgICAgICAgSG9va01hbmFnZXI6OmFkZF9ob29rKCdGcm9udEVuZFVzZXJzOjpBZnRlckxvZ2luQXV0aCcsIFsgJHRoaXMsICdob29rX2ZldV9BZnRlckxvZ2luQXV0aF9jaGVjazJmYSddICk7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldF9zZXR0aW5ncygpIDogc2V0dGluZ3MKICAgIHsKICAgICAgICBzdGF0aWMgJF9vYmo7CiAgICAgICAgaWYoICEkX29iaiApICRfb2JqID0gbmV3IHNldHRpbmdzKCR0aGlzLT5jb25maWcpOwogICAgICAgIHJldHVybiAkX29iajsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYXV0aE1hbmFnZXIoKSA6IEF1dGhTdG9yYWdlCiAgICB7CiAgICAgICAgc3RhdGljICRfb2JqOwogICAgICAgIGlmKCAhJF9vYmogKSAkX29iaiA9IG5ldyBBdXRoU3RvcmFnZSgkdGhpcy0+Z2V0X3NldHRpbmdzKCkpOwogICAgICAgIHJldHVybiAkX29iajsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gdHJhbnNwb3J0KCkgOiBNZXNzYWdlVHJhbnNwb3J0CiAgICB7CiAgICAgICAgc3RhdGljICRfb2JqOwogICAgICAgIGlmKCAhJF9vYmogKSAkX29iaiA9IG5ldyBNZXNzYWdlVHJhbnNwb3J0KCR0aGlzLCAkdGhpcy0+Z2V0X3NldHRpbmdzKCkpOwogICAgICAgIHJldHVybiAkX29iajsKICAgIH0KCiAgICAvKioKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaG9va19mZXVfQWZ0ZXJMb2dpbkF1dGhfY2hlY2syZmEoYXJyYXkgJHBhcm1zKQogICAgewogICAgICAgICR1aWQgPSBjZ2VfcGFyYW06OmdldF9pbnQoJHBhcm1zLCdpZCcpOwogICAgICAgIGlmKCAkdWlkID4gMCApIHsKICAgICAgICAgICAgJGZldSA9ICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZShNT0RfRlJPTlRFTkRVU0VSUyk7CiAgICAgICAgICAgICRzZXR0aW5ncyA9ICR0aGlzLT5nZXRfc2V0dGluZ3MoKTsKICAgICAgICAgICAgJHBob25lID0gbnVsbDsKICAgICAgICAgICAgaWYoICEkc2V0dGluZ3MtPmlzX2NvbmZpZ3VyZWQoKSApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJHRoaXMtPkdldE5hbWUoKS4nIGlzIG1pc3Npbmcgc29tZSBjb25maWcgaW5mb3JtYXRpb24nKTsKCiAgICAgICAgICAgIGlmKCAkc2V0dGluZ3MtPmZldV9wcm9wZXJ0eSApICRwaG9uZSA9ICRmZXUtPkdldFVzZXJQcm9wZXJ0eUZ1bGwoJHNldHRpbmdzLT5mZXVfcHJvcGVydHksICR1aWQpOwoKICAgICAgICAgICAgLy8gaWYgd2UgZG8gbm90IGhhdmUgYSBwaG9uZSBudW1iZXIsIGJ1dCBpdCBpcyByZXF1aXJlZCB0aHJvdyBhbiBhdXRoZW50aWNhdGlvbiBlcnJvcgogICAgICAgICAgICBpZiggISRwaG9uZSAmJiAkc2V0dGluZ3MtPnBob25lX3JlcXVpcmVkICkgdGhyb3cgbmV3IFxGZXVMb2dpbkZhaWxlZEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyX3VzZXJub3Bob25lJykpOwogICAgICAgICAgICBpZiggISRwaG9uZSApIHJldHVybjsKCiAgICAgICAgICAgIC8vIGdlbmVyYXRlIGEgY29kZQogICAgICAgICAgICAkYXJyID0gIFsKICAgICAgICAgICAgICAgICd1aWQnPT4kdWlkLCAndXNlcm5hbWUnPT5jZ2VfcGFyYW06OmdldF9zdHJpbmcoJHBhcm1zLCd1c2VybmFtZScpLCAnc21zY29kZSc9PmJpbjJoZXgocmFuZG9tX2J5dGVzKDQpKSwKICAgICAgICAgICAgICAgICdwaG9uZSc9Pm51bGwsICd0cyc9PnRpbWUoKSwgJ2xvbmd0ZXJtJz0+Y2dlX3BhcmFtOjpnZXRfYm9vbCgkcGFybXMsJ3JlbWVtYmVybWUnKSwgJ3Bob25lJz0+JHBob25lCiAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICAkc3RhdGUgPSBuZXcgQXV0aFN0YXRlKCRhcnIpOwoKICAgICAgICAgICAgLy8gc2VuZCB0aGUgc21zCiAgICAgICAgICAgICR0aGlzLT50cmFuc3BvcnQoKS0+c2VuZCgkc3RhdGUpOwoKICAgICAgICAgICAgLy8gc3RvcmUgdGhlIGRhdGEKICAgICAgICAgICAgJGtleSA9ICR0aGlzLT5hdXRoTWFuYWdlcigpLT5zdG9yZSgkc3RhdGUpOwoKICAgICAgICAgICAgLy8gcmVkaXJlY3QsIG5vbiBpbmxpbmUKICAgICAgICAgICAgLy8gcHJldmVudHMgYW55IGZ1cnRoZXIgaGFuZGxlcnMgZnJvbSBleGVjdXRpbmcKICAgICAgICAgICAgJHRoaXMtPlJlZGlyZWN0KCdtZScsICd2ZXJpZnknLCAkdGhpcy0+Y21zLT5nZXRfY29udGVudF9pZCgpLCBbJ21hZ2ljJz0+JGtleV0pOwogICAgICAgIH0KICAgIH0KfSAvLyBjbGFzcwo=]]></data>
	</file>
	<file>
	  <filename>/doc/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/doc/COPYING</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ICAgICAgICAgICAgICAgICAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQogICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gMiwgSnVuZSAxOTkxCgogQ29weXJpZ2h0IChDKSAxOTg5LCAxOTkxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKIEV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcwogb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlYW1ibGUKCiAgVGhlIGxpY2Vuc2VzIGZvciBtb3N0IHNvZnR3YXJlIGFyZSBkZXNpZ25lZCB0byB0YWtlIGF3YXkgeW91cgpmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgaXQuICBCeSBjb250cmFzdCwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwpMaWNlbnNlIGlzIGludGVuZGVkIHRvIGd1YXJhbnRlZSB5b3VyIGZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSBmcmVlCnNvZnR3YXJlLS10byBtYWtlIHN1cmUgdGhlIHNvZnR3YXJlIGlzIGZyZWUgZm9yIGFsbCBpdHMgdXNlcnMuICBUaGlzCkdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXBwbGllcyB0byBtb3N0IG9mIHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24ncyBzb2Z0d2FyZSBhbmQgdG8gYW55IG90aGVyIHByb2dyYW0gd2hvc2UgYXV0aG9ycyBjb21taXQgdG8KdXNpbmcgaXQuICAoU29tZSBvdGhlciBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gc29mdHdhcmUgaXMgY292ZXJlZCBieQp0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGluc3RlYWQuKSAgWW91IGNhbiBhcHBseSBpdCB0bwp5b3VyIHByb2dyYW1zLCB0b28uCgogIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QKcHJpY2UuICBPdXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZXMgYXJlIGRlc2lnbmVkIHRvIG1ha2Ugc3VyZSB0aGF0IHlvdQpoYXZlIHRoZSBmcmVlZG9tIHRvIGRpc3RyaWJ1dGUgY29waWVzIG9mIGZyZWUgc29mdHdhcmUgKGFuZCBjaGFyZ2UgZm9yCnRoaXMgc2VydmljZSBpZiB5b3Ugd2lzaCksIHRoYXQgeW91IHJlY2VpdmUgc291cmNlIGNvZGUgb3IgY2FuIGdldCBpdAppZiB5b3Ugd2FudCBpdCwgdGhhdCB5b3UgY2FuIGNoYW5nZSB0aGUgc29mdHdhcmUgb3IgdXNlIHBpZWNlcyBvZiBpdAppbiBuZXcgZnJlZSBwcm9ncmFtczsgYW5kIHRoYXQgeW91IGtub3cgeW91IGNhbiBkbyB0aGVzZSB0aGluZ3MuCgogIFRvIHByb3RlY3QgeW91ciByaWdodHMsIHdlIG5lZWQgdG8gbWFrZSByZXN0cmljdGlvbnMgdGhhdCBmb3JiaWQKYW55b25lIHRvIGRlbnkgeW91IHRoZXNlIHJpZ2h0cyBvciB0byBhc2sgeW91IHRvIHN1cnJlbmRlciB0aGUgcmlnaHRzLgpUaGVzZSByZXN0cmljdGlvbnMgdHJhbnNsYXRlIHRvIGNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBmb3IgeW91IGlmIHlvdQpkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUgc29mdHdhcmUsIG9yIGlmIHlvdSBtb2RpZnkgaXQuCgogIEZvciBleGFtcGxlLCBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2Ygc3VjaCBhIHByb2dyYW0sIHdoZXRoZXIKZ3JhdGlzIG9yIGZvciBhIGZlZSwgeW91IG11c3QgZ2l2ZSB0aGUgcmVjaXBpZW50cyBhbGwgdGhlIHJpZ2h0cyB0aGF0CnlvdSBoYXZlLiAgWW91IG11c3QgbWFrZSBzdXJlIHRoYXQgdGhleSwgdG9vLCByZWNlaXZlIG9yIGNhbiBnZXQgdGhlCnNvdXJjZSBjb2RlLiAgQW5kIHlvdSBtdXN0IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5IGtub3cgdGhlaXIKcmlnaHRzLgoKICBXZSBwcm90ZWN0IHlvdXIgcmlnaHRzIHdpdGggdHdvIHN0ZXBzOiAoMSkgY29weXJpZ2h0IHRoZSBzb2Z0d2FyZSwgYW5kCigyKSBvZmZlciB5b3UgdGhpcyBsaWNlbnNlIHdoaWNoIGdpdmVzIHlvdSBsZWdhbCBwZXJtaXNzaW9uIHRvIGNvcHksCmRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGUgc29mdHdhcmUuCgogIEFsc28sIGZvciBlYWNoIGF1dGhvcidzIHByb3RlY3Rpb24gYW5kIG91cnMsIHdlIHdhbnQgdG8gbWFrZSBjZXJ0YWluCnRoYXQgZXZlcnlvbmUgdW5kZXJzdGFuZHMgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhpcyBmcmVlCnNvZnR3YXJlLiAgSWYgdGhlIHNvZnR3YXJlIGlzIG1vZGlmaWVkIGJ5IHNvbWVvbmUgZWxzZSBhbmQgcGFzc2VkIG9uLCB3ZQp3YW50IGl0cyByZWNpcGllbnRzIHRvIGtub3cgdGhhdCB3aGF0IHRoZXkgaGF2ZSBpcyBub3QgdGhlIG9yaWdpbmFsLCBzbwp0aGF0IGFueSBwcm9ibGVtcyBpbnRyb2R1Y2VkIGJ5IG90aGVycyB3aWxsIG5vdCByZWZsZWN0IG9uIHRoZSBvcmlnaW5hbAphdXRob3JzJyByZXB1dGF0aW9ucy4KCiAgRmluYWxseSwgYW55IGZyZWUgcHJvZ3JhbSBpcyB0aHJlYXRlbmVkIGNvbnN0YW50bHkgYnkgc29mdHdhcmUKcGF0ZW50cy4gIFdlIHdpc2ggdG8gYXZvaWQgdGhlIGRhbmdlciB0aGF0IHJlZGlzdHJpYnV0b3JzIG9mIGEgZnJlZQpwcm9ncmFtIHdpbGwgaW5kaXZpZHVhbGx5IG9idGFpbiBwYXRlbnQgbGljZW5zZXMsIGluIGVmZmVjdCBtYWtpbmcgdGhlCnByb2dyYW0gcHJvcHJpZXRhcnkuICBUbyBwcmV2ZW50IHRoaXMsIHdlIGhhdmUgbWFkZSBpdCBjbGVhciB0aGF0IGFueQpwYXRlbnQgbXVzdCBiZSBsaWNlbnNlZCBmb3IgZXZlcnlvbmUncyBmcmVlIHVzZSBvciBub3QgbGljZW5zZWQgYXQgYWxsLgoKICBUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZAptb2RpZmljYXRpb24gZm9sbG93LgoKICAgICAgICAgICAgICAgICAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQogICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgQ09QWUlORywgRElTVFJJQlVUSU9OIEFORCBNT0RJRklDQVRJT04KCiAgMC4gVGhpcyBMaWNlbnNlIGFwcGxpZXMgdG8gYW55IHByb2dyYW0gb3Igb3RoZXIgd29yayB3aGljaCBjb250YWlucwphIG5vdGljZSBwbGFjZWQgYnkgdGhlIGNvcHlyaWdodCBob2xkZXIgc2F5aW5nIGl0IG1heSBiZSBkaXN0cmlidXRlZAp1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhlICJQcm9ncmFtIiwgYmVsb3csCnJlZmVycyB0byBhbnkgc3VjaCBwcm9ncmFtIG9yIHdvcmssIGFuZCBhICJ3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtIgptZWFucyBlaXRoZXIgdGhlIFByb2dyYW0gb3IgYW55IGRlcml2YXRpdmUgd29yayB1bmRlciBjb3B5cmlnaHQgbGF3Ogp0aGF0IGlzIHRvIHNheSwgYSB3b3JrIGNvbnRhaW5pbmcgdGhlIFByb2dyYW0gb3IgYSBwb3J0aW9uIG9mIGl0LAplaXRoZXIgdmVyYmF0aW0gb3Igd2l0aCBtb2RpZmljYXRpb25zIGFuZC9vciB0cmFuc2xhdGVkIGludG8gYW5vdGhlcgpsYW5ndWFnZS4gIChIZXJlaW5hZnRlciwgdHJhbnNsYXRpb24gaXMgaW5jbHVkZWQgd2l0aG91dCBsaW1pdGF0aW9uIGluCnRoZSB0ZXJtICJtb2RpZmljYXRpb24iLikgIEVhY2ggbGljZW5zZWUgaXMgYWRkcmVzc2VkIGFzICJ5b3UiLgoKQWN0aXZpdGllcyBvdGhlciB0aGFuIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQgbW9kaWZpY2F0aW9uIGFyZSBub3QKY292ZXJlZCBieSB0aGlzIExpY2Vuc2U7IHRoZXkgYXJlIG91dHNpZGUgaXRzIHNjb3BlLiAgVGhlIGFjdCBvZgpydW5uaW5nIHRoZSBQcm9ncmFtIGlzIG5vdCByZXN0cmljdGVkLCBhbmQgdGhlIG91dHB1dCBmcm9tIHRoZSBQcm9ncmFtCmlzIGNvdmVyZWQgb25seSBpZiBpdHMgY29udGVudHMgY29uc3RpdHV0ZSBhIHdvcmsgYmFzZWQgb24gdGhlClByb2dyYW0gKGluZGVwZW5kZW50IG9mIGhhdmluZyBiZWVuIG1hZGUgYnkgcnVubmluZyB0aGUgUHJvZ3JhbSkuCldoZXRoZXIgdGhhdCBpcyB0cnVlIGRlcGVuZHMgb24gd2hhdCB0aGUgUHJvZ3JhbSBkb2VzLgoKICAxLiBZb3UgbWF5IGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzIG9mIHRoZSBQcm9ncmFtJ3MKc291cmNlIGNvZGUgYXMgeW91IHJlY2VpdmUgaXQsIGluIGFueSBtZWRpdW0sIHByb3ZpZGVkIHRoYXQgeW91CmNvbnNwaWN1b3VzbHkgYW5kIGFwcHJvcHJpYXRlbHkgcHVibGlzaCBvbiBlYWNoIGNvcHkgYW4gYXBwcm9wcmlhdGUKY29weXJpZ2h0IG5vdGljZSBhbmQgZGlzY2xhaW1lciBvZiB3YXJyYW50eTsga2VlcCBpbnRhY3QgYWxsIHRoZQpub3RpY2VzIHRoYXQgcmVmZXIgdG8gdGhpcyBMaWNlbnNlIGFuZCB0byB0aGUgYWJzZW5jZSBvZiBhbnkgd2FycmFudHk7CmFuZCBnaXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBQcm9ncmFtIGEgY29weSBvZiB0aGlzIExpY2Vuc2UKYWxvbmcgd2l0aCB0aGUgUHJvZ3JhbS4KCllvdSBtYXkgY2hhcmdlIGEgZmVlIGZvciB0aGUgcGh5c2ljYWwgYWN0IG9mIHRyYW5zZmVycmluZyBhIGNvcHksIGFuZAp5b3UgbWF5IGF0IHlvdXIgb3B0aW9uIG9mZmVyIHdhcnJhbnR5IHByb3RlY3Rpb24gaW4gZXhjaGFuZ2UgZm9yIGEgZmVlLgoKICAyLiBZb3UgbWF5IG1vZGlmeSB5b3VyIGNvcHkgb3IgY29waWVzIG9mIHRoZSBQcm9ncmFtIG9yIGFueSBwb3J0aW9uCm9mIGl0LCB0aHVzIGZvcm1pbmcgYSB3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtLCBhbmQgY29weSBhbmQKZGlzdHJpYnV0ZSBzdWNoIG1vZGlmaWNhdGlvbnMgb3Igd29yayB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbiAxCmFib3ZlLCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIG1lZXQgYWxsIG9mIHRoZXNlIGNvbmRpdGlvbnM6CgogICAgYSkgWW91IG11c3QgY2F1c2UgdGhlIG1vZGlmaWVkIGZpbGVzIHRvIGNhcnJ5IHByb21pbmVudCBub3RpY2VzCiAgICBzdGF0aW5nIHRoYXQgeW91IGNoYW5nZWQgdGhlIGZpbGVzIGFuZCB0aGUgZGF0ZSBvZiBhbnkgY2hhbmdlLgoKICAgIGIpIFlvdSBtdXN0IGNhdXNlIGFueSB3b3JrIHRoYXQgeW91IGRpc3RyaWJ1dGUgb3IgcHVibGlzaCwgdGhhdCBpbgogICAgd2hvbGUgb3IgaW4gcGFydCBjb250YWlucyBvciBpcyBkZXJpdmVkIGZyb20gdGhlIFByb2dyYW0gb3IgYW55CiAgICBwYXJ0IHRoZXJlb2YsIHRvIGJlIGxpY2Vuc2VkIGFzIGEgd2hvbGUgYXQgbm8gY2hhcmdlIHRvIGFsbCB0aGlyZAogICAgcGFydGllcyB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLgoKICAgIGMpIElmIHRoZSBtb2RpZmllZCBwcm9ncmFtIG5vcm1hbGx5IHJlYWRzIGNvbW1hbmRzIGludGVyYWN0aXZlbHkKICAgIHdoZW4gcnVuLCB5b3UgbXVzdCBjYXVzZSBpdCwgd2hlbiBzdGFydGVkIHJ1bm5pbmcgZm9yIHN1Y2gKICAgIGludGVyYWN0aXZlIHVzZSBpbiB0aGUgbW9zdCBvcmRpbmFyeSB3YXksIHRvIHByaW50IG9yIGRpc3BsYXkgYW4KICAgIGFubm91bmNlbWVudCBpbmNsdWRpbmcgYW4gYXBwcm9wcmlhdGUgY29weXJpZ2h0IG5vdGljZSBhbmQgYQogICAgbm90aWNlIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgKG9yIGVsc2UsIHNheWluZyB0aGF0IHlvdSBwcm92aWRlCiAgICBhIHdhcnJhbnR5KSBhbmQgdGhhdCB1c2VycyBtYXkgcmVkaXN0cmlidXRlIHRoZSBwcm9ncmFtIHVuZGVyCiAgICB0aGVzZSBjb25kaXRpb25zLCBhbmQgdGVsbGluZyB0aGUgdXNlciBob3cgdG8gdmlldyBhIGNvcHkgb2YgdGhpcwogICAgTGljZW5zZS4gIChFeGNlcHRpb246IGlmIHRoZSBQcm9ncmFtIGl0c2VsZiBpcyBpbnRlcmFjdGl2ZSBidXQKICAgIGRvZXMgbm90IG5vcm1hbGx5IHByaW50IHN1Y2ggYW4gYW5ub3VuY2VtZW50LCB5b3VyIHdvcmsgYmFzZWQgb24KICAgIHRoZSBQcm9ncmFtIGlzIG5vdCByZXF1aXJlZCB0byBwcmludCBhbiBhbm5vdW5jZW1lbnQuKQoKVGhlc2UgcmVxdWlyZW1lbnRzIGFwcGx5IHRvIHRoZSBtb2RpZmllZCB3b3JrIGFzIGEgd2hvbGUuICBJZgppZGVudGlmaWFibGUgc2VjdGlvbnMgb2YgdGhhdCB3b3JrIGFyZSBub3QgZGVyaXZlZCBmcm9tIHRoZSBQcm9ncmFtLAphbmQgY2FuIGJlIHJlYXNvbmFibHkgY29uc2lkZXJlZCBpbmRlcGVuZGVudCBhbmQgc2VwYXJhdGUgd29ya3MgaW4KdGhlbXNlbHZlcywgdGhlbiB0aGlzIExpY2Vuc2UsIGFuZCBpdHMgdGVybXMsIGRvIG5vdCBhcHBseSB0byB0aG9zZQpzZWN0aW9ucyB3aGVuIHlvdSBkaXN0cmlidXRlIHRoZW0gYXMgc2VwYXJhdGUgd29ya3MuICBCdXQgd2hlbiB5b3UKZGlzdHJpYnV0ZSB0aGUgc2FtZSBzZWN0aW9ucyBhcyBwYXJ0IG9mIGEgd2hvbGUgd2hpY2ggaXMgYSB3b3JrIGJhc2VkCm9uIHRoZSBQcm9ncmFtLCB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSB3aG9sZSBtdXN0IGJlIG9uIHRoZSB0ZXJtcyBvZgp0aGlzIExpY2Vuc2UsIHdob3NlIHBlcm1pc3Npb25zIGZvciBvdGhlciBsaWNlbnNlZXMgZXh0ZW5kIHRvIHRoZQplbnRpcmUgd2hvbGUsIGFuZCB0aHVzIHRvIGVhY2ggYW5kIGV2ZXJ5IHBhcnQgcmVnYXJkbGVzcyBvZiB3aG8gd3JvdGUgaXQuCgpUaHVzLCBpdCBpcyBub3QgdGhlIGludGVudCBvZiB0aGlzIHNlY3Rpb24gdG8gY2xhaW0gcmlnaHRzIG9yIGNvbnRlc3QKeW91ciByaWdodHMgdG8gd29yayB3cml0dGVuIGVudGlyZWx5IGJ5IHlvdTsgcmF0aGVyLCB0aGUgaW50ZW50IGlzIHRvCmV4ZXJjaXNlIHRoZSByaWdodCB0byBjb250cm9sIHRoZSBkaXN0cmlidXRpb24gb2YgZGVyaXZhdGl2ZSBvcgpjb2xsZWN0aXZlIHdvcmtzIGJhc2VkIG9uIHRoZSBQcm9ncmFtLgoKSW4gYWRkaXRpb24sIG1lcmUgYWdncmVnYXRpb24gb2YgYW5vdGhlciB3b3JrIG5vdCBiYXNlZCBvbiB0aGUgUHJvZ3JhbQp3aXRoIHRoZSBQcm9ncmFtIChvciB3aXRoIGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSkgb24gYSB2b2x1bWUgb2YKYSBzdG9yYWdlIG9yIGRpc3RyaWJ1dGlvbiBtZWRpdW0gZG9lcyBub3QgYnJpbmcgdGhlIG90aGVyIHdvcmsgdW5kZXIKdGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KCiAgMy4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIChvciBhIHdvcmsgYmFzZWQgb24gaXQsCnVuZGVyIFNlY3Rpb24gMikgaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtIHVuZGVyIHRoZSB0ZXJtcyBvZgpTZWN0aW9ucyAxIGFuZCAyIGFib3ZlIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gZG8gb25lIG9mIHRoZSBmb2xsb3dpbmc6CgogICAgYSkgQWNjb21wYW55IGl0IHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcgbWFjaGluZS1yZWFkYWJsZQogICAgc291cmNlIGNvZGUsIHdoaWNoIG11c3QgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zCiAgICAxIGFuZCAyIGFib3ZlIG9uIGEgbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlOyBvciwKCiAgICBiKSBBY2NvbXBhbnkgaXQgd2l0aCBhIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdCBsZWFzdCB0aHJlZQogICAgeWVhcnMsIHRvIGdpdmUgYW55IHRoaXJkIHBhcnR5LCBmb3IgYSBjaGFyZ2Ugbm8gbW9yZSB0aGFuIHlvdXIKICAgIGNvc3Qgb2YgcGh5c2ljYWxseSBwZXJmb3JtaW5nIHNvdXJjZSBkaXN0cmlidXRpb24sIGEgY29tcGxldGUKICAgIG1hY2hpbmUtcmVhZGFibGUgY29weSBvZiB0aGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZSwgdG8gYmUKICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucyAxIGFuZCAyIGFib3ZlIG9uIGEgbWVkaXVtCiAgICBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZTsgb3IsCgogICAgYykgQWNjb21wYW55IGl0IHdpdGggdGhlIGluZm9ybWF0aW9uIHlvdSByZWNlaXZlZCBhcyB0byB0aGUgb2ZmZXIKICAgIHRvIGRpc3RyaWJ1dGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZS4gIChUaGlzIGFsdGVybmF0aXZlIGlzCiAgICBhbGxvd2VkIG9ubHkgZm9yIG5vbmNvbW1lcmNpYWwgZGlzdHJpYnV0aW9uIGFuZCBvbmx5IGlmIHlvdQogICAgcmVjZWl2ZWQgdGhlIHByb2dyYW0gaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtIHdpdGggc3VjaAogICAgYW4gb2ZmZXIsIGluIGFjY29yZCB3aXRoIFN1YnNlY3Rpb24gYiBhYm92ZS4pCgpUaGUgc291cmNlIGNvZGUgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsgZm9yCm1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgRm9yIGFuIGV4ZWN1dGFibGUgd29yaywgY29tcGxldGUgc291cmNlCmNvZGUgbWVhbnMgYWxsIHRoZSBzb3VyY2UgY29kZSBmb3IgYWxsIG1vZHVsZXMgaXQgY29udGFpbnMsIHBsdXMgYW55CmFzc29jaWF0ZWQgaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMsIHBsdXMgdGhlIHNjcmlwdHMgdXNlZCB0bwpjb250cm9sIGNvbXBpbGF0aW9uIGFuZCBpbnN0YWxsYXRpb24gb2YgdGhlIGV4ZWN1dGFibGUuICBIb3dldmVyLCBhcyBhCnNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgc291cmNlIGNvZGUgZGlzdHJpYnV0ZWQgbmVlZCBub3QgaW5jbHVkZQphbnl0aGluZyB0aGF0IGlzIG5vcm1hbGx5IGRpc3RyaWJ1dGVkIChpbiBlaXRoZXIgc291cmNlIG9yIGJpbmFyeQpmb3JtKSB3aXRoIHRoZSBtYWpvciBjb21wb25lbnRzIChjb21waWxlciwga2VybmVsLCBhbmQgc28gb24pIG9mIHRoZQpvcGVyYXRpbmcgc3lzdGVtIG9uIHdoaWNoIHRoZSBleGVjdXRhYmxlIHJ1bnMsIHVubGVzcyB0aGF0IGNvbXBvbmVudAppdHNlbGYgYWNjb21wYW5pZXMgdGhlIGV4ZWN1dGFibGUuCgpJZiBkaXN0cmlidXRpb24gb2YgZXhlY3V0YWJsZSBvciBvYmplY3QgY29kZSBpcyBtYWRlIGJ5IG9mZmVyaW5nCmFjY2VzcyB0byBjb3B5IGZyb20gYSBkZXNpZ25hdGVkIHBsYWNlLCB0aGVuIG9mZmVyaW5nIGVxdWl2YWxlbnQKYWNjZXNzIHRvIGNvcHkgdGhlIHNvdXJjZSBjb2RlIGZyb20gdGhlIHNhbWUgcGxhY2UgY291bnRzIGFzCmRpc3RyaWJ1dGlvbiBvZiB0aGUgc291cmNlIGNvZGUsIGV2ZW4gdGhvdWdoIHRoaXJkIHBhcnRpZXMgYXJlIG5vdApjb21wZWxsZWQgdG8gY29weSB0aGUgc291cmNlIGFsb25nIHdpdGggdGhlIG9iamVjdCBjb2RlLgoKICA0LiBZb3UgbWF5IG5vdCBjb3B5LCBtb2RpZnksIHN1YmxpY2Vuc2UsIG9yIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0KZXhjZXB0IGFzIGV4cHJlc3NseSBwcm92aWRlZCB1bmRlciB0aGlzIExpY2Vuc2UuICBBbnkgYXR0ZW1wdApvdGhlcndpc2UgdG8gY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlIG9yIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gaXMKdm9pZCwgYW5kIHdpbGwgYXV0b21hdGljYWxseSB0ZXJtaW5hdGUgeW91ciByaWdodHMgdW5kZXIgdGhpcyBMaWNlbnNlLgpIb3dldmVyLCBwYXJ0aWVzIHdobyBoYXZlIHJlY2VpdmVkIGNvcGllcywgb3IgcmlnaHRzLCBmcm9tIHlvdSB1bmRlcgp0aGlzIExpY2Vuc2Ugd2lsbCBub3QgaGF2ZSB0aGVpciBsaWNlbnNlcyB0ZXJtaW5hdGVkIHNvIGxvbmcgYXMgc3VjaApwYXJ0aWVzIHJlbWFpbiBpbiBmdWxsIGNvbXBsaWFuY2UuCgogIDUuIFlvdSBhcmUgbm90IHJlcXVpcmVkIHRvIGFjY2VwdCB0aGlzIExpY2Vuc2UsIHNpbmNlIHlvdSBoYXZlIG5vdApzaWduZWQgaXQuICBIb3dldmVyLCBub3RoaW5nIGVsc2UgZ3JhbnRzIHlvdSBwZXJtaXNzaW9uIHRvIG1vZGlmeSBvcgpkaXN0cmlidXRlIHRoZSBQcm9ncmFtIG9yIGl0cyBkZXJpdmF0aXZlIHdvcmtzLiAgVGhlc2UgYWN0aW9ucyBhcmUKcHJvaGliaXRlZCBieSBsYXcgaWYgeW91IGRvIG5vdCBhY2NlcHQgdGhpcyBMaWNlbnNlLiAgVGhlcmVmb3JlLCBieQptb2RpZnlpbmcgb3IgZGlzdHJpYnV0aW5nIHRoZSBQcm9ncmFtIChvciBhbnkgd29yayBiYXNlZCBvbiB0aGUKUHJvZ3JhbSksIHlvdSBpbmRpY2F0ZSB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhpcyBMaWNlbnNlIHRvIGRvIHNvLCBhbmQKYWxsIGl0cyB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW5nIG9yIG1vZGlmeWluZwp0aGUgUHJvZ3JhbSBvciB3b3JrcyBiYXNlZCBvbiBpdC4KCiAgNi4gRWFjaCB0aW1lIHlvdSByZWRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQpQcm9ncmFtKSwgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5IHJlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZQpvcmlnaW5hbCBsaWNlbnNvciB0byBjb3B5LCBkaXN0cmlidXRlIG9yIG1vZGlmeSB0aGUgUHJvZ3JhbSBzdWJqZWN0IHRvCnRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLiAgWW91IG1heSBub3QgaW1wb3NlIGFueSBmdXJ0aGVyCnJlc3RyaWN0aW9ucyBvbiB0aGUgcmVjaXBpZW50cycgZXhlcmNpc2Ugb2YgdGhlIHJpZ2h0cyBncmFudGVkIGhlcmVpbi4KWW91IGFyZSBub3QgcmVzcG9uc2libGUgZm9yIGVuZm9yY2luZyBjb21wbGlhbmNlIGJ5IHRoaXJkIHBhcnRpZXMgdG8KdGhpcyBMaWNlbnNlLgoKICA3LiBJZiwgYXMgYSBjb25zZXF1ZW5jZSBvZiBhIGNvdXJ0IGp1ZGdtZW50IG9yIGFsbGVnYXRpb24gb2YgcGF0ZW50CmluZnJpbmdlbWVudCBvciBmb3IgYW55IG90aGVyIHJlYXNvbiAobm90IGxpbWl0ZWQgdG8gcGF0ZW50IGlzc3VlcyksCmNvbmRpdGlvbnMgYXJlIGltcG9zZWQgb24geW91ICh3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3JlZW1lbnQgb3IKb3RoZXJ3aXNlKSB0aGF0IGNvbnRyYWRpY3QgdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLCB0aGV5IGRvIG5vdApleGN1c2UgeW91IGZyb20gdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLiAgSWYgeW91IGNhbm5vdApkaXN0cmlidXRlIHNvIGFzIHRvIHNhdGlzZnkgc2ltdWx0YW5lb3VzbHkgeW91ciBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzCkxpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UKbWF5IG5vdCBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiBhIHBhdGVudApsaWNlbnNlIHdvdWxkIG5vdCBwZXJtaXQgcm95YWx0eS1mcmVlIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtIGJ5CmFsbCB0aG9zZSB3aG8gcmVjZWl2ZSBjb3BpZXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHlvdSwgdGhlbgp0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCBpdCBhbmQgdGhpcyBMaWNlbnNlIHdvdWxkIGJlIHRvCnJlZnJhaW4gZW50aXJlbHkgZnJvbSBkaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0uCgpJZiBhbnkgcG9ydGlvbiBvZiB0aGlzIHNlY3Rpb24gaXMgaGVsZCBpbnZhbGlkIG9yIHVuZW5mb3JjZWFibGUgdW5kZXIKYW55IHBhcnRpY3VsYXIgY2lyY3Vtc3RhbmNlLCB0aGUgYmFsYW5jZSBvZiB0aGUgc2VjdGlvbiBpcyBpbnRlbmRlZCB0bwphcHBseSBhbmQgdGhlIHNlY3Rpb24gYXMgYSB3aG9sZSBpcyBpbnRlbmRlZCB0byBhcHBseSBpbiBvdGhlcgpjaXJjdW1zdGFuY2VzLgoKSXQgaXMgbm90IHRoZSBwdXJwb3NlIG9mIHRoaXMgc2VjdGlvbiB0byBpbmR1Y2UgeW91IHRvIGluZnJpbmdlIGFueQpwYXRlbnRzIG9yIG90aGVyIHByb3BlcnR5IHJpZ2h0IGNsYWltcyBvciB0byBjb250ZXN0IHZhbGlkaXR5IG9mIGFueQpzdWNoIGNsYWltczsgdGhpcyBzZWN0aW9uIGhhcyB0aGUgc29sZSBwdXJwb3NlIG9mIHByb3RlY3RpbmcgdGhlCmludGVncml0eSBvZiB0aGUgZnJlZSBzb2Z0d2FyZSBkaXN0cmlidXRpb24gc3lzdGVtLCB3aGljaCBpcwppbXBsZW1lbnRlZCBieSBwdWJsaWMgbGljZW5zZSBwcmFjdGljZXMuICBNYW55IHBlb3BsZSBoYXZlIG1hZGUKZ2VuZXJvdXMgY29udHJpYnV0aW9ucyB0byB0aGUgd2lkZSByYW5nZSBvZiBzb2Z0d2FyZSBkaXN0cmlidXRlZAp0aHJvdWdoIHRoYXQgc3lzdGVtIGluIHJlbGlhbmNlIG9uIGNvbnNpc3RlbnQgYXBwbGljYXRpb24gb2YgdGhhdApzeXN0ZW07IGl0IGlzIHVwIHRvIHRoZSBhdXRob3IvZG9ub3IgdG8gZGVjaWRlIGlmIGhlIG9yIHNoZSBpcyB3aWxsaW5nCnRvIGRpc3RyaWJ1dGUgc29mdHdhcmUgdGhyb3VnaCBhbnkgb3RoZXIgc3lzdGVtIGFuZCBhIGxpY2Vuc2VlIGNhbm5vdAppbXBvc2UgdGhhdCBjaG9pY2UuCgpUaGlzIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8gbWFrZSB0aG9yb3VnaGx5IGNsZWFyIHdoYXQgaXMgYmVsaWV2ZWQgdG8KYmUgYSBjb25zZXF1ZW5jZSBvZiB0aGUgcmVzdCBvZiB0aGlzIExpY2Vuc2UuCgogIDguIElmIHRoZSBkaXN0cmlidXRpb24gYW5kL29yIHVzZSBvZiB0aGUgUHJvZ3JhbSBpcyByZXN0cmljdGVkIGluCmNlcnRhaW4gY291bnRyaWVzIGVpdGhlciBieSBwYXRlbnRzIG9yIGJ5IGNvcHlyaWdodGVkIGludGVyZmFjZXMsIHRoZQpvcmlnaW5hbCBjb3B5cmlnaHQgaG9sZGVyIHdobyBwbGFjZXMgdGhlIFByb2dyYW0gdW5kZXIgdGhpcyBMaWNlbnNlCm1heSBhZGQgYW4gZXhwbGljaXQgZ2VvZ3JhcGhpY2FsIGRpc3RyaWJ1dGlvbiBsaW1pdGF0aW9uIGV4Y2x1ZGluZwp0aG9zZSBjb3VudHJpZXMsIHNvIHRoYXQgZGlzdHJpYnV0aW9uIGlzIHBlcm1pdHRlZCBvbmx5IGluIG9yIGFtb25nCmNvdW50cmllcyBub3QgdGh1cyBleGNsdWRlZC4gIEluIHN1Y2ggY2FzZSwgdGhpcyBMaWNlbnNlIGluY29ycG9yYXRlcwp0aGUgbGltaXRhdGlvbiBhcyBpZiB3cml0dGVuIGluIHRoZSBib2R5IG9mIHRoaXMgTGljZW5zZS4KCiAgOS4gVGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBtYXkgcHVibGlzaCByZXZpc2VkIGFuZC9vciBuZXcgdmVyc2lvbnMKb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuICBTdWNoIG5ldyB2ZXJzaW9ucyB3aWxsCmJlIHNpbWlsYXIgaW4gc3Bpcml0IHRvIHRoZSBwcmVzZW50IHZlcnNpb24sIGJ1dCBtYXkgZGlmZmVyIGluIGRldGFpbCB0bwphZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4KCkVhY2ggdmVyc2lvbiBpcyBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiAgSWYgdGhlIFByb2dyYW0Kc3BlY2lmaWVzIGEgdmVyc2lvbiBudW1iZXIgb2YgdGhpcyBMaWNlbnNlIHdoaWNoIGFwcGxpZXMgdG8gaXQgYW5kICJhbnkKbGF0ZXIgdmVyc2lvbiIsIHlvdSBoYXZlIHRoZSBvcHRpb24gb2YgZm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucwplaXRoZXIgb2YgdGhhdCB2ZXJzaW9uIG9yIG9mIGFueSBsYXRlciB2ZXJzaW9uIHB1Ymxpc2hlZCBieSB0aGUgRnJlZQpTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgSWYgdGhlIFByb2dyYW0gZG9lcyBub3Qgc3BlY2lmeSBhIHZlcnNpb24gbnVtYmVyIG9mCnRoaXMgTGljZW5zZSwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbi4KCiAgMTAuIElmIHlvdSB3aXNoIHRvIGluY29ycG9yYXRlIHBhcnRzIG9mIHRoZSBQcm9ncmFtIGludG8gb3RoZXIgZnJlZQpwcm9ncmFtcyB3aG9zZSBkaXN0cmlidXRpb24gY29uZGl0aW9ucyBhcmUgZGlmZmVyZW50LCB3cml0ZSB0byB0aGUgYXV0aG9yCnRvIGFzayBmb3IgcGVybWlzc2lvbi4gIEZvciBzb2Z0d2FyZSB3aGljaCBpcyBjb3B5cmlnaHRlZCBieSB0aGUgRnJlZQpTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3ZSBzb21ldGltZXMKbWFrZSBleGNlcHRpb25zIGZvciB0aGlzLiAgT3VyIGRlY2lzaW9uIHdpbGwgYmUgZ3VpZGVkIGJ5IHRoZSB0d28gZ29hbHMKb2YgcHJlc2VydmluZyB0aGUgZnJlZSBzdGF0dXMgb2YgYWxsIGRlcml2YXRpdmVzIG9mIG91ciBmcmVlIHNvZnR3YXJlIGFuZApvZiBwcm9tb3RpbmcgdGhlIHNoYXJpbmcgYW5kIHJldXNlIG9mIHNvZnR3YXJlIGdlbmVyYWxseS4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTyBXQVJSQU5UWQoKICAxMS4gQkVDQVVTRSBUSEUgUFJPR1JBTSBJUyBMSUNFTlNFRCBGUkVFIE9GIENIQVJHRSwgVEhFUkUgSVMgTk8gV0FSUkFOVFkKRk9SIFRIRSBQUk9HUkFNLCBUTyBUSEUgRVhURU5UIFBFUk1JVFRFRCBCWSBBUFBMSUNBQkxFIExBVy4gIEVYQ0VQVCBXSEVOCk9USEVSV0lTRSBTVEFURUQgSU4gV1JJVElORyBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EL09SIE9USEVSIFBBUlRJRVMKUFJPVklERSBUSEUgUFJPR1JBTSAiQVMgSVMiIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTRUQKT1IgSU1QTElFRCwgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFRIRSBFTlRJUkUgUklTSyBBUwpUTyBUSEUgUVVBTElUWSBBTkQgUEVSRk9STUFOQ0UgT0YgVEhFIFBST0dSQU0gSVMgV0lUSCBZT1UuICBTSE9VTEQgVEhFClBST0dSQU0gUFJPVkUgREVGRUNUSVZFLCBZT1UgQVNTVU1FIFRIRSBDT1NUIE9GIEFMTCBORUNFU1NBUlkgU0VSVklDSU5HLApSRVBBSVIgT1IgQ09SUkVDVElPTi4KCiAgMTIuIElOIE5PIEVWRU5UIFVOTEVTUyBSRVFVSVJFRCBCWSBBUFBMSUNBQkxFIExBVyBPUiBBR1JFRUQgVE8gSU4gV1JJVElORwpXSUxMIEFOWSBDT1BZUklHSFQgSE9MREVSLCBPUiBBTlkgT1RIRVIgUEFSVFkgV0hPIE1BWSBNT0RJRlkgQU5EL09SClJFRElTVFJJQlVURSBUSEUgUFJPR1JBTSBBUyBQRVJNSVRURUQgQUJPVkUsIEJFIExJQUJMRSBUTyBZT1UgRk9SIERBTUFHRVMsCklOQ0xVRElORyBBTlkgR0VORVJBTCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgQVJJU0lORwpPVVQgT0YgVEhFIFVTRSBPUiBJTkFCSUxJVFkgVE8gVVNFIFRIRSBQUk9HUkFNIChJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEClRPIExPU1MgT0YgREFUQSBPUiBEQVRBIEJFSU5HIFJFTkRFUkVEIElOQUNDVVJBVEUgT1IgTE9TU0VTIFNVU1RBSU5FRCBCWQpZT1UgT1IgVEhJUkQgUEFSVElFUyBPUiBBIEZBSUxVUkUgT0YgVEhFIFBST0dSQU0gVE8gT1BFUkFURSBXSVRIIEFOWSBPVEhFUgpQUk9HUkFNUyksIEVWRU4gSUYgU1VDSCBIT0xERVIgT1IgT1RIRVIgUEFSVFkgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUKUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLgoKICAgICAgICAgICAgICAgICAgICAgRU5EIE9GIFRFUk1TIEFORCBDT05ESVRJT05TCgogICAgICAgICAgICBIb3cgdG8gQXBwbHkgVGhlc2UgVGVybXMgdG8gWW91ciBOZXcgUHJvZ3JhbXMKCiAgSWYgeW91IGRldmVsb3AgYSBuZXcgcHJvZ3JhbSwgYW5kIHlvdSB3YW50IGl0IHRvIGJlIG9mIHRoZSBncmVhdGVzdApwb3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgdGhlIGJlc3Qgd2F5IHRvIGFjaGlldmUgdGhpcyBpcyB0byBtYWtlIGl0CmZyZWUgc29mdHdhcmUgd2hpY2ggZXZlcnlvbmUgY2FuIHJlZGlzdHJpYnV0ZSBhbmQgY2hhbmdlIHVuZGVyIHRoZXNlIHRlcm1zLgoKICBUbyBkbyBzbywgYXR0YWNoIHRoZSBmb2xsb3dpbmcgbm90aWNlcyB0byB0aGUgcHJvZ3JhbS4gIEl0IGlzIHNhZmVzdAp0byBhdHRhY2ggdGhlbSB0byB0aGUgc3RhcnQgb2YgZWFjaCBzb3VyY2UgZmlsZSB0byBtb3N0IGVmZmVjdGl2ZWx5CmNvbnZleSB0aGUgZXhjbHVzaW9uIG9mIHdhcnJhbnR5OyBhbmQgZWFjaCBmaWxlIHNob3VsZCBoYXZlIGF0IGxlYXN0CnRoZSAiY29weXJpZ2h0IiBsaW5lIGFuZCBhIHBvaW50ZXIgdG8gd2hlcmUgdGhlIGZ1bGwgbm90aWNlIGlzIGZvdW5kLgoKICAgIDxvbmUgbGluZSB0byBnaXZlIHRoZSBwcm9ncmFtJ3MgbmFtZSBhbmQgYSBicmllZiBpZGVhIG9mIHdoYXQgaXQgZG9lcy4+CiAgICBDb3B5cmlnaHQgKEMpIDx5ZWFyPiAgPG5hbWUgb2YgYXV0aG9yPgoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwogICAgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKICAgIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCgpBbHNvIGFkZCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY29udGFjdCB5b3UgYnkgZWxlY3Ryb25pYyBhbmQgcGFwZXIgbWFpbC4KCklmIHRoZSBwcm9ncmFtIGlzIGludGVyYWN0aXZlLCBtYWtlIGl0IG91dHB1dCBhIHNob3J0IG5vdGljZSBsaWtlIHRoaXMKd2hlbiBpdCBzdGFydHMgaW4gYW4gaW50ZXJhY3RpdmUgbW9kZToKCiAgICBHbm9tb3Zpc2lvbiB2ZXJzaW9uIDY5LCBDb3B5cmlnaHQgKEMpIHllYXIgbmFtZSBvZiBhdXRob3IKICAgIEdub21vdmlzaW9uIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWTsgZm9yIGRldGFpbHMgdHlwZSBgc2hvdyB3Jy4KICAgIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZSwgYW5kIHlvdSBhcmUgd2VsY29tZSB0byByZWRpc3RyaWJ1dGUgaXQKICAgIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9uczsgdHlwZSBgc2hvdyBjJyBmb3IgZGV0YWlscy4KClRoZSBoeXBvdGhldGljYWwgY29tbWFuZHMgYHNob3cgdycgYW5kIGBzaG93IGMnIHNob3VsZCBzaG93IHRoZSBhcHByb3ByaWF0ZQpwYXJ0cyBvZiB0aGUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIE9mIGNvdXJzZSwgdGhlIGNvbW1hbmRzIHlvdSB1c2UgbWF5CmJlIGNhbGxlZCBzb21ldGhpbmcgb3RoZXIgdGhhbiBgc2hvdyB3JyBhbmQgYHNob3cgYyc7IHRoZXkgY291bGQgZXZlbiBiZQptb3VzZS1jbGlja3Mgb3IgbWVudSBpdGVtcy0td2hhdGV2ZXIgc3VpdHMgeW91ciBwcm9ncmFtLgoKWW91IHNob3VsZCBhbHNvIGdldCB5b3VyIGVtcGxveWVyIChpZiB5b3Ugd29yayBhcyBhIHByb2dyYW1tZXIpIG9yIHlvdXIKc2Nob29sLCBpZiBhbnksIHRvIHNpZ24gYSAiY29weXJpZ2h0IGRpc2NsYWltZXIiIGZvciB0aGUgcHJvZ3JhbSwgaWYKbmVjZXNzYXJ5LiAgSGVyZSBpcyBhIHNhbXBsZTsgYWx0ZXIgdGhlIG5hbWVzOgoKICBZb3lvZHluZSwgSW5jLiwgaGVyZWJ5IGRpc2NsYWltcyBhbGwgY29weXJpZ2h0IGludGVyZXN0IGluIHRoZSBwcm9ncmFtCiAgYEdub21vdmlzaW9uJyAod2hpY2ggbWFrZXMgcGFzc2VzIGF0IGNvbXBpbGVycykgd3JpdHRlbiBieSBKYW1lcyBIYWNrZXIuCgogIDxzaWduYXR1cmUgb2YgVHkgQ29vbj4sIDEgQXByaWwgMTk4OQogIFR5IENvb24sIFByZXNpZGVudCBvZiBWaWNlCgpUaGlzIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZG9lcyBub3QgcGVybWl0IGluY29ycG9yYXRpbmcgeW91ciBwcm9ncmFtIGludG8KcHJvcHJpZXRhcnkgcHJvZ3JhbXMuICBJZiB5b3VyIHByb2dyYW0gaXMgYSBzdWJyb3V0aW5lIGxpYnJhcnksIHlvdSBtYXkKY29uc2lkZXIgaXQgbW9yZSB1c2VmdWwgdG8gcGVybWl0IGxpbmtpbmcgcHJvcHJpZXRhcnkgYXBwbGljYXRpb25zIHdpdGggdGhlCmxpYnJhcnkuICBJZiB0aGlzIGlzIHdoYXQgeW91IHdhbnQgdG8gZG8sIHVzZSB0aGUgR05VIExlc3NlciBHZW5lcmFsClB1YmxpYyBMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlLgo=]]></data>
	</file>
	<file>
	  <filename>/doc/help.inc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPldoYXQgZG9lcyB0aGlzIGRvPzwvaDM+CjxwPlRoaXMgbW9kdWxlIGlzIGEgY29tcGFuaW9uIG1vZHVsZSB0byBGcm9udEVuZFVzZXJzICh2My4wKykgdGhhdCBwcm92aWRlcyBmb3IgdHdvIGZhY3RvciBhdXRoZW50aWNhdGlvbiAoMkZBKSB2aWEgU01TLiAgVXNlcnMgZW50ZXIgdGhlaXIgbm9ybWFsIHVzZXJuYW1lIGFuZCBwYXNzd29yZCBhbmQgdGhlbiBhcmUgc2VudCBhbiBTTVMgbWVzc2FnZSAodmlhIHR3aWxsaW8pIHdpdGggYSB1bmlxdWUgY29kZS4gIFRoZXkgbXVzdCB0aGVuIGVudGVyIHRoYXQgY29kZSBvbiBhIGZvcm0gdG8gY29uZmlybSB0aGUgbG9naW4uPC9wPgoKPHA+VGhpcyBtb2R1bGUgd29ya3MgYnkgdXNpbmcgdGhlIHZhbHVlIG9mIGEgcHJvcGVydHkgaW4gdGhlIEZFVSBtb2R1bGUgYXMgYW4gU01TIGNhcGFibGUgbnVtYmVyLiAgQWZ0ZXIgdGhlIHVzZXIgZW50ZXJzIHRoZWlyIG5vcm1hbCB1c2VybmFtZSBhbmQgcGFzc3dvcmQgKGFuZCBwb3NzaWJsZSBjYXB0Y2hhKSwgPHN0cm9uZz5BTkQgSUY8L3N0cm9uZz4gYSB2YWx1ZSBpcyBmb3VuZCBmb3IgdGhhdCBwcm9wZXJ0eSBmb3IgdGhlIHVzZXIgdGhhdCBpcyBsb2dnaW5nIGluLCAgYSB0ZXh0IG1lc3NhZ2UgaXMgc2VudCB0byB0aGUgdXNlciB3aXRoIGEgdW5pcXVlIGNvZGUuICBUaGUgdXNlciBtdXN0IGVudGVyIHRoZSBjb2RlIGNvbnRhaW5lZCBpbiB0aGUgdGV4dCBtZXNzYWdlIGludG8gYSBmb3JtIGluIHRoZSBtb2R1bGUuICAgSWYgdGhlIGRldGVjdGVkIG51bWJlciBpcyBmb3Igc29tZSByZWFzb24gaW52YWxpZCBPUiB0aGUgdXNlciBjYW5ub3QgZW50ZXIgdGhlIGNvZGUgY29ycmVjdGx5IHRoZXkgY2Fubm90IGNvbXBsZXRlIHRoZSBsb2dpbiBwcm9jZXNzLjwvcD4KCjxwPkJ5IGRlZmF1bHQgdGhpcyBtb2R1bGUgYWxsb3dzIGZvciBvcHRpb25hbCB0d28gZmFjdG9yIGF1dGhlbnRpY2F0aW9uLiAgdXNlcnMgdGhhdCBoYXZlIGEgdmFsdWUgZm9yIHRoZSBhcHByb3ByaWF0ZSBwcm9wZXJ0eSB1c2UgdHdvIGZhY3RvciBhdXRoZW50aWNhdGlvbi4gIFRvIG1ha2UgdHdvIGZhY3RvciBhdXRoZW50aWNhdGlvbiByZXF1aXJlZCBmb3IgYWxsIHVzZXJzIHlvdSBzaG91bGQgZW5hYmxlIHRoZSA8Y29kZT5jZ3R3aWxsaW8yZmFfcGhvbmVfcmVxdWlyZWQ8L2NvZGU+IGNvbmZpZyBlbnRyeS48L3A+Cgo8cD5UaGlzIG1vZHVsZSBwcm9iYWJseSBzaG91bGQgbm90IGJlIHVuc2VkIGluIGNvbmp1bmN0aW9uIHdpdGggbW9kdWxlcyB0aGF0IHByb3ZpZGUgYWx0ZXJuYXRlIGF1dGhlbnRpY2F0aW9uIG1lY2hhbmlzbXMgc3VjaCBhcyBDR0ZFVVR3aXR0ZXJBdXRoLCBldGMuPC9wPgoKPGgzPkhvdyBkbyBJIFVzZSBpdD88L2gzPgo8dWw+CiAgIDxsaT5JbnN0YWxsIHRoZSBtb2R1bGU8L2xpPgogICA8bGk+RW5zdXJlIHRoYXQgeW91IGhhdmUgYSBwcm9wZXJ0eSBpbiBGRVUgdGhhdCBjYW4gY29udGFpbiBhbiBTTVMgY2FwYWJsZSB0ZWxlcGhvbmUgbnVtYmVyIGZvciB5b3VyIHVzZXJzLiAgVGhpcyBwcm9wZXJ0eSBjYW4gYmUgb2YgdHlwZSB0ZWwgb3Igb2YgdHlwZSB0ZXh0PC9saT4KICAgPGxpPkFzc29jaWF0ZSB0aGUgcHJvcGVydHkgd2l0aCBhdCBsZWFzdCBvbmUgRkVVIHVzZXIgZ3JvdXAuPC9saT4KICAgPGxpPkVuc3VyZSB0aGF0IHNvbWUgdXNlcnMgaGF2ZSB2YWxpZCBTTVMgbnVtYmVycyBhY2NvY2lhdGVkIHdpdGggdGhlaXIgYWNjb3VudC48L2xpPgogICA8bGk+UmV0cmlldmUgYW5kIHNldCB0aGUgYXBwcm9wcmlhdGUgY29uZmlnIGVudHJpZXMgZnJvbSB0d2lsbGlvIGludG8gdGhlIGNvbmZpZy5waHAgZmlsZS48L2xpPgo8L3VsPgoKCjxoMz5Db25maWcgdmFyaWFibGVzPC9oMz4KPHVsPgogICA8bGk+PGNvZGU+dHdpbGxpb19zaWQ8L2NvZGU+IC0gPGVtPihzdHJpbmcgLSByZXF1aXJlZCk8L2VtPgogICAgICAgPHA+VGhlIFNJRCBmcm9tIHlvdXIgdHdpbGxpbyBjb25zb2xlLjwvcD4KICAgPC9saT4KICAgPGxpPjxjb2RlPnR3aWxsaW9fbnVtYmVyPC9jb2RlPiAtIDxlbT4oc3RyaW5nLSByZXF1aXJlZCk8L2VtPgogICAgICAgPHA+VGhlIG51bWJlciB0aGF0IGFsbCBTTVMgbWVzc2FnZXMgY29tZSBmcm9tLiAgWW91IGNhbiByZXRyaWV2ZSB0aGlzIGZyb20gZnJvbSB5b3VyIHR3aWxsaW8gY29uc29sZS48L3A+CiAgIDwvbGk+CiAgIDxsaT48Y29kZT50d2lsbGlvX2F1dGh0b2tlbjwvY29kZT4gLSA8ZW0+KHN0cmluZyAtIHJlcXVpcmVyZCk8L2VtPgogICAgICAgPHA+VGhlIGF1dGhvcml6YXRpb24gdG9rZW4gZnJvbSB5b3VyIHR3aWxsaW8gY29uc29sZS48L3A+CiAgIDwvbGk+CiAgIDxsaT48Y29kZT5jZ3R3aWxsaW8yZmFfZmV1X3Byb3BlcnR5PC9jb2RlPiAtIDxlbT4oc3RyaW5nIC0gb3B0aW9uYWwpPC9lbT4KICAgICAgIDxwPlRoZSBuYW1lIG9mIHRoZSBGRVUgcHJvcGVydHkgdG8gdXNlIGZvciBhbiBTTVMgY2FwYWJsZSBwaG9uZSBudW1iZXIuICBBbnkgdXNlciB0aGF0IGhhcyBhIHZhbHVlIGZvciB0aGlzIHByb3BlcnR5IHdpbGwgaGF2ZSAyRkEgZW5hYmxlZC48L3A+CiAgIDwvbGk+CiAgIDxsaT48Y29kZT5jZ3R3aWxsaW8yZmFfYWxsb3dsb25nZXJtPC9jb2RlPiAtIDxlbT4oYm9vbCAtIG9wdGlvbmFsKTwvZW0+CiAgICAgICA8cD5JbmRpY2F0ZXMsIHRoYXQgd2hlbiB0aGUgdXNlciBpcyBhdXRoZW50aWNhdGVkLCB0aGV5IHNob3VsZCBiZSBhdXRoZW50aWNhdGVkIHdpdGggYSBsb25nIHRlcm0gY29va2llLCBub3QgYSBzZXNzaW9uIGNvb2tpZS48L3A+CiAgIDwvbGk+CiAgIDxsaT48Y29kZT5jZ3R3aWxsaW8yZmFfcGhvbmVfcmVxdWlyZWQ8L2NvZGU+IC0gPGVtPihib29sIC0gb3B0aW9uYWwpPC9lbT4KICAgICAgIDxwPklmIGVuYWJsZWQsIHR3byBmYWN0b3IgYXV0aGVudGljYXRpb24gaXMgcmVxdWlyZWQgZm9yIGFsbCB1c2Vycy48L3A+CiAgIDwvbGk+CjwvdWw+Cgo8aDM+UGFyYW1ldGVyczo8L2gzPgo8dWw+CiAgICA8bGk+dGVtcGxhdGUgLSAoc3RyaW5nKSBkZWZhdWx0PTxjb2RlPm1vZHVsZV9maWxlX3RwbDtDR0ZFVVR3aWxsaW8yRkE7ZGVmYXVsdC50cGw8L2NvZGU+CiAgICAgICAgPHA+U3BlY2lmeSB0aGUgbmFtZSBvZiBhbiBvcHRpb25hbCB0ZW1wbGF0ZSBmaWxlLiAgU21hcnR5IHJlc291cmNlcyBhcmUgdmFsaWQgaGVyZS4KCSAgIElmIHlvdSBkbyBub3Qgc3BlY2lmeSBhIHNtYXJ0eSByZXNvdXJjZSwgYW5kIHRoZSBuYW1lIGVuZHMgd2l0aCAudHBsIHRoZW4gdGhlIHN5c3RlbSB3aWxsIGFzc3VtZSBhIG1vZHVsZSBmaWxlIHRlbXBsYXRlLgoJICAgSWYgbm8gLnRwbCBzdWZmaXggaXMgc3BlY2lmaWVkLCB0aGVuIHRoZSBzeXN0ZW0gd2lsbCBhc3N1bWUgYSB0ZW1wbGF0ZSB3aXRoaW4gZGVzaWduIG1hbmFnZXIuPC9wPgogICAgPC9saT4KPC91bD4KCgo8aDM+SG9va3M8L2gzPgo8dWw+CiAgIDxsaT48Y29kZT5DR0ZFVVR3aWxsaW8yRkE6OkFmdGVyVmVyaWZ5PC9jb2RlPgogICAgICAgPHA+VHJpZ2dlcmVkIGFmdGVyIHRoZSB1c2VyIGhhcyBjb21wbGV0ZWQgdGhlIHZlcmlmaWNhdGlvbiBwcm9jZXNzLjwvcD4KICAgICAgIDxwPlBhcmFtZXRlcnMgKGFzIGFuIGFzc29jaWF0aXZlIGFycmF5KTo8L3A+CiAgICAgICA8dWw+CiAgICAgICAgICA8bGk+dWlkIChpbnQpIC0gVGhlIHVzZXJpZCBhc3NvY2lhdGVkIHdpdGggdGhlIGFjY291bnQuPC9saT4KICAgICAgICAgIDxsaT51c2VybmFtZSAoc3RyaW5nKSAtIFRoZSB1c2VyIGVudGVyZWQgdXNlcm5hbWUuPC9saT4KICAgICAgICAgIDxsaT5waG9uZSAoc3RyaW5nKSAtIFRoZSBkZXRlY3RlZCBTTVMgbnVtYmVyPC9saT4KICAgICAgIDwvdWw+CiAgICAgICA8cD5UbyBnZW5lcmF0ZSBhIHdlbGwgaGFuZGxlZCBlcnJvciwgaGFuZGxlcnMgc2hvdWxkIHRocm93IGFuIGV4Y2VwdGlvbiBkZXJpdmVkIGZyb20gUnVudGltZUV4Y2VwdGlvbi48L3A+CiAgIDwvbGk+CiAgIDxsaT48Y29kZT5DR0ZFVVR3aWxsaW8yRkE6OkF1dGhGYWlsZWQ8L2NvZGU+CiAgICAgICA8cD5UcmlnZ2VyZWQgd2hlbiB0aGUgdXNlciBoYXMgZW50ZXJlZCBhbiBpbnZhbGlkIFNNUyBjb2RlLjwvPgogICAgICAgPHA+UGFyYW1ldGVycyAoYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkpOjwvcD4KICAgICAgIDx1bD4KICAgICAgICAgIDxsaT51aWQgKGludCkgLSBUaGUgdXNlcmlkIGFzc29jaWF0ZWQgd2l0aCB0aGUgYWNjb3VudC48L2xpPgogICAgICAgICAgPGxpPnVzZXJuYW1lIChzdHJpbmcpIC0gVGhlIHVzZXIgZW50ZXJlZCB1c2VybmFtZS48L2xpPgogICAgICAgPC91bD4KICAgPC9saT4KPC91bD4KCjxoMz5Ud2lsbGlvPC9oMz4KPHA+VHdpbGxpbyBpcyBhIHBhaWQgc2VydmljZSwgYW5kIHJlcXVpcmVzIGEgc3Vic2NyaXB0aW9uLiAgIFRoZSBkZXZlbG9wZXIocykgb2YgdGhpcyBtb2R1bGUgYXJlIGluIG5vIHdheSBhc3NvY2lhdGVkIHdpdGggdHdpbGxpby48L3A+Cgo8aDM+U3VwcG9ydDwvaDM+CjxwPlRoZSBtb2R1bGUgYXV0aG9yIGlzIGluIG5vIHdheSBvYmxpZ2F0ZWQgdG8gcHJvdmlkZSBzdXBwb3J0IGZvciB0aGlzIGNvZGUgaW4gYW55IGZhc2hpb24uICBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4KPHVsPgo8bGk+QSBidWcgdHJhY2tpbmcgYW5kIGZlYXR1cmUgcmVxdWVzdCBzeXN0ZW0gaGFzIGJlZW4gY3JlYXRlZCBmb3IgdGhpcyBtb2R1bGUgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9jZ2Jsb2ciPmhlcmU8L2E+LiAgUGxlYXNlIGJlIHZlcmJvc2UgYW5kIGRlc2NyaXB0aXZlIHdoZW4gc3VibWl0dGluZyBidWcgcmVwb3J0cyBhbmQgZmVhdHVyZSByZXF1ZXN0cywgYW5kIGZvciBidWcgcmVwb3J0cyBlbnN1cmUgdGhhdCB5b3UgaGF2ZSBwcm92aWRlZCBzdWZmaWNpZW50IGluZm9ybWF0aW9uIHRvIHJlbGlhYmx5IHJlcHJvZHVjZSB0aGUgaXNzdWUuPC9saT4KPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi4gIFdoZW4gZGVzY3JpYmluZyBhbiBpc3N1ZSBwbGVhc2UgbWFrZSBhbiBlZmZvcnQgdG8gcHJvdmlkZSBhbGwgcmVsYXZhbnQgaW5mb3JtYXRpb24sIGEgdGhvcm91Z2ggZGVzY3JpcHRpb24gb2YgeW91ciBpc3N1ZSwgYW5kIHN0ZXBzIHRvIHJlcHJvZHVjZSBpdCBvciB5b3VyIGRpc2N1c3Npb24gbWF5IGJlIGlnbm9yZWQuPC9saT4KPGxpPlRoZSBhdXRob3IsIGNhbGd1eTEwMDAsIGNhbiBvZnRlbiBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zIj5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+CjxsaT5MYXN0bHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvciBkaXJlY3RseS4gIEhvd2V2ZXIsIHBsZWFzZSB1c2UgdGhpcyBhcyBhIGxhc3QgcmVzb3J0LCBhbmQgZW5zdXJlIHRoYXQgeW91IGhhdmUgZm9sbG93ZWQgYWxsIGFwcGxpY2FibGUgaW5zdHJ1Y3Rpb25zIG9uIHRoZSBmb3JnZSwgaW4gdGhlIGZvcnVtcywgZXRjLjwvbGk+CjwvdWw+Cgo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDE5LCBSb2JlcnQgQ2FtcGJlbGwgPGEgaHJlZj0ibWFpbHRvOmNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmciPiZsdDtjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnJmd0OzwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi48L3A+CjxwPkhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAphcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwpNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4Kc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS48L3A+CjxwPlRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLApidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgpNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCmFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCk9yIHJlYWQgaXQgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5vbmxpbmU8L2E+PC9wPgo=]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ21zZ192ZXJpZnljb2RlJ10gPSAnWW91ciB2ZXJpZmljYXRpb24gY29kZSBpcyAlcyc7CiRsYW5nWyd1c2VybmFtZSddID0gJ1VzZXJuYW1lJzsKJGxhbmdbJ2VtYWlsX2FkZHJlc3MnXSA9ICdFbWFpbCBhZGRyZXNzJzsKJGxhbmdbJ3Bhc3N3b3JkJ10gPSAnUGFzc3dvcmQnOwokbGFuZ1snc21zY29kZSddID0gJ1ZlcmlmaWNhdGlvbiBjb2RlJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ1N1Ym1pdCc7CiRsYW5nWydyZW1lbWJlcm1lJ10gPSAnUmVtZW1iZXIgbWUgb24gdGhpcyBjb21wdXRlcic7CgokbGFuZ1snZXJyX3NlY3VyaXR5J10gPSAnSW52YWxpZCBmb3JtIHN1Ym1pc3Npb24gKHNvbWUgc2VjdXJpdHkgZGF0YSBpcyBtaXNzaW5nIG9yIGludmFsaWQpLic7CiRsYW5nWydlcnJfaW5wdXRwYXJhbXMnXSA9ICdCb3RoIGEgdXNlcm5hbWUgYW5kIHBhc3N3b3JkIGFyZSByZXF1aXJlZCc7CiRsYW5nWydlcnJfYXV0aGVudGljYXRpb24nXSA9ICdJbnZhbGlkIHVzZXJuYW1lIGFuZC9vciBwYXNzd29yZCc7CiRsYW5nWydlcnJfdXNlcm5vcGhvbmUnXSA9ICdTb3JyeSwgd2UgY291bGQgbm90IGZpbmQgYSBwaG9uZSBudW1iZXIgdG8gY29tbXVuaWNhdGUgd2l0aCc7CiRsYW5nWydlcnJfY2FudGxvZ2luJ10gPSAnU29ycnksIGJ1dCB5b3UgY2Fubm90IGxvZ2luIGF0IHRoaXMgdGltZSc7CiRsYW5nWydlcnJfbG9naW4nXSA9ICdBIHN5c3RlbSBwcm9ibGVtIG9jY3VycmVkIHdoZW4gdHJ5aW5nIHRvIGxvZyBpbic7CiRsYW5nWydtc2dfbG9naW5fc3VjY2VzcyddID0gJ1dvb3QhIFlvdSBhcmUgaW4hICBXZWxjb21lISc7]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.AuthState.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVVHdpbGxpbzJGQTsKdXNlIEpzb25TZXJpYWxpemFibGU7CgpjbGFzcyBBdXRoU3RhdGUgaW1wbGVtZW50cyBKc29uU2VyaWFsaXphYmxlCnsKICAgIHByaXZhdGUgJF9kYXRhID0gWyAndWlkJz0+bnVsbCwgJ3VzZXJuYW1lJz0+bnVsbCwgJ3Bhc3N3b3JkJz0+bnVsbCwgJ2dyb3Vwcyc9Pm51bGwsICdzbXNjb2RlJz0+bnVsbCwgJ3Bob25lJz0+bnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAndHMnPT5udWxsLCAnbG9uZ3Rlcm0nPT5mYWxzZSBdOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChhcnJheSAkZGF0YSA9IG51bGwpCiAgICB7CiAgICAgICAgaWYoIGlzX251bGwoJGRhdGEpICkgcmV0dXJuOwogICAgICAgIGZvcmVhY2goICRkYXRhIGFzICRrZXkgPT4gJHZhbCApIHsKICAgICAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgICAgICBjYXNlICd1aWQnOgogICAgICAgICAgICBjYXNlICd0cyc6CiAgICAgICAgICAgICAgICAkdGhpcy0+X2RhdGFbJGtleV0gPSAoaW50KSAkdmFsOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ3VzZXJuYW1lJzoKICAgICAgICAgICAgY2FzZSAncGFzc3dvcmQnOgogICAgICAgICAgICBjYXNlICdncm91cHMnOgogICAgICAgICAgICBjYXNlICdzbXNjb2RlJzoKICAgICAgICAgICAgY2FzZSAncGhvbmUnOgogICAgICAgICAgICAgICAgJHRoaXMtPl9kYXRhWyRrZXldID0gdHJpbSgkdmFsKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdsb25ndGVybSc6CiAgICAgICAgICAgICAgICAkdGhpcy0+X2RhdGFbJGtleV0gPSBjbXNfdG9fYm9vbCgkdmFsKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC8vIHZhbGlkYXRpb24gbG9naWMgZm9yIGJ1c2luZXNzIGRhdGEKICAgICAgICAkbm93ID0gdGltZSgpOwogICAgICAgIGlmKCAkdGhpcy0+dHMgJiYgJHRoaXMtPnNtc2NvZGUgJiYKICAgICAgICAgICAgKCR0aGlzLT50cyA+ICRub3cgfHwgJHRoaXMtPnRzIDwgdGltZSgpIC0gNzIwMCkgKSB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCB0aW1lc3RhbXAgcHJvdmlkZWQgdG8gJy5fX01FVEhPRCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fZ2V0KHN0cmluZyAka2V5KQogICAgewogICAgICAgIHN3aXRjaCggJGtleSApIHsKICAgICAgICBjYXNlICd1aWQnOgogICAgICAgIGNhc2UgJ3RzJzoKICAgICAgICAgICAgaWYoICFpc19udWxsKCR0aGlzLT5fZGF0YVska2V5XSkgKSByZXR1cm4gKGludCkgJHRoaXMtPl9kYXRhWyRrZXldOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICd1c2VybmFtZSc6CiAgICAgICAgY2FzZSAncGFzc3dvcmQnOgogICAgICAgIGNhc2UgJ2dyb3Vwcyc6CiAgICAgICAgY2FzZSAnc21zY29kZSc6CiAgICAgICAgY2FzZSAncGhvbmUnOgogICAgICAgICAgICBpZiggIWlzX251bGwoJHRoaXMtPl9kYXRhWyRrZXldKSApIHJldHVybiB0cmltKCR0aGlzLT5fZGF0YVska2V5XSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ2xvbmd0ZXJtJzoKICAgICAgICAgICAgcmV0dXJuIChib29sKSAkdGhpcy0+X2RhdGFbJGtleV07CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigiJGtleSBpcyBub3QgYSBnZXR0YWJsZSBwcm9wZXJ0eSBvZiAiLl9fQ0xBU1NfXyk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3NldChzdHJpbmcgJGtleSwgJHZhbCkKICAgIHsKICAgICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCIka2V5IGlzIG5vdCBhIHNldHRhYmxlIHByb3BlcnR5IG9mICIuX19DTEFTU19fKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aChzdHJpbmcgJGtleSwgJHZhbCkgOiBBdXRoU3RhdGUKICAgIHsKICAgICAgICAkb2JqID0gY2xvbmUgJHRoaXM7CiAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgIGNhc2UgJ3VpZCc6CiAgICAgICAgY2FzZSAndHMnOgogICAgICAgICAgICAkb2JqLT5fZGF0YVska2V5XSA9IChpbnQpICR2YWw7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICd1c2VybmFtZSc6CiAgICAgICAgY2FzZSAncGFzc3dvcmQnOgogICAgICAgIGNhc2UgJ3Bob25lJzoKICAgICAgICAgICAgJG9iai0+X2RhdGFbJGtleV0gPSB0cmltKCR2YWwpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnc21zY29kZSc6CiAgICAgICAgICAgIC8vIHNldCBhbiBzbXMgY29kZSwgYWxzbyBzZXRzIHRoZSB0aW1lc3RhbXAKICAgICAgICAgICAgJG9iai0+X2RhdGFbJGtleV0gPSB0cmltKCR2YWwpOwogICAgICAgICAgICAkb2JqLT5fZGF0YVsndHMnXSA9IHRpbWUoKTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ2xvbmd0ZXJtJzoKICAgICAgICAgICAgJG9iai0+X2RhdGFbJGtleV0gPSBjbXNfdG9fYm9vbCgkdmFsKTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oIiRrZXkgaXMgbm90IGFuIGFkanVzdGFibGUgcHJvcGVydHkgb2YgIi5fX0NMQVNTX18pOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJG9iajsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gSnNvblNlcmlhbGl6ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5fZGF0YTsKICAgIH0KfSAvLyBjbGFzcw==]]></data>
	</file>
	<file>
	  <filename>/lib/class.AuthStorage.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVVHdpbGxpbzJGQTsKCmNsYXNzIFZhbGlkYXRpb25FcnJvciBleHRlbmRzIFxSdW50aW1lRXhjZXB0aW9uIHt9CgpjbGFzcyBBdXRoU3RvcmFnZQp7CiAgICBwdWJsaWMgZnVuY3Rpb24gc3RvcmUoQXV0aFN0YXRlICRkYXRhKSA6IHN0cmluZwogICAgewogICAgICAgICRpbiA9IGpzb25fZW5jb2RlKCRkYXRhKTsKICAgICAgICAkc2lnID0gc2hhMShfX0ZJTEVfXy4kaW4pOwogICAgICAgICRrZXkgPSBzaGExKF9fRklMRV9fLiRzaWcucmFuZCgpLnRpbWUoKSk7CiAgICAgICAgJF9TRVNTSU9OWyRrZXldID0gYmFzZTY0X2VuY29kZSgkc2lnLic6OicuJGluKTsKICAgICAgICByZXR1cm4gJGtleTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcmV0cmlldmUoc3RyaW5nICRrZXkpIDogQXV0aFN0YXRlCiAgICB7CiAgICAgICAgaWYoICFpc3NldCgkX1NFU1NJT05bJGtleV0pIHx8ICEkX1NFU1NJT05bJGtleV0gKSB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignTm8gc2Vzc2lvbiBkYXRhIGlkZW50aWZpZWQgYnkgJy4ka2V5KTsKICAgICAgICAkZGF0YSA9IGJhc2U2NF9kZWNvZGUoJF9TRVNTSU9OWyRrZXldKTsKICAgICAgICBpZiggISRkYXRhICkgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ2NvcnJ1cHQgYXV0aHN0YXRlIGluZm8gKDEpJyk7CiAgICAgICAgbGlzdCgkc2lnLCRpbikgPSBleHBsb2RlKCc6OicsJGRhdGEpOwogICAgICAgIGlmKCAhJHNpZyB8fCAhJGluICkgdGhyb3cgbmV3IFxJbnZhbGlkQXJnbWVudEV4Y2VwdGlvbignY29ycnVwdCBhdXRoc3RhdGUgaW5mbyAoMiknKTsKICAgICAgICAkdGVzdCA9IHNoYTEoX19GSUxFX18uJGluKTsKICAgICAgICBpZiggJHRlc3QgIT0gJHNpZyApIHRocm93IG5ldyBcSW52YWxpZEFyZ21lbnRFeGNlcHRpb24oJ2NvcnJ1cHQgYXV0aHN0YXRlIGluZm8gKDMpJyk7CiAgICAgICAgJGFyciA9IGpzb25fZGVjb2RlKCRpbixUUlVFKTsKICAgICAgICByZXR1cm4gbmV3IEF1dGhTdGF0ZSgkYXJyKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZGVzdHJveShzdHJpbmcgJGtleSkKICAgIHsKICAgICAgICBpZiggaXNzZXQoJF9TRVNTSU9OWyRrZXldKSApIHVuc2V0KCRfU0VTU0lPTlska2V5XSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZhbGlkYXRlX2NvZGUoQXV0aFN0YXRlICRzdGF0ZSwgc3RyaW5nICR0ZXN0Y29kZSkKICAgIHsKICAgICAgICBpZiggJHN0YXRlLT5zbXNjb2RlICE9ICR0ZXN0Y29kZSApIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ0ludmFsaWQgU01TIGNvZGUnKTsKICAgICAgICAkdiA9IHRpbWUoKSAtICRzdGF0ZS0+dHM7CiAgICAgICAgaWYoICR2IDwgMCB8fCAkdiA+IDE4MDAgKSB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdTTVMgQ29kZSBleHBpcmVkJyk7CiAgICB9Cn0gLy8gY2xhc3M=]]></data>
	</file>
	<file>
	  <filename>/lib/class.MessageTransport.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVVHdpbGxpbzJGQTsKdXNlIENHRkVVVHdpbGxpbzJGQTsKCmNsYXNzIE1lc3NhZ2VUcmFuc3BvcnQKewogICAgcHJpdmF0ZSAkbW9kOwogICAgcHJpdmF0ZSAkc2V0dGluZ3M7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KENHRkVVVHdpbGxpbzJGQSAkbW9kLCBzZXR0aW5ncyAkc2V0dGluZ3MpCiAgICB7CiAgICAgICAgJHRoaXMtPm1vZCA9ICRtb2Q7CiAgICAgICAgJHRoaXMtPnNldHRpbmdzID0gJHNldHRpbmdzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZW5kKEF1dGhTdGF0ZSAkc3RhdGUpCiAgICB7CiAgICAgICAgLy8gZW5zdXJlIGRhdGEgaXMgdmFsaWQKICAgICAgICAvLyBzZW5kIHRoZSBzbXMKICAgICAgICAkc2lkID0gJHRoaXMtPnNldHRpbmdzLT5zaWQ7CiAgICAgICAgJHRva2VuID0gJHRoaXMtPnNldHRpbmdzLT5hdXRodG9rZW47CiAgICAgICAgJGZyb20gPSAkdGhpcy0+c2V0dGluZ3MtPm51bWJlcjsKICAgICAgICAkdXJsID0gImh0dHBzOi8vYXBpLnR3aWxpby5jb20vMjAxMC0wNC0wMS9BY2NvdW50cy8kc2lkL1NNUy9NZXNzYWdlcyI7CiAgICAgICAgJGRhdGEgPSBhcnJheSAoCiAgICAgICAgICAgICdGcm9tJyA9PiAkZnJvbSwKICAgICAgICAgICAgJ1RvJyA9PiAkc3RhdGUtPnBob25lLAogICAgICAgICAgICAnQm9keScgPT4gJHRoaXMtPm1vZC0+TGFuZygnbXNnX3ZlcmlmeWNvZGUnLCAkc3RhdGUtPnNtc2NvZGUpCiAgICAgICAgICAgICk7CiAgICAgICAgJHBvc3QgPSBodHRwX2J1aWxkX3F1ZXJ5KCRkYXRhKTsKICAgICAgICAkY2ggPSBjdXJsX2luaXQoJHVybCApOwogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9QT1NULCB0cnVlKTsKICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOwogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgZmFsc2UpOwogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9IVFRQQVVUSCwgQ1VSTEFVVEhfQkFTSUMpOwogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VU0VSUFdELCAiJHNpZDokdG9rZW4iKTsKICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUE9TVEZJRUxEUywgJHBvc3QpOwogICAgICAgICRyZXMgPSBjdXJsX2V4ZWMoJGNoKTsKICAgICAgICAkaW5mbyA9IGN1cmxfZ2V0aW5mbygkY2gpOwogICAgICAgIGN1cmxfY2xvc2UoJGNoKTsKICAgICAgICAkcmVzID0ganNvbl9kZWNvZGUoJHJlcyk7CiAgICAgICAgaWYoICRpbmZvWydodHRwX2NvZGUnXSA+PSA0MDAgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1NNUyBTZW5kIEZhaWxlZCcpOwogICAgfQoKfSAvLyBjbGFzcw==]]></data>
	</file>
	<file>
	  <filename>/lib/class.settings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHRkVVVHdpbGxpbzJGQTsKdXNlIGNnZV9wYXJhbTsKCi8vIGFuIGltbXV0YWJsZSBjbGFzcwpjbGFzcyBzZXR0aW5ncwp7CiAgICBwcml2YXRlICRzaWQ7CiAgICBwcml2YXRlICRudW1iZXI7CiAgICBwcml2YXRlICRhdXRodG9rZW47CiAgICBwcml2YXRlICRmZXVfcHJvcGVydHk7CiAgICBwcml2YXRlICRhbGxvd19sb25ndGVybTsKICAgIHByaXZhdGUgJHBob25lX3JlcXVpcmVkOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkY29uZmlnKQogICAgewogICAgICAgICR0aGlzLT5zaWQgPSBjZ2VfcGFyYW06OmdldF9zdHJpbmcoJGNvbmZpZywndHdpbGxpb19zaWQnKTsKICAgICAgICAkdGhpcy0+bnVtYmVyID0gY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRjb25maWcsJ3R3aWxsaW9fbnVtYmVyJyk7CiAgICAgICAgJHRoaXMtPmF1dGh0b2tlbiA9IGNnZV9wYXJhbTo6Z2V0X3N0cmluZygkY29uZmlnLCd0d2lsbGlvX2F1dGh0b2tlbicpOwogICAgICAgICR0aGlzLT5mZXVfcHJvcGVydHkgPSBjZ2VfcGFyYW06OmdldF9zdHJpbmcoJGNvbmZpZywnY2d0d2lsbGlvMmZhX2ZldV9wcm9wZXJ0eScpOwogICAgICAgICR0aGlzLT5hbGxvd19sb25ndGVybSA9IGNnZV9wYXJhbTo6Z2V0X2Jvb2woJGNvbmZpZywnY2d0d2lsbGlvMmZhX2FsbG93X2xvbmd0ZXJtJyx0cnVlKTsKICAgICAgICAkdGhpcy0+cGhvbmVfcmVxdWlyZWQgPSBjZ2VfcGFyYW06OmdldF9ib29sKCRjb25maWcsJ2NndHdpbGxpbzJmYV9waG9uZV9yZXF1aXJlZCcsZmFsc2UpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2dldChzdHJpbmcgJGtleSkKICAgIHsKICAgICAgICBzd2l0Y2goICRrZXkgKSB7CiAgICAgICAgY2FzZSAnc2lkJzoKICAgICAgICBjYXNlICdudW1iZXInOgogICAgICAgIGNhc2UgJ2F1dGh0b2tlbic6CiAgICAgICAgY2FzZSAnZmV1X3Byb3BlcnR5JzoKICAgICAgICAgICAgJHZhbCA9ICR0aGlzLT4ka2V5OwogICAgICAgICAgICBpZiggIWlzX251bGwoJHZhbCkgKSAkdmFsID0gdHJpbSgkdmFsKTsKICAgICAgICAgICAgcmV0dXJuICR2YWw7CgogICAgICAgIGNhc2UgJ2FsbG93X2xvbmd0ZXJtJzoKICAgICAgICAgICAgcmV0dXJuIChib29sKSAkdGhpcy0+YWxsb3dfbG9uZ3Rlcm07CgogICAgICAgIGNhc2UgJ3Bob25lX3JlcXVpcmVkJzoKICAgICAgICAgICAgcmV0dXJuIChib29sKSAkdGhpcy0+cGhvbmVfcmVxdWlyZWQ7CgogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oIiRrZXkgaXMgbm90IGEgZ2V0dGFibGUgcHJvcGVydHkgb2YgIi5fX0NMQVNTX18pOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX19zZXQoc3RyaW5nICRrZXksICR2YWwpCiAgICB7CiAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigiJGtleSBpcyBub3QgYSBzZXR0YWJsZSBwcm9wZXJ0eSBvZiAiLl9fQ0xBU1NfXyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzX2NvbmZpZ3VyZWQoKSA6IGJvb2wKICAgIHsKICAgICAgICBpZiggISR0aGlzLT5zaWQgKSByZXR1cm4gZmFsc2U7CiAgICAgICAgaWYoICEkdGhpcy0+bnVtYmVyICkgcmV0dXJuIGZhbHNlOwogICAgICAgIGlmKCAhJHRoaXMtPmF1dGh0b2tlbiApIHJldHVybiBmYWxzZTsKICAgICAgICBpZiggISR0aGlzLT5mZXVfcHJvcGVydHkgKSByZXR1cm4gZmFsc2U7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9Cn0gLy8gY2xhc3M=]]></data>
	</file>
	<file>
	  <filename>/moduleinfo.ini</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[W21vZHVsZV0KbmFtZSA9ICJDR0ZFVVR3aWxsaW8yRkEiCnZlcnNpb24gPSAxLjAKYXV0aG9yID0gImNhbGd1eTEwMDAiCmF1dGhvcmVtYWlsID0gImNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmciCm1pbmNtc3ZlcnNpb24gPSAiMi4yLjEwIgpsYXp5bG9hZGFkbWluID0gMApsYXp5bG9hZGZyb250ZW5kID0gMApbZGVwZW5kc10KQ0dFeHRlbnNpb25zID0gIjEuNjQuMiIKRnJvbnRFbmRVc2VycyA9IDIuOTkK]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/verify.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICFlbXB0eSgkZmluYWxfbWVzc2FnZSl9CgogICAgPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtaW5mbyI+eyRmaW5hbF9tZXNzYWdlfTwvZGl2PgogICAgeyogaWYgd2Ugd2FudCB0byByZWRpcmVjdCBzb21ld2hlcmUsIGl0IGNhbiBiZSBkb25lIGhlcmUgKn0KCntlbHNlfQoKICAgIHtmb3JtX3N0YXJ0IGFjdGlvbj12ZXJpZnkgbWFnaWM9JG1hZ2ljfXtjZ2VfZm9ybV9jc3JmfQogICAge2lmICFlbXB0eSgkZXJyb3IpIH08ZGl2IGNsYXNzPSJhbGVydCBhbGVydC1kYW5nZXIiPnskZXJyb3J9PC9kaXY+ey9pZn0KCiAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgIDxsYWJlbCBjbGFzcz0iY29sLXNtLTIiIGZvcj0iZl9zbXNjb2RlIj57JG1vZC0+TGFuZygnc21zY29kZScpfTo8L2xhYmVsPgogICAgICAgIDxpbnB1dCBjbGFzcz0iY29sLXNtLTkiIGlkPSJmX3Ntc2NvZGUiIHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9c21zY29kZSIgdmFsdWU9IiIgcmVxdWlyZWQvPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfXN1Ym1pdCIgdmFsdWU9InskbW9kLT5MYW5nKCdzdWJtaXQnKX0iIi8+CiAgICA8L2Rpdj4KICAgIHtmb3JtX2VuZH0KCnsvaWZ9]]></data>
	</file>
</module>
