<?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>60504</bug_id>
          
          <creation_ts>2011-05-09 14:24:37 -0700</creation_ts>
          <short_desc>Style cleanups in RenderFlexibleBox.cpp</short_desc>
          <delta_ts>2011-05-09 17:21:26 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tony Chang">tony</reporter>
          <assigned_to name="Tony Chang">tony</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>400753</commentid>
    <comment_count>0</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-05-09 14:24:37 -0700</bug_when>
    <thetext>Style cleanups in RenderFlexibleBox.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400760</commentid>
    <comment_count>1</comment_count>
      <attachid>92853</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-05-09 14:37:56 -0700</bug_when>
    <thetext>Created attachment 92853
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400765</commentid>
    <comment_count>2</comment_count>
      <attachid>92853</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-09 14:41:26 -0700</bug_when>
    <thetext>Comment on attachment 92853
Patch

I might have done this in smaller pieces.  But this looks reasonable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400850</commentid>
    <comment_count>3</comment_count>
      <attachid>92853</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-09 15:53:33 -0700</bug_when>
    <thetext>Comment on attachment 92853
Patch

Clearing flags on attachment: 92853

Committed r86098: &lt;http://trac.webkit.org/changeset/86098&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400851</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-09 15:53:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400922</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-09 17:21:26 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/86098 might have broken GTK Linux 64-bit Debug</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92853</attachid>
            <date>2011-05-09 14:37:56 -0700</date>
            <delta_ts>2011-05-09 15:53:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60504-20110509143903.patch</filename>
            <type>text/plain</type>
            <size>43381</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODYwNzYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5OGJhYzZkOGE3MmFlY2Q3
NmI2M2M0NzVkOTE5ZDFmOTNiZmEwNjIyLi5hOWVmZjQ2Njg0YzA3ZjQyMWI4NTM2ZDFlYzE4MDBm
OWFjYjA2NjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDUtMDkgIFRvbnkg
Q2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBTdHlsZSBjbGVhbnVwcyBpbiBSZW5kZXJGbGV4aWJsZUJveC5j
cHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwNTA0
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBqdXN0IHJlZmFjdG9yaW5nLgorCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZsZXhC
b3hJdGVyYXRvcjo6RmxleEJveEl0ZXJhdG9yKTogVXNlIG1fIGZvciBtZW1iZXIgdmFyaWFibGVz
LCBhbmQKKyAgICAgICAgICAgIHVzZSBjbGFzcyBpbml0aWFsaXplciBsaXN0LgorICAgICAgICAo
V2ViQ29yZTo6RmxleEJveEl0ZXJhdG9yOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpGbGV4
Qm94SXRlcmF0b3I6Om5leHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6
OlJlbmRlckZsZXhpYmxlQm94KToKKyAgICAgICAgKFdlYkNvcmU6Om1hcmdpbldpZHRoRm9yQ2hp
bGQpOiBQdWxsIG91dCBjb21tb24gY29kZSB1c2VkIGluIGNhbGMqUHJlZldpZHRocworICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmNhbGNIb3Jpem9udGFsUHJlZldpZHRocyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6Y2FsY1ZlcnRpY2FsUHJlZldp
ZHRocyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZVByZWZl
cnJlZExvZ2ljYWxXaWR0aHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6
OmxheW91dEJsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OmdhdGhlckZsZXhDaGlsZHJlbkluZm8p
OiBSZXdyaXRlIHVzZXMgb2YgRmxleEJveEl0ZXJhdG9yIGludG8gZm9yIHN0YXRlbWVudHMKKyAg
ICAgICAgICAgIHJhdGhlciB0aGFuIHdoaWxlIGxvb3BzLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRmxleGlibGVCb3g6OmxheW91dEhvcml6b250YWxCb3gpOiBkaXR0bworICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmxheW91dFZlcnRpY2FsQm94KTogZGl0dG8KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjphcHBseUxpbmVDbGFtcCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6YWxsb3dlZENoaWxkRmxleCk6IFJlbmFtZSB2
YXJpYWJsZXMgdy9oIHRvIHdpZHRoL2hlaWdodC4KKwogMjAxMS0wNS0wOSAgUm9iaW4gRHVubiAg
PHJvYmluQGFsbGR1bm4uY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtldmluIE9sbGl2aWVy
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKaW5k
ZXggYjU1YmQ5ZDQ0MjM1OTA1OTMyOTA2MDQ3ZGQwMzQyOTJmYzBmOTg4Ni4uNjY3ZjNmMGNjZjg5
OWQzYmVlMGIxNTNjOWFhMTUyNjcxOGQ2YTUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCkBAIC0zOCwzMCArMzgsMzAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgRmxleEJveEl0ZXJhdG9yIHsKIHB1YmxpYzoKICAgICBGbGV4Qm94
SXRlcmF0b3IoUmVuZGVyRmxleGlibGVCb3gqIHBhcmVudCkKKyAgICAgICAgOiBtX2JveChwYXJl
bnQpCisgICAgICAgICwgbV9sYXN0T3JkaW5hbCgxKQogICAgIHsKLSAgICAgICAgYm94ID0gcGFy
ZW50OwotICAgICAgICBpZiAoYm94LT5zdHlsZSgpLT5ib3hPcmllbnQoKSA9PSBIT1JJWk9OVEFM
ICYmICFib3gtPnN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKLSAgICAgICAgICAg
IGZvcndhcmQgPSBib3gtPnN0eWxlKCktPmJveERpcmVjdGlvbigpICE9IEJOT1JNQUw7CisgICAg
ICAgIGlmIChtX2JveC0+c3R5bGUoKS0+Ym94T3JpZW50KCkgPT0gSE9SSVpPTlRBTCAmJiAhbV9i
b3gtPnN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKKyAgICAgICAgICAgIG1fZm9y
d2FyZCA9IG1fYm94LT5zdHlsZSgpLT5ib3hEaXJlY3Rpb24oKSAhPSBCTk9STUFMOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBmb3J3YXJkID0gYm94LT5zdHlsZSgpLT5ib3hEaXJlY3Rpb24o
KSA9PSBCTk9STUFMOwotICAgICAgICBsYXN0T3JkaW5hbCA9IDE7IAotICAgICAgICBpZiAoIWZv
cndhcmQpIHsKKyAgICAgICAgICAgIG1fZm9yd2FyZCA9IG1fYm94LT5zdHlsZSgpLT5ib3hEaXJl
Y3Rpb24oKSA9PSBCTk9STUFMOworICAgICAgICBpZiAoIW1fZm9yd2FyZCkgewogICAgICAgICAg
ICAgLy8gTm8gY2hvaWNlLCBzaW5jZSB3ZSdyZSBnb2luZyBiYWNrd2FyZHMsIHdlIGhhdmUgdG8g
ZmluZCBvdXQgdGhlIGhpZ2hlc3Qgb3JkaW5hbCB1cCBmcm9udC4KLSAgICAgICAgICAgIFJlbmRl
ckJveCogY2hpbGQgPSBib3gtPmZpcnN0Q2hpbGRCb3goKTsKKyAgICAgICAgICAgIFJlbmRlckJv
eCogY2hpbGQgPSBtX2JveC0+Zmlyc3RDaGlsZEJveCgpOwogICAgICAgICAgICAgd2hpbGUgKGNo
aWxkKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNoaWxkLT5zdHlsZSgpLT5ib3hPcmRpbmFsR3Jv
dXAoKSA+IGxhc3RPcmRpbmFsKQotICAgICAgICAgICAgICAgICAgICBsYXN0T3JkaW5hbCA9IGNo
aWxkLT5zdHlsZSgpLT5ib3hPcmRpbmFsR3JvdXAoKTsKKyAgICAgICAgICAgICAgICBpZiAoY2hp
bGQtPnN0eWxlKCktPmJveE9yZGluYWxHcm91cCgpID4gbV9sYXN0T3JkaW5hbCkKKyAgICAgICAg
ICAgICAgICAgICAgbV9sYXN0T3JkaW5hbCA9IGNoaWxkLT5zdHlsZSgpLT5ib3hPcmRpbmFsR3Jv
dXAoKTsKICAgICAgICAgICAgICAgICBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZ0JveCgpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIHJlc2V0KCk7CiAg
ICAgfQogCiAgICAgdm9pZCByZXNldCgpCiAgICAgewotICAgICAgICBjdXJyZW50ID0gMDsKLSAg
ICAgICAgY3VycmVudE9yZGluYWwgPSBmb3J3YXJkID8gMCA6IGxhc3RPcmRpbmFsKzE7CisgICAg
ICAgIG1fY3VycmVudENoaWxkID0gMDsKKyAgICAgICAgbV9jdXJyZW50T3JkaW5hbCA9IG1fZm9y
d2FyZCA/IDAgOiBtX2xhc3RPcmRpbmFsICsgMTsKICAgICB9CiAKICAgICBSZW5kZXJCb3gqIGZp
cnN0KCkKQEAgLTY5LDQyICs2OSw0MiBAQCBwdWJsaWM6CiAgICAgICAgIHJlc2V0KCk7CiAgICAg
ICAgIHJldHVybiBuZXh0KCk7CiAgICAgfQotICAgIAorCiAgICAgUmVuZGVyQm94KiBuZXh0KCkK
ICAgICB7Ci0gICAgICAgIGRvIHsgCi0gICAgICAgICAgICBpZiAoIWN1cnJlbnQpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoZm9yd2FyZCkgewotICAgICAgICAgICAgICAgICAgICBjdXJyZW50T3Jk
aW5hbCsrOyAKLSAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRPcmRpbmFsID4gbGFzdE9y
ZGluYWwpCisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGlmICghbV9jdXJyZW50Q2hpbGQpIHsK
KyAgICAgICAgICAgICAgICBpZiAobV9mb3J3YXJkKSB7CisgICAgICAgICAgICAgICAgICAgICsr
bV9jdXJyZW50T3JkaW5hbDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fY3VycmVudE9yZGlu
YWwgPiBtX2xhc3RPcmRpbmFsKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBib3gtPmZpcnN0Q2hpbGRCb3goKTsKKyAgICAg
ICAgICAgICAgICAgICAgbV9jdXJyZW50Q2hpbGQgPSBtX2JveC0+Zmlyc3RDaGlsZEJveCgpOwog
ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRPcmRp
bmFsLS07Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50T3JkaW5hbCA9PSAwKQorICAg
ICAgICAgICAgICAgICAgICAtLW1fY3VycmVudE9yZGluYWw7CisgICAgICAgICAgICAgICAgICAg
IGlmICghbV9jdXJyZW50T3JkaW5hbCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAw
OwotICAgICAgICAgICAgICAgICAgICBjdXJyZW50ID0gYm94LT5sYXN0Q2hpbGRCb3goKTsKKyAg
ICAgICAgICAgICAgICAgICAgbV9jdXJyZW50Q2hpbGQgPSBtX2JveC0+bGFzdENoaWxkQm94KCk7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIGN1cnJlbnQgPSBmb3J3YXJkID8gY3VycmVudC0+bmV4dFNpYmxpbmdCb3go
KSA6IGN1cnJlbnQtPnByZXZpb3VzU2libGluZ0JveCgpOwotICAgICAgICAgICAgaWYgKGN1cnJl
bnQgJiYgY3VycmVudC0+c3R5bGUoKS0+Ym94T3JkaW5hbEdyb3VwKCkgPiBsYXN0T3JkaW5hbCkK
LSAgICAgICAgICAgICAgICBsYXN0T3JkaW5hbCA9IGN1cnJlbnQtPnN0eWxlKCktPmJveE9yZGlu
YWxHcm91cCgpOwotICAgICAgICB9IHdoaWxlICghY3VycmVudCB8fCBjdXJyZW50LT5zdHlsZSgp
LT5ib3hPcmRpbmFsR3JvdXAoKSAhPSBjdXJyZW50T3JkaW5hbCB8fAotICAgICAgICAgICAgICAg
ICBjdXJyZW50LT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gQ09MTEFQU0UpOwotICAgICAgICBy
ZXR1cm4gY3VycmVudDsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRDaGlsZCA9IG1fZm9yd2Fy
ZCA/IG1fY3VycmVudENoaWxkLT5uZXh0U2libGluZ0JveCgpIDogbV9jdXJyZW50Q2hpbGQtPnBy
ZXZpb3VzU2libGluZ0JveCgpOworICAgICAgICAgICAgaWYgKG1fY3VycmVudENoaWxkICYmIG1f
Y3VycmVudENoaWxkLT5zdHlsZSgpLT5ib3hPcmRpbmFsR3JvdXAoKSA+IG1fbGFzdE9yZGluYWwp
CisgICAgICAgICAgICAgICAgbV9sYXN0T3JkaW5hbCA9IG1fY3VycmVudENoaWxkLT5zdHlsZSgp
LT5ib3hPcmRpbmFsR3JvdXAoKTsKKyAgICAgICAgfSB3aGlsZSAoIW1fY3VycmVudENoaWxkIHx8
IG1fY3VycmVudENoaWxkLT5zdHlsZSgpLT5ib3hPcmRpbmFsR3JvdXAoKSAhPSBtX2N1cnJlbnRP
cmRpbmFsCisgICAgICAgICAgICAgICAgIHx8IG1fY3VycmVudENoaWxkLT5zdHlsZSgpLT52aXNp
YmlsaXR5KCkgPT0gQ09MTEFQU0UpOworICAgICAgICByZXR1cm4gbV9jdXJyZW50Q2hpbGQ7CiAg
ICAgfQogCiBwcml2YXRlOgotICAgIFJlbmRlckZsZXhpYmxlQm94KiBib3g7Ci0gICAgUmVuZGVy
Qm94KiBjdXJyZW50OwotICAgIGJvb2wgZm9yd2FyZDsKLSAgICB1bnNpZ25lZCBpbnQgY3VycmVu
dE9yZGluYWw7Ci0gICAgdW5zaWduZWQgaW50IGxhc3RPcmRpbmFsOworICAgIFJlbmRlckZsZXhp
YmxlQm94KiBtX2JveDsKKyAgICBSZW5kZXJCb3gqIG1fY3VycmVudENoaWxkOworICAgIGJvb2wg
bV9mb3J3YXJkOworICAgIHVuc2lnbmVkIGludCBtX2N1cnJlbnRPcmRpbmFsOworICAgIHVuc2ln
bmVkIGludCBtX2xhc3RPcmRpbmFsOwogfTsKLSAgICAKKwogUmVuZGVyRmxleGlibGVCb3g6OlJl
bmRlckZsZXhpYmxlQm94KE5vZGUqIG5vZGUpCi06UmVuZGVyQmxvY2sobm9kZSkKKyAgICA6IFJl
bmRlckJsb2NrKG5vZGUpCiB7CiAgICAgc2V0Q2hpbGRyZW5JbmxpbmUoZmFsc2UpOyAvLyBBbGwg
b2Ygb3VyIGNoaWxkcmVuIG11c3QgYmUgYmxvY2stbGV2ZWwKICAgICBtX2ZsZXhpbmdDaGlsZHJl
biA9IG1fc3RyZXRjaGluZ0NoaWxkcmVuID0gZmFsc2U7CkBAIC0xMTQsNTQgKzExNCw0OCBAQCBS
ZW5kZXJGbGV4aWJsZUJveDo6flJlbmRlckZsZXhpYmxlQm94KCkKIHsKIH0KIAorc3RhdGljIGlu
dCBtYXJnaW5XaWR0aEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpCit7CisgICAgLy8gQSBtYXJn
aW4gYmFzaWNhbGx5IGhhcyB0aHJlZSB0eXBlczogZml4ZWQsIHBlcmNlbnRhZ2UsIGFuZCBhdXRv
ICh2YXJpYWJsZSkuCisgICAgLy8gQXV0byBhbmQgcGVyY2VudGFnZSBtYXJnaW5zIHNpbXBseSBi
ZWNvbWUgMCB3aGVuIGNvbXB1dGluZyBtaW4vbWF4IHdpZHRoLgorICAgIC8vIEZpeGVkIG1hcmdp
bnMgY2FuIGJlIGFkZGVkIGluIGFzIGlzLgorICAgIExlbmd0aCBtYXJnaW5MZWZ0ID0gY2hpbGQt
PnN0eWxlKCktPm1hcmdpbkxlZnQoKTsKKyAgICBMZW5ndGggbWFyZ2luUmlnaHQgPSBjaGlsZC0+
c3R5bGUoKS0+bWFyZ2luUmlnaHQoKTsKKyAgICBpbnQgbWFyZ2luID0gMDsKKyAgICBpZiAobWFy
Z2luTGVmdC5pc0ZpeGVkKCkpCisgICAgICAgIG1hcmdpbiArPSBtYXJnaW5MZWZ0LnZhbHVlKCk7
CisgICAgaWYgKG1hcmdpblJpZ2h0LmlzRml4ZWQoKSkKKyAgICAgICAgbWFyZ2luICs9IG1hcmdp
blJpZ2h0LnZhbHVlKCk7CisgICAgcmV0dXJuIG1hcmdpbjsKK30KKwogdm9pZCBSZW5kZXJGbGV4
aWJsZUJveDo6Y2FsY0hvcml6b250YWxQcmVmV2lkdGhzKCkKIHsKICAgICBmb3IgKFJlbmRlckJv
eCogY2hpbGQgPSBmaXJzdENoaWxkQm94KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2li
bGluZ0JveCgpKSB7Ci0gICAgICAgIC8vIHBvc2l0aW9uZWQgY2hpbGRyZW4gZG9uJ3QgYWZmZWN0
IHRoZSBtaW5tYXh3aWR0aAorICAgICAgICAvLyBQb3NpdGlvbmVkIGNoaWxkcmVuIGFuZCBjb2xs
YXBzZWQgY2hpbGRyZW4gZG9uJ3QgYWZmZWN0IHRoZSBtaW4vbWF4IHdpZHRoLgogICAgICAgICBp
ZiAoY2hpbGQtPmlzUG9zaXRpb25lZCgpIHx8IGNoaWxkLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkg
PT0gQ09MTEFQU0UpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAvLyBBIG1hcmdp
biBiYXNpY2FsbHkgaGFzIHRocmVlIHR5cGVzOiBmaXhlZCwgcGVyY2VudGFnZSwgYW5kIGF1dG8g
KHZhcmlhYmxlKS4KLSAgICAgICAgLy8gQXV0byBhbmQgcGVyY2VudGFnZSBtYXJnaW5zIHNpbXBs
eSBiZWNvbWUgMCB3aGVuIGNvbXB1dGluZyBtaW4vbWF4IHdpZHRoLgotICAgICAgICAvLyBGaXhl
ZCBtYXJnaW5zIGNhbiBiZSBhZGRlZCBpbiBhcyBpcy4KLSAgICAgICAgTGVuZ3RoIG1sID0gY2hp
bGQtPnN0eWxlKCktPm1hcmdpbkxlZnQoKTsKLSAgICAgICAgTGVuZ3RoIG1yID0gY2hpbGQtPnN0
eWxlKCktPm1hcmdpblJpZ2h0KCk7Ci0gICAgICAgIGludCBtYXJnaW4gPSAwLCBtYXJnaW5MZWZ0
ID0gMCwgbWFyZ2luUmlnaHQgPSAwOwotICAgICAgICBpZiAobWwuaXNGaXhlZCgpKQotICAgICAg
ICAgICAgbWFyZ2luTGVmdCArPSBtbC52YWx1ZSgpOwotICAgICAgICBpZiAobXIuaXNGaXhlZCgp
KQotICAgICAgICAgICAgbWFyZ2luUmlnaHQgKz0gbXIudmFsdWUoKTsKLSAgICAgICAgbWFyZ2lu
ID0gbWFyZ2luTGVmdCArIG1hcmdpblJpZ2h0OwotCisgICAgICAgIGludCBtYXJnaW4gPSBtYXJn
aW5XaWR0aEZvckNoaWxkKGNoaWxkKTsKICAgICAgICAgbV9taW5QcmVmZXJyZWRMb2dpY2FsV2lk
dGggKz0gY2hpbGQtPm1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpICsgbWFyZ2luOwogICAgICAg
ICBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCArPSBjaGlsZC0+bWF4UHJlZmVycmVkTG9naWNh
bFdpZHRoKCkgKyBtYXJnaW47Ci0gICAgfSAgICAKKyAgICB9CiB9CiAKIHZvaWQgUmVuZGVyRmxl
eGlibGVCb3g6OmNhbGNWZXJ0aWNhbFByZWZXaWR0aHMoKQogewogICAgIGZvciAoUmVuZGVyQm94
KiBjaGlsZCA9IGZpcnN0Q2hpbGRCb3goKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJs
aW5nQm94KCkpIHsKLSAgICAgICAgLy8gUG9zaXRpb25lZCBjaGlsZHJlbiBhbmQgY29sbGFwc2Vk
IGNoaWxkcmVuIGRvbid0IGFmZmVjdCB0aGUgbWluL21heCB3aWR0aAorICAgICAgICAvLyBQb3Np
dGlvbmVkIGNoaWxkcmVuIGFuZCBjb2xsYXBzZWQgY2hpbGRyZW4gZG9uJ3QgYWZmZWN0IHRoZSBt
aW4vbWF4IHdpZHRoLgogICAgICAgICBpZiAoY2hpbGQtPmlzUG9zaXRpb25lZCgpIHx8IGNoaWxk
LT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gQ09MTEFQU0UpCiAgICAgICAgICAgICBjb250aW51
ZTsKIAotICAgICAgICAvLyBBIG1hcmdpbiBiYXNpY2FsbHkgaGFzIHRocmVlIHR5cGVzOiBmaXhl
ZCwgcGVyY2VudGFnZSwgYW5kIGF1dG8gKHZhcmlhYmxlKS4KLSAgICAgICAgLy8gQXV0by9wZXJj
ZW50YWdlIG1hcmdpbnMgc2ltcGx5IGJlY29tZSAwIHdoZW4gY29tcHV0aW5nIG1pbi9tYXggd2lk
dGguCi0gICAgICAgIC8vIEZpeGVkIG1hcmdpbnMgY2FuIGJlIGFkZGVkIGluIGFzIGlzLgotICAg
ICAgICBMZW5ndGggbWwgPSBjaGlsZC0+c3R5bGUoKS0+bWFyZ2luTGVmdCgpOwotICAgICAgICBM
ZW5ndGggbXIgPSBjaGlsZC0+c3R5bGUoKS0+bWFyZ2luUmlnaHQoKTsKLSAgICAgICAgaW50IG1h
cmdpbiA9IDA7Ci0gICAgICAgIGlmIChtbC5pc0ZpeGVkKCkpCi0gICAgICAgICAgICBtYXJnaW4g
Kz0gbWwudmFsdWUoKTsKLSAgICAgICAgaWYgKG1yLmlzRml4ZWQoKSkKLSAgICAgICAgICAgIG1h
cmdpbiArPSBtci52YWx1ZSgpOwotICAgICAgICAKLSAgICAgICAgaW50IHcgPSBjaGlsZC0+bWlu
UHJlZmVycmVkTG9naWNhbFdpZHRoKCkgKyBtYXJnaW47Ci0gICAgICAgIG1fbWluUHJlZmVycmVk
TG9naWNhbFdpZHRoID0gbWF4KHcsIG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoKTsKLSAgICAg
ICAgCi0gICAgICAgIHcgPSBjaGlsZC0+bWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKCkgKyBtYXJn
aW47Ci0gICAgICAgIG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoID0gbWF4KHcsIG1fbWF4UHJl
ZmVycmVkTG9naWNhbFdpZHRoKTsKLSAgICB9ICAgIAorICAgICAgICBpbnQgbWFyZ2luID0gbWFy
Z2luV2lkdGhGb3JDaGlsZChjaGlsZCk7CisgICAgICAgIGludCB3aWR0aCA9IGNoaWxkLT5taW5Q
cmVmZXJyZWRMb2dpY2FsV2lkdGgoKSArIG1hcmdpbjsKKyAgICAgICAgbV9taW5QcmVmZXJyZWRM
b2dpY2FsV2lkdGggPSBtYXgod2lkdGgsIG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoKTsKKwor
ICAgICAgICB3aWR0aCA9IGNoaWxkLT5tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSArIG1hcmdp
bjsKKyAgICAgICAgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBtYXgod2lkdGgsIG1fbWF4
UHJlZmVycmVkTG9naWNhbFdpZHRoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVuZGVyRmxleGlibGVC
b3g6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKQEAgLTE5Miw3ICsxODYsNyBAQCB2
b2lkIFJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCiAg
ICAgICAgIG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoID0gbWF4KG1fbWF4UHJlZmVycmVkTG9n
aWNhbFdpZHRoLCBjb21wdXRlQ29udGVudEJveExvZ2ljYWxXaWR0aChzdHlsZSgpLT5taW5XaWR0
aCgpLnZhbHVlKCkpKTsKICAgICAgICAgbV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBtYXgo
bV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgsIGNvbXB1dGVDb250ZW50Qm94TG9naWNhbFdpZHRo
KHN0eWxlKCktPm1pbldpZHRoKCkudmFsdWUoKSkpOwogICAgIH0KLSAgICAKKwogICAgIGlmIChz
dHlsZSgpLT5tYXhXaWR0aCgpLmlzRml4ZWQoKSAmJiBzdHlsZSgpLT5tYXhXaWR0aCgpLnZhbHVl
KCkgIT0gdW5kZWZpbmVkTGVuZ3RoKSB7CiAgICAgICAgIG1fbWF4UHJlZmVycmVkTG9naWNhbFdp
ZHRoID0gbWluKG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoLCBjb21wdXRlQ29udGVudEJveExv
Z2ljYWxXaWR0aChzdHlsZSgpLT5tYXhXaWR0aCgpLnZhbHVlKCkpKTsKICAgICAgICAgbV9taW5Q
cmVmZXJyZWRMb2dpY2FsV2lkdGggPSBtaW4obV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgsIGNv
bXB1dGVDb250ZW50Qm94TG9naWNhbFdpZHRoKHN0eWxlKCktPm1heFdpZHRoKCkudmFsdWUoKSkp
OwpAQCAtMjE3LDEwICsyMTEsMTAgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0Qmxv
Y2soYm9vbCByZWxheW91dENoaWxkcmVuLCBpbnQgLypwYWdlSGVpZ2h0IEZJWE0KIAogICAgIGlu
dCBwcmV2aW91c1dpZHRoID0gd2lkdGgoKTsKICAgICBpbnQgcHJldmlvdXNIZWlnaHQgPSBoZWln
aHQoKTsKLSAgICAKKwogICAgIGNvbXB1dGVMb2dpY2FsV2lkdGgoKTsKICAgICBjb21wdXRlTG9n
aWNhbEhlaWdodCgpOwotICAgIAorCiAgICAgbV9vdmVyZmxvdy5jbGVhcigpOwogCiAgICAgaWYg
KHByZXZpb3VzV2lkdGggIT0gd2lkdGgoKSB8fCBwcmV2aW91c0hlaWdodCAhPSBoZWlnaHQoKSB8
fApAQCAtMjcyLDcgKzI2Niw3IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dEJsb2Nr
KGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgaW50IC8qcGFnZUhlaWdodCBGSVhNCiAgICAgICAgIHNl
dE1heE1hcmdpbkJlZm9yZVZhbHVlcyhwb3MsIG5lZyk7CiAgICAgICAgIHNldE1heE1hcmdpbkFm
dGVyVmFsdWVzKDAsIDApOwogICAgIH0KLSAgICAKKwogICAgIGNvbXB1dGVPdmVyZmxvdyhvbGRD
bGllbnRBZnRlckVkZ2UpOwogCiAgICAgc3RhdGVQdXNoZXIucG9wKCk7CkBAIC0yODksMTUgKzI4
MywxNCBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0
Q2hpbGRyZW4sIGludCAvKnBhZ2VIZWlnaHQgRklYTQogCiAgICAgLy8gUmVwYWludCB3aXRoIG91
ciBuZXcgYm91bmRzIGlmIHRoZXkgYXJlIGRpZmZlcmVudCBmcm9tIG91ciBvbGQgYm91bmRzLgog
ICAgIHJlcGFpbnRlci5yZXBhaW50QWZ0ZXJMYXlvdXQoKTsKLSAgICAKKwogICAgIHNldE5lZWRz
TGF5b3V0KGZhbHNlKTsKIH0KIAogLy8gVGhlIGZpcnN0IHdhbGsgb3ZlciBvdXIga2lkcyBpcyB0
byBmaW5kIG91dCBpZiB3ZSBoYXZlIGFueSBmbGV4aWJsZSBjaGlsZHJlbi4KIHN0YXRpYyB2b2lk
IGdhdGhlckZsZXhDaGlsZHJlbkluZm8oRmxleEJveEl0ZXJhdG9yJiBpdGVyYXRvciwgYm9vbCBy
ZWxheW91dENoaWxkcmVuLCB1bnNpZ25lZCBpbnQmIGhpZ2hlc3RGbGV4R3JvdXAsIHVuc2lnbmVk
IGludCYgbG93ZXN0RmxleEdyb3VwLCBib29sJiBoYXZlRmxleCkKIHsKLSAgICBSZW5kZXJCb3gq
IGNoaWxkID0gaXRlcmF0b3IuZmlyc3QoKTsKLSAgICB3aGlsZSAoY2hpbGQpIHsKKyAgICBmb3Ig
KFJlbmRlckJveCogY2hpbGQgPSBpdGVyYXRvci5maXJzdCgpOyBjaGlsZDsgY2hpbGQgPSBpdGVy
YXRvci5uZXh0KCkpIHsKICAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoaXMgY2hpbGQgZmxl
eGVzLgogICAgICAgICBpZiAoIWNoaWxkLT5pc1Bvc2l0aW9uZWQoKSAmJiBjaGlsZC0+c3R5bGUo
KS0+Ym94RmxleCgpID4gMC4wZikgewogICAgICAgICAgICAgLy8gV2UgYWx3YXlzIGhhdmUgdG8g
bGF5IG91dCBmbGV4aWJsZSBvYmplY3RzIGFnYWluLCBzaW5jZSB0aGUgZmxleCBkaXN0cmlidXRp
b24KQEAgLTMxNCw3ICszMDcsNiBAQCBzdGF0aWMgdm9pZCBnYXRoZXJGbGV4Q2hpbGRyZW5JbmZv
KEZsZXhCb3hJdGVyYXRvciYgaXRlcmF0b3IsIGJvb2wgcmVsYXlvdXRDaGlsZAogICAgICAgICAg
ICAgaWYgKGZsZXhHcm91cCA+IGhpZ2hlc3RGbGV4R3JvdXApCiAgICAgICAgICAgICAgICAgaGln
aGVzdEZsZXhHcm91cCA9IGZsZXhHcm91cDsKICAgICAgICAgfQotICAgICAgICBjaGlsZCA9IGl0
ZXJhdG9yLm5leHQoKTsKICAgICB9CiB9CiAKQEAgLTMzNSw4ICszMjcsNiBAQCB2b2lkIFJlbmRl
ckZsZXhpYmxlQm94OjpsYXlvdXRIb3Jpem9udGFsQm94KGJvb2wgcmVsYXlvdXRDaGlsZHJlbikK
ICAgICBib29sIGhhdmVGbGV4ID0gZmFsc2U7CiAgICAgZ2F0aGVyRmxleENoaWxkcmVuSW5mbyhp
dGVyYXRvciwgcmVsYXlvdXRDaGlsZHJlbiwgaGlnaGVzdEZsZXhHcm91cCwgbG93ZXN0RmxleEdy
b3VwLCBoYXZlRmxleCk7CiAKLSAgICBSZW5kZXJCb3gqIGNoaWxkOwotCiAgICAgUmVuZGVyQmxv
Y2s6OnN0YXJ0RGVsYXlVcGRhdGVTY3JvbGxJbmZvKCk7CiAKICAgICAvLyBXZSBkbyAyIHBhc3Nl
cy4gIFRoZSBmaXJzdCBwYXNzIGlzIHNpbXBseSB0byBsYXkgZXZlcnlvbmUgb3V0IGF0CkBAIC0z
NDYsMzEgKzMzNiwyOCBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRIb3Jpem9udGFs
Qm94KGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKICAgICAgICAgc2V0SGVpZ2h0KHlQb3MpOwogCiAg
ICAgICAgIHhQb3MgPSBib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpOwotICAgICAgICAgICAg
ICAgIAorCiAgICAgICAgIC8vIE91ciBmaXJzdCBwYXNzIGlzIGRvbmUgd2l0aG91dCBmbGV4aW5n
LiAgV2Ugc2ltcGx5IGxheSB0aGUgY2hpbGRyZW4KICAgICAgICAgLy8gb3V0IHdpdGhpbiB0aGUg
Ym94LiAgV2UgaGF2ZSB0byBkbyBhIGxheW91dCBmaXJzdCBpbiBvcmRlciB0byBkZXRlcm1pbmUK
ICAgICAgICAgLy8gb3VyIGJveCdzIGludHJpbnNpYyBoZWlnaHQuCiAgICAgICAgIGludCBtYXhB
c2NlbnQgPSAwLCBtYXhEZXNjZW50ID0gMDsKLSAgICAgICAgY2hpbGQgPSBpdGVyYXRvci5maXJz
dCgpOwotICAgICAgICB3aGlsZSAoY2hpbGQpIHsKKyAgICAgICAgZm9yIChSZW5kZXJCb3gqIGNo
aWxkID0gaXRlcmF0b3IuZmlyc3QoKTsgY2hpbGQ7IGNoaWxkID0gaXRlcmF0b3IubmV4dCgpKSB7
CiAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgd2UgcmVsYXlvdXQgY2hpbGRyZW4gaWYgd2UgbmVl
ZCBpdC4KICAgICAgICAgICAgIGlmIChyZWxheW91dENoaWxkcmVuIHx8IChjaGlsZC0+aXNSZXBs
YWNlZCgpICYmIChjaGlsZC0+c3R5bGUoKS0+d2lkdGgoKS5pc1BlcmNlbnQoKSB8fCBjaGlsZC0+
c3R5bGUoKS0+aGVpZ2h0KCkuaXNQZXJjZW50KCkpKSkKICAgICAgICAgICAgICAgICBjaGlsZC0+
c2V0Q2hpbGROZWVkc0xheW91dCh0cnVlLCBmYWxzZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIGlmIChjaGlsZC0+aXNQb3NpdGlvbmVkKCkpIHsKLSAgICAgICAgICAgICAgICBjaGlsZCA9
IGl0ZXJhdG9yLm5leHQoKTsKKworICAgICAgICAgICAgaWYgKGNoaWxkLT5pc1Bvc2l0aW9uZWQo
KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAKKwogICAg
ICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgY2hpbGQncyB2ZXJ0aWNhbCBtYXJnaW5zLgogICAgICAg
ICAgICAgY2hpbGQtPmNvbXB1dGVCbG9ja0RpcmVjdGlvbk1hcmdpbnModGhpcyk7Ci0gICAgCisK
ICAgICAgICAgICAgIGlmICghY2hpbGQtPm5lZWRzTGF5b3V0KCkpCiAgICAgICAgICAgICAgICAg
Y2hpbGQtPm1hcmtGb3JQYWdpbmF0aW9uUmVsYXlvdXRJZk5lZWRlZCgpOwogCiAgICAgICAgICAg
ICAvLyBOb3cgZG8gdGhlIGxheW91dC4KICAgICAgICAgICAgIGNoaWxkLT5sYXlvdXRJZk5lZWRl
ZCgpOwotICAgIAorCiAgICAgICAgICAgICAvLyBVcGRhdGUgb3VyIGhlaWdodCBhbmQgb3ZlcmZs
b3cgaGVpZ2h0LgogICAgICAgICAgICAgaWYgKHN0eWxlKCktPmJveEFsaWduKCkgPT0gQkJBU0VM
SU5FKSB7CiAgICAgICAgICAgICAgICAgaW50IGFzY2VudCA9IGNoaWxkLT5maXJzdExpbmVCb3hC
YXNlbGluZSgpOwpAQCAtMzc4LDM4ICszNjUsMzUgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6
bGF5b3V0SG9yaXpvbnRhbEJveChib29sIHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAgICAgICAgICAg
ICAgICAgIGFzY2VudCA9IGNoaWxkLT5oZWlnaHQoKSArIGNoaWxkLT5tYXJnaW5Cb3R0b20oKTsK
ICAgICAgICAgICAgICAgICBhc2NlbnQgKz0gY2hpbGQtPm1hcmdpblRvcCgpOwogICAgICAgICAg
ICAgICAgIGludCBkZXNjZW50ID0gKGNoaWxkLT5tYXJnaW5Ub3AoKSArIGNoaWxkLT5oZWlnaHQo
KSArIGNoaWxkLT5tYXJnaW5Cb3R0b20oKSkgLSBhc2NlbnQ7Ci0gICAgICAgICAgICAgICAgCisK
ICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgb3VyIG1heGltdW0gYXNjZW50LgogICAgICAgICAg
ICAgICAgIG1heEFzY2VudCA9IG1heChtYXhBc2NlbnQsIGFzY2VudCk7Ci0gICAgICAgICAgICAg
ICAgCisKICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgb3VyIG1heGltdW0gZGVzY2VudC4KICAg
ICAgICAgICAgICAgICBtYXhEZXNjZW50ID0gbWF4KG1heERlc2NlbnQsIGRlc2NlbnQpOwotICAg
ICAgICAgICAgICAgIAorCiAgICAgICAgICAgICAgICAgLy8gTm93IHVwZGF0ZSBvdXIgaGVpZ2h0
LgogICAgICAgICAgICAgICAgIHNldEhlaWdodChtYXgoeVBvcyArIG1heEFzY2VudCArIG1heERl
c2NlbnQsIGhlaWdodCgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgc2V0SGVpZ2h0KG1heChoZWlnaHQoKSwgeVBvcyArIGNoaWxkLT5tYXJnaW5U
b3AoKSArIGNoaWxkLT5oZWlnaHQoKSArIGNoaWxkLT5tYXJnaW5Cb3R0b20oKSkpOwotCi0gICAg
ICAgICAgICBjaGlsZCA9IGl0ZXJhdG9yLm5leHQoKTsKICAgICAgICAgfQotICAgICAgICAKKwog
ICAgICAgICBpZiAoIWl0ZXJhdG9yLmZpcnN0KCkgJiYgaGFzTGluZUlmRW1wdHkoKSkKICAgICAg
ICAgICAgIHNldEhlaWdodChoZWlnaHQoKSArIGxpbmVIZWlnaHQodHJ1ZSwgc3R5bGUoKS0+aXNI
b3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5lLCBQ
b3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpKTsKLSAgICAgICAgCisKICAgICAgICAgc2V0SGVp
Z2h0KGhlaWdodCgpICsgdG9BZGQpOwotICAgICAgICAKKwogICAgICAgICBvbGRIZWlnaHQgPSBo
ZWlnaHQoKTsKICAgICAgICAgY29tcHV0ZUxvZ2ljYWxIZWlnaHQoKTsKIAogICAgICAgICByZWxh
eW91dENoaWxkcmVuID0gZmFsc2U7CiAgICAgICAgIGlmIChvbGRIZWlnaHQgIT0gaGVpZ2h0KCkp
CiAgICAgICAgICAgICBoZWlnaHRTcGVjaWZpZWQgPSB0cnVlOwotICAgICAgICAKKwogICAgICAg
ICAvLyBOb3cgdGhhdCBvdXIgaGVpZ2h0IGlzIGFjdHVhbGx5IGtub3duLCB3ZSBjYW4gcGxhY2Ug
b3VyIGJveGVzLgogICAgICAgICBtX3N0cmV0Y2hpbmdDaGlsZHJlbiA9IChzdHlsZSgpLT5ib3hB
bGlnbigpID09IEJTVFJFVENIKTsKLSAgICAgICAgY2hpbGQgPSBpdGVyYXRvci5maXJzdCgpOwot
ICAgICAgICB3aGlsZSAoY2hpbGQpIHsKKyAgICAgICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0g
aXRlcmF0b3IuZmlyc3QoKTsgY2hpbGQ7IGNoaWxkID0gaXRlcmF0b3IubmV4dCgpKSB7CiAgICAg
ICAgICAgICBpZiAoY2hpbGQtPmlzUG9zaXRpb25lZCgpKSB7CiAgICAgICAgICAgICAgICAgY2hp
bGQtPmNvbnRhaW5pbmdCbG9jaygpLT5pbnNlcnRQb3NpdGlvbmVkT2JqZWN0KGNoaWxkKTsKICAg
ICAgICAgICAgICAgICBSZW5kZXJMYXllciogY2hpbGRMYXllciA9IGNoaWxkLT5sYXllcigpOwpA
QCAtNDE5LDEwICs0MDMsOSBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRIb3Jpem9u
dGFsQm94KGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKICAgICAgICAgICAgICAgICAgICAgaWYgKGNo
aWxkLT5zdHlsZSgpLT5oYXNTdGF0aWNCbG9ja1Bvc2l0aW9uKHN0eWxlKCktPmlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQtPnNldENoaWxk
TmVlZHNMYXlvdXQodHJ1ZSwgZmFsc2UpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICBjaGlsZCA9IGl0ZXJhdG9yLm5leHQoKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIH0KLSAgICAKKwogICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBzZWUgaWYg
dGhpcyBjaGlsZCdzIGhlaWdodCBoYXMgY2hhbmdlZCwgc2luY2Ugd2UgbWFrZSBibG9jayBlbGVt
ZW50cwogICAgICAgICAgICAgLy8gZmlsbCB0aGUgaGVpZ2h0IG9mIGEgY29udGFpbmluZyBib3gg
YnkgZGVmYXVsdC4KICAgICAgICAgICAgIC8vIE5vdyBkbyBhIGxheW91dC4KQEAgLTQzMCwxOCAr
NDEzLDE4IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dEhvcml6b250YWxCb3goYm9v
bCByZWxheW91dENoaWxkcmVuKQogICAgICAgICAgICAgY2hpbGQtPmNvbXB1dGVMb2dpY2FsSGVp
Z2h0KCk7CiAgICAgICAgICAgICBpZiAob2xkQ2hpbGRIZWlnaHQgIT0gY2hpbGQtPmhlaWdodCgp
KQogICAgICAgICAgICAgICAgIGNoaWxkLT5zZXRDaGlsZE5lZWRzTGF5b3V0KHRydWUsIGZhbHNl
KTsKLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYgKCFjaGlsZC0+bmVlZHNMYXlv
dXQoKSkKICAgICAgICAgICAgICAgICBjaGlsZC0+bWFya0ZvclBhZ2luYXRpb25SZWxheW91dElm
TmVlZGVkKCk7CiAKICAgICAgICAgICAgIGNoaWxkLT5sYXlvdXRJZk5lZWRlZCgpOwotICAgIAor
CiAgICAgICAgICAgICAvLyBXZSBjYW4gcGxhY2UgdGhlIGNoaWxkIG5vdywgdXNpbmcgb3VyIHZh
bHVlIG9mIGJveC1hbGlnbi4KICAgICAgICAgICAgIHhQb3MgKz0gY2hpbGQtPm1hcmdpbkxlZnQo
KTsKICAgICAgICAgICAgIGludCBjaGlsZFkgPSB5UG9zOwogICAgICAgICAgICAgc3dpdGNoIChz
dHlsZSgpLT5ib3hBbGlnbigpKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBCQ0VOVEVSOgotICAg
ICAgICAgICAgICAgICAgICBjaGlsZFkgKz0gY2hpbGQtPm1hcmdpblRvcCgpICsgbWF4KDAsIChj
b250ZW50SGVpZ2h0KCkgLSAoY2hpbGQtPmhlaWdodCgpICsgY2hpbGQtPm1hcmdpblRvcCgpICsg
Y2hpbGQtPm1hcmdpbkJvdHRvbSgpKSkvMik7CisgICAgICAgICAgICAgICAgICAgIGNoaWxkWSAr
PSBjaGlsZC0+bWFyZ2luVG9wKCkgKyBtYXgoMCwgKGNvbnRlbnRIZWlnaHQoKSAtIChjaGlsZC0+
aGVpZ2h0KCkgKyBjaGlsZC0+bWFyZ2luVG9wKCkgKyBjaGlsZC0+bWFyZ2luQm90dG9tKCkpKSAv
IDIpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIEJC
QVNFTElORTogewogICAgICAgICAgICAgICAgICAgICBpbnQgYXNjZW50ID0gY2hpbGQtPmZpcnN0
TGluZUJveEJhc2VsaW5lKCk7CkBAIC00NjAsMTQgKzQ0MywxMiBAQCB2b2lkIFJlbmRlckZsZXhp
YmxlQm94OjpsYXlvdXRIb3Jpem9udGFsQm94KGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgcGxhY2VDaGlsZChjaGlsZCwgeFBvcywgY2hpbGRZKTsK
LSAgICAgICAgICAgIAorCiAgICAgICAgICAgICB4UG9zICs9IGNoaWxkLT53aWR0aCgpICsgY2hp
bGQtPm1hcmdpblJpZ2h0KCk7Ci0gICAgCi0gICAgICAgICAgICBjaGlsZCA9IGl0ZXJhdG9yLm5l
eHQoKTsKICAgICAgICAgfQogCiAgICAgICAgIHJlbWFpbmluZ1NwYWNlID0gYm9yZGVyTGVmdCgp
ICsgcGFkZGluZ0xlZnQoKSArIGNvbnRlbnRXaWR0aCgpIC0geFBvczsKLSAgICAgICAgCisKICAg
ICAgICAgbV9zdHJldGNoaW5nQ2hpbGRyZW4gPSBmYWxzZTsKICAgICAgICAgaWYgKG1fZmxleGlu
Z0NoaWxkcmVuKQogICAgICAgICAgICAgaGF2ZUZsZXggPSBmYWxzZTsgLy8gV2UncmUgZG9uZS4K
QEAgLTQ5MiwyNCArNDczLDIwIEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dEhvcml6
b250YWxCb3goYm9vbCByZWxheW91dENoaWxkcmVuKQogICAgICAgICAgICAgICAgICAgICAvLyBm
b3JjZXMgYSB0b3RhbEZsZXggcmVjb21wdXRhdGlvbikuCiAgICAgICAgICAgICAgICAgICAgIGlu
dCBncm91cFJlbWFpbmluZ1NwYWNlQXRCZWdpbm5pbmcgPSBncm91cFJlbWFpbmluZ1NwYWNlOwog
ICAgICAgICAgICAgICAgICAgICBmbG9hdCB0b3RhbEZsZXggPSAwLjBmOwotICAgICAgICAgICAg
ICAgICAgICBjaGlsZCA9IGl0ZXJhdG9yLmZpcnN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIHdo
aWxlIChjaGlsZCkgeworICAgICAgICAgICAgICAgICAgICBmb3IgKFJlbmRlckJveCogY2hpbGQg
PSBpdGVyYXRvci5maXJzdCgpOyBjaGlsZDsgY2hpbGQgPSBpdGVyYXRvci5uZXh0KCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChhbGxvd2VkQ2hpbGRGbGV4KGNoaWxkLCBleHBhbmRp
bmcsIGkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsRmxleCArPSBjaGlsZC0+
c3R5bGUoKS0+Ym94RmxleCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQgPSBpdGVy
YXRvci5uZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
Y2hpbGQgPSBpdGVyYXRvci5maXJzdCgpOwogICAgICAgICAgICAgICAgICAgICBpbnQgc3BhY2VB
dmFpbGFibGVUaGlzUGFzcyA9IGdyb3VwUmVtYWluaW5nU3BhY2U7Ci0gICAgICAgICAgICAgICAg
ICAgIHdoaWxlIChjaGlsZCkgeworICAgICAgICAgICAgICAgICAgICBmb3IgKFJlbmRlckJveCog
Y2hpbGQgPSBpdGVyYXRvci5maXJzdCgpOyBjaGlsZDsgY2hpbGQgPSBpdGVyYXRvci5uZXh0KCkp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbGxvd2VkRmxleCA9IGFsbG93ZWRDaGls
ZEZsZXgoY2hpbGQsIGV4cGFuZGluZywgaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
YWxsb3dlZEZsZXgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcHJvamVjdGVk
RmxleCA9IChhbGxvd2VkRmxleCA9PSBJTlRfTUFYKSA/IGFsbG93ZWRGbGV4IDogKGludCkoYWxs
b3dlZEZsZXggKiAodG90YWxGbGV4IC8gY2hpbGQtPnN0eWxlKCktPmJveEZsZXgoKSkpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNlQXZhaWxhYmxlVGhpc1Bhc3MgPSBleHBhbmRp
bmcgPyBtaW4oc3BhY2VBdmFpbGFibGVUaGlzUGFzcywgcHJvamVjdGVkRmxleCkgOiBtYXgoc3Bh
Y2VBdmFpbGFibGVUaGlzUGFzcywgcHJvamVjdGVkRmxleCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZCA9IGl0ZXJhdG9yLm5leHQoKTsK
ICAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgIC8vIFRoZSBmbGV4
IGdyb3VwcyBtYXkgbm90IGhhdmUgYW55IGZsZXhpYmxlIG9iamVjdHMgdGhpcyB0aW1lIGFyb3Vu
ZC4gCisgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBmbGV4IGdyb3VwcyBtYXkgbm90IGhhdmUg
YW55IGZsZXhpYmxlIG9iamVjdHMgdGhpcyB0aW1lIGFyb3VuZC4KICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFzcGFjZUF2YWlsYWJsZVRoaXNQYXNzIHx8IHRvdGFsRmxleCA9PSAwLjBmKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBqdXN0IGNvdWxkbid0IGdyb3cvc2hyaW5r
IGFueSBtb3JlLCB0aGVuIGl0J3MgdGltZSB0byB0cmFuc2l0aW9uIHRvIHRoZSBuZXh0IGZsZXgg
Z3JvdXAuCiAgICAgICAgICAgICAgICAgICAgICAgICBncm91cFJlbWFpbmluZ1NwYWNlID0gMDsK
QEAgLTUxNyw4ICs0OTQsNyBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRIb3Jpem9u
dGFsQm94KGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKICAgICAgICAgICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICAgICAgICAgIC8vIE5vdyBkaXN0cmlidXRlIHRoZSBzcGFjZSB0byBvYmplY3Rz
LgotICAgICAgICAgICAgICAgICAgICBjaGlsZCA9IGl0ZXJhdG9yLmZpcnN0KCk7Ci0gICAgICAg
ICAgICAgICAgICAgIHdoaWxlIChjaGlsZCAmJiBzcGFjZUF2YWlsYWJsZVRoaXNQYXNzICYmIHRv
dGFsRmxleCkgeworICAgICAgICAgICAgICAgICAgICBmb3IgKFJlbmRlckJveCogY2hpbGQgPSBp
dGVyYXRvci5maXJzdCgpOyBjaGlsZCAmJiBzcGFjZUF2YWlsYWJsZVRoaXNQYXNzICYmIHRvdGFs
RmxleDsgY2hpbGQgPSBpdGVyYXRvci5uZXh0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChhbGxvd2VkQ2hpbGRGbGV4KGNoaWxkLCBleHBhbmRpbmcsIGkpKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IHNwYWNlQWRkID0gKGludCkoc3BhY2VBdmFpbGFibGVUaGlz
UGFzcyAqIChjaGlsZC0+c3R5bGUoKS0+Ym94RmxleCgpL3RvdGFsRmxleCkpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChzcGFjZUFkZCkgewpAQCAtNTMwLDE2ICs1MDYsMTQgQEAg
dm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0SG9yaXpvbnRhbEJveChib29sIHJlbGF5b3V0
Q2hpbGRyZW4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2VBdmFpbGFibGVUaGlz
UGFzcyAtPSBzcGFjZUFkZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1haW5pbmdT
cGFjZSAtPSBzcGFjZUFkZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cFJlbWFp
bmluZ1NwYWNlIC09IHNwYWNlQWRkOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxGbGV4IC09IGNoaWxkLT5zdHlsZSgpLT5i
b3hGbGV4KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBjaGlsZCA9IGl0ZXJhdG9yLm5leHQoKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICBpZiAoZ3JvdXBSZW1haW5pbmdTcGFjZSA9PSBncm91cFJlbWFpbmlu
Z1NwYWNlQXRCZWdpbm5pbmcpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgaXMg
bm90IGFkdmFuY2luZywgYXZvaWQgZ2V0dGluZyBzdHVjayBieSBkaXN0cmlidXRpbmcgdGhlIHJl
bWFpbmluZyBwaXhlbHMKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkID0gaXRlcmF0b3Iu
Zmlyc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgbm90IGFkdmFuY2lu
ZywgYXZvaWQgZ2V0dGluZyBzdHVjayBieSBkaXN0cmlidXRpbmcgdGhlIHJlbWFpbmluZyBwaXhl
bHMuCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3BhY2VBZGQgPSBncm91cFJlbWFpbmlu
Z1NwYWNlID4gMCA/IDEgOiAtMTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChjaGls
ZCAmJiBncm91cFJlbWFpbmluZ1NwYWNlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3Ig
KFJlbmRlckJveCogY2hpbGQgPSBpdGVyYXRvci5maXJzdCgpOyBjaGlsZCAmJiBncm91cFJlbWFp
bmluZ1NwYWNlOyBjaGlsZCA9IGl0ZXJhdG9yLm5leHQoKSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChhbGxvd2VkQ2hpbGRGbGV4KGNoaWxkLCBleHBhbmRpbmcsIGkpKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkLT5zZXRPdmVycmlkZVNpemUoY2hp
bGQtPm92ZXJyaWRlV2lkdGgoKSArIHNwYWNlQWRkKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9mbGV4aW5nQ2hpbGRyZW4gPSB0cnVlOwpAQCAtNTQ3LDcgKzUyMSw2IEBAIHZv
aWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dEhvcml6b250YWxCb3goYm9vbCByZWxheW91dENo
aWxkcmVuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1haW5pbmdTcGFjZSAt
PSBzcGFjZUFkZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBSZW1haW5p
bmdTcGFjZSAtPSBzcGFjZUFkZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQgPSBpdGVyYXRvci5uZXh0KCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICB9IHdoaWxlIChncm91cFJlbWFpbmluZ1NwYWNlKTsKQEAgLTU3MCw1OSArNTQzLDQ3IEBAIHZv
aWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dEhvcml6b250YWxCb3goYm9vbCByZWxheW91dENo
aWxkcmVuKQogICAgICAgICBpZiAoc3R5bGUoKS0+Ym94UGFjaygpID09IEJKVVNUSUZZKSB7CiAg
ICAgICAgICAgICAvLyBEZXRlcm1pbmUgdGhlIHRvdGFsIG51bWJlciBvZiBjaGlsZHJlbi4KICAg
ICAgICAgICAgIGludCB0b3RhbENoaWxkcmVuID0gMDsKLSAgICAgICAgICAgIGNoaWxkID0gaXRl
cmF0b3IuZmlyc3QoKTsKLSAgICAgICAgICAgIHdoaWxlIChjaGlsZCkgewotICAgICAgICAgICAg
ICAgIGlmIChjaGlsZC0+aXNQb3NpdGlvbmVkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2hp
bGQgPSBpdGVyYXRvci5uZXh0KCk7CisgICAgICAgICAgICBmb3IgKFJlbmRlckJveCogY2hpbGQg
PSBpdGVyYXRvci5maXJzdCgpOyBjaGlsZDsgY2hpbGQgPSBpdGVyYXRvci5uZXh0KCkpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoY2hpbGQtPmlzUG9zaXRpb25lZCgpKQogICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdG90YWxD
aGlsZHJlbisrOwotICAgICAgICAgICAgICAgIGNoaWxkID0gaXRlcmF0b3IubmV4dCgpOworICAg
ICAgICAgICAgICAgICsrdG90YWxDaGlsZHJlbjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgLy8gSXRlcmF0ZSBvdmVyIHRoZSBjaGlsZHJlbiBhbmQgc3BhY2UgdGhlbSBvdXQgYWNjb3Jk
aW5nIHRvIHRoZQogICAgICAgICAgICAgLy8ganVzdGlmaWNhdGlvbiBsZXZlbC4KICAgICAgICAg
ICAgIGlmICh0b3RhbENoaWxkcmVuID4gMSkgewotICAgICAgICAgICAgICAgIHRvdGFsQ2hpbGRy
ZW4tLTsKKyAgICAgICAgICAgICAgICAtLXRvdGFsQ2hpbGRyZW47CiAgICAgICAgICAgICAgICAg
Ym9vbCBmaXJzdENoaWxkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBjaGlsZCA9IGl0ZXJhdG9y
LmZpcnN0KCk7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKGNoaWxkKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChjaGlsZC0+aXNQb3NpdGlvbmVkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNoaWxkID0gaXRlcmF0b3IubmV4dCgpOworICAgICAgICAgICAgICAgIGZvciAoUmVuZGVy
Qm94KiBjaGlsZCA9IGl0ZXJhdG9yLmZpcnN0KCk7IGNoaWxkOyBjaGlsZCA9IGl0ZXJhdG9yLm5l
eHQoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQtPmlzUG9zaXRpb25lZCgpKQog
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3RDaGlsZCkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgZmlyc3RDaGlsZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgY2hp
bGQgPSBpdGVyYXRvci5uZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBy
ZW1haW5pbmdTcGFjZS90b3RhbENoaWxkcmVuOwogICAgICAgICAgICAgICAgICAgICByZW1haW5p
bmdTcGFjZSAtPSAocmVtYWluaW5nU3BhY2UvdG90YWxDaGlsZHJlbik7Ci0gICAgICAgICAgICAg
ICAgICAgIHRvdGFsQ2hpbGRyZW4tLTsKKyAgICAgICAgICAgICAgICAgICAgLS10b3RhbENoaWxk
cmVuOwogCi0gICAgICAgICAgICAgICAgICAgIHBsYWNlQ2hpbGQoY2hpbGQsIGNoaWxkLT54KCkr
b2Zmc2V0LCBjaGlsZC0+eSgpKTsKLSAgICAgICAgICAgICAgICAgICAgY2hpbGQgPSBpdGVyYXRv
ci5uZXh0KCk7CisgICAgICAgICAgICAgICAgICAgIHBsYWNlQ2hpbGQoY2hpbGQsIGNoaWxkLT54
KCkgKyBvZmZzZXQsIGNoaWxkLT55KCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChzdHlsZSgpLT5ib3hQYWNrKCkg
PT0gQkNFTlRFUikKLSAgICAgICAgICAgICAgICBvZmZzZXQgKz0gcmVtYWluaW5nU3BhY2UvMjsK
KyAgICAgICAgICAgICAgICBvZmZzZXQgKz0gcmVtYWluaW5nU3BhY2UgLyAyOwogICAgICAgICAg
ICAgZWxzZSAvLyBFTkQgZm9yIExUUiwgU1RBUlQgZm9yIFJUTAogICAgICAgICAgICAgICAgIG9m
ZnNldCArPSByZW1haW5pbmdTcGFjZTsKLSAgICAgICAgICAgIGNoaWxkID0gaXRlcmF0b3IuZmly
c3QoKTsKLSAgICAgICAgICAgIHdoaWxlIChjaGlsZCkgewotICAgICAgICAgICAgICAgIGlmIChj
aGlsZC0+aXNQb3NpdGlvbmVkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2hpbGQgPSBpdGVy
YXRvci5uZXh0KCk7CisgICAgICAgICAgICBmb3IgKFJlbmRlckJveCogY2hpbGQgPSBpdGVyYXRv
ci5maXJzdCgpOyBjaGlsZDsgY2hpbGQgPSBpdGVyYXRvci5uZXh0KCkpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoY2hpbGQtPmlzUG9zaXRpb25lZCgpKQogICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcGxhY2VDaGlsZChjaGls
ZCwgY2hpbGQtPngoKStvZmZzZXQsIGNoaWxkLT55KCkpOwotICAgICAgICAgICAgICAgIGNoaWxk
ID0gaXRlcmF0b3IubmV4dCgpOworCisgICAgICAgICAgICAgICAgcGxhY2VDaGlsZChjaGlsZCwg
Y2hpbGQtPngoKSArIG9mZnNldCwgY2hpbGQtPnkoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9Ci0gICAgCisKICAgICAvLyBTbyB0aGF0IHRoZSBjb21wdXRlTG9naWNhbEhlaWdo
dCBpbiBsYXlvdXRCbG9jaygpIGtub3dzIHRvIHJlbGF5b3V0IHBvc2l0aW9uZWQgb2JqZWN0cyBi
ZWNhdXNlIG9mCiAgICAgLy8gYSBoZWlnaHQgY2hhbmdlLCB3ZSByZXZlcnQgb3VyIGhlaWdodCBi
YWNrIHRvIHRoZSBpbnRyaW5zaWMgaGVpZ2h0IGJlZm9yZSByZXR1cm5pbmcuCiAgICAgaWYgKGhl
aWdodFNwZWNpZmllZCkKQEAgLTY0NCw4ICs2MDUsNiBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94
OjpsYXlvdXRWZXJ0aWNhbEJveChib29sIHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAgYm9vbCBoYXZl
RmxleCA9IGZhbHNlOwogICAgIGdhdGhlckZsZXhDaGlsZHJlbkluZm8oaXRlcmF0b3IsIHJlbGF5
b3V0Q2hpbGRyZW4sIGhpZ2hlc3RGbGV4R3JvdXAsIGxvd2VzdEZsZXhHcm91cCwgaGF2ZUZsZXgp
OwogCi0gICAgUmVuZGVyQm94KiBjaGlsZDsKLQogICAgIC8vIFdlIGNvbmZpbmUgdGhlIGxpbmUg
Y2xhbXAgdWdsaW5lc3MgdG8gdmVydGljYWwgZmxleGlibGUgYm94ZXMgKHRodXMga2VlcGluZyBp
dCBvdXQgb2YKICAgICAvLyBtYWluc3RyZWFtIGJsb2NrIGxheW91dCk7IHRoaXMgaXMgbm90IHJl
YWxseSBwYXJ0IG9mIHRoZSBYVUwgYm94IG1vZGVsLgogICAgIGJvb2wgaGF2ZUxpbmVDbGFtcCA9
ICFzdHlsZSgpLT5saW5lQ2xhbXAoKS5pc05vbmUoKTsKQEAgLTY2MiwxMiArNjIxLDExIEBAIHZv
aWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dFZlcnRpY2FsQm94KGJvb2wgcmVsYXlvdXRDaGls
ZHJlbikKICAgICAgICAgc2V0SGVpZ2h0KGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpKTsKICAg
ICAgICAgaW50IG1pbkhlaWdodCA9IGhlaWdodCgpICsgdG9BZGQ7CiAKLSAgICAgICAgY2hpbGQg
PSBpdGVyYXRvci5maXJzdCgpOwotICAgICAgICB3aGlsZSAoY2hpbGQpIHsKLSAgICAgICAgICAg
IC8vIG1ha2Ugc3VyZSB3ZSByZWxheW91dCBjaGlsZHJlbiBpZiB3ZSBuZWVkIGl0LgorICAgICAg
ICBmb3IgKFJlbmRlckJveCogY2hpbGQgPSBpdGVyYXRvci5maXJzdCgpOyBjaGlsZDsgY2hpbGQg
PSBpdGVyYXRvci5uZXh0KCkpIHsKKyAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSByZWxheW91
dCBjaGlsZHJlbiBpZiB3ZSBuZWVkIGl0LgogICAgICAgICAgICAgaWYgKCFoYXZlTGluZUNsYW1w
ICYmIChyZWxheW91dENoaWxkcmVuIHx8IChjaGlsZC0+aXNSZXBsYWNlZCgpICYmIChjaGlsZC0+
c3R5bGUoKS0+d2lkdGgoKS5pc1BlcmNlbnQoKSB8fCBjaGlsZC0+c3R5bGUoKS0+aGVpZ2h0KCku
aXNQZXJjZW50KCkpKSkpCiAgICAgICAgICAgICAgICAgY2hpbGQtPnNldENoaWxkTmVlZHNMYXlv
dXQodHJ1ZSwgZmFsc2UpOwotICAgIAorCiAgICAgICAgICAgICBpZiAoY2hpbGQtPmlzUG9zaXRp
b25lZCgpKSB7CiAgICAgICAgICAgICAgICAgY2hpbGQtPmNvbnRhaW5pbmdCbG9jaygpLT5pbnNl
cnRQb3NpdGlvbmVkT2JqZWN0KGNoaWxkKTsKICAgICAgICAgICAgICAgICBSZW5kZXJMYXllciog
Y2hpbGRMYXllciA9IGNoaWxkLT5sYXllcigpOwpAQCAtNjc3LDI4ICs2MzUsMjcgQEAgdm9pZCBS
ZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0VmVydGljYWxCb3goYm9vbCByZWxheW91dENoaWxkcmVu
KQogICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQtPnN0eWxlKCktPmhhc1N0YXRpY0Jsb2Nr
UG9zaXRpb24oc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBjaGlsZC0+c2V0Q2hpbGROZWVkc0xheW91dCh0cnVlLCBmYWxzZSk7CiAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGNoaWxkID0gaXRlcmF0b3IubmV4dCgp
OwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfSAKLSAgICAKKyAgICAg
ICAgICAgIH0KKwogICAgICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgY2hpbGQncyB2ZXJ0aWNhbCBt
YXJnaW5zLgogICAgICAgICAgICAgY2hpbGQtPmNvbXB1dGVCbG9ja0RpcmVjdGlvbk1hcmdpbnMo
dGhpcyk7Ci0gICAgCisKICAgICAgICAgICAgIC8vIEFkZCBpbiB0aGUgY2hpbGQncyBtYXJnaW5U
b3AgdG8gb3VyIGhlaWdodC4KICAgICAgICAgICAgIHNldEhlaWdodChoZWlnaHQoKSArIGNoaWxk
LT5tYXJnaW5Ub3AoKSk7Ci0gICAgCisKICAgICAgICAgICAgIGlmICghY2hpbGQtPm5lZWRzTGF5
b3V0KCkpCiAgICAgICAgICAgICAgICAgY2hpbGQtPm1hcmtGb3JQYWdpbmF0aW9uUmVsYXlvdXRJ
Zk5lZWRlZCgpOwogCiAgICAgICAgICAgICAvLyBOb3cgZG8gYSBsYXlvdXQuCiAgICAgICAgICAg
ICBjaGlsZC0+bGF5b3V0SWZOZWVkZWQoKTsKLSAgICAKKwogICAgICAgICAgICAgLy8gV2UgY2Fu
IHBsYWNlIHRoZSBjaGlsZCBub3csIHVzaW5nIG91ciB2YWx1ZSBvZiBib3gtYWxpZ24uCiAgICAg
ICAgICAgICBpbnQgY2hpbGRYID0gYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKTsKICAgICAg
ICAgICAgIHN3aXRjaCAoc3R5bGUoKS0+Ym94QWxpZ24oKSkgewogICAgICAgICAgICAgICAgIGNh
c2UgQkNFTlRFUjoKICAgICAgICAgICAgICAgICBjYXNlIEJCQVNFTElORTogLy8gQmFzZWxpbmUg
anVzdCBtYXBzIHRvIGNlbnRlciBmb3IgdmVydGljYWwgYm94ZXMKLSAgICAgICAgICAgICAgICAg
ICAgY2hpbGRYICs9IGNoaWxkLT5tYXJnaW5MZWZ0KCkgKyBtYXgoMCwgKGNvbnRlbnRXaWR0aCgp
IC0gKGNoaWxkLT53aWR0aCgpICsgY2hpbGQtPm1hcmdpbkxlZnQoKSArIGNoaWxkLT5tYXJnaW5S
aWdodCgpKSkvMik7CisgICAgICAgICAgICAgICAgICAgIGNoaWxkWCArPSBjaGlsZC0+bWFyZ2lu
TGVmdCgpICsgbWF4KDAsIChjb250ZW50V2lkdGgoKSAtIChjaGlsZC0+d2lkdGgoKSArIGNoaWxk
LT5tYXJnaW5MZWZ0KCkgKyBjaGlsZC0+bWFyZ2luUmlnaHQoKSkpIC8gMik7CiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgQkVORDoKICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCkBAIC03MTMs
MTkgKzY3MCwxNyBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRWZXJ0aWNhbEJveChi
b29sIHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZFggKz0g
Y29udGVudFdpZHRoKCkgLSBjaGlsZC0+bWFyZ2luUmlnaHQoKSAtIGNoaWxkLT53aWR0aCgpOwog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAKKwogICAgICAg
ICAgICAgLy8gUGxhY2UgdGhlIGNoaWxkLgogICAgICAgICAgICAgcGxhY2VDaGlsZChjaGlsZCwg
Y2hpbGRYLCBoZWlnaHQoKSk7CiAgICAgICAgICAgICBzZXRIZWlnaHQoaGVpZ2h0KCkgKyBjaGls
ZC0+aGVpZ2h0KCkgKyBjaGlsZC0+bWFyZ2luQm90dG9tKCkpOwotCi0gICAgICAgICAgICBjaGls
ZCA9IGl0ZXJhdG9yLm5leHQoKTsKICAgICAgICAgfQogCiAgICAgICAgIHlQb3MgPSBoZWlnaHQo
KTsKLSAgICAgICAgCisKICAgICAgICAgaWYgKCFpdGVyYXRvci5maXJzdCgpICYmIGhhc0xpbmVJ
ZkVtcHR5KCkpCiAgICAgICAgICAgICBzZXRIZWlnaHQoaGVpZ2h0KCkgKyBsaW5lSGVpZ2h0KHRy
dWUsIHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6
IFZlcnRpY2FsTGluZSwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKSk7Ci0gICAgCisKICAg
ICAgICAgc2V0SGVpZ2h0KGhlaWdodCgpICsgdG9BZGQpOwogCiAgICAgICAgIC8vIE5lZ2F0aXZl
IG1hcmdpbnMgY2FuIGNhdXNlIG91ciBoZWlnaHQgdG8gc2hyaW5rIGJlbG93IG91ciBtaW5pbWFs
IGhlaWdodCAoYm9yZGVyL3BhZGRpbmcpLgpAQCAtNzQwLDcgKzY5NSw3IEBAIHZvaWQgUmVuZGVy
RmxleGlibGVCb3g6OmxheW91dFZlcnRpY2FsQm94KGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKICAg
ICAgICAgICAgIGhlaWdodFNwZWNpZmllZCA9IHRydWU7CiAKICAgICAgICAgcmVtYWluaW5nU3Bh
Y2UgPSBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSArIGNvbnRlbnRIZWlnaHQoKSAtIHlQb3M7
Ci0gICAgICAgIAorCiAgICAgICAgIGlmIChtX2ZsZXhpbmdDaGlsZHJlbikKICAgICAgICAgICAg
IGhhdmVGbGV4ID0gZmFsc2U7IC8vIFdlJ3JlIGRvbmUuCiAgICAgICAgIGVsc2UgaWYgKGhhdmVG
bGV4KSB7CkBAIC03NjQsMzMgKzcxOSwyOCBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlv
dXRWZXJ0aWNhbEJveChib29sIHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAgICAgICAgICAgICAgICAg
IC8vIGZvcmNlcyBhIHRvdGFsRmxleCByZWNvbXB1dGF0aW9uKS4KICAgICAgICAgICAgICAgICAg
ICAgaW50IGdyb3VwUmVtYWluaW5nU3BhY2VBdEJlZ2lubmluZyA9IGdyb3VwUmVtYWluaW5nU3Bh
Y2U7CiAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHRvdGFsRmxleCA9IDAuMGY7Ci0gICAgICAg
ICAgICAgICAgICAgIGNoaWxkID0gaXRlcmF0b3IuZmlyc3QoKTsKLSAgICAgICAgICAgICAgICAg
ICAgd2hpbGUgKGNoaWxkKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoUmVuZGVyQm94KiBj
aGlsZCA9IGl0ZXJhdG9yLmZpcnN0KCk7IGNoaWxkOyBjaGlsZCA9IGl0ZXJhdG9yLm5leHQoKSkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFsbG93ZWRDaGlsZEZsZXgoY2hpbGQsIGV4
cGFuZGluZywgaSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxGbGV4ICs9IGNo
aWxkLT5zdHlsZSgpLT5ib3hGbGV4KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZCA9
IGl0ZXJhdG9yLm5leHQoKTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICBjaGlsZCA9IGl0ZXJhdG9yLmZpcnN0KCk7CiAgICAgICAgICAgICAgICAgICAgIGludCBz
cGFjZUF2YWlsYWJsZVRoaXNQYXNzID0gZ3JvdXBSZW1haW5pbmdTcGFjZTsKLSAgICAgICAgICAg
ICAgICAgICAgd2hpbGUgKGNoaWxkKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoUmVuZGVy
Qm94KiBjaGlsZCA9IGl0ZXJhdG9yLmZpcnN0KCk7IGNoaWxkOyBjaGlsZCA9IGl0ZXJhdG9yLm5l
eHQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFsbG93ZWRGbGV4ID0gYWxsb3dl
ZENoaWxkRmxleChjaGlsZCwgZXhwYW5kaW5nLCBpKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChhbGxvd2VkRmxleCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwcm9q
ZWN0ZWRGbGV4ID0gKGFsbG93ZWRGbGV4ID09IElOVF9NQVgpID8gYWxsb3dlZEZsZXggOiAoaW50
KShhbGxvd2VkRmxleCAqICh0b3RhbEZsZXggLyBjaGlsZC0+c3R5bGUoKS0+Ym94RmxleCgpKSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2VBdmFpbGFibGVUaGlzUGFzcyA9IGV4
cGFuZGluZyA/IG1pbihzcGFjZUF2YWlsYWJsZVRoaXNQYXNzLCBwcm9qZWN0ZWRGbGV4KSA6IG1h
eChzcGFjZUF2YWlsYWJsZVRoaXNQYXNzLCBwcm9qZWN0ZWRGbGV4KTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkID0gaXRlcmF0b3IubmV4
dCgpOwogICAgICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgLy8gVGhl
IGZsZXggZ3JvdXBzIG1heSBub3QgaGF2ZSBhbnkgZmxleGlibGUgb2JqZWN0cyB0aGlzIHRpbWUg
YXJvdW5kLiAKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGZsZXggZ3JvdXBzIG1heSBub3Qg
aGF2ZSBhbnkgZmxleGlibGUgb2JqZWN0cyB0aGlzIHRpbWUgYXJvdW5kLgogICAgICAgICAgICAg
ICAgICAgICBpZiAoIXNwYWNlQXZhaWxhYmxlVGhpc1Bhc3MgfHwgdG90YWxGbGV4ID09IDAuMGYp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIGp1c3QgY291bGRuJ3QgZ3Jvdy9z
aHJpbmsgYW55IG1vcmUsIHRoZW4gaXQncyB0aW1lIHRvIHRyYW5zaXRpb24gdG8gdGhlIG5leHQg
ZmxleCBncm91cC4KICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwUmVtYWluaW5nU3BhY2Ug
PSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICAgICAgICAgIC8vIE5vdyBkaXN0cmli
dXRlIHRoZSBzcGFjZSB0byBvYmplY3RzLgotICAgICAgICAgICAgICAgICAgICBjaGlsZCA9IGl0
ZXJhdG9yLmZpcnN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlIChjaGlsZCAmJiBzcGFj
ZUF2YWlsYWJsZVRoaXNQYXNzICYmIHRvdGFsRmxleCkgeworICAgICAgICAgICAgICAgICAgICBm
b3IgKFJlbmRlckJveCogY2hpbGQgPSBpdGVyYXRvci5maXJzdCgpOyBjaGlsZCAmJiBzcGFjZUF2
YWlsYWJsZVRoaXNQYXNzICYmIHRvdGFsRmxleDsgY2hpbGQgPSBpdGVyYXRvci5uZXh0KCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhbGxvd2VkQ2hpbGRGbGV4KGNoaWxkLCBleHBh
bmRpbmcsIGkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNwYWNlQWRkID0g
KGludCkoc3BhY2VBdmFpbGFibGVUaGlzUGFzcyAqIChjaGlsZC0+c3R5bGUoKS0+Ym94RmxleCgp
L3RvdGFsRmxleCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzcGFjZUFkZCkg
ewpAQCAtODAyLDE2ICs3NTIsMTQgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0VmVy
dGljYWxCb3goYm9vbCByZWxheW91dENoaWxkcmVuKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNwYWNlQXZhaWxhYmxlVGhpc1Bhc3MgLT0gc3BhY2VBZGQ7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVtYWluaW5nU3BhY2UgLT0gc3BhY2VBZGQ7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ3JvdXBSZW1haW5pbmdTcGFjZSAtPSBzcGFjZUFkZDsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsRmxl
eCAtPSBjaGlsZC0+c3R5bGUoKS0+Ym94RmxleCgpOwogICAgICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQgPSBpdGVyYXRvci5uZXh0KCk7CiAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaWYgKGdyb3VwUmVtYWluaW5n
U3BhY2UgPT0gZ3JvdXBSZW1haW5pbmdTcGFjZUF0QmVnaW5uaW5nKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAvLyB0aGlzIGlzIG5vdCBhZHZhbmNpbmcsIGF2b2lkIGdldHRpbmcgc3R1Y2sg
YnkgZGlzdHJpYnV0aW5nIHRoZSByZW1haW5pbmcgcGl4ZWxzCi0gICAgICAgICAgICAgICAgICAg
ICAgICBjaGlsZCA9IGl0ZXJhdG9yLmZpcnN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAv
LyBUaGlzIGlzIG5vdCBhZHZhbmNpbmcsIGF2b2lkIGdldHRpbmcgc3R1Y2sgYnkgZGlzdHJpYnV0
aW5nIHRoZSByZW1haW5pbmcgcGl4ZWxzLgogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNw
YWNlQWRkID0gZ3JvdXBSZW1haW5pbmdTcGFjZSA+IDAgPyAxIDogLTE7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB3aGlsZSAoY2hpbGQgJiYgZ3JvdXBSZW1haW5pbmdTcGFjZSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0gaXRlcmF0b3IuZmlyc3Qo
KTsgY2hpbGQgJiYgZ3JvdXBSZW1haW5pbmdTcGFjZTsgY2hpbGQgPSBpdGVyYXRvci5uZXh0KCkp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWxsb3dlZENoaWxkRmxleChjaGls
ZCwgZXhwYW5kaW5nLCBpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGls
ZC0+c2V0T3ZlcnJpZGVTaXplKGNoaWxkLT5vdmVycmlkZUhlaWdodCgpICsgc3BhY2VBZGQpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2ZsZXhpbmdDaGlsZHJlbiA9IHRydWU7
CkBAIC04MTksNyArNzY3LDYgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0VmVydGlj
YWxCb3goYm9vbCByZWxheW91dENoaWxkcmVuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZW1haW5pbmdTcGFjZSAtPSBzcGFjZUFkZDsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ3JvdXBSZW1haW5pbmdTcGFjZSAtPSBzcGFjZUFkZDsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQgPSBpdGVy
YXRvci5uZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICB9IHdoaWxlIChncm91cFJlbWFpbmluZ1NwYWNlKTsKQEAg
LTgyOCw3ICs3NzUsNyBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRWZXJ0aWNhbEJv
eChib29sIHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAgICAgICAgICAvLyBXZSBkaWRuJ3QgZmluZCBh
bnkgY2hpbGRyZW4gdGhhdCBjb3VsZCBncm93LgogICAgICAgICAgICAgaWYgKGhhdmVGbGV4ICYm
ICFtX2ZsZXhpbmdDaGlsZHJlbikKICAgICAgICAgICAgICAgICBoYXZlRmxleCA9IGZhbHNlOwot
ICAgICAgICB9ICAgICAgICAKKyAgICAgICAgfQogICAgIH0gd2hpbGUgKGhhdmVGbGV4KTsKIAog
ICAgIFJlbmRlckJsb2NrOjpmaW5pc2hEZWxheVVwZGF0ZVNjcm9sbEluZm8oKTsKQEAgLTgzOSw1
NCArNzg2LDQyIEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dFZlcnRpY2FsQm94KGJv
b2wgcmVsYXlvdXRDaGlsZHJlbikKICAgICAgICAgaWYgKHN0eWxlKCktPmJveFBhY2soKSA9PSBC
SlVTVElGWSkgewogICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIHRoZSB0b3RhbCBudW1iZXIgb2Yg
Y2hpbGRyZW4uCiAgICAgICAgICAgICBpbnQgdG90YWxDaGlsZHJlbiA9IDA7Ci0gICAgICAgICAg
ICBjaGlsZCA9IGl0ZXJhdG9yLmZpcnN0KCk7Ci0gICAgICAgICAgICB3aGlsZSAoY2hpbGQpIHsK
LSAgICAgICAgICAgICAgICBpZiAoY2hpbGQtPmlzUG9zaXRpb25lZCgpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGNoaWxkID0gaXRlcmF0b3IubmV4dCgpOworICAgICAgICAgICAgZm9yIChSZW5k
ZXJCb3gqIGNoaWxkID0gaXRlcmF0b3IuZmlyc3QoKTsgY2hpbGQ7IGNoaWxkID0gaXRlcmF0b3Iu
bmV4dCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGNoaWxkLT5pc1Bvc2l0aW9uZWQoKSkKICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIHRvdGFsQ2hpbGRyZW4rKzsKLSAgICAgICAgICAgICAgICBjaGlsZCA9IGl0ZXJhdG9y
Lm5leHQoKTsKKworICAgICAgICAgICAgICAgICsrdG90YWxDaGlsZHJlbjsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICAvLyBJdGVyYXRlIG92ZXIgdGhlIGNoaWxk
cmVuIGFuZCBzcGFjZSB0aGVtIG91dCBhY2NvcmRpbmcgdG8gdGhlCiAgICAgICAgICAgICAvLyBq
dXN0aWZpY2F0aW9uIGxldmVsLgogICAgICAgICAgICAgaWYgKHRvdGFsQ2hpbGRyZW4gPiAxKSB7
Ci0gICAgICAgICAgICAgICAgdG90YWxDaGlsZHJlbi0tOworICAgICAgICAgICAgICAgIC0tdG90
YWxDaGlsZHJlbjsKICAgICAgICAgICAgICAgICBib29sIGZpcnN0Q2hpbGQgPSB0cnVlOwotICAg
ICAgICAgICAgICAgIGNoaWxkID0gaXRlcmF0b3IuZmlyc3QoKTsKLSAgICAgICAgICAgICAgICB3
aGlsZSAoY2hpbGQpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkLT5pc1Bvc2l0aW9u
ZWQoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQgPSBpdGVyYXRvci5uZXh0KCk7
CisgICAgICAgICAgICAgICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0gaXRlcmF0b3IuZmlyc3Qo
KTsgY2hpbGQ7IGNoaWxkID0gaXRlcmF0b3IubmV4dCgpKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChjaGlsZC0+aXNQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAKKwogICAg
ICAgICAgICAgICAgICAgICBpZiAoZmlyc3RDaGlsZCkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgZmlyc3RDaGlsZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQgPSBp
dGVyYXRvci5uZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSByZW1haW5p
bmdTcGFjZS90b3RhbENoaWxkcmVuOwogICAgICAgICAgICAgICAgICAgICByZW1haW5pbmdTcGFj
ZSAtPSAocmVtYWluaW5nU3BhY2UvdG90YWxDaGlsZHJlbik7Ci0gICAgICAgICAgICAgICAgICAg
IHRvdGFsQ2hpbGRyZW4tLTsKLSAgICAgICAgICAgICAgICAgICAgcGxhY2VDaGlsZChjaGlsZCwg
Y2hpbGQtPngoKSwgY2hpbGQtPnkoKStvZmZzZXQpOwotICAgICAgICAgICAgICAgICAgICBjaGls
ZCA9IGl0ZXJhdG9yLm5leHQoKTsKKyAgICAgICAgICAgICAgICAgICAgLS10b3RhbENoaWxkcmVu
OworICAgICAgICAgICAgICAgICAgICBwbGFjZUNoaWxkKGNoaWxkLCBjaGlsZC0+eCgpLCBjaGls
ZC0+eSgpICsgb2Zmc2V0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoc3R5bGUoKS0+Ym94UGFjaygpID09IEJDRU5U
RVIpCi0gICAgICAgICAgICAgICAgb2Zmc2V0ICs9IHJlbWFpbmluZ1NwYWNlLzI7CisgICAgICAg
ICAgICAgICAgb2Zmc2V0ICs9IHJlbWFpbmluZ1NwYWNlIC8gMjsKICAgICAgICAgICAgIGVsc2Ug
Ly8gRU5ECiAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IHJlbWFpbmluZ1NwYWNlOwotICAgICAg
ICAgICAgY2hpbGQgPSBpdGVyYXRvci5maXJzdCgpOwotICAgICAgICAgICAgd2hpbGUgKGNoaWxk
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNoaWxkLT5pc1Bvc2l0aW9uZWQoKSkgewotICAgICAg
ICAgICAgICAgICAgICBjaGlsZCA9IGl0ZXJhdG9yLm5leHQoKTsKKyAgICAgICAgICAgIGZvciAo
UmVuZGVyQm94KiBjaGlsZCA9IGl0ZXJhdG9yLmZpcnN0KCk7IGNoaWxkOyBjaGlsZCA9IGl0ZXJh
dG9yLm5leHQoKSkgeworICAgICAgICAgICAgICAgIGlmIChjaGlsZC0+aXNQb3NpdGlvbmVkKCkp
CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBwbGFjZUNoaWxkKGNoaWxkLCBjaGlsZC0+eCgpLCBjaGlsZC0+eSgpK29mZnNl
dCk7Ci0gICAgICAgICAgICAgICAgY2hpbGQgPSBpdGVyYXRvci5uZXh0KCk7CisgICAgICAgICAg
ICAgICAgcGxhY2VDaGlsZChjaGlsZCwgY2hpbGQtPngoKSwgY2hpbGQtPnkoKSArIG9mZnNldCk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC04OTQsNyArODI5LDcgQEAgdm9p
ZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0VmVydGljYWxCb3goYm9vbCByZWxheW91dENoaWxk
cmVuKQogICAgIC8vIFNvIHRoYXQgdGhlIGNvbXB1dGVMb2dpY2FsSGVpZ2h0IGluIGxheW91dEJs
b2NrKCkga25vd3MgdG8gcmVsYXlvdXQgcG9zaXRpb25lZCBvYmplY3RzIGJlY2F1c2Ugb2YKICAg
ICAvLyBhIGhlaWdodCBjaGFuZ2UsIHdlIHJldmVydCBvdXIgaGVpZ2h0IGJhY2sgdG8gdGhlIGlu
dHJpbnNpYyBoZWlnaHQgYmVmb3JlIHJldHVybmluZy4KICAgICBpZiAoaGVpZ2h0U3BlY2lmaWVk
KQotICAgICAgICBzZXRIZWlnaHQob2xkSGVpZ2h0KTsgCisgICAgICAgIHNldEhlaWdodChvbGRI
ZWlnaHQpOwogfQogCiB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjphcHBseUxpbmVDbGFtcChGbGV4
Qm94SXRlcmF0b3ImIGl0ZXJhdG9yLCBib29sIHJlbGF5b3V0Q2hpbGRyZW4pCkBAIC05MjksMTYg
Kzg2NCwxNiBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjphcHBseUxpbmVDbGFtcChGbGV4Qm94
SXRlcmF0b3ImIGl0ZXJhdG9yLCBib29sIHJlbGF5b3V0QwogICAgIGZvciAoUmVuZGVyQm94KiBj
aGlsZCA9IGl0ZXJhdG9yLmZpcnN0KCk7IGNoaWxkOyBjaGlsZCA9IGl0ZXJhdG9yLm5leHQoKSkg
ewogICAgICAgICBpZiAoY2hpbGQtPmlzUG9zaXRpb25lZCgpIHx8ICFjaGlsZC0+c3R5bGUoKS0+
aGVpZ2h0KCkuaXNBdXRvKCkgfHwgIWNoaWxkLT5pc0Jsb2NrRmxvdygpKQogICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIAorCiAgICAgICAgIFJlbmRlckJsb2NrKiBibG9ja0NoaWxkID0g
dG9SZW5kZXJCbG9jayhjaGlsZCk7CiAgICAgICAgIGludCBsaW5lQ291bnQgPSBibG9ja0NoaWxk
LT5saW5lQ291bnQoKTsKICAgICAgICAgaWYgKGxpbmVDb3VudCA8PSBudW1WaXNpYmxlTGluZXMp
CiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCisKICAgICAgICAgaW50IG5ld0hlaWdo
dCA9IGJsb2NrQ2hpbGQtPmhlaWdodEZvckxpbmVDb3VudChudW1WaXNpYmxlTGluZXMpOwogICAg
ICAgICBpZiAobmV3SGVpZ2h0ID09IGNoaWxkLT5oZWlnaHQoKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAKKwogICAgICAgICBjaGlsZC0+c2V0Q2hpbGROZWVkc0xheW91dCh0cnVl
LCBmYWxzZSk7CiAgICAgICAgIGNoaWxkLT5zZXRPdmVycmlkZVNpemUobmV3SGVpZ2h0KTsKICAg
ICAgICAgbV9mbGV4aW5nQ2hpbGRyZW4gPSB0cnVlOwpAQCAtOTUxLDExICs4ODYsMTEgQEAgdm9p
ZCBSZW5kZXJGbGV4aWJsZUJveDo6YXBwbHlMaW5lQ2xhbXAoRmxleEJveEl0ZXJhdG9yJiBpdGVy
YXRvciwgYm9vbCByZWxheW91dEMKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIC8v
IEdldCB0aGUgbGFzdCBsaW5lCi0gICAgICAgIFJvb3RJbmxpbmVCb3gqIGxhc3RMaW5lID0gYmxv
Y2tDaGlsZC0+bGluZUF0SW5kZXgobGluZUNvdW50LTEpOworICAgICAgICBSb290SW5saW5lQm94
KiBsYXN0TGluZSA9IGJsb2NrQ2hpbGQtPmxpbmVBdEluZGV4KGxpbmVDb3VudCAtIDEpOwogICAg
ICAgICBpZiAoIWxhc3RMaW5lKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgUm9v
dElubGluZUJveCogbGFzdFZpc2libGVMaW5lID0gYmxvY2tDaGlsZC0+bGluZUF0SW5kZXgobnVt
VmlzaWJsZUxpbmVzLTEpOworICAgICAgICBSb290SW5saW5lQm94KiBsYXN0VmlzaWJsZUxpbmUg
PSBibG9ja0NoaWxkLT5saW5lQXRJbmRleChudW1WaXNpYmxlTGluZXMgLSAxKTsKICAgICAgICAg
aWYgKCFsYXN0VmlzaWJsZUxpbmUpCiAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtOTY0LDcg
Kzg5OSw3IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmFwcGx5TGluZUNsYW1wKEZsZXhCb3hJ
dGVyYXRvciYgaXRlcmF0b3IsIGJvb2wgcmVsYXlvdXRDCiAgICAgICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCBlbGxpcHNpc1N0ciwgKCZob3Jpem9udGFsRWxsaXBzaXMsIDEp
KTsKICAgICAgICAgY29uc3QgRm9udCYgZm9udCA9IHN0eWxlKG51bVZpc2libGVMaW5lcyA9PSAx
KS0+Zm9udCgpOwogCi0gICAgICAgIC8vIEdldCBlbGxpcHNpcyB3aWR0aCwgYW5kIGlmIHRoZSBs
YXN0IGNoaWxkIGlzIGFuIGFuY2hvciwgaXQgd2lsbCBnbyBhZnRlciB0aGUgZWxsaXBzaXMsIHNv
IGFkZCBpbiBhIHNwYWNlIGFuZCB0aGUgYW5jaG9yIHdpZHRoIHRvbyAKKyAgICAgICAgLy8gR2V0
IGVsbGlwc2lzIHdpZHRoLCBhbmQgaWYgdGhlIGxhc3QgY2hpbGQgaXMgYW4gYW5jaG9yLCBpdCB3
aWxsIGdvIGFmdGVyIHRoZSBlbGxpcHNpcywgc28gYWRkIGluIGEgc3BhY2UgYW5kIHRoZSBhbmNo
b3Igd2lkdGggdG9vCiAgICAgICAgIGludCB0b3RhbFdpZHRoOwogICAgICAgICBJbmxpbmVCb3gq
IGFuY2hvckJveCA9IGxhc3RMaW5lLT5sYXN0Q2hpbGQoKTsKICAgICAgICAgaWYgKGFuY2hvckJv
eCAmJiBhbmNob3JCb3gtPnJlbmRlcmVyKCktPnN0eWxlKCktPmlzTGluaygpKQpAQCAtOTc3LDcg
KzkxMiw3IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmFwcGx5TGluZUNsYW1wKEZsZXhCb3hJ
dGVyYXRvciYgaXRlcmF0b3IsIGJvb2wgcmVsYXlvdXRDCiAgICAgICAgIC8vIFNlZSBpZiB0aGlz
IHdpZHRoIGNhbiBiZSBhY2NvbW1vZGF0ZWQgb24gdGhlIGxhc3QgdmlzaWJsZSBsaW5lCiAgICAg
ICAgIFJlbmRlckJsb2NrKiBkZXN0QmxvY2sgPSB0b1JlbmRlckJsb2NrKGxhc3RWaXNpYmxlTGlu
ZS0+cmVuZGVyZXIoKSk7CiAgICAgICAgIFJlbmRlckJsb2NrKiBzcmNCbG9jayA9IHRvUmVuZGVy
QmxvY2sobGFzdExpbmUtPnJlbmRlcmVyKCkpOwotICAgICAgICAKKwogICAgICAgICAvLyBGSVhN
RTogRGlyZWN0aW9ucyBvZiBzcmMvZGVzdEJsb2NrIGNvdWxkIGJlIGRpZmZlcmVudCBmcm9tIG91
ciBkaXJlY3Rpb24gYW5kIGZyb20gb25lIGFub3RoZXIuCiAgICAgICAgIGlmICghc3JjQmxvY2st
PnN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwpAQCAtMTAxNyw1NyArOTUyLDU1IEBAIGludCBSZW5kZXJGbGV4aWJsZUJveDo6YWxsb3dlZENo
aWxkRmxleChSZW5kZXJCb3gqIGNoaWxkLCBib29sIGV4cGFuZGluZywgdW5zaWduCiB7CiAgICAg
aWYgKGNoaWxkLT5pc1Bvc2l0aW9uZWQoKSB8fCBjaGlsZC0+c3R5bGUoKS0+Ym94RmxleCgpID09
IDAuMGYgfHwgY2hpbGQtPnN0eWxlKCktPmJveEZsZXhHcm91cCgpICE9IGdyb3VwKQogICAgICAg
ICByZXR1cm4gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIAorCiAgICAgaWYgKGV4cGFuZGlu
ZykgewogICAgICAgICBpZiAoaXNIb3Jpem9udGFsKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1F
OiBGb3Igbm93IGp1c3QgaGFuZGxlIGZpeGVkIHZhbHVlcy4KLSAgICAgICAgICAgIGludCBtYXhX
ID0gSU5UX01BWDsKLSAgICAgICAgICAgIGludCB3ID0gY2hpbGQtPm92ZXJyaWRlV2lkdGgoKSAt
IGNoaWxkLT5ib3JkZXJBbmRQYWRkaW5nV2lkdGgoKTsKLSAgICAgICAgICAgIGlmICghY2hpbGQt
PnN0eWxlKCktPm1heFdpZHRoKCkuaXNVbmRlZmluZWQoKSAmJgotICAgICAgICAgICAgICAgIGNo
aWxkLT5zdHlsZSgpLT5tYXhXaWR0aCgpLmlzRml4ZWQoKSkKLSAgICAgICAgICAgICAgICBtYXhX
ID0gY2hpbGQtPnN0eWxlKCktPm1heFdpZHRoKCkudmFsdWUoKTsKKyAgICAgICAgICAgIGludCBt
YXhXaWR0aCA9IElOVF9NQVg7CisgICAgICAgICAgICBpbnQgd2lkdGggPSBjaGlsZC0+b3ZlcnJp
ZGVXaWR0aCgpIC0gY2hpbGQtPmJvcmRlckFuZFBhZGRpbmdXaWR0aCgpOworICAgICAgICAgICAg
aWYgKCFjaGlsZC0+c3R5bGUoKS0+bWF4V2lkdGgoKS5pc1VuZGVmaW5lZCgpICYmIGNoaWxkLT5z
dHlsZSgpLT5tYXhXaWR0aCgpLmlzRml4ZWQoKSkKKyAgICAgICAgICAgICAgICBtYXhXaWR0aCA9
IGNoaWxkLT5zdHlsZSgpLT5tYXhXaWR0aCgpLnZhbHVlKCk7CiAgICAgICAgICAgICBlbHNlIGlm
IChjaGlsZC0+c3R5bGUoKS0+bWF4V2lkdGgoKS50eXBlKCkgPT0gSW50cmluc2ljKQotICAgICAg
ICAgICAgICAgIG1heFcgPSBjaGlsZC0+bWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKCk7CisgICAg
ICAgICAgICAgICAgbWF4V2lkdGggPSBjaGlsZC0+bWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKCk7
CiAgICAgICAgICAgICBlbHNlIGlmIChjaGlsZC0+c3R5bGUoKS0+bWF4V2lkdGgoKS50eXBlKCkg
PT0gTWluSW50cmluc2ljKQotICAgICAgICAgICAgICAgIG1heFcgPSBjaGlsZC0+bWluUHJlZmVy
cmVkTG9naWNhbFdpZHRoKCk7Ci0gICAgICAgICAgICBpZiAobWF4VyA9PSBJTlRfTUFYKQotICAg
ICAgICAgICAgICAgIHJldHVybiBtYXhXOwotICAgICAgICAgICAgcmV0dXJuIG1heCgwLCBtYXhX
IC0gdyk7CisgICAgICAgICAgICAgICAgbWF4V2lkdGggPSBjaGlsZC0+bWluUHJlZmVycmVkTG9n
aWNhbFdpZHRoKCk7CisgICAgICAgICAgICBpZiAobWF4V2lkdGggPT0gSU5UX01BWCkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbWF4V2lkdGg7CisgICAgICAgICAgICByZXR1cm4gbWF4KDAsIG1h
eFdpZHRoIC0gd2lkdGgpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gRklYTUU6
IEZvciBub3cganVzdCBoYW5kbGUgZml4ZWQgdmFsdWVzLgotICAgICAgICAgICAgaW50IG1heEgg
PSBJTlRfTUFYOwotICAgICAgICAgICAgaW50IGggPSBjaGlsZC0+b3ZlcnJpZGVIZWlnaHQoKSAt
IGNoaWxkLT5ib3JkZXJBbmRQYWRkaW5nSGVpZ2h0KCk7Ci0gICAgICAgICAgICBpZiAoIWNoaWxk
LT5zdHlsZSgpLT5tYXhIZWlnaHQoKS5pc1VuZGVmaW5lZCgpICYmCi0gICAgICAgICAgICAgICAg
Y2hpbGQtPnN0eWxlKCktPm1heEhlaWdodCgpLmlzRml4ZWQoKSkKLSAgICAgICAgICAgICAgICBt
YXhIID0gY2hpbGQtPnN0eWxlKCktPm1heEhlaWdodCgpLnZhbHVlKCk7Ci0gICAgICAgICAgICBp
ZiAobWF4SCA9PSBJTlRfTUFYKQotICAgICAgICAgICAgICAgIHJldHVybiBtYXhIOwotICAgICAg
ICAgICAgcmV0dXJuIG1heCgwLCBtYXhIIC0gaCk7CisgICAgICAgICAgICBpbnQgbWF4SGVpZ2h0
ID0gSU5UX01BWDsKKyAgICAgICAgICAgIGludCBoZWlnaHQgPSBjaGlsZC0+b3ZlcnJpZGVIZWln
aHQoKSAtIGNoaWxkLT5ib3JkZXJBbmRQYWRkaW5nSGVpZ2h0KCk7CisgICAgICAgICAgICBpZiAo
IWNoaWxkLT5zdHlsZSgpLT5tYXhIZWlnaHQoKS5pc1VuZGVmaW5lZCgpICYmIGNoaWxkLT5zdHls
ZSgpLT5tYXhIZWlnaHQoKS5pc0ZpeGVkKCkpCisgICAgICAgICAgICAgICAgbWF4SGVpZ2h0ID0g
Y2hpbGQtPnN0eWxlKCktPm1heEhlaWdodCgpLnZhbHVlKCk7CisgICAgICAgICAgICBpZiAobWF4
SGVpZ2h0ID09IElOVF9NQVgpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1heEhlaWdodDsKKyAg
ICAgICAgICAgIHJldHVybiBtYXgoMCwgbWF4SGVpZ2h0IC0gaGVpZ2h0KTsKICAgICAgICAgfQog
ICAgIH0KIAogICAgIC8vIEZJWE1FOiBGb3Igbm93IGp1c3QgaGFuZGxlIGZpeGVkIHZhbHVlcy4K
ICAgICBpZiAoaXNIb3Jpem9udGFsKCkpIHsKLSAgICAgICAgaW50IG1pblcgPSBjaGlsZC0+bWlu
UHJlZmVycmVkTG9naWNhbFdpZHRoKCk7Ci0gICAgICAgIGludCB3ID0gY2hpbGQtPm92ZXJyaWRl
V2lkdGgoKSAtIGNoaWxkLT5ib3JkZXJBbmRQYWRkaW5nV2lkdGgoKTsKKyAgICAgICAgaW50IG1p
bldpZHRoID0gY2hpbGQtPm1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpOworICAgICAgICBpbnQg
d2lkdGggPSBjaGlsZC0+b3ZlcnJpZGVXaWR0aCgpIC0gY2hpbGQtPmJvcmRlckFuZFBhZGRpbmdX
aWR0aCgpOwogICAgICAgICBpZiAoY2hpbGQtPnN0eWxlKCktPm1pbldpZHRoKCkuaXNGaXhlZCgp
KQotICAgICAgICAgICAgbWluVyA9IGNoaWxkLT5zdHlsZSgpLT5taW5XaWR0aCgpLnZhbHVlKCk7
CisgICAgICAgICAgICBtaW5XaWR0aCA9IGNoaWxkLT5zdHlsZSgpLT5taW5XaWR0aCgpLnZhbHVl
KCk7CiAgICAgICAgIGVsc2UgaWYgKGNoaWxkLT5zdHlsZSgpLT5taW5XaWR0aCgpLnR5cGUoKSA9
PSBJbnRyaW5zaWMpCi0gICAgICAgICAgICBtaW5XID0gY2hpbGQtPm1heFByZWZlcnJlZExvZ2lj
YWxXaWR0aCgpOworICAgICAgICAgICAgbWluV2lkdGggPSBjaGlsZC0+bWF4UHJlZmVycmVkTG9n
aWNhbFdpZHRoKCk7CiAgICAgICAgIGVsc2UgaWYgKGNoaWxkLT5zdHlsZSgpLT5taW5XaWR0aCgp
LnR5cGUoKSA9PSBNaW5JbnRyaW5zaWMpCi0gICAgICAgICAgICBtaW5XID0gY2hpbGQtPm1pblBy
ZWZlcnJlZExvZ2ljYWxXaWR0aCgpOwotICAgICAgICAgICAgCi0gICAgICAgIGludCBhbGxvd2Vk
U2hyaW5rYWdlID0gbWluKDAsIG1pblcgLSB3KTsKKyAgICAgICAgICAgIG1pbldpZHRoID0gY2hp
bGQtPm1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpOworCisgICAgICAgIGludCBhbGxvd2VkU2hy
aW5rYWdlID0gbWluKDAsIG1pbldpZHRoIC0gd2lkdGgpOwogICAgICAgICByZXR1cm4gYWxsb3dl
ZFNocmlua2FnZTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoY2hpbGQtPnN0eWxlKCktPm1p
bkhlaWdodCgpLmlzRml4ZWQoKSkgewotICAgICAgICAgICAgaW50IG1pbkggPSBjaGlsZC0+c3R5
bGUoKS0+bWluSGVpZ2h0KCkudmFsdWUoKTsKLSAgICAgICAgICAgIGludCBoID0gY2hpbGQtPm92
ZXJyaWRlSGVpZ2h0KCkgLSBjaGlsZC0+Ym9yZGVyQW5kUGFkZGluZ0hlaWdodCgpOwotICAgICAg
ICAgICAgaW50IGFsbG93ZWRTaHJpbmthZ2UgPSBtaW4oMCwgbWluSCAtIGgpOworICAgICAgICAg
ICAgaW50IG1pbkhlaWdodCA9IGNoaWxkLT5zdHlsZSgpLT5taW5IZWlnaHQoKS52YWx1ZSgpOwor
ICAgICAgICAgICAgaW50IGhlaWdodCA9IGNoaWxkLT5vdmVycmlkZUhlaWdodCgpIC0gY2hpbGQt
PmJvcmRlckFuZFBhZGRpbmdIZWlnaHQoKTsKKyAgICAgICAgICAgIGludCBhbGxvd2VkU2hyaW5r
YWdlID0gbWluKDAsIG1pbkhlaWdodCAtIGhlaWdodCk7CiAgICAgICAgICAgICByZXR1cm4gYWxs
b3dlZFNocmlua2FnZTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIHJldHVybiAwOwog
fQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>