<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>9509</bug_id>
          
          <creation_ts>2006-06-19 15:36:44 -0700</creation_ts>
          <short_desc>Would like a way to pause/resume XML parsing</short_desc>
          <delta_ts>2006-06-20 14:29:48 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>XML</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>6058</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>46305</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2006-06-19 15:36:44 -0700</bug_when>
    <thetext>This is needed to be able to load external DTD definitions without blocking, as well as external scripts (if a &lt;script src=&quot;&quot;&gt; tag is encountered, parsing should pause until the file has loaded and then resume.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46307</commentid>
    <comment_count>1</comment_count>
      <attachid>8925</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2006-06-19 16:27:22 -0700</bug_when>
    <thetext>Created attachment 8925
Patch

Unfortunately there&apos;s no way to pause/resume the libxml SAX parser (it&apos;s possible with expat) so a rather kludgey workaround is used. I&apos;ve verified that it works by calling pause before parsing and resume inside ::finish.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46418</commentid>
    <comment_count>2</comment_count>
      <attachid>8925</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-06-20 02:41:01 -0700</bug_when>
    <thetext>Comment on attachment 8925
Patch

On the substance this looks ok, but I think it would be better to use subclasses instead of just a tagged union for PendingCallbacks, this would allow elimination of most of the switch statements also. Suggest rewriting along theselines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46421</commentid>
    <comment_count>3</comment_count>
      <attachid>8933</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2006-06-20 09:08:04 -0700</bug_when>
    <thetext>Created attachment 8933
Address comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46451</commentid>
    <comment_count>4</comment_count>
      <attachid>8933</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2006-06-20 14:24:47 -0700</bug_when>
    <thetext>Comment on attachment 8933
Address comments

union gone. band happy. r me.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8925</attachid>
            <date>2006-06-19 16:27:22 -0700</date>
            <delta_ts>2006-06-20 09:08:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>xml-tokenizer-pause.txt</filename>
            <type>text/plain</type>
            <size>20581</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTE2
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTMgQEAKKzIwMDYtMDYt
MjAgIEFuZGVycyBDYXJsc3NvbiAgPGFjYXJsc3NvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cDovL2J1Z3ppbGxhLm9wZW5k
YXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD05NTA5CisgICAgICAgIFdvdWxkIGxpa2UgYSB3YXkg
dG8gcGF1c2UvcmVzdW1lIFhNTCBwYXJzaW5nCisgICAgICAgIAorICAgICAgICAqIGRvbS94bWxf
dG9rZW5pemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OlBlbmRp
bmdDYWxsYmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5k
U3RhcnRFbGVtZW50TlNDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJh
Y2tzOjphcHBlbmRFbmRFbGVtZW50TlNDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQZW5k
aW5nQ2FsbGJhY2tzOjphcHBlbmRDaGFyYWN0ZXJzQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5kUHJvY2Vzc2luZ0luc3RydWN0aW9uQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5kQ0RBVEFCbG9ja0Nh
bGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZENvbW1l
bnRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRJ
bnRlcm5hbFN1YnNldENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFj
a3M6OmFwcGVuZEVycm9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0NhbGxi
YWNrczo6aXNFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjopOgor
ICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0NhbGxiYWNrczo6UGVuZGluZ0NhbGxiYWNrOjp+UGVu
ZGluZ0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OlBlbmRp
bmdDYWxsYmFjazo6KToKKyAgICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmNhbGxB
bmRSZW1vdmVGaXJzdENhbGxiYWNrKToKKyAgICAgICAgTmV3IGNsYXNzIHdoaWNoIGlzIGEgbGlz
dCBvZiBwZW5kaW5nIFNBWCBjYWxsYmFja3MgdGhhdCBoYXZlIG5vdCB5ZXQKKyAgICAgICAgYmVl
biBzZW50IHRvIHRoZSB0b2tlbml6ZXIuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6WE1M
VG9rZW5pemVyOjpYTUxUb2tlbml6ZXIpOgorICAgICAgICBJbml0aWFsaXplIG5ldyBtZW1iZXIg
dmFyaWFibGVzLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OlhNTFRva2VuaXplcjo6d3Jp
dGUpOgorICAgICAgICBJZiB0aGUgcGFyc2VyIGlzIHBhdXNlZCwgcXVldWUgdGhlIGRhdGEgdG8g
YmUgd3JpdHRlbi4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbml6ZXI6OnN0
YXJ0RWxlbWVudE5zKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTFRva2VuaXplcjo6ZW5kRWxlbWVu
dE5zKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTFRva2VuaXplcjo6Y2hhcmFjdGVycyk6ICAgICAg
ICAKKyAgICAgICAgKFdlYkNvcmU6OlhNTFRva2VuaXplcjo6cHJvY2Vzc2luZ0luc3RydWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTFRva2VuaXplcjo6Y2RhdGFCbG9jayk6CisgICAgICAg
IChXZWJDb3JlOjpYTUxUb2tlbml6ZXI6OmNvbW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6WE1M
VG9rZW5pemVyOjppbnRlcm5hbFN1YnNldCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbml6
ZXI6OmVycm9yKToKKyAgICAgICAgSWYgdGhlIHBhcnNlciBoYXMgYmVlbiBwYXVzZWQsIHF1ZXVl
IHRoZSBjYWxsYmFja3MgaW5zdGVhZC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpYTUxU
b2tlbml6ZXI6OmhhbmRsZUVycm9yKToKKyAgICAgICAgTmV3IGZ1bmN0aW9uLCBjYWxsZWQgYnkg
Ym90aCA6OmVycm9yIGFuZCA6UGVuZGluZ0NhbGxiYWNrczo6Y2FsbEFuZFJlbW92ZUZpcnN0Q2Fs
bGJhY2sKKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbml6ZXI6OnBhdXNlUGFy
c2luZyk6CisgICAgICAgIFNldCBtX3BhcnNlclBhdXNlZCB0byB0cnVlLgorICAgICAgICAKKyAg
ICAgICAgKFdlYkNvcmU6OlhNTFRva2VuaXplcjo6cmVzdW1lUGFyc2luZyk6CisgICAgICAgIENh
bGwgdGhlIHBlbmRpbmcgY2FsbGJhY2tzIGFuZCB0aGVuIHBhcnNlIHRoZSBwZW5kaW5nIHNvdXJj
ZS4KKwogMjAwNi0wNi0xOSAgU2FtIFdlaW5pZyAgPHNhbS53ZWluaWdAZ21haWwuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluLgpJbmRleDogZG9tL3htbF90b2tlbml6ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIGRvbS94bWxfdG9rZW5pemVyLmNwcAkocmV2aXNpb24gMTQ5MTYpCisrKyBk
b20veG1sX3Rva2VuaXplci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDEzICs1MiwyMTAgQEAK
IHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQorICAgIAogdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogY29uc3QgaW50IG1heEVycm9ycyA9IDI1OwogCiB0
eXBlZGVmIEhhc2hNYXA8U3RyaW5nSW1wbCAqLCBTdHJpbmdJbXBsICo+IFByZWZpeEZvck5hbWVz
cGFjZU1hcDsKIAorY2xhc3MgWE1MVG9rZW5pemVyOworCitjbGFzcyBQZW5kaW5nQ2FsbGJhY2tz
IHsKK3B1YmxpYzoKKyAgICBQZW5kaW5nQ2FsbGJhY2tzKCkKKyAgICB7CisgICAgICAgIG1fY2Fs
bGJhY2tzLnNldEF1dG9EZWxldGUodHJ1ZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXBwZW5k
U3RhcnRFbGVtZW50TlNDYWxsYmFjayhjb25zdCB4bWxDaGFyICp4bWxMb2NhbE5hbWUsIGNvbnN0
IHhtbENoYXIgKnhtbFByZWZpeCwgY29uc3QgeG1sQ2hhciAqeG1sVVJJLCBpbnQgbmJfbmFtZXNw
YWNlcywgY29uc3QgeG1sQ2hhciAqKm5hbWVzcGFjZXMsIGludCBuYl9hdHRyaWJ1dGVzLCBpbnQg
bmJfZGVmYXVsdGVkLCBjb25zdCB4bWxDaGFyICoqYXR0cmlidXRlcykKKyAgICB7CisgICAgICAg
IFBlbmRpbmdDYWxsYmFjayogY2FsbGJhY2sgPSBuZXcgUGVuZGluZ0NhbGxiYWNrOworICAgICAg
ICAKKyAgICAgICAgY2FsbGJhY2stPmNhbGxiYWNrVHlwZSA9IFN0YXJ0RWxlbWVudE5TOworICAg
ICAgICBjYWxsYmFjay0+c3RhcnRFbGVtZW50TlMueG1sTG9jYWxOYW1lID0geG1sU3RyZHVwKHht
bExvY2FsTmFtZSk7CisgICAgICAgIGNhbGxiYWNrLT5zdGFydEVsZW1lbnROUy54bWxQcmVmaXgg
PSB4bWxTdHJkdXAoeG1sUHJlZml4KTsKKyAgICAgICAgY2FsbGJhY2stPnN0YXJ0RWxlbWVudE5T
LnhtbFVSSSA9IHhtbFN0cmR1cCh4bWxVUkkpOworICAgICAgICBjYWxsYmFjay0+c3RhcnRFbGVt
ZW50TlMubmJfbmFtZXNwYWNlcyA9IG5iX25hbWVzcGFjZXM7CisgICAgICAgIGNhbGxiYWNrLT5z
dGFydEVsZW1lbnROUy5uYW1lc3BhY2VzID0gcmVpbnRlcnByZXRfY2FzdDx4bWxDaGFyKio+KHht
bE1hbGxvYyhzaXplb2YgKHhtbENoYXIqKSAqIG5iX25hbWVzcGFjZXMgKiAyKSk7CisgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgbmJfbmFtZXNwYWNlcyAqIDIgOyBpKyspCisgICAgICAgICAg
ICBjYWxsYmFjay0+c3RhcnRFbGVtZW50TlMubmFtZXNwYWNlc1tpXSA9IHhtbFN0cmR1cChuYW1l
c3BhY2VzW2ldKTsKKyAgICAgICAgY2FsbGJhY2stPnN0YXJ0RWxlbWVudE5TLm5iX2F0dHJpYnV0
ZXMgPSBuYl9hdHRyaWJ1dGVzOworICAgICAgICBjYWxsYmFjay0+c3RhcnRFbGVtZW50TlMubmJf
ZGVmYXVsdGVkID0gbmJfZGVmYXVsdGVkOworICAgICAgICBjYWxsYmFjay0+c3RhcnRFbGVtZW50
TlMuYXR0cmlidXRlcyA9ICByZWludGVycHJldF9jYXN0PHhtbENoYXIqKj4oeG1sTWFsbG9jKHNp
emVvZiAoeG1sQ2hhciopICogbmJfYXR0cmlidXRlcyAqIDUpKTsKKyAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBuYl9hdHRyaWJ1dGVzOyBpKyspIHsKKyAgICAgICAgICAgIGZvciAoaW50IGog
PSAwOyBqIDwgMzsgaisrKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrLT5zdGFydEVsZW1lbnRO
Uy5hdHRyaWJ1dGVzW2kgKiA1ICsgal0gPSB4bWxTdHJkdXAoYXR0cmlidXRlc1tpICogNSArIGpd
KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaW50IGxlbiA9IGF0dHJpYnV0ZXNbaSAqIDUg
KyA0XSAtIGF0dHJpYnV0ZXNbaSAqIDUgKyAzXTsKKworICAgICAgICAgICAgY2FsbGJhY2stPnN0
YXJ0RWxlbWVudE5TLmF0dHJpYnV0ZXNbaSAqIDUgKyAzXSA9IHhtbFN0cm5kdXAoYXR0cmlidXRl
c1tpICogNSArIDNdLCBsZW4pOworICAgICAgICAgICAgY2FsbGJhY2stPnN0YXJ0RWxlbWVudE5T
LmF0dHJpYnV0ZXNbaSAqIDUgKyA0XSA9IGNhbGxiYWNrLT5zdGFydEVsZW1lbnROUy5hdHRyaWJ1
dGVzW2kgKiA1ICsgM10gKyBsZW47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG1fY2Fs
bGJhY2tzLmFwcGVuZChjYWxsYmFjayk7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRFbmRFbGVt
ZW50TlNDYWxsYmFjaygpCisgICAgeworICAgICAgICBQZW5kaW5nQ2FsbGJhY2sqIGNhbGxiYWNr
ID0gbmV3IFBlbmRpbmdDYWxsYmFjazsKKyAgICAgICAgCisgICAgICAgIGNhbGxiYWNrLT5jYWxs
YmFja1R5cGUgPSBFbmRFbGVtZW50TlM7CisgICAgICAgIG1fY2FsbGJhY2tzLmFwcGVuZChjYWxs
YmFjayk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXBwZW5kQ2hhcmFjdGVyc0NhbGxiYWNrKGNv
bnN0IHhtbENoYXIgKnMsIGludCBsZW4pCisgICAgeworICAgICAgICBQZW5kaW5nQ2FsbGJhY2sq
IGNhbGxiYWNrID0gbmV3IFBlbmRpbmdDYWxsYmFjazsKKyAgICAgICAgCisgICAgICAgIGNhbGxi
YWNrLT5jYWxsYmFja1R5cGUgPSBDaGFyYWN0ZXJzOworICAgICAgICBjYWxsYmFjay0+Y2hhcmFj
dGVycy5zID0geG1sU3RybmR1cChzLCBsZW4pOworICAgICAgICBjYWxsYmFjay0+Y2hhcmFjdGVy
cy5sZW4gPSBsZW47CisgICAgICAgIAorICAgICAgICBtX2NhbGxiYWNrcy5hcHBlbmQoY2FsbGJh
Y2spOyAgICAgICAgCisgICAgfQorICAgIAorICAgIHZvaWQgYXBwZW5kUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uQ2FsbGJhY2soY29uc3QgeG1sQ2hhciAqdGFyZ2V0LCBjb25zdCB4bWxDaGFyICpkYXRh
KQorICAgIHsKKyAgICAgICAgUGVuZGluZ0NhbGxiYWNrKiBjYWxsYmFjayA9IG5ldyBQZW5kaW5n
Q2FsbGJhY2s7CisgICAgICAgIAorICAgICAgICBjYWxsYmFjay0+Y2FsbGJhY2tUeXBlID0gUHJv
Y2Vzc2luZ0luc3RydWN0aW9uOworICAgICAgICBjYWxsYmFjay0+cHJvY2Vzc2luZ0luc3RydWN0
aW9uLnRhcmdldCA9IHhtbFN0cmR1cCh0YXJnZXQpOworICAgICAgICBjYWxsYmFjay0+cHJvY2Vz
c2luZ0luc3RydWN0aW9uLmRhdGEgPSB4bWxTdHJkdXAoZGF0YSk7CisgICAgICAgIAorICAgICAg
ICBtX2NhbGxiYWNrcy5hcHBlbmQoY2FsbGJhY2spOworICAgIH0KKyAgICAKKyAgICB2b2lkIGFw
cGVuZENEQVRBQmxvY2tDYWxsYmFjayhjb25zdCB4bWxDaGFyICpzLCBpbnQgbGVuKQorICAgIHsK
KyAgICAgICAgUGVuZGluZ0NhbGxiYWNrKiBjYWxsYmFjayA9IG5ldyBQZW5kaW5nQ2FsbGJhY2s7
CisgICAgICAgIAorICAgICAgICBjYWxsYmFjay0+Y2FsbGJhY2tUeXBlID0gQ0RBVEFCbG9jazsK
KyAgICAgICAgCisgICAgICAgIGNhbGxiYWNrLT5jaGFyYWN0ZXJzLnMgPSB4bWxTdHJuZHVwKHMs
IGxlbik7CisgICAgICAgIGNhbGxiYWNrLT5jaGFyYWN0ZXJzLmxlbiA9IGxlbjsKKyAgICAgICAg
CisgICAgICAgIG1fY2FsbGJhY2tzLmFwcGVuZChjYWxsYmFjayk7ICAgICAgICAKKyAgICB9CisK
KyAgICB2b2lkIGFwcGVuZENvbW1lbnRDYWxsYmFjayhjb25zdCB4bWxDaGFyICpzKQorICAgIHsK
KyAgICAgICAgUGVuZGluZ0NhbGxiYWNrKiBjYWxsYmFjayA9IG5ldyBQZW5kaW5nQ2FsbGJhY2s7
CisgICAgICAgIAorICAgICAgICBjYWxsYmFjay0+Y2FsbGJhY2tUeXBlID0gQ29tbWVudDsKKyAg
ICAgICAgY2FsbGJhY2stPmNoYXJhY3RlcnMucyA9IHhtbFN0cmR1cChzKTsKKyAgICAgICAgCisg
ICAgICAgIG1fY2FsbGJhY2tzLmFwcGVuZChjYWxsYmFjayk7ICAgICAgICAKKyAgICB9CisKKyAg
ICB2b2lkIGFwcGVuZEludGVybmFsU3Vic2V0Q2FsbGJhY2soY29uc3QgeG1sQ2hhciAqbmFtZSwg
Y29uc3QgeG1sQ2hhciAqZXh0ZXJuYWxJRCwgY29uc3QgeG1sQ2hhciAqc3lzdGVtSUQpCisgICAg
eworICAgICAgICBQZW5kaW5nQ2FsbGJhY2sqIGNhbGxiYWNrID0gbmV3IFBlbmRpbmdDYWxsYmFj
azsKKyAgICAgICAgCisgICAgICAgIGNhbGxiYWNrLT5jYWxsYmFja1R5cGUgPSBJbnRlcm5hbFN1
YnNldDsKKyAgICAgICAgCisgICAgICAgIGNhbGxiYWNrLT5pbnRlcm5hbFN1YnNldC5uYW1lID0g
eG1sU3RyZHVwKG5hbWUpOworICAgICAgICBjYWxsYmFjay0+aW50ZXJuYWxTdWJzZXQuZXh0ZXJu
YWxJRCA9IHhtbFN0cmR1cChleHRlcm5hbElEKTsKKyAgICAgICAgY2FsbGJhY2stPmludGVybmFs
U3Vic2V0LnN5c3RlbUlEID0geG1sU3RyZHVwKHN5c3RlbUlEKTsKKyAgICAgICAgCisgICAgICAg
IG1fY2FsbGJhY2tzLmFwcGVuZChjYWxsYmFjayk7ICAgICAgICAKKyAgICB9CisgICAgCisgICAg
dm9pZCBhcHBlbmRFcnJvckNhbGxiYWNrKGludCB0eXBlLCBjb25zdCBjaGFyKiBtZXNzYWdlLCBp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKKyAgICB7CisgICAgICAgIFBlbmRpbmdD
YWxsYmFjayogY2FsbGJhY2sgPSBuZXcgUGVuZGluZ0NhbGxiYWNrOworICAgICAgICAKKyAgICAg
ICAgY2FsbGJhY2stPmNhbGxiYWNrVHlwZSA9IEVycm9yOworICAgICAgICAKKyAgICAgICAgY2Fs
bGJhY2stPmVycm9yLnR5cGUgPSB0eXBlOworICAgICAgICBjYWxsYmFjay0+ZXJyb3IubWVzc2Fn
ZSA9IHN0cmR1cChtZXNzYWdlKTsKKyAgICAgICAgY2FsbGJhY2stPmVycm9yLmxpbmVOdW1iZXIg
PSBsaW5lTnVtYmVyOworICAgICAgICBjYWxsYmFjay0+ZXJyb3IuY29sdW1uTnVtYmVyID0gY29s
dW1uTnVtYmVyOworICAgICAgICAKKyAgICAgICAgbV9jYWxsYmFja3MuYXBwZW5kKGNhbGxiYWNr
KTsKKyAgICB9CisKKyAgICB2b2lkIGNhbGxBbmRSZW1vdmVGaXJzdENhbGxiYWNrKFhNTFRva2Vu
aXplciogdG9rZW5pemVyKTsKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2Nh
bGxiYWNrcy5pc0VtcHR5KCk7IH0KKyAgICAKK3ByaXZhdGU6ICAgIAorICAgIGVudW0gQ2FsbGJh
Y2tUeXBlIHsgU3RhcnRFbGVtZW50TlMsIEVuZEVsZW1lbnROUywgQ2hhcmFjdGVycywgUHJvY2Vz
c2luZ0luc3RydWN0aW9uLCBDREFUQUJsb2NrLCBDb21tZW50LCBJbnRlcm5hbFN1YnNldCwgRXJy
b3IgfTsKKworICAgIHN0cnVjdCBQZW5kaW5nQ2FsbGJhY2sgeyAgICAgICAgCisgICAgICAgIENh
bGxiYWNrVHlwZSBjYWxsYmFja1R5cGU7CisgICAgICAgIAorICAgICAgICB+UGVuZGluZ0NhbGxi
YWNrKCkgeworICAgICAgICAgICAgc3dpdGNoKGNhbGxiYWNrVHlwZSkgeworICAgICAgICAgICAg
ICAgIGNhc2UgU3RhcnRFbGVtZW50TlM6CisgICAgICAgICAgICAgICAgICAgIHhtbEZyZWUoc3Rh
cnRFbGVtZW50TlMueG1sTG9jYWxOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgeG1sRnJlZShz
dGFydEVsZW1lbnROUy54bWxQcmVmaXgpOworICAgICAgICAgICAgICAgICAgICB4bWxGcmVlKHN0
YXJ0RWxlbWVudE5TLnhtbFVSSSk7CisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgc3RhcnRFbGVtZW50TlMubmJfbmFtZXNwYWNlcyAqIDI7IGkrKykKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHhtbEZyZWUoc3RhcnRFbGVtZW50TlMubmFtZXNwYWNlc1tpXSk7CisgICAg
ICAgICAgICAgICAgICAgIHhtbEZyZWUoc3RhcnRFbGVtZW50TlMubmFtZXNwYWNlcyk7CisgICAg
ICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3RhcnRFbGVtZW50TlMubmJfYXR0
cmlidXRlczsgaSsrKQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGog
PCA0OyBqKyspIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbEZyZWUoc3RhcnRFbGVt
ZW50TlMuYXR0cmlidXRlc1tpICogNSArIGpdKTsKKyAgICAgICAgICAgICAgICAgICAgeG1sRnJl
ZShzdGFydEVsZW1lbnROUy5hdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgY2FzZSBFbmRFbGVtZW50TlM6CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ0RBVEFCbG9jazoKKyAgICAgICAgICAgICAg
ICBjYXNlIENoYXJhY3RlcnM6CisgICAgICAgICAgICAgICAgY2FzZSBDb21tZW50OgorICAgICAg
ICAgICAgICAgICAgICB4bWxGcmVlKGNoYXJhY3RlcnMucyk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgUHJvY2Vzc2luZ0luc3RydWN0aW9uOgorICAg
ICAgICAgICAgICAgICAgICB4bWxGcmVlKHByb2Nlc3NpbmdJbnN0cnVjdGlvbi50YXJnZXQpOwor
ICAgICAgICAgICAgICAgICAgICB4bWxGcmVlKHByb2Nlc3NpbmdJbnN0cnVjdGlvbi5kYXRhKTsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBJbnRlcm5h
bFN1YnNldDoKKyAgICAgICAgICAgICAgICAgICAgeG1sRnJlZShpbnRlcm5hbFN1YnNldC5uYW1l
KTsKKyAgICAgICAgICAgICAgICAgICAgeG1sRnJlZShpbnRlcm5hbFN1YnNldC5leHRlcm5hbElE
KTsKKyAgICAgICAgICAgICAgICAgICAgeG1sRnJlZShpbnRlcm5hbFN1YnNldC5zeXN0ZW1JRCk7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRXJyb3I6
CisgICAgICAgICAgICAgICAgICAgIGZyZWUoZXJyb3IubWVzc2FnZSk7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICB1bmlvbiB7CisgICAgICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgICAgIHhtbENoYXIq
IHhtbExvY2FsTmFtZTsKKyAgICAgICAgICAgICAgICB4bWxDaGFyKiB4bWxQcmVmaXg7CisgICAg
ICAgICAgICAgICAgeG1sQ2hhciogeG1sVVJJOworICAgICAgICAgICAgICAgIGludCBuYl9uYW1l
c3BhY2VzOworICAgICAgICAgICAgICAgIHhtbENoYXIqKiBuYW1lc3BhY2VzOworICAgICAgICAg
ICAgICAgIGludCBuYl9hdHRyaWJ1dGVzOworICAgICAgICAgICAgICAgIGludCBuYl9kZWZhdWx0
ZWQ7CisgICAgICAgICAgICAgICAgeG1sQ2hhcioqIGF0dHJpYnV0ZXM7CisgICAgICAgICAgICB9
IHN0YXJ0RWxlbWVudE5TOworICAgICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgICAgICB4
bWxDaGFyKiBzOworICAgICAgICAgICAgICAgIGludCBsZW47CisgICAgICAgICAgICB9IGNoYXJh
Y3RlcnM7CisgICAgICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgICAgIHhtbENoYXIqIHRh
cmdldDsKKyAgICAgICAgICAgICAgICB4bWxDaGFyKiBkYXRhOworICAgICAgICAgICAgfSBwcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb247CisgICAgICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgICAg
IHhtbENoYXIqIG5hbWU7CisgICAgICAgICAgICAgICAgeG1sQ2hhciogZXh0ZXJuYWxJRDsKKyAg
ICAgICAgICAgICAgICB4bWxDaGFyKiBzeXN0ZW1JRDsKKyAgICAgICAgICAgIH0gaW50ZXJuYWxT
dWJzZXQ7CisgICAgICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgICAgIGludCB0eXBlOwor
ICAgICAgICAgICAgICAgIGNoYXIqIG1lc3NhZ2U7CisgICAgICAgICAgICAgICAgaW50IGxpbmVO
dW1iZXI7CisgICAgICAgICAgICAgICAgaW50IGNvbHVtbk51bWJlcjsKKyAgICAgICAgICAgIH0g
ZXJyb3I7CisgICAgICAgIH07CisgICAgfTsgIAorcHVibGljOgorICAgIERlcHJlY2F0ZWRQdHJM
aXN0PFBlbmRpbmdDYWxsYmFjaz4gbV9jYWxsYmFja3M7Cit9OworCiBjbGFzcyBYTUxUb2tlbml6
ZXIgOiBwdWJsaWMgVG9rZW5pemVyLCBwdWJsaWMgQ2FjaGVkT2JqZWN0Q2xpZW50CiB7CiBwdWJs
aWM6CkBAIC03NCw2ICsyNzEsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzV2FpdGlu
Z0ZvclNjcmlwdHMoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcFBhcnNpbmcoKTsKIAor
ICAgIHZvaWQgcGF1c2VQYXJzaW5nKCk7CisgICAgdm9pZCByZXN1bWVQYXJzaW5nKCk7CisgICAg
CiAgICAgdm9pZCBzZXRJc1hIVE1MRG9jdW1lbnQoYm9vbCBpc1hIVE1MKSB7IG1faXNYSFRNTERv
Y3VtZW50ID0gaXNYSFRNTDsgfQogICAgIGJvb2wgaXNYSFRNTERvY3VtZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9pc1hIVE1MRG9jdW1lbnQ7IH0KIApAQCAtOTAsNiArMjkwLDggQEAgcHVibGljOgog
ICAgIHZvaWQgY29tbWVudChjb25zdCB4bWxDaGFyICpzKTsKICAgICB2b2lkIGludGVybmFsU3Vi
c2V0KGNvbnN0IHhtbENoYXIgKm5hbWUsIGNvbnN0IHhtbENoYXIgKmV4dGVybmFsSUQsIGNvbnN0
IHhtbENoYXIgKnN5c3RlbUlEKTsKIAorICAgIHZvaWQgaGFuZGxlRXJyb3IoRXJyb3JUeXBlIHR5
cGUsIGNvbnN0IGNoYXIqIG0sIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKTsKKyAg
ICAKIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplUGFyc2VyQ29udGV4dCgpOwogICAgIHZv
aWQgc2V0Q3VycmVudE5vZGUoTm9kZSopOwpAQCAtMTE5LDYgKzMyMSw4IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX3Nhd0ZpcnN0RWxlbWVudDsKICAgICBib29sIG1faXNYSFRNTERvY3VtZW50Owog
ICAgIAorICAgIGJvb2wgbV9wYXJzZXJQYXVzZWQ7CisgICAgCiAgICAgaW50IG1fZXJyb3JDb3Vu
dDsKICAgICBpbnQgbV9sYXN0RXJyb3JMaW5lOwogICAgIGludCBtX2xhc3RFcnJvckNvbHVtbjsK
QEAgLTEzMSw4ICszMzUsNDggQEAgcHJpdmF0ZToKICAgICBib29sIG1fcGFyc2luZ0ZyYWdtZW50
OwogICAgIFN0cmluZyBtX2RlZmF1bHROYW1lc3BhY2VVUkk7CiAgICAgUHJlZml4Rm9yTmFtZXNw
YWNlTWFwIG1fcHJlZml4VG9OYW1lc3BhY2VNYXA7CisgICAgCisgICAgUGVuZGluZ0NhbGxiYWNr
cyBtX3BlbmRpbmdDYWxsYmFja3M7CisgICAgU2VnbWVudGVkU3RyaW5nIG1fcGVuZGluZ1NyYzsK
IH07CiAKK3ZvaWQgUGVuZGluZ0NhbGxiYWNrczo6Y2FsbEFuZFJlbW92ZUZpcnN0Q2FsbGJhY2so
WE1MVG9rZW5pemVyKiB0b2tlbml6ZXIpCit7CisgICAgUGVuZGluZ0NhbGxiYWNrICpjYiA9IG1f
Y2FsbGJhY2tzLmdldEZpcnN0KCk7CisgICAgCisgICAgc3dpdGNoKGNiLT5jYWxsYmFja1R5cGUp
IHsKKyAgICAgICAgY2FzZSBTdGFydEVsZW1lbnROUzoKKyAgICAgICAgICAgIHRva2VuaXplci0+
c3RhcnRFbGVtZW50TnMoY2ItPnN0YXJ0RWxlbWVudE5TLnhtbExvY2FsTmFtZSwgY2ItPnN0YXJ0
RWxlbWVudE5TLnhtbFByZWZpeCwgY2ItPnN0YXJ0RWxlbWVudE5TLnhtbFVSSSwgCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNiLT5zdGFydEVsZW1lbnROUy5uYl9uYW1l
c3BhY2VzLCAoY29uc3QgeG1sQ2hhcioqKShjYi0+c3RhcnRFbGVtZW50TlMubmFtZXNwYWNlcyks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNiLT5zdGFydEVsZW1lbnRO
Uy5uYl9hdHRyaWJ1dGVzLCBjYi0+c3RhcnRFbGVtZW50TlMubmJfZGVmYXVsdGVkLCAoY29uc3Qg
eG1sQ2hhcioqKShjYi0+c3RhcnRFbGVtZW50TlMuYXR0cmlidXRlcykpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgRW5kRWxlbWVudE5TOgorICAgICAgICAgICAgdG9rZW5pemVy
LT5lbmRFbGVtZW50TnMoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENEQVRB
QmxvY2s6CisgICAgICAgICAgICB0b2tlbml6ZXItPmNkYXRhQmxvY2soY2ItPmNoYXJhY3RlcnMu
cywgY2ItPmNoYXJhY3RlcnMubGVuKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IENoYXJhY3RlcnM6CisgICAgICAgICAgICB0b2tlbml6ZXItPmNoYXJhY3RlcnMoY2ItPmNoYXJh
Y3RlcnMucywgY2ItPmNoYXJhY3RlcnMubGVuKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIENvbW1lbnQ6CisgICAgICAgICAgICB0b2tlbml6ZXItPmNvbW1lbnQoY2ItPmNoYXJh
Y3RlcnMucyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb246CisgICAgICAgICAgICB0b2tlbml6ZXItPnByb2Nlc3NpbmdJbnN0cnVjdGlvbihj
Yi0+cHJvY2Vzc2luZ0luc3RydWN0aW9uLnRhcmdldCwgY2ItPnByb2Nlc3NpbmdJbnN0cnVjdGlv
bi5kYXRhKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEludGVybmFsU3Vic2V0
OgorICAgICAgICAgICAgdG9rZW5pemVyLT5pbnRlcm5hbFN1YnNldChjYi0+aW50ZXJuYWxTdWJz
ZXQubmFtZSwgY2ItPmludGVybmFsU3Vic2V0LmV4dGVybmFsSUQsIGNiLT5pbnRlcm5hbFN1YnNl
dC5zeXN0ZW1JRCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFcnJvcjoKKyAg
ICAgICAgICAgIHRva2VuaXplci0+aGFuZGxlRXJyb3Ioc3RhdGljX2Nhc3Q8WE1MVG9rZW5pemVy
OjpFcnJvclR5cGU+KGNiLT5lcnJvci50eXBlKSwgY2ItPmVycm9yLm1lc3NhZ2UsIGNiLT5lcnJv
ci5saW5lTnVtYmVyLCBjYi0+ZXJyb3IuY29sdW1uTnVtYmVyKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICAKKyAgICBtX2NhbGxiYWNrcy5yZW1vdmVGaXJzdCgpOworfQorCisKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIHN0YXRpYyBpbnQgZ2xvYmFsRGVz
Y3JpcHRvciA9IDA7CkBAIC0yNDcsNiArNDkxLDcgQEAgWE1MVG9rZW5pemVyOjpYTUxUb2tlbml6
ZXIoRG9jdW1lbnQgKl9kbwogICAgICwgbV9zYXdYU0xUcmFuc2Zvcm0oZmFsc2UpCiAgICAgLCBt
X3Nhd0ZpcnN0RWxlbWVudChmYWxzZSkKICAgICAsIG1faXNYSFRNTERvY3VtZW50KGZhbHNlKQor
ICAgICwgbV9wYXJzZXJQYXVzZWQoZmFsc2UpCiAgICAgLCBtX2Vycm9yQ291bnQoMCkKICAgICAs
IG1fbGFzdEVycm9yTGluZSgwKQogICAgICwgbV9sYXN0RXJyb3JDb2x1bW4oMCkKQEAgLTI1NCw2
ICs0OTksNyBAQCBYTUxUb2tlbml6ZXI6OlhNTFRva2VuaXplcihEb2N1bWVudCAqX2RvCiAgICAg
LCBtX2NhY2hlZFNjcmlwdCgwKQogICAgICwgbV9wYXJzaW5nRnJhZ21lbnQoZmFsc2UpCiB7Cisg
ICAgcGF1c2VQYXJzaW5nKCk7CiB9CiAKIFhNTFRva2VuaXplcjo6WE1MVG9rZW5pemVyKERvY3Vt
ZW50RnJhZ21lbnQgKmZyYWdtZW50LCBFbGVtZW50ICpwYXJlbnRFbGVtZW50KQpAQCAtMjY2LDYg
KzUxMiw3IEBAIFhNTFRva2VuaXplcjo6WE1MVG9rZW5pemVyKERvY3VtZW50RnJhZ20KICAgICAs
IG1fc2F3WFNMVHJhbnNmb3JtKGZhbHNlKQogICAgICwgbV9zYXdGaXJzdEVsZW1lbnQoZmFsc2Up
CiAgICAgLCBtX2lzWEhUTUxEb2N1bWVudChmYWxzZSkKKyAgICAsIG1fcGFyc2VyUGF1c2VkKGZh
bHNlKQogICAgICwgbV9lcnJvckNvdW50KDApCiAgICAgLCBtX2xhc3RFcnJvckxpbmUoMCkKICAg
ICAsIG1fbGFzdEVycm9yQ29sdW1uKDApCkBAIC0zMjUsMTEgKzU3MiwxOCBAQCB2b2lkIFhNTFRv
a2VuaXplcjo6c2V0Q3VycmVudE5vZGUoTm9kZSogCiBib29sIFhNTFRva2VuaXplcjo6d3JpdGUo
Y29uc3QgU2VnbWVudGVkU3RyaW5nICZzLCBib29sIC8qYXBwZW5kRGF0YSovICkKIHsKICAgICBE
ZXByZWNhdGVkU3RyaW5nIHBhcnNlU3RyaW5nID0gcy50b1N0cmluZygpOworICAgIAogICAgIGlm
IChtX3Nhd1hTTFRyYW5zZm9ybSB8fCAhbV9zYXdGaXJzdEVsZW1lbnQpCiAgICAgICAgIG1fb3Jp
Z2luYWxTb3VyY2VGb3JUcmFuc2Zvcm0gKz0gcGFyc2VTdHJpbmc7CiAKICAgICBpZiAobV9wYXJz
ZXJTdG9wcGVkIHx8IG1fc2F3WFNMVHJhbnNmb3JtKQogICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgCisgICAgaWYgKG1fcGFyc2VyUGF1c2VkKSB7CisgICAgICAgIG1fcGVuZGluZ1NyYy5hcHBl
bmQocyk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCiAgICAgaWYgKCFtX2Nv
bnRleHQpCiAgICAgICAgIGluaXRpYWxpemVQYXJzZXJDb250ZXh0KCk7CiAgICAgCkBAIC00MTcs
NiArNjcxLDExIEBAIHZvaWQgWE1MVG9rZW5pemVyOjpzdGFydEVsZW1lbnROcyhjb25zdCAKICAg
ICBpZiAobV9wYXJzZXJTdG9wcGVkKQogICAgICAgICByZXR1cm47CiAgICAgCisgICAgaWYgKG1f
cGFyc2VyUGF1c2VkKSB7CisgICAgICAgIG1fcGVuZGluZ0NhbGxiYWNrcy5hcHBlbmRTdGFydEVs
ZW1lbnROU0NhbGxiYWNrKHhtbExvY2FsTmFtZSwgeG1sUHJlZml4LCB4bWxVUkksIG5iX25hbWVz
cGFjZXMsIGxpYnhtbE5hbWVzcGFjZXMsIG5iX2F0dHJpYnV0ZXMsIG5iX2RlZmF1bHRlZCwgbGli
eG1sQXR0cmlidXRlcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCiAgICAgbV9zYXdG
aXJzdEVsZW1lbnQgPSB0cnVlOwogCiAgICAgZXhpdFRleHQoKTsKQEAgLTQ4MSw2ICs3NDAsMTEg
QEAgdm9pZCBYTUxUb2tlbml6ZXI6OmVuZEVsZW1lbnROcygpCiAgICAgaWYgKG1fcGFyc2VyU3Rv
cHBlZCkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKG1fcGFyc2VyUGF1c2VkKSB7CisgICAg
ICAgIG1fcGVuZGluZ0NhbGxiYWNrcy5hcHBlbmRFbmRFbGVtZW50TlNDYWxsYmFjaygpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIAogICAgIGV4aXRUZXh0KCk7CiAKICAgICBOb2RlICpu
ID0gbV9jdXJyZW50Tm9kZTsKQEAgLTQ5Niw2ICs3NjAsMTEgQEAgdm9pZCBYTUxUb2tlbml6ZXI6
OmNoYXJhY3RlcnMoY29uc3QgeG1sQwogICAgIGlmIChtX3BhcnNlclN0b3BwZWQpCiAgICAgICAg
IHJldHVybjsKICAgICAKKyAgICBpZiAobV9wYXJzZXJQYXVzZWQpIHsKKyAgICAgICAgbV9wZW5k
aW5nQ2FsbGJhY2tzLmFwcGVuZENoYXJhY3RlcnNDYWxsYmFjayhzLCBsZW4pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIAogICAgIGlmIChtX2N1cnJlbnROb2RlLT5pc1RleHROb2RlKCkg
fHwgZW50ZXJUZXh0KCkpIHsKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAg
IHN0YXRpY19jYXN0PFRleHQqPihtX2N1cnJlbnROb2RlKS0+YXBwZW5kRGF0YSh0b1FTdHJpbmco
cywgbGVuKSwgZWMpOwpAQCAtNTI4LDQxICs3OTcsNTEgQEAgdm9pZCBYTUxUb2tlbml6ZXI6OmV4
aXRUZXh0KCkKICAgICAgICAgc2V0Q3VycmVudE5vZGUocGFyKTsKIH0KIAotdm9pZCBYTUxUb2tl
bml6ZXI6OmVycm9yKEVycm9yVHlwZSB0eXBlLCBjb25zdCBjaGFyICptZXNzYWdlLCB2YV9saXN0
IGFyZ3MpCit2b2lkIFhNTFRva2VuaXplcjo6aGFuZGxlRXJyb3IoRXJyb3JUeXBlIHR5cGUsIGNv
bnN0IGNoYXIqIG0sIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQogewotICAgIGlm
IChtX3BhcnNlclN0b3BwZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICh0eXBlID09IGZh
dGFsIHx8IChtX2Vycm9yQ291bnQgPCBtYXhFcnJvcnMgJiYgbV9sYXN0RXJyb3JMaW5lICE9IGxp
bmVOdW1iZXIoKSAmJiBtX2xhc3RFcnJvckNvbHVtbiAhPSBjb2x1bW5OdW1iZXIoKSkpIHsKLSNp
ZiBXSU4zMgotICAgICAgICBjaGFyIG1bMTAyNF07Ci0gICAgICAgIHZzbnByaW50ZihtLCBzaXpl
b2YobSkgLSAxLCBtZXNzYWdlLCBhcmdzKTsKLSNlbHNlCi0gICAgICAgIGNoYXIgKm07Ci0gICAg
ICAgIHZhc3ByaW50ZigmbSwgbWVzc2FnZSwgYXJncyk7Ci0jZW5kaWYKKyAgICBpZiAodHlwZSA9
PSBmYXRhbCB8fCAobV9lcnJvckNvdW50IDwgbWF4RXJyb3JzICYmIG1fbGFzdEVycm9yTGluZSAh
PSBsaW5lTnVtYmVyICYmIG1fbGFzdEVycm9yQ29sdW1uICE9IGNvbHVtbk51bWJlcikpIHsKICAg
ICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgICAgICBjYXNlIHdhcm5pbmc6Ci0gICAgICAg
ICAgICAgICAgbV9lcnJvck1lc3NhZ2VzICs9IFN0cmluZzo6c3ByaW50Zigid2FybmluZyBvbiBs
aW5lICVkIGF0IGNvbHVtbiAlZDogJXMiLCBsaW5lTnVtYmVyKCksIGNvbHVtbk51bWJlcigpLCBt
KTsKKyAgICAgICAgICAgICAgICBtX2Vycm9yTWVzc2FnZXMgKz0gU3RyaW5nOjpzcHJpbnRmKCJ3
YXJuaW5nIG9uIGxpbmUgJWQgYXQgY29sdW1uICVkOiAlcyIsIGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlciwgbSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIGZhdGFs
OgogICAgICAgICAgICAgY2FzZSBub25GYXRhbDoKLSAgICAgICAgICAgICAgICBtX2Vycm9yTWVz
c2FnZXMgKz0gU3RyaW5nOjpzcHJpbnRmKCJlcnJvciBvbiBsaW5lICVkIGF0IGNvbHVtbiAlZDog
JXMiLCBsaW5lTnVtYmVyKCksIGNvbHVtbk51bWJlcigpLCBtKTsKKyAgICAgICAgICAgICAgICBt
X2Vycm9yTWVzc2FnZXMgKz0gU3RyaW5nOjpzcHJpbnRmKCJlcnJvciBvbiBsaW5lICVkIGF0IGNv
bHVtbiAlZDogJXMiLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIG0pOwogICAgICAgICB9Ci0j
aWYgIVdJTjMyCi0gICAgICAgIGZyZWUobSk7Ci0jZW5kaWYKLQotICAgICAgICBtX2xhc3RFcnJv
ckxpbmUgPSBsaW5lTnVtYmVyKCk7Ci0gICAgICAgIG1fbGFzdEVycm9yQ29sdW1uID0gY29sdW1u
TnVtYmVyKCk7CisgICAgICAgIAorICAgICAgICBtX2xhc3RFcnJvckxpbmUgPSBsaW5lTnVtYmVy
OworICAgICAgICBtX2xhc3RFcnJvckNvbHVtbiA9IGNvbHVtbk51bWJlcjsKICAgICAgICAgKytt
X2Vycm9yQ291bnQ7CiAgICAgfQotCisgICAgCiAgICAgaWYgKHR5cGUgIT0gd2FybmluZykKICAg
ICAgICAgbV9zYXdFcnJvciA9IHRydWU7Ci0KKyAgICAKICAgICBpZiAodHlwZSA9PSBmYXRhbCkK
LSAgICAgICAgc3RvcFBhcnNpbmcoKTsKKyAgICAgICAgc3RvcFBhcnNpbmcoKTsgICAgCit9CisK
K3ZvaWQgWE1MVG9rZW5pemVyOjplcnJvcihFcnJvclR5cGUgdHlwZSwgY29uc3QgY2hhciAqbWVz
c2FnZSwgdmFfbGlzdCBhcmdzKQoreworICAgIGlmIChtX3BhcnNlclN0b3BwZWQpCisgICAgICAg
IHJldHVybjsKKworI2lmIFdJTjMyCisgICAgY2hhciBtWzEwMjRdOworICAgIHZzbnByaW50Ziht
LCBzaXplb2YobSkgLSAxLCBtZXNzYWdlLCBhcmdzKTsKKyNlbHNlCisgICAgY2hhciAqbTsKKyAg
ICB2YXNwcmludGYoJm0sIG1lc3NhZ2UsIGFyZ3MpOworI2VuZGlmCisgICAgCisgICAgaWYgKG1f
cGFyc2VyUGF1c2VkKQorICAgICAgICBtX3BlbmRpbmdDYWxsYmFja3MuYXBwZW5kRXJyb3JDYWxs
YmFjayh0eXBlLCBtLCBsaW5lTnVtYmVyKCksIGNvbHVtbk51bWJlcigpKTsKKyAgICBlbHNlCisg
ICAgICAgIGhhbmRsZUVycm9yKHR5cGUsIG0sIGxpbmVOdW1iZXIoKSwgY29sdW1uTnVtYmVyKCkp
OworCisjaWYgIVdJTjMyCisgICAgZnJlZShtKTsKKyNlbmRpZgogfQogCiB2b2lkIFhNTFRva2Vu
aXplcjo6cHJvY2Vzc2luZ0luc3RydWN0aW9uKGNvbnN0IHhtbENoYXIgKnRhcmdldCwgY29uc3Qg
eG1sQ2hhciAqZGF0YSkKQEAgLTU3MCw2ICs4NDksMTEgQEAgdm9pZCBYTUxUb2tlbml6ZXI6OnBy
b2Nlc3NpbmdJbnN0cnVjdGlvbgogICAgIGlmIChtX3BhcnNlclN0b3BwZWQpCiAgICAgICAgIHJl
dHVybjsKIAorICAgIGlmIChtX3BhcnNlclBhdXNlZCkgeworICAgICAgICBtX3BlbmRpbmdDYWxs
YmFja3MuYXBwZW5kUHJvY2Vzc2luZ0luc3RydWN0aW9uQ2FsbGJhY2sodGFyZ2V0LCBkYXRhKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKICAgICBleGl0VGV4dCgpOwogCiAgICAgLy8g
IyMjIGhhbmRsZSBleGNlcHRpb25zCkBAIC02MDMsNiArODg3LDExIEBAIHZvaWQgWE1MVG9rZW5p
emVyOjpjZGF0YUJsb2NrKGNvbnN0IHhtbEMKICAgICBpZiAobV9wYXJzZXJTdG9wcGVkKQogICAg
ICAgICByZXR1cm47CiAKKyAgICBpZiAobV9wYXJzZXJQYXVzZWQpIHsKKyAgICAgICAgbV9wZW5k
aW5nQ2FsbGJhY2tzLmFwcGVuZENEQVRBQmxvY2tDYWxsYmFjayhzLCBsZW4pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIAogICAgIGV4aXRUZXh0KCk7CiAKICAgICBSZWZQdHI8Tm9kZT4g
bmV3Tm9kZSA9IG5ldyBDREFUQVNlY3Rpb24obV9kb2MsIHRvUVN0cmluZyhzLCBsZW4pKTsKQEAg
LTYxNyw2ICs5MDYsMTEgQEAgdm9pZCBYTUxUb2tlbml6ZXI6OmNvbW1lbnQoY29uc3QgeG1sQ2hh
cgogICAgIGlmIChtX3BhcnNlclN0b3BwZWQpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmICht
X3BhcnNlclBhdXNlZCkgeworICAgICAgICBtX3BlbmRpbmdDYWxsYmFja3MuYXBwZW5kQ29tbWVu
dENhbGxiYWNrKHMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAogICAgIGV4aXRUZXh0
KCk7CiAKICAgICBSZWZQdHI8Tm9kZT4gbmV3Tm9kZSA9IG5ldyBDb21tZW50KG1fZG9jLCB0b1FT
dHJpbmcocykpOwpAQCAtNjMwLDYgKzkyNCwxMSBAQCB2b2lkIFhNTFRva2VuaXplcjo6aW50ZXJu
YWxTdWJzZXQoY29uc3QgCiAgICAgaWYgKG1fcGFyc2VyU3RvcHBlZCkKICAgICAgICAgcmV0dXJu
OwogCisgICAgaWYgKG1fcGFyc2VyUGF1c2VkKSB7CisgICAgICAgIG1fcGVuZGluZ0NhbGxiYWNr
cy5hcHBlbmRJbnRlcm5hbFN1YnNldENhbGxiYWNrKG5hbWUsIGV4dGVybmFsSUQsIHN5c3RlbUlE
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKICAgICBEb2N1bWVudCAqZG9jID0gbV9k
b2M7CiAgICAgaWYgKCFkb2MpCiAgICAgICAgIHJldHVybjsKQEAgLTgwNSw3ICsxMTA0LDcgQEAg
dm9pZCBYTUxUb2tlbml6ZXI6OmZpbmlzaCgpCiAgICAgICAgIG1fZG9jLT5zZXRQYXJzaW5nKHRy
dWUpOwogICAgICAgICBtX3BhcnNlclN0b3BwZWQgPSB0cnVlOwogICAgIH0KLSAgICAKKyAgICAg
ICAgCiAgICAgaWYgKG1fY29udGV4dCkgewogICAgICAgICAvLyBUZWxsIGxpYnhtbCB3ZSdyZSBk
b25lLgogICAgICAgICB4bWxQYXJzZUNodW5rKG1fY29udGV4dCwgMCwgMCwgMSk7CkBAIC04MjYs
NyArMTEyNSw3IEBAIHZvaWQgWE1MVG9rZW5pemVyOjpmaW5pc2goKQogICAgICAgICBtX3Njcmlw
dHNJdCA9IG5ldyBEZXByZWNhdGVkUHRyTGlzdEl0ZXJhdG9yPEVsZW1lbnQ+KG1fc2NyaXB0cyk7
CiAgICAgICAgIGV4ZWN1dGVTY3JpcHRzKCk7CiAgICAgfQotCisgICAgCiAgICAgc2V0Q3VycmVu
dE5vZGUoMCk7CiAgICAgbV9kb2MtPmZpbmlzaGVkUGFyc2luZygpOwogfQpAQCAtMTAxMyw2ICsx
MzEyLDMwIEBAIHZvaWQgWE1MVG9rZW5pemVyOjpzdG9wUGFyc2luZygpCiAgICAgeG1sU3RvcFBh
cnNlcihtX2NvbnRleHQpOwogfQogCit2b2lkIFhNTFRva2VuaXplcjo6cGF1c2VQYXJzaW5nKCkK
K3sKKyAgICBtX3BhcnNlclBhdXNlZCA9IHRydWU7Cit9CisKK3ZvaWQgWE1MVG9rZW5pemVyOjpy
ZXN1bWVQYXJzaW5nKCkKK3sKKyAgICBtX3BhcnNlclBhdXNlZCA9IGZhbHNlOworICAgIAorICAg
IC8vIEZpcnN0LCBleGVjdXRlIGFueSBwZW5kaW5nIGNhbGxiYWNrcworICAgIHdoaWxlICghbV9w
ZW5kaW5nQ2FsbGJhY2tzLmlzRW1wdHkoKSkgeworICAgICAgICBtX3BlbmRpbmdDYWxsYmFja3Mu
Y2FsbEFuZFJlbW92ZUZpcnN0Q2FsbGJhY2sodGhpcyk7CisgICAgICAgIAorICAgICAgICAvLyBB
IGNhbGxiYWNrIHBhdXNlZCB0aGUgcGFyc2VyCisgICAgICAgIGlmIChtX3BhcnNlclBhdXNlZCkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgLy8gVGhlbiwgd3JpdGUgYW55
IHBlbmRpbmcgZGF0YQorICAgIFNlZ21lbnRlZFN0cmluZyByZXN0ID0gbV9wZW5kaW5nU3JjOwor
ICAgIG1fcGVuZGluZ1NyYy5jbGVhcigpOworICAgIHdyaXRlKHJlc3QsIGZhbHNlKTsKK30KKwog
c3RhdGljIHZvaWQgYmFsYW5jZWRTdGFydEVsZW1lbnROc0hhbmRsZXIodm9pZCAqY2xvc3VyZSwg
Y29uc3QgeG1sQ2hhciAqbG9jYWxuYW1lLCBjb25zdCB4bWxDaGFyICpwcmVmaXgsIGNvbnN0IHht
bENoYXIgKnVyaSwgaW50IG5iX25hbWVzcGFjZXMsIGNvbnN0IHhtbENoYXIgKipuYW1lc3BhY2Vz
LCBpbnQgbmJfYXR0cmlidXRlcywgaW50IG5iX2RlZmF1bHRlZCwgY29uc3QgeG1sQ2hhciAqKmxp
YnhtbEF0dHJpYnV0ZXMpCiB7CiAgICBzdGF0aWNfY2FzdDxYTUxUb2tlbml6ZXIgKj4oY2xvc3Vy
ZSktPnN0YXJ0RWxlbWVudE5zKGxvY2FsbmFtZSwgcHJlZml4LCB1cmksIG5iX25hbWVzcGFjZXMs
IG5hbWVzcGFjZXMsIG5iX2F0dHJpYnV0ZXMsIG5iX2RlZmF1bHRlZCwgbGlieG1sQXR0cmlidXRl
cyk7Cg==
</data>
<flag name="review"
          id="2620"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8933</attachid>
            <date>2006-06-20 09:08:04 -0700</date>
            <delta_ts>2006-06-20 14:24:47 -0700</delta_ts>
            <desc>Address comments</desc>
            <filename>xml-tokenizer-pause-2.txt</filename>
            <type>text/plain</type>
            <size>20913</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTIx
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjkgQEAKKzIwMDYtMDYt
MjAgIEFuZGVycyBDYXJsc3NvbiAgPGFjYXJsc3NvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cDovL2J1Z3ppbGxhLm9wZW5k
YXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD05NTA5CisgICAgICAgIFdvdWxkIGxpa2UgYSB3YXkg
dG8gcGF1c2UvcmVzdW1lIFhNTCBwYXJzaW5nCisKKyAgICAgICAgKiBkb20veG1sX3Rva2VuaXpl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjpQZW5kaW5nQ2FsbGJh
Y2tzKToKKyAgICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZFN0YXJ0RWxl
bWVudE5TQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0NhbGxiYWNrczo6YXBw
ZW5kRW5kRWxlbWVudE5TQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0NhbGxi
YWNrczo6YXBwZW5kQ2hhcmFjdGVyc0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBlbmRp
bmdDYWxsYmFja3M6OmFwcGVuZFByb2Nlc3NpbmdJbnN0cnVjdGlvbkNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZENEQVRBQmxvY2tDYWxsYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRDb21tZW50Q2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5kSW50ZXJuYWxT
dWJzZXRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBl
bmRFcnJvckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmNh
bGxBbmRSZW1vdmVGaXJzdENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxs
YmFja3M6OmlzRW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0NhbGxiYWNrczo6UGVu
ZGluZ0NhbGxiYWNrOjp+UGVuZGluZ0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBlbmRp
bmdDYWxsYmFja3M6OlBlbmRpbmdTdGFydEVsZW1lbnROU0NhbGxiYWNrOjp+UGVuZGluZ1N0YXJ0
RWxlbWVudE5TQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0NhbGxiYWNrczo6
UGVuZGluZ1N0YXJ0RWxlbWVudE5TQ2FsbGJhY2s6OmNhbGwpOgorICAgICAgICAoV2ViQ29yZTo6
UGVuZGluZ0NhbGxiYWNrczo6UGVuZGluZ0VuZEVsZW1lbnROU0NhbGxiYWNrOjpjYWxsKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OlBlbmRpbmdDaGFyYWN0ZXJzQ2FsbGJh
Y2s6On5QZW5kaW5nQ2hhcmFjdGVyc0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBlbmRp
bmdDYWxsYmFja3M6OlBlbmRpbmdDaGFyYWN0ZXJzQ2FsbGJhY2s6OmNhbGwpOgorICAgICAgICAo
V2ViQ29yZTo6UGVuZGluZ0NhbGxiYWNrczo6UGVuZGluZ1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkNh
bGxiYWNrOjp+UGVuZGluZ1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkNhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OlBlbmRpbmdQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25D
YWxsYmFjazo6Y2FsbCk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjpQZW5k
aW5nQ0RBVEFCbG9ja0NhbGxiYWNrOjp+UGVuZGluZ0NEQVRBQmxvY2tDYWxsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjpQZW5kaW5nQ0RBVEFCbG9ja0NhbGxiYWNr
OjpjYWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OlBlbmRpbmdDb21t
ZW50Q2FsbGJhY2s6On5QZW5kaW5nQ29tbWVudENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OlBlbmRpbmdDYWxsYmFja3M6OlBlbmRpbmdDb21tZW50Q2FsbGJhY2s6OmNhbGwpOgorICAgICAg
ICAoV2ViQ29yZTo6UGVuZGluZ0NhbGxiYWNrczo6UGVuZGluZ0ludGVybmFsU3Vic2V0Q2FsbGJh
Y2s6On5QZW5kaW5nSW50ZXJuYWxTdWJzZXRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQ
ZW5kaW5nQ2FsbGJhY2tzOjpQZW5kaW5nSW50ZXJuYWxTdWJzZXRDYWxsYmFjazo6Y2FsbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjopOgorICAgICAgICBOZXcgY2xhc3Nl
cyB3aGljaCBtYW5hZ2UgYSBsaXN0IG9mIHBlbmRpbmcgU0FYIGNhbGxiYWNrcyB0aGF0IGhhdmUg
bm90IHlldAorICAgICAgICBiZWVuIHNlbnQgdG8gdGhlIHRva2VuaXplci4KKyAgICAgICAgCisg
ICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbml6ZXI6OlhNTFRva2VuaXplcik6CisgICAgICAgIElu
aXRpYWxpemUgbmV3IG1lbWJlciB2YXJpYWJsZXMuCisgICAgICAgIAorICAgICAgICAoV2ViQ29y
ZTo6WE1MVG9rZW5pemVyOjp+WE1MVG9rZW5pemVyKToKKyAgICAgICAgRGVsZXRlIFBlbmRpbmdD
YWxsYmFja3Mgb2JqZWN0LgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OlhNTFRva2VuaXpl
cjo6d3JpdGUpOgorICAgICAgICBJZiB0aGUgcGFyc2VyIGlzIHBhdXNlZCwgcXVldWUgdGhlIGRh
dGEgdG8gYmUgd3JpdHRlbi4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbml6
ZXI6OnN0YXJ0RWxlbWVudE5zKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTFRva2VuaXplcjo6ZW5k
RWxlbWVudE5zKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTFRva2VuaXplcjo6Y2hhcmFjdGVycyk6
CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbml6ZXI6OmVycm9yKToKKyAgICAgICAgKFdlYkNv
cmU6OlhNTFRva2VuaXplcjo6cHJvY2Vzc2luZ0luc3RydWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlhNTFRva2VuaXplcjo6Y2RhdGFCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tl
bml6ZXI6OmNvbW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6WE1MVG9rZW5pemVyOjppbnRlcm5h
bFN1YnNldCk6CisgICAgICAgIElmIHRoZSBwYXJzZXIgaGFzIGJlZW4gcGF1c2VkLCBxdWV1ZSB0
aGUgY2FsbGJhY2tzIGluc3RlYWQuCisKKyAgICAgICAgKFdlYkNvcmU6OlhNTFRva2VuaXplcjo6
aGFuZGxlRXJyb3IpOgorICAgICAgICBOZXcgZnVuY3Rpb24sIGNhbGxlZCBieSBib3RoIDo6ZXJy
b3IgYW5kIDpQZW5kaW5nQ2FsbGJhY2tzOjpjYWxsQW5kUmVtb3ZlRmlyc3RDYWxsYmFjaworICAg
ICAgICAKKyAgICAgICAgKFdlYkNvcmU6OlhNTFRva2VuaXplcjo6cGF1c2VQYXJzaW5nKToKKyAg
ICAgICAgIFNldCBtX3BhcnNlclBhdXNlZCB0byB0cnVlLgorICAgICAgICAKKyAgICAgICAgKFdl
YkNvcmU6OlhNTFRva2VuaXplcjo6cmVzdW1lUGFyc2luZyk6CisgICAgICAgIENhbGwgdGhlIHBl
bmRpbmcgY2FsbGJhY2tzIGFuZCB0aGVuIHBhcnNlIHRoZSBwZW5kaW5nIHNvdXJjZS4KKyAgICAg
ICAgCiAyMDA2LTA2LTIwICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRXJpYy4KSW5kZXg6IGRvbS94bWxfdG9rZW5pemVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBkb20veG1sX3Rva2VuaXplci5jcHAJKHJldmlzaW9uIDE0OTIxKQorKysgZG9t
L3htbF90b2tlbml6ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MiwxMyArNTIsMTUgQEAKIHVz
aW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQorICAgIAogdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKIAogY29uc3QgaW50IG1heEVycm9ycyA9IDI1OwogCiB0eXBl
ZGVmIEhhc2hNYXA8U3RyaW5nSW1wbCAqLCBTdHJpbmdJbXBsICo+IFByZWZpeEZvck5hbWVzcGFj
ZU1hcDsKIAorY2xhc3MgUGVuZGluZ0NhbGxiYWNrczsKKwogY2xhc3MgWE1MVG9rZW5pemVyIDog
cHVibGljIFRva2VuaXplciwgcHVibGljIENhY2hlZE9iamVjdENsaWVudAogewogcHVibGljOgpA
QCAtNzQsNiArNzYsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzV2FpdGluZ0ZvclNj
cmlwdHMoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcFBhcnNpbmcoKTsKIAorICAgIHZv
aWQgcGF1c2VQYXJzaW5nKCk7CisgICAgdm9pZCByZXN1bWVQYXJzaW5nKCk7CisgICAgCiAgICAg
dm9pZCBzZXRJc1hIVE1MRG9jdW1lbnQoYm9vbCBpc1hIVE1MKSB7IG1faXNYSFRNTERvY3VtZW50
ID0gaXNYSFRNTDsgfQogICAgIGJvb2wgaXNYSFRNTERvY3VtZW50KCkgY29uc3QgeyByZXR1cm4g
bV9pc1hIVE1MRG9jdW1lbnQ7IH0KIApAQCAtOTAsNiArOTUsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBjb21tZW50KGNvbnN0IHhtbENoYXIgKnMpOwogICAgIHZvaWQgaW50ZXJuYWxTdWJzZXQoY29u
c3QgeG1sQ2hhciAqbmFtZSwgY29uc3QgeG1sQ2hhciAqZXh0ZXJuYWxJRCwgY29uc3QgeG1sQ2hh
ciAqc3lzdGVtSUQpOwogCisgICAgdm9pZCBoYW5kbGVFcnJvcihFcnJvclR5cGUgdHlwZSwgY29u
c3QgY2hhciogbSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpOworICAgIAogcHJp
dmF0ZToKICAgICB2b2lkIGluaXRpYWxpemVQYXJzZXJDb250ZXh0KCk7CiAgICAgdm9pZCBzZXRD
dXJyZW50Tm9kZShOb2RlKik7CkBAIC0xMTksNiArMTI2LDggQEAgcHJpdmF0ZToKICAgICBib29s
IG1fc2F3Rmlyc3RFbGVtZW50OwogICAgIGJvb2wgbV9pc1hIVE1MRG9jdW1lbnQ7CiAgICAgCisg
ICAgYm9vbCBtX3BhcnNlclBhdXNlZDsKKyAgICAKICAgICBpbnQgbV9lcnJvckNvdW50OwogICAg
IGludCBtX2xhc3RFcnJvckxpbmU7CiAgICAgaW50IG1fbGFzdEVycm9yQ29sdW1uOwpAQCAtMTMx
LDYgKzE0MCwyNjkgQEAgcHJpdmF0ZToKICAgICBib29sIG1fcGFyc2luZ0ZyYWdtZW50OwogICAg
IFN0cmluZyBtX2RlZmF1bHROYW1lc3BhY2VVUkk7CiAgICAgUHJlZml4Rm9yTmFtZXNwYWNlTWFw
IG1fcHJlZml4VG9OYW1lc3BhY2VNYXA7CisgICAgCisgICAgUGVuZGluZ0NhbGxiYWNrcyogbV9w
ZW5kaW5nQ2FsbGJhY2tzOworICAgIFNlZ21lbnRlZFN0cmluZyBtX3BlbmRpbmdTcmM7Cit9Owor
CitjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKK3B1YmxpYzoKKyAgICBQZW5kaW5nQ2FsbGJhY2tz
KCkKKyAgICB7CisgICAgICAgIG1fY2FsbGJhY2tzLnNldEF1dG9EZWxldGUodHJ1ZSk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXBwZW5kU3RhcnRFbGVtZW50TlNDYWxsYmFjayhjb25zdCB4bWxD
aGFyICp4bWxMb2NhbE5hbWUsIGNvbnN0IHhtbENoYXIgKnhtbFByZWZpeCwgY29uc3QgeG1sQ2hh
ciAqeG1sVVJJLCBpbnQgbmJfbmFtZXNwYWNlcywgY29uc3QgeG1sQ2hhciAqKm5hbWVzcGFjZXMs
IGludCBuYl9hdHRyaWJ1dGVzLCBpbnQgbmJfZGVmYXVsdGVkLCBjb25zdCB4bWxDaGFyICoqYXR0
cmlidXRlcykKKyAgICB7CisgICAgICAgIFBlbmRpbmdTdGFydEVsZW1lbnROU0NhbGxiYWNrKiBj
YWxsYmFjayA9IG5ldyBQZW5kaW5nU3RhcnRFbGVtZW50TlNDYWxsYmFjazsKKyAgICAgICAgCisg
ICAgICAgIGNhbGxiYWNrLT54bWxMb2NhbE5hbWUgPSB4bWxTdHJkdXAoeG1sTG9jYWxOYW1lKTsK
KyAgICAgICAgY2FsbGJhY2stPnhtbFByZWZpeCA9IHhtbFN0cmR1cCh4bWxQcmVmaXgpOworICAg
ICAgICBjYWxsYmFjay0+eG1sVVJJID0geG1sU3RyZHVwKHhtbFVSSSk7CisgICAgICAgIGNhbGxi
YWNrLT5uYl9uYW1lc3BhY2VzID0gbmJfbmFtZXNwYWNlczsKKyAgICAgICAgY2FsbGJhY2stPm5h
bWVzcGFjZXMgPSByZWludGVycHJldF9jYXN0PHhtbENoYXIqKj4oeG1sTWFsbG9jKHNpemVvZiAo
eG1sQ2hhciopICogbmJfbmFtZXNwYWNlcyAqIDIpKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBuYl9uYW1lc3BhY2VzICogMiA7IGkrKykKKyAgICAgICAgICAgIGNhbGxiYWNrLT5uYW1l
c3BhY2VzW2ldID0geG1sU3RyZHVwKG5hbWVzcGFjZXNbaV0pOworICAgICAgICBjYWxsYmFjay0+
bmJfYXR0cmlidXRlcyA9IG5iX2F0dHJpYnV0ZXM7CisgICAgICAgIGNhbGxiYWNrLT5uYl9kZWZh
dWx0ZWQgPSBuYl9kZWZhdWx0ZWQ7CisgICAgICAgIGNhbGxiYWNrLT5hdHRyaWJ1dGVzID0gIHJl
aW50ZXJwcmV0X2Nhc3Q8eG1sQ2hhcioqPih4bWxNYWxsb2Moc2l6ZW9mICh4bWxDaGFyKikgKiBu
Yl9hdHRyaWJ1dGVzICogNSkpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG5iX2F0dHJp
YnV0ZXM7IGkrKykgeworICAgICAgICAgICAgLy8gRWFjaCBhdHRyaWJ1dGUgaGFzIDUgZWxlbWVu
dHMgaW4gdGhlIGFycmF5OgorICAgICAgICAgICAgLy8gbmFtZSwgcHJlZml4LCB1cmksIHZhbHVl
IGFuZCBhbiBlbmQgcG9pbnRlci4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yIChpbnQg
aiA9IDA7IGogPCAzOyBqKyspCisgICAgICAgICAgICAgICAgY2FsbGJhY2stPmF0dHJpYnV0ZXNb
aSAqIDUgKyBqXSA9IHhtbFN0cmR1cChhdHRyaWJ1dGVzW2kgKiA1ICsgal0pOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBpbnQgbGVuID0gYXR0cmlidXRlc1tpICogNSArIDRdIC0gYXR0cmli
dXRlc1tpICogNSArIDNdOworCisgICAgICAgICAgICBjYWxsYmFjay0+YXR0cmlidXRlc1tpICog
NSArIDNdID0geG1sU3RybmR1cChhdHRyaWJ1dGVzW2kgKiA1ICsgM10sIGxlbik7CisgICAgICAg
ICAgICBjYWxsYmFjay0+YXR0cmlidXRlc1tpICogNSArIDRdID0gY2FsbGJhY2stPmF0dHJpYnV0
ZXNbaSAqIDUgKyAzXSArIGxlbjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbV9jYWxs
YmFja3MuYXBwZW5kKGNhbGxiYWNrKTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZEVuZEVsZW1l
bnROU0NhbGxiYWNrKCkKKyAgICB7CisgICAgICAgIFBlbmRpbmdFbmRFbGVtZW50TlNDYWxsYmFj
ayogY2FsbGJhY2sgPSBuZXcgUGVuZGluZ0VuZEVsZW1lbnROU0NhbGxiYWNrOworICAgICAgICAK
KyAgICAgICAgbV9jYWxsYmFja3MuYXBwZW5kKGNhbGxiYWNrKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhcHBlbmRDaGFyYWN0ZXJzQ2FsbGJhY2soY29uc3QgeG1sQ2hhciAqcywgaW50IGxlbikK
KyAgICB7CisgICAgICAgIFBlbmRpbmdDaGFyYWN0ZXJzQ2FsbGJhY2sqIGNhbGxiYWNrID0gbmV3
IFBlbmRpbmdDaGFyYWN0ZXJzQ2FsbGJhY2s7CisgICAgICAgIAorICAgICAgICBjYWxsYmFjay0+
cyA9IHhtbFN0cm5kdXAocywgbGVuKTsKKyAgICAgICAgY2FsbGJhY2stPmxlbiA9IGxlbjsKKyAg
ICAgICAgCisgICAgICAgIG1fY2FsbGJhY2tzLmFwcGVuZChjYWxsYmFjayk7ICAgICAgICAKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhcHBlbmRQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DYWxsYmFjayhj
b25zdCB4bWxDaGFyICp0YXJnZXQsIGNvbnN0IHhtbENoYXIgKmRhdGEpCisgICAgeworICAgICAg
ICBQZW5kaW5nUHJvY2Vzc2luZ0luc3RydWN0aW9uQ2FsbGJhY2sqIGNhbGxiYWNrID0gbmV3IFBl
bmRpbmdQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DYWxsYmFjazsKKyAgICAgICAgCisgICAgICAgIGNh
bGxiYWNrLT50YXJnZXQgPSB4bWxTdHJkdXAodGFyZ2V0KTsKKyAgICAgICAgY2FsbGJhY2stPmRh
dGEgPSB4bWxTdHJkdXAoZGF0YSk7CisgICAgICAgIAorICAgICAgICBtX2NhbGxiYWNrcy5hcHBl
bmQoY2FsbGJhY2spOworICAgIH0KKyAgICAKKyAgICB2b2lkIGFwcGVuZENEQVRBQmxvY2tDYWxs
YmFjayhjb25zdCB4bWxDaGFyICpzLCBpbnQgbGVuKQorICAgIHsKKyAgICAgICAgUGVuZGluZ0NE
QVRBQmxvY2tDYWxsYmFjayogY2FsbGJhY2sgPSBuZXcgUGVuZGluZ0NEQVRBQmxvY2tDYWxsYmFj
azsKKyAgICAgICAgCisgICAgICAgIGNhbGxiYWNrLT5zID0geG1sU3RybmR1cChzLCBsZW4pOwor
ICAgICAgICBjYWxsYmFjay0+bGVuID0gbGVuOworICAgICAgICAKKyAgICAgICAgbV9jYWxsYmFj
a3MuYXBwZW5kKGNhbGxiYWNrKTsgICAgICAgIAorICAgIH0KKworICAgIHZvaWQgYXBwZW5kQ29t
bWVudENhbGxiYWNrKGNvbnN0IHhtbENoYXIgKnMpCisgICAgeworICAgICAgICBQZW5kaW5nQ29t
bWVudENhbGxiYWNrKiBjYWxsYmFjayA9IG5ldyBQZW5kaW5nQ29tbWVudENhbGxiYWNrOworICAg
ICAgICAKKyAgICAgICAgY2FsbGJhY2stPnMgPSB4bWxTdHJkdXAocyk7CisgICAgICAgIAorICAg
ICAgICBtX2NhbGxiYWNrcy5hcHBlbmQoY2FsbGJhY2spOyAgICAgICAgCisgICAgfQorCisgICAg
dm9pZCBhcHBlbmRJbnRlcm5hbFN1YnNldENhbGxiYWNrKGNvbnN0IHhtbENoYXIgKm5hbWUsIGNv
bnN0IHhtbENoYXIgKmV4dGVybmFsSUQsIGNvbnN0IHhtbENoYXIgKnN5c3RlbUlEKQorICAgIHsK
KyAgICAgICAgUGVuZGluZ0ludGVybmFsU3Vic2V0Q2FsbGJhY2sqIGNhbGxiYWNrID0gbmV3IFBl
bmRpbmdJbnRlcm5hbFN1YnNldENhbGxiYWNrOworICAgICAgICAKKyAgICAgICAgY2FsbGJhY2st
Pm5hbWUgPSB4bWxTdHJkdXAobmFtZSk7CisgICAgICAgIGNhbGxiYWNrLT5leHRlcm5hbElEID0g
eG1sU3RyZHVwKGV4dGVybmFsSUQpOworICAgICAgICBjYWxsYmFjay0+c3lzdGVtSUQgPSB4bWxT
dHJkdXAoc3lzdGVtSUQpOworICAgICAgICAKKyAgICAgICAgbV9jYWxsYmFja3MuYXBwZW5kKGNh
bGxiYWNrKTsgICAgICAgIAorICAgIH0KKyAgICAKKyAgICB2b2lkIGFwcGVuZEVycm9yQ2FsbGJh
Y2soWE1MVG9rZW5pemVyOjpFcnJvclR5cGUgdHlwZSwgY29uc3QgY2hhciogbWVzc2FnZSwgaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCisgICAgeworICAgICAgICBQZW5kaW5nRXJy
b3JDYWxsYmFjayogY2FsbGJhY2sgPSBuZXcgUGVuZGluZ0Vycm9yQ2FsbGJhY2s7CisgICAgICAg
IAorICAgICAgICBjYWxsYmFjay0+bWVzc2FnZSA9IHN0cmR1cChtZXNzYWdlKTsKKyAgICAgICAg
Y2FsbGJhY2stPnR5cGUgPSB0eXBlOworICAgICAgICBjYWxsYmFjay0+bGluZU51bWJlciA9IGxp
bmVOdW1iZXI7CisgICAgICAgIGNhbGxiYWNrLT5jb2x1bW5OdW1iZXIgPSBjb2x1bW5OdW1iZXI7
CisgICAgICAgIAorICAgICAgICBtX2NhbGxiYWNrcy5hcHBlbmQoY2FsbGJhY2spOworICAgIH0K
KworICAgIHZvaWQgY2FsbEFuZFJlbW92ZUZpcnN0Q2FsbGJhY2soWE1MVG9rZW5pemVyKiB0b2tl
bml6ZXIpCisgICAgeworICAgICAgICBQZW5kaW5nQ2FsbGJhY2sgKmNiID0gbV9jYWxsYmFja3Mu
Z2V0Rmlyc3QoKTsKKyAgICAgICAgICAgIAorICAgICAgICBjYi0+Y2FsbCh0b2tlbml6ZXIpOwor
ICAgICAgICBtX2NhbGxiYWNrcy5yZW1vdmVGaXJzdCgpOworICAgIH0KKyAgICAKKyAgICBib29s
IGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrcy5pc0VtcHR5KCk7IH0KKyAgICAK
K3ByaXZhdGU6ICAgIAorICAgIHN0cnVjdCBQZW5kaW5nQ2FsbGJhY2sgeyAgICAgICAgCisgICAg
ICAgIAorICAgICAgICB2aXJ0dWFsIH5QZW5kaW5nQ2FsbGJhY2soKSB7IH0gCisKKyAgICAgICAg
dmlydHVhbCB2b2lkIGNhbGwoWE1MVG9rZW5pemVyKiB0b2tlbml6ZXIpID0gMDsKKyAgICB9OyAg
CisgICAgCisgICAgc3RydWN0IFBlbmRpbmdTdGFydEVsZW1lbnROU0NhbGxiYWNrIDogcHVibGlj
IFBlbmRpbmdDYWxsYmFjayB7ICAgICAgICAKKyAgICAgICAgdmlydHVhbCB+UGVuZGluZ1N0YXJ0
RWxlbWVudE5TQ2FsbGJhY2soKSB7CisgICAgICAgICAgICB4bWxGcmVlKHhtbExvY2FsTmFtZSk7
CisgICAgICAgICAgICB4bWxGcmVlKHhtbFByZWZpeCk7CisgICAgICAgICAgICB4bWxGcmVlKHht
bFVSSSk7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG5iX25hbWVzcGFjZXMgKiAy
OyBpKyspCisgICAgICAgICAgICAgICAgeG1sRnJlZShuYW1lc3BhY2VzW2ldKTsKKyAgICAgICAg
ICAgIHhtbEZyZWUobmFtZXNwYWNlcyk7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IG5iX2F0dHJpYnV0ZXM7IGkrKykKKyAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8
IDQ7IGorKykgCisgICAgICAgICAgICAgICAgICAgIHhtbEZyZWUoYXR0cmlidXRlc1tpICogNSAr
IGpdKTsKKyAgICAgICAgICAgIHhtbEZyZWUoYXR0cmlidXRlcyk7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIHZpcnR1YWwgdm9pZCBjYWxsKFhNTFRva2VuaXplciogdG9rZW5pemVyKSB7
CisgICAgICAgICAgICB0b2tlbml6ZXItPnN0YXJ0RWxlbWVudE5zKHhtbExvY2FsTmFtZSwgeG1s
UHJlZml4LCB4bWxVUkksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
Yl9uYW1lc3BhY2VzLCAoY29uc3QgeG1sQ2hhcioqKW5hbWVzcGFjZXMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5iX2F0dHJpYnV0ZXMsIG5iX2RlZmF1bHRlZCwgKGNv
bnN0IHhtbENoYXIqKikoYXR0cmlidXRlcykpOworICAgICAgICB9CisKKyAgICAgICAgeG1sQ2hh
ciogeG1sTG9jYWxOYW1lOworICAgICAgICB4bWxDaGFyKiB4bWxQcmVmaXg7CisgICAgICAgIHht
bENoYXIqIHhtbFVSSTsKKyAgICAgICAgaW50IG5iX25hbWVzcGFjZXM7CisgICAgICAgIHhtbENo
YXIqKiBuYW1lc3BhY2VzOworICAgICAgICBpbnQgbmJfYXR0cmlidXRlczsKKyAgICAgICAgaW50
IG5iX2RlZmF1bHRlZDsKKyAgICAgICAgeG1sQ2hhcioqIGF0dHJpYnV0ZXM7CisgICAgfTsKKyAg
ICAKKyAgICBzdHJ1Y3QgUGVuZGluZ0VuZEVsZW1lbnROU0NhbGxiYWNrIDogcHVibGljIFBlbmRp
bmdDYWxsYmFjayB7CisgICAgICAgIHZpcnR1YWwgdm9pZCBjYWxsKFhNTFRva2VuaXplciogdG9r
ZW5pemVyKSAKKyAgICAgICAgeworICAgICAgICAgICAgdG9rZW5pemVyLT5lbmRFbGVtZW50TnMo
KTsKKyAgICAgICAgfQorICAgIH07CisgICAgCisgICAgc3RydWN0IFBlbmRpbmdDaGFyYWN0ZXJz
Q2FsbGJhY2sgOiBwdWJsaWMgUGVuZGluZ0NhbGxiYWNrIHsKKyAgICAgICAgdmlydHVhbCB+UGVu
ZGluZ0NoYXJhY3RlcnNDYWxsYmFjaygpIAorICAgICAgICB7CisgICAgICAgICAgICB4bWxGcmVl
KHMpOworICAgICAgICB9CisgICAgCisgICAgICAgIHZpcnR1YWwgdm9pZCBjYWxsKFhNTFRva2Vu
aXplciogdG9rZW5pemVyKSAKKyAgICAgICAgeworICAgICAgICAgICAgdG9rZW5pemVyLT5jaGFy
YWN0ZXJzKHMsIGxlbik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHhtbENoYXIqIHM7
CisgICAgICAgIGludCBsZW47CisgICAgfTsKKworICAgIHN0cnVjdCBQZW5kaW5nUHJvY2Vzc2lu
Z0luc3RydWN0aW9uQ2FsbGJhY2sgOiBwdWJsaWMgUGVuZGluZ0NhbGxiYWNrIHsKKyAgICAgICAg
dmlydHVhbCB+UGVuZGluZ1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkNhbGxiYWNrKCkgCisgICAgICAg
IHsKKyAgICAgICAgICAgIHhtbEZyZWUodGFyZ2V0KTsKKyAgICAgICAgICAgIHhtbEZyZWUoZGF0
YSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZpcnR1YWwgdm9pZCBjYWxsKFhNTFRv
a2VuaXplciogdG9rZW5pemVyKSAKKyAgICAgICAgeworICAgICAgICAgICAgdG9rZW5pemVyLT5w
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24odGFyZ2V0LCBkYXRhKTsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgeG1sQ2hhciogdGFyZ2V0OworICAgICAgICB4bWxDaGFyKiBkYXRhOworICAgIH07
CisgICAgCisgICAgc3RydWN0IFBlbmRpbmdDREFUQUJsb2NrQ2FsbGJhY2sgOiBwdWJsaWMgUGVu
ZGluZ0NhbGxiYWNrIHsKKyAgICAgICAgdmlydHVhbCB+UGVuZGluZ0NEQVRBQmxvY2tDYWxsYmFj
aygpIAorICAgICAgICB7CisgICAgICAgICAgICB4bWxGcmVlKHMpOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICB2aXJ0dWFsIHZvaWQgY2FsbChYTUxUb2tlbml6ZXIqIHRva2VuaXplcikg
CisgICAgICAgIHsKKyAgICAgICAgICAgIHRva2VuaXplci0+Y2RhdGFCbG9jayhzLCBsZW4pOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICB4bWxDaGFyKiBzOworICAgICAgICBpbnQgbGVu
OworICAgIH07CisKKyAgICBzdHJ1Y3QgUGVuZGluZ0NvbW1lbnRDYWxsYmFjayA6IHB1YmxpYyBQ
ZW5kaW5nQ2FsbGJhY2sgeworICAgICAgICB2aXJ0dWFsIH5QZW5kaW5nQ29tbWVudENhbGxiYWNr
KCkgCisgICAgICAgIHsKKyAgICAgICAgICAgIHhtbEZyZWUocyk7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIHZpcnR1YWwgdm9pZCBjYWxsKFhNTFRva2VuaXplciogdG9rZW5pemVyKSAK
KyAgICAgICAgeworICAgICAgICAgICAgdG9rZW5pemVyLT5jb21tZW50KHMpOworICAgICAgICB9
CisKKyAgICAgICAgeG1sQ2hhciogczsKKyAgICB9OworICAgIAorICAgIHN0cnVjdCBQZW5kaW5n
SW50ZXJuYWxTdWJzZXRDYWxsYmFjayA6IHB1YmxpYyBQZW5kaW5nQ2FsbGJhY2sgeworICAgICAg
ICB2aXJ0dWFsIH5QZW5kaW5nSW50ZXJuYWxTdWJzZXRDYWxsYmFjaygpIAorICAgICAgICB7Cisg
ICAgICAgICAgICB4bWxGcmVlKG5hbWUpOworICAgICAgICAgICAgeG1sRnJlZShleHRlcm5hbElE
KTsKKyAgICAgICAgICAgIHhtbEZyZWUoc3lzdGVtSUQpOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICB2aXJ0dWFsIHZvaWQgY2FsbChYTUxUb2tlbml6ZXIqIHRva2VuaXplcikKKyAgICAg
ICAgeworICAgICAgICAgICAgdG9rZW5pemVyLT5pbnRlcm5hbFN1YnNldChuYW1lLCBleHRlcm5h
bElELCBzeXN0ZW1JRCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHhtbENoYXIqIG5h
bWU7CisgICAgICAgIHhtbENoYXIqIGV4dGVybmFsSUQ7CisgICAgICAgIHhtbENoYXIqIHN5c3Rl
bUlEOyAgICAgICAgCisgICAgfTsKKyAgICAKKyAgICBzdHJ1Y3QgUGVuZGluZ0Vycm9yQ2FsbGJh
Y2s6IHB1YmxpYyBQZW5kaW5nQ2FsbGJhY2sgeworICAgICAgICB2aXJ0dWFsIH5QZW5kaW5nRXJy
b3JDYWxsYmFjaygpIAorICAgICAgICB7CisgICAgICAgICAgICBmcmVlIChtZXNzYWdlKTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgdmlydHVhbCB2b2lkIGNhbGwoWE1MVG9rZW5pemVy
KiB0b2tlbml6ZXIpIAorICAgICAgICB7CisgICAgICAgICAgICB0b2tlbml6ZXItPmhhbmRsZUVy
cm9yKHR5cGUsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIFhNTFRva2VuaXplcjo6RXJyb3JUeXBlIHR5cGU7CisgICAgICAg
IGNoYXIqIG1lc3NhZ2U7CisgICAgICAgIGludCBsaW5lTnVtYmVyOworICAgICAgICBpbnQgY29s
dW1uTnVtYmVyOworICAgIH07CisgICAgCitwdWJsaWM6CisgICAgRGVwcmVjYXRlZFB0ckxpc3Q8
UGVuZGluZ0NhbGxiYWNrPiBtX2NhbGxiYWNrczsKIH07CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCkBAIC0yNDcsMTIgKzUxOSwxNCBAQCBYTUxUb2tlbml6ZXI6OlhNTFRv
a2VuaXplcihEb2N1bWVudCAqX2RvCiAgICAgLCBtX3Nhd1hTTFRyYW5zZm9ybShmYWxzZSkKICAg
ICAsIG1fc2F3Rmlyc3RFbGVtZW50KGZhbHNlKQogICAgICwgbV9pc1hIVE1MRG9jdW1lbnQoZmFs
c2UpCisgICAgLCBtX3BhcnNlclBhdXNlZChmYWxzZSkKICAgICAsIG1fZXJyb3JDb3VudCgwKQog
ICAgICwgbV9sYXN0RXJyb3JMaW5lKDApCiAgICAgLCBtX2xhc3RFcnJvckNvbHVtbigwKQogICAg
ICwgbV9zY3JpcHRzSXQoMCkKICAgICAsIG1fY2FjaGVkU2NyaXB0KDApCiAgICAgLCBtX3BhcnNp
bmdGcmFnbWVudChmYWxzZSkKKyAgICAsIG1fcGVuZGluZ0NhbGxiYWNrcyhuZXcgUGVuZGluZ0Nh
bGxiYWNrcykKIHsKIH0KIApAQCAtMjY2LDEyICs1NDAsMTQgQEAgWE1MVG9rZW5pemVyOjpYTUxU
b2tlbml6ZXIoRG9jdW1lbnRGcmFnbQogICAgICwgbV9zYXdYU0xUcmFuc2Zvcm0oZmFsc2UpCiAg
ICAgLCBtX3Nhd0ZpcnN0RWxlbWVudChmYWxzZSkKICAgICAsIG1faXNYSFRNTERvY3VtZW50KGZh
bHNlKQorICAgICwgbV9wYXJzZXJQYXVzZWQoZmFsc2UpCiAgICAgLCBtX2Vycm9yQ291bnQoMCkK
ICAgICAsIG1fbGFzdEVycm9yTGluZSgwKQogICAgICwgbV9sYXN0RXJyb3JDb2x1bW4oMCkKICAg
ICAsIG1fc2NyaXB0c0l0KDApCiAgICAgLCBtX2NhY2hlZFNjcmlwdCgwKQogICAgICwgbV9wYXJz
aW5nRnJhZ21lbnQodHJ1ZSkKKyAgICAsIG1fcGVuZGluZ0NhbGxiYWNrcyhuZXcgUGVuZGluZ0Nh
bGxiYWNrcykKIHsKICAgICBpZiAoZnJhZ21lbnQpCiAgICAgICAgIGZyYWdtZW50LT5yZWYoKTsK
QEAgLTMwNiw2ICs1ODIsNyBAQCBYTUxUb2tlbml6ZXI6On5YTUxUb2tlbml6ZXIoKQogICAgIHNl
dEN1cnJlbnROb2RlKDApOwogICAgIGlmIChtX3BhcnNpbmdGcmFnbWVudCAmJiBtX2RvYykKICAg
ICAgICAgbV9kb2MtPmRlcmVmKCk7CisgICAgZGVsZXRlIG1fcGVuZGluZ0NhbGxiYWNrczsKICAg
ICBkZWxldGUgbV9zY3JpcHRzSXQ7CiAgICAgaWYgKG1fY2FjaGVkU2NyaXB0KQogICAgICAgICBt
X2NhY2hlZFNjcmlwdC0+ZGVyZWYodGhpcyk7CkBAIC0zMjUsMTEgKzYwMiwxOCBAQCB2b2lkIFhN
TFRva2VuaXplcjo6c2V0Q3VycmVudE5vZGUoTm9kZSogCiBib29sIFhNTFRva2VuaXplcjo6d3Jp
dGUoY29uc3QgU2VnbWVudGVkU3RyaW5nICZzLCBib29sIC8qYXBwZW5kRGF0YSovICkKIHsKICAg
ICBEZXByZWNhdGVkU3RyaW5nIHBhcnNlU3RyaW5nID0gcy50b1N0cmluZygpOworICAgIAogICAg
IGlmIChtX3Nhd1hTTFRyYW5zZm9ybSB8fCAhbV9zYXdGaXJzdEVsZW1lbnQpCiAgICAgICAgIG1f
b3JpZ2luYWxTb3VyY2VGb3JUcmFuc2Zvcm0gKz0gcGFyc2VTdHJpbmc7CiAKICAgICBpZiAobV9w
YXJzZXJTdG9wcGVkIHx8IG1fc2F3WFNMVHJhbnNmb3JtKQogICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgCisgICAgaWYgKDAgJiYgbV9wYXJzZXJQYXVzZWQpIHsKKyAgICAgICAgbV9wZW5kaW5n
U3JjLmFwcGVuZChzKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKICAgICBp
ZiAoIW1fY29udGV4dCkKICAgICAgICAgaW5pdGlhbGl6ZVBhcnNlckNvbnRleHQoKTsKICAgICAK
QEAgLTQxNyw2ICs3MDEsMTEgQEAgdm9pZCBYTUxUb2tlbml6ZXI6OnN0YXJ0RWxlbWVudE5zKGNv
bnN0IAogICAgIGlmIChtX3BhcnNlclN0b3BwZWQpCiAgICAgICAgIHJldHVybjsKICAgICAKKyAg
ICBpZiAobV9wYXJzZXJQYXVzZWQpIHsgICAgICAgIAorICAgICAgICBtX3BlbmRpbmdDYWxsYmFj
a3MtPmFwcGVuZFN0YXJ0RWxlbWVudE5TQ2FsbGJhY2soeG1sTG9jYWxOYW1lLCB4bWxQcmVmaXgs
IHhtbFVSSSwgbmJfbmFtZXNwYWNlcywgbGlieG1sTmFtZXNwYWNlcywgbmJfYXR0cmlidXRlcywg
bmJfZGVmYXVsdGVkLCBsaWJ4bWxBdHRyaWJ1dGVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICAKICAgICBtX3Nhd0ZpcnN0RWxlbWVudCA9IHRydWU7CiAKICAgICBleGl0VGV4dCgpOwpA
QCAtNDgxLDYgKzc3MCwxMSBAQCB2b2lkIFhNTFRva2VuaXplcjo6ZW5kRWxlbWVudE5zKCkKICAg
ICBpZiAobV9wYXJzZXJTdG9wcGVkKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAobV9wYXJz
ZXJQYXVzZWQpIHsKKyAgICAgICAgbV9wZW5kaW5nQ2FsbGJhY2tzLT5hcHBlbmRFbmRFbGVtZW50
TlNDYWxsYmFjaygpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAogICAgIGV4aXRUZXh0
KCk7CiAKICAgICBOb2RlICpuID0gbV9jdXJyZW50Tm9kZTsKQEAgLTQ5Niw2ICs3OTAsMTEgQEAg
dm9pZCBYTUxUb2tlbml6ZXI6OmNoYXJhY3RlcnMoY29uc3QgeG1sQwogICAgIGlmIChtX3BhcnNl
clN0b3BwZWQpCiAgICAgICAgIHJldHVybjsKICAgICAKKyAgICBpZiAobV9wYXJzZXJQYXVzZWQp
IHsKKyAgICAgICAgbV9wZW5kaW5nQ2FsbGJhY2tzLT5hcHBlbmRDaGFyYWN0ZXJzQ2FsbGJhY2so
cywgbGVuKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKICAgICBpZiAobV9jdXJyZW50
Tm9kZS0+aXNUZXh0Tm9kZSgpIHx8IGVudGVyVGV4dCgpKSB7CiAgICAgICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwogICAgICAgICBzdGF0aWNfY2FzdDxUZXh0Kj4obV9jdXJyZW50Tm9kZSktPmFw
cGVuZERhdGEodG9RU3RyaW5nKHMsIGxlbiksIGVjKTsKQEAgLTUyOCw0MSArODI3LDUxIEBAIHZv
aWQgWE1MVG9rZW5pemVyOjpleGl0VGV4dCgpCiAgICAgICAgIHNldEN1cnJlbnROb2RlKHBhcik7
CiB9CiAKLXZvaWQgWE1MVG9rZW5pemVyOjplcnJvcihFcnJvclR5cGUgdHlwZSwgY29uc3QgY2hh
ciAqbWVzc2FnZSwgdmFfbGlzdCBhcmdzKQordm9pZCBYTUxUb2tlbml6ZXI6OmhhbmRsZUVycm9y
KEVycm9yVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBtLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlcikKIHsKLSAgICBpZiAobV9wYXJzZXJTdG9wcGVkKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBpZiAodHlwZSA9PSBmYXRhbCB8fCAobV9lcnJvckNvdW50IDwgbWF4RXJyb3JzICYmIG1f
bGFzdEVycm9yTGluZSAhPSBsaW5lTnVtYmVyKCkgJiYgbV9sYXN0RXJyb3JDb2x1bW4gIT0gY29s
dW1uTnVtYmVyKCkpKSB7Ci0jaWYgV0lOMzIKLSAgICAgICAgY2hhciBtWzEwMjRdOwotICAgICAg
ICB2c25wcmludGYobSwgc2l6ZW9mKG0pIC0gMSwgbWVzc2FnZSwgYXJncyk7Ci0jZWxzZQotICAg
ICAgICBjaGFyICptOwotICAgICAgICB2YXNwcmludGYoJm0sIG1lc3NhZ2UsIGFyZ3MpOwotI2Vu
ZGlmCisgICAgaWYgKHR5cGUgPT0gZmF0YWwgfHwgKG1fZXJyb3JDb3VudCA8IG1heEVycm9ycyAm
JiBtX2xhc3RFcnJvckxpbmUgIT0gbGluZU51bWJlciAmJiBtX2xhc3RFcnJvckNvbHVtbiAhPSBj
b2x1bW5OdW1iZXIpKSB7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICAgICAgY2Fz
ZSB3YXJuaW5nOgotICAgICAgICAgICAgICAgIG1fZXJyb3JNZXNzYWdlcyArPSBTdHJpbmc6OnNw
cmludGYoIndhcm5pbmcgb24gbGluZSAlZCBhdCBjb2x1bW4gJWQ6ICVzIiwgbGluZU51bWJlcigp
LCBjb2x1bW5OdW1iZXIoKSwgbSk7CisgICAgICAgICAgICAgICAgbV9lcnJvck1lc3NhZ2VzICs9
IFN0cmluZzo6c3ByaW50Zigid2FybmluZyBvbiBsaW5lICVkIGF0IGNvbHVtbiAlZDogJXMiLCBs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIG0pOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBmYXRhbDoKICAgICAgICAgICAgIGNhc2Ugbm9uRmF0YWw6Ci0gICAgICAg
ICAgICAgICAgbV9lcnJvck1lc3NhZ2VzICs9IFN0cmluZzo6c3ByaW50ZigiZXJyb3Igb24gbGlu
ZSAlZCBhdCBjb2x1bW4gJWQ6ICVzIiwgbGluZU51bWJlcigpLCBjb2x1bW5OdW1iZXIoKSwgbSk7
CisgICAgICAgICAgICAgICAgbV9lcnJvck1lc3NhZ2VzICs9IFN0cmluZzo6c3ByaW50ZigiZXJy
b3Igb24gbGluZSAlZCBhdCBjb2x1bW4gJWQ6ICVzIiwgbGluZU51bWJlciwgY29sdW1uTnVtYmVy
LCBtKTsKICAgICAgICAgfQotI2lmICFXSU4zMgotICAgICAgICBmcmVlKG0pOwotI2VuZGlmCi0K
LSAgICAgICAgbV9sYXN0RXJyb3JMaW5lID0gbGluZU51bWJlcigpOwotICAgICAgICBtX2xhc3RF
cnJvckNvbHVtbiA9IGNvbHVtbk51bWJlcigpOworICAgICAgICAKKyAgICAgICAgbV9sYXN0RXJy
b3JMaW5lID0gbGluZU51bWJlcjsKKyAgICAgICAgbV9sYXN0RXJyb3JDb2x1bW4gPSBjb2x1bW5O
dW1iZXI7CiAgICAgICAgICsrbV9lcnJvckNvdW50OwogICAgIH0KLQorICAgIAogICAgIGlmICh0
eXBlICE9IHdhcm5pbmcpCiAgICAgICAgIG1fc2F3RXJyb3IgPSB0cnVlOwotCisgICAgCiAgICAg
aWYgKHR5cGUgPT0gZmF0YWwpCi0gICAgICAgIHN0b3BQYXJzaW5nKCk7CisgICAgICAgIHN0b3BQ
YXJzaW5nKCk7ICAgIAorfQorCit2b2lkIFhNTFRva2VuaXplcjo6ZXJyb3IoRXJyb3JUeXBlIHR5
cGUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIHZhX2xpc3QgYXJncykKK3sKKyAgICBpZiAobV9wYXJz
ZXJTdG9wcGVkKQorICAgICAgICByZXR1cm47CisKKyNpZiBXSU4zMgorICAgIGNoYXIgbVsxMDI0
XTsKKyAgICB2c25wcmludGYobSwgc2l6ZW9mKG0pIC0gMSwgbWVzc2FnZSwgYXJncyk7CisjZWxz
ZQorICAgIGNoYXIgKm07CisgICAgdmFzcHJpbnRmKCZtLCBtZXNzYWdlLCBhcmdzKTsKKyNlbmRp
ZgorICAgIAorICAgIGlmIChtX3BhcnNlclBhdXNlZCkKKyAgICAgICAgbV9wZW5kaW5nQ2FsbGJh
Y2tzLT5hcHBlbmRFcnJvckNhbGxiYWNrKHR5cGUsIG0sIGxpbmVOdW1iZXIoKSwgY29sdW1uTnVt
YmVyKCkpOworICAgIGVsc2UKKyAgICAgICAgaGFuZGxlRXJyb3IodHlwZSwgbSwgbGluZU51bWJl
cigpLCBjb2x1bW5OdW1iZXIoKSk7CisKKyNpZiAhV0lOMzIKKyAgICBmcmVlKG0pOworI2VuZGlm
CiB9CiAKIHZvaWQgWE1MVG9rZW5pemVyOjpwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oY29uc3QgeG1s
Q2hhciAqdGFyZ2V0LCBjb25zdCB4bWxDaGFyICpkYXRhKQpAQCAtNTcwLDYgKzg3OSwxMSBAQCB2
b2lkIFhNTFRva2VuaXplcjo6cHJvY2Vzc2luZ0luc3RydWN0aW9uCiAgICAgaWYgKG1fcGFyc2Vy
U3RvcHBlZCkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKG1fcGFyc2VyUGF1c2VkKSB7Cisg
ICAgICAgIG1fcGVuZGluZ0NhbGxiYWNrcy0+YXBwZW5kUHJvY2Vzc2luZ0luc3RydWN0aW9uQ2Fs
bGJhY2sodGFyZ2V0LCBkYXRhKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKICAgICBl
eGl0VGV4dCgpOwogCiAgICAgLy8gIyMjIGhhbmRsZSBleGNlcHRpb25zCkBAIC02MDMsNiArOTE3
LDExIEBAIHZvaWQgWE1MVG9rZW5pemVyOjpjZGF0YUJsb2NrKGNvbnN0IHhtbEMKICAgICBpZiAo
bV9wYXJzZXJTdG9wcGVkKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAobV9wYXJzZXJQYXVz
ZWQpIHsKKyAgICAgICAgbV9wZW5kaW5nQ2FsbGJhY2tzLT5hcHBlbmRDREFUQUJsb2NrQ2FsbGJh
Y2socywgbGVuKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKICAgICBleGl0VGV4dCgp
OwogCiAgICAgUmVmUHRyPE5vZGU+IG5ld05vZGUgPSBuZXcgQ0RBVEFTZWN0aW9uKG1fZG9jLCB0
b1FTdHJpbmcocywgbGVuKSk7CkBAIC02MTcsNiArOTM2LDExIEBAIHZvaWQgWE1MVG9rZW5pemVy
Ojpjb21tZW50KGNvbnN0IHhtbENoYXIKICAgICBpZiAobV9wYXJzZXJTdG9wcGVkKQogICAgICAg
ICByZXR1cm47CiAKKyAgICBpZiAobV9wYXJzZXJQYXVzZWQpIHsKKyAgICAgICAgbV9wZW5kaW5n
Q2FsbGJhY2tzLT5hcHBlbmRDb21tZW50Q2FsbGJhY2socyk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgCiAgICAgZXhpdFRleHQoKTsKIAogICAgIFJlZlB0cjxOb2RlPiBuZXdOb2RlID0g
bmV3IENvbW1lbnQobV9kb2MsIHRvUVN0cmluZyhzKSk7CkBAIC02MzAsNiArOTU0LDExIEBAIHZv
aWQgWE1MVG9rZW5pemVyOjppbnRlcm5hbFN1YnNldChjb25zdCAKICAgICBpZiAobV9wYXJzZXJT
dG9wcGVkKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAobV9wYXJzZXJQYXVzZWQpIHsKKyAg
ICAgICAgbV9wZW5kaW5nQ2FsbGJhY2tzLT5hcHBlbmRJbnRlcm5hbFN1YnNldENhbGxiYWNrKG5h
bWUsIGV4dGVybmFsSUQsIHN5c3RlbUlEKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAK
ICAgICBEb2N1bWVudCAqZG9jID0gbV9kb2M7CiAgICAgaWYgKCFkb2MpCiAgICAgICAgIHJldHVy
bjsKQEAgLTEwMTMsNiArMTM0MiwzNSBAQCB2b2lkIFhNTFRva2VuaXplcjo6c3RvcFBhcnNpbmco
KQogICAgIHhtbFN0b3BQYXJzZXIobV9jb250ZXh0KTsKIH0KIAordm9pZCBYTUxUb2tlbml6ZXI6
OnBhdXNlUGFyc2luZygpCit7CisgICAgaWYgKG1fcGFyc2luZ0ZyYWdtZW50KQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgbV9wYXJzZXJQYXVzZWQgPSB0cnVlOworfQorCit2b2lkIFhNTFRv
a2VuaXplcjo6cmVzdW1lUGFyc2luZygpCit7CisgICAgQVNTRVJUKG1fcGFyc2VyUGF1c2VkKTsK
KyAgICAKKyAgICBtX3BhcnNlclBhdXNlZCA9IGZhbHNlOworICAgIAorICAgIC8vIEZpcnN0LCBl
eGVjdXRlIGFueSBwZW5kaW5nIGNhbGxiYWNrcworICAgIHdoaWxlICghbV9wZW5kaW5nQ2FsbGJh
Y2tzLT5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9wZW5kaW5nQ2FsbGJhY2tzLT5jYWxsQW5kUmVt
b3ZlRmlyc3RDYWxsYmFjayh0aGlzKTsKKyAgICAgICAgCisgICAgICAgIC8vIEEgY2FsbGJhY2sg
cGF1c2VkIHRoZSBwYXJzZXIKKyAgICAgICAgaWYgKG1fcGFyc2VyUGF1c2VkKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICAvLyBUaGVuLCB3cml0ZSBhbnkgcGVuZGluZyBk
YXRhCisgICAgU2VnbWVudGVkU3RyaW5nIHJlc3QgPSBtX3BlbmRpbmdTcmM7CisgICAgbV9wZW5k
aW5nU3JjLmNsZWFyKCk7CisgICAgd3JpdGUocmVzdCwgZmFsc2UpOworfQorCiBzdGF0aWMgdm9p
ZCBiYWxhbmNlZFN0YXJ0RWxlbWVudE5zSGFuZGxlcih2b2lkICpjbG9zdXJlLCBjb25zdCB4bWxD
aGFyICpsb2NhbG5hbWUsIGNvbnN0IHhtbENoYXIgKnByZWZpeCwgY29uc3QgeG1sQ2hhciAqdXJp
LCBpbnQgbmJfbmFtZXNwYWNlcywgY29uc3QgeG1sQ2hhciAqKm5hbWVzcGFjZXMsIGludCBuYl9h
dHRyaWJ1dGVzLCBpbnQgbmJfZGVmYXVsdGVkLCBjb25zdCB4bWxDaGFyICoqbGlieG1sQXR0cmli
dXRlcykKIHsKICAgIHN0YXRpY19jYXN0PFhNTFRva2VuaXplciAqPihjbG9zdXJlKS0+c3RhcnRF
bGVtZW50TnMobG9jYWxuYW1lLCBwcmVmaXgsIHVyaSwgbmJfbmFtZXNwYWNlcywgbmFtZXNwYWNl
cywgbmJfYXR0cmlidXRlcywgbmJfZGVmYXVsdGVkLCBsaWJ4bWxBdHRyaWJ1dGVzKTsK
</data>
<flag name="review"
          id="2623"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>