<?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>130740</bug_id>
          
          <creation_ts>2014-03-25 14:22:23 -0700</creation_ts>
          <short_desc>[CSS Shapes] Remove no-longer-used shape-inside geometry code</short_desc>
          <delta_ts>2015-11-12 21:03:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</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>
          <dependson>130698</dependson>
          <blocked>130916</blocked>
    
    <blocked>130975</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hans Muller">giles_joplin</reporter>
          <assigned_to name="Hans Muller">giles_joplin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>p.szymanski3</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>994332</commentid>
    <comment_count>0</comment_count>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2014-03-25 14:22:23 -0700</bug_when>
    <thetext>Remove the support for shape-inside from the geometry classes: BoxShape, RectangleShape, PolygonShape, RasterShape.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994669</commentid>
    <comment_count>1</comment_count>
      <attachid>227872</attachid>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2014-03-26 12:11:34 -0700</bug_when>
    <thetext>Created attachment 227872
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994692</commentid>
    <comment_count>2</comment_count>
      <attachid>227872</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2014-03-26 13:38:10 -0700</bug_when>
    <thetext>Comment on attachment 227872
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994704</commentid>
    <comment_count>3</comment_count>
      <attachid>227872</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-26 14:07:16 -0700</bug_when>
    <thetext>Comment on attachment 227872
Patch

Clearing flags on attachment: 227872

Committed r166316: &lt;http://trac.webkit.org/changeset/166316&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994705</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-26 14:07:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141746</commentid>
    <comment_count>5</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-11-12 21:03:12 -0800</bug_when>
    <thetext>*** Bug 124638 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227872</attachid>
            <date>2014-03-26 12:11:34 -0700</date>
            <delta_ts>2014-03-26 14:07:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>removeshapepadding.patch</filename>
            <type>text/plain</type>
            <size>41634</size>
            <attacher name="Zoltan Horvath">zoltan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhOTI0ZjI3Li45ZDhkNmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNjUg
QEAKIDIwMTQtMDMtMjYgIFpvbHRhbiBIb3J2YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+CiAKKyAg
ICAgICAgW0NTUyBTaGFwZXNdIFJlbW92ZSBuby1sb25nZXItdXNlZCBzaGFwZS1pbnNpZGUgZ2Vv
bWV0cnkgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTMwNzQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCByZW1vdmVzIHNoYXBlLXBhZGRpbmcgc3VwcG9ydCwgc2luY2UgaXQgY2Fu
IGJlIHVzZWQgb25seSB3aXRoIHNoYXBlLWluc2lkZS4KKyAgICAgICAgU2hhcGUtaW5zaWRlIHN1
cHBvcnQgaGFzIGJlZW4gcmVtb3ZlZCBpbiByMTY2MzAxLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyBuZWVkZWQsIGV4aXN0aW5nIHRlc3RzIGhhdmUgYmVlbiByZW1vdmVkIGJ5IHIxNjYzMDEuCisK
KyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL0JveFNoYXBlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkJveFNoYXBlOjpzaGFwZVBhZGRpbmdMb2dpY2FsQm91bmRpbmdCb3gpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Qm94U2hhcGU6OnNoYXBlUGFkZGluZ0JvdW5kcyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpCb3hTaGFwZTo6Z2V0SW5jbHVkZWRJbnRlcnZhbHMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6Qm94U2hhcGU6OmZpcnN0SW5jbHVkZWRJbnRlcnZhbExv
Z2ljYWxUb3ApOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvQm94U2hhcGUu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpsZWZ0U2lkZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc1JlZmxl
eFZlcnRleCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlU2hhcGVQYWRkaW5n
Qm91bmRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBvbHlnb25TaGFwZTo6c2hhcGVQ
YWRkaW5nQm91bmRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBvbHlnb25TaGFwZTo6
Z2V0SW5jbHVkZWRJbnRlcnZhbHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Zmlyc3RG
aXRSZWN0SW5Qb2x5Z29uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFib3ZlT3JUb1Ro
ZUxlZnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UG9seWdvblNoYXBlOjpmaXJzdElu
Y2x1ZGVkSW50ZXJ2YWxMb2dpY2FsVG9wKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcv
c2hhcGVzL1BvbHlnb25TaGFwZS5oOgorICAgICAgICAoV2ViQ29yZTo6UG9seWdvblNoYXBlOjpQ
b2x5Z29uU2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGVJbnRlcnZhbHM6OmZpcnN0SW5jbHVkZWRJ
bnRlcnZhbFkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGVJbnRlcnZh
bHM6OmdldEluY2x1ZGVkSW50ZXJ2YWxzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJh
c3RlclNoYXBlOjpwYWRkaW5nSW50ZXJ2YWxzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlJhc3RlclNoYXBlOjpnZXRJbmNsdWRlZEludGVydmFscyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSYXN0ZXJTaGFwZTo6Zmlyc3RJbmNsdWRlZEludGVydmFsTG9naWNhbFRvcCk6IERl
bGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9zaGFwZXMvUmVjdGFuZ2xlU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZWxsaXBzZVlJbnRlcmNlcHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVjdGFu
Z2xlU2hhcGU6OnNoYXBlUGFkZGluZ0JvdW5kcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpSZWN0YW5nbGVTaGFwZTo6Z2V0SW5jbHVkZWRJbnRlcnZhbHMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Y29ybmVySW50ZXJjZXB0Rm9yV2lkdGgpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVjdGFuZ2xlU2hhcGU6OmZpcnN0SW5jbHVkZWRJbnRlcnZhbExvZ2ljYWxUb3Ap
OiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUmVjdGFuZ2xlU2hhcGUuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXBlOjpjcmVhdGVTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZTo6Y3JlYXRlUmFz
dGVyU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZUJveFNoYXBlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFw
ZTo6bGluZU92ZXJsYXBzU2hhcGVQYWRkaW5nQm91bmRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNoYXBlOjpzaGFwZVBhZGRpbmcpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmlu
Zy9zaGFwZXMvU2hhcGVJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlSW5mbzxSZW5k
ZXJUeXBlPjo6Y29tcHV0ZWRTaGFwZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJl
c0xheW91dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5o
ZXJpdGVkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
OjpvcGVyYXRvcj09KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5o
ZXJpdGVkRGF0YS5oOgorCisyMDE0LTAzLTI2ICBab2x0YW4gSG9ydmF0aCAgPHpvbHRhbkB3ZWJr
aXQub3JnPgorCiAgICAgICAgIFtDU1MgU2hhcGVzXSBSZW1vdmUgc2hhcGUtaW5zaWRlIHN1cHBv
cnQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDY5
OAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL0JveFNoYXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvQm94U2hhcGUuY3BwCmluZGV4
IDU2ODdlYzguLmNiNDhiOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
aGFwZXMvQm94U2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMv
Qm94U2hhcGUuY3BwCkBAIC00MiwxNCArNDIsNiBAQCBMYXlvdXRSZWN0IEJveFNoYXBlOjpzaGFw
ZU1hcmdpbkxvZ2ljYWxCb3VuZGluZ0JveCgpIGNvbnN0CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PExheW91dFJlY3Q+KG1hcmdpbkJvdW5kcyk7CiB9CiAKLUxheW91dFJlY3QgQm94U2hhcGU6OnNo
YXBlUGFkZGluZ0xvZ2ljYWxCb3VuZGluZ0JveCgpIGNvbnN0Ci17Ci0gICAgRmxvYXRSZWN0IHBh
ZGRpbmdCb3VuZHMobV9ib3VuZHMucmVjdCgpKTsKLSAgICBpZiAoc2hhcGVQYWRkaW5nKCkgPiAw
KQotICAgICAgICBwYWRkaW5nQm91bmRzLmluZmxhdGUoLXNoYXBlUGFkZGluZygpKTsKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8TGF5b3V0UmVjdD4ocGFkZGluZ0JvdW5kcyk7Ci19Ci0KIEZsb2F0
Um91bmRlZFJlY3QgQm94U2hhcGU6OnNoYXBlTWFyZ2luQm91bmRzKCkgY29uc3QKIHsKICAgICBG
bG9hdFJvdW5kZWRSZWN0IG1hcmdpbkJvdW5kcyhtX2JvdW5kcyk7CkBAIC02MCwxNiArNTIsNiBA
QCBGbG9hdFJvdW5kZWRSZWN0IEJveFNoYXBlOjpzaGFwZU1hcmdpbkJvdW5kcygpIGNvbnN0CiAg
ICAgcmV0dXJuIG1hcmdpbkJvdW5kczsKIH0KIAotRmxvYXRSb3VuZGVkUmVjdCBCb3hTaGFwZTo6
c2hhcGVQYWRkaW5nQm91bmRzKCkgY29uc3QKLXsKLSAgICBGbG9hdFJvdW5kZWRSZWN0IHBhZGRp
bmdCb3VuZHMobV9ib3VuZHMpOwotICAgIGlmIChzaGFwZVBhZGRpbmcoKSA+IDApIHsKLSAgICAg
ICAgcGFkZGluZ0JvdW5kcy5pbmZsYXRlKC1zaGFwZVBhZGRpbmcoKSk7Ci0gICAgICAgIHBhZGRp
bmdCb3VuZHMuZXhwYW5kUmFkaWkoLXNoYXBlUGFkZGluZygpKTsKLSAgICB9Ci0gICAgcmV0dXJu
IHBhZGRpbmdCb3VuZHM7Ci19Ci0KIHZvaWQgQm94U2hhcGU6OmdldEV4Y2x1ZGVkSW50ZXJ2YWxz
KExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBTZWdtZW50
TGlzdCYgcmVzdWx0KSBjb25zdAogewogICAgIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIG1hcmdp
bkJvdW5kcyA9IHNoYXBlTWFyZ2luQm91bmRzKCk7CkBAIC0xMTIsNTAgKzk0LDYgQEAgdm9pZCBC
b3hTaGFwZTo6Z2V0RXhjbHVkZWRJbnRlcnZhbHMoTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlv
dXRVbml0IGxvZ2ljYWxIZWkKICAgICByZXN1bHQuYXBwZW5kKExpbmVTZWdtZW50KHgxLCB4Mikp
OwogfQogCi12b2lkIEJveFNoYXBlOjpnZXRJbmNsdWRlZEludGVydmFscyhMYXlvdXRVbml0IGxv
Z2ljYWxUb3AsIExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgU2VnbWVudExpc3QmIHJlc3VsdCkg
Y29uc3QKLXsKLSAgICBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBwYWRkaW5nQm91bmRzID0gc2hh
cGVQYWRkaW5nQm91bmRzKCk7Ci0gICAgaWYgKHBhZGRpbmdCb3VuZHMuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBjb25zdCBGbG9hdFJlY3QmIHJlY3QgPSBwYWRkaW5nQm91bmRz
LnJlY3QoKTsKLSAgICBmbG9hdCB5MSA9IGxvZ2ljYWxUb3A7Ci0gICAgZmxvYXQgeTIgPSBsb2dp
Y2FsVG9wICsgbG9naWNhbEhlaWdodDsKLQotICAgIGlmICh5MSA8IHJlY3QueSgpIHx8IHkyID4g
cmVjdC5tYXhZKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghcGFkZGluZ0JvdW5kcy5p
c1JvdW5kZWQoKSkgewotICAgICAgICByZXN1bHQuYXBwZW5kKExpbmVTZWdtZW50KHJlY3QueCgp
LCByZWN0Lm1heFgoKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZmxvYXQgeDEg
PSByZWN0LngoKTsKLSAgICBmbG9hdCB4MiA9IHJlY3QubWF4WCgpOwotICAgIGZsb2F0IG1pblhJ
bnRlcmNlcHQ7Ci0gICAgZmxvYXQgbWF4WEludGVyY2VwdDsKLQotICAgIGlmIChwYWRkaW5nQm91
bmRzLnhJbnRlcmNlcHRzQXRZKHkxLCBtaW5YSW50ZXJjZXB0LCBtYXhYSW50ZXJjZXB0KSkgewot
ICAgICAgICB4MSA9IHN0ZDo6bWF4PGZsb2F0Pih4MSwgbWluWEludGVyY2VwdCk7Ci0gICAgICAg
IHgyID0gc3RkOjptaW48ZmxvYXQ+KHgyLCBtYXhYSW50ZXJjZXB0KTsKLSAgICB9Ci0KLSAgICBp
ZiAocGFkZGluZ0JvdW5kcy54SW50ZXJjZXB0c0F0WSh5MiwgbWluWEludGVyY2VwdCwgbWF4WElu
dGVyY2VwdCkpIHsKLSAgICAgICAgeDEgPSBzdGQ6Om1heDxmbG9hdD4oeDEsIG1pblhJbnRlcmNl
cHQpOwotICAgICAgICB4MiA9IHN0ZDo6bWluPGZsb2F0Pih4MiwgbWF4WEludGVyY2VwdCk7Ci0g
ICAgfQotCi0gICAgcmVzdWx0LmFwcGVuZChMaW5lU2VnbWVudCh4MSwgeDIpKTsKLX0KLQotYm9v
bCBCb3hTaGFwZTo6Zmlyc3RJbmNsdWRlZEludGVydmFsTG9naWNhbFRvcChMYXlvdXRVbml0IG1p
bkxvZ2ljYWxJbnRlcnZhbFRvcCwgY29uc3QgRmxvYXRTaXplJiwgTGF5b3V0VW5pdCYgcmVzdWx0
KSBjb25zdAotewotICAgIC8vIEZJWE1FOiB0aGlzIG1ldGhvZCBpcyBvbmx5IGEgc3R1YiwgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDYwNi4KLQotICAgIHJlc3Vs
dCA9IG1pbkxvZ2ljYWxJbnRlcnZhbFRvcDsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogdm9pZCBC
b3hTaGFwZTo6YnVpbGREaXNwbGF5UGF0aHMoRGlzcGxheVBhdGhzJiBwYXRocykgY29uc3QKIHsK
ICAgICBwYXRocy5zaGFwZS5hZGRSb3VuZGVkUmVjdChtX2JvdW5kcywgUGF0aDo6UHJlZmVyQmV6
aWVyUm91bmRlZFJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3No
YXBlcy9Cb3hTaGFwZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Cb3hTaGFw
ZS5oCmluZGV4IDk3NTU3OGQuLmExNTgwYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zaGFwZXMvQm94U2hhcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL0JveFNoYXBlLmgKQEAgLTQzLDE3ICs0MywxMyBAQCBwdWJsaWM6CiAgICAgfQogCiAg
ICAgdmlydHVhbCBMYXlvdXRSZWN0IHNoYXBlTWFyZ2luTG9naWNhbEJvdW5kaW5nQm94KCkgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IHNoYXBlUGFkZGluZ0xvZ2ljYWxC
b3VuZGluZ0JveCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9ib3VuZHMuaXNFbXB0eSgpOyB9CiAgICAgdmlydHVh
bCB2b2lkIGdldEV4Y2x1ZGVkSW50ZXJ2YWxzKExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0
VW5pdCBsb2dpY2FsSGVpZ2h0LCBTZWdtZW50TGlzdCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRJbmNsdWRlZEludGVydmFscyhMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExh
eW91dFVuaXQgbG9naWNhbEhlaWdodCwgU2VnbWVudExpc3QmKSBjb25zdCBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIGJvb2wgZmlyc3RJbmNsdWRlZEludGVydmFsTG9naWNhbFRvcChMYXlvdXRVbml0
IG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCwgY29uc3QgRmxvYXRTaXplJiBtaW5Mb2dpY2FsSW50ZXJ2
YWxTaXplLCBMYXlvdXRVbml0JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQg
YnVpbGREaXNwbGF5UGF0aHMoRGlzcGxheVBhdGhzJikgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6CiAgICAgRmxvYXRSb3VuZGVkUmVjdCBzaGFwZU1hcmdpbkJvdW5kcygpIGNvbnN0OwotICAg
IEZsb2F0Um91bmRlZFJlY3Qgc2hhcGVQYWRkaW5nQm91bmRzKCkgY29uc3Q7CiAKICAgICBGbG9h
dFJvdW5kZWRSZWN0IG1fYm91bmRzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvUG9seWdvblNoYXBlLmNwcAppbmRleCA4ZTI0MWViLi5hZWEwMWNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUuY3BwCkBAIC00
OCwxNiArNDgsNiBAQCBzdHJ1Y3QgRWRnZUludGVyc2VjdGlvbiB7CiAgICAgRWRnZUludGVyc2Vj
dGlvblR5cGUgdHlwZTsKIH07CiAKLXN0YXRpYyBpbmxpbmUgZmxvYXQgbGVmdFNpZGUoY29uc3Qg
RmxvYXRQb2ludCYgdmVydGV4MSwgY29uc3QgRmxvYXRQb2ludCYgdmVydGV4MiwgY29uc3QgRmxv
YXRQb2ludCYgcG9pbnQpCi17Ci0gICAgcmV0dXJuICgocG9pbnQueCgpIC0gdmVydGV4MS54KCkp
ICogKHZlcnRleDIueSgpIC0gdmVydGV4MS55KCkpKSAtICgodmVydGV4Mi54KCkgLSB2ZXJ0ZXgx
LngoKSkgKiAocG9pbnQueSgpIC0gdmVydGV4MS55KCkpKTsKLX0KLQotc3RhdGljIGlubGluZSBi
b29sIGlzUmVmbGV4VmVydGV4KGNvbnN0IEZsb2F0UG9pbnQmIHByZXZWZXJ0ZXgsIGNvbnN0IEZs
b2F0UG9pbnQmIHZlcnRleCwgY29uc3QgRmxvYXRQb2ludCYgbmV4dFZlcnRleCkKLXsKLSAgICBy
ZXR1cm4gbGVmdFNpZGUocHJldlZlcnRleCwgbmV4dFZlcnRleCwgdmVydGV4KSA8IDA7Ci19Ci0K
IHN0YXRpYyBib29sIGNvbXB1dGVYSW50ZXJzZWN0aW9uKGNvbnN0IEZsb2F0UG9seWdvbkVkZ2Uq
IGVkZ2VQb2ludGVyLCBmbG9hdCB5LCBFZGdlSW50ZXJzZWN0aW9uJiByZXN1bHQpCiB7CiAgICAg
Y29uc3QgRmxvYXRQb2x5Z29uRWRnZSYgZWRnZSA9ICplZGdlUG9pbnRlcjsKQEAgLTEzNiwyNyAr
MTI2LDYgQEAgc3RhdGljIGlubGluZSB2b2lkIHNuYXBWZXJ0aWNlc1RvTGF5b3V0VW5pdEdyaWQo
VmVjdG9yPEZsb2F0UG9pbnQ+JiB2ZXJ0aWNlcykKICAgICAgICAgdmVydGljZXNbaV0uc2V0KExh
eW91dFVuaXQodmVydGljZXNbaV0ueCgpKS50b0Zsb2F0KCksIExheW91dFVuaXQodmVydGljZXNb
aV0ueSgpKS50b0Zsb2F0KCkpOwogfQogCi1zdGF0aWMgaW5saW5lIFBhc3NPd25QdHI8RmxvYXRQ
b2x5Z29uPiBjb21wdXRlU2hhcGVQYWRkaW5nQm91bmRzKGNvbnN0IEZsb2F0UG9seWdvbiYgcG9s
eWdvbiwgZmxvYXQgcGFkZGluZywgV2luZFJ1bGUgZmlsbFJ1bGUpCi17Ci0gICAgT3duUHRyPFZl
Y3RvcjxGbG9hdFBvaW50Pj4gcGFkZGVkVmVydGljZXMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPEZs
b2F0UG9pbnQ+KCkpOwotICAgIEZsb2F0UG9pbnQgaW50ZXJzZWN0aW9uOwotCi0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHBvbHlnb24ubnVtYmVyT2ZFZGdlcygpOyArK2kpIHsKLSAgICAg
ICAgY29uc3QgRmxvYXRQb2x5Z29uRWRnZSYgdGhpc0VkZ2UgPSBwb2x5Z29uLmVkZ2VBdChpKTsK
LSAgICAgICAgY29uc3QgRmxvYXRQb2x5Z29uRWRnZSYgcHJldkVkZ2UgPSB0aGlzRWRnZS5wcmV2
aW91c0VkZ2UoKTsKLSAgICAgICAgT2Zmc2V0UG9seWdvbkVkZ2UgdGhpc09mZnNldEVkZ2UodGhp
c0VkZ2UsIGlud2FyZEVkZ2VOb3JtYWwodGhpc0VkZ2UpICogcGFkZGluZyk7Ci0gICAgICAgIE9m
ZnNldFBvbHlnb25FZGdlIHByZXZPZmZzZXRFZGdlKHByZXZFZGdlLCBpbndhcmRFZGdlTm9ybWFs
KHByZXZFZGdlKSAqIHBhZGRpbmcpOwotCi0gICAgICAgIGlmIChwcmV2T2Zmc2V0RWRnZS5pbnRl
cnNlY3Rpb24odGhpc09mZnNldEVkZ2UsIGludGVyc2VjdGlvbikpCi0gICAgICAgICAgICBwYWRk
ZWRWZXJ0aWNlcy0+YXBwZW5kKGludGVyc2VjdGlvbik7Ci0gICAgICAgIGVsc2UgaWYgKGlzUmVm
bGV4VmVydGV4KHByZXZFZGdlLnZlcnRleDEoKSwgdGhpc0VkZ2UudmVydGV4MSgpLCB0aGlzRWRn
ZS52ZXJ0ZXgyKCkpKQotICAgICAgICAgICAgYXBwZW5kQXJjKCpwYWRkZWRWZXJ0aWNlcywgdGhp
c0VkZ2UudmVydGV4MSgpLCBwYWRkaW5nLCBwcmV2T2Zmc2V0RWRnZS52ZXJ0ZXgyKCksIHRoaXNP
ZmZzZXRFZGdlLnZlcnRleDEoKSwgdHJ1ZSk7Ci0gICAgfQotCi0gICAgc25hcFZlcnRpY2VzVG9M
YXlvdXRVbml0R3JpZCgqcGFkZGVkVmVydGljZXMpOwotICAgIHJldHVybiBhZG9wdFB0cihuZXcg
RmxvYXRQb2x5Z29uKHBhZGRlZFZlcnRpY2VzLnJlbGVhc2UoKSwgZmlsbFJ1bGUpKTsKLX0KLQog
c3RhdGljIGlubGluZSBQYXNzT3duUHRyPEZsb2F0UG9seWdvbj4gY29tcHV0ZVNoYXBlTWFyZ2lu
Qm91bmRzKGNvbnN0IEZsb2F0UG9seWdvbiYgcG9seWdvbiwgZmxvYXQgbWFyZ2luLCBXaW5kUnVs
ZSBmaWxsUnVsZSkKIHsKICAgICBPd25QdHI8VmVjdG9yPEZsb2F0UG9pbnQ+PiBtYXJnaW5WZXJ0
aWNlcyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8RmxvYXRQb2ludD4oKSk7CkBAIC0xNzgsMTcgKzE0
Nyw2IEBAIHN0YXRpYyBpbmxpbmUgUGFzc093blB0cjxGbG9hdFBvbHlnb24+IGNvbXB1dGVTaGFw
ZU1hcmdpbkJvdW5kcyhjb25zdCBGbG9hdFBvbHlnCiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBG
bG9hdFBvbHlnb24obWFyZ2luVmVydGljZXMucmVsZWFzZSgpLCBmaWxsUnVsZSkpOwogfQogCi1j
b25zdCBGbG9hdFBvbHlnb24mIFBvbHlnb25TaGFwZTo6c2hhcGVQYWRkaW5nQm91bmRzKCkgY29u
c3QKLXsKLSAgICBBU1NFUlQoc2hhcGVQYWRkaW5nKCkgPj0gMCk7Ci0gICAgaWYgKCFzaGFwZVBh
ZGRpbmcoKSB8fCBtX3BvbHlnb24uaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbV9wb2x5Z29u
OwotCi0gICAgaWYgKCFtX3BhZGRpbmdCb3VuZHMpCi0gICAgICAgIG1fcGFkZGluZ0JvdW5kcyA9
IGNvbXB1dGVTaGFwZVBhZGRpbmdCb3VuZHMobV9wb2x5Z29uLCBzaGFwZVBhZGRpbmcoKSwgbV9w
b2x5Z29uLmZpbGxSdWxlKCkpOwotCi0gICAgcmV0dXJuICptX3BhZGRpbmdCb3VuZHM7Ci19CiAK
IGNvbnN0IEZsb2F0UG9seWdvbiYgUG9seWdvblNoYXBlOjpzaGFwZU1hcmdpbkJvdW5kcygpIGNv
bnN0CiB7CkBAIC0zODcsMTQyICszNDUsNiBAQCB2b2lkIFBvbHlnb25TaGFwZTo6Z2V0RXhjbHVk
ZWRJbnRlcnZhbHMoTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0IGxvZ2ljYQogICAg
IH0KIH0KIAotdm9pZCBQb2x5Z29uU2hhcGU6OmdldEluY2x1ZGVkSW50ZXJ2YWxzKExheW91dFVu
aXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBTZWdtZW50TGlzdCYgcmVz
dWx0KSBjb25zdAotewotICAgIGNvbnN0IEZsb2F0UG9seWdvbiYgcG9seWdvbiA9IHNoYXBlUGFk
ZGluZ0JvdW5kcygpOwotICAgIGlmIChwb2x5Z29uLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgZmxvYXQgeTEgPSBsb2dpY2FsVG9wOwotICAgIGZsb2F0IHkyID0gbG9naWNhbFRv
cCArIGxvZ2ljYWxIZWlnaHQ7Ci0KLSAgICBGbG9hdFNoYXBlSW50ZXJ2YWxzIHkxWEludGVydmFs
cywgeTJYSW50ZXJ2YWxzOwotICAgIGNvbXB1dGVYSW50ZXJzZWN0aW9ucyhwb2x5Z29uLCB5MSwg
dHJ1ZSwgeTFYSW50ZXJ2YWxzKTsKLSAgICBjb21wdXRlWEludGVyc2VjdGlvbnMocG9seWdvbiwg
eTIsIGZhbHNlLCB5MlhJbnRlcnZhbHMpOwotCi0gICAgRmxvYXRTaGFwZUludGVydmFscyBjb21t
b25JbnRlcnZhbHM7Ci0gICAgRmxvYXRTaGFwZUludGVydmFsOjppbnRlcnNlY3RTaGFwZUludGVy
dmFscyh5MVhJbnRlcnZhbHMsIHkyWEludGVydmFscywgY29tbW9uSW50ZXJ2YWxzKTsKLQotICAg
IEZsb2F0U2hhcGVJbnRlcnZhbHMgZWRnZUludGVydmFsczsKLSAgICBjb21wdXRlT3ZlcmxhcHBp
bmdFZGdlWFByb2plY3Rpb25zKHBvbHlnb24sIHkxLCB5MiwgZWRnZUludGVydmFscyk7Ci0KLSAg
ICBGbG9hdFNoYXBlSW50ZXJ2YWxzIGluY2x1ZGVkSW50ZXJ2YWxzOwotICAgIEZsb2F0U2hhcGVJ
bnRlcnZhbDo6c3VidHJhY3RTaGFwZUludGVydmFscyhjb21tb25JbnRlcnZhbHMsIGVkZ2VJbnRl
cnZhbHMsIGluY2x1ZGVkSW50ZXJ2YWxzKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBpbmNsdWRlZEludGVydmFscy5zaXplKCk7ICsraSkgewotICAgICAgICBjb25zdCBGbG9hdFNo
YXBlSW50ZXJ2YWwmIGludGVydmFsID0gaW5jbHVkZWRJbnRlcnZhbHNbaV07Ci0gICAgICAgIHJl
c3VsdC5hcHBlbmQoTGluZVNlZ21lbnQoaW50ZXJ2YWwueDEoKSwgaW50ZXJ2YWwueDIoKSkpOwot
ICAgIH0KLX0KLQotc3RhdGljIGlubGluZSBib29sIGZpcnN0Rml0UmVjdEluUG9seWdvbihjb25z
dCBGbG9hdFBvbHlnb24mIHBvbHlnb24sIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgdW5zaWduZWQg
b2Zmc2V0RWRnZUluZGV4MSwgdW5zaWduZWQgb2Zmc2V0RWRnZUluZGV4MikKLXsKLSAgICBWZWN0
b3I8Y29uc3QgRmxvYXRQb2x5Z29uRWRnZSo+IGVkZ2VzOwotICAgIGlmICghcG9seWdvbi5vdmVy
bGFwcGluZ0VkZ2VzKHJlY3QueSgpLCByZWN0Lm1heFkoKSwgZWRnZXMpKQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBlZGdlcy5zaXplKCk7ICsr
aSkgewotICAgICAgICBjb25zdCBGbG9hdFBvbHlnb25FZGdlKiBlZGdlID0gZWRnZXNbaV07Ci0g
ICAgICAgIGlmIChlZGdlLT5lZGdlSW5kZXgoKSAhPSBvZmZzZXRFZGdlSW5kZXgxICYmIGVkZ2Ut
PmVkZ2VJbmRleCgpICE9IG9mZnNldEVkZ2VJbmRleDIgJiYgZWRnZS0+b3ZlcmxhcHNSZWN0KHJl
Y3QpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVl
OwotfQotCi1zdGF0aWMgaW5saW5lIGJvb2wgYWJvdmVPclRvVGhlTGVmdChjb25zdCBGbG9hdFJl
Y3QmIHIxLCBjb25zdCBGbG9hdFJlY3QmIHIyKQotewotICAgIGlmIChyMS55KCkgPCByMi55KCkp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChyMS55KCkgPT0gcjIueSgpKQotICAgICAg
ICByZXR1cm4gcjEueCgpIDwgcjIueCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBQ
b2x5Z29uU2hhcGU6OmZpcnN0SW5jbHVkZWRJbnRlcnZhbExvZ2ljYWxUb3AoTGF5b3V0VW5pdCBt
aW5Mb2dpY2FsSW50ZXJ2YWxUb3AsIGNvbnN0IEZsb2F0U2l6ZSYgbWluTG9naWNhbEludGVydmFs
U2l6ZSwgTGF5b3V0VW5pdCYgcmVzdWx0KSBjb25zdAotewotICAgIGZsb2F0IG1pbkludGVydmFs
VG9wID0gbWluTG9naWNhbEludGVydmFsVG9wOwotICAgIGZsb2F0IG1pbkludGVydmFsSGVpZ2h0
ID0gbWluTG9naWNhbEludGVydmFsU2l6ZS5oZWlnaHQoKTsKLSAgICBmbG9hdCBtaW5JbnRlcnZh
bFdpZHRoID0gbWluTG9naWNhbEludGVydmFsU2l6ZS53aWR0aCgpOwotCi0gICAgY29uc3QgRmxv
YXRQb2x5Z29uJiBwb2x5Z29uID0gc2hhcGVQYWRkaW5nQm91bmRzKCk7Ci0gICAgY29uc3QgRmxv
YXRSZWN0IGJvdW5kaW5nQm94ID0gcG9seWdvbi5ib3VuZGluZ0JveCgpOwotICAgIGlmIChtaW5J
bnRlcnZhbFdpZHRoID4gYm91bmRpbmdCb3gud2lkdGgoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgZmxvYXQgbWluWSA9IHN0ZDo6bWF4KGJvdW5kaW5nQm94LnkoKSwgbWluSW50ZXJ2
YWxUb3ApOwotICAgIGZsb2F0IG1heFkgPSBtaW5ZICsgbWluSW50ZXJ2YWxIZWlnaHQ7Ci0KLSAg
ICBpZiAobWF4WSA+IGJvdW5kaW5nQm94Lm1heFkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgVmVjdG9yPGNvbnN0IEZsb2F0UG9seWdvbkVkZ2UqPiBlZGdlczsKLSAgICBwb2x5Z29u
Lm92ZXJsYXBwaW5nRWRnZXMobWluSW50ZXJ2YWxUb3AsIGJvdW5kaW5nQm94Lm1heFkoKSwgZWRn
ZXMpOwotCi0gICAgZmxvYXQgZHggPSBtaW5JbnRlcnZhbFdpZHRoIC8gMjsKLSAgICBmbG9hdCBk
eSA9IG1pbkludGVydmFsSGVpZ2h0IC8gMjsKLSAgICBWZWN0b3I8T2Zmc2V0UG9seWdvbkVkZ2U+
IG9mZnNldEVkZ2VzOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGVkZ2VzLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IEZsb2F0UG9seWdvbkVkZ2UmIGVkZ2UgPSAqKGVkZ2Vz
W2ldKTsKLSAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgdmVydGV4MCA9IGVkZ2UucHJldmlvdXNF
ZGdlKCkudmVydGV4MSgpOwotICAgICAgICBjb25zdCBGbG9hdFBvaW50JiB2ZXJ0ZXgxID0gZWRn
ZS52ZXJ0ZXgxKCk7Ci0gICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHZlcnRleDIgPSBlZGdlLnZl
cnRleDIoKTsKLSAgICAgICAgVmVjdG9yPE9mZnNldFBvbHlnb25FZGdlPiBvZmZzZXRFZGdlQnVm
ZmVyOwotCi0gICAgICAgIGlmICh2ZXJ0ZXgyLnkoKSA+IHZlcnRleDEueSgpID8gdmVydGV4Mi54
KCkgPj0gdmVydGV4MS54KCkgOiB2ZXJ0ZXgxLngoKSA+PSB2ZXJ0ZXgyLngoKSkgewotICAgICAg
ICAgICAgb2Zmc2V0RWRnZUJ1ZmZlci5hcHBlbmQoT2Zmc2V0UG9seWdvbkVkZ2UoZWRnZSwgRmxv
YXRTaXplKGR4LCAtZHkpKSk7Ci0gICAgICAgICAgICBvZmZzZXRFZGdlQnVmZmVyLmFwcGVuZChP
ZmZzZXRQb2x5Z29uRWRnZShlZGdlLCBGbG9hdFNpemUoLWR4LCBkeSkpKTsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIG9mZnNldEVkZ2VCdWZmZXIuYXBwZW5kKE9mZnNldFBvbHlnb25F
ZGdlKGVkZ2UsIEZsb2F0U2l6ZShkeCwgZHkpKSk7Ci0gICAgICAgICAgICBvZmZzZXRFZGdlQnVm
ZmVyLmFwcGVuZChPZmZzZXRQb2x5Z29uRWRnZShlZGdlLCBGbG9hdFNpemUoLWR4LCAtZHkpKSk7
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaXNSZWZsZXhWZXJ0ZXgodmVydGV4MCwgdmVydGV4
MSwgdmVydGV4MikpIHsKLSAgICAgICAgICAgIGlmICh2ZXJ0ZXgyLngoKSA8PSB2ZXJ0ZXgxLngo
KSAmJiB2ZXJ0ZXgwLngoKSA8PSB2ZXJ0ZXgxLngoKSkKLSAgICAgICAgICAgICAgICBvZmZzZXRF
ZGdlQnVmZmVyLmFwcGVuZChPZmZzZXRQb2x5Z29uRWRnZSh2ZXJ0ZXgxLCBGbG9hdFNpemUoZHgs
IC1keSksIEZsb2F0U2l6ZShkeCwgZHkpKSk7Ci0gICAgICAgICAgICBlbHNlIGlmICh2ZXJ0ZXgy
LngoKSA+PSB2ZXJ0ZXgxLngoKSAmJiB2ZXJ0ZXgwLngoKSA+PSB2ZXJ0ZXgxLngoKSkKLSAgICAg
ICAgICAgICAgICBvZmZzZXRFZGdlQnVmZmVyLmFwcGVuZChPZmZzZXRQb2x5Z29uRWRnZSh2ZXJ0
ZXgxLCBGbG9hdFNpemUoLWR4LCAtZHkpLCBGbG9hdFNpemUoLWR4LCBkeSkpKTsKLSAgICAgICAg
ICAgIGlmICh2ZXJ0ZXgyLnkoKSA8PSB2ZXJ0ZXgxLnkoKSAmJiB2ZXJ0ZXgwLnkoKSA8PSB2ZXJ0
ZXgxLnkoKSkKLSAgICAgICAgICAgICAgICBvZmZzZXRFZGdlQnVmZmVyLmFwcGVuZChPZmZzZXRQ
b2x5Z29uRWRnZSh2ZXJ0ZXgxLCBGbG9hdFNpemUoLWR4LCBkeSksIEZsb2F0U2l6ZShkeCwgZHkp
KSk7Ci0gICAgICAgICAgICBlbHNlIGlmICh2ZXJ0ZXgyLnkoKSA+PSB2ZXJ0ZXgxLnkoKSAmJiB2
ZXJ0ZXgwLnkoKSA+PSB2ZXJ0ZXgxLnkoKSkKLSAgICAgICAgICAgICAgICBvZmZzZXRFZGdlQnVm
ZmVyLmFwcGVuZChPZmZzZXRQb2x5Z29uRWRnZSh2ZXJ0ZXgxLCBGbG9hdFNpemUoLWR4LCAtZHkp
LCBGbG9hdFNpemUoZHgsIC1keSkpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZvciAodW5zaWdu
ZWQgaiA9IDA7IGogPCBvZmZzZXRFZGdlQnVmZmVyLnNpemUoKTsgKytqKQotICAgICAgICAgICAg
aWYgKG9mZnNldEVkZ2VCdWZmZXJbal0ubWF4WSgpID49IG1pblkpCi0gICAgICAgICAgICAgICAg
b2Zmc2V0RWRnZXMuYXBwZW5kKG9mZnNldEVkZ2VCdWZmZXJbal0pOwotICAgIH0KLQotICAgIG9m
ZnNldEVkZ2VzLmFwcGVuZChPZmZzZXRQb2x5Z29uRWRnZShwb2x5Z29uLCBtaW5JbnRlcnZhbFRv
cCwgRmxvYXRTaXplKDAsIGR5KSkpOwotCi0gICAgRmxvYXRQb2ludCBvZmZzZXRFZGdlc0ludGVy
c2VjdGlvbjsKLSAgICBGbG9hdFJlY3QgZmlyc3RGaXRSZWN0OwotICAgIGJvb2wgZmlyc3RGaXRG
b3VuZCA9IGZhbHNlOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG9mZnNldEVkZ2Vz
LnNpemUoKSAtIDE7ICsraSkgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSBpICsgMTsgaiA8
IG9mZnNldEVkZ2VzLnNpemUoKTsgKytqKSB7Ci0gICAgICAgICAgICBpZiAob2Zmc2V0RWRnZXNb
aV0uaW50ZXJzZWN0aW9uKG9mZnNldEVkZ2VzW2pdLCBvZmZzZXRFZGdlc0ludGVyc2VjdGlvbikp
IHsKLSAgICAgICAgICAgICAgICBGbG9hdFBvaW50IHBvdGVudGlhbEZpcnN0Rml0TG9jYXRpb24o
b2Zmc2V0RWRnZXNJbnRlcnNlY3Rpb24ueCgpIC0gZHgsIG9mZnNldEVkZ2VzSW50ZXJzZWN0aW9u
LnkoKSAtIGR5KTsKLSAgICAgICAgICAgICAgICBGbG9hdFJlY3QgcG90ZW50aWFsRmlyc3RGaXRS
ZWN0KHBvdGVudGlhbEZpcnN0Rml0TG9jYXRpb24sIG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUpOwot
ICAgICAgICAgICAgICAgIGlmICgob2Zmc2V0RWRnZXNbaV0uYmFzaXMoKSA9PSBPZmZzZXRQb2x5
Z29uRWRnZTo6TGluZVRvcAotICAgICAgICAgICAgICAgICAgICB8fCBvZmZzZXRFZGdlc1tqXS5i
YXNpcygpID09IE9mZnNldFBvbHlnb25FZGdlOjpMaW5lVG9wCi0gICAgICAgICAgICAgICAgICAg
IHx8IHBvdGVudGlhbEZpcnN0Rml0TG9jYXRpb24ueSgpID49IG1pbkludGVydmFsVG9wKQotICAg
ICAgICAgICAgICAgICAgICAmJiAoIWZpcnN0Rml0Rm91bmQgfHwgYWJvdmVPclRvVGhlTGVmdChw
b3RlbnRpYWxGaXJzdEZpdFJlY3QsIGZpcnN0Rml0UmVjdCkpCi0gICAgICAgICAgICAgICAgICAg
ICYmIHBvbHlnb24uY29udGFpbnMob2Zmc2V0RWRnZXNJbnRlcnNlY3Rpb24pCi0gICAgICAgICAg
ICAgICAgICAgICYmIGZpcnN0Rml0UmVjdEluUG9seWdvbihwb2x5Z29uLCBwb3RlbnRpYWxGaXJz
dEZpdFJlY3QsIG9mZnNldEVkZ2VzW2ldLmVkZ2VJbmRleCgpLCBvZmZzZXRFZGdlc1tqXS5lZGdl
SW5kZXgoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgZmlyc3RGaXRGb3VuZCA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgICAgIGZpcnN0Rml0UmVjdCA9IHBvdGVudGlhbEZpcnN0Rml0UmVjdDsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBpZiAoZmlyc3RGaXRGb3VuZCkKLSAgICAgICAgcmVzdWx0ID0gY2VpbGVkTGF5b3V0VW5pdChm
aXJzdEZpdFJlY3QueSgpKTsKLSAgICByZXR1cm4gZmlyc3RGaXRGb3VuZDsKLX0KLQogc3RhdGlj
IHZvaWQgYWRkUG9seWdvbihQYXRoJiBwYXRoLCBjb25zdCBGbG9hdFBvbHlnb24mIHBvbHlnb24p
CiB7CiAgICAgaWYgKCFwb2x5Z29uLm51bWJlck9mVmVydGljZXMoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5oCmluZGV4IDA5ZjcxNDAuLjBlMzk5
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUG9seWdvblNo
YXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUu
aApAQCAtODUsMjYgKzg1LDIwIEBAIHB1YmxpYzoKICAgICBQb2x5Z29uU2hhcGUoUGFzc093blB0
cjxWZWN0b3I8RmxvYXRQb2ludD4+IHZlcnRpY2VzLCBXaW5kUnVsZSBmaWxsUnVsZSkKICAgICAg
ICAgOiBtX3BvbHlnb24odmVydGljZXMsIGZpbGxSdWxlKQogICAgICAgICAsIG1fbWFyZ2luQm91
bmRzKG51bGxwdHIpCi0gICAgICAgICwgbV9wYWRkaW5nQm91bmRzKG51bGxwdHIpCiAgICAgewog
ICAgIH0KIAogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzaGFwZU1hcmdpbkxvZ2ljYWxCb3VuZGlu
Z0JveCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0YXRpY19jYXN0PExheW91dFJlY3Q+KHNo
YXBlTWFyZ2luQm91bmRzKCkuYm91bmRpbmdCb3goKSk7IH0KLSAgICB2aXJ0dWFsIExheW91dFJl
Y3Qgc2hhcGVQYWRkaW5nTG9naWNhbEJvdW5kaW5nQm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8TGF5b3V0UmVjdD4oc2hhcGVQYWRkaW5nQm91bmRzKCkuYm91bmRpbmdC
b3goKSk7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fcG9seWdvbi5pc0VtcHR5KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZ2V0RXhjbHVkZWRJ
bnRlcnZhbHMoTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQs
IFNlZ21lbnRMaXN0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdldEluY2x1
ZGVkSW50ZXJ2YWxzKExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpY2FsSGVp
Z2h0LCBTZWdtZW50TGlzdCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBmaXJz
dEluY2x1ZGVkSW50ZXJ2YWxMb2dpY2FsVG9wKExheW91dFVuaXQgbWluTG9naWNhbEludGVydmFs
VG9wLCBjb25zdCBGbG9hdFNpemUmIG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUsIExheW91dFVuaXQm
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBidWlsZERpc3BsYXlQYXRocyhE
aXNwbGF5UGF0aHMmKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBjb25zdCBGbG9h
dFBvbHlnb24mIHNoYXBlTWFyZ2luQm91bmRzKCkgY29uc3Q7Ci0gICAgY29uc3QgRmxvYXRQb2x5
Z29uJiBzaGFwZVBhZGRpbmdCb3VuZHMoKSBjb25zdDsKIAogICAgIEZsb2F0UG9seWdvbiBtX3Bv
bHlnb247CiAgICAgbXV0YWJsZSBPd25QdHI8RmxvYXRQb2x5Z29uPiBtX21hcmdpbkJvdW5kczsK
LSAgICBtdXRhYmxlIE93blB0cjxGbG9hdFBvbHlnb24+IG1fcGFkZGluZ0JvdW5kczsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3No
YXBlcy9SYXN0ZXJTaGFwZS5jcHAKaW5kZXggMDVkNzg4My4uM2E3MmZkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHAKQEAgLTE0NSw1OCAr
MTQ1LDYgQEAgYm9vbCBSYXN0ZXJTaGFwZUludGVydmFsczo6Z2V0SW50ZXJ2YWxYMVZhbHVlcyhp
bnQgeTEsIGludCB5MiwgaW50IG1pbkludGVydmFsV2kKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBSYXN0ZXJTaGFwZUludGVydmFsczo6Zmlyc3RJbmNsdWRlZEludGVydmFsWShpbnQgbWlu
WSwgY29uc3QgSW50U2l6ZSYgbWluU2l6ZSwgTGF5b3V0VW5pdCYgcmVzdWx0KSBjb25zdAotewot
ICAgIG1pblkgPSBzdGQ6Om1heDxpbnQ+KGJvdW5kcygpLnkoKSwgbWluWSk7Ci0KLSAgICBBU1NF
UlQobWluWSA+PSAwICYmIG1pblkgPCBzaXplKCkpOwotCi0gICAgaWYgKG1pblNpemUuaXNFbXB0
eSgpIHx8IG1pblNpemUud2lkdGgoKSA+IGJvdW5kcygpLndpZHRoKCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGZvciAoaW50IGxpbmVZID0gbWluWTsgbGluZVkgPD0gYm91bmRzKCku
bWF4WSgpIC0gbWluU2l6ZS5oZWlnaHQoKTsgbGluZVkrKykgewotICAgICAgICBWZWN0b3I8aW50
PiBpbnRlcnZhbFgxVmFsdWVzOwotICAgICAgICBpZiAoIWdldEludGVydmFsWDFWYWx1ZXMobGlu
ZVksIGxpbmVZICsgbWluU2l6ZS5oZWlnaHQoKSwgbWluU2l6ZS53aWR0aCgpLCBpbnRlcnZhbFgx
VmFsdWVzKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIHN0ZDo6c29ydChpbnRl
cnZhbFgxVmFsdWVzLmJlZ2luKCksIGludGVydmFsWDFWYWx1ZXMuZW5kKCkpOwotCi0gICAgICAg
IEludFJlY3QgZmlyc3RGaXRSZWN0KEludFBvaW50KDAsIDApLCBtaW5TaXplKTsKLSAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGludGVydmFsWDFWYWx1ZXMuc2l6ZSgpOyBpKyspIHsK
LSAgICAgICAgICAgIGludCBsaW5lWCA9IGludGVydmFsWDFWYWx1ZXNbaV07Ci0gICAgICAgICAg
ICBpZiAoaSA+IDAgJiYgbGluZVggPT0gaW50ZXJ2YWxYMVZhbHVlc1tpIC0gMV0pCi0gICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBmaXJzdEZpdFJlY3Quc2V0TG9jYXRpb24o
SW50UG9pbnQobGluZVgsIGxpbmVZKSk7Ci0gICAgICAgICAgICBpZiAoY29udGFpbnMoZmlyc3RG
aXRSZWN0KSkgewotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGxpbmVZOwotICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAg
cmV0dXJuIGZhbHNlOwotfQotCi12b2lkIFJhc3RlclNoYXBlSW50ZXJ2YWxzOjpnZXRJbmNsdWRl
ZEludGVydmFscyhpbnQgeTEsIGludCB5MiwgSW50U2hhcGVJbnRlcnZhbHMmIHJlc3VsdCkgY29u
c3QKLXsKLSAgICBBU1NFUlQoeTIgPj0geTEpOwotCi0gICAgaWYgKHkxIDwgYm91bmRzKCkueSgp
IHx8IHkyID4gYm91bmRzKCkubWF4WSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKGlu
dCB5ID0geTE7IHkgPCB5MjsgIHkrKykgewotICAgICAgICBpZiAoaW50ZXJ2YWxzQXQoeSkuaXNF
bXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHJlc3VsdCA9IGludGVy
dmFsc0F0KHkxKTsKLSAgICBmb3IgKGludCB5ID0geTEgKyAxOyB5IDwgeTIgJiYgIXJlc3VsdC5p
c0VtcHR5KCk7ICB5KyspIHsKLSAgICAgICAgSW50U2hhcGVJbnRlcnZhbHMgaW50ZXJ2YWxzOwot
ICAgICAgICBJbnRTaGFwZUludGVydmFsOjppbnRlcnNlY3RTaGFwZUludGVydmFscyhyZXN1bHQs
IGludGVydmFsc0F0KHkpLCBpbnRlcnZhbHMpOwotICAgICAgICByZXN1bHQuc3dhcChpbnRlcnZh
bHMpOwotICAgIH0KLX0KLQogdm9pZCBSYXN0ZXJTaGFwZUludGVydmFsczo6Z2V0RXhjbHVkZWRJ
bnRlcnZhbHMoaW50IHkxLCBpbnQgeTIsIEludFNoYXBlSW50ZXJ2YWxzJiByZXN1bHQpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKHkyID49IHkxKTsKQEAgLTI3OSwxNiArMjI3LDYgQEAgY29uc3QgUmFz
dGVyU2hhcGVJbnRlcnZhbHMmIFJhc3RlclNoYXBlOjptYXJnaW5JbnRlcnZhbHMoKSBjb25zdAog
ICAgIHJldHVybiAqbV9tYXJnaW5JbnRlcnZhbHM7CiB9CiAKLWNvbnN0IFJhc3RlclNoYXBlSW50
ZXJ2YWxzJiBSYXN0ZXJTaGFwZTo6cGFkZGluZ0ludGVydmFscygpIGNvbnN0Ci17Ci0gICAgQVNT
RVJUKHNoYXBlUGFkZGluZygpID49IDApOwotICAgIGlmICghc2hhcGVQYWRkaW5nKCkpCi0gICAg
ICAgIHJldHVybiAqbV9pbnRlcnZhbHM7Ci0KLSAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9y
IG5vbi16ZXJvIHBhZGRpbmcsIHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTE2MzQ4LgotICAgIHJldHVybiAqbV9pbnRlcnZhbHM7Ci19Ci0KIHN0YXRpYyBpbmxp
bmUgdm9pZCBhcHBlbmRMaW5lU2VnbWVudHMoY29uc3QgSW50U2hhcGVJbnRlcnZhbHMmIGludGVy
dmFscywgU2VnbWVudExpc3QmIHJlc3VsdCkKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgaW50ZXJ2YWxzLnNpemUoKTsgaSsrKQpAQCAtMzA2LDI0ICsyNDQsNCBAQCB2b2lkIFJhc3Rl
clNoYXBlOjpnZXRFeGNsdWRlZEludGVydmFscyhMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExheW91
dFVuaXQgbG9naWNhbAogICAgIGFwcGVuZExpbmVTZWdtZW50cyhleGNsdWRlZEludGVydmFscywg
cmVzdWx0KTsKIH0KIAotdm9pZCBSYXN0ZXJTaGFwZTo6Z2V0SW5jbHVkZWRJbnRlcnZhbHMoTGF5
b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIFNlZ21lbnRMaXN0
JiByZXN1bHQpIGNvbnN0Ci17Ci0gICAgY29uc3QgUmFzdGVyU2hhcGVJbnRlcnZhbHMmIGludGVy
dmFscyA9IHBhZGRpbmdJbnRlcnZhbHMoKTsKLSAgICBpZiAoaW50ZXJ2YWxzLmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgSW50U2hhcGVJbnRlcnZhbHMgaW5jbHVkZWRJbnRlcnZh
bHM7Ci0gICAgaW50ZXJ2YWxzLmdldEluY2x1ZGVkSW50ZXJ2YWxzKGxvZ2ljYWxUb3AsIGxvZ2lj
YWxUb3AgKyBsb2dpY2FsSGVpZ2h0LCBpbmNsdWRlZEludGVydmFscyk7Ci0gICAgYXBwZW5kTGlu
ZVNlZ21lbnRzKGluY2x1ZGVkSW50ZXJ2YWxzLCByZXN1bHQpOwotfQotCi1ib29sIFJhc3RlclNo
YXBlOjpmaXJzdEluY2x1ZGVkSW50ZXJ2YWxMb2dpY2FsVG9wKExheW91dFVuaXQgbWluTG9naWNh
bEludGVydmFsVG9wLCBjb25zdCBGbG9hdFNpemUmIG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUsIExh
eW91dFVuaXQmIHJlc3VsdCkgY29uc3QKLXsKLSAgICBjb25zdCBSYXN0ZXJTaGFwZUludGVydmFs
cyYgaW50ZXJ2YWxzID0gcGFkZGluZ0ludGVydmFscygpOwotICAgIGlmIChpbnRlcnZhbHMuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gaW50ZXJ2YWxzLmZp
cnN0SW5jbHVkZWRJbnRlcnZhbFkobWluTG9naWNhbEludGVydmFsVG9wLmZsb29yKCksIGZsb29y
ZWRJbnRTaXplKG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUpLCByZXN1bHQpOwotfQotCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1Jhc3RlclNoYXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3Rl
clNoYXBlLmgKaW5kZXggYTFkZGM5Ni4uYzdjMjZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaApAQCAtNTAsOSArNTAsOCBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZHMuaXNFbXB0eSgpOyB9CiAg
ICAgdm9pZCBhcHBlbmRJbnRlcnZhbChpbnQgeSwgaW50IHgxLCBpbnQgeDIpOwogCi0gICAgdm9p
ZCBnZXRJbmNsdWRlZEludGVydmFscyhpbnQgeTEsIGludCB5MiwgSW50U2hhcGVJbnRlcnZhbHMm
IHJlc3VsdCkgY29uc3Q7CiAgICAgdm9pZCBnZXRFeGNsdWRlZEludGVydmFscyhpbnQgeTEsIGlu
dCB5MiwgSW50U2hhcGVJbnRlcnZhbHMmIHJlc3VsdCkgY29uc3Q7Ci0gICAgYm9vbCBmaXJzdElu
Y2x1ZGVkSW50ZXJ2YWxZKGludCBtaW5ZLCBjb25zdCBJbnRTaXplJiBtaW5TaXplLCBMYXlvdXRV
bml0JiByZXN1bHQpIGNvbnN0OworCiAgICAgUGFzc093blB0cjxSYXN0ZXJTaGFwZUludGVydmFs
cz4gY29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2YWxzKGludCBzaGFwZU1hcmdpbikgY29uc3Q7CiAK
ICAgICB2b2lkIGJ1aWxkQm91bmRzUGF0aChQYXRoJikgY29uc3Q7CkBAIC05OSwxMSArOTgsOCBA
QCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IHNoYXBlTWFyZ2luTG9n
aWNhbEJvdW5kaW5nQm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TGF5
b3V0UmVjdD4obWFyZ2luSW50ZXJ2YWxzKCkuYm91bmRzKCkpOyB9Ci0gICAgdmlydHVhbCBMYXlv
dXRSZWN0IHNoYXBlUGFkZGluZ0xvZ2ljYWxCb3VuZGluZ0JveCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHN0YXRpY19jYXN0PExheW91dFJlY3Q+KHBhZGRpbmdJbnRlcnZhbHMoKS5ib3VuZHMo
KSk7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1faW50ZXJ2YWxzLT5pc0VtcHR5KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZ2V0RXhjbHVkZWRJ
bnRlcnZhbHMoTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQs
IFNlZ21lbnRMaXN0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdldEluY2x1
ZGVkSW50ZXJ2YWxzKExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpY2FsSGVp
Z2h0LCBTZWdtZW50TGlzdCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBmaXJz
dEluY2x1ZGVkSW50ZXJ2YWxMb2dpY2FsVG9wKExheW91dFVuaXQgbWluTG9naWNhbEludGVydmFs
VG9wLCBjb25zdCBGbG9hdFNpemUmIG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUsIExheW91dFVuaXQm
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBidWlsZERpc3BsYXlQYXRocyhE
aXNwbGF5UGF0aHMmIHBhdGhzKSBjb25zdCBvdmVycmlkZQogICAgIHsKQEAgLTExNCw3ICsxMTAs
NiBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgY29uc3QgUmFzdGVyU2hhcGVJbnRlcnZhbHMm
IG1hcmdpbkludGVydmFscygpIGNvbnN0OwotICAgIGNvbnN0IFJhc3RlclNoYXBlSW50ZXJ2YWxz
JiBwYWRkaW5nSW50ZXJ2YWxzKCkgY29uc3Q7CiAKICAgICBPd25QdHI8UmFzdGVyU2hhcGVJbnRl
cnZhbHM+IG1faW50ZXJ2YWxzOwogICAgIG11dGFibGUgT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2
YWxzPiBtX21hcmdpbkludGVydmFsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvUmVjdGFuZ2xlU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5jcHAKaW5kZXggODM3NjhjYy4uNWExNWQxZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5jcHAK
QEAgLTQwLDI2ICs0MCw2IEBAIHN0YXRpYyBpbmxpbmUgZmxvYXQgZWxsaXBzZVhJbnRlcmNlcHQo
ZmxvYXQgeSwgZmxvYXQgcngsIGZsb2F0IHJ5KQogICAgIHJldHVybiByeCAqIHNxcnQoMSAtICh5
ICogeSkgLyAocnkgKiByeSkpOwogfQogCi1zdGF0aWMgaW5saW5lIGZsb2F0IGVsbGlwc2VZSW50
ZXJjZXB0KGZsb2F0IHgsIGZsb2F0IHJ4LCBmbG9hdCByeSkKLXsKLSAgICBBU1NFUlQocnggPiAw
KTsKLSAgICByZXR1cm4gcnkgKiBzcXJ0KDEgLSAoeCAqIHgpIC8gKHJ4ICogcngpKTsKLX0KLQot
RmxvYXRSZWN0IFJlY3RhbmdsZVNoYXBlOjpzaGFwZVBhZGRpbmdCb3VuZHMoKSBjb25zdAotewot
ICAgIEFTU0VSVChzaGFwZVBhZGRpbmcoKSA+PSAwKTsKLSAgICBpZiAoIXNoYXBlUGFkZGluZygp
IHx8IGlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG1fYm91bmRzOwotCi0gICAgZmxvYXQgYm91
bmRzWCA9IHgoKSArIHN0ZDo6bWluKHdpZHRoKCkgLyAyLCBzaGFwZVBhZGRpbmcoKSk7Ci0gICAg
ZmxvYXQgYm91bmRzWSA9IHkoKSArIHN0ZDo6bWluKGhlaWdodCgpIC8gMiwgc2hhcGVQYWRkaW5n
KCkpOwotICAgIGZsb2F0IGJvdW5kc1dpZHRoID0gc3RkOjptYXgoMC4wZiwgd2lkdGgoKSAtIHNo
YXBlUGFkZGluZygpICogMik7Ci0gICAgZmxvYXQgYm91bmRzSGVpZ2h0ID0gc3RkOjptYXgoMC4w
ZiwgaGVpZ2h0KCkgLSBzaGFwZVBhZGRpbmcoKSAqIDIpOwotCi0gICAgcmV0dXJuIEZsb2F0UmVj
dChib3VuZHNYLCBib3VuZHNZLCBib3VuZHNXaWR0aCwgYm91bmRzSGVpZ2h0KTsKLX0KLQogRmxv
YXRSZWN0IFJlY3RhbmdsZVNoYXBlOjpzaGFwZU1hcmdpbkJvdW5kcygpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKHNoYXBlTWFyZ2luKCkgPj0gMCk7CkBAIC0xMDgsMTE0ICs4OCw2IEBAIHZvaWQgUmVj
dGFuZ2xlU2hhcGU6OmdldEV4Y2x1ZGVkSW50ZXJ2YWxzKExheW91dFVuaXQgbG9naWNhbFRvcCwg
TGF5b3V0VW5pdCBsb2dpCiAgICAgcmVzdWx0LmFwcGVuZChMaW5lU2VnbWVudCh4MSwgeDIpKTsK
IH0KIAotdm9pZCBSZWN0YW5nbGVTaGFwZTo6Z2V0SW5jbHVkZWRJbnRlcnZhbHMoTGF5b3V0VW5p
dCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIFNlZ21lbnRMaXN0JiByZXN1
bHQpIGNvbnN0Ci17Ci0gICAgY29uc3QgRmxvYXRSZWN0JiBib3VuZHMgPSBzaGFwZVBhZGRpbmdC
b3VuZHMoKTsKLSAgICBpZiAoYm91bmRzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZmxvYXQgeTEgPSBsb2dpY2FsVG9wOwotICAgIGZsb2F0IHkyID0gbG9naWNhbFRvcCArIGxv
Z2ljYWxIZWlnaHQ7Ci0KLSAgICBpZiAoeTEgPCBib3VuZHMueSgpIHx8IHkyID4gYm91bmRzLm1h
eFkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZmxvYXQgeDEgPSBib3VuZHMueCgpOwotICAg
IGZsb2F0IHgyID0gYm91bmRzLm1heFgoKTsKLQotICAgIGZsb2F0IHBhZGRpbmdSYWRpdXNYID0g
c3RkOjptYXgoMC4wZiwgcngoKSAtIHNoYXBlUGFkZGluZygpKTsKLSAgICBmbG9hdCBwYWRkaW5n
UmFkaXVzWSA9IHN0ZDo6bWF4KDAuMGYsIHJ5KCkgLSBzaGFwZVBhZGRpbmcoKSk7Ci0KLSAgICBp
ZiAocGFkZGluZ1JhZGl1c1ggPiAwKSB7Ci0gICAgICAgIGJvb2wgeTFJbnRlcmNlcHRzQ29ybmVy
ID0geTEgPCBib3VuZHMueSgpICsgcGFkZGluZ1JhZGl1c1k7Ci0gICAgICAgIGJvb2wgeTJJbnRl
cmNlcHRzQ29ybmVyID0geTIgPiBib3VuZHMubWF4WSgpIC0gcGFkZGluZ1JhZGl1c1k7Ci0gICAg
ICAgIGZsb2F0IHhpID0gMDsKLQotICAgICAgICBpZiAoeTFJbnRlcmNlcHRzQ29ybmVyICYmIHky
SW50ZXJjZXB0c0Nvcm5lcikgewotICAgICAgICAgICAgaWYgICh5MSA8IGJvdW5kcy5oZWlnaHQo
KSArIDIgKiBib3VuZHMueSgpIC0geTIpIHsKLSAgICAgICAgICAgICAgICBmbG9hdCB5aSA9IHkx
IC0gYm91bmRzLnkoKSAtIHBhZGRpbmdSYWRpdXNZOwotICAgICAgICAgICAgICAgIHhpID0gZWxs
aXBzZVhJbnRlcmNlcHQoeWksIHBhZGRpbmdSYWRpdXNYLCBwYWRkaW5nUmFkaXVzWSk7Ci0gICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGZsb2F0IHlpID0gIHkyIC0gKGJvdW5k
cy5tYXhZKCkgLSBwYWRkaW5nUmFkaXVzWSk7Ci0gICAgICAgICAgICAgICAgeGkgPSBlbGxpcHNl
WEludGVyY2VwdCh5aSwgcGFkZGluZ1JhZGl1c1gsIHBhZGRpbmdSYWRpdXNZKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfSBlbHNlIGlmICh5MUludGVyY2VwdHNDb3JuZXIpIHsKLSAgICAgICAg
ICAgIGZsb2F0IHlpID0geTEgLSBib3VuZHMueSgpIC0gcGFkZGluZ1JhZGl1c1k7Ci0gICAgICAg
ICAgICB4aSA9IGVsbGlwc2VYSW50ZXJjZXB0KHlpLCBwYWRkaW5nUmFkaXVzWCwgcGFkZGluZ1Jh
ZGl1c1kpOwotICAgICAgICB9IGVsc2UgaWYgKHkySW50ZXJjZXB0c0Nvcm5lcikgewotICAgICAg
ICAgICAgZmxvYXQgeWkgPSAgeTIgLSAoYm91bmRzLm1heFkoKSAtIHBhZGRpbmdSYWRpdXNZKTsK
LSAgICAgICAgICAgIHhpID0gZWxsaXBzZVhJbnRlcmNlcHQoeWksIHBhZGRpbmdSYWRpdXNYLCBw
YWRkaW5nUmFkaXVzWSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoeTFJbnRlcmNlcHRzQ29y
bmVyIHx8IHkySW50ZXJjZXB0c0Nvcm5lcikgewotICAgICAgICAgICAgeDEgPSBib3VuZHMueCgp
ICsgcGFkZGluZ1JhZGl1c1ggLSB4aTsKLSAgICAgICAgICAgIHgyID0gYm91bmRzLm1heFgoKSAt
IHBhZGRpbmdSYWRpdXNYICsgeGk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXN1bHQuYXBw
ZW5kKExpbmVTZWdtZW50KHgxLCB4MikpOwotfQotCi1zdGF0aWMgRmxvYXRQb2ludCBjb3JuZXJJ
bnRlcmNlcHRGb3JXaWR0aChmbG9hdCB3aWR0aCwgZmxvYXQgd2lkdGhBdEludGVyY2VwdCwgZmxv
YXQgcngsIGZsb2F0IHJ5KQotewotICAgIGZsb2F0IHhpID0gKHdpZHRoIC0gd2lkdGhBdEludGVy
Y2VwdCkgLyAyOwotICAgIGZsb2F0IHlpID0gcnkgLSBlbGxpcHNlWUludGVyY2VwdChyeCAtIHhp
LCByeCwgcnkpOwotICAgIHJldHVybiBGbG9hdFBvaW50KHhpLCB5aSk7Ci19Ci0KLWJvb2wgUmVj
dGFuZ2xlU2hhcGU6OmZpcnN0SW5jbHVkZWRJbnRlcnZhbExvZ2ljYWxUb3AoTGF5b3V0VW5pdCBt
aW5Mb2dpY2FsSW50ZXJ2YWxUb3AsIGNvbnN0IEZsb2F0U2l6ZSYgbWluTG9naWNhbEludGVydmFs
U2l6ZSwgTGF5b3V0VW5pdCYgcmVzdWx0KSBjb25zdAotewotICAgIGZsb2F0IG1pbkludGVydmFs
VG9wID0gbWluTG9naWNhbEludGVydmFsVG9wOwotICAgIGZsb2F0IG1pbkludGVydmFsSGVpZ2h0
ID0gbWluTG9naWNhbEludGVydmFsU2l6ZS5oZWlnaHQoKTsKLSAgICBmbG9hdCBtaW5JbnRlcnZh
bFdpZHRoID0gbWluTG9naWNhbEludGVydmFsU2l6ZS53aWR0aCgpOwotCi0gICAgY29uc3QgRmxv
YXRSZWN0JiBib3VuZHMgPSBzaGFwZVBhZGRpbmdCb3VuZHMoKTsKLSAgICBpZiAoYm91bmRzLmlz
RW1wdHkoKSB8fCBtaW5JbnRlcnZhbFdpZHRoID4gYm91bmRzLndpZHRoKCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIGZsb2F0IG1pblkgPSBzdGQ6Om1heChib3VuZHMueSgpLCBtaW5J
bnRlcnZhbFRvcCk7Ci0gICAgZmxvYXQgbWF4WSA9IG1pblkgKyBtaW5JbnRlcnZhbEhlaWdodDsK
LQotICAgIGlmIChtYXhZID4gYm91bmRzLm1heFkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgZmxvYXQgcGFkZGluZ1JhZGl1c1ggPSBzdGQ6Om1heCgwLjBmLCByeCgpIC0gc2hhcGVQ
YWRkaW5nKCkpOwotICAgIGZsb2F0IHBhZGRpbmdSYWRpdXNZID0gc3RkOjptYXgoMC4wZiwgcnko
KSAtIHNoYXBlUGFkZGluZygpKTsKLQotICAgIGJvb2wgaW50ZXJ2YWxPdmVybGFwc01pbkNvcm5l
ciA9IG1pblkgPCBib3VuZHMueSgpICsgcGFkZGluZ1JhZGl1c1k7Ci0gICAgYm9vbCBpbnRlcnZh
bE92ZXJsYXBzTWF4Q29ybmVyID0gbWF4WSA+IGJvdW5kcy5tYXhZKCkgLSBwYWRkaW5nUmFkaXVz
WTsKLQotICAgIGlmICghaW50ZXJ2YWxPdmVybGFwc01pbkNvcm5lciAmJiAhaW50ZXJ2YWxPdmVy
bGFwc01heENvcm5lcikgewotICAgICAgICByZXN1bHQgPSBjZWlsZWRMYXlvdXRVbml0KG1pblkp
OwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBmbG9hdCBjZW50ZXJZID0gYm91
bmRzLnkoKSArIGJvdW5kcy5oZWlnaHQoKSAvIDI7Ci0gICAgYm9vbCBtaW5Db3JuZXJEZWZpbmVz
WCA9IGZhYnMoY2VudGVyWSAtIG1pblkpID4gZmFicyhjZW50ZXJZIC0gbWF4WSk7Ci0gICAgYm9v
bCBpbnRlcnZhbEZpdHNXaXRoaW5Db3JuZXJzID0gbWluSW50ZXJ2YWxXaWR0aCArIDIgKiBwYWRk
aW5nUmFkaXVzWCA8PSBib3VuZHMud2lkdGgoKTsKLSAgICBGbG9hdFBvaW50IGNvcm5lckludGVy
Y2VwdCA9IGNvcm5lckludGVyY2VwdEZvcldpZHRoKGJvdW5kcy53aWR0aCgpLCBtaW5JbnRlcnZh
bFdpZHRoLCBwYWRkaW5nUmFkaXVzWCwgcGFkZGluZ1JhZGl1c1kpOwotCi0gICAgaWYgKGludGVy
dmFsT3ZlcmxhcHNNaW5Db3JuZXIgJiYgKCFpbnRlcnZhbE92ZXJsYXBzTWF4Q29ybmVyIHx8IG1p
bkNvcm5lckRlZmluZXNYKSkgewotICAgICAgICBpZiAoaW50ZXJ2YWxGaXRzV2l0aGluQ29ybmVy
cyB8fCBib3VuZHMueSgpICsgY29ybmVySW50ZXJjZXB0LnkoKSA8IG1pblkpIHsKLSAgICAgICAg
ICAgIHJlc3VsdCA9IGNlaWxlZExheW91dFVuaXQobWluWSk7Ci0gICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAobWluSW50ZXJ2YWxIZWlnaHQgPCBib3VuZHMu
aGVpZ2h0KCkgLSAoMiAqIGNvcm5lckludGVyY2VwdC55KCkpKSB7Ci0gICAgICAgICAgICByZXN1
bHQgPSBjZWlsZWRMYXlvdXRVbml0KGJvdW5kcy55KCkgKyBjb3JuZXJJbnRlcmNlcHQueSgpKTsK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGlu
dGVydmFsT3ZlcmxhcHNNYXhDb3JuZXIgJiYgKCFpbnRlcnZhbE92ZXJsYXBzTWluQ29ybmVyIHx8
ICFtaW5Db3JuZXJEZWZpbmVzWCkpIHsKLSAgICAgICAgaWYgKGludGVydmFsRml0c1dpdGhpbkNv
cm5lcnMgfHwgbWluWSA8PSAgYm91bmRzLm1heFkoKSAtIGNvcm5lckludGVyY2VwdC55KCkgLSBt
aW5JbnRlcnZhbEhlaWdodCkgewotICAgICAgICAgICAgcmVzdWx0ID0gY2VpbGVkTGF5b3V0VW5p
dChtaW5ZKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgcmV0dXJuIGZhbHNlOwotfQotCiB2b2lkIFJlY3RhbmdsZVNoYXBlOjpidWlsZERpc3BsYXlQ
YXRocyhEaXNwbGF5UGF0aHMmIHBhdGhzKSBjb25zdAogewogICAgIHBhdGhzLnNoYXBlLmFkZFJv
dW5kZWRSZWN0KG1fYm91bmRzLCBGbG9hdFNpemUobV9yYWRpaS53aWR0aCgpLCBtX3JhZGlpLmhl
aWdodCgpKSwgUGF0aDo6UHJlZmVyQmV6aWVyUm91bmRlZFJlY3QpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5oCmluZGV4IDdmZGU1ZWUuLjMw
MWRmMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmVjdGFu
Z2xlU2hhcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1JlY3Rhbmds
ZVNoYXBlLmgKQEAgLTQ4LDE3ICs0OCwxMyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVh
bCBMYXlvdXRSZWN0IHNoYXBlTWFyZ2luTG9naWNhbEJvdW5kaW5nQm94KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TGF5b3V0UmVjdD4oc2hhcGVNYXJnaW5Cb3VuZHMoKSk7
IH0KLSAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2hhcGVQYWRkaW5nTG9naWNhbEJvdW5kaW5nQm94
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TGF5b3V0UmVjdD4oc2hhcGVQ
YWRkaW5nQm91bmRzKCkpOyB9CiAgICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2JvdW5kcy5pc0VtcHR5KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZ2V0
RXhjbHVkZWRJbnRlcnZhbHMoTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0IGxvZ2lj
YWxIZWlnaHQsIFNlZ21lbnRMaXN0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IGdldEluY2x1ZGVkSW50ZXJ2YWxzKExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBs
b2dpY2FsSGVpZ2h0LCBTZWdtZW50TGlzdCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
Ym9vbCBmaXJzdEluY2x1ZGVkSW50ZXJ2YWxMb2dpY2FsVG9wKExheW91dFVuaXQgbWluTG9naWNh
bEludGVydmFsVG9wLCBjb25zdCBGbG9hdFNpemUmIG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUsIExh
eW91dFVuaXQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBidWlsZERpc3Bs
YXlQYXRocyhEaXNwbGF5UGF0aHMmKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBG
bG9hdFJlY3Qgc2hhcGVNYXJnaW5Cb3VuZHMoKSBjb25zdDsKLSAgICBGbG9hdFJlY3Qgc2hhcGVQ
YWRkaW5nQm91bmRzKCkgY29uc3Q7CiAKICAgICBmbG9hdCByeCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmFkaWkud2lkdGgoKTsgfQogICAgIGZsb2F0IHJ5KCkgY29uc3QgeyByZXR1cm4gbV9yYWRpaS5o
ZWlnaHQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9T
aGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAppbmRl
eCBjYmYzNzY4Li4wZjZkYzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1No
YXBlLmNwcApAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgaW5saW5lIEZsb2F0U2l6ZSBwaHlzaWNh
bFNpemVUb0xvZ2ljYWwoY29uc3QgRmxvYXRTaXplJiBzaXplLCBXcml0aW5nTW9kZQogICAgIHJl
dHVybiBzaXplLnRyYW5zcG9zZWRTaXplKCk7CiB9CiAKLVBhc3NPd25QdHI8U2hhcGU+IFNoYXBl
OjpjcmVhdGVTaGFwZShjb25zdCBCYXNpY1NoYXBlKiBiYXNpY1NoYXBlLCBjb25zdCBMYXlvdXRT
aXplJiBsb2dpY2FsQm94U2l6ZSwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIExlbmd0aCBtYXJn
aW4sIExlbmd0aCBwYWRkaW5nKQorUGFzc093blB0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVNoYXBl
KGNvbnN0IEJhc2ljU2hhcGUqIGJhc2ljU2hhcGUsIGNvbnN0IExheW91dFNpemUmIGxvZ2ljYWxC
b3hTaXplLCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgTGVuZ3RoIG1hcmdpbikKIHsKICAgICBB
U1NFUlQoYmFzaWNTaGFwZSk7CiAKQEAgLTE3NCwxMiArMTc0LDExIEBAIFBhc3NPd25QdHI8U2hh
cGU+IFNoYXBlOjpjcmVhdGVTaGFwZShjb25zdCBCYXNpY1NoYXBlKiBiYXNpY1NoYXBlLCBjb25z
dCBMYXlvdXRTCiAKICAgICBzaGFwZS0+bV93cml0aW5nTW9kZSA9IHdyaXRpbmdNb2RlOwogICAg
IHNoYXBlLT5tX21hcmdpbiA9IGZsb2F0VmFsdWVGb3JMZW5ndGgobWFyZ2luLCAwKTsKLSAgICBz
aGFwZS0+bV9wYWRkaW5nID0gZmxvYXRWYWx1ZUZvckxlbmd0aChwYWRkaW5nLCAwKTsKIAogICAg
IHJldHVybiBzaGFwZS5yZWxlYXNlKCk7CiB9CiAKLVBhc3NPd25QdHI8U2hhcGU+IFNoYXBlOjpj
cmVhdGVSYXN0ZXJTaGFwZShJbWFnZSogaW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgY29uc3QgTGF5
b3V0UmVjdCYgaW1hZ2VSLCBjb25zdCBMYXlvdXRSZWN0JiBtYXJnaW5SLCBXcml0aW5nTW9kZSB3
cml0aW5nTW9kZSwgTGVuZ3RoIG1hcmdpbiwgTGVuZ3RoIHBhZGRpbmcpCitQYXNzT3duUHRyPFNo
YXBlPiBTaGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUoSW1hZ2UqIGltYWdlLCBmbG9hdCB0aHJlc2hv
bGQsIGNvbnN0IExheW91dFJlY3QmIGltYWdlUiwgY29uc3QgTGF5b3V0UmVjdCYgbWFyZ2luUiwg
V3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIExlbmd0aCBtYXJnaW4pCiB7CiAgICAgSW50UmVjdCBp
bWFnZVJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KGltYWdlUik7CiAgICAgSW50UmVjdCBtYXJn
aW5SZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChtYXJnaW5SKTsKQEAgLTIxOCwxMSArMjE3LDEw
IEBAIFBhc3NPd25QdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZShJbWFnZSogaW1h
Z2UsIGZsb2F0IHRocmVzaG9sZCwgY29uc3QKICAgICBPd25QdHI8UmFzdGVyU2hhcGU+IHJhc3Rl
clNoYXBlID0gYWRvcHRQdHIobmV3IFJhc3RlclNoYXBlKGludGVydmFscy5yZWxlYXNlKCksIG1h
cmdpblJlY3Quc2l6ZSgpKSk7CiAgICAgcmFzdGVyU2hhcGUtPm1fd3JpdGluZ01vZGUgPSB3cml0
aW5nTW9kZTsKICAgICByYXN0ZXJTaGFwZS0+bV9tYXJnaW4gPSBmbG9hdFZhbHVlRm9yTGVuZ3Ro
KG1hcmdpbiwgMCk7Ci0gICAgcmFzdGVyU2hhcGUtPm1fcGFkZGluZyA9IGZsb2F0VmFsdWVGb3JM
ZW5ndGgocGFkZGluZywgMCk7CiAgICAgcmV0dXJuIHJhc3RlclNoYXBlLnJlbGVhc2UoKTsKIH0K
IAotUGFzc093blB0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZUJveFNoYXBlKGNvbnN0IFJvdW5kZWRS
ZWN0JiByb3VuZGVkUmVjdCwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIExlbmd0aCBtYXJnaW4s
IExlbmd0aCBwYWRkaW5nKQorUGFzc093blB0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZUJveFNoYXBl
KGNvbnN0IFJvdW5kZWRSZWN0JiByb3VuZGVkUmVjdCwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUs
IExlbmd0aCBtYXJnaW4pCiB7CiAgICAgQVNTRVJUKHJvdW5kZWRSZWN0LnJlY3QoKS53aWR0aCgp
ID49IDAgJiYgcm91bmRlZFJlY3QucmVjdCgpLmhlaWdodCgpID49IDApOwogCkBAIC0yMzEsNyAr
MjI5LDYgQEAgUGFzc093blB0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZUJveFNoYXBlKGNvbnN0IFJv
dW5kZWRSZWN0JiByb3VuZGVkUmVjdCwgV3JpdGluZ00KICAgICBPd25QdHI8U2hhcGU+IHNoYXBl
ID0gYWRvcHRQdHIobmV3IEJveFNoYXBlKGJvdW5kcykpOwogICAgIHNoYXBlLT5tX3dyaXRpbmdN
b2RlID0gd3JpdGluZ01vZGU7CiAgICAgc2hhcGUtPm1fbWFyZ2luID0gZmxvYXRWYWx1ZUZvckxl
bmd0aChtYXJnaW4sIDApOwotICAgIHNoYXBlLT5tX3BhZGRpbmcgPSBmbG9hdFZhbHVlRm9yTGVu
Z3RoKHBhZGRpbmcsIDApOwogCiAgICAgcmV0dXJuIHNoYXBlLnJlbGVhc2UoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuaAppbmRleCAwOTQxY2EyLi5kMmM1MTAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5oCkBAIC02NywyNiArNjcsMjIg
QEAgcHVibGljOgogICAgICAgICBQYXRoIG1hcmdpblNoYXBlOwogICAgIH07CiAKLSAgICBzdGF0
aWMgUGFzc093blB0cjxTaGFwZT4gY3JlYXRlU2hhcGUoY29uc3QgQmFzaWNTaGFwZSosIGNvbnN0
IExheW91dFNpemUmIGxvZ2ljYWxCb3hTaXplLCBXcml0aW5nTW9kZSwgTGVuZ3RoIG1hcmdpbiwg
TGVuZ3RoIHBhZGRpbmcpOwotICAgIHN0YXRpYyBQYXNzT3duUHRyPFNoYXBlPiBjcmVhdGVSYXN0
ZXJTaGFwZShJbWFnZSosIGZsb2F0IHRocmVzaG9sZCwgY29uc3QgTGF5b3V0UmVjdCYgaW1hZ2VS
ZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBtYXJnaW5SZWN0LCBXcml0aW5nTW9kZSwgTGVuZ3RoIG1h
cmdpbiwgTGVuZ3RoIHBhZGRpbmcpOwotICAgIHN0YXRpYyBQYXNzT3duUHRyPFNoYXBlPiBjcmVh
dGVCb3hTaGFwZShjb25zdCBSb3VuZGVkUmVjdCYsIFdyaXRpbmdNb2RlLCBMZW5ndGggbWFyZ2lu
LCBMZW5ndGggcGFkZGluZyk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8U2hhcGU+IGNyZWF0ZVNo
YXBlKGNvbnN0IEJhc2ljU2hhcGUqLCBjb25zdCBMYXlvdXRTaXplJiBsb2dpY2FsQm94U2l6ZSwg
V3JpdGluZ01vZGUsIExlbmd0aCBtYXJnaW4pOworICAgIHN0YXRpYyBQYXNzT3duUHRyPFNoYXBl
PiBjcmVhdGVSYXN0ZXJTaGFwZShJbWFnZSosIGZsb2F0IHRocmVzaG9sZCwgY29uc3QgTGF5b3V0
UmVjdCYgaW1hZ2VSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBtYXJnaW5SZWN0LCBXcml0aW5nTW9k
ZSwgTGVuZ3RoIG1hcmdpbik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8U2hhcGU+IGNyZWF0ZUJv
eFNoYXBlKGNvbnN0IFJvdW5kZWRSZWN0JiwgV3JpdGluZ01vZGUsIExlbmd0aCBtYXJnaW4pOwog
CiAgICAgdmlydHVhbCB+U2hhcGUoKSB7IH0KIAogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzaGFw
ZU1hcmdpbkxvZ2ljYWxCb3VuZGluZ0JveCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIExheW91
dFJlY3Qgc2hhcGVQYWRkaW5nTG9naWNhbEJvdW5kaW5nQm94KCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbmNs
dWRlZEludGVydmFscyhMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExheW91dFVuaXQgbG9naWNhbEhl
aWdodCwgU2VnbWVudExpc3QmKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldEV4Y2x1
ZGVkSW50ZXJ2YWxzKExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpY2FsSGVp
Z2h0LCBTZWdtZW50TGlzdCYpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgZmlyc3RJbmNs
dWRlZEludGVydmFsTG9naWNhbFRvcChMYXlvdXRVbml0IG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCwg
Y29uc3QgRmxvYXRTaXplJiBtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLCBMYXlvdXRVbml0JiByZXN1
bHQpIGNvbnN0ID0gMDsKKwogICAgIGJvb2wgbGluZU92ZXJsYXBzU2hhcGVNYXJnaW5Cb3VuZHMo
TGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVIZWlnaHQpIGNvbnN0IHsgcmV0dXJu
IGxpbmVPdmVybGFwc0JvdW5kaW5nQm94KGxpbmVUb3AsIGxpbmVIZWlnaHQsIHNoYXBlTWFyZ2lu
TG9naWNhbEJvdW5kaW5nQm94KCkpOyB9Ci0gICAgYm9vbCBsaW5lT3ZlcmxhcHNTaGFwZVBhZGRp
bmdCb3VuZHMoTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVIZWlnaHQpIGNvbnN0
IHsgcmV0dXJuIGxpbmVPdmVybGFwc0JvdW5kaW5nQm94KGxpbmVUb3AsIGxpbmVIZWlnaHQsIHNo
YXBlUGFkZGluZ0xvZ2ljYWxCb3VuZGluZ0JveCgpKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGJ1
aWxkRGlzcGxheVBhdGhzKERpc3BsYXlQYXRocyYpIGNvbnN0ID0gMDsKIAogcHJvdGVjdGVkOgog
ICAgIGZsb2F0IHNoYXBlTWFyZ2luKCkgY29uc3QgeyByZXR1cm4gbV9tYXJnaW47IH0KLSAgICBm
bG9hdCBzaGFwZVBhZGRpbmcoKSBjb25zdCB7IHJldHVybiBtX3BhZGRpbmc7IH0KIAogcHJpdmF0
ZToKICAgICBib29sIGxpbmVPdmVybGFwc0JvdW5kaW5nQm94KExheW91dFVuaXQgbGluZVRvcCwg
TGF5b3V0VW5pdCBsaW5lSGVpZ2h0LCBjb25zdCBMYXlvdXRSZWN0JiByZWN0KSBjb25zdApAQCAt
OTgsNyArOTQsNiBAQCBwcml2YXRlOgogCiAgICAgV3JpdGluZ01vZGUgbV93cml0aW5nTW9kZTsK
ICAgICBmbG9hdCBtX21hcmdpbjsKLSAgICBmbG9hdCBtX3BhZGRpbmc7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1NoYXBlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBl
SW5mby5jcHAKaW5kZXggMzkwMTA3MC4uNGM0ZTE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmNwcApAQCAtMTIzLDcgKzEyMyw2IEBAIGNvbnN0IFNo
YXBlJiBTaGFwZUluZm88UmVuZGVyVHlwZT46OmNvbXB1dGVkU2hhcGUoKSBjb25zdAogCiAgICAg
V3JpdGluZ01vZGUgd3JpdGluZ01vZGUgPSB0aGlzLT5zdHlsZUZvcldyaXRpbmdNb2RlKCkud3Jp
dGluZ01vZGUoKTsKICAgICBMZW5ndGggbWFyZ2luID0gbV9yZW5kZXJlci5zdHlsZSgpLnNoYXBl
TWFyZ2luKCk7Ci0gICAgTGVuZ3RoIHBhZGRpbmcgPSBtX3JlbmRlcmVyLnN0eWxlKCkuc2hhcGVQ
YWRkaW5nKCk7CiAgICAgZmxvYXQgc2hhcGVJbWFnZVRocmVzaG9sZCA9IG1fcmVuZGVyZXIuc3R5
bGUoKS5zaGFwZUltYWdlVGhyZXNob2xkKCk7CiAgICAgY29uc3QgU2hhcGVWYWx1ZSogc2hhcGVW
YWx1ZSA9IHRoaXMtPnNoYXBlVmFsdWUoKTsKICAgICBBU1NFUlQoc2hhcGVWYWx1ZSk7CkBAIC0x
MzEsMjEgKzEzMCwyMSBAQCBjb25zdCBTaGFwZSYgU2hhcGVJbmZvPFJlbmRlclR5cGU+Ojpjb21w
dXRlZFNoYXBlKCkgY29uc3QKICAgICBzd2l0Y2ggKHNoYXBlVmFsdWUtPnR5cGUoKSkgewogICAg
IGNhc2UgU2hhcGVWYWx1ZTo6U2hhcGU6CiAgICAgICAgIEFTU0VSVChzaGFwZVZhbHVlLT5zaGFw
ZSgpKTsKLSAgICAgICAgbV9zaGFwZSA9IFNoYXBlOjpjcmVhdGVTaGFwZShzaGFwZVZhbHVlLT5z
aGFwZSgpLCBtX3JlZmVyZW5jZUJveExvZ2ljYWxTaXplLCB3cml0aW5nTW9kZSwgbWFyZ2luLCBw
YWRkaW5nKTsKKyAgICAgICAgbV9zaGFwZSA9IFNoYXBlOjpjcmVhdGVTaGFwZShzaGFwZVZhbHVl
LT5zaGFwZSgpLCBtX3JlZmVyZW5jZUJveExvZ2ljYWxTaXplLCB3cml0aW5nTW9kZSwgbWFyZ2lu
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTaGFwZVZhbHVlOjpJbWFnZTogewogICAgICAg
ICBJbWFnZSogaW1hZ2U7CiAgICAgICAgIExheW91dFJlY3QgaW1hZ2VSZWN0OwogICAgICAgICBn
ZXRTaGFwZUltYWdlQW5kUmVjdChzaGFwZVZhbHVlLCAmbV9yZW5kZXJlciwgbV9yZWZlcmVuY2VC
b3hMb2dpY2FsU2l6ZSwgaW1hZ2UsIGltYWdlUmVjdCk7CiAgICAgICAgIGNvbnN0IExheW91dFJl
Y3QmIG1hcmdpblJlY3QgPSBnZXRTaGFwZUltYWdlTWFyZ2luUmVjdChtX3JlbmRlcmVyLCBtX3Jl
ZmVyZW5jZUJveExvZ2ljYWxTaXplKTsKLSAgICAgICAgbV9zaGFwZSA9IFNoYXBlOjpjcmVhdGVS
YXN0ZXJTaGFwZShpbWFnZSwgc2hhcGVJbWFnZVRocmVzaG9sZCwgaW1hZ2VSZWN0LCBtYXJnaW5S
ZWN0LCB3cml0aW5nTW9kZSwgbWFyZ2luLCBwYWRkaW5nKTsKKyAgICAgICAgbV9zaGFwZSA9IFNo
YXBlOjpjcmVhdGVSYXN0ZXJTaGFwZShpbWFnZSwgc2hhcGVJbWFnZVRocmVzaG9sZCwgaW1hZ2VS
ZWN0LCBtYXJnaW5SZWN0LCB3cml0aW5nTW9kZSwgbWFyZ2luKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIGNhc2UgU2hhcGVWYWx1ZTo6Qm94OiB7CiAgICAgICAgIC8vIEZJWE1FIFRoaXMg
ZG9lcyBub3QgcHJvcGVybHkgY29tcHV0ZSB0aGUgcm91bmRlZCBjb3JuZXJzIGFzIHNwZWNpZmll
ZCBpbiBhbGwgY29uZGl0aW9ucy4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyNzk4MgogICAgICAgICBjb25zdCBSb3VuZGVkUmVjdCYgc2hhcGVS
ZWN0ID0gbV9yZW5kZXJlci5zdHlsZSgpLmdldFJvdW5kZWRCb3JkZXJGb3IoTGF5b3V0UmVjdChM
YXlvdXRQb2ludCgpLCBtX3JlZmVyZW5jZUJveExvZ2ljYWxTaXplKSwgJihtX3JlbmRlcmVyLnZp
ZXcoKSkpOwotICAgICAgICBtX3NoYXBlID0gU2hhcGU6OmNyZWF0ZUJveFNoYXBlKHNoYXBlUmVj
dCwgd3JpdGluZ01vZGUsIG1hcmdpbiwgcGFkZGluZyk7CisgICAgICAgIG1fc2hhcGUgPSBTaGFw
ZTo6Y3JlYXRlQm94U2hhcGUoc2hhcGVSZWN0LCB3cml0aW5nTW9kZSwgbWFyZ2luKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgU2hhcGVWYWx1ZTo6T3V0c2lkZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IGIwOWQ1Mzgu
LjE4MTZkMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcApAQCAtNDE0LDggKzQxNCw3IEBAIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVp
cmVzTGF5b3V0KGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlciwgdW5zaWduZWQmIGNoYW5nCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQotICAgICAgICBp
ZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fc2hhcGVNYXJnaW4gIT0gb3RoZXItPnJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX3NoYXBlTWFyZ2luCi0gICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9zaGFwZVBhZGRpbmcgIT0gb3RoZXItPnJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X3NoYXBlUGFkZGluZykKKyAgICAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3NoYXBl
TWFyZ2luICE9IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9zaGFwZU1hcmdpbikKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggZTkyMWFjYy4uYWFhNWM0MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTE1MDksMTAgKzE1
MDksNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgU2hhcGVWYWx1ZSogaW5pdGlhbFNoYXBlT3V0
c2lkZSgpIHsgcmV0dXJuIDA7IH0KIAotICAgIGNvbnN0IExlbmd0aCYgc2hhcGVQYWRkaW5nKCkg
Y29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fc2hhcGVQYWRkaW5nOyB9Ci0g
ICAgdm9pZCBzZXRTaGFwZVBhZGRpbmcoTGVuZ3RoIHNoYXBlUGFkZGluZykgeyBTRVRfVkFSKHJh
cmVOb25Jbmhlcml0ZWREYXRhLCBtX3NoYXBlUGFkZGluZywgc3RkOjptb3ZlKHNoYXBlUGFkZGlu
ZykpOyB9Ci0gICAgc3RhdGljIExlbmd0aCBpbml0aWFsU2hhcGVQYWRkaW5nKCkgeyByZXR1cm4g
TGVuZ3RoKDAsIEZpeGVkKTsgfQotCiAgICAgY29uc3QgTGVuZ3RoJiBzaGFwZU1hcmdpbigpIGNv
bnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3NoYXBlTWFyZ2luOyB9CiAgICAg
dm9pZCBzZXRTaGFwZU1hcmdpbihMZW5ndGggc2hhcGVNYXJnaW4pIHsgU0VUX1ZBUihyYXJlTm9u
SW5oZXJpdGVkRGF0YSwgbV9zaGFwZU1hcmdpbiwgc3RkOjptb3ZlKHNoYXBlTWFyZ2luKSk7IH0K
ICAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxTaGFwZU1hcmdpbigpIHsgcmV0dXJuIExlbmd0aCgw
LCBGaXhlZCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcAppbmRleCBkMjdjNjdmLi42N2MyZDU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9u
SW5oZXJpdGVkRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCkBAIC01OCw3ICs1OCw2IEBAIFN0eWxlUmFyZU5v
bkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoKQogI2lmIEVOQUJMRShD
U1NfU0hBUEVTKQogICAgICwgbV9zaGFwZU91dHNpZGUoUmVuZGVyU3R5bGU6OmluaXRpYWxTaGFw
ZU91dHNpZGUoKSkKICAgICAsIG1fc2hhcGVNYXJnaW4oUmVuZGVyU3R5bGU6OmluaXRpYWxTaGFw
ZU1hcmdpbigpKQotICAgICwgbV9zaGFwZVBhZGRpbmcoUmVuZGVyU3R5bGU6OmluaXRpYWxTaGFw
ZVBhZGRpbmcoKSkKICAgICAsIG1fc2hhcGVJbWFnZVRocmVzaG9sZChSZW5kZXJTdHlsZTo6aW5p
dGlhbFNoYXBlSW1hZ2VUaHJlc2hvbGQoKSkKICNlbmRpZgogICAgICwgbV9jbGlwUGF0aChSZW5k
ZXJTdHlsZTo6aW5pdGlhbENsaXBQYXRoKCkpCkBAIC0xMzEsNyArMTMwLDYgQEAgaW5saW5lIFN0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoY29uc3Qg
U3R5bGVSYXJlTm9uSW4KICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKICAgICAsIG1fc2hhcGVPdXRz
aWRlKG8ubV9zaGFwZU91dHNpZGUpCiAgICAgLCBtX3NoYXBlTWFyZ2luKG8ubV9zaGFwZU1hcmdp
bikKLSAgICAsIG1fc2hhcGVQYWRkaW5nKG8ubV9zaGFwZVBhZGRpbmcpCiAgICAgLCBtX3NoYXBl
SW1hZ2VUaHJlc2hvbGQoby5tX3NoYXBlSW1hZ2VUaHJlc2hvbGQpCiAjZW5kaWYKICAgICAsIG1f
Y2xpcFBhdGgoby5tX2NsaXBQYXRoKQpAQCAtMjIyLDcgKzIyMCw2IEBAIGJvb2wgU3R5bGVSYXJl
Tm9uSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PShjb25zdCBTdHlsZVJhcmVOb25Jbmhlcml0ZWRE
YXRhJiBvKSBjCiAjaWYgRU5BQkxFKENTU19TSEFQRVMpCiAgICAgICAgICYmIG1fc2hhcGVPdXRz
aWRlID09IG8ubV9zaGFwZU91dHNpZGUKICAgICAgICAgJiYgbV9zaGFwZU1hcmdpbiA9PSBvLm1f
c2hhcGVNYXJnaW4KLSAgICAgICAgJiYgbV9zaGFwZVBhZGRpbmcgPT0gby5tX3NoYXBlUGFkZGlu
ZwogICAgICAgICAmJiBtX3NoYXBlSW1hZ2VUaHJlc2hvbGQgPT0gby5tX3NoYXBlSW1hZ2VUaHJl
c2hvbGQKICNlbmRpZgogICAgICAgICAmJiBtX2NsaXBQYXRoID09IG8ubV9jbGlwUGF0aApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVy
aXRlZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25J
bmhlcml0ZWREYXRhLmgKaW5kZXggMmViZWFiNS4uOGY3Y2ExZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0
YS5oCkBAIC0xNDMsNyArMTQzLDYgQEAgcHVibGljOgogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQog
ICAgIFJlZlB0cjxTaGFwZVZhbHVlPiBtX3NoYXBlT3V0c2lkZTsKICAgICBMZW5ndGggbV9zaGFw
ZU1hcmdpbjsKLSAgICBMZW5ndGggbV9zaGFwZVBhZGRpbmc7CiAgICAgZmxvYXQgbV9zaGFwZUlt
YWdlVGhyZXNob2xkOwogI2VuZGlmCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>