[Glade-devel] glade3 hopefull revival



------=_Part_103_29030997.1097093771340
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

On Wed, 06 Oct 2004 12:20:33 -0700, David Hoover <karma deadmoose com> wrote:
[...]
So to introduce _MYSELF_, I'm also interested in trying to help breath
some life into glade-3, get it back on track, etc.

I do have a gnome cvs account, so if ownership can get sorted out, I'm
able to commit things assuming I can get permission from whoever would
be appropriate.

Well thats good news; I wasn't looking forward to sorting out all the
red tape ;-)

    - Is there anyone who wants to test out my patches and send me
      some feedback ?
I'm game.

Ok, 
    first things first; I'm fine with the coding style put forth by
the original authors
of glade-3 (although it wouldn't be my style of choice), there is one thing that
I absolutely can not put up with, and thats 200 charachter lines (man, even
with 8 space indentation you should manage to fit on an 80 columb terminal).

So anyone with objections to my cutting down lines that wrap horribly in
a standard emacs editor speak now or forever hold your peace ;-)

Alright then, that said; here is a patch to glade-gtk.c/gtk-additional.xml and
a new file gtkfixed.xml which implements the afore mentioned modifications
to the GtkFixed widget.

You'll find that with undo's some scenarios of floating placeholders seem
to be a problem, although it may be acceptable behaviour, 
let me know what you think.

Now, looks like there is more of us, to the next mail ;-)

Cheers,
                                                                   -Tristan

------=_Part_103_29030997.1097093771340
Content-Type: application/octet-stream; name="gtk-additional.xml.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="gtk-additional.xml.patch"

SW5kZXg6IGd0ay1hZGRpdGlvbmFsLnhtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL2dub21l
L2dsYWRlMy93aWRnZXRzL2d0ay1hZGRpdGlvbmFsLnhtbCx2CnJldHJpZXZpbmcgcmV2aXNpb24g
MS43CmRpZmYgLXUgLXIxLjcgZ3RrLWFkZGl0aW9uYWwueG1sCi0tLSBndGstYWRkaXRpb25hbC54
bWwJMSBNYXkgMjAwNCAyMjowNTozMSAtMDAwMAkxLjcKKysrIGd0ay1hZGRpdGlvbmFsLnhtbAk2
IE9jdCAyMDA0IDIwOjEwOjMyIC0wMDAwCkBAIC0yMSw3ICsyMSw3IEBACiAKICAgPEdsYWRlV2lk
Z2V0IG5hbWU9Ikd0a0Fycm93IiBnZW5lcmljX25hbWU9ImFycm93IiBwYWxldHRlX25hbWU9IkFy
cm93Ii8+CiAgIDxHbGFkZVdpZGdldCBuYW1lPSJHdGtMYXlvdXQiIGdlbmVyaWNfbmFtZT0ibGF5
b3V0IiBwYWxldHRlX25hbWU9IkxheW91dCIvPgotICA8R2xhZGVXaWRnZXQgbmFtZT0iR3RrRml4
ZWQiIGdlbmVyaWNfbmFtZT0iZml4ZWQiIHBhbGV0dGVfbmFtZT0iRml4ZWQiLz4KKyAgPEdsYWRl
V2lkZ2V0IG5hbWU9Ikd0a0ZpeGVkIiBnZW5lcmljX25hbWU9ImZpeGVkIiBmaWxlbmFtZT0iZ3Rr
Zml4ZWQueG1sIiBwYWxldHRlX25hbWU9IkZpeGVkIi8+CiAgIDxHbGFkZVdpZGdldCBuYW1lPSJH
dGtEcmF3aW5nQXJlYSIgZ2VuZXJpY19uYW1lPSJkcmF3aW5nYXJlYSIgcGFsZXR0ZV9uYW1lPSJE
cmF3aW5nIEFyZWEiLz4KICAgPEdsYWRlV2lkZ2V0IG5hbWU9Ikd0a1ZpZXdwb3J0IiBnZW5lcmlj
X25hbWU9InZpZXdwb3J0IiBwYWxldHRlX25hbWU9IlZpZXdwb3J0Ii8+CiAgIDxHbGFkZVdpZGdl
dCBuYW1lPSJHdGtTY3JvbGxlZFdpbmRvdyIgZ2VuZXJpY19uYW1lPSJzY3JvbGxlZHdpbmRvdyIg
cGFsZXR0ZV9uYW1lPSJTY3JvbGxlZCBXaW5kb3ciLz4K
------=_Part_103_29030997.1097093771340
Content-Type: text/xml; name="gtkfixed.xml"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment; filename="gtkfixed.xml"

<GladeWidgetClass>
  <PostCreateFunction>glade_gtk_fixed_post_create</PostCreateFunction>
  <FillEmptyFunction>glade_gtk_fixed_fill_empty</FillEmptyFunction>
</GladeWidgetClass>


------=_Part_103_29030997.1097093771340
Content-Type: application/octet-stream; name="glade-gtk.c.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="glade-gtk.c.patch"

SW5kZXg6IGdsYWRlLWd0ay5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvZ25vbWUvZ2xhZGUz
L3NyYy9nbGFkZS1ndGsuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40OApkaWZmIC11IC1yMS40
OCBnbGFkZS1ndGsuYwotLS0gZ2xhZGUtZ3RrLmMJOCBNYXkgMjAwNCAyMDowMTozMCAtMDAwMAkx
LjQ4CisrKyBnbGFkZS1ndGsuYwk2IE9jdCAyMDA0IDIwOjA3OjAxIC0wMDAwCkBAIC0xMDQsNyAr
MTA0LDkgQEAKIAlidXR0b25zIHNlZW0gdG8gYmUgYSBzcGVjaWFsIGNhc2UsIGFzIHRoZXkgYXJl
IE5PX1dJTkRPVyB3aWRnZXRzCiAJYnV0IGhhdmUgSW5wdXRPbmx5IHdpbmRvd3MsIHNvIHRvb2x0
aXAgc3RpbGwgd29yay4gSW4gR1RLKyAyCiAJbWVudWl0ZW1zIGFyZSBsaWtlIGJ1dHRvbnMuICov
Ci0JaWYgKCFHVEtfV0lER0VUX05PX1dJTkRPVyAob2JqZWN0KSB8fCBHVEtfSVNfQlVUVE9OIChv
YmplY3QpIHx8IEdUS19JU19NRU5VX0lURU0gKG9iamVjdCkpCisJaWYgKCFHVEtfV0lER0VUX05P
X1dJTkRPVyAob2JqZWN0KSB8fAorCSAgICBHVEtfSVNfQlVUVE9OIChvYmplY3QpICAgICAgICAg
fHwKKwkgICAgR1RLX0lTX01FTlVfSVRFTSAob2JqZWN0KSkKIAl7CiAJCWd0a19vYmplY3RfZGVz
dHJveSAoR1RLX09CSkVDVCAob2JqZWN0KSk7CiAJCXJldHVybiBUUlVFOwpAQCAtMjQ0LDcgKzI0
Niw4IEBACiAJCS8qIFRoZSBib3ggaGFzIGdyb3duLiBBZGQgcGxhY2Vob2xkZXJzICovCiAJCXdo
aWxlIChuZXdfc2l6ZSA+IG9sZF9zaXplKQogCQl7Ci0JCQlHbGFkZVBsYWNlaG9sZGVyICpwbGFj
ZWhvbGRlciA9IEdMQURFX1BMQUNFSE9MREVSIChnbGFkZV9wbGFjZWhvbGRlcl9uZXcgKCkpOwor
CQkJR2xhZGVQbGFjZWhvbGRlciAqcGxhY2Vob2xkZXIgPQorCQkJCUdMQURFX1BMQUNFSE9MREVS
IChnbGFkZV9wbGFjZWhvbGRlcl9uZXcgKCkpOwogCQkJZ3RrX2NvbnRhaW5lcl9hZGQgKEdUS19D
T05UQUlORVIgKGJveCksIEdUS19XSURHRVQgKHBsYWNlaG9sZGVyKSk7CiAJCQlvbGRfc2l6ZSsr
OwogCQl9CkBAIC0yNjIsNyArMjY1LDggQEAKIAogCQkJZ2xhZGVfd2lkZ2V0ID0gZ2xhZGVfd2lk
Z2V0X2dldF9mcm9tX2d0a193aWRnZXQgKGNoaWxkX3dpZGdldCk7CiAJCQlpZiAoZ2xhZGVfd2lk
Z2V0KSAvKiBpdCBtYXkgYmUgTlVMTCwgZS5nIGEgcGxhY2Vob2xkZXIgKi8KLQkJCQlnbGFkZV9w
cm9qZWN0X3JlbW92ZV93aWRnZXQgKGdsYWRlX3dpZGdldC0+cHJvamVjdCwgY2hpbGRfd2lkZ2V0
KTsKKwkJCQlnbGFkZV9wcm9qZWN0X3JlbW92ZV93aWRnZXQKKwkJCQkJKGdsYWRlX3dpZGdldC0+
cHJvamVjdCwgY2hpbGRfd2lkZ2V0KTsKIAogCQkJZ3RrX2NvbnRhaW5lcl9yZW1vdmUgKEdUS19D
T05UQUlORVIgKGJveCksIGNoaWxkX3dpZGdldCk7CiAKQEAgLTMyMiw3ICszMjYsOCBAQAogCiAJ
CQlnbGFkZV93aWRnZXQgPSBnbGFkZV93aWRnZXRfZ2V0X2Zyb21fZ3RrX3dpZGdldCAoY2hpbGRf
d2lkZ2V0KTsKIAkJCWlmIChnbGFkZV93aWRnZXQpCi0JCQkJZ2xhZGVfcHJvamVjdF9yZW1vdmVf
d2lkZ2V0IChnbGFkZV93aWRnZXQtPnByb2plY3QsIGNoaWxkX3dpZGdldCk7CisJCQkJZ2xhZGVf
cHJvamVjdF9yZW1vdmVfd2lkZ2V0CisJCQkJCShnbGFkZV93aWRnZXQtPnByb2plY3QsIGNoaWxk
X3dpZGdldCk7CiAKIAkJCWd0a19jb250YWluZXJfcmVtb3ZlIChHVEtfQ09OVEFJTkVSICh0b29s
YmFyKSwgY2hpbGRfd2lkZ2V0KTsKIApAQCAtMzY4LDcgKzM3Myw4IEBACiAJaWYgKG5ld19zaXpl
ID4gb2xkX3NpemUpIHsKIAkJLyogVGhlIG5vdGVib29rIGhhcyBncm93bi4gQWRkIGEgcGFnZS4g
Ki8KIAkJd2hpbGUgKG5ld19zaXplID4gb2xkX3NpemUpIHsKLQkJCUdsYWRlUGxhY2Vob2xkZXIg
KnBsYWNlaG9sZGVyID0gR0xBREVfUExBQ0VIT0xERVIgKGdsYWRlX3BsYWNlaG9sZGVyX25ldyAo
KSk7CisJCQlHbGFkZVBsYWNlaG9sZGVyICpwbGFjZWhvbGRlciA9CisJCQkJR0xBREVfUExBQ0VI
T0xERVIgKGdsYWRlX3BsYWNlaG9sZGVyX25ldyAoKSk7CiAJCQlndGtfbm90ZWJvb2tfYXBwZW5k
X3BhZ2UgKEdUS19OT1RFQk9PSyAobm90ZWJvb2spLAogCQkJCQkJICBHVEtfV0lER0VUIChwbGFj
ZWhvbGRlciksCiAJCQkJCQkgIE5VTEwpOwpAQCAtMzk0LDcgKzQwMCw4IEBACiAJCQkgKiBmcm9t
IHByb2plY3QuCiAJCQkgKi8KIAkJCWlmIChjaGlsZF9nd2lkZ2V0KQotCQkJCWdsYWRlX3Byb2pl
Y3RfcmVtb3ZlX3dpZGdldCAoY2hpbGRfZ3dpZGdldC0+cHJvamVjdCwgY2hpbGRfd2lkZ2V0KTsK
KwkJCQlnbGFkZV9wcm9qZWN0X3JlbW92ZV93aWRnZXQKKwkJCQkJKGNoaWxkX2d3aWRnZXQtPnBy
b2plY3QsIGNoaWxkX3dpZGdldCk7CiAKIAkJCWd0a19ub3RlYm9va19yZW1vdmVfcGFnZSAobm90
ZWJvb2ssIG9sZF9zaXplLTEpOwogCQkJb2xkX3NpemUtLTsKQEAgLTQzMSwxOSArNDM4LDIyIEBA
CiAKIAkJCWZvciAoaSA9IDA7IGkgPCB0YWJsZS0+bmNvbHM7IGkrKykKIAkJCQlmb3IgKGogPSBv
bGRfc2l6ZTsgaiA8IHRhYmxlLT5ucm93czsgaisrKQotCQkJCQlndGtfdGFibGVfYXR0YWNoX2Rl
ZmF1bHRzICh0YWJsZSwgZ2xhZGVfcGxhY2Vob2xkZXJfbmV3ICgpLAorCQkJCQlndGtfdGFibGVf
YXR0YWNoX2RlZmF1bHRzCisJCQkJCQkodGFibGUsIGdsYWRlX3BsYWNlaG9sZGVyX25ldyAoKSwK
IAkJCQkJCQkJICAgaSwgaSArIDEsIGosIGogKyAxKTsKIAkJfSBlbHNlIHsKIAkJCWd0a190YWJs
ZV9yZXNpemUgKHRhYmxlLCB0YWJsZS0+bnJvd3MsIG5ld19zaXplKTsKIAogCQkJZm9yIChpID0g
b2xkX3NpemU7IGkgPCB0YWJsZS0+bmNvbHM7IGkrKykKIAkJCQlmb3IgKGogPSAwOyBqIDwgdGFi
bGUtPm5yb3dzOyBqKyspCi0JCQkJCWd0a190YWJsZV9hdHRhY2hfZGVmYXVsdHMgKHRhYmxlLCBn
bGFkZV9wbGFjZWhvbGRlcl9uZXcgKCksCisJCQkJCWd0a190YWJsZV9hdHRhY2hfZGVmYXVsdHMK
KwkJCQkJCSh0YWJsZSwgZ2xhZGVfcGxhY2Vob2xkZXJfbmV3ICgpLAogCQkJCQkJCQkgICBpLCBp
ICsgMSwgaiwgaiArIDEpOwogCQl9CiAJfSBlbHNlIHsKIAkJLyogUmVtb3ZlIGZyb20gdGhlIGJv
dHRvbSB1cCAqLwotCQlHTGlzdCAqbGlzdCA9IGdfbGlzdF9yZXZlcnNlIChnX2xpc3RfY29weSAo
Z3RrX2NvbnRhaW5lcl9nZXRfY2hpbGRyZW4gKEdUS19DT05UQUlORVIgKHRhYmxlKSkpKTsKKwkJ
R0xpc3QgKmxpc3QgPSBnX2xpc3RfcmV2ZXJzZQorCQkJKGdfbGlzdF9jb3B5IChndGtfY29udGFp
bmVyX2dldF9jaGlsZHJlbiAoR1RLX0NPTlRBSU5FUiAodGFibGUpKSkpOwogCQlHTGlzdCAqZnJl
ZW1lID0gbGlzdDsKIAkJZm9yICg7IGxpc3Q7IGxpc3QgPSBsaXN0LT5uZXh0KSB7CiAJCQlHdGtU
YWJsZUNoaWxkICpjaGlsZCA9IGxpc3QtPmRhdGE7CkBAIC00NTcsMTEgKzQ2NywxMyBAQAogCQkJ
CWNvbnRpbnVlOwogCQkJfQogCi0JCQkvKiBJZiB0aGUgd2lkZ2V0IHNwYW5zIGJleW9uZCB0aGUg
bmV3IGJvcmRlciwgd2Ugc2hvdWxkIHJlc2l6ZSBpdCB0byBmaXQgb24gdGhlIG5ldyB0YWJsZSAq
LworCQkJLyogSWYgdGhlIHdpZGdldCBzcGFucyBiZXlvbmQgdGhlIG5ldyBib3JkZXIsCisJCQkg
KiB3ZSBzaG91bGQgcmVzaXplIGl0IHRvIGZpdCBvbiB0aGUgbmV3IHRhYmxlICovCiAJCQlpZiAo
ZW5kID4gbmV3X3NpemUpCi0JCQkJZ3RrX2NvbnRhaW5lcl9jaGlsZF9zZXQgKEdUS19DT05UQUlO
RVIgKHRhYmxlKSwgR1RLX1dJREdFVCAoY2hpbGQpLAotCQkJCQkJCSBmb3Jfcm93cyA/ICJib3R0
b21fYXR0YWNoIiA6ICJyaWdodF9hdHRhY2giLAotCQkJCQkJCSBuZXdfc2l6ZSwgTlVMTCk7CisJ
CQkJZ3RrX2NvbnRhaW5lcl9jaGlsZF9zZXQKKwkJCQkJKEdUS19DT05UQUlORVIgKHRhYmxlKSwg
R1RLX1dJREdFVCAoY2hpbGQpLAorCQkJCQkgZm9yX3Jvd3MgPyAiYm90dG9tX2F0dGFjaCIgOiAi
cmlnaHRfYXR0YWNoIiwKKwkJCQkJIG5ld19zaXplLCBOVUxMKTsKIAkJCQogCQl9CiAJCWdfbGlz
dF9mcmVlIChmcmVlbWUpOwpAQCAtNDcwLDcgKzQ4Miw5IEBACiAJCQkJICBmb3Jfcm93cyA/IHRh
YmxlLT5uY29scyA6IG5ld19zaXplKTsKIAl9CiAKLQlnX29iamVjdF9zZXRfZGF0YSAob2JqZWN0
LCAiZ2xhZGVfbmJfcGxhY2Vob2xkZXJzIiwgR0lOVF9UT19QT0lOVEVSIChuZXdfc2l6ZSAqIChm
b3Jfcm93cyA/IHRhYmxlLT5uY29scyA6IHRhYmxlLT5ucm93cykpKTsKKwlnX29iamVjdF9zZXRf
ZGF0YSAob2JqZWN0LCAiZ2xhZGVfbmJfcGxhY2Vob2xkZXJzIiwKKwkJCSAgIEdJTlRfVE9fUE9J
TlRFUgorCQkJICAgKG5ld19zaXplICogKGZvcl9yb3dzID8gdGFibGUtPm5jb2xzIDogdGFibGUt
Pm5yb3dzKSkpOwogfQogCiB2b2lkIEdMQURFR1RLX0FQSQpAQCAtNjEwLDExICs2MjQsMTMgQEAK
IAlnX29iamVjdF91bnJlZiAoR19PQkpFQ1QgKHN0b3JlKSk7CiAKIAlyZW5kZXJlciA9IGd0a19j
ZWxsX3JlbmRlcmVyX3RleHRfbmV3ICgpOwotCWNvbHVtbiA9IGd0a190cmVlX3ZpZXdfY29sdW1u
X25ld193aXRoX2F0dHJpYnV0ZXMgKCJDb2x1bW4gMSIsIHJlbmRlcmVyLCAidGV4dCIsIDAsIE5V
TEwpOworCWNvbHVtbiA9IGd0a190cmVlX3ZpZXdfY29sdW1uX25ld193aXRoX2F0dHJpYnV0ZXMK
KwkJKCJDb2x1bW4gMSIsIHJlbmRlcmVyLCAidGV4dCIsIDAsIE5VTEwpOwogCWd0a190cmVlX3Zp
ZXdfYXBwZW5kX2NvbHVtbiAoR1RLX1RSRUVfVklFVyAodHJlZV92aWV3KSwgY29sdW1uKTsKIAog
CXJlbmRlcmVyID0gZ3RrX2NlbGxfcmVuZGVyZXJfdGV4dF9uZXcgKCk7Ci0JY29sdW1uID0gZ3Rr
X3RyZWVfdmlld19jb2x1bW5fbmV3X3dpdGhfYXR0cmlidXRlcyAoIkNvbHVtbiAyIiwgcmVuZGVy
ZXIsICJ0ZXh0IiwgMSwgTlVMTCk7CisJY29sdW1uID0gZ3RrX3RyZWVfdmlld19jb2x1bW5fbmV3
X3dpdGhfYXR0cmlidXRlcworCQkoIkNvbHVtbiAyIiwgcmVuZGVyZXIsICJ0ZXh0IiwgMSwgTlVM
TCk7CiAJZ3RrX3RyZWVfdmlld19hcHBlbmRfY29sdW1uIChHVEtfVFJFRV9WSUVXICh0cmVlX3Zp
ZXcpLCBjb2x1bW4pOwogfQogCkBAIC02MjMsOSArNjM5LDEwIEBACiBhc2tfZm9yX251bWJlciAo
Y29uc3QgY2hhciAqdGl0bGUsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBtaW4sIGludCBtYXgsIGlu
dCBkZWYpCiB7CiAJaW50IG51bWJlcjsKLQlHdGtXaWRnZXQgKmRpYWxvZyA9IGd0a19kaWFsb2df
bmV3X3dpdGhfYnV0dG9ucyAodGl0bGUsIE5VTEwsCi0JCQkJCQkJIEdUS19ESUFMT0dfTU9EQUwg
fCBHVEtfRElBTE9HX0RFU1RST1lfV0lUSF9QQVJFTlQgfCBHVEtfRElBTE9HX05PX1NFUEFSQVRP
UiwKLQkJCQkJCQkgR1RLX1NUT0NLX09LLCBHVEtfUkVTUE9OU0VfQUNDRVBULCBOVUxMKTsKKwlH
dGtXaWRnZXQgKmRpYWxvZyA9IGd0a19kaWFsb2dfbmV3X3dpdGhfYnV0dG9ucworCQkodGl0bGUs
IE5VTEwsCisJCSBHVEtfRElBTE9HX01PREFMIHwgR1RLX0RJQUxPR19ERVNUUk9ZX1dJVEhfUEFS
RU5UIHwgR1RLX0RJQUxPR19OT19TRVBBUkFUT1IsCisJCSBHVEtfU1RPQ0tfT0ssIEdUS19SRVNQ
T05TRV9BQ0NFUFQsIE5VTEwpOwogCUd0a1dpZGdldCAqbGFiZWwgPSBndGtfbGFiZWxfbmV3IChu
YW1lKTsKIAlHdGtXaWRnZXQgKnNwaW5fYnV0dG9uID0gZ3RrX3NwaW5fYnV0dG9uX25ld193aXRo
X3JhbmdlICgoZG91YmxlKSBtaW4sIChkb3VibGUpIG1heCwgMS4wKTsKIAlHdGtXaWRnZXQgKmhi
b3ggPSBndGtfaGJveF9uZXcgKEZBTFNFLCA0KTsKQEAgLTY0Niw3ICs2NjMsOSBAQAogCWd0a19i
b3hfcGFja19zdGFydCAoR1RLX0JPWCAoR1RLX0RJQUxPRyAoZGlhbG9nKS0+dmJveCksIGhib3gs
IFRSVUUsIFRSVUUsIDQpOwogCiAJZ3RrX3dpZGdldF9zaG93X2FsbCAoaGJveCk7Ci0JLyogZXZl
biBpZiB0aGUgdXNlciBkZXN0cm95cyB0aGUgZGlhbG9nIGJveCwgd2UgcmV0cmlldmUgdGhlIG51
bWJlciBhbmQgd2UgYWNjZXB0IGl0LiAgSS5lLiwgdGhpcyBmdW5jdGlvbiBuZXZlciBmYWlscyAq
LworCisJLyogZXZlbiBpZiB0aGUgdXNlciBkZXN0cm95cyB0aGUgZGlhbG9nIGJveCwgd2UgcmV0
cmlldmUgdGhlIG51bWJlciBhbmQgd2UgYWNjZXB0IGl0LgorCSAqIEkuZS4sIHRoaXMgZnVuY3Rp
b24gbmV2ZXIgZmFpbHMgKi8KIAlndGtfZGlhbG9nX3J1biAoR1RLX0RJQUxPRyAoZGlhbG9nKSk7
CiAKIAludW1iZXIgPSBndGtfc3Bpbl9idXR0b25fZ2V0X3ZhbHVlX2FzX2ludCAoR1RLX1NQSU5f
QlVUVE9OIChzcGluX2J1dHRvbikpOwpAQCAtNjU5LDExICs2NzgsMTQgQEAKIHZvaWQgR0xBREVH
VEtfQVBJCiBnbGFkZV9ndGtfYm94X3Bvc3RfY3JlYXRlIChHT2JqZWN0ICpvYmplY3QpCiB7Ci0J
R2xhZGVQcm9wZXJ0eSAqcHJvcGVydHkgPSBnbGFkZV93aWRnZXRfZ2V0X3Byb3BlcnR5IChnbGFk
ZV93aWRnZXRfZ2V0X2Zyb21fZ3RrX3dpZGdldCAob2JqZWN0KSwgInNpemUiKTsKKwlHbGFkZVBy
b3BlcnR5ICpwcm9wZXJ0eSA9CisJCWdsYWRlX3dpZGdldF9nZXRfcHJvcGVydHkKKwkJKGdsYWRl
X3dpZGdldF9nZXRfZnJvbV9ndGtfd2lkZ2V0IChvYmplY3QpLCAic2l6ZSIpOwogCUdWYWx1ZSB2
YWx1ZSA9IHswLH07CiAKIAlnX3ZhbHVlX2luaXQgKCZ2YWx1ZSwgR19UWVBFX0lOVCk7Ci0JZ192
YWx1ZV9zZXRfaW50ICgmdmFsdWUsIGFza19mb3JfbnVtYmVyKF8oIkNyZWF0ZSBhIGJveCIpLCBf
KCJOdW1iZXIgb2YgaXRlbXM6IiksIDAsIDEwMDAwLCAzKSk7CisJZ192YWx1ZV9zZXRfaW50ICgm
dmFsdWUsIGFza19mb3JfbnVtYmVyKF8oIkNyZWF0ZSBhIGJveCIpLAorCQkJCQkJXygiTnVtYmVy
IG9mIGl0ZW1zOiIpLCAwLCAxMDAwMCwgMykpOwogCiAJZ2xhZGVfcHJvcGVydHlfc2V0IChwcm9w
ZXJ0eSwgJnZhbHVlKTsKIH0KQEAgLTY3MSwxMyArNjkzLDIwNSBAQAogdm9pZCBHTEFERUdUS19B
UEkKIGdsYWRlX2d0a19ub3RlYm9va19wb3N0X2NyZWF0ZSAoR09iamVjdCAqb2JqZWN0KQogewot
CUdsYWRlUHJvcGVydHkgKnByb3BlcnR5ID0gZ2xhZGVfd2lkZ2V0X2dldF9wcm9wZXJ0eSAoZ2xh
ZGVfd2lkZ2V0X2dldF9mcm9tX2d0a193aWRnZXQgKG9iamVjdCksICJzaXplIik7CiAJR1ZhbHVl
IHZhbHVlID0gezAsfTsKLQogCWdfdmFsdWVfaW5pdCAoJnZhbHVlLCBHX1RZUEVfSU5UKTsKLQln
X3ZhbHVlX3NldF9pbnQgKCZ2YWx1ZSwgYXNrX2Zvcl9udW1iZXIoXygiQ3JlYXRlIGEgbm90ZWJv
b2siKSwgXygiTnVtYmVyIG9mIHBhZ2VzOiIpLCAwLCAxMDAsIDMpKTsKKwlnX3ZhbHVlX3NldF9p
bnQgKCZ2YWx1ZSwgYXNrX2Zvcl9udW1iZXIoXygiQ3JlYXRlIGEgbm90ZWJvb2siKSwKKwkJCQkJ
CV8oIk51bWJlciBvZiBwYWdlczoiKSwgMCwgMTAwLCAzKSk7CiB9CiAKK3N0YXRpYyB2b2lkCitn
bGFkZV9ndGtfZml4ZWRfYWRkX3BsYWNlaG9sZGVyIChHdGtNZW51SXRlbSAqbWVudV9pdGVtLAor
CQkJCSBHdGtGaXhlZCAgICAqZml4ZWQpCit7CisJR2RrUmVjdGFuZ2xlIGRpbWVudGlvbnM7CisJ
Z2ludCAgICAgICAgIGk7CisJR3RrV2lkZ2V0ICpwbGFjZWhvbGRlcjsKKwlHdGtXaWRnZXQgKmRp
YWxvZyA9IGd0a19kaWFsb2dfbmV3X3dpdGhfYnV0dG9ucworCQkoXygiUGxhY2Vob2xkZXIgZGlt
ZW50aW9ucyIpLCBOVUxMLAorCQkgR1RLX0RJQUxPR19NT0RBTCB8CisJCSBHVEtfRElBTE9HX0RF
U1RST1lfV0lUSF9QQVJFTlQgfAorCQkgR1RLX0RJQUxPR19OT19TRVBBUkFUT1IsCisJCSBHVEtf
U1RPQ0tfT0ssIEdUS19SRVNQT05TRV9BQ0NFUFQsIE5VTEwpOworCUd0a1dpZGdldCAqbGFiZWxz
WzRdID0KKwkJewkKKwkJCWd0a19sYWJlbF9uZXcgKF8oIlgiKSksCisJCQlndGtfbGFiZWxfbmV3
IChfKCJZIikpLAorCQkJZ3RrX2xhYmVsX25ldyAoXygiV2lkdGgiKSksCisJCQlndGtfbGFiZWxf
bmV3IChfKCJIZWlnaHQiKSkKKwkJfTsKKwlHdGtXaWRnZXQgKnNwaW5zWzRdID0KKwkJeworCQkJ
Z3RrX3NwaW5fYnV0dG9uX25ld193aXRoX3JhbmdlICgoZG91YmxlKSAwLCAoZG91YmxlKSA1MDAw
LCAxLjApLAorCQkJZ3RrX3NwaW5fYnV0dG9uX25ld193aXRoX3JhbmdlICgoZG91YmxlKSAwLCAo
ZG91YmxlKSA1MDAwLCAxLjApLAorCQkJZ3RrX3NwaW5fYnV0dG9uX25ld193aXRoX3JhbmdlICgo
ZG91YmxlKSAwLCAoZG91YmxlKSA1MDAwLCAxLjApLAorCQkJZ3RrX3NwaW5fYnV0dG9uX25ld193
aXRoX3JhbmdlICgoZG91YmxlKSAwLCAoZG91YmxlKSA1MDAwLCAxLjApLAorCQl9OworCUd0a1dp
ZGdldCAqaGJveHNbNF0gPQorCQl7CisJCQlndGtfaGJveF9uZXcgKEZBTFNFLCA0KSwKKwkJCWd0
a19oYm94X25ldyAoRkFMU0UsIDQpLAorCQkJZ3RrX2hib3hfbmV3IChGQUxTRSwgNCksCisJCQln
dGtfaGJveF9uZXcgKEZBTFNFLCA0KQorCQl9OworCisJLyogQ3JlYXRlIGRpYWxvZyB0byByZXRy
aWV2ZSBkaW1lbnRpb25zCisJICovCisJZ3RrX3dpbmRvd19zZXRfcG9zaXRpb24gKEdUS19XSU5E
T1cgKGRpYWxvZyksIEdUS19XSU5fUE9TX01PVVNFKTsKKworCWZvciAoaSA9IDA7IGkgPCA0OyBp
KyspCisJeworCQlndGtfbWlzY19zZXRfYWxpZ25tZW50IChHVEtfTUlTQyAobGFiZWxzW2ldKSwg
MC4wLCAwLjUpOworCQkKKwkJZ3RrX3NwaW5fYnV0dG9uX3NldF9kaWdpdHMgKEdUS19TUElOX0JV
VFRPTiAoc3BpbnNbaV0pLCAwKTsKKwkJZ3RrX3NwaW5fYnV0dG9uX3NldF9udW1lcmljIChHVEtf
U1BJTl9CVVRUT04gKHNwaW5zW2ldKSwgRkFMU0UpOworCisJCWd0a19ib3hfcGFja19lbmQgKEdU
S19CT1ggKGhib3hzW2ldKSwgc3BpbnNbaV0sIFRSVUUsIFRSVUUsIDApOworCQlndGtfYm94X3Bh
Y2tfZW5kIChHVEtfQk9YIChoYm94c1tpXSksIGxhYmVsc1tpXSwgVFJVRSwgVFJVRSwgMCk7CisK
KwkJZ3RrX2NvbnRhaW5lcl9zZXRfYm9yZGVyX3dpZHRoIChHVEtfQ09OVEFJTkVSIChoYm94c1tp
XSksIDEyKTsKKworCQlndGtfYm94X3BhY2tfc3RhcnQgKEdUS19CT1ggKEdUS19ESUFMT0cgKGRp
YWxvZyktPnZib3gpLAorCQkJCSAgICBoYm94c1tpXSwgVFJVRSwgVFJVRSwgNCk7CisJCWd0a193
aWRnZXRfc2hvd19hbGwgKGhib3hzW2ldKTsKKwl9CisKKwlndGtfc3Bpbl9idXR0b25fc2V0X3Zh
bHVlIChHVEtfU1BJTl9CVVRUT04gKHNwaW5zWzBdKSwgKGRvdWJsZSkgMCk7CisJZ3RrX3NwaW5f
YnV0dG9uX3NldF92YWx1ZSAoR1RLX1NQSU5fQlVUVE9OIChzcGluc1sxXSksIChkb3VibGUpIDAp
OworCWd0a19zcGluX2J1dHRvbl9zZXRfdmFsdWUgKEdUS19TUElOX0JVVFRPTiAoc3BpbnNbMl0p
LCAoZG91YmxlKSAyMCk7CisJZ3RrX3NwaW5fYnV0dG9uX3NldF92YWx1ZSAoR1RLX1NQSU5fQlVU
VE9OIChzcGluc1szXSksIChkb3VibGUpIDIwKTsKKworCS8qIFJ1biBkaWFsb2cKKwkgKi8KKwln
dGtfZGlhbG9nX3J1biAoR1RLX0RJQUxPRyAoZGlhbG9nKSk7CisKKwlkaW1lbnRpb25zLnggPSBn
dGtfc3Bpbl9idXR0b25fZ2V0X3ZhbHVlX2FzX2ludCAKKyAJCShHVEtfU1BJTl9CVVRUT04gKHNw
aW5zWzBdKSk7CisJZGltZW50aW9ucy55ID0gZ3RrX3NwaW5fYnV0dG9uX2dldF92YWx1ZV9hc19p
bnQgCisgCQkoR1RLX1NQSU5fQlVUVE9OIChzcGluc1sxXSkpOworCWRpbWVudGlvbnMud2lkdGgg
PSBndGtfc3Bpbl9idXR0b25fZ2V0X3ZhbHVlX2FzX2ludCAKKwkJKEdUS19TUElOX0JVVFRPTiAo
c3BpbnNbMl0pKTsKKwlkaW1lbnRpb25zLmhlaWdodCA9IGd0a19zcGluX2J1dHRvbl9nZXRfdmFs
dWVfYXNfaW50IAorCQkoR1RLX1NQSU5fQlVUVE9OIChzcGluc1szXSkpOworCSAKKwlndGtfd2lk
Z2V0X2Rlc3Ryb3kgKGRpYWxvZyk7CisKKworCS8qIEFkZCBwbGFjZWhvbGRlcgorCSAqLworCXBs
YWNlaG9sZGVyID0gZ2xhZGVfcGxhY2Vob2xkZXJfbmV3ICgpOworCWd0a193aWRnZXRfc2V0X3Np
emVfcmVxdWVzdChwbGFjZWhvbGRlciwgZGltZW50aW9ucy53aWR0aCwgZGltZW50aW9ucy5oZWln
aHQpOworCWd0a19maXhlZF9wdXQoZml4ZWQsIHBsYWNlaG9sZGVyLCBkaW1lbnRpb25zLngsIGRp
bWVudGlvbnMueSk7Cit9CisKK3N0YXRpYyB2b2lkCitnbGFkZV9ndGtfZml4ZWRfY2xlYXJfcGxh
Y2Vob2xkZXJzIChHdGtNZW51SXRlbSAqbWVudV9pdGVtLAorCQkJCSAgICBHdGtGaXhlZCAgICAq
Zml4ZWQpCit7CisJR0xpc3QgKmNoaWxkcmVuID0gZ3RrX2NvbnRhaW5lcl9nZXRfY2hpbGRyZW4o
R1RLX0NPTlRBSU5FUihmaXhlZCkpOworCUdMaXN0ICpsID0gY2hpbGRyZW47CisJLyogTG9vcCBv
dmVyIGNoaWxkcmVuIGFuZCByZW1vdmUgcGxhY2Vob2xkZXJzCisJICovCisJd2hpbGUgKGwgJiYg
bC0+ZGF0YSkKKwl7CisJCUd0a1dpZGdldCAqd2lkZ2V0ID0gR1RLX1dJREdFVChsLT5kYXRhKTsK
KwkJaWYgKEdMQURFX0lTX1BMQUNFSE9MREVSKHdpZGdldCkpCisJCXsKKwkJCWd0a19jb250YWlu
ZXJfcmVtb3ZlKEdUS19DT05UQUlORVIoZml4ZWQpLCB3aWRnZXQpOworCQl9CisJCWwgPSBsLT5u
ZXh0OworCX0KKwlnX2xpc3RfZnJlZShjaGlsZHJlbik7Cit9CisKKworc3RhdGljIEd0a1dpZGdl
dCAqCitnbGFkZV9ndGtfZml4ZWRfcG9wdXBfbWVudSAoR3RrRml4ZWQgKmZpeGVkKQoreworCUd0
a1dpZGdldCAqbWVudTsKKwlHdGtXaWRnZXQgKm1lbnVfaXRlbTsKKworCW1lbnUgPSBndGtfbWVu
dV9uZXcgKCk7CisKKwltZW51X2l0ZW0gPSBndGtfbWVudV9pdGVtX25ld193aXRoX2xhYmVsIChf
KCJBZGQgcGxhY2Vob2xkZXIiKSk7CisJZ3RrX21lbnVfc2hlbGxfYXBwZW5kIChHVEtfTUVOVV9T
SEVMTCAobWVudSksIG1lbnVfaXRlbSk7CisJZ19zaWduYWxfY29ubmVjdCAoR19PQkpFQ1QgKG1l
bnVfaXRlbSksICJhY3RpdmF0ZSIsCisJCQkgIEdfQ0FMTEJBQ0sgKGdsYWRlX2d0a19maXhlZF9h
ZGRfcGxhY2Vob2xkZXIpLCBmaXhlZCk7CisJZ3RrX3dpZGdldF9zaG93IChtZW51X2l0ZW0pOwor
CisJbWVudV9pdGVtID0gZ3RrX21lbnVfaXRlbV9uZXdfd2l0aF9sYWJlbCAoXygiQ2xlYXIgcGxh
Y2Vob2xkZXJzIikpOworCWd0a19tZW51X3NoZWxsX2FwcGVuZCAoR1RLX01FTlVfU0hFTEwgKG1l
bnUpLCBtZW51X2l0ZW0pOworCWdfc2lnbmFsX2Nvbm5lY3QgKEdfT0JKRUNUIChtZW51X2l0ZW0p
LCAiYWN0aXZhdGUiLAorCQkJICBHX0NBTExCQUNLIChnbGFkZV9ndGtfZml4ZWRfY2xlYXJfcGxh
Y2Vob2xkZXJzKSwgZml4ZWQpOworCWd0a193aWRnZXRfc2hvdyAobWVudV9pdGVtKTsKKworCXJl
dHVybiBtZW51OworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dsYWRlX2d0a19maXhlZF9idXR0b25f
cHJlc3MgKEd0a1dpZGdldCAgICAgICAqd2lkZ2V0LAorCQkJICAgICAgR2RrRXZlbnRCdXR0b24g
ICpldmVudCwKKwkJCSAgICAgIGdwb2ludGVyICAgICAgICAgdXNlcl9kYXRhKQoreworCS8qIE1p
ZGRsZSBidXR0b24gb3IgbGVmdCBidXR0b24gd2l0aCBzaGlmdCBrZXkKKwkgKi8KKwlpZiAoZXZl
bnQtPmJ1dHRvbiA9PSAyIHx8CisJICAgIChldmVudC0+YnV0dG9uID09IDEgJiYKKwkgICAgIChl
dmVudC0+c3RhdGUgJiBHREtfU0hJRlRfTUFTSykgIT0gMCkpCisJeworCQlHdGtNZW51ICptZW51
OworCisJCWlmICgobWVudSA9IEdUS19NRU5VKGdfb2JqZWN0X2dldF9kYXRhCisJCQkJICAgICAo
R19PQkpFQ1Qod2lkZ2V0KSwgIkd0a0ZpeGVkTWVudSIpKSkgIT0gTlVMTCkKKwkJeworCQkJLyog
UG9wdXAgbWVudS4gKi8KKwkJCWd0a19tZW51X3BvcHVwIChtZW51LCBOVUxMLCBOVUxMLCBOVUxM
LCBOVUxMLAorCQkJCQlldmVudC0+YnV0dG9uLCBldmVudC0+dGltZSk7CisJCX0KKwkJcmV0dXJu
IFRSVUU7CisJfQorCXJldHVybiBGQUxTRTsKK30KKworc3RhdGljIGdib29sZWFuCitnbGFkZV9n
dGtfZml4ZWRfZGVzdHJveV9tZW51IChHdGtXaWRnZXQgKm1lbnUsCisJCQkgICAgICBHT2JqZWN0
ICAgKndhc19vYmplY3QpCit7CisJLyogWFhYIEhtbW0sIEZvciBzb21lIHJlYXNvbiB0aGlzIGlz
IG5ldmVyIGNhbGxlZC4KKwkgKi8KKwlnX3ByaW50KCJEZXN0cm95aW5nIG1lbnVcbiIpOworCWd0
a193aWRnZXRfZGVzdHJveShtZW51KTsKKwlyZXR1cm4gRkFMU0U7Cit9CisKK3ZvaWQgR0xBREVH
VEtfQVBJCitnbGFkZV9ndGtfZml4ZWRfcG9zdF9jcmVhdGUgKEdPYmplY3QgKm9iamVjdCkKK3sK
KwlHdGtXaWRnZXQgKm1lbnU7CisKKwkvKiBPbmx5IHdpZGdldHMgd2l0aCB3aW5kb3dzIGNhbiBy
ZWNpZXZlCisJICogbW91c2UgZXZlbnRzCisJICovCisJR1RLX1dJREdFVF9VTlNFVF9GTEFHUyhv
YmplY3QsIEdUS19OT19XSU5ET1cpOworCWd0a193aWRnZXRfYWRkX2V2ZW50cyhHVEtfV0lER0VU
KG9iamVjdCksCisJCQkgICAgICBHREtfQlVUVE9OX1BSRVNTX01BU0sgfAorCQkJICAgICAgR0RL
X0JVVFRPTl9SRUxFQVNFX01BU0sgfAorCQkJICAgICAgR0RLX0VOVEVSX05PVElGWV9NQVNLIHwK
KwkJCSAgICAgIEdES19MRUFWRV9OT1RJRllfTUFTSyk7CisJCisJLyogQ3JlYXRlIG1lbnUKKwkg
Ki8KKwltZW51ID0gZ2xhZGVfZ3RrX2ZpeGVkX3BvcHVwX21lbnUoR1RLX0ZJWEVEKG9iamVjdCkp
OworCWdfb2JqZWN0X3NldF9kYXRhKG9iamVjdCwgIkd0a0ZpeGVkTWVudSIsIChncG9pbnRlcilt
ZW51KTsKKworCS8qIE1lbnUgd2lsbCBiZSBhY3RpdmF0ZWQgb24gbW91c2UgY2xpY2tzCisJICov
CisJZ19zaWduYWxfY29ubmVjdChvYmplY3QsICJidXR0b24tcHJlc3MtZXZlbnQiLAorCQkJIEdf
Q0FMTEJBQ0soZ2xhZGVfZ3RrX2ZpeGVkX2J1dHRvbl9wcmVzcyksIE5VTEwpOworCisJZ19vYmpl
Y3Rfd2Vha19yZWYob2JqZWN0LCAoR1dlYWtOb3RpZnkpZ2xhZGVfZ3RrX2ZpeGVkX2Rlc3Ryb3lf
bWVudSwgbWVudSk7Cit9CisKKwogdm9pZCBHTEFERUdUS19BUEkKIGdsYWRlX2d0a190YWJsZV9w
b3N0X2NyZWF0ZSAoR09iamVjdCAqb2JqZWN0KQogewpAQCAtNjg2LDkgKzkwMCwxMiBAQAogCUds
YWRlUHJvcGVydHkgKnByb3BlcnR5X2NvbHMgPSBnbGFkZV93aWRnZXRfZ2V0X3Byb3BlcnR5ICh3
aWRnZXQsICJuLWNvbHVtbnMiKTsKIAlHVmFsdWUgZ3Zyb3dzID0gezAsfTsKIAlHVmFsdWUgZ3Zj
b2xzID0gezAsfTsKLQlHdGtXaWRnZXQgKmRpYWxvZyA9IGd0a19kaWFsb2dfbmV3X3dpdGhfYnV0
dG9ucyAoXygiQ3JlYXRlIGEgdGFibGUiKSwgTlVMTCwKLQkJCQkJCQkgR1RLX0RJQUxPR19NT0RB
TCB8IEdUS19ESUFMT0dfREVTVFJPWV9XSVRIX1BBUkVOVCB8IEdUS19ESUFMT0dfTk9fU0VQQVJB
VE9SLAotCQkJCQkJCSBHVEtfU1RPQ0tfT0ssIEdUS19SRVNQT05TRV9BQ0NFUFQsIE5VTEwpOwor
CUd0a1dpZGdldCAqZGlhbG9nID0KKwkJZ3RrX2RpYWxvZ19uZXdfd2l0aF9idXR0b25zIChfKCJD
cmVhdGUgYSB0YWJsZSIpLCBOVUxMLAorCQkJCQkgICAgIEdUS19ESUFMT0dfTU9EQUwgfAorCQkJ
CQkgICAgIEdUS19ESUFMT0dfREVTVFJPWV9XSVRIX1BBUkVOVCB8CisJCQkJCSAgICAgR1RLX0RJ
QUxPR19OT19TRVBBUkFUT1IsCisJCQkJCSAgICAgR1RLX1NUT0NLX09LLCBHVEtfUkVTUE9OU0Vf
QUNDRVBULCBOVUxMKTsKIAlHdGtXaWRnZXQgKmxhYmVsX3Jvd3MgPSBndGtfbGFiZWxfbmV3IChf
KCJOdW1iZXIgb2Ygcm93czoiKSk7CiAJR3RrV2lkZ2V0ICpsYWJlbF9jb2xzID0gZ3RrX2xhYmVs
X25ldyAoXygiTnVtYmVyIG9mIGNvbHVtbnM6IikpOwogCUd0a1dpZGdldCAqc3Bpbl9idXR0b25f
cm93cyA9IGd0a19zcGluX2J1dHRvbl9uZXdfd2l0aF9yYW5nZSAoMC4wLCAxMDAwMC4wLCAxLjAp
OwpAQCAtNzIyLDExICs5MzksMTQgQEAKIAlndGtfYm94X3BhY2tfc3RhcnQgKEdUS19CT1ggKEdU
S19ESUFMT0cgKGRpYWxvZyktPnZib3gpLCB0YWJsZSwgVFJVRSwgVFJVRSwgMCk7CiAKIAlndGtf
d2lkZ2V0X3Nob3dfYWxsICh0YWJsZSk7Ci0JLyogZXZlbiBpZiB0aGUgdXNlciBkZXN0cm95cyB0
aGUgZGlhbG9nIGJveCwgd2UgcmV0cmlldmUgdGhlIG51bWJlciBhbmQgd2UgYWNjZXB0IGl0LiAg
SS5lLiwgdGhpcyBmdW5jdGlvbiBuZXZlciBmYWlscyAqLworCS8qIGV2ZW4gaWYgdGhlIHVzZXIg
ZGVzdHJveXMgdGhlIGRpYWxvZyBib3gsIHdlIHJldHJpZXZlIHRoZSBudW1iZXIgYW5kIHdlIGFj
Y2VwdCBpdC4KKwkgKiBJLmUuLCB0aGlzIGZ1bmN0aW9uIG5ldmVyIGZhaWxzICovCiAJZ3RrX2Rp
YWxvZ19ydW4gKEdUS19ESUFMT0cgKGRpYWxvZykpOwogCi0JZ192YWx1ZV9zZXRfaW50ICgmZ3Zy
b3dzLCBndGtfc3Bpbl9idXR0b25fZ2V0X3ZhbHVlX2FzX2ludCAoR1RLX1NQSU5fQlVUVE9OIChz
cGluX2J1dHRvbl9yb3dzKSkpOwotCWdfdmFsdWVfc2V0X2ludCAoJmd2Y29scywgZ3RrX3NwaW5f
YnV0dG9uX2dldF92YWx1ZV9hc19pbnQgKEdUS19TUElOX0JVVFRPTiAoc3Bpbl9idXR0b25fY29s
cykpKTsKKwlnX3ZhbHVlX3NldF9pbnQgKCZndnJvd3MsIGd0a19zcGluX2J1dHRvbl9nZXRfdmFs
dWVfYXNfaW50CisJCQkgKEdUS19TUElOX0JVVFRPTiAoc3Bpbl9idXR0b25fcm93cykpKTsKKwln
X3ZhbHVlX3NldF9pbnQgKCZndmNvbHMsIGd0a19zcGluX2J1dHRvbl9nZXRfdmFsdWVfYXNfaW50
CisJCQkgKEdUS19TUElOX0JVVFRPTiAoc3Bpbl9idXR0b25fY29scykpKTsKIAogCWdsYWRlX3By
b3BlcnR5X3NldCAocHJvcGVydHlfcm93cywgJmd2cm93cyk7CiAJZ2xhZGVfcHJvcGVydHlfc2V0
IChwcm9wZXJ0eV9jb2xzLCAmZ3Zjb2xzKTsKQEAgLTc3Miw5ICs5OTIsMTMgQEAKIAlpZiAoIWNo
aWxkX2NsYXNzKQogCQlyZXR1cm47CiAKLQlndGtfYm94X3BhY2tfc3RhcnQgKEdUS19CT1ggKGRp
YWxvZy0+YWN0aW9uX2FyZWEpLCBHVEtfV0lER0VUIChnbGFkZV9wbGFjZWhvbGRlcl9uZXcgKCkp
LCBUUlVFLCBUUlVFLCAwKTsKLQlndGtfYm94X3BhY2tfc3RhcnQgKEdUS19CT1ggKGRpYWxvZy0+
YWN0aW9uX2FyZWEpLCBHVEtfV0lER0VUIChnbGFkZV9wbGFjZWhvbGRlcl9uZXcgKCkpLCBUUlVF
LCBUUlVFLCAwKTsKLQlhY3Rpb25hcmVhX3dpZGdldCA9IGdsYWRlX3dpZGdldF9uZXdfZm9yX2lu
dGVybmFsX2NoaWxkIChjaGlsZF9jbGFzcywgdmJveF93aWRnZXQsIGRpYWxvZy0+YWN0aW9uX2Fy
ZWEsICJhY3Rpb25fYXJlYSIpOworCWd0a19ib3hfcGFja19zdGFydCAoR1RLX0JPWCAoZGlhbG9n
LT5hY3Rpb25fYXJlYSksCisJCQkgICAgR1RLX1dJREdFVCAoZ2xhZGVfcGxhY2Vob2xkZXJfbmV3
ICgpKSwgVFJVRSwgVFJVRSwgMCk7CisJZ3RrX2JveF9wYWNrX3N0YXJ0IChHVEtfQk9YIChkaWFs
b2ctPmFjdGlvbl9hcmVhKSwKKwkJCSAgICBHVEtfV0lER0VUIChnbGFkZV9wbGFjZWhvbGRlcl9u
ZXcgKCkpLCBUUlVFLCBUUlVFLCAwKTsKKwlhY3Rpb25hcmVhX3dpZGdldCA9CisJCWdsYWRlX3dp
ZGdldF9uZXdfZm9yX2ludGVybmFsX2NoaWxkCisJCShjaGlsZF9jbGFzcywgdmJveF93aWRnZXQs
IGRpYWxvZy0+YWN0aW9uX2FyZWEsICJhY3Rpb25fYXJlYSIpOwogCWlmICghYWN0aW9uYXJlYV93
aWRnZXQpCiAJCXJldHVybjsKIApAQCAtODMwLDMwICsxMDU0LDM1IEBACiAJaWYgKGN1cnJlbnQt
PnBhcmVudCAhPSBjb250YWluZXIpCiAJCXJldHVybjsKIAotCXBhcmFtX3NwZWMgPSBndGtfY29u
dGFpbmVyX2NsYXNzX2xpc3RfY2hpbGRfcHJvcGVydGllcyAoR19PQkpFQ1RfR0VUX0NMQVNTIChj
b250YWluZXIpLCAmbnByb3BlcnRpZXMpOwotCXZhbHVlID0gY2FsbG9jIChucHJvcGVydGllcywg
c2l6ZW9mIChHVmFsdWUpKTsKLQlpZiAobnByb3BlcnRpZXMgIT0gMCAmJiAocGFyYW1fc3BlYyA9
PSAwIHx8IHZhbHVlID09IDApKQotCQkvLyBUT0RPOiBTaWduYWwgdGhlIG5vdCBlbm91Z2ggbWVt
b3J5IGNvbmRpdGlvbgotCQlyZXR1cm47CisJcGFyYW1fc3BlYyA9IGd0a19jb250YWluZXJfY2xh
c3NfbGlzdF9jaGlsZF9wcm9wZXJ0aWVzCisJCShHX09CSkVDVF9HRVRfQ0xBU1MgKGNvbnRhaW5l
ciksICZucHJvcGVydGllcyk7CisJdmFsdWUgPSBnX21hbGxvYzAgKHNpemVvZihHVmFsdWUpICog
bnByb3BlcnRpZXMpOwogCiAJZm9yIChpID0gMDsgaSA8IG5wcm9wZXJ0aWVzOyBpKyspIHsKIAkJ
Z192YWx1ZV9pbml0ICgmdmFsdWVbaV0sIHBhcmFtX3NwZWNbaV0tPnZhbHVlX3R5cGUpOwotCQln
dGtfY29udGFpbmVyX2NoaWxkX2dldF9wcm9wZXJ0eSAoR1RLX0NPTlRBSU5FUiAoY29udGFpbmVy
KSwgY3VycmVudCwgcGFyYW1fc3BlY1tpXS0+bmFtZSwgJnZhbHVlW2ldKTsKKwkJZ3RrX2NvbnRh
aW5lcl9jaGlsZF9nZXRfcHJvcGVydHkKKwkJCShHVEtfQ09OVEFJTkVSIChjb250YWluZXIpLCBj
dXJyZW50LCBwYXJhbV9zcGVjW2ldLT5uYW1lLCAmdmFsdWVbaV0pOwogCX0KIAogCWd0a19jb250
YWluZXJfcmVtb3ZlIChHVEtfQ09OVEFJTkVSIChjb250YWluZXIpLCBjdXJyZW50KTsKIAlndGtf
Y29udGFpbmVyX2FkZCAoR1RLX0NPTlRBSU5FUiAoY29udGFpbmVyKSwgbmV3KTsKIAotCWZvciAo
aSA9IDA7IGkgPCBucHJvcGVydGllczsgaSsrKQotCQlndGtfY29udGFpbmVyX2NoaWxkX3NldF9w
cm9wZXJ0eSAoR1RLX0NPTlRBSU5FUiAoY29udGFpbmVyKSwgbmV3LCBwYXJhbV9zcGVjW2ldLT5u
YW1lLCAmdmFsdWVbaV0pOwotCisJZm9yIChpID0gMDsgaSA8IG5wcm9wZXJ0aWVzOyBpKyspIHsK
KwkJZ3RrX2NvbnRhaW5lcl9jaGlsZF9zZXRfcHJvcGVydHkKKwkJCShHVEtfQ09OVEFJTkVSIChj
b250YWluZXIpLCBuZXcsIHBhcmFtX3NwZWNbaV0tPm5hbWUsICZ2YWx1ZVtpXSk7CisJfQorCQog
CWZvciAoaSA9IDA7IGkgPCBucHJvcGVydGllczsgaSsrKQogCQlnX3ZhbHVlX3Vuc2V0ICgmdmFs
dWVbaV0pOwogCiAJZ19mcmVlIChwYXJhbV9zcGVjKTsKLQlmcmVlICh2YWx1ZSk7CisJZ19mcmVl
ICh2YWx1ZSk7CiAKICNpZiAwCisJLyogSWYgdGhlcmUgaXMgc3RpbGwgbm8gcmVhc29uIHRvIGtl
ZXAgdGhpcyBhcm91bmQgY29tZSByZWxlYXNlCisJICogdGltZSwga2lsbCBpdC4KKwkgKi8KKwog
CWd0a193aWRnZXRfdW5wYXJlbnQgKGNoaWxkX2luZm8tPndpZGdldCk7CiAJY2hpbGRfaW5mby0+
d2lkZ2V0ID0gbmV3OwogCWd0a193aWRnZXRfc2V0X3BhcmVudCAoY2hpbGRfaW5mby0+d2lkZ2V0
LCBHVEtfV0lER0VUIChjb250YWluZXIpKTsKQEAgLTkxNiwxMSArMTE0NSwxOSBAQAogZ2xhZGVf
Z3RrX2NvbnRhaW5lcl9maWxsX2VtcHR5IChHT2JqZWN0ICpjb250YWluZXIpCiB7CiAJZ19yZXR1
cm5faWZfZmFpbCAoR1RLX0lTX0NPTlRBSU5FUiAoY29udGFpbmVyKSk7Ci0KKwkKIAlndGtfY29u
dGFpbmVyX2FkZCAoR1RLX0NPTlRBSU5FUiAoY29udGFpbmVyKSwgZ2xhZGVfcGxhY2Vob2xkZXJf
bmV3ICgpKTsKIH0KIAogdm9pZCBHTEFERUdUS19BUEkKK2dsYWRlX2d0a19maXhlZF9maWxsX2Vt
cHR5IChHT2JqZWN0ICpmaXhlZCkKK3sKKwkvKiBUaGlzIGlzIGhlcmUgcHVybHkgdG8gb3ZlcnJp
ZGUgYGdsYWRlX2d0a19jb250YWluZXJfZmlsbF9lbXB0eSgpJworCSAqIHRoZXJlIGlzIHRvIGJl
IG5vIHBsYWNlaG9sZGVyIGJ5IGRlZmF1bHQuCisJICovCit9CisKK3ZvaWQgR0xBREVHVEtfQVBJ
CiBnbGFkZV9ndGtfZGlhbG9nX2ZpbGxfZW1wdHkgKEdPYmplY3QgKmRpYWxvZykKIHsKIAlnX3Jl
dHVybl9pZl9mYWlsIChHVEtfSVNfRElBTE9HIChkaWFsb2cpKTsKQEAgLTk2OCw3ICsxMjA1LDgg
QEAKIAogCWlmIChzdHJjbXAocHJvcGVydHlfaWQsICJyZXNwb25zZS1pZCIpID09IDApCiAJewot
CQlpZiAoR1RLX0lTX0hCVVRUT05fQk9YICh3aWRnZXQtPnBhcmVudCkgJiYgR1RLX0lTX1ZCT1gg
KHdpZGdldC0+cGFyZW50LT5wYXJlbnQpICYmCisJCWlmIChHVEtfSVNfSEJVVFRPTl9CT1ggKHdp
ZGdldC0+cGFyZW50KSAmJgorCQkgICAgR1RLX0lTX1ZCT1ggKHdpZGdldC0+cGFyZW50LT5wYXJl
bnQpICYmCiAJCSAgICB3aWRnZXQtPnBhcmVudC0+cGFyZW50LT5wYXJlbnQgPT0gYW5jZXN0b3Ip
CiAJCQlyZXR1cm4gVFJVRTsKIAl9Cg==
------=_Part_103_29030997.1097093771340--




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]