--------------Boundary-00=_FT2BVTNGDI13GGG9QO8Y Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 8bit Hello, this patch groups the undo, but it does break kpresenter (I did not correct it, waiting for Laurent Montel to commit his changes). unfortunately I'll be offline very soon for a long time, so i'll stop now. Actually i haven't touched this for a while, and i'm not too sure anymore if what's attached is good or not. it at least works great here for me. I've let the setBold() etc functions in, you can remove them if you want. I hope to have more time to work on other things in koffice (and to have more time in a row, so i don't forget all that i was doing and do nonsense..). keep on the great work! emmanuel. -- "Give me a lever long enough and a place to stand, and I'll move the world." --Archimedes --------------Boundary-00=_FT2BVTNGDI13GGG9QO8Y Content-Type: text/x-diff; charset="us-ascii"; name="kotextobject.h.patch.3" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="kotextobject.h.patch.3" SW5kZXg6IGtvdGV4dG9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9ob21lL2tkZS9rb2Zm aWNlL2xpYi9rb3RleHQva290ZXh0b2JqZWN0LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjAK ZGlmZiAtdSAtMyAtcCAtcjEuMjAga290ZXh0b2JqZWN0LmgKLS0tIGtvdGV4dG9iamVjdC5oCTIw MDEvMTIvMTQgMjI6MTQ6MTEJMS4yMAorKysga290ZXh0b2JqZWN0LmgJMjAwMi8wMS8yMSAyMDoy NDoxMgpAQCAtNDEsNDYgKzQxLDc4IEBAIGNsYXNzIEtvVGV4dEZvcm1hdDsKICAqIHVubGlrZSBL V29yZCksIHRvIGltcGxlbWVudCAic2V0Qm9sZCIsICJzZXRJdGFsaWMiIGV0Yy4gb25seSBvbmNl LCB3aGV0aGVyIGl0IGFwcGxpZXMKICAqIHRvIGEgdGV4dCBzZWxlY3Rpb24gb3IgdG8gY29tcGxl dGUgdGV4dCBvYmplY3RzLgogICovCi1jbGFzcyBLb1RleHRGb3JtYXRJbnRlcmZhY2UKK2NsYXNz IEtvVGV4dEZvcm1hdEludGVyZmFjZTogcHVibGljIFFPYmplY3QKIHsKK1FfT0JKRUNUCiBwdWJs aWM6CisJS29UZXh0Rm9ybWF0SW50ZXJmYWNlKCkge30KKwlLb1RleHRGb3JtYXRJbnRlcmZhY2Uo UU9iamVjdCAqcGFyZW50LCBjb25zdCBjaGFyICpuYW1lKTogUU9iamVjdChwYXJlbnQsIG5hbWUp IHt9CiAgICAgLyoqIEludGVyZmFjZSBmb3IgYWNjZXNzaW5nIHRoZSBjdXJyZW50IGZvcm1hdCAq LwogICAgIHZpcnR1YWwgS29UZXh0Rm9ybWF0ICogY3VycmVudEZvcm1hdCgpIGNvbnN0ID0gMDsK ICAgICAvKiogSW50ZXJmYWNlIGZvciBzZXR0aW5nIHRoZSBtb2RpZmllZCBmb3JtYXQgKi8KLSAg ICB2aXJ0dWFsIHZvaWQgc2V0Rm9ybWF0KCBLb1RleHRGb3JtYXQgKiBuZXdGb3JtYXQsIGludCBm bGFncywgYm9vbCB6b29tRm9udCA9IGZhbHNlICkgPSAwOworICAgIHZpcnR1YWwgS0NvbW1hbmQg KnNldEZvcm1hdENvbW1hbmQoIEtvVGV4dEZvcm1hdCAqICYgY3VycmVudEZvcm1hdCwgS29UZXh0 Rm9ybWF0ICpmb3JtYXQsIGludCBmbGFncywgYm9vbCB6b29tRm9udCA9IGZhbHNlICkgPSAwOwog Ci0gICAgdmlydHVhbCBjb25zdCBLb1BhcmFnTGF5b3V0ICogY3VycmVudFBhcmFnTGF5b3V0Rm9y bWF0KCkgY29uc3QgPTA7CisJdmlydHVhbCBLQ29tbWFuZCAqc2V0UGFyYWdMYXlvdXRGb3JtYXRD b21tYW5kKCBLb1BhcmFnTGF5b3V0ICpuZXdMYXlvdXQsaW50IGZsYWdzLCBpbnQgbWFyZ2luSW5k ZXg9LTEpPTA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UGFyYWdMYXlvdXRGb3JtYXQoIEtvUGFy YWdMYXlvdXQgKm5ld0xheW91dCxpbnQgZmxhZ3MsIGludCBtYXJnaW5JbmRleD0tMSk9MDsKKyAg ICB2aXJ0dWFsIGNvbnN0IEtvUGFyYWdMYXlvdXQgKiBjdXJyZW50UGFyYWdMYXlvdXRGb3JtYXQo KSBjb25zdCA9IDA7CiAKLSAgICB2b2lkIHNldEJvbGQoYm9vbCBvbik7Ci0gICAgdm9pZCBzZXRJ dGFsaWMoYm9vbCBvbik7Ci0gICAgdm9pZCBzZXRVbmRlcmxpbmUoYm9vbCBvbik7CisJdm9pZCBz ZXRQYXJhZ0xheW91dEZvcm1hdCggS29QYXJhZ0xheW91dCAqbmV3TGF5b3V0LGludCBmbGFncywg aW50IG1hcmdpbkluZGV4PS0xKTsKKwl2b2lkIHNldEZvcm1hdCggS29UZXh0Rm9ybWF0ICogbmV3 Rm9ybWF0LCBpbnQgZmxhZ3MsIGJvb2wgem9vbUZvbnQgPSBmYWxzZSApOworCisJdm9pZCBzZXRC b2xkKGJvb2wgb24pOworICAgIEtDb21tYW5kICpzZXRCb2xkQ29tbWFuZChib29sIG9uKTsKKwl2 b2lkIHNldEl0YWxpYyhib29sIG9uKTsKKyAgICBLQ29tbWFuZCAqc2V0SXRhbGljQ29tbWFuZChi b29sIG9uKTsKKwl2b2lkIHNldFVuZGVybGluZShib29sIG9uKTsKKwlLQ29tbWFuZCAqc2V0VW5k ZXJsaW5lQ29tbWFuZChib29sIG9uKTsKICAgICB2b2lkIHNldFN0cmlrZU91dChib29sIG9uKTsK KwlLQ29tbWFuZCAqc2V0U3RyaWtlT3V0Q29tbWFuZChib29sIG9uKTsKICAgICB2b2lkIHNldFRl eHRDb2xvcihjb25zdCBRQ29sb3IgJmNvbG9yKTsKKwlLQ29tbWFuZCAqc2V0VGV4dENvbG9yQ29t bWFuZChjb25zdCBRQ29sb3IgJmNvbG9yKTsKICAgICB2b2lkIHNldFBvaW50U2l6ZSggaW50IHMg KTsKKwlLQ29tbWFuZCAqc2V0UG9pbnRTaXplQ29tbWFuZCggaW50IHMgKTsKICAgICB2b2lkIHNl dEZhbWlseShjb25zdCBRU3RyaW5nICZmb250KTsKLSAgICB2b2lkIHNldEZvbnQoY29uc3QgUUZv bnQgJmZvbnQsIGJvb2wgX3N1YnNjcmlwdCwgYm9vbCBfc3VwZXJzY3JpcHQsIGNvbnN0IFFDb2xv ciAmY29sLCBjb25zdCBRQ29sb3IgJmJhY2tHcm91bmRDb2xvciwgaW50IGZsYWdzKTsKKwlLQ29t bWFuZCAqc2V0RmFtaWx5Q29tbWFuZChjb25zdCBRU3RyaW5nICZmb250KTsKKwl2b2lkIHNldEZv bnQoY29uc3QgUUZvbnQgJmZvbnQsIGJvb2wgX3N1YnNjcmlwdCwgYm9vbCBfc3VwZXJzY3JpcHQs IGNvbnN0IFFDb2xvciAmY29sLCBjb25zdCBRQ29sb3IgJmJhY2tHcm91bmRDb2xvciwgaW50IGZs YWdzKTsKKwlLQ29tbWFuZCAqc2V0Rm9udENvbW1hbmQoY29uc3QgUUZvbnQgJmZvbnQsIGJvb2wg X3N1YnNjcmlwdCwgYm9vbCBfc3VwZXJzY3JpcHQsIGNvbnN0IFFDb2xvciAmY29sLCBjb25zdCBR Q29sb3IgJmJhY2tHcm91bmRDb2xvciwgaW50IGZsYWdzKTsKICAgICB2b2lkIHNldFRleHRTdWJT Y3JpcHQoYm9vbCBvbik7Ci0gICAgdm9pZCBzZXRUZXh0U3VwZXJTY3JpcHQoYm9vbCBvbik7CisJ S0NvbW1hbmQgKnNldFRleHRTdWJTY3JpcHRDb21tYW5kKGJvb2wgb24pOworCXZvaWQgc2V0VGV4 dFN1cGVyU2NyaXB0KGJvb2wgb24pOworCUtDb21tYW5kICpzZXRUZXh0U3VwZXJTY3JpcHRDb21t YW5kKGJvb2wgb24pOwogCiAgICAgdm9pZCBzZXREZWZhdWx0Rm9ybWF0KCk7CisJS0NvbW1hbmQg KnNldERlZmF1bHRGb3JtYXRDb21tYW5kKCk7CiAKICAgICB2b2lkIHNldFRleHRCYWNrZ3JvdW5k Q29sb3IoY29uc3QgUUNvbG9yICYpOworCUtDb21tYW5kICpzZXRUZXh0QmFja2dyb3VuZENvbG9y Q29tbWFuZChjb25zdCBRQ29sb3IgJik7CiAKICAgICB2b2lkIHNldEFsaWduKGludCBhbGlnbik7 CisJS0NvbW1hbmQgKnNldEFsaWduQ29tbWFuZChpbnQgYWxpZ24pOwogCiAgICAgdm9pZCBzZXRN YXJnaW4oUVN0eWxlU2hlZXRJdGVtOjpNYXJnaW4gbSwgZG91YmxlIG1hcmdpbik7CisJS0NvbW1h bmQgKnNldE1hcmdpbkNvbW1hbmQoUVN0eWxlU2hlZXRJdGVtOjpNYXJnaW4gbSwgZG91YmxlIG1h cmdpbik7CiAKICAgICB2b2lkIHNldFRhYkxpc3QoY29uc3QgS29UYWJ1bGF0b3JMaXN0ICYgdGFi TGlzdCApOworCUtDb21tYW5kICpzZXRUYWJMaXN0Q29tbWFuZChjb25zdCBLb1RhYnVsYXRvckxp c3QgJiB0YWJMaXN0ICk7CiAKICAgICB2b2lkIHNldENvdW50ZXIoY29uc3QgS29QYXJhZ0NvdW50 ZXIgJiBjb3VudGVyICk7CisJS0NvbW1hbmQgKnNldENvdW50ZXJDb21tYW5kKGNvbnN0IEtvUGFy YWdDb3VudGVyICYgY291bnRlciApOwogCiAgICAgUUNvbG9yIHRleHRDb2xvcigpIGNvbnN0Owog ICAgIFFGb250IHRleHRGb250KCkgY29uc3Q7CiAgICAgUVN0cmluZyB0ZXh0Rm9udEZhbWlseSgp Y29uc3Q7CiAKICAgICBRQ29sb3IgdGV4dEJhY2tncm91bmRDb2xvcigpY29uc3Q7CisKKwl2b2lk IGVtaXROZXdDb21tYW5kKEtDb21tYW5kICpjbWQpOworCitzaWduYWxzOgorCisgICAgLyoqIEVt aXR0ZWQgd2hlbiBhIG5ldyBjb21tYW5kIGhhcyBiZWVuIGNyZWF0ZWQgYW5kIHNob3VsZCBiZSBh ZGRlZCB0bworICAgICAqIHRoZSBtYWluIGxpc3Qgb2YgY29tbWFuZHMgKHVzdWFsbHkgaW4gdGhl IEtvRG9jdW1lbnQpLgorICAgICAqIE1ha2Ugc3VyZSB0byBjb25uZWN0IHRvIHRoYXQgb25lLCBv dGhlcndpc2UgdGhlIGNvbW1hbmRzIHdpbGwganVzdCBsZWFrIGF3YXkuLi4KKyAgICAgKi8KKwl2 b2lkIG5ld0NvbW1hbmQoS0NvbW1hbmQgKmNtZCk7CiB9OwogCiAvKioKQEAgLTg5LDcgKzEyMSw3 IEBAIHB1YmxpYzoKICAqIHRoZSB1bmRvL3JlZG8gY29tbWFuZHMpLgogICogRWRpdGluZyB0aGUg dGV4dCBpc24ndCBkb25lIGJ5IEtvVGV4dE9iamVjdCBidXQgYnkgS29UZXh0VmlldyAoZG9jdW1l bnQvdmlldyBkZXNpZ24pLgogICovCi1jbGFzcyBLb1RleHRPYmplY3QgOiBwdWJsaWMgUU9iamVj dCwgcHVibGljIEtvVGV4dEZvcm1hdEludGVyZmFjZQorY2xhc3MgS29UZXh0T2JqZWN0IDogcHVi bGljIEtvVGV4dEZvcm1hdEludGVyZmFjZQogewogICAgIFFfT0JKRUNUCiBwdWJsaWM6CkBAIC0x NzAsNiArMjAyLDkgQEAgcHVibGljOgogICAgIHZvaWQgaGlnaGxpZ2h0UG9ydGlvbiggUXQzOjpR VGV4dFBhcmFnICogcGFyYWcsIGludCBpbmRleCwgaW50IGxlbmd0aCApOwogICAgIHZvaWQgcmVt b3ZlSGlnaGxpZ2h0KCk7CiAKKwkvKiogSW1wbGVtZW50YXRpb24gb2Ygc2V0Rm9ybWF0Q29tbWFu ZCBmcm9tIEtvVGV4dEZvcm1hdEludGVyZmFjZSAqLworCUtDb21tYW5kICpzZXRGb3JtYXRDb21t YW5kKCBLb1RleHRGb3JtYXQgKiAmIGN1cnJlbnRGb3JtYXQsIEtvVGV4dEZvcm1hdCAqZm9ybWF0 LCBpbnQgZmxhZ3MsIGJvb2wgem9vbUZvbnQgPSBmYWxzZSApOworCiAgICAgLyoqIFNldCBmb3Jt YXQgY2hhbmdlcyBvbiBzZWxlY3Rpb24gb3IgY3VycmVudCBjdXJzb3IuCiAgICAgICAgIFJldHVy bnMgYSBjb21tYW5kIGlmIHRoZSBmb3JtYXQgd2FzIGFwcGxpZWQgdG8gYSBzZWxlY3Rpb24gKi8K ICAgICBLQ29tbWFuZCAqc2V0Rm9ybWF0Q29tbWFuZCggUVRleHRDdXJzb3IgKiBjdXJzb3IsIEtv VGV4dEZvcm1hdCAqICYgY3VycmVudEZvcm1hdCwgS29UZXh0Rm9ybWF0ICpmb3JtYXQsIGludCBm bGFncywgYm9vbCB6b29tRm9udCA9IGZhbHNlLCBpbnQgc2VsZWN0aW9uSWQgPSBRVGV4dERvY3Vt ZW50OjpTdGFuZGFyZCApOwpAQCAtMTk5LDEwICsyMzQsMTAgQEAgcHVibGljOgogCiAgICAgS0Nv bW1hbmQgKiBzZXRTaGFkb3dDb21tYW5kKCBRVGV4dEN1cnNvciAqIGN1cnNvcixkb3VibGUgZGlz dCwgc2hvcnQgaW50IGRpcmVjdGlvbiwgY29uc3QgUUNvbG9yICZjb2wsaW50IHNlbGVjdGlvbklk PSBRVGV4dERvY3VtZW50OjpTdGFuZGFyZCAgKTsKIAotICAgIHZvaWQgYXBwbHlTdHlsZSggUVRl eHRDdXJzb3IgKiBjdXJzb3IsIGNvbnN0IEtvU3R5bGUgKiBzdHlsZSwKKyAgICBLQ29tbWFuZCAq YXBwbHlTdHlsZSggUVRleHRDdXJzb3IgKiBjdXJzb3IsIGNvbnN0IEtvU3R5bGUgKiBzdHlsZSwK ICAgICAgICAgICAgICAgICAgICAgIGludCBzZWxlY3Rpb25JZCA9IFFUZXh0RG9jdW1lbnQ6OlN0 YW5kYXJkLAogICAgICAgICAgICAgICAgICAgICAgaW50IHBhcmFnTGF5b3V0RmxhZ3MgPSBLb1Bh cmFnTGF5b3V0OjpBbGwsIGludCBmb3JtYXRGbGFncyA9IFFUZXh0Rm9ybWF0OjpGb3JtYXQsCi0g ICAgICAgICAgICAgICAgICAgICBib29sIGNyZWF0ZVVuZG9SZWRvID0gdHJ1ZSwgYm9vbCBpbnRl cmFjdGl2ZSA9IHRydWUgKTsKKyAgICAgICAgICAgICAgICAgICAgIGJvb2wgY3JlYXRlVW5kb1Jl ZG8gPSB0cnVlLCBib29sIGludGVyYWN0aXZlID0gdHJ1ZSwgYm9vbCBhcHBseUl0ID0gdHJ1ZSAp OwogICAgIC8qKiBVcGRhdGUgdGhlIHBhcmFncmFwaCB0aGF0IHVzZSB0aGUgZ2l2ZW4gc3R5bGUs IGFmdGVyIHRoaXMgc3R5bGUgd2FzIGNoYW5nZWQuCiAgICAgICogIFRoZSBmbGFncyB0ZWxsIHdo aWNoIGNoYW5nZXMgc2hvdWxkIGJlIGFwcGxpZWQuCiAgICAgICogIEBwYXJhbSBwYXJhZ0xheW91 dENoYW5nZWQgcGFyYWdyYXBoIGZsYWdzCkBAIC0yMjksNyArMjY0LDcgQEAgcHVibGljOgogICAg IC8qKgogICAgICAqIFN1cHBvcnQgZm9yIGNoYW5naW5nIHRoZSBmb3JtYXQgaW4gdGhlIHdob2xl IHRleHRvYmplY3QKICAgICAgKi8KLSAgICB2aXJ0dWFsIHZvaWQgc2V0UGFyYWdMYXlvdXRGb3Jt YXQoIEtvUGFyYWdMYXlvdXQgKm5ld0xheW91dCxpbnQgZmxhZ3MsIGludCBtYXJnaW5JbmRleD0t MSk7CisgICAgdmlydHVhbCBLQ29tbWFuZCAqc2V0UGFyYWdMYXlvdXRGb3JtYXRDb21tYW5kKCBL b1BhcmFnTGF5b3V0ICpuZXdMYXlvdXQsaW50IGZsYWdzLCBpbnQgbWFyZ2luSW5kZXg9LTEpOwog CiAgICAgLyoqCiAgICAgICogU3VwcG9ydCBmb3IgY2hhbmdpbmcgdGhlIGZvcm1hdCBpbiB0aGUg d2hvbGUgdGV4dG9iamVjdApAQCAtMjYwLDEwICsyOTUsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lk IHNlbGVjdGlvbkNoYW5nZWROb3RpZnkoIGJvb2wgZW5hYmxlQWN0aW9ucyA9IHRydWUgKTsKIAot ICAgIHZvaWQgZW1pdE5ld0NvbW1hbmQoS0NvbW1hbmQgKmNtZCk7Ci0KICAgICB2b2lkIGNoYW5n ZUNhc2VPZlRleHQoUVRleHRDdXJzb3IgKmN1cnNvcixLb0NoYW5nZUNhc2VEaWE6OlR5cGVPZkNh c2UgX3R5cGUpOwotICAgIFFTdHJpbmcgdGV4dENoYW5nZWRDYXNlKGNvbnN0IFFTdHJpbmcgX3Rl eHQsS29DaGFuZ2VDYXNlRGlhOjpUeXBlT2ZDYXNlIF90eXBlKTsJCisgICAgUVN0cmluZyB0ZXh0 Q2hhbmdlZENhc2UoY29uc3QgUVN0cmluZyBfdGV4dCxLb0NoYW5nZUNhc2VEaWE6OlR5cGVPZkNh c2UgX3R5cGUpOwogICAgIEtDb21tYW5kICpjaGFuZ2VDYXNlT2ZUZXh0UGFyYWcoaW50IGN1cnNv clBvc1N0YXJ0LCBpbnQgY3Vyc29yUG9zRW5kLEtvQ2hhbmdlQ2FzZURpYTo6VHlwZU9mQ2FzZSBf dHlwZSxRVGV4dEN1cnNvciAqY3Vyc29yLCBLb1RleHRQYXJhZyAqcGFyYWcpOwogCiAjaWZuZGVm IE5ERUJVRwpAQCAtMjc5LDEyICszMTIsNiBAQCBzaWduYWxzOgogICAgICAqIEtXb3JkIHVzZXMg dGhpcyBzaWduYWwgdG8gY2hlY2sgZm9yIHRoaW5ncyBsaWtlICdJIG5lZWQgdG8gY3JlYXRlIGEg bmV3IHBhZ2UnCiAgICAgICovCiAgICAgdm9pZCBhZnRlckZvcm1hdHRpbmcoIGludCBib3R0b20s IFF0Mzo6UVRleHRQYXJhZyogbV9sYXN0Rm9ybWF0dGVkLCBib29sKiBhYm9ydCApOwotCi0gICAg LyoqIEVtaXR0ZWQgd2hlbiBhIG5ldyBjb21tYW5kIGhhcyBiZWVuIGNyZWF0ZWQgYW5kIHNob3Vs ZCBiZSBhZGRlZCB0bwotICAgICAqIHRoZSBtYWluIGxpc3Qgb2YgY29tbWFuZHMgKHVzdWFsbHkg aW4gdGhlIEtvRG9jdW1lbnQpLgotICAgICAqIE1ha2Ugc3VyZSB0byBjb25uZWN0IHRvIHRoYXQg b25lLCBvdGhlcndpc2UgdGhlIGNvbW1hbmRzIHdpbGwganVzdCBsZWFrIGF3YXkuLi4KLSAgICAg Ki8KLSAgICB2b2lkIG5ld0NvbW1hbmQoIEtDb21tYW5kICpjbWQgKTsKIAogICAgIC8qKiBUZWxs IHRoZSB3b3JsZCB0aGF0IHdlJ2QgbGlrZSBzb21lIHJlcGFpbnRpbmcgdG8gaGFwcGVuICovCiAg ICAgdm9pZCByZXBhaW50Q2hhbmdlZCggS29UZXh0T2JqZWN0ICogKTsK --------------Boundary-00=_FT2BVTNGDI13GGG9QO8Y Content-Type: text/x-c++src; charset="us-ascii"; name="kwtextobject.cc" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="kwtextobject.cc" LyogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CiAgIENvcHlyaWdodCAoQykg MjAwMiB0aGUgS29mZmljZSB0ZWFtCgogICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCiAgIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogICB2ZXJzaW9uIDIg b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgog ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCgogICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAgIGFsb25nIHdp dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl IHRvCiAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFj ZSAtIFN1aXRlIDMzMCwKICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiovCgojaW5jbHVk ZSAia3d0ZXh0b2JqZWN0LmgiCiNpbmNsdWRlICJrd3RleHRmcmFtZXNldC5oIgojaW5jbHVkZSA8 a2NvbW1hbmQuaD4KI2luY2x1ZGUgPGtsb2NhbGUuaD4KCktvVGV4dEZvcm1hdCAqS1dUZXh0RnJh bWVPYmplY3Q6OmN1cnJlbnRGb3JtYXQoKSBjb25zdAp7CiAJS29UZXh0T2JqZWN0ICp0ZXh0T2Jq ZWN0ID0gKChLV1RleHRGcmFtZVNldCopbV9mcmFtZS0+ZnJhbWVTZXQoKSktPnRleHRPYmplY3Qo KTsKCXJldHVybiB0ZXh0T2JqZWN0LT5jdXJyZW50Rm9ybWF0KCk7Cn0KCktDb21tYW5kICpLV1Rl eHRGcmFtZU9iamVjdDo6c2V0Rm9ybWF0Q29tbWFuZCggS29UZXh0Rm9ybWF0IComb2xkRm9ybWF0 LCBLb1RleHRGb3JtYXQgKiBuZXdGb3JtYXQsIGludCBmbGFncywgYm9vbCB6b29tRm9udCApCnsK CUtvVGV4dE9iamVjdCAqdGV4dE9iamVjdCA9ICgoS1dUZXh0RnJhbWVTZXQqKW1fZnJhbWUtPmZy YW1lU2V0KCkpLT50ZXh0T2JqZWN0KCk7Cgl0ZXh0T2JqZWN0LT50ZXh0RG9jdW1lbnQoKS0+c2Vs ZWN0QWxsKCBRVGV4dERvY3VtZW50OjpUZW1wICk7CglLQ29tbWFuZCAqY21kID0gdGV4dE9iamVj dC0+c2V0Rm9ybWF0Q29tbWFuZCggMEwsIG9sZEZvcm1hdCwgbmV3Rm9ybWF0LCBmbGFncywgem9v bUZvbnQsIFFUZXh0RG9jdW1lbnQ6OlRlbXAgKTsKCXRleHRPYmplY3QtPnRleHREb2N1bWVudCgp LT5yZW1vdmVTZWxlY3Rpb24oIFFUZXh0RG9jdW1lbnQ6OlRlbXAgKTsKCXJldHVybiBjbWQ7Cn0K CmNvbnN0IEtvUGFyYWdMYXlvdXQgKiBLV1RleHRGcmFtZU9iamVjdDo6Y3VycmVudFBhcmFnTGF5 b3V0Rm9ybWF0KCkgY29uc3QKewoJS29UZXh0T2JqZWN0ICp0ZXh0T2JqZWN0ID0gKChLV1RleHRG cmFtZVNldCopbV9mcmFtZS0+ZnJhbWVTZXQoKSktPnRleHRPYmplY3QoKTsKCXJldHVybiB0ZXh0 T2JqZWN0LT5jdXJyZW50UGFyYWdMYXlvdXRGb3JtYXQoKTsKfQoKS0NvbW1hbmQgKktXVGV4dEZy YW1lT2JqZWN0OjpzZXRQYXJhZ0xheW91dEZvcm1hdENvbW1hbmQoIEtvUGFyYWdMYXlvdXQgKm5l d0xheW91dCxpbnQgZmxhZ3MsIGludCBtYXJnaW5JbmRleCkKewoJS29UZXh0T2JqZWN0ICp0ZXh0 T2JqZWN0ID0gKChLV1RleHRGcmFtZVNldCopbV9mcmFtZS0+ZnJhbWVTZXQoKSktPnRleHRPYmpl Y3QoKTsKCXJldHVybiB0ZXh0T2JqZWN0LT5Lb1RleHRPYmplY3Q6OnNldFBhcmFnTGF5b3V0Rm9y bWF0Q29tbWFuZChuZXdMYXlvdXQsIGZsYWdzLCBtYXJnaW5JbmRleCk7Cn0K --------------Boundary-00=_FT2BVTNGDI13GGG9QO8Y Content-Type: text/x-chdr; charset="us-ascii"; name="kwtextobject.h" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="kwtextobject.h" LyogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CiAgIENvcHlyaWdodCAoQykg MjAwMiB0aGUgS29mZmljZSB0ZWFtCgogICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCiAgIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogICB2ZXJzaW9uIDIg b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgog ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCgogICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAgIGFsb25nIHdp dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl IHRvCiAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFj ZSAtIFN1aXRlIDMzMCwKICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiovCgojaWZuZGVm IEtXVEVYVE9CSkVDVF9ICiNkZWZpbmUgS1dURVhUT0JKRUNUX0gKCiNpbmNsdWRlIDxrb3RleHRv YmplY3QuaD4KI2luY2x1ZGUgImt3ZG9jLmgiCgovKioKICogVGhpcyBjbGFzcyBvdmVycmlkZXMg S29UZXh0Rm9ybWF0IG1ldGhvZHMsIGFsbG93aW5nCiAqIHRvIGltcGxlbWVudCAic2V0Qm9sZCIs ICJzZXRJdGFsaWMiIGV0Yy4gb25seSBvbmNlLCB3aGV0aGVyIGl0IGFwcGxpZXMKICogdG8gYSB0 ZXh0IHNlbGVjdGlvbiBvciB0byBjb21wbGV0ZSB0ZXh0IG9iamVjdHMuCiAqLwpjbGFzcyBLV1Rl eHRGcmFtZU9iamVjdDogcHVibGljIEtvVGV4dEZvcm1hdEludGVyZmFjZQp7CnB1YmxpYzoKCglL V1RleHRGcmFtZU9iamVjdChLV0ZyYW1lICpmcmFtZSwgS1dEb2N1bWVudCogZG9jKTogbV9mcmFt ZShmcmFtZSksIG1fZG9jKGRvYykge30KCgkvKiogSW50ZXJmYWNlIGZvciBhY2Nlc3NpbmcgdGhl IGN1cnJlbnQgZm9ybWF0ICovCiAgICB2aXJ0dWFsIEtvVGV4dEZvcm1hdCAqIGN1cnJlbnRGb3Jt YXQoKSBjb25zdDsKCiAgIC8qKiBJbnRlcmZhY2UgZm9yIHNldHRpbmcgdGhlIG1vZGlmaWVkIGZv cm1hdCAqLwogICAgdmlydHVhbCBLQ29tbWFuZCAqc2V0Rm9ybWF0Q29tbWFuZCggS29UZXh0Rm9y bWF0IComb2xkRm9ybWF0LCBLb1RleHRGb3JtYXQgKiBuZXdGb3JtYXQsIGludCBmbGFncywgYm9v bCB6b29tRm9udCA9IGZhbHNlICk7CgoJdmlydHVhbCBjb25zdCBLb1BhcmFnTGF5b3V0ICogY3Vy cmVudFBhcmFnTGF5b3V0Rm9ybWF0KCkgY29uc3Q7CgogICAgdmlydHVhbCBLQ29tbWFuZCAqc2V0 UGFyYWdMYXlvdXRGb3JtYXRDb21tYW5kKCBLb1BhcmFnTGF5b3V0ICpuZXdMYXlvdXQsaW50IGZs YWdzLCBpbnQgbWFyZ2luSW5kZXg9LTEpOwoKcHJvdGVjdGVkOgoJS1dGcmFtZSAqbV9mcmFtZTsK CUtXRG9jdW1lbnQgKm1fZG9jOwoKfTsKCiNlbmRpZgo= --------------Boundary-00=_FT2BVTNGDI13GGG9QO8Y Content-Type: text/x-diff; charset="us-ascii"; name="kwview.cc.patch.3" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="kwview.cc.patch.3" SW5kZXg6IGt3dmlldy5jYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvaG9tZS9rZGUva29mZmljZS9r d29yZC9rd3ZpZXcuY2MsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNDY0CmRpZmYgLXUgLTMgLXAg LXIxLjQ2NCBrd3ZpZXcuY2MKLS0tIGt3dmlldy5jYwkyMDAyLzAxLzA1IDEyOjM1OjMxCTEuNDY0 CisrKyBrd3ZpZXcuY2MJMjAwMi8wMS8yMSAyMDoyNDozNgpAQCAtMTA4LDcgKzEwOCw3IEBAIEtX Vmlldzo6S1dWaWV3KCBRV2lkZ2V0ICpfcGFyZW50LCBjb25zdCAKICAgICBtX3NlYXJjaEVudHJ5 ID0gMEw7CiAgICAgbV9yZXBsYWNlRW50cnkgPSAwTDsKICAgICBtX2ZpbmRSZXBsYWNlID0gMEw7 Ci0gICAgbV9hY3Rpb25MaXN0LnNldEF1dG9EZWxldGUoIHRydWUgKTsKKwltX2FjdGlvbkxpc3Qu c2V0QXV0b0RlbGV0ZSggdHJ1ZSApOwogICAgIC8vIERlZmF1bHQgdmFsdWVzLgogICAgIG1fem9v bVZpZXdNb2RlTm9ybWFsID0gbV9kb2MtPnpvb20oKTsKICAgICBtX3pvb21WaWV3TW9kZVByZXZp ZXcgPSAzMzsKQEAgLTI3NTQsODcgKzI3NTQsMTgwIEBAIHZvaWQgS1dWaWV3Ojp0YWJsZURlbGV0 ZSgpCiAKIHZvaWQgS1dWaWV3Ojp0ZXh0U3R5bGVTZWxlY3RlZCggaW50IGluZGV4ICkKIHsKLSAg ICBpZihtX2d1aS0+Y2FudmFzV2lkZ2V0KCktPmN1cnJlbnRGcmFtZVNldEVkaXQoKSkKLSAgICB7 Ci0gICAgICAgIEtXVGV4dEZyYW1lU2V0RWRpdCAqIGVkaXQgPSBkeW5hbWljX2Nhc3Q8S1dUZXh0 RnJhbWVTZXRFZGl0ICo+KG1fZ3VpLT5jYW52YXNXaWRnZXQoKS0+Y3VycmVudEZyYW1lU2V0RWRp dCgpLT5jdXJyZW50VGV4dEVkaXQoKSk7Ci0gICAgICAgIGlmICggZWRpdCApCi0gICAgICAgICAg ICBlZGl0LT5hcHBseVN0eWxlKCBtX2RvYy0+c3R5bGVBdCggaW5kZXggKSApOwotICAgICAgICBt X2d1aS0+Y2FudmFzV2lkZ2V0KCktPnNldEZvY3VzKCk7IC8vIHRoZSBjb21ibyBrZWVwcyBmb2N1 cy4uLgotICAgIH0KKwlpZiAoIG1fZ3VpLT5jYW52YXNXaWRnZXQoKS0+Y3VycmVudEZyYW1lU2V0 RWRpdCgpICkKKwl7CisJCUtXVGV4dEZyYW1lU2V0RWRpdCAqIGVkaXQgPSBkeW5hbWljX2Nhc3Q8 S1dUZXh0RnJhbWVTZXRFZGl0ICo+KG1fZ3VpLT5jYW52YXNXaWRnZXQoKS0+Y3VycmVudEZyYW1l U2V0RWRpdCgpLT5jdXJyZW50VGV4dEVkaXQoKSk7CisJCWlmICggZWRpdCkKKyAgICAgICAgICAg ZWRpdC0+YXBwbHlTdHlsZSggbV9kb2MtPnN0eWxlQXQoIGluZGV4ICkgKTsKKwl9CisJZWxzZQor CXsgLy8gaXQgbWlnaHQgYmUgdGhhdCBhIGZyYW1lIChvciBzZXZlcmFsIGZyYW1lcykgYXJlIHNl bGVjdGVkCisJCVFQdHJMaXN0IDxLV0ZyYW1lPiBzZWxlY3RlZEZyYW1lcyA9IG1fZG9jLT5nZXRT ZWxlY3RlZEZyYW1lcygpOworCQlpZiAoc2VsZWN0ZWRGcmFtZXMuY291bnQoKSA8PSAwKQorCQkJ cmV0dXJuOyAvLyBub3BlLCBubyBmcmFtZXMgYXJlIHNlbGVjdGVkLgorCQkvLyB5ZXMsIGluZGVl ZCBmcmFtZXMgYXJlIHNlbGVjdGVkLgorCQlRUHRyTGlzdEl0ZXJhdG9yPEtXRnJhbWU+IGl0KCBz ZWxlY3RlZEZyYW1lcyApOworCQlLTWFjcm9Db21tYW5kICpnbG9iYWxDbWQgPSBuZXcgS01hY3Jv Q29tbWFuZChpMThuKCJjaGFuZ2UgdGV4dCBzdHlsZSBpbiBmcmFtZXMiKSk7CisJCWZvciAoIDsg aXQuY3VycmVudCgpIDsgKytpdCApCisJCXsKKwkJCUtXRnJhbWUgKmN1ckZyYW1lID0gaXQuY3Vy cmVudCgpOworCQkJS1dGcmFtZVNldCAqY3VyRnJhbWVTZXQgPSBjdXJGcmFtZS0+ZnJhbWVTZXQo KTsKKwkJCWlmIChjdXJGcmFtZVNldC0+dHlwZSgpID09IEZUX1RFWFQpCisJCQl7CisJCQkJS29U ZXh0T2JqZWN0ICp0ZXh0T2JqZWN0ID0gKChLV1RleHRGcmFtZVNldCopY3VyRnJhbWVTZXQpLT50 ZXh0T2JqZWN0KCk7CisJCQkJdGV4dE9iamVjdC0+dGV4dERvY3VtZW50KCktPnNlbGVjdEFsbCgg UVRleHREb2N1bWVudDo6VGVtcCApOworCQkJCUtDb21tYW5kICpjbWQgPSB0ZXh0T2JqZWN0LT5h cHBseVN0eWxlKCBOVUxMLCBtX2RvYy0+c3R5bGVBdCggaW5kZXggKSwgUVRleHREb2N1bWVudDo6 VGVtcCwgS29QYXJhZ0xheW91dDo6QWxsLCBRVGV4dEZvcm1hdDo6Rm9ybWF0LCB0cnVlLCB0cnVl ICk7CisJCQkJdGV4dE9iamVjdC0+dGV4dERvY3VtZW50KCktPnJlbW92ZVNlbGVjdGlvbiggUVRl eHREb2N1bWVudDo6VGVtcCApOworCQkJCWlmIChjbWQpCisJCQkJCWdsb2JhbENtZC0+YWRkQ29t bWFuZCggY21kICk7CisJCQl9CisJCX0KKwkJbV9kb2MtPmFkZENvbW1hbmQoIGdsb2JhbENtZCAp OworCX0KKwltX2d1aS0+Y2FudmFzV2lkZ2V0KCktPnNldEZvY3VzKCk7IC8vIHRoZSBjb21ibyBr ZWVwcyBmb2N1cy4uLiovCiB9CiAKIHZvaWQgS1dWaWV3Ojp0ZXh0U2l6ZVNlbGVjdGVkKCBpbnQg c2l6ZSApCiB7Ci0gICAgS1dUZXh0RnJhbWVTZXRFZGl0ICogZWRpdCA9IGN1cnJlbnRUZXh0RWRp dCgpOwotICAgIGlmICggZWRpdCApCi0gICAgICAgIGVkaXQtPnNldFBvaW50U2l6ZSggc2l6ZSAp OwotICAgIG1fZ3VpLT5jYW52YXNXaWRnZXQoKS0+c2V0Rm9jdXMoKTsgLy8gdGhlIGNvbWJvIGtl ZXBzIGZvY3VzLi4uCisJUVB0ckxpc3Q8S29UZXh0Rm9ybWF0SW50ZXJmYWNlPiBsc3QgPSBhcHBs aWNhYmxlVGV4dEludGVyZmFjZXMoKTsKKyAgICBRUHRyTGlzdEl0ZXJhdG9yPEtvVGV4dEZvcm1h dEludGVyZmFjZT4gaXQoIGxzdCApOworICAgIEtNYWNyb0NvbW1hbmQgKmdsb2JhbENtZCA9IG5l dyBLTWFjcm9Db21tYW5kKGkxOG4oImNoYW5nZSB0ZXh0IHNpemUgaW4gZnJhbWVzIikpOworCWZv ciAoIDsgaXQuY3VycmVudCgpIDsgKytpdCApCisJeworICAgICAgICBLQ29tbWFuZCAqY21kID0g aXQuY3VycmVudCgpLT5zZXRQb2ludFNpemVDb21tYW5kKCBzaXplICk7CisJCWlmIChjbWQpCisJ CQlnbG9iYWxDbWQtPmFkZENvbW1hbmQoY21kKTsKKwl9CisJbV9kb2MtPmFkZENvbW1hbmQoZ2xv YmFsQ21kKTsKKwltX2d1aS0+Y2FudmFzV2lkZ2V0KCktPnNldEZvY3VzKCk7IC8vIHRoZSBjb21i byBrZWVwcyBmb2N1cy4uLgogfQogCiB2b2lkIEtXVmlldzo6dGV4dEZvbnRTZWxlY3RlZCggY29u c3QgUVN0cmluZyAmIGZvbnQgKQogewotICAgIEtXVGV4dEZyYW1lU2V0RWRpdCAqIGVkaXQgPSBj dXJyZW50VGV4dEVkaXQoKTsKLSAgICBpZiAoIGVkaXQgKQotICAgICAgICBlZGl0LT5zZXRGYW1p bHkoIGZvbnQgKTsKKwlRUHRyTGlzdDxLb1RleHRGb3JtYXRJbnRlcmZhY2U+IGxzdCA9IGFwcGxp Y2FibGVUZXh0SW50ZXJmYWNlcygpOworICAgIFFQdHJMaXN0SXRlcmF0b3I8S29UZXh0Rm9ybWF0 SW50ZXJmYWNlPiBpdCggbHN0ICk7CisgICAgS01hY3JvQ29tbWFuZCogbWFjcm9DbWQgPSBuZXcg S01hY3JvQ29tbWFuZCggaTE4bigiQ2hhbmdlIHRleHQgZm9udCBpbiBmcmFtZShzKSIpICk7CisJ Zm9yICggOyBpdC5jdXJyZW50KCkgOyArK2l0ICkKKyAgICB7CisJICAgIEtDb21tYW5kICpjbWQg PSBpdC5jdXJyZW50KCktPnNldEZhbWlseUNvbW1hbmQoIGZvbnQgKTsKKwkJaWYgKGNtZCkKKwkJ CW1hY3JvQ21kLT5hZGRDb21tYW5kKCBjbWQgKTsKKwl9CisJbV9kb2MtPmFkZENvbW1hbmQoIG1h Y3JvQ21kICk7CiAgICAgbV9ndWktPmNhbnZhc1dpZGdldCgpLT5zZXRGb2N1cygpOyAvLyB0aGUg Y29tYm8ga2VlcHMgZm9jdXMuLi4KIH0KIAorUVB0ckxpc3Q8S29UZXh0Rm9ybWF0SW50ZXJmYWNl PiBLV1ZpZXc6OmFwcGxpY2FibGVUZXh0SW50ZXJmYWNlcygpCit7CisJUVB0ckxpc3Q8S29UZXh0 Rm9ybWF0SW50ZXJmYWNlPiBsc3Q7CisJaWYgKGN1cnJlbnRUZXh0RWRpdCgpKQorCQkvLyBzaW1w bHkgcmV0dXJuIHRoZSBjdXJyZW50IHRleHRFZGl0IDoKKwkJbHN0LmFwcGVuZCggY3VycmVudFRl eHRFZGl0KCkgKTsKKwllbHNlCisJewkvLyBpdCBtaWdodCBiZSB0aGF0IGEgZnJhbWUgKG9yIHNl dmVyYWwgZnJhbWVzKSBhcmUgc2VsZWN0ZWQKKwkJIFFQdHJMaXN0PEtXRnJhbWU+IHNlbGVjdGVk RnJhbWVzID0gbV9kb2MtPmdldFNlbGVjdGVkRnJhbWVzKCk7CisJCSBRUHRyTGlzdEl0ZXJhdG9y PEtXRnJhbWU+IGl0KCBzZWxlY3RlZEZyYW1lcyApOworCQkgZm9yICggOyBpdC5jdXJyZW50KCkg OyArK2l0ICkKKwkJIHsKKwkJCWlmIChpdC5jdXJyZW50KCktPmZyYW1lU2V0KCktPnR5cGUoKSA9 PSBGVF9URVhUKQorCQkJCWxzdC5hcHBlbmQoIG5ldyBLV1RleHRGcmFtZU9iamVjdCggaXQuY3Vy cmVudCgpLCBtX2RvYyApICk7CisJCSB9CisJfQorCXJldHVybiBsc3Q7Cit9CisKIHZvaWQgS1dW aWV3Ojp0ZXh0Qm9sZCgpCiB7Ci0gICAgS1dUZXh0RnJhbWVTZXRFZGl0ICogZWRpdCA9IGN1cnJl bnRUZXh0RWRpdCgpOwotICAgIGlmICggZWRpdCApCi0gICAgICAgIGVkaXQtPnNldEJvbGQoYWN0 aW9uRm9ybWF0Qm9sZC0+aXNDaGVja2VkKCkpOworCVFQdHJMaXN0PEtvVGV4dEZvcm1hdEludGVy ZmFjZT4gbHN0ID0gYXBwbGljYWJsZVRleHRJbnRlcmZhY2VzKCk7CisgICAgUVB0ckxpc3RJdGVy YXRvcjxLb1RleHRGb3JtYXRJbnRlcmZhY2U+IGl0KCBsc3QgKTsKKyAgICBLTWFjcm9Db21tYW5k KiBtYWNyb0NtZCA9IG5ldyBLTWFjcm9Db21tYW5kKCBpMThuKCJNYWtlIHRleHQgaW4gZnJhbWUo cykgYm9sZCIpICk7CisJZm9yICggOyBpdC5jdXJyZW50KCkgOyArK2l0ICkKKyAgICB7CisJICAg IEtDb21tYW5kICpjbWQgPSBpdC5jdXJyZW50KCktPnNldEJvbGRDb21tYW5kKCBhY3Rpb25Gb3Jt YXRCb2xkLT5pc0NoZWNrZWQoKSApOworCQlpZiAoY21kKQorCQkJbWFjcm9DbWQtPmFkZENvbW1h bmQoY21kKTsKKwl9CisJbV9kb2MtPmFkZENvbW1hbmQobWFjcm9DbWQpOwogfQogCiB2b2lkIEtX Vmlldzo6dGV4dEl0YWxpYygpCiB7Ci0gICAgS1dUZXh0RnJhbWVTZXRFZGl0ICogZWRpdCA9IGN1 cnJlbnRUZXh0RWRpdCgpOwotICAgIGlmICggZWRpdCApCi0gICAgICAgIGVkaXQtPnNldEl0YWxp YyhhY3Rpb25Gb3JtYXRJdGFsaWMtPmlzQ2hlY2tlZCgpKTsKLQorCVFQdHJMaXN0PEtvVGV4dEZv cm1hdEludGVyZmFjZT4gbHN0ID0gYXBwbGljYWJsZVRleHRJbnRlcmZhY2VzKCk7CisgICAgUVB0 ckxpc3RJdGVyYXRvcjxLb1RleHRGb3JtYXRJbnRlcmZhY2U+IGl0KCBsc3QgKTsKKwlLTWFjcm9D b21tYW5kKiBtYWNyb0NtZCA9IG5ldyBLTWFjcm9Db21tYW5kKCBpMThuKCJNYWtlIHRleHQgaW4g ZnJhbWUocykgaXRhbGljIikgKTsKKyAgICBmb3IgKCA7IGl0LmN1cnJlbnQoKSA7ICsraXQgKQor ICAgIHsKKwkgICAgS0NvbW1hbmQgKmNtZCA9IGl0LmN1cnJlbnQoKS0+c2V0SXRhbGljQ29tbWFu ZCggYWN0aW9uRm9ybWF0SXRhbGljLT5pc0NoZWNrZWQoKSApOworCQlpZiAoY21kKQorCQkJbWFj cm9DbWQtPmFkZENvbW1hbmQoIGNtZCApOworCX0KKwltX2RvYy0+YWRkQ29tbWFuZCggbWFjcm9D bWQgKTsKIH0KIAogdm9pZCBLV1ZpZXc6OnRleHRVbmRlcmxpbmUoKQogewotICAgIEtXVGV4dEZy YW1lU2V0RWRpdCAqIGVkaXQgPSBjdXJyZW50VGV4dEVkaXQoKTsKLSAgICBpZiAoIGVkaXQgKQot ICAgICAgICBlZGl0LT5zZXRVbmRlcmxpbmUoYWN0aW9uRm9ybWF0VW5kZXJsaW5lLT5pc0NoZWNr ZWQoKSk7CisJUVB0ckxpc3Q8S29UZXh0Rm9ybWF0SW50ZXJmYWNlPiBsc3QgPSBhcHBsaWNhYmxl VGV4dEludGVyZmFjZXMoKTsKKwlRUHRyTGlzdEl0ZXJhdG9yPEtvVGV4dEZvcm1hdEludGVyZmFj ZT4gaXQoIGxzdCApOworCUtNYWNyb0NvbW1hbmQqIG1hY3JvQ21kID0gbmV3IEtNYWNyb0NvbW1h bmQoIGkxOG4oInVuZGVybGluZSB0ZXh0IGluIGZyYW1lKHMpIikgKTsKKyAgICBmb3IgKCA7IGl0 LmN1cnJlbnQoKSA7ICsraXQgKQorICAgIHsKKwkgICAgS0NvbW1hbmQgKmNtZCA9IGl0LmN1cnJl bnQoKS0+c2V0VW5kZXJsaW5lQ29tbWFuZCggYWN0aW9uRm9ybWF0VW5kZXJsaW5lLT5pc0NoZWNr ZWQoKSApOworCQlpZiAoIGNtZCApCisJCQltYWNyb0NtZC0+YWRkQ29tbWFuZCggY21kICk7CisJ fQorCW1fZG9jLT5hZGRDb21tYW5kKCBtYWNyb0NtZCApOwogfQogCiB2b2lkIEtXVmlldzo6dGV4 dFN0cmlrZU91dCgpCiB7Ci0gICAgS1dUZXh0RnJhbWVTZXRFZGl0ICogZWRpdCA9IGN1cnJlbnRU ZXh0RWRpdCgpOwotICAgIGlmICggZWRpdCApCi0gICAgICAgIGVkaXQtPnNldFN0cmlrZU91dChh Y3Rpb25Gb3JtYXRTdHJpa2VPdXQtPmlzQ2hlY2tlZCgpKTsKKwlRUHRyTGlzdDxLb1RleHRGb3Jt YXRJbnRlcmZhY2U+IGxzdCA9IGFwcGxpY2FibGVUZXh0SW50ZXJmYWNlcygpOworICAgIFFQdHJM aXN0SXRlcmF0b3I8S29UZXh0Rm9ybWF0SW50ZXJmYWNlPiBpdCggbHN0ICk7CisJS01hY3JvQ29t bWFuZCogbWFjcm9DbWQgPSBuZXcgS01hY3JvQ29tbWFuZCggaTE4bigic3RyaWtlIG91dCB0ZXh0 IGluIGZyYW1lKHMpIikgKTsKKyAgICBmb3IgKCA7IGl0LmN1cnJlbnQoKSA7ICsraXQgKQorCXsK KyAgICAgICAgS0NvbW1hbmQgKmNtZCA9IGl0LmN1cnJlbnQoKS0+c2V0U3RyaWtlT3V0Q29tbWFu ZCggYWN0aW9uRm9ybWF0U3RyaWtlT3V0LT5pc0NoZWNrZWQoKSApOworCQlpZiAoIGNtZCApCisJ CQltYWNyb0NtZC0+YWRkQ29tbWFuZCggY21kICk7CisJfQorCW1fZG9jLT5hZGRDb21tYW5kKCBt YWNyb0NtZCApOwogfQogCiB2b2lkIEtXVmlldzo6dGV4dENvbG9yKCkKIHsKLSAgICBLV1RleHRG cmFtZVNldEVkaXQgKiBlZGl0ID0gY3VycmVudFRleHRFZGl0KCk7Ci0gICAgaWYgKCBlZGl0ICkK LSAgICB7CiAvKiAgICAgICAgUUNvbG9yIGNvbG9yID0gZWRpdC0+dGV4dENvbG9yKCk7CiAgICAg ICAgIGlmICggS0NvbG9yRGlhbG9nOjpnZXRDb2xvciggY29sb3IgKSApIHsKICAgICAgICAgICAg IGFjdGlvbkZvcm1hdENvbG9yLT5zZXRDb2xvciggY29sb3IgKTsKICAgICAgICAgICAgIGVkaXQt PnNldFRleHRDb2xvciggY29sb3IgKTsKICAgICAgICAgfQogKi8KLSAgICAgICAgZWRpdC0+c2V0 VGV4dENvbG9yKCBhY3Rpb25Gb3JtYXRDb2xvci0+Y29sb3IoKSApOwotICAgIH0KKwlRUHRyTGlz dDxLb1RleHRGb3JtYXRJbnRlcmZhY2U+IGxzdCA9IGFwcGxpY2FibGVUZXh0SW50ZXJmYWNlcygp OworICAgIFFQdHJMaXN0SXRlcmF0b3I8S29UZXh0Rm9ybWF0SW50ZXJmYWNlPiBpdCggbHN0ICk7 CisgICAgS01hY3JvQ29tbWFuZCogbWFjcm9DbWQgPSBuZXcgS01hY3JvQ29tbWFuZCggaTE4bigi Q29sb3IgdGV4dCBpbiBmcmFtZShzKSIpICk7CisJZm9yICggOyBpdC5jdXJyZW50KCkgOyArK2l0 ICkKKwl7CisgICAgICAgIEtDb21tYW5kICpjbWQgPSBpdC5jdXJyZW50KCktPnNldFRleHRDb2xv ckNvbW1hbmQoIGFjdGlvbkZvcm1hdENvbG9yLT5jb2xvcigpICk7CisJCWlmICggY21kICkKKwkJ CW1hY3JvQ21kLT5hZGRDb21tYW5kKCBjbWQgKTsKKwl9CisJbV9kb2MtPmFkZENvbW1hbmQoIG1h Y3JvQ21kICk7CiB9CiAKIHZvaWQgS1dWaWV3Ojp0ZXh0QWxpZ25MZWZ0KCkKIHsKICAgICBpZiAo IGFjdGlvbkZvcm1hdEFsaWduTGVmdC0+aXNDaGVja2VkKCkgKQogICAgIHsKLSAgICAgICAgS1dU ZXh0RnJhbWVTZXRFZGl0ICogZWRpdCA9IGN1cnJlbnRUZXh0RWRpdCgpOwotICAgICAgICBpZiAo IGVkaXQgKQotICAgICAgICB7Ci0gICAgICAgICAgICBLQ29tbWFuZCAqY21kPWVkaXQtPnNldEFs aWduQ29tbWFuZChRdDo6QWxpZ25MZWZ0KTsKLSAgICAgICAgICAgIGlmKGNtZCkKLSAgICAgICAg ICAgICAgICBtX2RvYy0+YWRkQ29tbWFuZChjbWQpOwotICAgICAgICB9Ci0gICAgfSBlbHNlCisJ CVFQdHJMaXN0PEtvVGV4dEZvcm1hdEludGVyZmFjZT4gbHN0ID0gYXBwbGljYWJsZVRleHRJbnRl cmZhY2VzKCk7CisJCVFQdHJMaXN0SXRlcmF0b3I8S29UZXh0Rm9ybWF0SW50ZXJmYWNlPiBpdCgg bHN0ICk7CisJCUtNYWNyb0NvbW1hbmQqIG1hY3JvQ21kID0gbmV3IEtNYWNyb0NvbW1hbmQoIGkx OG4oIkxlZnQtYWxpZ24gdGV4dCBpbiBmcmFtZShzKSIpICk7CisJCWZvciAoIDsgaXQuY3VycmVu dCgpIDsgKytpdCApCisJCXsKKwkJCUtDb21tYW5kICpjbWQgPSBpdC5jdXJyZW50KCktPnNldEFs aWduQ29tbWFuZCggUXQ6OkFsaWduTGVmdCApOworCQkJaWYgKGNtZCkKKwkJCQltYWNyb0NtZC0+ YWRkQ29tbWFuZCggY21kICk7CisJCX0KKwkJbV9kb2MtPmFkZENvbW1hbmQoIG1hY3JvQ21kICk7 CisgICAgfQorCWVsc2UKICAgICAgICAgYWN0aW9uRm9ybWF0QWxpZ25MZWZ0LT5zZXRDaGVja2Vk KCB0cnVlICk7CiB9CiAKQEAgLTI4NDIsMTQgKzI5MzUsMTggQEAgdm9pZCBLV1ZpZXc6OnRleHRB bGlnbkNlbnRlcigpCiB7CiAgICAgaWYgKCBhY3Rpb25Gb3JtYXRBbGlnbkNlbnRlci0+aXNDaGVj a2VkKCkgKQogICAgIHsKLSAgICAgICAgS1dUZXh0RnJhbWVTZXRFZGl0ICogZWRpdCA9IGN1cnJl bnRUZXh0RWRpdCgpOwotICAgICAgICBpZiAoIGVkaXQgKQotICAgICAgICB7Ci0gICAgICAgICAg ICBLQ29tbWFuZCAqY21kPWVkaXQtPnNldEFsaWduQ29tbWFuZChRdDo6QWxpZ25DZW50ZXIpOwot ICAgICAgICAgICAgaWYoY21kKQotICAgICAgICAgICAgICAgIG1fZG9jLT5hZGRDb21tYW5kKGNt ZCk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UKKwkJUVB0ckxpc3Q8S29UZXh0Rm9ybWF0SW50ZXJm YWNlPiBsc3QgPSBhcHBsaWNhYmxlVGV4dEludGVyZmFjZXMoKTsKKwkJUVB0ckxpc3RJdGVyYXRv cjxLb1RleHRGb3JtYXRJbnRlcmZhY2U+IGl0KCBsc3QgKTsKKwkJS01hY3JvQ29tbWFuZCogbWFj cm9DbWQgPSBuZXcgS01hY3JvQ29tbWFuZCggaTE4bigiQ2VudGVyIHRleHQgaW4gZnJhbWUocyki KSApOworCQlmb3IgKCA7IGl0LmN1cnJlbnQoKSA7ICsraXQgKQorCQl7CisJCQlLQ29tbWFuZCAq Y21kID0gaXQuY3VycmVudCgpLT5zZXRBbGlnbkNvbW1hbmQoIFF0OjpBbGlnbkNlbnRlciApOwor CQkJaWYgKGNtZCkKKwkJCQltYWNyb0NtZC0+YWRkQ29tbWFuZCggY21kICk7CisJCX0KKwkJbV9k b2MtPmFkZENvbW1hbmQoIG1hY3JvQ21kICk7CisJfQorCWVsc2UKICAgICAgICAgYWN0aW9uRm9y bWF0QWxpZ25DZW50ZXItPnNldENoZWNrZWQoIHRydWUgKTsKIH0KIApAQCAtMjg1NywxNCArMjk1 NCwxOCBAQCB2b2lkIEtXVmlldzo6dGV4dEFsaWduUmlnaHQoKQogewogICAgIGlmICggYWN0aW9u Rm9ybWF0QWxpZ25SaWdodC0+aXNDaGVja2VkKCkgKQogICAgIHsKLSAgICAgICAgS1dUZXh0RnJh bWVTZXRFZGl0ICogZWRpdCA9IGN1cnJlbnRUZXh0RWRpdCgpOwotICAgICAgICBpZiAoIGVkaXQg KQotICAgICAgICB7Ci0gICAgICAgICAgICBLQ29tbWFuZCAqY21kPWVkaXQtPnNldEFsaWduQ29t bWFuZChRdDo6QWxpZ25SaWdodCk7Ci0gICAgICAgICAgICBpZihjbWQpCi0gICAgICAgICAgICAg ICAgbV9kb2MtPmFkZENvbW1hbmQoY21kKTsKLSAgICAgICAgfQotICAgIH0gZWxzZQorCQlRUHRy TGlzdDxLb1RleHRGb3JtYXRJbnRlcmZhY2U+IGxzdCA9IGFwcGxpY2FibGVUZXh0SW50ZXJmYWNl cygpOworCQlRUHRyTGlzdEl0ZXJhdG9yPEtvVGV4dEZvcm1hdEludGVyZmFjZT4gaXQoIGxzdCAp OworCQlLTWFjcm9Db21tYW5kKiBtYWNyb0NtZCA9IG5ldyBLTWFjcm9Db21tYW5kKCBpMThuKCJS aWdodC1hbGlnbiB0ZXh0IGluIGZyYW1lKHMpIikgKTsKKwkJZm9yICggOyBpdC5jdXJyZW50KCkg OyArK2l0ICkKKwkJeworCQkJS0NvbW1hbmQgKmNtZCA9IGl0LmN1cnJlbnQoKS0+c2V0QWxpZ25D b21tYW5kKCBRdDo6QWxpZ25SaWdodCApOworCQkJaWYgKCBjbWQgKQorCQkJCW1hY3JvQ21kLT5h ZGRDb21tYW5kKCBjbWQgKTsKKwkJfQorCQltX2RvYy0+YWRkQ29tbWFuZCggbWFjcm9DbWQgKTsK KyAgICB9CisJZWxzZQogICAgICAgICBhY3Rpb25Gb3JtYXRBbGlnblJpZ2h0LT5zZXRDaGVja2Vk KCB0cnVlICk7CiB9CiAKQEAgLTI4NzIsMTQgKzI5NzMsMTggQEAgdm9pZCBLV1ZpZXc6OnRleHRB bGlnbkJsb2NrKCkKIHsKICAgICBpZiAoIGFjdGlvbkZvcm1hdEFsaWduQmxvY2stPmlzQ2hlY2tl ZCgpICkKICAgICB7Ci0gICAgICAgIEtXVGV4dEZyYW1lU2V0RWRpdCAqIGVkaXQgPSBjdXJyZW50 VGV4dEVkaXQoKTsKLSAgICAgICAgaWYgKCBlZGl0ICkKLSAgICAgICAgewotICAgICAgICAgICAg S0NvbW1hbmQgKmNtZD1lZGl0LT5zZXRBbGlnbkNvbW1hbmQoUXQ6OkFsaWduSnVzdGlmeSk7Ci0g ICAgICAgICAgICBpZihjbWQpCi0gICAgICAgICAgICAgICAgbV9kb2MtPmFkZENvbW1hbmQoY21k KTsKLSAgICAgICAgfQotICAgIH0gZWxzZQorCQlRUHRyTGlzdDxLb1RleHRGb3JtYXRJbnRlcmZh Y2U+IGxzdCA9IGFwcGxpY2FibGVUZXh0SW50ZXJmYWNlcygpOworCQlRUHRyTGlzdEl0ZXJhdG9y PEtvVGV4dEZvcm1hdEludGVyZmFjZT4gaXQoIGxzdCApOworCQlLTWFjcm9Db21tYW5kKiBtYWNy b0NtZCA9IG5ldyBLTWFjcm9Db21tYW5kKCBpMThuKCJKdXN0aWZ5IHRleHQgaW4gZnJhbWUocyki KSApOworCQlmb3IgKCA7IGl0LmN1cnJlbnQoKSA7ICsraXQgKQorCQl7CisJCQlLQ29tbWFuZCAq Y21kID0gaXQuY3VycmVudCgpLT5zZXRBbGlnbkNvbW1hbmQoIFF0OjpBbGlnbkp1c3RpZnkgKTsK KwkJCWlmICggY21kICkKKwkJCQltYWNyb0NtZC0+YWRkQ29tbWFuZCggY21kICk7CisJCX0KKwkJ bV9kb2MtPmFkZENvbW1hbmQoIG1hY3JvQ21kICk7CisgICAgfQorCWVsc2UKICAgICAgICAgYWN0 aW9uRm9ybWF0QWxpZ25CbG9jay0+c2V0Q2hlY2tlZCggdHJ1ZSApOwogfQogCkBAIC0yOTQ0LDkg KzMwNDksOSBAQCB2b2lkIEtXVmlldzo6ZWRpdFBlcnNvbmFsRXhwcigpCiB2b2lkIEtXVmlldzo6 dGV4dEluY3JlYXNlSW5kZW50KCkKIHsKICAgICBLV1RleHRGcmFtZVNldEVkaXQgKiBlZGl0ID0g Y3VycmVudFRleHRFZGl0KCk7Ci0gICAgaWYgKCBlZGl0ICkKLSAgICB7Ci0gICAgICAgIGRvdWJs ZSBsZWZ0TWFyZ2luID0gZWRpdC0+Y3VycmVudFBhcmFnTGF5b3V0KCkubWFyZ2luc1tRU3R5bGVT aGVldEl0ZW06Ok1hcmdpbkxlZnRdOworCWlmICggZWRpdCApCisJeworICAgICAgIGRvdWJsZSBs ZWZ0TWFyZ2luID0gZWRpdC0+Y3VycmVudFBhcmFnTGF5b3V0KCkubWFyZ2luc1tRU3R5bGVTaGVl dEl0ZW06Ok1hcmdpbkxlZnRdOwogICAgICAgICBkb3VibGUgaW5kZW50ID0gbV9kb2MtPmdldElu ZGVudFZhbHVlKCk7CiAgICAgICAgIGRvdWJsZSBuZXdWYWwgPSBsZWZ0TWFyZ2luICsgaW5kZW50 OwogICAgICAgICAvLyBUZXN0IGNvbW1lbnRlZCBvdXQuIFRoaXMgYnJlYWtzIHdpdGggdGhlIERU UCBjYXNlLi4uIFRoZSB1c2VyIGNhbiBwdXQKQEAgLTI5NTcsMjcgKzMwNjIsMjYgQEAgdm9pZCBL V1ZpZXc6OnRleHRJbmNyZWFzZUluZGVudCgpCiAgICAgICAgICAgICBpZihjbWQpCiAgICAgICAg ICAgICAgICAgbV9kb2MtPmFkZENvbW1hbmQoY21kKTsKICAgICAgICAgfQotICAgIH0KKwl9CiB9 CiAKIHZvaWQgS1dWaWV3Ojp0ZXh0RGVjcmVhc2VJbmRlbnQoKQogewogICAgIEtXVGV4dEZyYW1l U2V0RWRpdCAqIGVkaXQgPSBjdXJyZW50VGV4dEVkaXQoKTsKICAgICBpZiAoIGVkaXQgKQotICAg IHsKLSAgICAgICAgZG91YmxlIGxlZnRNYXJnaW4gPSBlZGl0LT5jdXJyZW50UGFyYWdMYXlvdXQo KS5tYXJnaW5zW1FTdHlsZVNoZWV0SXRlbTo6TWFyZ2luTGVmdF07Ci0gICAgICAgIGlmICggbGVm dE1hcmdpbiA+IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkb3VibGUgaW5kZW50ID0gbV9k b2MtPmdldEluZGVudFZhbHVlKCk7Ci0gICAgICAgICAgICBkb3VibGUgbmV3VmFsID0gbGVmdE1h cmdpbiAtIGluZGVudDsKLSAgICAgICAgICAgIEtDb21tYW5kICpjbWQ9ZWRpdC0+c2V0TWFyZ2lu Q29tbWFuZCggUVN0eWxlU2hlZXRJdGVtOjpNYXJnaW5MZWZ0LCBRTUFYKCBuZXdWYWwsIDAgKSAp OwotICAgICAgICAgICAgaWYoY21kKQotICAgICAgICAgICAgICAgIG1fZG9jLT5hZGRDb21tYW5k KGNtZCk7Ci0gICAgICAgIH0KLSAgICB9CisJeworCQlkb3VibGUgbGVmdE1hcmdpbiA9IGVkaXQt PmN1cnJlbnRQYXJhZ0xheW91dCgpLm1hcmdpbnNbUVN0eWxlU2hlZXRJdGVtOjpNYXJnaW5MZWZ0 XTsKKwkJaWYgKCBsZWZ0TWFyZ2luID4gMCApCisJCXsKKwkJCWRvdWJsZSBpbmRlbnQgPSBtX2Rv Yy0+Z2V0SW5kZW50VmFsdWUoKTsKKwkJCWRvdWJsZSBuZXdWYWwgPSBsZWZ0TWFyZ2luIC0gaW5k ZW50OworCQkJS0NvbW1hbmQgKmNtZD1lZGl0LT5zZXRNYXJnaW5Db21tYW5kKCBRU3R5bGVTaGVl dEl0ZW06Ok1hcmdpbkxlZnQsIFFNQVgoIG5ld1ZhbCwgMCApICk7CisJCQlpZihjbWQpCisJCQkJ bV9kb2MtPmFkZENvbW1hbmQoY21kKTsKKwkJfQorCX0KIH0KIAotCiB2b2lkIEtXVmlldzo6dGV4 dERlZmF1bHRGb3JtYXQoKQogewogICAgIEtXVGV4dEZyYW1lU2V0RWRpdCAqIGVkaXQgPSBjdXJy ZW50VGV4dEVkaXQoKTsKQEAgLTM1MjAsMTkgKzM2MjQsMTkgQEAgdm9pZCBLV1ZpZXc6OnNsb3RG cmFtZVNldEVkaXRDaGFuZ2VkKCkKICAgICBib29sIHN0YXRlID0gKGVkaXQgIT0gMEwpICYmIHJ3 OwogICAgIGFjdGlvbkVkaXRTZWxlY3RBbGwtPnNldEVuYWJsZWQoc3RhdGUpOwogICAgIGFjdGlv bkZvcm1hdERlZmF1bHQtPnNldEVuYWJsZWQoIHN0YXRlKTsKLSAgICBhY3Rpb25Gb3JtYXRGb250 LT5zZXRFbmFibGVkKHN0YXRlKTsKLSAgICBhY3Rpb25Gb3JtYXRGb250U2l6ZS0+c2V0RW5hYmxl ZChzdGF0ZSk7Ci0gICAgYWN0aW9uRm9ybWF0Rm9udEZhbWlseS0+c2V0RW5hYmxlZChzdGF0ZSk7 Ci0gICAgYWN0aW9uRm9ybWF0U3R5bGUtPnNldEVuYWJsZWQoc3RhdGUpOwotICAgIGFjdGlvbkZv cm1hdEJvbGQtPnNldEVuYWJsZWQoc3RhdGUpOwotICAgIGFjdGlvbkZvcm1hdEl0YWxpYy0+c2V0 RW5hYmxlZChzdGF0ZSk7Ci0gICAgYWN0aW9uRm9ybWF0VW5kZXJsaW5lLT5zZXRFbmFibGVkKHN0 YXRlKTsKLSAgICBhY3Rpb25Gb3JtYXRTdHJpa2VPdXQtPnNldEVuYWJsZWQoc3RhdGUpOwotICAg IGFjdGlvbkZvcm1hdENvbG9yLT5zZXRFbmFibGVkKHN0YXRlKTsKLSAgICBhY3Rpb25Gb3JtYXRB bGlnbkxlZnQtPnNldEVuYWJsZWQoc3RhdGUpOwotICAgIGFjdGlvbkZvcm1hdEFsaWduQ2VudGVy LT5zZXRFbmFibGVkKHN0YXRlKTsKLSAgICBhY3Rpb25Gb3JtYXRBbGlnblJpZ2h0LT5zZXRFbmFi bGVkKHN0YXRlKTsKLSAgICBhY3Rpb25Gb3JtYXRBbGlnbkJsb2NrLT5zZXRFbmFibGVkKHN0YXRl KTsKKyAgICBhY3Rpb25Gb3JtYXRGb250LT5zZXRFbmFibGVkKCBydyApOworICAgIGFjdGlvbkZv cm1hdEZvbnRTaXplLT5zZXRFbmFibGVkKCBydyApOworICAgIGFjdGlvbkZvcm1hdEZvbnRGYW1p bHktPnNldEVuYWJsZWQoIHJ3ICk7CisgICAgYWN0aW9uRm9ybWF0U3R5bGUtPnNldEVuYWJsZWQo IHJ3ICk7CisgICAgYWN0aW9uRm9ybWF0Qm9sZC0+c2V0RW5hYmxlZCggcncgKTsKKyAgICBhY3Rp b25Gb3JtYXRJdGFsaWMtPnNldEVuYWJsZWQoIHJ3ICk7CisgICAgYWN0aW9uRm9ybWF0VW5kZXJs aW5lLT5zZXRFbmFibGVkKCBydyApOworICAgIGFjdGlvbkZvcm1hdFN0cmlrZU91dC0+c2V0RW5h YmxlZCggcncgKTsKKyAgICBhY3Rpb25Gb3JtYXRDb2xvci0+c2V0RW5hYmxlZCggcncgKTsKKyAg ICBhY3Rpb25Gb3JtYXRBbGlnbkxlZnQtPnNldEVuYWJsZWQoIHJ3ICk7CisgICAgYWN0aW9uRm9y bWF0QWxpZ25DZW50ZXItPnNldEVuYWJsZWQoIHJ3ICk7CisgICAgYWN0aW9uRm9ybWF0QWxpZ25S aWdodC0+c2V0RW5hYmxlZCggcncgKTsKKyAgICBhY3Rpb25Gb3JtYXRBbGlnbkJsb2NrLT5zZXRF bmFibGVkKCBydyApOwogICAgIGFjdGlvbkZvcm1hdEluY3JlYXNlSW5kZW50LT5zZXRFbmFibGVk KHN0YXRlKTsKICAgICBhY3Rpb25DaGFuZ2VDYXNlLT5zZXRFbmFibGVkKCBoYXNTZWxlY3Rpb24g JiYgc3RhdGUpOwogICAgIGFjdGlvbkluc2VydExpbmstPnNldEVuYWJsZWQoc3RhdGUpOwo= --------------Boundary-00=_FT2BVTNGDI13GGG9QO8Y Content-Type: text/x-diff; charset="us-ascii"; name="kotextobject.cc.patch.3" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="kotextobject.cc.patch.3" SW5kZXg6IGtvdGV4dG9iamVjdC5jYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvaG9tZS9rZGUva29m ZmljZS9saWIva290ZXh0L2tvdGV4dG9iamVjdC5jYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4z MgpkaWZmIC11IC0zIC1wIC1yMS4zMiBrb3RleHRvYmplY3QuY2MKLS0tIGtvdGV4dG9iamVjdC5j YwkyMDAxLzEyLzIwIDIzOjM1OjEwCTEuMzIKKysrIGtvdGV4dG9iamVjdC5jYwkyMDAyLzAxLzIx IDIwOjQxOjAxCkBAIC00MSw3ICs0MSw3IEBAIHN0cnVjdCBLb1RleHRPYmplY3Q6OktvVGV4dE9i amVjdFByaXZhdGUKIAogS29UZXh0T2JqZWN0OjpLb1RleHRPYmplY3QoIEtvWm9vbUhhbmRsZXIg KnpoLCBjb25zdCBRRm9udCYgZGVmYXVsdEZvbnQsIEtvU3R5bGUqIGRlZmF1bHRTdHlsZSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRT2JqZWN0KiBwYXJlbnQsIGNvbnN0IGNoYXIgKm5h bWUgKQotICAgIDogUU9iamVjdCggcGFyZW50LCBuYW1lICksIG1fZGVmYXVsdFN0eWxlKCBkZWZh dWx0U3R5bGUgKSwgdW5kb1JlZG9JbmZvKCB0aGlzICkKKyAgICA6IEtvVGV4dEZvcm1hdEludGVy ZmFjZSggcGFyZW50LCBuYW1lICksIG1fZGVmYXVsdFN0eWxlKCBkZWZhdWx0U3R5bGUgKSwgdW5k b1JlZG9JbmZvKCB0aGlzICkKIHsKICAgICB0ZXh0ZG9jID0gbmV3IEtvVGV4dERvY3VtZW50KCB6 aCwgbmV3IEtvVGV4dEZvcm1hdENvbGxlY3Rpb24oIGRlZmF1bHRGb250ICkgKTsKICAgICBpbml0 KCk7CkBAIC00OSw3ICs0OSw3IEBAIEtvVGV4dE9iamVjdDo6S29UZXh0T2JqZWN0KCBLb1pvb21I YW5kbGUKIAogS29UZXh0T2JqZWN0OjpLb1RleHRPYmplY3QoIEtvVGV4dERvY3VtZW50KiBfdGV4 dGRvYywgS29TdHlsZSogZGVmYXVsdFN0eWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg IFFPYmplY3QqIHBhcmVudCwgY29uc3QgY2hhciAqbmFtZSApCi0gOiBRT2JqZWN0KCBwYXJlbnQs IG5hbWUgKSwgbV9kZWZhdWx0U3R5bGUoIGRlZmF1bHRTdHlsZSApLCB1bmRvUmVkb0luZm8oIHRo aXMgKQorIDogS29UZXh0Rm9ybWF0SW50ZXJmYWNlKCBwYXJlbnQsIG5hbWUgKSwgbV9kZWZhdWx0 U3R5bGUoIGRlZmF1bHRTdHlsZSApLCB1bmRvUmVkb0luZm8oIHRoaXMgKQogewogICAgIHRleHRk b2MgPSBfdGV4dGRvYzsKICAgICBpbml0KCk7CkBAIC01NjYsMTAgKzU2Niw5IEBAIHZvaWQgS29U ZXh0T2JqZWN0OjpwYXN0ZVRleHQoIFFUZXh0Q3Vyc28KIH0KIAogCi12b2lkIEtvVGV4dE9iamVj dDo6YXBwbHlTdHlsZSggUVRleHRDdXJzb3IgKiBjdXJzb3IsIGNvbnN0IEtvU3R5bGUgKiBuZXdT dHlsZSwKK0tDb21tYW5kICpLb1RleHRPYmplY3Q6OmFwcGx5U3R5bGUoIFFUZXh0Q3Vyc29yICog Y3Vyc29yLCBjb25zdCBLb1N0eWxlICogbmV3U3R5bGUsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50IHNlbGVjdGlvbklkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGludCBwYXJhZ0xheW91dEZsYWdzLCBpbnQgZm9ybWF0RmxhZ3MsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYm9vbCBjcmVhdGVVbmRvUmVkbywgYm9vbCBpbnRlcmFjdGl2ZSApCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBhcmFnTGF5b3V0RmxhZ3MsIGludCBm b3JtYXRGbGFncywgYm9vbCBjcmVhdGVVbmRvUmVkbywgYm9vbCBpbnRlcmFjdGl2ZSwgYm9vbCBh cHBseUl0ICkKIHsKICAgICBRVGV4dERvY3VtZW50ICogdGV4dGRvYyA9IHRleHREb2N1bWVudCgp OwogICAgIGlmICggaW50ZXJhY3RpdmUgKQpAQCAtNjA0LDcgKzYwMyw3IEBAIHZvaWQgS29UZXh0 T2JqZWN0OjphcHBseVN0eWxlKCBRVGV4dEN1cnMKICAgICAgICAgICAgIFFUZXh0Q29tbWFuZCAq IGNtZCA9IG5ldyBLb1RleHRQYXJhZ0NvbW1hbmQoIHRleHRkb2MsIHVuZG9SZWRvSW5mby5pZCwg dW5kb1JlZG9JbmZvLmVpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuZG9SZWRvSW5mby5vbGRQYXJhZ0xheW91dHMsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdTdHls ZS0+cGFyYWdMYXlvdXQoKSwgcGFyYWdMYXlvdXRGbGFncyApOwotICAgICAgICAgICAgdGV4dGRv Yy0+YWRkQ29tbWFuZCggY21kICk7CisJCQl0ZXh0ZG9jLT5hZGRDb21tYW5kKCBjbWQgKTsKICAg ICAgICAgICAgIG1hY3JvQ21kLT5hZGRDb21tYW5kKCBuZXcgS29UZXh0Q29tbWFuZCggdGhpcywg LypjbWQsICovUVN0cmluZzo6bnVsbCApICk7CiAgICAgICAgIH0KICAgICB9CkBAIC02NTEsMTMg KzY1MCwxMyBAQCB2b2lkIEtvVGV4dE9iamVjdDo6YXBwbHlTdHlsZSggUVRleHRDdXJzCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0 UGFyYWctPnBhcmFnSWQoKSwgYzIuaW5kZXgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZG9SZWRvSW5mby50ZXh0LnJhd0RhdGEo KSwgbmV3Rm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZm9ybWF0RmxhZ3MgKTsKLSAgICAgICAgICAgIHRleHRkb2MtPmFkZENv bW1hbmQoIGNtZCApOworCQkJdGV4dGRvYy0+YWRkQ29tbWFuZCggY21kICk7CiAgICAgICAgICAg ICBtYWNyb0NtZC0+YWRkQ29tbWFuZCggbmV3IEtvVGV4dENvbW1hbmQoIHRoaXMsIC8qY21kLCAq L1FTdHJpbmc6Om51bGwgKSApOwogCiAgICAgICAgICAgICAvLyBzdWItY29tbWFuZCBmb3IgJzMn IChwYXJhZ0Zvcm1hdCkKICAgICAgICAgICAgIGNtZCA9IG5ldyBLb1BhcmFnRm9ybWF0Q29tbWFu ZCggdGV4dGRvYywgZmlyc3RQYXJhZy0+cGFyYWdJZCgpLCBsYXN0UGFyYWctPnBhcmFnSWQoKSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0Rm9ybWF0cywg bmV3Rm9ybWF0ICk7Ci0gICAgICAgICAgICB0ZXh0ZG9jLT5hZGRDb21tYW5kKCBjbWQgKTsKKwkJ CXRleHRkb2MtPmFkZENvbW1hbmQoIGNtZCApOwogICAgICAgICAgICAgbWFjcm9DbWQtPmFkZENv bW1hbmQoIG5ldyBLb1RleHRDb21tYW5kKCB0aGlzLCAvKmNtZCwgKi9RU3RyaW5nOjpudWxsICkg KTsKICAgICAgICAgfQogCkBAIC02ODUsMTIgKzY4NCwxNCBAQCB2b2lkIEtvVGV4dE9iamVjdDo6 YXBwbHlTdHlsZSggUVRleHRDdXJzCiAgICAgICAgIGZvcm1hdE1vcmUoKTsKICAgICAgICAgZW1p dCByZXBhaW50Q2hhbmdlZCggdGhpcyApOwogICAgICAgICBlbWl0IHVwZGF0ZVVJKCB0cnVlICk7 Ci0gICAgICAgIGlmICggY3JlYXRlVW5kb1JlZG8gKQotICAgICAgICAgICAgZW1pdCBuZXdDb21t YW5kKCBtYWNyb0NtZCApOworICAgICAgICBpZiAoIGNyZWF0ZVVuZG9SZWRvICYmIGFwcGx5SXQg KQorCQkJZW1pdCBuZXdDb21tYW5kKCBtYWNyb0NtZCApOwogICAgICAgICBlbWl0IHNob3dDdXJz b3IoKTsKICAgICB9CiAKICAgICB1bmRvUmVkb0luZm8uY2xlYXIoKTsKKworCXJldHVybiBtYWNy b0NtZDsKIH0KIAogdm9pZCBLb1RleHRPYmplY3Q6OmFwcGx5U3R5bGVDaGFuZ2UoIEtvU3R5bGUg KiBjaGFuZ2VkU3R5bGUsIGludCBwYXJhZ0xheW91dENoYW5nZWQsIGludCBmb3JtYXRDaGFuZ2Vk ICkKQEAgLTc3MCw2ICs3NzEsMTQgQEAgdm9pZCBLb1RleHRPYmplY3Q6OmFwcGx5U3R5bGVDaGFu Z2UoIEtvUwogICAgIGVtaXQgdXBkYXRlVUkoIHRydWUgKTsKIH0KIAorS0NvbW1hbmQgKktvVGV4 dE9iamVjdDo6c2V0Rm9ybWF0Q29tbWFuZCggS29UZXh0Rm9ybWF0ICogJiBjdXJyZW50Rm9ybWF0 LCBLb1RleHRGb3JtYXQgKmZvcm1hdCwgaW50IGZsYWdzLCBib29sIHpvb21Gb250ICkKK3sKKwl0 ZXh0RG9jdW1lbnQoKS0+c2VsZWN0QWxsKCBRVGV4dERvY3VtZW50OjpUZW1wICk7CisJS0NvbW1h bmQgKmNtZCA9IHNldEZvcm1hdENvbW1hbmQoIE5VTEwsIGN1cnJlbnRGb3JtYXQsIGZvcm1hdCwg ZmxhZ3MsIHpvb21Gb250LCBRVGV4dERvY3VtZW50OjpUZW1wICk7CisJdGV4dERvY3VtZW50KCkt PnJlbW92ZVNlbGVjdGlvbiggUVRleHREb2N1bWVudDo6VGVtcCApOworCXJldHVybiBjbWQ7Cit9 CisKIEtDb21tYW5kICogS29UZXh0T2JqZWN0OjpzZXRGb3JtYXRDb21tYW5kKCBRVGV4dEN1cnNv ciAqIGN1cnNvciwgS29UZXh0Rm9ybWF0ICogJiBjdXJyZW50Rm9ybWF0LCBLb1RleHRGb3JtYXQg KmZvcm1hdCwgaW50IGZsYWdzLCBib29sIHpvb21Gb250LCBpbnQgc2VsZWN0aW9uSWQgKQogewog ICAgIEtDb21tYW5kICpyZXQgPSAwOwpAQCAtODE3LDcgKzgyNiw3IEBAIEtDb21tYW5kICogS29U ZXh0T2JqZWN0OjpzZXRGb3JtYXRDb21tYW4KICAgICAgICAgS29UZXh0Rm9ybWF0Q29tbWFuZCAq Y21kID0gbmV3IEtvVGV4dEZvcm1hdENvbW1hbmQoCiAgICAgICAgICAgICB0ZXh0ZG9jLCBpZCwg aW5kZXgsIGVpZCwgZWluZGV4LCB1bmRvUmVkb0luZm8udGV4dC5yYXdEYXRhKCksCiAgICAgICAg ICAgICBmb3JtYXQsIGZsYWdzICk7Ci0gICAgICAgIHRleHRkb2MtPmFkZENvbW1hbmQoIGNtZCAp OworCQl0ZXh0ZG9jLT5hZGRDb21tYW5kKCBjbWQgKTsKICAgICAgICAgcmV0ID0gbmV3IEtvVGV4 dENvbW1hbmQoIHRoaXMsIC8qY21kLCAqL2kxOG4oIkZvcm1hdCB0ZXh0IikgKTsKICAgICAgICAg dW5kb1JlZG9JbmZvLmNsZWFyKCk7CiAgICAgICAgIHNldExhc3RGb3JtYXR0ZWRQYXJhZyggYzEu cGFyYWcoKSApOwpAQCAtODUxLDcgKzg2MCw3IEBAIHZvaWQgS29UZXh0T2JqZWN0OjpzZXRGb3Jt YXQoIFFUZXh0Q3Vyc28KICAgICAgICAgZW1pdCBuZXdDb21tYW5kKCBjbWQgKTsKIH0KIAotdm9p ZCBLb1RleHRPYmplY3Q6OmVtaXROZXdDb21tYW5kKEtDb21tYW5kICpjbWQpCit2b2lkIEtvVGV4 dEZvcm1hdEludGVyZmFjZTo6ZW1pdE5ld0NvbW1hbmQoS0NvbW1hbmQgKmNtZCkKIHsKICAgICBp ZihjbWQpCiAgICAgICAgIGVtaXQgbmV3Q29tbWFuZCggY21kICk7CkBAIC0xNjQwLDcgKzE2NDks NyBAQCBjb25zdCBLb1BhcmFnTGF5b3V0ICogS29UZXh0T2JqZWN0OjpjdXJyCiAgICAgcmV0dXJu ICYocGFyYWctPnBhcmFnTGF5b3V0KCkpOwogfQogCi12b2lkIEtvVGV4dE9iamVjdDo6c2V0UGFy YWdMYXlvdXRGb3JtYXQoIEtvUGFyYWdMYXlvdXQgKm5ld0xheW91dCxpbnQgZmxhZ3MsaW50IG1h cmdpbkluZGV4KQorS0NvbW1hbmQgKktvVGV4dE9iamVjdDo6c2V0UGFyYWdMYXlvdXRGb3JtYXRD b21tYW5kKCBLb1BhcmFnTGF5b3V0ICpuZXdMYXlvdXQsaW50IGZsYWdzLGludCBtYXJnaW5JbmRl eCkKIHsKICAgICBRVGV4dERvY3VtZW50ICp0ZXh0ZG9jID0gdGV4dERvY3VtZW50KCk7CiAgICAg dGV4dGRvYy0+c2VsZWN0QWxsKCBRVGV4dERvY3VtZW50OjpUZW1wICk7CkBAIC0xNjY5LDggKzE2 NzgsNyBAQCB2b2lkIEtvVGV4dE9iamVjdDo6c2V0UGFyYWdMYXlvdXRGb3JtYXQoCiAgICAgICAg IGJyZWFrOwogICAgIH0KICAgICB0ZXh0ZG9jLT5yZW1vdmVTZWxlY3Rpb24oIFFUZXh0RG9jdW1l bnQ6OlRlbXAgKTsKLSAgICBpZiAoY21kKQotICAgICAgICBlbWl0IG5ld0NvbW1hbmQoIGNtZCAp OworCXJldHVybiBjbWQ7CiB9CiAKIHZvaWQgS29UZXh0T2JqZWN0OjpzZXRGb3JtYXQoIEtvVGV4 dEZvcm1hdCAqIG5ld0Zvcm1hdCwgaW50IGZsYWdzLCBib29sIHpvb21Gb250ICkKQEAgLTE3MDIs NzMgKzE3MTAsMTQ2IEBAIHZvaWQgS29UZXh0T2JqZWN0OjpwcmludFJURGVidWcoaW50IGluZm8K ICAgICAgICAgcC0+cHJpbnRSVERlYnVnKCBpbmZvICk7CiAgICAgfQogICAgIGlmICggaW5mbyA9 PSAxICkKLSAgICAgICAgdGV4dGRvYy0+Zm9ybWF0Q29sbGVjdGlvbigpLT5kZWJ1ZygpOyAKKyAg ICAgICAgdGV4dGRvYy0+Zm9ybWF0Q29sbGVjdGlvbigpLT5kZWJ1ZygpOwogfQogI2VuZGlmCiAK LXZvaWQgS29UZXh0Rm9ybWF0SW50ZXJmYWNlOjpzZXRCb2xkKGJvb2wgb24pIHsKLSAgICBLb1Rl eHRGb3JtYXQgZm9ybWF0KCAqY3VycmVudEZvcm1hdCgpICk7Ci0gICAgZm9ybWF0LnNldEJvbGQo IG9uICk7Ci0gICAgc2V0Rm9ybWF0KCAmZm9ybWF0LCBRVGV4dEZvcm1hdDo6Qm9sZCApOwordm9p ZCBLb1RleHRGb3JtYXRJbnRlcmZhY2U6OnNldEZvcm1hdCggS29UZXh0Rm9ybWF0ICogbmV3Rm9y bWF0LCBpbnQgZmxhZ3MsIGJvb2wgem9vbUZvbnQgKQoreworCUtvVGV4dEZvcm1hdCAqZm9ybWF0 ID0gY3VycmVudEZvcm1hdCgpOworCUtDb21tYW5kICpjbWQgPSBzZXRGb3JtYXRDb21tYW5kKGZv cm1hdCwgbmV3Rm9ybWF0LCBmbGFncywgem9vbUZvbnQpOworCWVtaXROZXdDb21tYW5kKCBjbWQg KTsKIH0KIAotdm9pZCBLb1RleHRGb3JtYXRJbnRlcmZhY2U6OnNldEl0YWxpYyggYm9vbCBvbiAp IHsKLSAgICBLb1RleHRGb3JtYXQgZm9ybWF0KCAqY3VycmVudEZvcm1hdCgpICk7Cit2b2lkIEtv VGV4dEZvcm1hdEludGVyZmFjZTo6c2V0Qm9sZChib29sIG9uKQoreworCUtDb21tYW5kICpjbWQg PSBzZXRCb2xkQ29tbWFuZCggb24gKTsKKwllbWl0TmV3Q29tbWFuZCggY21kICk7Cit9CisKK0tD b21tYW5kICpLb1RleHRGb3JtYXRJbnRlcmZhY2U6OnNldEJvbGRDb21tYW5kKGJvb2wgb24pCit7 CisJS29UZXh0Rm9ybWF0IGZvcm1hdCggKmN1cnJlbnRGb3JtYXQoKSApOworCWZvcm1hdC5zZXRC b2xkKCBvbiApOworCUtvVGV4dEZvcm1hdCAqY3VycmVudCA9IGN1cnJlbnRGb3JtYXQoKTsKKwly ZXR1cm4gc2V0Rm9ybWF0Q29tbWFuZCggY3VycmVudCwgJmZvcm1hdCwgUVRleHRGb3JtYXQ6OkJv bGQgKTsKK30KKwordm9pZCBLb1RleHRGb3JtYXRJbnRlcmZhY2U6OnNldEl0YWxpYyggYm9vbCBv biApCit7CisJS0NvbW1hbmQgKmNtZCA9IHNldEl0YWxpY0NvbW1hbmQoIG9uICk7CisJZW1pdE5l d0NvbW1hbmQoIGNtZCApOworfQorCitLQ29tbWFuZCAqS29UZXh0Rm9ybWF0SW50ZXJmYWNlOjpz ZXRJdGFsaWNDb21tYW5kKCBib29sIG9uKQoreworCUtvVGV4dEZvcm1hdCBmb3JtYXQoICpjdXJy ZW50Rm9ybWF0KCkgKTsKICAgICBmb3JtYXQuc2V0SXRhbGljKCBvbiApOwotICAgIHNldEZvcm1h dCggJmZvcm1hdCwgUVRleHRGb3JtYXQ6Okl0YWxpYyApOworCUtvVGV4dEZvcm1hdCAqY3VycmVu dCA9IGN1cnJlbnRGb3JtYXQoKTsKKyAgICByZXR1cm4gc2V0Rm9ybWF0Q29tbWFuZCggY3VycmVu dCwgJmZvcm1hdCwgUVRleHRGb3JtYXQ6Okl0YWxpYyApOwogfQogCi12b2lkIEtvVGV4dEZvcm1h dEludGVyZmFjZTo6c2V0VW5kZXJsaW5lKCBib29sIG9uICkgewordm9pZCBLb1RleHRGb3JtYXRJ bnRlcmZhY2U6OnNldFVuZGVybGluZSggYm9vbCBvbiApCit7CisJS0NvbW1hbmQgKmNtZCA9IHNl dFVuZGVybGluZUNvbW1hbmQoIG9uICk7CisJZW1pdE5ld0NvbW1hbmQgKCBjbWQgKTsKK30KKwor S0NvbW1hbmQgKktvVGV4dEZvcm1hdEludGVyZmFjZTo6c2V0VW5kZXJsaW5lQ29tbWFuZCggYm9v bCBvbiApCit7CiAgICAgS29UZXh0Rm9ybWF0IGZvcm1hdCggKmN1cnJlbnRGb3JtYXQoKSApOwog ICAgIGZvcm1hdC5zZXRVbmRlcmxpbmUoIG9uICk7Ci0gICAgc2V0Rm9ybWF0KCAmZm9ybWF0LCBR VGV4dEZvcm1hdDo6VW5kZXJsaW5lICk7CisgICAgS29UZXh0Rm9ybWF0ICpjdXJyZW50ID0gY3Vy cmVudEZvcm1hdCgpOworCXJldHVybiBzZXRGb3JtYXRDb21tYW5kKCBjdXJyZW50LCAmZm9ybWF0 LCBRVGV4dEZvcm1hdDo6VW5kZXJsaW5lICk7Cit9CisKK3ZvaWQgS29UZXh0Rm9ybWF0SW50ZXJm YWNlOjpzZXRTdHJpa2VPdXQoIGJvb2wgb24gKQoreworCUtDb21tYW5kICpjbWQgPSBzZXRTdHJp a2VPdXRDb21tYW5kKCBvbiApOworCWVtaXROZXdDb21tYW5kKCBjbWQgKTsKIH0KIAotdm9pZCBL b1RleHRGb3JtYXRJbnRlcmZhY2U6OnNldFN0cmlrZU91dCggYm9vbCBvbiApIHsKK0tDb21tYW5k ICpLb1RleHRGb3JtYXRJbnRlcmZhY2U6OnNldFN0cmlrZU91dENvbW1hbmQoIGJvb2wgb24gKQor ewogICAgIEtvVGV4dEZvcm1hdCBmb3JtYXQoICpjdXJyZW50Rm9ybWF0KCkgKTsKICAgICBmb3Jt YXQuc2V0U3RyaWtlT3V0KCBvbiApOwotICAgIHNldEZvcm1hdCggJmZvcm1hdCwgS29UZXh0Rm9y bWF0OjpTdHJpa2VPdXQgKTsKKyAgICBLb1RleHRGb3JtYXQgKmN1cnJlbnQgPSBjdXJyZW50Rm9y bWF0KCk7CisJcmV0dXJuIHNldEZvcm1hdENvbW1hbmQoIGN1cnJlbnQsICZmb3JtYXQsIEtvVGV4 dEZvcm1hdDo6U3RyaWtlT3V0ICk7CiB9CiAKLXZvaWQgS29UZXh0Rm9ybWF0SW50ZXJmYWNlOjpz ZXRUZXh0QmFja2dyb3VuZENvbG9yKGNvbnN0IFFDb2xvciAmIGNvbCkgewotICAgIEtvVGV4dEZv cm1hdCBmb3JtYXQoICpjdXJyZW50Rm9ybWF0KCkgKTsKK3ZvaWQgS29UZXh0Rm9ybWF0SW50ZXJm YWNlOjpzZXRUZXh0QmFja2dyb3VuZENvbG9yKGNvbnN0IFFDb2xvciAmIGNvbCkKK3sKKwlLQ29t bWFuZCAqY21kID0gc2V0VGV4dEJhY2tncm91bmRDb2xvckNvbW1hbmQoIGNvbCApOworCWVtaXRO ZXdDb21tYW5kKCBjbWQgKTsKK30KKworS0NvbW1hbmQgKktvVGV4dEZvcm1hdEludGVyZmFjZTo6 c2V0VGV4dEJhY2tncm91bmRDb2xvckNvbW1hbmQoY29uc3QgUUNvbG9yICYgY29sKQoreworCUtv VGV4dEZvcm1hdCBmb3JtYXQoICpjdXJyZW50Rm9ybWF0KCkgKTsKICAgICBmb3JtYXQuc2V0VGV4 dEJhY2tncm91bmRDb2xvciggY29sICk7Ci0gICAgc2V0Rm9ybWF0KCAmZm9ybWF0LCBLb1RleHRG b3JtYXQ6OlRleHRCYWNrZ3JvdW5kQ29sb3IgKTsKKyAgICBLb1RleHRGb3JtYXQgKmN1cnJlbnQg PSBjdXJyZW50Rm9ybWF0KCk7CisJcmV0dXJuIHNldEZvcm1hdENvbW1hbmQoIGN1cnJlbnQsICZm b3JtYXQsIEtvVGV4dEZvcm1hdDo6VGV4dEJhY2tncm91bmRDb2xvciApOwogfQogCi1RQ29sb3Ig S29UZXh0Rm9ybWF0SW50ZXJmYWNlOjp0ZXh0QmFja2dyb3VuZENvbG9yKCkgY29uc3QgeworUUNv bG9yIEtvVGV4dEZvcm1hdEludGVyZmFjZTo6dGV4dEJhY2tncm91bmRDb2xvcigpIGNvbnN0Cit7 CiAgICAgcmV0dXJuIGN1cnJlbnRGb3JtYXQoKS0+dGV4dEJhY2tncm91bmRDb2xvcigpOwogfQog Ci1RQ29sb3IgS29UZXh0Rm9ybWF0SW50ZXJmYWNlOjp0ZXh0Q29sb3IoKSBjb25zdCB7CitRQ29s b3IgS29UZXh0Rm9ybWF0SW50ZXJmYWNlOjp0ZXh0Q29sb3IoKSBjb25zdAorewogICAgIHJldHVy biBjdXJyZW50Rm9ybWF0KCktPmNvbG9yKCk7CiB9CiAKLVFGb250IEtvVGV4dEZvcm1hdEludGVy ZmFjZTo6dGV4dEZvbnQoKSBjb25zdCB7Ci0gICAgUUZvbnQgZm4oIGN1cnJlbnRGb3JtYXQoKS0+ Zm9udCgpICk7CitRRm9udCBLb1RleHRGb3JtYXRJbnRlcmZhY2U6OnRleHRGb250KCkgY29uc3QK K3sKKyAgICBRRm9udCBmbiggLyoqKi9jdXJyZW50Rm9ybWF0KCktPmZvbnQoKSApOwogICAgIC8v ICJ1bnpvb20iIHRoZSBmb250IHNpemUKICAgICBmbi5zZXRQb2ludFNpemUoIHN0YXRpY19jYXN0 PGludD4oIEtvVGV4dFpvb21IYW5kbGVyOjpsYXlvdXRVbml0VG9QdCggZm4ucG9pbnRTaXplKCkg KSApICk7CiAgICAgcmV0dXJuIGZuOwogfQogCi1RU3RyaW5nIEtvVGV4dEZvcm1hdEludGVyZmFj ZTo6dGV4dEZvbnRGYW1pbHkoKWNvbnN0IHsKK1FTdHJpbmcgS29UZXh0Rm9ybWF0SW50ZXJmYWNl Ojp0ZXh0Rm9udEZhbWlseSgpY29uc3QKK3sKICAgICByZXR1cm4gY3VycmVudEZvcm1hdCgpLT5m b250KCkuZmFtaWx5KCk7CiB9CiAKLXZvaWQgS29UZXh0Rm9ybWF0SW50ZXJmYWNlOjpzZXRQb2lu dFNpemUoIGludCBzICl7Ci0gICAgS29UZXh0Rm9ybWF0IGZvcm1hdCggKmN1cnJlbnRGb3JtYXQo KSApOwordm9pZCBLb1RleHRGb3JtYXRJbnRlcmZhY2U6OnNldFBvaW50U2l6ZSggaW50IHMgKQor eworCUtDb21tYW5kICpjbWQgPSBzZXRQb2ludFNpemVDb21tYW5kKCBzICk7CisJZW1pdE5ld0Nv bW1hbmQoIGNtZCApOworfQorCitLQ29tbWFuZCAqS29UZXh0Rm9ybWF0SW50ZXJmYWNlOjpzZXRQ b2ludFNpemVDb21tYW5kKCBpbnQgcyApCit7CisJS29UZXh0Rm9ybWF0IGZvcm1hdCggKmN1cnJl bnRGb3JtYXQoKSApOwogICAgIGZvcm1hdC5zZXRQb2ludFNpemUoIHMgKTsKLSAgICBzZXRGb3Jt YXQoICZmb3JtYXQsIFFUZXh0Rm9ybWF0OjpTaXplLCB0cnVlIC8qIHpvb20gdGhlIGZvbnQgc2l6 ZSAqLyApOworICAgIEtvVGV4dEZvcm1hdCAqY3VycmVudCA9IGN1cnJlbnRGb3JtYXQoKTsKKwly ZXR1cm4gc2V0Rm9ybWF0Q29tbWFuZCggY3VycmVudCwgJmZvcm1hdCwgUVRleHRGb3JtYXQ6OlNp emUsIHRydWUgLyogem9vbSB0aGUgZm9udCBzaXplICovICk7Cit9CisKK3ZvaWQgS29UZXh0Rm9y bWF0SW50ZXJmYWNlOjpzZXRGYW1pbHkoY29uc3QgUVN0cmluZyAmZm9udCkKK3sKKwlLQ29tbWFu ZCAqY21kID0gc2V0RmFtaWx5Q29tbWFuZCggZm9udCApOworCWVtaXROZXdDb21tYW5kKCBjbWQg KTsKIH0KIAotdm9pZCBLb1RleHRGb3JtYXRJbnRlcmZhY2U6OnNldEZhbWlseShjb25zdCBRU3Ry aW5nICZmb250KXsKK0tDb21tYW5kICpLb1RleHRGb3JtYXRJbnRlcmZhY2U6OnNldEZhbWlseUNv bW1hbmQoY29uc3QgUVN0cmluZyAmZm9udCkKK3sKICAgICBLb1RleHRGb3JtYXQgZm9ybWF0KCAq Y3VycmVudEZvcm1hdCgpICk7CiAgICAgZm9ybWF0LnNldEZhbWlseSggZm9udCApOwotICAgIHNl dEZvcm1hdCggJmZvcm1hdCwgUVRleHRGb3JtYXQ6OkZhbWlseSApOworICAgIEtvVGV4dEZvcm1h dCAqY3VycmVudCA9IGN1cnJlbnRGb3JtYXQoKTsKKwlyZXR1cm4gc2V0Rm9ybWF0Q29tbWFuZCgg Y3VycmVudCwgJmZvcm1hdCwgUVRleHRGb3JtYXQ6OkZhbWlseSApOwogfQogCiB2b2lkIEtvVGV4 dEZvcm1hdEludGVyZmFjZTo6c2V0Rm9udCggY29uc3QgUUZvbnQgJmZvbnQsIGJvb2wgX3N1YnNj cmlwdCwgYm9vbCBfc3VwZXJzY3JpcHQsIGNvbnN0IFFDb2xvciAmY29sLGNvbnN0IFFDb2xvciAm YmFja0dyb3VuZENvbG9yLCBpbnQgZmxhZ3MgKQogeworCUtDb21tYW5kICpjbWQgPSBzZXRGb250 Q29tbWFuZCggZm9udCwgX3N1YnNjcmlwdCwgX3N1cGVyc2NyaXB0LCBjb2wsIGJhY2tHcm91bmRD b2xvciwgZmxhZ3MgKTsKKwllbWl0TmV3Q29tbWFuZCggY21kICk7Cit9CisKK0tDb21tYW5kICpL b1RleHRGb3JtYXRJbnRlcmZhY2U6OnNldEZvbnRDb21tYW5kKCBjb25zdCBRRm9udCAmZm9udCwg Ym9vbCBfc3Vic2NyaXB0LCBib29sIF9zdXBlcnNjcmlwdCwgY29uc3QgUUNvbG9yICZjb2wsY29u c3QgUUNvbG9yICZiYWNrR3JvdW5kQ29sb3IsIGludCBmbGFncyApCit7CiAgICAgS29UZXh0Rm9y bWF0IGZvcm1hdCggKmN1cnJlbnRGb3JtYXQoKSApOwogICAgIGZvcm1hdC5zZXRGb250KCBmb250 ICk7CiAgICAgZm9ybWF0LnNldENvbG9yKCBjb2wgKTsKQEAgLTE3ODIsNzQgKzE4NjMsMTM4IEBA IHZvaWQgS29UZXh0Rm9ybWF0SW50ZXJmYWNlOjpzZXRGb250KCBjb24KICAgICB9CiAgICAgZWxz ZQogICAgICAgICBmb3JtYXQuc2V0VkFsaWduKFFUZXh0Rm9ybWF0OjpBbGlnblN1YlNjcmlwdCk7 CisJS29UZXh0Rm9ybWF0ICpjdXJyZW50ID0gY3VycmVudEZvcm1hdCgpOworICAgIHJldHVybiBz ZXRGb3JtYXRDb21tYW5kKCBjdXJyZW50LCAmZm9ybWF0LCBmbGFncywgdHJ1ZSAvKiB6b29tIHRo ZSBmb250IHNpemUgKi8pOworfQogCi0gICAgc2V0Rm9ybWF0KCAmZm9ybWF0LCBmbGFncywgdHJ1 ZSAvKiB6b29tIHRoZSBmb250IHNpemUgKi8pOwordm9pZCBLb1RleHRGb3JtYXRJbnRlcmZhY2U6 OnNldFRleHRDb2xvcihjb25zdCBRQ29sb3IgJmNvbG9yKQoreworCUtDb21tYW5kICpjbWQgPSBz ZXRUZXh0Q29sb3JDb21tYW5kKCBjb2xvciApOworCWVtaXROZXdDb21tYW5kKCBjbWQgKTsKIH0K IAotdm9pZCBLb1RleHRGb3JtYXRJbnRlcmZhY2U6OnNldFRleHRDb2xvcihjb25zdCBRQ29sb3Ig JmNvbG9yKSB7CitLQ29tbWFuZCAqS29UZXh0Rm9ybWF0SW50ZXJmYWNlOjpzZXRUZXh0Q29sb3JD b21tYW5kKGNvbnN0IFFDb2xvciAmY29sb3IpCit7CiAgICAgS29UZXh0Rm9ybWF0IGZvcm1hdCgg KmN1cnJlbnRGb3JtYXQoKSApOwogICAgIGZvcm1hdC5zZXRDb2xvciggY29sb3IgKTsKLSAgICBz ZXRGb3JtYXQoICZmb3JtYXQsIFFUZXh0Rm9ybWF0OjpDb2xvciApOworICAgIEtvVGV4dEZvcm1h dCAqY3VycmVudCA9IGN1cnJlbnRGb3JtYXQoKTsKKwlyZXR1cm4gc2V0Rm9ybWF0Q29tbWFuZCgg Y3VycmVudCwgJmZvcm1hdCwgUVRleHRGb3JtYXQ6OkNvbG9yICk7CiB9CiAKIHZvaWQgS29UZXh0 Rm9ybWF0SW50ZXJmYWNlOjpzZXRUZXh0U3ViU2NyaXB0KGJvb2wgb24pCiB7CisJS0NvbW1hbmQg KmNtZCA9IHNldFRleHRTdWJTY3JpcHRDb21tYW5kKCBvbiApOworCWVtaXROZXdDb21tYW5kKCBj bWQgKTsKK30KKworS0NvbW1hbmQgKktvVGV4dEZvcm1hdEludGVyZmFjZTo6c2V0VGV4dFN1YlNj cmlwdENvbW1hbmQoYm9vbCBvbikKK3sKICAgICBLb1RleHRGb3JtYXQgZm9ybWF0KCAqY3VycmVu dEZvcm1hdCgpICk7CiAgICAgaWYoIW9uKQogICAgICAgICBmb3JtYXQuc2V0VkFsaWduKFFUZXh0 Rm9ybWF0OjpBbGlnbk5vcm1hbCk7CiAgICAgZWxzZQogICAgICAgICBmb3JtYXQuc2V0VkFsaWdu KFFUZXh0Rm9ybWF0OjpBbGlnblN1YlNjcmlwdCk7Ci0gICAgc2V0Rm9ybWF0KCAmZm9ybWF0LCBR VGV4dEZvcm1hdDo6VkFsaWduICk7CisgICAgS29UZXh0Rm9ybWF0ICpjdXJyZW50ID0gY3VycmVu dEZvcm1hdCgpOworCXJldHVybiBzZXRGb3JtYXRDb21tYW5kKCBjdXJyZW50LCAmZm9ybWF0LCBR VGV4dEZvcm1hdDo6VkFsaWduICk7CiB9CiAKIHZvaWQgS29UZXh0Rm9ybWF0SW50ZXJmYWNlOjpz ZXRUZXh0U3VwZXJTY3JpcHQoYm9vbCBvbikKIHsKKwlLQ29tbWFuZCAqY21kID0gc2V0VGV4dFN1 cGVyU2NyaXB0Q29tbWFuZCggb24gKTsKKwllbWl0TmV3Q29tbWFuZCggY21kICk7Cit9CisKK0tD b21tYW5kICpLb1RleHRGb3JtYXRJbnRlcmZhY2U6OnNldFRleHRTdXBlclNjcmlwdENvbW1hbmQo Ym9vbCBvbikKK3sKICAgICBLb1RleHRGb3JtYXQgZm9ybWF0KCAqY3VycmVudEZvcm1hdCgpICk7 CiAgICAgaWYoIW9uKQogICAgICAgICBmb3JtYXQuc2V0VkFsaWduKFFUZXh0Rm9ybWF0OjpBbGln bk5vcm1hbCk7CiAgICAgZWxzZQogICAgICAgICBmb3JtYXQuc2V0VkFsaWduKFFUZXh0Rm9ybWF0 OjpBbGlnblN1cGVyU2NyaXB0KTsKLSAgICBzZXRGb3JtYXQoICZmb3JtYXQsIFFUZXh0Rm9ybWF0 OjpWQWxpZ24gKTsKKyAgICBLb1RleHRGb3JtYXQgKmN1cnJlbnQgPSBjdXJyZW50Rm9ybWF0KCk7 CisJcmV0dXJuIHNldEZvcm1hdENvbW1hbmQoIGN1cnJlbnQsICZmb3JtYXQsIFFUZXh0Rm9ybWF0 OjpWQWxpZ24gKTsKIH0KIAotdm9pZCBLb1RleHRGb3JtYXRJbnRlcmZhY2U6OnNldERlZmF1bHRG b3JtYXQoKSB7Cit2b2lkIEtvVGV4dEZvcm1hdEludGVyZmFjZTo6c2V0RGVmYXVsdEZvcm1hdCgp Cit7CisJS0NvbW1hbmQgKmNtZCA9IHNldERlZmF1bHRGb3JtYXRDb21tYW5kKCk7CisJZW1pdE5l d0NvbW1hbmQoIGNtZCApOworfQorCitLQ29tbWFuZCAqS29UZXh0Rm9ybWF0SW50ZXJmYWNlOjpz ZXREZWZhdWx0Rm9ybWF0Q29tbWFuZCgpCit7CiAgICAgUVRleHRGb3JtYXRDb2xsZWN0aW9uICog Y29sbCA9IGN1cnJlbnRGb3JtYXQoKS0+cGFyZW50KCk7CiAgICAgUV9BU1NFUlQoY29sbCk7CiAg ICAgaWYoY29sbCkKICAgICB7CiAgICAgICAgIEtvVGV4dEZvcm1hdCAqIGZvcm1hdCA9IHN0YXRp Y19jYXN0PEtvVGV4dEZvcm1hdCAqPihjb2xsLT5kZWZhdWx0Rm9ybWF0KCkpOwotICAgICAgICBz ZXRGb3JtYXQoIGZvcm1hdCwgUVRleHRGb3JtYXQ6OkZvcm1hdCApOworICAgICAgICBLb1RleHRG b3JtYXQgKmN1cnJlbnQgPSBjdXJyZW50Rm9ybWF0KCk7CisJCXJldHVybiBzZXRGb3JtYXRDb21t YW5kKCBjdXJyZW50LCBmb3JtYXQsIFFUZXh0Rm9ybWF0OjpGb3JtYXQgKTsKICAgICB9CisJcmV0 dXJuIDBMOwogfQogCiB2b2lkIEtvVGV4dEZvcm1hdEludGVyZmFjZTo6c2V0QWxpZ24oaW50IGFs aWduKQogeworCUtDb21tYW5kICpjbWQgPSBzZXRBbGlnbkNvbW1hbmQoIGFsaWduICk7CisJZW1p dE5ld0NvbW1hbmQoIGNtZCApOworfQorCitLQ29tbWFuZCAqS29UZXh0Rm9ybWF0SW50ZXJmYWNl OjpzZXRBbGlnbkNvbW1hbmQoaW50IGFsaWduKQorewogICAgIEtvUGFyYWdMYXlvdXQgZm9ybWF0 KCAqY3VycmVudFBhcmFnTGF5b3V0Rm9ybWF0KCkgKTsKICAgICBmb3JtYXQuYWxpZ25tZW50PWFs aWduOwotICAgIHNldFBhcmFnTGF5b3V0Rm9ybWF0KCZmb3JtYXQsS29QYXJhZ0xheW91dDo6QWxp Z25tZW50KTsKKyAgICByZXR1cm4gc2V0UGFyYWdMYXlvdXRGb3JtYXRDb21tYW5kKCZmb3JtYXQs S29QYXJhZ0xheW91dDo6QWxpZ25tZW50KTsKIH0KIAogdm9pZCBLb1RleHRGb3JtYXRJbnRlcmZh Y2U6OnNldE1hcmdpbihRU3R5bGVTaGVldEl0ZW06Ok1hcmdpbiBtLCBkb3VibGUgbWFyZ2luKQog eworCUtDb21tYW5kICpjbWQgPSBzZXRNYXJnaW5Db21tYW5kKCBtLCBtYXJnaW4gKTsKKwllbWl0 TmV3Q29tbWFuZCggY21kICk7Cit9CisKK0tDb21tYW5kICpLb1RleHRGb3JtYXRJbnRlcmZhY2U6 OnNldE1hcmdpbkNvbW1hbmQoUVN0eWxlU2hlZXRJdGVtOjpNYXJnaW4gbSwgZG91YmxlIG1hcmdp bikKK3sKICAgICBLb1BhcmFnTGF5b3V0IGZvcm1hdCggKmN1cnJlbnRQYXJhZ0xheW91dEZvcm1h dCgpICk7CiAgICAgZm9ybWF0Lm1hcmdpbnNbbV09bWFyZ2luOwogICAgIHNldFBhcmFnTGF5b3V0 Rm9ybWF0KCZmb3JtYXQsS29QYXJhZ0xheW91dDo6TWFyZ2lucywoaW50KW0pOworCXJldHVybiAw TDsKIH0KIAogdm9pZCBLb1RleHRGb3JtYXRJbnRlcmZhY2U6OnNldFRhYkxpc3QoY29uc3QgS29U YWJ1bGF0b3JMaXN0ICYgdGFiTGlzdCApCiB7CisJS0NvbW1hbmQgKmNtZCA9IHNldFRhYkxpc3RD b21tYW5kKCB0YWJMaXN0ICk7CisJZW1pdE5ld0NvbW1hbmQoIGNtZCApOworfQorCitLQ29tbWFu ZCAqS29UZXh0Rm9ybWF0SW50ZXJmYWNlOjpzZXRUYWJMaXN0Q29tbWFuZChjb25zdCBLb1RhYnVs YXRvckxpc3QgJiB0YWJMaXN0ICkKK3sKICAgICBLb1BhcmFnTGF5b3V0IGZvcm1hdCggKmN1cnJl bnRQYXJhZ0xheW91dEZvcm1hdCgpICk7CiAgICAgZm9ybWF0LnNldFRhYkxpc3QodGFiTGlzdCk7 CiAgICAgc2V0UGFyYWdMYXlvdXRGb3JtYXQoJmZvcm1hdCxLb1BhcmFnTGF5b3V0OjpUYWJ1bGF0 b3IpOworCXJldHVybiAwTDsKIH0KIAogdm9pZCBLb1RleHRGb3JtYXRJbnRlcmZhY2U6OnNldENv dW50ZXIoY29uc3QgS29QYXJhZ0NvdW50ZXIgJiBjb3VudGVyICkKIHsKKwlLQ29tbWFuZCAqY21k ID0gc2V0Q291bnRlckNvbW1hbmQoIGNvdW50ZXIgKTsKKwllbWl0TmV3Q29tbWFuZCggY21kICk7 Cit9CisKK0tDb21tYW5kICpLb1RleHRGb3JtYXRJbnRlcmZhY2U6OnNldENvdW50ZXJDb21tYW5k KGNvbnN0IEtvUGFyYWdDb3VudGVyICYgY291bnRlciApCit7CiAgICAgS29QYXJhZ0xheW91dCBm b3JtYXQoICpjdXJyZW50UGFyYWdMYXlvdXRGb3JtYXQoKSApOwogICAgIGlmKCFmb3JtYXQuY291 bnRlcikKICAgICAgICAgZm9ybWF0LmNvdW50ZXIgPSBuZXcgS29QYXJhZ0NvdW50ZXI7CiAgICAg KmZvcm1hdC5jb3VudGVyPSBjb3VudGVyOwogICAgIHNldFBhcmFnTGF5b3V0Rm9ybWF0KCZmb3Jt YXQsS29QYXJhZ0xheW91dDo6QnVsbGV0TnVtYmVyKTsKKwlyZXR1cm4gMEw7Cit9CisKK3ZvaWQg S29UZXh0Rm9ybWF0SW50ZXJmYWNlOjpzZXRQYXJhZ0xheW91dEZvcm1hdCggS29QYXJhZ0xheW91 dCAqbmV3TGF5b3V0LGludCBmbGFncywgaW50IG1hcmdpbkluZGV4KQoreworCUtDb21tYW5kICpj bWQgPSBzZXRQYXJhZ0xheW91dEZvcm1hdENvbW1hbmQobmV3TGF5b3V0LCBmbGFncywgbWFyZ2lu SW5kZXgpOworCWVtaXROZXdDb21tYW5kKCBjbWQgKTsKIH0KIAogI2luY2x1ZGUgImtvdGV4dG9i amVjdC5tb2MiCg== --------------Boundary-00=_FT2BVTNGDI13GGG9QO8Y-- _______________________________________________ koffice-devel mailing list koffice-devel@mail.kde.org http://mail.kde.org/mailman/listinfo/koffice-devel