<?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>70977</bug_id>
          
          <creation_ts>2011-10-26 16:11:53 -0700</creation_ts>
          <short_desc>use main/cross instead of logical width/height when talking about flow direction</short_desc>
          <delta_ts>2011-10-27 10:04:12 -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>hyatt</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>491250</commentid>
    <comment_count>0</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-10-26 16:11:53 -0700</bug_when>
    <thetext>use main/cross instead of logical width/height when talking about flow direction</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491252</commentid>
    <comment_count>1</comment_count>
      <attachid>112612</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-10-26 16:15:48 -0700</bug_when>
    <thetext>Created attachment 112612
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491253</commentid>
    <comment_count>2</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-10-26 16:17:43 -0700</bug_when>
    <thetext>Better name suggestions welcome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491284</commentid>
    <comment_count>3</comment_count>
      <attachid>112620</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-10-26 16:50:41 -0700</bug_when>
    <thetext>Created attachment 112620
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491306</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-26 17:47:14 -0700</bug_when>
    <thetext>Attachment 112612 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 9

Updating OpenSource
RA layer request failed: OPTIONS of &apos;http://svn.webkit.org/repository/webkit&apos;: timed out waiting for server (http://svn.webkit.org) at /usr/lib/git-core/git-svn line 2295

Died at Tools/Scripts/update-webkit line 157.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491655</commentid>
    <comment_count>5</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-10-27 10:04:12 -0700</bug_when>
    <thetext>Committed r98594: &lt;http://trac.webkit.org/changeset/98594&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112612</attachid>
            <date>2011-10-26 16:15:48 -0700</date>
            <delta_ts>2011-10-26 16:50:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70977-20111026161553.patch</filename>
            <type>text/plain</type>
            <size>30622</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTg0OTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmYzNmOTU2ZTlmOGYwMjcz
MWY3NjYyNjJhOThhMjY0MDAxMzE3YzFkLi5mMDJlM2ViN2UwMzllNWE0M2ZlOTU3OWNhZmNhM2Nh
MWRjN2NlMTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTEtMTAtMjYgIFRvbnkg
Q2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICB1c2UgbWFpbi9jcm9zcyBpbnN0
ZWFkIG9mIGxvZ2ljYWwgd2lkdGgvaGVpZ2h0IHdoZW4gdGFsa2luZyBhYm91dCBmbG93IGRpcmVj
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA5
NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGbGV4
Ym94IGNvZGUgdXNlcyBsb2dpY2FsIGluIGZ1bmN0aW9uIG5hbWVzIHRvIHJlZmVyIHRvIHRoZSBm
bG93CisgICAgICAgIGRpcmVjdGlvbi4gVGhpcyBpcyBjb25mdXNpbmcgYmVjYXVzZSB3cml0aW5n
IG1vZGUgYWxzbyB1c2VzIGxvZ2ljYWwsCisgICAgICAgIGJ1dCB0aGlzIGlzIGEgZGlmZmVudCB1
c2FnZS4gVG8gYXZvaWQgY29uZnVzaW9uLCBiZSBleHBsaWNpdCBhYm91dAorICAgICAgICBtYWlu
IHZzIGNyb3NzIGF4aXMuIEV4dGVudCBpcyB1c2VkIGluc3RlYWQgb2Ygd2lkdGgvaGVpZ2h0Lgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywganVzdCBhIHJlZmFjdG9yaW5nLgorCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckZsZXhpYmxlQm94OjptYWluQXhpc0xlbmd0aEZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckZsZXhpYmxlQm94Ojpjcm9zc0F4aXNMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRmxleGlibGVCb3g6OnNldENyb3NzRXh0ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckZsZXhpYmxlQm94Ojpjcm9zc0V4dGVudEZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckZsZXhpYmxlQm94OjptYWluRXh0ZW50Rm9yQ2hpbGQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyRmxleGlibGVCb3g6OmNyb3NzQXhpc0V4dGVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJGbGV4aWJsZUJveDo6bWFpbkF4aXNFeHRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRmxleGlibGVCb3g6OmNyb3NzQXhpc0NvbnRlbnRFeHRlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRmxleGlibGVCb3g6Om1haW5BeGlzQ29udGVudEV4dGVudCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6Y3Jvc3NBeGlzQm9yZGVyQW5kUGFkZGluZ0V4
dGVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6Y3Jvc3NBeGlzTWFy
Z2luRXh0ZW50Rm9yQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6
OmZsb3dBd2FyZUxvY2F0aW9uRm9yQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxl
eGlibGVCb3g6OnNldEZsb3dBd2FyZUxvY2F0aW9uRm9yQ2hpbGQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyRmxleGlibGVCb3g6Om1haW5BeGlzQm9yZGVyQW5kUGFkZGluZ0V4dGVudEZvckNo
aWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjptYWluQXhpc1Njcm9s
bGJhckV4dGVudEZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94
OjpwcmVmZXJyZWRNYWluQXhpc0NvbnRlbnRFeHRlbnRGb3JGbGV4SXRlbSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0SW5saW5lRGlyZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94Ojpwb3NpdGl2ZUZsZXhGb3JDaGlsZCk6IFNp
bmNlIGZsZXggb25seQorICAgICAgICAgICAgbWF0dGVycyBpbiB0aGUgbWFpbiBheGlzLCB0aGVy
ZSdzIG5vIHJlYXNvbiB0byBkZWFtYmlndWF0ZSBpdCBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRmxleGlibGVCb3g6Om5lZ2F0aXZlRmxleEZvckNoaWxkKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6YXZhaWxhYmxlQWxpZ25tZW50U3BhY2VGb3JD
aGlsZCk6IEFsaWdubWVudCBpcyBhbHdheXMgCisgICAgICAgICAgICBpbiB0aGUgY3Jvc3MgYXhp
cyBkaXJlY3Rpb24sIHNvIGRvbid0IGluY2x1ZGUgdGhhdCBpbiB0aGUgbWV0aG9kIG5hbWUuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6bWFyZ2luQm94QXNjZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlUHJlZmVycmVkTWFpbkF4
aXNFeHRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OnJ1bkZyZWVT
cGFjZUFsbG9jYXRpb25BbGdvcml0aG1JbmxpbmVEaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyRmxleGlibGVCb3g6OmxheW91dEFuZFBsYWNlQ2hpbGRyZW5JbmxpbmVEaXJlY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmFkanVzdEFsaWdubWVu
dEZvckNoaWxkKTogIEFsaWdubWVudCBpcyBhbHdheXMgCisgICAgICAgICAgICBpbiB0aGUgY3Jv
c3MgYXhpcyBkaXJlY3Rpb24sIHNvIGRvbid0IGluY2x1ZGUgdGhhdCBpbiB0aGUgbWV0aG9kIG5h
bWUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6YWxpZ25DaGlsZHJlbkJs
b2NrRGlyZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaDoK
KwogMjAxMS0xMC0yNiAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAg
ICAgICBJbmNyZWFzZSBTdHJpbmdJbXBsIEZsYWcgQml0cyBmb3IgOCBiaXQgU3RyaW5ncwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKaW5kZXggMGJm
MjkyNzAwZDQ2OWI5MGYyMzA1YWNhYmNlZDBjN2U5NDQ1OTU5Mi4uZTk3OTNjMGMxMjA1OWJhNmRh
ZjgyOTViNWI4ODFlMWNmMjJiNDU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRmxleGlibGVCb3guY3BwCkBAIC0yMjgsNTEgKzIyOCw1MCBAQCBib29sIFJlbmRlckZs
ZXhpYmxlQm94Ojppc0xlZnRUb1JpZ2h0RmxvdygpIGNvbnN0CiAgICAgcmV0dXJuIHN0eWxlKCkt
PmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKIH0KIAotTGVuZ3RoIFJlbmRlckZsZXhpYmxlQm94
OjpmbG93QXdhcmVMb2dpY2FsV2lkdGhMZW5ndGhGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKSBj
b25zdAorTGVuZ3RoIFJlbmRlckZsZXhpYmxlQm94OjptYWluQXhpc0xlbmd0aEZvckNoaWxkKFJl
bmRlckJveCogY2hpbGQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbEZsb3coKSA/
IGNoaWxkLT5zdHlsZSgpLT53aWR0aCgpIDogY2hpbGQtPnN0eWxlKCktPmhlaWdodCgpOwogfQog
Ci1ib29sIFJlbmRlckZsZXhpYmxlQm94Ojppc0Zsb3dBd2FyZUxvZ2ljYWxIZWlnaHRBdXRvKCkg
Y29uc3QKK0xlbmd0aCBSZW5kZXJGbGV4aWJsZUJveDo6Y3Jvc3NBeGlzTGVuZ3RoKCkgY29uc3QK
IHsKLSAgICBMZW5ndGggaGVpZ2h0ID0gaXNIb3Jpem9udGFsRmxvdygpID8gc3R5bGUoKS0+aGVp
Z2h0KCkgOiBzdHlsZSgpLT53aWR0aCgpOwotICAgIHJldHVybiBoZWlnaHQuaXNBdXRvKCk7Cisg
ICAgcmV0dXJuIGlzSG9yaXpvbnRhbEZsb3coKSA/IHN0eWxlKCktPmhlaWdodCgpIDogc3R5bGUo
KS0+d2lkdGgoKTsKIH0KIAotdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6c2V0Rmxvd0F3YXJlTG9n
aWNhbEhlaWdodChMYXlvdXRVbml0IHNpemUpCit2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpzZXRD
cm9zc0V4dGVudChMYXlvdXRVbml0IGV4dGVudCkKIHsKICAgICBpZiAoaXNIb3Jpem9udGFsRmxv
dygpKQotICAgICAgICBzZXRIZWlnaHQoc2l6ZSk7CisgICAgICAgIHNldEhlaWdodChleHRlbnQp
OwogICAgIGVsc2UKLSAgICAgICAgc2V0V2lkdGgoc2l6ZSk7CisgICAgICAgIHNldFdpZHRoKGV4
dGVudCk7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmZsb3dBd2FyZUxvZ2lj
YWxIZWlnaHRGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKQorTGF5b3V0VW5pdCBSZW5kZXJGbGV4
aWJsZUJveDo6Y3Jvc3NFeHRlbnRGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKQogewogICAgIHJl
dHVybiBpc0hvcml6b250YWxGbG93KCkgPyBjaGlsZC0+aGVpZ2h0KCkgOiBjaGlsZC0+d2lkdGgo
KTsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6Zmxvd0F3YXJlTG9naWNhbFdp
ZHRoRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkKK0xheW91dFVuaXQgUmVuZGVyRmxleGlibGVC
b3g6Om1haW5FeHRlbnRGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKQogewogICAgIHJldHVybiBp
c0hvcml6b250YWxGbG93KCkgPyBjaGlsZC0+d2lkdGgoKSA6IGNoaWxkLT5oZWlnaHQoKTsKIH0K
IAotTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6Zmxvd0F3YXJlTG9naWNhbEhlaWdodCgp
IGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94Ojpjcm9zc0F4aXNFeHRlbnQoKSBj
b25zdAogewogICAgIHJldHVybiBpc0hvcml6b250YWxGbG93KCkgPyBoZWlnaHQoKSA6IHdpZHRo
KCk7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmZsb3dBd2FyZUxvZ2ljYWxX
aWR0aCgpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjptYWluQXhpc0V4dGVu
dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbEZsb3coKSA/IHdpZHRoKCkgOiBo
ZWlnaHQoKTsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6Zmxvd0F3YXJlQ29u
dGVudExvZ2ljYWxIZWlnaHQoKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6
Y3Jvc3NBeGlzQ29udGVudEV4dGVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzSG9yaXpvbnRh
bEZsb3coKSA/IGNvbnRlbnRIZWlnaHQoKSA6IGNvbnRlbnRXaWR0aCgpOwogfQogCi1MYXlvdXRV
bml0IFJlbmRlckZsZXhpYmxlQm94OjpmbG93QXdhcmVDb250ZW50TG9naWNhbFdpZHRoKCkgY29u
c3QKK0xheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6Om1haW5BeGlzQ29udGVudEV4dGVudCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbEZsb3coKSA/IGNvbnRlbnRXaWR0aCgp
IDogY29udGVudEhlaWdodCgpOwogfQpAQCAtMzM0LDcgKzMzMyw3IEBAIExheW91dFVuaXQgUmVu
ZGVyRmxleGlibGVCb3g6OmZsb3dBd2FyZUJvcmRlckFmdGVyKCkgY29uc3QKICAgICByZXR1cm4g
Ym9yZGVyQm90dG9tKCk7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmZsb3dB
d2FyZUJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkgY29uc3QKK0xheW91dFVuaXQgUmVu
ZGVyRmxleGlibGVCb3g6OmNyb3NzQXhpc0JvcmRlckFuZFBhZGRpbmdFeHRlbnQoKSBjb25zdAog
ewogICAgIHJldHVybiBpc0hvcml6b250YWxGbG93KCkgPyBib3JkZXJBbmRQYWRkaW5nSGVpZ2h0
KCkgOiBib3JkZXJBbmRQYWRkaW5nV2lkdGgoKTsKIH0KQEAgLTQyNCwxMiArNDIzLDEyIEBAIExh
eW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmZsb3dBd2FyZU1hcmdpbkFmdGVyRm9yQ2hpbGQo
UmVuZGVyQm94KiBjaGlsZCkgY29uCiAgICAgcmV0dXJuIG1hcmdpbkJvdHRvbSgpOwogfQogCi1M
YXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjpmbG93QXdhcmVNYXJnaW5Mb2dpY2FsSGVpZ2h0
Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyRmxleGli
bGVCb3g6OmNyb3NzQXhpc01hcmdpbkV4dGVudEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbEZsb3coKSA/IGNoaWxkLT5tYXJnaW5Ub3Ao
KSArIGNoaWxkLT5tYXJnaW5Cb3R0b20oKSA6IGNoaWxkLT5tYXJnaW5MZWZ0KCkgKyBjaGlsZC0+
bWFyZ2luUmlnaHQoKTsKIH0KIAotTGF5b3V0UG9pbnQgUmVuZGVyRmxleGlibGVCb3g6OmZsb3dB
d2FyZUxvZ2ljYWxMb2NhdGlvbkZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpIGNvbnN0CitMYXlv
dXRQb2ludCBSZW5kZXJGbGV4aWJsZUJveDo6Zmxvd0F3YXJlTG9jYXRpb25Gb3JDaGlsZChSZW5k
ZXJCb3gqIGNoaWxkKSBjb25zdAogewogICAgIHJldHVybiBpc0hvcml6b250YWxGbG93KCkgPyBj
aGlsZC0+bG9jYXRpb24oKSA6IGNoaWxkLT5sb2NhdGlvbigpLnRyYW5zcG9zZWRQb2ludCgpOwog
fQpAQCAtNDY0LDcgKzQ2Myw3IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OnNldEZsb3dBd2Fy
ZU1hcmdpbkVuZEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQsIExheW91dFVuCiAgICAgfQogfQog
Ci12b2lkIFJlbmRlckZsZXhpYmxlQm94OjpzZXRGbG93QXdhcmVMb2dpY2FsTG9jYXRpb25Gb3JD
aGlsZChSZW5kZXJCb3gqIGNoaWxkLCBjb25zdCBMYXlvdXRQb2ludCYgbG9jYXRpb24pCit2b2lk
IFJlbmRlckZsZXhpYmxlQm94OjpzZXRGbG93QXdhcmVMb2NhdGlvbkZvckNoaWxkKFJlbmRlckJv
eCogY2hpbGQsIGNvbnN0IExheW91dFBvaW50JiBsb2NhdGlvbikKIHsKICAgICBpZiAoaXNIb3Jp
em9udGFsRmxvdygpKQogICAgICAgICBjaGlsZC0+c2V0TG9jYXRpb24obG9jYXRpb24pOwpAQCAt
NDcyLDEyICs0NzEsMTIgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6c2V0Rmxvd0F3YXJlTG9n
aWNhbExvY2F0aW9uRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgY28KICAgICAgICAgY2hpbGQt
PnNldExvY2F0aW9uKGxvY2F0aW9uLnRyYW5zcG9zZWRQb2ludCgpKTsKIH0KIAotTGF5b3V0VW5p
dCBSZW5kZXJGbGV4aWJsZUJveDo6bG9naWNhbEJvcmRlckFuZFBhZGRpbmdXaWR0aEZvckNoaWxk
KFJlbmRlckJveCogY2hpbGQpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94Ojpt
YWluQXhpc0JvcmRlckFuZFBhZGRpbmdFeHRlbnRGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKSBj
b25zdAogewogICAgIHJldHVybiBpc0hvcml6b250YWxGbG93KCkgPyBjaGlsZC0+Ym9yZGVyQW5k
UGFkZGluZ1dpZHRoKCkgOiBjaGlsZC0+Ym9yZGVyQW5kUGFkZGluZ0hlaWdodCgpOwogfQogCi1M
YXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94Ojpsb2dpY2FsU2Nyb2xsYmFySGVpZ2h0Rm9yQ2hp
bGQoUmVuZGVyQm94KiBjaGlsZCkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6
Om1haW5BeGlzU2Nyb2xsYmFyRXh0ZW50Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkgY29uc3QK
IHsKICAgICByZXR1cm4gaXNIb3Jpem9udGFsRmxvdygpID8gY2hpbGQtPnZlcnRpY2FsU2Nyb2xs
YmFyV2lkdGgoKSA6IGNoaWxkLT5ob3Jpem9udGFsU2Nyb2xsYmFySGVpZ2h0KCk7CiB9CkBAIC00
OTYsMjUgKzQ5NSwyNSBAQCBMZW5ndGggUmVuZGVyRmxleGlibGVCb3g6Om1hcmdpbkVuZFN0eWxl
Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkgY29uc3QKICAgICByZXR1cm4gaXNMZWZ0VG9SaWdo
dEZsb3coKSA/IGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5Cb3R0b20oKSA6IGNoaWxkLT5zdHlsZSgp
LT5tYXJnaW5Ub3AoKTsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6cHJlZmVy
cmVkTG9naWNhbENvbnRlbnRXaWR0aEZvckZsZXhJdGVtKFJlbmRlckJveCogY2hpbGQpIGNvbnN0
CitMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjpwcmVmZXJyZWRNYWluQXhpc0NvbnRlbnRF
eHRlbnRGb3JGbGV4SXRlbShSZW5kZXJCb3gqIGNoaWxkKSBjb25zdAogewotICAgIExlbmd0aCBs
b2dpY2FsV2lkdGhMZW5ndGggPSBmbG93QXdhcmVMb2dpY2FsV2lkdGhMZW5ndGhGb3JDaGlsZChj
aGlsZCk7Ci0gICAgaWYgKGxvZ2ljYWxXaWR0aExlbmd0aC5pc0F1dG8oKSkgewotICAgICAgICBM
YXlvdXRVbml0IGxvZ2ljYWxXaWR0aCA9IGhhc09ydGhvZ29uYWxGbG93KGNoaWxkKSA/IGNoaWxk
LT5sb2dpY2FsSGVpZ2h0KCkgOiBjaGlsZC0+bWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKCk7Ci0g
ICAgICAgIHJldHVybiBsb2dpY2FsV2lkdGggLSBsb2dpY2FsQm9yZGVyQW5kUGFkZGluZ1dpZHRo
Rm9yQ2hpbGQoY2hpbGQpIC0gbG9naWNhbFNjcm9sbGJhckhlaWdodEZvckNoaWxkKGNoaWxkKTsK
KyAgICBMZW5ndGggbWFpbkF4aXNMZW5ndGggPSBtYWluQXhpc0xlbmd0aEZvckNoaWxkKGNoaWxk
KTsKKyAgICBpZiAobWFpbkF4aXNMZW5ndGguaXNBdXRvKCkpIHsKKyAgICAgICAgTGF5b3V0VW5p
dCBtYWluQXhpc0V4dGVudCA9IGhhc09ydGhvZ29uYWxGbG93KGNoaWxkKSA/IGNoaWxkLT5sb2dp
Y2FsSGVpZ2h0KCkgOiBjaGlsZC0+bWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKCk7CisgICAgICAg
IHJldHVybiBtYWluQXhpc0V4dGVudCAtIG1haW5BeGlzQm9yZGVyQW5kUGFkZGluZ0V4dGVudEZv
ckNoaWxkKGNoaWxkKSAtIG1haW5BeGlzU2Nyb2xsYmFyRXh0ZW50Rm9yQ2hpbGQoY2hpbGQpOwog
ICAgIH0KLSAgICByZXR1cm4gbG9naWNhbFdpZHRoTGVuZ3RoLmNhbGNNaW5WYWx1ZShmbG93QXdh
cmVDb250ZW50TG9naWNhbFdpZHRoKCkpOworICAgIHJldHVybiBtYWluQXhpc0xlbmd0aC5jYWxj
TWluVmFsdWUobWFpbkF4aXNDb250ZW50RXh0ZW50KCkpOwogfQogCiB2b2lkIFJlbmRlckZsZXhp
YmxlQm94OjpsYXlvdXRJbmxpbmVEaXJlY3Rpb24oYm9vbCByZWxheW91dENoaWxkcmVuKQogewot
ICAgIExheW91dFVuaXQgcHJlZmVycmVkTG9naWNhbFdpZHRoOworICAgIExheW91dFVuaXQgcHJl
ZmVycmVkTWFpbkF4aXNFeHRlbnQ7CiAgICAgZmxvYXQgdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5
OwogICAgIGZsb2F0IHRvdGFsTmVnYXRpdmVGbGV4aWJpbGl0eTsKICAgICBUcmVlT3JkZXJJdGVy
YXRvciB0cmVlSXRlcmF0b3IodGhpcyk7CiAKLSAgICBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdp
ZHRoKHJlbGF5b3V0Q2hpbGRyZW4sIHRyZWVJdGVyYXRvciwgcHJlZmVycmVkTG9naWNhbFdpZHRo
LCB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHksIHRvdGFsTmVnYXRpdmVGbGV4aWJpbGl0eSk7Ci0g
ICAgTGF5b3V0VW5pdCBhdmFpbGFibGVGcmVlU3BhY2UgPSBmbG93QXdhcmVDb250ZW50TG9naWNh
bFdpZHRoKCkgLSBwcmVmZXJyZWRMb2dpY2FsV2lkdGg7CisgICAgY29tcHV0ZVByZWZlcnJlZE1h
aW5BeGlzRXh0ZW50KHJlbGF5b3V0Q2hpbGRyZW4sIHRyZWVJdGVyYXRvciwgcHJlZmVycmVkTWFp
bkF4aXNFeHRlbnQsIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSwgdG90YWxOZWdhdGl2ZUZsZXhp
YmlsaXR5KTsKKyAgICBMYXlvdXRVbml0IGF2YWlsYWJsZUZyZWVTcGFjZSA9IG1haW5BeGlzQ29u
dGVudEV4dGVudCgpIC0gcHJlZmVycmVkTWFpbkF4aXNFeHRlbnQ7CiAKICAgICBGbGV4T3JkZXJJ
dGVyYXRvciBmbGV4SXRlcmF0b3IodGhpcywgdHJlZUl0ZXJhdG9yLmZsZXhPcmRlclZhbHVlcygp
KTsKICAgICBJbmZsZXhpYmxlRmxleEl0ZW1TaXplIGluZmxleGlibGVJdGVtczsKQEAgLTUyNywz
OSArNTI2LDM5IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dElubGluZURpcmVjdGlv
bihib29sIHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAgbGF5b3V0QW5kUGxhY2VDaGlsZHJlbklubGlu
ZURpcmVjdGlvbihmbGV4SXRlcmF0b3IsIGNoaWxkU2l6ZXMsIGF2YWlsYWJsZUZyZWVTcGFjZSwg
dG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5KTsKIH0KIAotZmxvYXQgUmVuZGVyRmxleGlibGVCb3g6
OmxvZ2ljYWxQb3NpdGl2ZUZsZXhGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKSBjb25zdAorZmxv
YXQgUmVuZGVyRmxleGlibGVCb3g6OnBvc2l0aXZlRmxleEZvckNoaWxkKFJlbmRlckJveCogY2hp
bGQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbEZsb3coKSA/IGNoaWxkLT5zdHls
ZSgpLT5mbGV4Ym94V2lkdGhQb3NpdGl2ZUZsZXgoKSA6IGNoaWxkLT5zdHlsZSgpLT5mbGV4Ym94
SGVpZ2h0UG9zaXRpdmVGbGV4KCk7CiB9CiAKLWZsb2F0IFJlbmRlckZsZXhpYmxlQm94Ojpsb2dp
Y2FsTmVnYXRpdmVGbGV4Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkgY29uc3QKK2Zsb2F0IFJl
bmRlckZsZXhpYmxlQm94OjpuZWdhdGl2ZUZsZXhGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKSBj
b25zdAogewogICAgIHJldHVybiBpc0hvcml6b250YWxGbG93KCkgPyBjaGlsZC0+c3R5bGUoKS0+
ZmxleGJveFdpZHRoTmVnYXRpdmVGbGV4KCkgOiBjaGlsZC0+c3R5bGUoKS0+ZmxleGJveEhlaWdo
dE5lZ2F0aXZlRmxleCgpOwogfQogCi1MYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjphdmFp
bGFibGVMb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkKK0xheW91dFVuaXQg
UmVuZGVyRmxleGlibGVCb3g6OmF2YWlsYWJsZUFsaWdubWVudFNwYWNlRm9yQ2hpbGQoUmVuZGVy
Qm94KiBjaGlsZCkKIHsKLSAgICBMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsSGVpZ2h0ID0gZmxv
d0F3YXJlQ29udGVudExvZ2ljYWxIZWlnaHQoKTsKLSAgICBMYXlvdXRVbml0IGN1cnJlbnRDaGls
ZEhlaWdodCA9IGZsb3dBd2FyZU1hcmdpbkxvZ2ljYWxIZWlnaHRGb3JDaGlsZChjaGlsZCkgKyBm
bG93QXdhcmVMb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoY2hpbGQpOwotICAgIHJldHVybiBjb250ZW50
TG9naWNhbEhlaWdodCAtIGN1cnJlbnRDaGlsZEhlaWdodDsKKyAgICBMYXlvdXRVbml0IGNyb3Nz
Q29udGVudEV4dGVudCA9IGNyb3NzQXhpc0NvbnRlbnRFeHRlbnQoKTsKKyAgICBMYXlvdXRVbml0
IGNoaWxkQ3Jvc3NFeHRlbnQgPSBjcm9zc0F4aXNNYXJnaW5FeHRlbnRGb3JDaGlsZChjaGlsZCkg
KyBjcm9zc0V4dGVudEZvckNoaWxkKGNoaWxkKTsKKyAgICByZXR1cm4gY3Jvc3NDb250ZW50RXh0
ZW50IC0gY2hpbGRDcm9zc0V4dGVudDsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJv
eDo6bWFyZ2luQm94QXNjZW50KFJlbmRlckJveCogY2hpbGQpCiB7CiAgICAgTGF5b3V0VW5pdCBh
c2NlbnQgPSBjaGlsZC0+Zmlyc3RMaW5lQm94QmFzZWxpbmUoKTsKICAgICBpZiAoYXNjZW50ID09
IC0xKQotICAgICAgICBhc2NlbnQgPSBmbG93QXdhcmVMb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoY2hp
bGQpICsgZmxvd0F3YXJlTWFyZ2luQWZ0ZXJGb3JDaGlsZChjaGlsZCk7CisgICAgICAgIGFzY2Vu
dCA9IGNyb3NzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQpICsgZmxvd0F3YXJlTWFyZ2luQWZ0ZXJGb3JD
aGlsZChjaGlsZCk7CiAgICAgcmV0dXJuIGFzY2VudCArIGZsb3dBd2FyZU1hcmdpbkJlZm9yZUZv
ckNoaWxkKGNoaWxkKTsKIH0KIAotdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZVByZWZl
cnJlZExvZ2ljYWxXaWR0aChib29sIHJlbGF5b3V0Q2hpbGRyZW4sIFRyZWVPcmRlckl0ZXJhdG9y
JiBpdGVyYXRvciwgTGF5b3V0VW5pdCYgcHJlZmVycmVkTG9naWNhbFdpZHRoLCBmbG9hdCYgdG90
YWxQb3NpdGl2ZUZsZXhpYmlsaXR5LCBmbG9hdCYgdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5KQor
dm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZVByZWZlcnJlZE1haW5BeGlzRXh0ZW50KGJv
b2wgcmVsYXlvdXRDaGlsZHJlbiwgVHJlZU9yZGVySXRlcmF0b3ImIGl0ZXJhdG9yLCBMYXlvdXRV
bml0JiBwcmVmZXJyZWRNYWluQXhpc0V4dGVudCwgZmxvYXQmIHRvdGFsUG9zaXRpdmVGbGV4aWJp
bGl0eSwgZmxvYXQmIHRvdGFsTmVnYXRpdmVGbGV4aWJpbGl0eSkKIHsKLSAgICBwcmVmZXJyZWRM
b2dpY2FsV2lkdGggPSAwOworICAgIHByZWZlcnJlZE1haW5BeGlzRXh0ZW50ID0gMDsKICAgICB0
b3RhbFBvc2l0aXZlRmxleGliaWxpdHkgPSB0b3RhbE5lZ2F0aXZlRmxleGliaWxpdHkgPSAwOwog
Ci0gICAgTGF5b3V0VW5pdCBmbGV4Ym94QXZhaWxhYmxlTG9naWNhbFdpZHRoID0gZmxvd0F3YXJl
Q29udGVudExvZ2ljYWxXaWR0aCgpOworICAgIExheW91dFVuaXQgZmxleGJveEF2YWlsYWJsZUNv
bnRlbnRFeHRlbnQgPSBtYWluQXhpc0NvbnRlbnRFeHRlbnQoKTsKICAgICBmb3IgKFJlbmRlckJv
eCogY2hpbGQgPSBpdGVyYXRvci5maXJzdCgpOyBjaGlsZDsgY2hpbGQgPSBpdGVyYXRvci5uZXh0
KCkpIHsKLSAgICAgICAgaWYgKGZsb3dBd2FyZUxvZ2ljYWxXaWR0aExlbmd0aEZvckNoaWxkKGNo
aWxkKS5pc0F1dG8oKSkgeworICAgICAgICBpZiAobWFpbkF4aXNMZW5ndGhGb3JDaGlsZChjaGls
ZCkuaXNBdXRvKCkpIHsKICAgICAgICAgICAgIGNoaWxkLT5jbGVhck92ZXJyaWRlU2l6ZSgpOwog
ICAgICAgICAgICAgaWYgKCFyZWxheW91dENoaWxkcmVuKQogICAgICAgICAgICAgICAgIGNoaWxk
LT5zZXRDaGlsZE5lZWRzTGF5b3V0KHRydWUpOwpAQCAtNTcwLDIwICs1NjksMjAgQEAgdm9pZCBS
ZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aChib29sIHJlbGF5
b3V0Q2hpbGRyZW4sIFRyZWUKICAgICAgICAgLy8gb2YgMCBhbmQgYmVjYXVzZSBpZiB3ZSdyZSBu
b3QgYXV0byBzaXppbmcsIHdlIGRvbid0IGRvIGEgbGF5b3V0IHRoYXQKICAgICAgICAgLy8gY29t
cHV0ZXMgdGhlIHN0YXJ0L2VuZCBtYXJnaW5zLgogICAgICAgICBpZiAoaXNIb3Jpem9udGFsRmxv
dygpKSB7Ci0gICAgICAgICAgICBjaGlsZC0+c2V0TWFyZ2luTGVmdChjaGlsZC0+c3R5bGUoKS0+
bWFyZ2luTGVmdCgpLmNhbGNNaW5WYWx1ZShmbGV4Ym94QXZhaWxhYmxlTG9naWNhbFdpZHRoKSk7
Ci0gICAgICAgICAgICBjaGlsZC0+c2V0TWFyZ2luUmlnaHQoY2hpbGQtPnN0eWxlKCktPm1hcmdp
blJpZ2h0KCkuY2FsY01pblZhbHVlKGZsZXhib3hBdmFpbGFibGVMb2dpY2FsV2lkdGgpKTsKLSAg
ICAgICAgICAgIHByZWZlcnJlZExvZ2ljYWxXaWR0aCArPSBjaGlsZC0+bWFyZ2luTGVmdCgpICsg
Y2hpbGQtPm1hcmdpblJpZ2h0KCk7CisgICAgICAgICAgICBjaGlsZC0+c2V0TWFyZ2luTGVmdChj
aGlsZC0+c3R5bGUoKS0+bWFyZ2luTGVmdCgpLmNhbGNNaW5WYWx1ZShmbGV4Ym94QXZhaWxhYmxl
Q29udGVudEV4dGVudCkpOworICAgICAgICAgICAgY2hpbGQtPnNldE1hcmdpblJpZ2h0KGNoaWxk
LT5zdHlsZSgpLT5tYXJnaW5SaWdodCgpLmNhbGNNaW5WYWx1ZShmbGV4Ym94QXZhaWxhYmxlQ29u
dGVudEV4dGVudCkpOworICAgICAgICAgICAgcHJlZmVycmVkTWFpbkF4aXNFeHRlbnQgKz0gY2hp
bGQtPm1hcmdpbkxlZnQoKSArIGNoaWxkLT5tYXJnaW5SaWdodCgpOwogICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgY2hpbGQtPnNldE1hcmdpblRvcChjaGlsZC0+c3R5bGUoKS0+bWFyZ2lu
VG9wKCkuY2FsY01pblZhbHVlKGZsZXhib3hBdmFpbGFibGVMb2dpY2FsV2lkdGgpKTsKLSAgICAg
ICAgICAgIGNoaWxkLT5zZXRNYXJnaW5Cb3R0b20oY2hpbGQtPnN0eWxlKCktPm1hcmdpbkJvdHRv
bSgpLmNhbGNNaW5WYWx1ZShmbGV4Ym94QXZhaWxhYmxlTG9naWNhbFdpZHRoKSk7Ci0gICAgICAg
ICAgICBwcmVmZXJyZWRMb2dpY2FsV2lkdGggKz0gY2hpbGQtPm1hcmdpblRvcCgpICsgY2hpbGQt
Pm1hcmdpbkJvdHRvbSgpOworICAgICAgICAgICAgY2hpbGQtPnNldE1hcmdpblRvcChjaGlsZC0+
c3R5bGUoKS0+bWFyZ2luVG9wKCkuY2FsY01pblZhbHVlKGZsZXhib3hBdmFpbGFibGVDb250ZW50
RXh0ZW50KSk7CisgICAgICAgICAgICBjaGlsZC0+c2V0TWFyZ2luQm90dG9tKGNoaWxkLT5zdHls
ZSgpLT5tYXJnaW5Cb3R0b20oKS5jYWxjTWluVmFsdWUoZmxleGJveEF2YWlsYWJsZUNvbnRlbnRF
eHRlbnQpKTsKKyAgICAgICAgICAgIHByZWZlcnJlZE1haW5BeGlzRXh0ZW50ICs9IGNoaWxkLT5t
YXJnaW5Ub3AoKSArIGNoaWxkLT5tYXJnaW5Cb3R0b20oKTsKICAgICAgICAgfQogCi0gICAgICAg
IHByZWZlcnJlZExvZ2ljYWxXaWR0aCArPSBsb2dpY2FsQm9yZGVyQW5kUGFkZGluZ1dpZHRoRm9y
Q2hpbGQoY2hpbGQpOwotICAgICAgICBwcmVmZXJyZWRMb2dpY2FsV2lkdGggKz0gcHJlZmVycmVk
TG9naWNhbENvbnRlbnRXaWR0aEZvckZsZXhJdGVtKGNoaWxkKTsKKyAgICAgICAgcHJlZmVycmVk
TWFpbkF4aXNFeHRlbnQgKz0gbWFpbkF4aXNCb3JkZXJBbmRQYWRkaW5nRXh0ZW50Rm9yQ2hpbGQo
Y2hpbGQpOworICAgICAgICBwcmVmZXJyZWRNYWluQXhpc0V4dGVudCArPSBwcmVmZXJyZWRNYWlu
QXhpc0NvbnRlbnRFeHRlbnRGb3JGbGV4SXRlbShjaGlsZCk7CiAKLSAgICAgICAgdG90YWxQb3Np
dGl2ZUZsZXhpYmlsaXR5ICs9IGxvZ2ljYWxQb3NpdGl2ZUZsZXhGb3JDaGlsZChjaGlsZCk7Ci0g
ICAgICAgIHRvdGFsTmVnYXRpdmVGbGV4aWJpbGl0eSArPSBsb2dpY2FsTmVnYXRpdmVGbGV4Rm9y
Q2hpbGQoY2hpbGQpOworICAgICAgICB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHkgKz0gcG9zaXRp
dmVGbGV4Rm9yQ2hpbGQoY2hpbGQpOworICAgICAgICB0b3RhbE5lZ2F0aXZlRmxleGliaWxpdHkg
Kz0gbmVnYXRpdmVGbGV4Rm9yQ2hpbGQoY2hpbGQpOwogICAgIH0KIH0KIApAQCAtNTkyLDMzICs1
OTEsMzMgQEAgYm9vbCBSZW5kZXJGbGV4aWJsZUJveDo6cnVuRnJlZVNwYWNlQWxsb2NhdGlvbkFs
Z29yaXRobUlubGluZURpcmVjdGlvbihGbGV4T3JkZXIKIHsKICAgICBjaGlsZFNpemVzLmNsZWFy
KCk7CiAKLSAgICBMYXlvdXRVbml0IGZsZXhib3hBdmFpbGFibGVMb2dpY2FsV2lkdGggPSBmbG93
QXdhcmVDb250ZW50TG9naWNhbFdpZHRoKCk7CisgICAgTGF5b3V0VW5pdCBmbGV4Ym94QXZhaWxh
YmxlQ29udGVudEV4dGVudCA9IG1haW5BeGlzQ29udGVudEV4dGVudCgpOwogICAgIGZvciAoUmVu
ZGVyQm94KiBjaGlsZCA9IGl0ZXJhdG9yLmZpcnN0KCk7IGNoaWxkOyBjaGlsZCA9IGl0ZXJhdG9y
Lm5leHQoKSkgewogICAgICAgICBMYXlvdXRVbml0IGNoaWxkUHJlZmVycmVkU2l6ZTsKICAgICAg
ICAgaWYgKGluZmxleGlibGVJdGVtcy5jb250YWlucyhjaGlsZCkpCiAgICAgICAgICAgICBjaGls
ZFByZWZlcnJlZFNpemUgPSBpbmZsZXhpYmxlSXRlbXMuZ2V0KGNoaWxkKTsKICAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICBjaGlsZFByZWZlcnJlZFNpemUgPSBwcmVmZXJyZWRMb2dpY2FsQ29u
dGVudFdpZHRoRm9yRmxleEl0ZW0oY2hpbGQpOworICAgICAgICAgICAgY2hpbGRQcmVmZXJyZWRT
aXplID0gcHJlZmVycmVkTWFpbkF4aXNDb250ZW50RXh0ZW50Rm9yRmxleEl0ZW0oY2hpbGQpOwog
ICAgICAgICAgICAgaWYgKGF2YWlsYWJsZUZyZWVTcGFjZSA+IDAgJiYgdG90YWxQb3NpdGl2ZUZs
ZXhpYmlsaXR5ID4gMCkgewotICAgICAgICAgICAgICAgIGNoaWxkUHJlZmVycmVkU2l6ZSArPSBs
cm91bmRmKGF2YWlsYWJsZUZyZWVTcGFjZSAqIGxvZ2ljYWxQb3NpdGl2ZUZsZXhGb3JDaGlsZChj
aGlsZCkgLyB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHkpOworICAgICAgICAgICAgICAgIGNoaWxk
UHJlZmVycmVkU2l6ZSArPSBscm91bmRmKGF2YWlsYWJsZUZyZWVTcGFjZSAqIHBvc2l0aXZlRmxl
eEZvckNoaWxkKGNoaWxkKSAvIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSk7CiAKICAgICAgICAg
ICAgICAgICBMZW5ndGggY2hpbGRMb2dpY2FsTWF4V2lkdGggPSBpc0hvcml6b250YWxGbG93KCkg
PyBjaGlsZC0+c3R5bGUoKS0+bWF4V2lkdGgoKSA6IGNoaWxkLT5zdHlsZSgpLT5tYXhIZWlnaHQo
KTsKLSAgICAgICAgICAgICAgICBpZiAoIWNoaWxkTG9naWNhbE1heFdpZHRoLmlzVW5kZWZpbmVk
KCkgJiYgY2hpbGRMb2dpY2FsTWF4V2lkdGguaXNTcGVjaWZpZWQoKSAmJiBjaGlsZFByZWZlcnJl
ZFNpemUgPiBjaGlsZExvZ2ljYWxNYXhXaWR0aC5jYWxjVmFsdWUoZmxleGJveEF2YWlsYWJsZUxv
Z2ljYWxXaWR0aCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2hpbGRQcmVmZXJyZWRTaXplID0g
Y2hpbGRMb2dpY2FsTWF4V2lkdGguY2FsY1ZhbHVlKGZsZXhib3hBdmFpbGFibGVMb2dpY2FsV2lk
dGgpOwotICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVGcmVlU3BhY2UgLT0gY2hpbGRQcmVm
ZXJyZWRTaXplIC0gcHJlZmVycmVkTG9naWNhbENvbnRlbnRXaWR0aEZvckZsZXhJdGVtKGNoaWxk
KTsKLSAgICAgICAgICAgICAgICAgICAgdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5IC09IGxvZ2lj
YWxQb3NpdGl2ZUZsZXhGb3JDaGlsZChjaGlsZCk7CisgICAgICAgICAgICAgICAgaWYgKCFjaGls
ZExvZ2ljYWxNYXhXaWR0aC5pc1VuZGVmaW5lZCgpICYmIGNoaWxkTG9naWNhbE1heFdpZHRoLmlz
U3BlY2lmaWVkKCkgJiYgY2hpbGRQcmVmZXJyZWRTaXplID4gY2hpbGRMb2dpY2FsTWF4V2lkdGgu
Y2FsY1ZhbHVlKGZsZXhib3hBdmFpbGFibGVDb250ZW50RXh0ZW50KSkgeworICAgICAgICAgICAg
ICAgICAgICBjaGlsZFByZWZlcnJlZFNpemUgPSBjaGlsZExvZ2ljYWxNYXhXaWR0aC5jYWxjVmFs
dWUoZmxleGJveEF2YWlsYWJsZUNvbnRlbnRFeHRlbnQpOworICAgICAgICAgICAgICAgICAgICBh
dmFpbGFibGVGcmVlU3BhY2UgLT0gY2hpbGRQcmVmZXJyZWRTaXplIC0gcHJlZmVycmVkTWFpbkF4
aXNDb250ZW50RXh0ZW50Rm9yRmxleEl0ZW0oY2hpbGQpOworICAgICAgICAgICAgICAgICAgICB0
b3RhbFBvc2l0aXZlRmxleGliaWxpdHkgLT0gcG9zaXRpdmVGbGV4Rm9yQ2hpbGQoY2hpbGQpOwog
CiAgICAgICAgICAgICAgICAgICAgIGluZmxleGlibGVJdGVtcy5zZXQoY2hpbGQsIGNoaWxkUHJl
ZmVycmVkU2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGF2YWlsYWJsZUZyZWVTcGFjZSA8IDAg
JiYgdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5ID4gMCkgewotICAgICAgICAgICAgICAgIGNoaWxk
UHJlZmVycmVkU2l6ZSArPSBscm91bmRmKGF2YWlsYWJsZUZyZWVTcGFjZSAqIGxvZ2ljYWxOZWdh
dGl2ZUZsZXhGb3JDaGlsZChjaGlsZCkgLyB0b3RhbE5lZ2F0aXZlRmxleGliaWxpdHkpOworICAg
ICAgICAgICAgICAgIGNoaWxkUHJlZmVycmVkU2l6ZSArPSBscm91bmRmKGF2YWlsYWJsZUZyZWVT
cGFjZSAqIG5lZ2F0aXZlRmxleEZvckNoaWxkKGNoaWxkKSAvIHRvdGFsTmVnYXRpdmVGbGV4aWJp
bGl0eSk7CiAKICAgICAgICAgICAgICAgICBMZW5ndGggY2hpbGRMb2dpY2FsTWluV2lkdGggPSBp
c0hvcml6b250YWxGbG93KCkgPyBjaGlsZC0+c3R5bGUoKS0+bWluV2lkdGgoKSA6IGNoaWxkLT5z
dHlsZSgpLT5taW5IZWlnaHQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNoaWxkTG9naWNhbE1p
bldpZHRoLmlzVW5kZWZpbmVkKCkgJiYgY2hpbGRMb2dpY2FsTWluV2lkdGguaXNTcGVjaWZpZWQo
KSAmJiBjaGlsZFByZWZlcnJlZFNpemUgPCBjaGlsZExvZ2ljYWxNaW5XaWR0aC5jYWxjVmFsdWUo
ZmxleGJveEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2hp
bGRQcmVmZXJyZWRTaXplID0gY2hpbGRMb2dpY2FsTWluV2lkdGguY2FsY1ZhbHVlKGZsZXhib3hB
dmFpbGFibGVMb2dpY2FsV2lkdGgpOwotICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVGcmVl
U3BhY2UgKz0gcHJlZmVycmVkTG9naWNhbENvbnRlbnRXaWR0aEZvckZsZXhJdGVtKGNoaWxkKSAt
IGNoaWxkUHJlZmVycmVkU2l6ZTsKLSAgICAgICAgICAgICAgICAgICAgdG90YWxOZWdhdGl2ZUZs
ZXhpYmlsaXR5IC09IGxvZ2ljYWxOZWdhdGl2ZUZsZXhGb3JDaGlsZChjaGlsZCk7CisgICAgICAg
ICAgICAgICAgaWYgKCFjaGlsZExvZ2ljYWxNaW5XaWR0aC5pc1VuZGVmaW5lZCgpICYmIGNoaWxk
TG9naWNhbE1pbldpZHRoLmlzU3BlY2lmaWVkKCkgJiYgY2hpbGRQcmVmZXJyZWRTaXplIDwgY2hp
bGRMb2dpY2FsTWluV2lkdGguY2FsY1ZhbHVlKGZsZXhib3hBdmFpbGFibGVDb250ZW50RXh0ZW50
KSkgeworICAgICAgICAgICAgICAgICAgICBjaGlsZFByZWZlcnJlZFNpemUgPSBjaGlsZExvZ2lj
YWxNaW5XaWR0aC5jYWxjVmFsdWUoZmxleGJveEF2YWlsYWJsZUNvbnRlbnRFeHRlbnQpOworICAg
ICAgICAgICAgICAgICAgICBhdmFpbGFibGVGcmVlU3BhY2UgKz0gcHJlZmVycmVkTWFpbkF4aXND
b250ZW50RXh0ZW50Rm9yRmxleEl0ZW0oY2hpbGQpIC0gY2hpbGRQcmVmZXJyZWRTaXplOworICAg
ICAgICAgICAgICAgICAgICB0b3RhbE5lZ2F0aXZlRmxleGliaWxpdHkgLT0gbmVnYXRpdmVGbGV4
Rm9yQ2hpbGQoY2hpbGQpOwogCiAgICAgICAgICAgICAgICAgICAgIGluZmxleGlibGVJdGVtcy5z
ZXQoY2hpbGQsIGNoaWxkUHJlZmVycmVkU2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTY1NiwzOSArNjU1LDM5IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6Omxh
eW91dEFuZFBsYWNlQ2hpbGRyZW5JbmxpbmVEaXJlY3Rpb24oRmxleE9yZGVySXRlcmF0b3ImCiAg
ICAgfQogCiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsVG9wID0gZmxvd0F3YXJlQm9yZGVyQmVmb3Jl
KCkgKyBmbG93QXdhcmVQYWRkaW5nQmVmb3JlKCk7Ci0gICAgTGF5b3V0VW5pdCB0b3RhbExvZ2lj
YWxXaWR0aCA9IGZsb3dBd2FyZUxvZ2ljYWxXaWR0aCgpOwotICAgIGlmIChpc0Zsb3dBd2FyZUxv
Z2ljYWxIZWlnaHRBdXRvKCkpCi0gICAgICAgIHNldEZsb3dBd2FyZUxvZ2ljYWxIZWlnaHQoMCk7
CisgICAgTGF5b3V0VW5pdCB0b3RhbE1haW5FeHRlbnQgPSBtYWluQXhpc0V4dGVudCgpOworICAg
IGlmIChjcm9zc0F4aXNMZW5ndGgoKS5pc0F1dG8oKSkKKyAgICAgICAgc2V0Q3Jvc3NFeHRlbnQo
MCk7CiAgICAgTGF5b3V0VW5pdCBtYXhBc2NlbnQgPSAwLCBtYXhEZXNjZW50ID0gMDsgLy8gVXNl
ZCB3aGVuIGZsZXgtYWxpZ246IGJhc2VsaW5lLgogICAgIHNpemVfdCBpID0gMDsKICAgICBmb3Ig
KFJlbmRlckJveCogY2hpbGQgPSBpdGVyYXRvci5maXJzdCgpOyBjaGlsZDsgY2hpbGQgPSBpdGVy
YXRvci5uZXh0KCksICsraSkgewotICAgICAgICBMYXlvdXRVbml0IGNoaWxkUHJlZmVycmVkU2l6
ZSA9IGNoaWxkU2l6ZXNbaV0gKyBsb2dpY2FsQm9yZGVyQW5kUGFkZGluZ1dpZHRoRm9yQ2hpbGQo
Y2hpbGQpOworICAgICAgICBMYXlvdXRVbml0IGNoaWxkUHJlZmVycmVkU2l6ZSA9IGNoaWxkU2l6
ZXNbaV0gKyBtYWluQXhpc0JvcmRlckFuZFBhZGRpbmdFeHRlbnRGb3JDaGlsZChjaGlsZCk7CiAg
ICAgICAgIHNldExvZ2ljYWxPdmVycmlkZVNpemUoY2hpbGQsIGNoaWxkUHJlZmVycmVkU2l6ZSk7
CiAgICAgICAgIGNoaWxkLT5zZXRDaGlsZE5lZWRzTGF5b3V0KHRydWUpOwogICAgICAgICBjaGls
ZC0+bGF5b3V0SWZOZWVkZWQoKTsKIAogICAgICAgICBpZiAoY2hpbGQtPnN0eWxlKCktPmZsZXhB
bGlnbigpID09IEFsaWduQmFzZWxpbmUpIHsKICAgICAgICAgICAgIExheW91dFVuaXQgYXNjZW50
ID0gbWFyZ2luQm94QXNjZW50KGNoaWxkKTsKLSAgICAgICAgICAgIExheW91dFVuaXQgZGVzY2Vu
dCA9IChmbG93QXdhcmVNYXJnaW5Mb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoY2hpbGQpICsgZmxvd0F3
YXJlTG9naWNhbEhlaWdodEZvckNoaWxkKGNoaWxkKSkgLSBhc2NlbnQ7CisgICAgICAgICAgICBM
YXlvdXRVbml0IGRlc2NlbnQgPSAoY3Jvc3NBeGlzTWFyZ2luRXh0ZW50Rm9yQ2hpbGQoY2hpbGQp
ICsgY3Jvc3NFeHRlbnRGb3JDaGlsZChjaGlsZCkpIC0gYXNjZW50OwogCiAgICAgICAgICAgICBt
YXhBc2NlbnQgPSBzdGQ6Om1heChtYXhBc2NlbnQsIGFzY2VudCk7CiAgICAgICAgICAgICBtYXhE
ZXNjZW50ID0gc3RkOjptYXgobWF4RGVzY2VudCwgZGVzY2VudCk7CiAKICAgICAgICAgICAgIC8v
IEZJWE1FOiBhZGQgZmxvd0F3YXJlU2Nyb2xsYmFyTG9naWNhbEhlaWdodC4KLSAgICAgICAgICAg
IGlmIChpc0Zsb3dBd2FyZUxvZ2ljYWxIZWlnaHRBdXRvKCkpCi0gICAgICAgICAgICAgICAgc2V0
Rmxvd0F3YXJlTG9naWNhbEhlaWdodChzdGQ6Om1heChmbG93QXdhcmVMb2dpY2FsSGVpZ2h0KCks
IGZsb3dBd2FyZUJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkgKyBmbG93QXdhcmVNYXJn
aW5Mb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoY2hpbGQpICsgbWF4QXNjZW50ICsgbWF4RGVzY2VudCAr
IHNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKSkpOwotICAgICAgICB9IGVsc2UgaWYgKGlzRmxvd0F3
YXJlTG9naWNhbEhlaWdodEF1dG8oKSkKLSAgICAgICAgICAgIHNldEZsb3dBd2FyZUxvZ2ljYWxI
ZWlnaHQoc3RkOjptYXgoZmxvd0F3YXJlTG9naWNhbEhlaWdodCgpLCBmbG93QXdhcmVCb3JkZXJB
bmRQYWRkaW5nTG9naWNhbEhlaWdodCgpICsgZmxvd0F3YXJlTWFyZ2luTG9naWNhbEhlaWdodEZv
ckNoaWxkKGNoaWxkKSArIGZsb3dBd2FyZUxvZ2ljYWxIZWlnaHRGb3JDaGlsZChjaGlsZCkgKyBz
Y3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCkpKTsKKyAgICAgICAgICAgIGlmIChjcm9zc0F4aXNMZW5n
dGgoKS5pc0F1dG8oKSkKKyAgICAgICAgICAgICAgICBzZXRDcm9zc0V4dGVudChzdGQ6Om1heChj
cm9zc0F4aXNFeHRlbnQoKSwgY3Jvc3NBeGlzQm9yZGVyQW5kUGFkZGluZ0V4dGVudCgpICsgY3Jv
c3NBeGlzTWFyZ2luRXh0ZW50Rm9yQ2hpbGQoY2hpbGQpICsgbWF4QXNjZW50ICsgbWF4RGVzY2Vu
dCArIHNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKSkpOworICAgICAgICB9IGVsc2UgaWYgKGNyb3Nz
QXhpc0xlbmd0aCgpLmlzQXV0bygpKQorICAgICAgICAgICAgc2V0Q3Jvc3NFeHRlbnQoc3RkOjpt
YXgoY3Jvc3NBeGlzRXh0ZW50KCksIGNyb3NzQXhpc0JvcmRlckFuZFBhZGRpbmdFeHRlbnQoKSAr
IGNyb3NzQXhpc01hcmdpbkV4dGVudEZvckNoaWxkKGNoaWxkKSArIGNyb3NzRXh0ZW50Rm9yQ2hp
bGQoY2hpbGQpICsgc2Nyb2xsYmFyTG9naWNhbEhlaWdodCgpKSk7CiAKICAgICAgICAgc3RhcnRF
ZGdlICs9IGZsb3dBd2FyZU1hcmdpblN0YXJ0Rm9yQ2hpbGQoY2hpbGQpOwogCi0gICAgICAgIExh
eW91dFVuaXQgY2hpbGRMb2dpY2FsV2lkdGggPSBmbG93QXdhcmVMb2dpY2FsV2lkdGhGb3JDaGls
ZChjaGlsZCk7CisgICAgICAgIExheW91dFVuaXQgY2hpbGRNYWluRXh0ZW50ID0gbWFpbkV4dGVu
dEZvckNoaWxkKGNoaWxkKTsKICAgICAgICAgYm9vbCBzaG91bGRGbGlwSW5saW5lRGlyZWN0aW9u
ID0gaXNDb2x1bW5GbG93KCkgPyB0cnVlIDogaXNMZWZ0VG9SaWdodEZsb3coKTsKLSAgICAgICAg
TGF5b3V0VW5pdCBsb2dpY2FsTGVmdCA9IHNob3VsZEZsaXBJbmxpbmVEaXJlY3Rpb24gPyBzdGFy
dEVkZ2UgOiB0b3RhbExvZ2ljYWxXaWR0aCAtIHN0YXJ0RWRnZSAtIGNoaWxkTG9naWNhbFdpZHRo
OworICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0ID0gc2hvdWxkRmxpcElubGluZURpcmVj
dGlvbiA/IHN0YXJ0RWRnZSA6IHRvdGFsTWFpbkV4dGVudCAtIHN0YXJ0RWRnZSAtIGNoaWxkTWFp
bkV4dGVudDsKIAogICAgICAgICAvLyBGSVhNRTogU3VwcG9ydGluZyBsYXlvdXQgZGVsdGFzLgot
ICAgICAgICBzZXRGbG93QXdhcmVMb2dpY2FsTG9jYXRpb25Gb3JDaGlsZChjaGlsZCwgSW50UG9p
bnQobG9naWNhbExlZnQsIGxvZ2ljYWxUb3AgKyBmbG93QXdhcmVNYXJnaW5CZWZvcmVGb3JDaGls
ZChjaGlsZCkpKTsKLSAgICAgICAgc3RhcnRFZGdlICs9IGNoaWxkTG9naWNhbFdpZHRoICsgZmxv
d0F3YXJlTWFyZ2luRW5kRm9yQ2hpbGQoY2hpbGQpOworICAgICAgICBzZXRGbG93QXdhcmVMb2Nh
dGlvbkZvckNoaWxkKGNoaWxkLCBJbnRQb2ludChsb2dpY2FsTGVmdCwgbG9naWNhbFRvcCArIGZs
b3dBd2FyZU1hcmdpbkJlZm9yZUZvckNoaWxkKGNoaWxkKSkpOworICAgICAgICBzdGFydEVkZ2Ug
Kz0gY2hpbGRNYWluRXh0ZW50ICsgZmxvd0F3YXJlTWFyZ2luRW5kRm9yQ2hpbGQoY2hpbGQpOwog
CiAgICAgICAgIGlmIChoYXNQYWNraW5nU3BhY2UoYXZhaWxhYmxlRnJlZVNwYWNlLCB0b3RhbFBv
c2l0aXZlRmxleGliaWxpdHkpICYmIHN0eWxlKCktPmZsZXhQYWNrKCkgPT0gUGFja0p1c3RpZnkg
JiYgY2hpbGRTaXplcy5zaXplKCkgPiAxKQogICAgICAgICAgICAgc3RhcnRFZGdlICs9IGF2YWls
YWJsZUZyZWVTcGFjZSAvIChjaGlsZFNpemVzLnNpemUoKSAtIDEpOwpAQCAtNjk3LDExICs2OTYs
MTEgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0QW5kUGxhY2VDaGlsZHJlbklubGlu
ZURpcmVjdGlvbihGbGV4T3JkZXJJdGVyYXRvciYKICAgICBhbGlnbkNoaWxkcmVuQmxvY2tEaXJl
Y3Rpb24oaXRlcmF0b3IsIG1heEFzY2VudCk7CiB9CiAKLXZvaWQgUmVuZGVyRmxleGlibGVCb3g6
OmFkanVzdExvY2F0aW9uTG9naWNhbFRvcEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQsIExheW91
dFVuaXQgZGVsdGEpCit2b2lkIFJlbmRlckZsZXhpYmxlQm94OjphZGp1c3RBbGlnbm1lbnRGb3JD
aGlsZChSZW5kZXJCb3gqIGNoaWxkLCBMYXlvdXRVbml0IGRlbHRhKQogewogICAgIExheW91dFJl
Y3Qgb2xkUmVjdCA9IGNoaWxkLT5mcmFtZVJlY3QoKTsKIAotICAgIHNldEZsb3dBd2FyZUxvZ2lj
YWxMb2NhdGlvbkZvckNoaWxkKGNoaWxkLCBmbG93QXdhcmVMb2dpY2FsTG9jYXRpb25Gb3JDaGls
ZChjaGlsZCkgKyBMYXlvdXRTaXplKDAsIGRlbHRhKSk7CisgICAgc2V0Rmxvd0F3YXJlTG9jYXRp
b25Gb3JDaGlsZChjaGlsZCwgZmxvd0F3YXJlTG9jYXRpb25Gb3JDaGlsZChjaGlsZCkgKyBMYXlv
dXRTaXplKDAsIGRlbHRhKSk7CiAKICAgICAvLyBJZiB0aGUgY2hpbGQgbW92ZWQsIHdlIGhhdmUg
dG8gcmVwYWludCBpdCBhcyB3ZWxsIGFzIGFueSBmbG9hdGluZy9wb3NpdGlvbmVkCiAgICAgLy8g
ZGVzY2VuZGFudHMuIEFuIGV4Y2VwdGlvbiBpcyBpZiB3ZSBuZWVkIGEgbGF5b3V0LiBJbiB0aGlz
IGNhc2UsIHdlIGtub3cgd2UncmUgZ29pbmcgdG8KQEAgLTcxMiwxNCArNzExLDE0IEBAIHZvaWQg
UmVuZGVyRmxleGlibGVCb3g6OmFkanVzdExvY2F0aW9uTG9naWNhbFRvcEZvckNoaWxkKFJlbmRl
ckJveCogY2hpbGQsIExheW91CiAKIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmFsaWduQ2hpbGRy
ZW5CbG9ja0RpcmVjdGlvbihGbGV4T3JkZXJJdGVyYXRvciYgaXRlcmF0b3IsIExheW91dFVuaXQg
bWF4QXNjZW50KQogewotICAgIExheW91dFVuaXQgbG9naWNhbEhlaWdodCA9IGZsb3dBd2FyZUxv
Z2ljYWxIZWlnaHQoKTsKKyAgICBMYXlvdXRVbml0IGNyb3NzRXh0ZW50ID0gY3Jvc3NBeGlzRXh0
ZW50KCk7CiAKICAgICBmb3IgKFJlbmRlckJveCogY2hpbGQgPSBpdGVyYXRvci5maXJzdCgpOyBj
aGlsZDsgY2hpbGQgPSBpdGVyYXRvci5uZXh0KCkpIHsKICAgICAgICAgLy8gZGlyZWN0aW9uOnJ0
bCArIGZsZXgtZmxvdzpjb2x1bW4gbWVhbnMgdGhlIGNyb3NzLWF4aXMgZGlyZWN0aW9uIGlzIGZs
aXBwZWQuCiAgICAgICAgIGlmICghc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpICYm
IGlzQ29sdW1uRmxvdygpKSB7Ci0gICAgICAgICAgICBMYXlvdXRQb2ludCBsb2NhdGlvbiA9IGZs
b3dBd2FyZUxvZ2ljYWxMb2NhdGlvbkZvckNoaWxkKGNoaWxkKTsKLSAgICAgICAgICAgIGxvY2F0
aW9uLnNldFkobG9naWNhbEhlaWdodCAtIGZsb3dBd2FyZUxvZ2ljYWxIZWlnaHRGb3JDaGlsZChj
aGlsZCkgLSBsb2NhdGlvbi55KCkpOwotICAgICAgICAgICAgc2V0Rmxvd0F3YXJlTG9naWNhbExv
Y2F0aW9uRm9yQ2hpbGQoY2hpbGQsIGxvY2F0aW9uKTsKKyAgICAgICAgICAgIExheW91dFBvaW50
IGxvY2F0aW9uID0gZmxvd0F3YXJlTG9jYXRpb25Gb3JDaGlsZChjaGlsZCk7CisgICAgICAgICAg
ICBsb2NhdGlvbi5zZXRZKGNyb3NzRXh0ZW50IC0gY3Jvc3NFeHRlbnRGb3JDaGlsZChjaGlsZCkg
LSBsb2NhdGlvbi55KCkpOworICAgICAgICAgICAgc2V0Rmxvd0F3YXJlTG9jYXRpb25Gb3JDaGls
ZChjaGlsZCwgbG9jYXRpb24pOwogICAgICAgICB9CiAKICAgICAgICAgLy8gRklYTUU6IE1ha2Ug
c3VyZSB0aGlzIGRvZXMgdGhlIHJpZ2h0IHRoaW5nIHdpdGggY29sdW1uIGZsb3dzLgpAQCAtNzI4
LDcgKzcyNyw3IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmFsaWduQ2hpbGRyZW5CbG9ja0Rp
cmVjdGlvbihGbGV4T3JkZXJJdGVyYXRvciYgaXRlcmF0b3IsCiAgICAgICAgICAgICBMZW5ndGgg
aGVpZ2h0ID0gaXNIb3Jpem9udGFsRmxvdygpID8gY2hpbGQtPnN0eWxlKCktPmhlaWdodCgpIDog
Y2hpbGQtPnN0eWxlKCktPndpZHRoKCk7CiAgICAgICAgICAgICBpZiAoaGVpZ2h0LmlzQXV0bygp
KSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IENsYW1wIHRvIG1heC1oZWlnaHQgb25jZSBp
dCdzIHNwZWMnZWQgKHNob3VsZCB3ZSBhbGlnbiB0b3dhcmRzIHRoZSBzdGFydCBvciBjZW50ZXI/
KS4KLSAgICAgICAgICAgICAgICBMYXlvdXRVbml0IHN0cmV0Y2hlZEhlaWdodCA9IGxvZ2ljYWxI
ZWlnaHRGb3JDaGlsZChjaGlsZCkgKyBSZW5kZXJGbGV4aWJsZUJveDo6YXZhaWxhYmxlTG9naWNh
bEhlaWdodEZvckNoaWxkKGNoaWxkKTsKKyAgICAgICAgICAgICAgICBMYXlvdXRVbml0IHN0cmV0
Y2hlZEhlaWdodCA9IGxvZ2ljYWxIZWlnaHRGb3JDaGlsZChjaGlsZCkgKyBSZW5kZXJGbGV4aWJs
ZUJveDo6YXZhaWxhYmxlQWxpZ25tZW50U3BhY2VGb3JDaGlsZChjaGlsZCk7CiAgICAgICAgICAg
ICAgICAgaWYgKGlzSG9yaXpvbnRhbEZsb3coKSkKICAgICAgICAgICAgICAgICAgICAgY2hpbGQt
PnNldEhlaWdodChzdHJldGNoZWRIZWlnaHQpOwogICAgICAgICAgICAgICAgIGVsc2UKQEAgLTcz
OSwxNCArNzM4LDE0IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmFsaWduQ2hpbGRyZW5CbG9j
a0RpcmVjdGlvbihGbGV4T3JkZXJJdGVyYXRvciYgaXRlcmF0b3IsCiAgICAgICAgIGNhc2UgQWxp
Z25TdGFydDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFsaWduRW5kOgotICAg
ICAgICAgICAgYWRqdXN0TG9jYXRpb25Mb2dpY2FsVG9wRm9yQ2hpbGQoY2hpbGQsIFJlbmRlckZs
ZXhpYmxlQm94OjphdmFpbGFibGVMb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoY2hpbGQpKTsKKyAgICAg
ICAgICAgIGFkanVzdEFsaWdubWVudEZvckNoaWxkKGNoaWxkLCBSZW5kZXJGbGV4aWJsZUJveDo6
YXZhaWxhYmxlQWxpZ25tZW50U3BhY2VGb3JDaGlsZChjaGlsZCkpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQWxpZ25DZW50ZXI6Ci0gICAgICAgICAgICBhZGp1c3RMb2NhdGlv
bkxvZ2ljYWxUb3BGb3JDaGlsZChjaGlsZCwgUmVuZGVyRmxleGlibGVCb3g6OmF2YWlsYWJsZUxv
Z2ljYWxIZWlnaHRGb3JDaGlsZChjaGlsZCkgLyAyKTsKKyAgICAgICAgICAgIGFkanVzdEFsaWdu
bWVudEZvckNoaWxkKGNoaWxkLCBSZW5kZXJGbGV4aWJsZUJveDo6YXZhaWxhYmxlQWxpZ25tZW50
U3BhY2VGb3JDaGlsZChjaGlsZCkgLyAyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIEFsaWduQmFzZWxpbmU6IHsKICAgICAgICAgICAgIExheW91dFVuaXQgYXNjZW50ID0gbWFy
Z2luQm94QXNjZW50KGNoaWxkKTsKLSAgICAgICAgICAgIGFkanVzdExvY2F0aW9uTG9naWNhbFRv
cEZvckNoaWxkKGNoaWxkLCBtYXhBc2NlbnQgLSBhc2NlbnQpOworICAgICAgICAgICAgYWRqdXN0
QWxpZ25tZW50Rm9yQ2hpbGQoY2hpbGQsIG1heEFzY2VudCAtIGFzY2VudCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGbGV4aWJsZUJveC5oCmluZGV4IDRkYzE5NDE3OTIxMjNhY2E0NTAxMWFjNTk3Mjk4
NzEzMjEwZjMzODcuLjgyNTZhYWRmMDEyODI0MDIxOTVjMjdjYzExODk5M2FmOTdjMWE1M2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCkBAIC01Nywy
MCArNTcsMjAgQEAgcHJpdmF0ZToKICAgICBib29sIGlzQ29sdW1uRmxvdygpIGNvbnN0OwogICAg
IGJvb2wgaXNIb3Jpem9udGFsRmxvdygpIGNvbnN0OwogICAgIGJvb2wgaXNMZWZ0VG9SaWdodEZs
b3coKSBjb25zdDsKLSAgICBib29sIGlzRmxvd0F3YXJlTG9naWNhbEhlaWdodEF1dG8oKSBjb25z
dDsKLSAgICBMZW5ndGggZmxvd0F3YXJlTG9naWNhbFdpZHRoTGVuZ3RoRm9yQ2hpbGQoUmVuZGVy
Qm94KiBjaGlsZCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRGbG93QXdhcmVMb2dpY2FsSGVpZ2h0KExh
eW91dFVuaXQpOwotICAgIExheW91dFVuaXQgZmxvd0F3YXJlTG9naWNhbEhlaWdodEZvckNoaWxk
KFJlbmRlckJveCogY2hpbGQpOwotICAgIExheW91dFVuaXQgZmxvd0F3YXJlTG9naWNhbFdpZHRo
Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCk7Ci0gICAgTGF5b3V0VW5pdCBmbG93QXdhcmVMb2dp
Y2FsSGVpZ2h0KCkgY29uc3Q7Ci0gICAgTGF5b3V0VW5pdCBmbG93QXdhcmVMb2dpY2FsV2lkdGgo
KSBjb25zdDsKLSAgICBMYXlvdXRVbml0IGZsb3dBd2FyZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KCkg
Y29uc3Q7Ci0gICAgTGF5b3V0VW5pdCBmbG93QXdhcmVDb250ZW50TG9naWNhbFdpZHRoKCkgY29u
c3Q7CisgICAgTGVuZ3RoIGNyb3NzQXhpc0xlbmd0aCgpIGNvbnN0OworICAgIExlbmd0aCBtYWlu
QXhpc0xlbmd0aEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpIGNvbnN0OworICAgIHZvaWQgc2V0
Q3Jvc3NFeHRlbnQoTGF5b3V0VW5pdCk7CisgICAgTGF5b3V0VW5pdCBjcm9zc0V4dGVudEZvckNo
aWxkKFJlbmRlckJveCogY2hpbGQpOworICAgIExheW91dFVuaXQgbWFpbkV4dGVudEZvckNoaWxk
KFJlbmRlckJveCogY2hpbGQpOworICAgIExheW91dFVuaXQgY3Jvc3NBeGlzRXh0ZW50KCkgY29u
c3Q7CisgICAgTGF5b3V0VW5pdCBtYWluQXhpc0V4dGVudCgpIGNvbnN0OworICAgIExheW91dFVu
aXQgY3Jvc3NBeGlzQ29udGVudEV4dGVudCgpIGNvbnN0OworICAgIExheW91dFVuaXQgbWFpbkF4
aXNDb250ZW50RXh0ZW50KCkgY29uc3Q7CiAgICAgV3JpdGluZ01vZGUgdHJhbnNmb3JtZWRXcml0
aW5nTW9kZSgpIGNvbnN0OwogICAgIExheW91dFVuaXQgZmxvd0F3YXJlQm9yZGVyU3RhcnQoKSBj
b25zdDsKICAgICBMYXlvdXRVbml0IGZsb3dBd2FyZUJvcmRlckJlZm9yZSgpIGNvbnN0OwogICAg
IExheW91dFVuaXQgZmxvd0F3YXJlQm9yZGVyQWZ0ZXIoKSBjb25zdDsKLSAgICBMYXlvdXRVbml0
IGZsb3dBd2FyZUJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkgY29uc3Q7CisgICAgTGF5
b3V0VW5pdCBjcm9zc0F4aXNCb3JkZXJBbmRQYWRkaW5nRXh0ZW50KCkgY29uc3Q7CiAgICAgTGF5
b3V0VW5pdCBmbG93QXdhcmVQYWRkaW5nU3RhcnQoKSBjb25zdDsKICAgICBMYXlvdXRVbml0IGZs
b3dBd2FyZVBhZGRpbmdCZWZvcmUoKSBjb25zdDsKICAgICBMYXlvdXRVbml0IGZsb3dBd2FyZVBh
ZGRpbmdBZnRlcigpIGNvbnN0OwpAQCAtNzgsMjggKzc4LDI4IEBAIHByaXZhdGU6CiAgICAgTGF5
b3V0VW5pdCBmbG93QXdhcmVNYXJnaW5FbmRGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKSBjb25z
dDsKICAgICBMYXlvdXRVbml0IGZsb3dBd2FyZU1hcmdpbkJlZm9yZUZvckNoaWxkKFJlbmRlckJv
eCogY2hpbGQpIGNvbnN0OwogICAgIExheW91dFVuaXQgZmxvd0F3YXJlTWFyZ2luQWZ0ZXJGb3JD
aGlsZChSZW5kZXJCb3gqIGNoaWxkKSBjb25zdDsKLSAgICBMYXlvdXRVbml0IGZsb3dBd2FyZU1h
cmdpbkxvZ2ljYWxIZWlnaHRGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKSBjb25zdDsKLSAgICBM
YXlvdXRQb2ludCBmbG93QXdhcmVMb2dpY2FsTG9jYXRpb25Gb3JDaGlsZChSZW5kZXJCb3gqIGNo
aWxkKSBjb25zdDsKKyAgICBMYXlvdXRVbml0IGNyb3NzQXhpc01hcmdpbkV4dGVudEZvckNoaWxk
KFJlbmRlckJveCogY2hpbGQpIGNvbnN0OworICAgIExheW91dFBvaW50IGZsb3dBd2FyZUxvY2F0
aW9uRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkgY29uc3Q7CiAgICAgdm9pZCBzZXRGbG93QXdh
cmVNYXJnaW5TdGFydEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQsIExheW91dFVuaXQpOwogICAg
IHZvaWQgc2V0Rmxvd0F3YXJlTWFyZ2luRW5kRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgTGF5
b3V0VW5pdCk7CiAgICAgLy8gRklYTUU6IFN1cHBvcnRpbmcgbGF5b3V0IGRlbHRhcy4KLSAgICB2
b2lkIHNldEZsb3dBd2FyZUxvZ2ljYWxMb2NhdGlvbkZvckNoaWxkKFJlbmRlckJveCogY2hpbGQs
IGNvbnN0IExheW91dFBvaW50Jik7Ci0gICAgdm9pZCBhZGp1c3RMb2NhdGlvbkxvZ2ljYWxUb3BG
b3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkLCBMYXlvdXRVbml0KTsKLSAgICBMYXlvdXRVbml0IGxv
Z2ljYWxCb3JkZXJBbmRQYWRkaW5nV2lkdGhGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKSBjb25z
dDsKLSAgICBMYXlvdXRVbml0IGxvZ2ljYWxTY3JvbGxiYXJIZWlnaHRGb3JDaGlsZChSZW5kZXJC
b3gqIGNoaWxkKSBjb25zdDsKKyAgICB2b2lkIHNldEZsb3dBd2FyZUxvY2F0aW9uRm9yQ2hpbGQo
UmVuZGVyQm94KiBjaGlsZCwgY29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2b2lkIGFkanVzdEFs
aWdubWVudEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQsIExheW91dFVuaXQpOworICAgIExheW91
dFVuaXQgbWFpbkF4aXNCb3JkZXJBbmRQYWRkaW5nRXh0ZW50Rm9yQ2hpbGQoUmVuZGVyQm94KiBj
aGlsZCkgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBtYWluQXhpc1Njcm9sbGJhckV4dGVudEZvckNo
aWxkKFJlbmRlckJveCogY2hpbGQpIGNvbnN0OwogICAgIExlbmd0aCBtYXJnaW5TdGFydFN0eWxl
Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkgY29uc3Q7CiAgICAgTGVuZ3RoIG1hcmdpbkVuZFN0
eWxlRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkgY29uc3Q7Ci0gICAgTGF5b3V0VW5pdCBwcmVm
ZXJyZWRMb2dpY2FsQ29udGVudFdpZHRoRm9yRmxleEl0ZW0oUmVuZGVyQm94KiBjaGlsZCkgY29u
c3Q7CisgICAgTGF5b3V0VW5pdCBwcmVmZXJyZWRNYWluQXhpc0NvbnRlbnRFeHRlbnRGb3JGbGV4
SXRlbShSZW5kZXJCb3gqIGNoaWxkKSBjb25zdDsKIAogICAgIHZvaWQgbGF5b3V0SW5saW5lRGly
ZWN0aW9uKGJvb2wgcmVsYXlvdXRDaGlsZHJlbik7CiAKLSAgICBmbG9hdCBsb2dpY2FsUG9zaXRp
dmVGbGV4Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkgY29uc3Q7Ci0gICAgZmxvYXQgbG9naWNh
bE5lZ2F0aXZlRmxleEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpIGNvbnN0OworICAgIGZsb2F0
IHBvc2l0aXZlRmxleEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpIGNvbnN0OworICAgIGZsb2F0
IG5lZ2F0aXZlRmxleEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpIGNvbnN0OwogCi0gICAgTGF5
b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoUmVuZGVyQm94Kik7CisgICAg
TGF5b3V0VW5pdCBhdmFpbGFibGVBbGlnbm1lbnRTcGFjZUZvckNoaWxkKFJlbmRlckJveCopOwog
ICAgIExheW91dFVuaXQgbWFyZ2luQm94QXNjZW50KFJlbmRlckJveCopOwogCi0gICAgdm9pZCBj
b21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRoKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgVHJlZU9y
ZGVySXRlcmF0b3ImLCBMYXlvdXRVbml0JiwgZmxvYXQmIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0
eSwgZmxvYXQmIHRvdGFsTmVnYXRpdmVGbGV4aWJpbGl0eSk7CisgICAgdm9pZCBjb21wdXRlUHJl
ZmVycmVkTWFpbkF4aXNFeHRlbnQoYm9vbCByZWxheW91dENoaWxkcmVuLCBUcmVlT3JkZXJJdGVy
YXRvciYsIExheW91dFVuaXQmLCBmbG9hdCYgdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5LCBmbG9h
dCYgdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5KTsKICAgICBib29sIHJ1bkZyZWVTcGFjZUFsbG9j
YXRpb25BbGdvcml0aG1JbmxpbmVEaXJlY3Rpb24oRmxleE9yZGVySXRlcmF0b3ImLCBMYXlvdXRV
bml0JiBhdmFpbGFibGVGcmVlU3BhY2UsIGZsb2F0JiB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHks
IGZsb2F0JiB0b3RhbE5lZ2F0aXZlRmxleGliaWxpdHksIEluZmxleGlibGVGbGV4SXRlbVNpemUm
LCBXVEY6OlZlY3RvcjxMYXlvdXRVbml0PiYgY2hpbGRTaXplcyk7CiAgICAgdm9pZCBzZXRMb2dp
Y2FsT3ZlcnJpZGVTaXplKFJlbmRlckJveCogY2hpbGQsIExheW91dFVuaXQgY2hpbGRQcmVmZXJy
ZWRTaXplKTsKICAgICB2b2lkIGxheW91dEFuZFBsYWNlQ2hpbGRyZW5JbmxpbmVEaXJlY3Rpb24o
RmxleE9yZGVySXRlcmF0b3ImLCBjb25zdCBXVEY6OlZlY3RvcjxMYXlvdXRVbml0PiYgY2hpbGRT
aXplcywgTGF5b3V0VW5pdCBhdmFpbGFibGVGcmVlU3BhY2UsIGZsb2F0IHRvdGFsUG9zaXRpdmVG
bGV4aWJpbGl0eSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112620</attachid>
            <date>2011-10-26 16:50:41 -0700</date>
            <delta_ts>2011-10-26 16:58:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70977-20111026165046.patch</filename>
            <type>text/plain</type>
            <size>30682</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTg0OTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmYzNmOTU2ZTlmOGYwMjcz
MWY3NjYyNjJhOThhMjY0MDAxMzE3YzFkLi5mMDJlM2ViN2UwMzllNWE0M2ZlOTU3OWNhZmNhM2Nh
MWRjN2NlMTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTEtMTAtMjYgIFRvbnkg
Q2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICB1c2UgbWFpbi9jcm9zcyBpbnN0
ZWFkIG9mIGxvZ2ljYWwgd2lkdGgvaGVpZ2h0IHdoZW4gdGFsa2luZyBhYm91dCBmbG93IGRpcmVj
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA5
NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGbGV4
Ym94IGNvZGUgdXNlcyBsb2dpY2FsIGluIGZ1bmN0aW9uIG5hbWVzIHRvIHJlZmVyIHRvIHRoZSBm
bG93CisgICAgICAgIGRpcmVjdGlvbi4gVGhpcyBpcyBjb25mdXNpbmcgYmVjYXVzZSB3cml0aW5n
IG1vZGUgYWxzbyB1c2VzIGxvZ2ljYWwsCisgICAgICAgIGJ1dCB0aGlzIGlzIGEgZGlmZmVudCB1
c2FnZS4gVG8gYXZvaWQgY29uZnVzaW9uLCBiZSBleHBsaWNpdCBhYm91dAorICAgICAgICBtYWlu
IHZzIGNyb3NzIGF4aXMuIEV4dGVudCBpcyB1c2VkIGluc3RlYWQgb2Ygd2lkdGgvaGVpZ2h0Lgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywganVzdCBhIHJlZmFjdG9yaW5nLgorCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckZsZXhpYmxlQm94OjptYWluQXhpc0xlbmd0aEZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckZsZXhpYmxlQm94Ojpjcm9zc0F4aXNMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRmxleGlibGVCb3g6OnNldENyb3NzRXh0ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckZsZXhpYmxlQm94Ojpjcm9zc0V4dGVudEZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckZsZXhpYmxlQm94OjptYWluRXh0ZW50Rm9yQ2hpbGQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyRmxleGlibGVCb3g6OmNyb3NzQXhpc0V4dGVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJGbGV4aWJsZUJveDo6bWFpbkF4aXNFeHRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRmxleGlibGVCb3g6OmNyb3NzQXhpc0NvbnRlbnRFeHRlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRmxleGlibGVCb3g6Om1haW5BeGlzQ29udGVudEV4dGVudCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6Y3Jvc3NBeGlzQm9yZGVyQW5kUGFkZGluZ0V4
dGVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6Y3Jvc3NBeGlzTWFy
Z2luRXh0ZW50Rm9yQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6
OmZsb3dBd2FyZUxvY2F0aW9uRm9yQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxl
eGlibGVCb3g6OnNldEZsb3dBd2FyZUxvY2F0aW9uRm9yQ2hpbGQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyRmxleGlibGVCb3g6Om1haW5BeGlzQm9yZGVyQW5kUGFkZGluZ0V4dGVudEZvckNo
aWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjptYWluQXhpc1Njcm9s
bGJhckV4dGVudEZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94
OjpwcmVmZXJyZWRNYWluQXhpc0NvbnRlbnRFeHRlbnRGb3JGbGV4SXRlbSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0SW5saW5lRGlyZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94Ojpwb3NpdGl2ZUZsZXhGb3JDaGlsZCk6IFNp
bmNlIGZsZXggb25seQorICAgICAgICAgICAgbWF0dGVycyBpbiB0aGUgbWFpbiBheGlzLCB0aGVy
ZSdzIG5vIHJlYXNvbiB0byBkZWFtYmlndWF0ZSBpdCBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRmxleGlibGVCb3g6Om5lZ2F0aXZlRmxleEZvckNoaWxkKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6YXZhaWxhYmxlQWxpZ25tZW50U3BhY2VGb3JD
aGlsZCk6IEFsaWdubWVudCBpcyBhbHdheXMgCisgICAgICAgICAgICBpbiB0aGUgY3Jvc3MgYXhp
cyBkaXJlY3Rpb24sIHNvIGRvbid0IGluY2x1ZGUgdGhhdCBpbiB0aGUgbWV0aG9kIG5hbWUuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6bWFyZ2luQm94QXNjZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlUHJlZmVycmVkTWFpbkF4
aXNFeHRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OnJ1bkZyZWVT
cGFjZUFsbG9jYXRpb25BbGdvcml0aG1JbmxpbmVEaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyRmxleGlibGVCb3g6OmxheW91dEFuZFBsYWNlQ2hpbGRyZW5JbmxpbmVEaXJlY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmFkanVzdEFsaWdubWVu
dEZvckNoaWxkKTogIEFsaWdubWVudCBpcyBhbHdheXMgCisgICAgICAgICAgICBpbiB0aGUgY3Jv
c3MgYXhpcyBkaXJlY3Rpb24sIHNvIGRvbid0IGluY2x1ZGUgdGhhdCBpbiB0aGUgbWV0aG9kIG5h
bWUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6YWxpZ25DaGlsZHJlbkJs
b2NrRGlyZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaDoK
KwogMjAxMS0xMC0yNiAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAg
ICAgICBJbmNyZWFzZSBTdHJpbmdJbXBsIEZsYWcgQml0cyBmb3IgOCBiaXQgU3RyaW5ncwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKaW5kZXggMGJm
MjkyNzAwZDQ2OWI5MGYyMzA1YWNhYmNlZDBjN2U5NDQ1OTU5Mi4uZjk0ZjY3ZmU1OTY5MmM3YmU4
ZWY5NDBkNmU2YWY4OTI3MzMzZWE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRmxleGlibGVCb3guY3BwCkBAIC0yMjgsNTEgKzIyOCw1MCBAQCBib29sIFJlbmRlckZs
ZXhpYmxlQm94Ojppc0xlZnRUb1JpZ2h0RmxvdygpIGNvbnN0CiAgICAgcmV0dXJuIHN0eWxlKCkt
PmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKIH0KIAotTGVuZ3RoIFJlbmRlckZsZXhpYmxlQm94
OjpmbG93QXdhcmVMb2dpY2FsV2lkdGhMZW5ndGhGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKSBj
b25zdAorTGVuZ3RoIFJlbmRlckZsZXhpYmxlQm94OjptYWluQXhpc0xlbmd0aEZvckNoaWxkKFJl
bmRlckJveCogY2hpbGQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbEZsb3coKSA/
IGNoaWxkLT5zdHlsZSgpLT53aWR0aCgpIDogY2hpbGQtPnN0eWxlKCktPmhlaWdodCgpOwogfQog
Ci1ib29sIFJlbmRlckZsZXhpYmxlQm94Ojppc0Zsb3dBd2FyZUxvZ2ljYWxIZWlnaHRBdXRvKCkg
Y29uc3QKK0xlbmd0aCBSZW5kZXJGbGV4aWJsZUJveDo6Y3Jvc3NBeGlzTGVuZ3RoKCkgY29uc3QK
IHsKLSAgICBMZW5ndGggaGVpZ2h0ID0gaXNIb3Jpem9udGFsRmxvdygpID8gc3R5bGUoKS0+aGVp
Z2h0KCkgOiBzdHlsZSgpLT53aWR0aCgpOwotICAgIHJldHVybiBoZWlnaHQuaXNBdXRvKCk7Cisg
ICAgcmV0dXJuIGlzSG9yaXpvbnRhbEZsb3coKSA/IHN0eWxlKCktPmhlaWdodCgpIDogc3R5bGUo
KS0+d2lkdGgoKTsKIH0KIAotdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6c2V0Rmxvd0F3YXJlTG9n
aWNhbEhlaWdodChMYXlvdXRVbml0IHNpemUpCit2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpzZXRD
cm9zc0F4aXNFeHRlbnQoTGF5b3V0VW5pdCBleHRlbnQpCiB7CiAgICAgaWYgKGlzSG9yaXpvbnRh
bEZsb3coKSkKLSAgICAgICAgc2V0SGVpZ2h0KHNpemUpOworICAgICAgICBzZXRIZWlnaHQoZXh0
ZW50KTsKICAgICBlbHNlCi0gICAgICAgIHNldFdpZHRoKHNpemUpOworICAgICAgICBzZXRXaWR0
aChleHRlbnQpOwogfQogCi1MYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjpmbG93QXdhcmVM
b2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkKK0xheW91dFVuaXQgUmVuZGVy
RmxleGlibGVCb3g6OmNyb3NzQXhpc0V4dGVudEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpCiB7
CiAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbEZsb3coKSA/IGNoaWxkLT5oZWlnaHQoKSA6IGNoaWxk
LT53aWR0aCgpOwogfQogCi1MYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjpmbG93QXdhcmVM
b2dpY2FsV2lkdGhGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKQorTGF5b3V0VW5pdCBSZW5kZXJG
bGV4aWJsZUJveDo6bWFpbkF4aXNFeHRlbnRGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKQogewog
ICAgIHJldHVybiBpc0hvcml6b250YWxGbG93KCkgPyBjaGlsZC0+d2lkdGgoKSA6IGNoaWxkLT5o
ZWlnaHQoKTsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6Zmxvd0F3YXJlTG9n
aWNhbEhlaWdodCgpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94Ojpjcm9zc0F4
aXNFeHRlbnQoKSBjb25zdAogewogICAgIHJldHVybiBpc0hvcml6b250YWxGbG93KCkgPyBoZWln
aHQoKSA6IHdpZHRoKCk7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmZsb3dB
d2FyZUxvZ2ljYWxXaWR0aCgpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94Ojpt
YWluQXhpc0V4dGVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbEZsb3coKSA/
IHdpZHRoKCkgOiBoZWlnaHQoKTsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6
Zmxvd0F3YXJlQ29udGVudExvZ2ljYWxIZWlnaHQoKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJG
bGV4aWJsZUJveDo6Y3Jvc3NBeGlzQ29udGVudEV4dGVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IGlzSG9yaXpvbnRhbEZsb3coKSA/IGNvbnRlbnRIZWlnaHQoKSA6IGNvbnRlbnRXaWR0aCgpOwog
fQogCi1MYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjpmbG93QXdhcmVDb250ZW50TG9naWNh
bFdpZHRoKCkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6Om1haW5BeGlzQ29u
dGVudEV4dGVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbEZsb3coKSA/IGNv
bnRlbnRXaWR0aCgpIDogY29udGVudEhlaWdodCgpOwogfQpAQCAtMzM0LDcgKzMzMyw3IEBAIExh
eW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmZsb3dBd2FyZUJvcmRlckFmdGVyKCkgY29uc3QK
ICAgICByZXR1cm4gYm9yZGVyQm90dG9tKCk7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyRmxleGli
bGVCb3g6OmZsb3dBd2FyZUJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkgY29uc3QKK0xh
eW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmNyb3NzQXhpc0JvcmRlckFuZFBhZGRpbmdFeHRl
bnQoKSBjb25zdAogewogICAgIHJldHVybiBpc0hvcml6b250YWxGbG93KCkgPyBib3JkZXJBbmRQ
YWRkaW5nSGVpZ2h0KCkgOiBib3JkZXJBbmRQYWRkaW5nV2lkdGgoKTsKIH0KQEAgLTQyNCwxMiAr
NDIzLDEyIEBAIExheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmZsb3dBd2FyZU1hcmdpbkFm
dGVyRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkgY29uCiAgICAgcmV0dXJuIG1hcmdpbkJvdHRv
bSgpOwogfQogCi1MYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjpmbG93QXdhcmVNYXJnaW5M
b2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkgY29uc3QKK0xheW91dFVuaXQg
UmVuZGVyRmxleGlibGVCb3g6OmNyb3NzQXhpc01hcmdpbkV4dGVudEZvckNoaWxkKFJlbmRlckJv
eCogY2hpbGQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbEZsb3coKSA/IGNoaWxk
LT5tYXJnaW5Ub3AoKSArIGNoaWxkLT5tYXJnaW5Cb3R0b20oKSA6IGNoaWxkLT5tYXJnaW5MZWZ0
KCkgKyBjaGlsZC0+bWFyZ2luUmlnaHQoKTsKIH0KIAotTGF5b3V0UG9pbnQgUmVuZGVyRmxleGli
bGVCb3g6OmZsb3dBd2FyZUxvZ2ljYWxMb2NhdGlvbkZvckNoaWxkKFJlbmRlckJveCogY2hpbGQp
IGNvbnN0CitMYXlvdXRQb2ludCBSZW5kZXJGbGV4aWJsZUJveDo6Zmxvd0F3YXJlTG9jYXRpb25G
b3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKSBjb25zdAogewogICAgIHJldHVybiBpc0hvcml6b250
YWxGbG93KCkgPyBjaGlsZC0+bG9jYXRpb24oKSA6IGNoaWxkLT5sb2NhdGlvbigpLnRyYW5zcG9z
ZWRQb2ludCgpOwogfQpAQCAtNDY0LDcgKzQ2Myw3IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6
OnNldEZsb3dBd2FyZU1hcmdpbkVuZEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQsIExheW91dFVu
CiAgICAgfQogfQogCi12b2lkIFJlbmRlckZsZXhpYmxlQm94OjpzZXRGbG93QXdhcmVMb2dpY2Fs
TG9jYXRpb25Gb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkLCBjb25zdCBMYXlvdXRQb2ludCYgbG9j
YXRpb24pCit2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpzZXRGbG93QXdhcmVMb2NhdGlvbkZvckNo
aWxkKFJlbmRlckJveCogY2hpbGQsIGNvbnN0IExheW91dFBvaW50JiBsb2NhdGlvbikKIHsKICAg
ICBpZiAoaXNIb3Jpem9udGFsRmxvdygpKQogICAgICAgICBjaGlsZC0+c2V0TG9jYXRpb24obG9j
YXRpb24pOwpAQCAtNDcyLDEyICs0NzEsMTIgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6c2V0
Rmxvd0F3YXJlTG9naWNhbExvY2F0aW9uRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgY28KICAg
ICAgICAgY2hpbGQtPnNldExvY2F0aW9uKGxvY2F0aW9uLnRyYW5zcG9zZWRQb2ludCgpKTsKIH0K
IAotTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6bG9naWNhbEJvcmRlckFuZFBhZGRpbmdX
aWR0aEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckZs
ZXhpYmxlQm94OjptYWluQXhpc0JvcmRlckFuZFBhZGRpbmdFeHRlbnRGb3JDaGlsZChSZW5kZXJC
b3gqIGNoaWxkKSBjb25zdAogewogICAgIHJldHVybiBpc0hvcml6b250YWxGbG93KCkgPyBjaGls
ZC0+Ym9yZGVyQW5kUGFkZGluZ1dpZHRoKCkgOiBjaGlsZC0+Ym9yZGVyQW5kUGFkZGluZ0hlaWdo
dCgpOwogfQogCi1MYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94Ojpsb2dpY2FsU2Nyb2xsYmFy
SGVpZ2h0Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVy
RmxleGlibGVCb3g6Om1haW5BeGlzU2Nyb2xsYmFyRXh0ZW50Rm9yQ2hpbGQoUmVuZGVyQm94KiBj
aGlsZCkgY29uc3QKIHsKICAgICByZXR1cm4gaXNIb3Jpem9udGFsRmxvdygpID8gY2hpbGQtPnZl
cnRpY2FsU2Nyb2xsYmFyV2lkdGgoKSA6IGNoaWxkLT5ob3Jpem9udGFsU2Nyb2xsYmFySGVpZ2h0
KCk7CiB9CkBAIC00OTYsMjUgKzQ5NSwyNSBAQCBMZW5ndGggUmVuZGVyRmxleGlibGVCb3g6Om1h
cmdpbkVuZFN0eWxlRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkgY29uc3QKICAgICByZXR1cm4g
aXNMZWZ0VG9SaWdodEZsb3coKSA/IGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5Cb3R0b20oKSA6IGNo
aWxkLT5zdHlsZSgpLT5tYXJnaW5Ub3AoKTsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJs
ZUJveDo6cHJlZmVycmVkTG9naWNhbENvbnRlbnRXaWR0aEZvckZsZXhJdGVtKFJlbmRlckJveCog
Y2hpbGQpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjpwcmVmZXJyZWRNYWlu
QXhpc0NvbnRlbnRFeHRlbnRGb3JGbGV4SXRlbShSZW5kZXJCb3gqIGNoaWxkKSBjb25zdAogewot
ICAgIExlbmd0aCBsb2dpY2FsV2lkdGhMZW5ndGggPSBmbG93QXdhcmVMb2dpY2FsV2lkdGhMZW5n
dGhGb3JDaGlsZChjaGlsZCk7Ci0gICAgaWYgKGxvZ2ljYWxXaWR0aExlbmd0aC5pc0F1dG8oKSkg
ewotICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCA9IGhhc09ydGhvZ29uYWxGbG93KGNo
aWxkKSA/IGNoaWxkLT5sb2dpY2FsSGVpZ2h0KCkgOiBjaGlsZC0+bWF4UHJlZmVycmVkTG9naWNh
bFdpZHRoKCk7Ci0gICAgICAgIHJldHVybiBsb2dpY2FsV2lkdGggLSBsb2dpY2FsQm9yZGVyQW5k
UGFkZGluZ1dpZHRoRm9yQ2hpbGQoY2hpbGQpIC0gbG9naWNhbFNjcm9sbGJhckhlaWdodEZvckNo
aWxkKGNoaWxkKTsKKyAgICBMZW5ndGggbWFpbkF4aXNMZW5ndGggPSBtYWluQXhpc0xlbmd0aEZv
ckNoaWxkKGNoaWxkKTsKKyAgICBpZiAobWFpbkF4aXNMZW5ndGguaXNBdXRvKCkpIHsKKyAgICAg
ICAgTGF5b3V0VW5pdCBtYWluQXhpc0V4dGVudCA9IGhhc09ydGhvZ29uYWxGbG93KGNoaWxkKSA/
IGNoaWxkLT5sb2dpY2FsSGVpZ2h0KCkgOiBjaGlsZC0+bWF4UHJlZmVycmVkTG9naWNhbFdpZHRo
KCk7CisgICAgICAgIHJldHVybiBtYWluQXhpc0V4dGVudCAtIG1haW5BeGlzQm9yZGVyQW5kUGFk
ZGluZ0V4dGVudEZvckNoaWxkKGNoaWxkKSAtIG1haW5BeGlzU2Nyb2xsYmFyRXh0ZW50Rm9yQ2hp
bGQoY2hpbGQpOwogICAgIH0KLSAgICByZXR1cm4gbG9naWNhbFdpZHRoTGVuZ3RoLmNhbGNNaW5W
YWx1ZShmbG93QXdhcmVDb250ZW50TG9naWNhbFdpZHRoKCkpOworICAgIHJldHVybiBtYWluQXhp
c0xlbmd0aC5jYWxjTWluVmFsdWUobWFpbkF4aXNDb250ZW50RXh0ZW50KCkpOwogfQogCiB2b2lk
IFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRJbmxpbmVEaXJlY3Rpb24oYm9vbCByZWxheW91dENo
aWxkcmVuKQogewotICAgIExheW91dFVuaXQgcHJlZmVycmVkTG9naWNhbFdpZHRoOworICAgIExh
eW91dFVuaXQgcHJlZmVycmVkTWFpbkF4aXNFeHRlbnQ7CiAgICAgZmxvYXQgdG90YWxQb3NpdGl2
ZUZsZXhpYmlsaXR5OwogICAgIGZsb2F0IHRvdGFsTmVnYXRpdmVGbGV4aWJpbGl0eTsKICAgICBU
cmVlT3JkZXJJdGVyYXRvciB0cmVlSXRlcmF0b3IodGhpcyk7CiAKLSAgICBjb21wdXRlUHJlZmVy
cmVkTG9naWNhbFdpZHRoKHJlbGF5b3V0Q2hpbGRyZW4sIHRyZWVJdGVyYXRvciwgcHJlZmVycmVk
TG9naWNhbFdpZHRoLCB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHksIHRvdGFsTmVnYXRpdmVGbGV4
aWJpbGl0eSk7Ci0gICAgTGF5b3V0VW5pdCBhdmFpbGFibGVGcmVlU3BhY2UgPSBmbG93QXdhcmVD
b250ZW50TG9naWNhbFdpZHRoKCkgLSBwcmVmZXJyZWRMb2dpY2FsV2lkdGg7CisgICAgY29tcHV0
ZVByZWZlcnJlZE1haW5BeGlzRXh0ZW50KHJlbGF5b3V0Q2hpbGRyZW4sIHRyZWVJdGVyYXRvciwg
cHJlZmVycmVkTWFpbkF4aXNFeHRlbnQsIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSwgdG90YWxO
ZWdhdGl2ZUZsZXhpYmlsaXR5KTsKKyAgICBMYXlvdXRVbml0IGF2YWlsYWJsZUZyZWVTcGFjZSA9
IG1haW5BeGlzQ29udGVudEV4dGVudCgpIC0gcHJlZmVycmVkTWFpbkF4aXNFeHRlbnQ7CiAKICAg
ICBGbGV4T3JkZXJJdGVyYXRvciBmbGV4SXRlcmF0b3IodGhpcywgdHJlZUl0ZXJhdG9yLmZsZXhP
cmRlclZhbHVlcygpKTsKICAgICBJbmZsZXhpYmxlRmxleEl0ZW1TaXplIGluZmxleGlibGVJdGVt
czsKQEAgLTUyNywzOSArNTI2LDM5IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dElu
bGluZURpcmVjdGlvbihib29sIHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAgbGF5b3V0QW5kUGxhY2VD
aGlsZHJlbklubGluZURpcmVjdGlvbihmbGV4SXRlcmF0b3IsIGNoaWxkU2l6ZXMsIGF2YWlsYWJs
ZUZyZWVTcGFjZSwgdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5KTsKIH0KIAotZmxvYXQgUmVuZGVy
RmxleGlibGVCb3g6OmxvZ2ljYWxQb3NpdGl2ZUZsZXhGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxk
KSBjb25zdAorZmxvYXQgUmVuZGVyRmxleGlibGVCb3g6OnBvc2l0aXZlRmxleEZvckNoaWxkKFJl
bmRlckJveCogY2hpbGQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbEZsb3coKSA/
IGNoaWxkLT5zdHlsZSgpLT5mbGV4Ym94V2lkdGhQb3NpdGl2ZUZsZXgoKSA6IGNoaWxkLT5zdHls
ZSgpLT5mbGV4Ym94SGVpZ2h0UG9zaXRpdmVGbGV4KCk7CiB9CiAKLWZsb2F0IFJlbmRlckZsZXhp
YmxlQm94Ojpsb2dpY2FsTmVnYXRpdmVGbGV4Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkgY29u
c3QKK2Zsb2F0IFJlbmRlckZsZXhpYmxlQm94OjpuZWdhdGl2ZUZsZXhGb3JDaGlsZChSZW5kZXJC
b3gqIGNoaWxkKSBjb25zdAogewogICAgIHJldHVybiBpc0hvcml6b250YWxGbG93KCkgPyBjaGls
ZC0+c3R5bGUoKS0+ZmxleGJveFdpZHRoTmVnYXRpdmVGbGV4KCkgOiBjaGlsZC0+c3R5bGUoKS0+
ZmxleGJveEhlaWdodE5lZ2F0aXZlRmxleCgpOwogfQogCi1MYXlvdXRVbml0IFJlbmRlckZsZXhp
YmxlQm94OjphdmFpbGFibGVMb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkK
K0xheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmF2YWlsYWJsZUFsaWdubWVudFNwYWNlRm9y
Q2hpbGQoUmVuZGVyQm94KiBjaGlsZCkKIHsKLSAgICBMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2Fs
SGVpZ2h0ID0gZmxvd0F3YXJlQ29udGVudExvZ2ljYWxIZWlnaHQoKTsKLSAgICBMYXlvdXRVbml0
IGN1cnJlbnRDaGlsZEhlaWdodCA9IGZsb3dBd2FyZU1hcmdpbkxvZ2ljYWxIZWlnaHRGb3JDaGls
ZChjaGlsZCkgKyBmbG93QXdhcmVMb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoY2hpbGQpOwotICAgIHJl
dHVybiBjb250ZW50TG9naWNhbEhlaWdodCAtIGN1cnJlbnRDaGlsZEhlaWdodDsKKyAgICBMYXlv
dXRVbml0IGNyb3NzQ29udGVudEV4dGVudCA9IGNyb3NzQXhpc0NvbnRlbnRFeHRlbnQoKTsKKyAg
ICBMYXlvdXRVbml0IGNoaWxkQ3Jvc3NFeHRlbnQgPSBjcm9zc0F4aXNNYXJnaW5FeHRlbnRGb3JD
aGlsZChjaGlsZCkgKyBjcm9zc0F4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCk7CisgICAgcmV0dXJu
IGNyb3NzQ29udGVudEV4dGVudCAtIGNoaWxkQ3Jvc3NFeHRlbnQ7CiB9CiAKIExheW91dFVuaXQg
UmVuZGVyRmxleGlibGVCb3g6Om1hcmdpbkJveEFzY2VudChSZW5kZXJCb3gqIGNoaWxkKQogewog
ICAgIExheW91dFVuaXQgYXNjZW50ID0gY2hpbGQtPmZpcnN0TGluZUJveEJhc2VsaW5lKCk7CiAg
ICAgaWYgKGFzY2VudCA9PSAtMSkKLSAgICAgICAgYXNjZW50ID0gZmxvd0F3YXJlTG9naWNhbEhl
aWdodEZvckNoaWxkKGNoaWxkKSArIGZsb3dBd2FyZU1hcmdpbkFmdGVyRm9yQ2hpbGQoY2hpbGQp
OworICAgICAgICBhc2NlbnQgPSBjcm9zc0F4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCkgKyBmbG93
QXdhcmVNYXJnaW5BZnRlckZvckNoaWxkKGNoaWxkKTsKICAgICByZXR1cm4gYXNjZW50ICsgZmxv
d0F3YXJlTWFyZ2luQmVmb3JlRm9yQ2hpbGQoY2hpbGQpOwogfQogCi12b2lkIFJlbmRlckZsZXhp
YmxlQm94Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRoKGJvb2wgcmVsYXlvdXRDaGlsZHJl
biwgVHJlZU9yZGVySXRlcmF0b3ImIGl0ZXJhdG9yLCBMYXlvdXRVbml0JiBwcmVmZXJyZWRMb2dp
Y2FsV2lkdGgsIGZsb2F0JiB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHksIGZsb2F0JiB0b3RhbE5l
Z2F0aXZlRmxleGliaWxpdHkpCit2b2lkIFJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlUHJlZmVy
cmVkTWFpbkF4aXNFeHRlbnQoYm9vbCByZWxheW91dENoaWxkcmVuLCBUcmVlT3JkZXJJdGVyYXRv
ciYgaXRlcmF0b3IsIExheW91dFVuaXQmIHByZWZlcnJlZE1haW5BeGlzRXh0ZW50LCBmbG9hdCYg
dG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5LCBmbG9hdCYgdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5
KQogewotICAgIHByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IDA7CisgICAgcHJlZmVycmVkTWFpbkF4
aXNFeHRlbnQgPSAwOwogICAgIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSA9IHRvdGFsTmVnYXRp
dmVGbGV4aWJpbGl0eSA9IDA7CiAKLSAgICBMYXlvdXRVbml0IGZsZXhib3hBdmFpbGFibGVMb2dp
Y2FsV2lkdGggPSBmbG93QXdhcmVDb250ZW50TG9naWNhbFdpZHRoKCk7CisgICAgTGF5b3V0VW5p
dCBmbGV4Ym94QXZhaWxhYmxlQ29udGVudEV4dGVudCA9IG1haW5BeGlzQ29udGVudEV4dGVudCgp
OwogICAgIGZvciAoUmVuZGVyQm94KiBjaGlsZCA9IGl0ZXJhdG9yLmZpcnN0KCk7IGNoaWxkOyBj
aGlsZCA9IGl0ZXJhdG9yLm5leHQoKSkgewotICAgICAgICBpZiAoZmxvd0F3YXJlTG9naWNhbFdp
ZHRoTGVuZ3RoRm9yQ2hpbGQoY2hpbGQpLmlzQXV0bygpKSB7CisgICAgICAgIGlmIChtYWluQXhp
c0xlbmd0aEZvckNoaWxkKGNoaWxkKS5pc0F1dG8oKSkgewogICAgICAgICAgICAgY2hpbGQtPmNs
ZWFyT3ZlcnJpZGVTaXplKCk7CiAgICAgICAgICAgICBpZiAoIXJlbGF5b3V0Q2hpbGRyZW4pCiAg
ICAgICAgICAgICAgICAgY2hpbGQtPnNldENoaWxkTmVlZHNMYXlvdXQodHJ1ZSk7CkBAIC01NzAs
MjAgKzU2OSwyMCBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlUHJlZmVycmVkTG9n
aWNhbFdpZHRoKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgVHJlZQogICAgICAgICAvLyBvZiAwIGFu
ZCBiZWNhdXNlIGlmIHdlJ3JlIG5vdCBhdXRvIHNpemluZywgd2UgZG9uJ3QgZG8gYSBsYXlvdXQg
dGhhdAogICAgICAgICAvLyBjb21wdXRlcyB0aGUgc3RhcnQvZW5kIG1hcmdpbnMuCiAgICAgICAg
IGlmIChpc0hvcml6b250YWxGbG93KCkpIHsKLSAgICAgICAgICAgIGNoaWxkLT5zZXRNYXJnaW5M
ZWZ0KGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5MZWZ0KCkuY2FsY01pblZhbHVlKGZsZXhib3hBdmFp
bGFibGVMb2dpY2FsV2lkdGgpKTsKLSAgICAgICAgICAgIGNoaWxkLT5zZXRNYXJnaW5SaWdodChj
aGlsZC0+c3R5bGUoKS0+bWFyZ2luUmlnaHQoKS5jYWxjTWluVmFsdWUoZmxleGJveEF2YWlsYWJs
ZUxvZ2ljYWxXaWR0aCkpOwotICAgICAgICAgICAgcHJlZmVycmVkTG9naWNhbFdpZHRoICs9IGNo
aWxkLT5tYXJnaW5MZWZ0KCkgKyBjaGlsZC0+bWFyZ2luUmlnaHQoKTsKKyAgICAgICAgICAgIGNo
aWxkLT5zZXRNYXJnaW5MZWZ0KGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5MZWZ0KCkuY2FsY01pblZh
bHVlKGZsZXhib3hBdmFpbGFibGVDb250ZW50RXh0ZW50KSk7CisgICAgICAgICAgICBjaGlsZC0+
c2V0TWFyZ2luUmlnaHQoY2hpbGQtPnN0eWxlKCktPm1hcmdpblJpZ2h0KCkuY2FsY01pblZhbHVl
KGZsZXhib3hBdmFpbGFibGVDb250ZW50RXh0ZW50KSk7CisgICAgICAgICAgICBwcmVmZXJyZWRN
YWluQXhpc0V4dGVudCArPSBjaGlsZC0+bWFyZ2luTGVmdCgpICsgY2hpbGQtPm1hcmdpblJpZ2h0
KCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjaGlsZC0+c2V0TWFyZ2luVG9wKGNo
aWxkLT5zdHlsZSgpLT5tYXJnaW5Ub3AoKS5jYWxjTWluVmFsdWUoZmxleGJveEF2YWlsYWJsZUxv
Z2ljYWxXaWR0aCkpOwotICAgICAgICAgICAgY2hpbGQtPnNldE1hcmdpbkJvdHRvbShjaGlsZC0+
c3R5bGUoKS0+bWFyZ2luQm90dG9tKCkuY2FsY01pblZhbHVlKGZsZXhib3hBdmFpbGFibGVMb2dp
Y2FsV2lkdGgpKTsKLSAgICAgICAgICAgIHByZWZlcnJlZExvZ2ljYWxXaWR0aCArPSBjaGlsZC0+
bWFyZ2luVG9wKCkgKyBjaGlsZC0+bWFyZ2luQm90dG9tKCk7CisgICAgICAgICAgICBjaGlsZC0+
c2V0TWFyZ2luVG9wKGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5Ub3AoKS5jYWxjTWluVmFsdWUoZmxl
eGJveEF2YWlsYWJsZUNvbnRlbnRFeHRlbnQpKTsKKyAgICAgICAgICAgIGNoaWxkLT5zZXRNYXJn
aW5Cb3R0b20oY2hpbGQtPnN0eWxlKCktPm1hcmdpbkJvdHRvbSgpLmNhbGNNaW5WYWx1ZShmbGV4
Ym94QXZhaWxhYmxlQ29udGVudEV4dGVudCkpOworICAgICAgICAgICAgcHJlZmVycmVkTWFpbkF4
aXNFeHRlbnQgKz0gY2hpbGQtPm1hcmdpblRvcCgpICsgY2hpbGQtPm1hcmdpbkJvdHRvbSgpOwog
ICAgICAgICB9CiAKLSAgICAgICAgcHJlZmVycmVkTG9naWNhbFdpZHRoICs9IGxvZ2ljYWxCb3Jk
ZXJBbmRQYWRkaW5nV2lkdGhGb3JDaGlsZChjaGlsZCk7Ci0gICAgICAgIHByZWZlcnJlZExvZ2lj
YWxXaWR0aCArPSBwcmVmZXJyZWRMb2dpY2FsQ29udGVudFdpZHRoRm9yRmxleEl0ZW0oY2hpbGQp
OworICAgICAgICBwcmVmZXJyZWRNYWluQXhpc0V4dGVudCArPSBtYWluQXhpc0JvcmRlckFuZFBh
ZGRpbmdFeHRlbnRGb3JDaGlsZChjaGlsZCk7CisgICAgICAgIHByZWZlcnJlZE1haW5BeGlzRXh0
ZW50ICs9IHByZWZlcnJlZE1haW5BeGlzQ29udGVudEV4dGVudEZvckZsZXhJdGVtKGNoaWxkKTsK
IAotICAgICAgICB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHkgKz0gbG9naWNhbFBvc2l0aXZlRmxl
eEZvckNoaWxkKGNoaWxkKTsKLSAgICAgICAgdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5ICs9IGxv
Z2ljYWxOZWdhdGl2ZUZsZXhGb3JDaGlsZChjaGlsZCk7CisgICAgICAgIHRvdGFsUG9zaXRpdmVG
bGV4aWJpbGl0eSArPSBwb3NpdGl2ZUZsZXhGb3JDaGlsZChjaGlsZCk7CisgICAgICAgIHRvdGFs
TmVnYXRpdmVGbGV4aWJpbGl0eSArPSBuZWdhdGl2ZUZsZXhGb3JDaGlsZChjaGlsZCk7CiAgICAg
fQogfQogCkBAIC01OTIsMzMgKzU5MSwzMyBAQCBib29sIFJlbmRlckZsZXhpYmxlQm94OjpydW5G
cmVlU3BhY2VBbGxvY2F0aW9uQWxnb3JpdGhtSW5saW5lRGlyZWN0aW9uKEZsZXhPcmRlcgogewog
ICAgIGNoaWxkU2l6ZXMuY2xlYXIoKTsKIAotICAgIExheW91dFVuaXQgZmxleGJveEF2YWlsYWJs
ZUxvZ2ljYWxXaWR0aCA9IGZsb3dBd2FyZUNvbnRlbnRMb2dpY2FsV2lkdGgoKTsKKyAgICBMYXlv
dXRVbml0IGZsZXhib3hBdmFpbGFibGVDb250ZW50RXh0ZW50ID0gbWFpbkF4aXNDb250ZW50RXh0
ZW50KCk7CiAgICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0gaXRlcmF0b3IuZmlyc3QoKTsgY2hp
bGQ7IGNoaWxkID0gaXRlcmF0b3IubmV4dCgpKSB7CiAgICAgICAgIExheW91dFVuaXQgY2hpbGRQ
cmVmZXJyZWRTaXplOwogICAgICAgICBpZiAoaW5mbGV4aWJsZUl0ZW1zLmNvbnRhaW5zKGNoaWxk
KSkKICAgICAgICAgICAgIGNoaWxkUHJlZmVycmVkU2l6ZSA9IGluZmxleGlibGVJdGVtcy5nZXQo
Y2hpbGQpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGNoaWxkUHJlZmVycmVkU2l6ZSA9
IHByZWZlcnJlZExvZ2ljYWxDb250ZW50V2lkdGhGb3JGbGV4SXRlbShjaGlsZCk7CisgICAgICAg
ICAgICBjaGlsZFByZWZlcnJlZFNpemUgPSBwcmVmZXJyZWRNYWluQXhpc0NvbnRlbnRFeHRlbnRG
b3JGbGV4SXRlbShjaGlsZCk7CiAgICAgICAgICAgICBpZiAoYXZhaWxhYmxlRnJlZVNwYWNlID4g
MCAmJiB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHkgPiAwKSB7Ci0gICAgICAgICAgICAgICAgY2hp
bGRQcmVmZXJyZWRTaXplICs9IGxyb3VuZGYoYXZhaWxhYmxlRnJlZVNwYWNlICogbG9naWNhbFBv
c2l0aXZlRmxleEZvckNoaWxkKGNoaWxkKSAvIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSk7Cisg
ICAgICAgICAgICAgICAgY2hpbGRQcmVmZXJyZWRTaXplICs9IGxyb3VuZGYoYXZhaWxhYmxlRnJl
ZVNwYWNlICogcG9zaXRpdmVGbGV4Rm9yQ2hpbGQoY2hpbGQpIC8gdG90YWxQb3NpdGl2ZUZsZXhp
YmlsaXR5KTsKIAogICAgICAgICAgICAgICAgIExlbmd0aCBjaGlsZExvZ2ljYWxNYXhXaWR0aCA9
IGlzSG9yaXpvbnRhbEZsb3coKSA/IGNoaWxkLT5zdHlsZSgpLT5tYXhXaWR0aCgpIDogY2hpbGQt
PnN0eWxlKCktPm1heEhlaWdodCgpOwotICAgICAgICAgICAgICAgIGlmICghY2hpbGRMb2dpY2Fs
TWF4V2lkdGguaXNVbmRlZmluZWQoKSAmJiBjaGlsZExvZ2ljYWxNYXhXaWR0aC5pc1NwZWNpZmll
ZCgpICYmIGNoaWxkUHJlZmVycmVkU2l6ZSA+IGNoaWxkTG9naWNhbE1heFdpZHRoLmNhbGNWYWx1
ZShmbGV4Ym94QXZhaWxhYmxlTG9naWNhbFdpZHRoKSkgewotICAgICAgICAgICAgICAgICAgICBj
aGlsZFByZWZlcnJlZFNpemUgPSBjaGlsZExvZ2ljYWxNYXhXaWR0aC5jYWxjVmFsdWUoZmxleGJv
eEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7Ci0gICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZUZy
ZWVTcGFjZSAtPSBjaGlsZFByZWZlcnJlZFNpemUgLSBwcmVmZXJyZWRMb2dpY2FsQ29udGVudFdp
ZHRoRm9yRmxleEl0ZW0oY2hpbGQpOwotICAgICAgICAgICAgICAgICAgICB0b3RhbFBvc2l0aXZl
RmxleGliaWxpdHkgLT0gbG9naWNhbFBvc2l0aXZlRmxleEZvckNoaWxkKGNoaWxkKTsKKyAgICAg
ICAgICAgICAgICBpZiAoIWNoaWxkTG9naWNhbE1heFdpZHRoLmlzVW5kZWZpbmVkKCkgJiYgY2hp
bGRMb2dpY2FsTWF4V2lkdGguaXNTcGVjaWZpZWQoKSAmJiBjaGlsZFByZWZlcnJlZFNpemUgPiBj
aGlsZExvZ2ljYWxNYXhXaWR0aC5jYWxjVmFsdWUoZmxleGJveEF2YWlsYWJsZUNvbnRlbnRFeHRl
bnQpKSB7CisgICAgICAgICAgICAgICAgICAgIGNoaWxkUHJlZmVycmVkU2l6ZSA9IGNoaWxkTG9n
aWNhbE1heFdpZHRoLmNhbGNWYWx1ZShmbGV4Ym94QXZhaWxhYmxlQ29udGVudEV4dGVudCk7Cisg
ICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZUZyZWVTcGFjZSAtPSBjaGlsZFByZWZlcnJlZFNp
emUgLSBwcmVmZXJyZWRNYWluQXhpc0NvbnRlbnRFeHRlbnRGb3JGbGV4SXRlbShjaGlsZCk7Cisg
ICAgICAgICAgICAgICAgICAgIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSAtPSBwb3NpdGl2ZUZs
ZXhGb3JDaGlsZChjaGlsZCk7CiAKICAgICAgICAgICAgICAgICAgICAgaW5mbGV4aWJsZUl0ZW1z
LnNldChjaGlsZCwgY2hpbGRQcmVmZXJyZWRTaXplKTsKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXZh
aWxhYmxlRnJlZVNwYWNlIDwgMCAmJiB0b3RhbE5lZ2F0aXZlRmxleGliaWxpdHkgPiAwKSB7Ci0g
ICAgICAgICAgICAgICAgY2hpbGRQcmVmZXJyZWRTaXplICs9IGxyb3VuZGYoYXZhaWxhYmxlRnJl
ZVNwYWNlICogbG9naWNhbE5lZ2F0aXZlRmxleEZvckNoaWxkKGNoaWxkKSAvIHRvdGFsTmVnYXRp
dmVGbGV4aWJpbGl0eSk7CisgICAgICAgICAgICAgICAgY2hpbGRQcmVmZXJyZWRTaXplICs9IGxy
b3VuZGYoYXZhaWxhYmxlRnJlZVNwYWNlICogbmVnYXRpdmVGbGV4Rm9yQ2hpbGQoY2hpbGQpIC8g
dG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5KTsKIAogICAgICAgICAgICAgICAgIExlbmd0aCBjaGls
ZExvZ2ljYWxNaW5XaWR0aCA9IGlzSG9yaXpvbnRhbEZsb3coKSA/IGNoaWxkLT5zdHlsZSgpLT5t
aW5XaWR0aCgpIDogY2hpbGQtPnN0eWxlKCktPm1pbkhlaWdodCgpOwotICAgICAgICAgICAgICAg
IGlmICghY2hpbGRMb2dpY2FsTWluV2lkdGguaXNVbmRlZmluZWQoKSAmJiBjaGlsZExvZ2ljYWxN
aW5XaWR0aC5pc1NwZWNpZmllZCgpICYmIGNoaWxkUHJlZmVycmVkU2l6ZSA8IGNoaWxkTG9naWNh
bE1pbldpZHRoLmNhbGNWYWx1ZShmbGV4Ym94QXZhaWxhYmxlTG9naWNhbFdpZHRoKSkgewotICAg
ICAgICAgICAgICAgICAgICBjaGlsZFByZWZlcnJlZFNpemUgPSBjaGlsZExvZ2ljYWxNaW5XaWR0
aC5jYWxjVmFsdWUoZmxleGJveEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7Ci0gICAgICAgICAgICAg
ICAgICAgIGF2YWlsYWJsZUZyZWVTcGFjZSArPSBwcmVmZXJyZWRMb2dpY2FsQ29udGVudFdpZHRo
Rm9yRmxleEl0ZW0oY2hpbGQpIC0gY2hpbGRQcmVmZXJyZWRTaXplOwotICAgICAgICAgICAgICAg
ICAgICB0b3RhbE5lZ2F0aXZlRmxleGliaWxpdHkgLT0gbG9naWNhbE5lZ2F0aXZlRmxleEZvckNo
aWxkKGNoaWxkKTsKKyAgICAgICAgICAgICAgICBpZiAoIWNoaWxkTG9naWNhbE1pbldpZHRoLmlz
VW5kZWZpbmVkKCkgJiYgY2hpbGRMb2dpY2FsTWluV2lkdGguaXNTcGVjaWZpZWQoKSAmJiBjaGls
ZFByZWZlcnJlZFNpemUgPCBjaGlsZExvZ2ljYWxNaW5XaWR0aC5jYWxjVmFsdWUoZmxleGJveEF2
YWlsYWJsZUNvbnRlbnRFeHRlbnQpKSB7CisgICAgICAgICAgICAgICAgICAgIGNoaWxkUHJlZmVy
cmVkU2l6ZSA9IGNoaWxkTG9naWNhbE1pbldpZHRoLmNhbGNWYWx1ZShmbGV4Ym94QXZhaWxhYmxl
Q29udGVudEV4dGVudCk7CisgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZUZyZWVTcGFjZSAr
PSBwcmVmZXJyZWRNYWluQXhpc0NvbnRlbnRFeHRlbnRGb3JGbGV4SXRlbShjaGlsZCkgLSBjaGls
ZFByZWZlcnJlZFNpemU7CisgICAgICAgICAgICAgICAgICAgIHRvdGFsTmVnYXRpdmVGbGV4aWJp
bGl0eSAtPSBuZWdhdGl2ZUZsZXhGb3JDaGlsZChjaGlsZCk7CiAKICAgICAgICAgICAgICAgICAg
ICAgaW5mbGV4aWJsZUl0ZW1zLnNldChjaGlsZCwgY2hpbGRQcmVmZXJyZWRTaXplKTsKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjU2LDM5ICs2NTUsMzkgQEAgdm9pZCBS
ZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0QW5kUGxhY2VDaGlsZHJlbklubGluZURpcmVjdGlvbihG
bGV4T3JkZXJJdGVyYXRvciYKICAgICB9CiAKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3AgPSBm
bG93QXdhcmVCb3JkZXJCZWZvcmUoKSArIGZsb3dBd2FyZVBhZGRpbmdCZWZvcmUoKTsKLSAgICBM
YXlvdXRVbml0IHRvdGFsTG9naWNhbFdpZHRoID0gZmxvd0F3YXJlTG9naWNhbFdpZHRoKCk7Ci0g
ICAgaWYgKGlzRmxvd0F3YXJlTG9naWNhbEhlaWdodEF1dG8oKSkKLSAgICAgICAgc2V0Rmxvd0F3
YXJlTG9naWNhbEhlaWdodCgwKTsKKyAgICBMYXlvdXRVbml0IHRvdGFsTWFpbkV4dGVudCA9IG1h
aW5BeGlzRXh0ZW50KCk7CisgICAgaWYgKGNyb3NzQXhpc0xlbmd0aCgpLmlzQXV0bygpKQorICAg
ICAgICBzZXRDcm9zc0F4aXNFeHRlbnQoMCk7CiAgICAgTGF5b3V0VW5pdCBtYXhBc2NlbnQgPSAw
LCBtYXhEZXNjZW50ID0gMDsgLy8gVXNlZCB3aGVuIGZsZXgtYWxpZ246IGJhc2VsaW5lLgogICAg
IHNpemVfdCBpID0gMDsKICAgICBmb3IgKFJlbmRlckJveCogY2hpbGQgPSBpdGVyYXRvci5maXJz
dCgpOyBjaGlsZDsgY2hpbGQgPSBpdGVyYXRvci5uZXh0KCksICsraSkgewotICAgICAgICBMYXlv
dXRVbml0IGNoaWxkUHJlZmVycmVkU2l6ZSA9IGNoaWxkU2l6ZXNbaV0gKyBsb2dpY2FsQm9yZGVy
QW5kUGFkZGluZ1dpZHRoRm9yQ2hpbGQoY2hpbGQpOworICAgICAgICBMYXlvdXRVbml0IGNoaWxk
UHJlZmVycmVkU2l6ZSA9IGNoaWxkU2l6ZXNbaV0gKyBtYWluQXhpc0JvcmRlckFuZFBhZGRpbmdF
eHRlbnRGb3JDaGlsZChjaGlsZCk7CiAgICAgICAgIHNldExvZ2ljYWxPdmVycmlkZVNpemUoY2hp
bGQsIGNoaWxkUHJlZmVycmVkU2l6ZSk7CiAgICAgICAgIGNoaWxkLT5zZXRDaGlsZE5lZWRzTGF5
b3V0KHRydWUpOwogICAgICAgICBjaGlsZC0+bGF5b3V0SWZOZWVkZWQoKTsKIAogICAgICAgICBp
ZiAoY2hpbGQtPnN0eWxlKCktPmZsZXhBbGlnbigpID09IEFsaWduQmFzZWxpbmUpIHsKICAgICAg
ICAgICAgIExheW91dFVuaXQgYXNjZW50ID0gbWFyZ2luQm94QXNjZW50KGNoaWxkKTsKLSAgICAg
ICAgICAgIExheW91dFVuaXQgZGVzY2VudCA9IChmbG93QXdhcmVNYXJnaW5Mb2dpY2FsSGVpZ2h0
Rm9yQ2hpbGQoY2hpbGQpICsgZmxvd0F3YXJlTG9naWNhbEhlaWdodEZvckNoaWxkKGNoaWxkKSkg
LSBhc2NlbnQ7CisgICAgICAgICAgICBMYXlvdXRVbml0IGRlc2NlbnQgPSAoY3Jvc3NBeGlzTWFy
Z2luRXh0ZW50Rm9yQ2hpbGQoY2hpbGQpICsgY3Jvc3NBeGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQp
KSAtIGFzY2VudDsKIAogICAgICAgICAgICAgbWF4QXNjZW50ID0gc3RkOjptYXgobWF4QXNjZW50
LCBhc2NlbnQpOwogICAgICAgICAgICAgbWF4RGVzY2VudCA9IHN0ZDo6bWF4KG1heERlc2NlbnQs
IGRlc2NlbnQpOwogCiAgICAgICAgICAgICAvLyBGSVhNRTogYWRkIGZsb3dBd2FyZVNjcm9sbGJh
ckxvZ2ljYWxIZWlnaHQuCi0gICAgICAgICAgICBpZiAoaXNGbG93QXdhcmVMb2dpY2FsSGVpZ2h0
QXV0bygpKQotICAgICAgICAgICAgICAgIHNldEZsb3dBd2FyZUxvZ2ljYWxIZWlnaHQoc3RkOjpt
YXgoZmxvd0F3YXJlTG9naWNhbEhlaWdodCgpLCBmbG93QXdhcmVCb3JkZXJBbmRQYWRkaW5nTG9n
aWNhbEhlaWdodCgpICsgZmxvd0F3YXJlTWFyZ2luTG9naWNhbEhlaWdodEZvckNoaWxkKGNoaWxk
KSArIG1heEFzY2VudCArIG1heERlc2NlbnQgKyBzY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCkpKTsK
LSAgICAgICAgfSBlbHNlIGlmIChpc0Zsb3dBd2FyZUxvZ2ljYWxIZWlnaHRBdXRvKCkpCi0gICAg
ICAgICAgICBzZXRGbG93QXdhcmVMb2dpY2FsSGVpZ2h0KHN0ZDo6bWF4KGZsb3dBd2FyZUxvZ2lj
YWxIZWlnaHQoKSwgZmxvd0F3YXJlQm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSArIGZs
b3dBd2FyZU1hcmdpbkxvZ2ljYWxIZWlnaHRGb3JDaGlsZChjaGlsZCkgKyBmbG93QXdhcmVMb2dp
Y2FsSGVpZ2h0Rm9yQ2hpbGQoY2hpbGQpICsgc2Nyb2xsYmFyTG9naWNhbEhlaWdodCgpKSk7Cisg
ICAgICAgICAgICBpZiAoY3Jvc3NBeGlzTGVuZ3RoKCkuaXNBdXRvKCkpCisgICAgICAgICAgICAg
ICAgc2V0Q3Jvc3NBeGlzRXh0ZW50KHN0ZDo6bWF4KGNyb3NzQXhpc0V4dGVudCgpLCBjcm9zc0F4
aXNCb3JkZXJBbmRQYWRkaW5nRXh0ZW50KCkgKyBjcm9zc0F4aXNNYXJnaW5FeHRlbnRGb3JDaGls
ZChjaGlsZCkgKyBtYXhBc2NlbnQgKyBtYXhEZXNjZW50ICsgc2Nyb2xsYmFyTG9naWNhbEhlaWdo
dCgpKSk7CisgICAgICAgIH0gZWxzZSBpZiAoY3Jvc3NBeGlzTGVuZ3RoKCkuaXNBdXRvKCkpCisg
ICAgICAgICAgICBzZXRDcm9zc0F4aXNFeHRlbnQoc3RkOjptYXgoY3Jvc3NBeGlzRXh0ZW50KCks
IGNyb3NzQXhpc0JvcmRlckFuZFBhZGRpbmdFeHRlbnQoKSArIGNyb3NzQXhpc01hcmdpbkV4dGVu
dEZvckNoaWxkKGNoaWxkKSArIGNyb3NzQXhpc0V4dGVudEZvckNoaWxkKGNoaWxkKSArIHNjcm9s
bGJhckxvZ2ljYWxIZWlnaHQoKSkpOwogCiAgICAgICAgIHN0YXJ0RWRnZSArPSBmbG93QXdhcmVN
YXJnaW5TdGFydEZvckNoaWxkKGNoaWxkKTsKIAotICAgICAgICBMYXlvdXRVbml0IGNoaWxkTG9n
aWNhbFdpZHRoID0gZmxvd0F3YXJlTG9naWNhbFdpZHRoRm9yQ2hpbGQoY2hpbGQpOworICAgICAg
ICBMYXlvdXRVbml0IGNoaWxkTWFpbkV4dGVudCA9IG1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoY2hp
bGQpOwogICAgICAgICBib29sIHNob3VsZEZsaXBJbmxpbmVEaXJlY3Rpb24gPSBpc0NvbHVtbkZs
b3coKSA/IHRydWUgOiBpc0xlZnRUb1JpZ2h0RmxvdygpOwotICAgICAgICBMYXlvdXRVbml0IGxv
Z2ljYWxMZWZ0ID0gc2hvdWxkRmxpcElubGluZURpcmVjdGlvbiA/IHN0YXJ0RWRnZSA6IHRvdGFs
TG9naWNhbFdpZHRoIC0gc3RhcnRFZGdlIC0gY2hpbGRMb2dpY2FsV2lkdGg7CisgICAgICAgIExh
eW91dFVuaXQgbG9naWNhbExlZnQgPSBzaG91bGRGbGlwSW5saW5lRGlyZWN0aW9uID8gc3RhcnRF
ZGdlIDogdG90YWxNYWluRXh0ZW50IC0gc3RhcnRFZGdlIC0gY2hpbGRNYWluRXh0ZW50OwogCiAg
ICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0aW5nIGxheW91dCBkZWx0YXMuCi0gICAgICAgIHNldEZs
b3dBd2FyZUxvZ2ljYWxMb2NhdGlvbkZvckNoaWxkKGNoaWxkLCBJbnRQb2ludChsb2dpY2FsTGVm
dCwgbG9naWNhbFRvcCArIGZsb3dBd2FyZU1hcmdpbkJlZm9yZUZvckNoaWxkKGNoaWxkKSkpOwot
ICAgICAgICBzdGFydEVkZ2UgKz0gY2hpbGRMb2dpY2FsV2lkdGggKyBmbG93QXdhcmVNYXJnaW5F
bmRGb3JDaGlsZChjaGlsZCk7CisgICAgICAgIHNldEZsb3dBd2FyZUxvY2F0aW9uRm9yQ2hpbGQo
Y2hpbGQsIEludFBvaW50KGxvZ2ljYWxMZWZ0LCBsb2dpY2FsVG9wICsgZmxvd0F3YXJlTWFyZ2lu
QmVmb3JlRm9yQ2hpbGQoY2hpbGQpKSk7CisgICAgICAgIHN0YXJ0RWRnZSArPSBjaGlsZE1haW5F
eHRlbnQgKyBmbG93QXdhcmVNYXJnaW5FbmRGb3JDaGlsZChjaGlsZCk7CiAKICAgICAgICAgaWYg
KGhhc1BhY2tpbmdTcGFjZShhdmFpbGFibGVGcmVlU3BhY2UsIHRvdGFsUG9zaXRpdmVGbGV4aWJp
bGl0eSkgJiYgc3R5bGUoKS0+ZmxleFBhY2soKSA9PSBQYWNrSnVzdGlmeSAmJiBjaGlsZFNpemVz
LnNpemUoKSA+IDEpCiAgICAgICAgICAgICBzdGFydEVkZ2UgKz0gYXZhaWxhYmxlRnJlZVNwYWNl
IC8gKGNoaWxkU2l6ZXMuc2l6ZSgpIC0gMSk7CkBAIC02OTcsMTEgKzY5NiwxMSBAQCB2b2lkIFJl
bmRlckZsZXhpYmxlQm94OjpsYXlvdXRBbmRQbGFjZUNoaWxkcmVuSW5saW5lRGlyZWN0aW9uKEZs
ZXhPcmRlckl0ZXJhdG9yJgogICAgIGFsaWduQ2hpbGRyZW5CbG9ja0RpcmVjdGlvbihpdGVyYXRv
ciwgbWF4QXNjZW50KTsKIH0KIAotdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6YWRqdXN0TG9jYXRp
b25Mb2dpY2FsVG9wRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgTGF5b3V0VW5pdCBkZWx0YSkK
K3ZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmFkanVzdEFsaWdubWVudEZvckNoaWxkKFJlbmRlckJv
eCogY2hpbGQsIExheW91dFVuaXQgZGVsdGEpCiB7CiAgICAgTGF5b3V0UmVjdCBvbGRSZWN0ID0g
Y2hpbGQtPmZyYW1lUmVjdCgpOwogCi0gICAgc2V0Rmxvd0F3YXJlTG9naWNhbExvY2F0aW9uRm9y
Q2hpbGQoY2hpbGQsIGZsb3dBd2FyZUxvZ2ljYWxMb2NhdGlvbkZvckNoaWxkKGNoaWxkKSArIExh
eW91dFNpemUoMCwgZGVsdGEpKTsKKyAgICBzZXRGbG93QXdhcmVMb2NhdGlvbkZvckNoaWxkKGNo
aWxkLCBmbG93QXdhcmVMb2NhdGlvbkZvckNoaWxkKGNoaWxkKSArIExheW91dFNpemUoMCwgZGVs
dGEpKTsKIAogICAgIC8vIElmIHRoZSBjaGlsZCBtb3ZlZCwgd2UgaGF2ZSB0byByZXBhaW50IGl0
IGFzIHdlbGwgYXMgYW55IGZsb2F0aW5nL3Bvc2l0aW9uZWQKICAgICAvLyBkZXNjZW5kYW50cy4g
QW4gZXhjZXB0aW9uIGlzIGlmIHdlIG5lZWQgYSBsYXlvdXQuIEluIHRoaXMgY2FzZSwgd2Uga25v
dyB3ZSdyZSBnb2luZyB0bwpAQCAtNzEyLDE0ICs3MTEsMTQgQEAgdm9pZCBSZW5kZXJGbGV4aWJs
ZUJveDo6YWRqdXN0TG9jYXRpb25Mb2dpY2FsVG9wRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwg
TGF5b3UKIAogdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6YWxpZ25DaGlsZHJlbkJsb2NrRGlyZWN0
aW9uKEZsZXhPcmRlckl0ZXJhdG9yJiBpdGVyYXRvciwgTGF5b3V0VW5pdCBtYXhBc2NlbnQpCiB7
Ci0gICAgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0ID0gZmxvd0F3YXJlTG9naWNhbEhlaWdodCgp
OworICAgIExheW91dFVuaXQgY3Jvc3NFeHRlbnQgPSBjcm9zc0F4aXNFeHRlbnQoKTsKIAogICAg
IGZvciAoUmVuZGVyQm94KiBjaGlsZCA9IGl0ZXJhdG9yLmZpcnN0KCk7IGNoaWxkOyBjaGlsZCA9
IGl0ZXJhdG9yLm5leHQoKSkgewogICAgICAgICAvLyBkaXJlY3Rpb246cnRsICsgZmxleC1mbG93
OmNvbHVtbiBtZWFucyB0aGUgY3Jvc3MtYXhpcyBkaXJlY3Rpb24gaXMgZmxpcHBlZC4KICAgICAg
ICAgaWYgKCFzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgJiYgaXNDb2x1bW5GbG93
KCkpIHsKLSAgICAgICAgICAgIExheW91dFBvaW50IGxvY2F0aW9uID0gZmxvd0F3YXJlTG9naWNh
bExvY2F0aW9uRm9yQ2hpbGQoY2hpbGQpOwotICAgICAgICAgICAgbG9jYXRpb24uc2V0WShsb2dp
Y2FsSGVpZ2h0IC0gZmxvd0F3YXJlTG9naWNhbEhlaWdodEZvckNoaWxkKGNoaWxkKSAtIGxvY2F0
aW9uLnkoKSk7Ci0gICAgICAgICAgICBzZXRGbG93QXdhcmVMb2dpY2FsTG9jYXRpb25Gb3JDaGls
ZChjaGlsZCwgbG9jYXRpb24pOworICAgICAgICAgICAgTGF5b3V0UG9pbnQgbG9jYXRpb24gPSBm
bG93QXdhcmVMb2NhdGlvbkZvckNoaWxkKGNoaWxkKTsKKyAgICAgICAgICAgIGxvY2F0aW9uLnNl
dFkoY3Jvc3NFeHRlbnQgLSBjcm9zc0F4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCkgLSBsb2NhdGlv
bi55KCkpOworICAgICAgICAgICAgc2V0Rmxvd0F3YXJlTG9jYXRpb25Gb3JDaGlsZChjaGlsZCwg
bG9jYXRpb24pOwogICAgICAgICB9CiAKICAgICAgICAgLy8gRklYTUU6IE1ha2Ugc3VyZSB0aGlz
IGRvZXMgdGhlIHJpZ2h0IHRoaW5nIHdpdGggY29sdW1uIGZsb3dzLgpAQCAtNzI4LDcgKzcyNyw3
IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmFsaWduQ2hpbGRyZW5CbG9ja0RpcmVjdGlvbihG
bGV4T3JkZXJJdGVyYXRvciYgaXRlcmF0b3IsCiAgICAgICAgICAgICBMZW5ndGggaGVpZ2h0ID0g
aXNIb3Jpem9udGFsRmxvdygpID8gY2hpbGQtPnN0eWxlKCktPmhlaWdodCgpIDogY2hpbGQtPnN0
eWxlKCktPndpZHRoKCk7CiAgICAgICAgICAgICBpZiAoaGVpZ2h0LmlzQXV0bygpKSB7CiAgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IENsYW1wIHRvIG1heC1oZWlnaHQgb25jZSBpdCdzIHNwZWMn
ZWQgKHNob3VsZCB3ZSBhbGlnbiB0b3dhcmRzIHRoZSBzdGFydCBvciBjZW50ZXI/KS4KLSAgICAg
ICAgICAgICAgICBMYXlvdXRVbml0IHN0cmV0Y2hlZEhlaWdodCA9IGxvZ2ljYWxIZWlnaHRGb3JD
aGlsZChjaGlsZCkgKyBSZW5kZXJGbGV4aWJsZUJveDo6YXZhaWxhYmxlTG9naWNhbEhlaWdodEZv
ckNoaWxkKGNoaWxkKTsKKyAgICAgICAgICAgICAgICBMYXlvdXRVbml0IHN0cmV0Y2hlZEhlaWdo
dCA9IGxvZ2ljYWxIZWlnaHRGb3JDaGlsZChjaGlsZCkgKyBSZW5kZXJGbGV4aWJsZUJveDo6YXZh
aWxhYmxlQWxpZ25tZW50U3BhY2VGb3JDaGlsZChjaGlsZCk7CiAgICAgICAgICAgICAgICAgaWYg
KGlzSG9yaXpvbnRhbEZsb3coKSkKICAgICAgICAgICAgICAgICAgICAgY2hpbGQtPnNldEhlaWdo
dChzdHJldGNoZWRIZWlnaHQpOwogICAgICAgICAgICAgICAgIGVsc2UKQEAgLTczOSwxNCArNzM4
LDE0IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmFsaWduQ2hpbGRyZW5CbG9ja0RpcmVjdGlv
bihGbGV4T3JkZXJJdGVyYXRvciYgaXRlcmF0b3IsCiAgICAgICAgIGNhc2UgQWxpZ25TdGFydDoK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFsaWduRW5kOgotICAgICAgICAgICAg
YWRqdXN0TG9jYXRpb25Mb2dpY2FsVG9wRm9yQ2hpbGQoY2hpbGQsIFJlbmRlckZsZXhpYmxlQm94
OjphdmFpbGFibGVMb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoY2hpbGQpKTsKKyAgICAgICAgICAgIGFk
anVzdEFsaWdubWVudEZvckNoaWxkKGNoaWxkLCBSZW5kZXJGbGV4aWJsZUJveDo6YXZhaWxhYmxl
QWxpZ25tZW50U3BhY2VGb3JDaGlsZChjaGlsZCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgQWxpZ25DZW50ZXI6Ci0gICAgICAgICAgICBhZGp1c3RMb2NhdGlvbkxvZ2ljYWxU
b3BGb3JDaGlsZChjaGlsZCwgUmVuZGVyRmxleGlibGVCb3g6OmF2YWlsYWJsZUxvZ2ljYWxIZWln
aHRGb3JDaGlsZChjaGlsZCkgLyAyKTsKKyAgICAgICAgICAgIGFkanVzdEFsaWdubWVudEZvckNo
aWxkKGNoaWxkLCBSZW5kZXJGbGV4aWJsZUJveDo6YXZhaWxhYmxlQWxpZ25tZW50U3BhY2VGb3JD
aGlsZChjaGlsZCkgLyAyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFsaWdu
QmFzZWxpbmU6IHsKICAgICAgICAgICAgIExheW91dFVuaXQgYXNjZW50ID0gbWFyZ2luQm94QXNj
ZW50KGNoaWxkKTsKLSAgICAgICAgICAgIGFkanVzdExvY2F0aW9uTG9naWNhbFRvcEZvckNoaWxk
KGNoaWxkLCBtYXhBc2NlbnQgLSBhc2NlbnQpOworICAgICAgICAgICAgYWRqdXN0QWxpZ25tZW50
Rm9yQ2hpbGQoY2hpbGQsIG1heEFzY2VudCAtIGFzY2VudCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmxleGlibGVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
bGV4aWJsZUJveC5oCmluZGV4IDRkYzE5NDE3OTIxMjNhY2E0NTAxMWFjNTk3Mjk4NzEzMjEwZjMz
ODcuLjMxYTVmMGQ5ZTllZWYyZGQxNmYzNTgxNTA2ZWMxNzQ4OTcwOWViNDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCkBAIC01NywyMCArNTcsMjAg
QEAgcHJpdmF0ZToKICAgICBib29sIGlzQ29sdW1uRmxvdygpIGNvbnN0OwogICAgIGJvb2wgaXNI
b3Jpem9udGFsRmxvdygpIGNvbnN0OwogICAgIGJvb2wgaXNMZWZ0VG9SaWdodEZsb3coKSBjb25z
dDsKLSAgICBib29sIGlzRmxvd0F3YXJlTG9naWNhbEhlaWdodEF1dG8oKSBjb25zdDsKLSAgICBM
ZW5ndGggZmxvd0F3YXJlTG9naWNhbFdpZHRoTGVuZ3RoRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGls
ZCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRGbG93QXdhcmVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQp
OwotICAgIExheW91dFVuaXQgZmxvd0F3YXJlTG9naWNhbEhlaWdodEZvckNoaWxkKFJlbmRlckJv
eCogY2hpbGQpOwotICAgIExheW91dFVuaXQgZmxvd0F3YXJlTG9naWNhbFdpZHRoRm9yQ2hpbGQo
UmVuZGVyQm94KiBjaGlsZCk7Ci0gICAgTGF5b3V0VW5pdCBmbG93QXdhcmVMb2dpY2FsSGVpZ2h0
KCkgY29uc3Q7Ci0gICAgTGF5b3V0VW5pdCBmbG93QXdhcmVMb2dpY2FsV2lkdGgoKSBjb25zdDsK
LSAgICBMYXlvdXRVbml0IGZsb3dBd2FyZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KCkgY29uc3Q7Ci0g
ICAgTGF5b3V0VW5pdCBmbG93QXdhcmVDb250ZW50TG9naWNhbFdpZHRoKCkgY29uc3Q7CisgICAg
TGVuZ3RoIGNyb3NzQXhpc0xlbmd0aCgpIGNvbnN0OworICAgIExlbmd0aCBtYWluQXhpc0xlbmd0
aEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpIGNvbnN0OworICAgIHZvaWQgc2V0Q3Jvc3NBeGlz
RXh0ZW50KExheW91dFVuaXQpOworICAgIExheW91dFVuaXQgY3Jvc3NBeGlzRXh0ZW50Rm9yQ2hp
bGQoUmVuZGVyQm94KiBjaGlsZCk7CisgICAgTGF5b3V0VW5pdCBtYWluQXhpc0V4dGVudEZvckNo
aWxkKFJlbmRlckJveCogY2hpbGQpOworICAgIExheW91dFVuaXQgY3Jvc3NBeGlzRXh0ZW50KCkg
Y29uc3Q7CisgICAgTGF5b3V0VW5pdCBtYWluQXhpc0V4dGVudCgpIGNvbnN0OworICAgIExheW91
dFVuaXQgY3Jvc3NBeGlzQ29udGVudEV4dGVudCgpIGNvbnN0OworICAgIExheW91dFVuaXQgbWFp
bkF4aXNDb250ZW50RXh0ZW50KCkgY29uc3Q7CiAgICAgV3JpdGluZ01vZGUgdHJhbnNmb3JtZWRX
cml0aW5nTW9kZSgpIGNvbnN0OwogICAgIExheW91dFVuaXQgZmxvd0F3YXJlQm9yZGVyU3RhcnQo
KSBjb25zdDsKICAgICBMYXlvdXRVbml0IGZsb3dBd2FyZUJvcmRlckJlZm9yZSgpIGNvbnN0Owog
ICAgIExheW91dFVuaXQgZmxvd0F3YXJlQm9yZGVyQWZ0ZXIoKSBjb25zdDsKLSAgICBMYXlvdXRV
bml0IGZsb3dBd2FyZUJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkgY29uc3Q7CisgICAg
TGF5b3V0VW5pdCBjcm9zc0F4aXNCb3JkZXJBbmRQYWRkaW5nRXh0ZW50KCkgY29uc3Q7CiAgICAg
TGF5b3V0VW5pdCBmbG93QXdhcmVQYWRkaW5nU3RhcnQoKSBjb25zdDsKICAgICBMYXlvdXRVbml0
IGZsb3dBd2FyZVBhZGRpbmdCZWZvcmUoKSBjb25zdDsKICAgICBMYXlvdXRVbml0IGZsb3dBd2Fy
ZVBhZGRpbmdBZnRlcigpIGNvbnN0OwpAQCAtNzgsMjggKzc4LDI4IEBAIHByaXZhdGU6CiAgICAg
TGF5b3V0VW5pdCBmbG93QXdhcmVNYXJnaW5FbmRGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKSBj
b25zdDsKICAgICBMYXlvdXRVbml0IGZsb3dBd2FyZU1hcmdpbkJlZm9yZUZvckNoaWxkKFJlbmRl
ckJveCogY2hpbGQpIGNvbnN0OwogICAgIExheW91dFVuaXQgZmxvd0F3YXJlTWFyZ2luQWZ0ZXJG
b3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKSBjb25zdDsKLSAgICBMYXlvdXRVbml0IGZsb3dBd2Fy
ZU1hcmdpbkxvZ2ljYWxIZWlnaHRGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKSBjb25zdDsKLSAg
ICBMYXlvdXRQb2ludCBmbG93QXdhcmVMb2dpY2FsTG9jYXRpb25Gb3JDaGlsZChSZW5kZXJCb3gq
IGNoaWxkKSBjb25zdDsKKyAgICBMYXlvdXRVbml0IGNyb3NzQXhpc01hcmdpbkV4dGVudEZvckNo
aWxkKFJlbmRlckJveCogY2hpbGQpIGNvbnN0OworICAgIExheW91dFBvaW50IGZsb3dBd2FyZUxv
Y2F0aW9uRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkgY29uc3Q7CiAgICAgdm9pZCBzZXRGbG93
QXdhcmVNYXJnaW5TdGFydEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQsIExheW91dFVuaXQpOwog
ICAgIHZvaWQgc2V0Rmxvd0F3YXJlTWFyZ2luRW5kRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwg
TGF5b3V0VW5pdCk7CiAgICAgLy8gRklYTUU6IFN1cHBvcnRpbmcgbGF5b3V0IGRlbHRhcy4KLSAg
ICB2b2lkIHNldEZsb3dBd2FyZUxvZ2ljYWxMb2NhdGlvbkZvckNoaWxkKFJlbmRlckJveCogY2hp
bGQsIGNvbnN0IExheW91dFBvaW50Jik7Ci0gICAgdm9pZCBhZGp1c3RMb2NhdGlvbkxvZ2ljYWxU
b3BGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkLCBMYXlvdXRVbml0KTsKLSAgICBMYXlvdXRVbml0
IGxvZ2ljYWxCb3JkZXJBbmRQYWRkaW5nV2lkdGhGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKSBj
b25zdDsKLSAgICBMYXlvdXRVbml0IGxvZ2ljYWxTY3JvbGxiYXJIZWlnaHRGb3JDaGlsZChSZW5k
ZXJCb3gqIGNoaWxkKSBjb25zdDsKKyAgICB2b2lkIHNldEZsb3dBd2FyZUxvY2F0aW9uRm9yQ2hp
bGQoUmVuZGVyQm94KiBjaGlsZCwgY29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2b2lkIGFkanVz
dEFsaWdubWVudEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQsIExheW91dFVuaXQpOworICAgIExh
eW91dFVuaXQgbWFpbkF4aXNCb3JkZXJBbmRQYWRkaW5nRXh0ZW50Rm9yQ2hpbGQoUmVuZGVyQm94
KiBjaGlsZCkgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBtYWluQXhpc1Njcm9sbGJhckV4dGVudEZv
ckNoaWxkKFJlbmRlckJveCogY2hpbGQpIGNvbnN0OwogICAgIExlbmd0aCBtYXJnaW5TdGFydFN0
eWxlRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkgY29uc3Q7CiAgICAgTGVuZ3RoIG1hcmdpbkVu
ZFN0eWxlRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkgY29uc3Q7Ci0gICAgTGF5b3V0VW5pdCBw
cmVmZXJyZWRMb2dpY2FsQ29udGVudFdpZHRoRm9yRmxleEl0ZW0oUmVuZGVyQm94KiBjaGlsZCkg
Y29uc3Q7CisgICAgTGF5b3V0VW5pdCBwcmVmZXJyZWRNYWluQXhpc0NvbnRlbnRFeHRlbnRGb3JG
bGV4SXRlbShSZW5kZXJCb3gqIGNoaWxkKSBjb25zdDsKIAogICAgIHZvaWQgbGF5b3V0SW5saW5l
RGlyZWN0aW9uKGJvb2wgcmVsYXlvdXRDaGlsZHJlbik7CiAKLSAgICBmbG9hdCBsb2dpY2FsUG9z
aXRpdmVGbGV4Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkgY29uc3Q7Ci0gICAgZmxvYXQgbG9n
aWNhbE5lZ2F0aXZlRmxleEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpIGNvbnN0OworICAgIGZs
b2F0IHBvc2l0aXZlRmxleEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpIGNvbnN0OworICAgIGZs
b2F0IG5lZ2F0aXZlRmxleEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpIGNvbnN0OwogCi0gICAg
TGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoUmVuZGVyQm94Kik7Cisg
ICAgTGF5b3V0VW5pdCBhdmFpbGFibGVBbGlnbm1lbnRTcGFjZUZvckNoaWxkKFJlbmRlckJveCop
OwogICAgIExheW91dFVuaXQgbWFyZ2luQm94QXNjZW50KFJlbmRlckJveCopOwogCi0gICAgdm9p
ZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRoKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgVHJl
ZU9yZGVySXRlcmF0b3ImLCBMYXlvdXRVbml0JiwgZmxvYXQmIHRvdGFsUG9zaXRpdmVGbGV4aWJp
bGl0eSwgZmxvYXQmIHRvdGFsTmVnYXRpdmVGbGV4aWJpbGl0eSk7CisgICAgdm9pZCBjb21wdXRl
UHJlZmVycmVkTWFpbkF4aXNFeHRlbnQoYm9vbCByZWxheW91dENoaWxkcmVuLCBUcmVlT3JkZXJJ
dGVyYXRvciYsIExheW91dFVuaXQmLCBmbG9hdCYgdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5LCBm
bG9hdCYgdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5KTsKICAgICBib29sIHJ1bkZyZWVTcGFjZUFs
bG9jYXRpb25BbGdvcml0aG1JbmxpbmVEaXJlY3Rpb24oRmxleE9yZGVySXRlcmF0b3ImLCBMYXlv
dXRVbml0JiBhdmFpbGFibGVGcmVlU3BhY2UsIGZsb2F0JiB0b3RhbFBvc2l0aXZlRmxleGliaWxp
dHksIGZsb2F0JiB0b3RhbE5lZ2F0aXZlRmxleGliaWxpdHksIEluZmxleGlibGVGbGV4SXRlbVNp
emUmLCBXVEY6OlZlY3RvcjxMYXlvdXRVbml0PiYgY2hpbGRTaXplcyk7CiAgICAgdm9pZCBzZXRM
b2dpY2FsT3ZlcnJpZGVTaXplKFJlbmRlckJveCogY2hpbGQsIExheW91dFVuaXQgY2hpbGRQcmVm
ZXJyZWRTaXplKTsKICAgICB2b2lkIGxheW91dEFuZFBsYWNlQ2hpbGRyZW5JbmxpbmVEaXJlY3Rp
b24oRmxleE9yZGVySXRlcmF0b3ImLCBjb25zdCBXVEY6OlZlY3RvcjxMYXlvdXRVbml0PiYgY2hp
bGRTaXplcywgTGF5b3V0VW5pdCBhdmFpbGFibGVGcmVlU3BhY2UsIGZsb2F0IHRvdGFsUG9zaXRp
dmVGbGV4aWJpbGl0eSk7Cg==
</data>
<flag name="review"
          id="110725"
          type_id="1"
          status="+"
          setter="ojan"
    />
          </attachment>
      

    </bug>

</bugzilla>