--0016e6d97102f5bde204806b6214 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Pierre, Please find attached the next iteration of the patch to track changes of inline objects. Saving of change-tracked inline-objects works and is inter-operable with oowriter. Loading of documents containing a change-tracked inline object is yet to be done. Some Points - I have tried a new approach to save deleted changes. I have added the code to save delete changes in KoTextWriter ( generateDeleteChangeXml() ) which leverages upon the existing odf-saving code. The advantage with this approach is that we do not have to specifically add anymore code for saving delete-changes specifically. If the current odf-saving code supports a tag, saving of delete change for that specific tag is automatically supported ( along-with saving of formatting information ) . The code has been tested for Simple Delete, multi-para delete, delete with inline images and the saved odf is inter-operable with oowriter - Your comment on the usage of KoChangeTracker in KoTextAnchor has been fixed ( checking for null ) - Loading of documents containing deleted inline changes does not work yet. Will be done by tomorrow - If an inline object is deleted with record-changes enabled and show-changes disabled, the shape does not get deleted from the document. Will be fixing this in tomorrow's patch. Let me know your thoughts and comments on this. Thanks, Ganesh On Thu, Feb 25, 2010 at 12:12 AM, Pierre Stirnweiss wrote: > Le Wednesday 24 February 2010 10:40:16, Ganesh Paramasivam a =E9crit : >> Pierre, >> >> Pierre please find attached the first version of the patch for >> tracking changes of inline objects. This version is mainly for the >> visualization of inline object changes as well as for the Show/Hide >> changes. I'm aware of the fact that these will go away once the new >> approach is done. But I was not sure about how soon/late the new >> approach will take. Hence I decided to implement this as a stop-gap >> solution thinking that the effort would be minimal ( Turned out to be >> a bad idea. See below ). As a side-note, while implementing this, I >> was wondering how a deleted inline image would be displayed in the new >> solution. >> >> I have a really *UGLY* hack in show changes. During show changes, if >> we find that an inserted fragment contains a KoTextAnchor, we need to >> insert the shape associated with the Anchor. However just calling >> KoShapeController::addShapeDirect results in a bizzare layout. On >> further debugging, I realized that the parent of this shape needs to >> be set before adding it. However, it is not possible to find the >> parent of this shape that easily ( Because shapeForPosition would >> return the right parent only once a layout is done ). So for now, I >> set the first shape in KoTextDocumentLayout as it's parent. >> >> If you think that we need a complete and working solution for this >> problem please let me know. I can go back and solve this the right >> way. >> >> Thanks, >> Ganesh > > I think the hack is ok for now (but perhaps I have missed something). I > haven't had the time to hack lately and it will probably be so until next > week. I still hope to be able to implement the delete bubbles for 2.2. I = have > an almost finished solution now. I need to clean up a bit and come up wit= h a > cache system. > > Regarding the patch, you are using the changeTracker in KoTextAnchor. Ple= ase > test for it before using one of its method. Outside KWord, the changeTrac= ker > will be a null pointer. > > Pierre > --0016e6d97102f5bde204806b6214 Content-Type: application/octet-stream; name="inline-objects-change-tracking-v2.patch" Content-Disposition: attachment; filename="inline-objects-change-tracking-v2.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g63ha12y0 SW5kZXg6IGxpYnMvb2RmL0tvR2VuQ2hhbmdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGlicy9vZGYvS29H ZW5DaGFuZ2UuaAkocmV2aXNpb24gMTA5NTkzMCkKKysrIGxpYnMvb2RmL0tvR2VuQ2hhbmdlLmgJ KHdvcmtpbmcgY29weSkKQEAgLTI2LDEzICsyNiw5IEBACiAjaW5jbHVkZSAia29vZGZfZXhwb3J0 LmgiCiAKICNpbmNsdWRlIDxRQnl0ZUFycmF5PgotI2luY2x1ZGUgPFFWYXJpYW50PgotI2luY2x1 ZGUgPFFUZXh0RG9jdW1lbnRGcmFnbWVudD4KIAogI2luY2x1ZGUgPGtkZWJ1Zy5oPgogCi1RX0RF Q0xBUkVfTUVUQVRZUEUoUVRleHREb2N1bWVudEZyYWdtZW50KQotCiBjbGFzcyBLb0dlbkNoYW5n ZXM7CiBjbGFzcyBLb1htbFdyaXRlcjsKIApAQCAtMTEzLDE1ICsxMDksOSBAQAogICAgICAqIFRo ZSB2YWx1ZSBvZiBAcCBlbGVtZW50TmFtZSBpc24ndCB1c2VkLCBleGNlcHQgdGhhdCBpdCBtdXN0 IGJlIHVuaXF1ZS4KICAgICAgKi8KICAgICB2b2lkIGFkZENoaWxkRWxlbWVudChjb25zdCBRU3Ry aW5nJiBlbGVtZW50TmFtZSwgY29uc3QgUVN0cmluZyYgZWxlbWVudENvbnRlbnRzKSB7Ci0gICAg ICAgIG1fbGl0ZXJhbERhdGEuaW5zZXJ0KGVsZW1lbnROYW1lLCBRVmFyaWFudChlbGVtZW50Q29u dGVudHMpKTsKKyAgICAgICAgbV9saXRlcmFsRGF0YS5pbnNlcnQoZWxlbWVudE5hbWUsIGVsZW1l bnRDb250ZW50cyk7CiAgICAgfQogCi0gICAgdm9pZCBhZGRDaGlsZEVsZW1lbnQoY29uc3QgUVN0 cmluZyAmZWxlbWVudE5hbWUsIGNvbnN0IFFUZXh0RG9jdW1lbnRGcmFnbWVudCAmdGV4dEZyYWdt ZW50KSB7Ci0gICAgICAgIFFWYXJpYW50IHZhcjsKLSAgICAgICAgdmFyLnNldFZhbHVlKHRleHRG cmFnbWVudCk7Ci0gICAgICAgIG1fbGl0ZXJhbERhdGEuaW5zZXJ0KGVsZW1lbnROYW1lLCB2YXIp OwotICAgIH0KLQogICAgIC8qKgogICAgICAqICBXcml0ZSB0aGUgZGVmaW5pdGlvbiBvZiB0aGlz IGNoYW5nZSB0byBAcCB3cml0ZXIsIHVzaW5nIHRoZSBPQVNJUyBmb3JtYXQuCiAgICAgICogIEBw YXJhbSB3cml0ZXIgdGhlIEtvWG1sV3JpdGVyIGluIHdoaWNoIHRoZSBlbGVtZW50IHdpbGwgYmUg Y3JlYXRlZCBhbmQgZmlsbGVkIGluCkBAIC0xNTEsMTcgKzE0MSwxNCBAQAogCiAgICAgdm9pZCB3 cml0ZUNoYW5nZU1ldGFEYXRhKEtvWG1sV3JpdGVyKiB3cml0ZXIpIGNvbnN0OwogCi0gICAgdm9p ZCB3cml0ZURlbGV0ZUNoYW5nZShLb1htbFdyaXRlciAqd3JpdGVyKSBjb25zdDsKLQogcHJpdmF0 ZToKICAgICAvLyBOb3RlIHRoYXQgdGhlIGNvcHkgY29uc3RydWN0b3IgYW5kIGFzc2lnbm1lbnQg b3BlcmF0b3IgYXJlIGFsbG93ZWQuCiAgICAgLy8gQmV0dGVyIG5vdCB1c2UgcG9pbnRlcnMgYmVs b3chCiAgICAgVHlwZSBtX3R5cGU7CiAgICAgLy8vIFdlIHVzZSBRTWFwcyBzaW5jZSB0aGV5IHBy b3ZpZGUgYXV0b21hdGljIHNvcnRpbmcgb24gdGhlIGtleSAoaW1wb3J0YW50IGZvciB1bmljaXR5 ISkKICAgICB0eXBlZGVmIFFNYXA8UVN0cmluZywgUVN0cmluZz4gQ2hhbmdlTWFwOwotICAgIHR5 cGVkZWYgUU1hcDxRU3RyaW5nLCBRVmFyaWFudD4gR2VuZXJpY0NoYW5nZU1hcDsKICAgICBDaGFu Z2VNYXAgbV9jaGFuZ2VNZXRhRGF0YTsKLSAgICBHZW5lcmljQ2hhbmdlTWFwIG1fbGl0ZXJhbERh dGE7CisgICAgQ2hhbmdlTWFwIG1fbGl0ZXJhbERhdGE7CiAKICAgICBzaG9ydCBtX3VudXNlZDI7 CiB9OwpJbmRleDogbGlicy9vZGYvS29HZW5DaGFuZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpYnMv b2RmL0tvR2VuQ2hhbmdlLmNwcAkocmV2aXNpb24gMTA5NTkzMCkKKysrIGxpYnMvb2RmL0tvR2Vu Q2hhbmdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgsOSArMTgsNiBAQAogKi8KIAogI2luY2x1 ZGUgPFFEYXRlVGltZT4KLSNpbmNsdWRlIDxRVGV4dERvY3VtZW50PgotI2luY2x1ZGUgPFFUZXh0 Q3Vyc29yPgotI2luY2x1ZGUgPFFUZXh0QmxvY2s+CiAKICNpbmNsdWRlICJLb0dlbkNoYW5nZS5o IgogI2luY2x1ZGUgPEtvWG1sV3JpdGVyLmg+CkBAIC00MSwzMiArMzgsNyBAQAogICAgIHJldHVy biAwOyAvLyBlcXVhbAogfQogCi0vLyBSZXR1cm4gdHJ1ZSBpZiBlcXVhbCBlbHNlIGZhbHNlCi1z dGF0aWMgYm9vbCBjb21wYXJlR2VuZXJpY01hcChjb25zdCBRTWFwPFFTdHJpbmcsIFFWYXJpYW50 PiAmbWFwMSwgY29uc3QgUU1hcDxRU3RyaW5nLCBRVmFyaWFudD4gJm1hcDIpCi17Ci0gICAgUU1h cDxRU3RyaW5nLCBRVmFyaWFudD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbWFwMS5iZWdpbigpOwot ICAgIFFNYXA8UVN0cmluZywgUVZhcmlhbnQ+Ojpjb25zdF9pdGVyYXRvciBvaXQgPSBtYXAyLmJl Z2luKCk7CiAKLSAgICBmb3IgKDsgaXQgIT0gbWFwMS5lbmQoKTsgKytpdCwgKytvaXQpIHsKLSAg ICAgICAgaWYgKGl0LmtleSgpICE9IG9pdC5rZXkoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz ZTsKLSAgICAgICAgaWYgKGl0LnZhbHVlKCkudHlwZSgpICE9IG9pdC52YWx1ZSgpLnR5cGUoKSkK LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKGl0LnZhbHVlKCkudHlwZSgp ID09IFFWYXJpYW50OjpTdHJpbmcpIHsKLSAgICAgICAgICAgIGlmIChpdC52YWx1ZSgpLnRvU3Ry aW5nKCkgIT0gb2l0LnZhbHVlKCkudG9TdHJpbmcoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g ZmFsc2U7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBRU3RyaW5nIGl0SHRtbCA9IGl0 LnZhbHVlKCkudmFsdWU8UVRleHREb2N1bWVudEZyYWdtZW50PigpLnRvSHRtbCgpOwotICAgICAg ICAgICAgUVN0cmluZyBvaXRIdG1sID0gb2l0LnZhbHVlKCkudmFsdWU8UVRleHREb2N1bWVudEZy YWdtZW50PigpLnRvSHRtbCgpOwotICAgICAgICAgICAgaWYgKGl0SHRtbCAhPSBvaXRIdG1sKQot ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJl dHVybiB0cnVlOwotfQotCi0KIEtvR2VuQ2hhbmdlOjpLb0dlbkNoYW5nZSgpCiB7CiB9CkBAIC0x MjEsMjkgKzkzLDE2IEBACiAgICAgICAgIHdyaXRlci0+c3RhcnRFbGVtZW50KCJvZmZpY2U6Y2hh bmdlLWluZm8iKTsKICAgICAgICAgd3JpdGVDaGFuZ2VNZXRhRGF0YSh3cml0ZXIpOwogICAgICAg ICBpZiAobV9saXRlcmFsRGF0YS5jb250YWlucygiY2hhbmdlTWV0YURhdGEiKSkKLSAgICAgICAg ICAgIHdyaXRlci0+YWRkQ29tcGxldGVFbGVtZW50KG1fbGl0ZXJhbERhdGEudmFsdWUoImNoYW5n ZU1ldGFEYXRhIikudG9TdHJpbmcoKS50b1V0ZjgoKSk7CisgICAgICAgICAgICB3cml0ZXItPmFk ZENvbXBsZXRlRWxlbWVudChtX2xpdGVyYWxEYXRhLnZhbHVlKCJjaGFuZ2VNZXRhRGF0YSIpLnRv VXRmOCgpKTsKICAgICAgICAgd3JpdGVyLT5lbmRFbGVtZW50KCk7IC8vIG9mZmljZTpjaGFuZ2Ut aW5mbwogICAgIH0KLSAgICBpZiAoKG1fdHlwZSA9PSBLb0dlbkNoYW5nZTo6ZGVsZXRlQ2hhbmdl KSAmJiBtX2xpdGVyYWxEYXRhLmNvbnRhaW5zKCJkZWxldGVkRGF0YSIpKSB7Ci0gICAgICAgIHdy aXRlRGVsZXRlQ2hhbmdlKHdyaXRlcik7Ci0gICAgfQorICAgIGlmICgobV90eXBlID09IEtvR2Vu Q2hhbmdlOjpkZWxldGVDaGFuZ2UpICYmIG1fbGl0ZXJhbERhdGEuY29udGFpbnMoImRlbGV0ZUNo YW5nZVhtbCIpKQorICAgICAgICB3cml0ZXItPmFkZENvbXBsZXRlRWxlbWVudChtX2xpdGVyYWxE YXRhLnZhbHVlKCJkZWxldGVDaGFuZ2VYbWwiKS50b1V0ZjgoKSk7CisgICAgCiAgICAgd3JpdGVy LT5lbmRFbGVtZW50KCk7IC8vIHRleHQ6aW5zZXJ0aW9uL2Zvcm1hdC9kZWxldGlvbgogICAgIHdy aXRlci0+ZW5kRWxlbWVudCgpOyAvLyB0ZXh0OmNoYW5nZQogfQogCi12b2lkIEtvR2VuQ2hhbmdl Ojp3cml0ZURlbGV0ZUNoYW5nZShLb1htbFdyaXRlciAqd3JpdGVyKSBjb25zdAotewotICAgIFFU ZXh0RG9jdW1lbnQgZG9jdW1lbnQ7Ci0gICAgUVRleHRDdXJzb3IgY3Vyc29yKCZkb2N1bWVudCk7 Ci0gICAgY3Vyc29yLmluc2VydEZyYWdtZW50KG1fbGl0ZXJhbERhdGFbImRlbGV0ZWREYXRhIl0u dmFsdWU8UVRleHREb2N1bWVudEZyYWdtZW50PigpKTsKLQotICAgIGZvciAoUVRleHRCbG9jayBi bG9jayA9IGRvY3VtZW50LmJlZ2luKCk7IGJsb2NrLmlzVmFsaWQoKTsgYmxvY2sgPSBibG9jay5u ZXh0KCkpIHsKLSAgICAgICAgUVN0cmluZyBkZWxldGVkRWxlbWVudDsKLSAgICAgICAgZGVsZXRl ZEVsZW1lbnQgPSBRU3RyaW5nKCI8dGV4dDpwPiIpICsgYmxvY2sudGV4dCgpICsgUVN0cmluZygi PC90ZXh0OnA+Iik7Ci0gICAgICAgIHdyaXRlci0+YWRkQ29tcGxldGVFbGVtZW50KGRlbGV0ZWRF bGVtZW50LnRvVXRmOCgpKTsKLSAgICB9Ci19Ci0KIGJvb2wgS29HZW5DaGFuZ2U6Om9wZXJhdG9y PChjb25zdCBLb0dlbkNoYW5nZSAmb3RoZXIpIGNvbnN0CiB7CiAgICAgUV9VTlVTRUQob3RoZXIp OwpAQCAtMTYwLDYgKzExOSw3IEBACiAgICAgaWYgKG1fbGl0ZXJhbERhdGEuY291bnQoKSAhPSBv dGhlci5tX2xpdGVyYWxEYXRhLmNvdW50KCkpIHJldHVybiBmYWxzZTsKICAgICBpbnQgY29tcCA9 IGNvbXBhcmVNYXAobV9jaGFuZ2VNZXRhRGF0YSwgb3RoZXIubV9jaGFuZ2VNZXRhRGF0YSk7CiAg ICAgaWYgKGNvbXAgIT0gMCkgcmV0dXJuIGZhbHNlOwotICAgIGJvb2wgY29tcFJlc3VsdCA9IGNv bXBhcmVHZW5lcmljTWFwKG1fbGl0ZXJhbERhdGEsIG90aGVyLm1fbGl0ZXJhbERhdGEpOwotICAg IHJldHVybiBjb21wUmVzdWx0OworICAgIGNvbXAgPSBjb21wYXJlTWFwKG1fbGl0ZXJhbERhdGEs IG90aGVyLm1fbGl0ZXJhbERhdGEpOworICAgIGlmIChjb21wICE9IDApIHJldHVybiBmYWxzZTsK KyAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IGxpYnMva290ZXh0L0tvVGV4dEFuY2hvci5jcHAK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gbGlicy9rb3RleHQvS29UZXh0QW5jaG9yLmNwcAkocmV2aXNpb24gMTA5 NTkzMCkKKysrIGxpYnMva290ZXh0L0tvVGV4dEFuY2hvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg LTM0LDYgKzM0LDEyIEBACiAjaW5jbHVkZSA8UVBhaW50ZXI+CiAjaW5jbHVkZSA8S0RlYnVnPgog CisjaW5jbHVkZSAiY2hhbmdldHJhY2tlci9Lb0NoYW5nZVRyYWNrZXIuaCIKKyNpbmNsdWRlICJj aGFuZ2V0cmFja2VyL0tvQ2hhbmdlVHJhY2tlckVsZW1lbnQuaCIKKyNpbmNsdWRlICJzdHlsZXMv S29DaGFyYWN0ZXJTdHlsZS5oIgorI2luY2x1ZGUgIktvVGV4dERvY3VtZW50LmgiCisjaW5jbHVk ZSA8S29HZW5DaGFuZ2VzLmg+CisKIC8vICNkZWZpbmUgREVCVUdfUEFJTlRJTkcKIAogY2xhc3Mg S29UZXh0QW5jaG9yUHJpdmF0ZSA6IHB1YmxpYyBLb0lubGluZU9iamVjdFByaXZhdGUKQEAgLTEy Myw2ICsxMjksNyBAQAogICAgIEtvVGV4dEFuY2hvcjo6QW5jaG9yVmVydGljYWwgdmVydGljYWxB bGlnbm1lbnQ7CiAgICAgY29uc3QgUVRleHREb2N1bWVudCAqZG9jdW1lbnQ7CiAgICAgaW50IHBv c2l0aW9uOworICAgIFFUZXh0Q2hhckZvcm1hdCBmb3JtYXQ7CiAgICAgS29UZXh0U2hhcGVDb250 YWluZXJNb2RlbCAqbW9kZWw7CiAgICAgUVBvaW50RiBkaXN0YW5jZTsKIH07CkBAIC0xODIsNiAr MTg5LDcgQEAKICAgICBRX0QoS29UZXh0QW5jaG9yKTsKICAgICBkLT5kb2N1bWVudCA9IGRvY3Vt ZW50OwogICAgIGQtPnBvc2l0aW9uID0gcG9zSW5Eb2N1bWVudDsKKyAgICBkLT5mb3JtYXQgPSBm b3JtYXQ7CiAgICAgZC0+c2V0Q29udGFpbmVyKGR5bmFtaWNfY2FzdDxLb1NoYXBlQ29udGFpbmVy Kj4oc2hhcGVGb3JQb3NpdGlvbihkb2N1bWVudCwgcG9zSW5Eb2N1bWVudCkpKTsKIH0KIApAQCAt MjEwLDYgKzIxOCwzOCBAQAogewogICAgIFFfVU5VU0VEKHBhaW50ZXIpOwogICAgIFFfVU5VU0VE KHJlY3QpOworCisgICAgLy8gVGhpcyBzZWN0aW9uIG9mIGNvZGUgaXMgdG8gaW5kaWNhdGUgY2hh bmdlcyBkb25lIHRvIEtvVGV4dEFuY2hvcnMuIE9uY2UgdGhlIG5ldyBhcHByb2FjaCBpcyBjb21w bGV0ZSB0aGlzIGNhbiBiZSByZW1vdmVkCisgICAgLy8gSW4gdGhpcyBhcHByb2FjaCB3ZSBkcmF3 IGEgcmVjdGFuZ2xlIGFyb3VuZCB0aGUgc2hhcGUgd2l0aCB0aGUgYXBwcm9wcmlhdGUgY2hhbmdl IGluZGljYXRpb24gY29sb3IuCisgICAgUV9EKEtvVGV4dEFuY2hvcik7CisgICAgaW50IGNoYW5n ZUlkID0gZC0+Zm9ybWF0LnByb3BlcnR5KEtvQ2hhcmFjdGVyU3R5bGU6OkNoYW5nZVRyYWNrZXJJ ZCkudG9JbnQoKTsKKyAgICBib29sIGRyYXdDaGFuZ2VSZWN0ID0gZmFsc2U7CisKKyAgICBRUmVj dEYgY2hhbmdlUmVjdCA9IHJlY3Q7CisgICAgY2hhbmdlUmVjdC5hZGp1c3QoMCwwLDEsMCk7Cisg ICAgUVBlbiBjaGFuZ2VQZW47CisgICAgY2hhbmdlUGVuLnNldFdpZHRoKDIpOworICAgCisgICAg S29DaGFuZ2VUcmFja2VyICpjaGFuZ2VUcmFja2VyID0gS29UZXh0RG9jdW1lbnQoZC0+ZG9jdW1l bnQpLmNoYW5nZVRyYWNrZXIoKTsgCisKKyAgICBpZiAoIWNoYW5nZVRyYWNrZXIpCisgICAgICAg IHJldHVybjsKKworICAgIEtvQ2hhbmdlVHJhY2tlckVsZW1lbnQgKmNoYW5nZUVsZW1lbnQgPSBj aGFuZ2VUcmFja2VyLT5lbGVtZW50QnlJZChjaGFuZ2VJZCk7CisgICAgaWYgKGNoYW5nZUVsZW1l bnQgJiYgY2hhbmdlRWxlbWVudC0+Z2V0Q2hhbmdlVHlwZSgpID09IEtvR2VuQ2hhbmdlOjpkZWxl dGVDaGFuZ2UpIHsKKyAgICAgICAgY2hhbmdlUGVuLnNldENvbG9yKGNoYW5nZVRyYWNrZXItPmdl dERlbGV0aW9uQmdDb2xvcigpKTsKKyAgICAgICAgZHJhd0NoYW5nZVJlY3QgPSB0cnVlOworICAg IH0gZWxzZSBpZiAoY2hhbmdlRWxlbWVudCAmJiBjaGFuZ2VFbGVtZW50LT5nZXRDaGFuZ2VUeXBl KCkgPT0gS29HZW5DaGFuZ2U6Omluc2VydENoYW5nZSkgeworICAgICAgICBjaGFuZ2VQZW4uc2V0 Q29sb3IoY2hhbmdlVHJhY2tlci0+Z2V0SW5zZXJ0aW9uQmdDb2xvcigpKTsKKyAgICAgICAgZHJh d0NoYW5nZVJlY3QgPSB0cnVlOworICAgIH0KKworICAgIHBhaW50ZXIuc2V0UGVuKGNoYW5nZVBl bik7CisgICAgaWYgKGRyYXdDaGFuZ2VSZWN0ICYmIGNoYW5nZVRyYWNrZXItPmRpc3BsYXlDaGFu Z2VzKCkpCisgICAgICAgIHBhaW50ZXIuZHJhd1JlY3QoY2hhbmdlUmVjdCk7CisKKyAgICAvLyBF bmQgb2YgQ2hhbmdlIFZpc3VhbGl6YXRpb24gU2VjdGlvbi4gQ2FuIGJlIHJlbW92ZWQgb25jZSB0 aGUgbmV3IGFwcHJvYWNoIGlzIGZpbmFsaXplZAorCiAgICAgLy8gd2UgbmV2ZXIgcGFpbnQgb3Vy c2VsdmVzOyB0aGUgc2hhcGUgY2FuIGRvIHRoYXQuCiAjaWZkZWYgREVCVUdfUEFJTlRJTkcKICAg ICBwYWludGVyLnNldE9wYWNpdHkoMC41KTsKSW5kZXg6IGxpYnMva290ZXh0L29wZW5kb2N1bWVu dC9Lb1RleHRXcml0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpYnMva290ZXh0L29wZW5kb2N1bWVu dC9Lb1RleHRXcml0ZXIuY3BwCShyZXZpc2lvbiAxMDk1OTMwKQorKysgbGlicy9rb3RleHQvb3Bl bmRvY3VtZW50L0tvVGV4dFdyaXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcg QEAKICNpbmNsdWRlIDxRVGV4dFRhYmxlPgogI2luY2x1ZGUgPFFTdGFjaz4KICNpbmNsdWRlIDxR VGV4dFRhYmxlQ2VsbEZvcm1hdD4KKyNpbmNsdWRlIDxRQnVmZmVyPgogCiAjaW5jbHVkZSAiS29J bmxpbmVPYmplY3QuaCIKICNpbmNsdWRlICJLb0lubGluZVRleHRPYmplY3RNYW5hZ2VyLmgiCkBA IC04Miw3ICs4Myw3IEBACiAgICAgdm9pZCBzYXZlVGFibGUoUVRleHRUYWJsZSAqdGFibGUsIFFI YXNoPFFUZXh0TGlzdCAqLCBRU3RyaW5nPiAmbGlzdFN0eWxlcyk7CiAgICAgdm9pZCBzYXZlVGFi bGVPZkNvbnRlbnRzKFFUZXh0RG9jdW1lbnQgKmRvY3VtZW50LCBpbnQgZnJvbSwgaW50IHRvLCBR SGFzaDxRVGV4dExpc3QgKiwgUVN0cmluZz4gJmxpc3RTdHlsZXMsIFFUZXh0VGFibGUgKmN1cnJl bnRUYWJsZSwgUVRleHRGcmFtZSAqdG9jKTsKICAgICB2b2lkIHdyaXRlQmxvY2tzKFFUZXh0RG9j dW1lbnQgKmRvY3VtZW50LCBpbnQgZnJvbSwgaW50IHRvLCBRSGFzaDxRVGV4dExpc3QgKiwgUVN0 cmluZz4gJmxpc3RTdHlsZXMsIFFUZXh0VGFibGUgKmN1cnJlbnRUYWJsZSA9IDAsIFFUZXh0RnJh bWUgKmN1cnJlbnRGcmFtZSA9IDApOwotCisgICAgUVN0cmluZyBnZW5lcmF0ZURlbGV0ZUNoYW5n ZVhtbChLb0RlbGV0ZUNoYW5nZU1hcmtlciAqbWFya2VyKTsKICAgICBLb1NoYXBlU2F2aW5nQ29u dGV4dCAmY29udGV4dDsKICAgICBLb1RleHRTaGFyZWRTYXZpbmdEYXRhICpzaGFyZWREYXRhOwog ICAgIEtvWG1sV3JpdGVyICp3cml0ZXI7CkBAIC0xMzEsNiArMTMyLDggQEAKICAgICBLb0RlbGV0 ZUNoYW5nZU1hcmtlciAqY2hhbmdlTWFya2VyOwogICAgIGlmIChsYXlvdXQgJiYgKGNoYW5nZU1h cmtlciA9IGR5bmFtaWNfY2FzdDxLb0RlbGV0ZUNoYW5nZU1hcmtlcio+KGxheW91dC0+aW5saW5l VGV4dE9iamVjdE1hbmFnZXIoKS0+aW5saW5lVGV4dE9iamVjdChmb3JtYXQpKSkpIHsKICAgICAg ICAgaWYgKCFzYXZlZERlbGV0ZUNoYW5nZXMuY29udGFpbnMoY2hhbmdlTWFya2VyLT5jaGFuZ2VJ ZCgpKSkgeworICAgICAgICAgICAgUVN0cmluZyBkZWxldGVDaGFuZ2VYbWwgPSBnZW5lcmF0ZURl bGV0ZUNoYW5nZVhtbChjaGFuZ2VNYXJrZXIpOworICAgICAgICAgICAgY2hhbmdlTWFya2VyLT5z ZXREZWxldGVDaGFuZ2VYbWwoZGVsZXRlQ2hhbmdlWG1sKTsKICAgICAgICAgICAgIGNoYW5nZU1h cmtlci0+c2F2ZU9kZihjb250ZXh0KTsKICAgICAgICAgICAgIHNhdmVkRGVsZXRlQ2hhbmdlcy5h cHBlbmQoY2hhbmdlTWFya2VyLT5jaGFuZ2VJZCgpKTsKICAgICAgICAgfQpAQCAtMzI4LDExICsz MzEsNiBAQAogICAgICAgICAgICAgICAgIGlubGluZVJkZi0+c2F2ZU9kZihjb250ZXh0LCB3cml0 ZXIpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoY2hhbmdlVHJhY2tlcgotICAg ICAgICAgICAgICAgICAgICAmJiBjaGFyRm9ybWF0LnByb3BlcnR5KEtvQ2hhcmFjdGVyU3R5bGU6 OkNoYW5nZVRyYWNrZXJJZCkudG9JbnQoKQotICAgICAgICAgICAgICAgICAgICAmJiBjaGFuZ2VU cmFja2VyLT5lbGVtZW50QnlJZChjaGFyRm9ybWF0LnByb3BlcnR5KEtvQ2hhcmFjdGVyU3R5bGU6 OkNoYW5nZVRyYWNrZXJJZCkudG9JbnQoKSktPmdldENoYW5nZVR5cGUoKSA9PSBLb0dlbkNoYW5n ZTo6ZGVsZXRlQ2hhbmdlKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCiAgICAgICAgICAg ICBLb0lubGluZU9iamVjdCAqaW5saW5lT2JqZWN0ID0gbGF5b3V0ID8gbGF5b3V0LT5pbmxpbmVU ZXh0T2JqZWN0TWFuYWdlcigpLT5pbmxpbmVUZXh0T2JqZWN0KGNoYXJGb3JtYXQpIDogMDsKICAg ICAgICAgICAgIGlmIChjdXJyZW50RnJhZ21lbnQubGVuZ3RoKCkgPT0gMSAmJiBpbmxpbmVPYmpl Y3QKICAgICAgICAgICAgICAgICAgICAgJiYgY3VycmVudEZyYWdtZW50LnRleHQoKVswXS51bmlj b2RlKCkgPT0gUUNoYXI6Ok9iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVyKSB7CkBAIC01OTgsNiAr NTk2LDM3IEBACiAgICAgfQogfQogCitRU3RyaW5nIEtvVGV4dFdyaXRlcjo6UHJpdmF0ZTo6Z2Vu ZXJhdGVEZWxldGVDaGFuZ2VYbWwoS29EZWxldGVDaGFuZ2VNYXJrZXIgKm1hcmtlcikKK3sKKyAg ICAvL0NyZWF0ZSBhIFFUZXh0RG9jdW1lbnQgZnJvbSB0aGUgRGVsZXRlIEZyYWdtZW50CisgICAg UVRleHREb2N1bWVudCBkb2M7CisgICAgUVRleHRDdXJzb3IgY3Vyc29yKCZkb2MpOworICAgIGN1 cnNvci5pbnNlcnRGcmFnbWVudChjaGFuZ2VUcmFja2VyLT5lbGVtZW50QnlJZChtYXJrZXItPmNo YW5nZUlkKCkpLT5nZXREZWxldGVEYXRhKCkpOworCisgICAgLy9TYXZlIHRoZSBjdXJyZW50IHdy aXRlcgorICAgIEtvWG1sV3JpdGVyICZvbGRXcml0ZXIgPSBjb250ZXh0LnhtbFdyaXRlcigpOwor CisgICAgLy9DcmVhdGUgYSBuZXcgS29YbWxXcml0ZXIgcG9pbnRpbmcgdG8gYSBRQnVmZmVyCisg ICAgUUJ5dGVBcnJheSB4bWxBcnJheTsKKyAgICBRQnVmZmVyIHhtbEJ1ZmZlcigmeG1sQXJyYXkp OworICAgIEtvWG1sV3JpdGVyIG5ld1htbFdyaXRlcigmeG1sQnVmZmVyKTsKKworICAgIC8vU2V0 IG91ciB4bWxXcml0ZXIgYXMgdGhlIHdyaXRlciB0byBiZSB1c2VkCisgICAgd3JpdGVyID0gJm5l d1htbFdyaXRlcjsKKyAgICBjb250ZXh0LnNldFhtbFdyaXRlcihuZXdYbWxXcml0ZXIpOworCisg ICAgLy9DYWxsIHdyaXRlQmxvY2tzIHRvIGdlbmVyYXRlIHRoZSB4bWwKKyAgICBRSGFzaDxRVGV4 dExpc3QgKixRU3RyaW5nPiBsaXN0U3R5bGVzID0gc2F2ZUxpc3RTdHlsZXMoZG9jLmZpcnN0Qmxv Y2soKSwgZG9jLmNoYXJhY3RlckNvdW50KCkpOworICAgIHdyaXRlQmxvY2tzKCZkb2MsIDAsIGRv Yy5jaGFyYWN0ZXJDb3VudCgpLGxpc3RTdHlsZXMpOworCisgICAgLy9SZXN0b3JlIHRoZSBhY3R1 YWwgeG1sIHdyaXRlcgorICAgIHdyaXRlciA9ICZvbGRXcml0ZXI7CisgICAgY29udGV4dC5zZXRY bWxXcml0ZXIob2xkV3JpdGVyKTsKKworICAgIFFTdHJpbmcgZ2VuZXJhdGVkWG1sU3RyaW5nKHht bEFycmF5KTsKKyAgICByZXR1cm4gZ2VuZXJhdGVkWG1sU3RyaW5nOworfQorCiB2b2lkIEtvVGV4 dFdyaXRlcjo6d3JpdGUoUVRleHREb2N1bWVudCAqZG9jdW1lbnQsIGludCBmcm9tLCBpbnQgdG8p CiB7CiAgICAgZC0+c3R5bGVNYW5hZ2VyID0gS29UZXh0RG9jdW1lbnQoZG9jdW1lbnQpLnN0eWxl TWFuYWdlcigpOwpJbmRleDogbGlicy9rb3RleHQvY2hhbmdldHJhY2tlci9Lb0RlbGV0ZUNoYW5n ZU1hcmtlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGlicy9rb3RleHQvY2hhbmdldHJhY2tlci9Lb0Rl bGV0ZUNoYW5nZU1hcmtlci5jcHAJKHJldmlzaW9uIDEwOTU5MzApCisrKyBsaWJzL2tvdGV4dC9j aGFuZ2V0cmFja2VyL0tvRGVsZXRlQ2hhbmdlTWFya2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt NDcsNiArNDcsNyBAQAogICAgIFFTdHJpbmcgdGV4dDsKICAgICBpbnQgaWQ7CiAgICAgaW50IHBv c2l0aW9uOworICAgIFFTdHJpbmcgZGVsZXRlQ2hhbmdlWG1sOwogfTsKIAogS29EZWxldGVDaGFu Z2VNYXJrZXI6OktvRGVsZXRlQ2hhbmdlTWFya2VyKEtvQ2hhbmdlVHJhY2tlciogY2hhbmdlVHJh Y2tlcikKQEAgLTg2LDYgKzg3LDExIEBACiAgICAgcmV0dXJuIGQtPnBvc2l0aW9uOwogfQogCit2 b2lkIEtvRGVsZXRlQ2hhbmdlTWFya2VyOjpzZXREZWxldGVDaGFuZ2VYbWwoUVN0cmluZyAmZGVs ZXRlQ2hhbmdlWG1sKQoreworICAgIGQtPmRlbGV0ZUNoYW5nZVhtbCA9IGRlbGV0ZUNoYW5nZVht bDsKK30KKwogYm9vbCBLb0RlbGV0ZUNoYW5nZU1hcmtlcjo6bG9hZE9kZihjb25zdCBLb1htbEVs ZW1lbnQgJmVsZW1lbnQpCiB7CiAgICAgUV9VTlVTRUQoZWxlbWVudCkKQEAgLTE0Myw2ICsxNDks NyBAQAogICAgICAgICB9CiAgICAgfQogICAgIGQtPmNoYW5nZVRyYWNrZXItPnNhdmVJbmxpbmVD aGFuZ2UoZC0+aWQsIGNoYW5nZSk7CisgICAgY2hhbmdlLmFkZENoaWxkRWxlbWVudCgiZGVsZXRl Q2hhbmdlWG1sIiwgZC0+ZGVsZXRlQ2hhbmdlWG1sKTsKICAgICBjaGFuZ2VOYW1lID0gc2hhcmVk RGF0YS0+Z2VuQ2hhbmdlcygpLmluc2VydChjaGFuZ2UpOwogCiAgICAgY29udGV4dC54bWxXcml0 ZXIoKS5zdGFydEVsZW1lbnQoInRleHQ6Y2hhbmdlIiwgZmFsc2UpOwpJbmRleDogbGlicy9rb3Rl eHQvY2hhbmdldHJhY2tlci9Lb0RlbGV0ZUNoYW5nZU1hcmtlci5oCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxp YnMva290ZXh0L2NoYW5nZXRyYWNrZXIvS29EZWxldGVDaGFuZ2VNYXJrZXIuaAkocmV2aXNpb24g MTA5NTkzMCkKKysrIGxpYnMva290ZXh0L2NoYW5nZXRyYWNrZXIvS29EZWxldGVDaGFuZ2VNYXJr ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsOCBAQAogICAgIC8vL3JlaW1wbGVtZW50 ZWQKICAgICB2aXJ0dWFsIHZvaWQgc2F2ZU9kZihLb1NoYXBlU2F2aW5nQ29udGV4dCAmY29udGV4 dCk7CiAKKyAgICB2b2lkIHNldERlbGV0ZUNoYW5nZVhtbChRU3RyaW5nICZkZWxldGVDaGFuZ2VY bWwpOworCiBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUVBhaW50ZXIgJnBh aW50ZXIsIFFQYWludERldmljZSAqcGQsIGNvbnN0IFFUZXh0RG9jdW1lbnQgKmRvY3VtZW50LCBj b25zdCBRUmVjdEYgJnJlY3QsIFFUZXh0SW5saW5lT2JqZWN0IG9iamVjdCwgaW50IHBvc0luRG9j dW1lbnQsIGNvbnN0IFFUZXh0Q2hhckZvcm1hdCAmZm9ybWF0KTsKSW5kZXg6IGxpYnMva290ZXh0 L2NoYW5nZXRyYWNrZXIvS29DaGFuZ2VUcmFja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaWJzL2tv dGV4dC9jaGFuZ2V0cmFja2VyL0tvQ2hhbmdlVHJhY2tlci5jcHAJKHJldmlzaW9uIDEwOTU5MzAp CisrKyBsaWJzL2tvdGV4dC9jaGFuZ2V0cmFja2VyL0tvQ2hhbmdlVHJhY2tlci5jcHAJKHdvcmtp bmcgY29weSkKQEAgLTI3NCw5ICsyNzQsNiBAQAogICAgIGlmIChkLT5jaGFuZ2VzLnZhbHVlKGNo YW5nZUlkKS0+aGFzRXh0cmFNZXRhRGF0YSgpKQogICAgICAgICBjaGFuZ2UuYWRkQ2hpbGRFbGVt ZW50KCJjaGFuZ2VNZXRhRGF0YSIsIGQtPmNoYW5nZXMudmFsdWUoY2hhbmdlSWQpLT5nZXRFeHRy YU1ldGFEYXRhKCkpOwogCi0gICAgaWYgKGQtPmNoYW5nZXMudmFsdWUoY2hhbmdlSWQpLT5oYXNE ZWxldGVEYXRhKCkpCi0gICAgICAgIGNoYW5nZS5hZGRDaGlsZEVsZW1lbnQoImRlbGV0ZWREYXRh IiwgZC0+Y2hhbmdlcy52YWx1ZShjaGFuZ2VJZCktPmdldERlbGV0ZURhdGEoKSk7Ci0KICAgICBy ZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogcGx1Z2lucy90ZXh0c2hhcGUvQ2hhbmdlVHJhY2tpbmdU b29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLSBwbHVnaW5zL3RleHRzaGFwZS9DaGFuZ2VUcmFja2luZ1Rv b2wuY3BwCShyZXZpc2lvbiAxMDk1OTMwKQorKysgcGx1Z2lucy90ZXh0c2hhcGUvQ2hhbmdlVHJh Y2tpbmdUb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsOCBAQAogICAgIG1fdGV4 dFNoYXBlKDApLAogICAgIG1fbW9kZWwoMCksCiAgICAgbV90cmFja2VkQ2hhbmdlTWFuYWdlcigw KSwKLSAgICBtX2NoYW5nZXNUcmVlVmlldygwKQorICAgIG1fY2hhbmdlc1RyZWVWaWV3KDApLAor ICAgIG1fY2FudmFzKGNhbnZhcykKIHsKICAgICBLQWN0aW9uICphY3Rpb247CiAgICAgYWN0aW9u ID0gbmV3IEtBY3Rpb24oaTE4bigiVHJhY2tlZCBjaGFuZ2UgbWFuYWdlciIpLCB0aGlzKTsKQEAg LTI3OSw3ICsyODAsNyBAQAogICAgIH0KICAgICBpZiAoIWRhdGEpIHsKICAgICAgICAgaWYgKG1f ZGlzYWJsZVNob3dDaGFuZ2VzT25FeGl0KSB7Ci0gICAgICAgICAgICBTaG93Q2hhbmdlc0NvbW1h bmQgKmNvbW1hbmQgPSBuZXcgU2hvd0NoYW5nZXNDb21tYW5kKGZhbHNlLCBtX3RleHRTaGFwZURh dGEtPmRvY3VtZW50KCkpOworICAgICAgICAgICAgU2hvd0NoYW5nZXNDb21tYW5kICpjb21tYW5k ID0gbmV3IFNob3dDaGFuZ2VzQ29tbWFuZChmYWxzZSwgbV90ZXh0U2hhcGVEYXRhLT5kb2N1bWVu dCgpLCBtX2NhbnZhcyk7CiAgICAgICAgICAgICBtX3RleHRFZGl0b3ItPmFkZENvbW1hbmQoY29t bWFuZCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0zMDIsNyArMzAzLDcgQEAKICAgICBtX3RleHRF ZGl0b3ItPnVwZGF0ZURlZmF1bHRUZXh0RGlyZWN0aW9uKG1fdGV4dFNoYXBlRGF0YS0+cGFnZURp cmVjdGlvbigpKTsKICAgICBpZiAoIUtvVGV4dERvY3VtZW50KG1fdGV4dFNoYXBlRGF0YS0+ZG9j dW1lbnQoKSkuY2hhbmdlVHJhY2tlcigpLT5kaXNwbGF5Q2hhbmdlcygpKSB7CiAgICAgICAgIG1f ZGlzYWJsZVNob3dDaGFuZ2VzT25FeGl0ID0gdHJ1ZTsKLSAgICAgICAgU2hvd0NoYW5nZXNDb21t YW5kICpjb21tYW5kID0gbmV3IFNob3dDaGFuZ2VzQ29tbWFuZCh0cnVlLCBtX3RleHRTaGFwZURh dGEtPmRvY3VtZW50KCkpOworICAgICAgICBTaG93Q2hhbmdlc0NvbW1hbmQgKmNvbW1hbmQgPSBu ZXcgU2hvd0NoYW5nZXNDb21tYW5kKHRydWUsIG1fdGV4dFNoYXBlRGF0YS0+ZG9jdW1lbnQoKSwg bV9jYW52YXMpOwogICAgICAgICBtX3RleHRFZGl0b3ItPmFkZENvbW1hbmQoY29tbWFuZCk7CiAg ICAgfQogICAgIGlmIChtX21vZGVsKSB7CkluZGV4OiBwbHVnaW5zL3RleHRzaGFwZS9UZXh0VG9v bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0gcGx1Z2lucy90ZXh0c2hhcGUvVGV4dFRvb2wuY3BwCShyZXZp c2lvbiAxMDk1OTMwKQorKysgcGx1Z2lucy90ZXh0c2hhcGUvVGV4dFRvb2wuY3BwCSh3b3JraW5n IGNvcHkpCkBAIC0xNjY0LDcgKzE2NjQsNyBAQAogCiB2b2lkIFRleHRUb29sOjp0b2dnbGVTaG93 Q2hhbmdlcyhib29sIG9uKS8vVE9ETyB0cmFuc2ZlciB0aGlzIGluIEtvVGV4dEVkaXRvcgogewot ICAgIFNob3dDaGFuZ2VzQ29tbWFuZCAqY29tbWFuZCA9IG5ldyBTaG93Q2hhbmdlc0NvbW1hbmQo b24sIG1fdGV4dFNoYXBlRGF0YS0+ZG9jdW1lbnQoKSk7CisgICAgU2hvd0NoYW5nZXNDb21tYW5k ICpjb21tYW5kID0gbmV3IFNob3dDaGFuZ2VzQ29tbWFuZChvbiwgbV90ZXh0U2hhcGVEYXRhLT5k b2N1bWVudCgpLCB0aGlzLT5jYW52YXMoKSk7CiAgICAgY29ubmVjdChjb21tYW5kLCBTSUdOQUwo dG9nZ2xlZFNob3dDaGFuZ2UoYm9vbCkpLCBtX2FjdGlvblNob3dDaGFuZ2VzLCBTTE9UKHNldENo ZWNrZWQoYm9vbCkpKTsKICAgICBtX3RleHRFZGl0b3ItPmFkZENvbW1hbmQoY29tbWFuZCk7CiB9 CkluZGV4OiBwbHVnaW5zL3RleHRzaGFwZS9DaGFuZ2VUcmFja2luZ1Rvb2wuaAo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBwbHVnaW5zL3RleHRzaGFwZS9DaGFuZ2VUcmFja2luZ1Rvb2wuaAkocmV2aXNpb24gMTA5 NTkzMCkKKysrIHBsdWdpbnMvdGV4dHNoYXBlL0NoYW5nZVRyYWNraW5nVG9vbC5oCSh3b3JraW5n IGNvcHkpCkBAIC03Myw2ICs3Myw3IEBACiAgICAgYm9vbCBtX2Rpc2FibGVTaG93Q2hhbmdlc09u RXhpdDsKICAgICBLb1RleHRFZGl0b3IgKm1fdGV4dEVkaXRvcjsKICAgICBLb1RleHRTaGFwZURh dGEgKm1fdGV4dFNoYXBlRGF0YTsKKyAgICBLb0NhbnZhc0Jhc2UgKm1fY2FudmFzOwogICAgIFRl eHRTaGFwZSAqbV90ZXh0U2hhcGU7CiAgICAgVHJhY2tlZENoYW5nZU1vZGVsICptX21vZGVsOwog CkluZGV4OiBwbHVnaW5zL3RleHRzaGFwZS9jb21tYW5kcy9TaG93Q2hhbmdlc0NvbW1hbmQuY3Bw Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIHBsdWdpbnMvdGV4dHNoYXBlL2NvbW1hbmRzL1Nob3dDaGFuZ2VzQ29t bWFuZC5jcHAJKHJldmlzaW9uIDEwOTU5MzApCisrKyBwbHVnaW5zL3RleHRzaGFwZS9jb21tYW5k cy9TaG93Q2hhbmdlc0NvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw3ICsxOCw3IEBA CiAgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl ZXQsIEZpZnRoIEZsb29yLAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAqLwotCisj aW5jbHVkZSA8aW9zdHJlYW0+CiAjaW5jbHVkZSAiU2hvd0NoYW5nZXNDb21tYW5kLmgiCiAKICNp bmNsdWRlIDxLb0NoYW5nZVRyYWNrZXIuaD4KQEAgLTI2LDYgKzI2LDExIEBACiAjaW5jbHVkZSA8 S29UZXh0RG9jdW1lbnQuaD4KICNpbmNsdWRlIDxLb1RleHREb2N1bWVudExheW91dC5oPgogI2lu Y2x1ZGUgPEtvVGV4dEVkaXRvci5oPgorI2luY2x1ZGUgPEtvVGV4dEFuY2hvci5oPgorI2luY2x1 ZGUgPEtvSW5saW5lVGV4dE9iamVjdE1hbmFnZXIuaD4KKyNpbmNsdWRlIDxLb0NhbnZhc0Jhc2Uu aD4KKyNpbmNsdWRlIDxLb1NoYXBlQ29udHJvbGxlci5oPgorI2luY2x1ZGUgPEtvU2hhcGVDb250 YWluZXIuaD4KIAogI2luY2x1ZGUgPEtBY3Rpb24+CiAjaW5jbHVkZSA8a2xvY2FsZS5oPgpAQCAt MzMsMTEgKzM4LDEyIEBACiAjaW5jbHVkZSA8UVRleHREb2N1bWVudD4KICNpbmNsdWRlIDxRdEFs Z29yaXRobXM+CiAKLVNob3dDaGFuZ2VzQ29tbWFuZDo6U2hvd0NoYW5nZXNDb21tYW5kKGJvb2wg c2hvd0NoYW5nZXMsIFFUZXh0RG9jdW1lbnQgKmRvY3VtZW50LCBRVW5kb0NvbW1hbmQgKnBhcmVu dCkgOgorU2hvd0NoYW5nZXNDb21tYW5kOjpTaG93Q2hhbmdlc0NvbW1hbmQoYm9vbCBzaG93Q2hh bmdlcywgUVRleHREb2N1bWVudCAqZG9jdW1lbnQsIEtvQ2FudmFzQmFzZSAqY2FudmFzLCBRVW5k b0NvbW1hbmQgKnBhcmVudCkgOgogICAgIFRleHRDb21tYW5kQmFzZSAocGFyZW50KSwKICAgICBt X2RvY3VtZW50KGRvY3VtZW50KSwKICAgICBtX2ZpcnN0KHRydWUpLAotICAgIG1fc2hvd0NoYW5n ZXMoc2hvd0NoYW5nZXMpCisgICAgbV9zaG93Q2hhbmdlcyhzaG93Q2hhbmdlcyksCisgICAgbV9j YW52YXMoY2FudmFzKQogewogICAgIFFfQVNTRVJUKGRvY3VtZW50KTsKICAgICBtX2NoYW5nZVRy YWNrZXIgPSBLb1RleHREb2N1bWVudChtX2RvY3VtZW50KS5jaGFuZ2VUcmFja2VyKCk7CkBAIC0x MTQsMTIgKzEyMCw0MyBAQAogICAgICAgICAgICAgZi5zZXRQcm9wZXJ0eShLb0NoYXJhY3RlclN0 eWxlOjpDaGFuZ2VUcmFja2VySWQsIGVsZW1lbnQtPmdldERlbGV0ZUNoYW5nZU1hcmtlcigpLT5j aGFuZ2VJZCgpKTsKICAgICAgICAgICAgIGYuY2xlYXJQcm9wZXJ0eShLb0NoYXJhY3RlclN0eWxl OjpJbmxpbmVJbnN0YW5jZUlkKTsKICAgICAgICAgICAgIGNhcmV0LnNldENoYXJGb3JtYXQoZik7 CisgICAgICAgICAgICBpbnQgaW5zZXJ0UG9zaXRpb24gPSBjYXJldC5wb3NpdGlvbigpOwogICAg ICAgICAgICAgY2FyZXQuaW5zZXJ0RnJhZ21lbnQoZWxlbWVudC0+Z2V0RGVsZXRlRGF0YSgpKTsK KyAgICAgICAgICAgIGNoZWNrQW5kQWRkQW5jaG9yZWRTaGFwZXMoaW5zZXJ0UG9zaXRpb24sIGVs ZW1lbnQtPmdldERlbGV0ZURhdGEoKS50b1BsYWluVGV4dCgpLmxlbmd0aCgpKTsKICAgICAgICAg ICAgIG51bUFkZGVkQ2hhcnMgKz0gZWxlbWVudC0+Z2V0RGVsZXRlRGF0YSgpLnRvUGxhaW5UZXh0 KCkubGVuZ3RoKCk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKK3ZvaWQgU2hvd0NoYW5nZXNDb21t YW5kOjpjaGVja0FuZEFkZEFuY2hvcmVkU2hhcGVzKGludCBwb3NpdGlvbiwgaW50IGxlbmd0aCkK K3sKKyAgICBRVGV4dEN1cnNvciBjdXJzb3IobV90ZXh0RWRpdG9yLT5kb2N1bWVudCgpKTsKKyAg ICBmb3IgKGludCBpPXBvc2l0aW9uO2kgPCAocG9zaXRpb24gKyBsZW5ndGgpO2krKykgeworICAg ICAgICBpZiAobV90ZXh0RWRpdG9yLT5kb2N1bWVudCgpLT5jaGFyYWN0ZXJBdChpKSA9PSBRQ2hh cjo6T2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXIpIHsKKyAgICAgICAgICAgIGN1cnNvci5zZXRQ b3NpdGlvbihpKzEpOworICAgICAgICAgICAgS29JbmxpbmVPYmplY3QgKm9iamVjdCA9IEtvVGV4 dERvY3VtZW50KG1fdGV4dEVkaXRvci0+ZG9jdW1lbnQoKSkuaW5saW5lVGV4dE9iamVjdE1hbmFn ZXIoKS0+aW5saW5lVGV4dE9iamVjdChjdXJzb3IpOworICAgICAgICAgICAgaWYgKCFvYmplY3Qp CisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIEtvVGV4dEFuY2hvciAq YW5jaG9yID0gZHluYW1pY19jYXN0PEtvVGV4dEFuY2hvciAqPihvYmplY3QpOworICAgICAgICAg ICAgaWYgKCFhbmNob3IpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgIAor ICAgICAgICAgICAgS29UZXh0RG9jdW1lbnRMYXlvdXQgKmxheSA9IHFvYmplY3RfY2FzdDxLb1Rl eHREb2N1bWVudExheW91dCo+KG1fZG9jdW1lbnQtPmRvY3VtZW50TGF5b3V0KCkpOworICAgICAg ICAgICAgS29TaGFwZUNvbnRhaW5lciAqY29udGFpbmVyID0gZHluYW1pY19jYXN0PEtvU2hhcGVD b250YWluZXIgKj4obGF5LT5zaGFwZUZvclBvc2l0aW9uKGkpKTsKKyAgICAgICAgICAgIAorICAg ICAgICAgICAgLy8gYSB2ZXJ5IHVnbHkgaGFjay4gU2luY2UgdGhpcyBjbGFzcyBpcyBnb2luZyBh d2F5IHNvb24sIGl0IHNob3VsZCBiZSBva2F5CisgICAgICAgICAgICBpZiAoIWNvbnRhaW5lcikK KyAgICAgICAgICAgICAgICBjb250YWluZXIgPSBkeW5hbWljX2Nhc3Q8S29TaGFwZUNvbnRhaW5l ciAqPigobGF5LT5zaGFwZXMoKSkuYXQoMCkpOworCisgICAgICAgICAgICBpZiAoY29udGFpbmVy KSB7CisgICAgICAgICAgICAgICAgY29udGFpbmVyLT5hZGRDaGlsZChhbmNob3ItPnNoYXBlKCkp OyAKKyAgICAgICAgICAgICAgICBtX2NhbnZhcy0+c2hhcGVDb250cm9sbGVyKCktPmFkZFNoYXBl RGlyZWN0KGFuY2hvci0+c2hhcGUoKSwgdGhpcyktPnJlZG8oKTsKKyAgICAgICAgICAgIH0KKyAg ICAgICAgfQorICAgIH0KK30KKwogdm9pZCBTaG93Q2hhbmdlc0NvbW1hbmQ6OnJlbW92ZURlbGV0 ZWRDaGFuZ2VzKCkKIHsKICAgICBpbnQgbnVtRGVsZXRlZENoYXJzID0gMDsKQEAgLTEzMSwxNCAr MTY4LDM1IEBACiAgICAgICAgIGlmIChlbGVtZW50LT5pc1ZhbGlkKCkpIHsKICAgICAgICAgICAg IFFUZXh0Q3Vyc29yIGNhcmV0KGVsZW1lbnQtPmdldERlbGV0ZUNoYW5nZU1hcmtlcigpLT5kb2N1 bWVudCgpKTsKICAgICAgICAgICAgIFFUZXh0Q2hhckZvcm1hdCBmOwotICAgICAgICAgICAgY2Fy ZXQuc2V0UG9zaXRpb24oZWxlbWVudC0+Z2V0RGVsZXRlQ2hhbmdlTWFya2VyKCktPnBvc2l0aW9u KCkgKyAgMSAtIG51bURlbGV0ZWRDaGFycyk7CisgICAgICAgICAgICBpbnQgZGVsZXRlUG9zaXRp b24gPSBlbGVtZW50LT5nZXREZWxldGVDaGFuZ2VNYXJrZXIoKS0+cG9zaXRpb24oKSArIDEgLSBu dW1EZWxldGVkQ2hhcnM7CisgICAgICAgICAgICBjYXJldC5zZXRQb3NpdGlvbihkZWxldGVQb3Np dGlvbik7CiAgICAgICAgICAgICBjYXJldC5tb3ZlUG9zaXRpb24oUVRleHRDdXJzb3I6OlJpZ2h0 LCBRVGV4dEN1cnNvcjo6S2VlcEFuY2hvciwgZWxlbWVudC0+Z2V0RGVsZXRlRGF0YSgpLnRvUGxh aW5UZXh0KCkubGVuZ3RoKCkpOworICAgICAgICAgICAgY2hlY2tBbmRSZW1vdmVBbmNob3JlZFNo YXBlcyhkZWxldGVQb3NpdGlvbiwgZWxlbWVudC0+Z2V0RGVsZXRlRGF0YSgpLnRvUGxhaW5UZXh0 KCkubGVuZ3RoKCkpOwogICAgICAgICAgICAgY2FyZXQucmVtb3ZlU2VsZWN0ZWRUZXh0KCk7CiAg ICAgICAgICAgICBudW1EZWxldGVkQ2hhcnMgKz0gZWxlbWVudC0+Z2V0RGVsZXRlRGF0YSgpLnRv UGxhaW5UZXh0KCkubGVuZ3RoKCk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKK3ZvaWQgU2hvd0No YW5nZXNDb21tYW5kOjpjaGVja0FuZFJlbW92ZUFuY2hvcmVkU2hhcGVzKGludCBwb3NpdGlvbiwg aW50IGxlbmd0aCkKK3sKKyAgICBRVGV4dEN1cnNvciBjdXJzb3IobV90ZXh0RWRpdG9yLT5kb2N1 bWVudCgpKTsKKyAgICBmb3IgKGludCBpPXBvc2l0aW9uO2kgPCAocG9zaXRpb24gKyBsZW5ndGgp O2krKykgeworICAgICAgICBpZiAobV90ZXh0RWRpdG9yLT5kb2N1bWVudCgpLT5jaGFyYWN0ZXJB dChpKSA9PSBRQ2hhcjo6T2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXIpIHsKKyAgICAgICAgICAg IGN1cnNvci5zZXRQb3NpdGlvbihpKzEpOworICAgICAgICAgICAgS29JbmxpbmVPYmplY3QgKm9i amVjdCA9IEtvVGV4dERvY3VtZW50KG1fdGV4dEVkaXRvci0+ZG9jdW1lbnQoKSkuaW5saW5lVGV4 dE9iamVjdE1hbmFnZXIoKS0+aW5saW5lVGV4dE9iamVjdChjdXJzb3IpOworICAgICAgICAgICAg aWYgKCFvYmplY3QpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIEtv VGV4dEFuY2hvciAqYW5jaG9yID0gZHluYW1pY19jYXN0PEtvVGV4dEFuY2hvciAqPihvYmplY3Qp OworICAgICAgICAgICAgaWYgKCFhbmNob3IpCisgICAgICAgICAgICAgICAgY29udGludWU7Cisg ICAgICAgICAgICAKKyAgICAgICAgICAgIG1fY2FudmFzLT5zaGFwZUNvbnRyb2xsZXIoKS0+cmVt b3ZlU2hhcGUoYW5jaG9yLT5zaGFwZSgpLCB0aGlzKS0+cmVkbygpOworICAgICAgICB9CisgICAg fQorfQorCiBTaG93Q2hhbmdlc0NvbW1hbmQ6On5TaG93Q2hhbmdlc0NvbW1hbmQoKQogewogfQpJ bmRleDogcGx1Z2lucy90ZXh0c2hhcGUvY29tbWFuZHMvU2hvd0NoYW5nZXNDb21tYW5kLmgKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0gcGx1Z2lucy90ZXh0c2hhcGUvY29tbWFuZHMvU2hvd0NoYW5nZXNDb21tYW5k LmgJKHJldmlzaW9uIDEwOTU5MzApCisrKyBwbHVnaW5zL3RleHRzaGFwZS9jb21tYW5kcy9TaG93 Q2hhbmdlc0NvbW1hbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsMjAgKzIyLDIxIEBACiAjZGVm aW5lIFNIT1dDSEFOR0VDT01NQU5EX0gKIAogI2luY2x1ZGUgIlRleHRDb21tYW5kQmFzZS5oIgot CiAjaW5jbHVkZSA8UU9iamVjdD4KIAogY2xhc3MgS29DaGFuZ2VUcmFja2VyOwogY2xhc3MgS29U ZXh0RWRpdG9yOworY2xhc3MgS29DYW52YXNCYXNlOwogCiBjbGFzcyBRVGV4dERvY3VtZW50Owor Y2xhc3MgUVRleHREb2N1bWVudEZyYWdtZW50OwogCiBjbGFzcyBTaG93Q2hhbmdlc0NvbW1hbmQg OiBwdWJsaWMgUU9iamVjdCwgcHVibGljIFRleHRDb21tYW5kQmFzZQogewogICAgIFFfT0JKRUNU CiBwdWJsaWM6CiAKLSAgICBTaG93Q2hhbmdlc0NvbW1hbmQoYm9vbCBzaG93Q2hhbmdlcywgUVRl eHREb2N1bWVudCAqZG9jdW1lbnQsIFFVbmRvQ29tbWFuZCogcGFyZW50ID0gMCk7CisgICAgU2hv d0NoYW5nZXNDb21tYW5kKGJvb2wgc2hvd0NoYW5nZXMsIFFUZXh0RG9jdW1lbnQgKmRvY3VtZW50 LCBLb0NhbnZhc0Jhc2UgKmNhbnZhcywgUVVuZG9Db21tYW5kKiBwYXJlbnQgPSAwKTsKICAgICB+ U2hvd0NoYW5nZXNDb21tYW5kKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgdW5kbygpOwpAQCAtNDgs MTMgKzQ5LDE2IEBACiAgICAgdm9pZCBlbmFibGVEaXNhYmxlQ2hhbmdlcygpOwogICAgIHZvaWQg ZW5hYmxlRGlzYWJsZVN0YXRlcyhib29sIHNob3dDaGFuZ2VzKTsKICAgICB2b2lkIGluc2VydERl bGV0ZWRDaGFuZ2VzKCk7CisgICAgdm9pZCBjaGVja0FuZEFkZEFuY2hvcmVkU2hhcGVzKGludCBw b3NpdGlvbiwgaW50IGxlbmd0aCk7CiAgICAgdm9pZCByZW1vdmVEZWxldGVkQ2hhbmdlcygpOwor ICAgIHZvaWQgY2hlY2tBbmRSZW1vdmVBbmNob3JlZFNoYXBlcyhpbnQgcG9zaXRpb24sIGludCBs ZW5ndGgpOwogCiAgICAgUVRleHREb2N1bWVudCAqbV9kb2N1bWVudDsKICAgICBLb0NoYW5nZVRy YWNrZXIgKm1fY2hhbmdlVHJhY2tlcjsKICAgICBLb1RleHRFZGl0b3IgKm1fdGV4dEVkaXRvcjsK ICAgICBib29sIG1fZmlyc3Q7CiAgICAgYm9vbCBtX3Nob3dDaGFuZ2VzOworICAgIEtvQ2FudmFz QmFzZSAqbV9jYW52YXM7CiB9OwogCiAjZW5kaWYgLy8gU0hPV0NIQU5HRUNPTU1BTkRfSAo= --0016e6d97102f5bde204806b6214 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ koffice-devel mailing list koffice-devel@kde.org https://mail.kde.org/mailman/listinfo/koffice-devel --0016e6d97102f5bde204806b6214--